PHP 手册

by:
Mehdi Achour
Friedhelm Betz
Antony Dovgal
Nuno Lopes
Hannes Magnusson
Georg Richter
Damien Seguy
Jakub Vrana
其他贡献者
2017-02-22
Edited By: Peter Cowburn
中文翻译人员：
肖盛文
洪建家
穆少磊
宋琪
黄啸宇
王远之
肖理达
乔楚
戴劼
褚兆玮
© 1997-2017 PHP 文档组
  • 版权信息
  • PHP 手册
    • 序言
  • 入门指引
    • 简介
    • 简明教程
  • 安装与配置
    • 安装前需要考虑的事项
    • Unix 系统下的安装
    • Mac OS X 系统下的安装
    • Windows 系统下的安装
    • 云计算平台上的安装
    • FastCGI 进程管理器（FPM）
    • PECL 扩展库安装
    • 还有问题？
    • 运行时配置
  • 语言参考
    • 基本语法
    • 类型
    • 变量
    • 常量
    • 表达式
    • 运算符
    • 流程控制
    • 函数
    • 类与对象
    • 命名空间
    • Errors
    • 异常处理
    • 生成器
    • 引用的解释
    • 预定义变量
    • 预定义异常
    • 预定义接口
    • 上下文（Context）选项和参数
    • 支持的协议和封装协议
  • 安全
    • 简介
    • 总则
    • 以 CGI 模式安装时
    • 以 Apache 模块安装时
    • 会话（Session）安全
    • 文件系统安全
    • 数据库安全
    • 错误报告
    • 使用 Register Globals
    • 用户提交的数据
    • 魔术引号
    • 隐藏 PHP
    • 保持更新
  • 特点
    • 用 PHP 进行 HTTP 认证
    • Cookie
    • 会话
    • 处理 XForms
    • 文件上传处理
    • 使用远程文件
    • 连接处理
    • 数据库持久连接
    • 安全模式
    • PHP 的命令行模式
    • 垃圾回收机制
    • DTrace 动态跟踪
  • 函数参考
    • 影响 PHP 行为的扩展
    • 音频格式操作
    • 身份认证服务
    • 针对命令行的扩展
    • 压缩与归档扩展
    • 信用卡处理
    • 加密扩展
    • 数据库扩展
    • 日期与时间相关扩展
    • 文件系统相关扩展
    • 国际化与字符编码支持
    • 图像生成和处理
    • 邮件相关扩展
    • 数学扩展
    • 非文本内容的 MIME 输出
    • 进程控制扩展
    • 其它基本扩展
    • 其它服务
    • 搜索引擎扩展
    • 针对服务器的扩展
    • Session 扩展
    • 文本处理
    • 变量与类型相关扩展
    • Web 服务
    • Windows 专用扩展
    • XML 操作
    • 图形用户界面(GUI) 扩展
  • PHP 核心：骇客指南
    • 序言
    • 内存管理
    • 变量的使用
    • 函数的编写
    • 类和对象的使用
    • 资源的使用
    • INI 设置的使用
    • 流的使用
    • "counter" 扩展 - 一个连续的实例
    • PHP 5 构建系统
    • 扩展的结构
    • PDO 驱动
    • 扩展相关 FAQ
    • Zend Engine 2 API 参考
    • Zend Engine 2 操作码列表
    • Zend Engine 1
  • FAQ — FAQ：常见问题
    • 一般信息
    • 邮件列表
    • 获取 PHP
    • 数据库问题
    • 安装 — 安装常见问题
    • 编译问题
    • 使用 PHP
    • 密码散列 — 密码散列安全
    • PHP 和 HTML
    • PHP 和 COM
    • 杂类问题
  • 附录
    • PHP 及其相关工程的历史
    • 从PHP 7.0.x 移植到 PHP 7.1.x
    • 从PHP 5.6.x 移植到 PHP 7.0.x
    • 从PHP 5.5.x 移植到 PHP 5.6.x
    • 从 PHP 5.4.x 迁移到 PHP 5.5.x
    • 从 PHP 5.3.X 迁移到 PHP 5.4.X
    • 从 PHP 5.2.x 移植到 PHP 5.3.x
    • Migrating from PHP 5.1.x to PHP 5.2.x
    • Migrating from PHP 5.0.x to PHP 5.1.x
    • 从 PHP 4 移植到 PHP 5
    • PHP 的调试
    • 配置选项
    • php.ini 配置
    • 扩展库列表／归类
    • 函数别名列表
    • 保留字列表
    • 资源类型列表
    • 可用过滤器列表
    • 所支持的套接字传输器（Socket Transports）列表
    • PHP 类型比较表
    • 解析器代号列表
    • 用户空间命名指南
    • 关于本手册
    • Creative Commons Attribution 3.0
    • 索引
    • 更新日志
  • CHM 版本
    • 关于此版本
    • Using PHP Manual CHM Edition
    • The Full Text Search
    • Integrating the PHP Manual
版权信息
PHP Manual


版权信息

Copyright © 1997 - 2017，PHP 文档组版权所有。发行本资料必须服从 Creative Commons Attribution 3.0 或更新版许可中阐明的条款及条件。Creative Commons Attribution 3.0 license 的副本已随本手册发行。其最新版本位于 » http://creativecommons.org/licenses/by/3.0/。

如有兴趣再发行或再版此文档的全部或部分内容，不论修改过与否，或有任何问题，请联系版权所有者 » doc-license@lists.php.net。注意，本地址映射到一个公开归档的邮件列表。

PHP 手册
PHP 手册
PHP 手册


PHP 手册
PHP Manual

PHP 手册

  • 序言
版权信息
序言
PHP 手册
PHP Manual


序言

PHP，即"PHP: Hypertext Preprocessor"，是一种被广泛应用的开源通用脚本语言，尤其适用于 Web 开发并可嵌入 HTML 中去。它的语法利用了 C、Java 和 Perl，易于学习。该语言的主要目标是允许 web 开发人员快速编写动态生成的 web 页面，但 PHP 的用途远不只于此。

本手册内容主要由函数参考构成，但也包含了语言参考，PHP 一些主要产品特点的说明以及其它补充信息。

可在 » http://www.php.net/download-docs.php 下载此手册的各种格式。更多关于如何开发本手册的信息可参阅附录："关于本手册"。如果你对 PHP 的历史感兴趣，可访问相关附录。

作者与贡献者

在手册的首页上仅突出了目前最活跃的人员，但还有更多的贡献者正在帮助我们工作或在过去给项目提供过巨大的帮助。有许多不知名的人帮助在手册中写下用户评论，并不断地包含在参考中，也很感谢他们的努力。下面所提供的列表均以字母顺序排序。

作者与编辑

下列人员曾经或者目前正在为本手册添砖加瓦： Bill Abt, Jouni Ahto, Alexander Aulbach, Christoph Michael Becker, Daniel Beckham, Stig Bakken, Nilgün Belma Bugüner, Jesus M. Castagnetto, Ron Chmara, Sean Coates, John Coggeshall, Simone Cortesi, Peter Cowburn, Daniel Egeberg, Markus Fischer, Wez Furlong, Sara Golemon, Rui Hirokawa, Brad House, Pierre-Alain Joye, Etienne Kneuss, Moriyoshi Koizumi, Rasmus Lerdorf, Andrew Lindeman, Stanislav Malyshev, Justin Martin, Rafael Martinez, Rick McGuire, Moacir de Oliveira Miranda Júnior, Kalle Sommer Nielsen, Yasuo Ohgaki, Philip Olson, Richard Quadling, Derick Rethans, Rob Richards, Sander Roobol, Egon Schmid, Thomas Schoefbeck, Sascha Schumann, Dan Scott, Masahiro Takagi, Yannick Torres, Michael Wallner, Lars Torben Wilson, Jim Winstead, Jeroen van Wolffelaar 和 Andrei Zmievski.

下列人员对本手册做了相当数量的编辑工作： Stig Bakken, Gabor Hojtsy, Hartmut Holzgraefe, Philip Olson 和 Egon Schmid.

用户评论维护者

目前最活跃的维护者是： Daniel Brown, Nuno Lopes, Felipe Pena, Thiago Pojda 和 Maciek Sokolewicz.

下列人员为维护用户评论作出了巨大的努力: Mehdi Achour, Daniel Beckham, Friedhelm Betz, Victor Boivie, Jesus M. Castagnetto, Nicolas Chaillan, Ron Chmara, Sean Coates, James Cox, Vincent Gevers, Sara Golemon, Zak Greant, Szabolcs Heilig, Oliver Hinckel, Hartmut Holzgraefe, Etienne Kneuss, Rasmus Lerdorf, Matthew Li, Andrew Lindeman, Aidan Lister, Hannes Magnusson, Maxim Maletsky, Bobby Matthis, James Moore, Philip Olson, Sebastian Picklum, Derick Rethans, Sander Roobol, Damien Seguy, Jason Sheets, Tom Sommer, Jani Taskinen, Yasuo Ohgaki, Jakub Vrana, Lars Torben Wilson, Jim Winstead, Jared Wyles 和 Jeroen van Wolffelaar.

中文翻译外部支持团队

PHP手册中文翻译工作是一项长期而又艰巨的工作，为了让这个工作得以持久进行下去，我们组织了 » PHP 手册中文翻译补完计划。下列人员目前正在参与该计划：codingall.com（赵磊）、cuimuxi（崔玉松）、cztviztor、gaojian1226、HaoHappy（陈浩）、HonestQiao（乔楚）、kendotom、lgg860911、loosen.copen、miusun01（李鼎峰）、ping3608、r.anerg（罗翀）、suppersoft（paris.wang）、fising（王祥中）、wind.golden（陈金）。

PHP 手册
入门指引
PHP 手册


入门指引

  • 简介
    • PHP 是什么？
    • PHP 能做什么？
  • 简明教程
    • 需要些什么？
    • 第一个 PHP 页面
    • 实用的脚本
    • 处理表单
    • 在新版本的 PHP 中使用旧的 PHP 代码
    • 下一步做什么？
序言
简介
PHP 手册


简介

Table of Contents

  • PHP 是什么？
  • PHP 能做什么？
入门指引
PHP 是什么？
入门指引


PHP 是什么？

PHP（"PHP: Hypertext Preprocessor"，超文本预处理器的字母缩写）是一种被广泛应用的开放源代码的多用途脚本语言，它可嵌入到 HTML中，尤其适合 web 开发。

以上是一个简单的回答，不过这是什么意思呢？请看如下例子：

Example #1 一个介绍性的范例

<html>
    <head>
        <title>Example</title>
    </head>
    <body>

        <?php
        echo "Hi, I'm a PHP script!";
        ?>

    </body>
</html>

请注意这个范例和其它用 C 或 Perl 语言写的脚本之间的区别——与用大量的命令来编写程序以输出 HTML 不同的是，PHP 页面就是 HTML，只不过在其中嵌入了一些代码来做一些事情（在本例中输出了 "Hi, I'm a PHP script!"）。PHP 代码被包含在特殊的起始符和结束符 <?php 和 ?> 中，使得可以进出"PHP 模式"。

和客户端的 JavaScript 不同的是，PHP 代码是运行在服务端的。如果在服务器上建立了如上例类似的代码，则在运行该脚本后，客户端就能接收到其结果，但他们无法得知其背后的代码是如何运作的。甚至可以将 web 服务器设置成让 PHP 来处理所有的 HTML 文件，这么一来，用户就无法得知服务端到底做了什么。

使用 PHP 的一大好处是它对于初学者来说极其简单，同时也给专业的程序员提供了各种高级的特性。当看到 PHP 长长的特性列表时，请不要害怕。可以很快的入门，只需几个小时就可以自己写一些简单的脚本。

尽管 PHP 的开发是以服务端脚本为目的，但事实上其功能远不局限与此。请继续读后面的章节，在"PHP 能做什么"一节中将获得更多的信息。如果对 web 编程感兴趣，也可以阅读简明教程。

简介
PHP 能做什么？
简介


PHP 能做什么？

PHP 能做任何事。PHP 主要是用于服务端的脚本程序，因此可以用 PHP 来完成任何其它的 CGI 程序能够完成的工作，例如收集表单数据，生成动态网页，或者发送／接收 Cookies。但 PHP 的功能远不局限于此。

PHP 脚本主要用于以下三个领域：

  • 服务端脚本。这是 PHP 最传统，也是最主要的目标领域。开展这项工作需要具备以下三点：PHP 解析器（CGI 或者服务器模块）、web 服务器和 web 浏览器。需要在运行 web 服务器时，安装并配置 PHP，然后，可以用 web 浏览器来访问 PHP 程序的输出，即浏览服务端的 PHP 页面。如果只是实验 PHP 编程，所有的这些都可以运行在自己家里的电脑中。请查阅安装一章以获取更多信息。
  • 命令行脚本。可以编写一段 PHP 脚本，并且不需要任何服务器或者浏览器来运行它。通过这种方式，仅仅只需要 PHP 解析器来执行。这种用法对于依赖 cron（Unix 或者 Linux 环境）或者 Task Scheduler（Windows 环境）的日常运行的脚本来说是理想的选择。这些脚本也可以用来处理简单的文本。请参阅 PHP 的命令行模式以获取更多信息。
  • 编写桌面应用程序。对于有着图形界面的桌面应用程序来说，PHP 或许不是一种最好的语言，但是如果用户非常精通 PHP，并且希望在客户端应用程序中使用 PHP 的一些高级特性，可以利用 PHP-GTK 来编写这些程序。用这种方法，还可以编写跨平台的应用程序。PHP-GTK 是 PHP 的一个扩展，在通常发布的 PHP 包中并不包含它。如果对 PHP-GTK 感兴趣，请访问其» 网站以获取更多信息。

PHP 能够在所有的主流操作系统上使用，包括 Linux、Unix 的各种变种（包括 HP-UX、Solaris 和 OpenBSD）、Microsoft Windows、Mac OS X、RISC OS 等。今天，PHP已经支持了大多数的 web 服务器，包括 Apache、Microsoft Internet Information Server（IIS）、Personal Web Server（PWS）、Netscape 以及 iPlant server、Oreilly Website Pro Server、Caudium、Xitami、OmniHTTPd 等。对于大多数的服务器，PHP 提供了一个模块；还有一些 PHP 支持 CGI 标准，使得 PHP 能够作为 CGI 处理器来工作。

综上所述，使用 PHP，可以自由地选择操作系统和 web 服务器。同时，还可以在开发时选择使用面对过程和面对对象，或者两者混和的方式来开发。尽管 PHP 4 不支持 OOP 所有的标准，但很多代码仓库和大型的应用程序（包括 PEAR 库）仅使用 OOP 代码来开发。PHP 5 弥补了 PHP 4 的这一弱点，引入了完全的对象模型。

使用 PHP，并不局限于输出 HTML。PHP 还能被用来动态输出图像、PDF 文件甚至 Flash 动画（使用 libswf 和 Ming）。还能够非常简便的输出文本，例如 XHTML 以及任何其它形式的 XML 文件。PHP 能够自动生成这些文件，在服务端开辟出一块动态内容的缓存，可以直接把它们打印出来，或者将它们存储到文件系统中。

PHP 最强大最显著的特性之一，是它支持很大范围的数据库。使用任何针对某数据库的扩展（例如 mysql）编写数据库支持的网页非常简单，或者使用抽象层如 PDO，或者通过 ODBC 扩展连接到任何支持 ODBC 标准的数据库。其它一些数据库也可能会用 cURL 或者 sockets，例如 CouchDB。

PHP 还支持利用诸如 LDAP、IMAP、SNMP、NNTP、POP3、HTTP、COM（Windows 环境）等不计其数的协议的服务。还可以开放原始网络端口，使得任何其它的协议能够协同工作。PHP 支持和所有 web 开发语言之间的 WDDX 复杂数据交换。关于相互连接，PHP 已经支持了对 Java 对象的即时连接，并且可以透明地将其用作 PHP 对象。

PHP 具有极其有效的文本处理特性，包括 Perl 兼容正则表达式（PCRE）以及许多扩展和工具可用于解析和访问 XML 文档。PHP 将所有的 XML 功能标准化于坚实的 libxml2 扩展，并且还增加了 SimpleXML，XMLReader 以及 XMLWriter 支持以扩充其功能。

另外，还有很多其它有趣的扩展库，在此根据字母和分类归类列出。还有一些附加的 PECL 扩展可能有也可能没有在 PHP 手册中列出，例如 » XDebug。

由于在这里无法列出 PHP 所有的特性和可提供的便利，请参阅安装以及函数参考有关章节以获取关于这里提到的扩展库更多的信息。

PHP 是什么？
简明教程
简介


简明教程

Table of Contents

  • 需要些什么？
  • 第一个 PHP 页面
  • 实用的脚本
  • 处理表单
  • 在新版本的 PHP 中使用旧的 PHP 代码
  • 下一步做什么？

本章将给出关于 PHP 的简明教程。虽然 PHP 的功能并不局限于生成动态的 web 页面，但本章的内容仅涉及于此。请查阅"PHP 能做什么"一节以获取更多信息。

使用了 PHP 的 web 页面将被和通常的 HTML 页面一样处理，可以用通常建立 HTML 页面的方法来建立和编辑它们。

PHP 能做什么？
需要些什么？
入门指引


需要些什么？

在本教程中，假设用户的服务器已经安装并运行了 PHP，所有以 .php 结尾的文件都将由 PHP 来处理。在大部分的服务器上， 这是 PHP 的默认扩展名，不过，也请询问服务器管理员以确认。如果服务器支持 PHP ，则不需要做任何事情。只用建立 .php 文件，并把它们放置 到 web 目录中，服务器将神奇地自动解析这些文件。不用编译任何东西，也不用安装 任何其它的工具，仅仅只需把这些使用了 PHP 的文件想象成简单的 HTML 文件，其中 只不过多了一种新的标识符，在这里可以做各种各样的事情。

假设用户希望在本地机器开发以节约宝贵的带宽。在这种情况下，需要安装一个诸如 » Apache 的 web 服务器，当然还有 » PHP。可能还希望安装一个数据库，例如 » MySQL。

可以一个个的安装它们或选择一个更简单的方法。可以参考本手册中 PHP 安装说明的相关章节（假设已经配置好了某个 web 服务器）。若在自己安装 PHP 时出现了问题，建议在» 安装邮件列表中询问。如果想使用更简便的方法安装 PHP，那么可以考虑» 获取一个预先配置的安装包，用这个安装包，只用点击几下鼠标，就可以自动地安装所有这些系统。在任何操作系统下建立有 PHP 支持的 web 服务器都十分简单，包括 MacOSX、Linux 和 Windows。在 Linux 下，会发现 » rpmfind 和 » PBone 能够在获取 RPM 时提供帮助。也可以使用 » apt-get 搜索 Debian 的相关软件包。

简明教程
第一个 PHP 页面
简明教程


第一个 PHP 页面

在 web 服务器根目录（DOCUMENT_ROOT）下建立一个文件名为 hello.php，然后完成如下内容：

Example #1 第一个 PHP 脚本：hello.php

<html>
 <head>
  <title>PHP 测试</title>
 </head>
 <body>
 <?php echo '<p>Hello World</p>'; ?>
 </body>
</html>

在浏览器的地址栏里输入 web 服务器的 URL 访问这个文件，在结尾加上"/hello.php"。如果本地开发，那么这个 URL 一般是 http://localhost/hello.php 或者 http://127.0.0.1/hello.php，当然这取决于 web 服务器的设置。如果所有的设置都正确，那么这个文件将被 PHP 解析，浏览器中将会输出如下结果：

<html>
 <head>
  <title>PHP 测试</title>
 </head>
 <body>
 <p>Hello World</p>
 </body>
</html>

该程序非常的简单，它仅仅只是利用了 PHP 的 echo 语句显示了 Hello World。用户一定不会满足与此。请注意该文件无需被执行或以任何方式指定。服务器会找到该文件并提供给 PHP 进行解释，因为使用了".php"的扩展名，服务器已被配置成自动传递有着".php"扩展名的文件给 PHP。一个普通的 HTML 文件，加上了几个特别的标签，就可以做很多非常有趣的事情！

如果试过了这个例子，但是没有得到任何输出，或者浏览器弹出了下载框，或者浏览器以文本方式显示了源文件，可能的原因是服务器还没有支持 PHP，或者没有正确配置。需要请服务器的管理员根据本手册"安装"一章的内容使得服务器支持 PHP。如果本地开发，请阅读手册有关安装的章节以确保所有的设置都正确。还要确认通过浏览器访问的 URL 确实指向了服务器上的这个文件。如果只是从本地文件系统调用这个文件，它不会被 PHP 解析。如果问题仍然存在，请通过 » PHP 在线支持中的各种方式获取帮助。

以上例子的目的是为了显示 PHP 特殊标识符的格式。在这个例子中，用 <?php 来表示 PHP 标识符的起始，然后放入 PHP 语句并通过加上一个终止标识符 ?> 来退出 PHP 模式。可以根据自己的需要在 HTML 文件中像这样开启或关闭 PHP 模式。请参阅手册中"PHP 基本语法"以获取更多信息。

Note: 关于换行

尽管换行在 HTML 中的实际意义不是很大，但适当地使用换行可以使 HTML 代码易读且美观。PHP 会在输出时自动删除其结束符 ?> 后的一个换行。该功能主要是针对在一个页面中嵌入多段 PHP 代码或者包含了无实质性输出的 PHP 文件而设计，与此同时也造成了一些疑惑。如果需要在 PHP 结束符 ?> 之后输出换行的话，可以在其后加一个空格，或者在最后的一个 echo/print 语句中加入一个换行。

Note: 关于文本编辑器

有很多文本编辑器以及集成开发环境（IDE）可以被用来建立、编辑和管理 PHP 文件。这些工具中的一部分被列在 » PHP 编辑器列表中。如果希望推荐其它的编辑器，请访问以上页面，并要求该页面的维护者将你推荐的编辑器加入到该列表中。使用支持语法高亮功能的编辑器会给开发带来很多帮助。

Note: 关于文字处理器

诸如 StarOffice Writer、Microsoft Word 和 Abiword 的文字处理器不适合用来编辑 PHP 程序。如果希望用以上这些工具的某一种来处理脚本，必须保证将结果存成了纯文本格式，否则 PHP 将无法读取并运行这些脚本。

Note: 关于 Windows 记事本

如果使用 Windows 记事本来编写 PHP 脚本，需要注意在保存文件时，文件的后缀名应该为 .php（记事本将自动在文件名后面加上 .txt 后缀，除非采取以下措施之一来避免这种情况）。当保存文件时，系统会让你指定文件的文件名，这时请将文件名加上引号（例如 "hello.php"）。或者，也可以点击"另存为"对话框中的"保存类型"下拉菜单，并将设置改为"所有文件"。这样在输入文件名的时候就不用加引号了。

现在已经成功建立了一个简单的 PHP 脚本，那么再来建立一个最著名的 PHP 脚本！调用函数 phpinfo()，将会看到很多有关自己系统的有用信息，例如预定义变量、已经加载的 PHP 模块和配置信息。请花一些时间来查看这些重要的信息。

Example #2 从 PHP 获取系统信息

<?php phpinfo(); ?>

需要些什么？
实用的脚本
简明教程


实用的脚本

现在来编写一些更实用的脚本，比如检查浏览页面的访问者在用什么浏览器。要达到这个目的，需要检查用户的 agent 字符串，它是浏览器发送的 HTTP 请求的一部分。该信息被存储在一个变量中。在 PHP 中，变量总是以一个美元符开头。我们现在感兴趣的变量是 $_SERVER['HTTP_USER_AGENT']。

Note:

$_SERVER 是一个特殊的 PHP 保留变量，它包含了 web 服务器提供的所有信息，被称为超全局变量。请查阅本手册"超全局变量"中的有关内容以获取更多信息。这些特殊的变量是在 PHP » 4.1.0 版本引入的。在这之前使用 $HTTP_*_VARS 数组，如 $HTTP_SERVER_VARS。尽管现在已经不用了，但它们在新版本中仍然存在（参见"旧代码"一节中的注解）。

要显示该变量，只需简单地进行如下操作：

Example #1 打印一个变量（数组元素）

<?php
echo $_SERVER['HTTP_USER_AGENT'];
?>

该脚本的输出可能是：

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

PHP 有很多种不同类型的变量。在以上例子中我们打印了一个数组的单元。数组是一类非常有用的变量。

$_SERVER 只是 PHP 自动全局化的变量之一。可以查阅"预定义变量"一节来查看这些变量的列表，或者也可以通过上节例子中 phpinfo() 函数的输出来查看。

可以在一个 PHP 标识中加入多个 PHP 语句，也可以建立一个代码块来做比简单的 echo 更多的事情。例如，如果需要识别 Internet Explorer，可以进行如下操作：

Example #2 流程控制与函数的使用

<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
    echo '正在使用 Internet Explorer。<br />';
}
?>

该脚本的输出可能是：

正在使用 Internet Explorer。<br />

这里要介绍一些新的原理。上面用了一个 if 语句。如果用户对 C 语言的基本语法比较熟悉，则应该对此很熟悉，否则，可能需要拿起任何一本 PHP 介绍性的书籍并阅读前面的两三个章节，或者也可以阅读本手册的"语言参考"一章。

需要介绍的第二个原理，是对 strpos() 函数的调用。strpos() 是 PHP 的一个内置函数，其功能是在一个字符串中搜索另外一个字符串。例如我们现在需要在 $_SERVER['HTTP_USER_AGENT']（即所谓的 haystack）变量中寻找 'MSIE'。如果在这个 haystack 中该字符串（即所谓的 needle）被找到（"草里寻针"），则函数返回 needle 在 haystack 中相对于开头的位置；如果没有，则返回 FALSE。如果该函数没有返回 FALSE，则 if 会将条件判断为 TRUE 并运行其花括号 {} 内的代码；否则，则不运行这些代码。可以自己尝试利用 if，else 以及其它的函数如 strtoupper() 和 strlen() 来建立类似的脚本。在本手册中相关的页面也包含有范例。如果对如何使用函数不是很确定，可以阅读手册中有关"如何阅读函数的定义"和"函数"的有关章节。

以下我们进一步显示如何进出 PHP 模式，甚至是在一个 PHP 代码块的中间：

Example #3 混和 HTML 和 PHP 模式

<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
?>
<h3>strpos() 肯定没有返回假 (FALSE)</h3>
<p>正在使用 Internet Explorer</p>
<?php
} else {
?>
<h3>strpos() 肯定返回假 (FALSE)</h3>
<center><b>没有使用 Internet Explorer</b></center>
<?php
}
?>

该脚本的输出可能是：

<h3>strpos() 肯定没有返回假 (FALSE)</h3>
<p>正在使用 Internet Explorer</p>

和以上我们用一个 PHP 的 echo 语句来输出不同的是，我们跳出了 PHP 模式来直接写 HTML 代码。这里很值得注意的一点是，对于这两种情况而言，脚本的逻辑效率是相同的。在判断了 strpos() 函数的返回值是 TRUE 或是 FALSE，也就是判断了字符串 'MSIE' 是否被找到之后，最终只有一个 HTML 块被发送给浏览者。

第一个 PHP 页面
处理表单
简明教程


处理表单

PHP 一个很有用的特点体现在它处理 PHP 表单的方式。需要理解的非常重要的原理，是表单的任何元素都在 PHP 脚本中自动生效。请参阅本手册中"PHP 的外部变量"以获取关于在 PHP 中使用表单的详细信息及范例。以下是 HTML 表单的范例：

Example #1 一个简单的 HTML 表单

<form action="action.php" method="post">
 <p>姓名: <input type="text" name="name" /></p>
 <p>年龄: <input type="text" name="age" /></p>
 <p><input type="submit" /></p>
</form>

该表单中并没有什么特殊的地方，其中没有使用任何特殊的标识符。当用户填写了该表单并点击了提交按钮，页面 action.php 将被调用。在该文件中，可以加入如下内容：

Example #2 打印来自表单的数据

你好，<?php echo htmlspecialchars($_POST['name']); ?>。
你 <?php echo (int)$_POST['age']; ?> 岁了。

该脚本的输出可能是：

你好，Joe。你 22 岁了。

除了htmlspecialchars() 和 (int) 部分，这段程序做什么用显而易见。htmlspecialchars() 使得 HTML 之中的特殊字符被正确的编码，从而不会被使用者在页面注入 HTML 标签或者 Javascript 代码。例如 age 字段，我们明确知道他是一个数值，因此我们将它转换为一个整形值(integer)来自动的消除任何不必要的字符。也可以使用 PHP 的 filter 扩展来自动完成该工作。PHP 将自动设置 $_POST['name'] 和 $_POST['age'] 变量。在这之前我们使用了超全局变量 $_SERVER，现在我们引入了超全局变量 $_POST，它包含了所有的 POST 数据。请注意我们的表单提交数据的方法（method）。如果使用了 GET 方法，那么表单中的信息将被储存到超全局变量 $_GET 中。如果并不关心请求数据的来源，也可以用超全局变量 $_REQUEST，它包含了所有 GET、POST、COOKIE 和 FILE 的数据。

也可以在 PHP 中处理 XForms 的输入，尽管用户可能更喜欢使用长久以来支持良好的 HTML 表单。XForms 目前还不适合初学者使用，但是用户可能对它感兴趣。手册中在"特点"一章有一节对如何处理从 XForum 接收到的数据进行了简短的介绍。

实用的脚本
在新版本的 PHP 中使用旧的 PHP 代码
简明教程


在新版本的 PHP 中使用旧的 PHP 代码

现在，PHP 已经发展成为一种流行的脚本语言，可以在很多公共的资源里找到可以在自己的脚本中重新利用的代码。PHP 语言的开发者为向下兼容性下了很多功夫，因此在新版本的 PHP 下，老版本的代码应该可以在不作任何改动的情况下（理想地）运行。不过实际上，还是必须对老的代码做一些改动。

有可能影响到老版本的代码的最重要的两点改动分别是：

  • 旧的 $HTTP_*_VARS 数组从 PHP 5.4.0 开始将不再有效。 PHP » 4.1.0 版本引入了如下超全局数组变量： $_GET、$_POST、$_COOKIE、 $_SERVER、$_FILES、$_ENV、 $_REQUEST 以及 $_SESSION。
  • 外部变量不再被默认注册为全局变量。也就是说，从 PHP » 4.2.0 版开始，php.ini 中的设置选项 register_globals 默认值变成了 off。建议用以上提到的超全局数组变量来访问这些值。但可能老的脚本、书籍以及教程都可能建立在该设置为 on 的基础上。如果该选项被设置为 on，则可以在 URL http://www.example.com/foo.php?id=42 中直接使用变量 $id。但不管被设置为 on 还是 off，$_GET['id'] 一直有效。

如果希望了解关于这些改动的细节，请参阅"预定义变量"一章以及其中的连接。

处理表单
下一步做什么？
简明教程


下一步做什么？

用现在掌握的知识，应该能够理解本手册中的大部分内容以及其中各式各样的脚本范例。

请查阅 PHP Conference 资料网站 » http://talks.php.net/ 以观看更多幻灯片，这些幻灯片展示了许多 PHP 其它的功能。

在新版本的 PHP 中使用旧的 PHP 代码
安装与配置
简明教程


安装与配置

  • 安装前需要考虑的事项
  • Unix 系统下的安装
    • Unix 系统下的 Apache 1.3.x
    • Unix 系统下的 Apache 2.x
    • Unix 系统下的 Nginx 1.4.x
    • Unix 平台的 Lighttpd 1.4
    • Sun Solaris 上的 Sun、iPlanet 和 Netscape 服务器
    • CGI 和命令行设置
    • 针对 HP-UX 平台的安装提示
    • 在 OpenBSD 系统下的安装
    • 针对 Solaris 的安装提示
    • Debian GNU/Linux 安装说明
  • Mac OS X 系统下的安装
    • 使用软件包
    • 使用内置的 PHP
    • 在 Mac OS X 下编译 PHP
  • Windows 系统下的安装
    • Install Requirements
    • PECL
    • Windows 下的 PHP 安装程序工具
    • Recommended Configuration on Windows systems
    • Manual PHP Installation on Windows
    • Windows 下 PHP 故障排除
    • Installation on old Windows systems
  • 云计算平台上的安装
    • Microsoft Azure
    • Amazon EC2
  • FastCGI 进程管理器（FPM）
    • 安装
    • 配置
  • PECL 扩展库安装
    • PECL 安装介绍
    • 下载 PECL 扩展库
    • 在 Windows 上安装 PHP 扩展
    • 用 PEAR 编译共享 PECL 扩展库
    • 用 phpize 编译共享 PECL 扩展库
    • php-config
    • 将 PECL 扩展库静态编译入 PHP
  • 还有问题？
    • 阅读 FAQ
    • 其它问题
    • 错误报告
  • 运行时配置
    • 配置文件
    • .user.ini 文件
    • 配置可被设定范围
    • 怎样修改配置设定
下一步做什么？
安装前需要考虑的事项
PHP 手册


安装前需要考虑的事项

安装前，首先需要知道想用 PHP 来做什么。PHP 主要用在三个领域，分别在"PHP 能做什么"一节中进行了描述：

  • 网站和 web 应用程序（服务器端脚本）
  • 命令行脚本
  • 桌面（GUI）应用程序

在通常情况下，需要三样东西：PHP 自身、一个 web 服务器和一个 web 浏览器。可能已经有了一个 web 浏览器，并且根据操作系统的配置，也很可能已经有了一个 web 服务器（例如 Linux 和 MacOS 下的 Apache；Windows 下的 IIS）。也许在某个公司租用了 web 空间，这样，自己无需设置任何东西，仅需要编写 PHP 脚本，并上传到租用的空间中，然后在浏览器中查看结果。

如果需要自己配置服务器和 PHP，有两个方法将 PHP 连接到服务器上。对于很多服务器，PHP 均有一个直接的模块接口（也叫做 SAPI）。这些服务器包括 Apache、Microsoft Internet Information Server、Netscape 和 iPlanet 等服务器。其它很多服务器支持 ISAPI，即微软的模块接口（OmniHTTPd 就是个例子）。如果 PHP 不能作为模块支持 web 服务器，总是可以将其作为 CGI 或 FastCGI 处理器来使用。这意味着可以使用 PHP 的 CGI 可执行程序来处理所有服务器上的 PHP 文件请求。

如果对 PHP 命令行脚本感兴趣（例如在离线状态下，根据传递给脚本的参数，自动生成一些图片，或处理一些文本文件），那一定需要命令行可执行程序。更多信息可以参考 PHP 的命令行模式。如果是这种情况，不需要服务器和浏览器。

还可以用 PHP 的 PHP-GTK 扩展来编写桌面图形界面应用程序。这与编写 web 页面完全不同，因为无需输出任何 HTML，而要管理窗口和窗口中的对象。关于 PHP-GTK 的更多信息，请» 访问专门为该扩展建立的网站。PHP-GTK 没有包含在官方发布的 PHP 中。

现在，本节开始说明如何在 Unix 和 Windows 的 web 服务器中配置服务器模块接口和 CGI 可执行程序。也将在下面几节中了解到有关命令行可执行程序安装的信息。

PHP 源代码包和二进制包可以在 » http://www.php.net/downloads.php 找到。建议选择一个最近的» 镜象服务器下载。

安装与配置
Unix 系统下的安装
安装与配置


Unix 系统下的安装

Table of Contents

  • Unix 系统下的 Apache 1.3.x
  • Unix 系统下的 Apache 2.x
  • Unix 系统下的 Nginx 1.4.x
  • Unix 平台的 Lighttpd 1.4
  • Sun Solaris 上的 Sun、iPlanet 和 Netscape 服务器
  • CGI 和命令行设置
  • 针对 HP-UX 平台的安装提示
  • 在 OpenBSD 系统下的安装
  • 针对 Solaris 的安装提示
  • Debian GNU/Linux 安装说明

本节将指导如何在 Unix 系统下安装和配置 PHP。在开始安装之前，请务必研究自己使用的系统和 web 服务器的相关章节。

在安装前需要考虑的事项一节提到，在本节主要以 web 为中心介绍 PHP 的设置。不过本节也会覆盖一些 PHP 命令行用法的设置方法。

在 Unix 平台下安装 PHP 有几种方法：使用配置和编译过程，或是使用各种预编译的包。本文主要针对配置和编译 PHP 的过程。很多 Unix 类系统都有包安装系统，可以用它来设置一个有着标准配置的 PHP。但是若需要与标准配置不同的功能（例如一个安全服务器，或者不同的数据库驱动扩展模块），可能需要编译 PHP 和／或 web 服务器。如果不熟悉编译软件，可以考虑搜索一下是否有人已经编译了包含所需要功能的预编译包。

编译所需的知识和软件：

  • 基础的 Unix 技能（有能力操作"make"和一种 C 语言编译器）
  • 一个 ANSI C 语言编译器
  • 一个 web 服务器
  • 任何模块特需的组件（例如 GD 和 PDF 库等)

直接从 Git 源文件或者自己修改过的包编译时可能需要：

  • autoconf: 2.13+（PHP < 5.4.0），2.59+（PHP >= 5.4.0）
  • automake: 1.4+
  • libtool: 1.4.x+（除了 1.4.2）
  • re2c: 版本 0.13.4 或更高
  • flex: 版本 2.5.4（PHP <= 5.2）
  • bison: 版本 1.28（建议），1.35 或 1.75

PHP 初始的配置和安装过程被 configure 脚本中一系列命令行选项控制。可以通过 ./configure --help命令了解 PHP 所有可用的编译选项及简短解释。本手册是分开对这些选项编写文档的。可在附录中找到核心配置选项，而扩展模块特定的配置选项分别在其函数参考页面中描述。

配置好 PHP 后，便可以开始编译模块和／或可执行文件。make 命令用来做这一工作。如果该命令执行失败而找不到原因，请参考安装问题一节。

安装前需要考虑的事项
Unix 系统下的 Apache 1.3.x
安装与配置


Unix 系统下的 Apache 1.3.x

本节包括在 Unix 平台的 Apache 下安装 PHP 的说明和提示。我们在另外的页面也有 Apache 2 的安装和说明。

可以从核心配置选项列表以及位于手册对应部分的特定扩展配置选项中选择参数并在安装步骤第 10 步将它们添加到 configure 命令中。版本号在这里被省略了以保证此说明的正确性。需要将这里的"xxx"替换为自己使用的文件的正确值。

Example #1 PHP 的 Apache 共享模块版本安装说明

1.  gunzip apache_xxx.tar.gz
2.  tar -xvf apache_xxx.tar
3.  gunzip php-xxx.tar.gz
4.  tar -xvf php-xxx.tar
5.  cd apache_xxx
6.  ./configure --prefix=/www --enable-module=so
7.  make
8.  make install
9.  cd ../php-xxx

10. 现在，配置 PHP。这是定制 PHP 的不同选项的时候，例如要加载哪些扩展库。使用
      ./configure --help
    来列出可用的选项。在下面的示例中只是简单地配置 Apache 1 和 MySQL 支持。
    用户的 apxs 的路径可能和此示例中的不同。

      ./configure --with-mysql --with-apxs=/www/bin/apxs

11. make
12. make install

    如果在安装之后决定修改配置选项，那么只需重复以上最后三步。只须重新启动
    Apache 就可以使新模块生效。不需要重新编译 Apache。

    注意除非特别指出，"make install"总是会安装 PEAR，各种 PHP 工具例如 phpize，
    PHP CLI 以及其它。

13. 建立 php.ini 文件。

      cp php.ini-dist /usr/local/lib/php.ini

    可以编辑 php.ini 来设置 PHP 选项。如果想把 php.ini 放在其它目录，在第
    10 步加上以下选项：

      --with-config-file-path=/path

    如果选择了  php.ini-production，确保阅读一下其中的变更说明，因为这些会
    影响到 PHP 的行为。

14. 编辑 httpd.conf 来加载 PHP 模块。在 LoadModule 语句右边的路径必须指向系统中
    PHP 模块所在的路径。上面的 make install 步骤可能已经添加了，但还是检查确认一下。

      LoadModule php5_module        libexec/libphp5.so

15. 在 httpd.conf 中加入 AddModule 部分，在 ClearModuleList 下面的某处，加上这一句：

      AddModule mod_php5.c

16. 告诉 Apache 将哪些后缀作为 PHP 解析。例如，让 Apache 把 .php 后缀的文件解析为
    PHP。可以将任何后缀的文件解析为 PHP，只要在以下语句中加入并用空格分开。这里以
    添加一个 .phtml 来示例。

      AddType application/x-httpd-php .php .phtml

    为了将 .phps 作为 PHP 的源文件进行语法高亮显示，还可以加上：

      AddType application/x-httpd-php-source .phps

17. 用通常的过程启动 Apache（必须完全停止 Apache 再重新启动，而不是用 HUP 或者
    USR1 信号使 Apache 重新加载）。

也可以将 PHP 作为静态对象来安装：

Example #2 PHP 的 Apache 静态模块版本安装说明

1.  gunzip -c apache_1.3.x.tar.gz | tar xf -
2.  cd apache_1.3.x
3.  ./configure
4.  cd ..

5.  gunzip -c php-5.x.y.tar.gz | tar xf -
6.  cd php-5.x.y
7.  ./configure --with-mysql --with-apache=../apache_1.3.x
8.  make
9.  make install

10. cd ../apache_1.3.x

11. ./configure --prefix=/www --activate-module=src/modules/php5/libphp5.a
    （上面一行是正确的！是的，我们知道 libphp5.a 尚不存在，还不到时候，
      它会在之后被创建。）

12. make
    （现在应该有一个 httpd 二进制文件，可以将它复制到 Apache bin 目录。如果这是
      第一次安装，还要"make install"。)

13. cd ../php-5.x.y
14. cp php.ini-development /usr/local/lib/php.ini

15. 可以编辑 /usr/local/lib/php.ini 文件以设置 PHP 选项。编辑 httpd.conf 或
    srm.conf 文件，添加：
    AddType application/x-httpd-php .php

根据 Unix 系统和 Apache 安装方法的不同，有很多方法停止和重启动 Apache。以下是一些不同的 Apache／UNIX 下重启动 Apache 的典型命令。需要把 /path/to/替换成自己系统上的确切路径。

Example #3 重启动 Apache 的示例命令

1. 在一些 Linux 和 SysV 的变种下：
/etc/rc.d/init.d/httpd restart

2. 使用 apachectl 脚本：
/path/to/apachectl stop
/path/to/apachectl start

3. httpdctl 和 httpsdctl（使用了 OpenSSL），类似 apachectl：
/path/to/httpsdctl stop
/path/to/httpsdctl start

4. 使用了 mod_ssl，或其他 SSL 服务器，可能需要手工重启动：
/path/to/apachectl stop
/path/to/apachectl startssl

apachectl 和 http(s)dctl 程序所在的路径在不同系统中通常不一样。如果系统中有 locate 或者 whereis 或者 which 命令，那么可以帮助找到这些控制程序。

编译 PHP 和 Apache 的不同例子还有：

./configure --with-apxs --with-pgsql

此配置将生成在 Apache 的 httpd.conf 文件中用 LoadModule 加载的 libphp5.so 共享库。而 PostgreSQL 支持将嵌入到此共享库中。

./configure --with-apxs --with-pgsql=shared

此配置将生成 Apache 的 libphp5.so 共享库，并且还生成 pgsql.so 共享库，可以在 php.ini 文件中用 extension 指令加载，或者在 PHP 脚本中用 dl() 函数明确地加载。

./configure --with-apache=/path/to/apache_source --with-pgsql

此配置将生成一个 libmodphp5.a 库，一个 mod_php5.c 和一些相关的文件并且拷贝到 Apache 源程序目录中的 src/modules/php5目录下。然后用 --activate-module=src/modules/php5/libphp5.a 编译 Apache，Apache 编译系统会生成 libphp5.a 并且将其静态地连接到 httpd 程序中。PostgreSQL 支持也直接包括在这个 httpd 程序中了，因此最终结果是单一的一个包括了所有 Apache 和 PHP 支持的 httpd 可执行文件。

./configure --with-apache=/path/to/apache_source --with-pgsql=shared

此配置和上面一样——除了没有在最后的 httpd 可执行文件中包括 PostgreSQL 的支持以及生成了一个 pgsql.so 共享库以外。该共享库可以在 php.ini 文件中或者用 dl() 函数加载。

当选择不同的方法编译 PHP 时，需要考虑每种方法的优势和缺点。用共享对象方式编译 PHP 意味着可以单独编译 Apache，并且不用在添加或修改了 PHP 的时候重新编译所有程序。用内置方法编译 PHP（静态方式）意味着 PHP 可以加载和运行得更快。更多信息见 Apache 的 » DSO 支持页面。

Note:

Apache 默认的 httpd.conf 文件中目前包括类似如下的内容：

User nobody
Group "#-1"
除非把它修改成"Group nogroup"或者其它类似的（"Group daemon"也很通用），PHP 将不能打开文件。

Note:

确认在使用 --with-apxs=/path/to/apxs 时指向 Apache 安装后的目录中的 apxs。绝对不能用 Apache 源程序中的 apxs 而要用安装后的 apxs。

Unix 系统下的安装
Unix 系统下的 Apache 2.x
Unix 系统下的安装


Unix 系统下的 Apache 2.x

本节包括在 Unix 平台的 Apache 2.x 下安装 PHP 的说明和提示。

Warning

不推荐在使用 Apache 2 的产品中使用线程化 MPM。应使用预分支 MPM，Apache 2.0 和 2.2 默认的 MPM。其原因见 FAQ 中的相关条目使用线程化 MPM 的 Apache2。

推荐阅读 » Apache 文档，了解一下 Apache 2.x 服务器，以及详细的安装参数。

可以从 » Apache 下载站点下载最新版本的Apache，并且根据上文选择合适版本的 PHP 下载。本向导仅包含最基础的内容，只能让 Apache 2.x 和 PHP 能够正常工作。更多信息请阅读 » Apache 文档。这里省略所有的版本号，以保证本文的正确性。需要将本文的"NN"替换为相应的版本号。

当前 Apache 2.x 有两个流行的版本 - 2.0、2.2。虽然选择某个版本会有种种原因，但是如果可以考虑的话，我们还是建议使用最新的 Apache 2.2 版本。当然，以下的介绍同样适合 Apache 2.0 和 2.2。

  1. 从上面列出的地方获取 Apache 源码包，然后解压：

    gzip -d httpd-2_x_NN.tar.gz
tar -xf httpd-2_x_NN.tar

  2. 同样，获取 PHP 源码包并解压：

    gunzip php-NN.tar.gz
tar -xf php-NN.tar

  3. 编译并安装 Apache。请参考 Apache 安装文档了解编译 Apache 的更多细节。

    cd httpd-2_x_NN
./configure --enable-so
make
make install

  4. 现在已经将 Apache 2.x.NN 安装在 /usr/local/apache2。本安装支持可装载模块 和标准的 MPM prefork。之后，可以使用如下命令启动 Apache 服务器：

    /usr/local/apache2/bin/apachectl start
    如果成功，可以停止 Apache 服务器并继续安装 PHP：
    /usr/local/apache2/bin/apachectl stop

  5. 现在需要配置并编译 PHP。在这里可以用各种各样的参数来自定义 PHP，例如启动哪些扩展功能包的支持等。用 ./configure --help 命令可以列出当前可用的所有参数。在此例中，将给出一个在有 MySQL 支持的 Apache 2 上进行配置的范例。

    如果按照上面的说明从源代码编译了 Apache，下面的例子会正确匹配 apxs 的路径。如果通过其他方式安装了 Apache，需要相应的调整 apxs 的路径。注意，在有些发行版本中，可能将 apxs 更名为 apxs2。

    cd ../php-NN
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql
make
make install

    如果决定在安装后改变配置选项，只需重复最后的三步 configure，make，以及 make install，然后需要重新启动 Apache 使新模块生效。Apache 不需要重新编译。

    请注意，除非明确有提示，否则"make install"命令将安装 PEAR、各种 PHP 工具诸如 phpize，并安装 PHP CLI 等等。

  6. 配置 php.ini

    cp php.ini-development /usr/local/lib/php.ini

    可以编辑 php.ini 来设置 PHP 运行时的选项。如果想要把此文件放到另外的位置，需要在步骤 5 添加 --with-config-file-path=/path 选项。

    如果选择了 php.ini-production，请务必阅读其中的变更列表，它们将影响 PHP 的执行。

  7. 编辑 httpd.conf 文件以调用 PHP 模块。LoadModule 达式右边的路径必须指向系统中的 PHP 模块。以上的 make install 命令可能已经完成了这些，但务必要检查。

    LoadModule php5_module modules/libphp5.so

  8. 告知 Apache 将特定的扩展名解析成 PHP，例如，让 Apache 将扩展名 .php 解析成 PHP。为了避免潜在的危险，例如上传或者创建类似 exploit.php.jpg 的文件并被当做 PHP 执行，我们不再使用 Apache 的 AddType 指令来设置。参考下面的例子，你可以简单的将需要的扩展名解释为 PHP。我们演示为增加.php。

    <FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

    或者，你也想将 .php，.php2，.php3，.php4，.php5，.php6，以及 .phtml 文件都当做 PHP 来运行，我们无需额外的设置，仅需按照下面这样来：

    <FilesMatch "\.ph(p[2-6]?|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>

    然后，可以将 .phps 文件由 PHP 源码过滤器处理，使得其在显示时可以高亮源码，设置如下：

    <FilesMatch "\.phps$">
    SetHandler application/x-httpd-php-source
</FilesMatch>

    mod_rewrite 也有助于将那些不需要运行的 .php 文件的源码高亮显示，而并不需要将他们更名为 .phps 文件：

    RewriteEngine On
RewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source]

    不要在正式生产运营的系统上启动 PHP 源码过滤器，因为这可能泄露系统机密或者嵌入的代码中的敏感信息。

  9. 按照通常的方式启动 Apache 服务：

    /usr/local/apache2/bin/apachectl start

    或者

    service httpd restart

按照上面的步骤便可以使 Apache 2.ｘ 将 PHP 作为 SAPI 模块了。当然 Apache 和 PHP 都还有很多配置选项，可以在相应的源代码目录中使用 ./configure --help 获得更多信息。

假如要编译一个多线程版本的 Apache，可在编译时选择用 worker MPM 来替换标准的 prefork MPM。只需在上面的第 3 步使用：

--with-mpm=worker

如果不是很明确这样做的后果并且大概理解其含义的话，最好不要进行这一步。更多信息请参考 Apache 文档中关于 » MPM-Modules 的部分。

Note:

Apache MultiViews 常见问题中讨论了在 PHP 中使用 MultiViews。

Note:

要编译多线程版本的 Apache，系统必须支持多线程。这也意味着需要将 PHP 编译为正处在试验阶段的 Zend Thread Safety（ZTS），因此并不是所有的扩展都可以使用了。推荐编译 Apache 使用标准的 prefork MPM-Module。

Unix 系统下的 Apache 1.3.x
Unix 系统下的 Nginx 1.4.x
Unix 系统下的安装


Unix 系统下的 Nginx 1.4.x

本文档包括使用 PHP-FPM 为 Nginx 1.4.x HTTP 服务器安装和配置 PHP 的说明和提示。

本指南假定您已经从源代码成功构建 Nginx，并且其二进制文件和配置文件都位于 /usr/local/nginx。 如果您使用其他方式获取的 Nginx，请参考 » Nginx Wiki 并对照本文档完成安装。

本文档仅包含 Nginx 服务器的基本配置，它将通过 80 端口提供 PHP 应用的处理能力。 如果您需要超出本文档范围的安装配置指导，建议您查阅 Nginx 和 PHP-FPM 的文档。

需要注意的是，本文档一律使用 'x' 来表示版本号，请根据实际情况将 'x' 替换为对应的版本号。

  1. 建议您访问 Nginx Wiki » 安装 页面以获取并在您的系统上安装 Nginx。

  2. 获取并解压 PHP 源代码:

    tar zxf php-x.x.x

  3. 配置并构建 PHP。在此步骤您可以使用很多选项自定义 PHP，例如启用某些扩展等。 运行 ./configure --help 命令来获得完整的可用选项清单。 在本示例中，我们仅进行包含 PHP-FPM 和 MySQL 支持的简单配置。

    cd ../php-x.x.x
./configure --enable-fpm --with-mysql
make
sudo make install

  4. 创建配置文件，并将其复制到正确的位置。

    cp php.ini-development /usr/local/php/php.ini
cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
cp sapi/fpm/php-fpm /usr/local/bin

  5. 需要着重提醒的是，如果文件不存在，则阻止 Nginx 将请求发送到后端的 PHP-FPM 模块， 以避免遭受恶意脚本注入的攻击。

    将 php.ini 文件中的配置项 cgi.fix_pathinfo 设置为 0 。

    打开 php.ini:

    vim /usr/local/php/php.ini

    定位到 cgi.fix_pathinfo= 并将其修改为如下所示：

    cgi.fix_pathinfo=0

  6. 在启动服务之前，需要修改 php-fpm.conf 配置文件，确保 php-fpm 模块使用 www-data 用户和 www-data 用户组的身份运行。

    vim /usr/local/etc/php-fpm.conf

    找到以下内容并修改：

    ; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = www-data
group = www-data

    然后启动 php-fpm 服务：

    /usr/local/bin/php-fpm

    本文档未涵盖对 php-fpm 进行进一步配置的信息，如果您需要更多信息，请查阅相关文档。

  7. 配置 Nginx 使其支持 PHP 应用：

    vim /usr/local/nginx/conf/nginx.conf

    修改默认的 location 块，使其支持 .php 文件：

    location / {
    root   html;
    index  index.php index.html index.htm;
}

    下一步配置来保证对于 .php 文件的请求将被传送到后端的 PHP-FPM 模块， 取消默认的 PHP 配置块的注释，并修改为下面的内容：

    location ~* \.php$ {
    fastcgi_index   index.php;
    fastcgi_pass    127.0.0.1:9000;
    include         fastcgi_params;
    fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
}

    重启 Nginx。

    sudo /usr/local/nginx/sbin/nginx -s stop
sudo /usr/local/nginx/sbin/nginx

  8. 创建测试文件。

    rm /usr/local/nginx/html/index.html
echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php

    打开浏览器，访问 http://localhost，将会显示 phpinfo() 。

通过以上步骤的配置，Nginx 服务器现在可以以 SAPI 模块的方式支持 PHP 应用了。 当然，对于 Nginx 和 PHP 的配置，还有很多可用的选项， 请在对应的源代码目录执行 ./configure --help 来查阅更多配置选项。

Unix 系统下的 Apache 2.x
Unix 平台的 Lighttpd 1.4
Unix 系统下的安装


Unix 平台的 Lighttpd 1.4

本节包括在 Unix 平台的 Lighttpd 1.4 下安装 PHP 的说明和提示。

推荐阅读 » Lighttpd trac 了解一下正确安装 Lighttpd 然后继续。

推荐使用 Fastcgi 作为 SAPI 模块来连接 PHP 和 Lighttpd。在 PHP 5.3 中自动激活了 Fastcgi，对于旧版本则在配置时使用 --enable-fastcgi。要确认 PHP 已激活 Fastcgi 可以使用命令 php -v，应该显示 PHP 5.2.5 (cgi-fcgi)。在 PHP 5.2.3 之前，Fastcgi 是包含在 php 可执行文件中（没有 php-cgi 文件）。

使 Lighttpd 产生 php 进程

要配置 Lighttpd 连接到 php 并产生 fastcgi 进程，编辑 lighttpd.conf。推荐使用套接字在本机连接 fastcgi 进程。

Example #1 Partial lighttpd.conf

server.modules += ( "mod_fastcgi" )

fastcgi.server = ( ".php" =>
  ((
    "socket" => "/tmp/php.socket",
    "bin-path" => "/usr/local/bin/php-cgi",
    "bin-environment" => (
      "PHP_FCGI_CHILDREN" => "16",
      "PHP_FCGI_MAX_REQUESTS" => "10000"
    ),
    "min-procs" => 1,
    "max-procs" => 1,
    "idle-timeout" => 20
  ))
)

bin-path 指令允许 lighttpd 动态产生 fastcgi 进程。PHP 会根据 PHP_FCGI_CHILDREN 环境变量产生子进程。"bin-environment"指令设定了所产生的进行的环境。PHP 会在达到 PHP_FCGI_MAX_REQUESTS 所指定的请求数目之后杀死一个子进程。在 PHP 中通常应避免"min-procs"和"max-procs"指令。PHP 自己管理其子进程，并且例如 APC 之类的 opcode 缓存仅在 PHP 管理下的子进程之间共享。如果"min-procs"被设定成某个大于 1 的值，则 PHP 应答器的总数目为该值乘以 PHP_FCGI_CHILDREN（如 min-procs 为 2，PHP_FCGI_CHILDREN 为 16 则会产生 32 个应答器）。

通过 spawn-fcgi 产生进程

Lighttpd 提供一个名为 spawn-fcgi 的程序来简化产生 fastcgi 进程的手续。

产生 php-cgi

有可能不通过 spawn-fcgi 来产生进程，但需要做些工作。设定 PHP_FCGI_CHILDREN 环境变量控制了 PHP 产生多少个子进程来处理请求。设定 PHP_FCGI_MAX_REQUESTS 将决定每个子进程存活多久（以请求数目决定）。以下为一个简单的 bash 脚本来帮助产生 php 应答器。

Example #2 产生 FastCGI 应答器

#!/bin/sh

# Location of the php-cgi binary
PHP=/usr/local/bin/php-cgi

# PID File location
PHP_PID=/tmp/php.pid

# Binding to an address
#FCGI_BIND_ADDRESS=10.0.1.1:10000
# Binding to a domain socket
FCGI_BIND_ADDRESS=/tmp/php.sock

PHP_FCGI_CHILDREN=16
PHP_FCGI_MAX_REQUESTS=10000

env -i PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN \
       PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS \
       $PHP -b $FCGI_BIND_ADDRESS &

echo $! > "$PHP_PID"

连接远程 FCGI 实例

Fastcgi 实例可被产生于多个远程机器以分散应用程序。

Example #3 连接远程 php-fastcgi 实例

fastcgi.server = ( ".php" =>
   (( "host" => "10.0.0.2", "port" => 1030 ),
    ( "host" => "10.0.0.3", "port" => 1030 ))
)
Unix 系统下的 Nginx 1.4.x
Sun Solaris 上的 Sun、iPlanet 和 Netscape 服务器
Unix 系统下的安装


Sun Solaris 上的 Sun、iPlanet 和 Netscape 服务器

本节包含了在 Sun Solaris 平台的 Sun Java System web Server、Sun ONE web Server、iPlanet 和 Netscape 下安装 PHP 的说明和提示。

从 PHP 4.3.3 起，可以使用基于 NSAPI模块 PHP 脚本来生成自定义目录列表和错误页面。更多与 Apache 兼容的功能也可以使用。要了解如何在当前的 web 服务器中支持此功能，请阅读关于子请求（subrequests）的注释。

可以在下面的链接中了解更多关于在 Netscape Enterprise Server（NES）中设置 PHP 的信息：» http://benoit.noss.free.fr/php/install-php4.html。

要在 Sun JSWS/Sun ONE WS/iPlanet/Netscape web 服务器中编译 PHP，请为 --with-nsapi=[DIR] 输入合适的安装目录。默认的目录通常是 /opt/netscape/suitespot/。还可以阅读 /php-xxx-version/sapi/nsapi/nsapi-readme.txt。

  1. 从 » http://www.sunfreeware.com/ 或其它下载站点安装下面的软件包：

    • autoconf-2.13
    • automake-1.4
    • bison-1_25-sol26-sparc-local
    • flex-2_5_4a-sol26-sparc-local
    • gcc-2_95_2-sol26-sparc-local
    • gzip-1.2.4-sol26-sparc-local
    • m4-1_4-sol26-sparc-local
    • make-3_76_1-sol26-sparc-local
    • mysql-3.23.24-beta（如果想要 mysql 支持）
    • perl-5_005_03-sol26-sparc-local
    • tar-1.13(GNU tar)

  2. 请确认 PATH 变量包含适当的目录 PATH=.:/usr/local/bin:/usr/sbin:/usr/bin:/usr/ccs/bin，并使用 export PATH命令将其导出为环境变量。
  3. gunzip php-x.x.x.tar.gz（如果使用 .gz 版本，否则跳到 4）
  4. tar xvf php-x.x.x.tar
  5. 进入 PHP 解压缩后的目录： cd ../php-x.x.x

  6. 在下面的步骤中，请确认 Netscape 服务器安装在 /opt/netscape/suitespot/ 目录中。否则，将下面命令中的该路径修改为正确的路径并运行：

    ./configure --with-mysql=/usr/local/mysql \
--with-nsapi=/opt/netscape/suitespot/ \
--enable-libgcc

  7. 运行 make，然后运行 make install。

在执行了基础的安装并阅读相应的 Readme 文件后，还需要执行一些额外的配置步骤。

Sun/iPlanet/Netscape 的配置说明

首先需要为 LD_LIBRARY_PATH 环境变量添加一些路径，以便服务器找到所需的共享库。可以使用 web 服务器的启动脚本很好的完成这一工作。启动脚本通常位于：/path/to/server/https-servername/start。或许需要编辑其配置文件，它位于：/path/to/server/https-servername/config/。

  1. 添加下面一行到 mime.types（可以在管理服务器中添加）：

    type=magnus-internal/x-httpd-php exts=php

  2. 编辑 magnus.conf（若服务器 >= 6）或 obj.conf（若服务器 < 6）并添加下述内容。shlib 的值根据系统的配置会有所不同。它可能类似于 /opt/netscape/suitespot/bin/libphp4.so。应该在 mime types init后添加如下两行内容：

    Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="/opt/netscape/suitespot/bin/libphp4.so"
Init fn="php4_init" LateInit="yes" errorString="Failed to initialize PHP!" [php_ini="/path/to/php.ini"]
    （PHP >= 4.3.3）php_ini 参数是可选的。但是若使用它，便可以将 php.ini 放到 web 服务器的配置目录中去。

  3. 在 obj.conf 中配置默认对象（对于虚拟服务器的类 [版本 6.0+] 是在 vserver.obj.conf中）：

    <Object name="default">
.
.
.
.#注意 下面一行添加在所有"ObjectType"之后，所有"AddLog"之前
Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...]
.
.
</Object>
    （PHP >= 4.3.3）作为附加的参数，可以在 php.ini 中添加一些特别的配置选项。例如可以设置 docroot="/path/to/docroot" 指向 php4_execute 被调用的上下文（context）。对于布尔 ini 键值，请使用 0/1 作为其值，而不是 "On"、"Off" 等（它们是无效的），例如，使用 zlib.output_compression=1，而不应使用 zlib.output_compression="On"。

  4. 本步骤仅在需要配置一个由 PHP 脚本组成的目录时由必要执行（类似于一个 cgi-bin目录）：

    <Object name="x-httpd-php">
ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
Service fn=php4_execute [inikey=value inikey=value ...]
</Object>
    之后，可以在管理服务器中配置一个目录，分配给它 x-httpd-php 风格（style）。这样在该目录中的所有文件都会被当作 PHP 来执行。这样就能很方便的将 PHP 文件更名为 .html以隐藏 PHP。

  5. 认证的设置：PHP 认证不能与其它任何类型的认证一起工作。所有认证被传递到 PHP 脚本。要为整个服务器配置 PHP 认证，在默认对象中添加下面一行：

    <Object name="default">
AuthTrans fn=php4_auth_trans
.
.
.
</Object>

  6. 要在单一目录使用 PHP 认证，添加如下内容：

    <Object ppath="d:\path\to\authenticated\dir\*">
AuthTrans fn=php4_auth_trans
</Object>

Note:

PHP 使用的堆栈大小取决于 web 服务器的配置。如果运行很大的 PHP 脚本时程序崩溃，推荐在 Admin Server（在"MAGNUS EDITOR"一节）中增大此项。

CGI 环境和对 php.ini 推荐的修改

当编写 PHP 脚本时，应特别注意 Sun JSWS/Sun ONE WS/iPlanet/Netscape 是一个多线程 web 服务器。因此，所有请求都运行在相同的进程空间（Web 服务器自己的空间），该空间仅有一套环境变量。如果想获得 CGI 变量，例如 PATH_INFO、HTTP_HOST 等，使用原有的 PHP 3.x 的方式（getenv()），或使用类似的方式（注册全局变量到环境变量，$_ENV），都是不可行的。只能获得运行中的 web 服务器的环境变量，而不能获得任何有效的 CGI 变量！

Note:

为什么在环境中存在（无效的）CGI 变量？

答：这是因为从管理服务器中启动 web 服务器进程时，运行了 web 服务器的启动脚本，它事实上是一个 CGI 脚本（管理服务器中的一个 CGI 脚本！）。这便是为什么启动的 web 服务器包含一些 CGI 变量。可以尝试不从管理服务器启动 web 服务器，用 root 用户登录使用命令行手动启动它，会发现这些 CGI 形式的变量不复存在。

要在 PHP 4.x 中正确获得 CGI 变量，仅需修改脚本使用超级全局变量 $_SERVER。如果老脚本中使用了 $HTTP_HOST 等变量，应该在 php.ini 中打开 register_globals，并且要修改变量顺序（注意：从中删除 "E"，因为不需要这里的环境变量）：

variables_order = "GPCS"
register_globals = On

错误页面及自造目录列表的特别使用 (PHP >= 4.3.3)

可以使用 PHP 为 "404 Not Found" 或类似的错误代码生成错误页面。将下面几行添加到 obj.conf 中以覆盖默认的错误页面：

Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value inikey=value...]
XXX 是 HTTP 错误代码。请删除任何可能干扰 Error 设置的指令。如果想为所有可能存在的错误提供一个页面，则将 code 参数删除。脚本可以通过 $_SERVER['ERROR_TYPE'] 获得 HTTP 状态代码。

另一种可能是生成自造目录列表。只要创建一个 PHP 脚本，来显示目录列表 并在 obj.conf 中为 type="magnus-internal/directory" 将相应的默认 Service 行替换为：

Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/script.php" [inikey=value inikey=value...]
错误和目录列表页面中，原始的 URI 和翻译的 URI 均被分别储存在 $_SERVER['PATH_INFO'] 和 $_SERVER['PATH_TRANSLATED'] 变量中。

关于 nsapi_virtual()和子请求的注意事项（PHP >= 4.3.3）

NSAPI 模块现在支持 nsapi_virtual() 函数（别名： virtual()），用来在 web 服务器上创建子请求（subrequests）和在 web 页面插入请求的结果。此函数使用了一些 NSAPI 中还没有文档说明的函数。在 Unix 下，该模块自动查找需要的函数，若它们存在则使用它们。若不存在，函数 nsapi_virtual() 被禁用。

Note:

但是要注意，对 nsapi_virtual() 的支持是试验性质的！

Unix 平台的 Lighttpd 1.4
CGI 和命令行设置
Unix 系统下的安装


CGI 和命令行设置

默认为将 PHP 编译为 CLI 和 CGI 程序。这将建立一个命令行解释器，可用于 CGI 处理或非 web 相关的 PHP 脚本。如果用户运行着一个 PHP 模块支持的 web 服务器，那通常为性能考虑应该使用模块方式。不过 CGI 版可以使 Apache 用户用不同的用户 ID 运行不同的 PHP 页面。

Warning

服务器使用 CGI 方式进行部署可能存在几个公开的缺陷。请阅读 CGI 安全一章 以学习 如何抵御这些攻击。

测试

如果将 PHP 编译为 CGI 程序，可以通过键入 make test 来测试你的编译。测试一下编译永远是个好主意。这样就可以在你的平台上及早捕捉到 PHP 的问题而不是以后再费力的解决。

使用变量

某些服务器提供的环境变量没有定义在当前的 » CGI/1.1 标准中。只有下列变量定义在其中： AUTH_TYPE， CONTENT_LENGTH, CONTENT_TYPE, GATEWAY_INTERFACE, PATH_INFO, PATH_TRANSLATED, QUERY_STRING, REMOTE_ADDR, REMOTE_HOST, REMOTE_IDENT, REMOTE_USER, REQUEST_METHOD, SCRIPT_NAME, SERVER_NAME, SERVER_PORT, SERVER_PROTOCOL 和 SERVER_SOFTWARE。其它的变量均作为"供应商扩展（vendor extensions）"来对待。

Sun Solaris 上的 Sun、iPlanet 和 Netscape 服务器
针对 HP-UX 平台的安装提示
Unix 系统下的安装


针对 HP-UX 平台的安装提示

本节包括在 HP-UX 平台下安装 PHP 的说明和提示。

在 HP-UX 系统下安装 PHP 有两个选择，一是编译，二是安装预编译的可执行包。

官方发布的预编译包可在此地址搜索：» http://software.hp.com/。

在重新编写本节手册之前，在 HP-UX 系统下编译 PHP（以及相关扩展）的文档已被删除。目前请参考此外部文档：» Building Apache and PHP on HP-UX 11.11。

CGI 和命令行设置
在 OpenBSD 系统下的安装
Unix 系统下的安装


在 OpenBSD 系统下的安装

本章节的内容和提示仅限于将 PHP 安装到 » OpenBSD 3.6 系统上。

使用二进制包安装

使用二进制包安装 PHP 到 OpenBSD 系统上是被推荐的同时也是最简单的方法。PHP 核心包已经从其他模块中分离出来了并且每个模块可以被独立的安装／卸载而不影响其他模块。所有这些安装 PHP 需要的文件可以在 OpenBSD 光盘或者在 FTP 站点上找到。

需要安装的 PHP 核心包的文件是 php4-core-4.3.8.tgz，它包含了基本的引擎（包括 gettext 和 iconv）。其次，可能还需要安装一些模块包，如：php4-mysql-4.3.8.tgz 或 php4-imap-4.3.8.tgz。需要使用命令 phpxs 去激活它，并且再通过修改 php.ini 文件来屏蔽他们。

Example #1 在 OpenBSD 系统下的软件包的安装示例

# pkg_add php4-core-4.3.8.tgz
# /usr/local/sbin/phpxs -s
# cp /usr/local/share/doc/php4/php.ini-recommended /var/www/conf/php.ini
  （加入 mysql 包）
# pkg_add php4-mysql-4.3.8.tgz
# /usr/local/sbin/phpxs -a mysql
  （加入 imap 包）
# pkg_add php4-imap-4.3.8.tgz
# /usr/local/sbin/phpxs -a imap
  （测试一下删除 mysql 包）
# pkg_delete php4-mysql-4.3.8
# /usr/local/sbin/phpxs -r mysql
  （安装 PEAR 库）
# pkg_add php4-pear-4.3.8.tgz

阅读用户手册中的 » packages(7) 部分，可以得到更多 OpenBSD 系统下有关二进制软件包的信息。

使用软件包

同样可以使用» 软件包目录（ports tree）来编译 PHP 的源代码。然而，这样的安装方式仅仅是建议对 OpenBSD 非常熟悉的高级用户去做。PHP4 的软件包被分别分为了两个子目录：core 和 extensions。其中 extensions 目录产生了所有 PHP 所支持的子模块。如果不希望创建并且使用这些模块中的某些模块，请使用 FLAVOR no_* 参数。例如，如果希望跳过编译 imap 模块，设置 FLAVOR 为 no_imap即可。

常见问题

  • 默认安装的 Apache 运行于 » chroot(2) jail 内，将限制 PHP 脚本只能访问 /var/www下面的文件。需要建立 /var/www/tmp 目录来存放 PHP session 文件，或使用其它的 session 后端。此外，数据库套接字需要被放入 jail 或者侦听 localhost接口。如果使用网络函数，某些 /etc 下面的文件例如 /etc/resolv.conf 和 /etc/services 需要被移动到 /var/www/etc 中去。OpenBSD PEAR 包会自动安装到正确的 chroot 目录中，因此不需要作特殊改动。有关 OpenBSD Apache 的更多信息见 OpenBSD FAQ。
  • 对应于 » gd 扩展的 OpenBSD 3.6 包需要预先安装 XFree86。如果不想使用那些需要 X11 的字体特性，则安装 php4-gd-4.3.8-no_x11.tgz 包来替代之。

早期发布版本

早期的 OpenBSD 系统使用 FLAVORS 系统把 PHP 连接为静态模式。自从使用这种方法编译就造成了问题：很难制作二进制软件包。仍然可以使用早期稳定的 ports trees，但这种方式已经不被 OpenBSD 小组所支持。如果对此有任何建议和意见，软件包当前的维护人是 Anil Madhavapeddy（avsm at openbsd dot org）。

针对 HP-UX 平台的安装提示
针对 Solaris 的安装提示
Unix 系统下的安装


针对 Solaris 的安装提示

本节包含了在 Solaris 系统上安装 PHP 的说明和提示。

需要的软件

默认安装的 Solaris 系统经常缺少 C 语言编译器和其相关工具。部分工具必须使用该工具的 GNU 版本，原因请阅读 FAQ。

要解压缩 PHP 发行包，需要：

  • tar
  • gzip 或
  • bzip2

要编译 PHP，需要：

  • gcc（推荐使用，其它 C 编译器也许也能用）
  • make
  • GNU sed

要编译更多扩展库或自行开发 PHP 代码，可能还需要：

  • flex（直到 PHP 5.2）
  • re2c
  • bison
  • m4
  • autoconf
  • automake
此外，还需要安装（甚至编译）针对自己的配置所需的软件，例如 Oracle 或 MySQL。

使用软件包

可以使用 pkgadd 来安装大部分需要的软件来简化 Solaris 安装过程。Solaris 11 Express 下的映像打包系统（Image Packaging System，IPS）也包含了大多数安装所需的部件，通过 pkg 命令。

在 OpenBSD 系统下的安装
Debian GNU/Linux 安装说明
Unix 系统下的安装


Debian GNU/Linux 安装说明

本节包含了在 » Debian GNU/Linux 下安装 PHP 的说明和提示。

Warning

这里不支持非官方的第三方发行包。任何错误应报告给 Debian 开发组，除非该错误在使用从官方» 下载的最新版时仍能重现。

尽管在 Unix 下编译 PHP 的指示也适用于 Debian，本节包含有一些特定信息，例如使用 apt-get 或者 aptitude 命令。本节中这两条命令可以互换。

使用 APT

首先，注意其它有关的包可能需要 libapache2-mod-php5 集成入 Apache 2，以及 PEAR 的 php-pear。

其次，在安装一个包之前，最好先确定该包是最新版。通常可以运行命令 apt-get update。

Example #1 Debian 下将 PHP 安装入 Apache 2 的例子

# apt-get install php5-common libapache2-mod-php5 php5-cli

APT 将自动安装 Apache 2 的 PHP 5 模块以及所有依赖的库并激活之。应重启动 Apache 以使更改生效，例如：

Example #2 安装完 PHP 后停止并启动 Apache

# /etc/init.d/apache2 stop
# /etc/init.d/apache2 start

更好地控制配置

上一节中 PHP 仅安装了核心模块。很可能还需要更多模块，例如 MySQL，cURL，GD 等。这些模块也可以通过 apt-get 命令安装。

Example #3 取得 PHP 附加软件包的列表

# apt-cache search php5
# aptitude search php5
# aptitude search php5 |grep -i mysql

以上命令的输出中列出了很多的包，其中有几个针对 PHP 的模块例如 php5-cgi，php5-cli 以及 php5-dev。决定好要安装哪些之后可以用 apt-get 或者 aptitude 来安装。Debian 会进行倚赖性检查，会给出提示，例如安装 MySQL 和 cURL：

Example #4 安装 PHP 的 MySQL 和 cURL 支持

# apt-get install php5-mysql php5-curl

APT 会自动把适当的行添加到不同的 php.ini 相关文件中去，例如 /etc/php5/apache2/php.ini，/etc/php5/conf.d/pdo.ini 等，并且根据扩展，还会添加类似 extension=foo.so 的内容。不过还是需要重新启动 web 服务器（例如 Apache）以使这些改动生效。

常见问题

  • 如果 PHP 脚本没有通过 web 服务器被解析，则有可能是 PHP 没有被加入到 web 服务器的配置文件中，在 Debian 中可能是 /etc/apache2/apache2.conf 或类似文件。具体内容参见 Debian 手册。
  • 如果某扩展貌似已经安装，但其函数却又未定义，确保合适的 ini 文件已被加载并且 web 服务器在安装后重新启动过。
  • 在 Debian（以及其它 Linux 变种）下有两个基本命令来安装包：apt-get 和 aptitude。不过要解释这两个命令的细微区别已超出本手册范围。
针对 Solaris 的安装提示
Mac OS X 系统下的安装
Unix 系统下的安装


Mac OS X 系统下的安装

Table of Contents

  • 使用软件包
  • 使用内置的 PHP
  • 在 Mac OS X 下编译 PHP

本章包括在 Mac OS X 平台下安装 PHP 的说明和提示。Mac OS X有内建支持的 PHP，编译安装类似于 Unix 系统下的安装。

Debian GNU/Linux 安装说明
使用软件包
安装与配置


使用软件包

Mac OS X 下有几个预编译和打包的 PHP 版本。可以通过它使用标准的配置的 PHP，但是若需要不同的功能集（比如一个安全服务器，或者一个不同的数据库驱动程序），可能需要自己编译 PHP 和／或 web 服务器。如果不熟悉如何自己编译软件，可以试着找一下包含自己所需功能的 PHP 预编译版本。

下面的资源提供了在 Mac OS 上易于安装的软件包和预编译的二进制 PHP。

  • MacPorts: » http://www.macports.org/
  • Liip: » http://php-osx.liip.ch/
  • Fink: » http://www.finkproject.org/
  • Homebrew: » https://github.com/Homebrew/homebrew-php

Mac OS X 系统下的安装
使用内置的 PHP
Mac OS X 系统下的安装


使用内置的 PHP

从 OS X 10.0.0 版本开始，PHP 作为 Mac 机的标准配置被提供。在默认的 web 服务器中启用 PHP，只需将 Apache 配置文件 httpd.conf 中的几行配置指令最前面的注释符号去掉，而 CGI 或 CLI 默认都可使用（可以很容易的被终端程序使用）。

按照以下的使用说明，可以快速的建立一个本地 PHP 开发环境。强烈建议将 PHP 升级到最新的版本。在大多数活跃的软件中， 新的版本会修复错误和添加新的功能，PHP 也是如此。请参见相应的 Mac OS X 安装文档，以进一步了解详细的信息。以下的说明以初学者的角度来详细描述如何操作来得到一个缺省的运行环境。建议所有的用户都编译或者安装一个新的打包版本。

标准的安装类型为 mod_php，在 Mac OS X 的 Apache web 服务器（默认 web 服务器，可以从系统设置中访问）中启用 PHP 包含以下的步骤：

  1. 找到并打开Apache的配置文件。默认情况下，这个配置文件的位置是： /private/etc/apache2/httpd.conf。 使用 Finder 或者 Spotlight 来找到这个文件可能不是很容易的事情，因为在默认情况下它一般是 root 用户拥有所有权的私有文件。

    Note: 要打开这个文件，可以在命令行下面使用基于 Unix 的文本编辑器，例如 nano，因为他的属主是 root，所以我们需要使用 sudo 来打开（以 root 用户权限）。例如我们在 Terminal 程序中敲入下面的指令（操作后，会提示输入密码）：sudo nano /private/etc/apache2/httpd.conf 注意 nano 中的命令：^w（搜索），^o（保存），以及 ^x（退出）。^ 表示 Ctrl 键。

    Note: 在Mac OS X 10.5之前的版本中捆绑的是旧版本的 PHP 和 Apache。因此在旧的计算机中 Apache 配置文件的位置可能是 /etc/httpd/httpd.conf。

  2. 使用文本的编辑器取消注释（删除前面的 #）看起来类似于下面的行（这两行常常不在一起，需要在文件中找到这两行）：

    # LoadModule php5_module libexec/httpd/libphp5.so

# AddModule mod_php5.c
    注意位置／路径。如果在以后重新编译了 PHP，以上文件应被更换或者注释掉。

  3. 确保将所需要的文件扩展名解析为 PHP（例如：.php .html 以及 .inc），否则不能正常运行。

    由于以下的配置已经写入 httpd.conf（自 Mac Panther 版起），一旦 PHP 被启用则 .php 文件会被自动解析为 PHP 脚本。

    <IfModule mod_php5.c>
    # If php is turned on, we respect .php and .phps files.
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps

    # Since most users will want index.php to work we
    # also automatically enable index.php
    <IfModule mod_dir.c>
        DirectoryIndex index.html index.php
    </IfModule>
</IfModule>

    Note:

    在 OS X 10.5（Leopard）以前版本中，捆绑的是 PHP 4 而不是 PHP 5，因此上面的配置指令稍有不同，需要将 5 更改为 4。

  4. 确保 DirectoryIndex 加载了所需的默认索引文件。 这个也是在 httpd.conf 中设置的。 通常情况下使用 index.php 和 index.html 。默认情况下 index.php 会被启用，因为在我们上面的配置指令中写明了。根据实际情况可以做相应的调整。
  5. 设置 php.ini 的位置或者使用默认的位置。 Mac OS X 上通常默认的位置是 /usr/local/php/php.ini ，调用 phpinfo() 也可以得到此信息。如果没有使用 php.ini，PHP 将使用所有的默认值。参见常见问题中的寻找 php.ini。
  6. 定位或者设置 DocumentRoot。 这是网站所有文件的根目录。此目录中的文件由 web 服务器提供服务，从而使得 PHP 文件将在输出到浏览器之前解析为 PHP 脚本。通常情况下默认的路径是 /Library/WebServer/Documents，但是可以根据需要在 httpd.conf中设置为任何其他目录。另外，用户自己的缺省 DocumentRoot 是 /Users/yourusername/Sites。
  7. 创建一个 phpinfo() 文件。

    phpinfo() 将会显示PHP的相关系统信息。可以在 DocumentRoot 下创建一个 PHP 文件，其代码如下：

    <?php phpinfo(); ?>

  8. 重启 Apache，然后从浏览器访问上面创建的文件。

    要重启Apache，可以在 shell 中执行 sudo apachectl graceful，也可以停止/启动 OS X 系统首选项中的"Personal Web Server"选项。默认情况下，从浏览器访问本地文件的 URL 一般类似于：http://localhost/info.php，或者使用：http://localhost/~yourusername/info.php 来访问用户自己 DocumentRoot 中的文件。

CLI（或者旧版本中的 CGI）一般文件名为 php ，其路径可能是 /usr/bin/php。打开一个终端，参考 PHP 手册中的 PHP 的命令行模式一章，然后执行 php -v 可以检查当前运行的 PHP 的版本。调用 phpinfo() 也会显示相关的信息。

使用软件包
在 Mac OS X 下编译 PHP
Mac OS X 系统下的安装


在 Mac OS X 下编译 PHP

参考 Unix 系统下的安装以在 Mac OS X 下编译 PHP。

使用内置的 PHP
Windows 系统下的安装
Mac OS X 系统下的安装


Windows 系统下的安装

Table of Contents

  • Install Requirements
  • PECL
  • Windows 下的 PHP 安装程序工具
  • Recommended Configuration on Windows systems
  • Manual PHP Installation on Windows
  • Windows 下 PHP 故障排除
  • Installation on old Windows systems

Installing PHP on modern Microsoft Windows systems and recommended configuration with common web servers.

Note:

If you are looking for information about older systems, such as Windows XP, 2003, 98 or Apache 1.x, see the Legacy Info section.

The Official releases of PHP on Windows are recommended for production use. However, you are welcome to build PHP from Source. You will need a Visual Studio environment. See » Step by Step Build Instructions.

  • Using PHP on Windows Command line

  • Installing PHP on Azure App Services (aka Microsoft Azure, Windows Azure, or (Windows) Azure Web Apps).

在 Mac OS X 下编译 PHP
Install Requirements
安装与配置


Install Requirements

PHP 5.5+ require at least Windows 2008/Vista, or 2008r2, 2012, 2012r2, 2016 or 7, 8, 8.1, 10. Either 32-Bit or 64-bit (aka X86 or X64. PHP does not run on Windows RT/WOA/ARM).

PHP requires the Visual C runtime(CRT). Many applications require that so it may already be installed.

PHP 5.5 and 5.6 require VC CRT 11 (Visual Studio 2012). See: » https://www.microsoft.com/en-us/download/details.aspx?id=30679

PHP 7.0+ requires VC CRT 14 (Visual Studio 2015). See: » https://www.microsoft.com/en-us/download/details.aspx?id=48145

You MUST download the x86 CRT for PHP x86 builds and the x64 CRT for PHP x64 builds.

If CRT is already installed, the installer will tell you that and not change anything.

The CRT installer supports the /quiet and /norestart command-line switches, so you can script running it.

VC11 CRT DLLs can be copied from your local machine to a remote machine(a `Copy Deployment` installation) instead of running the installer on the remote machine (such as a web server you have restricted access to). See: http://www.sitepoint.com/install-php53-windows/

VC14 CRT does not support a `Copy Deployment` installation. VC14 CRT has many more DLLs(most in files with names starting with api-*). If you can find them all and copy them, it will also work (try a tool like Resource Hacker to get a list of all the DLLs to copy).

Windows 系统下的安装
PECL
Windows 系统下的安装


PECL

PECL extensions are pre-built for Windows and available from: » http://windows.php.net/downloads/pecl/releases/

Some extensions use features specific to some Unix systems and so are not available on Windows. Otherwise, all extensions are available for Windows.

Install Requirements
Windows 下的 PHP 安装程序工具
Windows 系统下的安装


Windows 下的 PHP 安装程序工具

PHP 安装工具

如果你想安装PHP，一些常见的PHP应用程序，使用的是IIS，最简单的方式是使用微软的 Web 平台安装程序（WebPI）。

Windows 下使用 Apache 安装 PHP 应用程序：XAMPP、WampServer 和 BitNami。

PECL
Recommended Configuration on Windows systems
Windows 系统下的安装


Recommended Configuration on Windows systems

OpCache

Highly Recommended that you enable OpCache. This extension is included with PHP for Windows. It compiles and optimizes PHP scripts and caches them in memory so that they aren't compiled every time the page is loaded.

In your php.ini, set

Example #1 Recommended OpCache configuration

zend_extension=php_opcache.dll
opcache.enable=On
opcache.cli_enable=On
And restart your web server. For more info, see: OpCache Configuration

WinCache

Recommended that you use WinCache if using IIS, especially if in a shared web hosting environment or using networked file storage (NAS). All PHP Applications automatically benefit from WinCache's file cache feature. File system operations are cached in memory. WinCache also can cache user objects in memory and share them between php.exe or php-cgi.exe processes (share objects between requests). Many major web applications have a plugin or extension or configuration option to make use of the WinCache user object cache. If you need high performance, you should use the object cache in your applications. See: » http://pecl.php.net/package/WinCache to download a WinCache DLL (or tgz) to your PHP extensions directory (extensions_dir in your php.ini). In your php.ini, set

Example #2 Recommended WinCache configuration

extension=php_wincache.dll
wincache.fcenabled=1
wincache.ocenabled=1
For more info, see: » http://php.net/manual/en/wincache.configuration.php

IIS Configuration

In IIS Manager, Install FastCGI module and add a handler mapping for `.php` to the path to PHP-CGI.exe (not PHP.exe)

You may use the APPCMD command line tool to script IIS configuration.

Database

You'll probably need a Database Server. Popular databases provide PHP extensions to use them. If your web site doesn't get a lot of traffic, you can run your database server on the same server as your web server. Many popular database servers run on Windows.

PHP includes mysqli and pdo_mysql extensions. PHP 5.5 and 5.6 include mysql extension (deprecated in 7.0).

See » https://dev.mysql.com/downloads/windows/

Windows 下的 PHP 安装程序工具
Manual PHP Installation on Windows
Windows 系统下的安装


Manual PHP Installation on Windows

Choose Web Server

  • IIS is builtin to Windows. On Windows Server, use Server Manager to add the IIS role. Be sure to include the CGI Role Feature. On Windows Desktop, use Control Panel's Add/Remove Programs to add IIS. See: » https://msdn.microsoft.com/en-us/library/ms181052%28v=vs.80%29.aspx?f=255&MSPPError=-2147217396 For desktop web apps and web-development, you can also use IIS/Express or PHP Desktop

    Example #1 Command line to configure IIS and PHP

    @echo off

    REM download .ZIP file of PHP build from http://windows.php.net/downloads/
    REM
    REM path to directory you decompressed PHP .ZIP file into
set phpdir=c:\php
set phppath=php-5.6.19-nts-Win32-VC11-x86

REM Clear current PHP handlers
%windir%\system32\inetsrv\appcmd clear config /section:system.webServer/fastCGI
%windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers /-[name='PHP_via_FastCGI']

REM Set up the PHP handler
%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI /+[fullPath='%phpdir%\%phppath%\php-cgi.exe']
%windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers /+[name='PHP_via_FastCGI',path='*.php',verb='*',modules='FastCgiModule',scriptProcessor='%phpdir%\%phppath%\php-cgi.exe',resourceType='Unspecified']
%windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers /accessPolicy:Read,Script

REM Configure FastCGI Variables
%windir%\system32\inetsrv\appcmd set config -section:system.webServer/fastCgi /[fullPath='%phpdir%\%phppath%\php-cgi.exe'].instanceMaxRequests:10000
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%phpdir%\%phppath%\php-cgi.exe'].environmentVariables.[name='PHP_FCGI_MAX_REQUESTS',value='10000']"
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='%phpdir%\%phppath%\php-cgi.exe'].environmentVariables.[name='PHPRC',value='%phpdir%\%phppath%\php.ini']"
    How to manually configure IIS

  • There are several builds of Apache2 for Windows. We support ApacheLounge, but other options include XAMPP, WampServer and BitNami, which provide automatic installer tools. You may use mod_php or mod_fastcgi to load PHP on Apache. If you use mod_php, you MUST use a TS build of Apache built with same version of Visual C and same CPU (x86 or x64). How to manually configure Apache2

Choose Build

Download PHP production releases from » http://windows.php.net/download/. A lot of testing and optimization is already done on the snapshot and qa releases, but you are welcome to help us do more. There are 4 types of PHP builds:

  • Thread-Safe(TS) - use for single process web serves, like Apache with mod_php

  • Non-Thread-Safe(NTS) - use for IIS and other FastCGI web servers (Apache with mod_fastcgi) and recommended for command-line scripts

  • x86 - production use of PHP 5.5 or 5.6 or 7.0.

  • x64 - production use of PHP 7.0+ unless its a 32-bit only version of Windows. 5.5 and 5.6 x64 are expiremental.

Recommended Configuration on Windows systems
Windows 下 PHP 故障排除
Windows 系统下的安装


Windows 下 PHP 故障排除

检查临时目录权限

  1. 在"文件管理器"中右键单击"临时目录"以获得权限。

  2. IIS, 检查用户的 IIS_User 是否有修改文件的权限。可以从配置或 php info 中获取临时目录的位置。

Manual PHP Installation on Windows
Installation on old Windows systems
Windows 系统下的安装


Installation on old Windows systems

This section applies to Windows 98/Me and Windows NT/2000/XP/2003. PHP will not work on 16 bit platforms such as Windows 3.1 and sometimes we refer to the supported Windows platforms as Win32.

Note:

Windows XP/2003 are no longer supported as of PHP 5.5.0.

Note:

Windows 98/Me/NT4/2000 are no longer supported as of PHP 5.3.0.

Note:

Windows 95 is no longer supported as of PHP 4.3.0.

If you have a development environment such as Microsoft Visual Studio, you can also PHP from the original source code.

Once you have PHP installed on your Windows system, you may also want to load various extensions for added functionality.

手工安装步骤

本章包含有在 Microsoft Windows 中手工安装和配置 PHP 的指示。

选择和下载 PHP 发行包

从 » PHP for Windows: Binaries and Sources 页面下载 PHP 的 zip 二进制发行包。有几个不同版本，根据所用 web 服务器选择合适的版本： follow the detailed guide on the » download page.

PHP 压缩包的结构和内容

将 zip 包解压缩到自己选择的目录，例如 C:\PHP\。此目录和文件结构类似于：

Example #1 PHP 5 压缩包的结构

c:\php
   |
   +--dev
   |  |
   |  |-php5ts.lib                 -- php5.lib 的非线程安全版本
   |
   +--ext                          -- PHP 扩展库的 DLL 文件目录
   |  |
   |  |-php_bz2.dll
   |  |
   |  |-php_cpdf.dll
   |  |
   |  |-...
   |
   +--extras                       -- 空
   |
   +--pear                         -- PEAR 的初始版本
   |
   |
   |-go-pear.bat                   -- PEAR 安装脚本
   |
   |-...
   |
   |-php-cgi.exe                   -- CGI 可执行文件
   |
   |-php-win.exe                   -- 无窗口执行脚本的可执行文件
   |
   |-php.exe                       -- PHP 命令行可执行文件（CLI）
   |
   |-...
   |
   |-php.ini-development           -- 默认的 php.ini 设置
   |
   |-php.ini-production            -- 推荐的 php.ini 设置
   |
   |-php5apache2_2.dll             -- 非线程安全版本中无此文件
   |
   |-php5apache2_2_filter.dll      -- 非线程安全版本中无此文件
   |
   |-...
   |
   |-php5ts.dll                    -- PHP 核心 DLL（php5.dll 的非线程安全版本）
   |
   |-...

以下是 PHP zip 包中包含的模块和可执行文件列表：

  • go-pear.bat - PEAR 安装脚本。更多内容参见» 安装 PEAR。

  • php-cgi.exe - CGI 可执行文件，可用于 IIS 上以 CGI 或者 FastCGI 方式运行 PHP。

  • php-win.exe - PHP 可执行文件，可运行 PHP 脚本而不打开命令行窗口（例如使用 Windows 图形界面的 PHP 程序）。

  • php.exe - PHP 可执行文件，用于命令行界面运行 PHP 脚本（CLI）。

  • php5apache2_2.dll - Apache 2.2.X 模块。

  • php5apache2_2_filter.dll - Apache 2.2.X 过滤器。

修改 php.ini 文件

解压缩 PHP 的包之后，将 php.ini-production 拷贝为 同一目录下的 php.ini。如有必要，也可以将 php.ini 放到其它地方，但是需要更多配置步骤，具体见配置文件。

php.ini 文件决定 PHP 如何配置自身以及如何在其工作环境下运行。以下 php.ini 文件中的配置指令有助于使 PHP 更好地运行于 Windows 之中。有一些是可选项。还有很多其它指令也可能与用户环境有关，更多信息见 php.ini 配置选项列表。

必须的指令：

  • extension_dir = <指向扩展库目录的路径> - extension_dir 需要指向存放 PHP 扩展库文件的目录。可以是绝对路径（如 "C:\PHP\ext"）或相对路径（如 ".\ext"）。在 php.ini 文件中要加载的扩展库都必须在 extension_dir 所指定的目录之中。

  • extension = xxxxx.dll - 对每个需要激活的扩展，都需要一行相应的 "extension=" 语句来说明 PHP 启动时加载 extension_dir 目录下的哪些扩展。

  • log_errors = On - PHP 有错误日志的功能可以将错误报告发送到一个文件中，或者系统服务中（例如系统日志），与下面的 error_log 指令配合工作。在 IIS 下运行时，log_errors 应被激活，并且配合有效的 error_log。

  • error_log = <指向错误日志文件的路径> - error_log 需要指向一个具有绝对或相对路径的文件名用于记录 PHP 的错误日志。Web 服务器需要对此文件有可写权限。最常用的位置是各种临时目录，例如 "C:\inetpub\temp\php-errors.log"。

  • cgi.force_redirect = 0 - 在 IIS 下运行时需要关闭此项指令。这是个在许多其它 web 服务器中都需要激活的目录安全功能，但是在 IIS 下如果激活则会导致 PHP 引擎在 Windows 中出错。

  • cgi.fix_pathinfo = 1 - 此指令可以允许 PHP 遵从 CGI 规则访问真实路径信息。IIS 的 FastCGI 实现需要激活此指令。

  • fastcgi.impersonate = 1 - IIS 下的 FastCGI 支持模拟呼叫用户方安全令牌的能力。这使得 IIS 可以定义请求方的安全上下文。

  • fastcgi.logging = 0 - FastCGI 日志在 IIS 下应被关闭。如果激活，则任何类的任何消息都被 FastCGI 视为错误条件从而导致 IIS 产生 HTTP 500 错误。

可选指令：

  • max_execution_time = ## - 此指令设定任何脚本所能够运行的最长时间。默认值是 30 秒。如果 PHP 程序需要更多时间运行则增大此值。

  • memory_limit = ###M - PHP 进程能够占用的内存，单位为兆字节。默认值是 128M，对大多数程序都够用了。某些复杂程序可能需要更多。

  • display_errors = Off - 此指令设定 PHP 是否将任何错误信息包含在返回给 web 服务器的数据流中。如果设定为 "On"，则 PHP 将任何由 error_reporting 指令所定义的错误信息作为错误数据流发给 web 服务器。为安全起见，建议对在线服务器设为 "Off" 以避免泄露任何可能包含在错误消息中的安全敏感信息。

  • open_basedir = <指向目录的路径，由分号分隔> - 例如 openbasedir="C:\inetpub\wwwroot;C:\inetpub\temp"。此指令指定了允许 PHP 进行文件系统操作的目录。任何对这些目录之外的文件操作都会导致错误。此指令在共享主机环境中特别有用，可以阻止 PHP 脚本访问任何其网站根目录之外的文件。

  • upload_max_filesize = ###M 和 post_max_size = ###M - 分别是上传文件的最大大小和 POST 方法提交数据的最大大小。如果 PHP 程序需要上传大型数据例如照片和视频文件，则应提高这两项的值。

至此已在系统中安装了 PHP。下一步是选择一种 web 服务器并且使其能够运行 PHP。在目录中选择 web 服务器。

除了可在 web 服务器中运行 PHP 之外，PHP 还可以在命令行运行，如同 .BAT 批处理脚本一样。详见 Windows 下的 PHP 命令行方式。

Microsoft IIS

本部分将具体指导如何在微软 Internet 信息服务（IIS）上安装 PHP。

  • 在 IIS 5.1 和 IIS 6.0 上手工安装 PHP
  • 在 IIS 7.0 及更高版本上手工安装 PHP

Microsoft IIS 5.1 和 IIS 6.0

本章包含有在 Windows XP 和 Windows Server 2003 下的 Internet 信息服务（IIS）5.1 和 IIS 6.0 中安装 PHP 的指南。有关在 Windows Vista，Windows Server 2008，Windows 7 以及 Windows Server 2008 R2 下的 IIS 7.0 以及更高版本中安装 PHP 的指南见 Microsoft IIS 7.0 及更高版本一章。

配置 IIS 以处理 PHP 请求

根据手工安装步骤的说明下载和安装 PHP。

Note:

在使用 IIS 时推荐使用非线程安全的 PHP。可以在 » PHP for Windows: Binaries and Sources Releases 下载。

按以下示例在 php.ini 文件中配置 针对 CGI- 和 FastCGI- 的指令：

Example #2 php.ini 中的 CGI 和 FastCGI 设定

fastcgi.impersonate = 1
fastcgi.logging = 0
cgi.fix_pathinfo=1
cgi.force_redirect = 0

下载并安装 » FastCGI for IIS。有 32 位和 64 位平台的，根据用户平台选择相应的下载。

用以下命令配置 FastCGI 扩展处理 PHP 请求。用指向 php-cgi.exe 文件的绝对路径替换其中的 "-path" 的参数。

Example #3 配置 FastCGI 扩展以处理 PHP 请求

cscript %windir%\system32\inetsrv\fcgiconfig.js -add -section:"PHP" ^
-extension:php -path:"C:\PHP\php-cgi.exe"

此命令将创建对应于 *.php 文件后缀的 IIS 脚本映射，则所有以 *.php 结尾的 URL 都会被 FastCGI 扩展处理。此外还配置了 FastCGI 扩展使用 php-cgi.exe 可执行文件来处理 PHP 请求。

Note:

至此所需的安装和配置步骤就完成了。以下剩余的指示是可选项，但是强烈推荐以使得在 IIS 上达到最佳的 PHP 功能和性能。

角色扮演及文件系统访问

在 IIS 中使用 PHP 建议激活 FastCGI 的角色扮演功能。此功能在 php.ini 中由 fastcgi.impersonate 指令控制。激活角色扮演后，PHP 将以 IIS 所认证的用户帐号身份进行所有的文件系统操作。这将确保即使在（同一个主机）不同的 IIS 网站下使用了同一个 PHP 进程，只要每个网站使用了不同的用户帐号作为 IIS 身份认证，则这些网站的 PHP 脚本将不能访问彼此的文件。

例如在 IIS 5.1 和 IIS 6.0 中，默认配置下的匿名认证将使用内置的用户帐号 IUSR_<MACHINE_NAME> 作为默认身份。这意味着要使得 IIS 能够运行 PHP 脚本，至少要将这些脚本的读取权限授予 IUSR_<MACHINE_NAME> 帐号。如果 PHP 程序需要对某些文件或文件夹进行写入操作，那 IUSR_<MACHINE_NAME> 帐号也需要有相对应的写入权限。

要查看哪个用户帐号被用作 IIS 匿名认证的身份，使用以下步骤：

  1. 在 Windows 开始菜单中选择"运行..."，输入"inetmgr"并点击"确定"；

  2. 在树形视图下展开"网站"节点，右键点击要使用的网站并选择"属性"；

  3. 点击"目录安全"面板；

  4. 记录下在"认证方式"对话框中的"用户名"字段。

IIS 5.1 和 IIS 6.0 的匿名认证

要修改文件及文件夹的权限，使用 Windows 资源管理器或者 icacls 命令行。

Example #4 配置文件访问权限

icacls C:\inetpub\wwwroot\upload /grant IUSR:(OI)(CI)(M)

在 IIS 中把 index.php 设定为默认文档

IIS 的默认文档用于没有指定文件名的 HTTP 请求。对于 PHP 应用来说默认文档通常为 index.php。要将 index.php 添加到 IIS 的默认文档列表中，使用以下步骤：

  1. 在 Windows 开始菜单中选择"运行..."，输入"inetmgr"并点击"确定"；

  2. 在树形视图下展开"网站"节点，右键点击要使用的网站并选择"属性"；

  3. 点击"文档"面板；

  4. 点击"添加..."按钮并在"默认内容页面"中输入"index.php"。

将 index.php 设为 IIS 的默认文档

FastCGI 和 PHP 回收配置

用以下命令配置 IIS FastCGI 对于 PHP 进程的回收设定。FastCGI 的设置 instanceMaxRequests 控制了单一的 php-cgi.exe 进程处理多少个请求之后会被 IIS 关闭。PHP 环境变量 PHP_FCGI_MAX_REQUESTS 控制了一个 php-cgi.exe 进程处理多少个请求之后会被自我回收。要确保 FastCGI 中 InstanceMaxRequests 的值小于或等于 PHP_FCGI_MAX_REQUESTS 的值。

Example #5 配置 FastCGI 和 PHP 的回收

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-InstanceMaxRequests:10000

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-EnvironmentVars:PHP_FCGI_MAX_REQUESTS:10000

FastCGI 超时设定

如果会有一些需时较长的 PHP 脚本运行，则增加超时的设定值。有两个控制超时的指令 activityTimeout 和 requestTimeout。有关这些设定的更多信息参见 » Configuring FastCGI Extension for IIS 6.0。

Example #6 配置 FastCGI 超时设定

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-ActivityTimeout:90

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-RequestTimeout:90

改变 php.ini 文件的位置

PHP 在几个位置搜索配置文件 php.ini，可以通过环境变量 PHPRC 来改变 php.ini 的默认位置。要使得 PHP 从用户指定的位置加载配置文件，使用以下命令。指向 php.ini 文件的绝对路径应作为环境变量 PHPRC 的值。

Example #7 改变 php.ini 文件的位置

cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-EnvironmentVars:PHPRC:"C:\Some\Directory\"

Microsoft IIS 7.0 及更高版本

本章包含有在 Windows Vista SP1，Windows 7，Windows Server 2008 以及 Windows Server 2008 R2下的 IIS 7.0 以及更高版本中手工安装 PHP 的指南。有关在 Windows XP 和 Windows Server 2003 下的 IIS 5.1 和 IIS 6.0 中安装 PHP 的指南见 Microsoft IIS 5.1 和 IIS 6.0 一章。

在 IIS 中激活 FastCGI 支持

默认安装的 IIS 中 FastCGI 模块被关闭。要激活其的步骤在不同版本的 Windows 下不同。

要在 Windows Vista SP1 和 Windows 7 中激活 FastCGI 支持：

  1. 在 Windows 开始菜单中选择"运行..."（或在搜索框内），输入"optionalfeatures.exe"并按"确定"（或敲回车键）；

  2. 在"Windows 功能"对话框中展开"Internet 信息服务"，"万维网服务"，"应用程序开发功能"，并选中"CGI"的选择框；

  3. 点击确定按钮并等待安装完成。

在 Windows Vista SP1 和 Windows 7 中激活 FastCGI 支持

要在 Windows Server 2008 和 Windows Server 2008 R2 中激活 FastCGI 支持：

  1. 在 Windows 开始菜单中选择 "Run:"，输入 "CompMgmtLauncher" 并点击 "Ok"；

  2. 如果在 "Roles" 节点下没有 "Web Server (IIS)" role，则点击 "Add Roles" 添加之；

  3. 如果存在 "Web Server (IIS)" role，则点击 "Add Role Services" 并激活 "Application Development" 组之下的 "CGI" 选择框；

  4. 点击 "Next" 及 "Install"，等待安装完成。

在 Windows Server 2008 和 Windows Server 2008 R2 中激活 FastCGI 支持

配置 IIS 以处理 PHP 请求

根据手工安装步骤的说明下载和安装 PHP。

Note:

在使用 IIS 时推荐使用非线程安全的 PHP。可以在 » PHP for Windows: Binaries and Sources Releases 下载。

按以下示例在 php.ini 文件中配置 针对 CGI- 和 FastCGI- 的指令：

Example #8 php.ini 中的 CGI 和 FastCGI 设定

fastcgi.impersonate = 1
fastcgi.logging = 0
cgi.fix_pathinfo=1
cgi.force_redirect = 0

通过 IIS 管理界面或者命令行工具配置对应于 PHP 的 IIS 程序映射。

使用 IIS 管理界面来创建 PHP 的程序映射

按照以下步骤在 IIS 管理界面中创建 PHP 的程序映射：

  1. 在 Windows 开始菜单中选择"运行..."，输入"inetmgr"并点击"确定"；

  2. 在 IIS 管理器中左边面板"连接"下面的树状图中选择该服务器的节点；

  3. 在中间面板下方的"功能视图"页面打开"处理程序映射"功能；

    创建 PHP 的程序映射：处理程序映射的位置

  4. 在右边"操作"面板中点击"添加模块映射..."；

  5. 在"添加模块映射"对话框中输入以下内容：

    • 请求路径(P)：*.php
    • 模块(M)：FastCgiModule
    • 可执行文件(可选)(E)：C:\[Path to PHP installation]\php-cgi.exe
    • 名称(N)：PHP_via_FastCGI

  6. 点击"请求限制(R)..."按钮并选中"仅当请求映射至以下内容时才调用处理程序(I)："然后选择"文件或文件夹(O)"；

  7. 在所有对话框中点击确定以保存配置。

创建 PHP 的程序映射：添加程序映射

使用命令行工具创建 PHP 的程序映射

用以下命令创建一个 IIS FastCGI 处理池以使 php-cgi.exe 可执行文件来处理 PHP 请求。用自己系统上指向 php-cgi.exe 文件的绝对路径来替代 fullPath 参数的值。

Example #9 创建 IIS FastCGI 处理池

%windir%\system32\inetsrv\appcmd set config /section:system.webServer/fastCGI ^
/+[fullPath='c:\PHP\php-cgi.exe']

用以下命令配置 IIS 处理针对 PHP 的请求。用自己系统上指向 php-cgi.exe 文件的绝对路径来替代 scriptProcessor 参数的值。

Example #10 创建对应于 PHP 请求的处理程序映射

%windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers ^
/+[name='PHP_via_FastCGI', path='*.php',verb='*',modules='FastCgiModule',^
scriptProcessor='c:\PHP\php-cgi.exe',resourceType='Either']

此命令创建了一个对于 *.php 文件后缀的处理程序映射，使得所有以 .php 结尾的 URL 都会被 FastCGI 模块处理。

Note:

至此所需的安装和配置步骤就完成了。以下剩余的指示是可选项，但是强烈推荐以使得在 IIS 上达到最佳的 PHP 功能和性能。

角色扮演及文件系统访问

在 IIS 中使用 PHP 建议激活 FastCGI 的角色扮演功能。此功能在 php.ini 中由 fastcgi.impersonate 指令控制。激活角色扮演后，PHP 将以 IIS 所认证的用户帐号身份进行所有的文件系统操作。这将确保即使在（同一个主机）不同的 IIS 网站下使用了同一个 PHP 进程，只要每个网站使用了不同的用户帐号作为 IIS 身份认证，则这些网站的 PHP 脚本将不能访问彼此的文件。

例如在 IIS 7 中，默认配置下的匿名认证将使用内置的用户帐号 IUSR 作为默认身份。这意味着要使得 IIS 能够运行 PHP 脚本，至少要将这些脚本的读取权限授予 IUSR 帐号。如果 PHP 程序需要对某些文件或文件夹进行写入操作，那 IUSER 帐号也需要有相对应的写入权限。

在 IIS 7 中要查看哪个用户帐号被用作匿名认证的身份，使用以下命令。将其中的 "Default Web Site" 替换为自己使用的网站名。在输出的 XML 配置单元中查找 userName 属性。（注意：要以管理员身份运行此命令行）

Example #11 确定用于 IIS 匿名认证的用户帐号

%windir%\system32\inetsrv\appcmd.exe list config "Default Web Site" ^
/section:anonymousAuthentication

<system.webServer>
  <security>
    <authentication>
      <anonymousAuthentication enabled="true" userName="IUSR" />
    </authentication>
   </security>
</system.webServer>

Note:

如果在 anonymousAuthentication 单元中没有显示 userName 属性，或者其值为一个空字符串，那意味着应用程序池的身份被用于该网站的匿名身份。

要修改文件及文件夹的权限，使用 Windows 资源管理器或者 icacls 命令行。

Example #12 配置文件访问权限

icacls C:\inetpub\wwwroot\upload /grant IUSR:(OI)(CI)(M)

在 IIS 中把 index.php 设定为默认文档

IIS 的默认文档用于没有指定文件名的 HTTP 请求。对于 PHP 应用来说默认文档通常为 index.php。要将 index.php 添加到 IIS 的默认文档列表中，使用此命令：

Example #13 将 index.php 设为 IIS 的默认文档

%windir%\system32\inetsrv\appcmd.exe set config ^
-section:system.webServer/defaultDocument /+"files.[value='index.php']" ^
/commit:apphost

FastCGI 和 PHP 回收配置

用以下命令配置 IIS FastCGI 对于 PHP 进程的回收设定。FastCGI 的设置 instanceMaxRequests 控制了单一的 php-cgi.exe 进程处理多少个请求之后会被 IIS 关闭。PHP 环境变量 PHP_FCGI_MAX_REQUESTS 控制了一个 php-cgi.exe 进程处理多少个请求之后会被自我回收。要确保 FastCGI 中 InstanceMaxRequests 的值小于或等于 PHP_FCGI_MAX_REQUESTS 的值。

Example #14 配置 FastCGI 和 PHP 的回收

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi ^
/[fullPath='c:\php\php-cgi.exe'].instanceMaxRequests:10000

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi ^
/+"[fullPath='C:\{php_folder}\php-cgi.exe'].environmentVariables.^
[name='PHP_FCGI_MAX_REQUESTS',value='10000']"

FastCGI 超时设定

如果会有一些需时较长的 PHP 脚本运行，则增加超时的设定值。有两个控制超时的指令 activityTimeout 和 requestTimeout。用以下命令修改超时设定。确保在 fullPath 的参数中使用自己系统上的 php-cgi.exe 的绝对路径。

Example #15 配置 FastCGI 超时设定

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi ^
/[fullPath='C:\php\php-cgi.exe',arguments=''].activityTimeout:"90"  /commit:apphost

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi ^
/[fullPath='C:\php\php-cgi.exe',arguments=''].requestTimeout:"90"  /commit:apphost

改变 php.ini 文件的位置

PHP 在几个位置搜索配置文件 php.ini，可以通过环境变量 PHPRC 来改变 php.ini 的默认位置。要使得 PHP 从用户指定的位置加载配置文件，使用以下命令。指向 php.ini 文件的绝对路径应作为环境变量 PHPRC 的值。

Example #16 改变 php.ini 文件的位置

appcmd.exe set config  -section:system.webServer/fastCgi ^
/+"[fullPath='C:\php\php.exe',arguments=''].environmentVariables.^
[name='PHPRC',value='C:\Some\Directory\']" /commit:apphost

Microsoft Windows 下的 Apache 1.3.x

本节包括在 Microsoft Windows 平台的 Apache 下安装 PHP 的说明和提示。在另外的页面也有 Apache 2 的安装和说明。

Note:

请先阅读手动安装步骤！

有两种方式让 PHP 工作在 Windows 下的 Apache 1.3.x 中。首先是使用 CGI 可执行程序（PHP 4 下为 php.exe，PHP 5 下为 php-cgi.exe），另外一种方式是使用 Apache 模块 DLL。无论是那种方式，都需要修改 httpd.conf 来配置 Apache，使 PHP 能够在其上运行，然后都需要重启服务。

值得注意的是，现在 Windows 下的 SAPI 模块已经稳定得多，我们建议首先考虑使用 SAPI 而不要使用 CGI 可执行程序。因为 SAPI 更加透明和安全。

虽然还有些其它的方法来在 Apache 下配置 PHP，下面介绍的方法是最简单并适用于新手的。请参考 Apache 的文档以获得更多的配置参数。

在修改完配置文件后，请记得重启 Apache 服务。例如，如果把 Apache 作为 Windows 的一个服务来运行，那么在命令提示行下使用 NET STOP APACHE命令然后再使用 NET START APACHE命令便可重启服务。也可以使用重启 Apache 服务的快捷方式来重启。

Note: 记住当在 Windows 环境下的 Apache 配置文件中添加路径值时，所有的反斜线，如 c:\directory\file.ext，应转换为正斜线： c:/directory/file.ext。对目录来说，也必须由斜线结尾。

作为 Apache 的模块安装

应该将下面几行加入 Apache 的 httpd.conf 文件：

Example #17 PHP 作为 Apache 1.3.x 的一个模块

这里假设 PHP 安装在 c:\php。如果不是这样请根据情况修改路径。

对于 PHP 4：

# 在 LoadModule 一节的末尾添加
# 不要忘记将该文件从 sapi 复制出来
LoadModule php4_module "C:/php/php4apache.dll"

# 在 AddModule 一节的末尾添加
AddModule mod_php4.c

对于 PHP 5：

# 在 LoadModule 一节的末尾添加
LoadModule php5_module "C:/php/php5apache.dll"

# 在 AddModule 一节的末尾添加
AddModule mod_php5.c

两个 PHP 版本都需要添加的内容：

# 将下面这行添加到 <IfModule mod_mime.c> 条件块中
AddType application/x-httpd-php .php

# 如果要使用语法高亮的 .phps 文件，需要添加
AddType application/x-httpd-php-source .phps

作为 CGI 可执行文件的安装

如果按照手工安装步骤将 PHP 解压到 C:\php\，需要在 Apache 的配置文件中添加如下内容以使 PHP 按照 CGI 方式运行:

Example #18 PHP 以 CGI 方式运行在 Apache 1.3.x

ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php

# 对于 PHP 4
Action application/x-httpd-php "/php/php.exe"

# 对于 PHP 5
Action application/x-httpd-php "/php/php-cgi.exe"

# 指定 php.ini 所在目录
SetEnv PHPRC C:/php
请注意第二行的配置可以在默认的 httpd.conf 中找到，但是是被注释掉的。也请记得将 c:/php/替换为 PHP 所在的真实路径。

Warning

服务器使用 CGI 方式进行部署可能存在几个公开的缺陷。请阅读 CGI 安全一章 以学习 如何抵御这些攻击。

如果想发布语法高亮的 php 文件，没有类似于模块方式下 PHP 那种方便的方法。如果选择了 CGI 方式运行 PHP，需要使用 highlight_file() 函数来进行语法高亮。创建一个 PHP 文件，加入下述代码即可：<?php highlight_file('some_php_script.php'); ?>。

Microsoft Windows 下的 Apache 2.x

本节包括在 Microsoft Windows 系统中针对 Apache 2.x 安装 PHP 的指导与说明。在其它页面也有 Apache 1.3.x 用户指导与说明。

Note:

应该先阅读手工安装步骤！

Note: Apache 2.2 支持

Apache 2.2 用户应留意对于 Apache 2.2 的 DLL 文件名是 php5apache2_2.dll 而不是 php5apache2.dll，并且只在 PHP 5.2.0 以及更高版本中出现。参见 [broken link]。

强烈建议阅读 » Apache 文档来加深对 Apache 2.x 服务器的基本理解。此外在继续下去之前考虑先阅读一下 Apache 2.x 的 » Windows 下使用说明。

Apache 2.x 被设计运行于 Windows 版的服务器平台下，例如 Windows NT 4.0，Windows 2000，Windows XP 或 Windows 7。虽然 Apache 2.x 可以在 Windows 9x 下勉强运行，但对此平台的支持尚未完成，某些功能无法正确工作。对此并无补救计划。

下载最新版本的 » Apache 2.x 以及适合的 PHP 版本。先完成手工安装步骤后再回来继续将 PHP 集成入 Apache。

Windows 下有三种方法使 PHP 工作于 Apache 2.x 之中。可以以 handler，CGI，或者 FastCGI 方式运行 PHP。

Note: 记住当在 Windows 环境下的 Apache 配置文件中添加路径值时，所有的反斜线，如 c:\directory\file.ext，应转换为正斜线： c:/directory/file.ext。对目录来说，也必须由斜线结尾。

以 Apache handler 方式安装

需要将以下几行加入到 Apache 的 httpd.conf 配置文件中以加载 Apache 2.x 的 PHP 模块：

Example #19 PHP 在 Apache 2.x 中作为 handler

#
LoadModule php5_module "c:/php/php5apache2.dll"
AddHandler application/x-httpd-php .php

# 配置 php.ini 的路径
PHPIniDir "C:/php"

Note: 记得用自己 PHP 实际所在的路径替换掉上例中的 c:/php/。要留意在 LoadModule 指令中使用了 php5apache2.dll 或者 php5apache2_2.dll，并且该文件确实位于所指定的位置。

以上配置将使 PHP 处理任何具有 .php 后缀的文件，即使该文件还有其它的文件后缀。例如一个名为 example.php.txt 的文件将被作为 PHP 文件运行。要确保只有以 .php 结尾的文件才被执行，则用以下配置替换上面的：

<FilesMatch \.php$>
      SetHandler application/x-httpd-php
 </FilesMatch>

以 CGI 方式运行 PHP

要更好地理解在 Apache 下运行 CGI，请参阅 » Apache CGI 文档。

要将 PHP 以 CGI 方式运行，需要将 php-cgi 文件放入到用 ScriptAlias 指令所指定的 CGI 目录中。

然后需要给 PHP 文件中添加一 #! 的行来指明 PHP 可执行文件的位置：

Example #20 Apache 2.x 下 CGI 方式的 PHP

#!C:/php/php.exe
<?php
  phpinfo();
?>

Warning

服务器使用 CGI 方式进行部署可能存在几个公开的缺陷。请阅读 CGI 安全一章 以学习 如何抵御这些攻击。

以 FastCGI 方式运行 PHP

以 FastCGI 方式运行 PHP 比起 CGI 方式有很多优点。设定的方式很直接：

从 » http://httpd.apache.org/mod_fcgid/ 取得 mod_fcgid，该站点有 Win32 可执行文件的下载。按照下载文件中的指示安装此模块。

按以下方法配置 web 服务器，注意用自己系统上的路径替换其中相应的内容：

Example #21 配置 Apache 以 FastCGI 方式运行 PHP

LoadModule fcgid_module modules/mod_fcgid.so

# Where is your php.ini file?
FcgidInitialEnv PHPRC        "c:/php"

AddHandler fcgid-script .php
FcgidWrapper "c:/php/php-cgi.exe" .php
此时具有 .php 后缀的文件将被 PHP FastCGI 所解析执行。

Microsoft Windows 下的 Sun，iPlanet 和 Netscape 服务器

本节包含针对在 Windows 下 Sun Java System web 服务器，Sun ONE web 服务器，iPlanet 和 Netscape 服务器的 PHP 安装说明与提示。

自 PHP 4.3.3 起可以通过 NSAPI 模块使用 PHP 脚本来产生定制目录列表于错误页面。也可以使用为兼容 Apache 的附加函数。目前使用的 web 服务器的支持请阅读有关子请求的说明。

Sun，iPlanet 和 Netscape 服务器的 CGI 方式安装

要将 PHP 安装为 CGI 处理器，按以下步骤进行：

  • 将 php4ts.dll 拷贝到 systemroot（即 Windows 的安装目录）；

  • 在命令行做文件关联，输入以下两行命令：

    assoc .php=PHPScript
ftype PHPScript=c:\php\php.exe %1 %*

  • 在 Netscape Enterprise Administration Server 中建一个空的 shellcgi 目录并随即删除（此步骤在 obj.conf 中新建了 5 行重要指令以允许 web 服务器处理 shellcgi 脚本）；
  • 在 Netscape Enterprise Administration Server 中新建一个新的 MIME 类型（Category: type，Content-Type: magnus-internal/shellcgi，File Suffix: php）；
  • 对每个要运行 PHP 的 web 服务器实例都进行以上步骤。

更多将 PHP 设置为 CGI 可执行程序的内容见：» http://benoit.noss.free.fr/php/install-php.html。

Sun，iPlanet 和 Netscape 服务器的 NSAPI 方式

要将 PHP 以 NSAPI 方式安装，按以下步骤进行：

  • 将 php4ts.dll拷贝到 systemroot（即 Windows 的安装目录）；

  • 在命令行做文件关联，输入以下两行命令：

    assoc .php=PHPScript
ftype PHPScript=c:\php\php.exe %1 %*

  • 在 Netscape Enterprise Administration Server 中新建一个新的 MIME 类型（Category: type，Content-Type: magnus-internal/x-httpd-php，File Suffix: php）；

  • 编辑 magnus.conf（服务器版本 >= 6）或 obj.conf（服务器版本 < 6）并加入下面两行；要将新行放在 mime types init之后：

    Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="c:/php/sapi/php4nsapi.dll"
Init fn="php4_init" LateInit="yes" errorString="Failed to initialise PHP!" [php_ini="c:/path/to/php.ini"]
    （PHP >= 4.3.3）php_ini 参数为可选项，但加上后就可以把 php.ini 放到 web 服务器的配置目录中去；

  • 在 obj.conf 中配置默认对象（对于虚拟服务器类 [Sun web Server 6.0+] 是 vserver.obj.conf文件）：在 <Object name="default"> 一节，在所有的"ObjectType"行之后和所有的"AddLog"行之前加上这一行：

    Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...]
    （PHP >= 4.3.3）作为附加参数可以加入一些特殊的 php.ini 值，例如可以在调用 php4_execute 时设定专门的 docroot="/path/to/docroot"。对于布尔的 ini 选项请用 0/1 作为值，而不是 "On","Off",...（这样不能正确工作），例如要用 zlib.output_compression=1 而不是 zlib.output_compression="On"；

  • 这几行仅在想要配置一个只有 PHP 脚本的目录时需要（类似 cgi-bin 目录）：

    <Object name="x-httpd-php">
ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
Service fn=php4_execute [inikey=value inikey=value ...]
</Object>
    在此之后可以在管理服务器中配置目录并将其类型设为 x-httpd-php。其中的所有文件都将作为 PHP 执行。这样可以隐藏 PHP 的使用，文件名还保留为 .html；

  • 重启动 web 服务使改动生效；
  • 对每个要运行 PHP 的 web 服务器实例都进行以上步骤。

Note:

更多将 PHP 设置为 NSAPI内容见：» http://benoit.noss.free.fr/php/install-php4.html。

Note:

PHP 使用的堆栈大小（stacksize）依赖于 web 服务器的配置。如果在运行很大的 PHP 脚本时死掉，建议在管理服务器中增大此值（在 "MAGNUS EDITOR" 一节中）。

CGI 环境以及推荐在 php.ini 中进行的修改

在写 PHP 脚本时很重要一点是 Sun JSWS/Sun ONE WS/iPlanet/Netscape 是多线程 web 服务器。因此所有的请求都运行于同一个进程空间（即 web 服务器自己的空间）而此空间只有一个环境。如果想取得 CGI 变量例如 PATH_INFO，HTTP_HOST 等时不能用老的 PHP 3.x 的方式 getenv() 或者类似手段（$_ENV）进行。只能取得运行的 web 服务器的环境变量而没有任何有效的 CGI 变量！

Note:

为什么环境中有一些（无效的）CGI 变量？

解答：这是因为从管理服务器启动了 web 服务器进程，这将运行 web 服务器的启动脚本，而你想要启动的是 CGI 脚本（CGI 脚本在管理服务器内部！）。这是为什么 web 服务器启动的环境中有一些 CGI 环境变量的原因。可以不从管理服务器启动 web 服务器来试验一下。用管理员用户从命令行手工启动——这样就不会看到类似 CGI 的环境变量了。

PHP 4.x 中取得 CGI 变量的正确方式是使用超全局变量 $_SERVER。如果有一些老的脚本用了 $HTTP_HOST 等，那应该在 php.ini 中打开 register_globals 选项并改变变量顺序（重要提示：去掉 "E"，因为这里不需要环境变量）：

variables_order = "GPCS"
register_globals = On

错误页面的特殊使用或定制目录列表（PHP >= 4.3.3）

可以用 PHP 来为 "404 Not Found" 或类似的错误提示生成错误页面。对每个想要覆盖的错误页面在 obj.conf 中的对象里加入下面这行：

Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value inikey=value...]
其中的 XXX 是 HTTP 错误代码。删除掉可能干扰到自己设置的任何其它 Error 指令。如果对所有可能出现的错误都用同一个脚本处理，不要 code 参数即可。脚本里可以用 $_SERVER['ERROR_TYPE'] 取得 HTTP 状态代码。

还可以生成自己定制的目录列表。只要创建一个显示目录列表的 PHP 脚本并用下面一行在 obj.conf 中替换掉相应 type="magnus-internal/directory" 默认的 Service 设置：

Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/script.php" [inikey=value inikey=value...]
对于错误和目录列表页面，原始的 URI 和转换后的 URI 都在变量 $_SERVER['PATH_INFO'] 和 $_SERVER['PATH_TRANSLATED'] 中。

有关 nsapi_virtual()和子请求（PHP >= 4.3.3）的说明

NSAPI 模块现在支持 nsapi_virtual() 函数（别名：virtual()）来进行子请求并将结果插入到 web 页面里。问题是，此函数用到了一些 NSAPI 库中没有文档说明的特性。

在 Unix 下这不是问题，因为模块会自动寻找所需的函数并使用。如果找不到，nsapi_virtual() 被禁用。

在 Windows 下 DLL 处理的局限性需要使用最新的 ns-httpdXX.dll 文件中的自动检测功能。这已在版本 6.1 及以下的服务器中测试过。如果用了更高版本的 Sun 服务器，检测会失败并禁用 nsapi_virtual()。

在这种情况下，试试下面的方法。在 magnus.conf/obj.conf 中的 php4_init 里加入下面的参数：

Init fn=php4_init ... server_lib="ns-httpdXX.dll"
其中 XX 是正确的 DLL 版本号。在 server-root 目录下去找合适的 DLL 的名字。文件大小最大的 DLL 就是了。

可以用 phpinfo() 函数来检查状态。

Note:

但要注意：对 nsapi_virtual() 的支持是试验性质的！

Microsoft Windows 下的 Sambar 服务器

本节包含针对 Windows 下的 » Sambar 服务器的说明和提示。

Note:

应该首先阅读手工安装步骤！

下面列出了怎样在 Windows 下设置 Sambar 服务器的 ISAPI 模块。

  • 在 Sambar 安装目录中找到 mappings.ini文件（在 config 目录中）；

  • 打开 mappings.ini 并在 [ISAPI] 部分加入下面一行：

    Example #22 Sambar 的 ISAPI 设置

    #对 PHP 4
*.php = c:\php\php4isapi.dll

#对 PHP 5
*.php = c:\php\php5isapi.dll
    （上面假定 PHP 安装在 c:\php。）

  • 重启动 Sambar 服务器以使改动生效。

Note:

如果想要用 PHP 与分布于网络中不同的主机上的资源通讯，则需要改变 Sambar 服务器的服务进程所使用的帐号。Sambar 服务进程使用的默认帐号是 LocalSystem，没有远程资源的访问许可。可以通过 Windows 控制面板中的"管理工具"里面的"服务"来修改此帐号。

Microsoft Windows 下的 Xitami

本节包含针对 Windows 下的 » Xitami 的说明与提示。

Note:

应该首先阅读手工安装步骤！

下面列出了怎样在 Windows 下在 Xitami 中设置 PHP 的 CGI 方式。

Note: CGI 用户重要提示

请阅读 FAQ：cgi.force_redirect 中的重要细节。此选项需要被设为 0。如果想要使用 $_SERVER['PHP_SELF']，还必须激活 cgi.fix_pathinfo选项。

Warning

服务器使用 CGI 方式进行部署可能存在几个公开的缺陷。请阅读 CGI 安全一章 以学习 如何抵御这些攻击。

  • 确保 web 服务器在运行，在浏览器中打开 Xitami 的管理控制台（通常是 http://127.0.0.1/admin），并点击 Configuration；

  • 找到 Filters，在 File extensions（.xxx）字段中加入想要 PHP 解析的后缀名（例如 .php）；

  • 在 Filter command 或 script 中输入 PHP 的 CGI 可执行文件名，例如 PHP 4 是 C:\php\php.exe，PHP 5 是 C:\php\php-cgi.exe；

  • 点击"Save"图标；

  • 重启动服务器以使改动生效。

从源程序编译

本章讲述了在 Windows 下如何使用 Microsoft 的工具编译 PHP。要在 CygWin 中编译 PHP，请参考 Unix 系统下的安装一章。

具体内容见：» http://wiki.php.net/internals/windows/stepbystepbuild。

Windows 下安装扩展库

在 Windows 下安装完 PHP 和 web 服务器之后，可能想要安装一些扩展库来获得更多功能。可以通过修改 php.ini 来选择当 PHP 启动时加载哪些扩展库。也可以在脚本中通过使用 dl()来动态加载。

PHP 扩展库的 DLL 文件都具有 php_ 前缀。

很多扩展库都内置于 Windows 版的 PHP 之中。这意味着要加载这些扩展库，额外的 DLL 文件和 extension 配置指令都不需要。Windows 下的 PHP 扩展库列表列出了需要或曾经需要额外 PHP DLL 文件的扩展库。下面是内置的扩展库列表：

PHP 4 中（截止到 PHP 4.3.11）：BCMath，Caledar，COM，Ctype，FTP，MySQL，ODBC，Overload，PCRE，Session，Tokenizer，WDDX，XML 和 Zlib。

PHP 5 中（截止到 5.0.4）有以下修改。新增内置：DOM，LibXML，Iconv，SimpleXML，SPL 和 SQLite。以下不再内置：MySQL 和 Overload。

PHP 搜索扩展库的默认位置在 PHP 4 中是 C:\php4\extensions，在 PHP 5 中是 C:\php5。要修改此项以符合用户自己的 PHP 设置，需要编辑 php.ini 文件：

  • 需要修改 extension_dir 设置以指向用户放置扩展库的目录或者说放置 php_*.dll 文件的位置。例如：

    extension_dir = C:\php\extensions

  • 要在 php.ini 中启用某扩展库，需要去掉该行 extension=php_*.dll 前的注释符号，将想要加载的扩展库前的分号（;）删除即可。

    Example #23 启用 Bzip2扩展库

    // 将这一行
;extension=php_bz2.dll

// 改成这样
extension=php_bz2.dll

  • 有些扩展库需要额外的 DLL 才能工作。其中一部分包括在发行包里，PHP 4 中在 C:\php\dlls\ 目录下，PHP 5 中在主目录下，但还有一些，例如 Oracle（php_oci8.dll）所需要的 DLL 没有绑定在发行包里。如果安装 PHP 4，将绑定的 DLL 从 C:\php\dlls 拷贝到主目录 C:\php 中。别忘了将 C:\php 放到系统路径 PATH 中去（此过程在另外的 FAQ 条目中有说明）。

  • 某些 DLL 没有绑定在 PHP 发行包中，详情见每个扩展库的文档页。此外有关 PECL 的说明见手册页 PECL 扩展库安装。在 PECL 中有日益增加数目巨大的 PHP 扩展库，这些扩展库需要单独下载。

Note: 如果运行服务器模块版的 PHP，在修改了 php.ini 之后别忘了重新启动 web 服务器以使其改动生效。

下表说明了哪些扩展库需要额外的 DLL。

PHP 扩展库
扩展库 | 说明 | 注解
php_bz2.dll | bzip2 压缩函数 | 无
php_calendar.dll | Calendar 日历转换函数 | 自 PHP 4.0.3 起内置
php_crack.dll | Crack 密码破解函数 | 无
php_ctype.dll | ctype 家族函数 | 自 PHP 4.3.0 起内置
php_curl.dll | CURL，客户端 URL 库函数 | 需要：libeay32.dll，ssleay32.dll（已附带）
php_dba.dll | DBA：数据库（dbm 风格）抽象层函数 | 无
php_dbase.dll | dBase 函数 | 无
php_dbx.dll | dbx 函数 | 无
php_domxml.dll | PHP 4 DOM XML 函数 | PHP <= 4.2.0 需要：libxml2.dll（已附带），PHP >= 4.3.0 需要：iconv.dll（已附带）
php_dotnet.dll | .NET 函数 | PHP <= 4.1.1
php_exif.dll | EXIF 函数 | 需要 php_mbstring.dll。并且在 php.ini 中，php_exif.dll 必须在 php_mbstring.dll 之后加载
php_fbsql.dll | FrontBase 函数 | PHP <= 4.2.0
php_fdf.dll | FDF：表单数据格式化函数 | 需要：fdftk.dll（已附带）
php_filepro.dll | filePro 函数 | 只读访问
php_ftp.dll | FTP 函数 | 自 PHP 4.0.3 起内置
php_gd.dll | GD 库图像函数 | 在 PHP 4.3.2 中移除。此外注意在 GD1 中不能用真彩色函数，用 php_gd2.dll替代。
php_gd2.dll | GD 库图像函数 | GD2
php_gettext.dll | Gettext 函数 | PHP <= 4.2.0 需要 gnu_gettext.dll（已附带），PHP >= 4.2.3 需要 libintl-1.dll， iconv.dll（已附带）
php_hyperwave.dll | HyperWave 函数 | 无
php_iconv.dll | ICONV 字符集转换 | 需要：iconv-1.3.dll（已附带），PHP >=4.2.1 需要 iconv.dll
php_ifx.dll | Informix 函数 | 需要：Informix 库
php_iisfunc.dll | IIS 管理函数库 | 无
php_imap.dll | IMAP，POP3 和 NNTP 函数 | 无
php_ingres.dll | Ingres II 函数 | 需要：Ingres II 库
php_interbase.dll | InterBase 函数 | 需要：gds32.dll（已附带）
php_java.dll | Java 函数 | PHP <= 4.0.6 需要：jvm.dll（已附带）
php_ldap.dll | LDAP 函数 | PHP <= 4.2.0 需要 libsasl.dll（已附带），PHP >= 4.3.0 需要 libeay32.dll，ssleay32.dll（已附带）
php_mbstring.dll | Multi-Byte String 多字节字符串函数 | 无
php_mcrypt.dll | Mcrypt 加密函数 | 需要：libmcrypt.dll
php_mhash.dll | Mhash 函数 | PHP >= 4.3.0 需要：libmhash.dll（已附带）
php_mime_magic.dll | Mimetype 函数 | 需要：magic.mime（已附带）
php_ming.dll | Ming 函数（Flash） | 无
php_msql.dll | mSQL 函数 | 需要：msql.dll（已附带）
php_mssql.dll | MSSQL 函数 | 需要：ntwdblib.dll（已附带）
php_mysql.dll | MySQL 函数 | PHP >= 5.0.0 需要 libmysql.dll（已附带）
php_mysqli.dll | MySQLi 函数 | PHP >= 5.0.0 需要 libmysql.dll（PHP <= 5.0.2 中是 libmysqli.dll）（已附带）
php_oci8.dll | Oracle 8 函数 | 需要：Oracle 8.1+ 客户端库
php_openssl.dll | OpenSSL 函数 | 需要：libeay32.dll（已附带）
php_overload.dll | PHP 4 对象过载函数 | 自 PHP 4.3.0 起内置，自 PHP 5.0.0 起移除
php_pdf.dll | PDF 函数 | 无
php_pgsql.dll | PostgreSQL 函数 | 无
php_shmop.dll | Shared Memory 共享内存函数 | 无
php_snmp.dll | SNMP 函数 | 仅用于 Windows NT！
php_soap.dll | SOAP 函数 | PHP >= 5.0.0
php_sockets.dll | Socket 函数 | 无
php_sybase_ct.dll | Sybase 函数 | 需要：Sybase 客户端库
php_tidy.dll | Tidy 函数 | PHP >= 5.0.0
php_tokenizer.dll | Tokenizer 函数 | 自 PHP 4.3.0 起内置
php_w32api.dll | W32api 函数 | 无
php_xmlrpc.dll | XML-RPC 函数 | PHP >= 4.2.1 需要 iconv.dll（已附带）
php_xslt.dll | XSLT 函数 | PHP <= 4.2.0 需要 sablot.dll，expat.dll（已附带）。PHP >= 4.2.1 需要 sablot.dll，expat.dll，iconv.dll（已附带）。
php_yaz.dll | YAZ 函数 | 需要：yaz.dll（已附带）
php_zip.dll | Zip 文件函数 | 只读访问
php_zlib.dll | ZLib 压缩函数 | 自 PHP 4.3.0 起内置

PHP 在 Microsoft Windows 下的命令行方式

本章包含有针对在 Windows 下以命令行运行 PHP 的说明与提示。

Note:

应该先阅读手工安装步骤！

要在命令行下运行 PHP，可以无需对 Windows 做任何改动。

C:\PHP5\php.exe -f "C:\PHP Scripts\script.php" -- -arg1 -arg2 -arg3

但是有几个很容易的步骤可以使其更加简便。某些步骤可能已经在之前完成了，不过还是在这里重复说明以便提供一个完整的步骤序列。

    Note:

    PATH 和 PATHEXT 都是在 Windows 下已有的重要环境变量，要留意不要覆盖了其内容，仅仅是向其中添加内容。

  • 将 PHP 可执行文件（php.exe，php-win.exe 或者 php-cli.exe）的路径添加到 PATH 环境变量中去。如何将 PHP 目录添加到 PATH 中请参阅与之相关的常见问题。

  • 将 .PHP 后缀添加到 PATHEXT 环境变量中去。可以在修改 PATH 环境变量时同时进行。跟常见问题中说明的步骤一样，不要要修改的是 PATHEXT 环境变量而不是 PATH 环境变量。

    Note:

    把 .PHP 放置到什么位置将决定具有相同文件名时运行的优先级。例如将 .PHP 放到 .BAT 之前将导致如果有同名的 PHP 脚本和批处理文件，则 PHP 脚本会运行。

  • 将 .PHP 后缀关联为一种文件类型，用以下命令完成：

    assoc .php=phpfile

  • 将 phpfile 文件类型关联到适当的 PHP 可执行文件，用以下命令完成：

    ftype phpfile="C:\PHP5\php.exe" -f "%1" -- %~2

按照以上步骤将使 PHP 脚本可以在任何目录下运行，不需要输入 PHP 可执行文件名以及 .PHP 后缀，并且所有参数都会被传递给脚本来处理。

以下例子说明了可以手工修改的注册表项目变化。

Example #24 注册表变化

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.php]
@="phpfile"
"Content Type"="application/php"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile]
@="PHP Script"
"EditFlags"=dword:00000000
"BrowserFlags"=dword:00000008
"AlwaysShowExt"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\DefaultIcon]
@="C:\\PHP5\\php-win.exe,0"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell]
@="Open"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open]
@="&Open"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open\command]
@="\"C:\\PHP5\\php.exe\" -f \"%1\" -- %~2"

有了这些改变之后，本页顶端第一个例子中的命令可以写成这样：

"C:\PHP Scripts\script" -arg1 -arg2 -arg3
或者如果 "C:\PHP Scripts" 路径位于 PATH 环境变量中的话：
script -arg1 -arg2 -arg3

Note:

不过如果想要通过此技巧将 PHP 脚本作为命令行管道过滤器的话，有个小问题。例如以下例子：

dir | "C:\PHP Scripts\script" -arg1 -arg2 -arg3
或者
dir | script -arg1 -arg2 -arg3
此时脚本会死掉，没有输出任何内容。要解决此问题，还需要做一个注册表修改。
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer]
"InheritConsoleHandles"=dword:00000001
有关此问题的更多信息见» 微软知识库文章：321788。

Windows 下 PHP 故障排除
云计算平台上的安装
Windows 系统下的安装


云计算平台上的安装

Table of Contents

  • Microsoft Azure
  • Amazon EC2

PHP 在云平台上的安装。前往 PHP 云！

Installation on old Windows systems
Microsoft Azure
安装与配置


Microsoft Azure

Azure 云平台 上 PHP 的安装。

参见 Azure SDK for PHP。

云计算平台上的安装
Amazon EC2
云计算平台上的安装


Amazon EC2

» EC2 云平台上 PHP 的安装。

参见 » AWS SDK for PHP。

Microsoft Azure
FastCGI 进程管理器（FPM）
云计算平台上的安装


FastCGI 进程管理器（FPM）

Table of Contents

  • 安装
  • 配置

FPM（FastCGI 进程管理器）用于替换 PHP FastCGI 的大部分附加功能，对于高负载网站是非常有用的。

它的功能包括：

  • 支持平滑停止/启动的高级进程管理功能；

  • 可以工作于不同的 uid/gid/chroot 环境下，并监听不同的端口和使用不同的 php.ini 配置文件（可取代 safe_mode 的设置）；

  • stdout 和 stderr 日志记录;

  • 在发生意外情况的时候能够重新启动并缓存被破坏的 opcode;

  • 文件上传优化支持;

  • "慢日志" - 记录脚本（不仅记录文件名，还记录 PHP backtrace 信息，可以使用 ptrace或者类似工具读取和分析远程进程的运行数据）运行所导致的异常缓慢;

  • fastcgi_finish_request() - 特殊功能：用于在请求完成和刷新数据后，继续在后台执行耗时的工作（录入视频转换、统计处理等）；

  • 动态／静态子进程产生；

  • 基本 SAPI 运行状态信息（类似Apache的 mod_status）；

  • 基于 php.ini 的配置文件。

Amazon EC2
安装
安装与配置


安装

从源代码编译

编译 PHP 时需要 --enable-fpm 配置选项来激活 FPM 支持。

以下为 FPM 编译的具体配置参数（全部为可选参数）：

  • --with-fpm-user - 设置 FPM 运行的用户身份（默认 - nobody）

  • --with-fpm-group - 设置 FPM 运行时的用户组（默认 - nobody）

  • --with-fpm-systemd - 启用 systemd 集成 (默认 - no)

  • --with-fpm-acl - 使用POSIX 访问控制列表 (默认 - no) 5.6.5版本起有效

FastCGI 进程管理器（FPM）
配置
FastCGI 进程管理器（FPM）


配置

FPM 配置文件为 php-fpm.conf，其语法类似 php.ini 。

php-fpm.conf 全局配置段

pid string

PID文件的位置。默认为空。

error_log string

错误日志的位置。默认：安装路径 #INSTALL_PREFIX#/log/php-fpm.log。

log_level string

错误级别。可用级别为：alert（必须立即处理），error（错误情况），warning（警告情况），notice（一般重要信息），debug（调试信息）。默认：notice。

emergency_restart_threshold int

如果子进程在 emergency_restart_interval 设定的时间内收到该参数设定次数的 SIGSEGV 或者 SIGBUS退出信息号，则FPM会重新启动。0 表示"关闭该功能"。默认值：0（关闭）。

emergency_restart_interval mixed

emergency_restart_interval 用于设定平滑重启的间隔时间。这么做有助于解决加速器中共享内存的使用问题。可用单位：s（秒），m（分），h（小时）或者 d（天）。默认单位：s（秒）。默认值：0（关闭）。

process_control_timeout mixed

设置子进程接受主进程复用信号的超时时间。可用单位：s（秒），m（分），h（小时）或者 d（天）。默认单位：s（秒）。默认值：0（关闭）。

daemonize boolean

设置 FPM 在后台运行。设置"no"将 FPM 保持在前台运行用于调试。默认值：yes。

运行配置区段

在FPM中，可以使用不同的设置来运行多个进程池。 这些设置可以针对每个进程池单独设置。

listen string

设置接受 FastCGI 请求的地址。可用格式为：'ip:port'，'port'，'/path/to/unix/socket'。每个进程池都需要设置。

listen.backlog int

设置 listen(2) 的半连接队列长度。"-1"表示无限制。默认值：-1。

listen.allowed_clients string

设置允许连接到 FastCGI 的服务器 IPV4 地址。等同于 PHP FastCGI (5.2.2+) 中的 FCGI_WEB_SERVER_ADDRS 环境变量。仅对 TCP 监听起作用。每个地址是用逗号分隔，如果没有设置或者为空，则允许任何服务器请求连接。默认值：any。

listen.owner string

如果使用，表示设置 Unix 套接字的权限。在Linux中，读写权限必须设置，以便用于 WEB 服务器连接。在很多 BSD 派生的系统中可以忽略权限允许自由连接。默认值：运行所使用的用户和组，权限为 0666。

listen.group string

参见 listen.owner。

listen.mode string

参见 listen.owner。

user string

FPM 进程运行的Unix用户。必须设置。

group string

FPM 进程运行的 Unix 用户组。如果没有设置，则默认用户的组被使用。

pm string

设置进程管理器如何管理子进程。可用值：static，ondemand，dynamic。必须设置。

static - 子进程的数量是固定的（pm.max_children）。

ondemand - 进程在有需求时才产生（当请求时，与 dynamic 相反，pm.start_servers 在服务启动时即启动。

dynamic - 子进程的数量在下面配置的基础上动态设置：pm.max_children，pm.start_servers，pm.min_spare_servers，pm.max_spare_servers。

pm.max_children int

pm 设置为 static 时表示创建的子进程的数量，pm 设置为 dynamic 时表示最大可创建的子进程的数量。必须设置。

该选项设置可以同时提供服务的请求数限制。类似 Apache 的 mpm_prefork 中 MaxClients 的设置和 普通PHP FastCGI中的 PHP_FCGI_CHILDREN 环境变量。

pm.start_servers in

设置启动时创建的子进程数目。仅在 pm 设置为 dynamic 时使用。默认值：min_spare_servers + (max_spare_servers - min_spare_servers) / 2。

pm.min_spare_servers int

设置空闲服务进程的最低数目。仅在 pm 设置为 dynamic 时使用。必须设置。

pm.max_spare_servers int

设置空闲服务进程的最大数目。仅在 pm 设置为 dynamic 时使用。必须设置。

pm.max_requests int

设置每个子进程重生之前服务的请求数。对于可能存在内存泄漏的第三方模块来说是非常有用的。如果设置为 '0' 则一直接受请求，等同于 PHP_FCGI_MAX_REQUESTS 环境变量。默认值：0。

pm.status_path string

FPM 状态页面的网址。如果没有设置，则无法访问状态页面，默认值：无。

ping.path string

FPM 监控页面的 ping 网址。如果没有设置，则无法访问 ping 页面。该页面用于外部检测 FPM 是否存活并且可以响应请求。请注意必须以斜线开头（/）。

ping.response string

用于定义 ping 请求的返回响应。返回为 HTTP 200 的 text/plain 格式文本。默认值：pong。

request_terminate_timeout mixed

设置单个请求的超时中止时间。该选项可能会对 php.ini 设置中的 'max_execution_time' 因为某些特殊原因没有中止运行的脚本有用。设置为 '0' 表示 'Off'。可用单位：s（秒），m（分），h（小时）或者 d（天）。默认单位：s（秒）。默认值：0（关闭）。

request_slowlog_timeout mixed

当一个请求该设置的超时时间后，就会将对应的 PHP 调用堆栈信息完整写入到慢日志中。设置为 '0' 表示 'Off'。可用单位：s（秒），m（分），h（小时）或者 d（天）。默认单位：s（秒）。默认值：0（关闭）。

slowlog string

慢请求的记录日志。默认值：#INSTALL_PREFIX#/log/php-fpm.log.slow。

rlimit_files int

设置文件打开描述符的 rlimit 限制。默认值：系统定义值。

rlimit_core int

设置核心 rlimit 最大限制值。可用值：'unlimited'，0 或者正整数。默认值：系统定义值。

chroot string

启动时的 Chroot 目录。所定义的目录需要是绝对路径。如果没有设置，则 chroot 不被使用。

chdir string

设置启动目录，启动时会自动 Chdir 到该目录。所定义的目录需要是绝对路径。默认值：当前目录，或者根目录（chroot时）。

catch_workers_output boolean

重定向运行过程中的 stdout 和 stderr 到主要的错误日志文件中。如果没有设置，stdout 和 stderr 将会根据 FastCGI 的规则被重定向到 /dev/null。默认值：无。

还可以在为一个运行池传递附加的环境变量，或者更新 PHP 的配置值。可以在 php-fpm.conf 中如下面的配置参数来做到：

Example #1 给运行池传递环境变量和设置 PHP 的配置值

env[HOSTNAME] = $HOSTNAME
       env[PATH] = /usr/local/bin:/usr/bin:/bin
       env[TMP] = /tmp
       env[TMPDIR] = /tmp
       env[TEMP] = /tmp

       php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
       php_flag[display_errors] = off
       php_admin_value[error_log] = /var/log/fpm-php.www.log
       php_admin_flag[log_errors] = on
       php_admin_value[memory_limit] = 32M
PHP配置值通过 php_value 或者 php_flag 设置，并且会覆盖以前的值。请注意 disable_functions 或者 disable_classes 在 php.ini 之中定义的值不会被覆盖掉，但是会将新的设置附加在原有值的后面。

使用 php_admin_value 或者 php_admin_flag 定义的值，不能被 PHP 代码中的 ini_set() 覆盖。

自 5.3.3 起，也可以通过 web 服务器设置 PHP 的设定。

Example #2 在 nginx.conf 中设定 PHP

set $php_value "pcre.backtrack_limit=424242";
set $php_value "$php_value \n pcre.recursion_limit=99999";
fastcgi_param  PHP_VALUE $php_value;

fastcgi_param  PHP_ADMIN_VALUE "open_basedir=/var/www/htdocs";
Caution

由于这些设定是以 FastCGI 标头传递给 php-fpm，php-fpm 不应绑定到外部网可以访问的地址上，否则任何人都能修改 PHP 的配置选项了。参见 listen.allowed_clients。

安装
PECL 扩展库安装
FastCGI 进程管理器（FPM）


PECL 扩展库安装

Table of Contents

  • PECL 安装介绍
  • 下载 PECL 扩展库
  • 在 Windows 上安装 PHP 扩展
  • 用 PEAR 编译共享 PECL 扩展库
  • 用 phpize 编译共享 PECL 扩展库
  • php-config
  • 将 PECL 扩展库静态编译入 PHP
配置
PECL 安装介绍
安装与配置


PECL 安装介绍

» PECL 是通过 » PEAR 打包系统来的 PHP 扩展库仓库，本章内容示范了怎样取得并安装 PECL 扩展。

以下指南中假定 /your/phpsrcdir/ 是 PHP 源程序的路径，extname 是 PECL 扩展库的名字。自己根据实际情况调整。此外还假定用户熟悉 » pear 命令。 PEAR 手册里 pear 命令的信息同样适用于 pecl。

要使用共享扩展库，必须经过编译，安装，然后加载。以下说明的方法提供了怎样编译和安装扩展库的各种指导，但并不会自动加载它们。可以通过将其包括在 php.ini 中用 extension PHP 指令加载，或者 用 dl() 函数。

当编译 PHP 模块时，拥有各种工具（autoconf，automake，libtool 等）的已知好使的版本很重要。所需工具和所需版本的详情见» 匿名 Git 说明。

PECL 扩展库安装
下载 PECL 扩展库
PECL 扩展库安装


下载 PECL 扩展库

下载 PECL 扩展库有几种方法，如：

  • pecl install extname 命令会自动下载扩展代码， 所以在这种情况下不需要再次下载。
  • » http://pecl.php.net/ PECL 网站包括有 PHP 开发组提供的不同扩展库的信息。这里的信息包括：更新记录，版本说明，需求，以及其它信息。
  • pecl download extname PECL 网站中列出的 PECL 扩展库的发行版本可以用 » pear 命令来下载和安装。也可以指明具体的修正版。
  • SVN 大多数 PECL 扩展库也在 SVN 中。其 web 页面见 be seen at » http://svn.php.net/viewvc/pecl/。要直接从 SVN 中下载，用以下命令：

    $ svn checkout http://svn.php.net/repository/pecl/extname/trunk extname

  • Windows 下载： 目前 PHP 项目没有为 Windows 下 PECL 扩展编译二进制文件。要在 Windows 下编译 PHP，请阅读有关章节。
PECL 安装介绍
在 Windows 上安装 PHP 扩展
PECL 扩展库安装


在 Windows 上安装 PHP 扩展

在 Windows 上有两种加载 PHP 扩展的方式：把扩展编译进 PHP，或者加载 DLL。加载预编译的扩展是更简单更被推荐的方式。

要加载某扩展，需要在系统中有其相对应的".dll"文件。所有扩展都会由 PHP 小组定期自动编译（如何下载见下节）。

要将一扩展编译入 PHP，请参考从源程序编译一章。

要编译一个独立的扩展（即 DLL 文件），请参考从源程序编译一章。如果在 PHP 发行包和 PCEL 中都没有某 DLL 文件，那可能需要自己编译之后才能使用该扩展。

去哪里找扩展库？

PHP 扩展库通常称为"php_*.dll"（其中星号代表具体某扩展的名字），位于"PHP\ext"目录下（在 PHP 4 中位于"PHP\extensions"目录下）。

PHP 发行包中包括了大多数开发者最常用到的扩展库。这些被称为"核心"扩展库。

不过呢，如果用户所需要的功能并没有被任何核心扩展提供，那还是有可能在 PECL 中找到。PHP Extension Community Library（PECL，PHP 扩展社区库）是个 PHP 扩展的储存室，提供了对于所有已知扩展的下载及开发途径的指南。

如果用户开发了一个自己使用的扩展，可以考虑将其发布到 PECL 中以便于其他有相同需求的用户使用。一个很好的副作用是可以得到其他用户的反馈，感谢，错误报告甚至修正／更新。不过在向 PECL 发布扩展之前，请先阅读 http://pecl.php.net/package-new.php。

下载哪个扩展？

用户常常会发现每个 DLL 都有好几个版本：

  • 不同的版本号（至少前两个数字要一致）
  • 不同的线程安全性设定
  • 不同的处理器体系（x86，x64，...)
  • 不同的排错设定
  • 其它

请记住用户的扩展设定应该与所使用的 PHP 可执行文件的设定都保持一致。以下脚本可以显示所有 PHP 设定：

Example #1 phpinfo() call

<?php
phpinfo();
?>

或者在命令行运行：

drive:\\path\to\php\executable\php.exe -i

载入一个扩展

最常见的方式是在 php.ini 配置文件里包含一个 PHP 扩展。请注意很多扩展已经在 php.ini 里了，仅需要移除分号来激活它们。

;extension=php_extname.dll

extension=php_extname.dll

不过呢，有些 web 服务器会搞混，因为其并不一定使用和 PHP 可执行文件处于同一目录下的 php.ini 文件。要搞清楚具体使用了哪一个 php.ini 文件，在 phpinfo() 的输出中查看：

Configuration File (php.ini) Path  C:\WINDOWS

Loaded Configuration File   C:\Program Files\PHP\5.2\php.ini

激活一个扩展后，保存 php.ini 文件并重启动 web 服务器，然后用 phpinfo() 再次查看确定。新的扩展应该有其自己的一节。

解决问题

如果某扩展并未在 phpinfo() 中显示，应该查看日志以确定问题出在哪里。

如果是在命令行使用 PHP（CLI），扩展加载出错信息会直接在屏幕显示。

如果在 web 服务器中使用 PHP，则日志文件的位置与格式各不相同。请阅读所使用的 web 服务器之文档以确定日志文件的位置，这与 PHP 本身并无关系。

最常见的问题是 DLL 文件的位置，php.ini 中"extension_dir"设定的值，以及编译时的设置不匹配。

如果问题出在编译时设置不匹配，那可能所下载的 DLL 文件不对。可以尝试重新下载一个设置匹配的扩展。此外，phpinfo() 可以起到很大帮助。

下载 PECL 扩展库
用 PEAR 编译共享 PECL 扩展库
PECL 扩展库安装


用 PEAR 编译共享 PECL 扩展库

PECL 使建立共享 PHP 扩展库更容易。用 » pecl 命令这样做：

$ pecl install extname

这将下载 extname 的源代码，编译之，并将 extname.so 安装到 extension_dir 中。然后 extname.so 就可以通过 php.ini 加载了。

默认情况下，pecl 命令不会安装标记为 alpha 或 beta 状态的包。如果没有 stable 包可用，也可以用以下命令安装一个 beta 包：

$ pecl install extname-beta

也可以用此命令安装一个指定的版本：

$ pecl install extname-0.1

Note:

在 php.ini 中激活扩展之后，需要重新启动 web 服务以使更改生效。

在 Windows 上安装 PHP 扩展
用 phpize 编译共享 PECL 扩展库
PECL 扩展库安装


用 phpize 编译共享 PECL 扩展库

有时候不能用 pecl 安装命令。这可能是因为在防火墙后面，或者是因为想要安装的扩展库还没有 PECL 兼容的包，例如 SVN 中尚未发布的扩展库。如果要编译这种扩展库，可以用更底层的编译工具来手工进行编译。

phpize 命令是用来准备 PHP 扩展库的编译环境的。下面例子中，扩展库的源程序位于 extname 目录中：

$ cd extname
$ phpize
$ ./configure
$ make
# make install

成功的安装将创建 extname.so 并放置于 PHP 的扩展库目录中。需要调整 php.ini，加入 extension=extname.so 这一行之后才能使用此扩展库。

如果系统中没有 phpize 命令并且使用了预编译的包（例如 RPM），那要安装 PHP 包相应的开发版本，此版本通常包含了 phpize 命令以及相应的用于编译 PHP 及其扩展库的头文件。

使用 phpize --help 命令可以显示此命令用法。

用 PEAR 编译共享 PECL 扩展库
php-config
PECL 扩展库安装


php-config

php-config 是一个简单的命令行脚本用于获取所安装的 PHP 配置的信息。

在编译扩展时，如果安装有多个 PHP 版本，可以在配置时用 --with-php-config 选项来指定使用哪一个版本编译，该选项指定了相对应的 php-config 脚本的路径。

php-config 脚本在命令行所能使用的选项可以通过 -h 选项来显示：

Usage: /usr/local/bin/php-config [OPTION]
Options:
  --prefix            [...]
  --includes          [...]
  --ldflags           [...]
  --libs              [...]
  --extension-dir     [...]
  --include-dir       [...]
  --php-binary        [...]
  --php-sapis         [...]
  --configure-options [...]
  --version           [...]
  --vernum            [...]

命令行选项
选项 | 说明
--prefix | PHP 所安装的路径前缀，例如 /usr/local
--includes | 列出用 -I 选项包含的所有文件
--ldflags | PHP 编译时所使用的 LD 标志
--libs | PHP 编译时所附加的库
--extension-dir | 扩展库的默认路径
--include-dir | 头文件的默认路径前缀
--php-binary | PHP CLI 或者 CGI 可执行文件的完整路径
--php-sapis | 列出所有可用的 SAPI 模块
--configure-options | 重现当前 PHP 在编译时的配置选项
--version | PHP 版本号
--vernum | PHP 版本号，以整数表示

用 phpize 编译共享 PECL 扩展库
将 PECL 扩展库静态编译入 PHP
PECL 扩展库安装


将 PECL 扩展库静态编译入 PHP

有时可能需要将扩展库静态编译到 PHP 中。这需要将扩展库源程序放入 php-src/ext/ 目录中去并告诉 PHP 编译系统来生成其配置脚本。

$ cd /your/phpsrcdir/ext
$ pecl download extname
$ gzip -d < extname.tgz | tar -xvf -
$ mv extname-x.x.x extname

这将产生以下目录：

/your/phpsrcdir/ext/extname

此时强制 PHP 重新生成配置脚本，然后正常编译 PHP：

$ cd /your/phpsrcdir
$ rm configure
$ ./buildconf --force
$ ./configure --help
$ ./configure --with-extname --enable-someotherext --with-foobar
$ make
$ make install

Note: 要运行"buildconf"脚本，需要 autoconf 2.13 和 automake 1.4+（更新版本的 autoconf 也许能工作，但不被支持）。

是否用 --enable-extname 或 --with-extname 取决于扩展库。通常不需要外部库文件的扩展库使用 --enable。要确认的话，在 buildconf 之后运行：

$ ./configure --help | grep extname

php-config
还有问题？
PECL 扩展库安装


还有问题？

Table of Contents

  • 阅读 FAQ
  • 其它问题
  • 错误报告
将 PECL 扩展库静态编译入 PHP
阅读 FAQ
安装与配置


阅读 FAQ

有些问题比其它的更为普遍。最常见的列在 PHP 常见问题中，是本手册的一部分。

还有问题？
其它问题
还有问题？


其它问题

如果还卡着，PHP 安装邮件列表中的人可能会帮你。应该先查看归档，也许有人已经回答了另一个人提出的和你相同的问题。归档可以从支持页 » http://www.php.net/support.php 访问到。要订阅 PHP 安装邮件列表，发送一封空邮件去 » php-install-subscribe@lists.php.net。邮件列表地址是 » php-install@lists.php.net。

如果想从邮件列表中取得帮助，请准确给出有关你的环境的必要细节（哪个操作系统，PHP 的版本，哪个 web 服务器，是否以 CGI 方式还是以服务器模块方式运行 PHP，安全模式，等等），并给出足够的代码让别人能重现和测试你碰到的问题。

阅读 FAQ
错误报告
还有问题？


错误报告

如果你觉得自己发现了一个 PHP 的 bug，请提出报告。PHP 开发人员也许还不知道有问题，除非你报告了，否则有可能不会被修正。可以通过错误跟踪系统 » http://bugs.php.net/ 来报告错误。请不要在邮件列表或私人信件中发送错误报告。错误跟踪系统也可以用来提出对新特性的要求。

在提交错误报告之前请先阅读» 怎样报告错误！

其它问题
运行时配置
还有问题？


运行时配置

Table of Contents

  • 配置文件
  • .user.ini 文件
  • 配置可被设定范围
  • 怎样修改配置设定
错误报告
配置文件
安装与配置


配置文件

配置文件（php.ini）在 PHP 启动时被读取。对于服务器模块版本的 PHP，仅在 web 服务器启动时读取一次。对于 CGI 和 CLI 版本，每次调用都会读取。

php.ini 的搜索路径如下（按顺序）：

  • SAPI 模块所指定的位置（Apache 2 中的 PHPIniDir 指令，CGI 和 CLI 中的 -c 命令行选项，NSAPI 中的 php_ini 参数，THTTPD 中的 PHP_INI_PATH 环境变量）。
  • PHPRC 环境变量。在 PHP 5.2.0 之前，其顺序在以下提及的注册表键值之后。
  • 自 PHP 5.2.0 起，可以为不同版本的 PHP 指定不同的 php.ini 文件位置。将以下面的顺序检查注册表目录：[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y.z]，[HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x.y] 和 [HKEY_LOCAL_MACHINE\SOFTWARE\PHP\x]，其中的 x，y 和 z 指的是 PHP 主版本号，次版本号和发行批次。如果在其中任何目录下的 IniFilePath 有键值，则第一个值将被用作 php.ini 的位置（仅适用于 windows）。
  • [HKEY_LOCAL_MACHINE\SOFTWARE\PHP] 内 IniFilePath 的值（Windows 注册表位置）。
  • 当前工作目录（对于 CLI）。
  • web 服务器目录（对于 SAPI 模块）或 PHP 所在目录（Windows 下其它情况）。
  • Windows 目录（C:\windows 或 C:\winnt），或 --with-config-file-path 编译时选项指定的位置。

如果存在 php-SAPI.ini（SAPI 是当前所用的 SAPI 名称，因此实际文件名为 php-cli.ini 或 php-apache.ini 等），则会用它替代 php.ini。SAPI 的名称可以用 php_sapi_name() 来测定。

Note:

Apache web 服务器在启动时会把目录转到根目录，这将导致 PHP 尝试在根目录下读取 php.ini，如果存在的话。

Note:

在 php.ini 中可以使用环境变量。

由扩展库处理的 php.ini 指令，其文档分别在各扩展库的页面。内核配置选项见附录。不过也许不是所有的 PHP 指令都在手册中有文档说明。要得到自己的 PHP 版本中的配置指令完整列表，请阅读 php.ini 文件，其中都有注释。此外，也许从 Git 得到的» 最新版 php.ini 也有帮助。

Example #1 php.ini 例子

; any text on a line after an unquoted semicolon (;) is ignored
[php] ; section markers (text within square brackets) are also ignored
; Boolean values can be set to either:
;    true, on, yes
; or false, off, no, none
register_globals = off
track_errors = yes

; you can enclose strings in double-quotes
include_path = ".:/usr/local/lib/php"

; backslashes are treated the same as any other character
include_path = ".;c:\php\lib"

自 PHP 5.1.0 起，有可能在 .ini 文件内引用已存在的 .ini 变量。例如：open_basedir = ${open_basedir} ":/new/dir"。

运行时配置
.user.ini 文件
运行时配置


.user.ini 文件

自 PHP 5.3.0 起，PHP 支持基于每个目录的 .htaccess 风格的 INI 文件。此类文件仅被 CGI／FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果使用 Apache，则用 .htaccess 文件有同样效果。

除了主 php.ini 之外，PHP 还会在每个目录下扫描 INI 文件，从被执行的 PHP 文件所在目录开始一直上升到 web 根目录（$_SERVER['DOCUMENT_ROOT'] 所指定的）。如果被执行的 PHP 文件在 web 根目录之外，则只扫描该目录。

在 .user.ini 风格的 INI 文件中只有具有 PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI 设置可被识别。

两个新的 INI 指令，user_ini.filename 和 user_ini.cache_ttl 控制着用户 INI 文件的使用。

user_ini.filename 设定了 PHP 会在每个目录下搜寻的文件名；如果设定为空字符串则 PHP 不会搜寻。默认值是 .user.ini。

user_ini.cache_ttl 控制着重新读取用户 INI 文件的间隔时间。默认是 300 秒（5 分钟）。

配置文件
配置可被设定范围
运行时配置


配置可被设定范围

这些模式决定着一个 PHP 的指令在何时何地，是否能够被设定。手册中的每个指令都有其所属的模式。例如有些指令可以在 PHP 脚本中用 ini_set() 来设定，而有些则只能在 php.ini 或 httpd.conf 中。

例如 output_buffering 指令是属于 PHP_INI_PERDIR，因而就不能用 ini_set() 来设定。但是 display_errors 指令是属于 PHP_INI_ALL 因而就可以在任何地方被设定，包括 ini_set()。

PHP_INI_* 模式的定义
模式 | 含义
PHP_INI_USER | 可在用户脚本（例如 ini_set()）或 Windows 注册表（自 PHP 5.3 起）以及 .user.ini 中设定
PHP_INI_PERDIR | 可在 php.ini，.htaccess 或 httpd.conf 中设定
PHP_INI_SYSTEM | 可在 php.ini 或 httpd.conf 中设定
PHP_INI_ALL | 可在任何地方设定

.user.ini 文件
怎样修改配置设定
运行时配置


怎样修改配置设定

PHP 运行于 Apache 模块方式

当使用 PHP 作为 Apache 模块时，也可以用 Apache 的配置文件（例如 httpd.conf）和 .htaccess 文件中的指令来修改 PHP 的配置设定。需要有"AllowOverride Options"或"AllowOverride All"权限才可以。

有几个 Apache 指令可以使用户在 Apache 配置文件内部修改 PHP 的配置。哪些指令属于 PHP_INI_ALL，PHP_INI_PERDIR 或 PHP_INI_SYSTEM 中的哪一个，请参考附录中的 php.ini 配置选项列表。

php_value name value

设定指定的值。只能用于 PHP_INI_ALL 或 PHP_INI_PERDIR 类型的指令。要清除先前设定的值，把 value 设为 none。

Note: 不要用 php_value 设定布尔值。应该用 php_flag（见下面）。

php_flag name on|off

用来设定布尔值的配置指令。仅能用于 PHP_INI_ALL 和 PHP_INI_PERDIR 类型的指令。

php_admin_value name value

设定指定的指令的值。不能用于 .htaccess 文件。任何用 php_admin_value 设定的指令都不能被 .htaccess 或 virtualhost 中的指令覆盖。要清除先前设定的值，把 value 设为 none。

php_admin_flag name on|off

用来设定布尔值的配置指令。不能用于 .htaccess 文件。任何用 php_admin_flag 设定的指令都不能被 .htaccess 或 virtualhost 中的指令覆盖。

Example #1 Apache 配置例子

<IfModule mod_php5.c>
  php_value include_path ".:/usr/local/lib/php"
  php_admin_flag engine on
</IfModule>
<IfModule mod_php4.c>
  php_value include_path ".:/usr/local/lib/php"
  php_admin_flag engine on
</IfModule>

Caution

PHP 常量不存在于 PHP 之外。例如在 httpd.conf 中不能使用 PHP 常量如 E_ALL 或 E_NOTICE 来设定 error_reporting 指令，因为其无意义，实际等于 0。应该用相应的掩码值来替代。这些常量可以在 php.ini 中使用。

通过 Windows 注册表修改 PHP 配置

在 Windows 下运行 PHP 时，可以用 Windows 注册表以目录为单位来修改配置。配置值存放于注册表项 HKLM\SOFTWARE\PHP\Per Directory Values 下面，子项对应于路径名。例如对于目录 c:\inetpub\wwwroot 的配置值会存放于 HKLM\SOFTWARE\PHP\Per Directory Values\c\inetpub\wwwroot 项下面。其中的设定对于任何位于此目录及其任何子目录的脚本都有效。项中的值的名称是 PHP 配置指令的名字，值的数据是字符串格式的指令值。值中的 PHP 常量不被解析。不过只有可修改范围是 PHP_INI_USER 的配置值可以用此方法设定，PHP_INI_PERDIR 的值就不行。

其它接口下的 PHP

无论怎样运行 PHP，都可以在脚本中通过 ini_set() 而在运行时修改某个值。更多信息见手册中 ini_set() 的页面。

如果对自己系统中的配置设定及其当前值的完整列表感兴趣，可以运行
phpinfo() 函数并查看其结果的页面。也可以在运行时用
ini_get() 或
get_cfg_var() 取得个别配置指令的值。

配置可被设定范围
语言参考
运行时配置


语言参考

  • 基本语法
    • PHP 标记
    • 从 HTML 中分离
    • 指令分隔符
    • 注释
  • 类型
    • 简介
    • Boolean 布尔类型
    • Integer 整型
    • Float 浮点型
    • String 字符串
    • Array 数组
    • Object 对象
    • Resource 资源类型
    • NULL
    • Callback 回调类型
    • 本文档中使用的伪类型与变量
    • 类型转换的判别
  • 变量
    • 基础
    • 预定义变量
    • 变量范围
    • 可变变量
    • 来自 PHP 之外的变量
  • 常量
    • 语法
    • 魔术常量
  • 表达式
  • 运算符
    • 运算符优先级
    • 算术运算符
    • 赋值运算符
    • 位运算符
    • 比较运算符
    • 错误控制运算符
    • 执行运算符
    • 递增／递减运算符
    • 逻辑运算符
    • 字符串运算符
    • 数组运算符
    • 类型运算符
  • 流程控制
    • 简介
    • if
    • else
    • elseif/else if
    • 流程控制的替代语法
    • while
    • do-while
    • for
    • foreach
    • break
    • continue
    • switch
    • declare
    • return
    • require
    • include
    • require_once
    • include_once
    • goto
  • 函数
    • 用户自定义函数
    • 函数的参数
    • 返回值
    • 可变函数
    • 内部（内置）函数
    • 匿名函数
  • 类与对象
    • 简介
    • 基本概念
    • 属性
    • 类常量
    • 自动加载类
    • 构造函数和析构函数
    • 访问控制（可见性）
    • 对象继承
    • 范围解析操作符 （::）
    • Static（静态）关键字
    • 抽象类
    • 对象接口
    • Trait
    • 匿名类
    • 重载
    • 遍历对象
    • 魔术方法
    • Final 关键字
    • 对象复制
    • 对象比较
    • 类型约束
    • 后期静态绑定
    • 对象和引用
    • 对象序列化
    • OOP 变更日志
  • 命名空间
    • 命名空间概述
    • 定义命名空间
    • 定义子命名空间
    • 在同一个文件中定义多个命名空间
    • 使用命名空间：基础
    • 命名空间和动态语言特征
    • namespace关键字和__NAMESPACE__常量
    • 使用命名空间：别名/导入
    • 全局空间
    • 使用命名空间：后备全局函数/常量
    • 名称解析规则
    • FAQ: things you need to know about namespaces
  • Errors
    • Basics
    • PHP 7 错误处理
  • 异常处理
    • 扩展（extend） PHP 内置的异常处理类
  • 生成器
    • 生成器总览
    • 生成器语法
    • Comparing generators with Iterator objects
  • 引用的解释
    • 引用是什么
    • 引用做什么
    • 引用不是什么
    • 引用传递
    • 引用返回
    • 取消引用
    • 引用定位
  • 预定义变量
    • 超全局变量 — 超全局变量是在全部作用域中始终可用的内置变量
    • $GLOBALS — 引用全局作用域中可用的全部变量
    • $_SERVER — 服务器和执行环境信息
    • $_GET — HTTP GET 变量
    • $_POST — HTTP POST 变量
    • $_FILES — HTTP 文件上传变量
    • $_REQUEST — HTTP Request 变量
    • $_SESSION — Session 变量
    • $_ENV — 环境变量
    • $_COOKIE — HTTP Cookies
    • $php_errormsg — 前一个错误信息
    • $HTTP_RAW_POST_DATA — 原生POST数据
    • $http_response_header — HTTP 响应头
    • $argc — 传递给脚本的参数数目
    • $argv — 传递给脚本的参数数组
  • 预定义异常
    • Exception
    • ErrorException
  • 预定义接口
    • 遍历 — Traversable（遍历）接口
    • 迭代器 — Iterator（迭代器）接口
    • 聚合式迭代器 — IteratorAggregate（聚合式迭代器）接口
    • 数组式访问 — ArrayAccess（数组式访问）接口
    • 序列化 — 序列化接口
    • Closure — Closure 类
    • 生成器 — 生成器类
  • 上下文（Context）选项和参数
    • 套接字上下文选项 — 套接字上下文选项列表
    • HTTP context 选项 — HTTP context 的选项列表
    • FTP context options — FTP context option listing
    • SSL 上下文选项 — SSL 上下文选项清单
    • CURL context options — CURL 上下文选项列表
    • Phar 上下文（context）选项 — Phar 上下文（context）选项列表
    • MongoDB context options — MongoDB context option listing
    • Context 参数 — Context 参数列表
  • 支持的协议和封装协议
    • file:// — 访问本地文件系统
    • http:// — 访问 HTTP(s) 网址
    • ftp:// — 访问 FTP(s) URLs
    • php:// — 访问各个输入/输出流（I/O streams）
    • zlib:// — 压缩流
    • data:// — 数据（RFC 2397）
    • glob:// — 查找匹配的文件路径模式
    • phar:// — PHP 归档
    • ssh2:// — Secure Shell 2
    • rar:// — RAR
    • ogg:// — 音频流
    • expect:// — 处理交互式的流
怎样修改配置设定
基本语法
PHP 手册


基本语法

Table of Contents

  • PHP 标记
  • 从 HTML 中分离
  • 指令分隔符
  • 注释
语言参考
PHP 标记
语言参考


PHP 标记

当解析一个文件时，PHP 会寻找起始和结束标记，也就是 <?php 和 ?>，这告诉 PHP 开始和停止解析二者之间的代码。此种解析方式使得 PHP 可以被嵌入到各种不同的文档中去，而任何起始和结束标记之外的部分都会被 PHP 解析器忽略。

PHP 也允许使用短标记 <? 和 ?>，但不鼓励使用。只有通过激活 php.ini 中的 short_open_tag 配置指令或者在编译 PHP 时使用了配置选项 --enable-short-tags 时才能使用短标记。

如果文件内容是纯 PHP 代码，最好在文件末尾删除 PHP 结束标记。这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符，会导致 PHP 开始输出这些空白，而脚本中此时并无输出的意图。

<?php
echo "Hello world";

// ... more code

echo "Last statement";

// 脚本至此结束，并无 PHP 结束标记

基本语法
从 HTML 中分离
基本语法


从 HTML 中分离

凡是在一对开始和结束标记之外的内容都会被 PHP 解析器忽略，这使得 PHP 文件可以具备混合内容。 可以使 PHP 嵌入到 HTML 文档中去，如下例所示。

<p>This is going to be ignored by PHP and displayed by the browser.</p>
<?php echo 'While this is going to be parsed.'; ?>
<p>This will also be ignored by PHP and displayed by the browser.</p>
这将如预期中的运行，因为当 PHP 解释器碰到 ?> 结束标记时就简单地将其后内容原样输出（除非马上紧接换行 - 见指令分隔符）直到碰到下一个开始标记；例外是处于条件语句中间时，此时 PHP 解释器会根据条件判断来决定哪些输出，哪些跳过。见下例。

使用条件结构：

Example #1 使用条件的高级分离术

<?php if ($expression == true): ?>
  This will show if the expression is true.
<?php else: ?>
  Otherwise this will show.
<?php endif; ?>
上例中 PHP 将跳过条件语句未达成的段落，即使该段落位于 PHP 开始和结束标记之外。由于 PHP 解释器会在条件未达成时直接跳过该段条件语句块，因此 PHP 会根据条件来忽略之。

要输出大段文本时，跳出 PHP 解析模式通常比将文本通过 echo 或 print 输出更有效率。

可以在 PHP 中使用四对不同的开始和结束标记。其中两种，<?php ?> 和 <script language="php"> </script> 总是可用的。另两种是短标记和 ASP 风格标记，可以在 php.ini 配置文件中打开或关闭。尽管有些人觉得短标记和 ASP 风格标记很方便，但移植性较差，通常不推荐使用。

Note:

此外注意如果将 PHP 嵌入到 XML 或 XHTML 中则需要使用 <?php ?> 标记以保持符合标准。

Example #2 PHP 开始和结束标记

1.  <?php echo 'if you want to serve XHTML or XML documents, do it like this'; ?>

2.  <script language="php">
        echo 'some editors (like FrontPage) don\'t
              like processing instructions';
    </script>

3.  <? echo 'this is the simplest, an SGML processing instruction'; ?>
    <?= expression ?> This is a shortcut for "<? echo expression ?>"

4.  <% echo 'You may optionally use ASP-style tags'; %>
    <%= $variable; # This is a shortcut for "<% echo . . ." %>

上例中的 1 和 2 中使用的标记总是可用的，其中示例 1 中是最常用，并建议使用的。

短标记（上例 3）仅在通过 php.ini 配置文件中的指令 short_open_tag 打开后才可用，或者在 PHP 编译时加入了 --enable-short-tags 选项。

ASP 风格标记（上例 4）仅在通过 php.ini 配置文件中的指令 asp_tags 打开后才可用。

Note:

在以下情况应避免使用短标记：开发需要再次发布的程序或者库，或者在用户不能控制的服务器上开发。因为目标服务器可能不支持短标记。为了代码的移植及发行，确保不要使用短标记。

Note:

在 PHP 5.2 和之前的版本中，解释器不允许一个文件的全部内容就是一个开始标记 <?php。自 PHP 5.3 起则允许此种文件，但要开始标记后有一个或更多白空格符。

Note:

自 PHP 5.4 起，短格式的 echo 标记 <?= 总会被识别并且合法，而不管 short_open_tag 的设置是什么。

PHP 标记
指令分隔符
基本语法


指令分隔符

同 C 或 Perl 一样，PHP 需要在每个语句后用分号结束指令。一段 PHP 代码中的结束标记隐含表示了一个分号；在一个 PHP 代码段中的最后一行可以不用分号结束。如果后面还有新行，则代码段的结束标记包含了行结束。

<?php
    echo "This is a test";
?>

<?php echo "This is a test" ?>

<?php echo 'We omitted the last closing tag';

Note:

文件末尾的 PHP 代码段结束标记可以不要，有些情况下当使用 include 或者 require 时省略掉会更好些，这样不期望的空白符就不会出现在文件末尾，之后仍然可以输出响应标头。在使用输出缓冲时也很便利，就不会看到由包含文件生成的不期望的空白符。

从 HTML 中分离
注释
基本语法


注释

PHP 支持 C，C++ 和 Unix Shell 风格（Perl 风格）的注释。例如:

<?php
    echo "This is a test"; // This is a one-line c++ style comment
    /* This is a multi line comment
       yet another line of comment */
    echo "This is yet another test";
    echo 'One Final Test'; # This is a one-line shell-style comment
?>

单行注释仅仅注释到行末或者当前的 PHP 代码块，视乎哪个首先出现。这意味着在 // ... ?> 或者 # ... ?> 之后的 HTML 代码将被显示出来：?> 跳出了 PHP 模式并返回了 HTML 模式，// 或 # 并不能影响到这一点。如果启用了 asp_tags 配置选项，其行为和 // %> 或 # %> 相同。不过，</script> 标记在单行注释中不会跳出 PHP 模式。

<h1>This is an <?php # echo 'simple';?> example</h1>
<p>The header above will say 'This is an  example'.</p>

C 风格的注释在碰到第一个 */ 时结束。要确保不要嵌套 C 风格的注释。试图注释掉一大块代码时很容易出现该错误。

<?php
 /*
    echo "This is a test"; /* This comment will cause a problem */
 */
?>

指令分隔符
类型
基本语法


类型

Table of Contents

  • 简介
  • Boolean 布尔类型
  • Integer 整型
  • Float 浮点型
  • String 字符串
  • Array 数组
  • Object 对象
  • Resource 资源类型
  • NULL
  • Callback 回调类型
  • 本文档中使用的伪类型与变量
  • 类型转换的判别
注释
简介
语言参考


简介

PHP 支持 8 种原始数据类型。

四种标量类型：

  • boolean（布尔型）
  • integer（整型）
  • float（浮点型，也称作 double)
  • string（字符串）

两种复合类型：

  • array（数组）
  • object（对象）

最后是两种特殊类型：

  • resource（资源）
  • NULL（无类型）

为了确保代码的易读性，本手册还介绍了一些伪类型：

  • mixed（混合类型）
  • number（数字类型）
  • callback（回调类型）

以及伪变量 $...。

可能还会读到一些关于"双精度（double）"类型的参考。实际上 double 和 float 是相同的，由于一些历史的原因，这两个名称同时存在。

变量的类型通常不是由程序员设定的，确切地说，是由 PHP 根据该变量使用的上下文在运行时决定的。

Note: 如果想查看某个表达式的值和类型，用 var_dump() 函数。

如果只是想得到一个易读懂的类型的表达方式用于调试，用 gettype() 函数。要查看某个类型，不要用 gettype()，而用 is_type 函数。以下是一些范例：

<?php
$a_bool = TRUE;   // a boolean
$a_str  = "foo";  // a string
$a_str2 = 'foo';  // a string
$an_int = 12;     // an integer

echo gettype($a_bool); // prints out:  boolean
echo gettype($a_str);  // prints out:  string

// If this is an integer, increment it by four
if (is_int($an_int)) {
    $an_int += 4;
}

// If $bool is a string, print it out
// (does not print out anything)
if (is_string($a_bool)) {
    echo "String: $a_bool";
}
?>

如果要将一个变量强制转换为某类型，可以对其使用强制转换或者 settype() 函数。

注意变量根据其当时的类型在特定场合下会表现出不同的值。更多信息见类型转换的判别。此外，还可以参考 PHP 类型比较表看不同类型相互比较的例子。

类型
Boolean 布尔类型
类型


Boolean 布尔类型

这是最简单的类型。boolean 表达了真值，可以为 TRUE 或 FALSE。

语法

要指定一个布尔值，使用关键字 TRUE 或 FALSE。两个都不区分大小写。

<?php
$foo = True; // assign the value TRUE to $foo
?>

通常运算符所返回的 boolean 值结果会被传递给控制流程。

<?php
// == 是一个操作符，它检测两个变量是否相等，并返回一个布尔值
if ($action == "show_version") {
    echo "The version is 1.23";
}

// 这样做是不必要的...
if ($show_separators == TRUE) {
    echo "<hr>\n";
}

// ...因为可以使用下面这种简单的方式：
if ($show_separators) {
    echo "<hr>\n";
}
?>

转换为布尔值

要明确地将一个值转换成 boolean，用 (bool) 或者 (boolean) 来强制转换。但是很多情况下不需要用强制转换，因为当运算符，函数或者流程控制结构需要一个 boolean 参数时，该值会被自动转换。

参见类型转换的判别。

当转换为 boolean 时，以下值被认为是 FALSE：

  • 布尔值 FALSE 本身
  • 整型值 0（零）
  • 浮点型值 0.0（零）
  • 空字符串，以及字符串 "0"
  • 不包括任何元素的数组
  • 不包括任何成员变量的对象（仅 PHP 4.0 适用）
  • 特殊类型 NULL（包括尚未赋值的变量）
  • 从空标记生成的 SimpleXML 对象

所有其它值都被认为是 TRUE（包括任何资源）。

Warning

-1 和其它非零值（不论正负）一样，被认为是 TRUE！

<?php
var_dump((bool) "");        // bool(false)
var_dump((bool) 1);         // bool(true)
var_dump((bool) -2);        // bool(true)
var_dump((bool) "foo");     // bool(true)
var_dump((bool) 2.3e5);     // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array());   // bool(false)
var_dump((bool) "false");   // bool(true)
?>
简介
Integer 整型
类型


Integer 整型

一个 integer 是集合 ? = {..., -2, -1, 0, 1, 2, ...} 中的一个数。

参见：

  • 任意长度整数／GMP
  • 浮点型
  • 任意精度数学库／BCMath

语法

整型值可以使用十进制，十六进制，八进制或二进制表示，前面可以加上可选的符号（- 或者 +）。

二进制表达的 integer 自 PHP 5.4.0 起可用。

要使用八进制表达，数字前必须加上 0（零）。要使用十六进制表达，数字前必须加上 0x。要使用二进制表达，数字前必须加上 0b。

Example #1 整数文字表达

<?php
$a = 1234; // 十进制数
$a = -123; // 负数
$a = 0123; // 八进制数 (等于十进制 83)
$a = 0x1A; // 十六进制数 (等于十进制 26)
?>

integer 语法的结构形式是：

decimal     : [1-9][0-9]*
            | 0

hexadecimal : 0[xX][0-9a-fA-F]+

octal       : 0[0-7]+

binary      : 0b[01]+

integer     : [+-]?decimal
            | [+-]?hexadecimal
            | [+-]?octal
            | [+-]?binary

整型数的字长和平台有关，尽管通常最大值是大约二十亿（32 位有符号）。64 位平台下的最大值通常是大约 9E18。PHP 不支持无符号整数。Integer 值的字长可以用常量 PHP_INT_SIZE来表示，自 PHP 4.4.0 和 PHP 5.0.5后，最大值可以用常量 PHP_INT_MAX 来表示。

Warning

如果向八进制数传递了一个非法数字（即 8 或 9），则后面其余数字会被忽略。

Example #2 八进制数的怪事

<?php
var_dump(01090); // 八进制 010 = 十进制 8
?>

整数溢出

如果给定的一个数超出了 integer 的范围，将会被解释为 float。同样如果执行的运算结果超出了 integer 范围，也会返回 float。

Example #3 32 位系统下的整数溢出

<?php
$large_number = 2147483647;
var_dump($large_number);                     // int(2147483647)

$large_number = 2147483648;
var_dump($large_number);                     // float(2147483648)

$million = 1000000;
$large_number =  50000 * $million;
var_dump($large_number);                     // float(50000000000)
?>

Example #4 64 位系统下的整数溢出

<?php
$large_number = 9223372036854775807;
var_dump($large_number);                     // int(9223372036854775807)

$large_number = 9223372036854775808;
var_dump($large_number);                     // float(9.2233720368548E+18)

$million = 1000000;
$large_number =  50000000000000 * $million;
var_dump($large_number);                     // float(5.0E+19)
?>

PHP 中没有整除的运算符。1/2 产生出 float 0.5。值可以舍弃小数部分强制转换为 integer，或者使用 round() 函数可以更好地进行四舍五入。

<?php
var_dump(25/7);         // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7));  // float(4)
?>

转换为整型

要明确地将一个值转换为 integer，用 (int) 或 (integer) 强制转换。不过大多数情况下都不需要强制转换，因为当运算符，函数或流程控制需要一个 integer 参数时，值会自动转换。还可以通过函数 intval() 来将一个值转换成整型。

参见：类型转换的判别。

从布尔值转换

FALSE 将产生出 0（零），TRUE 将产生出 1（壹）。

从浮点型转换

当从浮点数转换成整数时，将向下取整。

如果浮点数超出了整数范围（32 位平台下通常为 +/- 2.15e+9 = 2^31，64 位平台下通常为 +/- 9.22e+18 = 2^63），则结果为未定义，因为没有足够的精度给出一个确切的整数结果。在此情况下没有警告，甚至没有任何通知！

Warning

决不要将未知的分数强制转换为 integer，这样有时会导致不可预料的结果。

<?php
echo (int) ( (0.1+0.7) * 10 ); // 显示 7!
?>

参见关于浮点数精度的警告。

从字符串转换

参见字符串转换为数值。

从其它类型转换

Caution

没有定义从其它类型转换为整型的行为。不要依赖任何现有的行为，因为它会未加通知地改变。

Boolean 布尔类型
Float 浮点型
类型


Float 浮点型

浮点型（也叫浮点数 float，双精度数 double 或实数 real）可以用以下任一语法定义：

<?php
$a = 1.234;
$b = 1.2e3;
$c = 7E-10;
?>

浮点数的形式表示：

LNUM          [0-9]+
DNUM          ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*)
EXPONENT_DNUM [+-]?(({LNUM} | {DNUM}) [eE][+-]? {LNUM})

浮点数的字长和平台相关，尽管通常最大值是 1.8e308 并具有 14 位十进制数字的精度（64 位 IEEE 格式）。

Warning

浮点数的精度

浮点数的精度有限。尽管取决于系统，PHP 通常使用 IEEE 754 双精度格式，则由于取整而导致的最大相对误差为 1.11e-16。非基本数学运算可能会给出更大误差，并且要考虑到进行复合运算时的误差传递。

此外，以十进制能够精确表示的有理数如 0.1 或 0.7，无论有多少尾数都不能被内部所使用的二进制精确表示，因此不能在不丢失一点点精度的情况下转换为二进制的格式。这就会造成混乱的结果：例如，floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8，因为该结果内部的表示其实是类似 7.9999999999999991118...。

所以永远不要相信浮点数结果精确到了最后一位，也永远不要比较两个浮点数是否相等。如果确实需要更高的精度，应该使用任意精度数学函数或者 gmp 函数。

参见» 浮点数指南网页的简单解释。

转换为浮点数

如果希望了解有关何时和如何将字符串转换成浮点数的信息，请参阅"字符串转换为数值"一节。对于其它类型的值，其情况类似于先将值转换成整型，然后再转换成浮点。请参阅"转换为整型"一节以获取更多信息。自 PHP 5 起，如果试图将对象转换为浮点数，会发出一条 E_NOTICE 错误消息。

比较浮点数

如上述警告信息所言，由于内部表达方式的原因，比较两个浮点数是否相等是有问题的。不过还是有迂回的方法来比较浮点数值的。

要测试浮点数是否相等，要使用一个仅比该数值大一丁点的最小误差值。该值也被称为机器极小值（epsilon）或最小单元取整数，是计算中所能接受的最小的差别值。

$a 和 $b 在小数点后五位精度内都是相等的。

<?php
$a = 1.23456789;
$b = 1.23456780;
$epsilon = 0.00001;

if(abs($a-$b) < $epsilon) {
    echo "true";
}
?>

NaN

某些数学运算会产生一个由常量 NAN 所代表的结果。此结果代表着一个在浮点数运算中未定义或不可表述的值。任何拿此值与其它任何值进行的松散或严格比较的结果都是 FALSE。

由于 NAN 代表着任何不同值，不应拿 NAN 去和其它值进行比较，包括其自身，应该用 is_nan() 来检查。

Integer 整型
String 字符串
类型


String 字符串

一个字符串 string 就是由一系列的字符组成，其中每个字符等同于一个字节。这意味着 PHP 只能支持 256 的字符集，因此不支持 Unicode 。详见字符串类型详解。

Note: string 最大可以达到 2GB。

语法

一个字符串可以用 4 种方式表达：

  • 单引号
  • 双引号
  • heredoc 语法结构
  • nowdoc 语法结构（自 PHP 5.3.0 起）

单引号

定义一个字符串的最简单的方法是用单引号把它包围起来（字符 '）。

要表达一个单引号自身，需在它的前面加个反斜线（\）来转义。要表达一个反斜线自身，则用两个反斜线（\\）。其它任何方式的反斜线都会被当成反斜线本身：也就是说如果想使用其它转义序列例如 \r 或者 \n，并不代表任何特殊含义，就单纯是这两个字符本身。

Note: 不像双引号和 heredoc 语法结构，在单引号字符串中的变量和特殊字符的转义序列将不会被替换。

<?php
echo 'this is a simple string';

// 可以录入多行
echo 'You can also have embedded newlines in
strings this way as it is
okay to do';

// 输出： Arnold once said: "I'll be back"
echo 'Arnold once said: "I\'ll be back"';

// 输出： You deleted C:\*.*?
echo 'You deleted C:\\*.*?';

// 输出： You deleted C:\*.*?
echo 'You deleted C:\*.*?';

// 输出： This will not expand: \n a newline
echo 'This will not expand: \n a newline';

// 输出： Variables do not $expand $either
echo 'Variables do not $expand $either';
?>

双引号

如果字符串是包围在双引号（"）中， PHP 将对一些特殊的字符进行解析：

转义字符
序列 | 含义
\n | 换行（ASCII 字符集中的 LF 或 0x0A (10)）
\r | 回车（ASCII 字符集中的 CR 或 0x0D (13)）
\t | 水平制表符（ASCII 字符集中的 HT 或 0x09 (9)）
\v | 垂直制表符（ASCII 字符集中的 VT 或 0x0B (11)）（自 PHP 5.2.5 起）
\e | Escape（ASCII 字符集中的 ESC 或 0x1B (27)）（自 PHP 5.4.0 起）
\f | 换页（ASCII 字符集中的 FF 或 0x0C (12)）（自 PHP 5.2.5 起）
\\ | 反斜线
\$ | 美元标记
\" | 双引号
\[0-7]{1,3} | 符合该正则表达式序列的是一个以八进制方式来表达的字符
\x[0-9A-Fa-f]{1,2} | 符合该正则表达式序列的是一个以十六进制方式来表达的字符

和单引号字符串一样，转义任何其它字符都会导致反斜线被显示出来。PHP 5.1.1 以前，\{$var} 中的反斜线还不会被显示出来。

用双引号定义的字符串最重要的特征是变量会被解析，详见变量解析。

Heredoc 结构

第三种表达字符串的方法是用 heredoc 句法结构：<<<。在该运算符之后要提供一个标识符，然后换行。接下来是字符串 string 本身，最后要用前面定义的标识符作为结束标志。

结束时所引用的标识符必须在该行的第一列，而且，标识符的命名也要像其它标签一样遵守 PHP 的规则：只能包含字母、数字和下划线，并且必须以字母和下划线作为开头。

Warning

要注意的是结束标识符这行除了可能有一个分号（;）外，绝对不能包含其它字符。这意味着标识符不能缩进，分号的前后也不能有任何空白或制表符。更重要的是结束标识符的前面必须是个被本地操作系统认可的换行，比如在 UNIX 和 Mac OS X 系统中是 \n，而结束定界符（可能其后有个分号）之后也必须紧跟一个换行。

如果不遵守该规则导致结束标识不"干净"，PHP 将认为它不是结束标识符而继续寻找。如果在文件结束前也没有找到一个正确的结束标识符，PHP 将会在最后一行产生一个解析错误。

Heredocs 结构不能用来初始化类的属性。自 PHP 5.3 起，此限制仅对 heredoc 包含变量时有效。

Example #1 非法的示例

<?php
class foo {
    public $bar = <<<EOT
bar
    EOT;
}
?>

Heredoc 结构就象是没有使用双引号的双引号字符串，这就是说在 heredoc 结构中单引号不用被转义，但是上文中列出的转义序列还可以使用。变量将被替换，但在 heredoc 结构中含有复杂的变量时要格外小心。

Example #2 Heredoc 结构的字符串示例

<?php
$str = <<<EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;

/* 含有变量的更复杂示例 */
class foo
{
    var $foo;
    var $bar;

    function foo()
    {
        $this->foo = 'Foo';
        $this->bar = array('Bar1', 'Bar2', 'Bar3');
    }
}

$foo = new foo();
$name = 'MyName';

echo <<<EOT
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should print a capital 'A': \x41
EOT;
?>

以上例程会输出：

My name is "MyName". I am printing some Foo.
Now, I am printing some Bar2.
This should print a capital 'A': A

也可以把 Heredoc 结构用在函数参数中来传递数据：

Example #3 Heredoc 结构在参数中的示例

<?php
var_dump(array(<<<EOD
foobar!
EOD
));
?>

在 PHP 5.3.0 以后，也可以用 Heredoc 结构来初始化静态变量和类的属性和常量：

Example #4 使用 Heredoc 结构来初始化静态值

<?php
// 静态变量
function foo()
{
    static $bar = <<<LABEL
Nothing in here...
LABEL;
}

// 类的常量、属性
class foo
{
    const BAR = <<<FOOBAR
Constant example
FOOBAR;

    public $baz = <<<FOOBAR
Property example
FOOBAR;
}
?>

自 PHP 5.3.0 起还可以在 Heredoc 结构中用双引号来声明标识符：

Example #5 在 heredoc 结构中使用双引号

<?php
echo <<<"FOOBAR"
Hello World!
FOOBAR;
?>

Nowdoc 结构

就象 heredoc 结构类似于双引号字符串，Nowdoc 结构是类似于单引号字符串的。Nowdoc 结构很象 heredoc 结构，但是 nowdoc 中不进行解析操作。这种结构很适合用于嵌入 PHP 代码或其它大段文本而无需对其中的特殊字符进行转义。与 SGML 的 <![CDATA[ ]]> 结构是用来声明大段的不用解析的文本类似，nowdoc 结构也有相同的特征。

一个 nowdoc 结构也用和 heredocs 结构一样的标记 <<<， 但是跟在后面的标识符要用单引号括起来，即 <<<'EOT'。Heredoc 结构的所有规则也同样适用于 nowdoc 结构，尤其是结束标识符的规则。

Example #6 Nowdoc 结构字符串示例

<?php
$str = <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
EOD;

/* 含有变量的更复杂的示例 */
class foo
{
    public $foo;
    public $bar;

    function foo()
    {
        $this->foo = 'Foo';
        $this->bar = array('Bar1', 'Bar2', 'Bar3');
    }
}

$foo = new foo();
$name = 'MyName';

echo <<<'EOT'
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should not print a capital 'A': \x41
EOT;
?>

以上例程会输出：

My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should not print a capital 'A': \x41

Note:

不象 heredoc 结构，nowdoc 结构可以用在任意的静态数据环境中，最典型的示例是用来初始化类的属性或常量：

Example #7 静态数据的示例

<?php
class foo {
    public $bar = <<<'EOT'
bar
EOT;
}
?>

Note:

Nowdoc 结构是在 PHP 5.3.0 中加入的。

变量解析

当字符串用双引号或 heredoc 结构定义时，其中的变量将会被解析。

这里共有两种语法规则：一种简单规则，一种复杂规则。简单的语法规则是最常用和最方便的，它可以用最少的代码在一个 string 中嵌入一个变量，一个 array 的值，或一个 object 的属性。

复杂规则语法的显著标记是用花括号包围的表达式。

简单语法

当 PHP 解析器遇到一个美元符号（$）时，它会和其它很多解析器一样，去组合尽量多的标识以形成一个合法的变量名。可以用花括号来明确变量名的界线。

<?php
$juice = "apple";

echo "He drank some $juice juice.".PHP_EOL;
// Invalid. "s" is a valid character for a variable name, but the variable is $juice.
echo "He drank some juice made of $juices.";
?>

以上例程会输出：

He drank some apple juice.
He drank some juice made of .

类似的，一个 array 索引或一个 object 属性也可被解析。数组索引要用方括号（]）来表示索引结束的边际，对象属性则是和上述的变量规则相同。

Example #8 简单语法示例

<?php
$juices = array("apple", "orange", "koolaid1" => "purple");

echo "He drank some $juices[0] juice.".PHP_EOL;
echo "He drank some $juices[1] juice.".PHP_EOL;
echo "He drank some juice made of $juice[0]s.".PHP_EOL; // Won't work
echo "He drank some $juices[koolaid1] juice.".PHP_EOL;

class people {
    public $john = "John Smith";
    public $jane = "Jane Smith";
    public $robert = "Robert Paulsen";

    public $smith = "Smith";
}

$people = new people();

echo "$people->john drank some $juices[0] juice.".PHP_EOL;
echo "$people->john then said hello to $people->jane.".PHP_EOL;
echo "$people->john's wife greeted $people->robert.".PHP_EOL;
echo "$people->robert greeted the two $people->smiths."; // Won't work
?>

以上例程会输出：

He drank some apple juice.
He drank some orange juice.
He drank some juice made of s.
He drank some purple juice.
John Smith drank some apple juice.
John Smith then said hello to Jane Smith.
John Smith's wife greeted Robert Paulsen.
Robert Paulsen greeted the two .

如果想要表达更复杂的结构，请用复杂语法。

复杂（花括号）语法

复杂语法不是因为其语法复杂而得名，而是因为它可以使用复杂的表达式。

任何具有 string 表达的标量变量，数组单元或对象属性都可使用此语法。只需简单地像在 string 以外的地方那样写出表达式，然后用花括号 { 和 } 把它括起来即可。由于 { 无法被转义，只有 $ 紧挨着 { 时才会被识别。可以用 {\$ 来表达 {$。下面的示例可以更好的解释：

<?php
// 显示所有错误
error_reporting(E_ALL);

$great = 'fantastic';

// 无效，输出: This is { fantastic}
echo "This is { $great}";

// 有效，输出： This is fantastic
echo "This is {$great}";
echo "This is ${great}";

// 有效
echo "This square is {$square->width}00 centimeters broad.";

// 有效，只有通过花括号语法才能正确解析带引号的键名
echo "This works: {$arr['key']}";

// 有效
echo "This works: {$arr[4][3]}";

// 这是错误的表达式，因为就象 $foo[bar] 的格式在字符串以外也是错的一样。
// 换句话说，只有在 PHP 能找到常量 foo 的前提下才会正常工作；这里会产生一个
// E_NOTICE (undefined constant) 级别的错误。
echo "This is wrong: {$arr[foo][3]}";

// 有效，当在字符串中使用多重数组时，一定要用括号将它括起来
echo "This works: {$arr['foo'][3]}";

// 有效
echo "This works: " . $arr['foo'][3];

echo "This works too: {$obj->values[3]->name}";

echo "This is the value of the var named $name: {${$name}}";

echo "This is the value of the var named by the return value of getName(): {${getName()}}";

echo "This is the value of the var named by the return value of \$object->getName(): {${$object->getName()}}";

// 无效，输出： This is the return value of getName(): {getName()}
echo "This is the return value of getName(): {getName()}";
?>

也可以在字符串中用此语法通过变量来调用类的属性。

<?php
class foo {
    var $bar = 'I am bar.';
}

$foo = new foo();
$bar = 'bar';
$baz = array('foo', 'bar', 'baz', 'quux');
echo "{$foo->$bar}\n";
echo "{$foo->$baz[1]}\n";
?>

以上例程会输出：

I am bar.
I am bar.

Note:

函数、方法、静态类变量和类常量只有在 PHP 5 以后才可在 {$} 中使用。然而，只有在该字符串被定义的命名空间中才可以将其值作为变量名来访问。只单一使用花括号 ({}) 无法处理从函数或方法的返回值或者类常量以及类静态变量的值。

<?php
// 显示所有错误
error_reporting(E_ALL);

class beers {
    const softdrink = 'rootbeer';
    public static $ale = 'ipa';
}

$rootbeer = 'A & W';
$ipa = 'Alexander Keith\'s';

// 有效，输出： I'd like an A & W
echo "I'd like an {${beers::softdrink}}\n";

// 也有效，输出： I'd like an Alexander Keith's
echo "I'd like an {${beers::$ale}}\n";
?>

存取和修改字符串中的字符

string 中的字符可以通过一个从 0 开始的下标，用类似 array 结构中的方括号包含对应的数字来访问和修改，比如 $str[42]。可以把 string 当成字符组成的 array。函数 substr() 和 substr_replace() 可用于操作多于一个字符的情况。

Note: string 也可用花括号访问，比如 $str{42}。

Warning

用超出字符串长度的下标写入将会拉长该字符串并以空格填充。非整数类型下标会被转换成整数。非法下标类型会产生一个 E_NOTICE 级别错误。用负数下标写入字符串时会产生一个 E_NOTICE 级别错误，用负数下标读取字符串时返回空字符串。写入时只用到了赋值字符串的第一个字符。用空字符串赋值则赋给的值是 NULL 字符。

Warning

PHP 的字符串在内部是字节组成的数组。因此用花括号访问或修改字符串对多字节字符集很不安全。仅应对单字节编码例如 ISO-8859-1 的字符串进行此类操作。

Example #9 一些字符串示例

<?php
// 取得字符串的第一个字符
$str = 'This is a test.';
$first = $str[0];

// 取得字符串的第三个字符
$third = $str[2];

// 取得字符串的最后一个字符
$str = 'This is still a test.';
$last = $str[strlen($str)-1];

// 修改字符串的最后一个字符
$str = 'Look at the sea';
$str[strlen($str)-1] = 'e';

?>

自 PHP 5.4 起字符串下标必须为整数或可转换为整数的字符串，否则会发出警告。之前例如 "foo" 的下标会无声地转换成 0。

Example #10 PHP 5.3 和 PHP 5.4 的区别

<?php
$str = 'abc';

var_dump($str['1']);
var_dump(isset($str['1']));

var_dump($str['1.0']);
var_dump(isset($str['1.0']));

var_dump($str['x']);
var_dump(isset($str['x']));

var_dump($str['1x']);
var_dump(isset($str['1x']));
?>

以上例程在PHP 5.3中的输出：

string(1) "b"
bool(true)
string(1) "b"
bool(true)
string(1) "a"
bool(true)
string(1) "b"
bool(true)

以上例程在PHP 5.4中的输出：

string(1) "b"
bool(true)

Warning: Illegal string offset '1.0' in /tmp/t.php on line 7
string(1) "b"
bool(false)

Warning: Illegal string offset 'x' in /tmp/t.php on line 9
string(1) "a"
bool(false)
string(1) "b"
bool(false)

Note:

用 [] 或 {} 访问任何其它类型（不包括数组或具有相应接口的对象实现）的变量只会无声地返回 NULL。

Note:

PHP 5.5 增加了直接在字符串原型中用 [] 或 {} 访问字符的支持。

有用的函数和运算符

字符串可以用 '.'（点）运算符连接起来，注意 '+'（加号）运算符没有这个功能。更多信息参考字符串运算符。

对于 string 的操作有很多有用的函数。

可以参考字符串函数了解大部分函数，高级的查找与替换功能可以参考正则表达式函数或 Perl 兼容正则表达式函数。

另外还有 URL 字符串函数，也有加密／解密字符串的函数（mcrypt 和 mhash）。

最后，可以参考字符类型函数。

转换成字符串

一个值可以通过在其前面加上 (string) 或用 strval() 函数来转变成字符串。在一个需要字符串的表达式中，会自动转换为 string。比如在使用函数 echo 或 print 时，或在一个变量和一个 string 进行比较时，就会发生这种转换。类型和类型转换可以更好的解释下面的事情，也可参考函数 settype()。

一个布尔值 boolean 的 TRUE 被转换成 string 的 "1"。Boolean 的 FALSE 被转换成 ""（空字符串）。这种转换可以在 boolean 和 string 之间相互进行。

一个整数 integer 或浮点数 float 被转换为数字的字面样式的 string（包括 float 中的指数部分）。使用指数计数法的浮点数（4.1E+6）也可转换。

Note:

在脚本的区域（category LC_NUMERIC）中定义了十进制小数点字符。参见 setlocale()。

数组 array 总是转换成字符串 "Array"，因此，echo 和 print 无法显示出该数组的内容。要显示某个单元，可以用 echo $arr['foo'] 这种结构。要显示整个数组内容见下文。

在 PHP 4 中对象 object 总是被转换成字符串 "Object"，如果为了调试原因需要打印出对象的值，请继续阅读下文。为了得到对象的类的名称，可以用 get_class() 函数。自 PHP 5 起，适当时可以用 __toString 方法。

资源 resource 总会被转变成 "Resource id #1" 这种结构的字符串，其中的 1 是 PHP 在运行时分配给该 resource 的唯一值。不要依赖此结构，可能会有变更。要得到一个 resource 的类型，可以用函数 get_resource_type()。

NULL 总是被转变成空字符串。

如上面所说的，直接把 array，object 或 resource 转换成 string 不会得到除了其类型之外的任何有用信息。可以使用函数 print_r() 和 var_dump() 列出这些类型的内容。

大部分的 PHP 值可以转变成 string 来永久保存，这被称作串行化，可以用函数 serialize() 来实现。如果 PHP 引擎设定支持 WDDX，PHP 值也可被串行化为格式良好的 XML 文本。

字符串转换为数值

当一个字符串被当作一个数值来取值，其结果和类型如下：

如果该字符串没有包含 '.'，'e' 或 'E' 并且其数字值在整型的范围之内（由 PHP_INT_MAX 所定义），该字符串将被当成 integer 来取值。其它所有情况下都被作为 float 来取值。

该字符串的开始部分决定了它的值。如果该字符串以合法的数值开始，则使用该数值。否则其值为 0（零）。合法数值由可选的正负号，后面跟着一个或多个数字（可能有小数点），再跟着可选的指数部分。指数部分由 'e' 或 'E' 后面跟着一个或多个数字构成。

<?php
$foo = 1 + "10.5";                // $foo is float (11.5)
$foo = 1 + "-1.3e3";              // $foo is float (-1299)
$foo = 1 + "bob-1.3e3";           // $foo is integer (1)
$foo = 1 + "bob3";                // $foo is integer (1)
$foo = 1 + "10 Small Pigs";       // $foo is integer (11)
$foo = 4 + "10.2 Little Piggies"; // $foo is float (14.2)
$foo = "10.0 pigs " + 1;          // $foo is float (11)
$foo = "10.0 pigs " + 1.0;        // $foo is float (11)
?>

更多信息可以参考 Unix 手册中的 strtod(3)。

本节中的示例可以通过复制／粘贴到下面的代码中来显示：

<?php
echo "\$foo==$foo; type is " . gettype ($foo) . "<br />\n";
?>

不要想像在 C 语言中的那样，通过将一个字符转换成整数以得到其代码。使用函数 ord() 和 chr() 实现 ASCII 码和字符间的转换。

字符串类型详解

PHP 中的 string 的实现方式是一个由字节组成的数组再加上一个整数指明缓冲区长度。并无如何将字节转换成字符的信息，由程序员来决定。字符串由什么值来组成并无限制；特别的，其值为 0（"NUL bytes"）的字节可以处于字符串任何位置（不过有几个函数，在本手册中被称为非"二进制安全"的，也许会把 NUL 字节之后的数据全都忽略）。

字符串类型的此特性解释了为什么 PHP 中没有单独的"byte"类型 - 已经用字符串来代替了。返回非文本值的函数 - 例如从网络套接字读取的任意数据 - 仍会返回字符串。

由于 PHP 并不特别指明字符串的编码，那字符串到底是怎样编码的呢？例如字符串 "á" 到底是等于 "\xE1"（ISO-8859-1），"\xC3\xA1"（UTF-8，C form），"\x61\xCC\x81"（UTF-8，D form）还是任何其它可能的表达呢？答案是字符串会被按照该脚本文件相同的编码方式来编码。因此如果一个脚本的编码是 ISO-8859-1，则其中的字符串也会被编码为 ISO-8859-1，以此类推。不过这并不适用于激活了 Zend Multibyte 时；此时脚本可以是以任何方式编码的（明确指定或被自动检测）然后被转换为某种内部编码，然后字符串将被用此方式编码。注意脚本的编码有一些约束（如果激活了 Zend Multibyte 则是其内部编码）- 这意味着此编码应该是 ASCII 的兼容超集，例如 UTF-8 或 ISO-8859-1。不过要注意，依赖状态的编码其中相同的字节值可以用于首字母和非首字母而转换状态，这可能会造成问题。

当然了，要做到有用，操作文本的函数必须假定字符串是如何编码的。不幸的是，PHP 关于此的函数有很多变种：

  • 某些函数假定字符串是以单字节编码的，但并不需要将字节解释为特定的字符。例如 substr()，strpos()，strlen() 和 strcmp()。理解这些函数的另一种方法是它们作用于内存缓冲区，即按照字节和字节下标操作。
  • 某些函数被传递入了字符串的编码方式，也可能会假定默认无此信息。例如 htmlentities() 和 mbstring 扩展中的大部分函数。
  • 其它函数使用了当前区域（见 setlocale()），但是逐字节操作。例如
strcasecmp()，strtoupper() 和
ucfirst()。这意味着这些函数只能用于单字节编码，而且编码要与区域匹配。例如
strtoupper("á") 在区域设定正确并且 á
是单字节编码时会返回 "á"。如果是用 UTF-8
编码则不会返回正确结果，其结果根据当前区域有可能返回损坏的值。
  • 最后一些函数会假定字符串是使用某特定编码的，通常是 UTF-8。intl 扩展和 PCRE（上例中仅在使用了 u 修饰符时）扩展中的大部分函数都是这样。尽管这是由于其特殊用途，utf8_decode() 会假定 UTF-8 编码而 utf8_encode() 会假定 ISO-8859-1 编码。

最后，要书写能够正确使用 Unicode 的程序依赖于很小心地避免那些可能会损坏数据的函数。要使用来自于 intl 和 mbstring 扩展的函数。不过使用能处理 Unicode 编码的函数只是个开始。不管用何种语言提供的函数，最基本的还是了解 Unicode 规格。例如一个程序如果假定只有大写和小写，那可是大错特错。

Float 浮点型
Array 数组
类型


Array 数组

PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化，因此可以把它当成真正的数组，或列表（向量），散列表（是映射的一种实现），字典，集合，栈，队列以及更多可能性。由于数组元素的值也可以是另一个数组，树形结构和多维数组也是允许的。

解释这些结构超出了本手册的范围，但对于每种结构至少会提供一个例子。要得到这些结构的更多信息，建议参考有关此广阔主题的其它著作。

语法

定义数组 array()

可以用 array() 语言结构来新建一个数组。它接受任意数量用逗号分隔的 键（key） => 值（value）对。

array(  key =>  value
     , ...
     )
// 键（key）可是是一个整数 integer 或字符串 string
// 值（value）可以是任意类型的值

最后一个数组单元之后的逗号可以省略。通常用于单行数组定义中，例如常用 array(1, 2) 而不是 array(1, 2, )。对多行数组定义通常保留最后一个逗号，这样要添加一个新单元时更方便。

自 5.4 起可以使用短数组定义语法，用 [] 替代 array()。

Example #1 一个简单数组

<?php
$array = array(
    "foo" => "bar",
    "bar" => "foo",
);

// 自 PHP 5.4 起
$array = [
    "foo" => "bar",
    "bar" => "foo",
];
?>

key 可以是 integer 或者 string。value 可以是任意类型。

此外 key 会有如下的强制转换：

  • 包含有合法整型值的字符串会被转换为整型。例如键名 "8" 实际会被储存为 8。但是 "08" 则不会强制转换，因为其不是一个合法的十进制数值。
  • 浮点数也会被转换为整型，意味着其小数部分会被舍去。例如键名 8.7 实际会被储存为 8。
  • 布尔值也会被转换成整型。即键名 true 实际会被储存为 1 而键名 false 会被储存为 0。
  • Null 会被转换为空字符串，即键名 null 实际会被储存为 ""。
  • 数组和对象不能被用为键名。坚持这么做会导致警告：Illegal offset type。

如果在数组定义中多个单元都使用了同一个键名，则只使用了最后一个，之前的都被覆盖了。

Example #2 类型强制与覆盖示例

<?php
$array = array(
    1    => "a",
    "1"  => "b",
    1.5  => "c",
    true => "d",
);
var_dump($array);
?>

以上例程会输出：

array(1) {
  [1]=>
  string(1) "d"
}

上例中所有的键名都被强制转换为 1，则每一个新单元都会覆盖前一个的值，最后剩下的只有一个 "d"。

PHP 数组可以同时含有 integer 和 string 类型的键名，因为 PHP 实际并不区分索引数组和关联数组。

如果对给出的值没有指定键名，则取当前最大的整数索引值，而新的键名将是该值加一。如果指定的键名已经有了值，则该值会被覆盖。

Example #3 混合 integer 和 string 键名

<?php
$array = array(
    "foo" => "bar",
    "bar" => "foo",
    100   => -100,
    -100  => 100,
);
var_dump($array);
?>

以上例程会输出：

array(4) {
  ["foo"]=>
  string(3) "bar"
  ["bar"]=>
  string(3) "foo"
  [100]=>
  int(-100)
  [-100]=>
  int(100)
}

key 为可选项。如果未指定，PHP 将自动使用之前用过的最大 integer 键名加上 1 作为新的键名。

Example #4 没有键名的索引数组

<?php
$array = array("foo", "bar", "hallo", "world");
var_dump($array);
?>

以上例程会输出：

array(4) {
  [0]=>
  string(3) "foo"
  [1]=>
  string(3) "bar"
  [2]=>
  string(5) "hallo"
  [3]=>
  string(5) "world"
}

还可以只对某些单元指定键名而对其它的空置：

Example #5 仅对部分单元指定键名

<?php
$array = array(
         "a",
         "b",
    6 => "c",
         "d",
);
var_dump($array);
?>

以上例程会输出：

array(4) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  [6]=>
  string(1) "c"
  [7]=>
  string(1) "d"
}

可以看到最后一个值 "d" 被自动赋予了键名 7。这是由于之前最大的整数键名是 6。

用方括号语法访问数组单元

数组单元可以通过 array[key] 语法来访问。

Example #6 访问数组单元

<?php
$array = array(
    "foo" => "bar",
    42    => 24,
    "multi" => array(
         "dimensional" => array(
             "array" => "foo"
         )
    )
);

var_dump($array["foo"]);
var_dump($array[42]);
var_dump($array["multi"]["dimensional"]["array"]);
?>

以上例程会输出：

string(3) "bar"
int(24)
string(3) "foo"

Note:

方括号和花括号可以互换使用来访问数组单元（例如 $array[42] 和 $array{42} 在上例中效果相同）。

自 PHP 5.4 起可以用数组间接引用函数或方法调用的结果。之前只能通过一个临时变量。

自 PHP 5.5 起可以用数组间接引用一个数组原型。

Example #7 数组间接引用

<?php
function getArray() {
    return array(1, 2, 3);
}

// on PHP 5.4
$secondElement = getArray()[1];

// previously
$tmp = getArray();
$secondElement = $tmp[1];

// or
list(, $secondElement) = getArray();
?>

Note:

试图访问一个未定义的数组键名与访问任何未定义变量一样：会导致 E_NOTICE 级别错误信息，其结果为 NULL。

用方括号的语法新建／修改

可以通过明示地设定其中的值来修改一个已有数组。

这是通过在方括号内指定键名来给数组赋值实现的。也可以省略键名，在这种情况下给变量名加上一对空的方括号（[]）。

$arr[key] = value;
$arr[] = value;
// key 可以是 integer 或 string
// value 可以是任意类型的值

如果 $arr 还不存在，将会新建一个，这也是另一种新建数组的方法。不过并不鼓励这样做，因为如果 $arr 已经包含有值（例如来自请求变量的 string）则此值会保留而 [] 实际上代表着字符串访问运算符。初始化变量的最好方式是直接给其赋值。。

要修改某个值，通过其键名给该单元赋一个新值。要删除某键值对，对其调用 unset() 函数。

<?php
$arr = array(5 => 1, 12 => 2);

$arr[] = 56;    // This is the same as $arr[13] = 56;
                // at this point of the script

$arr["x"] = 42; // This adds a new element to
                // the array with key "x"

unset($arr[5]); // This removes the element from the array

unset($arr);    // This deletes the whole array
?>

Note:

如上所述，如果给出方括号但没有指定键名，则取当前最大整数索引值，新的键名将是该值加上 1（但是最小为 0）。如果当前还没有整数索引，则键名将为 0。

注意这里所使用的最大整数键名不一定当前就在数组中。它只要在上次数组重新生成索引后曾经存在过就行了。以下面的例子来说明：

<?php
// 创建一个简单的数组
$array = array(1, 2, 3, 4, 5);
print_r($array);

// 现在删除其中的所有元素，但保持数组本身不变:
foreach ($array as $i => $value) {
    unset($array[$i]);
}
print_r($array);

// 添加一个单元（注意新的键名是 5，而不是你可能以为的 0）
$array[] = 6;
print_r($array);

// 重新索引：
$array = array_values($array);
$array[] = 7;
print_r($array);
?>

以上例程会输出：

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)
Array
(
)
Array
(
    [5] => 6
)
Array
(
    [0] => 6
    [1] => 7
)

实用函数

有很多操作数组的函数，参见数组函数一节。

Note:

unset() 函数允许删除数组中的某个键。但要注意数组将不会重建索引。如果需要删除后重建索引，可以用 array_values() 函数。

<?php
$a = array(1 => 'one', 2 => 'two', 3 => 'three');
unset($a[2]);
/* will produce an array that would have been defined as
   $a = array(1 => 'one', 3 => 'three');
   and NOT
   $a = array(1 => 'one', 2 =>'three');
*/

$b = array_values($a);
// Now $b is array(0 => 'one', 1 =>'three')
?>

foreach 控制结构是专门用于数组的。它提供了一个简单的方法来遍历数组。

数组做什么和不做什么

为什么 $foo[bar] 错了？

应该始终在用字符串表示的数组索引上加上引号。例如用 $foo['bar'] 而不是 $foo[bar]。但是为什么呢？可能在老的脚本中见过如下语法：

<?php
$foo[bar] = 'enemy';
echo $foo[bar];
// etc
?>

这样是错的，但可以正常运行。那么为什么错了呢？原因是此代码中有一个未定义的常量（bar）而不是字符串（'bar'－注意引号），而 PHP 可能会在以后定义此常量，不幸的是你的代码中有同样的名字。它能运行，是因为 PHP 自动将裸字符串（没有引号的字符串且不对应于任何已知符号）转换成一个其值为该裸字符串的正常字符串。例如，如果没有常量定义为 bar，PHP 将把它替代为 'bar' 并使用之。

Note: 这并不意味着总是给键名加上引号。用不着给键名为常量或变量的加上引号，否则会使 PHP 不能解析它们。

<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('html_errors', false);
// Simple array:
$array = array(1, 2);
$count = count($array);
for ($i = 0; $i < $count; $i++) {
    echo "\nChecking $i: \n";
    echo "Bad: " . $array['$i'] . "\n";
    echo "Good: " . $array[$i] . "\n";
    echo "Bad: {$array['$i']}\n";
    echo "Good: {$array[$i]}\n";
}
?>

以上例程会输出：

Checking 0:
Notice: Undefined index:  $i in /path/to/script.html on line 9
Bad:
Good: 1
Notice: Undefined index:  $i in /path/to/script.html on line 11
Bad:
Good: 1

Checking 1:
Notice: Undefined index:  $i in /path/to/script.html on line 9
Bad:
Good: 2
Notice: Undefined index:  $i in /path/to/script.html on line 11
Bad:
Good: 2

演示此行为的更多例子：

<?php
// Show all errors
error_reporting(E_ALL);

$arr = array('fruit' => 'apple', 'veggie' => 'carrot');

// Correct
print $arr['fruit'];  // apple
print $arr['veggie']; // carrot

// Incorrect.  This works but also throws a PHP error of level E_NOTICE because
// of an undefined constant named fruit
//
// Notice: Use of undefined constant fruit - assumed 'fruit' in...
print $arr[fruit];    // apple

// This defines a constant to demonstrate what's going on.  The value 'veggie'
// is assigned to a constant named fruit.
define('fruit', 'veggie');

// Notice the difference now
print $arr['fruit'];  // apple
print $arr[fruit];    // carrot

// The following is okay, as it's inside a string. Constants are not looked for
// within strings, so no E_NOTICE occurs here
print "Hello $arr[fruit]";      // Hello apple

// With one exception: braces surrounding arrays within strings allows constants
// to be interpreted
print "Hello {$arr[fruit]}";    // Hello carrot
print "Hello {$arr['fruit']}";  // Hello apple

// This will not work, and will result in a parse error, such as:
// Parse error: parse error, expecting T_STRING' or T_VARIABLE' or T_NUM_STRING'
// This of course applies to using superglobals in strings as well
print "Hello $arr['fruit']";
print "Hello $_GET['foo']";

// Concatenation is another option
print "Hello " . $arr['fruit']; // Hello apple
?>

当打开 error_reporting 来显示 E_NOTICE 级别的错误（将其设为 E_ALL）时将看到这些错误。默认情况下 error_reporting 被关闭不显示这些。

和在语法一节中规定的一样，在方括号（"["和"]"）之间必须有一个表达式。这意味着可以这样写：

<?php
echo $arr[somefunc($bar)];
?>

这是一个用函数返回值作为数组索引的例子。PHP 也可以用已知常量，可能之前已经见过：

<?php
$error_descriptions[E_ERROR]   = "A fatal error has occured";
$error_descriptions[E_WARNING] = "PHP issued a warning";
$error_descriptions[E_NOTICE]  = "This is just an informal notice";
?>

注意 E_ERROR 也是个合法的标识符，就和第一个例子中的 bar 一样。但是上一个例子实际上和如下写法是一样的：

<?php
$error_descriptions[1] = "A fatal error has occured";
$error_descriptions[2] = "PHP issued a warning";
$error_descriptions[8] = "This is just an informal notice";
?>

因为 E_ERROR 等于 1，等等。

那么为什么这样做不好？

也许有一天，PHP 开发小组可能会想新增一个常量或者关键字，或者用户可能希望以后在自己的程序中引入新的常量，那就有麻烦了。例如已经不能这样用 empty 和 default 这两个词了，因为他们是保留字。

Note: 重申一次，在双引号字符串中，不给索引加上引号是合法的因此 "$foo[bar]" 是合法的（"合法"的原文为 valid。在实际测试中，这么做确实可以访问数组的该元素，但是会报一个常量未定义的 notice。无论如何，强烈建议不要使用 $foo[bar]这样的写法，而要使用 $foo['bar'] 来访问数组中元素。--haohappy 注）。至于为什么参见以上的例子和字符串中的变量解析中的解释。

转换为数组

对于任意 integer，float，string，boolean 和 resource 类型，如果将一个值转换为数组，将得到一个仅有一个元素的数组，其下标为 0，该元素即为此标量的值。换句话说，(array)$scalarValue 与 array($scalarValue) 完全一样。

如果一个 object 类型转换为 array，则结果为一个数组，其单元为该对象的属性。键名将为成员变量名，不过有几点例外：整数属性不可访问；私有变量前会加上类名作前缀；保护变量前会加上一个 '*' 做前缀。这些前缀的前后都各有一个 NULL 字符。这会导致一些不可预知的行为：

<?php

class A {
    private $A; // This will become '\0A\0A'
}

class B extends A {
    private $A; // This will become '\0B\0A'
    public $AA; // This will become 'AA'
}

var_dump((array) new B());
?>

上例会有两个键名为 'AA'，不过其中一个实际上是 '\0A\0A'。

将 NULL 转换为 array 会得到一个空的数组。

比较

可以用 array_diff() 和数组运算符来比较数组。

示例

PHP 中的数组类型有非常多的用途。以下是一些示例：

<?php
// This:
$a = array( 'color' => 'red',
            'taste' => 'sweet',
            'shape' => 'round',
            'name'  => 'apple',
            4        // key will be 0
          );

$b = array('a', 'b', 'c');

// . . .is completely equivalent with this:
$a = array();
$a['color'] = 'red';
$a['taste'] = 'sweet';
$a['shape'] = 'round';
$a['name']  = 'apple';
$a[]        = 4;        // key will be 0

$b = array();
$b[] = 'a';
$b[] = 'b';
$b[] = 'c';

// After the above code is executed, $a will be the array
// array('color' => 'red', 'taste' => 'sweet', 'shape' => 'round',
// 'name' => 'apple', 0 => 4), and $b will be the array
// array(0 => 'a', 1 => 'b', 2 => 'c'), or simply array('a', 'b', 'c').
?>

Example #8 使用 array()

<?php
// Array as (property-)map
$map = array( 'version'    => 4,
              'OS'         => 'Linux',
              'lang'       => 'english',
              'short_tags' => true
            );

// strictly numerical keys
$array = array( 7,
                8,
                0,
                156,
                -10
              );
// this is the same as array(0 => 7, 1 => 8, ...)

$switching = array(         10, // key = 0
                    5    =>  6,
                    3    =>  7,
                    'a'  =>  4,
                            11, // key = 6 (maximum of integer-indices was 5)
                    '8'  =>  2, // key = 8 (integer!)
                    '02' => 77, // key = '02'
                    0    => 12  // the value 10 will be overwritten by 12
                  );

// empty array
$empty = array();
?>

Example #9 集合

<?php
$colors = array('red', 'blue', 'green', 'yellow');

foreach ($colors as $color) {
    echo "Do you like $color?\n";
}

?>

以上例程会输出：

Do you like red?
Do you like blue?
Do you like green?
Do you like yellow?

直接改变数组的值自 PHP 5 起可以通过引用传递来做到。之前的版本需要需要采取变通的方法：

Example #10 在循环中改变单元

<?php
// PHP 5
foreach ($colors as &$color) {
    $color = strtoupper($color);
}
unset($color); /* ensure that following writes to
$color will not modify the last array element */

// Workaround for older versions
foreach ($colors as $key => $color) {
    $colors[$key] = strtoupper($color);
}

print_r($colors);
?>

以上例程会输出：

Array
(
    [0] => RED
    [1] => BLUE
    [2] => GREEN
    [3] => YELLOW
)

本例生成一个下标从 1 开始的数组。

Example #11 下标从 1 开始的数组

<?php
$firstquarter  = array(1 => 'January', 'February', 'March');
print_r($firstquarter);
?>

以上例程会输出：

Array
(
    [1] => 'January'
    [2] => 'February'
    [3] => 'March'
)

Example #12 填充数组

<?php
// fill an array with all items from a directory
$handle = opendir('.');
while (false !== ($file = readdir($handle))) {
    $files[] = $file;
}
closedir($handle);
?>

数组是有序的。也可以使用不同的排序函数来改变顺序。更多信息参见数组函数。可以用 count() 函数来数出数组中元素的个数。

Example #13 数组排序

<?php
sort($files);
print_r($files);
?>

因为数组中的值可以为任意值，也可是另一个数组。这样可以产生递归或多维数组。

Example #14 递归和多维数组

<?php
$fruits = array ( "fruits"  => array ( "a" => "orange",
                                       "b" => "banana",
                                       "c" => "apple"
                                     ),
                  "numbers" => array ( 1,
                                       2,
                                       3,
                                       4,
                                       5,
                                       6
                                     ),
                  "holes"   => array (      "first",
                                       5 => "second",
                                            "third"
                                     )
                );

// Some examples to address values in the array above
echo $fruits["holes"][5];    // prints "second"
echo $fruits["fruits"]["a"]; // prints "orange"
unset($fruits["holes"][0]);  // remove "first"

// Create a new multi-dimensional array
$juices["apple"]["green"] = "good";
?>

数组(Array) 的赋值总是会涉及到值的拷贝。使用引用运算符通过引用来拷贝数组。

<?php
$arr1 = array(2, 3);
$arr2 = $arr1;
$arr2[] = 4; // $arr2 is changed,
             // $arr1 is still array(2, 3)

$arr3 = &$arr1;
$arr3[] = 4; // now $arr1 and $arr3 are the same
?>
String 字符串
Object 对象
类型


Object 对象

对象初始化

要创建一个新的对象 object，使用 new 语句实例化一个类：

<?php
class foo
{
    function do_foo()
    {
        echo "Doing foo.";
    }
}

$bar = new foo;
$bar->do_foo();
?>

详细讨论参见手册中类与对象章节。

转换为对象

如果将一个对象转换成对象，它将不会有任何变化。如果其它任何类型的值被转换成对象，将会创建一个内置类 stdClass 的实例。如果该值为 NULL，则新的实例为空。数组转换成对象将使键名成为属性名并具有相对应的值。对于任何其它的值，名为 scalar 的成员变量将包含该值。

<?php
$obj = (object) 'ciao';
echo $obj->scalar;  // outputs 'ciao'
?>
Array 数组
Resource 资源类型
类型


Resource 资源类型

资源 resource 是一种特殊变量，保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。所有这些函数及其相应资源类型见附录。

参见 get_resource_type()。

转换为资源

由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄，因此将其它类型的值转换为资源没有意义。

释放资源

由于 PHP 4 Zend 引擎引进了引用计数系统，可以自动检测到一个资源不再被引用了（和 Java 一样）。这种情况下此资源使用的所有外部资源都会被垃圾回收系统释放。因此，很少需要手工释放内存。

Note: 持久数据库连接比较特殊，它们不会被垃圾回收系统销毁。参见数据库永久连接一章。

Object 对象
NULL
类型


NULL

特殊的 NULL 值表示一个变量没有值。NULL 类型唯一可能的值就是 NULL。

在下列情况下一个变量被认为是 NULL：

  • 被赋值为 NULL。

  • 尚未被赋值。

  • 被 unset()。

语法

NULL 类型只有一个值，就是不区分大小写的常量 NULL。

<?php
$var = NULL;
?>

参见 is_null() 和 unset()。

转换到 NULL

使用 (unset) $var 将一个变量转换为 null 将不会删除该变量或 unset 其值。仅是返回 NULL 值而已。

Resource 资源类型
Callback 回调类型
类型


Callback 回调类型

自 PHP 5.4 起可用 callable 类型指定回调类型 callback。本文档基于同样理由使用 callback 类型信息。

一些函数如 call_user_func() 或 usort() 可以接受用户自定义的回调函数作为参数。回调函数不止可以是简单函数，还可以是对象的方法，包括静态类方法。

传递

一个 PHP 的函数以 string 类型传递其名称。可以使用任何内置或用户自定义函数，但除了语言结构例如：array()，echo，empty()，eval()，exit()，isset()，list()，print 或 unset()。

一个已实例化的对象的方法被作为数组传递，下标 0 包含该对象，下标 1 包含方法名。

静态类方法也可不经实例化该类的对象而传递，只要在下标 0 中包含类名而不是对象。自 PHP 5.2.3 起，也可以传递 'ClassName::methodName'。

除了普通的用户自定义函数外，create_function() 可以用来创建一个匿名回调函数。自 PHP 5.3.0 起也可传递 closure 给回调参数。

Example #1 回调函数示例

<?php

// An example callback function
function my_callback_function() {
    echo 'hello world!';
}

// An example callback method
class MyClass {
    static function myCallbackMethod() {
        echo 'Hello World!';
    }
}

// Type 1: Simple callback
call_user_func('my_callback_function');

// Type 2: Static class method call
call_user_func(array('MyClass', 'myCallbackMethod'));

// Type 3: Object method call
$obj = new MyClass();
call_user_func(array($obj, 'myCallbackMethod'));

// Type 4: Static class method call (As of PHP 5.2.3)
call_user_func('MyClass::myCallbackMethod');

// Type 5: Relative static class method call (As of PHP 5.3.0)
class A {
    public static function who() {
        echo "A\n";
    }
}

class B extends A {
    public static function who() {
        echo "B\n";
    }
}

call_user_func(array('B', 'parent::who')); // A
?>

Example #2 使用 Closure 的示例

<?php
// Our closure
$double = function($a) {
    return $a * 2;
};

// This is our range of numbers
$numbers = range(1, 5);

// Use the closure as a callback here to
// double the size of each element in our
// range
$new_numbers = array_map($double, $numbers);

print implode(' ', $new_numbers);
?>

以上例程会输出：

2 4 6 8 10

Note: 在 PHP 4 中，需要使用一个引用来创建一个指向具体对象的回调函数，而不是一个拷贝。参见引用的解释。

Note:

在函数中注册有多个回调内容时(如使用 call_user_func() 与 call_user_func_array())，如在前一个回调中有未捕获的异常，其后的将不再被调用。

NULL
本文档中使用的伪类型与变量
类型


本文档中使用的伪类型与变量

mixed

mixed 说明一个参数可以接受多种不同的（但不一定是所有的）类型。

例如 gettype() 可以接受所有的 PHP 类型，str_replace() 可以接受字符串和数组。

number

number 说明一个参数可以是 integer 或者 float。

callback

本文档中在 PHP 5.4 引入 callable 类型之前使用 了 callback 伪类型。二者含义完全相同。

void

void 作为返回类型意味着函数的返回值是无用的。void 作为参数列表意味着函数不接受任何参数。

...

在函数原型中，$... 表示等等的意思。当一个函数可以接受任意个参数时使用此变量名。

Callback 回调类型
类型转换的判别
类型


类型转换的判别

PHP 在变量定义中不需要（或不支持）明确的类型定义；变量类型是根据使用该变量的上下文所决定的。也就是说，如果把一个 string 值赋给变量 $var，$var 就成了一个 string。如果又把一个integer 赋给 $var，那它就成了一个integer。

PHP 的自动类型转换的一个例子是加法运算符"+"。如果任何一个操作数是float，则所有的操作数都被当成float，结果也是float。否则操作数会被解释为integer，结果也是integer。注意这并没有改变这些操作数本身的类型；改变的仅是这些操作数如何被求值以及表达式本身的类型。

<?php
$foo = "0";  // $foo 是字符串 (ASCII 48)
$foo += 2;   // $foo 现在是一个整数 (2)
$foo = $foo + 1.3;  // $foo 现在是一个浮点数 (3.3)
$foo = 5 + "10 Little Piggies"; // $foo 是整数 (15)
$foo = 5 + "10 Small Pigs";     // $foo 是整数 (15)
?>

如果上面两个例子看上去古怪的话，参见字符串转换为数值。

如果要强制将一个变量当作某种类型来求值，参见类型强制转换一节。如果要改变一个变量的类型，参见 settype()。

如果想要测试本节中任何例子的话，可以用 var_dump() 函数。

Note:

自动转换为 数组 的行为目前没有定义。

此外，由于 PHP 支持使用和数组下标同样的语法访问字符串下标，以下例子在所有 PHP 版本中都有效：

<?php
$a    = 'car'; // $a is a string
$a[0] = 'b';   // $a is still a string
echo $a;       // bar
?>

请参阅存取和修改字符串中的字符一节以获取更多信息。

类型强制转换

PHP 中的类型强制转换和 C 中的非常像：在要转换的变量之前加上用括号括起来的目标类型。

<?php
$foo = 10;   // $foo is an integer
$bar = (boolean) $foo;   // $bar is a boolean
?>

允许的强制转换有：

  • (int), (integer) - 转换为整形 integer
  • (bool), (boolean) - 转换为布尔类型 boolean
  • (float), (double), (real) - 转换为浮点型 float
  • (string) - 转换为字符串 string
  • (array) - 转换为数组 array
  • (object) - 转换为对象 object
  • (unset) - 转换为 NULL (PHP 5)

(binary) 转换和 b 前缀转换支持为 PHP 5.2.1 新增。

注意在括号内允许有空格和制表符，所以下面两个例子功能相同：

<?php
$foo = (int) $bar;
$foo = ( int ) $bar;
?>

将字符串文字和变量转换为二进制字符串：

<?php
$binary = (binary)$string;
$binary = b"binary string";
?>

Note:

可以将变量放置在双引号中的方式来代替将变量转换成字符串：

<?php
$foo = 10;            // $foo 是一个整数
$str = "$foo";        // $str 是一个字符串
$fst = (string) $foo; // $fst 也是一个字符串

// 输出 "they are the same"
if ($fst === $str) {
    echo "they are the same";
}
?>

有时在类型之间强制转换时确切地会发生什么可能不是很明显。更多信息见如下小节：

  • 转换为布尔型
  • 转换为整型
  • 转换为浮点型
  • 转换为字符串
  • 转换为数组
  • 转换为对象
  • 转换为资源
  • 转换为 NULL
  • 类型比较表
本文档中使用的伪类型与变量
变量
类型


变量

Table of Contents

  • 基础
  • 预定义变量
  • 变量范围
  • 可变变量
  • 来自 PHP 之外的变量
类型转换的判别
基础
语言参考


基础

PHP 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。

变量名与 PHP 中其它的标签一样遵循相同的规则。一个有效的变量名由字母或者下划线开头，后面跟上任意数量的字母，数字，或者下划线。按照正常的正则表达式，它将被表述为：'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'。

Note: 在此所说的字母是 a-z，A-Z，以及 ASCII 字符从 127 到 255（0x7f-0xff）。

Note: $this 是一个特殊的变量，它不能被赋值。

Tip

请参见用户空间命名指南。

有关变量的函数信息见变量函数。

<?php
$var = 'Bob';
$Var = 'Joe';
echo "$var, $Var";      // 输出 "Bob, Joe"

$4site = 'not yet';     // 非法变量名；以数字开头
$_4site = 'not yet';    // 合法变量名；以下划线开头
$i站点is = 'mansikka';  // 合法变量名；可以用中文
?>

变量默认总是传值赋值。那也就是说，当将一个表达式的值赋予一个变量时，整个原始表达式的值被赋值到目标变量。这意味着，例如，当一个变量的值赋予另外一个变量时，改变其中一个变量的值，将不会影响到另外一个变量。有关这种类型的赋值操作，请参阅表达式一章。

PHP 也提供了另外一种方式给变量赋值：引用赋值。这意味着新的变量简单的引用（换言之，"成为其别名" 或者 "指向"）了原始变量。改动新的变量将影响到原始变量，反之亦然。

使用引用赋值，简单地将一个 & 符号加到将要赋值的变量前（源变量）。例如，下列代码片断将输出"My name is Bob"两次：

<?php
$foo = 'Bob';              // 将 'Bob' 赋给 $foo
$bar = &$foo;              // 通过 $bar 引用 $foo
$bar = "My name is $bar";  // 修改 $bar 变量
echo $bar;
echo $foo;                 // $foo 的值也被修改
?>

有一点重要事项必须指出，那就是只有有名字的变量才可以引用赋值。

<?php
$foo = 25;
$bar = &$foo;      // 合法的赋值
$bar = &(24 * 7);  // 非法; 引用没有名字的表达式

function test()
{
   return 25;
}

$bar = &test();    // 非法
?>

虽然在 PHP 中并不需要初始化变量，但对变量进行初始化是个好习惯。未初始化的变量具有其类型的默认值 - 布尔类型的变量默认值是 FALSE，整形和浮点型变量默认值是零，字符串型变量（例如用于 echo 中）默认值是空字符串以及数组变量的默认值是空数组。

Example #1 未初始化变量的默认值

<?php
// Unset AND unreferenced (no use context) variable; outputs NULL
var_dump($unset_var);

// Boolean usage; outputs 'false' (See ternary operators for more on this syntax)
echo($unset_bool ? "true\n" : "false\n");

// String usage; outputs 'string(3) "abc"'
$unset_str .= 'abc';
var_dump($unset_str);

// Integer usage; outputs 'int(25)'
$unset_int += 25; // 0 + 25 => 25
var_dump($unset_int);

// Float/double usage; outputs 'float(1.25)'
$unset_float += 1.25;
var_dump($unset_float);

// Array usage; outputs array(1) {  [3]=>  string(3) "def" }
$unset_arr[3] = "def"; // array() + array(3 => "def") => array(3 => "def")
var_dump($unset_arr);

// Object usage; creates new stdClass object (see http://www.php.net/manual/en/reserved.classes.php)
// Outputs: object(stdClass)#1 (1) {  ["foo"]=>  string(3) "bar" }
$unset_obj->foo = 'bar';
var_dump($unset_obj);
?>

依赖未初始化变量的默认值在某些情况下会有问题，例如把一个文件包含到另一个之中时碰上相同的变量名。另外把 register_globals 打开是一个主要的安全隐患。使用未初始化的变量会发出 E_NOTICE 错误，但是在向一个未初始化的数组附加单元时不会。isset() 语言结构可以用来检测一个变量是否已被初始化。

变量
预定义变量
变量


预定义变量

PHP 提供了大量的预定义变量。由于许多变量依赖于运行的服务器的版本和设置，及其它因素，所以并没有详细的说明文档。一些预定义变量在 PHP 以命令行形式运行时并不生效。有关这些变量的详细列表，请参阅预定义变量一章。

Warning

PHP 4.2.0 以及后续版本中，PHP 指令 register_globals 的默认值为 off。这是 PHP 的一个主要变化。让 register_globals 的值为 off 将影响到预定义变量集在全局范围内的有效性。例如，为了得到 DOCUMENT_ROOT 的值，将必须使用 $_SERVER['DOCUMENT_ROOT'] 代替 $DOCUMENT_ROOT，又如，使用 $_GET['id'] 来代替 $id 从 URL http://www.example.com/test.php?id=3 中获取 id 值，亦或使用 $_ENV['HOME'] 来代替 $HOME 获取环境变量 HOME 的值。

更多相关信息，请阅读 register_globals 的配置项条目，安全一章中的使用 Register Globals，以及 PHP » 4.1.0 和 » 4.2.0 的发布公告。

如果有可用的 PHP 预定义变量那最好用，如超全局数组。

从 PHP 4.1.0 开始，PHP 提供了一套附加的预定数组，这些数组变量包含了来自 web 服务器（如果可用），运行环境，和用户输入的数据。这些数组非常特别，它们在全局范围内自动生效，例如，在任何范围内自动生效。因此通常被称为自动全局变量（autoglobals）或者超全局变量（superglobals）。（PHP 中没有用户自定义超全局变量的机制。）超全局变量罗列于下文中；但是为了得到它们的内容和关于 PHP 预定义变量的进一步的讨论以及它们的本质，请参阅预定义变量。而且，你也将注意到旧的预定义数组（$HTTP_*_VARS）仍旧存在。自 PHP 5.0.0 起, 用 register_long_arrays 设置选项可禁用 长类型的 PHP 预定义变量数组。

Note: 可变变量

超级全局变量不能被用作函数或类方法中的可变变量。

Note:

尽管超全局变量和 HTTP_*_VARS 同时存在，但是它们并不是同一个变量，所以改变其中一个的值并不会对另一个产生影响。

如果某些 variables_order 中的变量没有设定，它们的对应的 PHP 预定义数组也是空的。

基础
变量范围
变量


变量范围

变量的范围即它定义的上下文背景（也就是它的生效范围）。大部分的 PHP 变量只有一个单独的范围。这个单独的范围跨度同样包含了 include 和 require 引入的文件。例如：

<?php
$a = 1;
include 'b.inc';
?>

这里变量 $a 将会在包含文件 b.inc 中生效。但是，在用户自定义函数中，一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内。例如：

<?php
$a = 1; /* global scope */

function Test()
{
    echo $a; /* reference to local scope variable */
}

Test();
?>

这个脚本不会有任何输出，因为 echo 语句引用了一个局部版本的变量 $a，而且在这个范围内，它并没有被赋值。你可能注意到 PHP 的全局变量和 C 语言有一点点不同，在 C 语言中，全局变量在函数中自动生效，除非被局部变量覆盖。这可能引起一些问题，有些人可能不小心就改变了一个全局变量。PHP 中全局变量在函数中使用时必须声明为 global。

global 关键字

首先，一个使用 global 的例子：

Example #1 使用 global

<?php
$a = 1;
$b = 2;

function Sum()
{
    global $a, $b;

    $b = $a + $b;
}

Sum();
echo $b;
?>

以上脚本的输出将是"3"。在函数中声明了全局变量 $a 和 $b 之后，对任一变量的所有引用都会指向其全局版本。对于一个函数能够声明的全局变量的最大个数，PHP 没有限制。

在全局范围内访问变量的第二个办法，是用特殊的 PHP 自定义 $GLOBALS 数组。前面的例子可以写成：

Example #2 使用 $GLOBALS 替代 global

<?php
$a = 1;
$b = 2;

function Sum()
{
    $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}

Sum();
echo $b;
?>

$GLOBALS 是一个关联数组，每一个变量为一个元素，键名对应变量名，值对应变量的内容。$GLOBALS 之所以在全局范围内存在，是因为 $GLOBALS 是一个超全局变量。以下范例显示了超全局变量的用处：

Example #3 演示超全局变量和作用域的例子

<?php
function test_global()
{
    // 大多数的预定义变量并不 "super"，它们需要用 'global' 关键字来使它们在函数的本地区域中有效。
    global $HTTP_POST_VARS;

    echo $HTTP_POST_VARS['name'];

    // Superglobals 在任何范围内都有效，它们并不需要 'global' 声明。Superglobals 是在 PHP 4.1.0 引入的。
    echo $_POST['name'];
}
?>

使用静态变量

变量范围的另一个重要特性是静态变量（static variable）。静态变量仅在局部函数域中存在，但当程序执行离开此作用域时，其值并不丢失。看看下面的例子：

Example #4 演示需要静态变量的例子

<?php
function Test()
{
    $a = 0;
    echo $a;
    $a++;
}
?>

本函数没什么用处，因为每次调用时都会将 $a 的值设为 0 并输出 0。将变量加一的 $a++ 没有作用，因为一旦退出本函数则变量 $a 就不存在了。要写一个不会丢失本次计数值的计数函数，要将变量 $a 定义为静态的：

Example #5 使用静态变量的例子

<?php
function test()
{
    static $a = 0;
    echo $a;
    $a++;
}
?>

现在，变量 $a 仅在第一次调用 test() 函数时被初始化，之后每次调用 test() 函数都会输出 $a 的值并加一。

静态变量也提供了一种处理递归函数的方法。递归函数是一种调用自己的函数。写递归函数时要小心，因为可能会无穷递归下去。必须确保有充分的方法来中止递归。以下这个简单的函数递归计数到 10，使用静态变量 $count 来判断何时停止：

Example #6 静态变量与递归函数

<?php
function test()
{
    static $count = 0;

    $count++;
    echo $count;
    if ($count < 10) {
        test();
    }
    $count--;
}
?>

Note:

静态变量可以按照上面的例子声明。如果在声明中用表达式的结果对其赋值会导致解析错误。

Example #7 声明静态变量

<?php
function foo(){
    static $int = 0;          // correct
    static $int = 1+2;        // wrong  (as it is an expression)
    static $int = sqrt(121);  // wrong  (as it is an expression too)

    $int++;
    echo $int;
}
?>

静态声明是在编译时解析的。

Note:

在函数之外使用 global 关键字不算错。可以用于在一个函数之内包含文件时。

全局和静态变量的引用

在 Zend 引擎 1 代，它驱动了 PHP4，对于变量的 static 和 global 定义是以引用的方式实现的。例如，在一个函数域内部用 global 语句导入的一个真正的全局变量实际上是建立了一个到全局变量的引用。这有可能导致预料之外的行为，如以下例子所演示的：

<?php
function test_global_ref() {
    global $obj;
    $obj = &new stdclass;
}

function test_global_noref() {
    global $obj;
    $obj = new stdclass;
}

test_global_ref();
var_dump($obj);
test_global_noref();
var_dump($obj);
?>

以上例程会输出：

NULL
object(stdClass)(0) {
}

类似的行为也适用于 static 语句。引用并不是静态地存储的：

<?php
function &get_instance_ref() {
    static $obj;

    echo 'Static object: ';
    var_dump($obj);
    if (!isset($obj)) {
        // 将一个引用赋值给静态变量
        $obj = &new stdclass;
    }
    $obj->property++;
    return $obj;
}

function &get_instance_noref() {
    static $obj;

    echo 'Static object: ';
    var_dump($obj);
    if (!isset($obj)) {
        // 将一个对象赋值给静态变量
        $obj = new stdclass;
    }
    $obj->property++;
    return $obj;
}

$obj1 = get_instance_ref();
$still_obj1 = get_instance_ref();
echo "\n";
$obj2 = get_instance_noref();
$still_obj2 = get_instance_noref();
?>

以上例程会输出：

Static object: NULL
Static object: NULL

Static object: NULL
Static object: object(stdClass)(1) {
["property"]=>
int(1)
}

上例演示了当把一个引用赋值给一个静态变量时，第二次调用 &get_instance_ref() 函数时其值并没有被记住。

预定义变量
可变变量
变量


可变变量

有时候使用可变变量名是很方便的。就是说，一个变量的变量名可以动态的设置和使用。一个普通的变量通过声明来设置，例如：

<?php
$a = 'hello';
?>

一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。在上面的例子中 hello 使用了两个美元符号（$）以后，就可以作为一个可变变量的变量了。例如：

<?php
$$a = 'world';
?>

这时，两个变量都被定义了：$a 的内容是"hello"并且 $hello 的内容是"world"。因此，以下语句：

<?php
echo "$a ${$a}";
?>

与以下语句输出完全相同的结果：

<?php
echo "$a $hello";
?>

它们都会输出：hello world。

要将可变变量用于数组，必须解决一个模棱两可的问题。这就是当写下 $$a[1] 时，解析器需要知道是想要 $a[1] 作为一个变量呢，还是想要 $$a 作为一个变量并取出该变量中索引为 [1] 的值。解决此问题的语法是，对第一种情况用 ${$a[1]}，对第二种情况用 ${$a}[1]。

类的属性也可以通过可变属性名来访问。可变属性名将在该调用所处的范围内被解析。例如，对于 $foo->$bar 表达式，则会在本地范围来解析 $bar 并且其值将被用于 $foo 的属性名。对于 $bar 是数组单元时也是一样。

也可使用花括号来给属性名清晰定界。最有用是在属性位于数组中，或者属性名包含有多个部分或者属性名包含有非法字符时（例如来自 json_decode() 或 SimpleXML）。

Example #1 可变属性示例

<?php
class foo {
    var $bar = 'I am bar.';
    var $arr = array('I am A.', 'I am B.', 'I am C.');
    var $r   = 'I am r.';
}

$foo = new foo();
$bar = 'bar';
$baz = array('foo', 'bar', 'baz', 'quux');
echo $foo->$bar . "\n";
echo $foo->$baz[1] . "\n";

$start = 'b';
$end   = 'ar';
echo $foo->{$start . $end} . "\n";

$arr = 'arr';
echo $foo->$arr[1] . "\n";
echo $foo->{$arr}[1] . "\n";

?>

以上例程会输出：

I am bar.
I am bar.
I am bar.
I am r.
I am B.

Warning

注意，在 PHP 的函数和类的方法中，超全局变量不能用作可变变量。$this 变量也是一个特殊变量，不能被动态引用。

变量范围
来自 PHP 之外的变量
变量


来自 PHP 之外的变量

HTML 表单（GET 和 POST）

当一个表单提交给 PHP 脚本时，表单中的信息会自动在脚本中可用。有很多方法访问此信息，例如：

Example #1 一个简单的 HTML 表单

<form action="foo.php" method="POST">
    Name:  <input type="text" name="username"><br />
    Email: <input type="text" name="email"><br />
    <input type="submit" name="submit" value="Submit me!" />
</form>

根据特定的设置和个人的喜好，有很多种方法访问 HTML 表单中的数据。例如：

Example #2 从一个简单的 POST HTML 表单访问数据

<?php
// 自 PHP 4.1.0 起可用
   echo $_POST['username'];
   echo $_REQUEST['username'];

   import_request_variables('p', 'p_');
   echo $p_username;

// 自 PHP 5.0.0 起，这些长格式的预定义变量
// 可用 register_long_arrays 指令关闭。

   echo $HTTP_POST_VARS['username'];

// 如果 PHP 指令 register_globals = on 时可用。不过自
// PHP 4.2.0 起默认值为 register_globals = off。
// 不提倡使用/依赖此种方法。

   echo $username;
?>

使用 GET 表单也类似，只不过要用适当的 GET 预定义变量。GET 也适用于 QUERY_STRING（URL 中在"?"之后的信息）。因此，举例说，http://www.example.com/test.php?id=3 包含有可用 $_GET['id'] 来访问的 GET 数据。参见 $_REQUEST 和 import_request_variables()。

Note:

超全局数组例如 $_POST 和 $_GET，自 PHP 4.1.0 起可用。

Note:

变量名中的点和空格被转换成下划线。例如 <input name="a.b" /> 变成了 $_REQUEST["a_b"]。

如上所示，在 PHP 4.2.0 之前 register_globals 的默认值是 on。PHP 社区鼓励大家不要依赖此指令，建议在编码时假定其为 off。

Note:

magic_quotes_gpc 配置指令影响到 Get，Post 和 Cookie 的值。如果打开，值 (It's "PHP!") 会自动转换成 (It\'s \"PHP!\")。十多年前对数据库的插入需要如此转义，如今已经过时了，应该关闭。参见 addslashes()，stripslashes() 和 magic_quotes_sybase。

PHP 也懂得表单变量上下文中的数组（参见相关常见问题）。例如可以将相关的变量编成组，或者用此特性从多选输入框中取得值。例如，将一个表单 POST 给自己并在提交时显示数据：

Example #3 更复杂的表单变量

<?php
if (isset($_POST['action']) && $_POST['action'] == 'submitted') {
    echo '<pre>';

    print_r($_POST);
    echo '<a href="'. $_SERVER['PHP_SELF'] .'">Please try again</a>';

    echo '</pre>';
} else {
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    Name:  <input type="text" name="personal[name]"><br />
    Email: <input type="text" name="personal[email]"><br />
    Beer: <br>
    <select multiple name="beer[]">
        <option value="warthog">Warthog</option>
        <option value="guinness">Guinness</option>
        <option value="stuttgarter">Stuttgarter Schwabenbr</option>
    </select><br />
    <input type="hidden" name="action" value="submitted" />
    <input type="submit" name="submit" value="submit me!" />
</form>
<?php
}
?>

IMAGE SUBMIT 变量名

当提交表单时，可以用一幅图像代替标准的提交按钮，用类似这样的标记：

<input type="image" src="image.gif" name="sub" />

当用户点击到图像中的某处时，相应的表单会被传送到服务器，并加上两个变量 sub_x 和 sub_y。它们包含了用户点击图像的坐标。有经验的用户可能会注意到被浏览器发送的实际变量名包含的是一个点而不是下划线（即 sub.x 和 sub.y），但 PHP 自动将点转换成了下划线。

HTTP Cookies

PHP 透明地支持 » RFC 6265定义中的 HTTP cookies。Cookies 是一种在远端浏览器端存储数据并能追踪或识别再次访问的用户的机制。可以用 setcookie() 函数设定 cookies。Cookies 是 HTTP 信息头中的一部分，因此 SetCookie 函数必须在向浏览器发送任何输出之前调用。对于 header() 函数也有同样的限制。Cookie 数据会在相应的 cookie 数据数组中可用，例如 $_COOKIE，$HTTP_COOKIE_VARS 和 $_REQUEST。更多细节和例子见 setcookie() 手册页面。

如果要将多个值赋给一个 cookie 变量，必须将其赋成数组。例如：

<?php
  setcookie("MyCookie[foo]", 'Testing 1', time()+3600);
  setcookie("MyCookie[bar]", 'Testing 2', time()+3600);
?>

这将会建立两个单独的 cookie，尽管 MyCookie 在脚本中是一个单一的数组。如果想在仅仅一个 cookie 中设定多个值，考虑先在值上使用 serialize() 或 explode()。

注意在浏览器中一个 cookie 会替换掉上一个同名的 cookie，除非路径或者域不同。因此对于购物车程序可以保留一个计数器并一起传递，例如：

Example #4 一个 setcookie() 的示例

<?php
if (isset($_COOKIE['count'])) {
    $count = $_COOKIE['count'] + 1;
} else {
    $count = 1;
}
setcookie('count', $count, time()+3600);
setcookie("Cart[$count]", $item, time()+3600);
?>

变量名中的点

通常，PHP 不会改变传递给脚本中的变量名。然而应该注意到点（句号）不是 PHP 变量名中的合法字符。至于原因，看看：

<?php
$varname.ext;  /* 非法变量名 */
?>
这时，解析器看到是一个名为 $varname 的变量，后面跟着一个字符串连接运算符，后面跟着一个裸字符串（即没有加引号的字符串，且不匹配任何已知的健名或保留字）'ext'。很明显这不是想要的结果。

出于此原因，要注意 PHP 将会自动将变量名中的点替换成下划线。

确定变量类型

因为 PHP 会判断变量类型并在需要时进行转换（通常情况下），因此在某一时刻给定的变量是何种类型并不明显。PHP 包括几个函数可以判断变量的类型，例如：gettype()，is_array()，is_float()，is_int()，is_object() 和 is_string()。参见类型一章。

可变变量
常量
变量


常量

Table of Contents

  • 语法
  • 魔术常量

常量是一个简单值的标识符（名字）。如同其名称所暗示的，在脚本执行期间该值不能改变（除了所谓的魔术常量，它们其实不是常量）。常量默认为大小写敏感。传统上常量标识符总是大写的。

常量名和其它任何 PHP 标签遵循同样的命名规则。合法的常量名以字母或下划线开始，后面跟着任何字母，数字或下划线。用正则表达式是这样表达的：[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*。

Tip

请参见用户空间命名指南。

Example #1 合法与非法的常量名

<?php

// 合法的常量名
define("FOO",     "something");
define("FOO2",    "something else");
define("FOO_BAR", "something more");

// 非法的常量名
define("2FOO",    "something");

// 下面的定义是合法的，但应该避免这样做：(自定义常量不要以__开头)
// 也许将来有一天PHP会定义一个__FOO__的魔术常量
// 这样就会与你的代码相冲突
define("__FOO__", "something");

?>

Note: 在这里，字母指的是 a-z，A-Z，以及从 127 到 255（0x7f-0xff）的 ASCII 字符。

和 superglobals 一样，常量的范围是全局的。不用管作用区域就可以在脚本的任何地方访问常量。有关作用区域的更多信息请阅读手册中的变量范围。

来自 PHP 之外的变量
语法
语言参考


语法

可以用 define() 函数来定义常量，在 PHP 5.3.0 以后，可以使用 const 关键字在类定义之外定义常量。一个常量一旦被定义，就不能再改变或者取消定义。

常量只能包含标量数据（boolean，integer，float 和 string）。可以定义 resource 常量，但应尽量避免，因为会造成不可预料的结果。

可以简单的通过指定其名字来取得常量的值，与变量不同，不应该在常量前面加上 $ 符号。如果常量名是动态的，也可以用函数 constant() 来获取常量的值。用 get_defined_constants() 可以获得所有已定义的常量列表。

Note: 常量和（全局）变量在不同的名字空间中。这意味着例如 TRUE 和 $TRUE 是不同的。

如果使用了一个未定义的常量，PHP 假定想要的是该常量本身的名字，如同用字符串调用它一样（CONSTANT 对应 "CONSTANT"）。此时将发出一个 E_NOTICE 级的错误。参见手册中为什么 $foo[bar] 是错误的（除非事先用 define() 将 bar 定义为一个常量）。如果只想检查是否定义了某常量，用 defined() 函数。

常量和变量有如下不同：

  • 常量前面没有美元符号（$）；
  • 常量只能用 define() 函数定义，而不能通过赋值语句；
  • 常量可以不用理会变量的作用域而在任何地方定义和访问；
  • 常量一旦定义就不能被重新定义或者取消定义；
  • 常量的值只能是标量。

Example #1 定义常量

<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
echo Constant; // 输出 "Constant" 并发出一个提示级别错误信息
?>

Example #2 使用关键字 const 定义常量

<?php
// 以下代码在 PHP 5.3.0 后可以正常工作
const CONSTANT = 'Hello World';

echo CONSTANT;
?>

Note:

和使用 define() 来定义常量相反的是，使用 const 关键字定义常量必须处于最顶端的作用区域，因为用此方法是在编译时定义的。这就意味着不能在函数内，循环内以及 if 语句之内用 const 来定义常量。

参见类常量。

常量
魔术常量
常量


魔术常量

PHP 向它运行的任何脚本提供了大量的预定义常量。不过很多常量都是由不同的扩展库定义的，只有在加载了这些扩展库时才会出现，或者动态加载后，或者在编译时已经包括进去了。

有八个魔术常量它们的值随着它们在代码中的位置改变而改变。例如 __LINE__ 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写，如下：

几个 PHP 的"魔术常量"
名称 | 说明
__LINE__ | 文件中的当前行号。
__FILE__ | 文件的完整路径和文件名。如果用在被包含文件中，则返回被包含的文件名。自 PHP 4.0.2 起，__FILE__ 总是包含一个绝对路径（如果是符号连接，则是解析后的绝对路径），而在此之前的版本有时会包含一个相对路径。
__DIR__ | 文件所在的目录。如果用在被包括文件中，则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。除非是根目录，否则目录中名不包括末尾的斜杠。（PHP 5.3.0中新增） =
__FUNCTION__ | 函数名称（PHP 4.3.0 新加）。自 PHP 5 起本常量返回该函数被定义时的名字（区分大小写）。在 PHP 4 中该值总是小写字母的。
__CLASS__ | 类的名称（PHP 4.3.0 新加）。自 PHP 5 起本常量返回该类被定义时的名字（区分大小写）。在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域（例如 Foo\Bar）。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时，__CLASS__ 是调用 trait 方法的类的名字。
__TRAIT__ | Trait 的名字（PHP 5.4.0 新加）。自 PHP 5.4 起此常量返回 trait 被定义时的名字（区分大小写）。Trait 名包括其被声明的作用区域（例如 Foo\Bar）。
__METHOD__ | 类的方法名（PHP 5.0.0 新加）。返回该方法被定义时的名字（区分大小写）。
__NAMESPACE__ | 当前命名空间的名称（区分大小写）。此常量是在编译时定义的（PHP 5.3.0 新增）。

参见 get_class()，get_object_vars()，file_exists() 和 function_exists()。

语法
表达式
常量


表达式

表达式是 PHP 最重要的基石。在 PHP 中，几乎所写的任何东西都是一个表达式。简单但却最精确的定义一个表达式的方式就是"任何有值的东西"。

最基本的表达式形式是常量和变量。当键入"$a = 5"，即将值"5"分配给变量 $a。"5"，很明显，其值为 5，换句话说"5"是一个值为 5 的表达式（在这里，"5"是一个整型常量）。

赋值之后，所期待情况是 $a 的值为 5，因而如果写下 $b = $a，期望的是它犹如 $b = 5 一样。换句话说，$a 是一个值也为 5 的表达式。如果一切运行正确，那这正是将要发生的正确结果。

稍微复杂的表达式例子就是函数。例如，考虑下面的函数：

<?php
function foo ()
{
    return 5;
}
?>

假定已经熟悉了函数的概念（果不是的话，请看一下函数的相关章节），那么键入
$c = foo() 从本质上来说就如写下
$c = 5，这没错。函数也是表达式，表达式的值即为它们的返回值。既然
foo() 返回 5，表达式"foo()"的值也是 5。通常函数不会仅仅返回一个静态值，而可能会计算一些东西。

当然，PHP 中的值常常并非是整型的。PHP 支持四种标量值（标量值不能拆分为更小的单元，例如和数组不同）类型：整型值（integer），浮点数值（float），字符串值（string）和布尔值（boolean）。PHP 也支持两种复合类型：数组和对象。这两种类型具可以赋值给变量或者从函数返回。

PHP 和其它语言一样在表达式的道路上发展，但推进得更深远。PHP 是一种面向表达式的语言，从这一方面来讲几乎一切都是表达式。考虑刚才已经研究过的例子，"$a = 5"。很显然这里涉及到两个值，整型常量 5 的值以及而且变量 $a 的值，它也被更新为 5。但是事实是这里还涉及到一个额外的值，即附值语句本身的值。赋值语句本身求值为被赋的值，即 5。实际上这意味着"$a = 5"，不必管它是做什么的，是一个值为 5 的表达式。因而，这样写"$b = ($a = 5)"和这样写"$a =5; $b=5"（分号标志着语句的结束）是一样的。因为赋值操作的顺序是由右到左的，也可以这么写"$b = $a =5"。

另外一个很好的面向表达式的例子就是前、后递增和递减。PHP 和多数其它语言的用户应该比较熟悉变量 ++ 和变量 -- 符号。即递增和递减运算符。在 PHP/FI 2 中，语句"$a++"没有值（不是表达式），这样的话你便不能为其赋值或者以任何其它方式来使用它。PHP 通过将其变为了表达式，类似 C 语言，增强了递增/递减的能力。在 PHP 和 C 语言 中，有两种类型的递增前递增和后递增，本质上来讲，前递增和后递增均增加了变量的值，并且对于变量的影响是相同的。不同的是递增表达式的值。前递增，写做"++$variable"，求增加后的值（PHP 在读取变量的值之前，增加变量的值，因而称之为"前递增"）。后递增，写做"$variable++"，求变量未递增之前的原始值（PHP 在读取变量的值之后，增加变量的值，因而叫做"后递增"）。

一个常用到表达式类型是比较表达式。这些表达式求值 FALSE 或 TRUE。PHP 支持 >（大于），>=（大于等于），==（等于），!=（不等于），<（小于），<= (小于等于)。PHP 还支持全等运算符 ===（值和类型均相同）和非全等运算符 !==（值或者类型不同）。这些表达式都是在条件判断语句，比如，if 语句中最常用的。

这里，将要研究的最后一个例子是组合的运算赋值表达式。已经知道如果想要为变量 $a 加1，可以简单的写"$a++"或者"++$a"。但是如果想为变量增加大于 1 的值，比如 3，该怎么做？可以多次写"$a++"，但这样明显不是一种高效舒适的方法，一个更加通用的做法是"$a = $a + 3"。"$a + 3"计算 $a 加上 3 的值，并且得到的值重新赋予变量 $a，于是 $a 的值增加了3。在 PHP 及其它几种类似 C 的语言中，可以以一种更加简短的形式完成上述功能，因而也更加清楚快捷。为 $a 的当前值加 3，可以这样写："$a += 3"。这里的意思是"取变量 $a 的值，加 3，得到的结果再次分配给变量 $a"。除了更简略和清楚外，也可以更快的运行。"$a += 3"的值，如同一个正常赋值操作的值，是赋值后的值。注意它不是 3，而是 $a 的值加上3 之后的值（此值将被赋给 $a）。任何二元运算符都可以用运算赋值模式，例如"$a -= 5"（从变量 $a 的值中减去 5），"$b *= 7"（变量 $b 乘以 7），等等。

还有一个表达式，如果没有在别的语言中看到过的话，可能看上去很奇怪，即三元条件运算符：

$first ? $second : $third
如果第一个子表达式的值是 TRUE（非零），那么计算第二个子表达式的值，其值即为整个表达式的值。否则，将是第三个子表达式的值。

下面的例子一般来说应该有助于理解前、后递增和表达式：

<?php
function double($i)
{
    return $i*2;
}
$b = $a = 5;        /* assign the value five into the variable $a and $b */
$c = $a++;          /* post-increment, assign original value of $a
                       (5) to $c */
$e = $d = ++$b;     /* pre-increment, assign the incremented value of
                       $b (6) to $d and $e */

/* at this point, both $d and $e are equal to 6 */

$f = double($d++);  /* assign twice the value of $d before
                       the increment, 2*6 = 12 to $f */
$g = double(++$e);  /* assign twice the value of $e after
                       the increment, 2*7 = 14 to $g */
$h = $g += 10;      /* first, $g is incremented by 10 and ends with the
                       value of 24. the value of the assignment (24) is
                       then assigned into $h, and $h ends with the value
                       of 24 as well. */
?>

一些表达式可以被当成语句。这时，一条语句的形式是 'expr' ';'，即一个表达式加一个分号结尾。在"$b=$a=5;"中，$a=5 是一个有效的表达式，但它本身不是一条语句。"$b=$a=5;"是一条有效的语句。

最后一件值得提起的事情就是表达式的真值。在许多事件中，大体上主要是在条件执行和循环中，不要专注于表达式中明确的值，反而要注意表达式的值是否是 TRUE 或者 FALSE。常量 TRUE 和 FALSE（大小写无关）是两种可能的 Boolean 值。如果有必要，一个表达式将自动转换为 Boolean。参见类型强制转换一节。

PHP 提供了一套完整强大的表达式，而为它提供完整的文件资料已经超出了本手册的范围。上面的例子应该为你提供了一个好的关于什么是表达式和怎样构建一个有用的表达式的概念。在本手册的其余部分，我们将始终使用 expr 来表示一个有效的 PHP 表达式。

魔术常量
运算符
语言参考


运算符

Table of Contents

  • 运算符优先级
  • 算术运算符
  • 赋值运算符
  • 位运算符
  • 比较运算符
  • 错误控制运算符
  • 执行运算符
  • 递增／递减运算符
  • 逻辑运算符
  • 字符串运算符
  • 数组运算符
  • 类型运算符

运算符是可以通过给出的一或多个值（用编程行话来说，表达式）来产生另一个值（因而整个结构成为一个表达式）的东西。

运算符可按照其能接受几个值来分组。一元运算符只能接受一个值，例如 !（逻辑取反运算符）或 ++（递增运算符）。 二元运算符可接受两个值，例如熟悉的算术运算符 +（加）和 -（减），大多数 PHP 运算符都是这种。最后是唯一的三元运算符 ? :，可接受三个值；通常就简单称之为"三元运算符"（尽管称之为条件运算符可能更合适）。

PHP 的运算符完整列表见下节运算符优先级。该节也解释了运算符优先级和结合方向，这控制着在表达式包含有若干个不同运算符时究竟怎样对其求值。

表达式
运算符优先级
语言参考


运算符优先级

运算符优先级指定了两个表达式绑定得有多"紧密"。例如，表达式 1 + 5 * 3 的结果是 16 而不是 18 是因为乘号（"*"）的优先级比加号（"+"）高。必要时可以用括号来强制改变优先级。例如：(1 + 5) * 3 的值为 18。

如果运算符优先级相同，那运算符的结合方向决定了该如何运算。例如，"-"是左联的，那么 1 - 2 - 3 就等同于 (1 - 2) - 3 并且结果是 -4. 另外一方面，"="是右联的，所以 $a = $b = $c 等同于 $a = ($b = $c)。

没有结合的相同优先级的运算符不能连在一起使用，例如 1 < 2 > 1 在PHP是不合法的。但另外一方面表达式 1 <= 1 == 1 是合法的, 因为 == 的优先级低于 <=。

括号的使用，哪怕在不是必要的场合下，通过括号的配对来明确标明运算顺序，而非靠运算符优先级和结合性来决定，通常能够增加代码的可读性。

下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级，此时它们的结合方向决定求值顺序。

运算符优先级
结合方向 | 运算符 | 附加信息
无 | clone new | clone 和 new
左 | [ | array()
右 | ** | 算术运算符
右 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ | 类型和递增／递减
无 | instanceof | 类型
右 | ! | 逻辑运算符
左 | * / % | 算术运算符
左 | + - . | 算术运算符和字符串运算符
左 | << >> | 位运算符
无 | < <= > >= | 比较运算符
无 | == != === !== <> <=> | 比较运算符
左 | & | 位运算符和引用
左 | ^ | 位运算符
左 | | | 位运算符
左 | && | 逻辑运算符
左 | || | 逻辑运算符
左 | ?? | 比较运算符
左 | ? : | ternary
right | = += -= *= **= /= .= %= &= |= ^= <<= >>= | 赋值运算符
左 | and | 逻辑运算符
左 | xor | 逻辑运算符
左 | or | 逻辑运算符

Example #1 结合方向

<?php
$a = 3 * 3 % 5; // (3 * 3) % 5 = 4
// ternary operator associativity differs from C/C++
$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2

$a = 1;
$b = 2;
$a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5
?>

Operator precedence and associativity only determine how expressions are grouped, they do not specify an order of evaluation. PHP does not (in the general case) specify in which order an expression is evaluated and code that assumes a specific order of evaluation should be avoided, because the behavior can change between versions of PHP or depending on the surrounding code.

Example #2 Undefined order of evaluation

<?php
$a = 1;
echo $a + $a++; // may print either 2 or 3

$i = 1;
$array[$i] = $i++; // may set either index 1 or 2
?>

Note:

尽管 = 比其它大多数的运算符的优先级低，PHP
仍旧允许类似如下的表达式：if (!$a = foo())，在此例中
foo() 的返回值被赋给了 $a。

运算符
算术运算符
运算符


算术运算符

还记得学校里学到的基本数学知识吗？就和它们一样。

算术运算符
例子 | 名称 | 结果
-$a | 取反 | $a 的负值。
$a + $b | 加法 | $a 和 $b 的和。
$a - $b | 减法 | $a 和 $b 的差。
$a * $b | 乘法 | $a 和 $b 的积。
$a / $b | 除法 | $a 除以 $b 的商。
$a % $b | 取模 | $a 除以 $b 的余数。
$a ** $b | Exponentiation | Result of raising $a to the $b'th power. Introduced in PHP 5.6.

除法运算符总是返回浮点数。只有在下列情况例外：两个操作数都是整数（或字符串转换成的整数）并且正好能整除，这时它返回一个整数。

取模运算符的操作数在运算之前都会转换成整数（除去小数部分）。

取模运算符 % 的结果和被除数的符号（正负号）相同。即 $a % $b 的结果和 $a 的符号相同。例如：

<?php

echo (5 % 3)."\n";           // prints 2
echo (5 % -3)."\n";          // prints 2
echo (-5 % 3)."\n";          // prints -2
echo (-5 % -3)."\n";         // prints -2

?>

参见手册中的数学函数。

运算符优先级
赋值运算符
运算符


赋值运算符

基本的赋值运算符是"="。一开始可能会以为它是"等于"，其实不是的。它实际上意味着把右边表达式的值赋给左边的运算数。

赋值运算表达式的值也就是所赋的值。也就是说，"$a = 3"的值是 3。这样就可以做一些小技巧：

<?php

$a = ($b = 4) + 5; // $a 现在成了 9，而 $b 成了 4。

?>

在基本赋值运算符之外，还有适合于所有二元算术，数组集合和字符串运算符的"组合运算符"，这样可以在一个表达式中使用它的值并把表达式的结果赋给它，例如：

<?php

$a = 3;
$a += 5; // sets $a to 8, as if we had said: $a = $a + 5;
$b = "Hello ";
$b .= "There!"; // sets $b to "Hello There!", just like $b = $b . "There!";

?>

注意赋值运算将原变量的值拷贝到新变量中（传值赋值），所以改变其中一个并不影响另一个。这也适合于在密集循环中拷贝一些值例如大数组。

在 PHP 中普通的传值赋值行为有个例外就是碰到对象 object 时，在 PHP 5 中是以引用赋值的，除非明确使用了 clone 关键字来拷贝。

引用赋值

PHP 支持引用赋值，使用"$var = &$othervar;"语法。引用赋值意味着两个变量指向了同一个数据，没有拷贝任何东西。

Example #1 引用赋值

<?php
$a = 3;
$b = &$a; // $b 是 $a 的引用

print "$a\n"; // 输出 3
print "$b\n"; // 输出 3

$a = 4; // 修改 $a

print "$a\n"; // 输出 4
print "$b\n"; // 也输出 4，因为 $b 是 $a 的引用，因此也被改变
?>

自 PHP 5 起，new 运算符自动返回一个引用，因此再对 new 的结果进行引用赋值在 PHP 5.3 以及以后版本中会发出一条 E_DEPRECATED 错误信息，在之前版本会发出一条 E_STRICT 错误信息。

例如以下代码将产生警告：

<?php
class C {}

/* The following line generates the following error message:
 * Deprecated: Assigning the return value of new by reference is deprecated in...
 */
$o = &new C;
?>

有关引用更多信息参见本手册中引用的解释一章。

算术运算符
位运算符
运算符


位运算符

位运算符允许对整型数中指定的位进行求值和操作。

位运算符
例子 | 名称 | 结果
$a & $b | And（按位与） | 将把 $a 和 $b 中都为 1 的位设为 1。
$a | $b | Or（按位或） | 将把 $a 和 $b 中任何一个为 1 的位设为 1。
$a ^ $b | Xor（按位异或） | 将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。
~ $a | Not（按位取反） | 将 $a 中为 0 的位设为 1，反之亦然。
$a << $b | Shift left（左移） | 将 $a 中的位向左移动 $b 次（每一次移动都表示"乘以 2"）。
$a >> $b | Shift right（右移） | 将 $a 中的位向右移动 $b 次（每一次移动都表示"除以 2"）。

位移在 PHP 中是数学运算。向任何方向移出去的位都被丢弃。左移时右侧以零填充，符号位被移走意味着正负号不被保留。右移时左侧以符号位填充，意味着正负号被保留。

要用括号确保想要的优先级。例如 $a & $b == true 先进行比较再进行按位与；而 ($a & $b) == true 则先进行按位与再进行比较。

If both operands for the &, | and ^ operators are strings, then the operation will be performed on the ASCII values of the characters that make up the strings and the result will be a string. In all other cases, both operands will be converted to integers and the result will be an integer.

If the operand for the ~ operator is a string, the operation will be performed on the ASCII values of the characters that make up the string and the result will be a string, otherwise the operand and the result will be treated as integers.

Both operands and the result for the << and >> operators are always treated as integers.

PHP 的 ini 设定 error_reporting 使用了按位的值，
提供了关闭某个位的真实例子。要显示除了提示级别
之外的所有错误，php.ini 中是这样用的：
E_ALL & ~E_NOTICE

具体运作方式是先取得 E_ALL 的值：
00000000000000000111011111111111
再取得 E_NOTICE 的值：
00000000000000000000000000001000
然后通过 ~ 将其取反：
11111111111111111111111111110111
最后再用按位与 AND（&）得到两个值中都设定了（为 1）的位：
00000000000000000111011111110111

另外一个方法是用按位异或 XOR（^）来取得只在
其中一个值中设定了的位：
E_ALL ^ E_NOTICE

error_reporting 也可用来演示怎样置位。只显示错误和可恢复
错误的方法是：
E_ERROR | E_RECOVERABLE_ERROR

也就是将 E_ERROR
00000000000000000000000000000001
和 E_RECOVERABLE_ERROR
00000000000000000001000000000000
用按位或 OR（|）运算符来取得在任何一个值中被置位的结果：
00000000000000000001000000000001

Example #1 整数的 AND，OR 和 XOR 位运算符

<?php
/*
 * Ignore the top section,
 * it is just formatting to make output clearer.
 */

$format = '(%1$2d = %1$04b) = (%2$2d = %2$04b)'
        . ' %3$s (%4$2d = %4$04b)' . "\n";

echo <<<EOH
 ---------     ---------  -- ---------
 result        value      op test
 ---------     ---------  -- ---------
EOH;

/*
 * Here are the examples.
 */

$values = array(0, 1, 2, 4, 8);
$test = 1 + 4;

echo "\n Bitwise AND \n";
foreach ($values as $value) {
    $result = $value & $test;
    printf($format, $result, $value, '&', $test);
}

echo "\n Bitwise Inclusive OR \n";
foreach ($values as $value) {
    $result = $value | $test;
    printf($format, $result, $value, '|', $test);
}

echo "\n Bitwise Exclusive OR (XOR) \n";
foreach ($values as $value) {
    $result = $value ^ $test;
    printf($format, $result, $value, '^', $test);
}
?>

以上例程会输出：

 ---------     ---------  -- ---------
 result        value      op test
 ---------     ---------  -- ---------
 Bitwise AND
( 0 = 0000) = ( 0 = 0000) & ( 5 = 0101)
( 1 = 0001) = ( 1 = 0001) & ( 5 = 0101)
( 0 = 0000) = ( 2 = 0010) & ( 5 = 0101)
( 4 = 0100) = ( 4 = 0100) & ( 5 = 0101)
( 0 = 0000) = ( 8 = 1000) & ( 5 = 0101)

 Bitwise Inclusive OR
( 5 = 0101) = ( 0 = 0000) | ( 5 = 0101)
( 5 = 0101) = ( 1 = 0001) | ( 5 = 0101)
( 7 = 0111) = ( 2 = 0010) | ( 5 = 0101)
( 5 = 0101) = ( 4 = 0100) | ( 5 = 0101)
(13 = 1101) = ( 8 = 1000) | ( 5 = 0101)

 Bitwise Exclusive OR (XOR)
( 5 = 0101) = ( 0 = 0000) ^ ( 5 = 0101)
( 4 = 0100) = ( 1 = 0001) ^ ( 5 = 0101)
( 7 = 0111) = ( 2 = 0010) ^ ( 5 = 0101)
( 1 = 0001) = ( 4 = 0100) ^ ( 5 = 0101)
(13 = 1101) = ( 8 = 1000) ^ ( 5 = 0101)

Example #2 字符串的 XOR 运算符

<?php
echo 12 ^ 9; // Outputs '5'

echo "12" ^ "9"; // Outputs the Backspace character (ascii 8)
                 // ('1' (ascii 49)) ^ ('9' (ascii 57)) = #8

echo "hallo" ^ "hello"; // Outputs the ascii values #0 #4 #0 #0 #0
                        // 'a' ^ 'e' = #4

echo 2 ^ "3"; // Outputs 1
              // 2 ^ ((int)"3") == 1

echo "2" ^ 3; // Outputs 1
              // ((int)"2") ^ 3 == 1
?>

Example #3 整数的位移

<?php
/*
 * Here are the examples.
 */

echo "\n--- BIT SHIFT RIGHT ON POSITIVE INTEGERS ---\n";

$val = 4;
$places = 1;
$res = $val >> $places;
p($res, $val, '>>', $places, 'copy of sign bit shifted into left side');

$val = 4;
$places = 2;
$res = $val >> $places;
p($res, $val, '>>', $places);

$val = 4;
$places = 3;
$res = $val >> $places;
p($res, $val, '>>', $places, 'bits shift out right side');

$val = 4;
$places = 4;
$res = $val >> $places;
p($res, $val, '>>', $places, 'same result as above; can not shift beyond 0');

echo "\n--- BIT SHIFT RIGHT ON NEGATIVE INTEGERS ---\n";

$val = -4;
$places = 1;
$res = $val >> $places;
p($res, $val, '>>', $places, 'copy of sign bit shifted into left side');

$val = -4;
$places = 2;
$res = $val >> $places;
p($res, $val, '>>', $places, 'bits shift out right side');

$val = -4;
$places = 3;
$res = $val >> $places;
p($res, $val, '>>', $places, 'same result as above; can not shift beyond -1');

echo "\n--- BIT SHIFT LEFT ON POSITIVE INTEGERS ---\n";

$val = 4;
$places = 1;
$res = $val << $places;
p($res, $val, '<<', $places, 'zeros fill in right side');

$val = 4;
$places = (PHP_INT_SIZE * 8) - 4;
$res = $val << $places;
p($res, $val, '<<', $places);

$val = 4;
$places = (PHP_INT_SIZE * 8) - 3;
$res = $val << $places;
p($res, $val, '<<', $places, 'sign bits get shifted out');

$val = 4;
$places = (PHP_INT_SIZE * 8) - 2;
$res = $val << $places;
p($res, $val, '<<', $places, 'bits shift out left side');

echo "\n--- BIT SHIFT LEFT ON NEGATIVE INTEGERS ---\n";

$val = -4;
$places = 1;
$res = $val << $places;
p($res, $val, '<<', $places, 'zeros fill in right side');

$val = -4;
$places = (PHP_INT_SIZE * 8) - 3;
$res = $val << $places;
p($res, $val, '<<', $places);

$val = -4;
$places = (PHP_INT_SIZE * 8) - 2;
$res = $val << $places;
p($res, $val, '<<', $places, 'bits shift out left side, including sign bit');

/*
 * Ignore this bottom section,
 * it is just formatting to make output clearer.
 */

function p($res, $val, $op, $places, $note = '') {
    $format = '%0' . (PHP_INT_SIZE * 8) . "b\n";

    printf("Expression: %d = %d %s %d\n", $res, $val, $op, $places);

    echo " Decimal:\n";
    printf("  val=%d\n", $val);
    printf("  res=%d\n", $res);

    echo " Binary:\n";
    printf('  val=' . $format, $val);
    printf('  res=' . $format, $res);

    if ($note) {
        echo " NOTE: $note\n";
    }

    echo "\n";
}
?>

以上例程在 32 位机器上的输出:

--- BIT SHIFT RIGHT ON POSITIVE INTEGERS ---
Expression: 2 = 4 >> 1
 Decimal:
  val=4
  res=2
 Binary:
  val=00000000000000000000000000000100
  res=00000000000000000000000000000010
 NOTE: copy of sign bit shifted into left side

Expression: 1 = 4 >> 2
 Decimal:
  val=4
  res=1
 Binary:
  val=00000000000000000000000000000100
  res=00000000000000000000000000000001

Expression: 0 = 4 >> 3
 Decimal:
  val=4
  res=0
 Binary:
  val=00000000000000000000000000000100
  res=00000000000000000000000000000000
 NOTE: bits shift out right side

Expression: 0 = 4 >> 4
 Decimal:
  val=4
  res=0
 Binary:
  val=00000000000000000000000000000100
  res=00000000000000000000000000000000
 NOTE: same result as above; can not shift beyond 0

--- BIT SHIFT RIGHT ON NEGATIVE INTEGERS ---
Expression: -2 = -4 >> 1
 Decimal:
  val=-4
  res=-2
 Binary:
  val=11111111111111111111111111111100
  res=11111111111111111111111111111110
 NOTE: copy of sign bit shifted into left side

Expression: -1 = -4 >> 2
 Decimal:
  val=-4
  res=-1
 Binary:
  val=11111111111111111111111111111100
  res=11111111111111111111111111111111
 NOTE: bits shift out right side

Expression: -1 = -4 >> 3
 Decimal:
  val=-4
  res=-1
 Binary:
  val=11111111111111111111111111111100
  res=11111111111111111111111111111111
 NOTE: same result as above; can not shift beyond -1

--- BIT SHIFT LEFT ON POSITIVE INTEGERS ---
Expression: 8 = 4 << 1
 Decimal:
  val=4
  res=8
 Binary:
  val=00000000000000000000000000000100
  res=00000000000000000000000000001000
 NOTE: zeros fill in right side

Expression: 1073741824 = 4 << 28
 Decimal:
  val=4
  res=1073741824
 Binary:
  val=00000000000000000000000000000100
  res=01000000000000000000000000000000

Expression: -2147483648 = 4 << 29
 Decimal:
  val=4
  res=-2147483648
 Binary:
  val=00000000000000000000000000000100
  res=10000000000000000000000000000000
 NOTE: sign bits get shifted out

Expression: 0 = 4 << 30
 Decimal:
  val=4
  res=0
 Binary:
  val=00000000000000000000000000000100
  res=00000000000000000000000000000000
 NOTE: bits shift out left side

--- BIT SHIFT LEFT ON NEGATIVE INTEGERS ---
Expression: -8 = -4 << 1
 Decimal:
  val=-4
  res=-8
 Binary:
  val=11111111111111111111111111111100
  res=11111111111111111111111111111000
 NOTE: zeros fill in right side

Expression: -2147483648 = -4 << 29
 Decimal:
  val=-4
  res=-2147483648
 Binary:
  val=11111111111111111111111111111100
  res=10000000000000000000000000000000

Expression: 0 = -4 << 30
 Decimal:
  val=-4
  res=0
 Binary:
  val=11111111111111111111111111111100
  res=00000000000000000000000000000000
 NOTE: bits shift out left side, including sign bit

以上例程在 64 位机器上的输出:

--- BIT SHIFT RIGHT ON POSITIVE INTEGERS ---
Expression: 2 = 4 >> 1
 Decimal:
  val=4
  res=2
 Binary:
  val=0000000000000000000000000000000000000000000000000000000000000100
  res=0000000000000000000000000000000000000000000000000000000000000010
 NOTE: copy of sign bit shifted into left side

Expression: 1 = 4 >> 2
 Decimal:
  val=4
  res=1
 Binary:
  val=0000000000000000000000000000000000000000000000000000000000000100
  res=0000000000000000000000000000000000000000000000000000000000000001

Expression: 0 = 4 >> 3
 Decimal:
  val=4
  res=0
 Binary:
  val=0000000000000000000000000000000000000000000000000000000000000100
  res=0000000000000000000000000000000000000000000000000000000000000000
 NOTE: bits shift out right side

Expression: 0 = 4 >> 4
 Decimal:
  val=4
  res=0
 Binary:
  val=0000000000000000000000000000000000000000000000000000000000000100
  res=0000000000000000000000000000000000000000000000000000000000000000
 NOTE: same result as above; can not shift beyond 0

--- BIT SHIFT RIGHT ON NEGATIVE INTEGERS ---
Expression: -2 = -4 >> 1
 Decimal:
  val=-4
  res=-2
 Binary:
  val=1111111111111111111111111111111111111111111111111111111111111100
  res=1111111111111111111111111111111111111111111111111111111111111110
 NOTE: copy of sign bit shifted into left side

Expression: -1 = -4 >> 2
 Decimal:
  val=-4
  res=-1
 Binary:
  val=1111111111111111111111111111111111111111111111111111111111111100
  res=1111111111111111111111111111111111111111111111111111111111111111
 NOTE: bits shift out right side

Expression: -1 = -4 >> 3
 Decimal:
  val=-4
  res=-1
 Binary:
  val=1111111111111111111111111111111111111111111111111111111111111100
  res=1111111111111111111111111111111111111111111111111111111111111111
 NOTE: same result as above; can not shift beyond -1

--- BIT SHIFT LEFT ON POSITIVE INTEGERS ---
Expression: 8 = 4 << 1
 Decimal:
  val=4
  res=8
 Binary:
  val=0000000000000000000000000000000000000000000000000000000000000100
  res=0000000000000000000000000000000000000000000000000000000000001000
 NOTE: zeros fill in right side

Expression: 4611686018427387904 = 4 << 60
 Decimal:
  val=4
  res=4611686018427387904
 Binary:
  val=0000000000000000000000000000000000000000000000000000000000000100
  res=0100000000000000000000000000000000000000000000000000000000000000

Expression: -9223372036854775808 = 4 << 61
 Decimal:
  val=4
  res=-9223372036854775808
 Binary:
  val=0000000000000000000000000000000000000000000000000000000000000100
  res=1000000000000000000000000000000000000000000000000000000000000000
 NOTE: sign bits get shifted out

Expression: 0 = 4 << 62
 Decimal:
  val=4
  res=0
 Binary:
  val=0000000000000000000000000000000000000000000000000000000000000100
  res=0000000000000000000000000000000000000000000000000000000000000000
 NOTE: bits shift out left side

--- BIT SHIFT LEFT ON NEGATIVE INTEGERS ---
Expression: -8 = -4 << 1
 Decimal:
  val=-4
  res=-8
 Binary:
  val=1111111111111111111111111111111111111111111111111111111111111100
  res=1111111111111111111111111111111111111111111111111111111111111000
 NOTE: zeros fill in right side

Expression: -9223372036854775808 = -4 << 61
 Decimal:
  val=-4
  res=-9223372036854775808
 Binary:
  val=1111111111111111111111111111111111111111111111111111111111111100
  res=1000000000000000000000000000000000000000000000000000000000000000

Expression: 0 = -4 << 62
 Decimal:
  val=-4
  res=0
 Binary:
  val=1111111111111111111111111111111111111111111111111111111111111100
  res=0000000000000000000000000000000000000000000000000000000000000000
 NOTE: bits shift out left side, including sign bit

Warning

Shifting integers by values greater than or equal to the system long integer width results in undefined behavior. In other words, don't shift more than 31 bits on a 32-bit system, and don't shift more than 63 bits on a 64-bit system.

使用 gmp 扩展对超出 PHP_INT_MAX 的数值来进行位操作。

参见
pack(),
unpack(),
gmp_and(),
gmp_or(),
gmp_xor(),
gmp_testbit(),
gmp_clrbit()

赋值运算符
比较运算符
运算符


比较运算符

比较运算符，如同它们名称所暗示的，允许对两个值进行比较。还可以参考 PHP 类型比较表看不同类型相互比较的例子。

比较运算符
例子 | 名称 | 结果
$a == $b | 等于 | TRUE，如果类型转换后 $a 等于 $b。
$a === $b | 全等 | TRUE，如果 $a 等于 $b，并且它们的类型也相同。
$a != $b | 不等 | TRUE，如果类型转换后 $a 不等于 $b。
$a <> $b | 不等 | TRUE，如果类型转换后 $a 不等于 $b。
$a !== $b | 不全等 | TRUE，如果 $a 不等于 $b，或者它们的类型不同。
$a < $b | 小与 | TRUE，如果 $a 严格小于 $b。
$a > $b | 大于 | TRUE，如果 $a 严格大于 $b。
$a <= $b | 小于等于 | TRUE，如果 $a 小于或者等于 $b。
$a >= $b | 大于等于 | TRUE，如果 $a 大于或者等于 $b。
$a <=> $b | 结合比较运算符 | 当$a小于、等于、大于than $b时 分别返回一个小于、等于、大于0的integer 值。 PHP7开始提供.
$a ?? $b ?? $c | NULL 合并操作符 | 从左往右第一个存在且不为 NULL 的操作数。如果都没有定义且不为 NULL，则返回 NULL。PHP7开始提供。

如果比较一个数字和字符串或者比较涉及到数字内容的字符串，则字符串会被转换为数值并且比较按照数值来进行。此规则也适用于 switch 语句。当用 === 或 !== 进行比较时则不进行类型转换，因为此时类型和数值都要比对。

<?php
var_dump(0 == "a"); // 0 == 0 -> true
var_dump("1" == "01"); // 1 == 1 -> true
var_dump("10" == "1e1"); // 10 == 10 -> true
var_dump(100 == "1e2"); // 100 == 100 -> true

switch ("a") {
case 0:
    echo "0";
    break;
case "a": // never reached because "a" is already matched with 0
    echo "a";
    break;
}
?>
<?php
// Integers
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1

// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1

// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1

echo "a" <=> "aa"; // -1
echo "zz" <=> "aa"; // 1

// Arrays
echo [] <=> []; // 0
echo [1, 2, 3] <=> [1, 2, 3]; // 0
echo [1, 2, 3] <=> []; // 1
echo [1, 2, 3] <=> [1, 2, 1]; // 1
echo [1, 2, 3] <=> [1, 2, 4]; // -1

// Objects
$a = (object) ["a" => "b"];
$b = (object) ["a" => "b"];
echo $a <=> $b; // 0

$a = (object) ["a" => "b"];
$b = (object) ["a" => "c"];
echo $a <=> $b; // -1

$a = (object) ["a" => "c"];
$b = (object) ["a" => "b"];
echo $a <=> $b; // 1

// only values are compared
$a = (object) ["a" => "b"];
$b = (object) ["b" => "b"];
echo $a <=> $b; // 1

?>

对于多种类型，比较运算符根据下表比较（按顺序）。

比较多种类型
运算数 1 类型 | 运算数 2 类型 | 结果
null 或 string | string | 将 NULL 转换为 ""，进行数字或词汇比较
bool 或 null | 任何其它类型 | 转换为 bool，FALSE < TRUE
object | object | 内置类可以定义自己的比较，不同类不能比较，相同类和数组同样方式比较属性（PHP 4 中），PHP 5 有其自己的说明
string，resource 或 number | string，resource 或 number | 将字符串和资源转换成数字，按普通数学比较
array | array | 具有较少成员的数组较小，如果运算数 1 中的键不存在于运算数 2 中则数组无法比较，否则挨个值比较（见下例）
object | 任何其它类型 | object 总是更大
array | 任何其它类型 | array 总是更大

Example #1 标准数组比较代码

<?php
// 数组是用标准比较运算符这样比较的
function standard_array_compare($op1, $op2)
{
    if (count($op1) < count($op2)) {
        return -1; // $op1 < $op2
    } elseif (count($op1) > count($op2)) {
        return 1; // $op1 > $op2
    }
    foreach ($op1 as $key => $val) {
        if (!array_key_exists($key, $op2)) {
            return null; // uncomparable
        } elseif ($val < $op2[$key]) {
            return -1;
        } elseif ($val > $op2[$key]) {
            return 1;
        }
    }
    return 0; // $op1 == $op2
}
?>

Example #2 Transcription of standard array comparison

<?php
// Arrays are compared like this with standard comparison operators
function standard_array_compare($op1, $op2)
{
    if (count($op1) < count($op2)) {
        return -1; // $op1 < $op2
    } elseif (count($op1) > count($op2)) {
        return 1; // $op1 > $op2
    }
    foreach ($op1 as $key => $val) {
        if (!array_key_exists($key, $op2)) {
            return null; // uncomparable
        } elseif ($val < $op2[$key]) {
            return -1;
        } elseif ($val > $op2[$key]) {
            return 1;
        }
    }
    return 0; // $op1 == $op2
}
?>

参见 strcasecmp()，strcmp()，数组运算符和类型章节。

Warning

比较浮点数

由于浮点数 float 的内部表达方式，不应比较两个浮点数float是否相等。

更多信息参见 float。

三元运算符

另一个条件运算符是"?:"（或三元）运算符 。

Example #3 赋默认值

<?php
// Example usage for: Ternary Operator
$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];

// The above is identical to this if/else statement
if (empty($_POST['action'])) {
    $action = 'default';
} else {
    $action = $_POST['action'];
}

?>
表达式 (expr1) ? (expr2) : (expr3) 在 expr1 求值为 TRUE 时的值为 expr2，在 expr1 求值为 FALSE 时的值为 expr3。

自 PHP 5.3 起，可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1，否则返回 expr3。

Note: 注意三元运算符是个语句，因此其求值不是变量，而是语句的结果。如果想通过引用返回一个变量这点就很重要。在一个通过引用返回的函数中语句 return $var == 42 ? $a : $b; 将不起作用，以后的 PHP 版本会为此发出一条警告。

Note:

建议避免将三元运算符堆积在一起使用。当在一条语句中使用多个三元运算符时会造成 PHP 运算结果不清晰：

Example #4 不清晰的三元运算符行为

<?php
// 乍看起来下面的输出是 'true'
echo (true?'true':false?'t':'f');

// 然而，上面语句的实际输出是't'，因为三元运算符是从左往右计算的

// 下面是与上面等价的语句，但更清晰
echo ((true ? 'true' : 'false') ? 't' : 'f');

// here, you can see that the first expression is evaluated to 'true', which
// in turn evaluates to (bool)true, thus returning the true branch of the
// second ternary expression.
?>

位运算符
错误控制运算符
运算符


错误控制运算符

PHP 支持一个错误控制运算符：@。当将其放置在一个 PHP 表达式之前，该表达式可能产生的任何错误信息都被忽略掉。

如果用 set_error_handler() 设定了自定义的错误处理函数，仍然会被调用，但是此错误处理函数可以（并且也应该）调用 error_reporting()，而该函数在出错语句前有 @ 时将返回 0。

如果激活了 track_errors 特性，表达式所产生的任何错误信息都被存放在变量 $php_errormsg 中。此变量在每次出错时都会被覆盖，所以如果想用它的话就要尽早检查。

<?php
/* Intentional file error */
$my_file = @file ('non_existent_file') or
    die ("Failed opening file: error was '$php_errormsg'");

// this works for any expression, not just functions:
$value = @$cache[$key];
// will not issue a notice if the index $key doesn't exist.

?>

Note: @ 运算符只对表达式有效。对新手来说一个简单的规则就是：如果能从某处得到值，就能在它前面加上 @ 运算符。例如，可以把它放在变量，函数和 include 调用，常量，等等之前。不能把它放在函数或类的定义之前，也不能用于条件结构例如 if 和 foreach 等。

参见 error_reporting() 及手册中错误处理及日志函数的有关章节。

Warning

目前的"@"错误控制运算符前缀甚至使导致脚本终止的严重错误的错误报告也失效。这意味着如果在某个不存在或者敲错了字母的函数调用前用了"@"来抑制错误信息，那脚本会没有任何迹象显示原因而死在那里。

比较运算符
执行运算符
运算符


执行运算符

PHP 支持一个执行运算符：反引号（``）。注意这不是单引号！PHP 将尝试将反引号中的内容作为 shell 命令来执行，并将其输出信息返回（即，可以赋给一个变量而不是简单地丢弃到标准输出）。使用反引号运算符"`"的效果与函数 shell_exec() 相同。

<?php
$output = `ls -al`;
echo "<pre>$output</pre>";
?>

Note:

反引号运算符在激活了安全模式或者关闭了 shell_exec() 时是无效的。

Note:

与其它某些语言不同，反引号不能在双引号字符串中使用。

参见手册中程序执行函数，popen()，proc_open() 以及 PHP 的命令行模式。

错误控制运算符
递增／递减运算符
运算符


递增／递减运算符

PHP 支持 C 风格的前／后递增与递减运算符。

Note: 递增／递减运算符不影响布尔值。递减 NULL 值也没有效果，但是递增 NULL 的结果是 1。

递增／递减运算符
例子 | 名称 | 效果
++$a | 前加 | $a 的值加一，然后返回 $a。
$a++ | 后加 | 返回 $a，然后将 $a 的值加一。
--$a | 前减 | $a 的值减一， 然后返回 $a。
$a-- | 后减 | 返回 $a，然后将 $a 的值减一。

一个简单的示例脚本：

<?php
echo "<h3>Postincrement</h3>";
$a = 5;
echo "Should be 5: " . $a++ . "<br />\n";
echo "Should be 6: " . $a . "<br />\n";

echo "<h3>Preincrement</h3>";
$a = 5;
echo "Should be 6: " . ++$a . "<br />\n";
echo "Should be 6: " . $a . "<br />\n";

echo "<h3>Postdecrement</h3>";
$a = 5;
echo "Should be 5: " . $a-- . "<br />\n";
echo "Should be 4: " . $a . "<br />\n";

echo "<h3>Predecrement</h3>";
$a = 5;
echo "Should be 4: " . --$a . "<br />\n";
echo "Should be 4: " . $a . "<br />\n";
?>

在处理字符变量的算数运算时，PHP 沿袭了 Perl 的习惯，而非 C 的。例如，在 Perl 中 $a = 'Z'; $a++; 将把 $a 变成'AA'，而在 C 中，a = 'Z'; a++; 将把 a 变成 '['（'Z' 的 ASCII 值是 90，'[' 的 ASCII 值是 91）。注意字符变量只能递增，不能递减，并且只支持纯字母（a-z 和 A-Z）。递增／递减其他字符变量则无效，原字符串没有变化。

Example #1 涉及字符变量的算数运算

<?php
echo '== Alphabets ==' . PHP_EOL;
$s = 'W';
for ($n=0; $n<6; $n++) {
    echo ++$s . PHP_EOL;
}
// Digit characters behave differently
echo '== Digits ==' . PHP_EOL;
$d = 'A8';
for ($n=0; $n<6; $n++) {
    echo ++$d . PHP_EOL;
}
$d = 'A08';
for ($n=0; $n<6; $n++) {
    echo ++$d . PHP_EOL;
}
?>

以上例程会输出：

== Characters ==
X
Y
Z
AA
AB
AC
== Digits ==
A9
B0
B1
B2
B3
B4
A09
A10
A11
A12
A13
A14

递增或递减布尔值没有效果。

执行运算符
逻辑运算符
运算符


逻辑运算符

逻辑运算符
例子 | 名称 | 结果
$a and $b | And（逻辑与） | TRUE，如果 $a 和 $b 都为 TRUE。
$a or $b | Or（逻辑或） | TRUE，如果 $a 或 $b 任一为 TRUE。
$a xor $b | Xor（逻辑异或） | TRUE，如果 $a 或 $b 任一为 TRUE，但不同时是。
! $a | Not（逻辑非） | TRUE，如果 $a 不为 TRUE。
$a && $b | And（逻辑与） | TRUE，如果 $a 和 $b 都为 TRUE。
$a || $b | Or（逻辑或） | TRUE，如果 $a 或 $b 任一为 TRUE。

"与"和"或"有两种不同形式运算符的原因是它们运算的优先级不同（见运算符优先级）。

Example #1 逻辑运算符示例

<?php

// --------------------
// foo() 根本没机会被调用，被运算符"短路"了

$a = (false && foo());
$b = (true  || foo());
$c = (false and foo());
$d = (true  or  foo());

// --------------------
// "||" 比 "or" 的优先级高

// 表达式 (false || true) 的结果被赋给 $e
// 等同于：($e = (false || true))
$e = false || true;

// 常量 false 被赋给 $f，true 被忽略
// 等同于：(($f = false) or true)
$f = false or true;

var_dump($e, $f);

// --------------------
// "&&" 比 "and" 的优先级高

// 表达式 (true && false) 的结果被赋给 $g
// 等同于：($g = (true && false))
$g = true && false;

// 常量 true 被赋给 $h，false 被忽略
// 等同于：(($h = true) and false)
$h = true and false;

var_dump($g, $h);
?>

以上例程的输出类似于：

bool(true)
bool(false)
bool(false)
bool(true)
递增／递减运算符
字符串运算符
运算符


字符串运算符

有两个字符串（string）运算符。第一个是连接运算符（"."），它返回其左右参数连接后的字符串。第二个是连接赋值运算符（".="），它将右边参数附加到左边的参数之后。更多信息见赋值运算符。

<?php
$a = "Hello ";
$b = $a . "World!"; // now $b contains "Hello World!"

$a = "Hello ";
$a .= "World!";     // now $a contains "Hello World!"
?>

参见字符串类型和字符串函数章节。

逻辑运算符
数组运算符
运算符


数组运算符

数组运算符
例子 | 名称 | 结果
$a + $b | 联合 | $a 和 $b 的联合。
$a == $b | 相等 | 如果 $a 和 $b 具有相同的键／值对则为 TRUE。
$a === $b | 全等 | 如果 $a 和 $b 具有相同的键／值对并且顺序和类型都相同则为 TRUE。
$a != $b | 不等 | 如果 $a 不等于 $b 则为 TRUE。
$a <> $b | 不等 | 如果 $a 不等于 $b 则为 TRUE。
$a !== $b | 不全等 | 如果 $a 不全等于 $b 则为 TRUE。

+ 运算符把右边的数组元素附加到左边的数组后面，两个数组中都有的键名，则只用左边数组中的，右边的被忽略。

<?php
$a = array("a" => "apple", "b" => "banana");
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");

$c = $a + $b; // Union of $a and $b
echo "Union of \$a and \$b: \n";
var_dump($c);

$c = $b + $a; // Union of $b and $a
echo "Union of \$b and \$a: \n";
var_dump($c);

$a += $b; // Union of $a += $b is $a and $b
echo "Union of \$a += \$b: \n";
var_dump($a);
?>
执行后，此脚本会显示：
Union of $a and $b:
array(3) {
  ["a"]=>
  string(5) "apple"
  ["b"]=>
  string(6) "banana"
  ["c"]=>
  string(6) "cherry"
}
Union of $b and $a:
array(3) {
  ["a"]=>
  string(4) "pear"
  ["b"]=>
  string(10) "strawberry"
  ["c"]=>
  string(6) "cherry"
}
Union of $a += $b:
array(3) {
  'a' =>
  string(5) "apple"
  'b' =>
  string(6) "banana"
  'c' =>
  string(6) "cherry"
}

数组中的单元如果具有相同的键名和值则比较时相等。

Example #1 比较数组

<?php
$a = array("apple", "banana");
$b = array(1 => "banana", "0" => "apple");

var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)
?>

参见数组类型和数组函数章节。

字符串运算符
类型运算符
运算符


类型运算符

instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例：

Example #1 对类使用 instanceof

<?php
class MyClass
{
}

class NotMyClass
{
}
$a = new MyClass;

var_dump($a instanceof MyClass);
var_dump($a instanceof NotMyClass);
?>

以上例程会输出：

bool(true)
bool(false)

instanceof　也可用来确定一个变量是不是继承自某一父类的子类的实例：

Example #2 对继承类使用 instanceof

<?php
class ParentClass
{
}

class MyClass extends ParentClass
{
}

$a = new MyClass;

var_dump($a instanceof MyClass);
var_dump($a instanceof ParentClass);
?>

以上例程会输出：

bool(true)
bool(true)

检查一个对象是否不是某个类的实例，可以使用逻辑运算符 not。

Example #3 使用 instanceof 检查对象不是某个类的实例

<?php
class MyClass
{
}

$a = new MyClass;
var_dump(!($a instanceof stdClass));
?>

以上例程会输出：

bool(true)

最后，instanceof也可用于确定一个变量是不是实现了某个接口的对象的实例:

Example #4 对接口使用 instanceof

<?php
interface MyInterface
{
}

class MyClass implements MyInterface
{
}

$a = new MyClass;

var_dump($a instanceof MyClass);
var_dump($a instanceof MyInterface);
?>

以上例程会输出：

bool(true)
bool(true)

虽然 instanceof 通常直接与类名一起使用，但也可以使用对象或字符串变量：

Example #5 对其它变量使用 instanceof

<?php
interface MyInterface
{
}

class MyClass implements MyInterface
{
}

$a = new MyClass;
$b = new MyClass;
$c = 'MyClass';
$d = 'NotMyClass';

var_dump($a instanceof $b); // $b is an object of class MyClass
var_dump($a instanceof $c); // $c is a string 'MyClass'
var_dump($a instanceof $d); // $d is a string 'NotMyClass'
?>

以上例程会输出：

bool(true)
bool(true)
bool(false)

如果被检测的变量不是对象，instanceof 并不发出任何错误信息而是返回 FALSE。不允许用来检测常量。

Example #6 用 instanceof 检测其它变量

<?php
$a = 1;
$b = NULL;
$c = imagecreate(5, 5);
var_dump($a instanceof stdClass); // $a is an integer
var_dump($b instanceof stdClass); // $b is NULL
var_dump($c instanceof stdClass); // $c is a resource
var_dump(FALSE instanceof stdClass);
?>

以上例程会输出：

bool(false)
bool(false)
bool(false)
PHP Fatal error:  instanceof expects an object instance, constant given

然而 instanceof 的使用还有一些陷阱必须了解。在 PHP 5.1.0 之前，如果要检查的类名称不存在，instanceof 会调用 __autoload()。另外，如果该类没有被装载则会产生一个致命错误。可以通过使用动态类引用或用一个包含类名的字符串变量来避开这种问题：

Example #7 避免 PHP 5.0 中 instanceof 引起的类名查找和致命错误问题

<?php
$d = 'NotMyClass';
var_dump($a instanceof $d); // no fatal error here
?>

以上例程会输出：

bool(false)

instanceof 运算符是 PHP 5 引进的。在此之前用
is_a()，但是后来
is_a() 被废弃而用 instanceof
替代了。注意自 PHP 5.3.0 起，又恢复使用 is_a() 了。

参见 get_class() 和 is_a()。

数组运算符
流程控制
运算符


流程控制

Table of Contents

  • 简介
  • if
  • else
  • elseif/else if
  • 流程控制的替代语法
  • while
  • do-while
  • for
  • foreach
  • break
  • continue
  • switch
  • declare
  • return
  • require
  • include
  • require_once
  • include_once
  • goto
类型运算符
简介
语言参考


简介

任何 PHP 脚本都是由一系列语句构成的。一条语句可以是一个赋值语句，一个函数调用，一个循环，一个条件语句或者甚至是一个什么也不做的语句（空语句）。语句通常以分号结束。此外，还可以用花括号将一组语句封装成一个语句组。语句组本身可以当作是一行语句。本章介绍了各种语句类型。

流程控制
if
流程控制


if

(PHP 4, PHP 5, PHP 7)

if 结构是很多语言包括 PHP 在内最重要的特性之一，它允许按照条件执行代码片段。PHP 的 if 结构和 C 语言相似：

<?php
if (expr)
  statement
?>

如同在表达式一章中定义的，expr 按照布尔求值。如果 expr 的值为 TRUE，PHP 将执行 statement，如果值为 FALSE ——将忽略 statement。有关哪些值被视为 FALSE 的更多信息参见转换为布尔值一节。

如果 $a 大于 $b，则以下例子将显示 a is bigger than b：

<?php
if ($a > $b)
  echo "a is bigger than b";
?>

经常需要按照条件执行不止一条语句，当然并不需要给每条语句都加上一个 if 子句。可以将这些语句放入语句组中。例如，如果 $a 大于 $b，以下代码将显示 a is bigger than b 并且将 $a 的值赋给 $b：

<?php
if ($a > $b) {
  echo "a is bigger than b";
  $b = $a;
}
?>

if 语句可以无限层地嵌套在其它 if 语句中，这给程序的不同部分的条件执行提供了充分的弹性。

简介
else
流程控制


else

(PHP 4, PHP 5, PHP 7)

经常需要在满足某个条件时执行一条语句，而在不满足该条件时执行其它语句，这正是 else 的功能。else 延伸了 if 语句，可以在 if 语句中的表达式的值为 FALSE 时执行语句。例如以下代码在 $a 大于 $b 时显示 a is bigger than b，反之则显示 a is NOT bigger than b：

<?php
if ($a > $b) {
  echo "a is greater than b";
} else {
  echo "a is NOT greater than b";
}
?>
else 语句仅在 if 以及 elseif（如果有的话）语句中的表达式的值为 FALSE 时执行（参见 elseif）。

if
elseif/else if
流程控制


elseif/else if

(PHP 4, PHP 5, PHP 7)

elseif，和此名称暗示的一样，是 if 和 else 的组合。和 else 一样，它延伸了 if 语句，可以在原来的 if 表达式值为 FALSE 时执行不同语句。但是和 else 不一样的是，它仅在 elseif 的条件表达式值为 TRUE 时执行语句。例如以下代码将根据条件分别显示 a is bigger than b，a equal to b 或者 a is smaller than b：

<?php
if ($a > $b) {
    echo "a is bigger than b";
} elseif ($a == $b) {
    echo "a is equal to b";
} else {
    echo "a is smaller than b";
}
?>

在同一个 if 语句中可以有多个 elseif 部分，其中第一个表达式值为 TRUE（如果有的话）的 elseif 部分将会执行。在 PHP 中，也可以写成"else if"（两个单词），它和"elseif"（一个单词）的行为完全一样。句法分析的含义有少许区别（如果你熟悉 C 语言的话，与之行为相同），但是底线是两者会产生完全一样的行为。

elseif 的语句仅在之前的 if 和所有之前 elseif 的表达式值为 FALSE，并且当前的 elseif 表达式值为 TRUE 时执行。

Note: 必须要注意的是 elseif 与 else if 只有在类似上例中使用花括号的情况下才认为是完全相同。如果用冒号来定义 if/elseif 条件，那就不能用两个单词的 else if，否则 PHP 会产生解析错误。

<?php

/* 不正确的使用方法： */
if($a > $b):
    echo $a." is greater than ".$b;
else if($a == $b): // 将无法编译
    echo "The above line causes a parse error.";
endif;

/* 正确的使用方法： */
if($a > $b):
    echo $a." is greater than ".$b;
elseif($a == $b): // 注意使用了一个单词的 elseif
    echo $a." equals ".$b;
else:
    echo $a." is neither greater than or equal to ".$b;
endif;

?>

else
流程控制的替代语法
流程控制


流程控制的替代语法

(PHP 4, PHP 5, PHP 7)

PHP 提供了一些流程控制的替代语法，包括 if，while，for，foreach 和 switch。替代语法的基本形式是把左花括号（{）换成冒号（:），把右花括号（}）分别换成 endif;，endwhile;，endfor;，endforeach; 以及 endswitch;。

<?php if ($a == 5): ?>
A is equal to 5
<?php endif; ?>

在上面的例子中，HTML 内容"A is equal to 5"用替代语法嵌套在 if 语句中。该 HTML 的内容仅在 $a 等于 5 时显示。

替代语法同样可以用在 else 和 elseif 中。下面是一个包括 elseif 和 else 的 if 结构用替代语法格式写的例子：

<?php
if ($a == 5):
    echo "a equals 5";
    echo "...";
elseif ($a == 6):
    echo "a equals 6";
    echo "!!!";
else:
    echo "a is neither 5 nor 6";
endif;
?>

Note:

不支持在同一个控制块内混合使用两种语法。

更多例子参见 while，for 和 if。

elseif/else if
while
流程控制


while

(PHP 4, PHP 5, PHP 7)

while 循环是 PHP 中最简单的循环类型。它和 C 语言中的 while 表现地一样。while 语句的基本格式是：

while (expr)
    statement

while 语句的含意很简单，它告诉 PHP 只要 while 表达式的值为 TRUE 就重复执行嵌套中的循环语句。表达式的值在每次开始循环时检查，所以即使这个值在循环语句中改变了，语句也不会停止执行，直到本次循环结束。有时候如果 while 表达式的值一开始就是 FALSE，则循环语句一次都不会执行。

和 if 语句一样，可以在 while 循环中用花括号括起一个语句组，或者用替代语法：

while (expr):
    statement
    ...
endwhile;

下面两个例子完全一样，都显示数字 1 到 10：

<?php
/* example 1 */

$i = 1;
while ($i <= 10) {
    echo $i++;  /* the printed value would be
                    $i before the increment
                    (post-increment) */
}

/* example 2 */

$i = 1;
while ($i <= 10):
    print $i;
    $i++;
endwhile;
?>

流程控制的替代语法
do-while
流程控制


do-while

(PHP 4, PHP 5, PHP 7)

do-while 循环和 while 循环非常相似，区别在于表达式的值是在每次循环结束时检查而不是开始时。和一般的 while 循环主要的区别是 do-while 的循环语句保证会执行一次（表达式的真值在每次循环结束后检查），然而在一般的 while 循环中就不一定了（表达式真值在循环开始时检查，如果一开始就为 FALSE 则整个循环立即终止）。

do-while 循环只有一种语法：

<?php
$i = 0;
do {
   echo $i;
} while ($i > 0);
?>

以上循环将正好运行一次，因为经过第一次循环后，当检查表达式的真值时，其值为 FALSE（$i 不大于 0）而导致循环终止。

资深的 C 语言用户可能熟悉另一种不同的 do-while 循环用法，把语句放在 do-while(0) 之中，在循环内部用 break 语句来结束执行循环。以下代码片段示范了此方法：

<?php
do {
    if ($i < 5) {
        echo "i is not big enough";
        break;
    }
    $i *= $factor;
    if ($i < $minimum_limit) {
        break;
    }
    echo "i is ok";

    /* process i */

} while(0);
?>

如果还不能立刻理解也不用担心。即使不用此"特性"也照样可以写出强大的代码来。自 PHP 5.3.0 起，还可以使用 goto 来跳出循环。

while
for
流程控制


for

(PHP 4, PHP 5, PHP 7)

for 循环是 PHP 中最复杂的循环结构。它的行为和 C 语言的相似。 for 循环的语法是：

for (expr1; expr2; expr3)
    statement

第一个表达式（expr1）在循环开始前无条件求值（并执行）一次。

expr2 在每次循环开始前求值。如果值为 TRUE，则继续循环，执行嵌套的循环语句。如果值为 FALSE，则终止循环。

expr3 在每次循环之后被求值（并执行）。

每个表达式都可以为空或包括逗号分隔的多个表达式。表达式 expr2 中，所有用逗号分隔的表达式都会计算，但只取最后一个结果。expr2 为空意味着将无限循环下去（和 C 一样，PHP 暗中认为其值为 TRUE）。这可能不像想象中那样没有用，因为经常会希望用有条件的 break 语句来结束循环而不是用 for 的表达式真值判断。

考虑以下的例子，它们都显示数字 1 到 10：

<?php
/* example 1 */

for ($i = 1; $i <= 10; $i++) {
    echo $i;
}

/* example 2 */

for ($i = 1; ; $i++) {
    if ($i > 10) {
        break;
    }
    echo $i;
}

/* example 3 */

$i = 1;
for (;;) {
    if ($i > 10) {
        break;
    }
    echo $i;
    $i++;
}

/* example 4 */

for ($i = 1, $j = 0; $i <= 10; $j += $i, print $i, $i++);
?>

当然，第一个例子看上去最简洁（或者有人认为是第四个），但用户可能会发现在 for 循环中用空的表达式在很多场合下会很方便。

PHP 也支持用冒号的 for 循环的替代语法。

for (expr1; expr2; expr3):
    statement;
    ...
endfor;

有时经常需要像下面这样例子一样对数组进行遍历：

<?php
/*
 * 此数组将在遍历的过程中改变其中某些单元的值
 */
$people = Array(
        Array('name' => 'Kalle', 'salt' => 856412),
        Array('name' => 'Pierre', 'salt' => 215863)
        );

for($i = 0; $i < count($people); ++$i)
{
    $people[$i]['salt'] = rand(000000, 999999);
}
?>

以上代码可能执行很慢，因为每次循环时都要计算一遍数组的长度。由于数组的长度始终不变，可以用一个中间变量来储存数组长度以优化而不是不停调用 count()：

<?php
$people = Array(
        Array('name' => 'Kalle', 'salt' => 856412),
        Array('name' => 'Pierre', 'salt' => 215863)
        );

for($i = 0, $size = count($people); $i < $size; ++$i)
{
    $people[$i]['salt'] = rand(000000, 999999);
}
?>

do-while
foreach
流程控制


foreach

(PHP 4, PHP 5, PHP 7)

foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象，如果尝试应用于其他数据类型的变量，或者未初始化的变量将发出错误信息。有两种语法：

foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement

第一种格式遍历给定的 array_expression 数组。每次循环中，当前单元的值被赋给 $value 并且数组内部的指针向前移一步（因此下一次循环中将会得到下一个单元）。

第二种格式做同样的事，只除了当前单元的键名也会在每次循环中被赋给变量 $key。

还能够自定义遍历对象。

Note:

当 foreach 开始执行时，数组内部的指针会自动指向第一个单元。这意味着不需要在 foreach 循环之前调用 reset()。

由于 foreach 依赖内部数组指针，在循环中修改其值将可能导致意外的行为。

可以很容易地通过在 $value 之前加上 & 来修改数组的元素。此方法将以引用赋值而不是拷贝一个值。

<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    $value = $value * 2;
}
// $arr is now array(2, 4, 6, 8)
unset($value); // 最后取消掉引用
?>

$value 的引用仅在被遍历的数组可以被引用时才可用（例如是个变量）。以下代码则无法运行：

<?php
foreach (array(1, 2, 3, 4) as &$value) {
    $value = $value * 2;
}

?>

Warning

数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁。

Note:

foreach 不支持用"@"来抑制错误信息的能力。

用户可能注意到了以下的代码功能完全相同：

<?php
$arr = array("one", "two", "three");
reset($arr);
while (list(, $value) = each($arr)) {
    echo "Value: $value<br>\n";
}

foreach ($arr as $value) {
    echo "Value: $value<br />\n";
}
?>

以下代码功能也完全相同：

<?php
$arr = array("one", "two", "three");
reset($arr);
while (list($key, $value) = each($arr)) {
    echo "Key: $key; Value: $value<br />\n";
}

foreach ($arr as $key => $value) {
    echo "Key: $key; Value: $value<br />\n";
}
?>

示范用法的更多例子：

<?php
/* foreach example 1: value only */

$a = array(1, 2, 3, 17);

foreach ($a as $v) {
   echo "Current value of \$a: $v.\n";
}

/* foreach example 2: value (with its manual access notation printed for illustration) */

$a = array(1, 2, 3, 17);

$i = 0; /* for illustrative purposes only */

foreach ($a as $v) {
    echo "\$a[$i] => $v.\n";
    $i++;
}

/* foreach example 3: key and value */

$a = array(
    "one" => 1,
    "two" => 2,
    "three" => 3,
    "seventeen" => 17
);

foreach ($a as $k => $v) {
    echo "\$a[$k] => $v.\n";
}

/* foreach example 4: multi-dimensional arrays */
$a = array();
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";

foreach ($a as $v1) {
    foreach ($v1 as $v2) {
        echo "$v2\n";
    }
}

/* foreach example 5: dynamic arrays */

foreach (array(1, 2, 3, 4, 5) as $v) {
    echo "$v\n";
}
?>

用 list() 给嵌套的数组解包

(PHP 5 >= 5.5.0, PHP 7)

PHP 5.5 增添了遍历一个数组的数组的功能并且把嵌套的数组解包到循环变量中，只需将 list() 作为值提供。

例如：

<?php
$array = [
    [1, 2],
    [3, 4],
];

foreach ($array as list($a, $b)) {
    // $a contains the first element of the nested array,
    // and $b contains the second element.
    echo "A: $a; B: $b\n";
}
?>

以上例程会输出：

A: 1; B: 2
A: 3; B: 4

list() 中的单元可以少于嵌套数组的，此时多出来的数组单元将被忽略：

<?php
$array = [
    [1, 2],
    [3, 4],
];

foreach ($array as list($a)) {
    // Note that there is no $b here.
    echo "$a\n";
}
?>

以上例程会输出：

1
3

如果 list() 中列出的单元多于嵌套数组则会发出一条消息级别的错误信息：

<?php
$array = [
    [1, 2],
    [3, 4],
];

foreach ($array as list($a, $b, $c)) {
    echo "A: $a; B: $b; C: $c\n";
}
?>

以上例程会输出：

Notice: Undefined offset: 2 in example.php on line 7
A: 1; B: 2; C:

Notice: Undefined offset: 2 in example.php on line 7
A: 3; B: 4; C:

for
break
流程控制


break

(PHP 4, PHP 5, PHP 7)

break 结束当前 for，foreach，while，do-while 或者 switch 结构的执行。

break 可以接受一个可选的数字参数来决定跳出几重循环。

<?php
$arr = array('one', 'two', 'three', 'four', 'stop', 'five');
while (list (, $val) = each($arr)) {
    if ($val == 'stop') {
        break;    /* You could also write 'break 1;' here. */
    }
    echo "$val<br />\n";
}

/* 使用可选参数 */

$i = 0;
while (++$i) {
    switch ($i) {
    case 5:
        echo "At 5<br />\n";
        break 1;  /* 只退出 switch. */
    case 10:
        echo "At 10; quitting<br />\n";
        break 2;  /* 退出 switch 和 while 循环 */
    default:
        break;
    }
}
?>

break 的更新记录
版本 | 说明
5.4.0 | break 0; 不再合法。这在之前的版本被解析为 break 1;。
5.4.0 | 取消变量作为参数传递（例如 $num = 2; break $num;）。

foreach
continue
流程控制


continue

(PHP 4, PHP 5, PHP 7)

continue 在循环结构用用来跳过本次循环中剩余的代码并在条件求值为真时开始执行下一次循环。

Note: 注意在 PHP 中 switch 语句被认为是可以使用 continue 的一种循环结构。

continue 接受一个可选的数字参数来决定跳过几重循环到循环结尾。默认值是 1，即跳到当前循环末尾。

<?php
while (list ($key, $value) = each($arr)) {
    if (!($key % 2)) { // skip odd members
        continue;
    }
    do_something_odd($value);
}

$i = 0;
while ($i++ < 5) {
    echo "Outer<br />\n";
    while (1) {
        echo "Middle<br />\n";
        while (1) {
            echo "Inner<br />\n";
            continue 3;
        }
        echo "This never gets output.<br />\n";
    }
    echo "Neither does this.<br />\n";
}
?>

省略 continue 后面的分号会导致混淆。以下例子示意了不应该这样做。

<?php
  for ($i = 0; $i < 5; ++$i) {
      if ($i == 2)
          continue
      print "$i\n";
  }
?>

希望得到的结果是：

0
1
3
4

可实际的输出是：

2

因为整个 continue print "$i\n"; 被当做单一的表达式而求值，所以 print 函数只有在 $i == 2 为真时才被调用（print 的值被当成了上述的可选数字参数而传递给了 continue）。

continue 的更新记录
版本 | 说明
5.4.0 | continue 0; 不再合法。这在之前的版本被解析为 continue 1;。
5.4.0 | 取消变量作为参数传递（例如 $num = 2; continue $num;）。

break
switch
流程控制


switch

(PHP 4, PHP 5, PHP 7)

switch 语句类似于具有同一个表达式的一系列 if 语句。很多场合下需要把同一个变量（或表达式）与很多不同的值比较，并根据它等于哪个值来执行不同的代码。这正是 switch 语句的用途。

Note: 注意和其它语言不同，continue 语句作用到 switch 上的作用类似于 break。如果在循环中有一个 switch 并希望 continue 到外层循环中的下一轮循环，用 continue 2。

Note:

注意 switch/case 作的是松散比较。

下面两个例子使用两种不同方法实现同样的事，一个用一系列的 if 和 elseif 语句，另一个用 switch 语句：

Example #1 switch 结构

<?php
if ($i == 0) {
    echo "i equals 0";
} elseif ($i == 1) {
    echo "i equals 1";
} elseif ($i == 2) {
    echo "i equals 2";
}

switch ($i) {
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
}
?>

Example #2 switch 结构可以用字符串

<?php
switch ($i) {
case "apple":
    echo "i is apple";
    break;
case "bar":
    echo "i is bar";
    break;
case "cake":
    echo "i is cake";
    break;
}
?>

为避免错误，理解 switch 是怎样执行的非常重要。switch 语句一行接一行地执行（实际上是语句接语句）。开始时没有代码被执行。仅当一个 case 语句中的值和 switch 表达式的值匹配时 PHP 才开始执行语句，直到 switch 的程序段结束或者遇到第一个 break 语句为止。如果不在 case 的语句段最后写上 break 的话，PHP 将继续执行下一个 case 中的语句段。例如：

<?php
switch ($i) {
    case 0:
        echo "i equals 0";
    case 1:
        echo "i equals 1";
    case 2:
        echo "i equals 2";
}
?>

这里如果 $i 等于 0，PHP 将执行所有的 echo 语句！如果 $i 等于 1，PHP 将执行后面两条 echo 语句。只有当 $i 等于 2 时，才会得到"预期"的结果——只显示"i equals 2"。所以，别忘了 break 语句就很重要（即使在某些情况下故意想避免提供它们时）。

在 switch 语句中条件只求值一次并用来和每个 case 语句比较。在 elseif 语句中条件会再次求值。如果条件比一个简单的比较要复杂得多或者在一个很多次的循环中，那么用 switch 语句可能会快一些。

在一个 case 中的语句也可以为空，这样只不过将控制转移到了下一个 case 中的语句。

<?php
switch ($i) {
    case 0:
    case 1:
    case 2:
        echo "i is less than 3 but not negative";
        break;
    case 3:
        echo "i is 3";
}
?>

一个 case 的特例是 default。它匹配了任何和其它 case 都不匹配的情况。例如：

<?php
switch ($i) {
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
    default:
        echo "i is not equal to 0, 1 or 2";
}
?>

case 表达式可以是任何求值为简单类型的表达式，即整型或浮点数以及字符串。不能用数组或对象，除非它们被解除引用成为简单类型。

switch 支持替代语法的流程控制。更多信息见流程控制的替代语法一节。

<?php
switch ($i):
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
    default:
        echo "i is not equal to 0, 1 or 2";
endswitch;
?>

允许使用分号代替 case 语句后的冒号，例如：

<?php
switch($beer)
{
    case 'tuborg';
    case 'carlsberg';
    case 'heineken';
        echo 'Good choice';
    break;
    default;
        echo 'Please make a new selection...';
    break;
}
?>

continue
declare
流程控制


declare

(PHP 4, PHP 5, PHP 7)

declare 结构用来设定一段代码的执行指令。declare 的语法和其它流程控制结构相似：

declare (directive)
    statement

directive 部分允许设定 declare 代码段的行为。目前只认识两个指令：ticks（更多信息见下面 ticks 指令）以及 encoding（更多信息见下面 encoding 指令）。

Note: encoding 是 PHP 5.3.0 新增指令。

declare 代码段中的 statement 部分将被执行——怎样执行以及执行中有什么副作用出现取决于 directive 中设定的指令。

declare 结构也可用于全局范围，影响到其后的所有代码（但如果有 declare 结构的文件被其它文件包含，则对包含它的父文件不起作用）。

<?php
// these are the same:

// you can use this:
declare(ticks=1) {
    // entire script here
}

// or you can use this:
declare(ticks=1);
// entire script here
?>

Ticks

Tick（时钟周期）是一个在 declare 代码段中解释器每执行 N 条可计时的低级语句就会发生的事件。N 的值是在 declare 中的 directive 部分用 ticks=N 来指定的。

不是所有语句都可计时。通常条件表达式和参数表达式都不可计时。

在每个 tick 中出现的事件是由 register_tick_function() 来指定的。更多细节见下面的例子。注意每个 tick 中可以出现多个事件。

Example #1 Tick 的用法示例

<?php

declare(ticks=1);

// A function called on each tick event
function tick_handler()
{
    echo "tick_handler() called\n";
}

register_tick_function('tick_handler');

$a = 1;

if ($a > 0) {
    $a += 2;
    print($a);
}

?>

Example #2 Ticks 的用法示例

<?php

function tick_handler()
{
  echo "tick_handler() called\n";
}

$a = 1;
tick_handler();

if ($a > 0) {
    $a += 2;
    tick_handler();
    print($a);
    tick_handler();
}
tick_handler();

?>

参见 register_tick_function() 和 unregister_tick_function()。

Encoding

可以用 encoding 指令来对每段脚本指定其编码方式。

Example #3 对脚本指定编码方式

<?php
declare(encoding='ISO-8859-1');
// code here
?>

Caution

当和命名空间结合起来时 declare 的唯一合法语法是 declare(encoding='...');，其中 ... 是编码的值。而 declare(encoding='...') {} 将在与命名空间结合时产生解析错误。

在 PHP 5.3 中除非在编译时指定了 --enable-zend-multibyte，否则 declare 中的 encoding 值会被忽略。

注意除非用 phpinfo()，否则 PHP 不会显示出是否在编译时指定了 --enable-zend-multibyte。

参见 zend.script_encoding。

switch
return
流程控制


return

(PHP 4, PHP 5, PHP 7)

如果在一个函数中调用 return 语句，将立即结束此函数的执行并将它的参数作为函数的值返回。return 也会终止 eval() 语句或者脚本文件的执行。

如果在全局范围中调用，则当前脚本文件中止运行。如果当前脚本文件是被 include 的或者 require 的，则控制交回调用文件。此外，如果当前脚本是被 include 的，则 return 的值会被当作 include 调用的返回值。如果在主脚本文件中调用 return，则脚本中止运行。如果当前脚本文件是在 php.ini 中的配置选项 auto_prepend_file 或者 auto_append_file 所指定的，则此脚本文件中止运行。

更多信息见返回值。

Note: 注意既然 return 是语言结构而不是函数，因此其参数没有必要用括号将其括起来。通常都不用括号，实际上也应该不用，这样可以降低 PHP 的负担。

Note: 如果没有提供参数，则一定不能用括号，此时返回 NULL。如果调用 return 时加上了括号却又没有参数会导致解析错误。

Note: 当用引用返回值时永远不要使用括号，这样行不通。只能通过引用返回变量，而不是语句的结果。如果使用 return ($a); 时其实不是返回一个变量，而是表达式 ($a) 的值（当然，此时该值也正是 $a 的值）。

declare
require
流程控制


require

(PHP 4, PHP 5, PHP 7)

require 和 include 几乎完全一样，除了处理失败的方式不同之外。require 在出错时产生 E_COMPILE_ERROR 级别的错误。换句话说将导致脚本中止而 include 只产生警告（E_WARNING），脚本会继续运行。

参见 include 文档了解详情。

return
include
流程控制


include

(PHP 4, PHP 5, PHP 7)

include 语句包含并运行指定文件。

以下文档也适用于 require。

被包含文件先按参数给出的路径寻找，如果没有给出目录（只有文件名）时则按照 include_path 指定的目录寻找。如果在 include_path 下没找到该文件则 include 最后才在调用脚本文件所在的目录和当前工作目录下寻找。如果最后仍未找到文件则 include 结构会发出一条警告；这一点和 require 不同，后者会发出一个致命错误。

如果定义了路径——不管是绝对路径（在 Windows 下以盘符或者 \ 开头，在 Unix/Linux 下以 / 开头）还是当前目录的相对路径（以 . 或者 .. 开头）——include_path 都会被完全忽略。例如一个文件以 ../ 开头，则解析器会在当前目录的父目录下寻找该文件。

有关 PHP 怎样处理包含文件和包含路径的更多信息参见 include_path 部分的文档。

当一个文件被包含时，其中所包含的代码继承了 include 所在行的变量范围。从该处开始，调用文件在该行处可用的任何变量在被调用的文件中也都可用。不过所有在包含文件中定义的函数和类都具有全局作用域。

Example #1 基本的 include 例子

vars.php
<?php

$color = 'green';
$fruit = 'apple';

?>

test.php
<?php

echo "A $color $fruit"; // A

include 'vars.php';

echo "A $color $fruit"; // A green apple

?>

如果 include 出现于调用文件中的一个函数里，则被调用的文件中所包含的所有代码将表现得如同它们是在该函数内部定义的一样。所以它将遵循该函数的变量范围。此规则的一个例外是魔术常量，它们是在发生包含之前就已被解析器处理的。

Example #2 函数中的包含

<?php

function foo()
{
    global $color;

    include 'vars.php';

    echo "A $color $fruit";
}

/* vars.php is in the scope of foo() so     *
 * $fruit is NOT available outside of this  *
 * scope.  $color is because we declared it *
 * as global.                               */

foo();                    // A green apple
echo "A $color $fruit";   // A green

?>

当一个文件被包含时，语法解析器在目标文件的开头脱离 PHP 模式并进入 HTML 模式，到文件结尾处恢复。由于此原因，目标文件中需要作为 PHP 代码执行的任何代码都必须被包括在有效的 PHP 起始和结束标记之中。

如果"URL fopen wrappers"在 PHP 中被激活（默认配置），可以用 URL（通过 HTTP 或者其它支持的封装协议——见支持的协议和封装协议）而不是本地文件来指定要被包含的文件。如果目标服务器将目标文件作为 PHP 代码解释，则可以用适用于 HTTP GET 的 URL 请求字符串来向被包括的文件传递变量。严格的说这和包含一个文件并继承父文件的变量空间并不是一回事；该脚本文件实际上已经在远程服务器上运行了，而本地脚本则包括了其结果。

Warning

Windows 版本的 PHP 在 4.3.0 版之前不支持通过此函数访问远程文件，即使已经启用 allow_url_fopen.

Example #3 通过 HTTP 进行的 include

<?php

/* This example assumes that www.example.com is configured to parse .php *
 * files and not .txt files. Also, 'Works' here means that the variables *
 * $foo and $bar are available within the included file.                 */

// Won't work; file.txt wasn't handled by www.example.com as PHP
include 'http://www.example.com/file.txt?foo=1&bar=2';

// Won't work; looks for a file named 'file.php?foo=1&bar=2' on the
// local filesystem.
include 'file.php?foo=1&bar=2';

// Works.
include 'http://www.example.com/file.php?foo=1&bar=2';

$foo = 1;
$bar = 2;
include 'file.txt';  // Works.
include 'file.php';  // Works.

?>

Warning

安全警告

远程文件可能会经远程服务器处理（根据文件后缀以及远程服务器是否在运行 PHP 而定），但必须产生出一个合法的 PHP 脚本，因为其将被本地服务器处理。如果来自远程服务器的文件应该在远端运行而只输出结果，那用 readfile() 函数更好。另外还要格外小心以确保远程的脚本产生出合法并且是所需的代码。

相关信息参见使用远程文件，fopen() 和 file()。

处理返回值：在失败时 include 返回 FALSE 并且发出警告。成功的包含则返回 1，除非在包含文件中另外给出了返回值。可以在被包括的文件中使用 return 语句来终止该文件中程序的执行并返回调用它的脚本。同样也可以从被包含的文件中返回值。可以像普通函数一样获得 include 调用的返回值。不过这在包含远程文件时却不行，除非远程文件的输出具有合法的 PHP 开始和结束标记（如同任何本地文件一样）。可以在标记内定义所需的变量，该变量在文件被包含的位置之后就可用了。

因为 include 是一个特殊的语言结构，其参数不需要括号。在比较其返回值时要注意。

Example #4 比较 include 的返回值

<?php
// won't work, evaluated as include(('vars.php') == 'OK'), i.e. include('')
if (include('vars.php') == 'OK') {
    echo 'OK';
}

// works
if ((include 'vars.php') == 'OK') {
    echo 'OK';
}
?>

Example #5 include 和 return 语句

return.php
<?php

$var = 'PHP';

return $var;

?>

noreturn.php
<?php

$var = 'PHP';

?>

testreturns.php
<?php

$foo = include 'return.php';

echo $foo; // prints 'PHP'

$bar = include 'noreturn.php';

echo $bar; // prints 1

?>

$bar 的值为 1 是因为 include 成功运行了。注意以上例子中的区别。第一个在被包含的文件中用了 return 而另一个没有。如果文件不能被包含，则返回 FALSE 并发出一个 E_WARNING 警告。

如果在包含文件中定义有函数，这些函数不管是在 return 之前还是之后定义的，都可以独立在主文件中使用。如果文件被包含两次，PHP 5 发出致命错误因为函数已经被定义，但是 PHP 4 不会对在 return 之后定义的函数报错。推荐使用 include_once 而不是检查文件是否已包含并在包含文件中有条件返回。

另一个将 PHP 文件"包含"到一个变量中的方法是用输出控制函数结合 include 来捕获其输出，例如：

Example #6 使用输出缓冲来将 PHP 文件包含入一个字符串

<?php
$string = get_include_contents('somefile.php');

function get_include_contents($filename) {
    if (is_file($filename)) {
        ob_start();
        include $filename;
        $contents = ob_get_contents();
        ob_end_clean();
        return $contents;
    }
    return false;
}

?>

要在脚本中自动包含文件，参见 php.ini 中的 auto_prepend_file 和 auto_append_file 配置选项。

Note: 因为是一个语言构造器而不是一个函数，不能被 可变函数 调用。

参见 require，require_once，include_once，get_included_files()，readfile()，virtual() 和 include_path。

require
require_once
流程控制


require_once

(PHP 4, PHP 5, PHP 7)

require_once 语句和 require 语句完全相同，唯一区别是 PHP 会检查该文件是否已经被包含过，如果是则不会再次包含。

参见 include_once 的文档来理解 _once 的含义，并理解与没有 _once 时候有什么不同。

include
include_once
流程控制


include_once

(PHP 4, PHP 5, PHP 7)

include_once 语句在脚本执行期间包含并运行指定文件。此行为和 include 语句类似，唯一区别是如果该文件中已经被包含过，则不会再次包含。如同此语句名字暗示的那样，只会包含一次。

include_once 可以用于在脚本执行期间同一个文件有可能被包含超过一次的情况下，想确保它只被包含一次以避免函数重定义，变量重新赋值等问题。

更多信息参见 include 文档。

Note:

在 PHP 4中，_once 的行为在不区分大小写字母的操作系统（例如 Windows）中有所不同，例如：

Example #1 include_once 在 PHP 4 运行于不区分大小写的操作系统中

<?php
include_once "a.php"; // 这将包含 a.php
include_once "A.php"; // 这将再次包含 a.php！（仅 PHP 4）
?>

此行为在 PHP 5 中改了，例如在 Windows 中路径先被规格化，因此 C:\PROGRA~1\A.php 和 C:\Program Files\a.php 的实现一样，文件只会被包含一次。

require_once
goto
流程控制


goto

(PHP 5 >= 5.3.0, PHP 7)

goto 操作符可以用来跳转到程序中的另一位置。该目标位置可以用目标名称加上冒号来标记，而跳转指令是 goto 之后接上目标位置的标记。PHP 中的 goto 有一定限制，目标位置只能位于同一个文件和作用域，也就是说无法跳出一个函数或类方法，也无法跳入到另一个函数。也无法跳入到任何循环或者 switch 结构中。可以跳出循环或者 switch，通常的用法是用 goto 代替多层的 break。

Example #1 goto 示例

<?php
goto a;
echo 'Foo';

a:
echo 'Bar';
?>

以上例程会输出：

Bar

Example #2 goto 跳出循环示例

<?php
for($i=0,$j=50; $i<100; $i++) {
  while($j--) {
    if($j==17) goto end;
  }
}
echo "i = $i";
end:
echo 'j hit 17';
?>

以上例程会输出：

j hit 17

Example #3 以下写法无效

<?php
goto loop;
for($i=0,$j=50; $i<100; $i++) {
  while($j--) {
    loop:
  }
}
echo "$i = $i";
?>

以上例程会输出：

Fatal error: 'goto' into loop or switch statement is disallowed in
script on line 2

Note:

goto 操作符仅在 PHP 5.3及以上版本有效。

此漫画鸣谢 » xkcd

include_once
函数
流程控制


函数

Table of Contents

  • 用户自定义函数
  • 函数的参数
  • 返回值
  • 可变函数
  • 内部（内置）函数
  • 匿名函数
goto
用户自定义函数
语言参考


用户自定义函数

一个函数可由以下的语法来定义：

Example #1 展示函数用途的伪代码

<?php
function foo($arg_1, $arg_2, /* ..., */ $arg_n)
{
    echo "Example function.\n";
    return $retval;
}
?>

任何有效的 PHP 代码都有可能出现在函数内部，甚至包括其它函数和类定义。

函数名和 PHP 中的其它标识符命名规则相同。有效的函数名以字母或下划线打头，后面跟字母，数字或下划线。可以用正则表达式表示为：[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*。

Tip

请参见用户空间命名指南。

函数无需在调用之前被定义，除非是下面两个例子中函数是有条件被定义时。

当一个函数是有条件被定义时，必须在调用函数之前定义。

Example #2 有条件的函数

<?php

$makefoo = true;

/* 不能在此处调用foo()函数，
   因为它还不存在，但可以调用bar()函数。*/

bar();

if ($makefoo) {
  function foo()
  {
    echo "I don't exist until program execution reaches me.\n";
  }
}

/* 现在可以安全调用函数 foo()了，
   因为 $makefoo 值为真 */

if ($makefoo) foo();

function bar()
{
  echo "I exist immediately upon program start.\n";
}

?>

Example #3 函数中的函数

<?php
function foo()
{
  function bar()
  {
    echo "I don't exist until foo() is called.\n";
  }
}

/* 现在还不能调用bar()函数，因为它还不存在 */

foo();

/* 现在可以调用bar()函数了，因为foo()函数
   的执行使得bar()函数变为已定义的函数 */

bar();

?>

PHP 中的所有函数和类都具有全局作用域，可以定义在一个函数之内而在之外调用，反之亦然。

PHP 不支持函数重载，也不可能取消定义或者重定义已声明的函数。

Note: 函数名是大小写无关的，不过在调用函数的时候，使用其在定义时相同的形式是个好习惯。

PHP 的函数支持可变数量的参数和默认参数。参见 func_num_args()，func_get_arg() 和 func_get_args()。

在 PHP 中可以调用递归函数。

Example #4 递归函数

<?php
function recursion($a)
{
    if ($a < 20) {
        echo "$a\n";
        recursion($a + 1);
    }
}
?>

Note: 但是要避免递归函数／方法调用超过 100-200 层，因为可能会使堆栈崩溃从而使当前脚本终止。 无限递归可视为编程错误。

函数
函数的参数
函数


函数的参数

通过参数列表可以传递信息到函数，即以逗号作为分隔符的表达式列表。参数是从左向右求值的。

PHP 支持按值传递参数（默认），通过引用传递参数以及默认参数。也支持可变长度参数列表。

Example #1 向函数传递数组

<?php
function takes_array($input)
{
    echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
?>

通过引用传递参数

默认情况下，函数参数通过值传递（因而即使在函数内部改变参数的值，它并不会改变函数外部的值）。如果希望允许函数修改它的参数值，必须通过引用传递参数。

如果想要函数的一个参数总是通过引用传递，可以在函数定义中该参数的前面加上符号 &：

Example #2 用引用传递函数参数

<?php
function add_some_extra(&$string)
{
    $string .= 'and something extra.';
}
$str = 'This is a string, ';
add_some_extra($str);
echo $str;    // outputs 'This is a string, and something extra.'
?>

默认参数的值

函数可以定义 C++ 风格的标量参数默认值，如下所示：

Example #3 在函数中使用默认参数

<?php
function makecoffee($type = "cappuccino")
{
    return "Making a cup of $type.\n";
}
echo makecoffee();
echo makecoffee(null);
echo makecoffee("espresso");
?>

以上例程会输出：

Making a cup of cappuccino.
Making a cup of .
Making a cup of espresso.

PHP 还允许使用数组 array 和特殊类型 NULL 作为默认参数，例如：

Example #4 使用非标量类型作为默认参数

<?php
function makecoffee($types = array("cappuccino"), $coffeeMaker = NULL)
{
    $device = is_null($coffeeMaker) ? "hands" : $coffeeMaker;
    return "Making a cup of ".join(", ", $types)." with $device.\n";
}
echo makecoffee();
echo makecoffee(array("cappuccino", "lavazza"), "teapot");
?>

默认值必须是常量表达式，不能是诸如变量，类成员，或者函数调用等。

注意当使用默认参数时，任何默认参数必须放在任何非默认参数的右侧；否则，函数将不会按照预期的情况工作。考虑下面的代码片断：

Example #5 函数默认参数的不正确用法

<?php
function makeyogurt($type = "acidophilus", $flavour)
{
    return "Making a bowl of $type $flavour.\n";
}

echo makeyogurt("raspberry");   // won't work as expected
?>

以上例程会输出：

Warning: Missing argument 2 in call to makeyogurt() in
/usr/local/etc/httpd/htdocs/phptest/functest.html on line 41
Making a bowl of raspberry .

现在，比较上面的例子和这个例子：

Example #6 函数默认参数正确的用法

<?php
function makeyogurt($flavour, $type = "acidophilus")
{
    return "Making a bowl of $type $flavour.\n";
}

echo makeyogurt("raspberry");   // works as expected
?>

以上例程会输出：

Making a bowl of acidophilus raspberry.

Note: 自 PHP 5 起，传引用的参数也可以有默认值。

Type declarations

Note:

Type declarations were also known as type hints in PHP 5.

Type declarations allow functions to require that parameters are of a certain type at call time. If the given value is of the incorrect type, then an error is generated: in PHP 5, this will be a recoverable fatal error, while PHP 7 will throw a TypeError exception.

To specify a type declaration, the type name should be added before the parameter name. The declaration can be made to accept NULL values if the default value of the parameter is set to NULL.

Valid types

Type | Description | Minimum PHP version
Class/interface name | The parameter must be an instanceof the given class or interface name. | PHP 5.0.0
array | The parameter must be an array. | PHP 5.1.0
callable | The parameter must be a valid callable. | PHP 5.4.0
bool | The parameter must be a boolean value. | PHP 7.0.0
float | The parameter must be a floating point number. | PHP 7.0.0
int | The parameter must be an integer. | PHP 7.0.0
string | The parameter must be a string. | PHP 7.0.0

范例

Example #7 Basic class type declaration

<?php
class C {}
class D extends C {}

// This doesn't extend C.
class E {}

function f(C $c) {
    echo get_class($c)."\n";
}

f(new C);
f(new D);
f(new E);
?>

以上例程会输出：

C
D

Fatal error: Uncaught TypeError: Argument 1 passed to f() must be an instance of C, instance of E given, called in - on line 14 and defined in -:8
Stack trace:
#0 -(14): f(Object(E))
#1 {main}
  thrown in - on line 8

Example #8 Basic interface type declaration

<?php
interface I { public function f(); }
class C implements I { public function f() {} }

// This doesn't implement I.
class E {}

function f(I $i) {
    echo get_class($i)."\n";
}

f(new C);
f(new E);
?>

以上例程会输出：

C

Fatal error: Uncaught TypeError: Argument 1 passed to f() must implement interface I, instance of E given, called in - on line 13 and defined in -:8
Stack trace:
#0 -(13): f(Object(E))
#1 {main}
  thrown in - on line 8

Example #9 Nullable type declaration

<?php
class C {}

function f(C $c = null) {
    var_dump($c);
}

f(new C);
f(null);
?>

以上例程会输出：

object(C)#1 (0) {
}
NULL

Strict typing

By default, PHP will coerce values of the wrong type into the expected scalar type if possible. For example, a function that is given an integer for a parameter that expects a string will get a variable of type string.

It is possible to enable strict mode on a per-file basis. In strict mode, only a variable of exact type of the type declaration will be accepted, or a TypeError will be thrown. The only exception to this rule is that an integer may be given to a function expecting a float.

To enable strict mode, the declare statement is used with the strict_types declaration:

Caution

Enabling strict mode will also affect return type declarations.

Note:

Strict typing applies to function calls made from within the file with strict typing enabled, not to the functions declared within that file. If a file without strict typing enabled makes a call to a function that was defined in a file with strict typing, the caller's preference (weak typing) will be respected, and the value will be coerced.

Note:

Strict typing is only defined for scalar type declarations, and as such, requires PHP 7.0.0 or later, as scalar type declarations were added in that version.

Example #10 Strict typing

<?php
declare(strict_types=1);

function sum(int $a, int $b) {
    return $a + $b;
}

var_dump(sum(1, 2));
var_dump(sum(1.5, 2.5));
?>

以上例程会输出：

int(3)

Fatal error: Uncaught TypeError: Argument 1 passed to sum() must be of the type integer, float given, called in - on line 9 and defined in -:4
Stack trace:
#0 -(9): sum(1.5, 2.5)
#1 {main}
  thrown in - on line 4

Example #11 Weak typing

<?php
function sum(int $a, int $b) {
    return $a + $b;
}

var_dump(sum(1, 2));

// These will be coerced to integers: note the output below!
var_dump(sum(1.5, 2.5));
?>

以上例程会输出：

int(3)
int(3)

Example #12 Catching TypeError

<?php
declare(strict_types=1);

function sum(int $a, int $b) {
    return $a + $b;
}

try {
    var_dump(sum(1, 2));
    var_dump(sum(1.5, 2.5));
} catch (TypeError $e) {
    echo 'Error: '.$e->getMessage();
}
?>

以上例程会输出：

int(3)
Error: Argument 1 passed to sum() must be of the type integer, float given, called in - on line 10

可变数量的参数列表

PHP 在用户自定义函数中支持可变数量的参数列表。在 PHP 5.6 及以上的版本中，由 ... 语法实现；在 PHP 5.5 及更早版本中，使用函数 func_num_args()，func_get_arg()，和 func_get_args() 。

... in PHP 5.6+

In PHP 5.6 and later, argument lists may include the ... token to denote that the function accepts a variable number of arguments. The arguments will be passed into the given variable as an array; for example:

Example #13 Using ... to access variable arguments

<?php
function sum(...$numbers) {
    $acc = 0;
    foreach ($numbers as $n) {
        $acc += $n;
    }
    return $acc;
}

echo sum(1, 2, 3, 4);
?>

以上例程会输出：

10

You can also use ... when calling functions to unpack an array or Traversable variable or literal into the argument list:

Example #14 Using ... to provide arguments

<?php
function add($a, $b) {
    return $a + $b;
}

echo add(...[1, 2])."\n";

$a = [1, 2];
echo add(...$a);
?>

以上例程会输出：

3
3

You may specify normal positional arguments before the ... token. In this case, only the trailing arguments that don't match a positional argument will be added to the array generated by ....

It is also possible to add a type hint before the ... token. If this is present, then all arguments captured by ... must be objects of the hinted class.

Example #15 Type hinted variable arguments

<?php
function total_intervals($unit, DateInterval ...$intervals) {
    $time = 0;
    foreach ($intervals as $interval) {
        $time += $interval->$unit;
    }
    return $time;
}

$a = new DateInterval('P1D');
$b = new DateInterval('P2D');
echo total_intervals('d', $a, $b).' days';

// This will fail, since null isn't a DateInterval object.
echo total_intervals('d', null);
?>

以上例程会输出：

3 days
Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2

Finally, you may also pass variable arguments by reference by prefixing the ... with an ampersand (&).

Older versions of PHP

No special syntax is required to note that a function is variadic; however access to the function's arguments must use func_num_args(), func_get_arg() and func_get_args().

The first example above would be implemented as follows in PHP 5.5 and earlier:

Example #16 Accessing variable arguments in PHP 5.5 and earlier

<?php
function sum() {
    $acc = 0;
    foreach (func_get_args() as $n) {
        $acc += $n;
    }
    return $acc;
}

echo sum(1, 2, 3, 4);
?>

以上例程会输出：

10

用户自定义函数
返回值
函数


返回值

值通过使用可选的返回语句返回。可以返回包括数组和对象的任意类型。返回语句会立即中止函数的运行，并且将控制权交回调用该函数的代码行。更多信息见 return。

Note:

如果省略了 return，则返回值为 NULL。

return 的使用

Example #1 return 的使用

<?php
function square($num)
{
    return $num * $num;
}
echo square(4);   // outputs '16'.
?>

函数不能返回多个值，但可以通过返回一个数组来得到类似的效果。

Example #2 返回一个数组以得到多个返回值

<?php
function small_numbers()
{
    return array (0, 1, 2);
}
list ($zero, $one, $two) = small_numbers();
?>

从函数返回一个引用，必须在函数声明和指派返回值给一个变量时都使用引用运算符 &：

Example #3 从函数返回一个引用

<?php
function &returns_reference()
{
    return $someref;
}

$newref =& returns_reference();
?>

有关引用的更多信息, 请查看引用的解释。

Return type declarations

PHP 7 adds support for return type declarations. Similarly to argument type declarations, return type declarations specify the type of the value that will be returned from a function. The same types are available for return type declarations as are available for argument type declarations.

Strict typing also has an effect on return type declarations. In the default weak mode, returned values will be coerced to the correct type if they are not already of that type. In strong mode, the returned value must be of the correct type, otherwise a TypeError will be thrown.

Note:

When overriding a parent method, the child's method must match any return type declaration on the parent. If the parent doesn't define a return type, then the child method may do so.

范例

Example #4 Basic return type declaration

<?php
function sum($a, $b): float {
    return $a + $b;
}

// Note that a float will be returned.
var_dump(sum(1, 2));
?>

以上例程会输出：

float(3)

Example #5 Strict mode in action

<?php
declare(strict_types=1);

function sum($a, $b): int {
    return $a + $b;
}

var_dump(sum(1, 2));
var_dump(sum(1, 2.5));
?>

以上例程会输出：

int(3)

Fatal error: Uncaught TypeError: Return value of sum() must be of the type integer, float returned in - on line 5 in -:5
Stack trace:
#0 -(9): sum(1, 2.5)
#1 {main}
  thrown in - on line 5

Example #6 Returning an object

<?php
class C {}

function getC(): C {
    return new C;
}

var_dump(getC());
?>

以上例程会输出：

object(C)#1 (0) {
}
函数的参数
可变函数
函数


可变函数

PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号，PHP 将寻找与变量的值同名的函数，并且尝试执行它。可变函数可以用来实现包括回调函数，函数表在内的一些用途。

可变函数不能用于例如 echo，print，unset()，isset()，empty()，include，require 以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数。

Example #1 可变函数示例

<?php
function foo() {
    echo "In foo()<br />\n";
}

function bar($arg = '') {
    echo "In bar(); argument was '$arg'.<br />\n";
}

// 使用 echo 的包装函数
function echoit($string)
{
    echo $string;
}

$func = 'foo';
$func();        // This calls foo()

$func = 'bar';
$func('test');  // This calls bar()

$func = 'echoit';
$func('test');  // This calls echoit()
?>

也可以用可变函数的语法来调用一个对象的方法。

Example #2 可变方法范例

<?php
class Foo
{
    function Variable()
    {
        $name = 'Bar';
        $this->$name(); // This calls the Bar() method
    }

    function Bar()
    {
        echo "This is Bar";
    }
}

$foo = new Foo();
$funcname = "Variable";
$foo->$funcname();   // This calls $foo->Variable()

?>

当调用静态方法时，函数调用要比静态属性优先：

Example #3 Variable 方法和静态属性示例

<?php
class Foo
{
    static $variable = 'static property';
    static function Variable()
    {
        echo 'Method Variable called';
    }
}

echo Foo::$variable; // This prints 'static property'. It does need a $variable in this scope.
$variable = "Variable";
Foo::$variable();  // This calls $foo->Variable() reading $variable in this scope.

?>

参见 is_callable()，call_user_func()，可变变量和 function_exists()。

返回值
内部（内置）函数
函数


内部（内置）函数

PHP 有很多标准的函数和结构。还有一些函数需要和特定地 PHP 扩展模块一起编译，否则在使用它们的时候就会得到一个致命的"未定义函数"错误。例如，要使用 image 函数中的 imagecreatetruecolor()，需要在编译 PHP 的时候加上 GD 的支持。或者，要使用 mysql_connect() 函数，就需要在编译 PHP 的时候加上 MySQL 支持。有很多核心函数已包含在每个版本的 PHP 中如字符串和变量函数。调用 phpinfo() 或者 get_loaded_extensions() 可以得知 PHP 加载了那些扩展库。同时还应该注意，很多扩展库默认就是有效的。PHP 手册按照不同的扩展库组织了它们的文档。请参阅配置，安装以及各自的扩展库章节以获取有关如何设置 PHP 的信息。

手册中如何阅读函数原型讲解了如何阅读和理解一个函数的原型。确认一个函数将返回什么，或者函数是否直接作用于传递的参数是很重要的。例如，str_replace() 函数将返回修改过的字符串，而 usort() 却直接作用于传递的参数变量本身。手册中，每一个函数的页面中都有关于函数参数、行为改变、成功与否的返回值以及使用条件等信息。了解这些重要的（常常是细微的）差别是编写正确的 PHP 代码的关键。

Note: 如果传递给函数的参数类型与实际的类型不一致，例如将一个 array 传递给一个 string 类型的变量，那么函数的返回值是不确定的。在这种情况下，通常函数会返回 NULL。但这仅仅是一个惯例，并不一定如此。

参见 function_exists()，函数参考，get_extension_funcs() 和 dl()。

可变函数
匿名函数
函数


匿名函数

匿名函数（Anonymous functions），也叫闭包函数（closures），允许 临时创建一个没有指定名称的函数。最经常用作回调函数（callback）参数的值。当然，也有其它应用的情况。

Example #1 匿名函数示例

<?php
echo preg_replace_callback('~-([a-z])~', function ($match) {
    return strtoupper($match[1]);
}, 'hello-world');
// 输出 helloWorld
?>

闭包函数也可以作为变量的值来使用。PHP 会自动把此种表达式转换成内置类 Closure 的对象实例。把一个 closure 对象赋值给一个变量的方式与普通变量赋值的语法是一样的，最后也要加上分号：

Example #2 匿名函数变量赋值示例

<?php
$greet = function($name)
{
    printf("Hello %s\r\n", $name);
};

$greet('World');
$greet('PHP');
?>

闭包可以从父作用域中继承变量。 任何此类变量都应该用 use 语言结构传递进去。

Example #3 从父作用域继承变量

<?php
$message = 'hello';

// 没有 "use"
$example = function () {
    var_dump($message);
};
echo $example();

// 继承 $message
$example = function () use ($message) {
    var_dump($message);
};
echo $example();

// Inherited variable's value is from when the function
// is defined, not when called
$message = 'world';
echo $example();

// Reset message
$message = 'hello';

// Inherit by-reference
$example = function () use (&$message) {
    var_dump($message);
};
echo $example();

// The changed value in the parent scope
// is reflected inside the function call
$message = 'world';
echo $example();

// Closures can also accept regular arguments
$example = function ($arg) use ($message) {
    var_dump($arg . ' ' . $message);
};
$example("hello");
?>

以上例程的输出类似于：

Notice: Undefined variable: message in /example.php on line 6
NULL
string(5) "hello"
string(5) "hello"
string(5) "hello"
string(5) "world"
string(11) "hello world"

这些变量都必须在函数或类的头部声明。 从父作用域中继承变量与使用全局变量是不同的。全局变量存在于一个全局的范围，无论当前在执行的是哪个函数。而 闭包的父作用域是定义该闭包的函数（不一定是调用它的函数）。示例如下：

Example #4 Closures 和作用域

<?php
// 一个基本的购物车，包括一些已经添加的商品和每种商品的数量。
// 其中有一个方法用来计算购物车中所有商品的总价格，该方法使
// 用了一个 closure 作为回调函数。
class Cart
{
    const PRICE_BUTTER  = 1.00;
    const PRICE_MILK    = 3.00;
    const PRICE_EGGS    = 6.95;

    protected   $products = array();

    public function add($product, $quantity)
    {
        $this->products[$product] = $quantity;
    }

    public function getQuantity($product)
    {
        return isset($this->products[$product]) ? $this->products[$product] :
               FALSE;
    }

    public function getTotal($tax)
    {
        $total = 0.00;

        $callback =
            function ($quantity, $product) use ($tax, &$total)
            {
                $pricePerItem = constant(__CLASS__ . "::PRICE_" .
                    strtoupper($product));
                $total += ($pricePerItem * $quantity) * ($tax + 1.0);
            };

        array_walk($this->products, $callback);
        return round($total, 2);;
    }
}

$my_cart = new Cart;

// 往购物车里添加条目
$my_cart->add('butter', 1);
$my_cart->add('milk', 3);
$my_cart->add('eggs', 6);

// 打出出总价格，其中有 5% 的销售税.
print $my_cart->getTotal(0.05) . "\n";
// 最后结果是 54.29
?>

匿名函数目前是通过 Closure 类来实现的。

更新日志

版本 | 说明
5.4.0 | $this 可用于匿名函数。
5.3.0 | 可以使用匿名函数。

注释

Note: 可以在闭包中使用 func_num_args()，func_get_arg() 和 func_get_args()。

内部（内置）函数
类与对象
函数


类与对象

Table of Contents

  • 简介
  • 基本概念
  • 属性
  • 类常量
  • 自动加载类
  • 构造函数和析构函数
  • 访问控制（可见性）
  • 对象继承
  • 范围解析操作符 （::）
  • Static（静态）关键字
  • 抽象类
  • 对象接口
  • Trait
  • 匿名类
  • 重载
  • 遍历对象
  • 魔术方法
  • Final 关键字
  • 对象复制
  • 对象比较
  • 类型约束
  • 后期静态绑定
  • 对象和引用
  • 对象序列化
  • OOP 变更日志
匿名函数
简介
语言参考


简介

自 PHP 5 起完全重写了对象模型以得到更佳性能和更多特性。这是自 PHP 4 以来的最大变化。PHP 5 具有完整的对象模型。

PHP 5 中的新特性包括访问控制，抽象类和 final 类与方法，附加的魔术方法，接口，对象复制和类型约束。

PHP 对待对象的方式与引用和句柄相同，即每个变量都持有对象的引用，而不是整个对象的拷贝。参见对象和引用。

Tip

请参见用户空间命名指南。

类与对象
基本概念
类与对象


基本概念

class

每个类的定义都以关键字 class 开头，后面跟着类名，后面跟着一对花括号，里面包含有类的属性与方法的定义。

类名可以是任何非 PHP 保留字的合法标签。一个合法类名以字母或下划线开头，后面跟着若干字母，数字或下划线。以正则表达式表示为：[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*。

一个类可以包含有属于自己的常量，变量（称为"属性"）以及函数（称为"方法"）。

Example #1 简单的类定义

<?php
class SimpleClass
{
    // property declaration
    public $var = 'a default value';

    // method declaration
    public function displayVar() {
        echo $this->var;
    }
}
?>

当一个方法在类定义内部被调用时，有一个可用的伪变量 $this。$this 是一个到主叫对象的引用（通常是该方法所从属的对象，但如果是从第二个对象静态调用时也可能是另一个对象）。

Example #2 $this 伪变量的示例

<?php
class A
{
    function foo()
    {
        if (isset($this)) {
            echo '$this is defined (';
            echo get_class($this);
            echo ")\n";
        } else {
            echo "\$this is not defined.\n";
        }
    }
}

class B
{
    function bar()
    {
        // Note: the next line will issue a warning if E_STRICT is enabled.
        A::foo();
    }
}

$a = new A();
$a->foo();

// Note: the next line will issue a warning if E_STRICT is enabled.
A::foo();
$b = new B();
$b->bar();

// Note: the next line will issue a warning if E_STRICT is enabled.
B::bar();
?>

以上例程会输出：

$this is defined (A)
$this is not defined.
$this is defined (B)
$this is not defined.

new

要创建一个类的实例，必须使用 new 关键字。当创建新对象时该对象总是被赋值，除非该对象定义了构造函数并且在出错时抛出了一个异常。类应在被实例化之前定义（某些情况下则必须这样）。

如果在 new 之后跟着的是一个包含有类名的字符串，则该类的一个实例被创建。如果该类属于一个名字空间，则必须使用其完整名称。

Example #3 创建一个实例

<?php
$instance = new SimpleClass();

// 也可以这样做：
$className = 'Foo';
$instance = new $className(); // Foo()
?>

在类定义内部，可以用 new self 和 new parent 创建新对象。

当把一个对象已经创建的实例赋给一个新变量时，新变量会访问同一个实例，就和用该对象赋值一样。此行为和给函数传递入实例时一样。可以用克隆给一个已创建的对象建立一个新实例。

Example #4 对象赋值

<?php

$instance = new SimpleClass();

$assigned   =  $instance;
$reference  =& $instance;

$instance->var = '$assigned will have this value';

$instance = null; // $instance and $reference become null

var_dump($instance);
var_dump($reference);
var_dump($assigned);
?>

以上例程会输出：

NULL
NULL
object(SimpleClass)#1 (1) {
   ["var"]=>
     string(30) "$assigned will have this value"
}

PHP 5.3.0 引进了两个新方法来创建一个对象的实例：

Example #5 创建新对象

<?php
class Test
{
    static public function getNew()
    {
        return new static;
    }
}

class Child extends Test
{}

$obj1 = new Test();
$obj2 = new $obj1;
var_dump($obj1 !== $obj2);

$obj3 = Test::getNew();
var_dump($obj3 instanceof Test);

$obj4 = Child::getNew();
var_dump($obj4 instanceof Child);
?>

以上例程会输出：

bool(true)
bool(true)
bool(true)

extends

一个类可以在声明中用 extends 关键字继承另一个类的方法和属性。PHP不支持多重继承，一个类只能继承一个基类。

被继承的方法和属性可以通过用同样的名字重新声明被覆盖。但是如果父类定义方法时使用了 final，则该方法不可被覆盖。可以通过 parent:: 来访问被覆盖的方法或属性。

当覆盖方法时，参数必须保持一致否则 PHP 将发出 E_STRICT 级别的错误信息。但构造函数例外，构造函数可在被覆盖时使用不同的参数。

Example #6 简单的类继承

<?php
class ExtendClass extends SimpleClass
{
    // Redefine the parent method
    function displayVar()
    {
        echo "Extending class\n";
        parent::displayVar();
    }
}

$extended = new ExtendClass();
$extended->displayVar();
?>

以上例程会输出：

Extending class
a default value

::class

自 PHP 5.5 起，关键词 class 也可用于类名的解析。使用 ClassName::class 你可以获取一个字符串，包含了类 ClassName 的完全限定名称。这对使用了 命名空间 的类尤其有用。

Example #7 类名的解析

<?php
namespace NS {
    class ClassName {
    }

    echo ClassName::class;
}
?>

以上例程会输出：

NS\ClassName

简介
属性
类与对象


属性

类的变量成员叫做"属性"，或者叫"字段"、"特征"，在本文档统一称为"属性"。属性声明是由关键字 public，protected 或者 private 开头，然后跟一个普通的变量声明来组成。属性中的变量可以初始化，但是初始化的值必须是常数，这里的常数是指 PHP 脚本在编译阶段时就可以得到其值，而不依赖于运行时的信息才能求值。

有关 public，protected 和 private 的更多详细信息，请查看访问控制（可见性）。

Note:

为了向后兼容 PHP 4，PHP 5 声明属性依然可以直接使用关键字 var 来替代（或者附加于）public，protected 或 private。但是已不再需要 var 了。在 PHP 5.0 到 5.1.3，var 会被认为是废弃的，而且抛出 E_STRICT 警告，但是 5.1.3 之后就不再认为是废弃，也不会抛出警告。

如果直接使用 var 声明属性，而没有用 public，protected 或 private 之一，PHP 5 会将其视为 public。

在类的成员方法里面，可以用 ->（对象运算符）：$this->property（其中 property 是该属性名）这种方式来访问非静态属性。静态属性则是用 ::（双冒号）：self::$property 来访问。更多静态属性与非静态属性的区别参见 Static 关键字。

当一个方法在类定义内部被调用时，有一个可用的伪变量 $this。$this 是一个到主叫对象的引用（通常是该方法所从属的对象，但如果是从第二个对象静态调用时也可能是另一个对象）。

Example #1 属性声明

<?php
class SimpleClass
{
   // 错误的属性声明
   public $var1 = 'hello ' . 'world';
   public $var2 = <<<EOD
hello world
EOD;
   public $var3 = 1+2;
   public $var4 = self::myStaticMethod();
   public $var5 = $myVar;

   // 正确的属性声明
   public $var6 = myConstant;
   public $var7 = array(true, false);

   //在 PHP 5.3.0 及之后，下面的声明也正确
   public $var8 = <<<'EOD'
hello world
EOD;
}
?>

Note:

更多关于类／对象的处理函数，请查看类／对象函数。

跟 heredocs 不同，nowdocs 可在任何静态数据上下文中使用，包括属性声明。

Example #2 示例：使用 nowdoc 初始化属性

<?php
class foo {
   // 自 5.3.0 起
   public $bar = <<<'EOT'
bar
EOT;
}
?>

Note:

Nowdoc 支持是在 PHP 5.3.0 新增的。

基本概念
类常量
类与对象


类常量

可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用 $ 符号。

常量的值必须是一个定值，不能是变量，类属性，数学运算的结果或函数调用。

接口（interface）中也可以定义常量。更多示例见文档中的接口部分。

自 PHP 5.3.0 起，可以用一个变量来动态调用类。但该变量的值不能为关键字（如 self，parent 或 static）。

Example #1 定义和使用一个类常量

<?php
class MyClass
{
    const constant = 'constant value';

    function showConstant() {
        echo  self::constant . "\n";
    }
}

echo MyClass::constant . "\n";

$classname = "MyClass";
echo $classname::constant . "\n"; // 自 5.3.0 起

$class = new MyClass();
$class->showConstant();

echo $class::constant."\n"; // 自 PHP 5.3.0 起
?>

Example #2 静态数据示例

<?php
class foo {
    // 自 PHP 5.3.0 起
    const bar = <<<'EOT'
bar
EOT;
}
?>

和 heredoc 不同，nowdoc 可以用在任何静态数据中。

Note:

Nowdoc 支持是在 PHP 5.3.0 新增的。

属性
自动加载类
类与对象


自动加载类

很多开发者写面向对象的应用程序时对每个类的定义建立一个 PHP 源文件。一个很大的烦恼是不得不在每个脚本开头写一个长长的包含文件列表（每个类一个文件）。

在 PHP 5 中，不再需要这样了。可以定义一个 __autoload() 函数，它会在试图使用尚未被定义的类时自动调用。通过调用此函数，脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类。

Tip

spl_autoload_register() 提供了一种更加灵活的方式来实现类的自动加载。因此，不再建议使用 __autoload() 函数，在以后的版本中它可能被弃用。

Note:

在 5.3.0 版之前，__autoload 函数抛出的异常不能被 catch 语句块捕获并会导致一个致命错误。从 5.3.0+ 之后，__autoload 函数抛出的异常可以被 catch 语句块捕获，但需要遵循一个条件。如果抛出的是一个自定义异常，那么必须存在相应的自定义异常类。__autoload 函数可以递归的自动加载自定义异常类。

Note:

自动加载不可用于 PHP 的 CLI 交互模式。

Note:

如果类名比如被用于 call_user_func()，则它可能包含一些危险的字符，比如 ../。 建议您在这样的函数中不要使用用户的输入，起码需要在 __autoload() 时验证下输入。

Example #1 自动加载示例

本例尝试分别从 MyClass1.php 和 MyClass2.php 文件中加载 MyClass1 和 MyClass2 类。

<?php
function __autoload($class_name) {
    require_once $class_name . '.php';
}

$obj  = new MyClass1();
$obj2 = new MyClass2();
?>

Example #2 另一个例子

本例尝试加载接口 ITest。

<?php

function __autoload($name) {
    var_dump($name);
}

class Foo implements ITest {
}

/*
string(5) "ITest"

Fatal error: Interface 'ITest' not found in ...
*/
?>

Example #3 自动加载在 PHP 5.3.0+ 中的异常处理

本例抛出一个异常并在 try/catch 语句块中演示。

<?php
function __autoload($name) {
    echo "Want to load $name.\n";
    throw new Exception("Unable to load $name.");
}

try {
    $obj = new NonLoadableClass();
} catch (Exception $e) {
    echo $e->getMessage(), "\n";
}
?>

以上例程会输出：

Want to load NonLoadableClass.
Unable to load NonLoadableClass.

Example #4 自动加载在 PHP 5.3.0+ 中的异常处理 - 没有自定义异常机制

本例将一个异常抛给不存在的自定义异常处理函数。

<?php
function __autoload($name) {
    echo "Want to load $name.\n";
    throw new MissingException("Unable to load $name.");
}

try {
    $obj = new NonLoadableClass();
} catch (Exception $e) {
    echo $e->getMessage(), "\n";
}
?>

以上例程会输出：

Want to load NonLoadableClass.
Want to load MissingException.

Fatal error: Class 'MissingException' not found in testMissingException.php on line 4

参见

  • unserialize()
  • unserialize_callback_func
  • spl_autoload()
  • spl_autoload_register()

类常量
构造函数和析构函数
类与对象


构造函数和析构函数

构造函数

void __construct ([ mixed $args [, $... ]] )

PHP 5 允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建新对象时先调用此方法，所以非常适合在使用对象之前做一些初始化工作。

Note: 如果子类中定义了构造函数则不会隐式调用其父类的构造函数。要执行父类的构造函数，需要在子类的构造函数中调用 parent::__construct()。如果子类没有定义构造函数则会如同一个普通的类方法一样从父类继承（假如没有被定义为 private 的话）。

Example #1 使用新标准的构造函数

<?php
class BaseClass {
   function __construct() {
       print "In BaseClass constructor\n";
   }
}

class SubClass extends BaseClass {
   function __construct() {
       parent::__construct();
       print "In SubClass constructor\n";
   }
}

class OtherSubClass extends BaseClass {
    // inherits BaseClass's constructor
}

// In BaseClass constructor
$obj = new BaseClass();

// In BaseClass constructor
// In SubClass constructor
$obj = new SubClass();

// In BaseClass constructor
$obj = new OtherSubClass();
?>

为了实现向后兼容性，如果 PHP 5 在类中找不到 __construct() 函数并且也没有从父类继承一个的话，它就会尝试寻找旧式的构造函数，也就是和类同名的函数。因此唯一会产生兼容性问题的情况是：类中已有一个名为 __construct() 的方法却被用于其它用途时。

与其它方法不同，当 __construct() 被与父类 __construct() 具有不同参数的方法覆盖时，PHP 不会产生一个 E_STRICT 错误信息。

自 PHP 5.3.3 起，在命名空间中，与类名同名的方法不再作为构造函数。这一改变不影响不在命名空间中的类。

Example #2 Constructors in namespaced classes

<?php
namespace Foo;
class Bar {
    public function Bar() {
        // treated as constructor in PHP 5.3.0-5.3.2
        // treated as regular method as of PHP 5.3.3
    }
}
?>

析构函数

void __destruct ( void )

PHP 5 引入了析构函数的概念，这类似于其它面向对象的语言，如 C++。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。

Example #3 析构函数示例

<?php
class MyDestructableClass {
   function __construct() {
       print "In constructor\n";
       $this->name = "MyDestructableClass";
   }

   function __destruct() {
       print "Destroying " . $this->name . "\n";
   }
}

$obj = new MyDestructableClass();
?>

和构造函数一样，父类的析构函数不会被引擎暗中调用。要执行父类的析构函数，必须在子类的析构函数体中显式调用 parent::__destruct()。此外也和构造函数一样，子类如果自己没有定义析构函数则会继承父类的。

析构函数即使在使用 exit() 终止脚本运行时也会被调用。在析构函数中调用 exit() 将会中止其余关闭操作的运行。

Note:

析构函数在脚本关闭时调用，此时所有的 HTTP 头信息已经发出。脚本关闭时的工作目录有可能和在 SAPI（如 apache）中时不同。

Note:

试图在析构函数（在脚本终止时被调用）中抛出一个异常会导致致命错误。

自动加载类
访问控制（可见性）
类与对象


访问控制（可见性）

对属性或方法的访问控制，是通过在前面添加关键字 public（公有），protected（受保护）或 private（私有）来实现的。被定义为公有的类成员可以在任何地方被访问。被定义为受保护的类成员则可以被其自身以及其子类和父类访问。被定义为私有的类成员则只能被其定义所在的类访问。

属性的访问控制

类属性必须定义为公有，受保护，私有之一。如果用 var 定义，则被视为公有。

Example #1 属性声明

<?php
/**
 * Define MyClass
 */
class MyClass
{
    public $public = 'Public';
    protected $protected = 'Protected';
    private $private = 'Private';

    function printHello()
    {
        echo $this->public;
        echo $this->protected;
        echo $this->private;
    }
}

$obj = new MyClass();
echo $obj->public; // 这行能被正常执行
echo $obj->protected; // 这行会产生一个致命错误
echo $obj->private; // 这行也会产生一个致命错误
$obj->printHello(); // 输出 Public、Protected 和 Private

/**
 * Define MyClass2
 */
class MyClass2 extends MyClass
{
    // 可以对 public 和 protected 进行重定义，但 private 而不能
    protected $protected = 'Protected2';

    function printHello()
    {
        echo $this->public;
        echo $this->protected;
        echo $this->private;
    }
}

$obj2 = new MyClass2();
echo $obj2->public; // 这行能被正常执行
echo $obj2->private; // 未定义 private
echo $obj2->protected; // 这行会产生一个致命错误
$obj2->printHello(); // 输出 Public、Protected2 和 Undefined

?>

Note: 为了兼容性考虑，在 PHP 4 中使用 var 关键字对变量进行定义的方法在 PHP 5 中仍然有效（只是作为 public 关键字的一个别名）。在 PHP 5.1.3 之前的版本，该语法会产生一个 E_STRICT 警告。

方法的访问控制

类中的方法可以被定义为公有，私有或受保护。如果没有设置这些关键字，则该方法默认为公有。

Example #2 方法声明

<?php
/**
 * Define MyClass
 */
class MyClass
{
    // 声明一个公有的构造函数
    public function __construct() { }

    // 声明一个公有的方法
    public function MyPublic() { }

    // 声明一个受保护的方法
    protected function MyProtected() { }

    // 声明一个私有的方法
    private function MyPrivate() { }

    // 此方法为公有
    function Foo()
    {
        $this->MyPublic();
        $this->MyProtected();
        $this->MyPrivate();
    }
}

$myclass = new MyClass;
$myclass->MyPublic(); // 这行能被正常执行
$myclass->MyProtected(); // 这行会产生一个致命错误
$myclass->MyPrivate(); // 这行会产生一个致命错误
$myclass->Foo(); // 公有，受保护，私有都可以执行

/**
 * Define MyClass2
 */
class MyClass2 extends MyClass
{
    // 此方法为公有
    function Foo2()
    {
        $this->MyPublic();
        $this->MyProtected();
        $this->MyPrivate(); // 这行会产生一个致命错误
    }
}

$myclass2 = new MyClass2;
$myclass2->MyPublic(); // 这行能被正常执行
$myclass2->Foo2(); // 公有的和受保护的都可执行，但私有的不行

class Bar
{
    public function test() {
        $this->testPrivate();
        $this->testPublic();
    }

    public function testPublic() {
        echo "Bar::testPublic\n";
    }

    private function testPrivate() {
        echo "Bar::testPrivate\n";
    }
}

class Foo extends Bar
{
    public function testPublic() {
        echo "Foo::testPublic\n";
    }

    private function testPrivate() {
        echo "Foo::testPrivate\n";
    }
}

$myFoo = new foo();
$myFoo->test(); // Bar::testPrivate
                // Foo::testPublic
?>

其它对象的访问控制

同一个类的对象即使不是同一个实例也可以互相访问对方的私有与受保护成员。这是由于在这些对象的内部具体实现的细节都是已知的。

Example #3 访问同一个对象类型的私有成员

<?php
class Test
{
    private $foo;

    public function __construct($foo)
    {
        $this->foo = $foo;
    }

    private function bar()
    {
        echo 'Accessed the private method.';
    }

    public function baz(Test $other)
    {
        // We can change the private property:
        $other->foo = 'hello';
        var_dump($other->foo);

        // We can also call the private method:
        $other->bar();
    }
}

$test = new Test('test');

$test->baz(new Test('other'));
?>

以上例程会输出：

string(5) "hello"
Accessed the private method.
构造函数和析构函数
对象继承
类与对象


对象继承

继承已为大家所熟知的一个程序设计特性，PHP 的对象模型也使用了继承。继承将会影响到类与类，对象与对象之间的关系。

比如，当扩展一个类，子类就会继承父类所有公有的和受保护的方法。除非子类覆盖了父类的方法，被继承的方法都会保留其原有功能。

继承对于功能的设计和抽象是非常有用的，而且对于类似的对象增加新功能就无须重新再写这些公用的功能。

Note:

除非使用了自动加载，否则一个类必须在使用之前被定义。如果一个类扩展了另一个，则父类必须在子类之前被声明。此规则适用于类继承其它类与接口。

Example #1 继承示例

<?php

class foo
{
    public function printItem($string)
    {
        echo 'Foo: ' . $string . PHP_EOL;
    }

    public function printPHP()
    {
        echo 'PHP is great.' . PHP_EOL;
    }
}

class bar extends foo
{
    public function printItem($string)
    {
        echo 'Bar: ' . $string . PHP_EOL;
    }
}

$foo = new foo();
$bar = new bar();
$foo->printItem('baz'); // Output: 'Foo: baz'
$foo->printPHP();       // Output: 'PHP is great'
$bar->printItem('baz'); // Output: 'Bar: baz'
$bar->printPHP();       // Output: 'PHP is great'

?>
访问控制（可见性）
范围解析操作符 （::）
类与对象


范围解析操作符 （::）

范围解析操作符（也可称作 Paamayim Nekudotayim）或者更简单地说是一对冒号，可以用于访问静态成员，类常量，还可以用于覆盖类中的属性和方法。

当在类定义之外引用到这些项目时，要使用类名。

自 PHP 5.3.0 起，可以通过变量来引用类，该变量的值不能是关键字（如 self，parent 和 static）。

把 Paamayim Nekudotayim 选作双冒号操作符的名字似乎有些奇怪。然而，这是 Zend 开发小组在写 Zend Engine 0.5（被用于 PHP 3 中）时所作出的决定。事实上这个词在希伯莱文就是双冒号的意思。

Example #1 在类的外部使用 :: 操作符

<?php
class MyClass {
    const CONST_VALUE = 'A constant value';
}

$classname = 'MyClass';
echo $classname::CONST_VALUE; // 自 PHP 5.3.0 起

echo MyClass::CONST_VALUE;
?>

self，parent 和 static 这三个特殊的关键字是用于在类定义的内部对其属性或方法进行访问的。

Example #2 在类定义内部使用 ::

<?php
class OtherClass extends MyClass
{
    public static $my_static = 'static var';

    public static function doubleColon() {
        echo parent::CONST_VALUE . "\n";
        echo self::$my_static . "\n";
    }
}

$classname = 'OtherClass';
echo $classname::doubleColon(); // 自 PHP 5.3.0 起

OtherClass::doubleColon();
?>

当一个子类覆盖其父类中的方法时，PHP 不会调用父类中已被覆盖的方法。是否调用父类的方法取决于子类。这种机制也作用于构造函数和析构函数，重载以及魔术方法。

Example #3 调用父类的方法

<?php
class MyClass
{
    protected function myFunc() {
        echo "MyClass::myFunc()\n";
    }
}

class OtherClass extends MyClass
{
    // 覆盖了父类的定义
    public function myFunc()
    {
        // 但还是可以调用父类中被覆盖的方法
        parent::myFunc();
        echo "OtherClass::myFunc()\n";
    }
}

$class = new OtherClass();
$class->myFunc();
?>

参见 伪变量的示例。

对象继承
Static（静态）关键字
类与对象


Static（静态）关键字

Tip

本页说明了用 static 关键字来定义静态方法和属性。static 也可用于定义静态变量以及后期静态绑定。参见上述页面了解 static 在其中的用法。

声明类属性或方法为静态，就可以不实例化类而直接访问。静态属性不能通过一个类已实例化的对象来访问（但静态方法可以）。

为了兼容 PHP 4，如果没有指定访问控制，属性和方法默认为公有。

由于静态方法不需要通过对象即可调用，所以伪变量 $this 在静态方法中不可用。

静态属性不可以由对象通过 -> 操作符来访问。

用静态方式调用一个非静态方法会导致一个 E_STRICT 级别的错误。

就像其它所有的 PHP 静态变量一样，静态属性只能被初始化为文字或常量，不能使用表达式。所以可以把静态属性初始化为整数或数组，但不能初始化为另一个变量或函数返回值，也不能指向一个对象。

自 PHP 5.3.0 起，可以用一个变量来动态调用类。但该变量的值不能为关键字 self，parent 或 static。

Example #1 静态属性示例

<?php
class Foo
{
    public static $my_static = 'foo';

    public function staticValue() {
        return self::$my_static;
    }
}

class Bar extends Foo
{
    public function fooStatic() {
        return parent::$my_static;
    }
}

print Foo::$my_static . "\n";

$foo = new Foo();
print $foo->staticValue() . "\n";
print $foo->my_static . "\n";      // Undefined "Property" my_static

print $foo::$my_static . "\n";
$classname = 'Foo';
print $classname::$my_static . "\n"; // As of PHP 5.3.0

print Bar::$my_static . "\n";
$bar = new Bar();
print $bar->fooStatic() . "\n";
?>
   </programlisting>
  </example>

  <example>
   <title>静态方法示例</title>
    <programlisting role="php">
<![CDATA[
<?php
class Foo {
    public static function aStaticMethod() {
        // ...
    }
}

Foo::aStaticMethod();
$classname = 'Foo';
$classname::aStaticMethod(); // 自 PHP 5.3.0 起
?>
范围解析操作符 （::）
抽象类
类与对象


抽象类

PHP 5 支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类，如果它里面至少有一个方法是被声明为抽象的，那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式（参数），不能定义其具体的功能实现。

继承一个抽象类的时候，子类必须定义父类中的所有抽象方法；另外，这些方法的访问控制必须和父类中一样（或者更为宽松）。例如某个抽象方法被声明为受保护的，那么子类中实现的方法就应该声明为受保护的或者公有的，而不能定义为私有的。此外方法的调用方式必须匹配，即类型和所需参数数量必须一致。例如，子类定义了一个可选参数，而父类抽象方法的声明里没有，则两者的声明并无冲突。 这也适用于 PHP 5.4 起的构造函数。在 PHP 5.4 之前的构造函数声明可以不一样的。

Example #1 抽象类示例

<?php
abstract class AbstractClass
{
 // 强制要求子类定义这些方法
    abstract protected function getValue();
    abstract protected function prefixValue($prefix);

    // 普通方法（非抽象方法）
    public function printOut() {
        print $this->getValue() . "\n";
    }
}

class ConcreteClass1 extends AbstractClass
{
    protected function getValue() {
        return "ConcreteClass1";
    }

    public function prefixValue($prefix) {
        return "{$prefix}ConcreteClass1";
    }
}

class ConcreteClass2 extends AbstractClass
{
    public function getValue() {
        return "ConcreteClass2";
    }

    public function prefixValue($prefix) {
        return "{$prefix}ConcreteClass2";
    }
}

$class1 = new ConcreteClass1;
$class1->printOut();
echo $class1->prefixValue('FOO_') ."\n";

$class2 = new ConcreteClass2;
$class2->printOut();
echo $class2->prefixValue('FOO_') ."\n";
?>

以上例程会输出：

ConcreteClass1
FOO_ConcreteClass1
ConcreteClass2
FOO_ConcreteClass2

Example #2 抽象类示例

<?php
abstract class AbstractClass
{
    // 我们的抽象方法仅需要定义需要的参数
    abstract protected function prefixName($name);

}

class ConcreteClass extends AbstractClass
{

    // 我们的子类可以定义父类签名中不存在的可选参数
    public function prefixName($name, $separator = ".") {
        if ($name == "Pacman") {
            $prefix = "Mr";
        } elseif ($name == "Pacwoman") {
            $prefix = "Mrs";
        } else {
            $prefix = "";
        }
        return "{$prefix}{$separator} {$name}";
    }
}

$class = new ConcreteClass;
echo $class->prefixName("Pacman"), "\n";
echo $class->prefixName("Pacwoman"), "\n";
?>

以上例程会输出：

Mr. Pacman
Mrs. Pacwoman

老代码中如果没有自定义类或函数被命名为"abstract"，则应该能不加修改地正常运行。

Static（静态）关键字
对象接口
类与对象


对象接口

使用接口（interface），可以指定某个类必须实现哪些方法，但不需要定义这些方法的具体内容。

接口是通过 interface 关键字来定义的，就像定义一个标准的类一样，但其中定义所有的方法都是空的。

接口中定义的所有方法都必须是公有，这是接口的特性。

实现（implements）

要实现一个接口，使用 implements 操作符。类中必须实现接口中定义的所有方法，否则会报一个致命错误。类可以实现多个接口，用逗号来分隔多个接口的名称。

Note:

实现多个接口时，接口中的方法不能有重名。

Note:

接口也可以继承，通过使用 extends 操作符。

Note:

类要实现接口，必须使用和接口中所定义的方法完全一致的方式。否则会导致致命错误。

常量

接口中也可以定义常量。接口常量和类常量的使用完全相同，但是不能被子类或子接口所覆盖。

范例

Example #1 接口示例

<?php

// 声明一个'iTemplate'接口
interface iTemplate
{
    public function setVariable($name, $var);
    public function getHtml($template);
}

// 实现接口
// 下面的写法是正确的
class Template implements iTemplate
{
    private $vars = array();

    public function setVariable($name, $var)
    {
        $this->vars[$name] = $var;
    }

    public function getHtml($template)
    {
        foreach($this->vars as $name => $value) {
            $template = str_replace('{' . $name . '}', $value, $template);
        }

        return $template;
    }
}

// 下面的写法是错误的，会报错，因为没有实现 getHtml()：
// Fatal error: Class BadTemplate contains 1 abstract methods
// and must therefore be declared abstract (iTemplate::getHtml)
class BadTemplate implements iTemplate
{
    private $vars = array();

    public function setVariable($name, $var)
    {
        $this->vars[$name] = $var;
    }
}
?>

Example #2 可扩充的接口

<?php
interface a
{
    public function foo();
}

interface b extends a
{
    public function baz(Baz $baz);
}

// 正确写法
class c implements b
{
    public function foo()
    {
    }

    public function baz(Baz $baz)
    {
    }
}

// 错误写法会导致一个致命错误
class d implements b
{
    public function foo()
    {
    }

    public function baz(Foo $foo)
    {
    }
}
?>

Example #3 继承多个接口

<?php
interface a
{
    public function foo();
}

interface b
{
    public function bar();
}

interface c extends a, b
{
    public function baz();
}

class d implements c
{
    public function foo()
    {
    }

    public function bar()
    {
    }

    public function baz()
    {
    }
}
?>

Example #4 使用接口常量

<?php
interface a
{
    const b = 'Interface constant';
}

// 输出接口常量
echo a::b;

// 错误写法，因为常量不能被覆盖。接口常量的概念和类常量是一样的。
class b implements a
{
    const b = 'Class constant';
}
?>

接口加上类型约束，提供了一种很好的方式来确保某个对象包含有某些方法。参见 instanceof 操作符和类型约束。

抽象类
Trait
类与对象


Trait

自 PHP 5.4.0 起，PHP 实现了一种代码复用的方法，称为 trait。

Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。Trait 为了减少单继承语言的限制，使开发人员能够自由地在不同层次结构内独立的类中复用 method。Trait 和 Class 组合的语义定义了一种减少复杂性的方式，避免传统多继承和 Mixin 类相关典型问题。

Trait 和 Class 相似，但仅仅旨在用细粒度和一致的方式来组合功能。 无法通过 trait 自身来实例化。它为传统继承增加了水平特性的组合；也就是说，应用的几个 Class 之间不需要继承。

Example #1 Trait 示例

<?php
trait ezcReflectionReturnInfo {
    function getReturnType() { /*1*/ }
    function getReturnDescription() { /*2*/ }
}

class ezcReflectionMethod extends ReflectionMethod {
    use ezcReflectionReturnInfo;
    /* ... */
}

class ezcReflectionFunction extends ReflectionFunction {
    use ezcReflectionReturnInfo;
    /* ... */
}
?>

优先级

从基类继承的成员会被 trait 插入的成员所覆盖。优先顺序是来自当前类的成员覆盖了 trait 的方法，而 trait 则覆盖了被继承的方法。

Example #2 优先顺序示例

从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法，而 trait 方法又覆盖了基类中的方法。

<?php
class Base {
    public function sayHello() {
        echo 'Hello ';
    }
}

trait SayWorld {
    public function sayHello() {
        parent::sayHello();
        echo 'World!';
    }
}

class MyHelloWorld extends Base {
    use SayWorld;
}

$o = new MyHelloWorld();
$o->sayHello();
?>

以上例程会输出：

Hello World!

Example #3 另一个优先级顺序的例子

<?php
trait HelloWorld {
    public function sayHello() {
        echo 'Hello World!';
    }
}

class TheWorldIsNotEnough {
    use HelloWorld;
    public function sayHello() {
        echo 'Hello Universe!';
    }
}

$o = new TheWorldIsNotEnough();
$o->sayHello();
?>

以上例程会输出：

Hello Universe!

多个 trait

通过逗号分隔，在 use 声明列出多个 trait，可以都插入到一个类中。

Example #4 多个 trait 的用法

<?php
trait Hello {
    public function sayHello() {
        echo 'Hello ';
    }
}

trait World {
    public function sayWorld() {
        echo 'World';
    }
}

class MyHelloWorld {
    use Hello, World;
    public function sayExclamationMark() {
        echo '!';
    }
}

$o = new MyHelloWorld();
$o->sayHello();
$o->sayWorld();
$o->sayExclamationMark();
?>

以上例程会输出：

Hello World!

冲突的解决

如果两个 trait 都插入了一个同名的方法，如果没有明确解决冲突将会产生一个致命错误。

为了解决多个 trait 在同一个类中的命名冲突，需要使用 insteadof 操作符来明确指定使用冲突方法中的哪一个。

以上方式仅允许排除掉其它方法，as 操作符可以将其中一个冲突的方法以另一个名称来引入。

Example #5 冲突的解决

在本例中 Talker 使用了 trait A 和 B。由于 A 和 B 有冲突的方法，其定义了使用 trait B 中的 smallTalk 以及 trait A 中的 bigTalk。

Aliased_Talker 使用了 as 操作符来定义了 talk 来作为 B 的 bigTalk 的别名。

<?php
trait A {
    public function smallTalk() {
        echo 'a';
    }
    public function bigTalk() {
        echo 'A';
    }
}

trait B {
    public function smallTalk() {
        echo 'b';
    }
    public function bigTalk() {
        echo 'B';
    }
}

class Talker {
    use A, B {
        B::smallTalk insteadof A;
        A::bigTalk insteadof B;
    }
}

class Aliased_Talker {
    use A, B {
        B::smallTalk insteadof A;
        A::bigTalk insteadof B;
        B::bigTalk as talk;
    }
}
?>

修改方法的访问控制

使用 as 语法还可以用来调整方法的访问控制。

Example #6 修改方法的访问控制

<?php
trait HelloWorld {
    public function sayHello() {
        echo 'Hello World!';
    }
}

// 修改 sayHello 的访问控制
class MyClass1 {
    use HelloWorld { sayHello as protected; }
}

// 给方法一个改变了访问控制的别名
// 原版 sayHello 的访问控制则没有发生变化
class MyClass2 {
    use HelloWorld { sayHello as private myPrivateHello; }
}
?>

从 trait 来组成 trait

正如 class 能够使用 trait 一样，其它 trait 也能够使用 trait。在 trait 定义时通过使用一个或多个 trait，能够组合其它 trait 中的部分或全部成员。

Example #7 从 trait 来组成 trait

<?php
trait Hello {
    public function sayHello() {
        echo 'Hello ';
    }
}

trait World {
    public function sayWorld() {
        echo 'World!';
    }
}

trait HelloWorld {
    use Hello, World;
}

class MyHelloWorld {
    use HelloWorld;
}

$o = new MyHelloWorld();
$o->sayHello();
$o->sayWorld();
?>

以上例程会输出：

Hello World!

Trait 的抽象成员

为了对使用的类施加强制要求，trait 支持抽象方法的使用。

Example #8 表示通过抽象方法来进行强制要求

<?php
trait Hello {
    public function sayHelloWorld() {
        echo 'Hello'.$this->getWorld();
    }
    abstract public function getWorld();
}

class MyHelloWorld {
    private $world;
    use Hello;
    public function getWorld() {
        return $this->world;
    }
    public function setWorld($val) {
        $this->world = $val;
    }
}
?>

Trait 的静态成员

Traits 可以被静态成员静态方法定义。

Example #9 静态变量

<?php
trait Counter {
    public function inc() {
        static $c = 0;
        $c = $c + 1;
        echo "$c\n";
    }
}

class C1 {
    use Counter;
}

class C2 {
    use Counter;
}

$o = new C1(); $o->inc(); // echo 1
$p = new C2(); $p->inc(); // echo 1
?>

Example #10 静态方法

<?php
trait StaticExample {
    public static function doSomething() {
        return 'Doing something';
    }
}

class Example {
    use StaticExample;
}

Example::doSomething();
?>

属性

Trait 同样可以定义属性。

Example #11 定义属性

<?php
trait PropertiesTrait {
    public $x = 1;
}

class PropertiesExample {
    use PropertiesTrait;
}

$example = new PropertiesExample;
$example->x;
?>

如果 trait 定义了一个属性，那类将不能定义同样名称的属性，否则会产生一个错误。如果该属性在类中的定义与在 trait 中的定义兼容（同样的可见性和初始值）则错误的级别是 E_STRICT，否则是一个致命错误。

Example #12 解决冲突

<?php
trait PropertiesTrait {
    public $same = true;
    public $different = false;
}

class PropertiesExample {
    use PropertiesTrait;
    public $same = true; // Strict Standards
    public $different = true; // 致命错误
}
?>
对象接口
匿名类
类与对象


匿名类

PHP 7 开始支持匿名类。 匿名类很有用，可以创建一次性的简单对象。

<?php

// PHP 7 之前的代码
class Logger
{
    public function log($msg)
    {
        echo $msg;
    }
}

$util->setLogger(new Logger());

// 使用了 PHP 7+ 后的代码
$util->setLogger(new class {
    public function log($msg)
    {
        echo $msg;
    }
});

可以传递参数到匿名类的构造器，也可以扩展（extend）其他类、实现接口（implement interface），以及像其他普通的类一样使用 trait：

<?php

class SomeClass {}
interface SomeInterface {}
trait SomeTrait {}

var_dump(new class(10) extends SomeClass implements SomeInterface {
    private $num;

    public function __construct($num)
    {
        $this->num = $num;
    }

    use SomeTrait;
});

以上例程会输出：

object(class@anonymous)#1 (1) {
  ["Command line code0x104c5b612":"class@anonymous":private]=>
  int(10)
}

匿名类被嵌套进普通 Class 后，不能访问这个外部类（Outer class）的 private（私有）、protected（受保护）方法或者属性。 为了访问外部类（Outer class）protected 属性或方法，匿名类可以 extend（扩展）此外部类。 为了使用外部类（Outer class）的 private 属性，必须通过构造器传进来：

<?php

class Outer
{
    private $prop = 1;
    protected $prop2 = 2;

    protected function func1()
    {
        return 3;
    }

    public function func2()
    {
        return new class($this->prop) extends Outer {
            private $prop3;

            public function __construct($prop)
            {
                $this->prop3 = $prop;
            }

            public function func3()
            {
                return $this->prop2 + $this->prop3 + $this->func1();
            }
        };
    }
}

echo (new Outer)->func2()->func3();

以上例程会输出：

6
Trait
重载
类与对象


重载

PHP所提供的"重载"（overloading）是指动态地"创建"类属性和方法。我们是通过魔术方法（magic methods）来实现的。

当调用当前环境下未定义或不可见的类属性或方法时，重载方法会被调用。本节后面将使用"不可访问属性（inaccessible properties）"和"不可访问方法（inaccessible methods）"来称呼这些未定义或不可见的类属性或方法。

所有的重载方法都必须被声明为 public。

Note:

这些魔术方法的参数都不能通过引用传递。

Note:

PHP中的"重载"与其它绝大多数面向对象语言不同。传统的"重载"是用于提供多个同名的类方法，但各方法的参数类型和个数不同。

更新日志

版本 | 说明
5.3.0 | 新增 __callStatic()魔术方法。可见性未设置为 public 或未声明为 static 的时候会产生一个警告。
5.1.0 | 新增 __isset() 和 __unset() 两个魔术方法。

属性重载

public void __set ( string $name , mixed $value )
public mixed __get ( string $name )
public bool __isset ( string $name )
public void __unset ( string $name )

在给不可访问属性赋值时，__set() 会被调用。

读取不可访问属性的值时，__get() 会被调用。

当对不可访问属性调用 isset() 或 empty() 时，__isset() 会被调用。

当对不可访问属性调用 unset() 时，__unset() 会被调用。

参数 $name 是指要操作的变量名称。__set() 方法的 $value 参数指定了 $name 变量的值。

属性重载只能在对象中进行。在静态方法中，这些魔术方法将不会被调用。所以这些方法都不能被 声明为 static。从 PHP 5.3.0 起, 将这些魔术方法定义为 static 会产生一个警告。

Note:

因为 PHP 处理赋值运算的方式，__set() 的返回值将被忽略。类似的, 在下面这样的链式赋值中，__get() 不会被调用：

 $a = $obj->b = 8;

Note:

在除 isset() 外的其它语言结构中无法使用重载的属性，这意味着当对一个重载的属性使用 empty() 时，重载魔术方法将不会被调用。

为避开此限制，必须将重载属性赋值到本地变量再使用 empty()。

Example #1 使用 __get()，__set()，__isset() 和 __unset() 进行属性重载

<?php
class PropertyTest {
     /**  被重载的数据保存在此  */
    private $data = array();

     /**  重载不能被用在已经定义的属性  */
    public $declared = 1;

     /**  只有从类外部访问这个属性时，重载才会发生 */
    private $hidden = 2;

    public function __set($name, $value)
    {
        echo "Setting '$name' to '$value'\n";
        $this->data[$name] = $value;
    }

    public function __get($name)
    {
        echo "Getting '$name'\n";
        if (array_key_exists($name, $this->data)) {
            return $this->data[$name];
        }

        $trace = debug_backtrace();
        trigger_error(
            'Undefined property via __get(): ' . $name .
            ' in ' . $trace[0]['file'] .
            ' on line ' . $trace[0]['line'],
            E_USER_NOTICE);
        return null;
    }

    /**  PHP 5.1.0之后版本 */
    public function __isset($name)
    {
        echo "Is '$name' set?\n";
        return isset($this->data[$name]);
    }

    /**  PHP 5.1.0之后版本 */
    public function __unset($name)
    {
        echo "Unsetting '$name'\n";
        unset($this->data[$name]);
    }

    /**  非魔术方法  */
    public function getHidden()
    {
        return $this->hidden;
    }
}

echo "<pre>\n";

$obj = new PropertyTest;

$obj->a = 1;
echo $obj->a . "\n\n";

var_dump(isset($obj->a));
unset($obj->a);
var_dump(isset($obj->a));
echo "\n";

echo $obj->declared . "\n\n";

echo "Let's experiment with the private property named 'hidden':\n";
echo "Privates are visible inside the class, so __get() not used...\n";
echo $obj->getHidden() . "\n";
echo "Privates not visible outside of class, so __get() is used...\n";
echo $obj->hidden . "\n";
?>

以上例程会输出：

Setting 'a' to '1'
Getting 'a'
1

Is 'a' set?
bool(true)
Unsetting 'a'
Is 'a' set?
bool(false)

1

Let's experiment with the private property named 'hidden':
Privates are visible inside the class, so __get() not used...
2
Privates not visible outside of class, so __get() is used...
Getting 'hidden'

Notice:  Undefined property via __get(): hidden in <file> on line 70 in <file> on line 29

方法重载

public mixed __call ( string $name , array $arguments )
public static mixed __callStatic ( string $name , array $arguments )

在对象中调用一个不可访问方法时，__call() 会被调用。

在静态上下文中调用一个不可访问方法时，__callStatic() 会被调用。

$name 参数是要调用的方法名称。$arguments 参数是一个枚举数组，包含着要传递给方法 $name 的参数。

Example #2 使用 __call() 和 __callStatic() 对方法重载

<?php
class MethodTest
{
    public function __call($name, $arguments)
    {
        // 注意: $name 的值区分大小写
        echo "Calling object method '$name' "
             . implode(', ', $arguments). "\n";
    }

    /**  PHP 5.3.0之后版本  */
    public static function __callStatic($name, $arguments)
    {
        // 注意: $name 的值区分大小写
        echo "Calling static method '$name' "
             . implode(', ', $arguments). "\n";
    }
}

$obj = new MethodTest;
$obj->runTest('in object context');

MethodTest::runTest('in static context');  // PHP 5.3.0之后版本
?>

以上例程会输出：

Calling object method 'runTest' in object context
Calling static method 'runTest' in static context
匿名类
遍历对象
类与对象


遍历对象

PHP 5 提供了一种定义对象的方法使其可以通过单元列表来遍历，例如用 foreach 语句。默认情况下，所有可见属性都将被用于遍历。

Example #1 简单的对象遍历

<?php
class MyClass
{
    public $var1 = 'value 1';
    public $var2 = 'value 2';
    public $var3 = 'value 3';

    protected $protected = 'protected var';
    private   $private   = 'private var';

    function iterateVisible() {
       echo "MyClass::iterateVisible:\n";
       foreach($this as $key => $value) {
           print "$key => $value\n";
       }
    }
}

$class = new MyClass();

foreach($class as $key => $value) {
    print "$key => $value\n";
}
echo "\n";

$class->iterateVisible();

?>

以上例程会输出：

var1 => value 1
var2 => value 2
var3 => value 3

MyClass::iterateVisible:
var1 => value 1
var2 => value 2
var3 => value 3
protected => protected var
private => private var

如上所示，foreach 遍历了所有其能够访问的可见属性。

更进一步，可以实现 Iterator 接口。可以让对象自行决定如何遍历以及每次遍历时那些值可用。

Example #2 实现 Iterator 接口的对象遍历

<?php
class MyIterator implements Iterator
{
    private $var = array();

    public function __construct($array)
    {
        if (is_array($array)) {
            $this->var = $array;
        }
    }

    public function rewind() {
        echo "rewinding\n";
        reset($this->var);
    }

    public function current() {
        $var = current($this->var);
        echo "current: $var\n";
        return $var;
    }

    public function key() {
        $var = key($this->var);
        echo "key: $var\n";
        return $var;
    }

    public function next() {
        $var = next($this->var);
        echo "next: $var\n";
        return $var;
    }

    public function valid() {
        $var = $this->current() !== false;
        echo "valid: {$var}\n";
        return $var;
    }
}

$values = array(1,2,3);
$it = new MyIterator($values);

foreach ($it as $a => $b) {
    print "$a: $b\n";
}
?>

以上例程会输出：

rewinding
current: 1
valid: 1
current: 1
key: 0
0: 1
next: 2
current: 2
valid: 1
current: 2
key: 1
1: 2
next: 3
current: 3
valid: 1
current: 3
key: 2
2: 3
next:
current:
valid:

可以用 IteratorAggregate 接口以替代实现所有的 Iterator 方法。IteratorAggregate 只需要实现一个方法 IteratorAggregate::getIterator()，其应返回一个实现了 Iterator 的类的实例。

Example #3 通过实现 IteratorAggregate 来遍历对象

<?php
class MyCollection implements IteratorAggregate
{
    private $items = array();
    private $count = 0;

    // Required definition of interface IteratorAggregate
    public function getIterator() {
        return new MyIterator($this->items);
    }

    public function add($value) {
        $this->items[$this->count++] = $value;
    }
}

$coll = new MyCollection();
$coll->add('value 1');
$coll->add('value 2');
$coll->add('value 3');

foreach ($coll as $key => $val) {
    echo "key/value: [$key -> $val]\n\n";
}
?>

以上例程会输出：

rewinding
current: value 1
valid: 1
current: value 1
key: 0
key/value: [0 -> value 1]

next: value 2
current: value 2
valid: 1
current: value 2
key: 1
key/value: [1 -> value 2]

next: value 3
current: value 3
valid: 1
current: value 3
key: 2
key/value: [2 -> value 3]

next:
current:
valid:

Note:

更多遍历的示例见 SPL 扩展。

Note:

PHP 5.5 及以后版本的用户也可参考生成器，其提供了另一方法来定义 Iterators。

重载
魔术方法
类与对象


魔术方法

__construct()，
__destruct()，
__call()，
__callStatic()，
__get()，
__set()，
__isset()，
__unset()，
__sleep()，
__wakeup()，
__toString()，
__invoke()，
__set_state()，
__clone() 和
__debugInfo()
等方法在 PHP 中被称为"魔术方法"（Magic
methods）。在命名自己的类方法时不能使用这些方法名，除非是想使用其魔术功能。

Caution

PHP 将所有以 __（两个下划线）开头的类方法保留为魔术方法。所以在定义类方法时，除了上述魔术方法，建议不要以 __ 为前缀。

__sleep() 和 __wakeup()

public array __sleep ( void )
void __wakeup ( void )

serialize() 函数会检查类中是否存在一个魔术方法 __sleep()。如果存在，该方法会先被调用，然后才执行序列化操作。此功能可以用于清理对象，并返回一个包含对象中所有应被序列化的变量名称的数组。如果该方法未返回任何内容，则 NULL 被序列化，并产生一个 E_NOTICE 级别的错误。

Note:

__sleep() 不能返回父类的私有成员的名字。这样做会产生一个 E_NOTICE 级别的错误。可以用 Serializable 接口来替代。

__sleep() 方法常用于提交未提交的数据，或类似的清理操作。同时，如果有一些很大的对象，但不需要全部保存，这个功能就很好用。

与之相反，unserialize() 会检查是否存在一个 __wakeup() 方法。如果存在，则会先调用 __wakeup 方法，预先准备对象需要的资源。

__wakeup() 经常用在反序列化操作中，例如重新建立数据库连接，或执行其它初始化操作。

Example #1 Sleep 和 wakeup

<?php
class Connection
{
    protected $link;
    private $server, $username, $password, $db;

    public function __construct($server, $username, $password, $db)
    {
        $this->server = $server;
        $this->username = $username;
        $this->password = $password;
        $this->db = $db;
        $this->connect();
    }

    private function connect()
    {
        $this->link = mysql_connect($this->server, $this->username, $this->password);
        mysql_select_db($this->db, $this->link);
    }

    public function __sleep()
    {
        return array('server', 'username', 'password', 'db');
    }

    public function __wakeup()
    {
        $this->connect();
    }
}
?>

__toString()

public string __toString ( void )

__toString() 方法用于一个类被当成字符串时应怎样回应。例如 echo $obj; 应该显示些什么。此方法必须返回一个字符串，否则将发出一条 E_RECOVERABLE_ERROR 级别的致命错误。

Warning

不能在 __toString() 方法中抛出异常。这么做会导致致命错误。

Example #2 简单示例

<?php
// Declare a simple class
class TestClass
{
    public $foo;

    public function __construct($foo)
    {
        $this->foo = $foo;
    }

    public function __toString() {
        return $this->foo;
    }
}

$class = new TestClass('Hello');
echo $class;
?>

以上例程会输出：

Hello

需要指出的是在 PHP 5.2.0 之前，__toString() 方法只有在直接使用于 echo 或 print 时才能生效。PHP 5.2.0 之后，则可以在任何字符串环境生效（例如通过 printf()，使用 %s 修饰符），但不能用于非字符串环境（如使用 %d 修饰符）。自 PHP 5.2.0 起，如果将一个未定义 __toString() 方法的对象转换为字符串，会产生 E_RECOVERABLE_ERROR 级别的错误。

__invoke()

mixed __invoke ([ $... ] )

当尝试以调用函数的方式调用一个对象时，__invoke() 方法会被自动调用。

Note:

本特性只在 PHP 5.3.0 及以上版本有效。

Example #3 使用 __invoke()

<?php
class CallableClass
{
    function __invoke($x) {
        var_dump($x);
    }
}
$obj = new CallableClass;
$obj(5);
var_dump(is_callable($obj));
?>

以上例程会输出：

int(5)
bool(true)

__set_state()

static object __set_state ( array $properties )

自 PHP 5.1.0 起当调用 var_export() 导出类时，此静态 方法会被调用。

本方法的唯一参数是一个数组，其中包含按 array('property' => value, ...) 格式排列的类属性。

Example #4 使用 __set_state()>（PHP 5.1.0 起）

<?php

class A
{
    public $var1;
    public $var2;

    public static function __set_state($an_array) // As of PHP 5.1.0
    {
        $obj = new A;
        $obj->var1 = $an_array['var1'];
        $obj->var2 = $an_array['var2'];
        return $obj;
    }
}

$a = new A;
$a->var1 = 5;
$a->var2 = 'foo';

eval('$b = ' . var_export($a, true) . ';'); // $b = A::__set_state(array(
                                            //    'var1' => 5,
                                            //    'var2' => 'foo',
                                            // ));
var_dump($b);

?>

以上例程会输出：

object(A)#2 (2) {
  ["var1"]=>
  int(5)
  ["var2"]=>
  string(3) "foo"
}

__debugInfo()

array __debugInfo ( void )

This method is called by var_dump() when dumping an object to get the properties that should be shown. If the method isn't defined on an object, then all public, protected and private properties will be shown.

This feature was added in PHP 5.6.0.

Example #5 Using __debugInfo()

<?php
class C {
    private $prop;

    public function __construct($val) {
        $this->prop = $val;
    }

    public function __debugInfo() {
        return [
            'propSquared' => $this->prop ** 2,
        ];
    }
}

var_dump(new C(42));
?>

以上例程会输出：

object(C)#1 (1) {
  ["propSquared"]=>
  int(1764)
}
遍历对象
Final 关键字
类与对象


Final 关键字

PHP 5 新增了一个 final 关键字。如果父类中的方法被声明为 final，则子类无法覆盖该方法。如果一个类被声明为 final，则不能被继承。

Example #1 Final 方法示例

<?php
class BaseClass {
   public function test() {
       echo "BaseClass::test() called\n";
   }

   final public function moreTesting() {
       echo "BaseClass::moreTesting() called\n";
   }
}

class ChildClass extends BaseClass {
   public function moreTesting() {
       echo "ChildClass::moreTesting() called\n";
   }
}
// Results in Fatal error: Cannot override final method BaseClass::moreTesting()
?>

Example #2 Final 类示例

<?php
final class BaseClass {
   public function test() {
       echo "BaseClass::test() called\n";
   }

   // 这里无论你是否将方法声明为final，都没有关系
   final public function moreTesting() {
       echo "BaseClass::moreTesting() called\n";
   }
}

class ChildClass extends BaseClass {
}
// 产生 Fatal error: Class ChildClass may not inherit from final class (BaseClass)
?>

Note: 属性不能被定义为 final，只有类和方法才能被定义为 final。

魔术方法
对象复制
类与对象


对象复制

在多数情况下，我们并不需要完全复制一个对象来获得其中属性。但有一个情况下确实需要：如果你有一个 GTK 窗口对象，该对象持有窗口相关的资源。你可能会想复制一个新的窗口，保持所有属性与原来的窗口相同，但必须是一个新的对象（因为如果不是新的对象，那么一个窗口中的改变就会影响到另一个窗口）。还有一种情况：如果对象 A 中保存着对象 B 的引用，当你复制对象 A 时，你想其中使用的对象不再是对象 B 而是 B 的一个副本，那么你必须得到对象 A 的一个副本。

对象复制可以通过 clone 关键字来完成（如果可能，这将调用对象的 __clone() 方法）。对象中的 __clone() 方法不能被直接调用。

$copy_of_object = clone $object;

当对象被复制后，PHP 5 会对对象的所有属性执行一个浅复制（shallow copy）。所有的引用属性 仍然会是一个指向原来的变量的引用。

void __clone ( void )

当复制完成时，如果定义了 __clone() 方法，则新创建的对象（复制生成的对象）中的 __clone() 方法会被调用，可用于修改属性的值（如果有必要的话）。

Example #1 复制一个对象

<?php
class SubObject
{
    static $instances = 0;
    public $instance;

    public function __construct() {
        $this->instance = ++self::$instances;
    }

    public function __clone() {
        $this->instance = ++self::$instances;
    }
}

class MyCloneable
{
    public $object1;
    public $object2;

    function __clone()
    {

        // 强制复制一份this->object， 否则仍然指向同一个对象
        $this->object1 = clone $this->object1;
    }
}

$obj = new MyCloneable();

$obj->object1 = new SubObject();
$obj->object2 = new SubObject();

$obj2 = clone $obj;

print("Original Object:\n");
print_r($obj);

print("Cloned Object:\n");
print_r($obj2);

?>

以上例程会输出：

Original Object:
MyCloneable Object
(
    [object1] => SubObject Object
        (
            [instance] => 1
        )

    [object2] => SubObject Object
        (
            [instance] => 2
        )

)
Cloned Object:
MyCloneable Object
(
    [object1] => SubObject Object
        (
            [instance] => 3
        )

    [object2] => SubObject Object
        (
            [instance] => 2
        )

)
Final 关键字
对象比较
类与对象


对象比较

PHP 5 中的对象比较要比 PHP 4 中复杂，所期望的结果更符合一个面向对象语言。

当使用比较运算符（==）比较两个对象变量时，比较的原则是：如果两个对象的属性和属性值 都相等，而且两个对象是同一个类的实例，那么这两个对象变量相等。

而如果使用全等运算符（===），这两个对象变量一定要指向某个类的同一个实例（即同一个对象）。

通过下面的示例可以理解以上原则。

Example #1 PHP 5 的对象比较

<?php
function bool2str($bool)
{
    if ($bool === false) {
        return 'FALSE';
    } else {
        return 'TRUE';
    }
}

function compareObjects(&$o1, &$o2)
{
    echo 'o1 == o2 : ' . bool2str($o1 == $o2) . "\n";
    echo 'o1 != o2 : ' . bool2str($o1 != $o2) . "\n";
    echo 'o1 === o2 : ' . bool2str($o1 === $o2) . "\n";
    echo 'o1 !== o2 : ' . bool2str($o1 !== $o2) . "\n";
}

class Flag
{
    public $flag;

    function Flag($flag = true) {
        $this->flag = $flag;
    }
}

class OtherFlag
{
    public $flag;

    function OtherFlag($flag = true) {
        $this->flag = $flag;
    }
}

$o = new Flag();
$p = new Flag();
$q = $o;
$r = new OtherFlag();

echo "Two instances of the same class\n";
compareObjects($o, $p);

echo "\nTwo references to the same instance\n";
compareObjects($o, $q);

echo "\nInstances of two different classes\n";
compareObjects($o, $r);
?>

以上例程会输出：

Two instances of the same class
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : FALSE
o1 !== o2 : TRUE

Two references to the same instance
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : TRUE
o1 !== o2 : FALSE

Instances of two different classes
o1 == o2 : FALSE
o1 != o2 : TRUE
o1 === o2 : FALSE
o1 !== o2 : TRUE

Note:

PHP 扩展中可以自行定义对象比较的原则。

对象复制
类型约束
类与对象


类型约束

PHP 5 可以使用类型约束。函数的参数可以指定必须为对象（在函数原型里面指定类的名字），接口，数组（PHP 5.1 起）或者 callable（PHP 5.4 起）。不过如果使用 NULL 作为参数的默认值，那么在调用函数的时候依然可以使用 NULL 作为实参。

如果一个类或接口指定了类型约束，则其所有的子类或实现也都如此。

类型约束不能用于标量类型如 int 或 string。Traits 也不允许。

Example #1 类型约束示例

<?php
//如下面的类
class MyClass
{
    /**
     * 测试函数
     * 第一个参数必须为 OtherClass 类的一个对象
     */
    public function test(OtherClass $otherclass) {
        echo $otherclass->var;
    }

    /**
     * 另一个测试函数
     * 第一个参数必须为数组
     */
    public function test_array(array $input_array) {
        print_r($input_array);
    }
}

    /**
     * 第一个参数必须为递归类型
     */
    public function test_interface(Traversable $iterator) {
        echo get_class($iterator);
    }

    /**
     * 第一个参数必须为回调类型
     */
    public function test_callable(callable $callback, $data) {
        call_user_func($callback, $data);
    }
}

// OtherClass 类定义
class OtherClass {
    public $var = 'Hello World';
}
?>

函数调用的参数与定义的参数类型不一致时，会抛出一个可捕获的致命错误。

<?php
// 两个类的对象
$myclass = new MyClass;
$otherclass = new OtherClass;

// 致命错误：第一个参数必须是 OtherClass 类的一个对象
$myclass->test('hello');

// 致命错误：第一个参数必须为 OtherClass 类的一个实例
$foo = new stdClass;
$myclass->test($foo);

// 致命错误：第一个参数不能为 null
$myclass->test(null);

// 正确：输出 Hello World
$myclass->test($otherclass);

// 致命错误：第一个参数必须为数组
$myclass->test_array('a string');

// 正确：输出数组
$myclass->test_array(array('a', 'b', 'c'));

// 正确：输出 ArrayObject
$myclass->test_interface(new ArrayObject(array()));

// 正确：输出 int(1)
$myclass->test_callable('var_dump', 1);
?>

类型约束不只是用在类的成员函数里，也能使用在函数里：

<?php
// 如下面的类
class MyClass {
    public $var = 'Hello World';
}

/**
 * 测试函数
 * 第一个参数必须是 MyClass 类的一个对象
 */
function MyFunction (MyClass $foo) {
    echo $foo->var;
}

// 正确
$myclass = new MyClass;
MyFunction($myclass);
?>

类型约束允许 NULL 值：

<?php

/* 接受 NULL 值 */
function test(stdClass $obj = NULL) {

}

test(NULL);
test(new stdClass);

?>
对象比较
后期静态绑定
类与对象


后期静态绑定

自 PHP 5.3.0 起，PHP 增加了一个叫做后期静态绑定的功能，用于在继承范围内引用静态调用的类。

准确说，后期静态绑定工作原理是存储了在上一个"非转发调用"（non-forwarding call）的类名。当进行静态方法调用时，该类名即为明确指定的那个（通常在 :: 运算符左侧部分）；当进行非静态方法调用时，即为该对象所属的类。所谓的"转发调用"（forwarding call）指的是通过以下几种方式进行的静态调用：self::，parent::，static:: 以及 forward_static_call()。可用 get_called_class() 函数来得到被调用的方法所在的类名，static:: 则指出了其范围。

该功能从语言内部角度考虑被命名为"后期静态绑定"。"后期绑定"的意思是说，static:: 不再被解析为定义当前方法所在的类，而是在实际运行时计算的。也可以称之为"静态绑定"，因为它可以用于（但不限于）静态方法的调用。

self:: 的限制

使用 self:: 或者 __CLASS__ 对当前类的静态引用，取决于定义当前方法所在的类：

Example #1 self:: 用法

<?php
class A {
    public static function who() {
        echo __CLASS__;
    }
    public static function test() {
        self::who();
    }
}

class B extends A {
    public static function who() {
        echo __CLASS__;
    }
}

B::test();
?>

以上例程会输出：

A

后期静态绑定的用法

后期静态绑定本想通过引入一个新的关键字表示运行时最初调用的类来绕过限制。简单地说，这个关键字能够让你在上述例子中调用 test() 时引用的类是 B 而不是 A。最终决定不引入新的关键字，而是使用已经预留的 static 关键字。

Example #2 static:: 简单用法

<?php
class A {
    public static function who() {
        echo __CLASS__;
    }
    public static function test() {
        static::who(); // 后期静态绑定从这里开始
    }
}

class B extends A {
    public static function who() {
        echo __CLASS__;
    }
}

B::test();
?>

以上例程会输出：

B

Note:

在非静态环境下，所调用的类即为该对象实例所属的类。由于 $this-> 会在同一作用范围内尝试调用私有方法，而 static:: 则可能给出不同结果。另一个区别是 static:: 只能用于静态属性。

Example #3 非静态环境下使用 static::

<?php
class A {
    private function foo() {
        echo "success!\n";
    }
    public function test() {
        $this->foo();
        static::foo();
    }
}

class B extends A {
   /* foo() will be copied to B, hence its scope will still be A and
    * the call be successful */
}

class C extends A {
    private function foo() {
        /* original method is replaced; the scope of the new one is C */
    }
}

$b = new B();
$b->test();
$c = new C();
$c->test();   //fails
?>

以上例程会输出：

success!
success!
success!

Fatal error:  Call to private method C::foo() from context 'A' in /tmp/test.php on line 9

Note:

后期静态绑定的解析会一直到取得一个完全解析了的静态调用为止。另一方面，如果静态调用使用 parent:: 或者 self:: 将转发调用信息。

Example #4 转发和非转发调用

<?php
class A {
    public static function foo() {
        static::who();
    }

    public static function who() {
        echo __CLASS__."\n";
    }
}

class B extends A {
    public static function test() {
        A::foo();
        parent::foo();
        self::foo();
    }

    public static function who() {
        echo __CLASS__."\n";
    }
}
class C extends B {
    public static function who() {
        echo __CLASS__."\n";
    }
}

C::test();
?>

以上例程会输出：

A
C
C

类型约束
对象和引用
类与对象


对象和引用

在php5 的对象编程经常提到的一个关键点是"默认情况下对象是通过引用传递的"。但其实这不是完全正确的。下面通过一些例子来说明。

php的引用是别名，就是两个不同的变量名字指向相同的内容。在php5，一个对象变量已经不再保存整个对象的值。只是保存一个标识符来访问真正的对象内容。 当对象作为参数传递，作为结果返回，或者赋值给另外一个变量，另外一个变量跟原来的不是引用的关系，只是他们都保存着同一个标识符的拷贝，这个标识符指向同一个对象的真正内容。

Example #1 引用和对象

<?php
class A {
    public $foo = 1;
}

$a = new A;
$b = $a;     // $a ,$b都是同一个标识符的拷贝
             // ($a) = ($b) = <id>
$b->foo = 2;
echo $a->foo."\n";

$c = new A;
$d = &$c;    // $c ,$d是引用
             // ($c,$d) = <id>

$d->foo = 2;
echo $c->foo."\n";

$e = new A;

function foo($obj) {
    // ($obj) = ($e) = <id>
    $obj->foo = 2;
}

foo($e);
echo $e->foo."\n";

?>

以上例程会输出：

2
2
2
后期静态绑定
对象序列化
类与对象


对象序列化

序列化对象 - 在会话中存放对象

所有php里面的值都可以使用函数serialize()来返回一个包含字节流的字符串来表示。unserialize()函数能够重新把字符串变回php原来的值。 序列化一个对象将会保存对象的所有变量，但是不会保存对象的方法，只会保存类的名字。

为了能够unserialize()一个对象，这个对象的类必须已经定义过。如果序列化类A的一个对象，将会返回一个跟类A相关，而且包含了对象所有变量值的字符串。 如果要想在另外一个文件中解序列化一个对象，这个对象的类必须在解序列化之前定义，可以通过包含一个定义该类的文件或使用函数spl_autoload_register()来实现。

<?php
// classa.inc:

  class A {
      public $one = 1;

      public function show_one() {
          echo $this->one;
      }
  }

// page1.php:

  include("classa.inc");

  $a = new A;
  $s = serialize($a);
  // 把变量$s保存起来以便文件page2.php能够读到
  file_put_contents('store', $s);

// page2.php:

  // 要正确了解序列化，必须包含下面一个文件
  include("classa.inc");

  $s = file_get_contents('store');
  $a = unserialize($s);

  // 现在可以使用对象$a里面的函数 show_one()
  $a->show_one();
?>

当一个应用程序使用函数session_register()来保存对象到会话中时，在每个页面结束的时候这些对象都会自动序列化，而在每个页面开始的时候又自动解序列化。 所以一旦对象被保存在会话中，整个应用程序的页面都能使用这些对象。但是，session_register()在php5.4.0之后被移除了。

在应用程序中序列化对象以便在之后使用，强烈推荐在整个应用程序都包含对象的类的定义。 不然有可能出现在解序列化对象的时候，没有找到该对象的类的定义，从而把没有方法的类__PHP_Incomplete_Class_Name作为该对象的类，导致返回一个没有用的对象。

所以在上面的例子中，当运行session_register("a")，把变量$a放在会话里之后，需要在每个页面都包含文件classa.inc，而不是只有文件page1.php和page2.php。

对象和引用
OOP 变更日志
类与对象


OOP 变更日志

PHP 5 OOP 模型的变更将被记录在此。功能的描述与其他相关注意事项记录在了 OOP 5 文档之中。

版本 | 说明
5.5.0 | 增加: finally 来处理异常。
5.4.0 | 增加： traits。
5.4.0 | 已变更：如果一个抽象 类定义了构造函数的签名，它将必须被实现。
5.3.3 | 已变更： 命名空间 中和类同名的方法不再被作为 构造函数。这个变更不影响非命名空间中的类。
5.3.0 | 已变更：类实现接口的方法所具有的默认值不再需要和接口的默认值一致。
5.3.0 | 已变更： 现在它也能够通过一个变量来引用一个类（例如，echo $classname::constant;）。 这个变量的值不能是一个保留关键词（比如，self、parent 或 static）。
5.3.0 | 已变更： 如果重载方法被定义为 static 将导致一个 E_WARNING 级别的错误。 同时它也需要强制使用 public 的可见性。
5.3.0 | 已变更： 在 5.3.0 之前的版本，__autoload() 函数里抛出的异常不能被 catch 块结构捕获，并会导致一个致命错误。 现在在一个前提下 catch 块能够捕获 __autoload 函数中抛出的错误。如果抛出一个自定义异常，这个自定义异常的类必须是可用的。否则 __autoload 函数可能递归自动加载这个自定义异常类。
5.3.0 | 新增： __callStatic 方法。
5.3.0 | 新增： heredoc 和 nowdoc 支持类的 常量 和属性的定义。 注意：heredoc 值必须和双引号字符串遵循同样的规则（比如，变量将被替换）。
5.3.0 | 新增： 后期静态绑定。
5.3.0 | 新增： __invoke 方法。
5.2.0 | 已变更：__toString 方法仅在直接与 echo 或 print 使用时被调用。但是现在它能在任何字符串上下文被调用（比如在 printf() 中使用 %s ），但不是在其他类型的上下文被调用（例如 %d 修饰符）。 自 PHP 5.2.0 起，将不具有 __toString 方法的对象转化为字符串将导致一个 E_RECOVERABLE_ERROR 级别的错误。
5.1.3 | 已变更：在 PHP 5 之前的版本，var 的使用已被废弃，并将产生一个 E_STRICT 级别的错误。现在它不再被废弃，因此也不会产生错误。
5.1.0 | 已变更：现在 __set_state 静态方法在 var_export() 导出类时会被调用。
5.1.0 | 新增：__isset 和 __unset 方法。

对象序列化
命名空间
类与对象


命名空间

Table of Contents

  • 命名空间概述
  • 定义命名空间
  • 定义子命名空间
  • 在同一个文件中定义多个命名空间
  • 使用命名空间：基础
  • 命名空间和动态语言特征
  • namespace关键字和__NAMESPACE__常量
  • 使用命名空间：别名/导入
  • 全局空间
  • 使用命名空间：后备全局函数/常量
  • 名称解析规则
  • FAQ: things you need to know about namespaces
OOP 变更日志
命名空间概述
语言参考


命名空间概述

(PHP 5 >= 5.3.0, PHP 7)

什么是命名空间？从广义上来说，命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如，在操作系统中目录用来将相关文件分组，对于目录中的文件来说，它就扮演了命名空间的角色。具体举个例子，文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中存在，但在同一个目录中不能存在两个 foo.txt 文件。另外，在目录 /home/greg 外访问 foo.txt 文件时，我们必须将目录名以及目录分隔符放在文件名之前得到 /home/greg/foo.txt。这个原理应用到程序设计领域就是命名空间的概念。

在PHP中，命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题：

  1. 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
  2. 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名（或简短）的名称，提高源代码的可读性。

PHP 命名空间提供了一种将相关的类、函数和常量组合到一起的途径。下面是一个说明 PHP 命名空间语法的示例：

Example #1 命名空间语法示例

<?php
namespace my\name; // 参考 "定义命名空间" 小节

class MyClass {}
function myfunction() {}
const MYCONST = 1;

$a = new MyClass;
$c = new \my\name\MyClass; // 参考 "全局空间" 小节

$a = strlen('hi'); // 参考 "使用命名空间：后备全局函数/常量" 小节

$d = namespace\MYCONST; // 参考 "namespace操作符和__NAMESPACE__常量" 小节

$d = __NAMESPACE__ . '\MYCONST';
echo constant($d); // 参考 "命名空间和动态语言特征" 小节
?>

Note:

名为PHP或php的命名空间，以及以这些名字开头的命名空间（例如PHP\Classes）被保留用作语言内核使用，而不应该在用户空间的代码中使用。

命名空间
定义命名空间
命名空间


定义命名空间

(PHP 5 >= 5.3.0, PHP 7)

虽然任意合法的PHP代码都可以包含在命名空间中，但只有以下类型的代码受命名空间的影响，它们是：类（包括抽象类和traits）、接口、函数和常量。

命名空间通过关键字namespace 来声明。如果一个文件中包含命名空间，它必须在其它所有代码之前声明命名空间，除了一个以外：declare关键字。

Example #1 声明单个命名空间

<?php
namespace MyProject;

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }

?>
在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句。另外，所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前：

Example #2 声明单个命名空间

<html>
<?php
namespace MyProject; // 致命错误 -　命名空间必须是程序脚本的第一条语句
?>

另外，与PHP其它的语言特征不同，同一个命名空间可以定义在多个文件中，即允许将同一个命名空间的内容分割存放在不同的文件中。

命名空间概述
定义子命名空间
命名空间


定义子命名空间

(PHP 5 >= 5.3.0, PHP 7)

与目录和文件的关系很象，PHP 命名空间也允许指定层次化的命名空间的名称。因此，命名空间的名字可以使用分层次的方式定义：

Example #1 声明分层次的单个命名空间

<?php
namespace MyProject\Sub\Level;

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }

?>
上面的例子创建了常量MyProject\Sub\Level\CONNECT_OK，类 MyProject\Sub\Level\Connection和函数 MyProject\Sub\Level\connect。

定义命名空间
在同一个文件中定义多个命名空间
命名空间


在同一个文件中定义多个命名空间

(PHP 5 >= 5.3.0, PHP 7)

也可以在同一个文件中定义多个命名空间。在同一个文件中定义多个命名空间有两种语法形式。

Example #1 定义多个命名空间，简单组合语法

<?php
namespace MyProject;

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }

namespace AnotherProject;

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
?>

不建议使用这种语法在单个文件中定义多个命名空间。建议使用下面的大括号形式的语法。

Example #2 定义多个命名空间，大括号语法

<?php
namespace MyProject {

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
}

namespace AnotherProject {

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
}
?>

在实际的编程实践中，非常不提倡在同一个文件中定义多个命名空间。这种方式的主要用于将多个 PHP 脚本合并在同一个文件中。

将全局的非命名空间中的代码与命名空间中的代码组合在一起，只能使用大括号形式的语法。全局代码必须用一个不带名称的 namespace 语句加上大括号括起来，例如：

Example #3 定义多个命名空间和不包含在命名空间中的代码

<?php
namespace MyProject {

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
}

namespace { // global code
session_start();
$a = MyProject\connect();
echo MyProject\Connection::start();
}
?>

除了开始的declare语句外，命名空间的括号外不得有任何PHP代码。

Example #4 定义多个命名空间和不包含在命名空间中的代码

<?php
declare(encoding='UTF-8');
namespace MyProject {

const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
}

namespace { // 全局代码
session_start();
$a = MyProject\connect();
echo MyProject\Connection::start();
}
?>

定义子命名空间
使用命名空间：基础
命名空间


使用命名空间：基础

(PHP 5 >= 5.3.0, PHP 7)

在讨论如何使用命名空间之前，必须了解 PHP 是如何知道要使用哪一个命名空间中的元素的。可以将 PHP 命名空间与文件系统作一个简单的类比。在文件系统中访问一个文件有三种方式：

  1. 相对文件名形式如foo.txt。它会被解析为 currentdirectory/foo.txt，其中 currentdirectory 表示当前目录。因此如果当前目录是 /home/foo，则该文件名被解析为/home/foo/foo.txt。
  2. 相对路径名形式如subdirectory/foo.txt。它会被解析为 currentdirectory/subdirectory/foo.txt。
  3. 绝对路径名形式如/main/foo.txt。它会被解析为/main/foo.txt。
PHP 命名空间中的元素使用同样的原理。例如，类名可以通过三种方式引用：
  1. 非限定名称，或不包含前缀的类名称，例如 $a=new foo(); 或 foo::staticmethod();。如果当前命名空间是 currentnamespace，foo 将被解析为 currentnamespace\foo。如果使用 foo 的代码是全局的，不包含在任何命名空间中的代码，则 foo 会被解析为foo。 警告：如果命名空间中的函数或常量未定义，则该非限定的函数名称或常量名称会被解析为全局函数名称或常量名称。详情参见 使用命名空间：后备全局函数名称/常量名称。
  2. 限定名称,或包含前缀的名称，例如 $a = new subnamespace\foo(); 或 subnamespace\foo::staticmethod();。如果当前的命名空间是 currentnamespace，则 foo 会被解析为 currentnamespace\subnamespace\foo。如果使用 foo 的代码是全局的，不包含在任何命名空间中的代码，foo 会被解析为subnamespace\foo。
  3. 完全限定名称，或包含了全局前缀操作符的名称，例如， $a = new \currentnamespace\foo(); 或 \currentnamespace\foo::staticmethod();。在这种情况下，foo 总是被解析为代码中的文字名(literal name)currentnamespace\foo。

下面是一个使用这三种方式的实例：

file1.php

<?php
namespace Foo\Bar\subnamespace;

const FOO = 1;
function foo() {}
class foo
{
    static function staticmethod() {}
}
?>

file2.php

<?php
namespace Foo\Bar;
include 'file1.php';

const FOO = 2;
function foo() {}
class foo
{
    static function staticmethod() {}
}

/* 非限定名称 */
foo(); // 解析为 Foo\Bar\foo resolves to function Foo\Bar\foo
foo::staticmethod(); // 解析为类 Foo\Bar\foo的静态方法staticmethod。resolves to class Foo\Bar\foo, method staticmethod
echo FOO; // resolves to constant Foo\Bar\FOO

/* 限定名称 */
subnamespace\foo(); // 解析为函数 Foo\Bar\subnamespace\foo
subnamespace\foo::staticmethod(); // 解析为类 Foo\Bar\subnamespace\foo,
                                  // 以及类的方法 staticmethod
echo subnamespace\FOO; // 解析为常量 Foo\Bar\subnamespace\FOO

/* 完全限定名称 */
\Foo\Bar\foo(); // 解析为函数 Foo\Bar\foo
\Foo\Bar\foo::staticmethod(); // 解析为类 Foo\Bar\foo, 以及类的方法 staticmethod
echo \Foo\Bar\FOO; // 解析为常量 Foo\Bar\FOO
?>

注意访问任意全局类、函数或常量，都可以使用完全限定名称，例如 \strlen() 或 \Exception 或 \INI_ALL。

Example #1 在命名空间内部访问全局类、函数和常量

<?php
namespace Foo;

function strlen() {}
const INI_ALL = 3;
class Exception {}

$a = \strlen('hi'); // 调用全局函数strlen
$b = \INI_ALL; // 访问全局常量 INI_ALL
$c = new \Exception('error'); // 实例化全局类 Exception
?>

在同一个文件中定义多个命名空间
命名空间和动态语言特征
命名空间


命名空间和动态语言特征

(PHP 5 >= 5.3.0, PHP 7)

PHP 命名空间的实现受到其语言自身的动态特征的影响。因此，如果要将下面的代码转换到命名空间中：

Example #1 动态访问元素

example1.php:

<?php
class classname
{
    function __construct()
    {
        echo __METHOD__,"\n";
    }
}
function funcname()
{
    echo __FUNCTION__,"\n";
}
const constname = "global";

$a = 'classname';
$obj = new $a; // prints classname::__construct
$b = 'funcname';
$b(); // prints funcname
echo constant('constname'), "\n"; // prints global
?>
必须使用完全限定名称（包括命名空间前缀的类名称）。注意因为在动态的类名称、函数名称或常量名称中，限定名称和完全限定名称没有区别，因此其前导的反斜杠是不必要的。

Example #2 动态访问命名空间的元素

<?php
namespace namespacename;
class classname
{
    function __construct()
    {
        echo __METHOD__,"\n";
    }
}
function funcname()
{
    echo __FUNCTION__,"\n";
}
const constname = "namespaced";

include 'example1.php';

$a = 'classname';
$obj = new $a; // prints classname::__construct
$b = 'funcname';
$b(); // prints funcname
echo constant('constname'), "\n"; // prints global

/* note that if using double quotes, "\\namespacename\\classname" must be used */
$a = '\namespacename\classname';
$obj = new $a; // prints namespacename\classname::__construct
$a = 'namespacename\classname';
$obj = new $a; // also prints namespacename\classname::__construct
$b = 'namespacename\funcname';
$b(); // prints namespacename\funcname
$b = '\namespacename\funcname';
$b(); // also prints namespacename\funcname
echo constant('\namespacename\constname'), "\n"; // prints namespaced
echo constant('namespacename\constname'), "\n"; // also prints namespaced
?>

请一定别忘了阅读 对字符串中的命名空间名称转义的注解.

使用命名空间：基础
namespace关键字和__NAMESPACE__常量
命名空间


namespace关键字和__NAMESPACE__常量

(PHP 5 >= 5.3.0, PHP 7)

PHP支持两种抽象的访问当前命名空间内部元素的方法，__NAMESPACE__ 魔术常量和namespace关键字。

常量__NAMESPACE__的值是包含当前命名空间名称的字符串。在全局的，不包括在任何命名空间中的代码，它包含一个空的字符串。

Example #1 __NAMESPACE__ 示例, 在命名空间中的代码

<?php
namespace MyProject;

echo '"', __NAMESPACE__, '"'; // 输出 "MyProject"
?>

Example #2 __NAMESPACE__ 示例，全局代码

<?php

echo '"', __NAMESPACE__, '"'; // 输出 ""
?>
常量 __NAMESPACE__ 在动态创建名称时很有用，例如：

Example #3 使用__NAMESPACE__动态创建名称

<?php
namespace MyProject;

function get($classname)
{
    $a = __NAMESPACE__ . '\\' . $classname;
    return new $a;
}
?>

关键字 namespace 可用来显式访问当前命名空间或子命名空间中的元素。它等价于类中的 self 操作符。

Example #4 namespace操作符，命名空间中的代码

<?php
namespace MyProject;

use blah\blah as mine; // see "Using namespaces: importing/aliasing"

blah\mine(); // calls function MyProject\blah\mine()
namespace\blah\mine(); // calls function MyProject\blah\mine()

namespace\func(); // calls function MyProject\func()
namespace\sub\func(); // calls function MyProject\sub\func()
namespace\cname::method(); // calls static method "method" of class MyProject\cname
$a = new namespace\sub\cname(); // instantiates object of class MyProject\sub\cname
$b = namespace\CONSTANT; // assigns value of constant MyProject\CONSTANT to $b
?>

Example #5 namespace操作符, 全局代码

<?php

namespace\func(); // calls function func()
namespace\sub\func(); // calls function sub\func()
namespace\cname::method(); // calls static method "method" of class cname
$a = new namespace\sub\cname(); // instantiates object of class sub\cname
$b = namespace\CONSTANT; // assigns value of constant CONSTANT to $b
?>

命名空间和动态语言特征
使用命名空间：别名/导入
命名空间


使用命名空间：别名/导入

(PHP 5 >= 5.3.0, PHP 7)

允许通过别名引用或导入外部的完全限定名称，是命名空间的一个重要特征。这有点类似于在类 unix 文件系统中可以创建对其它的文件或目录的符号连接。

所有支持命名空间的PHP版本支持三种别名或导入方式：为类名称使用别名、为接口使用别名或为命名空间名称使用别名。PHP 5.6开始允许导入函数或常量或者为它们设置别名。

在PHP中，别名是通过操作符 use 来实现的. 下面是一个使用所有可能的五种导入方式的例子：

Example #1 使用use操作符导入/使用别名

<?php
namespace foo;
use My\Full\Classname as Another;

// 下面的例子与 use My\Full\NSname as NSname 相同
use My\Full\NSname;

// 导入一个全局类
use ArrayObject;

// importing a function (PHP 5.6+)
use function My\Full\functionName;

// aliasing a function (PHP 5.6+)
use function My\Full\functionName as func;

// importing a constant (PHP 5.6+)
use const My\Full\CONSTANT;

$obj = new namespace\Another; // 实例化 foo\Another 对象
$obj = new Another; // 实例化 My\Full\Classname　对象
NSname\subns\func(); // 调用函数 My\Full\NSname\subns\func
$a = new ArrayObject(array(1)); // 实例化 ArrayObject 对象
// 如果不使用 "use \ArrayObject" ，则实例化一个 foo\ArrayObject 对象
func(); // calls function My\Full\functionName
echo CONSTANT; // echoes the value of My\Full\CONSTANT
?>
注意对命名空间中的名称（包含命名空间分隔符的完全限定名称如 Foo\Bar以及相对的不包含命名空间分隔符的全局名称如 FooBar）来说，前导的反斜杠是不必要的也不推荐的，因为导入的名称必须是完全限定的，不会根据当前的命名空间作相对解析。

为了简化操作，PHP还支持在一行中使用多个use语句

Example #2 通过use操作符导入/使用别名，一行中包含多个use语句

<?php
use My\Full\Classname as Another, My\Full\NSname;

$obj = new Another; // 实例化 My\Full\Classname 对象
NSname\subns\func(); // 调用函数 My\Full\NSname\subns\func
?>

导入操作是在编译执行的，但动态的类名称、函数名称或常量名称则不是。

Example #3 导入和动态名称

<?php
use My\Full\Classname as Another, My\Full\NSname;

$obj = new Another; // 实例化一个 My\Full\Classname 对象
$a = 'Another';
$obj = new $a;      // 实际化一个 Another 对象
?>

另外，导入操作只影响非限定名称和限定名称。完全限定名称由于是确定的，故不受导入的影响。

Example #4 导入和完全限定名称

<?php
use My\Full\Classname as Another, My\Full\NSname;

$obj = new Another; // instantiates object of class My\Full\Classname
$obj = new \Another; // instantiates object of class Another
$obj = new Another\thing; // instantiates object of class My\Full\Classname\thing
$obj = new \Another\thing; // instantiates object of class Another\thing
?>

Scoping rules for importing

The use keyword must be declared in the outermost scope of a file (the global scope) or inside namespace declarations. This is because the importing is done at compile time and not runtime, so it cannot be block scoped. The following example will show an illegal use of the use keyword:

Example #5 Illegal importing rule

<?php
namespace Languages;

class Greenlandic
{
    use Languages\Danish;

    ...
}
?>

Note:

Importing rules are per file basis, meaning included files will NOT inherit the parent file's importing rules.

namespace关键字和__NAMESPACE__常量
全局空间
命名空间


全局空间

(PHP 5 >= 5.3.0, PHP 7)

如果没有定义任何命名空间，所有的类与函数的定义都是在全局空间，与 PHP 引入命名空间概念前一样。在名称前加上前缀 \ 表示该名称是全局空间中的名称，即使该名称位于其它的命名空间中时也是如此。

Example #1 使用全局空间说明

<?php
namespace A\B\C;

/* 这个函数是 A\B\C\fopen */
function fopen() {
     /* ... */
     $f = \fopen(...); // 调用全局的fopen函数
     return $f;
}
?>

使用命名空间：别名/导入
使用命名空间：后备全局函数/常量
命名空间


使用命名空间：后备全局函数/常量

(PHP 5 >= 5.3.0, PHP 7)

在一个命名空间中，当 PHP 遇到一个非限定的类、函数或常量名称时，它使用不同的优先策略来解析该名称。类名称总是解析到当前命名空间中的名称。因此在访问系统内部或不包含在命名空间中的类名称时，必须使用完全限定名称，例如：

Example #1 在命名空间中访问全局类

<?php
namespace A\B\C;
class Exception extends \Exception {}

$a = new Exception('hi'); // $a 是类 A\B\C\Exception 的一个对象
$b = new \Exception('hi'); // $b 是类 Exception 的一个对象

$c = new ArrayObject; // 致命错误, 找不到 A\B\C\ArrayObject 类
?>

对于函数和常量来说，如果当前命名空间中不存在该函数或常量，PHP 会退而使用全局空间中的函数或常量。 For functions and constants, PHP will fall back to global functions or constants if a namespaced function or constant does not exist.

Example #2 命名空间中后备的全局函数/常量

<?php
namespace A\B\C;

const E_ERROR = 45;
function strlen($str)
{
    return \strlen($str) - 1;
}

echo E_ERROR, "\n"; // 输出 "45"
echo INI_ALL, "\n"; // 输出 "7" - 使用全局常量 INI_ALL

echo strlen('hi'), "\n"; // 输出 "1"
if (is_array('hi')) { // 输出 "is not array"
    echo "is array\n";
} else {
    echo "is not array\n";
}
?>

全局空间
名称解析规则
命名空间


名称解析规则

(PHP 5 >= 5.3.0, PHP 7)

在说明名称解析规则之前，我们先看一些重要的定义：

命名空间名称定义
非限定名称Unqualified name

名称中不包含命名空间分隔符的标识符，例如 Foo

限定名称Qualified name

名称中含有命名空间分隔符的标识符，例如 Foo\Bar

完全限定名称Fully qualified name

名称中包含命名空间分隔符，并以命名空间分隔符开始的标识符，例如 \Foo\Bar。 namespace\Foo 也是一个完全限定名称。

名称解析遵循下列规则：

  1. 对完全限定名称的函数，类和常量的调用在编译时解析。例如 new \A\B 解析为类 A\B。
  2. 所有的非限定名称和限定名称（非完全限定名称）根据当前的导入规则在编译时进行转换。例如，如果命名空间 A\B\C 被导入为 C，那么对 C\D\e() 的调用就会被转换为 A\B\C\D\e()。
  3. 在命名空间内部，所有的没有根据导入规则转换的限定名称均会在其前面加上当前的命名空间名称。例如，在命名空间 A\B 内部调用 C\D\e()，则 C\D\e() 会被转换为 A\B\C\D\e() 。
  4. 非限定类名根据当前的导入规则在编译时转换（用全名代替短的导入名称）。例如，如果命名空间 A\B\C 导入为C，则 new C() 被转换为 new A\B\C() 。
  5. 在命名空间内部（例如A\B），对非限定名称的函数调用是在运行时解析的。例如对函数 foo() 的调用是这样解析的：
    1. 在当前命名空间中查找名为 A\B\foo() 的函数
    2. 尝试查找并调用 全局(global) 空间中的函数 foo()。
  6. 在命名空间（例如A\B）内部对非限定名称或限定名称类（非完全限定名称）的调用是在运行时解析的。下面是调用 new C() 及 new D\E() 的解析过程： new C()的解析:
    1. 在当前命名空间中查找A\B\C类。
    2. 尝试自动装载类A\B\C。
    new D\E()的解析:
    1. 在类名称前面加上当前命名空间名称变成：A\B\D\E，然后查找该类。
    2. 尝试自动装载类 A\B\D\E。
    为了引用全局命名空间中的全局类，必须使用完全限定名称 new \C()。

Example #1 名称解析示例

<?php
namespace A;
use B\D, C\E as F;

// 函数调用

foo();      // 首先尝试调用定义在命名空间"A"中的函数foo()
            // 再尝试调用全局函数 "foo"

\foo();     // 调用全局空间函数 "foo"

my\foo();   // 调用定义在命名空间"A\my"中函数 "foo"

F();        // 首先尝试调用定义在命名空间"A"中的函数 "F"
            // 再尝试调用全局函数 "F"

// 类引用

new B();    // 创建命名空间 "A" 中定义的类 "B" 的一个对象
            // 如果未找到，则尝试自动装载类 "A\B"

new D();    // 使用导入规则，创建命名空间 "B" 中定义的类 "D" 的一个对象
            // 如果未找到，则尝试自动装载类 "B\D"

new F();    // 使用导入规则，创建命名空间 "C" 中定义的类 "E" 的一个对象
            // 如果未找到，则尝试自动装载类 "C\E"

new \B();   // 创建定义在全局空间中的类 "B" 的一个对象
            // 如果未发现，则尝试自动装载类 "B"

new \D();   // 创建定义在全局空间中的类 "D" 的一个对象
            // 如果未发现，则尝试自动装载类 "D"

new \F();   // 创建定义在全局空间中的类 "F" 的一个对象
            // 如果未发现，则尝试自动装载类 "F"

// 调用另一个命名空间中的静态方法或命名空间函数

B\foo();    // 调用命名空间 "A\B" 中函数 "foo"

B::foo();   // 调用命名空间 "A" 中定义的类 "B" 的 "foo" 方法
            // 如果未找到类 "A\B" ，则尝试自动装载类 "A\B"

D::foo();   // 使用导入规则，调用命名空间 "B" 中定义的类 "D" 的 "foo" 方法
            // 如果类 "B\D" 未找到，则尝试自动装载类 "B\D"

\B\foo();   // 调用命名空间 "B" 中的函数 "foo"

\B::foo();  // 调用全局空间中的类 "B" 的 "foo" 方法
            // 如果类 "B" 未找到，则尝试自动装载类 "B"

// 当前命名空间中的静态方法或函数

A\B::foo();   // 调用命名空间 "A\A" 中定义的类 "B" 的 "foo" 方法
              // 如果类 "A\A\B" 未找到，则尝试自动装载类 "A\A\B"

\A\B::foo();  // 调用命名空间 "A\B" 中定义的类 "B" 的 "foo" 方法
              // 如果类 "A\B" 未找到，则尝试自动装载类 "A\B"
?>
使用命名空间：后备全局函数/常量
FAQ: things you need to know about namespaces
命名空间


FAQ: things you need to know about namespaces

(PHP 5 >= 5.3.0, PHP 7)

This FAQ is split into two sections: common questions, and some specifics of implementation that are helpful to understand fully.

First, the common questions.

  1. If I don't use namespaces, should I care about any of this?
  2. How do I use internal or global classes in a namespace?
  3. How do I use namespaces classes functions, or constants in their own namespace?
  4. How does a name like \my\name or \name resolve?
  5. How does a name like my\name resolve?
  6. How does an unqualified class name like name resolve?
  7. How does an unqualified function name or unqualified constant name like name resolve?

There are a few implementation details of the namespace implementations that are helpful to understand.

  1. Import names cannot conflict with classes defined in the same file.
  2. Nested namespaces are not allowed.
  3. Neither functions nor constants can be imported via the use statement.
  4. Dynamic namespace names (quoted identifiers) should escape backslash.
  5. Undefined Constants referenced using any backslash die with fatal error
  6. Cannot override special constants NULL, TRUE, FALSE, ZEND_THREAD_SAFE or ZEND_DEBUG_BUILD

If I don't use namespaces, should I care about any of this?

No. Namespaces do not affect any existing code in any way, or any as-yet-to-be-written code that does not contain namespaces. You can write this code if you wish:

Example #1 Accessing global classes outside a namespace

<?php
$a = new \stdClass;

This is functionally equivalent to:

Example #2 Accessing global classes outside a namespace

<?php
$a = new stdClass;

How do I use internal or global classes in a namespace?

Example #3 Accessing internal classes in namespaces

<?php
namespace foo;
$a = new \stdClass;

function test(\ArrayObject $typehintexample = null) {}

$a = \DirectoryIterator::CURRENT_AS_FILEINFO;

// extending an internal or global class
class MyException extends \Exception {}
?>

How do I use namespaces classes, functions, or constants in their own namespace?

Example #4 Accessing internal classes, functions or constants in namespaces

<?php
namespace foo;

class MyClass {}

// using a class from the current namespace as a type hint
function test(MyClass $typehintexample = null) {}
// another way to use a class from the current namespace as a type hint
function test(\foo\MyClass $typehintexample = null) {}

// extending a class from the current namespace
class Extended extends MyClass {}

// accessing a global function
$a = \globalfunc();

// accessing a global constant
$b = \INI_ALL;
?>

How does a name like \my\name or \name resolve?

Names that begin with a \ always resolve to what they look like, so \my\name is in fact my\name, and \Exception is Exception.

Example #5 Fully Qualified names

<?php
namespace foo;
$a = new \my\name(); // instantiates "my\name" class
echo \strlen('hi'); // calls function "strlen"
$a = \INI_ALL; // $a is set to the value of constant "INI_ALL"
?>

How does a name like my\name resolve?

Names that contain a backslash but do not begin with a backslash like my\name can be resolved in 2 different ways.

If there is an import statement that aliases another name to my, then the import alias is applied to the my in my\name.

Otherwise, the current namespace name is prepended to my\name.

Example #6 Qualified names

<?php
namespace foo;
use blah\blah as foo;

$a = new my\name(); // instantiates "foo\my\name" class
foo\bar::name(); // calls static method "name" in class "blah\blah\bar"
my\bar(); // calls function "foo\my\bar"
$a = my\BAR; // sets $a to the value of constant "foo\my\BAR"
?>

How does an unqualified class name like name resolve?

Class names that do not contain a backslash like name can be resolved in 2 different ways.

If there is an import statement that aliases another name to name, then the import alias is applied.

Otherwise, the current namespace name is prepended to name.

Example #7 Unqualified class names

<?php
namespace foo;
use blah\blah as foo;

$a = new name(); // instantiates "foo\name" class
foo::name(); // calls static method "name" in class "blah\blah"
?>

How does an unqualified function name or unqualified constant name like name resolve?

Function or constant names that do not contain a backslash like name can be resolved in 2 different ways.

First, the current namespace name is prepended to name.

Finally, if the constant or function name does not exist in the current namespace, a global constant or function name is used if it exists.

Example #8 Unqualified function or constant names

<?php
namespace foo;
use blah\blah as foo;

const FOO = 1;

function my() {}
function foo() {}
function sort(&$a)
{
    sort($a);
    $a = array_flip($a);
    return $a;
}

my(); // calls "foo\my"
$a = strlen('hi'); // calls global function "strlen" because "foo\strlen" does not exist
$arr = array(1,3,2);
$b = sort($arr); // calls function "foo\sort"
$c = foo(); // calls function "foo\foo" - import is not applied

$a = FOO; // sets $a to value of constant "foo\FOO" - import is not applied
$b = INI_ALL; // sets $b to value of global constant "INI_ALL"
?>

Import names cannot conflict with classes defined in the same file.

The following script combinations are legal:

file1.php

<?php
namespace my\stuff;
class MyClass {}
?>

another.php

<?php
namespace another;
class thing {}
?>

file2.php

<?php
namespace my\stuff;
include 'file1.php';
include 'another.php';

use another\thing as MyClass;
$a = new MyClass; // instantiates class "thing" from namespace another
?>

There is no name conflict, even though the class MyClass exists within the my\stuff namespace, because the MyClass definition is in a separate file. However, the next example causes a fatal error on name conflict because MyClass is defined in the same file as the use statement.

<?php
namespace my\stuff;
use another\thing as MyClass;
class MyClass {} // fatal error: MyClass conflicts with import statement
$a = new MyClass;
?>

Nested namespaces are not allowed.

PHP does not allow nesting namespaces

<?php
namespace my\stuff {
    namespace nested {
        class foo {}
    }
}
?>
However, it is easy to simulate nested namespaces like so:
<?php
namespace my\stuff\nested {
    class foo {}
}
?>

Neither functions nor constants can be imported via the use statement.

The only elements that are affected by use statements are namespaces and class names. In order to shorten a long constant or function, import its containing namespace

<?php
namespace mine;
use ultra\long\ns\name;

$a = name\CONSTANT;
name\func();
?>

Dynamic namespace names (quoted identifiers) should escape backslash

It is very important to realize that because the backslash is used as an escape character within strings, it should always be doubled when used inside a string. Otherwise there is a risk of unintended consequences:

Example #9 Dangers of using namespaced names inside a double-quoted string

<?php
$a = new "dangerous\name"; // \n is a newline inside double quoted strings!
$obj = new $a;

$a = new 'not\at\all\dangerous'; // no problems here.
$obj = new $a;
?>
Inside a single-quoted string, the backslash escape sequence is much safer to use, but it is still recommended practice to escape backslashes in all strings as a best practice.

Undefined Constants referenced using any backslash die with fatal error

Any undefined constant that is unqualified like FOO will produce a notice explaining that PHP assumed FOO was the value of the constant. Any constant, qualified or fully qualified, that contains a backslash will produce a fatal error if not found.

Example #10 Undefined constants

<?php
namespace bar;
$a = FOO; // produces notice - undefined constants "FOO" assumed "FOO";
$a = \FOO; // fatal error, undefined namespace constant FOO
$a = Bar\FOO; // fatal error, undefined namespace constant bar\Bar\FOO
$a = \Bar\FOO; // fatal error, undefined namespace constant Bar\FOO
?>

Cannot override special constants NULL, TRUE, FALSE, ZEND_THREAD_SAFE or ZEND_DEBUG_BUILD

Any attempt to define a namespaced constant that is a special, built-in constant results in a fatal error

Example #11 Undefined constants

<?php
namespace bar;
const NULL = 0; // fatal error;
const true = 'stupid'; // also fatal error;
// etc.
?>

名称解析规则
Errors
命名空间


Errors

Table of Contents

  • Basics
  • PHP 7 错误处理

Introduction

Sadly, no matter how careful we are when writing our code, errors are a fact of life. PHP will report errors, warnings and notices for many common coding and runtime problems, and knowing how to detect and handle these errors will make debugging much easier.

FAQ: things you need to know about namespaces
Basics
语言参考


Basics

PHP reports errors in response to a number of internal error conditions. These may be used to signal a number of different conditions, and can be displayed and/or logged as required.

Every error that PHP generates includes a type. A list of these types is available, along with a short description of their behaviour and how they can be caused.

Handling errors with PHP

If no error handler is set, then PHP will handle any errors that occur according to its configuration. Which errors are reported and which are ignored is controlled by the error_reporting php.ini directive, or at runtime by calling error_reporting(). It is strongly recommended that the configuration directive be set, however, as some errors can occur before execution of your script begins.

In a development environment, you should always set error_reporting to E_ALL, as you need to be aware of and fix the issues raised by PHP. In production, you may wish to set this to a less verbose level such as E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED, but in many cases E_ALL is also appropriate, as it may provide early warning of potential issues.

What PHP does with these errors depends on two further php.ini directives. display_errors controls whether the error is shown as part of the script's output. This should always be disabled in a production environment, as it can include confidential information such as database passwords, but is often useful to enable in development, as it ensures immediate reporting of issues.

In addition to displaying errors, PHP can log errors when the log_errors directive is enabled. This will log any errors to the file or syslog defined by error_log. This can be extremely useful in a production environment, as you can log errors that occur and then generate reports based on those errors.

User error handlers

If PHP's default error handling is inadequate, you can also handle many types of error with your own custom error handler by installing it with set_error_handler(). While some error types cannot be handled this way, those that can be handled can then be handled in the way that your script sees fit: for example, this can be used to show a custom error page to the user and then report more directly than via a log, such as by sending an e-mail.

Errors
PHP 7 错误处理
Errors


PHP 7 错误处理

PHP 7 改变了大多数错误的报告方式。不同于传统（PHP 5）的错误报告机制，现在大多数错误被作为 Error 异常抛出。

这种 Error 异常可以像 Exception 异常一样被第一个匹配的 try / catch 块所捕获。如果没有匹配的 catch 块，则调用异常处理函数（事先通过 set_exception_handler() 注册）进行处理。 如果尚未注册异常处理函数，则按照传统方式处理：被报告为一个致命错误（Fatal Error）。

Error 类并非继承自 Exception 类，所以不能用 catch (Exception $e) { ... } 来捕获 Error。你可以用 catch (Error $e) { ... }，或者通过注册异常处理函数（ set_exception_handler()）来捕获 Error。

Error 层次结构

  • Throwable
    • Error
      • ArithmeticError
        • DivisionByZeroError
      • AssertionError
      • ParseError
      • TypeError
    • Exception
      • ...
Basics
异常处理
Errors


异常处理

Table of Contents

  • 扩展（extend） PHP 内置的异常处理类

PHP 5 has an exception model similar to that of other programming languages. An exception can be thrown, and caught ("catched") within PHP. Code may be surrounded in a try block, to facilitate the catching of potential exceptions. Each try must have at least one corresponding catch or finally block.

The thrown object must be an instance of the Exception class or a subclass of Exception. Trying to throw an object that is not will result in a PHP Fatal Error.

catch

Multiple catch blocks can be used to catch different classes of exceptions. Normal execution (when no exception is thrown within the try block) will continue after that last catch block defined in sequence. Exceptions can be thrown (or re-thrown) within a catch block.

When an exception is thrown, code following the statement will not be executed, and PHP will attempt to find the first matching catch block. If an exception is not caught, a PHP Fatal Error will be issued with an "Uncaught Exception ..." message, unless a handler has been defined with set_exception_handler().

finally

In PHP 5.5 and later, a finally block may also be specified after or instead of catch blocks. Code within the finally block will always be executed after the try and catch blocks, regardless of whether an exception has been thrown, and before normal execution resumes.

注释

Note:

Internal PHP functions mainly use Error reporting, only modern Object oriented extensions use exceptions. However, errors can be simply translated to exceptions with ErrorException.

Tip

The Standard PHP Library (SPL) provides a good number of built-in exceptions.

范例

Example #3 Throwing an Exception

<?php
function inverse($x) {
    if (!$x) {
        throw new Exception('Division by zero.');
    }
    return 1/$x;
}

try {
    echo inverse(5) . "\n";
    echo inverse(0) . "\n";
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

// Continue execution
echo "Hello World\n";
?>

以上例程会输出：

0.2
Caught exception: Division by zero.
Hello World

Example #4 Exception handling with a finally block

<?php
function inverse($x) {
    if (!$x) {
        throw new Exception('Division by zero.');
    }
    return 1/$x;
}

try {
    echo inverse(5) . "\n";
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
} finally {
    echo "First finally.\n";
}

try {
    echo inverse(0) . "\n";
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
} finally {
    echo "Second finally.\n";
}

// Continue execution
echo "Hello World\n";
?>

以上例程会输出：

0.2
First finally.
Caught exception: Division by zero.
Second finally.
Hello World

Example #5 Nested Exception

<?php

class MyException extends Exception { }

class Test {
    public function testing() {
        try {
            try {
                throw new MyException('foo!');
            } catch (MyException $e) {
                // rethrow it
                throw $e;
            }
        } catch (Exception $e) {
            var_dump($e->getMessage());
        }
    }
}

$foo = new Test;
$foo->testing();

?>

以上例程会输出：

string(4) "foo!"
PHP 7 错误处理
扩展（extend） PHP 内置的异常处理类
语言参考


扩展（extend） PHP 内置的异常处理类

用户可以用自定义的异常处理类来扩展 PHP 内置的异常处理类。以下的代码说明了在内置的异常处理类中，哪些属性和方法在子类中是可访问和可继承的。译者注：以下这段代码只为说明内置异常处理类的结构，它并不是一段有实际意义的可用代码。

Example #1 内置的异常处理类

<?php
class Exception
{
    protected $message = 'Unknown exception';   // 异常信息
    private   $string;                          // __toString cache
    protected $code = 0;                        // 用户自定义异常代码
    protected $file;                            // 发生异常的文件名
    protected $line;                            // 发生异常的代码行号
    private   $trace;                           // backtrace
    private   $previous;                        // previous exception if nested exception

    public function __construct($message = null, $code = 0, Exception $previous = null);

    final private function __clone();           // Inhibits cloning of exceptions.

    final public  function getMessage();        // 返回异常信息
    final public  function getCode();           // 返回异常代码
    final public  function getFile();           // 返回发生异常的文件名
    final public  function getLine();           // 返回发生异常的代码行号
    final public  function getTrace();          // backtrace() 数组
    final public  function getPrevious();       // 之前的 exception
    final public  function getTraceAsString();  // 已格成化成字符串的 getTrace() 信息

    // Overrideable
    public function __toString();               // 可输出的字符串
}
?>

如果使用自定义的类来扩展内置异常处理类，并且要重新定义构造函数的话，建议同时调用 parent::__construct() 来检查所有的变量是否已被赋值。当对象要输出字符串的时候，可以重载 __toString() 并自定义输出的样式。

Note:

Exception 对象不能被复制。尝试对 Exception 对象复制 会导致一个 E_ERROR 级别的错误。

Example #2 扩展 PHP 内置的异常处理类 (PHP 5.3.0+)

<?php
/**
 * 自定义一个异常处理类
 */
class MyException extends Exception
{
    // 重定义构造器使 message 变为必须被指定的属性
    public function __construct($message, $code = 0, Exception $previous = null) {
        // 自定义的代码

        // 确保所有变量都被正确赋值
        parent::__construct($message, $code, $previous);
    }

    // 自定义字符串输出的样式
    public function __toString() {
        return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
    }

    public function customFunction() {
        echo "A custom function for this type of exception\n";
    }
}

/**
 * 创建一个用于测试异常处理机制的类
 */
class TestException
{
    public $var;

    const THROW_NONE    = 0;
    const THROW_CUSTOM  = 1;
    const THROW_DEFAULT = 2;

    function __construct($avalue = self::THROW_NONE) {

        switch ($avalue) {
            case self::THROW_CUSTOM:
                // 抛出自定义异常
                throw new MyException('1 is an invalid parameter', 5);
                break;

            case self::THROW_DEFAULT:
                // 抛出默认的异常
                throw new Exception('2 is not allowed as a parameter', 6);
                break;

            default:
                // 没有异常的情况下，创建一个对象
                $this->var = $avalue;
                break;
        }
    }
}

// 例子 1
try {
    $o = new TestException(TestException::THROW_CUSTOM);
} catch (MyException $e) {      // 捕获异常
    echo "Caught my exception\n", $e;
    $e->customFunction();
} catch (Exception $e) {        // 被忽略
    echo "Caught Default Exception\n", $e;
}

// Continue execution
var_dump($o); // Null
echo "\n\n";

// 例子 2
try {
    $o = new TestException(TestException::THROW_DEFAULT);
} catch (MyException $e) {      //  不能匹配异常的种类，被忽略

    echo "Caught my exception\n", $e;
    $e->customFunction();
} catch (Exception $e) {        // 捕获异常
    echo "Caught Default Exception\n", $e;
}

// 执行后续代码
var_dump($o); // Null
echo "\n\n";

// 例子 3
try {
    $o = new TestException(TestException::THROW_CUSTOM);
} catch (Exception $e) {        // 捕获异常
    echo "Default Exception caught\n", $e;
}

// 执行后续代码
var_dump($o); // Null
echo "\n\n";

// 例子 4
try {
    $o = new TestException();
} catch (Exception $e) {        // 没有异常，被忽略
    echo "Default Exception caught\n", $e;
}

// 执行后续代码
var_dump($o); // TestException
echo "\n\n";
?>

Note:

Versions of PHP 5, prior to PHP 5.3.0 do not support nesting of exceptions. The following code fragment can be used as a replacement MyException class if you wish to run this example.

<?php
/**
 * Define a custom exception class
 */
class MyException extends Exception
{
    // Redefine the exception so message isn't optional
    public function __construct($message, $code = 0) {
        // some code

        // make sure everything is assigned properly
        parent::__construct($message, $code);
    }

    // custom string representation of object
    public function __toString() {
        return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
    }

    public function customFunction() {
        echo "A custom function for this type of exception\n";
    }
}
?>

异常处理
生成器
异常处理


生成器

Table of Contents

  • 生成器总览
  • 生成器语法
  • Comparing generators with Iterator objects
扩展（extend） PHP 内置的异常处理类
生成器总览
语言参考


生成器总览

(PHP 5 >= 5.5.0, PHP 7)

生成器提供了一种更容易的方法来实现简单的对象迭代，相比较定义类实现 Iterator 接口的方式，性能开销和复杂性大大降低。

生成器允许你在 foreach 代码块中写代码来迭代一组数据而不需要在内存中创建一个数组, 那会使你的内存达到上限，或者会占据可观的处理时间。相反，你可以写一个生成器函数，就像一个普通的自定义函数一样, 和普通函数只返回一次不同的是, 生成器可以根据需要 yield 多次，以便生成需要迭代的值。

一个简单的例子就是使用生成器来重新实现 range() 函数。 标准的 range() 函数需要在内存中生成一个数组包含每一个在它范围内的值，然后返回该数组, 结果就是会产生多个很大的数组。 比如，调用 range(0, 1000000) 将导致内存占用超过 100 MB。

做为一种替代方法, 我们可以实现一个 xrange() 生成器, 只需要足够的内存来创建 Iterator 对象并在内部跟踪生成器的当前状态，这样只需要不到1K字节的内存。

Example #1 将 range() 实现为生成器

<?php
function xrange($start, $limit, $step = 1) {
    if ($start < $limit) {
        if ($step <= 0) {
            throw new LogicException('Step must be +ve');
        }

        for ($i = $start; $i <= $limit; $i += $step) {
            yield $i;
        }
    } else {
        if ($step >= 0) {
            throw new LogicException('Step must be -ve');
        }

        for ($i = $start; $i >= $limit; $i += $step) {
            yield $i;
        }
    }
}

/*
 * 注意下面range()和xrange()输出的结果是一样的。
 */

echo 'Single digit odd numbers from range():  ';
foreach (range(1, 9, 2) as $number) {
    echo "$number ";
}
echo "\n";

echo 'Single digit odd numbers from xrange(): ';
foreach (xrange(1, 9, 2) as $number) {
    echo "$number ";
}
?>

以上例程会输出：

Single digit odd numbers from range():  1 3 5 7 9
Single digit odd numbers from xrange(): 1 3 5 7 9

Generator objects

When a generator function is called for the first time, an object of the internal Generator class is returned. This object implements the Iterator interface in much the same way as a forward-only iterator object would, and provides methods that can be called to manipulate the state of the generator, including sending values to and returning values from it.

生成器
生成器语法
生成器


生成器语法

一个生成器函数看起来像一个普通的函数，不同的是普通函数返回一个值，而一个生成器可以yield生成许多它所需要的值。

当一个生成器被调用的时候，它返回一个可以被遍历的对象.当你遍历这个对象的时候(例如通过一个foreach循环)，PHP 将会在每次需要值的时候调用生成器函数，并在产生一个值之后保存生成器的状态，这样它就可以在需要产生下一个值的时候恢复调用状态。

一旦不再需要产生更多的值，生成器函数可以简单退出，而调用生成器的代码还可以继续执行，就像一个数组已经被遍历完了。

Note:

一个生成器不可以返回值： 这样做会产生一个编译错误。然而return空是一个有效的语法并且它将会终止生成器继续执行。

yield关键字

生成器函数的核心是yield关键字。它最简单的调用形式看起来像一个return申明，不同之处在于普通return会返回值并终止函数的执行，而yield会返回一个值给循环调用此生成器的代码并且只是暂停执行生成器函数。

Example #1 一个简单的生成值的例子

<?php
function gen_one_to_three() {
    for ($i = 1; $i <= 3; $i++) {
        //注意变量$i的值在不同的yield之间是保持传递的。
        yield $i;
    }
}

$generator = gen_one_to_three();
foreach ($generator as $value) {
    echo "$value\n";
}
?>

以上例程会输出：

1
2
3

Note:

在内部会为生成的值配对连续的整型索引，就像一个非关联的数组。

Caution

如果在一个表达式上下文(例如在一个赋值表达式的右侧)中使用yield，你必须使用圆括号把yield申明包围起来。 例如这样是有效的：

$data = (yield $value);

而这样就不合法，并且在PHP5中会产生一个编译错误：

$data = yield $value;

The parenthetical restrictions do not apply in PHP 7.

这个语法可以和生成器对象的Generator::send()方法配合使用。

指定键名来生成值

PHP的数组支持关联键值对数组，生成器也一样支持。所以除了生成简单的值，你也可以在生成值的时候指定键名。

如下所示，生成一个键值对与定义一个关联数组十分相似。

Example #2 生成一个键值对

<?php
/*
 * 下面每一行是用分号分割的字段组合，第一个字段将被用作键名。
 */

$input = <<<'EOF'
1;PHP;Likes dollar signs
2;Python;Likes whitespace
3;Ruby;Likes blocks
EOF;

function input_parser($input) {
    foreach (explode("\n", $input) as $line) {
        $fields = explode(';', $line);
        $id = array_shift($fields);

        yield $id => $fields;
    }
}

foreach (input_parser($input) as $id => $fields) {
    echo "$id:\n";
    echo "    $fields[0]\n";
    echo "    $fields[1]\n";
}
?>

以上例程会输出：

1:
    PHP
    Likes dollar signs
2:
    Python
    Likes whitespace
3:
    Ruby
    Likes blocks
Caution

和之前生成简单值类型一样，在一个表达式上下文中生成键值对也需要使用圆括号进行包围：

$data = (yield $key => $value);

生成null值

Yield可以在没有参数传入的情况下被调用来生成一个 NULL值并配对一个自动的键名。

Example #3 生成NULLs

<?php
function gen_three_nulls() {
    foreach (range(1, 3) as $i) {
        yield;
    }
}

var_dump(iterator_to_array(gen_three_nulls()));
?>

以上例程会输出：

array(3) {
  [0]=>
  NULL
  [1]=>
  NULL
  [2]=>
  NULL
}

使用引用来生成值

生成函数可以像使用值一样来使用引用生成。这个和returning references from functions（从函数返回一个引用）一样：通过在函数名前面加一个引用符号。

Example #4 使用引用来生成值

<?php
function &gen_reference() {
    $value = 3;

    while ($value > 0) {
        yield $value;
    }
}

/*
 * 我们可以在循环中修改$number的值，而生成器是使用的引用值来生成，所以gen_reference()内部的$value值也会跟着变化。
 */
foreach (gen_reference() as &$number) {
    echo (--$number).'... ';
}
?>

以上例程会输出：

2... 1... 0...

Generator delegation via yield from

In PHP 7, generator delegation allows you to yield values from another generator, Traversable object, or array by using the yield from keyword. The outer generator will then yield all values from the inner generator, object, or array until that is no longer valid, after which execution will continue in the outer generator.

If a generator is used with yield from, the yield from expression will also return any value returned by the inner generator.

Example #5 Basic use of yield from

<?php
function count_to_ten() {
    yield 1;
    yield 2;
    yield from [3, 4];
    yield from new ArrayIterator([5, 6]);
    yield from seven_eight();
    yield 9;
    yield 10;
}

function seven_eight() {
    yield 7;
    yield from eight();
}

function eight() {
    yield 8;
}

foreach (count_to_ten() as $num) {
    echo "$num ";
}
?>

以上例程会输出：

1 2 3 4 5 6 7 8 9 10

Example #6 yield from and return values

<?php
function count_to_ten() {
    yield 1;
    yield 2;
    yield from [3, 4];
    yield from new ArrayIterator([5, 6]);
    yield from seven_eight();
    return yield from nine_ten();
}

function seven_eight() {
    yield 7;
    yield from eight();
}

function eight() {
    yield 8;
}

function nine_ten() {
    yield 9;
    return 10;
}

$gen = count_to_ten();
foreach ($gen as $num) {
    echo "$num ";
}
echo $gen->getReturn();
?>

以上例程会输出：

1 2 3 4 5 6 7 8 9 10
生成器总览
Comparing generators with Iterator objects
生成器


Comparing generators with Iterator objects

The primary advantage of generators is their simplicity. Much less boilerplate code has to be written compared to implementing an Iterator class, and the code is generally much more readable. For example, the following function and class are equivalent:

<?php
function getLinesFromFile($fileName) {
    if (!$fileHandle = fopen($fileName, 'r')) {
        return;
    }

    while (false !== $line = fgets($fileHandle)) {
        yield $line;
    }

    fclose($fileHandle);
}

// versus...

class LineIterator implements Iterator {
    protected $fileHandle;

    protected $line;
    protected $i;

    public function __construct($fileName) {
        if (!$this->fileHandle = fopen($fileName, 'r')) {
            throw new RuntimeException('Couldn\'t open file "' . $fileName . '"');
        }
    }

    public function rewind() {
        fseek($this->fileHandle, 0);
        $this->line = fgets($this->fileHandle);
        $this->i = 0;
    }

    public function valid() {
        return false !== $this->line;
    }

    public function current() {
        return $this->line;
    }

    public function key() {
        return $this->i;
    }

    public function next() {
        if (false !== $this->line) {
            $this->line = fgets($this->fileHandle);
            $this->i++;
        }
    }

    public function __destruct() {
        fclose($this->fileHandle);
    }
}
?>

This flexibility does come at a cost, however: generators are forward-only iterators, and cannot be rewound once iteration has started. This also means that the same generator can't be iterated over multiple times: the generator will need to either be rebuilt by calling the generator function again, or cloned via the clone keyword.

生成器语法
引用的解释
生成器


引用的解释

Table of Contents

  • 引用是什么
  • 引用做什么
  • 引用不是什么
  • 引用传递
  • 引用返回
  • 取消引用
  • 引用定位
Comparing generators with Iterator objects
引用是什么
语言参考


引用是什么

在 PHP 中引用意味着用不同的名字访问同一个变量内容。这并不像 C 的指针：例如你不能对他们做指针运算，他们并不是实际的内存地址...... 查看引用不是什么了解更多信息。 替代的是，引用是符号表别名。注意在PHP 中，变量名和变量内容是不一样的， 因此同样的内容可以有不同的名字。最接近的比喻是 Unix 的文件名和文件本身——变量名是目录条目，而变量内容则是文件本身。引用可以被看作是 Unix 文件系统中的硬链接。

引用的解释
引用做什么
引用的解释


引用做什么

PHP 的引用允许用两个变量来指向同一个内容。意思是，当这样做时：

<?php
$a =& $b;
?>
这意味着 $a 和 $b 指向了同一个变量。

Note:

$a 和 $b 在这里是完全相同的，这并不是 $a 指向了 $b 或者相反，而是 $a 和 $b 指向了同一个地方。

Note:

如果具有引用的数组被拷贝，其值不会解除引用。对于数组传值给函数也是如此。

Note:

如果对一个未定义的变量进行引用赋值、引用参数传递或引用返回，则会自动创建该变量。

Example #1 对未定义的变量使用引用

<?php
function foo(&$var) { }

foo($a); // $a is "created" and assigned to null

$b = array();
foo($b['b']);
var_dump(array_key_exists('b', $b)); // bool(true)

$c = new StdClass;
foo($c->d);
var_dump(property_exists($c, 'd')); // bool(true)
?>

同样的语法可以用在函数中，它返回引用，以及用在 new 运算符中（PHP 4.0.4 以及以后版本）：

<?php
$bar =& new fooclass();
$foo =& find_var($bar);
?>
自 PHP 5 起，new 自动返回引用，因此在此使用 =& 已经过时了并且会产生 E_STRICT 级别的消息。

Note:

不用 & 运算符导致对象生成了一个拷贝。如果在类中用 $this，它将作用于该类当前的实例。没有用 & 的赋值将拷贝这个实例（例如对象）并且 $this 将作用于这个拷贝上，这并不总是想要的结果。由于性能和内存消耗的问题，通常只想工作在一个实例上面。

尽管可以用 @ 运算符来抑制构造函数中的任何错误信息，例如用 @new，但用 &new 语句时这不起效果。这是 Zend 引擎的一个限制并且会导致一个解析错误。

Warning

如果在一个函数内部给一个声明为 global 的变量赋于一个引用，该引用只在函数内部可见。可以通过使用 $GLOBALS 数组避免这一点。

Example #2 在函数内引用全局变量

<?php
$var1 = "Example variable";
$var2 = "";

function global_references($use_globals)
{
    global $var1, $var2;
    if (!$use_globals) {
        $var2 =& $var1; // visible only inside the function
    } else {
        $GLOBALS["var2"] =& $var1; // visible also in global context
    }
}

global_references(false);
echo "var2 is set to '$var2'\n"; // var2 is set to ''
global_references(true);
echo "var2 is set to '$var2'\n"; // var2 is set to 'Example variable'
?>
把 global $var; 当成是 $var =& $GLOBALS['var']; 的简写。从而将其它引用赋给 $var 只改变了本地变量的引用。

Note:

如果在 foreach 语句中给一个具有引用的变量赋值，被引用的对象也被改变。

Example #3 引用与 foreach 语句

<?php
$ref = 0;
$row =& $ref;
foreach (array(1, 2, 3) as $row) {
    // do something
}
echo $ref; // 3 - last element of the iterated array
?>

引用做的第二件事是用引用传递变量。这是通过在函数内建立一个本地变量并且该变量在呼叫范围内引用了同一个内容来实现的。例如：

<?php
function foo(&$var)
{
    $var++;
}

$a=5;
foo($a);
?>
将使 $a 变成 6。这是因为在 foo 函数中变量 $var 指向了和 $a 指向的同一个内容。更多详细解释见引用传递。

引用做的第三件事是引用返回。

引用是什么
引用不是什么
引用的解释


引用不是什么

如前所述，引用不是指针。这意味着下面的结构不会产生预期的效果：

<?php
function foo(&$var)
{
    $var =& $GLOBALS["baz"];
}
foo($bar);
?>

这将使 foo 函数中的 $var 变量在函数调用时和 $bar 绑定在一起，但接着又被重新绑定到了 $GLOBALS["baz"] 上面。不可能通过引用机制将 $bar 在函数调用范围内绑定到别的变量上面，因为在函数 foo 中并没有变量 $bar（它被表示为 $var，但是 $var 只有变量内容而没有调用符号表中的名字到值的绑定）。可以使用引用返回来引用被函数选择的变量。

引用做什么
引用传递
引用的解释


引用传递

可以将一个变量通过引用传递给函数，这样该函数就可以修改其参数的值。语法如下：

<?php
function foo(&$var)
{
    $var++;
}

$a=5;
foo($a);
// $a is 6 here
?>
注意在函数调用时没有引用符号——只有函数定义中有。光是函数定义就足够使参数通过引用来正确传递了。在最近版本的 PHP 中如果把 & 用在 foo(&$a); 中会得到一条警告说"Call-time pass-by-reference"已经过时了。

以下内容可以通过引用传递：

  • 变量，例如 foo($a)
  • New 语句，例如 foo(new foobar())

  • 从函数中返回的引用，例如：

    <?php
    function &bar()
    {
            $a = 5;
        return     $a;
    }
    foo(bar());
    ?>
    详细解释见引用返回。

任何其它表达式都不能通过引用传递，结果未定义。例如下面引用传递的例子是无效的：

<?php
function foo(&$var)
{
    $var++;
}
function bar() // Note the missing &
{
    $a = 5;
    return $a;
}
foo(bar()); // 自 PHP 5.0.5 起导致致命错误，自 PHP 5.1.1 起导致严格模式错误
            // 自 PHP 7.0 起导致 notice 信息
foo($a = 5) // 表达式，不是变量
foo(5) // 导致致命错误
?>
这些条件是 PHP 4.0.4 以及以后版本有的。

引用不是什么
引用返回
引用的解释


引用返回

引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时。不要用返回引用来增加性能，引擎足够聪明来自己进行优化。仅在有合理的技术原因时才返回引用！要返回引用，使用此语法：

<?php
class foo {
    public $value = 42;

    public function &getValue() {
        return $this->value;
    }
}

$obj = new foo;
$myValue = &$obj->getValue(); // $myValue is a reference to $obj->value, which is 42.
$obj->value = 2;
echo $myValue;                // prints the new value of $obj->value, i.e. 2.
?>
本例中 getValue 函数所返回的对象的属性将被赋值，而不是拷贝，就和没有用引用语法一样。

Note: 和参数传递不同，这里必须在两个地方都用 & 符号——指出返回的是一个引用，而不是通常的一个拷贝，同样也指出 $myValue 是作为引用的绑定，而不是通常的赋值。

Note: 如果试图这样从函数返回引用：return ($this->value);，这将不会起作用，因为在试图返回一个表达式的结果而不是一个引用的变量。只能从函数返回引用变量——没别的方法。如果代码试图返回一个动态表达式或 new 运算符的结果，自 PHP 4.4.0 和 PHP 5.1.0 起会发出一条 E_NOTICE 错误。

引用传递
取消引用
引用的解释


取消引用

当 unset 一个引用，只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了。例如：

<?php
$a = 1;
$b =& $a;
unset($a);
?>
不会 unset $b，只是 $a。

再拿这个和 Unix 的 unlink 调用来类比一下可能有助于理解。

引用返回
引用定位
引用的解释


引用定位

许多 PHP 的语法结构是通过引用机制实现的，所以上述有关引用绑定的一切也都适用于这些结构。一些结构，例如引用传递和返回，已经在上面提到了。其它使用引用的结构有：

global 引用

当用 global $var 声明一个变量时实际上建立了一个到全局变量的引用。也就是说和这样做是相同的：

<?php
$var =& $GLOBALS["var"];
?>

这意味着，例如，unset $var 不会 unset 全局变量。

$this

在一个对象的方法中，$this 永远是调用它的对象的引用。

取消引用
预定义变量
引用的解释


预定义变量

对于全部脚本而言，PHP 提供了大量的预定义变量。这些变量将所有的外部变量表示成内建环境变量，并且将错误信息表示成返回头。

参见 FAQ "register_globals 对我有什么影响？"

Table of Contents

  • 超全局变量 — 超全局变量是在全部作用域中始终可用的内置变量
  • $GLOBALS — 引用全局作用域中可用的全部变量
  • $_SERVER — 服务器和执行环境信息
  • $_GET — HTTP GET 变量
  • $_POST — HTTP POST 变量
  • $_FILES — HTTP 文件上传变量
  • $_REQUEST — HTTP Request 变量
  • $_SESSION — Session 变量
  • $_ENV — 环境变量
  • $_COOKIE — HTTP Cookies
  • $php_errormsg — 前一个错误信息
  • $HTTP_RAW_POST_DATA — 原生POST数据
  • $http_response_header — HTTP 响应头
  • $argc — 传递给脚本的参数数目
  • $argv — 传递给脚本的参数数组
引用定位
超全局变量
语言参考


超全局变量是在全部作用域中始终可用的内置变量

预定义变量
$GLOBALS
预定义变量
PHP Manual

超全局变量

超全局变量 — 超全局变量是在全部作用域中始终可用的内置变量

说明

PHP 中的许多预定义变量都是"超全局的"，这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。

这些超全局变量是：

  • $GLOBALS
  • $_SERVER
  • $_GET
  • $_POST
  • $_FILES
  • $_COOKIE
  • $_SESSION
  • $_REQUEST
  • $_ENV

更新日志

版本 | 说明
4.1.0 | 超全局变量被引入到 PHP.

注释

Note: 变量可用性

默认情况下，所有的超全局变量都是可用的。但是，有一些指令会影响这种可用性。更多信息，参见文档 variables_order.

Note: 处理 register_globals

如果已经弃用的 register_globals 指令被设置为 on 那么局部变量也将在脚本的全局作用域中可用。例如， $_POST['foo'] 也将以 $foo 的形式存在。

相关信息，参见 FAQ "register_globals 对我有什么影响？"

Note: 可变变量

在函数或类方法中，超全局变量不能被用作可变变量。

参见

  • 变量作用域
  • variables_order 指令
  • 过滤器扩展

预定义变量
$GLOBALS
预定义变量


引用全局作用域中可用的全部变量

超全局变量
$_SERVER
预定义变量
PHP Manual

$GLOBALS

$GLOBALS — 引用全局作用域中可用的全部变量

说明

一个包含了全部变量的全局组合数组。变量的名字就是数组的键。

范例

Example #1 $GLOBALS 范例

<?php
function test() {
    $foo = "local variable";

    echo '$foo in global scope: ' . $GLOBALS["foo"] . "\n";
    echo '$foo in current scope: ' . $foo . "\n";
}

$foo = "Example content";
test();
?>

以上例程的输出类似于：

$foo in global scope: Example content
$foo in current scope: local variable

注释

Note:

"Superglobal"也称为自动化的全局变量。这就表示其在脚本的所有作用域中都是可用的。不需要在函数或方法中用 global $variable; 来访问它。

Note: 变量可用性

与所有其他超全局变量不同，$GLOBALS在PHP中总是可用的。

超全局变量
$_SERVER
预定义变量


服务器和执行环境信息

$GLOBALS
$_GET
预定义变量
PHP Manual

$_SERVER

$HTTP_SERVER_VARS [已弃用]

$_SERVER -- $HTTP_SERVER_VARS [已弃用] — 服务器和执行环境信息

说明

$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目；服务器可能会忽略一些，或者提供一些没有在这里列举出来的项目。这也就意味着大量的此类变量都会在» CGI 1.1 规范中说明，所以应该仔细研究一下。

$HTTP_SERVER_VARS 包含着相同的信息，但它不是一个超全局变量。 (注意 $HTTP_SERVER_VARS 与 $_SERVER 是不同的变量，PHP处理它们的方式不同)

目录

在 $_SERVER 中，你也许能够，也许不能够找到下面的这些元素。注意，如果以命令行方式运行 PHP，下面列出的元素几乎没有有效的(或是没有任何实际意义的)。

'PHP_SELF'
当前执行脚本的文件名，与 document root 有关。例如，在地址为 http://example.com/test.php/foo.bar 的脚本中使用 $_SERVER['PHP_SELF'] 将得到 /test.php/foo.bar。__FILE__ 常量包含当前(例如包含)文件的完整路径和文件名。 从 PHP 4.3.0 版本开始，如果 PHP 以命令行模式运行，这个变量将包含脚本名。之前的版本该变量不可用。
'argv'
传递给该脚本的参数的数组。当脚本以命令行方式运行时，argv 变量传递给程序 C 语言样式的命令行参数。当通过 GET 方式调用时，该变量包含query string。
'argc'
包含命令行模式下传递给该脚本的参数的数目(如果运行在命令行模式下)。
'GATEWAY_INTERFACE'
服务器使用的 CGI 规范的版本；例如，"CGI/1.1"。
'SERVER_ADDR'
当前运行脚本所在的服务器的 IP 地址。
'SERVER_NAME'
当前运行脚本所在的服务器的主机名。如果脚本运行于虚拟主机中，该名称是由那个虚拟主机所设置的值决定。
'SERVER_SOFTWARE'
服务器标识字符串，在响应请求时的头信息中给出。
'SERVER_PROTOCOL'
请求页面时通信协议的名称和版本。例如，"HTTP/1.0"。
'REQUEST_METHOD'
访问页面使用的请求方法；例如，"GET", "HEAD"，"POST"，"PUT"。

Note:

如果请求方法为 HEAD，PHP 脚本将在发送 Header 头信息之后终止(这意味着在产生任何输出后，不再有输出缓冲)。

'REQUEST_TIME'
请求开始时的时间戳。从 PHP 5.1.0 起可用。
'REQUEST_TIME_FLOAT'
请求开始时的时间戳，微秒级别的精准度。 自 PHP 5.4.0 开始生效。
'QUERY_STRING'
query string（查询字符串），如果有的话，通过它进行页面访问。
'DOCUMENT_ROOT'
当前运行脚本所在的文档根目录。在服务器配置文件中定义。
'HTTP_ACCEPT'
当前请求头中 Accept: 项的内容，如果存在的话。
'HTTP_ACCEPT_CHARSET'
当前请求头中 Accept-Charset: 项的内容，如果存在的话。例如："iso-8859-1,*,utf-8"。
'HTTP_ACCEPT_ENCODING'
当前请求头中 Accept-Encoding: 项的内容，如果存在的话。例如："gzip"。
'HTTP_ACCEPT_LANGUAGE'
当前请求头中 Accept-Language: 项的内容，如果存在的话。例如："en"。
'HTTP_CONNECTION'
当前请求头中 Connection: 项的内容，如果存在的话。例如："Keep-Alive"。
'HTTP_HOST'
当前请求头中 Host: 项的内容，如果存在的话。
'HTTP_REFERER'
引导用户代理到当前页的前一页的地址（如果存在）。由 user agent 设置决定。并不是所有的用户代理都会设置该项，有的还提供了修改 HTTP_REFERER 的功能。简言之，该值并不可信。
'HTTP_USER_AGENT'
当前请求头中 User-Agent: 项的内容，如果存在的话。该字符串表明了访问该页面的用户代理的信息。一个典型的例子是：Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)。除此之外，你可以通过 get_browser() 来使用该值，从而定制页面输出以便适应用户代理的性能。
'HTTPS'
如果脚本是通过 HTTPS 协议被访问，则被设为一个非空的值。

Note: 注意当使用 IIS 上的 ISAPI 方式时，如果不是通过 HTTPS 协议被访问，这个值将为 off。

'REMOTE_ADDR'
浏览当前页面的用户的 IP 地址。
'REMOTE_HOST'
浏览当前页面的用户的主机名。DNS 反向解析不依赖于用户的 REMOTE_ADDR。

Note: 你的服务器必须被配置以便产生这个变量。例如在 Apache 中，你需要在 httpd.conf 中设置 HostnameLookups On 来产生它。参见 gethostbyaddr()。

'REMOTE_PORT'
用户机器上连接到 Web 服务器所使用的端口号。
'REMOTE_USER'
经验证的用户
'REDIRECT_REMOTE_USER'
验证的用户，如果请求已在内部重定向。
'SCRIPT_FILENAME'

当前执行脚本的绝对路径。

Note:

如果在命令行界面（Command Line Interface, CLI）使用相对路径执行脚本，例如 file.php 或 ../file.php，那么 $_SERVER['SCRIPT_FILENAME'] 将包含用户指定的相对路径。

'SERVER_ADMIN'
该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。如果脚本运行在一个虚拟主机上，则该值是那个虚拟主机的值。
'SERVER_PORT'
Web 服务器使用的端口。默认值为 "80"。如果使用 SSL 安全连接，则这个值为用户设置的 HTTP 端口。
'SERVER_SIGNATURE'
包含了服务器版本和虚拟主机名的字符串。
'PATH_TRANSLATED'
当前脚本所在文件系统（非文档根目录）的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。

Note: 自 PHP 4.3.2 起，PATH_TRANSLATED 在 Apache 2 SAPI 模式下不再和 Apache 1 一样隐含赋值，而是若 Apache 不生成此值，PHP 便自己生成并将其值放入 SCRIPT_FILENAME 服务器常量中。这个修改遵守了 CGI 规范，PATH_TRANSLATED 仅在 PATH_INFO 被定义的条件下才存在。 Apache 2 用户可以在 httpd.conf 中设置 AcceptPathInfo = On 来定义 PATH_INFO。

'SCRIPT_NAME'
包含当前脚本的路径。这在页面需要指向自己时非常有用。__FILE__ 常量包含当前脚本(例如包含文件)的完整路径和文件名。
'REQUEST_URI'
URI 用来指定要访问的页面。例如 "/index.html"。
'PHP_AUTH_DIGEST'
当作为 Apache 模块运行时，进行 HTTP Digest 认证的过程中，此变量被设置成客户端发送的"Authorization" HTTP 头内容（以便作进一步的认证操作）。
'PHP_AUTH_USER'
当 PHP 运行在 Apache 或 IIS（PHP 5 是 ISAPI）模块方式下，并且正在使用 HTTP 认证功能，这个变量便是用户输入的用户名。
'PHP_AUTH_PW'
当 PHP 运行在 Apache 或 IIS（PHP 5 是 ISAPI）模块方式下，并且正在使用 HTTP 认证功能，这个变量便是用户输入的密码。
'AUTH_TYPE'
当 PHP 运行在 Apache 模块方式下，并且正在使用 HTTP 认证功能，这个变量便是认证的类型。
'PATH_INFO'
包含由客户端提供的、跟在真实脚本名称之后并且在查询语句（query string）之前的路径信息，如果存在的话。例如，如果当前脚本是通过 URL http://www.example.com/php/path_info.php/some/stuff?foo=bar 被访问，那么 $_SERVER['PATH_INFO'] 将包含 /some/stuff。
'ORIG_PATH_INFO'
在被 PHP 处理之前，"PATH_INFO" 的原始版本。

更新日志

版本 | 说明
4.1.0 | 引入 $_SERVER，弃用 $HTTP_SERVER_VARS。

范例

Example #1 $_SERVER 范例

<?php
echo $_SERVER['SERVER_NAME'];
?>

以上例程的输出类似于：

www.example.com

注释

Note:

"Superglobal"也称为自动化的全局变量。这就表示其在脚本的所有作用域中都是可用的。不需要在函数或方法中用 global $variable; 来访问它。

参见

  • 过滤器扩展

$GLOBALS
$_GET
预定义变量


HTTP GET 变量

$_SERVER
$_POST
预定义变量
PHP Manual

$_GET

$HTTP_GET_VARS [已弃用]

$_GET -- $HTTP_GET_VARS [已弃用] — HTTP GET 变量

说明

通过 URL 参数传递给当前脚本的变量的数组。

$HTTP_GET_VARS 包含相同的信息， 但它不是一个超全局变量。 (注意 $HTTP_GET_VARS 和 $_GET 是不同的变量，PHP 处理它们的方式不同)

更新日志

版本 | 说明
4.1.0 | 引入 $_GET，弃用 $HTTP_GET_VARS。

范例

Example #1 $_GET 范例

<?php
echo 'Hello ' . htmlspecialchars($_GET["name"]) . '!';
?>

假设用户访问的是 http://example.com/?name=Hannes

以上例程的输出类似于：

Hello Hannes!

注释

Note:

"Superglobal"也称为自动化的全局变量。这就表示其在脚本的所有作用域中都是可用的。不需要在函数或方法中用 global $variable; 来访问它。

Note:

GET 是通过 urldecode() 传递的。

参见

  • 处理外部变量
  • 过滤器扩展

$_SERVER
$_POST
预定义变量


HTTP POST 变量

$_GET
$_FILES
预定义变量
PHP Manual

$_POST

$HTTP_POST_VARS [已弃用]

$_POST -- $HTTP_POST_VARS [已弃用] — HTTP POST 变量

说明

通过 HTTP POST 方法传递给当前脚本的变量的数组。

$HTTP_POST_VARS 包含相同的信息，但它不是一个超全局变量。 (注意 $HTTP_POST_VARS 和 $_POST 是不同的变量，PHP 处理它们的方式不同)

更新日志

版本 | 说明
4.1.0 | 引入 $_POST，弃用 $HTTP_POST_VARS。

范例

Example #1 $_POST 范例

<?php
echo 'Hello ' . htmlspecialchars($_POST["name"]) . '!';
?>

假设用户通过 HTTP POST 方式传递了参数 name=Hannes

以上例程的输出类似于：

Hello Hannes!

注释

Note:

"Superglobal"也称为自动化的全局变量。这就表示其在脚本的所有作用域中都是可用的。不需要在函数或方法中用 global $variable; 来访问它。

参见

  • 处理外部变量
  • 过滤器扩展

$_GET
$_FILES
预定义变量


HTTP 文件上传变量

$_POST
$_REQUEST
预定义变量
PHP Manual

$_FILES

$HTTP_POST_FILES [已弃用]

$_FILES -- $HTTP_POST_FILES [已弃用] — HTTP 文件上传变量

说明

通过 HTTP POST 方式上传到当前脚本的项目的数组。

$HTTP_POST_FILES 包含相同的信息，但它不是一个超全局变量。 (注意 $HTTP_POST_FILES 和 $_FILES 是不同的变量，PHP 处理它们的方式不同)

更新日志

版本 | 说明
4.1.0 | 引入 $_FILES，弃用 $HTTP_POST_FILES。

注释

Note:

"Superglobal"也称为自动化的全局变量。这就表示其在脚本的所有作用域中都是可用的。不需要在函数或方法中用 global $variable; 来访问它。

参见

  • move_uploaded_file() - 将上传的文件移动到新位置
  • 处理文件上传

$_POST
$_REQUEST
预定义变量


HTTP Request 变量

$_FILES
$_SESSION
预定义变量
PHP Manual

$_REQUEST

$_REQUEST — HTTP Request 变量

说明

默认情况下包含了 $_GET，$_POST 和 $_COOKIE 的数组。

更新日志

版本 | 说明
5.3.0 | 引入 request_order。该指令会影响 $_REQUEST 的内容。
4.3.0 | $_FILES 信息被从 $_REQUEST 中移除。
4.1.0 | 引入 $_REQUEST。

注释

Note:

"Superglobal"也称为自动化的全局变量。这就表示其在脚本的所有作用域中都是可用的。不需要在函数或方法中用 global $variable; 来访问它。

Note:

以命令行方式运行时，将不包含 argv 和 argc 信息；它们将存在于 $_SERVER 数组。

Note:

由于 $_REQUEST 中的变量通过 GET，POST 和 COOKIE 输入机制传递给脚本文件，因此可以被远程用户篡改而并不可信。这个数组的项目及其顺序依赖于 PHP 的 variables_order 指令的配置。

参见

  • import_request_variables() - 将 GET／POST／Cookie 变量导入到全局作用域中
  • 处理外部变量
  • 过滤器扩展
$_FILES
$_SESSION
预定义变量


Session 变量

$_REQUEST
$_ENV
预定义变量
PHP Manual

$_SESSION

$HTTP_SESSION_VARS [已弃用]

$_SESSION -- $HTTP_SESSION_VARS [已弃用] — Session 变量

说明

当前脚本可用 SESSION 变量的数组。更多关于如何使用的信息，参见 Session 函数 文档。

$HTTP_SESSION_VARS 包含相同的信息，但它不是一个超全局变量。 (注意 $HTTP_SESSION_VARS 和 $_SESSION 是不同的变量，PHP 处理它们的方式不同)

更新日志

版本 | 说明
4.1.0 | 引入 $_SESSION，弃用 $HTTP_SESSION_VARS。

注释

Note:

"Superglobal"也称为自动化的全局变量。这就表示其在脚本的所有作用域中都是可用的。不需要在函数或方法中用 global $variable; 来访问它。

参见

  • session_start() - 启动新会话或者重用现有会话

$_REQUEST
$_ENV
预定义变量


环境变量

$_SESSION
$_COOKIE
预定义变量
PHP Manual

$_ENV

$HTTP_ENV_VARS [已弃用]

$_ENV -- $HTTP_ENV_VARS [已弃用] — 环境变量

说明

通过环境方式传递给当前脚本的变量的数组。

这些变量被从 PHP 解析器的运行环境导入到 PHP 的全局命名空间。很多是由支持 PHP 运行的 Shell 提供的，并且不同的系统很可能运行着不同种类的 Shell，所以不可能有一份确定的列表。请查看你的 Shell 文档来获取定义的环境变量列表。

其他环境变量包含了 CGI 变量，而不管 PHP 是以服务器模块还是 CGI 处理器的方式运行。

$HTTP_ENV_VARS 包含相同的信息，但它不是一个超全局变量。 (注意 $HTTP_ENV_VARS 和 $_ENV 是不同的变量，PHP 处理它们的方式不同)

更新日志

版本 | 说明
4.1.0 | 引入 $_ENV，弃用 $HTTP_ENV_VARS。

范例

Example #1 $_ENV 范例

<?php
echo 'My username is ' .$_ENV["USER"] . '!';
?>

假设 "bjori" 运行此段脚本

以上例程的输出类似于：

My username is bjori!

注释

Note:

"Superglobal"也称为自动化的全局变量。这就表示其在脚本的所有作用域中都是可用的。不需要在函数或方法中用 global $variable; 来访问它。

参见

  • getenv() - 获取一个环境变量的值
  • 过滤器扩展

$_SESSION
$_COOKIE
预定义变量


HTTP Cookies

$_ENV
$php_errormsg
预定义变量
PHP Manual

$_COOKIE

$HTTP_COOKIE_VARS [已弃用]

$_COOKIE -- $HTTP_COOKIE_VARS [已弃用] — HTTP Cookies

说明

通过 HTTP Cookies 方式传递给当前脚本的变量的数组。

$HTTP_COOKIE_VARS 包含相同的信息，但它不是一个超全局变量。 (注意 $HTTP_COOKIE_VARS 和 $_COOKIE 是不同的变量，PHP 处理它们的方式不同)

更新日志

版本 | 说明
4.1.0 | 引入 $_COOKIE，弃用 $HTTP_COOKIE_VARS。

范例

Example #1 $_COOKIE 范例

<?php
echo 'Hello ' . htmlspecialchars($_COOKIE["name"]) . '!';
?>

假设之前发送了 "name" Cookie

以上例程的输出类似于：

Hello Hannes!

注释

Note:

"Superglobal"也称为自动化的全局变量。这就表示其在脚本的所有作用域中都是可用的。不需要在函数或方法中用 global $variable; 来访问它。

参见

  • setcookie() - Send a cookie
  • 处理外部变量
  • 过滤器扩展

$_ENV
$php_errormsg
预定义变量


前一个错误信息

$_COOKIE
$HTTP_RAW_POST_DATA
预定义变量
PHP Manual

$php_errormsg

$php_errormsg — 前一个错误信息

说明

$php_errormsg 变量包含由 PHP 生成的最新错误信息。这个变量只在错误发生的作用域内可用，并且要求 track_errors 配置项是开启的（默认是关闭的）。

Warning

如果用户定义了错误处理句柄（set_error_handler()）并且返回 FALSE 的时候，$php_errormsg 就会被设置。

范例

Example #1 $php_errormsg 范例

<?php
@strpos();
echo $php_errormsg;
?>

以上例程的输出类似于：

Wrong parameter count for strpos()

$_COOKIE
$HTTP_RAW_POST_DATA
预定义变量


原生POST数据

$php_errormsg
$http_response_header
预定义变量
PHP Manual

$HTTP_RAW_POST_DATA

$HTTP_RAW_POST_DATA — 原生POST数据

说明

Warning

This feature has been DEPRECATED as of PHP 5.6.0. Relying on this feature is highly discouraged.

$HTTP_RAW_POST_DATA 包含 POST 提交的原始数据。参见 always_populate_raw_post_data

一般而言，使用 php://input 代替 $HTTP_RAW_POST_DATA。

$php_errormsg
$http_response_header
预定义变量


HTTP 响应头

$HTTP_RAW_POST_DATA
$argc
预定义变量
PHP Manual

$http_response_header

$http_response_header — HTTP 响应头

说明

$http_response_header 数组与 get_headers() 函数类似。当使用HTTP 包装器时，$http_response_header 将会被 HTTP 响应头信息填充。$http_response_header 将被创建于局部作用域中。

范例

Example #1 $http_response_header 范例

<?php
function get_contents() {
  file_get_contents("http://example.com");
  var_dump($http_response_header);
}
get_contents();
var_dump($http_response_header);
?>

以上例程的输出类似于：

array(9) {
  [0]=>
  string(15) "HTTP/1.1 200 OK"
  [1]=>
  string(35) "Date: Sat, 12 Apr 2008 17:30:38 GMT"
  [2]=>
  string(29) "Server: Apache/2.2.3 (CentOS)"
  [3]=>
  string(44) "Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT"
  [4]=>
  string(27) "ETag: "280100-1b6-80bfd280""
  [5]=>
  string(20) "Accept-Ranges: bytes"
  [6]=>
  string(19) "Content-Length: 438"
  [7]=>
  string(17) "Connection: close"
  [8]=>
  string(38) "Content-Type: text/html; CHARSET=gb2312"
}
NULL

$HTTP_RAW_POST_DATA
$argc
预定义变量


传递给脚本的参数数目

$http_response_header
$argv
预定义变量
PHP Manual

$argc

$argc — 传递给脚本的参数数目

说明

包含当运行于命令行下时传递给当前脚本的参数的数目。

Note: 脚本的文件名总是作为参数传递给当前脚本，因此 $argc 的最小值为 1。

Note: 这个变量仅在 register_argc_argv 打开时可用。

范例

Example #1 $argc 范例

<?php
var_dump($argc);
?>

当使用这个命令执行: php script.php arg1 arg2 arg3

以上例程的输出类似于：

int(4)

$http_response_header
$argv
预定义变量


传递给脚本的参数数组

$argc
预定义异常
预定义变量
PHP Manual

$argv

$argv — 传递给脚本的参数数组

说明

包含当运行于命令行下时传递给当前脚本的参数的数组。

Note: 第一个参数总是当前脚本的文件名，因此 $argv[0] 就是脚本文件名。

Note: 这个变量仅在 register_argc_argv 打开时可用。

范例

Example #1 $argv 范例

<?php
var_dump($argv);
?>

当使用这个命令执行：php script.php arg1 arg2 arg3

以上例程的输出类似于：

array(4) {
  [0]=>
  string(10) "script.php"
  [1]=>
  string(4) "arg1"
  [2]=>
  string(4) "arg2"
  [3]=>
  string(4) "arg3"
}

参见

  • getopt() - 从命令行参数列表中获取选项

$argc
预定义异常
预定义变量


预定义异常

Table of Contents

  • Exception
  • ErrorException

参见 SPL 异常处理

$argv
Exception
语言参考


Exception

(PHP 5 >= 5.1.0, PHP 7)

简介

Exception是所有异常的基类。

类摘要

Exception {
/* 属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 方法 */
public __construct ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] )
final public string getMessage ( void )
final public Exception getPrevious ( void )
final public int getCode ( void )
final public string getFile ( void )
final public int getLine ( void )
final public array getTrace ( void )
final public string getTraceAsString ( void )
public string __toString ( void )
final private void __clone ( void )
}

属性

message

异常消息内容

code

异常代码

file

抛出异常的文件名

line

抛出异常在该文件中的行号

Table of Contents

  • Exception::__construct — 异常构造函数
  • Exception::getMessage — 获取异常消息内容
  • Exception::getPrevious — 返回异常链中的前一个异常
  • Exception::getCode — 获取异常代码
  • Exception::getFile — 获取发生异常的程序文件名称
  • Exception::getLine — 获取发生异常的代码在文件中的行号
  • Exception::getTrace — 获取异常追踪信息
  • Exception::getTraceAsString — 获取字符串类型的异常追踪信息
  • Exception::__toString — 将异常对象转换为字符串
  • Exception::__clone — 异常克隆
预定义异常
Exception::__construct
预定义异常


异常构造函数

Exception
Exception::getMessage
Exception
PHP Manual

Exception::__construct

(PHP 5 >= 5.1.0, PHP 7)

Exception::__construct — 异常构造函数

说明

public Exception::__construct ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] )

异常构造函数。

参数

message

抛出的异常消息内容。

code

异常代码。

previous

异常链中的前一个异常。

更新日志

版本 | 说明
5.3.0 | 增加previous参数。

注释

Note:

The message is NOT binary safe.

Exception
Exception::getMessage
Exception


获取异常消息内容

Exception::__construct
Exception::getPrevious
Exception
PHP Manual

Exception::getMessage

(PHP 5 >= 5.1.0, PHP 7)

Exception::getMessage — 获取异常消息内容

说明

final public string Exception::getMessage ( void )

返回异常消息内容。

参数

此函数没有参数。

返回值

返回字符串类型的异常消息内容。

范例

Example #1 Exception::getMessage()示例

<?php
try {
    throw new Exception("Some error message");
} catch(Exception $e) {
    echo $e->getMessage();
}
?>

以上例程的输出类似于：

Some error message

Exception::__construct
Exception::getPrevious
Exception


返回异常链中的前一个异常

Exception::getMessage
Exception::getCode
Exception
PHP Manual

Exception::getPrevious

(PHP 5 >= 5.3.0, PHP 7)

Exception::getPrevious — 返回异常链中的前一个异常

说明

final public Exception Exception::getPrevious ( void )

返回异常链中的前一个异常（Exception::__construct()方法的第三个参数）。

参数

此函数没有参数。

返回值

返回异常链中的前一个异常Exception，否则返回NULL。

范例

Example #1 Exception::getPrevious()示例

追踪异常，并循环打印。

<?php
class MyCustomException extends Exception {}

function doStuff() {
    try {
        throw new InvalidArgumentException("You are doing it wrong!", 112);
    } catch(Exception $e) {
        throw new MyCustomException("Something happend", 911, $e);
    }
}

try {
    doStuff();
} catch(Exception $e) {
    do {
        printf("%s:%d %s (%d) [%s]\n", $e->getFile(), $e->getLine(), $e->getMessage(), $e->getCode(), get_class($e));
    } while($e = $e->getPrevious());
}
?>

以上例程的输出类似于：

/home/bjori/ex.php:8 Something happend (911) [MyCustomException]
/home/bjori/ex.php:6 You are doing it wrong! (112) [InvalidArgumentException]

Exception::getMessage
Exception::getCode
Exception


获取异常代码

Exception::getPrevious
Exception::getFile
Exception
PHP Manual

Exception::getCode

(PHP 5 >= 5.1.0, PHP 7)

Exception::getCode — 获取异常代码

说明

final public int Exception::getCode ( void )

返回异常代码。

参数

此函数没有参数。

返回值

Exception 返回整型（integer）的异常代码，但在其他类中可能返回其他类型(比如在 PDOException 中返回 string)。

范例

Example #1 Exception::getCode()示例

<?php
try {
    throw new Exception("Some error message", 30);
} catch(Exception $e) {
    echo "The exception code is: " . $e->getCode();
}
?>

以上例程的输出类似于：

The exception code is: 30

Exception::getPrevious
Exception::getFile
Exception


获取发生异常的程序文件名称

Exception::getCode
Exception::getLine
Exception
PHP Manual

Exception::getFile

(PHP 5 >= 5.1.0, PHP 7)

Exception::getFile — 获取发生异常的程序文件名称

说明

final public string Exception::getFile ( void )

获取发生异常的程序文件名称。

参数

此函数没有参数。

返回值

返回发生异常的程序文件名称。

范例

Example #1 Exception::getFile()示例

<?php
try {
    throw new Exception;
} catch(Exception $e) {
    echo $e->getFile();
}
?>

以上例程的输出类似于：

/home/bjori/tmp/ex.php

Exception::getCode
Exception::getLine
Exception


获取发生异常的代码在文件中的行号

Exception::getFile
Exception::getTrace
Exception
PHP Manual

Exception::getLine

(PHP 5 >= 5.1.0, PHP 7)

Exception::getLine — 获取发生异常的代码在文件中的行号

说明

final public int Exception::getLine ( void )

返回发生异常的代码在文件中的行号。

参数

此函数没有参数。

返回值

返回发生异常的代码在文件中的行号。

范例

Example #1 Exception::getLine()示例

<?php
try {
    throw new Exception("Some error message");
} catch(Exception $e) {
    echo "The exception was thrown on line: " . $e->getLine();
}
?>

以上例程的输出类似于：

The exception was thrown on line: 3

Exception::getFile
Exception::getTrace
Exception


获取异常追踪信息

Exception::getLine
Exception::getTraceAsString
Exception
PHP Manual

Exception::getTrace

(PHP 5 >= 5.1.0, PHP 7)

Exception::getTrace — 获取异常追踪信息

说明

final public array Exception::getTrace ( void )

返回异常追踪信息。

参数

此函数没有参数。

返回值

返回包含异常追踪信息的数组（array）。

范例

Example #1 Exception::getTrace()示例

<?php
function test() {
 throw new Exception;
}

try {
 test();
} catch(Exception $e) {
 var_dump($e->getTrace());
}
?>

以上例程的输出类似于：

array(1) {
  [0]=>
  array(4) {
    ["file"]=>
    string(22) "/home/bjori/tmp/ex.php"
    ["line"]=>
    int(7)
    ["function"]=>
    string(4) "test"
    ["args"]=>
    array(0) {
    }
  }
}

Exception::getLine
Exception::getTraceAsString
Exception


获取字符串类型的异常追踪信息

Exception::getTrace
Exception::__toString
Exception
PHP Manual

Exception::getTraceAsString

(PHP 5 >= 5.1.0, PHP 7)

Exception::getTraceAsString — 获取字符串类型的异常追踪信息

说明

final public string Exception::getTraceAsString ( void )

以字符串类型返回异常追踪信息。

参数

此函数没有参数。

返回值

以字符串类型返回异常追踪信息。

范例

Example #1 Exception::getTraceAsString()示例

<?php
function test() {
    throw new Exception;
}

try {
    test();
} catch(Exception $e) {
    echo $e->getTraceAsString();
}
?>

以上例程的输出类似于：

#0 /home/bjori/tmp/ex.php(7): test()
#1 {main}

Exception::getTrace
Exception::__toString
Exception


将异常对象转换为字符串

Exception::getTraceAsString
Exception::__clone
Exception
PHP Manual

Exception::__toString

(PHP 5 >= 5.1.0, PHP 7)

Exception::__toString — 将异常对象转换为字符串

说明

public string Exception::__toString ( void )

返回转换为字符串（string）类型的异常。

参数

此函数没有参数。

返回值

返回转换为字符串（string）类型的异常。

范例

Example #1 Exception::__toString()示例

<?php
try {
    throw new Exception("Some error message");
} catch(Exception $e) {
    echo $e;
}
?>

以上例程的输出类似于：

exception 'Exception' with message 'Some error message' in /home/bjori/tmp/ex.php:3
Stack trace:
#0 {main}

Exception::getTraceAsString
Exception::__clone
Exception


异常克隆

Exception::__toString
ErrorException
Exception
PHP Manual

Exception::__clone

(PHP 5 >= 5.1.0, PHP 7)

Exception::__clone — 异常克隆

说明

final private void Exception::__clone ( void )

尝试克隆异常，这将导致一个致命错误。

参数

此函数没有参数。

返回值

没有返回值。

错误／异常

异常被不允许克隆。

Exception::__toString
ErrorException
Exception


ErrorException

(PHP 5 >= 5.1.0, PHP 7)

简介

错误异常。

类摘要

ErrorException extends Exception {
/* 属性 */
protected int $severity ;
/* 方法 */
public __construct ([ string $message = "" [, int $code = 0 [, int $severity = 1 [, string $filename = __FILE__ [, int $lineno = __LINE__ [, Exception $previous = NULL ]]]]]] )
final public int getSeverity ( void )
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}

属性

severity

异常级别

范例

Example #1 使用set_error_handler()函数将错误信息托管至ErrorException

<?php
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");

/* Trigger exception */
strpos();
?>

以上例程的输出类似于：

Fatal error: Uncaught exception 'ErrorException' with message 'Wrong parameter count for strpos()' in /home/bjori/tmp/ex.php:8
Stack trace:
#0 [internal function]: exception_error_handler(2, 'Wrong parameter...', '/home/bjori/php...', 8, Array)
#1 /home/bjori/php/cleandocs/test.php(8): strpos()
#2 {main}
  thrown in /home/bjori/tmp/ex.php on line 8

Table of Contents

  • ErrorException::__construct — 异常构造函数
  • ErrorException::getSeverity — 获取异常的严重程度
Exception::__clone
ErrorException::__construct
预定义异常


异常构造函数

ErrorException
ErrorException::getSeverity
ErrorException
PHP Manual

ErrorException::__construct

(PHP 5 >= 5.1.0, PHP 7)

ErrorException::__construct — 异常构造函数

说明

public ErrorException::__construct ([ string $message = "" [, int $code = 0 [, int $severity = 1 [, string $filename = __FILE__ [, int $lineno = __LINE__ [, Exception $previous = NULL ]]]]]] )

异常构造函数。

参数

message

抛出的异常消息内容。

code

异常代码。

severity

异常的严重级别。

filename

抛出异常所在的文件名。

lineno

抛出异常所在的行号。

previous

异常链中的前一个异常。

更新日志

版本 | 说明
5.3.0 | 增加previous参数。

ErrorException
ErrorException::getSeverity
ErrorException


获取异常的严重程度

ErrorException::__construct
预定义接口
ErrorException
PHP Manual

ErrorException::getSeverity

(PHP 5 >= 5.1.0, PHP 7)

ErrorException::getSeverity — 获取异常的严重程度

说明

final public int ErrorException::getSeverity ( void )

返回异常的严重程度。

参数

此函数没有参数。

返回值

返回异常的严重级别。

范例

Example #1 ErrorException::getSeverity() 例子

<?php
try {
    throw new ErrorException("Exception message", 0, 75);
} catch(ErrorException $e) {
    echo "This exception severity is: " . $e->getSeverity();
}
?>

以上例程的输出类似于：

This exception severity is: 75

ErrorException::__construct
预定义接口
ErrorException


预定义接口

Table of Contents

  • 遍历
  • 迭代器
  • 聚合式迭代器
  • 数组式访问
  • 序列化
  • Closure
  • 生成器

参见 SPL 接口 和 预定义类

ErrorException::getSeverity
遍历
语言参考


Traversable（遍历）接口

(No version information available, might only be in Git)

简介

检测一个类是否可以使用 foreach 进行遍历的接口。

无法被单独实现的基本抽象接口。相反它必须由 IteratorAggregate 或 Iterator 接口实现。

Note:

实现此接口的内建类可以使用 foreach 进行遍历而无需实现 IteratorAggregate 或 Iterator 接口。

Note:

这是一个无法在 PHP 脚本中实现的内部引擎接口。IteratorAggregate 或 Iterator 接口可以用来代替它。

接口摘要

Traversable {
}

这个接口没有任何方法，它的作用仅仅是作为所有可遍历类的基本接口。

预定义接口
迭代器
预定义接口


Iterator（迭代器）接口

(No version information available, might only be in Git)

简介

可在内部迭代自己的外部迭代器或类的接口。

接口摘要

Iterator extends Traversable {
/* 方法 */
abstract public mixed current ( void )
abstract public scalar key ( void )
abstract public void next ( void )
abstract public void rewind ( void )
abstract public boolean valid ( void )
}

预定义迭代器

PHP 已经提供了一些用于日常任务的迭代器。 详细列表参见 SPL 迭代器。

范例

Example #1 基本用法

这个例子展示了使用 foreach 时，迭代器方法的调用顺序。

<?php
class myIterator implements Iterator {
    private $position = 0;
    private $array = array(
        "firstelement",
        "secondelement",
        "lastelement",
    );

    public function __construct() {
        $this->position = 0;
    }

    function rewind() {
        var_dump(__METHOD__);
        $this->position = 0;
    }

    function current() {
        var_dump(__METHOD__);
        return $this->array[$this->position];
    }

    function key() {
        var_dump(__METHOD__);
        return $this->position;
    }

    function next() {
        var_dump(__METHOD__);
        ++$this->position;
    }

    function valid() {
        var_dump(__METHOD__);
        return isset($this->array[$this->position]);
    }
}

$it = new myIterator;

foreach($it as $key => $value) {
    var_dump($key, $value);
    echo "\n";
}
?>

以上例程的输出类似于：

string(18) "myIterator::rewind"
string(17) "myIterator::valid"
string(19) "myIterator::current"
string(15) "myIterator::key"
int(0)
string(12) "firstelement"

string(16) "myIterator::next"
string(17) "myIterator::valid"
string(19) "myIterator::current"
string(15) "myIterator::key"
int(1)
string(13) "secondelement"

string(16) "myIterator::next"
string(17) "myIterator::valid"
string(19) "myIterator::current"
string(15) "myIterator::key"
int(2)
string(11) "lastelement"

string(16) "myIterator::next"
string(17) "myIterator::valid"

Table of Contents

  • Iterator::current — 返回当前元素
  • Iterator::key — 返回当前元素的键
  • Iterator::next — 向前移动到下一个元素
  • Iterator::rewind — 返回到迭代器的第一个元素
  • Iterator::valid — 检查当前位置是否有效
遍历
Iterator::current
预定义接口


返回当前元素

迭代器
Iterator::key
迭代器
PHP Manual

Iterator::current

(PHP 5 >= 5.0.0, PHP 7)

Iterator::current — 返回当前元素

说明

abstract public mixed Iterator::current ( void )

返回当前元素。

参数

此函数没有参数。

返回值

可返回任何类型。

迭代器
Iterator::key
迭代器


返回当前元素的键

Iterator::current
Iterator::next
迭代器
PHP Manual

Iterator::key

(PHP 5 >= 5.0.0, PHP 7)

Iterator::key — 返回当前元素的键

说明

abstract public scalar Iterator::key ( void )

返回当前元素的键。

参数

此函数没有参数。

返回值

成功返回标量，失败则返回 NULL。

错误／异常

失败时分发 E_NOTICE 级错误。

Iterator::current
Iterator::next
迭代器


向前移动到下一个元素

Iterator::key
Iterator::rewind
迭代器
PHP Manual

Iterator::next

(PHP 5 >= 5.0.0, PHP 7)

Iterator::next — 向前移动到下一个元素

说明

abstract public void Iterator::next ( void )

移动当前位置到下一个元素。

Note:

此方法在 foreach 循环之后被调用。

参数

此函数没有参数。

返回值

任何返回都将被忽略。

Iterator::key
Iterator::rewind
迭代器


返回到迭代器的第一个元素

Iterator::next
Iterator::valid
迭代器
PHP Manual

Iterator::rewind

(PHP 5 >= 5.0.0, PHP 7)

Iterator::rewind — 返回到迭代器的第一个元素

说明

abstract public void Iterator::rewind ( void )

返回到迭代器的第一个元素。

Note:

当开始一个 foreach 循环时，这是第一个被调用的方法。它将不会在 foreach 循环之后被调用。

参数

此函数没有参数。

返回值

任何返回都将被忽略。

Iterator::next
Iterator::valid
迭代器


检查当前位置是否有效

Iterator::rewind
聚合式迭代器
迭代器
PHP Manual

Iterator::valid

(PHP 5 >= 5.0.0, PHP 7)

Iterator::valid — 检查当前位置是否有效

说明

abstract public boolean Iterator::valid ( void )

此方法在 Iterator::rewind() 和 Iterator::next() 方法之后被调用以此用来检查当前位置是否有效。

参数

此函数没有参数。

返回值

返回将被转换为布尔型。成功时返回 TRUE， 或者在失败时返回 FALSE。

Iterator::rewind
聚合式迭代器
迭代器


IteratorAggregate（聚合式迭代器）接口

(No version information available, might only be in Git)

简介

创建外部迭代器的接口。

接口摘要

IteratorAggregate extends Traversable {
/* 方法 */
abstract public Traversable getIterator ( void )
}

Example #1 基本用法

<?php
class myData implements IteratorAggregate {
    public $property1 = "Public property one";
    public $property2 = "Public property two";
    public $property3 = "Public property three";

    public function __construct() {
        $this->property4 = "last property";
    }

    public function getIterator() {
        return new ArrayIterator($this);
    }
}

$obj = new myData;

foreach($obj as $key => $value) {
    var_dump($key, $value);
    echo "\n";
}
?>

以上例程的输出类似于：

string(9) "property1"
string(19) "Public property one"

string(9) "property2"
string(19) "Public property two"

string(9) "property3"
string(21) "Public property three"

string(9) "property4"
string(13) "last property"

Table of Contents

  • IteratorAggregate::getIterator — 获取一个外部迭代器
Iterator::valid
IteratorAggregate::getIterator
预定义接口


获取一个外部迭代器

聚合式迭代器
数组式访问
聚合式迭代器
PHP Manual

IteratorAggregate::getIterator

(PHP 5 >= 5.0.0, PHP 7)

IteratorAggregate::getIterator — 获取一个外部迭代器

说明

abstract public Traversable IteratorAggregate::getIterator ( void )

返回一个外部迭代器。

参数

此函数没有参数。

返回值

实现了 Iterator 或 Traversable 接口的类的一个实例。

错误／异常

失败时抛出 Exception。

聚合式迭代器
数组式访问
聚合式迭代器


ArrayAccess（数组式访问）接口

(No version information available, might only be in Git)

简介

提供像访问数组一样访问对象的能力的接口。

接口摘要

ArrayAccess {
/* 方法 */
abstract public boolean offsetExists ( mixed $offset )
abstract public mixed offsetGet ( mixed $offset )
abstract public void offsetSet ( mixed $offset , mixed $value )
abstract public void offsetUnset ( mixed $offset )
}

Example #1 Basic usage

<?php
class obj implements arrayaccess {
    private $container = array();
    public function __construct() {
        $this->container = array(
            "one"   => 1,
            "two"   => 2,
            "three" => 3,
        );
    }
    public function offsetSet($offset, $value) {
        if (is_null($offset)) {
            $this->container[] = $value;
        } else {
            $this->container[$offset] = $value;
        }
    }
    public function offsetExists($offset) {
        return isset($this->container[$offset]);
    }
    public function offsetUnset($offset) {
        unset($this->container[$offset]);
    }
    public function offsetGet($offset) {
        return isset($this->container[$offset]) ? $this->container[$offset] : null;
    }
}

$obj = new obj;

var_dump(isset($obj["two"]));
var_dump($obj["two"]);
unset($obj["two"]);
var_dump(isset($obj["two"]));
$obj["two"] = "A value";
var_dump($obj["two"]);
$obj[] = 'Append 1';
$obj[] = 'Append 2';
$obj[] = 'Append 3';
print_r($obj);
?>

以上例程的输出类似于：

bool(true)
int(2)
bool(false)
string(7) "A value"
obj Object
(
    [container:obj:private] => Array
        (
            [one] => 1
            [three] => 3
            [two] => A value
            [0] => Append 1
            [1] => Append 2
            [2] => Append 3
        )

)

Table of Contents

  • ArrayAccess::offsetExists — 检查一个偏移位置是否存在
  • ArrayAccess::offsetGet — 获取一个偏移位置的值
  • ArrayAccess::offsetSet — 设置一个偏移位置的值
  • ArrayAccess::offsetUnset — 复位一个偏移位置的值
IteratorAggregate::getIterator
ArrayAccess::offsetExists
预定义接口


检查一个偏移位置是否存在

数组式访问
ArrayAccess::offsetGet
数组式访问
PHP Manual

ArrayAccess::offsetExists

(PHP 5 >= 5.0.0, PHP 7)

ArrayAccess::offsetExists — 检查一个偏移位置是否存在

说明

abstract public boolean ArrayAccess::offsetExists ( mixed $offset )

检查一个偏移位置是否存在。

对一个实现了 ArrayAccess 接口的对象使用 isset() 或 empty() 时，此方法将执行。

Note:

当使用 empty() 并且仅当 ArrayAccess::offsetExists() 返回 TRUE 时，ArrayAccess::offsetGet() 将被调用以检查是为否空。

参数

offset

需要检查的偏移位置。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

Note:

如果一个非布尔型返回值被返回，将被转换为布尔型。

范例

Example #1 ArrayAccess::offsetExists() 范例

<?php
class obj implements arrayaccess {
    public function offsetSet($offset, $value) {
        var_dump(__METHOD__);
    }
    public function offsetExists($var) {
        var_dump(__METHOD__);
        if ($var == "foobar") {
            return true;
        }
        return false;
    }
    public function offsetUnset($var) {
        var_dump(__METHOD__);
    }
    public function offsetGet($var) {
        var_dump(__METHOD__);
        return "value";
    }
}

$obj = new obj;

echo "Runs obj::offsetExists()\n";
var_dump(isset($obj["foobar"]));

echo "\nRuns obj::offsetExists() and obj::offsetGet()\n";
var_dump(empty($obj["foobar"]));

echo "\nRuns obj::offsetExists(), *not* obj:offsetGet() as there is nothing to get\n";
var_dump(empty($obj["foobaz"]));
?>

以上例程的输出类似于：

Runs obj::offsetExists()
string(17) "obj::offsetExists"
bool(true)

Runs obj::offsetExists() and obj::offsetGet()
string(17) "obj::offsetExists"
string(14) "obj::offsetGet"
bool(false)

Runs obj::offsetExists(), *not* obj:offsetGet() as there is nothing to get
string(17) "obj::offsetExists"
bool(true)

数组式访问
ArrayAccess::offsetGet
数组式访问


获取一个偏移位置的值

ArrayAccess::offsetExists
ArrayAccess::offsetSet
数组式访问
PHP Manual

ArrayAccess::offsetGet

(PHP 5 >= 5.0.0, PHP 7)

ArrayAccess::offsetGet — 获取一个偏移位置的值

说明

abstract public mixed ArrayAccess::offsetGet ( mixed $offset )

返回指定偏移位置的值。

当检查一个偏移位置是否为 empty() 时，此方法被执行。

参数

offset

需要获取的偏移位置。

注释

Note:

Starting with PHP 5.3.4, the prototype checks were relaxed and it's possible for implementations of this method to return by reference. This makes indirect modifications to the overloaded array dimensions of ArrayAccess objects possible.

A direct modification is one that replaces completely the value of the array dimension, as in $obj[6] = 7. An indirect modification, on the other hand, only changes part of the dimension, or attempts to assign the dimension by reference to another variable, as in $obj[6][7] = 7 or $var =& $obj[6]. Increments with ++ and decrements with -- are also implemented in a way that requires indirect modification.

While direct modification triggers a call to ArrayAccess::offsetSet(), indirect modification triggers a call to ArrayAccess::offsetGet(). In that case, the implementation of ArrayAccess::offsetGet() must be able to return by reference, otherwise an E_NOTICE message is raised.

返回值

可返回任何类型。

参见

  • ArrayAccess::offsetExists() - 检查一个偏移位置是否存在

ArrayAccess::offsetExists
ArrayAccess::offsetSet
数组式访问


设置一个偏移位置的值

ArrayAccess::offsetGet
ArrayAccess::offsetUnset
数组式访问
PHP Manual

ArrayAccess::offsetSet

(PHP 5 >= 5.0.0, PHP 7)

ArrayAccess::offsetSet — 设置一个偏移位置的值

说明

abstract public void ArrayAccess::offsetSet ( mixed $offset , mixed $value )

为指定的偏移位置设置一个值。

参数

offset

待设置的偏移位置。

value

需要设置的值。

返回值

没有返回值。

注释

Note:

如果另一个值不可用，那么 offset 参数将被设置为 NULL，就像下面的例子。

<?php
$arrayaccess[] = "first value";
$arrayaccess[] = "second value";
print_r($arrayaccess);
?>

以上例程会输出：

Array
(
    [0] => first value
    [1] => second value
)

ArrayAccess::offsetGet
ArrayAccess::offsetUnset
数组式访问


复位一个偏移位置的值

ArrayAccess::offsetSet
序列化
数组式访问
PHP Manual

ArrayAccess::offsetUnset

(PHP 5 >= 5.0.0, PHP 7)

ArrayAccess::offsetUnset — 复位一个偏移位置的值

说明

abstract public void ArrayAccess::offsetUnset ( mixed $offset )

复位一个偏移位置的值。

Note:

当使用 (unset) 进行类型转换时，该方法不会被调用。

参数

offset

待复位的偏移位置。

返回值

没有返回值。

ArrayAccess::offsetSet
序列化
数组式访问


序列化接口

(No version information available, might only be in Git)

简介

自定义序列化的接口。

实现此接口的类将不再支持 __sleep() 和 __wakeup()。不论何时，只要有实例需要被序列化，serialize 方法都将被调用。它将不会调用 __destruct() 或有其他影响，除非程序化地调用此方法。当数据被反序列化时，类将被感知并且调用合适的 unserialize() 方法而不是调用 __construct()。如果需要执行标准的构造器，你应该在这个方法中进行处理。

接口摘要

Serializable {
/* 方法 */
abstract public string serialize ( void )
abstract public mixed unserialize ( string $serialized )
}

Example #1 Basic usage

<?php
class obj implements Serializable {
    private $data;
    public function __construct() {
        $this->data = "My private data";
    }
    public function serialize() {
        return serialize($this->data);
    }
    public function unserialize($data) {
        $this->data = unserialize($data);
    }
    public function getData() {
        return $this->data;
    }
}

$obj = new obj;
$ser = serialize($obj);

$newobj = unserialize($ser);

var_dump($newobj->getData());
?>

以上例程的输出类似于：

string(15) "My private data"

Table of Contents

  • Serializable::serialize — 对象的字符串表示
  • Serializable::unserialize — 构造对象
ArrayAccess::offsetUnset
Serializable::serialize
预定义接口


对象的字符串表示

序列化
Serializable::unserialize
序列化
PHP Manual

Serializable::serialize

(PHP 5 >= 5.1.0, PHP 7)

Serializable::serialize — 对象的字符串表示

说明

abstract public string Serializable::serialize ( void )

返回对象的字符串表示。

Note:

这个方法担当着对象析构器的角色。在此方法之后，__destruct() 方法将不会被调用。

参数

此函数没有参数。

返回值

返回对象的字符串表示或者 NULL 。

错误／异常

如果返回除了字符串或 NULL 之外的其他类型，将抛出 Exception。

参见

  • __sleep()

序列化
Serializable::unserialize
序列化


构造对象

Serializable::serialize
Closure
序列化
PHP Manual

Serializable::unserialize

(PHP 5 >= 5.1.0, PHP 7)

Serializable::unserialize — 构造对象

说明

abstract public mixed Serializable::unserialize ( string $serialized )

在反序列化对象时被调用。

Note:

这个方法担当着对象构造器的角色。在此方法之后，__construct() 将不会被调用。

参数

serialized

对象的字符串表示

返回值

返回没有序列化之前的原始值。

参见

  • __wakeup()

Serializable::serialize
Closure
序列化


Closure 类

(PHP 5 >= 5.3.0, PHP 7)

简介

用于代表 匿名函数 的类.

匿名函数（在 PHP 5.3 中被引入）会产生这个类型的对象。在过去，这个类被认为是一个实现细节，但现在可以依赖它做一些事情。自 PHP 5.4 起，这个类带有一些方法，允许在匿名函数创建后对其进行更多的控制。

除了此处列出的方法，还有一个 __invoke 方法。这是为了与其他实现了 __invoke()魔术方法 的对象保持一致性，但调用匿名函数的过程与它无关。

类摘要

Closure {
/* 方法 */
__construct ( void )
public static Closure bind ( Closure $closure , object $newthis [, mixed $newscope = 'static' ] )
public Closure bindTo ( object $newthis [, mixed $newscope = 'static' ] )
}

Table of Contents

  • Closure::__construct — 用于禁止实例化的构造函数
  • Closure::bind — 复制一个闭包，绑定指定的$this对象和类作用域。
  • Closure::bindTo — 复制当前闭包对象，绑定指定的$this对象和类作用域。
Serializable::unserialize
Closure::__construct
预定义接口


用于禁止实例化的构造函数

Closure
Closure::bind
Closure
PHP Manual

Closure::__construct

(PHP 5 >= 5.3.0, PHP 7)

Closure::__construct — 用于禁止实例化的构造函数

说明

Closure::__construct ( void )

这个方法仅用于禁止实例化一个 Closure 类的对象。这个类的对象的创建方法写在 匿名函数 页。

参数

此函数没有参数。

返回值

没有返回值，它只是简单的触发一个错误 （类型是 E_RECOVERABLE_ERROR）。

参见

  • 匿名函数
Closure
Closure::bind
Closure


复制一个闭包，绑定指定的$this对象和类作用域。

Closure::__construct
Closure::bindTo
Closure
PHP Manual

Closure::bind

(PHP 5 >= 5.4.0, PHP 7)

Closure::bind — 复制一个闭包，绑定指定的$this对象和类作用域。

说明

public static Closure Closure::bind ( Closure $closure , object $newthis [, mixed $newscope = 'static' ] )

这个方法是 Closure::bindTo() 的静态版本。查看它的文档获取更多信息。

参数

closure

需要绑定的匿名函数。

newthis

需要绑定到匿名函数的对象，或者 NULL 创建未绑定的闭包。

newscope

想要绑定给闭包的类作用域，或者 'static' 表示不改变。如果传入一个对象，则使用这个对象的类型名。 类作用域用来决定在闭包中 $this 对象的 私有、保护方法 的可见性。 The class scope to which associate the closure is to be associated, or 'static' to keep the current one. If an object is given, the type of the object will be used instead. This determines the visibility of protected and private methods of the bound object.

返回值

返回一个新的 Closure 对象 或者在失败时返回 FALSE

范例

Example #1 Closure::bind() 实例

<?php
class A {
    private static $sfoo = 1;
    private $ifoo = 2;
}
$cl1 = static function() {
    return A::$sfoo;
};
$cl2 = function() {
    return $this->ifoo;
};

$bcl1 = Closure::bind($cl1, null, 'A');
$bcl2 = Closure::bind($cl2, new A(), 'A');
echo $bcl1(), "\n";
echo $bcl2(), "\n";
?>

以上例程的输出类似于：

1
2

参见

  • 匿名函数
  • Closure::bindTo() - 复制当前闭包对象，绑定指定的$this对象和类作用域。
Closure::__construct
Closure::bindTo
Closure


复制当前闭包对象，绑定指定的$this对象和类作用域。

Closure::bind
生成器
Closure
PHP Manual

Closure::bindTo

(PHP 5 >= 5.4.0, PHP 7)

Closure::bindTo — 复制当前闭包对象，绑定指定的$this对象和类作用域。

说明

public Closure Closure::bindTo ( object $newthis [, mixed $newscope = 'static' ] )

创建并返回一个 匿名函数， 它与当前对象的函数体相同、绑定了同样变量，但可以绑定不同的对象，也可以绑定新的类作用域。

"绑定的对象"决定了函数体中的 $this 的取值，"类作用域"代表一个类型、决定在这个匿名函数中能够调用哪些 私有 和 保护 的方法。 也就是说，此时 $this 可以调用的方法，与 newscope 类的成员函数是相同的。

静态闭包不能有绑定的对象（ newthis 参数的值应该设为 NULL）不过仍然可以用 bubdTo 方法来改变它们的类作用域。

This function will ensure that for a non-static closure, having a bound instance will imply being scoped and vice-versa. To this end, non-static closures that are given a scope but a NULL instance are made static and non-static non-scoped closures that are given a non-null instance are scoped to an unspecified class.

Note:

如果你只是想要复制一个匿名函数，可以用 cloning 代替。

参数

newthis

绑定给匿名函数的一个对象，或者 NULL 来取消绑定。

newscope

关联到匿名函数的类作用域，或者 'static' 保持当前状态。如果是一个对象，则使用这个对象的类型为心得类作用域。 这会决定绑定的对象的 保护、私有成员 方法的可见性。

返回值

返回新创建的 Closure 对象 或者在失败时返回 FALSE

范例

Example #1 Closure::bindTo() 实例

<?php

class A {
    function __construct($val) {
        $this->val = $val;
    }
    function getClosure() {
        //returns closure bound to this object and scope
        return function() { return $this->val; };
    }
}

$ob1 = new A(1);
$ob2 = new A(2);

$cl = $ob1->getClosure();
echo $cl(), "\n";
$cl = $cl->bindTo($ob2);
echo $cl(), "\n";
?>

以上例程的输出类似于：

1
2

参见

  • 匿名函数
  • Closure::bind() - 复制一个闭包，绑定指定的$this对象和类作用域。
Closure::bind
生成器
Closure


生成器类

(No version information available, might only be in Git)

简介

Generator 对象是从 generators返回的.

Caution

Generator 对象不能通过 new 实例化.

类摘要

Generator implements Iterator {
/* 方法 */
public mixed current ( void )
public mixed key ( void )
public void next ( void )
public void rewind ( void )
public mixed send ( mixed $value )
public void throw ( Exception $exception )
public bool valid ( void )
public void __wakeup ( void )
}

Table of Contents

  • Generator::current — 返回当前产生的值
  • Generator::key — 返回当前产生的键
  • Generator::next — 生成器继续执行
  • Generator::rewind — 重置迭代器
  • Generator::send — 向生成器中传入一个值
  • Generator::throw — 向生成器中抛入一个异常
  • Generator::valid — 检查迭代器是否被关闭
  • Generator::__wakeup — 序列化回调
Closure::bindTo
Generator::current
预定义接口


返回当前产生的值

生成器
Generator::key
生成器
PHP Manual

Generator::current

(PHP 5 >= 5.5.0, PHP 7)

Generator::current — 返回当前产生的值

说明

public mixed Generator::current ( void )

参数

此函数没有参数。

返回值

返回当前产生的值。

生成器
Generator::key
生成器


返回当前产生的键

Generator::current
Generator::next
生成器
PHP Manual

Generator::key

(PHP 5 >= 5.5.0, PHP 7)

Generator::key — 返回当前产生的键

说明

public mixed Generator::key ( void )

获取产生的值的键

参数

此函数没有参数。

返回值

返回当前产生的键。

范例

Example #1 Generator::key() example

<?php

function Gen()
{
    yield 'key' => 'value';
}

$gen = Gen();

echo "{$gen->key()} => {$gen->current()}";

以上例程会输出：

key => value

Generator::current
Generator::next
生成器


生成器继续执行

Generator::key
Generator::rewind
生成器
PHP Manual

Generator::next

(PHP 5 >= 5.5.0, PHP 7)

Generator::next — 生成器继续执行

说明

public void Generator::next ( void )

参数

此函数没有参数。

返回值

没有返回值。

Generator::key
Generator::rewind
生成器


重置迭代器

Generator::next
Generator::send
生成器
PHP Manual

Generator::rewind

(PHP 5 >= 5.5.0, PHP 7)

Generator::rewind — 重置迭代器

说明

public void Generator::rewind ( void )

如果迭代已经开始了，这里会抛出一个异常。

参数

此函数没有参数。

返回值

没有返回值。

Generator::next
Generator::send
生成器


向生成器中传入一个值

Generator::rewind
Generator::throw
生成器
PHP Manual

Generator::send

(PHP 5 >= 5.5.0, PHP 7)

Generator::send — 向生成器中传入一个值

说明

public mixed Generator::send ( mixed $value )

向生成器中传入一个值，并且当做 yield 表达式的结果，然后继续执行生成器。

如果当这个方法被调用时，生成器不在 yield 表达式，那么在传入值之前，它会先运行到第一个 yield 表达式。As such it is not necessary to "prime" PHP generators with a Generator::next() call (like it is done in Python).

参数

value

传入生成器的值。这个值将会被作为生成器当前所在的 yield 的返回值

返回值

返回生成的值。

范例

Example #1 用 Generator::send() 向生成器函数中传值

<?php
function printer() {
    while (true) {
        $string = yield;
        echo $string;
    }
}

$printer = printer();
$printer->send('Hello world!');
?>

以上例程会输出：

Hello world!

Generator::rewind
Generator::throw
生成器


向生成器中抛入一个异常

Generator::send
Generator::valid
生成器
PHP Manual

Generator::throw

(PHP 5 >= 5.5.0, PHP 7)

Generator::throw — 向生成器中抛入一个异常

说明

public void Generator::throw ( Exception $exception )

参数

exception

返回值

返回生成的值。

Generator::send
Generator::valid
生成器


检查迭代器是否被关闭

Generator::throw
Generator::__wakeup
生成器
PHP Manual

Generator::valid

(PHP 5 >= 5.5.0, PHP 7)

Generator::valid — 检查迭代器是否被关闭

说明

public bool Generator::valid ( void )

参数

此函数没有参数。

返回值

如果迭代器已被关闭返回 FALSE，否则返回 TRUE。

Generator::throw
Generator::__wakeup
生成器


序列化回调

Generator::valid
上下文（Context）选项和参数
生成器
PHP Manual

Generator::__wakeup

(PHP 5 >= 5.5.0, PHP 7)

Generator::__wakeup — 序列化回调

说明

public void Generator::__wakeup ( void )

抛出一个异常以表示生成器不能被序列化。

参数

此函数没有参数。

返回值

没有返回值。

Generator::valid
上下文（Context）选项和参数
生成器


上下文（Context）选项和参数

PHP 提供了多种上下文选项和参数，可用于所有的文件系统或数据流封装协议。上下文（Context）由
stream_context_create() 创建。选项可通过
stream_context_set_option() 设置，参数可通过
stream_context_set_params() 设置。

Table of Contents

  • 套接字上下文选项 — 套接字上下文选项列表
  • HTTP context 选项 — HTTP context 的选项列表
  • FTP context options — FTP context option listing
  • SSL 上下文选项 — SSL 上下文选项清单
  • CURL context options — CURL 上下文选项列表
  • Phar 上下文（context）选项 — Phar 上下文（context）选项列表
  • MongoDB context options — MongoDB context option listing
  • Context 参数 — Context 参数列表
Generator::__wakeup
套接字上下文选项
语言参考


套接字上下文选项列表

上下文（Context）选项和参数
HTTP context 选项
上下文（Context）选项和参数
PHP Manual

套接字上下文选项

套接字上下文选项 — 套接字上下文选项列表

说明

套接字上下文选项可用于所有工作在套接字上的封装协议，像 tcp, http 和 ftp.

可选项

bindto

用户PHP访问网络的指定的IP地址（IPv4或IPv6其中的一个）和/或 端口号，这个语法是 ip:port. Setting the IP or the port to 0 will let the system choose the IP and/or port.

Note:

As FTP creates two socket connections during normal operation, the port number cannot be specified using this option.

backlog

Used to limit the number of outstanding connections in the socket's listen queue.

Note:

This is only applicable to stream_socket_server().

更新日志

版本 | 说明
5.1.0 | Added bindto.
5.3.3 | Added backlog.

范例

Example #1 Basic bindto usage example

<?php
// connect to the internet using the '192.168.0.100' IP
$opts = array(
    'socket' => array(
        'bindto' => '192.168.0.100:0',
    ),
);

// connect to the internet using the '192.168.0.100' IP and port '7000'
$opts = array(
    'socket' => array(
        'bindto' => '192.168.0.100:7000',
    ),
);

// connect to the internet using port '7000'
$opts = array(
    'socket' => array(
        'bindto' => '0:7000',
    ),
);

// create the context...
$context = stream_context_create($opts);

// ...and use it to fetch the data
echo file_get_contents('http://www.example.com', false, $context);

?>

上下文（Context）选项和参数
HTTP context 选项
上下文（Context）选项和参数


HTTP context 的选项列表

套接字上下文选项
FTP context options
上下文（Context）选项和参数
PHP Manual

HTTP context 选项

HTTP context 选项 — HTTP context 的选项列表

说明

提供给 http:// 和 https:// 传输协议的 context 选项。 transports.

可选项

method string

远程服务器支持的 GET，POST 或其它 HTTP 方法。

默认值是 GET。

header string

请求期间发送的额外 header 。在此选项的值将覆盖其他值 （诸如 User-agent:， Host: 和 Authentication:）。

user_agent string

要发送的 header User-Agent: 的值。如果在上面的 header context 选项中没有指定 user-agent，此值将被使用。

默认使用 php.ini 中设置的 user_agent。

content string

在 header 后面要发送的额外数据。通常使用POST或PUT请求。

proxy string

URI 指定的代理服务器的地址。(e.g. tcp://proxy.example.com:5100).

request_fulluri boolean

当设置为 TRUE 时，在构建请求时将使用整个 URI 。(i.e. GET http://www.example.com/path/to/file.html HTTP/1.0)。 虽然这是一个非标准的请求格式，但某些代理服务器需要它。

默认值是 FALSE.

follow_location integer

跟随 Location header 的重定向。设置为 0 以禁用。

默认值是 1。

max_redirects integer

跟随重定向的最大次数。值为 1 或更少则意味不跟随重定向。

默认值是 20。

protocol_version float

HTTP 协议版本。

默认值是 1.0。

Note:

PHP 5.3.0 以前的版本没有实现分块传输解码。 如果此值设置为 1.1 ，与 1.1 的兼容将是你的责任。

timeout float

读取超时时间，单位为秒（s），用 float 指定(e.g. 10.5)。

默认使用 php.ini 中设置的 default_socket_timeout。

ignore_errors boolean

即使是故障状态码依然获取内容。

默认值为 FALSE.

更新日志

版本 | 说明
5.3.4 | 添加 follow_location。
5.3.0 | 当 protocol_version 设置为 1.1 时支持分块传输解码。
5.2.10 | 添加 ignore_errors。
5.2.10 | header 现在可以是一个数字索引的 array。
5.2.1 | 添加 timeout。
5.1.0 | Added HTTPS proxying through HTTP proxies. 添加经由 HTTP 代理的 HTTPS 代理。
5.1.0 | 添加 max_redirects。
5.1.0 | 添加 protocol_version。

范例

Example #1 获取一个页面并发送 POST 数据

<?php

$postdata = http_build_query(
    array(
        'var1' => 'some content',
        'var2' => 'doh'
    )
);

$opts = array('http' =>
    array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => $postdata
    )
);

$context = stream_context_create($opts);

$result = file_get_contents('http://example.com/submit.php', false, $context);

?>

Example #2 忽略重定向并获取 header 和内容

<?php

$url = "http://www.example.org/header.php";

$opts = array('http' =>
    array(
        'method' => 'GET',
        'max_redirects' => '0',
        'ignore_errors' => '1'
    )
);

$context = stream_context_create($opts);
$stream = fopen($url, 'r', false, $context);

// header information as well as meta data
// about the stream
var_dump(stream_get_meta_data($stream));

// actual data at $url
var_dump(stream_get_contents($stream));
fclose($stream);
?>

注释

Note: Underlying socket stream context options
Additional context options may be supported by the underlying transport For http:// streams, refer to context options for the tcp:// transport. For https:// streams, refer to context options for the ssl:// transport.

Note: HTTP status line
When this stream wrapper follows a redirect, the wrapper_data returned by stream_get_meta_data() might not necessarily contain the HTTP status line that actually applies to the content data at index 0.

array (
  'wrapper_data' =>
  array (
    0 => 'HTTP/1.0 301 Moved Permantenly',
    1 => 'Cache-Control: no-cache',
    2 => 'Connection: close',
    3 => 'Location: http://example.com/foo.jpg',
    4 => 'HTTP/1.1 200 OK',
    ...
The first request returned a 301 (permanent redirect), so the stream wrapper automatically followed the redirect to get a 200 response (index = 4).

参见

  • http://
  • 套接字上下文选项
  • SSL 上下文选项

套接字上下文选项
FTP context options
上下文（Context）选项和参数


FTP context option listing

HTTP context 选项
SSL 上下文选项
上下文（Context）选项和参数
PHP Manual

FTP context options

FTP context options — FTP context option listing

说明

Context options for ftp:// and ftps:// transports.

可选项

overwrite boolean

Allow overwriting of already existing files on remote server. Applies to write mode (uploading) only.

Defaults to FALSE.

resume_pos integer

File offset at which to begin transfer. Applies to read mode (downloading) only.

Defaults to 0 (Beginning of File).

proxy string

Proxy FTP request via http proxy server. Applies to file read operations only. Ex: tcp://squid.example.com:8000.

更新日志

版本 | 说明
5.1.0 | Added proxy.

注释

Note: Underlying socket stream context options
Additional context options may be supported by the underlying transport For ftp:// streams, refer to context options for the tcp:// transport. For ftps:// streams, refer to context options for the ssl:// transport.

参见

  • ftp://
  • 套接字上下文选项
  • SSL 上下文选项

HTTP context 选项
SSL 上下文选项
上下文（Context）选项和参数


SSL 上下文选项清单

FTP context options
CURL context options
上下文（Context）选项和参数
PHP Manual

SSL 上下文选项

SSL 上下文选项 — SSL 上下文选项清单

说明

ssl:// 和 tls:// 传输协议上下文选项清单。

可选项

peer_name string

要连接的服务器名称。如果未设置，那么服务器名称将根据打开 SSL 流的主机名称猜测得出。

verify_peer boolean

是否需要验证 SSL 证书。

默认值为 FALSE.

verify_peer_name boolean

Require verification of peer name.

默认值为 TRUE.

allow_self_signed boolean

是否允许自签名证书。需要配合 verify_peer 参数使用（注：当 verify_peer 参数为 true 时才会根据 allow_self_signed 参数值来决定是否允许自签名证书）。

默认值为 FALSE

cafile string

当设置 verify_peer 为 true 时， 用来验证远端证书所用到的 CA 证书。 本选项值为 CA 证书在本地文件系统的全路径及文件名。

capath string

如果未设置 cafile，或者 cafile 所指的文件不存在时， 会在 capath 所指定的目录搜索适用的证书。 该目录必须是已经经过哈希处理的证书目录。 （注：所谓 hashed certificate 目录是指使用类似 c_rehash 命令将目录中的 .pem 和 .crt 文件扫描并提取哈希码，然后根据此哈希码创建文件链接，以便于快速查找证书）

local_cert string

本地证书路径。 必须是 PEM 格式，并且包含本地的证书及私钥。 也可以包含证书颁发者证书链。 也可以通过 local_pk 指定包含私钥的独立文件。

local_pk string

如果使用独立的文件来存储证书（local_cert）和私钥， 那么使用此选项来指明私钥文件的路径。

passphrase string

local_cert 文件的密码。

CN_match string

期望远端证书的 CN 名称。 PHP 会进行有限的通配符匹配， 如果服务器给出的 CN 名称和本地访问的名称不匹配，则视为连接失败。

Note: 在PHP 5.6.0中，这个选项已废弃，替换为 peer_name。

verify_depth integer

如果证书链条层次太深，超过了本选项的设定值，则终止验证。

默认情况下不限制证书链条层次深度。

ciphers string

设置可用的密码列表。 可用的值参见： » ciphers(1)。

默认值为 DEFAULT.

capture_peer_cert boolean

如果设置为 TRUE 将会在上下文中创建 peer_certificate 选项， 该选项中包含远端证书。

capture_peer_cert_chain boolean

如果设置为 TRUE 将会在上下文中创建 peer_certificate_chain 选项， 该选项中包含远端证书链条。

SNI_enabled boolean

设置为 TRUE 将启用服务器名称指示（server name indication）。 启用 SNI 将允许同一 IP 地址使用多个证书。

SNI_server_name string

如果设置此参数，那么其设置值将被视为 SNI 服务器名称。 如果未设置，那么服务器名称将基于打开 SSL 流的主机名称猜测得出。

Note: 在PHP 5.6.0中，这个选项已废弃，替换为 peer_name。

disable_compression boolean

如果设置，则禁用 TLS 压缩，有助于减轻恶意攻击。

peer_fingerprint string | array

当远程服务器证书的摘要和指定的散列值不相同的时候， 终止操作。

当使用 string 时， 会根据字符串的长度来检测所使用的散列算法："md5"（32 字节）还是"sha1"（40 字节）。

当使用 array 时， 数组的键表示散列算法名称，其对应的值是预期的摘要值。

更新日志

版本 | 说明
5.6.0 | 新加 peer_fingerprint 参数。
5.4.13 | 新加 disable_compression。 需要 OpenSSL >= 1.0.0.
5.3.2 | 新加 SNI_enabled 和 SNI_server_name。
5.0.0 | 新加 capture_peer_cert， capture_peer_chain， ciphers 和 local_pk。

注释

Note: 因为 ssl:// 是 https:// 和 ftps:// 的底层传输协议， 所以，ssl:// 的上下文选项也同样适用于 https:// 和 ftps:// 上下文。

Note: PHP 必须联合 OpenSSL 0.9.8j 或以上版本编译才可以支持 SNI， 同时也支持使用 OPENSSL_TLSEXT_SERVER_NAME 来探测 SNI 服务器名称。

参见

  • 套接字上下文选项

FTP context options
CURL context options
上下文（Context）选项和参数


CURL 上下文选项列表

SSL 上下文选项
Phar 上下文（context）选项
上下文（Context）选项和参数
PHP Manual

CURL context options

CURL context options — CURL 上下文选项列表

说明

CURL 上下文选项在 CURL 扩展被编译（通过 --with-curlwrappers configure选项）时可用

可选项

method string

GET，POST，或者其他远程服务器支持的 HTTP 方法。

默认为 GET.

header string

额外的请求标头。这个值会覆盖通过其他选项设定的值（如： User-agent:，Host:， ，Authentication:）。

user_agent string

设置请求时 User-Agent 标头的值。

默认为 php.ini 中的 user_agent 设定。

content string

在头部之后发送的额外数据。这个选项在 GET 和 HEAD 请求中不使用。

proxy string

URI，用于指定代理服务器的地址（例如 tcp://proxy.example.com:5100）。

max_redirects integer

最大重定向次数。1 或者更小则代表不会跟随重定向。

默认为 20.

curl_verify_ssl_host boolean

校验服务器。

默认为 FALSE

Note:

这个选项在 HTTP 和 FTP 协议中均可使用。

curl_verify_ssl_peer boolean

要求对使用的SSL证书进行校验。

默认为 FALSE

Note:

这个选项在 HTTP 和 FTP 协议中均可使用。

范例

Example #1 获取一个页面，并以POST发送数据

<?php

$postdata = http_build_query(
    array(
        'var1' => 'some content',
        'var2' => 'doh'
    )
);

$opts = array('http' =>
    array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => $postdata
    )
);

$context = stream_context_create($opts);

$result = file_get_contents('http://example.com/submit.php', false, $context);

?>

参见

  • 套接字上下文选项

SSL 上下文选项
Phar 上下文（context）选项
上下文（Context）选项和参数


Phar 上下文（context）选项列表

CURL context options
MongoDB context options
上下文（Context）选项和参数
PHP Manual

Phar 上下文（context）选项

Phar 上下文（context）选项 — Phar 上下文（context）选项列表

说明

phar:// 封装（wrapper）的上下文（context）选项。

可选项

compress int

Phar compression constants 中的一个。

metadata mixed

Phar 元数据（metadata）。查看 Phar::setMetadata()。

参见

  • phar://
  • Phar stream wrapper

CURL context options
MongoDB context options
上下文（Context）选项和参数


MongoDB context option listing

Phar 上下文（context）选项
Context 参数
上下文（Context）选项和参数
PHP Manual

MongoDB context options

MongoDB context options — MongoDB context option listing

说明

Context options for mongodb:// transports.

可选项

log_cmd_insert callable

A callback function called when inserting a document, see log_cmd_insert().

log_cmd_delete callable

A callback function called when deleting a document, see log_cmd_delete().

log_cmd_update callable

A callback function called when updating a document, see log_cmd_update().

log_write_batch callable

A callback function called when executing a Write Batch, see log_write_batch().

log_reply callable

A callback function called when reading a reply from MongoDB, see log_reply().

log_getmore callable

A callback function called when retrieving more results from a MongoDB cursor, see log_getmore().

log_killcursor callable

A callback function called executing a killcursor opcode, see log_killcursor().

更新日志

版本 | 说明
pecl/mongo 1.5.0 | Added Write API Context options

参见

  • 套接字上下文选项
  • SSL 上下文选项

Phar 上下文（context）选项
Context 参数
上下文（Context）选项和参数


Context 参数列表

MongoDB context options
支持的协议和封装协议
上下文（Context）选项和参数
PHP Manual

Context 参数

Context 参数 — Context 参数列表

说明

这些参数（parameters）可以设置为由函数 stream_context_set_params() 返回的 context。

参数

notification callable

当一个流（stream）上发生事件时，callable 将被调用。

查看 stream_notification_callback 以获得更多信息。

MongoDB context options
支持的协议和封装协议
上下文（Context）选项和参数


支持的协议和封装协议

PHP 带有很多内置 URL 风格的封装协议，可用于类似 fopen()、
copy()、 file_exists() 和
filesize() 的文件系统函数。
除了这些封装协议，还能通过 stream_wrapper_register() 来注册自定义的封装协议。

Note: 用于描述一个封装协议的 URL 语法仅支持 scheme://... 的语法。 scheme:/ 和 scheme: 语法是不支持的。

Table of Contents

  • file:// — 访问本地文件系统
  • http:// — 访问 HTTP(s) 网址
  • ftp:// — 访问 FTP(s) URLs
  • php:// — 访问各个输入/输出流（I/O streams）
  • zlib:// — 压缩流
  • data:// — 数据（RFC 2397）
  • glob:// — 查找匹配的文件路径模式
  • phar:// — PHP 归档
  • ssh2:// — Secure Shell 2
  • rar:// — RAR
  • ogg:// — 音频流
  • expect:// — 处理交互式的流
Context 参数
file://
语言参考


访问本地文件系统

支持的协议和封装协议
http://
支持的协议和封装协议
PHP Manual

file://

file:// — 访问本地文件系统

说明

文件系统 是 PHP 使用的默认封装协议，展现了本地文件系统。 当指定了一个相对路径（不以/、\、\\或 Windows 盘符开头的路径）提供的路径将基于当前的工作目录。 在很多情况下是脚本所在的目录，除非被修改了。 使用 CLI 的时候，目录默认是脚本被调用时所在的目录。

在某些函数里，例如 fopen() 和 file_get_contents()， include_path 会可选地搜索，也作为相对的路径。

用法

  • /path/to/file.ext
  • relative/path/to/file.ext
  • fileInCwd.ext
  • C:/path/to/winfile.ext
  • C:\path\to\winfile.ext
  • \\smbserver\share\path\to\winfile.ext
  • file:///path/to/file.ext

可选项

封装协议概要
属性 | 支持
受 allow_url_fopen 影响 | No
允许读取 | Yes
允许写入 | Yes
允许添加 | Yes
允许同时读和写 | Yes
支持 stat() | Yes
支持 unlink() | Yes
支持 rename() | Yes
支持 mkdir() | Yes
支持 rmdir() | Yes

更新日志

版本 | 说明
5.0.0 | 添加了 file://.

支持的协议和封装协议
http://
支持的协议和封装协议


访问 HTTP(s) 网址

file://
ftp://
支持的协议和封装协议
PHP Manual

http://

https://

http:// -- https:// — 访问 HTTP(s) 网址

说明

允许通过 HTTP 1.0 的 GET方法，以只读访问文件或资源。 HTTP 请求会附带一个 Host: 头，用于兼容基于域名的虚拟主机。 如果在你的 php.ini 文件中或字节流上下文（context）配置了 user_agent 字符串，它也会被包含在请求之中。

数据流允许读取资源的 body，而 headers 则储存在了 $http_response_header 变量里。

如果需要知道文档资源来自哪个 URL（经过所有重定向的处理后）， 需要处理数据流返回的系列响应报头（response headers）。

The from directive will be used for the From: header if set and not overwritten by the 上下文（Context）选项和参数.

用法

  • http://example.com
  • http://example.com/file.php?var1=val1&var2=val2
  • http://user:password@example.com
  • https://example.com
  • https://example.com/file.php?var1=val1&var2=val2
  • https://user:password@example.com

可选项

封装协议概要
属性 | 支持
受 allow_url_fopen 限制 | Yes
允许读取 | Yes
允许写入 | No
允许添加 | No
允许同时读和写 | N/A
支持 stat() | No
支持 unlink() | No
支持 rename() | No
支持 mkdir() | No
支持 rmdir() | No

更新日志

版本 | 说明
4.3.7 | 检测 IIS 服务器避免 "SSL: Fatal Protocol Error" 错误。
4.3.0 | 添加 https://。
4.0.5 | 增加了对重定向的支持。

范例

Example #1 检测重定向后最终的 URL

<?php
$url = 'http://www.example.com/redirecting_page.php';

$fp = fopen($url, 'r');

$meta_data = stream_get_meta_data($fp);
foreach ($meta_data['wrapper_data'] as $response) {

    /* 我们是否被重定向了？ */
    if (strtolower(substr($response, 0, 10)) == 'location: ') {

        /* 更新我们被重定向后的 $url */
        $url = substr($response, 10);
    }

}

?>

注释

Note: openssl 扩展启用后才能够支持 HTTPS 协议。

HTTP 连接是只读的；还不支持对一个 HTTP 资源进行写数据或者复制文件。

比如发送 POST 和 PUT 请求， 可以在 HTTP Contexts 的支持下实现。

参见

  • HTTP context 选项
  • $http_response_header
  • stream_get_meta_data() - 从封装协议文件指针中取得报头／元数据
file://
ftp://
支持的协议和封装协议


访问 FTP(s) URLs

http://
php://
支持的协议和封装协议
PHP Manual

ftp://

ftps://

ftp:// -- ftps:// — 访问 FTP(s) URLs

说明

允许通过 FTP 读取存在的文件，以及创建新文件。 如果服务器不支持被动（passive）模式的 FTP，连接会失败。

打开文件后你既可以读也可以写，但是不能同时进行。 当远程文件已经存在于 ftp 服务器上，如果尝试打开并写入文件的时候， 未指定上下文（context）选项 overwrite，连接会失败。 如果要通过 FTP 覆盖存在的文件， 指定上下文（context）的 overwrite 选项来打开、写入。 另外可使用 FTP 扩展来代替。

如果你设置了 php.ini 中的 from 指令， 这个值会作为匿名（anonymous）ftp 的密码。

用法

  • ftp://example.com/pub/file.txt
  • ftp://user:password@example.com/pub/file.txt
  • ftps://example.com/pub/file.txt
  • ftps://user:password@example.com/pub/file.txt

可选项

封装协议概要
属性 | PHP 4 | PHP 5
受 allow_url_fopen 影响 | Yes | Yes
允许读取 | Yes | Yes
允许写入 | Yes (仅支持新文件) | Yes (新文件/启用 overwrite 后已存在的文件)
允许添加 | No | Yes
允许同时读和写 | No | No
支持 stat() | No | 自 5.0.0 起：仅仅 filesize()、 filetype()、 file_exists()、 is_file() 和 is_dir()。 自 PHP 5.1.0 起： filemtime()。
支持 unlink() | No | Yes
支持 rename() | No | Yes
支持 mkdir() | No | Yes
支持 rmdir() | No | Yes

更新日志

版本 | 说明
4.3.0 | 增加 ftps://.

注释

Note:

FTPS 仅在 openssl 扩展开启时有效。

如果服务器不支持 SSL，这个连接会降级（falls back）到普通未加密的 ftp。

Note: 追加
自 PHP 5.0.0 起文件可以通过 ftp:// URL 封装器来追加（append）。 在之前的版本，尝试通过 ftp:// 来追加一个文件将会导致错误。

参见

  • FTP context options
http://
php://
支持的协议和封装协议


访问各个输入/输出流（I/O streams）

ftp://
zlib://
支持的协议和封装协议
PHP Manual

php://

php:// — 访问各个输入/输出流（I/O streams）

说明

PHP 提供了一些杂项输入/输出（IO）流，允许访问 PHP 的输入输出流、标准输入输出和错误描述符， 内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器。

php://stdin, php://stdout 和 php://stderr

php://stdin、php://stdout 和 php://stderr 允许直接访问 PHP 进程相应的输入或者输出流。 数据流引用了复制的文件描述符，所以如果你打开 php://stdin 并在之后关了它， 仅是关闭了复制品，真正被引用的 STDIN 并不受影响。 注意 PHP 在这方面的行为有很多 BUG 直到 PHP 5.2.1。 推荐你简单使用常量 STDIN、 STDOUT 和 STDERR 来代替手工打开这些封装器。

php://stdin 是只读的， php://stdout 和 php://stderr 是只写的。

php://input

php://input 是个可以访问请求的原始数据的只读流。 POST 请求的情况下，最好使用 php://input 来代替 $HTTP_RAW_POST_DATA，因为它不依赖于特定的 php.ini 指令。 而且，这样的情况下 $HTTP_RAW_POST_DATA 默认没有填充， 比激活 always_populate_raw_post_data 潜在需要更少的内存。 enctype="multipart/form-data" 的时候 php://input 是无效的。

Note: 在 PHP 5.6 之前 php://input 打开的数据流只能读取一次； 数据流不支持 seek 操作。 不过，依赖于 SAPI 的实现，请求体数据被保存的时候， 它可以打开另一个 php://input 数据流并重新读取。 通常情况下，这种情况只是针对 POST 请求，而不是其他请求方式，比如 PUT 或者 PROPFIND。

php://output

php://output 是一个只写的数据流， 允许你以 print 和 echo 一样的方式 写入到输出缓冲区。

php://fd

php://fd 允许直接访问指定的文件描述符。 例如 php://fd/3 引用了文件描述符 3。

php://memory 和 php://temp

php://memory 和 php://temp 是一个类似文件 包装器的数据流，允许读写临时数据。 两者的唯一区别是 php://memory 总是把数据储存在内存中， 而 php://temp 会在内存量达到预定义的限制后（默认是 2MB）存入临时文件中。 临时文件位置的决定和 sys_get_temp_dir() 的方式一致。

php://temp 的内存限制可通过添加 /maxmemory:NN 来控制，NN 是以字节为单位、保留在内存的最大数据量，超过则使用临时文件。

php://filter

php://filter 是一种元封装器， 设计用于数据流打开时的筛选过滤应用。 这对于一体式（all-in-one）的文件函数非常有用，类似 readfile()、 file() 和 file_get_contents()， 在数据流内容读取之前没有机会应用其他过滤器。

php://filter 目标使用以下的参数作为它路径的一部分。 复合过滤链能够在一个路径上指定。详细使用这些参数可以参考具体范例。

php://filter 参数
名称 | 描述
resource=<要过滤的数据流> | 这个参数是必须的。它指定了你要筛选过滤的数据流。
read=<读链的筛选列表> | 该参数可选。可以设定一个或多个过滤器名称，以管道符（|）分隔。
write=<写链的筛选列表> | 该参数可选。可以设定一个或多个过滤器名称，以管道符（|）分隔。
<；两个链的筛选列表> | 任何没有以 read= 或 write= 作前缀 的筛选器列表会视情况应用于读或写链。

可选项

封装协议摘要（针对 php://filter，参考被筛选的封装器。）
属性 | 支持
首先于 allow_url_fopen | No
首先于 allow_url_include | 仅 php://input、 php://stdin、 php://memory 和 php://temp。
允许读取 | 仅 php://stdin、 php://input、 php://fd、 php://memory 和 php://temp。
允许写入 | 仅 php://stdout、 php://stderr、 php://output、 php://fd、 php://memory 和 php://temp。
允许追加 | 仅 php://stdout、 php://stderr、 php://output、 php://fd、 php://memory 和 php://temp（等于写入）
允许同时读写 | 仅 php://fd、 php://memory 和 php://temp。
支持 stat() | 仅 php://memory 和 php://temp。
支持 unlink() | No
支持 rename() | No
支持 mkdir() | No
支持 rmdir() | No
仅仅支持 stream_select() | php://stdin、 php://stdout、 php://stderr、 php://fd 和 php://temp。

更新日志

版本 | 说明
5.6.0 | php://input 可反复使用。
5.3.6 | 增加 php://fd。
5.1.0 | 增加 php://memory 和 php://temp。
5.0.0 | 增加 php://filter。

范例

Example #1 php://temp/maxmemory

这个可选选项允许设置 php://temp 开始使用临时文件前的最大内存限制。

<?php
// Set the limit to 5 MB.
$fiveMBs = 5 * 1024 * 1024;
$fp = fopen("php://temp/maxmemory:$fiveMBs", 'r+');

fputs($fp, "hello\n");

// Read what we have written.
rewind($fp);
echo stream_get_contents($fp);
?>

Example #2 php://filter/resource=<待过滤的数据流>

这个参数必须位于 php://filter 的末尾，并且指向需要过滤筛选的数据流。

<?php
/* 这简单等同于：
  readfile("http://www.example.com");
  实际上没有指定过滤器 */

readfile("php://filter/resource=http://www.example.com");
?>

Example #3 php://filter/read=<读链需要应用的过滤器列表>

这个参数采用一个或以管道符 | 分隔的多个过滤器名称。

<?php
/* 这会以大写字母输出 www.example.com 的全部内容 */
readfile("php://filter/read=string.toupper/resource=http://www.example.com");

/* 这会和以上所做的一样，但还会用 ROT13 加密。 */
readfile("php://filter/read=string.toupper|string.rot13/resource=http://www.example.com");
?>

Example #4 php://filter/write=<写链需要应用的过滤器列表>

这个参数采用一个或以管道符 | 分隔的多个过滤器名称。

<?php
/* 这会通过 rot13 过滤器筛选出字符 "Hello World"
  然后写入当前目录下的 example.txt */
file_put_contents("php://filter/write=string.rot13/resource=example.txt","Hello World");
?>
ftp://
zlib://
支持的协议和封装协议


压缩流

php://
data://
支持的协议和封装协议
PHP Manual

zlib://

bzip2://

zip://

zlib:// -- bzip2:// -- zip:// — 压缩流

说明

zlib: PHP 4.0.4 - PHP 4.2.3（仅支持带 fopencookie 的系统）

compress.zlib:// 和 compress.bzip2:// PHP 4.3.0 及以上

zlib: 的功能类似 gzopen()，但是 其数据流还能被 fread() 和其他文件系统函数使用。 自 PHP 4.3.0 后这个不建议被使用，因为会和其他带":"字符的文件名混淆； 请使用 compress.zlib:// 作为替代。

compress.zlib://、 compress.bzip2:// 和 gzopen()、bzopen() 是相等的。并且可以在不支持 fopencookie 的系统中使用。

ZIP 扩展 注册了 zip: 封装协议。

可选项

  • compress.zlib://file.gz
  • compress.bzip2://file.bz2
  • zip://archive.zip#dir/file.txt

用法

封装协议摘要
属性 | 支持
受限于 allow_url_fopen | No
允许读取 | Yes
允许写入 | Yes（除了 zip://）
允许附加 | Yes（除了 zip://）
允许同时读写 | No
支持 stat() | No，请使用普通的 file:// 封装器统计压缩文件。
支持 unlink() | No，请使用 file:// 封装器删除压缩文件。
支持 rename() | No
支持 mkdir() | No
支持 rmdir() | No

php://
data://
支持的协议和封装协议


数据（RFC 2397）

zlib://
glob://
支持的协议和封装协议
PHP Manual

data://

data:// — 数据（RFC 2397）

说明

自 PHP 5.2.0 起 data:（» RFC 2397）数据流封装器开始有效。

用法

  • data://text/plain;base64,

可选项

封装协议摘要
属性 | 支持
受限于 allow_url_fopen | No
受限于 allow_url_include | Yes
允许读取 | Yes
允许写入 | No
允许追加 | No
允许同时读写 | No
支持 stat() | No
支持 unlink() | No
支持 rename() | No
支持 mkdir() | No
支持 rmdir() | No

范例

Example #1 打印 data:// 的内容

<?php
// 打印 "I love PHP"
echo file_get_contents('data://text/plain;base64,SSBsb3ZlIFBIUAo=');
?>

Example #2 获取媒体类型

<?php
$fp   = fopen('data://text/plain;base64,', 'r');
$meta = stream_get_meta_data($fp);

// 打印 "text/plain"
echo $meta['mediatype'];
?>
zlib://
glob://
支持的协议和封装协议


查找匹配的文件路径模式

data://
phar://
支持的协议和封装协议
PHP Manual

glob://

glob:// — 查找匹配的文件路径模式

说明

glob: 数据流包装器自 PHP 5.3.0 起开始有效。

用法

  • glob://

可选项

封装协议摘要
属性 | 支持
受限于 allow_url_fopen | No
受限于 allow_url_include | No
允许读取 | No
允许写入 | No
允许附加 | No
允许同时读写 | No
支持 stat() | No
支持 unlink() | No
支持 rename() | No
支持 mkdir() | No
支持 rmdir() | No

范例

Example #1 基本用法

<?php
// 循环 ext/spl/examples/ 目录里所有 *.php 文件
// 并打印文件名和文件尺寸
$it = new DirectoryIterator("glob://ext/spl/examples/*.php");
foreach($it as $f) {
    printf("%s: %.1FK\n", $f->getFilename(), $f->getSize()/1024);
}
?>
tree.php: 1.0K
findregex.php: 0.6K
findfile.php: 0.7K
dba_dump.php: 0.9K
nocvsdir.php: 1.1K
phar_from_dir.php: 1.0K
ini_groups.php: 0.9K
directorytree.php: 0.9K
dba_array.php: 1.1K
class_tree.php: 1.8K
data://
phar://
支持的协议和封装协议


PHP 归档

glob://
ssh2://
支持的协议和封装协议
PHP Manual

phar://

phar:// — PHP 归档

说明

phar:// 数据流包装器自 PHP 5.3.0 起开始有效。详细的描述可参见 Phar 数据流包装器。

用法

  • phar://

可选项

封装协议摘要
属性 | 支持
支持 allow_url_fopen | No
支持 allow_url_include | No
允许读取 | Yes
允许写入 | Yes
允许附加 | No
允许同时读写 | Yes
支持 stat() | Yes
支持 unlink() | Yes
支持 rename() | Yes
支持 mkdir() | Yes
支持 rmdir() | Yes

参见

  • Phar 上下文（context）选项
glob://
ssh2://
支持的协议和封装协议


Secure Shell 2

phar://
rar://
支持的协议和封装协议
PHP Manual

ssh2://

ssh2:// — Secure Shell 2

说明

ssh2.shell:// ssh2.exec:// ssh2.tunnel:// ssh2.sftp:// ssh2.scp:// PHP 4.3.0 and up (PECL)

Note: 该封装器默认没有激活
为了使用 ssh2.*:// 封装协议， 你必须安装来自 » PECL 的 » SSH2 扩展。

除了支持传统的 URI 登录信息，ssh2 封装协议也支持通过 URL 的主机（host）部分来复用打开连接。

用法

  • ssh2.shell://user:pass@example.com:22/xterm
  • ssh2.exec://user:pass@example.com:22/usr/local/bin/somecmd
  • ssh2.tunnel://user:pass@example.com:22/192.168.0.1:14
  • ssh2.sftp://user:pass@example.com:22/path/to/filename

可选项

封装协议概要
属性 | ssh2.shell | ssh2.exec | ssh2.tunnel | ssh2.sftp | ssh2.scp
受 allow_url_fopen 影响 | Yes | Yes | Yes | Yes | Yes
允许读取 | Yes | Yes | Yes | Yes | Yes
允许写入 | Yes | Yes | Yes | Yes | No
允许追加 | No | No | No | Yes（当服务器支持的时候） | No
允许同时读和写 | Yes | Yes | Yes | Yes | No
支持 stat() | No | No | No | Yes | No
支持 unlink() | No | No | No | Yes | No
支持 rename() | No | No | No | Yes | No
支持 mkdir() | No | No | No | Yes | No
支持 rmdir() | No | No | No | Yes | No

上下文选项（Context）
名称 | 用法 | 默认
session | 重复使用预连接的 ssh2 资源 |
sftp | 重复使用预先分配的 sftp 资源 |
methods | 密钥交换（key exchange）、主机密钥（hostkey）、cipher、压缩和 MAC 方法 |
callbacks |  |
username | 以该用户名连接 |
password | 使用的密码来进行密码验证 |
pubkey_file | 用于验证的公钥（public key）文件 |
privkey_file | 用于验证的私钥（private key）文件 |
env | 需要设置的环境变量的关联数组 |
term | 在分配一个 pty 时请求的终端类型 |
term_width | 在分配一个 pty 时请求的终端宽度 |
term_height | 在分配一个 pty 时请求的终端宽度高度 |
term_units | term_width 和 term_height 的单位 | SSH2_TERM_UNIT_CHARS

范例

Example #1 从一个活动连接中打开字节流

<?php
$session = ssh2_connect('example.com', 22);
ssh2_auth_pubkey_file($session, 'username', '/home/username/.ssh/id_rsa.pub',
                                            '/home/username/.ssh/id_rsa', 'secret');
$stream = fopen("ssh2.tunnel://$session/remote.example.com:1234", 'r');
?>

Example #2 This $session variable must be kept available!

In order to use the ssh2.*://$session wrappers you must keep the $session resouce variable. The code below will not have the desired effect:

<?php
$session = ssh2_connect('example.com', 22);
ssh2_auth_pubkey_file($session, 'username', '/home/username/.ssh/id_rsa.pub',
                                            '/home/username/.ssh/id_rsa', 'secret');
$connection_string = "ssh2.sftp://$session/";
unset($session);
$stream = fopen($connection_string . "path/to/file", 'r');
?>

unset() closes the session, because $connection_string does not hold a reference to the $session variable, just a string cast derived from it. This also happens when the unset() is implicit because of leaving scope (like in a function).

phar://
rar://
支持的协议和封装协议


RAR

ssh2://
ogg://
支持的协议和封装协议
PHP Manual

rar://

rar:// — RAR

说明

The wrapper takes the url encoded path to the RAR archive (relative or absolute), an optional asterik (*), an optional number sign (#) and an optional url encoded entry name, as stored in the archive. Specifying an entry name requires the number sign; a leading forward slash in the entry name is optional.

This wrapper can open both files and directories. When opening directories, the asterisk sign forces the directory entries names to be returned unencoded. If it's not specified, they will be returned url encoded - the reason for this is to allow the wrapper to be correctly used with built-in functionality like the RecursiveDirectoryIterator in the presence of file names that seem like url encoded data.

If the pound sign and the entry name part are not included, the root of the archive will be displayed. This differs from regular directories in that the resulting stream will not contain information such as the modification time, as the root directory is not stored in an individual entry in the archive. The usage of the wrapper with RecursiveDirectoryIterator requires the number sign to be included in the URL when accessing the root, so that the URLs of the children may be constructed correctly.

Note: This wrapper is not enabled by default
In order to use the rar:// wrapper, you must install the » rar extension available from » PECL.

rar:// Available since PECL rar 3.0.0

用法

  • rar://<url encoded archive name>[*][#[<url encoded entry name>]]

可选项

Wrapper Summary
Attribute | Supported
Restricted by allow_url_fopen | No
Restricted by allow_url_include | No
Allows Reading | Yes
Allows Writing | No
Allows Appending | No
Allows Simultaneous Reading and Writing | No
Supports stat() | Yes
Supports unlink() | No
Supports rename() | No
Supports mkdir() | No
Supports rmdir() | No

Context options
Name | Usage | Default
open_password | The password used to encrypt the headers of the archive, if any. WinRAR will encrypt all the files with the same password as the headers password when the later is present, so for archives with encrypted headers, file_password will be ignored. |
file_password | The password used to encrypt a file, if any. If the headers are also encrypted, this option will be ignored in favor of open_password. The reason there are two options is to cover the possibility of supporting archives with different headers and file passwords, should those archives arise. Note that if the archive does not have its headers encrypted, open_password will be ignored and this option must be used instead. |
volume_callback | A callback to determine the path of missing volumes. See RarArchive::open() for more information. |

范例

Example #1 Traversing a RAR archive

<?php

class MyRecDirIt extends RecursiveDirectoryIterator {
    function current() {
        return rawurldecode($this->getSubPathName()) .
            (is_dir(parent::current())?" [DIR]":"");
    }
}

$f = "rar://" . rawurlencode(dirname(__FILE__)) .
    DIRECTORY_SEPARATOR . 'dirs_and_extra_headers.rar#';

$it = new RecursiveTreeIterator(new MyRecDirIt($f));

foreach ($it as $s) {
    echo $s, "\n";
}
?>

以上例程的输出类似于：

|-allow_everyone_ni [DIR]
|-file1.txt
|-file2_?.txt
|-with_streams.txt
\-? [DIR]
  |-?\%2Fempty%2E [DIR]
  | \-?\%2Fempty%2E\file7.txt
  |-?\empty [DIR]
  |-?\file3.txt
  |-?\file4_?.txt
  \-?\?_2 [DIR]
    |-?\?_2\file5.txt
    \-?\?_2\file6_?.txt

Example #2 Opening an encrypted file (header encryption)

<?php
$stream = fopen("rar://" .
    rawurlencode(dirname(__FILE__)) . DIRECTORY_SEPARATOR .
    'encrypted_headers.rar' . '#encfile1.txt', "r", false,
    stream_context_create(
        array(
            'rar' =>
                array(
                    'open_password' => 'samplepassword'
                )
            )
        )
    );
var_dump(stream_get_contents($stream));
/* creation and last access date is opt-in in WinRAR, hence most
 * files don't have them */
var_dump(fstat($stream));
?>

以上例程的输出类似于：

string(26) "Encrypted file 1 contents."
Array
(
    [0] => 0
    [1] => 0
    [2] => 33206
    [3] => 1
    [4] => 0
    [5] => 0
    [6] => 0
    [7] => 26
    [8] => 0
    [9] => 1259550052
    [10] => 0
    [11] => -1
    [12] => -1
    [dev] => 0
    [ino] => 0
    [mode] => 33206
    [nlink] => 1
    [uid] => 0
    [gid] => 0
    [rdev] => 0
    [size] => 26
    [atime] => 0
    [mtime] => 1259550052
    [ctime] => 0
    [blksize] => -1
    [blocks] => -1
)
ssh2://
ogg://
支持的协议和封装协议


音频流

rar://
expect://
支持的协议和封装协议
PHP Manual

ogg://

ogg:// — 音频流

说明

通过包装器 ogg:// 读取的文件， 是作为 OGG/Vorbis 格式的压缩音频编码。 同样，通过包装器 ogg:// 写入或追加的数据格式也是压缩音频。 当 stream_get_meta_data() 用于一个打开读取的 OGG/Vorbis 文件时，会返回关于数据流的详细信息，包含了 vendor 标签、任何内含的 comments、 channels 数字、采样率（rate），以及 用 bitrate_lower、bitrate_upper、 bitrate_nominal 和 bitrate_window 描述的可变比特率范围。

ogg:// PHP 4.3.0 及以上（PECL）

Note: 该封装器默认未激活
要使用 ogg:// 封装器，您必须安装 » OGG/Vorbis 扩展。 可以在 » PECL 上找到。

用法

  • ogg://soundfile.ogg
  • ogg:///path/to/soundfile.ogg
  • ogg://http://www.example.com/path/to/soundstream.ogg

可选项

封装协议摘要
属性 | 支持
受限于 allow_url_fopen | No
允许读取 | Yes
允许写入 | Yes
允许附加 | Yes
允许同时读写 | No
支持 stat() | No
支持 unlink() | No
支持 rename() | No
支持 mkdir() | No
支持 rmdir() | No

上下文选项
Name | Usage | Default | Mode
pcm_mode | 读取时使用如下 PCM 编码之一: OGGVORBIS_PCM_U8、OGGVORBIS_PCM_S8、 OGGVORBIS_PCM_U16_BE、OGGVORBIS_PCM_S16_BE、 OGGVORBIS_PCM_U16_LE 和 OGGVORBIS_PCM_S16_LE。 (8 或 16 位，签名或未签名，大或小的 endian) | OGGVORBIS_PCM_S16_LE | 读取
rate | 输入数据的采样率，单位为 Hz | 44100 | 写入/附加
bitrate | 若给的值为整数，则是用固定的比特率进行编码。（16000 到 131072）若给的值为浮点数，则使用可变的比特率（质。(-1.0 到 1.0） | 128000 | 写入/附加
channels | 要编码的声道的数量，典型为 1 (单声道), 或 2 (立体声)。最高支持 16 声道。 | 2 | 写入/附加
comments | 编码到音轨头部的字符串数组。 |  | 写入/附加

范例

rar://
expect://
支持的协议和封装协议


处理交互式的流

ogg://
安全
支持的协议和封装协议
PHP Manual

expect://

expect:// — 处理交互式的流

说明

由 expect:// 封装协议打开的数据流 PTY 通过提供了对进程 stdio、stdout 和 stderr 的访问。

Note: 该封装协议默认未开启
为了使用 expect:// 封装器，你必须安装 » PECL 上的 » Expect 扩展。

expect:// PHP 4.3.0 and up (PECL)

用法

  • expect://command

可选项

封装协议概要
属性 | 支持
受 allow_url_fopen 影响 | No
允许读取 | Yes
允许写入 | Yes
允许添加 | Yes
允许同时读和写 | No
支持 stat() | No
支持 unlink() | No
支持 rename() | No
支持 mkdir() | No
支持 rmdir() | No

范例

ogg://
安全
支持的协议和封装协议


安全

  • 简介
  • 总则
  • 以 CGI 模式安装时
    • 可能受到的攻击
    • 情形一：只运行公开的文件
    • 情形二：使用 --enable-force-cgi-redirect 选项
    • 情形三：设置 doc_root 或 user_dir
    • 情形四：PHP 解释器放在 web 目录以外
  • 以 Apache 模块安装时
  • 会话（Session）安全
  • 文件系统安全
    • Null 字符问题
  • 数据库安全
    • 设计数据库
    • 连接数据库
    • 加密存储模型
    • SQL 注入
  • 错误报告
  • 使用 Register Globals
  • 用户提交的数据
  • 魔术引号
    • 什么是魔术引号
    • 为什么要用魔术引号
    • 为什么不用魔术引号
    • 关闭魔术引号
  • 隐藏 PHP
  • 保持更新
expect://
简介
PHP 手册


简介

PHP 作为一种强大的语言，无论是以模块还是 CGI 的方式安装，它的解释器都可以在服务器上访问文件、运行命令以及创建网络连接等。这些功能也许会给服务器添加很多不安全因素，但是只要正确地安装和配置 PHP，以及编写安全的代码，那么 PHP 相对于 Perl 和 C 来说，是能创建出更安全的 CGI 程序的。而且，也可以在可用性和安全性之间找到一个很好的平衡点。

PHP 可能会被用在很多不同的方面，因此，PHP 内置的选项以方便用户对其进行配置。虽然众多的选项可以使 PHP 完成很多工作，但是对这些选项的设定以及对服务器的配置很可能会产生安全问题。

PHP 的选项与其语法一样，具有很高的灵活性。使用 PHP，可以在只有 shell 用户权限的环境下创建完善的服务器端程序，或者在被严格限制环境下使用它来完成服务器端包含（Server-Side Includes）而无需承但太大的风险。如何建立这样一种环境，其安全性如何，很大程度上取决于 PHP 的开发者。

本章以一些常规的安全建议作开头，讲述如何在不同的环境下尽可能地提高安全性，以及介绍对于不同安全级别的一些编程原则。

安全
总则
安全


总则

绝对安全的系统是不存在的，因此安全业界常用的方法有助于平衡可用性和风险。对用户提交的每一个变量都进行双重验证可能是一个很负责任的行为，但会导致用户必须花很多时间去填写一张复杂无比的表格，从而迫使某些用户尝试绕过安全机制。

最好的安全机制应该能在不防碍用户，并且不过多地增加开发难度的情况下做到能满足需求。实际上，一些安全问题往往会发生在这种过度强化安全机制的系统上。

不要忘记著名的等强原则：一个系统的的强度是由它最薄弱的环节决定的（译者注：相当于木桶原理）。如果所有的事务都基于时间、地点、事务种类进行详细的记录，而用户验证却只依靠一个 cookie，那么用户所对应的事务记录的可信度就被大大剥弱了。

调试代码的时候一定要记住，就算是一个简单的页面也很难对所有可能发生的情况进行检测：对你不满的雇员不一定会输入如你所愿的东西，黑客也有足够的时间研究你的系统，当然，你的宠物猫也会跳到你的键盘上。这就是为什么必须检查所有的代码，去发现哪里可以引入不正当的数据，然后对代码改进、简化或者增强。

互联网上充满了为了成名而破坏你的代码、攻击你的网站并输入不正当数据的人，总之他们会使你的生活充满乐趣。无论是大网站还是小网站，只要能和互联网连接，就会成为一个目标。很多黑客程序并不理会网站的大小，只会机械地扫描 IP 地址并找寻受害者。我们希望那个不要是你。

简介
以 CGI 模式安装时
安全


以 CGI 模式安装时

Table of Contents

  • 可能受到的攻击
  • 情形一：只运行公开的文件
  • 情形二：使用 --enable-force-cgi-redirect 选项
  • 情形三：设置 doc_root 或 user_dir
  • 情形四：PHP 解释器放在 web 目录以外
总则
可能受到的攻击
安全


可能受到的攻击

如果不想把 PHP 嵌入到服务器端软件（如 Apache）作为一个模块安装的话，可以选择以 CGI 的模式安装。或者把 PHP 用于不同的 CGI 封装以便为代码创建安全的 chroot 和 setuid 环境。这种安装方式通常会把 PHP 的可执行文件安装到 web 服务器的 cgi-bin 目录。CERT 建议书 » CA-96.11 建议不要把任何的解释器放到 cgi-bin 目录。尽管 PHP 可以作为一个独立的解释器，但是它的设计使它可以防止下面类型的攻击：

  • 访问系统文件：http://my.host/cgi-bin/php?/etc/passwd 在 URL 请求的问号（?）后面的信息会传给 CGI 接口作为命名行的参数。其它的解释器会在命令行中打开并执行第一个参数所指定的文件。 但是，以 CGI 模式安装的 PHP 解释器被调用时，它会拒绝解释这些参数。
  • 访问服务器上的任意目录：http://my.host/cgi-bin/php/secret/doc.html 好像上面这种情况，PHP 解释器所在目录后面的 URL 信息 /secret/doc.html 将会例行地传给 CGI 程序并进行解释。通常一些 web 服务器的会将它重定向到页面，如 http://my.host/secret/script.php。如果是这样的话，某些服务器会先检查用户访问 /secret 目录的权限，然后才会创建 http://my.host/cgi-bin/php/secret/script.php 上的页面重定向。不幸的是，很多服务器并没有检查用户访问 /secret/script.php 的权限，只检查了 /cgi-bin/php 的权限，这样任何能访问 /cgi-bin/php 的用户就可以访问 web 目录下的任意文件了。 在 PHP 里，编译时配置选项 --enable-force-cgi-redirect 以及运行时配置指令 doc_root 和 user_dir 都可以为服务器上的文件和目录添加限制，用于防止这类攻击。下面将对各个选项的设置进行详细讲解。
以 CGI 模式安装时
情形一：只运行公开的文件
以 CGI 模式安装时


情形一：只运行公开的文件

如果 web 服务器中所有内容都受到密码或 IP 地址的访问限制，就不需要设置这些选项。如果 web 服务器不支持重定向，或者 web 服务器不能和 PHP 通信而使访问请求变得更为安全，可以在 configure 脚本中指定 --enable-force-cgi-redirect 选项。除此之外，还要确认 PHP 程序不依赖其它方式调用，比如通过直接的 http://my.host/cgi-bin/php/dir/script.php 访问或通过重定向访问 http://my.host/dir/script.php。

在Apache中，重定向可以使用 AddHandler 和 Action 语句来设置，请看下一节。

可能受到的攻击
情形二：使用 --enable-force-cgi-redirect 选项
以 CGI 模式安装时


情形二：使用 --enable-force-cgi-redirect 选项

此编译选项可以防止任何人通过如 http://my.host/cgi-bin/php/secretdir/script.php 这样的 URL 直接调用 PHP。PHP 在此模式下只会解析已经通过了 web 服务器的重定向规则的 URL。

通常 Apache 中的重定向设置可以通过以下指令完成：

Action php-script /cgi-bin/php
AddHandler php-script .php

此选项只在 Apache 下进行过测试，并且要依赖于 Apache 在重定向操作中所设置的非标准 CGI 环境变量 REDIRECT_STATUS。如果 web 服务器不支持任何方式能够判断请求是直接的还是重定向的，就不能使用这个选项，而应该用其它方法。请看下一节。

情形一：只运行公开的文件
情形三：设置 doc_root 或 user_dir
以 CGI 模式安装时


情形三：设置 doc_root 或 user_dir

在 web 服务器的主文档目录中包含动态内容如脚本和可执行程序有时被认为是一种不安全的实践。如果因为配置上的错误而未能执行脚本而作为普通 HTML 文档显示，那就可能导致知识产权或密码资料的泄露。所以很多系统管理员都会专门设置一个只能通过 PHP CGI 来访问的目录，这样该目录中的内容只会被解析而不会原样显示出来。

对于前面所说无法判断是否重定向的情况，很有必要在主文档目录之外建立一个专用于脚本的 doc_root 目录。

可以通过配置文件内的 doc_root 或设置环境变量 PHP_DOCUMENT_ROOT 来定义 PHP 脚本主目录。如果设置了该项，那么 PHP 就只会解释 doc_root 目录下的文件，并确保目录外的脚本不会被 PHP 解释器执行（下面所说的 user_dir 除外）。

另一个可用的选项就是 user_dir。当 user_dir 没有设置的时候，doc_root 就是唯一能控制在哪里打开文件的选项。访问如 http://my.host/~user/doc.php 这个 URL 时，并不会打开用户主目录下文件，而只会执行 doc_root 目录下的 ~user/doc.php（这个子目录以 [~] 作开头）。

如果设置了 user_dir，例如 public_php，那么像 http://my.host/~user/doc.php 这样的请求将会执行用户主目录下的 public_php 子目录下的 doc.php 文件。假设用户主目录的绝对路径是 /home/user，那么被执行文件将会是 /home/user/public_php/doc.php。

user_dir 的设置与 doc_root 无关，所以可以分别控制 PHP 脚本的主目录和用户目录。

情形二：使用 --enable-force-cgi-redirect 选项
情形四：PHP 解释器放在 web 目录以外
以 CGI 模式安装时


情形四：PHP 解释器放在 web 目录以外

一个非常安全的做法就是把 PHP 解释器放在 web 目录外的地方，比如说 /usr/local/bin。这样做唯一不便的地方就是必须在每一个包含 PHP 代码的文件的第一行加入如下语句：

#!/usr/local/bin/php
还要将这些文件的属性改成可执行。也就是说，要像处理用 Perl 或 sh 或其它任何脚本语言写的 CGI 脚本一样，使用以 #! 开头的 shell-escape 机制来启动它们。

在这种情况下，要使 PHP 能正确处理 PATH_INFO 和 PATH_TRANSLATED 等变量的话，在编译 PHP 解释器时必须加入 --enable-discard-path 参数。

情形三：设置 doc_root 或 user_dir
以 Apache 模块安装时
以 CGI 模式安装时


以 Apache 模块安装时

当 PHP 以 Apache 模块方式安装时，它将继承 Apache 用户（通常为"nobody"）的权限。这对安全和认证有一些影响。比如，如果用 PHP 来访问数据库，除非数据库有自己的访问控制，否则就要使"nobody"用户可以访问数据库。这意味着恶意的脚本在不用提供用户名和密码时就可能访问和修改数据库。一个 web Spider 也完全有可能偶然发现数据库的管理页面，并且删除所有的数据库。可以通过 Apache 认证来避免此问题，或者用 LDAP、.htaccess 等技术来设计自己的访问模型，并把这些代码作为 PHP 脚本的一部份。

通常，一但安全性达到可以使 PHP 用户（这里也就是 Apache 用户）承担的风险极小的程度时候，可能 PHP 已经到了阻止向用户目录写入任何文件或禁止访问和修改数据库的地步了。这就是说，无论是正常的文件还是非正常的文件，无论是正常的数据库事务来是恶意的请求，都会被拒之门外。

一个常犯的对安全性不利的错误就是让 Apache 拥有 root 权限，或者通过其它途径斌予 Apache 更强大的功能。

把 Apache 用户的权限提升为 root 是极度危险的做法，而且可能会危及到整个系统的安全。所以除非是安全专家，否则决不要考虑使用 su，chroot 或者以 root 权限运行。

除此之外还有一些比较简单的解决方案。比如说可以使用 open_basedir 来限制哪些目录可以被 PHP 使用。也可以设置 Apache 的专属区域，从而把所有的 web 活动都限制到非用户和非系统文件之中。

情形四：PHP 解释器放在 web 目录以外
会话（Session）安全
安全


会话（Session）安全

保持 HTTP 会话管理的安全是重要的。会话安全相关内容描述章节在Session 模块 文档下的会话安全部分。

以 Apache 模块安装时
文件系统安全
安全


文件系统安全

Table of Contents

  • Null 字符问题

PHP 遵从大多数服务器系统中关于文件和目录权限的安全机制。这就使管理员可以控制哪些文件在文件系统内是可读的。必须特别注意的是全局的可读文件，并确保每一个有权限的用户对这些文件的读取动作都是安全的。

PHP 被设计为以用户级别来访问文件系统，所以完全有可能通过编写一段 PHP 代码来读取系统文件如 /etc/passwd，更改网络连接以及发送大量打印任务等等。因此必须确保 PHP 代码读取和写入的是合适的文件。

请看下面的代码，用户想要删除自己主目录中的一个文件。假设此情形是通过 web 界面来管理文件系统，因此 Apache 用户有权删除用户目录下的文件。

Example #1 不对变量进行安全检查会导致......

<?php
// 从用户目录中删除指定的文件
$username = $_POST['user_submitted_name'];
$userfile = $_POST['user_submitted_filename'];
$homedir = "/home/$username";
unlink ("$homedir/$userfile");
echo "The file has been deleted!";
?>
既然 username 和 filename 变量可以通过用户表单来提交，那就可以提交别人的用户名和文件名，甚至可以删掉本来不应该让他们删除的文件。这种情况下，就要考虑其它方式的认证。想想看如果提交的变量是"../etc/"和"passwd"会发生什么。上面的代码就等同于：

Example #2 ......文件系统攻击

<?php
// 删除硬盘中任何 PHP 有访问权限的文件。如果 PHP 有 root 权限：
$username = $_POST['user_submitted_name']; // "../etc"
$userfile = $_POST['user_submitted_filename']; // "passwd"
$homedir  = "/home/$username"; // "/home/../etc"

unlink("$homedir/$userfile"); // "/home/../etc/passwd"

echo "The file has been deleted!";
?>
有两个重要措施来防止此类问题。
  • 只给 PHP 的 web 用户很有限的权限。
  • 检查所有提交上来的变量。
下面是改进的脚本：

Example #3 更安全的文件名检查

<?php
// 删除硬盘中 PHP 有权访问的文件
$username = $_SERVER['REMOTE_USER']; // 使用认证机制
$userfile = basename($_POST['user_submitted_filename']);
$homedir = "/home/$username";

$filepath = "$homedir/$userfile";

if (file_exists($filepath) && unlink($filepath)) {
    $logstring = "Deleted $filepath\n";
} else {
    $logstring = "Failed to delete $filepath\n";
}
$fp = fopen("/home/logging/filedelete.log", "a");
fwrite ($fp, $logstring);
fclose($fp);

echo htmlentities($logstring, ENT_QUOTES);
?>
然而，这样做仍然是有缺陷的。如果认证系统允许用户建立自己的登录用户名，而用户选择用"../etc/"作为用户名，系统又一次沦陷了。所以，需要加强检查：

Example #4 更安全的文件名检查

<?php
$username = $_SERVER['REMOTE_USER']; // 使用认证机制
$userfile     = $_POST['user_submitted_filename'];
$homedir = "/home/$username";

$filepath     = "$homedir/$userfile";
if (!ctype_alnum($username) || !preg_match('/^(?:[a-z0-9_-]|\.(?!\.))+$/iD', $userfile)) {
    die("Bad username/filename");
}
//后略......
?>

根据操作系统的不同，存在着各种各样需要注意的文件，包括联系到系统的设备（/dev/ 或者 COM1）、配置文件（/ect/ 文件和 .ini文件）、常用的存储区域（/home/ 或者 My Documents）等等。由于此原因，建立一个策略禁止所有权限而只开放明确允许的通常更容易些。

会话（Session）安全
Null 字符问题
安全


Null 字符问题

由于 PHP 的文件系统操作是基于 C 语言的函数的，所以它可能会以您意想不到的方式处理 Null 字符。 Null字符在 C 语言中用于标识字符串结束，一个完整的字符串是从其开头到遇见 Null 字符为止。 以下代码演示了类似的攻击：

Example #1 会被 Null 字符问题攻击的代码

<?php
$file = $_GET['file']; // "../../etc/passwd\0"
if (file_exists('/home/wwwrun/'.$file.'.php')) {
    // file_exists will return true as the file /home/wwwrun/../../etc/passwd exists
    include '/home/wwwrun/'.$file.'.php';
    // the file /etc/passwd will be included
}
?>

因此，任何用于操作文件系统的字符串（译注：特别是程序外部输入的字符串）都必须经过适当的检查。以下是上述例子的改进版本：

Example #2 验证输入的正确做法

<?php
$file = $_GET['file'];

// 对字符串进行白名单检查
switch ($file) {
    case 'main':
    case 'foo':
    case 'bar':
        include '/home/wwwrun/include/'.$file.'.php';
        break;
    default:
        include '/home/wwwrun/include/main.php';
}
?>
文件系统安全
数据库安全
文件系统安全


数据库安全

Table of Contents

  • 设计数据库
  • 连接数据库
  • 加密存储模型
  • SQL 注入

今时今日，数据库系统已经成为各个动态网站上 web 应用程序的重要组成部分。由于非常敏感和机密的数据有可能保存在数据库中，所以对数据库实施保护就显得尤为重要了。

要从数据库中提取或者存入数据，就必须经过连接数据库、发送一条合法查询、获取结果、关闭连接等步骤。目前，能完成这一系列动作的最常用的查询语言是结构化查询语言 Structured Query Language (SQL)。可以看看攻击者是如何篡改 SQL 查询语句的。

PHP 本身并不能保护数据库的安全。下面的章节只是讲述怎样用 PHP 脚本对数据库进行基本的访问和操作。

记住一条简单的原则：深入防御。保护数据库的措施越多，攻击者就越难获得和使用数据库内的信息。正确地设计和应用数据库可以减少被攻击的担忧。

Null 字符问题
设计数据库
安全


设计数据库

第一步一般都是创建数据库，除非是使用第三方的数据库服务。当创建一个数据库的时候，会指定一个所有者来执行和新建语句。通常，只有所有者（或超级用户）才有权对数据库中的对象进行任意操作。如果想让其他用户使用，就必须赋予他们权限。

应用程序永远不要使用数据库所有者或超级用户帐号来连接数据库，因为这些帐号可以执行任意的操作，比如说修改数据库结构（例如删除一个表）或者清空整个数据库的内容。

应该为程序的每个方面创建不同的数据库帐号，并赋予对数据库对象的极有限的权限。仅分配给能完成其功能所需的权限，避免同一个用户可以完成另一个用户的事情。这样即使攻击者利用程序漏洞取得了数据库的访问权限，也最多只能做到和该程序一样的影响范围。

鼓励用户不要把所有的事务逻辑都用 web 应用程序（即用户的脚本）来实现。最好用视图（view）、触发器（trigger）或者规则（rule）在数据库层面完成。当系统升级的时候，需要为数据库开辟新的接口，这时就必须重做所有的数据库客户端。除此之外，触发器还可以透明和自动地处理字段，并在调试程序和跟踪事实时提供有用的信息。

数据库安全
连接数据库
数据库安全


连接数据库

把连接建立在 SSL 加密技术上可以增加客户端和服务器端通信的安全性，或者 SSH 也可以用于加密客户端和数据库之间的连接。如果使用了这些技术的话，攻击者要监视服务器的通信或者得到数据库的信息是很困难的。

设计数据库
加密存储模型
数据库安全


加密存储模型

SSL/SSH 能保护客户端和服务器端交换的数据，但 SSL/SSH 并不能保护数据库中已有的数据。SSL 只是一个加密网络数据流的协议。

如果攻击者取得了直接访问数据库的许可（绕过 web 服务器），敏感数据就可能暴露或者被滥用，除非数据库自己保护了这些信息。对数据库内的数据加密是减少这类风险的有效途径，但是只有很少的数据库提供这些加密功能。

对于这个问题，有一个简单的解决办法，就是创建自己的加密机制，然后把它用在 PHP 程序内。PHP 有几个扩展库可以完成这个工作，比如说 Mcrypt 和 Mhash 等，它们包含多种加密运算法则。脚本在插入数据库之前先把数据加密，以后提取出来时再解密。有关加密如何工作的例子请参考相关手册。

对某些真正隐蔽的数据，如果不需要以明文的形式存在（即不用显示），可以考虑用散列算法。使用散列算法最常见的例子就是把密码经过 MD5 加密后的散列存进数据库来代替原来的明文密码。参见 crypt() 和 md5()。

Example #1 对密码字段进行散列加密

<?php

// 存储密码散列
$query  = sprintf("INSERT INTO users(name,pwd) VALUES('%s','%s');",
            pg_escape_string($username), md5($password));
$result = pg_query($connection, $query);

// 发送请求来验证用户密码
$query = sprintf("SELECT 1 FROM users WHERE name='%s' AND pwd='%s';",
            pg_escape_string($username), md5($password));
$result = pg_query($connection, $query);

if (pg_num_rows($result) > 0) {
    echo 'Welcome, $username!';
} else {
    echo 'Authentication failed for $username.';
}

?>
连接数据库
SQL 注入
数据库安全


SQL 注入

很多 web 开发者没有注意到 SQL 查询是可以被篡改的，因而把 SQL 查询当作可信任的命令。殊不知道，SQL 查询可以绕开访问控制，从而绕过身份验证和权限检查。更有甚者，有可能通过 SQL 查询去运行主机操作系统级的命令。

直接 SQL 命令注入就是攻击者常用的一种创建或修改已有 SQL 语句的技术，从而达到取得隐藏数据，或覆盖关键的值，甚至执行数据库主机操作系统命令的目的。这是通过应用程序取得用户输入并与静态参数组合成 SQL 查询来实现的。下面将会给出一些真实的例子。

由于在缺乏对输入的数据进行验证，并且使用了超级用户或其它有权创建新用户的数据库帐号来连接，攻击者可以在数据库中新建一个超级用户。

Example #1 一段实现数据分页显示的代码......也可以被用作创建一个超级用户（PostgreSQL系统）。

<?php

$offset = $argv[0]; // 注意，没有输入验证！
$query  = "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;";
$result = pg_query($conn, $query);

?>
一般的用户会点击 $offset 已被斌值的"上一页"、"下一页"的链接。原本代码只会认为 $offset 是一个数值。然而，如果有人尝试把以下语句先经过 urlencode() 处理，然后加入URL中的话：
0;
insert into pg_shadow(usename,usesysid,usesuper,usecatupd,passwd)
    select 'crack', usesysid, 't','t','crack'
    from pg_shadow where usename='postgres';
--
那么他就可以创建一个超级用户了。注意那个 0; 只不过是为了提供一个正确的偏移量以便补充完整原来的查询，使它不要出错而已。

Note:

-- 是 SQL 的注释标记，一般可以使用来它告诉 SQL 解释器忽略后面的语句。

对显示搜索结果的页面下手是一个能得到密码的可行办法。攻击者所要做的只不过是找出哪些提交上去的变量是用于 SQL 语句并且处理不当的。而这类的变量通常都被用于 SELECT 查询中的条件语句，如 WHERE, ORDER BY, LIMIT 和 OFFSET。如果数据库支持 UNION 构造的话，攻击者还可能会把一个完整的 SQL 查询附加到原来的语句上以便从任意数据表中得到密码。因此，对密码字段加密是很重要的。

Example #2 显示文章......以及一些密码（任何数据库系统）

<?php

$query  = "SELECT id, name, inserted, size FROM products
                  WHERE size = '$size'
                  ORDER BY $order LIMIT $limit, $offset;";
$result = odbc_exec($conn, $query);

?>
可以在原来的查询的基础上添加另一个 SELECT 查询来获得密码：
'
union select '1', concat(uname||'-'||passwd) as name, '1971-01-01', '0' from usertable;
--
假如上述语句（使用 ' 和 --）被加入到 $query 中的任意一个变量的话，那么就麻烦了。

SQL 中的 UPDATE 也会受到攻击。这种查询也可能像上面的例子那样被插入或附加上另一个完整的请求。但是攻击者更愿意对 SET 子句下手，这样他们就可以更改数据表中的一些数据。这种情况下必须要知道数据库的结构才能修改查询成功进行。可以通过表单上的变量名对字段进行猜测，或者进行暴力破解。对于存放用户名和密码的字段，命名的方法并不多。

Example #3 从重设密码......到获得更多权限（任何数据库系统）

<?php
$query = "UPDATE usertable SET pwd='$pwd' WHERE uid='$uid';";
?>
但是恶意的用户会把 ' or uid like'%admin%'; -- 作为变量的值提交给 $uid 来改变 admin 的密码，或者把 $pwd 的值提交为 "hehehe', admin='yes', trusted=100 "（后面有个空格）去获得更多的权限。这样做的话，查询语句实际上就变成了：
<?php

// $uid == ' or uid like'%admin%'; --
$query = "UPDATE usertable SET pwd='...' WHERE uid='' or uid like '%admin%'; --";

// $pwd == "hehehe', admin='yes', trusted=100 "
$query = "UPDATE usertable SET pwd='hehehe', admin='yes', trusted=100 WHERE
...;";

?>

下面这个可怕的例子将会演示如何在某些数据库上执行系统命令。

Example #4 攻击数据库所在主机的操作系统（MSSQL Server）

<?php

$query  = "SELECT * FROM products WHERE id LIKE '%$prod%'";
$result = mssql_query($query);

?>
如果攻击提交 a%' exec master..xp_cmdshell 'net user test testpass /ADD' -- 作为变量 $prod的值，那么 $query 将会变成
<?php

$query  = "SELECT * FROM products
                    WHERE id LIKE '%a%'
                    exec master..xp_cmdshell 'net user test testpass /ADD'--";
$result = mssql_query($query);

?>
MSSQL 服务器会执行这条 SQL 语句，包括它后面那个用于向系统添加用户的命令。如果这个程序是以 sa 运行而 MSSQLSERVER 服务又有足够的权限的话，攻击者就可以获得一个系统帐号来访问主机了。

Note:

虽然以上的例子是针对某一特定的数据库系统的，但是这并不代表不能对其它数据库系统实施类似的攻击。使用不同的方法，各种数据库都有可能遭殃。

预防措施

也许有人会自我安慰，说攻击者要知道数据库结构的信息才能实施上面的攻击。没错，确实如此。但没人能保证攻击者一定得不到这些信息，一但他们得到了，数据库有泄露的危险。如果你在用开放源代码的软件包来访问数据库，比如论坛程序，攻击者就很容得到到相关的代码。如果这些代码设计不良的话，风险就更大了。

这些攻击总是建立在发掘安全意识不强的代码上的。所以，永远不要信任外界输入的数据，特别是来自于客户端的，包括选择框、表单隐藏域和 cookie。就如上面的第一个例子那样，就算是正常的查询也有可能造成灾难。

  • 永远不要使用超级用户或所有者帐号去连接数据库。要用权限被严格限制的帐号。
  • 检查输入的数据是否具有所期望的数据格式。PHP 有很多可以用于检查输入的函数，从简单的变量函数和字符类型函数（比如 is_numeric()，ctype_digit()）到复杂的 Perl 兼容正则表达式函数都可以完成这个工作。

  • 如果程序等待输入一个数字，可以考虑使用 is_numeric()
来检查，或者直接使用 settype() 来转换它的类型，也可以用
sprintf() 把它格式化为数字。

    Example #5 一个实现分页更安全的方法

    <?php

    settype    ($offset, 'integer');
    $query = "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;";

    // 请注意格式字符串中的 %d，如果用 %s 就毫无意义了
    $query = sprintf("SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET %d;",
                         $offset);

    ?>

  • 使用数据库特定的敏感字符转义函数（比如 mysql_escape_string() 和
sql_escape_string()）把用户提交上来的非数字数据进行转义。如果数据库没有专门的敏感字符转义功能的话
addslashes() 和 str_replace()
可以代替完成这个工作。看看第一个例子，此例显示仅在查询的静态部分加上引号是不够的，查询很容易被攻破。
  • 要不择手段避免显示出任何有关数据库的信心，尤其是数据库结构。参见错误报告和错误处理函数。
  • 也可以选择使用数据库的存储过程和预定义指针等特性来抽象数库访问，使用户不能直接访问数据表和视图。但这个办法又有别的影响。

除此之外，在允许的情况下，使用代码或数据库系统保存查询日志也是一个好办法。显然，日志并不能防止任何攻击，但利用它可以跟踪到哪个程序曾经被尝试攻击过。日志本身没用，要查阅其中包含的信息才行。毕竟，更多的信息总比没有要好。

加密存储模型
错误报告
数据库安全


错误报告

对于 PHP 的安全性来说错误报告是一把双刃剑。一方面可以提高安全性，另一方面又有害。

攻击系统时经常使用的手法就是输入不正确的数据，然后查看错误提示的类型及上下文。这样做有利于攻击者收集服务器的信息以便寻找弱点。比如说，如果一个攻击者知道了一个页面所基于的表单信息，那么他就会尝试修改变量：

Example #1 用自定义的 HTML 页面攻击变量

<form method="post" action="attacktarget?username=badfoo&amp;password=badfoo">
<input type="hidden" name="username" value="badfoo" />
<input type="hidden" name="password" value="badfoo" />
</form>

通常 PHP 所返回的错误提示都能帮助开发者调试程序，它会提出哪个文件的哪些函数或代码出错，并指出错误发生的在文件的第几行，这些就是 PHP 本身所能给出的信息。很多 PHP 开发者会使用 show_source()、highlight_string() 或者 highlight_file() 函数来调试代码，但是在正式运行的网站中，这种做法可能会暴露出隐藏的变量、未检查的语法和其它的可能危及系统安全的信息。在运行一些具有内部调试处理的程序，或者使用通用调试技术是很危险的。如果让攻击者确定了程序是使用了哪种具体的调试技术，他们会尝试发送变量来打开调试功能：

Example #2 利用变量打开调式功能

<form method="post" action="attacktarget?errors=Y&amp;showerrors=1&amp;debug=1">
<input type="hidden" name="errors" value="Y" />
<input type="hidden" name="showerrors" value="1" />
<input type="hidden" name="debug" value="1" />
</form>

不管错误处理机制如何，可以探测系统错误的能力会给攻击者提供更多信息。

比如说，PHP 的独有的错误提示风格可以说明系统在运行 PHP。如果攻击者在寻找一个 .html 为页面，想知道其后台的技术（为了寻找系统弱点），他们就会把错误的数据提交上去，然后就有可以得知系统是基于 PHP 的了。

一个函数错误就可能暴露系统正在使用的数据库，或者为攻击者提供有关网页、程序或设计方面的有用信息。攻击者往往会顺藤摸瓜地找到开放的数据库端口，以及页面上某些 bug 或弱点等。比如说，攻击者可以一些不正常的数据使程序出错，来探测脚本中认证的顺序（通过错误提示的行号数字）以及脚本中其它位置可能泄露的信息。

一个文件系统或者 PHP 的错误就会暴露 web 服务器具有什么权限，以及文件在服务器上的组织结构。开发者自己写的错误代码会加剧此问题，导致泄漏了原本隐藏的信息。

有三个常用的办法处理这些问题。第一个是彻底地检查所有函数，并尝试弥补大多数错误。第二个是对在线系统彻底关闭错误报告。第三个是使用 PHP 自定义的错误处理函数创建自己的错误处理机制。根据不同的安全策略，三种方法可能都适用。

一个能提前阻止这个问题发生的方法就是利用 error_reporting() 来帮助使代码更安全并发现变量使用的危险之处。在发布程序之前，先打开 E_ALL 测试代码，可以帮你很快找到变量使用不当的地方。一旦准备正式发布，就应该把 error_reporting() 的参数设为 0 来彻底关闭错误报告或者把 php.ini 中的 display_errors 设为 off 来关闭所有的错误显示以将代码隔绝于探测。当然，如果要迟一些再这样做，就不要忘记打开 ini 文件内的 log_errors 选项，并通过 error_log 指定用于记录错误信息的文件。

Example #3 用 E_ALL 来查找危险的变量

<?php
if ($username) {  // Not initialized or checked before usage
    $good_login = 1;
}
if ($good_login == 1) { // If above test fails, not initialized or checked before usage
    readfile ("/highly/sensitive/data/index.html");
}
?>

SQL 注入
使用 Register Globals
安全


使用 Register Globals

Warning

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

可能 PHP 中最具争议的变化就是从 PHP » 4.2.0 版开始配置文件中 PHP 指令 register_globals 的默认值从 on 改为 off 了。对此选项的依赖是如此普遍以至于很多人根本不知道它的存在而以为 PHP 本来就是这么工作的。本节会解释用这个指令如何写出不安全的代码，但要知道这个指令本身没有不安全的地方，误用才会。

当 register_globals 打开以后，各种变量都被注入代码，例如来自 HTML 表单的请求变量。再加上 PHP 在使用变量之前是无需进行初始化的，这就使得更容易写出不安全的代码。这是个很艰难的抉择，但 PHP 社区还是决定默认关闭此选项。当打开时，人们使用变量时确实不知道变量是哪里来的，只能想当然。但是 register_globals 的关闭改变了这种代码内部变量和客户端发送的变量混杂在一起的糟糕情况。下面举一个错误使用 register_globals 的例子：

Example #1 错误使用 register_globals = on 的例子

<?php
// 当用户合法的时候，赋值 $authorized = true
if (authenticated_user()) {
    $authorized = true;
}

// 由于并没有事先把 $authorized 初始化为 false，
// 当 register_globals 打开时，可能通过GET auth.php?authorized=1 来定义该变量值
// 所以任何人都可以绕过身份验证
if ($authorized) {
    include "/highly/sensitive/data.php";
}
?>

当 register_globals = on 的时候，上面的代码就会有危险了。如果是 off，$authorized 就不能通过如 URL 请求等方式来改变，这样就好多了，尽管初始化变量是一个良好的编程习惯。比如说，如果在上面的代码执行之前加入 $authorized = false 的话，无论 register_globals 是 on 还是 off 都可以，因为用户状态被初始化为未经认证。

另一个例子是关于会话的。当 register_globals = on 的时候，$username 也可以用在下面的代码中，但要意识到 $username 也可能会从其它途径进来，比如说通过 URL 的 GET。

Example #2 使用会话时同时兼容 register_globals on 和 off 的例子

<?php
// 我们不知道 $username 的来源，但很清楚 $_SESSION 是
// 来源于会话数据
if (isset($_SESSION['username'])) {

    echo "Hello <b>{$_SESSION['username']}</b>";

} else {

    echo "Hello <b>Guest</b><br />";
    echo "Would you like to login?";

}
?>

采取相应的预防措施以便在伪造变量输入的时候给予警告是完全有可能的。如果事先确切知道变量是哪里来的，就可以检查所提交的数据是否是从不正当的表单提交而来。不过这不能保证变量未被伪造，这需要攻击者去猜测应该怎样去伪造。如果不在乎请求数据来源的话，可以使用 $_REQUEST 数组，它包括了 GET、POST 和 COOKIE 的所有数据。详情可参见本手册的来自 PHP 之外的变量。

Example #3 探测有害变量

<?php
if (isset($_COOKIE['MAGIC_COOKIE'])) {

    // MAGIC_COOKIE 来自 cookie
    // 这样做是确保是来自 cookie 的数据

} elseif (isset($_GET['MAGIC_COOKIE']) || isset($_POST['MAGIC_COOKIE'])) {

   mail("admin@example.com", "Possible breakin attempt", $_SERVER['REMOTE_ADDR']);
   echo "Security violation, admin has been alerted.";
   exit;

} else {

   // 这一次请求中并没有设置 MAGIC_COOKIE 变量

}
?>

当然，单纯地关闭 register_globals 并不代表所有的代码都安全了。对于每一段提交上来的数据，都要对其进行具体的检查。永远要验证用户数据和对变量进行初始化！把 error_reporting() 设为 E_NOTICE 级别可以检查未初始化的变量。

更多关于模拟 register_globals 为 on 或 off 的信息，请见此 FAQ。

Note: Superglobal 可用性说明：

自 PHP 4.1.0 起可以使用 Superglobal 数组，例如 $_GET，$_POST，和 $_SERVER，等等。更多信息请阅读手册中的 superglobals 章节。

错误报告
用户提交的数据
安全


用户提交的数据

很多 PHP 程序所存在的重大弱点并不是 PHP 语言本身的问题，而是编程者的安全意识不高而导致的。因此，必须时时注意每一段代码可能存在的问题，去发现非正确数据提交时可能造成的影响。

Example #1 危险的变量用法

<?php
// 从用户目录中删除一个文件，或者......能删除更多的东西？
unlink ($evil_var);

// 记录用户的登陆，或者......能否在 /etc/passwd 添加数据？
fwrite ($fp, $evil_var);

// 执行一些普通的命令，或者......可以执行 rm -rf * ？
system ($evil_var);
exec ($evil_var);

?>

必须时常留意你的代码，以确保每一个从客户端提交的变量都经过适当的检查，然后问自己以下一些问题：

  • 此脚本是否只能影响所预期的文件？
  • 非正常的数据被提交后能否产生作用？
  • 此脚本能用于计划外的用途吗？
  • 此脚本能否和其它脚本结合起来做坏事？
  • 是否所有的事务都被充分记录了？
在写代码的时候问自己这些问题，否则以后可能要为了增加安全性而重写代码了。注意了这些问题的话，也许还不完全能保证系统的安全，但是至少可以提高安全性。

还可以考虑关闭 register_globals，magic_quotes 或者其它使编程更方便但会使某个变量的合法性，来源和其值被搞乱的设置。在开发时，可以使用 error_reporting(E_ALL) 模式帮助检查变量使用前是否有被检查或被初始化，这样就可以防止某些非正常的数据的挠乱了。

使用 Register Globals
魔术引号
安全


魔术引号

Table of Contents

  • 什么是魔术引号
  • 为什么要用魔术引号
  • 为什么不用魔术引号
  • 关闭魔术引号
Warning

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

魔术引号（Magic Quote）是一个自动将进入 PHP 脚本的数据进行转义的过程。最好在编码时不要转义而在运行时根据需要而转义。

用户提交的数据
什么是魔术引号
安全


什么是魔术引号

Warning

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

当打开时，所有的 '（单引号），"（双引号），\（反斜线）和 NULL 字符都会被自动加上一个反斜线进行转义。这和 addslashes() 作用完全相同。

一共有三个魔术引号指令：

  • magic_quotes_gpc 影响到 HTTP 请求数据（GET，POST 和 COOKIE）。不能在运行时改变。在 PHP 中默认值为 on。 参见 get_magic_quotes_gpc()。
  • magic_quotes_runtime 如果打开的话，大部份从外部来源取得数据并返回的函数，包括从数据库和文本文件，所返回的数据都会被反斜线转义。该选项可在运行的时改变，在 PHP 中的默认值为 off。 参见 set_magic_quotes_runtime() 和 get_magic_quotes_runtime()。
  • magic_quotes_sybase 如果打开的话，将会使用单引号对单引号进行转义而非反斜线。此选项会完全覆盖 magic_quotes_gpc。如果同时打开两个选项的话，单引号将会被转义成 ''。而双引号、反斜线 和 NULL 字符将不会进行转义。 如何取得其值参见 ini_get()。
魔术引号
为什么要用魔术引号
魔术引号


为什么要用魔术引号

Warning

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

  • 没有理由再使用魔术引号，因为它不再是 PHP 支持的一部分。 不过它帮助了新手在不知不觉中写出了更好（更安全）的代码。 但是在处理代码的时候，最好是更改你的代码而不是依赖于魔术引号的开启。 为什么这个功能存在？是为了阻止SQL 注入。 在今天，开发者能够更好得意识到了安全问题，并最终使用数据库转移机制或者 prepared 语句来取代魔术引号功能。
什么是魔术引号
为什么不用魔术引号
魔术引号


为什么不用魔术引号

Warning

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

  • 可移植性 编程时认为其打开或并闭都会影响到移植性。可以用 get_magic_quotes_gpc() 来检查是否打开，并据此编程。
  • 性能 由于并不是每一段被转义的数据都要插入数据库的，如果所有进入 PHP 的数据都被转义的话，那么会对程序的执行效率产生一定的影响。在运行时调用转义函数（如 addslashes()）更有效率。 尽管 php.ini-dist 默认打开了这个选项，但是 php.ini-recommended 默认却关闭了它，主要是出于性能的考虑。
  • 不便 由于不是所有数据都需要转义，在不需要转义的地方看到转义的数据就很烦。比如说通过表单发送邮件，结果看到一大堆的 \'。针对这个问题，可以使用 stripslashes() 函数处理。
为什么要用魔术引号
关闭魔术引号
魔术引号


关闭魔术引号

magic_quotes_gpc 指令只能在系统级关闭，不能在运行时。也就是说不能用 ini_set()。

Example #1 在服务器端关闭魔术引号

下面是一个通过 php.ini 文件把这些选项设为 Off 的范例。更多信息请参见本手册的怎样修改配置设定。

; Magic quotes
;

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off

如果不能修改服务器端的配置文件，使用 .htaccess 也可以。范例如下：

php_flag magic_quotes_gpc Off

为了能写出移植性较强的代码（可以运行于任何环境），例如不能修改服务器配置的情况，下面的例子可以在运行时关闭 magic_quotes_gpc。但是这样做比较低效，适当的修改配置才是更好的办法。

Example #2 在运行时关闭魔术引号

<?php
if (get_magic_quotes_gpc()) {
    function stripslashes_deep($value)
    {
        $value = is_array($value) ?
                    array_map('stripslashes_deep', $value) :
                    stripslashes($value);

        return $value;
    }

    $_POST = array_map('stripslashes_deep', $_POST);
    $_GET = array_map('stripslashes_deep', $_GET);
    $_COOKIE = array_map('stripslashes_deep', $_COOKIE);
    $_REQUEST = array_map('stripslashes_deep', $_REQUEST);
}
?>

为什么不用魔术引号
隐藏 PHP
魔术引号


隐藏 PHP

一般而言，通过隐藏的手段提高安全性被认为是作用不大的做法。但某些情况下，尽可能的多增加一份安全性都是值得的。

一些简单的方法可以帮助隐藏 PHP，这样做可以提高攻击者发现系统弱点的难度。在 php.ini 文件里设置 expose_php = off ，可以减少他们能获得的有用信息。

另一个策略就是让 web 服务器用 PHP 解析不同扩展名。无论是通过 .htaccess 文件还是 Apache 的配置文件，都可以设置能误导攻击者的文件扩展名：

Example #1 把 PHP 隐藏为另一种语言

# 使PHP看上去像其它的编程语言
AddType application/x-httpd-php .asp .py .pl
或者干脆彻底隐藏它：

Example #2 使用未知的扩展名作为 PHP 的扩展名

# 使 PHP 看上去像未知的文件类型
AddType application/x-httpd-php .bop .foo .133t
或者把它隐藏为 HTML 页面，这样所有的 HTML 文件都会通过 PHP 引擎，会为服务器增加一些负担：

Example #3 用 HTML 做 PHP 的文件后缀

# 使 PHP 代码看上去像 HTML 页面
AddType application/x-httpd-php .htm .html
要让此方法生效，必须把 PHP 文件的扩展名改为以上的扩展名。这样就通过隐藏来提高了安全性，虽然防御能力很低而且有些缺点。

关闭魔术引号
保持更新
安全


保持更新

PHP 和其它的大型系统一样，在持续的研究和改进中。每一个版本都会有或多或少的改进来增强安全性和修复任何缺陷，配置问题以及任何会影响到整个系统安全与性能的问题。

和其它系统级的脚本语言一样，最好的途径是经常更新，并时刻留意最新版本及其改变。

隐藏 PHP
特点
安全


特点

  • 用 PHP 进行 HTTP 认证
  • Cookie
  • 会话
  • 处理 XForms
  • 文件上传处理
    • POST 方法上传
    • 错误信息说明
    • 常见缺陷
    • 上传多个文件
    • 对 PUT 方法的支持
  • 使用远程文件
  • 连接处理
  • 数据库持久连接
  • 安全模式
    • 保安措施和安全模式
    • 被安全模式限制或屏蔽的函数
  • PHP 的命令行模式
    • 内置Web Server
    • INI 配置
  • 垃圾回收机制
    • 引用计数基本知识
    • 回收周期(Collecting Cycles)
    • 性能方面考虑的因素
  • DTrace 动态跟踪
    • PHP 和 DTrace 介绍
    • 使用 PHP 和 DTrace
    • 使用 SystemTap 监控 PHP DTrace 静态探针
保持更新
用 PHP 进行 HTTP 认证
PHP 手册


用 PHP 进行 HTTP 认证

PHP 的 HTTP 认证机制仅在 PHP 以 Apache 模块方式运行时才有效，因此该功能不适用于 CGI 版本。在 Apache 模块的 PHP 脚本中，可以用 header() 函数来向客户端浏览器发送"Authentication Required"信息，使其弹出一个用户名／密码输入窗口。当用户输入用户名和密码后，包含有 URL 的 PHP 脚本将会加上预定义变量 PHP_AUTH_USER，PHP_AUTH_PW 和 AUTH_TYPE 被再次调用，这三个变量分别被设定为用户名，密码和认证类型。预定义变量保存在 $_SERVER 或者 $HTTP_SERVER_VARS 数组中。支持"Basic"和"Digest"（自 PHP 5.1.0 起）认证方法。请参阅 header() 函数以获取更多信息。

Note: PHP 版本问题

Autoglobals 全局变量，包括 $_SERVER等，自 PHP » 4.1.0 起有效，$HTTP_SERVER_VARS 从 PHP 3 开始有效。

以下是在页面上强迫客户端认证的脚本范例：

Example #1 Basic HTTP 认证范例

<?php
  if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="My Realm"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Text to send if user hits Cancel button';
    exit;
  } else {
    echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
    echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
  }
?>

Example #2 Digest HTTP 认证范例

本例演示怎样实现一个简单的 Digest HTTP 认证脚本。更多信息请参考 » RFC 2617。

<?php
$realm = 'Restricted area';

//user => password
$users = array('admin' => 'mypass', 'guest' => 'guest');

if (empty($_SERVER['PHP_AUTH_DIGEST'])) {
    header('HTTP/1.1 401 Unauthorized');
    header('WWW-Authenticate: Digest realm="'.$realm.
           '" qop="auth" nonce="'.uniqid().'" opaque="'.md5($realm).'"');

    die('Text to send if user hits Cancel button');
}

// analyze the PHP_AUTH_DIGEST variable
if (!($data = http_digest_parse($_SERVER['PHP_AUTH_DIGEST'])) ||
    !isset($users[$data['username']]))
    die('Wrong Credentials!');

// generate the valid response
$A1 = md5($data['username'] . ':' . $realm . ':' . $users[$data['username']]);
$A2 = md5($_SERVER['REQUEST_METHOD'].':'.$data['uri']);
$valid_response = md5($A1.':'.$data['nonce'].':'.$data['nc'].':'.$data['cnonce'].':'.$data['qop'].':'.$A2);

if ($data['response'] != $valid_response)
    die('Wrong Credentials!');

// ok, valid username & password
echo 'Your are logged in as: ' . $data['username'];

// function to parse the http auth header
function http_digest_parse($txt)
{
    // protect against missing data
    $needed_parts = array('nonce'=>1, 'nc'=>1, 'cnonce'=>1, 'qop'=>1, 'username'=>1, 'uri'=>1, 'response'=>1);
    $data = array();

    preg_match_all('@(\w+)=([\'"]?)([a-zA-Z0-9=./\_-]+)\2@', $txt, $matches, PREG_SET_ORDER);

    foreach ($matches as $m) {
        $data[$m[1]] = $m[3];
        unset($needed_parts[$m[1]]);
    }

    return $needed_parts ? false : $data;
}
?>

Note: 兼容性问题

在编写 HTTP 标头代码时请格外小心。为了对所有的客户端保证兼容性，关键字"Basic"的第一个字母必须大写为"B"，分界字符串必须用双引号（不是单引号）引用；并且在标头行 HTTP/1.0 401 中，在 401 前必须有且仅有一个空格。

在以上例子中，仅仅只打印出了 PHP_AUTH_USER 和 PHP_AUTH_PW 的值，但在实际运用中，可能需要对用户名和密码的合法性进行检查。或许进行数据库的查询，或许从 dbm 文件中检索。

注意有些 Internet Explorer 浏览器本身有问题。它对标头的顺序显得似乎有点吹毛求疵。目前看来在发送 HTTP/1.0 401 之前先发送 WWW-Authenticate 标头似乎可以解决此问题。

自 PHP 4.3.0 起，为了防止有人通过编写脚本来从用传统外部机制认证的页面上获取密码，当外部认证对特定页面有效，并且安全模式被开启时，PHP_AUTH 变量将不会被设置。但无论如何，REMOTE_USER 可以被用来辨认外部认证的用户，因此可以用 $_SERVER['REMOTE_USER'] 变量。

Note: 配置说明

PHP 用是否有 AuthType 指令来判断外部认证机制是否有效。

注意，这仍然不能防止有人通过未认证的 URL 来从同一服务器上认证的 URL 上偷取密码。

Netscape Navigator 和 Internet Explorer 浏览器都会在收到 401 的服务端返回信息时清空所有的本地浏览器整个域的 Windows 认证缓存。这能够有效的注销一个用户，并迫使他们重新输入他们的用户名和密码。有些人用这种方法来使登录状态"过期"，或者作为"注销"按钮的响应行为。

Example #3 强迫重新输入用户名和密码的 HTTP 认证的范例

<?php
  function authenticate() {
    header('WWW-Authenticate: Basic realm="Test Authentication System"');
    header('HTTP/1.0 401 Unauthorized');
    echo "You must enter a valid login ID and password to access this resource\n";
    exit;
  }

  if (!isset($_SERVER['PHP_AUTH_USER']) ||
      ($_POST['SeenBefore'] == 1 && $_POST['OldAuth'] == $_SERVER['PHP_AUTH_USER'])) {
   authenticate();
  }
  else {
   echo "<p>Welcome: {$_SERVER['PHP_AUTH_USER']}<br />";
   echo "Old: {$_REQUEST['OldAuth']}";
   echo "<form action='{$_SERVER['PHP_SELF']}' METHOD='post'>\n";
   echo "<input type='hidden' name='SeenBefore' value='1' />\n";
   echo "<input type='hidden' name='OldAuth' value='{$_SERVER['PHP_AUTH_USER']}' />\n";
   echo "<input type='submit' value='Re Authenticate' />\n";
   echo "</form></p>\n";
  }

该行为对于 HTTP 的 Basic 认证标准来说并不是必须的，因此不能依靠这种方法。对 Lynx 浏览器的测试表明 Lynx 在收到 401 的服务端返回信息时不会清空认证文件，因此只要对认证文件的检查要求没有变化，只要用户点击"后退"按钮，再点击"前进"按钮，其原有资源仍然能够被访问。不过，用户可以通过按"_"键来清空他们的认证信息。

同时请注意，在 PHP 4.3.3 之前，由于微软 IIS 的限制，HTTP 认证无法工作在 IIS 服务器的 CGI 模式下。为了能够使其在 PHP 4.3.3 以上版本能够工作，需要编辑 IIS 的设置"目录安全"。点击"编辑"并且只选择"匿名访问"，其它所有的复选框都应该留空。

另一个限制是在 IIS 的 ISAPI 模式下使用 PHP 4 的时候，无法使用 PHP_AUTH_* 变量，而只能使用 HTTP_AUTHORIZATION。例如，考虑如下代码：list($user, $pw) = explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));。

Note: IIS 注意事项
要 HTTP 认证能够在 IIS 下工作，PHP 配置选项 cgi.rfc2616_headers 必须设置成 0（默认值）。

Note:

如果安全模式被激活，脚本的 UID 会被加到 WWW-Authenticate 标头的 realm 部分。

特点
Cookie
特点


Cookie

PHP 透明地支持 HTTP cookie。cookie 是一种在远程浏览器端储存数据并以此来跟踪和识别用户的机制。可以用 setcookie() 或 setrawcookie() 函数来设置 cookie。cookie 是 HTTP 标头的一部分，因此 setcookie() 函数必须在其它信息被输出到浏览器前调用，这和对 header() 函数的限制类似。可以使用输出缓冲函数来延迟脚本的输出，直到按需要设置好了所有的 cookie 或者其它 HTTP 标头。

如果 variables_order 中包括"C"，则任何从客户端发送的 cookie 都会被自动包括进 $_COOKIE 自动全局数组。如果希望对一个 cookie 变量设置多个值，则需在 cookie 的名称后加 [] 符号。

根据 register_globals 的设置，可以从 cookie 建立普通的 PHP 变量。但是不推荐依赖于此特性，因为出于安全原因此选项通常是关闭的。在早期的 PHP 版本中，当 track_vars 配置选项打开时（此选项自 PHP 4.0.3 后总是打开的），系统还会设定 $HTTP_COOKIE_VARS。

关于更多细节以及有关浏览器问题的注意事项，参见 setcookie() 和 setrawcookie() 函数。

用 PHP 进行 HTTP 认证
会话
特点


会话

会话机制(Session）在PHP 中用于保持用户连续访问Web应用时的相关数据，有助于创建高度定制化的程序、增加站点的吸引力。关于会话机制的更多信息，请参见会话处理函数一章。

Cookie
处理 XForms
特点


处理 XForms

» XForms 定义了一种传统 web 表单的变种，它可以用于更多的平台和浏览器，甚至非传统的媒体例如 PDF 文档。

XFroms 的第一个关键区别是表单怎样发送到客户端。» XForms for HTML Authors 包含有怎样创建 XForms 的详细说明。本节只看一个简单例子。

Example #1 一个简单的 XForms 搜索表单

<h:html xmlns:h="http://www.w3.org/1999/xhtml"
        xmlns="http://www.w3.org/2002/xforms">
<h:head>
 <h:title>Search</h:title>
 <model>
  <submission action="http://example.com/search"
              method="post" xml:id="s"/>
 </model>
</h:head>
<h:body>
 <h:p>
  <input ref="q"><label>Find</label></input>
  <submit submission="s"><label>Go</label></submit>
 </h:p>
</h:body>
</h:html>

上面的表单显示一个文本输入框（命名为 q）和一个提交按钮。当点击提交按钮，表单将被发送到 action 所指示的页面。

下面是从 web 应用端的角度看上去的区别。在普通的 HTML 表单中，数据发送格式是 application/x-www-form-urlencoded，在 XForms 的世界中，该信息是以 XML 格式数据发送的。

如果选择使用 XForms，那么数据为 XML，这种情况下，在 $HTTP_RAW_POST_DATA 中包含了由浏览器产生的 XML 文档，可以将其传递给所偏好的 XSLT 引擎或者文档解析器。

如果对格式不感兴趣，只想让数据进入到传统的 $_POST 变量中，可以指示客户端浏览器将其以 application/x-www-form-urlencoded 格式发送，只要将 method 属性改成 urlencoded-post 即可。

Example #2 使用 XForm 来产生 $_POST

<h:html xmlns:h="http://www.w3.org/1999/xhtml"
        xmlns="http://www.w3.org/2002/xforms">
<h:head>
 <h:title>Search</h:title>
 <model>
  <submission action="http://example.com/search"
              method="urlencoded-post" xml:id="s"/>
 </model>
</h:head>
<h:body>
 <h:p>
  <input ref="q"><label>Find</label></input>
  <submit submission="s"><label>Go</label></submit>
 </h:p>
</h:body>
</h:html>

Note: 在写本文档时，许多浏览器还不支持 XForms。如果上面例子失败请检查自己的浏览器版本。

会话
文件上传处理
特点


文件上传处理

Table of Contents

  • POST 方法上传
  • 错误信息说明
  • 常见缺陷
  • 上传多个文件
  • 对 PUT 方法的支持
处理 XForms
POST 方法上传
特点


POST 方法上传

本特性可以使用户上传文本和二进制文件。用 PHP 的认证和文件操作函数，可以完全控制允许哪些人上传以及文件上传后怎样处理。

PHP 能够接受任何来自符合 RFC-1867 标准的浏览器（包括 Netscape Navigator 3 及更高版本，打了补丁的 Microsoft Internet Explorer 3 或者更高版本）上传的文件。

Note: 相关的设置

请参阅 php.ini 的 file_uploads，upload_max_filesize，upload_tmp_dir post_max_size 以及 max_input_time 设置选项。

请注意 PHP 也支持 PUT 方法的文件上传，Netscape Composer 和 W3C 的 Amaya 客户端使用这种方法。请参阅对 PUT 方法的支持以获取更多信息。

Example #1 文件上传表单

可以如下建立一个特殊的表单来支持文件上传：

<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="__URL__" method="POST">
    <!-- MAX_FILE_SIZE must precede the file input field -->
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    <!-- Name of input element determines name in $_FILES array -->
    Send this file: <input name="userfile" type="file" />
    <input type="submit" value="Send File" />
</form>

以上范例中的 __URL__ 应该被换掉，指向一个真实的 PHP 文件。

MAX_FILE_SIZE 隐藏字段（单位为字节）必须放在文件输入字段之前，其值为接收文件的最大尺寸。这是对浏览器的一个建议，PHP 也会检查此项。在浏览器端可以简单绕过此设置，因此不要指望用此特性来阻挡大文件。实际上，PHP 设置中的上传文件最大值是不会失效的。但是最好还是在表单中加上此项目，因为它可以避免用户在花时间等待上传大文件之后才发现文件过大上传失败的麻烦。

Note:

要确保文件上传表单的属性是 enctype="multipart/form-data"，否则文件上传不了。

全局变量 $_FILES 自 PHP 4.1.0 起存在（在更早的版本中用 $HTTP_POST_FILES 替代）。此数组包含有所有上传的文件信息。

以上范例中 $_FILES 数组的内容如下所示。我们假设文件上传字段的名称如上例所示，为 userfile。名称可随意命名。

$_FILES['userfile']['name']

客户端机器文件的原名称。

$_FILES['userfile']['type']

文件的 MIME 类型，如果浏览器提供此信息的话。一个例子是"image/gif"。不过此 MIME 类型在 PHP 端并不检查，因此不要想当然认为有这个值。

$_FILES['userfile']['size']

已上传文件的大小，单位为字节。

$_FILES['userfile']['tmp_name']

文件被上传后在服务端储存的临时文件名。

$_FILES['userfile']['error']

和该文件上传相关的错误代码。此项目是在 PHP 4.2.0 版本中增加的。

文件被上传后，默认地会被储存到服务端的默认临时目录中，除非 php.ini 中的 upload_tmp_dir 设置为其它的路径。服务端的默认临时目录可以通过更改 PHP 运行环境的环境变量 TMPDIR 来重新设置，但是在 PHP 脚本内部通过运行 putenv() 函数来设置是不起作用的。该环境变量也可以用来确认其它的操作也是在上传的文件上进行的。

Example #2 使文件上传生效

请查阅函数 is_uploaded_file() 和 move_uploaded_file() 以获取进一步的信息。以下范例处理由表单提供的文件上传。

<?php
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.

$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo "File is valid, and was successfully uploaded.\n";
} else {
    echo "Possible file upload attack!\n";
}

echo 'Here is some more debugging info:';
print_r($_FILES);

print "</pre>";

?>

接受上传文件的 PHP 脚本为了决定接下来要对该文件进行哪些操作，应该实现任何逻辑上必要的检查。例如可以用 $_FILES['userfile']['size'] 变量来排除过大或过小的文件，也可以通过 $_FILES['userfile']['type'] 变量来排除文件类型和某种标准不相符合的文件，但只把这个当作一系列检查中的第一步，因为此值完全由客户端控制而在 PHP 端并不检查。自 PHP 4.2.0 起，还可以通过 $_FILES['userfile']['error'] 变量来根据不同的错误代码来计划下一步如何处理。不管怎样，要么将该文件从临时目录中删除，要么将其移动到其它的地方。

如果表单中没有选择上传的文件，则 PHP 变量 $_FILES['userfile']['size'] 的值将为 0，$_FILES['userfile']['tmp_name'] 将为空。

如果该文件没有被移动到其它地方也没有被改名，则该文件将在表单请求结束时被删除。

Example #3 上传一组文件

PHP 的 HTML 数组特性甚至支持文件类型。

<form action="" method="post" enctype="multipart/form-data">
<p>Pictures:
<input type="file" name="pictures[]" />
<input type="file" name="pictures[]" />
<input type="file" name="pictures[]" />
<input type="submit" value="Send" />
</p>
</form>
<?php
foreach ($_FILES["pictures"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
        $name = $_FILES["pictures"]["name"][$key];
        move_uploaded_file($tmp_name, "data/$name");
    }
}
?>
文件上传处理
错误信息说明
文件上传处理


错误信息说明

从 PHP 4.2.0 开始，PHP 将随文件信息数组一起返回一个对应的错误代码。该代码可以在文件上传时生成的文件数组中的 error 字段中被找到，也就是 $_FILES['userfile']['error']。

UPLOAD_ERR_OK

其值为 0，没有错误发生，文件上传成功。

UPLOAD_ERR_INI_SIZE

其值为 1，上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。

UPLOAD_ERR_FORM_SIZE

其值为 2，上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。

UPLOAD_ERR_PARTIAL

其值为 3，文件只有部分被上传。

UPLOAD_ERR_NO_FILE

其值为 4，没有文件被上传。

UPLOAD_ERR_NO_TMP_DIR

其值为 6，找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。

UPLOAD_ERR_CANT_WRITE

其值为 7，文件写入失败。PHP 5.1.0 引进。

Note:

以上值在 PHP 4.3.0 之后变成了 PHP 常量。

POST 方法上传
常见缺陷
文件上传处理


常见缺陷

对 MAX_FILE_SIZE 设置的值，不能大于 ini 设置中 upload_max_filesize 选项设置的值。其默认值为 2M 字节。

如果内存限制设置被激活，可能需要将 memory_limit 设置的更大些，请确认 memory_limit 的设置足够的大。

如果 max_execution_time 设置的值太小，脚本运行的时间可能会超过该设置。因此，也请保证 max_execution_time 足够的大。

Note: max_execution_time 仅仅只影响脚本本身运行的时间。任何其它花费在脚本运行之外的时间，诸如用函数 system() 对系统的调用、sleep() 函数的使用、数据库查询、文件上传等，在计算脚本运行的最大时间时都不包括在内。

Warning

max_input_time 以秒为单位设定了脚本接收输入的最大时间，包括文件上传。对于较大或多个文件，或者用户的网速较慢时，可能会超过默认的 60 秒。

如果 post_max_size 设置的值太小，则较大的文件会无法被上传。因此，请保证 post_max_size 的值足够的大。

不对正在操作的文件进行验证可能意味着用户能够访问其它目录下的敏感信息。

请注意 CERN httpd 似乎会丢弃它从客户端获得的 content-type mime 头信息中第一个空格后所有的内容，基于这一点，CERN httpd 不支持文件上传特性。

鉴于文件路径的表示方法有很多种，我们无法确保用使用各种外语的文件名（尤其是包含空格的）能够被正确的处理。

开发人员不应将普通的输入字段和文件上传的字段混用同一个表单变量（例如都用 foo[]）。

错误信息说明
上传多个文件
文件上传处理


上传多个文件

可以对 input 域使用不同的 name 来上传多个文件。

PHP 支持同时上传多个文件并将它们的信息自动以数组的形式组织。要完成这项功能，需要在 HTML 表单中对文件上传域使用和多选框与复选框相同的数组式提交语法。

Note:

对多文件上传的支持是在 PHP 3.0.10 版本添加的。

Example #1 上传多个文件

<form action="file-upload.php" method="post" enctype="multipart/form-data">
  Send these files:<br />
  <input name="userfile[]" type="file" /><br />
  <input name="userfile[]" type="file" /><br />
  <input type="submit" value="Send files" />
</form>

当以上表单被提交后，数组 $_FILES['userfile']，$_FILES['userfile']['name'] 和 $_FILES['userfile']['size'] 将被初始化（在 PHP 4.1.0 以前版本是 $HTTP_POST_FILES）。如果 register_globals 的设置为 on，则和文件上传相关的全局变量也将被初始化。所有这些提交的信息都将被储存到以数字为索引的数组中。

例如，假设名为 /home/test/review.html 和 /home/test/xwp.out 的文件被提交，则 $_FILES['userfile']['name'][0] 的值将是 review.html，而 $_FILES['userfile']['name'][1] 的值将是 xwp.out。类似的，$_FILES['userfile']['size'][0] 将包含文件 review.html 的大小，依此类推。

此外也同时设置了 $_FILES['userfile']['name'][0]，$_FILES['userfile']['tmp_name'][0]，$_FILES['userfile']['size'][0] 以及 $_FILES['userfile']['type'][0]。

常见缺陷
对 PUT 方法的支持
文件上传处理


对 PUT 方法的支持

PHP 3 和 PHP 4 对 PUT 方法的支持有所不同。在 PHP 4 中，必须使用标准的输入流来读取一个 HTTP PUT 的内容。

Example #1 用 PHP 4 来保存 HTTP PUT 文件

<?php
/* PUT data comes in on the stdin stream */
$putdata = fopen("php://stdin", "r");

/* Open a file for writing */
$fp = fopen("myputfile.ext", "w");

/* Read the data 1 KB at a time
   and write to the file */
while ($data = fread($putdata, 1024))
  fwrite($fp, $data);

/* Close the streams */
fclose($fp);
fclose($putdata);
?>

Note:

以下文档的内容仅对 PHP 3 适用。

PHP 提供对诸如 Netscape Composer 和 W3C Amaya 等客户端使用的 HTTP PUT 方法的支持。PUT 请求比文件上传要简单的多，它们一般的形式为：

PUT /path/filename.html HTTP/1.1

这通常意味着远程客户端会将其中的 /path/filename.html 存储到 web 目录树。让 Apache 或者 PHP 自动允许所有人覆盖 web 目录树下的任何文件显然是很不明智的。因此，要处理类似的请求，必须先告诉 web 服务器需要用特定的 PHP 脚本来处理该请求。在 Apache 下，可以用 Script 选项来设置。它可以被放置到 Apache 配置文件中几乎所有的位置。通常我们把它放置在 <Directory> 区域或者 <Virtualhost> 区域。可以用如下一行来完成该设置：

Script PUT /put.php

这将告诉 Apache 将所有对 URI 的 PUT 请求全部发送到 put.php 脚本，这些 URI 必须和 PUT 命令中的内容相匹配。当然，这是建立在 PHP 支持 .php 扩展名，并且 PHP 已经在运行的假设之上。

在 put.php 文件中，可以作如下操作：

<?php copy($PHP_UPLOADED_FILE_NAME, $DOCUMENT_ROOT . $REQUEST_URI); ?>

这将会把文件拷贝到远程客户端请求的位置。可能希望在文件拷贝之前进行一些检查或者对用户认证之类的操作。这里唯一的问题是，当 PHP 接受到 PUT 方法的请求时，它将会把上传的文件储存到和其它用 POST 方法处理过的文件相同的临时目录。在请求结束时，临时文件将被删除。因此，用来处理 PUT 的 PHP 脚本必须将该文件拷贝到其它的地方。该临时文件的文件名被储存在变量 $PHP_PUT_FILENAME 中，也可以通过 $REQUEST_URI 变量获得建议的目标文件名（在非 Apache web 服务器上可能会有较大的变化）。该目标文件名是由远程客户端指定的。也可以不听从改客户端的信息，而把所有上传的文件存储到一个特殊的上传目录下。

上传多个文件
使用远程文件
文件上传处理


使用远程文件

只要在 php.ini 文件中激活了 allow_url_fopen 选项，就可以在大多数需要用文件名作为参数的函数中使用 HTTP 和 FTP 的 URL 来代替文件名。同时，也可以在 include、include_once、require 及 require_once 语句中使用 URL。PHP 所支持协议的更多信息参见支持的协议和封装协议。

Note:

要在 PHP 4.0.3 及其更早的版本中使用 URL 封装协议，需要在编译时用 --enable-url-fopen-wrapper 参数来配置 PHP。

Note:

Windows 版本的 PHP 4.3 版之前不支持以下函数的远程访问：include，include_once，require，require_once 以及GD 和图像处理 函数中的 imagecreatefromXXX 函数。

例如，可以用以下范例来打开远程 web 服务器上的文件，解析需要的输出数据，然后将这些数据用在数据库的检索中，或者简单地以和自己网站其它页面相同的风格输出其内容。

Example #1 获取远程文件的标题

<?php
$file = fopen ("http://www.example.com/", "r");
if (!$file) {
    echo "<p>Unable to open remote file.\n";
    exit;
}
while (!feof ($file)) {
    $line = fgets ($file, 1024);
    /* This only works if the title and its tags are on one line */
    if (eregi ("<title>(.*)</title>", $line, $out)) {
        $title = $out[1];
        break;
    }
}
fclose($file);
?>

如果有合法的访问权限，以一个用户的身份和某 FTP 服务器建立了链接，还可以向该 FTP 服务器端的文件进行写操作。仅能用该方法来创建新的文件；如果尝试覆盖已经存在的文件，fopen() 函数的调用将会失败。

要以"anonymous"以外的用户名连接服务器，需要指明用户名（可能还有密码），例如"ftp://user:password@ftp.example.com/path/to/file"（也可以在通过需要 Basic 认证的 HTTP 协议访问远程文件时使用相同的语法）。

Example #2 将数据保存到远程服务器

<?php
$file = fopen ("ftp://ftp.example.com/incoming/outputfile", "w");
if (!$file) {
    echo "<p>Unable to open remote file for writing.\n";
    exit;
}
/* Write the data here. */
fwrite ($file, $_SERVER['HTTP_USER_AGENT'] . "\n");
fclose ($file);
?>

Note:

或许可以从以上范例中得到启发，用该技术来存储远程日志文件。但是正如以上提到的，在用 fopen() 方式打开的 URL 中，仅能对新文件进行写操作。如果远程文件已经存在则 fopen() 函数的操作将会失败。要做类似于分布式日志的事，可以参考 syslog() 函数。

对 PUT 方法的支持
连接处理
特点


连接处理

在 PHP 内部，系统维护着连接状态，其状态有三种可能的情况：

  • 0 - NORMAL（正常）
  • 1 - ABORTED（异常退出）
  • 2 - TIMEOUT（超时）

当 PHP 脚本正常地运行 NORMAL 状态时，连接为有效。当远程客户端中断连接时，ABORTED 状态的标记将会被打开。远程客户端连接的中断通常是由用户点击 STOP 按钮导致的。当连接时间超过 PHP 的时限（请参阅 set_time_limit() 函数）时，TIMEOUT 状态的标记将被打开。

可以决定脚本是否需要在客户端中断连接时退出。有时候让脚本完整地运行会带来很多方便，即使没有远程浏览器接受脚本的输出。默认的情况是当远程客户端连接中断时脚本将会退出。该处理过程可由 php.ini 的 ignore_user_abort 或由 httpd.conf 设置中对应的"php_value ignore_user_abort"以及 ignore_user_abort() 函数来控制。如果没有告诉 PHP 忽略用户的中断，脚本将会被中断，除非通过 register_shutdown_function() 设置了关闭触发函数。通过该关闭触发函数，当远程用户点击 STOP 按钮后，脚本再次尝试输出数据时，PHP 将会检测到连接已被中断，并调用关闭触发函数。

脚本也有可能被内置的脚本计时器中断。默认的超时限制为 30 秒。这个值可以通过设置 php.ini 的 max_execution_time 或 httpd.conf 设置中对应的"php_value max_execution_time"参数或者 set_time_limit() 函数来更改。当计数器超时的时候，脚本将会类似于以上连接中断的情况退出，先前被注册过的关闭触发函数也将在这时被执行。在该关闭触发函数中，可以通过调用 connection_status() 函数来检查超时是否导致关闭触发函数被调用。如果超时导致了关闭触发函数的调用，该函数将返回 2。

需要注意的一点是 ABORTED 和 TIMEOUT 状态可以同时有效。这在告诉 PHP 忽略用户的退出操作时是可能的。PHP 将仍然注意用户已经中断了连接但脚本仍然在运行的情况。如果到了运行的时间限制，脚本将被退出，设置过的关闭触发函数也将被执行。在这时会发现函数 connection_status() 返回 3。

使用远程文件
数据库持久连接
特点


数据库持久连接

持久的数据库连接是指在脚本结束运行时不关闭的连接。当收到一个持久连接的请求时。PHP 将检查是否已经存在一个（前面已经开启的）相同的持久连接。如果存在，将直接使用这个连接；如果不存在，则建立一个新的连接。所谓"相同"的连接是指用相同的用户名和密码到相同主机的连接。

对 web 服务器的工作和分布负载没有完全理解的读者可能会错误地理解持久连接的作用。特别的，持久连接不会在相同的连接上提供建立"用户会话"的能力，也不提供有效建立事务的能力。实际上，从严格意义上来讲，持久连接不会提供任何非持久连接无法提供的特殊功能。

为什么？

这和 web 服务器工作的方式有关。web 服务器可以用三种方法来利用 PHP 生成 web 页面。

第一种方法是将 PHP 用作一个单独运行的语言解释器(CGI Wapper)。以这种方法运行，PHP 会为向 web 服务器提出的每个 PHP 页面请求生成并结束一个 PHP解释器线程。由于该线程会随每个请求的结束而结束，因此任何在这个线程中利用的任何资源（例如指向SQL 数据库服务器的连接）都会随线程的结束而关闭。在这种情况下，使用持久连接和非持久连接没有任何区别——因为PHP脚本本身的执行不是持久的。

第二，也是最常用的方法，是把 PHP 用作多进程 web 服务器的一个模块，这种方法目前只适用于 Apache。对于一个多进程的服务器，其典型特征是有一个父进程和一组子进程协调运行，其中实际生成 web 页面的是子进程。每当客户端向父进程提出请求时，该请求会被传递给还没有被其它的客户端请求占用的子进程。这也就是说当相同的客户端第二次向服务端提出请求时，它将有可能被一个不同的子进程来处理。在开启了一个持久连接后，所有请求 SQL 服务的后继页面都能够重用这个已经建立的 SQL Server 连接。

最后一种方法是将 PHP 用作多线程 web 服务器的一个插件。目前 PHP 4 已经支持 ISAPI、WSAPI 和 NSAPI（在非Windows 环境下），这些使得 PHP 可以被用作诸如 Netscape FastTrack (iPlanet)、Microsoft's Internet Information Server (IIS) 和 O'Reilly's WebSite Pro 等多线程 web 服务器的插件。持久连接的行为和前面所描述的多过程模型在本质上是相同的。注意 PHP 3 不支持 SAPI。

如果持久连接并没有任何附加的功能，那么使用它有什么好处？

答案非常简单——效率。当Web Server创建到SQL服务器的连接耗费(Overhead)较高（如耗时较久，消耗临时内存较多）时，持久连接将更加高效。Overhead高低取决于很多因素。例如，数据库的种类，数据库服务和web 服务是否在同一台服务器上，SQL 服务器负载状况等。当Overhead较高，每次创建数据库连接成本较高时，持久连接将显著的提高效率。它使得每个子进程在其生命周期中只做一次连接操作，而非每次在处理一个页面时都要向SQL 服务器提出连接请求。这也就是说，每个子进程将对服务器建立各自独立的持久连接。例如，如果有 20 个不同的子进程运行某脚本建立了持久的 SQL 服务器持久连接，那么实际上向该 SQL 服务器建立了 20 个不同的持久连接，每个进程占有一个。

注意，如果持久连接的子进程数目超过了设定的数据库连接数限制，系统将会产生一些问题。如果数据库的同时连接数限制为 16，而在繁忙会话的情况下，有 17 个线程试图连接，那么有一个线程将无法连接。如果这个时候，在脚本中出现了使得连接无法关闭的错误（例如无限循环），则该数据库的 16 个连接将迅速地受到影响。请查阅使用的数据库的文档，以获取关于如何处理已放弃的及闲置的连接的方法。

Warning

在使用持久连接时还有一些特别的问题需要注意。例如在持久连接中使用数据表锁时，如果脚本不管什么原因无法释放该数据表锁，其随后使用相同连接的脚本将会被持久的阻塞，使得需要重新启动 httpd 服务或者数据库服务。另外，在使用事务处理时，如果脚本在事务阻塞产生前结束，则该阻塞也会影响到使用相同连接的下一个脚本。不管在什么情况下，都可以通过使用 register_shutdown_function() 函数来注册一个简单的清理函数来打开数据表锁，或者回滚事务。或者更好的处理方法，是不在使用数据表锁或者事务处理的脚本中使用持久连接，这可以从根本上解决这个问题（当然还可以在其它地方使用持久连接）。

以下是一点重要的总结。持久连接与常规的非持久连接应该是可以互相替换的。即将持久连接替换为非持久连接时，你的脚本的行为不应该发生改变。使用持久连接只应该改变脚本的效率，不应该改变其行为！

参见 fbsql_pconnect()，ibase_pconnect()，ifx_pconnect()，ingres_pconnect()，msql_pconnect()，mssql_pconnect()，mysql_pconnect()，ociplogon()，odbc_pconnect()，ora_plogon()，pfsockopen()，pg_pconnect() 和 sybase_pconnect()。

连接处理
安全模式
特点


安全模式

Table of Contents

  • 保安措施和安全模式
  • 被安全模式限制或屏蔽的函数

PHP 的安全模式是为了试图解决共享服务器（shared-server）安全问题而设立的。在结构上，试图在 PHP 层上解决这个问题是不合理的，但修改 web 服务器层和操作系统层显得非常不现实。因此许多人，特别是 ISP，目前使用安全模式。

Warning

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

Changelog for safe mode
版本 | 说明
5.4.0 | Removed from PHP, and generates a fatal E_CORE_ERROR level error when enabled.
5.3.0 | Deprecated, and E_DEPRECATED errors were added.

数据库持久连接
保安措施和安全模式
特点


保安措施和安全模式

保安措施和安全模式配置指令
名字 | 默认 | 可修改范围 | 更新日志
safe_mode | "0" | PHP_INI_SYSTEM |
safe_mode_gid | "0" | PHP_INI_SYSTEM | 自 PHP 4.1.0 起可用，在 PHP 5.4.0 中移除。
safe_mode_include_dir | NULL | PHP_INI_SYSTEM | 自 PHP 4.1.0 起可用
safe_mode_exec_dir | "" | PHP_INI_SYSTEM |
safe_mode_allowed_env_vars | "PHP_" | PHP_INI_SYSTEM |
safe_mode_protected_env_vars | "LD_LIBRARY_PATH" | PHP_INI_SYSTEM |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

safe_mode boolean

是否启用 PHP 的安全模式。

safe_mode_gid boolean

默认情况下，安全模式在打开文件时会做 UID 比较检查。如果想将其放宽到 GID 比较，则打开 safe_mode_gid。是否在文件访问时使用 UID（FALSE）或者 GID（TRUE）来做检查。

safe_mode_include_dir string

当从此目录及其子目录（目录必须在 include_path 中或者用完整路径来包含）包含文件时越过 UID/GID 检查。

从 PHP 4.2.0 开始，本指令可以接受和 include_path 指令类似的风格用冒号（Windows 中是分号）隔开的路径，而不只是一个目录。 指定的限制实际上是一个前缀，而非一个目录名。这也就是说"safe_mode_include_dir = /dir/incl"将允许访问"/dir/include"和"/dir/incls"，如果它们存在的话。如果希望将访问控制在一个指定的目录，那么请在结尾加上一个斜线，例如："safe_mode_include_dir = /dir/incl/"。 如果本指令的值为空，在 PHP 4.2.3 中以及 PHP 4.3.3 起具有不同 UID/GID 的文件将不能被包含。在较早版本中，所有文件都能被包含。
safe_mode_exec_dir string

如果 PHP 使用了安全模式，system() 和其它程序执行函数将拒绝启动不在此目录中的程序。必须使用 / 作为目录分隔符，包括 Windows 中。

safe_mode_allowed_env_vars string

设置某些环境变量可能是潜在的安全缺口。本指令包含有一个逗号分隔的前缀列表。在安全模式下，用户只能改变那些名字具有在这里提供的前缀的环境变量。默认情况下，用户只能设置以 PHP_ 开头的环境变量（例如 PHP_FOO = BAR）。

Note:

如果本指令为空，PHP 将使用户可以修改任何环境变量！

safe_mode_protected_env_vars string

本指令包含有一个逗号分隔的环境变量的列表，最终用户不能用 putenv() 来改变这些环境变量。甚至在 safe_mode_allowed_env_vars 中设置了允许修改时也不能改变这些变量。

参见 open_basedir、 disable_functions、 disable_classes、 register_globals、 display_errors 和 log_errors。

当 safe_mode 设置为 on，PHP 将通过文件函数或其目录检查当前脚本的拥有者是否和将被操作的文件的拥有者相匹配。例如：

-rw-rw-r--    1 rasmus   rasmus       33 Jul  1 19:20 script.php
-rw-r--r--    1 root     root       1116 May 26 18:01 /etc/passwd
运行 script.php
<?php
 readfile('/etc/passwd');
?>
如果安全模式被激活，则将会导致以下错误：
Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not
allowed to access /etc/passwd owned by uid 0 in /docroot/script.php on line 2

同时，或许会存在这样的环境，在该环境下，宽松的 GID 检查已经足够，但严格的 UID 检查反而是不适合的。可以用 safe_mode_gid 选项来控制这种检查。如果设置为 On 则进行宽松的 GID 检查；设置为 Off（默认值）则进行 UID 检查。

除了 safe_mode 以外，如果设置了 open_basedir 选项，则所有的文件操作将被限制在指定的目录下。例如：

<Directory /docroot>
  php_admin_value open_basedir /docroot
</Directory>
如果在设置了 open_basedir 选项后运行同样的 script.php，则其结果会是：
Warning: open_basedir restriction in effect. File is in wrong directory in
/docroot/script.php on line 2

也可以单独地屏蔽某些函数。请注意 disable_functions 选项不能在 php.ini 文件外部使用，也就是说无法在 httpd.conf 文件的按不同虚拟主机或不同目录的方式来屏蔽函数。如果将如下内容加入到 php.ini 文件：

disable_functions readfile,system
则会得到如下的输出：
Warning: readfile() has been disabled for security reasons in
/docroot/script.php on line 2

Warning

当然，这些 PHP 限制不适用于可执行文件。

安全模式
被安全模式限制或屏蔽的函数
安全模式


被安全模式限制或屏蔽的函数

以下安全模式列表可能不完整或不正确。

安全模式限制函数
函数名 | 限制
dbmopen() | 检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。
dbase_open() | 检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。
filepro() | 检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。
filepro_rowcount() | 检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。
filepro_retrieve() | 检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。
ifx_* | sql_safe_mode 限制, (!= safe mode)
ingres_* | sql_safe_mode 限制, (!= safe mode)
mysql_* | sql_safe_mode 限制, (!= safe mode)
pg_loimport() | 检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。
posix_mkfifo() | 检查被操作的目录是否与被执行的脚本有相同的 UID（所有者）。
putenv() | 遵循 ini 设置的 safe_mode_protected_env_vars 和 safe_mode_allowed_env_vars 选项。请参考 putenv() 函数的有关文档。
move_uploaded_file() | 检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。
chdir() | 检查被操作的目录是否与被执行的脚本有相同的 UID（所有者）。
dl() | 当 PHP 运行在 安全模式 时，不能使用此函数。
backtick operator | 当 PHP 运行在 安全模式 时，不能使用此函数。
shell_exec()（在功能上和 backticks 函数相同） | 当 PHP 运行在 安全模式 时，不能使用此函数。
exec() | 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因，目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。
system() | 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因，目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。
passthru() | 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因，目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。
popen() | 只能在 safe_mode_exec_dir 设置的目录下进行执行操作。基于某些原因，目前不能在可执行对象的路径中使用 ..。escapeshellcmd() 将被作用于此函数的参数上。
fopen() | 检查被操作的目录是否与被执行的脚本有相同的 UID（所有者）。
mkdir() | 检查被操作的目录是否与被执行的脚本有相同的 UID（所有者）。
rmdir() | 检查被操作的目录是否与被执行的脚本有相同的 UID（所有者）。
rename() | 检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。 检查被操作的目录是否与被执行的脚本有相同的 UID（所有者）。
unlink() | 检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。 检查被操作的目录是否与被执行的脚本有相同的 UID（所有者）。
copy() | 检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。 检查被操作的目录是否与被执行的脚本有相同的 UID（所有者）。 (on source and target)
chgrp() | 检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。
chown() | 检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。
chmod() | 检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。 另外，不能设置 SUID、SGID 和 sticky bits
touch() | 检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。 检查被操作的目录是否与被执行的脚本有相同的 UID（所有者）。
symlink() | 检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。 检查被操作的目录是否与被执行的脚本有相同的 UID（所有者）。 （注意：仅测试 target）
link() | 检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。 检查被操作的目录是否与被执行的脚本有相同的 UID（所有者）。 （注意：仅测试 target）
apache_request_headers() | 在安全模式下，以"authorization"（区分大小写）开头的标头将不会被返回。
header() | 在安全模式下，如果设置了 WWW-Authenticate，当前脚本的 uid 将被添加到该标头的 realm 部分。
PHP_AUTH 变量 | 在安全模式下，变量 PHP_AUTH_USER、PHP_AUTH_PW 和 PHP_AUTH_TYPE 在 $_SERVER 中不可用。但无论如何，您仍然可以使用 REMOTE_USER 来获取用户名称（USER）。（注意：仅 PHP 4.3.0 以后有效）
highlight_file(), show_source() | 检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。 检查被操作的目录是否与被执行的脚本有相同的 UID（所有者）。 （注意，仅在 4.2.1 版本后有效）
parse_ini_file() | 检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。 检查被操作的目录是否与被执行的脚本有相同的 UID（所有者）。 （注意，仅在 4.2.1 版本后有效）
set_time_limit() | 在安全模式下不起作用。
max_execution_time | 在安全模式下不起作用。
mail() | 在安全模式下，第五个参数被屏蔽。（注意，仅自 PHP 4.2.3 起受影响）
session_start() | The owner of a script must be the same as owner of a session.save_path directory if the default files session.save_handler is used.
All filesystem and stream functions. | 检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。 检查被操作的目录是否与被执行的脚本有相同的 UID（所有者）。 (see the safe_mode_include_dir php.ini option.

保安措施和安全模式
PHP 的命令行模式
安全模式


PHP 的命令行模式

Table of Contents

  • 内置Web Server
  • INI 配置

从版本 4.3.0 开始，PHP 提供了一种新类型的 CLI SAPI（Server Application Programming Interface，服务端应用编程端口）支持，名为 CLI，意为 Command Line Interface，即命令行接口。顾名思义，该 CLI SAPI 模块主要用作 PHP 的开发外壳应用。CLI SAPI 和其它 CLI SAPI 模块相比有很多的不同之处，我们将在本章中详细阐述。值得一提的是，CLI 和 CGI 是不同的 SAPI，尽管它们之间有很多共同的行为。

CLI SAPI 最先是随 PHP 4.2.0 版本发布的，但仍旧只是一个实验性的版本，并需要在运行 ./configure 时加上 --enable-cli 参数。从 PHP 4.3.0 版本开始，CLI SAPI 成为了正式模块，--enable-cli 参数会被默认得设置为 on，也可以用参数 --disable-cli 来屏蔽。

从 PHP 4.3.0开始，CLI/CGI 二进制执行文件的文件名、位置和是否存在会根据 PHP 在系统上的安装而不同。在默认情况下，当运行 make 时，CGI 和 CLI 都会被编译并且分别放置在 PHP 源文件目录的 sapi/cgi/php 和 sapi/cli/php 下。可以注意到两个文件都被命名为了 php。在 make install 的过程中会发生什么取决于配置行。如果在配置的时候选择了一个 SAPI 模块，如 apxs，或者使用了 --disable-cgi 参数，则在 make install 的过程中，CLI 将被拷贝到 {PREFIX}/bin/php，除非 CGI 已经被放置在了那个位置。因此，例如，如果在配置行中有 --with--apxs ，则在 make install 的过程中，CLI 将被拷贝到 {PREFIX}/bin/php。如果希望撤销 CGI 执行文件的安装，请在 make install 之后运行 make install-cli。或者，也可以在配置行中加上 --disable-cgi 参数。

Note:

由于 --enable-cli 和 --enable-cgi 同时默认有效，因此，不必再配置行中加上 --enable-cli 来使得 CLI 在 make install 过程中被拷贝到 {PREFIX}/bin/php。

在 PHP 4.2.0 到 PHP 4.2.3 之间的 Windows 发行包中，CLI 的文件名为 php-cli.exe，相同文件夹下的 php.exe 为 CGI。从 PHP 4.3.0 版本开始，Windows 的发行包中 CLI 的执行文件为 php.exe，被放置在一个单独的名为 cli 的文件夹下，即 cli/php.exe。在 PHP 5 中，CLI 存在于主文件夹中，名为 php.exe，而 CGI 版本名为 php-cgi.exe。

从 PHP 5 起，一个名为 php-win.exe 的新文件随包发布。它相当于 CLI 版本，但是 php-win 不输出任何内容，便不提供控制台（不会弹出"DOS 窗口"）。这种方式类似于 php-gtk。需要使用 --enable-cli-win32 选项来配置它。

Note: 如何得知自己使用的是哪个 SAPI？

在命令行下，运行 php -v 便能得知该 php 是 CGI 还是 CLI。请参考函数 php_sapi_name() 以及常量 PHP_SAPI。

Note:

在 PHP 4.3.2 中加入了 Unix 的 man 页面。可以在命令行中键入 man php 来查看。

以下为 CLI SAPI 和其它 CLI SAPI 模块相比的显著区别：

  • 与 CGI SAPI 不同，其输出没有任何头信息。

    尽管 CGI SAPI 提供了取消 HTTP 头信息的方法，但在 CLI SAPI 中并不存在类似的方法以开启 HTTP 头信息的输出。

    CLI 默认以安静模式开始，但为了保证兼容性，-q 和 --no-header 参数为了向后兼容仍然保留，使得可以使用旧的 CGI 脚本。

    在运行时，不会把工作目录改为脚本的当前目录（可以使用 -C 和 --no-chdir 参数来兼容 CGI 模式）。

    出错时输出纯文本的错误信息（非 HTML 格式）。

  • CLI SAPI 强制覆盖了 php.ini 中的某些设置，因为这些设置在外壳环境下是没有意义的。

    覆盖 php.ini 设置选项
    设置选项 | CLI SAPI 默认值 | 备注
    html_errors | FALSE | 无意义的 HTML 标记符会使得出错信息很凌乱，所以在外壳下阅读报错信息是十分困难的。因此将该选项的默认值改为 FALSE。
    implicit_flush | TRUE | 在命令行模式下，所有来自 print 和 echo 的输出将被立即写到输出端，而不作任何地缓冲操作。如果希望延缓或控制标准输出，仍然可以使用 output buffering 设置项。
    max_execution_time | 0（无限值） | 鉴于在外壳环境下使用 PHP 的无穷的可能性，最大运行时间被设置为了无限值。为 web 开发的应用程序可能只需运行几秒钟时间，而外壳应用程序的运行时间可能会长的多。
    register_argc_argv TRUE

    由于该设置为 TRUE，将总是可以在 CLI SAPI 中访问到 argc（传送给应用程序参数的个数）和 argv（包含有实际参数的数组）。

    对于 PHP 4.3.0，在使用 CLI SAPI 时，PHP 变量 $argc 和 $argv 已被注册并且设定了对应的值。而在这之前的版本，这两个变量在 CGI 或者 模块 版本中的建立依赖于将 PHP 的设置选项 register_globals 设为 on。除了版本和 register_globals 设定以外，可以随时通过调用 $_SERVER 或者 $HTTP_SERVER_VARS 来访问它们。例如：$_SERVER['argv']

    Note:

    这些设置无法在设置文件 php.ini 或任何指定的其它文件中被初始化为其它值。这些默认值被限制在所有其它的设置文件被解析后改变。不过，它们的值可以在程序运行的过程中被改变（尽管对于该运行过程来说，这些设置项是没有意义的）。

  • 为了减轻外壳环境下的工作，我们定义了如下常量：

    CLI 专用常量
    常量名称 描 述
    STDIN 一个已打开的指向 stdin 的流。可以用如下方法来调用：
    <?php

    $stdin     = fopen('php://stdin', 'r');

    ?>
    如果想从 stdin 读取一行内容，可以使用
    <?php
    $line     = trim(fgets(STDIN)); // 从 STDIN 读取一行
    fscanf(STDIN, "%d\n", $number); // 从 STDIN 读取数字
    ?>
    STDOUT 一个已打开的指向 stdout 的流。可以用如下方式来调用：
    <?php

    $stdout     = fopen('php://stdout', 'w');

    ?>
    STDERR 一个已打开的指向 stderr 的流。可以用如下方式来调用：
    <?php

    $stderr     = fopen('php://stderr', 'w');

    ?>

    有了以上常量，就无需自己建立指向诸如 stderr 的流，只需简单的使用这些常量来代替流指向：

    php -r 'fwrite(STDERR, "stderr\n");'
    无需自己来关闭这些流，PHP 会自动完成这些操作。

  • CLI SAPI 不会将当前目录改为已运行的脚本所在的目录。

    以下范例显示了本模块与 CGI SAPI 模块之间的不同：

    <?php
    // 名为 test.php 的简单测试程序
    echo getcwd(), "\n";
    ?>

    在使用 CGI 版本时，其输出为

    $ pwd
/tmp

$ php-cgi -f another_directory/test.php
/tmp/another_directory

    明显可以看到 PHP 将当前目录改成了刚刚运行过的脚本所在的目录。

    使用 CLI SAPI 模式，得到：

    $ pwd
/tmp

$ php -q another_directory/test.php
/tmp
    这使得在利用 PHP 编写外壳工具时获得了很大的便利。

    Note:

    可以在命令行运行时给该 CGI SAPI 加上 -C 参数，使其支持 CLI SAPI 的功能。

以下是 PHP 二进制文件（即 php.exe 程序）提供的命令行模式的选项参数，随时可以运行带 -h 参数的 PHP 命令来查询这些参数。

Usage: php [options] [-f] <file> [--] [args...]
       php [options] -r <code> [--] [args...]
       php [options] [-B <begin_code>] -R <code> [-E <end_code>] [--] [args...]
       php [options] [-B <begin_code>] -F <file> [-E <end_code>] [--] [args...]
       php [options] -- [args...]
       php [options] -a

  -a               Run interactively
  -c <path>|<file> Look for php.ini file in this directory
  -n               No php.ini file will be used
  -d foo[=bar]     Define INI entry foo with value 'bar'
  -e               Generate extended information for debugger/profiler
  -f <file>        Parse <file>.
  -h               This help
  -i               PHP information
  -l               Syntax check only (lint)
  -m               Show compiled in modules
  -r <code>        Run PHP <code> without using script tags <?..?>
  -B <begin_code>  Run PHP <begin_code> before processing input lines
  -R <code>        Run PHP <code> for every input line
  -F <file>        Parse and execute <file> for every input line
  -E <end_code>    Run PHP <end_code> after processing all input lines
  -H               Hide any passed arguments from external tools.
  -s               Display colour syntax highlighted source.
  -v               Version number
  -w               Display source with stripped comments and whitespace.
  -z <file>        Load Zend extension <file>.

  args...          Arguments passed to script. Use -- args when first argument
                   starts with - or script is read from stdin

CLI SAPI 模块有以下三种不同的方法来获取要运行的 PHP 代码：

  1. 让 PHP 运行指定文件。

    php my_script.php

php -f my_script.php

    以上两种方法（使用或不使用 -f 参数）都能够运行给定的 my_script.php 文件。可以选择任何文件来运行，指定的 PHP 脚本并非必须要以 .php 为扩展名，它们可以有任意的文件名和扩展名。

  2. 在命令行直接运行 PHP 代码。

    php -r 'print_r(get_defined_constants());'

    在使用这种方法时，请注意外壳变量的替代及引号的使用。

    Note:

    请仔细阅读以上范例，在运行代码时没有开始和结束的标记符！加上 -r 参数后，这些标记符是不需要的，加上它们会导致语法错误。

  3. 通过标准输入（stdin）提供需要运行的 PHP 代码。

    以上用法提供了非常强大的功能，使得可以如下范例所示，动态地生成 PHP 代码并通过命令行运行这些代码：

    $ some_application | some_filter | php | sort -u >final_output.txt

以上三种运行代码的方法不能同时使用。

和所有的外壳应用程序一样，PHP 的二进制文件（php.exe 文件）及其运行的 PHP 脚本能够接受一系列的参数。PHP 没有限制传送给脚本程序的参数的个数（外壳程序对命令行的字符数有限制，但通常都不会超过该限制）。传递给脚本的参数可在全局变量 $argv 中获取。该数组中下标为零的成员为脚本的名称（当 PHP 代码来自标准输入获直接用 -r 参数以命令行方式运行时，该名称为"-"）。另外，全局变量 $argc 存有 $argv 数组中成员变量的个数（而非传送给脚本程序的参数的个数）。

只要传送给脚本的参数不是以 - 符号开头，就无需过多的注意什么。向脚本传送以 - 开头的参数会导致错误，因为 PHP 会认为应该由它自身来处理这些参数。可以用参数列表分隔符 -- 来解决这个问题。在 PHP 解析完参数后，该符号后所有的参数将会被原样传送给脚本程序。

# 以下命令将不会运行 PHP 代码，而只显示 PHP 命令行模式的使用说明：
$ php -r 'var_dump($argv);' -h
Usage: php [options] [-f] <file> [args...]
[...]

# 以下命令将会把"-h"参数传送给脚本程序，PHP 不会显示命令行模式的使用说明：
$ php -r 'var_dump($argv);' -- -h
array(2) {
  [0]=>
  string(1) "-"
  [1]=>
  string(2) "-h"
}

除此之外，还有另一个方法将 PHP 用于外壳脚本。可以在写一个脚本，并在第一行以 #!/usr/bin/php 开头，在其后加上以 PHP 开始和结尾标记符包含的正常的 PHP 代码，然后为该文件设置正确的运行属性（例如：chmod +x test）。该方法可以使得该文件能够像外壳脚本或 PERL 脚本一样被直接执行。

#!/usr/bin/php
<?php
    var_dump($argv);
?>

假设改文件名为 test 并被放置在当前目录下，可以做如下操作：

$ chmod +x test
$ ./test -h -- foo
array(4) {
  [0]=>
  string(6) "./test"
  [1]=>
  string(2) "-h"
  [2]=>
  string(2) "--"
  [3]=>
  string(3) "foo"
}

正如所看到的，在向该脚本传送以 - 开头的参数时，脚本仍然能够正常运行。

PHP 4.3.3 以来有效的长选项:

命令行选项
选项名称 | 长名称 | 说明
-a --interactive

交互式运行 PHP。如果编译 PHP 时加入了 Readline 扩展（Windows 下不可用），那将会得到一个很好的外壳，包括一个自动完成的功能（例如可以在键入变量名的时候，按下 TAB 键，PHP 会自动完成该变量名）以及命令历史记录，可以用上下键来访问。历史记录存在 ~/.php_history 文件中。

Note:

通过 auto_prepend_file 和 auto_append_file 包含的文件在此模式下会被解析，但有些限制，例如函数必须在被调用之前定义。

-c --php-ini

用该参数，可以指定一个放置 php.ini 文件的目录，或者直接指定一个自定义的 INI 文件（其文件名可以不是 php.ini），例如：

$ php -c /custom/directory/ my_script.php

$ php -c /custom/directory/custom-file.ini my_script.php
如果不指定此选项，PHP 将在默认位置搜索文件。

-n --no-php-ini

完全忽略 php.ini。此参数在 PHP 4.3.0 以后有效。

-d --define

用该参数可以自行设置任何可以在 php.ini 文件中设置的配置选项的值，其语法为：

-d configuration_directive[=value]

例子（因版面原因而折行显示）：

# 取值部分被省略，将会把配置选项设为 "1"
$ php -d max_execution_time
        -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(1) "1"

# 取值部分为空白，将会把配置选项设为 ""
php -d max_execution_time=
        -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(0) ""

# 配置选项将被设置成为任何 '=' 字符之后的值
$  php -d max_execution_time=20
        -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(2) "20"
$  php
        -d max_execution_time=doesntmakesense
        -r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(15) "doesntmakesense"

-e --profile-info

激活扩展信息模式，被用于调试／测试。

-f --file

解析并运行 -f 选项给定的文件名。该参数为可选参数，可以省略，仅指明需要运行的文件名即可。

-h and -? | --help and --usage | 使用该参数，可以得到完整的命令行参数的列表及这些参数作用的简单描述。
-i | --info | 该命令行参数会调用 phpinfo() 函数并显示出结果。如果 PHP 没有正常工作，建议执行 php -i 命令来查看在信息表格之前或者对应的地方是否有任何错误信息输出。请注意当使用 CGI 摸索时，输出的内容为 HTML 格式，因此输出的信息篇幅较大。
-l --syntax-check

该参数提供了对指定 PHP 代码进行语法检查的方便的方法。如果成功，则向标准输出写入 No syntax errors detected in <filename> 字符串，并且外壳返回值为 0。如果失败，则输出 Errors parsing <filename> 以及内部解析器错误信息到标准输出，同时外壳返回值将别设置为 255。

该参数将无法检查致命错误（如未定义函数），如果也希望检测致命错误，请使用 -f 参数。

Note:

该参数不能和 -r 一同使用。

-m --modules

使用该参数，PHP 将打印出内置以及已加载的 PHP 及 Zend 模块：

$ php -m
[PHP Modules]
xml
tokenizer
standard
session
posix
pcre
overload
mysql
mbstring
ctype

[Zend Modules]

-r --run

使用该参数可以在命令行内运行单行 PHP 代码。无需加上 PHP 的起始和结束标识符（<?php 和 ?>），否则将会导致语法解析错误。

Note:

使用这种形式的 PHP 时，应注意避免和外壳环境进行的命令行参数替换相冲突。

显示语法解析错误的范例

$ php -r "$foo = get_defined_constants();"
Command line code(1) : Parse error - parse error, unexpected '='
这里的问题在于即使使用了双引号 "，sh/bash 仍然实行了参数替换。由于 $foo 没有被定义，被替换后它所在的位置变成了空字符，因此在运行时，实际被 PHP 读取的代码为：
$ php -r " = get_defined_constants();"
正确的方法是使用单引号 '。在用单引号引用的字符串中，变量不会被 sh/bash 还原成其原值。
$ php -r '$foo = get_defined_constants(); var_dump($foo);'
array(370) {
  ["E_ERROR"]=>
  int(1)
  ["E_WARNING"]=>
  int(2)
  ["E_PARSE"]=>
  int(4)
  ["E_NOTICE"]=>
  int(8)
  ["E_CORE_ERROR"]=>
  [...]
如果使用的外壳不是 sh/bash，可能会碰到更多问题。请将碰到的 Bug 向 » http://bugs.php.net/ 报告。注意，当试图将 shell 变量用到代码中或者使用反斜线时仍然很容易碰到问题。

Note:

-r 在 CLI SAPI 中有效，在 CGI SAPI 中无效。

Note:

此选项只用于非常基本的用途。因此一些配置指令（例如 auto_prepend_file 和 auto_append_file）在此模式下被忽略。

-B --process-begin

在处理 stdin 之前先执行 PHP 代码。PHP 5 新加。

-R --process-code

对每个输入行都执行 PHP 代码。PHP 5 新加。

此模式下有两个特殊变量：$argn 和 $argi。$argn 包含 PHP 当前处理的行内容，而 $argi 则包含该行号。

-F --process-file

对每个输入行都执行 PHP 文件。PHP 5 新加。

-E --process-end

在处理完输入后执行的 PHP 代码。PHP 5 新加。

使用 -B ，-R 和 -E 选项来计算一个项目总行数的例子。

$ find my_proj | php -B '$l=0;' -R '$l += count(@file($argn));' -E 'echo "Total Lines: $l\n";'
Total Lines: 37328

-s --syntax-highlight and --syntax-highlight

显示有语法高亮色彩的源代码。

该参数使用内建机制来解析文件并为其生成一个 HTML 高亮版本并将结果写到标准输出。请注意该过程所做的只是生成了一个 <code> [...] </code> 的 HTML 标记的块，并不包含任何的 HTML 头。

Note:

该选项不能和 -r 参数同时使用。

-v --version

将 PHP，PHP SAPI 和 Zend 的版本信息写入标准输出。例如：

$ php -v
PHP 4.3.0 (cli), Copyright (c) 1997-2002 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2002 Zend Technologies

-w --strip

显示除去了注释和多余空白的源代码。

Note:

该选项不能和 -r 参数同时使用。

-z --zend-extension

加载 Zend 扩展库。如果仅给定一个文件名，PHP 将试图从当前系统扩展库的默认路径（在 Linux 系统下，该路径通常由 /etc/ld.so.conf 指定）加载该扩展库。如果用一个绝对路径指定文件名，则不会使用系统的扩展库默认路径。如果用相对路径指定的文件名，则 PHP 仅试图在当前目录的相对目录加载扩展库。

PHP 的命令行模式能使得 PHP 脚本能完全独立于 web 服务器单独运行。如果使用 Unix 系统，需要在 PHP 脚本的最前面加上一行特殊的代码，使得它能够被执行，这样系统就能知道用哪个程序去运行该脚本。在 Windows 平台下可以将 php.exe 和 .php 文件的双击属性相关联，也可以编写一个批处理文件来用 PHP 执行脚本。为 Unix 系统增加的第一行代码不会影响该脚本在 Windows 下的运行，因此也可以用该方法编写跨平台的脚本程序。以下是一个简单的 PHP 命令行程序的范例。

Example #1 试图以命令行方式运行的 PHP 脚本（script.php）

#!/usr/bin/php
<?php

if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
?>

This is a command line PHP script with one option.

  Usage:
  <?php echo $argv[0]; ?> <option>

  <option> can be some word you would like
  to print out. With the --help, -help, -h,
  or -? options, you can get this help.

<?php
} else {
    echo $argv[1];
}
?>

在以上脚本中，用第一行特殊的代码来指明该文件应该由 PHP 来执行。在这里使用 CLI 的版本，因此不会有 HTTP 头信息输出。在用 PHP 编写命令行应用程序时，可以使用两个参数：$argc 和 $argv。前面一个的值是比参数个数大 1 的整数（运行的脚本本身的名称也被当作一个参数）。第二个是包含有参数的数组，其第一个元素为脚本的名称，下标为数字 0（$argv[0]）。

以上程序中检查了参数的个数是大于 1 个还是小于 1 个。此外如果参数是 --help ，-help ，-h 或 -? 时，打印出帮助信息，并同时动态输出脚本的名称。如果还收到了其它参数，将其显示出来。

如果希望在 Unix 下运行以上脚本，需要使其属性为可执行文件，然后简单的运行 script.php echothis 或 script.php -h。在 Windows 下，可以为此编写一个批处理文件：

Example #2 运行 PHP 命令行脚本的批处理文件（script.bat）

@C:\php\php.exe script.php %1 %2 %3 %

假设将上述程序命名为 script.php，且 CLI 版的 php.exe 文件放置在 c:\php\cli\php.exe，该批处理文件会帮助将附加的参数传给脚本程序：script.bat echothis 或 script.bat -h。

请参阅 Readline 扩展模块的有关文档，以获取更多的函数的信息。这些函数可以帮助完善 PHP 命令行应用程序。

被安全模式限制或屏蔽的函数
内置Web Server
特点


内置Web Server

PHP 5.4.0起， CLI SAPI 提供了一个内置的Web服务器。

这个内置的Web服务器主要用于本地开发使用，不可用于线上产品环境。

URI请求会被发送到PHP所在的的工作目录（Working Directory）进行处理，除非你使用了-t参数来自定义不同的目录。

如果请求未指定执行哪个PHP文件，则默认执行目录内的index.php 或者 index.html。如果这两个文件都不存在，服务器会返回404错误。

当你在命令行启动这个Web Server时，如果指定了一个PHP文件，则这个文件会作为一个"路由"脚本，意味着每次请求都会先执行这个脚本。如果这个脚本返回 FALSE ，那么直接返回请求的文件（例如请求静态文件不作任何处理）。否则会把输出返回到浏览器。

Example #1 启动Web服务器

$ cd ~/public_html
$ php -S localhost:8000

终端窗口会显示:

PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011
Listening on localhost:8000
Document root is /home/me/public_html
Press Ctrl-C to quit

接着访问http://localhost:8000/和http://localhost:8000/myscript.html，窗口会显示：

PHP 5.4.0 Development Server started at Thu Jul 21 10:43:28 2011
Listening on localhost:8000
Document root is /home/me/public_html
Press Ctrl-C to quit.
[Thu Jul 21 10:48:48 2011] ::1:39144 GET /favicon.ico - Request read
[Thu Jul 21 10:48:50 2011] ::1:39146 GET / - Request read
[Thu Jul 21 10:48:50 2011] ::1:39147 GET /favicon.ico - Request read
[Thu Jul 21 10:48:52 2011] ::1:39148 GET /myscript.html - Request read
[Thu Jul 21 10:48:52 2011] ::1:39149 GET /favicon.ico - Request read

Example #2 启动时指定根目录

$ cd ~/public_html
$ php -S localhost:8000 -t foo/

终端窗口显示：

PHP 5.4.0 Development Server started at Thu Jul 21 10:50:26 2011
Listening on localhost:8000
Document root is /home/me/public_html/foo
Press Ctrl-C to quit

Example #3 使用路由（Router）脚本

请求图片直接显示图片，请求HTML则显示"Welcome to PHP"

<?php
// router.php
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"]))
    return false;    // 直接返回请求的文件
else {
    echo "<p>Welcome to PHP</p>";
}
?>
$ php -S localhost:8000 router.php

执行之后终端显示：

PHP 5.4.0 Development Server started at Thu Jul 21 10:53:19 2011
Listening on localhost:8000
Document root is /home/me/public_html
Press Ctrl-C to quit.
[Thu Jul 21 10:53:45 2011] ::1:55801 GET /mylogo.jpg - Request read
[Thu Jul 21 10:53:52 2011] ::1:55803 GET /abc.html - Request read
[Thu Jul 21 10:53:52 2011] ::1:55804 GET /favicon.ico - Request read
PHP 的命令行模式
INI 配置
PHP 的命令行模式


INI 配置

CLI SAPI 配置选项
名字 | 默认 | 可修改范围 | 更新日志
cli_server.color | "0" | PHP_INI_ALL | PHP 5.4.0. 起生效

这是配置指令的简短说明。

cli_server.color boolean

控制内置Web Server的终端输出有无颜色。

内置Web Server
垃圾回收机制
PHP 的命令行模式


垃圾回收机制

Table of Contents

  • 引用计数基本知识
  • 回收周期(Collecting Cycles)
  • 性能方面考虑的因素

这部分将说明PHP 5.3的新的垃圾回收机制（也就是GC）的特点。

INI 配置
引用计数基本知识
特点


引用计数基本知识

每个php变量存在一个叫"zval"的变量容器中。一个zval变量容器，除了包含变量的类型和值，还包括两个字节的额外信息。第一个是"is_ref"，是个bool值，用来标识这个变量是否是属于引用集合(reference set)。通过这个字节，php引擎才能把普通变量和引用变量区分开来，由于php允许用户通过使用&来使用自定义引用，zval变量容器中还有一个内部引用计数机制，来优化内存使用。第二个额外字节是"refcount"，用以表示指向这个zval变量容器的变量(也称符号即symbol)个数。所有的符号存在一个符号表中，其中每个符号都有作用域(scope)，那些主脚本(比如：通过浏览器请求的的脚本)和每个函数或者方法也都有作用域。

当一个变量被赋常量值时，就会生成一个zval变量容器，如下例这样：

Example #1 生成一个新的zval容器

<?php
$a = "new string";
?>

在上例中，新的变量a，是在当前作用域中生成的。并且生成了类型为 string 和值为new string的变量容器。在额外的两个字节信息中，"is_ref"被默认设置为 FALSE，因为没有任何自定义的引用生成。"refcount" 被设定为 1，因为这里只有一个变量使用这个变量容器. 注意到当"refcount"的值是1时，"is_ref"的值总是FALSE. 如果你已经安装了» Xdebug，你能通过调用函数 xdebug_debug_zval()显示"refcount"和"is_ref"的值。

Example #2 显示zval信息

<?php
xdebug_debug_zval('a');
?>

以上例程会输出：

a: (refcount=1, is_ref=0)='new string'

把一个变量赋值给另一变量将增加引用次数(refcount).

Example #3 增加一个zval的引用计数

<?php
$a = "new string";
$b = $a;
xdebug_debug_zval( 'a' );
?>

以上例程会输出：

a: (refcount=2, is_ref=0)='new string'

这时，引用次数是2，因为同一个变量容器被变量 a 和变量 b关联.当没必要时，php不会去复制已生成的变量容器。变量容器在"refcount"变成0时就被销毁. 当任何关联到某个变量容器的变量离开它的作用域(比如：函数执行结束)，或者对变量调用了函数 unset()时，"refcount"就会减1，下面的例子就能说明:

Example #4 减少引用计数

<?php
$a = "new string";
$c = $b = $a;
xdebug_debug_zval( 'a' );
unset( $b, $c );
xdebug_debug_zval( 'a' );
?>

以上例程会输出：

a: (refcount=3, is_ref=0)='new string'
a: (refcount=1, is_ref=0)='new string'

如果我们现在执行 unset($a);，包含类型和值的这个变量容器就会从内存中删除。

复合类型(Compound Types)

当考虑像 array和object这样的复合类型时，事情就稍微有点复杂. 与 标量(scalar)类型的值不同，array和 object类型的变量把它们的成员或属性存在自己的符号表中。这意味着下面的例子将生成三个zval变量容器。

Example #5 Creating a array zval

<?php
$a = array( 'meaning' => 'life', 'number' => 42 );
xdebug_debug_zval( 'a' );
?>

以上例程的输出类似于：

a: (refcount=1, is_ref=0)=array (
   'meaning' => (refcount=1, is_ref=0)='life',
   'number' => (refcount=1, is_ref=0)=42
)

图示:

这三个zval变量容器是: a，meaning和 number。增加和减少"refcount"的规则和上面提到的一样. 下面, 我们在数组中再添加一个元素,并且把它的值设为数组中已存在元素的值:

Example #6 添加一个已经存在的元素到数组中

<?php
$a = array( 'meaning' => 'life', 'number' => 42 );
$a['life'] = $a['meaning'];
xdebug_debug_zval( 'a' );
?>

以上例程的输出类似于：

a: (refcount=1, is_ref=0)=array (
   'meaning' => (refcount=2, is_ref=0)='life',
   'number' => (refcount=1, is_ref=0)=42,
   'life' => (refcount=2, is_ref=0)='life'
)

图示：

从以上的xdebug输出信息，我们看到原有的数组元素和新添加的数组元素关联到同一个"refcount"2的zval变量容器. 尽管 Xdebug的输出显示两个值为'life'的 zval 变量容器，其实是同一个。 函数xdebug_debug_zval()不显示这个信息，但是你能通过显示内存指针信息来看到。

删除数组中的一个元素，就是类似于从作用域中删除一个变量. 删除后,数组中的这个元素所在的容器的"refcount"值减少，同样，当"refcount"为0时，这个变量容器就从内存中被删除，下面又一个例子可以说明：

Example #7 从数组中删除一个元素

<?php
$a = array( 'meaning' => 'life', 'number' => 42 );
$a['life'] = $a['meaning'];
unset( $a['meaning'], $a['number'] );
xdebug_debug_zval( 'a' );
?>

以上例程的输出类似于：

a: (refcount=1, is_ref=0)=array (
   'life' => (refcount=1, is_ref=0)='life'
)

现在，当我们添加一个数组本身作为这个数组的元素时，事情就变得有趣，下个例子将说明这个。例中我们加入了引用操作符，否则php将生成一个复制。

Example #8 把数组作为一个元素添加到自己

<?php
$a = array( 'one' );
$a[] =& $a;
xdebug_debug_zval( 'a' );
?>

以上例程的输出类似于：

a: (refcount=2, is_ref=1)=array (
   0 => (refcount=1, is_ref=0)='one',
   1 => (refcount=2, is_ref=1)=...
)

图示：

能看到数组变量 (a) 同时也是这个数组的第二个元素(1) 指向的变量容器中"refcount"为 2。上面的输出结果中的"..."说明发生了递归操作, 显然在这种情况下意味着"..."指向原始数组。

跟刚刚一样，对一个变量调用unset，将删除这个符号，且它指向的变量容器中的引用次数也减1。所以，如果我们在执行完上面的代码后，对变量$a调用unset, 那么变量 $a 和数组元素 "1" 所指向的变量容器的引用次数减1, 从"2"变成"1". 下例可以说明:

Example #9 Unsetting $a

(refcount=1, is_ref=1)=array (
   0 => (refcount=1, is_ref=0)='one',
   1 => (refcount=1, is_ref=1)=...
)

图示：

Zvals after removal of array with a circular reference demonstrating the memory leak

清理变量容器的问题(Cleanup Problems)

尽管不再有某个作用域中的任何符号指向这个结构(就是变量容器)，由于数组元素"1"仍然指向数组本身，所以这个容器不能被清除 。因为没有另外的符号指向它，用户没有办法清除这个结构，结果就会导致内存泄漏。庆幸的是，php将在脚本执行结束时清除这个数据结构，但是在php清除之前，将耗费不少内存。如果你要实现分析算法，或者要做其他像一个子元素指向它的父元素这样的事情，这种情况就会经常发生。当然，同样的情况也会发生在对象上，实际上对象更有可能出现这种情况，因为对象总是隐式的被引用。

如果上面的情况发生仅仅一两次倒没什么，但是如果出现几千次，甚至几十万次的内存泄漏，这显然是个大问题。这样的问题往往发生在长时间运行的脚本中，比如请求基本上不会结束的守护进程(deamons)或者单元测试中的大的套件(sets)中。后者的例子：在给巨大的eZ(一个知名的PHP Library) 组件库的模板组件做单元测试时，就可能会出现问题。有时测试可能需要耗用2GB的内存，而测试服务器很可能没有这么大的内存。

垃圾回收机制
回收周期(Collecting Cycles)
垃圾回收机制


回收周期(Collecting Cycles)

传统上，像以前的 php 用到的引用计数内存机制，无法处理循环的引用内存泄漏。然而 5.3.0 PHP 使用文章» 引用计数系统中的同步周期回收(Concurrent Cycle Collection in Reference Counted Systems)中的同步算法，来处理这个内存泄漏问题。

对算法的完全说明有点超出这部分内容的范围，将只介绍其中基础部分。首先，我们先要建立一些基本规则，如果一个引用计数增加，它将继续被使用，当然就不再在垃圾中。如果引用计数减少到零，所在变量容器将被清除(free)。就是说，仅仅在引用计数减少到非零值时，才会产生垃圾周期(garbage cycle)。其次，在一个垃圾周期中，通过检查引用计数是否减1，并且检查哪些变量容器的引用次数是零，来发现哪部分是垃圾。

为避免不得不检查所有引用计数可能减少的垃圾周期，这个算法把所有可能根(possible roots 都是zval变量容器),放在根缓冲区(root buffer)中(用紫色来标记，称为疑似垃圾)，这样可以同时确保每个可能的垃圾根(possible garbage root)在缓冲区中只出现一次。仅仅在根缓冲区满了时，才对缓冲区内部所有不同的变量容器执行垃圾回收操作。看上图的步骤 A。

在步骤 B 中，模拟删除每个紫色变量。模拟删除时可能将不是紫色的普通变量引用数减"1"，如果某个普通变量引用计数变成0了，就对这个普通变量再做一次模拟删除。每个变量只能被模拟删除一次，模拟删除后标记为灰（原文说确保不会对同一个变量容器减两次"1",不对的吧）。

在步骤 C 中，模拟恢复每个紫色变量。恢复是有条件的，当变量的引用计数大于0时才对其做模拟恢复。同样每个变量只能恢复一次，恢复后标记为黑，基本就是步骤 B 的逆运算。这样剩下的一堆没能恢复的就是该删除的蓝色节点了，在步骤 D 中遍历出来真的删除掉。

算法中都是模拟删除、模拟恢复、真的删除，都使用简单的遍历即可（最典型的深搜遍历）。复杂度为执行模拟操作的节点数正相关，不只是紫色的那些疑似垃圾变量。

现在，你已经对这个算法有了基本了解，我们回头来看这个如何与PHP集成。默认的，PHP的垃圾回收机制是打开的，然后有个 php.ini 设置允许你修改它：zend.enable_gc 。

当垃圾回收机制打开时，每当根缓存区存满时，就会执行上面描述的循环查找算法。根缓存区有固定的大小，可存10,000个可能根,当然你可以通过修改PHP源码文件Zend/zend_gc.c中的常量GC_ROOT_BUFFER_MAX_ENTRIES，然后重新编译PHP，来修改这个10,000值。当垃圾回收机制关闭时，循环查找算法永不执行，然而，可能根将一直存在根缓冲区中，不管在配置中垃圾回收机制是否激活。

当垃圾回收机制关闭时，如果根缓冲区存满了可能根，更多的可能根显然不会被记录。那些没被记录的可能根，将不会被这个算法来分析处理。如果他们是循环引用周期的一部分，将永不能被清除进而导致内存泄漏。

即使在垃圾回收机制不可用时，可能根也被记录的原因是，相对于每次找到可能根后检查垃圾回收机制是否打开而言，记录可能根的操作更快。不过垃圾回收和分析机制本身要耗不少时间。

除了修改配置zend.enable_gc ，也能通过分别调用gc_enable() 和 gc_disable()函数来打开和关闭垃圾回收机制。调用这些函数，与修改配置项来打开或关闭垃圾回收机制的效果是一样的。即使在可能根缓冲区还没满时，也能强制执行周期回收。你能调用gc_collect_cycles()函数达到这个目的。这个函数将返回使用这个算法回收的周期数。

允许打开和关闭垃圾回收机制并且允许自主的初始化的原因，是由于你的应用程序的某部分可能是高时效性的。在这种情况下，你可能不想使用垃圾回收机制。当然，对你的应用程序的某部分关闭垃圾回收机制，是在冒着可能内存泄漏的风险，因为一些可能根也许存不进有限的根缓冲区。因此，就在你调用gc_disable()函数释放内存之前，先调用gc_collect_cycles()函数可能比较明智。因为这将清除已存放在根缓冲区中的所有可能根，然后在垃圾回收机制被关闭时，可留下空缓冲区以有更多空间存储可能根。

引用计数基本知识
性能方面考虑的因素
垃圾回收机制


性能方面考虑的因素

在上一节我们已经简单的提到：回收可能根有细微的性能上影响，但这是把PHP 5.2与PHP 5.3比较时才有的。尽管在PHP 5.2中，记录可能根相对于完全不记录可能根要慢些，而PHP 5.3中对 PHP run-time 的其他修改减少了这个性能损失。

这里主要有两个领域对性能有影响。第一个是内存占用空间的节省，另一个是垃圾回收机制执行内存清理时的执行时间增加(run-time delay)。我们将研究这两个领域。

内存占用空间的节省

首先，实现垃圾回收机制的整个原因是为了，一旦先决条件满足，通过清理循环引用的变量来节省内存占用。在PHP执行中，一旦根缓冲区满了或者调用gc_collect_cycles() 函数时，就会执行垃圾回收。在下图中，显示了下面脚本分别在PHP 5.2 和 PHP 5.3环境下的内存占用情况，其中排除了脚本启动时PHP本身占用的基本内存。

Example #1 Memory usage example

<?php
class Foo
{
    public $var = '3.1415962654';
}

$baseMemory = memory_get_usage();

for ( $i = 0; $i <= 100000; $i++ )
{
    $a = new Foo;
    $a->self = $a;
    if ( $i % 500 === 0 )
    {
        echo sprintf( '%8d: ', $i ), memory_get_usage() - $baseMemory, "\n";
    }
}
?>
Comparison of memory usage between PHP 5.2 and PHP 5.3

在这个很理论性的例子中，我们创建了一个对象，这个对象中的一个属性被设置为指回对象本身。在循环的下一个重复(iteration)中，当脚本中的变量被重新复制时，就会发生典型性的内存泄漏。在这个例子中，两个变量容器是泄漏的(对象容器和属性容器)，但是仅仅能找到一个可能根：就是被unset的那个变量。在10,000次重复后(也就产生总共10,000个可能根)，当根缓冲区满时，就执行垃圾回收机制，并且释放那些关联的可能根的内存。这从PHP 5.3的锯齿型内存占用图中很容易就能看到。每次执行完10,000次重复后，执行垃圾回收，并释放相关的重复使用的引用变量。在这个例子中由于泄漏的数据结构非常简单，所以垃圾回收机制本身不必做太多工作。从这个图表中，你能看到 PHP 5.3的最大内存占用大概是9 Mb，而PHP 5.2的内存占用一直增加。

执行时间增加(Run-Time Slowdowns)

垃圾回收影响性能的第二个领域是它释放已泄漏的内存耗费的时间。为了看到这个耗时时多少，我们稍微改变了上面的脚本，有更多次数的重复并且删除了循环中的内存占用计算，第二个脚本代码如下：

Example #2 GC性能影响

<?php
class Foo
{
    public $var = '3.1415962654';
}

for ( $i = 0; $i <= 1000000; $i++ )
{
    $a = new Foo;
    $a->self = $a;
}

echo memory_get_peak_usage(), "\n";
?>

我们将运行这个脚本两次，一次通过配置zend.enable_gc 打开垃圾回收机制时，另一次是它关闭时。

Example #3 执行以上脚本

time php -dzend.enable_gc=0 -dmemory_limit=-1 -n example2.php
# and
time php -dzend.enable_gc=1 -dmemory_limit=-1 -n example2.php

在我的机器上，第一个命令持续执行时间大概为10.7秒，而第二个命令耗费11.4秒。时间上增加了7%。然而，执行这个脚本时内存占用的峰值降低了98%，从931Mb 降到 10Mb。这个基准不是很科学，或者并不能代表真实应用程序的数据，但是它的确显示了垃圾回收机制在内存占用方面的好处。好消息就是，对这个脚本而言，在执行中出现更多的循环引用变量时，内存节省的更多的情况下，每次时间增加的百分比都是7%。

PHP内部 GC 统计信息

在PHP内部，可以显示更多的关于垃圾回收机制如何运行的信息。但是要显示这些信息，你需要先重新编译PHP使benchmark和data-collecting code可用。你需要在按照你的意愿运行./configure前，把环境变量CFLAGS设置成-DGC_BENCH=1。下面的命令串就是做这个事：

Example #4 重新编译PHP以启用GC benchmarking

export CFLAGS=-DGC_BENCH=1
./config.nice
make clean
make

当你用新编译的PHP二进制文件来重新执行上面的例子代码，在PHP执行结束后，你将看到下面的信息：

Example #5 GC 统计数据

GC Statistics
-------------
Runs:               110
Collected:          2072204
Root buffer length: 0
Root buffer peak:   10000

      Possible            Remove from  Marked
        Root    Buffered     buffer     grey
      --------  --------  -----------  ------
ZVAL   7175487   1491291    1241690   3611871
ZOBJ  28506264   1527980     677581   1025731

主要的信息统计在第一个块。你能看到垃圾回收机制运行了110次，而且在这110次运行中，总共有超过两百万的内存分配被释放。只要垃圾回收机制运行了至少一次，根缓冲区峰值(Root buffer peak)总是10000.

结论

通常，PHP中的垃圾回收机制，仅仅在循环回收算法确实运行时会有时间消耗上的增加。但是在平常的(更小的)脚本中应根本就没有性能影响。

然而，在平常脚本中有循环回收机制运行的情况下，内存的节省将允许更多这种脚本同时运行在你的服务器上。因为总共使用的内存没达到上限。

这种好处在长时间运行脚本中尤其明显，诸如长时间的测试套件或者daemon脚本此类。同时，对通常比Web脚本运行时间长的» PHP-GTK应用程序，新的垃圾回收机制，应该会大大改变一直以来认为内存泄漏问题难以解决的看法。

回收周期(Collecting Cycles)
DTrace 动态跟踪
垃圾回收机制


DTrace 动态跟踪

Table of Contents

  • PHP 和 DTrace 介绍
  • 使用 PHP 和 DTrace
  • 使用 SystemTap 监控 PHP DTrace 静态探针
性能方面考虑的因素
PHP 和 DTrace 介绍
特点


PHP 和 DTrace 介绍

包括 Solaris，Mac OS X，Oracle Linux 和 BSD 在内的很多操作系统 都提供了 DTrace 跟踪调试框架，它永远可用，并且额外消耗极低。 DTrace 可以跟踪操作系统行为和用户程序的执行情况。 它可以显示参数值，也可以用来分析性能问题。 用户可以使用 DTrace D 脚本语言创建脚本文件来监控探针，进而高效分析数据指针。

除非用户使用 DTrace D 脚本激活并监控 PHP 探针，否则它并不会运行，所以不会给正常的应用执行带来任何性能损耗。 即使 PHP 探针被激活，它的消耗也是非常低的，甚至可以直接在生产系统中使用。

在运行时可以激活 PHP "用户级静态定义跟踪"（USDT）探针。 举例说明，如果 D 脚本正在监控 PHP function-entry 探针， 那么，每当 PHP 脚本函数被调用的时候，这个探针将被触发，同时 D 脚本中所关联的动作代码将被执行。 在脚本的动作代码中，可以打印出诸如函数所在源文件等信息的探针参数， 也可以记录诸如函数执行次数这样的聚合数据。

这里仅描述了 PHP USDT 探针。请参考各操作系统文档中关于 DTrace 的部分获取更多信息， 例如，如何使用 DTrace 跟踪函数调用，如何跟踪操作系统行为等。 需要注意的是，不同平台提供的 DTrace 功能并不完全相同。

从 PHP 5.4 开始加入 DTrace 静态探针，之前的版本需要使用 » PECL 扩展来实现跟踪功能。这个扩展现在已经废弃。

在某些 Linux 发行版中，可以使用 SystemTap 工具来监控 PHP DTrace 静态探针。

DTrace 动态跟踪
使用 PHP 和 DTrace
DTrace 动态跟踪


使用 PHP 和 DTrace

在支持 DTrace 动态跟踪的平台上，可以配置 PHP 打开 DTrace 静态探针。

PHP DTrace 静态探针配置

请参考操作系统文档获取启用操作系统 DTrace 支持的信息。 例如，在 Oracle Linux 系统上启动 UEK3 内核，并进行如下操作：

# modprobe fasttrap
# chmod 666 /dev/dtrace/helper

除了 chmod 命令，您也可以使用 ACL 包规则来限制特定用户对于设备的访问权限。

使用 --enable-dtrace 配置参数构建 PHP：

# ./configure --enable-dtrace ...
# make
# make install

这样就启用了 PHP 核心的静态探针。对于提供了自有探针的 PHP 扩展需要分别构建。

PHP 核心的 DTrace 静态探针

PHP 中包括以下可用的静态探针
探针名称 | 探针描述 | 探针参数
request-startup | 请求开始时触发。 | char *file, char *request_uri, char *request_method
request-shutdown | 请求关闭时触发。 | char *file, char *request_uri, char *request_method
compile-file-entry | 脚本开始编译时触发。 | char *compile_file, char *compile_file_translated
compile-file-return | 脚本完成编译时触发。 | char *compile_file, char *compile_file_translated
execute-entry | 操作数数组开始执行时触发。例如：函数调用，文件包含以及生成器恢复时会被触发。 | char *request_file, int lineno
execute-return | 操作数数组执行完毕之后触发。 | char *request_file, int lineno
function-entry | PHP 引擎进入 PHP 函数或者方法调用时触发。 | char *function_name, char *request_file, int lineno, char *classname, char *scope
function-return | PHP 引擎从 PHP 函数或者方法调用返回后触发。. | char *function_name, char *request_file, int lineno, char *classname, char *scope
exception-thrown | 有异常抛出时触发。 | char *classname
exception-caught | 有异常被捕获时触发。 | char *classname
error | 无论 error_reporting 的设定如何，在发生错误时都会触发。 | char *errormsg, char *request_file, int lineno

PHP 扩展可以拥有额外的静态探针。

列出 PHP 中可用的静态探针

要列出 PHP 中可用的静态探针，开启一个 PHP 进程，然后运行：

# dtrace -l

输出信息类似如下所示：

   ID   PROVIDER            MODULE                          FUNCTION NAME
   [ . . . ]
    4   php15271               php               dtrace_compile_file compile-file-entry
    5   php15271               php               dtrace_compile_file compile-file-return
    6   php15271               php                        zend_error error
    7   php15271               php  ZEND_CATCH_SPEC_CONST_CV_HANDLER exception-caught
    8   php15271               php     zend_throw_exception_internal exception-thrown
    9   php15271               php                 dtrace_execute_ex execute-entry
   10   php15271               php           dtrace_execute_internal execute-entry
   11   php15271               php                 dtrace_execute_ex execute-return
   12   php15271               php           dtrace_execute_internal execute-return
   13   php15271               php                 dtrace_execute_ex function-entry
   14   php15271               php                 dtrace_execute_ex function-return
   15   php15271               php              php_request_shutdown request-shutdown
   16   php15271               php               php_request_startup request-startup

Provider 一列由 php 和当前进程 id 的组成。

如果运行的是 Apache web 服务器，那么模块名称可能是 libphp5.so， 并且可能会出现多块信息，每个运行中的 Apache 进程对应一个输出块。

Function Name 一列表示 Provider 对应的 PHP 内部 C 实现函数名称。

如果没有运行任何 PHP 进程，那么就不会显示任何 PHP 探针。

PHP DTrace 示例

下例展示了基本的 DTrace D 脚本。

Example #1 all_probes.d for tracing all PHP Static Probes with DTrace

#!/usr/sbin/dtrace -Zs

#pragma D option quiet

php*:::compile-file-entry
{
    printf("PHP compile-file-entry\n");
    printf("  compile_file              %s\n", copyinstr(arg0));
    printf("  compile_file_translated   %s\n", copyinstr(arg1));
}

php*:::compile-file-return
{
    printf("PHP compile-file-return\n");
    printf("  compile_file              %s\n", copyinstr(arg0));
    printf("  compile_file_translated   %s\n", copyinstr(arg1));
}

php*:::error
{
    printf("PHP error\n");
    printf("  errormsg                  %s\n", copyinstr(arg0));
    printf("  request_file              %s\n", copyinstr(arg1));
    printf("  lineno                    %d\n", (int)arg2);
}

php*:::exception-caught
{
    printf("PHP exception-caught\n");
    printf("  classname                 %s\n", copyinstr(arg0));
}

php*:::exception-thrown
{
    printf("PHP exception-thrown\n");
    printf("  classname                 %s\n", copyinstr(arg0));
}

php*:::execute-entry
{
    printf("PHP execute-entry\n");
    printf("  request_file              %s\n", copyinstr(arg0));
    printf("  lineno                    %d\n", (int)arg1);
}

php*:::execute-return
{
    printf("PHP execute-return\n");
    printf("  request_file              %s\n", copyinstr(arg0));
    printf("  lineno                    %d\n", (int)arg1);
}

php*:::function-entry
{
    printf("PHP function-entry\n");
    printf("  function_name             %s\n", copyinstr(arg0));
    printf("  request_file              %s\n", copyinstr(arg1));
    printf("  lineno                    %d\n", (int)arg2);
    printf("  classname                 %s\n", copyinstr(arg3));
    printf("  scope                     %s\n", copyinstr(arg4));
}

php*:::function-return
{
    printf("PHP function-return\n");
    printf("  function_name             %s\n", copyinstr(arg0));
    printf("  request_file              %s\n", copyinstr(arg1));
    printf("  lineno                    %d\n", (int)arg2);
    printf("  classname                 %s\n", copyinstr(arg3));
    printf("  scope                     %s\n", copyinstr(arg4));
}

php*:::request-shutdown
{
    printf("PHP request-shutdown\n");
    printf("  file                      %s\n", copyinstr(arg0));
    printf("  request_uri               %s\n", copyinstr(arg1));
    printf("  request_method            %s\n", copyinstr(arg2));
}

php*:::request-startup
{
    printf("PHP request-startup\n");
    printf("  file                      %s\n", copyinstr(arg0));
    printf("  request_uri               %s\n", copyinstr(arg1));
    printf("  request_method            %s\n", copyinstr(arg2));
}

此脚本在 dtrace 命令中使用了 -Z 选项。 此选项保证即使在没有任何 PHP 进程运行的时候脚本也能够正确执行。 如果省略了此选项，当没有任何探针可监控的时候，脚本会立即终止执行。

在运行此脚本的过程中，它将监控全部 PHP 核心静态探针。 运行 D 脚本：

# ./all_probes.d

再运行一个 PHP 脚本或者 PHP 应用，用来进行监控的 D 脚本会输出每个探针被触发时所携带的参数。

监控完成之后，使用 ^C 来终止 D 脚本的执行。

在多 CPU 的主机上，探针的显示顺序可能不是连续的，这取决于哪颗 CPU 执行探针以及多个 CPU 之间的线程迁移情况。 可以通过显示探针时间戳来减少混淆，例如：

php*:::function-entry
{
      printf("%lld: PHP function-entry ", walltimestamp);
      [ . . .]
}

参见

  • OCI8 和 DTrace 动态跟踪
PHP 和 DTrace 介绍
使用 SystemTap 监控 PHP DTrace 静态探针
DTrace 动态跟踪


使用 SystemTap 监控 PHP DTrace 静态探针

在某些 Linux 发行版上，可以使用 SystemTap 跟踪工具来跟踪 PHP 的静态 DTrace 探针。 此特性在 PHP 5.4.20 和 PHP 5.5 中具备。

安装支持 SystemTap 的 PHP

安装 SystemTap SDT 开发包。

# yum install systemtap-sdt-devel

安装 PHP 并启用 DTrace 探针：

# ./configure --enable-dtrace ...
# make

使用 SystemTap 列出 PHP 静态探针

使用 stap 命令列出 PHP 静态探针：

# stap -l 'process.provider("php").mark("*")' -c 'sapi/cli/php -i'

输出如下：

process("sapi/cli/php").provider("php").mark("compile__file__entry")
process("sapi/cli/php").provider("php").mark("compile__file__return")
process("sapi/cli/php").provider("php").mark("error")
process("sapi/cli/php").provider("php").mark("exception__caught")
process("sapi/cli/php").provider("php").mark("exception__thrown")
process("sapi/cli/php").provider("php").mark("execute__entry")
process("sapi/cli/php").provider("php").mark("execute__return")
process("sapi/cli/php").provider("php").mark("function__entry")
process("sapi/cli/php").provider("php").mark("function__return")
process("sapi/cli/php").provider("php").mark("request__shutdown")
process("sapi/cli/php").provider("php").mark("request__startup")

SystemTap 示例

Example #1 all_probes.stp for tracing all PHP Static Probes with SystemTap

probe process("sapi/cli/php").provider("php").mark("compile__file__entry") {
    printf("Probe compile__file__entry\n");
    printf("  compile_file %s\n", user_string($arg1));
    printf("  compile_file_translated %s\n", user_string($arg2));
}
probe process("sapi/cli/php").provider("php").mark("compile__file__return") {
    printf("Probe compile__file__return\n");
    printf("  compile_file %s\n", user_string($arg1));
    printf("  compile_file_translated %s\n", user_string($arg2));
}
probe process("sapi/cli/php").provider("php").mark("error") {
    printf("Probe error\n");
    printf("  errormsg %s\n", user_string($arg1));
    printf("  request_file %s\n", user_string($arg2));
    printf("  lineno %d\n", $arg3);
}
probe process("sapi/cli/php").provider("php").mark("exception__caught") {
    printf("Probe exception__caught\n");
    printf("  classname %s\n", user_string($arg1));
}
probe process("sapi/cli/php").provider("php").mark("exception__thrown") {
    printf("Probe exception__thrown\n");
    printf("  classname %s\n", user_string($arg1));
}
probe process("sapi/cli/php").provider("php").mark("execute__entry") {
    printf("Probe execute__entry\n");
    printf("  request_file %s\n", user_string($arg1));
    printf("  lineno %d\n", $arg2);
}
probe process("sapi/cli/php").provider("php").mark("execute__return") {
    printf("Probe execute__return\n");
    printf("  request_file %s\n", user_string($arg1));
    printf("  lineno %d\n", $arg2);
}
probe process("sapi/cli/php").provider("php").mark("function__entry") {
    printf("Probe function__entry\n");
    printf("  function_name %s\n", user_string($arg1));
    printf("  request_file %s\n", user_string($arg2));
    printf("  lineno %d\n", $arg3);
    printf("  classname %s\n", user_string($arg4));
    printf("  scope %s\n", user_string($arg5));
}
probe process("sapi/cli/php").provider("php").mark("function__return") {
    printf("Probe function__return: %s\n", user_string($arg1));
    printf(" function_name %s\n", user_string($arg1));
    printf("  request_file %s\n", user_string($arg2));
    printf("  lineno %d\n", $arg3);
    printf("  classname %s\n", user_string($arg4));
    printf("  scope %s\n", user_string($arg5));
}
probe process("sapi/cli/php").provider("php").mark("request__shutdown") {
    printf("Probe request__shutdown\n");
    printf("  file %s\n", user_string($arg1));
    printf("  request_uri %s\n", user_string($arg2));
    printf("  request_method %s\n", user_string($arg3));
}
probe process("sapi/cli/php").provider("php").mark("request__startup") {
    printf("Probe request__startup\n");
    printf("  file %s\n", user_string($arg1));
    printf("  request_uri %s\n", user_string($arg2));
    printf("  request_method %s\n", user_string($arg3));
}

在 PHP 脚本的执行过程中，上述脚本会跟踪所有的 PHP 核心静态探针：

# stap -c 'sapi/cli/php test.php' all_probes.stp

使用 PHP 和 DTrace
函数参考
DTrace 动态跟踪


函数参考

Tip

参见 扩展库列表／归类.

  • 影响 PHP 行为的扩展
    • APC — Alternative PHP Cache(可选PHP缓存)
    • APCu — APC User Cache
    • APD — Advanced PHP debugger
    • bcompiler — PHP 字节码编译器
    • BLENC — Blenc - BLowfish ENCoder for PHP source scripts
    • 错误处理 — 错误处理和日志记录
    • htscanner — htaccess-like support for all SAPIs
    • inclued — Inclusion hierarchy viewer
    • Memtrack
    • OPcache
    • 输出控制 — 输出缓冲控制
    • PHP 选项/信息 — PHP 选项和信息
    • runkit
    • scream — Break the silence operator
    • uopz
    • Weakref — Weak References
    • WinCache — Windows Cache for PHP
    • Xhprof — 层次式性能分析器
  • 音频格式操作
    • ID3 — ID3 Tags
    • KTaglib
    • oggvorbis — OGG/Vorbis
    • OpenAL — OpenAL Audio Bindings
  • 身份认证服务
    • KADM5 — Kerberos V
    • Radius
  • 针对命令行的扩展
    • Ncurses — Ncurses Terminal Screen Control
    • Newt
    • Readline — GNU Readline
  • 压缩与归档扩展
    • Bzip2
    • LZF
    • Phar
    • Rar — Rar Archiving
    • Zip
    • Zlib — Zlib Compression
  • 信用卡处理
    • MCVE — MCVE (Monetra) Payment
  • 加密扩展
    • Crack — Cracklib
    • CSPRNG
    • Hash — 哈希信息摘要框架
    • Mcrypt
    • Mhash
    • OpenSSL
    • Password Hashing
  • 数据库扩展
    • 数据库抽象层
    • 针对各数据库系统对应的扩展
  • 日期与时间相关扩展
    • Calendar
    • 日期/时间 — 日期和时间
    • HRTime — High resolution timing
  • 文件系统相关扩展
    • Direct IO
    • 目录
    • Fileinfo — 文件信息
    • Filesystem
    • Inotify
    • Mimetype
    • Proctitle
    • xattr
    • xdiff
  • 国际化与字符编码支持
    • Enchant — Enchant spelling library
    • FriBiDi
    • Gender — Determine gender of firstnames
    • Gettext
    • iconv
    • intl — Internationalization Functions
    • 多字节字符串
    • Pspell
    • Recode — GNU Recode
  • 图像生成和处理
    • Cairo
    • Exif — 可交换图像信息
    • GD — 图像处理和 GD
    • Gmagick
    • ImageMagick — 图像处理(ImageMagick)
  • 邮件相关扩展
    • Cyrus — Cyrus IMAP administration
    • IMAP — IMAP, POP3 和 NNTP
    • Mail
    • Mailparse
    • vpopmail
  • 数学扩展
    • BC Math — BCMath 任意精度数学
    • GMP — GNU Multiple Precision
    • Lapack
    • Math — Mathematical Functions
    • Statistics
    • Trader — Technical Analysis for Traders
  • 非文本内容的 MIME 输出
    • FDF — Forms Data Format
    • GnuPG — GNU Privacy Guard
    • haru — Haru PDF
    • Ming — Ming (flash)
    • PDF
    • PS — PostScript document creation
    • RPM Reader — RPM Header Reading
  • 进程控制扩展
    • Eio
    • Ev
    • Expect
    • Libevent
    • PCNTL — 进程控制
    • POSIX
    • 程序执行 — 系统程序执行
    • pthreads
    • Semaphore — Semaphore, Shared Memory and IPC
    • Shared Memory
    • Sync
  • 其它基本扩展
    • GeoIP — Geo IP 定位
    • FANN — FANN (Fast Artificial Neural Network)
    • JSON — JavaScript对象符号（JSON）
    • Judy — Judy Arrays
    • Lua
    • Misc. — 杂项函数
    • Parsekit
    • SPL — PHP标准库 (SPL)
    • SPL Types — SPL Type Handling
    • Streams
    • Tidy
    • Tokenizer
    • URLs
    • V8js — V8 Javascript Engine Integration
    • Yaml — YAML 数据序列化
    • Yaf — Yet Another Framework
    • Taint
  • 其它服务
    • chdb — Constant hash database
    • cURL — Client URL 库
    • Event
    • FAM — File Alteration Monitor
    • FTP
    • Gearman
    • Gopher — Net Gopher
    • Gupnp
    • Hyperwave API
    • LDAP — Lightweight Directory Access Protocol
    • Memcache
    • Memcached
    • mqseries
    • 网络
    • RRD — RRDtool
    • SAM — Simple Asynchronous Messaging
    • SNMP
    • Sockets
    • SSH2 — Secure Shell2
    • Stomp — Stomp Client
    • SVM — 支持向量机
    • SVN — Subversion
    • TCP — TCP Wrappers
    • Varnish
    • YAZ
    • YP/NIS
    • 0MQ消息系统 — ZMQ
    • ZooKeeper
  • 搜索引擎扩展
    • mnoGoSearch
    • Solr — Apache Solr
    • Sphinx — Sphinx 客户端
    • Swish — Swish Indexing
  • 针对服务器的扩展
    • Apache
    • FastCGI 进程管理器
    • IIS — IIS Administration
    • NSAPI
  • Session 扩展
    • Msession — Mohawk Software Session Handler Functions
    • Sessions — Session Handling
    • Session PgSQL — PostgreSQL Session Save Handler
  • 文本处理
    • BBCode — Bulletin Board Code
    • PCRE — 正则表达式(兼容 Perl)
    • POSIX Regex — Regular Expression (POSIX Extended)
    • ssdeep — ssdeep Fuzzy Hashing
    • 字符串
  • 变量与类型相关扩展
    • 数组
    • 类/对象 — 类/对象的信息
    • Classkit
    • Ctype — 字符类型检测
    • Data Structures
    • Filter — Data Filtering
    • Function Handling
    • Quickhash
    • 反射
    • Variable handling
  • Web 服务
    • OAuth
    • SCA
    • SOAP
    • Yar — Yet Another RPC Framework
    • XML-RPC
  • Windows 专用扩展
    • COM — COM and .Net (Windows)
    • win32ps
    • win32service
  • XML 操作
    • DOM — Document Object Model
    • libxml
    • SDO — Service Data Objects
    • SDO-DAS-Relational — SDO Relational Data Access Service
    • SDO DAS XML — SDO XML Data Access Service
    • SimpleXML
    • WDDX
    • XMLDiff — XML diff and merge
    • XML 解析器
    • XMLReader
    • XMLWriter
    • XSL
  • 图形用户界面(GUI) 扩展
    • UI
使用 SystemTap 监控 PHP DTrace 静态探针
影响 PHP 行为的扩展
PHP 手册


影响 PHP 行为的扩展

  • APC — Alternative PHP Cache(可选PHP缓存)
    • 简介
    • 安装／配置
    • 预定义常量
    • APC 函数
    • APCIterator — The APCIterator class
  • APCu — APC User Cache
    • 简介
    • 安装／配置
    • 预定义常量
    • APCu 函数
    • APCUIterator — The APCUIterator class
  • APD — Advanced PHP debugger
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • APD 函数
  • bcompiler — PHP 字节码编译器
    • 简介
    • 安装／配置
    • 预定义常量
    • bcompiler 函数
  • BLENC — Blenc - BLowfish ENCoder for PHP source scripts
    • 简介
    • 安装／配置
    • 预定义常量
    • Blenc 函数
  • 错误处理 — 错误处理和日志记录
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • 错误处理 函数
  • htscanner — htaccess-like support for all SAPIs
    • 简介
    • 安装／配置
  • inclued — Inclusion hierarchy viewer
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • inclued 函数
  • Memtrack
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
  • OPcache
    • 简介
    • 安装／配置
    • OPcache 函数
  • 输出控制 — 输出缓冲控制
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Output Control 函数
  • PHP 选项/信息 — PHP 选项和信息
    • 简介
    • 安装／配置
    • 预定义常量
    • PHP 选项/信息 函数
  • runkit
    • 简介
    • 预定义常量
    • 安装／配置
    • runkit 函数
  • scream — Break the silence operator
    • 简介
    • 安装／配置
    • 范例
  • uopz
    • 简介
    • 安装／配置
    • 预定义常量
    • Uopz 函数
  • Weakref — Weak References
    • 简介
    • 安装／配置
    • WeakRef — The WeakRef class
    • WeakMap — The WeakMap class
  • WinCache — Windows Cache for PHP
    • 简介
    • 安装／配置
    • 预定义常量
    • WinCache 函数
    • Building for Windows
  • Xhprof — 层次式性能分析器
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Xhprof 函数
函数参考
APC
函数参考


Alternative PHP Cache(可选PHP缓存)

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • APC 函数
    • apc_add — 缓存一个变量到数据存储
    • apc_bin_dump — Get a binary dump of the given files and user variables
    • apc_bin_dumpfile — Output a binary dump of cached files and user variables to a file
    • apc_bin_load — Load a binary dump into the APC file/user cache
    • apc_bin_loadfile — Load a binary dump from a file into the APC file/user cache
    • apc_cache_info — Retrieves cached information from APC's data store
    • apc_cas — 用新值更新旧值
    • apc_clear_cache — 清除APC缓存
    • apc_compile_file — Stores a file in the bytecode cache, bypassing all filters.
    • apc_dec — Decrease a stored number
    • apc_define_constants — Defines a set of constants for retrieval and mass-definition
    • apc_delete_file — Deletes files from the opcode cache
    • apc_delete — 从用户缓存中删除某个变量
    • apc_exists — 检查APC中是否存在某个或者某些key
    • apc_fetch — 从缓存中取出存储的变量
    • apc_inc — 递增一个储存的数字
    • apc_load_constants — Loads a set of constants from the cache
    • apc_sma_info — Retrieves APC's Shared Memory Allocation information
    • apc_store — Cache a variable in the data store
  • APCIterator — The APCIterator class
    • APCIterator::__construct — 构造一个 APCIterator 迭代器对象
    • APCIterator::current — 获取当前项
    • APCIterator::getTotalCount — 获取总数
    • APCIterator::getTotalHits — 获取缓存命中数
    • APCIterator::getTotalSize — 获取所有缓存的尺寸大小
    • APCIterator::key — Get iterator key获取迭代器的键
    • APCIterator::next — 移到下一项
    • APCIterator::rewind — 倒退迭代器
    • APCIterator::valid — 检查当前位置是否有效
影响 PHP 行为的扩展
简介
影响 PHP 行为的扩展


简介

Alternative PHP Cache (APC) 是一个开放自由的PHP opcode 缓存。它的目标是提供一个自由、 开放，和健全的框架用于缓存和优化PHP的中间代码。

APC
安装／配置
APC


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
APC


需求

构建此扩展不需要其他扩展。

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/apc.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

Note: 在Windows上，APC需要一个临时目录，并且Web服务器对这个目录可写，APC会检测TMP,TEMP,USERPROFILE这些Windows的环境变量，如果这些都没有，会检查系统文件夹下的WINDOWS目录。

Note: 更深层次，更高级别的技术实现细节,请参阅 » 开发人员提供的 TECHNOTES 文件 .

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

尽管默认的 APC 设定对于大多数安装已经没问题，但专业人员应考虑调整以下参数。

APC有两个主要的配置选项。第一，多少内存将被分配给APC;第二，每次请求APC是否检查文件修改。两个ini选项分别控制这些设置 apc.shm_size 和apc.stat.就这两项配置仔细阅读下面的章节。

一旦服务器运行起来了, apc.php 脚本可以拷贝到一个可以通过浏览器访问到的Web目录中，通过浏览器访问这个脚本会得到APC工作状态的详细分析，如果在PHP中启用了GD扩展，它甚至会显示一些有趣的图表。当然，首要的事情是要确保真的缓存了文件。 如果APC运行了， 缓存完全统计 数目 (在左上角)将显示缓存的命中率并且清除在最后 apc.ttl 秒内没有被访问的缓存。 这个数字使缓存的最小化的很好配置。如果缓存不断的被填充和清除，这将影响缓存的效果和脚本的性能。减少这个数字的最好方式就是给APC分配足够多的内存。除此之外, 可以通过 apc.filters 缓存更少的脚本。

APC配置选项
名字 | 默认 | 可修改范围 | 更新日志
apc.enabled | "1" | PHP_INI_SYSTEM | PHP_INI_SYSTEM in APC 2. PHP_INI_ALL in APC <= 3.0.12.
apc.shm_segments | "1" | PHP_INI_SYSTEM |
apc.shm_size | "30" | PHP_INI_SYSTEM |
apc.optimization | "0" | PHP_INI_ALL | PHP_INI_SYSTEM in APC 2. Removed in APC 3.0.13.
apc.num_files_hint | "1000" | PHP_INI_SYSTEM |
apc.user_entries_hint | "4096" | PHP_INI_SYSTEM | Available since APC 3.0.0.
apc.ttl | "0" | PHP_INI_SYSTEM | Available since APC 3.0.0.
apc.user_ttl | "0" | PHP_INI_SYSTEM | Available since APC 3.0.0.
apc.gc_ttl | "3600" | PHP_INI_SYSTEM |
apc.cache_by_default | "1" | PHP_INI_ALL | PHP_INI_SYSTEM in APC <= 3.0.12. Available since APC 3.0.0.
apc.filters | NULL | PHP_INI_SYSTEM |
apc.mmap_file_mask | NULL | PHP_INI_SYSTEM |
apc.slam_defense | "0" | PHP_INI_SYSTEM | Available since APC 3.0.0.
apc.file_update_protection | "2" | PHP_INI_SYSTEM | Available since APC 3.0.6.
apc.enable_cli | "0" | PHP_INI_SYSTEM | Available since APC 3.0.7.
apc.max_file_size | "1M" | PHP_INI_SYSTEM | Available since APC 3.0.7.
apc.use_request_time | "1" | PHP_INI_ALL | Available since APC 3.1.3.
apc.stat | "1" | PHP_INI_SYSTEM | Available since APC 3.0.10.
apc.write_lock | "1" | PHP_INI_SYSTEM | Available since APC 3.0.11.
apc.report_autofilter | "0" | PHP_INI_SYSTEM | Available since APC 3.0.11.
apc.include_once_override | "0" | PHP_INI_SYSTEM | Available since APC 3.0.12.
apc.rfc1867 | "0" | PHP_INI_SYSTEM | Available since APC 3.0.13.
apc.rfc1867_prefix | "upload_" | PHP_INI_SYSTEM |
apc.rfc1867_name | "APC_UPLOAD_PROGRESS" | PHP_INI_SYSTEM |
apc.rfc1867_freq | "0" | PHP_INI_SYSTEM |
apc.rfc1867_ttl | "3600" | PHP_INI_SYSTEM | Available since APC 3.1.1.
apc.localcache | "0" | PHP_INI_SYSTEM | Available since APC 3.0.14.
apc.localcache.size | "512" | PHP_INI_SYSTEM | Available since APC 3.0.14.
apc.coredump_unmap | "0" | PHP_INI_SYSTEM | Available since APC 3.0.16.
apc.stat_ctime | "0" | PHP_INI_SYSTEM | Available since APC 3.0.13.
apc.preload_path | NULL | PHP_INI_SYSTEM | Available since APC 3.1.1.
apc.file_md5 | "0" | PHP_INI_SYSTEM | Available since APC 3.1.1.
apc.canonicalize | "1" | PHP_INI_SYSTEM | Available since APC 3.1.1.
apc.lazy_functions | 0 | PHP_INI_SYSTEM | Available since APC 3.1.3.
apc.lazy_classes | 0 | PHP_INI_SYSTEM | Available since APC 3.1.3.
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

apc.enabled boolean

apc.enabled 可以设成 0 来禁用 APC.主要是用在当 APC 被静态编译入 PHP 时，因为没有其它方法来禁用了(编译为 DSO , 的时候，可以将php.ini中的extension 行注释掉)。

apc.shm_segments integer

编译器缓存要分配的共享内存块的数目。如果 APC 用光了共享内存但是已经将 apc.shm_size 设为了系统所能允许的最大值，可以尝试增大此值。

apc.shm_size integer

以 MB 为单位的每个共享内存块的大小。默认时，有些系统（包括大多数 BSD 变种）的共享内存块大小非常低。

apc.optimization integer

优化级别。设为 0 则禁用优化器，更高的值则使用更主动的优化。期望非常有限的速度提升。尚在试验中。

apc.num_files_hint integer

Web 服务器上的被包含或被请求的不同源文件的数目的大概估计。如果不确定则设为 0 或去掉此项；此设定主要用在有数千个源文件的站点。

apc.user_entries_hint integer

与apc.num_files_hint类似, 根据唯一用户数来存储缓存变量。 如果不能确定则设置为0或或去掉此项。

apc.ttl integer

缓存条目在缓冲区中允许逗留的秒数。0 表示永不超时。建议值为7200~86400 设为 0 意味着缓冲区有可能被旧的缓存条目填满，从而导致无法缓存新条目。

apc.user_ttl integer

类似于apc.ttl，只是针对每个用户而言，建议值为7200~86400。 设为 0 意味着缓冲区有可能被旧的缓存条目填满，从而导致无法缓存新条目。 如果大于0，APC将尝试删除过期条目。

apc.gc_ttl integer

缓存条目在垃圾回收表中能够存在的秒数。此值提供了一个安全措施，即在服务器进程在执行缓存的源文件时，如果该文件被修改则旧版本将不会被回收，直到达到此 TTL 为止。设为零将禁用此特性。

apc.cache_by_default boolean

默认为 on，但可以设为 off 并和加号开头的 apc.filters 一起用，则文件仅在匹配过滤器时被缓存。

apc.filters string

一个以逗号分隔的 POSIX 扩展正则表达式的列表。如果任一个模式匹配源文件名，则该文件不被缓存。注意用来匹配的文件名是传递给 include/require 的文件名，而不是绝对路径。如果正则表达式的第一个字符是+ t则意味着任何匹配表达式的文件会被缓存，如果第一个字符是 - 则任何匹配项都不会被缓存。 -是默认值，可以省略掉。

apc.mmap_file_mask string

如果使用 --enable-mmap(默认启用)为APC编译了MMAP支持， 这里的值就是传递给mmap模块的mktemp风格的文件掩码(建议值为" /tmp/apc.XXXXXX")。 该掩码用于决定内存映射区域是否要被file-backed或者shared memory backed。 对于直接的file-backed内存映射，要设置成"/tmp/apc.XXXXXX"的样子(恰好6个X)。 要使用POSIX风格的shm_open/mmap就需要设置成"/apc.shm.XXXXXX"的样子。 你还可以设为"/dev/zero"来为匿名映射的内存使用内核的"/dev/zero"接口。 不定义此指令则表示强制使用匿名映射。

apc.slam_defense integer

在非常繁忙的服务器上，无论是启动服务还是修改文件， 都可能由于多个进程企图同时缓存一个文件而导致竞争条件。 这个选项用于设置进程在处理未被缓存的文件时跳过缓存步骤的百分率。 比如设为75表示在遇到未被缓存的文件时有75%的概率不进行缓存，从而减少碰撞几率。 反对使用该指令，鼓励设为 0来禁用这个特性。建议该用apc.write_lock指令。

Deprecated by apc.write_lock.

apc.file_update_protection integer

当你在一个运行中的服务器上修改文件时，你应当执行原子操作。 也就是先写进一个临时文件，然后将该文件重命名(mv)到最终的名字。 文本编辑器以及 cp, tar 等程序却并不是这样操作的，从而导致有可能缓冲了残缺的文件。 默认值 2 表示在访问文件时如果发现修改时间距离访问时间小于 2 秒则不做缓冲。 那个不幸的访问者可能得到残缺的内容，但是这种坏影响却不会通过缓存扩大化。 如果你能确保所有的更新操作都是原子操作，那么可以用 0 关闭此特性。 如果你的系统由于大量的IO操作导致更新缓慢，你就需要增大此值。

apc.enable_cli integer

是否为CLI版本启用APC功能，仅用于测试和调试目的才打开此选项。 在正常情况下不是理想的创建、 填充和销毁 CLI 的每个请求上的 APC 缓存，但各种测试方案很有用，能够轻松地使 CLI 版本的 PHP APC

apc.max_file_size integer

Prevent files larger than this value from getting cached. Defaults to 1M.

apc.stat integer

是否启用脚本更新检查。 改变这个指令值要非常小心。 默认值 On 表示APC在每次请求脚本时都检查脚本是否被更新， 如果被更新则自动重新编译和缓存编译后的内容。但这样做对性能有不利影响。 如果设为 Off 则表示不进行检查，从而使性能得到大幅提高。 但是为了使更新的内容生效，你必须重启Web服务器(译者注：如果采用cgi/fcgi类似的，需重启cgi/fcgi进程)。 生产服务器上脚本文件很少更改, 可以通过禁用本选项获得显著的性能提升。

这个指令对于include/require的文件同样有效。但是需要注意的是， 如果你使用的是相对路径，APC就必须在每一次include/require时都进行检查以定位文件。 而使用绝对路径则可以跳过检查，所以鼓励你使用绝对路径进行include/require操作。

apc.write_lock boolean

在繁忙的服务器上，Web服务器第一次被启动，或者很多文件在同一时间被修改，APC可能会多次编译同一个文件，写锁保证只有一个进程将尝试编译并缓存未缓存的脚本。其他进程试图使用该脚本将不使用opcode缓存，而不是锁定和等待缓存生成。

apc.report_autofilter boolean

是否记录所有由于early/late binding原因而自动未被缓存的脚本。

apc.include_once_override boolean

优化include_once和require_once函数以避免执行额外的系统调用。

apc.rfc1867 boolean

RFC1867 File Upload Progress hook handler is only available if APC was compiled against PHP 5.2.0 or later. When enabled, any file uploads which includes a field called APC_UPLOAD_PROGRESS before the file field in an upload form will cause APC to automatically create an upload_key user cache entry where key is the value of the APC_UPLOAD_PROGRESS form entry.

Note that the hidden field specified by APC_UPLOAD_PROGRESS must come before the file field, otherwise the upload progress will not work correctly.

Note that the file upload tracking is not threadsafe at this point, so new uploads that happen while a previous one is still going will disable the tracking for the previous.

Example #1 An apc.rfc1867 example

<?php
print_r(apc_fetch("upload_$_POST[APC_UPLOAD_PROGRESS]"));
?>

以上例程的输出类似于：

Array
(
    [total] => 1142543
    [current] => 1142543
    [rate] => 1828068.8
    [filename] => test
    [name] => file
    [temp_filename] => /tmp/php8F
    [cancel_upload] => 0
    [done] => 1
)

apc.rfc1867_prefix string

用于上传文件的缓冲项条目名称前缀

apc.rfc1867_name string

需要由APC处理的上传文件的隐藏表单项名称

apc.rfc1867_freq string

用户上传文件缓存项的更新频率。 取值可以是总文件大小的百分比，或者以 "k", "m", or "g" kilobytes, megabytes, or gigabytes 结尾的绝对尺寸 (大小写不敏感). 0 表示尽可能快的更新，不过这样可能会导致上传速度下降。

apc.rfc1867_ttl bool

TTL for rfc1867 entries.

apc.localcache boolean

使用非锁定本地进程shadow-cache ，它可以减少了向缓冲区写入时锁之间的竞争。

apc.localcache.size integer

The size of the local process shadow-cache, should be set to a sufficiently large value, approximately half of apc.num_files_hint.

apc.coredump_unmap boolean

启用APC的信号句柄，例如SIGSEGV信号，当信号写入核心文件。当这些信号被接收，APC将试图取消映射的共享内存段，从核心文件中排除它。此设置可以提高系统的稳定性,当接受到致命的信号或者采用APC的大型共享内存段配置方式。

Warning

此功能是潜在的危险。如果发生致命错误取消映射一个共享内存段致命的信号句柄， 可能会导致不可预知的结果。

Note:

虽然有些内核可能会提供了便利，忽略各类共享内存时生成核心转储文件，这些实现可能也忽略了重要的共享内存段，比如 Apache scoreboard。

apc.stat_ctime integer

验证ctime(创建时间)可以避免SVN或者rsync带来的问题，确保自上次统计inode没有改变。APC通常只检查mtime(修改时间)。

apc.canonicalize bool

如果设置为on，则在no-state 模式（不检查文件更新）时会将相对路径改为绝对路径。

apc.preload_path string

apc.use_request_time bool

Use the SAPI request start time for TTL.

apc.file_md5 bool

记录文件的md5值

apc.lazy_functions integer

启用函数延迟加载

apc.lazy_classes integer

启用类延迟加载

安装
资源类型
安装／配置


资源类型

此扩展没有定义资源类型。

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

APC_BIN_VERIFY_CRC32 (integer)
APC_BIN_VERIFY_MD5 (integer)
APC_ITER_ALL (integer)
APC_ITER_ATIME (integer)
APC_ITER_CTIME (integer)
APC_ITER_DEVICE (integer)
APC_ITER_DTIME (integer)
APC_ITER_FILENAME (integer)
APC_ITER_INODE (integer)
APC_ITER_KEY (integer)
APC_ITER_MD5 (integer)
APC_ITER_MEM_SIZE (integer)
APC_ITER_MTIME (integer)
APC_ITER_NONE (integer)
APC_ITER_NUM_HITS (integer)
APC_ITER_REFCOUNT (integer)
APC_ITER_TTL (integer)
APC_ITER_TYPE (integer)
APC_ITER_VALUE (integer)
APC_LIST_ACTIVE (integer)
APC_LIST_DELETED (integer)

资源类型
APC 函数
APC


APC 函数

Table of Contents

  • apc_add — 缓存一个变量到数据存储
  • apc_bin_dump — Get a binary dump of the given files and user variables
  • apc_bin_dumpfile — Output a binary dump of cached files and user variables to a file
  • apc_bin_load — Load a binary dump into the APC file/user cache
  • apc_bin_loadfile — Load a binary dump from a file into the APC file/user cache
  • apc_cache_info — Retrieves cached information from APC's data store
  • apc_cas — 用新值更新旧值
  • apc_clear_cache — 清除APC缓存
  • apc_compile_file — Stores a file in the bytecode cache, bypassing all filters.
  • apc_dec — Decrease a stored number
  • apc_define_constants — Defines a set of constants for retrieval and mass-definition
  • apc_delete_file — Deletes files from the opcode cache
  • apc_delete — 从用户缓存中删除某个变量
  • apc_exists — 检查APC中是否存在某个或者某些key
  • apc_fetch — 从缓存中取出存储的变量
  • apc_inc — 递增一个储存的数字
  • apc_load_constants — Loads a set of constants from the cache
  • apc_sma_info — Retrieves APC's Shared Memory Allocation information
  • apc_store — Cache a variable in the data store
预定义常量
apc_add
APC


缓存一个变量到数据存储

APC 函数
apc_bin_dump
APC 函数
PHP Manual

apc_add

(PECL apc >= 3.0.13)

apc_add — 缓存一个变量到数据存储

说明

bool apc_add ( string $key , mixed $var [, int $ttl = 0 ] )
array apc_add ( array $values [, mixed $unused = NULL [, int $ttl = 0 ]] )

仅仅在缓存变量不存在的情况下缓存变量到数据存储中

Note: 与PHP中其他的机制不同，使用apc_add() 存储变量 在不同的请求之间一直持久存在（直到从缓存系统中移除）

参数

key

存储缓存变量使用的名称keys 是唯一的，
 所以试图使用 apc_add() 去添加一个名称已经存在的缓存，
 将不会覆盖现有的缓存的值, 并且返回 FALSE. (这个是 apc_add() 和
 apc_store()之间唯一的不同.)

var

存储的变量

ttl

生存时间;在缓存中存储var共ttl秒, 在ttl秒过去后,存储的变量将会从缓存中擦除(在下一次请求时), 如果没有设置ttl(或者ttl是0), 变量将一直存活到被手动移除为止,除此之外不在缓存中的可能原因是，缓存系统使用clear，或者restart等

values

Names in key, variables in value.

返回值

Returns TRUE if something has effectively been added into the cache, FALSE otherwise. Second syntax returns array with error keys.

范例

Example #1 apc_add() 例子

<?php
$bar = 'BAR';
apc_add('foo', $bar);
var_dump(apc_fetch('foo'));
echo "\n";
$bar = 'NEVER GETS SET';
apc_add('foo', $bar);
var_dump(apc_fetch('foo'));
echo "\n";
?>

以上例程会输出：

string(3) "BAR"
string(3) "BAR"

参见

  • apc_store() - Cache a variable in the data store
  • apc_fetch() - 从缓存中取出存储的变量
  • apc_delete() - 从用户缓存中删除某个变量

APC 函数
apc_bin_dump
APC 函数


Get a binary dump of the given files and user variables

apc_add
apc_bin_dumpfile
APC 函数
PHP Manual

apc_bin_dump

(PECL apc >= 3.1.4)

apc_bin_dump — Get a binary dump of the given files and user variables

说明

string apc_bin_dump ([ array $files = NULL [, array $user_vars = NULL ]] )

Returns a binary dump of the given files and user variables from the APC cache. A NULL for files or user_vars signals a dump of every entry, whereas array() will dump nothing.

参数

files

The files. Passing in NULL signals a dump of every entry, while passing in array() will dump nothing.

user_vars

The user vars. Passing in NULL signals a dump of every entry, while passing in array() will dump nothing.

返回值

Returns a binary dump of the given files and user variables from the APC cache, FALSE if APC is not enabled, or NULL if an unknown error is encountered.

参见

  • apc_bin_dumpfile() - Output a binary dump of cached files and user variables to a file
  • apc_bin_load() - Load a binary dump into the APC file/user cache
apc_add
apc_bin_dumpfile
APC 函数


Output a binary dump of cached files and user variables to a file

apc_bin_dump
apc_bin_load
APC 函数
PHP Manual

apc_bin_dumpfile

(PECL apc >= 3.1.4)

apc_bin_dumpfile — Output a binary dump of cached files and user variables to a file

说明

int apc_bin_dumpfile ( array $files , array $user_vars , string $filename [, int $flags = 0 [, resource $context = NULL ]] )

Outputs a binary dump of the given files and user variables from the APC cache to the named file.

参数

files

The file names being dumped.

user_vars

The user variables being dumped.

filename

The filename where the dump is being saved.

flags

Flags passed to the filename stream. See the file_put_contents() documentation for details.

context

The context passed to the filename stream. See the file_put_contents() documentation for details.

返回值

The number of bytes written to the file, otherwise FALSE if APC is not enabled, filename is an invalid file name, filename can't be opened, the file dump can't be completed (e.g., the hard drive is out of disk space), or an unknown error was encountered.

参见

  • apc_bin_dump() - Get a binary dump of the given files and user variables
  • apc_bin_load() - Load a binary dump into the APC file/user cache
apc_bin_dump
apc_bin_load
APC 函数


Load a binary dump into the APC file/user cache

apc_bin_dumpfile
apc_bin_loadfile
APC 函数
PHP Manual

apc_bin_load

(PECL apc >= 3.1.4)

apc_bin_load — Load a binary dump into the APC file/user cache

说明

bool apc_bin_load ( string $data [, int $flags = 0 ] )

Loads the given binary dump into the APC file/user cache.

参数

data

The binary dump being loaded, likely from apc_bin_dump().

flags

Either APC_BIN_VERIFY_CRC32, APC_BIN_VERIFY_MD5, or both.

返回值

Returns TRUE if the binary dump data was loaded with success, otherwise FALSE is returned. FALSE is returned if APC is not enabled, or if the data is not a valid APC binary dump (e.g., unexpected size).

范例

Example #1 apc_bin_load() example

<?php
$data = apc_bin_dump(NULL, NULL);
apc_bin_load($data, APC_BIN_VERIFY_MD5 | APC_BIN_VERIFY_CRC32);
?>

参见

  • apc_bin_dump() - Get a binary dump of the given files and user variables
  • apc_bin_loadfile() - Load a binary dump from a file into the APC file/user cache
apc_bin_dumpfile
apc_bin_loadfile
APC 函数


Load a binary dump from a file into the APC file/user cache

apc_bin_load
apc_cache_info
APC 函数
PHP Manual

apc_bin_loadfile

(PECL apc >= 3.1.4)

apc_bin_loadfile — Load a binary dump from a file into the APC file/user cache

说明

bool apc_bin_loadfile ( string $filename [, resource $context = NULL [, int $flags = 0 ]] )

Loads a binary dump from a file into the APC file/user cache.

参数

filename

The file name containing the dump, likely from apc_bin_dumpfile().

context

The files context.

flags

Either APC_BIN_VERIFY_CRC32, APC_BIN_VERIFY_MD5, or both.

返回值

Returns TRUE on success, otherwise FALSE Reasons it may return FALSE include APC is not enabled, filename is an invalid file name or empty, filename can't be opened, the file dump can't be completed, or if the data is not a valid APC binary dump (e.g., unexpected size).

参见

  • apc_bin_dumpfile() - Output a binary dump of cached files and user variables to a file
  • apc_bin_load() - Load a binary dump into the APC file/user cache
apc_bin_load
apc_cache_info
APC 函数


Retrieves cached information from APC's data store

apc_bin_loadfile
apc_cas
APC 函数
PHP Manual

apc_cache_info

(PECL apc >= 2.0.0)

apc_cache_info — Retrieves cached information from APC's data store

说明

array apc_cache_info ([ string $cache_type = "" [, bool $limited = false ]] )

Retrieves cached information and meta-data from APC's data store.

参数

cache_type

If cache_type is "user", information about the user cache will be returned.

If cache_type is "filehits", information about which files have been served from the bytecode cache for the current request will be returned. This feature must be enabled at compile time using --enable-filehits .

If an invalid or no cache_type is specified, information about the system cache (cached files) will be returned.

limited

If limited is TRUE, the return value will exclude the individual list of cache entries. This is useful when trying to optimize calls for statistics gathering.

返回值

Array of cached data (and meta-data) 或者在失败时返回 FALSE

Note: apc_cache_info() will raise a warning if it is unable to retrieve APC cache data. This typically occurs when APC is not enabled.

更新日志

版本 | 说明
3.0.11 | The limited parameter was introduced.
3.0.16 | The "filehits" option for the cache_type parameter was introduced.

范例

Example #1 A apc_cache_info() example

<?php
print_r(apc_cache_info());
?>

以上例程的输出类似于：

Array
(
    [num_slots] => 2000
    [ttl] => 0
    [num_hits] => 9
    [num_misses] => 3
    [start_time] => 1123958803
    [cache_list] => Array
        (
            [0] => Array
                (
                    [filename] => /path/to/apc_test.php
                    [device] => 29954
                    [inode] => 1130511
                    [type] => file
                    [num_hits] => 1
                    [mtime] => 1123960686
                    [creation_time] => 1123960696
                    [deletion_time] => 0
                    [access_time] => 1123962864
                    [ref_count] => 1
                    [mem_size] => 677
                )
            [1] => Array (...iterates for each cached file)
)

参见

  • APC configuration directives
  • APCIterator::getTotalSize() - 获取所有缓存的尺寸大小
  • APCIterator::getTotalHits() - 获取缓存命中数
  • APCIterator::getTotalCount() - 获取总数

apc_bin_loadfile
apc_cas
APC 函数


用新值更新旧值

apc_cache_info
apc_clear_cache
APC 函数
PHP Manual

apc_cas

(PECL apc >= 3.1.1)

apc_cas — 用新值更新旧值

说明

bool apc_cas ( string $key , int $old , int $new )

apc_cas() 如果key存在，并且key当前存储的整数等于 old，就使用 new 更新key当前存储的整数。

参数

key

需要被更新的 key。

old

key当前值。

new

指定的更新值。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 apc_cas() 示例

<?php
apc_store('foobar', 2);
echo '$foobar = 2', PHP_EOL;
echo '$foobar == 1 ? 2 : 1 = ', (apc_cas('foobar', 1, 2) ? 'ok' : 'fail'), PHP_EOL;
echo '$foobar == 2 ? 1 : 2 = ', (apc_cas('foobar', 2, 1) ? 'ok' : 'fail'), PHP_EOL;

echo '$foobar = ', apc_fetch('foobar'), PHP_EOL;

echo '$f__bar == 1 ? 2 : 1 = ', (apc_cas('f__bar', 1, 2) ? 'ok' : 'fail'), PHP_EOL;

apc_store('perfection', 'xyz');
echo '$perfection == 2 ? 1 : 2 = ', (apc_cas('perfection', 2, 1) ? 'ok' : 'epic fail'), PHP_EOL;

echo '$foobar = ', apc_fetch('foobar'), PHP_EOL;
?>

以上例程的输出类似于：

$foobar = 2
$foobar == 1 ? 2 : 1 = fail
$foobar == 2 ? 1 : 2 = ok
$foobar = 1
$f__bar == 1 ? 2 : 1 = fail
$perfection == 2 ? 1 : 2 = epic fail
$foobar = 1

参见

  • apc_dec() - Decrease a stored number
  • apc_store() - Cache a variable in the data store
apc_cache_info
apc_clear_cache
APC 函数


清除APC缓存

apc_cas
apc_compile_file
APC 函数
PHP Manual

apc_clear_cache

(PECL apc >= 2.0.0)

apc_clear_cache — 清除APC缓存

说明

bool apc_clear_cache ([ string $cache_type = "" ] )

清除用户或者系统缓存

参数

cache_type

如果 cache_type 是 "user", 用户 的缓存将被清除; 否则系统缓存(缓存文件)将被清除。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • apc_cache_info() - Retrieves cached information from APC's data store

apc_cas
apc_compile_file
APC 函数


Stores a file in the bytecode cache, bypassing all filters.

apc_clear_cache
apc_dec
APC 函数
PHP Manual

apc_compile_file

(PECL apc >= 3.0.13)

apc_compile_file — Stores a file in the bytecode cache, bypassing all filters.

说明

mixed apc_compile_file ( string $filename [, bool $atomic = true ] )

Stores a file in the bytecode cache, bypassing all filters.

参数

filename

Full or relative path to a PHP file that will be compiled and stored in the bytecode cache.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • apc_bin_dumpfile() - Output a binary dump of cached files and user variables to a file
  • apc_bin_loadfile() - Load a binary dump from a file into the APC file/user cache
apc_clear_cache
apc_dec
APC 函数


Decrease a stored number

apc_compile_file
apc_define_constants
APC 函数
PHP Manual

apc_dec

(PECL apc >= 3.1.1)

apc_dec — Decrease a stored number

说明

int apc_dec ( string $key [, int $step = 1 [, bool &$success ]] )

Decreases a stored integer value.

参数

key

The key of the value being decreased.

step

The step, or value to decrease.

success

Optionally pass the success or fail boolean value to this referenced variable.

返回值

Returns the current value of key's value on success, 或者在失败时返回 FALSE

范例

Example #1 apc_dec() example

<?php
echo "Let's do something with success", PHP_EOL;

apc_store('anumber', 42);

echo apc_fetch('anumber'), PHP_EOL;

echo apc_dec('anumber'), PHP_EOL;
echo apc_dec('anumber', 10), PHP_EOL;
echo apc_dec('anumber', 10, $success), PHP_EOL;

var_dump($success);

echo "Now, let's fail", PHP_EOL, PHP_EOL;

apc_store('astring', 'foo');

$ret = apc_dec('astring', 1, $fail);

var_dump($ret);
var_dump($fail);
?>

以上例程的输出类似于：

Let's do something with success
42
41
31
21
bool(true)

Now, let's fail
bool(false)
bool(false)

参见

  • apc_inc() - 递增一个储存的数字
apc_compile_file
apc_define_constants
APC 函数


Defines a set of constants for retrieval and mass-definition

apc_dec
apc_delete_file
APC 函数
PHP Manual

apc_define_constants

(PECL apc >= 3.0.0)

apc_define_constants — Defines a set of constants for retrieval and mass-definition

说明

bool apc_define_constants ( string $key , array $constants [, bool $case_sensitive = true ] )

define() is notoriously slow. Since the main benefit of APC is to increase the performance of scripts/applications, this mechanism is provided to streamline the process of mass constant definition. However, this function does not perform as well as anticipated.

For a better-performing solution, try the » hidef extension from PECL.

Note: To remove a set of stored constants (without clearing the entire cache), an empty array may be passed as the constants parameter, effectively clearing the stored value(s).

参数

key

The key serves as the name of the constant set being stored. This key is used to retrieve the stored constants in apc_load_constants().

constants

An associative array of constant_name => value pairs. The constant_name must follow the normal constant naming rules. value must evaluate to a scalar value.

case_sensitive

The default behaviour for constants is to be declared case-sensitive; i.e. CONSTANT and Constant represent different values. If this parameter evaluates to FALSE the constants will be declared as case-insensitive symbols.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 apc_define_constants() example

<?php
$constants = array(
    'ONE'   => 1,
    'TWO'   => 2,
    'THREE' => 3,
);
apc_define_constants('numbers', $constants);
echo ONE, TWO, THREE;
?>

以上例程会输出：

123

参见

  • apc_load_constants() - Loads a set of constants from the cache
  • define() - 定义一个常量
  • constant() - 返回一个常量的值
  • Or the PHP constants reference

apc_dec
apc_delete_file
APC 函数


Deletes files from the opcode cache

apc_define_constants
apc_delete
APC 函数
PHP Manual

apc_delete_file

(PECL apc >= 3.1.1)

apc_delete_file — Deletes files from the opcode cache

说明

mixed apc_delete_file ( mixed $keys )

Deletes the given files from the opcode cache.

参数

keys

The files to be deleted. Accepts a string, array of strings, or an APCIterator object.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 Or if keys is an array, then an empty array is returned on success, or an array of failed files is returned.

范例

Example #1 apc_delete_file() example

<?php
$filename = 'file.php';

if (apc_compile_file($filename)) {

    if (apc_delete_file($filename)) {
        echo "Successfully deleted file $filename from APC cache.", PHP_EOL;
    }
}

if (apc_compile_file($filename)) {

    if ($good = apc_delete_file(array($filename, 'donotexist.php'))) {
        var_dump($good);
    }
}

$bad = apc_delete_file('donotexist.php');
var_dump($bad);
?>

以上例程的输出类似于：

Successfully deleted file file.php from APC cache.
[Mon May 24 09:30:33 2010] [apc-warning] Could not stat file donotexist.php, unable to delete from cache. in /tmp/test.php on line 13.
array(1) {
  [0]=>
  string(14) "donotexist.php"
}
[Mon May 24 09:30:33 2010] [apc-warning] Could not stat file donotexist.php, unable to delete from cache. in /tmp/test.php on line 18.
bool(false)

参见

  • apc_clear_cache() - 清除APC缓存
  • apc_delete() - 从用户缓存中删除某个变量
  • apc_exists() - 检查APC中是否存在某个或者某些key
apc_define_constants
apc_delete
APC 函数


从用户缓存中删除某个变量

apc_delete_file
apc_exists
APC 函数
PHP Manual

apc_delete

(PECL apc >= 3.0.0)

apc_delete — 从用户缓存中删除某个变量

说明

mixed apc_delete ( string $key )

从数据存储里删除某个变量。

参数

key

key 即是你用 apc_store() 存储数据时所设定的标记名称。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 A apc_delete() 范例

<?php
$bar = 'BAR';
apc_store('foo', $bar);
apc_delete('foo');
// this is obviously useless in this form
?>

参见

  • apc_store() - Cache a variable in the data store
  • apc_fetch() - 从缓存中取出存储的变量

apc_delete_file
apc_exists
APC 函数


检查APC中是否存在某个或者某些key

apc_delete
apc_fetch
APC 函数
PHP Manual

apc_exists

(PECL apc >= 3.1.4)

apc_exists — 检查APC中是否存在某个或者某些key

说明

mixed apc_exists ( mixed $keys )

检查是否有一个或者多个APC键名存在

参数

keys

string，或者包含键的 array，元素是字符串。

返回值

如果Key存在的话返回 TRUE , 否则返回 FALSE 如果参数 keys是一个array ， 将返回一个包含所有存在的key的数组，假如数组中的key一个都不存在的话， 就返回空的数组。

范例

Example #1 apc_exists() 例子

<?php
$fruit  = 'apple';
$veggie = 'carrot';

apc_store('foo', $fruit);
apc_store('bar', $veggie);

if (apc_exists('foo')) {
    echo "Foo exists: ";
    echo apc_fetch('foo');
} else {
    echo "Foo does not exist";
}

echo PHP_EOL;
if (apc_exists('baz')) {
    echo "Baz exists.";
} else {
    echo "Baz does not exist";
}

echo PHP_EOL;

$ret = apc_exists(array('foo', 'donotexist', 'bar'));
var_dump($ret);

?>

以上例程的输出类似于：

Foo exists: apple
Baz does not exist
array(2) {
  ["foo"]=>
  bool(true)
  ["bar"]=>
  bool(true)
}

参见

  • apc_cache_info() - Retrieves cached information from APC's data store
  • apc_fetch() - 从缓存中取出存储的变量
apc_delete
apc_fetch
APC 函数


从缓存中取出存储的变量

apc_exists
apc_inc
APC 函数
PHP Manual

apc_fetch

(PECL apc >= 3.0.0)

apc_fetch — 从缓存中取出存储的变量

说明

mixed apc_fetch ( mixed $key [, bool &$success ] )

从缓存中取出存储的变量

参数

key

key 是使用 apc_store() 存储的键名。 如果传递的是一个数组，则数组中的每个元素的值都被返回

success

成功时为 TRUE 失败时 FALSE。

返回值

存储一个变量或者一个数组失败时返回; FALSE

范例

Example #1 apc_fetch() 范例

<?php
$bar = 'BAR';
apc_store('foo', $bar);
var_dump(apc_fetch('foo'));
?>

以上例程会输出：

string(3) "BAR"

更新日志

版本 | 说明
3.0.17 | The success parameter was added.

参见

  • apc_store() - Cache a variable in the data store
  • apc_delete() - 从用户缓存中删除某个变量
  • APCIterator

apc_exists
apc_inc
APC 函数


递增一个储存的数字

apc_fetch
apc_load_constants
APC 函数
PHP Manual

apc_inc

(PECL apc >= 3.1.1)

apc_inc — 递增一个储存的数字

说明

int apc_inc ( string $key [, int $step = 1 [, bool &$success ]] )

递增一个储存的数字。

参数

key

该键内的值被增加。

step

步长，或者需要增加的值。

success

可选，用于传递函数成功或失败到该引用变量里。

返回值

成功时返回 key 的当前值， 或者在失败时返回 FALSE

范例

Example #1 apc_inc() 范例

<?php
echo "Let's do something with success", PHP_EOL;

apc_store('anumber', 42);

echo apc_fetch('anumber'), PHP_EOL;

echo apc_inc('anumber'), PHP_EOL;
echo apc_inc('anumber', 10), PHP_EOL;
echo apc_inc('anumber', 10, $success), PHP_EOL;

var_dump($success);

echo "Now, let's fail", PHP_EOL, PHP_EOL;

apc_store('astring', 'foo');

$ret = apc_inc('astring', 1, $fail);

var_dump($ret);
var_dump($fail);
?>

以上例程的输出类似于：

42
43
53
63
bool(true)
Now, let's fail

bool(false)
bool(false)

参见

  • apc_dec() - Decrease a stored number
apc_fetch
apc_load_constants
APC 函数


Loads a set of constants from the cache

apc_inc
apc_sma_info
APC 函数
PHP Manual

apc_load_constants

(PECL apc >= 3.0.0)

apc_load_constants — Loads a set of constants from the cache

说明

bool apc_load_constants ( string $key [, bool $case_sensitive = true ] )

Loads a set of constants from the cache.

参数

key

The name of the constant set (that was stored with apc_define_constants()) to be retrieved.

case_sensitive

The default behaviour for constants is to be declared case-sensitive; i.e. CONSTANT and Constant represent different values. If this parameter evaluates to FALSE the constants will be declared as case-insensitive symbols.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 apc_load_constants() example

<?php
$constants = array(
    'ONE'   => 1,
    'TWO'   => 2,
    'THREE' => 3,
);
apc_define_constants('numbers', $constants);
apc_load_constants('numbers');
echo ONE, TWO, THREE;
?>

以上例程会输出：

123

参见

  • apc_define_constants() - Defines a set of constants for retrieval and mass-definition
  • define() - 定义一个常量
  • constant() - 返回一个常量的值
  • Or the PHP constants reference

apc_inc
apc_sma_info
APC 函数


Retrieves APC's Shared Memory Allocation information

apc_load_constants
apc_store
APC 函数
PHP Manual

apc_sma_info

(PECL apc >= 2.0.0)

apc_sma_info — Retrieves APC's Shared Memory Allocation information

说明

array apc_sma_info ([ bool $limited = false ] )

Retrieves APC's Shared Memory Allocation information.

参数

limited

When set to FALSE (default) apc_sma_info() will return a detailed information about each segment.

返回值

Array of Shared Memory Allocation data; FALSE on failure.

范例

Example #1 A apc_sma_info() example

<?php
print_r(apc_sma_info());
?>

以上例程的输出类似于：

Array
(
    [num_seg] => 1
    [seg_size] => 31457280
    [avail_mem] => 31448408
    [block_lists] => Array
        (
            [0] => Array
                (
                    [0] => Array
                        (
                            [size] => 31448408
                            [offset] => 8864
                        )

                )

        )

)

参见

  • APC configuration directives

apc_load_constants
apc_store
APC 函数


Cache a variable in the data store

apc_sma_info
APCIterator
APC 函数
PHP Manual

apc_store

(PECL apc >= 3.0.0)

apc_store — Cache a variable in the data store

说明

bool apc_store ( string $key , mixed $var [, int $ttl = 0 ] )
array apc_store ( array $values [, mixed $unused = NULL [, int $ttl = 0 ]] )

缓存一个变量到APC中

Note: 与PHP中其他的机制不同，使用apc_store() 存储的变量 在不同的请求之间一直持久存在（直到从缓存系统中移除）。

参数

key

存储缓存变量使用的名称.key是唯一的，所以 两个值使用同一个 key，原来的将被新的值覆盖。

var

The variable to store

ttl

生存时间;在缓存中存储var共ttl秒, 在ttl秒过去后,存储的变量将会从缓存中擦除(在下一次请求时), 如果没有设置ttl(或者ttl是0), 变量将一直存活到被手动移除为止,除此之外不在缓存中的可能原因是， 缓存系统使用clear，或者restart等。

values

Names in key, variables in value.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 Second syntax returns array with error keys.

范例

Example #1 apc_store() 例子

<?php
$bar = 'BAR';
apc_store('foo', $bar);
var_dump(apc_fetch('foo'));
?>

以上例程会输出：

string(3) "BAR"

参见

  • apc_add() - 缓存一个变量到数据存储
  • apc_fetch() - 从缓存中取出存储的变量
  • apc_delete() - 从用户缓存中删除某个变量

apc_sma_info
APCIterator
APC 函数


The APCIterator class

(PECL apc >= 3.1.1)

简介

APCIterator 类使得遍历大容量APC缓存更容易，这是很有帮助的因为它允许同时获取已经定义的每个被锁定实例的条目数，因此它释放的其他活动的缓存锁，而不是阻碍整个缓存以完成获取100（默认）个缓存数据的迭代，在大缓存条目。 此外，使用正则匹配效率更高，因为它被改为C级别的实现。

类摘要

APCIterator implements Iterator , Traversable {
/* Methods */
public __construct ( string $cache [, mixed $search = null [, int $format [, int $chunk_size = 100 [, int $list ]]]] )
public mixed current ( void )
public int getTotalCount ( void )
public int getTotalHits ( void )
public int getTotalSize ( void )
public string key ( void )
public void next ( void )
public void rewind ( void )
public void valid ( void )
}

Table of Contents

  • APCIterator::__construct — 构造一个 APCIterator 迭代器对象
  • APCIterator::current — 获取当前项
  • APCIterator::getTotalCount — 获取总数
  • APCIterator::getTotalHits — 获取缓存命中数
  • APCIterator::getTotalSize — 获取所有缓存的尺寸大小
  • APCIterator::key — Get iterator key获取迭代器的键
  • APCIterator::next — 移到下一项
  • APCIterator::rewind — 倒退迭代器
  • APCIterator::valid — 检查当前位置是否有效
apc_store
APCIterator::__construct
APC


构造一个 APCIterator 迭代器对象

APCIterator
APCIterator::current
APCIterator
PHP Manual

APCIterator::__construct

(PECL apc >= 3.1.1)

APCIterator::__construct — 构造一个 APCIterator 迭代器对象

说明

public APCIterator::__construct ( string $cache [, mixed $search = null [, int $format [, int $chunk_size = 100 [, int $list ]]]] )

构造一个 APCIterator object.

参数

cache

缓存类型，可以是 user 或者 file。

search

匹配 APC 键名的 PCRE 正则表达式，既可以是单个正则表达式 string，也可以是 array 的正则表达式。或者可以是 NULL 来略过搜索。

format

需要的格式可以用一个或多个 APC_ITER_* 常量。

chunk_size

块的大小。必须是一个大于0的值，默认是100。

list

需要列出的类型。可以是 APC_LIST_ACTIVE 或 APC_LIST_DELETED。

返回值

成功时返回 APCIterator object，失败时返回 NULL。

范例

Example #1 A APCIterator::__construct() example

<?php
foreach (new APCIterator('user', '/^counter\./') as $counter) {
    echo "$counter[key]: $counter[value]\n";
    apc_dec($counter['key'], $counter['value']);
}
?>

参见

  • apc_exists() - 检查APC中是否存在某个或者某些key
  • apc_cache_info() - Retrieves cached information from APC's data store
APCIterator
APCIterator::current
APCIterator


获取当前项

APCIterator::__construct
APCIterator::getTotalCount
APCIterator
PHP Manual

APCIterator::current

(PECL apc >= 3.1.1)

APCIterator::current — 获取当前项

说明

public mixed APCIterator::current ( void )

从 APCIterator 堆中获取当前项。

参数

此函数没有参数。

返回值

成功时返回当前项，获取失败、没有更多项或者不存在任何项时返回 FALSE。

参见

  • APCIterator::next() - 移到下一项
  • Iterator::current() - 返回当前元素
APCIterator::__construct
APCIterator::getTotalCount
APCIterator


获取总数

APCIterator::current
APCIterator::getTotalHits
APCIterator
PHP Manual

APCIterator::getTotalCount

(PECL apc >= 3.1.1)

APCIterator::getTotalCount — 获取总数

说明

public int APCIterator::getTotalCount ( void )

获取总数。

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The total count.

参见

  • APCIterator::getTotalHits() - 获取缓存命中数
  • APCIterator::getTotalSize() - 获取所有缓存的尺寸大小
  • apc_cache_info() - Retrieves cached information from APC's data store
APCIterator::current
APCIterator::getTotalHits
APCIterator


获取缓存命中数

APCIterator::getTotalCount
APCIterator::getTotalSize
APCIterator
PHP Manual

APCIterator::getTotalHits

(PECL apc >= 3.1.1)

APCIterator::getTotalHits — 获取缓存命中数

说明

public int APCIterator::getTotalHits ( void )

获取缓存命中的总数。

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

成功时返回命中次数，失败时返回 FALSE。

参见

  • APCIterator::getTotalCount() - 获取总数
  • APCIterator::getTotalSize() - 获取所有缓存的尺寸大小
  • apc_cache_info() - Retrieves cached information from APC's data store
APCIterator::getTotalCount
APCIterator::getTotalSize
APCIterator


获取所有缓存的尺寸大小

APCIterator::getTotalHits
APCIterator::key
APCIterator
PHP Manual

APCIterator::getTotalSize

(PECL apc >= 3.1.1)

APCIterator::getTotalSize — 获取所有缓存的尺寸大小

说明

public int APCIterator::getTotalSize ( void )

获取所有缓存的尺寸大小。

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The total cache size.

参见

  • APCIterator::getTotalCount() - 获取总数
  • APCIterator::getTotalHits() - 获取缓存命中数
  • apc_cache_info() - Retrieves cached information from APC's data store
APCIterator::getTotalHits
APCIterator::key
APCIterator


Get iterator key获取迭代器的键

APCIterator::getTotalSize
APCIterator::next
APCIterator
PHP Manual

APCIterator::key

(PECL apc >= 3.1.1)

APCIterator::key — Get iterator key获取迭代器的键

说明

public string APCIterator::key ( void )

获取当前迭代器的键。

参数

此函数没有参数。

返回值

成功时返回一个键，失败时返回 FALSE。

参见

  • APCIterator::current() - 获取当前项
  • Iterator::key() - 返回当前元素的键
APCIterator::getTotalSize
APCIterator::next
APCIterator


移到下一项

APCIterator::key
APCIterator::rewind
APCIterator
PHP Manual

APCIterator::next

(PECL apc >= 3.1.1)

APCIterator::next — 移到下一项

说明

public void APCIterator::next ( void )

移动迭代器的指针到下一个元素。

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • APCIterator::current() - 获取当前项
  • APCIterator::rewind() - 倒退迭代器
  • Iterator::next() - 向前移动到下一个元素
APCIterator::key
APCIterator::rewind
APCIterator


倒退迭代器

APCIterator::next
APCIterator::valid
APCIterator
PHP Manual

APCIterator::rewind

(PECL apc >= 3.1.1)

APCIterator::rewind — 倒退迭代器

说明

public void APCIterator::rewind ( void )

倒退迭代器到第一项。

参数

此函数没有参数。

返回值

没有返回值。

参见

  • APCIterator::next() - 移到下一项
  • Iterator::next() - 向前移动到下一个元素
APCIterator::next
APCIterator::valid
APCIterator


检查当前位置是否有效

APCIterator::rewind
APCu
APCIterator
PHP Manual

APCIterator::valid

(PECL apc >= 3.1.1)

APCIterator::valid — 检查当前位置是否有效

说明

public void APCIterator::valid ( void )

检查当前迭代器的位置是否有效。

参数

此函数没有参数。

返回值

如果当前迭代器的位置有效返回 TRUE ，反之则返回 FALSE。

参见

  • APCIterator::current() - 获取当前项
  • Iterator::valid() - 检查当前位置是否有效
APCIterator::rewind
APCu
APCIterator


APC User Cache

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • APCu 函数
    • apcu_add — Cache a new variable in the data store
    • apcu_cache_info — Retrieves cached information from APCu's data store
    • apcu_cas — Updates an old value with a new value
    • apcu_clear_cache — Clears the APCu cache
    • apcu_dec — Decrease a stored number
    • apcu_delete — Removes a stored variable from the cache
    • apcu_entry — Atomically fetch or generate a cache entry
    • apcu_exists — Checks if entry exists
    • apcu_fetch — Fetch a stored variable from the cache
    • apcu_inc — Increase a stored number
    • apcu_sma_info — Retrieves APCu Shared Memory Allocation information
    • apcu_store — Cache a variable in the data store
  • APCUIterator — The APCUIterator class
    • APCUIterator::__construct — Constructs an APCUIterator iterator object
    • APCUIterator::current — Get current item
    • APCUIterator::getTotalCount — Get total count
    • APCUIterator::getTotalHits — Get total cache hits
    • APCUIterator::getTotalSize — Get total cache size
    • APCUIterator::key — Get iterator key
    • APCUIterator::next — Move pointer to next item
    • APCUIterator::rewind — Rewinds iterator
    • APCUIterator::valid — Checks if current position is valid
APCIterator::valid
简介
影响 PHP 行为的扩展


简介

APCu is APC stripped of opcode caching.

The first APCu codebase was versioned 4.0.0, it was forked from the head of the APC master branch at the time.

PHP 7 support is available as of APCu 5.0.0.

APCu can provide a compatibility mode, such that it can provide a drop in replacement for the applicable parts of APC.

APCu
安装／配置
APCu


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
APCu


安装

If backward compatibility with the applicable parts of APC is required, APCu must be configured with the option --enable-apcu-bc.

Warning

PHP 7 has a separate module (» apc.so) for backwards compatibility with APC.

In backward compatibility mode, APCu registers the applicable APC functions with backward compatible prototypes.

Where an APC function accepted cache_type, it is simply ignored by the backward compatible version, and omitted from the prototype for the APCu version.

Note: On Windows, APCu needs a temp path to exist, and be writable by the web server. It checks the TMP, TEMP and USERPROFILE environment variables in that order and finally tries the WINDOWS directory if none of those are set.

Note: For more in-depth, highly technical implementation details, see the » developer-supplied TECHNOTES file .

APCu sources can be found » here.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Although the default APCu settings are fine for many installations, serious users should consider tuning the following parameters.

There is one decision to be made configuring APCu. How much memory is going to be allocated to APCu. The ini directive that controls this is apc.shm_size Read the sections on this carefully below.

Once the server is running, the apc.php script that is bundled with the extension should be copied somewhere into the docroot and viewed with a browser as it provides a detailed analysis of the internal workings of APCu. If GD is enabled in PHP, it will even display some interesting graphs. If APCu is working, the Cache full count number (on the left) will display the number of times the cache has reached maximum capacity and has had to forcefully clean any entries that haven't been accessed in the last apc.ttl seconds. This number is minimized in a well-configured cache. If the cache is constantly being filled, and thusly forcefully freed, the resulting churning will have disparaging effects on script performance. The easiest way to minimize this number is to allocate more memory for APCu.

When APCu is compiled with mmap support (Memory Mapping), it will use only one memory segment, unlike when APCu is built with SHM (SysV Shared Memory) support that uses multiple memory segments. MMAP does not have a maximum limit like SHM does in /proc/sys/kernel/shmmax. In general MMAP support is recommeded because it will reclaim the memory faster when the webserver is restarted and all in all reduces memory allocation impact at startup.

APCu configuration options
名字 | 默认 | 可修改范围 | 更新日志
apc.enabled | "1" | PHP_INI_SYSTEM |
apc.shm_segments | "1" | PHP_INI_SYSTEM |
apc.shm_size | "32M" | PHP_INI_SYSTEM |
apc.entries_hint | "4096" | PHP_INI_SYSTEM |
apc.ttl | "0" | PHP_INI_SYSTEM |
apc.gc_ttl | "3600" | PHP_INI_SYSTEM |
apc.mmap_file_mask | NULL | PHP_INI_SYSTEM |
apc.slam_defense | "1" | PHP_INI_SYSTEM |
apc.enable_cli | "0" | PHP_INI_SYSTEM |
apc.use_request_time | "1" | PHP_INI_ALL |
apc.serializer | "default" | PHP_INI_SYSTEM |
apc.rfc1867 | "0" | PHP_INI_SYSTEM |
apc.rfc1867_prefix | "upload_" | PHP_INI_SYSTEM |
apc.rfc1867_name | "APC_UPLOAD_PROGRESS" | PHP_INI_SYSTEM |
apc.rfc1867_freq | "0" | PHP_INI_SYSTEM |
apc.rfc1867_ttl | "3600" | PHP_INI_SYSTEM |
apc.coredump_unmap | "0" | PHP_INI_SYSTEM |
apc.preload_path | NULL | PHP_INI_SYSTEM |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

apc.enabled boolean

apc.enabled can be set to 0 to disable APC. This is primarily useful when APC is statically compiled into PHP, since there is no other way to disable it (when compiled as a DSO, the extension line in php.ini can just be commented-out).

apc.shm_segments integer

The number of shared memory segments to allocate for the compiler cache. If APC is running out of shared memory but apc.shm_size is set as high as the system allows, raising this value might prevent APC from exhausting its memory.

apc.shm_size string

The size of each shared memory segment given by a shorthand notation as described in this FAQ. By default, some systems (including most BSD variants) have very low limits on the size of a shared memory segment.

apc.entries_hint integer

A "hint" about the number of distinct variables that might be stored. Set to zero or omit if not sure.

apc.ttl integer

The number of seconds a cache entry is allowed to idle in a slot in case this cache entry slot is needed by another entry. Leaving this at zero means that APC's cache could potentially fill up with stale entries while newer entries won't be cached. In the event of a cache running out of available memory, the cache will be completely expunged if ttl is equal to 0. Otherwise, if the ttl is greater than 0, APC will attempt to remove expired entries.

apc.gc_ttl integer

The number of seconds that a cache entry may remain on the garbage-collection list. This value provides a fail-safe in the event that a server process dies while executing a cached source file; if that source file is modified, the memory allocated for the old version will not be reclaimed until this TTL reached. Set to zero to disable this feature.

apc.mmap_file_mask string

If compiled with MMAP support by using --enable-mmap this is the mktemp-style file_mask to pass to the mmap module for determining whether your mmap'ed memory region is going to be file-backed or shared memory backed. For straight file-backed mmap, set it to something like /tmp/apc.XXXXXX (exactly 6 Xs). To use POSIX-style shm_open/mmap put a .shm somewhere in your mask. e.g. /apc.shm.XXXXXX You can also set it to /dev/zero to use your kernel's /dev/zero interface to anonymous mmap'ed memory. Leaving it undefined will force an anonymous mmap.

apc.slam_defense integer

On very busy servers whenever you start the server or modify files you can create a race of many processes all trying to cache the same file at the same time. This option sets the percentage of processes that will skip trying to cache an uncached file. Or think of it as the probability of a single process to skip caching. For example, setting apc.slam_defense to 75 would mean that there is a 75% chance that the process will not cache an uncached file. So, the higher the setting the greater the defense against cache slams. Setting this to 0 disables this feature.

apc.enable_cli integer

Mostly for testing and debugging. Setting this enables APC for the CLI version of PHP. Under normal circumstances, it is not ideal to create, populate and destroy the APC cache on every CLI request, but for various test scenarios it is useful to be able to enable APC for the CLI version of PHP easily.

apc.serializer string

Used to configure APC to use a third party serializer.

apc.rfc1867 boolean

RFC1867 File Upload Progress hook handler is only available if APC was compiled against PHP 5.2.0 or later. When enabled, any file uploads which includes a field called APC_UPLOAD_PROGRESS before the file field in an upload form will cause APC to automatically create an upload_key user cache entry where key is the value of the APC_UPLOAD_PROGRESS form entry.

Note that the hidden field specified by APC_UPLOAD_PROGRESS must come before the file field, otherwise the upload progress will not work correctly.

Note that the file upload tracking is not threadsafe at this point, so new uploads that happen while a previous one is still going will disable the tracking for the previous.

Note that the rate is only available once all file transfers are completed.

Example #1 An apc.rfc1867 example

<?php
print_r(apcu_fetch("upload_$_POST[APC_UPLOAD_PROGRESS]"));
?>

以上例程的输出类似于：

Array
(
    [total] => 1142543
    [current] => 1142543
    [rate] => 1828068.8
    [filename] => test
    [name] => file
    [temp_filename] => /tmp/php8F
    [cancel_upload] => 0
    [done] => 1
)

apc.rfc1867_prefix string

Key prefix to use for the user cache entry generated by rfc1867 upload progress functionality.

apc.rfc1867_name string

Specify the hidden form entry name that activates APC upload progress and specifies the user cache key suffix.

apc.rfc1867_freq string

The frequency that updates should be made to the user cache entry for upload progress. This can take the form of a percentage of the total file size or a size in bytes optionally suffixed with "k", "m", or "g" for kilobytes, megabytes, or gigabytes respectively (case insensitive). A setting of 0 updates as often as possible, which may cause slower uploads.

apc.rfc1867_ttl integer

TTL for rfc1867 entries.

apc.coredump_unmap boolean

Enables APC handling of signals, such as SIGSEGV, that write core files when signaled. When these signals are received, APC will attempt to unmap the shared memory segment in order to exclude it from the core file. This setting may improve system stability when fatal signals are received and a large APC shared memory segment is configured.

Warning

This feature is potentially dangerous. Unmapping the shared memory segment in a fatal signal handler may cause undefined behaviour if a fatal error occurs.

Note:

Although some kernels may provide a facility to ignore various types of shared memory when generating a core dump file, these implementations may also ignore important shared memory segments such as the Apache scoreboard.

apc.preload_path string

Optionally, set a path to the directory that APC will load cache data at startup.

apc.use_request_time bool

Use the SAPI request start time for TTL.

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

APC_ITER_ALL (integer)
APC_ITER_ATIME (integer)
APC_ITER_CTIME (integer)
APC_ITER_DEVICE (integer)
APC_ITER_DTIME (integer)
APC_ITER_FILENAME (integer)
APC_ITER_INODE (integer)
APC_ITER_KEY (integer)
APC_ITER_MD5 (integer)
APC_ITER_MEM_SIZE (integer)
APC_ITER_MTIME (integer)
APC_ITER_NONE (integer)
APC_ITER_NUM_HITS (integer)
APC_ITER_REFCOUNT (integer)
APC_ITER_TTL (integer)
APC_ITER_TYPE (integer)
APC_ITER_VALUE (integer)
APC_LIST_ACTIVE (integer)
APC_LIST_DELETED (integer)

资源类型
APCu 函数
APCu


APCu 函数

Table of Contents

  • apcu_add — Cache a new variable in the data store
  • apcu_cache_info — Retrieves cached information from APCu's data store
  • apcu_cas — Updates an old value with a new value
  • apcu_clear_cache — Clears the APCu cache
  • apcu_dec — Decrease a stored number
  • apcu_delete — Removes a stored variable from the cache
  • apcu_entry — Atomically fetch or generate a cache entry
  • apcu_exists — Checks if entry exists
  • apcu_fetch — Fetch a stored variable from the cache
  • apcu_inc — Increase a stored number
  • apcu_sma_info — Retrieves APCu Shared Memory Allocation information
  • apcu_store — Cache a variable in the data store
预定义常量
apcu_add
APCu


Cache a new variable in the data store

APCu 函数
apcu_cache_info
APCu 函数
PHP Manual

apcu_add

(PECL apcu >= 4.0.0)

apcu_add — Cache a new variable in the data store

说明

bool apcu_add ( string $key , mixed $var [, int $ttl = 0 ] )
array apcu_add ( array $values [, mixed $unused = NULL [, int $ttl = 0 ]] )

Caches a variable in the data store, only if it's not already stored.

Note: Unlike many other mechanisms in PHP, variables stored using apcu_add() will persist between requests (until the value is removed from the cache).

参数

key

Store the variable using this name. keys are cache-unique, so attempting to use apcu_add() to store data with a key that already exists will not overwrite the existing data, and will instead return FALSE. (This is the only difference between apcu_add() and apcu_store().)

var

The variable to store

ttl

Time To Live; store var in the cache for ttl seconds. After the ttl has passed, the stored variable will be expunged from the cache (on the next request). If no ttl is supplied (or if the ttl is 0), the value will persist until it is removed from the cache manually, or otherwise fails to exist in the cache (clear, restart, etc.).

values

Names in key, variables in value.

返回值

Returns TRUE if something has effectively been added into the cache, FALSE otherwise. Second syntax returns array with error keys.

范例

Example #1 A apcu_add() example

<?php
$bar = 'BAR';
apcu_add('foo', $bar);
var_dump(apcu_fetch('foo'));
echo "\n";
$bar = 'NEVER GETS SET';
apcu_add('foo', $bar);
var_dump(apcu_fetch('foo'));
echo "\n";
?>

以上例程会输出：

string(3) "BAR"
string(3) "BAR"

参见

  • apcu_store() - Cache a variable in the data store
  • apcu_fetch() - Fetch a stored variable from the cache
  • apcu_delete() - Removes a stored variable from the cache

APCu 函数
apcu_cache_info
APCu 函数


Retrieves cached information from APCu's data store

apcu_add
apcu_cas
APCu 函数
PHP Manual

apcu_cache_info

(PECL apcu >= 4.0.0)

apcu_cache_info — Retrieves cached information from APCu's data store

说明

array apcu_cache_info ([ bool $limited = false ] )

Retrieves cached information and meta-data from APC's data store.

参数

limited

If limited is TRUE, the return value will exclude the individual list of cache entries. This is useful when trying to optimize calls for statistics gathering.

返回值

Array of cached data (and meta-data) 或者在失败时返回 FALSE

Note: apcu_cache_info() will raise a warning if it is unable to retrieve APC cache data. This typically occurs when APC is not enabled.

更新日志

版本 | 说明
3.0.11 | The limited parameter was introduced.
3.0.16 | The "filehits" option for the cache_type parameter was introduced.

范例

Example #1 A apcu_cache_info() example

<?php
print_r(apcu_cache_info());
?>

以上例程的输出类似于：

Array
(
    [num_slots] => 2000
    [ttl] => 0
    [num_hits] => 9
    [num_misses] => 3
    [start_time] => 1123958803
    [cache_list] => Array
        (
            [0] => Array
                (
                    [filename] => /path/to/apcu_test.php
                    [device] => 29954
                    [inode] => 1130511
                    [type] => file
                    [num_hits] => 1
                    [mtime] => 1123960686
                    [creation_time] => 1123960696
                    [deletion_time] => 0
                    [access_time] => 1123962864
                    [ref_count] => 1
                    [mem_size] => 677
                )
            [1] => Array (...iterates for each cached file)
)

参见

  • APCu configuration directives
  • APCUIterator::getTotalSize() - Get total cache size
  • APCUIterator::getTotalHits() - Get total cache hits
  • APCUIterator::getTotalCount() - Get total count

apcu_add
apcu_cas
APCu 函数


Updates an old value with a new value

apcu_cache_info
apcu_clear_cache
APCu 函数
PHP Manual

apcu_cas

(PECL apcu >= 4.0.0)

apcu_cas — Updates an old value with a new value

说明

bool apcu_cas ( string $key , int $old , int $new )

apcu_cas() updates an already existing integer value if the old parameter matches the currently stored value with the value of the new parameter.

参数

key

The key of the value being updated.

old

The old value (the value currently stored).

new

The new value to update to.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 apcu_cas() example

<?php
apcu_store('foobar', 2);
echo '$foobar = 2', PHP_EOL;
echo '$foobar == 1 ? 2 : 1 = ', (apcu_cas('foobar', 1, 2) ? 'ok' : 'fail'), PHP_EOL;
echo '$foobar == 2 ? 1 : 2 = ', (apcu_cas('foobar', 2, 1) ? 'ok' : 'fail'), PHP_EOL;

echo '$foobar = ', apcu_fetch('foobar'), PHP_EOL;

echo '$f__bar == 1 ? 2 : 1 = ', (apcu_cas('f__bar', 1, 2) ? 'ok' : 'fail'), PHP_EOL;

apcu_store('perfection', 'xyz');
echo '$perfection == 2 ? 1 : 2 = ', (apcu_cas('perfection', 2, 1) ? 'ok' : 'epic fail'), PHP_EOL;

echo '$foobar = ', apcu_fetch('foobar'), PHP_EOL;
?>

以上例程的输出类似于：

$foobar = 2
$foobar == 1 ? 2 : 1 = fail
$foobar == 2 ? 1 : 2 = ok
$foobar = 1
$f__bar == 1 ? 2 : 1 = fail
$perfection == 2 ? 1 : 2 = epic fail
$foobar = 1

参见

  • apcu_dec() - Decrease a stored number
  • apcu_store() - Cache a variable in the data store
apcu_cache_info
apcu_clear_cache
APCu 函数


Clears the APCu cache

apcu_cas
apcu_dec
APCu 函数
PHP Manual

apcu_clear_cache

(PECL apcu >= 4.0.0)

apcu_clear_cache — Clears the APCu cache

说明

bool apcu_clear_cache ( void )

Clears the cache.

参数

此函数没有参数。

返回值

Returns TRUE always

参见

  • apcu_cache_info() - Retrieves cached information from APCu's data store

apcu_cas
apcu_dec
APCu 函数


Decrease a stored number

apcu_clear_cache
apcu_delete
APCu 函数
PHP Manual

apcu_dec

(PECL apcu >= 4.0.0)

apcu_dec — Decrease a stored number

说明

int apcu_dec ( string $key [, int $step = 1 [, bool &$success ]] )

Decreases a stored integer value.

参数

key

The key of the value being decreased.

step

The step, or value to decrease.

success

Optionally pass the success or fail boolean value to this referenced variable.

返回值

Returns the current value of key's value on success, 或者在失败时返回 FALSE

范例

Example #1 apcu_dec() example

<?php
echo "Let's do something with success", PHP_EOL;

apcu_store('anumber', 42);

echo apcu_fetch('anumber'), PHP_EOL;

echo apcu_dec('anumber'), PHP_EOL;
echo apcu_dec('anumber', 10), PHP_EOL;
echo apcu_dec('anumber', 10, $success), PHP_EOL;

var_dump($success);

echo "Now, let's fail", PHP_EOL, PHP_EOL;

apcu_store('astring', 'foo');

$ret = apcu_dec('astring', 1, $fail);

var_dump($ret);
var_dump($fail);
?>

以上例程的输出类似于：

Let's do something with success
42
41
31
21
bool(true)
Now, let's fail

bool(false)
bool(false)

参见

  • apcu_inc() - Increase a stored number
apcu_clear_cache
apcu_delete
APCu 函数


Removes a stored variable from the cache

apcu_dec
apcu_entry
APCu 函数
PHP Manual

apcu_delete

(PECL apcu >= 4.0.0)

apcu_delete — Removes a stored variable from the cache

说明

bool apcu_delete ( mixed $key )

Removes a stored variable from the cache.

参数

key

A key used to store the value as a string for a single key, or as an array of strings for several keys, or as an APCUIterator object.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 A apcu_delete() example

<?php
$bar = 'BAR';
apcu_store('foo', $bar);
apcu_delete('foo');
// this is obviously useless in this form

// Alternatively delete multiple keys.
apcu_delete(['foo', 'bar', 'baz']);

// Or use an Iterator with a regular expression.
apcu_delete(new APCUIterator('#^myprefix_#'));
?>

参见

  • apcu_store() - Cache a variable in the data store
  • apcu_fetch() - Fetch a stored variable from the cache
  • apcu_clear_cache() - Clears the APCu cache
  • APCUIterator

apcu_dec
apcu_entry
APCu 函数


Atomically fetch or generate a cache entry

apcu_delete
apcu_exists
APCu 函数
PHP Manual

apcu_entry

(PECL apcu >= 5.1.0)

apcu_entry — Atomically fetch or generate a cache entry

说明

mixed apcu_entry ( string $key , callable $generator [, int $ttl = 0 ] )

Atomically attempts to find key in the cache, if it cannot be found generator is called, passing key as the only argument. The return value of the call is then cached with the optionally specified ttl, and returned.

Note: When control enters apcu_entry() the lock for the cache is acquired exclusively, it is released when control leaves apcu_entry(): In effect, this turns the body of generator into a critical section, disallowing two processes from executing the same code paths concurrently. In addition, it prohibits the concurrent execution of any other APCu functions, since they will acquire the same lock.

Warning

The only APCu function that can be called safely by generator is apcu_entry().

参数

key

Identity of cache entry

generator

A callable that accepts key as the only argument and returns the value to cache.

ttl

Time To Live; store var in the cache for ttl seconds. After the ttl has passed, the stored variable will be expunged from the cache (on the next request). If no ttl is supplied (or if the ttl is 0), the value will persist until it is removed from the cache manually, or otherwise fails to exist in the cache (clear, restart, etc.).

返回值

Returns the cached value

范例

Example #1 An apcu_entry() example

<?php
$config = apcu_entry("config", function($key) {
 return [
   "fruit" => apcu_entry("config.fruit", function($key){
     return [
       "apples",
       "pears"
     ];
   }),
   "people" => apcu_entry("config.people", function($key){
     return [
      "bob",
      "joe",
      "niki"
     ];
   })
 ];
});

var_dump($config);
?>

以上例程会输出：

array(2) {
  ["fruit"]=>
  array(2) {
    [0]=>
    string(6) "apples"
    [1]=>
    string(5) "pears"
  }
  ["people"]=>
  array(3) {
    [0]=>
    string(3) "bob"
    [1]=>
    string(3) "joe"
    [2]=>
    string(4) "niki"
  }
}

参见

  • apcu_store() - Cache a variable in the data store
  • apcu_fetch() - Fetch a stored variable from the cache
  • apcu_delete() - Removes a stored variable from the cache

apcu_delete
apcu_exists
APCu 函数


Checks if entry exists

apcu_entry
apcu_fetch
APCu 函数
PHP Manual

apcu_exists

(PECL apcu >= 4.0.0)

apcu_exists — Checks if entry exists

说明

mixed apcu_exists ( mixed $keys )

Checks if one or more APCu entries exist.

参数

keys

A string, or an array of strings, that contain keys.

返回值

Returns TRUE if the key exists, otherwise FALSE Or if an array was passed to keys, then an array is returned that contains all existing keys, or an empty array if none exist.

范例

Example #1 apcu_exists() example

<?php
$fruit  = 'apple';
$veggie = 'carrot';

apcu_store('foo', $fruit);
apcu_store('bar', $veggie);

if (apcu_exists('foo')) {
    echo "Foo exists: ";
    echo apcu_fetch('foo');
} else {
    echo "Foo does not exist";
}

echo PHP_EOL;
if (apcu_exists('baz')) {
    echo "Baz exists.";
} else {
    echo "Baz does not exist";
}

echo PHP_EOL;

$ret = apcu_exists(array('foo', 'donotexist', 'bar'));
var_dump($ret);

?>

以上例程的输出类似于：

Foo exists: apple
Baz does not exist
array(2) {
  ["foo"]=>
  bool(true)
  ["bar"]=>
  bool(true)
}

参见

  • apcu_cache_info() - Retrieves cached information from APCu's data store
  • apcu_fetch() - Fetch a stored variable from the cache
apcu_entry
apcu_fetch
APCu 函数


Fetch a stored variable from the cache

apcu_exists
apcu_inc
APCu 函数
PHP Manual

apcu_fetch

(PECL apcu >= 4.0.0)

apcu_fetch — Fetch a stored variable from the cache

说明

mixed apcu_fetch ( mixed $key [, bool &$success ] )

Fetchs an entry from the cache.

参数

key

The key used to store the value (with apcu_store()). If an array is passed then each element is fetched and returned.

success

Set to TRUE in success and FALSE in failure.

返回值

The stored variable or array of variables on success; FALSE on failure

范例

Example #1 A apcu_fetch() example

<?php
$bar = 'BAR';
apcu_store('foo', $bar);
var_dump(apcu_fetch('foo'));
?>

以上例程会输出：

string(3) "BAR"

更新日志

版本 | 说明
3.0.17 | The success parameter was added.

参见

  • apcu_store() - Cache a variable in the data store
  • apcu_delete() - Removes a stored variable from the cache
  • APCUIterator

apcu_exists
apcu_inc
APCu 函数


Increase a stored number

apcu_fetch
apcu_sma_info
APCu 函数
PHP Manual

apcu_inc

(PECL apcu >= 4.0.0)

apcu_inc — Increase a stored number

说明

int apcu_inc ( string $key [, int $step = 1 [, bool &$success ]] )

Increases a stored number.

参数

key

The key of the value being increased.

step

The step, or value to increase.

success

Optionally pass the success or fail boolean value to this referenced variable.

返回值

Returns the current value of key's value on success, 或者在失败时返回 FALSE

范例

Example #1 apcu_inc() example

<?php
echo "Let's do something with success", PHP_EOL;

apcu_store('anumber', 42);

echo apcu_fetch('anumber'), PHP_EOL;

echo apcu_inc('anumber'), PHP_EOL;
echo apcu_inc('anumber', 10), PHP_EOL;
echo apcu_inc('anumber', 10, $success), PHP_EOL;

var_dump($success);

echo "Now, let's fail", PHP_EOL, PHP_EOL;

apcu_store('astring', 'foo');

$ret = apcu_inc('astring', 1, $fail);

var_dump($ret);
var_dump($fail);
?>

以上例程的输出类似于：

Let's do something with success
42
43
53
63
bool(true)
Now, let's fail

bool(false)
bool(false)

参见

  • apcu_dec() - Decrease a stored number
apcu_fetch
apcu_sma_info
APCu 函数


Retrieves APCu Shared Memory Allocation information

apcu_inc
apcu_store
APCu 函数
PHP Manual

apcu_sma_info

(PECL apcu >= 4.0.0)

apcu_sma_info — Retrieves APCu Shared Memory Allocation information

说明

array apcu_sma_info ([ bool $limited = false ] )

Retrieves APCu Shared Memory Allocation information.

参数

limited

When set to FALSE (default) apcu_sma_info() will return a detailed information about each segment.

返回值

Array of Shared Memory Allocation data; FALSE on failure.

范例

Example #1 A apcu_sma_info() example

<?php
print_r(apcu_sma_info());
?>

以上例程的输出类似于：

Array
(
    [num_seg] => 1
    [seg_size] => 31457280
    [avail_mem] => 31448408
    [block_lists] => Array
        (
            [0] => Array
                (
                    [0] => Array
                        (
                            [size] => 31448408
                            [offset] => 8864
                        )

                )

        )

)

参见

  • APCu configuration directives

apcu_inc
apcu_store
APCu 函数


Cache a variable in the data store

apcu_sma_info
APCUIterator
APCu 函数
PHP Manual

apcu_store

(PECL apcu >= 4.0.0)

apcu_store — Cache a variable in the data store

说明

bool apcu_store ( string $key , mixed $var [, int $ttl = 0 ] )
array apcu_store ( array $values [, mixed $unused = NULL [, int $ttl = 0 ]] )

Cache a variable in the data store.

Note: Unlike many other mechanisms in PHP, variables stored using apcu_store() will persist between requests (until the value is removed from the cache).

参数

key

Store the variable using this name. keys are cache-unique, so storing a second value with the same key will overwrite the original value.

var

The variable to store

ttl

Time To Live; store var in the cache for ttl seconds. After the ttl has passed, the stored variable will be expunged from the cache (on the next request). If no ttl is supplied (or if the ttl is 0), the value will persist until it is removed from the cache manually, or otherwise fails to exist in the cache (clear, restart, etc.).

values

Names in key, variables in value.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 Second syntax returns array with error keys.

范例

Example #1 A apcu_store() example

<?php
$bar = 'BAR';
apcu_store('foo', $bar);
var_dump(apcu_fetch('foo'));
?>

以上例程会输出：

string(3) "BAR"

参见

  • apcu_add() - Cache a new variable in the data store
  • apcu_fetch() - Fetch a stored variable from the cache
  • apcu_delete() - Removes a stored variable from the cache

apcu_sma_info
APCUIterator
APCu 函数


The APCUIterator class

(PECL apcu >= 5.0.0)

简介

The APCUIterator class makes it easier to iterate over large APCu caches. This is helpful as it allows iterating over large caches in steps, while grabbing a defined number of entries per lock instance, so it frees the cache locks for other activities rather than hold up the entire cache to grab 100 (the default) entries. Also, using regular expression matching is more efficient as it's been moved to the C level.

类摘要

APCUIterator implements Iterator {
/* Methods */
public __construct ([ mixed $search = null [, int $format = APCU_ITER_ALL [, int $chunk_size = 100 [, int $list = APCU_LIST_ACTIVE ]]]] )
public mixed current ( void )
public int getTotalCount ( void )
public int getTotalHits ( void )
public int getTotalSize ( void )
public string key ( void )
public void next ( void )
public void rewind ( void )
public void valid ( void )
}

Table of Contents

  • APCUIterator::__construct — Constructs an APCUIterator iterator object
  • APCUIterator::current — Get current item
  • APCUIterator::getTotalCount — Get total count
  • APCUIterator::getTotalHits — Get total cache hits
  • APCUIterator::getTotalSize — Get total cache size
  • APCUIterator::key — Get iterator key
  • APCUIterator::next — Move pointer to next item
  • APCUIterator::rewind — Rewinds iterator
  • APCUIterator::valid — Checks if current position is valid
apcu_store
APCUIterator::__construct
APCu


Constructs an APCUIterator iterator object

APCUIterator
APCUIterator::current
APCUIterator
PHP Manual

APCUIterator::__construct

(PECL apcu >= 5.0.0)

APCUIterator::__construct — Constructs an APCUIterator iterator object

说明

public APCUIterator::__construct ([ mixed $search = null [, int $format = APCU_ITER_ALL [, int $chunk_size = 100 [, int $list = APCU_LIST_ACTIVE ]]]] )

Constructs an APCUIterator object.

参数

search

A PCRE regular expression that matches against APCu key names, either as a string for a single regular expression, or as an array of regular expressions. Or, optionally pass in NULL to skip the search.

format

The desired format, as configured with one or more of the APCU_ITER_* constants.

chunk_size

The chunk size. Must be a value greater than 0. The default value is 100.

list

The type to list. Either pass in APCU_LIST_ACTIVE or APCU_LIST_DELETED.

返回值

An APCUIterator object on success, or NULL on failure.

范例

Example #1 A APCUIterator::__construct() example

<?php
foreach (new APCUIterator('/^counter\./') as $counter) {
    echo "$counter[key]: $counter[value]\n";
    apc_dec($counter['key'], $counter['value']);
}
?>

参见

  • apcu_exists() - Checks if entry exists
  • apcu_cache_info() - Retrieves cached information from APCu's data store
APCUIterator
APCUIterator::current
APCUIterator


Get current item

APCUIterator::__construct
APCUIterator::getTotalCount
APCUIterator
PHP Manual

APCUIterator::current

(PECL apcu >= 5.0.0)

APCUIterator::current — Get current item

说明

public mixed APCUIterator::current ( void )

Gets the current item from the APCUIterator stack.

参数

此函数没有参数。

返回值

Returns the current item on success, or FALSE if no more items or exist, or on failure.

参见

  • APCUIterator::next() - Move pointer to next item
  • Iterator::current() - 返回当前元素
APCUIterator::__construct
APCUIterator::getTotalCount
APCUIterator


Get total count

APCUIterator::current
APCUIterator::getTotalHits
APCUIterator
PHP Manual

APCUIterator::getTotalCount

(PECL apcu >= 5.0.0)

APCUIterator::getTotalCount — Get total count

说明

public int APCUIterator::getTotalCount ( void )

Get the total count.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The total count.

参见

  • APCUIterator::getTotalHits() - Get total cache hits
  • APCUIterator::getTotalSize() - Get total cache size
  • apcu_cache_info() - Retrieves cached information from APCu's data store
APCUIterator::current
APCUIterator::getTotalHits
APCUIterator


Get total cache hits

APCUIterator::getTotalCount
APCUIterator::getTotalSize
APCUIterator
PHP Manual

APCUIterator::getTotalHits

(PECL apcu >= 5.0.0)

APCUIterator::getTotalHits — Get total cache hits

说明

public int APCUIterator::getTotalHits ( void )

Gets the total number of cache hits.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The number of hits on success, or FALSE on failure.

参见

  • APCUIterator::getTotalCount() - Get total count
  • APCUIterator::getTotalSize() - Get total cache size
  • apcu_cache_info() - Retrieves cached information from APCu's data store
APCUIterator::getTotalCount
APCUIterator::getTotalSize
APCUIterator


Get total cache size

APCUIterator::getTotalHits
APCUIterator::key
APCUIterator
PHP Manual

APCUIterator::getTotalSize

(PECL apcu >= 5.0.0)

APCUIterator::getTotalSize — Get total cache size

说明

public int APCUIterator::getTotalSize ( void )

Gets the total cache size.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The total cache size.

参见

  • APCUIterator::getTotalCount() - Get total count
  • APCUIterator::getTotalHits() - Get total cache hits
  • apc_cache_info() - Retrieves cached information from APC's data store
APCUIterator::getTotalHits
APCUIterator::key
APCUIterator


Get iterator key

APCUIterator::getTotalSize
APCUIterator::next
APCUIterator
PHP Manual

APCUIterator::key

(PECL apcu >= 5.0.0)

APCUIterator::key — Get iterator key

说明

public string APCUIterator::key ( void )

Gets the current iterator key.

参数

此函数没有参数。

返回值

Returns the key on success, or FALSE upon failure.

参见

  • APCUIterator::current() - Get current item
  • Iterator::key() - 返回当前元素的键
APCUIterator::getTotalSize
APCUIterator::next
APCUIterator


Move pointer to next item

APCUIterator::key
APCUIterator::rewind
APCUIterator
PHP Manual

APCUIterator::next

(PECL apcu >= 5.0.0)

APCUIterator::next — Move pointer to next item

说明

public void APCUIterator::next ( void )

Moves the iterator pointer to the next element.

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • APCUIterator::current() - Get current item
  • APCUIterator::rewind() - Rewinds iterator
  • Iterator::next() - 向前移动到下一个元素
APCUIterator::key
APCUIterator::rewind
APCUIterator


Rewinds iterator

APCUIterator::next
APCUIterator::valid
APCUIterator
PHP Manual

APCUIterator::rewind

(PECL apcu >= 5.0.0)

APCUIterator::rewind — Rewinds iterator

说明

public void APCUIterator::rewind ( void )

Rewinds back the iterator to the first element.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • APCUIterator::next() - Move pointer to next item
  • Iterator::next() - 向前移动到下一个元素
APCUIterator::next
APCUIterator::valid
APCUIterator


Checks if current position is valid

APCUIterator::rewind
APD
APCUIterator
PHP Manual

APCUIterator::valid

(PECL apcu >= 5.0.0)

APCUIterator::valid — Checks if current position is valid

说明

public void APCUIterator::valid ( void )

Checks if the current iterator position is valid.

参数

此函数没有参数。

返回值

Returns TRUE if the current iterator position is valid, otherwise FALSE.

参见

  • APCUIterator::current() - Get current item
  • Iterator::valid() - 检查当前位置是否有效
APCUIterator::rewind
APD
APCUIterator


Advanced PHP debugger

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • Building on Win32
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • How to use PHP-APD in your scripts
  • APD 函数
    • apd_breakpoint — Stops the interpreter and waits on a CR from the socket
    • apd_callstack — Returns the current call stack as an array
    • apd_clunk — Throw a warning and a callstack
    • apd_continue — Restarts the interpreter
    • apd_croak — Throw an error, a callstack and then exit
    • apd_dump_function_table — Outputs the current function table
    • apd_dump_persistent_resources — Return all persistent resources as an array
    • apd_dump_regular_resources — Return all current regular resources as an array
    • apd_echo — Echo to the debugging socket
    • apd_get_active_symbols — Get an array of the current variables names in the local scope
    • apd_set_pprof_trace — Starts the session debugging
    • apd_set_session_trace_socket — Starts the remote session debugging
    • apd_set_session_trace — Starts the session debugging
    • apd_set_session — Changes or sets the current debugging level
    • override_function — Overrides built-in functions
    • rename_function — Renames orig_name to new_name in the global function table
APCUIterator::valid
简介
影响 PHP 行为的扩展


简介

APD is the Advanced PHP Debugger. It was written to provide profiling and debugging capabilities for PHP code, as well as to provide the ability to print out a full stack backtrace. APD supports interactive debugging, but by default it writes data to trace files. It also offers event based logging so that varying levels of information (including function calls, arguments passed, timings, etc.) can be turned on or off for individual scripts.

Caution

APD is a Zend Extension, modifying the way the internals of PHP handle function calls, and thus may or may not be compatible with other Zend Extensions (for example Zend Optimizer).

APD
安装／配置
APD


安装／配置

Table of Contents

  • 需求
  • 安装
  • Building on Win32
  • 运行时配置
  • 资源类型
简介
需求
APD


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/apd.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

In your INI file, add the following lines:

zend_extension = /absolute/path/to/apd.so
apd.dumpdir = /absolute/path/to/trace/directory
apd.statement_tracing = 0

Depending on your PHP build, the zend_extension directive can be one of the following:

zend_extension              (non ZTS, non debug build)
zend_extension_ts           (    ZTS, non debug build)
zend_extension_debug        (non ZTS,     debug build)
zend_extension_debug_ts     (    ZTS,     debug build)

需求
Building on Win32
安装／配置


Building on Win32

To build APD under Windows you need a working PHP compilation environment as described on http://php.net/ -- basically, it requires you to have Microsoft Visual C++, win32build.zip, bison/flex, and some know how to get it to work. Also ensure that adp.dsp has DOS line endings; if it has unix line endings, Microsoft Visual C++ will complain about it.

安装
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

APD 配置选项
名字 | 默认 | 可修改范围 | 更新日志
apd.dumpdir | NULL | PHP_INI_ALL |
apd.statement_tracing | "0" | PHP_INI_ALL |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

apd.dumpdir string

设定 APD 写入调试输出文件的目录。可以指定绝对路径或相对路径。

可以在 apd_set_pprof_trace() 中以参数指定一个不同目录。

apd.statement_tracing boolean

指定是否进行每行的跟踪。将此项打开（设为 1）将影响到程序的性能。

Building on Win32
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

APD constants
Constant | Value | Description
FUNCTION_TRACE (integer) | 1 |
ARGS_TRACE (integer) | 2 |
ASSIGNMENT_TRACE (integer) | 4 |
STATEMENT_TRACE (integer) | 8 |
MEMORY_TRACE (integer) | 16 |
TIMING_TRACE (integer) | 32 |
SUMMARY_TRACE (integer) | 64 |
ERROR_TRACE (integer) | 128 |
PROF_TRACE (integer) | 256 |
APD_VERSION (string) | example: 1.0.2-dev |
资源类型
范例
APD


范例

Table of Contents

  • How to use PHP-APD in your scripts
预定义常量
How to use PHP-APD in your scripts
APD


How to use PHP-APD in your scripts

  1. As the first line of your PHP script, call the apd_set_pprof_trace() function to start the trace:

    <?php
    apd_set_pprof_trace    ();
    ?>

    You can insert the line anywhere in your script, but if you do not start tracing at the beginning of your script you discard profile data that might otherwise lead you to a performance bottleneck.

  2. Now run your script. The dump output will be written to apd.dumpdir/pprof_pid.ext.

    Tip

    If you're running the CGI version of PHP, you will need to add the '-e' flag to enable extended information for apd to work properly. For example: php -e -f script.php

  3. To display formatted profile data, issue the pprofp command with the sort and display options of your choice. The formatted output will look something like:

    bash-2.05b$ pprofp -R /tmp/pprof.22141.0

Trace for /home/dan/testapd.php
Total Elapsed Time = 0.00
Total System Time  = 0.00
Total User Time    = 0.00

Real         User        System             secs/    cumm
%Time (excl/cumm)  (excl/cumm)  (excl/cumm) Calls    call    s/call  Memory Usage Name
--------------------------------------------------------------------------------------
100.0 0.00 0.00  0.00 0.00  0.00 0.00     1  0.0000   0.0009            0 main
56.9 0.00 0.00  0.00 0.00  0.00 0.00     1  0.0005   0.0005            0 apd_set_pprof_trace
28.0 0.00 0.00  0.00 0.00  0.00 0.00    10  0.0000   0.0000            0 preg_replace
14.3 0.00 0.00  0.00 0.00  0.00 0.00    10  0.0000   0.0000            0 str_replace

    The -R option used in this example sorts the profile table by the amount of real time the script spent executing a given function. The "cumm call" column reveals how many times each function was called, and the "s/call" column reveals how many seconds each call to the function required, on average.

  4. To generate a calltree file that you can import into the KCacheGrind profile analysis application, issue the pprof2calltree comand.

范例
APD 函数
范例


APD 函数

Contact information

If you have comments, bugfixes, enhancements or want to help developing this beast, you can send an mail to » apd@mail.communityconnect.com. Any help is very welcome.

Table of Contents

  • apd_breakpoint — Stops the interpreter and waits on a CR from the socket
  • apd_callstack — Returns the current call stack as an array
  • apd_clunk — Throw a warning and a callstack
  • apd_continue — Restarts the interpreter
  • apd_croak — Throw an error, a callstack and then exit
  • apd_dump_function_table — Outputs the current function table
  • apd_dump_persistent_resources — Return all persistent resources as an array
  • apd_dump_regular_resources — Return all current regular resources as an array
  • apd_echo — Echo to the debugging socket
  • apd_get_active_symbols — Get an array of the current variables names in the local scope
  • apd_set_pprof_trace — Starts the session debugging
  • apd_set_session_trace_socket — Starts the remote session debugging
  • apd_set_session_trace — Starts the session debugging
  • apd_set_session — Changes or sets the current debugging level
  • override_function — Overrides built-in functions
  • rename_function — Renames orig_name to new_name in the global function table
How to use PHP-APD in your scripts
apd_breakpoint
APD


Stops the interpreter and waits on a CR from the socket

APD 函数
apd_callstack
APD 函数
PHP Manual

apd_breakpoint

(PECL apd >= 0.2)

apd_breakpoint — Stops the interpreter and waits on a CR from the socket

说明

bool apd_breakpoint ( int $debug_level )

This can be used to stop the running of your script, and await responses on the connected socket. To step the program, just send enter (a blank line), or enter a php command to be executed.

参数

debug_level

由加上 XXX_TRACE 常量而形成的整数。

不建议使用 MEMORY_TRACE。这会很慢且似乎不精确。 ASSIGNMENT_TRACE 还未被实现。

要打开所有跟踪功能(TIMING, FUNCTIONS, ARGS SUMMARY (比如 strace -c)) 则使用 99 作为值。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Typical session using tcplisten

bash#tcplisten localhost 7777

APD - Advanced PHP Debugger Trace File
---------------------------------------------------------------------------
Process Pid (6118)
Trace Begun at Sun Mar 10 23:13:12 2002
---------------------------------------------------------------------------
(  0.000000): apd_set_session_trace called at /home/alan/Projects/project2/test.
php:5
(  0.074824): apd_set_session_trace_socket() at /home/alan/Projects/project2/tes
t.php:5 returned.  Elapsed (0.074824)
(  0.074918): apd_breakpoint() /home/alan/Projects/project2/test.php:7
              ++ argv[0] $(??) = 9
apd_breakpoint() at /home/alan/Projects/project2/test.php:7 returned.  Elapsed (
-2089521468.1073275368)
>\n
statement: /home/alan/Projects/project2/test.php:8
>\n
statement: /home/alan/Projects/project2/test.php:8
>\n
statement: /home/alan/Projects/project2/test.php:10
>apd_echo($i);
EXEC: apd_echo($i);
0
>apd_echo(serialize(apd_get_active_symbols()));
EXEC:  apd_echo(serialize(apd_get_active_symbols()));
a:47:{i:0;s:4:"PWD";i:1;s:10:"COLORFGBG";i:2;s:11:"XAUTHORITY";i:3;s:14:"
COLORTERM_BCE";i:4;s:9:"WINDOWID";i:5;s:14:"ETERM_VERSION";i:6;s:16:"SE
SSION_MANAGER";i:7;s:4:"PS1";i:8;s:11:"GDMSESSION";i:9;s:5:"USER";i:10;s:5:"
MAIL";i:11;s:7:"OLDPWD";i:12;s:5:"LANG";i:13;s:10:"COLORTERM";i:14;s:8:"DISP
LAY";i:15;s:8:"LOGNAME";i:16;s:6:"
>apd_echo(system('ls /home/mydir'));
........
>apd_continue(0);

APD 函数
apd_callstack
APD 函数


Returns the current call stack as an array

apd_breakpoint
apd_clunk
APD 函数
PHP Manual

apd_callstack

(PECL apd 0.2-0.4)

apd_callstack — Returns the current call stack as an array

说明

array apd_callstack ( void )

Returns the current call stack as an array

返回值

An array containing the current call stack.

范例

Example #1 apd_callstack() example

<?php
print_r(apd_callstack());
?>

apd_breakpoint
apd_clunk
APD 函数


Throw a warning and a callstack

apd_callstack
apd_continue
APD 函数
PHP Manual

apd_clunk

(PECL apd 0.2-0.4)

apd_clunk — Throw a warning and a callstack

说明

void apd_clunk ( string $warning [, string $delimiter = "<BR />" ] )

Behaves like perl's Carp::cluck. Throw a warning and a callstack.

参数

warning

The warning to throw.

delimiter

The delimiter. Default to <BR />.

返回值

没有返回值。

范例

Example #1 apd_clunk() example

<?php
apd_clunk("Some Warning", "<br/>");
?>

参见

  • apd_croak() - Throw an error, a callstack and then exit

apd_callstack
apd_continue
APD 函数


Restarts the interpreter

apd_clunk
apd_croak
APD 函数
PHP Manual

apd_continue

(PECL apd >= 0.2)

apd_continue — Restarts the interpreter

说明

bool apd_continue ( int $debug_level )

Usually sent via the socket to restart the interpreter.

参数

debug_level

由加上 XXX_TRACE 常量而形成的整数。

不建议使用 MEMORY_TRACE。这会很慢且似乎不精确。 ASSIGNMENT_TRACE 还未被实现。

要打开所有跟踪功能(TIMING, FUNCTIONS, ARGS SUMMARY (比如 strace -c)) 则使用 99 作为值。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 apd_continue() example

<?php
apd_continue(0);
?>

apd_clunk
apd_croak
APD 函数


Throw an error, a callstack and then exit

apd_continue
apd_dump_function_table
APD 函数
PHP Manual

apd_croak

(PECL apd 0.2-0.4)

apd_croak — Throw an error, a callstack and then exit

说明

void apd_croak ( string $warning [, string $delimiter = "<BR />" ] )

Behaves like perl's Carp::croak. Throw an error, a callstack and then exit.

参数

warning

The warning to throw.

delimiter

The delimiter. Default to <BR />.

返回值

没有返回值。

范例

Example #1 apd_croak() example

<?php
apd_croak("Some Warning","<P>");
?>

参见

  • apd_clunk() - Throw a warning and a callstack

apd_continue
apd_dump_function_table
APD 函数


Outputs the current function table

apd_croak
apd_dump_persistent_resources
APD 函数
PHP Manual

apd_dump_function_table

(Unknown)

apd_dump_function_table — Outputs the current function table

说明

void apd_dump_function_table ( void )

Outputs the current function table.

返回值

没有返回值。

范例

Example #1 apd_dump_function_table() example

<?php
apd_dump_function_table();
?>

apd_croak
apd_dump_persistent_resources
APD 函数


Return all persistent resources as an array

apd_dump_function_table
apd_dump_regular_resources
APD 函数
PHP Manual

apd_dump_persistent_resources

(PECL apd 0.2-0.4)

apd_dump_persistent_resources — Return all persistent resources as an array

说明

array apd_dump_persistent_resources ( void )

Return all persistent resources as an array.

返回值

An array containing the current persistent resources.

范例

Example #1 apd_dump_persistent_resources() example

<?php
print_r(apd_dump_persistent_resources());
?>

参见

  • apd_dump_regular_resources() - Return all current regular resources as an array

apd_dump_function_table
apd_dump_regular_resources
APD 函数


Return all current regular resources as an array

apd_dump_persistent_resources
apd_echo
APD 函数
PHP Manual

apd_dump_regular_resources

(PECL apd 0.2-0.4)

apd_dump_regular_resources — Return all current regular resources as an array

说明

array apd_dump_regular_resources ( void )

Return all current regular resources as an array.

返回值

An array containing the current regular resources.

范例

Example #1 apd_dump_regular_resources() example

<?php
print_r(apd_dump_regular_resources());
?>

参见

  • apd_dump_persistent_resources() - Return all persistent resources as an array

apd_dump_persistent_resources
apd_echo
APD 函数


Echo to the debugging socket

apd_dump_regular_resources
apd_get_active_symbols
APD 函数
PHP Manual

apd_echo

(PECL apd >= 0.2)

apd_echo — Echo to the debugging socket

说明

bool apd_echo ( string $output )

Usually sent via the socket to request information about the running script.

参数

output

The debugged variable.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 apd_echo() example

<?php
apd_echo($i);
?>

apd_dump_regular_resources
apd_get_active_symbols
APD 函数


Get an array of the current variables names in the local scope

apd_echo
apd_set_pprof_trace
APD 函数
PHP Manual

apd_get_active_symbols

(PECL apd 0.2)

apd_get_active_symbols — Get an array of the current variables names in the local scope

说明

array apd_get_active_symbols ( void )

Returns the names of all the variables defined in the active scope, (not their values).

返回值

A multidimensional array with all the variables.

范例

Example #1 apd_get_active_symbols() example

<?php
apd_echo(apd_get_active_symbols());
?>

apd_echo
apd_set_pprof_trace
APD 函数


Starts the session debugging

apd_get_active_symbols
apd_set_session_trace_socket
APD 函数
PHP Manual

apd_set_pprof_trace

(PECL apd >= 0.2)

apd_set_pprof_trace — Starts the session debugging

说明

string apd_set_pprof_trace ([ string $dump_directory = ini_get("apd.dumpdir") [, string $fragment = "pprof" ]] )

Starts debugging to pprof_{process_id} in the dump directory.

参数

dump_directory

The directory in which the profile dump file is written. If not set, the apd.dumpdir setting from the php.ini file is used.

fragment

返回值

Returns path of the destination file.

范例

Example #1 apd_set_pprof_trace() example

<?php
apd_set_pprof_trace();
?>

参见

  • apd_set_session_trace() - Starts the session debugging

apd_get_active_symbols
apd_set_session_trace_socket
APD 函数


Starts the remote session debugging

apd_set_pprof_trace
apd_set_session_trace
APD 函数
PHP Manual

apd_set_session_trace_socket

(PECL apd >= 0.2)

apd_set_session_trace_socket — Starts the remote session debugging

说明

bool apd_set_session_trace_socket ( string $tcp_server , int $socket_type , int $port , int $debug_level )

Connects to the specified tcp_server (eg. tcplisten) and sends debugging data to the socket.

参数

tcp_server

IP or Unix Domain socket (like a file) of the TCP server.

socket_type

Can be AF_UNIX for file based sockets or APD_AF_INET for standard tcp/ip.

port

You can use any port, but higher numbers are better as most of the lower numbers may be used by other system services.

debug_level

由加上 XXX_TRACE 常量而形成的整数。

不建议使用 MEMORY_TRACE。这会很慢且似乎不精确。 ASSIGNMENT_TRACE 还未被实现。

要打开所有跟踪功能(TIMING, FUNCTIONS, ARGS SUMMARY (比如 strace -c)) 则使用 99 作为值。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 apd_set_session_trace_socket() example

<?php
  apd_set_session_trace_socket("127.0.0.1",APD_AF_INET,7112,0);
?>

apd_set_pprof_trace
apd_set_session_trace
APD 函数


Starts the session debugging

apd_set_session_trace_socket
apd_set_session
APD 函数
PHP Manual

apd_set_session_trace

(PECL apd 0.2-0.4)

apd_set_session_trace — Starts the session debugging

说明

void apd_set_session_trace ( int $debug_level [, string $dump_directory = ini_get("apd.dumpdir") ] )

Starts debugging to apd_dump_{process_id} in the dump directory.

参数

debug_level

由加上 XXX_TRACE 常量而形成的整数。

不建议使用 MEMORY_TRACE。这会很慢且似乎不精确。 ASSIGNMENT_TRACE 还未被实现。

要打开所有跟踪功能(TIMING, FUNCTIONS, ARGS SUMMARY (比如 strace -c)) 则使用 99 作为值。

dump_directory

The directory in which the profile dump file is written. If not set, the apd.dumpdir setting from the php.ini file is used.

返回值

没有返回值。

范例

Example #1 apd_set_session_trace() example

<?php
apd_set_session_trace(99);
?>

apd_set_session_trace_socket
apd_set_session
APD 函数


Changes or sets the current debugging level

apd_set_session_trace
override_function
APD 函数
PHP Manual

apd_set_session

(PECL apd 0.2-0.4)

apd_set_session — Changes or sets the current debugging level

说明

void apd_set_session ( int $debug_level )

This can be used to increase or decrease debugging in a different area of your application.

参数

debug_level

由加上 XXX_TRACE 常量而形成的整数。

不建议使用 MEMORY_TRACE。这会很慢且似乎不精确。 ASSIGNMENT_TRACE 还未被实现。

要打开所有跟踪功能(TIMING, FUNCTIONS, ARGS SUMMARY (比如 strace -c)) 则使用 99 作为值。

返回值

没有返回值。

范例

Example #1 apd_set_session() example

<?php
apd_set_session(9);
?>

apd_set_session_trace
override_function
APD 函数


Overrides built-in functions

apd_set_session
rename_function
APD 函数
PHP Manual

override_function

(PECL apd >= 0.2)

override_function — Overrides built-in functions

说明

bool override_function ( string $function_name , string $function_args , string $function_code )

Overrides built-in functions by replacing them in the symbol table.

参数

function_name

The function to override.

function_args

The function arguments, as a comma separated string.

Usually you will want to pass this parameter, as well as the function_code parameter, as a single quote delimited string. The reason for using single quoted strings, is to protect the variable names from parsing, otherwise, if you use double quotes there will be a need to escape the variable names, e.g. \$your_var.

function_code

The new code for the function.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 override_function() example

<?php
override_function('test', '$a,$b', 'echo "DOING TEST"; return $a * $b;');
?>

apd_set_session
rename_function
APD 函数


Renames orig_name to new_name in the global function table

override_function
bcompiler
APD 函数
PHP Manual

rename_function

(PECL apd >= 0.2)

rename_function — Renames orig_name to new_name in the global function table

说明

bool rename_function ( string $original_name , string $new_name )

Renames a orig_name to new_name in the global function table. Useful for temporarily overriding built-in functions.

参数

original_name

The original function name.

new_name

The new name for the original_name function.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 rename_function() example

<?php
rename_function('mysql_connect', 'debug_mysql_connect' );
?>

override_function
bcompiler
APD 函数


PHP 字节码编译器

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • bcompiler 函数
    • bcompiler_load_exe — 从一个 bcompiler exe 文件中读取并创建类
    • bcompiler_load — 从一个 bz 压缩过的文件中读取并创建类
    • bcompiler_parse_class — 读取一个类的字节码并回调一个用户的函数
    • bcompiler_read — 从一个文件句柄中读取并创建类
    • bcompiler_write_class — 写入定义过的类的字节码
    • bcompiler_write_constant — 写入定义过的常量的字节码
    • bcompiler_write_exe_footer — 写入开始位置以及 exe 类型文件的结尾信号
    • bcompiler_write_file — 写入 PHP 源码文件的字节码
    • bcompiler_write_footer — 写入单个字符 \x00 用于标识编译数据的结尾
    • bcompiler_write_function — 以字节码写入定义过的函数
    • bcompiler_write_functions_from_file — 以字节码写入一个文件中定义过的所以函数
    • bcompiler_write_header — 写入 bcompiler 头
    • bcompiler_write_included_filename — 写入一个包含的文件的字节码
rename_function
简介
影响 PHP 行为的扩展


简介

Warning

此扩展是实验性 的。 此扩展的表象，包括其函数名称以及其他此扩展的相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本扩展风险自担 。

Bcompiler 由于以下若干原因而写成：

  • 在一个专有的 PHP 应用程序里对整个脚本进行编码
  • 在一个专有的 PHP 应用程序里对一些类或者函数进行编码
  • 使生产环境中的 php-gtk 产品应用于桌面客户端，而无需 php.exe。
  • PHP 到 C 转换器的可行性研究
这些目标的第一个是通过使用函数 bcompiler_write_header()、 bcompiler_write_file() 和 bcompiler_write_footer() 实现的。 字节码文件可以以未压缩的或简单的格式写入。 The bytecode files can be written as either uncompressed or plain. 使用生成的字节码，你可以简单使用 include 或者 require 语句来包含。

这些目标的第二个可以使用
bcompiler_write_header()、
bcompiler_write_class()、
bcompiler_write_footer()、
bcompiler_read()
和 bcompiler_load() 函数实现。
字节码文件可以以未压缩的或简单的格式写入。
bcompiler_load() 读取了一个 bzip 压缩过的字节码文件，体积往往是原始文件的 1/3。

为了创建可执行的文件，bcompiler 要使用一个修改过的 sapi 文件或者已经被编译为共享库的一个版本的 PHP。 在这个方案里，bcompiler 从可执行文件的末尾读取了压缩过的字节码。

在仅使用未压缩过的字节码时，bcompiler 能够提高约 30% 的性能。 但是请留意未压缩过的字节码可能比源码大5倍 使用字节码压缩可以节省您的磁盘空间，但解压需要比解析源码花费更多时间。 同时 bcompiler 没有对字节码做任何优化，这功能会在将来添加......

在代码保护方面，有把握地讲，不可能重新创建确切的原始代码，并且没有附加的源码注释。 它将有效得阻止了重建和修改一个类。但是它可以从 bcompile 过的字节码中取出数据 ——所以不要把你私人密码或者其他任何类似东西放在里面。

bcompiler
安装／配置
bcompiler


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
bcompiler


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/bcompiler.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


运行时配置

此扩展没有在 php.ini 中定义配置指令。

安装
资源类型
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
bcompiler 函数
bcompiler


bcompiler 函数

联系信息

如果你有评论、问题的修复、功能的增强，或者想要帮助开发这头野兽，你可以给我投封邮件 » alan_k@php.net。 非常欢迎任何您的帮助！

Table of Contents

  • bcompiler_load_exe — 从一个 bcompiler exe 文件中读取并创建类
  • bcompiler_load — 从一个 bz 压缩过的文件中读取并创建类
  • bcompiler_parse_class — 读取一个类的字节码并回调一个用户的函数
  • bcompiler_read — 从一个文件句柄中读取并创建类
  • bcompiler_write_class — 写入定义过的类的字节码
  • bcompiler_write_constant — 写入定义过的常量的字节码
  • bcompiler_write_exe_footer — 写入开始位置以及 exe 类型文件的结尾信号
  • bcompiler_write_file — 写入 PHP 源码文件的字节码
  • bcompiler_write_footer — 写入单个字符 \x00 用于标识编译数据的结尾
  • bcompiler_write_function — 以字节码写入定义过的函数
  • bcompiler_write_functions_from_file — 以字节码写入一个文件中定义过的所以函数
  • bcompiler_write_header — 写入 bcompiler 头
  • bcompiler_write_included_filename — 写入一个包含的文件的字节码
预定义常量
bcompiler_load_exe
bcompiler


从一个 bcompiler exe 文件中读取并创建类

bcompiler 函数
bcompiler_load
bcompiler 函数
PHP Manual

bcompiler_load_exe

(PECL bcompiler >= 0.4)

bcompiler_load_exe — 从一个 bcompiler exe 文件中读取并创建类

说明

bool bcompiler_load_exe ( string $filename )

从一个 bcompiler exe 文件中读取数据并根据字节码创建类。

参数

filename

exe文件的路径，是一个字符串。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 bcompiler_load_exe() 例子

<?php

bcompiler_load_exe("/tmp/example.exe");
print_r(get_defined_classes());

?>

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • bcompiler_load() - 从一个 bz 压缩过的文件中读取并创建类

bcompiler 函数
bcompiler_load
bcompiler 函数


从一个 bz 压缩过的文件中读取并创建类

bcompiler_load_exe
bcompiler_parse_class
bcompiler 函数
PHP Manual

bcompiler_load

(PECL bcompiler >= 0.4)

bcompiler_load — 从一个 bz 压缩过的文件中读取并创建类

说明

bool bcompiler_load ( string $filename )

从一个 bz 压缩过的文件中读取数据，并根据字节码创建类。

参数

filename

bz压缩过的文件路径，是一个字符串。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 bcompiler_load() 例子

<?php

bcompiler_load("/tmp/example");

print_r(get_defined_classes());

?>

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Note:

请使用 include 或 require 语句解析字节码，这是种比使用本函数更轻便的方式。

请注意该函数不会执行字节码文件中包含的脚本主体代码。

参见

  • bcompiler_load_exe() - 从一个 bcompiler exe 文件中读取并创建类

bcompiler_load_exe
bcompiler_parse_class
bcompiler 函数


读取一个类的字节码并回调一个用户的函数

bcompiler_load
bcompiler_read
bcompiler 函数
PHP Manual

bcompiler_parse_class

(PECL bcompiler >= 0.4)

bcompiler_parse_class — 读取一个类的字节码并回调一个用户的函数

说明

bool bcompiler_parse_class ( string $class , string $callback )

读取一个类的字节码并回调一个用户的函数。

参数

class

字符串，类名。

callback

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 bcompiler_parse_class() 例子

<?php

function readByteCodes($data) {
    print_r($data);
}

bcompiler_parse_class("DB","readByteCodes");

?>

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Note:

自 bcompiler 0.5 起，该函数已从 bcompiler 中删除并不再有效。

bcompiler_load
bcompiler_read
bcompiler 函数


从一个文件句柄中读取并创建类

bcompiler_parse_class
bcompiler_write_class
bcompiler 函数
PHP Manual

bcompiler_read

(PECL bcompiler >= 0.4)

bcompiler_read — 从一个文件句柄中读取并创建类

说明

bool bcompiler_read ( resource $filehandle )

从一个打开的文件句柄中读取数据，并从字节码中创建类。

参数

filehandle

fopen() 返回的文件句柄。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 bcompiler_read() 例子

<?php
$fh = fopen("/tmp/example","r");
bcompiler_read($fh);
fclose($fh);
print_r(get_defined_classes());

?>

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Note:

请使用 include 或 require 语句解析字节码，这是种比使用本函数更轻便的方式。

请注意该函数不会执行字节码文件中包含的脚本主体代码。

bcompiler_parse_class
bcompiler_write_class
bcompiler 函数


写入定义过的类的字节码

bcompiler_read
bcompiler_write_constant
bcompiler 函数
PHP Manual

bcompiler_write_class

(PECL bcompiler >= 0.4)

bcompiler_write_class — 写入定义过的类的字节码

说明

bool bcompiler_write_class ( resource $filehandle , string $className [, string $extends ] )

从 PHP 读取已存在的类的字节码，并把它们写入打开的文件句柄中。

参数

filehandle

fopen() 返回的文件句柄。

className

字符串的类名。

extends

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 bcompiler_write_class() 例子

<?php
$fh = fopen("/tmp/example","w");
bcompiler_write_header($fh);
bcompiler_write_class($fh,"DB");
// 你必须先于 DB_mysql 写入 DB_common，因为DB_mysql extends DB_common。
bcompiler_write_class($fh,"DB_common");
bcompiler_write_class($fh,"DB_mysql");
bcompiler_write_footer($fh);
fclose($fh);

?>

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Note:

该函数不会执行依赖检查，所以确保你写入类的顺序，防止在加载的时候导致 undefined class 错误。

参见

  • bcompiler_write_header() - 写入 bcompiler 头
  • bcompiler_write_footer() - 写入单个字符 \x00 用于标识编译数据的结尾

bcompiler_read
bcompiler_write_constant
bcompiler 函数


写入定义过的常量的字节码

bcompiler_write_class
bcompiler_write_exe_footer
bcompiler 函数
PHP Manual

bcompiler_write_constant

(PECL bcompiler >= 0.5)

bcompiler_write_constant — 写入定义过的常量的字节码

说明

bool bcompiler_write_constant ( resource $filehandle , string $constantName )

从 PHP 读取存在的常量的字节码并把它们写入打开的文件句柄中。

参数

filehandle

一个由 fopen() 打开并返回的文件句柄。

constantName

定义过的常量名，是一个字符串。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 bcompiler_write_constant() 例子

<?php
define("MODULE_MAX", 30);

$fh = fopen("/tmp/example","w");
bcompiler_write_header($fh);
bcompiler_write_constant($fh,"MODULE_MAX");
bcompiler_write_footer($fh);
fclose($fh);

?>

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • bcompiler_write_header() - 写入 bcompiler 头
  • bcompiler_write_footer() - 写入单个字符 \x00 用于标识编译数据的结尾

bcompiler_write_class
bcompiler_write_exe_footer
bcompiler 函数


写入开始位置以及 exe 类型文件的结尾信号

bcompiler_write_constant
bcompiler_write_file
bcompiler 函数
PHP Manual

bcompiler_write_exe_footer

(PECL bcompiler >= 0.4)

bcompiler_write_exe_footer — 写入开始位置以及 exe 类型文件的结尾信号

说明

bool bcompiler_write_exe_footer ( resource $filehandle , int $startpos )

一个 EXE（或可自执行）文件由 3 部分组成：

  • The stub （可执行代码，例如一个编译过的 c 程序） 加载了 PHP 解释器、bcompiler 扩展、储存的字节码并初始化调用指定函数（例如 main） 或类的方法（例如 main::main）。
  • 字节码（仅在那时未压缩）
  • bcompiler 的 EXE 尾部

为了得到适合的 stub 你可以编译位于 bcompiler CVS examples/embed 目录里 基于 php_embed 的 stub phpe.c。

参数

filehandle

fopen()返回的一个文件句柄。

startpos

字节码在文件中开始的位置，可以通过 ftell() 获取。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 bcompiler_write_exe_footer() 例子

<?php

/* 创建输出的文件（example.exe） */
$fh = fopen("example.exe", "w");

/* 1) 写入一个 stub （phpe.exe） */
$size = filesize("phpe.exe");
$fr = fopen("phpe.exe", "r");
fwrite($fh, fread($fr, $size), $size);
$startpos = ftell($fh);

/* 2) 写入字节码 */
bcompiler_write_header($fh);
bcompiler_write_class($fh, "myclass");
bcompiler_write_function($fh, "main");
bcompiler_write_footer($fh);

/* 3) 写入 EXE 尾部 */
bcompiler_write_exe_footer($fh, $startpos);

/* 关闭输出的文件 */
fclose($fh);
?>

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • bcompiler_write_header() - 写入 bcompiler 头
  • bcompiler_write_class() - 写入定义过的类的字节码
  • bcompiler_write_footer() - 写入单个字符 \x00 用于标识编译数据的结尾

bcompiler_write_constant
bcompiler_write_file
bcompiler 函数


写入 PHP 源码文件的字节码

bcompiler_write_exe_footer
bcompiler_write_footer
bcompiler 函数
PHP Manual

bcompiler_write_file

(PECL bcompiler >= 0.6)

bcompiler_write_file — 写入 PHP 源码文件的字节码

说明

bool bcompiler_write_file ( resource $filehandle , string $filename )

这个函数将指定的源码编译成字节码，并将它们写入打开的文件句柄中。

参数

filehandle

fopen() 返回的一个文件句柄。

filename

源码文件路径，字符串的形式。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 bcompiler_write_file() 例子

<?php
$fh = fopen("example.phb", "w");
bcompiler_write_header($fh);
bcompiler_write_file($fh, "example.php");
bcompiler_write_footer($fh);
fclose($fh);
/* 以下是相等的：
include "example.php";
   和
include "example.phb";
*/
?>

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • bcompiler_write_header() - 写入 bcompiler 头
  • bcompiler_write_footer() - 写入单个字符 \x00 用于标识编译数据的结尾

bcompiler_write_exe_footer
bcompiler_write_footer
bcompiler 函数


写入单个字符 \x00 用于标识编译数据的结尾

bcompiler_write_file
bcompiler_write_function
bcompiler 函数
PHP Manual

bcompiler_write_footer

(PECL bcompiler >= 0.4)

bcompiler_write_footer — 写入单个字符 \x00 用于标识编译数据的结尾

说明

bool bcompiler_write_footer ( resource $filehandle )

写入单个字符 \x00 用于标识编译数据的结尾。

参数

filehandle

fopen() 打开的一个文件句柄。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 bcompiler_write_footer() 例子

<?php
$fh = fopen("/tmp/example","w");
bcompiler_write_header($fh);
bcompiler_write_class($fh,"DB");
bcompiler_write_class($fh,"DB_common");
bcompiler_write_footer($fh);
fclose($fh);

?>

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • bcompiler_write_header() - 写入 bcompiler 头

bcompiler_write_file
bcompiler_write_function
bcompiler 函数


以字节码写入定义过的函数

bcompiler_write_footer
bcompiler_write_functions_from_file
bcompiler 函数
PHP Manual

bcompiler_write_function

(PECL bcompiler >= 0.5)

bcompiler_write_function — 以字节码写入定义过的函数

说明

bool bcompiler_write_function ( resource $filehandle , string $functionName )

从 PHP 读取现存函数的字节码，并把它们写入打开的文件句柄中。顺序并不重要。 （例如假设函数 b 用到了函数 a，你以下面的例子那样编译它们，将会工作得很好）

参数

filehandle

fopen() 返回的一个文件句柄。

functionName

函数名，字符串的形式。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 bcompiler_write_function() 例子

<?php
$fh = fopen("/tmp/example","w");
bcompiler_write_header($fh);
bcompiler_write_function($fh,"my_function_a");
bcompiler_write_function($fh,"my_function_b");
bcompiler_write_footer($fh);
fclose($fh);

?>

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • bcompiler_write_header() - 写入 bcompiler 头
  • bcompiler_write_footer() - 写入单个字符 \x00 用于标识编译数据的结尾

bcompiler_write_footer
bcompiler_write_functions_from_file
bcompiler 函数


以字节码写入一个文件中定义过的所以函数

bcompiler_write_function
bcompiler_write_header
bcompiler 函数
PHP Manual

bcompiler_write_functions_from_file

(PECL bcompiler >= 0.5)

bcompiler_write_functions_from_file — 以字节码写入一个文件中定义过的所以函数

说明

bool bcompiler_write_functions_from_file ( resource $filehandle , string $fileName )

从给定的文件中搜索定义过的所有函数，并把它们对应的字节码写入打开的文件句柄中。

参数

filehandle

fopen() 打开并返回的一个文件句柄。

fileName

要编译的文件。你总是必须 inculde 或 require 这个想要编译的文件。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 bcompiler_write_functions_from_file() 例子

<?php
require('module.php');

$fh = fopen("/tmp/example","w");
bcompiler_write_header($fh);
bcompiler_write_functions_from_file($fh,'module.php');
bcompiler_write_footer($fh);
fclose($fh);

?>

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • bcompiler_write_header() - 写入 bcompiler 头
  • bcompiler_write_footer() - 写入单个字符 \x00 用于标识编译数据的结尾

bcompiler_write_function
bcompiler_write_header
bcompiler 函数


写入 bcompiler 头

bcompiler_write_functions_from_file
bcompiler_write_included_filename
bcompiler 函数
PHP Manual

bcompiler_write_header

(PECL bcompiler >= 0.3)

bcompiler_write_header — 写入 bcompiler 头

说明

bool bcompiler_write_header ( resource $filehandle [, string $write_ver ] )

写入一个 bcompiler 文件的头部。

参数

filehandle

fopen() 返回的一个文件句柄。

write_ver

能够用以前使用的格式写入字节码，这样就可以在较旧的 bcompiler 版本中使用。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 bcompiler_write_header() 例子

<?php
$fh = fopen("/tmp/example","w");
bcompiler_write_header($fh);
bcompiler_write_class($fh,"DB");
bcompiler_write_footer($fh);
fclose($fh);

?>

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • bcompiler_write_footer() - 写入单个字符 \x00 用于标识编译数据的结尾

bcompiler_write_functions_from_file
bcompiler_write_included_filename
bcompiler 函数


写入一个包含的文件的字节码

bcompiler_write_header
BLENC
bcompiler 函数
PHP Manual

bcompiler_write_included_filename

(PECL bcompiler >= 0.5)

bcompiler_write_included_filename — 写入一个包含的文件的字节码

说明

bool bcompiler_write_included_filename ( resource $filehandle , string $filename )
Warning

本函数还未编写文档，仅有参数列表。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

bcompiler_write_header
BLENC
bcompiler 函数


Blenc - BLowfish ENCoder for PHP source scripts

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Blenc 函数
    • blenc_encrypt — Encrypt a PHP script with BLENC.
bcompiler_write_included_filename
简介
影响 PHP 行为的扩展


简介

Warning

此扩展是实验性 的。 此扩展的表象，包括其函数名称以及其他此扩展的相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本扩展风险自担 。

BLENC is a PHP source script protector that:

  • Encodes your source code with the blowfish algorithm.
  • Allows transparent decryption and execution of PHP scripts previously encoded with BLENC.

BLENC is an extension which hooks into the Zend Engine, allowing for transparent encryption and execution of PHP scripts using the blowfish algorithm. It is not designed for complete security (it is still possible to disassemble the script into op codes using a package such as XDebug), however it does keep people out of your code and make reverse engineering difficult.

In order to protect your PHP script you must encrypt each script with blenc_encrypt() function. After you can include the encoded script like the example below:

<?php

/* PHP script encoded with BLENC */
$my_source_encoded = 'my_source_encoded.phpe';

include($my_source_encoded);
?>

BLENC supports also expiration time for the module. So, if you want deploy your source code with a expiration time, you have to compile the extension modifying the header file related to encryption and expiration time. Please see configuration section for further informations.

BLENC
安装／配置
BLENC


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
BLENC


需求

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/blenc

It's strongly recommended to install BLENC from sources without 'pecl' command. In this way you can:

  • Specify your personal encryption key used to create redistributable keys. Your sourcecode will be more difficult to decrypt also for users that can read your key_file on webserver.
  • Specify a expiration date for the BLENC module. With expiration date you can decide that BLENC module on target system will work until a date. After that BLENC will not decrypt any files.
All these configuration options are stored into header file: blenc_protect.h

Please read the content of blenc_protect.h in sources of BLENC to know how set these hardcoded options.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Blenc 配置选项
名字 | 默认 | 可修改范围 | 更新日志
blenc.key_file | /usr/local/etc/blenckeys | PHP_INI_ALL |

这是配置指令的简短说明。

blenc.key_file string

It's the location where BLENC can find the file containing a list of available decryption keys. This file must be readable by webserver.

安装
资源类型
安装／配置


资源类型

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

BLENC_EXT_VERSION (string)

资源类型
Blenc 函数
BLENC


Blenc 函数

Table of Contents

  • blenc_encrypt — Encrypt a PHP script with BLENC.
预定义常量
blenc_encrypt
BLENC


Encrypt a PHP script with BLENC.

Blenc 函数
错误处理
Blenc 函数
PHP Manual

blenc_encrypt

(PECL blenc >= 5)

blenc_encrypt — Encrypt a PHP script with BLENC.

说明

string blenc_encrypt ( string $plaintext , string $encodedfile [, string $encryption_key ] )

Encrypt the plaintext content and write it into encodedfile

参数

plaintext

A source code to encrypt. Does not need to contain opening/closing PHP tags

encodedfile

The filename where BLENC will save the encoded source.

encryption_key

The key that BLENC will use to encrypt plaintext content. If not given BLENC will create a valid key.

返回值

BLENC will return the redistributable key that must be saved into key_file: the path of key_file is specified at runtime with the option blenc.key_file

范例

Example #1 blenc_encrypt() example

<?php

/* read the PHP source code */
$source_code = file_get_contents("my_source_to_protect.php");

/* create the encrypted version */
$redistributable_key = blenc_encrypt($source_code, "my_source_encoded.php");

/* read which is the key_file */
$key_file = ini_get('blenc.key_file');

/* save the redistributable key */
file_put_contents($key_file, $redistributable_key, FILE_APPEND);
?>

Blenc 函数
错误处理
Blenc 函数


错误处理和日志记录

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • 错误处理 函数
    • debug_backtrace — 产生一条回溯跟踪(backtrace)
    • debug_print_backtrace — 打印一条回溯。
    • error_clear_last — Clear the most recent error
    • error_get_last — 获取最后发生的错误
    • error_log — 发送错误信息到某个地方
    • error_reporting — 设置应该报告何种 PHP 错误
    • restore_error_handler — 还原之前的错误处理函数
    • restore_exception_handler — 恢复之前定义过的异常处理函数。
    • set_error_handler — 设置一个用户定义的错误处理函数
    • set_exception_handler — 设置一个用户定义的异常处理函数。
    • trigger_error — 产生一个用户级别的 error/warning/notice 信息
    • user_error — trigger_error 的别名
blenc_encrypt
简介
影响 PHP 行为的扩展


简介

PHP提供了错误处理和日志记录的功能. 这些函数允许你定义自己的错误处理规则，以及修改错误记录的方式. 这样，你就可以根据自己的需要，来更改和加强错误输出信息以满足实际需要.

通过日志记录功能，你可以将信息直接发送到其他日志服务器，或者发送到指定的电子邮箱（或者通过邮件网关发送），或者发送到操作系统日志等，从而可以有选择的记录和监视你的应用程序和网站的最重要的部分。

错误报告功能允许你自定义错误反馈的级别和类型，可以是简单的提示信息或者使用自定义的函数进行处理并返回信息.

错误处理
安装／配置
错误处理


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
错误处理


安装

使用这些函数不需要安装，它们是 PHP 核心的一部分。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

错误和日志记录配置选项
名字 | 默认 | 可修改范围 | 更新日志
error_reporting | NULL | PHP_INI_ALL |
display_errors | "1" | PHP_INI_ALL |
display_startup_errors | "0" | PHP_INI_ALL |
log_errors | "0" | PHP_INI_ALL |
log_errors_max_len | "1024" | PHP_INI_ALL | Available since PHP 4.3.0.
ignore_repeated_errors | "0" | PHP_INI_ALL | Available since PHP 4.3.0.
ignore_repeated_source | "0" | PHP_INI_ALL | Available since PHP 4.3.0.
report_memleaks | "1" | PHP_INI_ALL | Available since PHP 4.3.0.
track_errors | "0" | PHP_INI_ALL |
html_errors | "1" | PHP_INI_ALL | PHP_INI_SYSTEM in PHP <= 4.2.3.
xmlrpc_errors | "0" | PHP_INI_SYSTEM | Available since PHP 4.1.0.
xmlrpc_error_number | "0" | PHP_INI_ALL | Available since PHP 4.1.0.
docref_root | "" | PHP_INI_ALL | Available since PHP 4.3.0.
docref_ext | "" | PHP_INI_ALL | Available since PHP 4.3.2.
error_prepend_string | NULL | PHP_INI_ALL |
error_append_string | NULL | PHP_INI_ALL |
error_log | NULL | PHP_INI_ALL |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

error_reporting integer

设置错误报告的级别。该参数可以是一个任意的表示二进制位字段的整数，或者常数名称。错误级别和常数是在 预定义常量定义的，在 php.ini 之中也有专门的说明。在程序运行时，还可以通过 error_reporting() 函数进行设置。请查看 display_errors 了解详情。

在PHP 4和PHP 5之中，其默认值为 E_ALL & ~E_NOTICE。 该设置表示除了 E_NOTICE 其他都显示的错误级别。在开发过程中很有必要显示它们。

Note:

在开发阶段启用 E_NOTICE 会有一些好处。出于调试的目的：通知信息会对代码中可能出现的bug给出警告。例如，使用未预先分配和定义的值，就会给出警告。它对于查找拼写错误非常有用，并且可以节省调试的时间。通知信息也会警告你使用更好的代码风格。例如，$arr[item] 最好写成 $arr['item'] ，因为 PHP 会试图将 "item" 当成一个常量。如果它不是一个常量，PHP才会把它当做数组的字符串索引。

Note:

在PHP 5之中，提供了一个新的错误级别 E_STRICT。 因为 E_STRICT 并不包含在 E_ALL 之中，你必须明确启用才能显示这个类别的错误信息。在开发阶段启用 E_STRICT 会有一些好处。严格的信息将帮助你使用最新和最好的建议的方法来编写代码，例如它会警告你使用了将被废弃的函数。

Note: PHP外的PHP常量

在 PHP 以外使用PHP的常量是没有意义的，例如在 httpd.conf 之中， 你需要使用常量对应的 integer 值来取代。因为随着时间的推移和PHP的发展，会有更多的错误级别将被添加，因此错误级别的最大值(为 E_ALL)可能会改变 。因此在使用 E_ALL 对应整数值的地方，应该考虑使用较大的数值来涵盖当前和将来需要使用的二进制位字段，例如数值 2147483647 (将包含所有错误，而不仅仅是 E_ALL).

display_errors string

该选项设置是否将错误信息作为输出的一部分显示到屏幕，或者对用户隐藏而不显示。

设置 "stderr" 表示发送到 stderr 而不是 stdout。 "stderr"从 PHP 5.2.4 开始可用。在以前的版本中，该配置值的类型为 boolean.

Note:

这是一个辅助开发的功能，建议永远不要在生产系统中使用 (例如系统被连接到互联网对外提供服务)。

Note:

尽管 display_errors 也可以在运行时设置 (使用 ini_set())， 但是脚本出现致命错误时任何运行时的设置都是无效的。 因为在这种情况下预期运行的操作不会被执行。

display_startup_errors boolean

即使 display_errors 设置为开启, PHP 启动过程中的错误信息也不会被显示。强烈建议除了调试目的以外，将 display_startup_errors 设置为关闭。

log_errors boolean

设置是否将脚本运行的错误信息记录到服务器错误日志或者error_log之中。注意，这是与服务器相关的特定配置项。

Note:

在生产系统中，强烈建议你使用错误日志记录web站点上显示的错误信息。

log_errors_max_len integer

设置 log_errors 的最大字节数. 在 error_log 会添加有关错误源的信息。默认值为1024，如果设置为0表示不限长度。该长度设置对记录的错误，显示的错误，以及 $php_errormsg都会有限制作用。

当使用 integer 时, 其值以字节来衡量。还可以使用在FAQ中描述的速记符。
ignore_repeated_errors boolean

不记录重复的信息。重复的错误必须出现在同一个文件中的同一行代码上，除非 ignore_repeated_source 设置为true。

ignore_repeated_source boolean

忽略重复消息时，也忽略消息的来源。当该设置开启时，重复信息将不会记录它是由不同的文件还是不同的源代码行产生的。

report_memleaks boolean

如果这个参数设置为Off，则内存泄露信息不会显示 (在 stdout 或者日志中)。This report will be send to stderr on Posix platforms. On Windows, it will be send to the debugger using OutputDebugString(), and can be viewed with tools like » DbgView。这只对调试编译有效，而且需要 error_reporting 包含了 E_WARNING 才会起作用

track_errors boolean

如果开启，最后的一个错误将永远存在于变量 $php_errormsg 中。

html_errors boolean

在错误信息中关闭HTML标签。这种新的HTML格式的错误信息是可以点击，它引导用户前往描述该错误或者导致该错误发生的函数的参考信息页面。 这些参考与 docref_root 和 docref_ext 的设置有关。

xmlrpc_errors boolean

关闭正常的错误报告，并将错误的格式设置为XML-RPC错误信息的格式。

xmlrpc_error_number integer

用作 XML-RPC faultCode 元素的值。

docref_root string

新的错误信息格式包含了对应的参考页面，该页面对错误进行具体描述，或者描述了导致该错误发生的函数。为了提供手册的页面，你可以在PHP官方站点下载对应语言的手册，并在ini中设置网址到本地对应的地址。如果你的本地手册拷贝可以使用"/manual/" 访问，你就可以简单的设置 docref_root=/manual/。另外你还需要设置 docref_ext 匹配你本地文件的后缀名 docref_ext=.html。当然也可以设置一个外部的参考地址。例如你可以设置 docref_root=http://manual/en/ 或者 docref_root="http://landonize.it/?how=url&theme=classic&filter=Landon &url=http%3A%2F%2Fwww.php.net%2F"

通常需要在 docref_root 后面以 "/"结尾， 但是在以上的第二种示例情况中不必这么设置。

Note:

因为这么做可以快速定位和查看到函数的说明，所以它对你的开发会非常有用。建议永远不要再生产系统中使用 (例如系统被连接到互联网对外提供服务)。

docref_ext string

参见 docref_root.

Note:

docref_ext的值必须以 "." 开头.

error_prepend_string string

错误信息之前输出的内容。

error_append_string string

错误信息之后输出的内容。

error_log string

设置脚本错误将被记录到的文件。该文件必须是web服务器用户可写的。如果特殊值 syslog 被设置，则将错误信息发送到系统日志记录器。在Unix以及类似系统上，使用的是 syslog(3) ，而在 Windows NT 类系统上则为事件日志。Windows 95上不支持系统日志记录。参见： syslog(). 如果该配置没有设置，则错误信息会被发送到 SAPI 错误记录器。例如，出现在Apache的错误日志中，或者在CLI中发送到 stderr。

安装
资源类型
安装／配置


预定义常量

下列常量作为 PHP 核心的一部分总是可用的。

Note: 你可以使用它们在 php.ini 中的常量名称; 但是在PHP之外，例如在 httpd.conf 之中, 你必须使用二进制位掩码来代替。

错误和日志记录
值 | 常量 | 说明 | 备注
1 | E_ERROR (integer) | 致命的运行时错误。这类错误一般是不可恢复的情况，例如内存分配导致的问题。后果是导致脚本终止不再继续运行。 |
2 | E_WARNING (integer) | 运行时警告 (非致命错误)。仅给出提示信息，但是脚本不会终止运行。 |
4 | E_PARSE (integer) | 编译时语法解析错误。解析错误仅仅由分析器产生。 |
8 | E_NOTICE (integer) | 运行时通知。表示脚本遇到可能会表现为错误的情况，但是在可以正常运行的脚本里面也可能会有类似的通知。 |
16 | E_CORE_ERROR (integer) | 在PHP初始化启动过程中发生的致命错误。该错误类似 E_ERROR，但是是由PHP引擎核心产生的。 | since PHP 4
32 | E_CORE_WARNING (integer) | PHP初始化启动过程中发生的警告 (非致命错误) 。类似 E_WARNING，但是是由PHP引擎核心产生的。 | since PHP 4
64 | E_COMPILE_ERROR (integer) | 致命编译时错误。类似E_ERROR, 但是是由Zend脚本引擎产生的。 | since PHP 4
128 | E_COMPILE_WARNING (integer) | 编译时警告 (非致命错误)。类似 E_WARNING，但是是由Zend脚本引擎产生的。 | since PHP 4
256 | E_USER_ERROR (integer) | 用户产生的错误信息。类似 E_ERROR, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。 | since PHP 4
512 | E_USER_WARNING (integer) | 用户产生的警告信息。类似 E_WARNING, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。 | since PHP 4
1024 | E_USER_NOTICE (integer) | 用户产生的通知信息。类似 E_NOTICE, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。 | since PHP 4
2048 | E_STRICT (integer) | 启用 PHP 对代码的修改建议，以确保代码具有最佳的互操作性和向前兼容性。 | since PHP 5
4096 | E_RECOVERABLE_ERROR (integer) | 可被捕捉的致命错误。 它表示发生了一个可能非常危险的错误，但是还没有导致PHP引擎处于不稳定的状态。 如果该错误没有被用户自定义句柄捕获 (参见 set_error_handler())，将成为一个 E_ERROR 从而脚本会终止运行。 | since PHP 5.2.0
8192 | E_DEPRECATED (integer) | 运行时通知。启用后将会对在未来版本中可能无法正常工作的代码给出警告。 | since PHP 5.3.0
16384 | E_USER_DEPRECATED (integer) | 用户产少的警告信息。 类似 E_DEPRECATED, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。 | since PHP 5.3.0
30719 | E_ALL (integer) | E_STRICT出外的所有错误和警告信息。 | 30719 in PHP 5.3.x, 6143 in PHP 5.2.x, 2047 previously

上面的值（数值或者符号）用于建立一个二进制位掩码，来制定要报告的错误信息。可以使用按位运算符来组合这些值或者屏蔽某些类型的错误。请注意，在 php.ini 之中，只有'|', '~', '!', '^' 和 '&' 会正确解析。

资源类型
范例
错误处理


范例

下面我们可以看到错误处理功能在 PHP 中的使用的示例。 我们定义错误处理函数，记录错误信息到一个文件中 （使用以 XML 格式） ，并在发生严重逻辑错误时，给开发人员发送电子邮件。

Example #1 在脚本中使用错误句柄

<?php
// 我们将要定义自己的错误处理
error_reporting(0);

// 用户自定义错误处理函数
function userErrorHandler($errno, $errmsg, $filename, $linenum, $vars)
{
    // 错误发生的时间
    $dt = date("Y-m-d H:i:s (T)");

    // 定义错误字符串的关联数组
    // 在这里我们只考虑
    // E_WARNING, E_NOTICE, E_USER_ERROR,
    // E_USER_WARNING 和 E_USER_NOTICE
    $errortype = array (
                E_ERROR              => 'Error',
                E_WARNING            => 'Warning',
                E_PARSE              => 'Parsing Error',
                E_NOTICE             => 'Notice',
                E_CORE_ERROR         => 'Core Error',
                E_CORE_WARNING       => 'Core Warning',
                E_COMPILE_ERROR      => 'Compile Error',
                E_COMPILE_WARNING    => 'Compile Warning',
                E_USER_ERROR         => 'User Error',
                E_USER_WARNING       => 'User Warning',
                E_USER_NOTICE        => 'User Notice',
                E_STRICT             => 'Runtime Notice',
                E_RECOVERABLE_ERROR  => 'Catchable Fatal Error'
                );
    // 设置要保存变量跟踪信息的错误类别
    $user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE);

    $err = "<errorentry>\n";
    $err .= "\t<datetime>" . $dt . "</datetime>\n";
    $err .= "\t<errornum>" . $errno . "</errornum>\n";
    $err .= "\t<errortype>" . $errortype[$errno] . "</errortype>\n";
    $err .= "\t<errormsg>" . $errmsg . "</errormsg>\n";
    $err .= "\t<scriptname>" . $filename . "</scriptname>\n";
    $err .= "\t<scriptlinenum>" . $linenum . "</scriptlinenum>\n";

    if (in_array($errno, $user_errors)) {
        $err .= "\t<vartrace>" . wddx_serialize_value($vars, "Variables") . "</vartrace>\n";
    }
    $err .= "</errorentry>\n\n";

    // for testing
    // echo $err;

    // 记录错误信息到错误日志，并在发生关键用户错误时发送电子邮件
    error_log($err, 3, "/usr/local/php4/error.log");
    if ($errno == E_USER_ERROR) {
        mail("phpdev@example.com", "Critical User Error", $err);
    }
}

function distance($vect1, $vect2)
{
    if (!is_array($vect1) || !is_array($vect2)) {
        trigger_error("Incorrect parameters, arrays expected", E_USER_ERROR);
        return NULL;
    }

    if (count($vect1) != count($vect2)) {
        trigger_error("Vectors need to be of the same size", E_USER_ERROR);
        return NULL;
    }

    for ($i=0; $i<count($vect1); $i++) {
        $c1 = $vect1[$i]; $c2 = $vect2[$i];
        $d = 0.0;
        if (!is_numeric($c1)) {
            trigger_error("Coordinate $i in vector 1 is not a number, using zero",
                            E_USER_WARNING);
            $c1 = 0.0;
        }
        if (!is_numeric($c2)) {
            trigger_error("Coordinate $i in vector 2 is not a number, using zero",
                            E_USER_WARNING);
            $c2 = 0.0;
        }
        $d += $c2*$c2 - $c1*$c1;
    }
    return sqrt($d);
}

$old_error_handler = set_error_handler("userErrorHandler");

// 未定义的常量，将产生一个警告
$t = I_AM_NOT_DEFINED;

// 定义一些 "载体"
$a = array(2, 3, "foo");
$b = array(5.5, 4.3, -1.6);
$c = array(1, -3);

// 引发一个用户错误
$t1 = distance($c, $b) . "\n";

// 再次引发一个用户错误
$t2 = distance($b, "i am not an array") . "\n";

// 引发一个警告
$t3 = distance($a, $b) . "\n";

?>

预定义常量
错误处理 函数
错误处理


错误处理 函数

参见

参见 syslog().

Table of Contents

  • debug_backtrace — 产生一条回溯跟踪(backtrace)
  • debug_print_backtrace — 打印一条回溯。
  • error_clear_last — Clear the most recent error
  • error_get_last — 获取最后发生的错误
  • error_log — 发送错误信息到某个地方
  • error_reporting — 设置应该报告何种 PHP 错误
  • restore_error_handler — 还原之前的错误处理函数
  • restore_exception_handler — 恢复之前定义过的异常处理函数。
  • set_error_handler — 设置一个用户定义的错误处理函数
  • set_exception_handler — 设置一个用户定义的异常处理函数。
  • trigger_error — 产生一个用户级别的 error/warning/notice 信息
  • user_error — trigger_error 的别名
范例
debug_backtrace
错误处理


产生一条回溯跟踪(backtrace)

错误处理 函数
debug_print_backtrace
错误处理 函数
PHP Manual

debug_backtrace

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

debug_backtrace — 产生一条回溯跟踪(backtrace)

说明

array debug_backtrace ([ int $options = DEBUG_BACKTRACE_PROVIDE_OBJECT [, int $limit = 0 ]] )

debug_backtrace() 产生一条 PHP 的回溯跟踪(backtrace)。

参数

options

截至 5.3.6，这个参数是以下选项的位掩码：

debug_backtrace() 选项
DEBUG_BACKTRACE_PROVIDE_OBJECT | 是否填充 "object" 的索引。
DEBUG_BACKTRACE_IGNORE_ARGS | 是否忽略 "args" 的索引，包括所有的 function/method 的参数，能够节省内存开销。
在 5.3.6 之前，仅仅能使用的值是 TRUE 或者 FALSE，分别等于是否设置 DEBUG_BACKTRACE_PROVIDE_OBJECT 选项。

limit

截至 5.4.0，这个参数能够用于限制返回堆栈帧的数量。 默认为 (limit=0) ，返回所有的堆栈帧。

返回值

返回一个包含众多关联数组的 array。 以为为有可能返回的元素：

有可能从 debug_backtrace() 返回的元素
名字 | 类型 | 说明
function | string | 当前的函数名，参见： __FUNCTION__。
line | integer | 当前的行号。参见： __LINE__。
file | string | 当前的文件名。参见： __FILE__。
class | string | 当前 class 的名称。参见 __CLASS__
object | object | 当前的 object。
type | string | 当前调用的类型。如果是一个方法，会返回 "->"。如果是一个静态方法，会返回 "::"。 如果是一个函数调用，则返回空。
args | array | 如果在一个函数里，这会列出函数的参数。 如果是在一个被包含的文件里，会列出包含的文件名。

更新日志

版本 | 说明
5.4.0 | 添加了可选的参数 limit。
5.3.6 | 参数 provide_object 改成 options，并且增加了可选参数 DEBUG_BACKTRACE_IGNORE_ARGS。
5.2.5 | 添加了可选参数 provide_object。
5.1.1 | 添加了当前的 object 为可能返回的元素。

范例

Example #1 debug_backtrace() 范例

<?php
// filename: /tmp/a.php

function a_test($str)
{
    echo "\nHi: $str";
    var_dump(debug_backtrace());
}

a_test('friend');
?>

<?php
// filename: /tmp/b.php
include_once '/tmp/a.php';
?>

执行 /tmp/b.php 返回的结果类似于以下：

Hi: friend
array(2) {
[0]=>
array(4) {
    ["file"] => string(10) "/tmp/a.php"
    ["line"] => int(10)
    ["function"] => string(6) "a_test"
    ["args"]=>
    array(1) {
      [0] => &string(6) "friend"
    }
}
[1]=>
array(4) {
    ["file"] => string(10) "/tmp/b.php"
    ["line"] => int(2)
    ["args"] =>
    array(1) {
      [0] => string(10) "/tmp/a.php"
    }
    ["function"] => string(12) "include_once"
  }
}

参见

  • trigger_error() - 产生一个用户级别的 error/warning/notice 信息
  • debug_print_backtrace() - 打印一条回溯。

错误处理 函数
debug_print_backtrace
错误处理 函数


打印一条回溯。

debug_backtrace
error_clear_last
错误处理 函数
PHP Manual

debug_print_backtrace

(PHP 5, PHP 7)

debug_print_backtrace — 打印一条回溯。

说明

void debug_print_backtrace ([ int $options = 0 [, int $limit = 0 ]] )

debug_print_backtrace() 打印了一条 PHP 回溯。它打印了函数调用、被 included/required 的文件和 eval() 的代码。

参数

options

从 5.3.6 开始，这个参数是以下选项的位掩码：

debug_print_backtrace() 选项
DEBUG_BACKTRACE_IGNORE_ARGS 是否忽略 "args" 的索引，包括所有的 function/method 的参数，能够节省内存开销。

limit

从 5.4.0 开始，这个参数能够用于限制返回堆栈帧的数量。 默认为 (limit=0) ，返回所有的堆栈帧。

返回值

没有返回值。

更新日志

版本 | 说明
5.4.0 | 添加了可选的参数 limit。
5.3.6 | 添加了可选的参数 options。

范例

Example #1 debug_print_backtrace() 范例

<?php
// include.php file

function a() {
    b();
}

function b() {
    c();
}

function c(){
    debug_print_backtrace();
}

a();

?>
<?php
// 文件 test.php
// 这是你应该运行的文件

include 'include.php';
?>

以上例程的输出类似于：

#0  c() called at [/tmp/include.php:10]
#1  b() called at [/tmp/include.php:6]
#2  a() called at [/tmp/include.php:17]
#3  include(/tmp/include.php) called at [/tmp/test.php:3]

参见

  • debug_backtrace() - 产生一条回溯跟踪(backtrace)

debug_backtrace
error_clear_last
错误处理 函数


Clear the most recent error

debug_print_backtrace
error_get_last
错误处理 函数
PHP Manual

error_clear_last

(PHP 7)

error_clear_last — Clear the most recent error

说明

void error_clear_last ( void )

返回值

Clears the most recent errors, making it unable to be retrieved with error_get_last().

范例

Example #1 An error_clear_last() example

<?php
var_dump(error_get_last());
error_clear_last();
var_dump(error_get_last());

@$a = $b;

var_dump(error_get_last());
error_clear_last();
var_dump(error_get_last());
?>

以上例程的输出类似于：

NULL
NULL
array(4) {
  ["type"]=>
  int(8)
  ["message"]=>
  string(21) "Undefined variable: b"
  ["file"]=>
  string(9) "%s"
  ["line"]=>
  int(6)
}
NULL

参见

  • Error constants

debug_print_backtrace
error_get_last
错误处理 函数


获取最后发生的错误

error_clear_last
error_log
错误处理 函数
PHP Manual

error_get_last

(PHP 5 >= 5.2.0, PHP 7)

error_get_last — 获取最后发生的错误

说明

array error_get_last ( void )

获取关于最后一个发生的错误的信息。

返回值

返回了一个关联数组，描述了最后错误的信息，以该错误的 "type"、 "message"、"file" 和 "line" 为数组的键。 如果该错误由 PHP 内置函数导致的，"message"会以该函数名开头。 如果还没有错误则返回 NULL。

范例

Example #1 An error_get_last() 范例

<?php
echo $a;
print_r(error_get_last());
?>

以上例程的输出类似于：

Array
(
    [type] => 8
    [message] => Undefined variable: a
    [file] => C:\WWW\index.php
    [line] => 2
)

参见

  • Error constants
  • Variable $php_errormsg
  • Directive display_errors
  • Directive html_errors
  • Directive xmlrpc_errors

error_clear_last
error_log
错误处理 函数


发送错误信息到某个地方

error_get_last
error_reporting
错误处理 函数
PHP Manual

error_log

(PHP 4, PHP 5, PHP 7)

error_log — 发送错误信息到某个地方

说明

bool error_log ( string $message [, int $message_type = 0 [, string $destination [, string $extra_headers ]]] )

把错误信息发送到 web 服务器的错误日志，或者到一个文件里。

参数

message

应该被记录的错误信息。

message_type

设置错误应该发送到何处。可能的信息类型有以下几个：

error_log() 日志类型
0 | message 发送到 PHP 的系统日志，使用 操作系统的日志机制或者一个文件，取决于 error_log 指令设置了什么。 这是个默认的选项。
1 | message 发送到参数 destination 设置的邮件地址。 第四个参数 extra_headers 只有在这个类型里才会被用到。
2 | 不再是一个选项。
3 | message 被发送到位置为 destination 的文件里。 字符 message 不会默认被当做新的一行。
4 | message 直接发送到 SAPI 的日志处理程序中。

destination

目标。它的含义描述于以上，由 message_type 参数所决定。

extra_headers

额外的头。当 message_type 设置为 1 的时候使用。 该信息类型使用了 mail() 的同一个内置函数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.2.7 | 可能的值：4添加到了 message_type。

范例

Example #1 error_log() 范例

<?php
// 如果无法连接到数据库，发送通知到服务器日志
if (!Ora_Logon($username, $password)) {
    error_log("Oracle database not available!", 0);
}

// 如果用尽了 FOO，通过邮件通知管理员
if (!($foo = allocate_new_foo())) {
    error_log("Big trouble, we're all out of FOOs!", 1,
               "operator@example.com");
}

// 调用 error_log() 的另一种方式:
error_log("You messed up!", 3, "/var/tmp/my-errors.log");
?>

error_get_last
error_reporting
错误处理 函数


设置应该报告何种 PHP 错误

error_log
restore_error_handler
错误处理 函数
PHP Manual

error_reporting

(PHP 4, PHP 5, PHP 7)

error_reporting — 设置应该报告何种 PHP 错误

说明

int error_reporting ([ int $level ] )

error_reporting() 函数能够在运行时设置 error_reporting 指令。 PHP 有诸多错误级别，使用该函数可以设置在脚本运行时的级别。 如果没有设置可选参数 level， error_reporting() 仅会返回当前的错误报告级别。

参数

level

新的 error_reporting 级别。 可以是一个位掩码也可以是一个已命名的常量。 强烈建议使用已命名的常量，以确保兼容将来的版本。 由于错误级别的添加、整数取值范围的增加， 较久的基于整数的错误级别不会总是和预期的表现一致。

可用的错误级别常量及其实际含义描述在了 predefined constants 中。

返回值

返回旧的 error_reporting 级别，或者在 level 参数未给出时返回当前的级别。

更新日志

版本 | 说明
5.4.0 | E_STRICT 成为 E_ALL 的一部分
5.3.0 | 引入 E_DEPRECATED 和 E_USER_DEPRECATED。
5.2.0 | 引入 E_RECOVERABLE_ERROR。
5.0.0 | 引入 E_STRICT (但不包括在 E_ALL 之内)。

范例

Example #1 error_reporting() 范例

<?php

// 关闭所有PHP错误报告
error_reporting(0);

// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// 报告 E_NOTICE也挺好 (报告未初始化的变量
// 或者捕获变量名的错误拼写)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// 除了 E_NOTICE，报告其他所有错误
// 这是在 php.ini 里的默认设置
error_reporting(E_ALL ^ E_NOTICE);

// 报告所有 PHP 错误 (参见 changelog)
error_reporting(E_ALL);

// 报告所有 PHP 错误
error_reporting(-1);

// 和 error_reporting(E_ALL); 一样
ini_set('error_reporting', E_ALL);

?>

注释

Warning

虽然 error_reporting 增强了 包含 E_STRICT 错误的能力（反之亦然），但大多数 E_STRICT 的错误是在编译时被评估的， 所以不会在文件中被报告。

Tip

传入 -1 的值将尽可能显示所有错误， 甚至包括将来 PHP 可能加入的新的错误级别和常量。 至 PHP 5.4，常量 E_ALL 有同样的行为。

参见

  • display_errors 指令
  • html_errors 指令
  • xmlrpc_errors 指令
  • ini_set() - 为一个配置选项设置值

error_log
restore_error_handler
错误处理 函数


还原之前的错误处理函数

error_reporting
restore_exception_handler
错误处理 函数
PHP Manual

restore_error_handler

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

restore_error_handler — 还原之前的错误处理函数

说明

bool restore_error_handler ( void )

在使用 set_error_handler() 改变错误处理函数之后，此函数可以 用于还原之前的错误处理程序(可以是内置的或者也可以是用户所定义的函数)。

返回值

该函数总是返回 TRUE。

范例

Example #1 restore_error_handler() 范例

如果是 unserialize() 导致了一个错误，接下来 会恢复原来的错误处理函数。

<?php
function unserialize_handler($errno, $errstr)
{
    echo "Invalid serialized value.\n";
}

$serialized = 'foo';
set_error_handler('unserialize_handler');
$original = unserialize($serialized);
restore_error_handler();
?>

以上例程会输出：

Invalid serialized value.

注释

Note:

如果在 error_handler 函数中调用 restore_error_handler() 则会被忽略。

参见

  • error_reporting() - 设置应该报告何种 PHP 错误
  • set_error_handler() - 设置一个用户定义的错误处理函数
  • restore_exception_handler() - 恢复之前定义过的异常处理函数。
  • trigger_error() - 产生一个用户级别的 error/warning/notice 信息

error_reporting
restore_exception_handler
错误处理 函数


恢复之前定义过的异常处理函数。

restore_error_handler
set_error_handler
错误处理 函数
PHP Manual

restore_exception_handler

(PHP 5, PHP 7)

restore_exception_handler — 恢复之前定义过的异常处理函数。

说明

bool restore_exception_handler ( void )

在使用 set_exception_handler() 改变异常处理函数之后，此函数可以 用于还原之前的异常处理程序(可以是内置的或者也可以是用户所定义的函数)。

返回值

该函数总是返回 TRUE。

范例

Example #1 restore_exception_handler() 范例

<?php
    function exception_handler_1(Exception $e)
    {
        echo '[' . __FUNCTION__ . '] ' . $e->getMessage();
    }

    function exception_handler_2(Exception $e)
    {
        echo '[' . __FUNCTION__ . '] ' . $e->getMessage();
    }

    set_exception_handler('exception_handler_1');
    set_exception_handler('exception_handler_2');

    restore_exception_handler();

    throw new Exception('This triggers the first exception handler...');
?>

以上例程会输出：

[exception_handler_1] This triggers the first exception handler...

参见

  • set_exception_handler() - 设置一个用户定义的异常处理函数。
  • set_error_handler() - 设置一个用户定义的错误处理函数
  • restore_error_handler() - 还原之前的错误处理函数
  • error_reporting() - 设置应该报告何种 PHP 错误

restore_error_handler
set_error_handler
错误处理 函数


设置一个用户定义的错误处理函数

restore_exception_handler
set_exception_handler
错误处理 函数
PHP Manual

set_error_handler

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

set_error_handler — 设置一个用户定义的错误处理函数

说明

mixed set_error_handler ( callable $error_handler [, int $error_types = E_ALL | E_STRICT ] )

设置一个用户的函数(error_handler)来处理脚本中出现的错误。

本函数可以用你自己定义的方式来处理运行中的错误， 例如，在应用程序中严重错误发生时，或者在特定条件下触发了一个错误(使用 trigger_error())，你需要对数据/文件做清理回收。

重要的是要记住 error_types 里指定的错误类型都会绕过 PHP 标准错误处理程序， 除非回调函数返回了 FALSE。 error_reporting() 设置将不会起到作用而你的错误处理函数继续会被调用 —— 不过你仍然可以获取 error_reporting 的当前值，并做适当处理。 需要特别注意的是带 @ error-control operator 前缀的语句发生错误时，这个值会是 0。

同时注意，在需要时你有责任使用 die()。 如果错误处理程序返回了，脚本将会继续执行发生错误的后一行。

以下级别的错误不能由用户定义的函数来处理： E_ERROR、 E_PARSE、 E_CORE_ERROR、 E_CORE_WARNING、 E_COMPILE_ERROR、 E_COMPILE_WARNING，和在 调用 set_error_handler() 函数所在文件中产生的大多数 E_STRICT。

如果错误发生在脚本执行之前（比如文件上传时），将不会 调用自定义的错误处理程序因为它尚未在那时注册。

参数

error_handler

用户的函数需要接受两个参数：错误码和描述错误的 string。 另外有可能提供三个可选参数：发生错误的文件名、发生错误的行号 以及发生错误的上下文(一个指向错误发生时活动符号表的 array)。 该函数可以表示为：

handler ( int $errno , string $errstr [, string $errfile [, int $errline [, array $errcontext ]]] )
errno
第一个参数 errno，包含了错误的级别，是一个 integer。
errstr
第二个参数 errstr，包含了错误的信息，是一个 string。
errfile
第三个参数是可选的，errfile， 包含了发生错误的文件名，是一个 string。
errline
第四个参数是一个可选项， errline， 包含了错误发生的行号，是一个 integer。
errcontext
第五个可选参数， errcontext， 是一个指向错误发生时活动符号表的 array。 也就是说，errcontext 会包含错误触发处作用域内所有变量的数组。 用户的错误处理程序不应该修改错误上下文（context）。

如果函数返回 FALSE，标准错误处理处理程序将会继续调用。

error_types

就像error_reporting 的 ini 设置能够控制错误的显示一样， 此参数能够用于屏蔽 error_handler 的触发。 如果没有该掩码， 无论 error_reporting 是如何设置的， error_handler 都会在每个错误发生时被调用。

返回值

如果之前有定义过错误处理程序，则返回该程序名称的 string；如果是内置的错误处理程序，则返回 NULL。 如果你指定了一个无效的回调函数，同样会返回 NULL。 如果之前的错误处理程序是一个类的方法，此函数会返回一个带类和方法名的索引数组(indexed array)。

更新日志

版本 | 说明
5.2.0 | 错误处理器必须返回 FALSE 来显示 $php_errormsg。
5.0.0 | 引入 error_types 参数。
4.3.0 | 除了一个函数名，也可以使用一个包含对象引用和方法名的数组来作为 error_handler。
4.0.2 | 为用户的 error_handler 引入三个可选参数， 分别是文件名、行号和上下文(context)。

范例

Example #1 用 set_error_handler() 和 trigger_error() 进行错误处理

以下示例展示了通过触发错误并以用户自定义的程序来进行内部异常的处理。

<?php
// error handler function
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
    if (!(error_reporting() & $errno)) {
        // This error code is not included in error_reporting
        return;
    }

    switch ($errno) {
    case E_USER_ERROR:
        echo "<b>My ERROR</b> [$errno] $errstr<br />\n";
        echo "  Fatal error on line $errline in file $errfile";
        echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
        echo "Aborting...<br />\n";
        exit(1);
        break;

    case E_USER_WARNING:
        echo "<b>My WARNING</b> [$errno] $errstr<br />\n";
        break;

    case E_USER_NOTICE:
        echo "<b>My NOTICE</b> [$errno] $errstr<br />\n";
        break;

    default:
        echo "Unknown error type: [$errno] $errstr<br />\n";
        break;
    }

    /* Don't execute PHP internal error handler */
    return true;
}

// function to test the error handling
function scale_by_log($vect, $scale)
{
    if (!is_numeric($scale) || $scale <= 0) {
        trigger_error("log(x) for x <= 0 is undefined, you used: scale = $scale", E_USER_ERROR);
    }

    if (!is_array($vect)) {
        trigger_error("Incorrect input vector, array of values expected", E_USER_WARNING);
        return null;
    }

    $temp = array();
    foreach($vect as $pos => $value) {
        if (!is_numeric($value)) {
            trigger_error("Value at position $pos is not a number, using 0 (zero)", E_USER_NOTICE);
            $value = 0;
        }
        $temp[$pos] = log($scale) * $value;
    }

    return $temp;
}

// set to the user defined error handler
$old_error_handler = set_error_handler("myErrorHandler");

// trigger some errors, first define a mixed array with a non-numeric item
echo "vector a\n";
$a = array(2, 3, "foo", 5.5, 43.3, 21.11);
print_r($a);

// now generate second array
echo "----\nvector b - a notice (b = log(PI) * a)\n";
/* Value at position $pos is not a number, using 0 (zero) */
$b = scale_by_log($a, M_PI);
print_r($b);

// this is trouble, we pass a string instead of an array
echo "----\nvector c - a warning\n";
/* Incorrect input vector, array of values expected */
$c = scale_by_log("not array", 2.3);
var_dump($c); // NULL

// this is a critical error, log of zero or negative number is undefined
echo "----\nvector d - fatal error\n";
/* log(x) for x <= 0 is undefined, you used: scale = $scale" */
$d = scale_by_log($a, -2.5);
var_dump($d); // Never reached
?>

以上例程的输出类似于：

vector a
Array
(
    [0] => 2
    [1] => 3
    [2] => foo
    [3] => 5.5
    [4] => 43.3
    [5] => 21.11
)
----
vector b - a notice (b = log(PI) * a)
<b>My NOTICE</b> [1024] Value at position 2 is not a number, using 0 (zero)<br />
Array
(
    [0] => 2.2894597716988
    [1] => 3.4341896575482
    [2] => 0
    [3] => 6.2960143721717
    [4] => 49.566804057279
    [5] => 24.165247890281
)
----
vector c - a warning
<b>My WARNING</b> [512] Incorrect input vector, array of values expected<br />
NULL
----
vector d - fatal error
<b>My ERROR</b> [256] log(x) for x <= 0 is undefined, you used: scale = -2.5<br />
  Fatal error on line 35 in file trigger_error.php, PHP 5.2.1 (FreeBSD)<br />
Aborting...<br />

参见

  • ErrorException
  • error_reporting() - 设置应该报告何种 PHP 错误
  • restore_error_handler() - 还原之前的错误处理函数
  • trigger_error() - 产生一个用户级别的 error/warning/notice 信息
  • error level constants
  • callback 类型的信息

restore_exception_handler
set_exception_handler
错误处理 函数


设置一个用户定义的异常处理函数。

set_error_handler
trigger_error
错误处理 函数
PHP Manual

set_exception_handler

(PHP 5, PHP 7)

set_exception_handler — 设置一个用户定义的异常处理函数。

说明

callable set_exception_handler ( callable $exception_handler )

设置默认的异常处理程序，用于没有用 try/catch 块来捕获的异常。 在 exception_handler 调用后异常会中止。

参数

exception_handler

当一个未捕获的异常发生时所调用函数的名称。 该函数必须在调用 set_exception_handler() 之前已经定义。 该处理函数需要接受一个参数，该参数是一个抛出的异常对象。

Note:

也可以传递一个 NULL 值用于重置异常处理函数为默认值。

返回值

返回之前定义的异常处理程序的名称，或者在错误时返回 NULL。 如果之前没有定义一个错误处理程序，也会返回 NULL。 如果参数使用了 NULL，重置处理程序为默认状态，并且会返回一个 TRUE。

范例

Example #1 set_exception_handler() 范例

<?php
function exception_handler($exception) {
  echo "Uncaught exception: " , $exception->getMessage(), "\n";
}

set_exception_handler('exception_handler');

throw new Exception('Uncaught Exception');
echo "Not Executed\n";
?>

参见

  • restore_exception_handler() - 恢复之前定义过的异常处理函数。
  • restore_error_handler() - 还原之前的错误处理函数
  • error_reporting() - 设置应该报告何种 PHP 错误
  • callback 类型的信息
  • PHP 5 Exceptions

set_error_handler
trigger_error
错误处理 函数


产生一个用户级别的 error/warning/notice 信息

set_exception_handler
user_error
错误处理 函数
PHP Manual

trigger_error

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

trigger_error — 产生一个用户级别的 error/warning/notice 信息

说明

bool trigger_error ( string $error_msg [, int $error_type = E_USER_NOTICE ] )

用于触发一个用户级别的错误条件，它能结合内置的错误处理器所关联，或者可以使用用户定义的函数作为新的错误处理程序(set_error_handler())。

该函数在你运行出现异常时，需要产生一个特定的响应时非常有用。

参数

error_msg

该 error 的特定错误信息，长度限制在了1024个字符。超过1024长度的字符都会被截断。

error_type

该 error 所特定的错误类型。仅 E_USER 系列常量对其有效，默认是 E_USER_NOTICE。

返回值

如果指定了错误的 error_type 会返回 FALSE ，正确则返回 TRUE。

范例

Example #1 trigger_error() 示例

set_error_handler() 可见到更多详细的例子。

<?php
if ($divisor == 0) {
    trigger_error("Cannot divide by zero", E_USER_ERROR);
}
?>

注释

Warning

在 error_msg 里的HTML实体 并不会被转义。 如果错误消息要显示在浏览器里，需要对错误消息使用 htmlentities()。

参见

  • error_reporting() - 设置应该报告何种 PHP 错误
  • set_error_handler() - 设置一个用户定义的错误处理函数
  • restore_error_handler() - 还原之前的错误处理函数
  • The 错误级别常量

set_exception_handler
user_error
错误处理 函数


trigger_error 的别名

trigger_error
htscanner
错误处理 函数
PHP Manual

user_error

(PHP 4, PHP 5, PHP 7)

user_error — trigger_error() 的别名

说明

此函数是该函数的别名： trigger_error().

trigger_error
htscanner
错误处理 函数


htaccess-like support for all SAPIs

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
user_error
简介
影响 PHP 行为的扩展


简介

The htscanner extension gives the possibility to use htaccess-like file to configure PHP per directory, just like apache's htaccess. It is especially useful with fastcgi (IIS5/6/7, lighttpd, etc.).

htscanner
安装／配置
htscanner


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
htscanner


需求

PHP version 5.2.0 or greater.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/htscanner

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

htscanner 配置选项
名字 | 默认 | 可修改范围 | Changelog
htscanner.config_file | ".htscanner" | PHP_INI_SYSTEM |
htscanner.default_docroot | "/" | PHP_INI_SYSTEM |
htscanner.default_ttl | "300" | PHP_INI_SYSTEM |
htscanner.stop_on_error | "Off" | PHP_INI_SYSTEM |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

htscanner.config_file string

Filename to use as configuration file.

htscanner.default_docroot string

Default document root.

htscanner.default_ttl int

Cache time out for the configuration data, in seconds.

htscanner.stop_on_error int

Stop on error (parse error, cannot set an ini setting).

安装
资源类型
安装／配置


资源类型

此扩展没有定义资源类型。

运行时配置
inclued
安装／配置


Inclusion hierarchy viewer

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Example that implements inclued into an application
  • inclued 函数
    • inclued_get_data — Get the inclued data
资源类型
简介
影响 PHP 行为的扩展


简介

Traces through and dumps the hierarchy of file inclusions and class inheritance at runtime.

The files may have been included using include, include_once, require, or require_once.

Class inheritance dependencies are also reported.

inclued
安装／配置
inclued


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
inclued


需求

PHP version 5.1.0 or greater.

The included gengraph.php file utilizes the » graphviz library, however, this is not required.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/inclued

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

inclued 配置选项
名字 | 默认 | 可修改范围 | 更新日志
inclued.enabled | Off | PHP_INI_SYSTEM |
inclued.dumpdir | NULL | PHP_INI_SYSTEM |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

inclued.enabled bool

Whether or not to enable inclued.

inclued.dumpdir string

Location (path) to the directory that stores inclued files. If set, each PHP request will create a file. These files are serialized versions of what inclued_get_data() would produce, so may be unserialized with unserialize().

Caution

Because every request creates a file, this directory may fill up fast!

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

此扩展没有定义常量。

资源类型
范例
inclued


范例

Table of Contents

  • Example that implements inclued into an application
预定义常量
Example that implements inclued into an application
inclued


Example that implements inclued into an application

This example demonstrates the process of implementing inclued into an existing application, and viewing the results.

Example #1 Getting the data within the PHP application itself (function)

<?php
// File to store the inclued information
$fp = fopen('/tmp/wp.ser', 'w');
if ($fp) {
    $clue = inclued_get_data();
    if ($clue) {
        fwrite($fp, serialize($clue));
    }
    fclose($fp);
}
?>

Now that some data exists, it's time to make sense of it in the form of a graph. The inclued extension includes a PHP file named gengraph.php that creates a dot file that requires the » graphviz library. However, this form is not required.

Example #2 Example use of gengraph.php

This example creates an image named inclued.png that shows the inclued data.

# First, create the dot file
$ php gengraph.php -i /tmp/wp.ser -o wp.dot

# Next, create the image
$ dot -Tpng -o inclued.png wp.dot

Example #3 Listing data via inclued dumps (configuration)

When using the inclued.dumpdir directive, files (include clues) are dumped with every request. Here's one way to list those files, and unserialize() them.

<?php
$path = ini_get('inclued.dumpdir');
if ($path && is_dir($path)) {

    echo "Path: $path", PHP_EOL;

    $inclues = new GlobIterator($path . DIRECTORY_SEPARATOR . 'inclued*');

    if ($inclues->count() === 0) {
        echo 'No clues today', PHP_EOL;
        exit;
    }

    foreach ($inclues as $inclue) {

        echo 'Inclued file: ', $inclue->getFilename(), PHP_EOL;

        $data = file_get_contents($inclue->getPathname());
        if ($data) {
            $inc = unserialize($data);
            echo ' -- filename: ', $inc['request']['SCRIPT_FILENAME'], PHP_EOL;
            echo ' -- number of includes: ', count($inc['includes']), PHP_EOL;
        }
        echo PHP_EOL;
    }
} else {
    echo 'I am totally clueless today.', PHP_EOL;
}
?>

以上例程的输出类似于：

PATH: /tmp/inclued
Inclued file: inclued.56521.1
 -- filename: /Users/philip/test.php
 -- number of includes: 1

Inclued file: inclued.56563.1
 -- filename: /tmp/none.php
 -- number of includes: 0

Inclued file: inclued.56636.1
 -- filename: /tmp/three.php
 -- number of includes: 3

范例
inclued 函数
范例


inclued 函数

Table of Contents

  • inclued_get_data — Get the inclued data
Example that implements inclued into an application
inclued_get_data
inclued


Get the inclued data

inclued 函数
Memtrack
inclued 函数
PHP Manual

inclued_get_data

(PECL inclued >= 0.1.0)

inclued_get_data — Get the inclued data

说明

array inclued_get_data ( void )

Get the inclued data.

参数

此函数没有参数。

返回值

The inclued data.

范例

Example #1 inclued_get_data() example

See the inclued examples section for ways to create graphs with this data.

<?php
include 'x.php';

$clue = inclued_get_data();

print_r($clue);
?>

以上例程的输出类似于：

Array
(
  [includes] => Array
    (
      [0] => Array
        (
          [operation] => include
          [op_type] => 2
          [filename] => x.php
          [opened_path] => /tmp/x.php
          [fromfile] => /tmp/z.php
          [fromline] => 2
        )
    )
)

参见

  • inclued examples
  • debug_backtrace() - 产生一条回溯跟踪(backtrace)
  • include - include

inclued 函数
Memtrack
inclued 函数


Memtrack

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Basic usage
inclued_get_data
简介
影响 PHP 行为的扩展


简介

The purpose of this extension is to detect the most memory hungry scripts and functions.

memtrack tracks memory consumption in PHP scripts and produces reports (warnings) when the consumption reaches certain levels set by the user. This is achieved by replacing default executor function by a special function which compares memory usage before and after running the original executor - this way we can tell how much the memory usage has changed during the execution of the current part of the code.

Zend Engine runs its executor for each opcode array (op_array), which usually means function, plain script and such, so memtrack doesn't have any noticeable effect on performance.

memtrack doesn't provide any functions, there are only INI directives which allow you to configure the way it should work.

Warning

此扩展是实验性 的。 此扩展的表象，包括其函数名称以及其他此扩展的相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本扩展风险自担 。

Memtrack
安装／配置
Memtrack


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Memtrack


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/memtrack

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Memtrack Configuration Options
名字 | 默认 | 可修改范围
memtrack.enabled | "0" | PHP_INI_SYSTEM
memtrack.soft_limit | "0" | PHP_INI_ALL
memtrack.hard_limit | "0" | PHP_INI_ALL
memtrack.vm_limit | "0" | PHP_INI_ALL
memtrack.ignore_functions | "" | PHP_INI_SYSTEM
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

memtrack.enabled boolean

Disables or enables the extension. Default value is 0, i.e. disabled.

memtrack.soft_limit int

Soft memory limit.

The extension checks memory consumption before and after executing an op_array and produces a warning is the difference between the two values is equal to or greater than the soft limit, but only if the function is not ignored.

Setting this option to 0 also disables both soft and hard limit warnings. Default value is 0, i.e. no warnings is produced.

memtrack.hard_limit int

Hard memory limit.

The extension checks memory consumption before and after executing an op_array and produces a warning is the difference between the two values is equal to or greater than the hard limit, even if the function is ignored. Setting this option to 0 disables hard limit warnings completely. Default value is 0, i.e. no hard limit warnings is produced.

memtrack.vm_limit int

Virtual memory limit (set on a process).

This limit is checked only on shutdown and a warning is produced if the value is greater than or equal to the limit.

This option is currently supported only on OSes where mallinfo() function is available (i.e. Linux).

memtrack.ignore_functions string

A comma or whitespace-separated list of functions which are to be ignored by soft_limit. The values are case-insensitive, for class methods use class::method syntax.

安装
资源类型
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
范例
Memtrack


范例

Table of Contents

  • Basic usage
预定义常量
Basic usage
Memtrack


Basic usage

Basic example on using memtrack extension:

Example #1 Creating large array in a function

<?php

/* /tmp/example1.php */

function foo() {
    $a = array();
    for ($i = 0; $i < 10000; $i++) $a[] = "test";
    return $a;
}
$arr = foo();

?>

Run the example with the following command:

php -d memtrack.enabled=1 -d memtrack.soft_limit=1M -d memtrack.vm_limit=3M /tmp/example1.php

以上例程的输出类似于：

Warning: [memtrack] [pid 26177] user function foo() executed in /tmp/example1.php on line 10 allocated 4194304 bytes in /tmp/example1.php on line 0
Warning: [memtrack] [pid 26177] virtual memory usage on shutdown: 32911360 bytes in Unknown on line 0
范例
OPcache
范例


OPcache

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • OPcache 函数
    • opcache_compile_file — 无需运行，即可编译并缓存 PHP 脚本
    • opcache_get_configuration — 获取缓存的配置信息
    • opcache_get_status — 获取缓存的状态信息
    • opcache_invalidate — 废除脚本缓存
    • opcache_is_script_cached — Tells whether a script is cached in OPCache
    • opcache_reset — 重置字节码缓存的内容
Basic usage
简介
影响 PHP 行为的扩展


简介

OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能， 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。

PHP 5.5.0 及后续版本中已经绑定了 OPcache 扩展。 对于 PHP 5.2，5.3 和 5.4 版本可以使用 » PECL 扩展中的 OPcache 库。

OPcache
安装／配置
OPcache


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
OPcache


安装

安装 OPcache 的过程根据所用的 PHP 版本有所不同。 请参考以下小节中适用的内容。

Note:

如果需要将 » Xdebug 扩展和 OPcache 一起使用，必须在 Xdebug 扩展之前加载 OPcache 扩展。

PHP 5.5.0 及后续版本

OPcache 只能编译为共享扩展。 如果你使用 --disable-all 参数 禁用了默认扩展的构建， 那么必须使用 --enable-opcache 选项来开启 OPcache。

编译之后，就可以使用 zend_extension 指令来将 OPcache 扩展加载到 PHP 中。在非 Windows 平台使用 zend_extension=/full/path/to/opcache.so， Windows 平台使用 zend_extension=C:\path\to\php_opcache.dll。

PHP 5.2, 5.3 和 5.4 版本

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/ZendOpcache.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

推荐的 php.ini 设置

使用下列推荐设置来获得较好的 性能：

opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

你也可以禁用 opcache.save_comments 并且启用 opcache.enable_file_override。 需要提醒的是，在生产环境中使用上述配置之前，必须经过严格测试。 因为上述配置存在一个已知问题，它会引发一些框架和应用的异常， 尤其是在存在文档使用了备注注解的时候。

这里是 OPcache 可用的配置指令完整列表。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

OPcache 配置选项
名字 | 默认 | 可修改范围 | 更新日志
opcache.enable | "1" | PHP_INI_ALL |
opcache.enable_cli | "0" | PHP_INI_SYSTEM |
opcache.memory_consumption | "64" | PHP_INI_SYSTEM |
opcache.interned_strings_buffer | "4" | PHP_INI_SYSTEM |
opcache.max_accelerated_files | "2000" | PHP_INI_SYSTEM |
opcache.max_wasted_percentage | "5" | PHP_INI_SYSTEM |
opcache.use_cwd | "1" | PHP_INI_SYSTEM |
opcache.validate_timestamps | "1" | PHP_INI_ALL |
opcache.revalidate_freq | "2" | PHP_INI_ALL |
opcache.revalidate_path | "0" | PHP_INI_ALL |
opcache.save_comments | "1" | PHP_INI_SYSTEM |
opcache.load_comments | "1" | PHP_INI_ALL |
opcache.fast_shutdown | "0" | PHP_INI_SYSTEM |
opcache.enable_file_override | "0" | PHP_INI_SYSTEM |
opcache.optimization_level | "0xffffffff" | PHP_INI_SYSTEM |
opcache.inherited_hack | "1" | PHP_INI_SYSTEM |
opcache.dups_fix | "0" | PHP_INI_ALL |
opcache.blacklist_filename | "" | PHP_INI_SYSTEM |
opcache.max_file_size | "0" | PHP_INI_SYSTEM |
opcache.consistency_checks | "0" | PHP_INI_ALL |
opcache.force_restart_timeout | "180" | PHP_INI_SYSTEM |
opcache.error_log | "" | PHP_INI_SYSTEM |
opcache.log_verbosity_level | "1" | PHP_INI_SYSTEM |
opcache.preferred_memory_model | "" | PHP_INI_SYSTEM |
opcache.protect_memory | "0" | PHP_INI_SYSTEM |
opcache.mmap_base | NULL | PHP_INI_SYSTEM |
opcache.restrict_api | "" | PHP_INI_SYSTEM |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

opcache.enable boolean

启用操作码缓存。如果禁用此选项，则不会优化和缓存代码。 在运行期使用 ini_set() 函数只能禁用 opcache.enable 设置，不可以启用此设置。 如果在脚本中尝试启用此设置项会产生警告。

opcache.enable_cli boolean

仅针对 CLI 版本的 PHP 启用操作码缓存。 通常被用来测试和调试。

opcache.memory_consumption integer

OPcache 的共享内存大小，以兆字节为单位。

opcache.interned_strings_buffer integer

用来存储临时字符串的内存大小，以兆字节为单位。 PHP 5.3.0 之前的版本会忽略此配置指令。

opcache.max_accelerated_files integer

OPcache 哈希表中可存储的脚本文件数量上限。 真实的取值是在质数集合 { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 } 中找到的第一个比设置值大的质数。 设置值取值范围最小值是 200，最大值在 PHP 5.5.6 之前是 100000，PHP 5.5.6 及之后是 1000000。

opcache.max_wasted_percentage integer

浪费内存的上限，以百分比计。 如果达到此上限，那么 OPcache 将产生重新启动续发事件。

opcache.use_cwd boolean

如果启用，OPcache 将在哈希表的脚本键之后附加改脚本的工作目录， 以避免同名脚本冲突的问题。 禁用此选项可以提高性能，但是可能会导致应用崩溃。

opcache.validate_timestamps boolean

如果启用，那么 OPcache 会每隔 opcache.revalidate_freq 设定的秒数 检查脚本是否更新。 如果禁用此选项，你必须使用 opcache_reset() 或者 opcache_invalidate() 函数来手动重置 OPcache，也可以 通过重启 Web 服务器来使文件系统更改生效。

opcache.revalidate_freq integer

检查脚本时间戳是否有更新的周期，以秒为单位。 设置为 0 会导致针对每个请求， OPcache 都会检查脚本更新。

如果 opcache.validate_timestamps 配置指令设置为禁用，那么此设置项将会被忽略。

opcache.revalidate_path boolean

如果禁用此选项，在同一个 include_path 已存在的缓存文件会被重用。 因此，将无法找到不在包含路径下的同名文件。

opcache.save_comments boolean

如果禁用，脚本文件中的注释内容将不会被包含到操作码缓存文件， 这样可以有效减小优化后的文件体积。 禁用此配置指令可能会导致一些依赖注释或注解的 应用或框架无法正常工作， 比如： Doctrine， Zend Framework 2 以及 PHPUnit。

opcache.load_comments boolean

如果禁用，则即使文件中包含注释，也不会加载这些注释内容。 本选项可以和 opcache.save_comments 一起使用，以实现按需加载注释内容。

opcache.fast_shutdown boolean

如果启用，则会使用快速停止续发事件。 所谓快速停止续发事件是指依赖 Zend 引擎的内存管理模块 一次释放全部请求变量的内存，而不是依次释放每一个已分配的内存块。

opcache.enable_file_override boolean

如果启用，则在调用函数 file_exists()， is_file() 以及 is_readable() 的时候， 都会检查操作码缓存，无论文件是否已经被缓存。 如果应用中包含检查 PHP 脚本存在性和可读性的功能，这样可以提升性能。 但是如果禁用了 opcache.validate_timestamps 选项， 可能存在返回过时数据的风险。

opcache.optimization_level integer

控制优化级别的二进制位掩码。

opcache.inherited_hack boolean

在 PHP 5.3 之前的版本，OPcache 会存储代码中使用 DECLARE_CLASS 操作码 来实现继承的位置。当文件被加载之后，OPcache 会尝试使用当前环境来绑定被继承的类。 由于当前脚本中可能并不需要 DECLARE_CLASS 操作码，如果这样的脚本需要对应的操作码被定义时， 可能无法运行。

在 PHP 5.3 及后续版本中，此配置指令会被忽略。

opcache.dups_fix boolean

仅作为针对 "不可重定义类"错误的一种解决方案。

opcache.blacklist_filename string

OPcache 黑名单文件位置。 黑名单文件为文本文件，包含了不进行预编译优化的文件名，每行一个文件名。 黑名单中的文件名可以使用通配符，也可以使用前缀。 此文件中以分号（;）开头的行将被视为注释。

简单的黑名单文件可能如下所示：

; 将特定文件加入到黑名单
/var/www/broken.php
; 以字符 x 文件打头的文件
/var/www/x
; 通配符匹配
/var/www/*-broken.php
opcache.max_file_size integer

以字节为单位的缓存的文件大小上限。设置为 0 表示缓存全部文件。

opcache.consistency_checks integer

如果是非 0 值，OPcache 将会每隔 N 次请求检查缓存校验和。 N 即为此配置指令的设置值。 由于此选项对于性能有较大影响，请尽在调试环境使用。

opcache.force_restart_timeout integer

如果缓存处于非激活状态，等待多少秒之后计划重启。 如果超出了设定时间，则 OPcache 模块将杀除持有缓存锁的进程， 并进行重启。

如果选项 opcache.log_verbosity_level 设置为 3 或者 3 以上的数值，当发生重启时将在日志中记录一条错误信息。

opcache.error_log string

OPcache 模块的错误日志文件。 如果留空，则视为 stderr， 错误日志将被送往标准错误输出 （通常情况下是 Web 服务器的错误日志文件）。

opcache.log_verbosity_level integer

OPcache 模块的日志级别。 默认情况下，仅有致命级别（0）及错误级别（1）的日志会被记录。 其他可用的级别有：警告（2），信息（3）和调试（4）。

opcache.preferred_memory_model string

OPcache 首选的内存模块。 如果留空，OPcache 会选择适用的模块， 通常情况下，自动选择就可以满足需求。

可选值包括： mmap，shm, posix 以及 win32。

opcache.protect_memory boolean

保护共享内存，以避免执行脚本时发生非预期的写入。 仅用于内部调试。

opcache.mmap_base string

在 Windows 平台上共享内存段的基地址。 所有的 PHP 进程都将共享内存映射到同样的地址空间。 使用此配置指令避免"无法重新附加到基地址"的错误。

opcache.restrict_api string

仅允许路径是以指定字符串开始的 PHP 脚本调用 OPcache API 函数。 默认值为空字符串 ""，表示不做限制。

安装
资源类型
安装／配置


资源类型

此扩展没有定义资源类型。

运行时配置
OPcache 函数
安装／配置


OPcache 函数

Table of Contents

  • opcache_compile_file — 无需运行，即可编译并缓存 PHP 脚本
  • opcache_get_configuration — 获取缓存的配置信息
  • opcache_get_status — 获取缓存的状态信息
  • opcache_invalidate — 废除脚本缓存
  • opcache_is_script_cached — Tells whether a script is cached in OPCache
  • opcache_reset — 重置字节码缓存的内容
资源类型
opcache_compile_file
OPcache


无需运行，即可编译并缓存 PHP 脚本

OPcache 函数
opcache_get_configuration
OPcache 函数
PHP Manual

opcache_compile_file

(PHP 5 >= 5.5.5, PHP 7, PECL ZendOpcache > 7.0.2)

opcache_compile_file — 无需运行，即可编译并缓存 PHP 脚本

说明

boolean opcache_compile_file ( string $file )

该函数可以用于在不用运行某个 PHP 脚本的情况下，编译该 PHP 脚本并将其添加到字节码缓存中去。 该函数可用于在 Web 服务器重启之后初始化缓存，以供后续请求调用。

参数

file

被编译的 PHP 脚本的路径。

返回值

如果 file 被成功编译，则返回 TRUE 或者在失败时返回 FALSE。

错误／异常

如果文件（ file ）不能被载入或者不能被编译，则会生成一个 E_WARNING 级别的错误。 可以使用 @ 来抑制该警告。

参见

  • opcache_invalidate() - 废除脚本缓存

OPcache 函数
opcache_get_configuration
OPcache 函数


获取缓存的配置信息

opcache_compile_file
opcache_get_status
OPcache 函数
PHP Manual

opcache_get_configuration

(PHP 5 >= 5.5.5, PHP 7, PECL ZendOpcache > 7.0.2)

opcache_get_configuration — 获取缓存的配置信息

说明

array opcache_get_configuration ( void )

该函数将返回缓存实例的配置信息。

返回值

返回一个数组，该数组里包含了缓存的初始化信息，黑名单和版本号。

错误／异常

在启用了 opcache.restrict_api 的情况下，如果当前路径在禁止规则里，将会出现 E_WARNING ；不会返回任何状态信息。

参见

  • opcache_get_status() - 获取缓存的状态信息

opcache_compile_file
opcache_get_status
OPcache 函数


获取缓存的状态信息

opcache_get_configuration
opcache_invalidate
OPcache 函数
PHP Manual

opcache_get_status

(PHP 5 >= 5.5.5, PHP 7, PECL ZendOpcache > 7.0.2)

opcache_get_status — 获取缓存的状态信息

说明

array opcache_get_status ([ boolean $get_scripts = TRUE ] )

该函数将返回缓存实例的状态信息。

参数

get_scripts

包含脚本的具体声明信息。

返回值

返回一个数组，该数组可能包含有脚本具体的声明信息。

错误／异常

在启用了 opcache.restrict_api 的情况下，如果当前路径在禁止规则里，将会出现 E_WARNING ；不会返回任何状态信息。

参见

  • opcache_get_configuration() - 获取缓存的配置信息

opcache_get_configuration
opcache_invalidate
OPcache 函数


废除脚本缓存

opcache_get_status
opcache_is_script_cached
OPcache 函数
PHP Manual

opcache_invalidate

(PHP 5 >= 5.5.0, PHP 7, PECL ZendOpcache >= 7.0.0)

opcache_invalidate — 废除脚本缓存

说明

boolean opcache_invalidate ( string $script [, boolean $force = FALSE ] )

该函数的作用是使得指定脚本的字节码缓存失效。 如果 force 没有设置或者传入的是 FALSE，那么只有当脚本的修改时间 比对应字节码的时间更新，脚本的缓存才会失效。

参数

script

缓存需要被作废对应的脚本路径

force

如果该参数设置为TRUE，那么不管是否必要，该脚本的缓存都将被废除。

返回值

如果脚本的字节码缓存失效设置成功或者该脚本本来就没有缓存，则返回 TRUE；如果字节码缓存被禁用，则返回FALSE。

参见

  • opcache_compile_file() - 无需运行，即可编译并缓存 PHP 脚本
  • opcache_reset() - 重置字节码缓存的内容

opcache_get_status
opcache_is_script_cached
OPcache 函数


Tells whether a script is cached in OPCache

opcache_invalidate
opcache_reset
OPcache 函数
PHP Manual

opcache_is_script_cached

(PHP 5 >= 5.6.0, PHP 7, PECL ZendOpcache >= 7.0.4)

opcache_is_script_cached — Tells whether a script is cached in OPCache

说明

boolean opcache_is_script_cached ( string $file )

This function checks if a PHP script has been cached in OPCache. This can be used to more easily detect the "warming" of the cache for a particular script.

参数

file

The path to the PHP script to be checked.

返回值

Returns TRUE if file is cached in OPCache, FALSE otherwise.

参见

  • opcache_compile_file() - 无需运行，即可编译并缓存 PHP 脚本

opcache_invalidate
opcache_reset
OPcache 函数


重置字节码缓存的内容

opcache_is_script_cached
输出控制
OPcache 函数
PHP Manual

opcache_reset

(PHP 5 >= 5.5.0, PHP 7, PECL ZendOpcache >= 7.0.0)

opcache_reset — 重置字节码缓存的内容

说明

boolean opcache_reset ( void )

该函数将重置整个字节码缓存。 在调用 opcache_reset() 之后，所有的脚本将会重新载入并且在下次被点击的时候重新解析。

参数

此函数没有参数。

返回值

如果字节码缓存被重置成功，则返回 TRUE；如果字节码缓存被禁用，则返回 FALSE。

参见

  • opcache_invalidate() - 废除脚本缓存

opcache_is_script_cached
输出控制
OPcache 函数


输出缓冲控制

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • 基本用法
  • Output Control 函数
    • flush — 刷新输出缓冲
    • ob_clean — 清空（擦掉）输出缓冲区
    • ob_end_clean — 清空（擦除）缓冲区并关闭输出缓冲
    • ob_end_flush — 冲刷出（送出）输出缓冲区内容并关闭缓冲
    • ob_flush — 冲刷出（送出）输出缓冲区中的内容
    • ob_get_clean — 得到当前缓冲区的内容并删除当前输出缓。
    • ob_get_contents — 返回输出缓冲区的内容
    • ob_get_flush — 刷出（送出）缓冲区内容，以字符串形式返回内容，并关闭输出缓冲区。
    • ob_get_length — 返回输出缓冲区内容的长度
    • ob_get_level — 返回输出缓冲机制的嵌套级别
    • ob_get_status — 得到所有输出缓冲区的状态
    • ob_gzhandler — 在ob_start中使用的用来压缩输出缓冲区中内容的回调函数。ob_start callback function to gzip output buffer
    • ob_implicit_flush — 打开/关闭绝对刷送
    • ob_list_handlers — 列出所有使用中的输出处理程序。
    • ob_start — 打开输出控制缓冲
    • output_add_rewrite_var — 添加URL重写器的值（Add URL rewriter values）
    • output_reset_rewrite_vars — 重设URL重写器的值（Reset URL rewriter values）
opcache_reset
简介
影响 PHP 行为的扩展


简介

当PHP脚本有输出时，输出控制函数可以用这些来控制输出。这在多种不同情况中非常有用，尤其是用来在脚本开始输出 数据后，发送http头信息到浏览器。输出控制函数不影响由 header() 或 setcookie()发送的文件头信息，仅影响象 echo这样的函数和PHP代码块间的数据。

Note:

由于早先的版本的缺陷，当从PHP4.1.x(4.2.x,4.3.x)升级时，必须保证php.ini中的implicit_flush 是 OFF， 否则任何用ob_start()的输出将在输出中隐藏掉。

输出控制
安装／配置
输出控制


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
输出控制


运行时配置

这些函数的行为受 php.ini 中的设置影响。

输出控制配置选项
名字 | 默认 | 可修改范围 | 更新日志
output_buffering | "0" | PHP_INI_PERDIR |
output_handler | NULL | PHP_INI_PERDIR | 自 PHP 4.0.4 起可用
implicit_flush | "0" | PHP_INI_ALL | 在 PHP <= 4.2.3 版本中是 PHP_INI_PERDIR
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

output_buffering boolean/integer

该选项设置为 On 时，将在所有的脚本中使用输出控制。如果要限制输出缓冲区的最大值，可将该选项设定为指定的最大字节数（例如 output_buffering=4096）。从PHP 4.3.5 版开始，该选项在 PHP-CLI 下总是为 Off。

output_handler string

该选项可将脚本所有的输出，重定向到一个函数。例如，将 output_handler 设置为 mb_output_handler() 时，字符的编码将被修改为指定的编码。设置的任何处理函数，将自动的处理输出缓冲。

Note:

不能同时使用 mb_output_handler() 和
ob_iconv_handler()，也不能同时使用
ob_gzhandler() 和
zlib.output_compression。

Note:

只有内置函数可以使用此指令。对于用户定义的函数，使用 ob_start()。

implicit_flush boolean

默认为 FALSE。如将该选项改为 TRUE，PHP 将使输出层，在每段信息块输出后，自动刷新。这等同于在每次使用 print、echo 等函数或每个 HTML 块之后，调用 PHP 中的 flush() 函数。

不在web环境中使用 PHP 时，打开这个选项对程序执行的性能有严重的影响，通常只推荐在调试时使用。在 CLI SAPI 的执行模式下，该标记默认为 TRUE。

参见 ob_implicit_flush()。

安装
资源类型
安装／配置


预定义常量

下列常量作为 PHP 核心的一部分总是可用的。

PHP_OUTPUT_HANDLER_START (integer)

Indicates that output buffering has begun.

PHP_OUTPUT_HANDLER_WRITE (integer)

Indicates that the output buffer is being flushed, and had data to output.

Available since PHP 5.4.

PHP_OUTPUT_HANDLER_FLUSH (integer)

Indicates that the buffer has been flushed.

Available since PHP 5.4.

PHP_OUTPUT_HANDLER_CLEAN (integer)

Indicates that the output buffer has been cleaned.

Available since PHP 5.4.

PHP_OUTPUT_HANDLER_FINAL (integer)

Indicates that this is the final output buffering operation.

Available since PHP 5.4.

PHP_OUTPUT_HANDLER_CONT (integer)

Indicates that the buffer has been flushed, but output buffering will continue.

As of PHP 5.4, this is an alias for PHP_OUTPUT_HANDLER_WRITE.

PHP_OUTPUT_HANDLER_END (integer)

Indicates that output buffering has ended.

As of PHP 5.4, this is an alias for PHP_OUTPUT_HANDLER_FINAL.

PHP_OUTPUT_HANDLER_CLEANABLE (integer)

Controls whether an output buffer created by ob_start() can be cleaned.

Available since PHP 5.4.

PHP_OUTPUT_HANDLER_FLUSHABLE (integer)

Controls whether an output buffer created by ob_start() can be flushed.

Available since PHP 5.4.

PHP_OUTPUT_HANDLER_REMOVABLE (integer)

Controls whether an output buffer created by ob_start() can be removed before the end of the script.

Available since PHP 5.4.

PHP_OUTPUT_HANDLER_STDFLAGS (integer)

The default set of output buffer flags; currently equivalent to PHP_OUTPUT_HANDLER_CLEANABLE | PHP_OUTPUT_HANDLER_FLUSHABLE | PHP_OUTPUT_HANDLER_REMOVABLE.

Available since PHP 5.4.

资源类型
范例
输出控制


范例

Table of Contents

  • 基本用法
预定义常量
基本用法
输出控制


基本用法

Example #1 输出控制举例

<?php

ob_start();
echo "Hello\n";

setcookie("cookiename", "cookiedata");

ob_end_flush();

?>

在上面的例子中，echo函数的输出将一直被保存在输出缓冲区中直到调用 ob_end_flush() 。同时，对setcookie()的调用也成功存储了一个cookie,而不会引起错误。（正常情况下，在数据被发送到浏览器后，就不能再发送http头信息了。）

范例
Output Control 函数
范例


Output Control 函数

参见

See also header() and setcookie().

Table of Contents

  • flush — 刷新输出缓冲
  • ob_clean — 清空（擦掉）输出缓冲区
  • ob_end_clean — 清空（擦除）缓冲区并关闭输出缓冲
  • ob_end_flush — 冲刷出（送出）输出缓冲区内容并关闭缓冲
  • ob_flush — 冲刷出（送出）输出缓冲区中的内容
  • ob_get_clean — 得到当前缓冲区的内容并删除当前输出缓。
  • ob_get_contents — 返回输出缓冲区的内容
  • ob_get_flush — 刷出（送出）缓冲区内容，以字符串形式返回内容，并关闭输出缓冲区。
  • ob_get_length — 返回输出缓冲区内容的长度
  • ob_get_level — 返回输出缓冲机制的嵌套级别
  • ob_get_status — 得到所有输出缓冲区的状态
  • ob_gzhandler — 在ob_start中使用的用来压缩输出缓冲区中内容的回调函数。ob_start callback function to gzip output buffer
  • ob_implicit_flush — 打开/关闭绝对刷送
  • ob_list_handlers — 列出所有使用中的输出处理程序。
  • ob_start — 打开输出控制缓冲
  • output_add_rewrite_var — 添加URL重写器的值（Add URL rewriter values）
  • output_reset_rewrite_vars — 重设URL重写器的值（Reset URL rewriter values）
基本用法
flush
输出控制


刷新输出缓冲

Output Control 函数
ob_clean
Output Control 函数
PHP Manual

flush

(PHP 4, PHP 5, PHP 7)

flush — 刷新输出缓冲

说明

void flush ( void )

刷新PHP程序的缓冲，而不论PHP执行在何种情况下（CGI ，web服务器等等）。该函数将当前为止程序的所有输出发送到用户的浏览器。

flush() 函数不会对服务器或客户端浏览器的缓存模式产生影响。因此，必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。

个别web服务器程序，特别是Win32下的web服务器程序，在发送结果到浏览器之前，仍然会缓存脚本的输出，直到程序结束为止。

有些Apache的模块，比如mod_gzip，可能自己进行输出缓存，这将导致flush()函数产生的结果不会立即被发送到客户端浏览器。

甚至浏览器也会在显示之前，缓存接收到的内容。例如 Netscape 浏览器会在接受到换行或 html 标记的开头之前缓存内容，并且在接受到 </table> 标记之前，不会显示出整个表格。

一些版本的 Microsoft Internet Explorer 只有当接受到的256个字节以后才开始显示该页面，所以必须发送一些额外的空格来让这些浏览器显示页面内容。

Output Control 函数
ob_clean
Output Control 函数


清空（擦掉）输出缓冲区

flush
ob_end_clean
Output Control 函数
PHP Manual

ob_clean

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

ob_clean — 清空（擦掉）输出缓冲区

说明

void ob_clean ( void )

此函数用来丢弃输出缓冲区中的内容。

此函数不会销毁输出缓冲区，而像 ob_end_clean() 函数会销毁输出缓冲区。

返回值

没有返回值。

参见

  • ob_flush() - 冲刷出（送出）输出缓冲区中的内容
  • ob_end_flush() - 冲刷出（送出）输出缓冲区内容并关闭缓冲
  • ob_end_clean() - 清空（擦除）缓冲区并关闭输出缓冲

flush
ob_end_clean
Output Control 函数


清空（擦除）缓冲区并关闭输出缓冲

ob_clean
ob_end_flush
Output Control 函数
PHP Manual

ob_end_clean

(PHP 4, PHP 5, PHP 7)

ob_end_clean — 清空（擦除）缓冲区并关闭输出缓冲

说明

bool ob_end_clean ( void )

此函数丢弃最顶层输出缓冲区的内容并关闭这个缓冲区。如果想要进一步处理缓冲区的内容，必须在ob_end_clean()之前调用ob_get_contents()，因为当调用ob_end_clean()时缓冲区内容将被丢弃。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 错误的原因首先是，在调用时没有一个起作用的缓冲区，或者是因为某些原因缓冲区不能被删除（可能对特殊缓冲区而言）。

错误／异常

如果函数失败了，将引发一个E_NOTICE异常。

更新日志

版本 | 说明
4.2.0 | 添加了布尔返回值。

范例

下面的例子给出了一种去除所有输出缓冲区的方法：

Example #1 ob_end_clean() example

<?php
ob_start();
echo 'Text that won\'t get displayed.';
ob_end_clean();
?>

参见

  • ob_start() - 打开输出控制缓冲
  • ob_get_contents() - 返回输出缓冲区的内容
  • ob_flush() - 冲刷出（送出）输出缓冲区中的内容

ob_clean
ob_end_flush
Output Control 函数


冲刷出（送出）输出缓冲区内容并关闭缓冲

ob_end_clean
ob_flush
Output Control 函数
PHP Manual

ob_end_flush

(PHP 4, PHP 5, PHP 7)

ob_end_flush — 冲刷出（送出）输出缓冲区内容并关闭缓冲

说明

bool ob_end_flush ( void )

这个函数将送出最顶层缓冲区的内容（如果里边有内容的话），并关闭缓冲区。如果想进一步处理缓冲区中的内容，必须在ob_end_flush()之前调用 ob_get_contents()，因为在调用ob_end_flush()后缓冲区内容被丢弃。

Note: 这个函数与ob_get_flush()相似，不同的是ob_get_flush()会把缓冲区中的内容作为字符串返回。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 错误的原因首先是，在调用时没有一个起作用的缓冲区，或者是因为某些原因缓冲区不能被删除（可能对特殊缓冲区而言）。

错误／异常

如果函数失败了，将引发一个E_NOTICE异常。

更新日志

版本 | 说明
4.2.0 | 添加了布尔返回值。

范例

Example #1 ob_end_flush() example

下面的例子给出了一种送出缓冲区内容并关闭所有输出缓冲区的容易的方法：

<?php
  while (@ob_end_flush());
?>

参见

  • ob_start() - 打开输出控制缓冲
  • ob_get_contents() - 返回输出缓冲区的内容
  • ob_get_flush() - 刷出（送出）缓冲区内容，以字符串形式返回内容，并关闭输出缓冲区。
  • ob_flush() - 冲刷出（送出）输出缓冲区中的内容
  • ob_end_clean() - 清空（擦除）缓冲区并关闭输出缓冲

ob_end_clean
ob_flush
Output Control 函数


冲刷出（送出）输出缓冲区中的内容

ob_end_flush
ob_get_clean
Output Control 函数
PHP Manual

ob_flush

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

ob_flush — 冲刷出（送出）输出缓冲区中的内容

说明

void ob_flush ( void )

这个函数将送出缓冲区的内容（如果里边有内容的话）。如果想进一步处理缓冲区中的内容，必须在ob_flush()之前调用ob_get_contents() ，因为在调用ob_flush()之后缓冲区内容将被丢弃。

此函数不会销毁输出缓冲区，而像ob_end_flush() 函数会销毁缓冲区。

返回值

没有返回值。

参见

  • ob_get_contents() - 返回输出缓冲区的内容
  • ob_clean() - 清空（擦掉）输出缓冲区
  • ob_end_flush() - 冲刷出（送出）输出缓冲区内容并关闭缓冲
  • ob_end_clean() - 清空（擦除）缓冲区并关闭输出缓冲

ob_end_flush
ob_get_clean
Output Control 函数


得到当前缓冲区的内容并删除当前输出缓。

ob_flush
ob_get_contents
Output Control 函数
PHP Manual

ob_get_clean

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

ob_get_clean — 得到当前缓冲区的内容并删除当前输出缓。

说明

string ob_get_clean ( void )

得到当前缓冲区的内容并删除当前输出缓冲区。

ob_get_clean() 实质上是一起执行了
ob_get_contents() 和
ob_end_clean()。

返回值

返回输出缓冲区的内容，并结束输出缓冲区。如果输出缓冲区不是活跃的，即返回 FALSE 。

范例

Example #1 A simple ob_get_clean() example

<?php

ob_start();

echo "Hello World";

$out = ob_get_clean();
$out = strtolower($out);

var_dump($out);
?>

以上例程会输出：

string(11) "hello world"

参见

  • ob_get_contents() - 返回输出缓冲区的内容
  • ob_start() - 打开输出控制缓冲

ob_flush
ob_get_contents
Output Control 函数


返回输出缓冲区的内容

ob_get_clean
ob_get_flush
Output Control 函数
PHP Manual

ob_get_contents

(PHP 4, PHP 5, PHP 7)

ob_get_contents — 返回输出缓冲区的内容

说明

string ob_get_contents ( void )

只是得到输出缓冲区的内容，但不清除它。

返回值

此函数返回输出缓冲区的内容，或者如果输出缓冲区无效将返回FALSE 。

范例

Example #1 A simple ob_get_contents() example

<?php

ob_start();

echo "Hello ";

$out1 = ob_get_contents();

echo "World";

$out2 = ob_get_contents();

ob_end_clean();

var_dump($out1, $out2);
?>

以上例程会输出：

string(6) "Hello "
string(11) "Hello World"

参见

  • ob_start() - 打开输出控制缓冲
  • ob_get_length() - 返回输出缓冲区内容的长度

ob_get_clean
ob_get_flush
Output Control 函数


刷出（送出）缓冲区内容，以字符串形式返回内容，并关闭输出缓冲区。

ob_get_contents
ob_get_length
Output Control 函数
PHP Manual

ob_get_flush

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

ob_get_flush — 刷出（送出）缓冲区内容，以字符串形式返回内容，并关闭输出缓冲区。

说明

string ob_get_flush ( void )

ob_get_flush() 刷出（送出）缓冲区内容，以字符串形式返回内容，并关闭输出缓冲区。

Note: 这个函数与ob_end_flush()相似，不同的是本函数还会以字符串形式返回缓冲区内容。

返回值

返回输出缓冲区的内容；或者是，如果没有起作用的输出缓冲区，返回FALSE 。

范例

Example #1 ob_get_flush() example

<?php
//using output_buffering=On
print_r(ob_list_handlers());

//save buffer in a file
$buffer = ob_get_flush();
file_put_contents('buffer.txt', $buffer);

print_r(ob_list_handlers());
?>

以上例程会输出：

Array
(
    [0] => default output handler
)
Array
(
)

参见

  • ob_end_clean() - 清空（擦除）缓冲区并关闭输出缓冲
  • ob_end_flush() - 冲刷出（送出）输出缓冲区内容并关闭缓冲
  • ob_list_handlers() - 列出所有使用中的输出处理程序。

ob_get_contents
ob_get_length
Output Control 函数


返回输出缓冲区内容的长度

ob_get_flush
ob_get_level
Output Control 函数
PHP Manual

ob_get_length

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

ob_get_length — 返回输出缓冲区内容的长度

说明

int ob_get_length ( void )

此函数将返回输出缓中冲区内容的长度。

返回值

返回输出缓冲区内容的长度；或者返回FALSE——如果没有起作用的缓冲区。

范例

Example #1 A simple ob_get_length() example

<?php

ob_start();

echo "Hello ";

$len1 = ob_get_length();

echo "World";

$len2 = ob_get_length();

ob_end_clean();

echo $len1 . ", ." . $len2;
?>

以上例程会输出：

6, 11

参见

  • ob_start() - 打开输出控制缓冲
  • ob_get_contents() - 返回输出缓冲区的内容

ob_get_flush
ob_get_level
Output Control 函数


返回输出缓冲机制的嵌套级别

ob_get_length
ob_get_status
Output Control 函数
PHP Manual

ob_get_level

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

ob_get_level — 返回输出缓冲机制的嵌套级别

说明

int ob_get_level ( void )

返回输出缓冲机制的嵌套级别。

返回值

返回嵌套的输出缓冲处理程序的级别；或者是，如果输出缓冲区不起作用，返回零。

参见

  • ob_start() - 打开输出控制缓冲
  • ob_get_contents() - 返回输出缓冲区的内容

ob_get_length
ob_get_status
Output Control 函数


得到所有输出缓冲区的状态

ob_get_level
ob_gzhandler
Output Control 函数
PHP Manual

ob_get_status

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

ob_get_status — 得到所有输出缓冲区的状态

说明

array ob_get_status ([ bool $full_status = FALSE ] )

ob_get_status()返回最顶层输出缓冲区的状态信息；或者如果full_status设为TRUE，返回所有有效的输出缓冲级别。

参数

full_status

设为TRUE 返回所有有效的输出缓冲区级别的状态信息。如果设为 FALSE 或者没有设置，仅返回最 顶层输出缓冲区的状态信息。

返回值

如果调用时没有full_status参数，或者full_status = FALSE 将返回一个包含下面元素的简单数组：

Array
(
    [level] => 2
    [type] => 0
    [status] => 0
    [name] => URL-Rewriter
    [del] => 1
)
Simple ob_get_status() results
Key | Value
level | 输出嵌套级别
type | PHP_OUTPUT_HANDLER_INTERNAL (0) 或者 PHP_OUTPUT_HANDLER_USER (1)
status | PHP_OUTPUT_HANDLER_START (0), PHP_OUTPUT_HANDLER_CONT (1) or PHP_OUTPUT_HANDLER_END (2) 三个之一
name | 起作用的输出处理程序的名字，或者是默认的输出处理程序的名字（如果没有设置的话）
del | 由ob_start()设置的删除标签（Erase-flag）

如果调用时full_status = TRUE，将返回一个数组，该数组的每个元素包含有效的输出缓冲区级别的状态信息。缓冲区的级别数用来当作数组的第一维数；每个元素自身是另一个数组，它持有该有效输出级别的状态信息。

Array
(
    [0] => Array
        (
            [chunk_size] => 0
            [size] => 40960
            [block_size] => 10240
            [type] => 1
            [status] => 0
            [name] => default output handler
            [del] => 1
        )

    [1] => Array
        (
            [chunk_size] => 0
            [size] => 40960
            [block_size] => 10240
            [type] => 0
            [buffer_size] => 0
            [status] => 0
            [name] => URL-Rewriter
            [del] => 1
        )

)

完整的输出包含以下附加元素：

完整的ob_get_status() 结果
Key | Value
chunk_size | 由 ob_start()设置的Chunk size值
size | ...
blocksize | ...

参见

  • ob_get_level() - 返回输出缓冲机制的嵌套级别
  • ob_list_handlers() - 列出所有使用中的输出处理程序。

ob_get_level
ob_gzhandler
Output Control 函数


在ob_start中使用的用来压缩输出缓冲区中内容的回调函数。ob_start callback function to gzip output buffer

ob_get_status
ob_implicit_flush
Output Control 函数
PHP Manual

ob_gzhandler

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

ob_gzhandler — 在ob_start中使用的用来压缩输出缓冲区中内容的回调函数。ob_start callback function to gzip output buffer

说明

string ob_gzhandler ( string $buffer , int $mode )

ob_gzhandler()目的是用在ob_start()中作回调函数，以方便将gz 编码的数据发送到支持压缩页面的浏览器。在ob_gzhandler()真正发送压缩过的数据之前，该 函数会确定（判定）浏览器可以接受哪种类型内容编码（"gzip","deflate",或者根本什么都不支持），然后 返回相应的输出。 所有可以发送正确头信息表明他自己可以接受压缩的网页的浏览器，都可以支持。 All browsers are supported since it's up to the browser to send the correct header saying that it accepts compressed web pages. 如果一个浏览器不支持压缩过的页面，此函数返回FALSE。

参数

buffer

mode

返回值

更新日志

版本 | 说明
4.0.5 | 填加了 mode 参数。

范例

Example #1 ob_gzhandler() example

<?php

ob_start("ob_gzhandler");

?>
<html>
<body>
<p>This should be a compressed page.</p>
</html>
<body>

注释

Note:

ob_gzhandler() 需要 zlib 扩展。

Note:

不能同时使用ob_gzhandler() 和 zlib.output_compression。 也要注意使用 zlib.output_compression 要优于 ob_gzhandler()。

参见

  • ob_start() - 打开输出控制缓冲
  • ob_end_flush() - 冲刷出（送出）输出缓冲区内容并关闭缓冲

ob_get_status
ob_implicit_flush
Output Control 函数


打开/关闭绝对刷送

ob_gzhandler
ob_list_handlers
Output Control 函数
PHP Manual

ob_implicit_flush

(PHP 4, PHP 5, PHP 7)

ob_implicit_flush — 打开/关闭绝对刷送

说明

void ob_implicit_flush ([ int $flag = true ] )

ob_implicit_flush()将打开或关闭绝对（隐式）刷送。绝对（隐式）刷送将导致在每次输出调用后有一次刷送操作，以便不再需要对 flush() 的显式调用。

参数

flag

设为TRUE 打开绝对刷送，反之是 FALSE 。

返回值

没有返回值。

参见

  • flush() - 刷新输出缓冲
  • ob_start() - 打开输出控制缓冲
  • ob_end_flush() - 冲刷出（送出）输出缓冲区内容并关闭缓冲

ob_gzhandler
ob_list_handlers
Output Control 函数


列出所有使用中的输出处理程序。

ob_implicit_flush
ob_start
Output Control 函数
PHP Manual

ob_list_handlers

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

ob_list_handlers — 列出所有使用中的输出处理程序。

说明

array ob_list_handlers ( void )

列出所有使用中的输出处理程序。

返回值

此函数将返回一个数组，数组元素是正在使用中输出处理程序名（如果存在的输出处理程序的话）。 如果启用了output_buffering 或者在 ob_start() 中创建了一个匿名函数，ob_list_handlers() 将返回 "default output handler"。

范例

Example #1 ob_list_handlers() example

<?php
//using output_buffering=On
print_r(ob_list_handlers());
ob_end_flush();

ob_start("ob_gzhandler");
print_r(ob_list_handlers());
ob_end_flush();

// anonymous functions
ob_start(create_function('$string', 'return $string;'));
print_r(ob_list_handlers());
ob_end_flush();
?>

以上例程会输出：

Array
(
    [0] => default output handler
)

Array
(
    [0] => ob_gzhandler
)

Array
(
    [0] => default output handler
)

参见

  • ob_end_clean() - 清空（擦除）缓冲区并关闭输出缓冲
  • ob_end_flush() - 冲刷出（送出）输出缓冲区内容并关闭缓冲
  • ob_get_flush() - 刷出（送出）缓冲区内容，以字符串形式返回内容，并关闭输出缓冲区。
  • ob_start() - 打开输出控制缓冲

ob_implicit_flush
ob_start
Output Control 函数


打开输出控制缓冲

ob_list_handlers
output_add_rewrite_var
Output Control 函数
PHP Manual

ob_start

(PHP 4, PHP 5, PHP 7)

ob_start — 打开输出控制缓冲

说明

bool ob_start ([ callback $output_callback [, int $chunk_size [, bool $erase ]]] )

此函数将打开输出缓冲。当输出缓冲激活后，脚本将不会输出内容（除http标头外），相反需要输出的内容被存储在内部缓冲区中。

内部缓冲区的内容可以用 ob_get_contents() 函数复制到一个字符串变量中。
想要输出存储在内部缓冲区中的内容，可以使用 ob_end_flush() 函数。另外，
使用 ob_end_clean() 函数会静默丢弃掉缓冲区的内容。

Warning

当有正在调用的回调函数时，一些网络服务器（例如Apache）会改变一个脚本的工作目录。 你可以在回调函数中再把它改回来，例如 chdir(dirname($_SERVER['SCRIPT_FILENAME'])) 。

输出缓冲区是可堆叠的，这即意谓着，当有一个 ob_start() 是活跃的时，
你可以调用另一个 ob_start() 。
只要确保又正确调用了 ob_end_flush() 恰当的次数即可。
如果有多重输出回调函数是活跃的，输出内容会一直按嵌套的顺序依次通过它们而被过滤。

参数

output_callback

可选参数 output_callback 函数可以被指定。 此函数把一个字符串当作参数并返回一个字符串。 当输出缓冲区被( ob_flush(), ob_clean() 或者相似的函数)冲刷（送出）或者被清洗的时候；或者在请求结束之际输出缓冲区内容被冲刷到浏览器的时候该函数将会被调用。 当调用 output_callback 时，它将收到输出缓冲区的内容作为参数 并预期返回一个新的输出缓冲区作为结果，这个新返回的输出缓冲区内容将被送到浏览器。 如果这个 output_callback 不是一个可以调用的函数，此函数 会返回 FALSE 。

如果回调函数有两个参数，第二个参数会由一个位域补充，该位域由 PHP_OUTPUT_HANDLER_START, PHP_OUTPUT_HANDLER_CONT 和 PHP_OUTPUT_HANDLER_END 组成。

如果 output_callback 返回 FALSE ，其原来的输入 内容被直接送到浏览器。

这个参数 output_callback 可以通过直接给一个 NULL 值而避开。

ob_end_clean(), ob_end_flush(), ob_clean(), ob_flush() and ob_start() 不能从一个回调函数中调用。 如果从回调函数中调用了它们，产生的行为是不明确的。 如果想要删除缓冲区的内容，从回调函数中返回一个"" (空字符串)。 更不能从一个回调函数中使用像print_r($expression, true) 或highlight_file($filename, true) 一样的输出缓冲函数。

Note:

在PHP 4.0.4中， ob_gzhandler() 被引入是为了简化把gz编码过 数据发送到支持压缩网页的浏览器。 ob_gzhandler() 会判定浏览器可以接受哪种类型的编码内容，并返回相应 的输出。

chunk_size

如果可选参数 chunk_size 被赋值了，在任何一个能引起缓冲区的长度等于 或超过 chunk_size 的输出操作后，缓冲区都会被刷送。 默认值 0 意味着函数仅在最后被调用，其余的特殊值可以将 chunk_size 从 1 设定到 4096。

erase

如果可选参数 erase 被赋成 FALSE，直到脚本执行完成缓冲区才被删除。 这使得，如果调用了冲刷和清洗（清除）函数，会抛出一个"notice",并返回 FALSE 值。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
4.3.2 | 在传递的 output_callback 不能被执行时，此函数 被改成返回 FALSE
4.2.0 | 添加了 erase 参数。

范例

Example #1 用户自定义回调函数的例子

<?php

function callback($buffer)
{
  // replace all the apples with oranges
  return (str_replace("apples", "oranges", $buffer));
}

ob_start("callback");

?>
<html>
<body>
<p>It's like comparing apples to oranges.</p>
</body>
</html>
<?php

ob_end_flush();

?>

以上例程会输出：

<html>
<body>
<p>It's like comparing oranges to oranges.</p>
</body>
</html>

参见

  • ob_get_contents() - 返回输出缓冲区的内容
  • ob_end_clean() - 清空（擦除）缓冲区并关闭输出缓冲
  • ob_end_flush() - 冲刷出（送出）输出缓冲区内容并关闭缓冲
  • ob_implicit_flush() - 打开/关闭绝对刷送
  • ob_gzhandler() - 在ob_start中使用的用来压缩输出缓冲区中内容的回调函数。ob_start callback function to gzip output buffer
  • ob_iconv_handler() - 以输出缓冲处理程序转换字符编码
  • mb_output_handler() - 在输出缓冲中转换字符编码的回调函数
  • ob_tidyhandler() - ob_start callback function to repair the buffer

ob_list_handlers
output_add_rewrite_var
Output Control 函数


添加URL重写器的值（Add URL rewriter values）

ob_start
output_reset_rewrite_vars
Output Control 函数
PHP Manual

output_add_rewrite_var

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

output_add_rewrite_var — 添加URL重写器的值（Add URL rewriter values）

说明

bool output_add_rewrite_var ( string $name , string $value )

此函数给URL重写机制添加名/值对。 这种名值对将被添加到URL（以GET参数的形式）和表单（以input隐藏域的形式），当透明URL重写用 session.use_trans_sid 开启时同样可以添加到session ID。 要注意，绝对URL(http://example.com/..)不能被重写。

此函数的行为由url_rewriter.tags php.ini 参数控制。

Note: 如果还没有活跃的输出缓冲区，调用此函数将隐式地开启它。

参数

name

变量名。

value

变量值。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 output_add_rewrite_var() example

<?php
output_add_rewrite_var('var', 'value');

// some links
echo '<a href="file.php">link</a>
<a href="http://example.com">link2</a>';

// a form
echo '<form action="script.php" method="post">
<input type="text" name="var2" />
</form>';

print_r(ob_list_handlers());
?>

以上例程会输出：

<a href="file.php?var=value">link</a>
<a href="http://example.com">link2</a>

<form action="script.php" method="post">
<input type="hidden" name="var" value="value" />
<input type="text" name="var2" />
</form>

Array
(
    [0] => URL-Rewriter
)

参见

  • output_reset_rewrite_vars() - 重设URL重写器的值（Reset URL rewriter values）
  • ob_flush() - 冲刷出（送出）输出缓冲区中的内容
  • ob_list_handlers() - 列出所有使用中的输出处理程序。

ob_start
output_reset_rewrite_vars
Output Control 函数


重设URL重写器的值（Reset URL rewriter values）

output_add_rewrite_var
PHP 选项/信息
Output Control 函数
PHP Manual

output_reset_rewrite_vars

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

output_reset_rewrite_vars — 重设URL重写器的值（Reset URL rewriter values）

说明

bool output_reset_rewrite_vars ( void )

此函数重置URL重写器，移除所有的先前由 output_add_rewrite_var() 函数设置的重写变量，或者移除会话机制（如果session.use_trans_sid 在 session_start()上进行了设置）。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 output_reset_rewrite_vars() example

<?php
session_start();
output_add_rewrite_var('var', 'value');

echo '<a href="file.php">link</a>';
ob_flush();

output_reset_rewrite_vars();
echo '<a href="file.php">link</a>';
?>

以上例程会输出：

<a href="file.php?PHPSESSID=xxx&var=value">link</a>
<a href="file.php">link</a>

参见

  • output_add_rewrite_var() - 添加URL重写器的值（Add URL rewriter values）
  • ob_flush() - 冲刷出（送出）输出缓冲区中的内容
  • ob_list_handlers() - 列出所有使用中的输出处理程序。
  • session_start() - 启动新会话或者重用现有会话

output_add_rewrite_var
PHP 选项/信息
Output Control 函数


PHP 选项和信息

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • PHP 选项/信息 函数
    • assert_options — 设置/获取断言的各种标志
    • assert — 检查一个断言是否为 FALSE
    • cli_get_process_title — Returns the current process title
    • cli_set_process_title — Sets the process title
    • dl — 运行时载入一个 PHP 扩展
    • extension_loaded — 检查一个扩展是否已经加载
    • gc_collect_cycles — 强制收集所有现存的垃圾循环周期
    • gc_disable — 停用循环引用收集器
    • gc_enable — 激活循环引用收集器
    • gc_enabled — 返回循环引用计数器的状态
    • gc_mem_caches — Reclaims memory used by the Zend Engine memory manager
    • get_cfg_var — 获取 PHP 配置选项的值
    • get_current_user — 获取当前 PHP 脚本所有者名称
    • get_defined_constants — 返回所有常量的关联数组，键是常量名，值是常量值
    • get_extension_funcs — 返回模块函数名称的数组
    • get_include_path — 获取当前的 include_path 配置选项
    • get_included_files — 返回被 include 和 require 文件名的 array
    • get_loaded_extensions — 返回所有编译并加载模块名的 array
    • get_magic_quotes_gpc — 获取当前 magic_quotes_gpc 的配置选项设置
    • get_magic_quotes_runtime — 获取当前 magic_quotes_runtime 配置选项的激活状态
    • get_required_files — 别名 get_included_files
    • get_resources — Returns active resources
    • getenv — 获取一个环境变量的值
    • getlastmod — 获取页面最后修改的时间
    • getmygid — 获取当前 PHP 脚本拥有者的 GID
    • getmyinode — 获取当前脚本的索引节点（inode）
    • getmypid — 获取 PHP 进程的 ID
    • getmyuid — 获取 PHP 脚本所有者的 UID
    • getopt — 从命令行参数列表中获取选项
    • getrusage — 获取当前资源使用状况
    • ini_alter — 别名 ini_set
    • ini_get_all — 获取所有配置选项
    • ini_get — 获取一个配置选项的值
    • ini_restore — 恢复配置选项的值
    • ini_set — 为一个配置选项设置值
    • magic_quotes_runtime — 别名 set_magic_quotes_runtime
    • main — 虚拟的main
    • memory_get_peak_usage — 返回分配给 PHP 内存的峰值
    • memory_get_usage — 返回分配给 PHP 的内存量
    • php_ini_loaded_file — 取得已加载的 php.ini 文件的路径
    • php_ini_scanned_files — 返回从额外 ini 目录里解析的 .ini 文件列表
    • php_logo_guid — 获取 logo 的 guid
    • php_sapi_name — 返回 web 服务器和 PHP 之间的接口类型
    • php_uname — 返回运行 PHP 的系统的有关信息
    • phpcredits — 打印 PHP 贡献者名单
    • phpinfo — 输出关于 PHP 配置的信息
    • phpversion — 获取当前的PHP版本
    • putenv — 设置环境变量的值
    • restore_include_path — 还原 include_path 配置选项的值
    • set_include_path — 设置 include_path 配置选项
    • set_magic_quotes_runtime — 设置当前 magic_quotes_runtime 配置选项的激活状态
    • set_time_limit — 设置脚本最大执行时间
    • sys_get_temp_dir — 返回用于临时文件的目录
    • version_compare — 对比两个「PHP 规范化」的版本数字字符串
    • zend_logo_guid — 获取 Zend guid
    • zend_thread_id — 返回当前线程的唯一识别符
    • zend_version — 获取当前 Zend 引擎的版本
output_reset_rewrite_vars
简介
影响 PHP 行为的扩展


简介

这些函数允许你获得许多关于PHP本身的参数，例如：运行时的配置，被加载的扩展，版本等。 你也将找到设置你的运行中的PHP的选项的函数。可能最好用的 PHP- 函数 phpinfo() 可以在这里找到。

PHP 选项/信息
安装／配置
PHP 选项/信息


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
PHP 选项/信息


运行时配置

这些函数的行为受 php.ini 中的设置影响。

PHP 选项/Inf 配置选项
名字 | 默认 | 可修改范围 | 更新日志
assert.active | "1" | PHP_INI_ALL |
assert.bail | "0" | PHP_INI_ALL |
assert.warning | "1" | PHP_INI_ALL |
assert.callback | NULL | PHP_INI_ALL |
assert.quiet_eval | "0" | PHP_INI_ALL |
assert.exception | "0" | PHP_INI_ALL | Available since PHP 7.0.0.
enable_dl | "1" | PHP_INI_SYSTEM | 本过时特性将肯定会在未来被移除。
max_execution_time | "30" | PHP_INI_ALL |
max_input_time | "-1" | PHP_INI_PERDIR | 自 PHP 4.3.0 起有效。
max_input_nesting_level | "64" | PHP_INI_PERDIR | 自 PHP 4.4.8 and PHP 5.2.3 起有效。
max_input_vars | 1000 | PHP_INI_PERDIR | 自 PHP 5.3.9 起有效。
magic_quotes_gpc | "1" | PHP_INI_PERDIR | 在 PHP <= 4.2.3 是 PHP_INI_ALL，在 PHP 5.4.0 中被移除。
magic_quotes_runtime | "0" | PHP_INI_ALL | 在 PHP 5.4.0 中移除
zend.enable_gc | "1" | PHP_INI_ALL | 自 PHP 5.3.0 起有效。
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

assert.active boolean

激活 assert() 断言评测。

assert.bail boolean

失败的断言将中止脚本。

assert.warning boolean

为每个失败的断言产生一条 PHP 警告信息

assert.callback string

失败的断言将调用用户的函数

assert.quiet_eval boolean

在 断言表达式执行时 error_reporting() 使用当前的设置。
如果启用了，在执行时错误将不会被显示（隐式的 error_reporting(0)）。
如果禁用了，错误将根据 error_reporting() 的设置来显示。

assert.exception boolean

在断言（assert）失败时产生 AssertionError 异常。

enable_dl boolean

该指令仅对 Apache 模块版本的 PHP 有效。 你可以针对每个虚拟机或每个目录开启或关闭 dl() 动态加载 PHP 模块。

关闭动态加载的主要原因是为了安全。通过动态加载，有可能忽略所有 open_basedir 限制。 默认允许动态加载，除了使用 安全模式。在 安全模式，总是无法使用 dl()。

max_execution_time integer

这设置了脚本被解析器中止之前允许的最大执行时间，单位秒。 这有助于防止写得不好的脚本占尽服务器资源。 默认设置为 30。 从命令行运行 PHP 时，默认设置为 0。

最大执行时间不会影响系统调用和系统操作等。更多细节参见 set_time_limit()。

在 安全模式 下你不能通过 ini_set() 来修改此设置。 唯一的解决方法是关闭安全模式或者在 php.ini 中修改时间限制。

你的 web 服务器也可以有其他超时设置，也有可能中断 PHP 的执行。 Apache 有一个 Timeout 指令，IIS 有一个 CGI 超时功能。 他们默认都是 300 秒。更多具体信息参见你的 web 服务器的文档。

max_input_time integer

脚本解析输入数据（类似 POST 和 GET）允许的最大时间，单位是秒。 它从接收所有数据到开始执行脚本进行测量的。

max_input_nesting_level integer

设置输入变量的嵌套深度 (例如 $_GET，$_POST......)

max_input_vars integer

接受多少 输入的变量（限制分别应用于 $_GET、$_POST 和 $_COOKIE 超全局变量） 指令的使用减轻了以哈希碰撞来进行拒绝服务攻击的可能性。 如有超过指令指定数量的输入变量，将会导致 E_WARNING 的产生， 更多的输入变量将会从请求中截断。

magic_quotes_gpc boolean
Warning

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

为 GPC (Get/Post/Cookie) 操作设置 magic_quotes 状态。 当 magic_quotes 为 on，所有的 ' (单引号)、" (双引号)、\（反斜杠）和 NUL's 被一个反斜杠自动转义。

Note:

在 PHP 4，$_ENV也会被转义。

Note:

如果 magic_quotes_sybase 也是 ON，它会完全覆盖 magic_quotes_gpc。 两个指令都启用意味着只有单引号被转义为 ''。 双引号、反斜杠和 NUL's 不会被转义。

See also get_magic_quotes_gpc()

magic_quotes_runtime boolean
Warning

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

如果启用了 magic_quotes_runtime，大多数返回任何形式外部数据的函数，包括数据库和文本段将会用反斜线转义引号。 如果启用了 magic_quotes_sybase，单引号会被单引号转义而不是反斜线。

受 magic_quotes_runtime 影响的函数（不包括 PECL 里的函数）：

  • get_meta_tags()
  • file_get_contents()
  • file()
  • fgets()
  • fwrite()
  • fread()
  • fputcsv()
  • stream_socket_recvfrom()
  • exec()
  • system()
  • passthru()
  • stream_get_contents()
  • bzread()
  • gzfile()
  • gzgets()
  • gzwrite()
  • gzread()
  • exif_read_data()
  • dba_insert()
  • dba_replace()
  • dba_fetch()
  • ibase_fetch_row()
  • ibase_fetch_assoc()
  • ibase_fetch_object()
  • mssql_fetch_row()
  • mssql_fetch_object()
  • mssql_fetch_array()
  • mssql_fetch_assoc()
  • mysqli_fetch_row()
  • mysqli_fetch_array()
  • mysqli_fetch_assoc()
  • mysqli_fetch_object()
  • pg_fetch_row()
  • pg_fetch_assoc()
  • pg_fetch_array()
  • pg_fetch_object()
  • pg_fetch_all()
  • pg_select()
  • sybase_fetch_object()
  • sybase_fetch_array()
  • sybase_fetch_assoc()
  • SplFileObject::fgets()
  • SplFileObject::fgetcsv()
  • SplFileObject::fwrite()

zend.enable_gc boolean

启用或禁用循环引用记数搜集器。

安装
资源类型
安装／配置


预定义常量

下列常量作为 PHP 核心的一部分总是可用的。

预定义 phpcredits() 常量
常量 | 值 | 描述
CREDITS_GROUP | 1 | 核心开发者名单
CREDITS_GENERAL | 2 | 总的贡献：语言设计和理念，PHP 作者 和 SAPI 模块。
CREDITS_SAPI | 4 | PHP 的服务器 API 模块列表，以及它们的作者。
CREDITS_MODULES | 8 | PHP 扩展的列表，以及它们的作者。
CREDITS_DOCS | 16 | 文档组的贡献。
CREDITS_FULLPAGE | 32 | 通常与其他标志组合使用。通过其他标志指示了完整独立的 HTML 页面，用于打印包含信息。
CREDITS_QA | 64 | 质量保证团队的贡献。
CREDITS_ALL | -1 | 所有的贡献者，等于使用 CREDITS_DOCS + CREDITS_GENERAL + CREDITS_GROUP + CREDITS_MODULES + CREDITS_QA CREDITS_FULLPAGE。 它以合适的标签产生了完整的独立 HTML 页面。这是默认的值。
phpinfo() 常量
常量 | 值 | 描述
INFO_GENERAL | 1 | 配置行，php.ini 的位置、构建日期，Web 服务器、操作系统及其他。
INFO_CREDITS | 2 | PHP 贡献者。参见 phpcredits()。
INFO_CONFIGURATION | 4 | 当前 PHP 指令的本地（Local）和主（Master）值。参见 ini_get()。
INFO_MODULES | 8 | 已加载的模块和各自的设置。
INFO_ENVIRONMENT | 16 | 环境变量信息在 $_ENV 中亦有效。
INFO_VARIABLES | 32 | 显示所有 EGPCS （环境变量、GET、POST、Cookie、Server）中的预定义变量。
INFO_LICENSE | 64 | PHP 版权信息。参见 » license faq。
INFO_ALL | -1 | 显示以上所有。这是默认值。
INI 常量
常量 | 值 | 描述
INI_USER | 1 | Unused
INI_PERDIR | 2 | Unused
INI_SYSTEM | 4 | Unused
INI_ALL | 7 | Unused

断言常量，这些值用于设置 assert_options() 中的断言标记 。

assert() 常量
常量 | INI 设置 | 描述
ASSERT_ACTIVE | assert.active | 启用 assert()。
ASSERT_CALLBACK | assert.callback | 失败断言的回调函数。
ASSERT_BAIL | assert.bail | 断言失败时中止执行。
ASSERT_WARNING | assert.warning | 为每个失败的断言产生一条 PHP 警告。
ASSERT_QUIET_EVAL | assert.quiet_eval | 在执行断言表达式时禁用 error_reporting。

以下常量仅在主机操作系统是 Windows的情况下有效，能得到不同版本信息，能够检测利用一些功能。 自 PHP 5.3.0 起有效。

Windows 特定常量
常量 | 描述
PHP_WINDOWS_VERSION_MAJOR | windows 主版本，可以是 4 (NT4/Me/98/95)、 5 (XP/2003 R2/2003/2000) 或 6 (Vista/2008)。
PHP_WINDOWS_VERSION_MINOR | Windows 副版本号，可以是 0 (Vista/2008/2000/NT4/95)、 1 (XP)、2 (2003 R2/2003/XP x64)、 10 (98) 或 90 (ME)。
PHP_WINDOWS_VERSION_BUILD | Windows 内部版本号(例如 Windows Vista SP1 是 build 6001)
PHP_WINDOWS_VERSION_PLATFORM | PHP 当前运行的平台， Windows Vista/XP/2000/NT4、Server 2008/2003 的值是 2， Windows ME/98/95 下值是 1。
PHP_WINDOWS_VERSION_SP_MAJOR | 安装的 service pack 主版本号，没有安装是 0。 例如， Windows XP service pack 3 上这个值是 3。
PHP_WINDOWS_VERSION_SP_MINOR | 安装的 service pack 副版本号，如果没有安装则是 0 。
PHP_WINDOWS_VERSION_SUITEMASK | The suitemask is a bitmask that can tell if various features of Windows is installed, see the table below for possible bitfield values.
PHP_WINDOWS_VERSION_PRODUCTTYPE | This contains the value used to determine the PHP_WINDOWS_NT_* constants. This value may be one of the PHP_WINDOWS_NT_* constants indicating the platform type.
PHP_WINDOWS_NT_DOMAIN_CONTROLLER | 这是域控制器
PHP_WINDOWS_NT_SERVER | 这是一个服务器系统 (eg. Server 2008/2003/2000)，注意如果这是一个域控制器，通过 PHP_WINDOWS_NT_DOMAIN_CONTROLLER 报告。
PHP_WINDOWS_NT_WORKSTATION | 这是一个工作站系统 (例如 Vista/XP/2000/NT4)

此功能列表可以通过 PHP_WINDOWS_VERSION_SUITEMASK 位掩码检测。

Windows suitemask 位字段
Bits | 描述
0x00000004 | 安装的是 Microsoft BackOffice components。
0x00000400 | 安装的是 Windows Server 2003, Web Edition。
0x00004000 | 安装的是 Windows Server 2003, Compute Cluster Edition。
0x00000080 | 安装的是 Windows Server 2008 Datacenter, Windows Server 2003, Datacenter Edition or Windows 2000 Datacenter Server。
0x00000002 | 安装的是 Windows Server 2008 Enterprise, Windows Server 2003, Enterprise Edition, Windows 2000 Advanced Server 或 Windows NT Server 4.0 Enterprise Edition 。
0x00000040 | 安装的是 Windows XP Embedded。
0x00000200 | 安装的是 Windows Vista Home Premium, Windows Vista Home Basic 或 Windows XP Home Edition。
0x00000100 | Remote Desktop is supported, but only one interactive session is supported. This value is set unless the system is running in application server mode.
0x00000001 | Microsoft Small Business Server was once installed on the system, but may have been upgraded to another version of Windows.
0x00000020 | Microsoft Small Business Server is installed with the restrictive client license in force.
0x00002000 | 安装的是 Windows Storage Server 2003 R2 或 Windows Storage Server 2003。
0x00000010 | 中断服务安装了。这个值总是设置的。如果这个值设置了，但 0x00000100 没有设置，操作系统运行于 application server 模式。
0x00008000 | 安装的是 Windows Home Server。
资源类型
PHP 选项/信息 函数
PHP 选项/信息


PHP 选项/信息 函数

Table of Contents

  • assert_options — 设置/获取断言的各种标志
  • assert — 检查一个断言是否为 FALSE
  • cli_get_process_title — Returns the current process title
  • cli_set_process_title — Sets the process title
  • dl — 运行时载入一个 PHP 扩展
  • extension_loaded — 检查一个扩展是否已经加载
  • gc_collect_cycles — 强制收集所有现存的垃圾循环周期
  • gc_disable — 停用循环引用收集器
  • gc_enable — 激活循环引用收集器
  • gc_enabled — 返回循环引用计数器的状态
  • gc_mem_caches — Reclaims memory used by the Zend Engine memory manager
  • get_cfg_var — 获取 PHP 配置选项的值
  • get_current_user — 获取当前 PHP 脚本所有者名称
  • get_defined_constants — 返回所有常量的关联数组，键是常量名，值是常量值
  • get_extension_funcs — 返回模块函数名称的数组
  • get_include_path — 获取当前的 include_path 配置选项
  • get_included_files — 返回被 include 和 require 文件名的 array
  • get_loaded_extensions — 返回所有编译并加载模块名的 array
  • get_magic_quotes_gpc — 获取当前 magic_quotes_gpc 的配置选项设置
  • get_magic_quotes_runtime — 获取当前 magic_quotes_runtime 配置选项的激活状态
  • get_required_files — 别名 get_included_files
  • get_resources — Returns active resources
  • getenv — 获取一个环境变量的值
  • getlastmod — 获取页面最后修改的时间
  • getmygid — 获取当前 PHP 脚本拥有者的 GID
  • getmyinode — 获取当前脚本的索引节点（inode）
  • getmypid — 获取 PHP 进程的 ID
  • getmyuid — 获取 PHP 脚本所有者的 UID
  • getopt — 从命令行参数列表中获取选项
  • getrusage — 获取当前资源使用状况
  • ini_alter — 别名 ini_set
  • ini_get_all — 获取所有配置选项
  • ini_get — 获取一个配置选项的值
  • ini_restore — 恢复配置选项的值
  • ini_set — 为一个配置选项设置值
  • magic_quotes_runtime — 别名 set_magic_quotes_runtime
  • main — 虚拟的main
  • memory_get_peak_usage — 返回分配给 PHP 内存的峰值
  • memory_get_usage — 返回分配给 PHP 的内存量
  • php_ini_loaded_file — 取得已加载的 php.ini 文件的路径
  • php_ini_scanned_files — 返回从额外 ini 目录里解析的 .ini 文件列表
  • php_logo_guid — 获取 logo 的 guid
  • php_sapi_name — 返回 web 服务器和 PHP 之间的接口类型
  • php_uname — 返回运行 PHP 的系统的有关信息
  • phpcredits — 打印 PHP 贡献者名单
  • phpinfo — 输出关于 PHP 配置的信息
  • phpversion — 获取当前的PHP版本
  • putenv — 设置环境变量的值
  • restore_include_path — 还原 include_path 配置选项的值
  • set_include_path — 设置 include_path 配置选项
  • set_magic_quotes_runtime — 设置当前 magic_quotes_runtime 配置选项的激活状态
  • set_time_limit — 设置脚本最大执行时间
  • sys_get_temp_dir — 返回用于临时文件的目录
  • version_compare — 对比两个「PHP 规范化」的版本数字字符串
  • zend_logo_guid — 获取 Zend guid
  • zend_thread_id — 返回当前线程的唯一识别符
  • zend_version — 获取当前 Zend 引擎的版本
预定义常量
assert_options
PHP 选项/信息


设置/获取断言的各种标志

PHP 选项/信息 函数
assert
PHP 选项/信息 函数
PHP Manual

assert_options

(PHP 4, PHP 5, PHP 7)

assert_options — 设置/获取断言的各种标志

说明

mixed assert_options ( int $what [, mixed $value ] )

设置 assert() 的各种控制选项，或者是仅仅查询当前的设置。

参数

what

断言标志
标志 | INI 设置 | 默认值 | 描述
ASSERT_ACTIVE | assert.active | 1 | 启用 assert() 断言
ASSERT_WARNING | assert.warning | 1 | 为每个失败的断言产生一个 PHP 警告（warning）
ASSERT_BAIL | assert.bail | 0 | 在断言失败时中止执行
ASSERT_QUIET_EVAL | assert.quiet_eval | 0 | 在断言表达式求值时禁用 error_reporting
ASSERT_CALLBACK | assert.callback | (NULL) | 断言失败时调用回调函数

value

标志的新值。

返回值

返回任意标志的原始设置，出错时返回 FALSE。

范例

Example #1 assert_options() 例子

<?php
// 处理断言失败时的函数
function assert_failure()
{
    echo 'Assert failed';
}

// 我们的测试函数
function test_assert($parameter)
{
    assert(is_bool($parameter));
}

// 设置断言标志
assert_options(ASSERT_ACTIVE,   true);
assert_options(ASSERT_BAIL,     true);
assert_options(ASSERT_WARNING,  false);
assert_options(ASSERT_CALLBACK, 'assert_failure');

// 让一个断言会失败
test_assert(1);

// 由于 ASSERT_BAIL 是 true，这里永远也到不了
echo 'Never reached';
?>

参见

  • assert() - 检查一个断言是否为 FALSE

PHP 选项/信息 函数
assert
PHP 选项/信息 函数


检查一个断言是否为 FALSE

assert_options
cli_get_process_title
PHP 选项/信息 函数
PHP Manual

assert

(PHP 4, PHP 5, PHP 7)

assert — 检查一个断言是否为 FALSE

说明

PHP 5

bool assert ( mixed $assertion [, string $description ] )

PHP 7

bool assert ( mixed $assertion [, Throwable $exception ] )

assert() 会检查指定的 assertion 并在结果为 FALSE 时采取适当的行动。

Traditional assertions (PHP 5 and 7)

如果 assertion 是字符串，它将会被 assert() 当做 PHP 代码来执行。 assertion 是字符串的优势是当禁用断言时它的开销会更小，并且在断言失败时消息会包含 assertion 表达式。 这意味着如果你传入了 boolean 的条件作为 assertion，这个条件将不会显示为断言函数的参数；在调用你定义的 assert_options() 处理函数时，条件会转换为字符串，而布尔值 FALSE 会被转换成空字符串。

断言这个功能应该只被用来调试。 你应该用于完整性检查时测试条件是否始终应该为 TRUE，来指示某些程序错误，或者检查具体功能的存在（类似扩展函数或特定的系统限制和功能）。

断言不应该用于普通运行时操作，类似输入参数的检查。 作为一个经验法则，在断言禁用时你的代码也应该能够正确地运行。

assert() 的行为可以通过 assert_options() 来配置，或者手册页面上描述的 .ini 设置。

assert_options() ASSERT_CALLBACK 配置指令允许设置回调函数来处理失败的断言。

assert() 回调函数在构建自动测试套件的时候尤其有用，因为它们允许你简易地捕获传入断言的代码，并包含断言的位置信息。 当信息能够被其他方法捕获，使用断言可以让它更快更方便！

回调函数应该接受三个参数。 第一个参数包括了断言失败所在的文件。 第二个参数包含了断言失败所在的行号，第三个参数包含了失败的表达式（如有任意 — 字面值例如 1 或者 "two" 将不会传递到这个参数）。 PHP 5.4.8 及更高版本的用户也可以提供第四个可选参数，如果设置了，用于将 description 指定到 assert()。

Expectations (PHP 7 only)

assert() is a language construct in PHP 7, allowing for the definition of expectations: assertions that take effect in development and testing environments, but are optimised away to have zero cost in production.

While assert_options() can still be used to control behaviour as described above for backward compatibility reasons, PHP 7 only code should use the two new configuration directives to control the behaviour of assert() and not call assert_options().

PHP 7 configuration directives for assert()
Directive Default value Possible values
zend.assertions 1
  • 1: generate and execute code (development mode)
  • 0: generate code but jump around it at runtime
  • -1: do not generate code (production mode)
assert.exception 0
  • 1: throw when the assertion fails, either by throwing the object provided as the exception or by throwing a new AssertionError object if exception wasn't provided
  • 0: use or generate a Throwable as described above, but only generate a warning based on that object rather than throwing it (compatible with PHP 5 behaviour)

参数

assertion

断言。In PHP 5, this must be either a string to be evaluated or a boolean to be tested. In PHP 7, this may also be any expression that returns a value, which will be executed and the result used to indicate whether the assertion succeeded or failed.

description

如果 assertion 失败了，选项 description 将会包括在失败信息里。

exception

In PHP 7, the second parameter can be a Throwable object instead of a descriptive string, in which case this is the object that will be thrown if the assertion fails and the assert.exception configuration directive is enabled.

返回值

assertion 是 false 则返回 FALSE，否则是 TRUE。

更新日志

版本 | 说明
7.0.0 | assert() is now a language construct and not a function. assertion() can now be an expression. The second parameter is now interpreted either as an exception (if a Throwable object is given), or as the description supported from PHP 5.4.8 onwards.
5.4.8 | 增加了参数 description。 description 现在也作为第四个参数提供给 ASSERT_CALLBACK 模式里的回调函数。

范例

Traditional assertions (PHP 5 and 7)

Example #1 使用自定义处理程序处理失败的断言

<?php
// 激活断言，并设置它为 quiet
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_WARNING, 0);
assert_options(ASSERT_QUIET_EVAL, 1);

//创建处理函数
function my_assert_handler($file, $line, $code)
{
    echo "<hr>Assertion Failed:
        File '$file'<br />
        Line '$line'<br />
        Code '$code'<br /><hr />";
}

// 设置回调函数
assert_options(ASSERT_CALLBACK, 'my_assert_handler');

// 让一则断言失败
assert('mysql_query("")');
?>

Example #2 使用自定义处理器打印描述信息

<?php
// 激活断言，并设置它为 quiet
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_WARNING, 0);
assert_options(ASSERT_QUIET_EVAL, 1);

//创建处理函数
function my_assert_handler($file, $line, $code, $desc = null)
{
    echo "Assertion failed at $file:$line: $code";
    if ($desc) {
        echo ": $desc";
    }
    echo "\n";
}

// 设置回调函数
assert_options(ASSERT_CALLBACK, 'my_assert_handler');

// Make an assertion that should fail
assert('2 < 1');
assert('2 < 1', 'Two is less than one');
?>

以上例程会输出：

Assertion failed at test.php:21: 2 < 1
Assertion failed at test.php:22: 2 < 1: Two is less than one

Expectations (PHP 7 only)

Example #3 Expectations without a custom exception

<?php
assert(true == false);
echo 'Hi!';
?>

With zend.assertions set to 0, the above example will output:

Hi!

With zend.assertions set to 1 and assert.exception set to 0, the above example will output:

Warning: assert(): assert(true == false) failed in - on line 2
Hi!

With zend.assertions set to 1 and assert.exception set to 1, the above example will output:

Fatal error: Uncaught AssertionError: assert(true == false) in -:2
Stack trace:
#0 -(2): assert(false, 'assert(true == ...')
#1 {main}
  thrown in - on line 2

Example #4 Expectations with a custom exception

<?php
class CustomError extends AssertionError {}

assert(true == false, new CustomError('True is not false!'));
echo 'Hi!';
?>

With zend.assertions set to 0, the above example will output:

Hi!

With zend.assertions set to 1 and assert.exception set to 0, the above example will output:

Warning: assert(): CustomError: True is not false! in -:4
Stack trace:
#0 {main} failed in - on line 4
Hi!

With zend.assertions set to 1 and assert.exception set to 1, the above example will output:

Fatal error: Uncaught CustomError: True is not false! in -:4
Stack trace:
#0 {main}
  thrown in - on line 4

参见

  • assert_options() - 设置/获取断言的各种标志

assert_options
cli_get_process_title
PHP 选项/信息 函数


Returns the current process title

assert
cli_set_process_title
PHP 选项/信息 函数
PHP Manual

cli_get_process_title

(PHP 5 >= 5.5.0, PHP 7)

cli_get_process_title — Returns the current process title

说明

string cli_get_process_title ( void )

Returns the current process title, as set by cli_set_process_title(). Note that this may not exactly match what is shown in ps or top, depending on your operating system.

This function is available only in CLI mode.

参数

此函数没有参数。

返回值

Return a string with the current process title or NULL on error.

错误／异常

An E_WARNING will be generated if the operating system is unsupported.

范例

Example #1 cli_get_process_title() example

<?php
echo "Process title: " . cli_get_process_title() . "\n";
?>

参见

  • cli_set_process_title() - Sets the process title

assert
cli_set_process_title
PHP 选项/信息 函数


Sets the process title

cli_get_process_title
dl
PHP 选项/信息 函数
PHP Manual

cli_set_process_title

(PHP 5 >= 5.5.0, PHP 7)

cli_set_process_title — Sets the process title

说明

bool cli_set_process_title ( string $title )

Sets the process title visible in tools such as top and ps. This function is available only in CLI mode.

参数

title

The new title.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

An E_WARNING will be generated if the operating system is unsupported.

范例

Example #1 cli_set_process_title() example

<?php
$title = "My Amazing PHP Script";
$pid = getmypid(); // you can use this to see your process title in ps

if (!cli_set_process_title($title)) {
    echo "Unable to set process title for PID $pid...\n";
    exit(1);
} else {
    echo "The process title '$title' for PID $pid has been set for your process!\n";
    sleep(5);
}
?>

参见

  • cli_get_process_title() - Returns the current process title
  • setproctitle() - Set the process title

cli_get_process_title
dl
PHP 选项/信息 函数


运行时载入一个 PHP 扩展

cli_set_process_title
extension_loaded
PHP 选项/信息 函数
PHP Manual

dl

(PHP 4, PHP 5, PHP 7)

dl — 运行时载入一个 PHP 扩展

说明

bool dl ( string $library )

载入指定参数 library 的 PHP 扩展。

使用 extension_loaded() 来测试指定的扩展是否已经激活。 这既能用于内建的扩展也可以用于动态加载的扩展（既可以通过 php.ini 也可以通过 dl()）。

Warning

在 PHP 5.3 里，此函数被某些 SAPI 移除了。

参数

library

此参数仅仅是要加载的扩展的文件名，依赖于你的平台。 比如，sockets（作为共享模块编译，而不是默认的！）在 Unix 平台上称为 sockets.so 而 在 Windows 平台上是 php_sockets.dll。

扩展加载的目录依赖于你的平台：

Windows - 如果没有在 php.ini 里明确设置，扩展默认会从 C:\php5\ 加载。

Unix - 如果没有在 php.ini 里明确设置，默认的扩展目录依赖于

  • PHP 是否通过 --enable-debug 选项构建
  • PHP 是否以（实验性质的）ZTS （Zned 线程安全）支持构建
  • 当前的内部 ZEND_MODULE_API_NO（Zend 内部模块 API 数字，基本上是主要模块修改时的日期）
考虑到上述，目录默认为 <install-dir>/lib/php/extensions/ <debug-or-not>-<zts-or-not>-ZEND_MODULE_API_NO，例如 /usr/local/php/lib/php/extensions/debug-non-zts-20010901 或 /usr/local/php/lib/php/extensions/no-debug-zts-20010901。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如果加载模块的功能是无效或者禁用的（既可以通过设置关闭 enable_dl 设置，也可以通过启用 php.ini 里的 安全模式）将导致一个 E_ERROR 并中断执行。 如果因为指定的库无法加载而导致 dl() 失败，除了返回 FALSE，还会产生一个 E_WARNING 的消息。

范例

Example #1 dl() 例子

<?php
// 加载一个扩展的例子，基于操作系统
if (!extension_loaded('sqlite')) {
    if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
        dl('php_sqlite.dll');
    } else {
        dl('sqlite.so');
    }
}

// 或者，使用常量 PHP_SHLIB_SUFFIX
if (!extension_loaded('sqlite')) {
    $prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '';
    dl($prefix . 'sqlite.' . PHP_SHLIB_SUFFIX);
}
?>

更新日志

版本 | 说明
7.0.0 | PHP-FPM 模式下已禁用 dl()。
5.3.9 | 尽管不推荐，但 PHP-FPM 模式下启用了 dl()。
5.3.0 | 由于稳定性，dl() 在某些 SAPI 中被禁用。仅仅允许 dl() 的 SAPI 为 CLI 和 Embed。 使用 扩展加载指令 作为替代。

注释

Note:

当 PHP 以支持 ZTS 构建时，不支持 dl()。 使用 扩展加载指令 作为替代。

Note:

在某些 Unix 平台上，dl() 是大小写敏感的。

Note: 当 PHP 运行在 安全模式 时，不能使用此函数。

参见

  • 扩展加载指令
  • extension_loaded() - 检查一个扩展是否已经加载

cli_set_process_title
extension_loaded
PHP 选项/信息 函数


检查一个扩展是否已经加载

dl
gc_collect_cycles
PHP 选项/信息 函数
PHP Manual

extension_loaded

(PHP 4, PHP 5, PHP 7)

extension_loaded — 检查一个扩展是否已经加载

说明

bool extension_loaded ( string $name )

检查一个扩展是否已经加载。

参数

name

扩展名称，大小写不敏感。

你可以用 phpinfo() 来查看一系列扩展名称，而在 CGI 或 CLI 的 PHP 版本里你可以使用 -m 参数来列出所有有效的扩展：

$ php -m
[PHP Modules]
xml
tokenizer
standard
sockets
session
posix
pcre
overload
mysql
mbstring
ctype

[Zend Modules]

返回值

如果 name 指定的扩展已加载，返回TRUE，否则返回 FALSE。

范例

Example #1 extension_loaded() 例子

<?php
if (!extension_loaded('gd')) {
    if (!dl('gd.so')) {
        exit;
    }
}
?>

参见

  • get_loaded_extensions() - 返回所有编译并加载模块名的 array
  • get_extension_funcs() - 返回模块函数名称的数组
  • phpinfo() - 输出关于 PHP 配置的信息
  • dl() - 运行时载入一个 PHP 扩展
  • function_exists() - 如果给定的函数已经被定义就返回 TRUE

dl
gc_collect_cycles
PHP 选项/信息 函数


强制收集所有现存的垃圾循环周期

extension_loaded
gc_disable
PHP 选项/信息 函数
PHP Manual

gc_collect_cycles

(PHP 5 >= 5.3.0, PHP 7)

gc_collect_cycles — 强制收集所有现存的垃圾循环周期

说明

int gc_collect_cycles ( void )

强制收集所有现存的垃圾循环周期。

参数

此函数没有参数。

返回值

返回收集的循环数量。

参见

  • 垃圾回收机制

extension_loaded
gc_disable
PHP 选项/信息 函数


停用循环引用收集器

gc_collect_cycles
gc_enable
PHP 选项/信息 函数
PHP Manual

gc_disable

(PHP 5 >= 5.3.0, PHP 7)

gc_disable — 停用循环引用收集器

说明

void gc_disable ( void )

停用循环引用收集器，设置 zend.enable_gc 为 0。

参数

此函数没有参数。

返回值

没有返回值。

参见

  • 垃圾回收机制

gc_collect_cycles
gc_enable
PHP 选项/信息 函数


激活循环引用收集器

gc_disable
gc_enabled
PHP 选项/信息 函数
PHP Manual

gc_enable

(PHP 5 >= 5.3.0, PHP 7)

gc_enable — 激活循环引用收集器

说明

void gc_enable ( void )

设置 zend.enable_gc 为 1， 激活循环引用收集器。

参数

此函数没有参数。

返回值

没有返回值。

参见

  • 垃圾回收机制

gc_disable
gc_enabled
PHP 选项/信息 函数


返回循环引用计数器的状态

gc_enable
gc_mem_caches
PHP 选项/信息 函数
PHP Manual

gc_enabled

(PHP 5 >= 5.3.0, PHP 7)

gc_enabled — 返回循环引用计数器的状态

说明

bool gc_enabled ( void )

返回循环引用计数器的状态。

参数

此函数没有参数。

返回值

如果垃圾收集器已启用则返回 TRUE，否则返回 FALSE。

范例

Example #1 一个 gc_enabled() 例子

<?php
if(gc_enabled()) gc_collect_cycles();
?>

参见

  • 垃圾回收机制

gc_enable
gc_mem_caches
PHP 选项/信息 函数


Reclaims memory used by the Zend Engine memory manager

gc_enabled
get_cfg_var
PHP 选项/信息 函数
PHP Manual

gc_mem_caches

(PHP 7)

gc_mem_caches — Reclaims memory used by the Zend Engine memory manager

说明

int gc_mem_caches ( void )

Reclaims memory used by the Zend Engine memory manager.

参数

此函数没有参数。

返回值

Returns the number of bytes freed.

参见

  • Garbage Collection

gc_enabled
get_cfg_var
PHP 选项/信息 函数


获取 PHP 配置选项的值

gc_mem_caches
get_current_user
PHP 选项/信息 函数
PHP Manual

get_cfg_var

(PHP 4, PHP 5, PHP 7)

get_cfg_var — 获取 PHP 配置选项的值

说明

string get_cfg_var ( string $option )

获取 PHP 配置选项 option 的值。

此函数不会返回 PHP 编译的配置信息，或从 Apache 配置文件读取。

检查系统是否使用了一个配置文件，并尝试获取 cfg_file_path 的配置设置的值。 如果有效，将会使用一个配置文件。

参数

option

配置选项的名称。

返回值

返回 option 指定的当前 PHP 配置变量的值，错误发生时返回 FALSE。

更新日志

版本 | 说明
5.3.0 | get_cfg_var() 被修复，能够返回 "array" 的 ini 选项。

参见

  • ini_get() - 获取一个配置选项的值
  • ini_get_all() - 获取所有配置选项

gc_mem_caches
get_current_user
PHP 选项/信息 函数


获取当前 PHP 脚本所有者名称

get_cfg_var
get_defined_constants
PHP 选项/信息 函数
PHP Manual

get_current_user

(PHP 4, PHP 5, PHP 7)

get_current_user — 获取当前 PHP 脚本所有者名称

说明

string get_current_user ( void )

返回当前 PHP 脚本所有者名称。

返回值

以字符串返回用户名。

范例

Example #1 get_current_user() 例子

<?php
echo 'Current script owner: ' . get_current_user();
?>

以上例程的输出类似于：

Current script owner: SYSTEM

参见

  • getmyuid() - 获取 PHP 脚本所有者的 UID
  • getmygid() - 获取当前 PHP 脚本拥有者的 GID
  • getmypid() - 获取 PHP 进程的 ID
  • getmyinode() - 获取当前脚本的索引节点（inode）
  • getlastmod() - 获取页面最后修改的时间

get_cfg_var
get_defined_constants
PHP 选项/信息 函数


返回所有常量的关联数组，键是常量名，值是常量值

get_current_user
get_extension_funcs
PHP 选项/信息 函数
PHP Manual

get_defined_constants

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

get_defined_constants — 返回所有常量的关联数组，键是常量名，值是常量值

说明

array get_defined_constants ([ bool $categorize = false ] )

返回当前所有已定义的常量名和值。 这包含 define() 函数所创建的，也包含了所有扩展所创建的。

参数

categorize

让此函数返回一个多维数组，分类为第一维的键名，常量和它们的值位于第二维。

<?php
define("MY_CONSTANT", 1);
print_r(get_defined_constants(true));
?>

以上例程的输出类似于：

Array
(
    [Core] => Array
        (
            [E_ERROR] => 1
            [E_WARNING] => 2
            [E_PARSE] => 4
            [E_NOTICE] => 8
            [E_CORE_ERROR] => 16
            [E_CORE_WARNING] => 32
            [E_COMPILE_ERROR] => 64
            [E_COMPILE_WARNING] => 128
            [E_USER_ERROR] => 256
            [E_USER_WARNING] => 512
            [E_USER_NOTICE] => 1024
            [E_ALL] => 2047
            [TRUE] => 1
        )

    [pcre] => Array
        (
            [PREG_PATTERN_ORDER] => 1
            [PREG_SET_ORDER] => 2
            [PREG_OFFSET_CAPTURE] => 256
            [PREG_SPLIT_NO_EMPTY] => 1
            [PREG_SPLIT_DELIM_CAPTURE] => 2
            [PREG_SPLIT_OFFSET_CAPTURE] => 4
            [PREG_GREP_INVERT] => 1
        )

    [user] => Array
        (
            [MY_CONSTANT] => 1
        )

)

返回值

返回的数组为 常量名 => 常量值，也可以按注册变量的扩展名称来分组。

更新日志

版本 | 说明
5.3.1 | 仅作用于 Windows：内核常量归类到 Core，之前是 mhash。
5.3.0 | 内核常量归类为 Core，之前是 internal。在 Windows 上，内核常量归类到 mhash。
5.2.11 | categorize 参数现在可以合适得被处理。 在此之前，categorize 被解释为 !is_null($categorize)，导致任何非 NULL 的值会强制常量分类。

范例

Example #1 get_defined_constants() 例子

<?php
print_r(get_defined_constants());
?>

以上例程的输出类似于：

Array
(
    [E_ERROR] => 1
    [E_WARNING] => 2
    [E_PARSE] => 4
    [E_NOTICE] => 8
    [E_CORE_ERROR] => 16
    [E_CORE_WARNING] => 32
    [E_COMPILE_ERROR] => 64
    [E_COMPILE_WARNING] => 128
    [E_USER_ERROR] => 256
    [E_USER_WARNING] => 512
    [E_USER_NOTICE] => 1024
    [E_ALL] => 2047
    [TRUE] => 1
)

参见

  • defined() - 检查某个名称的常量是否存在
  • get_loaded_extensions() - 返回所有编译并加载模块名的 array
  • get_defined_functions() - Returns an array of all defined functions
  • get_defined_vars() - 返回由所有已定义变量所组成的数组

get_current_user
get_extension_funcs
PHP 选项/信息 函数


返回模块函数名称的数组

get_defined_constants
get_include_path
PHP 选项/信息 函数
PHP Manual

get_extension_funcs

(PHP 4, PHP 5, PHP 7)

get_extension_funcs — 返回模块函数名称的数组

说明

array get_extension_funcs ( string $module_name )

该函数根据 module_name 返回模块内定义的所有函数的名称。

参数

module_name

模块名称。

Note:

这个参数必须是小写（lowercase）的。

返回值

返回包含所有函数名的数组，如果 module_name 不是一个有效的扩展则返回 FALSE。

范例

Example #1 打印 XML 函数

<?php
print_r(get_extension_funcs("xml"));
?>

以上例程的输出类似于：

Array
(
    [0] => xml_parser_create
    [1] => xml_parser_create_ns
    [2] => xml_set_object
    [3] => xml_set_element_handler
    [4] => xml_set_character_data_handler
    [5] => xml_set_processing_instruction_handler
    [6] => xml_set_default_handler
    [7] => xml_set_unparsed_entity_decl_handler
    [8] => xml_set_notation_decl_handler
    [9] => xml_set_external_entity_ref_handler
    [10] => xml_set_start_namespace_decl_handler
    [11] => xml_set_end_namespace_decl_handler
    [12] => xml_parse
    [13] => xml_parse_into_struct
    [14] => xml_get_error_code
    [15] => xml_error_string
    [16] => xml_get_current_line_number
    [17] => xml_get_current_column_number
    [18] => xml_get_current_byte_index
    [19] => xml_parser_free
    [20] => xml_parser_set_option
    [21] => xml_parser_get_option
    [22] => utf8_encode
    [23] => utf8_decode
)

参见

  • get_loaded_extensions() - 返回所有编译并加载模块名的 array
  • ReflectionExtension::getFunctions() - 获取扩展中的函数

get_defined_constants
get_include_path
PHP 选项/信息 函数


获取当前的 include_path 配置选项

get_extension_funcs
get_included_files
PHP 选项/信息 函数
PHP Manual

get_include_path

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

get_include_path — 获取当前的 include_path 配置选项

说明

string get_include_path ( void )

获取当前 include_path 配置选项的值。

返回值

返回字符串的路径。

范例

Example #1 get_include_path() 例子

<?php
echo get_include_path();

// 或使用 ini_get()
echo ini_get('include_path');
?>

参见

  • ini_get() - 获取一个配置选项的值
  • restore_include_path() - 还原 include_path 配置选项的值
  • set_include_path() - 设置 include_path 配置选项
  • include - include

get_extension_funcs
get_included_files
PHP 选项/信息 函数


返回被 include 和 require 文件名的 array

get_include_path
get_loaded_extensions
PHP 选项/信息 函数
PHP Manual

get_included_files

(PHP 4, PHP 5, PHP 7)

get_included_files — 返回被 include 和 require 文件名的 array

说明

array get_included_files ( void )

返回所有被 include、 include_once、 require 和 require_once 的文件名。

返回值

返回所有文件名称的 array。

脚本最初被称为"被包含的文件"，所以脚本自身也会和 include 系列函数引用的脚本列在一起。

被多次 include 和 require 的文件在返回的 array 里只会列出一次。

范例

Example #1 get_included_files() 范例

<?php
// 本文件是 abc.php

include 'test1.php';
include_once 'test2.php';
require 'test3.php';
require_once 'test4.php';

$included_files = get_included_files();

foreach ($included_files as $filename) {
    echo "$filename\n";
}

?>

以上例程会输出：

/path/to/abc.php
/path/to/test1.php
/path/to/test2.php
/path/to/test3.php
/path/to/test4.php

注释

Note:

使用 auto_prepend_file 配置指令所包含的文件不会包含在返回的数组里。

参见

  • include - include
  • include_once - include_once
  • require - require
  • require_once - require_once
  • get_required_files() - 别名 get_included_files

get_include_path
get_loaded_extensions
PHP 选项/信息 函数


返回所有编译并加载模块名的 array

get_included_files
get_magic_quotes_gpc
PHP 选项/信息 函数
PHP Manual

get_loaded_extensions

(PHP 4, PHP 5, PHP 7)

get_loaded_extensions — 返回所有编译并加载模块名的 array

说明

array get_loaded_extensions ([ bool $zend_extensions = false ] )

该函数返回了 PHP 解析器里所有编译并加载的模块名。

参数

zend_extensions

只返回 Zend 扩展，并非类似 mysqli 的普通扩展。默认是 FALSE (返回普通扩展)。

返回值

返回所有模块名的一个索引数组(array)。

更新日志

版本 | 说明
5.2.4 | 添加了可选的 zend_extensions 参数。

范例

Example #1 get_loaded_extensions() 范例

<?php
print_r(get_loaded_extensions());
?>

以上例程的输出类似于：

Array
(
   [0] => xml
   [1] => wddx
   [2] => standard
   [3] => session
   [4] => posix
   [5] => pgsql
   [6] => pcre
   [7] => gd
   [8] => ftp
   [9] => db
   [10] => calendar
   [11] => bcmath
)

参见

  • get_extension_funcs() - 返回模块函数名称的数组
  • extension_loaded() - 检查一个扩展是否已经加载
  • dl() - 运行时载入一个 PHP 扩展
  • phpinfo() - 输出关于 PHP 配置的信息

get_included_files
get_magic_quotes_gpc
PHP 选项/信息 函数


获取当前 magic_quotes_gpc 的配置选项设置

get_loaded_extensions
get_magic_quotes_runtime
PHP 选项/信息 函数
PHP Manual

get_magic_quotes_gpc

(PHP 4, PHP 5, PHP 7)

get_magic_quotes_gpc — 获取当前 magic_quotes_gpc 的配置选项设置

说明

bool get_magic_quotes_gpc ( void )

返回当前 magic_quotes_gpc 配置选项的设置

记住，尝试在运行时设置 magic_quotes_gpc 将不会生效。

更多关于 magic_quotes 的信息参见安全一章。

返回值

如果 magic_quotes_gpc 为关闭时返回 0，否则返回 1。在 PHP 5.4.O 起将始终返回 FALSE。

更新日志

版本 | 说明
5.4.0 | 始终返回 FALSE，因为这个魔术引号功能已经从 PHP 中移除了。

范例

Example #1 get_magic_quotes_gpc() 例子

<?php
// 如果启用了魔术引号
echo $_POST['lastname'];             // O\'reilly
echo addslashes($_POST['lastname']); // O\\\'reilly

// 适用各个 PHP 版本的用法
if (get_magic_quotes_gpc()) {
    $lastname = stripslashes($_POST['lastname']);
}
else {
    $lastname = $_POST['lastname'];
}

// 如果使用 MySQL
$lastname = mysql_real_escape_string($lastname);

echo $lastname; // O\'reilly
$sql = "INSERT INTO lastnames (lastname) VALUES ('$lastname')";
?>

注释

Note:

如果指令 magic_quotes_sybase 为 ON，它会完全覆盖 magic_quotes_gpc。 所以即使 get_magic_quotes_gpc() 返回 TRUE，双引号、反斜杠或 NUL 都不会被转义。 只有单引号会被转义。 这种情况下它们看上去像：''

参见

  • addslashes() - 使用反斜线引用字符串
  • stripslashes() - 反引用一个引用字符串
  • get_magic_quotes_runtime() - 获取当前 magic_quotes_runtime 配置选项的激活状态
  • ini_get() - 获取一个配置选项的值

get_loaded_extensions
get_magic_quotes_runtime
PHP 选项/信息 函数


获取当前 magic_quotes_runtime 配置选项的激活状态

get_magic_quotes_gpc
get_required_files
PHP 选项/信息 函数
PHP Manual

get_magic_quotes_runtime

(PHP 4, PHP 5, PHP 7)

get_magic_quotes_runtime — 获取当前 magic_quotes_runtime 配置选项的激活状态

说明

bool get_magic_quotes_runtime ( void )

返回当前 magic_quotes_runtime 配置选项的激活状态。

返回值

magic_quotes_runtime 在关闭时返回 0，否则返回 1。 自 PHP 5.4.0 起始终返回 FALSE。

更新日志

版本 | 说明
5.4.0 | 总是返回 FALSE，因为魔术引号（magic quotes）功能已经从 PHP 中移除。

范例

Example #1 get_magic_quotes_runtime() 例子

<?php
// 检测 magic_quotes_runtime 是否已经激活
if(get_magic_quotes_runtime())
{
    // 关闭功能
    set_magic_quotes_runtime(false);
}
?>

参见

  • get_magic_quotes_gpc() - 获取当前 magic_quotes_gpc 的配置选项设置
  • set_magic_quotes_runtime() - 设置当前 magic_quotes_runtime 配置选项的激活状态

get_magic_quotes_gpc
get_required_files
PHP 选项/信息 函数


别名 get_included_files

get_magic_quotes_runtime
get_resources
PHP 选项/信息 函数
PHP Manual

get_required_files

(PHP 4, PHP 5, PHP 7)

get_required_files — 别名 get_included_files()

说明

此函数是该函数的别名： get_included_files().

get_magic_quotes_runtime
get_resources
PHP 选项/信息 函数


Returns active resources

get_required_files
getenv
PHP 选项/信息 函数
PHP Manual

get_resources

(PHP 7)

get_resources — Returns active resources

说明

array get_resources ([ string $type ] )

Returns an array of all currently active resources, optionally filtered by resource type.

参数

type

If defined, this will cause get_resources() to only return resources of the given type. A list of resource types is available.

If the string Unknown is provided as the type, then only resources that are of an unknown type will be returned.

If omitted, all resources will be returned.

返回值

Returns an array of currently active resources, indexed by resource number.

范例

Example #1 Unfiltered get_resources()

<?php
$fp = tmpfile();
var_dump(get_resources());
?>

以上例程的输出类似于：

array(1) {
  [1]=>
  resource(1) of type (stream)
}

Example #2 Filtered get_resources()

<?php
$fp = tmpfile();
var_dump(get_resources('stream'));
var_dump(get_resources('curl'));
?>

以上例程的输出类似于：

array(1) {
  [1]=>
  resource(1) of type (stream)
}
array(0) {
}

参见

  • get_loaded_extensions() - 返回所有编译并加载模块名的 array
  • get_defined_constants() - 返回所有常量的关联数组，键是常量名，值是常量值
  • get_defined_functions() - Returns an array of all defined functions
  • get_defined_vars() - 返回由所有已定义变量所组成的数组

get_required_files
getenv
PHP 选项/信息 函数


获取一个环境变量的值

get_resources
getlastmod
PHP 选项/信息 函数
PHP Manual

getenv

(PHP 4, PHP 5, PHP 7)

getenv — 获取一个环境变量的值

说明

string getenv ( string $varname )

获取一个环境变量的值。

使用 phpinfo() 你可以看到所有环境变量的列表。 这些变量很多都在 » RFC 3875 的范围之内， 尤其是章节4.1，"Request Meta-Variables"。

参数

varname

变量名。

返回值

返回环境变量 varname 的值， 如果环境变量 varname 不存在则返回 FALSE。

范例

Example #1 getenv() 例子

<?php
// getenv() 使用示例
$ip = getenv('REMOTE_ADDR');

// 或简单仅使用全局变量（$_SERVER 或 $_ENV）
$ip = $_SERVER['REMOTE_ADDR'];
?>

参见

  • putenv() - 设置环境变量的值
  • apache_getenv() - 获取 Apache subprocess_env 变量
  • 超全局变量

get_resources
getlastmod
PHP 选项/信息 函数


获取页面最后修改的时间

getenv
getmygid
PHP 选项/信息 函数
PHP Manual

getlastmod

(PHP 4, PHP 5, PHP 7)

getlastmod — 获取页面最后修改的时间

说明

int getlastmod ( void )

获取执行的主脚本的最后修改时间。

如果你对其他文件的最后修改时间的感兴趣，可考虑使用 filemtime()。

返回值

返回当前页面最后修改的时间。这个值是一个 Unix 时间戳，可以传入 date()。 错误时返回 FALSE。

范例

Example #1 getlastmod() 例子

<?php
// 输出类似 'Last modified: March 04 1998 20:43:59.'
echo "Last modified: " . date ("F d Y H:i:s.", getlastmod());
?>

参见

  • date() - 格式化一个本地时间／日期
  • getmyuid() - 获取 PHP 脚本所有者的 UID
  • getmygid() - 获取当前 PHP 脚本拥有者的 GID
  • get_current_user() - 获取当前 PHP 脚本所有者名称
  • getmyinode() - 获取当前脚本的索引节点（inode）
  • getmypid() - 获取 PHP 进程的 ID
  • filemtime() - 取得文件修改时间

getenv
getmygid
PHP 选项/信息 函数


获取当前 PHP 脚本拥有者的 GID

getlastmod
getmyinode
PHP 选项/信息 函数
PHP Manual

getmygid

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

getmygid — 获取当前 PHP 脚本拥有者的 GID

说明

int getmygid ( void )

获取当前 PHP 脚本拥有者的用户组 ID。

返回值

返回当前 PHP 脚本拥有者的用户组 ID，或在错误时返回 FALSE。

参见

  • getmyuid() - 获取 PHP 脚本所有者的 UID
  • getmypid() - 获取 PHP 进程的 ID
  • get_current_user() - 获取当前 PHP 脚本所有者名称
  • getmyinode() - 获取当前脚本的索引节点（inode）
  • getlastmod() - 获取页面最后修改的时间

getlastmod
getmyinode
PHP 选项/信息 函数


获取当前脚本的索引节点（inode）

getmygid
getmypid
PHP 选项/信息 函数
PHP Manual

getmyinode

(PHP 4, PHP 5, PHP 7)

getmyinode — 获取当前脚本的索引节点（inode）

说明

int getmyinode ( void )

获取当前脚本的索引节点（inode）。

返回值

以整型返回当前脚本的索引节点（inode），或在错误时返回 FALSE。

参见

  • getmygid() - 获取当前 PHP 脚本拥有者的 GID
  • getmyuid() - 获取 PHP 脚本所有者的 UID
  • getmypid() - 获取 PHP 进程的 ID
  • get_current_user() - 获取当前 PHP 脚本所有者名称
  • getlastmod() - 获取页面最后修改的时间

getmygid
getmypid
PHP 选项/信息 函数


获取 PHP 进程的 ID

getmyinode
getmyuid
PHP 选项/信息 函数
PHP Manual

getmypid

(PHP 4, PHP 5, PHP 7)

getmypid — 获取 PHP 进程的 ID

说明

int getmypid ( void )

获取当前 PHP 进程 ID。

返回值

返回当前 PHP 进程 ID，或在错误时返回 FALSE。

注释

Warning

进程 ID 并不是唯一的，所以他们是一个弱煽源。 对安全性有依赖的上下文中我们不推荐依赖于 pid。

参见

  • getmygid() - 获取当前 PHP 脚本拥有者的 GID
  • getmyuid() - 获取 PHP 脚本所有者的 UID
  • get_current_user() - 获取当前 PHP 脚本所有者名称
  • getmyinode() - 获取当前脚本的索引节点（inode）
  • getlastmod() - 获取页面最后修改的时间

getmyinode
getmyuid
PHP 选项/信息 函数


获取 PHP 脚本所有者的 UID

getmypid
getopt
PHP 选项/信息 函数
PHP Manual

getmyuid

(PHP 4, PHP 5, PHP 7)

getmyuid — 获取 PHP 脚本所有者的 UID

说明

int getmyuid ( void )

获取当前脚本的用户 ID。

返回值

返回当前脚本的用户 ID，或在错误时返回 FALSE。

参见

  • getmygid() - 获取当前 PHP 脚本拥有者的 GID
  • getmypid() - 获取 PHP 进程的 ID
  • get_current_user() - 获取当前 PHP 脚本所有者名称
  • getmyinode() - 获取当前脚本的索引节点（inode）
  • getlastmod() - 获取页面最后修改的时间

getmypid
getopt
PHP 选项/信息 函数


从命令行参数列表中获取选项

getmyuid
getrusage
PHP 选项/信息 函数
PHP Manual

getopt

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

getopt — 从命令行参数列表中获取选项

说明

array getopt ( string $options [, array $longopts [, int &$optind ]] )

解析传入脚本的选项。

参数

options
该字符串中的每个字符会被当做选项字符，匹配传入脚本的选项以单个连字符(-)开头。 比如，一个选项字符串 "x" 识别了一个选项 -x。 只允许 a-z、A-Z 和 0-9。
longopts
选项数组。此数组中的每个元素会被作为选项字符串，匹配了以两个连字符(--)传入到脚本的选项。 例如，长选项元素 "opt" 识别了一个选项 --opt。
optind
If the optind parameter is present, then the index where argument parsing stopped will be written to this variable.

options 可能包含了以下元素：

  • 单独的字符（不接受值）
  • 后面跟随冒号的字符（此选项需要值）
  • 后面跟随两个冒号的字符（此选项的值可选）
选项的值是字符串后的第一个参数。如果需要一个值，它不介意值之前是否有前置的空格，参见以下内容。

Note: 选项的值不接受空格（" "）作为分隔符。

Note:

options 和 longopts 的格式几乎是一样的，唯一的不同之处是 longopts 需要是选项的数组（每个元素为一个选项），而 options 需要一个字符串（每个字符是个选项）。

返回值

此函数会返回选项/参数对， 或者在失败时返回 FALSE。

Note:

选项的解析会终止于找到的第一个非选项，之后的任何东西都会被丢弃。

更新日志

版本 | 说明
7.1.0 | 添加 optind 参数。
5.3.0 | 支持 "=" 作为 参数和值的分隔符。
5.3.0 | 增加了可选值的支持（用"::"指定）。
5.3.0 | 参数 longopts 在所有系统平台上均可用。
5.3.0 | 此函数不再依赖于操作系统，现在也能够在 Windows 上运行。

范例

Example #1 getopt() 例子：基本用法

<?php
// Script example.php
$options = getopt("f:hp:");
var_dump($options);
?>
shell> php example.php -fvalue -h

以上例程会输出：

array(2) {
  ["f"]=>
  string(5) "value"
  ["h"]=>
  bool(false)
}

Example #2 getopt() 例子：引入长选项

<?php
// Script example.php
$shortopts  = "";
$shortopts .= "f:";  // Required value
$shortopts .= "v::"; // Optional value
$shortopts .= "abc"; // These options do not accept values

$longopts  = array(
    "required:",     // Required value
    "optional::",    // Optional value
    "option",        // No value
    "opt",           // No value
);
$options = getopt($shortopts, $longopts);
var_dump($options);
?>
shell> php example.php -f "value for f" -v -a --required value --optional="optional value" --option

以上例程会输出：

array(6) {
  ["f"]=>
  string(11) "value for f"
  ["v"]=>
  bool(false)
  ["a"]=>
  bool(false)
  ["required"]=>
  string(5) "value"
  ["optional"]=>
  string(14) "optional value"
  ["option"]=>
  bool(false)
}

Example #3 getopt() 例子：传递同一多个选项

<?php
// Script example.php
$options = getopt("abc");
var_dump($options);
?>
shell> php example.php -aaac

以上例程会输出：

array(2) {
  ["a"]=>
  array(3) {
    [0]=>
    bool(false)
    [1]=>
    bool(false)
    [2]=>
    bool(false)
  }
  ["c"]=>
  bool(false)
}

Example #4 getopt() 例子：使用 optind

<?php
// Script example.php
$optind = null;
$opts = getopt('a:b:', [], $optind);
$pos_args = array_slice($argv, $optind);
var_dump($pos_args);
shell> php example.php -a 1 -b 2 -- test

以上例程会输出：

array(1) {
  [0]=>
  string(4) "test"
}

参见

  • $argv

getmyuid
getrusage
PHP 选项/信息 函数


获取当前资源使用状况

getopt
ini_alter
PHP 选项/信息 函数
PHP Manual

getrusage

(PHP 4, PHP 5, PHP 7)

getrusage — 获取当前资源使用状况

说明

array getrusage ([ int $who = 0 ] )

这是 getrusage(2) 的接口。它返回了调用自系统的数据。

参数

who

如果 who 是 1，getrusage 会使用 RUSAGE_CHILDREN 来调用。

返回值

返回了一个包含系统返回数据的关联数组。所以条目均可通过文档中字段的名称来访问。

范例

Example #1 getrusage() 例子

<?php
$dat = getrusage();
echo $dat["ru_nswap"];         // number of swaps
echo $dat["ru_majflt"];        // number of page faults
echo $dat["ru_utime.tv_sec"];  // user time used (seconds)
echo $dat["ru_utime.tv_usec"]; // user time used (microseconds)
?>

更新日志

版本 | 说明
7.0.0 | 此函数现在开始支持 Windows。

注释

Note:

在 Windows 上 getrusage() 仅会返回以下类型：

  • "ru_stime.tv_sec"
  • "ru_stime.tv_usec"
  • "ru_utime.tv_sec"
  • "ru_utime.tv_usec"
  • "ru_majflt" (only if who is RUSAGE_SELF)
  • "ru_maxrss" (only if who is RUSAGE_SELF)

If getrusage() is called with who set to 1 (RUSAGE_CHILDREN), then resource usage for threads are collected (meaning that internally the function is called with RUSAGE_THREAD).

Note:

在 BeOS 2000，仅会返回以下类型：

  • "ru_stime.tv_sec"
  • "ru_stime.tv_usec"
  • "ru_utime.tv_sec"
  • "ru_utime.tv_usec"

参见

  • 你系统上 getrusage(2) 的 man page

getopt
ini_alter
PHP 选项/信息 函数


别名 ini_set

getrusage
ini_get_all
PHP 选项/信息 函数
PHP Manual

ini_alter

(PHP 4, PHP 5, PHP 7)

ini_alter — 别名 ini_set()

说明

此函数是该函数的别名： ini_set().

getrusage
ini_get_all
PHP 选项/信息 函数


获取所有配置选项

ini_alter
ini_get
PHP 选项/信息 函数
PHP Manual

ini_get_all

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

ini_get_all — 获取所有配置选项

说明

array ini_get_all ([ string $extension [, bool $details = true ]] )

获取所有已注册的配置选项

参数

extension

可选的扩展名称。如果设置了，此函数仅仅返回指定该扩展的选项。

details

获取详细设置或者仅仅是每个设置的当前值。 默认是 TRUE（获取详细信息）。

返回值

返回一个关联数组，指令名称是数组的键。

当 details 为 TRUE（默认），数组会包含 global_value（php.ini 中的设置）、local_value（可能是 ini_set() 或 .htaccess 中的设置） 以及 access（访问级别）。

当 details 为 FALSE，这个值会是选项的当前值。

参见手册章节中访问级别含义的信息。

Note:

指令可以有多个访问级别，这也是为什么 access 会显示适当的位掩码。

注释

Note:

ini_get_all() 忽略 "array" 的 ini 选项，例如 pdo.dsn.*。

更新日志

版本 | 说明
5.3.0 | 增加参数 details。

范例

Example #1 ini_get_all() 例子

<?php
print_r(ini_get_all("pcre"));
print_r(ini_get_all());
?>

以上例程的输出类似于：

Array
(
    [pcre.backtrack_limit] => Array
        (
            [global_value] => 100000
            [local_value] => 100000
            [access] => 7
        )

    [pcre.recursion_limit] => Array
        (
            [global_value] => 100000
            [local_value] => 100000
            [access] => 7
        )

)
Array
(
    [allow_call_time_pass_reference] => Array
        (
            [global_value] => 0
            [local_value] => 0
            [access] => 6
        )

    [allow_url_fopen] => Array
        (
            [global_value] => 1
            [local_value] => 1
            [access] => 4
        )

    ...

)

Example #2 禁用 details

<?php
print_r(ini_get_all("pcre", false)); // Added in PHP 5.3.0
print_r(ini_get_all(null, false)); // Added in PHP 5.3.0
?>

以上例程的输出类似于：

Array
(
    [pcre.backtrack_limit] => 100000
    [pcre.recursion_limit] => 100000
)
Array
(
    [allow_call_time_pass_reference] => 0
    [allow_url_fopen] => 1
    ...
)

参见

  • 怎样修改配置设定
  • ini_get() - 获取一个配置选项的值
  • ini_restore() - 恢复配置选项的值
  • ini_set() - 为一个配置选项设置值
  • get_loaded_extensions() - 返回所有编译并加载模块名的 array
  • phpinfo() - 输出关于 PHP 配置的信息
  • ReflectionExtension::getINIEntries() - 获取ini配置

ini_alter
ini_get
PHP 选项/信息 函数


获取一个配置选项的值

ini_get_all
ini_restore
PHP 选项/信息 函数
PHP Manual

ini_get

(PHP 4, PHP 5, PHP 7)

ini_get — 获取一个配置选项的值

说明

string ini_get ( string $varname )

成功时返回配置选项的值。

参数

varname

配置选项名称。

返回值

成功是返回配置选项值的字符串，null 的值则返回空字符串。如果配置选项不存在，将会返回 FALSE。

范例

Example #1 一些 ini_get() 例子

<?php
/*
我们的 php.ini 包含了以下的设置：

display_errors = On
register_globals = Off
post_max_size = 8M
*/

echo 'display_errors = ' . ini_get('display_errors') . "\n";
echo 'register_globals = ' . ini_get('register_globals') . "\n";
echo 'post_max_size = ' . ini_get('post_max_size') . "\n";
echo 'post_max_size+1 = ' . (ini_get('post_max_size')+1) . "\n";
echo 'post_max_size in bytes = ' . return_bytes(ini_get('post_max_size'));

function return_bytes($val) {
    $val = trim($val);
    $last = strtolower($val[strlen($val)-1]);
    switch($last) {
        // 自 PHP 5.1.0 起可以使用修饰符 'G'
        case 'g':
            $val *= 1024;
        case 'm':
            $val *= 1024;
        case 'k':
            $val *= 1024;
    }

    return $val;
}

?>

以上例程的输出类似于：

display_errors = 1
register_globals = 0
post_max_size = 8M
post_max_size+1 = 9
post_max_size in bytes = 8388608

注释

Note: 当查询一个 boolean 值

一个 off 的 boolean ini 值将会以空字符串或者 "0" 返回；on 的 ini 值会以 "1" 返回。 此函数也会返回 INI 值的文字字符串。

Note: 当查询一个内存尺寸的值

许多内存尺寸的 ini 值，类似 upload_max_filesize 是以简写表示法储存在 php.ini 文件里。 ini_get() 会返回 php.ini 文件中储存的确切字符串，而不是它的等量 integer。 尝试对这些值使用常规算术运算函数将不会得到预期的结果。 以上例子显示了转换简写表示法为字节的一种方式，和 PHP 源码所做的比较像。

Note:

ini_get() 无法读取 "array" 的 ini 选项，例如 pdo.dsn.*，在这个例子中会返回 FALSE 。

更新日志

版本 | 说明
5.3.0 | 当配置项不存在，之前会返回空字符串，现在会返回 FALSE。

参见

  • get_cfg_var() - 获取 PHP 配置选项的值
  • ini_get_all() - 获取所有配置选项
  • ini_restore() - 恢复配置选项的值
  • ini_set() - 为一个配置选项设置值

ini_get_all
ini_restore
PHP 选项/信息 函数


恢复配置选项的值

ini_get
ini_set
PHP 选项/信息 函数
PHP Manual

ini_restore

(PHP 4, PHP 5, PHP 7)

ini_restore — 恢复配置选项的值

说明

void ini_restore ( string $varname )

恢复指定的配置选项到它的原始值。

参数

varname

配置选项名称。

返回值

没有返回值。

范例

Example #1 ini_restore() 例子

<?php
$setting = 'y2k_compliance';

echo 'Current value for \'' . $setting . '\': ' . ini_get($setting), PHP_EOL;

ini_set($setting, ini_get($setting) ? 0 : 1);
echo 'New value for \'' . $setting . '\': ' . ini_get($setting), PHP_EOL;

ini_restore($setting);
echo 'Original value for \'' . $setting . '\': ' . ini_get($setting), PHP_EOL;
?>

以上例程会输出：

Current value for 'y2k_compliance': 1
New value for 'y2k_compliance': 0
Original value for 'y2k_compliance': 1

参见

  • ini_get() - 获取一个配置选项的值
  • ini_get_all() - 获取所有配置选项
  • ini_set() - 为一个配置选项设置值

ini_get
ini_set
PHP 选项/信息 函数


为一个配置选项设置值

ini_restore
magic_quotes_runtime
PHP 选项/信息 函数
PHP Manual

ini_set

(PHP 4, PHP 5, PHP 7)

ini_set — 为一个配置选项设置值

说明

string ini_set ( string $varname , string $newvalue )

设置指定配置选项的值。这个选项会在脚本运行时保持新的值，并在脚本结束时恢复。

参数

varname

不是所有有效的选项都能够用 ini_set() 来改变的。 这里有个有效选项的清单附录。

newvalue

选项新的值。

返回值

成功时返回旧的值，失败时返回 FALSE。

范例

Example #1 设置一个 ini 选项

<?php
echo ini_get('display_errors');

if (!ini_get('display_errors')) {
    ini_set('display_errors', '1');
}

echo ini_get('display_errors');
?>

参见

  • get_cfg_var() - 获取 PHP 配置选项的值
  • ini_get() - 获取一个配置选项的值
  • ini_get_all() - 获取所有配置选项
  • ini_restore() - 恢复配置选项的值
  • 如何改变配置选项

ini_restore
magic_quotes_runtime
PHP 选项/信息 函数


别名 set_magic_quotes_runtime

ini_set
main
PHP 选项/信息 函数
PHP Manual

magic_quotes_runtime

(PHP 4, PHP 5)

magic_quotes_runtime — 别名 set_magic_quotes_runtime()

Warning

This alias was DEPRECATED in PHP 5.3.0, and REMOVED as of PHP 7.0.0.

说明

此函数是该函数的别名： set_magic_quotes_runtime()

ini_set
main
PHP 选项/信息 函数


虚拟的main

magic_quotes_runtime
memory_get_peak_usage
PHP 选项/信息 函数
PHP Manual

main

main — 虚拟的main()

说明

除了在PHP源码里，并没有一个名称为 main() 的函数。 在 PHP 4.3.0 的源码里，引入了新的错误处理类型(php_error_docref)。 其中一个功能是在 PHP 指令 html_errors(默认为 on) 和 docref_root(默认为on直至 PHP 4.3.2) 被设置时，在错误信息里提供对应的手册链接。

本页存在的原因是因为有时函数 main() 错误信息里的手册链接会指到本页。 如果你发现了这样的引用，请 » 提交错误报告， 说明 PHP 函数发生了错误，并链接到了 main()， 错误会被妥善处理并可能会记录在文档里。

已知这些错误会指向 main()
函数名 | 直到该版本，不会再指到这里
include | 5.1.0
include_once | 5.1.0
require | 5.1.0
require_once | 5.1.0

参见

  • html_errors
  • display_errors

magic_quotes_runtime
memory_get_peak_usage
PHP 选项/信息 函数


返回分配给 PHP 内存的峰值

main
memory_get_usage
PHP 选项/信息 函数
PHP Manual

memory_get_peak_usage

(PHP 5 >= 5.2.0, PHP 7)

memory_get_peak_usage — 返回分配给 PHP 内存的峰值

说明

int memory_get_peak_usage ([ bool $real_usage = false ] )

返回分配给你的 PHP 脚本的内存峰值字节数。

参数

real_usage

如果设置为 TRUE 可以获取从系统分配到的真实内存尺寸。 如果未设置，或者设置为 FALSE，仅会报告 emalloc() 使用的内存。

返回值

返回内存峰值的字节数。

更新日志

版本 | 说明
5.2.1 | 使用此函数无需在编译时加上 --enable-memory-limit 选项。
5.2.0 | 添加参数 real_usage。

参见

  • memory_get_usage() - 返回分配给 PHP 的内存量
  • memory_limit

main
memory_get_usage
PHP 选项/信息 函数


返回分配给 PHP 的内存量

memory_get_peak_usage
php_ini_loaded_file
PHP 选项/信息 函数
PHP Manual

memory_get_usage

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

memory_get_usage — 返回分配给 PHP 的内存量

说明

int memory_get_usage ([ bool $real_usage = false ] )

返回当前分配给你的 PHP 脚本的内存量，单位是字节（byte）。

参数

real_usage

如果设置为 TRUE，获取系统分配总的内存尺寸，包括未使用的页。如果未设置或者设置为 FALSE，仅仅报告实际使用的内存量。

Note:

PHP 不跟踪非emalloc() 分配的内存

返回值

返回内存量字节数。

更新日志

版本 | 说明
5.2.1 | 不需要在编译时使用 --enable-memory-limit 选项就能够使用这个函数。
5.2.0 | 增加了参数 real_usage。

范例

Example #1 一个 memory_get_usage() 例子

<?php
//这只是个例子，下面的数字取决于你的系统

echo memory_get_usage() . "\n"; // 36640

$a = str_repeat("Hello", 4242);

echo memory_get_usage() . "\n"; // 57960

unset($a);

echo memory_get_usage() . "\n"; // 36744

?>

参见

  • memory_get_peak_usage() - 返回分配给 PHP 内存的峰值
  • memory_limit

memory_get_peak_usage
php_ini_loaded_file
PHP 选项/信息 函数


取得已加载的 php.ini 文件的路径

memory_get_usage
php_ini_scanned_files
PHP 选项/信息 函数
PHP Manual

php_ini_loaded_file

(PHP 5 >= 5.2.4, PHP 7)

php_ini_loaded_file — 取得已加载的 php.ini 文件的路径

说明

string php_ini_loaded_file ( void )

检查是否有加载的 php.ini 文件，并取回它的路径。

参数

此函数没有参数。

返回值

已加载的 php.ini 路径，或在没有时返回 FALSE。

范例

Example #1 php_ini_loaded_file() 例子

<?php
$inipath = php_ini_loaded_file();

if ($inipath) {
    echo 'Loaded php.ini: ' . $inipath;
} else {
    echo 'A php.ini file is not loaded';
}
?>

以上例程的输出类似于：

Loaded php.ini: /usr/local/php/php.ini

参见

  • php_ini_scanned_files() - 返回从额外 ini 目录里解析的 .ini 文件列表
  • phpinfo() - 输出关于 PHP 配置的信息
  • 配置文件

memory_get_usage
php_ini_scanned_files
PHP 选项/信息 函数


返回从额外 ini 目录里解析的 .ini 文件列表

php_ini_loaded_file
php_logo_guid
PHP 选项/信息 函数
PHP Manual

php_ini_scanned_files

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

php_ini_scanned_files — 返回从额外 ini 目录里解析的 .ini 文件列表

说明

string php_ini_scanned_files ( void )

php_ini_scanned_files() 返回解析的 php.ini 后逗号分隔的配置文件列表。 这些文件从编译时 --with-config-file-scan-dir 选项里指定的目录里找到。

这些返回的配置文件也包括了 --with-config-file-scan-dir 选项里声明的路径。

返回值

成功时返回逗号分隔的 .ini 文件字符串。 每个逗号后紧跟新的一行。 如果未设置指令 --with-config-file-scan-dir 将会返回 FALSE。 如果它设置了，并且目录是空的，将会返回一个空字符串。 如果有未识别的文件，此文件也会进入返回的字符串，但是会导致一个 PHP 错误。 此 PHP 错误即会在编译时出现也会在使用 php_ini_scanned_files() 函数时出现。

范例

Example #1 列出返回的 ini 文件的简单例子

<?php
if ($filelist = php_ini_scanned_files()) {
    if (strlen($filelist) > 0) {
        $files = explode(',', $filelist);

        foreach ($files as $file) {
            echo "<li>" . trim($file) . "</li>\n";
        }
    }
}
?>

参见

  • ini_set() - 为一个配置选项设置值
  • phpinfo() - 输出关于 PHP 配置的信息
  • php_ini_loaded_file() - 取得已加载的 php.ini 文件的路径

php_ini_loaded_file
php_logo_guid
PHP 选项/信息 函数


获取 logo 的 guid

php_ini_scanned_files
php_sapi_name
PHP 选项/信息 函数
PHP Manual

php_logo_guid

(PHP 4, PHP 5 < 5.5)

php_logo_guid — 获取 logo 的 guid

说明

string php_logo_guid ( void )

此函数能够返回用于显示 PHP logo 内置图像的 ID。 图像仅在 expose_php 启用时显示。

Warning

自 PHP 5.5.0 起，已经废弃并移除此函数。

返回值

返回 PHPE9568F34-D428-11d2-A769-00AA001ACF42.

更新日志

版本 | 说明
5.5.0 | php_logo_guid() 从 PHP 中移除。

范例

Example #1 php_logo_guid() 例子

<?php

echo '<img src="' . $_SERVER['PHP_SELF'] .
     '?=' . php_logo_guid() . '" alt="PHP Logo !" />';

?>

参见

  • phpinfo() - 输出关于 PHP 配置的信息
  • phpversion() - 获取当前的PHP版本
  • phpcredits() - 打印 PHP 贡献者名单
  • zend_logo_guid() - 获取 Zend guid

php_ini_scanned_files
php_sapi_name
PHP 选项/信息 函数


返回 web 服务器和 PHP 之间的接口类型

php_logo_guid
php_uname
PHP 选项/信息 函数
PHP Manual

php_sapi_name

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

php_sapi_name — 返回 web 服务器和 PHP 之间的接口类型

说明

string php_sapi_name ( void )

返回描述 PHP 所使用的接口类型（the Server API, SAPI）的小写字符串。 例如，CLI 的 PHP 下这个字符串会是 "cli"，Apache 下可能会有几个不同的值，取决于具体使用的 SAPI。 以下列出了可能的值。

返回值

返回接口类型的小写字符串。

尽管不够全面，可能返回的值包括了 aolserver、apache、 apache2filter、apache2handler、 caudium、cgi （直到 PHP 5.3）, cgi-fcgi、cli、 cli-server、 continuity、embed、fpm-fcgi、 isapi、litespeed、 milter、nsapi、 phttpd、pi3web、roxen、 thttpd、tux 和 webjames。

范例

Example #1 php_sapi_name() 例子

以下例子检测了子字符串 cgi，因为它也有可能会是 cgi-fcgi。

<?php
$sapi_type = php_sapi_name();
if (substr($sapi_type, 0, 3) == 'cgi') {
    echo "You are using CGI PHP\n";
} else {
    echo "You are not using CGI PHP\n";
}
?>

注释

Note: 另一种方法

PHP 常量 PHP_SAPI 具有和 php_sapi_name() 相同的值。

Tip

一个潜在的疑难问题

定义的 SAPI 可能不够明显，比如它可能定义为 apache2handler 或 apache2filter，而不是 apache

参见

  • PHP_SAPI

php_logo_guid
php_uname
PHP 选项/信息 函数


返回运行 PHP 的系统的有关信息

php_sapi_name
phpcredits
PHP 选项/信息 函数
PHP Manual

php_uname

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

php_uname — 返回运行 PHP 的系统的有关信息

说明

string php_uname ([ string $mode = "a" ] )

php_uname() 返回了运行 PHP 的操作系统的描述。 这和 phpinfo() 最顶端上输出的是同一个字符串。 如果仅仅要获取操作系统的名称。可以考虑使用常量 PHP_OS，不过要注意该常量会包含 PHP 构建（built）时的操作系统名。

在一些旧的 UNIX 平台，它有可能无法检测到当前系统的信息，然后会还原显示成构建 PHP 时的系统信息。 这仅仅在你的 uname() 函数库不存在或无法运行时发生。

参数

mode

mode 是单个字符，用于定义要返回什么信息：

  • 'a'：此为默认。包含序列 "s n r v m" 里的所有模式。
  • 's'：操作系统名称。例如： FreeBSD。
  • 'n'：主机名。例如： localhost.example.com。
  • 'r'：版本名称，例如： 5.1.2-RELEASE。
  • 'v'：版本信息。操作系统之间有很大的不同。
  • 'm'：机器类型。例如：i386。

返回值

返回描述字符串。

范例

Example #1 一些 php_uname() 的例子

<?php
echo php_uname();
echo PHP_OS;

/* 比如有些会输出：
Linux localhost 2.4.21-0.13mdk #1 Fri Mar 14 15:08:06 EST 2003 i686
Linux

FreeBSD localhost 3.2-RELEASE #15: Mon Dec 17 08:46:02 GMT 2001
FreeBSD

Windows NT XN1 5.1 build 2600
WINNT
*/

if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
    echo 'This is a server using Windows!';
} else {
    echo 'This is a server not using Windows!';
}

?>

同样可以方便地使用一些相关的 PHP 预定义常量，例如：

Example #2 一些系统相关常量的例子

<?php
// *nix
echo DIRECTORY_SEPARATOR; // /
echo PHP_SHLIB_SUFFIX;    // so
echo PATH_SEPARATOR;      // :

// Win*
echo DIRECTORY_SEPARATOR; // \
echo PHP_SHLIB_SUFFIX;    // dll
echo PATH_SEPARATOR;      // ;
?>

参见

  • phpversion() - 获取当前的PHP版本
  • php_sapi_name() - 返回 web 服务器和 PHP 之间的接口类型
  • phpinfo() - 输出关于 PHP 配置的信息

php_sapi_name
phpcredits
PHP 选项/信息 函数


打印 PHP 贡献者名单

php_uname
phpinfo
PHP 选项/信息 函数
PHP Manual

phpcredits

(PHP 4, PHP 5, PHP 7)

phpcredits — 打印 PHP 贡献者名单

说明

bool phpcredits ([ int $flag = CREDITS_ALL ] )

这个函数打印出了 PHP 开发者、模块等贡献者名单。 它生成了合适、可嵌入信息到页面中的 HTML 代码。

参数

flag

生成自定义的贡献者页面，你也许想要使用 flag 参数。

预定义的 phpcredits() flags
名称 | 描述
CREDITS_ALL | 所有贡献者，等同于使用： CREDITS_DOCS + CREDITS_GENERAL + CREDITS_GROUP + CREDITS_MODULES + CREDITS_FULLPAGE。 它以适当的标签产生了完整独立的 HTML 页面。
CREDITS_DOCS | 文档组贡献名单
CREDITS_FULLPAGE | 常用于和其他标志进行组合。 表示需要打印包含其他标志表示信息的独立 HTML 页面。
CREDITS_GENERAL | 普遍名单：语言设计与理念、PHP作者以及 SAPI 模块。
CREDITS_GROUP | 核心开发者名单
CREDITS_MODULES | PHP 扩展模块以及它们的作者的清单
CREDITS_SAPI | PHP 的服务器 API 模块以及他们的作者的清单

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 打印普遍名单

<?php
phpcredits(CREDITS_GENERAL);
?>

Example #2 打印核心开发者和文档组

<?php
phpcredits(CREDITS_GROUP | CREDITS_DOCS | CREDITS_FULLPAGE);
?>

Example #3 打印所有贡献者

<html>
 <head>
  <title>My credits page</title>
 </head>
 <body>
<?php
// 一些你自己的代码
phpcredits(CREDITS_ALL - CREDITS_FULLPAGE);
// 一些其他的代码
?>
 </body>
</html>

注释

Note:

在 CLI 模式下 phpcredits() 输出明文而不是 HTML。

参见

  • phpversion() - 获取当前的PHP版本
  • php_logo_guid() - 获取 logo 的 guid
  • phpinfo() - 输出关于 PHP 配置的信息

php_uname
phpinfo
PHP 选项/信息 函数


输出关于 PHP 配置的信息

phpcredits
phpversion
PHP 选项/信息 函数
PHP Manual

phpinfo

(PHP 4, PHP 5, PHP 7)

phpinfo — 输出关于 PHP 配置的信息

说明

bool phpinfo ([ int $what = INFO_ALL ] )

输出 PHP 当前状态的大量信息，包含了 PHP 编译选项、启用的扩展、PHP 版本、服务器信息和环境变量（如果编译为一个模块的话）、PHP环境变量、操作系统版本信息、path 变量、配置选项的本地值和主值、HTTP 头和PHP授权信息(License)。

因为每个系统安装得有所不同，phpinfo() 常用于在系统上检查 配置设置和 预定义变量。

phpinfo() 同时是个很有价值的、包含所有 EGPCS(Environment, GET, POST, Cookie, Server) 数据的调试工具。

参数

what

可以用以下的一个或多个 constants 用位运算传递给可选的 what 参数来定制输出的信息。 该参数可以把常量相加或者用 or 操作符按位运算。

phpinfo() 选项
Name (constant) | Value | Description
INFO_GENERAL | 1 | 配置的命令行、 php.ini 的文件位置、建立的时间、Web 服务器、系统及更多其他信息。
INFO_CREDITS | 2 | PHP 贡献者名单。参加 phpcredits()。
INFO_CONFIGURATION | 4 | 当前PHP指令的本地值和主值。参见 ini_get()。
INFO_MODULES | 8 | 已加载的模块和模块相应的设置。参见 get_loaded_extensions()。
INFO_ENVIRONMENT | 16 | 环境变量信息也可以用 $_ENV 获取。
INFO_VARIABLES | 32 | 显示所有来自 EGPCS (Environment, GET, POST, Cookie, Server) 的 预定义变量。
INFO_LICENSE | 64 | PHP许可证信息。参见 » license FAQ。
INFO_ALL | -1 | 显示以上所有信息。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

5.5.0 | Logo GUIDs were replaced with data URIs, and so turning off expose_php now has no effect on the result of phpinfo(). Credits are also now embedded within the output itself instead of linked.
版本 | 说明
5.2.2 | 增加了"已加载的配置文件"信息，之前只存在"配置文件路径(php.ini)"。

范例

Example #1 phpinfo() 范例

<?php

// 显示所有信息，默认显示 INFO_ALL
phpinfo();

// Show just the module information. 仅仅显示PHP模块信息，
// phpinfo(8) 返回同样的结果。
phpinfo(INFO_MODULES);

?>

注释

Note:

在 PHP 5.5 之前版本，当 expose_php 设置为 off 可以禁用一部分信息。 这包括了 PHP 和 Zend 的 logo，以及贡献者名单。

Note:

在命令行（CLI）模式下 phpinfo() 仅会输出纯文本，而不是HTML。

参见

  • phpversion() - 获取当前的PHP版本
  • phpcredits() - 打印 PHP 贡献者名单
  • php_logo_guid() - 获取 logo 的 guid
  • ini_get() - 获取一个配置选项的值
  • ini_set() - 为一个配置选项设置值
  • get_loaded_extensions() - 返回所有编译并加载模块名的 array
  • Predefined Variables

phpcredits
phpversion
PHP 选项/信息 函数


获取当前的PHP版本

phpinfo
putenv
PHP 选项/信息 函数
PHP Manual

phpversion

(PHP 4, PHP 5, PHP 7)

phpversion — 获取当前的PHP版本

说明

string phpversion ([ string $extension ] )

返回了包含当前运行 PHP 解释器或扩展版本信息的 string。

参数

extension

可选的扩展名。

返回值

如果指定了可选参数 extension，phpversion()会返回该扩展的版本。 如果没有对应的版本信息，或者该扩展未启用，则返回 FALSE。

范例

Example #1 phpversion() 范例

<?php
// prints e.g. 'Current PHP version: 4.1.1'
echo 'Current PHP version: ' . phpversion();

// prints e.g. '2.0' or nothing if the extension isn't enabled
echo phpversion('tidy');
?>

Example #2 PHP_VERSION_ID 范例和用法

<?php
// PHP_VERSION_ID 自 PHP 5.2.7 起有效，
// 如果我们的版本低于该版本，则用以下代码来模拟
if (!defined('PHP_VERSION_ID')) {
    $version = explode('.', PHP_VERSION);

    define('PHP_VERSION_ID', ($version[0] * 10000 + $version[1] * 100 + $version[2]));
}

// PHP_VERSION_ID 定义为一个数字，PHP 版本越新，数字越大。
// 它的定义是以下的表达式：
//
// $version_id = $major_version * 10000 + $minor_version * 100 + $release_version;
//
// 现在我们可以通过 PHP_VERSION_ID 来检查 PHP 版本，
// 而不用每次都必须用 version_compare() 来检查 PHP 是否支持某个功能。
//
// 比如，我们在此可以定义一系列 PHP_VERSION_* constants 常量，
// 而在 5.2.7 之前的版本并没有被定义。

if (PHP_VERSION_ID < 50207) {
    define('PHP_MAJOR_VERSION',   $version[0]);
    define('PHP_MINOR_VERSION',   $version[1]);
    define('PHP_RELEASE_VERSION', $version[2]);

    // 等等， ...
}
?>

注释

Note:

这些信息也存在于预定义常量 PHP_VERSION里。 更多版本的信息可以使用常量 PHP_VERSION_*。

参见

  • 常量 PHP_VERSION
  • version_compare() - 对比两个「PHP 规范化」的版本数字字符串
  • phpinfo() - 输出关于 PHP 配置的信息
  • phpcredits() - 打印 PHP 贡献者名单
  • php_logo_guid() - 获取 logo 的 guid
  • zend_version() - 获取当前 Zend 引擎的版本

phpinfo
putenv
PHP 选项/信息 函数


设置环境变量的值

phpversion
restore_include_path
PHP 选项/信息 函数
PHP Manual

putenv

(PHP 4, PHP 5, PHP 7)

putenv — 设置环境变量的值

说明

bool putenv ( string $setting )

添加 setting 到服务器环境变量。 环境变量仅存活于当前请求期间。 在请求结束时环境会恢复到初始状态。

设置特定的环境变量也有可能是一个潜在的安全漏洞。 safe_mode_allowed_env_vars 包含了一个以逗号分隔的前缀列表。 在安全模式下，用户可以仅能修改用该指令设定的前缀名称的指令。 默认情况下，用户仅能够修改以 PHP_ 开头的环境变量（例如 PHP_FOO=BAR）。 注意：如果此指令是空的，PHP允许用户设定任意环境变量！

safe_mode_protected_env_vars 指令包含了逗号分隔的环境变量列表，使用户最终无法通过 putenv() 修改。 即使 safe_mode_allowed_env_vars 设置允许修改，这些变量也会被保护。

参数

setting

设置，例如 "FOO=BAR"

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 设置一个环境变量

<?php
putenv("UNIQID=$uniqid");
?>

注释

Warning

The safe_mode_allowed_env_vars 和 safe_mode_protected_env_vars 指令仅仅在启用安全模式时有效。

参见

  • getenv() - 获取一个环境变量的值
  • apache_setenv() - 设置 Apache 子进程环境变量

phpversion
restore_include_path
PHP 选项/信息 函数


还原 include_path 配置选项的值

putenv
set_include_path
PHP 选项/信息 函数
PHP Manual

restore_include_path

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

restore_include_path — 还原 include_path 配置选项的值

说明

void restore_include_path ( void )

还原到 php.ini 中设置的 include_path 主值。

返回值

没有返回值。

范例

Example #1 restore_include_path() 例子

<?php

echo get_include_path();  // .:/usr/local/lib/php

set_include_path('/inc');

echo get_include_path();  // /inc

restore_include_path();

// 或使用 ini_restore
ini_restore('include_path');

echo get_include_path();  // .:/usr/local/lib/php

?>

参见

  • ini_restore() - 恢复配置选项的值
  • get_include_path() - 获取当前的 include_path 配置选项
  • set_include_path() - 设置 include_path 配置选项
  • include - include

putenv
set_include_path
PHP 选项/信息 函数


设置 include_path 配置选项

restore_include_path
set_magic_quotes_runtime
PHP 选项/信息 函数
PHP Manual

set_include_path

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

set_include_path — 设置 include_path 配置选项

说明

string set_include_path ( string $new_include_path )

为当前脚本设置 include_path 运行时的配置选项。

参数

new_include_path

include_path 新的值。

返回值

成功时返回旧的 include_path 或者在失败时返回 FALSE。

范例

Example #1 set_include_path() 例子

<?php
set_include_path('/usr/lib/pear');

// 或使用 ini_set
ini_set('include_path', '/usr/lib/pear');
?>

Example #2 添加到include path

利用常量 PATH_SEPARATOR 可跨平台扩展 include path。

这个例子中我们把 /usr/lib/pear 添加到了 现有的 include_path 的尾部。

<?php
$path = '/usr/lib/pear';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
?>

参见

  • ini_set() - 为一个配置选项设置值
  • get_include_path() - 获取当前的 include_path 配置选项
  • restore_include_path() - 还原 include_path 配置选项的值
  • include - include

restore_include_path
set_magic_quotes_runtime
PHP 选项/信息 函数


设置当前 magic_quotes_runtime 配置选项的激活状态

set_include_path
set_time_limit
PHP 选项/信息 函数
PHP Manual

set_magic_quotes_runtime

(PHP 4, PHP 5)

set_magic_quotes_runtime — 设置当前 magic_quotes_runtime 配置选项的激活状态

Warning

This function was DEPRECATED in PHP 5.3.0, and REMOVED as of PHP 7.0.0.

说明

bool set_magic_quotes_runtime ( bool $new_setting )

设置当前 magic_quotes_runtime 配置选项的激活状态。

错误／异常

自 PHP 5.3 起，该函数已经被弃用，执行它的时候会抛出 E_DEPRECATED 异常。 自 PHP 5.4 起，尝试开启 magic quotes 时该函数会产生一个 E_CORE_ERROR 错误。

参数

new_setting

关闭是 FALSE，开启是 TRUE。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 set_magic_quotes_runtime() 例子

<?php
// 创建临时文件指针
$fp = tmpfile();

// 写入一些数据
fwrite($fp, '\'PHP\' is a Recursive acronym');

// 没有 magic_quotes_runtime
rewind($fp);
set_magic_quotes_runtime(false);

echo 'Without magic_quotes_runtime: ' . fread($fp, 64), PHP_EOL;

// 有 magic_quotes_runtime
rewind($fp);
set_magic_quotes_runtime(true);

echo 'With magic_quotes_runtime: ' . fread($fp, 64), PHP_EOL;

// 清理
fclose($fp);
?>

以上例程会输出：

Without magic_quotes_runtime: 'PHP' is a Recursive acronym
With magic_quotes_runtime: \'PHP\' is a Recursive acronym

参见

  • get_magic_quotes_gpc() - 获取当前 magic_quotes_gpc 的配置选项设置
  • get_magic_quotes_runtime() - 获取当前 magic_quotes_runtime 配置选项的激活状态

set_include_path
set_time_limit
PHP 选项/信息 函数


设置脚本最大执行时间

set_magic_quotes_runtime
sys_get_temp_dir
PHP 选项/信息 函数
PHP Manual

set_time_limit

(PHP 4, PHP 5, PHP 7)

set_time_limit — 设置脚本最大执行时间

说明

bool set_time_limit ( int $seconds )

设置允许脚本运行的时间，单位为秒。如果超过了此设置，脚本返回一个致命的错误。默认值为30秒，或者是在php.ini的max_execution_time被定义的值，如果此值存在。

当此函数被调用时，set_time_limit()会从零开始重新启动超时计数器。换句话说，如果超时默认是30秒，在脚本运行了了25秒时调用 set_time_limit(20)，那么，脚本在超时之前可运行总时间为45秒。

参数

seconds

最大的执行时间，单位为秒。如果设置为0（零），没有时间方面的限制。

返回值

成功时返回 TRUE，失败时返回 FALSE 。

注释

Warning

当php运行于安全模式时，此功能不能生效。除了关闭安全模式或改变php.ini中的时间限制，没有别的办法。

Note:

set_time_limit()函数和配置指令max_execution_time只影响脚本本身执行的时间。任何发生在诸如使用system()的系统调用，流操作，数据库操作等的脚本执行的最大时间不包括其中，当该脚本已运行。在测量时间是实值的Windows中，情况就不是如此了。

参见

  • max_execution_time
  • max_input_time

set_magic_quotes_runtime
sys_get_temp_dir
PHP 选项/信息 函数


返回用于临时文件的目录

set_time_limit
version_compare
PHP 选项/信息 函数
PHP Manual

sys_get_temp_dir

(PHP 5 >= 5.2.1, PHP 7)

sys_get_temp_dir — 返回用于临时文件的目录

说明

string sys_get_temp_dir ( void )

返回 PHP 储存临时文件的默认目录的路径。

返回值

返回临时目录的路径。

范例

Example #1 sys_get_temp_dir() 例子

<?php
// 使用 sys_get_temp_dir() 在目录里创建临时文件
$temp_file = tempnam(sys_get_temp_dir(), 'Tux');

echo $temp_file;
?>

以上例程的输出类似于：

C:\Windows\Temp\TuxA318.tmp

参见

  • tmpfile() - 建立一个临时文件
  • tempnam() - 建立一个具有唯一文件名的文件

set_time_limit
version_compare
PHP 选项/信息 函数


对比两个「PHP 规范化」的版本数字字符串

sys_get_temp_dir
zend_logo_guid
PHP 选项/信息 函数
PHP Manual

version_compare

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

version_compare — 对比两个「PHP 规范化」的版本数字字符串

说明

mixed version_compare ( string $version1 , string $version2 [, string $operator ] )

version_compare() 用于对比两个「PHP 规范化」的版本数字字符串。

此函数首先在版本字符串里用一个点 . 替换 _、- 和 +，也会在任意非数字前后插入一个点 .，这样，类似 '4.3.2RC1' 将会变成 '4.3.2.RC.1'。 接下来它会分割结果， 然后它会从左往右对比各个部分。 如果某部分包含了特定的版本字符串，将会用以下顺序处理： 列表中未找到的任意字符串 < dev < alpha = a < beta = b < RC = rc < # < pl = p。 这种方式不仅能够对比类似 '4.1' 和 '4.1.2' 那种不同的版本级别，同时也可以指定对比任何包含 PHP 开发状态的版本。

参数

version1

第一个版本数。

version2

第二个版本数。

operator

如果你指定了可选的第三个参数 operator，你可以测试两者的特定关系。 可以的操作符分别是：<、 lt、<=、 le、>、 gt、>=、 ge、==、 =、eq、 !=、<> 和 ne。

此参数区分大小写，它的值应该是小写的。

返回值

默认情况下，在第一个版本低于第二个时，version_compare() 返回 -1；如果两者相等，返回 0；第二个版本更低时则返回 1。

当使用了可选参数 operator 时，如果关系是操作符所指定的那个，函数将返回 TRUE，否则返回 FALSE。

范例

下例使用了 PHP_VERSION 常量，因为它执行的代码包含了 PHP 版本的值。

Example #1 version_compare() examples

<?php
if (version_compare(PHP_VERSION, '7.0.0') >= 0) {
    echo 'I am at least PHP version 7.0.0, my version: ' . PHP_VERSION . "\n";
}

if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
    echo 'I am at least PHP version 5.3.0, my version: ' . PHP_VERSION . "\n";
}

if (version_compare(PHP_VERSION, '5.0.0', '>=')) {
    echo 'I am at least PHP version 5.0.0, my version: ' . PHP_VERSION . "\n";
}

if (version_compare(PHP_VERSION, '5.0.0', '<')) {
    echo 'I am still PHP 4, my version: ' . PHP_VERSION . "\n";
}
?>

注释

Note:

PHP_VERSION 常量包含了当前 PHP 的版本。

Note:

注意，类似 5.3.0-dev 的预发行版本，被认为是低于它们的最终发行版本（就像 5.3.0）。

Note:

指定类似 alpha、beta 的版本字符串是大小写敏感的。 版本字符串的来源若不遵循 PHP 标准，可能需要在调用 version_compare() 之前先用 strtolower() 转成小写。

参见

  • phpversion() - 获取当前的PHP版本
  • php_uname() - 返回运行 PHP 的系统的有关信息
  • function_exists() - 如果给定的函数已经被定义就返回 TRUE

sys_get_temp_dir
zend_logo_guid
PHP 选项/信息 函数


获取 Zend guid

version_compare
zend_thread_id
PHP 选项/信息 函数
PHP Manual

zend_logo_guid

(PHP 4, PHP < 5.5)

zend_logo_guid — 获取 Zend guid

说明

string zend_logo_guid ( void )

该函数返回了一个 ID，能够使用内置的图像来显示 Zend logo。

Warning

自 PHP 5.5.0 起，已经废弃并移除此函数。

返回值

返回 PHPE9568F35-D428-11d2-A769-00AA001ACF42.

更新日志

版本 | 说明
5.5.0 | zend_logo_guid() 从 PHP 中移除了。

范例

Example #1 zend_logo_guid() 例子

<?php

echo '<img src="' . $_SERVER['PHP_SELF'] .
     '?=' . zend_logo_guid() . '" alt="Zend Logo !" />';

?>

参见

  • php_logo_guid() - 获取 logo 的 guid

version_compare
zend_thread_id
PHP 选项/信息 函数


返回当前线程的唯一识别符

zend_logo_guid
zend_version
PHP 选项/信息 函数
PHP Manual

zend_thread_id

(PHP 5, PHP 7)

zend_thread_id — 返回当前线程的唯一识别符

说明

int zend_thread_id ( void )

该函数返回当前线程的唯一识别符。

返回值

以整型（integer）返回线程的 ID。

范例

Example #1 zend_thread_id() 例子

<?php
$thread_id = zend_thread_id();

echo 'Current thread id is: ' . $thread_id;
?>

以上例程的输出类似于：

Current thread id is: 7864

注释

Note:

该函数仅在以下情况有效：PHP 内置 ZTS（Zend 线程安全）的支持， 并开启调试模式（--enable-debug）时。

zend_logo_guid
zend_version
PHP 选项/信息 函数


获取当前 Zend 引擎的版本

zend_thread_id
runkit
PHP 选项/信息 函数
PHP Manual

zend_version

(PHP 4, PHP 5, PHP 7)

zend_version — 获取当前 Zend 引擎的版本

说明

string zend_version ( void )

获取当前运行的 Zend 引擎的版本字符串。

返回值

获取 Zend 引擎的版本数字的字符串。

范例

Example #1 zend_version() 例子

<?php
echo "Zend engine version: " . zend_version();
?>

以上例程的输出类似于：

Zend engine version: 2.2.0

参见

  • phpinfo() - 输出关于 PHP 配置的信息
  • phpcredits() - 打印 PHP 贡献者名单
  • php_logo_guid() - 获取 logo 的 guid
  • phpversion() - 获取当前的PHP版本

zend_thread_id
runkit
PHP 选项/信息 函数


runkit

  • 简介
  • 预定义常量
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • runkit 函数
    • Runkit_Sandbox — Runkit Sandbox Class -- PHP Virtual Machine
    • Runkit_Sandbox_Parent — Runkit Anti-Sandbox Class
    • runkit_class_adopt — Convert a base class to an inherited class, add ancestral methods when appropriate
    • runkit_class_emancipate — Convert an inherited class to a base class, removes any method whose scope is ancestral
    • runkit_constant_add — Similar to define(), but allows defining in class definitions as well
    • runkit_constant_redefine — Redefine an already defined constant
    • runkit_constant_remove — Remove/Delete an already defined constant
    • runkit_function_add — Add a new function, similar to create_function
    • runkit_function_copy — Copy a function to a new function name
    • runkit_function_redefine — Replace a function definition with a new implementation
    • runkit_function_remove — Remove a function definition
    • runkit_function_rename — Change a function's name
    • runkit_import — Process a PHP file importing function and class definitions, overwriting where appropriate
    • runkit_lint_file — Check the PHP syntax of the specified file
    • runkit_lint — Check the PHP syntax of the specified php code
    • runkit_method_add — Dynamically adds a new method to a given class
    • runkit_method_copy — Copies a method from class to another
    • runkit_method_redefine — Dynamically changes the code of the given method
    • runkit_method_remove — Dynamically removes the given method
    • runkit_method_rename — Dynamically changes the name of the given method
    • runkit_return_value_used — Determines if the current functions return value will be used
    • runkit_sandbox_output_handler — Specify a function to capture and/or process output from a runkit sandbox
    • runkit_superglobals — Return numerically indexed array of registered superglobals
zend_version
简介
影响 PHP 行为的扩展


简介

The runkit extension provides means to modify constants, user-defined functions, and user-defined classes. It also provides for custom superglobal variables and embeddable sub-interpreters via sandboxing.

This package is meant as a feature added replacement for the » classkit package. When compiled with the --enable-runkit=classkit option to ./configure, it will export classkit compatible function definitions and constants.

runkit
预定义常量
runkit


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

RUNKIT_IMPORT_FUNCTIONS (integer)
runkit_import() flag indicating that normal functions should be imported from the specified file.
RUNKIT_IMPORT_CLASS_METHODS (integer)
runkit_import() flag indicating that class methods should be imported from the specified file.
RUNKIT_IMPORT_CLASS_CONSTS (integer)
runkit_import() flag indicating that class constants should be imported from the specified file. Note that this flag is only meaningful in PHP versions 5.1.0 and above.
RUNKIT_IMPORT_CLASS_PROPS (integer)
runkit_import() flag indicating that class standard properties should be imported from the specified file.
RUNKIT_IMPORT_CLASS_STATIC_PROPS (integer)
runkit_import() flag indicating that class static properties should be imported from the specified file. Available since Runkit 1.0.1.
RUNKIT_IMPORT_CLASSES (integer)
runkit_import() flag representing a bitwise OR of the RUNKIT_IMPORT_CLASS_* constants.
RUNKIT_IMPORT_OVERRIDE (integer)
runkit_import() flag indicating that if any of the imported functions, methods, constants, or properties already exist, they should be replaced with the new definitions. If this flag is not set, then any imported definitions which already exist will be discarded.
RUNKIT_ACC_PUBLIC (integer)
PHP 5 specific flag to runkit_method_add() and runkit_method_redefine()
RUNKIT_ACC_PROTECTED (integer)
PHP 5 specific flag to runkit_method_add() and runkit_method_redefine()
RUNKIT_ACC_PRIVATE (integer)
PHP 5 specific flag to runkit_method_add() and runkit_method_redefine()
RUNKIT_ACC_STATIC (integer)
PHP 5 specific flag to runkit_method_add() and runkit_method_redefine(). Available since Runkit 1.0.1.
CLASSKIT_ACC_PUBLIC (integer)
PHP 5 specific flag to classkit_method_add() Only defined when classkit compatibility is enabled.
CLASSKIT_ACC_PROTECTED (integer)
PHP 5 specific flag to classkit_method_add() Only defined when classkit compatibility is enabled.
CLASSKIT_ACC_PRIVATE (integer)
PHP 5 specific flag to classkit_method_add() Only defined when classkit compatibility is enabled.
CLASSKIT_AGGREGATE_OVERRIDE (integer)
PHP 5 specific flag to classkit_import() Only defined when classkit compatibility is enabled.
RUNKIT_VERSION (string)
Defined to the current version of the runkit package.
CLASSKIT_VERSION (string)
Defined to the current version of the runkit package. Only defined when classkit compatibility is enabled.
简介
安装／配置
runkit


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
预定义常量
需求
runkit


需求

Modifying Constants, Functions, Classes, and Methods as well as Custom Superglobals works with all releases of PHP 5. No special requirements are necessary.

Sandboxing requires PHP 5.1.0 or later, or PHP 5.0.0 with a special TSRM patch applied. Regardless of which version of PHP is in use it must be compiled with the --enable-maintainer-zts option. See the README file in the runkit package for additional information.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/runkit.

Windows binaries (DLL files) for this PECL extension are available from the PECL website.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Runkit Configuration Options
名字 | 默认 | 可修改范围 | 更新日志
runkit.superglobal | "" | PHP_INI_PERDIR |
runkit.internal_override | "0" | PHP_INI_SYSTEM |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

runkit.superglobal string
Comma-separated list of variable names to be treated as superglobals. This value should be set in the systemwide php.ini file, but may work in perdir configuration contexts depending on your SAPI.

Example #1 Custom Superglobals with runkit.superglobal=_FOO,_BAR in php.ini

<?php
function show_values() {
  echo "Foo is $_FOO\n";
  echo "Bar is $_BAR\n";
  echo "Baz is $_BAZ\n";
}

$_FOO = 'foo';
$_BAR = 'bar';
$_BAZ = 'baz';

/* Displays foo and bar, but not baz */
show_values();
?>
runkit.internal_override boolean
Enables ability to modify/rename/remove internal functions.

安装
资源类型
安装／配置


资源类型

此扩展没有定义资源类型。

运行时配置
runkit 函数
安装／配置


runkit 函数

Table of Contents

  • Runkit_Sandbox — Runkit Sandbox Class -- PHP Virtual Machine
  • Runkit_Sandbox_Parent — Runkit Anti-Sandbox Class
  • runkit_class_adopt — Convert a base class to an inherited class, add ancestral methods when appropriate
  • runkit_class_emancipate — Convert an inherited class to a base class, removes any method whose scope is ancestral
  • runkit_constant_add — Similar to define(), but allows defining in class definitions as well
  • runkit_constant_redefine — Redefine an already defined constant
  • runkit_constant_remove — Remove/Delete an already defined constant
  • runkit_function_add — Add a new function, similar to create_function
  • runkit_function_copy — Copy a function to a new function name
  • runkit_function_redefine — Replace a function definition with a new implementation
  • runkit_function_remove — Remove a function definition
  • runkit_function_rename — Change a function's name
  • runkit_import — Process a PHP file importing function and class definitions, overwriting where appropriate
  • runkit_lint_file — Check the PHP syntax of the specified file
  • runkit_lint — Check the PHP syntax of the specified php code
  • runkit_method_add — Dynamically adds a new method to a given class
  • runkit_method_copy — Copies a method from class to another
  • runkit_method_redefine — Dynamically changes the code of the given method
  • runkit_method_remove — Dynamically removes the given method
  • runkit_method_rename — Dynamically changes the name of the given method
  • runkit_return_value_used — Determines if the current functions return value will be used
  • runkit_sandbox_output_handler — Specify a function to capture and/or process output from a runkit sandbox
  • runkit_superglobals — Return numerically indexed array of registered superglobals
资源类型
Runkit_Sandbox
runkit


Runkit Sandbox Class -- PHP Virtual Machine

runkit 函数
Runkit_Sandbox_Parent
runkit 函数
PHP Manual

Runkit_Sandbox

(PECL runkit >= 0.7.0)

Runkit_Sandbox — Runkit Sandbox Class -- PHP Virtual Machine

说明

Instantiating the Runkit_Sandbox class creates a new thread with its own scope and program stack. Using a set of options passed to the constructor, this environment may be restricted to a subset of what the primary interpreter can do and provide a safer environment for executing user supplied code.

Note: 沙箱支持（是 runkit_lint()，runkit_lint_file() 函数，与 Runkit_Sandbox 类所必需）仅可用于 PHP 5.1.0 或 PHP 5.0 的特别修补版本，并需启用线程安全。更多信息可参见 runkit 包中的 README 文件。

Constructor

void Runkit_Sandbox::__construct ([ array $options ] )

options is an associative array containing any combination of the special ini options listed below.

safe_mode

If the outer script which is instantiating the Runkit_Sandbox class is configured with safe_mode = off, then safe_mode may be turned on for the sandbox environment. This setting can not be used to disable safe_mode when it's already enabled in the outer script.

safe_mode_gid

If the outer script which is instantiating the Runkit_Sandbox class is configured with safe_mode_gid = on, then safe_mode_gid may be turned off for the sandbox environment. This setting can not be used to enable safe_mode_gid when it's already disabled in the outer script.

safe_mode_include_dir

If the outer script which is instantiating the Runkit_Sandbox class is configured with a safe_mode_include_dir, then a new safe_mode_include_dir may be set for sandbox environments below the currently defined value. safe_mode_include_dir may also be cleared to indicate that the bypass feature is disabled. If safe_mode_include_dir was blank in the outer script, but safe_mode was not enabled, then any arbitrary safe_mode_include_dir may be set while turning safe_mode on.

open_basedir

open_basedir may be set to any path below the current setting of open_basedir. If open_basedir is not set within the global scope, then it is assumed to be the root directory and may be set to any location.

allow_url_fopen

Like safe_mode, this setting can only be made more restrictive, in this case by setting it to FALSE when it is previously set to TRUE

disable_functions

Comma separated list of functions to disable within the sandbox sub-interpreter. This list need not contain the names of the currently disabled functions, they will remain disabled whether listed here or not.

disable_classes

Comma separated list of classes to disable within the sandbox sub-interpreter. This list need not contain the names of the currently disabled classes, they will remain disabled whether listed here or not.

runkit.superglobal

Comma separated list of variables to be treated as superglobals within the sandbox sub-interpreter. These variables will be used in addition to any variables defined internally or through the global runkit.superglobal setting.

runkit.internal_override

Ini option runkit.internal_override may be disabled (but not re-enabled) within sandboxes.

Example #1 Instantiating a restricted sandbox

<?php
$options = array(
  'safe_mode'=>true,
  'open_basedir'=>'/var/www/users/jdoe/',
  'allow_url_fopen'=>'false',
  'disable_functions'=>'exec,shell_exec,passthru,system',
  'disable_classes'=>'myAppClass');
$sandbox = new Runkit_Sandbox($options);
/* Non-protected ini settings may set normally */
$sandbox->ini_set('html_errors',true);
?>

Accessing Variables

All variables in the global scope of the sandbox environment are accessible as properties of the sandbox object. The first thing to note is that because of the way memory between these two threads is managed, object and resource variables can not currently be exchanged between interpreters. Additionally, all arrays are deep copied and any references will be lost. This also means that references between interpreters are not possible.

Example #2 Working with variables in a sandbox

<?php
$sandbox = new Runkit_Sandbox();

$sandbox->foo = 'bar';
$sandbox->eval('echo "$foo\n"; $bar = $foo . "baz";');
echo "{$sandbox->bar}\n";
if (isset($sandbox->foo)) unset($sandbox->foo);
$sandbox->eval('var_dump(isset($foo));');
?>

以上例程会输出：

bar
barbaz
bool(false)

Calling PHP Functions

Any function defined within the sandbox may be called as a method on the sandbox object. This also includes a few pseudo-function language constructs: eval(), include, include_once, require, require_once, echo, print, die(), and exit().

Example #3 Calling sandbox functions

<?php
$sandbox = new Runkit_Sandbox();

echo $sandbox->str_replace('a','f','abc');
?>

以上例程会输出：

fbc

When passing arguments to a sandbox function, the arguments are taken from the outer instance of PHP. If you wish to pass arguments from the sandbox's scope, be sure to access them as properties of the sandbox object as illustrated above.

Example #4 Passing arguments to sandbox functions

<?php
$sandbox = new Runkit_Sandbox();

$foo = 'bar';
$sandbox->foo = 'baz';
echo $sandbox->str_replace('a',$foo,'a');
echo $sandbox->str_replace('a',$sandbox->foo,'a');
?>

以上例程会输出：

bar
baz

Changing Sandbox Settings

As of runkit version 0.5, certain Sandbox settings may be modified on the fly using ArrayAccess syntax. Some settings, such as active are read-only and meant to provide status information. Other settings, such as output_handler may be set and read much like a normal array offset. Future settings may be write-only, however no such settings currently exist.

Sandbox Settings / Status Indicators
Setting | Type | Purpose | Default
active | Boolean (Read Only) | TRUE if the Sandbox is still in a usable state, FALSE if the request is in bailout due to a call to die(), exit(), or because of a fatal error condition. | TRUE (Initial)
output_handler | Callback | When set to a valid callback, all output generated by the Sandbox instance will be processed through the named function. Sandbox output handlers follow the same calling conventions as the system-wide output handler. | None
parent_access | Boolean | May the sandbox use instances of the Runkit_Sandbox_Parent class? Must be enabled for other Runkit_Sandbox_Parent related settings to work. | FALSE
parent_read | Boolean | May the sandbox read variables in its parent's context? | FALSE
parent_write | Boolean | May the sandbox modify variables in its parent's context? | FALSE
parent_eval | Boolean | May the sandbox evaluate arbitrary code in its parent's context? DANGEROUS | FALSE
parent_include | Boolean | May the sandbox include php code files in its parent's context? DANGEROUS | FALSE
parent_echo | Boolean | May the sandbox echo data in its parent's context effectively bypassing its own output_handler? | FALSE
parent_call | Boolean | May the sandbox call functions in its parent's context? | FALSE
parent_die | Boolean | May the sandbox kill its own parent? (And thus itself) | FALSE
parent_scope | Integer | What scope will parental property access look at? 0 == Global scope, 1 == Calling scope, 2 == Scope preceding calling scope, 3 == The scope before that, etc..., etc... | 0 (Global)
parent_scope | String | When parent_scope is set to a string value, it refers to a named array variable in the global scope. If the named variable does not exist at the time of access it will be created as an empty array. If the variable exists but it not an array, a dummy array will be created containing a reference to the named global variable. |

runkit 函数
Runkit_Sandbox_Parent
runkit 函数


Runkit Anti-Sandbox Class

Runkit_Sandbox
runkit_class_adopt
runkit 函数
PHP Manual

Runkit_Sandbox_Parent

(PECL runkit >= 0.7.0)

Runkit_Sandbox_Parent — Runkit Anti-Sandbox Class

说明

void Runkit_Sandbox_Parent::__construct ( void )

Instantiating the Runkit_Sandbox_Parent class from within a sandbox environment created from the Runkit_Sandbox class provides some (controlled) means for a sandbox child to access its parent.

Note: 沙箱支持（是 runkit_lint()，runkit_lint_file() 函数，与 Runkit_Sandbox 类所必需）仅可用于 PHP 5.1.0 或 PHP 5.0 的特别修补版本，并需启用线程安全。更多信息可参见 runkit 包中的 README 文件。

In order for any of the Runkit_Sandbox_Parent features to function. Support must be enabled on a per-sandbox basis by enabling the parent_access flag from the parent's context.

Example #1 Working with variables in a sandbox

<?php
$sandbox = new Runkit_Sandbox();
$sandbox['parent_access'] = true;
?>

Accessing the Parent's Variables

Just as with sandbox variable access, a sandbox parent's variables may be read from and written to as properties of the Runkit_Sandbox_Parent class. Read access to parental variables may be enabled with the parent_read setting (in addition to the base parent_access setting). Write access, in turn, is enabled through the parent_write setting.

Unlike sandbox child variable access, the variable scope is not limited to globals only. By setting the parent_scope setting to an appropriate integer value, other scopes in the active call stack may be inspected instead. A value of 0 (Default) will direct variable access at the global scope. 1 will point variable access at whatever variable scope was active at the time the current block of sandbox code was executed. Higher values progress back through the functions that called the functions that led to the sandbox executing code that tried to access its own parent's variables.

Example #2 Accessing parental variables

<?php
$php = new Runkit_Sandbox();
$php['parent_access'] = true;
$php['parent_read'] = true;

$test = "Global";

$php->eval('$PARENT = new Runkit_Sandbox_Parent;');

$php['parent_scope'] = 0;
one();

$php['parent_scope'] = 1;
one();

$php['parent_scope'] = 2;
one();

$php['parent_scope'] = 3;
one();

$php['parent_scope'] = 4;
one();

$php['parent_scope'] = 5;
one();

function one() {
    $test = "one()";
    two();
}

function two() {
    $test = "two()";
    three();
}

function three() {
    $test = "three()";
    $GLOBALS['php']->eval('var_dump($PARENT->test);');
}
?>

以上例程会输出：

string(6) "Global"
string(7) "three()"
string(5) "two()"
string(5) "one()"
string(6) "Global"
string(6) "Global"

Calling the Parent's Functions

Just as with sandbox access, a sandbox may access its parents functions providing that the proper settings have been enabled. Enabling parent_call will allow the sandbox to call all functions available to the parent scope. Language constructs are each controlled by their own setting: print and echo are enabled with parent_echo. die() and exit() are enabled with parent_die. eval() is enabled with parent_eval while include, include_once, require, and require_once are enabled through parent_include.

Runkit_Sandbox
runkit_class_adopt
runkit 函数


Convert a base class to an inherited class, add ancestral methods when appropriate

Runkit_Sandbox_Parent
runkit_class_emancipate
runkit 函数
PHP Manual

runkit_class_adopt

(PECL runkit >= 0.7.0)

runkit_class_adopt — Convert a base class to an inherited class, add ancestral methods when appropriate

说明

bool runkit_class_adopt ( string $classname , string $parentname )

参数

classname

Name of class to be adopted

parentname

Parent class which child class is extending

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 A runkit_class_adopt() example

<?php
class myParent {
  function parentFunc() {
    echo "Parent Function Output\n";
  }
}

class myChild {
}

runkit_class_adopt('myChild','myParent');
myChild::parentFunc();
?>

以上例程会输出：

Parent Function Output

参见

  • runkit_class_emancipate() - Convert an inherited class to a base class, removes any method whose scope is ancestral

Runkit_Sandbox_Parent
runkit_class_emancipate
runkit 函数


Convert an inherited class to a base class, removes any method whose scope is ancestral

runkit_class_adopt
runkit_constant_add
runkit 函数
PHP Manual

runkit_class_emancipate

(PECL runkit >= 0.7.0)

runkit_class_emancipate — Convert an inherited class to a base class, removes any method whose scope is ancestral

说明

bool runkit_class_emancipate ( string $classname )

参数

classname

Name of class to emancipate

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 A runkit_class_emancipate() example

<?php
class myParent {
  function parentFunc () {
    echo "Parent Function Output\n";
  }
}
class myChild extends myParent {
}

myChild::parentFunc();
runkit_class_emancipate('myChild');
myChild::parentFunc();
?>

以上例程会输出：

Parent Function Output
Fatal error: Call to undefined function:  parentFunc() in example.php on line 12

参见

  • runkit_class_adopt() - Convert a base class to an inherited class, add ancestral methods when appropriate

runkit_class_adopt
runkit_constant_add
runkit 函数


Similar to define(), but allows defining in class definitions as well

runkit_class_emancipate
runkit_constant_redefine
runkit 函数
PHP Manual

runkit_constant_add

(PECL runkit >= 0.7.0)

runkit_constant_add — Similar to define(), but allows defining in class definitions as well

说明

bool runkit_constant_add ( string $constname , mixed $value )

参数

constname

Name of constant to declare. Either a string to indicate a global constant, or classname::constname to indicate a class constant.

value

NULL, Bool, Long, Double, String, or Resource value to store in the new constant.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • define() - 定义一个常量
  • runkit_constant_redefine() - Redefine an already defined constant
  • runkit_constant_remove() - Remove/Delete an already defined constant

runkit_class_emancipate
runkit_constant_redefine
runkit 函数


Redefine an already defined constant

runkit_constant_add
runkit_constant_remove
runkit 函数
PHP Manual

runkit_constant_redefine

(PECL runkit >= 0.7.0)

runkit_constant_redefine — Redefine an already defined constant

说明

bool runkit_constant_redefine ( string $constname , mixed $newvalue )

参数

constname

Constant to redefine. Either string indicating global constant, or classname::constname indicating class constant.

newvalue

New value to assign to constant.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • runkit_constant_add() - Similar to define(), but allows defining in class definitions as well
  • runkit_constant_remove() - Remove/Delete an already defined constant

runkit_constant_add
runkit_constant_remove
runkit 函数


Remove/Delete an already defined constant

runkit_constant_redefine
runkit_function_add
runkit 函数
PHP Manual

runkit_constant_remove

(PECL runkit >= 0.7.0)

runkit_constant_remove — Remove/Delete an already defined constant

说明

bool runkit_constant_remove ( string $constname )

参数

constname

Name of constant to remove. Either a string indicating a global constant, or classname::constname indicating a class constant.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • define() - 定义一个常量
  • runkit_constant_add() - Similar to define(), but allows defining in class definitions as well
  • runkit_constant_redefine() - Redefine an already defined constant

runkit_constant_redefine
runkit_function_add
runkit 函数


Add a new function, similar to create_function

runkit_constant_remove
runkit_function_copy
runkit 函数
PHP Manual

runkit_function_add

(PECL runkit >= 0.7.0)

runkit_function_add — Add a new function, similar to create_function()

说明

bool runkit_function_add ( string $funcname , string $arglist , string $code [, bool $return_by_reference = NULL [, string $doc_comment = NULL ]] )
bool runkit_function_add ( string $funcname , Closure $closure [, string $doc_comment = NULL ] )

参数

funcname

Name of function to be created

arglist

Comma separated argument list

code

Code making up the function

closure

A closure that defines the function.

return_by_reference

Whether the function should return by reference.

doc_comment

The doc comment of the function.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
runkit 1.0.4 | An alternative syntax expecting a closure has been added.
runkit 1.0.4 | The optional parameters return_by_reference and doc_comment have been added.

范例

Example #1 A runkit_function_add() example

<?php
runkit_function_add('testme','$a,$b','echo "The value of a is $a\n"; echo "The value of b is $b\n";');
testme(1,2);
?>

以上例程会输出：

The value of a is 1
The value of b is 2

参见

  • create_function() - Create an anonymous (lambda-style) function
  • runkit_function_redefine() - Replace a function definition with a new implementation
  • runkit_function_copy() - Copy a function to a new function name
  • runkit_function_rename() - Change a function's name
  • runkit_function_remove() - Remove a function definition
  • runkit_method_add() - Dynamically adds a new method to a given class

runkit_constant_remove
runkit_function_copy
runkit 函数


Copy a function to a new function name

runkit_function_add
runkit_function_redefine
runkit 函数
PHP Manual

runkit_function_copy

(PECL runkit >= 0.7.0)

runkit_function_copy — Copy a function to a new function name

说明

bool runkit_function_copy ( string $funcname , string $targetname )

参数

funcname

Name of existing function

targetname

Name of new function to copy definition to

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 A runkit_function_copy() example

<?php
function original() {
  echo "In a function\n";
}
runkit_function_copy('original','duplicate');
original();
duplicate();
?>

以上例程会输出：

In a function
In a function

参见

  • runkit_function_add() - Add a new function, similar to create_function
  • runkit_function_redefine() - Replace a function definition with a new implementation
  • runkit_function_rename() - Change a function's name
  • runkit_function_remove() - Remove a function definition

runkit_function_add
runkit_function_redefine
runkit 函数


Replace a function definition with a new implementation

runkit_function_copy
runkit_function_remove
runkit 函数
PHP Manual

runkit_function_redefine

(PECL runkit >= 0.7.0)

runkit_function_redefine — Replace a function definition with a new implementation

说明

bool runkit_function_redefine ( string $funcname , string $arglist , string $code [, bool $return_by_reference = NULL [, string $doc_comment = NULL ]] )
bool runkit_function_redefine ( string $funcname , Closure $closure [, string $doc_comment = NULL ] )

Note: 默认情况下，仅在用户空间可删除，重命名，或者修改函数。为了覆盖内部函数，必须启用 php.ini 中的 runkit.internal_override 设置。

参数

funcname

Name of function to redefine

arglist

New list of arguments to be accepted by function

code

New code implementation

closure

A closure that defines the function.

return_by_reference

Whether the function should return by reference.

doc_comment

The doc comment of the function.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
runkit 1.0.4 | An alternative syntax expecting a closure has been added.
runkit 1.0.4 | The optional parameters return_by_reference and doc_comment have been added.

范例

Example #1 A runkit_function_redefine() example

<?php
function testme() {
  echo "Original Testme Implementation\n";
}
testme();
runkit_function_redefine('testme','','echo "New Testme Implementation\n";');
testme();
?>

以上例程会输出：

Original Testme Implementation
New Testme Implementation

参见

  • runkit_function_add() - Add a new function, similar to create_function
  • runkit_function_copy() - Copy a function to a new function name
  • runkit_function_rename() - Change a function's name
  • runkit_function_remove() - Remove a function definition
  • runkit_method_redefine() - Dynamically changes the code of the given method

runkit_function_copy
runkit_function_remove
runkit 函数


Remove a function definition

runkit_function_redefine
runkit_function_rename
runkit 函数
PHP Manual

runkit_function_remove

(PECL runkit >= 0.7.0)

runkit_function_remove — Remove a function definition

说明

bool runkit_function_remove ( string $funcname )

Note: 默认情况下，仅在用户空间可删除，重命名，或者修改函数。为了覆盖内部函数，必须启用 php.ini 中的 runkit.internal_override 设置。

参数

funcname

Name of function to be deleted

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • runkit_function_add() - Add a new function, similar to create_function
  • runkit_function_copy() - Copy a function to a new function name
  • runkit_function_redefine() - Replace a function definition with a new implementation
  • runkit_function_rename() - Change a function's name

runkit_function_redefine
runkit_function_rename
runkit 函数


Change a function's name

runkit_function_remove
runkit_import
runkit 函数
PHP Manual

runkit_function_rename

(PECL runkit >= 0.7.0)

runkit_function_rename — Change a function's name

说明

bool runkit_function_rename ( string $funcname , string $newname )

Note: 默认情况下，仅在用户空间可删除，重命名，或者修改函数。为了覆盖内部函数，必须启用 php.ini 中的 runkit.internal_override 设置。

参数

funcname

Current function name

newname

New function name

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • runkit_function_add() - Add a new function, similar to create_function
  • runkit_function_copy() - Copy a function to a new function name
  • runkit_function_redefine() - Replace a function definition with a new implementation
  • runkit_function_remove() - Remove a function definition

runkit_function_remove
runkit_import
runkit 函数


Process a PHP file importing function and class definitions, overwriting where appropriate

runkit_function_rename
runkit_lint_file
runkit 函数
PHP Manual

runkit_import

(PECL runkit >= 0.7.0)

runkit_import — Process a PHP file importing function and class definitions, overwriting where appropriate

说明

bool runkit_import ( string $filename [, int $flags = RUNKIT_IMPORT_CLASS_METHODS ] )

Similar to include however any code residing outside of a function or class is simply ignored. Additionally, depending on the value of flags, any functions or classes which already exist in the currently running environment may be automatically overwritten by their new definitions.

参数

filename

Filename to import function and class definitions from

flags

Bitwise OR of the RUNKIT_IMPORT_* family of constants.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 runkit_import() example

<?php
// import classes entirely
runkit_import('myfile.inc', RUNKIT_IMPORT_CLASSES);

/* import classes, but not imports their static properties
   (RUNKIT_IMPORT_CLASS_STATIC_PROPS is available since 1.0.1) */
runkit_import('myfile.inc', RUNKIT_IMPORT_CLASSES & ~RUNKIT_IMPORT_CLASS_STATIC_PROPS);

/* import only static properties of classes
   (RUNKIT_IMPORT_CLASS_STATIC_PROPS is available since 1.0.1) */
runkit_import('myfile.inc', RUNKIT_IMPORT_CLASS_STATIC_PROPS);
?>

runkit_function_rename
runkit_lint_file
runkit 函数


Check the PHP syntax of the specified file

runkit_import
runkit_lint
runkit 函数
PHP Manual

runkit_lint_file

(PECL runkit >= 0.7.0)

runkit_lint_file — Check the PHP syntax of the specified file

说明

bool runkit_lint_file ( string $filename )

The runkit_lint_file() function performs a syntax (lint) check on the specified filename testing for scripting errors. This is similar to using php -l from the commandline.

Note: 沙箱支持（是 runkit_lint()，runkit_lint_file() 函数，与 Runkit_Sandbox 类所必需）仅可用于 PHP 5.1.0 或 PHP 5.0 的特别修补版本，并需启用线程安全。更多信息可参见 runkit 包中的 README 文件。

参数

filename

File containing PHP Code to be lint checked

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • runkit_lint() - Check the PHP syntax of the specified php code

runkit_import
runkit_lint
runkit 函数


Check the PHP syntax of the specified php code

runkit_lint_file
runkit_method_add
runkit 函数
PHP Manual

runkit_lint

(PECL runkit >= 0.7.0)

runkit_lint — Check the PHP syntax of the specified php code

说明

bool runkit_lint ( string $code )

The runkit_lint() function performs a syntax (lint) check on the specified php code testing for scripting errors. This is similar to using php -l from the command line except runkit_lint() accepts actual code rather than a filename.

Note: 沙箱支持（是 runkit_lint()，runkit_lint_file() 函数，与 Runkit_Sandbox 类所必需）仅可用于 PHP 5.1.0 或 PHP 5.0 的特别修补版本，并需启用线程安全。更多信息可参见 runkit 包中的 README 文件。

参数

code

PHP Code to be lint checked

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • runkit_lint_file() - Check the PHP syntax of the specified file

runkit_lint_file
runkit_method_add
runkit 函数


Dynamically adds a new method to a given class

runkit_lint
runkit_method_copy
runkit 函数
PHP Manual

runkit_method_add

(PECL runkit >= 0.7.0)

runkit_method_add — Dynamically adds a new method to a given class

说明

bool runkit_method_add ( string $classname , string $methodname , string $args , string $code [, int $flags = RUNKIT_ACC_PUBLIC [, string $doc_comment = NULL ]] )
bool runkit_method_add ( string $classname , string $methodname , Closure $closure [, int $flags = RUNKIT_ACC_PUBLIC [, string $doc_comment = NULL ]] )

参数

classname

The class to which this method will be added

methodname

The name of the method to add

args

Comma-delimited list of arguments for the newly-created method

code

The code to be evaluated when methodname is called

closure

A closure that defines the method.

flags

The type of method to create, can be RUNKIT_ACC_PUBLIC, RUNKIT_ACC_PROTECTED or RUNKIT_ACC_PRIVATE optionally combined via bitwise OR with RUNKIT_ACC_STATIC (since 1.0.1)

Note:

This parameter is only used as of PHP 5, because, prior to this, all methods were public.

doc_comment

The doc comment of the function.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
runkit 1.0.4 | An alternative syntax expecting a closure has been added.
runkit 1.0.4 | The optional parameter doc_comment has been added.

范例

Example #1 runkit_method_add() example

<?php
class Example {
    function foo() {
        echo "foo!\n";
    }
}

// create an Example object
$e = new Example();

// Add a new public method
runkit_method_add(
    'Example',
    'add',
    '$num1, $num2',
    'return $num1 + $num2;',
    RUNKIT_ACC_PUBLIC
);

// add 12 + 4
echo $e->add(12, 4);
?>

以上例程会输出：

16

参见

  • runkit_method_copy() - Copies a method from class to another
  • runkit_method_redefine() - Dynamically changes the code of the given method
  • runkit_method_remove() - Dynamically removes the given method
  • runkit_method_rename() - Dynamically changes the name of the given method
  • runkit_function_add() - Add a new function, similar to create_function

runkit_lint
runkit_method_copy
runkit 函数


Copies a method from class to another

runkit_method_add
runkit_method_redefine
runkit 函数
PHP Manual

runkit_method_copy

(PECL runkit >= 0.7.0)

runkit_method_copy — Copies a method from class to another

说明

bool runkit_method_copy ( string $dClass , string $dMethod , string $sClass [, string $sMethod ] )

参数

dClass

Destination class for copied method

dMethod

Destination method name

sClass

Source class of the method to copy

sMethod

Name of the method to copy from the source class. If this parameter is omitted, the value of dMethod is assumed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 runkit_method_copy() example

<?php
class Foo {
    function example() {
        return "foo!\n";
    }
}

class Bar {
    // initially, no methods
}

// copy the example() method from the Foo class to the Bar class, as baz()
runkit_method_copy('Bar', 'baz', 'Foo', 'example');

// output copied function
echo Bar::baz();
?>

以上例程会输出：

foo!

参见

  • runkit_method_add() - Dynamically adds a new method to a given class
  • runkit_method_redefine() - Dynamically changes the code of the given method
  • runkit_method_remove() - Dynamically removes the given method
  • runkit_method_rename() - Dynamically changes the name of the given method
  • runkit_function_copy() - Copy a function to a new function name

runkit_method_add
runkit_method_redefine
runkit 函数


Dynamically changes the code of the given method

runkit_method_copy
runkit_method_remove
runkit 函数
PHP Manual

runkit_method_redefine

(PECL runkit >= 0.7.0)

runkit_method_redefine — Dynamically changes the code of the given method

说明

bool runkit_method_redefine ( string $classname , string $methodname , string $args , string $code [, int $flags = RUNKIT_ACC_PUBLIC [, string $doc_comment = NULL ]] )
bool runkit_method_redefine ( string $classname , string $methodname , Closure $closure [, int $flags = RUNKIT_ACC_PUBLIC [, string $doc_comment = NULL ]] )

Note: 此函数不能用来操作当前正常运行（或运行链上）的方法。

参数

classname

The class in which to redefine the method

methodname

The name of the method to redefine

args

Comma-delimited list of arguments for the redefined method

code

The new code to be evaluated when methodname is called

closure

A closure that defines the method.

flags

The redefined method can be RUNKIT_ACC_PUBLIC, RUNKIT_ACC_PROTECTED or RUNKIT_ACC_PRIVATE optionally combined via bitwise OR with RUNKIT_ACC_STATIC (since 1.0.1)

doc_comment

The doc comment of the function.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
runkit 1.0.4 | An alternative syntax expecting a closure has been added.
runkit 1.0.4 | The optional parameter doc_comment has been added.

范例

Example #1 runkit_method_redefine() example

<?php
class Example {
    function foo() {
        return "foo!\n";
    }
}

// create an Example object
$e = new Example();

// output Example::foo() (before redefine)
echo "Before: " . $e->foo();

// Redefine the 'foo' method
runkit_method_redefine(
    'Example',
    'foo',
    '',
    'return "bar!\n";',
    RUNKIT_ACC_PUBLIC
);

// output Example::foo() (after redefine)
echo "After: " . $e->foo();
?>

以上例程会输出：

Before: foo!
After: bar!

参见

  • runkit_method_add() - Dynamically adds a new method to a given class
  • runkit_method_copy() - Copies a method from class to another
  • runkit_method_remove() - Dynamically removes the given method
  • runkit_method_rename() - Dynamically changes the name of the given method
  • runkit_function_redefine() - Replace a function definition with a new implementation

runkit_method_copy
runkit_method_remove
runkit 函数


Dynamically removes the given method

runkit_method_redefine
runkit_method_rename
runkit 函数
PHP Manual

runkit_method_remove

(PECL runkit >= 0.7.0)

runkit_method_remove — Dynamically removes the given method

说明

bool runkit_method_remove ( string $classname , string $methodname )

Note: 此函数不能用来操作当前正常运行（或运行链上）的方法。

参数

classname

The class in which to remove the method

methodname

The name of the method to remove

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 runkit_method_remove() example

<?php
class Example {
    function foo() {
        return "foo!\n";
    }

    function bar() {
        return "bar!\n";
    }
}

// Remove the 'foo' method
runkit_method_remove(
    'Example',
    'foo'
);

echo implode(' ', get_class_methods('Example'));

?>

以上例程会输出：

bar

参见

  • runkit_method_add() - Dynamically adds a new method to a given class
  • runkit_method_copy() - Copies a method from class to another
  • runkit_method_redefine() - Dynamically changes the code of the given method
  • runkit_method_rename() - Dynamically changes the name of the given method
  • runkit_function_remove() - Remove a function definition

runkit_method_redefine
runkit_method_rename
runkit 函数


Dynamically changes the name of the given method

runkit_method_remove
runkit_return_value_used
runkit 函数
PHP Manual

runkit_method_rename

(PECL runkit >= 0.7.0)

runkit_method_rename — Dynamically changes the name of the given method

说明

bool runkit_method_rename ( string $classname , string $methodname , string $newname )

Note: 此函数不能用来操作当前正常运行（或运行链上）的方法。

参数

classname

The class in which to rename the method

methodname

The name of the method to rename

newname

The new name to give to the renamed method

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 runkit_method_rename() example

<?php
class Example {
    function foo() {
        return "foo!\n";
    }
}

// Rename the 'foo' method to 'bar'
runkit_method_rename(
    'Example',
    'foo',
    'bar'
);

// output renamed function
echo Example::bar();
?>

以上例程会输出：

foo!

参见

  • runkit_method_add() - Dynamically adds a new method to a given class
  • runkit_method_copy() - Copies a method from class to another
  • runkit_method_redefine() - Dynamically changes the code of the given method
  • runkit_method_remove() - Dynamically removes the given method
  • runkit_function_rename() - Change a function's name

runkit_method_remove
runkit_return_value_used
runkit 函数


Determines if the current functions return value will be used

runkit_method_rename
runkit_sandbox_output_handler
runkit 函数
PHP Manual

runkit_return_value_used

(PECL runkit >= 0.8.0)

runkit_return_value_used — Determines if the current functions return value will be used

说明

bool runkit_return_value_used ( void )

返回值

Returns TRUE if the function's return value is used by the calling scope, otherwise FALSE

范例

Example #1 runkit_return_value_used() example

<?php
function foo() {
  var_dump(runkit_return_value_used());
}

foo();
$f = foo();
?>

以上例程会输出：

bool(false)
bool(true)

runkit_method_rename
runkit_sandbox_output_handler
runkit 函数


Specify a function to capture and/or process output from a runkit sandbox

runkit_return_value_used
runkit_superglobals
runkit 函数
PHP Manual

runkit_sandbox_output_handler

(PECL runkit >= 0.7.0)

runkit_sandbox_output_handler — Specify a function to capture and/or process output from a runkit sandbox

说明

mixed runkit_sandbox_output_handler ( object $sandbox [, mixed $callback ] )

Ordinarily, anything output (such as with echo or print) will be output as though it were printed from the parent's scope. Using runkit_sandbox_output_handler() however, output generated by the sandbox (including errors), can be captured by a function outside of the sandbox.

Note: 沙箱支持（是 runkit_lint()，runkit_lint_file() 函数，与 Runkit_Sandbox 类所必需）仅可用于 PHP 5.1.0 或 PHP 5.0 的特别修补版本，并需启用线程安全。更多信息可参见 runkit 包中的 README 文件。

Note: Deprecated

As of runkit version 0.5, this function is deprecated and is scheduled to be removed from the package prior to a 1.0 release. The output handler for a given Runkit_Sandbox instance may be read/set using the array offset syntax shown on the Runkit_Sandbox class definition page.

参数

sandbox

Object instance of Runkit_Sandbox class on which to set output handling.

callback

Name of a function which expects one parameter. Output generated by sandbox will be passed to this callback. Anything returned by the callback will be displayed normally. If this parameter is not passed then output handling will not be changed. If a non-truth value is passed, output handling will be disabled and will revert to direct display.

返回值

Returns the name of the previously defined output handler callback, or FALSE if no handler was previously defined.

范例

Example #1 Feeding output to a variable

<?php
function capture_output($str) {
  $GLOBALS['sandbox_output'] .= $str;

  return '';
}

$sandbox_output = '';

$php = new Runkit_Sandbox();
runkit_sandbox_output_handler($php, 'capture_output');
$php->echo("Hello\n");
$php->eval('var_dump("Excuse me");');
$php->die("I lost myself.");
unset($php);

echo "Sandbox Complete\n\n";
echo $sandbox_output;
?>

以上例程会输出：

Sandbox Complete

Hello
string(9) "Excuse me"
I lost myself.

runkit_return_value_used
runkit_superglobals
runkit 函数


Return numerically indexed array of registered superglobals

runkit_sandbox_output_handler
scream
runkit 函数
PHP Manual

runkit_superglobals

(PECL runkit >= 0.7.0)

runkit_superglobals — Return numerically indexed array of registered superglobals

说明

array runkit_superglobals ( void )

返回值

Returns a numerically indexed array of the currently registered superglobals. i.e. _GET, _POST, _REQUEST, _COOKIE, _SESSION, _SERVER, _ENV, _FILES

参见

  • Variable Scope

runkit_sandbox_output_handler
scream
runkit 函数


Break the silence operator

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 范例
    • Example that shows the effect of scream
runkit_superglobals
简介
影响 PHP 行为的扩展


简介

The scream extension gives the possibility to disable the silencing error control operator so all errors are being reported. This feature is controlled by an ini setting.

scream
安装／配置
scream


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
scream


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/scream

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

scream 配置选项
名字 | 默认 | 可修改范围 | Changelog
scream.enabled | Off | PHP_INI_ALL |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

scream.enabled int

Whether or not to enable scream.

安装
资源类型
安装／配置


资源类型

此扩展没有定义资源类型。

运行时配置
范例
安装／配置


范例

Table of Contents

  • Example that shows the effect of scream
资源类型
Example that shows the effect of scream
scream


Example that shows the effect of scream

This example demonstrates how scream affects the behaviour of PHP's error handler.

Example #1 Enabling and disabling scream at runtime

<?php
// Make sure errors will be shown
ini_set('display_errors', true);
error_reporting(E_ALL);

// Disable scream - this is the default and produce an error
ini_set('scream.enabled', false);
echo "Opening http://example.com/not-existing-file\n";
@fopen('http://example.com/not-existing-file', 'r');

// Now enable scream and try again
ini_set('scream.enabled', true);
echo "Opening http://example.com/not-existing-file\n";
@fopen('http://example.com/not-existing-file', 'r');
?>

以上例程的输出类似于：

Opening http://example.com/not-existing-file
Opening http://example.com/not-existing-file

Warning: fopen(http://example.com/not-existing-file): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in example.php on line 14

Note: Usually one would set this in the php.ini configuration file instead of changing the code.

范例
uopz
范例


uopz

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Uopz 函数
    • uopz_backup — Backup a function
    • uopz_compose — Compose a class
    • uopz_copy — Copy a function
    • uopz_delete — Delete a function
    • uopz_extend — Extend a class at runtime
    • uopz_flags — Get or set flags on function or class
    • uopz_function — Creates a function at runtime
    • uopz_implement — Implements an interface at runtime
    • uopz_overload — Overload a VM opcode
    • uopz_redefine — Redefine a constant
    • uopz_rename — Rename a function at runtime
    • uopz_restore — Restore a previously backed up function
    • uopz_undefine — Undefine a constant
Example that shows the effect of scream
简介
影响 PHP 行为的扩展


简介

The uopz - User Operations for Zend - extension exposes Zend Engine functionality normally used at compilation and execution time in order to allow modification of the internal structures that represent PHP code, and for user code to interact with the VM.

uopz supports the following activities:

  • Overloading some opcodes including ZEND_EXIT and ZEND_NEW
  • Backup and restore functions and methods
  • Renaming functions and methods
  • Copying of functions and methods
  • Deletion of functions and methods
  • Redefinition of global and class constants
  • Deletion of global and class constants
  • Runtime composition and modification of classes

Note:

All of the activities supported are compatible with opcache

uopz
安装／配置
uopz


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
uopz


需求

uopz requires 5.4+

安装／配置
安装
安装／配置


安装

uopz releases are hosted by PECL and the source code by » github, the easiest route to installation is the normal PECL route: » http://pecl.php.net/package/uopz.

Windows users can download prebuilt release binaries from the » PECL website.

需求
运行时配置
安装／配置


运行时配置

uopz must be loaded as a zend_extension

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

The following opcodes are defined as constants by uopz:

ZEND_EXIT (integer)
Invoked by exit() and die(), recieves no arguments. Return boolean TRUE to exit, FALSE to continue
ZEND_NEW (integer)
Invoked by object construction, receives the class of object being created as the only argument
ZEND_THROW (integer)
Invoked by the throw construct, receives the class of exception being thrown as the only argument
ZEND_FETCH_CLASS (integer)
Invoked upon composure, recieves the class the name of the class being fetched as the only argument
ZEND_ADD_TRAIT (integer)
Invoked upon composure, recieves the class the trait is being added to as the first argument, and the name of the trait as the second argument
ZEND_ADD_INTERFACE (integer)
Invoked upon composure, recieves the class the interface is being added to as the first argument, and the name of the interface as the second argument
ZEND_INSTANCEOF (integer)
Invoked by instanceof operator, recieves the object being verified as the first argument, and the name of the class which that object should be as the second argument

The following constants control the VM's behaviour after a user handler is invoked, be extremely careful!

ZEND_USER_OPCODE_CONTINUE (integer)
Advance 1 opcode and continuue
ZEND_USER_OPCODE_ENTER (integer)
Enter into new op_array without recursion
ZEND_USER_OPCODE_LEAVE (integer)
Return to calling op_array within the same executor
ZEND_USER_OPCODE_DISPATCH (integer)
Dispatch to original opcode handler
ZEND_USER_OPCODE_DISPATCH_TO (integer)
Dispatch to a specific handler (OR'd with ZEND opcode constant)
ZEND_USER_OPCODE_RETURN (integer)
Exit from executor (return from function)

The following modifiers are registered as constants by uopz

ZEND_ACC_PUBLIC (integer)
Mark function as public, the default
ZEND_ACC_PROTECTED (integer)
Mark function as protected
ZEND_ACC_PRIVATE (integer)
Mark function as private
ZEND_ACC_STATIC (integer)
Mark function as static
ZEND_ACC_FINAL (integer)
Mark function as final
ZEND_ACC_ABSTRACT (integer)
Mark function as abstract
ZEND_ACC_CLASS (integer)
Dummy registered for consistency, the default kind of class entry
ZEND_ACC_INTERFACE (integer)
Mark class as interface
ZEND_ACC_TRAIT (integer)
Mark class as trait
ZEND_ACC_FETCH (integer)
Used for getting flags only

资源类型
Uopz 函数
uopz


Uopz 函数

Table of Contents

  • uopz_backup — Backup a function
  • uopz_compose — Compose a class
  • uopz_copy — Copy a function
  • uopz_delete — Delete a function
  • uopz_extend — Extend a class at runtime
  • uopz_flags — Get or set flags on function or class
  • uopz_function — Creates a function at runtime
  • uopz_implement — Implements an interface at runtime
  • uopz_overload — Overload a VM opcode
  • uopz_redefine — Redefine a constant
  • uopz_rename — Rename a function at runtime
  • uopz_restore — Restore a previously backed up function
  • uopz_undefine — Undefine a constant
预定义常量
uopz_backup
uopz


Backup a function

Uopz 函数
uopz_compose
Uopz 函数
PHP Manual

uopz_backup

(PECL uopz >= 1.0.3)

uopz_backup — Backup a function

说明

void uopz_backup ( string $class , string $function )
void uopz_backup ( string $function )

Backup a function at runtime, to be restored on shutdown

参数

class

The name of the class containing the function to backup

function

The name of the function

返回值

范例

Example #1 uopz_backup() example

<?php
uopz_backup("fgets");
uopz_function("fgets", function(){
    return true;
});
var_dump(fgets());
?>

以上例程的输出类似于：

bool(true)
Uopz 函数
uopz_compose
Uopz 函数


Compose a class

uopz_backup
uopz_copy
Uopz 函数
PHP Manual

uopz_compose

(PECL uopz >= 1.0.0)

uopz_compose — Compose a class

说明

void uopz_compose ( string $name , array $classes [, array $methods [, array $properties [, int $flags ]]] )

Creates a new class of the given name that implements, extends, or uses all of the provided classes

参数

name

A legal class name

classes

An array of class, interface and trait names

methods

An associative array of methods, values are either closures or [modifiers => closure]

properties

An associative array of properties, keys are names, values are modifiers

flags

Entry type, by default ZEND_ACC_CLASS

返回值

范例

Example #1 uopz_compose() example

<?php
class myClass {}
trait myTrait {}
interface myInterface {}

uopz_compose(
    Composed::class, [
        myClass::class,
        myTrait::class,
        myInterface::class
    ], [
    "__construct" => function() {
        /* ... */
    }
]);

var_dump(
 class_uses(Composed::class),
 class_parents(Composed::class),
 class_implements(Composed::class));
?>

以上例程的输出类似于：

array(1) {
  ["myTrait"]=>
  string(7) "myTrait"
}
array(1) {
  ["myClass"]=>
  string(7) "myClass"
}
array(1) {
  ["myInterface"]=>
  string(11) "myInterface"
}
uopz_backup
uopz_copy
Uopz 函数


Copy a function

uopz_compose
uopz_delete
Uopz 函数
PHP Manual

uopz_copy

(PECL uopz >= 1.0.4)

uopz_copy — Copy a function

说明

Closure uopz_copy ( string $class , string $function )
Closure uopz_copy ( string $function )

Copy a function by name

参数

class

The name of the class containing the function to copy

function

The name of the function

返回值

A Closure for the specified function

范例

Example #1 uopz_copy() example

<?php
$strtotime = uopz_copy('strtotime');

uopz_function("strtotime", function($arg1, $arg2) use($strtotime) {
    /* can call original strtotime from here */
    var_dump($arg1);
});

var_dump(strtotime('dummy'));
?>

以上例程的输出类似于：

string(5) "dummy"
uopz_compose
uopz_delete
Uopz 函数


Delete a function

uopz_copy
uopz_extend
Uopz 函数
PHP Manual

uopz_delete

(PECL uopz >= 1.0.0)

uopz_delete — Delete a function

说明

void uopz_delete ( string $class , string $function )
void uopz_delete ( string $function )

Deletes a function or method

参数

class

function

返回值

范例

Example #1 uopz_delete() example

<?php
uopz_delete("strlen");

echo strlen("Hello World");
?>

以上例程的输出类似于：

PHP Fatal error: Call to undefined function strlen() in /path/to/script.php on line 4

Example #2 uopz_delete() class example

<?php
class My {
    public static function strlen($arg) {
        return strlen($arg);
    }
}

uopz_delete(My::class, "strlen");

echo My::strlen("Hello World");
?>

以上例程的输出类似于：

PHP Fatal error: Call to undefined method My::strlen() in /path/to/script.php on line 10
uopz_copy
uopz_extend
Uopz 函数


Extend a class at runtime

uopz_delete
uopz_flags
Uopz 函数
PHP Manual

uopz_extend

(PECL uopz >= 1.0.0)

uopz_extend — Extend a class at runtime

说明

void uopz_extend ( string $class , string $parent )

Makes class extend parent

参数

class

The name of the class to extend

parent

The name of the class to inherit

返回值

范例

Example #1 uopz_extend() example

<?php
class A {}
class B {}

uopz_extend(A::class, B::class);

var_dump(class_parents(A::class));
?>

以上例程的输出类似于：

array(1) {
  ["B"]=>
  string(1) "B"
}
uopz_delete
uopz_flags
Uopz 函数


Get or set flags on function or class

uopz_extend
uopz_function
Uopz 函数
PHP Manual

uopz_flags

(PECL uopz >= 2.0.2)

uopz_flags — Get or set flags on function or class

说明

int uopz_flags ( string $class , string $function , int $flags )
int uopz_flags ( string $function , int $flags )

Get or set the flags on a class or function entry at runtime

参数

class

The name of a class

function

The name of the function

flags

A valid set of ZEND_ACC_ flags, ZEND_ACC_FETCH to read flags

返回值

If setting, returns old flags, else returns flags

范例

Example #1 uopz_flags() example

<?php
class Test {
    public function method() {
        return __CLASS__;
    }
}

$flags = uopz_flags("Test", "method", ZEND_ACC_FETCH);

var_dump((bool) (uopz_flags("Test", "method", ZEND_ACC_FETCH) & ZEND_ACC_PRIVATE));
var_dump((bool) (uopz_flags("Test", "method", ZEND_ACC_FETCH) & ZEND_ACC_STATIC));

var_dump(uopz_flags("Test", "method", $flags|ZEND_ACC_STATIC|ZEND_ACC_PRIVATE));

var_dump((bool) (uopz_flags("Test", "method", ZEND_ACC_FETCH) & ZEND_ACC_PRIVATE));
var_dump((bool) (uopz_flags("Test", "method", ZEND_ACC_FETCH) & ZEND_ACC_STATIC));
?>

以上例程的输出类似于：

bool(false)
bool(false)
int(1234567890)
bool(true)
bool(true)
uopz_extend
uopz_function
Uopz 函数


Creates a function at runtime

uopz_flags
uopz_implement
Uopz 函数
PHP Manual

uopz_function

(PECL uopz >= 1.0.0)

uopz_function — Creates a function at runtime

说明

void uopz_function ( string $class , string $function , Closure $handler [, int $modifiers ] )
void uopz_function ( string $function , Closure $handler [, int $modifiers ] )

Creates a function at runtime

参数

class

The name of the class to receive the new function

function

The name of the function

handler

The Closure for the function

modifiers

The modifiers for the function, by default copied or ZEND_ACC_PUBLIC

返回值

范例

Example #1 uopz_function() example

<?php
uopz_function("my_strlen", function($arg) {
    return strlen($arg);
});
echo my_strlen("Hello World");
?>

以上例程的输出类似于：

11

Example #2 uopz_function() class example

<?php
class My {}

uopz_function(My::class, "strlen", function($arg) {
    return strlen($arg);
}, ZEND_ACC_STATIC);

echo My::strlen("Hello World");
?>

以上例程的输出类似于：

11
uopz_flags
uopz_implement
Uopz 函数


Implements an interface at runtime

uopz_function
uopz_overload
Uopz 函数
PHP Manual

uopz_implement

(PECL uopz >= 1.0.0)

uopz_implement — Implements an interface at runtime

说明

void uopz_implement ( string $class , string $interface )

Makes class implement interface

参数

class

interface

返回值

范例

Example #1 uopz_implement() example

<?php
interface myInterface {}

class myClass {}

uopz_implement(myClass::class, myInterface::class);

var_dump(class_implements(myClass::class));
?>

以上例程的输出类似于：

array(1) {
  ["myInterface"]=>
  string(11) "myInterface"
}
uopz_function
uopz_overload
Uopz 函数


Overload a VM opcode

uopz_implement
uopz_redefine
Uopz 函数
PHP Manual

uopz_overload

(PECL uopz >= 1.0.0)

uopz_overload — Overload a VM opcode

说明

void uopz_overload ( int $opcode , Callable $callable )

Overloads the specified opcode with the user defined function

参数

opcode

A valid opcode, see constants for details of supported codes

callable

返回值

范例

Example #1 uopz_overload() example

<?php
uopz_overload(ZEND_EXIT, function(){});

exit();
echo "Hello World";
?>

以上例程的输出类似于：

Hello World
uopz_implement
uopz_redefine
Uopz 函数


Redefine a constant

uopz_overload
uopz_rename
Uopz 函数
PHP Manual

uopz_redefine

(PECL uopz >= 1.0.0)

uopz_redefine — Redefine a constant

说明

void uopz_redefine ( string $class , string $constant , mixed $value )
void uopz_redefine ( string $constant , mixed $value )

Redefines the given constant as value

参数

class

The name of the class containing the constant

constant

The name of the constant

value

The new value for the constant, must be a valid type for a constant variable

返回值

范例

Example #1 uopz_redefine() example

<?php
define("MY", 100);

uopz_redefine("MY", 1000);

echo MY;
?>

以上例程的输出类似于：

1000
uopz_overload
uopz_rename
Uopz 函数


Rename a function at runtime

uopz_redefine
uopz_restore
Uopz 函数
PHP Manual

uopz_rename

(PECL uopz >= 1.0.0)

uopz_rename — Rename a function at runtime

说明

void uopz_rename ( string $class , string $function , string $rename )
void uopz_rename ( string $function , string $rename )

Renames function to rename

Note:

If both functions exist, this effectively swaps their names

参数

class

The name of the class containing the function

function

The name of an existing function

rename

The new name for the function

返回值

范例

Example #1 uopz_rename() example

<?php
uopz_rename("strlen", "original_strlen");

echo original_strlen("Hello World");
?>

以上例程的输出类似于：

11

Example #2 uopz_rename() class example

<?php
class My {
    public function strlen($arg) {
        return strlen($arg);
    }
}

uopz_rename(My::class, "strlen", "original_strlen");

echo My::original_strlen("Hello World");
?>

以上例程的输出类似于：

11
uopz_redefine
uopz_restore
Uopz 函数


Restore a previously backed up function

uopz_rename
uopz_undefine
Uopz 函数
PHP Manual

uopz_restore

(PECL uopz >= 1.0.3)

uopz_restore — Restore a previously backed up function

说明

void uopz_restore ( string $class , string $function )
void uopz_restore ( string $function )

Restore a previously backed up function

参数

class

The name of the class containing the function to restore

function

The name of the function

返回值

范例

Example #1 uopz_restore() example

<?php
uopz_backup("fgets");
uopz_function("fgets", function(){
    return true;
});
var_dump(fgets());
uopz_restore('fgets');
fgets();
?>

以上例程的输出类似于：

Warning: fgets() expects at least 1 parameter, 0 given in /path/to/script.php on line 8
uopz_rename
uopz_undefine
Uopz 函数


Undefine a constant

uopz_restore
Weakref
Uopz 函数
PHP Manual

uopz_undefine

(PECL uopz >= 1.0.0)

uopz_undefine — Undefine a constant

说明

void uopz_undefine ( string $class , string $constant )
void uopz_undefine ( string $constant )

Removes the constant at runtime

参数

class

The name of the class containing constant

constant

The name of an existing constant

返回值

范例

Example #1 uopz_undefine() example

<?php
define("MY", true);

uopz_undefine("MY");

var_dump(defined("MY"));
?>

以上例程的输出类似于：

bool(false)
uopz_restore
Weakref
Uopz 函数


Weak References

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 资源类型
  • WeakRef — The WeakRef class
    • Weakref::acquire — Acquires a strong reference on that object
    • Weakref::__construct — Constructs a new weak reference
    • Weakref::get — Returns the object pointed to by the weak reference
    • Weakref::release — Releases a previously acquired reference
    • Weakref::valid — Checks whether the object referenced still exists
  • WeakMap — The WeakMap class
    • WeakMap::__construct — Constructs a new map
    • WeakMap::count — Counts the number of live entries in the map
    • WeakMap::current — Returns the current value under iteration
    • WeakMap::key — Returns the current key under iteration.
    • WeakMap::next — Advances to the next map element
    • WeakMap::offsetExists — Checks whether a certain object is in the map
    • WeakMap::offsetGet — Returns the value pointed to by a certain object
    • WeakMap::offsetSet — Updates the map with a new key-value pair
    • WeakMap::offsetUnset — Removes an entry from the map
    • WeakMap::rewind — Rewinds the iterator to the beginning of the map
    • WeakMap::valid — Returns whether the iterator is still on a valid map element
uopz_undefine
简介
影响 PHP 行为的扩展


简介

Weak references provide a non-intrusive gateway to ephemeral objects. Unlike normal (strong) references, weak references do not prevent the garbage collector from freeing that object. For this reason, an object may be destroyed even though a weak reference to that object still exists. In such conditions, the weak reference seamlessly becomes invalid.

Example #1 Weakref usage example

<?php
class MyClass {
    public function __destruct() {
        echo "Destroying object!\n";
    }
}

$o1 = new MyClass;

$r1 = new Weakref($o1);

if ($r1->valid()) {
    echo "Object still exists!\n";
    var_dump($r1->get());
} else {
    echo "Object is dead!\n";
}

unset($o1);

if ($r1->valid()) {
    echo "Object still exists!\n";
    var_dump($r1->get());
} else {
    echo "Object is dead!\n";
}
?>

以上例程会输出：

Object still exists!
object(MyClass)#1 (0) {
}
Destroying object!
Object is dead!

Weakref
安装／配置
Weakref


安装／配置

Table of Contents

  • 需求
  • 安装
  • 资源类型
简介
需求
Weakref


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/weakref.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
资源类型
安装／配置


资源类型

此扩展没有定义资源类型。

安装
WeakRef
安装／配置


The WeakRef class

(PECL weakref >= 0.1.0)

简介

The WeakRef class provides a gateway to objects without preventing the garbage collector from freeing those objects. It also provides a way to turn a weak reference into a strong one.

类摘要

WeakRef {
/* 方法 */
public Weakref::__construct ( object $object )
public bool Weakref::acquire ( void )
public object Weakref::get ( void )
public bool Weakref::release ( void )
public bool Weakref::valid ( void )
}

范例

Example #1 WeakRef usage example

<?php
class MyClass {
    public function __destruct() {
        echo "Destroying object!\n";
    }
}

$o1 = new MyClass;

$r1 = new WeakRef($o1);

if ($r1->valid()) {
    echo "Object still exists!\n";
    var_dump($r1->get());
} else {
    echo "Object is dead!\n";
}

unset($o1);

if ($r1->valid()) {
    echo "Object still exists!\n";
    var_dump($r1->get());
} else {
    echo "Object is dead!\n";
}
?>

以上例程会输出：

Object still exists!
object(MyClass)#1 (0) {
}
Destroying object!
Object is dead!

Table of Contents

  • Weakref::acquire — Acquires a strong reference on that object
  • Weakref::__construct — Constructs a new weak reference
  • Weakref::get — Returns the object pointed to by the weak reference
  • Weakref::release — Releases a previously acquired reference
  • Weakref::valid — Checks whether the object referenced still exists
资源类型
Weakref::acquire
Weakref


Acquires a strong reference on that object

WeakRef
Weakref::__construct
WeakRef
PHP Manual

Weakref::acquire

(PECL weakref >= 0.1.0)

Weakref::acquire — Acquires a strong reference on that object

说明

public bool Weakref::acquire ( void )

Acquires a strong reference on that object, virtually turning the weak reference into a strong one.

The Weakref instance maintains an internal acquired counter to track outstanding strong references. If the call to Weakref::acquire() is successful, this counter will be incremented by one.

参数

此函数没有参数。

返回值

Returns TRUE if the reference was valid and could be turned into a strong reference, FALSE otherwise.

范例

Example #1 Weakref::acquire() example

<?php
class MyClass {
    public function __destruct() {
        echo "Destroying object!\n";
    }
}

$o1 = new MyClass;

$r1 = new Weakref($o1);

$r1->acquire();

echo "Unsetting o1...\n";
unset($o1);

$o2 = $r1->get();

$r1->release();

echo "Unsetting o2...\n";
unset($o2);
?>

以上例程会输出：

Unsetting o1...
Unsetting o2...
Destroying object!

Example #2 Nested acquire/release example

<?php
class MyClass {
    public function __destruct() {
        echo "Destroying object!\n";
    }
}

$o1 = new MyClass;

$r1 = new Weakref($o1);

echo "Acquiring...\n";
$r1->acquire();

echo "  Unsetting...\n";
unset($o1);

echo "  Acquiring...\n";
$r1->acquire();

echo "    Acquiring...\n";
$r1->acquire();

echo "    Releasing...\n";
$r1->release();

echo "  Releasing...\n";
$r1->release();

echo "Releasing...\n";
$r1->release();

?>

以上例程会输出：

Acquiring...
  Unsetting...
  Acquiring...
    Acquiring...
    Releasing...
  Releasing...
Releasing...
Destroying object!

参见

  • Weakref::release() - Releases a previously acquired reference

WeakRef
Weakref::__construct
WeakRef


Constructs a new weak reference

Weakref::acquire
Weakref::get
WeakRef
PHP Manual

Weakref::__construct

(PECL weakref >= 0.1.0)

Weakref::__construct — Constructs a new weak reference

说明

public Weakref::__construct ( object $object )

Constructs a new weak reference.

参数

object

The object to reference.

返回值

没有返回值。

范例

Example #1 Weakref::__construct() example

<?php
class MyClass {
    public function __destruct() {
        echo "Destroying object!\n";
    }
}

$o1 = new MyClass;

$r1 = new Weakref($o1);

if ($r1->valid()) {
    echo "Object still exists!\n";
    var_dump($r1->get());
} else {
    echo "Object is dead!\n";
}

unset($o1);

if ($r1->valid()) {
    echo "Object still exists!\n";
    var_dump($r1->get());
} else {
    echo "Object is dead!\n";
}
?>

以上例程会输出：

Object still exists!
object(MyClass)#1 (0) {
}
Destroying object!
Object is dead!

Weakref::acquire
Weakref::get
WeakRef


Returns the object pointed to by the weak reference

Weakref::__construct
Weakref::release
WeakRef
PHP Manual

Weakref::get

(PECL weakref >= 0.1.0)

Weakref::get — Returns the object pointed to by the weak reference

说明

public object Weakref::get ( void )

Returns the object pointed to by the weak reference.

参数

此函数没有参数。

返回值

Returns the object if the reference is still valid, NULL otherwise.

参见

  • Weakref::valid() - Checks whether the object referenced still exists

Weakref::__construct
Weakref::release
WeakRef


Releases a previously acquired reference

Weakref::get
Weakref::valid
WeakRef
PHP Manual

Weakref::release

(PECL weakref >= 0.1.0)

Weakref::release — Releases a previously acquired reference

说明

public bool Weakref::release ( void )

Releases a previously acquired reference, potentially turning a strong reference back into a weak reference.

The Weakref instance maintains an internal acquired counter to track outstanding strong references. If the call to Weakref::release() is successful, this counter will be decremented by one. Once this counter reaches zero, the strong reference is turned back into a weak reference.

参数

此函数没有参数。

返回值

Returns TRUE if the reference was previously acquired and thus could be released, FALSE otherwise.

范例

Example #1 Weakref::release() example

<?php
class MyClass {
    public function __destruct() {
        echo "Destroying object!\n";
    }
}

$o1 = new MyClass;

$r1 = new Weakref($o1);

$r1->acquire();

echo "Unsetting o1...\n";
unset($o1);

$o2 = $r1->get();

$r1->release();

echo "Unsetting o2...\n";
unset($o2);
?>

以上例程会输出：

Unsetting o1...
Unsetting o2...
Destroying object!

参见

  • Weakref::acquire() - Acquires a strong reference on that object

Weakref::get
Weakref::valid
WeakRef


Checks whether the object referenced still exists

Weakref::release
WeakMap
WeakRef
PHP Manual

Weakref::valid

(PECL weakref >= 0.1.0)

Weakref::valid — Checks whether the object referenced still exists

说明

public bool Weakref::valid ( void )

Checks whether the object referenced still exists.

参数

此函数没有参数。

返回值

Returns TRUE if the object still exists and is thus still accessible via Weakref::get(), FALSE otherwise.

参见

  • Weakref::get() - Returns the object pointed to by the weak reference

Weakref::release
WeakMap
WeakRef


The WeakMap class

(PECL weakref >= 0.2.0)

简介

类摘要

WeakMap implements Countable , ArrayAccess , Iterator {
/* 方法 */
public __construct ( void )
public int count ( void )
public mixed current ( void )
public object key ( void )
public void next ( void )
public bool offsetExists ( object $object )
public mixed offsetGet ( object $object )
public void offsetSet ( object $object , mixed $value )
public void offsetUnset ( object $object )
public void rewind ( void )
public bool valid ( void )
}

范例

Example #1 Weakmap usage example

<?php
$wm = new WeakMap();

$o = new StdClass;

class A {
    public function __destruct() {
        echo "Dead!\n";
    }
}

$wm[$o] = new A;

var_dump(count($wm));
echo "Unsetting..\n";
unset($o);
echo "Done\n";
var_dump(count($wm));

以上例程会输出：

int(1)
Unsetting..
Dead!
Done
int(0)

Table of Contents

  • WeakMap::__construct — Constructs a new map
  • WeakMap::count — Counts the number of live entries in the map
  • WeakMap::current — Returns the current value under iteration
  • WeakMap::key — Returns the current key under iteration.
  • WeakMap::next — Advances to the next map element
  • WeakMap::offsetExists — Checks whether a certain object is in the map
  • WeakMap::offsetGet — Returns the value pointed to by a certain object
  • WeakMap::offsetSet — Updates the map with a new key-value pair
  • WeakMap::offsetUnset — Removes an entry from the map
  • WeakMap::rewind — Rewinds the iterator to the beginning of the map
  • WeakMap::valid — Returns whether the iterator is still on a valid map element
Weakref::valid
WeakMap::__construct
Weakref


Constructs a new map

WeakMap
WeakMap::count
WeakMap
PHP Manual

WeakMap::__construct

(PECL weakref >= 0.2.0)

WeakMap::__construct — Constructs a new map

说明

public WeakMap::__construct ( void )

Constructs a new map.

参数

此函数没有参数。

返回值

没有返回值。

WeakMap
WeakMap::count
WeakMap


Counts the number of live entries in the map

WeakMap::__construct
WeakMap::current
WeakMap
PHP Manual

WeakMap::count

(PECL weakref >= 0.2.0)

WeakMap::count — Counts the number of live entries in the map

说明

public int WeakMap::count ( void )

Counts the number of live entries in the map.

参数

此函数没有参数。

返回值

Returns the number of live entries in the map.

WeakMap::__construct
WeakMap::current
WeakMap


Returns the current value under iteration

WeakMap::count
WeakMap::key
WeakMap
PHP Manual

WeakMap::current

(PECL weakref >= 0.2.0)

WeakMap::current — Returns the current value under iteration

说明

public mixed WeakMap::current ( void )

Returns the current value being iterated on in the map.

参数

此函数没有参数。

返回值

The value currently being iterated on.

WeakMap::count
WeakMap::key
WeakMap


Returns the current key under iteration.

WeakMap::current
WeakMap::next
WeakMap
PHP Manual

WeakMap::key

(PECL weakref >= 0.2.0)

WeakMap::key — Returns the current key under iteration.

说明

public object WeakMap::key ( void )

Returns the object serving as key in the map, at the current iterating position.

参数

此函数没有参数。

返回值

The object key currently being iterated.

WeakMap::current
WeakMap::next
WeakMap


Advances to the next map element

WeakMap::key
WeakMap::offsetExists
WeakMap
PHP Manual

WeakMap::next

(PECL weakref >= 0.2.0)

WeakMap::next — Advances to the next map element

说明

public void WeakMap::next ( void )

Advances to the next map element.

参数

此函数没有参数。

返回值

没有返回值。

WeakMap::key
WeakMap::offsetExists
WeakMap


Checks whether a certain object is in the map

WeakMap::next
WeakMap::offsetGet
WeakMap
PHP Manual

WeakMap::offsetExists

(PECL weakref >= 0.2.0)

WeakMap::offsetExists — Checks whether a certain object is in the map

说明

public bool WeakMap::offsetExists ( object $object )

Checks whether the passed object is referenced in the map.

参数

object

Object to check for.

返回值

Returns TRUE if the object is contained in the map, FALSE otherwise.

WeakMap::next
WeakMap::offsetGet
WeakMap


Returns the value pointed to by a certain object

WeakMap::offsetExists
WeakMap::offsetSet
WeakMap
PHP Manual

WeakMap::offsetGet

(PECL weakref >= 0.2.0)

WeakMap::offsetGet — Returns the value pointed to by a certain object

说明

public mixed WeakMap::offsetGet ( object $object )

Returns the value pointed to by a certain object.

参数

object

Some object contained as key in the map.

返回值

Returns the value associated to the object passed as argument, NULL otherwise.

WeakMap::offsetExists
WeakMap::offsetSet
WeakMap


Updates the map with a new key-value pair

WeakMap::offsetGet
WeakMap::offsetUnset
WeakMap
PHP Manual

WeakMap::offsetSet

(PECL weakref >= 0.2.0)

WeakMap::offsetSet — Updates the map with a new key-value pair

说明

public void WeakMap::offsetSet ( object $object , mixed $value )

Updates the map with a new key-value pair. If the key already existed in the map, the old value is replaced with the new.

参数

object

The object serving as key of the key-value pair.

value

The arbitrary data serving as value of the key-value pair.

返回值

没有返回值。

WeakMap::offsetGet
WeakMap::offsetUnset
WeakMap


Removes an entry from the map

WeakMap::offsetSet
WeakMap::rewind
WeakMap
PHP Manual

WeakMap::offsetUnset

(PECL weakref >= 0.2.0)

WeakMap::offsetUnset — Removes an entry from the map

说明

public void WeakMap::offsetUnset ( object $object )

Removes an entry from the map.

参数

object

The key object to remove from the map.

返回值

没有返回值。

WeakMap::offsetSet
WeakMap::rewind
WeakMap


Rewinds the iterator to the beginning of the map

WeakMap::offsetUnset
WeakMap::valid
WeakMap
PHP Manual

WeakMap::rewind

(PECL weakref >= 0.2.0)

WeakMap::rewind — Rewinds the iterator to the beginning of the map

说明

public void WeakMap::rewind ( void )

Rewinds the iterator to the beginning of the map.

参数

此函数没有参数。

返回值

没有返回值。

WeakMap::offsetUnset
WeakMap::valid
WeakMap


Returns whether the iterator is still on a valid map element

WeakMap::rewind
WinCache
WeakMap
PHP Manual

WeakMap::valid

(PECL weakref >= 0.2.0)

WeakMap::valid — Returns whether the iterator is still on a valid map element

说明

public bool WeakMap::valid ( void )

Returns whether the iterator is still on a valid map element.

参数

此函数没有参数。

返回值

Returns TRUE if the iterator is on a valid element that can be accessed, FALSE otherwise.

WeakMap::rewind
WinCache
WeakMap


Windows Cache for PHP

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • WinCache Statistics Script
    • WinCache Session Handler
    • WinCache Functions Reroutes
    • 资源类型
  • 预定义常量
  • WinCache 函数
    • wincache_fcache_fileinfo — Retrieves information about files cached in the file cache
    • wincache_fcache_meminfo — Retrieves information about file cache memory usage
    • wincache_lock — Acquires an exclusive lock on a given key
    • wincache_ocache_fileinfo — Retrieves information about files cached in the opcode cache
    • wincache_ocache_meminfo — Retrieves information about opcode cache memory usage
    • wincache_refresh_if_changed — Refreshes the cache entries for the cached files
    • wincache_rplist_fileinfo — Retrieves information about resolve file path cache
    • wincache_rplist_meminfo — Retrieves information about memory usage by the resolve file path cache
    • wincache_scache_info — Retrieves information about files cached in the session cache
    • wincache_scache_meminfo — Retrieves information about session cache memory usage
    • wincache_ucache_add — Adds a variable in user cache only if variable does not already exist in the cache
    • wincache_ucache_cas — Compares the variable with old value and assigns new value to it
    • wincache_ucache_clear — Deletes entire content of the user cache
    • wincache_ucache_dec — Decrements the value associated with the key
    • wincache_ucache_delete — Deletes variables from the user cache
    • wincache_ucache_exists — Checks if a variable exists in the user cache
    • wincache_ucache_get — Gets a variable stored in the user cache
    • wincache_ucache_inc — Increments the value associated with the key
    • wincache_ucache_info — Retrieves information about data stored in the user cache
    • wincache_ucache_meminfo — Retrieves information about user cache memory usage
    • wincache_ucache_set — Adds a variable in user cache and overwrites a variable if it already exists in the cache
    • wincache_unlock — Releases an exclusive lock on a given key
  • Building for Windows
    • Prerequisites
    • Compiling and building
    • Verifying the build
WeakMap::valid
简介
影响 PHP 行为的扩展


简介

Windows Cache Extension for PHP is a PHP accelerator that is used to increase the speed of PHP applications running on Windows and Windows Server. Once the Windows Cache Extension for PHP is enabled and loaded by the PHP engine, PHP applications can take advantage of the functionality without any code modifications.

The Windows Cache Extension includes 5 different types of caches. The following describes the purpose of each cache type and the benefits it provides.

  • PHP Opcode Cache - PHP is a script processing engine, which reads an input stream of data that contains text and/or PHP instructions and produces another stream of data, most commonly in the HTML format. This means that on a web server the PHP engine reads, parses, compiles and executes a PHP script each time that it is requested by a Web client. The reading, parsing and compilation operations put additional load on the web server's CPU and file system and thus affect the overall performance of a PHP web application. The PHP bytecode (opcode) cache is used to store the compiled script bytecode in shared memory so that it can be re-used by PHP engine for subsequent executions of the same script.

  • File Cache - Even with the PHP opcode cache enabled, the PHP engine has to accesses the script files on a file system. When PHP scripts are stored on a remote UNC file share, the file operations introduce a significant performance overhead. The Windows Cache Extension for PHP includes a file cache that is used to store the content of the PHP script files in shared memory, which reduces the amount of file system operations performed by PHP engine.

  • Resolve File Path Cache - PHP scripts very often include or operate with files by using relative file paths. Every file path has to be normalized to an absolute file path by the PHP engine. When a PHP application uses many PHP files and accesses them by relative paths, the operation of resolving the paths may negatively impact the application's performance. The Windows Cache Extension for PHP provides a Resolve File Path cache, which is used to store the mappings between relative and absolute file paths, thereby reducing the number of path resolutions that the PHP engine has to perform.

  • User Cache (available since version 1.1.0) - PHP scripts can take advantage of the shared memory cache by using the user cache API's. PHP objects and variables can be stored in the user cache and then re-used on subsequent requests. This can be used to improve performance of PHP scripts and to share the data across multiple PHP processes.

  • Session Handler (available since version 1.1.0) - The WinCache session handler can be used to store the PHP session data in the shared memory cache. This avoids file system operations for reading and writing session data, which improves performance when large amount of data is stored in PHP session.

WinCache
安装／配置
WinCache


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • WinCache Statistics Script
  • WinCache Session Handler
  • WinCache Functions Reroutes
  • 资源类型
简介
需求
WinCache


需求

The extension is currently supported only on the following configurations:

Windows OS:

  • Windows XP SP3 with IIS 5.1 and » FastCGI Extension
  • Windows Server 2003 with IIS 6.0 and » FastCGI Extension
  • Windows Vista SP1 with IIS 7.0 and FastCGI Module
  • Windows Server 2008 with IIS 7.0 and FastCGI Module
  • Windows 7 with IIS 7.5 and FastCGI Module
  • Windows Server 2008 R2 with IIS 7.5 and FastCGI Module

PHP:

  • PHP 5.2.X, Non-thread-safe build
  • PHP 5.3 X86, Non-thread-safe VC9 build

Note: The WinCache Extension can only be used when IIS is configured to run PHP via FastCGI.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/wincache.

There are two packages for this extension: one package is for PHP versions 5.2.X, and the other package is for PHP 5.3.X. Select the package that is appropriate for the PHP version being used.

To install and enable the extension, follow these steps:

  1. Unpack the package into some temporary location.

  2. Copy the php_wincache.dll file into the PHP extensions folder. Typically this folder is called "ext" and it is located in the same folder with all PHP binary files. For example: C:\Program Files\PHP\ext.

  3. Using a text editor, open the php.ini file, which is usually located in the same folder where all PHP binary files are. For example: C:\Program Files\PHP\php.ini.

  4. Add the following line at the end of the php.ini file: extension = php_wincache.dll.

  5. Save and close the php.ini file.

  6. Recycle the IIS Application Pools for PHP to pick up the configuration changes. To check that the extension has been enabled, create a file called phpinfo.php with a PHP code that calls phpinfo function.

  7. Save the phpinfo.php file in the root folder of a IIS web site that uses PHP, then open a browser and make a request to http://localhost/phpinfo.php. Search within the returned web page for a section called wincache. If the extension is enabled, then the phpinfo output will list the configuration settings provided by the WinCache.

Note: Do not forget to remove phpinfo.php file from the web site's root folder after verifying that extension has been enabled.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

The following table lists and explains the configuration settings provided by the WinCache extension:

WinCache configuration options
名字 | 默认 | Minimum | Maximum | 可修改范围 | 更新日志
wincache.fcenabled | "1" | "0" | "1" | PHP_INI_ALL | Available as of WinCache 1.0.0
wincache.fcenabledfilter | "NULL" | "NULL" | "NULL" | PHP_INI_SYSTEM | Available as of WinCache 1.0.0
wincache.fcachesize | "24" | "5" | "255" | PHP_INI_SYSTEM | Available as of WinCache 1.0.0
wincache.fcndetect | "1" | "0" | "1" | PHP_INI_SYSTEM | Available as of WinCache 1.1.0
wincache.maxfilesize | "256" | "10" | "2048" | PHP_INI_SYSTEM | Available as of WinCache 1.0.0
wincache.ocenabled | "1" | "0" | "1" | PHP_INI_ALL | Available as of WinCache 1.0.0. Removed as of 2.0.0.0
wincache.ocenabledfilter | "NULL" | "NULL" | "NULL" | PHP_INI_SYSTEM | Available as of WinCache 1.0.0. Removed as of 2.0.0.0
wincache.ocachesize | "96" | "15" | "255" | PHP_INI_SYSTEM | Available as of WinCache 1.0.0. Removed as of 2.0.0.0
wincache.filecount | "4096" | "1024" | "16384" | PHP_INI_SYSTEM | Available as of WinCache 1.0.0
wincache.chkinterval | "30" | "0" | "300" | PHP_INI_SYSTEM | Available as of WinCache 1.0.0
wincache.ttlmax | "1200" | "0" | "7200" | PHP_INI_SYSTEM | Available as of WinCache 1.0.0
wincache.enablecli | 0 | 0 | 1 | PHP_INI_SYSTEM | Available as of WinCache 1.0.0
wincache.ignorelist | NULL | NULL | NULL | PHP_INI_ALL | Available as of WinCache 1.0.0
wincache.namesalt | NULL | NULL | NULL | PHP_INI_SYSTEM | Available as of WinCache 1.0.0
wincache.ucenabled | 1 | 0 | 1 | PHP_INI_SYSTEM | Available as of WinCache 1.1.0
wincache.ucachesize | 8 | 5 | 85 | PHP_INI_SYSTEM | Available as of WinCache 1.1.0
wincache.scachesize | 8 | 5 | 85 | PHP_INI_SYSTEM | Available as of WinCache 1.1.0
wincache.rerouteini | NULL | NULL | NULL | PHP_INI_SYSTEM | Available as of WinCache 1.2.0. Removed as of 1.3.7
wincache.reroute_enabled | 1 | 0 | 1 | PHP_INI_SYSTEM | PHP_INI_PERDIR | Available as of WinCache 1.3.7
wincache.srwlocks | 1 | 0 | 1 | PHP_INI_SYSTEM | Available as of WinCache 1.3.6.3. Removed as of 2.0.0.0
wincache.filemapdir | NULL | NULL | NULL | PHP_INI_SYSTEM | Available as of WinCache 1.3.7.4
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

wincache.fcenabled boolean
Enables or disables the file cache functionality.
wincache.fcenabledfilter string
Defines a comma-separated list of IIS web site identifiers where file cache should be enabled or disabled. This setting works in conjunction with wincache.fcenabled: if wincache.fcenabled is set to 1, then the sites listed in the wincache.fcenabledfilter will have the file cache turned off; if wincache.fcenabled is set to 0, then the sites listed in the wincache.fcenabledfilter will have the file cache turned on.
wincache.fcachesize integer
Defines the maximum memory size (in megabytes) that is allocated for the file cache. If the total size of all the cached files exceeds the value specified in this setting, then most stale files will be removed from the file cache.
wincache.fcndetect boolean
Enables or disables the file change notification detection functionality. If file change notification is supported then it will be used to refresh the opcode and file cache entries as soon as the corresponding files are modified on a file system. If file change notification is not supported, for example when using network file shares, then wincache will poll for file changes at regular time intervals specified by wincache.chkinterval.
wincache.maxfilesize integer
Defines the maximum allowed size (in kilobytes) for a single file to be cached. If a file size exceeds the specified value, the file will not be cached. This setting applies to the file cache only.
wincache.ocenabled boolean
Warning

This option has been REMOVED as of 2.0.0.0

Enables or disables the opcode cache functionality
wincache.ocenabledfilter string
Warning

This option has been REMOVED as of 2.0.0.0

Defines a comma-separated list of IIS web site identifiers where opcode cache should be enabled or disabled. This setting works in conjunction with wincache.ocenabled: if wincache.ocenabled is set to 1, then the sites listed in the wincache.ocenabledfilter will have the opcode cache turned off; if wincache.ocenabled is set to 0, then the sites listed in the wincache.ocenabledfilter will have the opcode cache turned on.
wincache.ocachesize integer
Warning

This option has been REMOVED as of 2.0.0.0

Defines the maximum memory size (in megabytes) that is allocated for the opcode cache. If the cached opcode size exceeds the specified value, then most stale opcode will be removed from the cache. Note that the opcode cache size must be at least 3 times bigger than file cache size. If that is not the case the opcode cache size will be automatically increased.
wincache.filecount integer
Defines how many files are expected to be cached by the extension, so that appropriate memory size is allocated at the startup time. If the number of files exceeds the specified value, the WinCache will re-allocate more memory as needed.
wincache.chkinterval integer
Defines how often (in seconds) the extension checks for file changes in order to refresh the cache. Setting it to 0 will disable the refreshing of the cache. The file changes will not be reflected in the cache unless the cache entry for that file is removed by scavenger or IIS application pool is recycled or wincache_refresh_if_changed function is called.
wincache.ttlmax integer
Defines the maximum time to live (in seconds) for a cached entry without being used. Setting it to 0 will disable the cache scavenger, so the cached entries will never be removed from the cache during the lifetime of the IIS worker process.
wincache.enablecli boolean
Defines if caching is enabled when PHP is running in command line (CLI) mode.
wincache.ignorelist string

Defines a list of files that should not be cached by the extension. The files list is specified by using file names only, separated by the pipe symbol - "|".

Example #1 wincache.ignorelist example

wincache.ignorelist = "index.php|misc.php|admin.php"

wincache.namesalt string
Defines a string that will be used when naming the extension specific objects that are stored in shared memory. This is used to avoid conflicts that may be caused if other applications within an IIS worker process tries to access shared memory. The length of the namesalt string cannot exceed 8 characters.
wincache.ucenabled boolean
Enables or disables the user cache functionality.
wincache.ucachesize integer
Defines the maximum memory size in megabytes that is allocated for the user cache. If the total size of variables stored in the user cache exceeds the specified value, then the most stale variables will be removed from the cache.
wincache.scachesize integer
Defines the maximum memory size in megabytes that is allocated for the session cache. If the total size of data stored in the session cache exceeds the specified value, then the most stale data will be removed from the cache.
wincache.rerouteini string
Warning

This option has been REMOVED as of 1.3.7. See wincache.reroute_enabled for similar functionality as of 1.3.7.

Specifies an absolute or a relateve path to the reroute.ini file that contains the list of PHP functions whose implementation should be replaced with the WinCache function equivalents. If a relative path is specified then it is assumed to be relative to the location of php-cgi.exe file.
wincache.reroute_enabled boolean
Enables or disables the rerouting of certain file I/O functions through the file cache.
wincache.srwlocks boolean
Warning

This option has been REMOVED as of 2.0.0.0

Enables or disables the use of shared reader/writer locks. Disabling is useful when troubleshooting deadlock conditions in WinCache.
wincache.filemapdir string
Specifies an absolute path to a directory where WinCache will store the temporary files used for shared memory segments. This directory must be on the local machine and not on a networked file system. If the directory is not specified, WinCache will use the Windows System Page File for all shared memory segments.

安装
WinCache Statistics Script
安装／配置


WinCache Statistics Script

The installation package for WinCache includes a PHP script, wincache.php, that can be used to obtain cache information and statistics.

If the WinCache extension was installed via the Microsoft Web Platform Installer, then this script is located in %SystemDrive%\Program Files\IIS\Windows Cache for PHP\. On a 64-bit version of the Windows Server operating system, the script is located in %SystemDrive%\Program Files (x86)\IIS\Windows Cache for PHP. If the extension was installed manually, then the wincache.php will be located in the same folder from which the content of the installation package was extracted.

To use wincache.php, copy it into a root folder of a Web site or into any subfolder. To protect the script, open it in any text editor and replace the values for USERNAME and PASSWORD constants. If any other IIS authentication is enabled on the server, then follow the instructions in the comments:

Example #1 Authentication configuration for wincache.php

<?php
/**
 * ======================== CONFIGURATION SETTINGS ==============================
 * If you do not want to use authentication for this page, set USE_AUTHENTICATION to 0.
 * If you use authentication then replace the default password.
 */
define('USE_AUTHENTICATION', 1);
define('USERNAME', 'wincache');
define('PASSWORD', 'wincache');

/**
 * The Basic PHP authentication will work only when IIS is configured to support
 * Anonymous Authentication' and nothing else. If IIS is configured to support/use
 * any other kind of authentication like Basic/Negotiate/Digest etc, this will not work.
 * In that case use the array below to define the names of users in your
 * domain/network/workgroup which you want to grant access to.
 */
$user_allowed = array('DOMAIN\user1', 'DOMAIN\user2', 'DOMAIN\user3');

/**
 * If the array contains string 'all', then all the users authenticated by IIS
 * will have access to the page. Uncomment the below line and comment above line
 * to grant access to all users who gets authenticated by IIS.
 */
/* $user_allowed = array('all'); */

/** ===================== END OF CONFIGURATION SETTINGS ========================== */
?>

Note: Always protect the wincache.php script by using either the built-in authentication or the server's authentication mechanism. Leaving this script unprotected may compromise the security of your web application and web server.

运行时配置
WinCache Session Handler
安装／配置


WinCache Session Handler

The WinCache session handler (available since WinCache 1.1.0) can be used to configure PHP to store the session data in shared memory session cache. Using shared memory instead of the default file session storage helps improve performance of PHP applications that store large amount of data in session objects. Wincache session cache uses file-backed shared memory, which ensures that the session data is not lost during recycling of IIS application pools.

To configure PHP to use WinCache session handler set the php.ini setting session.save_handler to wincache. By default the Windows temporary file location is used for storing the session data. To change the location of the session file use session.save_path directive.

Example #1 Enabling WinCache session handler

session.save_handler = wincache
session.save_path = C:\inetpub\temp\session\

WinCache Statistics Script
WinCache Functions Reroutes
安装／配置


WinCache Functions Reroutes

NOTE: wincache.rerouteini was removed as of WinCache 1.3.7.0. It has been replaced with automatic function reroutes. See: wincache.reroute_enabled.

The WinCache functions reroutes (available since WinCache 1.2.0, removed since WinCache 1.3.7.0) can be used to replace built-in PHP functions with their equivalents that are optimized for a particular purpose. WinCache extension includes Windows-optimized implementation of PHP file functions that may improve performance of PHP applications in cases when PHP has to access files on network shares. The optimized implementation is provided for the following functions:

  • file_exists
  • file_get_contents
  • readfile
  • is_readable
  • is_writable
  • is_dir
  • realpath
  • filesize

To configure WinCache to use the functions reroutes use the file reroute.ini that is included in WinCache installation package. Copy this file into the same directory where php.ini file is located. After that add the wincache.rerouteini setting in php.ini and specify an absolute or relative path to the reroute.ini file.

Example #1 Enabling WinCache functions reroutes

wincache.rerouteini = C:\PHP\reroute.ini

Note: If WinCache functions reroutes are enabled it is recommended to increase the WinCache file cache size. This can be done by using wincache.fcachesize setting.

The reroute.ini file contains the mappings between the native PHP functions and their equivalents in WinCache. Each line in the file defines a mapping by using the following syntax:

<PHP function name>:[<number of function parameters>]=<wincache function name>

The example of the file is shown below. In this example the calls to PHP function file_get_contents() will be replaced with calls to wincache_file_get_contents() only if the number of parameters passed to the function is less than or equals to 2. Specifying the number of parameters is useful when replacement function does not handle all the function's parameters.

Example #2 Reroute.ini file content

[FunctionRerouteList]
file_exists=wincache_file_exists
file_get_contents:2=wincache_file_get_contents
readfile:2=wincache_readfile
is_readable=wincache_is_readable
is_writable=wincache_is_writable
is_writeable=wincache_is_writable
is_file=wincache_is_file
is_dir=wincache_is_dir
realpath=wincache_realpath
filesize=wincache_filesize

WinCache Session Handler
资源类型
安装／配置


资源类型

此扩展没有定义资源类型。

WinCache Functions Reroutes
预定义常量
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
WinCache 函数
WinCache


WinCache 函数

Table of Contents

  • wincache_fcache_fileinfo — Retrieves information about files cached in the file cache
  • wincache_fcache_meminfo — Retrieves information about file cache memory usage
  • wincache_lock — Acquires an exclusive lock on a given key
  • wincache_ocache_fileinfo — Retrieves information about files cached in the opcode cache
  • wincache_ocache_meminfo — Retrieves information about opcode cache memory usage
  • wincache_refresh_if_changed — Refreshes the cache entries for the cached files
  • wincache_rplist_fileinfo — Retrieves information about resolve file path cache
  • wincache_rplist_meminfo — Retrieves information about memory usage by the resolve file path cache
  • wincache_scache_info — Retrieves information about files cached in the session cache
  • wincache_scache_meminfo — Retrieves information about session cache memory usage
  • wincache_ucache_add — Adds a variable in user cache only if variable does not already exist in the cache
  • wincache_ucache_cas — Compares the variable with old value and assigns new value to it
  • wincache_ucache_clear — Deletes entire content of the user cache
  • wincache_ucache_dec — Decrements the value associated with the key
  • wincache_ucache_delete — Deletes variables from the user cache
  • wincache_ucache_exists — Checks if a variable exists in the user cache
  • wincache_ucache_get — Gets a variable stored in the user cache
  • wincache_ucache_inc — Increments the value associated with the key
  • wincache_ucache_info — Retrieves information about data stored in the user cache
  • wincache_ucache_meminfo — Retrieves information about user cache memory usage
  • wincache_ucache_set — Adds a variable in user cache and overwrites a variable if it already exists in the cache
  • wincache_unlock — Releases an exclusive lock on a given key
预定义常量
wincache_fcache_fileinfo
WinCache


Retrieves information about files cached in the file cache

WinCache 函数
wincache_fcache_meminfo
WinCache 函数
PHP Manual

wincache_fcache_fileinfo

(PECL wincache >= 1.0.0)

wincache_fcache_fileinfo — Retrieves information about files cached in the file cache

说明

array wincache_fcache_fileinfo ([ bool $summaryonly = false ] )

Retrieves information about file cache content and its usage.

参数

summaryonly

Controls whether the returned array will contain information about individual cache entries along with the file cache summary.

返回值

Array of meta data about file cache 或者在失败时返回 FALSE

The array returned by this function contains the following elements:

  • total_cache_uptime - total time in seconds that the file cache has been active
  • total_file_count - total number of files that are currently in the file cache
  • total_hit_count - number of times the files have been served from the file cache
  • total_miss_count - number of times the files have not been found in the file cache

  • file_entries - an array that contains the information about all the cached files:

    • file_name - absolute file name of the cached file
    • add_time - time in seconds since the file has been added to the file cache
    • use_time - time in seconds since the file has been accessed in the file cache
    • last_check - time in seconds since the file has been checked for modifications
    • hit_count - number of times the file has been served from the cache
    • file_size - size of the cached file in bytes

范例

Example #1 A wincache_fcache_fileinfo() example

<pre>
<?php
print_r(wincache_fcache_fileinfo());
?>
</pre>

以上例程会输出：

Array
(   [total_cache_uptime] => 3234
    [total_file_count] => 5
    [total_hit_count] => 0
    [total_miss_count] => 1
    [file_entries] => Array
        (
            [1] => Array
                (
                    [file_name] => c:\inetpub\wwwroot\checkcache.php
                    [add_time] => 1
                    [use_time] => 0
                    [last_check] => 1
                    [hit_count] => 1
                    [file_size] => 2435
                )
            [2] => Array (...iterates for each cached file)
        )
)

参见

  • wincache_fcache_meminfo() - Retrieves information about file cache memory usage
  • wincache_ocache_fileinfo() - Retrieves information about files cached in the opcode cache
  • wincache_ocache_meminfo() - Retrieves information about opcode cache memory usage
  • wincache_rplist_fileinfo() - Retrieves information about resolve file path cache
  • wincache_rplist_meminfo() - Retrieves information about memory usage by the resolve file path cache
  • wincache_refresh_if_changed() - Refreshes the cache entries for the cached files
  • wincache_ucache_meminfo() - Retrieves information about user cache memory usage
  • wincache_ucache_info() - Retrieves information about data stored in the user cache
  • wincache_scache_info() - Retrieves information about files cached in the session cache
  • wincache_scache_meminfo() - Retrieves information about session cache memory usage

WinCache 函数
wincache_fcache_meminfo
WinCache 函数


Retrieves information about file cache memory usage

wincache_fcache_fileinfo
wincache_lock
WinCache 函数
PHP Manual

wincache_fcache_meminfo

(PECL wincache >= 1.0.0)

wincache_fcache_meminfo — Retrieves information about file cache memory usage

说明

array wincache_fcache_meminfo ( void )

Retrieves information about memory usage by file cache.

返回值

Array of meta data about file cache memory usage 或者在失败时返回 FALSE

The array returned by this function contains the following elements:

  • memory_total - amount of memory in bytes allocated for the file cache
  • memory_free - amount of free memory in bytes available for the file cache
  • num_used_blks - number of memory blocks used by the file cache
  • num_free_blks - number of free memory blocks available for the file cache
  • memory_overhead - amount of memory in bytes used for the file cache internal structures

范例

Example #1 A wincache_fcache_meminfo() example

<pre>
<?php
print_r(wincache_fcache_meminfo());
?>
</pre>

以上例程会输出：

Array
(
    [memory_total] => 134217728
    [memory_free] => 131339120
    [num_used_blks] => 361
    [num_free_blks] => 3
    [memory_overhead] => 5856
)

参见

  • wincache_fcache_fileinfo() - Retrieves information about files cached in the file cache
  • wincache_ocache_fileinfo() - Retrieves information about files cached in the opcode cache
  • wincache_ocache_meminfo() - Retrieves information about opcode cache memory usage
  • wincache_rplist_fileinfo() - Retrieves information about resolve file path cache
  • wincache_rplist_meminfo() - Retrieves information about memory usage by the resolve file path cache
  • wincache_refresh_if_changed() - Refreshes the cache entries for the cached files
  • wincache_ucache_meminfo() - Retrieves information about user cache memory usage
  • wincache_ucache_info() - Retrieves information about data stored in the user cache
  • wincache_scache_info() - Retrieves information about files cached in the session cache
  • wincache_scache_meminfo() - Retrieves information about session cache memory usage

wincache_fcache_fileinfo
wincache_lock
WinCache 函数


Acquires an exclusive lock on a given key

wincache_fcache_meminfo
wincache_ocache_fileinfo
WinCache 函数
PHP Manual

wincache_lock

(PECL wincache >= 1.1.0)

wincache_lock — Acquires an exclusive lock on a given key

说明

bool wincache_lock ( string $key [, bool $isglobal = false ] )

Obtains an exclusive lock on a given key. The execution of the current script will be blocked until the lock can be obtained. Once the lock is obtained, the other scripts that try to request the lock by using the same key will be blocked, until the current script releases the lock by using wincache_unlock().

Warning

Using of the wincache_lock() and wincache_unlock() can cause deadlocks when executing PHP scripts in a multi-process environment like FastCGI. Do not use these functions unless you are absolutely sure you need to use them. For the majority of the operations on the user cache it is not necessary to use these functions.

参数

key

Name of the key in the cache to get the lock on.

isglobal

Controls whether the scope of the lock is system-wide or local. Local locks are scoped to the application pool in IIS FastCGI case or to all php processes that have the same parent process identifier.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Using wincache_lock()

<?php
$fp = fopen("/tmp/lock.txt", "r+");
if (wincache_lock("lock_txt_lock")) { // do an exclusive lock
    ftruncate($fp, 0); // truncate file
    fwrite($fp, "Write something here\n");
    wincache_unlock("lock_txt_lock"); // release the lock
} else {
    echo "Couldn't get the lock!";
}
fclose($fp);
?>

参见

  • wincache_unlock() - Releases an exclusive lock on a given key
  • wincache_ucache_set() - Adds a variable in user cache and overwrites a variable if it already exists in the cache
  • wincache_ucache_get() - Gets a variable stored in the user cache
  • wincache_ucache_delete() - Deletes variables from the user cache
  • wincache_ucache_clear() - Deletes entire content of the user cache
  • wincache_ucache_exists() - Checks if a variable exists in the user cache
  • wincache_ucache_meminfo() - Retrieves information about user cache memory usage
  • wincache_ucache_info() - Retrieves information about data stored in the user cache
  • wincache_scache_info() - Retrieves information about files cached in the session cache

wincache_fcache_meminfo
wincache_ocache_fileinfo
WinCache 函数


Retrieves information about files cached in the opcode cache

wincache_lock
wincache_ocache_meminfo
WinCache 函数
PHP Manual

wincache_ocache_fileinfo

(PECL wincache >= 1.0.0)

wincache_ocache_fileinfo — Retrieves information about files cached in the opcode cache

说明

array wincache_ocache_fileinfo ([ bool $summaryonly = false ] )

Retrieves information about opcode cache content and its usage.

Warning

This function was REMOVED in PHP 7.0.0.

参数

summaryonly

Controls whether the returned array will contain information about individual cache entries along with the opcode cache summary.

返回值

Array of meta data about opcode cache 或者在失败时返回 FALSE

The array returned by this function contains the following elements:

  • total_cache_uptime - total time in seconds that the opcode cache has been active
  • total_file_count - total number of files that are currently in the opcode cache
  • total_hit_count - number of times the compiled opcode have been served from the cache
  • total_miss_count - number of times the compiled opcode have not been found in the cache
  • is_local_cache - true is the cache metadata is for a local cache instance, false if the metadata is for the global cache

  • file_entries - an array that contains the information about all the cached files:

    • file_name - absolute file name of the cached file
    • add_time - time in seconds since the file has been added to the opcode cache
    • use_time - time in seconds since the file has been accessed in the opcode cache
    • last_check - time in seconds since the file has been checked for modifications
    • hit_count - number of times the file has been served from the cache
    • function_count - number of functions in the cached file
    • class_count - number of classes in the cached file

范例

Example #1 A wincache_ocache_fileinfo() example

<pre>
<?php
print_r(wincache_ocache_fileinfo());
?>
</pre>

以上例程会输出：

Array
(
    [total_cache_uptime] => 17357
    [total_file_count] => 121
    [total_hit_count] => 36562
    [total_miss_count] => 201
    [file_entries] => Array
        (
            [1] => Array
                (
                    [file_name] => c:\inetpub\wwwroot\checkcache.php
                    [add_time] => 17356
                    [use_time] => 7
                    [last_check] => 10
                    [hit_count] => 454
                    [function_count] => 0
                    [class_count] => 1
                )
            [2] => Array (...iterates for each cached file)
        )
)

参见

  • wincache_fcache_fileinfo() - Retrieves information about files cached in the file cache
  • wincache_fcache_meminfo() - Retrieves information about file cache memory usage
  • wincache_ocache_meminfo() - Retrieves information about opcode cache memory usage
  • wincache_rplist_fileinfo() - Retrieves information about resolve file path cache
  • wincache_rplist_meminfo() - Retrieves information about memory usage by the resolve file path cache
  • wincache_refresh_if_changed() - Refreshes the cache entries for the cached files
  • wincache_ucache_meminfo() - Retrieves information about user cache memory usage
  • wincache_ucache_info() - Retrieves information about data stored in the user cache
  • wincache_scache_info() - Retrieves information about files cached in the session cache
  • wincache_scache_meminfo() - Retrieves information about session cache memory usage

wincache_lock
wincache_ocache_meminfo
WinCache 函数


Retrieves information about opcode cache memory usage

wincache_ocache_fileinfo
wincache_refresh_if_changed
WinCache 函数
PHP Manual

wincache_ocache_meminfo

(PECL wincache >= 1.0.0)

wincache_ocache_meminfo — Retrieves information about opcode cache memory usage

说明

array wincache_ocache_meminfo ( void )

Retrieves information about memory usage by opcode cache.

返回值

Array of meta data about opcode cache memory usage 或者在失败时返回 FALSE

The array returned by this function contains the following elements:

  • memory_total - amount of memory in bytes allocated for the opcode cache
  • memory_free - amount of free memory in bytes available for the opcode cache
  • num_used_blks - number of memory blocks used by the opcode cache
  • num_free_blks - number of free memory blocks available for the opcode cache
  • memory_overhead - amount of memory in bytes used for the opcode cache internal structures

Warning

This function was REMOVED in PHP 7.0.0.

范例

Example #1 A wincache_ocache_meminfo() example

<pre>
<?php
print_r(wincache_ocache_meminfo());
?>
</pre>

以上例程会输出：

Array
(
    [memory_total] => 134217728
    [memory_free] => 112106972
    [num_used_blks] => 15469
    [num_free_blks] => 4
    [memory_overhead] => 247600
)

参见

  • wincache_fcache_fileinfo() - Retrieves information about files cached in the file cache
  • wincache_fcache_meminfo() - Retrieves information about file cache memory usage
  • wincache_ocache_fileinfo() - Retrieves information about files cached in the opcode cache
  • wincache_rplist_fileinfo() - Retrieves information about resolve file path cache
  • wincache_rplist_meminfo() - Retrieves information about memory usage by the resolve file path cache
  • wincache_refresh_if_changed() - Refreshes the cache entries for the cached files
  • wincache_ucache_meminfo() - Retrieves information about user cache memory usage
  • wincache_ucache_info() - Retrieves information about data stored in the user cache
  • wincache_scache_info() - Retrieves information about files cached in the session cache
  • wincache_scache_meminfo() - Retrieves information about session cache memory usage

wincache_ocache_fileinfo
wincache_refresh_if_changed
WinCache 函数


Refreshes the cache entries for the cached files

wincache_ocache_meminfo
wincache_rplist_fileinfo
WinCache 函数
PHP Manual

wincache_refresh_if_changed

(PECL wincache >= 1.0.0)

wincache_refresh_if_changed — Refreshes the cache entries for the cached files

说明

bool wincache_refresh_if_changed ([ array $files = NULL ] )

Refreshes the cache entries for the files, whose names were passed in the input argument. If no argument is specified then refreshes all the entries in the cache.

参数

files

An array of file names for files that need to be refreshed. An absolute or relative file paths can be used.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

WinCache performs regular checks on the cached files to ensure that if any file has changed then the corresponding entry in the cache is updated. By default this check is performed every 30 seconds. If, for example, a PHP script updates another PHP script where the application's configuration settings are stored, then it may happen that after the configuration settings have been saved to a file, the application is still using old settings for some time until the cache is refreshed. In those cases it may be preferrable to refresh the cache right after the file has been changed. The following example shows how this can be done.

Example #1 A wincache_refresh_if_changed() example

<?php
$filename = 'C:\inetpub\wwwroot\config.php';
$handle = fopen($filename, 'w+');
if ($handle === FALSE) die('Failed to open file '.$filename.' for writing');
fwrite($handle, '<?php $setting=something; ?>');
fclose($handle);
wincache_refresh_if_changed(array($filename));
?>

参见

  • wincache_fcache_fileinfo() - Retrieves information about files cached in the file cache
  • wincache_fcache_meminfo() - Retrieves information about file cache memory usage
  • wincache_ocache_fileinfo() - Retrieves information about files cached in the opcode cache
  • wincache_ocache_meminfo() - Retrieves information about opcode cache memory usage
  • wincache_rplist_fileinfo() - Retrieves information about resolve file path cache
  • wincache_rplist_meminfo() - Retrieves information about memory usage by the resolve file path cache
  • wincache_ucache_meminfo() - Retrieves information about user cache memory usage
  • wincache_ucache_info() - Retrieves information about data stored in the user cache

wincache_ocache_meminfo
wincache_rplist_fileinfo
WinCache 函数


Retrieves information about resolve file path cache

wincache_refresh_if_changed
wincache_rplist_meminfo
WinCache 函数
PHP Manual

wincache_rplist_fileinfo

(PECL wincache >= 1.0.0)

wincache_rplist_fileinfo — Retrieves information about resolve file path cache

说明

array wincache_rplist_fileinfo ([ bool $summaryonly = false ] )

Retrieves information about cached mappings between relative file paths and corresponding absolute file paths.

返回值

Array of meta data about the resolve file path cache 或者在失败时返回 FALSE

The array returned by this function contains the following elements:

  • total_file_count - total number of file path mappings stored in the cache

  • rplist_entries - an array that contains the information about all the cached file paths:

    • resolve_path - path to a file
    • subkey_data - corresponding absolute path to a file

范例

Example #1 A wincache_rplist_fileinfo() example

<pre>
<?php
print_r(wincache_rplist_fileinfo());
?>
</pre>

以上例程会输出：

Array
(
    [total_file_count] => 5
    [rplist_entries] => Array
        (
            [1] => Array
                (
                    [resolve_path] => checkcache.php
                    [subkey_data] => c:\inetpub\wwwroot|c:\inetpub\wwwroot\checkcache.php
                )

            [2] => Array (...iterates for each cached file)
        )
)

参见

  • wincache_fcache_meminfo() - Retrieves information about file cache memory usage
  • wincache_fcache_fileinfo() - Retrieves information about files cached in the file cache
  • wincache_ocache_fileinfo() - Retrieves information about files cached in the opcode cache
  • wincache_ocache_meminfo() - Retrieves information about opcode cache memory usage
  • wincache_rplist_meminfo() - Retrieves information about memory usage by the resolve file path cache
  • wincache_refresh_if_changed() - Refreshes the cache entries for the cached files
  • wincache_ucache_meminfo() - Retrieves information about user cache memory usage
  • wincache_ucache_info() - Retrieves information about data stored in the user cache
  • wincache_scache_info() - Retrieves information about files cached in the session cache
  • wincache_scache_meminfo() - Retrieves information about session cache memory usage

wincache_refresh_if_changed
wincache_rplist_meminfo
WinCache 函数


Retrieves information about memory usage by the resolve file path cache

wincache_rplist_fileinfo
wincache_scache_info
WinCache 函数
PHP Manual

wincache_rplist_meminfo

(PECL wincache >= 1.0.0)

wincache_rplist_meminfo — Retrieves information about memory usage by the resolve file path cache

说明

array wincache_rplist_meminfo ( void )

Retrieves information about memory usage by resolve file path cache.

返回值

Array of meta data that describes memory usage by resolve file path cache. 或者在失败时返回 FALSE

The array returned by this function contains the following elements:

  • memory_total - amount of memory in bytes allocated for the resolve file path cache
  • memory_free - amount of free memory in bytes available for the resolve file path cache
  • num_used_blks - number of memory blocks used by the resolve file path cache
  • num_free_blks - number of free memory blocks available for the resolve file path cache
  • memory_overhead - amount of memory in bytes used for the internal structures of resolve file path cache

范例

Example #1 A wincache_rplist_meminfo() example

<pre>
<?php
print_r(wincache_rplist_meminfo());
?>
</pre>

以上例程会输出：

Array
(
    [memory_total] => 9437184
    [memory_free] => 9416744
    [num_used_blks] => 23
    [num_free_blks] => 1
    [memory_overhead] => 416
)

参见

  • wincache_fcache_fileinfo() - Retrieves information about files cached in the file cache
  • wincache_fcache_meminfo() - Retrieves information about file cache memory usage
  • wincache_ocache_fileinfo() - Retrieves information about files cached in the opcode cache
  • wincache_ocache_meminfo() - Retrieves information about opcode cache memory usage
  • wincache_rplist_fileinfo() - Retrieves information about resolve file path cache
  • wincache_refresh_if_changed() - Refreshes the cache entries for the cached files
  • wincache_ucache_meminfo() - Retrieves information about user cache memory usage
  • wincache_ucache_info() - Retrieves information about data stored in the user cache
  • wincache_scache_info() - Retrieves information about files cached in the session cache
  • wincache_scache_meminfo() - Retrieves information about session cache memory usage

wincache_rplist_fileinfo
wincache_scache_info
WinCache 函数


Retrieves information about files cached in the session cache

wincache_rplist_meminfo
wincache_scache_meminfo
WinCache 函数
PHP Manual

wincache_scache_info

(PECL wincache >= 1.1.0)

wincache_scache_info — Retrieves information about files cached in the session cache

说明

array wincache_scache_info ([ bool $summaryonly = false ] )

Retrieves information about session cache content and its usage.

参数

summaryonly

Controls whether the returned array will contain information about individual cache entries along with the session cache summary.

返回值

Array of meta data about session cache 或者在失败时返回 FALSE

The array returned by this function contains the following elements:

  • total_cache_uptime - total time in seconds that the session cache has been active
  • total_item_count - total number of elements that are currently in the session cache
  • is_local_cache - true is the cache metadata is for a local cache instance, false if the metadata is for the global cache
  • total_hit_count - number of times the data has been served from the cache
  • total_miss_count - number of times the data has not been found in the cache

  • scache_entries - an array that contains the information about all the cached items:

    • key_name - name of the key which is used to store the data
    • value_type - type of value stored by the key
    • use_time - time in seconds since the file has been accessed in the opcode cache
    • last_check - time in seconds since the file has been checked for modifications
    • ttl_seconds - time remaining for the data to live in the cache, 0 meaning infinite
    • age_seconds - time elapsed from the time data has been added in the cache
    • hitcount - number of times data has been served from the cache

范例

Example #1 A wincache_scache_info() example

<pre>
<?php
print_r(wincache_scache_info());
?>
</pre>

以上例程会输出：

Array
(
    [total_cache_uptime] => 17357
    [total_file_count] => 121
    [total_hit_count] => 36562
    [total_miss_count] => 201
    [scache_entries] => Array
        (
            [1] => Array
                (
                    [file_name] => c:\inetpub\wwwroot\checkcache.php
                    [add_time] => 17356
                    [use_time] => 7
                    [last_check] => 10
                    [hit_count] => 454
                    [function_count] => 0
                    [class_count] => 1
                )
            [2] => Array (...iterates for each cached file)
        )
)

参见

  • wincache_fcache_fileinfo() - Retrieves information about files cached in the file cache
  • wincache_fcache_meminfo() - Retrieves information about file cache memory usage
  • wincache_ocache_meminfo() - Retrieves information about opcode cache memory usage
  • wincache_rplist_fileinfo() - Retrieves information about resolve file path cache
  • wincache_rplist_meminfo() - Retrieves information about memory usage by the resolve file path cache
  • wincache_refresh_if_changed() - Refreshes the cache entries for the cached files
  • wincache_ucache_meminfo() - Retrieves information about user cache memory usage
  • wincache_ucache_info() - Retrieves information about data stored in the user cache
  • wincache_scache_meminfo() - Retrieves information about session cache memory usage

wincache_rplist_meminfo
wincache_scache_meminfo
WinCache 函数


Retrieves information about session cache memory usage

wincache_scache_info
wincache_ucache_add
WinCache 函数
PHP Manual

wincache_scache_meminfo

(PECL wincache >= 1.1.0)

wincache_scache_meminfo — Retrieves information about session cache memory usage

说明

array wincache_scache_meminfo ( void )

Retrieves information about memory usage by session cache.

返回值

Array of meta data about session cache memory usage 或者在失败时返回 FALSE

The array returned by this function contains the following elements:

  • memory_total - amount of memory in bytes allocated for the session cache
  • memory_free - amount of free memory in bytes available for the session cache
  • num_used_blks - number of memory blocks used by the session cache
  • num_free_blks - number of free memory blocks available for the session cache
  • memory_overhead - amount of memory in bytes used for the session cache internal structures

范例

Example #1 A wincache_scache_meminfo() example

<pre>
<?php
print_r(wincache_scache_meminfo());
?>
</pre>

以上例程会输出：

Array
(
    [memory_total] => 5242880
    [memory_free] => 5215056
    [num_used_blks] => 6
    [num_free_blks] => 3
    [memory_overhead] => 176
)

参见

  • wincache_fcache_fileinfo() - Retrieves information about files cached in the file cache
  • wincache_fcache_meminfo() - Retrieves information about file cache memory usage
  • wincache_ocache_fileinfo() - Retrieves information about files cached in the opcode cache
  • wincache_rplist_fileinfo() - Retrieves information about resolve file path cache
  • wincache_rplist_meminfo() - Retrieves information about memory usage by the resolve file path cache
  • wincache_refresh_if_changed() - Refreshes the cache entries for the cached files
  • wincache_ucache_info() - Retrieves information about data stored in the user cache
  • wincache_scache_info() - Retrieves information about files cached in the session cache

wincache_scache_info
wincache_ucache_add
WinCache 函数


Adds a variable in user cache only if variable does not already exist in the cache

wincache_scache_meminfo
wincache_ucache_cas
WinCache 函数
PHP Manual

wincache_ucache_add

(PECL wincache >= 1.1.0)

wincache_ucache_add — Adds a variable in user cache only if variable does not already exist in the cache

说明

bool wincache_ucache_add ( string $key , mixed $value [, int $ttl = 0 ] )
bool wincache_ucache_add ( array $values [, mixed $unused = NULL [, int $ttl = 0 ]] )

Adds a variable in user cache, only if this variable doesn't already exist in the cache. The added variable remains in the user cache unless its time to live expires or it is deleted by using wincache_ucache_delete() or wincache_ucache_clear() functions.

参数

key

Store the variable using this key name. If a variable with same key is already present the function will fail and return FALSE. key is case sensitive. To override the value even if key is present use wincache_ucache_set() function instad. key can also take array of name => value pairs where names will be used as keys. This can be used to add multiple values in the cache in one operation, thus avoiding race condition.

value

Value of a variable to store. Value supports all data types except resources, such as file handles. This paramter is ignored if first argument is an array. A general guidance is to pass NULL as value while using array as key. If value is an object, or an array containing objects, then the objects will be serialized. See __sleep() for details on serializing objects.

values

Associative array of keys and values.

ttl

Time for the variable to live in the cache in seconds. After the value specified in ttl has passed the stored variable will be deleted from the cache. This parameter takes a default value of 0 which means the variable will stay in the cache unless explicitly deleted by using wincache_ucache_delete() or wincache_ucache_clear() functions.

返回值

If key is string, the function returns TRUE on success and FALSE on failure.

If key is an array, the function returns:

  • If all the name => value pairs in the array can be set, function returns an empty array;
  • If all the name => value pairs in the array cannot be set, function returns FALSE;
  • If some can be set while others cannot, function returns an array with name=>value pair for which the addition failed in the user cache.

范例

Example #1 wincache_ucache_add() with key as a string

<?php
$bar = 'BAR';
var_dump(wincache_ucache_add('foo', $bar));
var_dump(wincache_ucache_add('foo', $bar));
var_dump(wincache_ucache_get('foo'));
?>

以上例程会输出：

bool(true)
bool(false)
string(3) "BAR"

Example #2 wincache_ucache_add() with key as an array

<?php
$colors_array = array('green' => '5', 'Blue' => '6', 'yellow' => '7', 'cyan' => '8');
var_dump(wincache_ucache_add($colors_array));
var_dump(wincache_ucache_add($colors_array));
var_dump(wincache_ucache_get('Blue'));
?>

以上例程会输出：

array(0) { }
array(4) {
  ["green"]=> int(-1)
  ["Blue"]=> int(-1)
  ["yellow"]=> int(-1)
  ["cyan"]=> int(-1)
}
string(1) "6"

参见

  • wincache_ucache_set() - Adds a variable in user cache and overwrites a variable if it already exists in the cache
  • wincache_ucache_get() - Gets a variable stored in the user cache
  • wincache_ucache_delete() - Deletes variables from the user cache
  • wincache_ucache_clear() - Deletes entire content of the user cache
  • wincache_ucache_exists() - Checks if a variable exists in the user cache
  • wincache_ucache_meminfo() - Retrieves information about user cache memory usage
  • wincache_ucache_info() - Retrieves information about data stored in the user cache
  • __sleep()

wincache_scache_meminfo
wincache_ucache_cas
WinCache 函数


Compares the variable with old value and assigns new value to it

wincache_ucache_add
wincache_ucache_clear
WinCache 函数
PHP Manual

wincache_ucache_cas

(PECL wincache >= 1.1.0)

wincache_ucache_cas — Compares the variable with old value and assigns new value to it

说明

bool wincache_ucache_cas ( string $key , int $old_value , int $new_value )

Compares the variable associated with the key with old_value and if it matches then assigns the new_value to it.

参数

key

The key that is used to store the variable in the cache. key is case sensitive.

old_value

Old value of the variable pointed by key in the user cache. The value should be of type long, otherwise the function returns FALSE.

new_value

New value which will get assigned to variable pointer by key if a match is found. The value should be of type long, otherwise the function returns FALSE.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Using wincache_ucache_cas()

<?php
wincache_ucache_set('counter', 2922);
var_dump(wincache_ucache_cas('counter', 2922, 1));
var_dump(wincache_ucache_get('counter'));
?>

以上例程会输出：

bool(true)
int(1)

参见

  • wincache_ucache_inc() - Increments the value associated with the key
  • wincache_ucache_dec() - Decrements the value associated with the key

wincache_ucache_add
wincache_ucache_clear
WinCache 函数


Deletes entire content of the user cache

wincache_ucache_cas
wincache_ucache_dec
WinCache 函数
PHP Manual

wincache_ucache_clear

(PECL wincache >= 1.1.0)

wincache_ucache_clear — Deletes entire content of the user cache

说明

bool wincache_ucache_clear ( void )

Clears/deletes all the values stored in the user cache.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 using wincache_ucache_clear()

<?php
wincache_ucache_set('green', 1);
wincache_ucache_set('red', 2);
wincache_ucache_set('orange', 4);
wincache_ucache_set('blue', 8);
wincache_ucache_set('cyan', 16);
$array1 = array('green', 'red', 'orange', 'blue', 'cyan');
var_dump(wincache_ucache_get($array1));
var_dump(wincache_ucache_clear());
var_dump(wincache_ucache_get($array1));
?>

以上例程会输出：

array(5) { ["green"]=> int(1)
           ["red"]=> int(2)
           ["orange"]=> int(4)
           ["blue"]=> int(8)
           ["cyan"]=> int(16) }
bool(true)
bool(false)

参见

  • wincache_ucache_set() - Adds a variable in user cache and overwrites a variable if it already exists in the cache
  • wincache_ucache_add() - Adds a variable in user cache only if variable does not already exist in the cache
  • wincache_ucache_delete() - Deletes variables from the user cache
  • wincache_ucache_get() - Gets a variable stored in the user cache
  • wincache_ucache_exists() - Checks if a variable exists in the user cache
  • wincache_ucache_meminfo() - Retrieves information about user cache memory usage
  • wincache_ucache_info() - Retrieves information about data stored in the user cache

wincache_ucache_cas
wincache_ucache_dec
WinCache 函数


Decrements the value associated with the key

wincache_ucache_clear
wincache_ucache_delete
WinCache 函数
PHP Manual

wincache_ucache_dec

(PECL wincache >= 1.1.0)

wincache_ucache_dec — Decrements the value associated with the key

说明

mixed wincache_ucache_dec ( string $key [, int $dec_by = 1 [, bool &$success ]] )

Decrements the value associated with the key by 1 or as specified by dec_by.

参数

key

The key that was used to store the variable in the cache. key is case sensitive.

dec_by

The value by which the variable associated with the key will get decremented. If the argument is a floating point number it will be truncated to nearest integer. The variable associated with the key should be of type long, otherwise the function fails and returns FALSE.

success

Will be set to TRUE on success and FALSE on failure.

返回值

Returns the decremented value on success and FALSE on failure.

范例

Example #1 Using wincache_ucache_dec()

<?php
wincache_ucache_set('counter', 1);
var_dump(wincache_ucache_dec('counter', 2923, $success));
var_dump($success);
?>

以上例程会输出：

int(2922)
bool(true)

参见

  • wincache_ucache_inc() - Increments the value associated with the key
  • wincache_ucache_cas() - Compares the variable with old value and assigns new value to it

wincache_ucache_clear
wincache_ucache_delete
WinCache 函数


Deletes variables from the user cache

wincache_ucache_dec
wincache_ucache_exists
WinCache 函数
PHP Manual

wincache_ucache_delete

(PECL wincache >= 1.1.0)

wincache_ucache_delete — Deletes variables from the user cache

说明

bool wincache_ucache_delete ( mixed $key )

Deletes the elements in the user cache pointed by key.

参数

key

The key that was used to store the variable in the cache. key is case sensitive. key can be an array of keys.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

If key is an array then the function returns FALSE if every element of the array fails to get deleted from the user cache, otherwise returns an array which consists of all the keys that are deleted.

范例

Example #1 Using wincache_ucache_delete() with key as a string

<?php
wincache_ucache_set('foo', 'bar');
var_dump(wincache_ucache_delete('foo'));
var_dump(wincache_ucache_exists('foo'));
?>

以上例程会输出：

bool(true)
bool(false)

Example #2 Usingwincache_ucache_delete() with key as an array

<?php
$array1 = array('green' => '5', 'blue' => '6', 'yellow' => '7', 'cyan' => '8');
wincache_ucache_set($array1);
$array2 = array('green', 'blue', 'yellow', 'cyan');
var_dump(wincache_ucache_delete($array2));
?>

以上例程会输出：

array(4) { [0]=> string(5) "green"
           [1]=> string(4) "Blue"
           [2]=> string(6) "yellow"
           [3]=> string(4) "cyan" }

Example #3 Using wincache_ucache_delete() with key as an array where some elements cannot be deleted

<?php
$array1 = array('green' => '5', 'blue' => '6', 'yellow' => '7', 'cyan' => '8');
wincache_ucache_set($array1);
$array2 = array('orange', 'red', 'yellow', 'cyan');
var_dump(wincache_ucache_delete($array2));
?>

以上例程会输出：

array(2) { [0]=> string(6) "yellow"
           [1]=> string(4) "cyan" }

参见

  • wincache_ucache_set() - Adds a variable in user cache and overwrites a variable if it already exists in the cache
  • wincache_ucache_add() - Adds a variable in user cache only if variable does not already exist in the cache
  • wincache_ucache_get() - Gets a variable stored in the user cache
  • wincache_ucache_clear() - Deletes entire content of the user cache
  • wincache_ucache_exists() - Checks if a variable exists in the user cache
  • wincache_ucache_meminfo() - Retrieves information about user cache memory usage
  • wincache_ucache_info() - Retrieves information about data stored in the user cache

wincache_ucache_dec
wincache_ucache_exists
WinCache 函数


Checks if a variable exists in the user cache

wincache_ucache_delete
wincache_ucache_get
WinCache 函数
PHP Manual

wincache_ucache_exists

(PECL wincache >= 1.1.0)

wincache_ucache_exists — Checks if a variable exists in the user cache

说明

bool wincache_ucache_exists ( string $key )

Checks if a variable with the key exists in the user cache or not.

参数

key

The key that was used to store the variable in the cache. key is case sensitive.

返回值

Returns TRUE if variable with the key exitsts, otherwise returns FALSE.

范例

Example #1 Using wincache_ucache_exists()

<?php
if (!wincache_ucache_exists('green'))
    wincache_ucache_set('green', 1);
var_dump(wincache_ucache_exists('green'));
?>

以上例程会输出：

bool(true)

参见

  • wincache_ucache_set() - Adds a variable in user cache and overwrites a variable if it already exists in the cache
  • wincache_ucache_add() - Adds a variable in user cache only if variable does not already exist in the cache
  • wincache_ucache_get() - Gets a variable stored in the user cache
  • wincache_ucache_clear() - Deletes entire content of the user cache
  • wincache_ucache_delete() - Deletes variables from the user cache
  • wincache_ucache_meminfo() - Retrieves information about user cache memory usage
  • wincache_ucache_info() - Retrieves information about data stored in the user cache

wincache_ucache_delete
wincache_ucache_get
WinCache 函数


Gets a variable stored in the user cache

wincache_ucache_exists
wincache_ucache_inc
WinCache 函数
PHP Manual

wincache_ucache_get

(PECL wincache >= 1.1.0)

wincache_ucache_get — Gets a variable stored in the user cache

说明

mixed wincache_ucache_get ( mixed $key [, bool &$success ] )

Gets a variable stored in the user cache.

参数

key

The key that was used to store the variable in the cache. key is case sensitive. key can be an array of keys. In this case the return value will be an array of values of each element in the key array. If an object, or an array containing objects, is returned, then the objects will be unserialized. See __wakeup() for details on unserializing objects.

success

Will be set to TRUE on success and FALSE on failure.

返回值

If key is a string, the function returns the value of the variable stored with that key. The success is set to TRUE on success and to FALSE on failure.

The key is an array, the parameter success is always set to TRUE. The returned array (name => value pairs) will contain only those name => value pairs for which the get operation in user cache was successful. If none of the keys in the key array finds a match in the user cache an empty array will be returned.

范例

Example #1 wincache_ucache_get() with key as a string

<?php
wincache_ucache_add('color', 'blue');
var_dump(wincache_ucache_get('color', $success));
var_dump($success);
?>

以上例程会输出：

string(4) "blue"
bool(true)

Example #2 wincache_ucache_get() with key as an array

<?php
$array1 = array('green' => '5', 'Blue' => '6', 'yellow' => '7', 'cyan' => '8');
wincache_ucache_set($array1);
$array2 = array('green', 'Blue', 'yellow', 'cyan');
var_dump(wincache_ucache_get($array2, $success));
var_dump($success);
?>

以上例程会输出：

array(4) { ["green"]=> string(1) "5"
           ["Blue"]=> string(1) "6"
           ["yellow"]=> string(1) "7"
           ["cyan"]=> string(1) "8" }
bool(true)

参见

  • wincache_ucache_add() - Adds a variable in user cache only if variable does not already exist in the cache
  • wincache_ucache_set() - Adds a variable in user cache and overwrites a variable if it already exists in the cache
  • wincache_ucache_delete() - Deletes variables from the user cache
  • wincache_ucache_clear() - Deletes entire content of the user cache
  • wincache_ucache_exists() - Checks if a variable exists in the user cache
  • wincache_ucache_meminfo() - Retrieves information about user cache memory usage
  • wincache_ucache_info() - Retrieves information about data stored in the user cache
  • __wakeup()

wincache_ucache_exists
wincache_ucache_inc
WinCache 函数


Increments the value associated with the key

wincache_ucache_get
wincache_ucache_info
WinCache 函数
PHP Manual

wincache_ucache_inc

(PECL wincache >= 1.1.0)

wincache_ucache_inc — Increments the value associated with the key

说明

mixed wincache_ucache_inc ( string $key [, int $inc_by = 1 [, bool &$success ]] )

Increments the value associated with the key by 1 or as specified by inc_by.

参数

key

The key that was used to store the variable in the cache. key is case sensitive.

inc_by

The value by which the variable associated with the key will get incremented. If the argument is a floating point number it will be truncated to nearest integer. The variable associated with the key should be of type long, otherwise the function fails and returns FALSE.

success

Will be set to TRUE on success and FALSE on failure.

返回值

Returns the incremented value on success and FALSE on failure.

范例

Example #1 Using wincache_ucache_inc()

<?php
wincache_ucache_set('counter', 1);
var_dump(wincache_ucache_inc('counter', 2921, $success));
var_dump($success);
?>

以上例程会输出：

int(2922)
bool(true)

参见

  • wincache_ucache_dec() - Decrements the value associated with the key
  • wincache_ucache_cas() - Compares the variable with old value and assigns new value to it

wincache_ucache_get
wincache_ucache_info
WinCache 函数


Retrieves information about data stored in the user cache

wincache_ucache_inc
wincache_ucache_meminfo
WinCache 函数
PHP Manual

wincache_ucache_info

(PECL wincache >= 1.1.0)

wincache_ucache_info — Retrieves information about data stored in the user cache

说明

array wincache_ucache_info ([ bool $summaryonly = false [, string $key = NULL ]] )

Retrieves information about data stored in the user cache.

参数

summaryonly

Controls whether the returned array will contain information about individual cache entries along with the user cache summary.

key

The key of an entry in the user cache. If specified then the returned array will contain information only about that cache entry. If not specified and summaryonly is set to FALSE then the returned array will contain information about all entries in the cache.

返回值

Array of meta data about user cache 或者在失败时返回 FALSE

The array returned by this function contains the following elements:

  • total_cache_uptime - total time in seconds that the user cache has been active
  • total_item_count - total number of elements that are currently in the user cache
  • is_local_cache - true is the cache metadata is for a local cache instance, false if the metadata is for the global cache
  • total_hit_count - number of times the data has been served from the cache
  • total_miss_count - number of times the data has not been found in the cache

  • ucache_entries - an array that contains the information about all the cached items:

    • key_name - name of the key which is used to store the data
    • value_type - type of value stored by the key
    • use_time - time in seconds since the file has been accessed in the opcode cache
    • last_check - time in seconds since the file has been checked for modifications
    • is_session - indicates if the data is a session variable
    • ttl_seconds - time remaining for the data to live in the cache, 0 meaning infinite
    • age_seconds - time elapsed from the time data has been added in the cache
    • hitcount - number of times data has been served from the cache

范例

Example #1 Using wincache_ucache_info()

<?php
wincache_ucache_get('green');
wincache_ucache_set('green', 2922);
wincache_ucache_get('green');
wincache_ucache_get('green');
wincache_ucache_get('green');
print_r(wincache_ucache_info());
?>

以上例程会输出：

Array
( ["total_cache_uptime"] => int(0)
  ["is_local_cache"] => bool(false)
  ["total_item_count"] => int(1)
  ["total_hit_count"] => int(3)
  ["total_miss_count"] => int(1)
  ["ucache_entries"] => Array(1)
    ( [1] => Array(6)
      (
        ["key_name"] => string(5) "green"
        ["value_type"] => string(4) "long"
        ["is_session"] => int(0)
        ["ttl_seconds"] => int(0)
        ["age_seconds"] => int(0)
        ["hitcount"] => int(3)
       )
    )
)

参见

  • wincache_fcache_meminfo() - Retrieves information about file cache memory usage
  • wincache_ocache_fileinfo() - Retrieves information about files cached in the opcode cache
  • wincache_ocache_meminfo() - Retrieves information about opcode cache memory usage
  • wincache_rplist_meminfo() - Retrieves information about memory usage by the resolve file path cache
  • wincache_rplist_fileinfo() - Retrieves information about resolve file path cache
  • wincache_refresh_if_changed() - Refreshes the cache entries for the cached files
  • wincache_ucache_meminfo() - Retrieves information about user cache memory usage
  • wincache_scache_info() - Retrieves information about files cached in the session cache
  • wincache_scache_meminfo() - Retrieves information about session cache memory usage

wincache_ucache_inc
wincache_ucache_meminfo
WinCache 函数


Retrieves information about user cache memory usage

wincache_ucache_info
wincache_ucache_set
WinCache 函数
PHP Manual

wincache_ucache_meminfo

(PECL wincache >= 1.1.0)

wincache_ucache_meminfo — Retrieves information about user cache memory usage

说明

array wincache_ucache_meminfo ( void )

Retrieves information about memory usage by user cache.

返回值

Array of meta data about user cache memory usage 或者在失败时返回 FALSE

The array returned by this function contains the following elements:

  • memory_total - amount of memory in bytes allocated for the user cache
  • memory_free - amount of free memory in bytes available for the user cache
  • num_used_blks - number of memory blocks used by the user cache
  • num_free_blks - number of free memory blocks available for the user cache
  • memory_overhead - amount of memory in bytes used for the user cache internal structures

范例

Example #1 A wincache_ucache_meminfo() example

<pre>
<?php
print_r(wincache_ucache_meminfo());
?>
</pre>

以上例程会输出：

Array
(
    [memory_total] => 5242880
    [memory_free] => 5215056
    [num_used_blks] => 6
    [num_free_blks] => 3
    [memory_overhead] => 176
)

参见

  • wincache_fcache_fileinfo() - Retrieves information about files cached in the file cache
  • wincache_fcache_meminfo() - Retrieves information about file cache memory usage
  • wincache_ocache_fileinfo() - Retrieves information about files cached in the opcode cache
  • wincache_rplist_fileinfo() - Retrieves information about resolve file path cache
  • wincache_rplist_meminfo() - Retrieves information about memory usage by the resolve file path cache
  • wincache_refresh_if_changed() - Refreshes the cache entries for the cached files
  • wincache_ucache_info() - Retrieves information about data stored in the user cache
  • wincache_scache_info() - Retrieves information about files cached in the session cache
  • wincache_scache_meminfo() - Retrieves information about session cache memory usage

wincache_ucache_info
wincache_ucache_set
WinCache 函数


Adds a variable in user cache and overwrites a variable if it already exists in the cache

wincache_ucache_meminfo
wincache_unlock
WinCache 函数
PHP Manual

wincache_ucache_set

(PECL wincache >= 1.1.0)

wincache_ucache_set — Adds a variable in user cache and overwrites a variable if it already exists in the cache

说明

bool wincache_ucache_set ( mixed $key , mixed $value [, int $ttl = 0 ] )
bool wincache_ucache_set ( array $values [, mixed $unused = NULL [, int $ttl = 0 ]] )

Adds a variable in user cache. Overwrites a variable if it already exists in the cache. The added or updated variable remains in the user cache unless its time to live expires or it is deleted by using wincache_ucache_delete() or wincache_ucache_clear() functions.

参数

key

Store the variable using this key name. If a variable with same key is already present the function will overwrite the previous value with the new one. key is case sensitive. key can also take array of name => value pairs where names will be used as keys. This can be used to add multiple values in the cache in one operation, thus avoiding race condition.

value

Value of a variable to store. Value supports all data types except resources, such as file handles. This paramter is ignored if first argument is an array. A general guidance is to pass NULL as value while using array as key. If value is an object, or an array containing objects, then the objects will be serialized. See __sleep() for details on serializing objects.

values

Associative array of keys and values.

ttl

Time for the variable to live in the cache in seconds. After the value specified in ttl has passed the stored variable will be deleted from the cache. This parameter takes a default value of 0 which means the variable will stay in the cache unless explicitly deleted by using wincache_ucache_delete() or wincache_ucache_clear() functions.

返回值

If key is string, the function returns TRUE on success and FALSE on failure.

If key is an array, the function returns:

  • If all the name => value pairs in the array can be set, function returns an empty array;
  • If all the name => value pairs in the array cannot be set, function returns FALSE;
  • If some can be set while others cannot, function returns an array with name=>value pair for which the addition failed in the user cache.

范例

Example #1 wincache_ucache_set() with key as a string

<?php
$bar = 'BAR';
var_dump(wincache_ucache_set('foo', $bar));
var_dump(wincache_ucache_get('foo'));
$bar1 = 'BAR1';
var_dump(wincache_ucache_set('foo', $bar1));
var_dump(wincache_ucache_get('foo'));
?>

以上例程会输出：

bool(true)
string(3) "BAR"
bool(true)
string(3) "BAR1"

Example #2 wincache_ucache_set() with key as an array

<?php
$colors_array = array('green' => '5', 'Blue' => '6', 'yellow' => '7', 'cyan' => '8');
var_dump(wincache_ucache_set($colors_array));
var_dump(wincache_ucache_set($colors_array));
var_dump(wincache_ucache_get('Blue'));
?>

以上例程会输出：

array(0) {}
array(0) {}
string(1) "6"

参见

  • wincache_ucache_add() - Adds a variable in user cache only if variable does not already exist in the cache
  • wincache_ucache_get() - Gets a variable stored in the user cache
  • wincache_ucache_delete() - Deletes variables from the user cache
  • wincache_ucache_clear() - Deletes entire content of the user cache
  • wincache_ucache_exists() - Checks if a variable exists in the user cache
  • wincache_ucache_meminfo() - Retrieves information about user cache memory usage
  • wincache_ucache_info() - Retrieves information about data stored in the user cache
  • __sleep()

wincache_ucache_meminfo
wincache_unlock
WinCache 函数


Releases an exclusive lock on a given key

wincache_ucache_set
Building for Windows
WinCache 函数
PHP Manual

wincache_unlock

(PECL wincache >= 1.1.0)

wincache_unlock — Releases an exclusive lock on a given key

说明

bool wincache_unlock ( string $key )

Releases an exclusive lock that was obtained on a given key by using wincache_lock(). If any other process was blocked waiting for the lock on this key, that process will be able to obtain the lock.

Warning

Using of the wincache_lock() and wincache_unlock() can cause deadlocks when executing PHP scripts in a multi-process environment like FastCGI. Do not use these functions unless you are absolutely sure you need to use them. For the majority of the operations on the user cache it is not necessary to use these functions.

参数

key

Name of the key in the cache to release the lock on.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Using wincache_unlock()

<?php
$fp = fopen("/tmp/lock.txt", "r+");
if (wincache_lock("lock_txt_lock")) { // do an exclusive lock
    ftruncate($fp, 0); // truncate file
    fwrite($fp, "Write something here\n");
    wincache_unlock("lock_txt_lock"); // release the lock
} else {
    echo "Couldn't get the lock!";
}
fclose($fp);
?>

参见

  • wincache_lock() - Acquires an exclusive lock on a given key
  • wincache_ucache_set() - Adds a variable in user cache and overwrites a variable if it already exists in the cache
  • wincache_ucache_get() - Gets a variable stored in the user cache
  • wincache_ucache_delete() - Deletes variables from the user cache
  • wincache_ucache_clear() - Deletes entire content of the user cache
  • wincache_ucache_exists() - Checks if a variable exists in the user cache
  • wincache_ucache_meminfo() - Retrieves information about user cache memory usage
  • wincache_ucache_info() - Retrieves information about data stored in the user cache
  • wincache_scache_info() - Retrieves information about files cached in the session cache

wincache_ucache_set
Building for Windows
WinCache 函数


Building for Windows

Table of Contents

  • Prerequisites
  • Compiling and building
  • Verifying the build
wincache_unlock
Prerequisites
WinCache


Prerequisites

Building WinCache extension will require:

  1. PHP source code
  2. PHP build environment
  3. WinCache source code

For completing first two steps, follow the step-by-step guide for how to » build PHP on Windows.

For getting the WinCache source code follow the instructions described in Downloading PECL extensions.

Building for Windows
Compiling and building
Building for Windows


Compiling and building

The following steps describe how to compile and build WinCache on Windows OS:

  1. Open a command prompt which is used to build PHP

  2. Go to the root folder where PHP sources are present

  3. Run the command:

    cscript.exe win32\build\buildconf.js

  4. Run the command:

    configure.bat --help
    The output will contain a new flag --enable-wincache.

  5. Run the command:

    configure.js [all options used to build PHP] --enable-wincache
    --enable-wincache is the only extra option which is required to ensure that WinCache extension gets built properly. This option will build WinCache and will statically link it with PHP dll. To build WinCache extension as a stand-alone DLL use the option --enable-wincache=shared.

  6. Run the command:

    nmake

Prerequisites
Verifying the build
Building for Windows


Verifying the build

The following steps describe how to verify that WinCache has been built correctly:

  1. Go to the folder where the PHP binaries are built

  2. Run the command:

    php.exe -n -d extension=php_wincache.dll -re wincache
    If WinCache has been built properly, the output of this command will list the INI directives and functions supported by WinCache.

Compiling and building
Xhprof
Building for Windows


层次式性能分析器

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • Xhprof 函数
    • xhprof_disable — 停止 xhprof 分析器
    • xhprof_enable — 启动 xhprof 性能分析器
    • xhprof_sample_disable — 停止 xhprof 性能采样分析器
    • xhprof_sample_enable — 以采样模式启动 XHProf 性能分析
Verifying the build
简介
影响 PHP 行为的扩展


简介

XHProf 是一个轻量级的分层性能测量分析器。 在数据收集阶段，它跟踪调用次数与测量数据，展示程序动态调用的弧线图。 它在报告、后期处理阶段计算了独占的性能度量，例如运行经过的时间、CPU 计算时间和内存开销。 函数性能报告可以由调用者和被调用者终止。 在数据搜集阶段 XHProf 通过调用图的循环来检测递归函数，通过赋予唯一的深度名称来避免递归调用的循环。

XHProf 包含了一个基于 HTML 的简单用户界面(由 PHP 写成)。 基于浏览器的用户界面使得浏览、分享性能数据结果更加简单方便。 同时也支持查看调用图。

XHProf 的报告对理解代码执行结构常常很有帮助。 比如此分层报告可用于确定在哪个调用链里调用了某个函数。

XHProf 对两次运行进行比较（又名 "diff" 报告），或者多次运行数据的合计。 对比、合并报告，很像针对单次运行的"平式视图"性能报告，就像"分层式视图"的性能报告。

更多额外文档可以在 » facebook xhprof 上找到。

Xhprof
安装／配置
Xhprof


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Xhprof


需求

虽然不是必需的，xhprof 包含了一个用 PHP 写的用户界面。 它是一个用来保存分析后的数据、并用浏览器显示的实用办法。 因此一个启用了 PHP 的 web 服务器将使人更能体验到 xhprof 的用处。

在 » http://github.com/preinheimer/xhprof 也有一个 GUI 的分支。

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/xhprof

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Xhprof 配置选项
名字 | 默认 | 可修改范围 | 更新日志
xhprof.output_dir | "" | PHP_INI_ALL |

这是配置指令的简短说明。

xhprof.output_dir string

储存 XHProf 运行数据的默认目录，用于接口 iXHProfRuns(即 XHProfRuns_Default 类)。

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

XHPROF_FLAGS_NO_BUILTINS (integer)
使得跳过所有内置（内部）函数。
XHPROF_FLAGS_CPU (integer)
使输出的性能数据中添加 CPU 数据。
XHPROF_FLAGS_MEMORY (integer)
使输出的性能数据中添加内存数据。
资源类型
范例
Xhprof


范例

Example #1 Xhprof 范例，可选使用图形界面

本示例启动并结束性能分析器，然后使用捆绑的用户界面来保存和解析结果。 换言之，扩展的代码在调用 xhprof_disable() 函数后结束。

<?php
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

for ($i = 0; $i <= 1000; $i++) {
    $a = $i * $i;
}

$xhprof_data = xhprof_disable();

$XHPROF_ROOT = "/tools/xhprof/";
include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";
include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";

$xhprof_runs = new XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_testing");

echo "http://localhost/xhprof/xhprof_html/index.php?run={$run_id}&source=xhprof_testing\n";

?>

以上例程的输出类似于：

http://localhost/xhprof/xhprof_html/index.php?run=t11_4bdf44d21121f&source=xhprof_testing
预定义常量
Xhprof 函数
Xhprof


Xhprof 函数

Table of Contents

  • xhprof_disable — 停止 xhprof 分析器
  • xhprof_enable — 启动 xhprof 性能分析器
  • xhprof_sample_disable — 停止 xhprof 性能采样分析器
  • xhprof_sample_enable — 以采样模式启动 XHProf 性能分析
范例
xhprof_disable
Xhprof


停止 xhprof 分析器

Xhprof 函数
xhprof_enable
Xhprof 函数
PHP Manual

xhprof_disable

(PECL xhprof >= 0.9.0)

xhprof_disable — 停止 xhprof 分析器

说明

array xhprof_disable ( void )

停止性能分析，并返回此次运行的 xhprof 数据。

参数

此函数没有参数。

返回值

本次运行的 array 类型的 xhprof 数据。

范例

Example #1 xhprof_disable() 范例

<?php
xhprof_enable();

$foo = strlen("foo bar");

$xhprof_data = xhprof_disable();

print_r($xhprof_data);
?>

以上例程的输出类似于：

Array
(
    [main()==>strlen] => Array
        (
            [ct] => 1
            [wt] => 279
        )

    [main()==>xhprof_disable] => Array
        (
            [ct] => 1
            [wt] => 9
        )

    [main()] => Array
        (
            [ct] => 1
            [wt] => 610
        )

)
Xhprof 函数
xhprof_enable
Xhprof 函数


启动 xhprof 性能分析器

xhprof_disable
xhprof_sample_disable
Xhprof 函数
PHP Manual

xhprof_enable

(PECL xhprof >= 0.9.0)

xhprof_enable — 启动 xhprof 性能分析器

说明

void xhprof_enable ([ int $flags = 0 [, array $options ]] )

启动 xhprof 进行性能分析。

参数

flags

分析添加额外信息的可选标记。 关于此标记的更多信息参见 XHprof 常量，例如， XHPROF_FLAGS_MEMORY 可以开启内存的分析。

options

array 的可选选项，就是通过传递 'ignored_functions' 选项来忽略性能分析中的某些函数。

返回值

NULL

更新日志

版本 | 说明
0.9.2 | 添加可选的 options 参数。

范例

Example #1 xhprof_enable() 范例

<?php
// 1. elapsed time + memory + CPU profiling; and ignore built-in (internal) functions
xhprof_enable(XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);

// 2. elapsed time profiling; ignore call_user_func* during profiling
xhprof_enable(
    0,
    array('ignored_functions' =>  array('call_user_func',
                                        'call_user_func_array')));

// 3. elapsed time + memory profiling; ignore call_user_func* during profiling
xhprof_enable(
    XHPROF_FLAGS_MEMORY,
    array('ignored_functions' =>  array('call_user_func',
                                        'call_user_func_array')));
?>

参见

  • xhprof_disable() - 停止 xhprof 分析器
  • xhprof_sample_enable() - 以采样模式启动 XHProf 性能分析
  • memory_get_usage() - 返回分配给 PHP 的内存量
  • getrusage() - 获取当前资源使用状况
xhprof_disable
xhprof_sample_disable
Xhprof 函数


停止 xhprof 性能采样分析器

xhprof_enable
xhprof_sample_enable
Xhprof 函数
PHP Manual

xhprof_sample_disable

(PECL xhprof >= 0.9.0)

xhprof_sample_disable — 停止 xhprof 性能采样分析器

说明

array xhprof_sample_disable ( void )

停止采样模式的 xhprof 分析器。

参数

此函数没有参数。

返回值

本次运行的xhprof采样数据，array 类型。

范例

Example #1 xhprof_sample_disable() 范例

<?php
xhprof_sample_enable();

for ($i = 0; $i <= 10000; $i++) {
    $a = strlen($i);
    $b = $i * $a;
    $c = rand();
}

$xhprof_data = xhprof_sample_disable();

print_r($xhprof_data);
?>

以上例程的输出类似于：

Array
(
    [1272935300.800000] => main()
    [1272935300.900000] => main()
)
xhprof_enable
xhprof_sample_enable
Xhprof 函数


以采样模式启动 XHProf 性能分析

xhprof_sample_disable
音频格式操作
Xhprof 函数
PHP Manual

xhprof_sample_enable

(PECL xhprof >= 0.9.0)

xhprof_sample_enable — 以采样模式启动 XHProf 性能分析

说明

void xhprof_sample_enable ( void )

xhprof_enable() 的更轻量的版本，以采样模式开始性能分析。 抽样的间隔为 0.1 秒，样本记录了完整的函数调用堆栈。 主要使用的情况是以较低的性能开销来进行性能监控和诊断。

参数

此函数没有参数。

返回值

NULL

参见

  • xhprof_sample_disable() - 停止 xhprof 性能采样分析器
  • xhprof_enable() - 启动 xhprof 性能分析器
  • memory_get_usage() - 返回分配给 PHP 的内存量
  • getrusage() - 获取当前资源使用状况
xhprof_sample_disable
音频格式操作
Xhprof 函数


音频格式操作

  • ID3 — ID3 Tags
    • 简介
    • 安装／配置
    • Predefined Constants
    • ID3 函数
  • KTaglib
    • 简介
    • 安装／配置
    • 预定义常量
    • KTaglib_MPEG_File — The KTaglib_MPEG_File class
    • KTaglib_MPEG_AudioProperties — The KTaglib_MPEG_AudioProperties class
    • KTaglib_Tag — The KTaglib_Tag class
    • KTaglib_ID3v2_Tag — The KTaglib_ID3v2_Tag class
    • KTaglib_ID3v2_Frame — The KTaglib_ID3v2_Frame class
    • KTaglib_ID3v2_AttachedPictureFrame — The KTaglib_ID3v2_AttachedPictureFrame class
  • oggvorbis — OGG/Vorbis
    • 简介
    • 安装／配置
    • 预定义常量
    • Context options
    • 范例
  • OpenAL — OpenAL Audio Bindings
    • 简介
    • 安装／配置
    • 预定义常量
    • OpenAL 函数
xhprof_sample_enable
ID3
函数参考


ID3 Tags

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • Predefined Constants
  • ID3 函数
    • id3_get_frame_long_name — Get the long name of an ID3v2 frame
    • id3_get_frame_short_name — Get the short name of an ID3v2 frame
    • id3_get_genre_id — Get the id for a genre
    • id3_get_genre_list — Get all possible genre values
    • id3_get_genre_name — Get the name for a genre id
    • id3_get_tag — Get all information stored in an ID3 tag
    • id3_get_version — Get version of an ID3 tag
    • id3_remove_tag — Remove an existing ID3 tag
    • id3_set_tag — Update information stored in an ID3 tag
音频格式操作
简介
音频格式操作


简介

These functions let you read and manipulate ID3 tags. ID3 tags are used in MP3 files to store title of the song, as well as information about the artist, album, genre, year and track number.

Since version 0.2 it is also possible to extract text frames from ID3 v2.2+ tags.

ID3
安装／配置
ID3


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
ID3


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/id3.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


资源类型

此扩展没有定义资源类型。

运行时配置
Predefined Constants
安装／配置


Predefined Constants

Most of the id3 functions either let you specify or return a tag version. In order to specify the version please use on of these constants.

ID3_V1_0 (integer)
ID3_V1_0 is used if you are working with ID3 V1.0 tags. These tags may contain the fields title, artist, album, genre, year and comment.
ID3_V1_1 (integer)
ID3_V1_1 is used if you are working with ID3 V1.1 tags. These tags may all information contained in v1.0 tags plus the track number.
ID3_V2_1 (integer)
ID3_V2_1 is used if you are working with ID3 V2.1 tags.
ID3_V2_2 (integer)
ID3_V2_2 is used if you are working with ID3 V2.2 tags.
ID3_V2_3 (integer)
ID3_V2_3 is used if you are working with ID3 V2.3 tags.
ID3_V2_4 (integer)
ID3_V2_4 is used if you are working with ID3 V2.4 tags.
ID3_BEST (integer)
ID3_BEST is used if would like to let the id3 functions determine which tag version should be used.

资源类型
ID3 函数
ID3


ID3 函数

Table of Contents

  • id3_get_frame_long_name — Get the long name of an ID3v2 frame
  • id3_get_frame_short_name — Get the short name of an ID3v2 frame
  • id3_get_genre_id — Get the id for a genre
  • id3_get_genre_list — Get all possible genre values
  • id3_get_genre_name — Get the name for a genre id
  • id3_get_tag — Get all information stored in an ID3 tag
  • id3_get_version — Get version of an ID3 tag
  • id3_remove_tag — Remove an existing ID3 tag
  • id3_set_tag — Update information stored in an ID3 tag
Predefined Constants
id3_get_frame_long_name
ID3


Get the long name of an ID3v2 frame

ID3 函数
id3_get_frame_short_name
ID3 函数
PHP Manual

id3_get_frame_long_name

(PECL id3 >= 0.2)

id3_get_frame_long_name — Get the long name of an ID3v2 frame

说明

string id3_get_frame_long_name ( string $frameId )

id3_get_frame_long_name() returns the long name for an ID3v2 frame.

参数

frameId

An ID3v2 frame

返回值

Returns the frame long name or FALSE on errors.

范例

Example #1 id3_get_frame_long_name() example

<?php
$longName = id3_get_frame_long_name("TOLY");
echo $longName;
?>

以上例程会输出：

Original lyricist(s)/text writer(s)

参见

  • id3_get_frame_short_name() - Get the short name of an ID3v2 frame

ID3 函数
id3_get_frame_short_name
ID3 函数


Get the short name of an ID3v2 frame

id3_get_frame_long_name
id3_get_genre_id
ID3 函数
PHP Manual

id3_get_frame_short_name

(PECL id3 >= 0.2)

id3_get_frame_short_name — Get the short name of an ID3v2 frame

说明

string id3_get_frame_short_name ( string $frameId )

id3_get_frame_short_name() returns the short name for an ID3v2 frame.

参数

frameId

An ID3v2 frame

返回值

Returns the frame short name or FALSE on errors.

The values returned by id3_get_frame_short_name() are used in the array returned by id3_get_tag().

范例

Example #1 id3_get_frame_short_name() example

<?php
$shortName = id3_get_frame_short_name("TOLY");
echo $shortName;
?>

以上例程会输出：

originalLyricist

参见

  • id3_get_frame_long_name() - Get the long name of an ID3v2 frame

id3_get_frame_long_name
id3_get_genre_id
ID3 函数


Get the id for a genre

id3_get_frame_short_name
id3_get_genre_list
ID3 函数
PHP Manual

id3_get_genre_id

(PECL id3 >= 0.1)

id3_get_genre_id — Get the id for a genre

说明

int id3_get_genre_id ( string $genre )

id3_get_genre_id() returns the id for a genre.

参数

genre

Genre name as string.

返回值

The genre id or FALSE on errors.

范例

Example #1 id3_get_genre_id() example

<?php
$id = id3_get_genre_id("Alternative");
echo $id;
?>

以上例程会输出：

20

参见

  • id3_get_genre_name() - Get the name for a genre id
  • id3_get_genre_list() - Get all possible genre values

id3_get_frame_short_name
id3_get_genre_list
ID3 函数


Get all possible genre values

id3_get_genre_id
id3_get_genre_name
ID3 函数
PHP Manual

id3_get_genre_list

(PECL id3 >= 0.1)

id3_get_genre_list — Get all possible genre values

说明

array id3_get_genre_list ( void )

id3_get_genre_list() returns an array containing all possible genres that may be stored in an ID3 tag. This list has been created by Eric Kemp and later extended by WinAmp.

This function is useful to provide you users a list of genres from which they may choose one. When updating the ID3 tag you will always have to specify the genre as an integer ranging from 0 to 147.

返回值

Returns an array containing all possible genres that may be stored in an ID3 tag.

范例

Example #1 id3_get_genre_list() example

<?php
$genres = id3_get_genre_list();
print_r($genres);
?>

以上例程会输出：

Array
(
    [0] => Blues
    [1] => Classic Rock
    [2] => Country
    [3] => Dance
    [4] => Disco
    [5] => Funk
    [6] => Grunge
    [7] => Hip-Hop
    [8] => Jazz
    [9] => Metal
    [10] => New Age
    [11] => Oldies
    [12] => Other
    [13] => Pop
    [14] => R&B
    [15] => Rap
    [16] => Reggae
    [17] => Rock
    [18] => Techno
    [19] => Industrial
    [20] => Alternative
    [21] => Ska
    [22] => Death Metal
    [23] => Pranks
    [24] => Soundtrack
    [25] => Euro-Techno
    [26] => Ambient
    [27] => Trip-Hop
    [28] => Vocal
    [29] => Jazz+Funk
    [30] => Fusion
    [31] => Trance
    [32] => Classical
    [33] => Instrumental
    [34] => Acid
    [35] => House
    [36] => Game
    [37] => Sound Clip
    [38] => Gospel
    [39] => Noise
    [40] => Alternative Rock
    [41] => Bass
    [42] => Soul
    [43] => Punk
    [44] => Space
    [45] => Meditative
    [46] => Instrumental Pop
    [47] => Instrumental Rock
    [48] => Ethnic
    [49] => Gothic
    [50] => Darkwave
    [51] => Techno-Industrial
    [52] => Electronic
    [53] => Pop-Folk
    [54] => Eurodance
    [55] => Dream
    [56] => Southern Rock
    [57] => Comedy
    [58] => Cult
    [59] => Gangsta
    [60] => Top 40
    [61] => Christian Rap
    [62] => Pop/Funk
    [63] => Jungle
    [64] => Native US
    [65] => Cabaret
    [66] => New Wave
    [67] => Psychadelic
    [68] => Rave
    [69] => Showtunes
    [70] => Trailer
    [71] => Lo-Fi
    [72] => Tribal
    [73] => Acid Punk
    [74] => Acid Jazz
    [75] => Polka
    [76] => Retro
    [77] => Musical
    [78] => Rock & Roll
    [79] => Hard Rock
    [80] => Folk
    [81] => Folk-Rock
    [82] => National Folk
    [83] => Swing
    [84] => Fast Fusion
    [85] => Bebob
    [86] => Latin
    [87] => Revival
    [88] => Celtic
    [89] => Bluegrass
    [90] => Avantgarde
    [91] => Gothic Rock
    [92] => Progressive Rock
    [93] => Psychedelic Rock
    [94] => Symphonic Rock
    [95] => Slow Rock
    [96] => Big Band
    [97] => Chorus
    [98] => Easy Listening
    [99] => Acoustic
    [100] => Humour
    [101] => Speech
    [102] => Chanson
    [103] => Opera
    [104] => Chamber Music
    [105] => Sonata
    [106] => Symphony
    [107] => Booty Bass
    [108] => Primus
    [109] => Porn Groove
    [110] => Satire
    [111] => Slow Jam
    [112] => Club
    [113] => Tango
    [114] => Samba
    [115] => Folklore
    [116] => Ballad
    [117] => Power Ballad
    [118] => Rhytmic Soul
    [119] => Freestyle
    [120] => Duet
    [121] => Punk Rock
    [122] => Drum Solo
    [123] => Acapella
    [124] => Euro-House
    [125] => Dance Hall
    [126] => Goa
    [127] => Drum & Bass
    [128] => Club-House
    [129] => Hardcore
    [130] => Terror
    [131] => Indie
    [132] => BritPop
    [133] => Negerpunk
    [134] => Polsk Punk
    [135] => Beat
    [136] => Christian Gangsta
    [137] => Heavy Metal
    [138] => Black Metal
    [139] => Crossover
    [140] => Contemporary C
    [141] => Christian Rock
    [142] => Merengue
    [143] => Salsa
    [144] => Thrash Metal
    [145] => Anime
    [146] => JPop
    [147] => SynthPop
)

参见

  • id3_get_genre_name() - Get the name for a genre id
  • id3_get_genre_id() - Get the id for a genre

id3_get_genre_id
id3_get_genre_name
ID3 函数


Get the name for a genre id

id3_get_genre_list
id3_get_tag
ID3 函数
PHP Manual

id3_get_genre_name

(PECL id3 >= 0.1)

id3_get_genre_name — Get the name for a genre id

说明

string id3_get_genre_name ( int $genre_id )

id3_get_genre_name() returns the name for a genre id.

参数

genre_id

An integer ranging from 0 to 147

返回值

Returns the name as a string.

范例

Example #1 id3_get_genre_name() example

<?php
$genre = id3_get_genre_name(20);
echo $genre;
?>

以上例程会输出：

Alternative

参见

  • id3_get_genre_list() - Get all possible genre values
  • id3_get_genre_id() - Get the id for a genre

id3_get_genre_list
id3_get_tag
ID3 函数


Get all information stored in an ID3 tag

id3_get_genre_name
id3_get_version
ID3 函数
PHP Manual

id3_get_tag

(PECL id3 >= 0.1)

id3_get_tag — Get all information stored in an ID3 tag

说明

array id3_get_tag ( string $filename [, int $version = ID3_BEST ] )

id3_get_tag() is used to get all information stored in the id3 tag of the specified file.

参数

filename

The path to the MP3 file

Instead of a filename you may also pass a valid stream resource

version

Allows you to specify the version of the tag as MP3 files may contain both, version 1.x and version 2.x tags

Since version 0.2 id3_get_tag() also supports ID3 tags of version 2.2, 2.3 and 2.4. To extract information from these tags, pass one of the constants ID3_V2_2, ID3_V2_3 or ID3_V2_4 as the second parameter. ID3 v2.x tags can contain a lot more information about the MP3 file than ID3 v1.x tags.

返回值

Returns an associative array with various keys like: title, artist, ..

The key genre will contain an integer between 0 and 147. You may use id3_get_genre_name() to convert it to a human readable string.

范例

Example #1 id3_get_tag() example

<?php
$tag = id3_get_tag( "path/to/example.mp3" );
print_r($tag);
?>

以上例程的输出类似于：

Array
(
    [title] => DN-38416
    [artist] => Re:\Legion
    [album] => Reflections
    [year] => 2004
    [genre] => 19
)

Example #2 id3_get_tag() example

<?php
$tag = id3_get_tag( "path/to/example2.mp3", ID3_V2_3 );
print_r($tag);
?>

以上例程的输出类似于：

Array
(
    [copyright] => Dirty Mac
    [originalArtist] => Dirty Mac
    [composer] => Marcus G?tze
    [artist] => Dirty Mac
    [title] => Little Big Man
    [album] => Demo-Tape
    [track] => 5/12
    [genre] => (17)Rock
    [year] => 2001
)

参见

  • id3_set_tag() - Update information stored in an ID3 tag
  • id3_remove_tag() - Remove an existing ID3 tag
  • id3_get_version() - Get version of an ID3 tag

id3_get_genre_name
id3_get_version
ID3 函数


Get version of an ID3 tag

id3_get_tag
id3_remove_tag
ID3 函数
PHP Manual

id3_get_version

(PECL id3 >= 0.1)

id3_get_version — Get version of an ID3 tag

说明

int id3_get_version ( string $filename )

id3_get_version() retrieves the version(s) of the ID3 tag(s) in the MP3 file.

If a file contains an ID3 v1.1 tag, it always contains a 1.0 tag, as version 1.1 is just an extension of 1.0.

参数

filename

The path to the MP3 file

Instead of a filename you may also pass a valid stream resource

返回值

Returns the version number of the ID3 tag of the file. As a tag can contain ID3 v1.x and v2.x tags, the return value of this function should be bitwise compared with the predefined constants ID3_V1_0, ID3_V1_1 and ID3_V2.

范例

Example #1 id3_get_version() example

<?php
$version = id3_get_version( "path/to/example.mp3" );
if ($version & ID3_V1_0) {
    echo "Contains a 1.x tag\n";
}
if ($version & ID3_V1_1) {
    echo "Contains a 1.1 tag\n";
}
if ($version & ID3_V2) {
    echo "Contains a 2.x tag\n";
}
?>

以上例程的输出类似于：

Contains a 1.x tag
Contains a 1.1 tag

参见

  • id3_set_tag() - Update information stored in an ID3 tag
  • id3_get_tag() - Get all information stored in an ID3 tag
  • id3_remove_tag() - Remove an existing ID3 tag

id3_get_tag
id3_remove_tag
ID3 函数


Remove an existing ID3 tag

id3_get_version
id3_set_tag
ID3 函数
PHP Manual

id3_remove_tag

(PECL id3 >= 0.1)

id3_remove_tag — Remove an existing ID3 tag

说明

bool id3_remove_tag ( string $filename [, int $version = ID3_V1_0 ] )

id3_remove_tag() is used to remove the information stored of an ID3 tag.

参数

filename

The path to the MP3 file

Instead of a filename you may also pass a valid stream resource

version

Allows you to specify the version of the tag as MP3 files may contain both, version 1.x and version 2.x tags.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 id3_remove_tag() example

<?php
$result = id3_remove_tag( "path/to/example.mp3", ID3_V1_0 );
if ($result === true) {
    echo "Tag successfully removed\n";
}
?>

If the file is writable and contained a 1.0 tag, this will output:

Tag successfully removed

注释

Note: Currently id3_remove_tag() only supports version 1.0 and 1.1. If you choose to remove a 1.0 tag and the file contains a 1.1 tag, this tag will be removed, as v1.1 is only an extension of 1.0.

参见

  • id3_set_tag() - Update information stored in an ID3 tag
  • id3_get_tag() - Get all information stored in an ID3 tag
  • id3_get_version() - Get version of an ID3 tag

id3_get_version
id3_set_tag
ID3 函数


Update information stored in an ID3 tag

id3_remove_tag
KTaglib
ID3 函数
PHP Manual

id3_set_tag

(PECL id3 >= 0.1)

id3_set_tag — Update information stored in an ID3 tag

说明

bool id3_set_tag ( string $filename , array $tag [, int $version = ID3_V1_0 ] )

id3_set_tag() is used to change the information stored of an ID3 tag. If no tag has been present, it will be added to the file.

参数

filename

The path to the MP3 file

Instead of a filename you may also pass a valid stream resource

tag

An associative array of tag keys and values

The following keys may be used in the associative array:

Keys in the associative array
key | possible value | available in version
title | string with maximum of 30 characters | v1.0, v1.1
artist | string with maximum of 30 characters | v1.0, v1.1
album | string with maximum of 30 characters | v1.0, v1.1
year | 4 digits | v1.0, v1.1
genre | integer value between 0 and 147 | v1.0, v1.1
comment | string with maximum of 30 characters (28 in v1.1) | v1.0, v1.1
track | integer between 0 and 255 | v1.1

version

Allows you to specify the version of the tag as MP3 files may contain both, version 1.x and version 2.x tags

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 id3_set_tag() example

<?php
$data = array(
              "title" => "Re:Start",
              "artist" => "Re:\Legion",
              "comment" => "A nice track"
             );
$result = id3_set_tag( "path/to/example.mp3", $data, ID3_V1_0 );
if ($result === true) {
    echo "Tag successfully updated\n";
}
?>

If the file is writable, this will output:

Tag successfully updated

注释

Note: Currently id3_set_tag() only supports version 1.0 and 1.1.

参见

  • id3_remove_tag() - Remove an existing ID3 tag
  • id3_get_tag() - Get all information stored in an ID3 tag
  • id3_get_version() - Get version of an ID3 tag

id3_remove_tag
KTaglib
ID3 函数


KTaglib

  • 简介
  • 安装／配置
    • 需求
    • 安装
  • 预定义常量
  • KTaglib_MPEG_File — The KTaglib_MPEG_File class
    • KTaglib_MPEG_File::__construct — Opens a new file
    • KTaglib_MPEG_File::getAudioProperties — Returns an object that provides access to the audio properties
    • KTaglib_MPEG_File::getID3v1Tag — Returns an object representing an ID3v1 tag
    • KTaglib_MPEG_File::getID3v2Tag — Returns a ID3v2 object
  • KTaglib_MPEG_AudioProperties — The KTaglib_MPEG_AudioProperties class
    • KTaglib_MPEG_AudioProperties::getBitrate — Returns the bitrate of the MPEG file
    • KTaglib_MPEG_AudioProperties::getChannels — Returns the amount of channels of a MPEG file
    • KTaglib_MPEG_AudioProperties::getLayer — Returns the layer of a MPEG file
    • KTaglib_MPEG_AudioProperties::getLength — Returns the length of a MPEG file
    • KTaglib_MPEG_AudioProperties::getSampleBitrate — Returns the sample bitrate of a MPEG file
    • KTaglib_MPEG_AudioProperties::getVersion — Returns the version of a MPEG file
    • KTaglib_MPEG_AudioProperties::isCopyrighted — Returns the copyright status of an MPEG file
    • KTaglib_MPEG_AudioProperties::isOriginal — Returns if the file is marked as the original file
    • KTaglib_MPEG_AudioProperties::isProtectionEnabled — Returns if protection mechanisms of an MPEG file are enabled
  • KTaglib_Tag — The KTaglib_Tag class
    • KTaglib_Tag::getAlbum — Returns the title string from a ID3 tag
    • KTaglib_Tag::getArtist — Returns the artist string from a ID3 tag
    • KTaglib_Tag::getComment — Returns the comment from a ID3 tag
    • KTaglib_Tag::getGenre — Returns the genre from a ID3 tag
    • KTaglib_Tag::getTitle — Returns the title string from a ID3 tag
    • KTaglib_Tag::getTrack — Returns the track number from a ID3 tag
    • KTaglib_Tag::getYear — Returns the year from a ID3 tag
    • KTaglib_Tag::isEmpty — Returns true if the tag is empty
  • KTaglib_ID3v2_Tag — The KTaglib_ID3v2_Tag class
    • KTaglib_ID3v2_Tag::addFrame — Add a frame to the ID3v2 tag
    • KTaglib_ID3v2_Tag::getFrameList — Returns an array of ID3v2 frames, associated with the ID3v2 tag
  • KTaglib_ID3v2_Frame — The KTaglib_ID3v2_Frame class
    • KTaglib_ID3v2_Frame::getSize — Returns the size of the frame in bytes
    • KTaglib_ID3v2_Frame::__toString — Returns a string representation of the frame
  • KTaglib_ID3v2_AttachedPictureFrame — The KTaglib_ID3v2_AttachedPictureFrame class
    • KTaglib_ID3v2_AttachedPictureFrame::getDescription — Returns a description for the picture in a picture frame
    • KTaglib_ID3v2_AttachedPictureFrame::getMimeType — Returns the mime type of the picture
    • KTaglib_ID3v2_AttachedPictureFrame::getType — Returns the type of the image
    • KTaglib_ID3v2_AttachedPictureFrame::savePicture — Saves the picture to a file
    • KTaglib_ID3v2_AttachedPictureFrame::setMimeType — Set's the mime type of the picture
    • KTaglib_ID3v2_AttachedPictureFrame::setPicture — Sets the frame picture to the given image
    • KTaglib_ID3v2_AttachedPictureFrame::setType — Set the type of the image
id3_set_tag
简介
音频格式操作


简介

KTaglib is an object oriented binding to the taglib library from the KDE project used in projects like Amarok to read and write ID3 and Ogg tags. The library also provides access to audio information. The bindings are designed usually follow the underlying C++ API, but were changed whenever there is a more PHP-like way.

Note:

At the moment ktaglib is able to read and write ID3v1 and ID3v2 tags.

KTaglib
安装／配置
KTaglib


安装／配置

Table of Contents

  • 需求
  • 安装
简介
需求
KTaglib


需求

If you want to build ktaglib you need at least taglib 1.5 installed. To obtain the taglib see the » taglib project page. Windows DLL's are build static against taglib, therefore there is no need to have taglib installed.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/ktaglib.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

KTaglib uses class constants. Most of the constants are mappings to the according Taglib enums and constants.

KTaglib_MPEG_Header::Version1 (integer)
ID3 version is 1.0
KTaglib_MPEG_Header::Version2 (integer)
ID3 version is 2.0
KTaglib_MPEG_Header::Version2_5 (integer)
ID3 version is 2.5
KTaglib_ID3v2_AttachedPictureFrame::Other (integer)
Picture type Other
KTaglib_ID3v2_AttachedPictureFrame::FileIcon (integer)
Picture type FileIcon
KTaglib_ID3v2_AttachedPictureFrame::OtherFileIcon (integer)
Picture type OtherFileIcon
KTaglib_ID3v2_AttachedPictureFrame::FrontCover (integer)
Picture type FrontCover
KTaglib_ID3v2_AttachedPictureFrame::BackCover (integer)
Picture type BackCover
KTaglib_ID3v2_AttachedPictureFrame::LeafletPage (integer)
Picture type LeafletPage
KTaglib_ID3v2_AttachedPictureFrame::Media (integer)
Picture type Media
KTaglib_ID3v2_AttachedPictureFrame::LeadArtist (integer)
Picture type LeadArtist
KTaglib_ID3v2_AttachedPictureFrame::Artist (integer)
Picture type Artist
KTaglib_ID3v2_AttachedPictureFrame::Conductor (integer)
Picture type Condutor
KTaglib_ID3v2_AttachedPictureFrame::Band (integer)
Picture type Band
KTaglib_ID3v2_AttachedPictureFrame::Composer (integer)
Picture type Composer
KTaglib_ID3v2_AttachedPictureFrame::Lyricist (integer)
Picture type Lyricist
KTaglib_ID3v2_AttachedPictureFrame::RecordingLocation (integer)
Picture type RecordingLocation
KTaglib_ID3v2_AttachedPictureFrame::DuringRecording (integer)
Picture type DuringRecording
KTaglib_ID3v2_AttachedPictureFrame::DuringPerformance (integer)
Picture type DuringPerformance
KTaglib_ID3v2_AttachedPictureFrame::MovieScreenCapture (integer)
Picture type MovieScreenCapture
KTaglib_ID3v2_AttachedPictureFrame::ColouredFish (integer)
Picture type ColouredFish
KTaglib_ID3v2_AttachedPictureFrame::Illustration (integer)
Picture type Illustration
KTaglib_ID3v2_AttachedPictureFrame::BandLogo (integer)
Picture type BandLogo
安装
KTaglib_MPEG_File
KTaglib


The KTaglib_MPEG_File class

(0.0.1)

简介

Represents an MPEG file. MPEG files can have ID3v1, ID3v2 tags and audio properties.

Class synopsis

KTaglib_MPEG_File {
/* 方法 */
public KTaglib_MPEG_File getAudioProperties ( void )
public KTaglib_ID3v1_Tag getID3v1Tag ([ bool $create = false ] )
public KTaglib_ID3v2_Tag getID3v2Tag ([ bool $create = false ] )
}

Table of Contents

  • KTaglib_MPEG_File::__construct — Opens a new file
  • KTaglib_MPEG_File::getAudioProperties — Returns an object that provides access to the audio properties
  • KTaglib_MPEG_File::getID3v1Tag — Returns an object representing an ID3v1 tag
  • KTaglib_MPEG_File::getID3v2Tag — Returns a ID3v2 object
预定义常量
KTaglib_MPEG_File::__construct
KTaglib


Opens a new file

KTaglib_MPEG_File
KTaglib_MPEG_File::getAudioProperties
KTaglib_MPEG_File
PHP Manual

KTaglib_MPEG_File::__construct

(0.0.1)

KTaglib_MPEG_File::__construct — Opens a new file

说明

public KTaglib_MPEG_File::__construct ( string $filename )

Opens a new MPEG file.

参数

filename

The file to read

范例

Example #1 Opens a new MP3 file and read the title

<?php
$mpeg = new KTaglib_MPEG_File('example.mp3');
echo $mpeg->getID3v1Tag()->getTitle();
?>

KTaglib_MPEG_File
KTaglib_MPEG_File::getAudioProperties
KTaglib_MPEG_File


Returns an object that provides access to the audio properties

KTaglib_MPEG_File::__construct
KTaglib_MPEG_File::getID3v1Tag
KTaglib_MPEG_File
PHP Manual

KTaglib_MPEG_File::getAudioProperties

(0.0.1)

KTaglib_MPEG_File::getAudioProperties — Returns an object that provides access to the audio properties

说明

public KTaglib_MPEG_File KTaglib_MPEG_File::getAudioProperties ( void )

Returns an object that provides access to the audio properties of the mpeg file.

返回值

Returns an KTaglib_MPEG_AudioProperties object or false.

KTaglib_MPEG_File::__construct
KTaglib_MPEG_File::getID3v1Tag
KTaglib_MPEG_File


Returns an object representing an ID3v1 tag

KTaglib_MPEG_File::getAudioProperties
KTaglib_MPEG_File::getID3v2Tag
KTaglib_MPEG_File
PHP Manual

KTaglib_MPEG_File::getID3v1Tag

(0.0.1)

KTaglib_MPEG_File::getID3v1Tag — Returns an object representing an ID3v1 tag

说明

public KTaglib_ID3v1_Tag KTaglib_MPEG_File::getID3v1Tag ([ bool $create = false ] )

Returns an object that represents an ID3v1 tag, which can be used to get information about the ID3v1 tag.

返回值

Returns an KTaglib_MPEG_ID3v1Tag object or false if there is no ID3v1 tag.

KTaglib_MPEG_File::getAudioProperties
KTaglib_MPEG_File::getID3v2Tag
KTaglib_MPEG_File


Returns a ID3v2 object

KTaglib_MPEG_File::getID3v1Tag
KTaglib_MPEG_AudioProperties
KTaglib_MPEG_File
PHP Manual

KTaglib_MPEG_File::getID3v2Tag

(0.0.1)

KTaglib_MPEG_File::getID3v2Tag — Returns a ID3v2 object

说明

public KTaglib_ID3v2_Tag KTaglib_MPEG_File::getID3v2Tag ([ bool $create = false ] )

Returns a ID3v2 object for the mpeg file. If no ID3v2 Tag is present, an KTaglib_TagNotFoundException is thrown.

返回值

Returns the KTaglib_ID3v2_Tag object of the MPEG file or false if there is no ID3v2 tag

KTaglib_MPEG_File::getID3v1Tag
KTaglib_MPEG_AudioProperties
KTaglib_MPEG_File


The KTaglib_MPEG_AudioProperties class

(0.0.1)

简介

Represents the audio properties of a MPEG file, like length, bitrate or samplerate.

Class synopsis

KTaglib_MPEG_AudioProperties {
/* 方法 */
public int KTaglib_MPEG_AudioProperties::getBitrate ( void )
public int KTaglib_MPEG_AudioProperties::getChannels ( void )
public int KTaglib_MPEG_AudioProperties::getLayer ( void )
public int KTaglib_MPEG_AudioProperties::getLength ( void )
public int KTaglib_MPEG_AudioProperties::getSampleBitrate ( void )
public int KTaglib_MPEG_AudioProperties::getVersion ( void )
public bool KTaglib_MPEG_AudioProperties::isCopyrighted ( void )
public bool KTaglib_MPEG_AudioProperties::isOriginal ( void )
public bool KTaglib_MPEG_AudioProperties::isProtectionEnabled ( void )
}

Table of Contents

  • KTaglib_MPEG_AudioProperties::getBitrate — Returns the bitrate of the MPEG file
  • KTaglib_MPEG_AudioProperties::getChannels — Returns the amount of channels of a MPEG file
  • KTaglib_MPEG_AudioProperties::getLayer — Returns the layer of a MPEG file
  • KTaglib_MPEG_AudioProperties::getLength — Returns the length of a MPEG file
  • KTaglib_MPEG_AudioProperties::getSampleBitrate — Returns the sample bitrate of a MPEG file
  • KTaglib_MPEG_AudioProperties::getVersion — Returns the version of a MPEG file
  • KTaglib_MPEG_AudioProperties::isCopyrighted — Returns the copyright status of an MPEG file
  • KTaglib_MPEG_AudioProperties::isOriginal — Returns if the file is marked as the original file
  • KTaglib_MPEG_AudioProperties::isProtectionEnabled — Returns if protection mechanisms of an MPEG file are enabled
KTaglib_MPEG_File::getID3v2Tag
KTaglib_MPEG_AudioProperties::getBitrate
KTaglib


Returns the bitrate of the MPEG file

KTaglib_MPEG_AudioProperties
KTaglib_MPEG_AudioProperties::getChannels
KTaglib_MPEG_AudioProperties
PHP Manual

KTaglib_MPEG_AudioProperties::getBitrate

(0.0.1)

KTaglib_MPEG_AudioProperties::getBitrate — Returns the bitrate of the MPEG file

说明

public int KTaglib_MPEG_AudioProperties::getBitrate ( void )

Returns the bitrate of the MPEG file

返回值

Returns the bitrate as an integer

KTaglib_MPEG_AudioProperties
KTaglib_MPEG_AudioProperties::getChannels
KTaglib_MPEG_AudioProperties


Returns the amount of channels of a MPEG file

KTaglib_MPEG_AudioProperties::getBitrate
KTaglib_MPEG_AudioProperties::getLayer
KTaglib_MPEG_AudioProperties
PHP Manual

KTaglib_MPEG_AudioProperties::getChannels

(0.0.1)

KTaglib_MPEG_AudioProperties::getChannels — Returns the amount of channels of a MPEG file

说明

public int KTaglib_MPEG_AudioProperties::getChannels ( void )

Returns the amount of channels of the MPEG file

返回值

Returns the channel count as an integer

KTaglib_MPEG_AudioProperties::getBitrate
KTaglib_MPEG_AudioProperties::getLayer
KTaglib_MPEG_AudioProperties


Returns the layer of a MPEG file

KTaglib_MPEG_AudioProperties::getChannels
KTaglib_MPEG_AudioProperties::getLength
KTaglib_MPEG_AudioProperties
PHP Manual

KTaglib_MPEG_AudioProperties::getLayer

(0.0.1)

KTaglib_MPEG_AudioProperties::getLayer — Returns the layer of a MPEG file

说明

public int KTaglib_MPEG_AudioProperties::getLayer ( void )

Returns the layer of the MPEG file (usually 3 for MP3).

返回值

Returns the layer as an integer

KTaglib_MPEG_AudioProperties::getChannels
KTaglib_MPEG_AudioProperties::getLength
KTaglib_MPEG_AudioProperties


Returns the length of a MPEG file

KTaglib_MPEG_AudioProperties::getLayer
KTaglib_MPEG_AudioProperties::getSampleBitrate
KTaglib_MPEG_AudioProperties
PHP Manual

KTaglib_MPEG_AudioProperties::getLength

(0.0.1)

KTaglib_MPEG_AudioProperties::getLength — Returns the length of a MPEG file

说明

public int KTaglib_MPEG_AudioProperties::getLength ( void )

Returns the length of the MPEG file

返回值

Returns the length as an integer

KTaglib_MPEG_AudioProperties::getLayer
KTaglib_MPEG_AudioProperties::getSampleBitrate
KTaglib_MPEG_AudioProperties


Returns the sample bitrate of a MPEG file

KTaglib_MPEG_AudioProperties::getLength
KTaglib_MPEG_AudioProperties::getVersion
KTaglib_MPEG_AudioProperties
PHP Manual

KTaglib_MPEG_AudioProperties::getSampleBitrate

(0.0.1)

KTaglib_MPEG_AudioProperties::getSampleBitrate — Returns the sample bitrate of a MPEG file

说明

public int KTaglib_MPEG_AudioProperties::getSampleBitrate ( void )

Returns the sample bitrate of the MPEG file

返回值

Returns the sample bitrate as an integer

KTaglib_MPEG_AudioProperties::getLength
KTaglib_MPEG_AudioProperties::getVersion
KTaglib_MPEG_AudioProperties


Returns the version of a MPEG file

KTaglib_MPEG_AudioProperties::getSampleBitrate
KTaglib_MPEG_AudioProperties::isCopyrighted
KTaglib_MPEG_AudioProperties
PHP Manual

KTaglib_MPEG_AudioProperties::getVersion

(0.0.1)

KTaglib_MPEG_AudioProperties::getVersion — Returns the version of a MPEG file

说明

public int KTaglib_MPEG_AudioProperties::getVersion ( void )

Returns the version of the MPEG file header. The possible versions are defined in Tag_MPEG_Header (Version1, Version2, Version2.5).

返回值

Returns the version

KTaglib_MPEG_AudioProperties::getSampleBitrate
KTaglib_MPEG_AudioProperties::isCopyrighted
KTaglib_MPEG_AudioProperties


Returns the copyright status of an MPEG file

KTaglib_MPEG_AudioProperties::getVersion
KTaglib_MPEG_AudioProperties::isOriginal
KTaglib_MPEG_AudioProperties
PHP Manual

KTaglib_MPEG_AudioProperties::isCopyrighted

(0.0.1)

KTaglib_MPEG_AudioProperties::isCopyrighted — Returns the copyright status of an MPEG file

说明

public bool KTaglib_MPEG_AudioProperties::isCopyrighted ( void )

Returns true if the MPEG file is copyrighted

返回值

Returns true if the MPEG file is copyrighted

KTaglib_MPEG_AudioProperties::getVersion
KTaglib_MPEG_AudioProperties::isOriginal
KTaglib_MPEG_AudioProperties


Returns if the file is marked as the original file

KTaglib_MPEG_AudioProperties::isCopyrighted
KTaglib_MPEG_AudioProperties::isProtectionEnabled
KTaglib_MPEG_AudioProperties
PHP Manual

KTaglib_MPEG_AudioProperties::isOriginal

(0.0.1)

KTaglib_MPEG_AudioProperties::isOriginal — Returns if the file is marked as the original file

说明

public bool KTaglib_MPEG_AudioProperties::isOriginal ( void )

Returns true if the file is marked as the original file

返回值

Returns true if the file is marked as the original file

KTaglib_MPEG_AudioProperties::isCopyrighted
KTaglib_MPEG_AudioProperties::isProtectionEnabled
KTaglib_MPEG_AudioProperties


Returns if protection mechanisms of an MPEG file are enabled

KTaglib_MPEG_AudioProperties::isOriginal
KTaglib_Tag
KTaglib_MPEG_AudioProperties
PHP Manual

KTaglib_MPEG_AudioProperties::isProtectionEnabled

(0.0.1)

KTaglib_MPEG_AudioProperties::isProtectionEnabled — Returns if protection mechanisms of an MPEG file are enabled

说明

public bool KTaglib_MPEG_AudioProperties::isProtectionEnabled ( void )

Returns true if protection mechanisms (like DRM) are enabled for this file

返回值

Returns true if protection mechanisms (like DRM) are enabled for this file

KTaglib_MPEG_AudioProperties::isOriginal
KTaglib_Tag
KTaglib_MPEG_AudioProperties


The KTaglib_Tag class

(0.0.1)

简介

Base class for ID3v1 or ID3v2 tags

Class synopsis

KTaglib_Tag {
/* 方法 */
public string getAlbum ( void )
public string getArtist ( void )
public string getComment ( void )
public string getGenre ( void )
public string getTitle ( void )
public int getTrack ( void )
public int getYear ( void )
public bool isEmpty ( void )
}

Table of Contents

  • KTaglib_Tag::getAlbum — Returns the title string from a ID3 tag
  • KTaglib_Tag::getArtist — Returns the artist string from a ID3 tag
  • KTaglib_Tag::getComment — Returns the comment from a ID3 tag
  • KTaglib_Tag::getGenre — Returns the genre from a ID3 tag
  • KTaglib_Tag::getTitle — Returns the title string from a ID3 tag
  • KTaglib_Tag::getTrack — Returns the track number from a ID3 tag
  • KTaglib_Tag::getYear — Returns the year from a ID3 tag
  • KTaglib_Tag::isEmpty — Returns true if the tag is empty
KTaglib_MPEG_AudioProperties::isProtectionEnabled
KTaglib_Tag::getAlbum
KTaglib


Returns the title string from a ID3 tag

KTaglib_Tag
KTaglib_Tag::getArtist
KTaglib_Tag
PHP Manual

KTaglib_Tag::getAlbum

(0.0.1)

KTaglib_Tag::getAlbum — Returns the title string from a ID3 tag

说明

public string KTaglib_Tag::getAlbum ( void )

Returns the album string of an ID3 tag. This method is implemented in ID3v1 and ID3v2 tags.

返回值

Returns the album string

KTaglib_Tag
KTaglib_Tag::getArtist
KTaglib_Tag


Returns the artist string from a ID3 tag

KTaglib_Tag::getAlbum
KTaglib_Tag::getComment
KTaglib_Tag
PHP Manual

KTaglib_Tag::getArtist

(0.0.1)

KTaglib_Tag::getArtist — Returns the artist string from a ID3 tag

说明

public string KTaglib_Tag::getArtist ( void )

Returns the artist string of an ID3 tag. This method is implemented in ID3v1 and ID3v2 tags.

返回值

Returns the artist string

KTaglib_Tag::getAlbum
KTaglib_Tag::getComment
KTaglib_Tag


Returns the comment from a ID3 tag

KTaglib_Tag::getArtist
KTaglib_Tag::getGenre
KTaglib_Tag
PHP Manual

KTaglib_Tag::getComment

(0.0.1)

KTaglib_Tag::getComment — Returns the comment from a ID3 tag

说明

public string KTaglib_Tag::getComment ( void )

Returns the comment of an ID3 tag. This method is implemented in ID3v1 and ID3v2 tags.

返回值

Returns the comment string

KTaglib_Tag::getArtist
KTaglib_Tag::getGenre
KTaglib_Tag


Returns the genre from a ID3 tag

KTaglib_Tag::getComment
KTaglib_Tag::getTitle
KTaglib_Tag
PHP Manual

KTaglib_Tag::getGenre

(0.0.1)

KTaglib_Tag::getGenre — Returns the genre from a ID3 tag

说明

public string KTaglib_Tag::getGenre ( void )

Returns the genre of an ID3 tag. This method is implemented in ID3v1 and ID3v2 tags.

返回值

Returns the genre string

KTaglib_Tag::getComment
KTaglib_Tag::getTitle
KTaglib_Tag


Returns the title string from a ID3 tag

KTaglib_Tag::getGenre
KTaglib_Tag::getTrack
KTaglib_Tag
PHP Manual

KTaglib_Tag::getTitle

(0.0.1)

KTaglib_Tag::getTitle — Returns the title string from a ID3 tag

说明

public string KTaglib_Tag::getTitle ( void )

Returns the title string of an ID3 tag. This method is implemented in ID3v1 and ID3v2 tags.

返回值

Returns the title string

KTaglib_Tag::getGenre
KTaglib_Tag::getTrack
KTaglib_Tag


Returns the track number from a ID3 tag

KTaglib_Tag::getTitle
KTaglib_Tag::getYear
KTaglib_Tag
PHP Manual

KTaglib_Tag::getTrack

(0.0.1)

KTaglib_Tag::getTrack — Returns the track number from a ID3 tag

说明

public int KTaglib_Tag::getTrack ( void )

Returns the track number of an ID3 tag. This method is implemented in ID3v1 and ID3v2 tags.

返回值

Returns the track number as an integer

KTaglib_Tag::getTitle
KTaglib_Tag::getYear
KTaglib_Tag


Returns the year from a ID3 tag

KTaglib_Tag::getTrack
KTaglib_Tag::isEmpty
KTaglib_Tag
PHP Manual

KTaglib_Tag::getYear

(0.0.1)

KTaglib_Tag::getYear — Returns the year from a ID3 tag

说明

public int KTaglib_Tag::getYear ( void )

Returns the year of an ID3 tag. This method is implemented in ID3v1 and ID3v2 tags.

返回值

Returns the year as an integer

KTaglib_Tag::getTrack
KTaglib_Tag::isEmpty
KTaglib_Tag


Returns true if the tag is empty

KTaglib_Tag::getYear
KTaglib_ID3v2_Tag
KTaglib_Tag
PHP Manual

KTaglib_Tag::isEmpty

(0.0.1)

KTaglib_Tag::isEmpty — Returns true if the tag is empty

说明

public bool KTaglib_Tag::isEmpty ( void )

Returns true if the tag exists, but is empty. This method is implemented in ID3v1 and ID3v2 tags.

返回值

Returns true if the tag is empty, otherwise false.

KTaglib_Tag::getYear
KTaglib_ID3v2_Tag
KTaglib_Tag


The KTaglib_ID3v2_Tag class

(0.0.1)

简介

Represents and ID3v2 tag. It provides a list of ID3v2 frames and can be used to add and remove additional frames.

Class synopsis

extends KTaglib_Tag {
/* 方法 */
public bool addFrame ( KTaglib_ID3v2_Frame $frame )
public array getFrameList ( void )
/* 继承的方法 */
public string KTaglib_Tag::getAlbum ( void )
public string KTaglib_Tag::getArtist ( void )
public string KTaglib_Tag::getComment ( void )
public string KTaglib_Tag::getGenre ( void )
public string KTaglib_Tag::getTitle ( void )
public int KTaglib_Tag::getTrack ( void )
public int KTaglib_Tag::getYear ( void )
public bool KTaglib_Tag::isEmpty ( void )
}

Table of Contents

  • KTaglib_ID3v2_Tag::addFrame — Add a frame to the ID3v2 tag
  • KTaglib_ID3v2_Tag::getFrameList — Returns an array of ID3v2 frames, associated with the ID3v2 tag
KTaglib_Tag::isEmpty
KTaglib_ID3v2_Tag::addFrame
KTaglib


Add a frame to the ID3v2 tag

KTaglib_ID3v2_Tag
KTaglib_ID3v2_Tag::getFrameList
KTaglib_ID3v2_Tag
PHP Manual

KTaglib_ID3v2_Tag::addFrame

(0.0.1)

KTaglib_ID3v2_Tag::addFrame — Add a frame to the ID3v2 tag

说明

public bool KTaglib_ID3v2_Tag::addFrame ( KTaglib_ID3v2_Frame $frame )

Adds a frame to the ID3v2 tag. The frame must be a valid KTaglib_ID3v2_Frame object. To save the tag, the save function needs to be invoked.

返回值

Returns true on success, otherwise false.

KTaglib_ID3v2_Tag
KTaglib_ID3v2_Tag::getFrameList
KTaglib_ID3v2_Tag


Returns an array of ID3v2 frames, associated with the ID3v2 tag

KTaglib_ID3v2_Tag::addFrame
KTaglib_ID3v2_Frame
KTaglib_ID3v2_Tag
PHP Manual

KTaglib_ID3v2_Tag::getFrameList

(0.0.1)

KTaglib_ID3v2_Tag::getFrameList — Returns an array of ID3v2 frames, associated with the ID3v2 tag

说明

public array KTaglib_ID3v2_Tag::getFrameList ( void )

Returns an array of ID3v2 frames, associated with the ID3v2 tag.

返回值

Return an array of KTaglib_ID3v2_Frame objects

KTaglib_ID3v2_Tag::addFrame
KTaglib_ID3v2_Frame
KTaglib_ID3v2_Tag


The KTaglib_ID3v2_Frame class

(0.0.1)

简介

The base class for ID3v2 frames. ID3v2 tags are separated in various specialized frames. Some frames can exists multiple times.

Class synopsis

extends KTaglib_Tag {
/* 方法 */
public int getSize ( void )
public string __toString ( void )
/* 继承的方法 */
public string KTaglib_Tag::getAlbum ( void )
public string KTaglib_Tag::getArtist ( void )
public string KTaglib_Tag::getComment ( void )
public string KTaglib_Tag::getGenre ( void )
public string KTaglib_Tag::getTitle ( void )
public int KTaglib_Tag::getTrack ( void )
public int KTaglib_Tag::getYear ( void )
public bool KTaglib_Tag::isEmpty ( void )
}

Table of Contents

  • KTaglib_ID3v2_Frame::getSize — Returns the size of the frame in bytes
  • KTaglib_ID3v2_Frame::__toString — Returns a string representation of the frame
KTaglib_ID3v2_Tag::getFrameList
KTaglib_ID3v2_Frame::getSize
KTaglib


Returns the size of the frame in bytes

KTaglib_ID3v2_Frame
KTaglib_ID3v2_Frame::__toString
KTaglib_ID3v2_Frame
PHP Manual

KTaglib_ID3v2_Frame::getSize

(0.0.1)

KTaglib_ID3v2_Frame::getSize — Returns the size of the frame in bytes

说明

public int KTaglib_ID3v2_Frame::getSize ( void )

Returns the size of the frame in bytes. Please refer to id3.org to see what ID3v2 frames are and how they are defined.

返回值

Returns the size of the frame in bytes

KTaglib_ID3v2_Frame
KTaglib_ID3v2_Frame::__toString
KTaglib_ID3v2_Frame


Returns a string representation of the frame

KTaglib_ID3v2_Frame::getSize
KTaglib_ID3v2_AttachedPictureFrame
KTaglib_ID3v2_Frame
PHP Manual

KTaglib_ID3v2_Frame::__toString

(0.0.1)

KTaglib_ID3v2_Frame::__toString — Returns a string representation of the frame

说明

public string KTaglib_ID3v2_Frame::__toString ( void )

Returns a string representation of the frame. This might be just the frame id, but might contain more information. Please see the ktaglib documentation for more information

返回值

Returns a string representation of the frame.

KTaglib_ID3v2_Frame::getSize
KTaglib_ID3v2_AttachedPictureFrame
KTaglib_ID3v2_Frame


The KTaglib_ID3v2_AttachedPictureFrame class

(0.0.1)

简介

Represents an ID3v2 frame that can hold a picture.

Class synopsis

extends KTaglib_ID3v2_Frame {
/* 方法 */
public string getDescription ( void )
public string getMimeType ( void )
public int getType ( void )
public bool savePicture ( string $filename )
public string getMimeType ( string $type )
public void setPicture ( string $filename )
public void setType ( int $type )
/* 继承的方法 */
public int KTaglib_ID3v2_Frame::getSize ( void )
public string KTaglib_ID3v2_Frame::__toString ( void )
public string KTaglib_Tag::getAlbum ( void )
public string KTaglib_Tag::getArtist ( void )
public string KTaglib_Tag::getComment ( void )
public string KTaglib_Tag::getGenre ( void )
public string KTaglib_Tag::getTitle ( void )
public int KTaglib_Tag::getTrack ( void )
public int KTaglib_Tag::getYear ( void )
public bool KTaglib_Tag::isEmpty ( void )
}

Table of Contents

  • KTaglib_ID3v2_AttachedPictureFrame::getDescription — Returns a description for the picture in a picture frame
  • KTaglib_ID3v2_AttachedPictureFrame::getMimeType — Returns the mime type of the picture
  • KTaglib_ID3v2_AttachedPictureFrame::getType — Returns the type of the image
  • KTaglib_ID3v2_AttachedPictureFrame::savePicture — Saves the picture to a file
  • KTaglib_ID3v2_AttachedPictureFrame::setMimeType — Set's the mime type of the picture
  • KTaglib_ID3v2_AttachedPictureFrame::setPicture — Sets the frame picture to the given image
  • KTaglib_ID3v2_AttachedPictureFrame::setType — Set the type of the image
KTaglib_ID3v2_Frame::__toString
KTaglib_ID3v2_AttachedPictureFrame::getDescription
KTaglib


Returns a description for the picture in a picture frame

KTaglib_ID3v2_AttachedPictureFrame
KTaglib_ID3v2_AttachedPictureFrame::getMimeType
KTaglib_ID3v2_AttachedPictureFrame
PHP Manual

KTaglib_ID3v2_AttachedPictureFrame::getDescription

(0.0.1)

KTaglib_ID3v2_AttachedPictureFrame::getDescription — Returns a description for the picture in a picture frame

说明

public string KTaglib_ID3v2_AttachedPictureFrame::getDescription ( void )

Returns the attached description for a picture frame in an ID3v2.x frame.

返回值

Returns a description for the picture in a picture frame

KTaglib_ID3v2_AttachedPictureFrame
KTaglib_ID3v2_AttachedPictureFrame::getMimeType
KTaglib_ID3v2_AttachedPictureFrame


Returns the mime type of the picture

KTaglib_ID3v2_AttachedPictureFrame::getDescription
KTaglib_ID3v2_AttachedPictureFrame::getType
KTaglib_ID3v2_AttachedPictureFrame
PHP Manual

KTaglib_ID3v2_AttachedPictureFrame::getMimeType

(0.2.0)

KTaglib_ID3v2_AttachedPictureFrame::getMimeType — Returns the mime type of the picture

说明

public string KTaglib_ID3v2_AttachedPictureFrame::getMimeType ( void )

Returns the mime type of the image represented by the attached picture frame.

Please notice that this method might return different types. While ID3v2.2 have a mime type that doesn't start with "image/", ID3v2.3 and v2.4 usually start with "image/". Therefore the method might return "image/png" for IDv2.3 frames and just "PNG" for ID3v2.2 frames.

Notice that even the frame is an attached picture, the mime type might not be set and therefore an empty string might be returned.

返回值

Returns the mime type of the image represented by the attached picture frame.

KTaglib_ID3v2_AttachedPictureFrame::getDescription
KTaglib_ID3v2_AttachedPictureFrame::getType
KTaglib_ID3v2_AttachedPictureFrame


Returns the type of the image

KTaglib_ID3v2_AttachedPictureFrame::getMimeType
KTaglib_ID3v2_AttachedPictureFrame::savePicture
KTaglib_ID3v2_AttachedPictureFrame
PHP Manual

KTaglib_ID3v2_AttachedPictureFrame::getType

(0.2.0)

KTaglib_ID3v2_AttachedPictureFrame::getType — Returns the type of the image

说明

public int KTaglib_ID3v2_AttachedPictureFrame::getType ( void )

Returns the type of the image.

The ID3v2 specification allows an AttachedPictureFrame to set the type of an image. This can be e.g. FrontCover or FileIcon. Please refer to the KTaglib_ID3v2_AttachedPictureFrame class description for a list of available types.

返回值

Returns the integer representation of the type.

KTaglib_ID3v2_AttachedPictureFrame::getMimeType
KTaglib_ID3v2_AttachedPictureFrame::savePicture
KTaglib_ID3v2_AttachedPictureFrame


Saves the picture to a file

KTaglib_ID3v2_AttachedPictureFrame::getType
KTaglib_ID3v2_AttachedPictureFrame::setMimeType
KTaglib_ID3v2_AttachedPictureFrame
PHP Manual

KTaglib_ID3v2_AttachedPictureFrame::savePicture

(0.0.1)

KTaglib_ID3v2_AttachedPictureFrame::savePicture — Saves the picture to a file

说明

public bool KTaglib_ID3v2_AttachedPictureFrame::savePicture ( string $filename )

Saves the attached picture to the given filename.

返回值

Returns true on success, otherwise false

KTaglib_ID3v2_AttachedPictureFrame::getType
KTaglib_ID3v2_AttachedPictureFrame::setMimeType
KTaglib_ID3v2_AttachedPictureFrame


Set's the mime type of the picture

KTaglib_ID3v2_AttachedPictureFrame::savePicture
KTaglib_ID3v2_AttachedPictureFrame::setPicture
KTaglib_ID3v2_AttachedPictureFrame
PHP Manual

KTaglib_ID3v2_AttachedPictureFrame::setMimeType

(0.2.0)

KTaglib_ID3v2_AttachedPictureFrame::setMimeType — Set's the mime type of the picture

说明

public string KTaglib_ID3v2_AttachedPictureFrame::getMimeType ( string $type )

Sets the mime type of the image. This should in most cases be "image/png" or "image/jpeg".

KTaglib_ID3v2_AttachedPictureFrame::savePicture
KTaglib_ID3v2_AttachedPictureFrame::setPicture
KTaglib_ID3v2_AttachedPictureFrame


Sets the frame picture to the given image

KTaglib_ID3v2_AttachedPictureFrame::setMimeType
KTaglib_ID3v2_AttachedPictureFrame::setType
KTaglib_ID3v2_AttachedPictureFrame
PHP Manual

KTaglib_ID3v2_AttachedPictureFrame::setPicture

(0.0.1)

KTaglib_ID3v2_AttachedPictureFrame::setPicture — Sets the frame picture to the given image

说明

public void KTaglib_ID3v2_AttachedPictureFrame::setPicture ( string $filename )

Sets the picture to the give image. The image is loaded from the given filename. Please note that the picture is not saved unless you call the save method of the corresponding file object.

返回值

Returns true on success, otherwise false

KTaglib_ID3v2_AttachedPictureFrame::setMimeType
KTaglib_ID3v2_AttachedPictureFrame::setType
KTaglib_ID3v2_AttachedPictureFrame


Set the type of the image

KTaglib_ID3v2_AttachedPictureFrame::setPicture
oggvorbis
KTaglib_ID3v2_AttachedPictureFrame
PHP Manual

KTaglib_ID3v2_AttachedPictureFrame::setType

(0.2.0)

KTaglib_ID3v2_AttachedPictureFrame::setType — Set the type of the image

说明

public void KTaglib_ID3v2_AttachedPictureFrame::setType ( int $type )

Sets the type of the image. This can be e.g. FrontCover or FileIcon. Please refer to the KTaglib_ID3v2_AttachedPictureFrame class description for a list of available types and their constant mappings.

KTaglib_ID3v2_AttachedPictureFrame::setPicture
oggvorbis
KTaglib_ID3v2_AttachedPictureFrame


OGG/Vorbis

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Context options
  • 范例
    • Examples on using the ogg:// wrapper.
KTaglib_ID3v2_AttachedPictureFrame::setType
简介
音频格式操作


简介

The OGG/Vorbis file format, as defined by » http://www.vorbis.com/, is a scheme for compressing audio streams by multiple factors with a minimum of quality loss. This extension adds Ogg Vorbis support to PHP's URL Wrappers. When used in read mode, compressed OGG/Vorbis data is expanded to raw PCM audio in one of six PCM encoding formats listed in the predefined constants section.

oggvorbis
安装／配置
oggvorbis


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
oggvorbis


需求

This extension requires PHP >= 4.3.0, » libogg >= 1.0, and » libvorbis >= 1.0.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/oggvorbis

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

OGG/Vorbis supports PCM encodings in the following formats
Constant | Definition
OGGVORBIS_PCM_U8 | Unsigned 8-bit PCM.
OGGVORBIS_PCM_S8 | Signed 8-bit PCM.
OGGVORBIS_PCM_U16_LE | Unsigned 16-bit PCM. Little Endian byte order.
OGGVORBIS_PCM_U16_BE | Unsigned 16-bit PCM. Big Endian byte order.
OGGVORBIS_PCM_S16_LE | Signed 16-bit PCM. Little Endian byte order.
OGGVORBIS_PCM_S16_BE | Signed 16-bit PCM. Big Endian byte order.
资源类型
Context options
oggvorbis


Context options

OGG/Vorbis tuning options
Option | Definition | Relevance | Default
pcm_mode | PCM byte encoding used. See constants below. | Read / Write | OGGVORBIS_PCM_S16_LE
rate | PCM Sampling rate. Measured in Hz. | Write only | 44100
bitrate | Vorbis Average Bitrate Encoding / Variable Bitrate Encoding. Measured in bps (ABR) or Quality level (VBR: 0.0 to 1.0). 128000 ABR is rough equal to 0.4 VBR. | Write only | 128000
channels | Number of PCM channels. 1 == Mono, 2 == Stereo. | Write only | 2
serialno | Serial Number of stream within file. Must be unique within file. Because of the potential to select a duplicate serial number within a chained file, make efforts to manually assign unique numbers when encoding. | Write only | Random
comments | Associative array of file comments. Will be translated to strtoupper($name) . "=$value". Note: This context option is not available in oggvorbis-0.1 | Write only | array('ENCODER' => 'PHP/OggVorbis, http://pear.php.net/oggvorbis')
预定义常量
范例
oggvorbis


范例

Table of Contents

  • Examples on using the ogg:// wrapper.
Context options
Examples on using the ogg:// wrapper.
oggvorbis


Examples on using the ogg:// wrapper.

Example #1 Reading an OGG/Vorbis file

<?php
dl("oggvorbis.so");

/* By default, ogg:// will decode to Signed 16-bit Little Endian */
$fp = fopen('ogg://myaudio.ogg', 'r');

/* Collect some information about the file. */
$metadata = stream_get_meta_data($fp);

/* Inspect the first song (usually the only song,
   but OGG/Vorbis files may be chained) */
$songdata = $metadata['wrapper_data'][0];

echo "OGG/Vorbis file encoded by: {$songdata['vendor']}\n.";
echo "  {$songdata['channels']} channels of {$songdata['rate']}Hz sampling encoded at {$songdata['bitrate_nominal']}bps.\n";
foreach($songdata['comments'] as $comment) {
    echo "  $comment\n";
}

while ($audio_data = fread($fp, 8192)) {
  /* Do something with the PCM audio we're extracting from the OGG.
     Copying to /dev/dsp is a good target on linux systems,
     just remember to setup the device for your sampling mode first. */
}

fclose($fp);

?>

Example #2 Encode an audio file to OGG/Vorbis

<?php
dl('oggvorbis.so');

$context = stream_context_create(array('ogg'=>array(
             'pcm_mode' => OGGVORBIS_PCM_S8,  /* Signed 8bit audio */
             'rate' => 44100,                 /* 44kHz CD quality */
             'bitrate' => 0.5,                /* Midquality VBR */
             'channels' => 1,                 /* Mono */
             'serialno' => 12345)));          /* Unique within our stream */

/* Open file for appending.  This will "chain" a second OGG stream at the end of the first. */
$ogg = fopen('ogg://mysong.ogg', 'a', false, $context);

$pcm = fopen('mysample.pcm', 'r');

/* Compress the raw PCM audio from mysample.pcm into mysong.ogg */
stream_copy_to_stream($pcm, $ogg);

fclose($pcm);
fclose($ogg);
?>

范例
OpenAL
范例


OpenAL Audio Bindings

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • OpenAL 函数
    • openal_buffer_create — Generate OpenAL buffer
    • openal_buffer_data — Load a buffer with data
    • openal_buffer_destroy — Destroys an OpenAL buffer
    • openal_buffer_get — Retrieve an OpenAL buffer property
    • openal_buffer_loadwav — Load a .wav file into a buffer
    • openal_context_create — Create an audio processing context
    • openal_context_current — Make the specified context current
    • openal_context_destroy — Destroys a context
    • openal_context_process — Process the specified context
    • openal_context_suspend — Suspend the specified context
    • openal_device_close — Close an OpenAL device
    • openal_device_open — Initialize the OpenAL audio layer
    • openal_listener_get — Retrieve a listener property
    • openal_listener_set — Set a listener property
    • openal_source_create — Generate a source resource
    • openal_source_destroy — Destroy a source resource
    • openal_source_get — Retrieve an OpenAL source property
    • openal_source_pause — Pause the source
    • openal_source_play — Start playing the source
    • openal_source_rewind — Rewind the source
    • openal_source_set — Set source property
    • openal_source_stop — Stop playing the source
    • openal_stream — Begin streaming on a source
Examples on using the ogg:// wrapper.
简介
音频格式操作


简介

Platform independent audio bindings. Requires the » OpenAL library.

OpenAL
安装／配置
OpenAL


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
OpenAL


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/openal.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


资源类型

This extension defines four resource types:
Open AL(Device) - Returned by openal_device_open(),
Open AL(Context) - Returned by openal_context_create(),
Open AL(Buffer) - Returned by openal_buffer_create(),
and Open AL(Source) - Returned by openal_source_create().

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

ALC_FREQUENCY (integer)
Context Attribute
ALC_REFRESH (integer)
Context Attribute
ALC_SYNC (integer)
Context Attribute
AL_FREQUENCY (integer)
Buffer Setting
AL_BITS (integer)
Buffer Setting
AL_CHANNELS (integer)
Buffer Setting
AL_SIZE (integer)
Buffer Setting
AL_BUFFER (integer)
Source/Listener Setting (Integer)
AL_SOURCE_RELATIVE (integer)
Source/Listener Setting (Integer)
AL_SOURCE_STATE (integer)
Source/Listener Setting (Integer)
AL_PITCH (integer)
Source/Listener Setting (Float)
AL_GAIN (integer)
Source/Listener Setting (Float)
AL_MIN_GAIN (integer)
Source/Listener Setting (Float)
AL_MAX_GAIN (integer)
Source/Listener Setting (Float)
AL_MAX_DISTANCE (integer)
Source/Listener Setting (Float)
AL_ROLLOFF_FACTOR (integer)
Source/Listener Setting (Float)
AL_CONE_OUTER_GAIN (integer)
Source/Listener Setting (Float)
AL_CONE_INNER_ANGLE (integer)
Source/Listener Setting (Float)
AL_CONE_OUTER_ANGLE (integer)
Source/Listener Setting (Float)
AL_REFERENCE_DISTANCE (integer)
Source/Listener Setting (Float)
AL_POSITION (integer)
Source/Listener Setting (Float Vector)
AL_VELOCITY (integer)
Source/Listener Setting (Float Vector)
AL_DIRECTION (integer)
Source/Listener Setting (Float Vector)
AL_ORIENTATION (integer)
Source/Listener Setting (Float Vector)
AL_FORMAT_MONO8 (integer)
PCM Format
AL_FORMAT_MONO16 (integer)
PCM Format
AL_FORMAT_STEREO8 (integer)
PCM Format
AL_FORMAT_STEREO16 (integer)
PCM Format
AL_INITIAL (integer)
Source State
AL_PLAYING (integer)
Source State
AL_PAUSED (integer)
Source State
AL_STOPPED (integer)
Source State
AL_LOOPING (integer)
Source State
AL_TRUE (integer)
Boolean value recognized by OpenAL
AL_FALSE (integer)
Boolean value recognized by OpenAL
资源类型
OpenAL 函数
OpenAL


OpenAL 函数

Table of Contents

  • openal_buffer_create — Generate OpenAL buffer
  • openal_buffer_data — Load a buffer with data
  • openal_buffer_destroy — Destroys an OpenAL buffer
  • openal_buffer_get — Retrieve an OpenAL buffer property
  • openal_buffer_loadwav — Load a .wav file into a buffer
  • openal_context_create — Create an audio processing context
  • openal_context_current — Make the specified context current
  • openal_context_destroy — Destroys a context
  • openal_context_process — Process the specified context
  • openal_context_suspend — Suspend the specified context
  • openal_device_close — Close an OpenAL device
  • openal_device_open — Initialize the OpenAL audio layer
  • openal_listener_get — Retrieve a listener property
  • openal_listener_set — Set a listener property
  • openal_source_create — Generate a source resource
  • openal_source_destroy — Destroy a source resource
  • openal_source_get — Retrieve an OpenAL source property
  • openal_source_pause — Pause the source
  • openal_source_play — Start playing the source
  • openal_source_rewind — Rewind the source
  • openal_source_set — Set source property
  • openal_source_stop — Stop playing the source
  • openal_stream — Begin streaming on a source
预定义常量
openal_buffer_create
OpenAL


Generate OpenAL buffer

OpenAL 函数
openal_buffer_data
OpenAL 函数
PHP Manual

openal_buffer_create

(PECL openal >= 0.1.0)

openal_buffer_create — Generate OpenAL buffer

说明

resource openal_buffer_create ( void )

返回值

Returns an Open AL(Buffer) resource on success or FALSE on failure.

参见

  • openal_buffer_loadwav() - Load a .wav file into a buffer
  • openal_buffer_data() - Load a buffer with data

OpenAL 函数
openal_buffer_data
OpenAL 函数


Load a buffer with data

openal_buffer_create
openal_buffer_destroy
OpenAL 函数
PHP Manual

openal_buffer_data

(PECL openal >= 0.1.0)

openal_buffer_data — Load a buffer with data

说明

bool openal_buffer_data ( resource $buffer , int $format , string $data , int $freq )

参数

buffer

An Open AL(Buffer) resource (previously created by openal_buffer_create()).

format

Format of data, one of: AL_FORMAT_MONO8, AL_FORMAT_MONO16, AL_FORMAT_STEREO8 和 AL_FORMAT_STEREO16

data

Block of binary audio data in the format and freq specified.

freq

Frequency of data given in Hz.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • openal_buffer_loadwav() - Load a .wav file into a buffer
  • openal_stream() - Begin streaming on a source

openal_buffer_create
openal_buffer_destroy
OpenAL 函数


Destroys an OpenAL buffer

openal_buffer_data
openal_buffer_get
OpenAL 函数
PHP Manual

openal_buffer_destroy

(PECL openal >= 0.1.0)

openal_buffer_destroy — Destroys an OpenAL buffer

说明

bool openal_buffer_destroy ( resource $buffer )

参数

buffer

An Open AL(Buffer) resource (previously created by openal_buffer_create()).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • openal_buffer_create() - Generate OpenAL buffer

openal_buffer_data
openal_buffer_get
OpenAL 函数


Retrieve an OpenAL buffer property

openal_buffer_destroy
openal_buffer_loadwav
OpenAL 函数
PHP Manual

openal_buffer_get

(PECL openal >= 0.1.0)

openal_buffer_get — Retrieve an OpenAL buffer property

说明

int openal_buffer_get ( resource $buffer , int $property )

参数

buffer

An Open AL(Buffer) resource (previously created by openal_buffer_create()).

property

Specific property, one of: AL_FREQUENCY, AL_BITS, AL_CHANNELS 和 AL_SIZE.

返回值

Returns an integer value appropriate to the property requested 或者在失败时返回 FALSE.

参见

  • openal_buffer_create() - Generate OpenAL buffer

openal_buffer_destroy
openal_buffer_loadwav
OpenAL 函数


Load a .wav file into a buffer

openal_buffer_get
openal_context_create
OpenAL 函数
PHP Manual

openal_buffer_loadwav

(PECL openal >= 0.1.0)

openal_buffer_loadwav — Load a .wav file into a buffer

说明

bool openal_buffer_loadwav ( resource $buffer , string $wavfile )

参数

buffer

An Open AL(Buffer) resource (previously created by openal_buffer_create()).

wavfile

Path to .wav file on local file system.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • openal_buffer_data() - Load a buffer with data
  • openal_stream() - Begin streaming on a source

openal_buffer_get
openal_context_create
OpenAL 函数


Create an audio processing context

openal_buffer_loadwav
openal_context_current
OpenAL 函数
PHP Manual

openal_context_create

(PECL openal >= 0.1.0)

openal_context_create — Create an audio processing context

说明

resource openal_context_create ( resource $device )

参数

device

An Open AL(Device) resource (previously created by openal_device_open()).

返回值

Returns an Open AL(Context) resource on success or FALSE on failure.

参见

  • openal_device_open() - Initialize the OpenAL audio layer
  • openal_context_destroy() - Destroys a context

openal_buffer_loadwav
openal_context_current
OpenAL 函数


Make the specified context current

openal_context_create
openal_context_destroy
OpenAL 函数
PHP Manual

openal_context_current

(PECL openal >= 0.1.0)

openal_context_current — Make the specified context current

说明

bool openal_context_current ( resource $context )

参数

context

An Open AL(Context) resource (previously created by openal_context_create()).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • openal_context_create() - Create an audio processing context

openal_context_create
openal_context_destroy
OpenAL 函数


Destroys a context

openal_context_current
openal_context_process
OpenAL 函数
PHP Manual

openal_context_destroy

(PECL openal >= 0.1.0)

openal_context_destroy — Destroys a context

说明

bool openal_context_destroy ( resource $context )

参数

context

An Open AL(Context) resource (previously created by openal_context_create()).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • openal_context_create() - Create an audio processing context

openal_context_current
openal_context_process
OpenAL 函数


Process the specified context

openal_context_destroy
openal_context_suspend
OpenAL 函数
PHP Manual

openal_context_process

(PECL openal >= 0.1.0)

openal_context_process — Process the specified context

说明

bool openal_context_process ( resource $context )

参数

context

An Open AL(Context) resource (previously created by openal_context_create()).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • openal_context_create() - Create an audio processing context
  • openal_context_current() - Make the specified context current
  • openal_context_suspend() - Suspend the specified context

openal_context_destroy
openal_context_suspend
OpenAL 函数


Suspend the specified context

openal_context_process
openal_device_close
OpenAL 函数
PHP Manual

openal_context_suspend

(PECL openal >= 0.1.0)

openal_context_suspend — Suspend the specified context

说明

bool openal_context_suspend ( resource $context )

参数

context

An Open AL(Context) resource (previously created by openal_context_create()).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • openal_context_create() - Create an audio processing context
  • openal_context_current() - Make the specified context current
  • openal_context_process() - Process the specified context

openal_context_process
openal_device_close
OpenAL 函数


Close an OpenAL device

openal_context_suspend
openal_device_open
OpenAL 函数
PHP Manual

openal_device_close

(PECL openal >= 0.1.0)

openal_device_close — Close an OpenAL device

说明

bool openal_device_close ( resource $device )

参数

device

An Open AL(Device) resource (previously created by openal_device_open()) to be closed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • openal_device_open() - Initialize the OpenAL audio layer

openal_context_suspend
openal_device_open
OpenAL 函数


Initialize the OpenAL audio layer

openal_device_close
openal_listener_get
OpenAL 函数
PHP Manual

openal_device_open

(PECL openal >= 0.1.0)

openal_device_open — Initialize the OpenAL audio layer

说明

resource openal_device_open ([ string $device_desc ] )

参数

device_desc

Open an audio device optionally specified by device_desc. If device_desc is not specified the first available audio device will be used.

返回值

Returns an Open AL(Device) resource on success or FALSE on failure.

参见

  • openal_device_close() - Close an OpenAL device
  • openal_context_create() - Create an audio processing context

openal_device_close
openal_listener_get
OpenAL 函数


Retrieve a listener property

openal_device_open
openal_listener_set
OpenAL 函数
PHP Manual

openal_listener_get

(PECL openal >= 0.1.0)

openal_listener_get — Retrieve a listener property

说明

mixed openal_listener_get ( int $property )

参数

property

Property to retrieve, one of:
AL_GAIN (float),
AL_POSITION (array(float,float,float)),
AL_VELOCITY (array(float,float,float)) 和
AL_ORIENTATION (array(float,float,float)).

返回值

Returns a float or array of floats (as appropriate) 或者在失败时返回 FALSE.

参见

  • openal_listener_set() - Set a listener property

openal_device_open
openal_listener_set
OpenAL 函数


Set a listener property

openal_listener_get
openal_source_create
OpenAL 函数
PHP Manual

openal_listener_set

(PECL openal >= 0.1.0)

openal_listener_set — Set a listener property

说明

bool openal_listener_set ( int $property , mixed $setting )

参数

property

Property to set, one of:
AL_GAIN (float),
AL_POSITION (array(float,float,float)),
AL_VELOCITY (array(float,float,float)) 和
AL_ORIENTATION (array(float,float,float)).

setting

Value to set, either float, or an array of floats as appropriate.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • openal_listener_get() - Retrieve a listener property

openal_listener_get
openal_source_create
OpenAL 函数


Generate a source resource

openal_listener_set
openal_source_destroy
OpenAL 函数
PHP Manual

openal_source_create

(PECL openal >= 0.1.0)

openal_source_create — Generate a source resource

说明

resource openal_source_create ( void )

返回值

Returns an Open AL(Source) resource on success or FALSE on failure.

参见

  • openal_source_set() - Set source property
  • openal_source_play() - Start playing the source
  • openal_source_destroy() - Destroy a source resource

openal_listener_set
openal_source_destroy
OpenAL 函数


Destroy a source resource

openal_source_create
openal_source_get
OpenAL 函数
PHP Manual

openal_source_destroy

(PECL openal >= 0.1.0)

openal_source_destroy — Destroy a source resource

说明

bool openal_source_destroy ( resource $source )

参数

source

An Open AL(Source) resource (previously created by openal_source_create()).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • openal_source_create() - Generate a source resource

openal_source_create
openal_source_get
OpenAL 函数


Retrieve an OpenAL source property

openal_source_destroy
openal_source_pause
OpenAL 函数
PHP Manual

openal_source_get

(PECL openal >= 0.1.0)

openal_source_get — Retrieve an OpenAL source property

说明

mixed openal_source_get ( resource $source , int $property )

参数

source

An Open AL(Source) resource (previously created by openal_source_create()).

property

Property to get, one of: AL_SOURCE_RELATIVE (int), AL_SOURCE_STATE (int), AL_PITCH (float), AL_GAIN (float), AL_MIN_GAIN (float), AL_MAX_GAIN (float), AL_MAX_DISTANCE (float), AL_ROLLOFF_FACTOR (float), AL_CONE_OUTER_GAIN (float), AL_CONE_INNER_ANGLE (float), AL_CONE_OUTER_ANGLE (float), AL_REFERENCE_DISTANCE (float), AL_POSITION (array(float,float,float)), AL_VELOCITY (array(float,float,float)), AL_DIRECTION (array(float,float,float)).

返回值

Returns the type associated with the property being retrieved 或者在失败时返回 FALSE.

参见

  • openal_source_create() - Generate a source resource
  • openal_source_set() - Set source property
  • openal_source_play() - Start playing the source

openal_source_destroy
openal_source_pause
OpenAL 函数


Pause the source

openal_source_get
openal_source_play
OpenAL 函数
PHP Manual

openal_source_pause

(PECL openal >= 0.1.0)

openal_source_pause — Pause the source

说明

bool openal_source_pause ( resource $source )

参数

source

An Open AL(Source) resource (previously created by openal_source_create()).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • openal_source_stop() - Stop playing the source
  • openal_source_play() - Start playing the source
  • openal_source_rewind() - Rewind the source

openal_source_get
openal_source_play
OpenAL 函数


Start playing the source

openal_source_pause
openal_source_rewind
OpenAL 函数
PHP Manual

openal_source_play

(PECL openal >= 0.1.0)

openal_source_play — Start playing the source

说明

bool openal_source_play ( resource $source )

参数

source

An Open AL(Source) resource (previously created by openal_source_create()).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • openal_source_stop() - Stop playing the source
  • openal_source_pause() - Pause the source
  • openal_source_rewind() - Rewind the source

openal_source_pause
openal_source_rewind
OpenAL 函数


Rewind the source

openal_source_play
openal_source_set
OpenAL 函数
PHP Manual

openal_source_rewind

(PECL openal >= 0.1.0)

openal_source_rewind — Rewind the source

说明

bool openal_source_rewind ( resource $source )

参数

source

An Open AL(Source) resource (previously created by openal_source_create()).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • openal_source_stop() - Stop playing the source
  • openal_source_pause() - Pause the source
  • openal_source_play() - Start playing the source

openal_source_play
openal_source_set
OpenAL 函数


Set source property

openal_source_rewind
openal_source_stop
OpenAL 函数
PHP Manual

openal_source_set

(PECL openal >= 0.1.0)

openal_source_set — Set source property

说明

bool openal_source_set ( resource $source , int $property , mixed $setting )

参数

source

An Open AL(Source) resource (previously created by openal_source_create()).

property

Property to set, one of: AL_BUFFER (OpenAL(Source)), AL_LOOPING (bool), AL_SOURCE_RELATIVE (int), AL_SOURCE_STATE (int), AL_PITCH (float), AL_GAIN (float), AL_MIN_GAIN (float), AL_MAX_GAIN (float), AL_MAX_DISTANCE (float), AL_ROLLOFF_FACTOR (float), AL_CONE_OUTER_GAIN (float), AL_CONE_INNER_ANGLE (float), AL_CONE_OUTER_ANGLE (float), AL_REFERENCE_DISTANCE (float), AL_POSITION (array(float,float,float)), AL_VELOCITY (array(float,float,float)), AL_DIRECTION (array(float,float,float)).

setting

Value to assign to specified property. Refer to the description of property for a description of the value(s) expected.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • openal_source_create() - Generate a source resource
  • openal_source_get() - Retrieve an OpenAL source property
  • openal_source_play() - Start playing the source

openal_source_rewind
openal_source_stop
OpenAL 函数


Stop playing the source

openal_source_set
openal_stream
OpenAL 函数
PHP Manual

openal_source_stop

(PECL openal >= 0.1.0)

openal_source_stop — Stop playing the source

说明

bool openal_source_stop ( resource $source )

参数

source

An Open AL(Source) resource (previously created by openal_source_create()).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • openal_source_play() - Start playing the source
  • openal_source_pause() - Pause the source
  • openal_source_rewind() - Rewind the source

openal_source_set
openal_stream
OpenAL 函数


Begin streaming on a source

openal_source_stop
身份认证服务
OpenAL 函数
PHP Manual

openal_stream

(PECL openal >= 0.1.0)

openal_stream — Begin streaming on a source

说明

resource openal_stream ( resource $source , int $format , int $rate )

参数

source

An Open AL(Source) resource (previously created by openal_source_create()).

format

Format of data, one of: AL_FORMAT_MONO8, AL_FORMAT_MONO16, AL_FORMAT_STEREO8 和 AL_FORMAT_STEREO16

rate

Frequency of data to stream given in Hz.

返回值

Returns a stream resource on success 或者在失败时返回 FALSE.

参见

  • openal_source_create() - Generate a source resource
  • fwrite() - 写入文件（可安全用于二进制文件）

openal_source_stop
身份认证服务
OpenAL 函数


身份认证服务

  • KADM5 — Kerberos V
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • KADM5 函数
  • Radius
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Radius 函数
openal_stream
KADM5
函数参考


Kerberos V

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
    • Constants for Attribute Flags
    • Constants for Options
  • 范例
    • Basic usage
  • KADM5 函数
    • kadm5_chpass_principal — Changes the principal's password
    • kadm5_create_principal — Creates a kerberos principal with the given parameters
    • kadm5_delete_principal — Deletes a kerberos principal
    • kadm5_destroy — Closes the connection to the admin server and releases all related resources
    • kadm5_flush — Flush all changes to the Kerberos database
    • kadm5_get_policies — Gets all policies from the Kerberos database
    • kadm5_get_principal — Gets the principal's entries from the Kerberos database
    • kadm5_get_principals — Gets all principals from the Kerberos database
    • kadm5_init_with_password — Opens a connection to the KADM5 library
    • kadm5_modify_principal — Modifies a kerberos principal with the given parameters
身份认证服务
简介
身份认证服务


简介

These package allows you to access Kerberos V administration servers. You can create, modify, and delete Kerberos V principals and policies.

More information about Kerberos can be found at » http://web.mit.edu/kerberos/www/.

Documentation for Kerberos and KADM5 can be found at » http://web.mit.edu/kerberos/www/krb5-1.2/krb5-1.2.8/doc/admin_toc.html.

KADM5
安装／配置
KADM5


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
KADM5


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/kadm5.

Note:

If this option is used without specifying the path to KADM5, PHP will use the built-in KADM5 client libraries. Users who run other applications that use KADM5 (for example, running PHP 4 and PHP 5 as concurrent apache modules, or auth-kadm5) should always specify the path to KADM5: --with-kadm5=/path/to/kadm5. This will force PHP to use the client libraries installed by KADM5, avoiding any conflicts.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


资源类型

This extension defines a KADM5 handle returned by kadm5_init_with_password().

运行时配置
预定义常量
安装／配置


预定义常量

Table of Contents

  • Constants for Attribute Flags
  • Constants for Options

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

资源类型
Constants for Attribute Flags
KADM5


Constants for Attribute Flags

The functions kadm5_create_principal(),
kadm5_modify_principal(), and
kadm5_modify_principal() allow to specify
special attributes using a bitfield. The symbols are defined below:

Attributes for use by the KDC
constant
KRB5_KDB_DISALLOW_POSTDATED
KRB5_KDB_DISALLOW_FORWARDABLE
KRB5_KDB_DISALLOW_TGT_BASED
KRB5_KDB_DISALLOW_RENEWABLE
KRB5_KDB_DISALLOW_PROXIABLE
KRB5_KDB_DISALLOW_DUP_SKEY
KRB5_KDB_DISALLOW_ALL_TIX
KRB5_KDB_REQUIRES_PRE_AUTH
KRB5_KDB_REQUIRES_HW_AUTH
KRB5_KDB_REQUIRES_PWCHANGE
KRB5_KDB_DISALLOW_SVR
KRB5_KDB_PWCHANGE_SERVER
KRB5_KDB_SUPPORT_DESMD5
KRB5_KDB_NEW_PRINC

预定义常量
Constants for Options
预定义常量


Constants for Options

The functions kadm5_create_principal(),
kadm5_modify_principal(), and
kadm5_get_principal() allow to specify or return
principal's options as an associative array. The keys for the associative
array are defined as string constants below:

Options for creating/modifying/retrieving principals
constant | funcdef | description
KADM5_PRINCIPAL | long | The expire time of the princial as a Kerberos timestamp.
KADM5_PRINC_EXPIRE_TIME | long | The expire time of the princial as a Kerberos timestamp.
KADM5_LAST_PW_CHANGE | long | The time this principal's password was last changed.
KADM5_PW_EXPIRATION | long | The expire time of the principal's current password, as a Kerberos timestamp.
KADM5_MAX_LIFE | long | The maximum lifetime of any Kerberos ticket issued to this principal.
KADM5_MAX_RLIFE | long | The maximum renewable lifetime of any Kerberos ticket issued to or for this principal.
KADM5_MOD_NAME | string | The name of the Kerberos principal that most recently modified this principal.
KADM5_MOD_TIME | long | The time this principal was last modified, as a Kerberos timestamp.
KADM5_KVNO | long | The version of the principal's current key.
KADM5_POLICY | string | The name of the policy controlling this principal.
KADM5_CLEARPOLICY | long | Standard procedure is to assign the 'default' policy to new principals. KADM5_CLEARPOLICY suppresses this behaviour.
KADM5_LAST_SUCCESS | long | The KDC time of the last successfull AS_REQ.
KADM5_LAST_FAILED | long | The KDC time of the last failed AS_REQ.
KADM5_FAIL_AUTH_COUNT | long | The number of consecutive failed AS_REQs.
KADM5_RANDKEY | long | Generates a random password for the principal. The parameter password will be ignored.
KADM5_ATTRIBUTES | long | A bitfield of attributes for use by the KDC.

Constants for Attribute Flags
范例
预定义常量


范例

Table of Contents

  • Basic usage
Constants for Options
Basic usage
KADM5


Basic usage

This simple example shows how to connect, query, print resulting principals and disconnect from a KADM5 database.

Example #1 KADM5 extension overview example

<?php

  $handle = kadm5_init_with_password("afs-1", "GONICUS.LOCAL", "admin/admin", "password");

  print "<h1>get_principals</h1>\n";
  $principals = kadm5_get_principals($handle);
  for( $i=0; $i<count($principals); $i++)
      print "$principals[$i]<br>\n";

  print "<h1>get_policies</h1>\n";
  $policies = kadm5_get_policies($handle);
  for( $i=0; $i<count($policies); $i++)
      print "$policies[$i]<br>\n";

  print "<h1>get_principal burbach@GONICUS.LOCAL</h1>\n";

  $options = kadm5_get_principal($handle, "burbach@GONICUS.LOCAL" );
  $keys = array_keys($options);
  for( $i=0; $i<count($keys); $i++) {
    $value = $options[$keys[$i]];
    print "$keys[$i]: $value<br>\n";
  }

  $options = array(KADM5_PRINC_EXPIRE_TIME => 0);
  kadm5_modify_principal($handle, "burbach@GONICUS.LOCAL", $options);

  kadm5_destroy($handle);
?>

范例
KADM5 函数
范例


KADM5 函数

Table of Contents

  • kadm5_chpass_principal — Changes the principal's password
  • kadm5_create_principal — Creates a kerberos principal with the given parameters
  • kadm5_delete_principal — Deletes a kerberos principal
  • kadm5_destroy — Closes the connection to the admin server and releases all related resources
  • kadm5_flush — Flush all changes to the Kerberos database
  • kadm5_get_policies — Gets all policies from the Kerberos database
  • kadm5_get_principal — Gets the principal's entries from the Kerberos database
  • kadm5_get_principals — Gets all principals from the Kerberos database
  • kadm5_init_with_password — Opens a connection to the KADM5 library
  • kadm5_modify_principal — Modifies a kerberos principal with the given parameters
Basic usage
kadm5_chpass_principal
KADM5


Changes the principal's password

KADM5 函数
kadm5_create_principal
KADM5 函数
PHP Manual

kadm5_chpass_principal

(PECL kadm5 >= 0.2.3)

kadm5_chpass_principal — Changes the principal's password

说明

bool kadm5_chpass_principal ( resource $handle , string $principal , string $password )

kadm5_chpass_principal() sets the new password password for the principal.

参数

handle

A KADM5 handle.

principal

The principal.

password

The new password.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Example of changing principal's password

<?php

$handle = kadm5_init_with_password("afs-1", "GONICUS.LOCAL", "admin/admin", "password");

kadm5_chpass_principal($handle, "burbach@GONICUS.LOCAL", "newpassword");

kadm5_destroy($handle);
?>

KADM5 函数
kadm5_create_principal
KADM5 函数


Creates a kerberos principal with the given parameters

kadm5_chpass_principal
kadm5_delete_principal
KADM5 函数
PHP Manual

kadm5_create_principal

(PECL kadm5 >= 0.2.3)

kadm5_create_principal — Creates a kerberos principal with the given parameters

说明

bool kadm5_create_principal ( resource $handle , string $principal [, string $password [, array $options ]] )

Creates a principal with the given password.

参数

handle

A KADM5 handle.

principal

The principal.

password

If password is omitted or is NULL, a random key will be generated.

options

It is possible to specify several optional parameters within the array options. Allowed are the following options: KADM5_PRINC_EXPIRE_TIME, KADM5_PW_EXPIRATION, KADM5_ATTRIBUTES, KADM5_MAX_LIFE, KADM5_KVNO, KADM5_POLICY, KADM5_CLEARPOLICY, KADM5_MAX_RLIFE.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Example of principal's creation

<?php

$handle = kadm5_init_with_password("afs-1", "GONICUS.LOCAL", "admin/admin", "password");

$attributes = KRB5_KDB_REQUIRES_PRE_AUTH | KRB5_KDB_DISALLOW_PROXIABLE;
$options = array(KADM5_PRINC_EXPIRE_TIME => 0,
                 KADM5_POLICY => "default",
                 KADM5_ATTRIBUTES => $attributes);

kadm5_create_principal($handle, "burbach@GONICUS.LOCAL", "password", $options);

kadm5_destroy($handle);
?>

参见

  • kadm5_modify_principal() - Modifies a kerberos principal with the given parameters
  • kadm5_delete_principal() - Deletes a kerberos principal

kadm5_chpass_principal
kadm5_delete_principal
KADM5 函数


Deletes a kerberos principal

kadm5_create_principal
kadm5_destroy
KADM5 函数
PHP Manual

kadm5_delete_principal

(PECL kadm5 >= 0.2.3)

kadm5_delete_principal — Deletes a kerberos principal

说明

bool kadm5_delete_principal ( resource $handle , string $principal )

Removes the principal from the Kerberos database.

参数

handle

A KADM5 handle.

principal

The removed principal.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 kadm5_delete_principal() example

<?php

$handle = kadm5_init_with_password("afs-1", "GONICUS.LOCAL", "admin/admin", "password");

kadm5_delete_principal($handle, "burbach@GONICUS.LOCAL");

kadm5_destroy($handle);
?>

参见

  • kadm5_modify_principal() - Modifies a kerberos principal with the given parameters
  • kadm5_create_principal() - Creates a kerberos principal with the given parameters

kadm5_create_principal
kadm5_destroy
KADM5 函数


Closes the connection to the admin server and releases all related resources

kadm5_delete_principal
kadm5_flush
KADM5 函数
PHP Manual

kadm5_destroy

(PECL kadm5 >= 0.2.3)

kadm5_destroy — Closes the connection to the admin server and releases all related resources

说明

bool kadm5_destroy ( resource $handle )

Closes the connection to the admin server and releases all related resources.

参数

handle

A KADM5 handle.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • kadm5_init_with_password() - Opens a connection to the KADM5 library

kadm5_delete_principal
kadm5_flush
KADM5 函数


Flush all changes to the Kerberos database

kadm5_destroy
kadm5_get_policies
KADM5 函数
PHP Manual

kadm5_flush

(PECL kadm5 >= 0.2.3)

kadm5_flush — Flush all changes to the Kerberos database

说明

bool kadm5_flush ( resource $handle )

Flush all changes to the Kerberos database, leaving the connection to the Kerberos admin server open.

参数

handle

A KADM5 handle.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

kadm5_destroy
kadm5_get_policies
KADM5 函数


Gets all policies from the Kerberos database

kadm5_flush
kadm5_get_principal
KADM5 函数
PHP Manual

kadm5_get_policies

(PECL kadm5 >= 0.2.3)

kadm5_get_policies — Gets all policies from the Kerberos database

说明

array kadm5_get_policies ( resource $handle )

Gets an array containing the policies's names.

参数

handle

A KADM5 handle.

返回值

Returns array of policies on success 或者在失败时返回 FALSE.

范例

Example #1 kadm5_get_policies() example

<?php
$handle = kadm5_init_with_password("afs-1", "GONICUS.LOCAL", "admin/admin", "password");

print "<h1>get_policies</h1>\n";
foreach (kadm5_get_policies($handle) as $policy) {
    echo "$policy<br />\n";
}

kadm5_destroy($handle);
?>

kadm5_flush
kadm5_get_principal
KADM5 函数


Gets the principal's entries from the Kerberos database

kadm5_get_policies
kadm5_get_principals
KADM5 函数
PHP Manual

kadm5_get_principal

(PECL kadm5 >= 0.2.3)

kadm5_get_principal — Gets the principal's entries from the Kerberos database

说明

array kadm5_get_principal ( resource $handle , string $principal )

Gets the principal's entries from the Kerberos database.

参数

handle

A KADM5 handle.

principal

The principal.

返回值

Returns array of options containing the following keys: KADM5_PRINCIPAL, KADM5_PRINC_EXPIRE_TIME, KADM5_PW_EXPIRATION, KADM5_ATTRIBUTES, KADM5_MAX_LIFE, KADM5_MOD_NAME, KADM5_MOD_TIME, KADM5_KVNO, KADM5_POLICY, KADM5_MAX_RLIFE, KADM5_LAST_SUCCESS, KADM5_LAST_FAILED, KADM5_FAIL_AUTH_COUNT on success 或者在失败时返回 FALSE.

范例

Example #1 kadm5_get_principal() example

<?php
$handle = kadm5_init_with_password("afs-1", "GONICUS.LOCAL", "admin/admin", "password");

print "<h1>get_principal burbach@GONICUS.LOCAL</h1>\n";

$options = kadm5_get_principal($handle, "burbach@GONICUS.LOCAL" );

foreach ($options as $key => $value) {
    echo "$key: $value<br />\n";
}

kadm5_destroy($handle);
?>

参见

  • kadm5_get_principals() - Gets all principals from the Kerberos database

kadm5_get_policies
kadm5_get_principals
KADM5 函数


Gets all principals from the Kerberos database

kadm5_get_principal
kadm5_init_with_password
KADM5 函数
PHP Manual

kadm5_get_principals

(PECL kadm5 >= 0.2.3)

kadm5_get_principals — Gets all principals from the Kerberos database

说明

array kadm5_get_principals ( resource $handle )

kadm5_get_principals() returns an array containing the principals's names.

参数

handle

A KADM5 handle.

返回值

Returns array of principals on success 或者在失败时返回 FALSE.

范例

Example #1 kadm5_get_principals() example

<?php
$handle = kadm5_init_with_password("afs-1", "GONICUS.LOCAL", "admin/admin", "password");

print "<h1>get_principals</h1>\n";
foreach (kadm5_get_principals($handle) as $principal) {
    echo "$principal<br />\n";
}

kadm5_destroy($handle);
?>

参见

  • kadm5_get_principal() - Gets the principal's entries from the Kerberos database

kadm5_get_principal
kadm5_init_with_password
KADM5 函数


Opens a connection to the KADM5 library

kadm5_get_principals
kadm5_modify_principal
KADM5 函数
PHP Manual

kadm5_init_with_password

(PECL kadm5 >= 0.2.3)

kadm5_init_with_password — Opens a connection to the KADM5 library

说明

resource kadm5_init_with_password ( string $admin_server , string $realm , string $principal , string $password )

Opens a connection with the KADM5 library using the principal and the given password to obtain initial credentials from the admin_server.

参数

admin_server

The server.

realm

Defines the authentication domain for the connection.

principal

The principal.

password

If password is omitted or is NULL, a random key will be generated.

返回值

Returns a KADM5 handle on success 或者在失败时返回 FALSE.

范例

Example #1 KADM5 initialization example

<?php

$handle = kadm5_init_with_password("afs-1", "GONICUS.LOCAL", "admin/admin", "password");

$attributes = KRB5_KDB_REQUIRES_PRE_AUTH | KRB5_KDB_DISALLOW_PROXIABLE;
$options = array(KADM5_PRINC_EXPIRE_TIME => 0,
                 KADM5_POLICY => "default",
                 KADM5_ATTRIBUTES => $attributes);

kadm5_create_principal($handle, "burbach@GONICUS.LOCAL", "password", $options);

kadm5_destroy($handle);
?>

注释

Note:

Connection should be closed after use with kadm5_destroy().

参见

  • kadm5_destroy() - Closes the connection to the admin server and releases all related resources

kadm5_get_principals
kadm5_modify_principal
KADM5 函数


Modifies a kerberos principal with the given parameters

kadm5_init_with_password
Radius
KADM5 函数
PHP Manual

kadm5_modify_principal

(PECL kadm5 >= 0.2.3)

kadm5_modify_principal — Modifies a kerberos principal with the given parameters

说明

bool kadm5_modify_principal ( resource $handle , string $principal , array $options )

Modifies a principal according to the given options.

参数

handle

A KADM5 handle.

principal

The principal.

options

It is possible to specify several optional parameters within the array options. Allowed are the following options: KADM5_PRINC_EXPIRE_TIME, KADM5_PW_EXPIRATION, KADM5_ATTRIBUTES, KADM5_MAX_LIFE, KADM5_KVNO, KADM5_POLICY, KADM5_CLEARPOLICY, KADM5_MAX_RLIFE. KADM5_FAIL_AUTH_COUNT.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Example of modifying principal

<?php

$handle = kadm5_init_with_password("afs-1", "GONICUS.LOCAL", "admin/admin", "password");

$attributes = KRB5_KDB_REQUIRES_PRE_AUTH;
$options = array(KADM5_PRINC_EXPIRE_TIME => 3451234,
                 KADM5_POLICY => "gonicus",
                 KADM5_ATTRIBUTES => $attributes);

kadm5_modify_principal($handle, "burbach@GONICUS.LOCAL", $options);

kadm5_destroy($handle);
?>

参见

  • kadm5_create_principal() - Creates a kerberos principal with the given parameters
  • kadm5_delete_principal() - Deletes a kerberos principal

kadm5_init_with_password
Radius
KADM5 函数


Radius

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
    • RADIUS Options
    • RADIUS Packet Types
    • RADIUS Attribute Types
    • RADIUS Vendor Specific Attribute Types
  • 范例
  • Radius 函数
    • radius_acct_open — Creates a Radius handle for accounting
    • radius_add_server — Adds a server
    • radius_auth_open — Creates a Radius handle for authentication
    • radius_close — Frees all ressources
    • radius_config — Causes the library to read the given configuration file
    • radius_create_request — Create accounting or authentication request
    • radius_cvt_addr — Converts raw data to IP-Address
    • radius_cvt_int — Converts raw data to integer
    • radius_cvt_string — Converts raw data to string
    • radius_demangle_mppe_key — Derives mppe-keys from mangled data
    • radius_demangle — Demangles data
    • radius_get_attr — Extracts an attribute
    • radius_get_tagged_attr_data — Extracts the data from a tagged attribute
    • radius_get_tagged_attr_tag — Extracts the tag from a tagged attribute
    • radius_get_vendor_attr — Extracts a vendor specific attribute
    • radius_put_addr — Attaches an IP address attribute
    • radius_put_attr — Attaches a binary attribute
    • radius_put_int — Attaches an integer attribute
    • radius_put_string — Attaches a string attribute
    • radius_put_vendor_addr — Attaches a vendor specific IP address attribute
    • radius_put_vendor_attr — Attaches a vendor specific binary attribute
    • radius_put_vendor_int — Attaches a vendor specific integer attribute
    • radius_put_vendor_string — Attaches a vendor specific string attribute
    • radius_request_authenticator — Returns the request authenticator
    • radius_salt_encrypt_attr — Salt-encrypts a value
    • radius_send_request — Sends the request and waites for a reply
    • radius_server_secret — Returns the shared secret
    • radius_strerror — Returns an error message
kadm5_modify_principal
简介
身份认证服务


简介

This package is based on the libradius (Remote Authentication Dial In User Service) of FreeBSD. It allows clients to perform authentication and accounting by means of network requests to remote servers.

This PECL extension adds full support for Radius Authentication (» RFC 2865) and Radius Accounting (» RFC 2866). This package is available for Unix (tested on FreeBSD and Linux) and for Windows.

Note:

An exact description for libradius can be found » here. A detailed description of the configuration file can be found » here.

Radius
安装／配置
Radius


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Radius


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/radius.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


预定义常量

Table of Contents

  • RADIUS Options
  • RADIUS Packet Types
  • RADIUS Attribute Types
  • RADIUS Vendor Specific Attribute Types

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

RADIUS_MPPE_KEY_LEN (integer)
The maximum length of MPPE keys.
资源类型
RADIUS Options
Radius


RADIUS Options

Several RADIUS functions accept option flags as bitmasks. The constants representing those flags are listed below.

RADIUS_OPTION_SALT (integer)

When set, this option will result in the attribute value being salt-encrypted.

RADIUS_OPTION_TAGGED (integer)

When set, this option will result in the attribute value being tagged with the value of the tag parameter.

预定义常量
RADIUS Packet Types
预定义常量


RADIUS Packet Types

RADIUS packets, whether requests or responses, always include a type. These constants are provided to make it easier to specify types when using radius_create_request() and when comparing the result of radius_send_request().

RADIUS_ACCESS_REQUEST (integer)

An Access-Request, used to authenticate a user against a RADIUS server. Access request packets must include a RADIUS_NAS_IP_ADDRESS or a RADIUS_NAS_IDENTIFIER attribute, must also include a RADIUS_USER_PASSWORD, RADIUS_CHAP_PASSWORD or a RADIUS_STATE attribute, and should include a RADIUS_USER_NAME attribute.

RADIUS_ACCESS_ACCEPT (integer)

An Access-Accept response to an Access-Request indicating that the RADIUS server authenticated the user successfully.

RADIUS_ACCESS_REJECT (integer)

An Access-Reject response to an Access-Request indicating that the RADIUS server could not authenticate the user.

RADIUS_ACCESS_CHALLENGE (integer)

An Access-Challenge response to an Access-Request indicating that the RADIUS server requires further information in another Access-Request before authenticating the user.

RADIUS_ACCOUNTING_REQUEST (integer)

An Accounting-Request, used to convey accounting information for a service to the RADIUS server.

RADIUS_ACCOUNTING_RESPONSE (integer)

An Accounting-Response response to an Accounting-Request.

RADIUS_COA_REQUEST (integer)

A CoA-Request, sent from the RADIUS server to indicate that the authorisations within the user session have changed. A response must be sent in the form of a CoA-ACK or a CoA-NAK.

This constant is available in PECL radius 1.3.0 and later.

RADIUS_COA_ACK (integer)

A CoA-ACK, sent to the RADIUS server to indicate that the user authorisations have been updated.

This constant is available in PECL radius 1.3.0 and later.

RADIUS_COA_NAK (integer)

A CoA-NAK, sent to the RADIUS server to indicate that the user authorisations could not be updated.

This constant is available in PECL radius 1.3.0 and later.

RADIUS_DISCONNECT_REQUEST (integer)

A Disconnect-Request, sent from the RADIUS server to indicate that the user session must be terminated.

This constant is available in PECL radius 1.3.0 and later.

RADIUS_DISCONNECT_ACK (integer)

A Disconnect-ACK, sent to the RADIUS server to indicate that the user session has been terminated.

This constant is available in PECL radius 1.3.0 and later.

RADIUS_DISCONNECT_NAK (integer)

A Disconnect-NAK, sent to the RADIUS server to indicate that the user session could not be terminated.

This constant is available in PECL radius 1.3.0 and later.

RADIUS Options
RADIUS Attribute Types
预定义常量


RADIUS Attribute Types

These constants define RADIUS attribute types that can be used with
radius_put_addr(), radius_put_attr(),
radius_put_int() and
radius_put_string().

RADIUS_USER_NAME (integer)

The User-Name attribute. The attribute value is expected to be a string containing the name of the user being authenticated, and can be set using radius_put_attr().

RADIUS_USER_PASSWORD (integer)

The User-Password attribute. The attribute value is expected to be a string containing the user's password, and can be set using radius_put_attr(). This value will be obfuscated on transmission as described in » section 5.2 of RFC 2865.

RADIUS_CHAP_PASSWORD (integer)

The Chap-Password attribute. The attribute value is expected to be a string with the first byte containing the CHAP identifier, and the subsequent 16 bytes containing the MD5 hash of the CHAP identifier, the plaintext password and the CHAP challenge value concatenated together. Note that the CHAP challenge value should also be sent separately in a RADIUS_CHAP_CHALLENGE attribute.

Example #1 Using CHAP passwords

<?php
// Firstly, we'll create an authentication handle and request.
$radh = radius_auth_open();
radius_add_server($radh, $server, $port, $secret, 3, 3);
radius_create_request($radh, RADIUS_ACCESS_REQUEST);

// Assuming $password contains the plaintext password, we now:

// Generate a challenge.
$challenge = mt_rand();

// Specify a CHAP identifier.
$ident = 1;

// Add the Chap-Password attribute.
$cp = md5(pack('Ca*', $ident, $password.$challenge), true);
radius_put_attr($radh, RADIUS_CHAP_PASSWORD, pack('C', $ident).$cp);

// Add the Chap-Challenge attribute.
radius_put_attr($radh, RADIUS_CHAP_CHALLENGE, $challenge);

/* From here, you would add the remaining attributes and
 * call radius_send_request(). */
?>

RADIUS_NAS_IP_ADDRESS (integer)

The NAS-IP-Address attribute. The attribute value is expected to the IP address of the RADIUS client encoded as an integer, which can be set using radius_put_addr().

RADIUS_NAS_PORT (integer)

The NAS-Port attribute. The attribute value is expected to be the physical port of the user on the RADIUS client encoded as an integer, which can be set using radius_put_int().

RADIUS_SERVICE_TYPE (integer)

The Service-Type attribute. The attribute value indicates the service type the user is requesting, and is expected to be an integer, which can be set using radius_put_int().

A number of constants are provided to represent the possible values of this attribute. They include:

  • RADIUS_LOGIN
  • RADIUS_FRAMED
  • RADIUS_CALLBACK_LOGIN
  • RADIUS_CALLBACK_FRAMED
  • RADIUS_OUTBOUND
  • RADIUS_ADMINISTRATIVE
  • RADIUS_NAS_PROMPT
  • RADIUS_AUTHENTICATE_ONLY
  • RADIUS_CALLBACK_NAS_PROMPT

RADIUS_FRAMED_PROTOCOL (integer)

The Framed-Protocol attribute. The attribute value is expected to be an integer indicating the framing to be used for framed access, and can be set using radius_put_int(). The possible attribute values include these constants:

  • RADIUS_PPP
  • RADIUS_SLIP
  • RADIUS_ARAP
  • RADIUS_GANDALF
  • RADIUS_XYLOGICS

RADIUS_FRAMED_IP_ADDRESS (integer)

The Framed-IP-Address attribute. The attribute value is expected to be the address of the user's network encoded as an integer, which can be set using radius_put_addr() and retrieved using radius_cvt_addr().

RADIUS_FRAMED_IP_NETMASK (integer)

The Framed-IP-Netmask attribute. The attribute value is expected to be the netmask of the user's network encoded as an integer, which can be set using radius_put_addr() and retrieved using radius_cvt_addr().

RADIUS_FRAMED_ROUTING (integer)

The Framed-Routing attribute. The attribute value is expected to be an integer indicating the routing method for the user, which can be set using radius_put_int().

Possible values include:

  • 0: No routing
  • 1: Send routing packets
  • 2: Listen for routing packets
  • 3: Send and listen

RADIUS_FILTER_ID (integer)

The Filter-ID attribute. The attribute value is expected to be an implementation-specific, human-readable string of filters, which can be set using radius_put_attr().

RADIUS_FRAMED_MTU (integer)

The Framed-MTU attribute. The attribute value is expected to be an integer indicating the MTU to be configured for the user, and can be set using radius_put_int().

RADIUS_FRAMED_COMPRESSION (integer)

The Framed-Compression attribute. The attribute value is expected to be an integer indicating the compression protocol to be used, and can be set using radius_put_int(). Possible values include these constants:

  • RADIUS_COMP_NONE: No compression
  • RADIUS_COMP_VJ: VJ TCP/IP header compression
  • RADIUS_COMP_IPXHDR: IPX header compression
  • RADIUS_COMP_STAC_LZS: Stac-LZS compression (added in PECL radius 1.3.0b2)

RADIUS_LOGIN_IP_HOST (integer)

The Login-IP-Host attribute. The attribute value is expected to the IP address to connect the user to, encoded as an integer, which can be set using radius_put_addr().

RADIUS_LOGIN_SERVICE (integer)

The Login-Service attribute. The attribute value is an integer indicating the service to connect the user to on the login host. The value can be converted to a PHP integer via radius_cvt_int().

RADIUS_LOGIN_TCP_PORT (integer)

The Login-TCP-Port attribute. The attribute value is an integer indicating the port to connect the user to on the login host. The value can be converted to a PHP integer via radius_cvt_int().

RADIUS_REPLY_MESSAGE (integer)

The Reply-Message attribute. The attribute value is a string containing text that may be displayed to the user in response to an access request.

RADIUS_CALLBACK_NUMBER (integer)

The Callback-Number attribute. The attribute value is a string containing the dialing string to use for callback.

RADIUS_CALLBACK_ID (integer)

The Callback-Id attribute. The attribute value is a string containing an implementation-specific name of the place to be called.

RADIUS_FRAMED_ROUTE (integer)

The Framed-Route attribute. The attribute value is a string containing an implementation-specific set of routes to be configured for the user.

RADIUS_FRAMED_IPX_NETWORK (integer)

The Framed-IPX-Network attribute. The attribute value is an integer containing the IPX network to be configured for the user, or 0xFFFFFFFE to indicate that the RADIUS client should select the network, and can be accessed via radius_cvt_int().

RADIUS_STATE (integer)

The State attribute. The attribute value is an implementation-defined string included in an Access-Challenge from a server that must be included in the subsequent Access-Request, and can be set using radius_put_attr().

RADIUS_CLASS (integer)

The Class attribute. The attribute value is an arbitrary string included in an Access-Accept message that should then be sent to the accounting server in Accounting-Request messages, and can be set using radius_put_attr().

RADIUS_VENDOR_SPECIFIC (integer)

The Vendor-Specific attribute. In general, vendor attribute values
should be set using radius_put_vendor_addr(),
radius_put_vendor_attr(),
radius_put_vendor_int() and
radius_put_vendor_string(), rather than directly.

This constant is mostly useful when interpreting vendor specific attributes in responses from a RADIUS server; when a vendor specific attribute is received, the radius_get_vendor_attr() function should be used to access the vendor ID, attribute type and attribute value.

RADIUS_SESSION_TIMEOUT (integer)

Session timeout

RADIUS_IDLE_TIMEOUT (integer)

Idle timeout

RADIUS_TERMINATION_ACTION (integer)

Termination action

RADIUS_CALLED_STATION_ID (integer)

Called Station Id

RADIUS_CALLING_STATION_ID (integer)

Calling Station Id

RADIUS_NAS_IDENTIFIER (integer)

NAS ID

RADIUS_PROXY_STATE (integer)

Proxy State

RADIUS_LOGIN_LAT_SERVICE (integer)

Login LAT Service

RADIUS_LOGIN_LAT_NODE (integer)

Login LAT Node

RADIUS_LOGIN_LAT_GROUP (integer)

Login LAT Group

RADIUS_FRAMED_APPLETALK_LINK (integer)

Framed Appletalk Link

RADIUS_FRAMED_APPLETALK_NETWORK (integer)

Framed Appletalk Network

RADIUS_FRAMED_APPLETALK_ZONE (integer)

Framed Appletalk Zone

RADIUS_CHAP_CHALLENGE (integer)

Challenge

RADIUS_NAS_PORT_TYPE (integer)

NAS port type, one of:

  • RADIUS_ASYNC
  • RADIUS_SYNC
  • RADIUS_ISDN_SYNC
  • RADIUS_ISDN_ASYNC_V120
  • RADIUS_ISDN_ASYNC_V110
  • RADIUS_VIRTUAL
  • RADIUS_PIAFS
  • RADIUS_HDLC_CLEAR_CHANNEL
  • RADIUS_X_25
  • RADIUS_X_75
  • RADIUS_G_3_FAX
  • RADIUS_SDSL
  • RADIUS_ADSL_CAP
  • RADIUS_ADSL_DMT
  • RADIUS_IDSL
  • RADIUS_ETHERNET
  • RADIUS_XDSL
  • RADIUS_CABLE
  • RADIUS_WIRELESS_OTHER
  • RADIUS_WIRELESS_IEEE_802_11

RADIUS_PORT_LIMIT (integer)

Port Limit

RADIUS_LOGIN_LAT_PORT (integer)

Login LAT Port

RADIUS_CONNECT_INFO (integer)

Connect info

RADIUS_ACCT_STATUS_TYPE (integer)

Accounting status type, one of:

  • RADIUS_START
  • RADIUS_STOP
  • RADIUS_ACCOUNTING_ON
  • RADIUS_ACCOUNTING_OFF

RADIUS_ACCT_DELAY_TIME (integer)

Accounting delay time

RADIUS_ACCT_INPUT_OCTETS (integer)

Accounting input bytes

RADIUS_ACCT_OUTPUT_OCTETS (integer)

Accounting output bytes

RADIUS_ACCT_SESSION_ID (integer)

Accounting session ID

RADIUS_ACCT_AUTHENTIC (integer)

Accounting authentic, one of:

  • RADIUS_AUTH_RADIUS
  • RADIUS_AUTH_LOCAL
  • RADIUS_AUTH_REMOTE

RADIUS_ACCT_SESSION_TIME (integer)

Accounting session time

RADIUS_ACCT_INPUT_PACKETS (integer)

Accounting input packets

RADIUS_ACCT_OUTPUT_PACKETS (integer)

Accounting output packets

RADIUS_ACCT_TERMINATE_CAUSE (integer)

Accounting terminate cause, one of:

  • RADIUS_TERM_USER_REQUEST
  • RADIUS_TERM_LOST_CARRIER
  • RADIUS_TERM_LOST_SERVICE
  • RADIUS_TERM_IDLE_TIMEOUT
  • RADIUS_TERM_SESSION_TIMEOUT
  • RADIUS_TERM_ADMIN_RESET
  • RADIUS_TERM_ADMIN_REBOOT
  • RADIUS_TERM_PORT_ERROR
  • RADIUS_TERM_NAS_ERROR
  • RADIUS_TERM_NAS_REQUEST
  • RADIUS_TERM_NAS_REBOOT
  • RADIUS_TERM_PORT_UNNEEDED
  • RADIUS_TERM_PORT_PREEMPTED
  • RADIUS_TERM_PORT_SUSPENDED
  • RADIUS_TERM_SERVICE_UNAVAILABLE
  • RADIUS_TERM_CALLBACK
  • RADIUS_TERM_USER_ERROR
  • RADIUS_TERM_HOST_REQUEST

RADIUS_ACCT_MULTI_SESSION_ID (integer)

Accounting multi session ID

RADIUS_ACCT_LINK_COUNT (integer)

Accounting link count

RADIUS Packet Types
RADIUS Vendor Specific Attribute Types
预定义常量


RADIUS Vendor Specific Attribute Types

RADIUS_VENDOR_MICROSOFT (integer)

Microsoft specific vendor attributes (» RFC 2548), one of:

  • RADIUS_MICROSOFT_MS_CHAP_RESPONSE
  • RADIUS_MICROSOFT_MS_CHAP_ERROR
  • RADIUS_MICROSOFT_MS_CHAP_PW_1
  • RADIUS_MICROSOFT_MS_CHAP_PW_2
  • RADIUS_MICROSOFT_MS_CHAP_LM_ENC_PW
  • RADIUS_MICROSOFT_MS_CHAP_NT_ENC_PW
  • RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_POLICY
  • RADIUS_MICROSOFT_MS_MPPE_ENCRYPTION_TYPES
  • RADIUS_MICROSOFT_MS_RAS_VENDOR
  • RADIUS_MICROSOFT_MS_CHAP_DOMAIN
  • RADIUS_MICROSOFT_MS_CHAP_CHALLENGE
  • RADIUS_MICROSOFT_MS_CHAP_MPPE_KEYS
  • RADIUS_MICROSOFT_MS_BAP_USAGE
  • RADIUS_MICROSOFT_MS_LINK_UTILIZATION_THRESHOLD
  • RADIUS_MICROSOFT_MS_LINK_DROP_TIME_LIMIT
  • RADIUS_MICROSOFT_MS_MPPE_SEND_KEY
  • RADIUS_MICROSOFT_MS_MPPE_RECV_KEY
  • RADIUS_MICROSOFT_MS_RAS_VERSION
  • RADIUS_MICROSOFT_MS_OLD_ARAP_PASSWORD
  • RADIUS_MICROSOFT_MS_NEW_ARAP_PASSWORD
  • RADIUS_MICROSOFT_MS_ARAP_PASSWORD_CHANGE_REASON
  • RADIUS_MICROSOFT_MS_FILTER
  • RADIUS_MICROSOFT_MS_ACCT_AUTH_TYPE
  • RADIUS_MICROSOFT_MS_ACCT_EAP_TYPE
  • RADIUS_MICROSOFT_MS_CHAP2_RESPONSE
  • RADIUS_MICROSOFT_MS_CHAP2_SUCCESS
  • RADIUS_MICROSOFT_MS_CHAP2_PW
  • RADIUS_MICROSOFT_MS_PRIMARY_DNS_SERVER
  • RADIUS_MICROSOFT_MS_SECONDARY_DNS_SERVER
  • RADIUS_MICROSOFT_MS_PRIMARY_NBNS_SERVER
  • RADIUS_MICROSOFT_MS_SECONDARY_NBNS_SERVER
  • RADIUS_MICROSOFT_MS_ARAP_CHALLENGE

RADIUS Attribute Types
范例
预定义常量


范例

Howto start?

  • get a radius resource
  • configure the library
  • create the request
  • put attributes
  • send the request
  • receive attributes
  • close the radius resource (optional)
Take also a look at the examples in this package.

The package contains an example php script. This script demonstrates howto authenticate with radius using PAP or CHAP (md5). If you authenticate with Microsoft Radius servers then its not possible to use CHAP (md5). If you would like to authenticate with Microsoft Servers you have to use MS-CHAPv1 or MS-CHAPv2, but its more complicated, because you need md4, sha1 and des to generate the right data. The enclosed examples demonstrate all authentication-methods, including MS-CHAPv1 and MS-CHAPv2. To get the MS-CHAP to work you need the mcrypt and the mhash extension, starting with version 1.2 of the package, the mcrypt extension is no longer needed.

RADIUS Vendor Specific Attribute Types
Radius 函数
Radius


Radius 函数

Table of Contents

  • radius_acct_open — Creates a Radius handle for accounting
  • radius_add_server — Adds a server
  • radius_auth_open — Creates a Radius handle for authentication
  • radius_close — Frees all ressources
  • radius_config — Causes the library to read the given configuration file
  • radius_create_request — Create accounting or authentication request
  • radius_cvt_addr — Converts raw data to IP-Address
  • radius_cvt_int — Converts raw data to integer
  • radius_cvt_string — Converts raw data to string
  • radius_demangle_mppe_key — Derives mppe-keys from mangled data
  • radius_demangle — Demangles data
  • radius_get_attr — Extracts an attribute
  • radius_get_tagged_attr_data — Extracts the data from a tagged attribute
  • radius_get_tagged_attr_tag — Extracts the tag from a tagged attribute
  • radius_get_vendor_attr — Extracts a vendor specific attribute
  • radius_put_addr — Attaches an IP address attribute
  • radius_put_attr — Attaches a binary attribute
  • radius_put_int — Attaches an integer attribute
  • radius_put_string — Attaches a string attribute
  • radius_put_vendor_addr — Attaches a vendor specific IP address attribute
  • radius_put_vendor_attr — Attaches a vendor specific binary attribute
  • radius_put_vendor_int — Attaches a vendor specific integer attribute
  • radius_put_vendor_string — Attaches a vendor specific string attribute
  • radius_request_authenticator — Returns the request authenticator
  • radius_salt_encrypt_attr — Salt-encrypts a value
  • radius_send_request — Sends the request and waites for a reply
  • radius_server_secret — Returns the shared secret
  • radius_strerror — Returns an error message
范例
radius_acct_open
Radius


Creates a Radius handle for accounting

Radius 函数
radius_add_server
Radius 函数
PHP Manual

radius_acct_open

(PECL radius >= 1.1.0)

radius_acct_open — Creates a Radius handle for accounting

说明

resource radius_acct_open ( void )

返回值

Returns a handle on success, FALSE on error. This function only fails if insufficient memory is available.

范例

Example #1 radius_acct_open() example

<?php
$res = radius_acct_open ()
    or die ("Could not create handle");
print("Handle successfully created");
?>

Radius 函数
radius_add_server
Radius 函数


Adds a server

radius_acct_open
radius_auth_open
Radius 函数
PHP Manual

radius_add_server

(PECL radius >= 1.1.0)

radius_add_server — Adds a server

说明

bool radius_add_server ( resource $radius_handle , string $hostname , int $port , string $secret , int $timeout , int $max_tries )

radius_add_server() may be called multiple times, and it may be used together with radius_config(). At most 10 servers may be specified. When multiple servers are given, they are tried in round-robin fashion until a valid response is received, or until each server's max_tries limit has been reached.

参数

radius_handle

hostname

The hostname parameter specifies the server host, either as a fully qualified domain name or as a dotted-quad IP address in text form.

port

The port specifies the UDP port to contact on the server. If port is given as 0, the library looks up the radius/udp or radacct/udp service in the network services database, and uses the port found there. If no entry is found, the library uses the standard Radius ports, 1812 for authentication and 1813 for accounting.

secret

The shared secret for the server host is passed to the secret parameter. The Radius protocol ignores all but the leading 128 bytes of the shared secret.

timeout

The timeout for receiving replies from the server is passed to the timeout parameter, in units of seconds.

max_tries

The maximum number of repeated requests to make before giving up is passed into the max_tries.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 radius_add_server() example

<?php
if (!radius_add_server($res, 'radius.example.com', 1812, 'testing123', 3, 3)) {
    echo 'RadiusError:' . radius_strerror($res). "\n<br>";
    exit;
}
?>

参见

  • radius_config() - Causes the library to read the given configuration file

radius_acct_open
radius_auth_open
Radius 函数


Creates a Radius handle for authentication

radius_add_server
radius_close
Radius 函数
PHP Manual

radius_auth_open

(PECL radius >= 1.1.0)

radius_auth_open — Creates a Radius handle for authentication

说明

resource radius_auth_open ( void )

返回值

Returns a handle on success, FALSE on error. This function only fails if insufficient memory is available.

范例

Example #1 radius_auth_open() example

<?php
$radh = radius_auth_open()
    or die ("Could not create handle");
echo "Handle successfully created";
?>

radius_add_server
radius_close
Radius 函数


Frees all ressources

radius_auth_open
radius_config
Radius 函数
PHP Manual

radius_close

(PECL radius >= 1.1.0)

radius_close — Frees all ressources

说明

bool radius_close ( resource $radius_handle )

It is not needed to call this function because php frees all resources at the end of each request.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

radius_auth_open
radius_config
Radius 函数


Causes the library to read the given configuration file

radius_close
radius_create_request
Radius 函数
PHP Manual

radius_config

(PECL radius >= 1.1.0)

radius_config — Causes the library to read the given configuration file

说明

bool radius_config ( resource $radius_handle , string $file )

Before issuing any Radius requests, the library must be made aware of the servers it can contact. The easiest way to configure the library is to call radius_config(). radius_config() causes the library to read a configuration file whose format is described in » radius.conf.

参数

radius_handle

file

The pathname of the configuration file is passed as the file argument to radius_config(). The library can also be configured programmatically by calls to radius_add_server().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • radius_add_server() - Adds a server

radius_close
radius_create_request
Radius 函数


Create accounting or authentication request

radius_config
radius_cvt_addr
Radius 函数
PHP Manual

radius_create_request

(PECL radius >= 1.1.0)

radius_create_request — Create accounting or authentication request

说明

bool radius_create_request ( resource $radius_handle , int $type )

A Radius request consists of a code specifying the kind of request, and zero or more attributes which provide additional information. To begin constructing a new request, call radius_create_request().

Note: Attention: You must call this function, before you can put any attribute!

参数

radius_handle

type

Type is RADIUS_ACCESS_REQUEST or RADIUS_ACCOUNTING_REQUEST.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 radius_create_request() example

<?php
if (!radius_create_request($res, RADIUS_ACCESS_REQUEST)) {
    echo 'RadiusError:' . radius_strerror($res). "\n<br />";
    exit;
}
?>

参见

  • radius_send_request() - Sends the request and waites for a reply

radius_config
radius_cvt_addr
Radius 函数


Converts raw data to IP-Address

radius_create_request
radius_cvt_int
Radius 函数
PHP Manual

radius_cvt_addr

(PECL radius >= 1.1.0)

radius_cvt_addr — Converts raw data to IP-Address

说明

string radius_cvt_addr ( string $data )

范例

Example #1 radius_cvt_addr() example

<?php
while ($resa = radius_get_attr($res)) {

    if (!is_array($resa)) {
        printf ("Error getting attribute: %s\n",  radius_strerror($res));
        exit;
    }

    $attr = $resa['attr'];
    $data = $resa['data'];

    switch ($attr) {

    case RADIUS_FRAMED_IP_ADDRESS:
        $ip = radius_cvt_addr($data);
        echo "IP: $ip<br>\n";
        break;

    case RADIUS_FRAMED_IP_NETMASK:
        $mask = radius_cvt_addr($data);
        echo "MASK: $mask<br>\n";
        break;
    }
}
?>

参见

  • radius_cvt_int() - Converts raw data to integer
  • radius_cvt_string() - Converts raw data to string

radius_create_request
radius_cvt_int
Radius 函数


Converts raw data to integer

radius_cvt_addr
radius_cvt_string
Radius 函数
PHP Manual

radius_cvt_int

(PECL radius >= 1.1.0)

radius_cvt_int — Converts raw data to integer

说明

int radius_cvt_int ( string $data )

范例

Example #1 radius_cvt_int() example

<?php
while ($resa = radius_get_attr($res)) {

    if (!is_array($resa)) {
        printf ("Error getting attribute: %s\n",  radius_strerror($res));
        exit;
    }

    $attr = $resa['attr'];
    $data = $resa['data'];

    switch ($attr) {

    case RADIUS_FRAMED_MTU:
        $mtu = radius_cvt_int($data);
        echo "MTU: $mtu<br>\n";
        break;
    }
}
?>

参见

  • radius_cvt_addr() - Converts raw data to IP-Address
  • radius_cvt_string() - Converts raw data to string

radius_cvt_addr
radius_cvt_string
Radius 函数


Converts raw data to string

radius_cvt_int
radius_demangle_mppe_key
Radius 函数
PHP Manual

radius_cvt_string

(PECL radius >= 1.1.0)

radius_cvt_string — Converts raw data to string

说明

string radius_cvt_string ( string $data )

范例

Example #1 radius_cvt_string() example

<?php
while ($resa = radius_get_attr($res)) {

    if (!is_array($resa)) {
        printf ("Error getting attribute: %s\n",  radius_strerror($res));
        exit;
    }

    $attr = $resa['attr'];
    $data = $resa['data'];

    switch ($attr) {

    case RADIUS_FILTER_ID:
        $id = radius_cvt_string($data);
        echo "Filter ID: $id<br>\n";
        break;
    }
}
?>

参见

  • radius_cvt_addr() - Converts raw data to IP-Address
  • radius_cvt_int() - Converts raw data to integer

radius_cvt_int
radius_demangle_mppe_key
Radius 函数


Derives mppe-keys from mangled data

radius_cvt_string
radius_demangle
Radius 函数
PHP Manual

radius_demangle_mppe_key

(PECL radius >= 1.2.0)

radius_demangle_mppe_key — Derives mppe-keys from mangled data

说明

string radius_demangle_mppe_key ( resource $radius_handle , string $mangled )

When using MPPE with MS-CHAPv2, the send- and recv-keys are mangled (see » RFC 2548), however this function is useless, because I don't think that there is or will be a PPTP-MPPE implementation in PHP.

返回值

Returns the demangled string, or FALSE on error.

radius_cvt_string
radius_demangle
Radius 函数


Demangles data

radius_demangle_mppe_key
radius_get_attr
Radius 函数
PHP Manual

radius_demangle

(PECL radius >= 1.2.0)

radius_demangle — Demangles data

说明

string radius_demangle ( resource $radius_handle , string $mangled )

Some data (Passwords, MS-CHAPv1 MPPE-Keys) is mangled for security reasons, and must be demangled before you can use them.

返回值

Returns the demangled string, or FALSE on error.

radius_demangle_mppe_key
radius_get_attr
Radius 函数


Extracts an attribute

radius_demangle
radius_get_tagged_attr_data
Radius 函数
PHP Manual

radius_get_attr

(PECL radius >= 1.1.0)

radius_get_attr — Extracts an attribute

说明

mixed radius_get_attr ( resource $radius_handle )

Like Radius requests, each response may contain zero or more attributes. After a response has been received successfully by radius_send_request(), its attributes can be extracted one by one using radius_get_attr(). Each time radius_get_attr() is called, it gets the next attribute from the current response.

返回值

Returns an associative array containing the attribute-type and the data, or error number <= 0.

范例

Example #1 radius_get_attr() example

<?php
while ($resa = radius_get_attr($res)) {

    if (!is_array($resa)) {
        printf("Error getting attribute: %s\n",  radius_strerror($res));
        exit;
    }

    $attr = $resa['attr'];
    $data = $resa['data'];
    printf("Got Attr:%d %d Bytes %s\n", $attr, strlen($data), bin2hex($data));
}
?>

参见

  • radius_put_attr() - Attaches a binary attribute
  • radius_get_vendor_attr() - Extracts a vendor specific attribute
  • radius_put_vendor_attr() - Attaches a vendor specific binary attribute
  • radius_send_request() - Sends the request and waites for a reply

radius_demangle
radius_get_tagged_attr_data
Radius 函数


Extracts the data from a tagged attribute

radius_get_attr
radius_get_tagged_attr_tag
Radius 函数
PHP Manual

radius_get_tagged_attr_data

(PECL radius >= 1.3.0)

radius_get_tagged_attr_data — Extracts the data from a tagged attribute

说明

string radius_get_tagged_attr_data ( string $data )

If a tagged attribute has been returned from radius_get_attr(), radius_get_tagged_attr_data() will return the data from the attribute.

参数

data

The tagged attribute to be decoded.

返回值

Returns the data from the tagged attribute 或者在失败时返回 FALSE.

范例

Example #1 radius_get_tagged_attr_data() example

<?php
while ($resa = radius_get_attr($res)) {
    if (!is_array($resa)) {
        printf ("Error getting attribute: %s\n",  radius_strerror($res));
        exit;
    }

    $attr = $resa['attr'];
    $data = $resa['data'];

    $tag = radius_get_tagged_attr_tag($data);
    $value = radius_get_tagged_attr_data($data);

    printf("Got tagged attribute with tag %d and value %s\n", $tag, $value);
}
?>

参见

  • radius_get_attr() - Extracts an attribute
  • radius_get_tagged_attr_tag() - Extracts the tag from a tagged attribute

radius_get_attr
radius_get_tagged_attr_tag
Radius 函数


Extracts the tag from a tagged attribute

radius_get_tagged_attr_data
radius_get_vendor_attr
Radius 函数
PHP Manual

radius_get_tagged_attr_tag

(PECL radius >= 1.3.0)

radius_get_tagged_attr_tag — Extracts the tag from a tagged attribute

说明

integer radius_get_tagged_attr_tag ( string $data )

If a tagged attribute has been returned from radius_get_attr(), radius_get_tagged_attr_data() will return the tag from the attribute.

参数

data

The tagged attribute to be decoded.

返回值

Returns the tag from the tagged attribute 或者在失败时返回 FALSE.

范例

Example #1 radius_get_tagged_attr_tag() example

<?php
while ($resa = radius_get_attr($res)) {
    if (!is_array($resa)) {
        printf ("Error getting attribute: %s\n",  radius_strerror($res));
        exit;
    }

    $attr = $resa['attr'];
    $data = $resa['data'];

    $tag = radius_get_tagged_attr_tag($data);
    $value = radius_get_tagged_attr_data($data);

    printf("Got tagged attribute with tag %d and value %s\n", $tag, $value);
}
?>

参见

  • radius_get_attr() - Extracts an attribute
  • radius_get_tagged_attr_data() - Extracts the data from a tagged attribute

radius_get_tagged_attr_data
radius_get_vendor_attr
Radius 函数


Extracts a vendor specific attribute

radius_get_tagged_attr_tag
radius_put_addr
Radius 函数
PHP Manual

radius_get_vendor_attr

(PECL radius >= 1.1.0)

radius_get_vendor_attr — Extracts a vendor specific attribute

说明

array radius_get_vendor_attr ( string $data )

If radius_get_attr() returns RADIUS_VENDOR_SPECIFIC, radius_get_vendor_attr() may be called to determine the vendor.

返回值

Returns an associative array containing the attribute-type, vendor and the data, or FALSE on error.

范例

Example #1 radius_get_vendor_attr() example

<?php
while ($resa = radius_get_attr($res)) {

    if (!is_array($resa)) {
        printf ("Error getting attribute: %s\n",  radius_strerror($res));
        exit;
    }

    $attr = $resa['attr'];
    $data = $resa['data'];
    printf("Got Attr:%d %d Bytes %s\n", $attr, strlen($data), bin2hex($data));
    if ($attr == RADIUS_VENDOR_SPECIFIC) {

        $resv = radius_get_vendor_attr($data);
        if (is_array($resv)) {
            $vendor = $resv['vendor'];
            $attrv = $resv['attr'];
            $datav = $resv['data'];
            printf("Got Vendor Attr:%d %d Bytes %s\n", $attrv, strlen($datav), bin2hex($datav));
        }

    }
}
?>

参见

  • radius_get_attr() - Extracts an attribute
  • radius_put_vendor_attr() - Attaches a vendor specific binary attribute

radius_get_tagged_attr_tag
radius_put_addr
Radius 函数


Attaches an IP address attribute

radius_get_vendor_attr
radius_put_attr
Radius 函数
PHP Manual

radius_put_addr

(PECL radius >= 1.1.0)

radius_put_addr — Attaches an IP address attribute

说明

bool radius_put_addr ( resource $radius_handle , int $type , string $addr [, int $options = 0 [, int $tag ]] )

Attaches an IP address attribute to the current RADIUS request.

Note:

A request must be created via radius_create_request() before this function can be called.

参数

radius_handle

The RADIUS resource.

type

The attribute type.

addr

An IPv4 address in string form, such as 10.0.0.1.

options

A bitmask of the attribute options. The available options include RADIUS_OPTION_TAGGED and RADIUS_OPTION_SALT.

tag

The attribute tag. This parameter is ignored unless the RADIUS_OPTION_TAGGED option is set.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
PECL radius 1.3.0 | The options and tag parameters were added.

radius_get_vendor_attr
radius_put_attr
Radius 函数


Attaches a binary attribute

radius_put_addr
radius_put_int
Radius 函数
PHP Manual

radius_put_attr

(PECL radius >= 1.1.0)

radius_put_attr — Attaches a binary attribute

说明

bool radius_put_attr ( resource $radius_handle , int $type , string $value [, int $options = 0 [, int $tag ]] )

Attaches a binary attribute to the current RADIUS request.

Note:

A request must be created via radius_create_request() before this function can be called.

参数

radius_handle

The RADIUS resource.

type

The attribute type.

value

The attribute value, which will be treated as a raw binary string.

options

A bitmask of the attribute options. The available options include RADIUS_OPTION_TAGGED and RADIUS_OPTION_SALT.

tag

The attribute tag. This parameter is ignored unless the RADIUS_OPTION_TAGGED option is set.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 radius_put_attr() example

<?php
mt_srand(time());
$chall = mt_rand();
$chapval = md5(pack('Ca*',1 , 'sepp' . $chall));
$pass = pack('CH*', 1, $chapval);
if (!radius_put_attr($res, RADIUS_CHAP_PASSWORD, $pass)) {
    echo 'RadiusError:' . radius_strerror($res). "\n<br />";
    exit;
}
?>

更新日志

版本 | 说明
PECL radius 1.3.0 | The options and tag parameters were added.

参见

  • radius_get_attr() - Extracts an attribute
  • radius_get_vendor_attr() - Extracts a vendor specific attribute
  • radius_put_vendor_attr() - Attaches a vendor specific binary attribute

radius_put_addr
radius_put_int
Radius 函数


Attaches an integer attribute

radius_put_attr
radius_put_string
Radius 函数
PHP Manual

radius_put_int

(PECL radius >= 1.1.0)

radius_put_int — Attaches an integer attribute

说明

bool radius_put_int ( resource $radius_handle , int $type , int $value [, int $options = 0 [, int $tag ]] )

Attaches an integer attribute to the current RADIUS request.

Note:

A request must be created via radius_create_request() before this function can be called.

参数

radius_handle

The RADIUS resource.

type

The attribute type.

value

The attribute value.

options

A bitmask of the attribute options. The available options include RADIUS_OPTION_TAGGED and RADIUS_OPTION_SALT.

tag

The attribute tag. This parameter is ignored unless the RADIUS_OPTION_TAGGED option is set.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
PECL radius 1.3.0 | The options and tag parameters were added.

范例

Example #1 radius_put_int() example

<?php
if (!radius_put_int($res, RAD_FRAMED_PROTOCOL, RAD_PPP)) {
   echo 'RadiusError:' . radius_strerror($res). "\n<br />";
   exit;
}
?>

参见

  • radius_put_string() - Attaches a string attribute
  • radius_put_vendor_int() - Attaches a vendor specific integer attribute
  • radius_put_vendor_string() - Attaches a vendor specific string attribute

radius_put_attr
radius_put_string
Radius 函数


Attaches a string attribute

radius_put_int
radius_put_vendor_addr
Radius 函数
PHP Manual

radius_put_string

(PECL radius >= 1.1.0)

radius_put_string — Attaches a string attribute

说明

bool radius_put_string ( resource $radius_handle , int $type , string $value [, int $options = 0 [, int $tag ]] )

Attaches a string attribute to the current RADIUS request. In general, radius_put_attr() is a more useful function for attaching string attributes, as it is binary safe.

Note:

A request must be created via radius_create_request() before this function can be called.

参数

radius_handle

The RADIUS resource.

type

The attribute type.

value

The attribute value. This value is expected by the underlying library to be null terminated, therefore this parameter is not binary safe.

options

A bitmask of the attribute options. The available options include RADIUS_OPTION_TAGGED and RADIUS_OPTION_SALT.

tag

The attribute tag. This parameter is ignored unless the RADIUS_OPTION_TAGGED option is set.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
PECL radius 1.3.0 | The options and tag parameters were added.

范例

Example #1 radius_put_string() example

<?php
if (!radius_put_string($res, RADIUS_USER_NAME, 'billy')) {
    echo 'RadiusError:' . radius_strerror($res). "\n<br />";
    exit;
}
?>

参见

  • radius_put_int() - Attaches an integer attribute
  • radius_put_vendor_int() - Attaches a vendor specific integer attribute
  • radius_put_vendor_string() - Attaches a vendor specific string attribute

radius_put_int
radius_put_vendor_addr
Radius 函数


Attaches a vendor specific IP address attribute

radius_put_string
radius_put_vendor_attr
Radius 函数
PHP Manual

radius_put_vendor_addr

(PECL radius >= 1.1.0)

radius_put_vendor_addr — Attaches a vendor specific IP address attribute

说明

bool radius_put_vendor_addr ( resource $radius_handle , int $vendor , int $type , string $addr )

Attaches an IP address vendor specific attribute to the current RADIUS request.

Note:

A request must be created via radius_create_request() before this function can be called.

参数

radius_handle

The RADIUS resource.

vendor

The vendor ID.

type

The attribute type.

addr

An IPv4 address in string form, such as 10.0.0.1.

options

A bitmask of the attribute options. The available options include RADIUS_OPTION_TAGGED and RADIUS_OPTION_SALT.

tag

The attribute tag. This parameter is ignored unless the RADIUS_OPTION_TAGGED option is set.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
PECL radius 1.3.0 | The options and tag parameters were added.

radius_put_string
radius_put_vendor_attr
Radius 函数


Attaches a vendor specific binary attribute

radius_put_vendor_addr
radius_put_vendor_int
Radius 函数
PHP Manual

radius_put_vendor_attr

(PECL radius >= 1.1.0)

radius_put_vendor_attr — Attaches a vendor specific binary attribute

说明

bool radius_put_vendor_attr ( resource $radius_handle , int $vendor , int $type , string $value [, int $options = 0 [, int $tag ]] )

Attaches a vendor specific binary attribute to the current RADIUS request.

Note:

A request must be created via radius_create_request() before this function can be called.

参数

radius_handle

The RADIUS resource.

vendor

The vendor ID.

type

The attribute type.

value

The attribute value, which will be treated as a raw binary string.

options

A bitmask of the attribute options. The available options include RADIUS_OPTION_TAGGED and RADIUS_OPTION_SALT.

tag

The attribute tag. This parameter is ignored unless the RADIUS_OPTION_TAGGED option is set.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
PECL radius 1.3.0 | The options and tag parameters were added.

范例

Example #1 radius_put_vendor_attr() example

<?php
if (!radius_put_vendor_attr($res, RADIUS_VENDOR_MICROSOFT, RAD_MICROSOFT_MS_CHAP_CHALLENGE, $challenge)) {
    echo 'RadiusError:' . radius_strerror($res). "\n<br />";
    exit;
}
?>

参见

  • radius_get_vendor_attr() - Extracts a vendor specific attribute

radius_put_vendor_addr
radius_put_vendor_int
Radius 函数


Attaches a vendor specific integer attribute

radius_put_vendor_attr
radius_put_vendor_string
Radius 函数
PHP Manual

radius_put_vendor_int

(PECL radius >= 1.1.0)

radius_put_vendor_int — Attaches a vendor specific integer attribute

说明

bool radius_put_vendor_int ( resource $radius_handle , int $vendor , int $type , int $value [, int $options = 0 [, int $tag ]] )

Attaches a vendor specific integer attribute to the current RADIUS request.

Note:

A request must be created via radius_create_request() before this function can be called.

参数

radius_handle

The RADIUS resource.

vendor

The vendor ID.

type

The attribute type.

value

The attribute value.

options

A bitmask of the attribute options. The available options include RADIUS_OPTION_TAGGED and RADIUS_OPTION_SALT.

tag

The attribute tag. This parameter is ignored unless the RADIUS_OPTION_TAGGED option is set.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
PECL radius 1.3.0 | The options and tag parameters were added.

参见

  • radius_put_vendor_string() - Attaches a vendor specific string attribute

radius_put_vendor_attr
radius_put_vendor_string
Radius 函数


Attaches a vendor specific string attribute

radius_put_vendor_int
radius_request_authenticator
Radius 函数
PHP Manual

radius_put_vendor_string

(PECL radius >= 1.1.0)

radius_put_vendor_string — Attaches a vendor specific string attribute

说明

bool radius_put_vendor_string ( resource $radius_handle , int $vendor , int $type , string $value [, int $options = 0 [, int $tag ]] )

Attaches a vendor specific string attribute to the current RADIUS request. In general, radius_put_vendor_attr() is a more useful function for attaching string attributes, as it is binary safe.

Note:

A request must be created via radius_create_request() before this function can be called.

参数

radius_handle

The RADIUS resource.

vendor

The vendor ID.

type

The attribute type.

value

The attribute value. This value is expected by the underlying library to be null terminated, therefore this parameter is not binary safe.

options

A bitmask of the attribute options. The available options include RADIUS_OPTION_TAGGED and RADIUS_OPTION_SALT.

tag

The attribute tag. This parameter is ignored unless the RADIUS_OPTION_TAGGED option is set.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
PECL radius 1.3.0 | The options and tag parameters were added.

参见

  • radius_put_vendor_int() - Attaches a vendor specific integer attribute

radius_put_vendor_int
radius_request_authenticator
Radius 函数


Returns the request authenticator

radius_put_vendor_string
radius_salt_encrypt_attr
Radius 函数
PHP Manual

radius_request_authenticator

(PECL radius >= 1.1.0)

radius_request_authenticator — Returns the request authenticator

说明

string radius_request_authenticator ( resource $radius_handle )

The request authenticator is needed for demangling mangled data like passwords and encryption-keys.

返回值

Returns the request authenticator as string, or FALSE on error.

参见

  • radius_demangle() - Demangles data

radius_put_vendor_string
radius_salt_encrypt_attr
Radius 函数


Salt-encrypts a value

radius_request_authenticator
radius_send_request
Radius 函数
PHP Manual

radius_salt_encrypt_attr

(PECL radius >= 1.3.0)

radius_salt_encrypt_attr — Salt-encrypts a value

说明

string radius_salt_encrypt_attr ( resource $radius_handle , string $data )

Applies the RADIUS salt-encryption algorithm to the given value.

In general, this is achieved automatically by providing the RADIUS_OPTION_SALT option to an attribute setter function, but this function can be used if low-level request construction is required.

参数

data

The data to be salt-encrypted.

返回值

Returns the salt-encrypted data 或者在失败时返回 FALSE.

参见

  • radius_put_addr() - Attaches an IP address attribute
  • radius_put_attr() - Attaches a binary attribute
  • radius_put_int() - Attaches an integer attribute
  • radius_put_string() - Attaches a string attribute

radius_request_authenticator
radius_send_request
Radius 函数


Sends the request and waites for a reply

radius_salt_encrypt_attr
radius_server_secret
Radius 函数
PHP Manual

radius_send_request

(PECL radius >= 1.1.0)

radius_send_request — Sends the request and waites for a reply

说明

int radius_send_request ( resource $radius_handle )

After the Radius request has been constructed, it is sent by radius_send_request().

The radius_send_request() function sends the request and waits for a valid reply, retrying the defined servers in round-robin fashion as necessary.

返回值

If a valid response is received, radius_send_request() returns the Radius code which specifies the type of the response. This will typically be RADIUS_ACCESS_ACCEPT, RADIUS_ACCESS_REJECT, or RADIUS_ACCESS_CHALLENGE. If no valid response is received, radius_send_request() returns FALSE.

参见

  • radius_create_request() - Create accounting or authentication request

radius_salt_encrypt_attr
radius_server_secret
Radius 函数


Returns the shared secret

radius_send_request
radius_strerror
Radius 函数
PHP Manual

radius_server_secret

(PECL radius >= 1.1.0)

radius_server_secret — Returns the shared secret

说明

string radius_server_secret ( resource $radius_handle )

The shared secret is needed as salt for demangling mangled data like passwords and encryption-keys.

返回值

Returns the server's shared secret as string, or FALSE on error.

radius_send_request
radius_strerror
Radius 函数


Returns an error message

radius_server_secret
针对命令行的扩展
Radius 函数
PHP Manual

radius_strerror

(PECL radius >= 1.1.0)

radius_strerror — Returns an error message

说明

string radius_strerror ( resource $radius_handle )

If Radius-functions fail then they record an error message. This error message can be retrieved with this function.

返回值

Returns error messages as string from failed radius functions.

radius_server_secret
针对命令行的扩展
Radius 函数


针对命令行的扩展

  • Ncurses — Ncurses Terminal Screen Control
    • 简介
    • 安装／配置
    • 预定义常量
    • Ncurses 函数
  • Newt
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Newt 函数
  • Readline — GNU Readline
    • 简介
    • 安装／配置
    • 预定义常量
    • Readline 函数
radius_strerror
Ncurses
函数参考


Ncurses Terminal Screen Control

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
    • Error codes
    • Colors
    • Keys
    • Mouse
  • Ncurses 函数
    • ncurses_addch — Add character at current position and advance cursor
    • ncurses_addchnstr — Add attributed string with specified length at current position
    • ncurses_addchstr — Add attributed string at current position
    • ncurses_addnstr — Add string with specified length at current position
    • ncurses_addstr — Output text at current position
    • ncurses_assume_default_colors — Define default colors for color 0
    • ncurses_attroff — Turn off the given attributes
    • ncurses_attron — Turn on the given attributes
    • ncurses_attrset — Set given attributes
    • ncurses_baudrate — Returns baudrate of terminal
    • ncurses_beep — Let the terminal beep
    • ncurses_bkgd — Set background property for terminal screen
    • ncurses_bkgdset — Control screen background
    • ncurses_border — Draw a border around the screen using attributed characters
    • ncurses_bottom_panel — Moves a visible panel to the bottom of the stack
    • ncurses_can_change_color — Checks if terminal color definitions can be changed
    • ncurses_cbreak — Switch off input buffering
    • ncurses_clear — Clear screen
    • ncurses_clrtobot — Clear screen from current position to bottom
    • ncurses_clrtoeol — Clear screen from current position to end of line
    • ncurses_color_content — Retrieves RGB components of a color
    • ncurses_color_set — Set active foreground and background colors
    • ncurses_curs_set — Set cursor state
    • ncurses_def_prog_mode — Saves terminals (program) mode
    • ncurses_def_shell_mode — Saves terminals (shell) mode
    • ncurses_define_key — Define a keycode
    • ncurses_del_panel — Remove panel from the stack and delete it (but not the associated window)
    • ncurses_delay_output — Delay output on terminal using padding characters
    • ncurses_delch — Delete character at current position, move rest of line left
    • ncurses_deleteln — Delete line at current position, move rest of screen up
    • ncurses_delwin — Delete a ncurses window
    • ncurses_doupdate — Write all prepared refreshes to terminal
    • ncurses_echo — Activate keyboard input echo
    • ncurses_echochar — Single character output including refresh
    • ncurses_end — Stop using ncurses, clean up the screen
    • ncurses_erase — Erase terminal screen
    • ncurses_erasechar — Returns current erase character
    • ncurses_filter — Set LINES for iniscr() and newterm() to 1
    • ncurses_flash — Flash terminal screen (visual bell)
    • ncurses_flushinp — Flush keyboard input buffer
    • ncurses_getch — Read a character from keyboard
    • ncurses_getmaxyx — Returns the size of a window
    • ncurses_getmouse — Reads mouse event
    • ncurses_getyx — Returns the current cursor position for a window
    • ncurses_halfdelay — Put terminal into halfdelay mode
    • ncurses_has_colors — Checks if terminal has color capabilities
    • ncurses_has_ic — Check for insert- and delete-capabilities
    • ncurses_has_il — Check for line insert- and delete-capabilities
    • ncurses_has_key — Check for presence of a function key on terminal keyboard
    • ncurses_hide_panel — Remove panel from the stack, making it invisible
    • ncurses_hline — Draw a horizontal line at current position using an attributed character and max. n characters long
    • ncurses_inch — Get character and attribute at current position
    • ncurses_init_color — Define a terminal color
    • ncurses_init_pair — Define a color pair
    • ncurses_init — Initialize ncurses
    • ncurses_insch — Insert character moving rest of line including character at current position
    • ncurses_insdelln — Insert lines before current line scrolling down (negative numbers delete and scroll up)
    • ncurses_insertln — Insert a line, move rest of screen down
    • ncurses_insstr — Insert string at current position, moving rest of line right
    • ncurses_instr — Reads string from terminal screen
    • ncurses_isendwin — Ncurses is in endwin mode, normal screen output may be performed
    • ncurses_keyok — Enable or disable a keycode
    • ncurses_keypad — Turns keypad on or off
    • ncurses_killchar — Returns current line kill character
    • ncurses_longname — Returns terminals description
    • ncurses_meta — Enables/Disable 8-bit meta key information
    • ncurses_mouse_trafo — Transforms coordinates
    • ncurses_mouseinterval — Set timeout for mouse button clicks
    • ncurses_mousemask — Sets mouse options
    • ncurses_move_panel — Moves a panel so that its upper-left corner is at [startx, starty]
    • ncurses_move — Move output position
    • ncurses_mvaddch — Move current position and add character
    • ncurses_mvaddchnstr — Move position and add attributed string with specified length
    • ncurses_mvaddchstr — Move position and add attributed string
    • ncurses_mvaddnstr — Move position and add string with specified length
    • ncurses_mvaddstr — Move position and add string
    • ncurses_mvcur — Move cursor immediately
    • ncurses_mvdelch — Move position and delete character, shift rest of line left
    • ncurses_mvgetch — Move position and get character at new position
    • ncurses_mvhline — Set new position and draw a horizontal line using an attributed character and max. n characters long
    • ncurses_mvinch — Move position and get attributed character at new position
    • ncurses_mvvline — Set new position and draw a vertical line using an attributed character and max. n characters long
    • ncurses_mvwaddstr — Add string at new position in window
    • ncurses_napms — Sleep
    • ncurses_new_panel — Create a new panel and associate it with window
    • ncurses_newpad — Creates a new pad (window)
    • ncurses_newwin — Create a new window
    • ncurses_nl — Translate newline and carriage return / line feed
    • ncurses_nocbreak — Switch terminal to cooked mode
    • ncurses_noecho — Switch off keyboard input echo
    • ncurses_nonl — Do not translate newline and carriage return / line feed
    • ncurses_noqiflush — Do not flush on signal characters
    • ncurses_noraw — Switch terminal out of raw mode
    • ncurses_pair_content — Retrieves foreground and background colors of a color pair
    • ncurses_panel_above — Returns the panel above panel
    • ncurses_panel_below — Returns the panel below panel
    • ncurses_panel_window — Returns the window associated with panel
    • ncurses_pnoutrefresh — Copies a region from a pad into the virtual screen
    • ncurses_prefresh — Copies a region from a pad into the virtual screen
    • ncurses_putp — Apply padding information to the string and output it
    • ncurses_qiflush — Flush on signal characters
    • ncurses_raw — Switch terminal into raw mode
    • ncurses_refresh — Refresh screen
    • ncurses_replace_panel — Replaces the window associated with panel
    • ncurses_reset_prog_mode — Resets the prog mode saved by def_prog_mode
    • ncurses_reset_shell_mode — Resets the shell mode saved by def_shell_mode
    • ncurses_resetty — Restores saved terminal state
    • ncurses_savetty — Saves terminal state
    • ncurses_scr_dump — Dump screen content to file
    • ncurses_scr_init — Initialize screen from file dump
    • ncurses_scr_restore — Restore screen from file dump
    • ncurses_scr_set — Inherit screen from file dump
    • ncurses_scrl — Scroll window content up or down without changing current position
    • ncurses_show_panel — Places an invisible panel on top of the stack, making it visible
    • ncurses_slk_attr — Returns current soft label key attribute
    • ncurses_slk_attroff — Turn off the given attributes for soft function-key labels
    • ncurses_slk_attron — Turn on the given attributes for soft function-key labels
    • ncurses_slk_attrset — Set given attributes for soft function-key labels
    • ncurses_slk_clear — Clears soft labels from screen
    • ncurses_slk_color — Sets color for soft label keys
    • ncurses_slk_init — Initializes soft label key functions
    • ncurses_slk_noutrefresh — Copies soft label keys to virtual screen
    • ncurses_slk_refresh — Copies soft label keys to screen
    • ncurses_slk_restore — Restores soft label keys
    • ncurses_slk_set — Sets function key labels
    • ncurses_slk_touch — Forces output when ncurses_slk_noutrefresh is performed
    • ncurses_standend — Stop using 'standout' attribute
    • ncurses_standout — Start using 'standout' attribute
    • ncurses_start_color — Initializes color functionality
    • ncurses_termattrs — Returns a logical OR of all attribute flags supported by terminal
    • ncurses_termname — Returns terminals (short)-name
    • ncurses_timeout — Set timeout for special key sequences
    • ncurses_top_panel — Moves a visible panel to the top of the stack
    • ncurses_typeahead — Specify different filedescriptor for typeahead checking
    • ncurses_ungetch — Put a character back into the input stream
    • ncurses_ungetmouse — Pushes mouse event to queue
    • ncurses_update_panels — Refreshes the virtual screen to reflect the relations between panels in the stack
    • ncurses_use_default_colors — Assign terminal default colors to color id -1
    • ncurses_use_env — Control use of environment information about terminal size
    • ncurses_use_extended_names — Control use of extended names in terminfo descriptions
    • ncurses_vidattr — Display the string on the terminal in the video attribute mode
    • ncurses_vline — Draw a vertical line at current position using an attributed character and max. n characters long
    • ncurses_waddch — Adds character at current position in a window and advance cursor
    • ncurses_waddstr — Outputs text at current postion in window
    • ncurses_wattroff — Turns off attributes for a window
    • ncurses_wattron — Turns on attributes for a window
    • ncurses_wattrset — Set the attributes for a window
    • ncurses_wborder — Draws a border around the window using attributed characters
    • ncurses_wclear — Clears window
    • ncurses_wcolor_set — Sets windows color pairings
    • ncurses_werase — Erase window contents
    • ncurses_wgetch — Reads a character from keyboard (window)
    • ncurses_whline — Draws a horizontal line in a window at current position using an attributed character and max. n characters long
    • ncurses_wmouse_trafo — Transforms window/stdscr coordinates
    • ncurses_wmove — Moves windows output position
    • ncurses_wnoutrefresh — Copies window to virtual screen
    • ncurses_wrefresh — Refresh window on terminal screen
    • ncurses_wstandend — End standout mode for a window
    • ncurses_wstandout — Enter standout mode for a window
    • ncurses_wvline — Draws a vertical line in a window at current position using an attributed character and max. n characters long
针对命令行的扩展
简介
针对命令行的扩展


简介

ncurses (new curses) is a free software emulation of curses in System V Rel 4.0 (and above). It uses terminfo format, supports pads, colors, multiple highlights, form characters and function key mapping. Because of the interactive nature of this library, it will be of little use for writing Web applications, but may be useful when writing scripts meant using PHP from the command line.

The features available, such as colors, depend on the terminal that you are using. Use functions such as ncurses_has_colors(), ncurses_can_change_color(), and ncurses_has_ic() to check for individual capabilities.

Note:

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.3.0.

ncurses is available for the following platforms:

  • AIX
  • BeOS
  • BSD variants (FreeBSD, NetBSD, OpenBSD)
  • Cygwin
  • Digital Unix (aka OSF1)
  • GNU/Linux
  • HPUX
  • IRIX64
  • Mac OS X
  • OS/2
  • QNX
  • SCO OpenServer
  • Solaris
  • Tru64

Ncurses
安装／配置
Ncurses


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Ncurses


需求

You need the ncurses libraries and headerfiles. Download the latest version from the » ftp://ftp.gnu.org/pub/gnu/ncurses/ or from an other GNU-Mirror.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/ncurses.

Wide character CRT screen handling (ncursesw) support was added in version 1.0.1 of this PECL extension.

需求
运行时配置
安装／配置


资源类型

This extension defines window, panel and pad resources.

运行时配置
预定义常量
安装／配置


预定义常量

Table of Contents

  • Error codes
  • Colors
  • Keys
  • Mouse

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

资源类型
Error codes
Ncurses


Error codes

On error ncurses functions return -1. Some functions return 0 on success. See the relevant pages in the documentation for actual return values.

预定义常量
Colors
预定义常量


Colors

ncurses color constants
constant | meaning
NCURSES_COLOR_BLACK | no color (black)
NCURSES_COLOR_WHITE | white
NCURSES_COLOR_RED | red - supported when terminal is in color mode
NCURSES_COLOR_GREEN | green - supported when terminal is in color mode
NCURSES_COLOR_YELLOW | yellow - supported when terminal is in color mode
NCURSES_COLOR_BLUE | blue - supported when terminal is in color mode
NCURSES_COLOR_CYAN | cyan - supported when terminal is in color mode
NCURSES_COLOR_MAGENTA | magenta - supported when terminal is in color mode
Error codes
Keys
预定义常量


Keys

ncurses key constants
constant | meaning
NCURSES_KEY_F0 - NCURSES_KEY_F64 | function keys F1 - F64
NCURSES_KEY_DOWN | down arrow
NCURSES_KEY_UP | up arrow
NCURSES_KEY_LEFT | left arrow
NCURSES_KEY_RIGHT | right arrow
NCURSES_KEY_HOME | home key (upward+left arrow)
NCURSES_KEY_BACKSPACE | backspace
NCURSES_KEY_DL | delete line
NCURSES_KEY_IL | insert line
NCURSES_KEY_DC | delete character
NCURSES_KEY_IC | insert char or enter insert mode
NCURSES_KEY_EIC | exit insert char mode
NCURSES_KEY_CLEAR | clear screen
NCURSES_KEY_EOS | clear to end of screen
NCURSES_KEY_EOL | clear to end of line
NCURSES_KEY_SF | scroll one line forward
NCURSES_KEY_SR | scroll one line backward
NCURSES_KEY_NPAGE | next page
NCURSES_KEY_PPAGE | previous page
NCURSES_KEY_STAB | set tab
NCURSES_KEY_CTAB | clear tab
NCURSES_KEY_CATAB | clear all tabs
NCURSES_KEY_SRESET | soft (partial) reset
NCURSES_KEY_RESET | reset or hard reset
NCURSES_KEY_PRINT | print
NCURSES_KEY_LL | lower left
NCURSES_KEY_A1 | upper left of keypad
NCURSES_KEY_A3 | upper right of keypad
NCURSES_KEY_B2 | center of keypad
NCURSES_KEY_C1 | lower left of keypad
NCURSES_KEY_C3 | lower right of keypad
NCURSES_KEY_BTAB | back tab
NCURSES_KEY_BEG | beginning
NCURSES_KEY_CANCEL | cancel
NCURSES_KEY_CLOSE | close
NCURSES_KEY_COMMAND | cmd (command)
NCURSES_KEY_COPY | copy
NCURSES_KEY_CREATE | create
NCURSES_KEY_END | end
NCURSES_KEY_EXIT | exit
NCURSES_KEY_FIND | find
NCURSES_KEY_HELP | help
NCURSES_KEY_MARK | mark
NCURSES_KEY_MESSAGE | message
NCURSES_KEY_MOVE | move
NCURSES_KEY_NEXT | next
NCURSES_KEY_OPEN | open
NCURSES_KEY_OPTIONS | options
NCURSES_KEY_PREVIOUS | previous
NCURSES_KEY_REDO | redo
NCURSES_KEY_REFERENCE | ref (reference)
NCURSES_KEY_REFRESH | refresh
NCURSES_KEY_REPLACE | replace
NCURSES_KEY_RESTART | restart
NCURSES_KEY_RESUME | resume
NCURSES_KEY_SAVE | save
NCURSES_KEY_SBEG | shiftet beg (beginning)
NCURSES_KEY_SCANCEL | shifted cancel
NCURSES_KEY_SCOMMAND | shifted command
NCURSES_KEY_SCOPY | shifted copy
NCURSES_KEY_SCREATE | shifted create
NCURSES_KEY_SDC | shifted delete char
NCURSES_KEY_SDL | shifted delete line
NCURSES_KEY_SELECT | select
NCURSES_KEY_SEND | shifted end
NCURSES_KEY_SEOL | shifted end of line
NCURSES_KEY_SEXIT | shifted exit
NCURSES_KEY_SFIND | shifted find
NCURSES_KEY_SHELP | shifted help
NCURSES_KEY_SHOME | shifted home
NCURSES_KEY_SIC | shifted input
NCURSES_KEY_SLEFT | shifted left arrow
NCURSES_KEY_SMESSAGE | shifted message
NCURSES_KEY_SMOVE | shifted move
NCURSES_KEY_SNEXT | shifted next
NCURSES_KEY_SOPTIONS | shifted options
NCURSES_KEY_SPREVIOUS | shifted previous
NCURSES_KEY_SPRINT | shifted print
NCURSES_KEY_SREDO | shifted redo
NCURSES_KEY_SREPLACE | shifted replace
NCURSES_KEY_SRIGHT | shifted right arrow
NCURSES_KEY_SRSUME | shifted resume
NCURSES_KEY_SSAVE | shifted save
NCURSES_KEY_SSUSPEND | shifted suspend
NCURSES_KEY_UNDO | undo
NCURSES_KEY_MOUSE | mouse event has occurred
NCURSES_KEY_MAX | maximum key value
Colors
Mouse
预定义常量


Mouse

mouse constants
Constant | meaning
NCURSES_BUTTON1_RELEASED - NCURSES_BUTTON4_RELEASED | button (1-4) released
NCURSES_BUTTON1_PRESSED - NCURSES_BUTTON4_PRESSED | button (1-4) pressed
NCURSES_BUTTON1_CLICKED - NCURSES_BUTTON4_CLICKED | button (1-4) clicked
NCURSES_BUTTON1_DOUBLE_CLICKED - NCURSES_BUTTON4_DOUBLE_CLICKED | button (1-4) double clicked
NCURSES_BUTTON1_TRIPLE_CLICKED - NCURSES_BUTTON4_TRIPLE_CLICKED | button (1-4) triple clicked
NCURSES_BUTTON_CTRL | ctrl pressed during click
NCURSES_BUTTON_SHIFT | shift pressed during click
NCURSES_BUTTON_ALT | alt pressed during click
NCURSES_ALL_MOUSE_EVENTS | report all mouse events
NCURSES_REPORT_MOUSE_POSITION | report mouse position
Keys
Ncurses 函数
预定义常量


Ncurses 函数

Table of Contents

  • ncurses_addch — Add character at current position and advance cursor
  • ncurses_addchnstr — Add attributed string with specified length at current position
  • ncurses_addchstr — Add attributed string at current position
  • ncurses_addnstr — Add string with specified length at current position
  • ncurses_addstr — Output text at current position
  • ncurses_assume_default_colors — Define default colors for color 0
  • ncurses_attroff — Turn off the given attributes
  • ncurses_attron — Turn on the given attributes
  • ncurses_attrset — Set given attributes
  • ncurses_baudrate — Returns baudrate of terminal
  • ncurses_beep — Let the terminal beep
  • ncurses_bkgd — Set background property for terminal screen
  • ncurses_bkgdset — Control screen background
  • ncurses_border — Draw a border around the screen using attributed characters
  • ncurses_bottom_panel — Moves a visible panel to the bottom of the stack
  • ncurses_can_change_color — Checks if terminal color definitions can be changed
  • ncurses_cbreak — Switch off input buffering
  • ncurses_clear — Clear screen
  • ncurses_clrtobot — Clear screen from current position to bottom
  • ncurses_clrtoeol — Clear screen from current position to end of line
  • ncurses_color_content — Retrieves RGB components of a color
  • ncurses_color_set — Set active foreground and background colors
  • ncurses_curs_set — Set cursor state
  • ncurses_def_prog_mode — Saves terminals (program) mode
  • ncurses_def_shell_mode — Saves terminals (shell) mode
  • ncurses_define_key — Define a keycode
  • ncurses_del_panel — Remove panel from the stack and delete it (but not the associated window)
  • ncurses_delay_output — Delay output on terminal using padding characters
  • ncurses_delch — Delete character at current position, move rest of line left
  • ncurses_deleteln — Delete line at current position, move rest of screen up
  • ncurses_delwin — Delete a ncurses window
  • ncurses_doupdate — Write all prepared refreshes to terminal
  • ncurses_echo — Activate keyboard input echo
  • ncurses_echochar — Single character output including refresh
  • ncurses_end — Stop using ncurses, clean up the screen
  • ncurses_erase — Erase terminal screen
  • ncurses_erasechar — Returns current erase character
  • ncurses_filter — Set LINES for iniscr() and newterm() to 1
  • ncurses_flash — Flash terminal screen (visual bell)
  • ncurses_flushinp — Flush keyboard input buffer
  • ncurses_getch — Read a character from keyboard
  • ncurses_getmaxyx — Returns the size of a window
  • ncurses_getmouse — Reads mouse event
  • ncurses_getyx — Returns the current cursor position for a window
  • ncurses_halfdelay — Put terminal into halfdelay mode
  • ncurses_has_colors — Checks if terminal has color capabilities
  • ncurses_has_ic — Check for insert- and delete-capabilities
  • ncurses_has_il — Check for line insert- and delete-capabilities
  • ncurses_has_key — Check for presence of a function key on terminal keyboard
  • ncurses_hide_panel — Remove panel from the stack, making it invisible
  • ncurses_hline — Draw a horizontal line at current position using an attributed character and max. n characters long
  • ncurses_inch — Get character and attribute at current position
  • ncurses_init_color — Define a terminal color
  • ncurses_init_pair — Define a color pair
  • ncurses_init — Initialize ncurses
  • ncurses_insch — Insert character moving rest of line including character at current position
  • ncurses_insdelln — Insert lines before current line scrolling down (negative numbers delete and scroll up)
  • ncurses_insertln — Insert a line, move rest of screen down
  • ncurses_insstr — Insert string at current position, moving rest of line right
  • ncurses_instr — Reads string from terminal screen
  • ncurses_isendwin — Ncurses is in endwin mode, normal screen output may be performed
  • ncurses_keyok — Enable or disable a keycode
  • ncurses_keypad — Turns keypad on or off
  • ncurses_killchar — Returns current line kill character
  • ncurses_longname — Returns terminals description
  • ncurses_meta — Enables/Disable 8-bit meta key information
  • ncurses_mouse_trafo — Transforms coordinates
  • ncurses_mouseinterval — Set timeout for mouse button clicks
  • ncurses_mousemask — Sets mouse options
  • ncurses_move_panel — Moves a panel so that its upper-left corner is at [startx, starty]
  • ncurses_move — Move output position
  • ncurses_mvaddch — Move current position and add character
  • ncurses_mvaddchnstr — Move position and add attributed string with specified length
  • ncurses_mvaddchstr — Move position and add attributed string
  • ncurses_mvaddnstr — Move position and add string with specified length
  • ncurses_mvaddstr — Move position and add string
  • ncurses_mvcur — Move cursor immediately
  • ncurses_mvdelch — Move position and delete character, shift rest of line left
  • ncurses_mvgetch — Move position and get character at new position
  • ncurses_mvhline — Set new position and draw a horizontal line using an attributed character and max. n characters long
  • ncurses_mvinch — Move position and get attributed character at new position
  • ncurses_mvvline — Set new position and draw a vertical line using an attributed character and max. n characters long
  • ncurses_mvwaddstr — Add string at new position in window
  • ncurses_napms — Sleep
  • ncurses_new_panel — Create a new panel and associate it with window
  • ncurses_newpad — Creates a new pad (window)
  • ncurses_newwin — Create a new window
  • ncurses_nl — Translate newline and carriage return / line feed
  • ncurses_nocbreak — Switch terminal to cooked mode
  • ncurses_noecho — Switch off keyboard input echo
  • ncurses_nonl — Do not translate newline and carriage return / line feed
  • ncurses_noqiflush — Do not flush on signal characters
  • ncurses_noraw — Switch terminal out of raw mode
  • ncurses_pair_content — Retrieves foreground and background colors of a color pair
  • ncurses_panel_above — Returns the panel above panel
  • ncurses_panel_below — Returns the panel below panel
  • ncurses_panel_window — Returns the window associated with panel
  • ncurses_pnoutrefresh — Copies a region from a pad into the virtual screen
  • ncurses_prefresh — Copies a region from a pad into the virtual screen
  • ncurses_putp — Apply padding information to the string and output it
  • ncurses_qiflush — Flush on signal characters
  • ncurses_raw — Switch terminal into raw mode
  • ncurses_refresh — Refresh screen
  • ncurses_replace_panel — Replaces the window associated with panel
  • ncurses_reset_prog_mode — Resets the prog mode saved by def_prog_mode
  • ncurses_reset_shell_mode — Resets the shell mode saved by def_shell_mode
  • ncurses_resetty — Restores saved terminal state
  • ncurses_savetty — Saves terminal state
  • ncurses_scr_dump — Dump screen content to file
  • ncurses_scr_init — Initialize screen from file dump
  • ncurses_scr_restore — Restore screen from file dump
  • ncurses_scr_set — Inherit screen from file dump
  • ncurses_scrl — Scroll window content up or down without changing current position
  • ncurses_show_panel — Places an invisible panel on top of the stack, making it visible
  • ncurses_slk_attr — Returns current soft label key attribute
  • ncurses_slk_attroff — Turn off the given attributes for soft function-key labels
  • ncurses_slk_attron — Turn on the given attributes for soft function-key labels
  • ncurses_slk_attrset — Set given attributes for soft function-key labels
  • ncurses_slk_clear — Clears soft labels from screen
  • ncurses_slk_color — Sets color for soft label keys
  • ncurses_slk_init — Initializes soft label key functions
  • ncurses_slk_noutrefresh — Copies soft label keys to virtual screen
  • ncurses_slk_refresh — Copies soft label keys to screen
  • ncurses_slk_restore — Restores soft label keys
  • ncurses_slk_set — Sets function key labels
  • ncurses_slk_touch — Forces output when ncurses_slk_noutrefresh is performed
  • ncurses_standend — Stop using 'standout' attribute
  • ncurses_standout — Start using 'standout' attribute
  • ncurses_start_color — Initializes color functionality
  • ncurses_termattrs — Returns a logical OR of all attribute flags supported by terminal
  • ncurses_termname — Returns terminals (short)-name
  • ncurses_timeout — Set timeout for special key sequences
  • ncurses_top_panel — Moves a visible panel to the top of the stack
  • ncurses_typeahead — Specify different filedescriptor for typeahead checking
  • ncurses_ungetch — Put a character back into the input stream
  • ncurses_ungetmouse — Pushes mouse event to queue
  • ncurses_update_panels — Refreshes the virtual screen to reflect the relations between panels in the stack
  • ncurses_use_default_colors — Assign terminal default colors to color id -1
  • ncurses_use_env — Control use of environment information about terminal size
  • ncurses_use_extended_names — Control use of extended names in terminfo descriptions
  • ncurses_vidattr — Display the string on the terminal in the video attribute mode
  • ncurses_vline — Draw a vertical line at current position using an attributed character and max. n characters long
  • ncurses_waddch — Adds character at current position in a window and advance cursor
  • ncurses_waddstr — Outputs text at current postion in window
  • ncurses_wattroff — Turns off attributes for a window
  • ncurses_wattron — Turns on attributes for a window
  • ncurses_wattrset — Set the attributes for a window
  • ncurses_wborder — Draws a border around the window using attributed characters
  • ncurses_wclear — Clears window
  • ncurses_wcolor_set — Sets windows color pairings
  • ncurses_werase — Erase window contents
  • ncurses_wgetch — Reads a character from keyboard (window)
  • ncurses_whline — Draws a horizontal line in a window at current position using an attributed character and max. n characters long
  • ncurses_wmouse_trafo — Transforms window/stdscr coordinates
  • ncurses_wmove — Moves windows output position
  • ncurses_wnoutrefresh — Copies window to virtual screen
  • ncurses_wrefresh — Refresh window on terminal screen
  • ncurses_wstandend — End standout mode for a window
  • ncurses_wstandout — Enter standout mode for a window
  • ncurses_wvline — Draws a vertical line in a window at current position using an attributed character and max. n characters long
Mouse
ncurses_addch
Ncurses


Add character at current position and advance cursor

Ncurses 函数
ncurses_addchnstr
Ncurses 函数
PHP Manual

ncurses_addch

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_addch — Add character at current position and advance cursor

说明

int ncurses_addch ( int $ch )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

ch

Ncurses 函数
ncurses_addchnstr
Ncurses 函数


Add attributed string with specified length at current position

ncurses_addch
ncurses_addchstr
Ncurses 函数
PHP Manual

ncurses_addchnstr

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_addchnstr — Add attributed string with specified length at current position

说明

int ncurses_addchnstr ( string $s , int $n )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

s

n

ncurses_addch
ncurses_addchstr
Ncurses 函数


Add attributed string at current position

ncurses_addchnstr
ncurses_addnstr
Ncurses 函数
PHP Manual

ncurses_addchstr

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_addchstr — Add attributed string at current position

说明

int ncurses_addchstr ( string $s )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

s

ncurses_addchnstr
ncurses_addnstr
Ncurses 函数


Add string with specified length at current position

ncurses_addchstr
ncurses_addstr
Ncurses 函数
PHP Manual

ncurses_addnstr

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_addnstr — Add string with specified length at current position

说明

int ncurses_addnstr ( string $s , int $n )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

s

n

ncurses_addchstr
ncurses_addstr
Ncurses 函数


Output text at current position

ncurses_addnstr
ncurses_assume_default_colors
Ncurses 函数
PHP Manual

ncurses_addstr

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_addstr — Output text at current position

说明

int ncurses_addstr ( string $text )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

text

ncurses_addnstr
ncurses_assume_default_colors
Ncurses 函数


Define default colors for color 0

ncurses_addstr
ncurses_attroff
Ncurses 函数
PHP Manual

ncurses_assume_default_colors

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_assume_default_colors — Define default colors for color 0

说明

int ncurses_assume_default_colors ( int $fg , int $bg )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

fg

bg

ncurses_addstr
ncurses_attroff
Ncurses 函数


Turn off the given attributes

ncurses_assume_default_colors
ncurses_attron
Ncurses 函数
PHP Manual

ncurses_attroff

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_attroff — Turn off the given attributes

说明

int ncurses_attroff ( int $attributes )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

attributes

ncurses_assume_default_colors
ncurses_attron
Ncurses 函数


Turn on the given attributes

ncurses_attroff
ncurses_attrset
Ncurses 函数
PHP Manual

ncurses_attron

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_attron — Turn on the given attributes

说明

int ncurses_attron ( int $attributes )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

attributes

ncurses_attroff
ncurses_attrset
Ncurses 函数


Set given attributes

ncurses_attron
ncurses_baudrate
Ncurses 函数
PHP Manual

ncurses_attrset

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_attrset — Set given attributes

说明

int ncurses_attrset ( int $attributes )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

attributes

ncurses_attron
ncurses_baudrate
Ncurses 函数


Returns baudrate of terminal

ncurses_attrset
ncurses_beep
Ncurses 函数
PHP Manual

ncurses_baudrate

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_baudrate — Returns baudrate of terminal

说明

int ncurses_baudrate ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

ncurses_attrset
ncurses_beep
Ncurses 函数


Let the terminal beep

ncurses_baudrate
ncurses_bkgd
Ncurses 函数
PHP Manual

ncurses_beep

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_beep — Let the terminal beep

说明

int ncurses_beep ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

ncurses_beep() sends an audible alert (bell) and if its not possible flashes the screen.

参见

  • ncurses_flash() - Flash terminal screen (visual bell)

ncurses_baudrate
ncurses_bkgd
Ncurses 函数


Set background property for terminal screen

ncurses_beep
ncurses_bkgdset
Ncurses 函数
PHP Manual

ncurses_bkgd

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_bkgd — Set background property for terminal screen

说明

int ncurses_bkgd ( int $attrchar )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

attrchar

ncurses_beep
ncurses_bkgdset
Ncurses 函数


Control screen background

ncurses_bkgd
ncurses_border
Ncurses 函数
PHP Manual

ncurses_bkgdset

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_bkgdset — Control screen background

说明

void ncurses_bkgdset ( int $attrchar )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

attrchar

ncurses_bkgd
ncurses_border
Ncurses 函数


Draw a border around the screen using attributed characters

ncurses_bkgdset
ncurses_bottom_panel
Ncurses 函数
PHP Manual

ncurses_border

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_border — Draw a border around the screen using attributed characters

说明

int ncurses_border ( int $left , int $right , int $top , int $bottom , int $tl_corner , int $tr_corner , int $bl_corner , int $br_corner )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Draws the specified lines and corners around the main window.

Use ncurses_wborder() for borders around subwindows!

参数

Every parameter expects 0 to draw a line or 1 to skip it.

left

right

top

bottom

tl_corner

Top left corner

tr_corner

Top right corner

bl_corner

Bottom left corner

br_corner

Bottom right corner

参见

  • ncurses_wborder() - Draws a border around the window using attributed characters

ncurses_bkgdset
ncurses_bottom_panel
Ncurses 函数


Moves a visible panel to the bottom of the stack

ncurses_border
ncurses_can_change_color
Ncurses 函数
PHP Manual

ncurses_bottom_panel

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_bottom_panel — Moves a visible panel to the bottom of the stack

说明

int ncurses_bottom_panel ( resource $panel )
Warning

本函数还未编写文档，仅有参数列表。

参数

panel

ncurses_border
ncurses_can_change_color
Ncurses 函数


Checks if terminal color definitions can be changed

ncurses_bottom_panel
ncurses_cbreak
Ncurses 函数
PHP Manual

ncurses_can_change_color

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_can_change_color — Checks if terminal color definitions can be changed

说明

bool ncurses_can_change_color ( void )

Checks whether the terminal has color capabilities and whether the programmer can change color definitions using ncurses_init_color(). ncurses must be initialized using ncurses_init() before calling this function.

参数

此函数没有参数。

返回值

Return TRUE if the programmer can change color definitions, FALSE otherwise.

参见

  • ncurses_has_colors() - Checks if terminal has color capabilities
  • ncurses_init_color() - Define a terminal color
  • ncurses_start_color() - Initializes color functionality

ncurses_bottom_panel
ncurses_cbreak
Ncurses 函数


Switch off input buffering

ncurses_can_change_color
ncurses_clear
Ncurses 函数
PHP Manual

ncurses_cbreak

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_cbreak — Switch off input buffering

说明

bool ncurses_cbreak ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Disables line buffering and character processing (interrupt and flow control characters are unaffected), making characters typed by the user immediately available to the program.

返回值

Returns TRUE or NCURSES_ERR if any error occurred.

参见

  • ncurses_nocbreak() - Switch terminal to cooked mode

ncurses_can_change_color
ncurses_clear
Ncurses 函数


Clear screen

ncurses_cbreak
ncurses_clrtobot
Ncurses 函数
PHP Manual

ncurses_clear

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_clear — Clear screen

说明

bool ncurses_clear ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Clears the screen completely without setting blanks.

Note: ncurses_clear() clears the screen without setting blanks, which have the current background rendition. To clear screen with blanks, use ncurses_erase().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ncurses_erase() - Erase terminal screen

ncurses_cbreak
ncurses_clrtobot
Ncurses 函数


Clear screen from current position to bottom

ncurses_clear
ncurses_clrtoeol
Ncurses 函数
PHP Manual

ncurses_clrtobot

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_clrtobot — Clear screen from current position to bottom

说明

bool ncurses_clrtobot ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Erases all lines from cursor to end of screen and creates blanks. Blanks created by ncurses_clrtobot() have the current background rendition.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ncurses_clear() - Clear screen
  • ncurses_clrtoeol() - Clear screen from current position to end of line

ncurses_clear
ncurses_clrtoeol
Ncurses 函数


Clear screen from current position to end of line

ncurses_clrtobot
ncurses_color_content
Ncurses 函数
PHP Manual

ncurses_clrtoeol

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_clrtoeol — Clear screen from current position to end of line

说明

bool ncurses_clrtoeol ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Erases the current line from cursor position to the end. Blanks created by ncurses_clrtoeol() have the current background rendition.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ncurses_clear() - Clear screen
  • ncurses_clrtobot() - Clear screen from current position to bottom

ncurses_clrtobot
ncurses_color_content
Ncurses 函数


Retrieves RGB components of a color

ncurses_clrtoeol
ncurses_color_set
Ncurses 函数
PHP Manual

ncurses_color_content

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_color_content — Retrieves RGB components of a color

说明

int ncurses_color_content ( int $color , int &$r , int &$g , int &$b )

Retrieves the red, green, and blue components for the given color definition. Terminal color capabilities must be initialized with ncurses_start_color() prior to calling this function.

参数

color

The number of the color to retrieve information for. May be one of the pre-defined color constants.

r

A reference to which to return the red component of the color. The value returned to the reference will be between 0 and 1000.

g

A reference to which to return the green component of the color. The value returned to the reference will be between 0 and 1000.

b

A reference to which to return the blue component of the color. The value returned to the reference will be between 0 and 1000.

返回值

Returns -1 if the function was successful, and 0 if ncurses or terminal color capabilities have not been initialized.

参见

  • ncurses_init_color() - Define a terminal color
  • ncurses_start_color() - Initializes color functionality

ncurses_clrtoeol
ncurses_color_set
Ncurses 函数


Set active foreground and background colors

ncurses_color_content
ncurses_curs_set
Ncurses 函数
PHP Manual

ncurses_color_set

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_color_set — Set active foreground and background colors

说明

int ncurses_color_set ( int $pair )

Sets the active foreground and background colors. Any characters written after this function is invoked will have these colors. This function requires terminal colors to be supported and initialized using ncurses_start_color() beforehand.

ncurses uses color pairs to specify both foreground and background colors. Use ncurses_init_pair() to define a color pair.

参数

pair

The color pair from which to get the foreground and background colors to set as the active colors.

返回值

Returns -1 on success, and 0 on failure.

范例

Example #1 Writing a string with a specified color to the screen

<?php
ncurses_init();

// If the terminal supports colors, initialize and set active color
if (ncurses_has_colors()) {
    ncurses_start_color();
    ncurses_init_pair(1, NCURSES_COLOR_YELLOW, NCURSES_COLOR_BLUE);
    ncurses_color_set(1);
}

// Write a string at specified location
ncurses_mvaddstr(10, 10, "Hello world! Yellow on blue text!");

// Flush output to screen
ncurses_refresh();

ncurses_end();
?>

参见

  • ncurses_init_pair() - Define a color pair
  • ncurses_start_color() - Initializes color functionality

ncurses_color_content
ncurses_curs_set
Ncurses 函数


Set cursor state

ncurses_color_set
ncurses_def_prog_mode
Ncurses 函数
PHP Manual

ncurses_curs_set

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_curs_set — Set cursor state

说明

int ncurses_curs_set ( int $visibility )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

visibility

ncurses_color_set
ncurses_def_prog_mode
Ncurses 函数


Saves terminals (program) mode

ncurses_curs_set
ncurses_def_shell_mode
Ncurses 函数
PHP Manual

ncurses_def_prog_mode

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_def_prog_mode — Saves terminals (program) mode

说明

bool ncurses_def_prog_mode ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Saves the current terminal modes for program (in curses) for use by ncurses_reset_prog_mode().

返回值

Returns FALSE on success, otherwise TRUE.

参见

  • ncurses_reset_prog_mode() - Resets the prog mode saved by def_prog_mode

ncurses_curs_set
ncurses_def_shell_mode
Ncurses 函数


Saves terminals (shell) mode

ncurses_def_prog_mode
ncurses_define_key
Ncurses 函数
PHP Manual

ncurses_def_shell_mode

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_def_shell_mode — Saves terminals (shell) mode

说明

bool ncurses_def_shell_mode ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Saves the current terminal modes for shell (not in curses) for use by ncurses_reset_shell_mode().

返回值

Returns FALSE on success, TRUE otherwise.

参见

  • ncurses_reset_shell_mode() - Resets the shell mode saved by def_shell_mode

ncurses_def_prog_mode
ncurses_define_key
Ncurses 函数


Define a keycode

ncurses_def_shell_mode
ncurses_del_panel
Ncurses 函数
PHP Manual

ncurses_define_key

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_define_key — Define a keycode

说明

int ncurses_define_key ( string $definition , int $keycode )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

definition

keycode

ncurses_def_shell_mode
ncurses_del_panel
Ncurses 函数


Remove panel from the stack and delete it (but not the associated window)

ncurses_define_key
ncurses_delay_output
Ncurses 函数
PHP Manual

ncurses_del_panel

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_del_panel — Remove panel from the stack and delete it (but not the associated window)

说明

bool ncurses_del_panel ( resource $panel )
Warning

本函数还未编写文档，仅有参数列表。

参数

panel

ncurses_define_key
ncurses_delay_output
Ncurses 函数


Delay output on terminal using padding characters

ncurses_del_panel
ncurses_delch
Ncurses 函数
PHP Manual

ncurses_delay_output

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_delay_output — Delay output on terminal using padding characters

说明

int ncurses_delay_output ( int $milliseconds )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

milliseconds

ncurses_del_panel
ncurses_delch
Ncurses 函数


Delete character at current position, move rest of line left

ncurses_delay_output
ncurses_deleteln
Ncurses 函数
PHP Manual

ncurses_delch

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_delch — Delete character at current position, move rest of line left

说明

bool ncurses_delch ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Deletes the character under the cursor. All characters to the right of the cursor on the same line are moved to the left one position and the last character on the line is filled with a blank. The cursor position does not change.

返回值

Returns FALSE on success, TRUE otherwise.

参见

  • ncurses_deleteln() - Delete line at current position, move rest of screen up

ncurses_delay_output
ncurses_deleteln
Ncurses 函数


Delete line at current position, move rest of screen up

ncurses_delch
ncurses_delwin
Ncurses 函数
PHP Manual

ncurses_deleteln

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_deleteln — Delete line at current position, move rest of screen up

说明

bool ncurses_deleteln ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Deletes the current line under cursor position. All lines below the current line are moved up one line. The bottom line of window is cleared. Cursor position does not change.

返回值

Returns FALSE on success, otherwise TRUE.

参见

  • ncurses_delch() - Delete character at current position, move rest of line left

ncurses_delch
ncurses_delwin
Ncurses 函数


Delete a ncurses window

ncurses_deleteln
ncurses_doupdate
Ncurses 函数
PHP Manual

ncurses_delwin

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_delwin — Delete a ncurses window

说明

bool ncurses_delwin ( resource $window )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

window

ncurses_deleteln
ncurses_doupdate
Ncurses 函数


Write all prepared refreshes to terminal

ncurses_delwin
ncurses_echo
Ncurses 函数
PHP Manual

ncurses_doupdate

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_doupdate — Write all prepared refreshes to terminal

说明

bool ncurses_doupdate ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Compares the virtual screen to the physical screen and updates the physical screen. This way is more effective than using multiple refresh calls.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ncurses_delwin
ncurses_echo
Ncurses 函数


Activate keyboard input echo

ncurses_doupdate
ncurses_echochar
Ncurses 函数
PHP Manual

ncurses_echo

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_echo — Activate keyboard input echo

说明

bool ncurses_echo ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Enables echo mode. All characters typed by user are echoed by ncurses_getch().

返回值

Returns FALSE on success, TRUE if any error occurred.

参见

  • ncurses_noecho() - Switch off keyboard input echo to disable echo mode

ncurses_doupdate
ncurses_echochar
Ncurses 函数


Single character output including refresh

ncurses_echo
ncurses_end
Ncurses 函数
PHP Manual

ncurses_echochar

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_echochar — Single character output including refresh

说明

int ncurses_echochar ( int $character )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

character

ncurses_echo
ncurses_end
Ncurses 函数


Stop using ncurses, clean up the screen

ncurses_echochar
ncurses_erase
Ncurses 函数
PHP Manual

ncurses_end

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_end — Stop using ncurses, clean up the screen

说明

int ncurses_end ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

ncurses_echochar
ncurses_erase
Ncurses 函数


Erase terminal screen

ncurses_end
ncurses_erasechar
Ncurses 函数
PHP Manual

ncurses_erase

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_erase — Erase terminal screen

说明

bool ncurses_erase ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Fills the terminal screen with blanks.

Created blanks have the current background rendition, set by ncurses_bkgd().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ncurses_bkgd() - Set background property for terminal screen
  • ncurses_clear() - Clear screen

ncurses_end
ncurses_erasechar
Ncurses 函数


Returns current erase character

ncurses_erase
ncurses_filter
Ncurses 函数
PHP Manual

ncurses_erasechar

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_erasechar — Returns current erase character

说明

string ncurses_erasechar ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Returns the current erase character.

返回值

The current erase char, as a string.

参见

  • ncurses_killchar() - Returns current line kill character

ncurses_erase
ncurses_filter
Ncurses 函数


Set LINES for iniscr() and newterm() to 1

ncurses_erasechar
ncurses_flash
Ncurses 函数
PHP Manual

ncurses_filter

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_filter — Set LINES for iniscr() and newterm() to 1

说明

void ncurses_filter ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

ncurses_erasechar
ncurses_flash
Ncurses 函数


Flash terminal screen (visual bell)

ncurses_filter
ncurses_flushinp
Ncurses 函数
PHP Manual

ncurses_flash

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_flash — Flash terminal screen (visual bell)

说明

bool ncurses_flash ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Flashes the screen, and if its not possible, sends an audible alert (bell).

返回值

Returns FALSE on success, otherwise TRUE.

参见

  • ncurses_beep() - Let the terminal beep

ncurses_filter
ncurses_flushinp
Ncurses 函数


Flush keyboard input buffer

ncurses_flash
ncurses_getch
Ncurses 函数
PHP Manual

ncurses_flushinp

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_flushinp — Flush keyboard input buffer

说明

bool ncurses_flushinp ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Throws away any typeahead that has been typed and has not yet been read by your program.

返回值

Returns FALSE on success, otherwise TRUE.

ncurses_flash
ncurses_getch
Ncurses 函数


Read a character from keyboard

ncurses_flushinp
ncurses_getmaxyx
Ncurses 函数
PHP Manual

ncurses_getch

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_getch — Read a character from keyboard

说明

int ncurses_getch ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

ncurses_flushinp
ncurses_getmaxyx
Ncurses 函数


Returns the size of a window

ncurses_getch
ncurses_getmouse
Ncurses 函数
PHP Manual

ncurses_getmaxyx

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_getmaxyx — Returns the size of a window

说明

void ncurses_getmaxyx ( resource $window , int &$y , int &$x )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Gets the horizontal and vertical size of the given window into the given variables.

Variables must be passed as reference, so they are updated when the user changes the terminal size.

参数

window

The measured window

y

This will be set to the window height

x

This will be set to the window width

返回值

没有返回值。

ncurses_getch
ncurses_getmouse
Ncurses 函数


Reads mouse event

ncurses_getmaxyx
ncurses_getyx
Ncurses 函数
PHP Manual

ncurses_getmouse

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_getmouse — Reads mouse event

说明

bool ncurses_getmouse ( array &$mevent )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

ncurses_getmouse() reads mouse event out of queue.

参数

mevent

Event options will be delivered in this parameter which has to be an array, passed by reference (see example below).

On success an associative array with following keys will be delivered:

  • "id" : Id to distinguish multiple devices

  • "x" : screen relative x-position in character cells

  • "y" : screen relative y-position in character cells

  • "z" : currently not supported

  • "mmask" : Mouse action

返回值

Returns FALSE if a mouse event is actually visible in the given window, otherwise returns TRUE.

范例

Example #1 ncurses_getmouse() example

<?php
switch (ncurses_getch()){
  case NCURSES_KEY_MOUSE:
    if (!ncurses_getmouse($mevent)){
      if ($mevent["mmask"] & NCURSES_MOUSE_BUTTON1_PRESSED){
        $mouse_x = $mevent["x"]; // Save mouse position
        $mouse_y = $mevent["y"];
      }
    }
  break;

  default:
    /* .... */
}
?>

参见

  • ncurses_ungetmouse() - Pushes mouse event to queue

ncurses_getmaxyx
ncurses_getyx
Ncurses 函数


Returns the current cursor position for a window

ncurses_getmouse
ncurses_halfdelay
Ncurses 函数
PHP Manual

ncurses_getyx

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_getyx — Returns the current cursor position for a window

说明

void ncurses_getyx ( resource $window , int &$y , int &$x )
Warning

本函数还未编写文档，仅有参数列表。

参数

window

y

x

ncurses_getmouse
ncurses_halfdelay
Ncurses 函数


Put terminal into halfdelay mode

ncurses_getyx
ncurses_has_colors
Ncurses 函数
PHP Manual

ncurses_halfdelay

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_halfdelay — Put terminal into halfdelay mode

说明

int ncurses_halfdelay ( int $tenth )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

tenth

ncurses_getyx
ncurses_has_colors
Ncurses 函数


Checks if terminal has color capabilities

ncurses_halfdelay
ncurses_has_ic
Ncurses 函数
PHP Manual

ncurses_has_colors

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_has_colors — Checks if terminal has color capabilities

说明

bool ncurses_has_colors ( void )

Checks whether the terminal has color capabilities. This function can be used to write terminal-independent programs. ncurses must be initialized using ncurses_init() before calling this function.

参数

此函数没有参数。

返回值

Return TRUE if the terminal has color capabilities, FALSE otherwise.

范例

Example #1 Writing a string with a specified color to the screen

<?php
ncurses_init();

// If the terminal supports colors, initialize and set active color
if (ncurses_has_colors()) {
    ncurses_start_color();
    ncurses_init_pair(1, NCURSES_COLOR_YELLOW, NCURSES_COLOR_BLUE);
    ncurses_color_set(1);
}

// Write a string at specified location
ncurses_mvaddstr(10, 10, "Hello world! Yellow on blue text!");

// Flush output to screen
ncurses_refresh();

ncurses_end();
?>

参见

  • ncurses_can_change_color() - Checks if terminal color definitions can be changed
  • ncurses_start_color() - Initializes color functionality

ncurses_halfdelay
ncurses_has_ic
Ncurses 函数


Check for insert- and delete-capabilities

ncurses_has_colors
ncurses_has_il
Ncurses 函数
PHP Manual

ncurses_has_ic

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_has_ic — Check for insert- and delete-capabilities

说明

bool ncurses_has_ic ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Checks whether the terminal has insert and delete capabilities.

返回值

Returns TRUE if the terminal has insert/delete-capabilities, FALSE otherwise.

参见

  • ncurses_has_il() - Check for line insert- and delete-capabilities

ncurses_has_colors
ncurses_has_il
Ncurses 函数


Check for line insert- and delete-capabilities

ncurses_has_ic
ncurses_has_key
Ncurses 函数
PHP Manual

ncurses_has_il

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_has_il — Check for line insert- and delete-capabilities

说明

bool ncurses_has_il ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Checks whether the terminal has insert- and delete-line-capabilities.

返回值

Returns TRUE if the terminal has insert/delete-line capabilities, FALSE otherwise.

参见

  • ncurses_has_ic() - Check for insert- and delete-capabilities

ncurses_has_ic
ncurses_has_key
Ncurses 函数


Check for presence of a function key on terminal keyboard

ncurses_has_il
ncurses_hide_panel
Ncurses 函数
PHP Manual

ncurses_has_key

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_has_key — Check for presence of a function key on terminal keyboard

说明

int ncurses_has_key ( int $keycode )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

keycode

ncurses_has_il
ncurses_hide_panel
Ncurses 函数


Remove panel from the stack, making it invisible

ncurses_has_key
ncurses_hline
Ncurses 函数
PHP Manual

ncurses_hide_panel

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_hide_panel — Remove panel from the stack, making it invisible

说明

int ncurses_hide_panel ( resource $panel )
Warning

本函数还未编写文档，仅有参数列表。

参数

panel

ncurses_has_key
ncurses_hline
Ncurses 函数


Draw a horizontal line at current position using an attributed character and max. n characters long

ncurses_hide_panel
ncurses_inch
Ncurses 函数
PHP Manual

ncurses_hline

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_hline — Draw a horizontal line at current position using an attributed character and max. n characters long

说明

int ncurses_hline ( int $charattr , int $n )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

charattr

n

ncurses_hide_panel
ncurses_inch
Ncurses 函数


Get character and attribute at current position

ncurses_hline
ncurses_init_color
Ncurses 函数
PHP Manual

ncurses_inch

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_inch — Get character and attribute at current position

说明

string ncurses_inch ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Returns the character from the current position.

返回值

Returns the character, as a string.

ncurses_hline
ncurses_init_color
Ncurses 函数


Define a terminal color

ncurses_inch
ncurses_init_pair
Ncurses 函数
PHP Manual

ncurses_init_color

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_init_color — Define a terminal color

说明

int ncurses_init_color ( int $color , int $r , int $g , int $b )

Defines or redefines the given color. When this function is called, all occurrences of the given color on the screen, if any, immediately change to the new definition.

Color capabilities must be supported by the terminal and initialized using ncurses_start_color() prior to calling this function. In addition, the terminal must have color changing capabilities; use ncurses_can_change_color() to check for this.

参数

color

The identification number of the color to redefine. It may be one of the default color constants.

r

A color value, between 0 and 1000, for the red component.

g

A color value, between 0 and 1000, for the green component.

b

A color value, between 0 and 1000, for the blue component.

返回值

Returns -1 if the function was successful, and 0 if ncurses or terminal color capabilities have not been initialized or the terminal does not have color changing capabilities.

参见

  • ncurses_color_content() - Retrieves RGB components of a color
  • ncurses_start_color() - Initializes color functionality

ncurses_inch
ncurses_init_pair
Ncurses 函数


Define a color pair

ncurses_init_color
ncurses_init
Ncurses 函数
PHP Manual

ncurses_init_pair

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_init_pair — Define a color pair

说明

int ncurses_init_pair ( int $pair , int $fg , int $bg )

Defines or redefines the given color pair to have the given foreground and background colors. If the color pair was previously initialized, the screen is refreshed and all occurrences of it are changed to reflect the new definition.

Color capabilities must be initialized using ncurses_start_color() before calling this function. The first color pair (color pair 0) is assumed to be white on black by default, but can be changed using ncurses_assume_default_colors().

参数

pair

The number of the color pair to define.

fg

The foreground color for the color pair. May be one of the pre-defined colors or one defined by ncurses_init_color() if the terminal has color changing capabilities.

bg

The background color for the color pair. May be one of the pre-defined colors or one defined by ncurses_init_color() if the terminal has color changing capabilities.

返回值

Returns -1 if the function was successful, and 0 if ncurses or color support were not initialized.

注释

Note that color changing capabilities are not required for defining color pairs of pre-existing colors, but only for changing definitions (red, green, and blue components) of colors themselves per ncurses_init_color().

范例

Example #1 Writing a string with a specified color to the screen

<?php
ncurses_init();

// If the terminal supports colors, initialize and set active color
if (ncurses_has_colors()) {
    ncurses_start_color();
    ncurses_init_pair(1, NCURSES_COLOR_YELLOW, NCURSES_COLOR_BLUE);
    ncurses_color_set(1);
}

// Write a string at specified location
ncurses_mvaddstr(10, 10, "Hello world! Yellow on blue text!");

// Flush output to screen
ncurses_refresh();

ncurses_end();
?>

参见

  • ncurses_pair_content() - Retrieves foreground and background colors of a color pair
  • ncurses_start_color() - Initializes color functionality

ncurses_init_color
ncurses_init
Ncurses 函数


Initialize ncurses

ncurses_init_pair
ncurses_insch
Ncurses 函数
PHP Manual

ncurses_init

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_init — Initialize ncurses

说明

void ncurses_init ( void )

Initializes the ncurses interface. This function must be used before any other ncurses function call.

Note that ncurses_end() must be called before exiting from the program, or the terminal will not be restored to its proper non-visual mode.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • ncurses_end() - Stop using ncurses, clean up the screen

ncurses_init_pair
ncurses_insch
Ncurses 函数


Insert character moving rest of line including character at current position

ncurses_init
ncurses_insdelln
Ncurses 函数
PHP Manual

ncurses_insch

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_insch — Insert character moving rest of line including character at current position

说明

int ncurses_insch ( int $character )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

character

ncurses_init
ncurses_insdelln
Ncurses 函数


Insert lines before current line scrolling down (negative numbers delete and scroll up)

ncurses_insch
ncurses_insertln
Ncurses 函数
PHP Manual

ncurses_insdelln

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_insdelln — Insert lines before current line scrolling down (negative numbers delete and scroll up)

说明

int ncurses_insdelln ( int $count )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

count

ncurses_insch
ncurses_insertln
Ncurses 函数


Insert a line, move rest of screen down

ncurses_insdelln
ncurses_insstr
Ncurses 函数
PHP Manual

ncurses_insertln

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_insertln — Insert a line, move rest of screen down

说明

int ncurses_insertln ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Inserts a new line above the current line. The bottom line will be lost.

ncurses_insdelln
ncurses_insstr
Ncurses 函数


Insert string at current position, moving rest of line right

ncurses_insertln
ncurses_instr
Ncurses 函数
PHP Manual

ncurses_insstr

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_insstr — Insert string at current position, moving rest of line right

说明

int ncurses_insstr ( string $text )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

text

ncurses_insertln
ncurses_instr
Ncurses 函数


Reads string from terminal screen

ncurses_insstr
ncurses_isendwin
Ncurses 函数
PHP Manual

ncurses_instr

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_instr — Reads string from terminal screen

说明

int ncurses_instr ( string &$buffer )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Reads a string from the terminal screen and returns the number of characters read from the current character position until end of line.

参数

buffer

The characters. Attributes will be stripped.

返回值

Returns the number of characters.

ncurses_insstr
ncurses_isendwin
Ncurses 函数


Ncurses is in endwin mode, normal screen output may be performed

ncurses_instr
ncurses_keyok
Ncurses 函数
PHP Manual

ncurses_isendwin

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_isendwin — Ncurses is in endwin mode, normal screen output may be performed

说明

bool ncurses_isendwin ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Checks if ncurses is in endwin mode.

返回值

Returns TRUE, if ncurses_end() has been called without any subsequent calls to ncurses_wrefresh(), FALSE otherwise.

参见

  • ncurses_end() - Stop using ncurses, clean up the screen
  • ncurses_wrefresh() - Refresh window on terminal screen

ncurses_instr
ncurses_keyok
Ncurses 函数


Enable or disable a keycode

ncurses_isendwin
ncurses_keypad
Ncurses 函数
PHP Manual

ncurses_keyok

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_keyok — Enable or disable a keycode

说明

int ncurses_keyok ( int $keycode , bool $enable )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

keycode

enable

ncurses_isendwin
ncurses_keypad
Ncurses 函数


Turns keypad on or off

ncurses_keyok
ncurses_killchar
Ncurses 函数
PHP Manual

ncurses_keypad

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_keypad — Turns keypad on or off

说明

int ncurses_keypad ( resource $window , bool $bf )
Warning

本函数还未编写文档，仅有参数列表。

参数

window

bf

ncurses_keyok
ncurses_killchar
Ncurses 函数


Returns current line kill character

ncurses_keypad
ncurses_longname
Ncurses 函数
PHP Manual

ncurses_killchar

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_killchar — Returns current line kill character

说明

string ncurses_killchar ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Returns the current line kill character.

返回值

Returns the kill character, as a string.

参见

  • ncurses_erasechar() - Returns current erase character

ncurses_keypad
ncurses_longname
Ncurses 函数


Returns terminals description

ncurses_killchar
ncurses_meta
Ncurses 函数
PHP Manual

ncurses_longname

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_longname — Returns terminals description

说明

string ncurses_longname ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Returns a verbose description of the terminal.

返回值

Returns the description, as a string truncated to 128 characters. On errors, returns NULL.

参见

  • ncurses_termname() - Returns terminals (short)-name

ncurses_killchar
ncurses_meta
Ncurses 函数


Enables/Disable 8-bit meta key information

ncurses_longname
ncurses_mouse_trafo
Ncurses 函数
PHP Manual

ncurses_meta

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_meta — Enables/Disable 8-bit meta key information

说明

int ncurses_meta ( resource $window , bool $8bit )
Warning

本函数还未编写文档，仅有参数列表。

参数

window

8bit

ncurses_longname
ncurses_mouse_trafo
Ncurses 函数


Transforms coordinates

ncurses_meta
ncurses_mouseinterval
Ncurses 函数
PHP Manual

ncurses_mouse_trafo

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_mouse_trafo — Transforms coordinates

说明

bool ncurses_mouse_trafo ( int &$y , int &$x , bool $toscreen )
Warning

本函数还未编写文档，仅有参数列表。

参数

y

x

toscreen

ncurses_meta
ncurses_mouseinterval
Ncurses 函数


Set timeout for mouse button clicks

ncurses_mouse_trafo
ncurses_mousemask
Ncurses 函数
PHP Manual

ncurses_mouseinterval

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_mouseinterval — Set timeout for mouse button clicks

说明

int ncurses_mouseinterval ( int $milliseconds )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

milliseconds

ncurses_mouse_trafo
ncurses_mousemask
Ncurses 函数


Sets mouse options

ncurses_mouseinterval
ncurses_move_panel
Ncurses 函数
PHP Manual

ncurses_mousemask

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_mousemask — Sets mouse options

说明

int ncurses_mousemask ( int $newmask , int &$oldmask )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Sets mouse events to be reported. By default no mouse events will be reported.

Mouse events are represented by NCURSES_KEY_MOUSE in the ncurses_wgetch() input stream. To read the event data and pop the event of queue, call ncurses_getmouse().

参数

newmask

Mouse mask options can be set with the following predefined constants:

  • NCURSES_BUTTON1_PRESSED

  • NCURSES_BUTTON1_RELEASED

  • NCURSES_BUTTON1_CLICKED

  • NCURSES_BUTTON1_DOUBLE_CLICKED

  • NCURSES_BUTTON1_TRIPLE_CLICKED

  • NCURSES_BUTTON2_PRESSED

  • NCURSES_BUTTON2_RELEASED

  • NCURSES_BUTTON2_CLICKED

  • NCURSES_BUTTON2_DOUBLE_CLICKED

  • NCURSES_BUTTON2_TRIPLE_CLICKED

  • NCURSES_BUTTON3_PRESSED

  • NCURSES_BUTTON3_RELEASED

  • NCURSES_BUTTON3_CLICKED

  • NCURSES_BUTTON3_DOUBLE_CLICKED

  • NCURSES_BUTTON3_TRIPLE_CLICKED

  • NCURSES_BUTTON4_PRESSED

  • NCURSES_BUTTON4_RELEASED

  • NCURSES_BUTTON4_CLICKED

  • NCURSES_BUTTON4_DOUBLE_CLICKED

  • NCURSES_BUTTON4_TRIPLE_CLICKED

  • NCURSES_BUTTON_SHIFT>

  • NCURSES_BUTTON_CTRL

  • NCURSES_BUTTON_ALT

  • NCURSES_ALL_MOUSE_EVENTS

  • NCURSES_REPORT_MOUSE_POSITION

As a side effect, setting a zero mousemask in newmask turns off the mouse pointer. Setting a non zero value turns mouse pointer on.

oldmask

This will be set to the previous value of the mouse event mask.

返回值

Returns the mask of reportable events. On complete failure, it returns 0.

范例

Example #1 ncurses_mousemask() example

<?php
$newmask = NCURSES_BUTTON1_CLICKED + NCURSES_BUTTON1_RELEASED;
$mask = ncurses_mousemask($newmask, $oldmask);
if ($mask & $newmask){
    printf("All specified mouse options will be supported\n");
}
?>

参见

  • ncurses_getch() - Read a character from keyboard
  • ncurses_getmouse() - Reads mouse event
  • ncurses_ungetmouse() - Pushes mouse event to queue

ncurses_mouseinterval
ncurses_move_panel
Ncurses 函数


Moves a panel so that its upper-left corner is at [startx, starty]

ncurses_mousemask
ncurses_move
Ncurses 函数
PHP Manual

ncurses_move_panel

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_move_panel — Moves a panel so that its upper-left corner is at [startx, starty]

说明

int ncurses_move_panel ( resource $panel , int $startx , int $starty )
Warning

本函数还未编写文档，仅有参数列表。

参数

panel

startx

starty

ncurses_mousemask
ncurses_move
Ncurses 函数


Move output position

ncurses_move_panel
ncurses_mvaddch
Ncurses 函数
PHP Manual

ncurses_move

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_move — Move output position

说明

int ncurses_move ( int $y , int $x )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

y

x

ncurses_move_panel
ncurses_mvaddch
Ncurses 函数


Move current position and add character

ncurses_move
ncurses_mvaddchnstr
Ncurses 函数
PHP Manual

ncurses_mvaddch

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_mvaddch — Move current position and add character

说明

int ncurses_mvaddch ( int $y , int $x , int $c )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

y

x

c

ncurses_move
ncurses_mvaddchnstr
Ncurses 函数


Move position and add attributed string with specified length

ncurses_mvaddch
ncurses_mvaddchstr
Ncurses 函数
PHP Manual

ncurses_mvaddchnstr

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_mvaddchnstr — Move position and add attributed string with specified length

说明

int ncurses_mvaddchnstr ( int $y , int $x , string $s , int $n )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

y

x

s

n

ncurses_mvaddch
ncurses_mvaddchstr
Ncurses 函数


Move position and add attributed string

ncurses_mvaddchnstr
ncurses_mvaddnstr
Ncurses 函数
PHP Manual

ncurses_mvaddchstr

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_mvaddchstr — Move position and add attributed string

说明

int ncurses_mvaddchstr ( int $y , int $x , string $s )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

y

x

s

ncurses_mvaddchnstr
ncurses_mvaddnstr
Ncurses 函数


Move position and add string with specified length

ncurses_mvaddchstr
ncurses_mvaddstr
Ncurses 函数
PHP Manual

ncurses_mvaddnstr

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_mvaddnstr — Move position and add string with specified length

说明

int ncurses_mvaddnstr ( int $y , int $x , string $s , int $n )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

y

x

s

n

ncurses_mvaddchstr
ncurses_mvaddstr
Ncurses 函数


Move position and add string

ncurses_mvaddnstr
ncurses_mvcur
Ncurses 函数
PHP Manual

ncurses_mvaddstr

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_mvaddstr — Move position and add string

说明

int ncurses_mvaddstr ( int $y , int $x , string $s )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

y

x

s

ncurses_mvaddnstr
ncurses_mvcur
Ncurses 函数


Move cursor immediately

ncurses_mvaddstr
ncurses_mvdelch
Ncurses 函数
PHP Manual

ncurses_mvcur

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_mvcur — Move cursor immediately

说明

int ncurses_mvcur ( int $old_y , int $old_x , int $new_y , int $new_x )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

old_y

old_x

new_y

new_x

ncurses_mvaddstr
ncurses_mvdelch
Ncurses 函数


Move position and delete character, shift rest of line left

ncurses_mvcur
ncurses_mvgetch
Ncurses 函数
PHP Manual

ncurses_mvdelch

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_mvdelch — Move position and delete character, shift rest of line left

说明

int ncurses_mvdelch ( int $y , int $x )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

y

x

ncurses_mvcur
ncurses_mvgetch
Ncurses 函数


Move position and get character at new position

ncurses_mvdelch
ncurses_mvhline
Ncurses 函数
PHP Manual

ncurses_mvgetch

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_mvgetch — Move position and get character at new position

说明

int ncurses_mvgetch ( int $y , int $x )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

y

x

ncurses_mvdelch
ncurses_mvhline
Ncurses 函数


Set new position and draw a horizontal line using an attributed character and max. n characters long

ncurses_mvgetch
ncurses_mvinch
Ncurses 函数
PHP Manual

ncurses_mvhline

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_mvhline — Set new position and draw a horizontal line using an attributed character and max. n characters long

说明

int ncurses_mvhline ( int $y , int $x , int $attrchar , int $n )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

y

x

attrchar

n

ncurses_mvgetch
ncurses_mvinch
Ncurses 函数


Move position and get attributed character at new position

ncurses_mvhline
ncurses_mvvline
Ncurses 函数
PHP Manual

ncurses_mvinch

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_mvinch — Move position and get attributed character at new position

说明

int ncurses_mvinch ( int $y , int $x )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

y

x

ncurses_mvhline
ncurses_mvvline
Ncurses 函数


Set new position and draw a vertical line using an attributed character and max. n characters long

ncurses_mvinch
ncurses_mvwaddstr
Ncurses 函数
PHP Manual

ncurses_mvvline

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_mvvline — Set new position and draw a vertical line using an attributed character and max. n characters long

说明

int ncurses_mvvline ( int $y , int $x , int $attrchar , int $n )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

y

x

attrchar

n

ncurses_mvinch
ncurses_mvwaddstr
Ncurses 函数


Add string at new position in window

ncurses_mvvline
ncurses_napms
Ncurses 函数
PHP Manual

ncurses_mvwaddstr

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_mvwaddstr — Add string at new position in window

说明

int ncurses_mvwaddstr ( resource $window , int $y , int $x , string $text )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

window

y

x

text

ncurses_mvvline
ncurses_napms
Ncurses 函数


Sleep

ncurses_mvwaddstr
ncurses_new_panel
Ncurses 函数
PHP Manual

ncurses_napms

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_napms — Sleep

说明

int ncurses_napms ( int $milliseconds )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

milliseconds

ncurses_mvwaddstr
ncurses_new_panel
Ncurses 函数


Create a new panel and associate it with window

ncurses_napms
ncurses_newpad
Ncurses 函数
PHP Manual

ncurses_new_panel

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_new_panel — Create a new panel and associate it with window

说明

resource ncurses_new_panel ( resource $window )
Warning

本函数还未编写文档，仅有参数列表。

参数

window

ncurses_napms
ncurses_newpad
Ncurses 函数


Creates a new pad (window)

ncurses_new_panel
ncurses_newwin
Ncurses 函数
PHP Manual

ncurses_newpad

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_newpad — Creates a new pad (window)

说明

resource ncurses_newpad ( int $rows , int $cols )
Warning

本函数还未编写文档，仅有参数列表。

参数

rows

cols

ncurses_new_panel
ncurses_newwin
Ncurses 函数


Create a new window

ncurses_newpad
ncurses_nl
Ncurses 函数
PHP Manual

ncurses_newwin

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_newwin — Create a new window

说明

resource ncurses_newwin ( int $rows , int $cols , int $y , int $x )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Creates a new window to draw elements in.

When creating additional windows, remember to use ncurses_getmaxyx() to check for available space, as terminal size is individual and may vary.

参数

rows

Number of rows

cols

Number of columns

y

y-coordinate of the origin

x

x-coordinate of the origin

返回值

Returns a resource ID for the new window.

ncurses_newpad
ncurses_nl
Ncurses 函数


Translate newline and carriage return / line feed

ncurses_newwin
ncurses_nocbreak
Ncurses 函数
PHP Manual

ncurses_nl

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_nl — Translate newline and carriage return / line feed

说明

bool ncurses_nl ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

ncurses_newwin
ncurses_nocbreak
Ncurses 函数


Switch terminal to cooked mode

ncurses_nl
ncurses_noecho
Ncurses 函数
PHP Manual

ncurses_nocbreak

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_nocbreak — Switch terminal to cooked mode

说明

bool ncurses_nocbreak ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Returns terminal to normal (cooked) mode. Initially the terminal may or may not be in cbreak mode as the mode is inherited. Therefore a program should call ncurses_cbreak() and ncurses_nocbreak() explicitly.

返回值

Returns TRUE if any error occurred, otherwise FALSE.

参见

  • ncurses_cbreak() - Switch off input buffering

ncurses_nl
ncurses_noecho
Ncurses 函数


Switch off keyboard input echo

ncurses_nocbreak
ncurses_nonl
Ncurses 函数
PHP Manual

ncurses_noecho

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_noecho — Switch off keyboard input echo

说明

bool ncurses_noecho ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Prevents echoing of user typed characters.

返回值

Returns TRUE if any error occurred, FALSE otherwise.

参见

  • ncurses_echo() - Activate keyboard input echo
  • ncurses_getch() - Read a character from keyboard

ncurses_nocbreak
ncurses_nonl
Ncurses 函数


Do not translate newline and carriage return / line feed

ncurses_noecho
ncurses_noqiflush
Ncurses 函数
PHP Manual

ncurses_nonl

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_nonl — Do not translate newline and carriage return / line feed

说明

bool ncurses_nonl ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

ncurses_noecho
ncurses_noqiflush
Ncurses 函数


Do not flush on signal characters

ncurses_nonl
ncurses_noraw
Ncurses 函数
PHP Manual

ncurses_noqiflush

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_noqiflush — Do not flush on signal characters

说明

void ncurses_noqiflush ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

ncurses_nonl
ncurses_noraw
Ncurses 函数


Switch terminal out of raw mode

ncurses_noqiflush
ncurses_pair_content
Ncurses 函数
PHP Manual

ncurses_noraw

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_noraw — Switch terminal out of raw mode

说明

bool ncurses_noraw ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Switches the terminal out of raw mode. Raw mode is similar to cbreak mode, in that characters typed are immediately passed through to the user program. The difference is that in raw mode, the interrupt, quit, suspend and flow control characters are all passed through uninterpreted, instead of generating a signal.

返回值

Returns TRUE if any error occurred, otherwise FALSE.

参见

  • ncurses_raw() - Switch terminal into raw mode
  • ncurses_cbreak() - Switch off input buffering
  • ncurses_nocbreak() - Switch terminal to cooked mode

ncurses_noqiflush
ncurses_pair_content
Ncurses 函数


Retrieves foreground and background colors of a color pair

ncurses_noraw
ncurses_panel_above
Ncurses 函数
PHP Manual

ncurses_pair_content

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_pair_content — Retrieves foreground and background colors of a color pair

说明

int ncurses_pair_content ( int $pair , int &$f , int &$b )

Retrieves the foreground and background colors that constitute the given color pair. Terminal color capabilities must be initialized with ncurses_start_color() prior to calling this function.

参数

pair

The number of the color pair to retrieve information for.

f

A reference to which to return the foreground color of the color pair. The information returned will be a color number referring to one of the pre-defined colors or a color defined previously by ncurses_init_color() if the terminal supports color changing.

b

A reference to which to return the background color of the color pair. The information returned will be a color number referring to one of the pre-defined colors or a color defined previously by ncurses_init_color() if the terminal supports color changing.

返回值

Returns -1 if the function was successful, and 0 if ncurses or terminal color capabilities have not been initialized.

参见

  • ncurses_init_pair() - Define a color pair
  • ncurses_start_color() - Initializes color functionality

ncurses_noraw
ncurses_panel_above
Ncurses 函数


Returns the panel above panel

ncurses_pair_content
ncurses_panel_below
Ncurses 函数
PHP Manual

ncurses_panel_above

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_panel_above — Returns the panel above panel

说明

resource ncurses_panel_above ( resource $panel )
Warning

本函数还未编写文档，仅有参数列表。

参数

panel

返回值

If panel is null, returns the bottom panel in the stack.

ncurses_pair_content
ncurses_panel_below
Ncurses 函数


Returns the panel below panel

ncurses_panel_above
ncurses_panel_window
Ncurses 函数
PHP Manual

ncurses_panel_below

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_panel_below — Returns the panel below panel

说明

resource ncurses_panel_below ( resource $panel )
Warning

本函数还未编写文档，仅有参数列表。

参数

panel

参数

If panel is null, returns the top panel in the stack.

ncurses_panel_above
ncurses_panel_window
Ncurses 函数


Returns the window associated with panel

ncurses_panel_below
ncurses_pnoutrefresh
Ncurses 函数
PHP Manual

ncurses_panel_window

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_panel_window — Returns the window associated with panel

说明

resource ncurses_panel_window ( resource $panel )
Warning

本函数还未编写文档，仅有参数列表。

参数

panel

ncurses_panel_below
ncurses_pnoutrefresh
Ncurses 函数


Copies a region from a pad into the virtual screen

ncurses_panel_window
ncurses_prefresh
Ncurses 函数
PHP Manual

ncurses_pnoutrefresh

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_pnoutrefresh — Copies a region from a pad into the virtual screen

说明

int ncurses_pnoutrefresh ( resource $pad , int $pminrow , int $pmincol , int $sminrow , int $smincol , int $smaxrow , int $smaxcol )
Warning

本函数还未编写文档，仅有参数列表。

参数

pad

pminrow

pmincol

sminrow

smincol

smaxrow

smaxcol

ncurses_panel_window
ncurses_prefresh
Ncurses 函数


Copies a region from a pad into the virtual screen

ncurses_pnoutrefresh
ncurses_putp
Ncurses 函数
PHP Manual

ncurses_prefresh

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_prefresh — Copies a region from a pad into the virtual screen

说明

int ncurses_prefresh ( resource $pad , int $pminrow , int $pmincol , int $sminrow , int $smincol , int $smaxrow , int $smaxcol )
Warning

本函数还未编写文档，仅有参数列表。

参数

pad

pminrow

pmincol

sminrow

smincol

smaxrow

smaxcol

ncurses_pnoutrefresh
ncurses_putp
Ncurses 函数


Apply padding information to the string and output it

ncurses_prefresh
ncurses_qiflush
Ncurses 函数
PHP Manual

ncurses_putp

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_putp — Apply padding information to the string and output it

说明

int ncurses_putp ( string $text )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

text

ncurses_prefresh
ncurses_qiflush
Ncurses 函数


Flush on signal characters

ncurses_putp
ncurses_raw
Ncurses 函数
PHP Manual

ncurses_qiflush

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_qiflush — Flush on signal characters

说明

void ncurses_qiflush ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

ncurses_putp
ncurses_raw
Ncurses 函数


Switch terminal into raw mode

ncurses_qiflush
ncurses_refresh
Ncurses 函数
PHP Manual

ncurses_raw

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_raw — Switch terminal into raw mode

说明

bool ncurses_raw ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Places the terminal in raw mode. Raw mode is similar to cbreak mode, in that characters typed are immediately passed through to the user program. The difference is that in raw mode, the interrupt, quit, suspend and flow control characters are all passed through uninterpreted, instead of generating a signal.

返回值

Returns TRUE if any error occurred, otherwise FALSE.

参见

  • ncurses_noraw() - Switch terminal out of raw mode
  • ncurses_cbreak() - Switch off input buffering
  • ncurses_nocbreak() - Switch terminal to cooked mode

ncurses_qiflush
ncurses_refresh
Ncurses 函数


Refresh screen

ncurses_raw
ncurses_replace_panel
Ncurses 函数
PHP Manual

ncurses_refresh

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_refresh — Refresh screen

说明

int ncurses_refresh ( int $ch )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

ch

ncurses_raw
ncurses_replace_panel
Ncurses 函数


Replaces the window associated with panel

ncurses_refresh
ncurses_reset_prog_mode
Ncurses 函数
PHP Manual

ncurses_replace_panel

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_replace_panel — Replaces the window associated with panel

说明

int ncurses_replace_panel ( resource $panel , resource $window )
Warning

本函数还未编写文档，仅有参数列表。

参数

panel

window

ncurses_refresh
ncurses_reset_prog_mode
Ncurses 函数


Resets the prog mode saved by def_prog_mode

ncurses_replace_panel
ncurses_reset_shell_mode
Ncurses 函数
PHP Manual

ncurses_reset_prog_mode

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_reset_prog_mode — Resets the prog mode saved by def_prog_mode

说明

int ncurses_reset_prog_mode ( void )
Warning

本函数还未编写文档，仅有参数列表。

ncurses_replace_panel
ncurses_reset_shell_mode
Ncurses 函数


Resets the shell mode saved by def_shell_mode

ncurses_reset_prog_mode
ncurses_resetty
Ncurses 函数
PHP Manual

ncurses_reset_shell_mode

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_reset_shell_mode — Resets the shell mode saved by def_shell_mode

说明

int ncurses_reset_shell_mode ( void )
Warning

本函数还未编写文档，仅有参数列表。

ncurses_reset_prog_mode
ncurses_resetty
Ncurses 函数


Restores saved terminal state

ncurses_reset_shell_mode
ncurses_savetty
Ncurses 函数
PHP Manual

ncurses_resetty

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_resetty — Restores saved terminal state

说明

bool ncurses_resetty ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Restores the terminal state, which was previously saved by calling ncurses_savetty().

返回值

Always returns FALSE.

参见

  • ncurses_savetty() - Saves terminal state

ncurses_reset_shell_mode
ncurses_savetty
Ncurses 函数


Saves terminal state

ncurses_resetty
ncurses_scr_dump
Ncurses 函数
PHP Manual

ncurses_savetty

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_savetty — Saves terminal state

说明

bool ncurses_savetty ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Saves the current terminal state. The saved terminal state can be restored with ncurses_resetty().

返回值

Always returns FALSE.

参见

  • ncurses_resetty() - Restores saved terminal state

ncurses_resetty
ncurses_scr_dump
Ncurses 函数


Dump screen content to file

ncurses_savetty
ncurses_scr_init
Ncurses 函数
PHP Manual

ncurses_scr_dump

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_scr_dump — Dump screen content to file

说明

int ncurses_scr_dump ( string $filename )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

filename

ncurses_savetty
ncurses_scr_init
Ncurses 函数


Initialize screen from file dump

ncurses_scr_dump
ncurses_scr_restore
Ncurses 函数
PHP Manual

ncurses_scr_init

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_scr_init — Initialize screen from file dump

说明

int ncurses_scr_init ( string $filename )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

filename

ncurses_scr_dump
ncurses_scr_restore
Ncurses 函数


Restore screen from file dump

ncurses_scr_init
ncurses_scr_set
Ncurses 函数
PHP Manual

ncurses_scr_restore

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_scr_restore — Restore screen from file dump

说明

int ncurses_scr_restore ( string $filename )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

filename

ncurses_scr_init
ncurses_scr_set
Ncurses 函数


Inherit screen from file dump

ncurses_scr_restore
ncurses_scrl
Ncurses 函数
PHP Manual

ncurses_scr_set

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_scr_set — Inherit screen from file dump

说明

int ncurses_scr_set ( string $filename )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

filename

ncurses_scr_restore
ncurses_scrl
Ncurses 函数


Scroll window content up or down without changing current position

ncurses_scr_set
ncurses_show_panel
Ncurses 函数
PHP Manual

ncurses_scrl

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_scrl — Scroll window content up or down without changing current position

说明

int ncurses_scrl ( int $count )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

count

ncurses_scr_set
ncurses_show_panel
Ncurses 函数


Places an invisible panel on top of the stack, making it visible

ncurses_scrl
ncurses_slk_attr
Ncurses 函数
PHP Manual

ncurses_show_panel

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_show_panel — Places an invisible panel on top of the stack, making it visible

说明

int ncurses_show_panel ( resource $panel )
Warning

本函数还未编写文档，仅有参数列表。

参数

panel

ncurses_scrl
ncurses_slk_attr
Ncurses 函数


Returns current soft label key attribute

ncurses_show_panel
ncurses_slk_attroff
Ncurses 函数
PHP Manual

ncurses_slk_attr

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_slk_attr — Returns current soft label key attribute

说明

int ncurses_slk_attr ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Returns the current soft label key attribute.

返回值

The attribute, as an integer.

ncurses_show_panel
ncurses_slk_attroff
Ncurses 函数


Turn off the given attributes for soft function-key labels

ncurses_slk_attr
ncurses_slk_attron
Ncurses 函数
PHP Manual

ncurses_slk_attroff

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_slk_attroff — Turn off the given attributes for soft function-key labels

说明

int ncurses_slk_attroff ( int $intarg )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

intarg

ncurses_slk_attr
ncurses_slk_attron
Ncurses 函数


Turn on the given attributes for soft function-key labels

ncurses_slk_attroff
ncurses_slk_attrset
Ncurses 函数
PHP Manual

ncurses_slk_attron

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_slk_attron — Turn on the given attributes for soft function-key labels

说明

int ncurses_slk_attron ( int $intarg )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

intarg

ncurses_slk_attroff
ncurses_slk_attrset
Ncurses 函数


Set given attributes for soft function-key labels

ncurses_slk_attron
ncurses_slk_clear
Ncurses 函数
PHP Manual

ncurses_slk_attrset

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_slk_attrset — Set given attributes for soft function-key labels

说明

int ncurses_slk_attrset ( int $intarg )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

intarg

ncurses_slk_attron
ncurses_slk_clear
Ncurses 函数


Clears soft labels from screen

ncurses_slk_attrset
ncurses_slk_color
Ncurses 函数
PHP Manual

ncurses_slk_clear

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_slk_clear — Clears soft labels from screen

说明

bool ncurses_slk_clear ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

The function ncurses_slk_clear() clears soft label keys from screen.

返回值

Returns TRUE on errors, FALSE otherwise.

ncurses_slk_attrset
ncurses_slk_color
Ncurses 函数


Sets color for soft label keys

ncurses_slk_clear
ncurses_slk_init
Ncurses 函数
PHP Manual

ncurses_slk_color

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_slk_color — Sets color for soft label keys

说明

int ncurses_slk_color ( int $intarg )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

intarg

ncurses_slk_clear
ncurses_slk_init
Ncurses 函数


Initializes soft label key functions

ncurses_slk_color
ncurses_slk_noutrefresh
Ncurses 函数
PHP Manual

ncurses_slk_init

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_slk_init — Initializes soft label key functions

说明

bool ncurses_slk_init ( int $format )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Initializes soft label key functions

This function must be called before ncurses_init() or ncurses_newwin() is called.

参数

format

If ncurses_init() eventually uses a line from stdscr to emulate the soft labels, then this parameter determines how the labels are arranged of the screen.

0 indicates a 3-2-3 arrangement of the labels, 1 indicates a 4-4 arrangement and 2 indicates the PC like 4-4-4 mode, but in addition an index line will be created.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ncurses_slk_color
ncurses_slk_noutrefresh
Ncurses 函数


Copies soft label keys to virtual screen

ncurses_slk_init
ncurses_slk_refresh
Ncurses 函数
PHP Manual

ncurses_slk_noutrefresh

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_slk_noutrefresh — Copies soft label keys to virtual screen

说明

bool ncurses_slk_noutrefresh ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

ncurses_slk_init
ncurses_slk_refresh
Ncurses 函数


Copies soft label keys to screen

ncurses_slk_noutrefresh
ncurses_slk_restore
Ncurses 函数
PHP Manual

ncurses_slk_refresh

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_slk_refresh — Copies soft label keys to screen

说明

int ncurses_slk_refresh ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Copies soft label keys from virtual screen to physical screen.

ncurses_slk_noutrefresh
ncurses_slk_restore
Ncurses 函数


Restores soft label keys

ncurses_slk_refresh
ncurses_slk_set
Ncurses 函数
PHP Manual

ncurses_slk_restore

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_slk_restore — Restores soft label keys

说明

int ncurses_slk_restore ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Restores the soft label keys after ncurses_slk_clear() has been performed.

ncurses_slk_refresh
ncurses_slk_set
Ncurses 函数


Sets function key labels

ncurses_slk_restore
ncurses_slk_touch
Ncurses 函数
PHP Manual

ncurses_slk_set

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_slk_set — Sets function key labels

说明

bool ncurses_slk_set ( int $labelnr , string $label , int $format )
Warning

本函数还未编写文档，仅有参数列表。

参数

labelnr

label

format

ncurses_slk_restore
ncurses_slk_touch
Ncurses 函数


Forces output when ncurses_slk_noutrefresh is performed

ncurses_slk_set
ncurses_standend
Ncurses 函数
PHP Manual

ncurses_slk_touch

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_slk_touch — Forces output when ncurses_slk_noutrefresh is performed

说明

int ncurses_slk_touch ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Forces all the soft labels to be output the next time a ncurses_slk_noutrefresh() is performed.

ncurses_slk_set
ncurses_standend
Ncurses 函数


Stop using 'standout' attribute

ncurses_slk_touch
ncurses_standout
Ncurses 函数
PHP Manual

ncurses_standend

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_standend — Stop using 'standout' attribute

说明

int ncurses_standend ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

ncurses_slk_touch
ncurses_standout
Ncurses 函数


Start using 'standout' attribute

ncurses_standend
ncurses_start_color
Ncurses 函数
PHP Manual

ncurses_standout

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_standout — Start using 'standout' attribute

说明

int ncurses_standout ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

ncurses_standend
ncurses_start_color
Ncurses 函数


Initializes color functionality

ncurses_standout
ncurses_termattrs
Ncurses 函数
PHP Manual

ncurses_start_color

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_start_color — Initializes color functionality

说明

int ncurses_start_color ( void )

Initializes color functionality in ncurses. This function must be called before any color manipulation functions are called and after ncurses_init() is called. It is good practice to call this function right after ncurses_init().

参数

此函数没有参数。

返回值

Returns 0 on success, or -1 if the color table could not be allocated or ncurses was not initialized.

范例

Example #1 Writing a string with a specified color to the screen

<?php
ncurses_init();

// If the terminal supports colors, initialize and set active color
if (ncurses_has_colors()) {
    ncurses_start_color();
    ncurses_init_pair(1, NCURSES_COLOR_YELLOW, NCURSES_COLOR_BLUE);
    ncurses_color_set(1);
}

// Write a string at specified location
ncurses_mvaddstr(10, 10, "Hello world! Yellow on blue text!");

// Flush output to screen
ncurses_refresh();

ncurses_end();
?>

参见

  • ncurses_can_change_color() - Checks if terminal color definitions can be changed
  • ncurses_has_colors() - Checks if terminal has color capabilities

ncurses_standout
ncurses_termattrs
Ncurses 函数


Returns a logical OR of all attribute flags supported by terminal

ncurses_start_color
ncurses_termname
Ncurses 函数
PHP Manual

ncurses_termattrs

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_termattrs — Returns a logical OR of all attribute flags supported by terminal

说明

bool ncurses_termattrs ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

ncurses_start_color
ncurses_termname
Ncurses 函数


Returns terminals (short)-name

ncurses_termattrs
ncurses_timeout
Ncurses 函数
PHP Manual

ncurses_termname

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_termname — Returns terminals (short)-name

说明

string ncurses_termname ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Returns terminals shortname.

返回值

Returns the shortname of the terminal, truncated to 14 characters. On errors, returns NULL.

参见

  • ncurses_longname() - Returns terminals description

ncurses_termattrs
ncurses_timeout
Ncurses 函数


Set timeout for special key sequences

ncurses_termname
ncurses_top_panel
Ncurses 函数
PHP Manual

ncurses_timeout

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_timeout — Set timeout for special key sequences

说明

void ncurses_timeout ( int $millisec )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

millisec

ncurses_termname
ncurses_top_panel
Ncurses 函数


Moves a visible panel to the top of the stack

ncurses_timeout
ncurses_typeahead
Ncurses 函数
PHP Manual

ncurses_top_panel

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_top_panel — Moves a visible panel to the top of the stack

说明

int ncurses_top_panel ( resource $panel )
Warning

本函数还未编写文档，仅有参数列表。

参数

panel

ncurses_timeout
ncurses_typeahead
Ncurses 函数


Specify different filedescriptor for typeahead checking

ncurses_top_panel
ncurses_ungetch
Ncurses 函数
PHP Manual

ncurses_typeahead

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_typeahead — Specify different filedescriptor for typeahead checking

说明

int ncurses_typeahead ( int $fd )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

fd

ncurses_top_panel
ncurses_ungetch
Ncurses 函数


Put a character back into the input stream

ncurses_typeahead
ncurses_ungetmouse
Ncurses 函数
PHP Manual

ncurses_ungetch

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_ungetch — Put a character back into the input stream

说明

int ncurses_ungetch ( int $keycode )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

keycode

ncurses_typeahead
ncurses_ungetmouse
Ncurses 函数


Pushes mouse event to queue

ncurses_ungetch
ncurses_update_panels
Ncurses 函数
PHP Manual

ncurses_ungetmouse

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_ungetmouse — Pushes mouse event to queue

说明

bool ncurses_ungetmouse ( array $mevent )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Pushes a KEY_MOUSE event onto the input queue and associates with this event the given state data and screen-relative character cell coordinates, specified in mevent.

参数

mevent

An associative array specifying the event options:

  • "id" : Id to distinguish multiple devices

  • "x" : screen relative x-position in character cells

  • "y" : screen relative y-position in character cells

  • "z" : currently not supported

  • "mmask" : Mouse action

返回值

Returns FALSE on success, TRUE otherwise.

参见

  • ncurses_getmouse() - Reads mouse event

ncurses_ungetch
ncurses_update_panels
Ncurses 函数


Refreshes the virtual screen to reflect the relations between panels in the stack

ncurses_ungetmouse
ncurses_use_default_colors
Ncurses 函数
PHP Manual

ncurses_update_panels

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_update_panels — Refreshes the virtual screen to reflect the relations between panels in the stack

说明

void ncurses_update_panels ( void )
Warning

本函数还未编写文档，仅有参数列表。

ncurses_ungetmouse
ncurses_use_default_colors
Ncurses 函数


Assign terminal default colors to color id -1

ncurses_update_panels
ncurses_use_env
Ncurses 函数
PHP Manual

ncurses_use_default_colors

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_use_default_colors — Assign terminal default colors to color id -1

说明

bool ncurses_use_default_colors ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

ncurses_update_panels
ncurses_use_env
Ncurses 函数


Control use of environment information about terminal size

ncurses_use_default_colors
ncurses_use_extended_names
Ncurses 函数
PHP Manual

ncurses_use_env

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_use_env — Control use of environment information about terminal size

说明

void ncurses_use_env ( bool $flag )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

flag

ncurses_use_default_colors
ncurses_use_extended_names
Ncurses 函数


Control use of extended names in terminfo descriptions

ncurses_use_env
ncurses_vidattr
Ncurses 函数
PHP Manual

ncurses_use_extended_names

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_use_extended_names — Control use of extended names in terminfo descriptions

说明

int ncurses_use_extended_names ( bool $flag )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

flag

ncurses_use_env
ncurses_vidattr
Ncurses 函数


Display the string on the terminal in the video attribute mode

ncurses_use_extended_names
ncurses_vline
Ncurses 函数
PHP Manual

ncurses_vidattr

(PHP 4 >= 4.0.7, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_vidattr — Display the string on the terminal in the video attribute mode

说明

int ncurses_vidattr ( int $intarg )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

intarg

ncurses_use_extended_names
ncurses_vline
Ncurses 函数


Draw a vertical line at current position using an attributed character and max. n characters long

ncurses_vidattr
ncurses_waddch
Ncurses 函数
PHP Manual

ncurses_vline

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_vline — Draw a vertical line at current position using an attributed character and max. n characters long

说明

int ncurses_vline ( int $charattr , int $n )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

charattr

n

ncurses_vidattr
ncurses_waddch
Ncurses 函数


Adds character at current position in a window and advance cursor

ncurses_vline
ncurses_waddstr
Ncurses 函数
PHP Manual

ncurses_waddch

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_waddch — Adds character at current position in a window and advance cursor

说明

int ncurses_waddch ( resource $window , int $ch )
Warning

本函数还未编写文档，仅有参数列表。

参数

window

ch

ncurses_vline
ncurses_waddstr
Ncurses 函数


Outputs text at current postion in window

ncurses_waddch
ncurses_wattroff
Ncurses 函数
PHP Manual

ncurses_waddstr

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_waddstr — Outputs text at current postion in window

说明

int ncurses_waddstr ( resource $window , string $str [, int $n ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

window

str

n

ncurses_waddch
ncurses_wattroff
Ncurses 函数


Turns off attributes for a window

ncurses_waddstr
ncurses_wattron
Ncurses 函数
PHP Manual

ncurses_wattroff

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_wattroff — Turns off attributes for a window

说明

int ncurses_wattroff ( resource $window , int $attrs )
Warning

本函数还未编写文档，仅有参数列表。

参数

window

attrs

ncurses_waddstr
ncurses_wattron
Ncurses 函数


Turns on attributes for a window

ncurses_wattroff
ncurses_wattrset
Ncurses 函数
PHP Manual

ncurses_wattron

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_wattron — Turns on attributes for a window

说明

int ncurses_wattron ( resource $window , int $attrs )
Warning

本函数还未编写文档，仅有参数列表。

参数

window

attrs

ncurses_wattroff
ncurses_wattrset
Ncurses 函数


Set the attributes for a window

ncurses_wattron
ncurses_wborder
Ncurses 函数
PHP Manual

ncurses_wattrset

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_wattrset — Set the attributes for a window

说明

int ncurses_wattrset ( resource $window , int $attrs )
Warning

本函数还未编写文档，仅有参数列表。

参数

window

attrs

ncurses_wattron
ncurses_wborder
Ncurses 函数


Draws a border around the window using attributed characters

ncurses_wattrset
ncurses_wclear
Ncurses 函数
PHP Manual

ncurses_wborder

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_wborder — Draws a border around the window using attributed characters

说明

int ncurses_wborder ( resource $window , int $left , int $right , int $top , int $bottom , int $tl_corner , int $tr_corner , int $bl_corner , int $br_corner )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Draws the specified lines and corners around the passed window.

Use ncurses_border() for borders around the main window.

参数

Each parameter expects 0 to draw a line and 1 to skip it.

window

The window on which we operate

left

right

top

bottom

tl_corner

Top left corner

tr_corner

Top right corner

bl_corner

Bottom left corner

br_corner

Bottom right corner

参见

  • ncurses_border() - Draw a border around the screen using attributed characters

ncurses_wattrset
ncurses_wclear
Ncurses 函数


Clears window

ncurses_wborder
ncurses_wcolor_set
Ncurses 函数
PHP Manual

ncurses_wclear

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_wclear — Clears window

说明

int ncurses_wclear ( resource $window )
Warning

本函数还未编写文档，仅有参数列表。

参数

window

ncurses_wborder
ncurses_wcolor_set
Ncurses 函数


Sets windows color pairings

ncurses_wclear
ncurses_werase
Ncurses 函数
PHP Manual

ncurses_wcolor_set

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_wcolor_set — Sets windows color pairings

说明

int ncurses_wcolor_set ( resource $window , int $color_pair )
Warning

本函数还未编写文档，仅有参数列表。

参数

window

color_pair

ncurses_wclear
ncurses_werase
Ncurses 函数


Erase window contents

ncurses_wcolor_set
ncurses_wgetch
Ncurses 函数
PHP Manual

ncurses_werase

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_werase — Erase window contents

说明

int ncurses_werase ( resource $window )
Warning

本函数还未编写文档，仅有参数列表。

参数

window

ncurses_wcolor_set
ncurses_wgetch
Ncurses 函数


Reads a character from keyboard (window)

ncurses_werase
ncurses_whline
Ncurses 函数
PHP Manual

ncurses_wgetch

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_wgetch — Reads a character from keyboard (window)

说明

int ncurses_wgetch ( resource $window )
Warning

本函数还未编写文档，仅有参数列表。

参数

window

ncurses_werase
ncurses_whline
Ncurses 函数


Draws a horizontal line in a window at current position using an attributed character and max. n characters long

ncurses_wgetch
ncurses_wmouse_trafo
Ncurses 函数
PHP Manual

ncurses_whline

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_whline — Draws a horizontal line in a window at current position using an attributed character and max. n characters long

说明

int ncurses_whline ( resource $window , int $charattr , int $n )
Warning

本函数还未编写文档，仅有参数列表。

参数

window

charattr

n

ncurses_wgetch
ncurses_wmouse_trafo
Ncurses 函数


Transforms window/stdscr coordinates

ncurses_whline
ncurses_wmove
Ncurses 函数
PHP Manual

ncurses_wmouse_trafo

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_wmouse_trafo — Transforms window/stdscr coordinates

说明

bool ncurses_wmouse_trafo ( resource $window , int &$y , int &$x , bool $toscreen )
Warning

本函数还未编写文档，仅有参数列表。

参数

window

x

y

toscreen

ncurses_whline
ncurses_wmove
Ncurses 函数


Moves windows output position

ncurses_wmouse_trafo
ncurses_wnoutrefresh
Ncurses 函数
PHP Manual

ncurses_wmove

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_wmove — Moves windows output position

说明

int ncurses_wmove ( resource $window , int $y , int $x )
Warning

本函数还未编写文档，仅有参数列表。

参数

window

y

x

ncurses_wmouse_trafo
ncurses_wnoutrefresh
Ncurses 函数


Copies window to virtual screen

ncurses_wmove
ncurses_wrefresh
Ncurses 函数
PHP Manual

ncurses_wnoutrefresh

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_wnoutrefresh — Copies window to virtual screen

说明

int ncurses_wnoutrefresh ( resource $window )
Warning

本函数还未编写文档，仅有参数列表。

参数

window

ncurses_wmove
ncurses_wrefresh
Ncurses 函数


Refresh window on terminal screen

ncurses_wnoutrefresh
ncurses_wstandend
Ncurses 函数
PHP Manual

ncurses_wrefresh

(PHP 4 >= 4.2.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_wrefresh — Refresh window on terminal screen

说明

int ncurses_wrefresh ( resource $window )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

参数

window

ncurses_wnoutrefresh
ncurses_wstandend
Ncurses 函数


End standout mode for a window

ncurses_wrefresh
ncurses_wstandout
Ncurses 函数
PHP Manual

ncurses_wstandend

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_wstandend — End standout mode for a window

说明

int ncurses_wstandend ( resource $window )
Warning

本函数还未编写文档，仅有参数列表。

参数

window

ncurses_wrefresh
ncurses_wstandout
Ncurses 函数


Enter standout mode for a window

ncurses_wstandend
ncurses_wvline
Ncurses 函数
PHP Manual

ncurses_wstandout

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_wstandout — Enter standout mode for a window

说明

int ncurses_wstandout ( resource $window )
Warning

本函数还未编写文档，仅有参数列表。

参数

window

ncurses_wstandend
ncurses_wvline
Ncurses 函数


Draws a vertical line in a window at current position using an attributed character and max. n characters long

ncurses_wstandout
Newt
Ncurses 函数
PHP Manual

ncurses_wvline

(PHP 4 >= 4.3.0, PHP 5 < 5.3.0, PECL ncurses >= 1.0.0)

ncurses_wvline — Draws a vertical line in a window at current position using an attributed character and max. n characters long

说明

int ncurses_wvline ( resource $window , int $charattr , int $n )
Warning

本函数还未编写文档，仅有参数列表。

参数

window

charattr

n

ncurses_wstandout
Newt
Ncurses 函数


Newt

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
    • Newt form exit reasons
    • Newt colorsets
    • Newt argument flags
    • Newt Flags Sense
    • Newt Components Flags
    • File Descriptor Flags
    • Checkbox Tree Flags
    • Entry Flags
    • Listbox Flags
    • Textbox Flags
    • Form Flags
    • Newt Keys
    • Newt Anchors
    • Grid Flags
  • 范例
    • Basic usage
  • Newt 函数
    • newt_bell — Send a beep to the terminal
    • newt_button_bar — This function returns a grid containing the buttons created.
    • newt_button — Create a new button
    • newt_centered_window — Open a centered window of the specified size
    • newt_checkbox_get_value — Retreives value of checkox resource
    • newt_checkbox_set_flags — Configures checkbox resource
    • newt_checkbox_set_value — Sets the value of the checkbox
    • newt_checkbox_tree_add_item — Adds new item to the checkbox tree
    • newt_checkbox_tree_find_item — Finds an item in the checkbox tree
    • newt_checkbox_tree_get_current — Returns checkbox tree selected item
    • newt_checkbox_tree_get_entry_value — 说明
    • newt_checkbox_tree_get_multi_selection — 说明
    • newt_checkbox_tree_get_selection — 说明
    • newt_checkbox_tree_multi — 说明
    • newt_checkbox_tree_set_current — 说明
    • newt_checkbox_tree_set_entry_value — 说明
    • newt_checkbox_tree_set_entry — 说明
    • newt_checkbox_tree_set_width — 说明
    • newt_checkbox_tree — 说明
    • newt_checkbox — 说明
    • newt_clear_key_buffer — Discards the contents of the terminal's input buffer without waiting for additional input
    • newt_cls — 说明
    • newt_compact_button — 说明
    • newt_component_add_callback — 说明
    • newt_component_takes_focus — 说明
    • newt_create_grid — 说明
    • newt_cursor_off — 说明
    • newt_cursor_on — 说明
    • newt_delay — 说明
    • newt_draw_form — 说明
    • newt_draw_root_text — Displays the string text at the position indicated
    • newt_entry_get_value — 说明
    • newt_entry_set_filter — 说明
    • newt_entry_set_flags — 说明
    • newt_entry_set — 说明
    • newt_entry — 说明
    • newt_finished — Uninitializes newt interface
    • newt_form_add_component — Adds a single component to the form
    • newt_form_add_components — Add several components to the form
    • newt_form_add_hot_key — 说明
    • newt_form_destroy — Destroys a form
    • newt_form_get_current — 说明
    • newt_form_run — Runs a form
    • newt_form_set_background — 说明
    • newt_form_set_height — 说明
    • newt_form_set_size — 说明
    • newt_form_set_timer — 说明
    • newt_form_set_width — 说明
    • newt_form_watch_fd — 说明
    • newt_form — Create a form
    • newt_get_screen_size — Fills in the passed references with the current size of the terminal
    • newt_grid_add_components_to_form — 说明
    • newt_grid_basic_window — 说明
    • newt_grid_free — 说明
    • newt_grid_get_size — 说明
    • newt_grid_h_close_stacked — 说明
    • newt_grid_h_stacked — 说明
    • newt_grid_place — 说明
    • newt_grid_set_field — 说明
    • newt_grid_simple_window — 说明
    • newt_grid_v_close_stacked — 说明
    • newt_grid_v_stacked — 说明
    • newt_grid_wrapped_window_at — 说明
    • newt_grid_wrapped_window — 说明
    • newt_init — Initialize newt
    • newt_label_set_text — 说明
    • newt_label — 说明
    • newt_listbox_append_entry — 说明
    • newt_listbox_clear_selection — 说明
    • newt_listbox_clear — 说明
    • newt_listbox_delete_entry — 说明
    • newt_listbox_get_current — 说明
    • newt_listbox_get_selection — 说明
    • newt_listbox_insert_entry — 说明
    • newt_listbox_item_count — 说明
    • newt_listbox_select_item — 说明
    • newt_listbox_set_current_by_key — 说明
    • newt_listbox_set_current — 说明
    • newt_listbox_set_data — 说明
    • newt_listbox_set_entry — 说明
    • newt_listbox_set_width — 说明
    • newt_listbox — 说明
    • newt_listitem_get_data — 说明
    • newt_listitem_set — 说明
    • newt_listitem — 说明
    • newt_open_window — Open a window of the specified size and position
    • newt_pop_help_line — Replaces the current help line with the one from the stack
    • newt_pop_window — Removes the top window from the display
    • newt_push_help_line — Saves the current help line on a stack, and displays the new line
    • newt_radio_get_current — 说明
    • newt_radiobutton — 说明
    • newt_redraw_help_line — 说明
    • newt_reflow_text — 说明
    • newt_refresh — Updates modified portions of the screen
    • newt_resize_screen — 说明
    • newt_resume — Resume using the newt interface after calling newt_suspend
    • newt_run_form — Runs a form
    • newt_scale_set — 说明
    • newt_scale — 说明
    • newt_scrollbar_set — 说明
    • newt_set_help_callback — 说明
    • newt_set_suspend_callback — Set a callback function which gets invoked when user presses the suspend key
    • newt_suspend — Tells newt to return the terminal to its initial state
    • newt_textbox_get_num_lines — 说明
    • newt_textbox_reflowed — 说明
    • newt_textbox_set_height — 说明
    • newt_textbox_set_text — 说明
    • newt_textbox — 说明
    • newt_vertical_scrollbar — 说明
    • newt_wait_for_key — Doesn't return until a key has been pressed
    • newt_win_choice — 说明
    • newt_win_entries — 说明
    • newt_win_menu — 说明
    • newt_win_message — 说明
    • newt_win_messagev — 说明
    • newt_win_ternary — 说明
ncurses_wvline
简介
针对命令行的扩展


简介

This is a PHP language extension for RedHat Newt library, a terminal-based window and widget library for writing applications with user friendly interface. Once this extension is enabled in PHP it will provide the use of Newt widgets, such as windows, buttons, checkboxes, radiobuttons, labels, editboxes, scrolls, textareas, scales, etc. Use of this extension is very similar to the original Newt API of C programming language.

Newt
安装／配置
Newt


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Newt


需求

This module uses the functions of the RedHat Newt library. You need libnewt version >= 0.51.0.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。 安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/newt.

In order to use these functions you must compile CGI or CLI PHP with newt support by using the --with-newt[=DIR] configure option.

Note:

This extension is not available for Windows platform.

You may need also curses and slang libraries, in order to compile this extension. To specify locations of these libraries, use the following configuration options: --with-curses-dir=/path/to/libcurses --with-slang-dir=/path/to/libslang

需求
运行时配置
安装／配置


资源类型

This extension uses two resource types: "newt component" and "newt grid".

Resource type "newt component" is returned by functions, which create common newt widgets (for example: newt_button())

Resource type "newt grid" is a special link identifier for components, returned by newt grid factory functions (for example: newt_create_grid())

运行时配置
预定义常量
安装／配置


预定义常量

Table of Contents

  • Newt form exit reasons
  • Newt colorsets
  • Newt argument flags
  • Newt Flags Sense
  • Newt Components Flags
  • File Descriptor Flags
  • Checkbox Tree Flags
  • Entry Flags
  • Listbox Flags
  • Textbox Flags
  • Form Flags
  • Newt Keys
  • Newt Anchors
  • Grid Flags

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

资源类型
Newt form exit reasons
Newt


Newt form exit reasons

Newt form exit reasons
constant | meaning
NEWT_EXIT_HOTKEY | hotkey defined by newt_form_add_hot_key() was pressed
NEWT_EXIT_COMPONENT | some component has caused form to exit
NEWT_EXIT_FDREADY | file descriptor specified in newt_form_watch_fd() is ready to be read or written to
NEWT_EXIT_TIMER | time specified in newt_form_set_timer() has elapsed
预定义常量
Newt colorsets
预定义常量


Newt colorsets

Newt colorsets
constant | meaning
NEWT_COLORSET_ROOT |
NEWT_COLORSET_BORDER |
NEWT_COLORSET_WINDOW |
NEWT_COLORSET_SHADOW |
NEWT_COLORSET_TITLE |
NEWT_COLORSET_BUTTON |
NEWT_COLORSET_ACTBUTTON |
NEWT_COLORSET_CHECKBOX |
NEWT_COLORSET_ACTCHECKBOX |
NEWT_COLORSET_ENTRY |
NEWT_COLORSET_LABEL |
NEWT_COLORSET_LISTBOX |
NEWT_COLORSET_ACTLISTBOX |
NEWT_COLORSET_TEXTBOX |
NEWT_COLORSET_ACTTEXTBOX |
NEWT_COLORSET_HELPLINE |
NEWT_COLORSET_ROOTTEXT |
NEWT_COLORSET_EMPTYSCALE |
NEWT_COLORSET_FULLSCALE |
NEWT_COLORSET_DISENTRY |
NEWT_COLORSET_COMPACTBUTTON |
NEWT_COLORSET_ACTSELLISTBOX |
NEWT_COLORSET_SELLISTBOX |
Newt form exit reasons
Newt argument flags
预定义常量


Newt argument flags

Newt argument flags
constant | meaning
NEWT_ARG_LAST |
NEWT_ARG_APPEND |
Newt colorsets
Newt Flags Sense
预定义常量


Newt Flags Sense

Newt Flags Sense
constant | meaning
NEWT_FLAGS_SET |
NEWT_FLAGS_RESET |
NEWT_FLAGS_TOGGLE |
Newt argument flags
Newt Components Flags
预定义常量


Newt Components Flags

Newt Components Flags
constant | meaning
NEWT_FLAG_RETURNEXIT | Exit form, when component is activated
NEWT_FLAG_HIDDEN | Component is hidden
NEWT_FLAG_SCROLL | Component is scrollable
NEWT_FLAG_DISABLED | Component is disabled
NEWT_FLAG_BORDER |
NEWT_FLAG_WRAP | Wrap text
NEWT_FLAG_NOF12 | Don't exit form on pressing F12
NEWT_FLAG_MULTIPLE |
NEWT_FLAG_SELECTED | Component is selected
NEWT_FLAG_CHECKBOX | Component is checkbox
NEWT_FLAG_PASSWORD | Entry component is password entry
NEWT_FLAG_SHOWCURSOR | Show cursor
Newt Flags Sense
File Descriptor Flags
预定义常量


File Descriptor Flags

File Descriptor Flags
constant | meaning
NEWT_FD_READ |
NEWT_FD_WRITE |
NEWT_FD_EXCEPT |
Newt Components Flags
Checkbox Tree Flags
预定义常量


Checkbox Tree Flags

Checkbox Tree Flags
constant | meaning
NEWT_CHECKBOXTREE_UNSELECTABLE |
NEWT_CHECKBOXTREE_HIDE_BOX |
NEWT_CHECKBOXTREE_COLLAPSED |
NEWT_CHECKBOXTREE_EXPANDED |
NEWT_CHECKBOXTREE_UNSELECTED |
NEWT_CHECKBOXTREE_SELECTED |
File Descriptor Flags
Entry Flags
预定义常量


Entry Flags

Entry Flags
constant | meaning
NEWT_ENTRY_SCROLL |
NEWT_ENTRY_HIDDEN |
NEWT_ENTRY_RETURNEXIT |
NEWT_ENTRY_DISABLED |
Checkbox Tree Flags
Listbox Flags
预定义常量


Listbox Flags

Listbox Flags
constant | meaning
NEWT_LISTBOX_RETURNEXIT |
Entry Flags
Textbox Flags
预定义常量


Textbox Flags

Textbox Flags
constant | meaning
NEWT_TEXTBOX_WRAP | Wrap text in the textbox
NEWT_TEXTBOX_SCROLL | Scroll text in the textbox
Listbox Flags
Form Flags
预定义常量


Form Flags

Form Flags
constant | meaning
NEWT_FORM_NOF12 | Don't exit form on F12 press
Textbox Flags
Newt Keys
预定义常量


Newt Keys

Newt Keys
constant | meaning
NEWT_KEY_TAB |
NEWT_KEY_ENTER |
NEWT_KEY_SUSPEND |
NEWT_KEY_ESCAPE |
NEWT_KEY_RETURN |
NEWT_KEY_EXTRA_BASE |
NEWT_KEY_UP |
NEWT_KEY_DOWN |
NEWT_KEY_LEFT |
NEWT_KEY_RIGHT |
NEWT_KEY_BKSPC |
NEWT_KEY_DELETE |
NEWT_KEY_HOME |
NEWT_KEY_END |
NEWT_KEY_UNTAB |
NEWT_KEY_PGUP |
NEWT_KEY_PGDN |
NEWT_KEY_INSERT |
NEWT_KEY_F1 |
NEWT_KEY_F2 |
NEWT_KEY_F3 |
NEWT_KEY_F4 |
NEWT_KEY_F5 |
NEWT_KEY_F6 |
NEWT_KEY_F7 |
NEWT_KEY_F8 |
NEWT_KEY_F9 |
NEWT_KEY_F10 |
NEWT_KEY_F11 |
NEWT_KEY_F12 |
NEWT_KEY_RESIZE |
Form Flags
Newt Anchors
预定义常量


Newt Anchors

Newt Anchors
constant | meaning
NEWT_ANCHOR_LEFT |
NEWT_ANCHOR_RIGHT |
NEWT_ANCHOR_TOP |
NEWT_ANCHOR_BOTTOM |
Newt Keys
Grid Flags
预定义常量


Grid Flags

Grid Flags
constant | meaning
NEWT_GRID_FLAG_GROWX |
NEWT_GRID_FLAG_GROWY |
NEWT_GRID_EMPTY |
NEWT_GRID_COMPONENT |
NEWT_GRID_SUBGRID |
Newt Anchors
范例
预定义常量


范例

Table of Contents

  • Basic usage
Grid Flags
Basic usage
Newt


Basic usage

This example is a PHP port of RedHat 'setup' utility dialog, executed in text mode.

Example #1 Newt Usage Example

<?php
newt_init ();
newt_cls ();

newt_draw_root_text (0, 0, "Test Mode Setup Utility 1.12");
newt_push_help_line (null);
newt_draw_root_text (-30, 0, "(c) 1999-2002 RedHat, Inc");

newt_get_screen_size ($rows, $cols);

newt_open_window ($rows/2-17, $cols/2-10, 34, 17, "Choose a Tool");

$form = newt_form ();

$list = newt_listbox (3, 2, 10);

foreach (array (
    "Authentication configuration",
    "Firewall configuration",
    "Mouse configuration",
    "Network configuration",
    "Printer configuration",
    "System services") as $l_item)
{
    newt_listbox_add_entry ($list, $l_item, $l_item);
}

$b1 = newt_button (5, 12, "Run Tool");
$b2 = newt_button (21, 12, "Quit");

newt_form_add_component ($form, $list);
newt_form_add_components ($form, array($b1, $b2));

newt_refresh ();
newt_run_form ($form);

newt_pop_window ();
newt_pop_help_line ();
newt_finished ();
newt_form_destroy ($form);
?>
范例
Newt 函数
范例


Newt 函数

Table of Contents

  • newt_bell — Send a beep to the terminal
  • newt_button_bar — This function returns a grid containing the buttons created.
  • newt_button — Create a new button
  • newt_centered_window — Open a centered window of the specified size
  • newt_checkbox_get_value — Retreives value of checkox resource
  • newt_checkbox_set_flags — Configures checkbox resource
  • newt_checkbox_set_value — Sets the value of the checkbox
  • newt_checkbox_tree_add_item — Adds new item to the checkbox tree
  • newt_checkbox_tree_find_item — Finds an item in the checkbox tree
  • newt_checkbox_tree_get_current — Returns checkbox tree selected item
  • newt_checkbox_tree_get_entry_value — 说明
  • newt_checkbox_tree_get_multi_selection — 说明
  • newt_checkbox_tree_get_selection — 说明
  • newt_checkbox_tree_multi — 说明
  • newt_checkbox_tree_set_current — 说明
  • newt_checkbox_tree_set_entry_value — 说明
  • newt_checkbox_tree_set_entry — 说明
  • newt_checkbox_tree_set_width — 说明
  • newt_checkbox_tree — 说明
  • newt_checkbox — 说明
  • newt_clear_key_buffer — Discards the contents of the terminal's input buffer without waiting for additional input
  • newt_cls — 说明
  • newt_compact_button — 说明
  • newt_component_add_callback — 说明
  • newt_component_takes_focus — 说明
  • newt_create_grid — 说明
  • newt_cursor_off — 说明
  • newt_cursor_on — 说明
  • newt_delay — 说明
  • newt_draw_form — 说明
  • newt_draw_root_text — Displays the string text at the position indicated
  • newt_entry_get_value — 说明
  • newt_entry_set_filter — 说明
  • newt_entry_set_flags — 说明
  • newt_entry_set — 说明
  • newt_entry — 说明
  • newt_finished — Uninitializes newt interface
  • newt_form_add_component — Adds a single component to the form
  • newt_form_add_components — Add several components to the form
  • newt_form_add_hot_key — 说明
  • newt_form_destroy — Destroys a form
  • newt_form_get_current — 说明
  • newt_form_run — Runs a form
  • newt_form_set_background — 说明
  • newt_form_set_height — 说明
  • newt_form_set_size — 说明
  • newt_form_set_timer — 说明
  • newt_form_set_width — 说明
  • newt_form_watch_fd — 说明
  • newt_form — Create a form
  • newt_get_screen_size — Fills in the passed references with the current size of the terminal
  • newt_grid_add_components_to_form — 说明
  • newt_grid_basic_window — 说明
  • newt_grid_free — 说明
  • newt_grid_get_size — 说明
  • newt_grid_h_close_stacked — 说明
  • newt_grid_h_stacked — 说明
  • newt_grid_place — 说明
  • newt_grid_set_field — 说明
  • newt_grid_simple_window — 说明
  • newt_grid_v_close_stacked — 说明
  • newt_grid_v_stacked — 说明
  • newt_grid_wrapped_window_at — 说明
  • newt_grid_wrapped_window — 说明
  • newt_init — Initialize newt
  • newt_label_set_text — 说明
  • newt_label — 说明
  • newt_listbox_append_entry — 说明
  • newt_listbox_clear_selection — 说明
  • newt_listbox_clear — 说明
  • newt_listbox_delete_entry — 说明
  • newt_listbox_get_current — 说明
  • newt_listbox_get_selection — 说明
  • newt_listbox_insert_entry — 说明
  • newt_listbox_item_count — 说明
  • newt_listbox_select_item — 说明
  • newt_listbox_set_current_by_key — 说明
  • newt_listbox_set_current — 说明
  • newt_listbox_set_data — 说明
  • newt_listbox_set_entry — 说明
  • newt_listbox_set_width — 说明
  • newt_listbox — 说明
  • newt_listitem_get_data — 说明
  • newt_listitem_set — 说明
  • newt_listitem — 说明
  • newt_open_window — Open a window of the specified size and position
  • newt_pop_help_line — Replaces the current help line with the one from the stack
  • newt_pop_window — Removes the top window from the display
  • newt_push_help_line — Saves the current help line on a stack, and displays the new line
  • newt_radio_get_current — 说明
  • newt_radiobutton — 说明
  • newt_redraw_help_line — 说明
  • newt_reflow_text — 说明
  • newt_refresh — Updates modified portions of the screen
  • newt_resize_screen — 说明
  • newt_resume — Resume using the newt interface after calling newt_suspend
  • newt_run_form — Runs a form
  • newt_scale_set — 说明
  • newt_scale — 说明
  • newt_scrollbar_set — 说明
  • newt_set_help_callback — 说明
  • newt_set_suspend_callback — Set a callback function which gets invoked when user presses the suspend key
  • newt_suspend — Tells newt to return the terminal to its initial state
  • newt_textbox_get_num_lines — 说明
  • newt_textbox_reflowed — 说明
  • newt_textbox_set_height — 说明
  • newt_textbox_set_text — 说明
  • newt_textbox — 说明
  • newt_vertical_scrollbar — 说明
  • newt_wait_for_key — Doesn't return until a key has been pressed
  • newt_win_choice — 说明
  • newt_win_entries — 说明
  • newt_win_menu — 说明
  • newt_win_message — 说明
  • newt_win_messagev — 说明
  • newt_win_ternary — 说明
Basic usage
newt_bell
Newt


Send a beep to the terminal

Newt 函数
newt_button_bar
Newt 函数
PHP Manual

newt_bell

(PECL newt >= 0.1)

newt_bell — Send a beep to the terminal

说明

void newt_bell ( void )

This function sends a beep to the terminal.

Note:

Depending on the terminal's settings, this beep may or may not be audible.

返回值

没有返回值。

Newt 函数
newt_button_bar
Newt 函数


This function returns a grid containing the buttons created.

newt_bell
newt_button
Newt 函数
PHP Manual

newt_button_bar

(PECL newt >= 0.1)

newt_button_bar — This function returns a grid containing the buttons created.

说明

resource newt_button_bar ( array &$buttons )

This function returns a grid containing the buttons created.

参数

buttons

返回值

Returns grid containing the buttons created.

newt_bell
newt_button
Newt 函数


Create a new button

newt_button_bar
newt_centered_window
Newt 函数
PHP Manual

newt_button

(PECL newt >= 0.1)

newt_button — Create a new button

说明

resource newt_button ( int $left , int $top , string $text )

Creates a new button.

参数

left

X-coordinate of the button.

top

Y-coordinate of the button.

text

The text which should be displayed in the button.

返回值

Returns a resource link to the created button component, or FALSE on error.

范例

Example #1 A newt_button() example

<?php

$form = newt_form();

$ok_button = newt_button(5, 12, "Run Tool");

newt_form_add_component($form, $ok_button);

?>

参见

  • newt_button_bar() - This function returns a grid containing the buttons created.

newt_button_bar
newt_centered_window
Newt 函数


Open a centered window of the specified size

newt_button
newt_checkbox_get_value
Newt 函数
PHP Manual

newt_centered_window

(PECL newt >= 0.1)

newt_centered_window — Open a centered window of the specified size

说明

int newt_centered_window ( int $width , int $height [, string $title ] )

Open a centered window of the specified size.

参数

width

Window width

height

Window height

title

Window title

返回值

Undefined value.

参见

  • newt_pop_window() - Removes the top window from the display
  • newt_open_window() - Open a window of the specified size and position

newt_button
newt_checkbox_get_value
Newt 函数


Retreives value of checkox resource

newt_centered_window
newt_checkbox_set_flags
Newt 函数
PHP Manual

newt_checkbox_get_value

(PECL newt >= 0.1)

newt_checkbox_get_value — Retreives value of checkox resource

说明

string newt_checkbox_get_value ( resource $checkbox )

This function returns the character in the sequence which indicates the current value of the checkbox.

参数

checkbox

返回值

Returns character indicating the value of the checkbox.

newt_centered_window
newt_checkbox_set_flags
Newt 函数


Configures checkbox resource

newt_checkbox_get_value
newt_checkbox_set_value
Newt 函数
PHP Manual

newt_checkbox_set_flags

(PECL newt >= 0.1)

newt_checkbox_set_flags — Configures checkbox resource

说明

void newt_checkbox_set_flags ( resource $checkbox , int $flags , int $sense )

This function allows to set various flags on checkbox resource.

参数

checkbox

flags

sense

返回值

没有返回值。

newt_checkbox_get_value
newt_checkbox_set_value
Newt 函数


Sets the value of the checkbox

newt_checkbox_set_flags
newt_checkbox_tree_add_item
Newt 函数
PHP Manual

newt_checkbox_set_value

(PECL newt >= 0.1)

newt_checkbox_set_value — Sets the value of the checkbox

说明

void newt_checkbox_set_value ( resource $checkbox , string $value )

This function allows to set the current value of the checkbox resource.

参数

checkbox

value

返回值

没有返回值。

newt_checkbox_set_flags
newt_checkbox_tree_add_item
Newt 函数


Adds new item to the checkbox tree

newt_checkbox_set_value
newt_checkbox_tree_find_item
Newt 函数
PHP Manual

newt_checkbox_tree_add_item

(PECL newt >= 0.1)

newt_checkbox_tree_add_item — Adds new item to the checkbox tree

说明

void newt_checkbox_tree_add_item ( resource $checkboxtree , string $text , mixed $data , int $flags , int $index [, int $... ] )

This function allows to add new item to the checkbox tree.

参数

checkboxtree

text

data

flags

index

返回值

没有返回值。

newt_checkbox_set_value
newt_checkbox_tree_find_item
Newt 函数


Finds an item in the checkbox tree

newt_checkbox_tree_add_item
newt_checkbox_tree_get_current
Newt 函数
PHP Manual

newt_checkbox_tree_find_item

(PECL newt >= 0.1)

newt_checkbox_tree_find_item — Finds an item in the checkbox tree

说明

array newt_checkbox_tree_find_item ( resource $checkboxtree , mixed $data )

Finds an item in the checkbox tree by item's data.

参数

checkboxtree

data

返回值

Returns checkbox tree item resource, or NULL if it wasn't found.

newt_checkbox_tree_add_item
newt_checkbox_tree_get_current
Newt 函数


Returns checkbox tree selected item

newt_checkbox_tree_find_item
newt_checkbox_tree_get_entry_value
Newt 函数
PHP Manual

newt_checkbox_tree_get_current

(PECL newt >= 0.1)

newt_checkbox_tree_get_current — Returns checkbox tree selected item

说明

mixed newt_checkbox_tree_get_current ( resource $checkboxtree )

This method returns checkbox tree selected tem.

参数

checkboxtree

返回值

Returns current (selected) checkbox tree item.

newt_checkbox_tree_find_item
newt_checkbox_tree_get_entry_value
Newt 函数


newt_checkbox_tree_get_current
newt_checkbox_tree_get_multi_selection
Newt 函数
PHP Manual

newt_checkbox_tree_get_entry_value

(PECL newt >= 0.1)

newt_checkbox_tree_get_entry_value —

说明

string newt_checkbox_tree_get_entry_value ( resource $checkboxtree , mixed $data )
Warning

本函数还未编写文档，仅有参数列表。

参数

checkboxtree

data

返回值

newt_checkbox_tree_get_current
newt_checkbox_tree_get_multi_selection
Newt 函数


newt_checkbox_tree_get_entry_value
newt_checkbox_tree_get_selection
Newt 函数
PHP Manual

newt_checkbox_tree_get_multi_selection

(PECL newt >= 0.1)

newt_checkbox_tree_get_multi_selection —

说明

array newt_checkbox_tree_get_multi_selection ( resource $checkboxtree , string $seqnum )
Warning

本函数还未编写文档，仅有参数列表。

参数

checkboxtree

seqnum

返回值

newt_checkbox_tree_get_entry_value
newt_checkbox_tree_get_selection
Newt 函数


newt_checkbox_tree_get_multi_selection
newt_checkbox_tree_multi
Newt 函数
PHP Manual

newt_checkbox_tree_get_selection

(PECL newt >= 0.1)

newt_checkbox_tree_get_selection —

说明

array newt_checkbox_tree_get_selection ( resource $checkboxtree )
Warning

本函数还未编写文档，仅有参数列表。

参数

checkboxtree

返回值

newt_checkbox_tree_get_multi_selection
newt_checkbox_tree_multi
Newt 函数


newt_checkbox_tree_get_selection
newt_checkbox_tree_set_current
Newt 函数
PHP Manual

newt_checkbox_tree_multi

(PECL newt >= 0.1)

newt_checkbox_tree_multi —

说明

resource newt_checkbox_tree_multi ( int $left , int $top , int $height , string $seq [, int $flags ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

left

top

height

seq

flags

返回值

newt_checkbox_tree_get_selection
newt_checkbox_tree_set_current
Newt 函数


newt_checkbox_tree_multi
newt_checkbox_tree_set_entry_value
Newt 函数
PHP Manual

newt_checkbox_tree_set_current

(PECL newt >= 0.1)

newt_checkbox_tree_set_current —

说明

void newt_checkbox_tree_set_current ( resource $checkboxtree , mixed $data )
Warning

本函数还未编写文档，仅有参数列表。

参数

checkboxtree

data

返回值

没有返回值。

newt_checkbox_tree_multi
newt_checkbox_tree_set_entry_value
Newt 函数


newt_checkbox_tree_set_current
newt_checkbox_tree_set_entry
Newt 函数
PHP Manual

newt_checkbox_tree_set_entry_value

(PECL newt >= 0.1)

newt_checkbox_tree_set_entry_value —

说明

void newt_checkbox_tree_set_entry_value ( resource $checkboxtree , mixed $data , string $value )
Warning

本函数还未编写文档，仅有参数列表。

参数

checkboxtree

data

value

返回值

没有返回值。

newt_checkbox_tree_set_current
newt_checkbox_tree_set_entry
Newt 函数


newt_checkbox_tree_set_entry_value
newt_checkbox_tree_set_width
Newt 函数
PHP Manual

newt_checkbox_tree_set_entry

(PECL newt >= 0.1)

newt_checkbox_tree_set_entry —

说明

void newt_checkbox_tree_set_entry ( resource $checkboxtree , mixed $data , string $text )
Warning

本函数还未编写文档，仅有参数列表。

参数

checkboxtree

data

text

返回值

没有返回值。

newt_checkbox_tree_set_entry_value
newt_checkbox_tree_set_width
Newt 函数


newt_checkbox_tree_set_entry
newt_checkbox_tree
Newt 函数
PHP Manual

newt_checkbox_tree_set_width

(PECL newt >= 0.1)

newt_checkbox_tree_set_width —

说明

void newt_checkbox_tree_set_width ( resource $checkbox_tree , int $width )
Warning

本函数还未编写文档，仅有参数列表。

参数

checkbox_tree

width

返回值

没有返回值。

newt_checkbox_tree_set_entry
newt_checkbox_tree
Newt 函数


newt_checkbox_tree_set_width
newt_checkbox
Newt 函数
PHP Manual

newt_checkbox_tree

(PECL newt >= 0.1)

newt_checkbox_tree —

说明

resource newt_checkbox_tree ( int $left , int $top , int $height [, int $flags ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

left

top

height

flags

返回值

newt_checkbox_tree_set_width
newt_checkbox
Newt 函数


newt_checkbox_tree
newt_clear_key_buffer
Newt 函数
PHP Manual

newt_checkbox

(PECL newt >= 0.1)

newt_checkbox —

说明

resource newt_checkbox ( int $left , int $top , string $text , string $def_value [, string $seq ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

left

top

text

def_value

seq

返回值

newt_checkbox_tree
newt_clear_key_buffer
Newt 函数


Discards the contents of the terminal's input buffer without waiting for additional input

newt_checkbox
newt_cls
Newt 函数
PHP Manual

newt_clear_key_buffer

(PECL newt >= 0.1)

newt_clear_key_buffer — Discards the contents of the terminal's input buffer without waiting for additional input

说明

void newt_clear_key_buffer ( void )

Discards the contents of the terminal's input buffer without waiting for additional input.

返回值

没有返回值。

参见

  • newt_wait_for_key() - Doesn't return until a key has been pressed

newt_checkbox
newt_cls
Newt 函数


newt_clear_key_buffer
newt_compact_button
Newt 函数
PHP Manual

newt_cls

(PECL newt >= 0.1)

newt_cls —

说明

void newt_cls ( void )
Warning

本函数还未编写文档，仅有参数列表。

参数

返回值

没有返回值。

newt_clear_key_buffer
newt_compact_button
Newt 函数


newt_cls
newt_component_add_callback
Newt 函数
PHP Manual

newt_compact_button

(PECL newt >= 0.1)

newt_compact_button —

说明

resource newt_compact_button ( int $left , int $top , string $text )
Warning

本函数还未编写文档，仅有参数列表。

参数

left

top

text

返回值

newt_cls
newt_component_add_callback
Newt 函数


newt_compact_button
newt_component_takes_focus
Newt 函数
PHP Manual

newt_component_add_callback

(PECL newt >= 0.1)

newt_component_add_callback —

说明

void newt_component_add_callback ( resource $component , mixed $func_name , mixed $data )
Warning

本函数还未编写文档，仅有参数列表。

参数

component

func_name

data

返回值

没有返回值。

newt_compact_button
newt_component_takes_focus
Newt 函数


newt_component_add_callback
newt_create_grid
Newt 函数
PHP Manual

newt_component_takes_focus

(PECL newt >= 0.1)

newt_component_takes_focus —

说明

void newt_component_takes_focus ( resource $component , bool $takes_focus )
Warning

本函数还未编写文档，仅有参数列表。

参数

component

takes_focus

返回值

没有返回值。

newt_component_add_callback
newt_create_grid
Newt 函数


newt_component_takes_focus
newt_cursor_off
Newt 函数
PHP Manual

newt_create_grid

(PECL newt >= 0.1)

newt_create_grid —

说明

resource newt_create_grid ( int $cols , int $rows )
Warning

本函数还未编写文档，仅有参数列表。

参数

cols

rows

返回值

newt_component_takes_focus
newt_cursor_off
Newt 函数


newt_create_grid
newt_cursor_on
Newt 函数
PHP Manual

newt_cursor_off

(PECL newt >= 0.1)

newt_cursor_off —

说明

void newt_cursor_off ( void )
Warning

本函数还未编写文档，仅有参数列表。

参数

返回值

没有返回值。

newt_create_grid
newt_cursor_on
Newt 函数


newt_cursor_off
newt_delay
Newt 函数
PHP Manual

newt_cursor_on

(PECL newt >= 0.1)

newt_cursor_on —

说明

void newt_cursor_on ( void )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

newt_cursor_off
newt_delay
Newt 函数


newt_cursor_on
newt_draw_form
Newt 函数
PHP Manual

newt_delay

(PECL newt >= 0.1)

newt_delay —

说明

void newt_delay ( int $microseconds )
Warning

本函数还未编写文档，仅有参数列表。

参数

microseconds

返回值

没有返回值。

newt_cursor_on
newt_draw_form
Newt 函数


newt_delay
newt_draw_root_text
Newt 函数
PHP Manual

newt_draw_form

(PECL newt >= 0.1)

newt_draw_form —

说明

void newt_draw_form ( resource $form )
Warning

本函数还未编写文档，仅有参数列表。

参数

form

返回值

没有返回值。

newt_delay
newt_draw_root_text
Newt 函数


Displays the string text at the position indicated

newt_draw_form
newt_entry_get_value
Newt 函数
PHP Manual

newt_draw_root_text

(PECL newt >= 0.1)

newt_draw_root_text — Displays the string text at the position indicated

说明

void newt_draw_root_text ( int $left , int $top , string $text )

Displays the string text at the position indicated.

参数

left

Column number

Note:

If left is negative, the position is measured from the opposite side of the screen.

top

Line number

Note:

If top is negative, the position is measured from the opposite side of the screen.

text

Text to display.

返回值

没有返回值。

范例

Example #1 A newt_draw_root_text() example

This code demonstrates drawing of titles in the both corners of the screen.

<?php
 newt_init();
 newt_cls();

 newt_draw_root_text (2, 0, "Some root text");
 newt_refresh();
 sleep(1);

 newt_draw_root_text (-30, 0, "Root text in the other corner");
 newt_refresh();
 sleep(1);

 newt_finished();
?>

参见

  • newt_push_help_line() - Saves the current help line on a stack, and displays the new line
  • newt_pop_help_line() - Replaces the current help line with the one from the stack

newt_draw_form
newt_entry_get_value
Newt 函数


newt_draw_root_text
newt_entry_set_filter
Newt 函数
PHP Manual

newt_entry_get_value

(PECL newt >= 0.1)

newt_entry_get_value —

说明

string newt_entry_get_value ( resource $entry )
Warning

本函数还未编写文档，仅有参数列表。

参数

entry

返回值

newt_draw_root_text
newt_entry_set_filter
Newt 函数


newt_entry_get_value
newt_entry_set_flags
Newt 函数
PHP Manual

newt_entry_set_filter

(PECL newt >= 0.1)

newt_entry_set_filter —

说明

void newt_entry_set_filter ( resource $entry , callable $filter , mixed $data )
Warning

本函数还未编写文档，仅有参数列表。

参数

entry

filter

data

返回值

没有返回值。

newt_entry_get_value
newt_entry_set_flags
Newt 函数


newt_entry_set_filter
newt_entry_set
Newt 函数
PHP Manual

newt_entry_set_flags

(PECL newt >= 0.1)

newt_entry_set_flags —

说明

void newt_entry_set_flags ( resource $entry , int $flags , int $sense )
Warning

本函数还未编写文档，仅有参数列表。

参数

entry

flags

sense

返回值

没有返回值。

newt_entry_set_filter
newt_entry_set
Newt 函数


newt_entry_set_flags
newt_entry
Newt 函数
PHP Manual

newt_entry_set

(PECL newt >= 0.1)

newt_entry_set —

说明

void newt_entry_set ( resource $entry , string $value [, bool $cursor_at_end ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

entry

value

cursor_at_end

返回值

没有返回值。

newt_entry_set_flags
newt_entry
Newt 函数


newt_entry_set
newt_finished
Newt 函数
PHP Manual

newt_entry

(PECL newt >= 0.1)

newt_entry —

说明

resource newt_entry ( int $left , int $top , int $width [, string $init_value [, int $flags ]] )
Warning

本函数还未编写文档，仅有参数列表。

参数

left

top

width

init_value

flags

返回值

newt_entry_set
newt_finished
Newt 函数


Uninitializes newt interface

newt_entry
newt_form_add_component
Newt 函数
PHP Manual

newt_finished

(PECL newt >= 0.1)

newt_finished — Uninitializes newt interface

说明

int newt_finished ( void )

Uninitializes newt interface. This function be called, when program is ready to exit.

返回值

Returns 1 on success, 0 on failure.

参见

  • newt_init() - Initialize newt

newt_entry
newt_form_add_component
Newt 函数


Adds a single component to the form

newt_finished
newt_form_add_components
Newt 函数
PHP Manual

newt_form_add_component

(PECL newt >= 0.1)

newt_form_add_component — Adds a single component to the form

说明

void newt_form_add_component ( resource $form , resource $component )

Adds a single component to the form.

参数

form

Form to which component will be added

component

Component to add to the form

返回值

没有返回值。

范例

Example #1 A newt_form_add_component() example

<?php
$form = newt_form();

$options = array("Authentication configuration", "Firewall configuration",
"Mouse configuration", "Network configuration", "Printer configuration",
"System services");

$list = newt_listbox(3, 2, 10);

foreach ($options as $l_item) {
    newt_listbox_add_entry($list, $l_item, $l_item);
}

newt_form_add_component($form, $list);
?>

参见

  • newt_form_add_components() - Add several components to the form

newt_finished
newt_form_add_components
Newt 函数


Add several components to the form

newt_form_add_component
newt_form_add_hot_key
Newt 函数
PHP Manual

newt_form_add_components

(PECL newt >= 0.1)

newt_form_add_components — Add several components to the form

说明

void newt_form_add_components ( resource $form , array $components )

Adds several components to the form.

参数

form

Form to which components will be added

components

Array of components to add to the form

返回值

没有返回值。

范例

Example #1 A newt_form_add_components() example

<?php
$form = newt_form();

$b1 = newt_button(5, 12, "Run Tool");
$b2 = newt_button(21, 12, "Quit");

newt_form_add_components($form, array($b1, $b2));
?>

参见

  • newt_form_add_component() - Adds a single component to the form

newt_form_add_component
newt_form_add_hot_key
Newt 函数


newt_form_add_components
newt_form_destroy
Newt 函数
PHP Manual

newt_form_add_hot_key

(PECL newt >= 0.1)

newt_form_add_hot_key —

说明

void newt_form_add_hot_key ( resource $form , int $key )
Warning

本函数还未编写文档，仅有参数列表。

参数

form

key

返回值

没有返回值。

newt_form_add_components
newt_form_destroy
Newt 函数


Destroys a form

newt_form_add_hot_key
newt_form_get_current
Newt 函数
PHP Manual

newt_form_destroy

(PECL newt >= 0.1)

newt_form_destroy — Destroys a form

说明

void newt_form_destroy ( resource $form )

This function frees the memory resources used by the form and all of the components which have been added to the form (including those components which are on subforms). Once a form has been destroyed, none of the form's components can be used.

参数

form

Form component, which is going to be destroyed

返回值

没有返回值。

参见

  • newt_form_run() - Runs a form
  • newt_run_form() - Runs a form

newt_form_add_hot_key
newt_form_get_current
Newt 函数


newt_form_destroy
newt_form_run
Newt 函数
PHP Manual

newt_form_get_current

(PECL newt >= 0.1)

newt_form_get_current —

说明

resource newt_form_get_current ( resource $form )
Warning

本函数还未编写文档，仅有参数列表。

参数

form

返回值

newt_form_destroy
newt_form_run
Newt 函数


Runs a form

newt_form_get_current
newt_form_set_background
Newt 函数
PHP Manual

newt_form_run

(PECL newt >= 0.1)

newt_form_run — Runs a form

说明

void newt_form_run ( resource $form , array &$exit_struct )

This function runs the form passed to it.

参数

form

Form component

exit_struct

Array, used for returning information after running the form component. Keys and values are described in the following table:

Form Exit Structure
Index Key | Value Type | Description
reason | integer | The reason, why the form has been exited. Possible values are defined here.
watch | resource | Resource link, specified in newt_form_watch_fd()
key | integer | Hotkey
component | resource | Component, which caused the form to exit

返回值

没有返回值。

参见

  • newt_run_form() - Runs a form

newt_form_get_current
newt_form_set_background
Newt 函数


newt_form_run
newt_form_set_height
Newt 函数
PHP Manual

newt_form_set_background

(PECL newt >= 0.1)

newt_form_set_background —

说明

void newt_form_set_background ( resource $from , int $background )
Warning

本函数还未编写文档，仅有参数列表。

参数

from

background

返回值

没有返回值。

newt_form_run
newt_form_set_height
Newt 函数


newt_form_set_background
newt_form_set_size
Newt 函数
PHP Manual

newt_form_set_height

(PECL newt >= 0.1)

newt_form_set_height —

说明

void newt_form_set_height ( resource $form , int $height )
Warning

本函数还未编写文档，仅有参数列表。

参数

form

height

返回值

没有返回值。

newt_form_set_background
newt_form_set_size
Newt 函数


newt_form_set_height
newt_form_set_timer
Newt 函数
PHP Manual

newt_form_set_size

(PECL newt >= 0.1)

newt_form_set_size —

说明

void newt_form_set_size ( resource $form )
Warning

本函数还未编写文档，仅有参数列表。

参数

form

返回值

没有返回值。

newt_form_set_height
newt_form_set_timer
Newt 函数


newt_form_set_size
newt_form_set_width
Newt 函数
PHP Manual

newt_form_set_timer

(PECL newt >= 0.1)

newt_form_set_timer —

说明

void newt_form_set_timer ( resource $form , int $milliseconds )
Warning

本函数还未编写文档，仅有参数列表。

参数

form

milliseconds

返回值

没有返回值。

newt_form_set_size
newt_form_set_width
Newt 函数


newt_form_set_timer
newt_form_watch_fd
Newt 函数
PHP Manual

newt_form_set_width

(PECL newt >= 0.1)

newt_form_set_width —

说明

void newt_form_set_width ( resource $form , int $width )
Warning

本函数还未编写文档，仅有参数列表。

参数

form

width

返回值

没有返回值。

newt_form_set_timer
newt_form_watch_fd
Newt 函数


newt_form_set_width
newt_form
Newt 函数
PHP Manual

newt_form_watch_fd

(PECL newt >= 0.1)

newt_form_watch_fd —

说明

void newt_form_watch_fd ( resource $form , resource $stream [, int $flags ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

form

stream

flags

返回值

没有返回值。

newt_form_set_width
newt_form
Newt 函数


Create a form

newt_form_watch_fd
newt_get_screen_size
Newt 函数
PHP Manual

newt_form

(PECL newt >= 0.1)

newt_form — Create a form

说明

resource newt_form ([ resource $vert_bar [, string $help [, int $flags ]]] )

Create a new form.

参数

vert_bar

Vertical scrollbar which should be associated with the form

help

Help text string

flags

Various flags

返回值

Returns a resource link to the created form component, or FALSE on error.

范例

Example #1 A newt_form() example

Displays a single button "Quit", which closes the application once it's pressed.

<?php
newt_init();
newt_cls();

$myform = newt_form();
$button = newt_button (5, 12, "Quit");

newt_form_add_component ($myform, $button);
newt_refresh ();
newt_run_form ($myform);

newt_finished ();
newt_form_destroy ($myform);
?>

参见

  • newt_form_run() - Runs a form
  • newt_run_form() - Runs a form
  • newt_form_add_component() - Adds a single component to the form
  • newt_form_add_components() - Add several components to the form
  • newt_form_destroy() - Destroys a form

newt_form_watch_fd
newt_get_screen_size
Newt 函数


Fills in the passed references with the current size of the terminal

newt_form
newt_grid_add_components_to_form
Newt 函数
PHP Manual

newt_get_screen_size

(PECL newt >= 0.1)

newt_get_screen_size — Fills in the passed references with the current size of the terminal

说明

void newt_get_screen_size ( int &$cols , int &$rows )

Fills in the passed references with the current size of the terminal.

参数

cols

Number of columns in the terminal

rows

Number of rows in the terminal

返回值

没有返回值。

范例

Example #1 A newt_get_screen_size() example

This code prints out the screen size of your terminal.

<?php
 newt_init();
 newt_get_screen_size (&$cols, &$rows);
 newt_finished();

 print "Your terminal size is: {$cols}x{$rows}\n";
?>

以上例程会输出：

Your terminal size is: 138x47

newt_form
newt_grid_add_components_to_form
Newt 函数


newt_get_screen_size
newt_grid_basic_window
Newt 函数
PHP Manual

newt_grid_add_components_to_form

(PECL newt >= 0.1)

newt_grid_add_components_to_form —

说明

void newt_grid_add_components_to_form ( resource $grid , resource $form , bool $recurse )
Warning

本函数还未编写文档，仅有参数列表。

参数

grid

form

recurse

返回值

没有返回值。

newt_get_screen_size
newt_grid_basic_window
Newt 函数


newt_grid_add_components_to_form
newt_grid_free
Newt 函数
PHP Manual

newt_grid_basic_window

(PECL newt >= 0.1)

newt_grid_basic_window —

说明

resource newt_grid_basic_window ( resource $text , resource $middle , resource $buttons )
Warning

本函数还未编写文档，仅有参数列表。

参数

text

middle

buttons

返回值

newt_grid_add_components_to_form
newt_grid_free
Newt 函数


newt_grid_basic_window
newt_grid_get_size
Newt 函数
PHP Manual

newt_grid_free

(PECL newt >= 0.1)

newt_grid_free —

说明

void newt_grid_free ( resource $grid , bool $recurse )
Warning

本函数还未编写文档，仅有参数列表。

参数

grid

recurse

返回值

没有返回值。

newt_grid_basic_window
newt_grid_get_size
Newt 函数


newt_grid_free
newt_grid_h_close_stacked
Newt 函数
PHP Manual

newt_grid_get_size

(PECL newt >= 0.1)

newt_grid_get_size —

说明

void newt_grid_get_size ( resouce $grid , int &$width , int &$height )
Warning

本函数还未编写文档，仅有参数列表。

参数

grid

width

height

返回值

没有返回值。

newt_grid_free
newt_grid_h_close_stacked
Newt 函数


newt_grid_get_size
newt_grid_h_stacked
Newt 函数
PHP Manual

newt_grid_h_close_stacked

(PECL newt >= 0.1)

newt_grid_h_close_stacked —

说明

resource newt_grid_h_close_stacked ( int $element1_type , resource $element1 [, int $... [, resource $... ]] )
Warning

本函数还未编写文档，仅有参数列表。

参数

element1_type

element1

返回值

newt_grid_get_size
newt_grid_h_stacked
Newt 函数


newt_grid_h_close_stacked
newt_grid_place
Newt 函数
PHP Manual

newt_grid_h_stacked

(PECL newt >= 0.1)

newt_grid_h_stacked —

说明

resource newt_grid_h_stacked ( int $element1_type , resource $element1 [, int $... [, resource $... ]] )
Warning

本函数还未编写文档，仅有参数列表。

参数

element1_type

element1

返回值

newt_grid_h_close_stacked
newt_grid_place
Newt 函数


newt_grid_h_stacked
newt_grid_set_field
Newt 函数
PHP Manual

newt_grid_place

(PECL newt >= 0.1)

newt_grid_place —

说明

void newt_grid_place ( resource $grid , int $left , int $top )
Warning

本函数还未编写文档，仅有参数列表。

参数

grid

left

top

返回值

没有返回值。

newt_grid_h_stacked
newt_grid_set_field
Newt 函数


newt_grid_place
newt_grid_simple_window
Newt 函数
PHP Manual

newt_grid_set_field

(PECL newt >= 0.1)

newt_grid_set_field —

说明

void newt_grid_set_field ( resource $grid , int $col , int $row , int $type , resource $val , int $pad_left , int $pad_top , int $pad_right , int $pad_bottom , int $anchor [, int $flags ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

grid

col

row

type

val

pad_left

pad_top

pad_right

pad_bottom

anchor

flags

返回值

没有返回值。

newt_grid_place
newt_grid_simple_window
Newt 函数


newt_grid_set_field
newt_grid_v_close_stacked
Newt 函数
PHP Manual

newt_grid_simple_window

(PECL newt >= 0.1)

newt_grid_simple_window —

说明

resource newt_grid_simple_window ( resource $text , resource $middle , resource $buttons )
Warning

本函数还未编写文档，仅有参数列表。

参数

text

middle

buttons

返回值

newt_grid_set_field
newt_grid_v_close_stacked
Newt 函数


newt_grid_simple_window
newt_grid_v_stacked
Newt 函数
PHP Manual

newt_grid_v_close_stacked

(PECL newt >= 0.1)

newt_grid_v_close_stacked —

说明

resource newt_grid_v_close_stacked ( int $element1_type , resource $element1 [, int $... [, resource $... ]] )
Warning

本函数还未编写文档，仅有参数列表。

参数

element1_type

element1

返回值

newt_grid_simple_window
newt_grid_v_stacked
Newt 函数


newt_grid_v_close_stacked
newt_grid_wrapped_window_at
Newt 函数
PHP Manual

newt_grid_v_stacked

(PECL newt >= 0.1)

newt_grid_v_stacked —

说明

resource newt_grid_v_stacked ( int $element1_type , resource $element1 [, int $... [, resource $... ]] )
Warning

本函数还未编写文档，仅有参数列表。

参数

element1_type

element1

返回值

newt_grid_v_close_stacked
newt_grid_wrapped_window_at
Newt 函数


newt_grid_v_stacked
newt_grid_wrapped_window
Newt 函数
PHP Manual

newt_grid_wrapped_window_at

(PECL newt >= 0.1)

newt_grid_wrapped_window_at —

说明

void newt_grid_wrapped_window_at ( resource $grid , string $title , int $left , int $top )
Warning

本函数还未编写文档，仅有参数列表。

参数

grid

title

left

top

返回值

没有返回值。

newt_grid_v_stacked
newt_grid_wrapped_window
Newt 函数


newt_grid_wrapped_window_at
newt_init
Newt 函数
PHP Manual

newt_grid_wrapped_window

(PECL newt >= 0.1)

newt_grid_wrapped_window —

说明

void newt_grid_wrapped_window ( resource $grid , string $title )
Warning

本函数还未编写文档，仅有参数列表。

参数

grid

title

返回值

没有返回值。

newt_grid_wrapped_window_at
newt_init
Newt 函数


Initialize newt

newt_grid_wrapped_window
newt_label_set_text
Newt 函数
PHP Manual

newt_init

(PECL newt >= 0.1)

newt_init — Initialize newt

说明

int newt_init ( void )

Initializes the newt interface. This function must be called before any other newt function.

返回值

Returns 1 on success, 0 on failure.

参见

  • newt_finished() - Uninitializes newt interface

newt_grid_wrapped_window
newt_label_set_text
Newt 函数


newt_init
newt_label
Newt 函数
PHP Manual

newt_label_set_text

(PECL newt >= 0.1)

newt_label_set_text —

说明

void newt_label_set_text ( resource $label , string $text )
Warning

本函数还未编写文档，仅有参数列表。

参数

label

text

返回值

没有返回值。

newt_init
newt_label
Newt 函数


newt_label_set_text
newt_listbox_append_entry
Newt 函数
PHP Manual

newt_label

(PECL newt >= 0.1)

newt_label —

说明

resource newt_label ( int $left , int $top , string $text )
Warning

本函数还未编写文档，仅有参数列表。

参数

left

top

text

返回值

newt_label_set_text
newt_listbox_append_entry
Newt 函数


newt_label
newt_listbox_clear_selection
Newt 函数
PHP Manual

newt_listbox_append_entry

(PECL newt >= 0.1)

newt_listbox_append_entry —

说明

void newt_listbox_append_entry ( resource $listbox , string $text , mixed $data )
Warning

本函数还未编写文档，仅有参数列表。

参数

listbox

text

data

返回值

没有返回值。

newt_label
newt_listbox_clear_selection
Newt 函数


newt_listbox_append_entry
newt_listbox_clear
Newt 函数
PHP Manual

newt_listbox_clear_selection

(PECL newt >= 0.1)

newt_listbox_clear_selection —

说明

void newt_listbox_clear_selection ( resource $listbox )
Warning

本函数还未编写文档，仅有参数列表。

参数

listbox

返回值

没有返回值。

newt_listbox_append_entry
newt_listbox_clear
Newt 函数


newt_listbox_clear_selection
newt_listbox_delete_entry
Newt 函数
PHP Manual

newt_listbox_clear

(PECL newt >= 0.1)

newt_listbox_clear —

说明

void newt_listbox_clear ( resource $listobx )
Warning

本函数还未编写文档，仅有参数列表。

参数

listobx

返回值

没有返回值。

newt_listbox_clear_selection
newt_listbox_delete_entry
Newt 函数


newt_listbox_clear
newt_listbox_get_current
Newt 函数
PHP Manual

newt_listbox_delete_entry

(PECL newt >= 0.1)

newt_listbox_delete_entry —

说明

void newt_listbox_delete_entry ( resource $listbox , mixed $key )
Warning

本函数还未编写文档，仅有参数列表。

参数

listbox

key

返回值

没有返回值。

newt_listbox_clear
newt_listbox_get_current
Newt 函数


newt_listbox_delete_entry
newt_listbox_get_selection
Newt 函数
PHP Manual

newt_listbox_get_current

(PECL newt >= 0.1)

newt_listbox_get_current —

说明

string newt_listbox_get_current ( resource $listbox )
Warning

本函数还未编写文档，仅有参数列表。

参数

listbox

返回值

newt_listbox_delete_entry
newt_listbox_get_selection
Newt 函数


newt_listbox_get_current
newt_listbox_insert_entry
Newt 函数
PHP Manual

newt_listbox_get_selection

(PECL newt >= 0.1)

newt_listbox_get_selection —

说明

array newt_listbox_get_selection ( resource $listbox )
Warning

本函数还未编写文档，仅有参数列表。

参数

listbox

返回值

newt_listbox_get_current
newt_listbox_insert_entry
Newt 函数


newt_listbox_get_selection
newt_listbox_item_count
Newt 函数
PHP Manual

newt_listbox_insert_entry

(PECL newt >= 0.1)

newt_listbox_insert_entry —

说明

void newt_listbox_insert_entry ( resource $listbox , string $text , mixed $data , mixed $key )
Warning

本函数还未编写文档，仅有参数列表。

参数

listbox

text

data

key

返回值

没有返回值。

newt_listbox_get_selection
newt_listbox_item_count
Newt 函数


newt_listbox_insert_entry
newt_listbox_select_item
Newt 函数
PHP Manual

newt_listbox_item_count

(PECL newt >= 0.1)

newt_listbox_item_count —

说明

int newt_listbox_item_count ( resource $listbox )
Warning

本函数还未编写文档，仅有参数列表。

参数

listbox

返回值

newt_listbox_insert_entry
newt_listbox_select_item
Newt 函数


newt_listbox_item_count
newt_listbox_set_current_by_key
Newt 函数
PHP Manual

newt_listbox_select_item

(PECL newt >= 0.1)

newt_listbox_select_item —

说明

void newt_listbox_select_item ( resource $listbox , mixed $key , int $sense )
Warning

本函数还未编写文档，仅有参数列表。

参数

listbox

key

sense

返回值

没有返回值。

newt_listbox_item_count
newt_listbox_set_current_by_key
Newt 函数


newt_listbox_select_item
newt_listbox_set_current
Newt 函数
PHP Manual

newt_listbox_set_current_by_key

(PECL newt >= 0.1)

newt_listbox_set_current_by_key —

说明

void newt_listbox_set_current_by_key ( resource $listbox , mixed $key )
Warning

本函数还未编写文档，仅有参数列表。

参数

listbox

key

返回值

没有返回值。

newt_listbox_select_item
newt_listbox_set_current
Newt 函数


newt_listbox_set_current_by_key
newt_listbox_set_data
Newt 函数
PHP Manual

newt_listbox_set_current

(PECL newt >= 0.1)

newt_listbox_set_current —

说明

void newt_listbox_set_current ( resource $listbox , int $num )
Warning

本函数还未编写文档，仅有参数列表。

参数

listbox

num

返回值

没有返回值。

newt_listbox_set_current_by_key
newt_listbox_set_data
Newt 函数


newt_listbox_set_current
newt_listbox_set_entry
Newt 函数
PHP Manual

newt_listbox_set_data

(PECL newt >= 0.1)

newt_listbox_set_data —

说明

void newt_listbox_set_data ( resource $listbox , int $num , mixed $data )
Warning

本函数还未编写文档，仅有参数列表。

参数

listbox

num

data

返回值

没有返回值。

newt_listbox_set_current
newt_listbox_set_entry
Newt 函数


newt_listbox_set_data
newt_listbox_set_width
Newt 函数
PHP Manual

newt_listbox_set_entry

(PECL newt >= 0.1)

newt_listbox_set_entry —

说明

void newt_listbox_set_entry ( resource $listbox , int $num , string $text )
Warning

本函数还未编写文档，仅有参数列表。

参数

listbox

num

text

返回值

没有返回值。

newt_listbox_set_data
newt_listbox_set_width
Newt 函数


newt_listbox_set_entry
newt_listbox
Newt 函数
PHP Manual

newt_listbox_set_width

(PECL newt >= 0.1)

newt_listbox_set_width —

说明

void newt_listbox_set_width ( resource $listbox , int $width )
Warning

本函数还未编写文档，仅有参数列表。

参数

listbox

width

返回值

没有返回值。

newt_listbox_set_entry
newt_listbox
Newt 函数


newt_listbox_set_width
newt_listitem_get_data
Newt 函数
PHP Manual

newt_listbox

(PECL newt >= 0.1)

newt_listbox —

说明

resource newt_listbox ( int $left , int $top , int $height [, int $flags ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

left

top

height

flags

返回值

newt_listbox_set_width
newt_listitem_get_data
Newt 函数


newt_listbox
newt_listitem_set
Newt 函数
PHP Manual

newt_listitem_get_data

(PECL newt >= 0.1)

newt_listitem_get_data —

说明

mixed newt_listitem_get_data ( resource $item )
Warning

本函数还未编写文档，仅有参数列表。

参数

item

返回值

newt_listbox
newt_listitem_set
Newt 函数


newt_listitem_get_data
newt_listitem
Newt 函数
PHP Manual

newt_listitem_set

(PECL newt >= 0.1)

newt_listitem_set —

说明

void newt_listitem_set ( resource $item , string $text )
Warning

本函数还未编写文档，仅有参数列表。

参数

item

text

返回值

没有返回值。

newt_listitem_get_data
newt_listitem
Newt 函数


newt_listitem_set
newt_open_window
Newt 函数
PHP Manual

newt_listitem

(PECL newt >= 0.1)

newt_listitem —

说明

resource newt_listitem ( int $left , int $top , string $text , bool $is_default , resouce $prev_item , mixed $data [, int $flags ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

left

top

text

is_default

prev_item

data

flags

返回值

newt_listitem_set
newt_open_window
Newt 函数


Open a window of the specified size and position

newt_listitem
newt_pop_help_line
Newt 函数
PHP Manual

newt_open_window

(PECL newt >= 0.1)

newt_open_window — Open a window of the specified size and position

说明

int newt_open_window ( int $left , int $top , int $width , int $height [, string $title ] )

Open a window of the specified size and position.

参数

left

Location of the upper left-hand corner of the window (column number)

top

Location of the upper left-hand corner of the window (row number)

width

Window width

height

Window height

title

Window title

返回值

Returns 1 on success, 0 on failure.

参见

  • newt_pop_window() - Removes the top window from the display
  • newt_centered_window() - Open a centered window of the specified size

newt_listitem
newt_pop_help_line
Newt 函数


Replaces the current help line with the one from the stack

newt_open_window
newt_pop_window
Newt 函数
PHP Manual

newt_pop_help_line

(PECL newt >= 0.1)

newt_pop_help_line — Replaces the current help line with the one from the stack

说明

void newt_pop_help_line ( void )

Replaces the current help line with the one from the stack.

Note:

It's important not to call to newt_pop_help_line() more than newt_push_help_line().

返回值

没有返回值。

参见

  • newt_push_help_line() - Saves the current help line on a stack, and displays the new line

newt_open_window
newt_pop_window
Newt 函数


Removes the top window from the display

newt_pop_help_line
newt_push_help_line
Newt 函数
PHP Manual

newt_pop_window

(PECL newt >= 0.1)

newt_pop_window — Removes the top window from the display

说明

void newt_pop_window ( void )

Removes the top window from the display, and redraws the display areas which the window overwrote.

返回值

没有返回值。

参见

  • newt_open_window() - Open a window of the specified size and position
  • newt_centered_window() - Open a centered window of the specified size

newt_pop_help_line
newt_push_help_line
Newt 函数


Saves the current help line on a stack, and displays the new line

newt_pop_window
newt_radio_get_current
Newt 函数
PHP Manual

newt_push_help_line

(PECL newt >= 0.1)

newt_push_help_line — Saves the current help line on a stack, and displays the new line

说明

void newt_push_help_line ([ string $text ] )

Saves the current help line on a stack, and displays the new line.

参数

text

New help text message

Note:

If not specified, the help line is cleared.

返回值

没有返回值。

参见

  • newt_pop_help_line() - Replaces the current help line with the one from the stack

newt_pop_window
newt_radio_get_current
Newt 函数


newt_push_help_line
newt_radiobutton
Newt 函数
PHP Manual

newt_radio_get_current

(PECL newt >= 0.1)

newt_radio_get_current —

说明

resource newt_radio_get_current ( resource $set_member )
Warning

本函数还未编写文档，仅有参数列表。

参数

set_member

返回值

newt_push_help_line
newt_radiobutton
Newt 函数


newt_radio_get_current
newt_redraw_help_line
Newt 函数
PHP Manual

newt_radiobutton

(PECL newt >= 0.1)

newt_radiobutton —

说明

resource newt_radiobutton ( int $left , int $top , string $text , bool $is_default [, resource $prev_button ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

left

top

text

is_default

prev_button

返回值

newt_radio_get_current
newt_redraw_help_line
Newt 函数


newt_radiobutton
newt_reflow_text
Newt 函数
PHP Manual

newt_redraw_help_line

(PECL newt >= 0.1)

newt_redraw_help_line —

说明

void newt_redraw_help_line ( void )
Warning

本函数还未编写文档，仅有参数列表。

参数

返回值

没有返回值。

newt_radiobutton
newt_reflow_text
Newt 函数


newt_redraw_help_line
newt_refresh
Newt 函数
PHP Manual

newt_reflow_text

(PECL newt >= 0.1)

newt_reflow_text —

说明

string newt_reflow_text ( string $text , int $width , int $flex_down , int $flex_up , int &$actual_width , int &$actual_height )
Warning

本函数还未编写文档，仅有参数列表。

参数

text

width

flex_down

flex_up

actual_width

actual_height

返回值

newt_redraw_help_line
newt_refresh
Newt 函数


Updates modified portions of the screen

newt_reflow_text
newt_resize_screen
Newt 函数
PHP Manual

newt_refresh

(PECL newt >= 0.1)

newt_refresh — Updates modified portions of the screen

说明

void newt_refresh ( void )

To increase performance, newt only updates the display when it needs to, not when the program tells it to write to the terminal. Applications can force newt to immediately update modified portions of the screen by calling this function.

返回值

没有返回值。

newt_reflow_text
newt_resize_screen
Newt 函数


newt_refresh
newt_resume
Newt 函数
PHP Manual

newt_resize_screen

(PECL newt >= 0.1)

newt_resize_screen —

说明

void newt_resize_screen ([ bool $redraw ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

redraw

返回值

没有返回值。

newt_refresh
newt_resume
Newt 函数


Resume using the newt interface after calling newt_suspend

newt_resize_screen
newt_run_form
Newt 函数
PHP Manual

newt_resume

(PECL newt >= 0.1)

newt_resume — Resume using the newt interface after calling newt_suspend()

说明

void newt_resume ( void )

Resume using the newt interface after calling newt_suspend().

返回值

没有返回值。

参见

  • newt_suspend() - Tells newt to return the terminal to its initial state

newt_resize_screen
newt_run_form
Newt 函数


Runs a form

newt_resume
newt_scale_set
Newt 函数
PHP Manual

newt_run_form

(PECL newt >= 0.1)

newt_run_form — Runs a form

说明

resource newt_run_form ( resource $form )

This function runs the form passed to it.

参数

form

Form component

返回值

The component which caused the form to stop running.

Note:

Notice that this function doesn't fit in with newt's normal naming convention. It is an older interface which will not work for all forms. It was left in newt only for legacy applications. It is a simpler interface than the new newt_form_run() though, and is still used quite often as a result. When an application is done with a form, it destroys the form and all of the components the form contains.

参见

  • newt_form_run() - Runs a form
  • newt_form_destroy() - Destroys a form

newt_resume
newt_scale_set
Newt 函数


newt_run_form
newt_scale
Newt 函数
PHP Manual

newt_scale_set

(PECL newt >= 0.1)

newt_scale_set —

说明

void newt_scale_set ( resource $scale , int $amount )
Warning

本函数还未编写文档，仅有参数列表。

参数

scale

amount

返回值

没有返回值。

newt_run_form
newt_scale
Newt 函数


newt_scale_set
newt_scrollbar_set
Newt 函数
PHP Manual

newt_scale

(PECL newt >= 0.1)

newt_scale —

说明

resource newt_scale ( int $left , int $top , int $width , int $full_value )
Warning

本函数还未编写文档，仅有参数列表。

参数

left

top

width

full_value

返回值

newt_scale_set
newt_scrollbar_set
Newt 函数


newt_scale
newt_set_help_callback
Newt 函数
PHP Manual

newt_scrollbar_set

(PECL newt >= 0.1)

newt_scrollbar_set —

说明

void newt_scrollbar_set ( resource $scrollbar , int $where , int $total )
Warning

本函数还未编写文档，仅有参数列表。

参数

scrollbar

where

total

返回值

没有返回值。

newt_scale
newt_set_help_callback
Newt 函数


newt_scrollbar_set
newt_set_suspend_callback
Newt 函数
PHP Manual

newt_set_help_callback

(PECL newt >= 0.1)

newt_set_help_callback —

说明

void newt_set_help_callback ( mixed $function )
Warning

本函数还未编写文档，仅有参数列表。

参数

function

返回值

没有返回值。

newt_scrollbar_set
newt_set_suspend_callback
Newt 函数


Set a callback function which gets invoked when user presses the suspend key

newt_set_help_callback
newt_suspend
Newt 函数
PHP Manual

newt_set_suspend_callback

(PECL newt >= 0.1)

newt_set_suspend_callback — Set a callback function which gets invoked when user presses the suspend key

说明

void newt_set_suspend_callback ( callable $function , mixed $data )

Set a callback function which gets invoked when user presses the suspend key (normally ^Z). If no suspend callback is registered, the suspend keystroke is ignored.

参数

function

A callback function, which accepts one argument: data

data

This data is been passed to the callback function

返回值

没有返回值。

参见

  • newt_suspend() - Tells newt to return the terminal to its initial state
  • newt_resume() - Resume using the newt interface after calling newt_suspend

newt_set_help_callback
newt_suspend
Newt 函数


Tells newt to return the terminal to its initial state

newt_set_suspend_callback
newt_textbox_get_num_lines
Newt 函数
PHP Manual

newt_suspend

(PECL newt >= 0.1)

newt_suspend — Tells newt to return the terminal to its initial state

说明

void newt_suspend ( void )

Tells newt to return the terminal to its initial state. Once this is done, the application can suspend itself (by sending itself a SIGTSTP, fork a child program, or do whatever else it likes).

返回值

没有返回值。

参见

  • newt_resume() - Resume using the newt interface after calling newt_suspend

newt_set_suspend_callback
newt_textbox_get_num_lines
Newt 函数


newt_suspend
newt_textbox_reflowed
Newt 函数
PHP Manual

newt_textbox_get_num_lines

(PECL newt >= 0.1)

newt_textbox_get_num_lines —

说明

int newt_textbox_get_num_lines ( resource $textbox )
Warning

本函数还未编写文档，仅有参数列表。

参数

textbox

返回值

newt_suspend
newt_textbox_reflowed
Newt 函数


newt_textbox_get_num_lines
newt_textbox_set_height
Newt 函数
PHP Manual

newt_textbox_reflowed

(PECL newt >= 0.1)

newt_textbox_reflowed —

说明

resource newt_textbox_reflowed ( int $left , int $top , char $*text , int $width , int $flex_down , int $flex_up [, int $flags ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

left

top

*text

width

flex_down

flex_up

flags

返回值

newt_textbox_get_num_lines
newt_textbox_set_height
Newt 函数


newt_textbox_reflowed
newt_textbox_set_text
Newt 函数
PHP Manual

newt_textbox_set_height

(PECL newt >= 0.1)

newt_textbox_set_height —

说明

void newt_textbox_set_height ( resource $textbox , int $height )
Warning

本函数还未编写文档，仅有参数列表。

参数

textbox

height

返回值

没有返回值。

newt_textbox_reflowed
newt_textbox_set_text
Newt 函数


newt_textbox_set_height
newt_textbox
Newt 函数
PHP Manual

newt_textbox_set_text

(PECL newt >= 0.1)

newt_textbox_set_text —

说明

void newt_textbox_set_text ( resource $textbox , string $text )
Warning

本函数还未编写文档，仅有参数列表。

参数

textbox

text

返回值

没有返回值。

newt_textbox_set_height
newt_textbox
Newt 函数


newt_textbox_set_text
newt_vertical_scrollbar
Newt 函数
PHP Manual

newt_textbox

(PECL newt >= 0.1)

newt_textbox —

说明

resource newt_textbox ( int $left , int $top , int $width , int $height [, int $flags ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

left

top

width

height

flags

返回值

newt_textbox_set_text
newt_vertical_scrollbar
Newt 函数


newt_textbox
newt_wait_for_key
Newt 函数
PHP Manual

newt_vertical_scrollbar

(PECL newt >= 0.1)

newt_vertical_scrollbar —

说明

resource newt_vertical_scrollbar ( int $left , int $top , int $height [, int $normal_colorset [, int $thumb_colorset ]] )
Warning

本函数还未编写文档，仅有参数列表。

参数

left

top

height

normal_colorset

thumb_colorset

返回值

newt_textbox
newt_wait_for_key
Newt 函数


Doesn't return until a key has been pressed

newt_vertical_scrollbar
newt_win_choice
Newt 函数
PHP Manual

newt_wait_for_key

(PECL newt >= 0.1)

newt_wait_for_key — Doesn't return until a key has been pressed

说明

void newt_wait_for_key ( void )

This function doesn't return until a key has been pressed. The keystroke is then ignored. If a key is already in the terminal's buffer, this function discards a keystroke and returns immediately.

返回值

没有返回值。

参见

  • newt_clear_key_buffer() - Discards the contents of the terminal's input buffer without waiting for additional input

newt_vertical_scrollbar
newt_win_choice
Newt 函数


newt_wait_for_key
newt_win_entries
Newt 函数
PHP Manual

newt_win_choice

(PECL newt >= 0.1)

newt_win_choice —

说明

int newt_win_choice ( string $title , string $button1_text , string $button2_text , string $format [, mixed $args [, mixed $... ]] )
Warning

本函数还未编写文档，仅有参数列表。

参数

title

button1_text

button2_text

format

args

返回值

newt_wait_for_key
newt_win_entries
Newt 函数


newt_win_choice
newt_win_menu
Newt 函数
PHP Manual

newt_win_entries

(PECL newt >= 0.1)

newt_win_entries —

说明

int newt_win_entries ( string $title , string $text , int $suggested_width , int $flex_down , int $flex_up , int $data_width , array &$items , string $button1 [, string $... ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

title

text

suggested_width

flex_down

flex_up

data_width

items

button1

button2

返回值

范例

Example #1 A newt_win_entries() example

<?php

newt_init();
newt_cls();

$entries[] = array('text' => 'First name:', 'value' => &$f_name);
$entries[] = array('text' => 'Last name:',  'value' => &$l_name);

$rc = newt_win_entries("User information", "Please enter your credentials:", 50, 7, 7, 30, $entries, "Ok", "Back");
newt_finished ();

if ($rc != 2) {
    echo "Your name is: $f_name $l_name\n";
}
?>

newt_win_choice
newt_win_menu
Newt 函数


newt_win_entries
newt_win_message
Newt 函数
PHP Manual

newt_win_menu

(PECL newt >= 0.1)

newt_win_menu —

说明

int newt_win_menu ( string $title , string $text , int $suggestedWidth , int $flexDown , int $flexUp , int $maxListHeight , array $items , int &$listItem [, string $button1 [, string $... ]] )
Warning

本函数还未编写文档，仅有参数列表。

参数

title

text

suggestedWidth

flexDown

flexUp

maxListHeight

items

listItem

button1

返回值

没有返回值。

newt_win_entries
newt_win_message
Newt 函数


newt_win_menu
newt_win_messagev
Newt 函数
PHP Manual

newt_win_message

(PECL newt >= 0.1)

newt_win_message —

说明

void newt_win_message ( string $title , string $button_text , string $format [, mixed $args [, mixed $... ]] )
Warning

本函数还未编写文档，仅有参数列表。

参数

title

button_text

format

args

返回值

没有返回值。

newt_win_menu
newt_win_messagev
Newt 函数


newt_win_message
newt_win_ternary
Newt 函数
PHP Manual

newt_win_messagev

(PECL newt >= 0.1)

newt_win_messagev —

说明

void newt_win_messagev ( string $title , string $button_text , string $format , array $args )
Warning

本函数还未编写文档，仅有参数列表。

参数

title

button_text

format

args

返回值

没有返回值。

newt_win_message
newt_win_ternary
Newt 函数


newt_win_messagev
Readline
Newt 函数
PHP Manual

newt_win_ternary

(PECL newt >= 0.1)

newt_win_ternary —

说明

int newt_win_ternary ( string $title , string $button1_text , string $button2_text , string $button3_text , string $format [, mixed $args [, mixed $... ]] )
Warning

本函数还未编写文档，仅有参数列表。

参数

title

Its description

button1_text

Its description

button2_text

Its description

button3_text

Its description

format

Its description

args

Its description

返回值

What the function returns, first on success, then on failure. See also the &return.success; entity

newt_win_messagev
Readline
Newt 函数


GNU Readline

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Readline 函数
    • readline_add_history — 添加一行命令行历史记录
    • readline_callback_handler_install — 初始化一个 readline 回调接口，然后终端输出提示信息并立即返回
    • readline_callback_handler_remove — 移除上一个安装的回调函数句柄并且恢复终端设置
    • readline_callback_read_char — 当一个行被接收时读取一个字符并且通知 readline 调用回调函数
    • readline_clear_history — 清除历史
    • readline_completion_function — 注册一个完成函数
    • readline_info — 获取/设置readline内部的各个变量
    • readline_list_history — 获取命令历史列表
    • readline_on_new_line — 通知readline将光标移动到新行
    • readline_read_history — 读取命令历史
    • readline_redisplay — 重绘显示区
    • readline_write_history — 写入历史记录
    • readline — 读取一行
newt_win_ternary
简介
针对命令行的扩展


简介

readline 扩展函数实现了访问 GNU Readline 库的接口. 这些函数提供了可编辑的命令行. 一个例子是在 Bash 中允许你使用箭头按键来插入字符或者翻看历史命令. 因为这个库的交互特性，这个功能在你写的 Web 程序中没多大用处， 但是当你写的脚本被用在命令行中时非常有用.

Note: 此扩展在 Windows 平台上不可用。

Readline
安装／配置
Readline


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Readline


需求

如果要使用 readline 函数，你必须安装 libreadline. 你能在 GNU readline 项目主页找到 libreadline. 地址» http://cnswww.cns.cwru.edu/~chet/readline/rltop.html . 它被 Chet Ramey 维护， 他也是 Bash 的作者

你也能使用非 GPL 的 libedit 库来替代 readline 库， libedit 库是使用 BSD 证书，你可以从» http://www.thrysoee.dk/editline/下载.

安装／配置
安装
安装／配置


安装

要使用这些函数，你必须在编译 PHP 的 CGI 或者 CLI 版本时启用 readline 支持. 你需要在编译配置 PHP 时使用 --with-readline[=DIR] 选项. 如果你想使用 libedit 来代替 readline , 配置 PHP 时使用 --with-libedit[=DIR] 选项

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Readline 配置选项
名字 | 默认 | 可修改范围 | 更新日志
cli.pager | "" | PHP_INI_ALL | 自 PHP 5.4.0 可用.
cli.prompt | "\\b \\> " | PHP_INI_ALL | 自 PHP 5.4.0 可用.

这是配置指令的简短说明。

cli.pager string

External tool to display output from command line.

cli.prompt string

命令行 提示.

安装
资源类型
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
Readline 函数
Readline


Readline 函数

Table of Contents

  • readline_add_history — 添加一行命令行历史记录
  • readline_callback_handler_install — 初始化一个 readline 回调接口，然后终端输出提示信息并立即返回
  • readline_callback_handler_remove — 移除上一个安装的回调函数句柄并且恢复终端设置
  • readline_callback_read_char — 当一个行被接收时读取一个字符并且通知 readline 调用回调函数
  • readline_clear_history — 清除历史
  • readline_completion_function — 注册一个完成函数
  • readline_info — 获取/设置readline内部的各个变量
  • readline_list_history — 获取命令历史列表
  • readline_on_new_line — 通知readline将光标移动到新行
  • readline_read_history — 读取命令历史
  • readline_redisplay — 重绘显示区
  • readline_write_history — 写入历史记录
  • readline — 读取一行
预定义常量
readline_add_history
Readline


添加一行命令行历史记录

Readline 函数
readline_callback_handler_install
Readline 函数
PHP Manual

readline_add_history

(PHP 4, PHP 5, PHP 7)

readline_add_history — 添加一行命令行历史记录

说明

bool readline_add_history ( string $line )

这个函数添加一行到命令行历史记录 This function adds a line to the command line history.

参数

line

这一行将被添加到历史.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

Readline 函数
readline_callback_handler_install
Readline 函数


初始化一个 readline 回调接口，然后终端输出提示信息并立即返回

readline_add_history
readline_callback_handler_remove
Readline 函数
PHP Manual

readline_callback_handler_install

(PHP 5 >= 5.1.0, PHP 7)

readline_callback_handler_install — 初始化一个 readline 回调接口，然后终端输出提示信息并立即返回

说明

bool readline_callback_handler_install ( string $prompt , callable $callback )

设置一个 readline 回调接口然后输出 prompt 并立即返回. 第二次调用这个函数不需要移除上一个回调接口，这个函数将自动覆盖旧的接口.

当配合 stream_select() 时回调的特性非常有用，它允许在 IO 与用户输入 间交叉进行，不像readline().

参数

prompt

提示信息.

callback

callback 函数需要一个参数; 用户输入将被返回.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Readline Callback Interface Example

<?php
function rl_callback($ret)
{
    global $c, $prompting;

    echo "You entered: $ret\n";
    $c++;

    if ($c > 10) {
        $prompting = false;
        readline_callback_handler_remove();
    } else {
        readline_callback_handler_install("[$c] Enter something: ", 'rl_callback');
    }
}

$c = 1;
$prompting = true;

readline_callback_handler_install("[$c] Enter something: ", 'rl_callback');

while ($prompting) {
    $w = NULL;
    $e = NULL;
    $n = stream_select($r = array(STDIN), $w, $e, null);
    if ($n && in_array(STDIN, $r)) {
        // read a character, will call the callback when a newline is entered
        readline_callback_read_char();
    }
}

echo "Prompting disabled. All done.\n";
?>

参见

  • readline_callback_handler_remove() - 移除上一个安装的回调函数句柄并且恢复终端设置
  • readline_callback_read_char() - 当一个行被接收时读取一个字符并且通知 readline 调用回调函数
  • stream_select() - Runs the equivalent of the select() system call on the given arrays of streams with a timeout specified by tv_sec and tv_usec

readline_add_history
readline_callback_handler_remove
Readline 函数


移除上一个安装的回调函数句柄并且恢复终端设置

readline_callback_handler_install
readline_callback_read_char
Readline 函数
PHP Manual

readline_callback_handler_remove

(PHP 5 >= 5.1.0, PHP 7)

readline_callback_handler_remove — 移除上一个安装的回调函数句柄并且恢复终端设置

说明

bool readline_callback_handler_remove ( void )

移除上一个安装的回调函数句柄并且恢复终端设置.

返回值

如果上一个被安装的回调函数句柄被移出返回 TRUE 否则 FALSE 如果没有找到的话.

范例

See readline_callback_handler_install() for an example of how to use the readline callback interface.

参见

  • readline_callback_handler_install() - 初始化一个 readline 回调接口，然后终端输出提示信息并立即返回
  • readline_callback_read_char() - 当一个行被接收时读取一个字符并且通知 readline 调用回调函数

readline_callback_handler_install
readline_callback_read_char
Readline 函数


当一个行被接收时读取一个字符并且通知 readline 调用回调函数

readline_callback_handler_remove
readline_clear_history
Readline 函数
PHP Manual

readline_callback_read_char

(PHP 5 >= 5.1.0, PHP 7)

readline_callback_read_char — 当一个行被接收时读取一个字符并且通知 readline 调用回调函数

说明

void readline_callback_read_char ( void )

读取用户输入中的一个字符.当一行被接收时，这个函数将通知 readline 调用使用 readline_callback_handler_install() 安装的回调函数接口，并且 这一个行已经准备输入.

返回值

没有返回值。

范例

See readline_callback_handler_install() for an example of how to use the readline callback interface.

参见

  • readline_callback_handler_install() - 初始化一个 readline 回调接口，然后终端输出提示信息并立即返回
  • readline_callback_handler_remove() - 移除上一个安装的回调函数句柄并且恢复终端设置

readline_callback_handler_remove
readline_clear_history
Readline 函数


清除历史

readline_callback_read_char
readline_completion_function
Readline 函数
PHP Manual

readline_clear_history

(PHP 4, PHP 5, PHP 7)

readline_clear_history — 清除历史

说明

bool readline_clear_history ( void )

这个函数清除整个的命令行历史.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

readline_callback_read_char
readline_completion_function
Readline 函数


注册一个完成函数

readline_clear_history
readline_info
Readline 函数
PHP Manual

readline_completion_function

(PHP 4, PHP 5, PHP 7)

readline_completion_function — 注册一个完成函数

说明

bool readline_completion_function ( callable $function )

这个函数注册一个完成函数.这就像你在使用 Bash 时按 tab 键时你想要的功能一样

参数

function

你必须提供一个已经存在的函数的名字并且可以接受命令行中的部分输入 然后返回一些可能匹配的数组.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

readline_clear_history
readline_info
Readline 函数


获取/设置readline内部的各个变量

readline_completion_function
readline_list_history
Readline 函数
PHP Manual

readline_info

(PHP 4, PHP 5, PHP 7)

readline_info — 获取/设置readline内部的各个变量

说明

mixed readline_info ([ string $varname [, string $newvalue ]] )

获取/设置readline内部的各个变量.

参数

varname

变量名.

newvalue

如果提供，将被设置成这个值.

返回值

如果调用时没有参数，这个函数将返回一个包括了所有已采用的readline设置的数组. 数组元素将索引是以下这些值：done, end, erase_empty_line, library_version, line_buffer, mark, pending_input, point, prompt, readline_name, and terminal_name.

如果调用是提供了一个或两个参数，原来的值将被返回.

readline_completion_function
readline_list_history
Readline 函数


获取命令历史列表

readline_info
readline_on_new_line
Readline 函数
PHP Manual

readline_list_history

(PHP 4, PHP 5, PHP 7)

readline_list_history — 获取命令历史列表

说明

array readline_list_history ( void )

获取整个命令行历史.

返回值

返回整个命令行历史的数组.元素的整数索引从零开始

readline_info
readline_on_new_line
Readline 函数


通知readline将光标移动到新行

readline_list_history
readline_read_history
Readline 函数
PHP Manual

readline_on_new_line

(PHP 5 >= 5.1.0, PHP 7)

readline_on_new_line — 通知readline将光标移动到新行

说明

void readline_on_new_line ( void )

告诉readline将光标移动到新行.

返回值

没有返回值。

readline_list_history
readline_read_history
Readline 函数


读取命令历史

readline_on_new_line
readline_redisplay
Readline 函数
PHP Manual

readline_read_history

(PHP 4, PHP 5, PHP 7)

readline_read_history — 读取命令历史

说明

bool readline_read_history ([ string $filename ] )

这个函数从一个文件读取命令历史

参数

filename

保存了命令历史的文件的路径.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

readline_on_new_line
readline_redisplay
Readline 函数


重绘显示区

readline_read_history
readline_write_history
Readline 函数
PHP Manual

readline_redisplay

(PHP 5 >= 5.1.0, PHP 7)

readline_redisplay — 重绘显示区

说明

void readline_redisplay ( void )

readline 重绘用于重绘显示区

返回值

没有返回值。

readline_read_history
readline_write_history
Readline 函数


写入历史记录

readline_redisplay
readline
Readline 函数
PHP Manual

readline_write_history

(PHP 4, PHP 5, PHP 7)

readline_write_history — 写入历史记录

说明

bool readline_write_history ([ string $filename ] )

这个函数将命令历史写入到一个文件.

参数

filename

保存文件的路径.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

readline_redisplay
readline
Readline 函数


读取一行

readline_write_history
压缩与归档扩展
Readline 函数
PHP Manual

readline

(PHP 4, PHP 5, PHP 7)

readline — 读取一行

说明

string readline ([ string $prompt ] )

从用户端读取一行.你必须自己使用 readline_add_history() 将这一行添加到历史记录中

参数

prompt

你可以指定一个字符串来作为用户的提示信息

返回值

从用户端返回一个行字符串.返回的该行的行尾换行符会被删除

范例

Example #1 readline() Example

<?php
//get 3 commands from user
for ($i=0; $i < 3; $i++) {
        $line = readline("Command: ");
        readline_add_history($line);
}

//dump history
print_r(readline_list_history());

//dump variables
print_r(readline_info());
?>

readline_write_history
压缩与归档扩展
Readline 函数


压缩与归档扩展

  • Bzip2
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Bzip2 函数
  • LZF
    • 简介
    • 安装／配置
    • 预定义常量
    • LZF 函数
  • Phar
    • 简介
    • 安装／配置
    • 预定义常量
    • Using Phar Archives
    • Creating Phar Archives
    • What makes a phar a phar and not a tar or a zip?
    • Phar — The Phar class
    • PharData — The PharData class
    • PharFileInfo — The PharFileInfo class
    • PharException — The PharException class
  • Rar — Rar Archiving
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Rar 函数
    • RarArchive — The RarArchive class
    • RarEntry — The RarEntry class
    • RarException — The RarException class
  • Zip
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • ZipArchive — ZipArchive 类
    • Zip 函数
  • Zlib — Zlib Compression
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Zlib 函数
readline
Bzip2
函数参考


Bzip2

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • Bzip2 函数
    • bzclose — 关闭一个 bzip2 文件
    • bzcompress — 把一个字符串压缩成 bzip2 编码数据
    • bzdecompress — 解压经 bzip2 编码过的数据
    • bzerrno — 返回一个 bzip2 错误码
    • bzerror — 返回包含 bzip2 错误号和错误字符串的一个 array
    • bzerrstr — 返回一个 bzip2 的错误字符串
    • bzflush — 强制写入所有写缓冲区的数据
    • bzopen — 打开一个经 bzip2 压缩过的文件
    • bzread — bzip2 文件二进制安全地读取
    • bzwrite — 二进制安全地写入 bzip2 文件
压缩与归档扩展
简介
压缩与归档扩展


简介

bzip2 函数用于透明地读写 bzip2（.bz2）压缩文件。

Bzip2
安装／配置
Bzip2


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Bzip2


需求

本模块使用了 Julian Seward 的 » bzip2 库中的函数。本模块需要 bzip2/libbzip2 版本 >= 1.0.x。

安装／配置
安装
安装／配置


安装

PHP 的 Bzip2 支持默认未打开。编译 PHP 时需要 --with-bz2[=DIR] 配置选项来激活 bzip2 支持。

需求
运行时配置
安装／配置


资源类型

本扩展定义了一种资源类型：用于识别和操作 bz2 文件的指针。

运行时配置
预定义常量
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
范例
Bzip2


范例

该范例打开一个临时文件并写入了一个测试字符串，然后输出该文件里的内容。

Example #1 bzip2 小例子

<?php

$filename = "/tmp/testfile.bz2";
$str = "This is a test string.\n";

// 打开一个文件用于写入
$bz = bzopen($filename, "w");

// 写入字符串到文件
bzwrite($bz, $str);

// 关闭文件
bzclose($bz);

// 打开文件用于读取
$bz = bzopen($filename, "r");

// 读取 10 个字符
echo bzread($bz, 10);

// 输出直到文件末尾（或者后面的 1024 个字符），并关闭。
echo bzread($bz);

bzclose($bz);

?>
预定义常量
Bzip2 函数
Bzip2


Bzip2 函数

Table of Contents

  • bzclose — 关闭一个 bzip2 文件
  • bzcompress — 把一个字符串压缩成 bzip2 编码数据
  • bzdecompress — 解压经 bzip2 编码过的数据
  • bzerrno — 返回一个 bzip2 错误码
  • bzerror — 返回包含 bzip2 错误号和错误字符串的一个 array
  • bzerrstr — 返回一个 bzip2 的错误字符串
  • bzflush — 强制写入所有写缓冲区的数据
  • bzopen — 打开一个经 bzip2 压缩过的文件
  • bzread — bzip2 文件二进制安全地读取
  • bzwrite — 二进制安全地写入 bzip2 文件
范例
bzclose
Bzip2


关闭一个 bzip2 文件

Bzip2 函数
bzcompress
Bzip2 函数
PHP Manual

bzclose

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

bzclose — 关闭一个 bzip2 文件

说明

int bzclose ( resource $bz )

关闭给出的 bzip2 文件指针。

参数

bz

文件指针。它必须是有效的并且指向 bzopen() 成功打开的文件。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • bzopen() - 打开一个经 bzip2 压缩过的文件

Bzip2 函数
bzcompress
Bzip2 函数


把一个字符串压缩成 bzip2 编码数据

bzclose
bzdecompress
Bzip2 函数
PHP Manual

bzcompress

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

bzcompress — 把一个字符串压缩成 bzip2 编码数据

说明

mixed bzcompress ( string $source [, int $blocksize = 4 [, int $workfactor = 0 ]] )

bzcompress() 压缩了指定的字符串并以 bzip2 编码返回数据。

参数

source

待压缩的字符串。

blocksize

指定压缩时使用的块大小，应该是一个 1-9 的数字。9 可以有最高的压缩比，但会使用更多的资源。

workfactor

控制压缩阶段出现最坏的重复性高的情况下输入数据时的行为。 该值可以是在 0 至 250 之间，0是一个特殊的情况。

无论 workfactor是什么，产生的输出都是一致的。

返回值

压缩后的字符串，或者在出现错误时返回错误号。

范例

Example #1 压缩数据

<?php
$str = "sample data";
$bzstr = bzcompress($str, 9);
echo $bzstr;
?>

参见

  • bzdecompress() - 解压经 bzip2 编码过的数据

bzclose
bzdecompress
Bzip2 函数


解压经 bzip2 编码过的数据

bzcompress
bzerrno
Bzip2 函数
PHP Manual

bzdecompress

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

bzdecompress — 解压经 bzip2 编码过的数据

说明

mixed bzdecompress ( string $source [, int $small = 0 ] )

bzdecompress() 解压了包含 bzip2 压缩数据的指定字符串。

参数

source

要解压的字符串。

small

如果为 TRUE，将会使用一种内存开销更小的替代算法（最大内存需求降低至大约 2300K）但速度会降低约一半。

寻找该功能的更多信息可参见 » bzip2 文档。

返回值

解压后的字符串，如果发生了一个错误则返回一个错误码。

范例

Example #1 解压一个字符串

<?php
$start_str = "This is not an honest face?";
$bzstr = bzcompress($start_str);

echo "Compressed String: ";
echo $bzstr;
echo "\n<br />\n";

$str = bzdecompress($bzstr);
echo "Decompressed String: ";
echo $str;
echo "\n<br />\n";
?>

参见

  • bzcompress() - 把一个字符串压缩成 bzip2 编码数据

bzcompress
bzerrno
Bzip2 函数


返回一个 bzip2 错误码

bzdecompress
bzerror
Bzip2 函数
PHP Manual

bzerrno

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

bzerrno — 返回一个 bzip2 错误码

说明

int bzerrno ( resource $bz )

返回指定文件指针任意返回的 bzip2 错误的错误码。

参数

bz

文件指针。它必须是有效的并且指向 bzopen() 成功打开的文件。

返回值

返回 integer 的错误码。

参见

  • bzerror() - 返回包含 bzip2 错误号和错误字符串的一个 array
  • bzerrstr() - 返回一个 bzip2 的错误字符串

bzdecompress
bzerror
Bzip2 函数


返回包含 bzip2 错误号和错误字符串的一个 array

bzerrno
bzerrstr
Bzip2 函数
PHP Manual

bzerror

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

bzerror — 返回包含 bzip2 错误号和错误字符串的一个 array

说明

array bzerror ( resource $bz )

返回文件指针中返回的 bzip2 错误的错误号和错误字符串。

参数

bz

文件指针。它必须是有效的并且指向 bzopen() 成功打开的文件。

返回值

返回一个关联数组，包含错误码于 errno 条目， 以及错误信息于 errstr 条目。

范例

Example #1 bzerror() 范例

<?php
$error = bzerror($bz);

echo $error["errno"];
echo $error["errstr"];
?>

参见

  • bzerrno() - 返回一个 bzip2 错误码
  • bzerrstr() - 返回一个 bzip2 的错误字符串

bzerrno
bzerrstr
Bzip2 函数


返回一个 bzip2 的错误字符串

bzerror
bzflush
Bzip2 函数
PHP Manual

bzerrstr

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

bzerrstr — 返回一个 bzip2 的错误字符串

说明

string bzerrstr ( resource $bz )

获取指定文件指针中返回 bzip2 任何错误的错误字符串。

参数

bz

文件指针。它必须是有效的并且指向 bzopen() 成功打开的文件。

返回值

返回包含错误信息的 string。

参见

  • bzerrno() - 返回一个 bzip2 错误码
  • bzerror() - 返回包含 bzip2 错误号和错误字符串的一个 array

bzerror
bzflush
Bzip2 函数


强制写入所有写缓冲区的数据

bzerrstr
bzopen
Bzip2 函数
PHP Manual

bzflush

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

bzflush — 强制写入所有写缓冲区的数据

说明

int bzflush ( resource $bz )

强制写入 bzip2 文件指针 bz 的所有写缓冲数据。

参数

bz

文件指针。它必须是有效的并且指向 bzopen() 成功打开的文件。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • bzread() - bzip2 文件二进制安全地读取
  • bzwrite() - 二进制安全地写入 bzip2 文件

bzerrstr
bzopen
Bzip2 函数


打开一个经 bzip2 压缩过的文件

bzflush
bzread
Bzip2 函数
PHP Manual

bzopen

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

bzopen — 打开一个经 bzip2 压缩过的文件

说明

resource bzopen ( string $filename , string $mode )

bzopen() 打开一个 bzip2（.bz2）文件用于读或写。

参数

filename

待打开的文件的文件名，或者已经存在的资源流。

mode

和 fopen() 函数类似，但仅仅支持 'r'（读）和 'w'（写）。 其他任何模式都会导致 bzopen 返回 FALSE。

返回值

如果打开失败，bzopen() 会返回 FALSE，否则返回一个指向最新打开文件的指针。

范例

Example #1 bzopen() 范例

<?php

$file = "/tmp/foo.bz2";
$bz = bzopen($file, "r") or die("Couldn't open $file for reading");

bzclose($bz);

?>

参见

  • bzclose() - 关闭一个 bzip2 文件

bzflush
bzread
Bzip2 函数


bzip2 文件二进制安全地读取

bzopen
bzwrite
Bzip2 函数
PHP Manual

bzread

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

bzread — bzip2 文件二进制安全地读取

说明

string bzread ( resource $bz [, int $length = 1024 ] )

bzread() 从指定的 bzip2 文件指针中读取数据。

读取到 length（未经压缩的长度）个字节，或者到文件尾，取决于先到哪个。

参数

bz

文件指针。它必须是有效的并且指向 bzopen() 成功打开的文件。

length

如果没有提供， bzread() 一次会读入 1024 个字节（未经压缩的长度）。 一次最大可读入 8192 个未压缩的字节。

返回值

返回解压的数据，在错误时返回 FALSE。

范例

Example #1 bzread() 范例

<?php

$file = "/tmp/foo.bz2";
$bz = bzopen($file, "r") or die("Couldn't open $file");

$decompressed_file = '';
while (!feof($bz)) {
  $decompressed_file .= bzread($bz, 4096);
}
bzclose($bz);

echo "The contents of $file are: <br />\n";
echo $decompressed_file;

?>

参见

  • bzwrite() - 二进制安全地写入 bzip2 文件
  • feof() - 测试文件指针是否到了文件结束的位置
  • bzopen() - 打开一个经 bzip2 压缩过的文件

bzopen
bzwrite
Bzip2 函数


二进制安全地写入 bzip2 文件

bzread
LZF
Bzip2 函数
PHP Manual

bzwrite

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

bzwrite — 二进制安全地写入 bzip2 文件

说明

int bzwrite ( resource $bz , string $data [, int $length ] )

bzwrite() 把字符串（string）写入了指定的 bzip2 文件流。

参数

bz

文件指针。它必须是有效的并且指向 bzopen() 成功打开的文件。

data

要写入的数据。

length

如果提供了这个参数，将仅仅写入 length（未压缩）个字节，若 data 小于该指定的长度则写入全部数据。

返回值

返回写入的数据字节数，错误时返回 FALSE。

范例

Example #1 bzwrite() 范例

<?php
$str = "uncompressed data";
$bz = bzopen("/tmp/foo.bz2", "w");
bzwrite($bz, $str, strlen($str));
bzclose($bz);
?>

参见

  • bzread() - bzip2 文件二进制安全地读取
  • bzopen() - 打开一个经 bzip2 压缩过的文件

bzread
LZF
Bzip2 函数


LZF

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • LZF 函数
    • lzf_compress — LZF compression
    • lzf_decompress — LZF decompression
    • lzf_optimized_for — Determines what LZF extension was optimized for
bzwrite
简介
压缩与归档扩展


简介

LZF is a very fast compression algorithm, ideal for saving space with only slight speed cost. It can be optimized for speed or space at the time of compilation. This extension is using » liblzf library by Marc Lehmann for its operations.

LZF
安装／配置
LZF


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
LZF


安装

此 » PECL 扩展未与 PHP 捆绑。 安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/lzf.

In order to use these functions you must compile PHP with lzf support by using the --with-lzf[=DIR] configure option. You may also pass --enable-lzf-better-compression to optimize LZF for space rather than speed.

Windows users will enable php_lzf.dll inside of php.ini in order to use these functions. PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
LZF 函数
LZF


LZF 函数

Table of Contents

  • lzf_compress — LZF compression
  • lzf_decompress — LZF decompression
  • lzf_optimized_for — Determines what LZF extension was optimized for
预定义常量
lzf_compress
LZF


LZF compression

LZF 函数
lzf_decompress
LZF 函数
PHP Manual

lzf_compress

(PECL lzf >= 0.1.0)

lzf_compress — LZF compression

说明

string lzf_compress ( string $data )

lzf_compress() compresses the given data string using LZF encoding.

参数

data

The string to compress.

返回值

Returns the compressed data or FALSE if an error occurred.

参见

  • lzf_decompress() - LZF decompression

LZF 函数
lzf_decompress
LZF 函数


LZF decompression

lzf_compress
lzf_optimized_for
LZF 函数
PHP Manual

lzf_decompress

(PECL lzf >= 0.1.0)

lzf_decompress — LZF decompression

说明

string lzf_decompress ( string $data )

lzf_compress() decompresses the given data string containing lzf encoded data.

参数

data

The compressed string.

返回值

Returns the decompressed data or FALSE if an error occurred.

参见

  • lzf_compress() - LZF compression

lzf_compress
lzf_optimized_for
LZF 函数


Determines what LZF extension was optimized for

lzf_decompress
Phar
LZF 函数
PHP Manual

lzf_optimized_for

(PECL lzf >= 1.0.0)

lzf_optimized_for — Determines what LZF extension was optimized for

说明

int lzf_optimized_for ( void )

Determines what was LZF extension optimized for during compilation.

返回值

Returns 1 if LZF was optimized for speed, 0 for compression.

lzf_decompress
Phar
LZF 函数


Phar

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Using Phar Archives
    • Using Phar Archives: Introduction
    • Using Phar Archives: the phar stream wrapper
    • Using Phar Archives: the Phar and PharData class
  • Creating Phar Archives
    • Creating Phar Archives: Introduction
  • What makes a phar a phar and not a tar or a zip?
    • Ingredients of all Phar archives, independent of file format
    • Phar file stub
    • Head-to-head comparison of Phar, Tar and Zip
    • Tar-based phars
    • Zip-based phars
    • Phar File Format
    • Global Phar bitmapped flags
    • Phar manifest file entry definition
    • Phar Signature format
  • Phar — The Phar class
    • Phar::addEmptyDir — 添加一个空目录到 phar 档案
    • Phar::addFile — 将一个文件从文件系统添加到 phar 档案中
    • Phar::addFromString — 以字符串的形式添加一个文件到 phar 档案
    • Phar::apiVersion — Returns the api version
    • Phar::buildFromDirectory — Construct a phar archive from the files within a directory.
    • Phar::buildFromIterator — Construct a phar archive from an iterator.
    • Phar::canCompress — Returns whether phar extension supports compression using either zlib or bzip2
    • Phar::canWrite — Returns whether phar extension supports writing and creating phars
    • Phar::compress — Compresses the entire Phar archive using Gzip or Bzip2 compression
    • Phar::compressAllFilesBZIP2 — Compresses all files in the current Phar archive using Bzip2 compression
    • Phar::compressAllFilesGZ — Compresses all files in the current Phar archive using Gzip compression
    • Phar::compressFiles — Compresses all files in the current Phar archive
    • Phar::__construct — Construct a Phar archive object
    • Phar::convertToData — Convert a phar archive to a non-executable tar or zip file
    • Phar::convertToExecutable — Convert a phar archive to another executable phar archive file format
    • Phar::copy — Copy a file internal to the phar archive to another new file within the phar
    • Phar::count — Returns the number of entries (files) in the Phar archive
    • Phar::createDefaultStub — Create a phar-file format specific stub
    • Phar::decompress — Decompresses the entire Phar archive
    • Phar::decompressFiles — Decompresses all files in the current Phar archive
    • Phar::delMetadata — Deletes the global metadata of the phar
    • Phar::delete — 删除 phar 档案中的一个文件
    • Phar::extractTo — Extract the contents of a phar archive to a directory
    • Phar::getMetadata — Returns phar archive meta-data
    • Phar::getModified — Return whether phar was modified
    • Phar::getSignature — Return MD5/SHA1/SHA256/SHA512/OpenSSL signature of a Phar archive
    • Phar::getStub — Return the PHP loader or bootstrap stub of a Phar archive
    • Phar::getSupportedCompression — Return array of supported compression algorithms
    • Phar::getSupportedSignatures — Return array of supported signature types
    • Phar::getVersion — Return version info of Phar archive
    • Phar::hasMetadata — Returns whether phar has global meta-data
    • Phar::interceptFileFuncs — instructs phar to intercept fopen, file_get_contents, opendir, and all of the stat-related functions
    • Phar::isBuffering — Used to determine whether Phar write operations are being buffered, or are flushing directly to disk
    • Phar::isCompressed — Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
    • Phar::isFileFormat — Returns true if the phar archive is based on the tar/phar/zip file format depending on the parameter
    • Phar::isValidPharFilename — Returns whether the given filename is a valid phar filename
    • Phar::isWritable — Returns true if the phar archive can be modified
    • Phar::loadPhar — Loads any phar archive with an alias
    • Phar::mapPhar — Reads the currently executed file (a phar) and registers its manifest
    • Phar::mount — Mount an external path or file to a virtual location within the phar archive
    • Phar::mungServer — Defines a list of up to 4 $_SERVER variables that should be modified for execution
    • Phar::offsetExists — determines whether a file exists in the phar
    • Phar::offsetGet — Gets a PharFileInfo object for a specific file
    • Phar::offsetSet — set the contents of an internal file to those of an external file
    • Phar::offsetUnset — remove a file from a phar
    • Phar::running — Returns the full path on disk or full phar URL to the currently executing Phar archive
    • Phar::setAlias — Set the alias for the Phar archive
    • Phar::setDefaultStub — Used to set the PHP loader or bootstrap stub of a Phar archive to the default loader
    • Phar::setMetadata — Sets phar archive meta-data
    • Phar::setSignatureAlgorithm — set the signature algorithm for a phar and apply it.
    • Phar::setStub — Used to set the PHP loader or bootstrap stub of a Phar archive
    • Phar::startBuffering — Start buffering Phar write operations, do not modify the Phar object on disk
    • Phar::stopBuffering — Stop buffering write requests to the Phar archive, and save changes to disk
    • Phar::uncompressAllFiles — Uncompresses all files in the current Phar archive
    • Phar::unlinkArchive — Completely remove a phar archive from disk and from memory
    • Phar::webPhar — mapPhar for web-based phars. front controller for web applications
  • PharData — The PharData class
    • PharData::addEmptyDir — Add an empty directory to the tar/zip archive
    • PharData::addFile — Add a file from the filesystem to the tar/zip archive
    • PharData::addFromString — Add a file from the filesystem to the tar/zip archive
    • PharData::buildFromDirectory — Construct a tar/zip archive from the files within a directory.
    • PharData::buildFromIterator — Construct a tar or zip archive from an iterator.
    • PharData::compress — Compresses the entire tar/zip archive using Gzip or Bzip2 compression
    • PharData::compressFiles — Compresses all files in the current tar/zip archive
    • PharData::__construct — Construct a non-executable tar or zip archive object
    • PharData::convertToData — Convert a phar archive to a non-executable tar or zip file
    • PharData::convertToExecutable — Convert a non-executable tar/zip archive to an executable phar archive
    • PharData::copy — Copy a file internal to the phar archive to another new file within the phar
    • PharData::decompress — Decompresses the entire Phar archive
    • PharData::decompressFiles — Decompresses all files in the current zip archive
    • PharData::delMetadata — Deletes the global metadata of a zip archive
    • PharData::delete — Delete a file within a tar/zip archive
    • PharData::extractTo — Extract the contents of a tar/zip archive to a directory
    • PharData::isWritable — Returns true if the tar/zip archive can be modified
    • PharData::offsetSet — set the contents of a file within the tar/zip to those of an external file or string
    • PharData::offsetUnset — remove a file from a tar/zip archive
    • PharData::setAlias — dummy function (Phar::setAlias is not valid for PharData)
    • PharData::setDefaultStub — dummy function (Phar::setDefaultStub is not valid for PharData)
    • Phar::setMetadata — Sets phar archive meta-data
    • Phar::setSignatureAlgorithm — set the signature algorithm for a phar and apply it.
    • PharData::setStub — dummy function (Phar::setStub is not valid for PharData)
  • PharFileInfo — The PharFileInfo class
    • PharFileInfo::chmod — Sets file-specific permission bits
    • PharFileInfo::compress — Compresses the current Phar entry with either zlib or bzip2 compression
    • PharFileInfo::__construct — Construct a Phar entry object
    • PharFileInfo::decompress — Decompresses the current Phar entry within the phar
    • PharFileInfo::delMetadata — Deletes the metadata of the entry
    • PharFileInfo::getCRC32 — Returns CRC32 code or throws an exception if CRC has not been verified
    • PharFileInfo::getCompressedSize — Returns the actual size of the file (with compression) inside the Phar archive
    • PharFileInfo::getMetadata — Returns file-specific meta-data saved with a file
    • PharFileInfo::getPharFlags — Returns the Phar file entry flags
    • PharFileInfo::hasMetadata — Returns the metadata of the entry
    • PharFileInfo::isCRCChecked — Returns whether file entry has had its CRC verified
    • PharFileInfo::isCompressed — Returns whether the entry is compressed
    • PharFileInfo::isCompressedBZIP2 — Returns whether the entry is compressed using bzip2
    • PharFileInfo::isCompressedGZ — Returns whether the entry is compressed using gz
    • PharFileInfo::setCompressedBZIP2 — Compresses the current Phar entry within the phar using Bzip2 compression
    • PharFileInfo::setCompressedGZ — Compresses the current Phar entry within the phar using gz compression
    • PharFileInfo::setMetadata — Sets file-specific meta-data saved with a file
    • PharFileInfo::setUncompressed — Uncompresses the current Phar entry within the phar, if it is compressed
  • PharException — The PharException class
    • PharException — The PharException class provides a phar-specific exception class for try/catch blocks.
lzf_optimized_for
简介
压缩与归档扩展


简介

The phar extension provides a way to put entire PHP applications into a single file called a "phar" (PHP Archive) for easy distribution and installation. In addition to providing this service, the phar extension also provides a file-format abstraction method for creating and manipulating tar and zip files through the PharData class, much as PDO provides a unified interface for accessing different databases. Unlike PDO, which cannot convert between different databases, Phar also can convert between tar, zip and phar file formats with a single line of code. see Phar::convertToExecutable() for one example.

What is phar? Phar archives are best characterized as a convenient way to group several files into a single file. As such, a phar archive provides a way to distribute a complete PHP application in a single file and run it from that file without the need to extract it to disk. Additionally, phar archives can be executed by PHP as easily as any other file, both on the commandline and from a web server. Phar is kind of like a thumb drive for PHP applications.

Phar implements this functionality through a Stream Wrapper. Normally, to use an external file within a PHP script, you would use include

Example #1 Using an external file

<?php
 include '/path/to/external/file.php';
 ?>

PHP can be thought of as actually translating /path/to/external/file.php into a stream wrapper as file:///path/to/external/file.php, and under the hood it does in fact use the plain file stream wrapper stream functions to access all local files.

To use a file named file.php contained with a phar archive /path/to/myphar.phar, the syntax is very similar to the file:// syntax above.

Example #2 Using a file within a phar archive

<?php
 include 'phar:///path/to/myphar.phar/file.php';
 ?>

In fact, one can treat a phar archive exactly as if it were an external disk, using any of fopen()-related functions, opendir() and mkdir()-related functions to read, change, or create new files and directories within the phar archive. This allows complete PHP applications to be distributed in a single file and run directly from that file.

The most common usage for a phar archive is to distribute a complete application in a single file. For instance, the PEAR Installer that is bundled with PHP versions is distributed as a phar archive. To use a phar archive distributed in this way, the archive can be executed on the command-line or via a web server.

Phar archives can be distributed as tar archives, zip archives, or as the custom phar file format designed specifically for the phar extension. Each file format has advantages and disadvantages. The tar and zip file formats can be read or extracted by any third-party tool that can read the format, but require the phar extension in order to run with PHP. The phar file format is customized and unique to the phar extension, and can only be created by the phar extension or the PEAR package » PHP_Archive, but has the advantage that applications created in this format will run even if the phar extension is not enabled.

In other words, even with the phar extension disabled, one can execute or include a phar-based archive. Accessing individual files within a phar archive is only possible with the phar extension unless the phar archive was created by PHP_Archive.

The phar extension is also capable of converting a phar archive from tar to zip or to phar file format in a single command:

Example #3 Converting a phar archive from phar to tar file format

<?php
 $phar = new Phar('myphar.phar');
 $pgz = $phar->convertToExecutable(Phar::TAR, Phar::GZ); // makes myphar.phar.tar.gz
 ?>

Phar can compress individual files or an entire archive using gzip compression or bzip2 compression, and can verify archive integrity automatically through the use of MD5, SHA-1, SHA-256 or SHA-512 signatures.

Lastly, the Phar extension is security-conscious, and disables write access to executable phar archives by default, and requires system-level disabling of the phar.readonly php.ini setting in order to create or modify phar archives. Normal tar and zip archives without an executable stub can always be created or modified using the PharData class.

If you are creating applications for distribution, you will want to read How to create Phar Archives. If you want more information on the differences between the three file formats that phar supports, you should read Phar, Tar and Zip.

If you are using phar applications, there are helpful tips in How to use Phar Archives

The word phar is a portmanteau of PHP and Archive and is based loosely on the jar (Java Archive) familiar to Java developers.

The implementation for Phar archives is based on the PEAR package » PHP_Archive, and the implementation details are similar, although the Phar extension is much more powerful. In addition, the Phar extension allows most PHP applications to be run unmodified while PHP_Archive-based phar archives often require extensive modification in order to work.

Phar
安装／配置
Phar


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Phar


需求

Phar requires PHP 5.2.0 or newer. Additional features require the SPL extension in order to take advantage of iteration and array access to a Phar's file contents. The phar stream does not require any additional extensions to function.

You may optionally wish to enable the zlib and bzip2 extensions to take advantage of compressed phar support. In addition, to take advantage of OpenSSL signing, the OpenSSL extension must be enabled.

Note that a bug in the zlib.deflate stream filter fixed in PHP version 5.2.6 and newer may cause truncation of gzip and bzip2-compressed phar archives.

PHP 5.3 configured with --enable-zend-multibyte makes phar dependant on the ini option detect_unicode.

安装／配置
安装
安装／配置


安装

自 PHP 版本 5.3.0 Phar 扩展成为了内置的组件。在之前的版本，Phar 可以通过 PECL 扩展安装 » Phar PECL 页面 包含了历史以及更多信息。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Filesystem and Streams Configuration Options
名字 | 默认 | 可修改范围 | 更新日志
phar.readonly | "1" | PHP_INI_ALL |
phar.require_hash | "1" | PHP_INI_ALL |
phar.extract_list | "" | PHP_INI_ALL | Available from phar 1.1.0 to 1.2.3, removed in 2.0.0.
phar.cache_list | "" | PHP_INI_SYSTEM | Available from phar 2.0.0.

这是配置指令的简短说明。

phar.readonly boolean

This option disables creation or modification of Phar archives using the phar stream or Phar object's write support. This setting should always be enabled on production machines, as the phar extension's convenient write support could allow straightforward creation of a php-based virus when coupled with other common security vulnerabilities.

Note:

This setting can only be unset in php.ini due to security reasons. If phar.readonly is disabled in php.ini, the user may enable phar.readonly in a script or disable it later. If phar.readonly is enabled in php.ini, a script may harmlessly "re-enable" the INI variable, but may not disable it.

phar.require_hash boolean

This option will force all opened Phar archives to contain some kind of signature (currently MD5, SHA1, SHA256 and SHA512 are supported), and will refuse to process any Phar archive that does not contain a signature.

Note:

This setting can only be unset in php.ini due to security reasons. If phar.require_hash is disabled in php.ini, the user may enable phar.require_hash in a script or disable it later. If phar.require_hash is enabled in php.ini, a script may harmlessly "re-enable" the INI variable, but may not disable it.

This setting does not affect reading plain tar files with the PharData class.

phar.extract_list string

This INI setting has been removed as of phar 2.0.0

Allows mappings from a full path to a phar archive or its alias to the location of its extracted files. The format of the parameter is name=archive,name2=archive2. This allows extraction of phar files to disk, and allows phar to act as a kind of mapper to extracted disk files. This is often done for performance reasons, or to assist with debugging a phar.

Example #1 phar.extract_list usage example

in php.ini:
phar.extract_list = archive=/full/path/to/archive/,arch2=/full/path/to/arch2
<?php
include "phar://archive/content.php";
include "phar://arch2/foo.php";
?>

phar.cache_list string

This INI setting was added in phar 2.0.0

Allows mapping phar archives to be pre-parsed at web server startup, providing a performance improvement that brings running files out of a phar archive very close to the speed of running those files from a traditional disk-based installation.

Example #2 phar.cache_list usage example

in php.ini (windows):
phar.cache_list =C:\path\to\phar1.phar;C:\path\to\phar2.phar
in php.ini (unix):
phar.cache_list =/path/to/phar1.phar:/path/to/phar2.phar

安装
资源类型
安装／配置


资源类型

The Phar extension provides the phar stream, which allows accessing files contained within a phar transparently. See also the description of the Phar file format.

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

Phar compression constants
Constant | Value | Description
Phar::NONE (integer) | 0x00000000 | no compression
Phar::COMPRESSED (integer) | 0x0000F000 | bitmask that can be used with file flags to determine if any compression is present
Phar::GZ (integer) | 0x00001000 | zlib (gzip) compression
Phar::BZ2 (integer) | 0x00002000 | bzip2 compression
Phar file format constants
Constant | Value | Description
Phar::SAME (integer) | 0 | retain the same file format
Phar::PHAR (integer) | 1 | phar file format
Phar::TAR (integer) | 2 | tar file format
Phar::ZIP (integer) | 3 | zip file format
Phar signature constants
Constant | Value | Description
Phar::MD5 (integer) | 0x0001 | signature with md5 hash algorithm
Phar::SHA1 (integer) | 0x0002 | signature with sha1 hash algorithm
Phar::SHA256 (integer) | 0x0003 | signature with sha256 hash algorithm (requires hash extension)
Phar::SHA512 (integer) | 0x0004 | signature with sha512 hash algorithm (requires hash extension)
Phar::OPENSSL (integer) | 0x0010 | signature with OpenSSL public/private key pair. This is a true, asymmetric key signature.
Phar webPhar mime override constants
Constant | Value | Description
Phar::PHP (integer) | 1 | used to instruct the mimeoverrides parameter of Phar::webPhar() that the extension should be parsed as a PHP file
Phar::PHPS (integer) | 2 | used to instruct the mimeoverrides parameter of Phar::webPhar() that the extension should be parsed as a PHP source file through highlight_file()
资源类型
Using Phar Archives
Phar


Using Phar Archives

Table of Contents

  • Using Phar Archives: Introduction
  • Using Phar Archives: the phar stream wrapper
  • Using Phar Archives: the Phar and PharData class
预定义常量
Using Phar Archives: Introduction
Phar


Using Phar Archives: Introduction

Phar archives are similar in concept to Java JAR archives, but are tailored to the needs and to the flexibility of PHP applications. A Phar archive is used to distribute a complete PHP application or library in a single file. A Phar archive application is used exactly like any other PHP application:

php coolapplication.phar

Using a Phar archive library is identical to using any other PHP library:

<?php
include 'coollibrary.phar';
?>

The phar stream wrapper provides the core of the phar extension, and is explained in detail here. The phar stream wrapper allows accessing the files within a phar archive using PHP's standard file functions fopen(), opendir(), and others that work on regular files. The phar stream wrapper supports all read/write operations on both files and directories.

<?php
include 'phar://coollibrary.phar/internal/file.php';
header('Content-type: image/jpeg');
// phars can be accessed by full path or by alias
echo file_get_contents('phar:///fullpath/to/coollibrary.phar/images/wow.jpg');
?>

The Phar class implements advanced functionality for accessing files and for creating phar archives. The Phar class is explained in detail here.

<?php
try {
    // open an existing phar
    $p = new Phar('coollibrary.phar', 0);
    // Phar extends SPL's DirectoryIterator class
    foreach (new RecursiveIteratorIterator($p) as $file) {
        // $file is a PharFileInfo class, and inherits from SplFileInfo
        echo $file->getFileName() . "\n";
        echo file_get_contents($file->getPathName()) . "\n"; // display contents;
    }
    if (isset($p['internal/file.php'])) {
        var_dump($p['internal/file.php']->getMetadata());
    }

    // create a new phar - phar.readonly must be 0 in php.ini
    // phar.readonly is enabled by default for security reasons.
    // On production servers, Phars need never be created,
    // only executed.
    if (Phar::canWrite()) {
        $p = new Phar('newphar.tar.phar', 0, 'newphar.tar.phar');
        // make this a tar-based phar archive, compressed with gzip compression (.tar.gz)
        $p = $p->convertToExecutable(Phar::TAR, Phar::GZ);

        // create transaction - nothing is written to newphar.phar
        // until stopBuffering() is called, although temporary storage is needed
        $p->startBuffering();
        // add all files in /path/to/project, saving in the phar with the prefix "project"
        $p->buildFromIterator(new RecursiveIteratorIterator(new DirectoryIterator('/path/to/project')), '/path/to/');

        // add a new file via the array access API
        $p['file1.txt'] = 'Information';
        $fp = fopen('hugefile.dat', 'rb');
        // copy all data from the stream
        $p['data/hugefile.dat'] = $fp;

        if (Phar::canCompress(Phar::GZ)) {
            $p['data/hugefile.dat']->compress(Phar::GZ);
        }

        $p['images/wow.jpg'] = file_get_contents('images/wow.jpg');
        // any value can be saved as file-specific meta-data
        $p['images/wow.jpg']->setMetadata(array('mime-type' => 'image/jpeg'));
        $p['index.php'] = file_get_contents('index.php');
        $p->setMetadata(array('bootstrap' => 'index.php'));

        // save the phar archive to disk
        $p->stopBuffering();
    }
} catch (Exception $e) {
    echo 'Could not open Phar: ', $e;
}
?>

In addition, verification of phar file contents can be done using any of the supported symmetric hash algorithms (MD5, SHA1, SHA256 and SHA512 if ext/hash is enabled) and using asymmetric public/private key signing using OpenSSL (new in Phar 2.0.0). To take advantage of OpenSSL signing, you need to generate a public/private key pair, and use the private key to set the signature using Phar::setSignatureAlgorithm(). In addition, the public key as extracted using this code:

<?php
$public = openssl_get_publickey(file_get_contents('private.pem'));
$pkey = '';
openssl_pkey_export($public, $pkey);
?>
must be saved adjacent to the phar archive it verifies. If the phar archive is saved as /path/to/my.phar, the public key must be saved as /path/to/my.phar.pubkey, or phar will be unable to verify the OpenSSL signature.

As of version 2.0.0, The Phar class also provides 3 static methods, Phar::webPhar(), Phar::mungServer() and Phar::interceptFileFuncs() that are crucial to packaging up PHP applications designed for usage on regular filesystems and for web-based applications. Phar::webPhar() implements a front controller that routes HTTP calls to the correct location within the phar archive. Phar::mungServer() is used to modify the values of the $_SERVER array to trick applications that process these values. Phar::interceptFileFuncs() instructs Phar to intercept calls to fopen(), file_get_contents(), opendir(), and all of the stat-based functions (file_exists(), is_readable() and so on) and route all relative paths to locations within the phar archive.

As an example, packaging up a release of the popular phpMyAdmin application for use as a phar archive requires only this simple script and then phpMyAdmin.phar.tar.php can be accessed as a regular file from your web server after modifying the user/password:

<?php
@unlink('phpMyAdmin.phar.tar.php');
copy('phpMyAdmin-2.11.3-english.tar.gz', 'phpMyAdmin.phar.tar.php');
$a = new Phar('phpMyAdmin.phar.tar.php');
$a->startBuffering();
$a["phpMyAdmin-2.11.3-english/config.inc.php"] = '<?php
/* Servers configuration */
$i = 0;

/* Server localhost (config:root) [1] */
$i++;
$cfg[\'Servers\'][$i][\'host\'] = \'localhost\';
$cfg[\'Servers\'][$i][\'extension\'] = \'mysqli\';
$cfg[\'Servers\'][$i][\'connect_type\'] = \'tcp\';
$cfg[\'Servers\'][$i][\'compress\'] = false;
$cfg[\'Servers\'][$i][\'auth_type\'] = \'config\';
$cfg[\'Servers\'][$i][\'user\'] = \'root\';
$cfg[\'Servers\'][$i][\'password\'] = \'\';

/* End of servers configuration */
if (strpos(PHP_OS, \'WIN\') !== false) {
    $cfg[\'UploadDir\'] = getcwd();
} else {
    $cfg[\'UploadDir\'] = \'/tmp/pharphpmyadmin\';
    @mkdir(\'/tmp/pharphpmyadmin\');
    @chmod(\'/tmp/pharphpmyadmin\', 0777);
}';
$a->setStub('<?php
Phar::interceptFileFuncs();
Phar::webPhar("phpMyAdmin.phar", "phpMyAdmin-2.11.3-english/index.php");
echo "phpMyAdmin is intended to be executed from a web browser\n";
exit -1;
__HALT_COMPILER();
');
$a->stopBuffering();
?>

Using Phar Archives
Using Phar Archives: the phar stream wrapper
Using Phar Archives


Using Phar Archives: the phar stream wrapper

The Phar stream wrapper fully supports fopen() for read and write (not append), unlink(), stat(), fstat(), fseek(), rename() and directory stream operations opendir() and as of version 2.0.0, rmdir() and mkdir().

Individual file compression and per-file metadata can also be manipulated in a Phar archive using stream contexts:

<?php
$context = stream_context_create(array('phar' =>
                                    array('compress' => Phar::GZ)),
                                    array('metadata' => array('user' => 'cellog')));
file_put_contents('phar://my.phar/somefile.php', 0, $context);
?>

The phar stream wrapper does not operate on remote files, and cannot operate on remote files, and so is allowed even when the allow_url_fopen and allow_url_include INI options are disabled.

Although it is possible to create phar archives from scratch just using stream operations, it is best to use the functionality built into the Phar class. The stream wrapper is best used for read-only operations.

Using Phar Archives: Introduction
Using Phar Archives: the Phar and PharData class
Using Phar Archives


Using Phar Archives: the Phar and PharData class

The Phar class supports reading and manipulation of Phar archives, as well as iteration through inherited functionality of the RecursiveDirectoryIterator class. With support for the ArrayAccess interface, files inside a Phar archive can be accessed as if they were part of an associative array.

The PharData class extends the Phar, and allows creating and modifying non-executable (data) tar and zip archives even if phar.readonly=1 in php.ini. As such, PharData::setAlias() and PharData::setStub() are both disabled as the concept of alias and stub are unique to executable phar archives.

It is important to note that when creating a Phar archive, the full path should be passed to the Phar object constructor. Relative paths will fail to initialize.

Assuming that $p is a Phar object initialized as follows:

<?php
$p = new Phar('/path/to/myphar.phar', 0, 'myphar.phar');
?>

An empty Phar archive will be created at /path/to/myphar.phar, or if /path/to/myphar.phar already exists, it will be opened again. The literal myphar.phar demonstrates the concept of an alias that can be used to reference /path/to/myphar.phar in URLs as in:

<?php
// these two calls to file_get_contents() are equivalent if
// /path/to/myphar.phar has an explicit alias of "myphar.phar"
// in its manifest, or if the phar was initialized with the
// previous example's Phar object setup
$f = file_get_contents('phar:///path/to/myphar.phar/whatever.txt');
$f = file_get_contents('phar://myphar.phar/whatever.txt');
?>

With the newly created $p Phar object, the following is possible:

  • $a = $p['file.php'] creates a PharFileInfo class that refers to the contents of phar://myphar.phar/file.php
  • $p['file.php'] = $v creates a new file (phar://myphar.phar/file.php), or overwrites an existing file within myphar.phar. $v can be either a string or an open file pointer, in which case the entire contents of the file will be used to create the new file. Note that $p->addFromString('file.php', $v) is functionally equivalent to the above. Also possible is to add the contents of a file with $p->addFile('/path/to/file.php', 'file.php'). Lastly, an empty directory can be created with $p->addEmptyDir('empty').
  • isset($p['file.php']) can be used to determine whether phar://myphar.phar/file.php exists within myphar.phar.
  • unset($p['file.php']) erases phar://myphar.phar/file.php from myphar.phar.

In addition, the Phar object is the only way to access Phar-specific metadata, through Phar::getMetadata(), and the only way to set or retrieve a Phar archive's PHP loader stub through Phar::getStub() and Phar::setStub(). Additionally, compression for the entire Phar archive at once can only be manipulated using the Phar class.

The full list of Phar object functionality is documented below.

The PharFileInfo class extends the SplFileInfo class, and adds several methods for manipulating Phar-specific details of a file contained within a Phar, such as manipulating compression and metadata.

Using Phar Archives: the phar stream wrapper
Creating Phar Archives
Using Phar Archives


Creating Phar Archives

Table of Contents

  • Creating Phar Archives: Introduction
Using Phar Archives: the Phar and PharData class
Creating Phar Archives: Introduction
Phar


Creating Phar Archives: Introduction

To be written fully in the near future. Before reading this, be sure to read How to use Phar Archives.

A great place to start is by reading about Phar::buildFromIterator(), and the specifics of the file format choices available for archives. A healthy understanding of what a stub is and does is crucial to phar archive creation, and so Phar::setStub() and Phar::createDefaultStub() are good places to start as well. If you are distributing a web-based application, it is crucial to know about Phar::webPhar() and related method Phar::mungServer(). Any application that accesses its own files should also consider using Phar::interceptFileFuncs().

Creating Phar Archives
What makes a phar a phar and not a tar or a zip?
Creating Phar Archives


What makes a phar a phar and not a tar or a zip?

Table of Contents

  • Ingredients of all Phar archives, independent of file format
  • Phar file stub
  • Head-to-head comparison of Phar, Tar and Zip
  • Tar-based phars
  • Zip-based phars
  • Phar File Format
  • Global Phar bitmapped flags
  • Phar manifest file entry definition
  • Phar Signature format
Creating Phar Archives: Introduction
Ingredients of all Phar archives, independent of file format
Phar


Ingredients of all Phar archives, independent of file format

All Phar archives contain three to four sections:

  1. a stub

  2. a manifest describing the contents

  3. the file contents

  4. [optional] a signature for verifying Phar integrity (phar file format only)

What makes a phar a phar and not a tar or a zip?
Phar file stub
What makes a phar a phar and not a tar or a zip?


Phar file stub

A Phar's stub is a simple PHP file. The smallest possible stub follows:

<?php __HALT_COMPILER();

A stub must contain as a minimum, the __HALT_COMPILER(); token at its conclusion. Typically, a stub will contain loader functionality like so:

<?php
Phar::mapPhar();
include 'phar://myphar.phar/index.php';
__HALT_COMPILER();

There are no restrictions on the contents of a Phar stub, except for the requirement that it conclude with __HALT_COMPILER();. The closing PHP tag

?>
may be included or omitted, but there can be no more than 1 space between the ; and the close tag
?>
 or the phar extension will be unable to process the Phar archive's manifest.

In a tar or zip-based phar archive, the stub is stored in the .phar/stub.php file. The default stub for phar-based Phar archives contains approximately 7k of code to extract the contents of the phar and execute them. See Phar::createDefaultStub() for more detail.

The phar alias is stored in a tar or zip-based phar archive in the .phar/alias.txt file as plain text.

Ingredients of all Phar archives, independent of file format
Head-to-head comparison of Phar, Tar and Zip
What makes a phar a phar and not a tar or a zip?


Head-to-head comparison of Phar, Tar and Zip

What are the good and the bad things about the three supported file formats in the phar extension? This table attempts to address that question.

Feature matrix: Phar vs. Tar vs. Zip
Feature | Phar | Tar | Zip
Standard File Format | No | Yes | Yes
Can be executed without the Phar Extension [1] | Yes | No | No
Per-file compression | Yes | No | Yes
Whole-archive compression | Yes | Yes | No
Whole-archive signature validation | Yes | Yes | Yes (PHP 5.3.1+)
Web-specific application support | Yes | Yes | Yes
Per-file Meta-data | Yes | Yes | Yes
Whole-Archive Meta-data | Yes | Yes | Yes
Archive creation/modification [2] | Yes | Yes | Yes
Full support for all stream wrapper functions | Yes | Yes | Yes
Can be created/modified even if phar.readonly=1 [3] | No | Yes | Yes

Tip

[1] PHP can only directly access the contents of a Phar archive without the Phar extension if it is using a stub that extracts the contents of the phar archive. The stub created by Phar::createDefaultStub() extracts the phar archive and runs its contents from a temporary directory if no phar extension is found.

Tip

[2] All write access requires phar.readonly to be disabled in php.ini or on the command-line directly.

Tip

[3] Only tar and zip archives without .phar in their filename and without an executable stub .phar/stub.php can be created if phar.readonly=1.

Phar file stub
Tar-based phars
What makes a phar a phar and not a tar or a zip?


Tar-based phars

Archives based on the tar file format follow the more modern USTAR file format. The design of the tar file header makes them more efficient to access than the zip file format, and almost as efficient as the phar file format. File names are limited to 255 bytes, including full path within the phar archive. There is no limit on the number of files within a tar-based phar archive. These archives can fully compressed in gzip or bzip2 format and still be executed by the Phar extension.

To compress an entire archive, use Phar::compress(). To decompress an entire archive, use Phar::decompress().

Head-to-head comparison of Phar, Tar and Zip
Zip-based phars
What makes a phar a phar and not a tar or a zip?


Zip-based phars

Archives based on the zip file format support several features built into the zip file format. Per-file and whole-archive metadata is stored in the zip file comment and zip archive comment as a serialized string. Pre-existing zip comments will be successfully read as a string. Per-file compression read/write is supported with zlib compression, and read access is supported with bzip2 compression. There is no limit on the number of files within a zip-based phar archive. Empty directories are stored in the zip archive as files with a trailing slash like my/directory/

Tar-based phars
Phar File Format
What makes a phar a phar and not a tar or a zip?


Phar File Format

The phar file format is literally laid out as stub/manifest/contents/signature, and stores the crucial information of what is included in the phar archive in its manifest.

The Phar manifest is a highly optimized format that allows per-file specification of file compression, file permissions, and even user-defined meta-data such as file user or group. All values greater than 1 byte are stored in little-endian byte order, with the exception of the API version, which for historical reasons is stored as 3 nibbles in big-endian order.

All unused flags are reserved for future use, and must not be used to store custom information. Use the per-file meta-data facility to store customized information about particular files.

The basic file format of a Phar archive manifest is as follows:

Global Phar manifest format
Size in bytes | Description
4 bytes | Length of manifest in bytes (1 MB limit)
4 bytes | Number of files in the Phar
2 bytes | API version of the Phar manifest (currently 1.0.0)
4 bytes | Global Phar bitmapped flags
4 bytes | Length of Phar alias
?? | Phar alias (length based on previous)
4 bytes | Length of Phar metadata (0 for none)
?? | Serialized Phar Meta-data, stored in serialize() format
at least 24 * number of entries bytes | entries for each file

Zip-based phars
Global Phar bitmapped flags
What makes a phar a phar and not a tar or a zip?


Global Phar bitmapped flags

Here are the bitmapped flags currently recognized by the Phar extension for the global Phar flat bitmap:

Bitmap values recognized
Value | Description
0x00010000 | If set, this Phar contains a verification signature
0x00001000 | If set, this Phar contains at least 1 file that is compressed with zlib compression
0x00002000 | If set, this Phar contains at least 1 file that is compressed with bzip compression

Phar File Format
Phar manifest file entry definition
What makes a phar a phar and not a tar or a zip?


Phar manifest file entry definition

Each file in the manifest contains the following information:

Phar Manifest file entry
Size in bytes | Description
4 bytes | Filename length in bytes
?? | Filename (length specified in previous)
4 bytes | Un-compressed file size in bytes
4 bytes | Unix timestamp of file
4 bytes | Compressed file size in bytes
4 bytes | CRC32 checksum of un-compressed file contents
4 bytes | Bit-mapped File-specific flags
4 bytes | Serialized File Meta-data length (0 for none)
?? | Serialized File Meta-data, stored in serialize() format

Note that as of API version 1.1.1, empty directories are stored as filenames with a trailing slash like my/directory/

The File-specific bitmap values recognized are:

Bitmap values recognized
Value | Description
0x000001FF | These bits are reserved for defining specific file permissions of a file. Permissions are used for fstat() and can be used to recreate desired permissions upon extraction.
0x00001000 | If set, this file is compressed with zlib compression
0x00002000 | If set, this file is compressed with bzip compression

Global Phar bitmapped flags
Phar Signature format
What makes a phar a phar and not a tar or a zip?


Phar Signature format

Phars containing a signature always have the signature appended to the end of the Phar archive after the loader, manifest, and file contents. The two signature formats supported at this time are MD5 and SHA1.

Signature format
Length in bytes | Description
16 or 20 bytes | The actual signature, 20 bytes for an SHA1 signature, 16 bytes for an MD5 signature, 32 bytes for an SHA256 signature, and 64 bytes for an SHA512 signature.
4 bytes | Signature flags. 0x0001 is used to define an MD5 signature, 0x0002 is used to define an SHA1 signature, 0x0004 is used to define an SHA256 signature, and 0x0008 is used to define an SHA512 signature. The SHA256 and SHA512 signature support was introduced with API version 1.1.0.
4 bytes | Magic GBMB used to define the presence of a signature.

Phar manifest file entry definition
Phar
What makes a phar a phar and not a tar or a zip?


The Phar class

(PHP >= 5.3.0, PECL phar >= 1.0.0)

简介

The Phar class provides a high-level interface to accessing and creating phar archives.

类摘要

Phar extends RecursiveDirectoryIterator implements Countable , ArrayAccess {
/* 方法 */
public void addEmptyDir ( string $dirname )
public void addFile ( string $file [, string $localname ] )
public void addFromString ( string $localname , string $contents )
final public static string apiVersion ( void )
public array buildFromDirectory ( string $base_dir [, string $regex ] )
public array buildFromIterator ( Iterator $iter [, string $base_directory ] )
final public static bool canCompress ([ int $type = 0 ] )
final public static bool canWrite ( void )
public object compress ( int $compression [, string $extension ] )
public bool compressAllFilesBZIP2 ( void )
public bool compressAllFilesGZ ( void )
public void compressFiles ( int $compression )
public __construct ( string $fname [, int $flags [, string $alias ]] )
public PharData convertToData ([ int $format = 9021976 [, int $compression = 9021976 [, string $extension ]]] )
public Phar convertToExecutable ([ int $format = 9021976 [, int $compression = 9021976 [, string $extension ]]] )
public bool copy ( string $oldfile , string $newfile )
public int count ( void )
final public static string createDefaultStub ([ string $indexfile [, string $webindexfile ]] )
public object decompress ([ string $extension ] )
public bool decompressFiles ( void )
public bool delMetadata ( void )
public bool delete ( string $entry )
public bool extractTo ( string $pathto [, string|array $files [, bool $overwrite = false ]] )
public mixed getMetadata ( void )
public bool getModified ( void )
public array getSignature ( void )
public string getStub ( void )
final public static array getSupportedCompression ( void )
final public static array getSupportedSignatures ( void )
public string getVersion ( void )
public bool hasMetadata ( void )
final public static void interceptFileFuncs ( void )
public bool isBuffering ( void )
public mixed isCompressed ( void )
public bool isFileFormat ( int $format )
final public static bool isValidPharFilename ( string $filename [, bool $executable = true ] )
public bool isWritable ( void )
final public static bool loadPhar ( string $filename [, string $alias ] )
final public static bool mapPhar ([ string $alias [, int $dataoffset = 0 ]] )
final public static void mount ( string $pharpath , string $externalpath )
final public static void mungServer ( array $munglist )
public bool offsetExists ( string $offset )
public int offsetGet ( string $offset )
public void offsetSet ( string $offset , string $value )
public bool offsetUnset ( string $offset )
final public static string running ([ bool $retphar = true ] )
public bool setAlias ( string $alias )
public bool setDefaultStub ([ string $index [, string $webindex ]] )
public void setMetadata ( mixed $metadata )
public void setSignatureAlgorithm ( int $sigtype [, string $privatekey ] )
public bool setStub ( string $stub [, int $len = -1 ] )
public void startBuffering ( void )
public void stopBuffering ( void )
public bool uncompressAllFiles ( void )
final public static bool unlinkArchive ( string $archive )
final public static void webPhar ([ string $alias [, string $index = "index.php" [, string $f404 [, array $mimetypes [, callable $rewrites ]]]]] )
}

Table of Contents

  • Phar::addEmptyDir — 添加一个空目录到 phar 档案
  • Phar::addFile — 将一个文件从文件系统添加到 phar 档案中
  • Phar::addFromString — 以字符串的形式添加一个文件到 phar 档案
  • Phar::apiVersion — Returns the api version
  • Phar::buildFromDirectory — Construct a phar archive from the files within a directory.
  • Phar::buildFromIterator — Construct a phar archive from an iterator.
  • Phar::canCompress — Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::canWrite — Returns whether phar extension supports writing and creating phars
  • Phar::compress — Compresses the entire Phar archive using Gzip or Bzip2 compression
  • Phar::compressAllFilesBZIP2 — Compresses all files in the current Phar archive using Bzip2 compression
  • Phar::compressAllFilesGZ — Compresses all files in the current Phar archive using Gzip compression
  • Phar::compressFiles — Compresses all files in the current Phar archive
  • Phar::__construct — Construct a Phar archive object
  • Phar::convertToData — Convert a phar archive to a non-executable tar or zip file
  • Phar::convertToExecutable — Convert a phar archive to another executable phar archive file format
  • Phar::copy — Copy a file internal to the phar archive to another new file within the phar
  • Phar::count — Returns the number of entries (files) in the Phar archive
  • Phar::createDefaultStub — Create a phar-file format specific stub
  • Phar::decompress — Decompresses the entire Phar archive
  • Phar::decompressFiles — Decompresses all files in the current Phar archive
  • Phar::delMetadata — Deletes the global metadata of the phar
  • Phar::delete — 删除 phar 档案中的一个文件
  • Phar::extractTo — Extract the contents of a phar archive to a directory
  • Phar::getMetadata — Returns phar archive meta-data
  • Phar::getModified — Return whether phar was modified
  • Phar::getSignature — Return MD5/SHA1/SHA256/SHA512/OpenSSL signature of a Phar archive
  • Phar::getStub — Return the PHP loader or bootstrap stub of a Phar archive
  • Phar::getSupportedCompression — Return array of supported compression algorithms
  • Phar::getSupportedSignatures — Return array of supported signature types
  • Phar::getVersion — Return version info of Phar archive
  • Phar::hasMetadata — Returns whether phar has global meta-data
  • Phar::interceptFileFuncs — instructs phar to intercept fopen, file_get_contents, opendir, and all of the stat-related functions
  • Phar::isBuffering — Used to determine whether Phar write operations are being buffered, or are flushing directly to disk
  • Phar::isCompressed — Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • Phar::isFileFormat — Returns true if the phar archive is based on the tar/phar/zip file format depending on the parameter
  • Phar::isValidPharFilename — Returns whether the given filename is a valid phar filename
  • Phar::isWritable — Returns true if the phar archive can be modified
  • Phar::loadPhar — Loads any phar archive with an alias
  • Phar::mapPhar — Reads the currently executed file (a phar) and registers its manifest
  • Phar::mount — Mount an external path or file to a virtual location within the phar archive
  • Phar::mungServer — Defines a list of up to 4 $_SERVER variables that should be modified for execution
  • Phar::offsetExists — determines whether a file exists in the phar
  • Phar::offsetGet — Gets a PharFileInfo object for a specific file
  • Phar::offsetSet — set the contents of an internal file to those of an external file
  • Phar::offsetUnset — remove a file from a phar
  • Phar::running — Returns the full path on disk or full phar URL to the currently executing Phar archive
  • Phar::setAlias — Set the alias for the Phar archive
  • Phar::setDefaultStub — Used to set the PHP loader or bootstrap stub of a Phar archive to the default loader
  • Phar::setMetadata — Sets phar archive meta-data
  • Phar::setSignatureAlgorithm — set the signature algorithm for a phar and apply it.
  • Phar::setStub — Used to set the PHP loader or bootstrap stub of a Phar archive
  • Phar::startBuffering — Start buffering Phar write operations, do not modify the Phar object on disk
  • Phar::stopBuffering — Stop buffering write requests to the Phar archive, and save changes to disk
  • Phar::uncompressAllFiles — Uncompresses all files in the current Phar archive
  • Phar::unlinkArchive — Completely remove a phar archive from disk and from memory
  • Phar::webPhar — mapPhar for web-based phars. front controller for web applications
Phar Signature format
Phar::addEmptyDir
Phar


添加一个空目录到 phar 档案

Phar
Phar::addFile
Phar
PHP Manual

Phar::addEmptyDir

(Unknown)

Phar::addEmptyDir — 添加一个空目录到 phar 档案

说明

public void Phar::addEmptyDir ( string $dirname )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

通过这个方法，可以创建一个以 dirname 为路径名的空目录。 这个方法和 ZipArchive::addEmptyDir() 类似。

参数

dirname

需要在 phar 档案中创建的空目录名称

返回值

没有返回值, 失败时抛出异常（exception）。

范例

Example #1 一个 Phar::addEmptyDir() 示例

<?php
try {
    $a = new Phar('/path/to/phar.phar');

    $a->addEmptyDir('/full/path/to/file');
    // demonstrates how this file is stored
    $b = $a['full/path/to/file']->isDir();
} catch (Exception $e) {
    // handle errors here
}
?>

参见

  • PharData::addEmptyDir() - Add an empty directory to the tar/zip archive
  • Phar::addFile() - 将一个文件从文件系统添加到 phar 档案中
  • Phar::addFromString() - 以字符串的形式添加一个文件到 phar 档案

Phar
Phar::addFile
Phar


将一个文件从文件系统添加到 phar 档案中

Phar::addEmptyDir
Phar::addFromString
Phar
PHP Manual

Phar::addFile

(Unknown)

Phar::addFile — 将一个文件从文件系统添加到 phar 档案中

说明

public void Phar::addFile ( string $file [, string $localname ] )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

通过这个方法，任何文件或者 URL 可以被添加到 phar 档案中。如果第二个可选参数 localname 被设定， 那么文件则会以该参数为名称保存到档案中，此外，file 参数会被作为路径保存在档案中。 URLs 必须提交 localname 参数，否则会抛出异常。 这个方法与 ZipArchive::addFile() 类似。

参数

file

需要添加到 phar 档案的文件在磁盘上的完全（绝对）或者相对路径。

localname

文件保存到档案时的路径。

返回值

没有返回值，失败时会抛出异常。

范例

Example #1 一个 Phar::addFile() 示例

<?php
try {
    $a = new Phar('/path/to/phar.phar');

    $a->addFile('/full/path/to/file');
    // demonstrates how this file is stored
    $b = $a['full/path/to/file']->getContent();

    $a->addFile('/full/path/to/file', 'my/file.txt');
    $c = $a['my/file.txt']->getContent();

    // demonstrate URL usage
    $a->addFile('http://www.example.com', 'example.html');
} catch (Exception $e) {
    // handle errors here
}
?>

参见

  • Phar::offsetSet() - set the contents of an internal file to those of an external file
  • PharData::addFile() - Add a file from the filesystem to the tar/zip archive
  • Phar::addFromString() - 以字符串的形式添加一个文件到 phar 档案
  • Phar::addEmptyDir() - 添加一个空目录到 phar 档案

Phar::addEmptyDir
Phar::addFromString
Phar


以字符串的形式添加一个文件到 phar 档案

Phar::addFile
Phar::apiVersion
Phar
PHP Manual

Phar::addFromString

(Unknown)

Phar::addFromString — 以字符串的形式添加一个文件到 phar 档案

说明

public void Phar::addFromString ( string $localname , string $contents )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

通过这个方法，任何字符串都可以被添加到 phar 档案中。 文件将会以 localname 为路径保存到档案中。 这个方法与 ZipArchive::addFromString() 类似。

参数

localname

文件保存到档案时的路径。

contents

要保存的文件内容。

返回值

没有返回值，失败时会抛出异常。

范例

Example #1 一个 Phar::addFromString() 示例

<?php
try {
    $a = new Phar('/path/to/phar.phar');

    $a->addFromString('path/to/file.txt', 'my simple file');
    $b = $a['path/to/file.txt']->getContent();

    // to add contents from a stream handle for large files, use offsetSet()
    $c = fopen('/path/to/hugefile.bin');
    $a['largefile.bin'] = $c;
    fclose($c);
} catch (Exception $e) {
    // handle errors here
}
?>

参见

  • Phar::offsetSet() - set the contents of an internal file to those of an external file
  • PharData::addFromString() - Add a file from the filesystem to the tar/zip archive
  • Phar::addFile() - 将一个文件从文件系统添加到 phar 档案中
  • Phar::addEmptyDir() - 添加一个空目录到 phar 档案

Phar::addFile
Phar::apiVersion
Phar


Returns the api version

Phar::addFromString
Phar::buildFromDirectory
Phar
PHP Manual

Phar::apiVersion

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::apiVersion — Returns the api version

说明

final public static string Phar::apiVersion ( void )

Return the API version of the phar file format that will be used when creating phars. The Phar extension supports reading API version 1.0.0 or newer. API version 1.1.0 is required for SHA-256 and SHA-512 hash, and API version 1.1.1 is required to store empty directories.

参数

返回值

The API version string as in "1.0.0".

范例

Example #1 A Phar::apiVersion() example

<?php
echo Phar::apiVersion();
?>

以上例程会输出：

1.1.1

Phar::addFromString
Phar::buildFromDirectory
Phar


Construct a phar archive from the files within a directory.

Phar::apiVersion
Phar::buildFromIterator
Phar
PHP Manual

Phar::buildFromDirectory

(PHP >= 5.3.0, PECL phar >= 2.0.0)

Phar::buildFromDirectory — Construct a phar archive from the files within a directory.

说明

public array Phar::buildFromDirectory ( string $base_dir [, string $regex ] )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

Populate a phar archive from directory contents. The optional second parameter is a regular expression (pcre) that is used to exclude files. Any filename that matches the regular expression will be included, all others will be excluded. For more fine-grained control, use Phar::buildFromIterator().

参数

base_dir

The full or relative path to the directory that contains all files to add to the archive.

regex

An optional pcre regular expression that is used to filter the list of files. Only file paths matching the regular expression will be included in the archive.

返回值

Phar::buildFromDirectory() returns an associative array mapping internal path of file to the full path of the file on the filesystem.

错误／异常

This method throws BadMethodCallException when unable to instantiate the internal directory iterators, or a PharException if there were errors saving the phar archive.

范例

Example #1 A Phar::buildFromDirectory() example

<?php
// create with alias "project.phar"
$phar = new Phar('project.phar', 0, 'project.phar');
// add all files in the project
$phar->buildFromDirectory(dirname(__FILE__) . '/project');
$phar->setStub($phar->createDefaultStub('cli/index.php', 'www/index.php'));

$phar2 = new Phar('project2.phar', 0, 'project2.phar');
// add all files in the project, only include php files
$phar2->buildFromDirectory(dirname(__FILE__) . '/project', '/\.php$/');
$phar2->setStub($phar->createDefaultStub('cli/index.php', 'www/index.php'));
?>

参见

  • Phar::buildFromIterator() - Construct a phar archive from an iterator.

Phar::apiVersion
Phar::buildFromIterator
Phar


Construct a phar archive from an iterator.

Phar::buildFromDirectory
Phar::canCompress
Phar
PHP Manual

Phar::buildFromIterator

(PHP >= 5.3.0, PECL phar >= 2.0.0)

Phar::buildFromIterator — Construct a phar archive from an iterator.

说明

public array Phar::buildFromIterator ( Iterator $iter [, string $base_directory ] )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

Populate a phar archive from an iterator. Two styles of iterators are supported, iterators that map the filename within the phar to the name of a file on disk, and iterators like DirectoryIterator that return SplFileInfo objects. For iterators that return SplFileInfo objects, the second parameter is required.

参数

iter

Any iterator that either associatively maps phar file to location or returns SplFileInfo objects

base_directory

For iterators that return SplFileInfo objects, the portion of each file's full path to remove when adding to the phar archive

返回值

Phar::buildFromIterator() returns an associative array mapping internal path of file to the full path of the file on the filesystem.

范例

Example #1 A Phar::buildFromIterator() with SplFileInfo

For most phar archives, the archive will reflect an actual directory layout, and the second style is the most useful. For instance, to create a phar archive containing the files in this sample directory layout:

/path/to/project/
                 config/
                        dist.xml
                        debug.xml
                 lib/
                     file1.php
                     file2.php
                 src/
                     processthing.php
                 www/
                     index.php
                 cli/
                     index.php

This code could be used to add these files to the "project.phar" phar archive:

<?php
// create with alias "project.phar"
$phar = new Phar('project.phar', 0, 'project.phar');
$phar->buildFromIterator(
    new RecursiveIteratorIterator(
     new RecursiveDirectoryIterator('/path/to/project')),
    '/path/to/project');
$phar->setStub($phar->createDefaultStub('cli/index.php', 'www/index.php'));
?>

The file project.phar can then be used immediately. Phar::buildFromIterator() does not set values such as compression, metadata, and this can be done after creating the phar archive.

As an interesting note, Phar::buildFromIterator() can also be used to copy the contents of an existing phar archive, as the Phar object descends from DirectoryIterator:

<?php
// create with alias "project.phar"
$phar = new Phar('project.phar', 0, 'project.phar');
$phar->buildFromIterator(
    new RecursiveIteratorIterator(
     new Phar('/path/to/anotherphar.phar')),
    'phar:///path/to/anotherphar.phar/path/to/project');
$phar->setStub($phar->createDefaultStub('cli/index.php', 'www/index.php'));
?>

Example #2 A Phar::buildFromIterator() with other iterators

The second form of the iterator can be used with any iterator that returns a key => value mapping, such as an ArrayIterator:

<?php
// create with alias "project.phar"
$phar = new Phar('project.phar', 0, 'project.phar');
$phar->buildFromIterator(
    new ArrayIterator(
     array(
        'internal/file.php' => dirname(__FILE__) . '/somefile.php',
        'another/file.jpg' => fopen('/path/to/bigfile.jpg', 'rb'),
     )));
$phar->setStub($phar->createDefaultStub('cli/index.php', 'www/index.php'));
?>

错误／异常

This method returns UnexpectedValueException when the iterator returns incorrect values, such as an integer key instead of a string, a BadMethodCallException when an SplFileInfo-based iterator is passed without a base_directory parameter, or a PharException if there were errors saving the phar archive.

参见

  • Phar::buildFromDirectory() - Construct a phar archive from the files within a directory.

Phar::buildFromDirectory
Phar::canCompress
Phar


Returns whether phar extension supports compression using either zlib or bzip2

Phar::buildFromIterator
Phar::canWrite
Phar
PHP Manual

Phar::canCompress

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::canCompress — Returns whether phar extension supports compression using either zlib or bzip2

说明

final public static bool Phar::canCompress ([ int $type = 0 ] )

This should be used to test whether compression is possible prior to loading a phar archive containing compressed files.

参数

type

Either Phar::GZ or Phar::BZ2 can be used to test whether compression is possible with a specific compression algorithm (zlib or bzip2).

返回值

TRUE if compression/decompression is available, FALSE if not.

范例

Example #1 A Phar::canCompress() example

<?php
if (Phar::canCompress()) {
    echo file_get_contents('phar://compressedphar.phar/internal/file.txt');
} else {
    echo 'no compression available';
}
?>

参见

  • PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::isCompressed() - Returns whether the entry is compressed
  • PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
  • PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
  • Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • Phar::compressFiles() - Compresses all files in the current Phar archive
  • Phar::decompressFiles() - Decompresses all files in the current Phar archive
  • Phar::getSupportedCompression() - Return array of supported compression algorithms
  • Phar::convertToExecutable() - Convert a phar archive to another executable phar archive file format
  • Phar::convertToData() - Convert a phar archive to a non-executable tar or zip file

Phar::buildFromIterator
Phar::canWrite
Phar


Returns whether phar extension supports writing and creating phars

Phar::canCompress
Phar::compress
Phar
PHP Manual

Phar::canWrite

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::canWrite — Returns whether phar extension supports writing and creating phars

说明

final public static bool Phar::canWrite ( void )

This static method determines whether write access has been disabled in the system php.ini via the phar.readonly ini variable.

参数

返回值

TRUE if write access is enabled, FALSE if it is disabled.

范例

Example #1 A Phar::canWrite() example

<?php
if (Phar::canWrite()) {
    file_put_contents('phar://myphar.phar/file.txt', 'hi there');
}
?>

参见

  • phar.readonly
  • Phar::isWritable() - Returns true if the phar archive can be modified

Phar::canCompress
Phar::compress
Phar


Compresses the entire Phar archive using Gzip or Bzip2 compression

Phar::canWrite
Phar::compressAllFilesBZIP2
Phar
PHP Manual

Phar::compress

(PHP >= 5.3.0, PECL phar >= 2.0.0)

Phar::compress — Compresses the entire Phar archive using Gzip or Bzip2 compression

说明

public object Phar::compress ( int $compression [, string $extension ] )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

For tar-based and phar-based phar archives, this method compresses the entire archive using gzip compression or bzip2 compression. The resulting file can be processed with the gunzip command/bunzip command, or accessed directly and transparently with the Phar extension.

For Zip-based phar archives, this method fails with an exception. The zlib extension must be enabled to compress with gzip compression, the bzip2 extension must be enabled in order to compress with bzip2 compression. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed.

In addition, this method automatically renames the archive, appending .gz, .bz2 or removing the extension if passed Phar::NONE to remove compression. Alternatively, a file extension may be specified with the second parameter.

参数

compression

Compression must be one of Phar::GZ, Phar::BZ2 to add compression, or Phar::NONE to remove compression.

extension

By default, the extension is .phar.gz or .phar.bz2 for compressing phar archives, and .phar.tar.gz or .phar.tar.bz2 for compressing tar archives. For decompressing, the default file extensions are .phar and .phar.tar.

返回值

Returns a Phar object.

错误／异常

Throws BadMethodCallException if the phar.readonly INI variable is on, the zlib extension is not available, or the bzip2 extension is not enabled.

范例

Example #1 A Phar::compress() example

<?php
$p = new Phar('/path/to/my.phar', 0, 'my.phar');
$p['myfile.txt'] = 'hi';
$p['myfile2.txt'] = 'hi';
$p1 = $p->compress(Phar::GZ); // copies to /path/to/my.phar.gz
$p2 = $p->compress(Phar::BZ2); // copies to /path/to/my.phar.bz2
$p3 = $p2->compress(Phar::NONE); // exception: /path/to/my.phar already exists
?>

参见

  • PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::isCompressed() - Returns whether the entry is compressed
  • PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
  • PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
  • PharData::compress() - Compresses the entire tar/zip archive using Gzip or Bzip2 compression
  • Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • Phar::decompress() - Decompresses the entire Phar archive
  • Phar::getSupportedCompression() - Return array of supported compression algorithms
  • Phar::compressFiles() - Compresses all files in the current Phar archive
  • Phar::decompressFiles() - Decompresses all files in the current Phar archive

Phar::canWrite
Phar::compressAllFilesBZIP2
Phar


Compresses all files in the current Phar archive using Bzip2 compression

Phar::compress
Phar::compressAllFilesGZ
Phar
PHP Manual

Phar::compressAllFilesBZIP2

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::compressAllFilesBZIP2 — Compresses all files in the current Phar archive using Bzip2 compression

说明

public bool Phar::compressAllFilesBZIP2 ( void )

Note:

此方法已经从 phar 扩展 2.0.0以上版本中删除。可使用 Phar::compress()，Phar::decompress()，Phar::compressFiles() 和 Phar::decompressFiles()替代。

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

This method compresses all files in the Phar archive using bzip2 compression. The bzip2 extension must be enabled to take advantage of this feature. In addition, if any files are already compressed using gzip compression, the zlib extension must be enabled in order to decompress the files prior to re-compressing with bzip2 compression. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Throws BadMethodCallException if the phar.readonly INI variable is on, the bzip2 extension is not available, or if any files are compressed using gzip compression and the zlib extension is not enabled.

范例

Example #1 A Phar::compressAllFilesBZIP2() example

<?php
$p = new Phar('/path/to/my.phar', 0, 'my.phar');
$p['myfile.txt'] = 'hi';
$p['myfile2.txt'] = 'hi';
foreach ($p as $file) {
    var_dump($file->getFileName());
    var_dump($file->isCompressed());
    var_dump($file->isCompressedBZIP2());
    var_dump($file->isCompressedGZ());
}
$p->compressAllFilesBZIP2();
foreach ($p as $file) {
    var_dump($file->getFileName());
    var_dump($file->isCompressed());
    var_dump($file->isCompressedBZIP2());
    var_dump($file->isCompressedGZ());
}
?>

以上例程会输出：

string(10) "myfile.txt"
bool(false)
bool(false)
bool(false)
string(11) "myfile2.txt"
bool(false)
bool(false)
bool(false)
string(10) "myfile.txt"
bool(true)
bool(true)
bool(false)
string(11) "myfile2.txt"
bool(true)
bool(true)
bool(false)

参见

  • PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::isCompressedBZIP2() - Returns whether the entry is compressed using bzip2
  • PharFileInfo::isCompressed() - Returns whether the entry is compressed
  • PharFileInfo::isCompressedGZ() - Returns whether the entry is compressed using gz
  • PharFileInfo::setCompressedBZIP2() - Compresses the current Phar entry within the phar using Bzip2 compression
  • PharFileInfo::setUncompressed() - Uncompresses the current Phar entry within the phar, if it is compressed
  • PharFileInfo::setCompressedGZ() - Compresses the current Phar entry within the phar using gz compression
  • Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • Phar::compressAllFilesGZ() - Compresses all files in the current Phar archive using Gzip compression
  • Phar::getSupportedCompression() - Return array of supported compression algorithms
  • Phar::uncompressAllFiles() - Uncompresses all files in the current Phar archive

Phar::compress
Phar::compressAllFilesGZ
Phar


Compresses all files in the current Phar archive using Gzip compression

Phar::compressAllFilesBZIP2
Phar::compressFiles
Phar
PHP Manual

Phar::compressAllFilesGZ

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::compressAllFilesGZ — Compresses all files in the current Phar archive using Gzip compression

说明

public bool Phar::compressAllFilesGZ ( void )

Note:

此方法已经从 phar 扩展 2.0.0以上版本中删除。可使用 Phar::compress()，Phar::decompress()，Phar::compressFiles() 和 Phar::decompressFiles()替代。

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

For tar-based phar archives, this method compresses the entire archive using gzip compression. The resulting file can be processed with the gunzip command, or accessed directly and transparently with the Phar extension.

For Zip-based and phar-based phar archives, this method compresses all files in the Phar archive using gzip compression. The zlib extension must be enabled to take advantage of this feature. In addition, if any files are already compressed using bzip2 compression, the bzip2 extension must be enabled in order to decompress the files prior to re-compressing with gzip compression. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Throws BadMethodCallException if the phar.readonly INI variable is on, the zlib extension is not available, or if any files are compressed using bzip2 compression and the bzip2 extension is not enabled.

范例

Example #1 A Phar::compressAllFilesGZ() example

<?php
$p = new Phar('/path/to/my.phar', 0, 'my.phar');
$p['myfile.txt'] = 'hi';
$p['myfile2.txt'] = 'hi';
foreach ($p as $file) {
    var_dump($file->getFileName());
    var_dump($file->isCompressed());
    var_dump($file->isCompressedBZIP2());
    var_dump($file->isCompressedGZ());
}
$p->compressAllFilesGZ();
foreach ($p as $file) {
    var_dump($file->getFileName());
    var_dump($file->isCompressed());
    var_dump($file->isCompressedBZIP2());
    var_dump($file->isCompressedGZ());
}
?>

以上例程会输出：

string(10) "myfile.txt"
bool(false)
bool(false)
bool(false)
string(11) "myfile2.txt"
bool(false)
bool(false)
bool(false)
string(10) "myfile.txt"
bool(true)
bool(false)
bool(true)
string(11) "myfile2.txt"
bool(true)
bool(false)
bool(true)

参见

  • PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::isCompressedBZIP2() - Returns whether the entry is compressed using bzip2
  • PharFileInfo::isCompressed() - Returns whether the entry is compressed
  • PharFileInfo::isCompressedGZ() - Returns whether the entry is compressed using gz
  • PharFileInfo::setCompressedBZIP2() - Compresses the current Phar entry within the phar using Bzip2 compression
  • PharFileInfo::setUncompressed() - Uncompresses the current Phar entry within the phar, if it is compressed
  • PharFileInfo::setCompressedGZ() - Compresses the current Phar entry within the phar using gz compression
  • Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • Phar::compressAllFilesBZIP2() - Compresses all files in the current Phar archive using Bzip2 compression
  • Phar::getSupportedCompression() - Return array of supported compression algorithms
  • Phar::uncompressAllFiles() - Uncompresses all files in the current Phar archive

Phar::compressAllFilesBZIP2
Phar::compressFiles
Phar


Compresses all files in the current Phar archive

Phar::compressAllFilesGZ
Phar::__construct
Phar
PHP Manual

Phar::compressFiles

(PHP >= 5.3.0, PECL phar >= 2.0.0)

Phar::compressFiles — Compresses all files in the current Phar archive

说明

public void Phar::compressFiles ( int $compression )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

For tar-based phar archives, this method throws a BadMethodCallException, as compression of individual files within a tar archive is not supported by the file format. Use Phar::compress() to compress an entire tar-based phar archive.

For Zip-based and phar-based phar archives, this method compresses all files in the Phar archive using the specified compression. The zlib or bzip2 extensions must be enabled to take advantage of this feature. In addition, if any files are already compressed using bzip2/zlib compression, the respective extension must be enabled in order to decompress the files prior to re-compressing. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed.

参数

compression

Compression must be one of Phar::GZ, Phar::BZ2 to add compression, or Phar::NONE to remove compression.

返回值

没有返回值。

错误／异常

Throws BadMethodCallException if the phar.readonly INI variable is on, the zlib extension is not available, or if any files are compressed using bzip2 compression and the bzip2 extension is not enabled.

范例

Example #1 A Phar::compressFiles() example

<?php
$p = new Phar('/path/to/my.phar', 0, 'my.phar');
$p['myfile.txt'] = 'hi';
$p['myfile2.txt'] = 'hi';
foreach ($p as $file) {
    var_dump($file->getFileName());
    var_dump($file->isCompressed());
    var_dump($file->isCompressed(Phar::BZ2));
    var_dump($file->isCompressed(Phar::GZ));
}
$p->compressFiles(Phar::GZ);
foreach ($p as $file) {
    var_dump($file->getFileName());
    var_dump($file->isCompressed());
    var_dump($file->isCompressed(Phar::BZ2));
    var_dump($file->isCompressed(Phar::GZ));
}
?>

以上例程会输出：

string(10) "myfile.txt"
bool(false)
bool(false)
bool(false)
string(11) "myfile2.txt"
bool(false)
bool(false)
bool(false)
string(10) "myfile.txt"
int(4096)
bool(false)
bool(true)
string(11) "myfile2.txt"
int(4096)
bool(false)
bool(true)

参见

  • PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::isCompressed() - Returns whether the entry is compressed
  • PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
  • PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
  • Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • Phar::decompressFiles() - Decompresses all files in the current Phar archive
  • Phar::getSupportedCompression() - Return array of supported compression algorithms
  • Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression
  • Phar::decompress() - Decompresses the entire Phar archive

Phar::compressAllFilesGZ
Phar::__construct
Phar


Construct a Phar archive object

Phar::compressFiles
Phar::convertToData
Phar
PHP Manual

Phar::__construct

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::__construct — Construct a Phar archive object

说明

public Phar::__construct ( string $fname [, int $flags [, string $alias ]] )

参数

fname

Path to an existing Phar archive or to-be-created archive. The file name's extension must contain .phar.

flags

Flags to pass to parent class RecursiveDirectoryIterator.

alias

Alias with which this Phar archive should be referred to in calls to stream functionality.

错误／异常

Throws BadMethodCallException if called twice, UnexpectedValueException if the phar archive can't be opened.

范例

Example #1 A Phar::__construct() example

<?php
try {
    $p = new Phar('/path/to/my.phar', FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::KEY_AS_FILENAME,
                  'my.phar');
} catch (UnexpectedValueException $e) {
    die('Could not open my.phar');
} catch (BadMethodCallException $e) {
    echo 'technically, this cannot happen';
}
// this works now
echo file_get_contents('phar://my.phar/example.txt');
// and works as if we had typed
echo file_get_contents('phar:///path/to/my.phar/example.txt');
?>

Phar::compressFiles
Phar::convertToData
Phar


Convert a phar archive to a non-executable tar or zip file

Phar::__construct
Phar::convertToExecutable
Phar
PHP Manual

Phar::convertToData

(PHP >= 5.3.0, PECL phar >= 2.0.0)

Phar::convertToData — Convert a phar archive to a non-executable tar or zip file

说明

public PharData Phar::convertToData ([ int $format = 9021976 [, int $compression = 9021976 [, string $extension ]]] )

This method is used to convert an executable phar archive to either a tar or zip file. To make the tar or zip non-executable, the phar stub and phar alias files are removed from the newly created archive.

If no changes are specified, this method throws a BadMethodCallException if the archive is in phar file format. For archives in tar or zip file format, this method converts the archive to a non-executable archive.

If successful, the method creates a new archive on disk and returns a PharData object. The old archive is not removed from disk, and should be done manually after the process has finished.

参数

format

This should be one of Phar::TAR or Phar::ZIP. If set to NULL, the existing file format will be preserved.

compression

This should be one of Phar::NONE for no whole-archive compression, Phar::GZ for zlib-based compression, and Phar::BZ2 for bzip-based compression.

extension

This parameter is used to override the default file extension for a converted archive. Note that .phar cannot be used anywhere in the filename for a non-executable tar or zip archive.

If converting to a tar-based phar archive, the default extensions are .tar, .tar.gz, and .tar.bz2 depending on specified compression. For zip-based archives, the default extension is .zip.

返回值

The method returns a PharData object on success and throws an exception on failure.

错误／异常

This method throws BadMethodCallException when unable to compress, an unknown compression method has been specified, the requested archive is buffering with Phar::startBuffering() and has not concluded with Phar::stopBuffering(), and a PharException if any problems are encountered during the phar creation process.

范例

Example #1 A Phar::convertToData() example

Using Phar::convertToData():

<?php
try {
    $tarphar = new Phar('myphar.phar.tar');
    // note that myphar.phar.tar is *not* unlinked
    // convert it to the non-executable tar file format
    // creates myphar.tar
    $tar = $tarphar->convertToData();
    // convert to non-executable zip format, creates myphar.zip
    $zip = $tarphar->convertToData(Phar::ZIP);
    // create myphar.tbz
    $tgz = $tarphar->convertToData(Phar::TAR, Phar::BZ2, '.tbz');
    // creates myphar.phar.tgz
    $phar = $tarphar->convertToData(Phar::PHAR); // throws exception
} catch (Exception $e) {
    // handle the error here
}
?>

参见

  • Phar::convertToExecutable() - Convert a phar archive to another executable phar archive file format
  • PharData::convertToExecutable() - Convert a non-executable tar/zip archive to an executable phar archive
  • PharData::convertToData() - Convert a phar archive to a non-executable tar or zip file

Phar::__construct
Phar::convertToExecutable
Phar


Convert a phar archive to another executable phar archive file format

Phar::convertToData
Phar::copy
Phar
PHP Manual

Phar::convertToExecutable

(PHP >= 5.3.0, PECL phar >= 2.0.0)

Phar::convertToExecutable — Convert a phar archive to another executable phar archive file format

说明

public Phar Phar::convertToExecutable ([ int $format = 9021976 [, int $compression = 9021976 [, string $extension ]]] )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

This method is used to convert a phar archive to another file format. For instance, it can be used to create a tar-based executable phar archive from a zip-based executable phar archive, or from an executable phar archive in the phar file format. In addition, it can be used to apply whole-archive compression to a tar or phar-based archive.

If no changes are specified, this method throws a BadMethodCallException.

If successful, the method creates a new archive on disk and returns a Phar object. The old archive is not removed from disk, and should be done manually after the process has finished.

参数

format

This should be one of Phar::PHAR, Phar::TAR, or Phar::ZIP. If set to NULL, the existing file format will be preserved.

compression

This should be one of Phar::NONE for no whole-archive compression, Phar::GZ for zlib-based compression, and Phar::BZ2 for bzip-based compression.

extension

This parameter is used to override the default file extension for a converted archive. Note that all zip- and tar-based phar archives must contain .phar in their file extension in order to be processed as a phar archive.

If converting to a phar-based archive, the default extensions are .phar, .phar.gz, or .phar.bz2 depending on the specified compression. For tar-based phar archives, the default extensions are .phar.tar, .phar.tar.gz, and .phar.tar.bz2. For zip-based phar archives, the default extension is .phar.zip.

返回值

The method returns a Phar object on success and throws an exception on failure.

错误／异常

This method throws BadMethodCallException when unable to compress, an unknown compression method has been specified, the requested archive is buffering with Phar::startBuffering() and has not concluded with Phar::stopBuffering(), an UnexpectedValueException if write support is disabled, and a PharException if any problems are encountered during the phar creation process.

范例

Example #1 A Phar::convertToExecutable() example

Using Phar::convertToExecutable():

<?php
try {
    $tarphar = new Phar('myphar.phar.tar');
    // convert it to the phar file format
    // note that myphar.phar.tar is *not* unlinked
    $phar = $tarphar->convertToExecutable(Phar::PHAR); // creates myphar.phar
    $phar->setStub($phar->createDefaultStub('cli.php', 'web/index.php'));
    // creates myphar.phar.tgz
    $compressed = $phar->convertToExecutable(Phar::TAR, Phar::GZ, '.phar.tgz');
} catch (Exception $e) {
    // handle the error here
}
?>

参见

  • Phar::convertToData() - Convert a phar archive to a non-executable tar or zip file
  • PharData::convertToExecutable() - Convert a non-executable tar/zip archive to an executable phar archive
  • PharData::convertToData() - Convert a phar archive to a non-executable tar or zip file

Phar::convertToData
Phar::copy
Phar


Copy a file internal to the phar archive to another new file within the phar

Phar::convertToExecutable
Phar::count
Phar
PHP Manual

Phar::copy

(PHP >= 5.3.0, PECL phar >= 2.0.0)

Phar::copy — Copy a file internal to the phar archive to another new file within the phar

说明

public bool Phar::copy ( string $oldfile , string $newfile )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

Copy a file internal to the phar archive to another new file within the phar. This is an object-oriented alternative to using copy() with the phar stream wrapper.

参数

oldfile

newfile

返回值

returns TRUE on success, but it is safer to encase method call in a try/catch block and assume success if no exception is thrown.

错误／异常

throws UnexpectedValueException if the source file does not exist, the destination file already exists, write access is disabled, opening either file fails, reading the source file fails, or a PharException if writing the changes to the phar fails.

范例

Example #1 A Phar::copy() example

This example shows using Phar::copy() and the equivalent stream wrapper performance of the same thing. The primary difference between the two approaches is error handling. All Phar methods throw exceptions, whereas the stream wrapper uses trigger_error().

<?php
try {
    $phar = new Phar('myphar.phar');
    $phar['a'] = 'hi';
    $phar->copy('a', 'b');
    echo $phar['b']; // outputs "hi"
} catch (Exception $e) {
    // handle error
}

// the stream wrapper equivalent of the above code.
// E_WARNINGS are triggered on error rather than exceptions.
copy('phar://myphar.phar/a', 'phar//myphar.phar/c');
echo file_get_contents('phar://myphar.phar/c'); // outputs "hi"
?>

Phar::convertToExecutable
Phar::count
Phar


Returns the number of entries (files) in the Phar archive

Phar::copy
Phar::createDefaultStub
Phar
PHP Manual

Phar::count

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::count — Returns the number of entries (files) in the Phar archive

说明

public int Phar::count ( void )

参数

返回值

The number of files contained within this phar, or 0 (the number zero) if none.

范例

Example #1 A Phar::count() example

<?php
// make sure it doesn't exist
@unlink('brandnewphar.phar');
try {
    $p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
} catch (Exception $e) {
    echo 'Could not create phar:', $e;
}
echo 'The new phar has ' . $p->count() . " entries\n";
$p['file.txt'] = 'hi';
echo 'The new phar has ' . $p->count() . " entries\n";
?>

以上例程会输出：

The new phar has 0 entries
The new phar has 1 entries

Phar::copy
Phar::createDefaultStub
Phar


Create a phar-file format specific stub

Phar::count
Phar::decompress
Phar
PHP Manual

Phar::createDefaultStub

(Unknown)

Phar::createDefaultStub — Create a phar-file format specific stub

说明

final public static string Phar::createDefaultStub ([ string $indexfile [, string $webindexfile ]] )

This method is intended for creation of phar-file format-specific stubs, and is not intended for use with tar- or zip-based phar archives.

Phar archives contain a bootstrap loader, or stub written in PHP that is executed when the archive is executed in PHP either via include:

<?php
include 'myphar.phar';
?>
or by simple execution:
php myphar.phar

This method provides a simple and easy method to create a stub that will run a startup file from the phar archive. In addition, different files can be specified for running the phar archive from the command line versus through a web server. The loader stub also calls Phar::interceptFileFuncs() to allow easy bundling of a PHP application that accesses the file system. If the phar extension is not present, the loader stub will extract the phar archive to a temporary directory and then operate on the files. A shutdown function erases the temporary files on exit.

返回值

Returns a string containing the contents of a customized bootstrap loader (stub) that allows the created Phar archive to work with or without the Phar extension enabled.

错误／异常

Throws UnexpectedValueException if either parameter is longer than 400 bytes.

范例

Example #1 A Phar::createDefaultStub() example

<?php
try {
    $phar = new Phar('myphar.phar');
    $phar->setStub($phar->createDefaultStub('cli.php', 'web/index.php'));
} catch (Exception $e) {
    // handle errors
}
?>

参见

  • Phar::setStub() - Used to set the PHP loader or bootstrap stub of a Phar archive
  • Phar::getStub() - Return the PHP loader or bootstrap stub of a Phar archive

Phar::count
Phar::decompress
Phar


Decompresses the entire Phar archive

Phar::createDefaultStub
Phar::decompressFiles
Phar
PHP Manual

Phar::decompress

(PHP >= 5.3.0, PECL phar >= 2.0.0)

Phar::decompress — Decompresses the entire Phar archive

说明

public object Phar::decompress ([ string $extension ] )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

For tar-based and phar-based phar archives, this method decompresses the entire archive.

For Zip-based phar archives, this method fails with an exception. The zlib extension must be enabled to decompress an archive compressed with gzip compression, and the bzip2 extension must be enabled in order to decompress an archive compressed with bzip2 compression. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed.

In addition, this method automatically changes the file extension of the archive, .phar by default for phar archives, or .phar.tar for tar-based phar archives. Alternatively, a file extension may be specified with the second parameter.

参数

extension

For decompressing, the default file extensions are .phar and .phar.tar. Use this parameter to specify another file extension. Be aware that all executable phar archives must contain .phar in their filename.

返回值

A Phar object is returned.

错误／异常

Throws BadMethodCallException if the phar.readonly INI variable is on, the zlib extension is not available, or the bzip2 extension is not enabled.

范例

Example #1 A Phar::decompress() example

<?php
$p = new Phar('/path/to/my.phar', 0, 'my.phar.gz');
$p['myfile.txt'] = 'hi';
$p['myfile2.txt'] = 'hi';
$p3 = $p2->decompress(); // creates /path/to/my.phar
?>

参见

  • PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::isCompressed() - Returns whether the entry is compressed
  • PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
  • PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
  • PharData::compress() - Compresses the entire tar/zip archive using Gzip or Bzip2 compression
  • Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression
  • Phar::getSupportedCompression() - Return array of supported compression algorithms
  • Phar::compressFiles() - Compresses all files in the current Phar archive
  • Phar::decompressFiles() - Decompresses all files in the current Phar archive

Phar::createDefaultStub
Phar::decompressFiles
Phar


Decompresses all files in the current Phar archive

Phar::decompress
Phar::delMetadata
Phar
PHP Manual

Phar::decompressFiles

(PHP >= 5.3.0, PECL phar >= 2.0.0)

Phar::decompressFiles — Decompresses all files in the current Phar archive

说明

public bool Phar::decompressFiles ( void )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

For tar-based phar archives, this method throws a BadMethodCallException, as compression of individual files within a tar archive is not supported by the file format. Use Phar::compress() to compress an entire tar-based phar archive.

For Zip-based and phar-based phar archives, this method decompresses all files in the Phar archive. The zlib or bzip2 extensions must be enabled to take advantage of this feature if any files are compressed using bzip2/zlib compression. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Throws BadMethodCallException if the phar.readonly INI variable is on, the zlib extension is not available, or if any files are compressed using bzip2 compression and the bzip2 extension is not enabled.

范例

Example #1 A Phar::decompressFiles() example

<?php
$p = new Phar('/path/to/my.phar', 0, 'my.phar');
$p['myfile.txt'] = 'hi';
$p['myfile2.txt'] = 'hi';
$p->compressFiles(Phar::GZ);
foreach ($p as $file) {
    var_dump($file->getFileName());
    var_dump($file->isCompressed());
    var_dump($file->isCompressed(Phar::BZ2));
    var_dump($file->isCompressed(Phar::GZ));
}
$p->decompressFiles();
foreach ($p as $file) {
    var_dump($file->getFileName());
    var_dump($file->isCompressed());
    var_dump($file->isCompressed(Phar::BZ2));
    var_dump($file->isCompressed(Phar::GZ));
}
?>

以上例程会输出：

string(10) "myfile.txt"
int(4096)
bool(false)
bool(true)
string(11) "myfile2.txt"
int(4096)
bool(false)
bool(true)
string(10) "myfile.txt"
bool(false)
bool(false)
bool(false)
string(11) "myfile2.txt"
bool(false)
bool(false)
bool(false)

参见

  • PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::isCompressed() - Returns whether the entry is compressed
  • PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
  • PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
  • Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • Phar::compressFiles() - Compresses all files in the current Phar archive
  • Phar::getSupportedCompression() - Return array of supported compression algorithms
  • Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression
  • Phar::decompress() - Decompresses the entire Phar archive

Phar::decompress
Phar::delMetadata
Phar


Deletes the global metadata of the phar

Phar::decompressFiles
Phar::delete
Phar
PHP Manual

Phar::delMetadata

(PHP >= 5.3.0, PECL phar >= 1.2.0)

Phar::delMetadata — Deletes the global metadata of the phar

说明

public bool Phar::delMetadata ( void )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

Deletes the global metadata of the phar

参数

返回值

returns TRUE on success, but it is better to check for thrown exception, and assume success if none is thrown.

错误／异常

Throws PharException if errors occur while flushing changes to disk.

范例

Example #1 A Phar::delMetaData() example

<?php
try {
    $phar = new Phar('myphar.phar');
    var_dump($phar->getMetadata());
    $phar->setMetadata("hi there");
    var_dump($phar->getMetadata());
    $phar->delMetadata();
    var_dump($phar->getMetadata());
} catch (Exception $e) {
    // handle errors
}
?>

以上例程会输出：

NULL
string(8) "hi there"
NULL

参见

  • Phar::getMetadata() - Returns phar archive meta-data
  • Phar::setMetadata() - Sets phar archive meta-data
  • Phar::hasMetadata() - Returns whether phar has global meta-data

Phar::decompressFiles
Phar::delete
Phar


删除 phar 档案中的一个文件

Phar::delMetadata
Phar::extractTo
Phar
PHP Manual

Phar::delete

(PHP >= 5.3.0, PECL phar >= 2.0.0)

Phar::delete — 删除 phar 档案中的一个文件

说明

public bool Phar::delete ( string $entry )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

删除档案中的一个文件。这个方法与下面示例中调用 unlink() 处理数据流包装器的方式等价。

参数

entry

需要删除的文件在档案中的路径。

返回值

成功时返回 TRUE，但是最好还是检查一下是否抛出了异常，如果没有抛出，可以认定操作成功。

错误／异常

如果将修改保存到磁盘时发生了错误，会抛出 PharException 异常。

范例

Example #1 一个 Phar::delete() 示例

<?php
try {
    $phar = new Phar('myphar.phar');
    $phar->delete('unlink/me.php');
    // this is equivalent to:
    unlink('phar://myphar.phar/unlink/me.php');
} catch (Exception $e) {
    // handle errors
}
?>

参见

  • PharData::delete() - Delete a file within a tar/zip archive
  • Phar::unlinkArchive() - Completely remove a phar archive from disk and from memory

Phar::delMetadata
Phar::extractTo
Phar


Extract the contents of a phar archive to a directory

Phar::delete
Phar::getMetadata
Phar
PHP Manual

Phar::extractTo

(Unknown)

Phar::extractTo — Extract the contents of a phar archive to a directory

说明

public bool Phar::extractTo ( string $pathto [, string|array $files [, bool $overwrite = false ]] )

Extract all files within a phar archive to disk. Extracted files and directories preserve permissions as stored in the archive. The optional parameters allow optional control over which files are extracted, and whether existing files on disk can be overwritten. The second parameter files can be either the name of a file or directory to extract, or an array of names of files and directories to extract. By default, this method will not overwrite existing files, the third parameter can be set to true to enable overwriting of files. This method is similar to ZipArchive::extractTo().

参数

pathto

Path to extract the given files to

files

The name of a file or directory to extract, or an array of files/directories to extract

overwrite

Set to TRUE to enable overwriting existing files

返回值

returns TRUE on success, but it is better to check for thrown exception, and assume success if none is thrown.

错误／异常

Throws PharException if errors occur while flushing changes to disk.

范例

Example #1 A Phar::extractTo() example

<?php
try {
    $phar = new Phar('myphar.phar');
    $phar->extractTo('/full/path'); // extract all files
    $phar->extractTo('/another/path', 'file.txt'); // extract only file.txt
    $phar->extractTo('/this/path',
        array('file1.txt', 'file2.txt')); // extract 2 files only
    $phar->extractTo('/third/path', null, true); // extract all files, and overwrite
} catch (Exception $e) {
    // handle errors
}
?>

参见

  • PharData::extractTo() - Extract the contents of a tar/zip archive to a directory

Phar::delete
Phar::getMetadata
Phar


Returns phar archive meta-data

Phar::extractTo
Phar::getModified
Phar
PHP Manual

Phar::getMetadata

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::getMetadata — Returns phar archive meta-data

说明

public mixed Phar::getMetadata ( void )

Retrieve archive meta-data. Meta-data can be any PHP variable that can be serialized.

参数

No parameters.

返回值

any PHP variable that can be serialized and is stored as meta-data for the Phar archive, or NULL if no meta-data is stored.

范例

Example #1 A Phar::getMetadata() example

<?php
// make sure it doesn't exist
@unlink('brandnewphar.phar');
try {
    $p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
    $p['file.php'] = '<?php echo "hello";';
    $p->setMetadata(array('bootstrap' => 'file.php'));
    var_dump($p->getMetadata());
} catch (Exception $e) {
    echo 'Could not modify phar:', $e;
}
?>

以上例程会输出：

array(1) {
  ["bootstrap"]=>
  string(8) "file.php"
}

参见

  • Phar::setMetadata() - Sets phar archive meta-data
  • Phar::delMetadata() - Deletes the global metadata of the phar
  • Phar::hasMetadata() - Returns whether phar has global meta-data

Phar::extractTo
Phar::getModified
Phar


Return whether phar was modified

Phar::getMetadata
Phar::getSignature
Phar
PHP Manual

Phar::getModified

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::getModified — Return whether phar was modified

说明

public bool Phar::getModified ( void )

This method can be used to determine whether a phar has either had an internal file deleted, or contents of a file changed in some way.

参数

No parameters.

返回值

TRUE if the phar has been modified since opened, FALSE if not.

Phar::getMetadata
Phar::getSignature
Phar


Return MD5/SHA1/SHA256/SHA512/OpenSSL signature of a Phar archive

Phar::getModified
Phar::getStub
Phar
PHP Manual

Phar::getSignature

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::getSignature — Return MD5/SHA1/SHA256/SHA512/OpenSSL signature of a Phar archive

说明

public array Phar::getSignature ( void )

Returns the verification signature of a phar archive in a hexadecimal string.

参数

返回值

Array with the opened archive's signature in hash key and MD5, SHA-1, SHA-256, SHA-512, or OpenSSL in hash_type. This signature is a hash calculated on the entire phar's contents, and may be used to verify the integrity of the archive. A valid signature is absolutely required of all executable phar archives if the phar.require_hash INI variable is set to true.

Phar::getModified
Phar::getStub
Phar


Return the PHP loader or bootstrap stub of a Phar archive

Phar::getSignature
Phar::getSupportedCompression
Phar
PHP Manual

Phar::getStub

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::getStub — Return the PHP loader or bootstrap stub of a Phar archive

说明

public string Phar::getStub ( void )

Phar archives contain a bootstrap loader, or stub written in PHP that is executed when the archive is executed in PHP either via include:

<?php
include 'myphar.phar';
?>
or by simple execution:
php myphar.phar

返回值

Returns a string containing the contents of the bootstrap loader (stub) of the current Phar archive.

错误／异常

Throws RuntimeException if it is not possible to read the stub from the Phar archive.

范例

Example #1 A Phar::getStub() example

<?php
$p = new Phar('/path/to/my.phar', 0, 'my.phar');
echo $p->getStub();
echo "==NEXT==\n";
$p->setStub("<?php
function __autoload($class)
{
    include 'phar://' . str_replace('_', '/', $class);
}
Phar::mapPhar('myphar.phar');
include 'phar://myphar.phar/startup.php';
__HALT_COMPILER(); ?>");
echo $p->getStub();
?>

以上例程会输出：

<?php __HALT_COMPILER(); ?>
==NEXT==
<?php
function __autoload($class)
{
    include 'phar://' . str_replace('_', '/', $class);
}
Phar::mapPhar('myphar.phar');
include 'phar://myphar.phar/startup.php';
__HALT_COMPILER(); ?>

参见

  • Phar::setStub() - Used to set the PHP loader or bootstrap stub of a Phar archive
  • Phar::createDefaultStub() - Create a phar-file format specific stub

Phar::getSignature
Phar::getSupportedCompression
Phar


Return array of supported compression algorithms

Phar::getStub
Phar::getSupportedSignatures
Phar
PHP Manual

Phar::getSupportedCompression

(PHP >= 5.3.0, PECL phar >= 1.2.0)

Phar::getSupportedCompression — Return array of supported compression algorithms

说明

final public static array Phar::getSupportedCompression ( void )

参数

No parameters.

返回值

Returns an array containing any of Phar::GZ or Phar::BZ2, depending on the availability of the zlib extension or the bz2 extension.

参见

  • PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::isCompressed() - Returns whether the entry is compressed
  • PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
  • PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
  • Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression
  • Phar::decompress() - Decompresses the entire Phar archive
  • Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • Phar::compressFiles() - Compresses all files in the current Phar archive
  • Phar::decompressFiles() - Decompresses all files in the current Phar archive

Phar::getStub
Phar::getSupportedSignatures
Phar


Return array of supported signature types

Phar::getSupportedCompression
Phar::getVersion
Phar
PHP Manual

Phar::getSupportedSignatures

(PHP >= 5.3.0, PECL phar >= 1.1.0)

Phar::getSupportedSignatures — Return array of supported signature types

说明

final public static array Phar::getSupportedSignatures ( void )

Return array of supported signature types

参数

No parameters.

返回值

Returns an array containing any of MD5, SHA-1, SHA-256, SHA-512, or OpenSSL.

参见

  • Phar::getSignature() - Return MD5/SHA1/SHA256/SHA512/OpenSSL signature of a Phar archive
  • Phar::setSignatureAlgorithm() - set the signature algorithm for a phar and apply it.

Phar::getSupportedCompression
Phar::getVersion
Phar


Return version info of Phar archive

Phar::getSupportedSignatures
Phar::hasMetadata
Phar
PHP Manual

Phar::getVersion

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::getVersion — Return version info of Phar archive

说明

public string Phar::getVersion ( void )

Returns the API version of an opened Phar archive.

参数

返回值

The opened archive's API version. This is not to be confused with the API version that the loaded phar extension will use to create new phars. Each Phar archive has the API version hard-coded into its manifest. See Phar file format documentation for more information.

参见

  • Phar::apiVersion() - Returns the api version

Phar::getSupportedSignatures
Phar::hasMetadata
Phar


Returns whether phar has global meta-data

Phar::getVersion
Phar::interceptFileFuncs
Phar
PHP Manual

Phar::hasMetadata

(PHP >= 5.3.0, PECL phar >= 1.2.0)

Phar::hasMetadata — Returns whether phar has global meta-data

说明

public bool Phar::hasMetadata ( void )

Returns whether phar has global meta-data set.

参数

No parameters.

返回值

Returns TRUE if meta-data has been set, and FALSE if not.

范例

Example #1 A Phar::hasMetadata() example

<?php
try {
    $phar = new Phar('myphar.phar');
    var_dump($phar->hasMetadata());
    $phar->setMetadata(array('thing' => 'hi'));
    var_dump($phar->hasMetadata());
    $phar->delMetadata();
    var_dump($phar->hasMetadata());
} catch (Exception $e) {
    // handle error
}
?>

以上例程会输出：

bool(false)
bool(true)
bool(false)

参见

  • Phar::getMetadata() - Returns phar archive meta-data
  • Phar::setMetadata() - Sets phar archive meta-data
  • Phar::delMetadata() - Deletes the global metadata of the phar

Phar::getVersion
Phar::interceptFileFuncs
Phar


instructs phar to intercept fopen, file_get_contents, opendir, and all of the stat-related functions

Phar::hasMetadata
Phar::isBuffering
Phar
PHP Manual

Phar::interceptFileFuncs

(PHP >= 5.3.0, PECL phar >= 2.0.0)

Phar::interceptFileFuncs — instructs phar to intercept fopen, file_get_contents, opendir, and all of the stat-related functions

说明

final public static void Phar::interceptFileFuncs ( void )

instructs phar to intercept fopen(), readfile(), file_get_contents(), opendir(), and all of the stat-related functions. If any of these functions is called from within a phar archive with a relative path, the call is modified to access a file within the phar archive. Absolute paths are assumed to be attempts to load external files from the filesystem.

This function makes it possible to run PHP applications designed to run off of a hard disk as a phar application.

参数

No parameters.

返回值

范例

Example #1 A Phar::interceptFileFuncs() example

<?php
Phar::interceptFileFuncs();
include 'phar://' . __FILE__ . '/file.php';
?>

Assuming that this phar is at /path/to/myphar.phar and it contains file.php and file2.txt, if file.php contains this code:

Example #2 A Phar::interceptFileFuncs() example

<?php
echo file_get_contents('file2.txt');
?>

Normally PHP would search the current directory for file2.txt, which would translate as the directory of file.php, or the current directory of a command-line user. Phar::interceptFileFuncs() instructs PHP to consider the current directory to be phar:///path/to/myphar.phar/ and so opens phar:///path/to/myphar.phar/file2.txt in the above example code.

Phar::hasMetadata
Phar::isBuffering
Phar


Used to determine whether Phar write operations are being buffered, or are flushing directly to disk

Phar::interceptFileFuncs
Phar::isCompressed
Phar
PHP Manual

Phar::isBuffering

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::isBuffering — Used to determine whether Phar write operations are being buffered, or are flushing directly to disk

说明

public bool Phar::isBuffering ( void )

This method can be used to determine whether a Phar will save changes to disk immediately, or whether a call to Phar::stopBuffering() is needed to enable saving changes.

Phar write buffering is per-archive, buffering active for the foo.phar Phar archive does not affect changes to the bar.phar Phar archive.

返回值

Returns TRUE if the write operations are being buffer, FALSE otherwise.

范例

Example #1 A Phar::isBuffering() example

<?php
$p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
$p2 = new Phar('existingphar.phar');
$p['file1.txt'] = 'hi';
var_dump($p->isBuffering());
var_dump($p2->isBuffering());
?>
=2=
<?php
$p->startBuffering();
var_dump($p->isBuffering());
var_dump($p2->isBuffering());
$p->stopBuffering();
?>
=3=
<?php
var_dump($p->isBuffering());
var_dump($p2->isBuffering());
?>

以上例程会输出：

bool(false)
bool(false)
=2=
bool(true)
bool(false)
=3=
bool(false)
bool(false)

参见

  • Phar::startBuffering() - Start buffering Phar write operations, do not modify the Phar object on disk
  • Phar::stopBuffering() - Stop buffering write requests to the Phar archive, and save changes to disk

Phar::interceptFileFuncs
Phar::isCompressed
Phar


Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)

Phar::isBuffering
Phar::isFileFormat
Phar
PHP Manual

Phar::isCompressed

(PHP >= 5.3.0, PECL phar >= 2.0.0)

Phar::isCompressed — Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)

说明

public mixed Phar::isCompressed ( void )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on). Zip-based phar archives cannot be compressed as a file, and so this method will always return FALSE if a zip-based phar archive is queried.

参数

No parameters.

返回值

Phar::GZ, Phar::BZ2 or FALSE

范例

Example #1 A Phar::isCompressed() example

<?php
try {
    $phar1 = new Phar('myphar.zip.phar');
    var_dump($phar1->isCompressed());
    $phar2 = new Phar('myuncompressed.tar.phar');
    var_dump($phar2->isCompressed());
    $phar2->compress(Phar::GZ);
    var_dump($phar2->isCompressed() == Phar::GZ);
} catch (Exception $e) {
}
?>

以上例程会输出：

bool(false)
bool(false)
bool(true)

参见

  • PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::isCompressed() - Returns whether the entry is compressed
  • PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
  • PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
  • Phar::decompress() - Decompresses the entire Phar archive
  • Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression
  • Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::compressFiles() - Compresses all files in the current Phar archive
  • Phar::decompressFiles() - Decompresses all files in the current Phar archive
  • Phar::getSupportedCompression() - Return array of supported compression algorithms

Phar::isBuffering
Phar::isFileFormat
Phar


Returns true if the phar archive is based on the tar/phar/zip file format depending on the parameter

Phar::isCompressed
Phar::isValidPharFilename
Phar
PHP Manual

Phar::isFileFormat

(PHP >= 5.3.0, PECL phar >= 2.0.0)

Phar::isFileFormat — Returns true if the phar archive is based on the tar/phar/zip file format depending on the parameter

说明

public bool Phar::isFileFormat ( int $format )

参数

format

Either Phar::PHAR, Phar::TAR, or Phar::ZIP to test for the format of the archive.

返回值

Returns TRUE if the phar archive matches the file format requested by the parameter

错误／异常

PharException is thrown if the parameter is an unknown file format specifier.

参见

  • Phar::convertToExecutable() - Convert a phar archive to another executable phar archive file format
  • Phar::convertToData() - Convert a phar archive to a non-executable tar or zip file

Phar::isCompressed
Phar::isValidPharFilename
Phar


Returns whether the given filename is a valid phar filename

Phar::isFileFormat
Phar::isWritable
Phar
PHP Manual

Phar::isValidPharFilename

(PHP >= 5.3.0, PECL phar >= 1.2.0)

Phar::isValidPharFilename — Returns whether the given filename is a valid phar filename

说明

final public static bool Phar::isValidPharFilename ( string $filename [, bool $executable = true ] )

Returns whether the given filename is a valid phar filename that will be recognized as a phar archive by the phar extension. This can be used to test a name without having to instantiate a phar archive and catch the inevitable Exception that will be thrown if an invalid name is specified.

参数

filename

The name or full path to a phar archive not yet created

executable

This parameter determines whether the filename should be treated as a phar executable archive, or a data non-executable archive

返回值

Returns TRUE if the filename is valid, FALSE if not.

Phar::isFileFormat
Phar::isWritable
Phar


Returns true if the phar archive can be modified

Phar::isValidPharFilename
Phar::loadPhar
Phar
PHP Manual

Phar::isWritable

(Unknown)

Phar::isWritable — Returns true if the phar archive can be modified

说明

public bool Phar::isWritable ( void )

This method returns TRUE if phar.readonly is 0, and the actual phar archive on disk is not read-only.

参数

No parameters.

返回值

Returns TRUE if the phar archive can be modified

参见

  • Phar::canWrite() - Returns whether phar extension supports writing and creating phars
  • PharData::isWritable() - Returns true if the tar/zip archive can be modified

Phar::isValidPharFilename
Phar::loadPhar
Phar


Loads any phar archive with an alias

Phar::isWritable
Phar::mapPhar
Phar
PHP Manual

Phar::loadPhar

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::loadPhar — Loads any phar archive with an alias

说明

final public static bool Phar::loadPhar ( string $filename [, string $alias ] )

This can be used to read the contents of an external Phar archive. This is most useful for assigning an alias to a phar so that subsequent references to the phar can use the shorter alias, or for loading Phar archives that only contain data and are not intended for execution/inclusion in PHP scripts.

参数

filename

the full or relative path to the phar archive to open

alias

The alias that may be used to refer to the phar archive. Note that many phar archives specify an explicit alias inside the phar archive, and a PharException will be thrown if a new alias is specified in this case.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

PharException is thrown if an alias is passed in and the phar archive already has an explicit alias

范例

Example #1 A Phar::loadPhar() example

Phar::loadPhar can be used anywhere to load an external Phar archive, whereas Phar::mapPhar should be used in a loader stub for a Phar.

<?php
try {
    Phar::loadPhar('/path/to/phar.phar', 'my.phar');
    echo file_get_contents('phar://my.phar/file.txt');
} catch (PharException $e) {
    echo $e;
}
?>

参见

  • Phar::mapPhar() - Reads the currently executed file (a phar) and registers its manifest

Phar::isWritable
Phar::mapPhar
Phar


Reads the currently executed file (a phar) and registers its manifest

Phar::loadPhar
Phar::mount
Phar
PHP Manual

Phar::mapPhar

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::mapPhar — Reads the currently executed file (a phar) and registers its manifest

说明

final public static bool Phar::mapPhar ([ string $alias [, int $dataoffset = 0 ]] )

This static method can only be used inside a Phar archive's loader stub in order to initialize the phar when it is directly executed, or when it is included in another script.

参数

alias

The alias that can be used in phar:// URLs to refer to this archive, rather than its full path.

dataoffset

Unused variable, here for compatibility with PEAR's PHP_Archive.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

PharException is thrown if not called directly within PHP execution, if no __HALT_COMPILER(); token is found in the current source file, or if the file cannot be opened for reading.

范例

Example #1 A Phar::mapPhar() example

mapPhar should be used only inside a phar's loader stub. Use loadPhar to load an external phar into memory.

Here is a sample Phar loader stub that uses mapPhar.

<?php
function __autoload($class)
{
    include 'phar://me.phar/' . str_replace('_', '/', $class) . '.php';
}
try {
    Phar::mapPhar('me.phar');
    include 'phar://me.phar/startup.php';
} catch (PharException $e) {
    echo $e->getMessage();
    die('Cannot initialize Phar');
}
__HALT_COMPILER();

参见

  • Phar::loadPhar() - Loads any phar archive with an alias

Phar::loadPhar
Phar::mount
Phar


Mount an external path or file to a virtual location within the phar archive

Phar::mapPhar
Phar::mungServer
Phar
PHP Manual

Phar::mount

(PHP >= 5.3.0, PECL phar >= 2.0.0)

Phar::mount — Mount an external path or file to a virtual location within the phar archive

说明

final public static void Phar::mount ( string $pharpath , string $externalpath )

Much like the unix file system concept of mounting external devices to paths within the directory tree, Phar::mount() allows referring to external files and directories as if they were inside of an archive. This allows powerful abstraction such as referring to external configuration files as if they were inside the archive.

参数

pharpath

The internal path within the phar archive to use as the mounted path location. This must be a relative path within the phar archive, and must not already exist.

externalpath

A path or URL to an external file or directory to mount within the phar archive

返回值

No return. PharException is thrown on failure.

错误／异常

Throws PharException if any problems occur mounting the path.

范例

Example #1 A Phar::mount() example

The following example shows accessing an external configuration file as if it were a path within a phar archive.

First, the code inside of a phar archive:

<?php
$configuration = simplexml_load_string(file_get_contents(
    Phar::running(false) . '/config.xml'));
?>

Next the external code used to mount the configuration file:

<?php
// first set up the association between the abstract config.xml
// and the actual one on disk
Phar::mount('phar://config.xml', '/home/example/config.xml');
// now run the application
include '/path/to/archive.phar';
?>

Another method is to put the mounting code inside the stub of the phar archive. Here is an example of setting up a default configuration file if no user configuration is specified:

<?php
// first set up the association between the abstract config.xml
// and the actual one on disk
if (defined('EXTERNAL_CONFIG')) {
    Phar::mount('config.xml', EXTERNAL_CONFIG);
    if (file_exists(__DIR__ . '/extra_config.xml')) {
        Phar::mount('extra.xml', __DIR__ . '/extra_config.xml');
    }
} else {
    Phar::mount('config.xml', 'phar://' . __FILE__ . '/default_config.xml');
    Phar::mount('extra.xml', 'phar://' . __FILE__ . '/default_extra.xml');
}
// now run the application
include 'phar://' . __FILE__ . '/index.php';
__HALT_COMPILER();
?>

...and the code externally to load this phar archive:

<?php
define('EXTERNAL_CONFIG', '/home/example/config.xml');
// now run the application
include '/path/to/archive.phar';
?>

Phar::mapPhar
Phar::mungServer
Phar


Defines a list of up to 4 $_SERVER variables that should be modified for execution

Phar::mount
Phar::offsetExists
Phar
PHP Manual

Phar::mungServer

(Unknown)

Phar::mungServer — Defines a list of up to 4 $_SERVER variables that should be modified for execution

说明

final public static void Phar::mungServer ( array $munglist )

Phar::mungServer() should only be called within the stub of a phar archive.

Defines a list of up to 4 $_SERVER variables that should be modified for execution. Variables that can be modified to remove traces of phar execution are REQUEST_URI, PHP_SELF, SCRIPT_NAME and SCRIPT_FILENAME.

On its own, this method does nothing. Only when combined with Phar::webPhar() does it take effect, and only when the requested file is a PHP file to be parsed. Note that the PATH_INFO and PATH_TRANSLATED variables are always modified.

The original values of variables that are modified are stored in the SERVER array with PHAR_ prepended, so for instance SCRIPT_NAME would be saved as PHAR_SCRIPT_NAME.

参数

munglist

an array containing as string indices any of REQUEST_URI, PHP_SELF, SCRIPT_NAME and SCRIPT_FILENAME. Other values trigger an exception, and Phar::mungServer() is case-sensitive.

返回值

No return.

错误／异常

Throws UnexpectedValueException if any problems are found with the passed in data.

范例

Example #1 A Phar::mungServer() example

<?php
// example stub
Phar::mungServer(array('REQUEST_URI'));
Phar::webPhar();
__HALT_COMPILER();
?>

参见

  • Phar::webPhar() - mapPhar for web-based phars. front controller for web applications
  • Phar::setStub() - Used to set the PHP loader or bootstrap stub of a Phar archive

Phar::mount
Phar::offsetExists
Phar


determines whether a file exists in the phar

Phar::mungServer
Phar::offsetGet
Phar
PHP Manual

Phar::offsetExists

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::offsetExists — determines whether a file exists in the phar

说明

public bool Phar::offsetExists ( string $offset )

This is an implementation of the ArrayAccess interface allowing direct manipulation of the contents of a Phar archive using array access brackets.

offsetExists() is called whenever isset() is called.

参数

offset

The filename (relative path) to look for in a Phar.

返回值

Returns TRUE if the file exists within the phar, or FALSE if not.

范例

Example #1 A Phar::offsetExists() example

<?php
$p = new Phar(dirname(__FILE__) . '/my.phar', 0, 'my.phar');
$p['firstfile.txt'] = 'first file';
$p['secondfile.txt'] = 'second file';
// the next set of lines call offsetExists() indirectly
var_dump(isset($p['firstfile.txt']));
var_dump(isset($p['nothere.txt']));
?>

以上例程会输出：

bool(true)
bool(false)

参见

  • Phar::offsetGet() - Gets a PharFileInfo object for a specific file
  • Phar::offsetSet() - set the contents of an internal file to those of an external file
  • Phar::offsetUnset() - remove a file from a phar

Phar::mungServer
Phar::offsetGet
Phar


Gets a PharFileInfo object for a specific file

Phar::offsetExists
Phar::offsetSet
Phar
PHP Manual

Phar::offsetGet

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::offsetGet — Gets a PharFileInfo object for a specific file

说明

public int Phar::offsetGet ( string $offset )

This is an implementation of the ArrayAccess interface allowing direct manipulation of the contents of a Phar archive using array access brackets. Phar::offsetGet() is used for retrieving files from a Phar archive.

参数

offset

The filename (relative path) to look for in a Phar.

返回值

A PharFileInfo object is returned that can be used to iterate over a file's contents or to retrieve information about the current file.

错误／异常

This method throws BadMethodCallException if the file does not exist in the Phar archive.

范例

Example #1 Phar::offsetGet() example

As with all classes that implement the ArrayAccess interface, Phar::offsetGet() is automatically called when using the [] angle bracket operator.

<?php
$p = new Phar(dirname(__FILE__) . '/myphar.phar', 0, 'myphar.phar');
$p['exists.txt'] = "file exists\n";
try {
    // automatically calls offsetGet()
    echo $p['exists.txt'];
    echo $p['doesnotexist.txt'];
} catch (BadMethodCallException $e) {
    echo $e;
}
?>

以上例程会输出：

file exists
Entry doesnotexist.txt does not exist

参见

  • Phar::offsetExists() - determines whether a file exists in the phar
  • Phar::offsetSet() - set the contents of an internal file to those of an external file
  • Phar::offsetUnset() - remove a file from a phar

Phar::offsetExists
Phar::offsetSet
Phar


set the contents of an internal file to those of an external file

Phar::offsetGet
Phar::offsetUnset
Phar
PHP Manual

Phar::offsetSet

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::offsetSet — set the contents of an internal file to those of an external file

说明

public void Phar::offsetSet ( string $offset , string $value )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

This is an implementation of the ArrayAccess interface allowing direct manipulation of the contents of a Phar archive using array access brackets. offsetSet is used for modifying an existing file, or adding a new file to a Phar archive.

参数

offset

The filename (relative path) to modify in a Phar.

value

Content of the file.

返回值

No return values.

错误／异常

if phar.readonly is 1, BadMethodCallException is thrown, as modifying a Phar is only allowed when phar.readonly is set to 0. Throws PharException if there are any problems flushing changes made to the Phar archive to disk.

范例

Example #1 A Phar::offsetSet() example

offsetSet should not be accessed directly, but instead used via array access with the [] operator.

<?php
$p = new Phar('/path/to/my.phar', 0, 'my.phar');
try {
    // calls offsetSet
    $p['file.txt'] = 'Hi there';
} catch (Exception $e) {
    echo 'Could not modify file.txt:', $e;
}
?>

参见

  • Phar::offsetExists() - determines whether a file exists in the phar
  • Phar::offsetGet() - Gets a PharFileInfo object for a specific file
  • Phar::offsetUnset() - remove a file from a phar

Phar::offsetGet
Phar::offsetUnset
Phar


remove a file from a phar

Phar::offsetSet
Phar::running
Phar
PHP Manual

Phar::offsetUnset

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::offsetUnset — remove a file from a phar

说明

public bool Phar::offsetUnset ( string $offset )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

This is an implementation of the ArrayAccess interface allowing direct manipulation of the contents of a Phar archive using array access brackets. offsetUnset is used for deleting an existing file, and is called by the unset() language construct.

参数

offset

The filename (relative path) to modify in a Phar.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

if phar.readonly is 1, BadMethodCallException is thrown, as modifying a Phar is only allowed when phar.readonly is set to 0. Throws PharException if there are any problems flushing changes made to the Phar archive to disk.

范例

Example #1 A Phar::offsetUnset() example

<?php
$p = new Phar('/path/to/my.phar', 0, 'my.phar');
try {
    // deletes file.txt from my.phar by calling offsetUnset
    unset($p['file.txt']);
} catch (Exception $e) {
    echo 'Could not delete file.txt: ', $e;
}
?>

参见

  • Phar::offsetExists() - determines whether a file exists in the phar
  • Phar::offsetGet() - Gets a PharFileInfo object for a specific file
  • Phar::offsetSet() - set the contents of an internal file to those of an external file
  • Phar::unlinkArchive() - Completely remove a phar archive from disk and from memory
  • Phar::delete() - 删除 phar 档案中的一个文件

Phar::offsetSet
Phar::running
Phar


Returns the full path on disk or full phar URL to the currently executing Phar archive

Phar::offsetUnset
Phar::setAlias
Phar
PHP Manual

Phar::running

(PHP >= 5.3.0, PECL phar >= 2.0.0)

Phar::running — Returns the full path on disk or full phar URL to the currently executing Phar archive

说明

final public static string Phar::running ([ bool $retphar = true ] )

Returns the full path to the running phar archive. This is intended for use much like the __FILE__ magic constant, and only has effect inside an executing phar archive.

Inside the stub of an archive, Phar::running() returns "". Simply use __FILE__ to access the current running phar inside a stub.

参数

retphar

If FALSE, the full path on disk to the phar archive is returned. If TRUE, a full phar URL is returned.

返回值

Returns the filename if valid, empty string otherwise.

范例

Example #1 A Phar::running() example

For the following example, assume the phar archive is located at /path/to/phar/my.phar.

<?php
$a = Phar::running(); // $a is "phar:///path/to/my.phar"
$b = Phar::running(false); // $b is "/path/to/my.phar"
?>

Phar::offsetUnset
Phar::setAlias
Phar


Set the alias for the Phar archive

Phar::running
Phar::setDefaultStub
Phar
PHP Manual

Phar::setAlias

(PHP >= 5.3.0, PECL phar >= 1.2.1)

Phar::setAlias — Set the alias for the Phar archive

说明

public bool Phar::setAlias ( string $alias )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

Set the alias for the Phar archive, and write it as the permanent alias for this phar archive. An alias can be used internally to a phar archive to ensure that use of the phar stream wrapper to access internal files always works regardless of the location of the phar archive on the filesystem. Another alternative is to rely upon Phar's interception of include or to use Phar::interceptFileFuncs() and use relative paths.

参数

alias

A shorthand string that this archive can be referred to in phar stream wrapper access.

返回值

错误／异常

Throws UnexpectedValueException when write access is disabled, and PharException if the alias is already in use or any problems were encountered flushing changes to disk.

范例

Example #1 A Phar::setAlias() example

<?php
try {
    $phar = new Phar('myphar.phar');
    $phar->setAlias('myp.phar');
} catch (Exception $e) {
    // handle error
}
?>

参见

  • Phar::__construct() - Construct a Phar archive object
  • Phar::interceptFileFuncs() - instructs phar to intercept fopen, file_get_contents, opendir, and all of the stat-related functions

Phar::running
Phar::setDefaultStub
Phar


Used to set the PHP loader or bootstrap stub of a Phar archive to the default loader

Phar::setAlias
Phar::setMetadata
Phar
PHP Manual

Phar::setDefaultStub

(Unknown)

Phar::setDefaultStub — Used to set the PHP loader or bootstrap stub of a Phar archive to the default loader

说明

public bool Phar::setDefaultStub ([ string $index [, string $webindex ]] )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

This method is a convenience method that combines the functionality of Phar::createDefaultStub() and Phar::setStub().

参数

index

Relative path within the phar archive to run if accessed on the command-line

webindex

Relative path within the phar archive to run if accessed through a web browser

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

UnexpectedValueException is thrown if phar.readonly is enabled in php.ini. PharException is thrown if any problems are encountered flushing changes to disk.

范例

Example #1 A Phar::setDefaultStub() example

<?php
try {
    $phar = new Phar('myphar.phar');
    $phar->setDefaultStub('cli.php', 'web/index.php');
    // this is the same as:
    // $phar->setStub($phar->createDefaultStub('cli.php', 'web/index.php'));
} catch (Exception $e) {
    // handle errors
}
?>

参见

  • Phar::setStub() - Used to set the PHP loader or bootstrap stub of a Phar archive
  • Phar::createDefaultStub() - Create a phar-file format specific stub

Phar::setAlias
Phar::setMetadata
Phar


Sets phar archive meta-data

Phar::setDefaultStub
Phar::setSignatureAlgorithm
Phar
PHP Manual

Phar::setMetadata

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::setMetadata — Sets phar archive meta-data

说明

public void Phar::setMetadata ( mixed $metadata )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

Phar::setMetadata() should be used to store customized data that describes something about the phar archive as a complete entity. PharFileInfo::setMetadata() should be used for file-specific meta-data. Meta-data can slow down the performance of loading a phar archive if the data is large.

Some possible uses for meta-data include specifying which file within the archive should be used to bootstrap the archive, or the location of a file manifest like » PEAR's package.xml file. However, any useful data that describes the phar archive may be stored.

参数

metadata

Any PHP variable containing information to store that describes the phar archive

返回值

没有返回值。

范例

Example #1 A Phar::setMetadata() example

<?php
// make sure it doesn't exist
@unlink('brandnewphar.phar');
try {
    $p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
    $p['file.php'] = '<?php echo "hello"';
    $p->setMetadata(array('bootstrap' => 'file.php'));
    var_dump($p->getMetadata());
} catch (Exception $e) {
    echo 'Could not create and/or modify phar:', $e;
}
?>

以上例程会输出：

array(1) {
  ["bootstrap"]=>
  string(8) "file.php"
}

参见

  • Phar::getMetadata() - Returns phar archive meta-data
  • Phar::delMetadata() - Deletes the global metadata of the phar
  • Phar::hasMetadata() - Returns whether phar has global meta-data

Phar::setDefaultStub
Phar::setSignatureAlgorithm
Phar


set the signature algorithm for a phar and apply it.

Phar::setMetadata
Phar::setStub
Phar
PHP Manual

Phar::setSignatureAlgorithm

(PHP >= 5.3.0, PECL phar >= 1.1.0)

Phar::setSignatureAlgorithm — set the signature algorithm for a phar and apply it.

说明

public void Phar::setSignatureAlgorithm ( int $sigtype [, string $privatekey ] )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

set the signature algorithm for a phar and apply it. The signature algorithm must be one of Phar::MD5, Phar::SHA1, Phar::SHA256, Phar::SHA512, or Phar::OPENSSL.

Note that all executable phar archives have a signature created automatically, SHA1 by default. data tar- or zip-based archives (archives created with the PharData class) must have their signature created and set explicitly via Phar::setSignatureAlgorithm().

参数

sigtype

    One of Phar::MD5,
Phar::SHA1, Phar::SHA256,
Phar::SHA512, or Phar::OPENSSL

privatekey

The contents of an OpenSSL private key, as extracted from a certificate or OpenSSL key file:

<?php
$private = openssl_get_privatekey(file_get_contents('private.pem'));
$pkey = '';
openssl_pkey_export($private, $pkey);
$p->setSignatureAlgorithm(Phar::OPENSSL, $pkey);
?>
See phar introduction for instructions on naming and placement of the public key file.

返回值

没有返回值。

错误／异常

Throws UnexpectedValueException for many errors, and a PharException if any problems occur flushing changes to disk.

参见

  • Phar::getSupportedSignatures() - Return array of supported signature types
  • Phar::getSignature() - Return MD5/SHA1/SHA256/SHA512/OpenSSL signature of a Phar archive

Phar::setMetadata
Phar::setStub
Phar


Used to set the PHP loader or bootstrap stub of a Phar archive

Phar::setSignatureAlgorithm
Phar::startBuffering
Phar
PHP Manual

Phar::setStub

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::setStub — Used to set the PHP loader or bootstrap stub of a Phar archive

说明

public bool Phar::setStub ( string $stub [, int $len = -1 ] )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

This method is used to add a PHP bootstrap loader stub to a new Phar archive, or to replace the loader stub in an existing Phar archive.

The loader stub for a Phar archive is used whenever an archive is included directly as in this example:

<?php
include 'myphar.phar';
?>

The loader is not accessed when including a file through the phar stream wrapper like so:

<?php
include 'phar://myphar.phar/somefile.php';
?>

参数

stub

A string or an open stream handle to use as the executable stub for this phar archive.

len

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

UnexpectedValueException is thrown if phar.readonly is enabled in php.ini. PharException is thrown if any problems are encountered flushing changes to disk.

范例

Example #1 A Phar::setStub() example

<?php
try {
    $p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
    $p['a.php'] = '<?php var_dump("Hello");';
    $p->setStub('<?php var_dump("First"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>');
    include 'phar://brandnewphar.phar/a.php';
    var_dump($p->getStub());
    $p['b.php'] = '<?php var_dump("World");';
    $p->setStub('<?php var_dump("Second"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>');
    include 'phar://brandnewphar.phar/b.php';
    var_dump($p->getStub());
} catch (Exception $e) {
    echo 'Write operations failed on brandnewphar.phar: ', $e;
}
?>

以上例程会输出：

string(5) "Hello"
string(82) "<?php var_dump("First"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>"
string(5) "World"
string(83) "<?php var_dump("Second"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>"

更新日志

版本 | 说明
5.4.0 | Added len parameter.

参见

  • Phar::getStub() - Return the PHP loader or bootstrap stub of a Phar archive
  • Phar::createDefaultStub() - Create a phar-file format specific stub

Phar::setSignatureAlgorithm
Phar::startBuffering
Phar


Start buffering Phar write operations, do not modify the Phar object on disk

Phar::setStub
Phar::stopBuffering
Phar
PHP Manual

Phar::startBuffering

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::startBuffering — Start buffering Phar write operations, do not modify the Phar object on disk

说明

public void Phar::startBuffering ( void )

Although technically unnecessary, the Phar::startBuffering() method can provide a significant performance boost when creating or modifying a Phar archive with a large number of files. Ordinarily, every time a file within a Phar archive is created or modified in any way, the entire Phar archive will be recreated with the changes. In this way, the archive will be up-to-date with the activity performed on it.

However, this can be unnecessary when simply creating a new Phar archive, when it would make more sense to write the entire archive out at once. Similarly, it is often necessary to make a series of changes and to ensure that they all are possible before making any changes on disk, similar to the relational database concept of transactions. the Phar::startBuffering()/Phar::stopBuffering() pair of methods is provided for this purpose.

Phar write buffering is per-archive, buffering active for the foo.phar Phar archive does not affect changes to the bar.phar Phar archive.

返回值

没有返回值。

范例

Example #1 A Phar::startBuffering() example

<?php
// make sure it doesn't exist
@unlink('brandnewphar.phar');
try {
    $p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
} catch (Exception $e) {
    echo 'Could not create phar:', $e;
}
echo 'The new phar has ' . $p->count() . " entries\n";
$p->startBuffering();
$p['file.txt'] = 'hi';
$p['file2.txt'] = 'there';
$p['file2.txt']->setCompressedGZ();
$p['file3.txt'] = 'babyface';
$p['file3.txt']->setMetadata(42);
$p->setStub("<?php
function __autoload($class)
{
    include 'phar://myphar.phar/' . str_replace('_', '/', $class) . '.php';
}
Phar::mapPhar('myphar.phar');
include 'phar://myphar.phar/startup.php';
__HALT_COMPILER();");
$p->stopBuffering();
?>

参见

  • Phar::stopBuffering() - Stop buffering write requests to the Phar archive, and save changes to disk
  • Phar::isBuffering() - Used to determine whether Phar write operations are being buffered, or are flushing directly to disk

Phar::setStub
Phar::stopBuffering
Phar


Stop buffering write requests to the Phar archive, and save changes to disk

Phar::startBuffering
Phar::uncompressAllFiles
Phar
PHP Manual

Phar::stopBuffering

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::stopBuffering — Stop buffering write requests to the Phar archive, and save changes to disk

说明

public void Phar::stopBuffering ( void )

Phar::stopBuffering() is used in conjunction with the Phar::startBuffering() method. Phar::startBuffering() can provide a significant performance boost when creating or modifying a Phar archive with a large number of files. Ordinarily, every time a file within a Phar archive is created or modified in any way, the entire Phar archive will be recreated with the changes. In this way, the archive will be up-to-date with the activity performed on it.

However, this can be unnecessary when simply creating a new Phar archive, when it would make more sense to write the entire archive out at once. Similarly, it is often necessary to make a series of changes and to ensure that they all are possible before making any changes on disk, similar to the relational database concept of transactions. The Phar::startBuffering()/Phar::stopBuffering() pair of methods is provided for this purpose.

Phar write buffering is per-archive, buffering active for the foo.phar Phar archive does not affect changes to the bar.phar Phar archive.

返回值

没有返回值。

错误／异常

PharException is thrown if any problems are encountered flushing changes to disk.

范例

Example #1 A Phar::stopBuffering() example

<?php
$p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
$p['file1.txt'] = 'hi';
$p->startBuffering();
var_dump($p->getStub());
$p->setStub("<?php
function __autoload(\$class)
{
    include 'phar://brandnewphar.phar/' . str_replace('_', '/', \$class) . '.php';
}
Phar::mapPhar('brandnewphar.phar');
include 'phar://brandnewphar.phar/startup.php';
__HALT_COMPILER();");
$p->stopBuffering();
var_dump($p->getStub());
?>

以上例程会输出：

string(24) "<?php __HALT_COMPILER();"
string(195) "<?php
function __autoload($class)
{
    include 'phar://' . str_replace('_', '/', $class);
}
Phar::mapPhar('brandnewphar.phar');
include 'phar://brandnewphar.phar/startup.php';
__HALT_COMPILER();"

参见

  • Phar::startBuffering() - Start buffering Phar write operations, do not modify the Phar object on disk
  • Phar::isBuffering() - Used to determine whether Phar write operations are being buffered, or are flushing directly to disk

Phar::startBuffering
Phar::uncompressAllFiles
Phar


Uncompresses all files in the current Phar archive

Phar::stopBuffering
Phar::unlinkArchive
Phar
PHP Manual

Phar::uncompressAllFiles

(PECL phar < 2.0.0)

Phar::uncompressAllFiles — Uncompresses all files in the current Phar archive

说明

public bool Phar::uncompressAllFiles ( void )

Note:

此方法已经从 phar 扩展 2.0.0以上版本中删除。可使用 Phar::compress()，Phar::decompress()，Phar::compressFiles() 和 Phar::decompressFiles()替代。

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

This method decompresses all files in the Phar archive. If any files are already compressed using gzip compression, the zlib extension must be enabled in order to decompress the files, and any files compressed using bzip2 compression require the bzip2 extension to decompress the files. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Throws BadMethodCallException if the phar.readonly INI variable is on, the bzip2 extension is not enabled and any files are compressed using bzip2 compression, or if any files are compressed using gzip compression and the zlib extension is not enabled.

范例

Example #1 A Phar::uncompressAllFiles() example

<?php
try {
    $p = new Phar('/path/to/my.phar', 0, 'my.phar');
    $p['myfile.txt'] = 'hi';
    $p['myfile2.txt'] = 'hi';
    $p->compressAllFilesGZ();
    foreach ($p as $file) {
        var_dump($file->getFileName());
        var_dump($file->isCompressed());
        var_dump($file->isCompressedBZIP2());
        var_dump($file->isCompressedGZ());
    }
    $p->uncompressAllFiles();
    foreach ($p as $file) {
        var_dump($file->getFileName());
        var_dump($file->isCompressed());
        var_dump($file->isCompressedBZIP2());
        var_dump($file->isCompressedGZ());
    }
} catch (Exception $e) {
    echo 'Write operations failed on my.phar: ', $e;
}
?>

以上例程会输出：

string(10) "myfile.txt"
bool(true)
bool(false)
bool(true)
string(11) "myfile2.txt"
bool(true)
bool(false)
bool(true)
string(10) "myfile.txt"
bool(false)
bool(false)
bool(false)
string(11) "myfile2.txt"
bool(false)
bool(false)
bool(false)

参见

  • PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::isCompressedBZIP2() - Returns whether the entry is compressed using bzip2
  • PharFileInfo::isCompressed() - Returns whether the entry is compressed
  • PharFileInfo::isCompressedGZ() - Returns whether the entry is compressed using gz
  • PharFileInfo::setCompressedBZIP2() - Compresses the current Phar entry within the phar using Bzip2 compression
  • PharFileInfo::setUncompressed() - Uncompresses the current Phar entry within the phar, if it is compressed
  • PharFileInfo::setCompressedGZ() - Compresses the current Phar entry within the phar using gz compression
  • Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • Phar::compressAllFilesBZIP2() - Compresses all files in the current Phar archive using Bzip2 compression
  • Phar::compressAllFilesGZ() - Compresses all files in the current Phar archive using Gzip compression
  • Phar::getSupportedCompression() - Return array of supported compression algorithms

Phar::stopBuffering
Phar::unlinkArchive
Phar


Completely remove a phar archive from disk and from memory

Phar::uncompressAllFiles
Phar::webPhar
Phar
PHP Manual

Phar::unlinkArchive

(PHP >= 5.3.0, PECL phar >= 2.0.0)

Phar::unlinkArchive — Completely remove a phar archive from disk and from memory

说明

final public static bool Phar::unlinkArchive ( string $archive )

Removes a phar archive from disk and memory.

参数

archive

The path on disk to the phar archive.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

PharException is thrown if there are any open file pointers to the phar archive, or any existing Phar, PharData, or PharFileInfo objects referring to the phar archive.

范例

Example #1 A Phar::unlinkArchive() example

<?php
// simple usage
Phar::unlinkArchive('/path/to/my.phar');

// more common example:
$p = new Phar('my.phar');
$fp = fopen('phar://my.phar/file.txt', 'r');
// this creates 'my.phar.gz'
$gp = $p->compress(Phar::GZ);
// remove all references to the archive
unset($p);
fclose($fp);
// now remove all traces of the archive
Phar::unlinkArchive('my.phar');
?>

参见

  • Phar::delete() - 删除 phar 档案中的一个文件
  • Phar::offsetUnset() - remove a file from a phar

Phar::uncompressAllFiles
Phar::webPhar
Phar


mapPhar for web-based phars. front controller for web applications

Phar::unlinkArchive
PharData
Phar
PHP Manual

Phar::webPhar

(PHP >= 5.3.0, PECL phar >= 2.0.0)

Phar::webPhar — mapPhar for web-based phars. front controller for web applications

说明

final public static void Phar::webPhar ([ string $alias [, string $index = "index.php" [, string $f404 [, array $mimetypes [, callable $rewrites ]]]]] )

Phar::mapPhar() for web-based phars. This method parses $_SERVER['REQUEST_URI'] and routes a request from a web browser to an internal file within the phar archive. In essence, it simulates a web server, routing requests to the correct file, echoing the correct headers and parsing PHP files as needed. This powerful method is part of what makes it easy to convert an existing PHP application into a phar archive. Combined with Phar::mungServer() and Phar::interceptFileFuncs(), any web application can be used unmodified from a phar archive.

Phar::webPhar() should only be called from the stub of a phar archive (see here for more information on what a stub is).

参数

alias

The alias that can be used in phar:// URLs to refer to this archive, rather than its full path.

index

The location within the phar of the directory index.

f404

The location of the script to run when a file is not found. This script should output the proper HTTP 404 headers.

mimetypes

An array mapping additional file extensions to MIME type. If the default mapping is sufficient, pass an empty array. By default, these extensions are mapped to these MIME types:

<?php
$mimes = array(
    'phps' => Phar::PHPS, // pass to highlight_file()
    'c' => 'text/plain',
    'cc' => 'text/plain',
    'cpp' => 'text/plain',
    'c++' => 'text/plain',
    'dtd' => 'text/plain',
    'h' => 'text/plain',
    'log' => 'text/plain',
    'rng' => 'text/plain',
    'txt' => 'text/plain',
    'xsd' => 'text/plain',
    'php' => Phar::PHP, // parse as PHP
    'inc' => Phar::PHP, // parse as PHP
    'avi' => 'video/avi',
    'bmp' => 'image/bmp',
    'css' => 'text/css',
    'gif' => 'image/gif',
    'htm' => 'text/html',
    'html' => 'text/html',
    'htmls' => 'text/html',
    'ico' => 'image/x-ico',
    'jpe' => 'image/jpeg',
    'jpg' => 'image/jpeg',
    'jpeg' => 'image/jpeg',
    'js' => 'application/x-javascript',
    'midi' => 'audio/midi',
    'mid' => 'audio/midi',
    'mod' => 'audio/mod',
    'mov' => 'movie/quicktime',
    'mp3' => 'audio/mp3',
    'mpg' => 'video/mpeg',
    'mpeg' => 'video/mpeg',
    'pdf' => 'application/pdf',
    'png' => 'image/png',
    'swf' => 'application/shockwave-flash',
    'tif' => 'image/tiff',
    'tiff' => 'image/tiff',
    'wav' => 'audio/wav',
    'xbm' => 'image/xbm',
    'xml' => 'text/xml',
);
?>

rewrites

The rewrites function is passed a string as its only parameter and must return a string or FALSE.

If you are using fast-cgi or cgi then the parameter passed to the function is the value of the $_SERVER['PATH_INFO'] variable. Otherwise, the parameter passed to the function is the value of the $_SERVER['REQUEST_URI'] variable.

If a string is returned it is used as the internal file path. If FALSE is returned then webPhar() will send a HTTP 403 Denied Code.

返回值

没有返回值。

错误／异常

Throws PharException when unable to open the internal file to output, or if called from a non-stub. If an invalid array value is passed into mimetypes or an invalid callback is passed into rewrites, then UnexpectedValueException is thrown.

范例

Example #1 A Phar::webPhar() example

With the example below, the created phar will display Hello World if one browses to /myphar.phar/index.php or to /myphar.phar, and will display the source of index.phps if one browses to /myphar.phar/index.phps.

<?php
// creating the phar archive:
try {
    $phar = new Phar('myphar.phar');
    $phar['index.php'] = '<?php echo "Hello World"; ?>';
    $phar['index.phps'] = '<?php echo "Hello World"; ?>';
    $phar->setStub('<?php
Phar::webPhar();
__HALT_COMPILER(); ?>');
} catch (Exception $e) {
    // handle error here
}
?>

参见

  • Phar::mungServer() - Defines a list of up to 4 $_SERVER variables that should be modified for execution
  • Phar::interceptFileFuncs() - instructs phar to intercept fopen, file_get_contents, opendir, and all of the stat-related functions

Phar::unlinkArchive
PharData
Phar


The PharData class

(PHP >= 5.3.0, PECL phar >= 2.0.0)

简介

The PharData class provides a high-level interface to accessing and creating non-executable tar and zip archives. Because these archives do not contain a stub and cannot be executed by the phar extension, it is possible to create and manipulate regular zip and tar files using the PharData class even if phar.readonly php.ini setting is 1.

类摘要

PharData extends Phar {
/* 方法 */
bool addEmptyDir ( string $dirname )
public void Phar::addFile ( string $file [, string $localname ] )
bool addFromString ( string $localname , string $contents )
public array Phar::buildFromDirectory ( string $base_dir [, string $regex ] )
array buildFromIterator ( Iterator $iter [, string $base_directory ] )
object compress ( int $compression [, string $extension ] )
bool compressFiles ( int $compression )
__construct ( string $fname [, int $flags [, string $alias [, int $format = Phar::TAR ]]] )
PharData convertToData ([ int $format [, int $compression [, string $extension ]]] )
Phar convertToExecutable ([ int $format [, int $compression [, string $extension ]]] )
bool copy ( string $oldfile , string $newfile )
object decompress ([ string $extension ] )
bool decompressFiles ( void )
bool delMetadata ( void )
bool delete ( string $entry )
bool extractTo ( string $pathto [, string|array $files [, bool $overwrite = false ]] )
bool isWritable ( void )
void offsetSet ( string $offset , string $value )
bool offsetUnset ( string $offset )
bool setAlias ( string $alias )
bool setDefaultStub ([ string $index [, string $webindex ]] )
public void Phar::setMetadata ( mixed $metadata )
public void Phar::setSignatureAlgorithm ( int $sigtype )
bool setStub ( string $stub [, int $len = -1 ] )
/* 继承的方法 */
public void Phar::addEmptyDir ( string $dirname )
public void Phar::addFile ( string $file [, string $localname ] )
public void Phar::addFromString ( string $localname , string $contents )
final public static string Phar::apiVersion ( void )
public array Phar::buildFromDirectory ( string $base_dir [, string $regex ] )
public array Phar::buildFromIterator ( Iterator $iter [, string $base_directory ] )
final public static bool Phar::canCompress ([ int $type = 0 ] )
final public static bool Phar::canWrite ( void )
public object Phar::compress ( int $compression [, string $extension ] )
public bool Phar::compressAllFilesBZIP2 ( void )
public bool Phar::compressAllFilesGZ ( void )
public void Phar::compressFiles ( int $compression )
public Phar::__construct ( string $fname [, int $flags [, string $alias ]] )
public PharData Phar::convertToData ([ int $format = 9021976 [, int $compression = 9021976 [, string $extension ]]] )
public Phar Phar::convertToExecutable ([ int $format = 9021976 [, int $compression = 9021976 [, string $extension ]]] )
public bool Phar::copy ( string $oldfile , string $newfile )
public int Phar::count ( void )
final public static string Phar::createDefaultStub ([ string $indexfile [, string $webindexfile ]] )
public object Phar::decompress ([ string $extension ] )
public bool Phar::decompressFiles ( void )
public bool Phar::delMetadata ( void )
public bool Phar::delete ( string $entry )
public bool Phar::extractTo ( string $pathto [, string|array $files [, bool $overwrite = false ]] )
public mixed Phar::getMetadata ( void )
public bool Phar::getModified ( void )
public array Phar::getSignature ( void )
public string Phar::getStub ( void )
final public static array Phar::getSupportedCompression ( void )
final public static array Phar::getSupportedSignatures ( void )
public string Phar::getVersion ( void )
public bool Phar::hasMetadata ( void )
final public static void Phar::interceptFileFuncs ( void )
public bool Phar::isBuffering ( void )
public mixed Phar::isCompressed ( void )
public bool Phar::isFileFormat ( int $format )
final public static bool Phar::isValidPharFilename ( string $filename [, bool $executable = true ] )
public bool Phar::isWritable ( void )
final public static bool Phar::loadPhar ( string $filename [, string $alias ] )
final public static bool Phar::mapPhar ([ string $alias [, int $dataoffset = 0 ]] )
final public static void Phar::mount ( string $pharpath , string $externalpath )
final public static void Phar::mungServer ( array $munglist )
public bool Phar::offsetExists ( string $offset )
public int Phar::offsetGet ( string $offset )
public void Phar::offsetSet ( string $offset , string $value )
public bool Phar::offsetUnset ( string $offset )
final public static string Phar::running ([ bool $retphar = true ] )
public bool Phar::setAlias ( string $alias )
public bool Phar::setDefaultStub ([ string $index [, string $webindex ]] )
public void Phar::setMetadata ( mixed $metadata )
public void Phar::setSignatureAlgorithm ( int $sigtype [, string $privatekey ] )
public bool Phar::setStub ( string $stub [, int $len = -1 ] )
public void Phar::startBuffering ( void )
public void Phar::stopBuffering ( void )
public bool Phar::uncompressAllFiles ( void )
final public static bool Phar::unlinkArchive ( string $archive )
final public static void Phar::webPhar ([ string $alias [, string $index = "index.php" [, string $f404 [, array $mimetypes [, callable $rewrites ]]]]] )
}

Table of Contents

  • PharData::addEmptyDir — Add an empty directory to the tar/zip archive
  • PharData::addFile — Add a file from the filesystem to the tar/zip archive
  • PharData::addFromString — Add a file from the filesystem to the tar/zip archive
  • PharData::buildFromDirectory — Construct a tar/zip archive from the files within a directory.
  • PharData::buildFromIterator — Construct a tar or zip archive from an iterator.
  • PharData::compress — Compresses the entire tar/zip archive using Gzip or Bzip2 compression
  • PharData::compressFiles — Compresses all files in the current tar/zip archive
  • PharData::__construct — Construct a non-executable tar or zip archive object
  • PharData::convertToData — Convert a phar archive to a non-executable tar or zip file
  • PharData::convertToExecutable — Convert a non-executable tar/zip archive to an executable phar archive
  • PharData::copy — Copy a file internal to the phar archive to another new file within the phar
  • PharData::decompress — Decompresses the entire Phar archive
  • PharData::decompressFiles — Decompresses all files in the current zip archive
  • PharData::delMetadata — Deletes the global metadata of a zip archive
  • PharData::delete — Delete a file within a tar/zip archive
  • PharData::extractTo — Extract the contents of a tar/zip archive to a directory
  • PharData::isWritable — Returns true if the tar/zip archive can be modified
  • PharData::offsetSet — set the contents of a file within the tar/zip to those of an external file or string
  • PharData::offsetUnset — remove a file from a tar/zip archive
  • PharData::setAlias — dummy function (Phar::setAlias is not valid for PharData)
  • PharData::setDefaultStub — dummy function (Phar::setDefaultStub is not valid for PharData)
  • Phar::setMetadata — Sets phar archive meta-data
  • Phar::setSignatureAlgorithm — set the signature algorithm for a phar and apply it.
  • PharData::setStub — dummy function (Phar::setStub is not valid for PharData)
Phar::webPhar
PharData::addEmptyDir
Phar


Add an empty directory to the tar/zip archive

PharData
PharData::addFile
PharData
PHP Manual

PharData::addEmptyDir

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::addEmptyDir — Add an empty directory to the tar/zip archive

说明

bool PharData::addEmptyDir ( string $dirname )

With this method, an empty directory is created with path dirname. This method is similar to ZipArchive::addEmptyDir().

参数

dirname

The name of the empty directory to create in the phar archive

返回值

no return value, exception is thrown on failure.

范例

Example #1 A PharData::addEmptyDir() example

<?php
try {
    $a = new PharData('/path/to/my.tar');

    $a->addEmptyDir('/full/path/to/file');
    // demonstrates how this file is stored
    $b = $a['full/path/to/file']->isDir();
} catch (Exception $e) {
    // handle errors here
}
?>

参见

  • Phar::addEmptyDir() - 添加一个空目录到 phar 档案
  • PharData::addFile() - Add a file from the filesystem to the tar/zip archive
  • PharData::addFromString() - Add a file from the filesystem to the tar/zip archive

PharData
PharData::addFile
PharData


Add a file from the filesystem to the tar/zip archive

PharData::addEmptyDir
PharData::addFromString
PharData
PHP Manual

PharData::addFile

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::addFile — Add a file from the filesystem to the tar/zip archive

说明

public void Phar::addFile ( string $file [, string $localname ] )

With this method, any file or URL can be added to the tar/zip archive. If the optional second parameter localname is specified, the file will be stored in the archive with that name, otherwise the file parameter is used as the path to store within the archive. URLs must have a localname or an exception is thrown. This method is similar to ZipArchive::addFile().

参数

file

Full or relative path to a file on disk to be added to the phar archive.

localname

Path that the file will be stored in the archive.

返回值

no return value, exception is thrown on failure.

范例

Example #1 A PharData::addFile() example

<?php
try {
    $a = new PharData('/path/to/my.tar');

    $a->addFile('/full/path/to/file');
    // demonstrates how this file is stored
    $b = $a['full/path/to/file']->getContent();

    $a->addFile('/full/path/to/file', 'my/file.txt');
    $c = $a['my/file.txt']->getContent();

    // demonstrate URL usage
    $a->addFile('http://www.example.com', 'example.html');
} catch (Exception $e) {
    // handle errors here
}
?>

参见

  • PharData::offsetSet() - set the contents of a file within the tar/zip to those of an external file or string
  • Phar::addFile() - 将一个文件从文件系统添加到 phar 档案中
  • PharData::addFromString() - Add a file from the filesystem to the tar/zip archive
  • PharData::addEmptyDir() - Add an empty directory to the tar/zip archive

PharData::addEmptyDir
PharData::addFromString
PharData


Add a file from the filesystem to the tar/zip archive

PharData::addFile
PharData::buildFromDirectory
PharData
PHP Manual

PharData::addFromString

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::addFromString — Add a file from the filesystem to the tar/zip archive

说明

bool PharData::addFromString ( string $localname , string $contents )

With this method, any string can be added to the tar/zip archive. The file will be stored in the archive with localname as its path. This method is similar to ZipArchive::addFromString().

参数

localname

Path that the file will be stored in the archive.

contents

The file contents to store

返回值

no return value, exception is thrown on failure.

范例

Example #1 A PharData::addFromString() example

<?php
try {
    $a = new PharData('/path/to/my.tar');

    $a->addFromString('path/to/file.txt', 'my simple file');
    $b = $a['path/to/file.txt']->getContent();

    // to add contents from a stream handle for large files, use offsetSet()
    $c = fopen('/path/to/hugefile.bin');
    $a['largefile.bin'] = $c;
    fclose($c);
} catch (Exception $e) {
    // handle errors here
}
?>

参见

  • PharData::offsetSet() - set the contents of a file within the tar/zip to those of an external file or string
  • Phar::addFromString() - 以字符串的形式添加一个文件到 phar 档案
  • PharData::addFile() - Add a file from the filesystem to the tar/zip archive
  • PharData::addEmptyDir() - Add an empty directory to the tar/zip archive

PharData::addFile
PharData::buildFromDirectory
PharData


Construct a tar/zip archive from the files within a directory.

PharData::addFromString
PharData::buildFromIterator
PharData
PHP Manual

PharData::buildFromDirectory

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::buildFromDirectory — Construct a tar/zip archive from the files within a directory.

说明

public array Phar::buildFromDirectory ( string $base_dir [, string $regex ] )

Populate a tar/zip archive from directory contents. The optional second parameter is a regular expression (pcre) that is used to exclude files. Any filename that matches the regular expression will be included, all others will be excluded. For more fine-grained control, use PharData::buildFromIterator().

参数

base_dir

The full or relative path to the directory that contains all files to add to the archive.

regex

An optional pcre regular expression that is used to filter the list of files. Only file paths matching the regular expression will be included in the archive.

返回值

Phar::buildFromDirectory() returns an associative array mapping internal path of file to the full path of the file on the filesystem.

错误／异常

This method throws BadMethodCallException when unable to instantiate the internal directory iterators, or a PharException if there were errors saving the phar archive.

范例

Example #1 A PharData::buildFromDirectory() example

<?php
$phar = new PharData('project.tar');
// add all files in the project
$phar->buildFromDirectory(dirname(__FILE__) . '/project');

$phar2 = new PharData('project2.zip');
// add all files in the project, only include php files
$phar2->buildFromDirectory(dirname(__FILE__) . '/project', '/\.php$/');
?>

参见

  • Phar::buildFromDirectory() - Construct a phar archive from the files within a directory.
  • PharData::buildFromIterator() - Construct a tar or zip archive from an iterator.

PharData::addFromString
PharData::buildFromIterator
PharData


Construct a tar or zip archive from an iterator.

PharData::buildFromDirectory
PharData::compress
PharData
PHP Manual

PharData::buildFromIterator

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::buildFromIterator — Construct a tar or zip archive from an iterator.

说明

array PharData::buildFromIterator ( Iterator $iter [, string $base_directory ] )

Populate a tar or zip archive from an iterator. Two styles of iterators are supported, iterators that map the filename within the tar/zip to the name of a file on disk, and iterators like DirectoryIterator that return SplFileInfo objects. For iterators that return SplFileInfo objects, the second parameter is required.

范例

Example #1 A PharData::buildFromIterator() with SplFileInfo

For most tar/zip archives, the archive will reflect an actual directory layout, and the second style is the most useful. For instance, to create a tar/zip archive containing the files in this sample directory layout:

/path/to/project/
                 config/
                        dist.xml
                        debug.xml
                 lib/
                     file1.php
                     file2.php
                 src/
                     processthing.php
                 www/
                     index.php
                 cli/
                     index.php

This code could be used to add these files to the "project.tar" tar archive:

<?php
$phar = new PharData('project.tar');
$phar->buildFromIterator(
    new RecursiveIteratorIterator(
     new RecursiveDirectoryIterator('/path/to/project')),
    '/path/to/project');
?>

The file project.tar can then be used immediately. PharData::buildFromIterator() does not set values such as compression, metadata, and this can be done after creating the tar/zip archive.

As an interesting note, PharData::buildFromIterator() can also be used to copy the contents of an existing phar, tar or zip archive, as the PharData object descends from DirectoryIterator:

<?php
$phar = new PharData('project.tar');
$phar->buildFromIterator(
    new RecursiveIteratorIterator(
     new Phar('/path/to/anotherphar.phar')),
    'phar:///path/to/anotherphar.phar/path/to/project');
$phar->setStub($phar->createDefaultStub('cli/index.php', 'www/index.php'));
?>

Example #2 A PharData::buildFromIterator() with other iterators

The second form of the iterator can be used with any iterator that returns a key => value mapping, such as an ArrayIterator:

<?php
$phar = new PharData('project.tar');
$phar->buildFromIterator(
    new ArrayIterator(
     array(
        'internal/file.php' => dirname(__FILE__) . '/somefile.php',
        'another/file.jpg' => fopen('/path/to/bigfile.jpg', 'rb'),
     )));
?>

参数

iter

Any iterator that either associatively maps tar/zip file to location or returns SplFileInfo objects

base_directory

For iterators that return SplFileInfo objects, the portion of each file's full path to remove when adding to the tar/zip archive

返回值

PharData::buildFromIterator() returns an associative array mapping internal path of file to the full path of the file on the filesystem.

错误／异常

This method returns UnexpectedValueException when the iterator returns incorrect values, such as an integer key instead of a string, a BadMethodCallException when an SplFileInfo-based iterator is passed without a base_directory parameter, or a PharException if there were errors saving the phar archive.

参见

  • Phar::buildFromIterator() - Construct a phar archive from an iterator.

PharData::buildFromDirectory
PharData::compress
PharData


Compresses the entire tar/zip archive using Gzip or Bzip2 compression

PharData::buildFromIterator
PharData::compressFiles
PharData
PHP Manual

PharData::compress

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::compress — Compresses the entire tar/zip archive using Gzip or Bzip2 compression

说明

object PharData::compress ( int $compression [, string $extension ] )

For tar archives, this method compresses the entire archive using gzip compression or bzip2 compression. The resulting file can be processed with the gunzip command/bunzip command, or accessed directly and transparently with the Phar extension.

For zip archives, this method fails with an exception. The zlib extension must be enabled to compress with gzip compression, the bzip2 extension must be enabled in order to compress with bzip2 compression.

In addition, this method automatically renames the archive, appending .gz, .bz2 or removing the extension if passed Phar::NONE to remove compression. Alternatively, a file extension may be specified with the second parameter.

参数

compression

Compression must be one of Phar::GZ, Phar::BZ2 to add compression, or Phar::NONE to remove compression.

extension

By default, the extension is .tar.gz or .tar.bz2 for compressing a tar, and .tar for decompressing.

返回值

A PharData object is returned.

错误／异常

Throws BadMethodCallException if the zlib extension is not available, or the bzip2 extension is not enabled.

范例

Example #1 A PharData::compress() example

<?php
$p = new PharData('/path/to/my.tar');
$p['myfile.txt'] = 'hi';
$p['myfile2.txt'] = 'hi';
$p1 = $p->compress(Phar::GZ); // copies to /path/to/my.tar.gz
$p2 = $p->compress(Phar::BZ2); // copies to /path/to/my.tar.bz2
$p3 = $p2->compress(Phar::NONE); // exception: /path/to/my.tar already exists
?>

参见

  • Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression

PharData::buildFromIterator
PharData::compressFiles
PharData


Compresses all files in the current tar/zip archive

PharData::compress
PharData::__construct
PharData
PHP Manual

PharData::compressFiles

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::compressFiles — Compresses all files in the current tar/zip archive

说明

bool PharData::compressFiles ( int $compression )

For tar-based archives, this method throws a BadMethodCallException, as compression of individual files within a tar archive is not supported by the file format. Use PharData::compress() to compress an entire tar-based archive.

For Zip-based archives, this method compresses all files in the archive using the specified compression. The zlib or bzip2 extensions must be enabled to take advantage of this feature. In addition, if any files are already compressed using bzip2/zlib compression, the respective extension must be enabled in order to decompress the files prior to re-compressing.

参数

compression

Compression must be one of Phar::GZ, Phar::BZ2 to add compression, or Phar::NONE to remove compression.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Throws BadMethodCallException if the phar.readonly INI variable is on, the zlib extension is not available, or if any files are compressed using bzip2 compression and the bzip2 extension is not enabled.

范例

Example #1 A PharData::compressFiles() example

<?php
$p = new Phar('/path/to/my.phar', 0, 'my.phar');
$p['myfile.txt'] = 'hi';
$p['myfile2.txt'] = 'hi';
foreach ($p as $file) {
    var_dump($file->getFileName());
    var_dump($file->isCompressed());
    var_dump($file->isCompressed(Phar::BZ2));
    var_dump($file->isCompressed(Phar::GZ));
}
$p->compressFiles(Phar::GZ);
foreach ($p as $file) {
    var_dump($file->getFileName());
    var_dump($file->isCompressed());
    var_dump($file->isCompressed(Phar::BZ2));
    var_dump($file->isCompressed(Phar::GZ));
}
?>

以上例程会输出：

string(10) "myfile.txt"
bool(false)
bool(false)
bool(false)
string(11) "myfile2.txt"
bool(false)
bool(false)
bool(false)
string(10) "myfile.txt"
int(4096)
bool(false)
bool(true)
string(11) "myfile2.txt"
int(4096)
bool(false)
bool(true)

参见

  • PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::isCompressed() - Returns whether the entry is compressed
  • PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
  • PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
  • Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • PharData::decompressFiles() - Decompresses all files in the current zip archive
  • Phar::getSupportedCompression() - Return array of supported compression algorithms
  • PharData::compress() - Compresses the entire tar/zip archive using Gzip or Bzip2 compression
  • PharData::decompress() - Decompresses the entire Phar archive

PharData::compress
PharData::__construct
PharData


Construct a non-executable tar or zip archive object

PharData::compressFiles
PharData::convertToData
PharData
PHP Manual

PharData::__construct

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::__construct — Construct a non-executable tar or zip archive object

说明

PharData::__construct ( string $fname [, int $flags [, string $alias [, int $format = Phar::TAR ]]] )

参数

fname

Path to an existing tar/zip archive or to-be-created archive

flags

Flags to pass to Phar parent class RecursiveDirectoryIterator.

alias

Alias with which this Phar archive should be referred to in calls to stream functionality.

format

One of the file format constants available within the Phar class.

错误／异常

Throws BadMethodCallException if called twice; UnexpectedValueException if the Phar archive can't be opened.

范例

Example #1 A PharData::__construct() example

<?php
try {
    $p = new PharData('/path/to/my.tar', Phar::CURRENT_AS_FILEINFO | Phar::KEY_AS_FILENAME);
} catch (UnexpectedValueException $e) {
    die('Could not open my.tar');
} catch (BadMethodCallException $e) {
    echo 'technically, this cannot happen';
}
echo file_get_contents('phar:///path/to/my.tar/example.txt');
?>

PharData::compressFiles
PharData::convertToData
PharData


Convert a phar archive to a non-executable tar or zip file

PharData::__construct
PharData::convertToExecutable
PharData
PHP Manual

PharData::convertToData

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::convertToData — Convert a phar archive to a non-executable tar or zip file

说明

PharData PharData::convertToData ([ int $format [, int $compression [, string $extension ]]] )

This method is used to convert a non-executable tar or zip archive to another non-executable format.

If no changes are specified, this method throws a BadMethodCallException. This method should be used to convert a tar archive to zip format or vice-versa. Although it is possible to simply change the compression of a tar archive using this method, it is better to use the PharData::compress() method for logical consistency.

If successful, the method creates a new archive on disk and returns a PharData object. The old archive is not removed from disk, and should be done manually after the process has finished.

参数

format

This should be one of Phar::TAR or Phar::ZIP. If set to NULL, the existing file format will be preserved.

compression

This should be one of Phar::NONE for no whole-archive compression, Phar::GZ for zlib-based compression, and Phar::BZ2 for bzip-based compression.

extension

This parameter is used to override the default file extension for a converted archive. Note that .phar cannot be used anywhere in the filename for a non-executable tar or zip archive.

If converting to a tar-based phar archive, the default extensions are .tar, .tar.gz, and .tar.bz2 depending on specified compression. For zip-based archives, the default extension is .zip.

返回值

The method returns a PharData object on success and throws an exception on failure.

错误／异常

This method throws BadMethodCallException when unable to compress, an unknown compression method has been specified, the requested archive is buffering with Phar::startBuffering() and has not concluded with Phar::stopBuffering(), and a PharException if any problems are encountered during the phar creation process.

范例

Example #1 A PharData::convertToData() example

Using PharData::convertToData():

<?php
try {
    $tarphar = new PharData('myphar.tar');
    // note that myphar.tar is *not* unlinked
    // convert it to the non-executable tar file format
    // creates myphar.zip
    $zip = $tarphar->convertToData(Phar::ZIP);
    // create myphar.tbz
    $tgz = $zip->convertToData(Phar::TAR, Phar::BZ2, '.tbz');
    // creates myphar.phar.tgz
    $phar = $tarphar->convertToData(Phar::PHAR); // throws exception
} catch (Exception $e) {
    // handle the error here
}
?>

参见

  • Phar::convertToExecutable() - Convert a phar archive to another executable phar archive file format
  • Phar::convertToData() - Convert a phar archive to a non-executable tar or zip file
  • PharData::convertToExecutable() - Convert a non-executable tar/zip archive to an executable phar archive

PharData::__construct
PharData::convertToExecutable
PharData


Convert a non-executable tar/zip archive to an executable phar archive

PharData::convertToData
PharData::copy
PharData
PHP Manual

PharData::convertToExecutable

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::convertToExecutable — Convert a non-executable tar/zip archive to an executable phar archive

说明

Phar PharData::convertToExecutable ([ int $format [, int $compression [, string $extension ]]] )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

This method is used to convert a non-executable tar or zip archive to an executable phar archive. Any of the three executable file formats (phar, tar or zip) can be used, and whole-archive compression can also be performed.

If no changes are specified, this method throws a BadMethodCallException.

If successful, the method creates a new archive on disk and returns a Phar object. The old archive is not removed from disk, and should be done manually after the process has finished.

参数

format

This should be one of Phar::PHAR, Phar::TAR, or Phar::ZIP. If set to NULL, the existing file format will be preserved.

compression

This should be one of Phar::NONE for no whole-archive compression, Phar::GZ for zlib-based compression, and Phar::BZ2 for bzip-based compression.

extension

This parameter is used to override the default file extension for a converted archive. Note that all zip- and tar-based phar archives must contain .phar in their file extension in order to be processed as a phar archive.

If converting to a phar-based archive, the default extensions are .phar, .phar.gz, or .phar.bz2 depending on the specified compression. For tar-based phar archives, the default extensions are .phar.tar, .phar.tar.gz, and .phar.tar.bz2. For zip-based phar archives, the default extension is .phar.zip.

返回值

The method returns a Phar object on success and throws an exception on failure.

错误／异常

This method throws BadMethodCallException when unable to compress, an unknown compression method has been specified, the requested archive is buffering with Phar::startBuffering() and has not concluded with Phar::stopBuffering(), an UnexpectedValueException if write support is disabled, and a PharException if any problems are encountered during the phar creation process.

范例

Example #1 A PharData::convertToExecutable() example

Using PharData::convertToExecutable():

<?php
try {
    $tarphar = new PharData('myphar.tar');
    // convert it to the phar file format
    // note that myphar.tar is *not* unlinked
    $phar = $tarphar->convertToExecutable(Phar::PHAR); // creates myphar.phar
    $phar->setStub($phar->createDefaultStub('cli.php', 'web/index.php'));
    // creates myphar.phar.tgz
    $compressed = $tarphar->convertToExecutable(Phar::TAR, Phar::GZ, '.phar.tgz');
} catch (Exception $e) {
    // handle the error here
}
?>

参见

  • Phar::convertToExecutable() - Convert a phar archive to another executable phar archive file format
  • Phar::convertToData() - Convert a phar archive to a non-executable tar or zip file
  • PharData::convertToData() - Convert a phar archive to a non-executable tar or zip file

PharData::convertToData
PharData::copy
PharData


Copy a file internal to the phar archive to another new file within the phar

PharData::convertToExecutable
PharData::decompress
PharData
PHP Manual

PharData::copy

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::copy — Copy a file internal to the phar archive to another new file within the phar

说明

bool PharData::copy ( string $oldfile , string $newfile )

Copy a file internal to the tar/zip archive to another new file within the same archive. This is an object-oriented alternative to using copy() with the phar stream wrapper.

参数

oldfile

newfile

返回值

returns TRUE on success, but it is safer to encase method call in a try/catch block and assume success if no exception is thrown.

错误／异常

throws UnexpectedValueException if the source file does not exist, the destination file already exists, write access is disabled, opening either file fails, reading the source file fails, or a PharException if writing the changes to the phar fails.

范例

Example #1 A PharData::copy() example

This example shows using PharData::copy() and the equivalent stream wrapper performance of the same thing. The primary difference between the two approaches is error handling. All PharData methods throw exceptions, whereas the stream wrapper uses trigger_error().

<?php
try {
    $phar = new PharData('myphar.tar');
    $phar['a'] = 'hi';
    $phar->copy('a', 'b');
    echo $phar['b']; // outputs "phar://myphar.tar/b"
} catch (Exception $e) {
    // handle error
}

// the stream wrapper equivalent of the above code.
// E_WARNINGS are triggered on error rather than exceptions.
copy('phar://myphar.tar/a', 'phar//myphar.tar/c');
echo file_get_contents('phar://myphar.tar/c'); // outputs "hi"
?>

PharData::convertToExecutable
PharData::decompress
PharData


Decompresses the entire Phar archive

PharData::copy
PharData::decompressFiles
PharData
PHP Manual

PharData::decompress

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::decompress — Decompresses the entire Phar archive

说明

object PharData::decompress ([ string $extension ] )

For tar-based archives, this method decompresses the entire archive.

For Zip-based archives, this method fails with an exception. The zlib extension must be enabled to decompress an archive compressed with gzip compression, and the bzip2 extension must be enabled in order to decompress an archive compressed with bzip2 compression.

In addition, this method automatically renames the file extension of the archive, .tar by default. Alternatively, a file extension may be specified with the second parameter.

参数

extension

For decompressing, the default file extension is .phar.tar. Use this parameter to specify another file extension. Be aware that no non-executable archives cannot contain .phar in their filename.

返回值

A PharData object is returned.

错误／异常

Throws BadMethodCallException if the zlib extension is not available, or the bzip2 extension is not enabled.

范例

Example #1 A PharData::decompress() example

<?php
$p = new PharData('/path/to/my.tar.gz');
$p->decompress(); // creates /path/to/my.tar
?>

参见

  • PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::isCompressed() - Returns whether the entry is compressed
  • PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
  • PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
  • PharData::compress() - Compresses the entire tar/zip archive using Gzip or Bzip2 compression
  • Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • PharData::compress() - Compresses the entire tar/zip archive using Gzip or Bzip2 compression
  • Phar::getSupportedCompression() - Return array of supported compression algorithms
  • PharData::compressFiles() - Compresses all files in the current tar/zip archive
  • PharData::decompressFiles() - Decompresses all files in the current zip archive

PharData::copy
PharData::decompressFiles
PharData


Decompresses all files in the current zip archive

PharData::decompress
PharData::delMetadata
PharData
PHP Manual

PharData::decompressFiles

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::decompressFiles — Decompresses all files in the current zip archive

说明

bool PharData::decompressFiles ( void )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

For tar-based archives, this method throws a BadMethodCallException, as compression of individual files within a tar archive is not supported by the file format. Use PharData::compress() to compress an entire tar-based archive.

For Zip-based archives, this method decompresses all files in the archive. The zlib or bzip2 extensions must be enabled to take advantage of this feature if any files are compressed using bzip2/zlib compression.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Throws BadMethodCallException if the zlib extension is not available, or if any files are compressed using bzip2 compression and the bzip2 extension is not enabled.

范例

Example #1 A PharData::decompressFiles() example

<?php
$p = new PharData('/path/to/my.zip');
$p['myfile.txt'] = 'hi';
$p['myfile2.txt'] = 'hi';
$p->compressFiles(Phar::GZ);
foreach ($p as $file) {
    var_dump($file->getFileName());
    var_dump($file->isCompressed());
    var_dump($file->isCompressed(Phar::BZ2));
    var_dump($file->isCompressed(Phar::GZ));
}
$p->decompressFiles();
foreach ($p as $file) {
    var_dump($file->getFileName());
    var_dump($file->isCompressed());
    var_dump($file->isCompressed(Phar::BZ2));
    var_dump($file->isCompressed(Phar::GZ));
}
?>

以上例程会输出：

string(10) "myfile.txt"
int(4096)
bool(false)
bool(true)
string(11) "myfile2.txt"
int(4096)
bool(false)
bool(true)
string(10) "myfile.txt"
bool(false)
bool(false)
bool(false)
string(11) "myfile2.txt"
bool(false)
bool(false)
bool(false)

参见

  • PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::isCompressed() - Returns whether the entry is compressed
  • PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
  • PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
  • Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • PharData::compressFiles() - Compresses all files in the current tar/zip archive
  • Phar::getSupportedCompression() - Return array of supported compression algorithms
  • PharData::compress() - Compresses the entire tar/zip archive using Gzip or Bzip2 compression
  • PharData::decompress() - Decompresses the entire Phar archive

PharData::decompress
PharData::delMetadata
PharData


Deletes the global metadata of a zip archive

PharData::decompressFiles
PharData::delete
PharData
PHP Manual

PharData::delMetadata

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::delMetadata — Deletes the global metadata of a zip archive

说明

bool PharData::delMetadata ( void )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

Deletes the global metadata of the zip archive

参数

返回值

returns TRUE on success, but it is better to check for thrown exception, and assume success if none is thrown.

错误／异常

Throws PharException if errors occur while flushing changes to disk.

范例

Example #1 A PharData::delMetaData() example

<?php
try {
    $phar = new PharData('myphar.zip');
    var_dump($phar->getMetadata());
    $phar->setMetadata("hi there");
    var_dump($phar->getMetadata());
    $phar->delMetadata();
    var_dump($phar->getMetadata());
} catch (Exception $e) {
    // handle errors
}
?>

以上例程会输出：

NULL
string(8) "hi there"
NULL

参见

  • Phar::delMetadata() - Deletes the global metadata of the phar

PharData::decompressFiles
PharData::delete
PharData


Delete a file within a tar/zip archive

PharData::delMetadata
PharData::extractTo
PharData
PHP Manual

PharData::delete

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::delete — Delete a file within a tar/zip archive

说明

bool PharData::delete ( string $entry )

Delete a file within an archive. This is the functional equivalent of calling unlink() on the stream wrapper equivalent, as shown in the example below.

参数

entry

Path within an archive to the file to delete.

返回值

returns TRUE on success, but it is better to check for thrown exception, and assume success if none is thrown.

错误／异常

Throws PharException if errors occur while flushing changes to disk.

范例

Example #1 A PharData::delete() example

<?php
try {
    $phar = new PharData('myphar.zip');
    $phar->delete('unlink/me.php');
    // this is equivalent to:
    unlink('phar://myphar.phar/unlink/me.php');
} catch (Exception $e) {
    // handle errors
}
?>

参见

  • Phar::delete() - 删除 phar 档案中的一个文件

PharData::delMetadata
PharData::extractTo
PharData


Extract the contents of a tar/zip archive to a directory

PharData::delete
PharData::isWritable
PharData
PHP Manual

PharData::extractTo

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::extractTo — Extract the contents of a tar/zip archive to a directory

说明

bool PharData::extractTo ( string $pathto [, string|array $files [, bool $overwrite = false ]] )

Extract all files within a tar/zip archive to disk. Extracted files and directories preserve permissions as stored in the archive. The optional parameters allow optional control over which files are extracted, and whether existing files on disk can be overwritten. The second parameter files can be either the name of a file or directory to extract, or an array of names of files and directories to extract. By default, this method will not overwrite existing files, the third parameter can be set to true to enable overwriting of files. This method is similar to ZipArchive::extractTo().

参数

pathto

Path to extract the given files to

files

The name of a file or directory to extract, or an array of files/directories to extract

overwrite

Set to TRUE to enable overwriting existing files

返回值

returns TRUE on success, but it is better to check for thrown exception, and assume success if none is thrown.

错误／异常

Throws PharException if errors occur while flushing changes to disk.

范例

Example #1 A PharData::extractTo() example

<?php
try {
    $phar = new PharData('myphar.tar');
    $phar->extractTo('/full/path'); // extract all files
    $phar->extractTo('/another/path', 'file.txt'); // extract only file.txt
    $phar->extractTo('/this/path',
        array('file1.txt', 'file2.txt')); // extract 2 files only
    $phar->extractTo('/third/path', null, true); // extract all files, and overwrite
} catch (Exception $e) {
    // handle errors
}
?>

参见

  • Phar::extractTo() - Extract the contents of a phar archive to a directory

PharData::delete
PharData::isWritable
PharData


Returns true if the tar/zip archive can be modified

PharData::extractTo
PharData::offsetSet
PharData
PHP Manual

PharData::isWritable

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::isWritable — Returns true if the tar/zip archive can be modified

说明

bool PharData::isWritable ( void )

This method returns TRUE if the tar/zip archive on disk is not read-only. Unlike Phar::isWritable(), data-only tar/zip archives can be modified even if phar.readonly is set to 1.

参数

No parameters.

返回值

Returns TRUE if the tar/zip archive can be modified

参见

  • Phar::canWrite() - Returns whether phar extension supports writing and creating phars
  • Phar::isWritable() - Returns true if the phar archive can be modified

PharData::extractTo
PharData::offsetSet
PharData


set the contents of a file within the tar/zip to those of an external file or string

PharData::isWritable
PharData::offsetUnset
PharData
PHP Manual

PharData::offsetSet

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::offsetSet — set the contents of a file within the tar/zip to those of an external file or string

说明

void PharData::offsetSet ( string $offset , string $value )

This is an implementation of the ArrayAccess interface allowing direct manipulation of the contents of a tar/zip archive using array access brackets. offsetSet is used for modifying an existing file, or adding a new file to a tar/zip archive.

参数

offset

The filename (relative path) to modify in a tar or zip archive.

value

Content of the file.

返回值

No return values.

错误／异常

Throws PharException if there are any problems flushing changes made to the tar/zip archive to disk.

范例

Example #1 A PharData::offsetSet() example

offsetSet should not be accessed directly, but instead used via array access with the [] operator.

<?php
$p = new PharData('/path/to/my.tar');
try {
    // calls offsetSet
    $p['file.txt'] = 'Hi there';
} catch (Exception $e) {
    echo 'Could not modify file.txt:', $e;
}
?>

参见

  • Phar::offsetSet() - set the contents of an internal file to those of an external file

PharData::isWritable
PharData::offsetUnset
PharData


remove a file from a tar/zip archive

PharData::offsetSet
PharData::setAlias
PharData
PHP Manual

PharData::offsetUnset

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::offsetUnset — remove a file from a tar/zip archive

说明

bool PharData::offsetUnset ( string $offset )

This is an implementation of the ArrayAccess interface allowing direct manipulation of the contents of a tar/zip archive using array access brackets. offsetUnset is used for deleting an existing file, and is called by the unset() language construct.

参数

offset

The filename (relative path) to modify in the tar/zip archive.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Throws PharException if there are any problems flushing changes made to the tar/zip archive to disk.

范例

Example #1 A PharData::offsetUnset() example

<?php
$p = new PharData('/path/to/my.zip');
try {
    // deletes file.txt from my.zip by calling offsetUnset
    unset($p['file.txt']);
} catch (Exception $e) {
    echo 'Could not delete file.txt: ', $e;
}
?>

参见

  • Phar::offsetUnset() - remove a file from a phar

PharData::offsetSet
PharData::setAlias
PharData


dummy function (Phar::setAlias is not valid for PharData)

PharData::offsetUnset
PharData::setDefaultStub
PharData
PHP Manual

PharData::setAlias

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::setAlias — dummy function (Phar::setAlias is not valid for PharData)

说明

bool PharData::setAlias ( string $alias )

Non-executable tar/zip archives cannot have an alias, so this method simply throws an exception.

参数

alias

A shorthand string that this archive can be referred to in phar stream wrapper access. This parameter is ignored.

返回值

错误／异常

Throws PharException on all method calls

参见

  • Phar::setAlias() - Set the alias for the Phar archive

PharData::offsetUnset
PharData::setDefaultStub
PharData


dummy function (Phar::setDefaultStub is not valid for PharData)

PharData::setAlias
Phar::setMetadata
PharData
PHP Manual

PharData::setDefaultStub

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::setDefaultStub — dummy function (Phar::setDefaultStub is not valid for PharData)

说明

bool PharData::setDefaultStub ([ string $index [, string $webindex ]] )

Non-executable tar/zip archives cannot have a stub, so this method simply throws an exception.

参数

index

Relative path within the phar archive to run if accessed on the command-line

webindex

Relative path within the phar archive to run if accessed through a web browser

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Throws PharException on all method calls

参见

  • Phar::setDefaultStub() - Used to set the PHP loader or bootstrap stub of a Phar archive to the default loader

PharData::setAlias
Phar::setMetadata
PharData


Sets phar archive meta-data

PharData::setDefaultStub
Phar::setSignatureAlgorithm
PharData
PHP Manual

Phar::setMetadata

(PHP >= 5.3.0, PECL phar >= 1.0.0)

Phar::setMetadata — Sets phar archive meta-data

说明

public void Phar::setMetadata ( mixed $metadata )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

Phar::setMetadata() should be used to store customized data that describes something about the phar archive as a complete entity. PharFileInfo::setMetadata() should be used for file-specific meta-data. Meta-data can slow down the performance of loading a phar archive if the data is large.

Some possible uses for meta-data include specifying which file within the archive should be used to bootstrap the archive, or the location of a file manifest like » PEAR's package.xml file. However, any useful data that describes the phar archive may be stored.

参数

metadata

Any PHP variable containing information to store that describes the phar archive

返回值

没有返回值。

范例

Example #1 A Phar::setMetadata() example

<?php
// make sure it doesn't exist
@unlink('brandnewphar.phar');
try {
    $p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
    $p['file.php'] = '<?php echo "hello"';
    $p->setMetadata(array('bootstrap' => 'file.php'));
    var_dump($p->getMetadata());
} catch (Exception $e) {
    echo 'Could not create and/or modify phar:', $e;
}
?>

以上例程会输出：

array(1) {
  ["bootstrap"]=>
  string(8) "file.php"
}

参见

  • Phar::getMetadata() - Returns phar archive meta-data
  • Phar::delMetadata() - Deletes the global metadata of the phar
  • Phar::hasMetadata() - Returns whether phar has global meta-data

PharData::setDefaultStub
Phar::setSignatureAlgorithm
PharData


set the signature algorithm for a phar and apply it.

Phar::setMetadata
PharData::setStub
PharData
PHP Manual

Phar::setSignatureAlgorithm

(PHP >= 5.3.0, PECL phar >= 1.1.0)

Phar::setSignatureAlgorithm — set the signature algorithm for a phar and apply it.

说明

public void Phar::setSignatureAlgorithm ( int $sigtype )

Note:

此方法需要 将 php.ini 中的 phar.readonly 设为 0 以适合 Phar 对象. 否则, 将抛出PharException.

Set the signature algorithm for a phar and apply it. The signature algorithm must be one of Phar::MD5, Phar::SHA1, Phar::SHA256, Phar::SHA512, or Phar::PGP (pgp not yet supported and falls back to SHA-1).

参数

sigtype

    One of Phar::MD5,
Phar::SHA1, Phar::SHA256,
Phar::SHA512, or Phar::PGP

返回值

没有返回值。

错误／异常

Throws UnexpectedValueException for many errors, BadMethodCallException if called for a zip- or a tar-based phar archive, and a PharException if any problems occur flushing changes to disk.

参见

  • Phar::getSupportedSignatures() - Return array of supported signature types
  • Phar::getSignature() - Return MD5/SHA1/SHA256/SHA512/OpenSSL signature of a Phar archive

Phar::setMetadata
PharData::setStub
PharData


dummy function (Phar::setStub is not valid for PharData)

Phar::setSignatureAlgorithm
PharFileInfo
PharData
PHP Manual

PharData::setStub

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharData::setStub — dummy function (Phar::setStub is not valid for PharData)

说明

bool PharData::setStub ( string $stub [, int $len = -1 ] )

Non-executable tar/zip archives cannot have a stub, so this method simply throws an exception.

参数

stub

A string or an open stream handle to use as the executable stub for this phar archive. This parameter is ignored.

len

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Throws PharException on all method calls

更新日志

版本 | 说明
5.4.0 | Added len parameter.

参见

  • Phar::setStub() - Used to set the PHP loader or bootstrap stub of a Phar archive

Phar::setSignatureAlgorithm
PharFileInfo
PharData


The PharFileInfo class

(PHP >= 5.3.0, PECL phar >= 1.0.0)

简介

The PharFileInfo class provides a high-level interface to the contents and attributes of a single file within a phar archive.

类摘要

PharFileInfo extends SplFileInfo {
/* 方法 */
public void chmod ( int $permissions )
public bool compress ( int $compression )
public __construct ( string $entry )
public bool decompress ( void )
public bool delMetadata ( void )
public int getCRC32 ( void )
public int getCompressedSize ( void )
public mixed getMetadata ( void )
public int getPharFlags ( void )
public bool hasMetadata ( void )
public bool isCRCChecked ( void )
public bool isCompressed ([ int $compression_type = 9021976 ] )
public bool isCompressedBZIP2 ( void )
public bool isCompressedGZ ( void )
public bool setCompressedBZIP2 ( void )
public bool setCompressedGZ ( void )
public void setMetadata ( mixed $metadata )
public bool setUncompressed ( void )
}

Table of Contents

  • PharFileInfo::chmod — Sets file-specific permission bits
  • PharFileInfo::compress — Compresses the current Phar entry with either zlib or bzip2 compression
  • PharFileInfo::__construct — Construct a Phar entry object
  • PharFileInfo::decompress — Decompresses the current Phar entry within the phar
  • PharFileInfo::delMetadata — Deletes the metadata of the entry
  • PharFileInfo::getCRC32 — Returns CRC32 code or throws an exception if CRC has not been verified
  • PharFileInfo::getCompressedSize — Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::getMetadata — Returns file-specific meta-data saved with a file
  • PharFileInfo::getPharFlags — Returns the Phar file entry flags
  • PharFileInfo::hasMetadata — Returns the metadata of the entry
  • PharFileInfo::isCRCChecked — Returns whether file entry has had its CRC verified
  • PharFileInfo::isCompressed — Returns whether the entry is compressed
  • PharFileInfo::isCompressedBZIP2 — Returns whether the entry is compressed using bzip2
  • PharFileInfo::isCompressedGZ — Returns whether the entry is compressed using gz
  • PharFileInfo::setCompressedBZIP2 — Compresses the current Phar entry within the phar using Bzip2 compression
  • PharFileInfo::setCompressedGZ — Compresses the current Phar entry within the phar using gz compression
  • PharFileInfo::setMetadata — Sets file-specific meta-data saved with a file
  • PharFileInfo::setUncompressed — Uncompresses the current Phar entry within the phar, if it is compressed
PharData::setStub
PharFileInfo::chmod
Phar


Sets file-specific permission bits

PharFileInfo
PharFileInfo::compress
PharFileInfo
PHP Manual

PharFileInfo::chmod

(PHP >= 5.3.0, PECL phar >= 1.0.0)

PharFileInfo::chmod — Sets file-specific permission bits

说明

public void PharFileInfo::chmod ( int $permissions )

PharFileInfo::chmod() allows setting of the executable file permissions bit, as well as read-only bits. Writeable bits are ignored, and set at runtime based on the phar.readonly INI variable. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed if the file is within a Phar archive. Files within PharData archives do not have this restriction.

参数

permissions

permissions (see chmod())

返回值

没有返回值。

范例

Example #1 A PharFileInfo::chmod() example

<?php
// make sure it doesn't exist
@unlink('brandnewphar.phar');
try {
    $p = new Phar('brandnewphar.phar', 0, 'brandnewphar.phar');
    $p['file.sh'] = '#!/usr/local/lib/php
    <?php echo "hi"; ?>';
    // set executable bit
    $p['file.sh']->chmod(0555);
    var_dump($p['file.sh']->isExecutable());
} catch (Exception $e) {
    echo 'Could not create/modify phar: ', $e;
}
?>

以上例程会输出：

bool(true)

PharFileInfo
PharFileInfo::compress
PharFileInfo


Compresses the current Phar entry with either zlib or bzip2 compression

PharFileInfo::chmod
PharFileInfo::__construct
PharFileInfo
PHP Manual

PharFileInfo::compress

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharFileInfo::compress — Compresses the current Phar entry with either zlib or bzip2 compression

说明

public bool PharFileInfo::compress ( int $compression )

This method compresses the file inside the Phar archive using either bzip2 compression or zlib compression. The bzip2 or zlib extension must be enabled to take advantage of this feature. In addition, if the file is already compressed, the respective extension must be enabled in order to decompress the file. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed if the file is within a Phar archive. Files within PharData archives do not have this restriction.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Throws BadMethodCallException if the phar.readonly INI variable is on, or if the bzip2/zlib extension is not available.

范例

Example #1 A PharFileInfo::compress() example

<?php
try {
    $p = new Phar('/path/to/my.phar', 0, 'my.phar');
    $p['myfile.txt'] = 'hi';
    $file = $p['myfile.txt'];
    var_dump($file->isCompressed(Phar::BZ2));
    $p['myfile.txt']->compress(Phar::BZ2);
    var_dump($file->isCompressed(Phar::BZ2));
} catch (Exception $e) {
    echo 'Create/modify operations on my.phar failed: ', $e;
}
?>

以上例程会输出：

bool(false)
bool(true)

参见

  • PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::isCompressed() - Returns whether the entry is compressed
  • PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
  • Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • Phar::compressFiles() - Compresses all files in the current Phar archive
  • Phar::decompressFiles() - Decompresses all files in the current Phar archive
  • Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression
  • Phar::decompress() - Decompresses the entire Phar archive
  • Phar::getSupportedCompression() - Return array of supported compression algorithms

PharFileInfo::chmod
PharFileInfo::__construct
PharFileInfo


Construct a Phar entry object

PharFileInfo::compress
PharFileInfo::decompress
PharFileInfo
PHP Manual

PharFileInfo::__construct

(PHP >= 5.3.0, PECL phar >= 1.0.0)

PharFileInfo::__construct — Construct a Phar entry object

说明

public PharFileInfo::__construct ( string $entry )

This should not be called directly. Instead, a PharFileInfo object is initialized by calling Phar::offsetGet() through array access.

参数

entry

The full url to retrieve a file. If you wish to retrieve the information for the file my/file.php from the phar boo.phar, the entry should be phar://boo.phar/my/file.php.

错误／异常

Throws BadMethodCallException if __construct() is called twice. Throws UnexpectedValueException if the phar URL requested is malformed, the requested phar cannot be opened, or the file can't be found within the phar.

范例

Example #1 A PharFileInfo::__construct() example

<?php
try {
    $p = new Phar('/path/to/my.phar', 0, 'my.phar');
    $p['testfile.txt'] = "hi\nthere\ndude";
    $file = $p['testfile.txt'];
    foreach ($file as $line => $text) {
        echo "line number $line: $text";
    }
    // this also works
    $file = new PharFileInfo('phar:///path/to/my.phar/testfile.txt');
    foreach ($file as $line => $text) {
        echo "line number $line: $text";
    }
} catch (Exception $e) {
    echo 'Phar operations failed: ', $e;
}
?>

以上例程会输出：

line number 1: hi
line number 2: there
line number 3: dude
line number 1: hi
line number 2: there
line number 3: dude

PharFileInfo::compress
PharFileInfo::decompress
PharFileInfo


Decompresses the current Phar entry within the phar

PharFileInfo::__construct
PharFileInfo::delMetadata
PharFileInfo
PHP Manual

PharFileInfo::decompress

(PHP >= 5.3.0, PECL phar >= 2.0.0)

PharFileInfo::decompress — Decompresses the current Phar entry within the phar

说明

public bool PharFileInfo::decompress ( void )

This method decompresses the file inside the Phar archive. Depending on how the file is compressed, the bzip2 or zlib extensions must be enabled to take advantage of this feature. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed if the file is within a Phar archive. Files within PharData archives do not have this restriction.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Throws BadMethodCallException if the phar.readonly INI variable is on, or if the bzip2/zlib extension is not available.

范例

Example #1 A PharFileInfo::decompress() example

<?php
try {
    $p = new Phar('/path/to/my.phar', 0, 'my.phar');
    $p['myfile.txt'] = 'hi';
    $file = $p['myfile.txt'];
    $file->compress(Phar::GZ);
    var_dump($file->isCompressed());
    $p['myfile.txt']->decompress();
    var_dump($file->isCompressed());
} catch (Exception $e) {
    echo 'Create/modify failed for my.phar: ', $e;
}
?>

以上例程会输出：

int(4096)
bool(false)

参见

  • PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::isCompressed() - Returns whether the entry is compressed
  • PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
  • Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • Phar::compressFiles() - Compresses all files in the current Phar archive
  • Phar::decompressFiles() - Decompresses all files in the current Phar archive
  • Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression
  • Phar::decompress() - Decompresses the entire Phar archive
  • Phar::getSupportedCompression() - Return array of supported compression algorithms

PharFileInfo::__construct
PharFileInfo::delMetadata
PharFileInfo


Deletes the metadata of the entry

PharFileInfo::decompress
PharFileInfo::getCRC32
PharFileInfo
PHP Manual

PharFileInfo::delMetadata

(PHP >= 5.3.0, PECL phar >= 1.2.0)

PharFileInfo::delMetadata — Deletes the metadata of the entry

说明

public bool PharFileInfo::delMetadata ( void )

Deletes the metadata of the entry, if any.

参数

No parameters.

返回值

Returns TRUE if successful, FALSE if the entry had no metadata. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed if the file is within a Phar archive. Files within PharData archives do not have this restriction.

错误／异常

Throws PharException if errors occurred while flushing changes to disk, and BadMethodCallException if write access is disabled.

范例

Example #1 A PharFileInfo::delMetaData() example

<?php
try {
    $a = new Phar('myphar.phar');
    $a['hi'] = 'hi';
    var_dump($a['hi']->delMetadata());
    $a['hi']->setMetadata('there');
    var_dump($a['hi']->delMetadata());
    var_dump($a['hi']->delMetadata());
} catch (Exception $e) {
    // handle errors
}
?>

以上例程会输出：

bool(false)
bool(true)
bool(false)

参见

  • PharFileInfo::setMetadata() - Sets file-specific meta-data saved with a file
  • PharFileInfo::hasMetadata() - Returns the metadata of the entry
  • PharFileInfo::getMetadata() - Returns file-specific meta-data saved with a file
  • Phar::setMetadata() - Sets phar archive meta-data
  • Phar::hasMetadata() - Returns whether phar has global meta-data
  • Phar::getMetadata() - Returns phar archive meta-data

PharFileInfo::decompress
PharFileInfo::getCRC32
PharFileInfo


Returns CRC32 code or throws an exception if CRC has not been verified

PharFileInfo::delMetadata
PharFileInfo::getCompressedSize
PharFileInfo
PHP Manual

PharFileInfo::getCRC32

(PHP >= 5.3.0, PECL phar >= 1.0.0)

PharFileInfo::getCRC32 — Returns CRC32 code or throws an exception if CRC has not been verified

说明

public int PharFileInfo::getCRC32 ( void )

This returns the crc32() checksum of the file within the Phar archive.

返回值

The crc32() checksum of the file within the Phar archive.

错误／异常

Throws BadMethodCallException if the file has not yet had its CRC32 verified. This should be impossible with normal use, as the CRC is verified upon opening the file for reading or writing.

范例

Example #1 A PharFileInfo::getCRC32() example

<?php
try {
    $p = new Phar('/path/to/my.phar', 0, 'my.phar');
    $p['myfile.txt'] = 'hi';
    $file = $p['myfile.txt'];
    echo $file->getCRC32();
} catch (Exception $e) {
    echo 'Write operations on my.phar.phar failed: ', $e;
}
?>

以上例程会输出：

3633523372

PharFileInfo::delMetadata
PharFileInfo::getCompressedSize
PharFileInfo


Returns the actual size of the file (with compression) inside the Phar archive

PharFileInfo::getCRC32
PharFileInfo::getMetadata
PharFileInfo
PHP Manual

PharFileInfo::getCompressedSize

(PHP >= 5.3.0, PECL phar >= 1.0.0)

PharFileInfo::getCompressedSize — Returns the actual size of the file (with compression) inside the Phar archive

说明

public int PharFileInfo::getCompressedSize ( void )

This returns the size of the file within the Phar archive. Uncompressed files will return the same value for getCompressedSize as they will with filesize()

返回值

The size in bytes of the file within the Phar archive on disk.

范例

Example #1 A PharFileInfo::getCompressedSize() example

<?php
try {
    $p = new Phar('/path/to/my.phar', 0, 'my.phar');
    $p['myfile.txt'] = 'hi';
    $file = $p['myfile.txt'];
    echo $file->getCompressedSize();
} catch (Exception $e) {
    echo 'Write operations failed on my.phar: ', $e;
}
?>

以上例程会输出：

2

参见

  • PharFileInfo::isCompressed() - Returns whether the entry is compressed
  • PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
  • PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
  • Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression
  • Phar::decompress() - Decompresses the entire Phar archive
  • Phar::getSupportedCompression() - Return array of supported compression algorithms
  • Phar::decompressFiles() - Decompresses all files in the current Phar archive
  • Phar::compressFiles() - Compresses all files in the current Phar archive

PharFileInfo::getCRC32
PharFileInfo::getMetadata
PharFileInfo


Returns file-specific meta-data saved with a file

PharFileInfo::getCompressedSize
PharFileInfo::getPharFlags
PharFileInfo
PHP Manual

PharFileInfo::getMetadata

(PHP >= 5.3.0, PECL phar >= 1.0.0)

PharFileInfo::getMetadata — Returns file-specific meta-data saved with a file

说明

public mixed PharFileInfo::getMetadata ( void )

Return meta-data that was saved in the Phar archive's manifest for this file.

参数

返回值

any PHP variable that can be serialized and is stored as meta-data for the file, or NULL if no meta-data is stored.

范例

Example #1 A PharFileInfo::getMetadata() example

<?php
// make sure it doesn't exist
@unlink('brandnewphar.phar');
try {
    $p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
    $p['file.txt'] = 'hello';
    $p['file.txt']->setMetadata(array('user' => 'bill', 'mime-type' => 'text/plain'));
    var_dump($p['file.txt']->getMetadata());
} catch (Exception $e) {
    echo 'Could not create/modify brandnewphar.phar: ', $e;
}
?>

以上例程会输出：

array(2) {
  ["user"]=>
  string(4) "bill"
  ["mime-type"]=>
  string(10) "text/plain"
}

参见

  • PharFileInfo::setMetadata() - Sets file-specific meta-data saved with a file
  • PharFileInfo::hasMetadata() - Returns the metadata of the entry
  • PharFileInfo::delMetadata() - Deletes the metadata of the entry
  • Phar::setMetadata() - Sets phar archive meta-data
  • Phar::hasMetadata() - Returns whether phar has global meta-data
  • Phar::getMetadata() - Returns phar archive meta-data

PharFileInfo::getCompressedSize
PharFileInfo::getPharFlags
PharFileInfo


Returns the Phar file entry flags

PharFileInfo::getMetadata
PharFileInfo::hasMetadata
PharFileInfo
PHP Manual

PharFileInfo::getPharFlags

(PHP >= 5.3.0, PECL phar >= 1.0.0)

PharFileInfo::getPharFlags — Returns the Phar file entry flags

说明

public int PharFileInfo::getPharFlags ( void )

This returns the flags set in the manifest for a Phar. This will always return 0 in the current implementation.

返回值

The Phar flags (always 0 in the current implementation)

范例

Example #1 A PharFileInfo::getPharFlags() example

<?php
try {
    $p = new Phar('/path/to/my.phar', 0, 'my.phar');
    $p['myfile.txt'] = 'hi';
    $file = $p['myfile.txt'];
    var_dump($file->getPharFlags());
} catch (Exception $e) {
    echo 'Could not create/modify my.phar: ', $e;
}
?>

以上例程会输出：

int(0)

PharFileInfo::getMetadata
PharFileInfo::hasMetadata
PharFileInfo


Returns the metadata of the entry

PharFileInfo::getPharFlags
PharFileInfo::isCRCChecked
PharFileInfo
PHP Manual

PharFileInfo::hasMetadata

(PHP >= 5.3.0, PECL phar >= 1.2.0)

PharFileInfo::hasMetadata — Returns the metadata of the entry

说明

public bool PharFileInfo::hasMetadata ( void )

Returns the metadata of a file within a phar archive.

参数

No parameters.

返回值

Returns FALSE if no metadata is set or is NULL, TRUE if metadata is not NULL

参见

  • PharFileInfo::setMetadata() - Sets file-specific meta-data saved with a file
  • PharFileInfo::getMetadata() - Returns file-specific meta-data saved with a file
  • PharFileInfo::delMetadata() - Deletes the metadata of the entry
  • Phar::setMetadata() - Sets phar archive meta-data
  • Phar::hasMetadata() - Returns whether phar has global meta-data
  • Phar::getMetadata() - Returns phar archive meta-data

PharFileInfo::getPharFlags
PharFileInfo::isCRCChecked
PharFileInfo


Returns whether file entry has had its CRC verified

PharFileInfo::hasMetadata
PharFileInfo::isCompressed
PharFileInfo
PHP Manual

PharFileInfo::isCRCChecked

(PHP >= 5.3.0, PECL phar >= 1.0.0)

PharFileInfo::isCRCChecked — Returns whether file entry has had its CRC verified

说明

public bool PharFileInfo::isCRCChecked ( void )

This returns whether a file within a Phar archive has had its CRC verified.

返回值

TRUE if the file has had its CRC verified, FALSE if not.

范例

Example #1 A PharFileInfo::isCRCChecked() example

<?php
try {
    $p = new Phar('/path/to/my.phar', 0, 'my.phar');
    $p['myfile.txt'] = 'hi';
    $file = $p['myfile.txt'];
    var_dump($file->isCRCChecked());
} catch (Exception $e) {
    echo 'Create/modify operations failed on my.phar: ', $e;
}
?>

以上例程会输出：

bool(true)

PharFileInfo::hasMetadata
PharFileInfo::isCompressed
PharFileInfo


Returns whether the entry is compressed

PharFileInfo::isCRCChecked
PharFileInfo::isCompressedBZIP2
PharFileInfo
PHP Manual

PharFileInfo::isCompressed

(PHP >= 5.3.0, PECL phar >= 1.0.0)

PharFileInfo::isCompressed — Returns whether the entry is compressed

说明

public bool PharFileInfo::isCompressed ([ int $compression_type = 9021976 ] )

This returns whether a file is compressed within a Phar archive with either Gzip or Bzip2 compression.

参数

compression_type

One of Phar::GZ or Phar::BZ2, defaults to any compression.

返回值

TRUE if the file is compressed within the Phar archive, FALSE if not.

范例

Example #1 A PharFileInfo::isCompressed() example

<?php
try {
    $p = new Phar('/path/to/my.phar', 0, 'my.phar');
    $p['myfile.txt'] = 'hi';
    $p['myfile2.txt'] = 'hi';
    $p['myfile2.txt']->setCompressedGZ();
    $file = $p['myfile.txt'];
    $file2 = $p['myfile2.txt'];
    var_dump($file->isCompressed());
    var_dump($file2->isCompressed());
} catch (Exception $e) {
    echo 'Create/modify on phar my.phar failed: ', $e;
}
?>

以上例程会输出：

bool(false)
bool(true)

参见

  • PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::decompress() - Decompresses the current Phar entry within the phar
  • PharFileInfo::compress() - Compresses the current Phar entry with either zlib or bzip2 compression
  • Phar::decompress() - Decompresses the entire Phar archive
  • Phar::compress() - Compresses the entire Phar archive using Gzip or Bzip2 compression
  • Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • Phar::getSupportedCompression() - Return array of supported compression algorithms
  • Phar::decompressFiles() - Decompresses all files in the current Phar archive
  • Phar::compressFiles() - Compresses all files in the current Phar archive

PharFileInfo::isCRCChecked
PharFileInfo::isCompressedBZIP2
PharFileInfo


Returns whether the entry is compressed using bzip2

PharFileInfo::isCompressed
PharFileInfo::isCompressedGZ
PharFileInfo
PHP Manual

PharFileInfo::isCompressedBZIP2

(PHP >= 5.3.0, PECL phar >= 1.0.0)

PharFileInfo::isCompressedBZIP2 — Returns whether the entry is compressed using bzip2

说明

public bool PharFileInfo::isCompressedBZIP2 ( void )

Note:

此方法已经从 phar 扩展 2.0.0以上版本中删除。可使用 PharFileInfo::isCompressed()，PharFileInfo::decompress() 和 PharFileInfo::compress()替代。

This returns whether a file is compressed within a Phar archive with Bzip2 compression.

返回值

TRUE if the file is compressed within the Phar archive using Bzip2, FALSE if not.

范例

Example #1 A PharFileInfo::isCompressedBZIP2() example

<?php
try {
    $p = new Phar('/path/to/my.phar', 0, 'my.phar');
    $p['myfile.txt'] = 'hi';
    $p['myfile2.txt'] = 'hi';
    $p['myfile3.txt'] = 'hi';
    $p['myfile2.txt']->setCompressedGZ();
    $p['myfile3.txt']->setCompressedBZIP2();
    $file = $p['myfile.txt'];
    $file2 = $p['myfile2.txt'];
    $file3 = $p['myfile3.txt'];
    var_dump($file->isCompressedBZIP2());
    var_dump($file2->isCompressedBZIP2());
    var_dump($file3->isCompressedBZIP2());
} catch (Exception $e) {
    echo 'Create/modify on phar my.phar failed: ', $e;
}
?>

以上例程会输出：

bool(false)
bool(false)
bool(true)

参见

  • PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::isCompressed() - Returns whether the entry is compressed
  • PharFileInfo::isCompressedGZ() - Returns whether the entry is compressed using gz
  • PharFileInfo::setCompressedBZIP2() - Compresses the current Phar entry within the phar using Bzip2 compression
  • PharFileInfo::setUncompressed() - Uncompresses the current Phar entry within the phar, if it is compressed
  • PharFileInfo::setCompressedGZ() - Compresses the current Phar entry within the phar using gz compression
  • Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • Phar::compressAllFilesBZIP2() - Compresses all files in the current Phar archive using Bzip2 compression
  • Phar::compressAllFilesGZ() - Compresses all files in the current Phar archive using Gzip compression
  • Phar::getSupportedCompression() - Return array of supported compression algorithms
  • Phar::uncompressAllFiles() - Uncompresses all files in the current Phar archive

PharFileInfo::isCompressed
PharFileInfo::isCompressedGZ
PharFileInfo


Returns whether the entry is compressed using gz

PharFileInfo::isCompressedBZIP2
PharFileInfo::setCompressedBZIP2
PharFileInfo
PHP Manual

PharFileInfo::isCompressedGZ

(PHP >= 5.3.0, PECL phar >= 1.0.0)

PharFileInfo::isCompressedGZ — Returns whether the entry is compressed using gz

说明

public bool PharFileInfo::isCompressedGZ ( void )

Note:

此方法已经从 phar 扩展 2.0.0以上版本中删除。可使用 PharFileInfo::isCompressed()，PharFileInfo::decompress() 和 PharFileInfo::compress()替代。

This returns whether a file is compressed within a Phar archive with Gzip compression.

返回值

TRUE if the file is compressed within the Phar archive using Gzip, FALSE if not.

范例

Example #1 A PharFileInfo::isCompressedGZ() example

<?php
try {
    $p = new Phar('/path/to/my.phar', 0, 'my.phar');
    $p['myfile.txt'] = 'hi';
    $p['myfile2.txt'] = 'hi';
    $p['myfile3.txt'] = 'hi';
    $p['myfile2.txt']->setCompressedGZ();
    $p['myfile3.txt']->setCompressedBZIP2();
    $file = $p['myfile.txt'];
    $file2 = $p['myfile2.txt'];
    $file3 = $p['myfile3.txt'];
    var_dump($file->isCompressedGZ());
    var_dump($file2->isCompressedGZ());
    var_dump($file3->isCompressedGZ());
} catch (Exception $e) {
    echo 'Create/modify on phar my.phar failed: ', $e;
}
?>

以上例程会输出：

bool(false)
bool(true)
bool(false)

参见

  • PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::isCompressedBZIP2() - Returns whether the entry is compressed using bzip2
  • PharFileInfo::isCompressed() - Returns whether the entry is compressed
  • PharFileInfo::setCompressedBZIP2() - Compresses the current Phar entry within the phar using Bzip2 compression
  • PharFileInfo::setUncompressed() - Uncompresses the current Phar entry within the phar, if it is compressed
  • PharFileInfo::setCompressedGZ() - Compresses the current Phar entry within the phar using gz compression
  • Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • Phar::compressAllFilesBZIP2() - Compresses all files in the current Phar archive using Bzip2 compression
  • Phar::compressAllFilesGZ() - Compresses all files in the current Phar archive using Gzip compression
  • Phar::getSupportedCompression() - Return array of supported compression algorithms
  • Phar::uncompressAllFiles() - Uncompresses all files in the current Phar archive

PharFileInfo::isCompressedBZIP2
PharFileInfo::setCompressedBZIP2
PharFileInfo


Compresses the current Phar entry within the phar using Bzip2 compression

PharFileInfo::isCompressedGZ
PharFileInfo::setCompressedGZ
PharFileInfo
PHP Manual

PharFileInfo::setCompressedBZIP2

(PHP >= 5.3.0, PECL phar >= 1.0.0)

PharFileInfo::setCompressedBZIP2 — Compresses the current Phar entry within the phar using Bzip2 compression

说明

public bool PharFileInfo::setCompressedBZIP2 ( void )

Note:

此方法已经从 phar 扩展 2.0.0以上版本中删除。可使用 PharFileInfo::isCompressed()，PharFileInfo::decompress() 和 PharFileInfo::compress()替代。

This method compresses the file inside the Phar archive using bzip2 compression. The bzip2 extension must be enabled to take advantage of this feature. In addition, if the file is already compressed using gzip compression, the zlib extension must be enabled in order to decompress the file. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Throws BadMethodCallException if the phar.readonly INI variable is on, or if the bzip2 extension is not available.

范例

Example #1 A PharFileInfo::setCompressedBZIP2() example

<?php
try {
    $p = new Phar('/path/to/my.phar', 0, 'my.phar');
    $p['myfile.txt'] = 'hi';
    $file = $p['myfile.txt'];
    var_dump($file->isCompressedBZIP2());
    $p['myfile.txt']->setCompressedBZIP2();
    var_dump($file->isCompressedBZIP2());
} catch (Exception $e) {
    echo 'Create/modify operations on my.phar failed: ', $e;
}
?>

以上例程会输出：

bool(false)
bool(true)

参见

  • PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::isCompressedBZIP2() - Returns whether the entry is compressed using bzip2
  • PharFileInfo::isCompressed() - Returns whether the entry is compressed
  • PharFileInfo::isCompressedGZ() - Returns whether the entry is compressed using gz
  • PharFileInfo::setUncompressed() - Uncompresses the current Phar entry within the phar, if it is compressed
  • PharFileInfo::setCompressedGZ() - Compresses the current Phar entry within the phar using gz compression
  • Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • Phar::compressAllFilesBZIP2() - Compresses all files in the current Phar archive using Bzip2 compression
  • Phar::compressAllFilesGZ() - Compresses all files in the current Phar archive using Gzip compression
  • Phar::getSupportedCompression() - Return array of supported compression algorithms
  • Phar::uncompressAllFiles() - Uncompresses all files in the current Phar archive

PharFileInfo::isCompressedGZ
PharFileInfo::setCompressedGZ
PharFileInfo


Compresses the current Phar entry within the phar using gz compression

PharFileInfo::setCompressedBZIP2
PharFileInfo::setMetadata
PharFileInfo
PHP Manual

PharFileInfo::setCompressedGZ

(PHP >= 5.3.0, PECL phar >= 1.0.0)

PharFileInfo::setCompressedGZ — Compresses the current Phar entry within the phar using gz compression

说明

public bool PharFileInfo::setCompressedGZ ( void )

Note:

此方法已经从 phar 扩展 2.0.0以上版本中删除。可使用 PharFileInfo::isCompressed()，PharFileInfo::decompress() 和 PharFileInfo::compress()替代。

This method compresses the file inside the Phar archive using gzip compression. The zlib extension must be enabled to take advantage of this feature. In addition, if the file is already compressed using bzip2 compression, the bzip2 extension must be enabled in order to decompress the file. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Throws BadMethodCallException if the phar.readonly INI variable is on, or if the zlib extension is not available.

范例

Example #1 A PharFileInfo::setCompressedGZ() example

<?php
try {
    $p = new Phar('/path/to/my.phar', 0, 'my.phar');
    $p['myfile.txt'] = 'hi';
    $file = $p['myfile.txt'];
    var_dump($file->isCompressedGZ());
    $p['myfile.txt']->setCompressedGZ();
    var_dump($file->isCompressedGZ());
} catch (Exception $e) {
    echo 'Create/modify operations on my.phar failed: ', $e;
}
?>

以上例程会输出：

bool(false)
bool(true)

参见

  • PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::isCompressedBZIP2() - Returns whether the entry is compressed using bzip2
  • PharFileInfo::isCompressed() - Returns whether the entry is compressed
  • PharFileInfo::isCompressedGZ() - Returns whether the entry is compressed using gz
  • PharFileInfo::setCompressedBZIP2() - Compresses the current Phar entry within the phar using Bzip2 compression
  • PharFileInfo::setUncompressed() - Uncompresses the current Phar entry within the phar, if it is compressed
  • Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • Phar::compressAllFilesBZIP2() - Compresses all files in the current Phar archive using Bzip2 compression
  • Phar::compressAllFilesGZ() - Compresses all files in the current Phar archive using Gzip compression
  • Phar::getSupportedCompression() - Return array of supported compression algorithms
  • Phar::uncompressAllFiles() - Uncompresses all files in the current Phar archive

PharFileInfo::setCompressedBZIP2
PharFileInfo::setMetadata
PharFileInfo


Sets file-specific meta-data saved with a file

PharFileInfo::setCompressedGZ
PharFileInfo::setUncompressed
PharFileInfo
PHP Manual

PharFileInfo::setMetadata

(PHP >= 5.3.0, PECL phar >= 1.0.0)

PharFileInfo::setMetadata — Sets file-specific meta-data saved with a file

说明

public void PharFileInfo::setMetadata ( mixed $metadata )

PharFileInfo::setMetadata() should only be used to store customized data in a file that cannot be represented with existing information stored with a file. Meta-data can significantly slow down the performance of loading a phar archive if the data is large, or if there are many files containing meta-data. It is important to note that file permissions are natively supported inside a phar; it is possible to set them with the PharFileInfo::chmod() method. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed if the file is within a Phar archive. Files within PharData archives do not have this restriction.

Some possible uses for meta-data include passing a user/group that should be set when a file is extracted from the phar to disk. Other uses could include explicitly specifying a MIME type to return. However, any useful data that describes a file, but should not be contained inside of it may be stored.

参数

metadata

Any PHP variable containing information to store alongside a file

返回值

没有返回值。

范例

Example #1 A PharFileInfo::setMetadata() example

<?php
// make sure it doesn't exist
@unlink('brandnewphar.phar');
try {
    $p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
    $p['file.txt'] = 'hello';
    $p['file.txt']->setMetadata(array('user' => 'bill', 'mime-type' => 'text/plain'));
    var_dump($p['file.txt']->getMetaData());
} catch (Exception $e) {
    echo 'Could not create/modify phar: ', $e;
}
?>

以上例程会输出：

array(2) {
  ["user"]=>
  string(4) "bill"
  ["mime-type"]=>
  string(10) "text/plain"
}

参见

  • PharFileInfo::hasMetadata() - Returns the metadata of the entry
  • PharFileInfo::getMetadata() - Returns file-specific meta-data saved with a file
  • PharFileInfo::delMetadata() - Deletes the metadata of the entry
  • Phar::setMetadata() - Sets phar archive meta-data
  • Phar::hasMetadata() - Returns whether phar has global meta-data
  • Phar::getMetadata() - Returns phar archive meta-data

PharFileInfo::setCompressedGZ
PharFileInfo::setUncompressed
PharFileInfo


Uncompresses the current Phar entry within the phar, if it is compressed

PharFileInfo::setMetadata
PharException
PharFileInfo
PHP Manual

PharFileInfo::setUncompressed

(PHP >= 5.3.0, PECL phar >= 1.0.0)

PharFileInfo::setUncompressed — Uncompresses the current Phar entry within the phar, if it is compressed

说明

public bool PharFileInfo::setUncompressed ( void )

Note:

此方法已经从 phar 扩展 2.0.0以上版本中删除。可使用 PharFileInfo::isCompressed()，PharFileInfo::decompress() 和 PharFileInfo::compress()替代。

This method decompresses the file inside the Phar archive. Depending on how the file is compressed, the bzip2 or zlib extensions must be enabled to take advantage of this feature. As with all functionality that modifies the contents of a phar, the phar.readonly INI variable must be off in order to succeed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Throws BadMethodCallException if the phar.readonly INI variable is on, or if the bzip2/zlib extension is not available.

范例

Example #1 A PharFileInfo::setUncompressed() example

<?php
try {
    $p = new Phar('/path/to/my.phar', 0, 'my.phar');
    $p['myfile.txt'] = 'hi';
    $file = $p['myfile.txt'];
    $file->setCompressedGZ();
    var_dump($file->isCompressed());
    $p['myfile.txt']->setUncompressed();
    var_dump($file->isCompressed());
} catch (Exception $e) {
    echo 'Create/modify failed for my.phar: ', $e;
}
?>

以上例程会输出：

bool(true)
bool(false)

参见

  • PharFileInfo::getCompressedSize() - Returns the actual size of the file (with compression) inside the Phar archive
  • PharFileInfo::isCompressedBZIP2() - Returns whether the entry is compressed using bzip2
  • PharFileInfo::isCompressed() - Returns whether the entry is compressed
  • PharFileInfo::isCompressedGZ() - Returns whether the entry is compressed using gz
  • PharFileInfo::setCompressedBZIP2() - Compresses the current Phar entry within the phar using Bzip2 compression
  • PharFileInfo::setCompressedGZ() - Compresses the current Phar entry within the phar using gz compression
  • Phar::canCompress() - Returns whether phar extension supports compression using either zlib or bzip2
  • Phar::isCompressed() - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
  • Phar::compressAllFilesBZIP2() - Compresses all files in the current Phar archive using Bzip2 compression
  • Phar::compressAllFilesGZ() - Compresses all files in the current Phar archive using Gzip compression
  • Phar::getSupportedCompression() - Return array of supported compression algorithms
  • Phar::uncompressAllFiles() - Uncompresses all files in the current Phar archive

PharFileInfo::setMetadata
PharException
PharFileInfo


The PharException class

(Unknown)

简介

The PharException class provides a phar-specific exception class for try/catch blocks.

类摘要

PharException extends Exception {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}

Table of Contents

  • PharException — The PharException class provides a phar-specific exception class for try/catch blocks.
PharFileInfo::setUncompressed
PharException
Phar


The PharException class provides a phar-specific exception class for try/catch blocks.

PharException
Rar
PharException
PHP Manual

PharException

(Unknown)

PharException — The PharException class provides a phar-specific exception class for try/catch blocks.

说明

PharException
Rar
PharException
PHP Manual


Rar Archiving

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • Rar 函数
    • rar_wrapper_cache_stats — Cache hits and misses for the URL wrapper
  • RarArchive — The RarArchive class
    • RarArchive::close — Close RAR archive and free all resources
    • RarArchive::getComment — Get comment text from the RAR archive
    • RarArchive::getEntries — Get full list of entries from the RAR archive
    • RarArchive::getEntry — Get entry object from the RAR archive
    • RarArchive::isBroken — Test whether an archive is broken (incomplete)
    • RarArchive::isSolid — Check whether the RAR archive is solid
    • RarArchive::open — Open RAR archive
    • RarArchive::setAllowBroken — Whether opening broken archives is allowed
    • RarArchive::__toString — Get text representation
  • RarEntry — The RarEntry class
    • RarEntry::extract — Extract entry from the archive
    • RarEntry::getAttr — Get attributes of the entry
    • RarEntry::getCrc — Get CRC of the entry
    • RarEntry::getFileTime — Get entry last modification time
    • RarEntry::getHostOs — Get entry host OS
    • RarEntry::getMethod — Get pack method of the entry
    • RarEntry::getName — Get name of the entry
    • RarEntry::getPackedSize — Get packed size of the entry
    • RarEntry::getStream — Get file handler for entry
    • RarEntry::getUnpackedSize — Get unpacked size of the entry
    • RarEntry::getVersion — Get minimum version of RAR program required to unpack the entry
    • RarEntry::isDirectory — Test whether an entry represents a directory
    • RarEntry::isEncrypted — Test whether an entry is encrypted
    • RarEntry::__toString — Get text representation of entry
  • RarException — The RarException class
    • RarException::isUsingExceptions — Check whether error handling with exceptions is in use
    • RarException::setUsingExceptions — Activate and deactivate error handling with exceptions
PharException
简介
压缩与归档扩展


简介

Rar is a powerful and effective archiver created by Eugene Roshal. This extension gives you possibility to read Rar archives but doesn't support writing Rar archives, because this is not supported by the UnRar library and is directly prohibited by its license.

More information about Rar and UnRar can be found at » http://www.rarlabs.com/.

Rar
安装／配置
Rar


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Rar


安装

Rar is currently available through PECL » http://pecl.php.net/package/rar.

Also you can use the PECL installer to install the Rar extension, using the following command: pecl -v install rar.

You can always download the tar.gz package and install Rar by hand:

Example #1 Rar installation

gunzip rar-xxx.tgz
tar -xvf rar-xxx.tar
cd rar-xxx
phpize
./configure && make && make install

Windows users will enable php_rar.dll inside of php.ini in order to use these functions. PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


资源类型

This extension registers three internal classes: The archive representations returned by rar_open() - RarArchive -, the entry representations returned by rar_list() and rar_entry_get() - RarEntry and the exception type RarException.

This extension also register a stream resource, called "rar" and a URL wrapper called "rar wrapper" and registered under the prefix "rar".

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

RAR_HOST_MSDOS (integer)
Use RarEntry::HOST_MSDOS instead.
RAR_HOST_OS2 (integer)
Use RarEntry::HOST_OS2 instead.
RAR_HOST_WIN32 (integer)
Use RarEntry::HOST_WIN32 instead.
RAR_HOST_UNIX (integer)
Use RarEntry::HOST_UNIX instead.
RAR_HOST_BEOS (integer)
Use RarEntry::HOST_BEOS instead.
资源类型
范例
Rar


范例

See also the examples under rar:// wrapper.

Example #1 On-the-fly decompression

<?php

if (!array_key_exists("i", $_GET) || !is_numeric($_GET["i"]))
    die("Index unspecified or non-numeric");
$index = (int) $_GET["i"];

$arch = RarArchive::open("example.rar");
if ($arch === FALSE)
    die("Cannot open example.rar");

$entries = $arch->getEntries();
if ($entries === FALSE)
    die("Cannot retrieve entries");

if (!array_key_exists($index, $entries))
    die("No such index: $index");

$orfilename = $entries[$index]->getName(); //UTF-8 encoded

$filesize = $entries[$index]->getUnpackedSize();

/* you could check HTTP_IF_MODIFIED_SINCE here and compare with
 * $entries[$index]->getFileTime(). You could also send a
 * "Last modified" header */

$fp = $entries[$index]->getStream();
if ($fp === FALSE)
    die("Cannot open file with index $index insided the archive.");

$arch->close(); //no longer needed; stream is independent

function detectUserAgent() {
    if (!array_key_exists('HTTP_USER_AGENT', $_SERVER))
        return "Other";

    $uas = $_SERVER['HTTP_USER_AGENT'];
    if (preg_match("@Opera/@", $uas))
        return "Opera";
    if (preg_match("@Firefox/@", $uas))
        return "Firefox";
    if (preg_match("@Chrome/@", $uas))
        return "Chrome";
    if (preg_match("@MSIE ([0-9.]+);@", $uas, $matches)) {
        if (((float)$matches[1]) >= 7.0)
            return "IE";
    }

    return "Other";
}

/*
 * We have 3 options:
 * - For FF and Opera, which support RFC 2231, use that format.
 * - For IE and Chrome, use attwithfnrawpctenclong
 *   (http://greenbytes.de/tech/tc2231/#attwithfnrawpctenclong)
 * - For the others, convert to ISO-8859-1, if possible
 */
$formatRFC2231 = 'Content-Disposition: attachment; filename*=UTF-8\'\'%s';
$formatDef = 'Content-Disposition: attachment; filename="%s"';

switch (detectUserAgent()) {
    case "Opera":
    case "Firefox":
        $orfilename = rawurlencode($orfilename);
        $format = $formatRFC2231;
        break;

    case "IE":
    case "Chrome":
        $orfilename = rawurlencode($orfilename);
        $format = $formatDef;
        break;
    default:
        if (function_exists('iconv'))
            $orfilename =
                @iconv("UTF-8", "ISO-8859-1//TRANSLIT", $orfilename);
        $format = $formatDef;
}

header(sprintf($format, $orfilename));
//cannot send error messages from now on (headers already sent)

//replace by real content type, perhaps infering from the file extension
$contentType = "application/octet-stream";
header("Content-Type: $contentType");

header("Content-Transfer-Encoding: binary");

header("Content-Length: $filesize");

if ($_SERVER['REQUEST_METHOD'] == "HEAD")
    die();

while (!feof($fp)) {
    $s = @fread($fp, 8192);
    if ($s === false)
        break; //useless to send error messages

    echo $s;
}
?>

This example opens a RAR file and presents the requested file inside the RAR archive for download to the client.

Example #2 RAR extension filesystem extraction example

<?php

$rar_file = rar_open('example.rar') or die("Can't open Rar archive");

$entries = rar_list($rar_file);

foreach ($entries as $entry) {
    echo 'Filename: ' . $entry->getName() . "\n";
    echo 'Packed size: ' . $entry->getPackedSize() . "\n";
    echo 'Unpacked size: ' . $entry->getUnpackedSize() . "\n";

    $entry->extract('/dir/extract/to/');
}

rar_close($rar_file);

?>

This example opens a RAR file archive and extracts each entry to the specified directory.

预定义常量
Rar 函数
Rar


Rar 函数

Table of Contents

  • rar_wrapper_cache_stats — Cache hits and misses for the URL wrapper
范例
rar_wrapper_cache_stats
Rar


Cache hits and misses for the URL wrapper

Rar 函数
RarArchive
Rar 函数
PHP Manual

rar_wrapper_cache_stats

(PECL rar >= 3.0.0)

rar_wrapper_cache_stats — Cache hits and misses for the URL wrapper

说明

string rar_wrapper_cache_stats ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Rar 函数
RarArchive
Rar 函数


The RarArchive class

(PECL rar >= 2.0.0)

简介

This class represents a RAR archive, which may be formed by several volumes (parts) and which contains a number of RAR entries (i.e., files, directories and other special objects such as symbolic links).

Objects of this class can be traversed, yielding the entries stored in the respective RAR archive. Those entries can also be obtained through RarArchive::getEntry() and RarArchive::getEntries().

类摘要

final RarArchive implements Traversable {
/* 方法 */
public bool close ( void )
public string getComment ( void )
public array getEntries ( void )
public RarEntry getEntry ( string $entryname )
public bool isBroken ( void )
public bool isSolid ( void )
public static RarArchive open ( string $filename [, string $password = NULL [, callable $volume_callback = NULL ]] )
public bool setAllowBroken ( bool $allow_broken )
public string __toString ( void )
}

Table of Contents

  • RarArchive::close — Close RAR archive and free all resources
  • RarArchive::getComment — Get comment text from the RAR archive
  • RarArchive::getEntries — Get full list of entries from the RAR archive
  • RarArchive::getEntry — Get entry object from the RAR archive
  • RarArchive::isBroken — Test whether an archive is broken (incomplete)
  • RarArchive::isSolid — Check whether the RAR archive is solid
  • RarArchive::open — Open RAR archive
  • RarArchive::setAllowBroken — Whether opening broken archives is allowed
  • RarArchive::__toString — Get text representation
rar_wrapper_cache_stats
RarArchive::close
Rar


Close RAR archive and free all resources

RarArchive
RarArchive::getComment
RarArchive
PHP Manual

RarArchive::close

rar_close

(PECL rar >= 2.0.0)

RarArchive::close -- rar_close — Close RAR archive and free all resources

说明

面向对象风格 (method):

public bool RarArchive::close ( void )

过程化风格:

bool rar_close ( RarArchive $rarfile )

Close RAR archive and free all allocated resources.

参数

rarfile

A RarArchive object, opened with rar_open().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
2.0.0 | The RAR entries returned by RarArchive::getEntry() and RarArchive::getEntries() are now invalidated when calling this method. This means that all instance methods called for such entries and not guaranteed to succeed.

范例

Example #1 面向对象风格

<?php
$rar_arch = RarArchive::open('latest_winrar.rar');
echo $rar_arch."\n";
$rar_arch->close();
echo $rar_arch."\n";
?>

以上例程的输出类似于：

RAR Archive "D:\php_rar\trunk\tests\latest_winrar.rar"
RAR Archive "D:\php_rar\trunk\tests\latest_winrar.rar" (closed)

Example #2 过程化风格

<?php
$rar_arch = rar_open('latest_winrar.rar');
echo $rar_arch."\n";
rar_close($rar_arch);
echo $rar_arch."\n";
?>

RarArchive
RarArchive::getComment
RarArchive


Get comment text from the RAR archive

RarArchive::close
RarArchive::getEntries
RarArchive
PHP Manual

RarArchive::getComment

rar_comment_get

(PECL rar >= 2.0.0)

RarArchive::getComment -- rar_comment_get — Get comment text from the RAR archive

说明

面向对象风格 (method):

public string RarArchive::getComment ( void )

过程化风格:

string rar_comment_get ( RarArchive $rarfile )

Get the (global) comment stored in the RAR archive. It may be up to 64 KiB long.

Note:

This extension does not support comments at the entry level.

参数

rarfile

A RarArchive object, opened with rar_open().

返回值

Returns the comment or NULL if there is none.

Note:

RAR has currently no support for unicode comments. The encoding of the result of this function is not specified, but it will probably be Windows-1252.

范例

Example #1 面向对象风格

<?php
$rar_arch = RarArchive::open('commented.rar');
echo $rar_arch->getComment();
?>

以上例程的输出类似于：

This is the comment of the file commented.rar.

Example #2 过程化风格

<?php
$rar_arch = rar_open('commented.rar');
echo rar_comment_get($rar_arch);
?>

RarArchive::close
RarArchive::getEntries
RarArchive


Get full list of entries from the RAR archive

RarArchive::getComment
RarArchive::getEntry
RarArchive
PHP Manual

RarArchive::getEntries

rar_list

(PECL rar >= 2.0.0)

RarArchive::getEntries -- rar_list — Get full list of entries from the RAR archive

说明

面向对象风格 (method):

public array RarArchive::getEntries ( void )

过程化风格:

array rar_list ( RarArchive $rarfile )

Get entries list (files and directories) from the RAR archive.

Note:

If the archive has entries with the same name, this method, together with RarArchive foreach iteration and array-like access with numeric indexes, are the only ones to access all the entries (i.e., RarArchive::getEntry() and the rar:// wrapper are insufficient).

参数

rarfile

A RarArchive object, opened with rar_open().

返回值

rar_list() returns array of RarEntry objects 或者在失败时返回 FALSE.

更新日志

版本 | 说明
3.0.0 | Support for RAR archives with repeated entry names is no longer defective.

范例

Example #1 面向对象风格

<?php
$rar_arch = RarArchive::open('solid.rar');
if ($rar_arch === FALSE)
    die("Could not open RAR archive.");

$rar_entries = $rar_arch->getEntries();
if ($rar_entries === FALSE)
    die("Could not retrieve entries.");

echo "Found " . count($rar_entries) . " entries.\n";

foreach ($rar_entries as $e) {
    echo $e;
    echo "\n";
}
$rar_arch->close();
?>

以上例程的输出类似于：

Found 2 entries.
RarEntry for file "tese.txt" (23b93a7a)
RarEntry for file "unrardll.txt" (2ed64b6e)

Example #2 过程化风格

<?php
$rar_arch = rar_open('solid.rar');
if ($rar_arch === FALSE)
    die("Could not open RAR archive.");

$rar_entries = rar_list($rar_arch);
if ($rar_entries === FALSE)
    die("Could retrieve entries.");

echo "Found " . count($rar_entries) . " entries.\n";

foreach ($rar_entries as $e) {
    echo $e;
    echo "\n";
}
rar_close($rar_arch);
?>

参见

  • RarArchive::getEntry() - Get entry object from the RAR archive
  • rar:// wrapper

RarArchive::getComment
RarArchive::getEntry
RarArchive


Get entry object from the RAR archive

RarArchive::getEntries
RarArchive::isBroken
RarArchive
PHP Manual

RarArchive::getEntry

rar_entry_get

(PECL rar >= 2.0.0)

RarArchive::getEntry -- rar_entry_get — Get entry object from the RAR archive

说明

面向对象风格 (method):

public RarEntry RarArchive::getEntry ( string $entryname )

过程化风格:

RarEntry rar_entry_get ( RarArchive $rarfile , string $entryname )

Get entry object (file or directory) from the RAR archive.

Note:

You can also get entry objects using RarArchive::getEntries().

Note that a RAR archive can have multiple entries with the same name; this method will retrieve only the first.

参数

rarfile

A RarArchive object, opened with rar_open().

entryname

Path to the entry within the RAR archive.

Note:

The path must be the same returned by RarEntry::getName().

返回值

Returns the matching RarEntry object 或者在失败时返回 FALSE.

范例

Example #1 面向对象风格

<?php
$rar_arch = RarArchive::open('solid.rar');
if ($rar_arch === FALSE)
    die("Could not open RAR archive.");
$rar_entry = $rar_arch->getEntry('tese.txt');
if ($rar_entry === FALSE)
    die("Could not get such entry");
echo get_class($rar_entry)."\n";
echo $rar_entry;
$rar_arch->close();
?>

以上例程的输出类似于：

RarEntry
RarEntry for file "tese.txt" (23b93a7a)

Example #2 过程化风格

<?php
$rar_arch = rar_open('solid.rar');
if ($rar_arch === FALSE)
    die("Could not open RAR archive.");
$rar_entry = rar_entry_get($rar_arch, 'tese.txt');
if ($rar_entry === FALSE)
    die("Could not get such entry");
echo get_class($rar_entry)."\n";
echo $rar_entry;
rar_close($rar_arch);
?>

参见

  • RarArchive::getEntries() - Get full list of entries from the RAR archive
  • rar:// wrapper

RarArchive::getEntries
RarArchive::isBroken
RarArchive


Test whether an archive is broken (incomplete)

RarArchive::getEntry
RarArchive::isSolid
RarArchive
PHP Manual

RarArchive::isBroken

rar_broken_is

(PECL rar >= 3.0.0)

RarArchive::isBroken -- rar_broken_is — Test whether an archive is broken (incomplete)

说明

面向对象风格 (method):

public bool RarArchive::isBroken ( void )

过程化风格:

bool rar_broken_is ( RarArchive $rarfile )

This function determines whether an archive is incomplete, i.e., if a volume is missing or a volume is truncated.

参数

rarfile

A RarArchive object, opened with rar_open().

返回值

Returns TRUE if the archive is broken, FALSE otherwise. This function may also return FALSE if the passed file has already been closed. The only way to tell the two cases apart is to enable exceptions with RarException::setUsingExceptions(); however, this should be unnecessary as a program should not operate on closed files.

范例

Example #1 面向对象风格

<?php
function retnull() { return null; }
$file = dirname(__FILE__) . "/multi_broken.part1.rar";
/* Third argument is used to omit notice */
$arch = RarArchive::open($file, null, 'retnull');
var_dump($arch->isBroken());
?>

以上例程的输出类似于：

bool(true)

Example #2 过程化风格

<?php
function retnull() { return null; }
$file = dirname(__FILE__) . "/multi_broken.part1.rar";
/* Third argument is used to omit notice */
$arch = rar_open($file, null, 'retnull');
var_dump(rar_broken_is($arch));
?>

参见

  • RarArchive::setAllowBroken() - Whether opening broken archives is allowed

RarArchive::getEntry
RarArchive::isSolid
RarArchive


Check whether the RAR archive is solid

RarArchive::isBroken
RarArchive::open
RarArchive
PHP Manual

RarArchive::isSolid

rar_solid_is

(PECL rar >= 2.0.0)

RarArchive::isSolid -- rar_solid_is — Check whether the RAR archive is solid

说明

面向对象风格 (method):

public bool RarArchive::isSolid ( void )

过程化风格:

bool rar_solid_is ( RarArchive $rarfile )

Check whether the RAR archive is solid. Individual file extraction is slower on solid archives.

参数

rarfile

A RarArchive object, opened with rar_open().

返回值

Returns TRUE if the archive is solid, FALSE otherwise.

范例

Example #1 面向对象风格

<?php
$arch1 = RarArchive::open("store_method.rar");
$arch2 = RarArchive::open("solid.rar");
echo "$arch1: " . ($arch1->isSolid()?'yes':'no') ."\n";
echo "$arch2: " . ($arch2->isSolid()?'yes':'no') . "\n";
?>

以上例程的输出类似于：

RAR Archive "C:\php_rar\trunk\tests\store_method.rar": no
RAR Archive "C:\php_rar\trunk\tests\solid.rar": yes

Example #2 过程化风格

<?php
$arch1 = rar_open("store_method.rar");
$arch2 = rar_open("solid.rar");
echo "$arch1: " . (rar_solid_is($arch1)?'yes':'no') ."\n";
echo "$arch2: " . (rar_solid_is($arch2)?'yes':'no') . "\n";
?>

RarArchive::isBroken
RarArchive::open
RarArchive


Open RAR archive

RarArchive::isSolid
RarArchive::setAllowBroken
RarArchive
PHP Manual

RarArchive::open

rar_open

(PECL rar >= 2.0.0)

RarArchive::open -- rar_open — Open RAR archive

说明

面向对象风格 (method):

public static RarArchive RarArchive::open ( string $filename [, string $password = NULL [, callable $volume_callback = NULL ]] )

过程化风格:

RarArchive rar_open ( string $filename [, string $password = NULL [, callable $volume_callback = NULL ]] )

Open specified RAR archive and return RarArchive instance representing it.

Note:

If opening a multi-volume archive, the path of the first volume should be passed as the first parameter. Otherwise, not all files will be shown. This is by design.

参数

filename

Path to the Rar archive.

password

A plain password, if needed to decrypt the headers. It will also be used by default if encrypted files are found. Note that the files may have different passwords in respect to the headers and among them.

volume_callback

A function that receives one parameter - the path of the volume that was not found - and returns a string with the correct path for such volume or NULL if such volume does not exist or is not known. The programmer should ensure the passed function doesn't cause loops as this function is called repeatedly if the path returned in a previous call did not correspond to the needed volume. Specifying this parameter omits the notice that would otherwise be emitted whenever a volume is not found; an implementation that only returns NULL can therefore be used to merely omit such notices.

Warning

Prior to version 2.0.0, this function would not handle relative paths correctly. Use realpath() as a workaround.

返回值

Returns the requested RarArchive instance 或者在失败时返回 FALSE.

更新日志

版本 | 说明
3.0.0 | volume_callback was added.

范例

Example #1 面向对象风格

<?php
$rar_arch = RarArchive::open('encrypted_headers.rar', 'samplepassword');
if ($rar_arch === FALSE)
    die("Failed opening file");

$entries = $rar_arch->getEntries();
if ($entries === FALSE)
    die("Failed fetching entries");

echo "Found " . count($entries) . " files.\n";

if (empty($entries))
    die("No valid entries found.");

$stream = reset($entries)->getStream();
if ($stream === FALSE)
    die("Failed opening first file");

$rar_arch->close();

echo "Content of first one follows:\n";
echo stream_get_contents($stream);

fclose($stream);
?>

以上例程的输出类似于：

Found 2 files.
Content of first one follows:
Encrypted file 1 contents.

Example #2 过程化风格

<?php
$rar_arch = rar_open('encrypted_headers.rar', 'samplepassword');
if ($rar_arch === FALSE)
    die("Failed opening file");

$entries = rar_list($rar_arch);
if ($entries === FALSE)
    die("Failed fetching entries");

echo "Found " . count($entries) . " files.\n";

if (empty($entries))
    die("No valid entries found.");

$stream = reset($entries)->getStream();
if ($stream === FALSE)
    die("Failed opening first file");

rar_close($rar_arch);

echo "Content of first one follows:\n";
echo stream_get_contents($stream);

fclose($stream);
?>

Example #3 Volume Callback

<?php
/* In this example, there's a volume named multi_broken.part1.rar
 * whose next volume is named multi.part2.rar */
function resolve($vol) {
    if (preg_match('/_broken/', $vol))
        return str_replace('_broken', '', $vol);
    else
        return null;
}
$rar_file1 = rar_open(dirname(__FILE__).'/multi_broken.part1.rar', null, 'resolve');
$entry = $rar_file1->getEntry('file2.txt');
$entry->extract(null, dirname(__FILE__) . "/temp_file2.txt");
?>

参见

  • rar:// wrapper

RarArchive::isSolid
RarArchive::setAllowBroken
RarArchive


Whether opening broken archives is allowed

RarArchive::open
RarArchive::__toString
RarArchive
PHP Manual

RarArchive::setAllowBroken

(PECL rar >= 3.0.0)

RarArchive::setAllowBroken — Whether opening broken archives is allowed

说明

面向对象风格 (method):

public bool RarArchive::setAllowBroken ( bool $allow_broken )

过程化风格:

bool rar_allow_broken_set ( RarArchive $rarfile , bool $allow_broken )

This method defines whether broken archives can be read or all the operations that attempt to extract the archive entries will fail. Broken archives are archives for which no error is detected when the file is opened but an error occurs when reading the entries.

参数

rarfile

A RarArchive object, opened with rar_open().

allow_broken

Whether to allow reading broken files (TRUE) or not (FALSE).

返回值

Returns TRUE 或者在失败时返回 FALSE. It will only fail if the file has already been closed.

范例

Example #1 面向对象风格

<?php
function retnull() { return null; }
$file = dirname(__FILE__) . "/multi_broken.part1.rar";
/* Third argument omits "volume not found" message */
$a = RarArchive::open($file, null, 'retnull');
$a->setAllowBroken(true);
foreach ($a->getEntries() as $e) {
    echo "$e\n";
}
var_dump(count($a));
?>

以上例程的输出类似于：

RarEntry for file "file1.txt" (52b28202)
int(1)

Example #2 过程化风格

<?php
function retnull() { return null; }
$file = dirname(__FILE__) . "/multi_broken.part1.rar";
/* Third argument omits "volume not found" message */
$a = rar_open($file, null, 'retnull');
rar_allow_broken_set($a, true);
foreach (rar_list($a) as $e) {
    echo "$e\n";
}
var_dump(count($a));
?>

参见

  • RarArchive::isBroken() - Test whether an archive is broken (incomplete)

RarArchive::open
RarArchive::__toString
RarArchive


Get text representation

RarArchive::setAllowBroken
RarEntry
RarArchive
PHP Manual

RarArchive::__toString

(PECL rar >= 2.0.0)

RarArchive::__toString — Get text representation

说明

public string RarArchive::__toString ( void )

Provides a string representation for this RarArchive object. It currently shows the full path name of the archive volume that was opened and whether the resource is valid or was already closed through a call to RarArchive::close().

This method may be used only for debugging purposes, as there are no guarantees as to which information the result contains or how it is formatted.

参数

此函数没有参数。

返回值

A textual representation of this RarArchive object. The content of this representation is unspecified.

范例

Example #1 RarArchive::__toString() example

<?php
$rar_arch = RarArchive::open('latest_winrar.rar');
echo $rar_arch."\n";
$rar_arch->close();
echo $rar_arch."\n";
?>

以上例程的输出类似于：

RAR Archive "D:\php_rar\trunk\tests\latest_winrar.rar"
RAR Archive "D:\php_rar\trunk\tests\latest_winrar.rar" (closed)

RarArchive::setAllowBroken
RarEntry
RarArchive


The RarEntry class

(PECL rar >= 0.1)

简介

A RAR entry, representing a directory or a compressed file inside a RAR archive.

类摘要

final RarEntry {
/* 常量 */
const integer HOST_MSDOS = 0 ;
const integer HOST_OS2 = 1 ;
const integer HOST_WIN32 = 2 ;
const integer HOST_UNIX = 3 ;
const integer HOST_MACOS = 4 ;
const integer HOST_BEOS = 5 ;
const integer ATTRIBUTE_WIN_READONLY = 1 ;
const integer ATTRIBUTE_WIN_HIDDEN = 2 ;
const integer ATTRIBUTE_WIN_SYSTEM = 4 ;
const integer ATTRIBUTE_WIN_DIRECTORY = 16 ;
const integer ATTRIBUTE_WIN_ARCHIVE = 32 ;
const integer ATTRIBUTE_WIN_DEVICE = 64 ;
const integer ATTRIBUTE_WIN_NORMAL = 128 ;
const integer ATTRIBUTE_WIN_TEMPORARY = 256 ;
const integer ATTRIBUTE_WIN_SPARSE_FILE = 512 ;
const integer ATTRIBUTE_WIN_REPARSE_POINT = 1024 ;
const integer ATTRIBUTE_WIN_COMPRESSED = 2048 ;
const integer ATTRIBUTE_WIN_OFFLINE = 4096 ;
const integer ATTRIBUTE_WIN_NOT_CONTENT_INDEXED = 8192 ;
const integer ATTRIBUTE_WIN_ENCRYPTED = 16384 ;
const integer ATTRIBUTE_WIN_VIRTUAL = 65536 ;
const integer ATTRIBUTE_UNIX_WORLD_EXECUTE = 1 ;
const integer ATTRIBUTE_UNIX_WORLD_WRITE = 2 ;
const integer ATTRIBUTE_UNIX_WORLD_READ = 4 ;
const integer ATTRIBUTE_UNIX_GROUP_EXECUTE = 8 ;
const integer ATTRIBUTE_UNIX_GROUP_WRITE = 16 ;
const integer ATTRIBUTE_UNIX_GROUP_READ = 32 ;
const integer ATTRIBUTE_UNIX_OWNER_EXECUTE = 64 ;
const integer ATTRIBUTE_UNIX_OWNER_WRITE = 128 ;
const integer ATTRIBUTE_UNIX_OWNER_READ = 256 ;
const integer ATTRIBUTE_UNIX_STICKY = 512 ;
const integer ATTRIBUTE_UNIX_SETGID = 1024 ;
const integer ATTRIBUTE_UNIX_SETUID = 2048 ;
const integer ATTRIBUTE_UNIX_FINAL_QUARTET = 61440 ;
const integer ATTRIBUTE_UNIX_FIFO = 4096 ;
const integer ATTRIBUTE_UNIX_CHAR_DEV = 8192 ;
const integer ATTRIBUTE_UNIX_DIRECTORY = 16384 ;
const integer ATTRIBUTE_UNIX_BLOCK_DEV = 24576 ;
const integer ATTRIBUTE_UNIX_REGULAR_FILE = 32768 ;
const integer ATTRIBUTE_UNIX_SYM_LINK = 40960 ;
const integer ATTRIBUTE_UNIX_SOCKET = 49152 ;
/* 方法 */
public bool extract ( string $dir [, string $filepath = "" [, string $password = NULL [, bool $extended_data = false ]]] )
public int getAttr ( void )
public string getCrc ( void )
public string getFileTime ( void )
public int getHostOs ( void )
public int getMethod ( void )
public string getName ( void )
public int getPackedSize ( void )
public resource getStream ([ string $password ] )
public int getUnpackedSize ( void )
public int getVersion ( void )
public bool isDirectory ( void )
public bool isEncrypted ( void )
public string __toString ( void )
}

预定义常量

RarEntry::HOST_MSDOS

If the return value of RarEntry::getHostOs() equals this constant, MS-DOS was used to add this entry. Use instead of RAR_HOST_MSDOS.

RarEntry::HOST_OS2

If the return value of RarEntry::getHostOs() equals this constant, OS/2 was used to add this entry. Intended to replace RAR_HOST_OS2.

RarEntry::HOST_WIN32

If the return value of RarEntry::getHostOs() equals this constant, Microsoft Windows was used to add this entry. Intended to replace RAR_HOST_WIN32.

RarEntry::HOST_UNIX

If the return value of RarEntry::getHostOs() equals this constant, an unspecified UNIX OS was used to add this entry. Intended to replace RAR_HOST_UNIX.

RarEntry::HOST_MACOS

If the return value of RarEntry::getHostOs() equals this constant, Mac OS was used to add this entry.

RarEntry::HOST_BEOS

If the return value of RarEntry::getHostOs() equals this constant, BeOS was used to add this entry. Intended to replace RAR_HOST_BEOS.

RarEntry::ATTRIBUTE_WIN_READONLY

Bit that represents a Windows entry with a read-only attribute. To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.

RarEntry::ATTRIBUTE_WIN_HIDDEN

Bit that represents a Windows entry with a hidden attribute. To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.

RarEntry::ATTRIBUTE_WIN_SYSTEM

Bit that represents a Windows entry with a system attribute. To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.

RarEntry::ATTRIBUTE_WIN_DIRECTORY

Bit that represents a Windows entry with a directory attribute (entry is a directory). To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows. See also RarEntry::isDirectory(), which also works with entries that were not added in WinRAR.

RarEntry::ATTRIBUTE_WIN_ARCHIVE

Bit that represents a Windows entry with an archive attribute. To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.

RarEntry::ATTRIBUTE_WIN_DEVICE

Bit that represents a Windows entry with a device attribute. To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.

RarEntry::ATTRIBUTE_WIN_NORMAL

Bit that represents a Windows entry with a normal file attribute (entry is NOT a directory). To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows. See also RarEntry::isDirectory(), which also works with entries that were not added in WinRAR.

RarEntry::ATTRIBUTE_WIN_TEMPORARY

Bit that represents a Windows entry with a temporary attribute. To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.

RarEntry::ATTRIBUTE_WIN_SPARSE_FILE

Bit that represents a Windows entry with a sparse file attribute (file is an NTFS sparse file). To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.

RarEntry::ATTRIBUTE_WIN_REPARSE_POINT

Bit that represents a Windows entry with a reparse point attribute (entry is an NTFS reparse point, e.g. a directory junction or a mount file system). To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.

RarEntry::ATTRIBUTE_WIN_COMPRESSED

Bit that represents a Windows entry with a compressed attribute (NTFS only). To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.

RarEntry::ATTRIBUTE_WIN_OFFLINE

Bit that represents a Windows entry with an offline attribute (entry is offline and not accessible). To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.

RarEntry::ATTRIBUTE_WIN_NOT_CONTENT_INDEXED

Bit that represents a Windows entry with a not content indexed attribute (entry is to be indexed). To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.

RarEntry::ATTRIBUTE_WIN_ENCRYPTED

Bit that represents a Windows entry with an encrypted attribute (NTFS only). To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.

RarEntry::ATTRIBUTE_WIN_VIRTUAL

Bit that represents a Windows entry with a virtual attribute. To be used with RarEntry::getAttr() on entries whose host OS is Microsoft Windows.

RarEntry::ATTRIBUTE_UNIX_WORLD_EXECUTE

Bit that represents a UNIX entry that is world executable. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.

RarEntry::ATTRIBUTE_UNIX_WORLD_WRITE

Bit that represents a UNIX entry that is world writable. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.

RarEntry::ATTRIBUTE_UNIX_WORLD_READ

Bit that represents a UNIX entry that is world readable. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.

RarEntry::ATTRIBUTE_UNIX_GROUP_EXECUTE

Bit that represents a UNIX entry that is group executable. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.

RarEntry::ATTRIBUTE_UNIX_GROUP_WRITE

Bit that represents a UNIX entry that is group writable. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.

RarEntry::ATTRIBUTE_UNIX_GROUP_READ

Bit that represents a UNIX entry that is group readable. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.

RarEntry::ATTRIBUTE_UNIX_OWNER_EXECUTE

Bit that represents a UNIX entry that is owner executable. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.

RarEntry::ATTRIBUTE_UNIX_OWNER_WRITE

Bit that represents a UNIX entry that is owner writable. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.

RarEntry::ATTRIBUTE_UNIX_OWNER_READ

Bit that represents a UNIX entry that is owner readable. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.

RarEntry::ATTRIBUTE_UNIX_STICKY

Bit that represents the UNIX sticky bit. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.

RarEntry::ATTRIBUTE_UNIX_SETGID

Bit that represents the UNIX setgid attribute. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.

RarEntry::ATTRIBUTE_UNIX_SETUID

Bit that represents the UNIX setuid attribute. To be used with RarEntry::getAttr() on entries whose host OS is UNIX.

RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET

Mask to isolate the last four bits (nibble) of UNIX attributes
      (_S_IFMT, the type of file mask). To be used with
      RarEntry::getAttr() on entries whose host OS is UNIX and with the
      constants RarEntry::ATTRIBUTE_UNIX_FIFO,
      RarEntry::ATTRIBUTE_UNIX_CHAR_DEV,
      RarEntry::ATTRIBUTE_UNIX_DIRECTORY,
      RarEntry::ATTRIBUTE_UNIX_BLOCK_DEV,
      RarEntry::ATTRIBUTE_UNIX_REGULAR_FILE,
      RarEntry::ATTRIBUTE_UNIX_SYM_LINK and
      RarEntry::ATTRIBUTE_UNIX_SOCKET.

RarEntry::ATTRIBUTE_UNIX_FIFO

Unix FIFOs will have attributes whose last four bits have this value. To be used with RarEntry::getAttr() on entries whose host OS is UNIX and with the constant RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET.

RarEntry::ATTRIBUTE_UNIX_CHAR_DEV

Unix character devices will have attributes whose last four bits have this value. To be used with RarEntry::getAttr() on entries whose host OS is UNIX and with the constant RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET.

RarEntry::ATTRIBUTE_UNIX_DIRECTORY

Unix directories will have attributes whose last four bits have this value. To be used with RarEntry::getAttr() on entries whose host OS is UNIX and with the constant RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET. See also RarEntry::isDirectory(), which also works with entries that were added in other operating systems.

RarEntry::ATTRIBUTE_UNIX_BLOCK_DEV

Unix block devices will have attributes whose last four bits have this value. To be used with RarEntry::getAttr() on entries whose host OS is UNIX and with the constant RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET.

RarEntry::ATTRIBUTE_UNIX_REGULAR_FILE

Unix regular files (not directories) will have attributes whose last four bits have this value. To be used with RarEntry::getAttr() on entries whose host OS is UNIX and with the constant RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET. See also RarEntry::isDirectory(), which also works with entries that were added in other operating systems.

RarEntry::ATTRIBUTE_UNIX_SYM_LINK

Unix symbolic links will have attributes whose last four bits have this value. To be used with RarEntry::getAttr() on entries whose host OS is UNIX and with the constant RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET.

RarEntry::ATTRIBUTE_UNIX_SOCKET

Unix sockets will have attributes whose last four bits have this value. To be used with RarEntry::getAttr() on entries whose host OS is UNIX and with the constant RarEntry::ATTRIBUTE_UNIX_FINAL_QUARTET.

Table of Contents

  • RarEntry::extract — Extract entry from the archive
  • RarEntry::getAttr — Get attributes of the entry
  • RarEntry::getCrc — Get CRC of the entry
  • RarEntry::getFileTime — Get entry last modification time
  • RarEntry::getHostOs — Get entry host OS
  • RarEntry::getMethod — Get pack method of the entry
  • RarEntry::getName — Get name of the entry
  • RarEntry::getPackedSize — Get packed size of the entry
  • RarEntry::getStream — Get file handler for entry
  • RarEntry::getUnpackedSize — Get unpacked size of the entry
  • RarEntry::getVersion — Get minimum version of RAR program required to unpack the entry
  • RarEntry::isDirectory — Test whether an entry represents a directory
  • RarEntry::isEncrypted — Test whether an entry is encrypted
  • RarEntry::__toString — Get text representation of entry
RarArchive::__toString
RarEntry::extract
Rar


Extract entry from the archive

RarEntry
RarEntry::getAttr
RarEntry
PHP Manual

RarEntry::extract

(PECL rar >= 0.1)

RarEntry::extract — Extract entry from the archive

说明

public bool RarEntry::extract ( string $dir [, string $filepath = "" [, string $password = NULL [, bool $extended_data = false ]]] )

RarEntry::extract() extracts the entry's data. It will create new file in the specified dir with the name identical to the entry's name, unless the second argument is specified. See below for more information.

参数

dir

Path to the directory where files should be extracted. This parameter is considered if and only if filepath is not. If both parameters are empty an extraction to the current directory will be attempted.

filepath

Path (relative or absolute) containing the directory and filename of the extracted file. This parameter overrides both the parameter dir and the original file name.

password

The password used to encrypt this entry. If the entry is not encrypted, this value will not be used and can be omitted. If this parameter is omitted and the entry is encrypted, the password given to rar_open(), if any, will be used. If a wrong password is given, either explicitly or implicitly via rar_open(), CRC checking will fail and this method will fail and return FALSE. If no password is given and one is required, this method will fail and return FALSE. You can check whether an entry is encrypted with RarEntry::isEncrypted().

extended_data

If TRUE, extended information such as NTFS ACLs and Unix owner information will be set in the extract files, as long as it's present in the archive.

Warning

Prior to version 2.0.0, this function would not handle relative paths correctly. Use realpath() as a workaround.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
3.0.0 | extended_data was added.
3.0.0 | Support for RAR archives with repeated entry names is no longer defective.

范例

Example #1 RarEntry::extract() example

<?php

$rar_file = rar_open('example.rar') or die("Failed to open Rar archive");

$entry = rar_entry_get($rar_file, 'Dir/file.txt') or die("Failed to find such entry");

$entry->extract('/dir/to'); // create /dir/to/Dir/file.txt
$entry->extract(false, '/dir/to/new_name.txt'); // create /dir/to/new_name.txt

?>

Example #2 How to extract all files in archive:

<?php

/* example by Erik Jenssen aka erix */

$filename = "foobar.rar";
$filepath = "/home/foo/bar/";

$rar_file = rar_open($filepath.$filename);
$list = rar_list($rar_file);
foreach($list as $file) {
    $entry = rar_entry_get($rar_file, $file);
    $entry->extract("."); // extract to the current dir
}
rar_close($rar_file);

?>

参见

  • RarEntry::getStream() - Get file handler for entry
  • rar:// wrapper

RarEntry
RarEntry::getAttr
RarEntry


Get attributes of the entry

RarEntry::extract
RarEntry::getCrc
RarEntry
PHP Manual

RarEntry::getAttr

(PECL rar >= 0.1)

RarEntry::getAttr — Get attributes of the entry

说明

public int RarEntry::getAttr ( void )

Returns the OS-dependent attributes of the archive entry.

参数

此函数没有参数。

返回值

Returns the attributes or FALSE on error.

范例

Example #1 RarEntry::getAttr() example

<?php

$rar_file = rar_open('example.rar') or die("Can't open Rar archive");

$entry = rar_entry_get($rar_file, 'dir/in/the/archive') or die("Can't find such entry");

$host_os = $entry->getHostOs();
$attr = $entry->getAttr();

switch($host_os) {
    case RAR_HOST_MSDOS:
    case RAR_HOST_OS2:
    case RAR_HOST_WIN32:
    case RAR_HOST_MACOS:
        printf("%c%c%c%c%c%c\n",
                ($attr & 0x08) ? 'V' : '.',
                ($attr & 0x10) ? 'D' : '.',
                ($attr & 0x01) ? 'R' : '.',
                ($attr & 0x02) ? 'H' : '.',
                ($attr & 0x04) ? 'S' : '.',
                ($attr & 0x20) ? 'A' : '.');
        break;
    case RAR_HOST_UNIX:
    case RAR_HOST_BEOS:
        switch ($attr & 0xF000)
        {
            case 0x4000:
                printf("d");
                break;
            case 0xA000:
                printf("l");
                break;
            default:
                printf("-");
                break;
        }
        printf("%c%c%c%c%c%c%c%c%c\n",
                ($attr & 0x0100) ? 'r' : '-',
                ($attr & 0x0080) ? 'w' : '-',
                ($attr & 0x0040) ? (($attr & 0x0800) ? 's':'x'):(($attr & 0x0800) ? 'S':'-'),
                ($attr & 0x0020) ? 'r' : '-',
                ($attr & 0x0010) ? 'w' : '-',
                ($attr & 0x0008) ? (($attr & 0x0400) ? 's':'x'):(($attr & 0x0400) ? 'S':'-'),
                ($attr & 0x0004) ? 'r' : '-',
                ($attr & 0x0002) ? 'w' : '-',
                ($attr & 0x0001) ? 'x' : '-');
        break;
}

rar_close($rar_file);

?>

参见

  • RarEntry::getHostOs() - Get entry host OS
  • The constants in RarEntry

RarEntry::extract
RarEntry::getCrc
RarEntry


Get CRC of the entry

RarEntry::getAttr
RarEntry::getFileTime
RarEntry
PHP Manual

RarEntry::getCrc

(PECL rar >= 0.1)

RarEntry::getCrc — Get CRC of the entry

说明

public string RarEntry::getCrc ( void )

Returns an hexadecimal string representation of the CRC of the archive entry.

参数

此函数没有参数。

返回值

Returns the CRC of the archive entry or FALSE on error.

更新日志

版本 | 说明
2.0.0 | This method now returns correct values for multiple volume archives.

RarEntry::getAttr
RarEntry::getFileTime
RarEntry


Get entry last modification time

RarEntry::getCrc
RarEntry::getHostOs
RarEntry
PHP Manual

RarEntry::getFileTime

(PECL rar >= 0.1)

RarEntry::getFileTime — Get entry last modification time

说明

public string RarEntry::getFileTime ( void )

Gets entry last modification time.

参数

此函数没有参数。

返回值

Returns entry last modification time as string in format YYYY-MM-DD HH:II:SS, or FALSE on error.

RarEntry::getCrc
RarEntry::getHostOs
RarEntry


Get entry host OS

RarEntry::getFileTime
RarEntry::getMethod
RarEntry
PHP Manual

RarEntry::getHostOs

(PECL rar >= 0.1)

RarEntry::getHostOs — Get entry host OS

说明

public int RarEntry::getHostOs ( void )

Returns the code of the host OS of the archive entry.

参数

此函数没有参数。

返回值

Returns the code of the host OS, or FALSE on error.

范例

Example #1 RarEntry::getHostOs() example (version >= 2.0.0)

<?php

$rar_file = rar_open('example.rar') or die("Failed to open Rar archive");

$entry = rar_entry_get($rar_file, 'Dir/file.txt') or die("Failed to find such entry");

switch ($entry->getHostOs()) {
    case RarEntry::HOST_MSDOS:
        echo "MS-DOS\n";
        break;
    case RarEntry::HOST_OS2:
        echo "OS2\n";
        break;
    case RarEntry::HOST_WIN32:
        echo "Win32\n";
        break;
    case RarEntry::HOST_MACOS:
        echo "MacOS\n";
        break;
    case RarEntry::HOST_UNIX:
        echo "Unix/Linux\n";
        break;
    case RarEntry::HOST_BEOS:
        echo "BeOS\n";
        break;
}

?>

Example #2 RarEntry::getHostOs() example (version <= 1.0.0)

<?php

$rar_file = rar_open('example.rar') or die("Failed to open Rar archive");

$entry = rar_entry_get($rar_file, 'Dir/file.txt') or die("Failed to find such entry");

switch ($entry->getHostOs()) {
    case RAR_HOST_MSDOS:
        echo "MS-DOS\n";
        break;
    case RAR_HOST_OS2:
        echo "OS2\n";
        break;
    case RAR_HOST_WIN32:
        echo "Win32\n";
        break;
    case RAR_HOST_MACOS:
        echo "MacOS\n";
        break;
    case RAR_HOST_UNIX:
        echo "Unix/Linux\n";
        break;
    case RAR_HOST_BEOS:
        echo "BeOS\n";
        break;
}

?>

参见

  • RarEntry::extract() - Extract entry from the archive

RarEntry::getFileTime
RarEntry::getMethod
RarEntry


Get pack method of the entry

RarEntry::getHostOs
RarEntry::getName
RarEntry
PHP Manual

RarEntry::getMethod

(PECL rar >= 0.1)

RarEntry::getMethod — Get pack method of the entry

说明

public int RarEntry::getMethod ( void )

RarEntry::getMethod() returns number of the method used when adding current archive entry.

参数

此函数没有参数。

返回值

Returns the method number or FALSE on error.

范例

Example #1 RarEntry::getMethod() example

<?php

$rar_file = rar_open('example.rar') or die("Failed to open Rar archive");

$entry = rar_entry_get($rar_file, 'Dir/file.txt') or die("Failed to find such entry");

echo "Method number: " . $entry->getMethod();

?>

RarEntry::getHostOs
RarEntry::getName
RarEntry


Get name of the entry

RarEntry::getMethod
RarEntry::getPackedSize
RarEntry
PHP Manual

RarEntry::getName

(PECL rar >= 0.1)

RarEntry::getName — Get name of the entry

说明

public string RarEntry::getName ( void )

Returns the name (with path) of the archive entry.

参数

此函数没有参数。

返回值

Returns the entry name as a string, or FALSE on error.

更新日志

版本 | 说明
2.0.0 | As of version 2.0.0, the returned string is encoded in Unicode/UTF-8.

范例

Example #1 RarEntry::getName() example

<?php

//this example is safe even in pages not encoded in UTF-8
//for those encoded in UTF-8, the call to mb_convert_encoding is unnecessary

$rar_file = rar_open('example.rar') or die("Failed to open Rar archive");

$entry = rar_entry_get($rar_file, 'Dir/file.txt') or die("Failed to find such entry");

echo "Entry name: " . mb_convert_encoding(
    htmlentities(
        $entry->getName(),
        ENT_COMPAT,
        "UTF-8"
    ),
    "HTML-ENTITIES",
    "UTF-8"
);

?>

RarEntry::getMethod
RarEntry::getPackedSize
RarEntry


Get packed size of the entry

RarEntry::getName
RarEntry::getStream
RarEntry
PHP Manual

RarEntry::getPackedSize

(PECL rar >= 0.1)

RarEntry::getPackedSize — Get packed size of the entry

说明

public int RarEntry::getPackedSize ( void )

Get packed size of the archive entry.

Note:

Note that on platforms with 32-bit longs (that includes Windows x64), the maximum size returned is capped at 2 GiB. Check the constant PHP_INT_MAX.

参数

此函数没有参数。

返回值

Returns the packed size, or FALSE on error.

更新日志

版本 | 说明
2.0.0 | This method now returns correct values of packed sizes bigger than 2 GiB on platforms with 64-bit integers and never returns negative values on other platforms.

范例

Example #1 RarEntry::getPackedSize() example

<?php

$rar_file = rar_open('example.rar') or die("Failed to open Rar archive");

$entry = rar_entry_get($rar_file, 'Dir/file.txt') or die("Failed to find such entry");

echo "Packed size of " . $entry->getName() . " = " . $entry->getPackedSize() . " bytes";

?>

RarEntry::getName
RarEntry::getStream
RarEntry


Get file handler for entry

RarEntry::getPackedSize
RarEntry::getUnpackedSize
RarEntry
PHP Manual

RarEntry::getStream

(PECL rar >= 2.0.0)

RarEntry::getStream — Get file handler for entry

说明

public resource RarEntry::getStream ([ string $password ] )

Returns a file handler that supports read operations. This handler provides on-the-fly decompression for this entry.

The handler is not invalidated by calling rar_close().

Warning

The resulting stream has no integrity verification. In particular, file corruption and decryption with a wrong a key will not be detected. It is the programmer's responsability to use the entry's CRC to check for integrity, if he so wishes.

参数

password

The password used to encrypt this entry. If the entry is not encrypted, this value will not be used and can be omitted. If this parameter is omitted and the entry is encrypted, the password given to rar_open(), if any, will be used. If a wrong password is given, either explicitly or implicitly via rar_open(), this method's resulting stream will produce wrong output. If no password is given and one is required, this method will fail and return FALSE. You can check whether an entry is encrypted with RarEntry::isEncrypted().

返回值

The file handler 或者在失败时返回 FALSE.

更新日志

版本 | 说明
3.0.0 | Support for RAR archives with repeated entry names is no longer defective.

范例

Example #1 RarEntry::getStream() example

<?php

$rar_file = rar_open('example.rar');
if ($rar_file === false)
    die("Failed to open Rar archive");

$entry = rar_entry_get($rar_file, 'Dir/file.txt');
if ($entry === false)
    die("Failed to find such entry");

$stream = $entry->getStream();
if ($stream === false)
    die("Failed to obtain stream.");

rar_close($rar_file); //stream is independent from file

while (!feof($stream)) {
    $buff = fread($stream, 8192);
    if ($buff !== false)
        echo $buff;
    else
        break; //fread error
}

fclose($stream);

?>

参见

  • RarEntry::extract() - Extract entry from the archive
  • rar:// wrapper

RarEntry::getPackedSize
RarEntry::getUnpackedSize
RarEntry


Get unpacked size of the entry

RarEntry::getStream
RarEntry::getVersion
RarEntry
PHP Manual

RarEntry::getUnpackedSize

(PECL rar >= 0.1)

RarEntry::getUnpackedSize — Get unpacked size of the entry

说明

public int RarEntry::getUnpackedSize ( void )

Get unpacked size of the archive entry.

Note:

Note that on platforms with 32-bit longs (that includes Windows x64), the maximum size returned is capped at 2 GiB. Check the constant PHP_INT_MAX.

参数

此函数没有参数。

返回值

Returns the unpacked size, or FALSE on error.

更新日志

版本 | 说明
2.0.0 | This method now returns correct values of unpacked sizes bigger than 2 GiB on platforms with 64-bit integers and never returns negative values on other platforms.

返回值

Example #1 RarEntry::getUnpackedSize() example

<?php

$rar_file = rar_open('example.rar') or die("Failed to open Rar archive");

$entry = rar_entry_get($rar_file, 'Dir/file.txt') or die("Failed to find such entry");

echo "Unpacked size of " . $entry->getName() . " = " . $entry->getPackedSize() . " bytes";

?>

RarEntry::getStream
RarEntry::getVersion
RarEntry


Get minimum version of RAR program required to unpack the entry

RarEntry::getUnpackedSize
RarEntry::isDirectory
RarEntry
PHP Manual

RarEntry::getVersion

(PECL rar >= 0.1)

RarEntry::getVersion — Get minimum version of RAR program required to unpack the entry

说明

public int RarEntry::getVersion ( void )

Returns minimum version of RAR program (e.g. WinRAR) required to unpack the entry. It is encoded as 10 * major version + minor version.

参数

此函数没有参数。

返回值

Returns the version or FALSE on error.

范例

Example #1 RarEntry::getVersion() example

<?php

$rar_file = rar_open('example.rar') or die("Failed to open Rar archive");

$entry = rar_entry_get($rar_file, 'Dir/file.txt') or die("Failed to find such entry");

echo "Rar version required for unpacking: " . $entry->getVersion();

?>

RarEntry::getUnpackedSize
RarEntry::isDirectory
RarEntry


Test whether an entry represents a directory

RarEntry::getVersion
RarEntry::isEncrypted
RarEntry
PHP Manual

RarEntry::isDirectory

(PECL rar >= 2.0.0)

RarEntry::isDirectory — Test whether an entry represents a directory

说明

public bool RarEntry::isDirectory ( void )

Tests whether the current entry is a directory.

参数

此函数没有参数。

返回值

Returns TRUE if this entry is a directory and FALSE otherwise.

注释

This function is only available starting with version 2.0.0, but one can also test whether an entry is a directory by checking the entry attributes, like this (only works for files compressed in RAR for Windows or Unix):

<?php
//...
//Open file, get entry and store in variable $e...
//...

$isDirectory = (bool) ((($e->getHostOs() == RAR_HOST_WIN32) && ($e->getAttr() & 0x10)) ||
    (($e->getHostOs() == RAR_HOST_UNIX) && (($e->getAttr() & 0xf000) == 0x4000)));
?>

RarEntry::getVersion
RarEntry::isEncrypted
RarEntry


Test whether an entry is encrypted

RarEntry::isDirectory
RarEntry::__toString
RarEntry
PHP Manual

RarEntry::isEncrypted

(PECL rar >= 2.0.0)

RarEntry::isEncrypted — Test whether an entry is encrypted

说明

public bool RarEntry::isEncrypted ( void )

Tests whether the current entry contents are encrypted.

Note:

The password used may differ between files inside the same RAR archive.

参数

此函数没有参数。

返回值

Returns TRUE if the current entry is encrypted and FALSE otherwise.

RarEntry::isDirectory
RarEntry::__toString
RarEntry


Get text representation of entry

RarEntry::isEncrypted
RarException
RarEntry
PHP Manual

RarEntry::__toString

(PECL rar >= 2.0.0)

RarEntry::__toString — Get text representation of entry

说明

public string RarEntry::__toString ( void )

RarEntry::__toString() returns a textual representation for this entry. It includes whether the entry is a file or a directory (symbolic links and other special objects will be treated as files), the UTF-8 name of the entry and its CRC. The form and content of this representation may be changed in the future, so they cannot be relied upon.

参数

此函数没有参数。

返回值

A textual representation for the entry.

RarEntry::isEncrypted
RarException
RarEntry


The RarException class

(PECL rar >= 2.0.0)

简介

This class serves two purposes: it is the type of the exceptions thrown by the RAR extension functions and methods and it allows, through static methods to query and define the error behaviour of the extension, i.e., whether exceptions are thrown or only warnings are emitted.

The following error codes are used:

  • -1 - error outside UnRAR library
  • 11 - insufficient memory
  • 12 - bad data
  • 13 - bad archive
  • 14 - unknown format
  • 15 - file open error
  • 16 - file create error
  • 17 - file close error
  • 18 - read error
  • 19 - write error
  • 20 - buffer too small
  • 21 - unkown RAR error
  • 22 - password required but not given

类摘要

final RarException extends Exception {
/* 方法 */
public static bool isUsingExceptions ( void )
public static void setUsingExceptions ( bool $using_exceptions )
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}

Table of Contents

  • RarException::isUsingExceptions — Check whether error handling with exceptions is in use
  • RarException::setUsingExceptions — Activate and deactivate error handling with exceptions
RarEntry::__toString
RarException::isUsingExceptions
Rar


Check whether error handling with exceptions is in use

RarException
RarException::setUsingExceptions
RarException
PHP Manual

RarException::isUsingExceptions

(PECL rar >= 2.0.0)

RarException::isUsingExceptions — Check whether error handling with exceptions is in use

说明

public static bool RarException::isUsingExceptions ( void )

Checks whether the RAR functions will emit warnings and return error values or whether they will throw exceptions in most of the circumstances (does not include some programmatic errors such as passing the wrong type of arguments).

参数

此函数没有参数。

返回值

Returns TRUE if exceptions are being used, FALSE otherwise.

范例

Example #1 RarException::isUsingExceptions() example

<?php
//The default is not to use exceptions
var_dump(RarException::isUsingExceptions());
?>

以上例程的输出类似于：

bool(false)

参见

  • RarException::setUsingExceptions() - Activate and deactivate error handling with exceptions

RarException
RarException::setUsingExceptions
RarException


Activate and deactivate error handling with exceptions

RarException::isUsingExceptions
Zip
RarException
PHP Manual

RarException::setUsingExceptions

(PECL rar >= 2.0.0)

RarException::setUsingExceptions — Activate and deactivate error handling with exceptions

说明

public static void RarException::setUsingExceptions ( bool $using_exceptions )

If and only if the argument is TRUE, then, instead of emitting warnings and returning a special value indicating error when the UnRAR library encounters an error, an exception of type RarException will be thrown.

Exceptions will also be thrown for the following errors, which occur outside the library (their error code will be -1):

  • attempting some operations on a closed RarArchive object or a RarEntry object relative to the first;
  • attempting to get an entry that does not exist with RarArchive::getEntry().

参数

using_exceptions

Should be TRUE to activate exception throwing, FALSE to deactivate (the default).

范例

Example #1 RarException::setUsingExceptions() example

<?php
var_dump(RarException::isUsingExceptions());
$arch = RarArchive::open("does_not_exist.rar");
var_dump($arch);

RarException::setUsingExceptions(true);
var_dump(RarException::isUsingExceptions());
$arch = RarArchive::open("does_not_exist.rar");
var_dump($arch); //not reached
?>

以上例程的输出类似于：

bool(false)

Warning: RarArchive::open(): Failed to open does_not_exist.rar: ERAR_EOPEN (file open error) in C:\php_rar\trunk\tests\test.php on line 3
bool(false)
bool(true)

Fatal error: Uncaught exception 'RarException' with message 'unRAR internal error: Failed to open does_not_exist.rar: ERAR_EOPEN (file open error)' in C:\php_rar\trunk\tests\test.php:8
Stack trace:
#0 C:\php_rar\trunk\tests\test.php(8): RarArchive::open('does_not_exist....')
#1 {main}
  thrown in C:\php_rar\trunk\tests\test.php on line 8

参见

  • RarException::isUsingExceptions() - Check whether error handling with exceptions is in use

RarException::isUsingExceptions
Zip
RarException


Zip

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • ZipArchive — ZipArchive 类
    • ZipArchive::addEmptyDir — Add a new directory
    • ZipArchive::addFile — Adds a file to a ZIP archive from the given path
    • ZipArchive::addFromString — Add a file to a ZIP archive using its contents
    • ZipArchive::addGlob — Add files from a directory by glob pattern
    • ZipArchive::addPattern — Add files from a directory by PCRE pattern
    • ZipArchive::close — Close the active archive (opened or newly created)
    • ZipArchive::deleteIndex — delete an entry in the archive using its index
    • ZipArchive::deleteName — delete an entry in the archive using its name
    • ZipArchive::extractTo — Extract the archive contents
    • ZipArchive::getArchiveComment — Returns the Zip archive comment
    • ZipArchive::getCommentIndex — Returns the comment of an entry using the entry index
    • ZipArchive::getCommentName — Returns the comment of an entry using the entry name
    • ZipArchive::getExternalAttributesIndex — Retrieve the external attributes of an entry defined by its index
    • ZipArchive::getExternalAttributesName — Retrieve the external attributes of an entry defined by its name
    • ZipArchive::getFromIndex — Returns the entry contents using its index
    • ZipArchive::getFromName — Returns the entry contents using its name
    • ZipArchive::getNameIndex — Returns the name of an entry using its index
    • ZipArchive::getStatusString — Returns the status error message, system and/or zip messages
    • ZipArchive::getStream — Get a file handler to the entry defined by its name (read only).
    • ZipArchive::locateName — Returns the index of the entry in the archive
    • ZipArchive::open — Open a ZIP file archive
    • ZipArchive::renameIndex — Renames an entry defined by its index
    • ZipArchive::renameName — Renames an entry defined by its name
    • ZipArchive::setArchiveComment — Set the comment of a ZIP archive
    • ZipArchive::setCommentIndex — Set the comment of an entry defined by its index
    • ZipArchive::setCommentName — Set the comment of an entry defined by its name
    • ZipArchive::setCompressionIndex — Set the compression method of an entry defined by its index
    • ZipArchive::setCompressionName — Set the compression method of an entry defined by its name
    • ZipArchive::setExternalAttributesIndex — Set the external attributes of an entry defined by its index
    • ZipArchive::setExternalAttributesName — Set the external attributes of an entry defined by its name
    • ZipArchive::setPassword — Set the password for the active archive
    • ZipArchive::statIndex — Get the details of an entry defined by its index.
    • ZipArchive::statName — Get the details of an entry defined by its name.
    • ZipArchive::unchangeAll — Undo all changes done in the archive
    • ZipArchive::unchangeArchive — Revert all global changes done in the archive.
    • ZipArchive::unchangeIndex — Revert all changes done to an entry at the given index
    • ZipArchive::unchangeName — Revert all changes done to an entry with the given name.
  • Zip 函数
    • zip_close — 关闭一个ZIP档案文件
    • zip_entry_close — 关闭目录项
    • zip_entry_compressedsize — 检索目录项压缩过后的大小
    • zip_entry_compressionmethod — 检索目录实体的压缩方法
    • zip_entry_filesize — 检索目录实体的实际大小
    • zip_entry_name — 检索目录项的名称
    • zip_entry_open — 打开用于读取的目录实体
    • zip_entry_read — 读取一个打开了的压缩目录实体
    • zip_open — 打开ZIP存档文件
    • zip_read — 读取ZIP存档文件中下一项
RarException::setUsingExceptions
简介
压缩与归档扩展


简介

此扩展可以让你透明地读写ZIP压缩文档以及它们里面的文件。

Zip
安装／配置
Zip


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Zip


需求

PHP 5.2.0 或更新版本

此扩展用到 Jean-loup Gailly 和 Mark Adle 的 » zlib 里的函数。

安装／配置
安装
安装／配置


安装

PHP 4

Note:

PHP 4.1.0 之前是实验性的支持 ZIP。

Warning

因为 PHP4 zip 扩展无人维护，所以我们推荐使用 PECL 扩展来代替绑定的这个。

Linux 系统

为了使用这些函数，必须在编译 PH P时用 --with-zip[=DIR] 配置选项来提供 zip 支持，其中 [DIR]是 ZZIPlib 库安装路径。

Windows

Windows 用户需要在 php.ini 里使 php_zip.dll 可用，以便使用这些函数。

PHP 5.2.0 以及更新版本

Linux 系统

为了使用这些函数，必须在编译 PHP 时用 --enable-zip 配置选项来提供 zip 支持。

Windows

Windows 用户需要在 php.ini 里使 php_zip.dll 可用，以便使用这些函数。

通过 PECL 安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/zip.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

在 PHP 4 中，此 DLL 位于 PHP Windows 二进制下载中的 extensions/ 目录。

需求
运行时配置
安装／配置


资源类型

在 Zip 模块里用到两种资源类型。第一种是 Zip 文档的 Zip 目录，第二种是文档条目的 Zip 条目。

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

ZipArchive 使用的类常量。 有以下三类常量：Flags（以 FL_ 为前缀），errors（以 ER_ 为前缀）以及 mode（没有前缀）。

ZIPARCHIVE::CREATE (integer)
如果不存在则创建一个zip压缩包。
ZIPARCHIVE::OVERWRITE (integer)
总是以一个新的压缩包开始，此模式下如果已经存在则会被覆盖。
ZIPARCHIVE::EXCL (integer)
如果压缩包已经存在，则出错。
ZIPARCHIVE::CHECKCONS (integer)
对压缩包执行额外的一致性检查，如果失败则显示错误。
ZIPARCHIVE::FL_NOCASE (integer)
查找时忽略名称的大小写。
ZIPARCHIVE::FL_NODIR (integer)
忽略目录部分
ZIPARCHIVE::FL_COMPRESSED (integer)
读取压缩数据
ZIPARCHIVE::FL_UNCHANGED (integer)
使用原始数据，忽略更改。
ZIPARCHIVE::CM_DEFAULT (integer)
更好的压缩或存储。
ZIPARCHIVE::CM_STORE (integer)
存储（不压缩）。
ZIPARCHIVE::CM_SHRINK (integer)
收缩
ZIPARCHIVE::CM_REDUCE_1 (integer)
用因子1换算
ZIPARCHIVE::CM_REDUCE_2 (integer)
用因子2换算
ZIPARCHIVE::CM_REDUCE_3 (integer)
用因子3换算
ZIPARCHIVE::CM_REDUCE_4 (integer)
用因子4换算
ZIPARCHIVE::CM_IMPLODE (integer)
聚爆
ZIPARCHIVE::CM_DEFLATE (integer)
deflated
ZIPARCHIVE::CM_DEFLATE64 (integer)
deflate64
ZIPARCHIVE::CM_PKWARE_IMPLODE (integer)
PKWARE imploding
ZIPARCHIVE::CM_BZIP2 (integer)
BZIP2算法
ZIPARCHIVE::ER_OK (integer)
没有错误。
ZIPARCHIVE::ER_MULTIDISK (integer)
不支持多磁盘zip压缩包。
ZIPARCHIVE::ER_RENAME (integer)
重命名临时文件失败。
ZIPARCHIVE::ER_CLOSE (integer)
关闭zip压缩包失败。
ZIPARCHIVE::ER_SEEK (integer)
寻址错误
ZIPARCHIVE::ER_READ (integer)
读取错误
ZIPARCHIVE::ER_WRITE (integer)
写入错误
ZIPARCHIVE::ER_CRC (integer)
CRC校验失败
ZIPARCHIVE::ER_ZIPCLOSED (integer)
zip压缩包已关闭
ZIPARCHIVE::ER_NOENT (integer)
没有文件
ZIPARCHIVE::ER_EXISTS (integer)
文件已经存在
ZIPARCHIVE::ER_OPEN (integer)
不能打开文件
ZIPARCHIVE::ER_TMPOPEN (integer)
创建临时文件失败
ZIPARCHIVE::ER_ZLIB (integer)
Zlib错误
ZIPARCHIVE::ER_MEMORY (integer)
内存分配失败
ZIPARCHIVE::ER_CHANGED (string)
条目已被改变
ZIPARCHIVE::ER_COMPNOTSUPP (integer)
不支持的压缩方式
ZIPARCHIVE::ER_EOF (integer)
过早的EOF
ZIPARCHIVE::ER_INVAL (integer)
无效的参数
ZIPARCHIVE::ER_NOZIP (integer)
不是一个zip压缩包
ZIPARCHIVE::ER_INTERNAL (integer)
Internal error
ZIPARCHIVE::ER_INCONS (integer)
Zip压缩包不一致
ZIPARCHIVE::ER_REMOVE (integer)
不能移除文件
ZIPARCHIVE::ER_DELETED (integer)
条目已被删除
资源类型
范例
Zip


范例

Example #1 创建一个 Zip 归档

<?php

$zip = new ZipArchive();
$filename = "./test112.zip";

if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
    exit("cannot open <$filename>\n");
}

$zip->addFromString("testfilephp.txt" . time(), "#1 This is a test string added as testfilephp.txt.\n");
$zip->addFromString("testfilephp2.txt" . time(), "#2 This is a test string added as testfilephp2.txt.\n");
$zip->addFile($thisdir . "/too.php","/testfromfile.php");
echo "numfiles: " . $zip->numFiles . "\n";
echo "status:" . $zip->status . "\n";
$zip->close();
?>

Example #2 输出文档细节和列表

<?php
$za = new ZipArchive();

$za->open('test_with_comment.zip');
print_r($za);
var_dump($za);
echo "numFiles: " . $za->numFiles . "\n";
echo "status: " . $za->status  . "\n";
echo "statusSys: " . $za->statusSys . "\n";
echo "filename: " . $za->filename . "\n";
echo "comment: " . $za->comment . "\n";

for ($i=0; $i<$za->numFiles;$i++) {
    echo "index: $i\n";
    print_r($za->statIndex($i));
}
echo "numFile:" . $za->numFiles . "\n";
?>

Example #3 Zip 流封装，读取一个 OpenOffice 文件的元信息

<?php
$reader = new XMLReader();

$reader->open('zip://' . dirname(__FILE__) . '/test.odt#meta.xml');
$odt_meta = array();
while ($reader->read()) {
    if ($reader->nodeType == XMLREADER::ELEMENT) {
        $elm = $reader->name;
    } else {
        if ($reader->nodeType == XMLREADER::END_ELEMENT && $reader->name == 'office:meta') {
            break;
        }
        if (!trim($reader->value)) {
            continue;
        }
        $odt_meta[$elm] = $reader->value;
    }
}
print_r($odt_meta);
?>

此例使用了旧的 API（PHP 4），它打开了一个 ZIP 文件归档，读取归档里的每个文件，并输出文件内容。此例用到的 test2.zip 文档是 ZZIPlib 源分布里测试文档中的一个。

Example #4 Zip 使用范例

<?php

$zip = zip_open("/tmp/test2.zip");

if ($zip) {
    while ($zip_entry = zip_read($zip)) {
        echo "Name:               " . zip_entry_name($zip_entry) . "\n";
        echo "Actual Filesize:    " . zip_entry_filesize($zip_entry) . "\n";
        echo "Compressed Size:    " . zip_entry_compressedsize($zip_entry) . "\n";
        echo "Compression Method: " . zip_entry_compressionmethod($zip_entry) . "\n";

        if (zip_entry_open($zip, $zip_entry, "r")) {
            echo "File Contents:\n";
            $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
            echo "$buf\n";

            zip_entry_close($zip_entry);
        }
        echo "\n";

    }

    zip_close($zip);

}
?>
预定义常量
ZipArchive
Zip


ZipArchive 类

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.1.0)

简介

一个用 Zip 压缩的文件存档。

类摘要

ZipArchive {
/* 属性 */
/* 方法 */
bool addEmptyDir ( string $dirname )
bool addFile ( string $filename [, string $localname = NULL [, int $start = 0 [, int $length = 0 ]]] )
bool addFromString ( string $localname , string $contents )
bool addGlob ( string $pattern [, int $flags = 0 [, array $options = array() ]] )
bool addPattern ( string $pattern [, string $path = "." [, array $options = array() ]] )
bool close ( void )
bool deleteIndex ( int $index )
bool deleteName ( string $name )
bool extractTo ( string $destination [, mixed $entries ] )
string getArchiveComment ([ int $flags ] )
string getCommentIndex ( int $index [, int $flags ] )
string getCommentName ( string $name [, int $flags ] )
bool GetExternalAttributesIndex ( int $index , int &$opsys , int &$attr [, int $flags ] )
bool getExternalAttributesName ( string $name , int &$opsys , int &$attr [, int $flags ] )
string getFromIndex ( int $index [, int $length = 0 [, int $flags ]] )
string getFromName ( string $name [, int $length = 0 [, int $flags ]] )
string getNameIndex ( int $index [, int $flags ] )
string getStatusString ( void )
resource getStream ( string $name )
int locateName ( string $name [, int $flags ] )
mixed open ( string $filename [, int $flags ] )
bool renameIndex ( int $index , string $newname )
bool renameName ( string $name , string $newname )
bool setArchiveComment ( string $comment )
bool setCommentIndex ( int $index , string $comment )
bool setCommentName ( string $name , string $comment )
bool setCompressionIndex ( int $index , int $comp_method [, int $comp_flags = 0 ] )
bool setCompressionName ( string $name , int $comp_method [, int $comp_flags = 0 ] )
bool setExternalAttributesIndex ( int $index , int $opsys , int $attr [, int $flags ] )
bool setExternalAttributesName ( string $name , int $opsys , int $attr [, int $flags ] )
public bool setPassword ( string $password )
array statIndex ( int $index [, int $flags ] )
array statName ( string $name [, int $flags ] )
bool unchangeAll ( void )
bool unchangeArchive ( void )
bool unchangeIndex ( int $index )
bool unchangeName ( string $name )
}

属性

status

Zip Archive 的状态

statusSys

Zip Archive 的系统状态

numFiles

压缩包里的文件数

filename

在文件系统里的文件名

comment

压缩包的注释

Table of Contents

  • ZipArchive::addEmptyDir — Add a new directory
  • ZipArchive::addFile — Adds a file to a ZIP archive from the given path
  • ZipArchive::addFromString — Add a file to a ZIP archive using its contents
  • ZipArchive::addGlob — Add files from a directory by glob pattern
  • ZipArchive::addPattern — Add files from a directory by PCRE pattern
  • ZipArchive::close — Close the active archive (opened or newly created)
  • ZipArchive::deleteIndex — delete an entry in the archive using its index
  • ZipArchive::deleteName — delete an entry in the archive using its name
  • ZipArchive::extractTo — Extract the archive contents
  • ZipArchive::getArchiveComment — Returns the Zip archive comment
  • ZipArchive::getCommentIndex — Returns the comment of an entry using the entry index
  • ZipArchive::getCommentName — Returns the comment of an entry using the entry name
  • ZipArchive::getExternalAttributesIndex — Retrieve the external attributes of an entry defined by its index
  • ZipArchive::getExternalAttributesName — Retrieve the external attributes of an entry defined by its name
  • ZipArchive::getFromIndex — Returns the entry contents using its index
  • ZipArchive::getFromName — Returns the entry contents using its name
  • ZipArchive::getNameIndex — Returns the name of an entry using its index
  • ZipArchive::getStatusString — Returns the status error message, system and/or zip messages
  • ZipArchive::getStream — Get a file handler to the entry defined by its name (read only).
  • ZipArchive::locateName — Returns the index of the entry in the archive
  • ZipArchive::open — Open a ZIP file archive
  • ZipArchive::renameIndex — Renames an entry defined by its index
  • ZipArchive::renameName — Renames an entry defined by its name
  • ZipArchive::setArchiveComment — Set the comment of a ZIP archive
  • ZipArchive::setCommentIndex — Set the comment of an entry defined by its index
  • ZipArchive::setCommentName — Set the comment of an entry defined by its name
  • ZipArchive::setCompressionIndex — Set the compression method of an entry defined by its index
  • ZipArchive::setCompressionName — Set the compression method of an entry defined by its name
  • ZipArchive::setExternalAttributesIndex — Set the external attributes of an entry defined by its index
  • ZipArchive::setExternalAttributesName — Set the external attributes of an entry defined by its name
  • ZipArchive::setPassword — Set the password for the active archive
  • ZipArchive::statIndex — Get the details of an entry defined by its index.
  • ZipArchive::statName — Get the details of an entry defined by its name.
  • ZipArchive::unchangeAll — Undo all changes done in the archive
  • ZipArchive::unchangeArchive — Revert all global changes done in the archive.
  • ZipArchive::unchangeIndex — Revert all changes done to an entry at the given index
  • ZipArchive::unchangeName — Revert all changes done to an entry with the given name.
范例
ZipArchive::addEmptyDir
Zip


Add a new directory

ZipArchive
ZipArchive::addFile
ZipArchive
PHP Manual

ZipArchive::addEmptyDir

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.8.0)

ZipArchive::addEmptyDir — Add a new directory

说明

bool ZipArchive::addEmptyDir ( string $dirname )

Adds an empty directory in the archive.

参数

dirname

The directory to add.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Create a new directory in an archive

<?php
$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
    if($zip->addEmptyDir('newDirectory')) {
        echo 'Created a new root directory';
    } else {
        echo 'Could not create the directory';
    }
    $zip->close();
} else {
    echo 'failed';
}
?>
ZipArchive
ZipArchive::addFile
ZipArchive


Adds a file to a ZIP archive from the given path

ZipArchive::addEmptyDir
ZipArchive::addFromString
ZipArchive
PHP Manual

ZipArchive::addFile

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.1.0)

ZipArchive::addFile — Adds a file to a ZIP archive from the given path

说明

bool ZipArchive::addFile ( string $filename [, string $localname = NULL [, int $start = 0 [, int $length = 0 ]]] )

Adds a file to a ZIP archive from a given path.

Note: For maximum portability, it is recommended to always use forward slashes (/) as directory separator in ZIP filenames.

参数

filename

The path to the file to add.

localname

If supplied, this is the local name inside the ZIP archive that will override the filename.

start

This parameter is not used but is required to extend ZipArchive.

length

This parameter is not used but is required to extend ZipArchive.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

This example opens a ZIP file archive test.zip and add the file /path/to/index.txt. as newname.txt.

Example #1 Open and add

<?php
$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
    $zip->addFile('/path/to/index.txt', 'newname.txt');
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>

注释

Note:

When a file is set to be added to the archive, PHP will lock the file. The lock is only released once the ZipArchive object has been closed, either via ZipArchive::close() or the ZipArchive object being destroyed. This may prevent you from being able to delete the file being added until after the lock has been released.

ZipArchive::addEmptyDir
ZipArchive::addFromString
ZipArchive


Add a file to a ZIP archive using its contents

ZipArchive::addFile
ZipArchive::addGlob
ZipArchive
PHP Manual

ZipArchive::addFromString

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.1.0)

ZipArchive::addFromString — Add a file to a ZIP archive using its contents

说明

bool ZipArchive::addFromString ( string $localname , string $contents )

Add a file to a ZIP archive using its contents.

Note: For maximum portability, it is recommended to always use forward slashes (/) as directory separator in ZIP filenames.

参数

localname

The name of the entry to create.

contents

The contents to use to create the entry. It is used in a binary safe mode.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Add an entry to a new archive

<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip', ZipArchive::CREATE);
if ($res === TRUE) {
    $zip->addFromString('test.txt', 'file content goes here');
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>

Example #2 Add file to a directory inside an archive

<?php
$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
    $zip->addFromString('dir/test.txt', 'file content goes here');
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>
ZipArchive::addFile
ZipArchive::addGlob
ZipArchive


Add files from a directory by glob pattern

ZipArchive::addFromString
ZipArchive::addPattern
ZipArchive
PHP Manual

ZipArchive::addGlob

(PHP 5 >= 5.3.0, PHP 7, PECL zip >= 1.9.0)

ZipArchive::addGlob — Add files from a directory by glob pattern

说明

bool ZipArchive::addGlob ( string $pattern [, int $flags = 0 [, array $options = array() ]] )

Add files from a directory which match the glob pattern.

Note: For maximum portability, it is recommended to always use forward slashes (/) as directory separator in ZIP filenames.

参数

pattern

A glob() pattern against which files will be matched.

flags

A bit mask of glob() flags.

options

An associative array of options. Available options are:

  • "add_path"

    Prefix to prepend when translating to the local path of the file within the archive. This is applied after any remove operations defined by the "remove_path" or "remove_all_path" options.

  • "remove_path"

    Prefix to remove from matching file paths before adding to the archive.

  • "remove_all_path"

    TRUE to use the file name only and add to the root of the archive.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ZipArchive::addGlob() example

Add all php scripts and text files from current working directory

<?php
$zip = new ZipArchive();
$ret = $zip->open('application.zip', ZipArchive::OVERWRITE);
if ($ret !== TRUE) {
    printf('Failed with code %d', $ret);
} else {
    $options = array('add_path' => 'sources/', 'remove_all_path' => TRUE);
    $zip->addGlob('*.{php,txt}', GLOB_BRACE, $options);
    $zip->close();
}
?>

参见

  • ZipArchive::addFile() - Adds a file to a ZIP archive from the given path
  • ZipArchive::addPattern() - Add files from a directory by PCRE pattern

ZipArchive::addFromString
ZipArchive::addPattern
ZipArchive


Add files from a directory by PCRE pattern

ZipArchive::addGlob
ZipArchive::close
ZipArchive
PHP Manual

ZipArchive::addPattern

(PHP 5 >= 5.3.0, PHP 7, PECL zip >= 1.9.0)

ZipArchive::addPattern — Add files from a directory by PCRE pattern

说明

bool ZipArchive::addPattern ( string $pattern [, string $path = "." [, array $options = array() ]] )

Add files from a directory which match the regular expression pattern. The operation is not recursive. The pattern will be matched against the file name only.

参数

pattern

A PCRE pattern against which files will be matched.

path

The directory that will be scanned. Defaults to the current working directory.

options

An associative array of options accepted by ZipArchive::addGlob().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ZipArchive::addPattern() example

Add all php scripts and text files from current directory

<?php
$zip = new ZipArchive();
$ret = $zip->open('application.zip', ZipArchive::OVERWRITE);
if ($ret !== TRUE) {
    printf('Failed with code %d', $ret);
} else {
    $directory = realpath('.');
    $options = array('add_path' => 'sources/', 'remove_path' => $directory);
    $zip->addPattern('/\.(?:php|txt)$/', $directory, $options);
    $zip->close();
}
?>

参见

  • ZipArchive::addFile() - Adds a file to a ZIP archive from the given path
  • ZipArchive::addGlob() - Add files from a directory by glob pattern

ZipArchive::addGlob
ZipArchive::close
ZipArchive


Close the active archive (opened or newly created)

ZipArchive::addPattern
ZipArchive::deleteIndex
ZipArchive
PHP Manual

ZipArchive::close

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.1.0)

ZipArchive::close — Close the active archive (opened or newly created)

说明

bool ZipArchive::close ( void )

Close opened or created archive and save changes. This method is automatically called at the end of the script.

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ZipArchive::addPattern
ZipArchive::deleteIndex
ZipArchive


delete an entry in the archive using its index

ZipArchive::close
ZipArchive::deleteName
ZipArchive
PHP Manual

ZipArchive::deleteIndex

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.5.0)

ZipArchive::deleteIndex — delete an entry in the archive using its index

说明

bool ZipArchive::deleteIndex ( int $index )

Delete an entry in the archive using its index.

参数

index

Index of the entry to delete.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Delete file from archive using its index

<?php
$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
    $zip->deleteIndex(2);
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>
ZipArchive::close
ZipArchive::deleteName
ZipArchive


delete an entry in the archive using its name

ZipArchive::deleteIndex
ZipArchive::extractTo
ZipArchive
PHP Manual

ZipArchive::deleteName

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.5.0)

ZipArchive::deleteName — delete an entry in the archive using its name

说明

bool ZipArchive::deleteName ( string $name )

Delete an entry in the archive using its name.

参数

name

Name of the entry to delete.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Deleting a file and directory from an archive, using names

<?php
$zip = new ZipArchive;
if ($zip->open('test1.zip') === TRUE) {
    $zip->deleteName('testfromfile.php');
    $zip->deleteName('testDir/');
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>
ZipArchive::deleteIndex
ZipArchive::extractTo
ZipArchive


Extract the archive contents

ZipArchive::deleteName
ZipArchive::getArchiveComment
ZipArchive
PHP Manual

ZipArchive::extractTo

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.1.0)

ZipArchive::extractTo — Extract the archive contents

说明

bool ZipArchive::extractTo ( string $destination [, mixed $entries ] )

Extract the complete archive or the given files to the specified destination.

参数

destination

Location where to extract the files.

entries

The entries to extract. It accepts either a single entry name or an array of names.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Extract all entries

<?php
$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
    $zip->extractTo('/my/destination/dir/');
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>

Example #2 Extract two entries

<?php
$zip = new ZipArchive;
$res = $zip->open('test_im.zip');
if ($res === TRUE) {
    $zip->extractTo('/my/destination/dir/', array('pear_item.gif', 'testfromfile.php'));
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>
ZipArchive::deleteName
ZipArchive::getArchiveComment
ZipArchive


Returns the Zip archive comment

ZipArchive::extractTo
ZipArchive::getCommentIndex
ZipArchive
PHP Manual

ZipArchive::getArchiveComment

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.1.0)

ZipArchive::getArchiveComment — Returns the Zip archive comment

说明

string ZipArchive::getArchiveComment ([ int $flags ] )

Returns the Zip archive comment.

参数

flags

If flags is set to ZipArchive::FL_UNCHANGED, the original unchanged comment is returned.

返回值

Returns the Zip archive comment 或者在失败时返回 FALSE.

范例

Example #1 Dump an archive comment

<?php
$zip = new ZipArchive;
$res = $zip->open('test_with_comment.zip');
if ($res === TRUE) {
    var_dump($zip->getArchiveComment());
    /* Or using the archive property */
    var_dump($zip->comment);
} else {
    echo 'failed, code:' . $res;
}
?>
ZipArchive::extractTo
ZipArchive::getCommentIndex
ZipArchive


Returns the comment of an entry using the entry index

ZipArchive::getArchiveComment
ZipArchive::getCommentName
ZipArchive
PHP Manual

ZipArchive::getCommentIndex

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.4.0)

ZipArchive::getCommentIndex — Returns the comment of an entry using the entry index

说明

string ZipArchive::getCommentIndex ( int $index [, int $flags ] )

Returns the comment of an entry using the entry index.

参数

index

Index of the entry

flags

If flags is set to ZipArchive::FL_UNCHANGED, the original unchanged comment is returned.

返回值

Returns the comment on success 或者在失败时返回 FALSE.

范例

Example #1 Dump an entry comment

<?php
$zip = new ZipArchive;
$res = $zip->open('test1.zip');
if ($res === TRUE) {
    var_dump($zip->getCommentIndex(1));
} else {
    echo 'failed, code:' . $res;
}
?>
ZipArchive::getArchiveComment
ZipArchive::getCommentName
ZipArchive


Returns the comment of an entry using the entry name

ZipArchive::getCommentIndex
ZipArchive::getExternalAttributesIndex
ZipArchive
PHP Manual

ZipArchive::getCommentName

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.4.0)

ZipArchive::getCommentName — Returns the comment of an entry using the entry name

说明

string ZipArchive::getCommentName ( string $name [, int $flags ] )

Returns the comment of an entry using the entry name.

参数

name

Name of the entry

flags

If flags is set to ZipArchive::FL_UNCHANGED, the original unchanged comment is returned.

返回值

Returns the comment on success 或者在失败时返回 FALSE.

范例

Example #1 Dump an entry comment

<?php
$zip = new ZipArchive;
$res = $zip->open('test1.zip');
if ($res === TRUE) {
    var_dump($zip->getCommentName('test/entry1.txt'));
} else {
    echo 'failed, code:' . $res;
}
?>
ZipArchive::getCommentIndex
ZipArchive::getExternalAttributesIndex
ZipArchive


Retrieve the external attributes of an entry defined by its index

ZipArchive::getCommentName
ZipArchive::getExternalAttributesName
ZipArchive
PHP Manual

ZipArchive::getExternalAttributesIndex

(PHP 5 >= 5.6.0, PHP 7, PECL zip >= 1.12.4)

ZipArchive::getExternalAttributesIndex — Retrieve the external attributes of an entry defined by its index

说明

bool ZipArchive::GetExternalAttributesIndex ( int $index , int &$opsys , int &$attr [, int $flags ] )

Retrieve the external attributes of an entry defined by its index.

参数

index

Index of the entry.

opsys

On success, receive the operating system code defined by one of the ZipArchive::OPSYS_ constants.

attr

On success, receive the external attributes. Value depends on operating system.

flags

If flags is set to ZipArchive::FL_UNCHANGED, the original unchanged attributes are returned.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

This example extract all the entries of a ZIP archive test.zip and set the Unix rights from external attributes.

Example #1 Extract all entries with Unix rights

<?php
$zip = new ZipArchive();
if ($zip->open('test.zip') === TRUE) {
    for ($idx=0 ; $s = $zip->statIndex($idx) ; $idx++) {
        if ($zip->extractTo('.', $s['name'])) {
            if ($zip->getExternalAttributesIndex($idx, $opsys, $attr)
                && $opsys==ZipArchive::OPSYS_UNIX) {
               chmod($s['name'], ($attr >> 16) & 0777);
            }
        }
    }
    $zip->close();
    echo "Ok\n";
} else {
    echo "KO\n";
}
?>
ZipArchive::getCommentName
ZipArchive::getExternalAttributesName
ZipArchive


Retrieve the external attributes of an entry defined by its name

ZipArchive::getExternalAttributesIndex
ZipArchive::getFromIndex
ZipArchive
PHP Manual

ZipArchive::getExternalAttributesName

(PHP 5 >= 5.6.0, PHP 7, PECL zip >= 1.12.4)

ZipArchive::getExternalAttributesName — Retrieve the external attributes of an entry defined by its name

说明

bool ZipArchive::getExternalAttributesName ( string $name , int &$opsys , int &$attr [, int $flags ] )

Retrieve the external attributes of an entry defined by its name.

参数

name

Name of the entry.

opsys

On success, receive the operating system code defined by one of the ZipArchive::OPSYS_ constants.

attr

On success, receive the external attributes. Value depends on operating system.

flags

If flags is set to ZipArchive::FL_UNCHANGED, the original unchanged attributes are returned.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ZipArchive::getExternalAttributesIndex
ZipArchive::getFromIndex
ZipArchive


Returns the entry contents using its index

ZipArchive::getExternalAttributesName
ZipArchive::getFromName
ZipArchive
PHP Manual

ZipArchive::getFromIndex

(No version information available, might only be in Git)

ZipArchive::getFromIndex — Returns the entry contents using its index

说明

string ZipArchive::getFromIndex ( int $index [, int $length = 0 [, int $flags ]] )

Returns the entry contents using its index.

参数

index

Index of the entry

length

The length to be read from the entry. If 0, then the entire entry is read.

flags

The flags to use to open the archive. the following values may be ORed to it.

  • ZipArchive::FL_UNCHANGED

  • ZipArchive::FL_COMPRESSED

返回值

Returns the contents of the entry on success 或者在失败时返回 FALSE.

范例

Example #1 Get the file contents

<?php
$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
    echo $zip->getFromIndex(2);
    $zip->close();
} else {
    echo 'failed';
}
?>

参见

  • ZipArchive::getFromName() - Returns the entry contents using its name

ZipArchive::getExternalAttributesName
ZipArchive::getFromName
ZipArchive


Returns the entry contents using its name

ZipArchive::getFromIndex
ZipArchive::getNameIndex
ZipArchive
PHP Manual

ZipArchive::getFromName

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.1.0)

ZipArchive::getFromName — Returns the entry contents using its name

说明

string ZipArchive::getFromName ( string $name [, int $length = 0 [, int $flags ]] )

Returns the entry contents using its name.

参数

name

Name of the entry

length

The length to be read from the entry. If 0, then the entire entry is read.

flags

The flags to use to find the entry. The following values may be ORed.

  • ZipArchive::FL_UNCHANGED

  • ZipArchive::FL_COMPRESSED

  • ZipArchive::FL_NOCASE

返回值

Returns the contents of the entry on success 或者在失败时返回 FALSE.

范例

Example #1 Get the file contents

<?php
$zip = new ZipArchive;
if ($zip->open('test1.zip') === TRUE) {
    echo $zip->getFromName('testfromfile.php');
    $zip->close();
} else {
    echo 'failed';
}
?>

Example #2 Convert an image from a zip entry

<?php
$z = new ZipArchive();
if ($z->open(dirname(__FILE__) . '/test_im.zip')) {
    $im_string = $z->getFromName("pear_item.gif");
    $im = imagecreatefromstring($im_string);
    imagepng($im, 'b.png');
}
?>

参见

  • ZipArchive::getFromIndex() - Returns the entry contents using its index

ZipArchive::getFromIndex
ZipArchive::getNameIndex
ZipArchive


Returns the name of an entry using its index

ZipArchive::getFromName
ZipArchive::getStatusString
ZipArchive
PHP Manual

ZipArchive::getNameIndex

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.5.0)

ZipArchive::getNameIndex — Returns the name of an entry using its index

说明

string ZipArchive::getNameIndex ( int $index [, int $flags ] )

Returns the name of an entry using its index.

参数

index

Index of the entry.

flags

If flags is set to ZipArchive::FL_UNCHANGED, the original unchanged name is returned.

返回值

Returns the name on success 或者在失败时返回 FALSE.

范例

Example #1 ZipArchive::getNameIndex() example

<?php
if ($zip->open('test.zip') == TRUE) {
 for ($i = 0; $i < $zip->numFiles; $i++) {
     $filename = $zip->getNameIndex($i);
     // ...
 }
}
?>

ZipArchive::getFromName
ZipArchive::getStatusString
ZipArchive


Returns the status error message, system and/or zip messages

ZipArchive::getNameIndex
ZipArchive::getStream
ZipArchive
PHP Manual

ZipArchive::getStatusString

(PHP 5 >= 5.2.7, PHP 7)

ZipArchive::getStatusString — Returns the status error message, system and/or zip messages

说明

string ZipArchive::getStatusString ( void )

Returns the status error message, system and/or zip messages.

参数

此函数没有参数。

返回值

Returns a string with the status message on success 或者在失败时返回 FALSE.

ZipArchive::getNameIndex
ZipArchive::getStream
ZipArchive


Get a file handler to the entry defined by its name (read only).

ZipArchive::getStatusString
ZipArchive::locateName
ZipArchive
PHP Manual

ZipArchive::getStream

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.1.0)

ZipArchive::getStream — Get a file handler to the entry defined by its name (read only).

说明

resource ZipArchive::getStream ( string $name )

Get a file handler to the entry defined by its name. For now it only supports read operations.

参数

name

The name of the entry to use.

返回值

Returns a file pointer (resource) on success 或者在失败时返回 FALSE.

范例

Example #1 Get the entry contents with fread() and store it

<?php
$contents = '';
$z = new ZipArchive();
if ($z->open('test.zip')) {
    $fp = $z->getStream('test');
    if(!$fp) exit("failed\n");

    while (!feof($fp)) {
        $contents .= fread($fp, 2);
    }

    fclose($fp);
    file_put_contents('t',$contents);
    echo "done.\n";
}
?>

Example #2 Same as the previous example but with fopen() and the zip stream wrapper

<?php
$contents = '';
$fp = fopen('zip://' . dirname(__FILE__) . '/test.zip#test', 'r');
if (!$fp) {
    exit("cannot open\n");
}
while (!feof($fp)) {
    $contents .= fread($fp, 2);
}
echo "$contents\n";
fclose($fp);
echo "done.\n";
?>

Example #3 Stream wrapper and image, can be used with the xml function as well

<?php
$im = imagecreatefromgif('zip://' . dirname(__FILE__) . '/test_im.zip#pear_item.gif');
imagepng($im, 'a.png');
?>
ZipArchive::getStatusString
ZipArchive::locateName
ZipArchive


Returns the index of the entry in the archive

ZipArchive::getStream
ZipArchive::open
ZipArchive
PHP Manual

ZipArchive::locateName

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.5.0)

ZipArchive::locateName — Returns the index of the entry in the archive

说明

int ZipArchive::locateName ( string $name [, int $flags ] )

Locates an entry using its name.

参数

name

The name of the entry to look up

flags

The flags are specified by ORing the following values, or 0 for none of them.

  • ZipArchive::FL_NOCASE

  • ZipArchive::FL_NODIR

返回值

Returns the index of the entry on success 或者在失败时返回 FALSE.

范例

Example #1 Create an archive and then use it with ZipArchive::locateName()

<?php
$file = 'testlocate.zip';

$zip = new ZipArchive;
if ($zip->open($file, ZipArchive::CREATE) !== TRUE) {
    exit('failed');
}

$zip->addFromString('entry1.txt', 'entry #1');
$zip->addFromString('entry2.txt', 'entry #2');
$zip->addFromString('dir/entry2d.txt', 'entry #2');

if (!$zip->status == ZipArchive::ER_OK) {
    echo "failed to write zip\n";
}
$zip->close();

if ($zip->open($file) !== TRUE) {
    exit('failed');
}

echo $zip->locateName('entry1.txt') . "\n";
echo $zip->locateName('eNtry2.txt') . "\n";
echo $zip->locateName('eNtry2.txt', ZipArchive::FL_NOCASE) . "\n";
echo $zip->locateName('enTRy2d.txt', ZipArchive::FL_NOCASE|ZipArchive::FL_NODIR) . "\n";
$zip->close();

?>

以上例程会输出：

0

1
2
ZipArchive::getStream
ZipArchive::open
ZipArchive


Open a ZIP file archive

ZipArchive::locateName
ZipArchive::renameIndex
ZipArchive
PHP Manual

ZipArchive::open

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.1.0)

ZipArchive::open — Open a ZIP file archive

说明

mixed ZipArchive::open ( string $filename [, int $flags ] )

Opens a new zip archive for reading, writing or modifying.

参数

filename

The file name of the ZIP archive to open.

flags

The mode to use to open the archive.

  • ZipArchive::OVERWRITE

  • ZipArchive::CREATE

  • ZipArchive::EXCL

  • ZipArchive::CHECKCONS

返回值

Error codes

Returns TRUE on success or the error code.

  • ZipArchive::ER_EXISTS

    File already exists.

  • ZipArchive::ER_INCONS

    Zip archive inconsistent.

  • ZipArchive::ER_INVAL

    Invalid argument.

  • ZipArchive::ER_MEMORY

    Malloc failure.

  • ZipArchive::ER_NOENT

    No such file.

  • ZipArchive::ER_NOZIP

    Not a zip archive.

  • ZipArchive::ER_OPEN

    Can't open file.

  • ZipArchive::ER_READ

    Read error.

  • ZipArchive::ER_SEEK

    Seek error.

范例

Example #1 Open and extract

<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip');
if ($res === TRUE) {
    echo 'ok';
    $zip->extractTo('test');
    $zip->close();
} else {
    echo 'failed, code:' . $res;
}
?>

Example #2 Create an archive

<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip', ZipArchive::CREATE);
if ($res === TRUE) {
    $zip->addFromString('test.txt', 'file content goes here');
    $zip->addFile('data.txt', 'entryname.txt');
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>
ZipArchive::locateName
ZipArchive::renameIndex
ZipArchive


Renames an entry defined by its index

ZipArchive::open
ZipArchive::renameName
ZipArchive
PHP Manual

ZipArchive::renameIndex

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.5.0)

ZipArchive::renameIndex — Renames an entry defined by its index

说明

bool ZipArchive::renameIndex ( int $index , string $newname )

Renames an entry defined by its index.

参数

index

Index of the entry to rename.

newname

New name.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Rename one entry

<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip');
if ($res === TRUE) {
    $zip->renameIndex(2,'newname.txt');
    $zip->close();
} else {
    echo 'failed, code:' . $res;
}
?>
ZipArchive::open
ZipArchive::renameName
ZipArchive


Renames an entry defined by its name

ZipArchive::renameIndex
ZipArchive::setArchiveComment
ZipArchive
PHP Manual

ZipArchive::renameName

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.5.0)

ZipArchive::renameName — Renames an entry defined by its name

说明

bool ZipArchive::renameName ( string $name , string $newname )

Renames an entry defined by its name.

参数

name

Name of the entry to rename.

newname

New name.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Rename one entry

<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip');
if ($res === TRUE) {
    $zip->renameName('currentname.txt','newname.txt');
    $zip->close();
} else {
    echo 'failed, code:' . $res;
}
?>
ZipArchive::renameIndex
ZipArchive::setArchiveComment
ZipArchive


Set the comment of a ZIP archive

ZipArchive::renameName
ZipArchive::setCommentIndex
ZipArchive
PHP Manual

ZipArchive::setArchiveComment

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.4.0)

ZipArchive::setArchiveComment — Set the comment of a ZIP archive

说明

bool ZipArchive::setArchiveComment ( string $comment )

Set the comment of a ZIP archive.

参数

comment

The contents of the comment.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Create an archive and set a comment

<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip', ZipArchive::CREATE);
if ($res === TRUE) {
    $zip->addFromString('test.txt', 'file content goes here');
    $zip->setArchiveComment('new archive comment');
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>
ZipArchive::renameName
ZipArchive::setCommentIndex
ZipArchive


Set the comment of an entry defined by its index

ZipArchive::setArchiveComment
ZipArchive::setCommentName
ZipArchive
PHP Manual

ZipArchive::setCommentIndex

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.4.0)

ZipArchive::setCommentIndex — Set the comment of an entry defined by its index

说明

bool ZipArchive::setCommentIndex ( int $index , string $comment )

Set the comment of an entry defined by its index.

参数

index

Index of the entry.

comment

The contents of the comment.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Open an archive and set a comment for an entry

<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip');
if ($res === TRUE) {
    $zip->setCommentIndex(2, 'new entry comment');
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>
ZipArchive::setArchiveComment
ZipArchive::setCommentName
ZipArchive


Set the comment of an entry defined by its name

ZipArchive::setCommentIndex
ZipArchive::setCompressionIndex
ZipArchive
PHP Manual

ZipArchive::setCommentName

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.4.0)

ZipArchive::setCommentName — Set the comment of an entry defined by its name

说明

bool ZipArchive::setCommentName ( string $name , string $comment )

Set the comment of an entry defined by its name.

参数

name

Name of the entry.

comment

The contents of the comment.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Open an archive and set a comment for an entry

<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip');
if ($res === TRUE) {
    $zip->setCommentName('entry1.txt', 'new entry comment');
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>
ZipArchive::setCommentIndex
ZipArchive::setCompressionIndex
ZipArchive


Set the compression method of an entry defined by its index

ZipArchive::setCommentName
ZipArchive::setCompressionName
ZipArchive
PHP Manual

ZipArchive::setCompressionIndex

(PHP 7, PECL zip >= 1.13.0)

ZipArchive::setCompressionIndex — Set the compression method of an entry defined by its index

说明

bool ZipArchive::setCompressionIndex ( int $index , int $comp_method [, int $comp_flags = 0 ] )

Set the compression method of an entry defined by its index.

参数

index

Index of the entry.

comp_method

The compression method. Either
ZipArchive::CM_DEFAULT,
ZipArchive::CM_STORE or
ZipArchive::CM_DEFLATE.

comp_flags

Compression flags. Currently unused.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Add files with different compression methods to an archive

<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip', ZipArchive::CREATE);
if ($res === TRUE) {
    $zip->addFromString('foo', 'Some text');
    $zip->addFromString('bar', 'Some other text');
    $zip->setCompressionIndex(0, ZipArchive::CM_STORE);
    $zip->setCompressionIndex(1, ZipArchive::CM_DEFLATE);
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>
ZipArchive::setCommentName
ZipArchive::setCompressionName
ZipArchive


Set the compression method of an entry defined by its name

ZipArchive::setCompressionIndex
ZipArchive::setExternalAttributesIndex
ZipArchive
PHP Manual

ZipArchive::setCompressionName

(PHP 7, PECL zip >= 1.13.0)

ZipArchive::setCompressionName — Set the compression method of an entry defined by its name

说明

bool ZipArchive::setCompressionName ( string $name , int $comp_method [, int $comp_flags = 0 ] )

Set the compression method of an entry defined by its name.

参数

name

Name of the entry.

comp_method

The compression method. Either
ZipArchive::CM_DEFAULT,
ZipArchive::CM_STORE or
ZipArchive::CM_DEFLATE.

comp_flags

Compression flags. Currently unused.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Add files with different compression methods to an archive

<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip', ZipArchive::CREATE);
if ($res === TRUE) {
    $zip->addFromString('foo', 'Some text');
    $zip->addFromString('bar', 'Some other text');
    $zip->setCompressionName('foo', ZipArchive::CM_STORE);
    $zip->setCompressionName('bar', ZipArchive::CM_DEFLATE);
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
?>
ZipArchive::setCompressionIndex
ZipArchive::setExternalAttributesIndex
ZipArchive


Set the external attributes of an entry defined by its index

ZipArchive::setCompressionName
ZipArchive::setExternalAttributesName
ZipArchive
PHP Manual

ZipArchive::setExternalAttributesIndex

(PHP 5 >= 5.6.0, PHP 7, PECL zip >= 1.12.4)

ZipArchive::setExternalAttributesIndex — Set the external attributes of an entry defined by its index

说明

bool ZipArchive::setExternalAttributesIndex ( int $index , int $opsys , int $attr [, int $flags ] )

Set the external attributes of an entry defined by its index.

参数

index

Index of the entry.

opsys

The operating system code defined by one of the ZipArchive::OPSYS_ constants.

attr

The external attributes. Value depends on operating system.

flags

Optional flags. Currently unused.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ZipArchive::setCompressionName
ZipArchive::setExternalAttributesName
ZipArchive


Set the external attributes of an entry defined by its name

ZipArchive::setExternalAttributesIndex
ZipArchive::setPassword
ZipArchive
PHP Manual

ZipArchive::setExternalAttributesName

(PHP 5 >= 5.6.0, PHP 7, PECL zip >= 1.12.4)

ZipArchive::setExternalAttributesName — Set the external attributes of an entry defined by its name

说明

bool ZipArchive::setExternalAttributesName ( string $name , int $opsys , int $attr [, int $flags ] )

Set the external attributes of an entry defined by its name.

参数

name

Name of the entry.

opsys

The operating system code defined by one of the ZipArchive::OPSYS_ constants.

attr

The external attributes. Value depends on operating system.

flags

Optional flags. Currently unused.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

This example opens a ZIP file archive test.zip and add the file test.txt with its Unix rights as external attributes.

Example #1 Archive a file, with its Unix rights

<?php
$zip = new ZipArchive();
$stat = stat($filename='test.txt');
if (is_array($stat) && $zip->open('test.zip', ZipArchive::CREATE) === TRUE) {
    $zip->addFile($filename);
    $zip->setExternalAttributesName($filename, ZipArchive::OPSYS_UNIX, $stat['mode'] << 16);
    $zip->close();
    echo "Ok\n";
} else {
    echo "KO\n";
}
?>
ZipArchive::setExternalAttributesIndex
ZipArchive::setPassword
ZipArchive


Set the password for the active archive

ZipArchive::setExternalAttributesName
ZipArchive::statIndex
ZipArchive
PHP Manual

ZipArchive::setPassword

(PHP 5 >= 5.6.0, PHP 7, PECL zip >= 1.12.4)

ZipArchive::setPassword — Set the password for the active archive

说明

public bool ZipArchive::setPassword ( string $password )

Sets the password for the active archive.

参数

password

The password to be used for the archive.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note:

This function only sets the password to be used to decompress the archive; it does not turn a non-password-protected ZipArchive into a password-protected ZipArchive.

ZipArchive::setExternalAttributesName
ZipArchive::statIndex
ZipArchive


Get the details of an entry defined by its index.

ZipArchive::setPassword
ZipArchive::statName
ZipArchive
PHP Manual

ZipArchive::statIndex

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.1.0)

ZipArchive::statIndex — Get the details of an entry defined by its index.

说明

array ZipArchive::statIndex ( int $index [, int $flags ] )

The function obtains information about the entry defined by its index.

参数

index

Index of the entry

flags

ZipArchive::FL_UNCHANGED may be ORed to it to request information about the original file in the archive, ignoring any changes made.

返回值

Returns an array containing the entry details 或者在失败时返回 FALSE.

范例

Example #1 Dump the stat info of an entry

<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip');
if ($res === TRUE) {
    print_r($zip->statIndex(3));
    $zip->close();
} else {
    echo 'failed, code:' . $res;
}
?>

以上例程的输出类似于：

Array
(
    [name] => foobar/baz
    [index] => 3
    [crc] => 499465816
    [size] => 27
    [mtime] => 1123164748
    [comp_size] => 24
    [comp_method] => 8
)
ZipArchive::setPassword
ZipArchive::statName
ZipArchive


Get the details of an entry defined by its name.

ZipArchive::statIndex
ZipArchive::unchangeAll
ZipArchive
PHP Manual

ZipArchive::statName

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.5.0)

ZipArchive::statName — Get the details of an entry defined by its name.

说明

array ZipArchive::statName ( string $name [, int $flags ] )

The function obtains information about the entry defined by its name.

参数

name

Name of the entry

flags

The flags argument specifies how the name lookup should be done. Also, ZipArchive::FL_UNCHANGED may be ORed to it to request information about the original file in the archive, ignoring any changes made.

  • ZipArchive::FL_NOCASE

  • ZipArchive::FL_NODIR

  • ZipArchive::FL_UNCHANGED

返回值

Returns an array containing the entry details 或者在失败时返回 FALSE.

范例

Example #1 Dump the stat info of an entry

<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip');
if ($res === TRUE) {
    print_r($zip->statName('foobar/baz'));
    $zip->close();
} else {
    echo 'failed, code:' . $res;
}
?>

以上例程的输出类似于：

Array
(
    [name] => foobar/baz
    [index] => 3
    [crc] => 499465816
    [size] => 27
    [mtime] => 1123164748
    [comp_size] => 24
    [comp_method] => 8
)
ZipArchive::statIndex
ZipArchive::unchangeAll
ZipArchive


Undo all changes done in the archive

ZipArchive::statName
ZipArchive::unchangeArchive
ZipArchive
PHP Manual

ZipArchive::unchangeAll

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.1.0)

ZipArchive::unchangeAll — Undo all changes done in the archive

说明

bool ZipArchive::unchangeAll ( void )

Undo all changes done in the archive.

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ZipArchive::statName
ZipArchive::unchangeArchive
ZipArchive


Revert all global changes done in the archive.

ZipArchive::unchangeAll
ZipArchive::unchangeIndex
ZipArchive
PHP Manual

ZipArchive::unchangeArchive

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.1.0)

ZipArchive::unchangeArchive — Revert all global changes done in the archive.

说明

bool ZipArchive::unchangeArchive ( void )

Revert all global changes to the archive. For now, this only reverts archive comment changes.

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ZipArchive::unchangeAll
ZipArchive::unchangeIndex
ZipArchive


Revert all changes done to an entry at the given index

ZipArchive::unchangeArchive
ZipArchive::unchangeName
ZipArchive
PHP Manual

ZipArchive::unchangeIndex

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.1.0)

ZipArchive::unchangeIndex — Revert all changes done to an entry at the given index

说明

bool ZipArchive::unchangeIndex ( int $index )

Revert all changes done to an entry at the given index.

参数

index

Index of the entry.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ZipArchive::unchangeArchive
ZipArchive::unchangeName
ZipArchive


Revert all changes done to an entry with the given name.

ZipArchive::unchangeIndex
Zip 函数
ZipArchive
PHP Manual

ZipArchive::unchangeName

(PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.5.0)

ZipArchive::unchangeName — Revert all changes done to an entry with the given name.

说明

bool ZipArchive::unchangeName ( string $name )

Revert all changes done to an entry.

参数

name

Name of the entry.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ZipArchive::unchangeIndex
Zip 函数
ZipArchive


Zip 函数

Table of Contents

  • zip_close — 关闭一个ZIP档案文件
  • zip_entry_close — 关闭目录项
  • zip_entry_compressedsize — 检索目录项压缩过后的大小
  • zip_entry_compressionmethod — 检索目录实体的压缩方法
  • zip_entry_filesize — 检索目录实体的实际大小
  • zip_entry_name — 检索目录项的名称
  • zip_entry_open — 打开用于读取的目录实体
  • zip_entry_read — 读取一个打开了的压缩目录实体
  • zip_open — 打开ZIP存档文件
  • zip_read — 读取ZIP存档文件中下一项
ZipArchive::unchangeName
zip_close
Zip


关闭一个ZIP档案文件

Zip 函数
zip_entry_close
Zip 函数
PHP Manual

zip_close

(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.0.0)

zip_close — 关闭一个ZIP档案文件

说明

void zip_close ( resource $zip )

关闭一个指定的ZIP档案文件。

参数

zip

一个由zip_open()打开的ZIP文件资源。

返回值

没有返回值。

参见

  • zip_open() - 打开ZIP存档文件
  • zip_read() - 读取ZIP存档文件中下一项

Zip 函数
zip_entry_close
Zip 函数


关闭目录项

zip_close
zip_entry_compressedsize
Zip 函数
PHP Manual

zip_entry_close

(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.0.0)

zip_entry_close — 关闭目录项

说明

bool zip_entry_close ( resource $zip_entry )

关闭指定的目录项。

参数

zip_entry

一个由zip_entry_open()打开的项目。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • zip_entry_open() - 打开用于读取的目录实体
  • zip_entry_read() - 读取一个打开了的压缩目录实体

zip_close
zip_entry_compressedsize
Zip 函数


检索目录项压缩过后的大小

zip_entry_close
zip_entry_compressionmethod
Zip 函数
PHP Manual

zip_entry_compressedsize

(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.0.0)

zip_entry_compressedsize — 检索目录项压缩过后的大小

说明

int zip_entry_compressedsize ( resource $zip_entry )

返回指定目录项压缩过后的大小。

参数

zip_entry

由函数zip_read() 返回的目录项。

返回值

压缩后的大小。

参见

  • zip_open() - 打开ZIP存档文件
  • zip_read() - 读取ZIP存档文件中下一项

zip_entry_close
zip_entry_compressionmethod
Zip 函数


检索目录实体的压缩方法

zip_entry_compressedsize
zip_entry_filesize
Zip 函数
PHP Manual

zip_entry_compressionmethod

(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.0.0)

zip_entry_compressionmethod — 检索目录实体的压缩方法

说明

string zip_entry_compressionmethod ( resource $zip_entry )

返回由函数zip_entry确定的目录实体的压缩方法。

参数

zip_entry

由函数zip_read() 返回的目录实体。

返回值

压缩方法。

参见

  • zip_open() - 打开ZIP存档文件
  • zip_read() - 读取ZIP存档文件中下一项

zip_entry_compressedsize
zip_entry_filesize
Zip 函数


检索目录实体的实际大小

zip_entry_compressionmethod
zip_entry_name
Zip 函数
PHP Manual

zip_entry_filesize

(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.0.0)

zip_entry_filesize — 检索目录实体的实际大小

说明

int zip_entry_filesize ( resource $zip_entry )

返回指定目录实体的实际大小。

参数

zip_entry

由函数zip_read() 返回的目录实体。

返回值

返回该目录实体的大小。

参见

  • zip_open() - 打开ZIP存档文件
  • zip_read() - 读取ZIP存档文件中下一项

zip_entry_compressionmethod
zip_entry_name
Zip 函数


检索目录项的名称

zip_entry_filesize
zip_entry_open
Zip 函数
PHP Manual

zip_entry_name

(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.0.0)

zip_entry_name — 检索目录项的名称

说明

string zip_entry_name ( resource $zip_entry )

返回指定目录项的名称。

参数

zip_entry

由函数zip_read() 返回的目录项。

返回值

目录项的名称。

参见

  • zip_open() - 打开ZIP存档文件
  • zip_read() - 读取ZIP存档文件中下一项

zip_entry_filesize
zip_entry_open
Zip 函数


打开用于读取的目录实体

zip_entry_name
zip_entry_read
Zip 函数
PHP Manual

zip_entry_open

(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.0.0)

zip_entry_open — 打开用于读取的目录实体

说明

bool zip_entry_open ( resource $zip , resource $zip_entry [, string $mode ] )

打开ZIP文件中的目录实体以便后续读取。

参数

zip

由函数zip_open()返回的有效的资源句柄。

zip_entry

由函数zip_read()返回的目录实体。

mode

任何在fopen()处理文档中指定的模式。

Note:

由于ZIP在PHP中只支持读取模式，所以mode 实际上总是被设置为"rb"(其他模式会被忽略)。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

Note:

与fopen()和其他类似的方法不同，zip_entry_open() 的返回值只用于标示该操作结果，不需要读取或关闭该目录实体。

参见

  • zip_entry_close() - 关闭目录项
  • zip_entry_read() - 读取一个打开了的压缩目录实体

zip_entry_name
zip_entry_read
Zip 函数


读取一个打开了的压缩目录实体

zip_entry_open
zip_open
Zip 函数
PHP Manual

zip_entry_read

(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.0.0)

zip_entry_read — 读取一个打开了的压缩目录实体

说明

string zip_entry_read ( resource $zip_entry [, int $length = 1024 ] )

读取一个打开了的压缩目录实体。

参数

zip_entry

由函数zip_read() 返回的目录实体。

length

需要返回的字节数。

Note:

这字节数应该是你所要读取的未压缩的字节数。

返回值

成功的时候返回读取到的数据；到达文件末尾的时候返回一个空的字符串； 读取出错的时候则会返回FALSE

参见

  • zip_entry_open() - 打开用于读取的目录实体
  • zip_entry_close() - 关闭目录项
  • zip_entry_filesize() - 检索目录实体的实际大小

zip_entry_open
zip_open
Zip 函数


打开ZIP存档文件

zip_entry_read
zip_read
Zip 函数
PHP Manual

zip_open

(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.0.0)

zip_open — 打开ZIP存档文件

说明

resource zip_open ( string $filename )

打开一个新的ZIP归档文件进行读取。

参数

filename

待打开ZIP归档的文件名。

返回值

成功的时候返回一个资源句柄供函数zip_read() 和 zip_close()后续使用; 如果filename 文件不存在或者出现其他错误，则会返回相应的错误码。

参见

  • zip_read() - 读取ZIP存档文件中下一项
  • zip_close() - 关闭一个ZIP档案文件

zip_entry_read
zip_read
Zip 函数


读取ZIP存档文件中下一项

zip_open
Zlib
Zip 函数
PHP Manual

zip_read

(PHP 4 >= 4.1.0, PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.0.0)

zip_read — 读取ZIP存档文件中下一项

说明

resource zip_read ( resource $zip )

读取ZIP存档文件中下一项。

参数

zip

一个ZIP压缩文件,该ZIP归档文件之前应由函数 zip_open() 打开。

返回值

成功的时候返回该当前实体资源供zip_entry_... 系列函数后续使用; 如果没有更多的读取项，则会返回 FALSE 如果遇到错误则会返回相应的错误码。

参见

  • zip_open() - 打开ZIP存档文件
  • zip_close() - 关闭一个ZIP档案文件
  • zip_entry_open() - 打开用于读取的目录实体
  • zip_entry_read() - 读取一个打开了的压缩目录实体

zip_open
Zlib
Zip 函数


Zlib Compression

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • Zlib 函数
    • deflate_add — Incrementally deflate data
    • deflate_init — Initialize an incremental deflate context
    • gzclose — Close an open gz-file pointer
    • gzcompress — Compress a string
    • gzdecode — Decodes a gzip compressed string
    • gzdeflate — Deflate a string
    • gzencode — Create a gzip compressed string
    • gzeof — Test for EOF on a gz-file pointer
    • gzfile — Read entire gz-file into an array
    • gzgetc — Get character from gz-file pointer
    • gzgets — Get line from file pointer
    • gzgetss — Get line from gz-file pointer and strip HTML tags
    • gzinflate — Inflate a deflated string
    • gzopen — Open gz-file
    • gzpassthru — Output all remaining data on a gz-file pointer
    • gzputs — 别名 gzwrite
    • gzread — Binary-safe gz-file read
    • gzrewind — Rewind the position of a gz-file pointer
    • gzseek — Seek on a gz-file pointer
    • gztell — Tell gz-file pointer read/write position
    • gzuncompress — Uncompress a compressed string
    • gzwrite — Binary-safe gz-file write
    • inflate_add — Incrementally inflate encoded data
    • inflate_init — Initialize an incremental inflate context
    • readgzfile — Output a gz-file
    • zlib_decode — Uncompress any raw/gzip/zlib encoded data
    • zlib_encode — Compress data with the specified encoding
    • zlib_get_coding_type — Returns the coding type used for output compression
zip_read
简介
压缩与归档扩展


简介

This module enables you to transparently read and write gzip (.gz) compressed files, through versions of most of the filesystem functions which work with gzip-compressed files (and uncompressed files, too, but not with sockets).

Note:

Version 4.0.4 introduced a fopen-wrapper for .gz-files, so that you can use a special zlib: URL to access compressed files transparently using the normal f*() file access functions if you prefix the filename or path with zlib: when calling fopen(). This feature requires a C runtime library that provides the fopencookie() function. Up to now the GNU libc seems to be the only library that provides this feature.

In PHP 4.3.0, zlib: has been changed to compress.zlib:// to prevent ambiguities with filenames containing ':' characters. The fopencookie() function is no longer required. More information is available in the section about zlib://.

Zlib
安装／配置
Zlib


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Zlib


需求

This module uses the functions of » zlib by Jean-loup Gailly and Mark Adler. You have to use a zlib version >= 1.0.9 with this module.

安装／配置
安装
安装／配置


安装

Zlib support in PHP is not enabled by default. You will need to configure PHP --with-zlib[=DIR]

PHP 的 Windows 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。

Note: Built-in support for zlib on Windows is available with PHP 4.3.0.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

The zlib extension offers the option to transparently compress your pages on-the-fly, if the requesting browser supports this. Therefore there are three options in the configuration file php.ini.

Zlib Configuration Options
名字 | 默认 | 可修改范围 | 更新日志
zlib.output_compression | "0" | PHP_INI_ALL | Available since PHP 4.0.5.
zlib.output_compression_level | "-1" | PHP_INI_ALL | Available since PHP 4.3.0.
zlib.output_handler | "" | PHP_INI_ALL | Available since PHP 4.3.0.
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

zlib.output_compression boolean/integer

Whether to transparently compress pages. If this option is set to "On" in php.ini or the Apache configuration, pages are compressed if the browser sends an "Accept-Encoding: gzip" or "deflate" header. "Content-Encoding: gzip" (respectively "deflate") and "Vary: Accept-Encoding" headers are added to the output. In runtime, it can be set only before sending any output.

This option also accepts integer values instead of boolean "On"/"Off", using this you can set the output buffer size (default is 4KB).

Note:

output_handler must be empty if this is set 'On' ! Instead you must use zlib.output_handler.

zlib.output_compression_level integer

Compression level used for transparent output compression. Specify a value between 0 (no compression) to 9 (most compression). The default value, -1, lets the server decide which level to use.

zlib.output_handler string

You cannot specify additional output handlers if zlib.output_compression is activated here. This setting does the same as output_handler but in a different order.

安装
资源类型
安装／配置


资源类型

This extension defines a file pointer resource returned by gzopen().

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

FORCE_GZIP (integer)
FORCE_DEFLATE (integer)
ZLIB_ENCODING_RAW (integer)
DEFLATE algorithm as per RFC 1951. Available as of PHP 7.0.0.
ZLIB_ENCODING_DEFLATE (integer)
ZLIB compression algorithm as per RFC 1950. Available as of PHP 7.0.0.
ZLIB_ENCODING_GZIP (integer)
GZIP algorithm as per RFC 1952. Available as of PHP 7.0.0.
ZLIB_FILTERED (integer)
Available as of PHP 7.0.0.
ZLIB_HUFFMAN_ONLY (integer)
Available as of PHP 7.0.0.
ZLIB_FIXED (integer)
Available as of PHP 7.0.0.
ZLIB_RLE (integer)
Available as of PHP 7.0.0.
ZLIB_DEFAULT_STRATEGY (integer)
Available as of PHP 7.0.0.
ZLIB_BLOCK (integer)
Available as of PHP 7.0.0.
ZLIB_NO_FLUSH (integer)
Available as of PHP 7.0.0.
ZLIB_PARTIAL_FLUSH (integer)
Available as of PHP 7.0.0.
ZLIB_SYNC_FLUSH (integer)
Available as of PHP 7.0.0.
ZLIB_FULL_FLUSH (integer)
Available as of PHP 7.0.0.
ZLIB_FINISH (integer)
Available as of PHP 7.0.0.
资源类型
范例
Zlib


范例

This example opens a temporary file and writes a test string to it, then it prints out the content of this file twice.

Example #1 Small Zlib Example

<?php

$filename = tempnam('/tmp', 'zlibtest') . '.gz';
echo "<html>\n<head></head>\n<body>\n<pre>\n";
$s = "Only a test, test, test, test, test, test, test, test!\n";

// open file for writing with maximum compression
$zp = gzopen($filename, "w9");

// write string to file
gzwrite($zp, $s);

// close file
gzclose($zp);

// open file for reading
$zp = gzopen($filename, "r");

// read 3 char
echo gzread($zp, 3);

// output until end of the file and close it.
gzpassthru($zp);
gzclose($zp);

echo "\n";

// open file and print content (the 2nd time).
if (readgzfile($filename) != strlen($s)) {
        echo "Error with zlib functions!";
}
unlink($filename);
echo "</pre>\n</body>\n</html>\n";

?>

Example #2 Working with the incremental compression and decompression API as of PHP 7.0.0

// Perform GZIP compression:
$deflateContext = deflate_init(ZLIB_ENCODING_GZIP);
$compressed = deflate_add($deflateContext, "Data to compress", ZLIB_NO_FLUSH);
$compressed .= deflate_add($deflateContext, ", more data", ZLIB_NO_FLUSH);
$compressed .= deflate_add($deflateContext, ", and even more data!", ZLIB_FINISH);?>

// Perform GZIP decompression:
$inflateContext = inflate_init(ZLIB_ENCODING_GZIP);
$uncompressed = inflate_add($inflateContext, $compressed, ZLIB_NO_FLUSH);
$uncompressed .= inflate_add($inflateContext, NULL, ZLIB_FINISH);
echo $uncompressed;

以上例程会输出：

Data to compress, more data, and even more data!
预定义常量
Zlib 函数
Zlib


Zlib 函数

Table of Contents

  • deflate_add — Incrementally deflate data
  • deflate_init — Initialize an incremental deflate context
  • gzclose — Close an open gz-file pointer
  • gzcompress — Compress a string
  • gzdecode — Decodes a gzip compressed string
  • gzdeflate — Deflate a string
  • gzencode — Create a gzip compressed string
  • gzeof — Test for EOF on a gz-file pointer
  • gzfile — Read entire gz-file into an array
  • gzgetc — Get character from gz-file pointer
  • gzgets — Get line from file pointer
  • gzgetss — Get line from gz-file pointer and strip HTML tags
  • gzinflate — Inflate a deflated string
  • gzopen — Open gz-file
  • gzpassthru — Output all remaining data on a gz-file pointer
  • gzputs — 别名 gzwrite
  • gzread — Binary-safe gz-file read
  • gzrewind — Rewind the position of a gz-file pointer
  • gzseek — Seek on a gz-file pointer
  • gztell — Tell gz-file pointer read/write position
  • gzuncompress — Uncompress a compressed string
  • gzwrite — Binary-safe gz-file write
  • inflate_add — Incrementally inflate encoded data
  • inflate_init — Initialize an incremental inflate context
  • readgzfile — Output a gz-file
  • zlib_decode — Uncompress any raw/gzip/zlib encoded data
  • zlib_encode — Compress data with the specified encoding
  • zlib_get_coding_type — Returns the coding type used for output compression
范例
deflate_add
Zlib


Incrementally deflate data

Zlib 函数
deflate_init
Zlib 函数
PHP Manual

deflate_add

(PHP 7)

deflate_add — Incrementally deflate data

说明

string deflate_add ( resource $context , string $data [, int $flush_mode = ZLIB_SYNC_FLUSH ] )

Incrementally deflates data in the specified context.

参数

context

A context created with deflate_init().

data

A chunk of data to compress.

flush_mode

One of ZLIB_BLOCK, ZLIB_NO_FLUSH, ZLIB_PARTIAL_FLUSH, ZLIB_SYNC_FLUSH (default), ZLIB_FULL_FLUSH, ZLIB_FINISH. Normally you will want to set ZLIB_NO_FLUSH to maximize compression, and ZLIB_FINISH to terminate with the last chunk of data. See the » zlib manual for a detailed description of these constants.

返回值

Returns a chunk of compressed data, 或者在失败时返回 FALSE.

错误／异常

If invalid arguments are given, an error of level E_WARNING is generated.

参见

  • deflate_init() - Initialize an incremental deflate context
Zlib 函数
deflate_init
Zlib 函数


Initialize an incremental deflate context

deflate_add
gzclose
Zlib 函数
PHP Manual

deflate_init

(PHP 7)

deflate_init — Initialize an incremental deflate context

说明

resource deflate_init ( int $encoding [, array $options = array() ] )

Initializes an incremental deflate context using the specified encoding.

Note that the window option here only sets the window size of the algorithm, differently from the zlib filters where the same parameter also sets the encoding to use; the encoding must be set with the encoding parameter.

Limitation: there is currently no way to set the header information on a GZIP compressed stream, which are set as follows: GZIP signature (\x1f\x8B); compression method (\x08 == DEFLATE); 6 zero bytes; the operating system set to the current system (\x00 = Windows, \x03 = Unix, etc.)

参数

encoding

One of the ZLIB_ENCODING_* constants.

options

An associative array which may contain the following elements:

level

The compression level in range -1..9; defaults to -1.

memory

The compression memory level in range 1..9; defaults to 8.

window

The zlib window size (logarithmic) in range 8..15; defaults to 15.

strategy

One of ZLIB_FILTERED, ZLIB_HUFFMAN_ONLY, ZLIB_RLE, ZLIB_FIXED or ZLIB_DEFAULT_STRATEGY (the default).

dictionary

A string or an array of strings of the preset dictionary (default: no preset dictionary).

返回值

Returns a deflate context resource (zlib.deflate) on success, 或者在失败时返回 FALSE.

错误／异常

If an invalid option is passed to options or the context couldn't be created, an error of level E_WARNING is generated.

参见

  • deflate_add() - Incrementally deflate data
  • inflate_init() - Initialize an incremental inflate context
deflate_add
gzclose
Zlib 函数


Close an open gz-file pointer

deflate_init
gzcompress
Zlib 函数
PHP Manual

gzclose

(PHP 4, PHP 5, PHP 7)

gzclose — Close an open gz-file pointer

说明

bool gzclose ( resource $zp )

Closes the given gz-file pointer.

参数

zp

The gz-file pointer. It must be valid, and must point to a file successfully opened by gzopen().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 gzclose() example

<?php
$gz = gzopen('somefile.gz','w9');
gzputs ($gz, 'I was added to somefile.gz');
gzclose($gz);
?>

参见

  • gzopen() - Open gz-file

deflate_init
gzcompress
Zlib 函数


Compress a string

gzclose
gzdecode
Zlib 函数
PHP Manual

gzcompress

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

gzcompress — Compress a string

说明

string gzcompress ( string $data [, int $level = -1 [, int $encoding = ZLIB_ENCODING_DEFLATE ]] )

This function compresses the given string using the ZLIB data format.

For details on the ZLIB compression algorithm see the document "» ZLIB Compressed Data Format Specification version 3.3" (RFC 1950).

Note:

This is not the same as gzip compression, which includes some header data. See gzencode() for gzip compression.

参数

data

The data to compress.

level

The level of compression. Can be given as 0 for no compression up to 9 for maximum compression.

If -1 is used, the default compression of the zlib library is used which is 6.

encoding

One of ZLIB_ENCODING_* constants.

返回值

The compressed string or FALSE if an error occurred.

范例

Example #1 gzcompress() example

<?php
$compressed = gzcompress('Compress me', 9);
echo $compressed;
?>

更新日志

版本 | 说明
5.4.0 | Added encoding parameter.

参见

  • gzdeflate() - Deflate a string
  • gzinflate() - Inflate a deflated string
  • gzuncompress() - Uncompress a compressed string
  • gzencode() - Create a gzip compressed string

gzclose
gzdecode
Zlib 函数


Decodes a gzip compressed string

gzcompress
gzdeflate
Zlib 函数
PHP Manual

gzdecode

(PHP 5 >= 5.4.0, PHP 7)

gzdecode — Decodes a gzip compressed string

说明

string gzdecode ( string $data [, int $length ] )

This function returns a decoded version of the input data.

参数

data

The data to decode, encoded by gzencode().

length

The maximum length of data to decode.

返回值

The decoded string, or FALSE if an error occurred.

参见

  • gzencode() - Create a gzip compressed string

gzcompress
gzdeflate
Zlib 函数


Deflate a string

gzdecode
gzencode
Zlib 函数
PHP Manual

gzdeflate

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gzdeflate — Deflate a string

说明

string gzdeflate ( string $data [, int $level = -1 [, int $encoding = ZLIB_ENCODING_RAW ]] )

This function compresses the given string using the DEFLATE data format.

For details on the DEFLATE compression algorithm see the document "» DEFLATE Compressed Data Format Specification version 1.3" (RFC 1951).

参数

data

The data to deflate.

level

The level of compression. Can be given as 0 for no compression up to 9 for maximum compression. If not given, the default compression level will be the default compression level of the zlib library.

encoding

One of ZLIB_ENCODING_* constants.

返回值

The deflated string or FALSE if an error occurred.

范例

Example #1 gzdeflate() example

<?php
$compressed = gzdeflate('Compress me', 9);
echo $compressed;
?>

更新日志

版本 | 说明
5.4.0 | Added encoding parameter.

参见

  • gzinflate() - Inflate a deflated string
  • gzcompress() - Compress a string
  • gzuncompress() - Uncompress a compressed string
  • gzencode() - Create a gzip compressed string

gzdecode
gzencode
Zlib 函数


Create a gzip compressed string

gzdeflate
gzeof
Zlib 函数
PHP Manual

gzencode

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gzencode — Create a gzip compressed string

说明

string gzencode ( string $data [, int $level = -1 [, int $encoding_mode = FORCE_GZIP ]] )

This function returns a compressed version of the input data compatible with the output of the gzip program.

For more information on the GZIP file format, see the document: » GZIP file format specification version 4.3 (RFC 1952).

参数

data

The data to encode.

level

The level of compression. Can be given as 0 for no compression up to 9 for maximum compression. If not given, the default compression level will be the default compression level of the zlib library.

encoding_mode

The encoding mode. Can be FORCE_GZIP (the default) or FORCE_DEFLATE.

Prior to PHP 5.4.0, using FORCE_DEFLATE results in a standard zlib deflated string (inclusive zlib headers) after a gzip file header but without the trailing crc32 checksum.

In PHP 5.4.0 and later, FORCE_DEFLATE generates RFC 1950 compliant output, consisting of a zlib header, the deflated data, and an Adler checksum.

返回值

The encoded string, or FALSE if an error occurred.

更新日志

版本 | 说明
5.4.0 | FORCE_DEFLATE now generates RFC 1950 compliant output.

范例

The resulting data contains the appropriate headers and data structure to make a standard .gz file, e.g.:

Example #1 Creating a gzip file

<?php
$data = implode("", file("bigfile.txt"));
$gzdata = gzencode($data, 9);
$fp = fopen("bigfile.txt.gz", "w");
fwrite($fp, $gzdata);
fclose($fp);
?>

参见

  • gzdecode() - Decodes a gzip compressed string
  • gzdeflate() - Deflate a string
  • gzinflate() - Inflate a deflated string
  • gzuncompress() - Uncompress a compressed string
  • gzcompress() - Compress a string
  • » ZLIB Compressed Data Format Specification (RFC 1950)

gzdeflate
gzeof
Zlib 函数


Test for EOF on a gz-file pointer

gzencode
gzfile
Zlib 函数
PHP Manual

gzeof

(PHP 4, PHP 5, PHP 7)

gzeof — Test for EOF on a gz-file pointer

说明

int gzeof ( resource $zp )

Tests the given GZ file pointer for EOF.

参数

zp

The gz-file pointer. It must be valid, and must point to a file successfully opened by gzopen().

返回值

Returns TRUE if the gz-file pointer is at EOF or an error occurs; otherwise returns FALSE.

范例

Example #1 gzeof() example

<?php
$gz = gzopen('somefile.gz', 'r');
while (!gzeof($gz)) {
  echo gzgetc($gz);
}
gzclose($gz);
?>

gzencode
gzfile
Zlib 函数


Read entire gz-file into an array

gzeof
gzgetc
Zlib 函数
PHP Manual

gzfile

(PHP 4, PHP 5, PHP 7)

gzfile — Read entire gz-file into an array

说明

array gzfile ( string $filename [, int $use_include_path = 0 ] )

This function is identical to readgzfile(), except that it returns the file in an array.

参数

filename

The file name.

use_include_path

You can set this optional parameter to 1, if you want to search for the file in the include_path too.

返回值

An array containing the file, one line per cell, empty lines included, and with newlines still attached.

范例

Example #1 gzfile() example

<?php
$lines = gzfile('somefile.gz');
foreach ($lines as $line) {
    echo $line;
}
?>

参见

  • readgzfile() - Output a gz-file
  • gzopen() - Open gz-file

gzeof
gzgetc
Zlib 函数


Get character from gz-file pointer

gzfile
gzgets
Zlib 函数
PHP Manual

gzgetc

(PHP 4, PHP 5, PHP 7)

gzgetc — Get character from gz-file pointer

说明

string gzgetc ( resource $zp )

Returns a string containing a single (uncompressed) character read from the given gz-file pointer.

参数

zp

The gz-file pointer. It must be valid, and must point to a file successfully opened by gzopen().

返回值

The uncompressed character or FALSE on EOF (unlike gzeof()).

范例

Example #1 gzgetc() example

<?php
$gz = gzopen('somefile.gz', 'r');
while (!gzeof($gz)) {
  echo gzgetc($gz);
}
gzclose($gz);
?>

参见

  • gzopen() - Open gz-file
  • gzgets() - Get line from file pointer

gzfile
gzgets
Zlib 函数


Get line from file pointer

gzgetc
gzgetss
Zlib 函数
PHP Manual

gzgets

(PHP 4, PHP 5, PHP 7)

gzgets — Get line from file pointer

说明

string gzgets ( resource $zp [, int $length ] )

Gets a (uncompressed) string of up to length - 1 bytes read from the given file pointer. Reading ends when length - 1 bytes have been read, on a newline, or on EOF (whichever comes first).

参数

zp

The gz-file pointer. It must be valid, and must point to a file successfully opened by gzopen().

length

The length of data to get.

返回值

The uncompressed string, or FALSE on error.

范例

Example #1 gzgets() example

<?php
$handle = gzopen('somefile.gz', 'r');
while (!gzeof($handle)) {
   $buffer = gzgets($handle, 4096);
   echo $buffer;
}
gzclose($handle);
?>

参见

  • gzopen() - Open gz-file
  • gzgetc() - Get character from gz-file pointer
  • gzwrite() - Binary-safe gz-file write

gzgetc
gzgetss
Zlib 函数


Get line from gz-file pointer and strip HTML tags

gzgets
gzinflate
Zlib 函数
PHP Manual

gzgetss

(PHP 4, PHP 5, PHP 7)

gzgetss — Get line from gz-file pointer and strip HTML tags

说明

string gzgetss ( resource $zp , int $length [, string $allowable_tags ] )

Identical to gzgets(), except that gzgetss() attempts to strip any HTML and PHP tags from the text it reads.

参数

zp

The gz-file pointer. It must be valid, and must point to a file successfully opened by gzopen().

length

The length of data to get.

allowable_tags

You can use this optional parameter to specify tags which should not be stripped.

返回值

The uncompressed and stripped string, or FALSE on error.

范例

Example #1 gzgetss() example

<?php
$handle = gzopen('somefile.gz', 'r');
while (!gzeof($handle)) {
   $buffer = gzgetss($handle, 4096);
   echo $buffer;
}
gzclose($handle);
?>

参见

  • gzopen() - Open gz-file
  • gzgets() - Get line from file pointer
  • strip_tags() - 从字符串中去除 HTML 和 PHP 标记

gzgets
gzinflate
Zlib 函数


Inflate a deflated string

gzgetss
gzopen
Zlib 函数
PHP Manual

gzinflate

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gzinflate — Inflate a deflated string

说明

string gzinflate ( string $data [, int $length = 0 ] )

This function inflates a deflated string.

参数

data

The data compressed by gzdeflate().

length

The maximum length of data to decode.

返回值

The original uncompressed data or FALSE on error.

The function will return an error if the uncompressed data is more than 32768 times the length of the compressed input data or more than the optional parameter length.

范例

Example #1 gzinflate() example

<?php
$compressed   = gzdeflate('Compress me', 9);
$uncompressed = gzinflate($compressed);
echo $uncompressed;
?>

参见

  • gzdeflate() - Deflate a string
  • gzcompress() - Compress a string
  • gzuncompress() - Uncompress a compressed string
  • gzencode() - Create a gzip compressed string

gzgetss
gzopen
Zlib 函数


Open gz-file

gzinflate
gzpassthru
Zlib 函数
PHP Manual

gzopen

(PHP 4, PHP 5, PHP 7)

gzopen — Open gz-file

说明

resource gzopen ( string $filename , string $mode [, int $use_include_path = 0 ] )

Opens a gzip (.gz) file for reading or writing.

gzopen() can be used to read a file which is not in gzip format; in this case gzread() will directly read from the file without decompression.

参数

filename

The file name.

mode

As in fopen() (rb or wb) but can also include a compression level (wb9) or a strategy: f for filtered data as in wb6f, h for Huffman only compression as in wb1h. (See the description of deflateInit2 in zlib.h for more information about the strategy parameter.)

use_include_path

You can set this optional parameter to 1, if you want to search for the file in the include_path too.

返回值

Returns a file pointer to the file opened, after that, everything you read from this file descriptor will be transparently decompressed and what you write gets compressed.

If the open fails, the function returns FALSE.

范例

Example #1 gzopen() Example

<?php
$fp = gzopen("/tmp/file.gz", "r");
?>

参见

  • gzclose() - Close an open gz-file pointer

gzinflate
gzpassthru
Zlib 函数


Output all remaining data on a gz-file pointer

gzopen
gzputs
Zlib 函数
PHP Manual

gzpassthru

(PHP 4, PHP 5, PHP 7)

gzpassthru — Output all remaining data on a gz-file pointer

说明

int gzpassthru ( resource $zp )

Reads to EOF on the given gz-file pointer from the current position and writes the (uncompressed) results to standard output.

Note:

You may need to call gzrewind() to reset the file pointer to the beginning of the file if you have already written data to it.

Tip

If you just want to dump the contents of a file to the output buffer, without first modifying it or seeking to a particular offset, you may want to use the readgzfile() function, which saves you the gzopen() call.

参数

zp

The gz-file pointer. It must be valid, and must point to a file successfully opened by gzopen().

返回值

The number of uncompressed characters read from gz and passed through to the input, or FALSE on error.

范例

Example #1 gzpassthru() example

<?php
$fp = gzopen('file.gz', 'r');
gzpassthru($fp);
gzclose($fp);
?>

gzopen
gzputs
Zlib 函数


别名 gzwrite

gzpassthru
gzread
Zlib 函数
PHP Manual

gzputs

(PHP 4, PHP 5, PHP 7)

gzputs — 别名 gzwrite()

说明

此函数是该函数的别名： gzwrite().

gzpassthru
gzread
Zlib 函数


Binary-safe gz-file read

gzputs
gzrewind
Zlib 函数
PHP Manual

gzread

(PHP 4, PHP 5, PHP 7)

gzread — Binary-safe gz-file read

说明

string gzread ( resource $zp , int $length )

gzread() reads up to length bytes from the given gz-file pointer. Reading stops when length (uncompressed) bytes have been read or EOF is reached, whichever comes first.

参数

zp

The gz-file pointer. It must be valid, and must point to a file successfully opened by gzopen().

length

The number of bytes to read.

返回值

The data that have been read.

范例

Example #1 gzread() example

<?php
// get contents of a gz-file into a string
$filename = "/usr/local/something.txt.gz";
$zd = gzopen($filename, "r");
$contents = gzread($zd, 10000);
gzclose($zd);
?>

参见

  • gzwrite() - Binary-safe gz-file write
  • gzopen() - Open gz-file
  • gzgets() - Get line from file pointer
  • gzgetss() - Get line from gz-file pointer and strip HTML tags
  • gzfile() - Read entire gz-file into an array
  • gzpassthru() - Output all remaining data on a gz-file pointer

gzputs
gzrewind
Zlib 函数


Rewind the position of a gz-file pointer

gzread
gzseek
Zlib 函数
PHP Manual

gzrewind

(PHP 4, PHP 5, PHP 7)

gzrewind — Rewind the position of a gz-file pointer

说明

bool gzrewind ( resource $zp )

Sets the file position indicator of the given gz-file pointer to the beginning of the file stream.

参数

zp

The gz-file pointer. It must be valid, and must point to a file successfully opened by gzopen().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • gzseek() - Seek on a gz-file pointer
  • gztell() - Tell gz-file pointer read/write position

gzread
gzseek
Zlib 函数


Seek on a gz-file pointer

gzrewind
gztell
Zlib 函数
PHP Manual

gzseek

(PHP 4, PHP 5, PHP 7)

gzseek — Seek on a gz-file pointer

说明

int gzseek ( resource $zp , int $offset [, int $whence = SEEK_SET ] )

Sets the file position indicator for the given file pointer to the given offset byte into the file stream. Equivalent to calling (in C) gzseek(zp, offset, SEEK_SET).

If the file is opened for reading, this function is emulated but can be extremely slow. If the file is opened for writing, only forward seeks are supported; gzseek() then compresses a sequence of zeroes up to the new starting position.

参数

zp

The gz-file pointer. It must be valid, and must point to a file successfully opened by gzopen().

offset

The seeked offset.

whence

whence values are:

  • SEEK_SET - Set position equal to offset bytes.
  • SEEK_CUR - Set position to current location plus offset.

If whence is not specified, it is assumed to be SEEK_SET.

返回值

Upon success, returns 0; otherwise, returns -1. Note that seeking past EOF is not considered an error.

范例

Example #1 gzseek() example

<?php
$gz = gzopen('somefile.gz', 'r');
gzseek($gz,2);
echo gzgetc($gz);
gzclose($gz);
?>

参见

  • gztell() - Tell gz-file pointer read/write position
  • gzrewind() - Rewind the position of a gz-file pointer

gzrewind
gztell
Zlib 函数


Tell gz-file pointer read/write position

gzseek
gzuncompress
Zlib 函数
PHP Manual

gztell

(PHP 4, PHP 5, PHP 7)

gztell — Tell gz-file pointer read/write position

说明

int gztell ( resource $zp )

Gets the position of the given file pointer; i.e., its offset into the uncompressed file stream.

参数

zp

The gz-file pointer. It must be valid, and must point to a file successfully opened by gzopen().

返回值

The position of the file pointer or FALSE if an error occurs.

参见

  • gzopen() - Open gz-file
  • gzseek() - Seek on a gz-file pointer
  • gzrewind() - Rewind the position of a gz-file pointer

gzseek
gzuncompress
Zlib 函数


Uncompress a compressed string

gztell
gzwrite
Zlib 函数
PHP Manual

gzuncompress

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

gzuncompress — Uncompress a compressed string

说明

string gzuncompress ( string $data [, int $length = 0 ] )

This function uncompress a compressed string.

参数

data

The data compressed by gzcompress().

length

The maximum length of data to decode.

返回值

The original uncompressed data or FALSE on error.

The function will return an error if the uncompressed data is more than 32768 times the length of the compressed input data or more than the optional parameter length.

范例

Example #1 gzuncompress() example

<?php
$compressed   = gzcompress('Compress me', 9);
$uncompressed = gzuncompress($compressed);
echo $uncompressed;
?>

参见

  • gzcompress() - Compress a string
  • gzinflate() - Inflate a deflated string
  • gzdeflate() - Deflate a string
  • gzencode() - Create a gzip compressed string

gztell
gzwrite
Zlib 函数


Binary-safe gz-file write

gzuncompress
inflate_add
Zlib 函数
PHP Manual

gzwrite

(PHP 4, PHP 5, PHP 7)

gzwrite — Binary-safe gz-file write

说明

int gzwrite ( resource $zp , string $string [, int $length ] )

gzwrite() writes the contents of string to the given gz-file.

参数

zp

The gz-file pointer. It must be valid, and must point to a file successfully opened by gzopen().

string

The string to write.

length

The number of uncompressed bytes to write. If supplied, writing will stop after length (uncompressed) bytes have been written or the end of string is reached, whichever comes first.

Note:

Note that if the length argument is given, then the magic_quotes_runtime configuration option will be ignored and no slashes will be stripped from string.

返回值

Returns the number of (uncompressed) bytes written to the given gz-file stream.

范例

Example #1 gzwrite() example

<?php
$string = 'Some information to compress';
$gz = gzopen('somefile.gz','w9');
gzwrite($gz, $string);
gzclose($gz);
?>

参见

  • gzread() - Binary-safe gz-file read
  • gzopen() - Open gz-file

gzuncompress
inflate_add
Zlib 函数


Incrementally inflate encoded data

gzwrite
inflate_init
Zlib 函数
PHP Manual

inflate_add

(PHP 7)

inflate_add — Incrementally inflate encoded data

说明

string inflate_add ( resource $context , string $encoded_data [, int $flush_mode = ZLIB_SYNC_FLUSH ] )

Incrementally inflates encoded data in the specified context.

Limitation: header information from GZIP compressed data are not made available.

参数

context

A context created with inflate_init().

encoded_data

A chunk of compressed data.

flush_mode

One of ZLIB_BLOCK, ZLIB_NO_FLUSH, ZLIB_PARTIAL_FLUSH, ZLIB_SYNC_FLUSH (default), ZLIB_FULL_FLUSH, ZLIB_FINISH. Normally you will want to set ZLIB_NO_FLUSH to maximize compression, and ZLIB_FINISH to terminate with the last chunk of data. See the » zlib manual for a detailed description of these constants.

返回值

Returns a chunk of uncompressed data, 或者在失败时返回 FALSE.

错误／异常

If invalid parameters are given, inflating the data requires a preset dictionary, but none is specified, the compressed stream is corrupt or has an invalid checksum, an error of level E_WARNING is generated.

参见

  • inflate_init() - Initialize an incremental inflate context
gzwrite
inflate_init
Zlib 函数


Initialize an incremental inflate context

inflate_add
readgzfile
Zlib 函数
PHP Manual

inflate_init

(PHP 7)

inflate_init — Initialize an incremental inflate context

说明

resource inflate_init ( int $encoding [, array $options = array() ] )

Initialize an incremental inflate context with the specified encoding.

参数

encoding

One of the ZLIB_ENCODING_* constants.

options

An associative array which may contain the following elements:

level

The compression level in range -1..9; defaults to -1.

memory

The compression memory level in range 1..9; defaults to 8.

window

The zlib window size (logarithmic) in range 8..15; defaults to 15.

strategy

One of ZLIB_FILTERED, ZLIB_HUFFMAN_ONLY, ZLIB_RLE, ZLIB_FIXED or ZLIB_DEFAULT_STRATEGY (the default).

dictionary

A string or an array of strings of the preset dictionary (default: no preset dictionary).

返回值

Returns an inflate context resource (zlib.inflate) on success, 或者在失败时返回 FALSE.

错误／异常

If an invalid encoding or option is passed to options, or the context couldn't be created, an error of level E_WARNING is generated.

参见

  • inflate_add() - Incrementally inflate encoded data
  • deflate_init() - Initialize an incremental deflate context
inflate_add
readgzfile
Zlib 函数


Output a gz-file

inflate_init
zlib_decode
Zlib 函数
PHP Manual

readgzfile

(PHP 4, PHP 5, PHP 7)

readgzfile — Output a gz-file

说明

int readgzfile ( string $filename [, int $use_include_path = 0 ] )

Reads a file, decompresses it and writes it to standard output.

readgzfile() can be used to read a file which is not in gzip format; in this case readgzfile() will directly read from the file without decompression.

参数

filename

The file name. This file will be opened from the filesystem and its contents written to standard output.

use_include_path

You can set this optional parameter to 1, if you want to search for the file in the include_path too.

返回值

Returns the number of (uncompressed) bytes read from the file. If an error occurs, FALSE is returned and unless the function was called as @readgzfile, an error message is printed.

参见

  • gzpassthru() - Output all remaining data on a gz-file pointer
  • gzfile() - Read entire gz-file into an array
  • gzopen() - Open gz-file

inflate_init
zlib_decode
Zlib 函数


Uncompress any raw/gzip/zlib encoded data

readgzfile
zlib_encode
Zlib 函数
PHP Manual

zlib_decode

(PHP 5 >= 5.4.0, PHP 7)

zlib_decode — Uncompress any raw/gzip/zlib encoded data

说明

string zlib_decode ( string $data [, string $max_decoded_len ] )

Uncompress any raw/gzip/zlib encoded data.

Warning

本函数还未编写文档，仅有参数列表。

参数

data

max_decoded_len

返回值

Returns the uncompressed data, 或者在失败时返回 FALSE.

参见

  • zlib_encode() - Compress data with the specified encoding
readgzfile
zlib_encode
Zlib 函数


Compress data with the specified encoding

zlib_decode
zlib_get_coding_type
Zlib 函数
PHP Manual

zlib_encode

(PHP 5 >= 5.4.0, PHP 7)

zlib_encode — Compress data with the specified encoding

说明

string zlib_encode ( string $data , string $encoding [, string $level = -1 ] )

Compress data with the specified encoding.

Warning

本函数还未编写文档，仅有参数列表。

参数

data

The data to compress.

encoding

The compression algorithm. Either ZLIB_ENCODING_RAW, ZLIB_ENCODING_DEFLATE or ZLIB_ENCODING_GZIP.

level

返回值

范例

Example #1 zlib_encode() example

<?php
$str = 'hello world';
$enc = zlib_encode($str, ZLIB_ENCODING_DEFLATE);
echo bin2hex($enc);
?>

以上例程会输出：

789ccb48cdc9c95728cf2fca4901001a0b045d

参见

  • zlib_decode() - Uncompress any raw/gzip/zlib encoded data
zlib_decode
zlib_get_coding_type
Zlib 函数


Returns the coding type used for output compression

zlib_encode
信用卡处理
Zlib 函数
PHP Manual

zlib_get_coding_type

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

zlib_get_coding_type — Returns the coding type used for output compression

说明

string zlib_get_coding_type ( void )

Returns the coding type used for output compression.

返回值

Possible return values are gzip, deflate, or FALSE.

参见

  • The zlib.output_compression directive

zlib_encode
信用卡处理
Zlib 函数


信用卡处理

  • MCVE — MCVE (Monetra) Payment
    • 简介
    • 安装／配置
    • 预定义常量
    • MCVE 函数
zlib_get_coding_type
MCVE
函数参考


MCVE (Monetra) Payment

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • MCVE 函数
    • m_checkstatus — Check to see if a transaction has completed
    • m_completeauthorizations — Number of complete authorizations in queue, returning an array of their identifiers
    • m_connect — Establish the connection to MCVE
    • m_connectionerror — Get a textual representation of why a connection failed
    • m_deletetrans — Delete specified transaction from MCVE_CONN structure
    • m_destroyconn — Destroy the connection and MCVE_CONN structure
    • m_destroyengine — Free memory associated with IP/SSL connectivity
    • m_getcell — Get a specific cell from a comma delimited response by column name
    • m_getcellbynum — Get a specific cell from a comma delimited response by column number
    • m_getcommadelimited — Get the RAW comma delimited data returned from MCVE
    • m_getheader — Get the name of the column in a comma-delimited response
    • m_initconn — Create and initialize an MCVE_CONN structure
    • m_initengine — Ready the client for IP/SSL Communication
    • m_iscommadelimited — Checks to see if response is comma delimited
    • m_maxconntimeout — The maximum amount of time the API will attempt a connection to MCVE
    • m_monitor — Perform communication with MCVE (send/receive data) Non-blocking
    • m_numcolumns — Number of columns returned in a comma delimited response
    • m_numrows — Number of rows returned in a comma delimited response
    • m_parsecommadelimited — Parse the comma delimited response so m_getcell, etc will work
    • m_responsekeys — Returns array of strings which represents the keys that can be used for response parameters on this transaction
    • m_responseparam — Get a custom response parameter
    • m_returnstatus — Check to see if the transaction was successful
    • m_setblocking — Set blocking/non-blocking mode for connection
    • m_setdropfile — Set the connection method to Drop-File
    • m_setip — Set the connection method to IP
    • m_setssl_cafile — Set SSL CA (Certificate Authority) file for verification of server certificate
    • m_setssl_files — Set certificate key files and certificates if server requires client certificate verification
    • m_setssl — Set the connection method to SSL
    • m_settimeout — Set maximum transaction time (per trans)
    • m_sslcert_gen_hash — Generate hash for SSL client certificate verification
    • m_transactionssent — Check to see if outgoing buffer is clear
    • m_transinqueue — Number of transactions in client-queue
    • m_transkeyval — Add key/value pair to a transaction. Replaces deprecated transparam()
    • m_transnew — Start a new transaction
    • m_transsend — Finalize and send the transaction
    • m_uwait — Wait x microsecs
    • m_validateidentifier — Whether or not to validate the passed identifier on any transaction it is passed to
    • m_verifyconnection — Set whether or not to PING upon connect to verify connection
    • m_verifysslcert — Set whether or not to verify the server ssl certificate
信用卡处理
简介
信用卡处理


简介

These functions interface the MCVE (Monetra) API (libmonetra, formerly known as libmcve), allowing you to work directly with MCVE/Monetra from your PHP scripts. MCVE/Monetra is Main Street Softworks' solution to direct credit/debit/gift card processing for Linux/Unix/MacOSX/Windows ( » http://www.mainstreetsoftworks.com/ ). It lets you directly address the credit card clearing houses via your *nix box, modem and/or internet connection (bypassing the need for an additional service such as Authorize.Net or Pay Flow Pro). Using the MCVE/Monetra module for PHP, you can process credit cards directly through MCVE/Monetra via your PHP scripts. The following references will outline the process.

Note:

MCVE/Monetra is the replacement for RedHat's CCVS. They contracted with RedHat in late 2001 to migrate all existing clientele to the MCVE platform.

Note:

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.1.0.

Note: 此扩展在 Windows 平台上不可用。

MCVE
安装／配置
MCVE


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
MCVE


需求

The LibMonetra (formerly libmcve) library.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/mcve.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

If installing without specifying the libmonetra path, PHP will attempt to look in the default LibMonetra Install location (/usr/local). If Monetra (MCVE) is in a non-standard location, run configure with: --with-mcve=$mcve_path , where $mcve_path is the path to your MCVE/Monetra installation. Please note that MCVE/Monetra support requires that $mcve_path/lib and $mcve_path/include exist, and include mcve.h or monetra.h under the include directory and libmcve.so and/or libmcve.a and/or libmonetra.so and/or libmonetra.a under the lib directory.

Since MCVE/Monetra has true server/client separation, there are no additional requirements for running PHP with MCVE support. To test your MCVE/Monetra extension in PHP, you may connect to testbox.monetra.com on port 8333 for IP, or port 8444 for SSL using the MCVE/Monetra PHP API. Use 'vitale' for your username, and 'test' for your password. Additional information about test facilities are available at » http://www.mainstreetsoftworks.com/.

需求
运行时配置
安装／配置


资源类型

This extension defines a MCVE_CONN resource returned by m_initconn().

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

M_PENDING (integer)
M_DONE (integer)
M_ERROR (integer)
M_FAIL (integer)
M_SUCCESS (integer)
资源类型
MCVE 函数
MCVE


MCVE 函数

参见

Additional documentation about MCVE/Monetra's PHP API can be found at » http://www.mainstreetsoftworks.com/documentation.html. Main Street's documentation is complete and should be the primary reference for functions.

Table of Contents

  • m_checkstatus — Check to see if a transaction has completed
  • m_completeauthorizations — Number of complete authorizations in queue, returning an array of their identifiers
  • m_connect — Establish the connection to MCVE
  • m_connectionerror — Get a textual representation of why a connection failed
  • m_deletetrans — Delete specified transaction from MCVE_CONN structure
  • m_destroyconn — Destroy the connection and MCVE_CONN structure
  • m_destroyengine — Free memory associated with IP/SSL connectivity
  • m_getcell — Get a specific cell from a comma delimited response by column name
  • m_getcellbynum — Get a specific cell from a comma delimited response by column number
  • m_getcommadelimited — Get the RAW comma delimited data returned from MCVE
  • m_getheader — Get the name of the column in a comma-delimited response
  • m_initconn — Create and initialize an MCVE_CONN structure
  • m_initengine — Ready the client for IP/SSL Communication
  • m_iscommadelimited — Checks to see if response is comma delimited
  • m_maxconntimeout — The maximum amount of time the API will attempt a connection to MCVE
  • m_monitor — Perform communication with MCVE (send/receive data) Non-blocking
  • m_numcolumns — Number of columns returned in a comma delimited response
  • m_numrows — Number of rows returned in a comma delimited response
  • m_parsecommadelimited — Parse the comma delimited response so m_getcell, etc will work
  • m_responsekeys — Returns array of strings which represents the keys that can be used for response parameters on this transaction
  • m_responseparam — Get a custom response parameter
  • m_returnstatus — Check to see if the transaction was successful
  • m_setblocking — Set blocking/non-blocking mode for connection
  • m_setdropfile — Set the connection method to Drop-File
  • m_setip — Set the connection method to IP
  • m_setssl_cafile — Set SSL CA (Certificate Authority) file for verification of server certificate
  • m_setssl_files — Set certificate key files and certificates if server requires client certificate verification
  • m_setssl — Set the connection method to SSL
  • m_settimeout — Set maximum transaction time (per trans)
  • m_sslcert_gen_hash — Generate hash for SSL client certificate verification
  • m_transactionssent — Check to see if outgoing buffer is clear
  • m_transinqueue — Number of transactions in client-queue
  • m_transkeyval — Add key/value pair to a transaction. Replaces deprecated transparam()
  • m_transnew — Start a new transaction
  • m_transsend — Finalize and send the transaction
  • m_uwait — Wait x microsecs
  • m_validateidentifier — Whether or not to validate the passed identifier on any transaction it is passed to
  • m_verifyconnection — Set whether or not to PING upon connect to verify connection
  • m_verifysslcert — Set whether or not to verify the server ssl certificate
预定义常量
m_checkstatus
MCVE


Check to see if a transaction has completed

MCVE 函数
m_completeauthorizations
MCVE 函数
PHP Manual

m_checkstatus

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_checkstatus — Check to see if a transaction has completed

说明

int m_checkstatus ( resource $conn , int $identifier )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

identifier

返回值

MCVE 函数
m_completeauthorizations
MCVE 函数


Number of complete authorizations in queue, returning an array of their identifiers

m_checkstatus
m_connect
MCVE 函数
PHP Manual

m_completeauthorizations

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_completeauthorizations — Number of complete authorizations in queue, returning an array of their identifiers

说明

int m_completeauthorizations ( resource $conn , int &$array )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

array

Its description

返回值

What the function returns, first on success, then on failure. See also the &return.success; entity

m_checkstatus
m_connect
MCVE 函数


Establish the connection to MCVE

m_completeauthorizations
m_connectionerror
MCVE 函数
PHP Manual

m_connect

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_connect — Establish the connection to MCVE

说明

int m_connect ( resource $conn )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

返回值

m_completeauthorizations
m_connectionerror
MCVE 函数


Get a textual representation of why a connection failed

m_connect
m_deletetrans
MCVE 函数
PHP Manual

m_connectionerror

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_connectionerror — Get a textual representation of why a connection failed

说明

string m_connectionerror ( resource $conn )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

返回值

m_connect
m_deletetrans
MCVE 函数


Delete specified transaction from MCVE_CONN structure

m_connectionerror
m_destroyconn
MCVE 函数
PHP Manual

m_deletetrans

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_deletetrans — Delete specified transaction from MCVE_CONN structure

说明

bool m_deletetrans ( resource $conn , int $identifier )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

identifier

返回值

m_connectionerror
m_destroyconn
MCVE 函数


Destroy the connection and MCVE_CONN structure

m_deletetrans
m_destroyengine
MCVE 函数
PHP Manual

m_destroyconn

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_destroyconn — Destroy the connection and MCVE_CONN structure

说明

bool m_destroyconn ( resource $conn )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

返回值

Returns TRUE.

参见

  • m_initconn() - Create and initialize an MCVE_CONN structure

m_deletetrans
m_destroyengine
MCVE 函数


Free memory associated with IP/SSL connectivity

m_destroyconn
m_getcell
MCVE 函数
PHP Manual

m_destroyengine

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_destroyengine — Free memory associated with IP/SSL connectivity

说明

void m_destroyengine ( void )
Warning

本函数还未编写文档，仅有参数列表。

参数

返回值

没有返回值。

m_destroyconn
m_getcell
MCVE 函数


Get a specific cell from a comma delimited response by column name

m_destroyengine
m_getcellbynum
MCVE 函数
PHP Manual

m_getcell

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_getcell — Get a specific cell from a comma delimited response by column name

说明

string m_getcell ( resource $conn , int $identifier , string $column , int $row )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

identifier

column

row

返回值

m_destroyengine
m_getcellbynum
MCVE 函数


Get a specific cell from a comma delimited response by column number

m_getcell
m_getcommadelimited
MCVE 函数
PHP Manual

m_getcellbynum

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_getcellbynum — Get a specific cell from a comma delimited response by column number

说明

string m_getcellbynum ( resource $conn , int $identifier , int $column , int $row )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

identifier

column

row

返回值

m_getcell
m_getcommadelimited
MCVE 函数


Get the RAW comma delimited data returned from MCVE

m_getcellbynum
m_getheader
MCVE 函数
PHP Manual

m_getcommadelimited

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_getcommadelimited — Get the RAW comma delimited data returned from MCVE

说明

string m_getcommadelimited ( resource $conn , int $identifier )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

identifier

返回值

m_getcellbynum
m_getheader
MCVE 函数


Get the name of the column in a comma-delimited response

m_getcommadelimited
m_initconn
MCVE 函数
PHP Manual

m_getheader

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_getheader — Get the name of the column in a comma-delimited response

说明

string m_getheader ( resource $conn , int $identifier , int $column_num )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

identifier

column_num

返回值

m_getcommadelimited
m_initconn
MCVE 函数


Create and initialize an MCVE_CONN structure

m_getheader
m_initengine
MCVE 函数
PHP Manual

m_initconn

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_initconn — Create and initialize an MCVE_CONN structure

说明

resource m_initconn ( void )
Warning

本函数还未编写文档，仅有参数列表。

返回值

Returns an MCVE_CONN resource.

参见

  • m_destroyconn() - Destroy the connection and MCVE_CONN structure

m_getheader
m_initengine
MCVE 函数


Ready the client for IP/SSL Communication

m_initconn
m_iscommadelimited
MCVE 函数
PHP Manual

m_initengine

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_initengine — Ready the client for IP/SSL Communication

说明

int m_initengine ( string $location )
Warning

本函数还未编写文档，仅有参数列表。

参数

location

返回值

m_initconn
m_iscommadelimited
MCVE 函数


Checks to see if response is comma delimited

m_initengine
m_maxconntimeout
MCVE 函数
PHP Manual

m_iscommadelimited

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_iscommadelimited — Checks to see if response is comma delimited

说明

int m_iscommadelimited ( resource $conn , int $identifier )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

identifier

返回值

m_initengine
m_maxconntimeout
MCVE 函数


The maximum amount of time the API will attempt a connection to MCVE

m_iscommadelimited
m_monitor
MCVE 函数
PHP Manual

m_maxconntimeout

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_maxconntimeout — The maximum amount of time the API will attempt a connection to MCVE

说明

bool m_maxconntimeout ( resource $conn , int $secs )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

secs

返回值

m_iscommadelimited
m_monitor
MCVE 函数


Perform communication with MCVE (send/receive data) Non-blocking

m_maxconntimeout
m_numcolumns
MCVE 函数
PHP Manual

m_monitor

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_monitor — Perform communication with MCVE (send/receive data) Non-blocking

说明

int m_monitor ( resource $conn )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

返回值

m_maxconntimeout
m_numcolumns
MCVE 函数


Number of columns returned in a comma delimited response

m_monitor
m_numrows
MCVE 函数
PHP Manual

m_numcolumns

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_numcolumns — Number of columns returned in a comma delimited response

说明

int m_numcolumns ( resource $conn , int $identifier )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

identifier

返回值

m_monitor
m_numrows
MCVE 函数


Number of rows returned in a comma delimited response

m_numcolumns
m_parsecommadelimited
MCVE 函数
PHP Manual

m_numrows

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_numrows — Number of rows returned in a comma delimited response

说明

int m_numrows ( resource $conn , int $identifier )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

identifier

返回值

m_numcolumns
m_parsecommadelimited
MCVE 函数


Parse the comma delimited response so m_getcell, etc will work

m_numrows
m_responsekeys
MCVE 函数
PHP Manual

m_parsecommadelimited

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_parsecommadelimited — Parse the comma delimited response so m_getcell, etc will work

说明

int m_parsecommadelimited ( resource $conn , int $identifier )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

identifier

返回值

m_numrows
m_responsekeys
MCVE 函数


Returns array of strings which represents the keys that can be used for response parameters on this transaction

m_parsecommadelimited
m_responseparam
MCVE 函数
PHP Manual

m_responsekeys

(PHP 5 >= 5.0.5, PHP 7, PECL mcve >= 1.0.0)

m_responsekeys — Returns array of strings which represents the keys that can be used for response parameters on this transaction

说明

array m_responsekeys ( resource $conn , int $identifier )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

identifier

返回值

m_parsecommadelimited
m_responseparam
MCVE 函数


Get a custom response parameter

m_responsekeys
m_returnstatus
MCVE 函数
PHP Manual

m_responseparam

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_responseparam — Get a custom response parameter

说明

string m_responseparam ( resource $conn , int $identifier , string $key )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

identifier

key

返回值

m_responsekeys
m_returnstatus
MCVE 函数


Check to see if the transaction was successful

m_responseparam
m_setblocking
MCVE 函数
PHP Manual

m_returnstatus

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_returnstatus — Check to see if the transaction was successful

说明

int m_returnstatus ( resource $conn , int $identifier )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

identifier

返回值

m_responseparam
m_setblocking
MCVE 函数


Set blocking/non-blocking mode for connection

m_returnstatus
m_setdropfile
MCVE 函数
PHP Manual

m_setblocking

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_setblocking — Set blocking/non-blocking mode for connection

说明

int m_setblocking ( resource $conn , int $tf )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

tf

返回值

m_returnstatus
m_setdropfile
MCVE 函数


Set the connection method to Drop-File

m_setblocking
m_setip
MCVE 函数
PHP Manual

m_setdropfile

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_setdropfile — Set the connection method to Drop-File

说明

int m_setdropfile ( resource $conn , string $directory )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

directory

返回值

m_setblocking
m_setip
MCVE 函数


Set the connection method to IP

m_setdropfile
m_setssl_cafile
MCVE 函数
PHP Manual

m_setip

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_setip — Set the connection method to IP

说明

int m_setip ( resource $conn , string $host , int $port )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

host

port

返回值

m_setdropfile
m_setssl_cafile
MCVE 函数


Set SSL CA (Certificate Authority) file for verification of server certificate

m_setip
m_setssl_files
MCVE 函数
PHP Manual

m_setssl_cafile

(PHP 5 >= 5.0.5, PHP 7, PECL mcve >= 1.0.0)

m_setssl_cafile — Set SSL CA (Certificate Authority) file for verification of server certificate

说明

int m_setssl_cafile ( resource $conn , string $cafile )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

cafile

返回值

m_setip
m_setssl_files
MCVE 函数


Set certificate key files and certificates if server requires client certificate verification

m_setssl_cafile
m_setssl
MCVE 函数
PHP Manual

m_setssl_files

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_setssl_files — Set certificate key files and certificates if server requires client certificate verification

说明

int m_setssl_files ( resource $conn , string $sslkeyfile , string $sslcertfile )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

sslkeyfile

sslcertfile

返回值

m_setssl_cafile
m_setssl
MCVE 函数


Set the connection method to SSL

m_setssl_files
m_settimeout
MCVE 函数
PHP Manual

m_setssl

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_setssl — Set the connection method to SSL

说明

int m_setssl ( resource $conn , string $host , int $port )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

host

port

返回值

m_setssl_files
m_settimeout
MCVE 函数


Set maximum transaction time (per trans)

m_setssl
m_sslcert_gen_hash
MCVE 函数
PHP Manual

m_settimeout

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_settimeout — Set maximum transaction time (per trans)

说明

int m_settimeout ( resource $conn , int $seconds )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

seconds

返回值

m_setssl
m_sslcert_gen_hash
MCVE 函数


Generate hash for SSL client certificate verification

m_settimeout
m_transactionssent
MCVE 函数
PHP Manual

m_sslcert_gen_hash

(PECL mcve >= 5.2.0)

m_sslcert_gen_hash — Generate hash for SSL client certificate verification

说明

string m_sslcert_gen_hash ( string $filename )
Warning

本函数还未编写文档，仅有参数列表。

参数

filename

返回值

m_settimeout
m_transactionssent
MCVE 函数


Check to see if outgoing buffer is clear

m_sslcert_gen_hash
m_transinqueue
MCVE 函数
PHP Manual

m_transactionssent

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_transactionssent — Check to see if outgoing buffer is clear

说明

int m_transactionssent ( resource $conn )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

返回值

m_sslcert_gen_hash
m_transinqueue
MCVE 函数


Number of transactions in client-queue

m_transactionssent
m_transkeyval
MCVE 函数
PHP Manual

m_transinqueue

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_transinqueue — Number of transactions in client-queue

说明

int m_transinqueue ( resource $conn )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

返回值

m_transactionssent
m_transkeyval
MCVE 函数


Add key/value pair to a transaction. Replaces deprecated transparam()

m_transinqueue
m_transnew
MCVE 函数
PHP Manual

m_transkeyval

(PHP 5 >= 5.0.5, PHP 7, PECL mcve >= 1.0.0)

m_transkeyval — Add key/value pair to a transaction. Replaces deprecated transparam()

说明

int m_transkeyval ( resource $conn , int $identifier , string $key , string $value )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

identifier

key

value

返回值

m_transinqueue
m_transnew
MCVE 函数


Start a new transaction

m_transkeyval
m_transsend
MCVE 函数
PHP Manual

m_transnew

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_transnew — Start a new transaction

说明

int m_transnew ( resource $conn )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

返回值

m_transkeyval
m_transsend
MCVE 函数


Finalize and send the transaction

m_transnew
m_uwait
MCVE 函数
PHP Manual

m_transsend

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_transsend — Finalize and send the transaction

说明

int m_transsend ( resource $conn , int $identifier )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

identifier

返回值

m_transnew
m_uwait
MCVE 函数


Wait x microsecs

m_transsend
m_validateidentifier
MCVE 函数
PHP Manual

m_uwait

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_uwait — Wait x microsecs

说明

int m_uwait ( int $microsecs )
Warning

本函数还未编写文档，仅有参数列表。

参数

microsecs

返回值

m_transsend
m_validateidentifier
MCVE 函数


Whether or not to validate the passed identifier on any transaction it is passed to

m_uwait
m_verifyconnection
MCVE 函数
PHP Manual

m_validateidentifier

(PHP 5 >= 5.0.5, PHP 7, PECL mcve >= 1.0.0)

m_validateidentifier — Whether or not to validate the passed identifier on any transaction it is passed to

说明

int m_validateidentifier ( resource $conn , int $tf )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

tf

返回值

m_uwait
m_verifyconnection
MCVE 函数


Set whether or not to PING upon connect to verify connection

m_validateidentifier
m_verifysslcert
MCVE 函数
PHP Manual

m_verifyconnection

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_verifyconnection — Set whether or not to PING upon connect to verify connection

说明

bool m_verifyconnection ( resource $conn , int $tf )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

tf

返回值

m_validateidentifier
m_verifysslcert
MCVE 函数


Set whether or not to verify the server ssl certificate

m_verifyconnection
加密扩展
MCVE 函数
PHP Manual

m_verifysslcert

(PHP 4 >= 4.3.9, PHP 5 <= 5.0.5, PECL mcve >= 1.0.0)

m_verifysslcert — Set whether or not to verify the server ssl certificate

说明

bool m_verifysslcert ( resource $conn , int $tf )
Warning

本函数还未编写文档，仅有参数列表。

参数

conn

由 m_initengine() 返回的 MCVE_CONN 资源。

tf

返回值

m_verifyconnection
加密扩展
MCVE 函数


加密扩展

  • Crack — Cracklib
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Crack 函数
  • CSPRNG
    • 简介
    • 安装／配置
    • 预定义常量
    • CSPRNG 函数
  • Hash — 哈希信息摘要框架
    • 简介
    • 安装／配置
    • 预定义常量
    • Hash 函数
  • Mcrypt
    • 简介
    • 安装／配置
    • 预定义常量
    • Mcrypt 密码
    • 范例
    • Mcrypt 函数
  • Mhash
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Mhash 函数
  • OpenSSL
    • 简介
    • 安装／配置
    • 预定义常量
    • Key/Certificate parameters
    • Certificate Verification
    • OpenSSL 函数
  • Password Hashing
    • 简介
    • 安装／配置
    • 预定义常量
    • Password Hashing 函数
m_verifysslcert
Crack
函数参考


Cracklib

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • Crack 函数
    • crack_check — 用给定的密码来进行破解测试
    • crack_closedict — Closes an open CrackLib dictionary
    • crack_getlastmessage — Returns the message from the last obscure check
    • crack_opendict — Opens a new CrackLib dictionary
加密扩展
简介
加密扩展


简介

These functions allow you to use the CrackLib library to test the 'strength' of a password. The 'strength' of a password is tested by that checks length, use of upper and lower case and checked against the specified CrackLib dictionary. CrackLib will also give helpful diagnostic messages that will help 'strengthen' the password.

Note:

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.0.0.

Crack
安装／配置
Crack


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Crack


需求

More information regarding CrackLib along with the library can be found at » http://sourceforge.net/projects/cracklib.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。 安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/crack.

In order to use these functions you must compile PHP with Crack support by using the --with-crack[=DIR] configuration option.

Windows users will enable php_crack.dll inside of php.ini in order to use these functions. PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


资源类型

The CrackLib extension defines a dictionary resource identifier returned by crack_opendict().

运行时配置
预定义常量
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
范例
Crack


范例

This example shows how to open a CrackLib dictionary, test a given password, retrieve any diagnostic messages, and close the dictionary.

Example #1 CrackLib example

<?php
// Open CrackLib Dictionary
$dictionary = crack_opendict('/usr/local/lib/pw_dict')
     or die('Unable to open CrackLib dictionary');

// Perform password check
$check = crack_check($dictionary, 'gx9A2s0x');

// Retrieve messages
$diag = crack_getlastmessage();
echo $diag; // 'strong password'

// Close dictionary
crack_closedict($dictionary);
?>

Note:

If crack_check() returns TRUE, crack_getlastmessage() will return 'strong password'.

预定义常量
Crack 函数
Crack


Crack 函数

Table of Contents

  • crack_check — 用给定的密码来进行破解测试
  • crack_closedict — Closes an open CrackLib dictionary
  • crack_getlastmessage — Returns the message from the last obscure check
  • crack_opendict — Opens a new CrackLib dictionary
范例
crack_check
Crack


用给定的密码来进行破解测试

Crack 函数
crack_closedict
Crack 函数
PHP Manual

crack_check

(PECL crack >= 0.1)

crack_check — 用给定的密码来进行破解测试

说明

bool crack_check ( resource $dictionary , string $password )
bool crack_check ( string $password , string $username = "" , string $gecos = "" , resource $dictionary = NULL )

使用特定字典中给定的密码来进行密码强度检测。可供选择的特征(The alternative signature )还考虑用户名和GECOS信息。

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

dictionary

破解库所使用的字典，如果没有指定，则使用最后一次打开的字典。

password

需要检查的密码。

username

用于密码检测的这个账户的用户名。

gecos

用户账户的 GECOS 信息。

返回值

返回 TRUE 如果 password 足够安全, 或者返回 FALSE 表示可能需要进一步的操作.

更新日志

版本 | 说明
0.3 | username、gecos 和 dictionary 字段被添加到了可供选择的特征（alternative signature）中。

Crack 函数
crack_closedict
Crack 函数


Closes an open CrackLib dictionary

crack_check
crack_getlastmessage
Crack 函数
PHP Manual

crack_closedict

(PECL crack >= 0.1)

crack_closedict — Closes an open CrackLib dictionary

说明

bool crack_closedict ([ resource $dictionary ] )

crack_closedict() closes the specified dictionary identifier.

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

dictionary

The dictionary to close. If not specified, the current dictionary is closed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • crack_opendict() - Opens a new CrackLib dictionary

crack_check
crack_getlastmessage
Crack 函数


Returns the message from the last obscure check

crack_closedict
crack_opendict
Crack 函数
PHP Manual

crack_getlastmessage

(PECL crack >= 0.1)

crack_getlastmessage — Returns the message from the last obscure check

说明

string crack_getlastmessage ( void )

crack_getlastmessage() returns the message from the last obscure check.

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

返回值

The message from the last obscure check or FALSE if there was no obscure checks made so far.

The returned message is one of:

  • it's WAY too short
  • it is too short
  • it does not contain enough DIFFERENT characters
  • it is all whitespace
  • it is too simplistic/systematic
  • it looks like a National Insurance number.
  • it is based on a dictionary word
  • it is based on a (reversed) dictionary word
  • strong password

参见

  • crack_check() - 用给定的密码来进行破解测试

crack_closedict
crack_opendict
Crack 函数


Opens a new CrackLib dictionary

crack_getlastmessage
CSPRNG
Crack 函数
PHP Manual

crack_opendict

(PECL crack >= 0.1)

crack_opendict — Opens a new CrackLib dictionary

说明

resource crack_opendict ( string $dictionary )

crack_opendict() opens the specified CrackLib dictionary for use with crack_check().

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Note:

Only one dictionary may be open at a time.

参数

dictionary

The path to the Cracklib dictionary.

返回值

Returns a dictionary resource identifier on success 或者在失败时返回 FALSE.

参见

  • crack_check() - 用给定的密码来进行破解测试
  • crack_closedict() - Closes an open CrackLib dictionary

crack_getlastmessage
CSPRNG
Crack 函数


CSPRNG

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • CSPRNG 函数
    • random_bytes — Generates cryptographically secure pseudo-random bytes
    • random_int — Generates cryptographically secure pseudo-random integers
crack_opendict
简介
加密扩展


简介

The » cryptographically secure pseudo-random number generator (CSPRNG) API provides an easy and reliable way to generate crypto-strong random integers and bytes for use within cryptographic contexts.

自以下版本起 PHP 7.0.0 but there is also a » userland implementation for PHP >= 5.2.0.

CSPRNG
安装／配置
CSPRNG


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
CSPRNG


预定义常量

此扩展没有定义常量。

资源类型
CSPRNG 函数
CSPRNG


CSPRNG 函数

Table of Contents

  • random_bytes — Generates cryptographically secure pseudo-random bytes
  • random_int — Generates cryptographically secure pseudo-random integers
预定义常量
random_bytes
CSPRNG


Generates cryptographically secure pseudo-random bytes

CSPRNG 函数
random_int
CSPRNG 函数
PHP Manual

random_bytes

(PHP 7)

random_bytes — Generates cryptographically secure pseudo-random bytes

说明

string random_bytes ( int $length )

Generates an arbitrary length string of cryptographic random bytes that are suitable for cryptographic use, such as when generating salts, keys or initialization vectors.

The sources of randomness used for this function are as follows:

  • On Windows, » CryptGenRandom() will always be used.
  • On Linux, the » getrandom(2) syscall will be used if available.
  • On other platforms, /dev/urandom will be used.
  • If none of the aforementioned sources are available, then an Exception will be thrown.

Note: Although this function was added to PHP in PHP 7.0, a » userland implementation is available for PHP 5.2 to 5.6, inclusive.

参数

length

The length of the random string that should be returned in bytes.

返回值

Returns a string containing the requested number of cryptographically secure random bytes.

错误／异常

  • If an appropriate source of randomness cannot be found, an Exception will be thrown.
  • If invalid parameters are given, a TypeError will be thrown.
  • If an invalid length of bytes is given, an Error will be thrown.

范例

Example #1 random_bytes() example

<?php
$bytes = random_bytes(5);
var_dump(bin2hex($bytes));
?>

以上例程的输出类似于：

string(10) "385e33f741"

参见

  • random_int() - Generates cryptographically secure pseudo-random integers
  • openssl_random_pseudo_bytes() - Generate a pseudo-random string of bytes
  • bin2hex() - 函数把包含数据的二进制字符串转换为十六进制值
CSPRNG 函数
random_int
CSPRNG 函数


Generates cryptographically secure pseudo-random integers

random_bytes
Hash
CSPRNG 函数
PHP Manual

random_int

(PHP 7)

random_int — Generates cryptographically secure pseudo-random integers

说明

int random_int ( int $min , int $max )

Generates cryptographic random integers that are suitable for use where unbiased results are critical, such as when shuffling a deck of cards for a poker game.

The sources of randomness used for this function are as follows:

  • On Windows, » CryptGenRandom() will always be used.
  • On Linux, the » getrandom(2) syscall will be used if available.
  • On other platforms, /dev/urandom will be used.
  • If none of the aforementioned sources are available, then an Exception will be thrown.

Note: Although this function was added to PHP in PHP 7.0, a » userland implementation is available for PHP 5.2 to 5.6, inclusive.

参数

min

The lowest value to be returned, which must be PHP_INT_MIN or higher.

max

The highest value to be returned, which must be less than or equal to PHP_INT_MAX.

返回值

Returns a cryptographically secure random integer in the range min to max, inclusive.

错误／异常

  • If an appropriate source of randomness cannot be found, an Exception will be thrown.
  • If invalid parameters are given, a TypeError will be thrown.
  • If max is less than min, an Error will be thrown.

范例

Example #1 random_int() example

<?php
var_dump(random_int(100, 999));
var_dump(random_int(-1000, 0));
?>

以上例程的输出类似于：

int(248)
int(-898)

参见

  • random_bytes() - Generates cryptographically secure pseudo-random bytes
random_bytes
Hash
CSPRNG 函数


哈希信息摘要框架

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Hash 函数
    • hash_algos — 返回已注册的哈希算法列表
    • hash_copy — 拷贝哈希运算上下文
    • hash_equals — 可防止时序攻击的字符串比较
    • hash_file — 使用给定文件的内容生成哈希值
    • hash_final — 结束增量哈希，并且返回摘要结果
    • hash_hmac_file — 使用 HMAC 方法和给定文件的内容生成带密钥的哈希值
    • hash_hmac — 使用 HMAC 方法生成带有密钥的哈希值
    • hash_init — 初始化增量哈希运算上下文
    • hash_pbkdf2 — 生成所提供密码的 PBKDF2 密钥导出
    • hash_update_file — 从文件向活跃的哈希运算上下文中填充数据
    • hash_update_stream — 从打开的流向活跃的哈希运算上下文中填充数据
    • hash_update — 向活跃的哈希运算上下文中填充数据
    • hash — 生成哈希值 （消息摘要）
random_int
简介
加密扩展


简介

信息摘要（哈希）引擎。允许使用各种哈希算法直接或增量处理任意长度的信息。

Hash
安装／配置
Hash


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Hash


需求

使用这些函数不需要安装，它们是 PHP 核心的一部分。

安装／配置
安装
安装／配置


安装

从 PHP 5.1.2 开始，哈希扩展是内置的，不需要外部库， 并且默认是启用的。

可以通过 --disable-hash 参数来禁用此扩展。 对于更早版本的 PHP，可以通过安装 » PECL 模块 来使用哈希扩展。

需求
运行时配置
安装／配置


资源类型

本扩展中定义了哈希上下文资源类型， 该类型资源由 hash_init() 函数返回。

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

HASH_HMAC (integer)
hash_init() 中的可选标志。表示 HMAC digest-keying 算法应被用于当前哈希上下文环境。
资源类型
Hash 函数
Hash


Hash 函数

Table of Contents

  • hash_algos — 返回已注册的哈希算法列表
  • hash_copy — 拷贝哈希运算上下文
  • hash_equals — 可防止时序攻击的字符串比较
  • hash_file — 使用给定文件的内容生成哈希值
  • hash_final — 结束增量哈希，并且返回摘要结果
  • hash_hmac_file — 使用 HMAC 方法和给定文件的内容生成带密钥的哈希值
  • hash_hmac — 使用 HMAC 方法生成带有密钥的哈希值
  • hash_init — 初始化增量哈希运算上下文
  • hash_pbkdf2 — 生成所提供密码的 PBKDF2 密钥导出
  • hash_update_file — 从文件向活跃的哈希运算上下文中填充数据
  • hash_update_stream — 从打开的流向活跃的哈希运算上下文中填充数据
  • hash_update — 向活跃的哈希运算上下文中填充数据
  • hash — 生成哈希值 （消息摘要）
预定义常量
hash_algos
Hash


返回已注册的哈希算法列表

Hash 函数
hash_copy
Hash 函数
PHP Manual

hash_algos

(PHP 5 >= 5.1.2, PHP 7, PECL hash >= 1.1)

hash_algos — 返回已注册的哈希算法列表

说明

array hash_algos ( void )

返回值

返回一个数值索引的数组， 包含了受支持的哈希算法名称。

更新日志

版本 | 说明
5.6.0 | 加入对 gost-crypto 算法的支持。 参照 » RFC 4357，11.2 小节 定义的 CryptoPro S-box 表格实现 GOST 哈希函数。
5.4.0 | 加入对于 joaat，fnv132 和 fnv164 算法的支持。移除 Salsa10 和 Salsa20 算法。
5.3.0 | 加入对 md2，ripemd256，ripemd320，salsa10，salsa20，snefru256 和 sha224 哈希算法的支持。

范例

Example #1 hash_algos() 例程

在 PHP 5.6.0 中，hash_algos() 会返回下表所示的算法清单：

<?php
print_r(hash_algos());
?>

以上例程的输出类似于：

Array
(
    [0] => md2
    [1] => md4
    [2] => md5
    [3] => sha1
    [4] => sha224
    [5] => sha256
    [6] => sha384
    [7] => sha512
    [8] => ripemd128
    [9] => ripemd160
    [10] => ripemd256
    [11] => ripemd320
    [12] => whirlpool
    [13] => tiger128,3
    [14] => tiger160,3
    [15] => tiger192,3
    [16] => tiger128,4
    [17] => tiger160,4
    [18] => tiger192,4
    [19] => snefru
    [20] => snefru256
    [21] => gost
    [22] => gost-crypto
    [23] => adler32
    [24] => crc32
    [25] => crc32b
    [26] => fnv132
    [27] => fnv1a32
    [28] => fnv164
    [29] => fnv1a64
    [30] => joaat
    [31] => haval128,3
    [32] => haval160,3
    [33] => haval192,3
    [34] => haval224,3
    [35] => haval256,3
    [36] => haval128,4
    [37] => haval160,4
    [38] => haval192,4
    [39] => haval224,4
    [40] => haval256,4
    [41] => haval128,5
    [42] => haval160,5
    [43] => haval192,5
    [44] => haval224,5
    [45] => haval256,5
)

Hash 函数
hash_copy
Hash 函数


拷贝哈希运算上下文

hash_algos
hash_equals
Hash 函数
PHP Manual

hash_copy

(PHP 5 >= 5.3.0, PHP 7)

hash_copy — 拷贝哈希运算上下文

说明

resource hash_copy ( resource $context )

参数

context

由 hash_init() 函数返回的哈希运算上下文。

返回值

返回哈希运算上下文资源的一个复本。

范例

Example #1 hash_copy() 例程

<?php
$context = hash_init("md5");
hash_update($context, "data");

/* 拷贝上下文资源以便继续使用 */
$copy_context = hash_copy($context);

echo hash_final($context), "\n";

hash_update($copy_context, "data");
echo hash_final($copy_context), "\n";
?>

以上例程会输出：

8d777f385d3dfec8815d20f7496026dc
511ae0b1c13f95e5f08f1a0dd3da3d93

hash_algos
hash_equals
Hash 函数


可防止时序攻击的字符串比较

hash_copy
hash_file
Hash 函数
PHP Manual

hash_equals

(PHP 5 >= 5.6.0, PHP 7)

hash_equals — 可防止时序攻击的字符串比较

说明

bool hash_equals ( string $known_string , string $user_string )

比较两个字符串，无论它们是否相等，本函数的时间消耗是恒定的。

本函数可以用在需要防止时序攻击的字符串比较场景中， 例如，可以用在比较 crypt() 密码哈希值的场景。

参数

known_string

已知长度的、要参与比较的 string

user_string

用户提供的字符串

返回值

当两个字符串相等时返回 TRUE，否则返回 FALSE。

错误／异常

如果所提供的 2 个参数中任何一个不是字符串， 会导致 E_WARNING 消息。

范例

Example #1 例程

<?php
$expected  = crypt('12345', '$2a$07$usesomesillystringforsalt$');
$correct   = crypt('12345', '$2a$07$usesomesillystringforsalt$');
$incorrect = crypt('apple',  '$2a$07$usesomesillystringforsalt$');

var_dump(hash_equals($expected, $correct));
var_dump(hash_equals($expected, $incorrect));
?>

以上例程会输出：

bool(true)
bool(false)

注释

Note:

要想成功进行比较，那么所提供的 2 个参数必须是相同长度的字符串。 如果所提供的字符串长度不同，那么本函数会立即返回 FALSE， 在时序攻击的场景下，已知字符串的长度可能会被泄露。

Note:

非常重要的一点是，用户提供的字符串必须是第二个参数。

hash_copy
hash_file
Hash 函数


使用给定文件的内容生成哈希值

hash_equals
hash_final
Hash 函数
PHP Manual

hash_file

(PHP 5 >= 5.1.2, PHP 7, PECL hash >= 1.1)

hash_file — 使用给定文件的内容生成哈希值

说明

string hash_file ( string $algo , string $filename [, bool $raw_output = false ] )

参数

algo

要使用的哈希算法的名称，例如："md5"，"sha256"，"haval160,4" 等。

filename

要进行哈希运算的文件路径。支持 fopen 封装器。

raw_output

设置为 TRUE，输出格式为原始的二进制数据。 设置为 FALSE，输出小写的 16 进制字符串。

返回值

如果 raw_output 设置为 TRUE， 则返回原始二进制数据表示的信息摘要， 否则返回 16 进制小写字符串格式表示的信息摘要。

范例

Example #1 使用 hash_file()

<?php
/* 创建一个要计算哈希值的文件 */
file_put_contents('example.txt', 'The quick brown fox jumped over the lazy dog.');

echo hash_file('md5', 'example.txt');
?>

以上例程会输出：

5c6ffbdd40d9556b73a21e63c3e0e904

参见

  • hash() - 生成哈希值 （消息摘要）
  • hash_hmac_file() - 使用 HMAC 方法和给定文件的内容生成带密钥的哈希值
  • hash_update_file() - 从文件向活跃的哈希运算上下文中填充数据
  • md5_file() - 计算指定文件的 MD5 散列值
  • sha1_file() - 计算文件的 sha1 散列值

hash_equals
hash_final
Hash 函数


结束增量哈希，并且返回摘要结果

hash_file
hash_hmac_file
Hash 函数
PHP Manual

hash_final

(PHP 5 >= 5.1.2, PHP 7, PECL hash >= 1.1)

hash_final — 结束增量哈希，并且返回摘要结果

说明

string hash_final ( resource $context [, bool $raw_output = false ] )

参数

context

hash_init() 函数返回的哈希运算上下文资源。

raw_output

设置为 TRUE，输出格式为原始的二进制数据。 设置为 FALSE，输出小写的 16 进制字符串。

返回值

如果 raw_output 设置为 TRUE， 则返回原始二进制数据表示的信息摘要， 否则返回 16 进制小写字符串格式表示的信息摘要。

范例

Example #1 hash_final() 例程

<?php
$ctx = hash_init('sha1');
hash_update($ctx, 'The quick brown fox jumped over the lazy dog.');
echo hash_final($ctx);
?>

以上例程会输出：

c0854fb9fb03c41cce3802cb0d220529e6eef94e

参见

  • hash_init() - 初始化增量哈希运算上下文
  • hash_update() - 向活跃的哈希运算上下文中填充数据
  • hash_update_stream() - 从打开的流向活跃的哈希运算上下文中填充数据
  • hash_update_file() - 从文件向活跃的哈希运算上下文中填充数据

hash_file
hash_hmac_file
Hash 函数


使用 HMAC 方法和给定文件的内容生成带密钥的哈希值

hash_final
hash_hmac
Hash 函数
PHP Manual

hash_hmac_file

(PHP 5 >= 5.1.2, PHP 7, PECL hash >= 1.1)

hash_hmac_file — 使用 HMAC 方法和给定文件的内容生成带密钥的哈希值

说明

string hash_hmac_file ( string $algo , string $filename , string $key [, bool $raw_output = false ] )

参数

algo

要使用的哈希算法名称，例如："md5"，"sha256"，"haval160,4" 等。 如何获取受支持的算法清单，请参见 hash_algos()。

filename

要进行哈希运算的文件路径，支持 fopen 封装器。

key

使用 HMAC 生成信息摘要时所使用的密钥。

raw_output

设置为 TRUE 输出原始二进制数据， 设置为 FALSE 输出小写 16 进制字符串。

返回值

如果 raw_output 设置为 TRUE， 则返回原始二进制数据表示的信息摘要， 否则返回 16 进制小写字符串格式表示的信息摘要。 如果 algo 参数指定的不是受支持的算法，返回 FALSE。

范例

Example #1 hash_hmac_file() 例程

<?php
/* 创建一个要计算哈希值的文件 */
file_put_contents('example.txt', 'The quick brown fox jumped over the lazy dog.');

echo hash_hmac_file('md5', 'example.txt', 'secret');
?>

以上例程会输出：

7eb2b5c37443418fc77c136dd20e859c

参见

  • hash_algos() - 返回已注册的哈希算法列表
  • hash_hmac() - 使用 HMAC 方法生成带有密钥的哈希值
  • hash_file() - 使用给定文件的内容生成哈希值

hash_final
hash_hmac
Hash 函数


使用 HMAC 方法生成带有密钥的哈希值

hash_hmac_file
hash_init
Hash 函数
PHP Manual

hash_hmac

(PHP 5 >= 5.1.2, PHP 7, PECL hash >= 1.1)

hash_hmac — 使用 HMAC 方法生成带有密钥的哈希值

说明

string hash_hmac ( string $algo , string $data , string $key [, bool $raw_output = false ] )

参数

algo

要使用的哈希算法名称，例如："md5"，"sha256"，"haval160,4" 等。 如何获取受支持的算法清单，请参见 hash_algos()。

data

要进行哈希运算的消息。

key

使用 HMAC 生成信息摘要时所使用的密钥。

raw_output

设置为 TRUE 输出原始二进制数据， 设置为 FALSE 输出小写 16 进制字符串。

返回值

如果 raw_output 设置为 TRUE， 则返回原始二进制数据表示的信息摘要， 否则返回 16 进制小写字符串格式表示的信息摘要。 如果 algo 参数指定的不是受支持的算法，返回 FALSE。

范例

Example #1 hash_hmac() 例程

<?php
echo hash_hmac('ripemd160', 'The quick brown fox jumped over the lazy dog.', 'secret');
?>

以上例程会输出：

b8e7ae12510bdfb1812e463a7f086122cf37e4f7

参见

  • hash() - 生成哈希值 （消息摘要）
  • hash_algos() - 返回已注册的哈希算法列表
  • hash_init() - 初始化增量哈希运算上下文
  • hash_hmac_file() - 使用 HMAC 方法和给定文件的内容生成带密钥的哈希值

hash_hmac_file
hash_init
Hash 函数


初始化增量哈希运算上下文

hash_hmac
hash_pbkdf2
Hash 函数
PHP Manual

hash_init

(PHP 5 >= 5.1.2, PHP 7, PECL hash >= 1.1)

hash_init — 初始化增量哈希运算上下文

说明

resource hash_init ( string $algo [, int $options = 0 [, string $key = NULL ]] )

参数

algo

要使用的哈希算法名称，例如："md5"，"sha256"，"haval160,4" 等。 如何获取受支持的算法清单，请参见 hash_algos()。

options

进行哈希运算的可选设置，目前仅支持一个选项：HASH_HMAC。 当指定此选项的时候，必须 指定 key 参数。

key

当 options 参数为 HASH_HMAC 时， 使用此参数传入进行 HMAC 哈希运算时的共享密钥。

返回值

返回哈希运算上下文资源，以供
hash_update()，
hash_update_stream()，hash_update_file(),
和 hash_final() 函数使用。

范例

Example #1 增量哈希运算例程

<?php
$ctx = hash_init('md5');
hash_update($ctx, 'The quick brown fox ');
hash_update($ctx, 'jumped over the lazy dog.');
echo hash_final($ctx);
?>

以上例程会输出：

5c6ffbdd40d9556b73a21e63c3e0e904

参见

  • hash() - 生成哈希值 （消息摘要）
  • hash_algos() - 返回已注册的哈希算法列表
  • hash_file() - 使用给定文件的内容生成哈希值
  • hash_hmac() - 使用 HMAC 方法生成带有密钥的哈希值
  • hash_hmac_file() - 使用 HMAC 方法和给定文件的内容生成带密钥的哈希值

hash_hmac
hash_pbkdf2
Hash 函数


生成所提供密码的 PBKDF2 密钥导出

hash_init
hash_update_file
Hash 函数
PHP Manual

hash_pbkdf2

(PHP 5 >= 5.5.0, PHP 7)

hash_pbkdf2 — 生成所提供密码的 PBKDF2 密钥导出

说明

string hash_pbkdf2 ( string $algo , string $password , string $salt , int $iterations [, int $length = 0 [, bool $raw_output = false ]] )

参数

algo

哈希算法名称，例如 md5，sha256，haval160,4 等。 受支持的算法清单请参见 hash_algos()。

password

要进行导出的密码。

salt

进行导出时所使用的"盐"，这个值应该是随机生成的。

iterations

进行导出时的迭代次数。

length

密钥导出数据的长度。如果 raw_output 为 TRUE， 此参数为密钥导出数据的字节长度。如果 raw_output 为 FALSE， 此参数为密钥导出数据的字节长度的 2 倍，因为 1 个字节数据对应的 2 个 16 进制的字符。

如果传入 0，则使用所选算法的完整输出大小。

raw_output

设置为 TRUE 输出原始二进制数据， 设置为 FALSE 输出小写 16 进制字符串。

返回值

如果 raw_output 设置为 TRUE， 则返回原始二进制数据表示的信息摘要， 否则返回 16 进制小写字符串格式表示的信息摘要。

错误／异常

在以下情况下会产生 E_WARNING： 指定了未知的算法， iterations 小于等于 0， length 小于等于 0 或者 salt 过长（大于 INT_MAX - 4）。

范例

Example #1 hash_pbkdf2() 例程，基础用法

<?php
$password = "password";
$iterations = 1000;

// 使用 mcrypt_create_iv() 生成随机初始向量，
// 也可以使用 openssl_random_pseudo_bytes() 或其他适合的随机源。
$salt = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM);

$hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 20);
echo $hash;
?>

以上例程的输出类似于：

120fb6cffcf8b32c43e7

注释

Caution

为了安全起见，可以使用 PBKDF2 方法对密码明文进行哈希运算后再存储。 但是更好的方案是使用 password_hash() 函数 或者使用 CRYPT_BLOWFISH 算法调用 crypt() 函数。

参见

  • crypt() - 单向字符串散列
  • password_hash() - 创建密码的哈希（hash）
  • hash() - 生成哈希值 （消息摘要）
  • hash_algos() - 返回已注册的哈希算法列表
  • hash_init() - 初始化增量哈希运算上下文
  • hash_hmac() - 使用 HMAC 方法生成带有密钥的哈希值
  • hash_hmac_file() - 使用 HMAC 方法和给定文件的内容生成带密钥的哈希值

hash_init
hash_update_file
Hash 函数


从文件向活跃的哈希运算上下文中填充数据

hash_pbkdf2
hash_update_stream
Hash 函数
PHP Manual

hash_update_file

(PHP 5 >= 5.1.2, PHP 7, PECL hash >= 1.1)

hash_update_file — 从文件向活跃的哈希运算上下文中填充数据

说明

bool hash_update_file ( resource $hcontext , string $filename [, resource $scontext = NULL ] )

参数

hcontext

由 hash_init() 函数返回的哈希运算上下文。

filename

要进行哈希运算的文件路径，支持 fopen 封装器。

scontext

由 stream_context_create() 函数返回的流上下文。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • hash_init() - 初始化增量哈希运算上下文
  • hash_update() - 向活跃的哈希运算上下文中填充数据
  • hash_update_stream() - 从打开的流向活跃的哈希运算上下文中填充数据
  • hash_final() - 结束增量哈希，并且返回摘要结果
  • hash() - 生成哈希值 （消息摘要）
  • hash_file() - 使用给定文件的内容生成哈希值

hash_pbkdf2
hash_update_stream
Hash 函数


从打开的流向活跃的哈希运算上下文中填充数据

hash_update_file
hash_update
Hash 函数
PHP Manual

hash_update_stream

(PHP 5 >= 5.1.2, PHP 7, PECL hash >= 1.1)

hash_update_stream — 从打开的流向活跃的哈希运算上下文中填充数据

说明

int hash_update_stream ( resource $context , resource $handle [, int $length = -1 ] )

参数

context

由 hash_init() 函数返回的哈希运算上下文。

handle

创建流的函数返回的打开的文件句柄。

length

要从 handle 向活跃的哈希运算上下文中拷贝 的最大字符数。

返回值

从 handle 向哈希运算上下文中实际填充的字节数量。

范例

Example #1 hash_update_stream() 例程

<?php
$fp = tmpfile();
fwrite($fp, 'The quick brown fox jumped over the lazy dog.');
rewind($fp);

$ctx = hash_init('md5');
hash_update_stream($ctx, $fp);
echo hash_final($ctx);
?>

以上例程会输出：

5c6ffbdd40d9556b73a21e63c3e0e904

参见

  • hash_init() - 初始化增量哈希运算上下文
  • hash_update() - 向活跃的哈希运算上下文中填充数据
  • hash_final() - 结束增量哈希，并且返回摘要结果
  • hash() - 生成哈希值 （消息摘要）
  • hash_file() - 使用给定文件的内容生成哈希值

hash_update_file
hash_update
Hash 函数


向活跃的哈希运算上下文中填充数据

hash_update_stream
hash
Hash 函数
PHP Manual

hash_update

(PHP 5 >= 5.1.2, PHP 7, PECL hash >= 1.1)

hash_update — 向活跃的哈希运算上下文中填充数据

说明

bool hash_update ( resource $context , string $data )

参数

context

由 hash_init() 函数返回的哈希运算上下文。

data

要向哈希摘要中追加的数据。

返回值

返回 TRUE。

参见

  • hash_init() - 初始化增量哈希运算上下文
  • hash_update_file() - 从文件向活跃的哈希运算上下文中填充数据
  • hash_update_stream() - 从打开的流向活跃的哈希运算上下文中填充数据
  • hash_final() - 结束增量哈希，并且返回摘要结果

hash_update_stream
hash
Hash 函数


生成哈希值 （消息摘要）

hash_update
Mcrypt
Hash 函数
PHP Manual

hash

(PHP 5 >= 5.1.2, PHP 7, PECL hash >= 1.1)

hash — 生成哈希值 （消息摘要）

说明

string hash ( string $algo , string $data [, bool $raw_output = false ] )

参数

algo

要使用的哈希算法，例如："md5"，"sha256"，"haval160,4" 等。

data

要进行哈希运算的消息。

raw_output

设置为 TRUE 输出原始二进制数据， 设置为 FALSE 输出小写 16 进制字符串。

返回值

如果 raw_output 设置为 TRUE， 则返回原始二进制数据表示的信息摘要， 否则返回 16 进制小写字符串格式表示的信息摘要。

更新日志

版本 | 说明
5.4.0 | tiger 算法使用大端（big-endian）字节序。参见下面的示例。

范例

Example #1 一个 hash() 例程

<?php
echo hash('ripemd160', 'The quick brown fox jumped over the lazy dog.');
?>

以上例程会输出：

ec457d0a974c48d5685a7efa03d137dc8bbde7e3

Example #2 使用 PHP 5.4 或者更高版本计算 tiger 哈希值

<?php
function old_tiger($data = "", $width=192, $rounds = 3) {
    return substr(
        implode(
            array_map(
                function ($h) {
                    return str_pad(bin2hex(strrev($h)), 16, "0");
                },
                str_split(hash("tiger192,$rounds", $data, true), 8)
            )
        ),
        0, 48-(192-$width)/4
    );
}
echo hash('tiger192,3', 'a-string'), PHP_EOL;
echo old_tiger('a-string'), PHP_EOL;
?>

以上例程在PHP 5.3中的输出：

146a7492719b3564094efe7abbd40a7416fd900179d02773
64359b7192746a14740ad4bb7afe4e097327d0790190fd16

以上例程在PHP 5.4中的输出：

64359b7192746a14740ad4bb7afe4e097327d0790190fd16
146a7492719b3564094efe7abbd40a7416fd900179d02773

参见

  • hash_file() - 使用给定文件的内容生成哈希值
  • hash_hmac() - 使用 HMAC 方法生成带有密钥的哈希值
  • hash_init() - 初始化增量哈希运算上下文
  • md5() - 计算字符串的 MD5 散列值
  • sha1() - 计算字符串的 sha1 散列值

hash_update
Mcrypt
Hash 函数


Mcrypt

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Mcrypt 密码
  • 范例
  • Mcrypt 函数
    • mcrypt_cbc — 以 CBC 模式加解密数据
    • mcrypt_cfb — 以 CFB 模式加解密数据
    • mcrypt_create_iv — 从随机源创建初始向量
    • mcrypt_decrypt — 使用给定参数解密密文
    • mcrypt_ecb — 已废弃：使用 ECB 模式加解密数据
    • mcrypt_enc_get_algorithms_name — 返回打开的算法名称
    • mcrypt_enc_get_block_size — 返回打开的算法的分组大小
    • mcrypt_enc_get_iv_size — 返回打开的算法的初始向量大小
    • mcrypt_enc_get_key_size — 返回打开的模式所能支持的最长密钥
    • mcrypt_enc_get_modes_name — 返回打开的模式的名称
    • mcrypt_enc_get_supported_key_sizes — 以数组方式返回打开的算法所支持的密钥长度
    • mcrypt_enc_is_block_algorithm_mode — 检测打开的模式是否支持分组加密
    • mcrypt_enc_is_block_algorithm — 检测打开模式的算法是否为分组算法
    • mcrypt_enc_is_block_mode — 检测打开的模式是否以分组方式输出
    • mcrypt_enc_self_test — 在打开的模块上进行自检
    • mcrypt_encrypt — 使用给定参数加密明文
    • mcrypt_generic_deinit — 对加密模块进行清理工作
    • mcrypt_generic_end — 终止加密
    • mcrypt_generic_init — 初始化加密所需的缓冲区
    • mcrypt_generic — 加密数据
    • mcrypt_get_block_size — 获得加密算法的分组大小
    • mcrypt_get_cipher_name — 获取加密算法名称
    • mcrypt_get_iv_size — 返回指定算法/模式组合的初始向量大小
    • mcrypt_get_key_size — 获取指定加密算法的密钥大小
    • mcrypt_list_algorithms — 获取支持的加密算法
    • mcrypt_list_modes — 获取所支持的模式
    • mcrypt_module_close — 关闭加密模块
    • mcrypt_module_get_algo_block_size — 返回指定算法的分组大小
    • mcrypt_module_get_algo_key_size — 获取打开模式所支持的最大密钥大小
    • mcrypt_module_get_supported_key_sizes — 以数组形式返回打开的算法所支持的密钥大小
    • mcrypt_module_is_block_algorithm_mode — 返回指定模块是否是分组加密模式
    • mcrypt_module_is_block_algorithm — 检测指定算法是否为分组加密算法
    • mcrypt_module_is_block_mode — 检测指定模式是否以分组方式输出
    • mcrypt_module_open — 打开算法和模式对应的模块
    • mcrypt_module_self_test — 在指定模块上执行自检
    • mcrypt_ofb — 使用 OFB 模式加密/解密数据
    • mdecrypt_generic — 解密数据
hash
简介
加密扩展


简介

Warning

本扩展从 PHP 7.1.0 开始废弃；自 PHP 7.2.0 起，会移到 PECL。

本扩展是 mcrypt 库的接口，mcrypt 库提供了对多种块算法的支持， 包括：DES，TripleDES，Blowfish （默认）， 3-WAY，SAFER-SK64，SAFER-SK128，TWOFISH，TEA，RC2 以及 GOST，并且支持 CBC，OFB，CFB 和 ECB 密码模式。 甚至，它还支持诸如 RC6 和 IDEA 这两种"非免费"的算法。 默认情况下，CFB/OFB 是 8 比特的。

Mcrypt
安装／配置
Mcrypt


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Mcrypt


需求

这些函数需要使用 » mcrypt 库。 请从 » http://mcrypt.sourceforge.net/ 下载 libmcrypt-x.x.tar.gz， 并按以下指导完成安装。

从 PHP 5.0.0 开始，你需要使用 libcrypt 2.5.6 或更高版本。

PHP 5.2 的 Windows 二进制发行版中已经包含了本库。 PHP 5.3 的 Windows 二进制发行版中开始使用 MCrypt 静态库， 所以不再需要 DLL。

如果使用 libmcrypt 2.4.x 或更高版本链接编译 PHP，支持以下附加的分组加密算法： CAST，LOKI97，RIJNDAEL，SAFERPLUS，SERPENT， 以及以下流密码：ENIGMA（加密）， PANAMA，RC4 和 WAKE。 如果使用 libmcrypt 2.4.x 或更高版本，那么还支持 nOFB 密码模式。

安装／配置
安装
安装／配置


安装

使用 --with-mcrypt[=DIR] 参数来编译 PHP 以启用本扩展。 DIR 是 mcrypt 的安装路径。 请确保编译 libmcrypt 的时候使用了 --disable-posix-threads 选项。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Mcrypt 配置选项
名字 | 默认 | 可修改范围 | 更新日志
mcrypt.algorithms_dir | NULL | PHP_INI_ALL |
mcrypt.modes_dir | NULL | PHP_INI_ALL |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

mcrypt.algorithms_dir string

包含算法的目录。 默认情况向是 libmcrypt 的编译目录， 通常是 /usr/local/lib/libmcrypt。 更多信息请参见 mcrypt_list_algorithms()。

mcrypt.modes_dir string

包含模式的目录。 默认情况向是 libmcrypt 的编译目录， 通常是 /usr/local/lib/libmcrypt。 更多信息请参见 mcrypt_list_modes()。

安装
资源类型
安装／配置


资源类型

mcrypt_module_open() 返回加密描述符。

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

Mcrypt 支持以下四种分组密码模式：CBC， OFB，CFB 和 ECB。 如果使用 libmcrypt-2.4.x 或更高版本链接， 还可以支持 nOFB 分组模式 和 流 模式。 下列是所支持的加密模式以及其对应的预定义常量。 完整的参考见：Applied Cryptography by Schneier (ISBN 0-471-11709-9)。

  • MCRYPT_MODE_ECB (electronic codebook) 适用于随机数据， 比如可以用这种模式来加密其他密钥。 由于要加密的数据很短，并且是随机的，所以这种模式的缺点反而起到了积极的作用。
  • MCRYPT_MODE_CBC (cipher block chaining) 特别适用于对文件进行加密。 相比 ECB， 它的安全性有明显提升。
  • MCRYPT_MODE_CFB (cipher feedback) 对于每个单独的字节都进行加密， 所以非常适用于针对字节流的加密。
  • MCRYPT_MODE_OFB (output feedback, in 8bit) 和 CFB 类似。 它可以用在无法容忍加密错误传播的应用中。 因为它是按照 8 个比特位进行加密的， 所以安全系数较低，不建议使用。
  • MCRYPT_MODE_NOFB (output feedback, in nbit) 和 OFB 类似，但是更加安全， 因为它可以按照算法指定的分组大小来对数据进行加密。
  • MCRYPT_MODE_STREAM 是一种扩展模式， 它包含了诸如 "WAKE" 或 "RC4" 的流加密算法。

其他模式以及随机设备常量：

MCRYPT_ENCRYPT (integer)
MCRYPT_DECRYPT (integer)
MCRYPT_DEV_RANDOM (integer)
MCRYPT_DEV_URANDOM (integer)
MCRYPT_RAND (integer)

资源类型
Mcrypt 密码
Mcrypt


Mcrypt 密码

下表是 mcrypt 扩展所支持的密码。 所支持的密码的完整列表请参见 mcrypt.h 文件。 在 PHP 中使用 mcrypt-2.2.x 的一个通用规则是你可以使用 MCRYPT_ciphername 来访问密码。 在 libmcrypt-2.4.x 和 libmcrypt-2.5.x 的 API 中，这些常量依然可用， 但是你也可以把密码模式以字符串的形式传入 mcrypt_module_open() 函数 来进行访问。

  • MCRYPT_3DES
  • MCRYPT_ARCFOUR_IV ( 仅 libmcrypt > 2.4.x 可用 )
  • MCRYPT_ARCFOUR ( 仅 libmcrypt > 2.4.x 可用 )
  • MCRYPT_BLOWFISH
  • MCRYPT_CAST_128
  • MCRYPT_CAST_256
  • MCRYPT_CRYPT
  • MCRYPT_DES
  • MCRYPT_DES_COMPAT ( 仅 libmcrypt 2.2.x 可用 )
  • MCRYPT_ENIGMA ( 仅 libmcrypt > 2.4.x 可用，MCRYPT_CRYPT 的别名)
  • MCRYPT_GOST
  • MCRYPT_IDEA (非免费算法)
  • MCRYPT_LOKI97 ( 仅 libmcrypt > 2.4.x 可用 )
  • MCRYPT_MARS ( 仅 libmcrypt > 2.4.x 可用，非免费算法)
  • MCRYPT_PANAMA ( 仅 libmcrypt > 2.4.x 可用 )
  • MCRYPT_RIJNDAEL_128 ( 仅 libmcrypt > 2.4.x 可用 )
  • MCRYPT_RIJNDAEL_192 ( 仅 libmcrypt > 2.4.x 可用 )
  • MCRYPT_RIJNDAEL_256 ( 仅 libmcrypt > 2.4.x 可用 )
  • MCRYPT_RC2
  • MCRYPT_RC4 ( 仅 libmcrypt 2.2.x 可用 )
  • MCRYPT_RC6 ( 仅 libmcrypt > 2.4.x 可用 )
  • MCRYPT_RC6_128 ( 仅 libmcrypt 2.2.x 可用 )
  • MCRYPT_RC6_192 ( 仅 libmcrypt 2.2.x 可用 )
  • MCRYPT_RC6_256 ( 仅 libmcrypt 2.2.x 可用 )
  • MCRYPT_SAFER64
  • MCRYPT_SAFER128
  • MCRYPT_SAFERPLUS ( 仅 libmcrypt > 2.4.x 可用 )
  • MCRYPT_SERPENT( 仅 libmcrypt > 2.4.x 可用 )
  • MCRYPT_SERPENT_128 ( 仅 libmcrypt 2.2.x 可用 )
  • MCRYPT_SERPENT_192 ( 仅 libmcrypt 2.2.x 可用 )
  • MCRYPT_SERPENT_256 ( 仅 libmcrypt 2.2.x 可用 )
  • MCRYPT_SKIPJACK ( 仅 libmcrypt > 2.4.x 可用 )
  • MCRYPT_TEAN ( 仅 libmcrypt 2.2.x 可用 )
  • MCRYPT_THREEWAY
  • MCRYPT_TRIPLEDES ( 仅 libmcrypt > 2.4.x 可用 )
  • MCRYPT_TWOFISH ( mcrypt 2.x 之前的版本，或者 2.4.x 之后版本可用 )
  • MCRYPT_TWOFISH128 (TWOFISHxxx 在新的 2.x 版本可用，但在 2.4.x 版本不可用)
  • MCRYPT_TWOFISH192
  • MCRYPT_TWOFISH256
  • MCRYPT_WAKE ( 仅 libmcrypt > 2.4.x 可用 )
  • MCRYPT_XTEA ( 仅 libmcrypt > 2.4.x 可用 )

如果使用 CFB 和 OFB 模式， 必须提供初始向量（IV）， 如果使用 CBC 模式， 可以提供一个初始向量。 初始向量必须是唯一的，并且在加密和解密过程中要保持一致。 你可以将初始向量和加密后数据一起存储， 其存储位置可以由一个函数的输出来指定， 例如文件名的 MD5 散列值， 这样你就可以把初始向量和加密后的数据一起传输 （关于本话题的更多信息，请参见 Applied Cryptography by Schneier (ISBN 0-471-11709-9) 9.3 一节）。

预定义常量
范例
Mcrypt


范例

Mcrypt 支持使用上述的算法来进行加密和解密。 如果你使用 libmcrypt-2.2.x 链接编译 PHP， 通过使用最重要的四个函数（mcrypt_cfb()， mcrypt_cbc(), mcrypt_ecb()， 和 mcrypt_ofb()） 以及 MCRYPT_ENCRYPT and MCRYPT_DECRYPT 来对数据进行加解密。

如果你使用 libmcrypt 2.4.x 或者 2.5.x 版本，以上函数依然可用。 但是建议使用新版本提供的更先进的函数。

Example #1 在 2.4.x 或更高版本，使用 256 比特的密钥，AES 算法和 CBC 模式来加密输入数据

<?php
    $key = hash('sha256', 'this is a secret key', true);
    $input = "Let us meet at 9 o'clock at the secret place.";

    $td = mcrypt_module_open('rijndael-128', '', 'cbc', '');
    $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_URANDOM);
    mcrypt_generic_init($td, $key, $iv);
    $encrypted_data = mcrypt_generic($td, $input);
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
?>
本例程将加密后的数据以字符串格式存储于 $encrypted_data 变量。 完整例程请参见 mcrypt_module_open()。

Mcrypt 密码
Mcrypt 函数
Mcrypt


Mcrypt 函数

Table of Contents

  • mcrypt_cbc — 以 CBC 模式加解密数据
  • mcrypt_cfb — 以 CFB 模式加解密数据
  • mcrypt_create_iv — 从随机源创建初始向量
  • mcrypt_decrypt — 使用给定参数解密密文
  • mcrypt_ecb — 已废弃：使用 ECB 模式加解密数据
  • mcrypt_enc_get_algorithms_name — 返回打开的算法名称
  • mcrypt_enc_get_block_size — 返回打开的算法的分组大小
  • mcrypt_enc_get_iv_size — 返回打开的算法的初始向量大小
  • mcrypt_enc_get_key_size — 返回打开的模式所能支持的最长密钥
  • mcrypt_enc_get_modes_name — 返回打开的模式的名称
  • mcrypt_enc_get_supported_key_sizes — 以数组方式返回打开的算法所支持的密钥长度
  • mcrypt_enc_is_block_algorithm_mode — 检测打开的模式是否支持分组加密
  • mcrypt_enc_is_block_algorithm — 检测打开模式的算法是否为分组算法
  • mcrypt_enc_is_block_mode — 检测打开的模式是否以分组方式输出
  • mcrypt_enc_self_test — 在打开的模块上进行自检
  • mcrypt_encrypt — 使用给定参数加密明文
  • mcrypt_generic_deinit — 对加密模块进行清理工作
  • mcrypt_generic_end — 终止加密
  • mcrypt_generic_init — 初始化加密所需的缓冲区
  • mcrypt_generic — 加密数据
  • mcrypt_get_block_size — 获得加密算法的分组大小
  • mcrypt_get_cipher_name — 获取加密算法名称
  • mcrypt_get_iv_size — 返回指定算法/模式组合的初始向量大小
  • mcrypt_get_key_size — 获取指定加密算法的密钥大小
  • mcrypt_list_algorithms — 获取支持的加密算法
  • mcrypt_list_modes — 获取所支持的模式
  • mcrypt_module_close — 关闭加密模块
  • mcrypt_module_get_algo_block_size — 返回指定算法的分组大小
  • mcrypt_module_get_algo_key_size — 获取打开模式所支持的最大密钥大小
  • mcrypt_module_get_supported_key_sizes — 以数组形式返回打开的算法所支持的密钥大小
  • mcrypt_module_is_block_algorithm_mode — 返回指定模块是否是分组加密模式
  • mcrypt_module_is_block_algorithm — 检测指定算法是否为分组加密算法
  • mcrypt_module_is_block_mode — 检测指定模式是否以分组方式输出
  • mcrypt_module_open — 打开算法和模式对应的模块
  • mcrypt_module_self_test — 在指定模块上执行自检
  • mcrypt_ofb — 使用 OFB 模式加密/解密数据
  • mdecrypt_generic — 解密数据
范例
mcrypt_cbc
Mcrypt


以 CBC 模式加解密数据

Mcrypt 函数
mcrypt_cfb
Mcrypt 函数
PHP Manual

mcrypt_cbc

(PHP 4, PHP 5)

mcrypt_cbc — 以 CBC 模式加解密数据

Warning

This function was DEPRECATED in PHP 5.5.0, and REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • mcrypt_decrypt()
  • mcrypt_encrypt()

说明

string mcrypt_cbc ( int $cipher , string $key , string $data , int $mode [, string $iv ] )
string mcrypt_cbc ( string $cipher , string $key , string $data , int $mode [, string $iv ] )

第一个原型是针对 libmcrypt 2.2.x 的， 第二个原型是针对 libmcrypt 2.4.x 及更高版本的。 mode 可选值为： MCRYPT_ENCRYPT 或 MCRYPT_DECRYPT。

Mcrypt 函数
mcrypt_cfb
Mcrypt 函数


以 CFB 模式加解密数据

mcrypt_cbc
mcrypt_create_iv
Mcrypt 函数
PHP Manual

mcrypt_cfb

(PHP 4, PHP 5)

mcrypt_cfb — 以 CFB 模式加解密数据

Warning

This function was DEPRECATED in PHP 5.5.0, and REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • mcrypt_decrypt()
  • mcrypt_encrypt()

说明

string mcrypt_cfb ( int $cipher , string $key , string $data , int $mode , string $iv )
string mcrypt_cfb ( string $cipher , string $key , string $data , int $mode [, string $iv ] )

第一个原型是针对 libmcrypt 2.2.x 的， 第二个原型是针对 libmcrypt 2.4.x 及更高版本的。 mode 可选值为： MCRYPT_ENCRYPT 或 MCRYPT_DECRYPT。

mcrypt_cbc
mcrypt_create_iv
Mcrypt 函数


从随机源创建初始向量

mcrypt_cfb
mcrypt_decrypt
Mcrypt 函数
PHP Manual

mcrypt_create_iv

(PHP 4, PHP 5, PHP 7)

mcrypt_create_iv — 从随机源创建初始向量

Warning

This function was DEPRECATED in PHP 7.1.0.

Alternatives to this function include:

  • random_bytes()

说明

string mcrypt_create_iv ( int $size [, int $source = MCRYPT_DEV_URANDOM ] )

从随机源创建初始向量。

初始向量只是为了给加密算法提供一个可用的种子， 所以它不需要安全保护， 你甚至可以随同密文一起发布初始向量也不会对安全性带来影响。

参数

size

初始向量大小。

source

初始向量数据来源。可选值有： MCRYPT_RAND （系统随机数生成器）, MCRYPT_DEV_RANDOM （从 /dev/random 文件读取数据） 和 MCRYPT_DEV_URANDOM （从 /dev/urandom 文件读取数据）。 在 Windows 平台，PHP 5.3.0 之前的版本中，仅支持 MCRYPT_RAND。

请注意，在 PHP 5.6.0 之前的版本中， 此参数的默认值为 MCRYPT_DEV_RANDOM。

Note: 需要注意的是，如果没有更多可用的用来产生随机数据的信息，那么 MCRYPT_DEV_RANDOM 可能进入阻塞状态。

返回值

返回初始向量。如果发生错误，则返回 FALSE。

更新日志

版本 | 说明
5.6.0 | source 参数的默认值是 MCRYPT_DEV_URANDOM。
5.3.0 | MCRYPT_DEV_RANDOM 和 MCRYPT_DEV_URANDOM 在 Windows 平台也可用了。
5.3.0 | 不再需要提前调用 srand() 函数， 由本函数自动完成调用。

范例

Example #1 mcrypt_create_iv() 例程

<?php
    $size = mcrypt_get_iv_size(MCRYPT_CAST_256, MCRYPT_MODE_CFB);
    $iv = mcrypt_create_iv($size, MCRYPT_DEV_RANDOM);
?>

参见

  • » http://www.ciphersbyritter.com/GLOSSARY.HTM#IV
  • » http://www.quadibloc.com/crypto/co0409.htm
  • Applied Cryptography by Schneier (ISBN 0-471-11709-9) 9.3 节。
  • random_bytes() - Generates cryptographically secure pseudo-random bytes

mcrypt_cfb
mcrypt_decrypt
Mcrypt 函数


使用给定参数解密密文

mcrypt_create_iv
mcrypt_ecb
Mcrypt 函数
PHP Manual

mcrypt_decrypt

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_decrypt — 使用给定参数解密密文

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

string mcrypt_decrypt ( string $cipher , string $key , string $data , string $mode [, string $iv ] )

解密 data 并返回明文。

参数

cipher

MCRYPT_ciphername 常量中的一个，或者是字符串值的算法名称。

key

数据加密密钥。 如果密钥长度不是加解密算法能够支持的有效长度， 那么会产生警告并且返回 FALSE

data

要使用给定的 cipher 和 mode 解密的数据。 如果数据大小不是 n * 分组大小，则在其后追加 '\0' 来补齐。

mode

MCRYPT_MODE_modename 常量中的一个，或以下字符串中的一个："ecb"，"cbc"，"cfb"，"ofb"，"nofb" 和 "stream"。

iv

Used for the initialization in CBC, CFB, OFB modes, and in some algorithms in STREAM mode. If the provided IV size is not supported by the chaining mode or no IV was provided, but the chaining mode requires one, the function will emit a warning and return FALSE.

返回值

以字符串格式返回解密后的数据， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.6.0 | 不再接受无效长度的 key and iv 参数。 如果参数长度无效，则 mcrypt_decrypt() 函数会产生警告并且返回 FALSE。 之前版本中，对于长度不足的密钥和初始向量会在其后补齐 '\0' 使其达到有效长度。

参见

  • mcrypt_encrypt() - 使用给定参数加密明文

mcrypt_create_iv
mcrypt_ecb
Mcrypt 函数


已废弃：使用 ECB 模式加解密数据

mcrypt_decrypt
mcrypt_enc_get_algorithms_name
Mcrypt 函数
PHP Manual

mcrypt_ecb

(PHP 4, PHP 5)

mcrypt_ecb — 已废弃：使用 ECB 模式加解密数据

Warning

This function was DEPRECATED in PHP 5.5.0, and REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • mcrypt_decrypt()
  • mcrypt_encrypt()

说明

string mcrypt_ecb ( int $cipher , string $key , string $data , int $mode )
string mcrypt_ecb ( string $cipher , string $key , string $data , int $mode [, string $iv ] )

第一个原型是针对 libmcrypt 2.2.x 的， 第二个原型是针对 libmcrypt 2.4.x 及更高版本的。 mode 可选值为： MCRYPT_ENCRYPT 或 MCRYPT_DECRYPT。

mcrypt_decrypt
mcrypt_enc_get_algorithms_name
Mcrypt 函数


返回打开的算法名称

mcrypt_ecb
mcrypt_enc_get_block_size
Mcrypt 函数
PHP Manual

mcrypt_enc_get_algorithms_name

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_enc_get_algorithms_name — 返回打开的算法名称

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

string mcrypt_enc_get_algorithms_name ( resource $td )

本函数返回算法名称。

参数

td

加密描述符。

返回值

以字符串格式返回打开的加密算法名称。

范例

Example #1 mcrypt_enc_get_algorithms_name() 例程

<?php
$td = mcrypt_module_open(MCRYPT_CAST_256, '', MCRYPT_MODE_CFB, '');
echo mcrypt_enc_get_algorithms_name($td). "\n";

$td = mcrypt_module_open('cast-256', '', MCRYPT_MODE_CFB, '');
echo mcrypt_enc_get_algorithms_name($td). "\n";
?>

以上例程会输出：

CAST-256
CAST-256

mcrypt_ecb
mcrypt_enc_get_block_size
Mcrypt 函数


返回打开的算法的分组大小

mcrypt_enc_get_algorithms_name
mcrypt_enc_get_iv_size
Mcrypt 函数
PHP Manual

mcrypt_enc_get_block_size

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_enc_get_block_size — 返回打开的算法的分组大小

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

int mcrypt_enc_get_block_size ( resource $td )

获取打开的算法的分组大小。

参数

td

加密描述符。

返回值

返回指定算法的分组大小，以字节为单位。

mcrypt_enc_get_algorithms_name
mcrypt_enc_get_iv_size
Mcrypt 函数


返回打开的算法的初始向量大小

mcrypt_enc_get_block_size
mcrypt_enc_get_key_size
Mcrypt 函数
PHP Manual

mcrypt_enc_get_iv_size

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_enc_get_iv_size — 返回打开的算法的初始向量大小

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

int mcrypt_enc_get_iv_size ( resource $td )

本函数返回由加密描述符指定的算法所使用的初始向量大小， 以字节为单位。 在 cbc，cfb 和 ofb 模式以及某些流模式算法中会用到初始向量。

参数

td

加密描述符。

返回值

返回初始向量大小。如果算法忽略初始向量，则返回 0。

mcrypt_enc_get_block_size
mcrypt_enc_get_key_size
Mcrypt 函数


返回打开的模式所能支持的最长密钥

mcrypt_enc_get_iv_size
mcrypt_enc_get_modes_name
Mcrypt 函数
PHP Manual

mcrypt_enc_get_key_size

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_enc_get_key_size — 返回打开的模式所能支持的最长密钥

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

int mcrypt_enc_get_key_size ( resource $td )

返回打开的模式所能支持的最长密钥，以字节为单位。

参数

td

加密描述符。

返回值

返回打开的模式所能支持的最长密钥，以字节为单位。

mcrypt_enc_get_iv_size
mcrypt_enc_get_modes_name
Mcrypt 函数


返回打开的模式的名称

mcrypt_enc_get_key_size
mcrypt_enc_get_supported_key_sizes
Mcrypt 函数
PHP Manual

mcrypt_enc_get_modes_name

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_enc_get_modes_name — 返回打开的模式的名称

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

string mcrypt_enc_get_modes_name ( resource $td )

返回模式名称。

参数

td

加密描述符。

返回值

以字符串格式返回模式名称。

范例

Example #1 mcrypt_enc_get_modes_name() 例程

<?php
$td = mcrypt_module_open (MCRYPT_CAST_256, '', MCRYPT_MODE_CFB, '');
echo mcrypt_enc_get_modes_name($td). "\n";

$td = mcrypt_module_open ('cast-256', '', 'ecb', '');
echo mcrypt_enc_get_modes_name($td). "\n";
?>

以上例程会输出：

CFB
ECB

mcrypt_enc_get_key_size
mcrypt_enc_get_supported_key_sizes
Mcrypt 函数


以数组方式返回打开的算法所支持的密钥长度

mcrypt_enc_get_modes_name
mcrypt_enc_is_block_algorithm_mode
Mcrypt 函数
PHP Manual

mcrypt_enc_get_supported_key_sizes

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_enc_get_supported_key_sizes — 以数组方式返回打开的算法所支持的密钥长度

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

array mcrypt_enc_get_supported_key_sizes ( resource $td )

获取打开的算法所支持的密钥长度。

参数

td

加密描述符。

返回值

返回由加密描述符指定的算法所能够支持的密钥长度。 如果该算法支持从 1 到 mcrypt_enc_get_key_size() 之间任意长度的密钥，则返回空数组。

范例

Example #1 mcrypt_enc_get_supported_key_sizes() 例程

<?php
    $td = mcrypt_module_open('rijndael-256', '', 'ecb', '');
    var_dump(mcrypt_enc_get_supported_key_sizes($td));
?>

以上例程会输出：

array(3) {
  [0]=>
  int(16)
  [1]=>
  int(24)
  [2]=>
  int(32)
}

mcrypt_enc_get_modes_name
mcrypt_enc_is_block_algorithm_mode
Mcrypt 函数


检测打开的模式是否支持分组加密

mcrypt_enc_get_supported_key_sizes
mcrypt_enc_is_block_algorithm
Mcrypt 函数
PHP Manual

mcrypt_enc_is_block_algorithm_mode

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_enc_is_block_algorithm_mode — 检测打开的模式是否支持分组加密

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

bool mcrypt_enc_is_block_algorithm_mode ( resource $td )

打开的模式的算法是否支持分组加密 （例如： 如果是流模式，则返回 FALSE， cbc，cfb，ofb 模式则返回 TRUE）。

参数

td

加密描述符。

返回值

如果算法支持分组模式，返回 TRUE， 反之返回 FALSE。

mcrypt_enc_get_supported_key_sizes
mcrypt_enc_is_block_algorithm
Mcrypt 函数


检测打开模式的算法是否为分组算法

mcrypt_enc_is_block_algorithm_mode
mcrypt_enc_is_block_mode
Mcrypt 函数
PHP Manual

mcrypt_enc_is_block_algorithm

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_enc_is_block_algorithm — 检测打开模式的算法是否为分组算法

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

bool mcrypt_enc_is_block_algorithm ( resource $td )

打开模式的算法是否为分组算法。

参数

td

加密描述符。

返回值

如果是分组算法，返回 TRUE， 如果是流模式，返回 FALSE。

mcrypt_enc_is_block_algorithm_mode
mcrypt_enc_is_block_mode
Mcrypt 函数


检测打开的模式是否以分组方式输出

mcrypt_enc_is_block_algorithm
mcrypt_enc_self_test
Mcrypt 函数
PHP Manual

mcrypt_enc_is_block_mode

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_enc_is_block_mode — 检测打开的模式是否以分组方式输出

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

bool mcrypt_enc_is_block_mode ( resource $td )

打开的模式是否以分组方式输出 （例如，对于 cbc 和 ecb 模式而言返回 TRUE，对于 cfb 和流模式而言，返回 FALSE）。

参数

td

加密描述符。

返回值

如果模式以字节分组（字节块）方式输出，返回 TRUE， 如果是以字节方式输出，返回 FALSE。

mcrypt_enc_is_block_algorithm
mcrypt_enc_self_test
Mcrypt 函数


在打开的模块上进行自检

mcrypt_enc_is_block_mode
mcrypt_encrypt
Mcrypt 函数
PHP Manual

mcrypt_enc_self_test

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_enc_self_test — 在打开的模块上进行自检

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

int mcrypt_enc_self_test ( resource $td )

在 td 指定的算法 上进行自检操作。

参数

td

加密描述符。

返回值

自检成功，返回 FALSE， 如果发生错误，返回 TRUE。

mcrypt_enc_is_block_mode
mcrypt_encrypt
Mcrypt 函数


使用给定参数加密明文

mcrypt_enc_self_test
mcrypt_generic_deinit
Mcrypt 函数
PHP Manual

mcrypt_encrypt

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_encrypt — 使用给定参数加密明文

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

string mcrypt_encrypt ( string $cipher , string $key , string $data , string $mode [, string $iv ] )

加密数据并返回密文。

参数

cipher

MCRYPT_ciphername 常量中的一个，或者是字符串值的算法名称。

key

加密密钥。 如果密钥长度不是该算法所能够支持的有效长度，则函数将会发出警告并返回 FALSE

data

使用给定的 cipher 和 mode 加密的数据。 如果数据长度不是 n*分组大小，则在其后使用 '\0' 补齐。

返回的密文长度可能比 data 更大。

mode

MCRYPT_MODE_modename 常量中的一个，或以下字符串中的一个："ecb"，"cbc"，"cfb"，"ofb"，"nofb" 和 "stream"。

iv

Used for the initialization in CBC, CFB, OFB modes, and in some algorithms in STREAM mode. If the provided IV size is not supported by the chaining mode or no IV was provided, but the chaining mode requires one, the function will emit a warning and return FALSE.

返回值

以字符串方式返回密文， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.6.0 | 不再接受无效长度的 key and iv 参数。 如果参数长度无效，则 mcrypt_decrypt() 函数会产生警告并且返回 FALSE。 之前版本中，对于长度不足的密钥和初始向量会在其后补齐 '\0' 使其达到有效长度。

范例

Example #1 mcrypt_encrypt() 例程

<?php
    # --- 加密 ---

    # 密钥应该是随机的二进制数据，
    # 开始使用 scrypt, bcrypt 或 PBKDF2 将一个字符串转换成一个密钥
    # 密钥是 16 进制字符串格式
    $key = pack('H*', "bcb04b7e103a0cd8b54763051cef08bc55abe029fdebae5e1d417e2ffb2a00a3");

    # 显示 AES-128, 192, 256 对应的密钥长度：
    #16，24，32 字节。
    $key_size =  strlen($key);
    echo "Key size: " . $key_size . "\n";

    $plaintext = "This string was AES-256 / CBC / ZeroBytePadding encrypted.";

    # 为 CBC 模式创建随机的初始向量
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

    # 创建和 AES 兼容的密文（Rijndael 分组大小 = 128）
    # 仅适用于编码后的输入不是以 00h 结尾的
    # （因为默认是使用 0 来补齐数据）
    $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key,
                                 $plaintext, MCRYPT_MODE_CBC, $iv);

    # 将初始向量附加在密文之后，以供解密时使用
    $ciphertext = $iv . $ciphertext;

    # 对密文进行 base64 编码
    $ciphertext_base64 = base64_encode($ciphertext);

    echo  $ciphertext_base64 . "\n";

    # === 警告 ===

    # 密文并未进行完整性和可信度保护，
    # 所以可能遭受 Padding Oracle 攻击。

    # --- 解密 ---

    $ciphertext_dec = base64_decode($ciphertext_base64);

    # 初始向量大小，可以通过 mcrypt_get_iv_size() 来获得
    $iv_dec = substr($ciphertext_dec, 0, $iv_size);

    # 获取除初始向量外的密文
    $ciphertext_dec = substr($ciphertext_dec, $iv_size);

    # 可能需要从明文末尾移除 0
    $plaintext_dec = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key,
                                    $ciphertext_dec, MCRYPT_MODE_CBC, $iv_dec);

    echo  $plaintext_dec . "\n";
?>

以上例程会输出：

Key size: 32
ENJW8mS2KaJoNB5E5CoSAAu0xARgsR1bdzFWpEn+poYw45q+73az5kYi4j+0haevext1dGrcW8Qi59txfCBV8BBj3bzRP3dFCp3CPQSJ8eU=
This string was AES-256 / CBC / ZeroBytePadding encrypted.

参见

  • mcrypt_decrypt() - 使用给定参数解密密文
  • mcrypt_module_open() - 打开算法和模式对应的模块

mcrypt_enc_self_test
mcrypt_generic_deinit
Mcrypt 函数


对加密模块进行清理工作

mcrypt_encrypt
mcrypt_generic_end
Mcrypt 函数
PHP Manual

mcrypt_generic_deinit

(PHP 4 >= 4.0.7, PHP 5, PHP 7)

mcrypt_generic_deinit — 对加密模块进行清理工作

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

bool mcrypt_generic_deinit ( resource $td )

本函数终止由加密描述符（td）指定的加密模块， 它会清理缓冲区，但是并不关闭模块。 要想关闭加密模块， 你需要自行调用 mcrypt_module_close() 函数。 （但是 PHP 会在脚本末尾为你关闭已打开的加密模块）

参数

td

加密描述符。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • mcrypt_module_open() - 打开算法和模式对应的模块
  • mcrypt_generic_init() - 初始化加密所需的缓冲区

mcrypt_encrypt
mcrypt_generic_end
Mcrypt 函数


终止加密

mcrypt_generic_deinit
mcrypt_generic_init
Mcrypt 函数
PHP Manual

mcrypt_generic_end

(PHP 4 >= 4.0.2, PHP 5)

mcrypt_generic_end — 终止加密

Warning

This function was DEPRECATED in PHP 5.3.0, and REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • mcrypt_generic_deinit()

说明

bool mcrypt_generic_end ( resource $td )
Warning

This alias was DEPRECATED in PHP 5.3.0, and REMOVED as of PHP 7.0.0.

Warning

请使用函数 mcrypt_generic_deinit() 来替代本函数， 因为当本函数和 mcrypt_module_close() 一起使用的时候， 可能会发生由重复释放缓冲区导致的崩溃。

本函数终止由加密描述符（td）指定的加密模块。 实际上，它会清理所有的缓冲区，并且关闭已经打开的模块。 如果发生错误，返回 FALSE， 成功返回 TRUE。

mcrypt_generic_deinit
mcrypt_generic_init
Mcrypt 函数


初始化加密所需的缓冲区

mcrypt_generic_end
mcrypt_generic
Mcrypt 函数
PHP Manual

mcrypt_generic_init

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_generic_init — 初始化加密所需的缓冲区

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

int mcrypt_generic_init ( resource $td , string $key , string $iv )

在每次调用 mcrypt_generic() 或 mdecrypt_generic() 函数之前必须调用本函数。

参数

td

加密描述符。

key

调用 mcrypt_enc_get_key_size() 函数获得的密钥最大长度。 小于最大长度的数值都被视为非法参数。

iv

通常情况下，向量大小等于算法的分组大小， 但是你应该通过 mcrypt_enc_get_iv_size() 函数 来获得这个值。在 ECB 模式下，初始向量会被忽略， 在 CFB，CBC，STREAM，nOFB 和 OFB 模式下，必须提供初始向量。 初始向量要求是随机的，并且是唯一的（不需要是安全的）。 加密和解密必须使用相同的初始向量。 如果你不想使用初始向量，请将其设置为全 0 值，但是不建议你这么做。

返回值

如果发生错误，将会返回负数： -3 表示密钥长度有误，-4 表示内存分配失败， 其他值表示未知错误， 同时会显示对应的警告信息。 如果传入参数不正确，返回 FALSE。

参见

  • mcrypt_module_open() - 打开算法和模式对应的模块

mcrypt_generic_end
mcrypt_generic
Mcrypt 函数


加密数据

mcrypt_generic_init
mcrypt_get_block_size
Mcrypt 函数
PHP Manual

mcrypt_generic

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_generic — 加密数据

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

string mcrypt_generic ( resource $td , string $data )

本函数用来加密数据。 传入数据长度必须是 n * 分组大小，否则需要后补 "\0"。 本函数返回加密后的数据。 注意，根据数据补齐不同， 返回的数据可能比输入的数据长度有所增加。

如果你需要把加密后的数据保存到数据库， 请确保保存 mcrypt_generic 返回的完整的字符串， 否则将无法正确解密。 如果原始数据有 10 个字符，分组大小为 8 （使用 mcrypt_enc_get_block_size() 获取分组大小）， 则数据库中至少需要 16 个字符来保存数据。 请注意 mdecrypt_generic() 函数返回的数据也会是 16 个字符。 使用 rtrim($str, "\0") 移除字符串末尾的 0 。

如果你在例如 MySQL 这样的数据库中存储数据， 请注意 varchar 类型的字段会在插入数据时自动移除字符串末尾的"空格"。 由于加密后的数据可能是以空格（ASCII 32）结尾， 这种特性会导致数据损坏。 请使用 tinyblob/tinytext（或 larger）字段来存储加密数据。

参数

td

加密描述符。

在调用本函数之前， 请使用 mcrypt_generic_init() 函数初始化加密句柄。 在加密完成之后， 需要调用 mcrypt_generic_deinit() 函数进行必要的清理工作。 请参见 mcrypt_module_open() 。

data

要加密的数据。

返回值

返回加密后的数据。

参见

  • mdecrypt_generic() - 解密数据
  • mcrypt_generic_init() - 初始化加密所需的缓冲区
  • mcrypt_generic_deinit() - 对加密模块进行清理工作

mcrypt_generic_init
mcrypt_get_block_size
Mcrypt 函数


获得加密算法的分组大小

mcrypt_generic
mcrypt_get_cipher_name
Mcrypt 函数
PHP Manual

mcrypt_get_block_size

(PHP 4, PHP 5, PHP 7)

mcrypt_get_block_size — 获得加密算法的分组大小

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

int mcrypt_get_block_size ( int $cipher )
int mcrypt_get_block_size ( string $cipher , string $mode )

第一个原型针对 libmcrypt 2.2.x， 第二个原型针对 libmcrypt 2.4.x 或 2.5.x。

mcrypt_get_block_size() 用来获取 cipher （其中包括了加密模式） 加密算法分组大小。

mcrypt_enc_get_block_size() 函数更加有用， 因为它可以使用 mcrypt_module_open() 函数所返回的资源。

参数

cipher

MCRYPT_ciphername 常量中的一个，或者是字符串值的算法名称。

mode

MCRYPT_MODE_modename 常量中的一个，或以下字符串中的一个："ecb"，"cbc"，"cfb"，"ofb"，"nofb" 和 "stream"。

返回值

整数表达的分组大小。

范例

Example #1 mcrypt_get_block_size() 例程

在 libmcrypt 2.4.x 和 2.5.x 下 如何使用本函数。

<?php

echo mcrypt_get_block_size('tripledes', 'ecb'); // 8

?>

参见

  • mcrypt_get_key_size() - 获取指定加密算法的密钥大小
  • mcrypt_enc_get_block_size() - 返回打开的算法的分组大小
  • mcrypt_encrypt() - 使用给定参数加密明文

mcrypt_generic
mcrypt_get_cipher_name
Mcrypt 函数


获取加密算法名称

mcrypt_get_block_size
mcrypt_get_iv_size
Mcrypt 函数
PHP Manual

mcrypt_get_cipher_name

(PHP 4, PHP 5, PHP 7)

mcrypt_get_cipher_name — 获取加密算法名称

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

string mcrypt_get_cipher_name ( int $cipher )
string mcrypt_get_cipher_name ( string $cipher )

mcrypt_get_cipher_name() 用来获取加密算法名称。

libmcrypt 2.2.x 中，mcrypt_get_cipher_name() 接受整数表达的加密算法， libmcrypt 2.4.x 及更高版本中，它接受字符串表达的加密算法名称， 返回的都是字符串表达的名称，如果算法不存在则返回 FALSE。

参数

cipher

MCRYPT_ciphername 常量中的一个，或者是字符串值的算法名称。

返回值

本函数返回加密算法名称， 如果算法不存在返回 FALSE。

范例

Example #1 mcrypt_get_cipher_name() 例程

<?php
   $cipher = MCRYPT_TripleDES;

   echo mcrypt_get_cipher_name($cipher);
?>

以上例程会输出：

3DES

mcrypt_get_block_size
mcrypt_get_iv_size
Mcrypt 函数


返回指定算法/模式组合的初始向量大小

mcrypt_get_cipher_name
mcrypt_get_key_size
Mcrypt 函数
PHP Manual

mcrypt_get_iv_size

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_get_iv_size — 返回指定算法/模式组合的初始向量大小

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

int mcrypt_get_iv_size ( string $cipher , string $mode )

获取由 cipher/mode 参数指定的初始向量大小。

mcrypt_enc_get_iv_size() 更加有用， 因为它使用由 mcrypt_module_open() 返回的资源作为参数。

参数

cipher

MCRYPT_ciphername 常量中的一个，或者是字符串值的算法名称。

mode

MCRYPT_MODE_modename 常量中的一个，或以下字符串中的一个："ecb"，"cbc"，"cfb"，"ofb"，"nofb" 和 "stream"。

由于 ECB 模式不使用初始向量，所以会忽略它。 在加密和解密的过程中， 你需要使用相同的初始向量（想象成：开始点）。

返回值

返回初始向量的大小，以字节为单位。 如果发生错误，返回 FALSE。 如果指定的算法/模式不需要初始向量，返回 0。

范例

Example #1 mcrypt_get_iv_size() 例程

<?php
    echo mcrypt_get_iv_size(MCRYPT_CAST_256, MCRYPT_MODE_CFB) . "\n";

    echo mcrypt_get_iv_size('des', 'ecb') . "\n";
?>

参见

  • mcrypt_get_block_size() - 获得加密算法的分组大小
  • mcrypt_enc_get_iv_size() - 返回打开的算法的初始向量大小
  • mcrypt_create_iv() - 从随机源创建初始向量

mcrypt_get_cipher_name
mcrypt_get_key_size
Mcrypt 函数


获取指定加密算法的密钥大小

mcrypt_get_iv_size
mcrypt_list_algorithms
Mcrypt 函数
PHP Manual

mcrypt_get_key_size

(PHP 4, PHP 5, PHP 7)

mcrypt_get_key_size — 获取指定加密算法的密钥大小

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

int mcrypt_get_key_size ( int $cipher )
int mcrypt_get_key_size ( string $cipher , string $mode )

第一个原型是针对 libmcrypt 2.2.x 的， 第二个原型是针对 libmcrypt 2.4.x 或 2.5.x 的。

mcrypt_get_key_size() 用来获取 由 cipher 所指定的算法和模式所需的密钥长度。

mcrypt_enc_get_key_size() 更加有用， 因为它使用由 mcrypt_module_open() 返回的资源。

参数

cipher

MCRYPT_ciphername 常量中的一个，或者是字符串值的算法名称。

mode

MCRYPT_MODE_modename 常量中的一个，或以下字符串中的一个："ecb"，"cbc"，"cfb"，"ofb"，"nofb" 和 "stream"。

返回值

返回算法所支持的最大密钥大小，以字节为单位。 或者在失败时返回 FALSE。

范例

Example #1 mcrypt_get_key_size() 例程

<?php
    echo mcrypt_get_key_size('tripledes', 'ecb');
?>

在 libmcrypt 2.4.x 或 2.5.x 版本中， 如果使用本函数。

以上例程会输出：

24

参见

  • mcrypt_get_block_size() - 获得加密算法的分组大小
  • mcrypt_enc_get_key_size() - 返回打开的模式所能支持的最长密钥
  • mcrypt_encrypt() - 使用给定参数加密明文

mcrypt_get_iv_size
mcrypt_list_algorithms
Mcrypt 函数


获取支持的加密算法

mcrypt_get_key_size
mcrypt_list_modes
Mcrypt 函数
PHP Manual

mcrypt_list_algorithms

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_list_algorithms — 获取支持的加密算法

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

array mcrypt_list_algorithms ([ string $lib_dir = ini_get("mcrypt.algorithms_dir") ] )

获取 lib_dir 中 包含的受支持的算法。

参数

lib_dir

指定算法所在的位置。 如果未指定，将使用 php.ini 中的 mcrypt.algorithms_dir 指示所指定的位置。

返回值

以数组方式返回所有受支持的算法。

范例

Example #1 mcrypt_list_algorithms() 例程

<?php
    $algorithms = mcrypt_list_algorithms("/usr/local/lib/libmcrypt");

    foreach ($algorithms as $cipher) {
        echo "$cipher<br />\n";
    }
?>

本例程返回 "/usr/local/lib/libmcrypt" 目录下所有受支持的算法。

mcrypt_get_key_size
mcrypt_list_modes
Mcrypt 函数


获取所支持的模式

mcrypt_list_algorithms
mcrypt_module_close
Mcrypt 函数
PHP Manual

mcrypt_list_modes

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_list_modes — 获取所支持的模式

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

array mcrypt_list_modes ([ string $lib_dir = ini_get("mcrypt.modes_dir") ] )

获取 lib_dir 中 包含的受支持的模式。

参数

lib_dir

指定模式所在的位置。 如果未指定，将使用 php.ini 中的 mcrypt.modes_dir 指示所指定的位置。

返回值

以数组形式返回受支持的模式。

范例

Example #1 mcrypt_list_modes() 例程

<?php
    $modes = mcrypt_list_modes();

    foreach ($modes as $mode) {
        echo "$mode <br />\n";
    }
?>

本例程列出在默认目录中 所有受支持的模式。 如果在 php.ini 中未指定 mcrypt.modes_dir， 则使用默认的 mcrypt 库 安装目录（/usr/local/lib/libmcrypt）。

mcrypt_list_algorithms
mcrypt_module_close
Mcrypt 函数


关闭加密模块

mcrypt_list_modes
mcrypt_module_get_algo_block_size
Mcrypt 函数
PHP Manual

mcrypt_module_close

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_module_close — 关闭加密模块

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

bool mcrypt_module_close ( resource $td )

关闭加密模块。

参数

td

加密描述符。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • mcrypt_module_open() - 打开算法和模式对应的模块

mcrypt_list_modes
mcrypt_module_get_algo_block_size
Mcrypt 函数


返回指定算法的分组大小

mcrypt_module_close
mcrypt_module_get_algo_key_size
Mcrypt 函数
PHP Manual

mcrypt_module_get_algo_block_size

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_module_get_algo_block_size — 返回指定算法的分组大小

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

int mcrypt_module_get_algo_block_size ( string $algorithm [, string $lib_dir ] )

返回指定算法的分组大小。

参数

algorithm

算法名称。

lib_dir

可选参数 lib_dir ， 表示在操作系统上包含模式模块的路径。

返回值

返回指定算法的分组大小，以字节为单位。

mcrypt_module_close
mcrypt_module_get_algo_key_size
Mcrypt 函数


获取打开模式所支持的最大密钥大小

mcrypt_module_get_algo_block_size
mcrypt_module_get_supported_key_sizes
Mcrypt 函数
PHP Manual

mcrypt_module_get_algo_key_size

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_module_get_algo_key_size — 获取打开模式所支持的最大密钥大小

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

int mcrypt_module_get_algo_key_size ( string $algorithm [, string $lib_dir ] )

获取打开模式所支持的最大密钥大小。

参数

algorithm

算法名称。

lib_dir

可选参数， 表示在操作系统上包含模式模块的路径。

返回值

本函数返回算法所支持的最大密钥大小， 以字节为单位。

mcrypt_module_get_algo_block_size
mcrypt_module_get_supported_key_sizes
Mcrypt 函数


以数组形式返回打开的算法所支持的密钥大小

mcrypt_module_get_algo_key_size
mcrypt_module_is_block_algorithm_mode
Mcrypt 函数
PHP Manual

mcrypt_module_get_supported_key_sizes

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_module_get_supported_key_sizes — 以数组形式返回打开的算法所支持的密钥大小

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

array mcrypt_module_get_supported_key_sizes ( string $algorithm [, string $lib_dir ] )

以数组形式返回指定算法所支持的密钥大小。 如果从 1 到 mcrypt_module_get_algo_key_size() 的密钥大小都支持，则返回空数组。

参数

algorithm

算法名称。

lib_dir

可选参数， 表示在操作系统上包含算法模块的路径。

返回值

以数组形式返回指定算法所支持的密钥大小。 如果从 1 到 mcrypt_module_get_algo_key_size() 的密钥大小都支持，则返回空数组。

参见

  • mcrypt_enc_get_supported_key_sizes() - 以数组方式返回打开的算法所支持的密钥长度

mcrypt_module_get_algo_key_size
mcrypt_module_is_block_algorithm_mode
Mcrypt 函数


返回指定模块是否是分组加密模式

mcrypt_module_get_supported_key_sizes
mcrypt_module_is_block_algorithm
Mcrypt 函数
PHP Manual

mcrypt_module_is_block_algorithm_mode

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_module_is_block_algorithm_mode — 返回指定模块是否是分组加密模式

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

bool mcrypt_module_is_block_algorithm_mode ( string $mode [, string $lib_dir ] )

对于分组加密模式，返回 TRUE， 反之返回 FALSE。 （例如，对于 STREAM 模式返回 FALSE，对于 cbc，cfb，ofb 返回 TRUE）

参数

mode

模式。

lib_dir

可选参数， 表示在操作系统上包含算法模块的路径。

返回值

对于分组加密模式，返回 TRUE， 反之返回 FALSE。 （例如，对于 STREAM 模式返回 FALSE，对于 cbc，cfb，ofb 返回 TRUE）

mcrypt_module_get_supported_key_sizes
mcrypt_module_is_block_algorithm
Mcrypt 函数


检测指定算法是否为分组加密算法

mcrypt_module_is_block_algorithm_mode
mcrypt_module_is_block_mode
Mcrypt 函数
PHP Manual

mcrypt_module_is_block_algorithm

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_module_is_block_algorithm — 检测指定算法是否为分组加密算法

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

bool mcrypt_module_is_block_algorithm ( string $algorithm [, string $lib_dir ] )

如果指定算法是分组加密算法，返回 TRUE， 反之返回 FALSE。

参数

algorithm

要检测的算法。

lib_dir

可选参数 lib_dir， 表示在操作系统上包含算法模块的路径。

返回值

如果指定算法是分组加密算法，返回 TRUE， 反之返回 FALSE。

mcrypt_module_is_block_algorithm_mode
mcrypt_module_is_block_mode
Mcrypt 函数


检测指定模式是否以分组方式输出

mcrypt_module_is_block_algorithm
mcrypt_module_open
Mcrypt 函数
PHP Manual

mcrypt_module_is_block_mode

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_module_is_block_mode — 检测指定模式是否以分组方式输出

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

bool mcrypt_module_is_block_mode ( string $mode [, string $lib_dir ] )

如果模式是以字节块（分组）方式输出，则返回 TRUE， 如果只是以字节方式输出，则返回 FALSE。 （例如，对于 cbc 和 ecb 模式，返回 TRUE，对于 cfb 和 stream 模式，返回 FALSE）

参数

mode

MCRYPT_MODE_modename 常量中的一个，或以下字符串中的一个："ecb"，"cbc"，"cfb"，"ofb"，"nofb" 和 "stream"。

lib_dir

可选参数 lib_dir ， 表示在操作系统上包含模式模块的路径。

返回值

如果模式是以字节块（分组）方式输出，则返回 TRUE， 如果只是以字节方式输出，则返回 FALSE。 （例如，对于 cbc 和 ecb 模式，返回 TRUE，对于 cfb 和 stream 模式，返回 FALSE）

mcrypt_module_is_block_algorithm
mcrypt_module_open
Mcrypt 函数


打开算法和模式对应的模块

mcrypt_module_is_block_mode
mcrypt_module_self_test
Mcrypt 函数
PHP Manual

mcrypt_module_open

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_module_open — 打开算法和模式对应的模块

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

resource mcrypt_module_open ( string $algorithm , string $algorithm_directory , string $mode , string $mode_directory )

本函数打开指定算法和模式对应的模块。 算法名称可以是字符串，例如 "twofish"， 也可以是 MCRYPT_ciphername 常量。 调用 mcrypt_module_close() 函数可以关闭模块。

参数

algorithm

MCRYPT_ciphername 常量中的一个，或者是字符串值的算法名称。

algorithm_directory

algorithm_directory 参数指示加密模块的位置。 如果你提供此参数，则使用你指定的值。 如果将此参数设置为空字符串（""），将使用 php.ini 中的 mcrypt.algorithms_dir 。 如果不指定此参数，则使用 libmcrypt 的编译路径 （通常是 /usr/local/lib/libmcrypt）。

mode

MCRYPT_MODE_modename 常量中的一个，或以下字符串中的一个："ecb"，"cbc"，"cfb"，"ofb"，"nofb" 和 "stream"。

mode_directory

algorithm_directory 参数指示加密模式的位置。 如果你提供此参数，则使用你指定的值。 如果将此参数设置为空字符串（""），将使用 php.ini 中的 mcrypt.modes_dir 。 如果不指定此参数，则使用 libmcrypt 的编译路径 （通常是 /usr/local/lib/libmcrypt）。

返回值

成功则返回加密描述符，如果发生错误则返回 FALSE。

范例

Example #1 mcrypt_module_open() 例程

<?php
    $td = mcrypt_module_open(MCRYPT_DES, '',
        MCRYPT_MODE_ECB, '/usr/lib/mcrypt-modes');

    $td = mcrypt_module_open('rijndael-256', '', 'ofb', '');
?>

例程中的第一行从默认目录打开 DES 加密算法， 从 /usr/lib/mcrypt-modes 目录打开 ECB 模式。 第二个示例中，使用字符串形式表示算法和模式， 这种形式仅适用于 libmcrypt 2.4.x 或 2.5.x 版本。

Example #2 在加密中使用 mcrypt_module_open()

<?php
    /* 打开加密算法和模式 */
    $td = mcrypt_module_open('rijndael-256', '', 'ofb', '');

    /* 创建初始向量，并且检测密钥长度。
     * Windows 平台请使用 MCRYPT_RAND。 */
    $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
    $ks = mcrypt_enc_get_key_size($td);

    /* 创建密钥 */
    $key = substr(md5('very secret key'), 0, $ks);

    /* 初始化加密 */
    mcrypt_generic_init($td, $key, $iv);

    /* 加密数据 */
    $encrypted = mcrypt_generic($td, 'This is very important data');

    /* 结束加密，执行清理工作 */
    mcrypt_generic_deinit($td);

    /* 初始化解密模块 */
    mcrypt_generic_init($td, $key, $iv);

    /* 解密数据 */
    $decrypted = mdecrypt_generic($td, $encrypted);

    /* 结束解密，执行清理工作，并且关闭模块 */
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);

    /* 显示文本 */
    echo trim($decrypted) . "\n";
?>

参见

  • mcrypt_module_close() - 关闭加密模块
  • mcrypt_generic() - 加密数据
  • mdecrypt_generic() - 解密数据
  • mcrypt_generic_init() - 初始化加密所需的缓冲区
  • mcrypt_generic_deinit() - 对加密模块进行清理工作

mcrypt_module_is_block_mode
mcrypt_module_self_test
Mcrypt 函数


在指定模块上执行自检

mcrypt_module_open
mcrypt_ofb
Mcrypt 函数
PHP Manual

mcrypt_module_self_test

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mcrypt_module_self_test — 在指定模块上执行自检

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

bool mcrypt_module_self_test ( string $algorithm [, string $lib_dir ] )

在指定模块上执行自检。

参数

algorithm

MCRYPT_ciphername 常量中的一个，或者是字符串值的算法名称。

lib_dir

可选参数 lib_dir， 表示包含加密算法模块的路径。

返回值

自检成功返回 TRUE， 自检失败返回 FALSE。

范例

Example #1 mcrypt_module_self_test() 例程

<?php
var_dump(mcrypt_module_self_test(MCRYPT_RIJNDAEL_128)) . "\n";
var_dump(mcrypt_module_self_test(MCRYPT_BOGUS_CYPHER));
?>

以上例程会输出：

bool(true)
bool(false)

mcrypt_module_open
mcrypt_ofb
Mcrypt 函数


使用 OFB 模式加密/解密数据

mcrypt_module_self_test
mdecrypt_generic
Mcrypt 函数
PHP Manual

mcrypt_ofb

(PHP 4, PHP 5)

mcrypt_ofb — 使用 OFB 模式加密/解密数据

Warning

This function was DEPRECATED in PHP 5.5.0, and REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • mcrypt_decrypt()
  • mcrypt_encrypt()

说明

string mcrypt_ofb ( int $cipher , string $key , string $data , int $mode , string $iv )
string mcrypt_ofb ( string $cipher , string $key , string $data , int $mode [, string $iv ] )

第一个原型是针对 libmcrypt 2.2.x 的， 第二个原型是针对 libmcrypt 2.4.x 及更高版本的。 mode 可选值为： MCRYPT_ENCRYPT 或 MCRYPT_DECRYPT。

mcrypt_module_self_test
mdecrypt_generic
Mcrypt 函数


解密数据

mcrypt_ofb
Mhash
Mcrypt 函数
PHP Manual

mdecrypt_generic

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

mdecrypt_generic — 解密数据

Warning

This function has been DEPRECATED as of PHP 7.1.0. Relying on this function is highly discouraged.

说明

string mdecrypt_generic ( resource $td , string $data )

解密数据。 请注意，由于存在数据补齐的情况， 返回字符串的长度可能和明文的长度不相等。

参数

td

由 mcrypt_module_open() 函数创建的加密描述符。

data

密文。

范例

Example #1 mdecrypt_generic() 例程

<?php
    /* 数据 */
    $key = 'this is a very long key, even too long for the cipher';
    $plain_text = 'very important data';

    /* 打开加密模块，并且创建初始向量 */
    $td = mcrypt_module_open('des', '', 'ecb', '');
    $key = substr($key, 0, mcrypt_enc_get_key_size($td));
    $iv_size = mcrypt_enc_get_iv_size($td);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

    /* 初始化加密句柄 */
    if (mcrypt_generic_init($td, $key, $iv) != -1) {

        /* 加密数据 */
        $c_t = mcrypt_generic($td, $plain_text);
        mcrypt_generic_deinit($td);

        /* 为解密重新初始化缓冲区 */
        mcrypt_generic_init($td, $key, $iv);
        $p_t = mdecrypt_generic($td, $c_t);

        /* 执行清理工作 */
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td);
    }

    if (strncmp($p_t, $plain_text, strlen($plain_text)) == 0) {
        echo "ok\n";
    } else {
        echo "error\n";
    }
?>

上例中演示了如何检测 解密后的数据是否和原始明文长度一致。 需要着重提醒的是，在对数据进行机密之前， 必须使用 mcrypt_generic_init() 函数来重新初始化缓冲区。

调用本函数之前， 必须使用密钥和初始向量来调用 mcrypt_generic_init() 函数 对解密句柄进行初始化。 加解密工作完成之后，需要调用 mcrypt_generic_deinit() 来释放加解密缓冲区。 例程请参见 mcrypt_module_open()。

参见

  • mcrypt_generic() - 加密数据
  • mcrypt_generic_init() - 初始化加密所需的缓冲区
  • mcrypt_generic_deinit() - 对加密模块进行清理工作

mcrypt_ofb
Mhash
Mcrypt 函数


Mhash

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • Mhash 函数
    • mhash_count — Gets the highest available hash ID
    • mhash_get_block_size — Gets the block size of the specified hash
    • mhash_get_hash_name — Gets the name of the specified hash
    • mhash_keygen_s2k — Generates a key
    • mhash — Computes hash
mdecrypt_generic
简介
加密扩展


简介

These functions are intended to work with » mhash. Mhash can be used to create checksums, message digests, message authentication codes, and more.

This is an interface to the mhash library. Mhash supports a wide variety of hash algorithms such as MD5, SHA1, GOST, and many others. For a complete list of supported hashes, refer to the constants page. The general rule is that you can access the hash algorithm from PHP with MHASH_hashname. For example, to access TIGER you use the PHP constant MHASH_TIGER.

Note:

This extension is obsoleted by Hash.

Mhash
安装／配置
Mhash


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Mhash


需求

To use it, download the mhash distribution from » its web site and follow the included installation instructions.

安装／配置
安装
安装／配置


安装

You need to compile PHP with the --with-mhash[=DIR] parameter to enable this extension. DIR is the mhash installation directory.

As of PHP 5.3.0, the mhash extension is emulated thru the Hash extension. This makes the mhash installation directory have no effect, and requires the hash extension enabled to make the mhash support available.

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

Here is a list of hashes which are currently supported by mhash. If a hash is not listed here, but it is listed in the mhash documentation as supported, you can safely assume that this documentation is outdated.

  • MHASH_ADLER32
  • MHASH_CRC32
  • MHASH_CRC32B
  • MHASH_GOST
  • MHASH_HAVAL128
  • MHASH_HAVAL160
  • MHASH_HAVAL192
  • MHASH_HAVAL224
  • MHASH_HAVAL256
  • MHASH_MD2
  • MHASH_MD4
  • MHASH_MD5
  • MHASH_RIPEMD128
  • MHASH_RIPEMD256
  • MHASH_RIPEMD320
  • MHASH_SHA1
  • MHASH_SHA192
  • MHASH_SHA224
  • MHASH_SHA256
  • MHASH_SHA384
  • MHASH_SHA512
  • MHASH_SNEFRU128
  • MHASH_SNEFRU256
  • MHASH_TIGER
  • MHASH_TIGER128
  • MHASH_TIGER160
  • MHASH_WHIRLPOOL

资源类型
范例
Mhash


范例

Example #1 Computes the MD5 digest and hmac and print it out as hex

<?php
$input = "what do ya want for nothing?";
$hash = mhash(MHASH_MD5, $input);
echo "The hash is " . bin2hex($hash) . "<br />\n";
$hash = mhash(MHASH_MD5, $input, "Jefe");
echo "The hmac is " . bin2hex($hash) . "<br />\n";
?>

以上例程会输出：

The hash is d03cb659cbf9192dcd066272249f8412
The hmac is 750c783e6ab0b503eaa86e310a5db738

预定义常量
Mhash 函数
Mhash


Mhash 函数

Table of Contents

  • mhash_count — Gets the highest available hash ID
  • mhash_get_block_size — Gets the block size of the specified hash
  • mhash_get_hash_name — Gets the name of the specified hash
  • mhash_keygen_s2k — Generates a key
  • mhash — Computes hash
范例
mhash_count
Mhash


Gets the highest available hash ID

Mhash 函数
mhash_get_block_size
Mhash 函数
PHP Manual

mhash_count

(PHP 4, PHP 5, PHP 7)

mhash_count — Gets the highest available hash ID

说明

int mhash_count ( void )

Gets the highest available hash ID.

返回值

Returns the highest available hash ID. Hashes are numbered from 0 to this hash ID.

范例

Example #1 Traversing all hashes

<?php

$nr = mhash_count();

for ($i = 0; $i <= $nr; $i++) {
    echo sprintf("The blocksize of %s is %d\n",
        mhash_get_hash_name($i),
        mhash_get_block_size($i));
}
?>

Mhash 函数
mhash_get_block_size
Mhash 函数


Gets the block size of the specified hash

mhash_count
mhash_get_hash_name
Mhash 函数
PHP Manual

mhash_get_block_size

(PHP 4, PHP 5, PHP 7)

mhash_get_block_size — Gets the block size of the specified hash

说明

int mhash_get_block_size ( int $hash )

Gets the size of a block of the specified hash.

参数

hash

The hash ID. One of the MHASH_hashname constants.

返回值

Returns the size in bytes or FALSE, if the hash does not exist.

范例

Example #1 mhash_get_block_size() Example

<?php

echo mhash_get_block_size(MHASH_MD5); // 16

?>

mhash_count
mhash_get_hash_name
Mhash 函数


Gets the name of the specified hash

mhash_get_block_size
mhash_keygen_s2k
Mhash 函数
PHP Manual

mhash_get_hash_name

(PHP 4, PHP 5, PHP 7)

mhash_get_hash_name — Gets the name of the specified hash

说明

string mhash_get_hash_name ( int $hash )

Gets the name of the specified hash.

参数

hash

The hash ID. One of the MHASH_hashname constants.

返回值

Returns the name of the hash or FALSE, if the hash does not exist.

范例

Example #1 mhash_get_hash_name() Example

<?php

echo mhash_get_hash_name(MHASH_MD5); // MD5

?>

mhash_get_block_size
mhash_keygen_s2k
Mhash 函数


Generates a key

mhash_get_hash_name
mhash
Mhash 函数
PHP Manual

mhash_keygen_s2k

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

mhash_keygen_s2k — Generates a key

说明

string mhash_keygen_s2k ( int $hash , string $password , string $salt , int $bytes )

Generates a key according to the given hash, using an user provided password.

This is the Salted S2K algorithm as specified in the OpenPGP document (» RFC 2440).

Keep in mind that user supplied passwords are not really suitable to be used as keys in cryptographic algorithms, since users normally choose keys they can write on keyboard. These passwords use only 6 to 7 bits per character (or less). It is highly recommended to use some kind of transformation (like this function) to the user supplied key.

参数

hash

The hash ID used to create the key. One of the MHASH_hashname constants.

password

An user supplied password.

salt

Must be different and random enough for every key you generate in order to create different keys. Because salt must be known when you check the keys, it is a good idea to append the key to it. Salt has a fixed length of 8 bytes and will be padded with zeros if you supply less bytes.

bytes

The key length, in bytes.

返回值

Returns the generated key as a string, or FALSE on error.

mhash_get_hash_name
mhash
Mhash 函数


Computes hash

mhash_keygen_s2k
OpenSSL
Mhash 函数
PHP Manual

mhash

(PHP 4, PHP 5, PHP 7)

mhash — Computes hash

说明

string mhash ( int $hash , string $data [, string $key ] )

mhash() applies a hash function specified by hash to the data.

参数

hash

The hash ID. One of the MHASH_hashname constants.

data

The user input, as a string.

key

If specified, the function will return the resulting HMAC instead. HMAC is keyed hashing for message authentication, or simply a message digest that depends on the specified key. Not all algorithms supported in mhash can be used in HMAC mode.

返回值

Returns the resulting hash (also called digest) or HMAC as a string, or FALSE on error.

mhash_keygen_s2k
OpenSSL
Mhash 函数


OpenSSL

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
    • Purpose checking flags
    • Padding flags for asymmetric encryption
    • Key types
    • PKCS7 Flags/Constants
    • Signature Algorithms
    • Ciphers
    • Version constants
    • Server Name Indication constants
  • Key/Certificate parameters
  • Certificate Verification
  • OpenSSL 函数
    • openssl_cipher_iv_length — Gets the cipher iv length
    • openssl_csr_export_to_file — Exports a CSR to a file
    • openssl_csr_export — Exports a CSR as a string
    • openssl_csr_get_public_key — Returns the public key of a CERT
    • openssl_csr_get_subject — Returns the subject of a CERT
    • openssl_csr_new — Generates a CSR
    • openssl_csr_sign — Sign a CSR with another certificate (or itself) and generate a certificate
    • openssl_decrypt — Decrypts data
    • openssl_dh_compute_key — Computes shared secret for public value of remote DH key and local DH key
    • openssl_digest — Computes a digest
    • openssl_encrypt — Encrypts data
    • openssl_error_string — Return openSSL error message
    • openssl_free_key — Free key resource
    • openssl_get_cert_locations — Retrieve the available certificate locations
    • openssl_get_cipher_methods — Gets available cipher methods
    • openssl_get_md_methods — Gets available digest methods
    • openssl_get_privatekey — 别名 openssl_pkey_get_private
    • openssl_get_publickey — 别名 openssl_pkey_get_public
    • openssl_open — Open sealed data
    • openssl_pbkdf2 — Generates a PKCS5 v2 PBKDF2 string, defaults to SHA-1
    • openssl_pkcs12_export_to_file — Exports a PKCS#12 Compatible Certificate Store File
    • openssl_pkcs12_export — Exports a PKCS#12 Compatible Certificate Store File to variable.
    • openssl_pkcs12_read — Parse a PKCS#12 Certificate Store into an array
    • openssl_pkcs7_decrypt — Decrypts an S/MIME encrypted message
    • openssl_pkcs7_encrypt — Encrypt an S/MIME message
    • openssl_pkcs7_sign — Sign an S/MIME message
    • openssl_pkcs7_verify — Verifies the signature of an S/MIME signed message
    • openssl_pkey_export_to_file — Gets an exportable representation of a key into a file
    • openssl_pkey_export — Gets an exportable representation of a key into a string
    • openssl_pkey_free — Frees a private key
    • openssl_pkey_get_details — Returns an array with the key details
    • openssl_pkey_get_private — Get a private key
    • openssl_pkey_get_public — Extract public key from certificate and prepare it for use
    • openssl_pkey_new — Generates a new private key
    • openssl_private_decrypt — Decrypts data with private key
    • openssl_private_encrypt — Encrypts data with private key
    • openssl_public_decrypt — Decrypts data with public key
    • openssl_public_encrypt — Encrypts data with public key
    • openssl_random_pseudo_bytes — Generate a pseudo-random string of bytes
    • openssl_seal — Seal (encrypt) data
    • openssl_sign — Generate signature
    • openssl_spki_export_challenge — Exports the challenge assoicated with a signed public key and challenge
    • openssl_spki_export — Exports a valid PEM formatted public key signed public key and challenge
    • openssl_spki_new — Generate a new signed public key and challenge
    • openssl_spki_verify — Verifies a signed public key and challenge
    • openssl_verify — Verify signature
    • openssl_x509_check_private_key — Checks if a private key corresponds to a certificate
    • openssl_x509_checkpurpose — Verifies if a certificate can be used for a particular purpose
    • openssl_x509_export_to_file — Exports a certificate to file
    • openssl_x509_export — Exports a certificate as a string
    • openssl_x509_fingerprint — Calculates the fingerprint, or digest, of a given X.509 certificate
    • openssl_x509_free — Free certificate resource
    • openssl_x509_parse — Parse an X509 certificate and return the information as an array
    • openssl_x509_read — Parse an X.509 certificate and return a resource identifier for it
mhash
简介
加密扩展


简介

This module uses the functions of » OpenSSL for generation and verification of signatures and for sealing (encrypting) and opening (decrypting) data. OpenSSL offers many features that this module currently doesn't support. Some of these may be added in the future.

OpenSSL
安装／配置
OpenSSL


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
OpenSSL


需求

In order to use the OpenSSL functions you need to install the » OpenSSL package. PHP between versions 4.0.5 and 4.3.1 will work with OpenSSL >= 0.9.5. Other versions (PHP <=4.0.4 and >= 4.3.2) require OpenSSL >= 0.9.6.

Warning

You are strongly encouraged to use the most recent OpenSSL version, otherwise your web server could be vulnerable to attack.

安装／配置
安装
安装／配置


安装

To use PHP's OpenSSL support you must also compile PHP --with-openssl[=DIR] .

The OpenSSL library also has additional requirements for normal operation at run-time. Most notably, OpenSSL requires access to a random or pseudo-random number generator; on most Unix and Unix-like platforms (including Linux), this means that it must have access to a /dev/urandom or /dev/random device.

Note: Note to Win32 Users

为了使此扩展生效， DLL 文件必须能在 Windows 系统的 PATH 指示的路径下找到。如何操作的信息，请参见题为"如何在 Windows 中将 PHP 目录加到 PATH 中"的FAQ。虽然将 DLL 文件从 PHP 文件夹复制到 Windows 系统目录也行，但不建议这样做。 此扩展需要下列文件在 PATH 路径中： libeay32.dll

Additionally, if you are planning to use the key generation and certificate signing functions, you will need to install a valid openssl.cnf file on your system. We include a sample configuration file in our win32 binary distributions, in the extras/openssl directory.

PHP will search for the openssl.cnf using the following logic:

  • the OPENSSL_CONF environmental variable, if set, will be used as the path (including filename) of the configuration file.
  • the SSLEAY_CONF environmental variable, if set, will be used as the path (including filename) of the configuration file.
  • The file openssl.cnf will be assumed to be found in the default certificate area, as configured at the time that the openssl DLL was compiled. This is usually means that the default filename is c:\usr\local\ssl\openssl.cnf.

In your installation, you need to decide whether to install the configuration file at c:\usr\local\ssl\openssl.cnf or whether to install it someplace else and use environmental variables (possibly on a per-virtual-host basis) to locate the configuration file. Note that it is possible to override the default path from the script using the configargs of the functions that require a configuration file.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

openssl 配置选项
名字 | 默认 | 可修改范围 | Changelog
openssl.cafile | "" | PHP_INI_PERDIR | Available since PHP 5.6.0.
openssl.capath | "" | PHP_INI_PERDIR | Available since PHP 5.6.0.
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

openssl.cafile string

Location of Certificate Authority file on local filesystem which should be used with the verify_peer context option to authenticate the identity of the remote peer.

openssl.capath string

If cafile is not specified or if the certificate is not found there, the directory pointed to by capath is searched for a suitable certificate. capath must be a correctly hashed certificate directory.

See also the SSL stream context options.

安装
资源类型
安装／配置


预定义常量

Table of Contents

  • Purpose checking flags
  • Padding flags for asymmetric encryption
  • Key types
  • PKCS7 Flags/Constants
  • Signature Algorithms
  • Ciphers
  • Version constants
  • Server Name Indication constants

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

资源类型
Purpose checking flags
OpenSSL


Purpose checking flags

X509_PURPOSE_SSL_CLIENT (integer)
X509_PURPOSE_SSL_SERVER (integer)
X509_PURPOSE_NS_SSL_SERVER (integer)
X509_PURPOSE_SMIME_SIGN (integer)
X509_PURPOSE_SMIME_ENCRYPT (integer)
X509_PURPOSE_CRL_SIGN (integer)
X509_PURPOSE_ANY (integer)
预定义常量
Padding flags for asymmetric encryption
预定义常量


Padding flags for asymmetric encryption

OPENSSL_PKCS1_PADDING (integer)
OPENSSL_SSLV23_PADDING (integer)
OPENSSL_NO_PADDING (integer)
OPENSSL_PKCS1_OAEP_PADDING (integer)
Purpose checking flags
Key types
预定义常量


Key types

OPENSSL_KEYTYPE_RSA (integer)
OPENSSL_KEYTYPE_DSA (integer)
OPENSSL_KEYTYPE_DH (integer)
OPENSSL_KEYTYPE_EC (integer)
This constant is only available when PHP is compiled with OpenSSL 0.9.8+.

Note:

This constant was added in 5.2.0.

OPENSSL_KEYTYPE_EC

Padding flags for asymmetric encryption
PKCS7 Flags/Constants
预定义常量


PKCS7 Flags/Constants

The S/MIME functions make use of flags which are specified using a bitfield which can include one or more of the following values:

PKCS7 CONSTANTS
Constant | Description
PKCS7_TEXT | Adds text/plain content type headers to encrypted/signed message. If decrypting or verifying, it strips those headers from the output - if the decrypted or verified message is not of MIME type text/plain then an error will occur.
PKCS7_BINARY | Normally the input message is converted to "canonical" format which is effectively using CR and LF as end of line: as required by the S/MIME specification. When this option is present, no translation occurs. This is useful when handling binary data which may not be in MIME format.
PKCS7_NOINTERN | When verifying a message, certificates (if any) included in the message are normally searched for the signing certificate. With this option only the certificates specified in the extracerts parameter of openssl_pkcs7_verify() are used. The supplied certificates can still be used as untrusted CAs however.
PKCS7_NOVERIFY | Do not verify the signers certificate of a signed message.
PKCS7_NOCHAIN | Do not chain verification of signers certificates: that is don't use the certificates in the signed message as untrusted CAs.
PKCS7_NOCERTS | When signing a message the signer's certificate is normally included - with this option it is excluded. This will reduce the size of the signed message but the verifier must have a copy of the signers certificate available locally (passed using the extracerts to openssl_pkcs7_verify() for example).
PKCS7_NOATTR | Normally when a message is signed, a set of attributes are included which include the signing time and the supported symmetric algorithms. With this option they are not included.
PKCS7_DETACHED | When signing a message, use cleartext signing with the MIME type "multipart/signed". This is the default if you do not specify any flags to openssl_pkcs7_sign(). If you turn this option off, the message will be signed using opaque signing, which is more resistant to translation by mail relays but cannot be read by mail agents that do not support S/MIME.
PKCS7_NOSIGS | Don't try and verify the signatures on a message

Note:

These constants were added in 4.0.6.

Key types
Signature Algorithms
预定义常量


Signature Algorithms

OPENSSL_ALGO_DSS1 (integer)
OPENSSL_ALGO_SHA1 (integer)
Used as default algorithm by openssl_sign() and openssl_verify().
OPENSSL_ALGO_SHA224 (integer)
OPENSSL_ALGO_SHA256 (integer)
OPENSSL_ALGO_SHA384 (integer)
OPENSSL_ALGO_SHA512 (integer)
OPENSSL_ALGO_RMD160 (integer)
OPENSSL_ALGO_MD5 (integer)
OPENSSL_ALGO_MD4 (integer)
OPENSSL_ALGO_MD2 (integer)
As of PHP 5.2.13 and PHP 5.3.2, this constant is only available if PHP is compiled with MD2 support. This requires passing in the -DHAVE_OPENSSL_MD2_H CFLAG when compiling PHP, and enable-md2 when compiling OpenSSL 1.0.0+.

Note:

These constants were added in 5.0.0.

OPENSSL_ALGO_MD2, OPENSSL_ALGO_MD4, OPENSSL_ALGO_MD5, OPENSSL_ALGO_SHA1, OPENSSL_ALGO_DSS1

Note:

These constants were added in 5.4.8.

OPENSSL_ALGO_RMD160, OPENSSL_ALGO_SHA224, OPENSSL_ALGO_SHA256, OPENSSL_ALGO_SHA384, OPENSSL_ALGO_SHA512

PKCS7 Flags/Constants
Ciphers
预定义常量


Ciphers

OPENSSL_CIPHER_RC2_40 (integer)
OPENSSL_CIPHER_RC2_128 (integer)
OPENSSL_CIPHER_RC2_64 (integer)
OPENSSL_CIPHER_DES (integer)
OPENSSL_CIPHER_3DES (integer)

Note:

These constants were added in 4.3.0.

OPENSSL_CIPHER_AES_128_CBC (integer)
OPENSSL_CIPHER_AES_192_CBC (integer)
OPENSSL_CIPHER_AES_256_CBC (integer)

Note:

These constants were added in 5.4.0.

Signature Algorithms
Version constants
预定义常量


Version constants

OPENSSL_VERSION_TEXT (string)
OPENSSL_VERSION_NUMBER (integer)

Note:

These constants were added in 5.2.0.

Ciphers
Server Name Indication constants
预定义常量


Server Name Indication constants

OPENSSL_TLSEXT_SERVER_NAME (string)
Whether SNI support is available or not.

Note:

This constant were added in 5.3.2 and requires PHP to be built with OpenSSL 0.9.8j or greater.

Version constants
Key/Certificate parameters
预定义常量


Key/Certificate parameters

Quite a few of the openssl functions require a key or a certificate parameter. Following methods may be used to get them:

  • Certificates

    1. An X.509 resource returned from openssl_x509_read()
    2. A string having the format file://path/to/cert.pem; the named file must contain a PEM encoded certificate
    3. A string containing the content of a certificate, PEM encoded

  • Public/Private Keys

    1. A key resource returned from openssl_get_publickey() or openssl_get_privatekey()
    2. For public keys only: an X.509 resource
    3. A string having the format file://path/to/file.pem - the named file must contain a PEM encoded certificate/private key (it may contain both)
    4. A string containing the content of a certificate/key, PEM encoded
    5. For private keys, you may also use the syntax array($key, $passphrase) where $key represents a key specified using the file:// or textual content notation above, and $passphrase represents a string containing the passphrase for that private key

Server Name Indication constants
Certificate Verification
OpenSSL


Certificate Verification

When calling a function that will verify a signature/certificate, the cainfo parameter is an array containing file and directory names that specify the locations of trusted CA files. If a directory is specified, then it must be a correctly formed hashed directory as the openssl command would use.

Key/Certificate parameters
OpenSSL 函数
OpenSSL


OpenSSL 函数

Table of Contents

  • openssl_cipher_iv_length — Gets the cipher iv length
  • openssl_csr_export_to_file — Exports a CSR to a file
  • openssl_csr_export — Exports a CSR as a string
  • openssl_csr_get_public_key — Returns the public key of a CERT
  • openssl_csr_get_subject — Returns the subject of a CERT
  • openssl_csr_new — Generates a CSR
  • openssl_csr_sign — Sign a CSR with another certificate (or itself) and generate a certificate
  • openssl_decrypt — Decrypts data
  • openssl_dh_compute_key — Computes shared secret for public value of remote DH key and local DH key
  • openssl_digest — Computes a digest
  • openssl_encrypt — Encrypts data
  • openssl_error_string — Return openSSL error message
  • openssl_free_key — Free key resource
  • openssl_get_cert_locations — Retrieve the available certificate locations
  • openssl_get_cipher_methods — Gets available cipher methods
  • openssl_get_md_methods — Gets available digest methods
  • openssl_get_privatekey — 别名 openssl_pkey_get_private
  • openssl_get_publickey — 别名 openssl_pkey_get_public
  • openssl_open — Open sealed data
  • openssl_pbkdf2 — Generates a PKCS5 v2 PBKDF2 string, defaults to SHA-1
  • openssl_pkcs12_export_to_file — Exports a PKCS#12 Compatible Certificate Store File
  • openssl_pkcs12_export — Exports a PKCS#12 Compatible Certificate Store File to variable.
  • openssl_pkcs12_read — Parse a PKCS#12 Certificate Store into an array
  • openssl_pkcs7_decrypt — Decrypts an S/MIME encrypted message
  • openssl_pkcs7_encrypt — Encrypt an S/MIME message
  • openssl_pkcs7_sign — Sign an S/MIME message
  • openssl_pkcs7_verify — Verifies the signature of an S/MIME signed message
  • openssl_pkey_export_to_file — Gets an exportable representation of a key into a file
  • openssl_pkey_export — Gets an exportable representation of a key into a string
  • openssl_pkey_free — Frees a private key
  • openssl_pkey_get_details — Returns an array with the key details
  • openssl_pkey_get_private — Get a private key
  • openssl_pkey_get_public — Extract public key from certificate and prepare it for use
  • openssl_pkey_new — Generates a new private key
  • openssl_private_decrypt — Decrypts data with private key
  • openssl_private_encrypt — Encrypts data with private key
  • openssl_public_decrypt — Decrypts data with public key
  • openssl_public_encrypt — Encrypts data with public key
  • openssl_random_pseudo_bytes — Generate a pseudo-random string of bytes
  • openssl_seal — Seal (encrypt) data
  • openssl_sign — Generate signature
  • openssl_spki_export_challenge — Exports the challenge assoicated with a signed public key and challenge
  • openssl_spki_export — Exports a valid PEM formatted public key signed public key and challenge
  • openssl_spki_new — Generate a new signed public key and challenge
  • openssl_spki_verify — Verifies a signed public key and challenge
  • openssl_verify — Verify signature
  • openssl_x509_check_private_key — Checks if a private key corresponds to a certificate
  • openssl_x509_checkpurpose — Verifies if a certificate can be used for a particular purpose
  • openssl_x509_export_to_file — Exports a certificate to file
  • openssl_x509_export — Exports a certificate as a string
  • openssl_x509_fingerprint — Calculates the fingerprint, or digest, of a given X.509 certificate
  • openssl_x509_free — Free certificate resource
  • openssl_x509_parse — Parse an X509 certificate and return the information as an array
  • openssl_x509_read — Parse an X.509 certificate and return a resource identifier for it
Certificate Verification
openssl_cipher_iv_length
OpenSSL


Gets the cipher iv length

OpenSSL 函数
openssl_csr_export_to_file
OpenSSL 函数
PHP Manual

openssl_cipher_iv_length

(PHP 5 >= PHP 5.3.3, PHP 7)

openssl_cipher_iv_length — Gets the cipher iv length

说明

int openssl_cipher_iv_length ( string $method )

Gets the cipher initialization vector (iv) length.

参数

method

The cipher method, see openssl_get_cipher_methods() for a list of potential values.

返回值

Returns the cipher length on success, or FALSE on failure.

错误／异常

Emits an E_WARNING level error when the cipher algorithm is unknown.

范例

Example #1 openssl_cipher_iv_length() example

<?php
$method = 'AES-128-CBC';
$ivlen = openssl_cipher_iv_length($method);

echo $ivlen;
?>

以上例程的输出类似于：

16
OpenSSL 函数
openssl_csr_export_to_file
OpenSSL 函数


Exports a CSR to a file

openssl_cipher_iv_length
openssl_csr_export
OpenSSL 函数
PHP Manual

openssl_csr_export_to_file

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

openssl_csr_export_to_file — Exports a CSR to a file

说明

bool openssl_csr_export_to_file ( resource $csr , string $outfilename [, bool $notext = true ] )

openssl_csr_export_to_file() takes the Certificate Signing Request represented by csr and saves it as ascii-armoured text into the file named by outfilename.

参数

csr

outfilename

Path to the output file.

notext

可选参数 notext 影响输出的冗余度。如果设为 FALSE，输出内容将包含附加的人类可读信息。notext 的缺省值为 TRUE。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • openssl_csr_export() - Exports a CSR as a string
  • openssl_csr_new() - Generates a CSR
  • openssl_csr_sign() - Sign a CSR with another certificate (or itself) and generate a certificate

openssl_cipher_iv_length
openssl_csr_export
OpenSSL 函数


Exports a CSR as a string

openssl_csr_export_to_file
openssl_csr_get_public_key
OpenSSL 函数
PHP Manual

openssl_csr_export

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

openssl_csr_export — Exports a CSR as a string

说明

bool openssl_csr_export ( resource $csr , string &$out [, bool $notext = true ] )

openssl_csr_export() takes the Certificate Signing Request represented by csr and stores it as ascii-armoured text into out, which is passed by reference.

参数

csr

out

notext

可选参数 notext 影响输出的冗余度。如果设为 FALSE，输出内容将包含附加的人类可读信息。notext 的缺省值为 TRUE。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • openssl_csr_export_to_file() - Exports a CSR to a file
  • openssl_csr_new() - Generates a CSR
  • openssl_csr_sign() - Sign a CSR with another certificate (or itself) and generate a certificate

openssl_csr_export_to_file
openssl_csr_get_public_key
OpenSSL 函数


Returns the public key of a CERT

openssl_csr_export
openssl_csr_get_subject
OpenSSL 函数
PHP Manual

openssl_csr_get_public_key

(PHP 5 >= 5.2.0, PHP 7)

openssl_csr_get_public_key — Returns the public key of a CERT

说明

resource openssl_csr_get_public_key ( mixed $csr [, bool $use_shortnames = true ] )
Warning

本函数还未编写文档，仅有参数列表。

openssl_csr_export
openssl_csr_get_subject
OpenSSL 函数


Returns the subject of a CERT

openssl_csr_get_public_key
openssl_csr_new
OpenSSL 函数
PHP Manual

openssl_csr_get_subject

(PHP 5 >= 5.2.0, PHP 7)

openssl_csr_get_subject — Returns the subject of a CERT

说明

array openssl_csr_get_subject ( mixed $csr [, bool $use_shortnames = true ] )
Warning

本函数还未编写文档，仅有参数列表。

openssl_csr_get_public_key
openssl_csr_new
OpenSSL 函数


Generates a CSR

openssl_csr_get_subject
openssl_csr_sign
OpenSSL 函数
PHP Manual

openssl_csr_new

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

openssl_csr_new — Generates a CSR

说明

mixed openssl_csr_new ( array $dn , resource &$privkey [, array $configargs [, array $extraattribs ]] )

openssl_csr_new() generates a new CSR (Certificate Signing Request) based on the information provided by dn, which represents the Distinguished Name to be used in the certificate.

Note: 必须安装有效的 openssl.cnf 以保证此函数正确运行。参考有关安装的说明以获得更多信息。

参数

dn

The Distinguished Name to be used in the certificate.

privkey

privkey should be set to a private key that was previously generated by openssl_pkey_new() (or otherwise obtained from the other openssl_pkey family of functions). The corresponding public portion of the key will be used to sign the CSR.

configargs

By default, the information in your system openssl.conf is used to initialize the request; you can specify a configuration file section by setting the config_section_section key of configargs. You can also specify an alternative openssl configuration file by setting the value of the config key to the path of the file you want to use. The following keys, if present in configargs behave as their equivalents in the openssl.conf, as listed in the table below.

Configuration overrides
configargs key | type | openssl.conf equivalent | description
digest_alg | string | default_md | Selects which digest method to use
x509_extensions | string | x509_extensions | Selects which extensions should be used when creating an x509 certificate
req_extensions | string | req_extensions | Selects which extensions should be used when creating a CSR
private_key_bits | integer | default_bits | Specifies how many bits should be used to generate a private key
private_key_type | integer | none | Specifies the type of private key to create. This can be one of OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH or OPENSSL_KEYTYPE_RSA. The default value is OPENSSL_KEYTYPE_RSA which is currently the only supported key type.
encrypt_key | boolean | encrypt_key | Should an exported key (with passphrase) be encrypted?
encrypt_key_cipher | integer | none | One of cipher constants.

extraattribs

extraattribs is used to specify additional configuration options for the CSR. Both dn and extraattribs are associative arrays whose keys are converted to OIDs and applied to the relevant part of the request.

返回值

Returns the CSR.

范例

Example #1 Creating a self-signed-certificate

<?php
// Fill in data for the distinguished name to be used in the cert
// You must change the values of these keys to match your name and
// company, or more precisely, the name and company of the person/site
// that you are generating the certificate for.
// For SSL certificates, the commonName is usually the domain name of
// that will be using the certificate, but for S/MIME certificates,
// the commonName will be the name of the individual who will use the
// certificate.
$dn = array(
    "countryName" => "UK",
    "stateOrProvinceName" => "Somerset",
    "localityName" => "Glastonbury",
    "organizationName" => "The Brain Room Limited",
    "organizationalUnitName" => "PHP Documentation Team",
    "commonName" => "Wez Furlong",
    "emailAddress" => "wez@example.com"
);

// Generate a new private (and public) key pair
$privkey = openssl_pkey_new();

// Generate a certificate signing request
$csr = openssl_csr_new($dn, $privkey);

// You will usually want to create a self-signed certificate at this
// point until your CA fulfills your request.
// This creates a self-signed cert that is valid for 365 days
$sscert = openssl_csr_sign($csr, null, $privkey, 365);

// Now you will want to preserve your private key, CSR and self-signed
// cert so that they can be installed into your web server, mail server
// or mail client (depending on the intended use of the certificate).
// This example shows how to get those things into variables, but you
// can also store them directly into files.
// Typically, you will send the CSR on to your CA who will then issue
// you with the "real" certificate.
openssl_csr_export($csr, $csrout) and var_dump($csrout);
openssl_x509_export($sscert, $certout) and var_dump($certout);
openssl_pkey_export($privkey, $pkeyout, "mypassword") and var_dump($pkeyout);

// Show any errors that occurred here
while (($e = openssl_error_string()) !== false) {
    echo $e . "\n";
}
?>

openssl_csr_get_subject
openssl_csr_sign
OpenSSL 函数


Sign a CSR with another certificate (or itself) and generate a certificate

openssl_csr_new
openssl_decrypt
OpenSSL 函数
PHP Manual

openssl_csr_sign

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

openssl_csr_sign — Sign a CSR with another certificate (or itself) and generate a certificate

说明

resource openssl_csr_sign ( mixed $csr , mixed $cacert , mixed $priv_key , int $days [, array $configargs [, int $serial = 0 ]] )

openssl_csr_sign() generates an x509 certificate resource from the given CSR.

Note: 必须安装有效的 openssl.cnf 以保证此函数正确运行。参考有关安装的说明以获得更多信息。

参数

csr

A CSR previously generated by openssl_csr_new(). It can also be the path to a PEM encoded CSR when specified as file://path/to/csr or an exported string generated by openssl_csr_export().

cacert

The generated certificate will be signed by cacert. If cacert is NULL, the generated certificate will be a self-signed certificate.

priv_key

priv_key is the private key that corresponds to cacert.

days

days specifies the length of time for which the generated certificate will be valid, in days.

configargs

You can finetune the CSR signing by configargs. See openssl_csr_new() for more information about configargs.

serial

An optional the serial number of issued certificate. If not specified it will default to 0.

返回值

Returns an x509 certificate resource on success, FALSE on failure.

范例

Example #1 openssl_csr_sign() example - signing a CSR (how to implement your own CA)

<?php
// Let's assume that this script is set to receive a CSR that has
// been pasted into a textarea from another page
$csrdata = $_POST["CSR"];

// We will sign the request using our own "certificate authority"
// certificate.  You can use any certificate to sign another, but
// the process is worthless unless the signing certificate is trusted
// by the software/users that will deal with the newly signed certificate

// We need our CA cert and its private key
$cacert = "file://path/to/ca.crt";
$privkey = array("file://path/to/ca.key", "your_ca_key_passphrase");

$usercert = openssl_csr_sign($csrdata, $cacert, $privkey, 365);

// Now display the generated certificate so that the user can
// copy and paste it into their local configuration (such as a file
// to hold the certificate for their SSL server)
openssl_x509_export($usercert, $certout);
echo $certout;

// Show any errors that occurred here
while (($e = openssl_error_string()) !== false) {
    echo $e . "\n";
}
?>

openssl_csr_new
openssl_decrypt
OpenSSL 函数


Decrypts data

openssl_csr_sign
openssl_dh_compute_key
OpenSSL 函数
PHP Manual

openssl_decrypt

(PHP 5 >= 5.3.0, PHP 7)

openssl_decrypt — Decrypts data

说明

string openssl_decrypt ( string $data , string $method , string $password [, int $options = 0 [, string $iv = "" [, string $tag = "" [, string $aad = "" ]]]] )

Takes a raw or base64 encoded string and decrypts it using a given method and key.

Warning

本函数还未编写文档，仅有参数列表。

参数

data

The data.

method

The cipher method.

password

The password.

options

options can be one of OPENSSL_RAW_DATA, OPENSSL_ZERO_PADDING.

iv

A non-NULL Initialization Vector.

tag

The authentication tag in AEAD cipher mode. If it is incorrect, the authentication fails and the function returns FALSE.

aad

Additional authentication data.

返回值

The decrypted string on success 或者在失败时返回 FALSE.

错误／异常

Emits an E_WARNING level error if an unknown cipher algorithm is passed via the method parameter.

Emits an E_WARNING level error if an empty value is passed in via the iv parameter.

更新日志

版本 | 说明
5.3.3 | The iv parameter was added.
5.4.0 | The raw_output was changed to options.
7.1.0 | The tag and aad parameters were added.

参见

  • openssl_encrypt() - Encrypts data

openssl_csr_sign
openssl_dh_compute_key
OpenSSL 函数


Computes shared secret for public value of remote DH key and local DH key

openssl_decrypt
openssl_digest
OpenSSL 函数
PHP Manual

openssl_dh_compute_key

(PHP 5 >= 5.3.11, PHP 7)

openssl_dh_compute_key — Computes shared secret for public value of remote DH key and local DH key

说明

string openssl_dh_compute_key ( string $pub_key , resource $dh_key )
Warning

本函数还未编写文档，仅有参数列表。

参数

pub_key

Public key

dh_key

DH key

返回值

Returns computed key on success 或者在失败时返回 FALSE.

openssl_decrypt
openssl_digest
OpenSSL 函数


Computes a digest

openssl_dh_compute_key
openssl_encrypt
OpenSSL 函数
PHP Manual

openssl_digest

(PHP 5 >= 5.3.0, PHP 7)

openssl_digest — Computes a digest

说明

string openssl_digest ( string $data , string $method [, bool $raw_output = false ] )

Computes a digest hash value for the given data using a given method, and returns a raw or binhex encoded string.

Warning

本函数还未编写文档，仅有参数列表。

参数

data

The data.

method

The digest method.

raw_output

Setting to TRUE will return as raw output data, otherwise the return value is binhex encoded.

返回值

Returns the digested hash value on success 或者在失败时返回 FALSE.

错误／异常

Emits an E_WARNING level error if an unknown signature algorithm is passed via the method parameter.

参见

  • openssl_get_md_methods() - Gets available digest methods

openssl_dh_compute_key
openssl_encrypt
OpenSSL 函数


Encrypts data

openssl_digest
openssl_error_string
OpenSSL 函数
PHP Manual

openssl_encrypt

(PHP 5 >= 5.3.0, PHP 7)

openssl_encrypt — Encrypts data

说明

string openssl_encrypt ( string $data , string $method , string $password [, int $options = 0 [, string $iv = "" [, string &$tag = NULL [, string $aad = "" [, int $tag_length = 16 ]]]]] )

Encrypts given data with given method and key, returns a raw or base64 encoded string

参数

data

The data.

method

The cipher method. For a list of available cipher methods, use openssl_get_cipher_methods().

password

The password.

options

options is a bitwise disjunction of the flags OPENSSL_RAW_DATA and OPENSSL_ZERO_PADDING.

iv

A non-NULL Initialization Vector.

tag

The authentication tag passed by reference when using AEAD cipher mode (GCM or CCM).

aad

Additional authentication data.

tag_length

The length of the authentication tag. Its value can be between 4 and 16 for GCM mode.

返回值

Returns the encrypted string on success 或者在失败时返回 FALSE.

错误／异常

Emits an E_WARNING level error if an unknown cipher algorithm is passed in via the method parameter.

Emits an E_WARNING level error if an empty value is passed in via the iv parameter.

更新日志

版本 | 说明
5.3.3 | The iv parameter was added.
5.4.0 | The raw_output was changed to options.
7.1.0 | The tag, aad and tag_length parameters were added.

参见

  • openssl_decrypt() - Decrypts data

openssl_digest
openssl_error_string
OpenSSL 函数


Return openSSL error message

openssl_encrypt
openssl_free_key
OpenSSL 函数
PHP Manual

openssl_error_string

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

openssl_error_string — Return openSSL error message

说明

string openssl_error_string ( void )

openssl_error_string() returns the last error from the openSSL library. Error messages are queued, so this function should be called multiple times to collect all of the information. The last error will be the most recent one.

返回值

Returns an error message string, or FALSE if there are no more error messages to return.

范例

Example #1 openssl_error_string() example

<?php
// lets assume you just called an openssl function that failed
while ($msg = openssl_error_string())
    echo $msg . "<br />\n";
?>

openssl_encrypt
openssl_free_key
OpenSSL 函数


Free key resource

openssl_error_string
openssl_get_cert_locations
OpenSSL 函数
PHP Manual

openssl_free_key

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

openssl_free_key — Free key resource

说明

void openssl_free_key ( resource $key_identifier )

openssl_free_key() frees the key associated with the specified key_identifier from memory.

参数

key_identifier

返回值

没有返回值。

openssl_error_string
openssl_get_cert_locations
OpenSSL 函数


Retrieve the available certificate locations

openssl_free_key
openssl_get_cipher_methods
OpenSSL 函数
PHP Manual

openssl_get_cert_locations

(PHP 5 >= 5.6.0, PHP 7)

openssl_get_cert_locations — Retrieve the available certificate locations

说明

array openssl_get_cert_locations ( void )

openssl_get_cert_locations() returns an array with information about the available certificate locations that will be searched for SSL certificates.

参数

此函数没有参数。

返回值

Returns an array with the available certificate locations.

范例

Example #1 openssl_get_cert_locations() example

<?php
var_dump(openssl_get_cert_locations());
?>

以上例程会输出：

array(8) {
  ["default_cert_file"]=>
  string(21) "/usr/lib/ssl/cert.pem"
  ["default_cert_file_env"]=>
  string(13) "SSL_CERT_FILE"
  ["default_cert_dir"]=>
  string(18) "/usr/lib/ssl/certs"
  ["default_cert_dir_env"]=>
  string(12) "SSL_CERT_DIR"
  ["default_private_dir"]=>
  string(20) "/usr/lib/ssl/private"
  ["default_default_cert_area"]=>
  string(12) "/usr/lib/ssl"
  ["ini_cafile"]=>
  string(0) ""
  ["ini_capath"]=>
  string(0) ""
}

openssl_free_key
openssl_get_cipher_methods
OpenSSL 函数


Gets available cipher methods

openssl_get_cert_locations
openssl_get_md_methods
OpenSSL 函数
PHP Manual

openssl_get_cipher_methods

(PHP 5 >= 5.3.0, PHP 7)

openssl_get_cipher_methods — Gets available cipher methods

说明

array openssl_get_cipher_methods ([ bool $aliases = false ] )

Gets a list of available cipher methods.

参数

aliases

Set to TRUE if cipher aliases should be included within the returned array.

返回值

An array of available cipher methods.

范例

Example #1 openssl_get_cipher_methods() example

Shows how the available ciphers might look, and also which aliases might be available.

<?php
$ciphers             = openssl_get_cipher_methods();
$ciphers_and_aliases = openssl_get_cipher_methods(true);
$cipher_aliases      = array_diff($ciphers_and_aliases, $ciphers);

print_r($ciphers);

print_r($cipher_aliases);

?>

以上例程的输出类似于：

Array
(
    [0] => AES-128-CBC
    [1] => AES-128-CFB
    [2] => AES-128-CFB1
    [3] => AES-128-CFB8
    [4] => AES-128-ECB
    [5] => AES-128-OFB
    [6] => AES-192-CBC
    [7] => AES-192-CFB
    [8] => AES-192-CFB1
    [9] => AES-192-CFB8
    [10] => AES-192-ECB
    [11] => AES-192-OFB
    [12] => AES-256-CBC
    [13] => AES-256-CFB
    [14] => AES-256-CFB1
    [15] => AES-256-CFB8
    [16] => AES-256-ECB
    [17] => AES-256-OFB
    [18] => BF-CBC
    [19] => BF-CFB
    [20] => BF-ECB
    [21] => BF-OFB
    [22] => CAST5-CBC
    [23] => CAST5-CFB
    [24] => CAST5-ECB
    [25] => CAST5-OFB
    [26] => DES-CBC
    [27] => DES-CFB
    [28] => DES-CFB1
    [29] => DES-CFB8
    [30] => DES-ECB
    [31] => DES-EDE
    [32] => DES-EDE-CBC
    [33] => DES-EDE-CFB
    [34] => DES-EDE-OFB
    [35] => DES-EDE3
    [36] => DES-EDE3-CBC
    [37] => DES-EDE3-CFB
    [38] => DES-EDE3-OFB
    [39] => DES-OFB
    [40] => DESX-CBC
    [41] => IDEA-CBC
    [42] => IDEA-CFB
    [43] => IDEA-ECB
    [44] => IDEA-OFB
    [45] => RC2-40-CBC
    [46] => RC2-64-CBC
    [47] => RC2-CBC
    [48] => RC2-CFB
    [49] => RC2-ECB
    [50] => RC2-OFB
    [51] => RC4
    [52] => RC4-40
    [53] => aes-128-cbc
    [54] => aes-128-cfb
    [55] => aes-128-cfb1
    [56] => aes-128-cfb8
    [57] => aes-128-ecb
    [58] => aes-128-ofb
    [59] => aes-192-cbc
    [60] => aes-192-cfb
    [61] => aes-192-cfb1
    [62] => aes-192-cfb8
    [63] => aes-192-ecb
    [64] => aes-192-ofb
    [65] => aes-256-cbc
    [66] => aes-256-cfb
    [67] => aes-256-cfb1
    [68] => aes-256-cfb8
    [69] => aes-256-ecb
    [70] => aes-256-ofb
    [71] => bf-cbc
    [72] => bf-cfb
    [73] => bf-ecb
    [74] => bf-ofb
    [75] => cast5-cbc
    [76] => cast5-cfb
    [77] => cast5-ecb
    [78] => cast5-ofb
    [79] => des-cbc
    [80] => des-cfb
    [81] => des-cfb1
    [82] => des-cfb8
    [83] => des-ecb
    [84] => des-ede
    [85] => des-ede-cbc
    [86] => des-ede-cfb
    [87] => des-ede-ofb
    [88] => des-ede3
    [89] => des-ede3-cbc
    [90] => des-ede3-cfb
    [91] => des-ede3-ofb
    [92] => des-ofb
    [93] => desx-cbc
    [94] => idea-cbc
    [95] => idea-cfb
    [96] => idea-ecb
    [97] => idea-ofb
    [98] => rc2-40-cbc
    [99] => rc2-64-cbc
    [100] => rc2-cbc
    [101] => rc2-cfb
    [102] => rc2-ecb
    [103] => rc2-ofb
    [104] => rc4
    [105] => rc4-40
)
Array
(
    [18] => AES128
    [19] => AES192
    [20] => AES256
    [21] => BF
    [26] => CAST
    [27] => CAST-cbc
    [32] => DES
    [47] => DES3
    [48] => DESX
    [50] => IDEA
    [55] => RC2
    [82] => aes128
    [83] => aes192
    [84] => aes256
    [85] => bf
    [90] => blowfish
    [91] => cast
    [92] => cast-cbc
    [97] => des
    [112] => des3
    [113] => desx
    [115] => idea
    [120] => rc2
)

参见

  • openssl_get_md_methods() - Gets available digest methods

openssl_get_cert_locations
openssl_get_md_methods
OpenSSL 函数


Gets available digest methods

openssl_get_cipher_methods
openssl_get_privatekey
OpenSSL 函数
PHP Manual

openssl_get_md_methods

(PHP 5 >= 5.3.0, PHP 7)

openssl_get_md_methods — Gets available digest methods

说明

array openssl_get_md_methods ([ bool $aliases = false ] )

Gets a list of available digest methods.

参数

aliases

Set to TRUE if digest aliases should be included within the returned array.

返回值

An array of available digest methods.

范例

Example #1 openssl_get_md_methods() example

Shows how the available digests might look, and also which aliases might be available.

<?php
$digests             = openssl_get_md_methods();
$digests_and_aliases = openssl_get_md_methods(true);
$digest_aliases      = array_diff($digests_and_aliases, $digests);

print_r($digests);

print_r($digest_aliases);

?>

以上例程的输出类似于：

Array
(
    [0] => DSA
    [1] => DSA-SHA
    [2] => MD2
    [3] => MD4
    [4] => MD5
    [5] => RIPEMD160
    [6] => SHA
    [7] => SHA1
    [8] => SHA224
    [9] => SHA256
    [10] => SHA384
    [11] => SHA512
    [12] => dsaEncryption
    [13] => dsaWithSHA
    [14] => ecdsa-with-SHA1
    [15] => md2
    [16] => md4
    [17] => md5
    [18] => ripemd160
    [19] => sha
    [20] => sha1
    [21] => sha224
    [22] => sha256
    [23] => sha384
    [24] => sha512
)
Array
(
    [2] => DSA-SHA1
    [3] => DSA-SHA1-old
    [4] => DSS1
    [9] => RSA-MD2
    [10] => RSA-MD4
    [11] => RSA-MD5
    [12] => RSA-RIPEMD160
    [13] => RSA-SHA
    [14] => RSA-SHA1
    [15] => RSA-SHA1-2
    [16] => RSA-SHA224
    [17] => RSA-SHA256
    [18] => RSA-SHA384
    [19] => RSA-SHA512
    [28] => dsaWithSHA1
    [29] => dss1
    [32] => md2WithRSAEncryption
    [34] => md4WithRSAEncryption
    [36] => md5WithRSAEncryption
    [37] => ripemd
    [39] => ripemd160WithRSA
    [40] => rmd160
    [43] => sha1WithRSAEncryption
    [45] => sha224WithRSAEncryption
    [47] => sha256WithRSAEncryption
    [49] => sha384WithRSAEncryption
    [51] => sha512WithRSAEncryption
    [52] => shaWithRSAEncryption
    [53] => ssl2-md5
    [54] => ssl3-md5
    [55] => ssl3-sha1
)

参见

  • openssl_digest() - Computes a digest
  • openssl_get_cipher_methods() - Gets available cipher methods

openssl_get_cipher_methods
openssl_get_privatekey
OpenSSL 函数


别名 openssl_pkey_get_private

openssl_get_md_methods
openssl_get_publickey
OpenSSL 函数
PHP Manual

openssl_get_privatekey

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

openssl_get_privatekey — 别名 openssl_pkey_get_private()

说明

此函数是该函数的别名： openssl_pkey_get_private().

openssl_get_md_methods
openssl_get_publickey
OpenSSL 函数


别名 openssl_pkey_get_public

openssl_get_privatekey
openssl_open
OpenSSL 函数
PHP Manual

openssl_get_publickey

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

openssl_get_publickey — 别名 openssl_pkey_get_public()

说明

此函数是该函数的别名： openssl_pkey_get_public().

openssl_get_privatekey
openssl_open
OpenSSL 函数


Open sealed data

openssl_get_publickey
openssl_pbkdf2
OpenSSL 函数
PHP Manual

openssl_open

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

openssl_open — Open sealed data

说明

bool openssl_open ( string $sealed_data , string &$open_data , string $env_key , mixed $priv_key_id [, string $method ] )

openssl_open() opens (decrypts) sealed_data using the private key associated with the key identifier priv_key_id and the envelope key env_key, and fills open_data with the decrypted data. The envelope key is generated when the data are sealed and can only be used by one specific private key. See openssl_seal() for more information.

参数

sealed_data

open_data

If the call is successful the opened data is returned in this parameter.

env_key

priv_key_id

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 openssl_open() example

<?php
// $sealed and $env_key are assumed to contain the sealed data
// and our envelope key, both given to us by the sealer.

// fetch private key from file and ready it
$fp = fopen("/src/openssl-0.9.6/demos/sign/key.pem", "r");
$priv_key = fread($fp, 8192);
fclose($fp);
$pkeyid = openssl_get_privatekey($priv_key);

// decrypt the data and store it in $open
if (openssl_open($sealed, $open, $env_key, $pkeyid)) {
    echo "here is the opened data: ", $open;
} else {
    echo "failed to open data";
}

// free the private key from memory
openssl_free_key($pkeyid);
?>

参见

  • openssl_seal() - Seal (encrypt) data

openssl_get_publickey
openssl_pbkdf2
OpenSSL 函数


Generates a PKCS5 v2 PBKDF2 string, defaults to SHA-1

openssl_open
openssl_pkcs12_export_to_file
OpenSSL 函数
PHP Manual

openssl_pbkdf2

(PHP 5 >= 5.5.0, PHP 7)

openssl_pbkdf2 — Generates a PKCS5 v2 PBKDF2 string, defaults to SHA-1

说明

string openssl_pbkdf2 ( string $password , string $salt , int $key_length , int $iterations [, string $digest_algorithm ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

password

salt

key_length

iterations

digest_algorithm

返回值

Returns string 或者在失败时返回 FALSE.

openssl_open
openssl_pkcs12_export_to_file
OpenSSL 函数


Exports a PKCS#12 Compatible Certificate Store File

openssl_pbkdf2
openssl_pkcs12_export
OpenSSL 函数
PHP Manual

openssl_pkcs12_export_to_file

(PHP 5 >= 5.2.2, PHP 7)

openssl_pkcs12_export_to_file — Exports a PKCS#12 Compatible Certificate Store File

说明

bool openssl_pkcs12_export_to_file ( mixed $x509 , string $filename , mixed $priv_key , string $pass [, array $args ] )

openssl_pkcs12_export_to_file() stores x509 into a file named by filename in a PKCS#12 file format.

参数

x509

参见密钥／证书参数以获取有效值列表。

filename

Path to the output file.

priv_key

Private key component of PKCS#12 file.

pass

Encryption password for unlocking the PKCS#12 file.

args

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

openssl_pbkdf2
openssl_pkcs12_export
OpenSSL 函数


Exports a PKCS#12 Compatible Certificate Store File to variable.

openssl_pkcs12_export_to_file
openssl_pkcs12_read
OpenSSL 函数
PHP Manual

openssl_pkcs12_export

(PHP 5 >= 5.2.2, PHP 7)

openssl_pkcs12_export — Exports a PKCS#12 Compatible Certificate Store File to variable.

说明

bool openssl_pkcs12_export ( mixed $x509 , string &$out , mixed $priv_key , string $pass [, array $args ] )

openssl_pkcs12_export() stores x509 into a string named by out in a PKCS#12 file format.

参数

x509

参见密钥／证书参数以获取有效值列表。

out

On success, this will hold the PKCS#12.

priv_key

Private key component of PKCS#12 file.

pass

Encryption password for unlocking the PKCS#12 file.

args

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

openssl_pkcs12_export_to_file
openssl_pkcs12_read
OpenSSL 函数


Parse a PKCS#12 Certificate Store into an array

openssl_pkcs12_export
openssl_pkcs7_decrypt
OpenSSL 函数
PHP Manual

openssl_pkcs12_read

(PHP 5 >= 5.2.2, PHP 7)

openssl_pkcs12_read — Parse a PKCS#12 Certificate Store into an array

说明

bool openssl_pkcs12_read ( string $pkcs12 , array &$certs , string $pass )

openssl_pkcs12_read() parses the PKCS#12 certificate store supplied by pkcs12 into a array named certs.

参数

pkcs12

The certificate store contents, not its file name.

certs

On success, this will hold the Certificate Store Data.

pass

Encryption password for unlocking the PKCS#12 file.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 openssl_pkcs12_read() example

<?php
if (!$cert_store = file_get_contents("/certs/file.p12")) {
    echo "Error: Unable to read the cert file\n";
    exit;
}

if (openssl_pkcs12_read($cert_store, $cert_info, "my_secret_pass")) {
    echo "Certificate Information\n";
    print_r($cert_info);
} else {
    echo "Error: Unable to read the cert store.\n";
    exit;
}
?>
openssl_pkcs12_export
openssl_pkcs7_decrypt
OpenSSL 函数


Decrypts an S/MIME encrypted message

openssl_pkcs12_read
openssl_pkcs7_encrypt
OpenSSL 函数
PHP Manual

openssl_pkcs7_decrypt

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

openssl_pkcs7_decrypt — Decrypts an S/MIME encrypted message

说明

bool openssl_pkcs7_decrypt ( string $infilename , string $outfilename , mixed $recipcert [, mixed $recipkey ] )

Decrypts the S/MIME encrypted message contained in the file specified by infilename using the certificate and its associated private key specified by recipcert and recipkey.

参数

infilename

outfilename

The decrypted message is written to the file specified by outfilename.

recipcert

recipkey

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 openssl_pkcs7_decrypt() example

<?php
// $cert and $key are assumed to contain your personal certificate and private
// key pair, and that you are the recipient of an S/MIME message
$infilename = "encrypted.msg";  // this file holds your encrypted message
$outfilename = "decrypted.msg"; // make sure you can write to this file

if (openssl_pkcs7_decrypt($infilename, $outfilename, $cert, $key)) {
    echo "decrypted!";
} else {
    echo "failed to decrypt!";
}
?>

openssl_pkcs12_read
openssl_pkcs7_encrypt
OpenSSL 函数


Encrypt an S/MIME message

openssl_pkcs7_decrypt
openssl_pkcs7_sign
OpenSSL 函数
PHP Manual

openssl_pkcs7_encrypt

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

openssl_pkcs7_encrypt — Encrypt an S/MIME message

说明

bool openssl_pkcs7_encrypt ( string $infile , string $outfile , mixed $recipcerts , array $headers [, int $flags = 0 [, int $cipherid = OPENSSL_CIPHER_RC2_40 ]] )

openssl_pkcs7_encrypt() takes the contents of the file named infile and encrypts them using an RC2 40-bit cipher so that they can only be read by the intended recipients specified by recipcerts.

参数

infile

outfile

recipcerts

Either a lone X.509 certificate, or an array of X.509 certificates.

headers

headers is an array of headers that will be prepended to the data after it has been encrypted.

headers can be either an associative array keyed by header name, or an indexed array, where each element contains a single header line.

flags

flags can be used to specify options that affect the encoding process - see PKCS7 constants.

cipherid

One of cipher constants.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 openssl_pkcs7_encrypt() example

<?php
// the message you want to encrypt and send to your secret agent
// in the field, known as nighthawk.  You have his certificate
// in the file nighthawk.pem
$data = <<<EOD
Nighthawk,

Top secret, for your eyes only!

The enemy is closing in! Meet me at the cafe at 8.30am
to collect your forged passport!

HQ
EOD;

// load key
$key = file_get_contents("nighthawk.pem");

// save message to file
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);

// encrypt it
if (openssl_pkcs7_encrypt("msg.txt", "enc.txt", $key,
    array("To" => "nighthawk@example.com", // keyed syntax
          "From: HQ <hq@example.com>", // indexed syntax
          "Subject" => "Eyes only"))) {
    // message encrypted - send it!
    exec(ini_get("sendmail_path") . " < enc.txt");
}
?>

openssl_pkcs7_decrypt
openssl_pkcs7_sign
OpenSSL 函数


Sign an S/MIME message

openssl_pkcs7_encrypt
openssl_pkcs7_verify
OpenSSL 函数
PHP Manual

openssl_pkcs7_sign

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

openssl_pkcs7_sign — Sign an S/MIME message

说明

bool openssl_pkcs7_sign ( string $infilename , string $outfilename , mixed $signcert , mixed $privkey , array $headers [, int $flags = PKCS7_DETACHED [, string $extracerts ]] )

openssl_pkcs7_sign() takes the contents of the file named infilename and signs them using the certificate and its matching private key specified by signcert and privkey parameters.

参数

infilename

outfilename

signcert

privkey

headers

headers is an array of headers that will be prepended to the data after it has been signed (see openssl_pkcs7_encrypt() for more information about the format of this parameter).

flags

flags can be used to alter the output - see PKCS7 constants.

extracerts

extracerts specifies the name of a file containing a bunch of extra certificates to include in the signature which can for example be used to help the recipient to verify the certificate that you used.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 openssl_pkcs7_sign() example

<?php
// the message you want to sign so that recipient can be sure it was you that
// sent it
$data = <<<EOD

You have my authorization to spend $10,000 on dinner expenses.

The CEO
EOD;
// save message to file
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);
// encrypt it
if (openssl_pkcs7_sign("msg.txt", "signed.txt", "file://mycert.pem",
    array("file://mycert.pem", "mypassphrase"),
    array("To" => "joes@example.com", // keyed syntax
          "From: HQ <ceo@example.com>", // indexed syntax
          "Subject" => "Eyes only")
    )) {
    // message signed - send it!
    exec(ini_get("sendmail_path") . " < signed.txt");
}
?>

openssl_pkcs7_encrypt
openssl_pkcs7_verify
OpenSSL 函数


Verifies the signature of an S/MIME signed message

openssl_pkcs7_sign
openssl_pkey_export_to_file
OpenSSL 函数
PHP Manual

openssl_pkcs7_verify

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

openssl_pkcs7_verify — Verifies the signature of an S/MIME signed message

说明

mixed openssl_pkcs7_verify ( string $filename , int $flags [, string $outfilename [, array $cainfo [, string $extracerts [, string $content ]]]] )

openssl_pkcs7_verify() reads the S/MIME message contained in the given file and examines the digital signature.

参数

filename

Path to the message.

flags

flags can be used to affect how the signature is verified - see PKCS7 constants for more information.

outfilename

If the outfilename is specified, it should be a string holding the name of a file into which the certificates of the persons that signed the messages will be stored in PEM format.

cainfo

If the cainfo is specified, it should hold information about the trusted CA certificates to use in the verification process - see certificate verification for more information about this parameter.

extracerts

If the extracerts is specified, it is the filename of a file containing a bunch of certificates to use as untrusted CAs.

content

You can specify a filename with content that will be filled with the verified data, but with the signature information stripped.

返回值

Returns TRUE if the signature is verified, FALSE if it is not correct (the message has been tampered with, or the signing certificate is invalid), or -1 on error.

更新日志

版本 | 说明
5.1.0 | The content parameter was added.

注释

Note: As specified in RFC 2045, lines may not be longer than 76 characters in the filename parameter.

openssl_pkcs7_sign
openssl_pkey_export_to_file
OpenSSL 函数


Gets an exportable representation of a key into a file

openssl_pkcs7_verify
openssl_pkey_export
OpenSSL 函数
PHP Manual

openssl_pkey_export_to_file

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

openssl_pkey_export_to_file — Gets an exportable representation of a key into a file

说明

bool openssl_pkey_export_to_file ( mixed $key , string $outfilename [, string $passphrase [, array $configargs ]] )

openssl_pkey_export_to_file() saves an ascii-armoured (PEM encoded) rendition of key into the file named by outfilename.

Note: 必须安装有效的 openssl.cnf 以保证此函数正确运行。参考有关安装的说明以获得更多信息。

参数

key

outfilename

Path to the output file.

passphrase

The key can be optionally protected by a passphrase.

configargs

configargs can be used to fine-tune the export process by specifying and/or overriding options for the openssl configuration file. See openssl_csr_new() for more information about configargs.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

openssl_pkcs7_verify
openssl_pkey_export
OpenSSL 函数


Gets an exportable representation of a key into a string

openssl_pkey_export_to_file
openssl_pkey_free
OpenSSL 函数
PHP Manual

openssl_pkey_export

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

openssl_pkey_export — Gets an exportable representation of a key into a string

说明

bool openssl_pkey_export ( mixed $key , string &$out [, string $passphrase [, array $configargs ]] )

openssl_pkey_export() exports key as a PEM encoded string and stores it into out (which is passed by reference).

Note: 必须安装有效的 openssl.cnf 以保证此函数正确运行。参考有关安装的说明以获得更多信息。

参数

key

out

passphrase

The key is optionally protected by passphrase.

configargs

configargs can be used to fine-tune the export process by specifying and/or overriding options for the openssl configuration file. See openssl_csr_new() for more information about configargs.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

openssl_pkey_export_to_file
openssl_pkey_free
OpenSSL 函数


Frees a private key

openssl_pkey_export
openssl_pkey_get_details
OpenSSL 函数
PHP Manual

openssl_pkey_free

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

openssl_pkey_free — Frees a private key

说明

void openssl_pkey_free ( resource $key )

This function frees a private key created by openssl_pkey_new().

参数

key

Resource holding the key.

返回值

没有返回值。

openssl_pkey_export
openssl_pkey_get_details
OpenSSL 函数


Returns an array with the key details

openssl_pkey_free
openssl_pkey_get_private
OpenSSL 函数
PHP Manual

openssl_pkey_get_details

(PHP 5 >= 5.2.0, PHP 7)

openssl_pkey_get_details — Returns an array with the key details

说明

array openssl_pkey_get_details ( resource $key )

This function returns the key details (bits, key, type).

参数

key

Resource holding the key.

返回值

Returns an array with the key details in success or FALSE in failure. Returned array has indexes bits (number of bits), key (string representation of the public key) and type (type of the key which is one of OPENSSL_KEYTYPE_RSA, OPENSSL_KEYTYPE_DSA, OPENSSL_KEYTYPE_DH, OPENSSL_KEYTYPE_EC or -1 meaning unknown).

Depending on the key type used, additional details may be returned. Note that some elements may not always be available.

  • OPENSSL_KEYTYPE_RSA, an additional array key named "rsa", containing the key data is returned.
    Key 说明
    "n"
    "e"
    "d"
    "p"
    "q"
    "dmp1"
    "dmq1"
    "iqmp"
  • OPENSSL_KEYTYPE_DSA, an additional array key named "dsa", containing the key data is returned.
    Key 说明
    "p"
    "q"
    "g"
    "priv_key"
    "pub_key"
  • OPENSSL_KEYTYPE_DH, an additional array key named "dh", containing the key data is returned.
    Key 说明
    "p"
    "g"
    "priv_key"
    "pub_key"
openssl_pkey_free
openssl_pkey_get_private
OpenSSL 函数


Get a private key

openssl_pkey_get_details
openssl_pkey_get_public
OpenSSL 函数
PHP Manual

openssl_pkey_get_private

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

openssl_pkey_get_private — Get a private key

说明

resource openssl_pkey_get_private ( mixed $key [, string $passphrase = "" ] )

openssl_get_privatekey() parses key and prepares it for use by other functions.

参数

key

key can be one of the following:

  1. a string having the format file://path/to/file.pem. The named file must contain a PEM encoded certificate/private key (it may contain both).
  2. A PEM formatted private key.

passphrase

The optional parameter passphrase must be used if the specified key is encrypted (protected by a passphrase).

返回值

Returns a positive key resource identifier on success, or FALSE on error.

openssl_pkey_get_details
openssl_pkey_get_public
OpenSSL 函数


Extract public key from certificate and prepare it for use

openssl_pkey_get_private
openssl_pkey_new
OpenSSL 函数
PHP Manual

openssl_pkey_get_public

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

openssl_pkey_get_public — Extract public key from certificate and prepare it for use

说明

resource openssl_pkey_get_public ( mixed $certificate )

openssl_get_publickey() extracts the public key from certificate and prepares it for use by other functions.

参数

certificate

certificate can be one of the following:

  1. an X.509 certificate resource
  2. a string having the format file://path/to/file.pem. The named file must contain a PEM encoded certificate/public key (it may contain both).
  3. A PEM formatted public key.

返回值

Returns a positive key resource identifier on success, or FALSE on error.

openssl_pkey_get_private
openssl_pkey_new
OpenSSL 函数


Generates a new private key

openssl_pkey_get_public
openssl_private_decrypt
OpenSSL 函数
PHP Manual

openssl_pkey_new

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

openssl_pkey_new — Generates a new private key

说明

resource openssl_pkey_new ([ array $configargs ] )

openssl_pkey_new() generates a new private and public key pair. The public component of the key can be obtained using openssl_pkey_get_public().

Note: 必须安装有效的 openssl.cnf 以保证此函数正确运行。参考有关安装的说明以获得更多信息。

参数

configargs

You can finetune the key generation (such as specifying the number of bits) using configargs. See openssl_csr_new() for more information about configargs.

返回值

Returns a resource identifier for the pkey on success, or FALSE on error.

openssl_pkey_get_public
openssl_private_decrypt
OpenSSL 函数


Decrypts data with private key

openssl_pkey_new
openssl_private_encrypt
OpenSSL 函数
PHP Manual

openssl_private_decrypt

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

openssl_private_decrypt — Decrypts data with private key

说明

bool openssl_private_decrypt ( string $data , string &$decrypted , mixed $key [, int $padding = OPENSSL_PKCS1_PADDING ] )

openssl_private_decrypt() decrypts data that was previously encrypted via openssl_public_encrypt() and stores the result into decrypted.

You can use this function e.g. to decrypt data which is supposed to only be available to you.

参数

data

decrypted

key

key must be the private key corresponding that was used to encrypt the data.

padding

padding can be one of OPENSSL_PKCS1_PADDING, OPENSSL_SSLV23_PADDING, OPENSSL_PKCS1_OAEP_PADDING, OPENSSL_NO_PADDING.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • openssl_public_encrypt() - Encrypts data with public key
  • openssl_public_decrypt() - Decrypts data with public key

openssl_pkey_new
openssl_private_encrypt
OpenSSL 函数


Encrypts data with private key

openssl_private_decrypt
openssl_public_decrypt
OpenSSL 函数
PHP Manual

openssl_private_encrypt

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

openssl_private_encrypt — Encrypts data with private key

说明

bool openssl_private_encrypt ( string $data , string &$crypted , mixed $key [, int $padding = OPENSSL_PKCS1_PADDING ] )

openssl_private_encrypt() encrypts data with private key and stores the result into crypted. Encrypted data can be decrypted via openssl_public_decrypt().

This function can be used e.g. to sign data (or its hash) to prove that it is not written by someone else.

参数

data

crypted

key

padding

padding can be one of OPENSSL_PKCS1_PADDING, OPENSSL_NO_PADDING.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • openssl_public_encrypt() - Encrypts data with public key
  • openssl_public_decrypt() - Decrypts data with public key

openssl_private_decrypt
openssl_public_decrypt
OpenSSL 函数


Decrypts data with public key

openssl_private_encrypt
openssl_public_encrypt
OpenSSL 函数
PHP Manual

openssl_public_decrypt

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

openssl_public_decrypt — Decrypts data with public key

说明

bool openssl_public_decrypt ( string $data , string &$decrypted , mixed $key [, int $padding = OPENSSL_PKCS1_PADDING ] )

openssl_public_decrypt() decrypts data that was previous encrypted via openssl_private_encrypt() and stores the result into decrypted.

You can use this function e.g. to check if the message was written by the owner of the private key.

参数

data

decrypted

key

key must be the public key corresponding that was used to encrypt the data.

padding

padding can be one of OPENSSL_PKCS1_PADDING, OPENSSL_NO_PADDING.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • openssl_private_encrypt() - Encrypts data with private key
  • openssl_private_decrypt() - Decrypts data with private key

openssl_private_encrypt
openssl_public_encrypt
OpenSSL 函数


Encrypts data with public key

openssl_public_decrypt
openssl_random_pseudo_bytes
OpenSSL 函数
PHP Manual

openssl_public_encrypt

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

openssl_public_encrypt — Encrypts data with public key

说明

bool openssl_public_encrypt ( string $data , string &$crypted , mixed $key [, int $padding = OPENSSL_PKCS1_PADDING ] )

openssl_public_encrypt() encrypts data with public key and stores the result into crypted. Encrypted data can be decrypted via openssl_private_decrypt().

This function can be used e.g. to encrypt message which can be then read only by owner of the private key. It can be also used to store secure data in database.

参数

data

crypted

This will hold the result of the encryption.

key

The public key.

padding

padding can be one of OPENSSL_PKCS1_PADDING, OPENSSL_SSLV23_PADDING, OPENSSL_PKCS1_OAEP_PADDING, OPENSSL_NO_PADDING.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • openssl_private_encrypt() - Encrypts data with private key
  • openssl_private_decrypt() - Decrypts data with private key

openssl_public_decrypt
openssl_random_pseudo_bytes
OpenSSL 函数


Generate a pseudo-random string of bytes

openssl_public_encrypt
openssl_seal
OpenSSL 函数
PHP Manual

openssl_random_pseudo_bytes

(PHP 5 >= 5.3.0, PHP 7)

openssl_random_pseudo_bytes — Generate a pseudo-random string of bytes

说明

string openssl_random_pseudo_bytes ( int $length [, bool &$crypto_strong ] )

Generates a string of pseudo-random bytes, with the number of bytes determined by the length parameter.

It also indicates if a cryptographically strong algorithm was used to produce the pseudo-random bytes, and does this via the optional crypto_strong parameter. It's rare for this to be FALSE, but some systems may be broken or old.

参数

length

The length of the desired string of bytes. Must be a positive integer. PHP will try to cast this parameter to a non-null integer to use it.

crypto_strong

If passed into the function, this will hold a boolean value that determines if the algorithm used was "cryptographically strong", e.g., safe for usage with GPG, passwords, etc. TRUE if it did, otherwise FALSE

返回值

Returns the generated string of bytes on success, 或者在失败时返回 FALSE.

范例

Example #1 openssl_random_pseudo_bytes() example

<?php
for ($i = -1; $i <= 4; $i++) {
    $bytes = openssl_random_pseudo_bytes($i, $cstrong);
    $hex   = bin2hex($bytes);

    echo "Lengths: Bytes: $i and Hex: " . strlen($hex) . PHP_EOL;
    var_dump($hex);
    var_dump($cstrong);
    echo PHP_EOL;
}
?>

以上例程的输出类似于：

Lengths: Bytes: -1 and Hex: 0
string(0) ""
NULL

Lengths: Bytes: 0 and Hex: 0
string(0) ""
NULL

Lengths: Bytes: 1 and Hex: 2
string(2) "42"
bool(true)

Lengths: Bytes: 2 and Hex: 4
string(4) "dc6e"
bool(true)

Lengths: Bytes: 3 and Hex: 6
string(6) "288591"
bool(true)

Lengths: Bytes: 4 and Hex: 8
string(8) "ab86d144"
bool(true)

参见

  • random_bytes() - Generates cryptographically secure pseudo-random bytes
  • bin2hex() - 函数把包含数据的二进制字符串转换为十六进制值
  • crypt() - 单向字符串散列
  • mt_rand() - 生成更好的随机数
  • uniqid() - 生成一个唯一ID
openssl_public_encrypt
openssl_seal
OpenSSL 函数


Seal (encrypt) data

openssl_random_pseudo_bytes
openssl_sign
OpenSSL 函数
PHP Manual

openssl_seal

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

openssl_seal — Seal (encrypt) data

说明

int openssl_seal ( string $data , string &$sealed_data , array &$env_keys , array $pub_key_ids [, string $method = "RC4" ] )

openssl_seal() seals (encrypts) data by using the given method with a randomly generated secret key. The key is encrypted with each of the public keys associated with the identifiers in pub_key_ids and each encrypted key is returned in env_keys. This means that one can send sealed data to multiple recipients (provided one has obtained their public keys). Each recipient must receive both the sealed data and the envelope key that was encrypted with the recipient's public key.

参数

data

The data to seal.

sealed_data

The sealed data.

env_keys

Array of encrypted keys.

pub_key_ids

Array of public key resource identifiers.

method

The cipher method.

返回值

Returns the length of the sealed data on success, or FALSE on error. If successful the sealed data is returned in sealed_data, and the envelope keys in env_keys.

范例

Example #1 openssl_seal() example

<?php
// $data is assumed to contain the data to be sealed

// fetch public keys for our recipients, and ready them
$fp = fopen("/src/openssl-0.9.6/demos/maurice/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk1 = openssl_get_publickey($cert);
// Repeat for second recipient
$fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk2 = openssl_get_publickey($cert);

// seal message, only owners of $pk1 and $pk2 can decrypt $sealed with keys
// $ekeys[0] and $ekeys[1] respectively.
openssl_seal($data, $sealed, $ekeys, array($pk1, $pk2));

// free the keys from memory
openssl_free_key($pk1);
openssl_free_key($pk2);
?>

更新日志

版本 | 说明
5.3.0 | The method parameter was added.

参见

  • openssl_open() - Open sealed data

openssl_random_pseudo_bytes
openssl_sign
OpenSSL 函数


Generate signature

openssl_seal
openssl_spki_export_challenge
OpenSSL 函数
PHP Manual

openssl_sign

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

openssl_sign — Generate signature

说明

bool openssl_sign ( string $data , string &$signature , mixed $priv_key_id [, mixed $signature_alg = OPENSSL_ALGO_SHA1 ] )

openssl_sign() computes a signature for the specified data by generating a cryptographic digital signature using the private key associated with priv_key_id. Note that the data itself is not encrypted.

参数

data

The string of data you wish to sign

signature

If the call was successful the signature is returned in signature.

priv_key_id

resource - a key, returned by openssl_get_privatekey()

string - a PEM formatted key

signature_alg

int - one of these Signature Algorithms.

string - a valid string returned by openssl_get_md_methods() example, "sha256WithRSAEncryption" or "sha384".

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 openssl_sign() example

<?php
// $data is assumed to contain the data to be signed

// fetch private key from file and ready it
$pkeyid = openssl_pkey_get_private("file://src/openssl-0.9.6/demos/sign/key.pem");

// compute signature
openssl_sign($data, $signature, $pkeyid);

// free the key from memory
openssl_free_key($pkeyid);
?>

Example #2 openssl_sign() example

<?php
//data you want to sign
$data = 'my data';

//create new private and public key
$new_key_pair = openssl_pkey_new(array(
    "private_key_bits" => 2048,
    "private_key_type" => OPENSSL_KEYTYPE_RSA,
));
openssl_pkey_export($new_key_pair, $private_key_pem);

$details = openssl_pkey_get_details($new_key_pair);
$public_key_pem = $details['key'];

//create signature
openssl_sign($data, $signature, $private_key_pem, OPENSSL_ALGO_SHA256);

//save for later
file_put_contents('private_key.pem', $private_key_pem);
file_put_contents('public_key.pem', $public_key_pem);
file_put_contents('signature.dat', $signature);

//verify signature
$r = openssl_verify($data, $signature, $public_key_pem, "sha256WithRSAEncryption");
var_dump($r);
?>

参见

  • openssl_verify() - Verify signature

openssl_seal
openssl_spki_export_challenge
OpenSSL 函数


Exports the challenge assoicated with a signed public key and challenge

openssl_sign
openssl_spki_export
OpenSSL 函数
PHP Manual

openssl_spki_export_challenge

(PHP 5 >= 5.6.0, PHP 7)

openssl_spki_export_challenge — Exports the challenge assoicated with a signed public key and challenge

说明

string openssl_spki_export_challenge ( string &$spkac )

Exports challenge from encoded signed public key and challenge

参数

spkac

Expects a valid signed public key and challenge

返回值

Returns the associated challenge string or NULL on failure.

错误／异常

Emits an E_WARNING level error if an invalid argument is passed via the spkac parameter.

范例

Example #1 openssl_spki_export_challenge() example

Extracts the associated challenge string or NULL on failure.

<?php
$pkey = openssl_pkey_new('secret password');
$spkac = openssl_spki_new($pkey, 'challenge string');
$challenge = openssl_spki_export_challenge(preg_replace('/SPKAC=/', '', $spkac));
?>

Example #2 openssl_spki_export_challenge() example from <keygen>

Extracts the associated challenge string issued from the <keygen> element

<?php
$challenge = openssl_spki_export_challenge(preg_replace('/SPKAC=/', '', $_POST['spkac']));
?>
<keygen name="spkac" challenge="challenge string" keytype="RSA">

参见

  • openssl_spki_new() - Generate a new signed public key and challenge
  • openssl_spki_verify() - Verifies a signed public key and challenge
  • openssl_spki_export() - Exports a valid PEM formatted public key signed public key and challenge
  • openssl_md_method()
  • openssl_csr_new() - Generates a CSR
  • openssl_csr_sign() - Sign a CSR with another certificate (or itself) and generate a certificate

openssl_sign
openssl_spki_export
OpenSSL 函数


Exports a valid PEM formatted public key signed public key and challenge

openssl_spki_export_challenge
openssl_spki_new
OpenSSL 函数
PHP Manual

openssl_spki_export

(PHP 5 >= 5.6.0, PHP 7)

openssl_spki_export — Exports a valid PEM formatted public key signed public key and challenge

说明

string openssl_spki_export ( string &$spkac )

Exports PEM formatted public key from encoded signed public key and challenge

参数

spkac

Expects a valid signed public key and challenge

返回值

Returns the associated PEM formatted public key or NULL on failure.

错误／异常

Emits an E_WARNING level error if an invalid argument is passed via the spkac parameter.

范例

Example #1 openssl_spki_export() example

Extracts the associated PEM formatted public key or NULL on failure.

<?php
$pkey = openssl_pkey_new('secret password');
$spkac = openssl_spki_new($pkey, 'challenge string');
$pubKey = openssl_spki_export(preg_replace('/SPKAC=/', '', $spkac));

if ($pubKey) {
    echo $pubKey;
}
?>

Example #2 openssl_spki_export() example from <keygen>

Extracts the associated PEM formatted public key issued from the <keygen> element

<?php
$spkac = openssl_spki_export(preg_replace('/SPKAC=/', '', $_POST['spkac']));
if ($spkac != NULL) {
    echo $spkac;
} else {
    echo "Extraction of pub key failed";
}
?>
<keygen name="spkac" challenge="challenge string" keytype="RSA">

参见

  • openssl_spki_new() - Generate a new signed public key and challenge
  • openssl_spki_verify() - Verifies a signed public key and challenge
  • openssl_spki_export_challenge() - Exports the challenge assoicated with a signed public key and challenge
  • openssl_md_method()
  • openssl_csr_new() - Generates a CSR
  • openssl_csr_sign() - Sign a CSR with another certificate (or itself) and generate a certificate

openssl_spki_export_challenge
openssl_spki_new
OpenSSL 函数


Generate a new signed public key and challenge

openssl_spki_export
openssl_spki_verify
OpenSSL 函数
PHP Manual

openssl_spki_new

(PHP 5 >= 5.6.0, PHP 7)

openssl_spki_new — Generate a new signed public key and challenge

说明

string openssl_spki_new ( resource &$privkey , string &$challenge [, int $algorithm = 0 ] )

Generates a signed public key and challenge using specified hashing algorithm

参数

privkey

privkey should be set to a private key that was previously generated by openssl_pkey_new() (or otherwise obtained from the other openssl_pkey family of functions). The corresponding public portion of the key will be used to sign the CSR.

challenge

The challenge associated to associate with the SPKAC

algorithm

The digest algorithm. See openssl_get_md_method().

返回值

Returns a signed public key and challenge string or NULL on failure.

错误／异常

Emits an E_WARNING level error if an unknown signature algorithm is passed via the algorithm parameter.

范例

Example #1 openssl_spki_new() example

Generate a new SPKAC with the default digest (MD5)

<?php
$pkey = openssl_pkey_new('secret password');
$spkac = openssl_spki_new($pkey, 'testing');

if ($spkac !== NULL) {
    echo $spkac;
} else {
    echo "SPKAC generation failed";
}
?>

以上例程的输出类似于：

MIICRzCCAS8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDM3V3sS4o4
mB9dczziRnjGAmSp+JwPrHoYMAFGvDNmZGyiWfU586X4BKs++BAj7e/FsAfno0Hd
hN9FwpCNFSox30L03nQvLYJE7f/WqigwBeMRT7Op/xvFks4sT70xP2HRYv4KqP9a
WRcKU6cFH8VxhFhqM2txEIxZKdFLaL28yT7bEDmcglf4JLDdgNMb9rET1dkgtKE6
dOaJHPGjf1uvnOH4YwkQr7n4sLUR3Kdbh0ZJAFuQVDZulo+LLzxBBkqJJcB6FhF+
oXCdHTKZnqAhpWDz+NXYytAmevab6IYm5TWPWsJUv1YKJA5lg2mXbbloIZlN9Mgc
i9fi03bdw+crAgMBAAEWB3Rlc3RpbmcwDQYJKoZIhvcNAQEEBQADggEBALyUvP/o
pPSoWBlorFyZ2RnGwKf9qMpE0q2IJP7G3oDR4LyK/m933DUiZ+YnqThrH/CWb4Ek
y5I3OCyl3S4wCuU1ibZZwDVwYShr5ELp0J9PEf7qMQZOhNsizoC7k+Czb2xB6hYW
sKfsfTKm3cXBtH3fdgc/Z1Z7VSWnAzYo38snqm72NTf5yFRnrQdphNNXi+kn1zHA
lxXRyFDXHOcYsOnwAWfyXFA4QDHQ0ezz0UoCY8gJXovcZb4GRYqOLUAsF2HcNboy
29WN8VqE29sL9QxVZFlwMcqyoLcNnyw38GvNvAGqSvzzbnEFP2MAQXJVe0H0hdp/
MML5G2iNVgNozAo=

参见

  • openssl_spki_new()
  • openssl_spki_export_challenge() - Exports the challenge assoicated with a signed public key and challenge
  • openssl_spki_export() - Exports a valid PEM formatted public key signed public key and challenge
  • openssl_csr_new() - Generates a CSR
  • openssl_csr_sign() - Sign a CSR with another certificate (or itself) and generate a certificate

openssl_spki_export
openssl_spki_verify
OpenSSL 函数


Verifies a signed public key and challenge

openssl_spki_new
openssl_verify
OpenSSL 函数
PHP Manual

openssl_spki_verify

(PHP 5 >= 5.6.0, PHP 7)

openssl_spki_verify — Verifies a signed public key and challenge

说明

string openssl_spki_verify ( string &$spkac )

Validates the supplied signed public key and challenge

参数

spkac

Expects a valid signed public key and challenge

返回值

Returns a boolean on success or failure.

错误／异常

Emits an E_WARNING level error if an invalid argument is passed via the spkac parameter.

范例

Example #1 openssl_spki_verify() example

Validates an existing signed public key and challenge

<?php
$pkey = openssl_pkey_new('secret password');
$spkac = openssl_spki_new($pkey, 'challenge string');

if (openssl_spki_verify(preg_replace('/SPKAC=/', '', $spkac))) {
    echo $spkac;
} else {
    echo "SPKAC validation failed";
}
?>

Example #2 openssl_spki_verify() example from <keygen>

Validates an existing signed public key and challenge issued from the <keygen> element

<?php
if (openssl_spki_verify(preg_replace('/SPKAC=/', '', $_POST['spkac']))) {
    echo $spkac;
} else {
    echo "SPKAC validation failed";
}
?>
<keygen name="spkac" challenge="challenge string" keytype="RSA">

参见

  • openssl_spki_new() - Generate a new signed public key and challenge
  • openssl_spki_export_challenge() - Exports the challenge assoicated with a signed public key and challenge
  • openssl_spki_export() - Exports a valid PEM formatted public key signed public key and challenge
  • openssl_md_method()
  • openssl_csr_new() - Generates a CSR
  • openssl_csr_sign() - Sign a CSR with another certificate (or itself) and generate a certificate

openssl_spki_new
openssl_verify
OpenSSL 函数


Verify signature

openssl_spki_verify
openssl_x509_check_private_key
OpenSSL 函数
PHP Manual

openssl_verify

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

openssl_verify — Verify signature

说明

int openssl_verify ( string $data , string $signature , mixed $pub_key_id [, mixed $signature_alg = OPENSSL_ALGO_SHA1 ] )

openssl_verify() verifies that the signature is correct for the specified data using the public key associated with pub_key_id. This must be the public key corresponding to the private key used for signing.

参数

data

The string of data used to generate the signature previously

signature

A raw binary string, generated by openssl_sign() or similar means

pub_key_id

resource - a key, returned by openssl_get_publickey()

string - a PEM formatted key, example, "-----BEGIN PUBLIC KEY----- MIIBCgK..."

signature_alg

int - one of these Signature Algorithms.

string - a valid string returned by openssl_get_md_methods() example, "sha1WithRSAEncryption" or "sha512".

返回值

Returns 1 if the signature is correct, 0 if it is incorrect, and -1 on error.

更新日志

版本 | 说明
5.2.0 | The signature_alg parameter was added.

范例

Example #1 openssl_verify() example

<?php
// $data and $signature are assumed to contain the data and the signature

// fetch public key from certificate and ready it
$pubkeyid = openssl_pkey_get_public("file://src/openssl-0.9.6/demos/sign/cert.pem");

// state whether signature is okay or not
$ok = openssl_verify($data, $signature, $pubkeyid);
if ($ok == 1) {
    echo "good";
} elseif ($ok == 0) {
    echo "bad";
} else {
    echo "ugly, error checking signature";
}
// free the key from memory
openssl_free_key($pubkeyid);
?>

Example #2 openssl_verify() example

<?php
//data you want to sign
$data = 'my data';

//create new private and public key
$private_key_res = openssl_pkey_new(array(
    "private_key_bits" => 2048,
    "private_key_type" => OPENSSL_KEYTYPE_RSA,
));
$details = openssl_pkey_get_details($private_key_res);
$public_key_res = openssl_pkey_get_public($details['key']);

//create signature
openssl_sign($data, $signature, $private_key_res, "sha1WithRSAEncryption");

//verify signature
$ok = openssl_verify($data, $signature, $public_key_res, OPENSSL_ALGO_SHA1);
if ($ok == 1) {
    echo "valid";
} elseif ($ok == 0) {
    echo "invalid";
} else {
    echo "error: ".openssl_error_string();
}
?>

参见

  • openssl_sign() - Generate signature

openssl_spki_verify
openssl_x509_check_private_key
OpenSSL 函数


Checks if a private key corresponds to a certificate

openssl_verify
openssl_x509_checkpurpose
OpenSSL 函数
PHP Manual

openssl_x509_check_private_key

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

openssl_x509_check_private_key — Checks if a private key corresponds to a certificate

说明

bool openssl_x509_check_private_key ( mixed $cert , mixed $key )

Checks whether the given key is the private key that corresponds to cert.

参数

cert

The certificate.

key

The private key.

返回值

Returns TRUE if key is the private key that corresponds to cert, or FALSE otherwise.

openssl_verify
openssl_x509_checkpurpose
OpenSSL 函数


Verifies if a certificate can be used for a particular purpose

openssl_x509_check_private_key
openssl_x509_export_to_file
OpenSSL 函数
PHP Manual

openssl_x509_checkpurpose

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

openssl_x509_checkpurpose — Verifies if a certificate can be used for a particular purpose

说明

int openssl_x509_checkpurpose ( mixed $x509cert , int $purpose [, array $cainfo = array() [, string $untrustedfile ]] )

openssl_x509_checkpurpose() examines a certificate to see if it can be used for the specified purpose.

参数

x509cert

The examined certificate.

purpose

openssl_x509_checkpurpose() purposes
Constant | Description
X509_PURPOSE_SSL_CLIENT | Can the certificate be used for the client side of an SSL connection?
X509_PURPOSE_SSL_SERVER | Can the certificate be used for the server side of an SSL connection?
X509_PURPOSE_NS_SSL_SERVER | Can the cert be used for Netscape SSL server?
X509_PURPOSE_SMIME_SIGN | Can the cert be used to sign S/MIME email?
X509_PURPOSE_SMIME_ENCRYPT | Can the cert be used to encrypt S/MIME email?
X509_PURPOSE_CRL_SIGN | Can the cert be used to sign a certificate revocation list (CRL)?
X509_PURPOSE_ANY | Can the cert be used for Any/All purposes?
These options are not bitfields - you may specify one only!

cainfo

cainfo should be an array of trusted CA files/dirs as described in Certificate Verification.

untrustedfile

If specified, this should be the name of a PEM encoded file holding certificates that can be used to help verify the certificate, although no trust is placed in the certificates that come from that file.

返回值

Returns TRUE if the certificate can be used for the intended purpose, FALSE if it cannot, or -1 on error.

openssl_x509_check_private_key
openssl_x509_export_to_file
OpenSSL 函数


Exports a certificate to file

openssl_x509_checkpurpose
openssl_x509_export
OpenSSL 函数
PHP Manual

openssl_x509_export_to_file

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

openssl_x509_export_to_file — Exports a certificate to file

说明

bool openssl_x509_export_to_file ( mixed $x509 , string $outfilename [, bool $notext = TRUE ] )

openssl_x509_export_to_file() stores x509 into a file named by outfilename in a PEM encoded format.

参数

x509

参见密钥／证书参数以获取有效值列表。

outfilename

Path to the output file.

notext

可选参数 notext 影响输出的冗余度。如果设为 FALSE，输出内容将包含附加的人类可读信息。notext 的缺省值为 TRUE。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

openssl_x509_checkpurpose
openssl_x509_export
OpenSSL 函数


Exports a certificate as a string

openssl_x509_export_to_file
openssl_x509_fingerprint
OpenSSL 函数
PHP Manual

openssl_x509_export

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

openssl_x509_export — Exports a certificate as a string

说明

bool openssl_x509_export ( mixed $x509 , string &$output [, bool $notext = TRUE ] )

openssl_x509_export() stores x509 into a string named by output in a PEM encoded format.

参数

x509

参见密钥／证书参数以获取有效值列表。

output

On success, this will hold the PEM.

notext

可选参数 notext 影响输出的冗余度。如果设为 FALSE，输出内容将包含附加的人类可读信息。notext 的缺省值为 TRUE。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

openssl_x509_export_to_file
openssl_x509_fingerprint
OpenSSL 函数


Calculates the fingerprint, or digest, of a given X.509 certificate

openssl_x509_export
openssl_x509_free
OpenSSL 函数
PHP Manual

openssl_x509_fingerprint

(PHP 5.6, PHP 7)

openssl_x509_fingerprint — Calculates the fingerprint, or digest, of a given X.509 certificate

说明

bool openssl_x509_fingerprint ( mixed $x509 [, string $hash_algorithm = "sha1" [, bool $raw_output = FALSE ]] )

openssl_x509_fingerprint() returns the digest of x509 as a string.

参数

x509

参见密钥／证书参数以获取有效值列表。

hash_algorithm

The hash algorithm to use, e.g. "md5" or "sha1"

raw_output

When set to TRUE, outputs raw binary data. FALSE outputs lowercase hexits.

返回值

Returns a string containing the calculated certificate fingerprint as lowercase hexits unless raw_output is set to TRUE in which case the raw binary representation of the message digest is returned.

Returns FALSE on failure.

openssl_x509_export
openssl_x509_free
OpenSSL 函数


Free certificate resource

openssl_x509_fingerprint
openssl_x509_parse
OpenSSL 函数
PHP Manual

openssl_x509_free

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

openssl_x509_free — Free certificate resource

说明

void openssl_x509_free ( resource $x509cert )

openssl_x509_free() frees the certificate associated with the specified x509cert resource from memory.

参数

x509cert

返回值

没有返回值。

openssl_x509_fingerprint
openssl_x509_parse
OpenSSL 函数


Parse an X509 certificate and return the information as an array

openssl_x509_free
openssl_x509_read
OpenSSL 函数
PHP Manual

openssl_x509_parse

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

openssl_x509_parse — Parse an X509 certificate and return the information as an array

说明

array openssl_x509_parse ( mixed $x509cert [, bool $shortnames = true ] )

openssl_x509_parse() returns information about the supplied x509cert, including fields such as subject name, issuer name, purposes, valid from and valid to dates etc.

参数

x509cert

shortnames

shortnames controls how the data is indexed in the array - if shortnames is TRUE (the default) then fields will be indexed with the short name form, otherwise, the long name form will be used - e.g.: CN is the shortname form of commonName.

返回值

The structure of the returned data is (deliberately) not yet documented, as it is still subject to change.

openssl_x509_free
openssl_x509_read
OpenSSL 函数


Parse an X.509 certificate and return a resource identifier for it

openssl_x509_parse
Password Hashing
OpenSSL 函数
PHP Manual

openssl_x509_read

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

openssl_x509_read — Parse an X.509 certificate and return a resource identifier for it

说明

resource openssl_x509_read ( mixed $x509certdata )

openssl_x509_read() parses the certificate supplied by x509certdata and returns a resource identifier for it.

参数

x509certdata

返回值

Returns a resource identifier on success 或者在失败时返回 FALSE.

openssl_x509_parse
Password Hashing
OpenSSL 函数


Password Hashing

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Password Hashing 函数
    • password_get_info — Returns information about the given hash
    • password_hash — 创建密码的哈希（hash）
    • password_needs_rehash — Checks if the given hash matches the given options
    • password_verify — 验证密码是否和哈希匹配
openssl_x509_read
简介
加密扩展


简介

The password hashing API provides an easy to use wrapper around crypt() to make it easy to create and manage passwords in a secure manner.

This extension is available since PHP 5.5.0 but there is also an » userland implementation for PHP >= 5.3.7.

Password Hashing
安装／配置
Password Hashing


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Password Hashing


预定义常量

下列常量作为 PHP 核心的一部分总是可用的。

PASSWORD_BCRYPT (integer)

PASSWORD_BCRYPT is used to create new password hashes using the CRYPT_BLOWFISH algorithm.

This will always result in a hash using the "$2y$" crypt format, which is always 60 characters wide.

Supported Options:

  • salt - to manually provide a salt to use when hashing the password. Note that this will override and prevent a salt from being automatically generated.

    If omitted, a random salt will be generated by password_hash() for each password hashed. This is the intended mode of operation.

  • cost - which denotes the algorithmic cost that should be used. Examples of these values can be found on the crypt() page.

    If ommitted, a default value of 10 will be used. This is a good baseline cost, but you may want to consider increasing it depending on your hardware.

PASSWORD_DEFAULT (integer)

The default algorithm to use for hashing if no algorithm is provided. This may change in newer PHP releases when newer, stronger hashing algorithms are supported.

It is worth noting that over time this constant can (and likely will) change. Therefore you should be aware that the length of the resulting hash can change. Therefore, if you use PASSWORD_DEFAULT you should store the resulting hash in a way that can store more than 60 characters (255 is the recomended width).

Values for this constant:

  • PHP 5.5.0 - PASSWORD_BCRYPT

资源类型
Password Hashing 函数
Password Hashing


Password Hashing 函数

Table of Contents

  • password_get_info — Returns information about the given hash
  • password_hash — 创建密码的哈希（hash）
  • password_needs_rehash — Checks if the given hash matches the given options
  • password_verify — 验证密码是否和哈希匹配
预定义常量
password_get_info
Password Hashing


Returns information about the given hash

Password Hashing 函数
password_hash
Password Hashing 函数
PHP Manual

password_get_info

(PHP 5 >= 5.5.0, PHP 7)

password_get_info — Returns information about the given hash

说明

array password_get_info ( string $hash )

When passed in a valid hash created by an algorithm supported by password_hash(), this function will return an array of information about that hash.

参数

hash

一个由 password_hash() 创建的散列值。

返回值

Returns an associative array with three elements:

  • algo, which will match a password algorithm constant
  • algoName, which has the human readable name of the algorithm
  • options, which includes the options provided when calling password_hash()

Password Hashing 函数
password_hash
Password Hashing 函数


创建密码的哈希（hash）

password_get_info
password_needs_rehash
Password Hashing 函数
PHP Manual

password_hash

(PHP 5 >= 5.5.0, PHP 7)

password_hash — 创建密码的哈希（hash）

说明

string password_hash ( string $password , integer $algo [, array $options ] )

password_hash() 使用足够强度的单向散列算法创建密码的哈希（hash）。

password_hash() 兼容 crypt()。
所以， crypt() 创建的密码哈希也可用于
password_hash()。

当前支持的算法：

  • PASSWORD_DEFAULT - 使用 bcrypt 算法 (PHP 5.5.0 默认)。 注意，该常量会随着 PHP 加入更新更高强度的算法而改变。 所以，使用此常量生成结果的长度将在未来有变化。 因此，数据库里储存结果的列可超过60个字符（最好是255个字符）。
  • PASSWORD_BCRYPT - 使用 CRYPT_BLOWFISH 算法创建哈希。 这会产生兼容使用 "$2y$" 的 crypt()。 结果将会是 60 个字符的字符串， 或者在失败时返回 FALSE。

    支持的选项：

    • salt - 手动提供哈希密码的盐值（salt）。这将避免自动生成盐值（salt）。

      省略此值后，password_hash() 会为每个密码哈希自动生成随机的盐值。这种操作是有意的模式。

      Warning

      盐值（salt）选项从 PHP 7.0.0 开始被废弃（deprecated）了。 现在最好选择简单的使用默认产生的盐值。

    • cost - 代表算法使用的 cost。crypt() 页面上有 cost 值的例子。

      省略时，默认值是 10。 这个 cost 是个不错的底线，但也许可以根据自己硬件的情况，加大这个值。

参数

password

用户的密码。

Caution

使用PASSWORD_BCRYPT 做算法，将使 password 参数最长为72个字符，超过会被截断。

algo

一个用来在散列密码时指示算法的密码算法常量。

options

一个包含有选项的关联数组。目前支持两个选项：salt，在散列密码时加的盐（干扰字符串），以及cost，用来指明算法递归的层数。这两个值的例子可在 crypt() 页面找到。

省略后，将使用随机盐值与默认 cost。

返回值

返回哈希后的密码， 或者在失败时返回 FALSE。

使用的算法、cost 和盐值作为哈希的一部分返回。所以验证哈希值的所有信息都已经包含在内。 这使 password_verify() 函数验证的时候，不需要额外储存盐值或者算法的信息。

范例

Example #1 password_hash() 例子

<?php
/**
 * 我们想要使用默认算法哈希密码
 * 当前是 BCRYPT，并会产生 60 个字符的结果。
 *
 * 请注意，随时间推移，默认算法可能会有变化，
 * 所以需要储存的空间能够超过 60 字（255字不错）
 */
echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT)."\n";
?>

以上例程的输出类似于：

$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a

Example #2 password_hash() 手动设置 cost 的例子

<?php
/**
 * 在这个案例里，我们为 BCRYPT 增加 cost 到 12。
 * 注意，我们已经切换到了，将始终产生 60 个字符。
 */
$options = [
    'cost' => 12,
];
echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options)."\n";
?>

以上例程的输出类似于：

$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K

Example #3 password_hash() 手动设置盐值的例子

<?php
/**
 * 注意，这里的盐值是随机产生的。
 * 永远都不要使用固定盐值，或者不是随机生成的盐值。
 *
 * 绝大多数情况下，可以让 password_hash generate 为你自动产生随机盐值
 */
$options = [
    'cost' => 11,
    'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
];
echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options)."\n";
?>

以上例程的输出类似于：

$2y$11$q5MkhSBtlsJcNEVsYh64a.aCluzHnGog7TQAKVmQwO9C8xb.t89F.

Example #4 password_hash() example finding a good cost

<?php
/**
 * 这个例子对服务器做了基准测试（benchmark），检测服务器能承受多高的 cost
 * 在不明显拖慢服务器的情况下可以设置最高的值
 * 8-10 是个不错的底线，在服务器够快的情况下，越高越好。
 * 以下代码目标为  ≤ 50 毫秒（milliseconds），
 * 适合系统处理交互登录。
 */
$timeTarget = 0.05; // 50 毫秒（milliseconds）

$cost = 8;
do {
    $cost++;
    $start = microtime(true);
    password_hash("test", PASSWORD_BCRYPT, ["cost" => $cost]);
    $end = microtime(true);
} while (($end - $start) < $timeTarget);

echo "Appropriate Cost Found: " . $cost . "\n";
?>

以上例程的输出类似于：

Appropriate Cost Found: 10

注释

Caution

强烈建议不要自己为这个函数生成盐值（salt）。只要不设置，它会自动创建安全的盐值。

就像以上提及的，在 PHP 7.0 提供 salt选项会导致废弃（deprecation）警告。 未来的 PHP 发行版里，手动提供盐值的功能可能会被删掉。

Note:

在交互的系统上，推荐在自己的服务器上测试此函数，调整 cost 参数直至函数时间开销小于 100 毫秒（milliseconds）。 上面脚本的例子会帮助选择合适硬件的最佳 cost。

Note: 这个函数更新支持的算法时（或修改默认算法），必定会遵守以下规则：

  • 任何内核中的新算法必须在经历一次 PHP 完整发行才能成为默认算法。 比如，在 PHP 7.5.5 中添加的新算法，在 PHP 7.7 之前不能成为默认算法 （由于 7.6 是第一个完整发行版）。 但如果是在 7.6.0 里添加的不同算法，在 7.7.0 里也可以成为默认算法。
  • 仅仅允许在完整发行版中修改默认算法（比如 7.3.0, 8.0.0，等等），不能是在修订版。 唯一的例外是：在当前默认算法里发现了紧急的安全威胁。

参见

  • password_verify() - 验证密码是否和哈希匹配
  • crypt() - 单向字符串散列
  • » 用户的使用

password_get_info
password_needs_rehash
Password Hashing 函数


Checks if the given hash matches the given options

password_hash
password_verify
Password Hashing 函数
PHP Manual

password_needs_rehash

(PHP 5 >= 5.5.0, PHP 7)

password_needs_rehash — Checks if the given hash matches the given options

说明

boolean password_needs_rehash ( string $hash , integer $algo [, array $options ] )

This function checks to see if the supplied hash implements the algorithm and options provided. If not, it is assumed that the hash needs to be rehashed.

参数

hash

一个由 password_hash() 创建的散列值。

algo

一个用来在散列密码时指示算法的密码算法常量。

options

一个包含有选项的关联数组。目前支持两个选项：salt，在散列密码时加的盐（干扰字符串），以及cost，用来指明算法递归的层数。这两个值的例子可在 crypt() 页面找到。

范例

Example #1 Usage of password_needs_rehash()

<?php

$password = 'rasmuslerdorf';
$hash = '$2y$10$YCFsG6elYca568hBi2pZ0.3LDL5wjgxct1N8w/oLR/jfHsiQwCqTS';

// The cost parameter can change over time as hardware improves
$options = array('cost' => 11);

// Verify stored hash against plain-text password
if (password_verify($password, $hash)) {
    // Check if a newer hashing algorithm is available
    // or the cost has changed
    if (password_needs_rehash($hash, PASSWORD_DEFAULT, $options)) {
        // If so, create a new hash, and replace the old one
        $newHash = password_hash($password, PASSWORD_DEFAULT, $options);
    }

    // Log user in
}
?>

返回值

Returns TRUE if the hash should be rehashed to match the given algo and options, or FALSE otherwise.

password_hash
password_verify
Password Hashing 函数


验证密码是否和哈希匹配

password_needs_rehash
数据库扩展
Password Hashing 函数
PHP Manual

password_verify

(PHP 5 >= 5.5.0, PHP 7)

password_verify — 验证密码是否和哈希匹配

说明

boolean password_verify ( string $password , string $hash )

验证密码是否和指定的哈希值匹配。

注意 password_hash() 返回的哈希包含了算法、 cost 和盐值。 因此，所有需要的信息都包含内。使得验证函数不需要储存额外盐值等信息即可验证哈希。

时序攻击（timing attacks）对此函数不起作用。

参数

password

用户的密码。

hash

一个由 password_hash() 创建的散列值。

返回值

如果密码和哈希匹配则返回 TRUE，否则返回 FALSE 。

范例

Example #1 password_verify() 例子

<?php
// 想知道以下字符从哪里来，可参见 password_hash() 的例子
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';

if (password_verify('rasmuslerdorf', $hash)) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}
?>

以上例程会输出：

Password is valid!

参见

  • password_hash() - 创建密码的哈希（hash）
  • » 用户使用

password_needs_rehash
数据库扩展
Password Hashing 函数


数据库扩展

  • 数据库抽象层
    • DBA — Database (dbm-style) Abstraction Layer
    • dbx
    • ODBC — ODBC (Unified)
    • PDO — PHP 数据对象
  • 针对各数据库系统对应的扩展
    • CUBRID
    • DB++
    • dBase
    • filePro
    • Firebird/InterBase
    • FrontBase
    • IBM DB2 — IBM DB2, Cloudscape and Apache Derby
    • Informix
    • Ingres — Ingres DBMS, EDBC, and Enterprise Access Gateways
    • MaxDB
    • Mongo — MongoDB
    • MongoDB — MongoDB driver
    • mSQL
    • Mssql — Microsoft SQL Server
    • MySQL — MySQL Drivers and Plugins
    • OCI8 — Oracle OCI8
    • Paradox — Paradox File Access
    • PostgreSQL
    • SQLite
    • SQLite3
    • SQLSRV — Microsoft SQL Server Driver for PHP
    • Sybase
    • tokyo_tyrant
password_verify
数据库抽象层
函数参考


数据库抽象层

  • DBA — Database (dbm-style) Abstraction Layer
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • DBA 函数
  • dbx
    • 简介
    • 安装／配置
    • 预定义常量
    • dbx 函数
  • ODBC — ODBC (Unified)
    • 简介
    • 安装／配置
    • 预定义常量
    • ODBC 函数
  • PDO — PHP 数据对象
    • 简介
    • 安装／配置
    • 预定义常量
    • 连接与连接管理
    • 事务与自动提交
    • 预处理语句与存储过程
    • 错误与错误处理
    • 大对象 (LOBs)
    • PDO — PDO 类
    • PDOStatement — PDOStatement 类
    • PDOException — PDOException 异常类
    • PDO 驱动
数据库扩展
DBA
数据库扩展


Database (dbm-style) Abstraction Layer

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Basic usage
  • DBA 函数
    • dba_close — Close a DBA database
    • dba_delete — Delete DBA entry specified by key
    • dba_exists — Check whether key exists
    • dba_fetch — Fetch data specified by key
    • dba_firstkey — Fetch first key
    • dba_handlers — List all the handlers available
    • dba_insert — Insert entry
    • dba_key_split — Splits a key in string representation into array representation
    • dba_list — List all open database files
    • dba_nextkey — Fetch next key
    • dba_open — Open database
    • dba_optimize — Optimize database
    • dba_popen — Open database persistently
    • dba_replace — Replace or insert entry
    • dba_sync — Synchronize database
数据库抽象层
简介
数据库抽象层


简介

These functions build the foundation for accessing Berkeley DB style databases.

This is a general abstraction layer for several file-based databases. As such, functionality is limited to a common subset of features supported by modern databases such as » Oracle Berkeley DB.

DBA
安装／配置
DBA


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
DBA


需求

The behaviour of various aspects depends on the implementation of the underlying database. Functions such as dba_optimize() and dba_sync() will do what they promise for one database and will do nothing for others. You have to download and install supported dba-Handlers.

List of DBA handlers
Handler | Notes
dbm | Dbm is the oldest (original) type of Berkeley DB style databases. You should avoid it, if possible. We do not support the compatibility functions built into DB2 and gdbm, because they are only compatible on the source code level, but cannot handle the original dbm format.
ndbm | Ndbm is a newer type and more flexible than dbm. It still has most of the arbitrary limits of dbm (therefore it is deprecated).
gdbm | Gdbm is the » GNU database manager.
db2 | DB2 is for » Oracle Berkeley DB 2. It is described as "a programmatic toolkit that provides high-performance built-in database support for both standalone and client/server applications.
db3 | DB3 is for » Oracle Berkeley DB 3.
db4 | DB4 is for » Oracle Berkeley DB 4 or 5. This option is available from PHP 4.3.2. It can be used with BDB 5 from PHP 5.3.3.
cdb | Cdb is "a fast, reliable, lightweight package for creating and reading constant databases." It is from the author of qmail and can be found at » http://cr.yp.to/cdb.html. Since it is constant, we support only reading operations. And since PHP 4.3.0 we support writing (not updating) through the internal cdb library.
cdb_make | Since PHP 4.3.0 we support creation (not updating) of cdb files when the bundled cdb library is used.
flatfile | This is available since PHP 4.3.0 for compatibility with the deprecated dbm extension only and should be avoided. However you may use this where files were created in this format. That happens when configure could not find any external library.
inifile | This is available since PHP 4.3.3 to be able to modify php.ini files from within PHP scripts. When working with ini files you can pass arrays of the form array(0=>group,1=>value_name) or strings of the form "[group]value_name" where group is optional. As the functions dba_firstkey() and dba_nextkey() return string representations of the key there is a new function dba_key_split() available since PHP 5 which allows to convert the string keys into array keys without loosing FALSE.
qdbm | This is available since PHP 5.0.0. The qdbm library can be loaded from » http://fallabs.com/qdbm/index.html.
tcadb | This is available since PHP 5.4.0. The Tokyo Cabinet library can be loaded from » http://fallabs.com/tokyocabinet/.

When invoking the dba_open() or dba_popen() functions, one of the handler names must be supplied as an argument. The actually available list of handlers is displayed by invoking phpinfo() or dba_handlers().

安装／配置
安装
安装／配置


安装

By using the --enable-dba=shared configuration option you can build a dynamic loadable module to enable PHP for basic support of dbm-style databases. You also have to add support for at least one of the following handlers by specifying the --with-XXXX configure switch to your PHP configure line.

Warning

After configuring and compiling PHP you must execute the following test from commandline: php run-tests.php ext/dba. This shows whether your combination of handlers works. Most problematic are dbm and ndbm which conflict with many installations. The reason for this is that on several systems these libraries are part of more than one other library. The configuration test only prevents you from configuring malfunctioning single handlers but not combinations.

Supported DBA handlers
Handler | Configure Switch
dbm

To enable support for dbm add --with-dbm[=DIR] .

Note:

dbm normally is a wrapper which often results in failures. This means you should only use dbm if you are sure it works and if you really need this format.

ndbm

To enable support for ndbm add --with-ndbm[=DIR] .

Note:

ndbm normally is a wrapper which often results in failures. This means you should only use ndbm if you are sure it works and if you really need this format.

gdbm | To enable support for gdbm add --with-gdbm[=DIR] .
db2

To enable support for Oracle Berkeley DB 2 add --with-db2[=DIR] .

Note:

db2 conflicts with db3 and db4.

db3

To enable support for Oracle Berkeley DB 3 add --with-db3[=DIR] .

Note:

db3 conflicts with db2 and db4.

db4

To enable support for Oracle Berkeley DB 4 or 5 add --with-db4[=DIR] .

Note:

db4 conflicts with db2 and db3.

Note:

The db4 option was added in PHP 4.3.2. In earlier versions of PHP you need to use --with-db3=DIR with DIR being the path to db4 library. It is not possible to use db versions starting from 4.1 with PHP prior to version 4.3.0. Also, the db libraries with versions 4.1 through 4.1.24 cannot be used in any PHP version.

Support for BDB 5 was added in PHP 5.3.3.

cdb

To enable support for cdb add --with-cdb[=DIR] .

Note:

Since PHP 4.3.0 you can omit DIR to use the bundled cdb library that adds the cdb_make handler which allows creation of cdb files and allows to access cdb files on the network using PHP's streams.

flatfile

To enable support for flatfile add --with-flatfile .

Note:

This was added in PHP 4.3.0 to add compatibility with deprecated dbm extension. Use this handler only when you cannot install one of the libraries required by the other handlers and when you cannot use bundled cdb handler.

inifile

To enable support for inifile add --with-inifile .

Note:

This was added in PHP 5.0.0 and allows to read and set microsoft style .ini files (like the php.ini file).

qdbm

To enable support for qdbm add --with-qdbm[=DIR] .

Note:

qdbm conflicts with dbm and gdbm.

Note:

This was added in PHP 5.0.0. The qdbm library can be loaded from » http://fallabs.com/qdbm/index.html.

tcadb

To enable support for Tokyo Cabinet add --with-tcadb[=DIR] .

Note:

This was added in PHP 5.4.0. The Tokyo Cabinet library can be loaded from » http://fallabs.com/tokyocabinet/.

Note:

Up to PHP 4.3.0 you are able to add both db2 and db3 handler but only one of them can be used internally. That means that you cannot have both file formats. Starting with PHP 5.0.0 there is a configuration check avoid such misconfigurations.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

DBA 配置选项
名字 | 默认 | 可修改范围 | 更新日志
dba.default_handler | DBA_DEFAULT | PHP_INI_ALL |

这是配置指令的简短说明。

dba.default_handler string

The name of the default handler

安装
资源类型
安装／配置


资源类型

The functions dba_open() and dba_popen() return a handle to the specified database file to access which is used by all other dba-function calls.

运行时配置
预定义常量
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
范例
DBA


范例

Table of Contents

  • Basic usage
预定义常量
Basic usage
DBA


Basic usage

Example #1 DBA example

<?php

$id = dba_open("/tmp/test.db", "n", "db2");

if (!$id) {
    echo "dba_open failed\n";
    exit;
}

dba_replace("key", "This is an example!", $id);

if (dba_exists("key", $id)) {
    echo dba_fetch("key", $id);
    dba_delete("key", $id);
}

dba_close($id);
?>

DBA is binary safe and does not have any arbitrary limits. However, it inherits all limits set by the underlying database implementation.

All file-based databases must provide a way of setting the file mode of a new created database, if that is possible at all. The file mode is commonly passed as the fourth argument to dba_open() or dba_popen().

You can access all entries of a database in a linear way by using the dba_firstkey() and dba_nextkey() functions. You may not change the database while traversing it.

Example #2 Traversing a database

<?php

// ...open database...

$key = dba_firstkey($id);

while ($key !== false) {
    if (true) {          // remember the key to perform some action later
        $handle_later[] = $key;
    }
    $key = dba_nextkey($id);
}

foreach ($handle_later as $val) {
    dba_delete($val, $id);
}

?>

范例
DBA 函数
范例


DBA 函数

Table of Contents

  • dba_close — Close a DBA database
  • dba_delete — Delete DBA entry specified by key
  • dba_exists — Check whether key exists
  • dba_fetch — Fetch data specified by key
  • dba_firstkey — Fetch first key
  • dba_handlers — List all the handlers available
  • dba_insert — Insert entry
  • dba_key_split — Splits a key in string representation into array representation
  • dba_list — List all open database files
  • dba_nextkey — Fetch next key
  • dba_open — Open database
  • dba_optimize — Optimize database
  • dba_popen — Open database persistently
  • dba_replace — Replace or insert entry
  • dba_sync — Synchronize database
Basic usage
dba_close
DBA


Close a DBA database

DBA 函数
dba_delete
DBA 函数
PHP Manual

dba_close

(PHP 4, PHP 5, PHP 7)

dba_close — Close a DBA database

说明

void dba_close ( resource $handle )

dba_close() closes the established database and frees all resources of the specified database handle.

参数

handle

The database handler, returned by dba_open() or dba_popen().

返回值

没有返回值。

参见

  • dba_open() - Open database
  • dba_popen() - Open database persistently

DBA 函数
dba_delete
DBA 函数


Delete DBA entry specified by key

dba_close
dba_exists
DBA 函数
PHP Manual

dba_delete

(PHP 4, PHP 5, PHP 7)

dba_delete — Delete DBA entry specified by key

说明

bool dba_delete ( string $key , resource $handle )

dba_delete() deletes the specified entry from the database.

参数

key

The key of the entry which is deleted.

handle

The database handler, returned by dba_open() or dba_popen().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • dba_exists() - Check whether key exists
  • dba_fetch() - Fetch data specified by key
  • dba_insert() - Insert entry
  • dba_replace() - Replace or insert entry

dba_close
dba_exists
DBA 函数


Check whether key exists

dba_delete
dba_fetch
DBA 函数
PHP Manual

dba_exists

(PHP 4, PHP 5, PHP 7)

dba_exists — Check whether key exists

说明

bool dba_exists ( string $key , resource $handle )

dba_exists() checks whether the specified key exists in the database.

参数

key

The key the check is performed for.

handle

The database handler, returned by dba_open() or dba_popen().

返回值

Returns TRUE if the key exists, FALSE otherwise.

参见

  • dba_delete() - Delete DBA entry specified by key
  • dba_fetch() - Fetch data specified by key
  • dba_insert() - Insert entry
  • dba_replace() - Replace or insert entry

dba_delete
dba_fetch
DBA 函数


Fetch data specified by key

dba_exists
dba_firstkey
DBA 函数
PHP Manual

dba_fetch

(PHP 4, PHP 5, PHP 7)

dba_fetch — Fetch data specified by key

说明

string dba_fetch ( string $key , resource $handle )
string dba_fetch ( string $key , int $skip , resource $handle )

dba_fetch() fetches the data specified by key from the database specified with handle.

参数

key

The key the data is specified by.

Note:

When working with inifiles this function accepts arrays as keys where index 0 is the group and index 1 is the value name. See: dba_key_split().

skip

The number of key-value pairs to ignore when using cdb databases. This value is ignored for all other databases which do not support multiple keys with the same name.

handle

The database handler, returned by dba_open() or dba_popen().

返回值

Returns the associated string if the key/data pair is found, FALSE otherwise.

更新日志

版本 | 说明
4.3.0 | The skip parameter is available to support cdb's capability of multiple keys having the same name.

参见

  • dba_exists() - Check whether key exists
  • dba_delete() - Delete DBA entry specified by key
  • dba_insert() - Insert entry
  • dba_replace() - Replace or insert entry
  • dba_key_split() - Splits a key in string representation into array representation

dba_exists
dba_firstkey
DBA 函数


Fetch first key

dba_fetch
dba_handlers
DBA 函数
PHP Manual

dba_firstkey

(PHP 4, PHP 5, PHP 7)

dba_firstkey — Fetch first key

说明

string dba_firstkey ( resource $handle )

dba_firstkey() returns the first key of the database and resets the internal key pointer. This permits a linear search through the whole database.

参数

handle

The database handler, returned by dba_open() or dba_popen().

返回值

Returns the key on success 或者在失败时返回 FALSE.

参见

  • dba_nextkey() - Fetch next key
  • dba_key_split() - Splits a key in string representation into array representation
  • Example 2 in the DBA examples

dba_fetch
dba_handlers
DBA 函数


List all the handlers available

dba_firstkey
dba_insert
DBA 函数
PHP Manual

dba_handlers

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

dba_handlers — List all the handlers available

说明

array dba_handlers ([ bool $full_info = false ] )

dba_handlers() list all the handlers supported by this extension.

参数

full_info

Turns on/off full information display in the result.

返回值

Returns an array of database handlers. If full_info is set to TRUE, the array will be associative with the handlers names as keys, and their version information as value. Otherwise, the result will be an indexed array of handlers names.

Note:

When the internal cdb library is used you will see cdb and cdb_make.

范例

Example #1 dba_handlers() Example

<?php

echo "Available DBA handlers:\n";
foreach (dba_handlers(true) as $handler_name => $handler_version) {
  // clean the versions
  $handler_version = str_replace('$', '', $handler_version);
  echo " - $handler_name: $handler_version\n";
}

?>

以上例程的输出类似于：

Available DBA handlers:
 - cdb: 0.75, Revision: 1.3.2.3
 - cdb_make: 0.75, Revision: 1.2.2.4
 - db2: Sleepycat Software: Berkeley DB 2.7.7: (08/20/99)
 - inifile: 1.0, Revision: 1.6.2.3
 - flatfile: 1.0, Revision: 1.5.2.4

dba_firstkey
dba_insert
DBA 函数


Insert entry

dba_handlers
dba_key_split
DBA 函数
PHP Manual

dba_insert

(PHP 4, PHP 5, PHP 7)

dba_insert — Insert entry

说明

bool dba_insert ( string $key , string $value , resource $handle )

dba_insert() inserts the entry described with key and value into the database.

参数

key

The key of the entry to be inserted. If this key already exist in the database, this function will fail. Use dba_replace() if you need to replace an existent key.

value

The value to be inserted.

handle

The database handler, returned by dba_open() or dba_popen().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • dba_exists() - Check whether key exists
  • dba_delete() - Delete DBA entry specified by key
  • dba_fetch() - Fetch data specified by key
  • dba_replace() - Replace or insert entry

dba_handlers
dba_key_split
DBA 函数


Splits a key in string representation into array representation

dba_insert
dba_list
DBA 函数
PHP Manual

dba_key_split

(PHP 5, PHP 7)

dba_key_split — Splits a key in string representation into array representation

说明

mixed dba_key_split ( mixed $key )

dba_key_split() splits a key (string representation) into an array representation.

参数

key

The key in string representation.

返回值

Returns an array of the form array(0 => group, 1 => value_name). This function will return FALSE if key is NULL or FALSE.

参见

  • dba_firstkey() - Fetch first key
  • dba_nextkey() - Fetch next key
  • dba_fetch() - Fetch data specified by key

dba_insert
dba_list
DBA 函数


List all open database files

dba_key_split
dba_nextkey
DBA 函数
PHP Manual

dba_list

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

dba_list — List all open database files

说明

array dba_list ( void )

dba_list() list all open database files.

返回值

An associative array, in the form resourceid => filename.

dba_key_split
dba_nextkey
DBA 函数


Fetch next key

dba_list
dba_open
DBA 函数
PHP Manual

dba_nextkey

(PHP 4, PHP 5, PHP 7)

dba_nextkey — Fetch next key

说明

string dba_nextkey ( resource $handle )

dba_nextkey() returns the next key of the database and advances the internal key pointer.

参数

handle

The database handler, returned by dba_open() or dba_popen().

返回值

Returns the key on success 或者在失败时返回 FALSE.

参见

  • dba_firstkey() - Fetch first key
  • dba_key_split() - Splits a key in string representation into array representation
  • Example 2 in the DBA examples

dba_list
dba_open
DBA 函数


Open database

dba_nextkey
dba_optimize
DBA 函数
PHP Manual

dba_open

(PHP 4, PHP 5, PHP 7)

dba_open — Open database

说明

resource dba_open ( string $path , string $mode [, string $handler [, mixed $... ]] )

dba_open() establishes a database instance for path with mode using handler.

参数

path

Commonly a regular path in your filesystem.

mode

It is r for read access, w for read/write access to an already existing database, c for read/write access and database creation if it doesn't currently exist, and n for create, truncate and read/write access. The database is created in BTree mode, other modes (like Hash or Queue) are not supported.

Additionally you can set the database lock method with the next char. Use l to lock the database with a .lck file or d to lock the databasefile itself. It is important that all of your applications do this consistently.

If you want to test the access and do not want to wait for the lock you can add t as third character. When you are absolutely sure that you do not require database locking you can do so by using - instead of l or d. When none of d, l or - is used, dba will lock on the database file as it would with d.

Note:

There can only be one writer for one database file. When you use dba on a web server and more than one request requires write operations they can only be done one after another. Also read during write is not allowed. The dba extension uses locks to prevent this. See the following table:

DBA locking
already open | mode = "rl" | mode = "rlt" | mode = "wl" | mode = "wlt" | mode = "rd" | mode = "rdt" | mode = "wd" | mode = "wdt"
not open | ok | ok | ok | ok | ok | ok | ok | ok
mode = "rl" | ok | ok | wait | false | illegal | illegal | illegal | illegal
mode = "wl" | wait | false | wait | false | illegal | illegal | illegal | illegal
mode = "rd" | illegal | illegal | illegal | illegal | ok | ok | wait | false
mode = "wd" | illegal | illegal | illegal | illegal | wait | false | wait | false
  • ok: the second call will be successfull.
  • wait: the second call waits until dba_close() is called for the first.
  • false: the second call returns false.
  • illegal: you must not mix "l" and "d" modifiers for mode parameter.

handler

The name of the handler which shall be used for accessing path. It is passed all optional parameters given to dba_open() and can act on behalf of them.

返回值

Returns a positive handle on success 或者在失败时返回 FALSE.

更新日志

版本 | 说明
4.3.0 | It's possible to open database files over network connection. However in cases a socket connection will be used (as with http or ftp) the connection will be locked instead of the resource itself. This is important to know since in such cases locking is simply ignored on the resource and other solutions have to be found.

参见

  • dba_popen() - Open database persistently
  • dba_close() - Close a DBA database

dba_nextkey
dba_optimize
DBA 函数


Optimize database

dba_open
dba_popen
DBA 函数
PHP Manual

dba_optimize

(PHP 4, PHP 5, PHP 7)

dba_optimize — Optimize database

说明

bool dba_optimize ( resource $handle )

dba_optimize() optimizes the underlying database.

参数

handle

The database handler, returned by dba_open() or dba_popen().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • dba_sync() - Synchronize database

dba_open
dba_popen
DBA 函数


Open database persistently

dba_optimize
dba_replace
DBA 函数
PHP Manual

dba_popen

(PHP 4, PHP 5, PHP 7)

dba_popen — Open database persistently

说明

resource dba_popen ( string $path , string $mode [, string $handler [, mixed $... ]] )

dba_popen() establishes a persistent database instance for path with mode using handler.

参数

path

Commonly a regular path in your filesystem.

mode

It is r for read access, w for read/write access to an already existing database, c for read/write access and database creation if it doesn't currently exist, and n for create, truncate and read/write access.

handler

The name of the handler which shall be used for accessing path. It is passed all optional parameters given to dba_popen() and can act on behalf of them.

返回值

Returns a positive handle on success 或者在失败时返回 FALSE.

参见

  • dba_open() - Open database
  • dba_close() - Close a DBA database

dba_optimize
dba_replace
DBA 函数


Replace or insert entry

dba_popen
dba_sync
DBA 函数
PHP Manual

dba_replace

(PHP 4, PHP 5, PHP 7)

dba_replace — Replace or insert entry

说明

bool dba_replace ( string $key , string $value , resource $handle )

dba_replace() replaces or inserts the entry described with key and value into the database specified by handle.

参数

key

The key of the entry to be replaced.

value

The value to be replaced.

handle

The database handler, returned by dba_open() or dba_popen().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • dba_exists() - Check whether key exists
  • dba_delete() - Delete DBA entry specified by key
  • dba_fetch() - Fetch data specified by key
  • dba_insert() - Insert entry

dba_popen
dba_sync
DBA 函数


Synchronize database

dba_replace
dbx
DBA 函数
PHP Manual

dba_sync

(PHP 4, PHP 5, PHP 7)

dba_sync — Synchronize database

说明

bool dba_sync ( resource $handle )

dba_sync() synchronizes the database. This will probably trigger a physical write to the disk, if supported.

参数

handle

The database handler, returned by dba_open() or dba_popen().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • dba_optimize() - Optimize database

dba_replace
dbx
DBA 函数


dbx

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • dbx 函数
    • dbx_close — Close an open connection/database
    • dbx_compare — Compare two rows for sorting purposes
    • dbx_connect — Open a connection/database
    • dbx_error — Report the error message of the latest function call in the module
    • dbx_escape_string — Escape a string so it can safely be used in an sql-statement
    • dbx_fetch_row — Fetches rows from a query-result that had the DBX_RESULT_UNBUFFERED flag set
    • dbx_query — Send a query and fetch all results (if any)
    • dbx_sort — Sort a result from a dbx_query by a custom sort function
dba_sync
简介
数据库抽象层


简介

The dbx module is a database abstraction layer (db 'X', where 'X' is a supported database). The dbx functions allow you to access all supported databases using a single calling convention. The dbx-functions themselves do not interface directly to the databases, but interface to the modules that are used to support these databases.

Note:

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.1.0.

dbx
安装／配置
dbx


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
dbx


需求

To be able to use a database with the dbx-module, the module must be either linked or loaded into PHP, and the database module must be supported by the dbx-module. Currently, the following databases are supported, but others will follow:

  • FrontBase (available from PHP 4.1.0).
  • Microsoft SQL Server
  • MySQL
  • ODBC
  • PostgreSQL
  • Sybase-CT (available from PHP 4.2.0).
  • Oracle (oci8) (available from PHP 4.3.0).
  • SQLite (PHP 5).

Documentation for adding additional database support to dbx can be found at » http://www.guidance.nl/php/dbx/doc/.

安装／配置
安装
安装／配置


安装

In order to have these functions available, you must compile PHP with dbx support by using the --enable-dbx option and all options for the databases that will be used, e.g. for MySQL you must also specify --with-mysql=[DIR] . To get other supported databases to work with the dbx-module refer to their specific documentation.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

DBX Configuration Options
名字 | 默认 | 可修改范围 | 更新日志
dbx.colnames_case | "unchanged" | PHP_INI_SYSTEM | Available since PHP 4.3.0. Removed in PHP 5.1.0.
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

dbx.colnames_case string

Columns names can be returned "unchanged" or converted to "uppercase" or "lowercase". This directive can be overridden with a flag to dbx_query().

安装
资源类型
安装／配置


资源类型

There are two resource types used in the dbx module. The first one is the link-object for a database connection, the second a result-object which holds the result of a query.

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

DBX_MYSQL (integer)
DBX_ODBC (integer)
DBX_PGSQL (integer)
DBX_MSSQL (integer)
DBX_FBSQL (integer)
DBX_OCI8 (integer) (available from PHP 4.3.0)
DBX_SYBASECT (integer)
DBX_SQLITE (integer) (PHP 5)
DBX_PERSISTENT (integer)
DBX_RESULT_INFO (integer)
DBX_RESULT_INDEX (integer)
DBX_RESULT_ASSOC (integer)
DBX_RESULT_UNBUFFERED (integer) (PHP 5)
DBX_COLNAMES_UNCHANGED (integer) (available from PHP 4.3.0)
DBX_COLNAMES_UPPERCASE (integer) (available from PHP 4.3.0)
DBX_COLNAMES_LOWERCASE (integer) (available from PHP 4.3.0)
DBX_CMP_NATIVE (integer)
DBX_CMP_TEXT (integer)
DBX_CMP_NUMBER (integer)
DBX_CMP_ASC (integer)
DBX_CMP_DESC (integer)
资源类型
dbx 函数
dbx


dbx 函数

Table of Contents

  • dbx_close — Close an open connection/database
  • dbx_compare — Compare two rows for sorting purposes
  • dbx_connect — Open a connection/database
  • dbx_error — Report the error message of the latest function call in the module
  • dbx_escape_string — Escape a string so it can safely be used in an sql-statement
  • dbx_fetch_row — Fetches rows from a query-result that had the DBX_RESULT_UNBUFFERED flag set
  • dbx_query — Send a query and fetch all results (if any)
  • dbx_sort — Sort a result from a dbx_query by a custom sort function
预定义常量
dbx_close
dbx


Close an open connection/database

dbx 函数
dbx_compare
dbx 函数
PHP Manual

dbx_close

(PHP 4 >= 4.0.6, PHP 5 <= 5.0.5, PECL dbx >= 1.1.0)

dbx_close — Close an open connection/database

说明

int dbx_close ( object $link_identifier )

参数

link_identifier

The DBX link object to close.

返回值

Returns 1 on success and 0 on errors.

范例

Example #1 dbx_close() example

<?php
$link = dbx_connect(DBX_MYSQL, "localhost", "db", "username", "password")
    or die("Could not connect");

echo "Connected successfully";
dbx_close($link);
?>

注释

Note:

Always refer to the module-specific documentation as well.

参见

  • dbx_connect() - Open a connection/database

dbx 函数
dbx_compare
dbx 函数


Compare two rows for sorting purposes

dbx_close
dbx_connect
dbx 函数
PHP Manual

dbx_compare

(PHP 4 >= 4.1.0, PHP 5 <= 5.0.5, PECL dbx >= 1.1.0)

dbx_compare — Compare two rows for sorting purposes

说明

int dbx_compare ( array $row_a , array $row_b , string $column_key [, int $flags = DBX_CMP_ASC | DBX_CMP_NATIVE ] )

dbx_compare() is a helper function for dbx_sort() to ease the make and use of the custom sorting function.

参数

row_a

First row

row_b

Second row

column_key

The compared column

flags

The flags can be set to specify comparison direction:

  • DBX_CMP_ASC - ascending order
  • DBX_CMP_DESC - descending order
and the preferred comparison type:
  • DBX_CMP_NATIVE - no type conversion
  • DBX_CMP_TEXT - compare items as strings
  • DBX_CMP_NUMBER - compare items numerically
One of the direction and one of the type constant can be combined with bitwise OR operator (|).

返回值

Returns 0 if the row_a[$column_key] is equal to row_b[$column_key], and 1 or -1 if the former is greater or is smaller than the latter one, respectively, or vice versa if the flag is set to DBX_CMP_DESC.

范例

Example #1 dbx_compare() example

<?php
function user_re_order($a, $b)
{
    $rv = dbx_compare($a, $b, "parentid", DBX_CMP_DESC);
    if (!$rv) {
        $rv = dbx_compare($a, $b, "id", DBX_CMP_NUMBER);
    }
    return $rv;
}

$link   = dbx_connect(DBX_ODBC, "", "db", "username", "password")
    or die("Could not connect");

$result = dbx_query($link, "SELECT id, parentid, description FROM table ORDER BY id");
    // data in $result is now ordered by id

dbx_sort($result, "user_re_order");
    // date in $result is now ordered by parentid (descending), then by id

dbx_close($link);
?>

参见

  • dbx_sort() - Sort a result from a dbx_query by a custom sort function

dbx_close
dbx_connect
dbx 函数


Open a connection/database

dbx_compare
dbx_error
dbx 函数
PHP Manual

dbx_connect

(PHP 4 >= 4.0.6, PHP 5 <= 5.0.5, PECL dbx >= 1.1.0)

dbx_connect — Open a connection/database

说明

object dbx_connect ( mixed $module , string $host , string $database , string $username , string $password [, int $persistent ] )

Opens a connection to a database.

参数

module

The module parameter can be either a string or a constant, though the latter form is preferred. The possible values are given below, but keep in mind that they only work if the module is actually loaded.

  • DBX_MYSQL or "mysql"
  • DBX_ODBC or "odbc"
  • DBX_PGSQL or "pgsql"
  • DBX_MSSQL or "mssql"
  • DBX_FBSQL or "fbsql"
  • DBX_SYBASECT or "sybase_ct"
  • DBX_OCI8 or "oci8"
  • DBX_SQLITE or "sqlite"

host

The SQL server host

database

The database name

username

The username

password

The password

persistent

The persistent parameter can be set to DBX_PERSISTENT, if so, a persistent connection will be created.

The host, database, username and password parameters are expected, but not always used depending on the connect functions for the abstracted module.

返回值

Returns an object on success, FALSE on error. If a connection has been made but the database could not be selected, the connection is closed and FALSE is returned.

The returned object has three properties:

database
It is the name of the currently selected database.
handle

It is a valid handle for the connected database, and as such it can be used in module-specific functions (if required).

<?php
$link = dbx_connect(DBX_MYSQL, "localhost", "db", "username", "password");
mysql_close($link->handle); // dbx_close($link) would be better here
?>

module
It is used internally by dbx only, and is actually the module number mentioned above.

更新日志

版本 | 说明
5.0.0 | Introduced DBX_SQLITE.
4.3.0 | Introduced DBX_OCI8.
4.2.0 | Introduced DBX_SYBASECT.
4.1.0 | Introduced DBX_FBSQL.

范例

Example #1 dbx_connect() example

<?php
$link = dbx_connect(DBX_ODBC, "", "db", "username", "password", DBX_PERSISTENT)
    or die("Could not connect");

echo "Connected successfully";
dbx_close($link);
?>

注释

Note:

Always refer to the module-specific documentation as well.

参见

  • dbx_close() - Close an open connection/database

dbx_compare
dbx_error
dbx 函数


Report the error message of the latest function call in the module

dbx_connect
dbx_escape_string
dbx 函数
PHP Manual

dbx_error

(PHP 4 >= 4.0.6, PHP 5 <= 5.0.5, PECL dbx >= 1.1.0)

dbx_error — Report the error message of the latest function call in the module

说明

string dbx_error ( object $link_identifier )

dbx_error() returns the last error message.

参数

link_identifier

The DBX link object returned by dbx_connect()

返回值

Returns a string containing the error message from the last function call of the abstracted module (e.g. mysql module). If there are multiple connections in the same module, just the last error is given. If there are connections on different modules, the latest error is returned for the module specified by the link_identifier parameter.

范例

Example #1 dbx_error() example

<?php
$link   = dbx_connect(DBX_MYSQL, "localhost", "db", "username", "password")
    or die("Could not connect");

$result = dbx_query($link, "select id from non_existing_table");
if ($result == 0) {
    echo dbx_error($link);
}
dbx_close($link);
?>

注释

Note:

Always refer to the module-specific documentation as well.

The error message for Microsoft SQL Server is actually the result of the mssql_get_last_message() function.

The error message for Oracle (oci8) is not implemented yet.

dbx_connect
dbx_escape_string
dbx 函数


Escape a string so it can safely be used in an sql-statement

dbx_error
dbx_fetch_row
dbx 函数
PHP Manual

dbx_escape_string

(PHP 4 >= 4.3.0, PHP 5 <= 5.0.5, PECL dbx >= 1.1.0)

dbx_escape_string — Escape a string so it can safely be used in an sql-statement

说明

string dbx_escape_string ( object $link_identifier , string $text )

Escape the given string so that it can safely be used in an sql-statement.

参数

link_identifier

The DBX link object returned by dbx_connect()

text

The string to escape.

返回值

Returns the text, escaped where necessary (such as quotes, backslashes etc). On error, NULL is returned.

范例

Example #1 dbx_escape_string() example

<?php
$link   = dbx_connect(DBX_MYSQL, "localhost", "db", "username", "password")
    or die("Could not connect");

$text = dbx_escape_string($link, "It\'s quoted and backslashed (\\).");
$result = dbx_query($link, "insert into tbl (txt) values ('" . $text . "')");
if ($result == 0) {
    echo dbx_error($link);
}
dbx_close($link);
?>

参见

  • dbx_query() - Send a query and fetch all results (if any)

dbx_error
dbx_fetch_row
dbx 函数


Fetches rows from a query-result that had the DBX_RESULT_UNBUFFERED flag set

dbx_escape_string
dbx_query
dbx 函数
PHP Manual

dbx_fetch_row

(PHP 5 <= 5.0.5, PECL dbx >= 1.1.0)

dbx_fetch_row — Fetches rows from a query-result that had the DBX_RESULT_UNBUFFERED flag set

说明

mixed dbx_fetch_row ( object $result_identifier )

dbx_fetch_row() fetches rows from a result identifier that had the DBX_RESULT_UNBUFFERED flag set.

When the DBX_RESULT_UNBUFFERED is not set in the query, dbx_fetch_row() will fail as all rows have already been fetched into the results data property.

As a side effect, the rows property of the query-result object is incremented for each successful call to dbx_fetch_row().

参数

result_identifier

A result set returned by dbx_query().

返回值

Returns an object on success that contains the same information as any row would have in the dbx_query() result data property, including columns accessible by index or fieldname when the flags for dbx_query() were set that way.

Upon failure, returns 0 (e.g. when no more rows are available).

范例

Example #1 How to handle the returned value

<?php
$result = dbx_query($link, 'SELECT id, parentid, description FROM table', DBX_RESULT_UNBUFFERED);

echo "<table>\n";
while ($row = dbx_fetch_row($result)) {
    echo "<tr>\n";
    foreach ($row as $field) {
        echo "<td>$field</td>";
    }
    echo "</tr>\n";
}
echo "</table>\n";
?>

参见

  • dbx_query() - Send a query and fetch all results (if any)

dbx_escape_string
dbx_query
dbx 函数


Send a query and fetch all results (if any)

dbx_fetch_row
dbx_sort
dbx 函数
PHP Manual

dbx_query

(PHP 4 >= 4.0.6, PHP 5 <= 5.0.5, PECL dbx >= 1.1.0)

dbx_query — Send a query and fetch all results (if any)

说明

mixed dbx_query ( object $link_identifier , string $sql_statement [, int $flags ] )

Sends a query and fetch all results.

参数

link_identifier

The DBX link object returned by dbx_connect()

sql_statement

SQL statement.

Data inside the query should be properly escaped.

flags

The flags parameter is used to control the amount of information that is returned. It may be any combination of the following constants with the bitwise OR operator (|). The DBX_COLNAMES_* flags override the dbx.colnames_case setting from php.ini.

DBX_RESULT_INDEX
It is always set, that is, the returned object has a data property which is a 2 dimensional array indexed numerically. For example, in the expression data[2][3] 2 stands for the row (or record) number and 3 stands for the column (or field) number. The first row and column are indexed at 0. If DBX_RESULT_ASSOC is also specified, the returning object contains the information related to DBX_RESULT_INFO too, even if it was not specified.
DBX_RESULT_INFO
It provides info about columns, such as field names and field types.
DBX_RESULT_ASSOC
It effects that the field values can be accessed with the respective column names used as keys to the returned object's data property. Associated results are actually references to the numerically indexed data, so modifying data[0][0] causes that data[0]['field_name_for_first_column'] is modified as well.
DBX_RESULT_UNBUFFERED
This flag will not create the data property, and the rows property will initially be 0. Use this flag for large datasets, and use dbx_fetch_row() to retrieve the results row by row. The dbx_fetch_row() function will return rows that are conformant to the flags set with this query. Incidentally, it will also update the rows each time it is called.
DBX_COLNAMES_UNCHANGED
The case of the returned column names will not be changed.
DBX_COLNAMES_UPPERCASE
The case of the returned column names will be changed to uppercase.
DBX_COLNAMES_LOWERCASE
The case of the returned column names will be changed to lowercase.
Note that DBX_RESULT_INDEX is always used, regardless of the actual value of flags parameter. This means that only the following combinations are effective:
  • DBX_RESULT_INDEX
  • DBX_RESULT_INDEX | DBX_RESULT_INFO
  • DBX_RESULT_INDEX | DBX_RESULT_INFO | DBX_RESULT_ASSOC - this is the default, if flags is not specified.

返回值

dbx_query() returns an object or 1 on success, and 0 on failure. The result object is returned only if the query given in sql_statement produces a result set (i.e. a SELECT query, even if the result set is empty).

The returned object has four or five properties depending on flags:

handle

It is a valid handle for the connected database, and as such it can be used in module specific functions (if required).

<?php
$result = dbx_query($link, "SELECT id FROM table");
mysql_field_len($result->handle, 0);
?>

cols and rows

These contain the number of columns (or fields) and rows (or records) respectively.

<?php
$result = dbx_query($link, 'SELECT id FROM table');
echo $result->rows; // number of records
echo $result->cols; // number of fields
?>

info (optional)
It is returned only if either DBX_RESULT_INFO or DBX_RESULT_ASSOC is specified in the flags parameter. It is a 2 dimensional array, that has two named rows (name and type) to retrieve column information.

Example #1 lists each field's name and type

<?php
$result = dbx_query($link, 'SELECT id FROM table',
                     DBX_RESULT_INDEX | DBX_RESULT_INFO);

for ($i = 0; $i < $result->cols; $i++ ) {
    echo $result->info['name'][$i] . "\n";
    echo $result->info['type'][$i] . "\n";
}
?>
data
This property contains the actual resulting data, possibly associated with column names as well depending on flags. If DBX_RESULT_ASSOC is set, it is possible to use $result->data[2]["field_name"].

Example #2 outputs the content of data property into HTML table

<?php
$result = dbx_query($link, 'SELECT id, parentid, description FROM table');

echo "<table>\n";
foreach ($result->data as $row) {
    echo "<tr>\n";
    foreach ($row as $field) {
        echo "<td>$field</td>";
    }
    echo "</tr>\n";
}
echo "</table>\n";
?>

Example #3 How to handle UNBUFFERED queries

<?php

$result = dbx_query ($link, 'SELECT id, parentid, description FROM table', DBX_RESULT_UNBUFFERED);

echo "<table>\n";
while ($row = dbx_fetch_row($result)) {
    echo "<tr>\n";
    foreach ($row as $field) {
        echo "<td>$field</td>";
    }
    echo "</tr>\n";
}
echo "</table>\n";

?>

更新日志

版本 | 说明
5.0.0 | Introduced DBX_RESULT_UNBUFFERED.
4.3.0 | Introduced DBX_COLNAMES_UNCHANGED, DBX_COLNAMES_UPPERCASE, and DBX_COLNAMES_LOWERCASE.

范例

Example #4 How to handle the returned value

<?php
$link   = dbx_connect(DBX_ODBC, "", "db", "username", "password")
    or die("Could not connect");

$result = dbx_query($link, 'SELECT id, parentid, description FROM table');

if (is_object($result) ) {
    // ... do some stuff here, see detailed examples below ...
    // first, print out field names and types
    // then, draw a table filled with the returned field values
} else {
    exit("Query failed");
}

dbx_close($link);
?>

注释

Note:

Always refer to the module-specific documentation as well.

Column names for queries on an Oracle database are returned in lowercase.

参见

  • dbx_escape_string() - Escape a string so it can safely be used in an sql-statement
  • dbx_fetch_row() - Fetches rows from a query-result that had the DBX_RESULT_UNBUFFERED flag set
  • dbx_connect() - Open a connection/database

dbx_fetch_row
dbx_sort
dbx 函数


Sort a result from a dbx_query by a custom sort function

dbx_query
ODBC
dbx 函数
PHP Manual

dbx_sort

(PHP 4 >= 4.0.6, PHP 5 <= 5.0.5, PECL dbx >= 1.1.0)

dbx_sort — Sort a result from a dbx_query by a custom sort function

说明

bool dbx_sort ( object $result , string $user_compare_function )

Sort a result from a dbx_query() call with a custom sort function.

参数

result

A result set returned by dbx_query().

user_compare_function

The user-defined comparison function. It must accept two arguments and return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 dbx_sort() example

<?php
function user_re_order($a, $b)
{
    $rv = dbx_compare($a, $b, "parentid", DBX_CMP_DESC);
    if (!$rv) {
        $rv = dbx_compare($a, $b, "id", DBX_CMP_NUMBER);
    }
    return $rv;
}

$link   = dbx_connect(DBX_ODBC, "", "db", "username", "password")
    or die("Could not connect");

$result = dbx_query($link, "SELECT id, parentid, description FROM tbl ORDER BY id");
    // data in $result is now ordered by id

dbx_sort($result, "user_re_order");
    // data in $result is now ordered by parentid (descending), then by id

dbx_close($link);
?>

注释

Note:

It is always better to use ORDER BY SQL clause instead of dbx_sort() if possible.

参见

  • dbx_compare() - Compare two rows for sorting purposes

dbx_query
ODBC
dbx 函数


ODBC (Unified)

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • ODBC 函数
    • odbc_autocommit — Toggle autocommit behaviour
    • odbc_binmode — Handling of binary column data
    • odbc_close_all — Close all ODBC connections
    • odbc_close — Close an ODBC connection
    • odbc_columnprivileges — Lists columns and associated privileges for the given table
    • odbc_columns — Lists the column names in specified tables
    • odbc_commit — Commit an ODBC transaction
    • odbc_connect — Connect to a datasource
    • odbc_cursor — Get cursorname
    • odbc_data_source — Returns information about a current connection
    • odbc_do — 别名 odbc_exec
    • odbc_error — Get the last error code
    • odbc_errormsg — Get the last error message
    • odbc_exec — Prepare and execute an SQL statement
    • odbc_execute — Execute a prepared statement
    • odbc_fetch_array — Fetch a result row as an associative array
    • odbc_fetch_into — Fetch one result row into array
    • odbc_fetch_object — Fetch a result row as an object
    • odbc_fetch_row — Fetch a row
    • odbc_field_len — Get the length (precision) of a field
    • odbc_field_name — Get the columnname
    • odbc_field_num — Return column number
    • odbc_field_precision — 别名 odbc_field_len
    • odbc_field_scale — Get the scale of a field
    • odbc_field_type — Datatype of a field
    • odbc_foreignkeys — Retrieves a list of foreign keys
    • odbc_free_result — Free resources associated with a result
    • odbc_gettypeinfo — Retrieves information about data types supported by the data source
    • odbc_longreadlen — Handling of LONG columns
    • odbc_next_result — Checks if multiple results are available
    • odbc_num_fields — Number of columns in a result
    • odbc_num_rows — Number of rows in a result
    • odbc_pconnect — Open a persistent database connection
    • odbc_prepare — Prepares a statement for execution
    • odbc_primarykeys — Gets the primary keys for a table
    • odbc_procedurecolumns — Retrieve information about parameters to procedures
    • odbc_procedures — Get the list of procedures stored in a specific data source
    • odbc_result_all — Print result as HTML table
    • odbc_result — Get result data
    • odbc_rollback — Rollback a transaction
    • odbc_setoption — Adjust ODBC settings
    • odbc_specialcolumns — Retrieves special columns
    • odbc_statistics — Retrieve statistics about a table
    • odbc_tableprivileges — Lists tables and the privileges associated with each table
    • odbc_tables — Get the list of table names stored in a specific data source
dbx_sort
简介
数据库抽象层


简介

In addition to normal ODBC support, the Unified ODBC functions in PHP allow you to access several databases that have borrowed the semantics of the ODBC API to implement their own API. Instead of maintaining multiple database drivers that were all nearly identical, these drivers have been unified into a single set of ODBC functions.

The following databases are supported by the Unified ODBC functions: » Adabas D, » IBM DB2, » iODBC, » Solid, and » Sybase SQL Anywhere.

Note:

With the exception of iODBC, there is no ODBC involved when connecting to the above databases. The functions that you use to speak natively to them just happen to share the same names and syntax as the ODBC functions. However, building PHP with iODBC support enables you to use any ODBC-compliant drivers with your PHP applications. More information on iODBC, is available at » www.iodbc.org with the alternative unixODBC available at » www.unixodbc.org.

ODBC
安装／配置
ODBC


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
ODBC


需求

To access any of the supported databases you need to have the required libraries installed.

安装／配置
安装
安装／配置


安装

--with-adabas[=DIR]

Include Adabas D support. DIR is the Adabas base install directory, defaults to /usr/local.

--with-sapdb[=DIR]

Include SAP DB support. DIR is SAP DB base install directory, defaults to /usr/local.

--with-solid[=DIR]

Include Solid support. DIR is the Solid base install directory, defaults to /usr/local/solid.

--with-ibm-db2[=DIR]

Include IBM DB2 support. DIR is the DB2 base install directory, defaults to /home/db2inst1/sqllib.

--with-empress[=DIR]

Include Empress support. DIR is the Empress base install directory, defaults to $EMPRESSPATH. This option only supports Empress Version 8.60 and above.

--with-empress-bcs[=DIR]

Include "Empress Local Access" support. DIR is the Empress base install directory, defaults to $EMPRESSPATH. This option only supports Empress Version 8.60 and above.

--with-birdstep[=DIR]

Include Birdstep support. DIR is the Birdstep base install directory, defaults to /usr/local/birdstep.

--with-custom-odbc[=DIR]

Include a user defined ODBC support. The DIR is ODBC install base directory, which defaults to /usr/local. Make sure to define CUSTOM_ODBC_LIBS and have some odbc.h in your include dirs. E.g., you should define following for Sybase SQL Anywhere 5.5.00 on QNX, prior to run configure script:

   CPPFLAGS="-DODBC_QNX -DSQLANY_BUG"
   LDFLAGS=-lunix
   CUSTOM_ODBC_LIBS="-ldblib -lodbc".

--with-iodbc[=DIR]

Include iODBC support. DIR is the iODBC base install directory, defaults to /usr/local.

--with-esoob[=DIR]

Include Easysoft OOB support. DIR is the OOB base install directory, defaults to /usr/local/easysoft/oob/client.

--with-unixODBC[=DIR]

Include unixODBC support. DIR is the unixODBC base install directory, defaults to /usr/local.

--with-openlink[=DIR]

Include OpenLink ODBC support. DIR is the OpenLink base install directory, defaults to /usr/local. This is the same as iODBC.

--with-dbmaker[=DIR]

Include DBMaker support. DIR is the DBMaker base install directory, defaults to where the latest version of DBMaker is installed (such as /home/dbmaker/3.6).

PHP 的 Windows 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Unified ODBC Configuration Options
名字 | 默认 | 可修改范围 | 更新日志
odbc.default_db * | NULL | PHP_INI_ALL |
odbc.default_user * | NULL | PHP_INI_ALL |
odbc.default_pw * | NULL | PHP_INI_ALL |
odbc.allow_persistent | "1" | PHP_INI_SYSTEM |
odbc.check_persistent | "1" | PHP_INI_SYSTEM |
odbc.max_persistent | "-1" | PHP_INI_SYSTEM |
odbc.max_links | "-1" | PHP_INI_SYSTEM |
odbc.defaultlrl | "4096" | PHP_INI_ALL |
odbc.defaultbinmode | "1" | PHP_INI_ALL |
odbc.default_cursortype | "3" | PHP_INI_ALL | Available as of PHP 5.3.0

Note: Entries marked with * are not implemented yet.

有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

odbc.default_db string

ODBC data source to use if none is specified in odbc_connect() or odbc_pconnect().

odbc.default_user string

User name to use if none is specified in odbc_connect() or odbc_pconnect().

odbc.default_pw string

Password to use if none is specified in odbc_connect() or odbc_pconnect().

odbc.allow_persistent boolean

Whether to allow persistent ODBC connections.

odbc.check_persistent boolean

Check that a connection is still valid before reuse.

odbc.max_persistent integer

The maximum number of persistent ODBC connections per process.

odbc.max_links integer

The maximum number of ODBC connections per process, including persistent connections.

odbc.defaultlrl integer

Handling of LONG fields. Specifies the number of bytes returned to variables.

当使用 integer 时, 其值以字节来衡量。还可以使用在FAQ中描述的速记符。
odbc.defaultbinmode integer

Handling of binary data.

odbc.default_cursortype integer

Controls the ODBC cursor model. Possible values are SQL_CURSOR_FORWARD_ONLY, SQL_CURSOR_KEYSET_DRIVEN, SQL_CURSOR_DYNAMIC and SQL_CURSOR_STATIC (default).

安装
资源类型
安装／配置


资源类型

This extension defines two resource types: an ODBC connection identifier and an ODBC result identifier.

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

ODBC_TYPE (integer)
ODBC_BINMODE_PASSTHRU (integer)
ODBC_BINMODE_RETURN (integer)
ODBC_BINMODE_CONVERT (integer)
SQL_ODBC_CURSORS (integer)
SQL_CUR_USE_DRIVER (integer)
SQL_CUR_USE_IF_NEEDED (integer)
SQL_CUR_USE_ODBC (integer)
SQL_CONCURRENCY (integer)
SQL_CONCUR_READ_ONLY (integer)
SQL_CONCUR_LOCK (integer)
SQL_CONCUR_ROWVER (integer)
SQL_CONCUR_VALUES (integer)
SQL_CURSOR_TYPE (integer)
SQL_CURSOR_FORWARD_ONLY (integer)
SQL_CURSOR_KEYSET_DRIVEN (integer)
SQL_CURSOR_DYNAMIC (integer)
SQL_CURSOR_STATIC (integer)
SQL_KEYSET_SIZE (integer)
SQL_CHAR (integer)
SQL_VARCHAR (integer)
SQL_LONGVARCHAR (integer)
SQL_DECIMAL (integer)
SQL_NUMERIC (integer)
SQL_BIT (integer)
SQL_TINYINT (integer)
SQL_SMALLINT (integer)
SQL_INTEGER (integer)
SQL_BIGINT (integer)
SQL_REAL (integer)
SQL_FLOAT (integer)
SQL_DOUBLE (integer)
SQL_BINARY (integer)
SQL_VARBINARY (integer)
SQL_LONGVARBINARY (integer)
SQL_DATE (integer)
SQL_TIME (integer)
SQL_TIMESTAMP (integer)
SQL_TYPE_DATE (integer)
SQL_TYPE_TIME (integer)
SQL_TYPE_TIMESTAMP (integer)
SQL_BEST_ROWID (integer)
SQL_ROWVER (integer)
SQL_SCOPE_CURROW (integer)
SQL_SCOPE_TRANSACTION (integer)
SQL_SCOPE_SESSION (integer)
SQL_NO_NULLS (integer)
SQL_NULLABLE (integer)
SQL_INDEX_UNIQUE (integer)
SQL_INDEX_ALL (integer)
SQL_ENSURE (integer)
SQL_QUICK (integer)
资源类型
ODBC 函数
ODBC


ODBC 函数

Table of Contents

  • odbc_autocommit — Toggle autocommit behaviour
  • odbc_binmode — Handling of binary column data
  • odbc_close_all — Close all ODBC connections
  • odbc_close — Close an ODBC connection
  • odbc_columnprivileges — Lists columns and associated privileges for the given table
  • odbc_columns — Lists the column names in specified tables
  • odbc_commit — Commit an ODBC transaction
  • odbc_connect — Connect to a datasource
  • odbc_cursor — Get cursorname
  • odbc_data_source — Returns information about a current connection
  • odbc_do — 别名 odbc_exec
  • odbc_error — Get the last error code
  • odbc_errormsg — Get the last error message
  • odbc_exec — Prepare and execute an SQL statement
  • odbc_execute — Execute a prepared statement
  • odbc_fetch_array — Fetch a result row as an associative array
  • odbc_fetch_into — Fetch one result row into array
  • odbc_fetch_object — Fetch a result row as an object
  • odbc_fetch_row — Fetch a row
  • odbc_field_len — Get the length (precision) of a field
  • odbc_field_name — Get the columnname
  • odbc_field_num — Return column number
  • odbc_field_precision — 别名 odbc_field_len
  • odbc_field_scale — Get the scale of a field
  • odbc_field_type — Datatype of a field
  • odbc_foreignkeys — Retrieves a list of foreign keys
  • odbc_free_result — Free resources associated with a result
  • odbc_gettypeinfo — Retrieves information about data types supported by the data source
  • odbc_longreadlen — Handling of LONG columns
  • odbc_next_result — Checks if multiple results are available
  • odbc_num_fields — Number of columns in a result
  • odbc_num_rows — Number of rows in a result
  • odbc_pconnect — Open a persistent database connection
  • odbc_prepare — Prepares a statement for execution
  • odbc_primarykeys — Gets the primary keys for a table
  • odbc_procedurecolumns — Retrieve information about parameters to procedures
  • odbc_procedures — Get the list of procedures stored in a specific data source
  • odbc_result_all — Print result as HTML table
  • odbc_result — Get result data
  • odbc_rollback — Rollback a transaction
  • odbc_setoption — Adjust ODBC settings
  • odbc_specialcolumns — Retrieves special columns
  • odbc_statistics — Retrieve statistics about a table
  • odbc_tableprivileges — Lists tables and the privileges associated with each table
  • odbc_tables — Get the list of table names stored in a specific data source
预定义常量
odbc_autocommit
ODBC


Toggle autocommit behaviour

ODBC 函数
odbc_binmode
ODBC 函数
PHP Manual

odbc_autocommit

(PHP 4, PHP 5, PHP 7)

odbc_autocommit — Toggle autocommit behaviour

说明

mixed odbc_autocommit ( resource $connection_id [, bool $OnOff = false ] )

Toggles autocommit behaviour.

By default, auto-commit is on for a connection. Disabling auto-commit is equivalent with starting a transaction.

参数

connection_id

ODBC 连接标识符，详见 odbc_connect()。

OnOff

If OnOff is TRUE, auto-commit is enabled, if it is FALSE auto-commit is disabled.

返回值

Without the OnOff parameter, this function returns auto-commit status for connection_id. Non-zero is returned if auto-commit is on, 0 if it is off, or FALSE if an error occurs.

If OnOff is set, this function returns TRUE on success and FALSE on failure.

参见

  • odbc_commit() - Commit an ODBC transaction
  • odbc_rollback() - Rollback a transaction

ODBC 函数
odbc_binmode
ODBC 函数


Handling of binary column data

odbc_autocommit
odbc_close_all
ODBC 函数
PHP Manual

odbc_binmode

(PHP 4, PHP 5, PHP 7)

odbc_binmode — Handling of binary column data

说明

bool odbc_binmode ( resource $result_id , int $mode )

Enables handling of binary column data. ODBC SQL types affected are BINARY, VARBINARY, and LONGVARBINARY.

When binary SQL data is converted to character C data, each byte (8 bits) of source data is represented as two ASCII characters. These characters are the ASCII character representation of the number in its hexadecimal form. For example, a binary 00000001 is converted to "01" and a binary 11111111 is converted to "FF".

LONGVARBINARY handling
binmode | longreadlen | result
ODBC_BINMODE_PASSTHRU | 0 | passthru
ODBC_BINMODE_RETURN | 0 | passthru
ODBC_BINMODE_CONVERT | 0 | passthru
ODBC_BINMODE_PASSTHRU | 0 | passthru
ODBC_BINMODE_PASSTHRU | >0 | passthru
ODBC_BINMODE_RETURN | >0 | return as is
ODBC_BINMODE_CONVERT | >0 | return as char

If odbc_fetch_into() is used, passthru means that an empty string is returned for these columns.

参数

result_id

The result identifier.

If result_id is 0, the settings apply as default for new results.

Note: Default for longreadlen is 4096 and mode defaults to ODBC_BINMODE_RETURN. Handling of binary long columns is also affected by odbc_longreadlen().

mode

Possible values for mode are:

  • ODBC_BINMODE_PASSTHRU: Passthru BINARY data
  • ODBC_BINMODE_RETURN: Return as is
  • ODBC_BINMODE_CONVERT: Convert to char and return

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

odbc_autocommit
odbc_close_all
ODBC 函数


Close all ODBC connections

odbc_binmode
odbc_close
ODBC 函数
PHP Manual

odbc_close_all

(PHP 4, PHP 5, PHP 7)

odbc_close_all — Close all ODBC connections

说明

void odbc_close_all ( void )

odbc_close_all() will close down all connections to database server(s).

参数

此函数没有参数。

返回值

没有返回值。

注释

Note:

This function will fail if there are open transactions on a connection. This connection will remain open in this case.

odbc_binmode
odbc_close
ODBC 函数


Close an ODBC connection

odbc_close_all
odbc_columnprivileges
ODBC 函数
PHP Manual

odbc_close

(PHP 4, PHP 5, PHP 7)

odbc_close — Close an ODBC connection

说明

void odbc_close ( resource $connection_id )

Closes down the connection to the database server.

参数

connection_id

ODBC 连接标识符，详见 odbc_connect()。

返回值

没有返回值。

注释

Note:

This function will fail if there are open transactions on this connection. The connection will remain open in this case.

odbc_close_all
odbc_columnprivileges
ODBC 函数


Lists columns and associated privileges for the given table

odbc_close
odbc_columns
ODBC 函数
PHP Manual

odbc_columnprivileges

(PHP 4, PHP 5, PHP 7)

odbc_columnprivileges — Lists columns and associated privileges for the given table

说明

resource odbc_columnprivileges ( resource $connection_id , string $qualifier , string $owner , string $table_name , string $column_name )

Lists columns and associated privileges for the given table.

参数

connection_id

ODBC 连接标识符，详见 odbc_connect()。

qualifier

The qualifier.

owner

The owner.

table_name

The table name.

column_name

The column_name argument accepts search patterns ('%' to match zero or more characters and '_' to match a single character).

The owner, table_name, and column_name accept search patterns ('%' to match zero or more characters and '_' to match a single character).

返回值

Returns an ODBC result identifier 或者在失败时返回 FALSE. This result identifier can be used to fetch a list of columns and associated privileges.

The result set has the following columns:

  • TABLE_QUALIFIER
  • TABLE_OWNER
  • TABLE_NAME
  • GRANTOR
  • GRANTEE
  • PRIVILEGE
  • IS_GRANTABLE

The result set is ordered by TABLE_QUALIFIER, TABLE_OWNER and TABLE_NAME.

odbc_close
odbc_columns
ODBC 函数


Lists the column names in specified tables

odbc_columnprivileges
odbc_commit
ODBC 函数
PHP Manual

odbc_columns

(PHP 4, PHP 5, PHP 7)

odbc_columns — Lists the column names in specified tables

说明

resource odbc_columns ( resource $connection_id [, string $qualifier [, string $schema [, string $table_name [, string $column_name ]]]] )

Lists all columns in the requested range.

参数

connection_id

ODBC 连接标识符，详见 odbc_connect()。

qualifier

The qualifier.

schema

The owner.

table_name

The table name.

column_name

The column name.

The schema, table_name, and column_name accept search patterns ('%' to match zero or more characters and '_' to match a single character).

返回值

Returns an ODBC result identifier 或者在失败时返回 FALSE.

The result set has the following columns:

  • TABLE_QUALIFIER
  • TABLE_SCHEM
  • TABLE_NAME
  • COLUMN_NAME
  • DATA_TYPE
  • TYPE_NAME
  • PRECISION
  • LENGTH
  • SCALE
  • RADIX
  • NULLABLE
  • REMARKS

The result set is ordered by TABLE_QUALIFIER, TABLE_SCHEM and TABLE_NAME.

参见

  • odbc_columnprivileges() - Lists columns and associated privileges for the given table to retrieve associated privileges

odbc_columnprivileges
odbc_commit
ODBC 函数


Commit an ODBC transaction

odbc_columns
odbc_connect
ODBC 函数
PHP Manual

odbc_commit

(PHP 4, PHP 5, PHP 7)

odbc_commit — Commit an ODBC transaction

说明

bool odbc_commit ( resource $connection_id )

Commits all pending transactions on the connection.

参数

connection_id

ODBC 连接标识符，详见 odbc_connect()。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

odbc_columns
odbc_connect
ODBC 函数


Connect to a datasource

odbc_commit
odbc_cursor
ODBC 函数
PHP Manual

odbc_connect

(PHP 4, PHP 5, PHP 7)

odbc_connect — Connect to a datasource

说明

resource odbc_connect ( string $dsn , string $user , string $password [, int $cursor_type ] )

The connection id returned by this functions is needed by other ODBC functions. You can have multiple connections open at once as long as they either use different db or different credentials.

With some ODBC drivers, executing a complex stored procedure may fail with an error similar to: "Cannot open a cursor on a stored procedure that has anything other than a single select statement in it". Using SQL_CUR_USE_ODBC may avoid that error. Also, some drivers don't support the optional row_number parameter in odbc_fetch_row(). SQL_CUR_USE_ODBC might help in that case, too.

参数

dsn

The database source name for the connection. Alternatively, a DSN-less connection string can be used.

user

The username.

password

The password.

cursor_type

This sets the type of cursor to be used for this connection. This parameter is not normally needed, but can be useful for working around problems with some ODBC drivers.

The following constants are defined for cursortype:

  • SQL_CUR_USE_IF_NEEDED
  • SQL_CUR_USE_ODBC
  • SQL_CUR_USE_DRIVER

返回值

Returns an ODBC connection or (FALSE) on error.

范例

Example #1 DSN-less connections

<?php
// Microsoft SQL Server using the SQL Native Client 10.0 ODBC Driver - allows connection to SQL 7, 2000, 2005 and 2008
$connection = odbc_connect("Driver={SQL Server Native Client 10.0};Server=$server;Database=$database;", $user, $password);

// Microsoft Access
$connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$mdbFilename", $user, $password);

// Microsoft Excel
$excelFile = realpath('C:/ExcelData.xls');
$excelDir = dirname($excelFile);
$connection = odbc_connect("Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=$excelFile;DefaultDir=$excelDir" , '', '');
?>

参见

  • For persistent connections: odbc_pconnect() - Open a persistent database connection

odbc_commit
odbc_cursor
ODBC 函数


Get cursorname

odbc_connect
odbc_data_source
ODBC 函数
PHP Manual

odbc_cursor

(PHP 4, PHP 5, PHP 7)

odbc_cursor — Get cursorname

说明

string odbc_cursor ( resource $result_id )

Gets the cursorname for the given result_id.

参数

result_id

The result identifier.

返回值

Returns the cursor name, as a string.

odbc_connect
odbc_data_source
ODBC 函数


Returns information about a current connection

odbc_cursor
odbc_do
ODBC 函数
PHP Manual

odbc_data_source

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

odbc_data_source — Returns information about a current connection

说明

array odbc_data_source ( resource $connection_id , int $fetch_type )

This function will return the list of available DSN (after calling it several times).

参数

connection_id

ODBC 连接标识符，详见 odbc_connect()。

fetch_type

The fetch_type can be one of two constant types: SQL_FETCH_FIRST, SQL_FETCH_NEXT. Use SQL_FETCH_FIRST the first time this function is called, thereafter use the SQL_FETCH_NEXT.

返回值

Returns FALSE on error, and an array upon success.

odbc_cursor
odbc_do
ODBC 函数


别名 odbc_exec

odbc_data_source
odbc_error
ODBC 函数
PHP Manual

odbc_do

(PHP 4, PHP 5, PHP 7)

odbc_do — 别名 odbc_exec()

说明

此函数是该函数的别名： odbc_exec().

odbc_data_source
odbc_error
ODBC 函数


Get the last error code

odbc_do
odbc_errormsg
ODBC 函数
PHP Manual

odbc_error

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

odbc_error — Get the last error code

说明

string odbc_error ([ resource $connection_id ] )

Returns a six-digit ODBC state, or an empty string if there has been no errors.

参数

connection_id

ODBC 连接标识符，详见 odbc_connect()。

返回值

If connection_id is specified, the last state of that connection is returned, else the last state of any connection is returned.

This function returns meaningful value only if last odbc query failed (i.e. odbc_exec() returned FALSE).

参见

  • odbc_errormsg() - Get the last error message
  • odbc_exec() - Prepare and execute an SQL statement

odbc_do
odbc_errormsg
ODBC 函数


Get the last error message

odbc_error
odbc_exec
ODBC 函数
PHP Manual

odbc_errormsg

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

odbc_errormsg — Get the last error message

说明

string odbc_errormsg ([ resource $connection_id ] )

Returns a string containing the last ODBC error message, or an empty string if there has been no errors.

参数

connection_id

ODBC 连接标识符，详见 odbc_connect()。

返回值

If connection_id is specified, the last state of that connection is returned, else the last state of any connection is returned.

This function returns meaningful value only if last odbc query failed (i.e. odbc_exec() returned FALSE).

参见

  • odbc_error() - Get the last error code
  • odbc_exec() - Prepare and execute an SQL statement

odbc_error
odbc_exec
ODBC 函数


Prepare and execute an SQL statement

odbc_errormsg
odbc_execute
ODBC 函数
PHP Manual

odbc_exec

(PHP 4, PHP 5, PHP 7)

odbc_exec — Prepare and execute an SQL statement

说明

resource odbc_exec ( resource $connection_id , string $query_string [, int $flags ] )

Sends an SQL statement to the database server.

参数

connection_id

ODBC 连接标识符，详见 odbc_connect()。

query_string

The SQL statement.

flags

This parameter is currently not used.

返回值

Returns an ODBC result identifier if the SQL command was executed successfully, or FALSE on error.

参见

  • odbc_prepare() - Prepares a statement for execution
  • odbc_execute() - Execute a prepared statement

odbc_errormsg
odbc_execute
ODBC 函数


Execute a prepared statement

odbc_exec
odbc_fetch_array
ODBC 函数
PHP Manual

odbc_execute

(PHP 4, PHP 5, PHP 7)

odbc_execute — Execute a prepared statement

说明

bool odbc_execute ( resource $result_id [, array $parameters_array ] )

Executes a statement prepared with odbc_prepare().

参数

result_id

The result id resource, from odbc_prepare().

parameters_array

Parameters in parameter_array will be substituted for placeholders in the prepared statement in order. Elements of this array will be converted to strings by calling this function.

Any parameters in parameter_array which start and end with single quotes will be taken as the name of a file to read and send to the database server as the data for the appropriate placeholder.

If you wish to store a string which actually begins and ends with single quotes, you must add a space or other non-single-quote character to the beginning or end of the parameter, which will prevent the parameter from being taken as a file name. If this is not an option, then you must use another mechanism to store the string, such as executing the query directly with odbc_exec()).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 odbc_execute() and odbc_prepare() example

In the following code, $success will only be TRUE if all three parameters to myproc are IN parameters:

<?php
$a = 1;
$b = 2;
$c = 3;
$stmt    = odbc_prepare($conn, 'CALL myproc(?,?,?)');
$success = odbc_execute($stmt, array($a, $b, $c));
?>

If you need to call a stored procedure using INOUT or OUT parameters, the recommended workaround is to use a native extension for your database (for example, mssql for MS SQL Server, or oci8 for Oracle).

更新日志

版本 | 说明
4.2.0 | File reading is now subject to 安全模式 and open-basedir restrictions in parameters_array.

参见

  • odbc_prepare() - Prepares a statement for execution

odbc_exec
odbc_fetch_array
ODBC 函数


Fetch a result row as an associative array

odbc_execute
odbc_fetch_into
ODBC 函数
PHP Manual

odbc_fetch_array

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

odbc_fetch_array — Fetch a result row as an associative array

说明

array odbc_fetch_array ( resource $result [, int $rownumber ] )

Fetch an associative array from an ODBC query.

参数

result

The result resource from odbc_exec().

rownumber

Optionally choose which row number to retrieve.

返回值

Returns an array that corresponds to the fetched row, or FALSE if there are no more rows.

注释

Note: This function exists when compiled with DBMaker, IBM DB2 or UnixODBC support.

参见

  • odbc_fetch_row() - Fetch a row
  • odbc_fetch_object() - Fetch a result row as an object
  • odbc_num_rows() - Number of rows in a result

odbc_execute
odbc_fetch_into
ODBC 函数


Fetch one result row into array

odbc_fetch_array
odbc_fetch_object
ODBC 函数
PHP Manual

odbc_fetch_into

(PHP 4, PHP 5, PHP 7)

odbc_fetch_into — Fetch one result row into array

说明

int odbc_fetch_into ( resource $result_id , array &$result_array [, int $rownumber ] )

Fetch one result row into array.

参数

result_id

The result resource.

result_array

The result array that can be of any type since it will be converted to type array. The array will contain the column values starting at array index 0.

rownumber

The row number.

返回值

Returns the number of columns in the result; FALSE on error.

范例

Example #1 odbc_fetch_into() examples

<?php
$rc = odbc_fetch_into($res_id, $my_array);
?>

or

<?php
$rc = odbc_fetch_into($res_id, $my_array, 2);
?>

odbc_fetch_array
odbc_fetch_object
ODBC 函数


Fetch a result row as an object

odbc_fetch_into
odbc_fetch_row
ODBC 函数
PHP Manual

odbc_fetch_object

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

odbc_fetch_object — Fetch a result row as an object

说明

object odbc_fetch_object ( resource $result [, int $rownumber ] )

Fetch an object from an ODBC query.

参数

result

The result resource from odbc_exec().

rownumber

Optionally choose which row number to retrieve.

返回值

Returns an object that corresponds to the fetched row, or FALSE if there are no more rows.

注释

Note: This function exists when compiled with DBMaker, IBM DB2 or UnixODBC support.

参见

  • odbc_fetch_row() - Fetch a row
  • odbc_fetch_array() - Fetch a result row as an associative array
  • odbc_num_rows() - Number of rows in a result

odbc_fetch_into
odbc_fetch_row
ODBC 函数


Fetch a row

odbc_fetch_object
odbc_field_len
ODBC 函数
PHP Manual

odbc_fetch_row

(PHP 4, PHP 5, PHP 7)

odbc_fetch_row — Fetch a row

说明

bool odbc_fetch_row ( resource $result_id [, int $row_number ] )

Fetches a row of the data that was returned by odbc_do() or odbc_exec(). After odbc_fetch_row() is called, the fields of that row can be accessed with odbc_result().

参数

result_id

The result identifier.

row_number

If row_number is not specified, odbc_fetch_row() will try to fetch the next row in the result set. Calls to odbc_fetch_row() with and without row_number can be mixed.

To step through the result more than once, you can call odbc_fetch_row() with row_number 1, and then continue doing odbc_fetch_row() without row_number to review the result. If a driver doesn't support fetching rows by number, the row_number parameter is ignored.

返回值

Returns TRUE if there was a row, FALSE otherwise.

odbc_fetch_object
odbc_field_len
ODBC 函数


Get the length (precision) of a field

odbc_fetch_row
odbc_field_name
ODBC 函数
PHP Manual

odbc_field_len

(PHP 4, PHP 5, PHP 7)

odbc_field_len — Get the length (precision) of a field

说明

int odbc_field_len ( resource $result_id , int $field_number )

Gets the length of the field referenced by number in the given result identifier.

参数

result_id

The result identifier.

field_number

The field number. Field numbering starts at 1.

返回值

Returns the field length, or FALSE on error.

参见

  • odbc_field_scale() - Get the scale of a field to get the scale of a floating point number

odbc_fetch_row
odbc_field_name
ODBC 函数


Get the columnname

odbc_field_len
odbc_field_num
ODBC 函数
PHP Manual

odbc_field_name

(PHP 4, PHP 5, PHP 7)

odbc_field_name — Get the columnname

说明

string odbc_field_name ( resource $result_id , int $field_number )

Gets the name of the field occupying the given column number in the given result identifier.

参数

result_id

The result identifier.

field_number

The field number. Field numbering starts at 1.

返回值

Returns the field name as a string, or FALSE on error.

odbc_field_len
odbc_field_num
ODBC 函数


Return column number

odbc_field_name
odbc_field_precision
ODBC 函数
PHP Manual

odbc_field_num

(PHP 4, PHP 5, PHP 7)

odbc_field_num — Return column number

说明

int odbc_field_num ( resource $result_id , string $field_name )

Gets the number of the column slot that corresponds to the named field in the given result identifier.

参数

result_id

The result identifier.

field_name

The field name.

返回值

Returns the field number as a integer, or FALSE on error. Field numbering starts at 1.

odbc_field_name
odbc_field_precision
ODBC 函数


别名 odbc_field_len

odbc_field_num
odbc_field_scale
ODBC 函数
PHP Manual

odbc_field_precision

(PHP 4, PHP 5, PHP 7)

odbc_field_precision — 别名 odbc_field_len()

说明

此函数是该函数的别名： odbc_field_len().

参见

  • odbc_field_scale() - Get the scale of a field to get the scale of a floating point number.

odbc_field_num
odbc_field_scale
ODBC 函数


Get the scale of a field

odbc_field_precision
odbc_field_type
ODBC 函数
PHP Manual

odbc_field_scale

(PHP 4, PHP 5, PHP 7)

odbc_field_scale — Get the scale of a field

说明

int odbc_field_scale ( resource $result_id , int $field_number )

Gets the scale of the field referenced by number in the given result identifier.

参数

result_id

The result identifier.

field_number

The field number. Field numbering starts at 1.

返回值

Returns the field scale as a integer, or FALSE on error.

odbc_field_precision
odbc_field_type
ODBC 函数


Datatype of a field

odbc_field_scale
odbc_foreignkeys
ODBC 函数
PHP Manual

odbc_field_type

(PHP 4, PHP 5, PHP 7)

odbc_field_type — Datatype of a field

说明

string odbc_field_type ( resource $result_id , int $field_number )

Gets the SQL type of the field referenced by number in the given result identifier.

参数

result_id

The result identifier.

field_number

The field number. Field numbering starts at 1.

返回值

Returns the field type as a string, or FALSE on error.

odbc_field_scale
odbc_foreignkeys
ODBC 函数


Retrieves a list of foreign keys

odbc_field_type
odbc_free_result
ODBC 函数
PHP Manual

odbc_foreignkeys

(PHP 4, PHP 5, PHP 7)

odbc_foreignkeys — Retrieves a list of foreign keys

说明

resource odbc_foreignkeys ( resource $connection_id , string $pk_qualifier , string $pk_owner , string $pk_table , string $fk_qualifier , string $fk_owner , string $fk_table )

Retrieves a list of foreign keys in the specified table or a list of foreign keys in other tables that refer to the primary key in the specified table

参数

connection_id

ODBC 连接标识符，详见 odbc_connect()。

pk_qualifier

The primary key qualifier.

pk_owner

The primary key owner.

pk_table

The primary key table.

fk_qualifier

The foreign key qualifier.

fk_owner

The foreign key owner.

fk_table

The foreign key table.

返回值

Returns an ODBC result identifier 或者在失败时返回 FALSE.

The result set has the following columns:

  • PKTABLE_QUALIFIER
  • PKTABLE_OWNER
  • PKTABLE_NAME
  • PKCOLUMN_NAME
  • FKTABLE_QUALIFIER
  • FKTABLE_OWNER
  • FKTABLE_NAME
  • FKCOLUMN_NAME
  • KEY_SEQ
  • UPDATE_RULE
  • DELETE_RULE
  • FK_NAME
  • PK_NAME

If pk_table contains a table name, odbc_foreignkeys() returns a result set containing the primary key of the specified table and all of the foreign keys that refer to it.

If fk_table contains a table name, odbc_foreignkeys() returns a result set containing all of the foreign keys in the specified table and the primary keys (in other tables) to which they refer.

If both pk_table and fk_table contain table names, odbc_foreignkeys() returns the foreign keys in the table specified in fk_table that refer to the primary key of the table specified in pk_table. This should be one key at most.

odbc_field_type
odbc_free_result
ODBC 函数


Free resources associated with a result

odbc_foreignkeys
odbc_gettypeinfo
ODBC 函数
PHP Manual

odbc_free_result

(PHP 4, PHP 5, PHP 7)

odbc_free_result — Free resources associated with a result

说明

bool odbc_free_result ( resource $result_id )

Free resources associated with a result.

odbc_free_result() only needs to be called if you are worried about using too much memory while your script is running. All result memory will automatically be freed when the script is finished.

参数

result_id

The result identifier.

返回值

Always returns TRUE.

注释

Note:

If auto-commit is disabled (see odbc_autocommit()) and you call odbc_free_result() before committing, all pending transactions are rolled back.

odbc_foreignkeys
odbc_gettypeinfo
ODBC 函数


Retrieves information about data types supported by the data source

odbc_free_result
odbc_longreadlen
ODBC 函数
PHP Manual

odbc_gettypeinfo

(PHP 4, PHP 5, PHP 7)

odbc_gettypeinfo — Retrieves information about data types supported by the data source

说明

resource odbc_gettypeinfo ( resource $connection_id [, int $data_type ] )

Retrieves information about data types supported by the data source.

参数

connection_id

ODBC 连接标识符，详见 odbc_connect()。

data_type

The data type, which can be used to restrict the information to a single data type.

返回值

Returns an ODBC result identifier or FALSE on failure.

The result set has the following columns:

  • TYPE_NAME
  • DATA_TYPE
  • PRECISION
  • LITERAL_PREFIX
  • LITERAL_SUFFIX
  • CREATE_PARAMS
  • NULLABLE
  • CASE_SENSITIVE
  • SEARCHABLE
  • UNSIGNED_ATTRIBUTE
  • MONEY
  • AUTO_INCREMENT
  • LOCAL_TYPE_NAME
  • MINIMUM_SCALE
  • MAXIMUM_SCALE

The result set is ordered by DATA_TYPE and TYPE_NAME.

odbc_free_result
odbc_longreadlen
ODBC 函数


Handling of LONG columns

odbc_gettypeinfo
odbc_next_result
ODBC 函数
PHP Manual

odbc_longreadlen

(PHP 4, PHP 5, PHP 7)

odbc_longreadlen — Handling of LONG columns

说明

bool odbc_longreadlen ( resource $result_id , int $length )

Enables handling of LONG and LONGVARBINARY columns.

参数

result_id

The result identifier.

length

The number of bytes returned to PHP is controlled by the parameter length. If it is set to 0, Long column data is passed through to the client.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note:

Handling of LONGVARBINARY columns is also affected by odbc_binmode().

odbc_gettypeinfo
odbc_next_result
ODBC 函数


Checks if multiple results are available

odbc_longreadlen
odbc_num_fields
ODBC 函数
PHP Manual

odbc_next_result

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

odbc_next_result — Checks if multiple results are available

说明

bool odbc_next_result ( resource $result_id )

Checks if there are more result sets available as well as allowing access to the next result set via odbc_fetch_array(), odbc_fetch_row(), odbc_result(), etc.

参数

result_id

The result identifier.

返回值

Returns TRUE if there are more result sets, FALSE otherwise.

范例

Example #1 odbc_next_result()

<?php
$r_Connection = odbc_connect($dsn, $username, $password);

$s_SQL = <<<END_SQL
SELECT 'A'
SELECT 'B'
SELECT 'C'
END_SQL;

$r_Results = odbc_exec($r_Connection, $s_SQL);

$a_Row1 = odbc_fetch_array($r_Results);
$a_Row2 = odbc_fetch_array($r_Results);
echo "Dump first result set";
var_dump($a_Row1, $a_Row2);

echo "Get second results set ";
var_dump(odbc_next_result($r_Results));

$a_Row1 = odbc_fetch_array($r_Results);
$a_Row2 = odbc_fetch_array($r_Results);
echo "Dump second result set ";
var_dump($a_Row1, $a_Row2);

echo "Get third results set ";
var_dump(odbc_next_result($r_Results));

$a_Row1 = odbc_fetch_array($r_Results);
$a_Row2 = odbc_fetch_array($r_Results);
echo "Dump third result set ";
var_dump($a_Row1, $a_Row2);

echo "Try for a fourth result set ";
var_dump(odbc_next_result($r_Results));
?>

以上例程会输出：

Dump first result set array(1) {
  ["A"]=>
  string(1) "A"
}
bool(false)
Get second results set bool(true)
Dump second result set array(1) {
  ["B"]=>
  string(1) "B"
}
bool(false)
Get third results set bool(true)
Dump third result set array(1) {
  ["C"]=>
  string(1) "C"
}
bool(false)
Try for a fourth result set bool(false)

odbc_longreadlen
odbc_num_fields
ODBC 函数


Number of columns in a result

odbc_next_result
odbc_num_rows
ODBC 函数
PHP Manual

odbc_num_fields

(PHP 4, PHP 5, PHP 7)

odbc_num_fields — Number of columns in a result

说明

int odbc_num_fields ( resource $result_id )

Gets the number of fields (columns) in an ODBC result.

参数

result_id

The result identifier returned by odbc_exec().

返回值

Returns the number of fields, or -1 on error.

odbc_next_result
odbc_num_rows
ODBC 函数


Number of rows in a result

odbc_num_fields
odbc_pconnect
ODBC 函数
PHP Manual

odbc_num_rows

(PHP 4, PHP 5, PHP 7)

odbc_num_rows — Number of rows in a result

说明

int odbc_num_rows ( resource $result_id )

Gets the number of rows in a result. For INSERT, UPDATE and DELETE statements odbc_num_rows() returns the number of rows affected. For a SELECT clause this can be the number of rows available.

参数

result_id

The result identifier returned by odbc_exec().

返回值

Returns the number of rows in an ODBC result. This function will return -1 on error.

注释

Note:

Using odbc_num_rows() to determine the number of rows available after a SELECT will return -1 with many drivers.

odbc_num_fields
odbc_pconnect
ODBC 函数


Open a persistent database connection

odbc_num_rows
odbc_prepare
ODBC 函数
PHP Manual

odbc_pconnect

(PHP 4, PHP 5, PHP 7)

odbc_pconnect — Open a persistent database connection

说明

resource odbc_pconnect ( string $dsn , string $user , string $password [, int $cursor_type ] )

Opens a persistent database connection.

This function is much like odbc_connect(), except that the connection is not really closed when the script has finished. Future requests for a connection with the same dsn, user, password combination (via odbc_connect() and odbc_pconnect()) can reuse the persistent connection.

参数

See odbc_connect() for details.

返回值

Returns an ODBC connection id or 0 (FALSE) on error.

注释

Note: Persistent connections have no effect if PHP is used as a CGI program.

参见

  • odbc_connect() - Connect to a datasource
  • Persistent Database Connections

odbc_num_rows
odbc_prepare
ODBC 函数


Prepares a statement for execution

odbc_pconnect
odbc_primarykeys
ODBC 函数
PHP Manual

odbc_prepare

(PHP 4, PHP 5, PHP 7)

odbc_prepare — Prepares a statement for execution

说明

resource odbc_prepare ( resource $connection_id , string $query_string )

Prepares a statement for execution. The result identifier can be used later to execute the statement with odbc_execute().

Some databases (such as IBM DB2, MS SQL Server, and Oracle) support stored procedures that accept parameters of type IN, INOUT, and OUT as defined by the ODBC specification. However, the Unified ODBC driver currently only supports parameters of type IN to stored procedures.

参数

connection_id

ODBC 连接标识符，详见 odbc_connect()。

query_string

The query string statement being prepared.

返回值

Returns an ODBC result identifier if the SQL command was prepared successfully. Returns FALSE on error.

范例

Example #1 odbc_execute() and odbc_prepare() example

In the following code, $success will only be TRUE if all three parameters to myproc are IN parameters:

<?php
$a = 1;
$b = 2;
$c = 3;
$stmt    = odbc_prepare($conn, 'CALL myproc(?,?,?)');
$success = odbc_execute($stmt, array($a, $b, $c));
?>

If you need to call a stored procedure using INOUT or OUT parameters, the recommended workaround is to use a native extension for your database (for example, mssql for MS SQL Server, or oci8 for Oracle).

参见

  • odbc_execute() - Execute a prepared statement

odbc_pconnect
odbc_primarykeys
ODBC 函数


Gets the primary keys for a table

odbc_prepare
odbc_procedurecolumns
ODBC 函数
PHP Manual

odbc_primarykeys

(PHP 4, PHP 5, PHP 7)

odbc_primarykeys — Gets the primary keys for a table

说明

resource odbc_primarykeys ( resource $connection_id , string $qualifier , string $owner , string $table )

Returns a result identifier that can be used to fetch the column names that comprise the primary key for a table.

参数

connection_id

ODBC 连接标识符，详见 odbc_connect()。

qualifier

owner

table

返回值

Returns an ODBC result identifier 或者在失败时返回 FALSE.

The result set has the following columns:

  • TABLE_QUALIFIER
  • TABLE_OWNER
  • TABLE_NAME
  • COLUMN_NAME
  • KEY_SEQ
  • PK_NAME

odbc_prepare
odbc_procedurecolumns
ODBC 函数


Retrieve information about parameters to procedures

odbc_primarykeys
odbc_procedures
ODBC 函数
PHP Manual

odbc_procedurecolumns

(PHP 4, PHP 5, PHP 7)

odbc_procedurecolumns — Retrieve information about parameters to procedures

说明

resource odbc_procedurecolumns ( resource $connection_id )
resource odbc_procedurecolumns ( resource $connection_id , string $qualifier , string $owner , string $proc , string $column )

Retrieve information about parameters to procedures.

参数

connection_id

ODBC 连接标识符，详见 odbc_connect()。

qualifier

The qualifier.

owner

The owner. 此参数接受下列查询模式："%" 来匹配零到多个字符，"_" 来匹配单个字符。

proc

The proc. 此参数接受下列查询模式："%" 来匹配零到多个字符，"_" 来匹配单个字符。

column

The column. 此参数接受下列查询模式："%" 来匹配零到多个字符，"_" 来匹配单个字符。

返回值

Returns the list of input and output parameters, as well as the columns that make up the result set for the specified procedures. Returns an ODBC result identifier 或者在失败时返回 FALSE.

The result set has the following columns:

  • PROCEDURE_QUALIFIER
  • PROCEDURE_OWNER
  • PROCEDURE_NAME
  • COLUMN_NAME
  • COLUMN_TYPE
  • DATA_TYPE
  • TYPE_NAME
  • PRECISION
  • LENGTH
  • SCALE
  • RADIX
  • NULLABLE
  • REMARKS

The result set is ordered by PROCEDURE_QUALIFIER, PROCEDURE_OWNER, PROCEDURE_NAME and COLUMN_TYPE.

odbc_primarykeys
odbc_procedures
ODBC 函数


Get the list of procedures stored in a specific data source

odbc_procedurecolumns
odbc_result_all
ODBC 函数
PHP Manual

odbc_procedures

(PHP 4, PHP 5, PHP 7)

odbc_procedures — Get the list of procedures stored in a specific data source

说明

resource odbc_procedures ( resource $connection_id )
resource odbc_procedures ( resource $connection_id , string $qualifier , string $owner , string $name )

Lists all procedures in the requested range.

参数

connection_id

ODBC 连接标识符，详见 odbc_connect()。

qualifier

The qualifier.

owner

The owner. 此参数接受下列查询模式："%" 来匹配零到多个字符，"_" 来匹配单个字符。

name

The name. 此参数接受下列查询模式："%" 来匹配零到多个字符，"_" 来匹配单个字符。

返回值

Returns an ODBC result identifier containing the information 或者在失败时返回 FALSE.

The result set has the following columns:

  • PROCEDURE_QUALIFIER
  • PROCEDURE_OWNER
  • PROCEDURE_NAME
  • NUM_INPUT_PARAMS
  • NUM_OUTPUT_PARAMS
  • NUM_RESULT_SETS
  • REMARKS
  • PROCEDURE_TYPE

odbc_procedurecolumns
odbc_result_all
ODBC 函数


Print result as HTML table

odbc_procedures
odbc_result
ODBC 函数
PHP Manual

odbc_result_all

(PHP 4, PHP 5, PHP 7)

odbc_result_all — Print result as HTML table

说明

int odbc_result_all ( resource $result_id [, string $format ] )

Prints all rows from a result identifier produced by odbc_exec(). The result is printed in HTML table format.

参数

result_id

The result identifier.

format

Additional overall table formatting.

返回值

Returns the number of rows in the result or FALSE on error.

odbc_procedures
odbc_result
ODBC 函数


Get result data

odbc_result_all
odbc_rollback
ODBC 函数
PHP Manual

odbc_result

(PHP 4, PHP 5, PHP 7)

odbc_result — Get result data

说明

mixed odbc_result ( resource $result_id , mixed $field )

Get result data

参数

result_id

The ODBC resource.

field

The field name being retrieved. It can either be an integer containing the column number of the field you want; or it can be a string containing the name of the field.

返回值

Returns the string contents of the field, FALSE on error, NULL for NULL data, or TRUE for binary data.

范例

The first call to odbc_result() returns the value of the third field in the current record of the query result. The second function call to odbc_result() returns the value of the field whose field name is "val" in the current record of the query result. An error occurs if a column number parameter for a field is less than one or exceeds the number of columns (or fields) in the current record. Similarly, an error occurs if a field with a name that is not one of the fieldnames of the table(s) that is(are) being queried.

Example #1 odbc_result() examples

<?php
$item_3   = odbc_result($Query_ID, 3);
$item_val = odbc_result($Query_ID, "val");
?>

注释

Field indices start from 1. Regarding the way binary or long column data is returned refer to odbc_binmode() and odbc_longreadlen().

odbc_result_all
odbc_rollback
ODBC 函数


Rollback a transaction

odbc_result
odbc_setoption
ODBC 函数
PHP Manual

odbc_rollback

(PHP 4, PHP 5, PHP 7)

odbc_rollback — Rollback a transaction

说明

bool odbc_rollback ( resource $connection_id )

Rolls back all pending statements on the connection.

参数

connection_id

ODBC 连接标识符，详见 odbc_connect()。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

odbc_result
odbc_setoption
ODBC 函数


Adjust ODBC settings

odbc_rollback
odbc_specialcolumns
ODBC 函数
PHP Manual

odbc_setoption

(PHP 4, PHP 5, PHP 7)

odbc_setoption — Adjust ODBC settings

说明

bool odbc_setoption ( resource $id , int $function , int $option , int $param )

This function allows fiddling with the ODBC options for a particular connection or query result. It was written to help find work around to problems in quirky ODBC drivers. You should probably only use this function if you are an ODBC programmer and understand the effects the various options will have. You will certainly need a good ODBC reference to explain all the different options and values that can be used. Different driver versions support different options.

Because the effects may vary depending on the ODBC driver, use of this function in scripts to be made publicly available is strongly discouraged. Also, some ODBC options are not available to this function because they must be set before the connection is established or the query is prepared. However, if on a particular job it can make PHP work so your boss doesn't tell you to use a commercial product, that's all that really matters.

参数

id

Is a connection id or result id on which to change the settings. For SQLSetConnectOption(), this is a connection id. For SQLSetStmtOption(), this is a result id.

function

Is the ODBC function to use. The value should be 1 for SQLSetConnectOption() and 2 for SQLSetStmtOption().

option

The option to set.

param

The value for the given option.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 odbc_setoption() examples

<?php
// 1. Option 102 of SQLSetConnectOption() is SQL_AUTOCOMMIT.
//    Value 1 of SQL_AUTOCOMMIT is SQL_AUTOCOMMIT_ON.
//    This example has the same effect as
//    odbc_autocommit($conn, true);

odbc_setoption($conn, 1, 102, 1);

// 2. Option 0 of SQLSetStmtOption() is SQL_QUERY_TIMEOUT.
//    This example sets the query to timeout after 30 seconds.

$result = odbc_prepare($conn, $sql);
odbc_setoption($result, 2, 0, 30);
odbc_execute($result);
?>

odbc_rollback
odbc_specialcolumns
ODBC 函数


Retrieves special columns

odbc_setoption
odbc_statistics
ODBC 函数
PHP Manual

odbc_specialcolumns

(PHP 4, PHP 5, PHP 7)

odbc_specialcolumns — Retrieves special columns

说明

resource odbc_specialcolumns ( resource $connection_id , int $type , string $qualifier , string $owner , string $table , int $scope , int $nullable )

Retrieves either the optimal set of columns that uniquely identifies a row in the table, or columns that are automatically updated when any value in the row is updated by a transaction.

参数

connection_id

ODBC 连接标识符，详见 odbc_connect()。

type
When the type argument is SQL_BEST_ROWID, odbc_specialcolumns() returns the column or columns that uniquely identify each row in the table. When the type argument is SQL_ROWVER, odbc_specialcolumns() returns the column or columns in the specified table, if any, that are automatically updated by the data source when any value in the row is updated by any transaction.
qualifier

The qualifier.

owner

The owner.

table

The table.

scope

The scope, which orders the result set.

nullable

The nullable option.

返回值

Returns an ODBC result identifier or FALSE on failure.

The result set has the following columns:

  • SCOPE
  • COLUMN_NAME
  • DATA_TYPE
  • TYPE_NAME
  • PRECISION
  • LENGTH
  • SCALE
  • PSEUDO_COLUMN

odbc_setoption
odbc_statistics
ODBC 函数


Retrieve statistics about a table

odbc_specialcolumns
odbc_tableprivileges
ODBC 函数
PHP Manual

odbc_statistics

(PHP 4, PHP 5, PHP 7)

odbc_statistics — Retrieve statistics about a table

说明

resource odbc_statistics ( resource $connection_id , string $qualifier , string $owner , string $table_name , int $unique , int $accuracy )

Get statistics about a table and its indexes.

参数

connection_id

ODBC 连接标识符，详见 odbc_connect()。

qualifier

The qualifier.

owner

The owner.

table_name

The table name.

unique

The unique attribute.

accuracy

The accuracy.

返回值

Returns an ODBC result identifier 或者在失败时返回 FALSE.

The result set has the following columns:

  • TABLE_QUALIFIER
  • TABLE_OWNER
  • TABLE_NAME
  • NON_UNIQUE
  • INDEX_QUALIFIER
  • INDEX_NAME
  • TYPE
  • SEQ_IN_INDEX
  • COLUMN_NAME
  • COLLATION
  • CARDINALITY
  • PAGES
  • FILTER_CONDITION

The result set is ordered by NON_UNIQUE, TYPE, INDEX_QUALIFIER, INDEX_NAME and SEQ_IN_INDEX.

odbc_specialcolumns
odbc_tableprivileges
ODBC 函数


Lists tables and the privileges associated with each table

odbc_statistics
odbc_tables
ODBC 函数
PHP Manual

odbc_tableprivileges

(PHP 4, PHP 5, PHP 7)

odbc_tableprivileges — Lists tables and the privileges associated with each table

说明

resource odbc_tableprivileges ( resource $connection_id , string $qualifier , string $owner , string $name )

Lists tables in the requested range and the privileges associated with each table.

参数

connection_id

ODBC 连接标识符，详见 odbc_connect()。

qualifier

The qualifier.

owner

The owner. Accepts the following search patterns: ('%' to match zero or more characters and '_' to match a single character)

name

The name. Accepts the following search patterns: ('%' to match zero or more characters and '_' to match a single character)

返回值

An ODBC result identifier 或者在失败时返回 FALSE.

The result set has the following columns:

  • TABLE_QUALIFIER
  • TABLE_OWNER
  • TABLE_NAME
  • GRANTOR
  • GRANTEE
  • PRIVILEGE
  • IS_GRANTABLE

The result set is ordered by TABLE_QUALIFIER, TABLE_OWNER and TABLE_NAME.

odbc_statistics
odbc_tables
ODBC 函数


Get the list of table names stored in a specific data source

odbc_tableprivileges
PDO
ODBC 函数
PHP Manual

odbc_tables

(PHP 4, PHP 5, PHP 7)

odbc_tables — Get the list of table names stored in a specific data source

说明

resource odbc_tables ( resource $connection_id [, string $qualifier [, string $owner [, string $name [, string $types ]]]] )

Lists all tables in the requested range.

To support enumeration of qualifiers, owners, and table types, the following special semantics for the qualifier, owner, name, and table_type are available:

  • If qualifier is a single percent character (%) and owner and name are empty strings, then the result set contains a list of valid qualifiers for the data source. (All columns except the TABLE_QUALIFIER column contain NULLs.)
  • If owner is a single percent character (%) and qualifier and name are empty strings, then the result set contains a list of valid owners for the data source. (All columns except the TABLE_OWNER column contain NULLs.)
  • If table_type is a single percent character (%) and qualifier, owner and name are empty strings, then the result set contains a list of valid table types for the data source. (All columns except the TABLE_TYPE column contain NULLs.)

参数

connection_id

ODBC 连接标识符，详见 odbc_connect()。

qualifier

The qualifier.

owner

The owner. Accepts search patterns ('%' to match zero or more characters and '_' to match a single character).

name

The name. Accepts search patterns ('%' to match zero or more characters and '_' to match a single character).

types

If table_type is not an empty string, it must contain a list of comma-separated values for the types of interest; each value may be enclosed in single quotes (') or unquoted. For example, "'TABLE','VIEW'" or "TABLE, VIEW". If the data source does not support a specified table type, odbc_tables() does not return any results for that type.

返回值

Returns an ODBC result identifier containing the information 或者在失败时返回 FALSE.

The result set has the following columns:

  • TABLE_QUALIFIER
  • TABLE_OWNER
  • TABLE_NAME
  • TABLE_TYPE
  • REMARKS

The result set is ordered by TABLE_TYPE, TABLE_QUALIFIER, TABLE_OWNER and TABLE_NAME.

参见

  • odbc_tableprivileges() - Lists tables and the privileges associated with each table

odbc_tableprivileges
PDO
ODBC 函数


PHP 数据对象

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 连接与连接管理
  • 事务与自动提交
  • 预处理语句与存储过程
  • 错误与错误处理
  • 大对象 (LOBs)
  • PDO — PDO 类
    • PDO::beginTransaction — 启动一个事务
    • PDO::commit — 提交一个事务
    • PDO::__construct — 创建一个表示数据库连接的 PDO 实例
    • PDO::errorCode — 获取跟数据库句柄上一次操作相关的 SQLSTATE
    • PDO::errorInfo — Fetch extended error information associated with the last operation on the database handle
    • PDO::exec — 执行一条 SQL 语句，并返回受影响的行数
    • PDO::getAttribute — 取回一个数据库连接的属性
    • PDO::getAvailableDrivers — 返回一个可用驱动的数组
    • PDO::inTransaction — 检查是否在一个事务内
    • PDO::lastInsertId — 返回最后插入行的ID或序列值
    • PDO::prepare — Prepares a statement for execution and returns a statement object
    • PDO::query — Executes an SQL statement, returning a result set as a PDOStatement object
    • PDO::quote — Quotes a string for use in a query.
    • PDO::rollBack — 回滚一个事务
    • PDO::setAttribute — 设置属性
  • PDOStatement — PDOStatement 类
    • PDOStatement::bindColumn — 绑定一列到一个 PHP 变量
    • PDOStatement::bindParam — 绑定一个参数到指定的变量名
    • PDOStatement::bindValue — 把一个值绑定到一个参数
    • PDOStatement::closeCursor — 关闭游标，使语句能再次被执行。
    • PDOStatement::columnCount — 返回结果集中的列数
    • PDOStatement::debugDumpParams — 打印一条 SQL 预处理命令
    • PDOStatement::errorCode — 获取跟上一次语句句柄操作相关的 SQLSTATE
    • PDOStatement::errorInfo — 获取跟上一次语句句柄操作相关的扩展错误信息
    • PDOStatement::execute — 执行一条预处理语句
    • PDOStatement::fetch — 从结果集中获取下一行
    • PDOStatement::fetchAll — 返回一个包含结果集中所有行的数组
    • PDOStatement::fetchColumn — 从结果集中的下一行返回单独的一列。
    • PDOStatement::fetchObject — 获取下一行并作为一个对象返回。
    • PDOStatement::getAttribute — 检索一个语句属性
    • PDOStatement::getColumnMeta — 返回结果集中一列的元数据
    • PDOStatement::nextRowset — 在一个多行集语句句柄中推进到下一个行集
    • PDOStatement::rowCount — 返回受上一个 SQL 语句影响的行数
    • PDOStatement::setAttribute — 设置一个语句属性
    • PDOStatement::setFetchMode — 为语句设置默认的获取模式。
  • PDOException — PDOException 异常类
  • PDO 驱动
    • CUBRID (PDO) — CUBRID Functions (PDO_CUBRID)
    • MS SQL Server (PDO) — Microsoft SQL Server and Sybase Functions (PDO_DBLIB)
    • Firebird (PDO) — Firebird Functions (PDO_FIREBIRD)
    • IBM (PDO) — IBM Functions (PDO_IBM)
    • Informix (PDO) — Informix Functions (PDO_INFORMIX)
    • MySQL (PDO) — MySQL Functions (PDO_MYSQL)
    • MS SQL Server (PDO) — Microsoft SQL Server Functions (PDO_SQLSRV)
    • Oracle (PDO) — Oracle Functions (PDO_OCI)
    • ODBC and DB2 (PDO) — ODBC and DB2 Functions (PDO_ODBC)
    • PostgreSQL (PDO) — PostgreSQL Functions (PDO_PGSQL)
    • SQLite (PDO) — SQLite Functions (PDO_SQLITE)
    • 4D (PDO) — 4D Functions (PDO_4D)
odbc_tables
简介
数据库抽象层


简介

PHP 数据对象 （PDO） 扩展为PHP访问数据库定义了一个轻量级的一致接口。实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能。 注意利用 PDO 扩展自身并不能实现任何数据库功能；必须使用一个 具体数据库的 PDO 驱动 来访问数据库服务。

PDO 提供了一个 数据访问 抽象层，这意味着，不管使用哪种数据库，都可以用相同的函数（方法）来查询和获取数据。 PDO 不提供 数据库 抽象层；它不会重写 SQL，也不会模拟缺失的特性。如果需要的话，应该使用一个成熟的抽象层。

从 PHP 5.1 开始附带了 PDO，在 PHP 5.0 中是作为一个 PECL 扩展使用。 PDO 需要PHP 5 核心的新 OO 特性，因此不能在较早版本的 PHP 上运行。

PDO
安装／配置
PDO


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
PDO


安装

在 Unix 系统上安装 PDO

  1. 自 PHP 5.1.0 起，PDO 和 PDO_SQLITE 驱动默认可用。对于自己选择的数据库，需要启用相应的 POD 驱动； 查阅 特定数据库的 PDO 驱动 文档获取更多此内容。

    Note:

    当以共享扩展（不推荐）构建 PDO 时，所有 PDO 驱动 必须 在 PDO 自身 之后 加载。

  2. 当作为一个共享模块安装 PDO 时，需要更新 php.ini 文件以便当 PHP 运行时 PDO 扩展能被自动加载。还需要在那里启用具体的数据库驱动；确保它们被列在 pdo.so 那一行之后，因为 PDO 必须在具体的 数据库扩展被载入前初始化。如果静态地构建 PDO 和 具体数据库扩展，可以跳过此步。

    extension=pdo.so

Windows 用户

  1. PDO 和所有主要的驱动作为共享扩展随 PHP 一起发布，要激活它们只需简单地编辑 php.ini 文件：

    extension=php_pdo.dll

    Note:

    这一步在 PHP 5.3及更高版本中不是必须的，对于 PDO 不再需要做为一个 DLL 文件。

  2. 下一步，选择其他具体数据库的 DLL 文件，然后要么在运行时用 dl() 载入，要么在 php.ini 中的 php_pdo.dll 后面启用。例如：

    extension=php_pdo.dll
extension=php_pdo_firebird.dll
extension=php_pdo_informix.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
extension=php_pdo_oci.dll
extension=php_pdo_oci8.dll
extension=php_pdo_odbc.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll

    那些 DLL 文件应该在系统的extension_dir 中存在。

Note:

记住：更改 php.ini 文件后需要重启 PHP 服务才能使新的配置指令生效。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

PDO 配置选项
名字 | 默认 | 可修改范围 | 更新日志
pdo.dsn.* |  | 仅 php.ini |

这是配置指令的简短说明。

pdo.dsn.* string

定义 DSN 别名。 参见 PDO::__construct() 详细说明。

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

Warning

自 PHP 5.1 起，开始使用类常量。以前的版本使用类似 PDO_PARAM_BOOL 这样的全局常量。

PDO::PARAM_BOOL (integer)
表示布尔数据类型。
PDO::PARAM_NULL (integer)
表示 SQL 中的 NULL 数据类型。
PDO::PARAM_INT (integer)
表示 SQL 中的整型。
PDO::PARAM_STR (integer)
表示 SQL 中的 CHAR、VARCHAR 或其他字符串类型。
PDO::PARAM_LOB (integer)
表示 SQL 中大对象数据类型。
PDO::PARAM_STMT (integer)
表示一个记录集类型。当前尚未被任何驱动支持。
PDO::PARAM_INPUT_OUTPUT (integer)
指定参数为一个存储过程的 INOUT 参数。必须用一个明确的 PDO::PARAM_* 数据类型跟此值进行按位或。
PDO::FETCH_LAZY (integer)
指定获取方式，将结果集中的每一行作为一个对象返回，此对象的变量名对应着列名。PDO::FETCH_LAZY 创建用来访问的对象变量名。在 PDOStatement::fetchAll() 中无效。
PDO::FETCH_ASSOC (integer)
指定获取方式，将对应结果集中的每一行作为一个由列名索引的数组返回。如果结果集中包含多个名称相同的列，则PDO::FETCH_ASSOC每个列名只返回一个值。
PDO::FETCH_NAMED (integer)
指定获取方式，将对应结果集中的每一行作为一个由列名索引的数组返回。如果结果集中包含多个名称相同的列，则PDO::FETCH_ASSOC每个列名 返回一个包含值的数组。
PDO::FETCH_NUM (integer)
指定获取方式，将对应结果集中的每一行作为一个由列号索引的数组返回，从第 0 列开始。
PDO::FETCH_BOTH (integer)
指定获取方式，将对应结果集中的每一行作为一个由列号和列名索引的数组返回，从第 0 列开始。
PDO::FETCH_OBJ (integer)
指定获取方式，将结果集中的每一行作为一个属性名对应列名的对象返回。
PDO::FETCH_BOUND (integer)
指定获取方式，返回 TRUE 且将结果集中的列值分配给通过 PDOStatement::bindParam() 或 PDOStatement::bindColumn() 方法绑定的 PHP 变量。
PDO::FETCH_COLUMN (integer)
指定获取方式，从结果集中的下一行返回所需要的那一列。
PDO::FETCH_CLASS (integer)
指定获取方式，返回一个所请求类的新实例，映射列到类中对应的属性名。

Note: 如果所请求的类中不存在该属性，则调用 __set() 魔术方法

PDO::FETCH_INTO (integer)
指定获取方式，更新一个请求类的现有实例，映射列到类中对应的属性名。
PDO::FETCH_FUNC (integer)
允许在运行中完全用自定义的方式处理数据。（仅在 PDOStatement::fetchAll() 中有效）。
PDO::FETCH_GROUP (integer)
根据值分组返回。通常和 PDO::FETCH_COLUMN 或 PDO::FETCH_KEY_PAIR 一起使用。
PDO::FETCH_UNIQUE (integer)
只取唯一值。
PDO::FETCH_KEY_PAIR (integer)
获取一个有两列的结果集到一个数组，其中第一列为键名，第二列为值。自 PHP 5.2.3 起可用。
PDO::FETCH_CLASSTYPE (integer)
根据第一列的值确定类名。
PDO::FETCH_SERIALIZE (integer)
类似 PDO::FETCH_INTO ，但是以一个序列化的字符串表示对象。自 PHP 5.1.0 起可用。从 PHP 5.3.0 开始，如果设置此标志，则类的构造函数从不会被调用。
PDO::FETCH_PROPS_LATE (integer)
设置属性前调用构造函数。自 PHP 5.2.0 起可用。
PDO::ATTR_AUTOCOMMIT (integer)
如果此值为 FALSE ，PDO 将试图禁用自动提交以便数据库连接开始一个事务。
PDO::ATTR_PREFETCH (integer)
设置预取大小来为你的应用平衡速度和内存使用。并非所有的数据库/驱动组合都支持设置预取大小。较大的预取大小导致性能提高的同时也会占用更多的内存。
PDO::ATTR_TIMEOUT (integer)
设置连接数据库的超时秒数。
PDO::ATTR_ERRMODE (integer)
关于此属性的更多信息请参见 错误及错误处理 部分。
PDO::ATTR_SERVER_VERSION (integer)
此为只读属性；返回 PDO 所连接的数据库服务的版本信息。
PDO::ATTR_CLIENT_VERSION (integer)
此为只读属性；返回 PDO 驱动所用客户端库的版本信息。
PDO::ATTR_SERVER_INFO (integer)
此为只读属性。返回一些关于 PDO 所连接的数据库服务的元信息。
PDO::ATTR_CONNECTION_STATUS (integer)
PDO::ATTR_CASE (integer)
用类似 PDO::CASE_* 的常量强制列名为指定的大小写。
PDO::ATTR_CURSOR_NAME (integer)
获取或设置使用游标的名称。当使用可滚动游标和定位更新时候非常有用。
PDO::ATTR_CURSOR (integer)
选择游标类型。 PDO 当前支持 PDO::CURSOR_FWDONLY 和 PDO::CURSOR_SCROLL。一般为 PDO::CURSOR_FWDONLY，除非确实需要一个可滚动游标。
PDO::ATTR_DRIVER_NAME (string)
返回驱动名称。

Example #1 使用 PDO::ATTR_DRIVER_NAME 的例子

<?php
if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
  echo "Running on mysql; doing something mysql specific here\n";
}
?>

PDO::ATTR_ORACLE_NULLS (integer)
在获取数据时将空字符串转换成 SQL 中的 NULL 。
PDO::ATTR_PERSISTENT (integer)
请求一个持久连接，而非创建一个新连接。关于此属性的更多信息请参见 连接与连接管理 。
PDO::ATTR_STATEMENT_CLASS (integer)
PDO::ATTR_FETCH_CATALOG_NAMES (integer)
将包含的目录名添加到结果集中的每个列名前面。目录名和列名由一个小数点分开（.）。此属性在驱动层面支持，所以有些驱动可能不支持此属性。
PDO::ATTR_FETCH_TABLE_NAMES (integer)
将包含的表名添加到结果集中的每个列名前面。表名和列名由一个小数点分开（.）。此属性在驱动层面支持，所以有些驱动可能不支持此属性。
PDO::ATTR_STRINGIFY_FETCHES (integer)
PDO::ATTR_MAX_COLUMN_LEN (integer)
PDO::ATTR_DEFAULT_FETCH_MODE (integer)
自 PHP 5.2.0 起可用。
PDO::ATTR_EMULATE_PREPARES (integer)
自 PHP 5.1.3 起可用。
PDO::ERRMODE_SILENT (integer)
如果发生错误，则不显示错误或异常。希望开发人员显式地检查错误。此为默认模式。关于此属性的更多信息请参见 错误与错误处理 。
PDO::ERRMODE_WARNING (integer)
如果发生错误，则显示一个 PHP E_WARNING 消息。关于此属性的更多信息请参见 错误与错误处理。
PDO::ERRMODE_EXCEPTION (integer)
如果发生错误，则抛出一个 PDOException 异常。关于此属性的更多信息请参见 错误与错误处理。
PDO::CASE_NATURAL (integer)
保留数据库驱动返回的列名。
PDO::CASE_LOWER (integer)
强制列名小写。
PDO::CASE_UPPER (integer)
强制列名大写。
PDO::NULL_NATURAL (integer)
PDO::NULL_EMPTY_STRING (integer)
PDO::NULL_TO_STRING (integer)
PDO::FETCH_ORI_NEXT (integer)
在结果集中获取下一行。仅对可滚动游标有效。
PDO::FETCH_ORI_PRIOR (integer)
在结果集中获取上一行。仅对可滚动游标有效。
PDO::FETCH_ORI_FIRST (integer)
在结果集中获取第一行。仅对可滚动游标有效。
PDO::FETCH_ORI_LAST (integer)
在结果集中获取最后一行。仅对可滚动游标有效。
PDO::FETCH_ORI_ABS (integer)
根据行号从结果集中获取需要的行。仅对可滚动游标有效。
PDO::FETCH_ORI_REL (integer)
根据当前游标位置的相对位置从结果集中获取需要的行。仅对可滚动游标有效。
PDO::CURSOR_FWDONLY (integer)
创建一个只进游标的 PDOStatement 对象。此为默认的游标选项，因为此游标最快且是 PHP 中最常用的数据访问模式。
PDO::CURSOR_SCROLL (integer)
创建一个可滚动游标的 PDOStatement 对象。通过 PDO::FETCH_ORI_* 常量来控制结果集中获取的行。
PDO::ERR_NONE (string)
对应 SQLSTATE '00000'，表示 SQL 语句没有错误或警告地成功发出。当用 PDO::errorCode() 或 PDOStatement::errorCode() 来确定是否有错误发生时，此常量非常方便。在检查上述方法返回的错误状态代码时，会经常用到。
PDO::PARAM_EVT_ALLOC (integer)
分配事件
PDO::PARAM_EVT_FREE (integer)
解除分配事件
PDO::PARAM_EVT_EXEC_PRE (integer)
执行一条预处理语句之前触发事件。
PDO::PARAM_EVT_EXEC_POST (integer)
执行一条预处理语句之后触发事件。
PDO::PARAM_EVT_FETCH_PRE (integer)
从一个结果集中取出一条结果之前触发事件。
PDO::PARAM_EVT_FETCH_POST (integer)
从一个结果集中取出一条结果之后触发事件。
PDO::PARAM_EVT_NORMALIZE (integer)
在绑定参数注册允许驱动程序正常化变量名时触发事件。
资源类型
连接与连接管理
PDO


连接与连接管理

连接是通过创建 PDO 基类的实例而建立的。不管使用哪种驱动程序，都是用 PDO 类名。构造函数接收用于指定数据库源（所谓的 DSN）以及可能还包括用户名和密码（如果有的话）的参数。

Example #1 连接到 MySQL

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
?>

如果有任何连接错误，将抛出一个 PDOException 异常对象。如果想处理错误状态，可以捕获异常，或者选择留给通过 set_exception_handler() 设置的应用程序全局异常处理程序。

Example #2 处理连接错误

<?php
try {
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
    foreach($dbh->query('SELECT * from FOO') as $row) {
        print_r($row);
    }
    $dbh = null;
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
?>

Warning

如果应用程序不在 PDO 构造函数中捕获异常，zend 引擎采取的默认动作是结束脚本并显示一个回溯跟踪，此回溯跟踪可能泄漏完整的数据库连接细节，包括用户名和密码。因此有责任去显式（通过 catch 语句）或隐式（通过 set_exception_handler() ）地捕获异常。

连接数据成功后，返回一个 PDO 类的实例给脚本，此连接在 PDO 对象的生存周期中保持活动。要想关闭连接，需要销毁对象以确保所有剩余到它的引用都被删除，可以赋一个 NULL 值给对象变量。如果不明确地这么做，PHP 在脚本结束时会自动关闭连接。

Example #3 关闭一个连接

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
// 在此使用连接

// 现在运行完成，在此关闭连接
$dbh = null;
?>

很多 web 应用程序通过使用到数据库服务的持久连接获得好处。持久连接在脚本结束后不会被关闭，且被缓存，当另一个使用相同凭证的脚本连接请求时被重用。持久连接缓存可以避免每次脚本需要与数据库回话时建立一个新连接的开销，从而让 web 应用程序更快。

Example #4 持久化连接

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
    PDO::ATTR_PERSISTENT => true
));
?>

Note:

如果想使用持久连接，必须在传递给 PDO 构造函数的驱动选项数组中设置 PDO::ATTR_PERSISTENT 。如果是在对象初始化之后用 PDO::setAttribute() 设置此属性，则驱动程序将不会使用持久连接。

Note:

如果使用 PDO ODBC 驱动且 ODBC 库支持 ODBC 连接池（有unixODBC 和 Windows 两种做法；可能会有更多），建议不要使用持久的 PDO 连接，而是把连接缓存留给 ODBC 连接池层处理。 ODBC 连接池在进程中与其他模块共享；如果要求 PDO 缓存连接，则此连接绝不会被返回到 ODBC 连接池，导致创建额外的连接来服务其他模块。

预定义常量
事务与自动提交
PDO


事务与自动提交

现在通过 PDO 连接上了，在开始进行查询前，必须先理解 PDO 是如何管理事务的。事务支持四大特性（ACID）：原子性（Atomicity）、一致性（Consistency）、隔离性（Isolation）以及持久性（Durability）。通俗地讲，在一个事务中执行的任何操作，即使是分阶段执行的，也能保证安全地应用于数据库，并在提交时不会受到来自其他连接的干扰。事务操作也可以根据请求自动撤销（假设还没有提交），这使得在脚本中处理错误更加容易。

事务通常是通过把一批更改"积蓄"起来然后使之同时生效而实现的；这样做的好处是可以大大地提供这些更改的效率。换句话说，事务可以使脚本更快，而且可能更健壮（不过需要正确地使用事务才能获得这样的好处）。

不幸的是，并非每种数据库都支持事务，因此当第一次打开连接时，PDO 需要在所谓的"自动提交"模式下运行。自动提交模式意味着，如果数据库支持，运行的每个查询都有它自己的隐式事务，如果数据库不支持事务，则没有。如果需要一个事务，则必须用 PDO::beginTransaction() 方法来启动。如果底层驱动不支持事务，则抛出一个 PDOException 异常（不管错误处理设置是怎样的，这都是一个严重的错误状态）。一旦开始了事务，可用 PDO::commit() 或 PDO::rollBack()来完成，这取决于事务中的代码是否运行成功。

Warning

PDO 仅在驱动层检查是否具有事务处理能力。如果某些运行时条件意味着事务不可用，且数据库服务接受请求去启动一个事务，PDO::beginTransaction() 将仍然返回 TRUE 而且没有错误。

试着在 MySQL 数据库的 MyISAM 数据表中使用事务就是一个很好的例子。

当脚本结束或连接即将被关闭时，如果尚有一个未完成的事务，那么 PDO 将自动回滚该事务。这种安全措施有助于在脚本意外终止时避免出现不一致的情况——如果没有显式地提交事务，那么假设是某个地方出错了，所以执行回滚来保证数据安全。

Warning

只有通过 PDO::beginTransaction() 启动一个事务后，才可能发生自动回滚。如果手动发出一条查询启动事务， 则 PDO 无法知晓，从而在必要时不能进行回滚。

Example #1 在事务中执行批处理

在下面例子中，假设为新员工创建一组条目，分配一个为23的ID。除了登记此人的基本数据之外，还需要记录他的工资。两个更新分别完成起来很简单，但通过封闭在 PDO::beginTransaction() 和PDO::commit() 调用中，可以保证在更改完成之前，其他人无法看到这些更改。如果发生了错误，catch 块回滚自事务启动以来发生的所有更改，并输出一条错误信息。

<?php
try {
  $dbh = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2',
      array(PDO::ATTR_PERSISTENT => true));
  echo "Connected\n";
} catch (Exception $e) {
  die("Unable to connect: " . $e->getMessage());
}

try {
  $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  $dbh->beginTransaction();
  $dbh->exec("insert into staff (id, first, last) values (23, 'Joe', 'Bloggs')");
  $dbh->exec("insert into salarychange (id, amount, changedate)
      values (23, 50000, NOW())");
  $dbh->commit();

} catch (Exception $e) {
  $dbh->rollBack();
  echo "Failed: " . $e->getMessage();
}
?>

并不局限于在事务中更改，也可以发出复杂的查询来提取数据，还可以使用那些信息来构建更多的更改和查询；当事务激活时，可以保证其他人在操作进行当中无法作出更改。想更进一步阅读关于事务的信息，可参考数据库服务提供的文档。

连接与连接管理
预处理语句与存储过程
PDO


预处理语句与存储过程

很多更成熟的数据库都支持预处理语句的概念。什么是预处理语句？可以把它看作是想要运行的 SQL 的一种编译过的模板，它可以使用变量参数进行定制。预处理语句可以带来两大好处：

  • 查询仅需解析（或预处理）一次，但可以用相同或不同的参数执行多次。当查询准备好后，数据库将分析、编译和优化执行该查询的计划。对于复杂的查询，此过程要花费较长的时间，如果需要以不同参数多次重复相同的查询，那么该过程将大大降低应用程序的速度。通过使用预处理语句，可以避免重复分析/编译/优化周期。简言之，预处理语句占用更少的资源，因而运行得更快。
  • 提供给预处理语句的参数不需要用引号括起来，驱动程序会自动处理。如果应用程序只使用预处理语句，可以确保不会发生SQL 注入。（然而，如果查询的其他部分是由未转义的输入来构建的，则仍存在 SQL 注入的风险）。

预处理语句如此有用，以至于它们唯一的特性是在驱动程序不支持的时PDO 将模拟处理。这样可以确保不管数据库是否具有这样的功能，都可以确保应用程序可以用相同的数据访问模式。

Example #1 用预处理语句进行重复插入

下面例子通过用 name 和 value 替代相应的命名占位符来执行一个插入查询

<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);

// 插入一行
$name = 'one';
$value = 1;
$stmt->execute();

//  用不同的值插入另一行
$name = 'two';
$value = 2;
$stmt->execute();
?>

Example #2 用预处理语句进行重复插入

下面例子通过用 name 和 value 取代 ? 占位符的位置来执行一条插入查询。

<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)");
$stmt->bindParam(1, $name);
$stmt->bindParam(2, $value);

// 插入一行
$name = 'one';
$value = 1;
$stmt->execute();

// 用不同的值插入另一行
$name = 'two';
$value = 2;
$stmt->execute();
?>

Example #3 使用预处理语句获取数据

下面例子获取数据基于键值已提供的形式。用户的输入被自动用引号括起来，因此不会有 SQL 注入攻击的危险。

<?php
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?");
if ($stmt->execute(array($_GET['name']))) {
  while ($row = $stmt->fetch()) {
    print_r($row);
  }
}
?>

如果数据库驱动支持，应用程序还可以绑定输出和输入参数.输出参数通常用于从存储过程获取值。输出参数使用起来比输入参数要稍微复杂一些，因为当绑定一个输出参数时，必须知道给定参数的长度。如果为参数绑定的值大于建议的长度，就会产生一个错误。

Example #4 带输出参数调用存储过程

<?php
$stmt = $dbh->prepare("CALL sp_returns_string(?)");
$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000);

// 调用存储过程
$stmt->execute();

print "procedure returned $return_value\n";
?>

还可以指定同时具有输入和输出值的参数，其语法类似于输出参数。在下一个例子中，字符串"hello"被传递给存储过程，当存储过程返回时，hello 被替换为该存储过程返回的值。

Example #5 带输入/输出参数调用存储过程

<?php
$stmt = $dbh->prepare("CALL sp_takes_string_returns_string(?)");
$value = 'hello';
$stmt->bindParam(1, $value, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000);

// 调用存储过程
$stmt->execute();

print "procedure returned $value\n";
?>

Example #6 占位符的无效使用

<?php
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name LIKE '%?%'");
$stmt->execute(array($_GET['name']));

// 占位符必须被用在整个值的位置
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name LIKE ?");
$stmt->execute(array("%$_GET[name]%"));
?>

事务与自动提交
错误与错误处理
PDO


错误与错误处理

PDO 提供了三种不同的错误处理模式，以满足不同风格的应用开发：

  • PDO::ERRMODE_SILENT

    此为默认模式。 PDO 将只简单地设置错误码，可使用 PDO::errorCode() 和 PDO::errorInfo() 方法来检查语句和数据库对象。如果错误是由于对语句对象的调用而产生的，那么可以调用那个对象的 PDOStatement::errorCode() 或 PDOStatement::errorInfo() 方法。如果错误是由于调用数据库对象而产生的，那么可以在数据库对象上调用上述两个方法。

  • PDO::ERRMODE_WARNING

    除设置错误码之外，PDO 还将发出一条传统的 E_WARNING 信息。如果只是想看看发生了什么问题且不中断应用程序的流程，那么此设置在调试/测试期间非常有用。

  • PDO::ERRMODE_EXCEPTION

    除设置错误码之外，PDO 还将抛出一个 PDOException 异常类并设置它的属性来反射错误码和错误信息。此设置在调试期间也非常有用，因为它会有效地放大脚本中产生错误的点，从而可以非常快速地指出代码中有问题的潜在区域（记住：如果异常导致脚本终止，则事务被自动回滚）。

    异常模式另一个非常有用的是，相比传统 PHP 风格的警告，可以更清晰地构建自己的错误处理，而且比起静默模式和显式地检查每种数据库调用的返回值，异常模式需要的代码/嵌套更少。

    See Exceptions for more information about Exceptions in PHP.

PDO 使用 SQL-92 SQLSTATE 来规范错误码字符串；不同 PDO 驱动程序负责将它们的本地代码映射为适当的 SQLSTATE 代码。PDO::errorCode() 方法返回一个单独的 SQLSTATE 码。如果需要更多此错误的细节信息，PDO 还提供了一个 PDO::errorInfo() 方法来返回一个包含 SQLSTATE 码、特定驱动错误码以及此驱动的错误字符串的数组。

Example #1 创建 PDO 实例并设置错误模式

<?php
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

try {
    $dbh = new PDO($dsn, $user, $password);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

?>

Note:

不管当前是否设置了 PDO::ATTR_ERRMODE ，如果连接失败，PDO::__construct() 将总是抛出一个 PDOException 异常。未捕获异常是致命的。

Example #2 创建 PDO 实例并在构造函数中设置错误模式

<?php
$dsn = 'mysql:dbname=test;host=127.0.0.1';
$user = 'googleguy';
$password = 'googleguy';

/*
    使用 try/catch 围绕构造函数仍然有效，即使设置了 ERRMODE 为 WARNING，
    因为如果连接失败，PDO::__construct 将总是抛出一个  PDOException 异常。
*/
try {
    $dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
    exit;
}

// 这里将导致 PDO 抛出一个 E_WARNING 级别的错误，而不是 一个异常 （当数据表不存在时）
$dbh->query("SELECT wrongcolumn FROM wrongtable");
?>

以上例程会输出：

Warning: PDO::query(): SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.wrongtable' doesn't exist in
/tmp/pdo_test.php on line 18

预处理语句与存储过程
大对象 (LOBs)
PDO


大对象 (LOBs)

应用程序在某一时刻，可能需要在数据库中存储"大"数据。"大"通常意味着"大约 4kb 或以上"，尽管某些数据库在数据达到"大"之前可以轻松地处理多达 32kb 的数据。大对象本质上可能是文本或二进制。在 PDOStatement::bindParam() 或 PDOStatement::bindColumn()) 调用中使用 PDO::PARAM_LOB 类型码可以让 PDO 使用大数据类型。PDO::PARAM_LOB 告诉 PDO 作为流来映射数据，以便能使用 PHP Streams API 来操作。

Example #1 从数据库中显示一张图片

下面例子绑定一个 LOB 到 $lob 变量，然后用 fpassthru() 将其发送到浏览器。因为 LOB 代表一个流，所以类似 fgets()、fread() 以及 stream_get_contents() 这样的函数都可以用在它上面。

<?php
$db = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2');
$stmt = $db->prepare("select contenttype, imagedata from images where id=?");
$stmt->execute(array($_GET['id']));
$stmt->bindColumn(1, $type, PDO::PARAM_STR, 256);
$stmt->bindColumn(2, $lob, PDO::PARAM_LOB);
$stmt->fetch(PDO::FETCH_BOUND);

header("Content-Type: $type");
fpassthru($lob);
?>

Example #2 插入一张图片到数据库

下面例子打开一个文件并将文件句柄传给 PDO 来做为一个 LOB 插入。PDO尽可能地让数据库以最有效的方式获取文件内容。

<?php
$db = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2');
$stmt = $db->prepare("insert into images (id, contenttype, imagedata) values (?, ?, ?)");
$id = get_new_id(); // 调用某个函数来分配一个新 ID

// 假设处理一个文件上传
// 可以在 PHP 文档中找到更多的信息

$fp = fopen($_FILES['file']['tmp_name'], 'rb');

$stmt->bindParam(1, $id);
$stmt->bindParam(2, $_FILES['file']['type']);
$stmt->bindParam(3, $fp, PDO::PARAM_LOB);

$db->beginTransaction();
$stmt->execute();
$db->commit();
?>

Example #3 插入一张图片到数据库：Oracle

对于从文件插入一个 lob，Oracle略有不同。必须在事务之后进行插入，否则当执行查询时导致新近插入 LOB 将以0长度被隐式提交：

<?php
$db = new PDO('oci:', 'scott', 'tiger');
$stmt = $db->prepare("insert into images (id, contenttype, imagedata) " .
"VALUES (?, ?, EMPTY_BLOB()) RETURNING imagedata INTO ?");
$id = get_new_id(); // 调用某个函数来分配一个新 ID

// 假设处理一个文件上传
// 可以在 PHP 文档中找到更多的信息

$fp = fopen($_FILES['file']['tmp_name'], 'rb');

$stmt->bindParam(1, $id);
$stmt->bindParam(2, $_FILES['file']['type']);
$stmt->bindParam(3, $fp, PDO::PARAM_LOB);

$stmt->beginTransaction();
$stmt->execute();
$stmt->commit();
?>

错误与错误处理
PDO
PDO


PDO 类

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

简介

代表 PHP 和数据库服务之间的一个连接

类摘要

PDO {
__construct ( string $dsn [, string $username [, string $password [, array $driver_options ]]] )
bool beginTransaction ( void )
bool commit ( void )
mixed errorCode ( void )
public array errorInfo ( void )
int exec ( string $statement )
mixed getAttribute ( int $attribute )
static array getAvailableDrivers ( void )
bool inTransaction ( void )
string lastInsertId ([ string $name = NULL ] )
public PDOStatement prepare ( string $statement [, array $driver_options = array() ] )
public PDOStatement query ( string $statement )
public string quote ( string $string [, int $parameter_type = PDO::PARAM_STR ] )
bool rollBack ( void )
bool setAttribute ( int $attribute , mixed $value )
}

Table of Contents

  • PDO::beginTransaction — 启动一个事务
  • PDO::commit — 提交一个事务
  • PDO::__construct — 创建一个表示数据库连接的 PDO 实例
  • PDO::errorCode — 获取跟数据库句柄上一次操作相关的 SQLSTATE
  • PDO::errorInfo — Fetch extended error information associated with the last operation on the database handle
  • PDO::exec — 执行一条 SQL 语句，并返回受影响的行数
  • PDO::getAttribute — 取回一个数据库连接的属性
  • PDO::getAvailableDrivers — 返回一个可用驱动的数组
  • PDO::inTransaction — 检查是否在一个事务内
  • PDO::lastInsertId — 返回最后插入行的ID或序列值
  • PDO::prepare — Prepares a statement for execution and returns a statement object
  • PDO::query — Executes an SQL statement, returning a result set as a PDOStatement object
  • PDO::quote — Quotes a string for use in a query.
  • PDO::rollBack — 回滚一个事务
  • PDO::setAttribute — 设置属性
大对象 (LOBs)
PDO::beginTransaction
PDO


启动一个事务

PDO
PDO::commit
PDO
PHP Manual

PDO::beginTransaction

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDO::beginTransaction — 启动一个事务

说明

bool PDO::beginTransaction ( void )

关闭自动提交模式。自动提交模式被关闭的同时，通过 PDO 对象实例对数据库做出的更改直到调用 PDO::commit() 结束事务才被提交。调用 PDO::rollBack() 将回滚对数据库做出的更改并将数据库连接返回到自动提交模式。

包括 MySQL 在内的一些数据库，当发出一条类似 DROP TABLE 或 CREATE TABLE 这样的 DDL 语句时，会自动进行一个隐式地事务提交。隐式地提交将阻止你在此事务范围内回滚任何其他更改。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 回滚一个事务

下面例子在回滚此更改前开始一个事务并发出两条修改数据库的语句。但在 MySQL 中，DROP TABLE 语句自动提交事务，使得在此事务中的任何更改都不会被回滚。

<?php
/* 开始一个事务，关闭自动提交 */
$dbh->beginTransaction();

/*  更改数据库架构及数据 */
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
    SET name = 'hamburger'");

/*  识别出错误并回滚更改 */
$dbh->rollBack();

/* 数据库连接现在返回到自动提交模式 */
?>

参见

  • PDO::commit() - 提交一个事务
  • PDO::rollBack() - 回滚一个事务
  • 事务与自动提交

PDO
PDO::commit
PDO


提交一个事务

PDO::beginTransaction
PDO::__construct
PDO
PHP Manual

PDO::commit

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDO::commit — 提交一个事务

说明

bool PDO::commit ( void )

提交一个事务，数据库连接返回到自动提交模式直到下次调用 PDO::beginTransaction() 开始一个新的事务为止。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 提交一个基础事务

<?php
/* 开始一个事务，关闭自动提交 */
$dbh->beginTransaction();

/* 在全有或全无的基础上插入多行记录（要么全部插入，要么全部不插入） */
$sql = 'INSERT INTO fruit
    (name, colour, calories)
    VALUES (?, ?, ?)';

$sth = $dbh->prepare($sql);

foreach ($fruits as $fruit) {
    $sth->execute(array(
        $fruit->name,
        $fruit->colour,
        $fruit->calories,
    ));
}

/* 提交更改 */
$dbh->commit();

/* 现在数据库连接返回到自动提交模式 */
?>

Example #2 提交一个DDL事务

<?php
/*  开始一个事务，关闭自动提交 */
$dbh->beginTransaction();

/* Change the database schema */
$sth = $dbh->exec("DROP TABLE fruit");

/* 更改数据库架构 */
$dbh->commit();

/* 现在数据库连接返回到自动提交模式 */
?>

Note: 并不是所有数据库都允许使用DDL语句进行事务操作：有些会产生错误，而其他一些（包括MySQL）会在遇到第一个DDL语句后就自动提交事务。

参见

  • PDO::beginTransaction() - 启动一个事务
  • PDO::rollBack() - 回滚一个事务
  • 事务和自动提交

PDO::beginTransaction
PDO::__construct
PDO


创建一个表示数据库连接的 PDO 实例

PDO::commit
PDO::errorCode
PDO
PHP Manual

PDO::__construct

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDO::__construct — 创建一个表示数据库连接的 PDO 实例

说明

PDO::__construct ( string $dsn [, string $username [, string $password [, array $driver_options ]]] )

创建一个表示连接到请求数据库的数据库连接 PDO 实例。

参数

dsn

数据源名称或叫做 DSN，包含了请求连接到数据库的信息。

通常，一个 DSN 由 PDO 驱动名、紧随其后的冒号、以及具体 PDO 驱动的连接语法组成。更深入的信息能从 PDO 具体驱动文档找到。

The dsn 参数支持三种不同的方式 创建一个数据库连接：

Driver invocation

dsn 包含完整的DSN。

URI invocation

dsn consists of uri: followed by a URI that defines the location of a file containing the DSN string. The URI can specify a local file or a remote URL.

uri:file:///path/to/dsnfile

Aliasing

dsn consists of a name name that maps to pdo.dsn.name in php.ini defining the DSN string.

Note:

别名必须得在 php.ini 中定义了，不能是在 .htaccess 或 httpd.conf 中 。

username

DSN字符串中的用户名。对于某些PDO驱动，此参数为可选项。

password

DSN字符串中的密码。对于某些PDO驱动，此参数为可选项。

driver_options

一个具体驱动的连接选项的键=>值数组。

返回值

成功则返回一个PDO对象。

错误／异常

如果试图连接到请求的数据库失败，则PDO::__construct() 抛出一个 PDO异常（PDOException） 。

范例

Example #1 Create a PDO instance via driver invocation

<?php
/* Connect to an ODBC database using driver invocation */
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

?>

Example #2 Create a PDO instance via URI invocation

The following example assumes that the file /usr/local/dbconnect exists with file permissions that enable PHP to read the file. The file contains the PDO DSN to connect to a DB2 database through the PDO_ODBC driver:

odbc:DSN=SAMPLE;UID=john;PWD=mypass

The PHP script can then create a database connection by simply passing the uri: parameter and pointing to the file URI:

<?php
/* Connect to an ODBC database using driver invocation */
$dsn = 'uri:file:///usr/local/dbconnect';
$user = '';
$password = '';

try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

?>

Example #3 使用别名创建一个PDO实例

The following example assumes that php.ini contains the following entry to enable a connection to a MySQL database using only the alias mydb:

[PDO]
pdo.dsn.mydb="mysql:dbname=testdb;host=localhost"
<?php
/*  使用别名连接到一个ODBC数据库  */
$dsn = 'mydb';
$user = '';
$password = '';

try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

?>

PDO::commit
PDO::errorCode
PDO


获取跟数据库句柄上一次操作相关的 SQLSTATE

PDO::__construct
PDO::errorInfo
PDO
PHP Manual

PDO::errorCode

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDO::errorCode — 获取跟数据库句柄上一次操作相关的 SQLSTATE

说明

mixed PDO::errorCode ( void )

返回值

返回一个 SQLSTATE，一个由5个字母或数字组成的在 ANSI SQL 标准中定义的标识符。 简要地说，一个 SQLSTATE 由前面两个字符的类值和后面三个字符的子类值组成。 class value of 01 indicates a warning and is accompanied by a return code of SQL_SUCCESS_WITH_INFO. Class values other than '01', except for the class 'IM', indicate an error. The class 'IM' is specific to warnings and errors that derive from the implementation of PDO (or perhaps ODBC, if you're using the ODBC driver) itself. The subclass value '000' in any class indicates that there is no subclass for that SQLSTATE.

PDO::errorCode() only retrieves error codes for operations performed directly on the database handle. If you create a PDOStatement object through PDO::prepare() or PDO::query() and invoke an error on the statement handle, PDO::errorCode() will not reflect that error. You must call PDOStatement::errorCode() to return the error code for an operation performed on a particular statement handle.

如果数据库句柄没有进行操作，则返回 NULL 。

范例

Example #1 取得一个 SQLSTATE 码

<?php
/* 引发一个错误 -- BONES 数据表不存在 */
$dbh->exec("INSERT INTO bones(skull) VALUES ('lucy')");

echo "\nPDO::errorCode(): ";
print $dbh->errorCode();
?>

以上例程会输出：

PDO::errorCode(): 42S02

参见

  • PDO::errorInfo() - Fetch extended error information associated with the last operation on the database handle
  • PDOStatement::errorCode() - 获取跟上一次语句句柄操作相关的 SQLSTATE
  • PDOStatement::errorInfo() - 获取跟上一次语句句柄操作相关的扩展错误信息

PDO::__construct
PDO::errorInfo
PDO


Fetch extended error information associated with the last operation on the database handle

PDO::errorCode
PDO::exec
PDO
PHP Manual

PDO::errorInfo

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDO::errorInfo — Fetch extended error information associated with the last operation on the database handle

说明

public array PDO::errorInfo ( void )

返回值

PDO::errorInfo() returns an array of error information about the last operation performed by this database handle. The array consists of the following fields:

Element | Information
0 | SQLSTATE error code (a five characters alphanumeric identifier defined in the ANSI SQL standard).
1 | Driver-specific error code.
2 | Driver-specific error message.

Note:

If the SQLSTATE error code is not set or there is no driver-specific error, the elements following element 0 will be set to NULL.

PDO::errorInfo() only retrieves error information for operations performed directly on the database handle. If you create a PDOStatement object through PDO::prepare() or PDO::query() and invoke an error on the statement handle, PDO::errorInfo() will not reflect the error from the statement handle. You must call PDOStatement::errorInfo() to return the error information for an operation performed on a particular statement handle.

范例

Example #1 Displaying errorInfo() fields for a PDO_ODBC connection to a DB2 database

<?php
/* Provoke an error -- bogus SQL syntax */
$stmt = $dbh->prepare('bogus sql');
if (!$stmt) {
    echo "\nPDO::errorInfo():\n";
    print_r($dbh->errorInfo());
}
?>

以上例程会输出：

PDO::errorInfo():
Array
(
    [0] => HY000
    [1] => 1
    [2] => near "bogus": syntax error
)

参见

  • PDO::errorCode() - 获取跟数据库句柄上一次操作相关的 SQLSTATE
  • PDOStatement::errorCode() - 获取跟上一次语句句柄操作相关的 SQLSTATE
  • PDOStatement::errorInfo() - 获取跟上一次语句句柄操作相关的扩展错误信息

PDO::errorCode
PDO::exec
PDO


执行一条 SQL 语句，并返回受影响的行数

PDO::errorInfo
PDO::getAttribute
PDO
PHP Manual

PDO::exec

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDO::exec — 执行一条 SQL 语句，并返回受影响的行数

说明

int PDO::exec ( string $statement )

PDO::exec() 在一个单独的函数调用中执行一条 SQL 语句，返回受此语句影响的行数。

PDO::exec() 不会从一条 SELECT 语句中返回结果。对于在程序中只需要发出一次的 SELECT 语句，可以考虑使用 PDO::query()。对于需要发出多次的语句，可用 PDO::prepare() 来准备一个 PDOStatement 对象并用 PDOStatement::execute() 发出语句。

参数

statement

要被预处理和执行的 SQL 语句。

查询中的数据应该被 妥善地转义 。

返回值

PDO::exec() 返回受修改或删除 SQL 语句影响的行数。如果没有受影响的行，则 PDO::exec() 返回 0。

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

下面例子依赖 PDO::exec() 的返回值是不正确的，其中受影响行数为 0 的语句会导致调用 die() ：

<?php
$db->exec() or die(print_r($db->errorInfo(), true));
?>

范例

Example #1 发出一条 DELETE 语句

计算由一条不带 WHERE 字句的 DELETE 语句删除的行数。

<?php
$dbh = new PDO('odbc:sample', 'db2inst1', 'ibmdb2');

/*  删除 FRUIT 数据表中满足条件的所有行 */
$count = $dbh->exec("DELETE FROM fruit WHERE colour = 'red'");

/* 返回被删除的行数 */
print("Deleted $count rows.\n");
?>

以上例程会输出：

Deleted 1 rows.

参见

  • PDO::prepare() - Prepares a statement for execution and returns a statement object
  • PDO::query() - Executes an SQL statement, returning a result set as a PDOStatement object
  • PDOStatement::execute() - 执行一条预处理语句

PDO::errorInfo
PDO::getAttribute
PDO


取回一个数据库连接的属性

PDO::exec
PDO::getAvailableDrivers
PDO
PHP Manual

PDO::getAttribute

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.2.0)

PDO::getAttribute — 取回一个数据库连接的属性

说明

mixed PDO::getAttribute ( int $attribute )

此函数（方法）返回一个数据库连接的属性值。 取回 PDOStatement 属性，请参阅 PDOStatement::getAttribute()。

注意有些数据库/驱动可能不支持所有的数据库连接属性。

参数

attribute

PDO::ATTR_* 常量中的一个。下列为应用到数据库连接中的常量：

  • PDO::ATTR_AUTOCOMMIT
  • PDO::ATTR_CASE
  • PDO::ATTR_CLIENT_VERSION
  • PDO::ATTR_CONNECTION_STATUS
  • PDO::ATTR_DRIVER_NAME
  • PDO::ATTR_ERRMODE
  • PDO::ATTR_ORACLE_NULLS
  • PDO::ATTR_PERSISTENT
  • PDO::ATTR_PREFETCH
  • PDO::ATTR_SERVER_INFO
  • PDO::ATTR_SERVER_VERSION
  • PDO::ATTR_TIMEOUT

返回值

成功调用则返回请求的 PDO 属性值。不成功则返回 null。

范例

Example #1 取回数据库连接属性

<?php
$conn = new PDO('odbc:sample', 'db2inst1', 'ibmdb2');
$attributes = array(
    "AUTOCOMMIT", "ERRMODE", "CASE", "CLIENT_VERSION", "CONNECTION_STATUS",
    "ORACLE_NULLS", "PERSISTENT", "PREFETCH", "SERVER_INFO", "SERVER_VERSION",
    "TIMEOUT"
);

foreach ($attributes as $val) {
    echo "PDO::ATTR_$val: ";
    echo $conn->getAttribute(constant("PDO::ATTR_$val")) . "\n";
}
?>

参见

  • PDO::setAttribute() - 设置属性
  • PDOStatement::getAttribute() - 检索一个语句属性
  • PDOStatement::setAttribute() - 设置一个语句属性

PDO::exec
PDO::getAvailableDrivers
PDO


返回一个可用驱动的数组

PDO::getAttribute
PDO::inTransaction
PDO
PHP Manual

PDO::getAvailableDrivers

(PHP 5 >= 5.1.3, PHP 7, PECL pdo >= 1.0.3)

PDO::getAvailableDrivers — 返回一个可用驱动的数组

说明

static array PDO::getAvailableDrivers ( void )
array pdo_drivers ( void )

此函数（方法）返回所有当前可用在 PDO::__construct() 的参数 DSN 中的 PDO 驱动。

返回值

PDO::getAvailableDrivers() 返回一个 包含可用 PDO 驱动名字的数组。如果没有可用的驱动，则返回一个空数组。

范例

Example #1 一个 PDO::getAvailableDrivers() 的例子

<?php
print_r(PDO::getAvailableDrivers());
?>

以上例程的输出类似于：

Array
(
    [0] => mysql
    [1] => sqlite
)

PDO::getAttribute
PDO::inTransaction
PDO


检查是否在一个事务内

PDO::getAvailableDrivers
PDO::lastInsertId
PDO
PHP Manual

PDO::inTransaction

(PHP 5 >= 5.3.3, Bundled pdo_pgsql, PHP 7)

PDO::inTransaction — 检查是否在一个事务内

说明

bool PDO::inTransaction ( void )

检查驱动内的一个事务当前是否处于激活。此方法仅对支持事务的数据库驱动起作用。

参数

此函数没有参数。

返回值

如果当前事务处于激活，则返回 TRUE ，否则返回 FALSE 。

PDO::getAvailableDrivers
PDO::lastInsertId
PDO


返回最后插入行的ID或序列值

PDO::inTransaction
PDO::prepare
PDO
PHP Manual

PDO::lastInsertId

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDO::lastInsertId — 返回最后插入行的ID或序列值

说明

string PDO::lastInsertId ([ string $name = NULL ] )

返回最后插入行的ID，或者是一个序列对象最后的值，取决于底层的驱动。比如，PDO_PGSQL() 要求为 name 参数指定序列对象的名称。

Note:

在不同的 PDO 驱动之间，此方法可能不会返回一个有意义或一致的结果，因为底层数据库可能不支持自增字段或序列的概念。

参数

name

应该返回ID的那个序列对象的名称。

返回值

如果没有为参数 name 指定序列名称，PDO::lastInsertId() 则返回一个表示最后插入数据库那一行的行ID的字符串。

如果为参数 name 指定了序列名称，PDO::lastInsertId() 则返回一个表示从指定序列对象取回最后的值的字符串。

如果当前 PDO 驱动不支持此功能，则 PDO::lastInsertId() 触发一个 IM001 SQLSTATE 。

PDO::inTransaction
PDO::prepare
PDO


Prepares a statement for execution and returns a statement object

PDO::lastInsertId
PDO::query
PDO
PHP Manual

PDO::prepare

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDO::prepare — Prepares a statement for execution and returns a statement object

说明

public PDOStatement PDO::prepare ( string $statement [, array $driver_options = array() ] )

Prepares an SQL statement to be executed by the PDOStatement::execute() method. The SQL statement can contain zero or more named (:name) or question mark (?) parameter markers for which real values will be substituted when the statement is executed. You cannot use both named and question mark parameter markers within the same SQL statement; pick one or the other parameter style. Use these parameters to bind any user-input, do not include the user-input directly in the query.

You must include a unique parameter marker for each value you wish to pass in to the statement when you call PDOStatement::execute(). You cannot use a named parameter marker of the same name more than once in a prepared statement, unless emulation mode is on.

Note:

Parameter markers can represent a complete data literal only. Neither part of literal, nor keyword, nor identifier, nor whatever arbitrary query part can be bound using parameters. For example, you cannot bind multiple values to a single parameter in the IN() clause of an SQL statement.

Calling PDO::prepare() and PDOStatement::execute() for statements that will be issued multiple times with different parameter values optimizes the performance of your application by allowing the driver to negotiate client and/or server side caching of the query plan and meta information, and helps to prevent SQL injection attacks by eliminating the need to manually quote the parameters.

PDO will emulate prepared statements/bound parameters for drivers that do not natively support them, and can also rewrite named or question mark style parameter markers to something more appropriate, if the driver supports one style but not the other.

参数

statement

This must be a valid SQL statement template for the target database server.

driver_options

This array holds one or more key=>value pairs to set attribute values for the PDOStatement object that this method returns. You would most commonly use this to set the PDO::ATTR_CURSOR value to PDO::CURSOR_SCROLL to request a scrollable cursor. Some drivers have driver specific options that may be set at prepare-time.

返回值

If the database server successfully prepares the statement, PDO::prepare() returns a PDOStatement object. If the database server cannot successfully prepare the statement, PDO::prepare() returns FALSE or emits PDOException (depending on error handling).

Note:

Emulated prepared statements does not communicate with the database server so PDO::prepare() does not check the statement.

范例

Example #1 Prepare an SQL statement with named parameters

<?php
/* Execute a prepared statement by passing an array of values */
$sql = 'SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour';
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':calories' => 150, ':colour' => 'red'));
$red = $sth->fetchAll();
$sth->execute(array(':calories' => 175, ':colour' => 'yellow'));
$yellow = $sth->fetchAll();
?>

Example #2 Prepare an SQL statement with question mark parameters

<?php
/* Execute a prepared statement by passing an array of values */
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?');
$sth->execute(array(150, 'red'));
$red = $sth->fetchAll();
$sth->execute(array(175, 'yellow'));
$yellow = $sth->fetchAll();
?>

参见

  • PDO::exec() - 执行一条 SQL 语句，并返回受影响的行数
  • PDO::query() - Executes an SQL statement, returning a result set as a PDOStatement object
  • PDOStatement::execute() - 执行一条预处理语句

PDO::lastInsertId
PDO::query
PDO


Executes an SQL statement, returning a result set as a PDOStatement object

PDO::prepare
PDO::quote
PDO
PHP Manual

PDO::query

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.2.0)

PDO::query — Executes an SQL statement, returning a result set as a PDOStatement object

说明

public PDOStatement PDO::query ( string $statement )
public PDOStatement PDO::query ( string $statement , int $PDO::FETCH_COLUMN , int $colno )
public PDOStatement PDO::query ( string $statement , int $PDO::FETCH_CLASS , string $classname , array $ctorargs )
public PDOStatement PDO::query ( string $statement , int $PDO::FETCH_INTO , object $object )

PDO::query() executes an SQL statement in a single function call, returning the result set (if any) returned by the statement as a PDOStatement object.

For a query that you need to issue multiple times, you will realize better performance if you prepare a PDOStatement object using PDO::prepare() and issue the statement with multiple calls to PDOStatement::execute().

If you do not fetch all of the data in a result set before issuing your next call to PDO::query(), your call may fail. Call PDOStatement::closeCursor() to release the database resources associated with the PDOStatement object before issuing your next call to PDO::query().

Note:

Although this function is only documented as having a single parameter, you may pass additional arguments to this function. They will be treated as though you called PDOStatement::setFetchMode() on the resultant statement object.

参数

statement

The SQL statement to prepare and execute.

Data inside the query should be properly escaped.

返回值

PDO::query() returns a PDOStatement object, or FALSE on failure.

范例

Example #1 Demonstrate PDO::query

A nice feature of PDO::query() is that it enables you to iterate over the rowset returned by a successfully executed SELECT statement.

<?php
function getFruit($conn) {
    $sql = 'SELECT name, color, calories FROM fruit ORDER BY name';
    foreach ($conn->query($sql) as $row) {
        print $row['name'] . "\t";
        print $row['color'] . "\t";
        print $row['calories'] . "\n";
    }
}
?>

以上例程会输出：

apple   red     150
banana  yellow  250
kiwi    brown   75
lemon   yellow  25
orange  orange  300
pear    green   150
watermelon      pink    90

参见

  • PDO::exec() - 执行一条 SQL 语句，并返回受影响的行数
  • PDO::prepare() - Prepares a statement for execution and returns a statement object
  • PDOStatement::execute() - 执行一条预处理语句

PDO::prepare
PDO::quote
PDO


Quotes a string for use in a query.

PDO::query
PDO::rollBack
PDO
PHP Manual

PDO::quote

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.2.1)

PDO::quote — Quotes a string for use in a query.

说明

public string PDO::quote ( string $string [, int $parameter_type = PDO::PARAM_STR ] )

PDO::quote() places quotes around the input string (if required) and escapes special characters within the input string, using a quoting style appropriate to the underlying driver.

If you are using this function to build SQL statements, you are strongly recommended to use PDO::prepare() to prepare SQL statements with bound parameters instead of using PDO::quote() to interpolate user input into an SQL statement. Prepared statements with bound parameters are not only more portable, more convenient, immune to SQL injection, but are often much faster to execute than interpolated queries, as both the server and client side can cache a compiled form of the query.

Not all PDO drivers implement this method (notably PDO_ODBC). Consider using prepared statements instead.

Caution

Security: the default character set

The character set must be set either on the server level, or within the database connection itself (depending on the driver) for it to affect PDO::quote(). See the driver-specific documentation for more information.

参数

string

The string to be quoted.

parameter_type

Provides a data type hint for drivers that have alternate quoting styles.

返回值

Returns a quoted string that is theoretically safe to pass into an SQL statement. Returns FALSE if the driver does not support quoting in this way.

范例

Example #1 Quoting a normal string

<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');

/* Simple string */
$string = 'Nice';
print "Unquoted string: $string\n";
print "Quoted string: " . $conn->quote($string) . "\n";
?>

以上例程会输出：

Unquoted string: Nice
Quoted string: 'Nice'

Example #2 Quoting a dangerous string

<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');

/* Dangerous string */
$string = 'Naughty \' string';
print "Unquoted string: $string\n";
print "Quoted string:" . $conn->quote($string) . "\n";
?>

以上例程会输出：

Unquoted string: Naughty ' string
Quoted string: 'Naughty '' string'

Example #3 Quoting a complex string

<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');

/* Complex string */
$string = "Co'mpl''ex \"st'\"ring";
print "Unquoted string: $string\n";
print "Quoted string: " . $conn->quote($string) . "\n";
?>

以上例程会输出：

Unquoted string: Co'mpl''ex "st'"ring
Quoted string: 'Co''mpl''''ex "st''"ring'

参见

  • PDO::prepare() - Prepares a statement for execution and returns a statement object
  • PDOStatement::execute() - 执行一条预处理语句

PDO::query
PDO::rollBack
PDO


回滚一个事务

PDO::quote
PDO::setAttribute
PDO
PHP Manual

PDO::rollBack

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDO::rollBack — 回滚一个事务

说明

bool PDO::rollBack ( void )

回滚由 PDO::beginTransaction() 发起的当前事务。如果没有事务激活，将抛出一个 PDOException 异常。

如果数据库被设置成自动提交模式，此函数（方法）在回滚事务之后将恢复自动提交模式。

包括 MySQL 在内的一些数据库， 当在一个事务内有类似删除或创建数据表等 DLL 语句时，会自动导致一个隐式地提交。隐式地提交将无法回滚此事务范围内的任何更改。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 回滚一个事务

下面例子在回滚更改之前开始一个事务并发出两条修改数据库的语句。但在 MySQL 中，DROP TABLE 语句自动提交事务，因此在此事务内的任何更改都不会被回滚。

<?php
/* 开始一个事务，关闭自动提交 */
$dbh->beginTransaction();

/* 更改数据库架构和数据  */
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
    SET name = 'hamburger'");

/*  识别错误且回滚更改  */
$dbh->rollBack();

/*  此时数据库连接恢复到自动提交模式  */
?>

参见

  • PDO::beginTransaction() - 启动一个事务
  • PDO::commit() - 提交一个事务
  • 事务和自动提交

PDO::quote
PDO::setAttribute
PDO


设置属性

PDO::rollBack
PDOStatement
PDO
PHP Manual

PDO::setAttribute

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDO::setAttribute — 设置属性

说明

bool PDO::setAttribute ( int $attribute , mixed $value )

设置数据库句柄属性。下面列出了一些可用的通用属性；有些驱动可能使用另外的特定属性。

  • PDO::ATTR_CASE：强制列名为指定的大小写。

    • PDO::CASE_LOWER：强制列名小写。

    • PDO::CASE_NATURAL：保留数据库驱动返回的列名。

    • PDO::CASE_UPPER：强制列名大写。

  • PDO::ATTR_ERRMODE：错误报告。

    • PDO::ERRMODE_SILENT： 仅设置错误代码。

    • PDO::ERRMODE_WARNING: 引发 E_WARNING 错误

    • PDO::ERRMODE_EXCEPTION: 抛出 exceptions 异常。

  • PDO::ATTR_ORACLE_NULLS （在所有驱动中都可用，不仅限于Oracle）： 转换 NULL 和空字符串。

    • PDO::NULL_NATURAL: 不转换。

    • PDO::NULL_EMPTY_STRING： 将空字符串转换成 NULL。

    • PDO::NULL_TO_STRING: 将 NULL 转换成空字符串。

  • PDO::ATTR_STRINGIFY_FETCHES: 提取的时候将数值转换为字符串。 Requires bool.

  • PDO::ATTR_STATEMENT_CLASS： 设置从PDOStatement派生的用户提供的语句类。 不能用于持久的PDO实例。 需要 array(string 类名, array(mixed 构造函数的参数))。

  • PDO::ATTR_TIMEOUT： 指定超时的秒数。并非所有驱动都支持此选项，这意味着驱动和驱动之间可能会有差异。比如，SQLite等待的时间达到此值后就放弃获取可写锁，但其他驱动可能会将此值解释为一个连接或读取超时的间隔。 需要 int 类型。

  • PDO::ATTR_AUTOCOMMIT （在OCI，Firebird 以及 MySQL中可用）： 是否自动提交每个单独的语句。

  • PDO::ATTR_EMULATE_PREPARES 启用或禁用预处理语句的模拟。 有些驱动不支持或有限度地支持本地预处理。使用此设置强制PDO总是模拟预处理语句（如果为 TRUE ），或试着使用本地预处理语句（如果为 FALSE）。如果驱动不能成功预处理当前查询，它将总是回到模拟预处理语句上。 需要 bool 类型。

  • PDO::MYSQL_ATTR_USE_BUFFERED_QUERY （在MySQL中可用）： 使用缓冲查询。

  • PDO::ATTR_DEFAULT_FETCH_MODE： 设置默认的提取模式。关于模式的说明可以在 PDOStatement::fetch() 文档找到。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

PDO::rollBack
PDOStatement
PDO


PDOStatement 类

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 1.0.0)

简介

代表一条预处理语句，并在该语句被执行后代表一个相关的结果集。

类摘要

PDOStatement implements Traversable {
/* 属性 */
readonly string $queryString;
/* 方法 */
bool bindColumn ( mixed $column , mixed &$param [, int $type [, int $maxlen [, mixed $driverdata ]]] )
bool bindParam ( mixed $parameter , mixed &$variable [, int $data_type = PDO::PARAM_STR [, int $length [, mixed $driver_options ]]] )
bool bindValue ( mixed $parameter , mixed $value [, int $data_type = PDO::PARAM_STR ] )
bool closeCursor ( void )
int columnCount ( void )
bool debugDumpParams ( void )
string errorCode ( void )
array errorInfo ( void )
bool execute ([ array $input_parameters ] )
mixed fetch ([ int $fetch_style [, int $cursor_orientation = PDO::FETCH_ORI_NEXT [, int $cursor_offset = 0 ]]] )
array fetchAll ([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] )
string fetchColumn ([ int $column_number = 0 ] )
mixed fetchObject ([ string $class_name = "stdClass" [, array $ctor_args ]] )
mixed getAttribute ( int $attribute )
array getColumnMeta ( int $column )
bool nextRowset ( void )
int rowCount ( void )
bool setAttribute ( int $attribute , mixed $value )
bool setFetchMode ( int $mode )
}

属性

queryString

所用的查询字符串

Table of Contents

  • PDOStatement::bindColumn — 绑定一列到一个 PHP 变量
  • PDOStatement::bindParam — 绑定一个参数到指定的变量名
  • PDOStatement::bindValue — 把一个值绑定到一个参数
  • PDOStatement::closeCursor — 关闭游标，使语句能再次被执行。
  • PDOStatement::columnCount — 返回结果集中的列数
  • PDOStatement::debugDumpParams — 打印一条 SQL 预处理命令
  • PDOStatement::errorCode — 获取跟上一次语句句柄操作相关的 SQLSTATE
  • PDOStatement::errorInfo — 获取跟上一次语句句柄操作相关的扩展错误信息
  • PDOStatement::execute — 执行一条预处理语句
  • PDOStatement::fetch — 从结果集中获取下一行
  • PDOStatement::fetchAll — 返回一个包含结果集中所有行的数组
  • PDOStatement::fetchColumn — 从结果集中的下一行返回单独的一列。
  • PDOStatement::fetchObject — 获取下一行并作为一个对象返回。
  • PDOStatement::getAttribute — 检索一个语句属性
  • PDOStatement::getColumnMeta — 返回结果集中一列的元数据
  • PDOStatement::nextRowset — 在一个多行集语句句柄中推进到下一个行集
  • PDOStatement::rowCount — 返回受上一个 SQL 语句影响的行数
  • PDOStatement::setAttribute — 设置一个语句属性
  • PDOStatement::setFetchMode — 为语句设置默认的获取模式。
PDO::setAttribute
PDOStatement::bindColumn
PDO


绑定一列到一个 PHP 变量

PDOStatement
PDOStatement::bindParam
PDOStatement
PHP Manual

PDOStatement::bindColumn

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDOStatement::bindColumn — 绑定一列到一个 PHP 变量

说明

bool PDOStatement::bindColumn ( mixed $column , mixed &$param [, int $type [, int $maxlen [, mixed $driverdata ]]] )

安排一个特定的变量绑定到一个查询结果集中给定的列。每次调用 PDOStatement::fetch() 或 PDOStatement::fetchAll() 都将更新所有绑定到列的变量。

Note:

在语句执行前 PDO 有关列的信息并非总是可用，可移植的应用应在 PDOStatement::execute() 之后 调用此函数（方法）。

但是，当使用 PgSQL 驱动 时，要想能绑定一个 LOB 列作为流，应用程序必须在调用 PDOStatement::execute() 之前 调用此方法，否则大对象 OID 作为一个整数返回。

参数

column

结果集中的列号（从1开始索引）或列名。如果使用列名，注意名称应该与由驱动返回的列名大小写保持一致。

param

将绑定到列的 PHP 变量名称

type

通过 PDO::PARAM_* 常量指定的参数的数据类型。

maxlen

预分配提示。

driverdata

驱动的可选参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 把结果集输出绑定到 PHP 变量

绑定结果集中的列到PHP变量是一种使每行包含的数据在应用程序中立即可用的有效方法。下面的例子演示了 PDO 怎样用多种选项和缺省值绑定和检索列。

<?php
function readData($dbh) {
  $sql = 'SELECT name, colour, calories FROM fruit';
  try {
    $stmt = $dbh->prepare($sql);
    $stmt->execute();

    /*  通过列号绑定  */
    $stmt->bindColumn(1, $name);
    $stmt->bindColumn(2, $colour);

    /*  通过列名绑定  */
    $stmt->bindColumn('calories', $cals);

    while ($row = $stmt->fetch(PDO::FETCH_BOUND)) {
      $data = $name . "\t" . $colour . "\t" . $cals . "\n";
      print $data;
    }
  }
  catch (PDOException $e) {
    print $e->getMessage();
  }
}
readData($dbh);
?>

以上例程会输出：

apple   red     150
banana  yellow  175
kiwi    green   75
orange  orange  150
mango   red     200
strawberry      red     25

参见

  • PDOStatement::execute() - 执行一条预处理语句
  • PDOStatement::fetch() - 从结果集中获取下一行
  • PDOStatement::fetchAll() - 返回一个包含结果集中所有行的数组
  • PDOStatement::fetchColumn() - 从结果集中的下一行返回单独的一列。

PDOStatement
PDOStatement::bindParam
PDOStatement


绑定一个参数到指定的变量名

PDOStatement::bindColumn
PDOStatement::bindValue
PDOStatement
PHP Manual

PDOStatement::bindParam

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDOStatement::bindParam — 绑定一个参数到指定的变量名

说明

bool PDOStatement::bindParam ( mixed $parameter , mixed &$variable [, int $data_type = PDO::PARAM_STR [, int $length [, mixed $driver_options ]]] )

绑定一个PHP变量到用作预处理的SQL语句中的对应命名占位符或问号占位符。 不同于 PDOStatement::bindValue() ，此变量作为引用被绑定，并只在 PDOStatement::execute() 被调用的时候才取其值。

大多数参数是输入参数，即，参数以只读的方式用来建立查询。一些驱动支持调用存储过程并作为输出参数返回数据，一些支持作为输入/输出参数，既发送数据又接收更新后的数据。

参数

parameter

参数标识符。对于使用命名占位符的预处理语句，应是类似 :name 形式的参数名。对于使用问号占位符的预处理语句，应是以1开始索引的参数位置。

variable

绑定到 SQL 语句参数的 PHP 变量名。

data_type

使用 PDO::PARAM_* 常量明确地指定参数的类型。要从一个存储过程中返回一个 INOUT 参数，需要为 data_type 参数使用按位或操作符去设置 PDO::PARAM_INPUT_OUTPUT 位。

length

数据类型的长度。为表明参数是一个存储过程的 OUT 参数，必须明确地设置此长度。

driver_options

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 执行一条使用命名占位符的预处理语句

<?php
/* 通过绑定的 PHP 变量执行一条预处理语句  */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>

Example #2 执行一条使用问号占位符的预处理语句

<?php
/*  通过绑定的 PHP 变量执行一条预处理语句 */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?');
$sth->bindParam(1, $calories, PDO::PARAM_INT);
$sth->bindParam(2, $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>

Example #3 使用 INOUT 参数调用一个存储过程

<?php
/* 使用 INOUT 参数调用一个存储过程 */
$colour = 'red';
$sth = $dbh->prepare('CALL puree_fruit(?)');
$sth->bindParam(1, $colour, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 12);
$sth->execute();
print("After pureeing fruit, the colour is: $colour");
?>

参见

  • PDO::prepare() - Prepares a statement for execution and returns a statement object
  • PDOStatement::execute() - 执行一条预处理语句
  • PDOStatement::bindValue() - 把一个值绑定到一个参数

PDOStatement::bindColumn
PDOStatement::bindValue
PDOStatement


把一个值绑定到一个参数

PDOStatement::bindParam
PDOStatement::closeCursor
PDOStatement
PHP Manual

PDOStatement::bindValue

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 1.0.0)

PDOStatement::bindValue — 把一个值绑定到一个参数

说明

bool PDOStatement::bindValue ( mixed $parameter , mixed $value [, int $data_type = PDO::PARAM_STR ] )

绑定一个值到用作预处理的 SQL 语句中的对应命名占位符或问号占位符。

参数

parameter

参数标识符。对于使用命名占位符的预处理语句，应是类似 :name 形式的参数名。对于使用问号占位符的预处理语句，应是以1开始索引的参数位置。

value

绑定到参数的值

data_type

使用 PDO::PARAM_* 常量明确地指定参数的类型。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 执行一条使用命名占位符的预处理语句

<?php
/* 通过绑定的 PHP 变量执行一条预处理语句 */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour');
$sth->bindValue(':calories', $calories, PDO::PARAM_INT);
$sth->bindValue(':colour', $colour, PDO::PARAM_STR);
$sth->execute();
?>

Example #2 执行一条使用问号占位符的预处理语句

<?php
/* 通过绑定的 PHP 变量执行一条预处理语句 */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?');
$sth->bindValue(1, $calories, PDO::PARAM_INT);
$sth->bindValue(2, $colour, PDO::PARAM_STR);
$sth->execute();
?>

参见

  • PDO::prepare() - Prepares a statement for execution and returns a statement object
  • PDOStatement::execute() - 执行一条预处理语句
  • PDOStatement::bindParam() - 绑定一个参数到指定的变量名

PDOStatement::bindParam
PDOStatement::closeCursor
PDOStatement


关闭游标，使语句能再次被执行。

PDOStatement::bindValue
PDOStatement::columnCount
PDOStatement
PHP Manual

PDOStatement::closeCursor

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.9.0)

PDOStatement::closeCursor — 关闭游标，使语句能再次被执行。

说明

bool PDOStatement::closeCursor ( void )

PDOStatement::closeCursor() 释放到数据库服务的连接，以便发出其他 SQL 语句，但使语句处于一个可以被再次执行的状态。

当上一个执行的 PDOStatement 对象仍有未取行时，此方法对那些不支持再执行一个 PDOStatement 对象的数据库驱动非常有用。 如果数据库驱动受此限制，则可能出现失序错误的问题。

PDOStatement::closeCursor() 要么是一个可选驱动的特有方法（效率最高）来实现，要么是在没有驱动特定的功能时作为一般的PDO 备用来实现。一般的备用语义上与下面的 PHP 代码相同：

<?php
do {
    while ($stmt->fetch())
        ;
    if (!$stmt->nextRowset())
        break;
} while (true);
?>

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 一个 PDOStatement::closeCursor() 的例子

在下面例子中，$stmt PDOStatement 对象返回多行，但应用程序只取第一行，让 PDOStatement 对象处于一个有未取行的状态。为确保应用程序对所有数据库驱动都能正常运行，在执行 $otherStmt PDOStatement 对象前，$stmt 调用一次 PDOStatement::closeCursor() 。

<?php
/* 创建一个 PDOStatement 对象 */
$stmt = $dbh->prepare('SELECT foo FROM bar');

/* 创建第二个 PDOStatement 对象 */
$otherStmt = $dbh->prepare('SELECT foobaz FROM foobar');

/* 执行第一条语句 */
$stmt->execute();

/*  从结果集中只取出第一行 */
$stmt->fetch();

/* The following call to closeCursor() may be required by some drivers */
$stmt->closeCursor();

/*  现在可以执行第二条语句了 */
$otherStmt->execute();
?>

参见

  • PDOStatement::execute() - 执行一条预处理语句

PDOStatement::bindValue
PDOStatement::columnCount
PDOStatement


返回结果集中的列数

PDOStatement::closeCursor
PDOStatement::debugDumpParams
PDOStatement
PHP Manual

PDOStatement::columnCount

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.2.0)

PDOStatement::columnCount — 返回结果集中的列数

说明

int PDOStatement::columnCount ( void )

使用 PDOStatement::columnCount() 返回由 PDOStatement 对象代表的结果集中的列数。

如果是由 PDO::query() 返回的 PDOStatement 对象，则列数计算立即可用。

如果是由 PDO::prepare() 返回的 PDOStatement 对象，则在调用 PDOStatement::execute() 之前都不能准确地计算出列数。

返回值

返回由 PDOStatement 对象代表的结果集中的列数。如果没有结果集，则 PDOStatement::columnCount() 返回 0。

范例

Example #1 计算列数

下面例子演示如何使用 PDOStatement::columnCount() 操作一个结果集和一个空集。

<?php
$dbh = new PDO('odbc:sample', 'db2inst1', 'ibmdb2');

$sth = $dbh->prepare("SELECT name, colour FROM fruit");

/*  计算一个（不存在）的结果集中的列数 */
$colcount = $sth->columnCount();
print("Before execute(), result set has $colcount columns (should be 0)\n");

$sth->execute();

/* 计算结果集中的列数 */
$colcount = $sth->columnCount();
print("After execute(), result set has $colcount columns (should be 2)\n");

?>

以上例程会输出：

Before execute(), result set has 0 columns (should be 0)
After execute(), result set has 2 columns (should be 2)

参见

  • PDO::prepare() - Prepares a statement for execution and returns a statement object
  • PDOStatement::execute() - 执行一条预处理语句
  • PDOStatement::rowCount() - 返回受上一个 SQL 语句影响的行数

PDOStatement::closeCursor
PDOStatement::debugDumpParams
PDOStatement


打印一条 SQL 预处理命令

PDOStatement::columnCount
PDOStatement::errorCode
PDOStatement
PHP Manual

PDOStatement::debugDumpParams

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.9.0)

PDOStatement::debugDumpParams — 打印一条 SQL 预处理命令

说明

bool PDOStatement::debugDumpParams ( void )

直接打印出一条预处理语句包含的信息。提供正在使用的 SQL 查询、所用参数（Params）的数目、参数的清单、参数名、用一个整数表示的参数类型（paramtype）、键名或位置、值、以及在查询中的位置（如果当前 POD 驱动不支持，则为-1）。

此为一个用于调试的功能，在正常输出的情况下直接输出数据。

Tip

和直接将结果输出到浏览器一样，可使用输出控制函数来捕获当前函数的输出，然后(例如)保存到一个 string 中。

只打印此时此刻语句中的参数。额外的参数不存储在语句中，也就不会被输出。

返回值

没有返回值。

范例

Example #1 PDOStatement::debugDumpParams() 使用命名参数的例子

<?php
/* 通过绑定 PHP 变量执行一条预处理语句 */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindValue(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();

$sth->debugDumpParams();

?>

以上例程会输出：

SQL: [96] SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour
Params:  2
Key: Name: [9] :calories
paramno=-1
name=[9] ":calories"
is_param=1
param_type=1
Key: Name: [7] :colour
paramno=-1
name=[7] ":colour"
is_param=1
param_type=2

Example #2 PDOStatement::debugDumpParams() 使用未命名参数的例子

<?php

/* 通过绑定 PHP 变量执行一条预处理语句 */
$calories = 150;
$colour = 'red';
$name = 'apple';

$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?');
$sth->bindParam(1, $calories, PDO::PARAM_INT);
$sth->bindValue(2, $colour, PDO::PARAM_STR);
$sth->execute();

$sth->debugDumpParams();

?>

以上例程会输出：

SQL: [82] SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?
Params:  2
Key: Position #0:
paramno=0
name=[0] ""
is_param=1
param_type=1
Key: Position #1:
paramno=1
name=[0] ""
is_param=1
param_type=2

参见

  • PDO::prepare() - Prepares a statement for execution and returns a statement object
  • PDOStatement::bindParam() - 绑定一个参数到指定的变量名
  • PDOStatement::bindValue() - 把一个值绑定到一个参数

PDOStatement::columnCount
PDOStatement::errorCode
PDOStatement


获取跟上一次语句句柄操作相关的 SQLSTATE

PDOStatement::debugDumpParams
PDOStatement::errorInfo
PDOStatement
PHP Manual

PDOStatement::errorCode

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDOStatement::errorCode — 获取跟上一次语句句柄操作相关的 SQLSTATE

说明

string PDOStatement::errorCode ( void )

返回值

与 PDO::errorCode() 相同，只是 PDOStatement::errorCode() 只取回 PDOStatement 对象执行操作中的错误码。

范例

Example #1 取回一个 SQLSTATE 码

<?php
/* 引发一个错误 --  BONES 数据表不存在 */
$err = $dbh->prepare('SELECT skull FROM bones');
$err->execute();

echo "\nPDOStatement::errorCode(): ";
print $err->errorCode();
?>

以上例程会输出：

PDOStatement::errorCode(): 42S02

参见

  • PDO::errorCode() - 获取跟数据库句柄上一次操作相关的 SQLSTATE
  • PDO::errorInfo() - Fetch extended error information associated with the last operation on the database handle
  • PDOStatement::errorInfo() - 获取跟上一次语句句柄操作相关的扩展错误信息

PDOStatement::debugDumpParams
PDOStatement::errorInfo
PDOStatement


获取跟上一次语句句柄操作相关的扩展错误信息

PDOStatement::errorCode
PDOStatement::execute
PDOStatement
PHP Manual

PDOStatement::errorInfo

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDOStatement::errorInfo — 获取跟上一次语句句柄操作相关的扩展错误信息

说明

array PDOStatement::errorInfo ( void )

返回值

PDOStatement::errorInfo() 返回一个关于上一次语句句柄执行操作的错误信息的数组 。该数组包含下列字段：

Element | Information
0 | SQLSTATE 错误码（一个由5个字母或数字组成的在 ANSI SQL 标准中定义的标识符）。
1 | 具体驱动错误码。
2 | 具体驱动错误信息。

范例

Example #1 显示连接到DB2数据库的 PDO_ODBC 连接的 errorInfo() 的字段

<?php
/* 激发一个错误 --  BONES 数据表不存在 */
$sth = $dbh->prepare('SELECT skull FROM bones');
$sth->execute();

echo "\nPDOStatement::errorInfo():\n";
$arr = $sth->errorInfo();
print_r($arr);
?>

以上例程会输出：

PDOStatement::errorInfo():
Array
(
    [0] => 42S02
    [1] => -204
    [2] => [IBM][CLI Driver][DB2/LINUX] SQL0204N  "DANIELS.BONES" is an undefined name.  SQLSTATE=42704
)

参见

  • PDO::errorCode() - 获取跟数据库句柄上一次操作相关的 SQLSTATE
  • PDO::errorInfo() - Fetch extended error information associated with the last operation on the database handle
  • PDOStatement::errorCode() - 获取跟上一次语句句柄操作相关的 SQLSTATE

PDOStatement::errorCode
PDOStatement::execute
PDOStatement


执行一条预处理语句

PDOStatement::errorInfo
PDOStatement::fetch
PDOStatement
PHP Manual

PDOStatement::execute

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDOStatement::execute — 执行一条预处理语句

说明

bool PDOStatement::execute ([ array $input_parameters ] )

执行预处理过的语句。如果预处理过的语句含有参数标记，必须选择下面其中一种做法：

  • 调用 PDOStatement::bindParam() 绑定 PHP 变量到参数标记：如果有的话，通过关联参数标记绑定的变量来传递输入值和取得输出值

  • 或传递一个只作为输入参数值的数组

参数

input_parameters

一个元素个数和将被执行的 SQL 语句中绑定的参数一样多的数组。所有的值作为 PDO::PARAM_STR 对待。

不能绑定多个值到一个单独的参数；比如，不能绑定两个值到 IN（）子句中一个单独的命名参数。

绑定的值不能超过指定的个数。如果在 input_parameters 中存在比 PDO::prepare() 预处理的SQL 指定的多的键名，则此语句将会失败并发出一个错误。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.2.0 | input_parameters 中的键名必须和 SQL 中声明的相匹配。PHP 5.2.0 之前默认忽略。

范例

Example #1 执行一条绑定变量的预处理语句

<?php
/*  通过绑定 PHP 变量执行一条预处理语句 */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>

Example #2 使用一个含有插入值的数组执行一条预处理语句（命名参数）

<?php
/* 通过传递一个含有插入值的数组执行一条预处理语句 */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour');
$sth->execute(array(':calories' => $calories, ':colour' => $colour));
?>

Example #3 使用一个含有插入值的数组执行一条预处理语句（占位符）

<?php
/*  通过传递一个插入值的数组执行一条预处理语句 */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?');
$sth->execute(array($calories, $colour));
?>

Example #4 执行一条问号占位符的预处理语句

<?php
/* 通过绑定 PHP 变量执行一条预处理语句 */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?');
$sth->bindParam(1, $calories, PDO::PARAM_INT);
$sth->bindParam(2, $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>

Example #5 使用数组执行一条含有 IN 子句的预处理语句

<?php
/*  使用一个数组的值执行一条含有 IN 子句的预处理语句 */
$params = array(1, 21, 63, 171);
/*  创建一个填充了和params相同数量占位符的字符串 */
$place_holders = implode(',', array_fill(0, count($params), '?'));

/*
    对于 $params 数组中的每个值，要预处理的语句包含足够的未命名占位符 。
    语句被执行时， $params 数组中的值被绑定到预处理语句中的占位符。
    这和使用 PDOStatement::bindParam() 不一样，因为它需要一个引用变量。
    PDOStatement::execute() 仅作为通过值绑定的替代。
*/
$sth = $dbh->prepare("SELECT id, name FROM contacts WHERE id IN ($place_holders)");
$sth->execute($params);
?>

注释

Note:

有些驱动在执行下一条语句前需要 关闭游标 。

参见

  • PDO::prepare() - Prepares a statement for execution and returns a statement object
  • PDOStatement::bindParam() - 绑定一个参数到指定的变量名
  • PDOStatement::fetch() - 从结果集中获取下一行
  • PDOStatement::fetchAll() - 返回一个包含结果集中所有行的数组
  • PDOStatement::fetchColumn() - 从结果集中的下一行返回单独的一列。

PDOStatement::errorInfo
PDOStatement::fetch
PDOStatement


从结果集中获取下一行

PDOStatement::execute
PDOStatement::fetchAll
PDOStatement
PHP Manual

PDOStatement::fetch

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDOStatement::fetch — 从结果集中获取下一行

说明

mixed PDOStatement::fetch ([ int $fetch_style [, int $cursor_orientation = PDO::FETCH_ORI_NEXT [, int $cursor_offset = 0 ]]] )

从一个 PDOStatement 对象相关的结果集中获取下一行。fetch_style 参数决定 POD 如何返回行。

参数

fetch_style

控制下一行如何返回给调用者。此值必须是 PDO::FETCH_* 系列常量中的一个，缺省为 PDO::ATTR_DEFAULT_FETCH_MODE 的值 （默认为 PDO::FETCH_BOTH ）。

  • PDO::FETCH_ASSOC：返回一个索引为结果集列名的数组

  • PDO::FETCH_BOTH（默认）：返回一个索引为结果集列名和以0开始的列号的数组

  • PDO::FETCH_BOUND：返回 TRUE ，并分配结果集中的列值给 PDOStatement::bindColumn() 方法绑定的 PHP 变量。

  • PDO::FETCH_CLASS：返回一个请求类的新实例，映射结果集中的列名到类中对应的属性名。如果 fetch_style 包含 PDO::FETCH_CLASSTYPE（例如：PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE），则类名由第一列的值决定

  • PDO::FETCH_INTO：更新一个被请求类已存在的实例，映射结果集中的列到类中命名的属性

  • PDO::FETCH_LAZY：结合使用 PDO::FETCH_BOTH 和 PDO::FETCH_OBJ，创建供用来访问的对象变量名

  • PDO::FETCH_NUM：返回一个索引为以0开始的结果集列号的数组

  • PDO::FETCH_OBJ：返回一个属性名对应结果集列名的匿名对象

cursor_orientation

对于 一个 PDOStatement 对象表示的可滚动游标，该值决定了哪一行将被返回给调用者。此值必须是 PDO::FETCH_ORI_* 系列常量中的一个，默认为 PDO::FETCH_ORI_NEXT。要想让 PDOStatement 对象使用可滚动游标，必须在用 PDO::prepare() 预处理SQL语句时，设置 PDO::ATTR_CURSOR 属性为 PDO::CURSOR_SCROLL。

offset

对于一个 cursor_orientation 参数设置为 PDO::FETCH_ORI_ABS 的PDOStatement 对象代表的可滚动游标，此值指定结果集中想要获取行的绝对行号。

对于一个 cursor_orientation 参数设置为 PDO::FETCH_ORI_REL 的PDOStatement 对象代表的可滚动游标，此值指定想要获取行相对于调用 PDOStatement::fetch() 前游标的位置

返回值

此函数（方法）成功时返回的值依赖于提取类型。在所有情况下，失败都返回 FALSE 。

范例

Example #1 使用不同的提取方式获取行

<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

/* 运用 PDOStatement::fetch 风格 */
print("PDO::FETCH_ASSOC: ");
print("Return next row as an array indexed by column name\n");
$result = $sth->fetch(PDO::FETCH_ASSOC);
print_r($result);
print("\n");

print("PDO::FETCH_BOTH: ");
print("Return next row as an array indexed by both column name and number\n");
$result = $sth->fetch(PDO::FETCH_BOTH);
print_r($result);
print("\n");

print("PDO::FETCH_LAZY: ");
print("Return next row as an anonymous object with column names as properties\n");
$result = $sth->fetch(PDO::FETCH_LAZY);
print_r($result);
print("\n");

print("PDO::FETCH_OBJ: ");
print("Return next row as an anonymous object with column names as properties\n");
$result = $sth->fetch(PDO::FETCH_OBJ);
print $result->NAME;
print("\n");
?>

以上例程会输出：

PDO::FETCH_ASSOC: Return next row as an array indexed by column name
Array
(
    [NAME] => apple
    [COLOUR] => red
)

PDO::FETCH_BOTH: Return next row as an array indexed by both column name and number
Array
(
    [NAME] => banana
    [0] => banana
    [COLOUR] => yellow
    [1] => yellow
)

PDO::FETCH_LAZY: Return next row as an anonymous object with column names as properties
PDORow Object
(
    [NAME] => orange
    [COLOUR] => orange
)

PDO::FETCH_OBJ: Return next row as an anonymous object with column names as properties
kiwi

Example #2 使用一个可滚动游标获取行

<?php
function readDataForwards($dbh) {
  $sql = 'SELECT hand, won, bet FROM mynumbers ORDER BY BET';
  try {
    $stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
    $stmt->execute();
    while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) {
      $data = $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
      print $data;
    }
    $stmt = null;
  }
  catch (PDOException $e) {
    print $e->getMessage();
  }
}
function readDataBackwards($dbh) {
  $sql = 'SELECT hand, won, bet FROM mynumbers ORDER BY bet';
  try {
    $stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
    $stmt->execute();
    $row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_LAST);
    do {
      $data = $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
      print $data;
    } while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_PRIOR));
    $stmt = null;
  }
  catch (PDOException $e) {
    print $e->getMessage();
  }
}

print "Reading forwards:\n";
readDataForwards($conn);

print "Reading backwards:\n";
readDataBackwards($conn);
?>

以上例程会输出：

Reading forwards:
21    10    5
16    0     5
19    20    10

Reading backwards:
19    20    10
16    0     5
21    10    5

参见

  • PDO::prepare() - Prepares a statement for execution and returns a statement object
  • PDOStatement::execute() - 执行一条预处理语句
  • PDOStatement::fetchAll() - 返回一个包含结果集中所有行的数组
  • PDOStatement::fetchColumn() - 从结果集中的下一行返回单独的一列。
  • PDOStatement::fetchObject() - 获取下一行并作为一个对象返回。
  • PDOStatement::setFetchMode() - 为语句设置默认的获取模式。

PDOStatement::execute
PDOStatement::fetchAll
PDOStatement


返回一个包含结果集中所有行的数组

PDOStatement::fetch
PDOStatement::fetchColumn
PDOStatement
PHP Manual

PDOStatement::fetchAll

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDOStatement::fetchAll — 返回一个包含结果集中所有行的数组

说明

array PDOStatement::fetchAll ([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] )

参数

fetch_style

控制返回数组的内容如同 PDOStatement::fetch() 文档中记载的一样。默认为 PDO::ATTR_DEFAULT_FETCH_MODE 的值（ 其缺省值为 PDO::FETCH_BOTH ）

想要返回一个包含结果集中单独一列所有值的数组，需要指定 PDO::FETCH_COLUMN 。通过指定 column-index 参数获取想要的列。

想要获取结果集中单独一列的唯一值，需要将 PDO::FETCH_COLUMN 和 PDO::FETCH_UNIQUE 按位或。

想要返回一个根据指定列把值分组后的关联数组，需要将 PDO::FETCH_COLUMN 和 PDO::FETCH_GROUP 按位或。

fetch_argument

根据 fetch_style 参数的值，此参数有不同的意义：

  • PDO::FETCH_COLUMN：返回指定以0开始索引的列。

  • PDO::FETCH_CLASS：返回指定类的实例，映射每行的列到类中对应的属性名。

  • PDO::FETCH_FUNC：将每行的列作为参数传递给指定的函数，并返回调用函数后的结果。

ctor_args

当 fetch_style 参数为 PDO::FETCH_CLASS 时，自定义类的构造函数的参数。

返回值

PDOStatement::fetchAll() 返回一个包含结果集中所有剩余行的数组。此数组的每一行要么是一个列值的数组，要么是属性对应每个列名的一个对象。

使用此方法获取大结果集将导致系统负担加重且可能占用大量网络资源。与其取回所有数据后用PHP来操作，倒不如考虑使用数据库服务来处理结果集。例如，在取回数据并通过PHP处理前，在 SQL 中使用 WHERE 和 ORDER BY 子句来限定结果。

范例

Example #1 获取结果集中所有剩余的行

<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

/* 获取结果集中所有剩余的行 */
print("Fetch all of the remaining rows in the result set:\n");
$result = $sth->fetchAll();
print_r($result);
?>

以上例程的输出类似于：

Fetch all of the remaining rows in the result set:
Array
(
    [0] => Array
        (
            [NAME] => pear
            [0] => pear
            [COLOUR] => green
            [1] => green
        )

    [1] => Array
        (
            [NAME] => watermelon
            [0] => watermelon
            [COLOUR] => pink
            [1] => pink
        )

)

Example #2 获取结果集中单独一列的所有值

下面例子演示了如何从一个结果集中返回单独一列所有的值，尽管 SQL 语句自身可能返回每行多列。

<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

/* 获取第一列所有值 */
$result = $sth->fetchAll(PDO::FETCH_COLUMN, 0);
var_dump($result);
?>

以上例程的输出类似于：

Array(3)
(
    [0] =>
    string(5) => apple
    [1] =>
    string(4) => pear
    [2] =>
    string(10) => watermelon
)

Example #3 根据单独的一列把所有值分组

下面例子演示了如何返回一个根据结果集中指定列的值分组的关联数组。该数组包含三个键：返回的 apple 和 pear 数组包含了两种不同的颜色，而返回的 watermelon 数组仅包含一种颜色。

<?php
$insert = $dbh->prepare("INSERT INTO fruit(name, colour) VALUES (?, ?)");
$insert->execute(array('apple', 'green'));
$insert->execute(array('pear', 'yellow'));

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

/* 根据第一列分组  */
var_dump($sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP));
?>

以上例程的输出类似于：

array(3) {
  ["apple"]=>
  array(2) {
    [0]=>
    string(5) "green"
    [1]=>
    string(3) "red"
  }
  ["pear"]=>
  array(2) {
    [0]=>
    string(5) "green"
    [1]=>
    string(6) "yellow"
  }
  ["watermelon"]=>
  array(1) {
    [0]=>
    string(5) "green"
  }
}

Example #4 每行结果实例化一个类

下面列子演示了 PDO::FETCH_CLASS 获取风格的行为。

<?php
class fruit {
    public $name;
    public $colour;
}

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

$result = $sth->fetchAll(PDO::FETCH_CLASS, "fruit");
var_dump($result);
?>

以上例程的输出类似于：

array(3) {
  [0]=>
  object(fruit)#1 (2) {
    ["name"]=>
    string(5) "apple"
    ["colour"]=>
    string(5) "green"
  }
  [1]=>
  object(fruit)#2 (2) {
    ["name"]=>
    string(4) "pear"
    ["colour"]=>
    string(6) "yellow"
  }
  [2]=>
  object(fruit)#3 (2) {
    ["name"]=>
    string(10) "watermelon"
    ["colour"]=>
    string(4) "pink"
  }
}

Example #5 每行调用一次函数

下面列子演示了 PDO::FETCH_FUNC 获取风格的行为。

<?php
function fruit($name, $colour) {
    return "{$name}: {$colour}";
}

$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

$result = $sth->fetchAll(PDO::FETCH_FUNC, "fruit");
var_dump($result);
?>

以上例程的输出类似于：

array(3) {
  [0]=>
  string(12) "apple: green"
  [1]=>
  string(12) "pear: yellow"
  [2]=>
  string(16) "watermelon: pink"
}

参见

  • PDO::query() - Executes an SQL statement, returning a result set as a PDOStatement object
  • PDOStatement::fetch() - 从结果集中获取下一行
  • PDOStatement::fetchColumn() - 从结果集中的下一行返回单独的一列。
  • PDO::prepare() - Prepares a statement for execution and returns a statement object
  • PDOStatement::setFetchMode() - 为语句设置默认的获取模式。

PDOStatement::fetch
PDOStatement::fetchColumn
PDOStatement


从结果集中的下一行返回单独的一列。

PDOStatement::fetchAll
PDOStatement::fetchObject
PDOStatement
PHP Manual

PDOStatement::fetchColumn

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.9.0)

PDOStatement::fetchColumn — 从结果集中的下一行返回单独的一列。

说明

string PDOStatement::fetchColumn ([ int $column_number = 0 ] )

从结果集中的下一行返回单独的一列，如果没有了，则返回 FALSE 。

参数

column_number

你想从行里取回的列的索引数字（以0开始的索引）。如果没有提供值，则 PDOStatement::fetchColumn() 获取第一列。

返回值

PDOStatement::fetchColumn() 从结果集中的下一行返回单独的一列。

Warning

如果使用 PDOStatement::fetchColumn() 取回数据，则没有办法返回同一行的另外一列。

范例

Example #1 返回下一行的第一列

<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

/* 从结果集中的下一行获取第一列  */
print("从结果集中的下一行获取第一列：\n");
$result = $sth->fetchColumn();
print("name = $result\n");

print("从结果集中的下一行获取第二列：\n");
$result = $sth->fetchColumn(1);
print("colour = $result\n");
?>

以上例程会输出：

从结果集中的下一行获取第一列：
name = lemon
从结果集中的下一行获取第二列：
colour = red

参见

  • PDO::query() - Executes an SQL statement, returning a result set as a PDOStatement object
  • PDOStatement::fetch() - 从结果集中获取下一行
  • PDOStatement::fetchAll() - 返回一个包含结果集中所有行的数组
  • PDO::prepare() - Prepares a statement for execution and returns a statement object
  • PDOStatement::setFetchMode() - 为语句设置默认的获取模式。

PDOStatement::fetchAll
PDOStatement::fetchObject
PDOStatement


获取下一行并作为一个对象返回。

PDOStatement::fetchColumn
PDOStatement::getAttribute
PDOStatement
PHP Manual

PDOStatement::fetchObject

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.2.4)

PDOStatement::fetchObject — 获取下一行并作为一个对象返回。

说明

mixed PDOStatement::fetchObject ([ string $class_name = "stdClass" [, array $ctor_args ]] )

获取下一行并作为一个对象返回。此函数（方法）是使用 PDO::FETCH_CLASS 或 PDO::FETCH_OBJ 风格的 PDOStatement::fetch() 的一种替代。

参数

class_name

创建类的名称。

ctor_args

此数组的元素被传递给构造函数。

返回值

返回一个属性名对应于列名的所要求类的实例， 或者在失败时返回 FALSE.

参见

  • PDOStatement::fetch() - 从结果集中获取下一行

PDOStatement::fetchColumn
PDOStatement::getAttribute
PDOStatement


检索一个语句属性

PDOStatement::fetchObject
PDOStatement::getColumnMeta
PDOStatement
PHP Manual

PDOStatement::getAttribute

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.2.0)

PDOStatement::getAttribute — 检索一个语句属性

说明

mixed PDOStatement::getAttribute ( int $attribute )

得到语句的一个属性。当前，不存在通用的属性，只有驱动特定的属性：

  • PDO::ATTR_CURSOR_NAME （Firebird 和 ODBC 特性）： 获取 UPDATE ... WHERE CURRENT OF 的游标名称。

返回值

返回属性值。

参见

  • PDO::getAttribute() - 取回一个数据库连接的属性
  • PDO::setAttribute() - 设置属性
  • PDOStatement::setAttribute() - 设置一个语句属性

PDOStatement::fetchObject
PDOStatement::getColumnMeta
PDOStatement


返回结果集中一列的元数据

PDOStatement::getAttribute
PDOStatement::nextRowset
PDOStatement
PHP Manual

PDOStatement::getColumnMeta

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.2.0)

PDOStatement::getColumnMeta — 返回结果集中一列的元数据

说明

array PDOStatement::getColumnMeta ( int $column )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

检索一个在结果集中以0开始索引的列的元数据作为一个关联数组。

Warning

并非所有 PDO 驱动都支持 PDOStatement::getColumnMeta()。

参数

column

结果集中以0开始索引的列。

返回值

返回一个关联数组，它包含了下列表示一个单独列的元数据的值：

列的元数据
名称 | 值
native_type | 用于表示列值的 PHP 原生类型。
driver:decl_type | 在数据库中用于表示列值的 SQL 类型。如果结果集中的列是一个函数的结果，则该值不能被 PDOStatement::getColumnMeta() 返回。
flags | 任何设置于此列的标记。
name | 通过数据库返回的列名。
table | 通过数据库返回的该列的表名
len | 该列的长度。除浮点小数外通常为 -1
precision | 该列的数值精度。除浮点小数外通常为 0 。
pdo_type | 以 PDO::PARAM_* 常量为代表的列类型。

如果结果集不存在，或者是请求的列在结果集中不存在，则返回 FALSE 。

更新日志

版本 | 说明
5.2.3 | table 字段

范例

Example #1 检索列的元数据

下面例子展示了在一个PDO_SQLITE中，检索一个通过函数（COUNT）生成单独列的元数据的结果。

<?php
$select = $DB->query('SELECT COUNT(*) FROM fruit');
$meta = $select->getColumnMeta(0);
var_dump($meta);
?>

以上例程会输出：

array(6) {
  ["native_type"]=>
  string(7) "integer"
  ["flags"]=>
  array(0) {
  }
  ["name"]=>
  string(8) "COUNT(*)"
  ["len"]=>
  int(-1)
  ["precision"]=>
  int(0)
  ["pdo_type"]=>
  int(2)
}

参见

  • PDOStatement::columnCount() - 返回结果集中的列数
  • PDOStatement::rowCount() - 返回受上一个 SQL 语句影响的行数

PDOStatement::getAttribute
PDOStatement::nextRowset
PDOStatement


在一个多行集语句句柄中推进到下一个行集

PDOStatement::getColumnMeta
PDOStatement::rowCount
PDOStatement
PHP Manual

PDOStatement::nextRowset

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.2.0)

PDOStatement::nextRowset — 在一个多行集语句句柄中推进到下一个行集

说明

bool PDOStatement::nextRowset ( void )

一些数据库服务支持返回一个以上行集（也被称为结果集）的存储过程。PDOStatement::nextRowset() 使你能够结合一个 PDOStatement 对象访问第二个以及后续的行集。上述的每个行集可以有不同的列集合。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 获取由一个存储过程返回的多个行集

下面例子展示了怎样调用一个存储过程，返回三个行集的 MULTIPLE_ROWSETS 。用一个 do / while 循环来循环调用 PDOStatement::nextRowset() 方法， 当不再有行集返回时返回 false 并结束循环。

<?php
$sql = 'CALL multiple_rowsets()';
$stmt = $conn->query($sql);
$i = 1;
do {
    $rowset = $stmt->fetchAll(PDO::FETCH_NUM);
    if ($rowset) {
        printResultSet($rowset, $i);
    }
    $i++;
} while ($stmt->nextRowset());

function printResultSet(&$rowset, $i) {
    print "Result set $i:\n";
    foreach ($rowset as $row) {
        foreach ($row as $col) {
            print $col . "\t";
        }
        print "\n";
    }
    print "\n";
}
?>

以上例程会输出：

Result set 1:
apple    red
banana   yellow

Result set 2:
orange   orange    150
banana   yellow    175

Result set 3:
lime     green
apple    red
banana   yellow

参见

  • PDOStatement::columnCount() - 返回结果集中的列数
  • PDOStatement::execute() - 执行一条预处理语句
  • PDOStatement::getColumnMeta() - 返回结果集中一列的元数据
  • PDO::query() - Executes an SQL statement, returning a result set as a PDOStatement object

PDOStatement::getColumnMeta
PDOStatement::rowCount
PDOStatement


返回受上一个 SQL 语句影响的行数

PDOStatement::nextRowset
PDOStatement::setAttribute
PDOStatement
PHP Manual

PDOStatement::rowCount

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0)

PDOStatement::rowCount — 返回受上一个 SQL 语句影响的行数

说明

int PDOStatement::rowCount ( void )

PDOStatement::rowCount() 返回上一个由对应的 PDOStatement 对象执行DELETE、 INSERT、或 UPDATE 语句受影响的行数。

如果上一条由相关 PDOStatement 执行的 SQL 语句是一条 SELECT 语句，有些数据可能返回由此语句返回的行数。但这种方式不能保证对所有数据有效，且对于可移植的应用不应依赖于此方式。

返回值

返回行数。

范例

Example #1 返回删除的行数

PDOStatement::rowCount() 返回受 DELETE、INSERT、 或 UPDATE 语句影响的行数。

<?php
/*  从 FRUIT 数据表中删除所有行 */
$del = $dbh->prepare('DELETE FROM fruit');
$del->execute();

/*  返回被删除的行数 */
print("Return number of rows that were deleted:\n");
$count = $del->rowCount();
print("Deleted $count rows.\n");
?>

以上例程会输出：

Return number of rows that were deleted:
Deleted 9 rows.

Example #2 计算由一个 SELECT 语句返回的行数

对于大多数数据库，PDOStatement::rowCount() 不能返回受一条 SELECT 语句影响的行数。替代的方法是，使用 PDO::query() 来发出一条和原打算中的SELECT语句有相同条件表达式的 SELECT COUNT(*) 语句，然后用 PDOStatement::fetchColumn() 来取得返回的行数。这样应用程序才能正确执行。

<?php
$sql = "SELECT COUNT(*) FROM fruit WHERE calories > 100";
if ($res = $conn->query($sql)) {

    /* 检查符合 SELECT 语句的行数 */
  if ($res->fetchColumn() > 0) {

        /* 发出一条真正的 SELECT 语句并操作返回的结果 */
         $sql = "SELECT name FROM fruit WHERE calories > 100";
       foreach ($conn->query($sql) as $row) {
           print "Name: " .  $row['NAME'] . "\n";
         }
    }
    /* 没有匹配的行 -- 执行其他 */
  else {
      print "No rows matched the query.";
    }
}

$res = null;
$conn = null;
?>

以上例程会输出：

apple
banana
orange
pear

参见

  • PDOStatement::columnCount() - 返回结果集中的列数
  • PDOStatement::fetchColumn() - 从结果集中的下一行返回单独的一列。
  • PDO::query() - Executes an SQL statement, returning a result set as a PDOStatement object

PDOStatement::nextRowset
PDOStatement::setAttribute
PDOStatement


设置一个语句属性

PDOStatement::rowCount
PDOStatement::setFetchMode
PDOStatement
PHP Manual

PDOStatement::setAttribute

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.2.0)

PDOStatement::setAttribute — 设置一个语句属性

说明

bool PDOStatement::setAttribute ( int $attribute , mixed $value )

给语句设置一个属性。当前，没有通用的属性可以设置，只有驱动特定的属性：

  • PDO::ATTR_CURSOR_NAME （Firebird 和 ODBC 特性）： 为 UPDATE ... WHERE CURRENT OF 设置游标名称。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • PDO::getAttribute() - 取回一个数据库连接的属性
  • PDO::setAttribute() - 设置属性
  • PDOStatement::getAttribute() - 检索一个语句属性

PDOStatement::rowCount
PDOStatement::setFetchMode
PDOStatement


为语句设置默认的获取模式。

PDOStatement::setAttribute
PDOException
PDOStatement
PHP Manual

PDOStatement::setFetchMode

(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.2.0)

PDOStatement::setFetchMode — 为语句设置默认的获取模式。

说明

bool PDOStatement::setFetchMode ( int $mode )
bool PDOStatement::setFetchMode ( int $PDO::FETCH_COLUMN , int $colno )
bool PDOStatement::setFetchMode ( int $PDO::FETCH_CLASS , string $classname , array $ctorargs )
bool PDOStatement::setFetchMode ( int $PDO::FETCH_INTO , object $object )

参数

mode

获取模式必须是 PDO::FETCH_* 系列常量中的一个。

colno

列号。

classname

类名。

ctorargs

构造函数参数。

object

对象。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 设置获取模式

The following example demonstrates how PDOStatement::setFetchMode() changes the default fetch mode for a PDOStatement object.下面的例子示范如何用 PDOStatement::setFetchMode() 来为一个 PDOStatement 对象更改默认的获取模式。

<?php
$sql = 'SELECT name, colour, calories FROM fruit';
try {
  $stmt = $dbh->query($sql);
  $result = $stmt->setFetchMode(PDO::FETCH_NUM);
  while ($row = $stmt->fetch()) {
    print $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
  }
}
catch (PDOException $e) {
  print $e->getMessage();
}
?>

以上例程会输出：

apple   red     150
banana  yellow  250
orange  orange  300
kiwi    brown   75
lemon   yellow  25
pear    green   150
watermelon      pink    90

PDOStatement::setAttribute
PDOException
PDOStatement


PDOException 异常类

(PHP 5 >= 5.1.0, PHP 7)

简介

代表一个由 PDO 产生的错误。在自己的代码不应抛出一个 PDOException 异常。关于 PHP 异常的更多信息请参见 异常 。

类摘要

PDOException extends RuntimeException {
/* 属性 */
public array $errorInfo ;
protected string $message ;
protected string $code ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}

属性

errorInfo

相当于PDO::errorInfo() 或 PDOStatement::errorInfo()

message

文本错误信息。用 Exception::getMessage() 来访问。

code

SQLSTATE 错误码。用Exception::getCode() 来访问。

PDOStatement::setFetchMode
PDO 驱动
PDO


PDO 驱动

Table of Contents

  • CUBRID (PDO)
  • MS SQL Server (PDO)
  • Firebird (PDO)
  • IBM (PDO)
  • Informix (PDO)
  • MySQL (PDO)
  • MS SQL Server (PDO)
  • Oracle (PDO)
  • ODBC and DB2 (PDO)
  • PostgreSQL (PDO)
  • SQLite (PDO)
  • 4D (PDO)

下列驱动目前实现了 PDO 接口：

驱动名称 | 支持的数据库
PDO_CUBRID | Cubrid
PDO_DBLIB | FreeTDS / Microsoft SQL Server / Sybase
PDO_FIREBIRD | Firebird/Interbase 6
PDO_IBM | IBM DB2
PDO_INFORMIX | IBM Informix Dynamic Server
PDO_MYSQL | MySQL 3.x/4.x/5.x
PDO_OCI | Oracle Call Interface
PDO_ODBC | ODBC v3 (IBM DB2, unixODBC and win32 ODBC)
PDO_PGSQL | PostgreSQL
PDO_SQLITE | SQLite 3 及 SQLite 2
PDO_SQLSRV | Microsoft SQL Server / SQL Azure
PDO_4D | 4D

PDOException
CUBRID (PDO)
PDO


CUBRID Functions (PDO_CUBRID)

简介

PDO_CUBRID is a driver that implements the PHP Data Objects (PDO) interface to enable access from PHP to CUBRID databases.

Note:

Current version of PDO_CUBRID doesn't support persistent connection now.

安装

To build the PDO_CUBRID extension, the CUBRID DBMS must be installed on the same system as PHP. PDO_CUBRID is a » PECL extension, so follow the instructions in PECL 扩展库安装 to install the PDO_CUBRID extension. Issue the configure command to point to the location of your CUBRID base dir as follows:

   $ ./configure --with-pdo-cubrid=/path/to/CUBRID[,shared]
The configure command defaults to the value of the CUBRID environment variable.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。 Detailed information about installation on Linux and Windows manually, please read build-guide.html in PECL package CUBRID for reference.

Features

PDO_CUBRID Features
Feature | Description
Scrollable cursors | PDO_CUBRID supports scrollable cursors. The default cursor type is forward only, and you can use parameter driver_options in PDO::prepare() to change cursor type.
Timeout | PDO_CUBRID supports sql statement execution timeout setting; You can use PDO::setAttribute() to set timeout value.
Autocommit_mode and Transaction PDO_CUBRID supports both autocommit_mode and transaction, and autocommit_mode is enabled by default. You can use PDO::setAttribute() to change its state.

If you use PDO::beginTransaction() to begin a transaction, it will disable autocommit_mode automatically and restore it after PDO::commit() or PDO::rollBack(). Note that before disabling the autocommit_mode, any pending work is automatically committed.

Multiple SQL Statements | PDO_CUBRID supports Multiple SQL statements. Multiple SQL statements are separated by semicolons (;)
Schema Information | PDO_CUBRID implements a function PDO::cubrid_schema() to get schema information.
LOBs PDO_CUBRID supports BLOB/CLOB data type. The LOB in PDO is represented as a stream, so you can insert LOBs by binding a stream, and get LOBs by reading a stream returned by CUBRID PDO. For example:

Example #1 Insert LOBs in CUBRID PDO

<?php
$fp = fopen('lob_test.png', 'rb');

$sql_stmt = "INSERT INTO lob_test(name, content) VALUES('lob_test.png', ?)";

$stmt = $dbh->prepare($sql_stmt);
$ret = $stmt->bindParam(1, $fp, PDO::PARAM_LOB);
$ret = $stmt->execute();
?>

Example #2 Fetch LOBs in CUBRID PDO

<?php
$sql_stmt = "SELECT content FROM lob_test WHERE name='lob_test.png'";

$stmt = $dbh->prepare($sql_stmt);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_NUM);

header("Content-Type: image/png");
fpassthru($result[0]);
?>

Column meta The PDOStatement::getColumnMeta() in CUBRID PDO will return an associative array containing the following values:
  • type
  • name
  • table
  • def
  • precision
  • scale
  • not_null
  • auto_increment
  • unique_key
  • multiple_key
  • primary_key
  • foreign_key
  • reverse_index
  • reverse_unique
Collection Data Type PDO_CUBRID supports SET/MULTISET/SEQUENCE data type. If you don't specify data type, the default data type is char,for example:

Example #3 Insert set in CUBRID PDO with default data type.

<?php
$conn_str ="cubrid:dbname=demodb;host=localhost;port=33000";
$cubrid_pdo = new PDO($conn_str, 'dba', '');

$cubrid_pdo->exec("DROP TABLE if exists test_tbl");
$cubrid_pdo->exec("CREATE TABLE test_tbl (col_1 SET(VARCHAR))");

$sql_stmt_insert = "INSERT INTO test_tbl VALUES (?);";
$stmt = $cubrid_pdo->prepare($sql_stmt_insert);
$data = array("abc","def","ghi");
$ret = $stmt->bindParam(1, $data, PDO::PARAM_NULL);
$ret = $stmt->execute();
var_Dump($ret);
?>

Example #4 Specify data type when insert set in CUBRID PDO

<?php
$conn_str ="cubrid:dbname=demodb;host=localhost;port=33000";
$cubrid_pdo = new PDO($conn_str, 'dba', '');

$cubrid_pdo->exec("DROP TABLE if exists test_tbl");
$cubrid_pdo->exec("CREATE TABLE test_tbl (col_1 SET(int))");

$sql_stmt_insert = "INSERT INTO test_tbl VALUES (?);";
$stmt = $cubrid_pdo->prepare($sql_stmt_insert);
$data = array(1,2,3,4);
$ret = $stmt->bindParam(1, $data, 0,0,"int");
$ret = $stmt->execute();
var_Dump($ret);
?>

CUBRID Bind Data Types:(The fifth parameter of PDOStatement::bindParam):
  • CHAR
  • STRING
  • NCHAR
  • VARNCHAR
  • BIT
  • VARBIT
  • NUMERIC
  • NUMBER
  • INT
  • SHORT
  • BIGINT
  • MONETARY
  • FLOAT
  • DOUBLE
  • DATE
  • TIME
  • DATETIME
  • TIMESTAMP

预定义常量

下列常量由此驱动定义，且仅在扩展编译入 PHP 或在运行时动态载入时可用。另外，使用此驱动时，仅会使用这些驱动特定的常量。使用其他驱动的驱动特定的常量可能会导致不可预见的情况。如果代码可运行于多个驱动，PDO::getAttribute() 可被用于获取 PDO_ATTR_DRIVER_NAME 属性以检查驱动。

The following constants can be used when setting the database attribute. They can be passed to PDO::getAttribute() or PDO::setAttribute().

PDO::CUBRID attribute flags
Constant | Description
PDO::CUBRID_ATTR_ISOLATION_LEVEL | Transaction isolation level for the database connection.
PDO::CUBRID_ATTR_LOCK_TIMEOUT | Transaction timeout in seconds.
PDO::CUBRID_ATTR_MAX_STRING_LENGTH | Read only. The maximum string length for bit, varbit, char, varchar, nchar, nchar varying data types when using CUBRID PDO API.

The following constants can be used when setting the transaction isolation level. They can be passed to PDO::getAttribute() or returned by PDO::setAttribute().

PDO::CUBRID isolation level flags
Constant | Description
PDO::TRAN_COMMIT_CLASS_UNCOMMIT_INSTANCE | The lowest isolation level (1). A dirty, non-repeatable or phantom read may occur for the tuple and a non-repeatable read may occur for the table as well.
PDO::TRAN_COMMIT_CLASS_COMMIT_INSTANCE | A relatively low isolation level (2). A dirty read does not occur, but non-repeatable or phantom read may occur.
PDO::TRAN_REP_CLASS_UNCOMMIT_INSTANCE | The default isolation of CUBRID (3). A dirty, non-repeatable or phantom read may occur for the tuple, but repeatable read is ensured for the table.
PDO::TRAN_REP_CLASS_COMMIT_INSTANCE | A relatively low isolation level (4). A dirty read does not occur, but non-repeatable or phantom read may.
PDO::TRAN_REP_CLASS_REP_INSTANCE | A relatively high isolation level (5). A dirty or non-repeatable read does not occur, but a phantom read may.
PDO::TRAN_SERIALIZABLE | The highest isolation level (6). Problems concerning concurrency (e.g. dirty read, non-repeatable read, phantom read, etc.) do not occur.

The following constants can be used when getting schema information. They can be passed to PDO::cubrid_schema().

PDO::CUBRID schema flags
Constant | Description
PDO::CUBRID_SCH_TABLE | Get name and type of table in CUBRID.
PDO::CUBRID_SCH_VIEW | Get name and type of view in CUBRID.
PDO::CUBRID_SCH_QUERY_SPEC | Get the query definition of view.
PDO::CUBRID_SCH_ATTRIBUTE | Get the attributes of table column.
PDO::CUBRID_SCH_TABLE_ATTRIBUTE | Get the attributes of table.
PDO::CUBRID_SCH_METHOD | Get the instance method. The instance method is a method called by a class instance. It is used more often than the class method because most operations are executed in the instance.
PDO::CUBRID_SCH_TABLE_METHOD | Get the class method. The class method is a method called by a class object. It is usually used to create a new class instance or to initialize it. It is also used to access or update class attributes.
PDO::CUBRID_SCH_METHOD_FILE | Get the information of the file where the method of the table is defined.
PDO::CUBRID_SCH_SUPER_TABLE | Get the name and type of table which table inherites attributes from.
PDO::CUBRID_SCH_SUB_TABLE | Get the name and type of table which inherites attributes from this table.
PDO::CUBRID_SCH_CONSTRAINT | Get the table constraints.
PDO::CUBRID_SCH_TRIGGER | Get the table triggers.
PDO::CUBRID_SCH_TABLE_PRIVILEGE | Get the privilege information of table.
PDO::CUBRID_SCH_COL_PRIVILEGE | Get the privilege information of column.
PDO::CUBRID_SCH_DIRECT_SUPER_TABLE | Get the direct super table of table.
PDO::CUBRID_SCH_PRIMARY_KEY | Get the table primary key.
PDO::CUBRID_SCH_IMPORTED_KEYS | Get imported keys of table.
PDO::CUBRID_SCH_EXPORTED_KEYS | Get exported keys of table.
PDO::CUBRID_SCH_CROSS_REFERENCE | Get reference relationship of tow tables.

Table of Contents

  • PDO_CUBRID DSN — Connecting to CUBRID databases
  • PDO::cubrid_schema — Get the requested schema information
PDO 驱动
PDO_CUBRID DSN
PDO 驱动


Connecting to CUBRID databases

CUBRID (PDO)
PDO::cubrid_schema
CUBRID (PDO)
PHP Manual

PDO_CUBRID DSN

(No version information available, might only be in Git)

PDO_CUBRID DSN — Connecting to CUBRID databases

说明

The PDO_CUBRID Data Source Name (DSN) is composed of the following elements, delimited by semicolons:

DSN prefix

The DSN prefix is cubrid:.

host

The hostname on which the database server resides.

port

The port on which the database server is running.

dbname

The name of the database.

注释

Note:

When you estalish the connection to CUBRID, you should give username and password except DSN.

范例

Example #1 PDO_CUBRID DSN examples

The following example shows a PDO_CUBRID DSN for connecting to a CUBRID database:

cubrid:host=localhost;port=33000;dbname=demodb

CUBRID (PDO)
PDO::cubrid_schema
CUBRID (PDO)


Get the requested schema information

PDO_CUBRID DSN
MS SQL Server (PDO)
CUBRID (PDO)
PHP Manual

PDO::cubrid_schema

(No version information available, might only be in Git)

PDO::cubrid_schema — Get the requested schema information

说明

public array PDO::cubrid_schema ( int $schema_type [, string $table_name [, string $col_name ]] )

This function is used to get the requested schema information from database. You have to designate table_name, if you want to get information on certain table, col_name, if you want to get information on certain column (can be used only with PDO::CUBRID_SCH_COL_PRIVILEGE).

The result of this function is returned as a two-dimensional array (column (associative array) * row (numeric array)). The following tables shows types of schema and the column structure of the result array to be returned based on the schema type.

Result Composition of Each Type
Schema | Column Number | Column Name | Value
PDO::CUBRID_SCH_TABLE | 1 | NAME |
 | 2 | TYPE | 0:system table 1:view 2:table
PDO::CUBRID_SCH_VIEW | 1 | NAME |
 | 2 | TYPE | 1:view
PDO::CUBRID_SCH_QUERY_SPEC | 1 | QUERY_SPEC |
PDO::CUBRID_SCH_ATTRIBUTE / PDO::CUBRID_SCH_TABLE_ATTRIBUTE | 1 | ATTR_NAME |
 | 2 | DOMAIN |
 | 3 | SCALE |
 | 4 | PRECISION |
 | 5 | INDEXED | 1:indexed
 | 6 | NOT NULL | 1:not null
 | 7 | SHARED | 1:shared
 | 8 | UNIQUE | 1:unique
 | 9 | DEFAULT |
 | 10 | ATTR_ORDER | base:1
 | 11 | CLASS_NAME |
 | 12 | SOURCE_CLASS |
 | 13 | IS_KEY | 1:key
PDO::CUBRID_SCH_METHOD / PDO::CUBRID_SCH_TABLE_METHOD | 1 | NAME |
 | 2 | RET_DOMAIN |
 | 3 | ARG_DOMAIN |
PDO::CUBRID_SCH_METHOD_FILE | 1 | METHOD_FILE |
PDO::CUBRID_SCH_SUPER_TABLE / PDO::CUBRID_SCH_DIRECT_SUPER_TABLE / PDO::CUBRID_SCH_SUB_TABLE | 1 | CLASS_NAME |
 | 2 | TYPE | 0:system table 1:view 2:table
PDO::CUBRID_SCH_CONSTRAINT | 1 | TYPE | 0:unique 1:index 2:reverse unique 3:reverse index
 | 2 | NAME |
 | 3 | ATTR_NAME |
 | 4 | NUM_PAGES |
 | 5 | NUM_KEYS |
 | 6 | PRIMARY_KEY | 1:primary key
 | 7 | KEY_ORDER | base:1
PDO::CUBRID_SCH_TRIGGER | 1 | NAME |
 | 2 | STATUS |
 | 3 | EVENT |
 | 4 | TARGET_CLASS |
 | 5 | TARGET_ATTR |
 | 6 | ACTION_TIME |
 | 7 | ACTION |
 | 8 | PRIORITY |
 | 9 | CONDITION_TIME |
 | 10 | CONDITION |
PDO::CUBRID_SCH_TABLE_PRIVILEGE / PDO::CUBRID_SCH_COL_PRIVILEGE | 1 | CLASS_NAME / ATTR_NAME |
 | 2 | PRIVILEGE |
 | 3 | GRANTABLE |
PDO::CUBRID_SCH_PRIMARY_KEY | 1 | CLASS_NAME |
 | 2 | ATTR_NAME |
 | 3 | KEY_SEQ | base:1
 | 4 | KEY_NAME |
PDO::CUBRID_SCH_IMPORTED_KEYS / PDO::CUBRID_SCH_EXPORTED_KEYS / PDO::CUBRID_SCH_CROSS_REFERENCE | 1 | PKTABLE_NAME |
 | 2 | PKCOLUMN_NAME |
 | 3 | FKTABLE_NAME | base:1
 | 4 | FKCOLUMN_NAME |
 | 5 | KEY_SEQ | base:1
 | 6 | UPDATE_ACTION | 0:cascade 1:restrict 2:no action 3:set null
 | 7 | DELETE_ACTION | 0:cascade 1:restrict 2:no action 3:set null
 | 8 | FK_NAME |
 | 9 | PK_NAME |

参数

schema_type

Schema type that you want to know.

table_name

Table you want to know the schema of.

col_name

Column you want to know the schema of.

返回值

Array containing the schema information, when process is successful;

FALSE, when process is unsuccessful

范例

Example #1 A PDO::cubrid_schema() example

This example shows how to get primary key and foreign keys of table game.

<?php
$pk_list = $dbh->cubrid_schema(PDO::CUBRID_SCH_PRIMARY_KEY, "game");
print_r($pk_list);

$fk_list = $dbh->cubrid_schema(PDO::CUBRID_SCH_IMPORTED_KEYS, "game");
print_r($fk_list);
?>

以上例程会输出：

Result:
Array
(
    [0] => Array
        (
            [CLASS_NAME] => game
            [ATTR_NAME] => athlete_code
            [KEY_SEQ] => 3
            [KEY_NAME] => pk_game_host_year_event_code_athlete_code
        )

    [1] => Array
        (
            [CLASS_NAME] => game
            [ATTR_NAME] => event_code
            [KEY_SEQ] => 2
            [KEY_NAME] => pk_game_host_year_event_code_athlete_code
        )

    [2] => Array
        (
            [CLASS_NAME] => game
            [ATTR_NAME] => host_year
            [KEY_SEQ] => 1
            [KEY_NAME] => pk_game_host_year_event_code_athlete_code
        )

)
Array
(
    [0] => Array
        (
            [PKTABLE_NAME] => athlete
            [PKCOLUMN_NAME] => code
            [FKTABLE_NAME] => game
            [FKCOLUMN_NAME] => athlete_code
            [KEY_SEQ] => 1
            [UPDATE_RULE] => 1
            [DELETE_RULE] => 1
            [FK_NAME] => fk_game_athlete_code
            [PK_NAME] => pk_athlete_code
        )

    [1] => Array
        (
            [PKTABLE_NAME] => event
            [PKCOLUMN_NAME] => code
            [FKTABLE_NAME] => game
            [FKCOLUMN_NAME] => event_code
            [KEY_SEQ] => 1
            [UPDATE_RULE] => 1
            [DELETE_RULE] => 1
            [FK_NAME] => fk_game_event_code
            [PK_NAME] => pk_event_code
        )

)

PDO_CUBRID DSN
MS SQL Server (PDO)
CUBRID (PDO)


Microsoft SQL Server and Sybase Functions (PDO_DBLIB)

简介

PDO_DBLIB is a driver that implements the PHP Data Objects (PDO) interface to enable access from PHP to Microsoft SQL Server and Sybase databases through the FreeTDS library.

This extension is not available anymore on Windows with PHP 5.3 or later.

On Windows, you should use SqlSrv, an alternative driver for MS SQL is available from Microsoft: » http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx .

If it is not possible to use SqlSrv, you can use the PDO_ODBC driver to connect to Microsoft SQL Server and Sybase databases, as the native Windows DB-LIB is ancient, thread un-safe and no longer supported by Microsoft.

Table of Contents

  • PDO_DBLIB DSN — Connecting to Microsoft SQL Server and Sybase databases
PDO::cubrid_schema
PDO_DBLIB DSN
PDO 驱动


Connecting to Microsoft SQL Server and Sybase databases

MS SQL Server (PDO)
Firebird (PDO)
MS SQL Server (PDO)
PHP Manual

PDO_DBLIB DSN

(PECL PDO_DBLIB >= 0.9.0)

PDO_DBLIB DSN — Connecting to Microsoft SQL Server and Sybase databases

说明

The PDO_DBLIB Data Source Name (DSN) is composed of the following elements:

DSN prefix

The DSN prefix is sybase: if PDO_DBLIB was linked against the Sybase ct-lib libraries, mssql: if PDO_DBLIB was linked against the Microsoft SQL Server libraries, or dblib: if PDO_DBLIB was linked against the FreeTDS libraries.

host

The hostname on which the database server resides. Defaults to 127.0.0.1.

dbname

The name of the database.

charset

The client character set.

appname

The application name (used in sysprocesses). Defaults to "PHP Generic DB-lib" or "PHP freetds".

secure

Currently unused.

范例

Example #1 PDO_DBLIB DSN examples

The following examples show a PDO_DBLIB DSN for connecting to Microsoft SQL Server and Sybase databases:

mssql:host=localhost;dbname=testdb
sybase:host=localhost;dbname=testdb
dblib:host=localhost;dbname=testdb

MS SQL Server (PDO)
Firebird (PDO)
MS SQL Server (PDO)


Firebird Functions (PDO_FIREBIRD)

简介

PDO_FIREBIRD is a driver that implements the PHP Data Objects (PDO) interface to enable access from PHP to Firebird database.

安装

Use --with-pdo-firebird[=DIR] to install the PDO Firebird extension, where the optional [=DIR] is the Firebird base install directory.

$ ./configure --with-pdo-firebird

预定义常量

下列常量由此驱动定义，且仅在扩展编译入 PHP 或在运行时动态载入时可用。另外，使用此驱动时，仅会使用这些驱动特定的常量。使用其他驱动的驱动特定的常量可能会导致不可预见的情况。如果代码可运行于多个驱动，PDO::getAttribute() 可被用于获取 PDO_ATTR_DRIVER_NAME 属性以检查驱动。

PDO::FB_ATTR_DATE_FORMAT (integer)

Available since PHP 5.3.0.

Sets the date format.

PDO::FB_ATTR_TIME_FORMAT (integer)

Sets the time format.

Available since PHP 5.3.0.

PDO::FB_ATTR_TIMESTAMP_FORMAT (integer)

Sets the timestamp format.

Available since PHP 5.3.0.

Table of Contents

  • PDO_FIREBIRD DSN — Connecting to Firebird databases
PDO_DBLIB DSN
PDO_FIREBIRD DSN
PDO 驱动


Connecting to Firebird databases

Firebird (PDO)
IBM (PDO)
Firebird (PDO)
PHP Manual

PDO_FIREBIRD DSN

(PECL PDO_FIREBIRD >= 0.1.0)

PDO_FIREBIRD DSN — Connecting to Firebird databases

说明

The PDO_FIREBIRD Data Source Name (DSN) is composed of the following elements:

DSN prefix

The DSN prefix is firebird:.

dbname

The name of the database.

charset

The character set.

role

The SQL role name.

范例

Example #1 PDO_FIREBIRD DSN example with path

The following example shows a PDO_FIREBIRD DSN for connecting to Firebird databases:

firebird:dbname=/path/to/DATABASE.FDB

Example #2 PDO_FIREBIRD DSN example with port and path

The following example shows a PDO_FIREBIRD DSN for connecting to a Firebird database using hostname port and path:

firebird:dbname=hostname/port:/path/to/DATABASE.FDB

Example #3 PDO_FIREBIRD DSN example with localhost and path to employee.fdb on Debian system

The following example shows a PDO_FIREBIRD DSN for connecting to a Firebird database employee.fdb using localhost:

firebird:dbname=localhost:/var/lib/firebird/2.5/data/employee.fdb

Firebird (PDO)
IBM (PDO)
Firebird (PDO)


IBM Functions (PDO_IBM)

简介

PDO_IBM is a driver that implements the PHP Data Objects (PDO) interface to enable access from PHP to IBM databases.

安装

To build the PDO_IBM extension, the DB2 Client v9.1 or later must be installed on the same system as PHP. The DB2 Client can be downloaded from the IBM » Application Development Site.

Note: Note

The DB2 Client v9.1 or later supports direct access to DB2 for Linux, UNIX, and Windows v8 and v9.1 servers.

The DB2 Client v9.1 also supports access to DB2 UDB for i5 and DB2 UDB for z/OS servers using the separately purchased » DB2 Connect product.

PDO_IBM is a » PECL extension, so follow the instructions in PECL 扩展库安装 to install the PDO_IBM extension. Issue the configure command to point to the location of your DB2 Client header files and libraries as follows:

bash$ ./configure --with-pdo-ibm=/path/to/sqllib[,shared]
The configure command defaults to the value of the DB2DIR environment variable.

Table of Contents

  • PDO_IBM DSN — Connecting to IBM databases
PDO_FIREBIRD DSN
PDO_IBM DSN
PDO 驱动


Connecting to IBM databases

IBM (PDO)
Informix (PDO)
IBM (PDO)
PHP Manual

PDO_IBM DSN

(PECL PDO_IBM >= 0.9.0)

PDO_IBM DSN — Connecting to IBM databases

说明

The PDO_IBM Data Source Name (DSN) is based on the IBM CLI DSN. The major components of the PDO_IBM DSN are:

DSN prefix

The DSN prefix is ibm:.

DSN

The DSN can be any of the following:

  • a) Data source setup using db2cli.ini or odbc.ini

  • b) Catalogued database name i.e. database alias in the DB2 client catalog

  • c) Complete connection string in the following format: DRIVER={IBM DB2 ODBC DRIVER};DATABASE=database;HOSTNAME=hostname;PORT=port;PROTOCOL=TCPIP;UID=username;PWD=password; where the parameters represent the following values:

    database

    The name of the database.

    hostname

    The hostname or IP address of the database server.

    port

    The TCP/IP port on which the database is listening for requests.

    username

    The username with which you are connecting to the database.

    password

    The password with which you are connecting to the database.

范例

Example #1 PDO_IBM DSN example using db2cli.ini

The following example shows a PDO_IBM DSN for connecting to an DB2 database cataloged as DB2_9 in db2cli.ini:

$db = new PDO("ibm:DSN=DB2_9", "", "");

[DB2_9]
Database=testdb
Protocol=tcpip
Hostname=11.22.33.444
Servicename=56789

Example #2 PDO_IBM DSN example using a connection string

The following example shows a PDO_IBM DSN for connecting to an DB2 database named testdb using the DB2 CLI connection string syntax.

$db = new PDO("ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=testdb;" .
  "HOSTNAME=11.22.33.444;PORT=56789;PROTOCOL=TCPIP;", "testuser", "tespass");

IBM (PDO)
Informix (PDO)
IBM (PDO)


Informix Functions (PDO_INFORMIX)

简介

PDO_INFORMIX is a driver that implements the PHP Data Objects (PDO) interface to enable access from PHP to Informix databases.

安装

To build the PDO_INFORMIX extension, the Informix Client SDK 2.81 UC1 or higher must be installed on the same system as PHP. The Informix Client SDK is available from the » IBM Informix Support Site.

PDO_INFORMIX is a » PECL extension, so follow the instructions in PECL 扩展库安装 to install the PDO_INFORMIX extension. Issue the configure command to point to the location of your Informix Client SDK header files and libraries as follows:

   bash$ ./configure --with-pdo-informix=/path/to/SDK[,shared]
The configure command defaults to the value of the INFORMIXDIR environment variable.

Scrollable cursors

PDO_INFORMIX supports scrollable cursors; however, they are not enabled by default. To enable scrollable cursor support, you must either set ENABLESCROLLABLECURSORS=1 in the corresponding ODBC connection settings in odbc.ini or pass the EnableScrollableCursors=1 clause in the DSN connection string.

Table of Contents

  • PDO_INFORMIX DSN — Connecting to Informix databases
PDO_IBM DSN
PDO_INFORMIX DSN
PDO 驱动


Connecting to Informix databases

Informix (PDO)
MySQL (PDO)
Informix (PDO)
PHP Manual

PDO_INFORMIX DSN

(PECL PDO_INFORMIX >= 0.1.0)

PDO_INFORMIX DSN — Connecting to Informix databases

说明

The PDO_INFORMIX Data Source Name (DSN) is based on the Informix ODBC DSN string. Details on configuring an Informix ODBC DSN are available from the » Informix Dynamic Server Information Center. The major components of the PDO_INFORMIX DSN are:

DSN prefix

The DSN prefix is informix:.

DSN

The DSN can be either a data source setup using odbc.ini or a complete » connection string.

范例

Example #1 PDO_INFORMIX DSN example using odbc.ini

The following example shows a PDO_INFORMIX DSN for connecting to an Informix database cataloged as Infdrv33 in odbc.ini:

$db = new PDO("informix:DSN=Infdrv33", "", "");

[ODBC Data Sources]
Infdrv33=INFORMIX 3.3 32-BIT

[Infdrv33]
Driver=/opt/informix/csdk_2.81.UC1G2/lib/cli/iclis09b.so
Description=INFORMIX 3.3 32-BIT
Database=common_db
LogonID=testuser
pwd=testpass
Servername=ids_server
DB_LOCALE=en_US.819
OPTIMIZEAUTOCOMMIT=1
ENABLESCROLLABLECURSORS=1

Example #2 PDO_INFORMIX DSN example using a connection string

The following example shows a PDO_INFORMIX DSN for connecting to an Informix database named common_db using the Informix connection string syntax.

$db = new PDO("informix:host=host.domain.com; service=9800;
    database=common_db; server=ids_server; protocol=onsoctcp;
    EnableScrollableCursors=1", "testuser", "tespass");

Informix (PDO)
MySQL (PDO)
Informix (PDO)


MySQL Functions (PDO_MYSQL)

简介

PDO_MYSQL is a driver that implements the PHP Data Objects (PDO) interface to enable access from PHP to MySQL 3.x, 4.x and 5.x databases.

PDO_MYSQL will take advantage of native prepared statement support present in MySQL 4.1 and higher. If you're using an older version of the mysql client libraries, PDO will emulate them for you.

Warning

Beware: Some MySQL table types (storage engines) do not support transactions. When writing transactional database code using a table type that does not support transactions, MySQL will pretend that a transaction was initiated successfully. In addition, any DDL queries issued will implicitly commit any pending transactions.

安装

The common Unix distributions include binary versions of PHP that can be installed. Although these binary versions are typically built with support for the MySQL extensions, the extension libraries themselves may need to be installed using an additional package. Check the package manager than comes with your chosen distribution for availability.

For example, on Ubuntu the php5-mysql package installs the ext/mysql, ext/mysqli, and PDO_MYSQL PHP extensions. On CentOS, the php-mysql package also installs these three PHP extensions.

Alternatively, you can compile this extension yourself. Building PHP from source allows you to specify the MySQL extensions you want to use, as well as your choice of client library for each extension.

When compiling, use --with-pdo-mysql[=DIR] to install the PDO MySQL extension, where the optional [=DIR] is the MySQL base library. As of PHP 5.4, mysqlnd is the default library. For details about choosing a library, see Choosing a MySQL library.

Optionally, the --with-mysql-sock[=DIR] sets to location to the MySQL unix socket pointer for all MySQL extensions, including PDO_MYSQL. If unspecified, the default locations are searched.

Optionally, the --with-zlib-dir[=DIR] is used to set the path to the libz install prefix.

$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock

SSL support is enabled using the appropriate PDO_MySQL constants, which is equivalent to calling the » MySQL C API function mysql_ssl_set(). Also, SSL cannot be enabled with PDO::setAttribute because the connection already exists. See also the MySQL documentation about » connecting to MySQL with SSL.

更新日志
版本 | 说明
5.4.0 | mysqlnd became the default MySQL library when compiling PDO_MYSQL. Previously, libmysqlclient was the default MySQL library.
5.4.0 | MySQL client libraries 4.1 and below are no longer supported.
5.3.9 | Added SSL support with mysqlnd and OpenSSL.
5.3.7 | Added SSL support with libmysqlclient and OpenSSL.

预定义常量

下列常量由此驱动定义，且仅在扩展编译入 PHP 或在运行时动态载入时可用。另外，使用此驱动时，仅会使用这些驱动特定的常量。使用其他驱动的驱动特定的常量可能会导致不可预见的情况。如果代码可运行于多个驱动，PDO::getAttribute() 可被用于获取 PDO_ATTR_DRIVER_NAME 属性以检查驱动。

PDO::MYSQL_ATTR_USE_BUFFERED_QUERY (integer)
If this attribute is set to TRUE on a PDOStatement, the MySQL driver will use the buffered versions of the MySQL API. If you're writing portable code, you should use PDOStatement::fetchAll() instead.

Example #1 Forcing queries to be buffered in mysql

<?php
if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
    $stmt = $db->prepare('select * from foo',
        array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true));
} else {
    die("my application only works with mysql; I should use \$stmt->fetchAll() instead");
}
?>

PDO::MYSQL_ATTR_LOCAL_INFILE (integer)

Enable LOAD LOCAL INFILE.

Note, this constant can only be used in the driver_options array when constructing a new database handle.

PDO::MYSQL_ATTR_INIT_COMMAND (integer)

Command to execute when connecting to the MySQL server. Will automatically be re-executed when reconnecting.

Note, this constant can only be used in the driver_options array when constructing a new database handle.

PDO::MYSQL_ATTR_READ_DEFAULT_FILE (integer)

Read options from the named option file instead of from my.cnf. This option is not available if mysqlnd is used, because mysqlnd does not read the mysql configuration files.

PDO::MYSQL_ATTR_READ_DEFAULT_GROUP (integer)

Read options from the named group from my.cnf or the file specified with MYSQL_READ_DEFAULT_FILE. This option is not available if mysqlnd is used, because mysqlnd does not read the mysql configuration files.

PDO::MYSQL_ATTR_MAX_BUFFER_SIZE (integer)

Maximum buffer size. Defaults to 1 MiB. This constant is not supported when compiled against mysqlnd.

PDO::MYSQL_ATTR_DIRECT_QUERY (integer)

Perform direct queries, don't use prepared statements.

PDO::MYSQL_ATTR_FOUND_ROWS (integer)

Return the number of found (matched) rows, not the number of changed rows.

PDO::MYSQL_ATTR_IGNORE_SPACE (integer)

Permit spaces after function names. Makes all functions names reserved words.

PDO::MYSQL_ATTR_COMPRESS (integer)

Enable network communication compression. This is also supported when compiled against mysqlnd as of PHP 5.3.11.

PDO::MYSQL_ATTR_SSL_CA (integer)

The file path to the SSL certificate authority.

自以下版本起 PHP 5.3.7.

PDO::MYSQL_ATTR_SSL_CAPATH (integer)

The file path to the directory that contains the trusted SSL CA certificates, which are stored in PEM format.

自以下版本起 PHP 5.3.7.

PDO::MYSQL_ATTR_SSL_CERT (integer)

The file path to the SSL certificate.

自以下版本起 PHP 5.3.7.

PDO::MYSQL_ATTR_SSL_CIPHER (integer)

A list of one or more permissible ciphers to use for SSL encryption, in a format understood by OpenSSL. For example: DHE-RSA-AES256-SHA:AES128-SHA

自以下版本起 PHP 5.3.7.

PDO::MYSQL_ATTR_SSL_KEY (integer)

The file path to the SSL key.

自以下版本起 PHP 5.3.7.

PDO::MYSQL_ATTR_MULTI_STATEMENTS (integer)

Disables multi query execution in both PDO::prepare() and PDO::query() when set to FALSE.

Note, this constant can only be used in the driver_options array when constructing a new database handle.

自以下版本起 PHP 5.5.21 and PHP 5.6.5.

运行时配置

这些函数的行为受 php.ini 中的设置影响。

PDO_MYSQL Configuration Options
名字 | 默认 | 可修改范围
pdo_mysql.default_socket | "/tmp/mysql.sock" | PHP_INI_SYSTEM
pdo_mysql.debug | NULL | PHP_INI_SYSTEM
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

pdo_mysql.default_socket string

Sets a Unix domain socket. This value can either be set at compile time if a domain socket is found at configure. This ini setting is Unix only.

pdo_mysql.debug boolean

Enables debugging for PDO_MYSQL. This setting is only available when PDO_MYSQL is compiled against mysqlnd and in PDO debug mode.

Table of Contents

  • PDO_MYSQL DSN — Connecting to MySQL databases
PDO_INFORMIX DSN
PDO_MYSQL DSN
PDO 驱动


Connecting to MySQL databases

MySQL (PDO)
MS SQL Server (PDO)
MySQL (PDO)
PHP Manual

PDO_MYSQL DSN

(PECL PDO_MYSQL >= 0.1.0)

PDO_MYSQL DSN — Connecting to MySQL databases

说明

The PDO_MYSQL Data Source Name (DSN) is composed of the following elements:

DSN prefix

The DSN prefix is mysql:.

host

The hostname on which the database server resides.

port

The port number where the database server is listening.

dbname

The name of the database.

unix_socket

The MySQL Unix socket (shouldn't be used with host or port).

charset

The character set. See the character set concepts documentation for more information.

Prior to PHP 5.3.6, this element was silently ignored. The same behaviour can be partly replicated with the PDO::MYSQL_ATTR_INIT_COMMAND driver option, as the following example shows.

Warning

The method in the below example can only be used with character sets that share the same lower 7 bit representation as ASCII, such as ISO-8859-1 and UTF-8. Users using character sets that have different representations (such as UTF-16 or Big5) must use the charset option provided in PHP 5.3.6 and later versions.

Example #1 Setting the connection character set to UTF-8 prior to PHP 5.3.6

<?php
$dsn = 'mysql:host=localhost;dbname=testdb';
$username = 'username';
$password = 'password';
$options = array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);

$dbh = new PDO($dsn, $username, $password, $options);
?>

更新日志

版本 | 说明
5.3.6 | Prior to version 5.3.6, charset was ignored.

范例

Example #2 PDO_MYSQL DSN examples

The following example shows a PDO_MYSQL DSN for connecting to MySQL databases:

mysql:host=localhost;dbname=testdb
More complete examples:
mysql:host=localhost;port=3307;dbname=testdb
mysql:unix_socket=/tmp/mysql.sock;dbname=testdb

注释

Note: Unix only:

When the host name is set to "localhost", then the connection to the server is made thru a domain socket. If PDO_MYSQL is compiled against libmysqlclient then the location of the socket file is at libmysqlclient's compiled in location. If PDO_MYSQL is compiled against mysqlnd a default socket can be set thru the pdo_mysql.default_socket setting.

MySQL (PDO)
MS SQL Server (PDO)
MySQL (PDO)


Microsoft SQL Server Functions (PDO_SQLSRV)

简介

PDO_SQLSRV is a driver that implements the PHP Data Objects (PDO) interface to enable access from PHP to MS SQL Server (starting with SQL Server 2005) and SQL Azure databases.

安装

The PDO_SQLSRV extension is enabled by adding appropriate DLL file to your PHP extension directory and the corresponding entry to the php.ini file. The PDO_SQLSRV download comes 8 driver files, four of which are for PDO support. If you are running non-thread-safe PHP (PHP 5.3), use the php_pdo_sqlsrv_53_nts.dll file. (You should use a non-thread-safe version if you are using IIS as your web server). If you are running thread-safe PHP, use the php_pdo_sqlsrv_53_ts.dll file. Similarly for PHP 5.4, use the php_pdo_sqlsrv_54_nts.dll or php_pdo_sqlsrv_54_ts.dll depending on whether your PHP installation is non-thread-safe or thread-safe.

The most recent version of the driver is available for download here: » SQLSRV 3.0 download. If you need support for PHP 5.2 and/or PHP compiled with VC6, use the 2.0 release of the driver: » SQLSRV 2.0 download.

For more information about system requirements, see » SQLSRV System Requirements.

The PDO_SQLSRV extension is only compatible with PHP running on Windows. For Linux, see ODBC and » Microsoft's SQL Server ODBC Driver for Linux.

预定义常量

下列常量由此驱动定义，且仅在扩展编译入 PHP 或在运行时动态载入时可用。另外，使用此驱动时，仅会使用这些驱动特定的常量。使用其他驱动的驱动特定的常量可能会导致不可预见的情况。如果代码可运行于多个驱动，PDO::getAttribute() 可被用于获取 PDO_ATTR_DRIVER_NAME 属性以检查驱动。

PDO::SQLSRV_TXN_READ_UNCOMMITTED (integer)
This constant is an acceptable value for the SQLSRV DSN key TransactionIsolation. This constant sets the transaction isolation level for the connection to Read Uncommitted.
PDO::SQLSRV_TXN_READ_COMMITTED (integer)
This constant is an acceptable value for the SQLSRV DSN key TransactionIsolation. This constant sets the transaction isolation level for the connection to Read Committed.
PDO::SQLSRV_TXN_REPEATABLE_READ (integer)
This constant is an acceptable value for the SQLSRV DSN key TransactionIsolation. This constant sets the transaction isolation level for the connection to Repeateable Read.
PDO::SQLSRV_TXN_SNAPSHOT (integer)
This constant is an acceptable value for the SQLSRV DSN key TransactionIsolation. This constant sets the transaction isolation level for the connection to Snapshot.
PDO::SQLSRV_TXN_SERIALIZABLE (integer)
This constant is an acceptable value for the SQLSRV DSN key TransactionIsolation. This constant sets the transaction isolation level for the connection to Serializable.
PDO::SQLSRV_ENCODING_BINARY (integer)
Specifies that data is sent/retrieved as a raw byte stream to/from the server without performing encoding or translation. This constant can be passed to PDOStatement::setAttribute, PDO::prepare, PDOStatement::bindColumn, and PDOStatement::bindParam.
PDO::SQLSRV_ENCODING_SYSTEM (integer)
Specifies that data is sent/retrieved to/from the server as 8-bit characters as specified in the code page of the Windows locale that is set on the system. Any multi-byte characters or characters that do not map into this code page are substituted with a single byte question mark (?) character. This constant can be passed to PDOStatement::setAttribute, PDO::setAttribute, PDO::prepare, PDOStatement::bindColumn, and PDOStatement::bindParam.
PDO::SQLSRV_ENCODING_UTF8 (integer)
Specifies that data is sent/retrieved to/from the server in UTF-8 encoding. This is the default encoding. This constant can be passed to PDOStatement::setAttribute, PDO::setAttribute, PDO::prepare, PDOStatement::bindColumn, and PDOStatement::bindParam.
PDO::SQLSRV_ENCODING_DEFAULT (integer)
Specifies that data is sent/retrieved to/from the server according to PDO::SQLSRV_ENCODING_SYSTEM if specified during connection. The connection's encoding is used if specified in a prepare statement. This constant can be passed to PDOStatement::setAttribute, PDO::setAttribute, PDO::prepare, PDOStatement::bindColumn, and PDOStatement::bindParam.
PDO::SQLSRV_ATTR_QUERY_TIMEOUT (integer)
A non-negative integer representing the timeout period, in seconds. Zero (0) is the default and means no timeout. This constant can be passed to PDOStatement::setAttribute, PDO::setAttribute, and PDO::prepare.
PDO::SQLSRV_ATTR_DIRECT_QUERY (integer)
Indicates that a query should be executed directly, without being prepared. This constant can be passed to PDO::setAttribute, and PDO::prepare. For more information, see » Direct and Prepared Statement Execution.

Table of Contents

  • PDO_SQLSRV DSN — Connecting to MS SQL Server and SQL Azure databases
PDO_MYSQL DSN
PDO_SQLSRV DSN
PDO 驱动


Connecting to MS SQL Server and SQL Azure databases

MS SQL Server (PDO)
Oracle (PDO)
MS SQL Server (PDO)
PHP Manual

PDO_SQLSRV DSN

(No version information available, might only be in Git)

PDO_SQLSRV DSN — Connecting to MS SQL Server and SQL Azure databases

说明

The PDO_SQLSRV Data Source Name (DSN) is composed of the following elements:

DSN prefix

The DSN prefix is sqlsrv:.

APP

The application name used in tracing.

ConnectionPooling

Specifies whether the connection is assigned from a connection pool (1 or TRUE) or not (0 or FALSE).

Database

The name of the database.

Encrypt

Specifies whether the communication with SQL Server is encrypted (1 or TRUE) or unencrypted (0 or FALSE).

Failover_Partner

Specifies the server and instance of the database's mirror (if enabled and configured) to use when the primary server is unavailable.

LoginTimeout

Specifies the number of seconds to wait before failing the connection attempt.

MultipleActiveResultSets

Disables or explicitly enables support for multiple active Result sets (MARS).

QuotedId

Specifies whether to use SQL-92 rules for quoted identifiers (1 or TRUE) or to use legacy Transact-SQL rules (0 or FALSE).

Server

The name of the database server.

TraceFile

Specifies the path for the file used for trace data.

TraceOn

Specifies whether ODBC tracing is enabled (1 or TRUE) or disabled (0 or FALSE) for the connection being established.

TransactionIsolation

Specifies the transaction isolation level. The accepted values for this
option are PDO::SQLSRV_TXN_READ_UNCOMMITTED, PDO::SQLSRV_TXN_READ_COMMITTED,
PDO::SQLSRV_TXN_REPEATABLE_READ, PDO::SQLSRV_TXN_SNAPSHOT, and
PDO::SQLSRV_TXN_SERIALIZABLE.

TrustServerCertificate

Specifies whether the client should trust (1 or TRUE) or reject (0 or FALSE) a self-signed server certificate.

WSID

Specifies the name of the computer for tracing.

范例

Example #1 PDO_SQLSRV DSN examples

The following example shows how to connecto to a specified MS SQL Server database:

$c = new PDO("sqlsrv:Server=localhost;Database=testdb", "UserName", "Password");

The following example shows how to connect to a MS SQL Server database on a specified port:

$c = new PDO("sqlsrv:Server=localhost,1521;Database=testdb", "UserName", "Password");

The following example shows how to connecto to a SQL Azure database with server ID 12345abcde. Note that when you connect to SQL Azure with PDO, your username will be UserName@12345abcde (UserName@ServerId).

$c = new PDO("sqlsrv:Server=12345abcde.database.windows.net;Database=testdb", "UserName@12345abcde", "Password");

MS SQL Server (PDO)
Oracle (PDO)
MS SQL Server (PDO)


Oracle Functions (PDO_OCI)

安装

Use --with-pdo-oci[=DIR] to install the PDO Oracle OCI extension, where the optional [=DIR] is the Oracle Home directory. [=DIR] defaults to the $ORACLE_HOME environment variable.

Use --with-pdo-oci=instantclient,prefix,version for an Oracle Instant Client SDK, where prefix and version are configured.

// Using $ORACLE_HOME
$ ./configure --with-pdo-oci

// Using OIC for Linux with 10.2.0.3 RPMs with a /usr prefix
$ ./configure --with-pdo-oci=instantclient,/usr,10.2.0.3

Table of Contents

  • PDO_OCI DSN — Connecting to Oracle databases
PDO_SQLSRV DSN
PDO_OCI DSN
PDO 驱动


Connecting to Oracle databases

Oracle (PDO)
ODBC and DB2 (PDO)
Oracle (PDO)
PHP Manual

PDO_OCI DSN

(PECL PDO_OCI >= 0.1.0)

PDO_OCI DSN — Connecting to Oracle databases

说明

The PDO_OCI Data Source Name (DSN) is composed of the following elements:

DSN prefix

The DSN prefix is oci:.

dbname (Oracle Instant Client)

The URI for the Oracle Instant Client connection takes the form of dbname=//hostname:port-number/database. If you are connecting to a database defined in tnsnames.ora, use only the name of the database: dbname=database.

charset

The client-side character set for the current environment handle.

范例

Example #1 PDO_OCI DSN examples

The following examples show a PDO_OCI DSN for connecting to Oracle databases:

// Connect to a database defined in tnsnames.ora
oci:dbname=mydb

// Connect using the Oracle Instant Client
oci:dbname=//localhost:1521/mydb

Oracle (PDO)
ODBC and DB2 (PDO)
Oracle (PDO)


ODBC and DB2 Functions (PDO_ODBC)

简介

PDO_ODBC is a driver that implements the PHP Data Objects (PDO) interface to enable access from PHP to databases through ODBC drivers or through the IBM DB2 Call Level Interface (DB2 CLI) library. PDO_ODBC currently supports three different "flavours" of database drivers:

ibm-db2

Supports access to IBM DB2 Universal Database, Cloudscape, and Apache Derby servers through the free DB2 client.

unixODBC

Supports access to database servers through the unixODBC driver manager and the database's own ODBC drivers.

generic

Offers a compile option for ODBC driver managers that are not explicitly supported by PDO_ODBC.

On Windows, php_pdo_odbc.dll has to be enabled as extension in php.ini. It is linked against the Windows ODBC Driver Manager so that PHP can connect to any database cataloged as a System DSN, and is the recommended driver for connecting to Microsoft SQL Server databases.

安装

PDO_ODBC on UNIX systems

  1. As of PHP 5.1, PDO_ODBC is included in the PHP source. You can compile the PDO_ODBC extension as either a static or shared module using the following configure commands.

    ibm_db2

    ./configure --with-pdo-odbc=ibm-db2,/opt/IBM/db2/V8.1/
    To build PDO_ODBC with the ibm-db2 flavour, you have to have previously installed the DB2 application development headers on the same machine on which you are compiling PDO_ODBC. The DB2 application development headers are an installable option in the DB2 servers, and are also available as part of the DB2 Application Development Client freely available for download from the IBM DB2 Universal Database » support site.

    If you do not supply a location for the DB2 libraries and headers to the configure command, PDO_ODBC defaults to /home/db2inst1/sqllib.

    unixODBC

    ./configure --with-pdo-odbc=unixODBC,/usr/local
    If you do not supply a location for the unixODBC libraries and headers to the configure command, PDO_ODBC defaults to /usr/local.

    generic
    ./configure --with-pdo-odbc=generic,/usr/local,libname,ldflags,cflags

运行时配置

这些函数的行为受 php.ini 中的设置影响。

PDO_ODBC Configuration Options
名字 | 默认 | 可修改范围 | 更新日志
pdo_odbc.connection_pooling | "strict" | PHP_INI_ALL | Available since PHP 5.1.0.
pdo_odbc.db2_instance_name | NULL | PHP_INI_SYSTEM | Available since PHP 5.1.1. 本过时特性将肯定会在未来被移除。
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

pdo_odbc.connection_pooling string

Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off" (equals to ""). The parameter describes how strict the connection manager should be when matching connection parameters to existing pooled connections. strict is the recommend default, and will result in the use of cached connections only when all the connection parameters match exactly. relaxed will result in the use of cached connections when similar connection parameters are used. This can result in increased use of the cache, at the risk of bleeding connection information between (for example) virtual hosts.

This setting can only be changed from the php.ini file, and affects the entire process; any other modules loaded into the process that use the same ODBC libraries will be affected too, including the Unified ODBC extension.

Warning

relaxed matching should not be used on a shared server, for security reasons.

Tip

Leave this setting at the default strict setting unless you have good reason to change it.

pdo_odbc.db2_instance_name string

If you compile PDO_ODBC using the db2 flavour, this setting sets the value of the DB2INSTANCE environment variable on Linux and UNIX operating systems to the specified name of the DB2 instance. This enables PDO_ODBC to resolve the location of the DB2 libraries and make cataloged connections to DB2 databases.

This setting can only be changed from the php.ini file, and affects the entire process; any other modules loaded into the process that use the same ODBC libraries will be affected too, including the Unified ODBC extension.

This setting has no effect on Windows.

Table of Contents

  • PDO_ODBC DSN — Connecting to ODBC or DB2 databases
PDO_OCI DSN
PDO_ODBC DSN
PDO 驱动


Connecting to ODBC or DB2 databases

ODBC and DB2 (PDO)
PostgreSQL (PDO)
ODBC and DB2 (PDO)
PHP Manual

PDO_ODBC DSN

(PECL PDO_ODBC >= 0.1.0)

PDO_ODBC DSN — Connecting to ODBC or DB2 databases

说明

The PDO_ODBC Data Source Name (DSN) is composed of the following elements:

DSN prefix

The DSN prefix is odbc:. If you are connecting to a database cataloged in the ODBC driver manager or the DB2 catalog, you can append the cataloged name of the database to the DSN.

DSN

The name of the database as cataloged in the ODBC driver manager or the DB2 catalog. Alternately, you can provide a complete ODBC connection string to connect to a database as described at » http://www.connectionstrings.com/.

UID

The name of the user for the connection. If you specify the user name in the DSN, PDO ignores the value of the user name argument in the PDO constructor.

PWD

The password of the user for the connection. If you specify the password in the DSN, PDO ignores the value of the password argument in the PDO constructor.

范例

Example #1 PDO_ODBC DSN example (ODBC driver manager)

The following example shows a PDO_ODBC DSN for connecting to an ODBC database cataloged as testdb in the ODBC driver manager:

odbc:testdb

Example #2 PDO_ODBC DSN example (IBM DB2 uncataloged connection)

The following example shows a PDO_ODBC DSN for connecting to an IBM DB2 database named SAMPLE using the full ODBC DSN syntax:

odbc:DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME=localhost;PORT=50000;DATABASE=SAMPLE;PROTOCOL=TCPIP;UID=db2inst1;PWD=ibmdb2;

Example #3 PDO_ODBC DSN example (Microsoft Access uncataloged connection)

The following example shows a PDO_ODBC DSN for connecting to a Microsoft Access database stored at C:\db.mdb using the full ODBC DSN syntax:

odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\db.mdb;Uid=Admin

ODBC and DB2 (PDO)
PostgreSQL (PDO)
ODBC and DB2 (PDO)


PostgreSQL Functions (PDO_PGSQL)

简介

PDO_PGSQL is a driver that implements the PHP Data Objects (PDO) interface to enable access from PHP to PostgreSQL databases.

资源类型

This extension defines a stream resource returned by PDO::pgsqlLOBOpen().

安装

Use --with-pdo-pgsql[=DIR] to install the PDO PostgreSQL extension, where the optional [=DIR] is the PostgreSQL base install directory, or the path to pg_config.

$ ./configure --with-pdo-pgsql

Table of Contents

  • PDO_PGSQL DSN — Connecting to PostgreSQL databases
  • PDO::pgsqlCopyFromArray — Copy data from PHP array into table
  • PDO::pgsqlCopyFromFile — Copy data from file into table
  • PDO::pgsqlCopyToArray — Copy data from database table into PHP array
  • PDO::pgsqlCopyToFile — Copy data from table into file
  • PDO::pgsqlGetNotify — Get asynchronous notification
  • PDO::pgsqlGetPid — Get the server PID
  • PDO::pgsqlLOBCreate — Creates a new large object
  • PDO::pgsqlLOBOpen — Opens an existing large object stream
  • PDO::pgsqlLOBUnlink — Deletes the large object
PDO_ODBC DSN
PDO_PGSQL DSN
PDO 驱动


Connecting to PostgreSQL databases

PostgreSQL (PDO)
PDO::pgsqlCopyFromArray
PostgreSQL (PDO)
PHP Manual

PDO_PGSQL DSN

(PECL PDO_PGSQL >= 0.1.0)

PDO_PGSQL DSN — Connecting to PostgreSQL databases

说明

The PDO_PGSQL Data Source Name (DSN) is composed of the following elements, delimited by spaces or semicolons:

DSN prefix

The DSN prefix is pgsql:.

host

The hostname on which the database server resides.

port

The port on which the database server is running.

dbname

The name of the database.

user

The name of the user for the connection. If you specify the user name in the DSN, PDO ignores the value of the user name argument in the PDO constructor.

password

The password of the user for the connection. If you specify the password in the DSN, PDO ignores the value of the password argument in the PDO constructor.

Note:

The bytea fields are returned as streams.

范例

Example #1 PDO_PGSQL DSN examples

The following example shows a PDO_PGSQL DSN for connecting to a PostgreSQL database:

pgsql:host=localhost;port=5432;dbname=testdb;user=bruce;password=mypass

PostgreSQL (PDO)
PDO::pgsqlCopyFromArray
PostgreSQL (PDO)


Copy data from PHP array into table

PDO_PGSQL DSN
PDO::pgsqlCopyFromFile
PostgreSQL (PDO)
PHP Manual

PDO::pgsqlCopyFromArray

(PHP 5 >= 5.3.3, PHP 7)

PDO::pgsqlCopyFromArray — Copy data from PHP array into table

说明

public bool PDO::pgsqlCopyFromArray ( string $table_name , array $rows [, string $delimiter = '\t' [, string $null_as = "\\\\N" [, string $fields ]]] )

Copies data from rows array to table table_name using delimiter as fields delimiter and fields list

参数

table_name

String containing table name

rows

Array of strings with fields separated by delimiter

delimiter

Delimiter used in rows array

null_as

How to interpret null values

fields

List of fields to insert

返回值

Returns TRUE on success, 或者在失败时返回 FALSE.

PDO_PGSQL DSN
PDO::pgsqlCopyFromFile
PostgreSQL (PDO)


Copy data from file into table

PDO::pgsqlCopyFromArray
PDO::pgsqlCopyToArray
PostgreSQL (PDO)
PHP Manual

PDO::pgsqlCopyFromFile

(PHP 5 >= 5.3.3, PHP 7)

PDO::pgsqlCopyFromFile — Copy data from file into table

说明

public bool PDO::pgsqlCopyFromFile ( string $table_name , string $filename [, string $delimiter = '\t' [, string $null_as = "\\\\N" [, string $fields ]]] )

Copies data from file specified by filename into table table_name using delimiter as fields delimiter and fields list

参数

table_name

String containing table name

filename

Filename containing data to import

delimiter

Delimiter used in file specified by filename

null_as

How to interpret null values

fields

List of fields to insert

返回值

Returns TRUE on success, 或者在失败时返回 FALSE.

PDO::pgsqlCopyFromArray
PDO::pgsqlCopyToArray
PostgreSQL (PDO)


Copy data from database table into PHP array

PDO::pgsqlCopyFromFile
PDO::pgsqlCopyToFile
PostgreSQL (PDO)
PHP Manual

PDO::pgsqlCopyToArray

(PHP 5 >= 5.3.3, PHP 7)

PDO::pgsqlCopyToArray — Copy data from database table into PHP array

说明

public array PDO::pgsqlCopyToArray ( string $table_name , array $rows [, string $delimiter = '\t' [, string $null_as = "\\\\N" [, string $fields ]]] )

Copies data from table into array using delimiter as fields delimiter and fields list

参数

table_name

String containing table name

delimiter

Delimiter used in rows array

null_as

How to interpret null values

fields

List of fields to export

返回值

Returns an array of rows, 或者在失败时返回 FALSE.

PDO::pgsqlCopyFromFile
PDO::pgsqlCopyToFile
PostgreSQL (PDO)


Copy data from table into file

PDO::pgsqlCopyToArray
PDO::pgsqlGetNotify
PostgreSQL (PDO)
PHP Manual

PDO::pgsqlCopyToFile

(PHP 5 >= 5.3.3, PHP 7)

PDO::pgsqlCopyToFile — Copy data from table into file

说明

public bool PDO::pgsqlCopyToFile ( string $table_name , string $filename [, string $delimiter = '\t' [, string $null_as = "\\\\N" [, string $fields ]]] )

Copies data from table into file specified by filename using delimiter as fields delimiter and fields list

参数

table_name

String containing table name

filename

Filename to export data

delimiter

Delimiter used in file specified by filename

null_as

How to interpret null values

fields

List of fields to insert

返回值

Returns TRUE on success, 或者在失败时返回 FALSE.

PDO::pgsqlCopyToArray
PDO::pgsqlGetNotify
PostgreSQL (PDO)


Get asynchronous notification

PDO::pgsqlCopyToFile
PDO::pgsqlGetPid
PostgreSQL (PDO)
PHP Manual

PDO::pgsqlGetNotify

(PHP 5 >= 5.6.0, PHP 7)

PDO::pgsqlGetNotify — Get asynchronous notification

说明

public array PDO::pgsqlGetNotify ([ int $result_type = PDO::FETCH_USE_DEFAULT [, int $ms_timeout = 0 ]] )

Returns a result set representing a pending asynchronous notification.

参数

result_type

The format the result set should be returned as, represented as a PDO::FETCH_* constant.

ms_timeout

The length of time to wait for a response, in milliseconds.

返回值

If one or more notifications is pending, returns a single row, with fields message and pid, otherwise returns FALSE.

PDO::pgsqlCopyToFile
PDO::pgsqlGetPid
PostgreSQL (PDO)


Get the server PID

PDO::pgsqlGetNotify
PDO::pgsqlLOBCreate
PostgreSQL (PDO)
PHP Manual

PDO::pgsqlGetPid

(PHP 5 >= 5.6.0, PHP 7)

PDO::pgsqlGetPid — Get the server PID

说明

public int PDO::pgsqlGetPid ( void )

Returns the server's PID.

返回值

The server's PID.

PDO::pgsqlGetNotify
PDO::pgsqlLOBCreate
PostgreSQL (PDO)


Creates a new large object

PDO::pgsqlGetPid
PDO::pgsqlLOBOpen
PostgreSQL (PDO)
PHP Manual

PDO::pgsqlLOBCreate

(PHP 5 >= 5.1.2, PHP 7, PECL pdo_pgsql >= 1.0.2)

PDO::pgsqlLOBCreate — Creates a new large object

说明

public string PDO::pgsqlLOBCreate ( void )

PDO::pgsqlLOBCreate() creates a large object and returns the OID of that object. You may then open a stream on the object using PDO::pgsqlLOBOpen() to read or write data to it. The OID can be stored in columns of type OID and be used to reference the large object, without causing the row to grow arbitrarily large. The large object will continue to live in the database until it is removed by calling PDO::pgsqlLOBUnlink().

Large objects can be up to 2GB in size, but are cumbersome to use; you need to ensure that PDO::pgsqlLOBUnlink() is called prior to deleting the last row that references its OID from your database. In addition, large objects have no access controls. As an alternative, try the bytea column type; recent versions of PostgreSQL allow bytea columns of up to 1GB in size and transparently manage the storage for optimal row size.

Note: This function must be called within a transaction.

参数

PDO::pgsqlLOBCreate() takes no parameters.

返回值

Returns the OID of the newly created large object on success, or FALSE on failure.

范例

Example #1 A PDO::pgsqlLOBCreate() example

This example creates a new large object and copies the contents of a file into it. The OID is then stored into a table.

<?php
$db = new PDO('pgsql:dbname=test host=localhost', $user, $pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->beginTransaction();
$oid = $db->pgsqlLOBCreate();
$stream = $db->pgsqlLOBOpen($oid, 'w');
$local = fopen($filename, 'rb');
stream_copy_to_stream($local, $stream);
$local = null;
$stream = null;
$stmt = $db->prepare("INSERT INTO BLOBS (ident, oid) VALUES (?, ?)");
$stmt->execute(array($some_id, $oid));
$db->commit();
?>

参见

  • PDO::pgsqlLOBOpen() - Opens an existing large object stream
  • PDO::pgsqlLOBUnlink() - Deletes the large object
  • pg_lo_create() - 新建一个大型对象

PDO::pgsqlGetPid
PDO::pgsqlLOBOpen
PostgreSQL (PDO)


Opens an existing large object stream

PDO::pgsqlLOBCreate
PDO::pgsqlLOBUnlink
PostgreSQL (PDO)
PHP Manual

PDO::pgsqlLOBOpen

(PHP 5 >= 5.1.2, PHP 7, PECL pdo_pgsql >= 1.0.2)

PDO::pgsqlLOBOpen — Opens an existing large object stream

说明

public resource PDO::pgsqlLOBOpen ( string $oid [, string $mode = "rb" ] )

PDO::pgsqlLOBOpen() opens a stream to access the data referenced by oid. If mode is r, the stream is opened for reading, if mode is w, then the stream will be opened for writing. You can use all the usual filesystem functions, such as fread(), fwrite() and fgets() to manipulate the contents of the stream.

Note: This function, and all manipulations of the large object, must be called and carried out within a transaction.

参数

oid

A large object identifier.

mode

If mode is r, open the stream for reading. If mode is w, open the stream for writing.

返回值

Returns a stream resource on success 或者在失败时返回 FALSE.

范例

Example #1 A PDO::pgsqlLOBOpen() example

Following on from the PDO::pgsqlLOBCreate() example, this code snippet retrieves the large object from the database and outputs it to the browser.

<?php
$db = new PDO('pgsql:dbname=test host=localhost', $user, $pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->beginTransaction();
$stmt = $db->prepare("select oid from BLOBS where ident = ?");
$stmt->execute(array($some_id));
$stmt->bindColumn('oid', $oid, PDO::PARAM_STR);
$stmt->fetch(PDO::FETCH_BOUND);
$stream = $db->pgsqlLOBOpen($oid, 'r');
header("Content-type: application/octet-stream");
fpassthru($stream);
?>

参见

  • PDO::pgsqlLOBCreate() - Creates a new large object
  • PDO::pgsqlLOBUnlink() - Deletes the large object
  • pg_lo_open() - 打开一个大型对象

PDO::pgsqlLOBCreate
PDO::pgsqlLOBUnlink
PostgreSQL (PDO)


Deletes the large object

PDO::pgsqlLOBOpen
SQLite (PDO)
PostgreSQL (PDO)
PHP Manual

PDO::pgsqlLOBUnlink

(PHP 5 >= 5.1.2, PHP 7, PECL pdo_pgsql >= 1.0.2)

PDO::pgsqlLOBUnlink — Deletes the large object

说明

public bool PDO::pgsqlLOBUnlink ( string $oid )

Deletes a large object from the database identified by OID.

Note: This function must be called within a transaction.

参数

oid

A large object identifier

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 A PDO::pgsqlLOBUnlink() example

This example unlinks a large object from the database prior to deleting the row that references it from the blobs table we've been using in our PDO::pgsqlLOBCreate() and PDO::pgsqlLOBOpen() examples.

<?php
$db = new PDO('pgsql:dbname=test host=localhost', $user, $pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->beginTransaction();
$db->pgsqlLOBUnlink($oid);
$stmt = $db->prepare("DELETE FROM BLOBS where ident = ?");
$stmt->execute(array($some_id));
$db->commit();
?>

参见

  • PDO::pgsqlLOBOpen() - Opens an existing large object stream
  • PDO::pgsqlLOBCreate() - Creates a new large object

PDO::pgsqlLOBOpen
SQLite (PDO)
PostgreSQL (PDO)


SQLite Functions (PDO_SQLITE)

简介

PDO_SQLITE is a driver that implements the PHP Data Objects (PDO) interface to enable access to SQLite 3 databases.

In PHP 5.1, the SQLite extension also provides a driver for SQLite 2 databases; while it is not technically a part of the PDO_SQLITE driver, it behaves similarly, so it is documented alongside it. The SQLite 2 driver for PDO is provided primarily to make it easier to import legacy SQLite 2 database files into an application that uses the faster, more efficient SQLite 3 driver. As a result, the SQLite 2 driver is not as feature-rich as the SQLite 3 driver.

Note:

PDO_SQLITE allows using strings apart from streams together with PDO::PARAM_LOB.

安装

The PDO_SQLITE PDO driver is enabled by default. To disable, --without-pdo-sqlite[=DIR] may be used, where the optional [=DIR] is the sqlite base install directory.

Table of Contents

  • PDO_SQLITE DSN — Connecting to SQLite databases
  • PDO::sqliteCreateAggregate — Registers an aggregating User Defined Function for use in SQL statements
  • PDO::sqliteCreateCollation — Registers a User Defined Function for use as a collating function in SQL statements
  • PDO::sqliteCreateFunction — Registers a User Defined Function for use in SQL statements
PDO::pgsqlLOBUnlink
PDO_SQLITE DSN
PDO 驱动


Connecting to SQLite databases

SQLite (PDO)
PDO::sqliteCreateAggregate
SQLite (PDO)
PHP Manual

PDO_SQLITE DSN

(PECL PDO_SQLITE >= 0.2.0)

PDO_SQLITE DSN — Connecting to SQLite databases

说明

The PDO_SQLITE Data Source Name (DSN) is composed of the following elements:

DSN prefix (SQLite 3)

The DSN prefix is sqlite:.

  • To access a database on disk, append the absolute path to the DSN prefix.

  • To create a database in memory, append :memory: to the DSN prefix.

DSN prefix (SQLite 2)

The SQLite extension in PHP 5.1 provides a PDO driver that supports accessing and creating SQLite 2 databases. This enables you to access databases you may have created with the SQLite extension in previous versions of PHP.

Note:

The sqlite2 driver is only available in PHP 5.1.x if you have enabled both PDO and ext/sqlite. It is not currently available via PECL.

The DSN prefix for connecting to SQLite 2 databases is sqlite2:.

  • To access a database on disk, append the absolute path to the DSN prefix.

  • To create a database in memory, append :memory: to the DSN prefix.

范例

Example #1 PDO_SQLITE DSN examples

The following examples show PDO_SQLITE DSN for connecting to SQLite databases:

sqlite:/opt/databases/mydb.sq3
sqlite::memory:
sqlite2:/opt/databases/mydb.sq2
sqlite2::memory:

SQLite (PDO)
PDO::sqliteCreateAggregate
SQLite (PDO)


Registers an aggregating User Defined Function for use in SQL statements

PDO_SQLITE DSN
PDO::sqliteCreateCollation
SQLite (PDO)
PHP Manual

PDO::sqliteCreateAggregate

(PHP 5 >= 5.1.0, PHP 7, PECL pdo_sqlite >= 1.0.0)

PDO::sqliteCreateAggregate — Registers an aggregating User Defined Function for use in SQL statements

说明

public bool PDO::sqliteCreateAggregate ( string $function_name , callable $step_func , callable $finalize_func [, int $num_args ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

This method is similar to PDO::sqliteCreateFunction except that it registers functions that can be used to calculate a result aggregated across all the rows of a query.

The key difference between this method and PDO::sqliteCreateFunction is that two functions are required to manage the aggregate.

参数

function_name

The name of the function used in SQL statements.

step_func

Callback function called for each row of the result set. Your PHP function should accumulate the result and store it in the aggregation context.

This function need to be defined as:

mixed step ( mixed $context , int $rownumber , mixed $value1 [, mixed $value2 [, mixed $.. ]] )

context will be NULL for the first row; on subsequent rows it will have the value that was previously returned from the step function; you should use this to maintain the aggregate state.

rownumber will hold the current row number.

The return value of this function will be used as the context argument in the next call of the step or finalize functions.

finalize_func

Callback function to aggregate the "stepped" data from each row. Once all the rows have been processed, this function will be called and it should then take the data from the aggregation context and return the result. Callback functions should return a type understood by SQLite (i.e. scalar type).

This function need to be defined as:

mixed fini ( mixed $context , int $rownumber )

context will hold the return value from the very last call to the step function.

rownumber will hold the number of rows over which the aggregate was performed.

The return value of this function will be used as the return value for the aggregate.

num_args

Hint to the SQLite parser if the callback function accepts a predetermined number of arguments.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 max_length aggregation function example

<?php
$data = array(
   'one',
   'two',
   'three',
   'four',
   'five',
   'six',
   'seven',
   'eight',
   'nine',
   'ten',
   );
$db = new PDO('sqlite::memory:');
$db->exec("CREATE TABLE strings(a)");
$insert = $db->prepare('INSERT INTO strings VALUES (?)');
foreach ($data as $str) {
    $insert->execute(array($str));
}
$insert = null;

function max_len_step(&$context, $rownumber, $string)
{
    if (strlen($string) > $context) {
        $context = strlen($string);
    }
    return $context;
}

function max_len_finalize(&$context, $rownumber)
{
    return $context;
}

$db->sqliteCreateAggregate('max_len', 'max_len_step', 'max_len_finalize');

var_dump($db->query('SELECT max_len(a) from strings')->fetchAll());

?>

In this example, we are creating an aggregating function that will calculate the length of the longest string in one of the columns of the table. For each row, the max_len_step function is called and passed a context parameter. The context parameter is just like any other PHP variable and be set to hold an array or even an object value. In this example, we are simply using it to hold the maximum length we have seen so far; if the string has a length longer than the current maximum, we update the context to hold this new maximum length.

After all of the rows have been processed, SQLite calls the max_len_finalize function to determine the aggregate result. Here, we could perform some kind of calculation based on the data found in the context. In our simple example though, we have been calculating the result as the query progressed, so we simply need to return the context value.

Tip

It is NOT recommended for you to store a copy of the values in the context and then process them at the end, as you would cause SQLite to use a lot of memory to process the query - just think of how much memory you would need if a million rows were stored in memory, each containing a string 32 bytes in length.

Tip

You can use PDO::sqliteCreateFunction and PDO::sqliteCreateAggregate to override SQLite native SQL functions.

Note:

This method is not available with the SQLite2 driver. Use the old style sqlite API for that instead.

参见

  • PDO::sqliteCreateFunction
  • sqlite_create_function() - Registers a "regular" User Defined Function for use in SQL statements
  • sqlite_create_aggregate() - Register an aggregating UDF for use in SQL statements

PDO_SQLITE DSN
PDO::sqliteCreateCollation
SQLite (PDO)


Registers a User Defined Function for use as a collating function in SQL statements

PDO::sqliteCreateAggregate
PDO::sqliteCreateFunction
SQLite (PDO)
PHP Manual

PDO::sqliteCreateCollation

(PHP 5 >= 5.3.11, PHP 7)

PDO::sqliteCreateCollation — Registers a User Defined Function for use as a collating function in SQL statements

说明

public bool PDO::sqliteCreateCollation ( string $name , callable $callback )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

name

Name of the SQL collating function to be created or redefined.

callback

The name of a PHP function or user-defined function to apply as a callback, defining the behavior of the collation. It should accept two strings and return as strcmp() does, i.e. it should return -1, 1, or 0 if the first string sorts before, sorts after, or is equal to the second.

This function need to be defined as:

int collation ( string $string1 , string $string2 )

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 PDO::sqliteCreateCollation() example

<?php
$db = new PDO('sqlite::memory:');
$db->exec("CREATE TABLE test (col1 string)");
$db->exec("INSERT INTO test VALUES ('a1')");
$db->exec("INSERT INTO test VALUES ('a10')");
$db->exec("INSERT INTO test VALUES ('a2')");

$db->sqliteCreateCollation('NATURAL_CMP', 'strnatcmp');
foreach ($db->query("SELECT col1 FROM test ORDER BY col1") as $row) {
  echo $row['col1'] . "\n";
}
echo "\n";
foreach ($db->query("SELECT col1 FROM test ORDER BY col1 COLLATE NATURAL_CMP") as $row) {
  echo $row['col1'] . "\n";
}
?>

以上例程会输出：

a1
a10
a2

a1
a2
a10

注释

Note:

This method is not available with the SQLite2 driver. Use the old style sqlite API for that instead.

PDO::sqliteCreateAggregate
PDO::sqliteCreateFunction
SQLite (PDO)


Registers a User Defined Function for use in SQL statements

PDO::sqliteCreateCollation
4D (PDO)
SQLite (PDO)
PHP Manual

PDO::sqliteCreateFunction

(PHP 5 >= 5.1.0, PHP 7, PECL pdo_sqlite >= 1.0.0)

PDO::sqliteCreateFunction — Registers a User Defined Function for use in SQL statements

说明

public bool PDO::sqliteCreateFunction ( string $function_name , callable $callback [, int $num_args ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

This method allows you to register a PHP function with SQLite as an UDF (User Defined Function), so that it can be called from within your SQL statements.

The UDF can be used in any SQL statement that can call functions, such as SELECT and UPDATE statements and also in triggers.

参数

function_name

The name of the function used in SQL statements.

callback

Callback function to handle the defined SQL function.

Note: Callback functions should return a type understood by SQLite (i.e. scalar type).

num_args

Hint to the SQLite parser if the callback function accepts a predetermined number of arguments.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 PDO::sqliteCreateFunction() example

<?php
function md5_and_reverse($string)
{
    return strrev(md5($string));
}

$db = new PDO('sqlite:sqlitedb');
$db->sqliteCreateFunction('md5rev', 'md5_and_reverse', 1);
$rows = $db->query('SELECT md5rev(filename) FROM files')->fetchAll();
?>

In this example, we have a function that calculates the md5 sum of a string, and then reverses it. When the SQL statement executes, it returns the value of the filename transformed by our function. The data returned in $rows contains the processed result.

The beauty of this technique is that you do not need to process the result using a foreach loop after you have queried for the data.

Tip

You can use PDO::sqliteCreateFunction and PDO::sqliteCreateAggregate to override SQLite native SQL functions.

Note:

This method is not available with the SQLite2 driver. Use the old style sqlite API for that instead.

参见

  • PDO::sqliteCreateAggregate
  • sqlite_create_function() - Registers a "regular" User Defined Function for use in SQL statements
  • sqlite_create_aggregate() - Register an aggregating UDF for use in SQL statements

PDO::sqliteCreateCollation
4D (PDO)
SQLite (PDO)


4D Functions (PDO_4D)

简介

Warning

此扩展是实验性 的。 此扩展的表象，包括其函数名称以及其他此扩展的相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本扩展风险自担 。

PDO_4D is a driver that implements the PHP Data Objects (PDO) interface to enable access from PHP to 4D databases.

4D is an integrated platform that speeds and simplifies the development and deployment of business applications, used in over 70 countries, by a community of thousands of developers and vertical solution providers, with millions of end-users worldwide.

By offering a suite of integrated tools such as an ANSI SQL relational and transactional database, a graphical development environment, a fourth-generation language with over 1000 high-level commands, a built-in HTTP server, application server, etc., 4D facilitates the creation and maintenance of applications from one to hundreds of simultaneous users, whether on Windows, Mac or from any Web client.

4D is also an open platform, offering a complete API for plug-in creation, including various connectors that allow it to act as a back-end or front-end for many environments (Oracle via OCI, SOAP client or server, Flex data source, all ODBC databases, XML over HTTP, etc.)

In addition to the ability to interact with 4D applications across Web Services, 4D databases can now be directly accessed using the PDO_4D driver.

More details about the 4D development environment on » http://www.4d.com/.

PDO_4D is known to work with 4D versions 12 beta and up, for Mac OS X and Windows. Older plat-forms may work, but are unsupported.

Table of Contents

  • PDO_4D DSN — Connecting to 4D SQL server
  • Constants for PDO_4D — Constants for PDO_4D
  • SQL types with PDO_4D and PHP — SQL types with PDO_4D and PHP
  • SQL acceptable by 4D — PDO and SQL 4D
  • Examples with PDO_4D — Examples PDO_4D
PDO::sqliteCreateFunction
PDO_4D DSN
PDO 驱动


Connecting to 4D SQL server

4D (PDO)
Constants for PDO_4D
4D (PDO)
PHP Manual

PDO_4D DSN

(No version information available, might only be in Git)

PDO_4D DSN — Connecting to 4D SQL server

说明

The PDO_4D DSN consists of:

DSN prefix

The DSN prefix is 4D:.

host

The host on which the 4D SQL server is.

port

The port number for the server. This is optional.

user

The login name when connecting to the database.

password

The password for the above login.

dbname

The name of the database. This parameter is optional, and it is not used.

charset

The 4D character set.

范例

Example #1 DSN examples for PDO_4D

The following examples has two DSN for PDO_4D, that connects to a 4D database :

4D:host=localhost;CHARSET=gb2312
Other possible values :
4D:host=localhost
4D:

4D (PDO)
Constants for PDO_4D
4D (PDO)


Constants for PDO_4D

(No version information available, might only be in Git)

Constants for PDO_4D — Constants for PDO_4D

预定义常量

下列常量由此驱动定义，且仅在扩展编译入 PHP 或在运行时动态载入时可用。另外，使用此驱动时，仅会使用这些驱动特定的常量。使用其他驱动的驱动特定的常量可能会导致不可预见的情况。如果代码可运行于多个驱动，PDO::getAttribute() 可被用于获取 PDO_ATTR_DRIVER_NAME 属性以检查驱动。

PDO::FOURD_ATTR_CHARSET (integer)

Change the charset in which 4D returns data. (Default is UTF-8).

PDO::FOURD_ATTR_PREFERRED_IMAGE_TYPES (integer)

The requested format of the image, when selecting a row with a column type PICTURE. It may be any type that 4D supports.

PDO_4D DSN
SQL types with PDO_4D and PHP
4D (PDO)


SQL types with PDO_4D and PHP

(No version information available, might only be in Git)

SQL types with PDO_4D and PHP — SQL types with PDO_4D and PHP

Supported SQL types
Type SQL 4D | Equivalent 4D | Note
ALPHA_NUMERIC | TEXT |
VARCHAR | TEXT |
TEXT | TEXT |
TIMESTAMP | DATE |
INTERVAL | HOUR |
DURATION | HOUR |
BOOLEAN | BOOLEAN |
BIT | BOOLEAN |
BYTE | INT32 |
INT16 | SMALLINT |
SMALLINT | SMALLINT |
INT32 | INT32 |
INT | INT32 |
INT64 | INT64 |
NUMERIC | INT64 |
REAL | REAL | Unsupported (use VARCHAR conversion)
FLOAT | FLOAT | Unsupported (use VARCHAR conversion)
DOUBLE PRECISION | FLOAT |
BLOB | BLOB | Must use a prepared statement, and PDO::PARAM_LOB
BIT VARYING | BLOB | Must use a prepared statement, and PDO::PARAM_LOB
CLOB | TEXT |
PICTURE | PICTURE | Must use a prepared statement, and PDO::PARAM_LOB

Constants for PDO_4D
SQL acceptable by 4D
4D (PDO)


PDO and SQL 4D

SQL types with PDO_4D and PHP
Examples with PDO_4D
4D (PDO)
PHP Manual

SQL acceptable by 4D

(No version information available, might only be in Git)

SQL acceptable by 4D — PDO and SQL 4D

说明

4D implements strictly the ANSI 89 standard, and have it enforced. It is highly recommended to read the 4D SQL documentation to learn about the available commands. The URL of the manual is : » http://doc.4d.com/. Below is a list of 4D SQL characteristics: it is not exhaustive, but may serve as an introduction.

Characteristics of 4D SQL
Characteristics | Alternative | Note
INTEGER | Modify the SQL to use INT. | INT is the supported integer type in 4Dv12.0.
CHAR | Use VARCHAR instead. | Unsupported in 4Dv12.0
UNION | Unsupported. Make separate queries. | Unsupported in 4Dv12.0
SELECT 1 + 1; | SELECT 1 + 1 FROM _USER_SCHEMAS; | FROM is required
FLOAT | Cast the FLOAT value into a FLOAT or STRING, with an SQL 4D function (CAST, ROUND, TRUNC or TRUNCATE) | Unsupported in current versions of the PDO_4D driver
Strong typing | Take care your SQL query, or your PHP code provides data with the expected type | One must provide the right type that 4D expect. One can't insert '1' (as a string) in an INTEGER column.
PDO::execute($row)() : only works if all the table's column are of type TEXT or VARCHAR | Use the prepared statements, and use the right types. | The PDO extension cast all values through execute() as string, and expect the SQL database to parse the values.
SELECT NULL FROM TABLE | Do not use NULL constants. Extract them from the table | It is not allowed to use the NULL constant in the select list
SELECT * FROM TABLE WHERE 1 | Use WHERE 1 = 1 | A constant can't be used in a WHERE clause
SHOW TABLES | Use system tables | The list of tables, schemas, index, etc. are in these system tables : _USER_TABLES, _USER_COLUMNS, _USER_INDEXES, _USER_CONSTRAINTS, _USER_IND_COLUMNS, _USER_CONS_COLUMNS, and _USER_SCHEMAS.
SQL structure delimiter | Use the following function to protect SQL elements: function sqlEscapeElement(elem) { return '[' . str_replace(']',']]', $elem) . ']'; } | To escape SQL elements names (tables, fields, users, groups, schema, primary key, etc.), the whole identifier must be between square brackets, and the closing brackets ']' must be doubled.

SQL types with PDO_4D and PHP
Examples with PDO_4D
4D (PDO)


Examples PDO_4D

SQL acceptable by 4D
针对各数据库系统对应的扩展
4D (PDO)
PHP Manual

Examples with PDO_4D

(No version information available, might only be in Git)

Examples with PDO_4D — Examples PDO_4D

This basic example show how to connect, execute a query, read data and disconnect from a 4D SQL server.

Example #1 Basic example with PDO_4D

<?php
$dsn = '4D:host=localhost;CHARSET=gb2312';
$user = 'test';
$pass = 'test';

// Connection to the 4D SQL server
$db = new PDO($dsn, $user, $pass);

try {
    $db->exec('CREATE TABLE test(id varCHAR(1) NOT NULL, val VARCHAR(10))');
} catch (PDOException $e) {
    die("Erreur 4D : " . $e->getMessage());
}

$db->exec("INSERT INTO test VALUES('A', 'B')");
$db->exec("INSERT INTO test VALUES('C', 'D')");
$db->exec("INSERT INTO test VALUES('E', 'F')");

$stmt = $db->prepare('SELECT id, val from test');

$stmt->execute();
print_r($stmt->fetchAll());

unset($stmt);
unset($db);
?>

以上例程会输出：

    Array
(
    [0] => Array
        (
            [ID] => A
            [0] => A
            [VAL] => B
            [1] => B
        )

    [1] => Array
        (
            [ID] => C
            [0] => C
            [VAL] => D
            [1] => D
        )

    [2] => Array
        (
            [ID] => E
            [0] => E
            [VAL] => F
            [1] => F
        )

)

This example shows how to execute a query in 4D language, and how to read the result through PDO_4D.

Example #2 Accessing 4D language from pdo_4d

Set up a 4D method, called method. Make sure in the method properties that the option Available via SQL is checked. The 4D code is the following.

C_TEXT($0)
$0:=Application Version(*)

The PHP code to use the above 4D method is :

<?php
$dsn = '4D:host=localhost;CHARSET=gb2312';
$user = 'test';
$pass = 'test';

// Connection to the 4D server
$db = new PDO($dsn, $user, $pass);

$stmt = $db->prepare('SELECT {FN method() AS VARCHAR } FROM _USER_SCHEMAS LIMIT 1');

$stmt->execute();
print_r($stmt->fetchAll());

unset($stmt);
unset($db);
?>

以上例程会输出：

(
    [0] => Array
        (
            [<expression>] => F0011140
            [0] => F0011140
        )

)

Example #3 Escaping 4D table names

This examples illustrates how to escape characters in a 4D SQL query.

<?php
$dsn = '4D:host=localhost;CHARSET=gb2312';
$user = 'test';
$pass = 'test';

// Connection to 4D server 4D
$db = new PDO($dsn, $user, $pass);

$objects = array('[',']','[]','][','[[',']]','[[[',']]]','TBL ]]32[23');

foreach($objects as $id => $object) {
    $object = str_replace(']',']]', $object);
    print "$object\n";

    $db->exec('CREATE TABLE IF NOT EXISTS ['.$object.'](['.$object.'] FLOAT)');

    $req = "INSERT INTO [$object] ([$object]) VALUES ($id);";
    $db->query($req);

    $q = $db->prepare("SELECT [$object] FROM [$object]");
    $q->execute();
    $x[] = $q->fetch(PDO::FETCH_NUM);

    $db->exec('DROP TABLE ['.$object.'];');
}

?>

以上例程会输出：

[
]]
[]]
]][
[[
]]]]
[[[
]]]]]]
TBL ]]]]32[23

SQL acceptable by 4D
针对各数据库系统对应的扩展
4D (PDO)


针对各数据库系统对应的扩展

  • CUBRID
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • CUBRID 函数
    • CUBRID MySQL 兼容性函数
    • CUBRID 过时的别名和函数
  • DB++
    • 简介
    • 安装／配置
    • 预定义常量
    • DB++ 函数
  • dBase
    • 简介
    • 安装／配置
    • 预定义常量
    • dBase 函数
  • filePro
    • 简介
    • 安装／配置
    • 预定义常量
    • filePro 函数
  • Firebird/InterBase
    • 简介
    • 安装／配置
    • 预定义常量
    • Firebird/InterBase 函数
  • FrontBase
    • 简介
    • 安装／配置
    • 预定义常量
    • FrontBase 函数
  • IBM DB2 — IBM DB2, Cloudscape and Apache Derby
    • 简介
    • 安装／配置
    • 预定义常量
    • IBM DB2 函数
  • Informix
    • 简介
    • 安装／配置
    • 预定义常量
    • Informix 函数
  • Ingres — Ingres DBMS, EDBC, and Enterprise Access Gateways
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Ingres 函数
  • MaxDB
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • MaxDB 函数
  • Mongo — MongoDB
    • 安装／配置
    • 手册
    • 核心类
    • Types
    • GridFS Classes
    • Miscellaneous
    • Mongo 函数
    • Exceptions
    • 更新日志
  • MongoDB — MongoDB driver
    • 安装／配置
    • Tutorials
    • Driver Architecture and Internals — Explains the driver architecure, and special features
    • Security
    • MongoDB\Driver — MongoDB driver classes
    • MongoDB\BSON — BSON type classes and serialization functions
    • MongoDB\Driver\Exception — Exception classes
  • mSQL
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • mSQL 函数
  • Mssql — Microsoft SQL Server
    • 简介
    • 安装／配置
    • 预定义常量
    • Mssql 函数
  • MySQL — MySQL Drivers and Plugins
    • Overview of the MySQL PHP drivers
    • Mysqli — MySQL增强版扩展
    • Mysql（原始） — 原始的 MySQL API
    • Mysqlnd — MySQL Native Driver
    • mysqlnd_ms — Mysqlnd 主从复制和负载均衡插件
    • mysqlnd_qc — Mysqlnd query result cache plugin
    • mysqlnd_uh — Mysqlnd user handler plugin
    • mysqlnd_mux — Mysqlnd connection multiplexing plugin
    • mysqlnd_memcache — Mysqlnd Memcache plugin
  • OCI8 — Oracle OCI8
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • OCI8 Connection Handling and Connection Pooling
    • OCI8 Fast Application Notification (FAN) Support
    • OCI8 and DTrace Dynamic Tracing
    • Supported Datatypes
    • OCI8 函数
    • OCI-Collection — The OCI-Collection class
    • OCI-Lob — The OCI-Lob class
    • OCI8 Obsolete Aliases and Functions
  • Paradox — Paradox File Access
    • 简介
    • 安装／配置
    • 预定义常量
    • Paradox 函数
  • PostgreSQL
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • PostgreSQL 函数
  • SQLite
    • 简介
    • 安装／配置
    • 预定义常量
    • SQLite 函数
  • SQLite3
    • 简介
    • 安装／配置
    • 预定义常量
    • SQLite3 — SQLite3 类
    • SQLite3Stmt — SQLite3Stmt 类
    • SQLite3Result — SQLite3Result 类
  • SQLSRV — Microsoft SQL Server Driver for PHP
    • 简介
    • 安装／配置
    • 预定义常量
    • SQLSRV 函数
  • Sybase
    • 简介
    • 安装／配置
    • 预定义常量
    • Sybase 函数
  • tokyo_tyrant
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • TokyoTyrant — The TokyoTyrant class
    • TokyoTyrantTable — The TokyoTyrantTable class
    • TokyoTyrantQuery — The TokyoTyrantQuery class
    • TokyoTyrantIterator — The TokyoTyrantIterator class
    • TokyoTyrantException — The TokyoTyrantException class
Examples with PDO_4D
CUBRID
数据库扩展


CUBRID

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • CUBRID 函数
    • cubrid_bind — Bind variables to a prepared statement as parameters
    • cubrid_close_prepare — Close the request handle
    • cubrid_close_request — Close the request handle
    • cubrid_col_get — Get contents of collection type column using OID
    • cubrid_col_size — Get the number of elements in collection type column using OID
    • cubrid_column_names — Get the column names in result
    • cubrid_column_types — Get column types in result
    • cubrid_commit — Commit a transaction
    • cubrid_connect_with_url — Establish the environment for connecting to CUBRID server
    • cubrid_connect — Open a connection to a CUBRID Server
    • cubrid_current_oid — Get OID of the current cursor location
    • cubrid_disconnect — Close a database connection
    • cubrid_drop — Delete an instance using OID
    • cubrid_error_code_facility — Get the facility code of error
    • cubrid_error_code — Get error code for the most recent function call
    • cubrid_error_msg — Get last error message for the most recent function call
    • cubrid_execute — Execute a prepared SQL statement
    • cubrid_fetch — Fetch the next row from a result set
    • cubrid_free_result — Free the memory occupied by the result data
    • cubrid_get_autocommit — Get auto-commit mode of the connection
    • cubrid_get_charset — Return the current CUBRID connection charset
    • cubrid_get_class_name — Get the class name using OID
    • cubrid_get_client_info — Return the client library version
    • cubrid_get_db_parameter — Returns the CUBRID database parameters
    • cubrid_get_query_timeout — Get the query timeout value of the request
    • cubrid_get_server_info — Return the CUBRID server version
    • cubrid_get — Get a column using OID
    • cubrid_insert_id — Return the ID generated for the last updated AUTO_INCREMENT column
    • cubrid_is_instance — Check whether the instance pointed by OID exists
    • cubrid_lob_close — Close BLOB/CLOB data
    • cubrid_lob_export — Export BLOB/CLOB data to file
    • cubrid_lob_get — Get BLOB/CLOB data
    • cubrid_lob_send — Read BLOB/CLOB data and send straight to browser
    • cubrid_lob_size — Get BLOB/CLOB data size
    • cubrid_lob2_bind — Bind a lob object or a string as a lob object to a prepared statement as parameters.
    • cubrid_lob2_close — Close LOB object.
    • cubrid_lob2_export — Export the lob object to a file.
    • cubrid_lob2_import — Import BLOB/CLOB data from a file.
    • cubrid_lob2_new — Create a lob object.
    • cubrid_lob2_read — Read from BLOB/CLOB data.
    • cubrid_lob2_seek64 — Move the cursor of a lob object.
    • cubrid_lob2_seek — Move the cursor of a lob object.
    • cubrid_lob2_size64 — Get a lob object's size.
    • cubrid_lob2_size — Get a lob object's size.
    • cubrid_lob2_tell64 — Tell the cursor position of the LOB object.
    • cubrid_lob2_tell — Tell the cursor position of the LOB object.
    • cubrid_lob2_write — Write to a lob object.
    • cubrid_lock_read — Set a read lock on the given OID
    • cubrid_lock_write — Set a write lock on the given OID
    • cubrid_move_cursor — Move the cursor in the result
    • cubrid_next_result — Get result of next query when executing multiple SQL statements
    • cubrid_num_cols — Return the number of columns in the result set
    • cubrid_num_rows — Get the number of rows in the result set
    • cubrid_pconnect_with_url — Open a persistent connection to CUBRID server
    • cubrid_pconnect — Open a persistent connection to a CUBRID server
    • cubrid_prepare — Prepare a SQL statement for execution
    • cubrid_put — Update a column using OID
    • cubrid_rollback — Roll back a transaction
    • cubrid_schema — Get the requested schema information
    • cubrid_seq_drop — Delete an element from sequence type column using OID
    • cubrid_seq_insert — Insert an element to a sequence type column using OID
    • cubrid_seq_put — Update the element value of sequence type column using OID
    • cubrid_set_add — Insert a single element to set type column using OID
    • cubrid_set_autocommit — Set autocommit mode of the connection
    • cubrid_set_db_parameter — Sets the CUBRID database parameters
    • cubrid_set_drop — Delete an element from set type column using OID
    • cubrid_set_query_timeout — Set the timeout time of query execution
    • cubrid_version — Get the CUBRID PHP module's version
  • CUBRID MySQL 兼容性函数
    • cubrid_affected_rows — Return the number of rows affected by the last SQL statement
    • cubrid_client_encoding — Return the current CUBRID connection charset
    • cubrid_close — Close CUBRID connection
    • cubrid_data_seek — Move the internal row pointer of the CUBRID result
    • cubrid_db_name — Get db name from results of cubrid_list_dbs
    • cubrid_errno — Return the numerical value of the error message from previous CUBRID operation
    • cubrid_error — Get the error message
    • cubrid_fetch_array — Fetch a result row as an associative array, a numeric array, or both
    • cubrid_fetch_assoc — Return the associative array that corresponds to the fetched row
    • cubrid_fetch_field — Get column information from a result and return as an object
    • cubrid_fetch_lengths — Return an array with the lengths of the values of each field from the current row
    • cubrid_fetch_object — Fetch the next row and return it as an object
    • cubrid_fetch_row — Return a numerical array with the values of the current row
    • cubrid_field_flags — Return a string with the flags of the given field offset
    • cubrid_field_len — Get the maximum length of the specified field
    • cubrid_field_name — Return the name of the specified field index
    • cubrid_field_seek — Move the result set cursor to the specified field offset
    • cubrid_field_table — Return the name of the table of the specified field
    • cubrid_field_type — Return the type of the column corresponding to the given field offset
    • cubrid_list_dbs — Return an array with the list of all existing CUBRID databases
    • cubrid_num_fields — Return the number of columns in the result set
    • cubrid_ping — Ping a server connection or reconnect if there is no connection
    • cubrid_query — Send a CUBRID query
    • cubrid_real_escape_string — Escape special characters in a string for use in an SQL statement
    • cubrid_result — Return the value of a specific field in a specific row
    • cubrid_unbuffered_query — Perform a query without fetching the results into memory
  • CUBRID 过时的别名和函数
    • cubrid_load_from_glo — Read data from a GLO instance and save it in a file
    • cubrid_new_glo — Create a glo instance
    • cubrid_save_to_glo — Save requested file in a GLO instance
    • cubrid_send_glo — Read data from glo and send it to std output
针对各数据库系统对应的扩展
简介
针对各数据库系统对应的扩展


简介

这些函数可以让你访问CUBRID数据库服务。更多关于CUBRID的信息可以在» CUBRID找到。

在» CUBRID 参考资料 可以找到关于CUBRID的参考资料。

CUBRID
安装／配置
CUBRID


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
CUBRID


需求

为使这些函数可用，必须安装CUBRID和编译CUBRID PHP库，提供CUBRID支持。

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/cubrid.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

关于在Linux和Windows系统上的安装手册信息，请阅读包含在包中的这个文件build-guide.html。

需求
运行时配置
安装／配置


运行时配置

无运行时配置

安装
资源类型
安装／配置


资源类型

在CUBRID中使用四种资源类型。第一个用于连接数据库的链接标识符，第二个是保存一个查询结果的资源类型，以及最后两个保存BLOB/CLOB查询结果的资源数据类型。

connection 标识符

由 cubrid_connect(),
cubrid_connect_with_url(),
cubrid_pconnect() 以及
cubrid_pconnect_with_url()返回的一个连接标识符。

request 标识符

由 cubrid_prepare() 和 cubrid_execute()返回的一个请求标识符。

LOB 标识符

由cubrid_lob_get()返回的一个LOB 标识符。

LOB2 标识符

由 cubrid_lob2_new()返回或从结果集中获取的一个LOB 标识符

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

下列常量在执行SQL语句的时候可能被用到。它们可以被传递给cubrid_prepare() 和 cubrid_execute()。

CUBRID SQL 执行标志
常量 | 说明
CUBRID_INCLUDE_OID | Determine whether to get OID during query execution.
CUBRID_ASYNC | Execute the query in asynchronous mode.
CUBRID_EXEC_QUERY_ALL | Execute the query in synchronous mode. This flag must be set when executing multiple SQL statements.

The following constants can be used when fetching the results to specify fetch behaviour. They can be passed to cubrid_fetch() and cubrid_fetch_array().

CUBRID fetch flags
Constant | Description
CUBRID_NUM | Get query result as a numeric array (0-default).
CUBRID_ASSOC | Get query result as an associative array.
CUBRID_BOTH | Get query result as both numeric and associative arrays (default value).
CUBRID_OBJECT | Get query result an object.
CUBRID_LOB | The constant CUBRID_LOB can be used when you want to operate the lob object. It can be passed to cubrid_fetch(), cubrid_fetch_row(), cubrid_fetch_array(), cubrid_fetch_assoc() and cubrid_fetch_object().

The following constants can be used when positioning the cursor in query results. They can be passed to or returned by cubrid_move_cursor().

CUBRID cursor position flags
Constant | Description
CUBRID_CURSOR_FIRST | Move current cursor to the first position in the result.
CUBRID_CURSOR_CURRENT | Move current cursor as a default value if the origin is not specified.
CUBRID_CURSOR_LAST | Move current cursor to the last position in the result.
CUBRID_CURSOR_SUCCESS | Returned value of cubrid_move_cursor() function in case of success. This flag has been removed from 8.4.1.
CUBRID_NO_MORE_DATA | Returned value of cubrid_move_cursor() function in case of failure. This flag has been removed from 8.4.1.
CUBRID_CURSOR_ERROR | Returned value of cubrid_move_cursor() function in case of failure. This flag has been removed from 8.4.1.

The following constants can be used when setting the auto-commit mode for the database connection. They can be passed to cubrid_set_autocommit() or returned by cubrid_get_autocommit().

CUBRID auto-commit mode flags
Constant | Description
CUBRID_AUTOCOMMIT_TRUE | Enable the auto-commit mode.
CUBRID_AUTOCOMMIT_FALSE | Disable the auto-commit mode.

The following constants can be used when setting the database parameter. They can be passed to cubrid_set_db_parameter().

CUBRID parameter flags
Constant | Description
CUBRID_PARAM_ISOLATION_LEVEL | Transaction isolation level for the database connection.
CUBRID_PARAM_LOCK_TIMEOUT | Transaction timeout in seconds.

The following constants can be used when setting the transaction isolation level. They can be passed to cubrid_set_db_parameter() or returned by cubrid_get_db_parameter().

CUBRID isolation level flags
Constant | Description
TRAN_COMMIT_CLASS_UNCOMMIT_INSTANCE | The lowest isolation level (1). A dirty, non-repeatable or phantom read may occur for the tuple and a non-repeatable read may occur for the table as well.
TRAN_COMMIT_CLASS_COMMIT_INSTANCE | A relatively low isolation level (2). A dirty read does not occur, but non-repeatable or phantom read may occur.
TRAN_REP_CLASS_UNCOMMIT_INSTANCE | The default isolation of CUBRID (3). A dirty, non-repeatable or phantom read may occur for the tuple, but repeatable read is ensured for the table.
TRAN_REP_CLASS_COMMIT_INSTANCE | A relatively low isolation level (4). A dirty read does not occur, but non-repeatable or phantom read may.
TRAN_REP_CLASS_REP_INSTANCE | A relatively high isolation level (5). A dirty or non-repeatable read does not occur, but a phantom read may.
TRAN_SERIALIZABLE | The highest isolation level (6). Problems concerning concurrency (e.g. dirty read, non-repeatable read, phantom read, etc.) do not occur.

The following constants can be used when getting schema information. They can be passed to cubrid_schema().

CUBRID schema flags
Constant | Description
CUBRID_SCH_CLASS | Get name and type of table in CUBRID.
CUBRID_SCH_VCLASS | Get name and type of view in CUBRID.
CUBRID_SCH_QUERY_SPEC | Get the query definition of view.
CUBRID_SCH_ATTRIBUTE | Get the attributes of table column.
CUBRID_SCH_CLASS_ATTRIBUTE | Get the attributes of table.
CUBRID_SCH_METHOD | Get the instance method. The instance method is a method called by a class instance. It is used more often than the class method because most operations are executed in the instance.
CUBRID_SCH_CLASS_METHOD | Get the class method. The class method is a method called by a class object. It is usually used to create a new class instance or to initialize it. It is also used to access or update class attributes.
CUBRID_SCH_METHOD_FILE | Get the information of the file where the method of the table is defined.
CUBRID_SCH_SUPERCLASS | Get the name and type of table which table inherites attributes from.
CUBRID_SCH_SUBCLASS | Get the name and type of table which inherites attributes from this table.
CUBRID_SCH_CONSTRAINT | Get the table constraints.
CUBRID_SCH_TRIGGER | Get the table triggers.
CUBRID_SCH_CLASS_PRIVILEGE | Get the privilege information of table.
CUBRID_SCH_ATTR_PRIVILEGE | Get the privilege information of column.
CUBRID_SCH_DIRECT_SUPER_CLASS | Get the direct super table of table.
CUBRID_SCH_PRIMARY_KEY | Get the table primary key.
CUBRID_SCH_IMPORTED_KEYS | Get imported keys of table.
CUBRID_SCH_EXPORTED_KEYS | Get exported keys of table.
CUBRID_SCH_CROSS_REFERENCE | Get reference relationship of tow tables.

The following constants can be used when reporting errors. 在报告错误的时候，下列常量可能被用到。它们可能由cubrid_error_code_facility()返回。

CUBRID 错误功能代码
常量 | 说明
CUBRID_FACILITY_DBMS | The error occurred in CUBRID dbms.
CUBRID_FACILITY_CAS | The error occurred in CUBRID broker cas.
CUBRID_FACILITY_CCI | The error occurred in CUBRID cci.
CUBRID_FACILITY_CLIENT | The error occurred in CUBRID PHP client.

资源类型
范例
CUBRID


范例

下面是一个在PHP和CUBRID建立连接的简单的例子。本节将覆盖最基本和最显著的特性。下面的代码需要连接CUBRID数据库，这意味着 CUBRID服务和 CUBRID Broker已经运行。

下面用demodb数据库作为例子举例。默认在安装时就创建了。确认此数据库已经被创建。

Example #1 数据查询的例子

<html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=euc-kr">
    </head>
    <body>
    <center>
    <table border=2>
    <?php
        /**
         * Set server information for CUBRID connection. host_ip is the IP
         * address where the CUBRID Broker is installed (localhost in this
         * example), and host_port is the port number of the CUBRID Broker.
         * The port number is the default given during the installation.
         * For details, see "Administrator's Guide."
         */
        $host_ip = "localhost";
        $host_port = 33000;
        $db_name = "demodb";
        /**
         * Connect to CUBRID Server. Do not make the actual connection, but
         * only retain the connection information. The reason for not making
         * the actual connection is to handle transaction more efficiently
         * in the 3-tier architecture.
         */
        $cubrid_con = @cubrid_connect($host_ip, $host_port, $db_name);

        if (!$cubrid_con) {
            echo "Database Connection Error";
            exit;
        }
    ?>
    <?php
        $sql = "select sports, count(players) as players from event group by sports";
        /**
         * Request the CUBRID Server for the results of the SQL statement.
         * Now make the actual connection to the CUBRID Server.
         */
        $result = cubrid_execute($cubrid_con, $sql);

        if ($result) {
            /**
             * Get the column names from the result set created by the SQL query.
             */
            $columns = cubrid_column_names($result);
            /**
             * Get the number of columns in the result set created by the SQL query.
             */
            $num_fields = cubrid_num_cols($result);
            /**
             * List the column names of the result set on the screen.
             */
            echo("<tr>");

            while (list($key, $colname) = each($columns)) {
                echo("<td align=center>$colname</td>");
            }

            echo("</tr>");

            /**
             * Get the results from the result set.
             */
            while ($row = cubrid_fetch($result)) {
                echo("<tr>");

                for ($i = 0; $i < $num_fields; $i++) {
                    echo("<td align=center>");
                    echo($row[$i]);
                    echo("</td>");
                }

                echo("</tr>");
            }
        }
        /**
         * The PHP module in the CUBRID runs in a 3-tier architecture. Even when
         * calling SELECT for transaction processing, it is processed as a part
         * of the transaction. Therefore, the transaction needs to be rolled back
         * by calling commit or rollback even though SELECT was called for smooth
         * performance.
         */
        cubrid_commit($cubrid_con);
        cubrid_disconnect($cubrid_con);
    ?>
    </body>
    </html>

Example #2 数据插入的例子

<html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=euc- kr">
    </head>
    <body>
    <center>
    <table border=2>
    <?php
        /**
         * host_ip is the IP address where the CUBRID Broker is installed
         * host_port is the port number of the CUBRID Broker
         * db_name is the name of CUBRID Database
         */
        $host_ip = "localhost";
        $host_port = 33000;
        $db_name = "demodb";
        $cubrid_con = @cubrid_connect($host_ip, $host_port, $db_name);

        if (!$cubrid_con) {
            echo "Database Connection Error";
            exit;
        }
    ?>
    <?php
        $sql = "insert into olympic (host_year,host_nation,host_city,"
            . "opening_date,closing_date) values (2008, 'China', 'Beijing',"
            . "to_date('08-08-2008','mm-dd- yyyy'),to_date('08-24-2008','mm-dd-yyyy')) ;"
        $result = cubrid_execute($cubrid_con, $sql);
        if ($result) {
            /**
             * Handled successfully, so commit.
             */
            cubrid_commit($cubrid_con);
            echo("Inserted successfully ");
        } else {
            /**
             * Error occurred, so the error message is output and rollback is called.
             */
            echo(cubrid_error_msg());
            cubrid_rollback($cubrid_con);
        }
        cubrid_disconnect($cubrid_con);
    ?>
    </body>
    </html>
预定义常量
CUBRID 函数
CUBRID


CUBRID 函数

Table of Contents

  • cubrid_bind — Bind variables to a prepared statement as parameters
  • cubrid_close_prepare — Close the request handle
  • cubrid_close_request — Close the request handle
  • cubrid_col_get — Get contents of collection type column using OID
  • cubrid_col_size — Get the number of elements in collection type column using OID
  • cubrid_column_names — Get the column names in result
  • cubrid_column_types — Get column types in result
  • cubrid_commit — Commit a transaction
  • cubrid_connect_with_url — Establish the environment for connecting to CUBRID server
  • cubrid_connect — Open a connection to a CUBRID Server
  • cubrid_current_oid — Get OID of the current cursor location
  • cubrid_disconnect — Close a database connection
  • cubrid_drop — Delete an instance using OID
  • cubrid_error_code_facility — Get the facility code of error
  • cubrid_error_code — Get error code for the most recent function call
  • cubrid_error_msg — Get last error message for the most recent function call
  • cubrid_execute — Execute a prepared SQL statement
  • cubrid_fetch — Fetch the next row from a result set
  • cubrid_free_result — Free the memory occupied by the result data
  • cubrid_get_autocommit — Get auto-commit mode of the connection
  • cubrid_get_charset — Return the current CUBRID connection charset
  • cubrid_get_class_name — Get the class name using OID
  • cubrid_get_client_info — Return the client library version
  • cubrid_get_db_parameter — Returns the CUBRID database parameters
  • cubrid_get_query_timeout — Get the query timeout value of the request
  • cubrid_get_server_info — Return the CUBRID server version
  • cubrid_get — Get a column using OID
  • cubrid_insert_id — Return the ID generated for the last updated AUTO_INCREMENT column
  • cubrid_is_instance — Check whether the instance pointed by OID exists
  • cubrid_lob_close — Close BLOB/CLOB data
  • cubrid_lob_export — Export BLOB/CLOB data to file
  • cubrid_lob_get — Get BLOB/CLOB data
  • cubrid_lob_send — Read BLOB/CLOB data and send straight to browser
  • cubrid_lob_size — Get BLOB/CLOB data size
  • cubrid_lob2_bind — Bind a lob object or a string as a lob object to a prepared statement as parameters.
  • cubrid_lob2_close — Close LOB object.
  • cubrid_lob2_export — Export the lob object to a file.
  • cubrid_lob2_import — Import BLOB/CLOB data from a file.
  • cubrid_lob2_new — Create a lob object.
  • cubrid_lob2_read — Read from BLOB/CLOB data.
  • cubrid_lob2_seek64 — Move the cursor of a lob object.
  • cubrid_lob2_seek — Move the cursor of a lob object.
  • cubrid_lob2_size64 — Get a lob object's size.
  • cubrid_lob2_size — Get a lob object's size.
  • cubrid_lob2_tell64 — Tell the cursor position of the LOB object.
  • cubrid_lob2_tell — Tell the cursor position of the LOB object.
  • cubrid_lob2_write — Write to a lob object.
  • cubrid_lock_read — Set a read lock on the given OID
  • cubrid_lock_write — Set a write lock on the given OID
  • cubrid_move_cursor — Move the cursor in the result
  • cubrid_next_result — Get result of next query when executing multiple SQL statements
  • cubrid_num_cols — Return the number of columns in the result set
  • cubrid_num_rows — Get the number of rows in the result set
  • cubrid_pconnect_with_url — Open a persistent connection to CUBRID server
  • cubrid_pconnect — Open a persistent connection to a CUBRID server
  • cubrid_prepare — Prepare a SQL statement for execution
  • cubrid_put — Update a column using OID
  • cubrid_rollback — Roll back a transaction
  • cubrid_schema — Get the requested schema information
  • cubrid_seq_drop — Delete an element from sequence type column using OID
  • cubrid_seq_insert — Insert an element to a sequence type column using OID
  • cubrid_seq_put — Update the element value of sequence type column using OID
  • cubrid_set_add — Insert a single element to set type column using OID
  • cubrid_set_autocommit — Set autocommit mode of the connection
  • cubrid_set_db_parameter — Sets the CUBRID database parameters
  • cubrid_set_drop — Delete an element from set type column using OID
  • cubrid_set_query_timeout — Set the timeout time of query execution
  • cubrid_version — Get the CUBRID PHP module's version
范例
cubrid_bind
CUBRID


Bind variables to a prepared statement as parameters

CUBRID 函数
cubrid_close_prepare
CUBRID 函数
PHP Manual

cubrid_bind

(PECL CUBRID >= 8.3.0)

cubrid_bind — Bind variables to a prepared statement as parameters

说明

bool cubrid_bind ( resource $req_identifier , int $bind_index , mixed $bind_value [, string $bind_value_type ] )

The cubrid_bind() function is used to bind values to a corresponding named or question mark placeholder in the SQL statement that was passed to cubrid_prepare(). If bind_value_type is not given, string will be the default.

Note:

If the type of data to be bound is BLOB/CLOB, CUBRID will try to map the data as a PHP stream. If the actually bind value type is not stream, CUBRID will convert it to string, and use it as the full path and file name of a file on the client filesystem.

If the type of data to be bound explicitly is ENUM, the $bind_value argument should be the enum element which is in string format.

In CUBRID shard envrioment, the $bind_value_type must be included in the cubrid_bind function.

The following table shows the types of substitute values.

CUBRID Bind Date Types
Support | Bind Type | Corresponding SQL Type
Supported | STRING | CHAR, VARCHAR
 | NCHAR | NCHAR, NVARCHAR
 | BIT | BIT, VARBIT
 | NUMERIC or NUMBER | SHORT, INT, NUMERIC
 | FLOAT | FLOAT
 | DOUBLE | DOUBLE
 | TIME | TIME
 | DATE | DATE
 | TIMESTAMP | TIMESTAMP
 | OBJECT | OBJECT
 | ENUM | ENUM
 | BLOB | BLOB
 | CLOB | CLOB
 | NULL | NULL
Not supported | SET | SET
 | MULTISET | MULTISET
 | SEQUENCE | SEQUENCE

参数

req_identifier

Request identifier as a result of cubrid_prepare().

bind_index

Location of binding parameters. It starts with 1.

bind_value

Actual value for binding.

bind_value_type

A type of the value to bind. (It is omitted by default. Thus, the system internally uses string by default. However, you need to specify the exact type of the value as an argument when they are NCHAR, BIT, or BLOB/CLOB).

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

更新日志

版本 | 说明
8.3.1 | Added BLOB/CLOB data types support.

范例

Example #1 cubrid_bind() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");

$result = cubrid_execute($conn, "SELECT code FROM event WHERE sports='Basketball' and gender='M'");
$row = cubrid_fetch_array($result, CUBRID_ASSOC);
$event_code = $row["code"];

cubrid_close_request($result);

$game_req = cubrid_prepare($conn, "SELECT athlete_code FROM game WHERE host_year=1992 and event_code=? and nation_code='USA'");
cubrid_bind($game_req, 1, $event_code, "number");
cubrid_execute($game_req);

printf("--- Dream Team (1992 United States men's Olympic basketball team) ---\n");
while ($athlete_code = cubrid_fetch_array($game_req, CUBRID_NUM)) {
    $athlete_req = cubrid_prepare($conn, "SELECT name FROM athlete WHERE code=? AND nation_code='USA' AND event='Basketball' AND gender='M'");
    cubrid_bind($athlete_req, 1, $athlete_code[0], "number");
    cubrid_execute($athlete_req);
    $row = cubrid_fetch_assoc($athlete_req);
    printf("%s\n", $row["name"]);
}

cubrid_close_request($game_req);
cubrid_close_request($athlete_req);

cubrid_disconnect($conn);
?>

以上例程会输出：

--- Dream Team (1992 United States men's Olympic basketball team) ---
Stockton John
Robinson David
Pippen Scottie
Mullin C.
Malone Karl
Laettner C.
Jordan Michael
Johnson Earvin
Ewing Patrick
Drexler Clyde
Bird Larry
Barkley Charles

Example #2 cubrid_bind() BLOB/CLOB example

<?php
$con = cubrid_connect("localhost", 33000, "demodb", "dba", "");
if ($con) {
    cubrid_execute($con,"DROP TABLE if exists php_cubrid_lob_test");
    cubrid_execute($con,"CREATE TABLE php_cubrid_lob_test (doc_content CLOB)");
    $sql = "INSERT INTO php_cubrid_lob_test(doc_content) VALUES(?)";
    $req = cubrid_prepare($con, $sql);

    $fp = fopen("book.txt", "rb");

    cubrid_bind($req, 1, $fp, "clob");
    cubrid_execute($req);
}
?>

Example #3 cubrid_bind() BLOB/CLOB example

<?php
$con = cubrid_connect("localhost", 33000, "demodb", "dba", "");
if ($con) {
    cubrid_execute($con,"DROP TABLE if exists php_cubrid_lob_test");
    cubrid_execute($con,"CREATE TABLE php_cubrid_lob_test (image BLOB)");
    $sql = "INSERT INTO php_cubrid_lob_test(image) VALUES(?)";
    $req = cubrid_prepare($con, $sql);

    cubrid_bind($req, 1, "cubrid_logo.png", "blob");
    cubrid_execute($req);
}
?>

参见

  • cubrid_execute() - Execute a prepared SQL statement
  • cubrid_prepare() - Prepare a SQL statement for execution

CUBRID 函数
cubrid_close_prepare
CUBRID 函数


Close the request handle

cubrid_bind
cubrid_close_request
CUBRID 函数
PHP Manual

cubrid_close_prepare

(PECL CUBRID >= 8.3.0)

cubrid_close_prepare — Close the request handle

说明

bool cubrid_close_prepare ( resource $req_identifier )

The cubrid_close_prepare() function closes the request handle given by the req_identifier argument, and releases the memory region related to the handle. It is an alias of cubrid_close_request().

参数

req_identifier

Request identifier.

返回值

Return TRUE on success.

范例

Example #1 cubrid_close_prepare() example

<?php
$con = cubrid_connect ("localhost", 33000, "demodb", "dba", "");
if ($con) {
   echo "connected successfully";
   $req = cubrid_execute ( $con, "select * from members",
                           CUBRID_INCLUDE_OID | CUBRID_ASYNC);
   if ($req) {
      while ( list ($id, $name) = cubrid_fetch ($req) ){
         echo $id;
         echo $name;
      }
      cubrid_close_prepare($req); // or you can use cubrid_close_request($req)
   }
   cubrid_disconnect($con);
}
?>

参见

  • cubrid_close_request() - Close the request handle

cubrid_bind
cubrid_close_request
CUBRID 函数


Close the request handle

cubrid_close_prepare
cubrid_col_get
CUBRID 函数
PHP Manual

cubrid_close_request

(PECL CUBRID >= 8.3.0)

cubrid_close_request — Close the request handle

说明

bool cubrid_close_request ( resource $req_identifier )

The cubrid_close_request() function closes the request handle given by the req_identifier argument, and releases the memory region related to the handle. It is an alias of cubrid_close_prepare().

参数

req_identifier

Request identifier.

返回值

Return TRUE on success.

范例

Example #1 cubrid_close_request() example

<?php
$con = cubrid_connect ("localhost", 33000, "demodb", "dba", "");
if ($con) {
   echo "connected successfully";
   $req = cubrid_execute ( $con, "select * from members",
                           CUBRID_INCLUDE_OID | CUBRID_ASYNC);
   if ($req) {
      while ( list ($id, $name) = cubrid_fetch ($req) ){
         echo $id;
         echo $name;
      }
      cubrid_close_request($req); // or you can use cubrid_close_prepare($req)
   }
   cubrid_disconnect($con);
}
?>

参见

  • cubrid_close_prepare() - Close the request handle

cubrid_close_prepare
cubrid_col_get
CUBRID 函数


Get contents of collection type column using OID

cubrid_close_request
cubrid_col_size
CUBRID 函数
PHP Manual

cubrid_col_get

(PECL CUBRID >= 8.3.0)

cubrid_col_get — Get contents of collection type column using OID

说明

array cubrid_col_get ( resource $conn_identifier , string $oid , string $attr_name )

The cubrid_col_get() function is used to get contents of the elements of the collection type (set, multiset, sequence) attribute you requested as an array.

参数

conn_identifier

Connection identifier.

oid

OID of the instance that you want to read.

attr_name

Attribute name that you want to read from the instance.

返回值

Array (0-based numerical array) containing the elements you requested, when process is successful;

FALSE (to distinguish the error from the situation of attribute having empty collection or NULL, in case of error, a warning message is shown; in such case you can check the error by using cubrid_error_code()), when process is unsuccessful.

范例

Example #1 cubrid_col_get() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");

@cubrid_execute($conn, "DROP TABLE foo");
cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c list(int), d char(10))");
cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");

$req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
$oid = cubrid_current_oid($req);

$attr = cubrid_col_get($conn, $oid, "b");
var_dump($attr);

$size = cubrid_col_size($conn, $oid, "b");
var_dump($size);

cubrid_close_request($req);
cubrid_disconnect($conn);
?>

以上例程会输出：

array(3) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [2]=>
  string(1) "3"
}
int(3)
cubrid_close_request
cubrid_col_size
CUBRID 函数


Get the number of elements in collection type column using OID

cubrid_col_get
cubrid_column_names
CUBRID 函数
PHP Manual

cubrid_col_size

(PECL CUBRID >= 8.3.0)

cubrid_col_size — Get the number of elements in collection type column using OID

说明

int cubrid_col_size ( resource $conn_identifier , string $oid , string $attr_name )

The cubrid_col_size() function is used to get the number of elements in a collection type (set, multiset, sequence) attribute.

参数

conn_identifier

Connection identifier.

oid

OID the instance that you want to work with.

attr_name

Name of the attribute that you want to work with.

返回值

Number of elements, when process is successful.

FALSE, when process is unsuccessful.

更新日志

版本 | 说明
8.3.1 | Change return value: when process is unsuccessful, return false, not -1.

范例

Example #1 cubrid_col_size() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");

@cubrid_execute($conn, "DROP TABLE foo");
cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c list(int), d char(10))");
cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");

$req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
$oid = cubrid_current_oid($req);

$attr = cubrid_col_get($conn, $oid, "b");
var_dump($attr);

$size = cubrid_col_size($conn, $oid, "b");
var_dump($size);

cubrid_close_request($req);
cubrid_disconnect($conn);
?>

以上例程会输出：

array(3) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [2]=>
  string(1) "3"
}
int(3)
cubrid_col_get
cubrid_column_names
CUBRID 函数


Get the column names in result

cubrid_col_size
cubrid_column_types
CUBRID 函数
PHP Manual

cubrid_column_names

(PECL CUBRID >= 8.3.0)

cubrid_column_names — Get the column names in result

说明

array cubrid_column_names ( resource $req_identifier )

The cubrid_column_names() function is used to get the column names of the query result by using req_identifier.

参数

req_identifier

Request identifier.

返回值

Array of string values containing the column names, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_column_names() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");
$result = cubrid_execute($conn, "SELECT * FROM game WHERE host_year=2004 AND nation_code='AUS' AND medal='G'");

$column_names = cubrid_column_names($result);
$column_types = cubrid_column_types($result);

printf("%-30s %-30s %-15s\n", "Column Names", "Column Types", "Column Maxlen");
for($i = 0, $size = count($column_names); $i < $size; $i++) {
    $column_len = cubrid_field_len($result, $i);
    printf("%-30s %-30s %-15s\n", $column_names[$i], $column_types[$i], $column_len);
}

cubrid_disconnect($conn);
?>

以上例程会输出：

Column Names                   Column Types                   Column Maxlen
host_year                      integer                        11
event_code                     integer                        11
athlete_code                   integer                        11
stadium_code                   integer                        11
nation_code                    char                           3
medal                          char                           1
game_date                      date                           10

参见

  • cubrid_prepare() - Prepare a SQL statement for execution
  • cubrid_execute() - Execute a prepared SQL statement
  • cubrid_column_types() - Get column types in result

cubrid_col_size
cubrid_column_types
CUBRID 函数


Get column types in result

cubrid_column_names
cubrid_commit
CUBRID 函数
PHP Manual

cubrid_column_types

(PECL CUBRID >= 8.3.0)

cubrid_column_types — Get column types in result

说明

array cubrid_column_types ( resource $req_identifier )

The cubrid_column_types() function gets column types of query results by using req_identifier.

参数

req_identifier

Request identifier.

返回值

Array of string values containing the column types, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_column_types() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");
$result = cubrid_execute($conn, "SELECT * FROM game WHERE host_year=2004 AND nation_code='AUS' AND medal='G'");

$column_names = cubrid_column_names($result);
$column_types = cubrid_column_types($result);

printf("%-30s %-30s %-15s\n", "Column Names", "Column Types", "Column Maxlen");
for($i = 0, $size = count($column_names); $i < $size; $i++) {
    $column_len = cubrid_field_len($result, $i);
    printf("%-30s %-30s %-15s\n", $column_names[$i], $column_types[$i], $column_len);
}

cubrid_disconnect($conn);
?>

以上例程会输出：

Column Names                   Column Types                   Column Maxlen
host_year                      integer                        11
event_code                     integer                        11
athlete_code                   integer                        11
stadium_code                   integer                        11
nation_code                    char                           3
medal                          char                           1
game_date                      date                           10

参见

  • cubrid_column_names() - Get the column names in result
  • cubrid_prepare() - Prepare a SQL statement for execution
  • cubrid_execute() - Execute a prepared SQL statement

cubrid_column_names
cubrid_commit
CUBRID 函数


Commit a transaction

cubrid_column_types
cubrid_connect_with_url
CUBRID 函数
PHP Manual

cubrid_commit

(PECL CUBRID >= 8.3.0)

cubrid_commit — Commit a transaction

说明

bool cubrid_commit ( resource $conn_identifier )

The cubrid_commit() function is used to execute commit on the transaction pointed by conn_identifier, currently in progress. Connection to the server is closed after the cubrid_commit() function is called; However, the connection handle is still valid.

In CUBRID PHP, auto-commit mode is disabled by default for transaction management. You can set it by using cubrid_set_autocommit(). You can get its status by using cubrid_get_autocommit(). Before you start a transaction, remember to disable the auto-commit mode.

参数

conn_identifier

Connection identifier.

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_commit() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");

@cubrid_execute($conn, "DROP TABLE publishers");

$sql = <<<EOD
CREATE TABLE publishers(
pub_id CHAR(3),
pub_name VARCHAR(20),
city VARCHAR(15),
state CHAR(2),
country VARCHAR(15)
)
EOD;
cubrid_set_autocommit($conn,false);
if (!cubrid_execute($conn, $sql)) {
    printf("Error facility: %d\nError code: %d\nError msg: %s\n", cubrid_error_code_facility(), cubrid_error_code(), cubrid_error_msg());

    cubrid_disconnect($conn);
    exit;
}

$req = cubrid_prepare($conn, "INSERT INTO publishers VALUES(?, ?, ?, ?, ?)");

$id_list = array("P01", "P02", "P03", "P04");
$name_list = array("Abatis Publishers", "Core Dump Books", "Schadenfreude Press", "Tenterhooks Press");
$city_list = array("New York", "San Francisco", "Hamburg", "Berkeley");
$state_list = array("NY", "CA", NULL, "CA");
$country_list = array("USA", "USA", "Germany", "USA");

for ($i = 0, $size = count($id_list); $i < $size; $i++) {
    cubrid_bind($req, 1, $id_list[$i]);
    cubrid_bind($req, 2, $name_list[$i]);
    cubrid_bind($req, 3, $city_list[$i]);
    cubrid_bind($req, 4, $state_list[$i]);
    cubrid_bind($req, 5, $country_list[$i]);

    if (!($ret = cubrid_execute($req))) {
        break;
    }
}

if (!$ret) {
    cubrid_rollback($conn);
} else {
    cubrid_commit($conn);

    $req = cubrid_execute($conn, "SELECT * FROM publishers");
    while ($result = cubrid_fetch_assoc($req)) {
        printf("%-3s %-20s %-15s %-3s %-15s\n",
            $result["pub_id"], $result["pub_name"], $result["city"], $result["state"], $result["country"]);
    }
}

cubrid_disconnect($conn);
?>

以上例程会输出：

P01 Abatis Publishers    New York        NY  USA
P02 Core Dump Books      San Francisco   CA  USA
P03 Schadenfreude Press  Hamburg             Germany
P04 Tenterhooks Press    Berkeley        CA  USA

参见

  • cubrid_rollback() - Roll back a transaction
  • cubrid_get_autocommit() - Get auto-commit mode of the connection
  • cubrid_set_autocommit() - Set autocommit mode of the connection

cubrid_column_types
cubrid_connect_with_url
CUBRID 函数


Establish the environment for connecting to CUBRID server

cubrid_commit
cubrid_connect
CUBRID 函数
PHP Manual

cubrid_connect_with_url

(PECL CUBRID >= 8.3.1)

cubrid_connect_with_url — Establish the environment for connecting to CUBRID server

说明

resource cubrid_connect_with_url ( string $conn_url [, string $userid [, string $passwd [, bool $new_link = false ]]] )

The cubrid_connect_with_url() function is used to establish the environment for connecting to your server by using connection information passed with an url string argument. If the HA feature is enabled in CUBRID, you must specify the connection information of the standby server, which is used for failover when failure occurs, in the url string argument of this function. If the user name and password is not given, then the "PUBLIC" connection will be made by default.

<url> ::= CUBRID:<host>:<db_name>:<db_user>:<db_password>:[?<properties>]

<properties> ::= <property> [&<property>]

<properties> ::= alhosts=<alternative_hosts>[ &rctime=<time>]

<properties> ::= login_timeout=<milli_sec>

<properties> ::= query_timeout=<milli_sec>

<properties> ::= disconnect_on_query_timeout=true|false

<alternative_hosts> ::= <standby_broker1_host>:<port> [,<standby_broker2_host>:<port>]

<host> := HOSTNAME | IP_ADDR

<time> := SECOND

<milli_sec> := MILLI SECOND

  • host : A host name or IP address of the master database
  • db_name : A name of the database
  • db_user : A name of the database user
  • db_password : A database user password
  • alhosts : Specifies the broker information of the standby server, which is used for failover when it is impossible to connect to the active server. You can specify multiple brokers for failover, and the connection to the brokers is attempted in the order listed in alhosts
  • rctime : An interval between the attempts to connect to the active broker in which failure occurred. After a failure occurs, the system connects to the broker specified by althosts (failover), terminates the transaction, and then attempts to connect to the active broker of the master database at every rctime. The default value is 600 seconds.
  • login_timeout : Timeout value (unit: msec.) for database login. The default value is 0, which means infinite postponement.
  • query_timeout : Timeout value (unit: msec.) for query request. Upon timeout, a message to cancel requesting a query transferred to server is sent. The return value can depend on the disconnect_on_query_timeout configuration; even though the message to cancel a request is sent to server, that request may succeed.
  • disconnect_on_query_timeout : Configures a value whether to immediately return an error of function being executed upon timeout. The default value is false.

Note:

? and : that are used as identifiers in PHP connection URL can't be included in the password. The following is an example of a password that is invalid to use as connection URL because it contains "?:".

$url = "CUBRID:localhost:33000:tdb:dba:12?:?login_timeout=100";

Passwords that contain ? or : may be passed as a separate parameter.

$url = "CUBRID:localhost:33000:tbd:::?login_timeout=100";

$conn = cubrid_connect_with_url($url, "dba", "12?");

If user or password is empty,you can't delete ":",the following is an example.

$url = "CUBRID:localhost:33000:demodb:::";

参数

conn_url

A character string that contains server connection information.

userid

User name for the database.

passwd

User password.

new_link

If a second call is made to cubrid_connect_with_url() with the same arguments, no new connection will be established, but instead, the connection identifier of the already opened connection will be returned. The new_link parameter modifies this behavior and makes cubrid_connect_with_url() always open a new connection, even if cubrid_connect_with_url() was called before with the same parameters.

返回值

Connection identifier, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_connect_with_url() url without properties example

<?php
$conn_url = "CUBRID:localhost:33000:demodb:dba::";
$con = cubrid_connect_with_url($conn_url);

if ($con) {
   echo "connected successfully";
   cubrid_execute($con, "create table person(id int,name char(16))");
   $req =cubrid_execute($con, "insert into person values(1,'James')");

   if ($req) {
      cubrid_close_request($req);
      cubrid_commit($con);
   } else {
      cubrid_rollback($con);
   }
   cubrid_disconnect($con);
}
?>

Example #2 cubrid_connect_with_url() url with properties example

<?php
$conn_url = "CUBRID:127.0.0.1:33000:demodb:dba::?login_timeout=100"
$con = cubrid_connect_with_url ($conn_url);

if ($con) {
   echo "connected successfully";
   cubrid_execute($con, "create table person(id int,name char(16))");
   $req =cubrid_execute($con, "insert into person values(1,'James')");

   if ($req) {
      cubrid_close_request($req);
      cubrid_commit($con);
   } else {
      cubrid_rollback($con);
   }
   cubrid_disconnect($con);
}
?>

参见

  • cubrid_connect() - Open a connection to a CUBRID Server
  • cubrid_pconnect() - Open a persistent connection to a CUBRID server
  • cubrid_pconnect_with_url() - Open a persistent connection to CUBRID server
  • cubrid_disconnect() - Close a database connection
  • cubrid_close() - Close CUBRID connection

cubrid_commit
cubrid_connect
CUBRID 函数


Open a connection to a CUBRID Server

cubrid_connect_with_url
cubrid_current_oid
CUBRID 函数
PHP Manual

cubrid_connect

(PECL CUBRID >= 8.3.1)

cubrid_connect — Open a connection to a CUBRID Server

说明

resource cubrid_connect ( string $host , int $port , string $dbname [, string $userid [, string $passwd [, bool $new_link = false ]]] )

The cubrid_connect() function is used to establish the environment for connecting to your server by using your server address, port number, database name, user name, and password. If the user name and password is not given, then the "PUBLIC" connection will be made by default.

参数

host

Host name or IP address of CUBRID CAS server.

port

Port number of CUBRID CAS server (BROKER_PORT configured in $CUBRID/conf/cubrid_broker.conf).

dbname

Name of database.

userid

User name for the database. If not given, the default value is "public".

passwd

User password. If not given, the default value is "".

new_link

If a second call is made to cubrid_connect() with the same arguments, no new connection will be established, but instead, the connection identifier of the already opened connection will be returned. The new_link parameter modifies this behavior and makes cubrid_connect() always open a new connection, even if cubrid_connect() was called before with the same parameters.

返回值

Connection identifier, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_connect() example

<?php
printf("%-30s %s\n", "CUBRID PHP Version:", cubrid_version());

printf("\n");

$conn = cubrid_connect("localhost", 33000, "demodb", "dba");

if (!$conn) {
    die('Connect Error ('. cubrid_error_code() .')' . cubrid_error_msg());
}

$db_params = cubrid_get_db_parameter($conn);

while (list($param_name, $param_value) = each($db_params)) {
    printf("%-30s %s\n", $param_name, $param_value);
}

printf("\n");

$server_info = cubrid_get_server_info($conn);
$client_info = cubrid_get_client_info();

printf("%-30s %s\n", "Server Info:", $server_info);
printf("%-30s %s\n", "Client Info:", $client_info);

printf("\n");

$charset = cubrid_get_charset($conn);

printf("%-30s %s\n", "CUBRID Charset:", $charset);

cubrid_disconnect($conn);
?>

以上例程会输出：

CUBRID PHP Version:            9.1.0.0001

PARAM_ISOLATION_LEVEL          3
LOCK_TIMEOUT                   -1
MAX_STRING_LENGTH              1073741823
PARAM_AUTO_COMMIT              1

Server Info:                   9.1.0.0212
Client Info:                   9.1.0

CUBRID Charset:                iso8859-1

参见

  • cubrid_pconnect() - Open a persistent connection to a CUBRID server
  • cubrid_connect_with_url() - Establish the environment for connecting to CUBRID server
  • cubrid_pconnect_with_url() - Open a persistent connection to CUBRID server
  • cubrid_disconnect() - Close a database connection
  • cubrid_close() - Close CUBRID connection

cubrid_connect_with_url
cubrid_current_oid
CUBRID 函数


Get OID of the current cursor location

cubrid_connect
cubrid_disconnect
CUBRID 函数
PHP Manual

cubrid_current_oid

(PECL CUBRID >= 8.3.0)

cubrid_current_oid — Get OID of the current cursor location

说明

string cubrid_current_oid ( resource $req_identifier )

The cubrid_current_oid() function is used to get the oid of the current cursor location from the query result. To use cubrid_current_oid(), the query executed must be a updatable query, and the CUBRID_INCLUDE_OID option must be included during the query execution.

参数

req_identifier

Request identifier.

返回值

Oid of current cursor location, when process is successful

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_current_oid() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");

$req = cubrid_execute($conn, "SELECT * FROM code", CUBRID_INCLUDE_OID);
$oid = cubrid_current_oid($req);
$res = cubrid_get($conn, $oid);

print_r($res);

cubrid_disconnect($conn);
?>

以上例程会输出：

Array
(
    [s_name] => X
    [f_name] => Mixed
)

参见

  • cubrid_execute() - Execute a prepared SQL statement

cubrid_connect
cubrid_disconnect
CUBRID 函数


Close a database connection

cubrid_current_oid
cubrid_drop
CUBRID 函数
PHP Manual

cubrid_disconnect

(PECL CUBRID >= 8.3.0)

cubrid_disconnect — Close a database connection

说明

bool cubrid_disconnect ([ resource $conn_identifier ] )

The cubrid_disconnect() function closes the connection handle and disconnects from server. If any request handle is not closed at this point, it will be closed. It is similar to the CUBRID MySQL compatible function cubrid_close().

参数

conn_identifier

Connection identifier.

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_disconnect() example

<?php
$con = cubrid_connect ("localhost", 33000, "demodb");
if ($con) {
   echo "connected successfully";

   $req = cubrid_execute( $con, "create table person(id int,name char(10))");
   if ($req) {
      cubrid_close_request($req);
      cubrid_commit($con);
   } else {
      cubrid_rollback($con);
   }

   $req = cubrid_execute( $con, "insert into person values(1,'James')");
   if ($req) {
      cubrid_close_request($req);
      cubrid_commit($con);
   } else {
      cubrid_rollback($con);
   }
   cubrid_disconnect($con);
}
?>

参见

  • cubrid_close() - Close CUBRID connection
  • cubrid_connect() - Open a connection to a CUBRID Server
  • cubrid_connect_with_url() - Establish the environment for connecting to CUBRID server

cubrid_current_oid
cubrid_drop
CUBRID 函数


Delete an instance using OID

cubrid_disconnect
cubrid_error_code_facility
CUBRID 函数
PHP Manual

cubrid_drop

(PECL CUBRID >= 8.3.0)

cubrid_drop — Delete an instance using OID

说明

bool cubrid_drop ( resource $conn_identifier , string $oid )

The cubrid_drop() function is used to delete an instance from database by using the oid of the instance.

参数

conn_identifier

Connection identifier.

oid

Oid of the instance that you want to delete.

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_drop() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");

@cubrid_execute($conn, "DROP TABLE foo");
cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c list(int), d char(10))");
cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");
cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(2, {4,5,7}, {44,55,66,666}, 'b')");

$req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
$oid = cubrid_current_oid($req);

printf("--- Before Drop: ---\n");
$attr = cubrid_get($conn, $oid);
var_dump($attr);

if (cubrid_drop($conn, $oid)) {
    cubrid_commit($conn);
} else {
    cubrid_rollback($conn);
}

cubrid_close_request($req);

$req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
$oid = cubrid_current_oid($req);

printf("\n--- After Drop: ---\n");
$attr = cubrid_get($conn, $oid);
var_dump($attr);

cubrid_close_request($req);
cubrid_disconnect($conn);
?>

以上例程会输出：

--- Before Drop: ---
array(4) {
  ["a"]=>
  string(1) "1"
  ["b"]=>
  array(3) {
    [0]=>
    string(1) "1"
    [1]=>
    string(1) "2"
    [2]=>
    string(1) "3"
  }
  ["c"]=>
  array(4) {
    [0]=>
    string(2) "11"
    [1]=>
    string(2) "22"
    [2]=>
    string(2) "33"
    [3]=>
    string(3) "333"
  }
  ["d"]=>
  string(10) "a         "
}

--- After Drop: ---
array(4) {
  ["a"]=>
  string(1) "2"
  ["b"]=>
  array(3) {
    [0]=>
    string(1) "4"
    [1]=>
    string(1) "5"
    [2]=>
    string(1) "7"
  }
  ["c"]=>
  array(4) {
    [0]=>
    string(2) "44"
    [1]=>
    string(2) "55"
    [2]=>
    string(2) "66"
    [3]=>
    string(3) "666"
  }
  ["d"]=>
  string(10) "b         "
}

参见

  • cubrid_is_instance() - Check whether the instance pointed by OID exists

cubrid_disconnect
cubrid_error_code_facility
CUBRID 函数


Get the facility code of error

cubrid_drop
cubrid_error_code
CUBRID 函数
PHP Manual

cubrid_error_code_facility

(PECL CUBRID >= 8.3.0)

cubrid_error_code_facility — Get the facility code of error

说明

int cubrid_error_code_facility ( void )

The cubrid_error_code_facility() function is used to get the facility code (level in which the error occurred) from the error code of the error that occurred during the API execution. Usually, you can get the error code when API returns false as its return value.

参数

此函数没有参数。

返回值

Facility code of the error code that occurred: CUBRID_FACILITY_DBMS, CUBRID_FACILITY_CAS, CUBRID_FACILITY_CCI, CUBRID_FACILITY_CLIENT

范例

Example #1 cubrid_error_code_facility() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");
$req = @cubrid_execute($conn, "SELECT * FROM unknown");
if (!$req) {
    printf("Error facility: %d\nError code: %d\nError msg: %s\n",
        cubrid_error_code_facility(), cubrid_error_code(), cubrid_error_msg());

    cubrid_disconnect($conn);
    exit;
}
?>

以上例程会输出：

Error facility: 1
Error code: -493
Error msg: Syntax: In line 1, column 15 before END OF STATEMENT
Syntax error: unexpected 'unknown'

参见

  • cubrid_error_code() - Get error code for the most recent function call
  • cubrid_error_msg() - Get last error message for the most recent function call

cubrid_drop
cubrid_error_code
CUBRID 函数


Get error code for the most recent function call

cubrid_error_code_facility
cubrid_error_msg
CUBRID 函数
PHP Manual

cubrid_error_code

(PECL CUBRID >= 8.3.0)

cubrid_error_code — Get error code for the most recent function call

说明

int cubrid_error_code ( void )

The cubrid_error_code() function is used to get the error code of the error that occurred during the API execution. Usually, it gets the error code when API returns false as its return value.

参数

此函数没有参数。

返回值

Error code of the error that occurred, or 0 (zero) if no error occurred.

范例

Example #1 cubrid_error_code() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");
$req = cubrid_prepare($conn , "SELECT * FROM code WHERE s_name=?");

$req = @cubrid_execute($req);
if (!$req) {
    printf("Error facility: %d\nError code: %d\nError msg: %s\n",
        cubrid_error_code_facility(), cubrid_error_code(), cubrid_error_msg());

    cubrid_disconnect($conn);
    exit;
}
?>

以上例程会输出：

Error facility: 4
Error code: -30015
Error msg: Some parameter not binded

参见

  • cubrid_error_code_facility() - Get the facility code of error
  • cubrid_error_msg() - Get last error message for the most recent function call

cubrid_error_code_facility
cubrid_error_msg
CUBRID 函数


Get last error message for the most recent function call

cubrid_error_code
cubrid_execute
CUBRID 函数
PHP Manual

cubrid_error_msg

(PECL CUBRID >= 8.3.0)

cubrid_error_msg — Get last error message for the most recent function call

说明

string cubrid_error_msg ( void )

The cubrid_error_msg() function is used to get the error message that occurred during the use of CUBRID API. Usually, it gets error message when API returns false as its return value.

参数

此函数没有参数。

返回值

Error message that occurred.

范例

Example #1 cubrid_error_msg() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");

if (!@cubrid_schema($conn, 100000)) {
    printf("Error facility: %d\nError code: %d\nError msg: %s\n",
        cubrid_error_code_facility(), cubrid_error_code(), cubrid_error_msg());

    cubrid_disconnect($conn);
    exit;
}
?>

以上例程会输出：

Error facility: 2
Error code: -10015
Error msg: Invalid T_CCI_SCH_TYPE value

参见

  • cubrid_error_code() - Get error code for the most recent function call
  • cubrid_error_code_facility() - Get the facility code of error

cubrid_error_code
cubrid_execute
CUBRID 函数


Execute a prepared SQL statement

cubrid_error_msg
cubrid_fetch
CUBRID 函数
PHP Manual

cubrid_execute

(PECL CUBRID >= 8.3.0)

cubrid_execute — Execute a prepared SQL statement

说明

resource cubrid_execute ( resource $conn_identifier , string $sql [, int $option ] )
bool cubrid_execute ( resource $request_identifier [, int $option ] )

The cubrid_execute() function is used to execute the given SQL statement. It executes the query by using conn_identifier and SQL, and then returns the request identifier created. It is used for simple execution of query, where the parameter binding is not needed. In addition, the cubrid_execute() function is used to execute the prepared statement by means of cubrid_prepare() and cubrid_bind(). At this time, you need to specify arguments of request_identifier and option.

The option is used to determine whether to get OID after query execution and whether to execute the query in synchronous or asynchronous mode. CUBRID_INCLUDE_OID and CUBRID_ASYNC (or CUBRID_EXEC_QUERY_ALL if you want to execute multiple SQL statements) can be specified by using a bitwise OR operator. If not specified, neither of them isselected. If the flag CUBRID_EXEC_QUERY_ALL is set, a synchronous mode (sync_mode) is used to retrieve query results, and in such cases the following rules are applied:

  • The return value is the result of the first query.
  • If an error occurs in any query, the execution is processed as a failure.
  • In a query composed of q1 q2 q3, if an error occurs in q2 after q1 succeeds the execution, the result of q1 remains valid. That is, the previous successful query executions are not rolled back when an error occurs.
  • If a query is executed successfully, the result of the second query can be obtained using cubrid_next_result().

If the first argument is request_identifier to execute the cubrid_prepare() function, you can specify an option, CUBRID_ASYNC only.

参数

conn_identifier

Connection identifier.

sql

SQL to be executed.

option

Query execution option CUBRID_INCLUDE_OID, CUBRID_ASYNC, CUBRID_EXEC_QUERY_ALL.

request_identifier

cubrid_prepare() identifier.

返回值

Request identifier, when process is successful and first param is conn_identifier; TRUE, when process is successful and first argument is request_identifier.

FALSE, when process is unsuccessful.

更新日志

版本 | 说明
8.4.0 | Add new option CUBRID_EXEC_QUERY_ALL.

范例

Example #1 cubrid_execute() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");

$result = cubrid_execute($conn, "SELECT code FROM event WHERE name='100m Butterfly' and gender='M'", CUBRID_ASYNC);
$row = cubrid_fetch_array($result, CUBRID_ASSOC);
$event_code = $row["code"];

cubrid_close_request($result);

$history_req = cubrid_prepare($conn, "SELECT * FROM history WHERE event_code=?");
cubrid_bind($history_req, 1, $event_code, "number");
cubrid_execute($history_req);

printf("%-20s %-9s %-10s %-5s\n", "athlete", "host_year", "score", "unit");
while ($row = cubrid_fetch_array($history_req, CUBRID_ASSOC)) {
    printf("%-20s %-9s %-10s %-5s\n",
        $row["athlete"], $row["host_year"], $row["score"], $row["unit"]);
}

cubrid_close_request($history_req);

cubrid_disconnect($conn);
?>

以上例程会输出：

athlete              host_year score      unit
Phelps Michael       2004      51.25      time

参见

  • cubrid_prepare() - Prepare a SQL statement for execution
  • cubrid_bind() - Bind variables to a prepared statement as parameters
  • cubrid_next_result() - Get result of next query when executing multiple SQL statements
  • cubrid_close_request() - Close the request handle
  • cubrid_commit() - Commit a transaction
  • cubrid_rollback() - Roll back a transaction

cubrid_error_msg
cubrid_fetch
CUBRID 函数


Fetch the next row from a result set

cubrid_execute
cubrid_free_result
CUBRID 函数
PHP Manual

cubrid_fetch

(PECL CUBRID >= 8.3.0)

cubrid_fetch — Fetch the next row from a result set

说明

mixed cubrid_fetch ( resource $result [, int $type = CUBRID_BOTH ] )

The cubrid_fetch() function is used to get a single row from the query result. The cursor automatically moves to the next row after getting the result.

参数

result

result comes from a call to cubrid_execute()

type

Array type of the fetched result CUBRID_NUM, CUBRID_ASSOC, CUBRID_BOTH, CUBRID_OBJECT. If you want to operate the lob object, you can use CUBRID_LOB.

返回值

Result array or object, when process is successful.

FALSE, when there are no more rows; NULL, when process is unsuccessful.

The result can be received either as an array or as an object, and you can decide which data type to use by setting the type argument. The type variable can be set to one of the following values:

  • CUBRID_NUM : Numerical array (0-based)
  • CUBRID_ASSOC : Associative array
  • CUBRID_BOTH : Numerical & Associative array (default)
  • CUBRID_OBJECT : object that has the attribute name as the column name of query result

When type argument is omitted, the result will be received using CUBRID_BOTH option as default. When you want to receive query result in object data type, the column name of the result must obey the naming rules for identifiers in PHP. For example, column name such as "count(*)" cannot be received in object type.

范例

Example #1 cubrid_fetch() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");
$req = cubrid_execute($conn, "SELECT * FROM stadium WHERE nation_code='GRE' AND seats > 10000");

printf("%-40s %-10s %-6s %-20s\n", "name", "area", "seats", "address");
while ($row = cubrid_fetch($req)) {
    printf("%-40s %-10s %-6s %-20s\n",
        $row["name"], $row["area"], $row["seats"], $row["address"]);
}

// if you want to operate lob object, you can use cubrid_fetch($req, CUBRID_LOB)

cubrid_close_request($req);

cubrid_disconnect($conn);
?>

以上例程会输出：

name                                     area       seats  address
Panathinaiko Stadium                     86300.00   50000  Athens, Greece
Olympic Stadium                          54700.00   13000  Athens, Greece
Olympic Indoor Hall                      34100.00   18800  Athens, Greece
Olympic Hall                             52400.00   21000  Athens, Greece
Olympic Aquatic Centre                   42500.00   11500  Athens, Greece
Markopoulo Olympic Equestrian Centre     64000.00   15000  Markopoulo, Athens, Greece
Faliro Coastal Zone Olympic Complex      34650.00   12171  Faliro, Athens, Greece
Athens Olympic Stadium                   120400.00  71030  Maroussi, Athens, Greece
Ano Liossia                              34000.00   12000  Ano Liosia, Athens, Greece

参见

  • cubrid_execute() - Execute a prepared SQL statement
  • cubrid_fetch_array() - Fetch a result row as an associative array, a numeric array, or both
  • cubrid_fetch_row() - Return a numerical array with the values of the current row
  • cubrid_fetch_assoc() - Return the associative array that corresponds to the fetched row
  • cubrid_fetch_object() - Fetch the next row and return it as an object

cubrid_execute
cubrid_free_result
CUBRID 函数


Free the memory occupied by the result data

cubrid_fetch
cubrid_get_autocommit
CUBRID 函数
PHP Manual

cubrid_free_result

(PECL CUBRID >= 8.3.0)

cubrid_free_result — Free the memory occupied by the result data

说明

bool cubrid_free_result ( resource $req_identifier )

This function frees the memory occupied by the result data. It returns TRUE on success or FALSE on failure. Note that it can only frees the client fetch buffer now, and if you want free all memory, use function cubrid_close_request().

参数

req_identifier

This is the request identifier.

返回值

TRUE on success.

FALSE on failure.

范例

Example #1 cubrid_free_result() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");

$req = cubrid_execute($conn, "SELECT * FROM history WHERE host_year=2004 ORDER BY event_code");
$row = cubrid_fetch_assoc($req);
var_dump($row);

cubrid_free_result($req);
cubrid_close_request($req);
cubrid_disconnect($conn);
?>

以上例程会输出：

array(5) {
  ["event_code"]=>
  string(5) "20005"
  ["athlete"]=>
  string(12) "Hayes Joanna"
  ["host_year"]=>
  string(4) "2004"
  ["score"]=>
  string(5) "12.37"
  ["unit"]=>
  string(4) "time"
}
cubrid_fetch
cubrid_get_autocommit
CUBRID 函数


Get auto-commit mode of the connection

cubrid_free_result
cubrid_get_charset
CUBRID 函数
PHP Manual

cubrid_get_autocommit

(PECL CUBRID >= 8.4.0)

cubrid_get_autocommit — Get auto-commit mode of the connection

说明

bool cubrid_get_autocommit ( resource $conn_identifier )

The cubrid_get_autocommit() function is used to get the status of CUBRID database connection auto-commit mode.

For CUBRID 8.4.0, auto-commit mode is disabled by default for transaction management.

For CUBRID 8.4.1, auto-commit mode is enabled by default for transaction management.

参数

conn_identifier

Connection identifier.

返回值

TRUE, when auto-commit is on.

FALSE, when auto-commit is off.

NULL on error.

参见

  • cubrid_set_autocommit() - Set autocommit mode of the connection
  • cubrid_commit() - Commit a transaction

cubrid_free_result
cubrid_get_charset
CUBRID 函数


Return the current CUBRID connection charset

cubrid_get_autocommit
cubrid_get_class_name
CUBRID 函数
PHP Manual

cubrid_get_charset

(PECL CUBRID >= 8.3.0)

cubrid_get_charset — Return the current CUBRID connection charset

说明

string cubrid_get_charset ( resource $conn_identifier )

This function returns the current CUBRID connection charset and is similar to the CUBRID MySQL compatible function cubrid_client_encoding().

参数

conn_identifier

The CUBRID connection.

返回值

A string that represents the CUBRID connection charset; on success.

FALSE on failure.

范例

Example #1 cubrid_get_charset() example

<?php

$con = cubrid_connect("localhost", 33000, "demodb");
if (!$con)
{
    die('Could not connect.');
}

printf("CUBRID current charset: %s\n", cubrid_get_charset($con));

?>

以上例程会输出：

CUBRID current charset: iso8859-1

参见

  • cubrid_client_encoding() - Return the current CUBRID connection charset

cubrid_get_autocommit
cubrid_get_class_name
CUBRID 函数


Get the class name using OID

cubrid_get_charset
cubrid_get_client_info
CUBRID 函数
PHP Manual

cubrid_get_class_name

(PECL CUBRID >= 8.3.0)

cubrid_get_class_name — Get the class name using OID

说明

string cubrid_get_class_name ( resource $conn_identifier , string $oid )

The cubrid_get_class_name() function is used to get the class name from oid. It doesn't work when selecting data from the system tables, for example db_class.

参数

conn_identifier

Connection identifier.

oid

OID of the instance that you want to check the existence.

返回值

Class name when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_get_class_name() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");

$req = cubrid_execute($conn, "SELECT * FROM code", CUBRID_INCLUDE_OID);
$oid = cubrid_current_oid($req);
$class_name = cubrid_get_class_name($conn, $oid);

print_r($class_name);

cubrid_disconnect($conn);
?>

以上例程会输出：

code

参见

  • cubrid_is_instance() - Check whether the instance pointed by OID exists
  • cubrid_drop() - Delete an instance using OID

cubrid_get_charset
cubrid_get_client_info
CUBRID 函数


Return the client library version

cubrid_get_class_name
cubrid_get_db_parameter
CUBRID 函数
PHP Manual

cubrid_get_client_info

(PECL CUBRID >= 8.3.0)

cubrid_get_client_info — Return the client library version

说明

string cubrid_get_client_info ( void )

This function returns a string that represents the client library version.

参数

返回值

A string that represents the client library version; on success.

FALSE on failure.

范例

Example #1 cubrid_get_client_info() example

<?php
printf("%-30s %s\n", "CUBRID PHP Version:", cubrid_version());

printf("\n");

$conn = cubrid_connect("localhost", 33088, "demodb");

if (!$conn) {
    die('Connect Error ('. cubrid_error_code() .')' . cubrid_error_msg());
}

$db_params = cubrid_get_db_parameter($conn);

while (list($param_name, $param_value) = each($db_params)) {
    printf("%-30s %s\n", $param_name, $param_value);
}

printf("\n");

$server_info = cubrid_get_server_info($conn);
$client_info = cubrid_get_client_info();

printf("%-30s %s\n", "Server Info:", $server_info);
printf("%-30s %s\n", "Client Info:", $client_info);

printf("\n");

$charset = cubrid_get_charset($conn);

printf("%-30s %s\n", "CUBRID Charset:", $charset);

cubrid_disconnect($conn);

?>

以上例程会输出：

CUBRID PHP Version:            9.1.0.0001

PARAM_ISOLATION_LEVEL          3
LOCK_TIMEOUT                   -1
MAX_STRING_LENGTH              1073741823
PARAM_AUTO_COMMIT              1

Server Info:                   9.1.0.0212
Client Info:                   9.1.0

CUBRID Charset:                iso8859-1
cubrid_get_class_name
cubrid_get_db_parameter
CUBRID 函数


Returns the CUBRID database parameters

cubrid_get_client_info
cubrid_get_query_timeout
CUBRID 函数
PHP Manual

cubrid_get_db_parameter

(PECL CUBRID >= 8.3.0)

cubrid_get_db_parameter — Returns the CUBRID database parameters

说明

array cubrid_get_db_parameter ( resource $conn_identifier )

This function returns the CUBRID database parameters or it returns FALSE on failure. It returns an associative array with the values for the following parameters:

  • PARAM_ISOLATION_LEVEL
  • PARAM_LOCK_TIMEOUT
  • PARAM_MAX_STRING_LENGTH
  • PARAM_AUTO_COMMIT

Database parameters
Parameter | Description
PARAM_ISOLATION_LEVEL | The transaction isolation level.
LOCK_TIMEOUT | CUBRID provides the lock timeout feature, which sets the waiting time (in seconds) for the lock until the transaction lock setting is allowed. The default value of the lock_timeout_in_secs parameter is -1, which means the application client will wait indefinitely until the transaction lock is allowed.
PARAM_AUTO_COMMIT | In CUBRID PHP, auto-commit mode is disabled by default for transaction management. It can be set by using cubrid_set_autocommit().

The following table shows the isolation levels from 1 to 6. It consists of table schema (row) and isolation level:

Levels of Isolation Supported by CUBRID
Name | Description
SERIALIZABLE (6) | In this isolation level, problems concerning concurrency (e.g. dirty read, non-repeatable read, phantom read, etc.) do not occur.
REPEATABLE READ CLASS with REPEATABLE READ INSTANCES (5) | Another transaction T2 cannot update the schema of table A while transaction T1 is viewing table A. Transaction T1 may experience phantom read for the record R that was inserted by another transaction T2 when it is repeatedly retrieving a specific record.
REPEATABLE READ CLASS with READ COMMITTED INSTANCES (or CURSOR STABILITY) (4) | Another transaction T2 cannot update the schema of table A while transaction T1 is viewing table A. Transaction T1 may experience R read (non-repeatable read) that was updated and committed by another transaction T2 when it is repeatedly retrieving the record R.
REPEATABLE READ CLASS with READ UNCOMMITTED INSTANCES (3) | Default isolation level. Another transaction T2 cannot update the schema of table A while transaction T1 is viewing table A. Transaction T1 may experience R' read (dirty read) for the record that was updated but not committed by another transaction T2.
READ COMMITTED CLASS with READ COMMITTED INSTANCES (2) | Transaction T1 may experience A' read (non-repeatable read) for the table that was updated and committed by another transaction T2 while it is viewing table A repeatedly. Transaction T1 may experience R' read (non-repeatable read) for the record that was updated and committed by another transaction T2 while it is retrieving the record R repeatedly.
READ COMMITTED CLASS with READ UNCOMMITTED INSTANCES (1) | Transaction T1 may experience A' read (non-repeatable read) for the table that was updated and committed by another transaction T2 while it is repeatedly viewing table A. Transaction T1 may experience R' read (dirty read) for the record that was updated but not committed by another transaction T2.

参数

conn_identifier

The CUBRID connection. If the connection identifier is not specified, the last link opened by cubrid_connect() is assumed.

返回值

An associative array with CUBRID database parameters; on success.

FALSE on failure.

更新日志

版本 | 说明
8.4.0 | Change LOCK_TIMEOUT to PARAM_LOCK_TIMEOUT, and MAX_STRING_LENGTH to PARAM_MAX_STRING_LENGTH in result.

范例

Example #1 cubrid_get_db_parameter() example

<?php
printf("%-30s %s\n", "CUBRID PHP Version:", cubrid_version());

printf("\n");

$conn = cubrid_connect("localhost", 33088, "demodb");

if (!$conn) {
    die('Connect Error ('. cubrid_error_code() .')' . cubrid_error_msg());
}

$db_params = cubrid_get_db_parameter($conn);

while (list($param_name, $param_value) = each($db_params)) {
    printf("%-30s %s\n", $param_name, $param_value);
}

printf("\n");

$server_info = cubrid_get_server_info($conn);
$client_info = cubrid_get_client_info();

printf("%-30s %s\n", "Server Info:", $server_info);
printf("%-30s %s\n", "Client Info:", $client_info);

printf("\n");

$charset = cubrid_get_charset($conn);

printf("%-30s %s\n", "CUBRID Charset:", $charset);

cubrid_disconnect($conn);

?>

以上例程会输出：

CUBRID PHP Version:            9.1.0.0001

PARAM_ISOLATION_LEVEL          3
LOCK_TIMEOUT                   -1
MAX_STRING_LENGTH              1073741823
PARAM_AUTO_COMMIT              1

Server Info:                   9.1.0.0212
Client Info:                   9.1.0

CUBRID Charset:                iso8859-1

参见

  • cubrid_set_db_parameter() - Sets the CUBRID database parameters
  • cubrid_get_autocommit() - Get auto-commit mode of the connection

cubrid_get_client_info
cubrid_get_query_timeout
CUBRID 函数


Get the query timeout value of the request

cubrid_get_db_parameter
cubrid_get_server_info
CUBRID 函数
PHP Manual

cubrid_get_query_timeout

(PECL CUBRID >= 8.4.1)

cubrid_get_query_timeout — Get the query timeout value of the request

说明

int cubrid_get_query_timeout ( resource $req_identifier )

The cubrid_get_query_timeout() function is used to get the query timeout of the request.

参数

req_identifier

Request identifier.

返回值

Success: the query timeout value of the current request. Units of msec.

Failure: FALSE

范例

Example #1 cubrid_get_query_timeout() example

<?php

$host = "localhost";
$port = 33000;
$db = "demodb";

$conn =
cubrid_connect_with_url("CUBRID:$host:$port:$db:::?login_timeout=50000&query_timeout=5000&disconnect_on_query_timeout=yes");

$req = cubrid_prepare($conn, "SELECT * FROM code");

$timeout = cubrid_get_query_timeout($req);
var_dump($timeout);

cubrid_set_query_timeout($req, 1000);
$timeout = cubrid_get_query_timeout($req);
var_dump($timeout);

cubrid_close($conn);
?>

以上例程会输出：

int(5000)
int(1000)

参见

  • cubrid_set_query_timeout() - Set the timeout time of query execution

cubrid_get_db_parameter
cubrid_get_server_info
CUBRID 函数


Return the CUBRID server version

cubrid_get_query_timeout
cubrid_get
CUBRID 函数
PHP Manual

cubrid_get_server_info

(PECL CUBRID >= 8.3.0)

cubrid_get_server_info — Return the CUBRID server version

说明

string cubrid_get_server_info ( resource $conn_identifier )

This function returns a string that represents the CUBRID server version.

参数

conn_identifier

The CUBRID connection.

返回值

A string that represents the CUBRID server version; on success.

FALSE on failure.

范例

Example #1 cubrid_get_server_info() example

<?php
printf("%-30s %s\n", "CUBRID PHP Version:", cubrid_version());

printf("\n");

$conn = cubrid_connect("localhost", 33088, "demodb");

if (!$conn) {
    die('Connect Error ('. cubrid_error_code() .')' . cubrid_error_msg());
}

$db_params = cubrid_get_db_parameter($conn);

while (list($param_name, $param_value) = each($db_params)) {
    printf("%-30s %s\n", $param_name, $param_value);
}

printf("\n");

$server_info = cubrid_get_server_info($conn);
$client_info = cubrid_get_client_info();

printf("%-30s %s\n", "Server Info:", $server_info);
printf("%-30s %s\n", "Client Info:", $client_info);

printf("\n");

$charset = cubrid_get_charset($conn);

printf("%-30s %s\n", "CUBRID Charset:", $charset);

cubrid_disconnect($conn);

?>

以上例程会输出：

CUBRID PHP Version:            9.1.0.0001

PARAM_ISOLATION_LEVEL          3
LOCK_TIMEOUT                   -1
MAX_STRING_LENGTH              1073741823
PARAM_AUTO_COMMIT              1

Server Info:                   9.1.0.0212
Client Info:                   9.1.0

CUBRID Charset:                iso8859-1
cubrid_get_query_timeout
cubrid_get
CUBRID 函数


Get a column using OID

cubrid_get_server_info
cubrid_insert_id
CUBRID 函数
PHP Manual

cubrid_get

(PECL CUBRID >= 8.3.0)

cubrid_get — Get a column using OID

说明

mixed cubrid_get ( resource $conn_identifier , string $oid [, mixed $attr ] )

The cubrid_get() function is used to get the attribute of the instance of the given oid. You can get single attribute by using string data type for the attr argument, or many attributes by using array data type for the attr argument.

参数

conn_identifier

Connection identifier.

oid

OID of the instance that you want to read.

attr

Name of the attribute that you want to read.

返回值

Content of the requested attribute, when process is successful; When attr is set with string data type, the result is returned as a string; when attr is set with array data type (0-based numerical array), then the result is returned in associative array. When attr is omitted, then all attributes are received in array form.

FALSE when process is unsuccessful or result is NULL (If error occurs to distinguish empty string from NULL, then it prints the warning message. You can check the error by using cubrid_error_code())

范例

Example #1 cubrid_get() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");

@cubrid_execute($conn, "DROP TABLE foo");
cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c list(int), d char(10))");
cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");
cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(2, {4,5,7}, {44,55,66,666}, 'b')");

$req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
$oid = cubrid_current_oid($req);

$attr = cubrid_get($conn, $oid, "b");
var_dump($attr);

$attr = cubrid_get($conn, $oid);
var_dump($attr);

cubrid_close_request($req);
cubrid_disconnect($conn);
?>

以上例程会输出：

string(9) "{1, 2, 3}"
array(4) {
  ["a"]=>
  string(1) "1"
  ["b"]=>
  array(3) {
    [0]=>
    string(1) "1"
    [1]=>
    string(1) "2"
    [2]=>
    string(1) "3"
  }
  ["c"]=>
  array(4) {
    [0]=>
    string(2) "11"
    [1]=>
    string(2) "22"
    [2]=>
    string(2) "33"
    [3]=>
    string(3) "333"
  }
  ["d"]=>
  string(10) "a         "
}

参见

  • cubrid_put() - Update a column using OID

cubrid_get_server_info
cubrid_insert_id
CUBRID 函数


Return the ID generated for the last updated AUTO_INCREMENT column

cubrid_get
cubrid_is_instance
CUBRID 函数
PHP Manual

cubrid_insert_id

(PECL CUBRID >= 8.3.0)

cubrid_insert_id — Return the ID generated for the last updated AUTO_INCREMENT column

说明

string cubrid_insert_id ([ resource $conn_identifier ] )

The cubrid_insert_id() function retrieves the ID generated for the AUTO_INCREMENT column which is updated by the previous INSERT query. It returns 0 if the previous query does not generate new rows, or FALSE on failure.

Note:

CUBRID supports AUTO_INCREMENT for more than one columns in a table. In most cases, there will be a single AUTO_INCREMENT column in a table. If there are multiple AUTO_INCREMENT columns, this function should not be used even if it will return a value.

参数

conn_identifier

The connection identifier previously obtained by a call to cubrid_connect().

返回值

A string representing the ID generated for an AUTO_INCREMENT column by the previous query, on success.

0, if the previous query does not generate new rows.

FALSE on failure.

更新日志

版本 | 说明
8.4.0 | Change the return value from an array to string; Remove the first parameter class_name.

范例

Example #1 cubrid_insert_id() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");

@cubrid_execute($conn, "DROP TABLE cubrid_test");
cubrid_execute($conn, "CREATE TABLE cubrid_test (d int AUTO_INCREMENT(1, 2), t varchar)");

for ($i = 0; $i < 10; $i++) {
    cubrid_execute($conn, "INSERT INTO cubrid_test(t) VALUES('cubrid_test')");
}

$id = cubrid_insert_id();
var_dump($id);

cubrid_disconnect($conn);
?>

以上例程会输出：

string(2) "19"
cubrid_get
cubrid_is_instance
CUBRID 函数


Check whether the instance pointed by OID exists

cubrid_insert_id
cubrid_lob_close
CUBRID 函数
PHP Manual

cubrid_is_instance

(PECL CUBRID >= 8.3.0)

cubrid_is_instance — Check whether the instance pointed by OID exists

说明

int cubrid_is_instance ( resource $conn_identifier , string $oid )

The cubrid_is_instance() function is used to check whether the instance pointed by the given oid exists or not.

参数

conn_identifier

Connection identifier.

oid

OID of the instance that you want to check the existence.

返回值

1, if such instance exists;

0, if such instance does not exist;

-1, in case of error

范例

Example #1 cubrid_is_instance() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");

$sql = <<<EOD
SELECT host_year, medal, game_date
FROM game
WHERE athlete_code IN
    (SELECT code FROM athlete WHERE name='Thorpe Ian');
EOD;

$req = cubrid_execute($conn, $sql, CUBRID_INCLUDE_OID);
$oid = cubrid_current_oid($req);

$res = cubrid_is_instance ($conn, $oid);
if ($res == 1) {
    echo "Instance pointed by $oid exists.\n";
} else if ($res == 0){
    echo "Instance pointed by $oid doesn't exist.\n";
} else {
    echo "error\n";
}

cubrid_disconnect($conn);
?>

以上例程会输出：

Instance pointed by @0|0|0 doesn't exist.

参见

  • cubrid_drop() - Delete an instance using OID
  • cubrid_get_class_name() - Get the class name using OID

cubrid_insert_id
cubrid_lob_close
CUBRID 函数


Close BLOB/CLOB data

cubrid_is_instance
cubrid_lob_export
CUBRID 函数
PHP Manual

cubrid_lob_close

(PECL CUBRID >= 8.3.1)

cubrid_lob_close — Close BLOB/CLOB data

说明

bool cubrid_lob_close ( array $lob_identifier_array )

cubrid_lob_close() is used to close all BLOB/CLOB returned from cubrid_lob_get().

参数

lob_identifier_array

LOB identifier array return from cubrid_lob_get.

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_lob_close() example

<?php
$conn = cubrid_connect ("localhost", 33000, "demodb", "dba");

cubrid_execute($conn,"DROP TABLE if exists doc");
cubrid_execute($conn,"CREATE TABLE doc (id INT, doc_content CLOB)");
cubrid_execute($conn,"INSERT INTO doc VALUES (5,'hello,cubrid')");

$lobs = cubrid_lob_get($conn, "SELECT doc_content FROM doc WHERE id=5");
echo "Doc size: ".cubrid_lob_size($lobs[0])." bytes";
cubrid_lob_export($conn, $lobs[0], "doc_5.txt");
cubrid_lob_close($lobs);
cubrid_disconnect($conn);
?>

参见

  • cubrid_lob_get() - Get BLOB/CLOB data
  • cubrid_lob_size() - Get BLOB/CLOB data size
  • cubrid_lob_export() - Export BLOB/CLOB data to file
  • cubrid_lob_send() - Read BLOB/CLOB data and send straight to browser

cubrid_is_instance
cubrid_lob_export
CUBRID 函数


Export BLOB/CLOB data to file

cubrid_lob_close
cubrid_lob_get
CUBRID 函数
PHP Manual

cubrid_lob_export

(PECL CUBRID >= 8.3.1)

cubrid_lob_export — Export BLOB/CLOB data to file

说明

bool cubrid_lob_export ( resource $conn_identifier , resource $lob_identifier , string $path_name )

cubrid_lob_export() is used to get BLOB/CLOB data from CUBRID database, and saves its contents to a file. To use this function, you must use cubrid_lob_get() first to get BLOB/CLOB info from CUBRID.

参数

conn_identifier

Connection identifier.

lob_identifier

LOB identifier.

path_name

Path name of the file.

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_lob_export() example

<?php
$conn = cubrid_connect ("localhost", 33000, "demodb", "dba");

cubrid_execute($conn,"DROP TABLE if exists doc");
cubrid_execute($conn,"CREATE TABLE doc (id INT, doc_content CLOB)");
cubrid_execute($conn,"INSERT INTO doc VALUES (5,'hello,cubrid')");

$lobs = cubrid_lob_get($conn, "SELECT doc_content FROM doc WHERE id=5");
echo "Doc size: ".cubrid_lob_size($lobs[0])." bytes";
cubrid_lob_export($conn, $lobs[0], "doc_5.txt");
cubrid_lob_close($lobs);
cubrid_disconnect($conn);
?>

参见

  • cubrid_lob_get() - Get BLOB/CLOB data
  • cubrid_lob_close() - Close BLOB/CLOB data
  • cubrid_lob_size() - Get BLOB/CLOB data size
  • cubrid_lob_send() - Read BLOB/CLOB data and send straight to browser

cubrid_lob_close
cubrid_lob_get
CUBRID 函数


Get BLOB/CLOB data

cubrid_lob_export
cubrid_lob_send
CUBRID 函数
PHP Manual

cubrid_lob_get

(PECL CUBRID >= 8.3.1)

cubrid_lob_get — Get BLOB/CLOB data

说明

array cubrid_lob_get ( resource $conn_identifier , string $sql )

cubrid_lob_get() is used to get BLOB/CLOB meta info from CUBRID database, CUBRID gets BLOB/CLOB by executing the SQL statement, and returns all LOBs as a resource array. Be sure that the SQL retrieves only one column and its data type is BLOB or CLOB.

Remember to use cubrid_lob_close() to release the LOBs if you don't need it any more.

参数

conn_identifier

Connection identifier.

sql

SQL statement to be executed.

返回值

Return an array of LOB resources, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_lob_get() example

<?php
$conn = cubrid_connect ("localhost", 33000, "demodb", "dba");

cubrid_execute($conn,"DROP TABLE if exists doc");
cubrid_execute($conn,"CREATE TABLE doc (id INT, doc_content CLOB)");
cubrid_execute($conn,"INSERT INTO doc VALUES (5,'hello,cubrid')");

$lobs = cubrid_lob_get($conn, "SELECT doc_content FROM doc WHERE id=5");
echo "Doc size: ".cubrid_lob_size($lobs[0])." bytes";
cubrid_lob_export($conn, $lobs[0], "doc_5.txt");
cubrid_lob_close($lobs);
cubrid_disconnect($conn);
?>

参见

  • cubrid_lob_close() - Close BLOB/CLOB data
  • cubrid_lob_size() - Get BLOB/CLOB data size
  • cubrid_lob_export() - Export BLOB/CLOB data to file
  • cubrid_lob_send() - Read BLOB/CLOB data and send straight to browser

cubrid_lob_export
cubrid_lob_send
CUBRID 函数


Read BLOB/CLOB data and send straight to browser

cubrid_lob_get
cubrid_lob_size
CUBRID 函数
PHP Manual

cubrid_lob_send

(PECL CUBRID >= 8.3.1)

cubrid_lob_send — Read BLOB/CLOB data and send straight to browser

说明

bool cubrid_lob_send ( resource $conn_identifier , resource $lob_identifier )

cubrid_lob_send() reads BLOB/CLOB data and passes it straight through to the browser. To use this function, you must use cubrid_lob_get() first to get BLOB/CLOB info from CUBRID.

参数

conn_identifier

Connection identifier.

lob_identifier

LOB identifier.

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_lob_send() example

<?php
$conn = cubrid_connect ("localhost", 33000, "demodb", "dba");

cubrid_execute($conn,"DROP TABLE if exists doc");
cubrid_execute($conn,"CREATE TABLE doc (id INT, doc_content CLOB)");
cubrid_execute($conn,"INSERT INTO doc VALUES (5,'hello,cubrid')");

$lobs = cubrid_lob_get($conn, "SELECT doc_content FROM doc WHERE id=5");

cubrid_lob_send($conn, $lobs[0]);
cubrid_lob_close($lobs);
cubrid_disconnect($conn);
?>

参见

  • cubrid_lob_get() - Get BLOB/CLOB data
  • cubrid_lob_close() - Close BLOB/CLOB data
  • cubrid_lob_size() - Get BLOB/CLOB data size
  • cubrid_lob_export() - Export BLOB/CLOB data to file

cubrid_lob_get
cubrid_lob_size
CUBRID 函数


Get BLOB/CLOB data size

cubrid_lob_send
cubrid_lob2_bind
CUBRID 函数
PHP Manual

cubrid_lob_size

(PECL CUBRID >= 8.3.1)

cubrid_lob_size — Get BLOB/CLOB data size

说明

string cubrid_lob_size ( resource $lob_identifier )

cubrid_lob_size() is used to get BLOB/CLOB data size.

参数

lob_identifier

LOB identifier.

返回值

A string representing LOB data size, when process is successful.

FALSE, when process is unsuccessful.

更新日志

版本 | 说明
8.4.0 | Change return value type from int to string.

范例

Example #1 cubrid_lob_size() example

<?php
$lobs = cubrid_lob_get($con, "SELECT doc_content FROM doc WHERE doc_id=5");
echo "Doc size:".cubrid_lob_size($lobs[0]);
cubrid_lob_export($conn, $lobs[0], "doc_5.txt");
cubrid_lob_close($lobs);
?>

参见

  • cubrid_lob_get() - Get BLOB/CLOB data
  • cubrid_lob_close() - Close BLOB/CLOB data
  • cubrid_lob_export() - Export BLOB/CLOB data to file
  • cubrid_lob_send() - Read BLOB/CLOB data and send straight to browser

cubrid_lob_send
cubrid_lob2_bind
CUBRID 函数


Bind a lob object or a string as a lob object to a prepared statement as parameters.

cubrid_lob_size
cubrid_lob2_close
CUBRID 函数
PHP Manual

cubrid_lob2_bind

(PECL CUBRID >= 8.4.1)

cubrid_lob2_bind — Bind a lob object or a string as a lob object to a prepared statement as parameters.

说明

bool cubrid_lob2_bind ( resource $req_identifier , int $bind_index , mixed $bind_value [, string $bind_value_type ] )

The cubrid_lob2_bind() function is used to bind BLOB/CLOB datas to a corresponding question mark placeholder in the SQL statement that was passed to cubrid_prepare(). If bind_value_type is not given, string will be "BLOB" as the default. But if you use cubrid_lob2_new() before, bind_value_type will be consistent with type in cubrid_lob2_new() as the default.

参数

req_identifier

Request identifier as a result of cubrid_prepare().

bind_index

Location of binding parameters. It starts with 1.

bind_value

Actual value for binding.

bind_value_type

It must be "BLOB" or "CLOB" and it won't be case-sensitive. If it not be given, the default value is "BLOB".

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_lob2_bind() example

<?php
// Table: test_lob (id INT, contents CLOB)

$conn = cubrid_connect("localhost", 33000, "demodb", "dba", "");

cubrid_execute($conn,"DROP TABLE if exists test_lob");
cubrid_execute($conn,"CREATE TABLE test_lob (id INT, contents CLOB)");

$req = cubrid_prepare($conn, "INSERT INTO test_lob VALUES (?, ?)");

cubrid_bind($req,1, 3);

$lob = cubrid_lob2_new($conn, 'CLOB');
cubrid_lob2_bind($req, 2, $lob);

cubrid_execute($req);

cubrid_bind($req, 1, 4);

cubrid_lob2_bind($req, 2, 'CUBRID LOB2 TEST', 'CLOB');

cubrid_execute($req);

cubrid_disconnect($conn);
?>

参见

  • cubrid_lob2_new() - Create a lob object.
  • cubrid_lob2_close() - Close LOB object.

cubrid_lob_size
cubrid_lob2_close
CUBRID 函数


Close LOB object.

cubrid_lob2_bind
cubrid_lob2_export
CUBRID 函数
PHP Manual

cubrid_lob2_close

(PECL CUBRID >= 8.4.1)

cubrid_lob2_close — Close LOB object.

说明

bool cubrid_lob2_close ( resource $lob_identifier )

The cubrid_lob2_close() function is used to close LOB object returned from cubrid_lob2_new() or got from the result set.

参数

lob_identifier

Lob identifier as a result of cubrid_lob2_new() or get from the result set.

返回值

TRUE, on success.

FALSE, on failure.

参见

  • cubrid_lob2_new() - Create a lob object.

cubrid_lob2_bind
cubrid_lob2_export
CUBRID 函数


Export the lob object to a file.

cubrid_lob2_close
cubrid_lob2_import
CUBRID 函数
PHP Manual

cubrid_lob2_export

(PECL CUBRID >= 8.4.1)

cubrid_lob2_export — Export the lob object to a file.

说明

bool cubrid_lob2_export ( resource $lob_identifier , string $file_name )

The cubrid_lob2_export() function is used to save the contents of BLOB/CLOB data to a file. To use this function, you must use cubrid_lob2_new() or fetch a lob object from CUBRID database first. If the file already exists, the operation will fail. This function will not influence the cursor position of the lob object. It operates the entire lob object.

参数

lob_identifier

Lob identifier as a result of cubrid_lob2_new() or get from the result set.

filename

File name you want to store BLOB/CLOB data. It also supports the path of the file.

返回值

TRUE if the process is successful and FALSE for failure.

范例

Example #1 cubrid_lob2_export() example

<?php
// Table: test_lob (id INT, contents CLOB)

$conn = cubrid_connect("localhost", 33000, "demodb", "dba", "");

cubrid_execute($conn,"DROP TABLE if exists doc");
cubrid_execute($conn,"CREATE TABLE doc (id INT, doc_content CLOB)");
cubrid_execute($conn,"INSERT INTO doc VALUES (5,'hello,cubrid')");

$req = cubrid_prepare($conn, "select * from doc");

cubrid_execute($req);

cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);

$row = cubrid_fetch($req, CUBRID_NUM | CUBRID_LOB);

cubrid_lob2_export($row[1], "doc_3.txt");

cubrid_lob2_close($row[1]);
cubrid_disconnect($conn);
?>

参见

  • cubrid_lob2_new() - Create a lob object.
  • cubrid_lob2_close() - Close LOB object.
  • cubrid_lob2_import() - Import BLOB/CLOB data from a file.
  • cubrid_lob2_bind() - Bind a lob object or a string as a lob object to a prepared statement as parameters.

cubrid_lob2_close
cubrid_lob2_import
CUBRID 函数


Import BLOB/CLOB data from a file.

cubrid_lob2_export
cubrid_lob2_new
CUBRID 函数
PHP Manual

cubrid_lob2_import

(PECL CUBRID >= 8.4.1)

cubrid_lob2_import — Import BLOB/CLOB data from a file.

说明

bool cubrid_lob2_import ( resource $lob_identifier , string $file_name )

The cubrid_lob2_import() function is used to save the contents of BLOB/CLOB data from a file. To use this function, you must use cubrid_lob2_new() or fetch a lob object from CUBRID database first. If the file already exists, the operation will fail. This function will not influence the cursor position of the lob object. It operates the entire lob object.

参数

lob_identifier

Lob identifier as a result of cubrid_lob2_new() or get from the result set.

filename

File name you want to import BLOB/CLOB data. It also supports the path of the file.

返回值

TRUE if the process is successful and FALSE for failure.

范例

Example #1 cubrid_lob2_export() example

<?php

$conn = cubrid_connect("localhost", 33000, "demodb", "dba", "");

cubrid_execute($conn,"DROP TABLE if exists test_lob");
cubrid_execute($conn,"CREATE TABLE test_lob (id INT, contents CLOB)");

$req = cubrid_prepare($conn, "INSERT INTO test_lob VALUES (?, ?)");
cubrid_bind($req, 1, 1);

$lob = cubrid_lob2_new($conn, "clob");
cubrid_lob2_import($lob, "doc_1.txt");
cubrid_lob2_bind($req, 2, $lob, 'CLOB'); // or cubrid_lob2_bind($req, 2, $lob);

cubrid_execute($req);

cubrid_lob2_close($lob);
cubrid_disconnect($conn);
?>

参见

  • cubrid_lob2_new() - Create a lob object.
  • cubrid_lob2_close() - Close LOB object.
  • cubrid_lob2_export() - Export the lob object to a file.
  • cubrid_lob2_bind() - Bind a lob object or a string as a lob object to a prepared statement as parameters.

cubrid_lob2_export
cubrid_lob2_new
CUBRID 函数


Create a lob object.

cubrid_lob2_import
cubrid_lob2_read
CUBRID 函数
PHP Manual

cubrid_lob2_new

(PECL CUBRID >= 8.4.1)

cubrid_lob2_new — Create a lob object.

说明

resource cubrid_lob2_new ([ resource $conn_identifier [, string $type = "BLOB" ]] )

The cubrid_lob2_new() function is used to create a lob object (both BLOB and CLOB). This function should be used before you bind a lob object.

参数

conn_identifier

Connection identifier. If the connection identifier is not specified, the last connection opened by cubrid_connect() or cubrid_connect_with_url() is assumed.

type

It may be "BLOB" or "CLOB", it won't be case-sensitive. The default value is "BLOB".

返回值

Lob identifier when it is successful.

FALSE on failure.

参见

  • cubrid_lob2_close() - Close LOB object.

cubrid_lob2_import
cubrid_lob2_read
CUBRID 函数


Read from BLOB/CLOB data.

cubrid_lob2_new
cubrid_lob2_seek64
CUBRID 函数
PHP Manual

cubrid_lob2_read

(PECL CUBRID >= 8.4.1)

cubrid_lob2_read — Read from BLOB/CLOB data.

说明

string cubrid_lob2_read ( resource $lob_identifier , int $len )

The cubrid_lob2_read() function reads len bytes from the LOB data and returns the bytes read.

参数

lob_identifier

Lob identifier as a result of cubrid_lob2_new() or get from the result set.

len

Length from buffer you want to read from the lob data.

返回值

Returns the contents as a string.

FALSE when there is no more data.

NULL on failure.

范例

Example #1 cubrid_lob2_read() example 1

<?php
// test_lob (id INT, contents CLOB)

$conn = cubrid_connect("localhost", 33000, "demodb", "public", "");

$req = cubrid_execute($conn, "select * from test_lob");

$row = cubrid_fetch_row($req, CUBRID_LOB);

print "position now is " . cubrid_lob2_tell($row[1]) . "\n";

cubrid_lob2_seek($row[1], 10, CUBRID_CURSOR_FIRST);

print "\nposition after moving farword is " . cubrid_lob2_tell($row[1]) . "\n";

$data = cubrid_lob2_read($row[1], 12);

print "\nposition after reading is " . cubrid_lob2_tell($row[1]) . "\n";

print $data . "\n";

cubrid_lob2_seek($row[1], 5, CUBRID_CURSOR_CURRENT);

print "\nposition after moving again is " . cubrid_lob2_tell($row[1]) . "\n";

$data = cubrid_lob2_read($row[1], 20);
print $data . "\n";

cubrid_disconnect($conn);
?>

Example #2 cubrid_lob2_read() example 2

<?php
// test_lob (id INT, contents CLOB)

$conn = cubrid_connect("localhost", 33000, "demodb", "dba", "");

$req = cubrid_execute($conn, "select * from test_lob");

$row = cubrid_fetch_row($req, CUBRID_LOB);

while (true) {
    if ($data = cubrid_lob2_read($row[1], 1024)) {
        print $data . "\n";
    }
    elseif ($data === false) {
        print "There is no more data\n";
        break;
    }
    else {
        print "There must some errors\n";
        break;
    }
}

cubrid_disconnect($conn);
?>

参见

  • cubrid_lob2_write() - Write to a lob object.
  • cubrid_lob2_seek() - Move the cursor of a lob object.
  • cubrid_lob2_seek64() - Move the cursor of a lob object.
  • cubrid_lob2_tell() - Tell the cursor position of the LOB object.
  • cubrid_lob2_tell64() - Tell the cursor position of the LOB object.
  • cubrid_lob2_size() - Get a lob object's size.
  • cubrid_lob2_size64() - Get a lob object's size.

cubrid_lob2_new
cubrid_lob2_seek64
CUBRID 函数


Move the cursor of a lob object.

cubrid_lob2_read
cubrid_lob2_seek
CUBRID 函数
PHP Manual

cubrid_lob2_seek64

(PECL CUBRID >= 8.4.1)

cubrid_lob2_seek64 — Move the cursor of a lob object.

说明

bool cubrid_lob2_seek64 ( resource $lob_identifier , string $offset [, int $origin = CUBRID_CURSOR_CURRENT ] )

The cubrid_lob2_seek64() function is used to move the cursor position of a lob object by the value set in the offset argument, to the direction set in the origin argument. If the offset you want to move is larger than an integer data can be stored, you can use this function.

To set the origin argument, you can use CUBRID_CURSOR_FIRST to set the cursor position moving forward offset units from the first beginning. In this case, offset must be a positive value.

If you use CUBRID_CURSOR_CURRENT for origin, you can move forward or backward. and offset can be positive or negative.

If you use CUBRID_CURSOR_LAST for origin, you can move backward offset units from the end of LOB object and offset only can be positive.

Note:

If you use this function to move the cursor position of the lob object, you should pass offset as a string.

参数

lob_identifier

Lob identifier as a result of cubrid_lob2_new() or get from the result set.

offset

Number of units you want to move the cursor.

origin

This parameter can be the following values:

CUBRID_CURSOR_FIRST: move forward from the first beginning.

CUBRID_CURSOR_CURRENT: move forward or backward from the current position.

CUBRID_CURSOR_LAST: move backward at the end of LOB object.

返回值

TRUE if the process is successful and FALSE for failure.

范例

Example #1 cubrid_lob2_seek64() example

<?php
// test_lob (id INT, contents CLOB)
// Data length of doc_1.txt should be greater than 20101029056306120215.

$conn = cubrid_connect("localhost", 33000, "demodb", "dba", "");

cubrid_execute($conn,"DROP TABLE if exists test_lob");
cubrid_execute($conn,"CREATE TABLE test_lob (id INT, contents CLOB)");

$req = cubrid_prepare($conn, "INSERT INTO test_lob VALUES (?, ?)");
cubrid_bind($req, 1, 1);

$lob = cubrid_lob2_new($conn, "clob");
cubrid_lob2_import($lob, "doc_1.txt");
cubrid_lob2_bind($req, 2, $lob, 'CLOB'); // or cubrid_lob2_bind($req, 2, $lob);

cubrid_execute($req);

cubrid_lob2_close($lob);

$req = cubrid_execute($conn, "select * from test_lob");
$row = cubrid_fetch_row($req, CUBRID_LOB);
$lob = $row[1];

cubrid_lob2_seek64($lob, "20101029056306120215", CUBRID_CURSOR_FIRST);
$data = cubrid_lob2_read($lob, 20);
echo $data."\n";
cubrid_disconnect($conn);
?>

参见

  • cubrid_lob2_read() - Read from BLOB/CLOB data.
  • cubrid_lob2_write() - Write to a lob object.
  • cubrid_lob2_seek() - Move the cursor of a lob object.
  • cubrid_lob2_tell() - Tell the cursor position of the LOB object.
  • cubrid_lob2_tell64() - Tell the cursor position of the LOB object.
  • cubrid_lob2_size() - Get a lob object's size.
  • cubrid_lob2_size64() - Get a lob object's size.

cubrid_lob2_read
cubrid_lob2_seek
CUBRID 函数


Move the cursor of a lob object.

cubrid_lob2_seek64
cubrid_lob2_size64
CUBRID 函数
PHP Manual

cubrid_lob2_seek

(PECL CUBRID >= 8.4.1)

cubrid_lob2_seek — Move the cursor of a lob object.

说明

bool cubrid_lob2_seek ( resource $lob_identifier , int $offset [, int $origin = CUBRID_CURSOR_CURRENT ] )

The cubrid_lob2_seek() function is used to move the cursor position of a lob object by the value set in the offset argument, to the direction set in the origin argument.

To set the origin argument, you can use CUBRID_CURSOR_FIRST to set the cursor position moving forward offset units from the first beginning. In this case, offset must be a positive value.

If you use CUBRID_CURSOR_CURRENT for origin, you can move forward or backward. and offset can be positive or negative.

If you use CUBRID_CURSOR_LAST for origin, you can move backward offset units from the end of LOB object and offset only can be positive.

参数

lob_identifier

Lob identifier as a result of cubrid_lob2_new() or get from the result set.

offset

Number of units you want to move the cursor.

origin

This parameter can be the following values:

CUBRID_CURSOR_FIRST: move forward from the first beginning.

CUBRID_CURSOR_CURRENT: move forward or backward from the current position.

CUBRID_CURSOR_LAST: move backward at the end of LOB object.

返回值

TRUE if the process is successful and FALSE for failure.

范例

Example #1 cubrid_lob2_seek() example

<?php
// test_lob (id INT, contents CLOB)
$conn = cubrid_connect("localhost", 33000, "demodb", "dba", "");

cubrid_execute($conn,"DROP TABLE if exists test_lob");
cubrid_execute($conn,"CREATE TABLE test_lob (id INT, contents CLOB)");
$req = cubrid_prepare($conn, "INSERT INTO test_lob VALUES(2, ?)");

$lob = cubrid_lob2_new($conn, 'CLOB');
$len = cubrid_lob2_write($lob, "Hello world");

cubrid_lob2_seek($lob, 0, CUBRID_CURSOR_LAST);
cubrid_lob2_write($lob, "beautiful");

cubrid_lob2_seek($lob, 15, CUBRID_CURSOR_FIRST);
$data = cubrid_lob2_read($lob, 5);

echo $data."\n";

cubrid_lob2_bind($req, 1, $lob);
cubrid_execute($req);

cubrid_disconnect($conn);
?>

参见

  • cubrid_lob2_read() - Read from BLOB/CLOB data.
  • cubrid_lob2_write() - Write to a lob object.
  • cubrid_lob2_seek64() - Move the cursor of a lob object.
  • cubrid_lob2_tell() - Tell the cursor position of the LOB object.
  • cubrid_lob2_tell64() - Tell the cursor position of the LOB object.
  • cubrid_lob2_size() - Get a lob object's size.
  • cubrid_lob2_size64() - Get a lob object's size.

cubrid_lob2_seek64
cubrid_lob2_size64
CUBRID 函数


Get a lob object's size.

cubrid_lob2_seek
cubrid_lob2_size
CUBRID 函数
PHP Manual

cubrid_lob2_size64

(PECL CUBRID >= 8.4.1)

cubrid_lob2_size64 — Get a lob object's size.

说明

string cubrid_lob2_size64 ( resource $lob_identifier )

The cubrid_lob2_size64() function is used to get the size of a lob object. If the size of a lob object is larger than an integer data can be stored, you can use this function and it will return the size as a string.

参数

lob_identifier

Lob identifier as a result of cubrid_lob2_new() or get from the result set.

返回值

It will return the size of the LOB object as a string when it processes successfully.

FALSE on failure.

参见

  • cubrid_lob2_read() - Read from BLOB/CLOB data.
  • cubrid_lob2_write() - Write to a lob object.
  • cubrid_lob2_seek() - Move the cursor of a lob object.
  • cubrid_lob2_seek64() - Move the cursor of a lob object.
  • cubrid_lob2_tell() - Tell the cursor position of the LOB object.
  • cubrid_lob2_tell64() - Tell the cursor position of the LOB object.
  • cubrid_lob2_size() - Get a lob object's size.

cubrid_lob2_seek
cubrid_lob2_size
CUBRID 函数


Get a lob object's size.

cubrid_lob2_size64
cubrid_lob2_tell64
CUBRID 函数
PHP Manual

cubrid_lob2_size

(PECL CUBRID >= 8.4.1)

cubrid_lob2_size — Get a lob object's size.

说明

int cubrid_lob2_size ( resource $lob_identifier )

The cubrid_lob2_size() function is used to get the size of a lob object.

参数

lob_identifier

Lob identifier as a result of cubrid_lob2_new() or get from the result set.

返回值

It will return the size of the LOB object when it processes successfully.

FALSE on failure.

参见

  • cubrid_lob2_read() - Read from BLOB/CLOB data.
  • cubrid_lob2_write() - Write to a lob object.
  • cubrid_lob2_seek() - Move the cursor of a lob object.
  • cubrid_lob2_seek64() - Move the cursor of a lob object.
  • cubrid_lob2_tell() - Tell the cursor position of the LOB object.
  • cubrid_lob2_tell64() - Tell the cursor position of the LOB object.
  • cubrid_lob2_size64() - Get a lob object's size.

cubrid_lob2_size64
cubrid_lob2_tell64
CUBRID 函数


Tell the cursor position of the LOB object.

cubrid_lob2_size
cubrid_lob2_tell
CUBRID 函数
PHP Manual

cubrid_lob2_tell64

(PECL CUBRID >= 8.4.1)

cubrid_lob2_tell64 — Tell the cursor position of the LOB object.

说明

string cubrid_lob2_tell64 ( resource $lob_identifier )

The cubrid_lob2_tell64() function is used to tell the cursor position of the LOB object. If the size of a lob object is larger than an integer data can be stored, you can use this function and it will return the position information as a string.

参数

lob_identifier

Lob identifier as a result of cubrid_lob2_new() or get from the result set.

返回值

It will return the cursor position on the LOB object as a string when it processes successfully.

FALSE on failure.

参见

  • cubrid_lob2_read() - Read from BLOB/CLOB data.
  • cubrid_lob2_write() - Write to a lob object.
  • cubrid_lob2_seek() - Move the cursor of a lob object.
  • cubrid_lob2_seek64() - Move the cursor of a lob object.
  • cubrid_lob2_tell() - Tell the cursor position of the LOB object.
  • cubrid_lob2_size() - Get a lob object's size.
  • cubrid_lob2_size64() - Get a lob object's size.

cubrid_lob2_size
cubrid_lob2_tell
CUBRID 函数


Tell the cursor position of the LOB object.

cubrid_lob2_tell64
cubrid_lob2_write
CUBRID 函数
PHP Manual

cubrid_lob2_tell

(PECL CUBRID >= 8.4.1)

cubrid_lob2_tell — Tell the cursor position of the LOB object.

说明

int cubrid_lob2_tell ( resource $lob_identifier )

The cubrid_lob2_tell() function is used to tell the cursor position of the LOB object.

参数

lob_identifier

Lob identifier as a result of cubrid_lob2_new() or get from the result set.

返回值

It will return the cursor position on the LOB object when it processes successfully.

FALSE on failure.

参见

  • cubrid_lob2_read() - Read from BLOB/CLOB data.
  • cubrid_lob2_write() - Write to a lob object.
  • cubrid_lob2_seek() - Move the cursor of a lob object.
  • cubrid_lob2_seek64() - Move the cursor of a lob object.
  • cubrid_lob2_tell64() - Tell the cursor position of the LOB object.
  • cubrid_lob2_size() - Get a lob object's size.
  • cubrid_lob2_size64() - Get a lob object's size.

cubrid_lob2_tell64
cubrid_lob2_write
CUBRID 函数


Write to a lob object.

cubrid_lob2_tell
cubrid_lock_read
CUBRID 函数
PHP Manual

cubrid_lob2_write

(PECL CUBRID >= 8.4.1)

cubrid_lob2_write — Write to a lob object.

说明

bool cubrid_lob2_write ( resource $lob_identifier , string $buf )

The cubrid_lob2_write() function reads as much as data from buf and stores it to the LOB object. Note that this function can only append characters now.

参数

lob_identifier

Lob identifier as a result of cubrid_lob2_new() or get from the result set.

buf

Data that need to be written to the lob object.

返回值

TRUE if the process is successful and FALSE for failure.

范例

Example #1 cubrid_lob2_write() example 1

<?php
// test_lob (id INT, contents CLOB)

$conn = cubrid_connect("localhost", 33000, "demodb", "dba", "");

cubrid_execute($conn,"DROP TABLE if exists test_lob");
cubrid_execute($conn,"CREATE TABLE test_lob (id INT, contents CLOB)");

$req = cubrid_prepare($conn, "INSERT INTO test_lob VALUES(2, ?)");

$lob = cubrid_lob2_new($conn, 'CLOB');
$len = cubrid_lob2_write($lob, "Hello world");

cubrid_lob2_bind($req, 1, $lob);
cubrid_execute($req);

cubrid_disconnect($conn);
?>

Example #2 cubrid_lob2_write() example 2

<?php
// test_lob (id INT, contents CLOB)

$conn = cubrid_connect("localhost", 33000, "demodb", "dba", "");

cubrid_execute($conn,"DROP TABLE if exists test_lob");
cubrid_execute($conn,"CREATE TABLE test_lob (id INT, contents CLOB)");

$req = cubrid_prepare($conn, "INSERT INTO test_lob VALUES(1, ?)");
$lob1 = cubrid_lob2_new($conn, 'CLOB');
$len = cubrid_lob2_write($lob1, "cubrid php driver");
cubrid_lob2_bind($req, 1, $lob1);
cubrid_execute($req);

$req = cubrid_execute($conn, "select * from test_lob");

$row = cubrid_fetch_row($req, CUBRID_LOB);
$lob2 = $row[1];
cubrid_lob2_seek($lob2, 0, CUBRID_CURSOR_LAST);

$pos = cubrid_lob2_tell($lob2);
print "pos before write: $pos\n";

cubrid_lob2_write($lob2, "Hello world");

$pos = cubrid_lob2_tell($lob2);
print "pos after write: $pos\n";

cubrid_disconnect($conn);
?>

参见

  • cubrid_lob2_read() - Read from BLOB/CLOB data.
  • cubrid_lob2_seek() - Move the cursor of a lob object.
  • cubrid_lob2_seek64() - Move the cursor of a lob object.
  • cubrid_lob2_tell() - Tell the cursor position of the LOB object.
  • cubrid_lob2_tell64() - Tell the cursor position of the LOB object.
  • cubrid_lob2_size() - Get a lob object's size.
  • cubrid_lob2_size64() - Get a lob object's size.

cubrid_lob2_tell
cubrid_lock_read
CUBRID 函数


Set a read lock on the given OID

cubrid_lob2_write
cubrid_lock_write
CUBRID 函数
PHP Manual

cubrid_lock_read

(PECL CUBRID >= 8.3.0)

cubrid_lock_read — Set a read lock on the given OID

说明

bool cubrid_lock_read ( resource $conn_identifier , string $oid )

The cubrid_lock_read() function is used to put read lock on the instance pointed by given oid.

参数

conn_identifier

Connection identifier.

oid

OID of the instance that you want to put read lock on.

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_lock_read() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");

@cubrid_execute($conn, "DROP TABLE foo");
cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c list(int), d char(10))");
cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");
cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(2, {4,5,7}, {44,55,66,666}, 'b')");

$req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
$oid = cubrid_current_oid($req);

cubrid_lock_read($conn, $oid);

$attr = cubrid_get($conn, $oid, "b");
var_dump($attr);

$attr = cubrid_get($conn, $oid);
var_dump($attr);

cubrid_close_request($req);
cubrid_disconnect($conn);
?>

以上例程会输出：

string(9) "{1, 2, 3}"
array(4) {
  ["a"]=>
  string(1) "1"
  ["b"]=>
  array(3) {
    [0]=>
    string(1) "1"
    [1]=>
    string(1) "2"
    [2]=>
    string(1) "3"
  }
  ["c"]=>
  array(4) {
    [0]=>
    string(2) "11"
    [1]=>
    string(2) "22"
    [2]=>
    string(2) "33"
    [3]=>
    string(3) "333"
  }
  ["d"]=>
  string(10) "a         "
}

参见

  • cubrid_lock_write() - Set a write lock on the given OID

cubrid_lob2_write
cubrid_lock_write
CUBRID 函数


Set a write lock on the given OID

cubrid_lock_read
cubrid_move_cursor
CUBRID 函数
PHP Manual

cubrid_lock_write

(PECL CUBRID >= 8.3.0)

cubrid_lock_write — Set a write lock on the given OID

说明

bool cubrid_lock_write ( resource $conn_identifier , string $oid )

The cubrid_lock_write() function is used to put write lock on the instance pointed by the given oid.

参数

conn_identifier

Connection identifier.

oid

OID of the instance that you want to put write lock on.

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_lock_write() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");

@cubrid_execute($conn, "DROP TABLE foo");
cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c list(int), d char(10))");
cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");
cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(2, {4,5,7}, {44,55,66,666}, 'b')");

$req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
$oid = cubrid_current_oid($req);

cubrid_lock_write($conn, $oid);

$attr = cubrid_col_get($conn, $oid, "b");
var_dump($attr);

cubrid_put($conn, $oid, "b", array(2, 4, 8));

$attr = cubrid_col_get($conn, $oid, "b");
var_dump($attr);

cubrid_close_request($req);
cubrid_disconnect($conn);
?>

以上例程会输出：

array(3) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [2]=>
  string(1) "3"
}
array(3) {
  [0]=>
  string(1) "2"
  [1]=>
  string(1) "4"
  [2]=>
  string(1) "8"
}

参见

  • cubrid_lock_read() - Set a read lock on the given OID

cubrid_lock_read
cubrid_move_cursor
CUBRID 函数


Move the cursor in the result

cubrid_lock_write
cubrid_next_result
CUBRID 函数
PHP Manual

cubrid_move_cursor

(PECL CUBRID >= 8.3.0)

cubrid_move_cursor — Move the cursor in the result

说明

int cubrid_move_cursor ( resource $req_identifier , int $offset [, int $origin = CUBRID_CURSOR_CURRENT ] )

The cubrid_move_cursor() function is used to move the current cursor location of req_identifier by the value set in the offset argument, to the direction set in the origin argument. To set the origin argument, you can use CUBRID_CURSOR_FIRST for the first part of the result, CUBRID_CURSOR_CURRENT for the current location of the result, or CUBRID_CURSOR_LAST for the last part of the result. If origin argument is not explicitly designated, then the function uses CUBRID_CURSOR_CURRENT as its default value.

If the value of cursor movement range goes over the valid limit, then the cursor moves to the next location after the valid range for the cursor. For example, if you move 20 units in the result with the size of 10, then the cursor will move to 11th place and return CUBRID_NO_MORE_DATA.

参数

req_identifier

Request identifier.

offset

Number of units you want to move the cursor.

origin

Location where you want to move the cursor from CUBRID_CURSOR_FIRST, CUBRID_CURSOR_CURRENT, CUBRID_CURSOR_LAST.

返回值

TRUE, when process is successful.

FALSE, when process is unsucceful.

范例

Example #1 cubrid_move_cursor() example

<?php
$conn = cubrid_connect("127.0.0.1", 33000, "demodb", "dba");

$req = cubrid_execute($conn, "SELECT * FROM code");
cubrid_move_cursor($req, 1, CUBRID_CURSOR_LAST);

$result = cubrid_fetch_row($req);
var_dump($result);

cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
$result = cubrid_fetch_row($req);
var_dump($result);

cubrid_move_cursor($req, 1, CUBRID_CURSOR_CURRENT);
$result = cubrid_fetch_row($req);
var_dump($result);

cubrid_close_request($req);
cubrid_disconnect($conn);
?>

以上例程会输出：

array(2) {
  [0]=>
  string(1) "G"
  [1]=>
  string(4) "Gold"
}
array(2) {
  [0]=>
  string(1) "X"
  [1]=>
  string(5) "Mixed"
}
array(2) {
  [0]=>
  string(1) "M"
  [1]=>
  string(3) "Man"
}

参见

  • cubrid_execute() - Execute a prepared SQL statement

cubrid_lock_write
cubrid_next_result
CUBRID 函数


Get result of next query when executing multiple SQL statements

cubrid_move_cursor
cubrid_num_cols
CUBRID 函数
PHP Manual

cubrid_next_result

(PECL CUBRID >= 8.4.0)

cubrid_next_result — Get result of next query when executing multiple SQL statements

说明

bool cubrid_next_result ( resource $result )

The cubrid_next_result() function is used to get results of next query if multiple SQL statements are executed and CUBRID_EXEC_QUERY_ALL flag is set upon cubrid_execute().

参数

result

result comes from a call to cubrid_execute()

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_next_result() example

<?php
$conn = cubrid_connect("127.0.0.1", 33000, "demodb", "dba");

$sql_stmt = "SELECT * FROM code; SELECT * FROM history WHERE host_year=2004 AND event_code=20281";
$res = cubrid_execute($conn, $sql_stmt, CUBRID_EXEC_QUERY_ALL);

get_result_info($res);
cubrid_next_result($res);
get_result_info($res);

function get_result_info($req)
{
    printf("\n------------ get_result_info --------------------\n");

    $row_num = cubrid_num_rows($req);
    $col_num = cubrid_num_cols($req);

    $column_name_list = cubrid_column_names($req);
    $column_type_list = cubrid_column_types($req);

    $column_last_name = cubrid_field_name($req, $col_num - 1);
    $column_last_table = cubrid_field_table($req, $col_num - 1);

    $column_last_type = cubrid_field_type($req, $col_num - 1);
    $column_last_len = cubrid_field_len($req, $col_num - 1);

    $column_1_flags = cubrid_field_flags($req, 1);

    printf("%-30s %d\n", "Row count:", $row_num);
    printf("%-30s %d\n", "Column count:", $col_num);
    printf("\n");

    printf("%-30s %-30s %-15s\n", "Column Names", "Column Types", "Column Len");
    printf("------------------------------------------------------------------------------\n");

    $size = count($column_name_list);
    for($i = 0; $i < $size; $i++) {
        $column_len = cubrid_field_len($req, $i);
        printf("%-30s %-30s %-15s\n", $column_name_list[$i], $column_type_list[$i], $column_len);
    }
    printf("\n\n");

    printf("%-30s %s\n", "Last Column Name:", $column_last_name);
    printf("%-30s %s\n", "Last Column Table:", $column_last_table);
    printf("%-30s %s\n", "Last Column Type:", $column_last_type);
    printf("%-30s %d\n", "Last Column Len:", $column_last_len);
    printf("%-30s %s\n", "Second Column Flags:", $column_1_flags);

    printf("\n\n");
}
?>

以上例程会输出：

------------ get_result_info --------------------
Row count:                     6
Column count:                  2

Column Names                   Column Types                   Column Len
------------------------------------------------------------------------------
s_name                         char                           1
f_name                         varchar                        6

Last Column Name:              f_name
Last Column Table:             code
Last Column Type:              varchar
Last Column Len:               6
Second Column Flags:

------------ get_result_info --------------------
Row count:                     4
Column count:                  5

Column Names                   Column Types                   Column Len
------------------------------------------------------------------------------
event_code                     integer                        11
athlete                        varchar                        40
host_year                      integer                        11
score                          varchar                        10
unit                           varchar                        5

Last Column Name:              unit
Last Column Table:             history
Last Column Type:              varchar
Last Column Len:               5
Second Column Flags:           not_null primary_key unique_key

参见

  • cubrid_execute() - Execute a prepared SQL statement

cubrid_move_cursor
cubrid_num_cols
CUBRID 函数


Return the number of columns in the result set

cubrid_next_result
cubrid_num_rows
CUBRID 函数
PHP Manual

cubrid_num_cols

(PECL CUBRID >= 8.3.0)

cubrid_num_cols — Return the number of columns in the result set

说明

int cubrid_num_cols ( resource $result )

The cubrid_num_cols() function is used to get the number of columns from the query result. It can only be used when the query executed is a select statement.

参数

result

Result.

返回值

Number of columns, when process is successful.

FALSE, if SQL statement is not SELECT.

范例

Example #1 cubrid_num_cols() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");

$req = cubrid_execute($conn, "SELECT * FROM code");

$row_num = cubrid_num_rows($req);
$col_num = cubrid_num_cols($req);

printf("Row Num: %d\nColumn Num: %d\n", $row_num, $col_num);

cubrid_disconnect($conn);
?>

以上例程会输出：

Row Num: 6
Column Num: 2

参见

  • cubrid_execute() - Execute a prepared SQL statement
  • cubrid_num_rows() - Get the number of rows in the result set

cubrid_next_result
cubrid_num_rows
CUBRID 函数


Get the number of rows in the result set

cubrid_num_cols
cubrid_pconnect_with_url
CUBRID 函数
PHP Manual

cubrid_num_rows

(PECL CUBRID >= 8.3.0)

cubrid_num_rows — Get the number of rows in the result set

说明

int cubrid_num_rows ( resource $result )

The cubrid_num_rows() function is used to get the number of rows from the query result. You can use it only when the query executed is a select statement. When you want to know such value for INSERT, UPDATE, or DELETE query, you have to use the cubrid_affected_rows() function.

Note: The cubrid_num_rows() function can only be used for synchronous query; it returns 0 when it is used for asynchronous query.

参数

result

result comes from a call to cubrid_execute(), cubrid_query() and cubrid_prepare()

返回值

Number of rows, when process is successful.

0 when the query was done in async mode.

-1, if SQL statement is not SELECT.

FALSE when process is unsuccessful.

范例

Example #1 cubrid_num_rows() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");

$req = cubrid_execute($conn, "SELECT * FROM code");

$row_num = cubrid_num_rows($req);
$col_num = cubrid_num_cols($req);

printf("Row Num: %d\nColumn Num: %d\n", $row_num, $col_num);

cubrid_disconnect($conn);
?>

以上例程会输出：

Row Num: 6
Column Num: 2

参见

  • cubrid_execute() - Execute a prepared SQL statement
  • cubrid_num_cols() - Return the number of columns in the result set
  • cubrid_affected_rows() - Return the number of rows affected by the last SQL statement

cubrid_num_cols
cubrid_pconnect_with_url
CUBRID 函数


Open a persistent connection to CUBRID server

cubrid_num_rows
cubrid_pconnect
CUBRID 函数
PHP Manual

cubrid_pconnect_with_url

(PECL CUBRID >= 8.3.1)

cubrid_pconnect_with_url — Open a persistent connection to CUBRID server

说明

resource cubrid_pconnect_with_url ( string $conn_url [, string $userid [, string $passwd ]] )

Establishes a persistent connection to a CUBRID server.

cubrid_pconnect_with_url() acts very much like cubrid_connect_with_url() with two major differences.

First, when connecting, the function would first try to find a (persistent) link that's already open with the same host, port, dbname and userid. If one is found, an identifier for it will be returned instead of opening a new connection.

Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (cubrid_close() or cubrid_disconnect() will not close links established by cubrid_pconnect_with_url()).

This type of link is therefore called 'persistent'.

<url> ::= CUBRID:<host>:<db_name>:<db_user>:<db_password>:[?<properties>]

<properties> ::= <property> [&<property>]

<properties> ::= alhosts=<alternative_hosts>[ &rctime=<time>]

<properties> ::= login_timeout=<milli_sec>

<properties> ::= query_timeout=<milli_sec>

<properties> ::= disconnect_on_query_timeout=true|false

<alternative_hosts> ::= <standby_broker1_host>:<port> [,<standby_broker2_host>:<port>]

<host> := HOSTNAME | IP_ADDR

<time> := SECOND

<milli_sec> := MILLI SECOND

  • host : A host name or IP address of the master database
  • db_name : A name of the database
  • db_user : A name of the database user
  • db_password : A database user password
  • alhosts : Specifies the broker information of the standby server, which is used for failover when it is impossible to connect to the active server. You can specify multiple brokers for failover, and the connection to the brokers is attempted in the order listed in alhosts
  • rctime : An interval between the attempts to connect to the active broker in which failure occurred. After a failure occurs, the system connects to the broker specified by althosts (failover), terminates the transaction, and then attempts to connect to the active broker of the master database at every rctime. The default value is 600 seconds.
  • login_timeout : Timeout value (unit: msec.) for database login. The default value is 0, which means infinite postponement.
  • query_timeout : Timeout value (unit: msec.) for query request. Upon timeout, a message to cancel requesting a query transferred to server is sent. The return value can depend on the disconnect_on_query_timeout configuration; even though the message to cancel a request is sent to server, that request may succeed.
  • disconnect_on_query_timeout : Configures a value whether to immediately return an error of function being executed upon timeout. The default value is false.

Note:

? and : that are used as identifiers in PHP connection URL can't be included in the password. The following is an example of a password that is invalid to use as connection URL because it contains "?:".

$url = "CUBRID:localhost:33000:tdb:dba:12?:?login_timeout=100";

Passwords that contain ? or : may be passed as a separate parameter.

$url = "CUBRID:localhost:33000:tbd:::?login_timeout=100";

$conn = cubrid_pconnect_with_url ($url, "dba", "12?");

If user or password is empty,you can't delete ":",the following is an example.

$url = "CUBRID:localhost:33000:demodb:::";

参数

conn_url

A character string that contains server connection information.

userid

User name for the database.

passwd

User password.

返回值

Connection identifier, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_pconnect_with_url() url without properties example

<?php
$conn_url = "CUBRID:127.0.0.1:33000:demodb:dba::"
$con = cubrid_pconnect_with_url ($conn_url);

if ($con) {
   echo "connected successfully";
   cubrid_execute($con, "create table person(id int,name char(16))");
   $req =cubrid_execute($con, "insert into person values(1,'James')");

   if ($req) {
      cubrid_close_request ($req);
      cubrid_commit ($con);
   } else {
      cubrid_rollback ($con);
   }
   cubrid_disconnect ($con);
}
?>

Example #2 cubrid_pconnect_with_url() url with properties example

<?php
$conn_url = "CUBRID:127.0.0.1:33000:demodb:dba::?althost=10.34.63.132:33088&rctime=100"
$con = cubrid_pconnect_with_url ($conn_url);

if ($con) {
   echo "connected successfully";
   $req =cubrid_execute($con, "insert into person values(1,'James')");

   if ($req) {
      cubrid_close_request ($req);
      cubrid_commit ($con);
   } else {
      cubrid_rollback ($con);
   }
   cubrid_disconnect ($con);
}
?>

参见

  • cubrid_connect() - Open a connection to a CUBRID Server
  • cubrid_pconnect() - Open a persistent connection to a CUBRID server
  • cubrid_pconnect_with_url()
  • cubrid_disconnect() - Close a database connection
  • cubrid_close() - Close CUBRID connection

cubrid_num_rows
cubrid_pconnect
CUBRID 函数


Open a persistent connection to a CUBRID server

cubrid_pconnect_with_url
cubrid_prepare
CUBRID 函数
PHP Manual

cubrid_pconnect

(PECL CUBRID >= 8.3.1)

cubrid_pconnect — Open a persistent connection to a CUBRID server

说明

resource cubrid_pconnect ( string $host , int $port , string $dbname [, string $userid [, string $passwd ]] )

Establishes a persistent connection to a CUBRID server.

cubrid_pconnect() acts very much like cubrid_connect() with two major differences.

First, when connecting, the function would first try to find a (persistent) link that's already open with the same host, port, dbname and userid. If one is found, an identifier for it will be returned instead of opening a new connection.

Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (cubrid_close() or cubrid_disconnect() will not close links established by cubrid_pconnect()).

This type of link is therefore called 'persistent'.

参数

host

Host name or IP address of CUBRID CAS server.

port

Port number of CUBRID CAS server (BROKER_PORT configured in $CUBRID/conf/cubrid_broker.conf).

dbname

Name of database.

userid

User name for the database.

passwd

User password.

返回值

Connection identifier, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_connect() example

<?php
printf("%-30s %s\n", "CUBRID PHP Version:", cubrid_version());

printf("\n");

$conn = cubrid_pconnect("localhost", 33000, "demodb", "dba");

if (!$conn) {
    die('Connect Error ('. cubrid_error_code() .')' . cubrid_error_msg());
}

$db_params = cubrid_get_db_parameter($conn);

while (list($param_name, $param_value) = each($db_params)) {
    printf("%-30s %s\n", $param_name, $param_value);
}

printf("\n");

$server_info = cubrid_get_server_info($conn);
$client_info = cubrid_get_client_info();

printf("%-30s %s\n", "Server Info:", $server_info);
printf("%-30s %s\n", "Client Info:", $client_info);

printf("\n");

$charset = cubrid_get_charset($conn);

printf("%-30s %s\n", "CUBRID Charset:", $charset);

cubrid_disconnect($conn);
?>

以上例程会输出：

CUBRID PHP Version:            9.1.0.0001

PARAM_ISOLATION_LEVEL          3
LOCK_TIMEOUT                   -1
MAX_STRING_LENGTH              1073741823
PARAM_AUTO_COMMIT              1

Server Info:                   9.1.0.0212
Client Info:                   9.1.0

CUBRID Charset:                iso8859-1

参见

  • cubrid_connect() - Open a connection to a CUBRID Server
  • cubrid_connect_with_url() - Establish the environment for connecting to CUBRID server
  • cubrid_pconnect_with_url() - Open a persistent connection to CUBRID server
  • cubrid_disconnect() - Close a database connection
  • cubrid_close() - Close CUBRID connection

cubrid_pconnect_with_url
cubrid_prepare
CUBRID 函数


Prepare a SQL statement for execution

cubrid_pconnect
cubrid_put
CUBRID 函数
PHP Manual

cubrid_prepare

(PECL CUBRID >= 8.3.0)

cubrid_prepare — Prepare a SQL statement for execution

说明

resource cubrid_prepare ( resource $conn_identifier , string $prepare_stmt [, int $option = 0 ] )

The cubrid_prepare() function is a sort of API which represents SQL statements compiled previously to a given connection handle. This pre-compiled SQL statement will be included in the cubrid_prepare().

Accordingly, you can use this statement effectively to execute several times repeatedly or to process long data. Only a single statement can be used and a parameter may put a question mark (?) to appropriate area in the SQL statement. Add a parameter when you bind a value in the VALUES clause of INSERT statement or in the WHERE clause. Note that it is allowed to bind a value to a MARK(?) by using the cubrid_bind() function only.

参数

conn_identifier

Connection identifier.

prepare_stmt

Prepare query.

option

OID return option CUBRID_INCLUDE_OID.

返回值

Request identifier, if process is successful;

FALSE, if process is unsuccessful.

范例

Example #1 cubrid_prepare() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");

$sql = <<<EOD
SELECT g.event_code, e.name
FROM game g
JOIN event e ON g.event_code=e.code
WHERE host_year = ? AND event_code NOT IN (SELECT event_code FROM game WHERE host_year=?) GROUP BY event_code;
EOD;

$req = cubrid_prepare($conn, $sql);

cubrid_bind($req, 1, 2004);
cubrid_bind($req, 2, 2000);
cubrid_execute($req);

$row_num = cubrid_num_rows($req);
printf("There are %d event that exits in 2004 olympic but not in 2000. For example:\n\n", $row_num);

printf("%-15s %s\n", "Event_code", "Event_name");
printf("----------------------------\n");

$row = cubrid_fetch_assoc($req);
printf("%-15d %s\n", $row["event_code"], $row["name"]);
$row = cubrid_fetch_assoc($req);
printf("%-15d %s\n", $row["event_code"], $row["name"]);

cubrid_disconnect($conn);
?>

以上例程会输出：

There are 27 event that exits in 2004 olympic but not in 2000. For example:

Event_code      Event_name
----------------------------
20063           +91kg
20070           64kg

参见

  • cubrid_execute() - Execute a prepared SQL statement
  • cubrid_bind() - Bind variables to a prepared statement as parameters

cubrid_pconnect
cubrid_put
CUBRID 函数


Update a column using OID

cubrid_prepare
cubrid_rollback
CUBRID 函数
PHP Manual

cubrid_put

(PECL CUBRID >= 8.3.0)

cubrid_put — Update a column using OID

说明

int cubrid_put ( resource $conn_identifier , string $oid [, string $attr ], mixed $value )

The cubrid_put() function is used to update an attribute of the instance of the given oid.

You can update single attribute by using string data type to set attr. In such case, you can use integer, floating point or string type data for the value argument. To update multiple number of attributes, you can disregard the attr argument, and set value argument with associative array data type.

参数

conn_identifier

Connection identifier.

oid

OID of the instance that you want to update.

attr

Name of the attribute that you want to update.

value

New value that you want to assign to the attribute.

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_put() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");

@cubrid_execute($conn, "DROP TABLE foo");
cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c list(int), d char(10))");
cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");
cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(2, {4,5,7}, {44,55,66,666}, 'b')");

$req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
$oid = cubrid_current_oid($req);

$attr = cubrid_col_get($conn, $oid, "b");
var_dump($attr);

cubrid_put($conn, $oid, "b", array(2, 4, 8));

$attr = cubrid_col_get($conn, $oid, "b");
var_dump($attr);

cubrid_close_request($req);
cubrid_disconnect($conn);
?>

以上例程会输出：

array(3) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [2]=>
  string(1) "3"
}
array(3) {
  [0]=>
  string(1) "2"
  [1]=>
  string(1) "4"
  [2]=>
  string(1) "8"
}

参见

  • cubrid_get() - Get a column using OID
  • cubrid_set_add() - Insert a single element to set type column using OID
  • cubrid_set_drop() - Delete an element from set type column using OID
  • cubrid_seq_insert() - Insert an element to a sequence type column using OID
  • cubrid_seq_drop() - Delete an element from sequence type column using OID
  • cubrid_seq_put() - Update the element value of sequence type column using OID

cubrid_prepare
cubrid_rollback
CUBRID 函数


Roll back a transaction

cubrid_put
cubrid_schema
CUBRID 函数
PHP Manual

cubrid_rollback

(PECL CUBRID >= 8.3.0)

cubrid_rollback — Roll back a transaction

说明

bool cubrid_rollback ( resource $conn_identifier )

The cubrid_rollback() function executes rollback on the transaction pointed by conn_identifier, currently in progress.

Connection to server is closed after calling cubrid_rollback(). Connection handle, however, is still valid.

参数

conn_identifier

Connection identifier.

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_rollback() example

<?php
$conn = cubrid_connect("127.0.0.1", 33000, "demodb", "dba");
cubrid_set_autocommit($conn,false);

@cubrid_execute($conn, "DROP TABLE publishers");

$sql = <<<EOD
CREATE TABLE publishers(
pub_id CHAR(3),
pub_name VARCHAR(20),
city VARCHAR(15),
state CHAR(2),
country VARCHAR(15)
)
EOD;

if (!cubrid_execute($conn, $sql)) {
    printf("Error facility: %d\nError code: %d\nError msg: %s\n", cubrid_error_code_facility(), cubrid_error_code(), cubrid_error_msg());

    cubrid_disconnect($conn);
    exit;
}

$req = cubrid_prepare($conn, "INSERT INTO publishers VALUES(?, ?, ?, ?, ?)");

$id_list = array("P01", "P02", "P03", "P04");
$name_list = array("Abatis Publishers", "Core Dump Books", "Schadenfreude Press", "Tenterhooks Press");
$city_list = array("New York", "San Francisco", "Hamburg", "Berkeley");
$state_list = array("NY", "CA", NULL, "CA");
$country_list = array("USA", "USA", "Germany", "USA");

for ($i = 0, $size = count($id_list); $i < $size; $i++) {
    cubrid_bind($req, 1, $id_list[$i]);
    cubrid_bind($req, 2, $name_list[$i]);
    cubrid_bind($req, 3, $city_list[$i]);
    cubrid_bind($req, 4, $state_list[$i]);
    cubrid_bind($req, 5, $country_list[$i]);

    if (!($ret = cubrid_execute($req))) {
        break;
    }
}

if (!$ret) {
    cubrid_rollback($conn);
} else {
    cubrid_commit($conn);

    $req = cubrid_execute($conn, "SELECT * FROM publishers");
    while ($result = cubrid_fetch_assoc($req)) {
        printf("%-3s %-20s %-15s %-3s %-15s\n",
            $result["pub_id"], $result["pub_name"], $result["city"], $result["state"], $result["country"]);
    }
}

cubrid_disconnect($conn);
?>

以上例程会输出：

P01 Abatis Publishers    New York        NY  USA
P02 Core Dump Books      San Francisco   CA  USA
P03 Schadenfreude Press  Hamburg             Germany
P04 Tenterhooks Press    Berkeley        CA  USA

参见

  • cubrid_commit() - Commit a transaction
  • cubrid_disconnect() - Close a database connection

cubrid_put
cubrid_schema
CUBRID 函数


Get the requested schema information

cubrid_rollback
cubrid_seq_drop
CUBRID 函数
PHP Manual

cubrid_schema

(PECL CUBRID >= 8.3.0)

cubrid_schema — Get the requested schema information

说明

array cubrid_schema ( resource $conn_identifier , int $schema_type [, string $class_name [, string $attr_name ]] )

The cubrid_schema() function is used to get the requested schema information from database. You have to designate class_name, if you want to get information on certain class, attr_name, if you want to get information on certain attribute (can be used only with CUBRID_ SCH_ATTR_PRIVILEGE).

The result of the cubrid_schema function is returned as a two-dimensional array (column (associative array) * row (numeric array)). The following tables shows types of schema and the column structure of the result array to be returned based on the schema type.

Result Composition of Each Type
Schema | Column Number | Column Name | Value
CUBRID_SCH_CLASS | 1 | NAME |
 | 2 | TYPE | 0:system class 1:vclass 2:class
CUBRID_SCH_VCLASS | 1 | NAME |
 | 2 | TYPE | 1:vclass
CUBRID_SCH_QUERY_SPEC | 1 | QUERY_SPEC |
CUBRID_SCH_ATTRIBUTE / CUBRID_SCH_CLASS_ATTRIBUTE | 1 | ATTR_NAME |
 | 2 | DOMAIN |
 | 3 | SCALE |
 | 4 | PRECISION |
 | 5 | INDEXED | 1:indexed
 | 6 | NOT NULL | 1:not null
 | 7 | SHARED | 1:shared
 | 8 | UNIQUE | 1:unique
 | 9 | DEFAULT |
 | 10 | ATTR_ORDER | base:1
 | 11 | CLASS_NAME |
 | 12 | SOURCE_CLASS |
 | 13 | IS_KEY | 1:key
CUBRID_SCH_METHOD / CUBRID_SCH_CLASS_METHOD | 1 | NAME |
 | 2 | RET_DOMAIN |
 | 3 | ARG_DOMAIN |
CUBRID_SCH_METHOD_FILE | 1 | METHOD_FILE |
CUBRID_SCH_SUPERCLASS / CUBRID_SCH_DIRECT_SUPER_CLASS / CUBRID_SCH_SUBCLASS | 1 | CLASS_NAME |
 | 2 | TYPE | 0:system class 1:vclass 2:class
CUBRID_SCH_CONSTRAINT | 1 | TYPE | 0:unique 1:index 2:reverse unique 3:reverse index
 | 2 | NAME |
 | 3 | ATTR_NAME |
 | 4 | NUM_PAGES |
 | 5 | NUM_KEYS |
 | 6 | PRIMARY_KEY | 1:primary key
 | 7 | KEY_ORDER | base:1
CUBRID_SCH_TRIGGER | 1 | NAME |
 | 2 | STATUS |
 | 3 | EVENT |
 | 4 | TARGET_CLASS |
 | 5 | TARGET_ATTR |
 | 6 | ACTION_TIME |
 | 7 | ACTION |
 | 8 | PRIORITY |
 | 9 | CONDITION_TIME |
 | 10 | CONDITION |
CUBRID_SCH_CLASS_PRIVILEGE / CUBRID_SCH_ATTR_PRIVILEGE | 1 | CLASS_NAME / ATTR_NAME |
 | 2 | PRIVILEGE |
 | 3 | GRANTABLE |
CUBRID_SCH_PRIMARY_KEY | 1 | CLASS_NAME |
 | 2 | ATTR_NAME |
 | 3 | KEY_SEQ | base:1
 | 4 | KEY_NAME |
CUBRID_SCH_IMPORTED_KEYS / CUBRID_SCH_EXPORTED_KEYS / CUBRID_SCH_CROSS_REFERENCE | 1 | PKTABLE_NAME |
 | 2 | PKCOLUMN_NAME |
 | 3 | FKTABLE_NAME | base:1
 | 4 | FKCOLUMN_NAME |
 | 5 | KEY_SEQ | base:1
 | 6 | UPDATE_ACTION | 0:cascade 1:restrict 2:no action 3:set null
 | 7 | DELETE_ACTION | 0:cascade 1:restrict 2:no action 3:set null
 | 8 | FK_NAME |
 | 9 | PK_NAME |

参数

conn_identifier

Connection identifier.

schema_type

Schema data that you want to know.

class_name

Class you want to know the schema of.

attr_name

Attribute you want to know the schema of.

返回值

Array containing the schema information, when process is successful;

FALSE, when process is unsuccessful

更新日志

版本 | 说明
8.3.1 | Change return value: when process is unsuccessful, return false, not -1.

范例

Example #1 cubrid_schema() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");

printf("\n--- Primary Key ---\n");
$pk = cubrid_schema($conn, CUBRID_SCH_PRIMARY_KEY, "game");
var_dump($pk);

printf("\n--- Foreign Keys ---\n");
$fk = cubrid_schema($conn, CUBRID_SCH_IMPORTED_KEYS, "game");
var_dump($fk);

printf("\n--- Column Attribute ---\n");
$attr = cubrid_schema($conn, CUBRID_SCH_ATTRIBUTE, "stadium", "area");
var_dump($attr);

cubrid_disconnect($conn);
?>

以上例程会输出：

--- Primary Key ---
array(3) {
  [0]=>
  array(4) {
    ["CLASS_NAME"]=>
    string(4) "game"
    ["ATTR_NAME"]=>
    string(12) "athlete_code"
    ["KEY_SEQ"]=>
    string(1) "3"
    ["KEY_NAME"]=>
    string(41) "pk_game_host_year_event_code_athlete_code"
  }
  [1]=>
  array(4) {
    ["CLASS_NAME"]=>
    string(4) "game"
    ["ATTR_NAME"]=>
    string(10) "event_code"
    ["KEY_SEQ"]=>
    string(1) "2"
    ["KEY_NAME"]=>
    string(41) "pk_game_host_year_event_code_athlete_code"
  }
  [2]=>
  array(4) {
    ["CLASS_NAME"]=>
    string(4) "game"
    ["ATTR_NAME"]=>
    string(9) "host_year"
    ["KEY_SEQ"]=>
    string(1) "1"
    ["KEY_NAME"]=>
    string(41) "pk_game_host_year_event_code_athlete_code"
  }
}

--- Foreign Keys ---
array(2) {
  [0]=>
  array(9) {
    ["PKTABLE_NAME"]=>
    string(7) "athlete"
    ["PKCOLUMN_NAME"]=>
    string(4) "code"
    ["FKTABLE_NAME"]=>
    string(4) "game"
    ["FKCOLUMN_NAME"]=>
    string(12) "athlete_code"
    ["KEY_SEQ"]=>
    string(1) "1"
    ["UPDATE_RULE"]=>
    string(1) "1"
    ["DELETE_RULE"]=>
    string(1) "1"
    ["FK_NAME"]=>
    string(20) "fk_game_athlete_code"
    ["PK_NAME"]=>
    string(15) "pk_athlete_code"
  }
  [1]=>
  array(9) {
    ["PKTABLE_NAME"]=>
    string(5) "event"
    ["PKCOLUMN_NAME"]=>
    string(4) "code"
    ["FKTABLE_NAME"]=>
    string(4) "game"
    ["FKCOLUMN_NAME"]=>
    string(10) "event_code"
    ["KEY_SEQ"]=>
    string(1) "1"
    ["UPDATE_RULE"]=>
    string(1) "1"
    ["DELETE_RULE"]=>
    string(1) "1"
    ["FK_NAME"]=>
    string(18) "fk_game_event_code"
    ["PK_NAME"]=>
    string(13) "pk_event_code"
  }
}

--- Column Attribute ---
array(1) {
  [0]=>
  array(13) {
    ["ATTR_NAME"]=>
    string(4) "area"
    ["DOMAIN"]=>
    string(1) "7"
    ["SCALE"]=>
    string(1) "2"
    ["PRECISION"]=>
    string(2) "10"
    ["INDEXED"]=>
    string(1) "0"
    ["NON_NULL"]=>
    string(1) "0"
    ["SHARED"]=>
    string(1) "0"
    ["UNIQUE"]=>
    string(1) "0"
    ["DEFAULT"]=>
    NULL
    ["ATTR_ORDER"]=>
    string(1) "4"
    ["CLASS_NAME"]=>
    string(7) "stadium"
    ["SOURCE_CLASS"]=>
    string(7) "stadium"
    ["IS_KEY"]=>
    string(1) "0"
  }
}
cubrid_rollback
cubrid_seq_drop
CUBRID 函数


Delete an element from sequence type column using OID

cubrid_schema
cubrid_seq_insert
CUBRID 函数
PHP Manual

cubrid_seq_drop

(PECL CUBRID >= 8.3.0)

cubrid_seq_drop — Delete an element from sequence type column using OID

说明

bool cubrid_seq_drop ( resource $conn_identifier , string $oid , string $attr_name , int $index )

The cubrid_seq_drop() function is used to delete an element you request from the given sequence type attribute in the database.

参数

conn_identifier

Connection identifier.

oid

OID of the instance you want to work with.

attr_name

Name of the attribute that you want to delete an element from.

index

Index of the element that you want to delete (1-based).

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_seq_drop() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");

@cubrid_execute($conn, "DROP TABLE foo");
cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c sequence(int), d char(10))");
cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");

$req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
$oid = cubrid_current_oid($req);

$attr = cubrid_col_get($conn, $oid, "c");
var_dump($attr);

cubrid_seq_drop($conn, $oid, "c", 4);

$attr = cubrid_col_get($conn, $oid, "c");
var_dump($attr);

cubrid_close_request($req);
cubrid_disconnect($conn);
?>

以上例程会输出：

array(4) {
  [0]=>
  string(2) "11"
  [1]=>
  string(2) "22"
  [2]=>
  string(2) "33"
  [3]=>
  string(3) "333"
}
array(3) {
  [0]=>
  string(2) "11"
  [1]=>
  string(2) "22"
  [2]=>
  string(2) "33"
}

参见

  • cubrid_seq_insert() - Insert an element to a sequence type column using OID
  • cubrid_seq_put() - Update the element value of sequence type column using OID

cubrid_schema
cubrid_seq_insert
CUBRID 函数


Insert an element to a sequence type column using OID

cubrid_seq_drop
cubrid_seq_put
CUBRID 函数
PHP Manual

cubrid_seq_insert

(PECL CUBRID >= 8.3.0)

cubrid_seq_insert — Insert an element to a sequence type column using OID

说明

bool cubrid_seq_insert ( resource $conn_identifier , string $oid , string $attr_name , int $index , string $seq_element )

The cubrid_col_insert() function is used to insert an element to a sequence type attribute in a requested location.

参数

conn_identifier

Connection identifier.

oid

OID of the instance you want to work with.

attr_name

Name of the attribute you want to insert an instance to.

index

Location of the element, you want to insert the element to (1-based).

seq_element

Content of the element that you want to insert.

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_seq_insert() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");

@cubrid_execute($conn, "DROP TABLE foo");
cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c sequence(int), d char(10))");
cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");

$req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
$oid = cubrid_current_oid($req);

$attr = cubrid_col_get($conn, $oid, "c");
var_dump($attr);

cubrid_seq_insert($conn, $oid, "c", 5, "44");

$attr = cubrid_col_get($conn, $oid, "c");
var_dump($attr);

cubrid_close_request($req);
cubrid_disconnect($conn);
?>

以上例程会输出：

array(4) {
  [0]=>
  string(2) "11"
  [1]=>
  string(2) "22"
  [2]=>
  string(2) "33"
  [3]=>
  string(3) "333"
}
array(5) {
  [0]=>
  string(2) "11"
  [1]=>
  string(2) "22"
  [2]=>
  string(2) "33"
  [3]=>
  string(3) "333"
  [4]=>
  string(2) "44"
}

参见

  • cubrid_seq_drop() - Delete an element from sequence type column using OID
  • cubrid_seq_put() - Update the element value of sequence type column using OID

cubrid_seq_drop
cubrid_seq_put
CUBRID 函数


Update the element value of sequence type column using OID

cubrid_seq_insert
cubrid_set_add
CUBRID 函数
PHP Manual

cubrid_seq_put

(PECL CUBRID >= 8.3.0)

cubrid_seq_put — Update the element value of sequence type column using OID

说明

bool cubrid_seq_put ( resource $conn_identifier , string $oid , string $attr_name , int $index , string $seq_element )

The cubrid_seq_put() function is used to update the content of the requested element in a sequent type attribute using OID.

参数

conn_identifier

Connection identifier.

oid

OID of the instance you want to work with.

attr_name

Name of the attribute that you want to update an element.

index

Index (1-based) of the element that you want to update.

seq_element

New content that you want to use for the update.

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_seq_put() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");

@cubrid_execute($conn, "DROP TABLE foo");
cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c sequence(int), d char(10))");
cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");

$req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
$oid = cubrid_current_oid($req);

$attr = cubrid_col_get($conn, $oid, "c");
var_dump($attr);

cubrid_seq_put($conn, $oid, "c", 1, "111");

$attr = cubrid_col_get($conn, $oid, "c");
var_dump($attr);

cubrid_close_request($req);
cubrid_disconnect($conn);
?>

以上例程会输出：

array(4) {
  [0]=>
  string(2) "11"
  [1]=>
  string(2) "22"
  [2]=>
  string(2) "33"
  [3]=>
  string(3) "333"
}
array(4) {
  [0]=>
  string(3) "111"
  [1]=>
  string(2) "22"
  [2]=>
  string(2) "33"
  [3]=>
  string(3) "333"
}

参见

  • cubrid_seq_drop() - Delete an element from sequence type column using OID
  • cubrid_seq_insert() - Insert an element to a sequence type column using OID

cubrid_seq_insert
cubrid_set_add
CUBRID 函数


Insert a single element to set type column using OID

cubrid_seq_put
cubrid_set_autocommit
CUBRID 函数
PHP Manual

cubrid_set_add

(PECL CUBRID >= 8.3.0)

cubrid_set_add — Insert a single element to set type column using OID

说明

bool cubrid_set_add ( resource $conn_identifier , string $oid , string $attr_name , string $set_element )

The cubrid_set_add() function is used to insert a single element to a set type attribute (set, multiset, sequence) you requested.

参数

conn_identifier

Connection identifier.

oid

OID of the instance you want to work with.

attr_name

Name of the attribute you want to insert an element.

set_element

Content of the element you want to insert.

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_set_add() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");

@cubrid_execute($conn, "DROP TABLE foo");
cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c list(int), d char(10))");
cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");

$req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
$oid = cubrid_current_oid($req);

$attr = cubrid_col_get($conn, $oid, "b");
var_dump($attr);

cubrid_set_add($conn, $oid, "b", "4");

$attr = cubrid_col_get($conn, $oid, "b");
var_dump($attr);

cubrid_close_request($req);
cubrid_disconnect($conn);
?>

以上例程会输出：

array(3) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [2]=>
  string(1) "3"
}
array(4) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [2]=>
  string(1) "3"
  [3]=>
  string(1) "4"
}

参见

  • cubrid_seq_drop() - Delete an element from sequence type column using OID

cubrid_seq_put
cubrid_set_autocommit
CUBRID 函数


Set autocommit mode of the connection

cubrid_set_add
cubrid_set_db_parameter
CUBRID 函数
PHP Manual

cubrid_set_autocommit

(PECL CUBRID >= 8.4.0)

cubrid_set_autocommit — Set autocommit mode of the connection

说明

bool cubrid_set_autocommit ( resource $conn_identifier , bool $mode )

The cubrid_set_autocommit() function is used to set the CUBRID database auto-commit mode of the current database connection.

In CUBRID PHP, auto-commit mode is disabled by default for transaction management. When auto-commit mode is truned from off to on, any pending work is automatically committed.

参数

conn_identifier

Connection identifier.

mode

Auto-commit mode. The following constants can be used:

  • CUBRID_AUTOCOMMIT_FALSE
  • CUBRID_AUTOCOMMIT_TRUE

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

参见

  • cubrid_get_autocommit() - Get auto-commit mode of the connection
  • cubrid_commit() - Commit a transaction

cubrid_set_add
cubrid_set_db_parameter
CUBRID 函数


Sets the CUBRID database parameters

cubrid_set_autocommit
cubrid_set_drop
CUBRID 函数
PHP Manual

cubrid_set_db_parameter

(PECL CUBRID >= 8.4.0)

cubrid_set_db_parameter — Sets the CUBRID database parameters

说明

bool cubrid_set_db_parameter ( resource $conn_identifier , int $param_type , int $param_value )

The cubrid_set_db_parameter() function is used to set the CUBRID database parameters. It can set the following CUBRID database parameters:

  • PARAM_ISOLATION_LEVEL
  • PARAM_LOCK_TIMEOUT

Note:

The auto-commit mode can be set by using cubrid_set_autocommit().

参数

conn_identifier

The CUBRID connection. If the connection identifier is not specified, the last link opened by cubrid_connect() is assumed.

param_type

Database parameter type.

param_value

Isolation level value (1-6) or lock timeout (in seconds) value.

返回值

TRUE on success.

FALSE on failure.

范例

Example #1 cubrid_get_db_parameter() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");

$params = cubrid_get_db_parameter($conn);
var_dump($params);

cubrid_set_autocommit($conn, CUBRID_AUTOCOMMIT_TRUE);
cubrid_set_db_parameter($conn, CUBRID_PARAM_ISOLATION_LEVEL, 2);

$params_new = cubrid_get_db_parameter($conn);
var_dump($params_new);

cubrid_disconnect($conn);
?>

以上例程会输出：

array(4) {
  ["PARAM_ISOLATION_LEVEL"]=>
  int(3)
  ["PARAM_LOCK_TIMEOUT"]=>
  int(-1)
  ["PARAM_MAX_STRING_LENGTH"]=>
  int(1073741823)
  ["PARAM_AUTO_COMMIT"]=>
  int(0)
}
array(4) {
  ["PARAM_ISOLATION_LEVEL"]=>
  int(2)
  ["PARAM_LOCK_TIMEOUT"]=>
  int(-1)
  ["PARAM_MAX_STRING_LENGTH"]=>
  int(1073741823)
  ["PARAM_AUTO_COMMIT"]=>
  int(1)
}

参见

  • cubrid_get_db_parameter() - Returns the CUBRID database parameters
  • cubrid_set_autocommit() - Set autocommit mode of the connection

cubrid_set_autocommit
cubrid_set_drop
CUBRID 函数


Delete an element from set type column using OID

cubrid_set_db_parameter
cubrid_set_query_timeout
CUBRID 函数
PHP Manual

cubrid_set_drop

(PECL CUBRID >= 8.3.0)

cubrid_set_drop — Delete an element from set type column using OID

说明

bool cubrid_set_drop ( resource $conn_identifier , string $oid , string $attr_name , string $set_element )

The cubrid_set_drop() function is used to delete an element that you request from the given set type (set, multiset) attribute of the database.

参数

conn_identifier

Connection identifier.

oid

OID of the instance you want to work with.

attr_name

Name of the attribute you want to delete an element from.

set_element

Content of the element you want to delete.

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_set_drop() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb", "dba");

@cubrid_execute($conn, "DROP TABLE foo");
cubrid_execute($conn, "CREATE TABLE foo(a int AUTO_INCREMENT, b set(int), c list(int), d char(10))");
cubrid_execute($conn, "INSERT INTO foo(a, b, c, d) VALUES(1, {1,2,3}, {11,22,33,333}, 'a')");

$req = cubrid_execute($conn, "SELECT * FROM foo", CUBRID_INCLUDE_OID);

cubrid_move_cursor($req, 1, CUBRID_CURSOR_FIRST);
$oid = cubrid_current_oid($req);

$attr = cubrid_col_get($conn, $oid, "b");
var_dump($attr);

cubrid_set_drop($conn, $oid, "b", "1");

$attr = cubrid_col_get($conn, $oid, "b");
var_dump($attr);

cubrid_close_request($req);
cubrid_disconnect($conn);
?>

以上例程会输出：

array(3) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [2]=>
  string(1) "3"
}
array(2) {
  [0]=>
  string(1) "2"
  [1]=>
  string(1) "3"
}

参见

  • cubrid_set_add() - Insert a single element to set type column using OID

cubrid_set_db_parameter
cubrid_set_query_timeout
CUBRID 函数


Set the timeout time of query execution

cubrid_set_drop
cubrid_version
CUBRID 函数
PHP Manual

cubrid_set_query_timeout

(PECL CUBRID >= 8.4.1)

cubrid_set_query_timeout — Set the timeout time of query execution

说明

bool cubrid_set_query_timeout ( resource $req_identifier , int $timeout )

The cubrid_set_query_timeout() function is used to set the timeout time of query execution.

参数

req_identifier

Request identifier.

timeout

Timeout time, unit of msec.

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

参见

  • cubrid_get_query_timeout() - Get the query timeout value of the request

cubrid_set_drop
cubrid_version
CUBRID 函数


Get the CUBRID PHP module's version

cubrid_set_query_timeout
CUBRID MySQL 兼容性函数
CUBRID 函数
PHP Manual

cubrid_version

(PECL CUBRID >= 8.3.0)

cubrid_version — Get the CUBRID PHP module's version

说明

string cubrid_version ( void )

The cubrid_version() function is used to get the CUBRID PHP module's version.

参数

此函数没有参数。

返回值

Version information (eg. "8.3.1.0001").

范例

Example #1 cubrid_version() example

<?php
printf("%-30s %s\n", "CUBRID PHP Version:", cubrid_version());

printf("\n");

$conn = cubrid_connect("localhost", 33088, "demodb", "dba");

if (!$conn) {
    die('Connect Error ('. cubrid_error_code() .')' . cubrid_error_msg());
}

$db_params = cubrid_get_db_parameter($conn);

while (list($param_name, $param_value) = each($db_params)) {
    printf("%-30s %s\n", $param_name, $param_value);
}

printf("\n");

$server_info = cubrid_get_server_info($conn);
$client_info = cubrid_get_client_info();

printf("%-30s %s\n", "Server Info:", $server_info);
printf("%-30s %s\n", "Client Info:", $client_info);

printf("\n");

$charset = cubrid_get_charset($conn);

printf("%-30s %s\n", "CUBRID Charset:", $charset);

cubrid_disconnect($conn);

?>

以上例程会输出：

CUBRID PHP Version:            9.1.0.0001

PARAM_ISOLATION_LEVEL          3
LOCK_TIMEOUT                   -1
MAX_STRING_LENGTH              1073741823
PARAM_AUTO_COMMIT              1

Server Info:                   9.1.0.0212
Client Info:                   9.1.0

CUBRID Charset:                iso8859-1

参见

  • cubrid_error_code() - Get error code for the most recent function call
  • cubrid_error_code_facility() - Get the facility code of error

cubrid_set_query_timeout
CUBRID MySQL 兼容性函数
CUBRID 函数


CUBRID MySQL 兼容性函数

Table of Contents

  • cubrid_affected_rows — Return the number of rows affected by the last SQL statement
  • cubrid_client_encoding — Return the current CUBRID connection charset
  • cubrid_close — Close CUBRID connection
  • cubrid_data_seek — Move the internal row pointer of the CUBRID result
  • cubrid_db_name — Get db name from results of cubrid_list_dbs
  • cubrid_errno — Return the numerical value of the error message from previous CUBRID operation
  • cubrid_error — Get the error message
  • cubrid_fetch_array — Fetch a result row as an associative array, a numeric array, or both
  • cubrid_fetch_assoc — Return the associative array that corresponds to the fetched row
  • cubrid_fetch_field — Get column information from a result and return as an object
  • cubrid_fetch_lengths — Return an array with the lengths of the values of each field from the current row
  • cubrid_fetch_object — Fetch the next row and return it as an object
  • cubrid_fetch_row — Return a numerical array with the values of the current row
  • cubrid_field_flags — Return a string with the flags of the given field offset
  • cubrid_field_len — Get the maximum length of the specified field
  • cubrid_field_name — Return the name of the specified field index
  • cubrid_field_seek — Move the result set cursor to the specified field offset
  • cubrid_field_table — Return the name of the table of the specified field
  • cubrid_field_type — Return the type of the column corresponding to the given field offset
  • cubrid_list_dbs — Return an array with the list of all existing CUBRID databases
  • cubrid_num_fields — Return the number of columns in the result set
  • cubrid_ping — Ping a server connection or reconnect if there is no connection
  • cubrid_query — Send a CUBRID query
  • cubrid_real_escape_string — Escape special characters in a string for use in an SQL statement
  • cubrid_result — Return the value of a specific field in a specific row
  • cubrid_unbuffered_query — Perform a query without fetching the results into memory
cubrid_version
cubrid_affected_rows
CUBRID


Return the number of rows affected by the last SQL statement

CUBRID MySQL 兼容性函数
cubrid_client_encoding
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_affected_rows

(PECL CUBRID >= 8.3.0)

cubrid_affected_rows — Return the number of rows affected by the last SQL statement

说明

int cubrid_affected_rows ([ resource $conn_identifier ] )
int cubrid_affected_rows ([ resource $req_identifier ] )

The cubrid_affected_rows() function is used to get the number of rows affected by the SQL statement (INSERT, DELETE, UPDATE).

参数

conn_identifier

The CUBRID connection. If the connection identifier is not specified, the last link opend by cubrid_connect() is assumed.

req_identifier

Request Identifier, could be returned from either cubrid_prepare() or cubrid_execute(). If the request identifier is not specified, the last identifier requested by cubrid_prepare() or cubrid_execute() is assumed.

返回值

Number of rows affected by the SQL statement, when process is successful.

-1, when SQL statement is not INSERT, DELETE or UPDATE.

FALSE, when the request identifier is not specified, and there is no last request.

范例

Example #1 cubrid_affected_rows() example

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
cubrid_execute($conn, "DROP TABLE IF EXISTS cubrid_test");
cubrid_execute($conn, "CREATE TABLE cubrid_test (d varchar)");
$sql_stmt = "INSERT INTO cubrid_test(d) VALUES('php-test')";
$req = cubrid_prepare($conn, $sql_stmt);

for ($i = 0; $i < 10; $i++) {
    cubrid_execute($req);
}
cubrid_commit($conn);

$req = cubrid_execute($conn, "DELETE FROM cubrid_test WHERE d='php-test'", CUBRID_ASYNC);
var_dump(cubrid_affected_rows());
var_dump(cubrid_affected_rows($conn));
var_dump(cubrid_affected_rows($req));

cubrid_disconnect($conn);

print "done!";
?>

以上例程会输出：

Rows deleted: 5

参见

  • cubrid_execute() - Execute a prepared SQL statement

CUBRID MySQL 兼容性函数
cubrid_client_encoding
CUBRID MySQL 兼容性函数


Return the current CUBRID connection charset

cubrid_affected_rows
cubrid_close
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_client_encoding

(PECL CUBRID >= 8.3.1)

cubrid_client_encoding — Return the current CUBRID connection charset

说明

string cubrid_client_encoding ([ resource $conn_identifier ] )

This function returns the current CUBRID connection charset and is similar to the CUBRID function cubrid_get_charset().

参数

conn_identifier

The CUBRID connection. If the connection identifier is not specified, the last link opened by cubrid_connect() is assumed.

返回值

A string that represents the CUBRID connection charset; on success.

FALSE on failure.

范例

Example #1 cubrid_client_encoding() example

<?php

$con = cubrid_connect("localhost", 33000, "demodb");
if (!$con)
{
    die('Could not connect.');
}

printf("CUBRID current charset: %s\n", cubrid_client_encoding($con));

?>

以上例程会输出：

CUBRID current charset: iso8859-1

参见

  • cubrid_get_charset() - Return the current CUBRID connection charset

cubrid_affected_rows
cubrid_close
CUBRID MySQL 兼容性函数


Close CUBRID connection

cubrid_client_encoding
cubrid_data_seek
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_close

(PECL CUBRID >= 8.3.1)

cubrid_close — Close CUBRID connection

说明

bool cubrid_close ([ resource $conn_identifier ] )

The cubrid_close() function ends the transaction currently in process, closes the connection handle and disconnects from server. If there is any request handles not closed yet at this point, they will be closed. It is similar to the CUBRID function cubrid_disconnect().

参数

conn_identifier

The CUBRID connection identifier. If the connection identifier is not specified, the last connection opened by cubrid_connect() is assumed.

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_close() example

<?php
$con = cubrid_connect ("localhost", 33000, "demodb");
if ($con) {
   echo "connected successfully";
   $req = cubrid_execute ( $con, "insert into person values(1,'James')");
   if ($req) {
      cubrid_close_request ($req);
      cubrid_commit ($con);
   } else {
      cubrid_rollback ($con);
   }
   cubrid_close ($con);
}
?>

参见

  • cubrid_disconnect() - Close a database connection
  • cubrid_connect() - Open a connection to a CUBRID Server
  • cubrid_connect_with_url() - Establish the environment for connecting to CUBRID server

cubrid_client_encoding
cubrid_data_seek
CUBRID MySQL 兼容性函数


Move the internal row pointer of the CUBRID result

cubrid_close
cubrid_db_name
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_data_seek

(PECL CUBRID >= 8.3.0)

cubrid_data_seek — Move the internal row pointer of the CUBRID result

说明

bool cubrid_data_seek ( resource $result , int $row_number )

This function performs the moving of the internal row pointer of the CUBRID result (associated with the specified result identifier) to point to a specific row number. There are functions, such as cubrid_fetch_assoc(), which use the current stored value of row number.

参数

result

The result.

row_number

This is the desired row number of the new result pointer.

返回值

Returns TRUE on success or FALSE on failure.

范例

Example #1 cubrid_data_seek() example

<?php
$conn = cubrid_connect("127.0.0.1", 33000, "demodb");

$req = cubrid_execute($conn, "SELECT * FROM code");
cubrid_data_seek($req, 0);

$result = cubrid_fetch_row($req);
var_dump($result);

cubrid_data_seek($req, 2);
$result = cubrid_fetch_row($req);
var_dump($result);

cubrid_data_seek($req, 4);
$result = cubrid_fetch_row($req);
var_dump($result);

cubrid_close_request($req);
cubrid_disconnect($conn);
?>

以上例程会输出：

array(2) {
  [0]=>
  string(1) "X"
  [1]=>
  string(5) "Mixed"
}
array(2) {
  [0]=>
  string(1) "M"
  [1]=>
  string(3) "Man"
}
array(2) {
  [0]=>
  string(1) "S"
  [1]=>
  string(6) "Silver"
}
cubrid_close
cubrid_db_name
CUBRID MySQL 兼容性函数


Get db name from results of cubrid_list_dbs

cubrid_data_seek
cubrid_errno
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_db_name

(PECL CUBRID >= 8.3.1)

cubrid_db_name — Get db name from results of cubrid_list_dbs

说明

string cubrid_db_name ( array $result , int $index )

Retrieve the database name from a call to cubrid_list_dbs().

参数

result

The result pointer from a call to cubrid_list_dbs().

index

The index into the result set.

返回值

Returns the database name on success, and FALSE on failure. If FALSE is returned, use cubrid_error() to determine the nature of the error.

范例

Example #1 cubrid_db_name() example

<?php
error_reporting(E_ALL);

$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
$db_list = cubrid_list_dbs($conn);

$i = 0;
$cnt = count($db_list);
while ($i < $cnt) {
    echo cubrid_db_name($db_list, $i) . "\n";
    $i++;
}
?>

以上例程会输出：

demodb

参见

  • cubrid_list_dbs() - Return an array with the list of all existing CUBRID databases

cubrid_data_seek
cubrid_errno
CUBRID MySQL 兼容性函数


Return the numerical value of the error message from previous CUBRID operation

cubrid_db_name
cubrid_error
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_errno

(PECL CUBRID >= 8.3.1)

cubrid_errno — Return the numerical value of the error message from previous CUBRID operation

说明

int cubrid_errno ([ resource $conn_identifier ] )

Returns the error number from the last CUBRID function.

The cubrid_errno() function is used to get the error code of the error that occurred during the API execution. Usually, it gets the error code when API returns false as its return value.

参数

conn_identifier

The CUBRID connection identifier. If the connection identifier is not specified, the last connection opened by cubrid_connect() is assumed.

返回值

Returns the error number from the last CUBRID function, or 0 (zero) if no error occurred.

范例

Example #1 cubrid_errno() example

<?php
$con = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
$req = cubrid_execute($con, "select id, name from person");
if ($req) {
    while (list ($id, $name) = cubrid_fetch($req))
    echo $id, $name;
} else {
    echo "Error Code: ", cubrid_errno($con);
    echo "Error Message: ", cubrid_error($con);
}
?>

以上例程会输出：

Error Code: -493 Error Message: Syntax: Unknown class "person". select id, [name] from person

参见

  • cubrid_error() - Get the error message
  • cubrid_error_code() - Get error code for the most recent function call
  • cubrid_error_msg() - Get last error message for the most recent function call

cubrid_db_name
cubrid_error
CUBRID MySQL 兼容性函数


Get the error message

cubrid_errno
cubrid_fetch_array
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_error

(PECL CUBRID >= 8.3.1)

cubrid_error — Get the error message

说明

string cubrid_error ([ resource $connection ] )

The cubrid_error() function is used to get the error message that occurred during the use of CUBRID API. Usually, it gets error message when API returns false as its return value.

参数

connection

The CUBRID connection.

返回值

Error message that occurred.

范例

Example #1 cubrid_error() example

<?php
$con = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
$req = cubrid_execute($con, "select id, name from person");
if ($req) {
    while (list ($id, $name) = cubrid_fetch($req))
    echo $id, $name;
} else {
    echo "Error Code: ", cubrid_errno($con);
    echo "Error Message: ", cubrid_error($con);
}
?>

以上例程会输出：

Error Code: -493 Error Message: Syntax: Unknown class "person". select id, [name] from person

参见

  • cubrid_errno() - Return the numerical value of the error message from previous CUBRID operation
  • cubrid_error_code() - Get error code for the most recent function call
  • cubrid_error_msg() - Get last error message for the most recent function call

cubrid_errno
cubrid_fetch_array
CUBRID MySQL 兼容性函数


Fetch a result row as an associative array, a numeric array, or both

cubrid_error
cubrid_fetch_assoc
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_fetch_array

(PECL CUBRID >=8.3.0)

cubrid_fetch_array — Fetch a result row as an associative array, a numeric array, or both

说明

array cubrid_fetch_array ( resource $result [, int $type = CUBRID_BOTH ] )

The cubrid_fetch_array() function is used to get a single row from the query result and returns an array. The cursor automatically moves to the next row after getting the result.

参数

result

Result comes from a call to cubrid_execute()

type

Array type of the fetched result CUBRID_NUM, CUBRID_ASSOC, CUBRID_BOTH. If you need to operate the lob object, you can use CUBRID_LOB.

返回值

Returns an array of strings that corresponds to the fetched row, when process is successful.

FALSE, when there are no more rows; NULL, when process is unsuccessful.

The type of returned array depends on how type is defined. By using CUBRID_BOTH (default), you'll get an array with both associative and number indices, and you can decide which data type to use by setting the type argument. The type variable can be set to one of the following values:

  • CUBRID_NUM : Numerical array (0-based)
  • CUBRID_ASSOC : Associative array
  • CUBRID_BOTH : Numerical & Associative array (default)

范例

Example #1 cubrid_fetch_array() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");
$req = cubrid_execute($conn, "SELECT name,area,seats,address FROM stadium WHERE nation_code='GRE' AND seats > 10000");

printf("%-40s %-10s %-6s %-20s\n", "name", "area", "seats", "address");
while ($row = cubrid_fetch_array($req, CUBRID_NUM)) {
    printf("%-40s %-10s %-6s %-20s\n", $row[0], $row[1], $row[2], $row[3]);
}

// if you want to operate LOB object, you can use cubrid_fetch_array($req, CUBRID_NUM | CUBRID_LOB)

cubrid_close_request($req);

cubrid_disconnect($conn);
?>

以上例程会输出：

name                                     area       seats  address
Panathinaiko Stadium                     86300.00   50000  Athens, Greece
Olympic Stadium                          54700.00   13000  Athens, Greece
Olympic Indoor Hall                      34100.00   18800  Athens, Greece
Olympic Hall                             52400.00   21000  Athens, Greece
Olympic Aquatic Centre                   42500.00   11500  Athens, Greece
Markopoulo Olympic Equestrian Centre     64000.00   15000  Markopoulo, Athens, Greece
Faliro Coastal Zone Olympic Complex      34650.00   12171  Faliro, Athens, Greece
Athens Olympic Stadium                   120400.00  71030  Maroussi, Athens, Greece
Ano Liossia                              34000.00   12000  Ano Liosia, Athens, Greece

参见

  • cubrid_execute() - Execute a prepared SQL statement
  • cubrid_fetch() - Fetch the next row from a result set
  • cubrid_fetch_row() - Return a numerical array with the values of the current row
  • cubrid_fetch_assoc() - Return the associative array that corresponds to the fetched row
  • cubrid_fetch_object() - Fetch the next row and return it as an object

cubrid_error
cubrid_fetch_assoc
CUBRID MySQL 兼容性函数


Return the associative array that corresponds to the fetched row

cubrid_fetch_array
cubrid_fetch_field
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_fetch_assoc

(PECL CUBRID >= 8.3.0)

cubrid_fetch_assoc — Return the associative array that corresponds to the fetched row

说明

array cubrid_fetch_assoc ( resource $result [, int $type ] )

This function returns the associative array, that corresponds to the fetched row, and then moves the internal data pointer ahead, or returns FALSE when the end is reached.

参数

result

result comes from a call to cubrid_execute()

type

Type can only be CUBRID_LOB, this parameter will be used only when you need to operate the lob object.

返回值

Associative array, when process is successful.

FALSE, when there are no more rows; NULL, when process is unsuccessful.

范例

Example #1 cubrid_fetch_assoc() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");
$req = cubrid_execute($conn, "SELECT name,area,seats,address FROM stadium WHERE nation_code='GRE' AND seats > 10000");

printf("%-40s %-10s %-6s %-20s\n", "name", "area", "seats", "address");
while ($row = cubrid_fetch_assoc($req)) {
    printf("%-40s %-10s %-6s %-20s\n",
        $row["name"], $row["area"], $row["seats"], $row["address"]);
}

// if you want to operate LOB object, you can use cubrid_fetch_assoc($req, CUBRID_LOB)

cubrid_close_request($req);

cubrid_disconnect($conn);
?>

以上例程会输出：

name                                     area       seats  address
Panathinaiko Stadium                     86300.00   50000  Athens, Greece
Olympic Stadium                          54700.00   13000  Athens, Greece
Olympic Indoor Hall                      34100.00   18800  Athens, Greece
Olympic Hall                             52400.00   21000  Athens, Greece
Olympic Aquatic Centre                   42500.00   11500  Athens, Greece
Markopoulo Olympic Equestrian Centre     64000.00   15000  Markopoulo, Athens, Greece
Faliro Coastal Zone Olympic Complex      34650.00   12171  Faliro, Athens, Greece
Athens Olympic Stadium                   120400.00  71030  Maroussi, Athens, Greece
Ano Liossia                              34000.00   12000  Ano Liosia, Athens, Greece

参见

  • cubrid_execute() - Execute a prepared SQL statement
  • cubrid_fetch() - Fetch the next row from a result set
  • cubrid_fetch_row() - Return a numerical array with the values of the current row
  • cubrid_fetch_array() - Fetch a result row as an associative array, a numeric array, or both
  • cubrid_fetch_object() - Fetch the next row and return it as an object

cubrid_fetch_array
cubrid_fetch_field
CUBRID MySQL 兼容性函数


Get column information from a result and return as an object

cubrid_fetch_assoc
cubrid_fetch_lengths
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_fetch_field

(PECL CUBRID >= 8.3.1)

cubrid_fetch_field — Get column information from a result and return as an object

说明

object cubrid_fetch_field ( resource $result [, int $field_offset = 0 ] )

This function returns an object with certain properties of the specific column. The properties of the object are:

name

column name

table

name of the table that the column belongs to

def

default value of the column

max_length

maximum length of the column

not_null

1 if the column cannot be NULL

primary_key

1 if the column is a primary key

unique_key

1 if the column is an unique key

multiple_key

1 if the column is a non-unique key

numeric

1 if the column is numeric

blob

1 if the column is a BLOB

type

the type of the column

unsigned

1 if the column is unsigned

zerofill

1 if the column is zero-filled

参数

result

result comes from a call to cubrid_execute()

field_offset

The numerical field offset. If the field offset is not specified, the next field (that was not yet retrieved by this function) is retrieved. The field_offset starts at 0.

返回值

Object with certain properties of the specific column, when process is successful.

FALSE on failure.

范例

Example #1 cubrid_fetch_field() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");
$req = cubrid_execute($conn, "SELECT event_code,athlete_code,nation_code,game_date FROM game WHERE host_year=1988 and event_code=20001;");

var_dump(cubrid_fetch_row($req));

cubrid_field_seek($req, 1);
$field = cubrid_fetch_field($req);

printf("\n--- Field Properties ---\n");
printf("%-30s %s\n", "name:", $field->name);
printf("%-30s %s\n", "table:", $field->table);
printf("%-30s \"%s\"\n", "default value:", $field->def);
printf("%-30s %d\n", "max length:", $field->max_length);
printf("%-30s %d\n", "not null:", $field->not_null);
printf("%-30s %d\n", "primary key:", $field->primary_key);
printf("%-30s %d\n", "unique key:", $field->unique_key);
printf("%-30s %d\n", "multiple key:", $field->multiple_key);
printf("%-30s %d\n", "numeric:", $field->numeric);
printf("%-30s %d\n", "blob:", $field->blob);
printf("%-30s %s\n", "type:", $field->type);
printf("%-30s %d\n", "unsigned:", $field->unsigned);
printf("%-30s %d\n", "zerofill:", $field->zerofill);

cubrid_close_request($req);

cubrid_disconnect($conn);
?>

以上例程会输出：

array(4) {
  [0]=>
  string(5) "20001"
  [1]=>
  string(5) "16681"
  [2]=>
  string(3) "KOR"
  [3]=>
  string(9) "1988-9-30"
}

--- Field Properties ---
name:                          athlete_code
table:                         game
default value:                 ""
max length:                    0
not null:                      1
primary key:                   1
unique key:                    1
multiple key:                  0
numeric:                       1
blob:                          0
type:                          integer
unsigned:                      0
zerofill:                      0
cubrid_fetch_assoc
cubrid_fetch_lengths
CUBRID MySQL 兼容性函数


Return an array with the lengths of the values of each field from the current row

cubrid_fetch_field
cubrid_fetch_object
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_fetch_lengths

(PECL CUBRID >= 8.3.0)

cubrid_fetch_lengths — Return an array with the lengths of the values of each field from the current row

说明

array cubrid_fetch_lengths ( resource $result )

This function returns an numeric array with the lengths of the values of each field from the current row of the result set or it returns FALSE on failure.

Note:

If field data type is BLOB/CLOB, you should get its length by using cubrid_lob_size().

参数

result

result comes from a call to cubrid_execute()

返回值

An numeric array, when process is successful.

FALSE on failure.

范例

Example #1 cubrid_fetch_lengths() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");
$result = cubrid_execute($conn, "SELECT * FROM game WHERE host_year=2004 AND nation_code='AUS' AND medal='G'");

$row = cubrid_fetch_row($result);
print_r($row);

$lens = cubrid_fetch_lengths($result);
print_r($lens);

cubrid_disconnect($conn);
?>

以上例程会输出：

Array
(
    [0] => 2004
    [1] => 20085
    [2] => 15118
    [3] => 30134
    [4] => AUS
    [5] => G
    [6] => 2004-8-20
)
Array
(
    [0] => 4
    [1] => 5
    [2] => 5
    [3] => 5
    [4] => 3
    [5] => 1
    [6] => 10
)
cubrid_fetch_field
cubrid_fetch_object
CUBRID MySQL 兼容性函数


Fetch the next row and return it as an object

cubrid_fetch_lengths
cubrid_fetch_row
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_fetch_object

(PECL CUBRID >= 8.3.0)

cubrid_fetch_object — Fetch the next row and return it as an object

说明

object cubrid_fetch_object ( resource $result [, string $class_name [, array $params [, int $type ]]] )

This function returns an object with the column names of the result set as properties. The values of these properties are extracted from the current row of the result.

参数

result

result comes from a call to cubrid_execute()

class_name

The name of the class to instantiate. If not specified, a stdClass (stdClass is PHP's generic empty class that's used when casting other types to objects) object is returned.

params

An optional array of parameters to pass to the constructor for class_name objects.

type

Type can only be CUBRID_LOB, this parameter will be used only when you need to operate the lob object.

返回值

An object, when process is successful.

FALSE, when there are no more rows; NULL, when process is unsuccessful.

范例

Example #1 cubrid_fetch_object() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");
$res = cubrid_execute($conn, "SELECT * FROM code");

var_dump(cubrid_fetch_object($res));

// if you want to operate LOB object, you can use cubrid_fetch_object($res, CUBRID_LOB)

class demodb_code {
    public $s_name = null;
    public $f_name = null;

    public function toString() {
        var_dump($this);
    }
}

var_dump(cubrid_fetch_object($res, "demodb_code"));

// if you want to operate LOB object, you can use cubrid_fetch_object($res, "demodb_code", CUBRID_LOB)

class demodb_code_construct extends demodb_code {
    public function __construct($s, $f) {
        $this->s_name = $s;
        $this->f_name = $f;
    }
}

var_dump(cubrid_fetch_object($res, 'demodb_code_construct', array('s_name', 'f_name')));

// if you want to operate LOB object, you can use cubrid_fetch_object($res, 'demodb_code_construct', array('s_name', 'f_name'), CUBRID_LOB)

var_dump(cubrid_fetch_object($res));

cubrid_close_request($res);
cubrid_disconnect($conn);
?>

以上例程会输出：

object(stdClass)#1 (2) {
  ["s_name"]=>
  string(1) "X"
  ["f_name"]=>
  string(5) "Mixed"
}
object(demodb_code)#1 (2) {
  ["s_name"]=>
  string(1) "W"
  ["f_name"]=>
  string(5) "Woman"
}
object(demodb_code_construct)#1 (2) {
  ["s_name"]=>
  string(6) "s_name"
  ["f_name"]=>
  string(6) "f_name"
}
object(stdClass)#1 (2) {
  ["s_name"]=>
  string(1) "B"
  ["f_name"]=>
  string(6) "Bronze"
}

参见

  • cubrid_execute() - Execute a prepared SQL statement
  • cubrid_fetch() - Fetch the next row from a result set
  • cubrid_fetch_array() - Fetch a result row as an associative array, a numeric array, or both
  • cubrid_fetch_assoc() - Return the associative array that corresponds to the fetched row
  • cubrid_fetch_row() - Return a numerical array with the values of the current row

cubrid_fetch_lengths
cubrid_fetch_row
CUBRID MySQL 兼容性函数


Return a numerical array with the values of the current row

cubrid_fetch_object
cubrid_field_flags
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_fetch_row

(PECL CUBRID >= 8.3.0)

cubrid_fetch_row — Return a numerical array with the values of the current row

说明

array cubrid_fetch_row ( resource $result [, int $type ] )

This function returns a numerical array with the values of the current row from the result set, starting from 0, and moves the internal data pointer ahead.

参数

result

result comes from a call to cubrid_execute()

type

Type can only be CUBRID_LOB, this parameter will be used only when you need to operate the lob object.

返回值

A numerical array, when process is successful.

FALSE, when there are no more rows; NULL, when process is unsuccessful.

范例

Example #1 cubrid_fetch_row() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");
$req = cubrid_execute($conn, "SELECT name,area,seats,address FROM stadium WHERE nation_code='GRE' AND seats > 10000");

printf("%-40s %-10s %-6s %-20s\n", "name", "area", "seats", "address");
while ($row = cubrid_fetch_row($req)) {
    printf("%-40s %-10s %-6s %-20s\n", $row[0], $row[1], $row[2], $row[3]);
}

// if you want to operate LOB object, you can use cubrid_fetch_row($req, CUBRID_LOB)

cubrid_close_request($req);

cubrid_disconnect($conn);
?>

以上例程会输出：

name                                     area       seats  address
Panathinaiko Stadium                     86300.00   50000  Athens, Greece
Olympic Stadium                          54700.00   13000  Athens, Greece
Olympic Indoor Hall                      34100.00   18800  Athens, Greece
Olympic Hall                             52400.00   21000  Athens, Greece
Olympic Aquatic Centre                   42500.00   11500  Athens, Greece
Markopoulo Olympic Equestrian Centre     64000.00   15000  Markopoulo, Athens, Greece
Faliro Coastal Zone Olympic Complex      34650.00   12171  Faliro, Athens, Greece
Athens Olympic Stadium                   120400.00  71030  Maroussi, Athens, Greece
Ano Liossia                              34000.00   12000  Ano Liosia, Athens, Greece

参见

  • cubrid_execute() - Execute a prepared SQL statement
  • cubrid_fetch() - Fetch the next row from a result set
  • cubrid_fetch_array() - Fetch a result row as an associative array, a numeric array, or both
  • cubrid_fetch_assoc() - Return the associative array that corresponds to the fetched row
  • cubrid_fetch_object() - Fetch the next row and return it as an object

cubrid_fetch_object
cubrid_field_flags
CUBRID MySQL 兼容性函数


Return a string with the flags of the given field offset

cubrid_fetch_row
cubrid_field_len
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_field_flags

(PECL CUBRID >= 8.3.0)

cubrid_field_flags — Return a string with the flags of the given field offset

说明

string cubrid_field_flags ( resource $result , int $field_offset )

This function returns a string with the flags of the given field offset separated by space. You can split the returned value using explode. The possible flags could be: not_null, primary_key, unique_key, foreign_key, auto_increment, shared, reverse_index, reverse_unique and timestamp.

参数

result

result comes from a call to cubrid_execute()

field_offset

The numerical field offset. The field_offset starts at 0. If field_offset does not exist, an error of level E_WARNING is also issued.

返回值

A string with flags, when process is successful.

FALSE when invalid field_offset value.

-1 if SQL sentence is not SELECT.

范例

Example #1 cubrid_field_flags() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");
$result = cubrid_execute($conn, "SELECT * FROM game WHERE host_year=2004 AND nation_code='AUS' AND medal='G'");

$col_num = cubrid_num_cols($result);

printf("%-30s %s\n", "Field Name", "Field Flags");
for($i = 0; $i < $col_num; $i++) {
    printf("%-30s %s\n", cubrid_field_name($result, $i), cubrid_field_flags($result, $i));
}

cubrid_disconnect($conn);
?>

以上例程会输出：

Field Name                     Field Flags
host_year                      not_null primary_key unique_key
event_code                     not_null primary_key unique_key foreign_key
athlete_code                   not_null primary_key unique_key foreign_key
stadium_code                   not_null
nation_code
medal
game_date
cubrid_fetch_row
cubrid_field_len
CUBRID MySQL 兼容性函数


Get the maximum length of the specified field

cubrid_field_flags
cubrid_field_name
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_field_len

(PECL CUBRID >= 8.3.0)

cubrid_field_len — Get the maximum length of the specified field

说明

int cubrid_field_len ( resource $result , int $field_offset )

This function returns the maximum length of the specified field on success, or it returns FALSE on failure.

参数

result

result comes from a call to cubrid_execute()

field_offset

The numerical field offset. The field_offset starts at 0. If field_offset does not exist, an error of level E_WARNING is also issued.

返回值

Maximum length, when process is successful.

FALSE on failure.

范例

Example #1 cubrid_field_len() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");
$result = cubrid_execute($conn, "SELECT * FROM game WHERE host_year=2004 AND nation_code='AUS' AND medal='G'");

$column_names = cubrid_column_names($result);
$column_types = cubrid_column_types($result);

printf("%-30s %-30s %-15s\n", "Column Names", "Column Types", "Column Maxlen");
for($i = 0, $size = count($column_names); $i < $size; $i++) {
    $column_len = cubrid_field_len($result, $i);
    printf("%-30s %-30s %-15s\n", $column_names[$i], $column_types[$i], $column_len);
}

cubrid_disconnect($conn);
?>

以上例程会输出：

Column Names                   Column Types                   Column Maxlen
host_year                      integer                        11
event_code                     integer                        11
athlete_code                   integer                        11
stadium_code                   integer                        11
nation_code                    char                           3
medal                          char                           1
game_date                      date                           10
cubrid_field_flags
cubrid_field_name
CUBRID MySQL 兼容性函数


Return the name of the specified field index

cubrid_field_len
cubrid_field_seek
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_field_name

(PECL CUBRID >= 8.3.0)

cubrid_field_name — Return the name of the specified field index

说明

string cubrid_field_name ( resource $result , int $field_offset )

This function returns the name of the specified field index on success or it returns FALSE on failure.

参数

result

result comes from a call to cubrid_execute()

field_offset

The numerical field offset. The field_offset starts at 0. If field_offset does not exist, an error of level E_WARNING is also issued.

返回值

Name of specified field index, on success.

FALSE on failure.

范例

Example #1 cubrid_field_name() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");
$result = cubrid_execute($conn, "SELECT * FROM game WHERE host_year=2004 AND nation_code='AUS' AND medal='G'");

$col_num = cubrid_num_cols($result);

printf("%-30s %s\n", "Field Name", "Field Flags");
for($i = 0; $i < $col_num; $i++) {
    printf("%-30s %s\n", cubrid_field_name($result, $i), cubrid_field_flags($result, $i));
}

cubrid_disconnect($conn);
?>

以上例程会输出：

Field Name                     Field Flags
host_year                      not_null primary_key unique_key
event_code                     not_null primary_key unique_key foreign_key
athlete_code                   not_null primary_key unique_key foreign_key
stadium_code                   not_null
nation_code
medal
game_date
cubrid_field_len
cubrid_field_seek
CUBRID MySQL 兼容性函数


Move the result set cursor to the specified field offset

cubrid_field_name
cubrid_field_table
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_field_seek

(PECL CUBRID >= 8.3.0)

cubrid_field_seek — Move the result set cursor to the specified field offset

说明

bool cubrid_field_seek ( resource $result [, int $field_offset = 0 ] )

This function moves the result set cursor to the specified field offset. This offset is used by cubrid_fetch_field() if it doesn't include a field offset. It returns TRUE on success or FALSE on failure.

参数

result

result comes from a call to cubrid_execute()

field_offset

The numerical field offset. The field_offset starts at 0. If field_offset does not exist, an error of level E_WARNING is also issued.

返回值

TRUE on success.

FALSE on failure.

范例

Example #1 cubrid_field_seek() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");
$req = cubrid_execute($conn, "SELECT event_code,athlete_code,nation_code,game_date FROM game WHERE host_year=1988 and event_code=20001;");

var_dump(cubrid_fetch_row($req));

cubrid_field_seek($req, 1);
$field = cubrid_fetch_field($req);

printf("\n--- Field Properties ---\n");
printf("%-30s %s\n", "name:", $field->name);
printf("%-30s %s\n", "table:", $field->table);
printf("%-30s \"%s\"\n", "default value:", $field->def);
printf("%-30s %d\n", "max length:", $field->max_length);
printf("%-30s %d\n", "not null:", $field->not_null);
printf("%-30s %d\n", "unique key:", $field->unique_key);
printf("%-30s %d\n", "multiple key:", $field->multiple_key);
printf("%-30s %d\n", "numeric:", $field->numeric);
printf("%-30s %s\n", "type:", $field->type);

cubrid_close_request($req);

cubrid_disconnect($conn);
?>

以上例程会输出：

array(4) {
  [0]=>
  string(5) "20001"
  [1]=>
  string(5) "16132"
  [2]=>
  string(3) "KOR"
  [3]=>
  string(9) "1988-09-30"
}

--- Field Properties ---
name:                          athlete_code
table:                         game
default value:                 ""
max length:                    0
not null:                      1
unique key:                    1
multiple key:                  0
numeric:                       1
type:                          integer
cubrid_field_name
cubrid_field_table
CUBRID MySQL 兼容性函数


Return the name of the table of the specified field

cubrid_field_seek
cubrid_field_type
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_field_table

(PECL CUBRID >= 8.3.0)

cubrid_field_table — Return the name of the table of the specified field

说明

string cubrid_field_table ( resource $result , int $field_offset )

This function returns the name of the table of the specified field. This is useful when using large select queries with JOINS.

参数

result

result comes from a call to cubrid_execute()

field_offset

The numerical field offset. The field_offset starts at 0. If field_offset does not exist, an error of level E_WARNING is also issued.

返回值

Name of the table of the specified field, on success.

FALSE when invalid field_offset value.

-1 if SQL sentence is not SELECT.

范例

Example #1 cubrid_field_table() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");
$result = cubrid_execute($conn, "SELECT * FROM code");

$col_num = cubrid_num_cols($result);

printf("%-15s %-15s %s\n", "Field Table", "Field Name", "Field Type");
for($i = 0; $i < $col_num; $i++) {
    printf("%-15s %-15s %s\n",
        cubrid_field_table($result, $i), cubrid_field_name($result, $i), cubrid_field_type($result, $i));
}

cubrid_disconnect($conn);
?>

以上例程会输出：

Field Table     Field Name      Field Type
code            s_name          char
code            f_name          varchar
cubrid_field_seek
cubrid_field_type
CUBRID MySQL 兼容性函数


Return the type of the column corresponding to the given field offset

cubrid_field_table
cubrid_list_dbs
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_field_type

(PECL CUBRID >= 8.3.0)

cubrid_field_type — Return the type of the column corresponding to the given field offset

说明

string cubrid_field_type ( resource $result , int $field_offset )

This function returns the type of the column corresponding to the given field offset. The returned field type could be one of the following: "int", "real", "string", etc.

参数

result

result comes from a call to cubrid_execute()

field_offset

The numerical field offset. The field_offset starts at 0. If field_offset does not exist, an error of level E_WARNING is also issued.

返回值

Type of the column, on success.

FALSE when invalid field_offset value.

-1 if SQL sentence is not SELECT.

范例

Example #1 cubrid_field_type() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");
$result = cubrid_execute($conn, "SELECT * FROM code");

$col_num = cubrid_num_cols($result);

printf("%-15s %-15s %s\n", "Field Table", "Field Name", "Field Type");
for($i = 0; $i < $col_num; $i++) {
    printf("%-15s %-15s %s\n",
        cubrid_field_table($result, $i), cubrid_field_name($result, $i), cubrid_field_type($result, $i));
}

cubrid_disconnect($conn);
?>

以上例程会输出：

Field Table     Field Name      Field Type
code            s_name          char
code            f_name          varchar
cubrid_field_table
cubrid_list_dbs
CUBRID MySQL 兼容性函数


Return an array with the list of all existing CUBRID databases

cubrid_field_type
cubrid_num_fields
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_list_dbs

(PECL CUBRID >= 8.3.0)

cubrid_list_dbs — Return an array with the list of all existing CUBRID databases

说明

array cubrid_list_dbs ([ resource $conn_identifier ] )

This function returns an array with the list of all existing Cubrid databases.

参数

conn_identifier

The CUBRID connection.

返回值

An numeric array with all existing Cubrid databases; on success.

FALSE on failure.

范例

Example #1 cubrid_list_dbs() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");

$db_list = cubrid_list_dbs($conn);
var_dump($db_list);

cubrid_disconnect($conn);
?>

以上例程会输出：

array(1) {
  [0]=>
  string(6) "demodb"
}
cubrid_field_type
cubrid_num_fields
CUBRID MySQL 兼容性函数


Return the number of columns in the result set

cubrid_list_dbs
cubrid_ping
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_num_fields

(PECL CUBRID >= 8.3.0)

cubrid_num_fields — Return the number of columns in the result set

说明

int cubrid_num_fields ( resource $result )

This function returns the number of columns in the result set, on success, or it returns FALSE on failure.

参数

result

result comes from a call to cubrid_execute(), cubrid_query() and cubrid_prepare()

返回值

Number of columns, on success.

-1 if SQL sentence is not SELECT.

FALSE when process is unsuccessful.

范例

Example #1 cubrid_num_fields() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");

$req = cubrid_execute($conn, "SELECT * FROM code");

$row_num = cubrid_num_rows($req);
$col_num = cubrid_num_fields($req);

printf("Row Num: %d\nColumn Num: %d\n", $row_num, $col_num);

cubrid_disconnect($conn);
?>

以上例程会输出：

Row Num: 6
Column Num: 2
cubrid_list_dbs
cubrid_ping
CUBRID MySQL 兼容性函数


Ping a server connection or reconnect if there is no connection

cubrid_num_fields
cubrid_query
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_ping

(PECL CUBRID >= 8.3.1)

cubrid_ping — Ping a server connection or reconnect if there is no connection

说明

bool cubrid_ping ([ resource $conn_identifier ] )

Checks whether or not the connection to the server is working.

参数

conn_identifier

The CUBRID connection identifier. If the connection identifier is not specified, the last connection opened by cubrid_connect() is assumed.

返回值

Returns TRUE if the connection to the server CUBRID server is working, otherwise FALSE.

范例

Example #1 cubrid_ping() example

<?php
set_time_limit(0);

$conn = cubrid_connect('localhost', 33000, 'demodb');

/* Assuming this query will take a long time */
$sql = "select * from athlete";
$result = cubrid_query($sql);
if (!$result) {
    echo 'Query #1 failed, exiting.';
    exit;
}

/* Make sure the connection is still alive, if not, try to reconnect */
if (!cubrid_ping($conn)) {
    echo 'Lost connection, exiting after query #1';
    exit;
}
cubrid_free_result($result);

/* So the connection is still alive, let's run another query */
$sql2 = "select * from code";
$result2 = cubrid_query($sql2);
?>

cubrid_num_fields
cubrid_query
CUBRID MySQL 兼容性函数


Send a CUBRID query

cubrid_ping
cubrid_real_escape_string
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_query

(PECL CUBRID >= 8.3.1)

cubrid_query — Send a CUBRID query

说明

resource cubrid_query ( string $query [, resource $conn_identifier ] )

cubrid_query() sends a unique query (multiple queries are not supported) to the currently active database on the server that's associated with the specified conn_identifier.

参数

query

An SQL query

Data inside the query should be properly escaped.

conn_identifier

The CUBRID connection. If the connection identifier is not specified, the last connection opened by cubrid_connect() is assumed.

返回值

For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, cubrid_query() returns a resource on success, or FALSE on error.

For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, cubrid_query() returns TRUE on success or FALSE on error.

The returned result resource should be passed to cubrid_fetch_array(), and other functions for dealing with result tables, to access the returned data.

Use cubrid_num_rows() to find out how many rows were returned for a SELECT statement or cubrid_affected_rows() to find out how many rows were affected by a DELETE, INSERT, REPLACE, or UPDATE statement.

cubrid_query() will also fail and return FALSE if the user does not have permission to access the table(s) referenced by the query.

范例

Example #1 Invalid Query

The following query is syntactically invalid, so cubrid_query() fails and returns FALSE.

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb');

$result = cubrid_query('SELECT * WHERE 1=1');
if (!$result) {
    die('Invalid query: ' . cubrid_error());
}

?>

Example #2 Valid Query

The following query is valid, so cubrid_query() returns a resource.

<?php
// This could be supplied by a user, for example
$firstname = 'fred';
$lastname  = 'fox';

$conn = cubrid_connect('localhost', 33000, 'demodb');

cubrid_execute($conn,"DROP TABLE if exists friends");
cubrid_execute($conn,"create table friends(firstname varchar,lastname varchar,address char(24),age int)");
cubrid_execute($conn,"insert into friends values('fred','fox','home-1','20')");
cubrid_execute($conn,"insert into friends values('blue','cat','home-2','21')");
// Formulate Query
// This is the best way to perform an SQL query
// For more examples, see cubrid_real_escape_string()
$query = sprintf("SELECT firstname, lastname, address, age FROM friends WHERE firstname='%s' AND lastname='%s'",
cubrid_real_escape_string($firstname),
cubrid_real_escape_string($lastname));

// Perform Query
$result = cubrid_query($query);

// Check result
// This shows the actual query sent to CUBRID, and the error. Useful for debugging.
if (!$result) {
    $message  = 'Invalid query: ' . cubrid_error() . "\n";
    $message .= 'Whole query: ' . $query;
    die($message);
}

// Use result
// Attempting to print $result won't allow access to information in the resource
// One of the cubrid result functions must be used
// See also cubrid_result(), cubrid_fetch_array(), cubrid_fetch_row(), etc.
while ($row = cubrid_fetch_assoc($result)) {
    echo $row['firstname'];
    echo $row['lastname'];
    echo $row['address'];
    echo $row['age'];
}

// Free the resources associated with the result set
// This is done automatically at the end of the script
cubrid_free_result($result);
?>

参见

  • cubrid_connect() - Open a connection to a CUBRID Server
  • cubrid_error() - Get the error message
  • cubrid_real_escape_string() - Escape special characters in a string for use in an SQL statement
  • cubrid_result() - Return the value of a specific field in a specific row
  • cubrid_fetch_assoc() - Return the associative array that corresponds to the fetched row
  • cubrid_unbuffered_query() - Perform a query without fetching the results into memory

cubrid_ping
cubrid_real_escape_string
CUBRID MySQL 兼容性函数


Escape special characters in a string for use in an SQL statement

cubrid_query
cubrid_result
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_real_escape_string

(PECL CUBRID >= 8.3.0)

cubrid_real_escape_string — Escape special characters in a string for use in an SQL statement

说明

string cubrid_real_escape_string ( string $unescaped_string [, resource $conn_identifier ] )

This function returns the escaped string version of the given string. It will escape the following characters: '. In general, single quotations are used to enclose character string. Double quotations may be used as well depending on the value of ansi_quotes, which is a parameter related to SQL statement. If the ansi_quotes value is set to no, character string enclosed by double quotations is handled as character string, not as an identifier. The default value is yes. If you want to include a single quote as part of a character string, enter two single quotes in a row.

参数

unescaped_string

The string that is to be escaped.

conn_identifier

The CUBRID connection. If the connection identifier is not specified, the last connection opened by cubrid_connect() is assumed.

返回值

Escaped string version of the given string, on success.

FALSE on failure.

范例

Example #1 cubrid_real_escape_string() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");

$unescaped_str = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~';
$escaped_str = cubrid_real_escape_string($unescaped_str);

$len = strlen($unescaped_str);

@cubrid_execute($conn, "DROP TABLE cubrid_test");
cubrid_execute($conn, "CREATE TABLE cubrid_test (t char($len))");
cubrid_execute($conn, "INSERT INTO cubrid_test (t) VALUES('$escaped_str')");

$req = cubrid_execute($conn, "SELECT * FROM cubrid_test");
$row = cubrid_fetch_assoc($req);

var_dump($row);

cubrid_close_request($req);
cubrid_disconnect($conn);
?>

以上例程会输出：

array(1) {
  ["t"]=>
  string(95) " !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
}
cubrid_query
cubrid_result
CUBRID MySQL 兼容性函数


Return the value of a specific field in a specific row

cubrid_real_escape_string
cubrid_unbuffered_query
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_result

(PECL CUBRID >= 8.3.0)

cubrid_result — Return the value of a specific field in a specific row

说明

string cubrid_result ( resource $result , int $row [, mixed $field = 0 ] )

This function returns the value of a specific field in a specific row from a result set.

参数

result

result comes from a call to cubrid_execute()

row

The row number from the result that is being retrieved. Row numbers start at 0.

field

The name or offset of the field being retrieved. It can be the field's offset, the field's name, or the field's table dot field name (tablename.fieldname). If the column name has been aliased ('select foo as bar from...'), use the alias instead of the column name. If undefined, the first field is retrieved.

返回值

Value of a specific field, on success (NULL if value if null).

FALSE on failure.

范例

Example #1 cubrid_result() example

<?php
$conn = cubrid_connect("localhost", 33000, "demodb");

$req = cubrid_execute($conn, "SELECT * FROM code");

$result = cubrid_result($req, 0);
var_dump($result);

$result = cubrid_result($req, 0, 1);
var_dump($result);

$result = cubrid_result($req, 5, "f_name");
var_dump($result);

cubrid_close_request($req);
cubrid_disconnect($conn);
?>

以上例程会输出：

string(1) "X"
string(5) "Mixed"
string(4) "Gold"
cubrid_real_escape_string
cubrid_unbuffered_query
CUBRID MySQL 兼容性函数


Perform a query without fetching the results into memory

cubrid_result
CUBRID 过时的别名和函数
CUBRID MySQL 兼容性函数
PHP Manual

cubrid_unbuffered_query

(PECL CUBRID >= 8.3.0)

cubrid_unbuffered_query — Perform a query without fetching the results into memory

说明

resource cubrid_unbuffered_query ( string $query [, resource $conn_identifier ] )

This function performs a query without waiting for that all query results have been complete. It will return when the results are being generated.

参数

query

A SQL query.

conn_identifier

The CUBRID connection. If the connection identifier is not specified, the last connection opened by cubrid_connect() is assumed.

返回值

For SELECT, SHOW, DESCRIBE or EXPLAIN statements returns a request identifier resource on success.

For other type of SQL statements, UPDATE, DELETE, DROP, etc, returns TRUE on success.

FALSE on failure.

注释

Note:

The benefits of cubrid_unbuffered_query() come at a cost: you cannot use cubrid_num_rows() and cubrid_data_seek() on a result set returned from cubrid_unbuffered_query().

范例

Example #1 cubrid_unbuffered_query() example

<?php
    $link = cubrid_connect("localhost", 30000, "demodb", "dba", "");
    if (!$link)
    {
        die('Could not connect.');
    }
    $query = "select * from code";
    $result = cubrid_unbuffered_query($query, $link);

    while ($row = cubrid_fetch($result))
    {
        var_dump($row);
    }

    cubrid_close_request($result);
    cubrid_disconnect($link);
?>
cubrid_result
CUBRID 过时的别名和函数
CUBRID MySQL 兼容性函数


CUBRID 过时的别名和函数

Table of Contents

  • cubrid_load_from_glo — Read data from a GLO instance and save it in a file
  • cubrid_new_glo — Create a glo instance
  • cubrid_save_to_glo — Save requested file in a GLO instance
  • cubrid_send_glo — Read data from glo and send it to std output
cubrid_unbuffered_query
cubrid_load_from_glo
CUBRID


Read data from a GLO instance and save it in a file

CUBRID 过时的别名和函数
cubrid_new_glo
CUBRID 过时的别名和函数
PHP Manual

cubrid_load_from_glo

(PECL CUBRID >= 8.3.0)

cubrid_load_from_glo — Read data from a GLO instance and save it in a file

说明

int cubrid_load_from_glo ( resource $conn_identifier , string $oid , string $file_name )

The cubrid_load_from_glo() function is used to read a data from a glo instance, and saves it in a designated file.

参数

conn_identifier

Connection identifier.

oid

Oid of the glo instance that you want to read the data from.

file_name

Name of the file where you want to save the data in.

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_load_from_glo() example

<?php
$req = cubrid_execute ($con, "select image from person where id=1");
if ($req) {
   list ($oid) = cubrid_fetch($req);
   cubrid_close_request($req);
   $res = cubrid_load_from_glo ($con, $oid, "output.jpg");
   if ($res) {
      echo "image changed successfully";
   }
}
?>

注释

Note:

为了向下兼容，可以使用下列已废弃的别名： cubrid_load_from_glo()

Note:

This function is removed from CUBRID 3.1.

参见

  • cubrid_new_glo() - Create a glo instance
  • cubrid_save_to_glo() - Save requested file in a GLO instance
  • cubrid_send_glo() - Read data from glo and send it to std output

CUBRID 过时的别名和函数
cubrid_new_glo
CUBRID 过时的别名和函数


Create a glo instance

cubrid_load_from_glo
cubrid_save_to_glo
CUBRID 过时的别名和函数
PHP Manual

cubrid_new_glo

(PECL CUBRID >= 8.3.0)

cubrid_new_glo — Create a glo instance

说明

string cubrid_new_glo ( resource $conn_identifier , string $class_name , string $file_name )

The cubrid_new_glo() function is used to create a glo instance in the requested class (glo class). The glo created is a LO type, and is stored in the file_name file.

参数

conn_identifier

Connection identifier.

class_name

Name of the class that you want to create a glo in.

file_name

The file name that you want to save in the newly created glo.

返回值

Oid of the instance created, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_new_glo() example

<?php
$oid = cubrid_new_glo ($con, "glo", "input.jpg");
if ($oid){
   // the type of column "image" is "object"
   $req = cubrid_execute ($con, "insert into person(image) values($oid)");
   if ($req) {
      echo "image inserted successfully";
      cubrid_close_request ($req);
      cubrid_commit($con);
   }
}
?>

注释

Note:

为了向下兼容，可以使用下列已废弃的别名： cubrid_new_glo()

Note:

This function is removed from CUBRID 3.1.

参见

  • cubrid_save_to_glo() - Save requested file in a GLO instance
  • cubrid_load_from_glo() - Read data from a GLO instance and save it in a file
  • cubrid_send_glo() - Read data from glo and send it to std output

cubrid_load_from_glo
cubrid_save_to_glo
CUBRID 过时的别名和函数


Save requested file in a GLO instance

cubrid_new_glo
cubrid_send_glo
CUBRID 过时的别名和函数
PHP Manual

cubrid_save_to_glo

(PECL CUBRID >= 8.3.0)

cubrid_save_to_glo — Save requested file in a GLO instance

说明

int cubrid_save_to_glo ( resource $conn_identifier , string $oid , string $file_name )

The cubrid_save_to_glo() function is used to save requested file in a glo instance.

参数

conn_identifier

Connection identifier.

oid

Oid of the glo instance that you want to save a file in.

file_name

The name of the file that you want to save.

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_save_to_glo() example

<?php
$req = cubrid_execute ($con, "select image from person where id=1");
if ($req) {
   list ($oid) = cubrid_fetch($req);
   cubrid_close_request($req);
   $res = cubrid_save_to_glo ($con, $oid, "input.jpg");
   if ($res) {
      echo "image changed successfully";
   }
}
?>

注释

Note:

为了向下兼容，可以使用下列已废弃的别名： cubrid_save_to_glo()

Note:

This function is removed from CUBRID 3.1.

参见

  • cubrid_new_glo() - Create a glo instance
  • cubrid_load_from_glo() - Read data from a GLO instance and save it in a file
  • cubrid_send_glo() - Read data from glo and send it to std output

cubrid_new_glo
cubrid_send_glo
CUBRID 过时的别名和函数


Read data from glo and send it to std output

cubrid_save_to_glo
DB++
CUBRID 过时的别名和函数
PHP Manual

cubrid_send_glo

(PECL CUBRID >= 8.3.0)

cubrid_send_glo — Read data from glo and send it to std output

说明

int cubrid_send_glo ( resource $conn_identifier , string $oid )

The cubrid_send_glo() function is used to read data from glo instance and sends it to the PHP standard output.

参数

conn_identifier

Connection identifier.

oid

Oid of the glo instance that you want to read data from.

返回值

TRUE, when process is successful.

FALSE, when process is unsuccessful.

范例

Example #1 cubrid_send_glo() example

<?php
$req = cubrid_execute ($con, "select image from person where id =1");
if ($req) {
  list ($oid) = cubrid_fetch($req);
  cubrid_close_request($req);
  Header ("Content-type: image/jpeg");
  cubrid_send_glo ($con, $oid);
}
?>

注释

Note:

为了向下兼容，可以使用下列已废弃的别名： cubrid_send_glo()

Note:

This function is removed from CUBRID 3.1.

参见

  • cubrid_new_glo() - Create a glo instance
  • cubrid_save_to_glo() - Save requested file in a GLO instance
  • cubrid_load_from_glo() - Read data from a GLO instance and save it in a file

cubrid_save_to_glo
DB++
CUBRID 过时的别名和函数


DB++

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
    • db++ error codes
  • DB++ 函数
    • dbplus_add — Add a tuple to a relation
    • dbplus_aql — Perform AQL query
    • dbplus_chdir — Get/Set database virtual current directory
    • dbplus_close — Close a relation
    • dbplus_curr — Get current tuple from relation
    • dbplus_errcode — Get error string for given errorcode or last error
    • dbplus_errno — Get error code for last operation
    • dbplus_find — Set a constraint on a relation
    • dbplus_first — Get first tuple from relation
    • dbplus_flush — Flush all changes made on a relation
    • dbplus_freealllocks — Free all locks held by this client
    • dbplus_freelock — Release write lock on tuple
    • dbplus_freerlocks — Free all tuple locks on given relation
    • dbplus_getlock — Get a write lock on a tuple
    • dbplus_getunique — Get an id number unique to a relation
    • dbplus_info — Get information about a relation
    • dbplus_last — Get last tuple from relation
    • dbplus_lockrel — Request write lock on relation
    • dbplus_next — Get next tuple from relation
    • dbplus_open — Open relation file
    • dbplus_prev — Get previous tuple from relation
    • dbplus_rchperm — Change relation permissions
    • dbplus_rcreate — Creates a new DB++ relation
    • dbplus_rcrtexact — Creates an exact but empty copy of a relation including indices
    • dbplus_rcrtlike — Creates an empty copy of a relation with default indices
    • dbplus_resolve — Resolve host information for relation
    • dbplus_restorepos — Restore position
    • dbplus_rkeys — Specify new primary key for a relation
    • dbplus_ropen — Open relation file local
    • dbplus_rquery — Perform local (raw) AQL query
    • dbplus_rrename — Rename a relation
    • dbplus_rsecindex — Create a new secondary index for a relation
    • dbplus_runlink — Remove relation from filesystem
    • dbplus_rzap — Remove all tuples from relation
    • dbplus_savepos — Save position
    • dbplus_setindex — Set index
    • dbplus_setindexbynumber — Set index by number
    • dbplus_sql — Perform SQL query
    • dbplus_tcl — Execute TCL code on server side
    • dbplus_tremove — Remove tuple and return new current tuple
    • dbplus_undo — Undo
    • dbplus_undoprepare — Prepare undo
    • dbplus_unlockrel — Give up write lock on relation
    • dbplus_unselect — Remove a constraint from relation
    • dbplus_update — Update specified tuple in relation
    • dbplus_xlockrel — Request exclusive lock on relation
    • dbplus_xunlockrel — Free exclusive lock on relation
cubrid_send_glo
简介
针对各数据库系统对应的扩展


简介

db++, made by the German company » Concept asa, is a relational database system with high performance and low memory and disk usage in mind. While providing SQL as an additional language interface, it is not really an SQL database in the first place but provides its own AQL query language which is much more influenced by the relational algebra than SQL is.

Concept asa always had an interest in supporting open source languages, db++ has had Perl and Tcl call interfaces for years now and uses Tcl as its internal stored procedure language.

Warning

此扩展是实验性 的。 此扩展的表象，包括其函数名称以及其他此扩展的相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本扩展风险自担 。

DB++
安装／配置
DB++


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
DB++


需求

This extension relies on external client libraries so you have to have a db++ client installed on the system you want to use this extension on.

» Concept asa provides » db++ Demo versions and » documentation for Linux, some other Unix versions. There is also a Windows version of db++, but this extension doesn't support it (yet).

安装／配置
安装
安装／配置


安装

In order to build this extension yourself you need the db++ client libraries and header files to be installed on your system (these are included in the db++ installation archives by default). You have to run configure with option --with-dbplus to build this extension.

configure looks for the client libraries and header files under the default paths /usr/dbplus, /usr/local/dbplus and /opt/dblus. If you have installed db++ in a different place you have add the installation path to the configure option like this: --with-dbplus=/your/installation/path .

需求
运行时配置
安装／配置


资源类型

dbplus_relation

Most db++ functions operate on or return dbplus_relation resources. A dbplus_relation is a handle to a stored relation or a relation generated as the result of a query.

运行时配置
预定义常量
安装／配置


预定义常量

Table of Contents

  • db++ error codes

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

资源类型
db++ error codes
DB++


db++ error codes

DB++ Error Codes
PHP Constant | db++ constant | meaning
DBPLUS_ERR_NOERR (integer) | ERR_NOERR | Null error condition
DBPLUS_ERR_DUPLICATE (integer) | ERR_DUPLICATE | Tried to insert a duplicate tuple
DBPLUS_ERR_EOSCAN (integer) | ERR_EOSCAN | End of scan from rget()
DBPLUS_ERR_EMPTY (integer) | ERR_EMPTY | Relation is empty (server)
DBPLUS_ERR_CLOSE (integer) | ERR_CLOSE | The server can't close
DBPLUS_ERR_WLOCKED (integer) | ERR_WLOCKED | The record is write locked
DBPLUS_ERR_LOCKED (integer) | ERR_LOCKED | Relation was already locked
DBPLUS_ERR_NOLOCK (integer) | ERR_NOLOCK | Relation cannot be locked
DBPLUS_ERR_READ (integer) | ERR_READ | Read error on relation
DBPLUS_ERR_WRITE (integer) | ERR_WRITE | Write error on relation
DBPLUS_ERR_CREATE (integer) | ERR_CREATE | Create() system call failed
DBPLUS_ERR_LSEEK (integer) | ERR_LSEEK | Lseek() system call failed
DBPLUS_ERR_LENGTH (integer) | ERR_LENGTH | Tuple exceeds maximum length
DBPLUS_ERR_OPEN (integer) | ERR_OPEN | Open() system call failed
DBPLUS_ERR_WOPEN (integer) | ERR_WOPEN | Relation already opened for writing
DBPLUS_ERR_MAGIC (integer) | ERR_MAGIC | File is not a relation
DBPLUS_ERR_VERSION (integer) | ERR_VERSION | File is a very old relation
DBPLUS_ERR_PGSIZE (integer) | ERR_PGSIZE | Relation uses a different page size
DBPLUS_ERR_CRC (integer) | ERR_CRC | Invalid crc in the superpage
DBPLUS_ERR_PIPE (integer) | ERR_PIPE | Piped relation requires lseek()
DBPLUS_ERR_NIDX (integer) | ERR_NIDX | Too many secondary indices
DBPLUS_ERR_MALLOC (integer) | ERR_MALLOC | Malloc() call failed
DBPLUS_ERR_NUSERS (integer) | ERR_NUSERS | Error use of max users
DBPLUS_ERR_PREEXIT (integer) | ERR_PREEXIT | Caused by invalid usage
DBPLUS_ERR_ONTRAP (integer) | ERR_ONTRAP | Caused by a signal
DBPLUS_ERR_PREPROC (integer) | ERR_PREPROC | Error in the preprocessor
DBPLUS_ERR_DBPARSE (integer) | ERR_DBPARSE | Error in the parser
DBPLUS_ERR_DBRUNERR (integer) | ERR_DBRUNERR | Run error in db
DBPLUS_ERR_DBPREEXIT (integer) | ERR_DBPREEXIT | Exit condition caused by prexit() * procedure
DBPLUS_ERR_WAIT (integer) | ERR_WAIT | Wait a little (Simple only)
DBPLUS_ERR_CORRUPT_TUPLE (integer) | ERR_CORRUPT_TUPLE | A client sent a corrupt tuple
DBPLUS_ERR_WARNING0 (integer) | ERR_WARNING0 | The Simple routines encountered a non fatal error which was corrected
DBPLUS_ERR_PANIC (integer) | ERR_PANIC | The server should not really die but after a disaster send ERR_PANIC to all its clients
DBPLUS_ERR_FIFO (integer) | ERR_FIFO | Can't create a fifo
DBPLUS_ERR_PERM (integer) | ERR_PERM | Permission denied
DBPLUS_ERR_TCL (integer) | ERR_TCL | TCL_error
DBPLUS_ERR_RESTRICTED (integer) | ERR_RESTRICTED | Only two users
DBPLUS_ERR_USER (integer) | ERR_USER | An error in the use of the library by an application programmer
DBPLUS_ERR_UNKNOWN (integer) | ERR_UNKNOWN |

预定义常量
DB++ 函数
预定义常量


DB++ 函数

Table of Contents

  • dbplus_add — Add a tuple to a relation
  • dbplus_aql — Perform AQL query
  • dbplus_chdir — Get/Set database virtual current directory
  • dbplus_close — Close a relation
  • dbplus_curr — Get current tuple from relation
  • dbplus_errcode — Get error string for given errorcode or last error
  • dbplus_errno — Get error code for last operation
  • dbplus_find — Set a constraint on a relation
  • dbplus_first — Get first tuple from relation
  • dbplus_flush — Flush all changes made on a relation
  • dbplus_freealllocks — Free all locks held by this client
  • dbplus_freelock — Release write lock on tuple
  • dbplus_freerlocks — Free all tuple locks on given relation
  • dbplus_getlock — Get a write lock on a tuple
  • dbplus_getunique — Get an id number unique to a relation
  • dbplus_info — Get information about a relation
  • dbplus_last — Get last tuple from relation
  • dbplus_lockrel — Request write lock on relation
  • dbplus_next — Get next tuple from relation
  • dbplus_open — Open relation file
  • dbplus_prev — Get previous tuple from relation
  • dbplus_rchperm — Change relation permissions
  • dbplus_rcreate — Creates a new DB++ relation
  • dbplus_rcrtexact — Creates an exact but empty copy of a relation including indices
  • dbplus_rcrtlike — Creates an empty copy of a relation with default indices
  • dbplus_resolve — Resolve host information for relation
  • dbplus_restorepos — Restore position
  • dbplus_rkeys — Specify new primary key for a relation
  • dbplus_ropen — Open relation file local
  • dbplus_rquery — Perform local (raw) AQL query
  • dbplus_rrename — Rename a relation
  • dbplus_rsecindex — Create a new secondary index for a relation
  • dbplus_runlink — Remove relation from filesystem
  • dbplus_rzap — Remove all tuples from relation
  • dbplus_savepos — Save position
  • dbplus_setindex — Set index
  • dbplus_setindexbynumber — Set index by number
  • dbplus_sql — Perform SQL query
  • dbplus_tcl — Execute TCL code on server side
  • dbplus_tremove — Remove tuple and return new current tuple
  • dbplus_undo — Undo
  • dbplus_undoprepare — Prepare undo
  • dbplus_unlockrel — Give up write lock on relation
  • dbplus_unselect — Remove a constraint from relation
  • dbplus_update — Update specified tuple in relation
  • dbplus_xlockrel — Request exclusive lock on relation
  • dbplus_xunlockrel — Free exclusive lock on relation
db++ error codes
dbplus_add
DB++


Add a tuple to a relation

DB++ 函数
dbplus_aql
DB++ 函数
PHP Manual

dbplus_add

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_add — Add a tuple to a relation

说明

int dbplus_add ( resource $relation , array $tuple )

Adds a tuple to a relation.

参数

relation

tuple

An array of attribute/value pairs to be inserted into the given relation.

After successful execution this array will contain the complete data of the newly created tuple, including all implicitly set domain fields like sequences.

返回值

The function will return DBPLUS_ERR_NOERR on success or a db++ error code on failure.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • dbplus_errcode() - Get error string for given errorcode or last error

DB++ 函数
dbplus_aql
DB++ 函数


Perform AQL query

dbplus_add
dbplus_chdir
DB++ 函数
PHP Manual

dbplus_aql

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_aql — Perform AQL query

说明

resource dbplus_aql ( string $query [, string $server [, string $dbpath ]] )

Executes an AQL query on the given server and dbpath.

参数

query

The AQL query to be executed. Further information on the AQL (Algebraic Query Language) is provided in the original db++ manual.

server

dbpath

返回值

Returns a relation handle on success. The result data may be fetched from this relation by calling dbplus_next() and dbplus_curr(). Other relation access functions will not work on a result relation.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_add
dbplus_chdir
DB++ 函数


Get/Set database virtual current directory

dbplus_aql
dbplus_close
DB++ 函数
PHP Manual

dbplus_chdir

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_chdir — Get/Set database virtual current directory

说明

string dbplus_chdir ([ string $newdir ] )

Changes the virtual current directory where relation files will be looked for by dbplus_open().

参数

newdir

The new directory for relation files. You can omit this parameter to query the current working directory.

返回值

Returns the absolute path of the current directory.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_aql
dbplus_close
DB++ 函数


Close a relation

dbplus_chdir
dbplus_curr
DB++ 函数
PHP Manual

dbplus_close

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_close — Close a relation

说明

mixed dbplus_close ( resource $relation )

Closes a relation previously opened by dbplus_open().

参数

relation

A relation opened by dbplus_open().

返回值

Returns TRUE on success or DBPLUS_ERR_UNKNOWN on failure.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_chdir
dbplus_curr
DB++ 函数


Get current tuple from relation

dbplus_close
dbplus_errcode
DB++ 函数
PHP Manual

dbplus_curr

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_curr — Get current tuple from relation

说明

int dbplus_curr ( resource $relation , array &$tuple )

Reads the data for the current tuple for the given relation.

参数

relation

A relation opened by dbplus_open().

tuple

The data will be passed back in this parameter, as an associative array.

返回值

The function will return zero (aka. DBPLUS_ERR_NOERR) on success or a db++ error code on failure.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • dbplus_first() - Get first tuple from relation
  • dbplus_prev() - Get previous tuple from relation
  • dbplus_next() - Get next tuple from relation
  • dbplus_last() - Get last tuple from relation
  • dbplus_errcode() - Get error string for given errorcode or last error

dbplus_close
dbplus_errcode
DB++ 函数


Get error string for given errorcode or last error

dbplus_curr
dbplus_errno
DB++ 函数
PHP Manual

dbplus_errcode

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_errcode — Get error string for given errorcode or last error

说明

string dbplus_errcode ([ int $errno ] )

Returns a clear error string for the given error code.

参数

errno

The error code. If not provided, the result code of the last db++ operation is assumed.

返回值

Returns the error message.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_curr
dbplus_errno
DB++ 函数


Get error code for last operation

dbplus_errcode
dbplus_find
DB++ 函数
PHP Manual

dbplus_errno

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_errno — Get error code for last operation

说明

int dbplus_errno ( void )

Returns the error code returned by the last db++ operation.

返回值

Returns the error code, as an integer.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • dbplus_errcode() - Get error string for given errorcode or last error

dbplus_errcode
dbplus_find
DB++ 函数


Set a constraint on a relation

dbplus_errno
dbplus_first
DB++ 函数
PHP Manual

dbplus_find

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_find — Set a constraint on a relation

说明

int dbplus_find ( resource $relation , array $constraints , mixed $tuple )

Places a constraint on the given relation.

Further calls to functions like dbplus_curr() or dbplus_next() will only return tuples matching the given constraints.

参数

relation

A relation opened by dbplus_open().

constraints

Constraints are triplets of strings containing of a domain name, a comparison operator and a comparison value. The constraints parameter array may consist of a collection of string arrays, each of which contains a domain, an operator and a value, or of a single string array containing a multiple of three elements.

The comparison operator may be one of the following strings: '==', '>', '>=', '<', '<=', '!=', '~' for a regular expression match and 'BAND' or 'BOR' for bitwise operations.

tuple

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • dbplus_unselect() - Remove a constraint from relation

dbplus_errno
dbplus_first
DB++ 函数


Get first tuple from relation

dbplus_find
dbplus_flush
DB++ 函数
PHP Manual

dbplus_first

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_first — Get first tuple from relation

说明

int dbplus_first ( resource $relation , array &$tuple )

Reads the data for the first tuple for the given relation, makes it the current tuple and pass it back as an associative array in tuple.

参数

relation

A relation opened by dbplus_open().

tuple

返回值

Returns DBPLUS_ERR_NOERR on success or a db++ error code on failure.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • dbplus_curr() - Get current tuple from relation
  • dbplus_prev() - Get previous tuple from relation
  • dbplus_next() - Get next tuple from relation
  • dbplus_last() - Get last tuple from relation
  • dbplus_errcode() - Get error string for given errorcode or last error

dbplus_find
dbplus_flush
DB++ 函数


Flush all changes made on a relation

dbplus_first
dbplus_freealllocks
DB++ 函数
PHP Manual

dbplus_flush

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_flush — Flush all changes made on a relation

说明

int dbplus_flush ( resource $relation )

Writes all changes applied to relation since the last flush to disk.

参数

relation

A relation opened by dbplus_open().

返回值

Returns DBPLUS_ERR_NOERR on success or a db++ error code on failure.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • dbplus_errcode() - Get error string for given errorcode or last error

dbplus_first
dbplus_freealllocks
DB++ 函数


Free all locks held by this client

dbplus_flush
dbplus_freelock
DB++ 函数
PHP Manual

dbplus_freealllocks

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_freealllocks — Free all locks held by this client

说明

int dbplus_freealllocks ( void )

Frees all tuple locks held by this client.

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • dbplus_getlock() - Get a write lock on a tuple
  • dbplus_freelock() - Release write lock on tuple
  • dbplus_freerlocks() - Free all tuple locks on given relation

dbplus_flush
dbplus_freelock
DB++ 函数


Release write lock on tuple

dbplus_freealllocks
dbplus_freerlocks
DB++ 函数
PHP Manual

dbplus_freelock

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_freelock — Release write lock on tuple

说明

int dbplus_freelock ( resource $relation , string $tuple )

Releases a write lock on the given tuple previously obtained by dbplus_getlock().

参数

relation

A relation opened by dbplus_open().

tuple

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • dbplus_getlock() - Get a write lock on a tuple
  • dbplus_freerlocks() - Free all tuple locks on given relation
  • dbplus_freealllocks() - Free all locks held by this client

dbplus_freealllocks
dbplus_freerlocks
DB++ 函数


Free all tuple locks on given relation

dbplus_freelock
dbplus_getlock
DB++ 函数
PHP Manual

dbplus_freerlocks

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_freerlocks — Free all tuple locks on given relation

说明

int dbplus_freerlocks ( resource $relation )

Frees all tuple locks held on the given relation.

参数

relation

A relation opened by dbplus_open().

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • dbplus_getlock() - Get a write lock on a tuple
  • dbplus_freelock() - Release write lock on tuple
  • dbplus_freealllocks() - Free all locks held by this client

dbplus_freelock
dbplus_getlock
DB++ 函数


Get a write lock on a tuple

dbplus_freerlocks
dbplus_getunique
DB++ 函数
PHP Manual

dbplus_getlock

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_getlock — Get a write lock on a tuple

说明

int dbplus_getlock ( resource $relation , string $tuple )

Requests a write lock on the specified tuple.

参数

relation

A relation opened by dbplus_open().

tuple

返回值

Returns zero on success or a non-zero error code, especially DBPLUS_ERR_WLOCKED on failure.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • dbplus_freelock() - Release write lock on tuple
  • dbplus_freerlocks() - Free all tuple locks on given relation
  • dbplus_freealllocks() - Free all locks held by this client

dbplus_freerlocks
dbplus_getunique
DB++ 函数


Get an id number unique to a relation

dbplus_getlock
dbplus_info
DB++ 函数
PHP Manual

dbplus_getunique

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_getunique — Get an id number unique to a relation

说明

int dbplus_getunique ( resource $relation , int $uniqueid )

Obtains a number guaranteed to be unique for the given relation and will pass it back in the variable given as uniqueid.

参数

relation

A relation opened by dbplus_open().

uniqueid

返回值

Returns DBPLUS_ERR_NOERR on success or a db++ error code on failure.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_getlock
dbplus_info
DB++ 函数


Get information about a relation

dbplus_getunique
dbplus_last
DB++ 函数
PHP Manual

dbplus_info

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_info — Get information about a relation

说明

int dbplus_info ( resource $relation , string $key , array &$result )
Warning

本函数还未编写文档，仅有参数列表。

参数

relation

A relation opened by dbplus_open().

key

result

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_getunique
dbplus_last
DB++ 函数


Get last tuple from relation

dbplus_info
dbplus_lockrel
DB++ 函数
PHP Manual

dbplus_last

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_last — Get last tuple from relation

说明

int dbplus_last ( resource $relation , array &$tuple )

Reads the data for the last tuple for the given relation, makes it the current tuple and pass it back as an associative array in tuple.

参数

relation

A relation opened by dbplus_open().

tuple

返回值

Returns DBPLUS_ERR_NOERR on success or a db++ error code on failure.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • dbplus_first() - Get first tuple from relation
  • dbplus_curr() - Get current tuple from relation
  • dbplus_prev() - Get previous tuple from relation
  • dbplus_next() - Get next tuple from relation

dbplus_info
dbplus_lockrel
DB++ 函数


Request write lock on relation

dbplus_last
dbplus_next
DB++ 函数
PHP Manual

dbplus_lockrel

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_lockrel — Request write lock on relation

说明

int dbplus_lockrel ( resource $relation )

Requests a write lock on the given relation.

Other clients may still query the relation, but can't alter it while it is locked.

参数

relation

A relation opened by dbplus_open().

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_last
dbplus_next
DB++ 函数


Get next tuple from relation

dbplus_lockrel
dbplus_open
DB++ 函数
PHP Manual

dbplus_next

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_next — Get next tuple from relation

说明

int dbplus_next ( resource $relation , array &$tuple )

Reads the data for the next tuple for the given relation, makes it the current tuple and will pass it back as an associative array in tuple.

参数

relation

A relation opened by dbplus_open().

tuple

返回值

Returns DBPLUS_ERR_NOERR on success or a db++ error code on failure.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • dbplus_first() - Get first tuple from relation
  • dbplus_curr() - Get current tuple from relation
  • dbplus_prev() - Get previous tuple from relation
  • dbplus_last() - Get last tuple from relation

dbplus_lockrel
dbplus_open
DB++ 函数


Open relation file

dbplus_next
dbplus_prev
DB++ 函数
PHP Manual

dbplus_open

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_open — Open relation file

说明

resource dbplus_open ( string $name )

Opens the given relation file.

参数

name

Can be either a file name or a relative or absolute path name. This will be mapped in any case to an absolute relation file path on a specific host machine and server.

返回值

On success a relation file resource (cursor) is returned which must be used in any subsequent commands referencing the relation. Failure leads to a zero return value, the actual error code may be asked for by calling dbplus_errno().

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_next
dbplus_prev
DB++ 函数


Get previous tuple from relation

dbplus_open
dbplus_rchperm
DB++ 函数
PHP Manual

dbplus_prev

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_prev — Get previous tuple from relation

说明

int dbplus_prev ( resource $relation , array &$tuple )

Reads the data for the previous tuple for the given relation, makes it the current tuple and will pass it back as an associative array in tuple.

参数

relation

A relation opened by dbplus_open().

tuple

返回值

Returns DBPLUS_ERR_NOERR on success or a db++ error code on failure.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • dbplus_first() - Get first tuple from relation
  • dbplus_curr() - Get current tuple from relation
  • dbplus_next() - Get next tuple from relation
  • dbplus_last() - Get last tuple from relation

dbplus_open
dbplus_rchperm
DB++ 函数


Change relation permissions

dbplus_prev
dbplus_rcreate
DB++ 函数
PHP Manual

dbplus_rchperm

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_rchperm — Change relation permissions

说明

int dbplus_rchperm ( resource $relation , int $mask , string $user , string $group )

Changes access permissions as specified by mask, user and group. The values for these are operating system specific.

参数

relation

A relation opened by dbplus_open().

mask

user

group

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_prev
dbplus_rcreate
DB++ 函数


Creates a new DB++ relation

dbplus_rchperm
dbplus_rcrtexact
DB++ 函数
PHP Manual

dbplus_rcreate

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_rcreate — Creates a new DB++ relation

说明

resource dbplus_rcreate ( string $name , mixed $domlist [, bool $overwrite ] )

Creates a new relation. Any existing relation sharing the same name will be overwritten if the relation is currently not in use and overwrite is set to TRUE.

参数

name

domlist

A combination of domains. May be passed as a single domain name string or as an array of domain names.

This parameter should contain the domain specification for the new relation within an array of domain description strings. A domain description string consists of a domain name unique to this relation, a slash and a type specification character. See the db++ documentation, especially the dbcreate(1) manpage, for a description of available type specifiers and their meanings.

Note:

This function will also accept a string with space delimited domain description strings, but it is recommended to use an array

overwrite

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_rchperm
dbplus_rcrtexact
DB++ 函数


Creates an exact but empty copy of a relation including indices

dbplus_rcreate
dbplus_rcrtlike
DB++ 函数
PHP Manual

dbplus_rcrtexact

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_rcrtexact — Creates an exact but empty copy of a relation including indices

说明

mixed dbplus_rcrtexact ( string $name , resource $relation [, bool $overwrite ] )

dbplus_rcrtexact() will create an exact but empty copy of the given relation under a new name.

参数

name

relation

The copied relation, opened by dbplus_open().

overwrite

An existing relation by the same name will only be overwritten if this parameter is set to TRUE and no other process is currently using the relation.

返回值

Returns resource on success or DBPLUS_ERR_UNKNOWN on failure.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_rcreate
dbplus_rcrtlike
DB++ 函数


Creates an empty copy of a relation with default indices

dbplus_rcrtexact
dbplus_resolve
DB++ 函数
PHP Manual

dbplus_rcrtlike

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_rcrtlike — Creates an empty copy of a relation with default indices

说明

mixed dbplus_rcrtlike ( string $name , resource $relation [, int $overwrite ] )

dbplus_rcrtexact() will create an empty copy of the given relation under a new name, but with default indices.

参数

name

relation

The copied relation, opened by dbplus_open().

overwrite

An existing relation by the same name will only be overwritten if this parameter is set to TRUE and no other process is currently using the relation.

返回值

Returns resource on success or DBPLUS_ERR_UNKNOWN on failure.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_rcrtexact
dbplus_resolve
DB++ 函数


Resolve host information for relation

dbplus_rcrtlike
dbplus_restorepos
DB++ 函数
PHP Manual

dbplus_resolve

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_resolve — Resolve host information for relation

说明

array dbplus_resolve ( string $relation_name )

dbplus_resolve() will try to resolve the given relation_name and find out internal server id, real hostname and the database path on this host.

参数

relation_name

The relation name.

返回值

Returns an array containing these values under the keys sid, host and host_path or FALSE on error.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • dbplus_tcl() - Execute TCL code on server side

dbplus_rcrtlike
dbplus_restorepos
DB++ 函数


Restore position

dbplus_resolve
dbplus_rkeys
DB++ 函数
PHP Manual

dbplus_restorepos

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_restorepos — Restore position

说明

int dbplus_restorepos ( resource $relation , array $tuple )
Warning

本函数还未编写文档，仅有参数列表。

参数

relation

A relation opened by dbplus_open().

tuple

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_resolve
dbplus_rkeys
DB++ 函数


Specify new primary key for a relation

dbplus_restorepos
dbplus_ropen
DB++ 函数
PHP Manual

dbplus_rkeys

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_rkeys — Specify new primary key for a relation

说明

mixed dbplus_rkeys ( resource $relation , mixed $domlist )

dbplus_rkeys() will replace the current primary key for relation with the combination of domains specified by domlist.

参数

relation

A relation opened by dbplus_open().

domlist

A combination of domains. May be passed as a single domain name string or as an array of domain names.

返回值

Returns resource on success or DBPLUS_ERR_UNKNOWN on failure.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_restorepos
dbplus_ropen
DB++ 函数


Open relation file local

dbplus_rkeys
dbplus_rquery
DB++ 函数
PHP Manual

dbplus_ropen

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_ropen — Open relation file local

说明

resource dbplus_ropen ( string $name )

dbplus_ropen() will open the relation file locally for quick access without any client/server overhead. Access is read only and only dbplus_curr() and dbplus_next() may be applied to the returned relation.

参数

name

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_rkeys
dbplus_rquery
DB++ 函数


Perform local (raw) AQL query

dbplus_ropen
dbplus_rrename
DB++ 函数
PHP Manual

dbplus_rquery

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_rquery — Perform local (raw) AQL query

说明

resource dbplus_rquery ( string $query [, string $dbpath ] )

dbplus_rquery() performs a local (raw) AQL query using an AQL interpreter embedded into the db++ client library. dbplus_rquery() is faster than dbplus_aql() but will work on local data only.

参数

query

dbpath

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_ropen
dbplus_rrename
DB++ 函数


Rename a relation

dbplus_rquery
dbplus_rsecindex
DB++ 函数
PHP Manual

dbplus_rrename

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_rrename — Rename a relation

说明

int dbplus_rrename ( resource $relation , string $name )

dbplus_rrename() will change the name of relation to name.

参数

relation

A relation opened by dbplus_open().

name

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_rquery
dbplus_rsecindex
DB++ 函数


Create a new secondary index for a relation

dbplus_rrename
dbplus_runlink
DB++ 函数
PHP Manual

dbplus_rsecindex

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_rsecindex — Create a new secondary index for a relation

说明

mixed dbplus_rsecindex ( resource $relation , mixed $domlist , int $type )

dbplus_rsecindex() will create a new secondary index for relation with consists of the domains specified by domlist and is of type type

参数

relation

A relation opened by dbplus_open().

domlist

A combination of domains. May be passed as a single domain name string or as an array of domain names.

type

返回值

Returns resource on success or DBPLUS_ERR_UNKNOWN on failure.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_rrename
dbplus_runlink
DB++ 函数


Remove relation from filesystem

dbplus_rsecindex
dbplus_rzap
DB++ 函数
PHP Manual

dbplus_runlink

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_runlink — Remove relation from filesystem

说明

int dbplus_runlink ( resource $relation )

dbplus_runlink() will close and remove the relation.

参数

relation

A relation opened by dbplus_open().

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_rsecindex
dbplus_rzap
DB++ 函数


Remove all tuples from relation

dbplus_runlink
dbplus_savepos
DB++ 函数
PHP Manual

dbplus_rzap

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_rzap — Remove all tuples from relation

说明

int dbplus_rzap ( resource $relation )

dbplus_rzap() will remove all tuples from relation.

参数

relation

A relation opened by dbplus_open().

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_runlink
dbplus_savepos
DB++ 函数


Save position

dbplus_rzap
dbplus_setindex
DB++ 函数
PHP Manual

dbplus_savepos

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_savepos — Save position

说明

int dbplus_savepos ( resource $relation )
Warning

本函数还未编写文档，仅有参数列表。

参数

relation

A relation opened by dbplus_open().

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_rzap
dbplus_setindex
DB++ 函数


Set index

dbplus_savepos
dbplus_setindexbynumber
DB++ 函数
PHP Manual

dbplus_setindex

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_setindex — Set index

说明

int dbplus_setindex ( resource $relation , string $idx_name )
Warning

本函数还未编写文档，仅有参数列表。

参数

relation

A relation opened by dbplus_open().

idx_name

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_savepos
dbplus_setindexbynumber
DB++ 函数


Set index by number

dbplus_setindex
dbplus_sql
DB++ 函数
PHP Manual

dbplus_setindexbynumber

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_setindexbynumber — Set index by number

说明

int dbplus_setindexbynumber ( resource $relation , int $idx_number )
Warning

本函数还未编写文档，仅有参数列表。

参数

relation

A relation opened by dbplus_open().

idx_number

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_setindex
dbplus_sql
DB++ 函数


Perform SQL query

dbplus_setindexbynumber
dbplus_tcl
DB++ 函数
PHP Manual

dbplus_sql

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_sql — Perform SQL query

说明

resource dbplus_sql ( string $query [, string $server [, string $dbpath ]] )
Warning

本函数还未编写文档，仅有参数列表。

参数

query

server

dbpath

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_setindexbynumber
dbplus_tcl
DB++ 函数


Execute TCL code on server side

dbplus_sql
dbplus_tremove
DB++ 函数
PHP Manual

dbplus_tcl

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_tcl — Execute TCL code on server side

说明

string dbplus_tcl ( int $sid , string $script )

A db++ server will prepare a TCL interpreter for each client connection. This interpreter will enable the server to execute TCL code provided by the client as a sort of stored procedures to improve the performance of database operations by avoiding client/server data transfers and context switches.

dbplus_tcl() needs to pass the client connection id the TCL script code should be executed by. dbplus_resolve() will provide this connection id. The function will return whatever the TCL code returns or a TCL error message if the TCL code fails.

参数

sid

script

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • dbplus_resolve() - Resolve host information for relation

dbplus_sql
dbplus_tremove
DB++ 函数


Remove tuple and return new current tuple

dbplus_tcl
dbplus_undo
DB++ 函数
PHP Manual

dbplus_tremove

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_tremove — Remove tuple and return new current tuple

说明

int dbplus_tremove ( resource $relation , array $tuple [, array &$current ] )

dbplus_tremove() removes tuple from relation if it perfectly matches a tuple within the relation. current, if given, will contain the data of the new current tuple after calling dbplus_tremove().

参数

relation

A relation opened by dbplus_open().

tuple

current

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_tcl
dbplus_undo
DB++ 函数


Undo

dbplus_tremove
dbplus_undoprepare
DB++ 函数
PHP Manual

dbplus_undo

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_undo — Undo

说明

int dbplus_undo ( resource $relation )
Warning

本函数还未编写文档，仅有参数列表。

参数

relation

A relation opened by dbplus_open().

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_tremove
dbplus_undoprepare
DB++ 函数


Prepare undo

dbplus_undo
dbplus_unlockrel
DB++ 函数
PHP Manual

dbplus_undoprepare

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_undoprepare — Prepare undo

说明

int dbplus_undoprepare ( resource $relation )
Warning

本函数还未编写文档，仅有参数列表。

参数

relation

A relation opened by dbplus_open().

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_undo
dbplus_unlockrel
DB++ 函数


Give up write lock on relation

dbplus_undoprepare
dbplus_unselect
DB++ 函数
PHP Manual

dbplus_unlockrel

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_unlockrel — Give up write lock on relation

说明

int dbplus_unlockrel ( resource $relation )

Release a write lock previously obtained by dbplus_lockrel().

参数

relation

A relation opened by dbplus_open().

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_undoprepare
dbplus_unselect
DB++ 函数


Remove a constraint from relation

dbplus_unlockrel
dbplus_update
DB++ 函数
PHP Manual

dbplus_unselect

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_unselect — Remove a constraint from relation

说明

int dbplus_unselect ( resource $relation )

Calling dbplus_unselect() will remove a constraint previously set by dbplus_find() on relation.

参数

relation

A relation opened by dbplus_open().

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_unlockrel
dbplus_update
DB++ 函数


Update specified tuple in relation

dbplus_unselect
dbplus_xlockrel
DB++ 函数
PHP Manual

dbplus_update

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_update — Update specified tuple in relation

说明

int dbplus_update ( resource $relation , array $old , array $new )

dbplus_update() replaces the old tuple with the data from the new one, only if the old completely matches a tuple within relation.

参数

relation

A relation opened by dbplus_open().

old

The old tuple.

new

The new tuple.

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_unselect
dbplus_xlockrel
DB++ 函数


Request exclusive lock on relation

dbplus_update
dbplus_xunlockrel
DB++ 函数
PHP Manual

dbplus_xlockrel

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_xlockrel — Request exclusive lock on relation

说明

int dbplus_xlockrel ( resource $relation )

Request an exclusive lock on relation preventing even read access from other clients.

参数

relation

A relation opened by dbplus_open().

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • dbplus_xunlockrel() - Free exclusive lock on relation

dbplus_update
dbplus_xunlockrel
DB++ 函数


Free exclusive lock on relation

dbplus_xlockrel
dBase
DB++ 函数
PHP Manual

dbplus_xunlockrel

(PHP 4 <= 4.1.0, PECL dbplus >= 0.9)

dbplus_xunlockrel — Free exclusive lock on relation

说明

int dbplus_xunlockrel ( resource $relation )

Releases an exclusive lock previously obtained by dbplus_xlockrel().

参数

relation

A relation opened by dbplus_open().

返回值

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

dbplus_xlockrel
dBase
DB++ 函数


dBase

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • dBase 函数
    • dbase_add_record — Adds a record to a database
    • dbase_close — Closes a database
    • dbase_create — Creates a database
    • dbase_delete_record — Deletes a record from a database
    • dbase_get_header_info — Gets the header info of a database
    • dbase_get_record_with_names — Gets a record from a database as an associative array
    • dbase_get_record — Gets a record from a database as an indexed array
    • dbase_numfields — Gets the number of fields of a database
    • dbase_numrecords — Gets the number of records in a database
    • dbase_open — Opens a database
    • dbase_pack — Packs a database
    • dbase_replace_record — Replaces a record in a database
dbplus_xunlockrel
简介
针对各数据库系统对应的扩展


简介

Note:

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.3.0.

These functions allow you to access records stored in dBase-format (dbf) databases.

Warning

We recommend against using dBase files as your production database. Use » SQLite or choose any real SQL server instead; » MySQL or » Postgres are common choices with PHP. dBase support is here to allow you to import and export data to and from your web database, because the file format is commonly understood by Windows spreadsheets and organizers.

Caution

As of dbase 7.0.0 the databases are automatically locked via flock(). There has been no support for locking earlier, so two concurrent web server processes modifying the same dBase file would have very likely ruined your database. This can happen even with dbase 7.0.0+ on systems which implement the locks at the process level with multithreaded SAPIs such as ISAPI.

dBase files are simple sequential files of fixed length records. Records are appended to the end of the file and deleted records are kept until you call dbase_pack().

Only dbf file levels 3 (dBASE III+) - 5 (dBASE V) are supported. The types of dBase fields available are:

Available types of fields
Field | dBase Type | Format | Additional information
M | Memo | n/a | This type is not supported by PHP, such field will be ignored
D | Date | YYYYMMDD | The field length is limited to 8
T | DateTime | YYYYMMDDhhmmss.uuu | (FoxPro) No validity checks are done. Available as of dbase 7.0.0.
N | Number | A number | You must declare a length and a precision (the number of digits after the decimal point).
F | Float | A float number | Same as N. Available as of PHP 5.2.0
C | String | A string | You must declare a length. When retrieving data, the string will be right-padded with spaces to fit the declared length. Overlong strings will be silently truncated when storing data.
L | Boolean | T or Y for TRUE, F or N for FALSE, ? for uninitialized. | As of dbase 7.0.0, returned as a bool (TRUE or FALSE), or NULL for uninitialized fields. Formerly, returned as an int (1 or 0).

Note:

As of dbase 7.0.0 nullable fields are supported for DBASE_TYPE_FOXPRO databases. If a field is nullable, passing NULL will set the respective flag, and on later retrieval the field value will be NULL.

Note:

There is no support for indexes or memo fields.

dBase
安装／配置
dBase


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
dBase


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/dbase.

需求
运行时配置
安装／配置


资源类型

As of dbase 7.0.0, the resource type dbase is defined, which is returned by dbase_open() and dbase_create().

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

DBASE_VERSION (string)
The extension version. (Available as of dbase 7.0.0)
DBASE_RDONLY (int)
Open database for reading only. Used with dbase_open(). (Available as of dbase 7.0.0)
DBASE_RDWR (int)
Open database for reading and writing. Used with dbase_open(). (Available as of dbase 7.0.0)
DBASE_TYPE_DBASE (int)
Create dBASE style database. Used with dbase_create(). (Available as of dbase 7.0.0)
DBASE_TYPE_FOXPRO (int)
Create FoxPro style database. Used with dbase_create(). (Available as of dbase 7.0.0)
资源类型
dBase 函数
dBase


dBase 函数

范例

Many examples in this reference require a dBase database. We will use /tmp/test.dbf that will be created in the example of dbase_create().

Table of Contents

  • dbase_add_record — Adds a record to a database
  • dbase_close — Closes a database
  • dbase_create — Creates a database
  • dbase_delete_record — Deletes a record from a database
  • dbase_get_header_info — Gets the header info of a database
  • dbase_get_record_with_names — Gets a record from a database as an associative array
  • dbase_get_record — Gets a record from a database as an indexed array
  • dbase_numfields — Gets the number of fields of a database
  • dbase_numrecords — Gets the number of records in a database
  • dbase_open — Opens a database
  • dbase_pack — Packs a database
  • dbase_replace_record — Replaces a record in a database
预定义常量
dbase_add_record
dBase


Adds a record to a database

dBase 函数
dbase_close
dBase 函数
PHP Manual

dbase_add_record

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_add_record — Adds a record to a database

说明

bool dbase_add_record ( resource $dbase_identifier , array $record )

Adds the given data to the database.

参数

dbase_identifier

The database link identifier, returned by dbase_open() or dbase_create().

record

An indexed array of data. The number of items must be equal to the number of fields in the database, otherwise dbase_add_record() will fail.

Note:

If you're using dbase_get_record() return value for this parameter, remember to reset the key named deleted.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
dbase 7.0.0 | dbase_identifier is now a resource instead of an int.

范例

Example #1 Inserting a record in a dBase database

<?php

// open in read-write mode
$db = dbase_open('/tmp/test.dbf', 2);

if ($db) {
  dbase_add_record($db, array(
      date('Ymd'),
      'Maxim Topolov',
      '23',
      'max@example.com',
      'T'));
  dbase_close($db);
}

?>

参见

  • dbase_delete_record() - Deletes a record from a database
  • dbase_replace_record() - Replaces a record in a database

dBase 函数
dbase_close
dBase 函数


Closes a database

dbase_add_record
dbase_create
dBase 函数
PHP Manual

dbase_close

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_close — Closes a database

说明

bool dbase_close ( resource $dbase_identifier )

Closes the given database link identifier.

参数

dbase_identifier

The database link identifier, returned by dbase_open() or dbase_create().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
dbase 7.0.0 | dbase_identifier is now a resource instead of an int.

范例

Example #1 Closing a dBase database file

<?php

// open in read-only mode
$db = dbase_open('/tmp/test.dbf', 0);

if ($db) {
  // read some data ..

  dbase_close($db);
}

?>

参见

  • dbase_open() - Opens a database
  • dbase_create() - Creates a database

dbase_add_record
dbase_create
dBase 函数


Creates a database

dbase_close
dbase_delete_record
dBase 函数
PHP Manual

dbase_create

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_create — Creates a database

说明

resource dbase_create ( string $filename , array $fields , int $type = DBASE_TYPE_DBASE )

dbase_create() creates a dBase database with the given definition. If the file already exists, it is not truncated. dbase_pack() can be called to force truncation.

Note: 当启用 安全模式时， PHP 会检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。

Note:

此函数受 open_basedir 影响。

参数

filename

The name of the database. It can be a relative or absolute path to the file where dBase will store your data.

fields

An array of arrays, each array describing the format of one field of the database. Each field consists of a name, a character indicating the field type, and optionally, a length, a precision and a nullable flag. The supported field types are listed in the introduction section.

Note:

The fieldnames are limited in length and must not exceed 10 chars.

type

The type of database to be created. Either DBASE_TYPE_DBASE or DBASE_TYPE_FOXPRO.

Note:

The fieldnames are limited in length and must not exceed 10 chars.

返回值

Returns a database link identifier if the database is successfully created, or FALSE if an error occurred.

更新日志

版本 | 说明
dbase 7.0.0 | The return value is now a resource instead of an int.

范例

Example #1 Creating a dBase database file

<?php

// database "definition"
$def = array(
  array("date",     "D"),
  array("name",     "C",  50),
  array("age",      "N",   3, 0),
  array("email",    "C", 128),
  array("ismember", "L")
);

// creation
if (!dbase_create('/tmp/test.dbf', $def)) {
  echo "Error, can't create the database\n";
}

?>

参见

  • dbase_open() - Opens a database
  • dbase_close() - Closes a database

dbase_close
dbase_delete_record
dBase 函数


Deletes a record from a database

dbase_create
dbase_get_header_info
dBase 函数
PHP Manual

dbase_delete_record

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_delete_record — Deletes a record from a database

说明

bool dbase_delete_record ( resource $dbase_identifier , int $record_number )

Marks the given record to be deleted from the database.

Note:

To actually remove the record from the database, you must also call dbase_pack().

参数

dbase_identifier

The database link identifier, returned by dbase_open() or dbase_create().

record_number

An integer which spans from 1 to the number of records in the database (as returned by dbase_numrecords()).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
dbase 7.0.0 | dbase_identifier is now a resource instead of an int.

参见

  • dbase_add_record() - Adds a record to a database
  • dbase_replace_record() - Replaces a record in a database

dbase_create
dbase_get_header_info
dBase 函数


Gets the header info of a database

dbase_delete_record
dbase_get_record_with_names
dBase 函数
PHP Manual

dbase_get_header_info

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_get_header_info — Gets the header info of a database

说明

array dbase_get_header_info ( resource $dbase_identifier )

Returns information on the column structure of the given database link identifier.

参数

dbase_identifier

The database link identifier, returned by dbase_open() or dbase_create().

返回值

An indexed array with an entry for each column in the database. The array index starts at 0.

Each array element contains an associative array of column information, as described here:

name
The name of the column
type
The human-readable name for the dbase type of the column (i.e. date, boolean, etc.) The supported field types are listed in the introduction section.
length
The number of bytes this column can hold
precision
The number of digits of decimal precision for the column
format
A suggested printf() format specifier for the column
offset
The byte offset of the column from the start of the row

If the database header information cannot be read, FALSE is returned.

更新日志

版本 | 说明
dbase 7.0.0 | dbase_identifier is now a resource instead of an int.

范例

Example #1 Showing header information for a dBase database file

<?php
// Path to dbase file
$db_path = "/tmp/test.dbf";

// Open dbase file
$dbh = dbase_open($db_path, 0)
  or die("Error! Could not open dbase database file '$db_path'.");

// Get column information
$column_info = dbase_get_header_info($dbh);

// Display information
print_r($column_info);
?>

dbase_delete_record
dbase_get_record_with_names
dBase 函数


Gets a record from a database as an associative array

dbase_get_header_info
dbase_get_record
dBase 函数
PHP Manual

dbase_get_record_with_names

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_get_record_with_names — Gets a record from a database as an associative array

说明

array dbase_get_record_with_names ( resource $dbase_identifier , int $record_number )

Gets a record from a dBase database as an associative array.

参数

dbase_identifier

The database link identifier, returned by dbase_open() or dbase_create().

record_number

The index of the record between 1 and dbase_numrecords($dbase_identifier).

返回值

An associative array with the record. This will also include a key named deleted which is set to 1 if the record has been marked for deletion (see dbase_delete_record()). Therefore it is not possible to retrieve the value of a field named deleted with this function.

Each field is converted to the appropriate PHP type, except:

  • Dates are left as strings.
  • DateTime values are converted to strings.
  • Integers outside the range PHP_INT_MIN..PHP_INT_MAX are returned as strings.
  • Before dbase 7.0.0, booleans (L) were converted to 1 or 0.

On error, dbase_get_record_with_names() will return FALSE.

更新日志

版本 | 说明
dbase 7.0.0 | dbase_identifier is now a resource instead of an int.

范例

Example #1 Listing all the registered members in the database

<?php
// open in read-only mode
$db = dbase_open('/tmp/test.dbf', 0);

if ($db) {
  $record_numbers = dbase_numrecords($db);
  for ($i = 1; $i <= $record_numbers; $i++) {
      $row = dbase_get_record_with_names($db, $i);
      if ($row['ismember'] == 1) {
          echo "Member #$i: " . trim($row['name']) . "\n";
      }
  }
}
?>

参见

  • dbase_get_record() - Gets a record from a database as an indexed array

dbase_get_header_info
dbase_get_record
dBase 函数


Gets a record from a database as an indexed array

dbase_get_record_with_names
dbase_numfields
dBase 函数
PHP Manual

dbase_get_record

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_get_record — Gets a record from a database as an indexed array

说明

array dbase_get_record ( resource $dbase_identifier , int $record_number )

Gets a record from a database as an indexed array.

参数

dbase_identifier

The database link identifier, returned by dbase_open() or dbase_create().

record_number

The index of the record between 1 and dbase_numrecords($dbase_identifier).

返回值

An indexed array with the record. This array will also include an associative key named deleted which is set to 1 if the record has been marked for deletion (see dbase_delete_record()).

Each field is converted to the appropriate PHP type, except:

  • Dates are left as strings.
  • DateTime values are converted to strings.
  • Integers outside the range PHP_INT_MIN..PHP_INT_MAX are returned as strings.
  • Before dbase 7.0.0, booleans (L) were converted to 1 or 0.

On error, dbase_get_record() will return FALSE.

更新日志

版本 | 说明
dbase 7.0.0 | dbase_identifier is now a resource instead of an int.

参见

  • dbase_get_record_with_names() - Gets a record from a database as an associative array

dbase_get_record_with_names
dbase_numfields
dBase 函数


Gets the number of fields of a database

dbase_get_record
dbase_numrecords
dBase 函数
PHP Manual

dbase_numfields

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_numfields — Gets the number of fields of a database

说明

int dbase_numfields ( resource $dbase_identifier )

Gets the number of fields (columns) in the specified database.

Note:

Field numbers are between 0 and dbase_numfields($db)-1, while record numbers are between 1 and dbase_numrecords($db).

参数

dbase_identifier

The database link identifier, returned by dbase_open() or dbase_create().

返回值

The number of fields in the database, or FALSE if an error occurs.

更新日志

版本 | 说明
dbase 7.0.0 | dbase_identifier is now a resource instead of an int.

范例

Example #1 dbase_numfields() Example

<?php

$rec = dbase_get_record($db, $recno);
$nf  = dbase_numfields($db);
for ($i = 0; $i < $nf; $i++) {
  echo $rec[$i], "\n";
}

?>

参见

  • dbase_numrecords() - Gets the number of records in a database

dbase_get_record
dbase_numrecords
dBase 函数


Gets the number of records in a database

dbase_numfields
dbase_open
dBase 函数
PHP Manual

dbase_numrecords

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_numrecords — Gets the number of records in a database

说明

int dbase_numrecords ( resource $dbase_identifier )

Gets the number of records (rows) in the specified database.

Note:

Record numbers are between 1 and dbase_numrecords($db), while field numbers are between 0 and dbase_numfields($db)-1.

参数

dbase_identifier

The database link identifier, returned by dbase_open() or dbase_create().

返回值

The number of records in the database, or FALSE if an error occurs.

更新日志

版本 | 说明
dbase 7.0.0 | dbase_identifier is now a resource instead of an int.

范例

Example #1 Looping over all the records of the database

<?php

// open in read-only mode
$db = dbase_open('/tmp/test.dbf', 0);

if ($db) {
  $record_numbers = dbase_numrecords($db);
  for ($i = 1; $i <= $record_numbers; $i++) {
      // do something here, for each record
  }
}

?>

参见

  • dbase_numfields() - Gets the number of fields of a database

dbase_numfields
dbase_open
dBase 函数


Opens a database

dbase_numrecords
dbase_pack
dBase 函数
PHP Manual

dbase_open

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_open — Opens a database

说明

resource dbase_open ( string $filename , int $mode )

dbase_open() opens a dBase database with the given access mode.

Note: 当启用 安全模式时， PHP 会检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。

Note:

此函数受 open_basedir 影响。

参数

filename

The name of the database. It can be a relative or absolute path to the file where dBase will store your data.

mode

An integer which correspond to those for the open() system call (Typically 0 means read-only, 1 means write-only, and 2 means read and write).

Note:

You can't open a dBase file in write-only mode as the function will fail to read the headers information and thus you can't use 1 as mode.

As of dbase 7.0.0 you can use DBASE_RDONLY and DBASE_RDWR, respectively, to specify the mode.

更新日志

版本 | 说明
dbase 7.0.0 | The return value is now a resource instead of an int.

范例

Example #1 Opening a dBase database file

<?php

// open in read-only mode
$db = dbase_open('/tmp/test.dbf', 0);

if ($db) {
  // read some data ..

  dbase_close($db);
}

?>

返回值

Returns a database link identifier if the database is successfully opened, or FALSE if an error occurred.

参见

  • dbase_create() - Creates a database
  • dbase_close() - Closes a database

dbase_numrecords
dbase_pack
dBase 函数


Packs a database

dbase_open
dbase_replace_record
dBase 函数
PHP Manual

dbase_pack

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_pack — Packs a database

说明

bool dbase_pack ( resource $dbase_identifier )

Packs the specified database by permanently deleting all records marked for deletion using dbase_delete_record(). Note that the file will be truncated after successful packing (contrary to dBASE III's PACK command).

参数

dbase_identifier

The database link identifier, returned by dbase_open() or dbase_create().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
dbase 7.0.0 | dbase_identifier is now a resource instead of an int.

范例

Example #1 Emptying a dBase database

<?php

// open in read-write mode
$db = dbase_open('/tmp/test.dbf', 2);

if ($db) {
  $record_numbers = dbase_numrecords($db);
  for ($i = 1; $i <= $record_numbers; $i++) {
      dbase_delete_record($db, $i);
  }
  // expunge the database
  dbase_pack($db);
}

?>

参见

  • dbase_delete_record() - Deletes a record from a database

dbase_open
dbase_replace_record
dBase 函数


Replaces a record in a database

dbase_pack
filePro
dBase 函数
PHP Manual

dbase_replace_record

(PHP 5 < 5.3.0, dbase 5, dbase 7)

dbase_replace_record — Replaces a record in a database

说明

bool dbase_replace_record ( resource $dbase_identifier , array $record , int $record_number )

Replaces the given record in the database with the given data.

参数

dbase_identifier

The database link identifier, returned by dbase_open() or dbase_create().

record

An indexed array of data. The number of items must be equal to the number of fields in the database, otherwise dbase_replace_record() will fail.

Note:

If you're using dbase_get_record() return value for this parameter, remember to reset the key named deleted.

record_number

An integer which spans from 1 to the number of records in the database (as returned by dbase_numrecords()).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
dbase 7.0.0 | dbase_identifier is now a resource instead of an int.

范例

Example #1 Updating a record in the database

<?php

// open in read-write mode
$db = dbase_open('/tmp/test.dbf', 2);

if ($db) {
  // gets the old row
  $row = dbase_get_record_with_names($db, 1);

  // remove the 'deleted' entry
  unset($row['deleted']);

  // Update the date field with the current timestamp
  $row['date'] = date('Ymd');

  // convert the row to an indexed array
  $row = array_values($row);

  // Replace the record
  dbase_replace_record($db, $row, 1);
  dbase_close($db);
}

?>

注释

Note:

Boolean fields result in an integer element value (0 or 1) when retrieved via dbase_get_record() or dbase_get_record_with_names(). If they are written back, this results in the value becoming 0, so care has to be taken to properly adjust the values.

参见

  • dbase_add_record() - Adds a record to a database
  • dbase_delete_record() - Deletes a record from a database

dbase_pack
filePro
dBase 函数


filePro

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • filePro 函数
    • filepro_fieldcount — Find out how many fields are in a filePro database
    • filepro_fieldname — Gets the name of a field
    • filepro_fieldtype — Gets the type of a field
    • filepro_fieldwidth — Gets the width of a field
    • filepro_retrieve — Retrieves data from a filePro database
    • filepro_rowcount — Find out how many rows are in a filePro database
    • filepro — Read and verify the map file
dbase_replace_record
简介
针对各数据库系统对应的扩展


简介

These functions allow read-only access to data stored in filePro databases.

filePro is a registered trademark of fP Technologies, Inc. You can find more information about filePro at » http://www.fptech.com/.

Note:

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.2.0.

filePro
安装／配置
filePro


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
filePro


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/filepro.

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
filePro 函数
filePro


filePro 函数

Table of Contents

  • filepro_fieldcount — Find out how many fields are in a filePro database
  • filepro_fieldname — Gets the name of a field
  • filepro_fieldtype — Gets the type of a field
  • filepro_fieldwidth — Gets the width of a field
  • filepro_retrieve — Retrieves data from a filePro database
  • filepro_rowcount — Find out how many rows are in a filePro database
  • filepro — Read and verify the map file
预定义常量
filepro_fieldcount
filePro


Find out how many fields are in a filePro database

filePro 函数
filepro_fieldname
filePro 函数
PHP Manual

filepro_fieldcount

(PHP 4, PHP 5 <= 5.1.6, PHP 7)

filepro_fieldcount — Find out how many fields are in a filePro database

说明

int filepro_fieldcount ( void )

Returns the number of fields (columns) in the opened filePro database.

返回值

Returns the number of fields in the opened filePro database, or FALSE on errors.

参见

  • filepro() - Read and verify the map file

filePro 函数
filepro_fieldname
filePro 函数


Gets the name of a field

filepro_fieldcount
filepro_fieldtype
filePro 函数
PHP Manual

filepro_fieldname

(PHP 4, PHP 5 <= 5.1.6, PHP 7)

filepro_fieldname — Gets the name of a field

说明

string filepro_fieldname ( int $field_number )

Returns the name of the field corresponding to field_number.

参数

field_number

The field number.

返回值

Returns the name of the field as a string, or FALSE on errors.

filepro_fieldcount
filepro_fieldtype
filePro 函数


Gets the type of a field

filepro_fieldname
filepro_fieldwidth
filePro 函数
PHP Manual

filepro_fieldtype

(PHP 4, PHP 5 <= 5.1.6, PHP 7)

filepro_fieldtype — Gets the type of a field

说明

string filepro_fieldtype ( int $field_number )

Returns the edit type of the field corresponding to field_number.

参数

field_number

The field number.

返回值

Returns the edit type of the field as a string, or FALSE on errors.

filepro_fieldname
filepro_fieldwidth
filePro 函数


Gets the width of a field

filepro_fieldtype
filepro_retrieve
filePro 函数
PHP Manual

filepro_fieldwidth

(PHP 4, PHP 5 <= 5.1.6, PHP 7)

filepro_fieldwidth — Gets the width of a field

说明

int filepro_fieldwidth ( int $field_number )

Returns the width of the field corresponding to field_number.

参数

field_number

The field number.

返回值

Returns the width of the field as a integer, or FALSE on errors.

filepro_fieldtype
filepro_retrieve
filePro 函数


Retrieves data from a filePro database

filepro_fieldwidth
filepro_rowcount
filePro 函数
PHP Manual

filepro_retrieve

(PHP 4, PHP 5 <= 5.1.6, PHP 7)

filepro_retrieve — Retrieves data from a filePro database

说明

string filepro_retrieve ( int $row_number , int $field_number )

Returns the data from the specified location in the database.

Note: 当启用 安全模式时， PHP 会检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。

参数

row_number

The row number. Must be between zero and the total number of rows minus one (0..filepro_rowcount() - 1)

field_number

The field number. Accepts values between zero and the total number of fields minus one (0..filepro_fieldcount() - 1)

返回值

Returns the specified data, or FALSE on errors.

filepro_fieldwidth
filepro_rowcount
filePro 函数


Find out how many rows are in a filePro database

filepro_retrieve
filepro
filePro 函数
PHP Manual

filepro_rowcount

(PHP 4, PHP 5 <= 5.1.6, PHP 7)

filepro_rowcount — Find out how many rows are in a filePro database

说明

int filepro_rowcount ( void )

Returns the number of rows in the opened filePro database.

Note: 当启用 安全模式时， PHP 会检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。

返回值

Returns the number of rows in the opened filePro database, or FALSE on errors.

参见

  • filepro() - Read and verify the map file

filepro_retrieve
filepro
filePro 函数


Read and verify the map file

filepro_rowcount
Firebird/InterBase
filePro 函数
PHP Manual

filepro

(PHP 4, PHP 5 <= 5.1.6, PHP 7)

filepro — Read and verify the map file

说明

bool filepro ( string $directory )

This reads and verifies the map file, storing the field count and info.

No locking is done, so you should avoid modifying your filePro database while it may be opened in PHP.

Note: 当启用 安全模式时， PHP 会检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。

参数

directory

The map directory.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

filepro_rowcount
Firebird/InterBase
filePro 函数


Firebird/InterBase

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Firebird/InterBase 函数
    • ibase_add_user — Add a user to a security database
    • ibase_affected_rows — Return the number of rows that were affected by the previous query
    • ibase_backup — Initiates a backup task in the service manager and returns immediately
    • ibase_blob_add — Add data into a newly created blob
    • ibase_blob_cancel — Cancel creating blob
    • ibase_blob_close — Close blob
    • ibase_blob_create — Create a new blob for adding data
    • ibase_blob_echo — Output blob contents to browser
    • ibase_blob_get — Get len bytes data from open blob
    • ibase_blob_import — Create blob, copy file in it, and close it
    • ibase_blob_info — Return blob length and other useful info
    • ibase_blob_open — Open blob for retrieving data parts
    • ibase_close — Close a connection to an InterBase database
    • ibase_commit_ret — Commit a transaction without closing it
    • ibase_commit — Commit a transaction
    • ibase_connect — Open a connection to a database
    • ibase_db_info — Request statistics about a database
    • ibase_delete_user — Delete a user from a security database
    • ibase_drop_db — Drops a database
    • ibase_errcode — Return an error code
    • ibase_errmsg — Return error messages
    • ibase_execute — Execute a previously prepared query
    • ibase_fetch_assoc — Fetch a result row from a query as an associative array
    • ibase_fetch_object — Get an object from a InterBase database
    • ibase_fetch_row — Fetch a row from an InterBase database
    • ibase_field_info — Get information about a field
    • ibase_free_event_handler — Cancels a registered event handler
    • ibase_free_query — Free memory allocated by a prepared query
    • ibase_free_result — Free a result set
    • ibase_gen_id — Increments the named generator and returns its new value
    • ibase_maintain_db — Execute a maintenance command on the database server
    • ibase_modify_user — Modify a user to a security database
    • ibase_name_result — Assigns a name to a result set
    • ibase_num_fields — Get the number of fields in a result set
    • ibase_num_params — Return the number of parameters in a prepared query
    • ibase_param_info — Return information about a parameter in a prepared query
    • ibase_pconnect — Open a persistent connection to an InterBase database
    • ibase_prepare — Prepare a query for later binding of parameter placeholders and execution
    • ibase_query — Execute a query on an InterBase database
    • ibase_restore — Initiates a restore task in the service manager and returns immediately
    • ibase_rollback_ret — Roll back a transaction without closing it
    • ibase_rollback — Roll back a transaction
    • ibase_server_info — Request information about a database server
    • ibase_service_attach — Connect to the service manager
    • ibase_service_detach — Disconnect from the service manager
    • ibase_set_event_handler — Register a callback function to be called when events are posted
    • ibase_trans — Begin a transaction
    • ibase_wait_event — Wait for an event to be posted by the database
filepro
简介
针对各数据库系统对应的扩展


简介

Firebird is a relational database offering many ISO SQL-2003 features that runs on Linux, Windows, and a variety of Unix platforms. Firebird offers excellent concurrency, high performance, and powerful language support for stored procedures and triggers. It has been used in production systems, under a variety of names since 1981.

InterBase is the name of the closed-source variant of this RDBMS that was developed by Embarcadero/Inprise. More information about InterBase is available at » http://www.embarcadero.com/products/interbase.

Firebird is a commercially independent project (fundation) of C++ programmers, technical advisors and supporters developing and enhancing a multi-platform relational database management system based on the source code released by Inprise Corp (now known as Embarcadero) under the InterBase Public License v.1.0 on 25 July, 2000. More information about Firebird is available at » http://www.firebirdsql.org/.

Note:

This extension supports InterBase versions 6 and up and Firebird version 2.0 and up.

This database uses a single quote (') character for escaping add to your php.ini the following directive(Deprecated in PHP 5.3.0. Removed in PHP 5.4.0):

magic_quotes_sybase = On

Firebird/InterBase
安装／配置
Firebird/InterBase


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Firebird/InterBase


安装

To enable Firebird/InterBase support configure PHP --with-interbase[=DIR] , where DIR is the Firebird/InterBase base install directory, which defaults to /usr.

Note: Note to Win32/Win64 Users

为了使此扩展生效， DLL 文件必须能在 Windows 系统的 PATH 指示的路径下找到。如何操作的信息，请参见题为"如何在 Windows 中将 PHP 目录加到 PATH 中"的FAQ。虽然将 DLL 文件从 PHP 文件夹复制到 Windows 系统目录也行，但不建议这样做。 此扩展需要下列文件在 PATH 路径中： fbclient.dll,gds32.dll

If you installed the Firebird/InterBase database server on the same machine PHP is running on, you will have this DLL already and fbclient.dll,gds32.dll (gds32.dll is generated from the installer for legacy applications) will already be in the PATH.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

InterBase configuration options
名字 | 默认 | 可修改范围 | 更新日志
ibase.allow_persistent | "1" | PHP_INI_SYSTEM |
ibase.max_persistent | "-1" | PHP_INI_SYSTEM |
ibase.max_links | "-1" | PHP_INI_SYSTEM |
ibase.default_db | NULL | PHP_INI_SYSTEM | Available since PHP 5.0.0.
ibase.default_user | NULL | PHP_INI_ALL |
ibase.default_password | NULL | PHP_INI_ALL |
ibase.default_charset | NULL | PHP_INI_ALL | Available since PHP 5.0.0.
ibase.timestampformat | "%Y-%m-%d %H:%M:%S" | PHP_INI_ALL |
ibase.dateformat | "%Y-%m-%d" | PHP_INI_ALL |
ibase.timeformat | "%H:%M:%S" | PHP_INI_ALL |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

ibase.allow_persistent boolean

Whether to allow persistent connections to Firebird/InterBase.

ibase.max_persistent integer

The maximum number of persistent Firebird/InterBase connections per process. New connections created with ibase_pconnect() will be non-persistent if this number would be exceeded.

ibase.max_links integer

The maximum number of Firebird/InterBase connections per process, including persistent connections.

ibase.default_db string

The default database to connect to when ibase_[p]connect() is called without specifying a database name. If this value is set and SQL safe mode is enabled, no other connections than to this database will be allowed.

ibase.default_user string

The user name to use when connecting to a database if no user name is specified.

ibase.default_password string

The password to use when connecting to a database if no password is specified.

ibase.default_charset string

The character set to use when connecting to a database if no character set is specified.

ibase.timestampformat string

ibase.dateformat string

ibase.timeformat string

These directives are used to set the date and time formats that are used when returning dates and times from a result set, or when binding arguments to date and time parameters.

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

The following constants can be passed to ibase_trans() to specify transaction behaviour.

Firebird/InterBase transaction flags
Constant | Description
IBASE_DEFAULT | The default transaction settings are to be used. This default is determined by the client library, which defines it as IBASE_WRITE|IBASE_CONCURRENCY|IBASE_WAIT in most cases.
IBASE_READ | Starts a read-only transaction.
IBASE_WRITE | Starts a read-write transaction.
IBASE_CONSISTENCY | Starts a transaction with the isolation level set to 'consistency', which means the transaction cannot read from tables that are being modified by other concurrent transactions.
IBASE_CONCURRENCY | Starts a transaction with the isolation level set to 'concurrency' (or 'snapshot'), which means the transaction has access to all tables, but cannot see changes that were committed by other transactions after the transaction was started.
IBASE_COMMITTED | Starts a transaction with the isolation level set to 'read committed'. This flag should be combined with either IBASE_REC_VERSION or IBASE_REC_NO_VERSION. This isolation level allows access to changes that were committed after the transaction was started. If IBASE_REC_NO_VERSION was specified, only the latest version of a row can be read. If IBASE_REC_VERSION was specified, a row can even be read when a modification to it is pending in a concurrent transaction.
IBASE_WAIT | Indicated that a transaction should wait and retry when a conflict occurs.
IBASE_NOWAIT | Indicated that a transaction should fail immediately when a conflict occurs.

The following constants can be passed to ibase_fetch_row(), ibase_fetch_assoc() or ibase_fetch_object() to specify fetch behaviour.

Firebird/InterBase fetch flags
Constant | Description
IBASE_FETCH_BLOBS | Also available as IBASE_TEXTfor backward compatibility. Causes BLOB contents to be fetched inline, instead of being fetched as BLOB identifiers.
IBASE_FETCH_ARRAYS | Causes arrays to be fetched inline. Otherwise, array identifiers are returned. Array identifiers can only be used as arguments to INSERT operations, as no functions to handle array identifiers are currently available.
IBASE_UNIXTIME | Causes date and time fields not to be returned as strings, but as UNIX timestamps (the number of seconds since the epoch, which is 1-Jan-1970 0:00 UTC). Might be problematic if used with dates before 1970 on some systems.

The following constants are used to pass requests and options to the service
API functions (ibase_server_info(), ibase_db_info(),
ibase_backup(), ibase_restore()
and ibase_maintain_db()). Please refer to
the Firebird/InterBase manuals for the meaning of these options.

IBASE_BKP_IGNORE_CHECKSUMS
IBASE_BKP_IGNORE_LIMBO
IBASE_BKP_METADATA_ONLY
IBASE_BKP_NO_GARBAGE_COLLECT
IBASE_BKP_OLD_DESCRIPTIONS
IBASE_BKP_NON_TRANSPORTABLE
IBASE_BKP_CONVERT
Options to ibase_backup()
IBASE_RES_DEACTIVATE_IDX
IBASE_RES_NO_SHADOW
IBASE_RES_NO_VALIDITY
IBASE_RES_ONE_AT_A_TIME
IBASE_RES_REPLACE
IBASE_RES_CREATE
IBASE_RES_USE_ALL_SPACE
Options to ibase_restore()
IBASE_PRP_PAGE_BUFFERS
IBASE_PRP_SWEEP_INTERVAL
IBASE_PRP_SHUTDOWN_DB
IBASE_PRP_DENY_NEW_TRANSACTIONS
IBASE_PRP_DENY_NEW_ATTACHMENTS
IBASE_PRP_RESERVE_SPACE
IBASE_PRP_RES_USE_FULL
IBASE_PRP_RES
IBASE_PRP_WRITE_MODE
IBASE_PRP_WM_ASYNC
IBASE_PRP_WM_SYNC
IBASE_PRP_ACCESS_MODE
IBASE_PRP_AM_READONLY
IBASE_PRP_AM_READWRITE
IBASE_PRP_SET_SQL_DIALECT
IBASE_PRP_ACTIVATE
IBASE_PRP_DB_ONLINE
IBASE_RPR_CHECK_DB
IBASE_RPR_IGNORE_CHECKSUM
IBASE_RPR_KILL_SHADOWS
IBASE_RPR_MEND_DB
IBASE_RPR_VALIDATE_DB
IBASE_RPR_FULL
IBASE_RPR_SWEEP_DB
Options to ibase_maintain_db()
IBASE_STS_DATA_PAGES
IBASE_STS_DB_LOG
IBASE_STS_HDR_PAGES
IBASE_STS_IDX_PAGES
IBASE_STS_SYS_RELATIONS
Options to ibase_db_info()
IBASE_SVC_SERVER_VERSION
IBASE_SVC_IMPLEMENTATION
IBASE_SVC_GET_ENV
IBASE_SVC_GET_ENV_LOCK
IBASE_SVC_GET_ENV_MSG
IBASE_SVC_USER_DBPATH
IBASE_SVC_SVR_DB_INFO
IBASE_SVC_GET_USERS
Options to ibase_server_info()

资源类型
Firebird/InterBase 函数
Firebird/InterBase


Firebird/InterBase 函数

Table of Contents

  • ibase_add_user — Add a user to a security database
  • ibase_affected_rows — Return the number of rows that were affected by the previous query
  • ibase_backup — Initiates a backup task in the service manager and returns immediately
  • ibase_blob_add — Add data into a newly created blob
  • ibase_blob_cancel — Cancel creating blob
  • ibase_blob_close — Close blob
  • ibase_blob_create — Create a new blob for adding data
  • ibase_blob_echo — Output blob contents to browser
  • ibase_blob_get — Get len bytes data from open blob
  • ibase_blob_import — Create blob, copy file in it, and close it
  • ibase_blob_info — Return blob length and other useful info
  • ibase_blob_open — Open blob for retrieving data parts
  • ibase_close — Close a connection to an InterBase database
  • ibase_commit_ret — Commit a transaction without closing it
  • ibase_commit — Commit a transaction
  • ibase_connect — Open a connection to a database
  • ibase_db_info — Request statistics about a database
  • ibase_delete_user — Delete a user from a security database
  • ibase_drop_db — Drops a database
  • ibase_errcode — Return an error code
  • ibase_errmsg — Return error messages
  • ibase_execute — Execute a previously prepared query
  • ibase_fetch_assoc — Fetch a result row from a query as an associative array
  • ibase_fetch_object — Get an object from a InterBase database
  • ibase_fetch_row — Fetch a row from an InterBase database
  • ibase_field_info — Get information about a field
  • ibase_free_event_handler — Cancels a registered event handler
  • ibase_free_query — Free memory allocated by a prepared query
  • ibase_free_result — Free a result set
  • ibase_gen_id — Increments the named generator and returns its new value
  • ibase_maintain_db — Execute a maintenance command on the database server
  • ibase_modify_user — Modify a user to a security database
  • ibase_name_result — Assigns a name to a result set
  • ibase_num_fields — Get the number of fields in a result set
  • ibase_num_params — Return the number of parameters in a prepared query
  • ibase_param_info — Return information about a parameter in a prepared query
  • ibase_pconnect — Open a persistent connection to an InterBase database
  • ibase_prepare — Prepare a query for later binding of parameter placeholders and execution
  • ibase_query — Execute a query on an InterBase database
  • ibase_restore — Initiates a restore task in the service manager and returns immediately
  • ibase_rollback_ret — Roll back a transaction without closing it
  • ibase_rollback — Roll back a transaction
  • ibase_server_info — Request information about a database server
  • ibase_service_attach — Connect to the service manager
  • ibase_service_detach — Disconnect from the service manager
  • ibase_set_event_handler — Register a callback function to be called when events are posted
  • ibase_trans — Begin a transaction
  • ibase_wait_event — Wait for an event to be posted by the database
预定义常量
ibase_add_user
Firebird/InterBase


Add a user to a security database

Firebird/InterBase 函数
ibase_affected_rows
Firebird/InterBase 函数
PHP Manual

ibase_add_user

(PHP 5, PHP 7)

ibase_add_user — Add a user to a security database

说明

bool ibase_add_user ( resource $service_handle , string $user_name , string $password [, string $first_name [, string $middle_name [, string $last_name ]]] )
Warning

本函数还未编写文档，仅有参数列表。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ibase_modify_user() - Modify a user to a security database
  • ibase_delete_user() - Delete a user from a security database

Firebird/InterBase 函数
ibase_affected_rows
Firebird/InterBase 函数


Return the number of rows that were affected by the previous query

ibase_add_user
ibase_backup
Firebird/InterBase 函数
PHP Manual

ibase_affected_rows

(PHP 5, PHP 7)

ibase_affected_rows — Return the number of rows that were affected by the previous query

说明

int ibase_affected_rows ([ resource $link_identifier ] )

This function returns the number of rows that were affected by the previous query (INSERT, UPDATE or DELETE) that was executed from within the specified transaction context.

参数

link_identifier

A transaction context. If link_identifier is a connection resource, its default transaction is used.

返回值

Returns the number of rows as an integer.

参见

  • ibase_query() - Execute a query on an InterBase database
  • ibase_execute() - Execute a previously prepared query

ibase_add_user
ibase_backup
Firebird/InterBase 函数


Initiates a backup task in the service manager and returns immediately

ibase_affected_rows
ibase_blob_add
Firebird/InterBase 函数
PHP Manual

ibase_backup

(PHP 5, PHP 7)

ibase_backup — Initiates a backup task in the service manager and returns immediately

说明

mixed ibase_backup ( resource $service_handle , string $source_db , string $dest_file [, int $options = 0 [, bool $verbose = false ]] )
Warning

本函数还未编写文档，仅有参数列表。

ibase_affected_rows
ibase_blob_add
Firebird/InterBase 函数


Add data into a newly created blob

ibase_backup
ibase_blob_cancel
Firebird/InterBase 函数
PHP Manual

ibase_blob_add

(PHP 5, PHP 7)

ibase_blob_add — Add data into a newly created blob

说明

void ibase_blob_add ( resource $blob_handle , string $data )

ibase_blob_add() adds data into a blob created with ibase_blob_create().

参数

blob_handle

A blob handle opened with ibase_blob_create().

data

The data to be added.

返回值

没有返回值。

参见

  • ibase_blob_cancel() - Cancel creating blob
  • ibase_blob_close() - Close blob
  • ibase_blob_create() - Create a new blob for adding data
  • ibase_blob_import() - Create blob, copy file in it, and close it

ibase_backup
ibase_blob_cancel
Firebird/InterBase 函数


Cancel creating blob

ibase_blob_add
ibase_blob_close
Firebird/InterBase 函数
PHP Manual

ibase_blob_cancel

(PHP 5, PHP 7)

ibase_blob_cancel — Cancel creating blob

说明

bool ibase_blob_cancel ( resource $blob_handle )

This function will discard a BLOB if it has not yet been closed by ibase_blob_close().

参数

blob_handle

A BLOB handle opened with ibase_blob_create().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ibase_blob_close() - Close blob
  • ibase_blob_create() - Create a new blob for adding data
  • ibase_blob_import() - Create blob, copy file in it, and close it

ibase_blob_add
ibase_blob_close
Firebird/InterBase 函数


Close blob

ibase_blob_cancel
ibase_blob_create
Firebird/InterBase 函数
PHP Manual

ibase_blob_close

(PHP 5, PHP 7)

ibase_blob_close — Close blob

说明

mixed ibase_blob_close ( resource $blob_handle )

This function closes a BLOB that has either been opened for reading by ibase_blob_open() or has been opened for writing by ibase_blob_create().

参数

blob_handle

A BLOB handle opened with ibase_blob_create() or ibase_blob_open().

返回值

If the BLOB was being read, this function returns TRUE on success, if the BLOB was being written to, this function returns a string containing the BLOB id that has been assigned to it by the database. On failure, this function returns FALSE.

参见

  • ibase_blob_cancel() - Cancel creating blob
  • ibase_blob_open() - Open blob for retrieving data parts

ibase_blob_cancel
ibase_blob_create
Firebird/InterBase 函数


Create a new blob for adding data

ibase_blob_close
ibase_blob_echo
Firebird/InterBase 函数
PHP Manual

ibase_blob_create

(PHP 5, PHP 7)

ibase_blob_create — Create a new blob for adding data

说明

resource ibase_blob_create ([ resource $link_identifier = NULL ] )

ibase_blob_create() creates a new BLOB for filling with data.

参数

link_identifier

An InterBase link identifier. If omitted, the last opened link is assumed.

返回值

Returns a BLOB handle for later use with ibase_blob_add() 或者在失败时返回 FALSE.

参见

  • ibase_blob_add() - Add data into a newly created blob
  • ibase_blob_cancel() - Cancel creating blob
  • ibase_blob_close() - Close blob
  • ibase_blob_import() - Create blob, copy file in it, and close it

ibase_blob_close
ibase_blob_echo
Firebird/InterBase 函数


Output blob contents to browser

ibase_blob_create
ibase_blob_get
Firebird/InterBase 函数
PHP Manual

ibase_blob_echo

(PHP 5, PHP 7)

ibase_blob_echo — Output blob contents to browser

说明

bool ibase_blob_echo ( string $blob_id )
bool ibase_blob_echo ( resource $link_identifier , string $blob_id )

This function opens a BLOB for reading and sends its contents directly to standard output (the browser, in most cases).

参数

link_identifier

An InterBase link identifier. If omitted, the last opened link is assumed.

blob_id

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ibase_blob_open() - Open blob for retrieving data parts
  • ibase_blob_close() - Close blob
  • ibase_blob_get() - Get len bytes data from open blob

ibase_blob_create
ibase_blob_get
Firebird/InterBase 函数


Get len bytes data from open blob

ibase_blob_echo
ibase_blob_import
Firebird/InterBase 函数
PHP Manual

ibase_blob_get

(PHP 5, PHP 7)

ibase_blob_get — Get len bytes data from open blob

说明

string ibase_blob_get ( resource $blob_handle , int $len )

This function returns at most len bytes from a BLOB that has been opened for reading by ibase_blob_open().

Note:

It is not possible to read from a BLOB that has been opened for writing by ibase_blob_create().

参数

blob_handle

A BLOB handle opened with ibase_blob_open().

len

Size of returned data.

返回值

Returns at most len bytes from the BLOB, or FALSE on failure.

范例

Example #1 ibase_blob_get() example

<?php
$result    = ibase_query("SELECT blob_value FROM table");
$data      = ibase_fetch_object($result);
$blob_data = ibase_blob_info($data->BLOB_VALUE);
$blob_hndl = ibase_blob_open($data->BLOB_VALUE);
echo         ibase_blob_get($blob_hndl, $blob_data[0]);
?>
Whilst this example doesn't do much more than a 'ibase_blob_echo($data->BLOB_VALUE)' would do, it does show you how to get information into a $variable to manipulate as you please.

参见

  • ibase_blob_open() - Open blob for retrieving data parts
  • ibase_blob_close() - Close blob
  • ibase_blob_echo() - Output blob contents to browser

ibase_blob_echo
ibase_blob_import
Firebird/InterBase 函数


Create blob, copy file in it, and close it

ibase_blob_get
ibase_blob_info
Firebird/InterBase 函数
PHP Manual

ibase_blob_import

(PHP 5, PHP 7)

ibase_blob_import — Create blob, copy file in it, and close it

说明

string ibase_blob_import ( resource $link_identifier , resource $file_handle )
string ibase_blob_import ( resource $file_handle )

This function creates a BLOB, reads an entire file into it, closes it and returns the assigned BLOB id.

参数

link_identifier

An InterBase link identifier. If omitted, the last opened link is assumed.

file_handle

The file handle is a handle returned by fopen().

返回值

Returns the BLOB id on success, or FALSE on error.

范例

Example #1 ibase_blob_import() example

<?php
$dbh = ibase_connect($host, $username, $password);
$filename = '/tmp/bar';

$fd = fopen($filename, 'r');
if ($fd) {

    $blob = ibase_blob_import($dbh, $fd);
    fclose($fd);

    if (!is_string($blob)) {
        // import failed
    } else {
        $query = "INSERT INTO foo (name, data) VALUES ('$filename', ?)";
        $prepared = ibase_prepare($dbh, $query);
        if (!ibase_execute($prepared, $blob)) {
            // record insertion failed
        }
    }
} else {
    // unable to open the data file
}
?>

参见

  • ibase_blob_add() - Add data into a newly created blob
  • ibase_blob_cancel() - Cancel creating blob
  • ibase_blob_close() - Close blob
  • ibase_blob_create() - Create a new blob for adding data

ibase_blob_get
ibase_blob_info
Firebird/InterBase 函数


Return blob length and other useful info

ibase_blob_import
ibase_blob_open
Firebird/InterBase 函数
PHP Manual

ibase_blob_info

(PHP 5, PHP 7)

ibase_blob_info — Return blob length and other useful info

说明

array ibase_blob_info ( resource $link_identifier , string $blob_id )
array ibase_blob_info ( string $blob_id )

Returns the BLOB length and other useful information.

参数

link_identifier

An InterBase link identifier. If omitted, the last opened link is assumed.

blob_id

A BLOB id.

返回值

Returns an array containing information about a BLOB. The information returned consists of the length of the BLOB, the number of segments it contains, the size of the largest segment, and whether it is a stream BLOB or a segmented BLOB.

ibase_blob_import
ibase_blob_open
Firebird/InterBase 函数


Open blob for retrieving data parts

ibase_blob_info
ibase_close
Firebird/InterBase 函数
PHP Manual

ibase_blob_open

(PHP 5, PHP 7)

ibase_blob_open — Open blob for retrieving data parts

说明

resource ibase_blob_open ( resource $link_identifier , string $blob_id )
resource ibase_blob_open ( string $blob_id )

Opens an existing BLOB for reading.

参数

link_identifier

An InterBase link identifier. If omitted, the last opened link is assumed.

blob_id

A BLOB id.

返回值

Returns a BLOB handle for later use with ibase_blob_get() 或者在失败时返回 FALSE.

参见

  • ibase_blob_close() - Close blob
  • ibase_blob_echo() - Output blob contents to browser
  • ibase_blob_get() - Get len bytes data from open blob

ibase_blob_info
ibase_close
Firebird/InterBase 函数


Close a connection to an InterBase database

ibase_blob_open
ibase_commit_ret
Firebird/InterBase 函数
PHP Manual

ibase_close

(PHP 5, PHP 7)

ibase_close — Close a connection to an InterBase database

说明

bool ibase_close ([ resource $connection_id = NULL ] )

Closes the link to an InterBase database that's associated with a connection id returned from ibase_connect(). Default transaction on link is committed, other transactions are rolled back.

参数

connection_id

An InterBase link identifier returned from ibase_connect(). If omitted, the last opened link is assumed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ibase_connect() - Open a connection to a database
  • ibase_pconnect() - Open a persistent connection to an InterBase database

ibase_blob_open
ibase_commit_ret
Firebird/InterBase 函数


Commit a transaction without closing it

ibase_close
ibase_commit
Firebird/InterBase 函数
PHP Manual

ibase_commit_ret

(PHP 5, PHP 7)

ibase_commit_ret — Commit a transaction without closing it

说明

bool ibase_commit_ret ([ resource $link_or_trans_identifier = NULL ] )

Commits a transaction without closing it.

参数

link_or_trans_identifier

If called without an argument, this function commits the default transaction of the default link. If the argument is a connection identifier, the default transaction of the corresponding connection will be committed. If the argument is a transaction identifier, the corresponding transaction will be committed. The transaction context will be retained, so statements executed from within this transaction will not be invalidated.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ibase_close
ibase_commit
Firebird/InterBase 函数


Commit a transaction

ibase_commit_ret
ibase_connect
Firebird/InterBase 函数
PHP Manual

ibase_commit

(PHP 5, PHP 7)

ibase_commit — Commit a transaction

说明

bool ibase_commit ([ resource $link_or_trans_identifier = NULL ] )

Commits a transaction.

参数

link_or_trans_identifier

If called without an argument, this function commits the default transaction of the default link. If the argument is a connection identifier, the default transaction of the corresponding connection will be committed. If the argument is a transaction identifier, the corresponding transaction will be committed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ibase_commit_ret
ibase_connect
Firebird/InterBase 函数


Open a connection to a database

ibase_commit
ibase_db_info
Firebird/InterBase 函数
PHP Manual

ibase_connect

(PHP 5, PHP 7)

ibase_connect — Open a connection to a database

说明

resource ibase_connect ([ string $database [, string $username [, string $password [, string $charset [, int $buffers [, int $dialect [, string $role [, int $sync ]]]]]]]] )

Establishes a connection to an Firebird/InterBase server.

In case a second call is made to ibase_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned. The link to the server will be closed as soon as the execution of the script ends, unless it's closed earlier by explicitly calling ibase_close().

参数

database

The database argument has to be a valid path to database file on the server it resides on. If the server is not local, it must be prefixed with either 'hostname:' (TCP/IP), 'hostname/port:' (TCP/IP with interbase server on custom TCP port), '//hostname/' (NetBEUI), depending on the connection protocol used.

username

The user name. Can be set with the ibase.default_user php.ini directive.

password

The password for username. Can be set with the ibase.default_password php.ini directive.

charset

charset is the default character set for a database.

buffers

buffers is the number of database buffers to allocate for the server-side cache. If 0 or omitted, server chooses its own default.

dialect

dialect selects the default SQL dialect for any statement executed within a connection, and it defaults to the highest one supported by client libraries.

role

Functional only with InterBase 5 and up.

sync

返回值

Returns an Firebird/InterBase link identifier on success, or FALSE on error.

错误／异常

If you get some error like "arithmetic exception, numeric overflow, or string truncation. Cannot transliterate character between character sets" (this occurs when you try use some character with accents) when using this and after ibase_query() you must set the character set (i.e. ISO8859_1 or your current character set).

范例

Example #1 ibase_connect() example

<?php
$host = 'localhost:/path/to/your.gdb';

$dbh = ibase_connect($host, $username, $password);
$stmt = 'SELECT * FROM tblname';
$sth = ibase_query($dbh, $stmt);
while ($row = ibase_fetch_object($sth)) {
    echo $row->email, "\n";
}
ibase_free_result($sth);
ibase_close($dbh);
?>

参见

  • ibase_pconnect() - Open a persistent connection to an InterBase database
  • ibase_close() - Close a connection to an InterBase database

ibase_commit
ibase_db_info
Firebird/InterBase 函数


Request statistics about a database

ibase_connect
ibase_delete_user
Firebird/InterBase 函数
PHP Manual

ibase_db_info

(PHP 5, PHP 7)

ibase_db_info — Request statistics about a database

说明

string ibase_db_info ( resource $service_handle , string $db , int $action [, int $argument = 0 ] )
Warning

本函数还未编写文档，仅有参数列表。

ibase_connect
ibase_delete_user
Firebird/InterBase 函数


Delete a user from a security database

ibase_db_info
ibase_drop_db
Firebird/InterBase 函数
PHP Manual

ibase_delete_user

(PHP 5, PHP 7)

ibase_delete_user — Delete a user from a security database

说明

bool ibase_delete_user ( resource $service_handle , string $user_name )
Warning

本函数还未编写文档，仅有参数列表。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ibase_add_user() - Add a user to a security database
  • ibase_modify_user() - Modify a user to a security database

ibase_db_info
ibase_drop_db
Firebird/InterBase 函数


Drops a database

ibase_delete_user
ibase_errcode
Firebird/InterBase 函数
PHP Manual

ibase_drop_db

(PHP 5, PHP 7)

ibase_drop_db — Drops a database

说明

bool ibase_drop_db ([ resource $connection = NULL ] )

This functions drops a database that was opened by either ibase_connect() or ibase_pconnect(). The database is closed and deleted from the server.

参数

connection

An InterBase link identifier. If omitted, the last opened link is assumed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ibase_connect() - Open a connection to a database
  • ibase_pconnect() - Open a persistent connection to an InterBase database

ibase_delete_user
ibase_errcode
Firebird/InterBase 函数


Return an error code

ibase_drop_db
ibase_errmsg
Firebird/InterBase 函数
PHP Manual

ibase_errcode

(PHP 5, PHP 7)

ibase_errcode — Return an error code

说明

int ibase_errcode ( void )

Returns the error code that resulted from the most recent InterBase function call.

返回值

Returns the error code as an integer, or FALSE if no error occurred.

参见

  • ibase_errmsg() - Return error messages

ibase_drop_db
ibase_errmsg
Firebird/InterBase 函数


Return error messages

ibase_errcode
ibase_execute
Firebird/InterBase 函数
PHP Manual

ibase_errmsg

(PHP 5, PHP 7)

ibase_errmsg — Return error messages

说明

string ibase_errmsg ( void )

Returns the error message that resulted from the most recent InterBase function call.

返回值

Returns the error message as a string, or FALSE if no error occurred.

参见

  • ibase_errcode() - Return an error code

ibase_errcode
ibase_execute
Firebird/InterBase 函数


Execute a previously prepared query

ibase_errmsg
ibase_fetch_assoc
Firebird/InterBase 函数
PHP Manual

ibase_execute

(PHP 5, PHP 7)

ibase_execute — Execute a previously prepared query

说明

resource ibase_execute ( resource $query [, mixed $bind_arg [, mixed $... ]] )

Execute a query prepared by ibase_prepare().

This is a lot more effective than using ibase_query() if you are repeating a same kind of query several times with only some parameters changing.

参数

query

An InterBase query prepared by ibase_prepare().

bind_arg

...

返回值

If the query raises an error, returns FALSE. If it is successful and there is a (possibly empty) result set (such as with a SELECT query), returns a result identifier. If the query was successful and there were no results, returns TRUE.

Note:

This function returns the number of rows affected by the query (if > 0 and applicable to the statement type). A query that succeeded, but did not affect any rows (e.g. an UPDATE of a non-existent record) will return TRUE.

范例

Example #1 ibase_execute() example

<?php

$dbh = ibase_connect($host, $username, $password);

$updates = array(
    1 => 'Eric',
    5 => 'Filip',
    7 => 'Larry'
);

$query = ibase_prepare($dbh, "UPDATE FOO SET BAR = ? WHERE BAZ = ?");

foreach ($updates as $baz => $bar) {
    ibase_execute($query, $bar, $baz);
}

?>

参见

  • ibase_query() - Execute a query on an InterBase database

ibase_errmsg
ibase_fetch_assoc
Firebird/InterBase 函数


Fetch a result row from a query as an associative array

ibase_execute
ibase_fetch_object
Firebird/InterBase 函数
PHP Manual

ibase_fetch_assoc

(PHP 5, PHP 7)

ibase_fetch_assoc — Fetch a result row from a query as an associative array

说明

array ibase_fetch_assoc ( resource $result [, int $fetch_flag = 0 ] )

Fetch a result row from a query as an associative array.

ibase_fetch_assoc() fetches one row of data from the result. If two or more columns of the result have the same field names, the last column will take precedence. To access the other column(s) of the same name, you either need to access the result with numeric indices by using ibase_fetch_row() or use alias names in your query.

参数

result

The result handle.

fetch_flag

fetch_flag is a combination of the constants IBASE_TEXT and IBASE_UNIXTIME ORed together. Passing IBASE_TEXT will cause this function to return BLOB contents instead of BLOB ids. Passing IBASE_UNIXTIME will cause this function to return date/time values as Unix timestamps instead of as formatted strings.

返回值

Returns an associative array that corresponds to the fetched row. Subsequent calls will return the next row in the result set, or FALSE if there are no more rows.

参见

  • ibase_fetch_row() - Fetch a row from an InterBase database
  • ibase_fetch_object() - Get an object from a InterBase database

ibase_execute
ibase_fetch_object
Firebird/InterBase 函数


Get an object from a InterBase database

ibase_fetch_assoc
ibase_fetch_row
Firebird/InterBase 函数
PHP Manual

ibase_fetch_object

(PHP 5, PHP 7)

ibase_fetch_object — Get an object from a InterBase database

说明

object ibase_fetch_object ( resource $result_id [, int $fetch_flag = 0 ] )

Fetches a row as a pseudo-object from a given result identifier.

Subsequent calls to ibase_fetch_object() return the next row in the result set.

参数

result_id

An InterBase result identifier obtained either by ibase_query() or ibase_execute().

fetch_flag

fetch_flag is a combination of the constants IBASE_TEXT and IBASE_UNIXTIME ORed together. Passing IBASE_TEXT will cause this function to return BLOB contents instead of BLOB ids. Passing IBASE_UNIXTIME will cause this function to return date/time values as Unix timestamps instead of as formatted strings.

返回值

Returns an object with the next row information, or FALSE if there are no more rows.

范例

Example #1 ibase_fetch_object() example

<?php
$dbh = ibase_connect($host, $username, $password);
$stmt = 'SELECT * FROM tblname';
$sth = ibase_query($dbh, $stmt);
while ($row = ibase_fetch_object($sth)) {
    echo $row->email . "\n";
}
ibase_close($dbh);
?>

参见

  • ibase_fetch_row() - Fetch a row from an InterBase database
  • ibase_fetch_assoc() - Fetch a result row from a query as an associative array

ibase_fetch_assoc
ibase_fetch_row
Firebird/InterBase 函数


Fetch a row from an InterBase database

ibase_fetch_object
ibase_field_info
Firebird/InterBase 函数
PHP Manual

ibase_fetch_row

(PHP 5, PHP 7)

ibase_fetch_row — Fetch a row from an InterBase database

说明

array ibase_fetch_row ( resource $result_identifier [, int $fetch_flag = 0 ] )

ibase_fetch_row() fetches one row of data from the given result set.

Subsequent calls to ibase_fetch_row() return the next row in the result set, or FALSE if there are no more rows.

参数

result_identifier

An InterBase result identifier.

fetch_flag

fetch_flag is a combination of the constants IBASE_TEXT and IBASE_UNIXTIME ORed together. Passing IBASE_TEXT will cause this function to return BLOB contents instead of BLOB ids. Passing IBASE_UNIXTIME will cause this function to return date/time values as Unix timestamps instead of as formatted strings.

返回值

Returns an array that corresponds to the fetched row, or FALSE if there are no more rows. Each result column is stored in an array offset, starting at offset 0.

参见

  • ibase_fetch_assoc() - Fetch a result row from a query as an associative array
  • ibase_fetch_object() - Get an object from a InterBase database

ibase_fetch_object
ibase_field_info
Firebird/InterBase 函数


Get information about a field

ibase_fetch_row
ibase_free_event_handler
Firebird/InterBase 函数
PHP Manual

ibase_field_info

(PHP 5, PHP 7)

ibase_field_info — Get information about a field

说明

array ibase_field_info ( resource $result , int $field_number )

Returns an array with information about a field after a select query has been run.

参数

result

An InterBase result identifier.

field_number

Field offset.

返回值

Returns an array with the following keys: name, alias, relation, length and type.

范例

Example #1 ibase_field_info() example

<?php
$rs = ibase_query("SELECT * FROM tablename");
$coln = ibase_num_fields($rs);
for ($i = 0; $i < $coln; $i++) {
    $col_info = ibase_field_info($rs, $i);
    echo "name: ". $col_info['name']. "\n";
    echo "alias: ". $col_info['alias']. "\n";
    echo "relation: ". $col_info['relation']. "\n";
    echo "length: ". $col_info['length']. "\n";
    echo "type: ". $col_info['type']. "\n";
}
?>

参见

  • ibase_num_fields() - Get the number of fields in a result set

ibase_fetch_row
ibase_free_event_handler
Firebird/InterBase 函数


Cancels a registered event handler

ibase_field_info
ibase_free_query
Firebird/InterBase 函数
PHP Manual

ibase_free_event_handler

(PHP 5, PHP 7)

ibase_free_event_handler — Cancels a registered event handler

说明

bool ibase_free_event_handler ( resource $event )

This function causes the registered event handler specified by event to be cancelled. The callback function will no longer be called for the events it was registered to handle.

参数

event

An event resource, created by ibase_set_event_handler().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ibase_set_event_handler() - Register a callback function to be called when events are posted

ibase_field_info
ibase_free_query
Firebird/InterBase 函数


Free memory allocated by a prepared query

ibase_free_event_handler
ibase_free_result
Firebird/InterBase 函数
PHP Manual

ibase_free_query

(PHP 5, PHP 7)

ibase_free_query — Free memory allocated by a prepared query

说明

bool ibase_free_query ( resource $query )

Frees a prepared query.

参数

query

A query prepared with ibase_prepare().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ibase_free_event_handler
ibase_free_result
Firebird/InterBase 函数


Free a result set

ibase_free_query
ibase_gen_id
Firebird/InterBase 函数
PHP Manual

ibase_free_result

(PHP 5, PHP 7)

ibase_free_result — Free a result set

说明

bool ibase_free_result ( resource $result_identifier )

Frees a result set.

参数

result_identifier

A result set created by ibase_query() or ibase_execute().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ibase_free_query
ibase_gen_id
Firebird/InterBase 函数


Increments the named generator and returns its new value

ibase_free_result
ibase_maintain_db
Firebird/InterBase 函数
PHP Manual

ibase_gen_id

(PHP 5, PHP 7)

ibase_gen_id — Increments the named generator and returns its new value

说明

mixed ibase_gen_id ( string $generator [, int $increment = 1 [, resource $link_identifier = NULL ]] )
Warning

本函数还未编写文档，仅有参数列表。

返回值

Returns new generator value as integer, or as string if the value is too big.

ibase_free_result
ibase_maintain_db
Firebird/InterBase 函数


Execute a maintenance command on the database server

ibase_gen_id
ibase_modify_user
Firebird/InterBase 函数
PHP Manual

ibase_maintain_db

(PHP 5, PHP 7)

ibase_maintain_db — Execute a maintenance command on the database server

说明

bool ibase_maintain_db ( resource $service_handle , string $db , int $action [, int $argument = 0 ] )
Warning

本函数还未编写文档，仅有参数列表。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ibase_gen_id
ibase_modify_user
Firebird/InterBase 函数


Modify a user to a security database

ibase_maintain_db
ibase_name_result
Firebird/InterBase 函数
PHP Manual

ibase_modify_user

(PHP 5, PHP 7)

ibase_modify_user — Modify a user to a security database

说明

bool ibase_modify_user ( resource $service_handle , string $user_name , string $password [, string $first_name [, string $middle_name [, string $last_name ]]] )
Warning

本函数还未编写文档，仅有参数列表。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ibase_add_user() - Add a user to a security database
  • ibase_delete_user() - Delete a user from a security database

ibase_maintain_db
ibase_name_result
Firebird/InterBase 函数


Assigns a name to a result set

ibase_modify_user
ibase_num_fields
Firebird/InterBase 函数
PHP Manual

ibase_name_result

(PHP 5, PHP 7)

ibase_name_result — Assigns a name to a result set

说明

bool ibase_name_result ( resource $result , string $name )

This function assigns a name to a result set. This name can be used later in UPDATE|DELETE ... WHERE CURRENT OF name statements.

参数

result

An InterBase result set.

name

The name to be assigned.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ibase_name_result() example

<?php
$result = ibase_query("SELECT field1,field2 FROM table FOR UPDATE");
ibase_name_result($result, "my_cursor");

$updateqry = ibase_prepare("UPDATE table SET field2 = ? WHERE CURRENT OF my_cursor");

for ($i = 0; ibase_fetch_row($result); ++$i) {
    ibase_execute($updateqry, $i);
}
?>

参见

  • ibase_prepare() - Prepare a query for later binding of parameter placeholders and execution
  • ibase_execute() - Execute a previously prepared query

ibase_modify_user
ibase_num_fields
Firebird/InterBase 函数


Get the number of fields in a result set

ibase_name_result
ibase_num_params
Firebird/InterBase 函数
PHP Manual

ibase_num_fields

(PHP 5, PHP 7)

ibase_num_fields — Get the number of fields in a result set

说明

int ibase_num_fields ( resource $result_id )

Get the number of fields in a result set.

参数

result_id

An InterBase result identifier.

返回值

Returns the number of fields as an integer.

范例

Example #1 ibase_num_fields() example

<?php
$rs = ibase_query("SELECT * FROM tablename");
$coln = ibase_num_fields($rs);
for ($i = 0; $i < $coln; $i++) {
    $col_info = ibase_field_info($rs, $i);
    echo "name: " . $col_info['name'] . "\n";
    echo "alias: " . $col_info['alias'] . "\n";
    echo "relation: " . $col_info['relation'] . "\n";
    echo "length: " . $col_info['length'] . "\n";
    echo "type: " . $col_info['type'] . "\n";
}
?>

参见

  • ibase_field_info() - Get information about a field

ibase_name_result
ibase_num_params
Firebird/InterBase 函数


Return the number of parameters in a prepared query

ibase_num_fields
ibase_param_info
Firebird/InterBase 函数
PHP Manual

ibase_num_params

(PHP 5, PHP 7)

ibase_num_params — Return the number of parameters in a prepared query

说明

int ibase_num_params ( resource $query )

This function returns the number of parameters in the prepared query specified by query. This is the number of binding arguments that must be present when calling ibase_execute().

参数

query

The prepared query handle.

返回值

Returns the number of parameters as an integer.

参见

  • ibase_prepare() - Prepare a query for later binding of parameter placeholders and execution
  • ibase_param_info() - Return information about a parameter in a prepared query

ibase_num_fields
ibase_param_info
Firebird/InterBase 函数


Return information about a parameter in a prepared query

ibase_num_params
ibase_pconnect
Firebird/InterBase 函数
PHP Manual

ibase_param_info

(PHP 5, PHP 7)

ibase_param_info — Return information about a parameter in a prepared query

说明

array ibase_param_info ( resource $query , int $param_number )

Returns an array with information about a parameter after a query has been prepared.

参数

query

An InterBase prepared query handle.

param_number

Parameter offset.

返回值

Returns an array with the following keys: name, alias, relation, length and type.

参见

  • ibase_field_info() - Get information about a field
  • ibase_num_params() - Return the number of parameters in a prepared query

ibase_num_params
ibase_pconnect
Firebird/InterBase 函数


Open a persistent connection to an InterBase database

ibase_param_info
ibase_prepare
Firebird/InterBase 函数
PHP Manual

ibase_pconnect

(PHP 5, PHP 7)

ibase_pconnect — Open a persistent connection to an InterBase database

说明

resource ibase_pconnect ([ string $database [, string $username [, string $password [, string $charset [, int $buffers [, int $dialect [, string $role [, int $sync ]]]]]]]] )

Opens a persistent connection to an InterBase database.

ibase_pconnect() acts very much like ibase_connect() with two major differences.

First, when connecting, the function will first try to find a (persistent) link that's already opened with the same parameters. If one is found, an identifier for it will be returned instead of opening a new connection.

Second, the connection to the InterBase server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (ibase_close() will not close links established by ibase_pconnect()). This type of link is therefore called 'persistent'.

参数

database

The database argument has to be a valid path to database file on the server it resides on. If the server is not local, it must be prefixed with either 'hostname:' (TCP/IP), '//hostname/' (NetBEUI) or 'hostname@' (IPX/SPX), depending on the connection protocol used.

username

The user name. Can be set with the ibase.default_user php.ini directive.

password

The password for username. Can be set with the ibase.default_password php.ini directive.

charset

charset is the default character set for a database.

buffers

buffers is the number of database buffers to allocate for the server-side cache. If 0 or omitted, server chooses its own default.

dialect

dialect selects the default SQL dialect for any statement executed within a connection, and it defaults to the highest one supported by client libraries. Functional only with InterBase 6 and up.

role

Functional only with InterBase 5 and up.

sync

返回值

Returns an InterBase link identifier on success, or FALSE on error.

参见

  • ibase_close() - Close a connection to an InterBase database
  • ibase_connect() - Open a connection to a database

ibase_param_info
ibase_prepare
Firebird/InterBase 函数


Prepare a query for later binding of parameter placeholders and execution

ibase_pconnect
ibase_query
Firebird/InterBase 函数
PHP Manual

ibase_prepare

(PHP 5, PHP 7)

ibase_prepare — Prepare a query for later binding of parameter placeholders and execution

说明

resource ibase_prepare ( string $query )
resource ibase_prepare ( resource $link_identifier , string $query )
resource ibase_prepare ( resource $link_identifier , string $trans , string $query )

Prepare a query for later binding of parameter placeholders and execution (via ibase_execute()).

参数

query

An InterBase query.

link_identifier

An InterBase link identifier returned from ibase_connect(). If omitted, the last opened link is assumed.

trans

An InterBase transaction handle the query should be associated with. If omitted, the default transaction of the connection is assumed.

返回值

Returns a prepared query handle, or FALSE on error.

ibase_pconnect
ibase_query
Firebird/InterBase 函数


Execute a query on an InterBase database

ibase_prepare
ibase_restore
Firebird/InterBase 函数
PHP Manual

ibase_query

(PHP 5, PHP 7)

ibase_query — Execute a query on an InterBase database

说明

resource ibase_query ([ resource $link_identifier ], string $query [, int $bind_args ] )

Performs a query on an InterBase database.

参数

link_identifier

An InterBase link identifier. If omitted, the last opened link is assumed.

query

An InterBase query.

bind_args

返回值

If the query raises an error, returns FALSE. If it is successful and there is a (possibly empty) result set (such as with a SELECT query), returns a result identifier. If the query was successful and there were no results, returns TRUE.

Note:

In PHP 5.0.0 and up, this function will return the number of rows affected by the query for INSERT, UPDATE and DELETE statements. In order to retain backward compatibility, it will return TRUE for these statements if the query succeeded without affecting any rows.

错误／异常

If you get some error like "arithmetic exception, numeric overflow, or string truncation. Cannot transliterate character between character sets" (this occurs when you try use some character with accents) when using this and after ibase_query() you must set the character set (i.e. ISO8859_1 or your current character set).

更新日志

版本 | 说明
5.3.1 | On success the function now returns TRUE if there were no affected rows, where it previously returned 0 (a zero followed by an empty space).

范例

Example #1 ibase_query() example

<?php

$host = 'localhost:/path/to/your.gdb';

$dbh = ibase_connect($host, $username, $password);
$stmt = 'SELECT * FROM tblname';

$sth = ibase_query($dbh, $stmt) or die(ibase_errmsg());

?>

参见

  • ibase_errmsg() - Return error messages
  • ibase_fetch_row() - Fetch a row from an InterBase database
  • ibase_fetch_object() - Get an object from a InterBase database
  • ibase_free_result() - Free a result set

ibase_prepare
ibase_restore
Firebird/InterBase 函数


Initiates a restore task in the service manager and returns immediately

ibase_query
ibase_rollback_ret
Firebird/InterBase 函数
PHP Manual

ibase_restore

(PHP 5, PHP 7)

ibase_restore — Initiates a restore task in the service manager and returns immediately

说明

mixed ibase_restore ( resource $service_handle , string $source_file , string $dest_db [, int $options = 0 [, bool $verbose = false ]] )
Warning

本函数还未编写文档，仅有参数列表。

ibase_query
ibase_rollback_ret
Firebird/InterBase 函数


Roll back a transaction without closing it

ibase_restore
ibase_rollback
Firebird/InterBase 函数
PHP Manual

ibase_rollback_ret

(PHP 5, PHP 7)

ibase_rollback_ret — Roll back a transaction without closing it

说明

bool ibase_rollback_ret ([ resource $link_or_trans_identifier = NULL ] )

Rolls back a transaction without closing it.

参数

link_or_trans_identifier

If called without an argument, this function rolls back the default transaction of the default link. If the argument is a connection identifier, the default transaction of the corresponding connection will be rolled back. If the argument is a transaction identifier, the corresponding transaction will be rolled back. The transaction context will be retained, so statements executed from within this transaction will not be invalidated.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ibase_restore
ibase_rollback
Firebird/InterBase 函数


Roll back a transaction

ibase_rollback_ret
ibase_server_info
Firebird/InterBase 函数
PHP Manual

ibase_rollback

(PHP 5, PHP 7)

ibase_rollback — Roll back a transaction

说明

bool ibase_rollback ([ resource $link_or_trans_identifier = NULL ] )

Rolls back a transaction.

参数

link_or_trans_identifier

If called without an argument, this function rolls back the default transaction of the default link. If the argument is a connection identifier, the default transaction of the corresponding connection will be rolled back. If the argument is a transaction identifier, the corresponding transaction will be rolled back.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ibase_rollback_ret
ibase_server_info
Firebird/InterBase 函数


Request information about a database server

ibase_rollback
ibase_service_attach
Firebird/InterBase 函数
PHP Manual

ibase_server_info

(PHP 5, PHP 7)

ibase_server_info — Request information about a database server

说明

string ibase_server_info ( resource $service_handle , int $action )
Warning

本函数还未编写文档，仅有参数列表。

ibase_rollback
ibase_service_attach
Firebird/InterBase 函数


Connect to the service manager

ibase_server_info
ibase_service_detach
Firebird/InterBase 函数
PHP Manual

ibase_service_attach

(PHP 5, PHP 7)

ibase_service_attach — Connect to the service manager

说明

resource ibase_service_attach ( string $host , string $dba_username , string $dba_password )
Warning

本函数还未编写文档，仅有参数列表。

ibase_server_info
ibase_service_detach
Firebird/InterBase 函数


Disconnect from the service manager

ibase_service_attach
ibase_set_event_handler
Firebird/InterBase 函数
PHP Manual

ibase_service_detach

(PHP 5, PHP 7)

ibase_service_detach — Disconnect from the service manager

说明

bool ibase_service_detach ( resource $service_handle )
Warning

本函数还未编写文档，仅有参数列表。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ibase_service_attach
ibase_set_event_handler
Firebird/InterBase 函数


Register a callback function to be called when events are posted

ibase_service_detach
ibase_trans
Firebird/InterBase 函数
PHP Manual

ibase_set_event_handler

(PHP 5, PHP 7)

ibase_set_event_handler — Register a callback function to be called when events are posted

说明

resource ibase_set_event_handler ( callable $event_handler , string $event_name1 [, string $event_name2 [, string $... ]] )
resource ibase_set_event_handler ( resource $connection , callable $event_handler , string $event_name1 [, string $event_name2 [, string $... ]] )

This function registers a PHP user function as event handler for the specified events.

参数

event_handler

The callback is called with the event name and the link resource as arguments whenever one of the specified events is posted by the database.

The callback must return FALSE if the event handler should be canceled. Any other return value is ignored. This function accepts up to 15 event arguments.

event_name1

An event name.

event_name2

At most 15 events allowed.

返回值

The return value is an event resource. This resource can be used to free the event handler using ibase_free_event_handler().

范例

Example #1 ibase_set_event_handler() example

<?php

function event_handler($event_name, $link)
{
    if ($event_name == "NEW ORDER") {
        // process new order
        ibase_query($link, "UPDATE orders SET status='handled'");
    } else if ($event_name == "DB_SHUTDOWN") {
        // free event handler
        return false;
    }
}

ibase_set_event_handler($link, "event_handler", "NEW_ORDER", "DB_SHUTDOWN");
?>

参见

  • ibase_free_event_handler() - Cancels a registered event handler
  • ibase_wait_event() - Wait for an event to be posted by the database

ibase_service_detach
ibase_trans
Firebird/InterBase 函数


Begin a transaction

ibase_set_event_handler
ibase_wait_event
Firebird/InterBase 函数
PHP Manual

ibase_trans

(PHP 5, PHP 7)

ibase_trans — Begin a transaction

说明

resource ibase_trans ([ int $trans_args [, resource $link_identifier ]] )
resource ibase_trans ([ resource $link_identifier [, int $trans_args ]] )

Begins a transaction.

Note:

The first call to ibase_trans() will not return the default transaction of a connection. All transactions started by ibase_trans() will be rolled back at the end of the script if they were not committed or rolled back by either ibase_commit() or ibase_rollback().

Note:

This function will accept multiple trans_args and link_identifier arguments. This allows transactions over multiple database connections, which are committed using a 2-phase commit algorithm. This means you can rely on the updates to either succeed in every database, or fail in every database. It does NOT mean you can use tables from different databases in the same query!

If you use transactions over multiple databases, you will have to specify both the link_id and transaction_id in calls to ibase_query() and ibase_prepare().

参数

trans_args

trans_args can be a combination of IBASE_READ, IBASE_WRITE, IBASE_COMMITTED, IBASE_CONSISTENCY, IBASE_CONCURRENCY, IBASE_REC_VERSION, IBASE_REC_NO_VERSION, IBASE_WAIT and IBASE_NOWAIT.

link_identifier

An InterBase link identifier. If omitted, the last opened link is assumed.

返回值

Returns a transaction handle, or FALSE on error.

ibase_set_event_handler
ibase_wait_event
Firebird/InterBase 函数


Wait for an event to be posted by the database

ibase_trans
FrontBase
Firebird/InterBase 函数
PHP Manual

ibase_wait_event

(PHP 5, PHP 7)

ibase_wait_event — Wait for an event to be posted by the database

说明

string ibase_wait_event ( string $event_name1 [, string $event_name2 [, string $... ]] )
string ibase_wait_event ( resource $connection , string $event_name1 [, string $event_name2 [, string $... ]] )

This function suspends execution of the script until one of the specified events is posted by the database. The name of the event that was posted is returned. This function accepts up to 15 event arguments.

参数

event_name1

The event name.

event_name2

...

返回值

Returns the name of the event that was posted.

参见

  • ibase_set_event_handler() - Register a callback function to be called when events are posted
  • ibase_free_event_handler() - Cancels a registered event handler

ibase_trans
FrontBase
Firebird/InterBase 函数


FrontBase

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • FrontBase 函数
    • fbsql_affected_rows — Get number of affected rows in previous FrontBase operation
    • fbsql_autocommit — Enable or disable autocommit
    • fbsql_blob_size — Get the size of a BLOB
    • fbsql_change_user — Change logged in user of the active connection
    • fbsql_clob_size — Get the size of a CLOB
    • fbsql_close — Close FrontBase connection
    • fbsql_commit — Commits a transaction to the database
    • fbsql_connect — Open a connection to a FrontBase Server
    • fbsql_create_blob — Create a BLOB
    • fbsql_create_clob — Create a CLOB
    • fbsql_create_db — Create a FrontBase database
    • fbsql_data_seek — Move internal result pointer
    • fbsql_database_password — Sets or retrieves the password for a FrontBase database
    • fbsql_database — Get or set the database name used with a connection
    • fbsql_db_query — Send a FrontBase query
    • fbsql_db_status — Get the status for a given database
    • fbsql_drop_db — Drop (delete) a FrontBase database
    • fbsql_errno — Returns the error number from previous operation
    • fbsql_error — Returns the error message from previous operation
    • fbsql_fetch_array — Fetch a result row as an associative array, a numeric array, or both
    • fbsql_fetch_assoc — Fetch a result row as an associative array
    • fbsql_fetch_field — Get column information from a result and return as an object
    • fbsql_fetch_lengths — Get the length of each output in a result
    • fbsql_fetch_object — Fetch a result row as an object
    • fbsql_fetch_row — Get a result row as an enumerated array
    • fbsql_field_flags — Get the flags associated with the specified field in a result
    • fbsql_field_len — Returns the length of the specified field
    • fbsql_field_name — Get the name of the specified field in a result
    • fbsql_field_seek — Set result pointer to a specified field offset
    • fbsql_field_table — Get name of the table the specified field is in
    • fbsql_field_type — Get the type of the specified field in a result
    • fbsql_free_result — Free result memory
    • fbsql_get_autostart_info — 说明
    • fbsql_hostname — Get or set the host name used with a connection
    • fbsql_insert_id — Get the id generated from the previous INSERT operation
    • fbsql_list_dbs — List databases available on a FrontBase server
    • fbsql_list_fields — List FrontBase result fields
    • fbsql_list_tables — List tables in a FrontBase database
    • fbsql_next_result — Move the internal result pointer to the next result
    • fbsql_num_fields — Get number of fields in result
    • fbsql_num_rows — Get number of rows in result
    • fbsql_password — Get or set the user password used with a connection
    • fbsql_pconnect — Open a persistent connection to a FrontBase Server
    • fbsql_query — Send a FrontBase query
    • fbsql_read_blob — Read a BLOB from the database
    • fbsql_read_clob — Read a CLOB from the database
    • fbsql_result — Get result data
    • fbsql_rollback — Rollback a transaction to the database
    • fbsql_rows_fetched — Get the number of rows affected by the last statement
    • fbsql_select_db — Select a FrontBase database
    • fbsql_set_characterset — Change input/output character set
    • fbsql_set_lob_mode — Set the LOB retrieve mode for a FrontBase result set
    • fbsql_set_password — Change the password for a given user
    • fbsql_set_transaction — Set the transaction locking and isolation
    • fbsql_start_db — Start a database on local or remote server
    • fbsql_stop_db — Stop a database on local or remote server
    • fbsql_table_name — Get table name of field
    • fbsql_tablename — 别名 fbsql_table_name
    • fbsql_username — Get or set the username for the connection
    • fbsql_warnings — Enable or disable FrontBase warnings
ibase_wait_event
简介
针对各数据库系统对应的扩展


简介

These functions allow you to access FrontBase database servers. More information about FrontBase can be found at » http://www.frontbase.com/.

Documentation for FrontBase can be found at » http://www.frontbase.com/cgi-bin/WebObjects/FBWebSite.woa.

Frontbase support has been added to PHP 4.0.6.

Note:

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.3.0.

FrontBase
安装／配置
FrontBase


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
FrontBase


需求

You must install the FrontBase database server or at least the fbsql client libraries to use this functions. You can get FrontBase from » http://www.frontbase.com/.

安装／配置
安装
安装／配置


安装

In order to have these functions available, you must compile PHP with fbsql support by using the --with-fbsql[=DIR] option. If you use this option without specifying the path to fbsql, PHP will search for the fbsql client libraries in the default installation location for the platform. Users who installed FrontBase in a non standard directory should always specify the path to fbsql: --with-fbsql=/path/to/fbsql . This will force PHP to use the client libraries installed by FrontBase, avoiding any conflicts.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

FrontBase configuration options
名字 | 默认 | 可修改范围 | 更新日志
fbsql.allow_persistent | "1" | PHP_INI_SYSTEM | Available since PHP 4.0.6.
fbsql.generate_warnings | "0" | PHP_INI_SYSTEM | Available since PHP 4.0.6.
fbsql.autocommit | "1" | PHP_INI_SYSTEM | Available since PHP 4.0.6.
fbsql.max_persistent | "-1" | PHP_INI_SYSTEM | Available since PHP 4.0.6.
fbsql.max_links | "128" | PHP_INI_SYSTEM | Available since PHP 4.0.6.
fbsql.max_connections | "128" | PHP_INI_SYSTEM | Available since PHP 4.0.6.
fbsql.max_results | "128" | PHP_INI_SYSTEM | Available since PHP 4.0.6.
fbsql.batchSize | "1000" | PHP_INI_SYSTEM | Available since PHP 4.2.0. Removed in PHP 5.1.0.
fbsql.default_host | NULL | PHP_INI_SYSTEM | Available since PHP 4.0.6.
fbsql.default_user | "_SYSTEM" | PHP_INI_SYSTEM | Available since PHP 4.0.6.
fbsql.default_password | "" | PHP_INI_SYSTEM | Available since PHP 4.0.6.
fbsql.default_database | "" | PHP_INI_SYSTEM | Available since PHP 4.0.6.
fbsql.default_database_password | "" | PHP_INI_SYSTEM | Available since PHP 4.0.6.
fbsql.mbatchSize | "1000" | PHP_INI_SYSTEM | Available since PHP 4.0.6. Removed in PHP 4.2.0.
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

FBSQL_ASSOC (integer)
FBSQL_NUM (integer)
FBSQL_BOTH (integer)
FBSQL_LOCK_DEFERRED (integer)
FBSQL_LOCK_OPTIMISTIC (integer)
FBSQL_LOCK_PESSIMISTIC (integer)
FBSQL_ISO_READ_UNCOMMITTED (integer)
FBSQL_ISO_READ_COMMITTED (integer)
FBSQL_ISO_REPEATABLE_READ (integer)
FBSQL_ISO_SERIALIZABLE (integer)
FBSQL_ISO_VERSIONED (integer)
FBSQL_UNKNOWN (integer)
FBSQL_STOPPED (integer)
FBSQL_STARTING (integer)
FBSQL_RUNNING (integer)
FBSQL_STOPPING (integer)
FBSQL_NOEXEC (integer)
FBSQL_LOB_DIRECT (integer)
FBSQL_LOB_HANDLE (integer)
资源类型
FrontBase 函数
FrontBase


FrontBase 函数

Table of Contents

  • fbsql_affected_rows — Get number of affected rows in previous FrontBase operation
  • fbsql_autocommit — Enable or disable autocommit
  • fbsql_blob_size — Get the size of a BLOB
  • fbsql_change_user — Change logged in user of the active connection
  • fbsql_clob_size — Get the size of a CLOB
  • fbsql_close — Close FrontBase connection
  • fbsql_commit — Commits a transaction to the database
  • fbsql_connect — Open a connection to a FrontBase Server
  • fbsql_create_blob — Create a BLOB
  • fbsql_create_clob — Create a CLOB
  • fbsql_create_db — Create a FrontBase database
  • fbsql_data_seek — Move internal result pointer
  • fbsql_database_password — Sets or retrieves the password for a FrontBase database
  • fbsql_database — Get or set the database name used with a connection
  • fbsql_db_query — Send a FrontBase query
  • fbsql_db_status — Get the status for a given database
  • fbsql_drop_db — Drop (delete) a FrontBase database
  • fbsql_errno — Returns the error number from previous operation
  • fbsql_error — Returns the error message from previous operation
  • fbsql_fetch_array — Fetch a result row as an associative array, a numeric array, or both
  • fbsql_fetch_assoc — Fetch a result row as an associative array
  • fbsql_fetch_field — Get column information from a result and return as an object
  • fbsql_fetch_lengths — Get the length of each output in a result
  • fbsql_fetch_object — Fetch a result row as an object
  • fbsql_fetch_row — Get a result row as an enumerated array
  • fbsql_field_flags — Get the flags associated with the specified field in a result
  • fbsql_field_len — Returns the length of the specified field
  • fbsql_field_name — Get the name of the specified field in a result
  • fbsql_field_seek — Set result pointer to a specified field offset
  • fbsql_field_table — Get name of the table the specified field is in
  • fbsql_field_type — Get the type of the specified field in a result
  • fbsql_free_result — Free result memory
  • fbsql_get_autostart_info — 说明
  • fbsql_hostname — Get or set the host name used with a connection
  • fbsql_insert_id — Get the id generated from the previous INSERT operation
  • fbsql_list_dbs — List databases available on a FrontBase server
  • fbsql_list_fields — List FrontBase result fields
  • fbsql_list_tables — List tables in a FrontBase database
  • fbsql_next_result — Move the internal result pointer to the next result
  • fbsql_num_fields — Get number of fields in result
  • fbsql_num_rows — Get number of rows in result
  • fbsql_password — Get or set the user password used with a connection
  • fbsql_pconnect — Open a persistent connection to a FrontBase Server
  • fbsql_query — Send a FrontBase query
  • fbsql_read_blob — Read a BLOB from the database
  • fbsql_read_clob — Read a CLOB from the database
  • fbsql_result — Get result data
  • fbsql_rollback — Rollback a transaction to the database
  • fbsql_rows_fetched — Get the number of rows affected by the last statement
  • fbsql_select_db — Select a FrontBase database
  • fbsql_set_characterset — Change input/output character set
  • fbsql_set_lob_mode — Set the LOB retrieve mode for a FrontBase result set
  • fbsql_set_password — Change the password for a given user
  • fbsql_set_transaction — Set the transaction locking and isolation
  • fbsql_start_db — Start a database on local or remote server
  • fbsql_stop_db — Stop a database on local or remote server
  • fbsql_table_name — Get table name of field
  • fbsql_tablename — 别名 fbsql_table_name
  • fbsql_username — Get or set the username for the connection
  • fbsql_warnings — Enable or disable FrontBase warnings
预定义常量
fbsql_affected_rows
FrontBase


Get number of affected rows in previous FrontBase operation

FrontBase 函数
fbsql_autocommit
FrontBase 函数
PHP Manual

fbsql_affected_rows

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_affected_rows — Get number of affected rows in previous FrontBase operation

说明

int fbsql_affected_rows ([ resource $link_identifier ] )

fbsql_affected_rows() returns the number of rows affected by the last INSERT, UPDATE or DELETE query associated with link_identifier.

Note:

If you are using transactions, you need to call fbsql_affected_rows() after your INSERT, UPDATE, or DELETE query, not after the commit.

If the last query was a DELETE query with no WHERE clause, all of the records will have been deleted from the table but this function will return zero.

Note:

When using UPDATE, FrontBase will not update columns where the new value is the same as the old value. This creates the possibility that fbsql_affected_rows() may not actually equal the number of rows matched, only the number of rows that were literally affected by the query.

参数

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

If the last query failed, this function will return -1.

参见

  • fbsql_num_rows() - Get number of rows in result

FrontBase 函数
fbsql_autocommit
FrontBase 函数


Enable or disable autocommit

fbsql_affected_rows
fbsql_blob_size
FrontBase 函数
PHP Manual

fbsql_autocommit

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_autocommit — Enable or disable autocommit

说明

bool fbsql_autocommit ( resource $link_identifier [, bool $OnOff ] )

Returns the current autocommit status.

参数

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

OnOff

If this optional parameter is given the auto commit status will be changed.

With OnOff set to TRUE each statement will be committed automatically, if no errors was found.

With OnOff set to FALSE the user must commit or rollback the transaction using either fbsql_commit() or fbsql_rollback().

返回值

Returns the current autocommit status, as a boolean.

参见

  • fbsql_commit() - Commits a transaction to the database
  • fbsql_rollback() - Rollback a transaction to the database

fbsql_affected_rows
fbsql_blob_size
FrontBase 函数


Get the size of a BLOB

fbsql_autocommit
fbsql_change_user
FrontBase 函数
PHP Manual

fbsql_blob_size

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

fbsql_blob_size — Get the size of a BLOB

说明

int fbsql_blob_size ( string $blob_handle [, resource $link_identifier ] )

Returns the size of the given BLOB.

参数

blob_handle

A BLOB handle, returned by fbsql_create_blob().

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

Returns the BLOB size as an integer, or FALSE on error.

参见

  • fbsql_clob_size() - Get the size of a CLOB

fbsql_autocommit
fbsql_change_user
FrontBase 函数


Change logged in user of the active connection

fbsql_blob_size
fbsql_clob_size
FrontBase 函数
PHP Manual

fbsql_change_user

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_change_user — Change logged in user of the active connection

说明

bool fbsql_change_user ( string $user , string $password [, string $database [, resource $link_identifier ]] )

fbsql_change_user() changes the logged in user of the specified connection. If the new user and password authorization fails, the current connected user stays active.

参数

user

The new user name.

password

The new user password.

database

If specified, this will be the default or current database after the user has been changed.

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

fbsql_blob_size
fbsql_clob_size
FrontBase 函数


Get the size of a CLOB

fbsql_change_user
fbsql_close
FrontBase 函数
PHP Manual

fbsql_clob_size

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

fbsql_clob_size — Get the size of a CLOB

说明

int fbsql_clob_size ( string $clob_handle [, resource $link_identifier ] )

Returns the size of the given CLOB.

参数

clob_handle

A CLOB handle, returned by fbsql_create_clob().

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

Returns the CLOB size as an integer, or FALSE on error.

参见

  • fbsql_blob_size() - Get the size of a BLOB

fbsql_change_user
fbsql_close
FrontBase 函数


Close FrontBase connection

fbsql_clob_size
fbsql_commit
FrontBase 函数
PHP Manual

fbsql_close

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_close — Close FrontBase connection

说明

bool fbsql_close ([ resource $link_identifier ] )

Closes the connection to the FrontBase server that's associated with the specified link identifier.

Using fbsql_close() isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution.

参数

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 fbsql_close() example

<?php
$link = fbsql_connect("localhost", "_SYSTEM", "secret")
    or die("Could not connect");
echo "Connected successfully";
fbsql_close($link);
?>

参见

  • fbsql_connect() - Open a connection to a FrontBase Server
  • fbsql_pconnect() - Open a persistent connection to a FrontBase Server

fbsql_clob_size
fbsql_commit
FrontBase 函数


Commits a transaction to the database

fbsql_close
fbsql_connect
FrontBase 函数
PHP Manual

fbsql_commit

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_commit — Commits a transaction to the database

说明

bool fbsql_commit ([ resource $link_identifier ] )

Ends the current transaction by writing all inserts, updates and deletes to the disk and unlocking all row and table locks held by the transaction. This command is only needed if autocommit is set to false.

参数

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • fbsql_autocommit() - Enable or disable autocommit
  • fbsql_rollback() - Rollback a transaction to the database

fbsql_close
fbsql_connect
FrontBase 函数


Open a connection to a FrontBase Server

fbsql_commit
fbsql_create_blob
FrontBase 函数
PHP Manual

fbsql_connect

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_connect — Open a connection to a FrontBase Server

说明

 resource fbsql_connect
  ([ string $hostname = ini_get("fbsql.default_host")
 [, string $username = ini_get("fbsql.default_user")
 [, string $password = ini_get("fbsql.default_password")
]]] )

fbsql_connect() establishes a connection to a FrontBase server.

If a second call is made to fbsql_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned.

The link to the server will be closed as soon as the execution of the script ends, unless it's closed earlier by explicitly calling fbsql_close().

参数

hostname

The server host name.

username

The user name for the connection.

password

The password for the connection.

返回值

Returns a positive FrontBase link identifier on success, or FALSE on errors.

范例

Example #1 fbsql_connect() example

<?php

$link = fbsql_connect("localhost", "_SYSTEM", "secret")
    or die("Could not connect");
echo "Connected successfully";
fbsql_close($link);

?>

参见

  • fbsql_pconnect() - Open a persistent connection to a FrontBase Server
  • fbsql_close() - Close FrontBase connection

fbsql_commit
fbsql_create_blob
FrontBase 函数


Create a BLOB

fbsql_connect
fbsql_create_clob
FrontBase 函数
PHP Manual

fbsql_create_blob

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

fbsql_create_blob — Create a BLOB

说明

string fbsql_create_blob ( string $blob_data [, resource $link_identifier ] )

Creates a BLOB from the given data.

参数

blob_data

The BLOB data.

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

Returns a resource handle to the newly created BLOB, which can be used with insert and update commands to store the BLOB in the database.

范例

Example #1 fbsql_create_blob() example

<?php
$link = fbsql_pconnect("localhost", "_SYSTEM", "secret")
    or die("Could not connect");
$filename = "blobfile.bin";
$fp = fopen($filename, "rb");
$blobdata = fread($fp, filesize($filename));
fclose($fp);

$blobHandle = fbsql_create_blob($blobdata, $link);

$sql = "INSERT INTO BLOB_TABLE (BLOB_COLUMN) VALUES ($blobHandle);";
$rs = fbsql_query($sql, $link);
?>

参见

  • fbsql_create_clob() - Create a CLOB
  • fbsql_read_blob() - Read a BLOB from the database
  • fbsql_read_clob() - Read a CLOB from the database
  • fbsql_set_lob_mode() - Set the LOB retrieve mode for a FrontBase result set

fbsql_connect
fbsql_create_clob
FrontBase 函数


Create a CLOB

fbsql_create_blob
fbsql_create_db
FrontBase 函数
PHP Manual

fbsql_create_clob

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

fbsql_create_clob — Create a CLOB

说明

string fbsql_create_clob ( string $clob_data [, resource $link_identifier ] )

Creates a CLOB from the given data.

参数

clob_data

The CLOB data.

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

Returns a resource handle to the newly created CLOB, which can be used with insert and update commands to store the CLOB in the database.

范例

Example #1 fbsql_create_clob() example

<?php
$link = fbsql_pconnect("localhost", "_SYSTEM", "secret")
    or die("Could not connect");
$filename = "clob_file.txt";
$fp = fopen($filename, "rb");
$clobdata = fread($fp, filesize($filename));
fclose($fp);

$clobHandle = fbsql_create_clob($clobdata, $link);

$sql = "INSERT INTO CLOB_TABLE (CLOB_COLUMN) VALUES ($clobHandle);";
$rs = fbsql_query($sql, $link);
?>

参见

  • fbsql_create_blob() - Create a BLOB
  • fbsql_read_blob() - Read a BLOB from the database
  • fbsql_read_clob() - Read a CLOB from the database
  • fbsql_set_lob_mode() - Set the LOB retrieve mode for a FrontBase result set

fbsql_create_blob
fbsql_create_db
FrontBase 函数


Create a FrontBase database

fbsql_create_clob
fbsql_data_seek
FrontBase 函数
PHP Manual

fbsql_create_db

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_create_db — Create a FrontBase database

说明

bool fbsql_create_db ( string $database_name [, resource $link_identifier [, string $database_options ]] )

Attempts to create a new database on the specified server.

参数

database_name

The database name, as a string.

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

database_options

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 fbsql_create_db() example

<?php
$link = fbsql_pconnect("localhost", "_SYSTEM", "secret")
    or die("Could not connect");
if (fbsql_create_db("my_db")) {
    echo "Database created successfully\n";
} else {
    printf("Error creating database: %s\n", fbsql_error());
}
?>

参见

  • fbsql_drop_db() - Drop (delete) a FrontBase database

fbsql_create_clob
fbsql_data_seek
FrontBase 函数


Move internal result pointer

fbsql_create_db
fbsql_database_password
FrontBase 函数
PHP Manual

fbsql_data_seek

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_data_seek — Move internal result pointer

说明

bool fbsql_data_seek ( resource $result , int $row_number )

Moves the internal row pointer of the FrontBase result associated with the specified result identifier to point to the specified row number.

The next call to fbsql_fetch_row() would return that row.

参数

result

由 fbsql_query() 或 fbsql_db_query() 返回的结果标识符。

row_number

The row number. Starts at 0.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 fbsql_data_seek() example

<?php
$link = fbsql_pconnect("localhost", "_SYSTEM", "secret")
    or die("Could not connect");

fbsql_select_db("samp_db")
    or die("Could not select database");

$query = "SELECT last_name, first_name FROM friends;";
$result = fbsql_query($query)
    or die("Query failed");

// fetch rows in reverse order

for ($i = fbsql_num_rows($result) - 1; $i >=0; $i--) {
    if (!fbsql_data_seek($result, $i)) {
        printf("Cannot seek to row %d\n", $i);
        continue;
    }

    if (!($row = fbsql_fetch_object($result)))
        continue;

    echo $row->last_name . $row->first_name . "<br />\n";
}

fbsql_free_result($result);
?>

fbsql_create_db
fbsql_database_password
FrontBase 函数


Sets or retrieves the password for a FrontBase database

fbsql_data_seek
fbsql_database
FrontBase 函数
PHP Manual

fbsql_database_password

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_database_password — Sets or retrieves the password for a FrontBase database

说明

string fbsql_database_password ( resource $link_identifier [, string $database_password ] )

Sets and retrieves the database password used by the connection. If a database is protected by a database password, the user must call this function before calling fbsql_select_db().

If no link is open, the function will try to establish a link as if fbsql_connect() was called, and use it.

This function does not change the database password in the database nor can it be used to retrieve the database password for a database.

参数

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

database_password

The database password, as a string. If given, the function sets the database password for the specified link identifier.

返回值

Returns the database password associated with the link identifier.

范例

Example #1 fbsql_create_clob() example

<?php
$link = fbsql_pconnect("localhost", "_SYSTEM", "secret")
    or die("Could not connect");
fbsql_database_password($link, "secret db password");
fbsql_select_db($database, $link);
?>

参见

  • fbsql_connect() - Open a connection to a FrontBase Server
  • fbsql_pconnect() - Open a persistent connection to a FrontBase Server
  • fbsql_select_db() - Select a FrontBase database

fbsql_data_seek
fbsql_database
FrontBase 函数


Get or set the database name used with a connection

fbsql_database_password
fbsql_db_query
FrontBase 函数
PHP Manual

fbsql_database

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_database — Get or set the database name used with a connection

说明

string fbsql_database ( resource $link_identifier [, string $database ] )

Get or set the database name used with the connection.

参数

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

database

The database name. If given, the default database of the connexion will be changed to database.

返回值

Returns the name of the database used with this connection.

fbsql_database_password
fbsql_db_query
FrontBase 函数


Send a FrontBase query

fbsql_database
fbsql_db_status
FrontBase 函数
PHP Manual

fbsql_db_query

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_db_query — Send a FrontBase query

说明

resource fbsql_db_query ( string $database , string $query [, resource $link_identifier ] )

Selects a database and executes a query on it.

参数

database

The database to be selected.

query

The SQL query to be executed.

Note:

The query string shall always end with a semicolon.

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

Returns a positive FrontBase result identifier to the query result, or FALSE on error.

参见

  • fbsql_query() - Send a FrontBase query
  • fbsql_connect() - Open a connection to a FrontBase Server

fbsql_database
fbsql_db_status
FrontBase 函数


Get the status for a given database

fbsql_db_query
fbsql_drop_db
FrontBase 函数
PHP Manual

fbsql_db_status

(PHP 4 >= 4.0.7, PHP 5, PHP 7)

fbsql_db_status — Get the status for a given database

说明

int fbsql_db_status ( string $database_name [, resource $link_identifier ] )

Gets the current status of the specified database.

参数

database_name

The database name.

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

Returns an integer value with the current status. This can be one of the following constants:

  • FALSE - The exec handler for the host was invalid. This error will occur when the link_identifier connects directly to a database by using a port number. FBExec can be available on the server but no connection has been made for it.
  • FBSQL_UNKNOWN - The Status is unknown.
  • FBSQL_STOPPED - The database is not running. Use fbsql_start_db() to start the database.
  • FBSQL_STARTING - The database is starting.
  • FBSQL_RUNNING - The database is running and can be used to perform SQL operations.
  • FBSQL_STOPPING - The database is stopping.
  • FBSQL_NOEXEC - FBExec is not running on the server and it is not possible to get the status of the database.

参见

  • fbsql_start_db() - Start a database on local or remote server
  • fbsql_stop_db() - Stop a database on local or remote server

fbsql_db_query
fbsql_drop_db
FrontBase 函数


Drop (delete) a FrontBase database

fbsql_db_status
fbsql_errno
FrontBase 函数
PHP Manual

fbsql_drop_db

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_drop_db — Drop (delete) a FrontBase database

说明

bool fbsql_drop_db ( string $database_name [, resource $link_identifier ] )

fbsql_drop_db() attempts to drop (remove) an entire database from the server associated with the specified link identifier.

参数

database_name

The database name, as a string.

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • fbsql_create_db() - Create a FrontBase database

fbsql_db_status
fbsql_errno
FrontBase 函数


Returns the error number from previous operation

fbsql_drop_db
fbsql_error
FrontBase 函数
PHP Manual

fbsql_errno

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_errno — Returns the error number from previous operation

说明

int fbsql_errno ([ resource $link_identifier ] )

Returns the numerical value of the error message from previous FrontBase operation.

Errors coming back from the fbsql database backend don't issue warnings. Instead, use fbsql_errno() to retrieve the error code. Note that this function only returns the error code from the most recently executed fbsql function (not including fbsql_error() and fbsql_errno()), so if you want to use it, make sure you check the value before calling another fbsql function.

参数

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

Returns the error number from the last fbsql function, or 0 (zero) if no error occurred.

范例

Example #1 fbsql_errno() Example

<?php
fbsql_connect("marliesle");
echo fbsql_errno() . ": " . fbsql_error() . "<br />";
fbsql_select_db("nonexistentdb");
echo fbsql_errno() . ": " . fbsql_error() . "<br />";
$conn = fbsql_query("SELECT * FROM nonexistenttable;");
echo fbsql_errno() . ": " . fbsql_error() . "<br />";
?>

参见

  • fbsql_error() - Returns the error message from previous operation
  • fbsql_warnings() - Enable or disable FrontBase warnings

fbsql_drop_db
fbsql_error
FrontBase 函数


Returns the error message from previous operation

fbsql_errno
fbsql_fetch_array
FrontBase 函数
PHP Manual

fbsql_error

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_error — Returns the error message from previous operation

说明

string fbsql_error ([ resource $link_identifier ] )

Returns the error message from previous FrontBase operation.

Errors coming back from the fbsql database backend don't issue warnings. Instead, use fbsql_error() to retrieve the error text. Note that this function only returns the error code from the most recently executed fbsql function (not including fbsql_error() and fbsql_errno()), so if you want to use it, make sure you check the value before calling another fbsql function.

参数

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

Returns the error text from the last fbsql function, or '' (the empty string) if no error occurred.

范例

Example #1 fbsql_error() Example

<?php
fbsql_connect("marliesle");
echo fbsql_errno() . ": " . fbsql_error() . "<br />";
fbsql_select_db("nonexistentdb");
echo fbsql_errno() . ": " . fbsql_error() . "<br />";
$conn = fbsql_query("SELECT * FROM nonexistenttable;");
echo fbsql_errno() . ": " . fbsql_error() . "<br />";
?>

参见

  • fbsql_errno() - Returns the error number from previous operation
  • fbsql_warnings() - Enable or disable FrontBase warnings

fbsql_errno
fbsql_fetch_array
FrontBase 函数


Fetch a result row as an associative array, a numeric array, or both

fbsql_error
fbsql_fetch_assoc
FrontBase 函数
PHP Manual

fbsql_fetch_array

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_fetch_array — Fetch a result row as an associative array, a numeric array, or both

说明

array fbsql_fetch_array ( resource $result [, int $result_type ] )

fbsql_fetch_array() is a combination of
fbsql_fetch_row() and
fbsql_fetch_assoc().

An important thing to note is that using fbsql_fetch_array() is NOT significantly slower than using fbsql_fetch_row(), while it provides a significant added value.

参数

result

由 fbsql_query() 或 fbsql_db_query() 返回的结果标识符。

result_type

A constant and can take the following values: FBSQL_ASSOC, FBSQL_NUM, or FBSQL_BOTH.

When using FBSQL_BOTH, in addition to storing the data in the numeric indices of the result array, it also stores the data in associative indices, using the field names as keys.

返回值

Returns an array that corresponds to the fetched row, or FALSE if there are no more rows.

If two or more columns of the result have the same field names, the last column will take precedence. To access the other column(s) of the same name, you must the numeric index of the column or make an alias for the column.

select t1.f1 as foo t2.f1 as bar from t1, t2

范例

Example #1 fbsql_fetch_array() example

<?php
fbsql_connect($host, $user, $password);
$result = fbsql_db_query("database", "select user_id, fullname from table");
while ($row = fbsql_fetch_array($result)) {
    echo "user_id: " . $row["user_id"] . "<br />\n";
    echo "user_id: " . $row[0] . "<br />\n";
    echo "fullname: " . $row["fullname"] . "<br />\n";
    echo "fullname: " . $row[1] . "<br />\n";
}
fbsql_free_result($result);
?>

参见

  • fbsql_fetch_row() - Get a result row as an enumerated array
  • fbsql_fetch_assoc() - Fetch a result row as an associative array
  • fbsql_fetch_object() - Fetch a result row as an object

fbsql_error
fbsql_fetch_assoc
FrontBase 函数


Fetch a result row as an associative array

fbsql_fetch_array
fbsql_fetch_field
FrontBase 函数
PHP Manual

fbsql_fetch_assoc

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_fetch_assoc — Fetch a result row as an associative array

说明

array fbsql_fetch_assoc ( resource $result )

Calling fbsql_fetch_assoc() is equivalent to calling fbsql_fetch_array() with FBSQL_ASSOC as second parameter. It only returns an associative array.

This is the way fbsql_fetch_array() originally worked. If you need the numeric indices as well as the associative, use fbsql_fetch_array().

An important thing to note is that using fbsql_fetch_assoc() is NOT significantly slower than using fbsql_fetch_row(), while it provides a significant added value.

参数

result

由 fbsql_query() 或 fbsql_db_query() 返回的结果标识符。

返回值

Returns an associative array that corresponds to the fetched row, or FALSE if there are no more rows.

If two or more columns of the result have the same field names, the last column will take precedence. To access the other column(s) of the same name, you must use fbsql_fetch_array() and have it return the numeric indices as well.

范例

Example #1 fbsql_fetch_assoc() example

<?php
fbsql_connect($host, $user, $password);
$result = fbsql_db_query("database", "select * from table");
while ($row = fbsql_fetch_assoc($result)) {
    echo $row["user_id"];
    echo $row["fullname"];
}
fbsql_free_result($result);
?>

参见

  • fbsql_fetch_row() - Get a result row as an enumerated array
  • fbsql_fetch_array() - Fetch a result row as an associative array, a numeric array, or both
  • fbsql_fetch_object() - Fetch a result row as an object

fbsql_fetch_array
fbsql_fetch_field
FrontBase 函数


Get column information from a result and return as an object

fbsql_fetch_assoc
fbsql_fetch_lengths
FrontBase 函数
PHP Manual

fbsql_fetch_field

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_fetch_field — Get column information from a result and return as an object

说明

object fbsql_fetch_field ( resource $result [, int $field_offset ] )

Used in order to obtain information about fields in a certain query result.

参数

result

由 fbsql_query() 或 fbsql_db_query() 返回的结果标识符。

field_offset

The numerical offset of the field. The field index starts at 0. If not specified, the next field that wasn't yet retrieved by fbsql_fetch_field() is retrieved.

返回值

Returns an object containing field information, or FALSE on errors.

The properties of the object are:

  • name - column name
  • table - name of the table the column belongs to
  • max_length - maximum length of the column
  • not_null - 1 if the column cannot be NULL
  • type - the type of the column

范例

Example #1 fbsql_fetch_field() example

<?php
fbsql_connect($host, $user, $password)
    or die("Could not connect");
$result = fbsql_db_query("database", "select * from table")
    or die("Query failed");
# get column metadata
$i = 0;
while ($i < fbsql_num_fields($result)) {
    echo "Information for column $i:<br />\n";
    $meta = fbsql_fetch_field($result);
    if (!$meta) {
        echo "No information available<br />\n";
    }
    echo "<pre>
max_length:   $meta->max_length
name:         $meta->name
not_null:     $meta->not_null
table:        $meta->table
type:         $meta->type
</pre>";
    $i++;
}
fbsql_free_result($result);
?>

参见

  • fbsql_field_seek() - Set result pointer to a specified field offset

fbsql_fetch_assoc
fbsql_fetch_lengths
FrontBase 函数


Get the length of each output in a result

fbsql_fetch_field
fbsql_fetch_object
FrontBase 函数
PHP Manual

fbsql_fetch_lengths

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_fetch_lengths — Get the length of each output in a result

说明

array fbsql_fetch_lengths ( resource $result )

Stores the lengths of each result column in the last row returned by
fbsql_fetch_row(),
fbsql_fetch_array() and
fbsql_fetch_object() in an array.

参数

result

由 fbsql_query() 或 fbsql_db_query() 返回的结果标识符。

返回值

Returns an array, starting at offset 0, that corresponds to the lengths of each field in the last row fetched by fbsql_fetch_row(), or FALSE on error.

参见

  • fbsql_fetch_row() - Get a result row as an enumerated array

fbsql_fetch_field
fbsql_fetch_object
FrontBase 函数


Fetch a result row as an object

fbsql_fetch_lengths
fbsql_fetch_row
FrontBase 函数
PHP Manual

fbsql_fetch_object

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_fetch_object — Fetch a result row as an object

说明

object fbsql_fetch_object ( resource $result )

fbsql_fetch_object() is similar to fbsql_fetch_array(), with one difference - an object is returned, instead of an array. Indirectly, that means that you can only access the data by the field names, and not by their offsets (numbers are illegal property names).

Speed-wise, the function is identical to fbsql_fetch_array(), and almost as quick as fbsql_fetch_row() (the difference is insignificant).

参数

result

由 fbsql_query() 或 fbsql_db_query() 返回的结果标识符。

返回值

Returns an object with properties that correspond to the fetched row, or FALSE if there are no more rows.

范例

Example #1 fbsql_fetch_object() example

<?php
fbsql_connect($host, $user, $password);
$result = fbsql_db_query("database", "select * from table");
while ($row = fbsql_fetch_object($result)) {
    echo $row->user_id;
    echo $row->fullname;
}
fbsql_free_result($result);
?>

参见

  • fbsql_fetch_array() - Fetch a result row as an associative array, a numeric array, or both
  • fbsql_fetch_row() - Get a result row as an enumerated array
  • fbsql_fetch_assoc() - Fetch a result row as an associative array

fbsql_fetch_lengths
fbsql_fetch_row
FrontBase 函数


Get a result row as an enumerated array

fbsql_fetch_object
fbsql_field_flags
FrontBase 函数
PHP Manual

fbsql_fetch_row

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_fetch_row — Get a result row as an enumerated array

说明

array fbsql_fetch_row ( resource $result )

fbsql_fetch_row() fetches one row of data from the result associated with the specified result identifier.

Subsequent call to fbsql_fetch_row() would return the next row in the result set, or FALSE if there are no more rows.

参数

result

由 fbsql_query() 或 fbsql_db_query() 返回的结果标识符。

返回值

Returns an array that corresponds to the fetched row where each result column is stored in an offset, starting at offset 0, or FALSE if there are no more rows.

参见

  • fbsql_fetch_array() - Fetch a result row as an associative array, a numeric array, or both
  • fbsql_fetch_assoc() - Fetch a result row as an associative array
  • fbsql_fetch_object() - Fetch a result row as an object
  • fbsql_data_seek() - Move internal result pointer
  • fbsql_fetch_lengths() - Get the length of each output in a result
  • fbsql_result() - Get result data

fbsql_fetch_object
fbsql_field_flags
FrontBase 函数


Get the flags associated with the specified field in a result

fbsql_fetch_row
fbsql_field_len
FrontBase 函数
PHP Manual

fbsql_field_flags

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_field_flags — Get the flags associated with the specified field in a result

说明

string fbsql_field_flags ( resource $result [, int $field_offset ] )

Gets the flags associated with the specified field in a result.

参数

result

A result pointer returned by fbsql_list_fields().

field_offset

The numerical offset of the field. The field index starts at 0.

返回值

Returns the field flags of the specified field as a single word per flag separated by a single space, so that you can split the returned value using explode().

fbsql_fetch_row
fbsql_field_len
FrontBase 函数


Returns the length of the specified field

fbsql_field_flags
fbsql_field_name
FrontBase 函数
PHP Manual

fbsql_field_len

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_field_len — Returns the length of the specified field

说明

int fbsql_field_len ( resource $result [, int $field_offset ] )

Returns the length of the specified field.

参数

result

A result pointer returned by fbsql_list_fields().

field_offset

The numerical offset of the field. The field index starts at 0.

返回值

Returns the length of the specified field.

fbsql_field_flags
fbsql_field_name
FrontBase 函数


Get the name of the specified field in a result

fbsql_field_len
fbsql_field_seek
FrontBase 函数
PHP Manual

fbsql_field_name

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_field_name — Get the name of the specified field in a result

说明

string fbsql_field_name ( resource $result [, int $field_index ] )

Returns the name of the specified field index.

参数

result

A result pointer returned by fbsql_list_fields().

field_index

The numerical offset of the field. The field index starts at 0.

返回值

Returns the name as a string, or FALSE if the field doesn't exist.

范例

Example #1 fbsql_field_name() example

<?php
// The users table consists of three fields:
//   user_id
//   username
//   password.

$res = fbsql_db_query("users", "select * from users", $link);

echo fbsql_field_name($res, 0) . "\n";
echo fbsql_field_name($res, 2);
?>

以上例程会输出：

user_id
password

参见

  • fbsql_field_type() - Get the type of the specified field in a result

fbsql_field_len
fbsql_field_seek
FrontBase 函数


Set result pointer to a specified field offset

fbsql_field_name
fbsql_field_table
FrontBase 函数
PHP Manual

fbsql_field_seek

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_field_seek — Set result pointer to a specified field offset

说明

bool fbsql_field_seek ( resource $result [, int $field_offset ] )

Seeks to the specified field offset. If the next call to fbsql_fetch_field() doesn't include a field offset, the field offset specified in fbsql_field_seek() will be returned.

参数

result

由 fbsql_query() 或 fbsql_db_query() 返回的结果标识符。

field_offset

The numerical offset of the field. The field index starts at 0.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • fbsql_fetch_field() - Get column information from a result and return as an object

fbsql_field_name
fbsql_field_table
FrontBase 函数


Get name of the table the specified field is in

fbsql_field_seek
fbsql_field_type
FrontBase 函数
PHP Manual

fbsql_field_table

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_field_table — Get name of the table the specified field is in

说明

string fbsql_field_table ( resource $result [, int $field_offset ] )

Returns the name of the table that the specified field is in.

参数

result

由 fbsql_query() 或 fbsql_db_query() 返回的结果标识符。

field_offset

The numerical offset of the field. The field index starts at 0.

返回值

Returns the name of the table, as a string.

fbsql_field_seek
fbsql_field_type
FrontBase 函数


Get the type of the specified field in a result

fbsql_field_table
fbsql_free_result
FrontBase 函数
PHP Manual

fbsql_field_type

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_field_type — Get the type of the specified field in a result

说明

string fbsql_field_type ( resource $result [, int $field_offset ] )

fbsql_field_type() is similar to the fbsql_field_name() function, but the field type is returned instead.

参数

result

由 fbsql_query() 或 fbsql_db_query() 返回的结果标识符。

field_offset

The numerical offset of the field. The field index starts at 0.

返回值

Returns the field type, as a string.

This can be one of int, real, string, blob, and others as detailed in the » FrontBase documentation.

范例

Example #1 fbsql_field_type() example

<?php

fbsql_connect("localhost", "_SYSTEM", "");
fbsql_select_db("wisconsin");
$result = fbsql_query("SELECT * FROM onek;");
$fields = fbsql_num_fields($result);
$rows   = fbsql_num_rows($result);
$i = 0;
$table = fbsql_field_table($result, $i);
echo "Your '" . $table . "' table has " . $fields . " fields and " . $rows . " records <br />";
echo "The table has the following fields <br />";
while ($i < $fields) {
    $type  = fbsql_field_type($result, $i);
    $name  = fbsql_field_name($result, $i);
    $len   = fbsql_field_len($result, $i);
    $flags = fbsql_field_flags($result, $i);
    echo $type . " " . $name . " " . $len . " " . $flags . "<br />";
    $i++;
}
fbsql_close();

?>

参见

  • fbsql_field_name() - Get the name of the specified field in a result

fbsql_field_table
fbsql_free_result
FrontBase 函数


Free result memory

fbsql_field_type
fbsql_get_autostart_info
FrontBase 函数
PHP Manual

fbsql_free_result

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_free_result — Free result memory

说明

bool fbsql_free_result ( resource $result )

Frees all memory associated with the given result identifier.

fbsql_free_result() only needs to be called if you are concerned about how much memory is being used for queries that return large result sets. All associated result memory is automatically freed at the end of the script's execution.

参数

result

由 fbsql_query() 或 fbsql_db_query() 返回的结果标识符。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

fbsql_field_type
fbsql_get_autostart_info
FrontBase 函数


fbsql_free_result
fbsql_hostname
FrontBase 函数
PHP Manual

fbsql_get_autostart_info

(PHP 4 >= 4.0.7, PHP 5, PHP 7)

fbsql_get_autostart_info —

说明

array fbsql_get_autostart_info ([ resource $link_identifier ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

fbsql_free_result
fbsql_hostname
FrontBase 函数


Get or set the host name used with a connection

fbsql_get_autostart_info
fbsql_insert_id
FrontBase 函数
PHP Manual

fbsql_hostname

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_hostname — Get or set the host name used with a connection

说明

string fbsql_hostname ( resource $link_identifier [, string $host_name ] )

Gets or sets the host name used with a connection.

参数

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

host_name

If provided, this will be the new connection host name.

返回值

Returns the current host name used for the connection.

参见

  • fbsql_username() - Get or set the username for the connection
  • fbsql_password() - Get or set the user password used with a connection

fbsql_get_autostart_info
fbsql_insert_id
FrontBase 函数


Get the id generated from the previous INSERT operation

fbsql_hostname
fbsql_list_dbs
FrontBase 函数
PHP Manual

fbsql_insert_id

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_insert_id — Get the id generated from the previous INSERT operation

说明

int fbsql_insert_id ([ resource $link_identifier ] )

Gets the id generated from the previous INSERT operation which created a DEFAULT UNIQUE value.

Note:

The value of the FrontBase SQL function fbsql_insert_id() always contains the most recently generated DEFAULT UNIQUE value, and is not reset between queries.

参数

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

Returns the ID generated from the previous INSERT query, or 0 if the previous query does not generate an DEFAULT UNIQUE value.

If you need to save the value for later, be sure to call this function immediately after the query that generates the value.

参见

  • fbsql_affected_rows() - Get number of affected rows in previous FrontBase operation

fbsql_hostname
fbsql_list_dbs
FrontBase 函数


List databases available on a FrontBase server

fbsql_insert_id
fbsql_list_fields
FrontBase 函数
PHP Manual

fbsql_list_dbs

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_list_dbs — List databases available on a FrontBase server

说明

resource fbsql_list_dbs ([ resource $link_identifier ] )

Return a result pointer containing the databases available from the current fbsql daemon. Use the fbsql_tablename() to traverse this result pointer.

参数

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

Returns a result pointer or FALSE on error.

范例

Example #1 fbsql_list_dbs() example

<?php
$link = fbsql_connect('localhost', 'myname', 'secret');
$db_list = fbsql_list_dbs($link);

while ($row = fbsql_fetch_object($db_list)) {
    echo $row->Database . "\n";
}
?>

以上例程的输出类似于：

database1
database2
database3
...

Note:

The above code would just as easily work with fbsql_fetch_row() or other similar functions.

参见

  • fbsql_list_fields() - List FrontBase result fields
  • fbsql_list_tables() - List tables in a FrontBase database

fbsql_insert_id
fbsql_list_fields
FrontBase 函数


List FrontBase result fields

fbsql_list_dbs
fbsql_list_tables
FrontBase 函数
PHP Manual

fbsql_list_fields

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_list_fields — List FrontBase result fields

说明

resource fbsql_list_fields ( string $database_name , string $table_name [, resource $link_identifier ] )

Retrieves information about the given table.

参数

database_name

The database name.

table_name

The table name.

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

Returns a result pointer which can be used with the fbsql_field_xxx functions, or FALSE on error.

错误／异常

A string describing the error will be placed in $phperrmsg, and unless the function was called as @fbsql() then this error string will also be printed out.

范例

Example #1 fbsql_list_fields() example

<?php
$link = fbsql_connect('localhost', 'myname', 'secret');

$fields = fbsql_list_fields("database1", "table1", $link);
$columns = fbsql_num_fields($fields);

for ($i = 0; $i < $columns; $i++) {
    echo fbsql_field_name($fields, $i) . "\n";;
}
?>

以上例程的输出类似于：

field1
field2
field3
...

参见

  • fbsql_field_len() - Returns the length of the specified field
  • fbsql_field_name() - Get the name of the specified field in a result
  • fbsql_field_type() - Get the type of the specified field in a result
  • fbsql_field_flags() - Get the flags associated with the specified field in a result

fbsql_list_dbs
fbsql_list_tables
FrontBase 函数


List tables in a FrontBase database

fbsql_list_fields
fbsql_next_result
FrontBase 函数
PHP Manual

fbsql_list_tables

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_list_tables — List tables in a FrontBase database

说明

resource fbsql_list_tables ( string $database [, resource $link_identifier ] )

Returns a result pointer describing the database.

参数

database

The database name.

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

Returns a result pointer which can be used with the fbsql_tablename() function to read the actual table names, or FALSE on error.

参见

  • fbsql_list_fields() - List FrontBase result fields
  • fbsql_list_dbs() - List databases available on a FrontBase server

fbsql_list_fields
fbsql_next_result
FrontBase 函数


Move the internal result pointer to the next result

fbsql_list_tables
fbsql_num_fields
FrontBase 函数
PHP Manual

fbsql_next_result

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_next_result — Move the internal result pointer to the next result

说明

bool fbsql_next_result ( resource $result )

When sending more than one SQL statement to the server or executing a stored procedure with multiple results will cause the server to return multiple result sets. This function will test for additional results available form the server. If an additional result set exists it will free the existing result set and prepare to fetch the words from the new result set.

参数

result

由 fbsql_query() 或 fbsql_db_query() 返回的结果标识符。

返回值

Returns TRUE if an additional result set was available or FALSE otherwise.

范例

Example #1 fbsql_next_result() example

<?php
$link = fbsql_connect("localhost", "_SYSTEM", "secret");
fbsql_select_db("MyDB", $link);
$SQL = "Select * from table1; select * from table2;";
$rs = fbsql_query($SQL, $link);
do {
    while ($row = fbsql_fetch_row($rs)) {
    }
} while (fbsql_next_result($rs));
fbsql_free_result($rs);
fbsql_close($link);
?>

fbsql_list_tables
fbsql_num_fields
FrontBase 函数


Get number of fields in result

fbsql_next_result
fbsql_num_rows
FrontBase 函数
PHP Manual

fbsql_num_fields

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_num_fields — Get number of fields in result

说明

int fbsql_num_fields ( resource $result )

Returns the number of fields in the given result set.

参数

result

由 fbsql_query() 或 fbsql_db_query() 返回的结果标识符。

返回值

Returns the number of fields, as an integer.

参见

  • fbsql_db_query() - Send a FrontBase query
  • fbsql_query() - Send a FrontBase query
  • fbsql_fetch_field() - Get column information from a result and return as an object
  • fbsql_num_rows() - Get number of rows in result

fbsql_next_result
fbsql_num_rows
FrontBase 函数


Get number of rows in result

fbsql_num_fields
fbsql_password
FrontBase 函数
PHP Manual

fbsql_num_rows

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_num_rows — Get number of rows in result

说明

int fbsql_num_rows ( resource $result )

Gets the number of rows in the given result set.

This function is only valid for SELECT statements. To retrieve the number of rows returned from a INSERT, UPDATE or DELETE query, use fbsql_affected_rows().

参数

result

由 fbsql_query() 或 fbsql_db_query() 返回的结果标识符。

返回值

Returns the number of rows returned by the last SELECT statement.

范例

Example #1 fbsql_num_rows() example

<?php

$link = fbsql_connect("localhost", "username", "password");
fbsql_select_db("database", $link);

$result = fbsql_query("SELECT * FROM table1;", $link);
$num_rows = fbsql_num_rows($result);

echo "$num_rows Rows\n";

?>

参见

  • fbsql_affected_rows() - Get number of affected rows in previous FrontBase operation
  • fbsql_connect() - Open a connection to a FrontBase Server
  • fbsql_select_db() - Select a FrontBase database
  • fbsql_query() - Send a FrontBase query

fbsql_num_fields
fbsql_password
FrontBase 函数


Get or set the user password used with a connection

fbsql_num_rows
fbsql_pconnect
FrontBase 函数
PHP Manual

fbsql_password

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_password — Get or set the user password used with a connection

说明

string fbsql_password ( resource $link_identifier [, string $password ] )

Get or set the user password used with a connection.

参数

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

password

If provided, this will be the new connection password.

返回值

Returns the current password used for the connection.

参见

  • fbsql_username() - Get or set the username for the connection
  • fbsql_hostname() - Get or set the host name used with a connection

fbsql_num_rows
fbsql_pconnect
FrontBase 函数


Open a persistent connection to a FrontBase Server

fbsql_password
fbsql_query
FrontBase 函数
PHP Manual

fbsql_pconnect

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_pconnect — Open a persistent connection to a FrontBase Server

说明

 resource fbsql_pconnect
  ([ string $hostname = ini_get("fbsql.default_host")
 [, string $username = ini_get("fbsql.default_user")
 [, string $password = ini_get("fbsql.default_password")
]]] )

Establishes a persistent connection to a FrontBase server.

To set the server port number, use fbsql_select_db().

fbsql_pconnect() acts very much like fbsql_connect() with two major differences:

First, when connecting, the function would first try to find a (persistent) link that's already open with the same host, username and password. If one is found, an identifier for it will be returned instead of opening a new connection.

Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use.

This type of links is therefore called 'persistent'.

参数

hostname

The server host name.

username

The user name for the connection.

password

The password for the connection.

返回值

Returns a positive FrontBase persistent link identifier on success, or FALSE on error.

参见

  • fbsql_connect() - Open a connection to a FrontBase Server

fbsql_password
fbsql_query
FrontBase 函数


Send a FrontBase query

fbsql_pconnect
fbsql_read_blob
FrontBase 函数
PHP Manual

fbsql_query

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_query — Send a FrontBase query

说明

resource fbsql_query ( string $query [, resource $link_identifier [, int $batch_size ]] )

Sends a query to the currently active database on the server.

If the query succeeds, you can call fbsql_num_rows() to find out how many rows were returned for a SELECT statement or fbsql_affected_rows() to find out how many rows were affected by a DELETE, INSERT, REPLACE, or UPDATE statement.

参数

query

The SQL query to be executed.

Note:

The query string shall always end with a semicolon.

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

batch_size

返回值

fbsql_query() returns TRUE (non-zero) or FALSE to indicate whether or not the query succeeded. A return value of TRUE means that the query was legal and could be executed by the server. It does not indicate anything about the number of rows affected or returned. It is perfectly possible for a query to succeed but affect no rows or return no rows.

For SELECT statements, fbsql_query() returns a new result identifier that you can pass to fbsql_result().

fbsql_query() will also fail and return FALSE if you don't have permission to access the table(s) referenced by the query.

范例

The following query is syntactically invalid, so fbsql_query() fails and returns FALSE:

Example #1 fbsql_query() example

<?php
$result = fbsql_query("SELECT * WHERE 1=1")
    or die ("Invalid query");
?>

The following query is semantically invalid if my_col is not a column in the table my_tbl, so fbsql_query() fails and returns FALSE:

Example #2 fbsql_query() example

<?php
$result = fbsql_query ("SELECT my_col FROM my_tbl;")
    or die ("Invalid query");
?>

参见

  • fbsql_affected_rows() - Get number of affected rows in previous FrontBase operation
  • fbsql_db_query() - Send a FrontBase query
  • fbsql_free_result() - Free result memory
  • fbsql_result() - Get result data
  • fbsql_select_db() - Select a FrontBase database
  • fbsql_connect() - Open a connection to a FrontBase Server

fbsql_pconnect
fbsql_read_blob
FrontBase 函数


Read a BLOB from the database

fbsql_query
fbsql_read_clob
FrontBase 函数
PHP Manual

fbsql_read_blob

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

fbsql_read_blob — Read a BLOB from the database

说明

string fbsql_read_blob ( string $blob_handle [, resource $link_identifier ] )

Reads BLOB data from the database.

If a select statement contains BLOB and/or CLOB columns FrontBase will return the data directly when data is fetched. This default behavior can be changed with fbsql_set_lob_mode() so the fetch functions will return handles to BLOB and CLOB data. If a handle is fetched a user must call fbsql_read_blob() to get the actual BLOB data from the database.

参数

blob_handle

A BLOB handle, returned by fbsql_create_blob().

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

Returns a string containing the specified BLOB data.

范例

Example #1 fbsql_read_blob() example

<?php
$link = fbsql_pconnect("localhost", "_SYSTEM", "secret")
    or die("Could not connect");
$sql = "SELECT BLOB_COLUMN FROM BLOB_TABLE;";
$rs = fbsql_query($sql, $link);
$row_data = fbsql_fetch_row($rs);
// $row_data[0] will now contain the blob data for the first row
fbsql_free_result($rs);

$rs = fbsql_query($sql, $link);
fbsql_set_lob_mode($rs, FBSQL_LOB_HANDLE);
$row_data = fbsql_fetch_row($rs);
// $row_data[0] will now contain a handle to the BLOB data in the first row
$blob_data = fbsql_read_blob($row_data[0]);
fbsql_free_result($rs);

?>

参见

  • fbsql_create_blob() - Create a BLOB
  • fbsql_read_clob() - Read a CLOB from the database
  • fbsql_set_lob_mode() - Set the LOB retrieve mode for a FrontBase result set

fbsql_query
fbsql_read_clob
FrontBase 函数


Read a CLOB from the database

fbsql_read_blob
fbsql_result
FrontBase 函数
PHP Manual

fbsql_read_clob

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

fbsql_read_clob — Read a CLOB from the database

说明

string fbsql_read_clob ( string $clob_handle [, resource $link_identifier ] )

Reads CLOB data from the database.

If a select statement contains BLOB and/or CLOB columns FrontBase will return the data directly when data is fetched. This default behavior can be changed with fbsql_set_lob_mode() so the fetch functions will return handles to BLOB and CLOB data. If a handle is fetched a user must call fbsql_read_clob() to get the actual CLOB data from the database.

参数

clob_handle

A CLOB handle, returned by fbsql_create_clob().

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

Returns a string containing the specified CLOB data.

范例

Example #1 fbsql_read_clob() example

<?php
$link = fbsql_pconnect("localhost", "_SYSTEM", "secret")
    or die("Could not connect");
$sql = "SELECT CLOB_COLUMN FROM CLOB_TABLE;";
$rs = fbsql_query($sql, $link);
$row_data = fbsql_fetch_row($rs);
// $row_data[0] will now contain the clob data for the first row
fbsql_free_result($rs);

$rs = fbsql_query($sql, $link);
fbsql_set_lob_mode($rs, FBSQL_LOB_HANDLE);
$row_data = fbsql_fetch_row($rs);
// $row_data[0] will now contain a handle to the CLOB data in the first row
$clob_data = fbsql_read_clob($row_data[0]);
fbsql_free_result($rs);

?>

参见

  • fbsql_create_clob() - Create a CLOB
  • fbsql_read_blob() - Read a BLOB from the database
  • fbsql_set_lob_mode() - Set the LOB retrieve mode for a FrontBase result set

fbsql_read_blob
fbsql_result
FrontBase 函数


Get result data

fbsql_read_clob
fbsql_rollback
FrontBase 函数
PHP Manual

fbsql_result

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_result — Get result data

说明

mixed fbsql_result ( resource $result [, int $row [, mixed $field ]] )

Returns the contents of one cell from a FrontBase result set.

When working on large result sets, you should consider using one of the functions that fetch an entire row (specified below). As these functions return the contents of multiple cells in one function call, they're MUCH quicker than fbsql_result().

Calls to fbsql_result() should not be mixed with calls to other functions that deal with the result set.

参数

result

由 fbsql_query() 或 fbsql_db_query() 返回的结果标识符。

row

field

Can be the field's offset, or the field's name, or the field's table dot field's name (tablename.fieldname).

If the column name has been aliased ('select foo as bar from...'), use the alias instead of the column name.

Note:

Specifying a numeric offset for the field argument is much quicker than specifying a fieldname or tablename.fieldname argument.

返回值

参见

Recommended high-performance alternatives:

  • fbsql_fetch_row() - Get a result row as an enumerated array
  • fbsql_fetch_array() - Fetch a result row as an associative array, a numeric array, or both
  • fbsql_fetch_assoc() - Fetch a result row as an associative array
  • fbsql_fetch_object() - Fetch a result row as an object

fbsql_read_clob
fbsql_rollback
FrontBase 函数


Rollback a transaction to the database

fbsql_result
fbsql_rows_fetched
FrontBase 函数
PHP Manual

fbsql_rollback

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_rollback — Rollback a transaction to the database

说明

bool fbsql_rollback ([ resource $link_identifier ] )

Ends the current transaction by rolling back all statements issued since last commit.

This command is only needed if autocommit is set to false.

参数

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • fbsql_autocommit() - Enable or disable autocommit
  • fbsql_commit() - Commits a transaction to the database

fbsql_result
fbsql_rows_fetched
FrontBase 函数


Get the number of rows affected by the last statement

fbsql_rollback
fbsql_select_db
FrontBase 函数
PHP Manual

fbsql_rows_fetched

(PHP 5 >= 5.1.0, PHP 7)

fbsql_rows_fetched — Get the number of rows affected by the last statement

说明

int fbsql_rows_fetched ( resource $result )

Gets the number of rows affected by the last statement.

参数

result

由 fbsql_query() 或 fbsql_db_query() 返回的结果标识符。

返回值

Returns the number of rows, as an integer.

fbsql_rollback
fbsql_select_db
FrontBase 函数


Select a FrontBase database

fbsql_rows_fetched
fbsql_set_characterset
FrontBase 函数
PHP Manual

fbsql_select_db

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_select_db — Select a FrontBase database

说明

bool fbsql_select_db ([ string $database_name [, resource $link_identifier ]] )

Sets the current active database on the given link identifier.

The client contacts FBExec to obtain the port number to use for the connection to the database. If the database name is a number the system will use that as a port number and it will not ask FBExec for the port number. The FrontBase server can be stared as FRontBase -FBExec=No -port=<port number> <database name>.

Every subsequent call to fbsql_query() will be made on the active database.

参数

database_name

The name of the database to be selected.

If the database is protected with a database password, the you must call fbsql_database_password() before selecting the database.

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • fbsql_connect() - Open a connection to a FrontBase Server
  • fbsql_pconnect() - Open a persistent connection to a FrontBase Server
  • fbsql_database_password() - Sets or retrieves the password for a FrontBase database
  • fbsql_query() - Send a FrontBase query

fbsql_rows_fetched
fbsql_set_characterset
FrontBase 函数


Change input/output character set

fbsql_select_db
fbsql_set_lob_mode
FrontBase 函数
PHP Manual

fbsql_set_characterset

(PHP 5 >= 5.1.0, PHP 7)

fbsql_set_characterset — Change input/output character set

说明

void fbsql_set_characterset ( resource $link_identifier , int $characterset [, int $in_out_both ] )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

fbsql_select_db
fbsql_set_lob_mode
FrontBase 函数


Set the LOB retrieve mode for a FrontBase result set

fbsql_set_characterset
fbsql_set_password
FrontBase 函数
PHP Manual

fbsql_set_lob_mode

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

fbsql_set_lob_mode — Set the LOB retrieve mode for a FrontBase result set

说明

bool fbsql_set_lob_mode ( resource $result , int $lob_mode )

Sets the mode for retrieving LOB data from the database.

When BLOB and CLOB data is retrieved in FrontBase it can be retrieved direct or indirect. Direct retrieved LOB data will always be fetched no matter the setting of the lob mode. If the LOB data is less than 512 bytes it will always be retrieved directly.

参数

result

由 fbsql_query() 或 fbsql_db_query() 返回的结果标识符。

lob_mode

Can be one of:

  • FBSQL_LOB_DIRECT - LOB data is retrieved directly. When data is fetched from the database with fbsql_fetch_row(), and other fetch functions, all CLOB and BLOB columns will be returned as ordinary columns. This is the default value on a new FrontBase result.
  • FBSQL_LOB_HANDLE - LOB data is retrieved as handles to the data. When data is fetched from the database with fbsql_fetch_row(), and other fetch functions, LOB data will be returned as a handle to the data if the data is stored indirect or the data if it is stored direct. If a handle is returned it will be a 27 byte string formatted as @'000000000000000000000000'.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • fbsql_create_blob() - Create a BLOB
  • fbsql_create_clob() - Create a CLOB
  • fbsql_read_blob() - Read a BLOB from the database
  • fbsql_read_clob() - Read a CLOB from the database

fbsql_set_characterset
fbsql_set_password
FrontBase 函数


Change the password for a given user

fbsql_set_lob_mode
fbsql_set_transaction
FrontBase 函数
PHP Manual

fbsql_set_password

(PHP 5, PHP 7)

fbsql_set_password — Change the password for a given user

说明

bool fbsql_set_password ( resource $link_identifier , string $user , string $password , string $old_password )

Changes the password for the given user.

参数

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

user

The user name.

password

The new password to be set.

old_password

The old password to be replaced.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

fbsql_set_lob_mode
fbsql_set_transaction
FrontBase 函数


Set the transaction locking and isolation

fbsql_set_password
fbsql_start_db
FrontBase 函数
PHP Manual

fbsql_set_transaction

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

fbsql_set_transaction — Set the transaction locking and isolation

说明

void fbsql_set_transaction ( resource $link_identifier , int $locking , int $isolation )

Sets the transaction locking and isolation.

参数

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

locking

The type of locking to be set. It can be one of the following constants: FBSQL_LOCK_DEFERRED, FBSQL_LOCK_OPTIMISTIC, or FBSQL_LOCK_PESSIMISTIC.

isolation

The type of isolation to be set. It can be one of the following constants: FBSQL_ISO_READ_UNCOMMITTED, FBSQL_ISO_READ_COMMITTED, FBSQL_ISO_REPEATABLE_READ, FBSQL_ISO_SERIALIZABLE, or FBSQL_ISO_VERSIONED.

返回值

没有返回值。

fbsql_set_password
fbsql_start_db
FrontBase 函数


Start a database on local or remote server

fbsql_set_transaction
fbsql_stop_db
FrontBase 函数
PHP Manual

fbsql_start_db

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_start_db — Start a database on local or remote server

说明

bool fbsql_start_db ( string $database_name [, resource $link_identifier [, string $database_options ]] )

Start a database on local or remote server.

参数

database_name

The database name.

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

database_options

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • fbsql_db_status() - Get the status for a given database
  • fbsql_stop_db() - Stop a database on local or remote server

fbsql_set_transaction
fbsql_stop_db
FrontBase 函数


Stop a database on local or remote server

fbsql_start_db
fbsql_table_name
FrontBase 函数
PHP Manual

fbsql_stop_db

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_stop_db — Stop a database on local or remote server

说明

bool fbsql_stop_db ( string $database_name [, resource $link_identifier ] )

Stops a database on local or remote server.

参数

database_name

The database name.

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • fbsql_db_status() - Get the status for a given database
  • fbsql_start_db() - Start a database on local or remote server

fbsql_start_db
fbsql_table_name
FrontBase 函数


Get table name of field

fbsql_stop_db
fbsql_tablename
FrontBase 函数
PHP Manual

fbsql_table_name

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

fbsql_table_name — Get table name of field

说明

string fbsql_table_name ( resource $result , int $index )

fbsql_table_name() gets the name of the current table in the given result set.

The fbsql_num_rows() function may be used to determine the number of tables in the result pointer.

参数

result

A result pointer returned by fbsql_list_tables().

index

Integer index for the current table.

返回值

Returns the name of the table, as a string.

范例

Example #1 fbsql_table_name() example

<?php
fbsql_connect("localhost", "_SYSTEM", "");
$result = fbsql_list_tables("wisconsin");
$i = 0;
while ($i < fbsql_num_rows($result)) {
    $tb_names[$i] = fbsql_table_name($result, $i);
    echo $tb_names[$i] . "<br />";
    $i++;
}
?>

fbsql_stop_db
fbsql_tablename
FrontBase 函数


别名 fbsql_table_name

fbsql_table_name
fbsql_username
FrontBase 函数
PHP Manual

fbsql_tablename

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

fbsql_tablename — 别名 fbsql_table_name()

说明

此函数是该函数的别名： fbsql_table_name().

fbsql_table_name
fbsql_username
FrontBase 函数


Get or set the username for the connection

fbsql_tablename
fbsql_warnings
FrontBase 函数
PHP Manual

fbsql_username

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_username — Get or set the username for the connection

说明

string fbsql_username ( resource $link_identifier [, string $username ] )

Get or set the username used for the connection.

参数

link_identifier

由 fbsql_connect() 或 fbsql_pconnect() 返回的 FrontBase 链接标识符.

如可选并未指定，函数会尝试查找一个到 FrontBase 服务器的开放链接，且如没有找到这样的链接，会尝试通过不带参数调用 fbsql_connect() 来创建一个。

username

If provided, this is the new username to set.

返回值

Returns the current username used with the connection, as a string.

参见

  • fbsql_password() - Get or set the user password used with a connection
  • fbsql_hostname() - Get or set the host name used with a connection

fbsql_tablename
fbsql_warnings
FrontBase 函数


Enable or disable FrontBase warnings

fbsql_username
IBM DB2
FrontBase 函数
PHP Manual

fbsql_warnings

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

fbsql_warnings — Enable or disable FrontBase warnings

说明

bool fbsql_warnings ([ bool $OnOff ] )

Enables or disables FrontBase warnings.

参数

OnOff

Whether to enable warnings or no.

返回值

Returns TRUE if warnings is turned on, FALSE otherwise.

参见

  • fbsql_errno() - Returns the error number from previous operation
  • fbsql_error() - Returns the error message from previous operation

fbsql_username
IBM DB2
FrontBase 函数


IBM DB2, Cloudscape and Apache Derby

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • IBM DB2 函数
    • db2_autocommit — Returns or sets the AUTOCOMMIT state for a database connection
    • db2_bind_param — Binds a PHP variable to an SQL statement parameter
    • db2_client_info — Returns an object with properties that describe the DB2 database client
    • db2_close — Closes a database connection
    • db2_column_privileges — Returns a result set listing the columns and associated privileges for a table
    • db2_columns — Returns a result set listing the columns and associated metadata for a table
    • db2_commit — Commits a transaction
    • db2_conn_error — Returns a string containing the SQLSTATE returned by the last connection attempt
    • db2_conn_errormsg — Returns the last connection error message and SQLCODE value
    • db2_connect — Returns a connection to a database
    • db2_cursor_type — Returns the cursor type used by a statement resource
    • db2_escape_string — Used to escape certain characters
    • db2_exec — Executes an SQL statement directly
    • db2_execute — Executes a prepared SQL statement
    • db2_fetch_array — Returns an array, indexed by column position, representing a row in a result set
    • db2_fetch_assoc — Returns an array, indexed by column name, representing a row in a result set
    • db2_fetch_both — Returns an array, indexed by both column name and position, representing a row in a result set
    • db2_fetch_object — Returns an object with properties representing columns in the fetched row
    • db2_fetch_row — Sets the result set pointer to the next row or requested row
    • db2_field_display_size — Returns the maximum number of bytes required to display a column
    • db2_field_name — Returns the name of the column in the result set
    • db2_field_num — Returns the position of the named column in a result set
    • db2_field_precision — Returns the precision of the indicated column in a result set
    • db2_field_scale — Returns the scale of the indicated column in a result set
    • db2_field_type — Returns the data type of the indicated column in a result set
    • db2_field_width — Returns the width of the current value of the indicated column in a result set
    • db2_foreign_keys — Returns a result set listing the foreign keys for a table
    • db2_free_result — Frees resources associated with a result set
    • db2_free_stmt — Frees resources associated with the indicated statement resource
    • db2_get_option — Retrieves an option value for a statement resource or a connection resource
    • db2_last_insert_id — Returns the auto generated ID of the last insert query that successfully executed on this connection
    • db2_lob_read — Gets a user defined size of LOB files with each invocation
    • db2_next_result — Requests the next result set from a stored procedure
    • db2_num_fields — Returns the number of fields contained in a result set
    • db2_num_rows — Returns the number of rows affected by an SQL statement
    • db2_pclose — Closes a persistent database connection
    • db2_pconnect — Returns a persistent connection to a database
    • db2_prepare — Prepares an SQL statement to be executed
    • db2_primary_keys — Returns a result set listing primary keys for a table
    • db2_procedure_columns — Returns a result set listing stored procedure parameters
    • db2_procedures — Returns a result set listing the stored procedures registered in a database
    • db2_result — Returns a single column from a row in the result set
    • db2_rollback — Rolls back a transaction
    • db2_server_info — Returns an object with properties that describe the DB2 database server
    • db2_set_option — Set options for connection or statement resources
    • db2_special_columns — Returns a result set listing the unique row identifier columns for a table
    • db2_statistics — Returns a result set listing the index and statistics for a table
    • db2_stmt_error — Returns a string containing the SQLSTATE returned by an SQL statement
    • db2_stmt_errormsg — Returns a string containing the last SQL statement error message
    • db2_table_privileges — Returns a result set listing the tables and associated privileges in a database
    • db2_tables — Returns a result set listing the tables and associated metadata in a database
fbsql_warnings
简介
针对各数据库系统对应的扩展


简介

These functions enable you to access IBM DB2 Universal Database, IBM Cloudscape, and Apache Derby databases using the DB2 Call Level Interface (DB2 CLI).

IBM DB2
安装／配置
IBM DB2


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
IBM DB2


需求

To connect to IBM DB2 Universal Database for Linux, UNIX, and Windows, or IBM Cloudscape, or Apache Derby, you must install an IBM DB2 Universal Database client on the same computer on which you are running PHP. The extension has been developed and tested with DB2 Version 8.2.

To connect to IBM DB2 Universal Database for z/OS or iSeries, you also require IBM DB2 Connect or the equivalent DRDA gateway software.

Requirements on Linux or Unix

The user invoking the PHP executable or SAPI must specify the DB2 instance before accessing these functions. You can set the name of the DB2 instance in php.ini using the ibm_db2.instance_name configuration option, or you can source the DB2 instance profile before invoking the PHP executable.

If you created a DB2 instance named db2inst1 in /home/db2inst1/, for example, you can add the following line to php.ini:

ibm_db2.instance_name=db2inst1
If you do not set this option in php.ini, you must issue the following command to modify your environment variables to enable access to DB2:
bash$ source /home/db2inst1/sqllib/db2profile
To enable your PHP-enabled Web server to access these functions, you must either set the ibm_db2.instance_name configuration option in php.ini, or source the DB2 instance environment in your Web server start script (typically /etc/init.d/httpd or /etc/init.d/apache).

安装／配置
安装
安装／配置


安装

To build the ibm_db2 extension, the DB2 application development header files and libraries must be installed on your system. DB2 does not install these by default, so you may have to return to your DB2 installer and add this option. The header files are included with the DB2 Application Development Client freely available for download from the IBM DB2 Universal Database » support site.

If you add the DB2 application development header files and libraries to a Linux or Unix operating system on which DB2 was already installed, you must issue the command db2iupdt -e to update the symbolic links to the header files and libraries in your DB2 instances.

ibm_db2 is a » PECL extension, so follow the instructions in PECL 扩展库安装 to install the ibm_db2 extension for PHP. Issue the configure command to point to the location of your DB2 header files and libraries as follows:

bash$ ./configure --with-IBM_DB2=/path/to/DB2
The configure command defaults to /opt/IBM/db2/V8.1.

Note: Note for IIS users

If you are using the ibm_db2 driver with Microsoft Internet Information Server (IIS) you may have to do the following:

  • Install DB2 with extended operating system security.
  • Add the PHP binary path to the PATH system environment variable (default C:\php\).
  • Create another system environment variable equal to the path where the PHP.INI file is located (eg: PHPRC = C:\php\).
  • Add the IUSR_COMPUTERNAME to the DB2USERS group.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

ibm_db2 配置选项
名字 | 默认 | 可修改范围 | Changelog
ibm_db2.binmode | "1" | PHP_INI_ALL |
ibm_db2.i5_all_pconnect | "0" | PHP_INI_SYSTEM | Available since ibm_db2 1.6.5.
ibm_db2.i5_allow_commit | "0" | PHP_INI_SYSTEM | Available since ibm_db2 1.4.9.
ibm_db2.i5_dbcs_alloc | "0" | PHP_INI_SYSTEM | Available since ibm_db2 1.5.0.
ibm_db2.instance_name | NULL | PHP_INI_SYSTEM | Available since ibm_db2 1.0.2.
ibm_db2.i5_ignore_userid | "0" | PHP_INI_SYSTEM | Available since ibm_db2 1.8.0.

这是配置指令的简短说明。

ibm_db2.binmode integer

This option controls the mode used for converting to and from binary data in the PHP application.

  • 1 (DB2_BINARY)

  • 2 (DB2_CONVERT)

  • 3 (DB2_PASSTHRU)

ibm_db2.i5_all_pconnect integer

This option overrides i5 db2_connect() full open and close in the PHP application. When ibm_db2.i5_all_pconnect = 1, all db2 connections become persistent (db2_pconnect()). On i5/OS, db2_pconnect() performs dramatically better with lower machine stress over db2_connect(). This is a convenience override of db2_connect() to evoke db2_pconnect() without PHP source code changes.

  • 0 db2_connect() default full open and close

  • 1 db2_connect() override to db2_pconnect() for persistent connection only

ibm_db2.i5_allow_commit integer

This option controls the isolation mode used for i5 schema collections in the PHP application (see i5_commit for override).

  • 0 - commitment control is not used

  • 1 - read uncommitted, dirty reads possible.

  • 2 - read committed, dirty reads are not possible.

  • 3 - repeatable read, dirty reads and non-repeatable reads are not possible

  • 4 - serializeable, dirty reads, non-repeatable reads, and phantoms are not possible

ibm_db2.i5_dbcs_alloc integer

This option controls the internal ibm_db2 allocation scheme for large DBCS column buffers.

  • 0 no expanded allocations (see i5_dbcs_alloc for override)

  • 1 use expanded allocations (see i5_dbcs_alloc for override)

ibm_db2.instance_name string

On Linux and UNIX operating systems, this option defines the name of the instance to use for cataloged database connections. If this option is set, its value overrides the DB2INSTANCE environment variable setting.

This option is ignored on Windows operating systems.

ibm_db2.i5_ignore_userid integer

This option overrides i5 db2_(p)connect userid and password in the PHP application. When ibm_db2.i5_ignore_userid = 1, all db2 (p)connections become null userid and null password. Therefore Apache jobs connect with the current profile (NOBODY). Use of this override is only for simple DB2 based websites that never require profile switching and therefore can avoid all overhead of server mode additional QSQSRVR jobs. This is a convenience override of db2_(p)connect to set the userid and password values to null without PHP source code changes. This override can be used in combination with ibm_db2.i5_all_pconnect = 1.

  • 0 db2_(p)connect with specified userid and password

  • 1 db2_(p)connect override connect with null userid and null password

安装
资源类型
安装／配置


资源类型

The ibm_db2 extension returns connection resources, statement resources, and result set resources.

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

DB2_BINARY (integer)
Specifies that binary data shall be returned as is. This is the default mode.
DB2_CONVERT (integer)
Specifies that binary data shall be converted to a hexadecimal encoding and returned as an ASCII string.
DB2_PASSTHRU (integer)
Specifies that binary data shall be converted to a NULL value.
DB2_SCROLLABLE (integer)
Specifies a scrollable cursor for a statement resource. This mode enables random access to rows in a result set, but currently is supported only by IBM DB2 Universal Database.
DB2_FORWARD_ONLY (integer)
Specifies a forward-only cursor for a statement resource. This is the default cursor type and is supported on all database servers.
DB2_PARAM_IN (integer)
Specifies the PHP variable should be bound as an IN parameter for a stored procedure.
DB2_PARAM_OUT (integer)
Specifies the PHP variable should be bound as an OUT parameter for a stored procedure.
DB2_PARAM_INOUT (integer)
Specifies the PHP variable should be bound as an INOUT parameter for a stored procedure.
DB2_PARAM_FILE (integer)
Specifies that the column should be bound directly to a file for input.
DB2_AUTOCOMMIT_ON (integer)
Specifies that autocommit should be turned on.
DB2_AUTOCOMMIT_OFF (integer)
Specifies that autocommit should be turned off.
DB2_DOUBLE (integer)
Specifies that the variable should be bound as a DOUBLE, FLOAT, or REAL data type.
DB2_LONG (integer)
Specifies that the variable should be bound as a SMALLINT, INTEGER, or BIGINT data type.
DB2_CHAR (integer)
Specifies that the variable should be bound as a CHAR or VARCHAR data type.
DB2_CASE_NATURAL (integer)
Specifies that column names will be returned in their natural case.
DB2_CASE_LOWER (integer)
Specifies that column names will be returned in lower case.
DB2_CASE_UPPER (integer)
Specifies that column names will be returned in upper case.
DB2_DEFERRED_PREPARE_ON (integer)
Specifies that deferred prepare should be turned on for the specified statement resource.
DB2_DEFERRED_PREPARE_OFF (integer)
Specifies that deferred prepare should be turned off for the specified statement resource.
资源类型
IBM DB2 函数
IBM DB2


IBM DB2 函数

Table of Contents

  • db2_autocommit — Returns or sets the AUTOCOMMIT state for a database connection
  • db2_bind_param — Binds a PHP variable to an SQL statement parameter
  • db2_client_info — Returns an object with properties that describe the DB2 database client
  • db2_close — Closes a database connection
  • db2_column_privileges — Returns a result set listing the columns and associated privileges for a table
  • db2_columns — Returns a result set listing the columns and associated metadata for a table
  • db2_commit — Commits a transaction
  • db2_conn_error — Returns a string containing the SQLSTATE returned by the last connection attempt
  • db2_conn_errormsg — Returns the last connection error message and SQLCODE value
  • db2_connect — Returns a connection to a database
  • db2_cursor_type — Returns the cursor type used by a statement resource
  • db2_escape_string — Used to escape certain characters
  • db2_exec — Executes an SQL statement directly
  • db2_execute — Executes a prepared SQL statement
  • db2_fetch_array — Returns an array, indexed by column position, representing a row in a result set
  • db2_fetch_assoc — Returns an array, indexed by column name, representing a row in a result set
  • db2_fetch_both — Returns an array, indexed by both column name and position, representing a row in a result set
  • db2_fetch_object — Returns an object with properties representing columns in the fetched row
  • db2_fetch_row — Sets the result set pointer to the next row or requested row
  • db2_field_display_size — Returns the maximum number of bytes required to display a column
  • db2_field_name — Returns the name of the column in the result set
  • db2_field_num — Returns the position of the named column in a result set
  • db2_field_precision — Returns the precision of the indicated column in a result set
  • db2_field_scale — Returns the scale of the indicated column in a result set
  • db2_field_type — Returns the data type of the indicated column in a result set
  • db2_field_width — Returns the width of the current value of the indicated column in a result set
  • db2_foreign_keys — Returns a result set listing the foreign keys for a table
  • db2_free_result — Frees resources associated with a result set
  • db2_free_stmt — Frees resources associated with the indicated statement resource
  • db2_get_option — Retrieves an option value for a statement resource or a connection resource
  • db2_last_insert_id — Returns the auto generated ID of the last insert query that successfully executed on this connection
  • db2_lob_read — Gets a user defined size of LOB files with each invocation
  • db2_next_result — Requests the next result set from a stored procedure
  • db2_num_fields — Returns the number of fields contained in a result set
  • db2_num_rows — Returns the number of rows affected by an SQL statement
  • db2_pclose — Closes a persistent database connection
  • db2_pconnect — Returns a persistent connection to a database
  • db2_prepare — Prepares an SQL statement to be executed
  • db2_primary_keys — Returns a result set listing primary keys for a table
  • db2_procedure_columns — Returns a result set listing stored procedure parameters
  • db2_procedures — Returns a result set listing the stored procedures registered in a database
  • db2_result — Returns a single column from a row in the result set
  • db2_rollback — Rolls back a transaction
  • db2_server_info — Returns an object with properties that describe the DB2 database server
  • db2_set_option — Set options for connection or statement resources
  • db2_special_columns — Returns a result set listing the unique row identifier columns for a table
  • db2_statistics — Returns a result set listing the index and statistics for a table
  • db2_stmt_error — Returns a string containing the SQLSTATE returned by an SQL statement
  • db2_stmt_errormsg — Returns a string containing the last SQL statement error message
  • db2_table_privileges — Returns a result set listing the tables and associated privileges in a database
  • db2_tables — Returns a result set listing the tables and associated metadata in a database
预定义常量
db2_autocommit
IBM DB2


Returns or sets the AUTOCOMMIT state for a database connection

IBM DB2 函数
db2_bind_param
IBM DB2 函数
PHP Manual

db2_autocommit

(PECL ibm_db2 >= 1.0.0)

db2_autocommit — Returns or sets the AUTOCOMMIT state for a database connection

说明

mixed db2_autocommit ( resource $connection [, bool $value ] )

Sets or gets the AUTOCOMMIT behavior of the specified connection resource.

参数

connection

A valid database connection resource variable as returned from db2_connect() or db2_pconnect().

value

One of the following constants:

DB2_AUTOCOMMIT_OFF

Turns AUTOCOMMIT off.

DB2_AUTOCOMMIT_ON

Turns AUTOCOMMIT on.

返回值

When db2_autocommit() receives only the connection parameter, it returns the current state of AUTOCOMMIT for the requested connection as an integer value. A value of 0 indicates that AUTOCOMMIT is off, while a value of 1 indicates that AUTOCOMMIT is on.

When db2_autocommit() receives both the connection parameter and autocommit parameter, it attempts to set the AUTOCOMMIT state of the requested connection to the corresponding state. 成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Retrieving the AUTOCOMMIT value for a connection

In the following example, a connection which has been created with AUTOCOMMIT turned off is tested with the db2_autocommit() function.

<?php
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF);
$conn = db2_connect($database, $user, $password, $options);
$ac = db2_autocommit($conn);
if ($ac == 0) {
    print "$ac -- AUTOCOMMIT is off.";
} else {
    print "$ac -- AUTOCOMMIT is on.";
}
?>

以上例程会输出：

0 -- AUTOCOMMIT is off.

Example #2 Setting the AUTOCOMMIT value for a connection

In the following example, a connection which was initially created with AUTOCOMMIT turned off has its behavior changed to turn AUTOCOMMIT on.

<?php
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF);
$conn = db2_connect($database, $user, $password, $options);

// Turn AUTOCOMMIT on
$rc = db2_autocommit($conn, DB2_AUTOCOMMIT_ON);
if ($rc) {
    print "Turning AUTOCOMMIT on succeeded.\n";
}

// Check AUTOCOMMIT state
$ac = db2_autocommit($conn);
if ($ac == 0) {
    print "$ac -- AUTOCOMMIT is off.";
} else {
    print "$ac -- AUTOCOMMIT is on.";
}
?>

以上例程会输出：

Turning AUTOCOMMIT on succeeded.
1 -- AUTOCOMMIT is on.

参见

  • db2_connect() - Returns a connection to a database
  • db2_pconnect() - Returns a persistent connection to a database

IBM DB2 函数
db2_bind_param
IBM DB2 函数


Binds a PHP variable to an SQL statement parameter

db2_autocommit
db2_client_info
IBM DB2 函数
PHP Manual

db2_bind_param

(PECL ibm_db2 >= 1.0.0)

db2_bind_param — Binds a PHP variable to an SQL statement parameter

说明

bool db2_bind_param ( resource $stmt , int $parameter-number , string $variable-name [, int $parameter-type [, int $data-type = 0 [, int $precision = -1 [, int $scale = 0 ]]]] )

Binds a PHP variable to an SQL statement parameter in a statement resource returned by db2_prepare(). This function gives you more control over the parameter type, data type, precision, and scale for the parameter than simply passing the variable as part of the optional input array to db2_execute().

参数

stmt

A prepared statement returned from db2_prepare().

parameter-number

Specifies the 1-indexed position of the parameter in the prepared statement.

variable-name

A string specifying the name of the PHP variable to bind to the parameter specified by parameter-number.

parameter-type

A constant specifying whether the PHP variable should be bound to the SQL parameter as an input parameter (DB2_PARAM_IN), an output parameter (DB2_PARAM_OUT), or as a parameter that accepts input and returns output (DB2_PARAM_INOUT). To avoid memory overhead, you can also specify DB2_PARAM_FILE to bind the PHP variable to the name of a file that contains large object (BLOB, CLOB, or DBCLOB) data.

data-type

A constant specifying the SQL data type that the PHP variable should be bound as: one of DB2_BINARY, DB2_CHAR, DB2_DOUBLE, or DB2_LONG .

precision

Specifies the precision with which the variable should be bound to the database. This parameter can also be used for retrieving XML output values from stored procedures. A non-negative value specifies the maximum size of the XML data that will be retrieved from the database. If this parameter is not used, a default of 1MB will be assumed for retrieving the XML output value from the stored procedure.

scale

Specifies the scale with which the variable should be bound to the database.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Binding PHP variables to a prepared statement

The SQL statement in the following example uses two input parameters in the WHERE clause. We call db2_bind_param() to bind two PHP variables to the corresponding SQL parameters. Notice that the PHP variables do not have to be declared or assigned before the call to db2_bind_param(); in the example, $lower_limit is assigned a value before the call to db2_bind_param(), but $upper_limit is assigned a value after the call to db2_bind_param(). The variables must be bound and, for parameters that accept input, must have any value assigned, before calling db2_execute().

<?php

$sql = 'SELECT name, breed, weight FROM animals
    WHERE weight > ? AND weight < ?';
$conn = db2_connect($database, $user, $password);
$stmt = db2_prepare($conn, $sql);

// We can declare the variable before calling db2_bind_param()
$lower_limit = 1;

db2_bind_param($stmt, 1, "lower_limit", DB2_PARAM_IN);
db2_bind_param($stmt, 2, "upper_limit", DB2_PARAM_IN);

// We can also declare the variable after calling db2_bind_param()
$upper_limit = 15.0;

if (db2_execute($stmt)) {
    while ($row = db2_fetch_array($stmt)) {
        print "{$row[0]}, {$row[1]}, {$row[2]}\n";
    }
}
?>

以上例程会输出：

Pook, cat, 3.2
Rickety Ride, goat, 9.7
Peaches, dog, 12.3

Example #2 Calling stored procedures with IN and OUT parameters

The stored procedure match_animal in the following example accepts three different parameters:

  1. an input (IN) parameter that accepts the name of the first animal as input

  2. an input-output (INOUT) parameter that accepts the name of the second animal as input and returns the string TRUE if an animal in the database matches that name

  3. an output (OUT) parameter that returns the sum of the weight of the two identified animals

In addition, the stored procedure returns a result set consisting of the animals listed in alphabetic order starting at the animal corresponding to the input value of the first parameter and ending at the animal corresponding to the input value of the second parameter.

<?php

$sql = 'CALL match_animal(?, ?, ?)';
$conn = db2_connect($database, $user, $password);
$stmt = db2_prepare($conn, $sql);

$name = "Peaches";
$second_name = "Rickety Ride";
$weight = 0;

db2_bind_param($stmt, 1, "name", DB2_PARAM_IN);
db2_bind_param($stmt, 2, "second_name", DB2_PARAM_INOUT);
db2_bind_param($stmt, 3, "weight", DB2_PARAM_OUT);

print "Values of bound parameters _before_ CALL:\n";
print "  1: {$name} 2: {$second_name} 3: {$weight}\n\n";

if (db2_execute($stmt)) {
    print "Values of bound parameters _after_ CALL:\n";
    print "  1: {$name} 2: {$second_name} 3: {$weight}\n\n";

    print "Results:\n";
    while ($row = db2_fetch_array($stmt)) {
        print "  {$row[0]}, {$row[1]}, {$row[2]}\n";
    }
}
?>

以上例程会输出：

Values of bound parameters _before_ CALL:
  1: Peaches 2: Rickety Ride 3: 0

Values of bound parameters _after_ CALL:
  1: Peaches 2: TRUE 3: 22

Results:
  Peaches, dog, 12.3
  Pook, cat, 3.2
  Rickety Ride, goat, 9.7

Example #3 Inserting a binary large object (BLOB) directly from a file

The data for large objects are typically stored in files, such as XML documents or audio files. Rather than reading an entire file into a PHP variable, and then binding that PHP variable into an SQL statement, you can avoid some memory overhead by binding the file directly to the input parameter of your SQL statement. The following example demonstrates how to bind a file directly into a BLOB column.

<?php
$stmt = db2_prepare($conn, "INSERT INTO animal_pictures(picture) VALUES (?)");

$picture = "/opt/albums/spook/grooming.jpg";
$rc = db2_bind_param($stmt, 1, "picture", DB2_PARAM_FILE);
$rc = db2_execute($stmt);
?>

参见

  • db2_execute() - Executes a prepared SQL statement
  • db2_prepare() - Prepares an SQL statement to be executed

db2_autocommit
db2_client_info
IBM DB2 函数


Returns an object with properties that describe the DB2 database client

db2_bind_param
db2_close
IBM DB2 函数
PHP Manual

db2_client_info

(PECL ibm_db2 >= 1.1.1)

db2_client_info — Returns an object with properties that describe the DB2 database client

说明

object db2_client_info ( resource $connection )

This function returns an object with read-only properties that return information about the DB2 database client. The following table lists the DB2 client properties:

DB2 client properties
Property name | Return type | Description
APPL_CODEPAGE | int | The application code page.
CONN_CODEPAGE | int | The code page for the current connection.
DATA_SOURCE_NAME | string | The data source name (DSN) used to create the current connection to the database.
DRIVER_NAME | string | The name of the library that implements the DB2 Call Level Interface (CLI) specification.
DRIVER_ODBC_VER | string | The version of ODBC that the DB2 client supports. This returns a string "MM.mm" where MM is the major version and mm is the minor version. The DB2 client always returns "03.51".
DRIVER_VER | string | The version of the client, in the form of a string "MM.mm.uuuu" where MM is the major version, mm is the minor version, and uuuu is the update. For example, "08.02.0001" represents major version 8, minor version 2, update 1.
ODBC_SQL_CONFORMANCE string

The level of ODBC SQL grammar supported by the client:

MINIMUM

Supports the minimum ODBC SQL grammar.

CORE

Supports the core ODBC SQL grammar.

EXTENDED

Supports extended ODBC SQL grammar.

ODBC_VER | string | The version of ODBC that the ODBC driver manager supports. This returns a string "MM.mm.rrrr" where MM is the major version, mm is the minor version, and rrrr is the release. The DB2 client always returns "03.01.0000".

参数

connection

Specifies an active DB2 client connection.

返回值

Returns an object on a successful call. Returns FALSE on failure.

范例

Example #1 A db2_client_info() example

To retrieve information about the client, you must pass a valid database connection resource to db2_client_info().

<?php
$conn = db2_connect( 'SAMPLE', 'db2inst1', 'ibmdb2' );
$client = db2_client_info( $conn );

if ($client) {
    echo "DRIVER_NAME: ";           var_dump( $client->DRIVER_NAME );
    echo "DRIVER_VER: ";            var_dump( $client->DRIVER_VER );
    echo "DATA_SOURCE_NAME: ";      var_dump( $client->DATA_SOURCE_NAME );
    echo "DRIVER_ODBC_VER: ";       var_dump( $client->DRIVER_ODBC_VER );
    echo "ODBC_VER: ";              var_dump( $client->ODBC_VER );
    echo "ODBC_SQL_CONFORMANCE: ";  var_dump( $client->ODBC_SQL_CONFORMANCE );
    echo "APPL_CODEPAGE: ";         var_dump( $client->APPL_CODEPAGE );
    echo "CONN_CODEPAGE: ";         var_dump( $client->CONN_CODEPAGE );
}
else {
    echo "Error retrieving client information.
     Perhaps your database connection was invalid.";
}
db2_close($conn);

?>

以上例程会输出：

DRIVER_NAME: string(8) "libdb2.a"
DRIVER_VER: string(10) "08.02.0001"
DATA_SOURCE_NAME: string(6) "SAMPLE"
DRIVER_ODBC_VER: string(5) "03.51"
ODBC_VER: string(10) "03.01.0000"
ODBC_SQL_CONFORMANCE: string(8) "EXTENDED"
APPL_CODEPAGE: int(819)
CONN_CODEPAGE: int(819)

参见

  • db2_server_info() - Returns an object with properties that describe the DB2 database server

db2_bind_param
db2_close
IBM DB2 函数


Closes a database connection

db2_client_info
db2_column_privileges
IBM DB2 函数
PHP Manual

db2_close

(PECL ibm_db2 >= 1.0.0)

db2_close — Closes a database connection

说明

bool db2_close ( resource $connection )

This function closes a DB2 client connection created with db2_connect() and returns the corresponding resources to the database server.

If you attempt to close a persistent DB2 client connection created with db2_pconnect(), the close request is ignored and the persistent DB2 client connection remains available for the next caller.

参数

connection

Specifies an active DB2 client connection.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Closing a connection

The following example demonstrates a successful attempt to close a connection to an IBM DB2, Cloudscape, or Apache Derby database.

<?php
$conn = db2_connect('SAMPLE', 'db2inst1', 'ibmdb2');
$rc = db2_close($conn);
if ($rc) {
    echo "Connection was successfully closed.";
}
?>

以上例程会输出：

Connection was successfully closed.

参见

  • db2_connect() - Returns a connection to a database
  • db2_pclose() - Closes a persistent database connection
  • db2_pconnect() - Returns a persistent connection to a database

db2_client_info
db2_column_privileges
IBM DB2 函数


Returns a result set listing the columns and associated privileges for a table

db2_close
db2_columns
IBM DB2 函数
PHP Manual

db2_column_privileges

(PECL ibm_db2 >= 1.0.0)

db2_column_privileges — Returns a result set listing the columns and associated privileges for a table

说明

resource db2_column_privileges ( resource $connection [, string $qualifier [, string $schema [, string $table-name [, string $column-name ]]]] )

Returns a result set listing the columns and associated privileges for a table.

参数

connection

A valid connection to an IBM DB2, Cloudscape, or Apache Derby database.

qualifier

A qualifier for DB2 databases running on OS/390 or z/OS servers. For other databases, pass NULL or an empty string.

schema

The schema which contains the tables. To match all schemas, pass NULL or an empty string.

table-name

The name of the table or view. To match all tables in the database, pass NULL or an empty string.

column-name

The name of the column. To match all columns in the table, pass NULL or an empty string.

返回值

Returns a statement resource with a result set containing rows describing the column privileges for columns matching the specified parameters. The rows are composed of the following columns:

Column name | Description
TABLE_CAT | Name of the catalog. The value is NULL if this table does not have catalogs.
TABLE_SCHEM | Name of the schema.
TABLE_NAME | Name of the table or view.
COLUMN_NAME | Name of the column.
GRANTOR | Authorization ID of the user who granted the privilege.
GRANTEE | Authorization ID of the user to whom the privilege was granted.
PRIVILEGE | The privilege for the column.
IS_GRANTABLE | Whether the GRANTEE is permitted to grant this privilege to other users.

参见

  • db2_columns() - Returns a result set listing the columns and associated metadata for a table
  • db2_foreign_keys() - Returns a result set listing the foreign keys for a table
  • db2_primary_keys() - Returns a result set listing primary keys for a table
  • db2_procedure_columns() - Returns a result set listing stored procedure parameters
  • db2_procedures() - Returns a result set listing the stored procedures registered in a database
  • db2_special_columns() - Returns a result set listing the unique row identifier columns for a table
  • db2_statistics() - Returns a result set listing the index and statistics for a table
  • db2_table_privileges() - Returns a result set listing the tables and associated privileges in a database
  • db2_tables() - Returns a result set listing the tables and associated metadata in a database

db2_close
db2_columns
IBM DB2 函数


Returns a result set listing the columns and associated metadata for a table

db2_column_privileges
db2_commit
IBM DB2 函数
PHP Manual

db2_columns

(PECL ibm_db2 >= 1.0.0)

db2_columns — Returns a result set listing the columns and associated metadata for a table

说明

resource db2_columns ( resource $connection [, string $qualifier [, string $schema [, string $table-name [, string $column-name ]]]] )

Returns a result set listing the columns and associated metadata for a table.

参数

connection

A valid connection to an IBM DB2, Cloudscape, or Apache Derby database.

qualifier

A qualifier for DB2 databases running on OS/390 or z/OS servers. For other databases, pass NULL or an empty string.

schema

The schema which contains the tables. To match all schemas, pass '%'.

table-name

The name of the table or view. To match all tables in the database, pass NULL or an empty string.

column-name

The name of the column. To match all columns in the table, pass NULL or an empty string.

返回值

Returns a statement resource with a result set containing rows describing the columns matching the specified parameters. The rows are composed of the following columns:

Column name | Description
TABLE_CAT | Name of the catalog. The value is NULL if this table does not have catalogs.
TABLE_SCHEM | Name of the schema.
TABLE_NAME | Name of the table or view.
COLUMN_NAME | Name of the column.
DATA_TYPE | The SQL data type for the column represented as an integer value.
TYPE_NAME | A string representing the data type for the column.
COLUMN_SIZE | An integer value representing the size of the column.
BUFFER_LENGTH | Maximum number of bytes necessary to store data from this column.
DECIMAL_DIGITS | The scale of the column, or NULL where scale is not applicable.
NUM_PREC_RADIX | An integer value of either 10 (representing an exact numeric data type), 2 (representing an approximate numeric data type), or NULL (representing a data type for which radix is not applicable).
NULLABLE | An integer value representing whether the column is nullable or not.
REMARKS | Description of the column.
COLUMN_DEF | Default value for the column.
SQL_DATA_TYPE | An integer value representing the size of the column.
SQL_DATETIME_SUB | Returns an integer value representing a datetime subtype code, or NULL for SQL data types to which this does not apply.
CHAR_OCTET_LENGTH | Maximum length in octets for a character data type column, which matches COLUMN_SIZE for single-byte character set data, or NULL for non-character data types.
ORDINAL_POSITION | The 1-indexed position of the column in the table.
IS_NULLABLE | A string value where 'YES' means that the column is nullable and 'NO' means that the column is not nullable.

参见

  • db2_column_privileges() - Returns a result set listing the columns and associated privileges for a table
  • db2_foreign_keys() - Returns a result set listing the foreign keys for a table
  • db2_primary_keys() - Returns a result set listing primary keys for a table
  • db2_procedure_columns() - Returns a result set listing stored procedure parameters
  • db2_procedures() - Returns a result set listing the stored procedures registered in a database
  • db2_special_columns() - Returns a result set listing the unique row identifier columns for a table
  • db2_statistics() - Returns a result set listing the index and statistics for a table
  • db2_table_privileges() - Returns a result set listing the tables and associated privileges in a database
  • db2_tables() - Returns a result set listing the tables and associated metadata in a database

db2_column_privileges
db2_commit
IBM DB2 函数


Commits a transaction

db2_columns
db2_conn_error
IBM DB2 函数
PHP Manual

db2_commit

(PECL ibm_db2 >= 1.0.0)

db2_commit — Commits a transaction

说明

bool db2_commit ( resource $connection )

Commits an in-progress transaction on the specified connection resource and begins a new transaction. PHP applications normally default to AUTOCOMMIT mode, so db2_commit() is not necessary unless AUTOCOMMIT has been turned off for the connection resource.

参数

connection

A valid database connection resource variable as returned from db2_connect() or db2_pconnect().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • db2_autocommit() - Returns or sets the AUTOCOMMIT state for a database connection
  • db2_rollback() - Rolls back a transaction

db2_columns
db2_conn_error
IBM DB2 函数


Returns a string containing the SQLSTATE returned by the last connection attempt

db2_commit
db2_conn_errormsg
IBM DB2 函数
PHP Manual

db2_conn_error

(PECL ibm_db2 >= 1.0.0)

db2_conn_error — Returns a string containing the SQLSTATE returned by the last connection attempt

说明

string db2_conn_error ([ resource $connection ] )

db2_conn_error() returns an SQLSTATE value representing the reason the last attempt to connect to a database failed. As db2_connect() returns FALSE in the event of a failed connection attempt, you do not pass any parameters to db2_conn_error() to retrieve the SQLSTATE value.

If, however, the connection was successful but becomes invalid over time, you can pass the connection parameter to retrieve the SQLSTATE value for a specific connection.

To learn what the SQLSTATE value means, you can issue the following command at a DB2 Command Line Processor prompt: db2 '? sqlstate-value'. You can also call db2_conn_errormsg() to retrieve an explicit error message and the associated SQLCODE value.

参数

connection

A connection resource associated with a connection that initially succeeded, but which over time became invalid.

返回值

Returns the SQLSTATE value resulting from a failed connection attempt. Returns an empty string if there is no error associated with the last connection attempt.

范例

Example #1 Retrieving an SQLSTATE value for a failed connection attempt

The following example demonstrates how to return an SQLSTATE value after deliberately passing invalid parameters to db2_connect().

<?php
$conn = db2_connect('badname', 'baduser', 'badpassword');
if (!$conn) {
    print "SQLSTATE value: " . db2_conn_error();
}
?>

以上例程会输出：

SQLSTATE value: 08001

参见

  • db2_conn_errormsg() - Returns the last connection error message and SQLCODE value
  • db2_connect() - Returns a connection to a database
  • db2_stmt_error() - Returns a string containing the SQLSTATE returned by an SQL statement
  • db2_stmt_errormsg() - Returns a string containing the last SQL statement error message

db2_commit
db2_conn_errormsg
IBM DB2 函数


Returns the last connection error message and SQLCODE value

db2_conn_error
db2_connect
IBM DB2 函数
PHP Manual

db2_conn_errormsg

(PECL ibm_db2 >= 1.0.0)

db2_conn_errormsg — Returns the last connection error message and SQLCODE value

说明

string db2_conn_errormsg ([ resource $connection ] )

db2_conn_errormsg() returns an error message and SQLCODE value representing the reason the last database connection attempt failed. As db2_connect() returns FALSE in the event of a failed connection attempt, do not pass any parameters to db2_conn_errormsg() to retrieve the associated error message and SQLCODE value.

If, however, the connection was successful but becomes invalid over time, you can pass the connection parameter to retrieve the associated error message and SQLCODE value for a specific connection.

参数

connection

A connection resource associated with a connection that initially succeeded, but which over time became invalid.

返回值

Returns a string containing the error message and SQLCODE value resulting from a failed connection attempt. If there is no error associated with the last connection attempt, db2_conn_errormsg() returns an empty string.

范例

Example #1 Retrieving the error message returned by a failed connection attempt

The following example demonstrates how to return an error message and SQLCODE value after deliberately passing invalid parameters to db2_connect().

<?php
$conn = db2_connect('badname', 'baduser', 'badpassword');
if (!$conn) {
    print db2_conn_errormsg();
}
?>

以上例程会输出：

[IBM][CLI Driver] SQL1013N  The database alias name
or database name "BADNAME" could not be found.  SQLSTATE=42705
 SQLCODE=-1013

参见

  • db2_conn_error() - Returns a string containing the SQLSTATE returned by the last connection attempt
  • db2_connect() - Returns a connection to a database
  • db2_stmt_error() - Returns a string containing the SQLSTATE returned by an SQL statement
  • db2_stmt_errormsg() - Returns a string containing the last SQL statement error message

db2_conn_error
db2_connect
IBM DB2 函数


Returns a connection to a database

db2_conn_errormsg
db2_cursor_type
IBM DB2 函数
PHP Manual

db2_connect

(PECL ibm_db2 >= 1.0.0)

db2_connect — Returns a connection to a database

说明

resource db2_connect ( string $database , string $username , string $password [, array $options ] )

Creates a new connection to an IBM DB2 Universal Database, IBM Cloudscape, or Apache Derby database.

参数

database

For a cataloged connection to a database, database represents the database alias in the DB2 client catalog.

For an uncataloged connection to a database, database represents a complete connection string in the following format:

DATABASE=database;HOSTNAME=hostname;PORT=port;PROTOCOL=TCPIP;UID=username;PWD=password;
where the parameters represent the following values:
database

The name of the database.

hostname

The hostname or IP address of the database server.

port

The TCP/IP port on which the database is listening for requests.

username

The username with which you are connecting to the database.

password

The password with which you are connecting to the database.

username

The username with which you are connecting to the database.

For uncataloged connections, you must pass a NULL value or empty string.

password

The password with which you are connecting to the database.

For uncataloged connections, you must pass a NULL value or empty string.

options

An associative array of connection options that affect the behavior of the connection, where valid array keys include:

autocommit

Passing the DB2_AUTOCOMMIT_ON value turns autocommit on for this connection handle.

Passing the DB2_AUTOCOMMIT_OFF value turns autocommit off for this connection handle.

DB2_ATTR_CASE

Passing the DB2_CASE_NATURAL value specifies that column names are returned in natural case.

Passing the DB2_CASE_LOWER value specifies that column names are returned in lower case.

Passing the DB2_CASE_UPPER value specifies that column names are returned in upper case.

CURSOR

Passing the DB2_FORWARD_ONLY value specifies a forward-only cursor for a statement resource. This is the default cursor type and is supported on all database servers.

Passing the DB2_SCROLLABLE value specifies a scrollable cursor for a statement resource. This mode enables random access to rows in a result set, but currently is supported only by IBM DB2 Universal Database.

The following new option is available in ibm_db2 version 1.7.0 and later.

trustedcontext

Passing the DB2_TRUSTED_CONTEXT_ENABLE value turns trusted context on for this connection handle. This parameter cannot be set using db2_set_option().

This key works only if the database is cataloged (even if the database is local), or if you specify the full DSN when you create the connection.

To catalog the database, use following commands:

db2 catalog tcpip node loopback remote <SERVERNAME> server <SERVICENAME>
db2 catalog database <LOCALDBNAME> as <REMOTEDBNAME> at node loopback
db2 "update dbm cfg using svcename <SERVICENAME>"
db2set DB2COMM=TCPIP

The following new i5/OS options are available in ibm_db2 version 1.5.1 and later.

i5_lib

A character value that indicates the default library that will be used for resolving unqualified file references. This is not valid if the connection is using system naming mode.

i5_naming

DB2_I5_NAMING_ON value turns on DB2 UDB CLI iSeries system naming mode. Files are qualified using the slash (/) delimiter. Unqualified files are resolved using the library list for the job.

DB2_I5_NAMING_OFF value turns off DB2 UDB CLI default naming mode, which is SQL naming. Files are qualified using the period (.) delimiter. Unqualified files are resolved using either the default library or the current user ID.

i5_commit

The i5_commit attribute should be set before the db2_connect(). If the value is changed after the connection has been established, and the connection is to a remote data source, the change does not take effect until the next successful db2_connect() for the connection handle.

Note:

The php.ini setting ibm_db2.i5_allow_commit==0 or DB2_I5_TXN_NO_COMMIT is the default, but may be overridden with the i5_commit option.

DB2_I5_TXN_NO_COMMIT - Commitment control is not used.

DB2_I5_TXN_READ_UNCOMMITTED - Dirty reads, nonrepeatable reads, and phantoms are possible.

DB2_I5_TXN_READ_COMMITTED - Dirty reads are not possible. Nonrepeatable reads, and phantoms are possible.

DB2_I5_TXN_REPEATABLE_READ - Dirty reads and nonrepeatable reads are not possible. Phantoms are possible.

DB2_I5_TXN_SERIALIZABLE - Transactions are serializable. Dirty reads, non-repeatable reads, and phantoms are not possible

i5_query_optimize

DB2_FIRST_IO All queries are optimized with the goal of returning the first page of output as fast as possible. This goal works well when the output is controlled by a user who is most likely to cancel the query after viewing the first page of output data. Queries coded with an OPTIMIZE FOR nnn ROWS clause honor the goal specified by the clause.

DB2_ALL_IO All queries are optimized with the goal of running the entire query to completion in the shortest amount of elapsed time. This is a good option when the output of a query is being written to a file or report, or the interface is queuing the output data. Queries coded with an OPTIMIZE FOR nnn ROWS clause honor the goal specified by the clause. This is the default.

i5_dbcs_alloc

DB2_I5_DBCS_ALLOC_ON value turns on DB2 6X allocation scheme for DBCS translation column size growth.

DB2_I5_DBCS_ALLOC_OFF value turns off DB2 6X allocation scheme for DBCS translation column size growth.

Note: php.ini setting ibm_db2.i5_dbcs_alloc==0 or DB2_I5_DBCS_ALLOC_OFF is the default, but may be overridden with the i5_dbcs_alloc option.

i5_date_fmt

DB2_I5_FMT_ISO - The International Organization for Standardization (ISO) date format yyyy-mm-dd is used. This is the default.

DB2_I5_FMT_USA - The United States date format mm/dd/yyyy is used.

DB2_I5_FMT_EUR - The European date format dd.mm.yyyy is used.

DB2_I5_FMT_JIS - The Japanese Industrial Standard date format yyyy-mm-dd is used.

DB2_I5_FMT_MDY - The date format mm/dd/yyyy is used.

DB2_I5_FMT_DMY - The date format dd/mm/yyyy is used.

DB2_I5_FMT_YMD - The date format yy/mm/dd is used.

DB2_I5_FMT_JUL - The Julian date format yy/ddd is used.

DB2_I5_FMT_JOB - The job default is used.

i5_date_sep

DB2_I5_SEP_SLASH - A slash ( / ) is used as the date separator. This is the default.

DB2_I5_SEP_DASH - A dash ( - ) is used as the date separator.

DB2_I5_SEP_PERIOD - A period ( . ) is used as the date separator.

DB2_I5_SEP_COMMA - A comma ( , ) is used as the date separator.

DB2_I5_SEP_BLANK - A blank is used as the date separator.

DB2_I5_SEP_JOB - The job default is used

i5_time_fmt

DB2_I5_FMT_ISO - The International Organization for Standardization (ISO) time format hh.mm.ss is used. This is the default.

DB2_I5_FMT_USA - The United States time format hh:mmxx is used, where xx is AM or PM.

DB2_I5_FMT_EUR - The European time format hh.mm.ss is used.

DB2_I5_FMT_JIS - The Japanese Industrial Standard time format hh:mm:ss is used.

DB2_I5_FMT_HMS - The hh:mm:ss format is used.

i5_time_sep

DB2_I5_SEP_COLON - A colon ( : ) is used as the time separator. This is the default.

DB2_I5_SEP_PERIOD - A period ( . ) is used as the time separator.

DB2_I5_SEP_COMMA - A comma ( , ) is used as the time separator.

DB2_I5_SEP_BLANK - A blank is used as the time separator.

DB2_I5_SEP_JOB - The job default is used.

i5_decimal_sep

DB2_I5_SEP_PERIOD - A period ( . ) is used as the decimal separator. This is the default.

DB2_I5_SEP_COMMA - A comma ( , ) is used as the decimal separator.

DB2_I5_SEP_JOB - The job default is used.

The following new i5/OS option is available in ibm_db2 version 1.8.0 and later.

i5_libl

A character value that indicates the library list that will be used for resolving unqualified file references. Specify the library list elements separated by blanks 'i5_libl'=>"MYLIB YOURLIB ANYLIB".

Note:

i5_libl calls qsys2/qcmdexc('cmd',cmdlen), which is only available in i5/OS V5R4 and later.

返回值

Returns a connection handle resource if the connection attempt is successful. If the connection attempt fails, db2_connect() returns FALSE.

范例

Example #1 Creating a cataloged connection

Cataloged connections require you to have previously cataloged the target database through the DB2 Command Line Processor (CLP) or DB2 Configuration Assistant.

<?php
$database = 'SAMPLE';
$user = 'db2inst1';
$password = 'ibmdb2';

$conn = db2_connect($database, $user, $password);

if ($conn) {
    echo "Connection succeeded.";
    db2_close($conn);
}
else {
    echo "Connection failed.";
}
?>

以上例程会输出：

Connection succeeded.

Example #2 Creating an uncataloged connection

An uncataloged connection enables you to dynamically connect to a database.

<?php
$database = 'SAMPLE';
$user = 'db2inst1';
$password = 'ibmdb2';
$hostname = 'localhost';
$port = 50000;

$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;" .
  "HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$password;";
$conn = db2_connect($conn_string, '', '');

if ($conn) {
    echo "Connection succeeded.";
    db2_close($conn);
}
else {
    echo "Connection failed.";
}
?>

以上例程会输出：

Connection succeeded.

Example #3 Creating a connection with autocommit off by default

Passing an array of options to db2_connect() enables you to modify the default behavior of the connection handle.

<?php
$database = 'SAMPLE';
$user = 'db2inst1';
$password = 'ibmdb2';
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF);

$conn = db2_connect($database, $user, $password, $options);

if ($conn) {
    echo "Connection succeeded.\n";
    if (db2_autocommit($conn)) {
         echo "Autocommit is on.\n";
    }
    else {
         echo "Autocommit is off.\n";
    }
    db2_close($conn);
}
else {
    echo "Connection failed.";
}
?>

以上例程会输出：

Connection succeeded.
Autocommit is off.

Example #4 i5/OS best performance

To achieve best performance for your i5/OS ibm_db2 1.5.1 PHP application use the default host, userid, and password for your db2_connect().

<?php
  $library = "ADC";
  $i5 = db2_connect("", "", "", array("i5_lib"=>"qsys2"));
  $result = db2_exec($i5,
       "select * from systables where table_schema = '$library'");
  while ($row = db2_fetch_both($result)) {
     echo $row['TABLE_NAME']."</br>";
  }
  db2_close($i5);
?>

以上例程会输出：

ANIMALS
NAMES
PICTURES

Example #5 Using trusted context

The following example shows how to enable trusted context, switch users, and get the current user ID.

<?php

$database = "SAMPLE";
$hostname = "localhost";
$port = 50000;
$authID = "db2inst1";
$auth_pass = "ibmdb2";

$tc_user = "tcuser";
$tc_pass = "tcpassword";

$dsn = "DATABASE=$database;HOSTNAME=$hostname;PORT=$port;
  PROTOCOL=TCPIP;UID=$authID;PWD=$auth_pass;";
$options = array ("trustedcontext" => DB2_TRUSTED_CONTEXT_ENABLE);

$tc_conn = db2_connect($dsn, "", "", $options);
if($tc_conn) {
    echo "Explicit trusted connection succeeded.\n";

    if(db2_get_option($tc_conn, "trustedcontext")) {
        $userBefore = db2_get_option($tc_conn, "trusted_user");

        //Do some work as user 1.

        //Switching to trusted user.
        $parameters = array("trusted_user" => $tc_user,
          "trusted_password" => $tcuser_pass);
        $res = db2_set_option ($tc_conn, $parameters, 1);

        $userAfter = db2_get_option($tc_conn, "trusted_user");
        //Do more work as trusted user.

        if($userBefore != $userAfter) {
            echo "User has been switched." . "\n";
        }
    }

    db2_close($tc_conn);
}
else {
    echo "Explicit trusted connection failed.\n";
}
?>

以上例程会输出：

Explicit trusted connection succeeded.
User has been switched.

参见

  • db2_close() - Closes a database connection
  • db2_pconnect() - Returns a persistent connection to a database

db2_conn_errormsg
db2_cursor_type
IBM DB2 函数


Returns the cursor type used by a statement resource

db2_connect
db2_escape_string
IBM DB2 函数
PHP Manual

db2_cursor_type

(PECL ibm_db2 >= 1.0.0)

db2_cursor_type — Returns the cursor type used by a statement resource

说明

int db2_cursor_type ( resource $stmt )

Returns the cursor type used by a statement resource. Use this to determine if you are working with a forward-only cursor or scrollable cursor.

参数

stmt

A valid statement resource.

返回值

Returns either DB2_FORWARD_ONLY if the statement resource uses a forward-only cursor or DB2_SCROLLABLE if the statement resource uses a scrollable cursor.

参见

  • db2_prepare() - Prepares an SQL statement to be executed

db2_connect
db2_escape_string
IBM DB2 函数


Used to escape certain characters

db2_cursor_type
db2_exec
IBM DB2 函数
PHP Manual

db2_escape_string

(PECL ibm_db2 >= 1.6.0)

db2_escape_string — Used to escape certain characters

说明

string db2_escape_string ( string $string_literal )

Prepends backslashes to special characters in the string argument.

参数

string_literal

The string that contains special characters that need to be modified. Characters that are prepended with a backslash are \x00, \n, \r, \, ', " and \x1a.

返回值

Returns string_literal with the special characters noted above prepended with backslashes.

范例

Example #1 A db2_escape_string() example

Result of using the db2_escape_string() function

<?php

$conn = db2_connect($database, $user, $password);

if ($conn) {
    $str[0] = "All characters: \x00 , \n , \r , \ , ' , \" , \x1a .";
    $str[1] = "Backslash (\). Single quote ('). Double quote (\")";
    $str[2] = "The NULL character \0 must be quoted as well";
    $str[3] = "Intersting characters: \x1a , \x00 .";
    $str[4] = "Nothing to quote";
    $str[5] = 200676;
    $str[6] = "";

    foreach( $str as $string ) {
        echo "db2_escape_string: " . db2_escape_string($string). "\n";
    }
}
?>

以上例程会输出：

db2_escape_string: All characters: \0 , \n , \r , \\ , \' , \" , \Z .
db2_escape_string: Backslash (\\). Single quote (\'). Double quote (\")
db2_escape_string: The NULL character \0 must be quoted as well
db2_escape_string: Intersting characters: \Z , \0 .
db2_escape_string: Nothing to quote
db2_escape_string: 200676
db2_escape_string:

参见

  • db2_prepare() - Prepares an SQL statement to be executed

db2_cursor_type
db2_exec
IBM DB2 函数


Executes an SQL statement directly

db2_escape_string
db2_execute
IBM DB2 函数
PHP Manual

db2_exec

(PECL ibm_db2 >= 1.0.0)

db2_exec — Executes an SQL statement directly

说明

resource db2_exec ( resource $connection , string $statement [, array $options ] )

Executes an SQL statement directly.

If you plan to interpolate PHP variables into the SQL statement, understand that this is one of the more common security exposures. Consider calling db2_prepare() to prepare an SQL statement with parameter markers for input values. Then you can call db2_execute() to pass in the input values and avoid SQL injection attacks.

If you plan to repeatedly issue the same SQL statement with different parameters, consider calling db2_prepare() and db2_execute() to enable the database server to reuse its access plan and increase the efficiency of your database access.

参数

connection

A valid database connection resource variable as returned from db2_connect() or db2_pconnect().

statement

An SQL statement. The statement cannot contain any parameter markers.

options

An associative array containing statement options. You can use this parameter to request a scrollable cursor on database servers that support this functionality.

For a description of valid statement options, see db2_set_option().

返回值

Returns a statement resource if the SQL statement was issued successfully, or FALSE if the database failed to execute the SQL statement.

范例

Example #1 Creating a table with db2_exec()

The following example uses db2_exec() to issue a set of DDL statements in the process of creating a table.

<?php
$conn = db2_connect($database, $user, $password);

// Create the test table
$create = 'CREATE TABLE animals (id INTEGER, breed VARCHAR(32),
    name CHAR(16), weight DECIMAL(7,2))';
$result = db2_exec($conn, $create);
if ($result) {
    print "Successfully created the table.\n";
}

// Populate the test table
$animals = array(
    array(0, 'cat', 'Pook', 3.2),
    array(1, 'dog', 'Peaches', 12.3),
    array(2, 'horse', 'Smarty', 350.0),
    array(3, 'gold fish', 'Bubbles', 0.1),
    array(4, 'budgerigar', 'Gizmo', 0.2),
    array(5, 'goat', 'Rickety Ride', 9.7),
    array(6, 'llama', 'Sweater', 150)
);

foreach ($animals as $animal) {
    $rc = db2_exec($conn, "INSERT INTO animals (id, breed, name, weight)
      VALUES ({$animal[0]}, '{$animal[1]}', '{$animal[2]}', {$animal[3]})");
    if ($rc) {
        print "Insert... ";
    }
}
?>

以上例程会输出：

Successfully created the table.
Insert... Insert... Insert... Insert... Insert... Insert... Insert...

Example #2 Executing a SELECT statement with a scrollable cursor

The following example demonstrates how to request a scrollable cursor for an SQL statement issued by db2_exec().

<?php
$conn = db2_connect($database, $user, $password);
$sql = "SELECT name FROM animals
    WHERE weight < 10.0
    ORDER BY name";
if ($conn) {
    require_once('prepare.inc');
    $stmt = db2_exec($conn, $sql, array('cursor' => DB2_SCROLLABLE));
    while ($row = db2_fetch_array($stmt)) {
        print "$row[0]\n";
    }
}
?>

以上例程会输出：

Bubbles
Gizmo
Pook
Rickety Ride

Example #3 Returning XML data as an SQL ResultSet

The following example demonstrates how to work with documents stored in a XML column using the SAMPLE database. Using some pretty simple SQL/XML, this example returns some of the nodes in a XML document in an SQL ResultSet format that most users are familiar with.

<?php

$conn = db2_connect("SAMPLE", "db2inst1", "ibmdb2");

$query = 'SELECT * FROM XMLTABLE(
    XMLNAMESPACES (DEFAULT \'http://posample.org\'),
    \'db2-fn:xmlcolumn("CUSTOMER.INFO")/customerinfo\'
    COLUMNS
    "CID" VARCHAR (50) PATH \'@Cid\',
    "NAME" VARCHAR (50) PATH \'name\',
    "PHONE" VARCHAR (50) PATH \'phone [ @type = "work"]\'
    ) AS T
    WHERE NAME = \'Kathy Smith\'
    ';
$stmt = db2_exec($conn, $query);

while($row = db2_fetch_object($stmt)){
    printf("$row->CID     $row->NAME     $row->PHONE\n");
}
db2_close($conn);

?>

以上例程会输出：

1000     Kathy Smith     416-555-1358
1001     Kathy Smith     905-555-7258

Example #4 Performing a "JOIN" with XML data

The following example works with documents stored in 2 different XML columns in the SAMPLE database. It creates 2 temporary tables from the XML documents from 2 different columns and returns an SQL ResultSet with information regarding shipping status for the customer.

<?php

$conn = db2_connect("SAMPLE", "db2inst1", "ibmdb2");

$query = '
    SELECT A.CID, A.NAME, A.PHONE, C.PONUM, C.STATUS
    FROM
    XMLTABLE(
    XMLNAMESPACES (DEFAULT \'http://posample.org\'),
    \'db2-fn:xmlcolumn("CUSTOMER.INFO")/customerinfo\'
    COLUMNS
    "CID" BIGINT PATH \'@Cid\',
    "NAME" VARCHAR (50) PATH \'name\',
    "PHONE" VARCHAR (50) PATH \'phone [ @type = "work"]\'
    ) as A,
    PURCHASEORDER AS B,
    XMLTABLE (
    XMLNAMESPACES (DEFAULT \'http://posample.org\'),
    \'db2-fn:xmlcolumn("PURCHASEORDER.PORDER")/PurchaseOrder\'
    COLUMNS
    "PONUM"  BIGINT PATH \'@PoNum\',
    "STATUS" VARCHAR (50) PATH \'@Status\'
    ) as C
    WHERE A.CID = B.CUSTID AND
    B.POID = C.PONUM AND
    A.NAME = \'Kathy Smith\'
';

$stmt = db2_exec($conn, $query);

while($row = db2_fetch_object($stmt)){
    printf("$row->CID     $row->NAME     $row->PHONE     $row->PONUM     $row->STATUS\n");
}

db2_close($conn);

?>

以上例程会输出：

1001     Kathy Smith     905-555-7258     5002     Shipped

Example #5 Returning SQL data as part of a larger XML document

The following example works with a portion of the PRODUCT.DESCRIPTION documents in the SAMPLE database. It creates a XML document containing product description (XML data) and pricing info (SQL data).

<?php

$conn = db2_connect("SAMPLE", "db2inst1", "ibmdb2");

$query = '
SELECT
XMLSERIALIZE(
XMLQUERY(\'
    declare boundary-space strip;
    declare default element namespace "http://posample.org";
    <promoList> {
    for $prod in $doc/product
    where $prod/description/price < 10.00
    order by $prod/description/price ascending
    return(
        <promoitem> {
        $prod,
        <startdate> {$start} </startdate>,
        <enddate> {$end} </enddate>,
        <promoprice> {$promo} </promoprice>
        } </promoitem>
    )
    } </promoList>
\' passing by ref DESCRIPTION AS "doc",
PROMOSTART as "start",
PROMOEND as "end",
PROMOPRICE as "promo"
RETURNING SEQUENCE)
AS CLOB (32000))
AS NEW_PRODUCT_INFO
FROM PRODUCT
WHERE PID = \'100-100-01\'
';

$stmt = db2_exec($conn, $query);

while($row = db2_fetch_array($stmt)){
    printf("$row[0]\n");
}
db2_close($conn);

?>

以上例程会输出：

<promoList xmlns="http://posample.org">
    <promoitem>
    <product pid="100-100-01">
        <description>
            <name>Snow Shovel, Basic 22 inch</name>
            <details>Basic Snow Shovel, 22 inches wide, straight handle with D-Grip</details>
            <price>9.99</price>
            <weight>1 kg</weight>
        </description>
    </product>
    <startdate>2004-11-19</startdate>
    <enddate>2004-12-19</enddate>
    <promoprice>7.25</promoprice>
    </promoitem>
</promoList>

参见

  • db2_execute() - Executes a prepared SQL statement
  • db2_prepare() - Prepares an SQL statement to be executed

db2_escape_string
db2_execute
IBM DB2 函数


Executes a prepared SQL statement

db2_exec
db2_fetch_array
IBM DB2 函数
PHP Manual

db2_execute

(PECL ibm_db2 >= 1.0.0)

db2_execute — Executes a prepared SQL statement

说明

bool db2_execute ( resource $stmt [, array $parameters ] )

db2_execute() executes an SQL statement that was prepared by db2_prepare().

If the SQL statement returns a result set, for example, a SELECT statement or a CALL to a stored procedure that returns one or more result sets, you can retrieve a row as an array from the stmt resource using db2_fetch_assoc(), db2_fetch_both(), or db2_fetch_array(). Alternatively, you can use db2_fetch_row() to move the result set pointer to the next row and fetch a column at a time from that row with db2_result().

Refer to db2_prepare() for a brief discussion of the advantages of using db2_prepare() and db2_execute() rather than db2_exec().

参数

stmt

A prepared statement returned from db2_prepare().

parameters

An array of input parameters matching any parameter markers contained in the prepared statement.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Preparing and executing an SQL statement with parameter markers

The following example prepares an INSERT statement that accepts four parameter markers, then iterates over an array of arrays containing the input values to be passed to db2_execute().

<?php
$pet = array(0, 'cat', 'Pook', 3.2);

$insert = 'INSERT INTO animals (id, breed, name, weight)
    VALUES (?, ?, ?, ?)';

$stmt = db2_prepare($conn, $insert);
if ($stmt) {
    $result = db2_execute($stmt, $pet);
    if ($result) {
        print "Successfully added new pet.";
    }
}
?>

以上例程会输出：

Successfully added new pet.

Example #2 Calling a stored procedure with an OUT parameter

The following example prepares a CALL statement that accepts one parameter marker representing an OUT parameter, binds the PHP variable $my_pets to the parameter using db2_bind_param(), then issues db2_execute() to execute the CALL statement. After the CALL to the stored procedure has been made, the value of $num_pets changes to reflect the value returned by the stored procedure for that OUT parameter.

<?php
$num_pets = 0;
$res = db2_prepare($conn, "CALL count_my_pets(?)");
$rc = db2_bind_param($res, 1, "num_pets", DB2_PARAM_OUT);
$rc = db2_execute($res);
print "I have $num_pets pets!";
?>

以上例程会输出：

I have 7 pets!

Example #3 Returning XML data as an SQL ResultSet

The following example demonstrates how to work with documents stored in a XML column using the SAMPLE database. Using some pretty simple SQL/XML, this example returns some of the nodes in a XML document in an SQL ResultSet format that most users are familiar with.

<?php

$conn = db2_connect("SAMPLE", "db2inst1", "ibmdb2");

$query = 'SELECT * FROM XMLTABLE(
    XMLNAMESPACES (DEFAULT \'http://posample.org\'),
    \'db2-fn:xmlcolumn("CUSTOMER.INFO")/customerinfo\'
    COLUMNS
    "CID" VARCHAR (50) PATH \'@Cid\',
    "NAME" VARCHAR (50) PATH \'name\',
    "PHONE" VARCHAR (50) PATH \'phone [ @type = "work"]\'
    ) AS T
    WHERE NAME = ?
    ';

$stmt = db2_prepare($conn, $query);

$name = 'Kathy Smith';

if ($stmt) {
    db2_bind_param($stmt, 1, "name", DB2_PARAM_IN);
    db2_execute($stmt);

    while($row = db2_fetch_object($stmt)){
    printf("$row->CID     $row->NAME     $row->PHONE\n");
    }
}
db2_close($conn);

?>

以上例程会输出：

1000     Kathy Smith     416-555-1358
1001     Kathy Smith     905-555-7258

Example #4 Performing a "JOIN" with XML data

The following example works with documents stored in 2 different XML columns in the SAMPLE database. It creates 2 temporary tables from the XML documents from 2 different columns and returns an SQL ResultSet with information regarding shipping status for the customer.

<?php

$conn = db2_connect("SAMPLE", "db2inst1", "ibmdb2");

$query = '
SELECT A.CID, A.NAME, A.PHONE, C.PONUM, C.STATUS
FROM
XMLTABLE(
XMLNAMESPACES (DEFAULT \'http://posample.org\'),
\'db2-fn:xmlcolumn("CUSTOMER.INFO")/customerinfo\'
COLUMNS
"CID" BIGINT PATH \'@Cid\',
"NAME" VARCHAR (50) PATH \'name\',
"PHONE" VARCHAR (50) PATH \'phone [ @type = "work"]\'
) as A,
PURCHASEORDER AS B,
XMLTABLE (
XMLNAMESPACES (DEFAULT \'http://posample.org\'),
\'db2-fn:xmlcolumn("PURCHASEORDER.PORDER")/PurchaseOrder\'
COLUMNS
"PONUM"  BIGINT PATH \'@PoNum\',
"STATUS" VARCHAR (50) PATH \'@Status\'
) as C
WHERE A.CID = B.CUSTID AND
    B.POID = C.PONUM AND
    A.NAME = ?
';

$stmt = db2_prepare($conn, $query);

$name = 'Kathy Smith';

if ($stmt) {
    db2_bind_param($stmt, 1, "name", DB2_PARAM_IN);
    db2_execute($stmt);

    while($row = db2_fetch_object($stmt)){
    printf("$row->CID     $row->NAME     $row->PHONE     $row->PONUM     $row->STATUS\n");
    }
}

db2_close($conn);

?>

以上例程会输出：

1001     Kathy Smith     905-555-7258     5002     Shipped

Example #5 Returning SQL data as part of a larger XML document

The following example works with a portion of the PRODUCT.DESCRIPTION documents in the SAMPLE database. It creates a XML document containing product description (XML data) and pricing info (SQL data).

<?php

$conn = db2_connect("SAMPLE", "db2inst1", "ibmdb2");

$query = '
SELECT
XMLSERIALIZE(
XMLQUERY(\'
    declare boundary-space strip;
    declare default element namespace "http://posample.org";
    <promoList> {
    for $prod in $doc/product
    where $prod/description/price < 10.00
    order by $prod/description/price ascending
    return(
        <promoitem> {
        $prod,
        <startdate> {$start} </startdate>,
        <enddate> {$end} </enddate>,
        <promoprice> {$promo} </promoprice>
            } </promoitem>
    )
    } </promoList>
\' passing by ref DESCRIPTION AS "doc",
PROMOSTART as "start",
PROMOEND as "end",
PROMOPRICE as "promo"
RETURNING SEQUENCE)
AS CLOB (32000))
AS NEW_PRODUCT_INFO
FROM PRODUCT
WHERE PID = ?
';

$stmt = db2_prepare($conn, $query);

$pid = "100-100-01";

if ($stmt) {
    db2_bind_param($stmt, 1, "pid", DB2_PARAM_IN);
    db2_execute($stmt);

    while($row = db2_fetch_array($stmt)){
    printf("$row[0]\n");
    }
}

db2_close($conn);

?>

以上例程会输出：

<promoList xmlns="http://posample.org">
    <promoitem>
    <product pid="100-100-01">
        <description>
            <name>Snow Shovel, Basic 22 inch</name>
            <details>Basic Snow Shovel, 22 inches wide, straight handle with D-Grip</details>
            <price>9.99</price>
            <weight>1 kg</weight>
        </description>
    </product>
    <startdate>2004-11-19</startdate>
    <enddate>2004-12-19</enddate>
    <promoprice>7.25</promoprice>
    </promoitem>
</promoList>

参见

  • db2_exec() - Executes an SQL statement directly
  • db2_fetch_array() - Returns an array, indexed by column position, representing a row in a result set
  • db2_fetch_assoc() - Returns an array, indexed by column name, representing a row in a result set
  • db2_fetch_both() - Returns an array, indexed by both column name and position, representing a row in a result set
  • db2_fetch_row() - Sets the result set pointer to the next row or requested row
  • db2_prepare() - Prepares an SQL statement to be executed
  • db2_result() - Returns a single column from a row in the result set

db2_exec
db2_fetch_array
IBM DB2 函数


Returns an array, indexed by column position, representing a row in a result set

db2_execute
db2_fetch_assoc
IBM DB2 函数
PHP Manual

db2_fetch_array

(PECL ibm_db2 >= 1.0.1)

db2_fetch_array — Returns an array, indexed by column position, representing a row in a result set

说明

array db2_fetch_array ( resource $stmt [, int $row_number = -1 ] )

Returns an array, indexed by column position, representing a row in a result set. The columns are 0-indexed.

参数

stmt

A valid stmt resource containing a result set.

row_number

Requests a specific 1-indexed row from the result set. Passing this parameter results in a PHP warning if the result set uses a forward-only cursor.

返回值

Returns a 0-indexed array with column values indexed by the column position representing the next or requested row in the result set. Returns FALSE if there are no rows left in the result set, or if the row requested by row_number does not exist in the result set.

范例

Example #1 Iterating through a forward-only cursor

If you call db2_fetch_array() without a specific row number, it automatically retrieves the next row in the result set.

<?php

$sql = "SELECT id, name, breed, weight FROM animals ORDER BY breed";
$stmt = db2_prepare($conn, $sql);
$result = db2_execute($stmt);

while ($row = db2_fetch_array($stmt)) {
    printf ("%-5d %-16s %-32s %10s\n",
        $row[0], $row[1], $row[2], $row[3]);
}
?>

以上例程会输出：

0     Pook             cat                                    3.20
5     Rickety Ride     goat                                   9.70
2     Smarty           horse                                350.00

Example #2 Retrieving specific rows with db2_fetch_array() from a scrollable cursor

If your result set uses a scrollable cursor, you can call db2_fetch_array() with a specific row number. The following example retrieves every other row in the result set, starting with the second row.

<?php

$sql = "SELECT id, name, breed, weight FROM animals ORDER BY breed";
$result = db2_exec($stmt, $sql, array('cursor' => DB2_SCROLLABLE));

$i=2;
while ($row = db2_fetch_array($result, $i)) {
    printf ("%-5d %-16s %-32s %10s\n",
        $row[0], $row[1], $row[2], $row[3]);
    $i = $i + 2;
}
?>

以上例程会输出：

0     Pook             cat                                    3.20
5     Rickety Ride     goat                                   9.70
2     Smarty           horse                                350.00

参见

  • db2_fetch_assoc() - Returns an array, indexed by column name, representing a row in a result set
  • db2_fetch_both() - Returns an array, indexed by both column name and position, representing a row in a result set
  • db2_fetch_object() - Returns an object with properties representing columns in the fetched row
  • db2_fetch_row() - Sets the result set pointer to the next row or requested row
  • db2_result() - Returns a single column from a row in the result set

db2_execute
db2_fetch_assoc
IBM DB2 函数


Returns an array, indexed by column name, representing a row in a result set

db2_fetch_array
db2_fetch_both
IBM DB2 函数
PHP Manual

db2_fetch_assoc

(PECL ibm_db2 >= 1.0.0)

db2_fetch_assoc — Returns an array, indexed by column name, representing a row in a result set

说明

array db2_fetch_assoc ( resource $stmt [, int $row_number = -1 ] )

Returns an array, indexed by column name, representing a row in a result set.

参数

stmt

A valid stmt resource containing a result set.

row_number

Requests a specific 1-indexed row from the result set. Passing this parameter results in a PHP warning if the result set uses a forward-only cursor.

返回值

Returns an associative array with column values indexed by the column name representing the next or requested row in the result set. Returns FALSE if there are no rows left in the result set, or if the row requested by row_number does not exist in the result set.

范例

Example #1 Iterating through a forward-only cursor

If you call db2_fetch_assoc() without a specific row number, it automatically retrieves the next row in the result set.

<?php

$sql = "SELECT id, name, breed, weight FROM animals ORDER BY breed";
$stmt = db2_prepare($conn, $sql);
$result = db2_execute($stmt);

while ($row = db2_fetch_assoc($stmt)) {
    printf ("%-5d %-16s %-32s %10s\n",
        $row['ID'], $row['NAME'], $row['BREED'], $row['WEIGHT']);
}
?>

以上例程会输出：

0     Pook             cat                                    3.20
5     Rickety Ride     goat                                   9.70
2     Smarty           horse                                350.00

Example #2 Retrieving specific rows with db2_fetch_assoc() from a scrollable cursor

If your result set uses a scrollable cursor, you can call db2_fetch_assoc() with a specific row number. The following example retrieves every other row in the result set, starting with the second row.

<?php

$sql = "SELECT id, name, breed, weight FROM animals ORDER BY breed";
$result = db2_exec($stmt, $sql, array('cursor' => DB2_SCROLLABLE));

$i=2;
while ($row = db2_fetch_assoc($result, $i)) {
    printf ("%-5d %-16s %-32s %10s\n",
        $row['ID'], $row['NAME'], $row['BREED'], $row['WEIGHT']);
    $i = $i + 2;
}
?>

以上例程会输出：

0     Pook             cat                                    3.20
5     Rickety Ride     goat                                   9.70
2     Smarty           horse                                350.00

参见

  • db2_fetch_array() - Returns an array, indexed by column position, representing a row in a result set
  • db2_fetch_both() - Returns an array, indexed by both column name and position, representing a row in a result set
  • db2_fetch_object() - Returns an object with properties representing columns in the fetched row
  • db2_fetch_row() - Sets the result set pointer to the next row or requested row
  • db2_result() - Returns a single column from a row in the result set

db2_fetch_array
db2_fetch_both
IBM DB2 函数


Returns an array, indexed by both column name and position, representing a row in a result set

db2_fetch_assoc
db2_fetch_object
IBM DB2 函数
PHP Manual

db2_fetch_both

(PECL ibm_db2 >= 1.0.0)

db2_fetch_both — Returns an array, indexed by both column name and position, representing a row in a result set

说明

array db2_fetch_both ( resource $stmt [, int $row_number = -1 ] )

Returns an array, indexed by both column name and position, representing a
row in a result set. Note that the row returned by
db2_fetch_both() requires more memory than the
single-indexed arrays returned by db2_fetch_assoc() or
db2_fetch_array().

参数

stmt

A valid stmt resource containing a result set.

row_number

Requests a specific 1-indexed row from the result set. Passing this parameter results in a PHP warning if the result set uses a forward-only cursor.

返回值

Returns an associative array with column values indexed by both the column name and 0-indexed column number. The array represents the next or requested row in the result set. Returns FALSE if there are no rows left in the result set, or if the row requested by row_number does not exist in the result set.

范例

Example #1 Iterating through a forward-only cursor

If you call db2_fetch_both() without a specific row number, it automatically retrieves the next row in the result set. The following example accesses columns in the returned array by both column name and by numeric index.

<?php

$sql = "SELECT id, name, breed, weight FROM animals ORDER BY breed";
$stmt = db2_prepare($conn, $sql);
$result = db2_execute($stmt);

while ($row = db2_fetch_both($stmt)) {
    printf ("%-5d %-16s %-32s %10s\n",
        $row['ID'], $row[0], $row['BREED'], $row[3]);
}
?>

以上例程会输出：

0     Pook             cat                                    3.20
5     Rickety Ride     goat                                   9.70
2     Smarty           horse                                350.00

Example #2 Retrieving specific rows with db2_fetch_both() from a scrollable cursor

If your result set uses a scrollable cursor, you can call db2_fetch_both() with a specific row number. The following example retrieves every other row in the result set, starting with the second row.

<?php

$sql = "SELECT id, name, breed, weight FROM animals ORDER BY breed";
$result = db2_exec($stmt, $sql, array('cursor' => DB2_SCROLLABLE));

$i=2;
while ($row = db2_fetch_both($result, $i)) {
    printf ("%-5d %-16s %-32s %10s\n",
        $row[0], $row['NAME'], $row[2], $row['WEIGHT']);
    $i = $i + 2;
}
?>

以上例程会输出：

0     Pook             cat                                    3.20
5     Rickety Ride     goat                                   9.70
2     Smarty           horse                                350.00

参见

  • db2_fetch_array() - Returns an array, indexed by column position, representing a row in a result set
  • db2_fetch_assoc() - Returns an array, indexed by column name, representing a row in a result set
  • db2_fetch_object() - Returns an object with properties representing columns in the fetched row
  • db2_fetch_row() - Sets the result set pointer to the next row or requested row
  • db2_result() - Returns a single column from a row in the result set

db2_fetch_assoc
db2_fetch_object
IBM DB2 函数


Returns an object with properties representing columns in the fetched row

db2_fetch_both
db2_fetch_row
IBM DB2 函数
PHP Manual

db2_fetch_object

(PECL ibm_db2 >= 1.0.0)

db2_fetch_object — Returns an object with properties representing columns in the fetched row

说明

object db2_fetch_object ( resource $stmt [, int $row_number = -1 ] )

Returns an object in which each property represents a column returned in the row fetched from a result set.

参数

stmt

A valid stmt resource containing a result set.

row_number

Requests a specific 1-indexed row from the result set. Passing this parameter results in a PHP warning if the result set uses a forward-only cursor.

返回值

Returns an object representing a single row in the result set. The properties of the object map to the names of the columns in the result set.

The IBM DB2, Cloudscape, and Apache Derby database servers typically fold column names to upper-case, so the object properties will reflect that case.

If your SELECT statement calls a scalar function to modify the value of a column, the database servers return the column number as the name of the column in the result set. If you prefer a more descriptive column name and object property, you can use the AS clause to assign a name to the column in the result set.

Returns FALSE if no row was retrieved.

范例

Example #1 A db2_fetch_object() example

The following example issues a SELECT statement with a scalar function, RTRIM, that removes whitespace from the end of the column. Rather than creating an object with the properties "BREED" and "2", we use the AS clause in the SELECT statement to assign the name "name" to the modified column. The database server folds the column names to upper-case, resulting in an object with the properties "BREED" and "NAME".

<?php
$conn = db2_connect($database, $user, $password);

$sql = "SELECT breed, RTRIM(name) AS name
    FROM animals
    WHERE id = ?";

if ($conn) {
    $stmt = db2_prepare($conn, $sql);
    db2_execute($stmt, array(0));

    while ($pet = db2_fetch_object($stmt)) {
        echo "Come here, {$pet->NAME}, my little {$pet->BREED}!";
    }
    db2_close($conn);
}
?>

以上例程会输出：

Come here, Pook, my little cat!

参见

  • db2_fetch_array() - Returns an array, indexed by column position, representing a row in a result set
  • db2_fetch_assoc() - Returns an array, indexed by column name, representing a row in a result set
  • db2_fetch_both() - Returns an array, indexed by both column name and position, representing a row in a result set
  • db2_fetch_row() - Sets the result set pointer to the next row or requested row
  • db2_result() - Returns a single column from a row in the result set

db2_fetch_both
db2_fetch_row
IBM DB2 函数


Sets the result set pointer to the next row or requested row

db2_fetch_object
db2_field_display_size
IBM DB2 函数
PHP Manual

db2_fetch_row

(PECL ibm_db2 >= 1.0.0)

db2_fetch_row — Sets the result set pointer to the next row or requested row

说明

bool db2_fetch_row ( resource $stmt [, int $row_number ] )

Use db2_fetch_row() to iterate through a result set, or to point to a specific row in a result set if you requested a scrollable cursor.

To retrieve individual fields from the result set, call the db2_result() function.

Rather than calling db2_fetch_row() and db2_result(), most applications will call one of db2_fetch_assoc(), db2_fetch_both(), or db2_fetch_array() to advance the result set pointer and return a complete row as an array.

参数

stmt

A valid stmt resource.

row_number

With scrollable cursors, you can request a specific row number in the result set. Row numbering is 1-indexed.

返回值

Returns TRUE if the requested row exists in the result set. Returns FALSE if the requested row does not exist in the result set.

范例

Example #1 Iterating through a result set

The following example demonstrates how to iterate through a result set with db2_fetch_row() and retrieve columns from the result set with db2_result().

<?php
$sql = 'SELECT name, breed FROM animals WHERE weight < ?';
$stmt = db2_prepare($conn, $sql);
db2_execute($stmt, array(10));
while (db2_fetch_row($stmt)) {
    $name = db2_result($stmt, 0);
    $breed = db2_result($stmt, 1);
    print "$name $breed";
}
?>

以上例程会输出：

cat Pook
gold fish Bubbles
budgerigar Gizmo
goat Rickety Ride

Example #2 i5/OS recommended alternatives to db2_fetch_row/db2_result

On i5/OS it is recommended that you use db2_fetch_both(), db2_fetch_array(), or db2_fetch_object() over db2_fetch_row()/db2_result(). In general db2_fetch_row()/db2_result() have more issues with various column types in EBCIDIC to ASCII translation, including possible truncation in DBCS applications. You may also find the performance of db2_fetch_both(), db2_fetch_array(), and db2_fetch_object() to be superior to db2_fetch_row()/db2_result().

<?php
  $conn = db2_connect("","","");
  $sql = 'SELECT SPECIFIC_SCHEMA, SPECIFIC_NAME, ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE, ROUTINE_CREATED, ROUTINE_BODY, IN_PARMS, OUT_PARMS, INOUT_PARMS, PARAMETER_STYLE, EXTERNAL_NAME, EXTERNAL_LANGUAGE FROM QSYS2.SYSROUTINES FETCH FIRST 2 ROWS ONLY';
  $stmt = db2_exec($conn, $sql, array('cursor' => DB2_SCROLLABLE));
  while ($row = db2_fetch_both($stmt)){
    echo "<br>db2_fetch_both {$row['SPECIFIC_NAME']} {$row['ROUTINE_CREATED']} {$row[5]}";
  }
  $stmt = db2_exec($conn, $sql, array('cursor' => DB2_SCROLLABLE));
  while ($row = db2_fetch_array($stmt)){
    echo "<br>db2_fetch_array {$row[1]}  {$row[5]}";
  }
  $stmt = db2_exec($conn, $sql, array('cursor' => DB2_SCROLLABLE));
  while ($row = db2_fetch_object($stmt)){
    echo "<br>db2_fetch_object {$row->SPECIFIC_NAME} {$row->ROUTINE_CREATED}";
  }
  db2_close($conn);
?>

以上例程会输出：

db2_fetch_both MATCH_ANIMAL 2006-08-25-17.10.23.775000 2006-08-25-17.10.23.775000
db2_fetch_both MULTIRESULTS 2006-10-17-10.11.05.308000 2006-10-17-10.11.05.308000
db2_fetch_array MATCH_ANIMAL 2006-08-25-17.10.23.775000
db2_fetch_array MULTIRESULTS 2006-10-17-10.11.05.308000
db2_fetch_object MATCH_ANIMAL 2006-08-25-17.10.23.775000
db2_fetch_object MULTIRESULTS 2006-10-17-10.11.05.308000

参见

  • db2_fetch_array() - Returns an array, indexed by column position, representing a row in a result set
  • db2_fetch_assoc() - Returns an array, indexed by column name, representing a row in a result set
  • db2_fetch_both() - Returns an array, indexed by both column name and position, representing a row in a result set
  • db2_fetch_object() - Returns an object with properties representing columns in the fetched row
  • db2_result() - Returns a single column from a row in the result set

db2_fetch_object
db2_field_display_size
IBM DB2 函数


Returns the maximum number of bytes required to display a column

db2_fetch_row
db2_field_name
IBM DB2 函数
PHP Manual

db2_field_display_size

(PECL ibm_db2 >= 1.0.0)

db2_field_display_size — Returns the maximum number of bytes required to display a column

说明

int db2_field_display_size ( resource $stmt , mixed $column )

Returns the maximum number of bytes required to display a column in a result set.

参数

stmt

Specifies a statement resource containing a result set.

column

Specifies the column in the result set. This can either be an integer representing the 0-indexed position of the column, or a string containing the name of the column.

返回值

Returns an integer value with the maximum number of bytes required to display the specified column. If the column does not exist in the result set, db2_field_display_size() returns FALSE.

参见

  • db2_field_name() - Returns the name of the column in the result set
  • db2_field_num() - Returns the position of the named column in a result set
  • db2_field_precision() - Returns the precision of the indicated column in a result set
  • db2_field_scale() - Returns the scale of the indicated column in a result set
  • db2_field_type() - Returns the data type of the indicated column in a result set
  • db2_field_width() - Returns the width of the current value of the indicated column in a result set

db2_fetch_row
db2_field_name
IBM DB2 函数


Returns the name of the column in the result set

db2_field_display_size
db2_field_num
IBM DB2 函数
PHP Manual

db2_field_name

(PECL ibm_db2 >= 1.0.0)

db2_field_name — Returns the name of the column in the result set

说明

string db2_field_name ( resource $stmt , mixed $column )

Returns the name of the specified column in the result set.

参数

stmt

Specifies a statement resource containing a result set.

column

Specifies the column in the result set. This can either be an integer representing the 0-indexed position of the column, or a string containing the name of the column.

返回值

Returns a string containing the name of the specified column. If the specified column does not exist in the result set, db2_field_name() returns FALSE.

参见

  • db2_field_display_size() - Returns the maximum number of bytes required to display a column
  • db2_field_num() - Returns the position of the named column in a result set
  • db2_field_precision() - Returns the precision of the indicated column in a result set
  • db2_field_scale() - Returns the scale of the indicated column in a result set
  • db2_field_type() - Returns the data type of the indicated column in a result set
  • db2_field_width() - Returns the width of the current value of the indicated column in a result set

db2_field_display_size
db2_field_num
IBM DB2 函数


Returns the position of the named column in a result set

db2_field_name
db2_field_precision
IBM DB2 函数
PHP Manual

db2_field_num

(PECL ibm_db2 >= 1.0.0)

db2_field_num — Returns the position of the named column in a result set

说明

int db2_field_num ( resource $stmt , mixed $column )

Returns the position of the named column in a result set.

参数

stmt

Specifies a statement resource containing a result set.

column

Specifies the column in the result set. This can either be an integer representing the 0-indexed position of the column, or a string containing the name of the column.

返回值

Returns an integer containing the 0-indexed position of the named column in the result set. If the specified column does not exist in the result set, db2_field_num() returns FALSE.

参见

  • db2_field_display_size() - Returns the maximum number of bytes required to display a column
  • db2_field_name() - Returns the name of the column in the result set
  • db2_field_precision() - Returns the precision of the indicated column in a result set
  • db2_field_scale() - Returns the scale of the indicated column in a result set
  • db2_field_type() - Returns the data type of the indicated column in a result set
  • db2_field_width() - Returns the width of the current value of the indicated column in a result set

db2_field_name
db2_field_precision
IBM DB2 函数


Returns the precision of the indicated column in a result set

db2_field_num
db2_field_scale
IBM DB2 函数
PHP Manual

db2_field_precision

(PECL ibm_db2 >= 1.0.0)

db2_field_precision — Returns the precision of the indicated column in a result set

说明

int db2_field_precision ( resource $stmt , mixed $column )

Returns the precision of the indicated column in a result set.

参数

stmt

Specifies a statement resource containing a result set.

column

Specifies the column in the result set. This can either be an integer representing the 0-indexed position of the column, or a string containing the name of the column.

返回值

Returns an integer containing the precision of the specified column. If the specified column does not exist in the result set, db2_field_precision() returns FALSE.

参见

  • db2_field_display_size() - Returns the maximum number of bytes required to display a column
  • db2_field_name() - Returns the name of the column in the result set
  • db2_field_num() - Returns the position of the named column in a result set
  • db2_field_scale() - Returns the scale of the indicated column in a result set
  • db2_field_type() - Returns the data type of the indicated column in a result set
  • db2_field_width() - Returns the width of the current value of the indicated column in a result set

db2_field_num
db2_field_scale
IBM DB2 函数


Returns the scale of the indicated column in a result set

db2_field_precision
db2_field_type
IBM DB2 函数
PHP Manual

db2_field_scale

(PECL ibm_db2 >= 1.0.0)

db2_field_scale — Returns the scale of the indicated column in a result set

说明

int db2_field_scale ( resource $stmt , mixed $column )

Returns the scale of the indicated column in a result set.

参数

stmt

Specifies a statement resource containing a result set.

column

Specifies the column in the result set. This can either be an integer representing the 0-indexed position of the column, or a string containing the name of the column.

返回值

Returns an integer containing the scale of the specified column. If the specified column does not exist in the result set, db2_field_scale() returns FALSE.

参见

  • db2_field_display_size() - Returns the maximum number of bytes required to display a column
  • db2_field_name() - Returns the name of the column in the result set
  • db2_field_num() - Returns the position of the named column in a result set
  • db2_field_precision() - Returns the precision of the indicated column in a result set
  • db2_field_type() - Returns the data type of the indicated column in a result set
  • db2_field_width() - Returns the width of the current value of the indicated column in a result set

db2_field_precision
db2_field_type
IBM DB2 函数


Returns the data type of the indicated column in a result set

db2_field_scale
db2_field_width
IBM DB2 函数
PHP Manual

db2_field_type

(PECL ibm_db2 >= 1.0.0)

db2_field_type — Returns the data type of the indicated column in a result set

说明

string db2_field_type ( resource $stmt , mixed $column )

Returns the data type of the indicated column in a result set.

参数

stmt

Specifies a statement resource containing a result set.

column

Specifies the column in the result set. This can either be an integer representing the 0-indexed position of the column, or a string containing the name of the column.

返回值

Returns a string containing the defined data type of the specified column. If the specified column does not exist in the result set, db2_field_type() returns FALSE.

参见

  • db2_field_display_size() - Returns the maximum number of bytes required to display a column
  • db2_field_name() - Returns the name of the column in the result set
  • db2_field_num() - Returns the position of the named column in a result set
  • db2_field_precision() - Returns the precision of the indicated column in a result set
  • db2_field_scale() - Returns the scale of the indicated column in a result set
  • db2_field_width() - Returns the width of the current value of the indicated column in a result set

db2_field_scale
db2_field_width
IBM DB2 函数


Returns the width of the current value of the indicated column in a result set

db2_field_type
db2_foreign_keys
IBM DB2 函数
PHP Manual

db2_field_width

(PECL ibm_db2 >= 1.0.0)

db2_field_width — Returns the width of the current value of the indicated column in a result set

说明

int db2_field_width ( resource $stmt , mixed $column )

Returns the width of the current value of the indicated column in a result set. This is the maximum width of the column for a fixed-length data type, or the actual width of the column for a variable-length data type.

参数

stmt

Specifies a statement resource containing a result set.

column

Specifies the column in the result set. This can either be an integer representing the 0-indexed position of the column, or a string containing the name of the column.

返回值

Returns an integer containing the width of the specified character or binary data type column in a result set. If the specified column does not exist in the result set, db2_field_width() returns FALSE.

参见

  • db2_field_display_size() - Returns the maximum number of bytes required to display a column
  • db2_field_name() - Returns the name of the column in the result set
  • db2_field_num() - Returns the position of the named column in a result set
  • db2_field_precision() - Returns the precision of the indicated column in a result set
  • db2_field_scale() - Returns the scale of the indicated column in a result set
  • db2_field_type() - Returns the data type of the indicated column in a result set

db2_field_type
db2_foreign_keys
IBM DB2 函数


Returns a result set listing the foreign keys for a table

db2_field_width
db2_free_result
IBM DB2 函数
PHP Manual

db2_foreign_keys

(PECL ibm_db2 >= 1.0.0)

db2_foreign_keys — Returns a result set listing the foreign keys for a table

说明

resource db2_foreign_keys ( resource $connection , string $qualifier , string $schema , string $table-name )

Returns a result set listing the foreign keys for a table.

参数

connection

A valid connection to an IBM DB2, Cloudscape, or Apache Derby database.

qualifier

A qualifier for DB2 databases running on OS/390 or z/OS servers. For other databases, pass NULL or an empty string.

schema

The schema which contains the tables. If schema is NULL, db2_foreign_keys() matches the schema for the current connection.

table-name

The name of the table.

返回值

Returns a statement resource with a result set containing rows describing the foreign keys for the specified table. The result set is composed of the following columns:

Column name | Description
PKTABLE_CAT | Name of the catalog for the table containing the primary key. The value is NULL if this table does not have catalogs.
PKTABLE_SCHEM | Name of the schema for the table containing the primary key.
PKTABLE_NAME | Name of the table containing the primary key.
PKCOLUMN_NAME | Name of the column containing the primary key.
FKTABLE_CAT | Name of the catalog for the table containing the foreign key. The value is NULL if this table does not have catalogs.
FKTABLE_SCHEM | Name of the schema for the table containing the foreign key.
FKTABLE_NAME | Name of the table containing the foreign key.
FKCOLUMN_NAME | Name of the column containing the foreign key.
KEY_SEQ | 1-indexed position of the column in the key.
UPDATE_RULE | Integer value representing the action applied to the foreign key when the SQL operation is UPDATE.
DELETE_RULE | Integer value representing the action applied to the foreign key when the SQL operation is DELETE.
FK_NAME | The name of the foreign key.
PK_NAME | The name of the primary key.
DEFERRABILITY | An integer value representing whether the foreign key deferrability is SQL_INITIALLY_DEFERRED, SQL_INITIALLY_IMMEDIATE, or SQL_NOT_DEFERRABLE.

参见

  • db2_column_privileges() - Returns a result set listing the columns and associated privileges for a table
  • db2_columns() - Returns a result set listing the columns and associated metadata for a table
  • db2_primary_keys() - Returns a result set listing primary keys for a table
  • db2_procedure_columns() - Returns a result set listing stored procedure parameters
  • db2_procedures() - Returns a result set listing the stored procedures registered in a database
  • db2_special_columns() - Returns a result set listing the unique row identifier columns for a table
  • db2_statistics() - Returns a result set listing the index and statistics for a table
  • db2_table_privileges() - Returns a result set listing the tables and associated privileges in a database
  • db2_tables() - Returns a result set listing the tables and associated metadata in a database

db2_field_width
db2_free_result
IBM DB2 函数


Frees resources associated with a result set

db2_foreign_keys
db2_free_stmt
IBM DB2 函数
PHP Manual

db2_free_result

(PECL ibm_db2 >= 1.0.0)

db2_free_result — Frees resources associated with a result set

说明

bool db2_free_result ( resource $stmt )

Frees the system and database resources that are associated with a result set. These resources are freed implicitly when a script finishes, but you can call db2_free_result() to explicitly free the result set resources before the end of the script.

参数

stmt

A valid statement resource.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • db2_free_stmt() - Frees resources associated with the indicated statement resource

db2_foreign_keys
db2_free_stmt
IBM DB2 函数


Frees resources associated with the indicated statement resource

db2_free_result
db2_get_option
IBM DB2 函数
PHP Manual

db2_free_stmt

(PECL ibm_db2 >= 1.0.0)

db2_free_stmt — Frees resources associated with the indicated statement resource

说明

bool db2_free_stmt ( resource $stmt )

Frees the system and database resources that are associated with a statement resource. These resources are freed implicitly when a script finishes, but you can call db2_free_stmt() to explicitly free the statement resources before the end of the script.

参数

stmt

A valid statement resource.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • db2_free_result() - Frees resources associated with a result set

db2_free_result
db2_get_option
IBM DB2 函数


Retrieves an option value for a statement resource or a connection resource

db2_free_stmt
db2_last_insert_id
IBM DB2 函数
PHP Manual

db2_get_option

(PECL ibm_db2 >= 1.6.0)

db2_get_option — Retrieves an option value for a statement resource or a connection resource

说明

string db2_get_option ( resource $resource , string $option )

Retrieves the value of a specified option value for a statement resource or a connection resource.

参数

resource

A valid statement resource as returned from db2_prepare() or a valid connection resource as returned from db2_connect() or db2_pconnect().

option

A valid statement or connection options. The following new options are available as of ibm_db2 version 1.6.0. They provide useful tracking information that can be set during execution with db2_get_option().

Note:

Prior versions of ibm_db2 do not support these new options.

When the value in each option is being set, some servers might not handle the entire length provided and might truncate the value.

To ensure that the data specified in each option is converted correctly when transmitted to a host system, use only the characters A through Z, 0 through 9, and the underscore (_) or period (.).

userid

SQL_ATTR_INFO_USERID - A pointer to a null-terminated character string used to identify the client user ID sent to the host database server when using DB2 Connect.

Note:

DB2 for z/OS and OS/390 servers support up to a length of 16 characters. This user-id is not to be confused with the authentication user-id, it is for identification purposes only and is not used for any authorization.

acctstr

SQL_ATTR_INFO_ACCTSTR - A pointer to a null-terminated character string used to identify the client accounting string sent to the host database server when using DB2 Connect.

Note:

DB2 for z/OS and OS/390 servers support up to a length of 200 characters.

applname

SQL_ATTR_INFO_APPLNAME - A pointer to a null-terminated character string used to identify the client application name sent to the host database server when using DB2 Connect.

Note:

DB2 for z/OS and OS/390 servers support up to a length of 32 characters.

wrkstnname

SQL_ATTR_INFO_WRKSTNNAME - A pointer to a null-terminated character string used to identify the client workstation name sent to the host database server when using DB2 Connect.

Note:

DB2 for z/OS and OS/390 servers support up to a length of 18 characters.

The following table specifies which options are compatible with the available resource types:

Resource-Parameter Matrix
Key | Value | Resource Type
 |  | Connection | Statement | Result Set
userid | SQL_ATTR_INFO_USERID | X | X | -
acctstr | SQL_ATTR_INFO_ACCTSTR | X | X | -
applname | SQL_ATTR_INFO_APPLNAME | X | X | -
wrkstnname | SQL_ATTR_INFO_WRKSTNNAME | X | X | -

返回值

Returns the current setting of the connection attribute provided on success 或者在失败时返回 FALSE.

范例

Example #1 Setting and retrieving parameters through a connection resource

<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$user     = 'db2inst1';
$password = 'ibmdb2';

/* Obtain Connection Resource */
$conn = db2_connect($database, $user, $password);

echo "Client attributes passed through connection string:\n";

/* Create the associative options array with valid key-value pairs */
/* Assign the attributes through connection string */
/* Access the options specified */
$options1 = array('userid' => 'db2inst1');
$conn1 = db2_connect($database, $user, $password, $options1);
$val = db2_get_option($conn1, 'userid');
echo $val . "\n";

$options2 = array('acctstr' => 'account');
$conn2 = db2_connect($database, $user, $password, $options2);
$val = db2_get_option($conn2, 'acctstr');
echo $val . "\n";

$options3 = array('applname' => 'myapp');
$conn3 = db2_connect($database, $user, $password, $options3);
$val = db2_get_option($conn3, 'applname');
echo $val . "\n";

$options4 = array('wrkstnname' => 'workstation');
$conn4 = db2_connect($database, $user, $password, $options4);
$val = db2_get_option($conn4, 'wrkstnname');
echo $val . "\n";

echo "Client attributes passed post-connection:\n";

/* Create the associative options array with valid key-value pairs */
/* Assign the attributes after a connection is made */
/* Access the options specified */
$options5 = array('userid' => 'db2inst1');
$conn5 = db2_connect($database, $user, $password);
$rc = db2_set_option($conn5, $options5, 1);
$val = db2_get_option($conn5, 'userid');
echo $val . "\n";

$options6 = array('acctstr' => 'account');
$conn6 = db2_connect($database, $user, $password);
$rc = db2_set_option($conn6, $options6, 1);
$val = db2_get_option($conn6, 'acctstr');
echo $val . "\n";

$options7 = array('applname' => 'myapp');
$conn7 = db2_connect($database, $user, $password);
$rc = db2_set_option($conn7, $options7, 1);
$val = db2_get_option($conn7, 'applname');
echo $val . "\n";

$options8 = array('wrkstnname' => 'workstation');
$conn8 = db2_connect($database, $user, $password);
$rc = db2_set_option($conn8, $options8, 1);
$val = db2_get_option($conn8, 'wrkstnname');
echo $val . "\n";
?>

以上例程会输出：

Client attributes passed through connection string:
db2inst1
account
myapp
workstation
Client attributes passed post-connection:
db2inst1
account
myapp
workstation

参见

  • db2_connect() - Returns a connection to a database
  • db2_cursor_type() - Returns the cursor type used by a statement resource
  • db2_exec() - Executes an SQL statement directly
  • db2_set_option() - Set options for connection or statement resources
  • db2_pconnect() - Returns a persistent connection to a database
  • db2_prepare() - Prepares an SQL statement to be executed

db2_free_stmt
db2_last_insert_id
IBM DB2 函数


Returns the auto generated ID of the last insert query that successfully executed on this connection

db2_get_option
db2_lob_read
IBM DB2 函数
PHP Manual

db2_last_insert_id

(PECL ibm_db2 >= 1.7.1)

db2_last_insert_id — Returns the auto generated ID of the last insert query that successfully executed on this connection

说明

string db2_last_insert_id ( resource $resource )

Returns the auto generated ID of the last insert query that successfully executed on this connection.

The result of this function is not affected by any of the following:

  • A single row INSERT statement with a VALUES clause for a table without an identity column.

  • A multiple row INSERT statement with a VALUES clause.

  • An INSERT statement with a fullselect.

  • A ROLLBACK TO SAVEPOINT statement.

参数

resource

A valid connection resource as returned from db2_connect() or db2_pconnect(). The value of this parameter cannot be a statement resource or result set resource.

返回值

Returns the auto generated ID of last insert query that successfully executed on this connection.

范例

Example #1 A db2_last_insert_id() example

The following example shows how to return the auto generated ID of last insert query that successfully executed on this connection.

<?php

$database = "SAMPLE";
$user = "db2inst1";
$password = "ibmdb2";

$conn = db2_connect($database, $user, $password);
if($conn) {
    $createTable = "CREATE TABLE lastInsertID
      (id integer GENERATED BY DEFAULT AS IDENTITY, name varchar(20))";
    $insertTable = "INSERT INTO lastInsertID (name) VALUES ('Temp Name')";

    $stmt = @db2_exec($conn, $createTable);

    /* Checking for single row inserted. */
    $stmt = db2_exec($conn, $insertTable);
    $ret =  db2_last_insert_id($conn);
    if($ret) {
        echo "Last Insert ID is : " . $ret . "\n";
    } else {
        echo "No Last insert ID.\n";
    }

    db2_close($conn);
}
else {
    echo "Connection failed.";
}
?>

以上例程会输出：

Last Insert ID is : 1

db2_get_option
db2_lob_read
IBM DB2 函数


Gets a user defined size of LOB files with each invocation

db2_last_insert_id
db2_next_result
IBM DB2 函数
PHP Manual

db2_lob_read

(PECL ibm_db2 >= 1.6.0)

db2_lob_read — Gets a user defined size of LOB files with each invocation

说明

string db2_lob_read ( resource $stmt , int $colnum , int $length )

Use db2_lob_read() to iterate through a specified column of a result set and retrieve a user defined size of LOB data.

参数

stmt

A valid stmt resource containing LOB data.

colnum

A valid column number in the result set of the stmt resource.

length

The size of the LOB data to be retrieved from the stmt resource.

返回值

Returns the amount of data the user specifies. Returns FALSE if the data cannot be retrieved.

范例

Example #1 Iterating through different types of data

<?php

/* Database Connection Parameters */
$db = 'SAMPLE';
$username = 'db2inst1';
$password = 'ibmdb2';

/* Obtain Connection Resource */
$conn = db2_connect($db,$username,$password);

if ($conn) {
    $drop = 'DROP TABLE clob_stream';
    $result = @db2_exec( $conn, $drop );

    $create = 'CREATE TABLE clob_stream (id INTEGER, my_clob CLOB)';
    $result = db2_exec( $conn, $create );

    $variable = "";
    $stmt = db2_prepare($conn, "INSERT INTO clob_stream (id,my_clob) VALUES (1, ?)");
    $variable = "THIS IS A CLOB TEST. THIS IS A CLOB TEST.";
    db2_bind_param($stmt, 1, "variable", DB2_PARAM_IN);
    db2_execute($stmt);

    $sql = "SELECT id,my_clob FROM clob_stream";
    $result = db2_prepare($conn, $sql);
    db2_execute($result);
    db2_fetch_row($result);
    $i = 0;
    /* Read LOB data */
    while ($data = db2_lob_read($result, 2, 6)) {
        echo "Loop $i: $data\n";
        $i = $i + 1;
    }

    $drop = 'DROP TABLE blob_stream';
    $result = @db2_exec( $conn, $drop );

    $create = 'CREATE TABLE blob_stream (id INTEGER, my_blob CLOB)';
    $result = db2_exec( $conn, $create );

    $variable = "";
    $stmt = db2_prepare($conn, "INSERT INTO blob_stream (id,my_blob) VALUES (1, ?)");
    $variable = "THIS IS A BLOB TEST. THIS IS A BLOB TEST.";
    db2_bind_param($stmt, 1, "variable", DB2_PARAM_IN);
    db2_execute($stmt);

    $sql = "SELECT id,my_blob FROM blob_stream";
    $result = db2_prepare($conn, $sql);
    db2_execute($result);
    db2_fetch_row($result);
    $i = 0;
    /* Read LOB data */
    while ($data = db2_lob_read($result, 2, 6)) {
        echo "Loop $i: $data\n";
        $i = $i + 1;
    }
} else {
    echo 'no connection: ' . db2_conn_errormsg();
}

?>

以上例程会输出：

Loop 0: THIS I
Loop 1: S A CL
Loop 2: OB TES
Loop 3: T. THI
Loop 4: S IS A
Loop 5:  CLOB
Loop 6: TEST.
Loop 0: THIS I
Loop 1: S A BL
Loop 2: OB TES
Loop 3: T. THI
Loop 4: S IS A
Loop 5:  BLOB
Loop 6: TEST.

参见

  • db2_bind_param() - Binds a PHP variable to an SQL statement parameter
  • db2_exec() - Executes an SQL statement directly
  • db2_execute() - Executes a prepared SQL statement
  • db2_fetch_row() - Sets the result set pointer to the next row or requested row
  • db2_prepare() - Prepares an SQL statement to be executed
  • db2_result() - Returns a single column from a row in the result set

db2_last_insert_id
db2_next_result
IBM DB2 函数


Requests the next result set from a stored procedure

db2_lob_read
db2_num_fields
IBM DB2 函数
PHP Manual

db2_next_result

(PECL ibm_db2 >= 1.0.0)

db2_next_result — Requests the next result set from a stored procedure

说明

resource db2_next_result ( resource $stmt )

A stored procedure can return zero or more result sets. While you handle the first result set in exactly the same way you would handle the results returned by a simple SELECT statement, to fetch the second and subsequent result sets from a stored procedure you must call the db2_next_result() function and return the result to a uniquely named PHP variable.

参数

stmt

A prepared statement returned from db2_exec() or db2_execute().

返回值

Returns a new statement resource containing the next result set if the stored procedure returned another result set. Returns FALSE if the stored procedure did not return another result set.

范例

Example #1 Calling a stored procedure that returns multiple result sets

In the following example, we call a stored procedure that returns three result sets. The first result set is fetched directly from the same statement resource on which we invoked the CALL statement, while the second and third result sets are fetched from statement resources returned from our calls to the db2_next_result() function.

<?php
$conn = db2_connect($database, $user, $password);

if ($conn) {
  $stmt = db2_exec($conn, 'CALL multiResults()');

  print "Fetching first result set\n";
  while ($row = db2_fetch_array($stmt)) {
    var_dump($row);
  }

  print "\nFetching second result set\n";
  $res = db2_next_result($stmt);
  if ($res) {
    while ($row = db2_fetch_array($res)) {
      var_dump($row);
    }
  }

  print "\nFetching third result set\n";
  $res2 = db2_next_result($stmt);
  if ($res2) {
    while ($row = db2_fetch_array($res2)) {
      var_dump($row);
    }
  }

  db2_close($conn);
}
?>

以上例程会输出：

Fetching first result set
array(2) {
  [0]=>
  string(16) "Bubbles         "
  [1]=>
  int(3)
}
array(2) {
  [0]=>
  string(16) "Gizmo           "
  [1]=>
  int(4)
}

Fetching second result set
array(4) {
  [0]=>
  string(16) "Sweater         "
  [1]=>
  int(6)
  [2]=>
  string(5) "llama"
  [3]=>
  string(6) "150.00"
}
array(4) {
  [0]=>
  string(16) "Smarty          "
  [1]=>
  int(2)
  [2]=>
  string(5) "horse"
  [3]=>
  string(6) "350.00"
}

Fetching third result set
array(1) {
  [0]=>
  string(16) "Bubbles         "
}
array(1) {
  [0]=>
  string(16) "Gizmo           "
}

db2_lob_read
db2_num_fields
IBM DB2 函数


Returns the number of fields contained in a result set

db2_next_result
db2_num_rows
IBM DB2 函数
PHP Manual

db2_num_fields

(PECL ibm_db2 >= 1.0.0)

db2_num_fields — Returns the number of fields contained in a result set

说明

int db2_num_fields ( resource $stmt )

Returns the number of fields contained in a result set. This is most useful for handling the result sets returned by dynamically generated queries, or for result sets returned by stored procedures, where your application cannot otherwise know how to retrieve and use the results.

参数

stmt

A valid statement resource containing a result set.

返回值

Returns an integer value representing the number of fields in the result set associated with the specified statement resource. Returns FALSE if the statement resource is not a valid input value.

范例

Example #1 Retrieving the number of fields in a result set

The following example demonstrates how to retrieve the number of fields returned in a result set.

<?php

$sql = "SELECT id, name, breed, weight FROM animals ORDER BY breed";
$stmt = db2_prepare($conn, $sql);
db2_execute($stmt, $sql);
$columns = db2_num_fields($stmt);

echo "There are {$columns} columns in the result set.";
?>

以上例程会输出：

There are 4 columns in the result set.

参见

  • db2_execute() - Executes a prepared SQL statement
  • db2_field_display_size() - Returns the maximum number of bytes required to display a column
  • db2_field_name() - Returns the name of the column in the result set
  • db2_field_num() - Returns the position of the named column in a result set
  • db2_field_precision() - Returns the precision of the indicated column in a result set
  • db2_field_scale() - Returns the scale of the indicated column in a result set
  • db2_field_type() - Returns the data type of the indicated column in a result set
  • db2_field_width() - Returns the width of the current value of the indicated column in a result set

db2_next_result
db2_num_rows
IBM DB2 函数


Returns the number of rows affected by an SQL statement

db2_num_fields
db2_pclose
IBM DB2 函数
PHP Manual

db2_num_rows

(PECL ibm_db2 >= 1.0.0)

db2_num_rows — Returns the number of rows affected by an SQL statement

说明

int db2_num_rows ( resource $stmt )

Returns the number of rows deleted, inserted, or updated by an SQL statement.

To determine the number of rows that will be returned by a SELECT statement, issue SELECT COUNT(*) with the same predicates as your intended SELECT statement and retrieve the value.

If your application logic checks the number of rows returned by a SELECT statement and branches if the number of rows is 0, consider modifying your application to attempt to return the first row with one of db2_fetch_assoc(), db2_fetch_both(), db2_fetch_array(), or db2_fetch_row(), and branch if the fetch function returns FALSE.

Note:

If you issue a SELECT statement using a scrollable cursor, db2_num_rows() returns the number of rows returned by the SELECT statement. However, the overhead associated with scrollable cursors significantly degrades the performance of your application, so if this is the only reason you are considering using scrollable cursors, you should use a forward-only cursor and either call SELECT COUNT(*) or rely on the boolean return value of the fetch functions to achieve the equivalent functionality with much better performance.

参数

stmt

A valid stmt resource containing a result set.

返回值

Returns the number of rows affected by the last SQL statement issued by the specified statement handle.

db2_num_fields
db2_pclose
IBM DB2 函数


Closes a persistent database connection

db2_num_rows
db2_pconnect
IBM DB2 函数
PHP Manual

db2_pclose

(PECL ibm_db2 >= 1.8.0)

db2_pclose — Closes a persistent database connection

说明

bool db2_pclose ( resource $resource )

This function closes a DB2 client connection created with db2_pconnect() and returns the corresponding resources to the database server.

Note:

This function is only available on i5/OS in response to i5/OS system administration requests.

If you have a persistent DB2 client connection created with db2_pconnect(), you may use this function to close the connection. To avoid substantial connection performance penalties, this function should only be used in rare cases when the persistent connection has become unresponsive or the persistent connection will not be needed for a long period of time.

参数

connection

Specifies an active DB2 client connection.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Closing a persistent connection

The following example demonstrates a successful attempt to close a connection to an IBM DB2 i5/OS database.

<?php
$conn = db2_pconnect('', '', '');
$rc = db2_pclose($conn);
if ($rc) {
    echo "Connection was successfully closed.";
}
?>

以上例程会输出：

Connection was successfully closed.

参见

  • db2_close() - Closes a database connection
  • db2_pconnect() - Returns a persistent connection to a database

db2_num_rows
db2_pconnect
IBM DB2 函数


Returns a persistent connection to a database

db2_pclose
db2_prepare
IBM DB2 函数
PHP Manual

db2_pconnect

(PECL ibm_db2 >= 1.0.0)

db2_pconnect — Returns a persistent connection to a database

说明

resource db2_pconnect ( string $database , string $username , string $password [, array $options ] )

Returns a persistent connection to an IBM DB2 Universal Database, IBM Cloudscape, or Apache Derby database.

For more information on persistent connections, refer to 数据库持久连接.

Calling db2_close() on a persistent connection always returns TRUE, but the underlying DB2 client connection remains open and waiting to serve the next matching db2_pconnect() request.

Users running version 1.9.0 or later of ibm_db2 should be aware that the extension will perform a transaction rollback on persistent connections at the end of a request, thus ending the transaction. This prevents the transaction block from carrying over to the next request which uses that connection if script execution ends before the transaction block does.

参数

database

The database alias in the DB2 client catalog.

username

The username with which you are connecting to the database.

password

The password with which you are connecting to the database.

options

An associative array of connection options that affect the behavior of the connection, where valid array keys include:

autocommit

Passing the DB2_AUTOCOMMIT_ON value turns autocommit on for this connection handle.

Passing the DB2_AUTOCOMMIT_OFF value turns autocommit off for this connection handle.

DB2_ATTR_CASE

Passing the DB2_CASE_NATURAL value specifies that column names are returned in natural case.

Passing the DB2_CASE_LOWER value specifies that column names are returned in lower case.

Passing the DB2_CASE_UPPER value specifies that column names are returned in upper case.

CURSOR

Passing the DB2_FORWARD_ONLY value specifies a forward-only cursor for a statement resource. This is the default cursor type and is supported on all database servers.

Passing the DB2_SCROLLABLE value specifies a scrollable cursor for a statement resource. This mode enables random access to rows in a result set, but currently is supported only by IBM DB2 Universal Database.

The following new option is available in ibm_db2 version 1.7.0 and later.

trustedcontext

Passing the DB2_TRUSTED_CONTEXT_ENABLE value turns trusted context on for this connection handle. This parameter cannot be set using db2_set_option().

This key works only if the database is cataloged (even if the database is local), or if you specify the full DSN when you create the connection.

To catalog the database, use following commands:

db2 catalog tcpip node loopback remote <SERVERNAME> server <SERVICENAME>
db2 catalog database <LOCALDBNAME> as <REMOTEDBNAME> at node loopback
db2 "update dbm cfg using svcename <SERVICENAME>"
db2set DB2COMM=TCPIP

The following new i5/OS options are available in ibm_db2 version 1.5.1 and later.

Tip

Conflicting connection attributes used in conjunction with persistent connections can produce indeterminate results on i5/OS. Site policies should be establish for all applications using each persistent connection user profile. The default DB2_AUTOCOMMIT_ON is suggested when using persistent connections.

i5_lib

A character value that indicates the default library that will be used for resolving unqualified file references. This is not valid if the connection is using system naming mode.

i5_naming

DB2_I5_NAMING_ON value turns on DB2 UDB CLI iSeries system naming mode. Files are qualified using the slash (/) delimiter. Unqualified files are resolved using the library list for the job.

DB2_I5_NAMING_OFF value turns off DB2 UDB CLI default naming mode, which is SQL naming. Files are qualified using the period (.) delimiter. Unqualified files are resolved using either the default library or the current user ID.

i5_commit

The i5_commit attribute should be set before the db2_pconnect(). If the value is changed after the connection has been established, and the connection is to a remote data source, the change does not take effect until the next successful db2_pconnect() for the connection handle.

Note:

The php.ini setting ibm_db2.i5_allow_commit==0 or DB2_I5_TXN_NO_COMMIT is the default, but may be overridden with the i5_commit option.

DB2_I5_TXN_NO_COMMIT - Commitment control is not used.

DB2_I5_TXN_READ_UNCOMMITTED - Dirty reads, nonrepeatable reads, and phantoms are possible.

DB2_I5_TXN_READ_COMMITTED - Dirty reads are not possible. Nonrepeatable reads, and phantoms are possible.

DB2_I5_TXN_REPEATABLE_READ - Dirty reads and nonrepeatable reads are not possible. Phantoms are possible.

DB2_I5_TXN_SERIALIZABLE - Transactions are serializable. Dirty reads, non-repeatable reads, and phantoms are not possible

i5_query_optimize

DB2_FIRST_IO All queries are optimized with the goal of returning the first page of output as fast as possible. This goal works well when the output is controlled by a user who is most likely to cancel the query after viewing the first page of output data. Queries coded with an OPTIMIZE FOR nnn ROWS clause honor the goal specified by the clause.

DB2_ALL_IO All queries are optimized with the goal of running the entire query to completion in the shortest amount of elapsed time. This is a good option when the output of a query is being written to a file or report, or the interface is queuing the output data. Queries coded with an OPTIMIZE FOR nnn ROWS clause honor the goal specified by the clause. This is the default.

i5_dbcs_alloc

DB2_I5_DBCS_ALLOC_ON value turns on DB2 6X allocation scheme for DBCS translation column size growth.

DB2_I5_DBCS_ALLOC_OFF value turns off DB2 6X allocation scheme for DBCS translation column size growth.

Note:

The php.ini setting ibm_db2.i5_dbcs_alloc==0 or DB2_I5_DBCS_ALLOC_OFF is the default, but may be overridden with the i5_dbcs_alloc option.

i5_date_fmt

DB2_I5_FMT_ISO - The International Organization for Standardization (ISO) date format yyyy-mm-dd is used. This is the default.

DB2_I5_FMT_USA - The United States date format mm/dd/yyyy is used.

DB2_I5_FMT_EUR - The European date format dd.mm.yyyy is used.

DB2_I5_FMT_JIS - The Japanese Industrial Standard date format yyyy-mm-dd is used.

DB2_I5_FMT_MDY - The date format mm/dd/yyyy is used.

DB2_I5_FMT_DMY - The date format dd/mm/yyyy is used.

DB2_I5_FMT_YMD - The date format yy/mm/dd is used.

DB2_I5_FMT_JUL - The Julian date format yy/ddd is used.

DB2_I5_FMT_JOB - The job default is used.

i5_date_sep

DB2_I5_SEP_SLASH - A slash ( / ) is used as the date separator. This is the default.

DB2_I5_SEP_DASH - A dash ( - ) is used as the date separator.

DB2_I5_SEP_PERIOD - A period ( . ) is used as the date separator.

DB2_I5_SEP_COMMA - A comma ( , ) is used as the date separator.

DB2_I5_SEP_BLANK - A blank is used as the date separator.

DB2_I5_SEP_JOB - The job default is used

i5_time_fmt

DB2_I5_FMT_ISO - The International Organization for Standardization (ISO) time format hh.mm.ss is used. This is the default.

DB2_I5_FMT_USA - The United States time format hh:mmxx is used, where xx is AM or PM.

DB2_I5_FMT_EUR - The European time format hh.mm.ss is used.

DB2_I5_FMT_JIS - The Japanese Industrial Standard time format hh:mm:ss is used.

DB2_I5_FMT_HMS - The hh:mm:ss format is used.

i5_time_sep

DB2_I5_SEP_COLON - A colon ( : ) is used as the time separator. This is the default.

DB2_I5_SEP_PERIOD - A period ( . ) is used as the time separator.

DB2_I5_SEP_COMMA - A comma ( , ) is used as the time separator.

DB2_I5_SEP_BLANK - A blank is used as the time separator.

DB2_I5_SEP_JOB - The job default is used.

i5_decimal_sep

DB2_I5_SEP_PERIOD - A period ( . ) is used as the decimal separator. This is the default.

DB2_I5_SEP_COMMA - A comma ( , ) is used as the decimal separator.

DB2_I5_SEP_JOB - The job default is used.

The following new i5/OS option is available in ibm_db2 version 1.8.0 and later.

i5_libl

A character value that indicates the library list that will be used for resolving unqualified file references. Specify the library list elements separated by blanks 'i5_libl'=>"MYLIB YOURLIB ANYLIB".

Note:

i5_libl calls qsys2/qcmdexc('cmd',cmdlen), which is only available in i5/OS V5R4 and later.

返回值

Returns a connection handle resource if the connection attempt is successful. db2_pconnect() tries to reuse an existing connection resource that exactly matches the database, username, and password parameters. If the connection attempt fails, db2_pconnect() returns FALSE.

更新日志

版本 | 说明
ibm_db2 1.9.0 | Active transactions within a persistent connection will be rolled back at the end of each request.
ibm_db2 1.8.0 | The i5_libl option is available for i5/OS users.
ibm_db2 1.7.0 | The trustedcontext option is available.
ibm_db2 1.5.1 | The i5_lib, i5_naming, i5_commit, i5_query_optimize, i5_dbcs_alloc, i5_date_fmt, i5_date_sep, i5_time_fmt, i5_time_sep and i5_decimal_sep options are available for i5/OS users.

范例

Example #1 A db2_pconnect() example

In the following example, the first call to db2_pconnect() returns a new persistent connection resource. The second call to db2_pconnect() returns a persistent connection resource that simply reuses the first persistent connection resource.

<?php
$database = 'SAMPLE';
$user = 'db2inst1';
$password = 'ibmdb2';

$pconn = db2_pconnect($database, $user, $password);

if ($pconn) {
    echo "Persistent connection succeeded.";
}
else {
    echo "Persistent connection failed.";
}

$pconn2 = db2_pconnect($database, $user, $password);
if ($pconn) {
    echo "Second persistent connection succeeded.";
}
else {
    echo "Second persistent connection failed.";
}
?>

以上例程会输出：

Persistent connection succeeded.
Second persistent connection succeeded.

Example #2 Using trusted context

The following example shows how to enable trusted context, switch users, and get the current user ID.

<?php

$database = "SAMPLE";
$hostname = "localhost";
$port = 50000;
$authID = "db2inst1";
$auth_pass = "ibmdb2";

$tc_user = "tcuser";
$tc_pass = "tcpassword";

$dsn = "DATABASE=$database;HOSTNAME=$hostname;PORT=$port;
  PROTOCOL=TCPIP;UID=$authID;PWD=$auth_pass;";
$options = array ("trustedcontext" => DB2_TRUSTED_CONTEXT_ENABLE);

$tc_conn = db2_pconnect($dsn, "", "", $options);
if($tc_conn) {
    echo "Explicit trusted connection succeeded.\n";

    if(db2_get_option($tc_conn, "trustedcontext")) {
        $userBefore = db2_get_option($tc_conn, "trusted_user");

        //Do some work as user 1.

        //Switching to trusted user.
        $parameters = array("trusted_user" => $tc_user,
          "trusted_password" => $tcuser_pass);
        $res = db2_set_option ($tc_conn, $parameters, 1);

        $userAfter = db2_get_option($tc_conn, "trusted_user");
        //Do more work as trusted user.

        if($userBefore != $userAfter) {
            echo "User has been switched." . "\n";
        }
    }

    db2_close($tc_conn);
}
else {
    echo "Explicit trusted connection failed.\n";
}
?>

以上例程会输出：

Explicit trusted connection succeeded.
User has been switched.

参见

  • db2_connect() - Returns a connection to a database

db2_pclose
db2_prepare
IBM DB2 函数


Prepares an SQL statement to be executed

db2_pconnect
db2_primary_keys
IBM DB2 函数
PHP Manual

db2_prepare

(PECL ibm_db2 >= 1.0.0)

db2_prepare — Prepares an SQL statement to be executed

说明

resource db2_prepare ( resource $connection , string $statement [, array $options ] )

db2_prepare() creates a prepared SQL statement which can include 0 or more parameter markers (? characters) representing parameters for input, output, or input/output. You can pass parameters to the prepared statement using db2_bind_param(), or for input values only, as an array passed to db2_execute().

There are three main advantages to using prepared statements in your application:

  • Performance: when you prepare a statement, the database server creates an optimized access plan for retrieving data with that statement. Subsequently issuing the prepared statement with db2_execute() enables the statements to reuse that access plan and avoids the overhead of dynamically creating a new access plan for every statement you issue.

  • Security: when you prepare a statement, you can include parameter markers for input values. When you execute a prepared statement with input values for placeholders, the database server checks each input value to ensure that the type matches the column definition or parameter definition.

  • Advanced functionality: Parameter markers not only enable you to pass input values to prepared SQL statements, they also enable you to retrieve OUT and INOUT parameters from stored procedures using db2_bind_param().

参数

connection

A valid database connection resource variable as returned from db2_connect() or db2_pconnect().

statement

An SQL statement, optionally containing one or more parameter markers..

options

An associative array containing statement options. You can use this parameter to request a scrollable cursor on database servers that support this functionality.

For a description of valid statement options, see db2_set_option().

返回值

Returns a statement resource if the SQL statement was successfully parsed and prepared by the database server. Returns FALSE if the database server returned an error. You can determine which error was returned by calling db2_stmt_error() or db2_stmt_errormsg().

范例

Example #1 Preparing and executing an SQL statement with parameter markers

The following example prepares an INSERT statement that accepts four parameter markers, then iterates over an array of arrays containing the input values to be passed to db2_execute().

<?php
$animals = array(
    array(0, 'cat', 'Pook', 3.2),
    array(1, 'dog', 'Peaches', 12.3),
    array(2, 'horse', 'Smarty', 350.0),
);

$insert = 'INSERT INTO animals (id, breed, name, weight)
    VALUES (?, ?, ?, ?)';
$stmt = db2_prepare($conn, $insert);
if ($stmt) {
    foreach ($animals as $animal) {
        $result = db2_execute($stmt, $animal);
    }
}
?>

参见

  • db2_bind_param() - Binds a PHP variable to an SQL statement parameter
  • db2_execute() - Executes a prepared SQL statement
  • db2_stmt_error() - Returns a string containing the SQLSTATE returned by an SQL statement
  • db2_stmt_errormsg() - Returns a string containing the last SQL statement error message

db2_pconnect
db2_primary_keys
IBM DB2 函数


Returns a result set listing primary keys for a table

db2_prepare
db2_procedure_columns
IBM DB2 函数
PHP Manual

db2_primary_keys

(PECL ibm_db2 >= 1.0.0)

db2_primary_keys — Returns a result set listing primary keys for a table

说明

resource db2_primary_keys ( resource $connection , string $qualifier , string $schema , string $table-name )

Returns a result set listing the primary keys for a table.

参数

connection

A valid connection to an IBM DB2, Cloudscape, or Apache Derby database.

qualifier

A qualifier for DB2 databases running on OS/390 or z/OS servers. For other databases, pass NULL or an empty string.

schema

The schema which contains the tables. If schema is NULL, db2_primary_keys() matches the schema for the current connection.

table-name

The name of the table.

返回值

Returns a statement resource with a result set containing rows describing the primary keys for the specified table. The result set is composed of the following columns:

Column name | Description
TABLE_CAT | Name of the catalog for the table containing the primary key. The value is NULL if this table does not have catalogs.
TABLE_SCHEM | Name of the schema for the table containing the primary key.
TABLE_NAME | Name of the table containing the primary key.
COLUMN_NAME | Name of the column containing the primary key.
KEY_SEQ | 1-indexed position of the column in the key.
PK_NAME | The name of the primary key.

参见

  • db2_column_privileges() - Returns a result set listing the columns and associated privileges for a table
  • db2_columns() - Returns a result set listing the columns and associated metadata for a table
  • db2_foreign_keys() - Returns a result set listing the foreign keys for a table
  • db2_procedure_columns() - Returns a result set listing stored procedure parameters
  • db2_procedures() - Returns a result set listing the stored procedures registered in a database
  • db2_special_columns() - Returns a result set listing the unique row identifier columns for a table
  • db2_statistics() - Returns a result set listing the index and statistics for a table
  • db2_table_privileges() - Returns a result set listing the tables and associated privileges in a database
  • db2_tables() - Returns a result set listing the tables and associated metadata in a database

db2_prepare
db2_procedure_columns
IBM DB2 函数


Returns a result set listing stored procedure parameters

db2_primary_keys
db2_procedures
IBM DB2 函数
PHP Manual

db2_procedure_columns

(PECL ibm_db2 >= 1.0.0)

db2_procedure_columns — Returns a result set listing stored procedure parameters

说明

resource db2_procedure_columns ( resource $connection , string $qualifier , string $schema , string $procedure , string $parameter )

Returns a result set listing the parameters for one or more stored procedures.

参数

connection

A valid connection to an IBM DB2, Cloudscape, or Apache Derby database.

qualifier

A qualifier for DB2 databases running on OS/390 or z/OS servers. For other databases, pass NULL or an empty string.

schema

The schema which contains the procedures. This parameter accepts a search pattern containing _ and % as wildcards.

procedure

The name of the procedure. This parameter accepts a search pattern containing _ and % as wildcards.

parameter

The name of the parameter. This parameter accepts a search pattern containing _ and % as wildcards. If this parameter is NULL, all parameters for the specified stored procedures are returned.

返回值

Returns a statement resource with a result set containing rows describing the parameters for the stored procedures matching the specified parameters. The rows are composed of the following columns:

Column name | Description
PROCEDURE_CAT | The catalog that contains the procedure. The value is NULL if this table does not have catalogs.
PROCEDURE_SCHEM | Name of the schema that contains the stored procedure.
PROCEDURE_NAME | Name of the procedure.
COLUMN_NAME | Name of the parameter.
COLUMN_TYPE

An integer value representing the type of the parameter:

Return value | Parameter type
1 (SQL_PARAM_INPUT) | Input (IN) parameter.
2 (SQL_PARAM_INPUT_OUTPUT) | Input/output (INOUT) parameter.
3 (SQL_PARAM_OUTPUT) | Output (OUT) parameter.
DATA_TYPE | The SQL data type for the parameter represented as an integer value.
TYPE_NAME | A string representing the data type for the parameter.
COLUMN_SIZE | An integer value representing the size of the parameter.
BUFFER_LENGTH | Maximum number of bytes necessary to store data for this parameter.
DECIMAL_DIGITS | The scale of the parameter, or NULL where scale is not applicable.
NUM_PREC_RADIX | An integer value of either 10 (representing an exact numeric data type), 2 (representing an approximate numeric data type), or NULL (representing a data type for which radix is not applicable).
NULLABLE | An integer value representing whether the parameter is nullable or not.
REMARKS | Description of the parameter.
COLUMN_DEF | Default value for the parameter.
SQL_DATA_TYPE | An integer value representing the size of the parameter.
SQL_DATETIME_SUB | Returns an integer value representing a datetime subtype code, or NULL for SQL data types to which this does not apply.
CHAR_OCTET_LENGTH | Maximum length in octets for a character data type parameter, which matches COLUMN_SIZE for single-byte character set data, or NULL for non-character data types.
ORDINAL_POSITION | The 1-indexed position of the parameter in the CALL statement.
IS_NULLABLE | A string value where 'YES' means that the parameter accepts or returns NULL values and 'NO' means that the parameter does not accept or return NULL values.

参见

  • db2_column_privileges() - Returns a result set listing the columns and associated privileges for a table
  • db2_columns() - Returns a result set listing the columns and associated metadata for a table
  • db2_foreign_keys() - Returns a result set listing the foreign keys for a table
  • db2_primary_keys() - Returns a result set listing primary keys for a table
  • db2_procedures() - Returns a result set listing the stored procedures registered in a database
  • db2_special_columns() - Returns a result set listing the unique row identifier columns for a table
  • db2_statistics() - Returns a result set listing the index and statistics for a table
  • db2_table_privileges() - Returns a result set listing the tables and associated privileges in a database
  • db2_tables() - Returns a result set listing the tables and associated metadata in a database

db2_primary_keys
db2_procedures
IBM DB2 函数


Returns a result set listing the stored procedures registered in a database

db2_procedure_columns
db2_result
IBM DB2 函数
PHP Manual

db2_procedures

(PECL ibm_db2 >= 1.0.0)

db2_procedures — Returns a result set listing the stored procedures registered in a database

说明

resource db2_procedures ( resource $connection , string $qualifier , string $schema , string $procedure )

Returns a result set listing the stored procedures registered in a database.

参数

connection

A valid connection to an IBM DB2, Cloudscape, or Apache Derby database.

qualifier

A qualifier for DB2 databases running on OS/390 or z/OS servers. For other databases, pass NULL or an empty string.

schema

The schema which contains the procedures. This parameter accepts a search pattern containing _ and % as wildcards.

procedure

The name of the procedure. This parameter accepts a search pattern containing _ and % as wildcards.

返回值

Returns a statement resource with a result set containing rows describing the stored procedures matching the specified parameters. The rows are composed of the following columns:

Column name | Description
PROCEDURE_CAT | The catalog that contains the procedure. The value is NULL if this table does not have catalogs.
PROCEDURE_SCHEM | Name of the schema that contains the stored procedure.
PROCEDURE_NAME | Name of the procedure.
NUM_INPUT_PARAMS | Number of input (IN) parameters for the stored procedure.
NUM_OUTPUT_PARAMS | Number of output (OUT) parameters for the stored procedure.
NUM_RESULT_SETS | Number of result sets returned by the stored procedure.
REMARKS | Any comments about the stored procedure.
PROCEDURE_TYPE | Always returns 1, indicating that the stored procedure does not return a return value.

参见

  • db2_column_privileges() - Returns a result set listing the columns and associated privileges for a table
  • db2_columns() - Returns a result set listing the columns and associated metadata for a table
  • db2_foreign_keys() - Returns a result set listing the foreign keys for a table
  • db2_primary_keys() - Returns a result set listing primary keys for a table
  • db2_procedure_columns() - Returns a result set listing stored procedure parameters
  • db2_special_columns() - Returns a result set listing the unique row identifier columns for a table
  • db2_statistics() - Returns a result set listing the index and statistics for a table
  • db2_table_privileges() - Returns a result set listing the tables and associated privileges in a database
  • db2_tables() - Returns a result set listing the tables and associated metadata in a database

db2_procedure_columns
db2_result
IBM DB2 函数


Returns a single column from a row in the result set

db2_procedures
db2_rollback
IBM DB2 函数
PHP Manual

db2_result

(PECL ibm_db2 >= 1.0.0)

db2_result — Returns a single column from a row in the result set

说明

mixed db2_result ( resource $stmt , mixed $column )

Use db2_result() to return the value of a specified column in the current row of a result set. You must call db2_fetch_row() before calling db2_result() to set the location of the result set pointer.

参数

stmt

A valid stmt resource.

column

Either an integer mapping to the 0-indexed field in the result set, or a string matching the name of the column.

返回值

Returns the value of the requested field if the field exists in the result set. Returns NULL if the field does not exist, and issues a warning.

范例

Example #1 A db2_result() example

The following example demonstrates how to iterate through a result set with db2_fetch_row() and retrieve columns from the result set with db2_result().

<?php
$sql = 'SELECT name, breed FROM animals WHERE weight < ?';
$stmt = db2_prepare($conn, $sql);
db2_execute($stmt, array(10));
while (db2_fetch_row($stmt)) {
    $name = db2_result($stmt, 0);
    $breed = db2_result($stmt, 'BREED');
    print "$name $breed";
}
?>

以上例程会输出：

cat Pook
gold fish Bubbles
budgerigar Gizmo
goat Rickety Ride

参见

  • db2_fetch_array() - Returns an array, indexed by column position, representing a row in a result set
  • db2_fetch_assoc() - Returns an array, indexed by column name, representing a row in a result set
  • db2_fetch_both() - Returns an array, indexed by both column name and position, representing a row in a result set
  • db2_fetch_object() - Returns an object with properties representing columns in the fetched row
  • db2_fetch_row() - Sets the result set pointer to the next row or requested row

db2_procedures
db2_rollback
IBM DB2 函数


Rolls back a transaction

db2_result
db2_server_info
IBM DB2 函数
PHP Manual

db2_rollback

(PECL ibm_db2 >= 1.0.0)

db2_rollback — Rolls back a transaction

说明

bool db2_rollback ( resource $connection )

Rolls back an in-progress transaction on the specified connection resource and begins a new transaction. PHP applications normally default to AUTOCOMMIT mode, so db2_rollback() normally has no effect unless AUTOCOMMIT has been turned off for the connection resource.

参数

connection

A valid database connection resource variable as returned from db2_connect() or db2_pconnect().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Rolling back a DELETE statement

In the following example, we count the number of rows in a table, turn off AUTOCOMMIT mode on a database connection, delete all of the rows in the table and return the count of 0 to prove that the rows have been removed. We then issue db2_rollback() and return the updated count of rows in the table to show that the number is the same as before we issued the DELETE statement. The return to the original state of the table demonstrates that the roll back of the transaction succeeded.

<?php
$conn = db2_connect($database, $user, $password);

if ($conn) {
    $stmt = db2_exec($conn, "SELECT count(*) FROM animals");
    $res = db2_fetch_array( $stmt );
    echo $res[0] . "\n";

    // Turn AUTOCOMMIT off
    db2_autocommit($conn, DB2_AUTOCOMMIT_OFF);

    // Delete all rows from ANIMALS
    db2_exec($conn, "DELETE FROM animals");

    $stmt = db2_exec($conn, "SELECT count(*) FROM animals");
    $res = db2_fetch_array( $stmt );
    echo $res[0] . "\n";

    // Roll back the DELETE statement
    db2_rollback( $conn );

    $stmt = db2_exec( $conn, "SELECT count(*) FROM animals" );
    $res = db2_fetch_array( $stmt );
    echo $res[0] . "\n";
    db2_close($conn);
}
?>

以上例程会输出：

7
0
7

参见

  • db2_autocommit() - Returns or sets the AUTOCOMMIT state for a database connection
  • db2_commit() - Commits a transaction

db2_result
db2_server_info
IBM DB2 函数


Returns an object with properties that describe the DB2 database server

db2_rollback
db2_set_option
IBM DB2 函数
PHP Manual

db2_server_info

(PECL ibm_db2 >= 1.1.1)

db2_server_info — Returns an object with properties that describe the DB2 database server

说明

object db2_server_info ( resource $connection )

This function returns an object with read-only properties that return information about the IBM DB2, Cloudscape, or Apache Derby database server. The following table lists the database server properties:

Database server properties
Property name | Return type | Description
DBMS_NAME | string | The name of the database server to which you are connected. For DB2 servers this is a combination of DB2 followed by the operating system on which the database server is running.
DBMS_VER | string | The version of the database server, in the form of a string "MM.mm.uuuu" where MM is the major version, mm is the minor version, and uuuu is the update. For example, "08.02.0001" represents major version 8, minor version 2, update 1.
DB_CODEPAGE | int | The code page of the database to which you are connected.
DB_NAME | string | The name of the database to which you are connected.
DFT_ISOLATION string

The default transaction isolation level supported by the server:

UR

Uncommitted read: changes are immediately visible by all concurrent transactions.

CS

Cursor stability: a row read by one transaction can be altered and committed by a second concurrent transaction.

RS

Read stability: a transaction can add or remove rows matching a search condition or a pending transaction.

RR

Repeatable read: data affected by pending transaction is not available to other transactions.

NC

No commit: any changes are visible at the end of a successful operation. Explicit commits and rollbacks are not allowed.

IDENTIFIER_QUOTE_CHAR | string | The character used to delimit an identifier.
INST_NAME | string | The instance on the database server that contains the database.
ISOLATION_OPTION | array | An array of the isolation options supported by the database server. The isolation options are described in the DFT_ISOLATION property.
KEYWORDS | array | An array of the keywords reserved by the database server.
LIKE_ESCAPE_CLAUSE | bool | TRUE if the database server supports the use of % and _ wildcard characters. FALSE if the database server does not support these wildcard characters.
MAX_COL_NAME_LEN | int | Maximum length of a column name supported by the database server, expressed in bytes.
MAX_IDENTIFIER_LEN | int | Maximum length of an SQL identifier supported by the database server, expressed in characters.
MAX_INDEX_SIZE | int | Maximum size of columns combined in an index supported by the database server, expressed in bytes.
MAX_PROC_NAME_LEN | int | Maximum length of a procedure name supported by the database server, expressed in bytes.
MAX_ROW_SIZE | int | Maximum length of a row in a base table supported by the database server, expressed in bytes.
MAX_SCHEMA_NAME_LEN | int | Maximum length of a schema name supported by the database server, expressed in bytes.
MAX_STATEMENT_LEN | int | Maximum length of an SQL statement supported by the database server, expressed in bytes.
MAX_TABLE_NAME_LEN | int | Maximum length of a table name supported by the database server, expressed in bytes.
NON_NULLABLE_COLUMNS | bool | TRUE if the database server supports columns that can be defined as NOT NULL, FALSE if the database server does not support columns defined as NOT NULL.
PROCEDURES | bool | TRUE if the database server supports the use of the CALL statement to call stored procedures, FALSE if the database server does not support the CALL statement.
SPECIAL_CHARS | string | A string containing all of the characters other than a-Z, 0-9, and underscore that can be used in an identifier name.
SQL_CONFORMANCE string

The level of conformance to the ANSI/ISO SQL-92 specification offered by the database server:

ENTRY

Entry-level SQL-92 compliance.

FIPS127

FIPS-127-2 transitional compliance.

FULL

Full level SQL-92 compliance.

INTERMEDIATE

Intermediate level SQL-92 compliance.

参数

connection

Specifies an active DB2 client connection.

返回值

Returns an object on a successful call. Returns FALSE on failure.

范例

Example #1 A db2_server_info() example

To retrieve information about the server, you must pass a valid database connection resource to db2_server_info().

<?php

$conn = db2_connect('sample', 'db2inst1', 'ibmdb2');

$server = db2_server_info( $conn );

if ($server) {
    echo "DBMS_NAME: ";                 var_dump( $server->DBMS_NAME );
    echo "DBMS_VER: ";                  var_dump( $server->DBMS_VER );
    echo "DB_CODEPAGE: ";               var_dump( $server->DB_CODEPAGE );
    echo "DB_NAME: ";                   var_dump( $server->DB_NAME );
    echo "INST_NAME: ";                 var_dump( $server->INST_NAME );
    echo "SPECIAL_CHARS: ";             var_dump( $server->SPECIAL_CHARS );
    echo "KEYWORDS: ";                  var_dump( sizeof($server->KEYWORDS) );
    echo "DFT_ISOLATION: ";             var_dump( $server->DFT_ISOLATION );
    echo "ISOLATION_OPTION: ";
    $il = '';
    foreach( $server->ISOLATION_OPTION as $opt )
    {
       $il .= $opt." ";
    }
    var_dump( $il );
    echo "SQL_CONFORMANCE: ";           var_dump( $server->SQL_CONFORMANCE );
    echo "PROCEDURES: ";                var_dump( $server->PROCEDURES );
    echo "IDENTIFIER_QUOTE_CHAR: ";     var_dump( $server->IDENTIFIER_QUOTE_CHAR );
    echo "LIKE_ESCAPE_CLAUSE: ";        var_dump( $server->LIKE_ESCAPE_CLAUSE );
    echo "MAX_COL_NAME_LEN: ";          var_dump( $server->MAX_COL_NAME_LEN );
    echo "MAX_ROW_SIZE: ";              var_dump( $server->MAX_ROW_SIZE );
    echo "MAX_IDENTIFIER_LEN: ";        var_dump( $server->MAX_IDENTIFIER_LEN );
    echo "MAX_INDEX_SIZE: ";            var_dump( $server->MAX_INDEX_SIZE );
    echo "MAX_PROC_NAME_LEN: ";         var_dump( $server->MAX_PROC_NAME_LEN );
    echo "MAX_SCHEMA_NAME_LEN: ";       var_dump( $server->MAX_SCHEMA_NAME_LEN );
    echo "MAX_STATEMENT_LEN: ";         var_dump( $server->MAX_STATEMENT_LEN );
    echo "MAX_TABLE_NAME_LEN: ";        var_dump( $server->MAX_TABLE_NAME_LEN );
    echo "NON_NULLABLE_COLUMNS: ";      var_dump( $server->NON_NULLABLE_COLUMNS );

    db2_close($conn);
}
?>

以上例程会输出：

DBMS_NAME: string(9) "DB2/LINUX"
DBMS_VER: string(10) "08.02.0000"
DB_CODEPAGE: int(1208)
DB_NAME: string(6) "SAMPLE"
INST_NAME: string(8) "db2inst1"
SPECIAL_CHARS: string(2) "@#"
KEYWORDS: int(179)
DFT_ISOLATION: string(2) "CS"
ISOLATION_OPTION: string(12) "UR CS RS RR "
SQL_CONFORMANCE: string(7) "FIPS127"
PROCEDURES: bool(true)
IDENTIFIER_QUOTE_CHAR: string(1) """
LIKE_ESCAPE_CLAUSE: bool(true)
MAX_COL_NAME_LEN: int(30)
MAX_ROW_SIZE: int(32677)
MAX_IDENTIFIER_LEN: int(18)
MAX_INDEX_SIZE: int(1024)
MAX_PROC_NAME_LEN: int(128)
MAX_SCHEMA_NAME_LEN: int(30)
MAX_STATEMENT_LEN: int(2097152)
MAX_TABLE_NAME_LEN: int(128)
NON_NULLABLE_COLUMNS: bool(true)

参见

  • db2_client_info() - Returns an object with properties that describe the DB2 database client

db2_rollback
db2_set_option
IBM DB2 函数


Set options for connection or statement resources

db2_server_info
db2_special_columns
IBM DB2 函数
PHP Manual

db2_set_option

(PECL ibm_db2 >= 1.0.0)

db2_set_option — Set options for connection or statement resources

说明

bool db2_set_option ( resource $resource , array $options , int $type )

Sets options for a statement resource or a connection resource. You cannot set options for result set resources.

参数

resource

A valid statement resource as returned from db2_prepare() or a valid connection resource as returned from db2_connect() or db2_pconnect().

options

An associative array containing valid statement or connection options. This parameter can be used to change autocommit values, cursor types (scrollable or forward), and to specify the case of the column names (lower, upper, or natural) that will appear in a result set.

autocommit

Passing DB2_AUTOCOMMIT_ON turns autocommit on for the specified connection resource.

Passing DB2_AUTOCOMMIT_OFF turns autocommit off for the specified connection resource.

cursor

Passing DB2_FORWARD_ONLY specifies a forward-only cursor for a statement resource. This is the default cursor type, and is supported by all database servers.

Passing DB2_SCROLLABLE specifies a scrollable cursor for a statement resource. Scrollable cursors enable result set rows to be accessed in non-sequential order, but are only supported by IBM DB2 Universal Database databases.

binmode

Passing DB2_BINARY specifies that binary data will be returned as is. This is the default mode. This is the equivalent of setting ibm_db2.binmode=1 in php.ini.

Passing DB2_CONVERT specifies that binary data will be converted to hexadecimal encoding, and will be returned as such. This is the equivalent of setting ibm_db2.binmode=2 in php.ini.

Passing DB2_PASSTHRU specifies that binary data will be converted to NULL. This is the equivalent of setting ibm_db2.binmode=3 in php.ini.

db2_attr_case

Passing DB2_CASE_LOWER specifies that column names of the result set are returned in lower case.

Passing DB2_CASE_UPPER specifies that column names of the result set are returned in upper case.

Passing DB2_CASE_NATURAL specifies that column names of the result set are returned in natural case.

deferred_prepare

Passing DB2_DEFERRED_PREPARE_ON turns deferred prepare on for the specified statement resource.

Passing DB2_DEFERRED_PREPARE_OFF turns deferred prepare off for the specified statement resource.

The following new i5/OS options are available in ibm_db2 version 1.5.1 and later. These options apply only when running PHP and ibm_db2 natively on i5 systems.

i5_fetch_only

DB2_I5_FETCH_ON - Cursors are read-only and cannot be used for positioned updates or deletes. This is the default unless SQL_ATTR_FOR_FETCH_ONLY environment has been set to SQL_FALSE.

DB2_I5_FETCH_OFF - Cursors can be used for positioned updates and deletes.

The following new option is available in ibm_db2 version 1.8.0 and later.

rowcount

DB2_ROWCOUNT_PREFETCH_ON - Client can request the full row count prior to fetching, which means that db2_num_rows() returns the number of rows selected even when a ROLLFORWARD_ONLY cursor is used.

DB2_ROWCOUNT_PREFETCH_OFF - Client cannot request the full row count prior to fetching.

The following new options are available in ibm_db2 version 1.7.0 and later.

trusted_user

To switch the user to a trusted user, pass the User ID (String) of the trusted user as the value of this key. This option can be set on a connection resource only. To use this option, trusted context must be enabled on the connection resource.

trusted_password

The password (String) that corresponds to the user specified by the trusted_user key.

The following new options are available in ibm_db2 version 1.6.0 and later. These options provide useful tracking information that can be accessed during execution with db2_get_option().

Note:

When the value in each option is being set, some servers might not handle the entire length provided and might truncate the value.

To ensure that the data specified in each option is converted correctly when transmitted to a host system, use only the characters A through Z, 0 through 9, and the underscore (_) or period (.).

userid

SQL_ATTR_INFO_USERID - A pointer to a null-terminated character string used to identify the client user ID sent to the host database server when using DB2 Connect.

Note:

DB2 for z/OS and OS/390 servers support up to a length of 16 characters. This user-id is not to be confused with the authentication user-id, it is for identification purposes only and is not used for any authorization.

acctstr

SQL_ATTR_INFO_ACCTSTR - A pointer to a null-terminated character string used to identify the client accounting string sent to the host database server when using DB2 Connect.

Note:

DB2 for z/OS and OS/390 servers support up to a length of 200 characters.

applname

SQL_ATTR_INFO_APPLNAME - A pointer to a null-terminated character string used to identify the client application name sent to the host database server when using DB2 Connect.

Note:

DB2 for z/OS and OS/390 servers support up to a length of 32 characters.

wrkstnname

SQL_ATTR_INFO_WRKSTNNAME - A pointer to a null-terminated character string used to identify the client workstation name sent to the host database server when using DB2 Connect.

Note:

DB2 for z/OS and OS/390 servers support up to a length of 18 characters.

type

An integer value that specifies the type of resource that was passed into the function. The type of resource and this value must correspond.

Passing 1 as the value specifies that a connection resource has been passed into the function.

Passing any integer not equal to 1 as the value specifies that a statement resource has been passed into the function.

The following table specifies which options are compatible with the available resource types:

Resource-Parameter Matrix
Key | Value | Resource Type
 |  | Connection | Statement | Result Set
autocommit | DB2_AUTOCOMMIT_ON | X | - | -
autocommit | DB2_AUTOCOMMIT_OFF | X | - | -
cursor | DB2_SCROLLABLE | - | X | -
cursor | DB2_FORWARD_ONLY | - | X | -
binmode | DB2_BINARY | X | X | -
binmode | DB2_CONVERT | X | X | -
binmode | DB2_PASSTHRU | X | X | -
db2_attr_case | DB2_CASE_LOWER | X | X | -
db2_attr_case | DB2_CASE_UPPER | X | X | -
db2_attr_case | DB2_CASE_NATURAL | X | X | -
deferred_prepare | DB2_DEFERRED_PREPARE_ON | - | X | -
deferred_prepare | DB2_DEFERRED_PREPARE_OFF | - | X | -
i5_fetch_only | DB2_I5_FETCH_ON | - | X | -
i5_fetch_only | DB2_I5_FETCH_OFF | - | X | -
rowcount | DB2_ROWCOUNT_PREFETCH_ON | - | X | -
rowcount | DB2_ROWCOUNT_PREFETCH_OFF | - | X | -
trusted_user | <USER NAME> (String) | X | - | -
trusted_password | <PASSWORD> (String) | X | - | -
userid | SQL_ATTR_INFO_USERID | X | X | -
acctstr | SQL_ATTR_INFO_ACCTSTR | X | X | -
applname | SQL_ATTR_INFO_APPLNAME | X | X | -
wrkstnname | SQL_ATTR_INFO_WRKSTNNAME | X | X | -

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Setting one parameter with a connection resource

<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';

/* Connection String */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";

/* Obtain Connection Resource */
$conn = db2_connect($conn_string, '', '');

/* Create the associative options array with valid key-value pairs */
$options = array('autocommit' => DB2_AUTOCOMMIT_ON);

/* Call the function using the correct resource, options array, and type values */
$result = db2_set_option($conn, $options, 1);

/* Check if all options could be set correctly */
if($result)
{
  echo 'Options Set Successfully';
}
else
{
  echo 'Could Not Set Options';
}
?>

以上例程会输出：

Options Set Successfully

Example #2 Setting multiple parameters with a connection resource

<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';

/* Connection String */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";

/* Obtain Connection Resource */
$conn = db2_connect($conn_string, '', '');

/* Create the associative options array with valid key-value pairs */
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
                    'binmode' => DB2_PASSTHRU,
              'db2_attr_case' => DB2_CASE_UPPER,
                     'cursor' => DB2_SCROLLABLE);

/* Call the function using the correct resource, options array, and type values */
$result = db2_set_option($conn, $options, 1);

/* Check if all options could be set correctly */
if($result)
{
  echo 'Options Set Successfully';
}
else
{
  echo 'Could Not Set Options';
}
?>

以上例程会输出：

Options Set Successfully

Example #3 Setting multiple parameters with an invalid key

<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';

/* Connection String */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";

/* Obtain Connection Resource */
$conn = db2_connect($conn_string, '', '');

/* Create the associative options array with valid key-value pairs */
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
             'MY_INVALID_KEY' => DB2_PASSTHRU,
              'db2_attr_case' => DB2_CASE_UPPER,
                     'cursor' => DB2_SCROLLABLE);

/* Call the function using the correct resource, options array, and type values */
$result = db2_set_option($conn, $options, 1);

/* Check if all options could be set correctly */
if($result)
{
  echo 'Options Set Successfully';
}
else
{
  echo 'Could Not Set Options';
}
?>

以上例程会输出：

Could Not Set Options

Example #4 Setting multiple parameters with an invalid value

<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';

/* Connection String */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";

/* Obtain Connection Resource */
$conn = db2_connect($conn_string, '', '');

/* Create the associative options array with valid key-value pairs */
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
                    'binmode' => 'INVALID_VALUE',
              'db2_attr_case' => DB2_CASE_UPPER,
                     'cursor' => DB2_SCROLLABLE);

/* Call the function using the correct resource, options array, and type values */
$result = db2_set_option($conn, $options, 1);

/* Check if all options could be set correctly */
if($result)
{
  echo 'Options Set Successfully';
}
else
{
  echo 'Could Not Set Options';
}
?>

以上例程会输出：

Could Not Set Options

Example #5 Setting multiple parameters with a connection resource and the wrong type

<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';

/* Connection String */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";

/* Obtain Connection Resource */
$conn = db2_connect($conn_string, '', '');

/* Create the associative options array with valid key-value pairs */
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
                    'binmode' => DB2_PASSTHRU,
              'db2_attr_case' => DB2_CASE_UPPER,
                     'cursor' => DB2_SCROLLABLE);

/* Call the function using the correct resource, options array, and the wrong type value */
$result = db2_set_option($conn, $options, 2);

/* Check if all options could be set correctly */
if($result)
{
  echo 'Options Set Successfully';
}
else
{
  echo 'Could Not Set Options';
}
?>

以上例程会输出：

Could Not Set Options

Example #6 Setting multiple parameters with the wrong resource

<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';

/* Connection String */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";

/* Obtain Connection Resource */
$conn = db2_connect($conn_string, '', '');

/* Create the associative options array with valid key-value pairs */
$options = array('autocommit' => DB2_AUTOCOMMIT_OFF,
                    'binmode' => DB2_PASSTHRU,
              'db2_attr_case' => DB2_CASE_UPPER,
                     'cursor' => DB2_SCROLLABLE);

$stmt = db2_prepare($conn, 'SELECT * FROM EMPLOYEE');

/* Call the function using the wrong resource, and the correct options array, and type values */
$result = db2_set_option($stmt, $options, 1);

/* Check if all options could be set correctly */
if($result)
{
  echo 'Options Set Successfully';
}
else
{
  echo 'Could Not Set Options';
}
?>

以上例程会输出：

Could Not Set Options

Example #7 Putting it all together

<?php
/* Database Connection Parameters */
$database = 'SAMPLE';
$hostname = 'localhost';
$port = 50000;
$protocol = 'TCPIP';
$username = 'db2inst1';
$password = 'ibmdb2';

/* Connection String */
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;";
$conn_string .= "HOSTNAME=$hostname;PORT=$port;PROTOCOL=$protocol;";
$conn_string .= "UID=$username;PWD=$password;";

/* Obtain Connection Resource */
$conn = db2_connect($conn_string, '', '');

/* Create the associative options array with valid key-value pairs */
$options = array('db2_attr_case' => DB2_CASE_LOWER,
                        'cursor' => DB2_SCROLLABLE);

$stmt = db2_prepare($conn, 'SELECT * FROM EMPLOYEE WHERE EMPNO = ? OR EMPNO = ?');

/* Call the function using the correct resource, options array, and type values */
$option_result = db2_set_option($stmt, $options, 2);
$result = db2_execute($stmt, array('000130', '000140'));

/* Get Row 2 before Row 1 since Scrollable Cursor */
print_r(db2_fetch_assoc($stmt, 2));
print '<br /><br />';
print_r(db2_fetch_assoc($stmt, 1));

?>

以上例程会输出：

Array
(
    [empno] => 000140
    [firstnme] => HEATHER
    [midinit] => A
    [lastname] => NICHOLLS
    [workdept] => C01
    [phoneno] => 1793
    [hiredate] => 1976-12-15
    [job] => ANALYST
    [edlevel] => 18
    [sex] => F
    [birthdate] => 1946-01-19
    [salary] => 28420.00
    [bonus] => 600.00
    [comm] => 2274.00
)

Array
(
    [empno] => 000130
    [firstnme] => DELORES
    [midinit] => M
    [lastname] => QUINTANA
    [workdept] => C01
    [phoneno] => 4578
    [hiredate] => 1971-07-28
    [job] => ANALYST
    [edlevel] => 16
    [sex] => F
    [birthdate] => 1925-09-15
    [salary] => 23800.00
    [bonus] => 500.00
    [comm] => 1904.00
)

Example #8 i5/OS cursors are read-only

<?php
  $conn = db2_connect("", "", "", array("i5_lib"=>"nobody"));
  $stmt = db2_prepare($conn, 'select * from names where first = ?');
  $name = "first2";
  db2_bind_param($stmt, 1, "name", DB2_PARAM_IN);
  $options = array("i5_fetch_only"=>DB2_I5_FETCH_ON);
  db2_set_option($stmt,$options,0);
  if (db2_execute($stmt)) {
    while ($row = db2_fetch_array($stmt)) {
      echo "{$row[0]} {$row[1]}";
    }
  }
?>

以上例程会输出：

first2 last2

参见

  • db2_connect() - Returns a connection to a database
  • db2_pconnect() - Returns a persistent connection to a database
  • db2_exec() - Executes an SQL statement directly
  • db2_prepare() - Prepares an SQL statement to be executed
  • db2_cursor_type() - Returns the cursor type used by a statement resource

db2_server_info
db2_special_columns
IBM DB2 函数


Returns a result set listing the unique row identifier columns for a table

db2_set_option
db2_statistics
IBM DB2 函数
PHP Manual

db2_special_columns

(PECL ibm_db2 >= 1.0.0)

db2_special_columns — Returns a result set listing the unique row identifier columns for a table

说明

resource db2_special_columns ( resource $connection , string $qualifier , string $schema , string $table_name , int $scope )

Returns a result set listing the unique row identifier columns for a table.

参数

connection

A valid connection to an IBM DB2, Cloudscape, or Apache Derby database.

qualifier

A qualifier for DB2 databases running on OS/390 or z/OS servers. For other databases, pass NULL or an empty string.

schema

The schema which contains the tables.

table_name

The name of the table.

scope

Integer value representing the minimum duration for which the unique row identifier is valid. This can be one of the following values:

Integer value | SQL constant | Description
0 | SQL_SCOPE_CURROW | Row identifier is valid only while the cursor is positioned on the row.
1 | SQL_SCOPE_TRANSACTION | Row identifier is valid for the duration of the transaction.
2 | SQL_SCOPE_SESSION | Row identifier is valid for the duration of the connection.

返回值

Returns a statement resource with a result set containing rows with unique row identifier information for a table. The rows are composed of the following columns:

Column name | Description
SCOPE

Integer value | SQL constant | Description
0 | SQL_SCOPE_CURROW | Row identifier is valid only while the cursor is positioned on the row.
1 | SQL_SCOPE_TRANSACTION | Row identifier is valid for the duration of the transaction.
2 | SQL_SCOPE_SESSION | Row identifier is valid for the duration of the connection.
COLUMN_NAME | Name of the unique column.
DATA_TYPE | SQL data type for the column.
TYPE_NAME | Character string representation of the SQL data type for the column.
COLUMN_SIZE | An integer value representing the size of the column.
BUFFER_LENGTH | Maximum number of bytes necessary to store data from this column.
DECIMAL_DIGITS | The scale of the column, or NULL where scale is not applicable.
NUM_PREC_RADIX | An integer value of either 10 (representing an exact numeric data type), 2 (representing an approximate numeric data type), or NULL (representing a data type for which radix is not applicable).
PSEUDO_COLUMN | Always returns 1.

参见

  • db2_column_privileges() - Returns a result set listing the columns and associated privileges for a table
  • db2_columns() - Returns a result set listing the columns and associated metadata for a table
  • db2_foreign_keys() - Returns a result set listing the foreign keys for a table
  • db2_primary_keys() - Returns a result set listing primary keys for a table
  • db2_procedure_columns() - Returns a result set listing stored procedure parameters
  • db2_procedures() - Returns a result set listing the stored procedures registered in a database
  • db2_statistics() - Returns a result set listing the index and statistics for a table
  • db2_table_privileges() - Returns a result set listing the tables and associated privileges in a database
  • db2_tables() - Returns a result set listing the tables and associated metadata in a database

db2_set_option
db2_statistics
IBM DB2 函数


Returns a result set listing the index and statistics for a table

db2_special_columns
db2_stmt_error
IBM DB2 函数
PHP Manual

db2_statistics

(PECL ibm_db2 >= 1.0.0)

db2_statistics — Returns a result set listing the index and statistics for a table

说明

resource db2_statistics ( resource $connection , string $qualifier , string $schema , string $table-name , bool $unique )

Returns a result set listing the index and statistics for a table.

参数

connection

A valid connection to an IBM DB2, Cloudscape, or Apache Derby database.

qualifier

A qualifier for DB2 databases running on OS/390 or z/OS servers. For other databases, pass NULL or an empty string.

schema

The schema that contains the targeted table. If this parameter is NULL, the statistics and indexes are returned for the schema of the current user.

table_name

The name of the table.

unique

An integer value representing the type of index information to return.

0

Return only the information for unique indexes on the table.

1

Return the information for all indexes on the table.

返回值

Returns a statement resource with a result set containing rows describing the statistics and indexes for the base tables matching the specified parameters. The rows are composed of the following columns:

Column name | Description
TABLE_CAT | The catalog that contains the table. The value is NULL if this table does not have catalogs.
TABLE_SCHEM | Name of the schema that contains the table.
TABLE_NAME | Name of the table.
NON_UNIQUE

An integer value representing whether the index prohibits unique values, or whether the row represents statistics on the table itself:

Return value | Parameter type
0 (SQL_FALSE) | The index allows duplicate values.
1 (SQL_TRUE) | The index values must be unique.
NULL | This row is statistics information for the table itself.
INDEX_QUALIFIER | A string value representing the qualifier that would have to be prepended to INDEX_NAME to fully qualify the index.
INDEX_NAME | A string representing the name of the index.
TYPE

An integer value representing the type of information contained in this row of the result set:

Return value | Parameter type
0 (SQL_TABLE_STAT) | The row contains statistics about the table itself.
1 (SQL_INDEX_CLUSTERED) | The row contains information about a clustered index.
2 (SQL_INDEX_HASH) | The row contains information about a hashed index.
3 (SQL_INDEX_OTHER) | The row contains information about a type of index that is neither clustered nor hashed.
ORDINAL_POSITION | The 1-indexed position of the column in the index. NULL if the row contains statistics information about the table itself.
COLUMN_NAME | The name of the column in the index. NULL if the row contains statistics information about the table itself.
ASC_OR_DESC | A if the column is sorted in ascending order, D if the column is sorted in descending order, NULL if the row contains statistics information about the table itself.
CARDINALITY

If the row contains information about an index, this column contains an integer value representing the number of unique values in the index.

If the row contains information about the table itself, this column contains an integer value representing the number of rows in the table.

PAGES

If the row contains information about an index, this column contains an integer value representing the number of pages used to store the index.

If the row contains information about the table itself, this column contains an integer value representing the number of pages used to store the table.

FILTER_CONDITION | Always returns NULL.

参见

  • db2_column_privileges() - Returns a result set listing the columns and associated privileges for a table
  • db2_columns() - Returns a result set listing the columns and associated metadata for a table
  • db2_foreign_keys() - Returns a result set listing the foreign keys for a table
  • db2_primary_keys() - Returns a result set listing primary keys for a table
  • db2_procedure_columns() - Returns a result set listing stored procedure parameters
  • db2_procedures() - Returns a result set listing the stored procedures registered in a database
  • db2_special_columns() - Returns a result set listing the unique row identifier columns for a table
  • db2_table_privileges() - Returns a result set listing the tables and associated privileges in a database
  • db2_tables() - Returns a result set listing the tables and associated metadata in a database

db2_special_columns
db2_stmt_error
IBM DB2 函数


Returns a string containing the SQLSTATE returned by an SQL statement

db2_statistics
db2_stmt_errormsg
IBM DB2 函数
PHP Manual

db2_stmt_error

(PECL ibm_db2 >= 1.0.0)

db2_stmt_error — Returns a string containing the SQLSTATE returned by an SQL statement

说明

string db2_stmt_error ([ resource $stmt ] )

Returns a string containing the SQLSTATE value returned by an SQL statement.

If you do not pass a statement resource as an argument to db2_stmt_error(), the driver returns the SQLSTATE value associated with the last attempt to return a statement resource, for example, from db2_prepare() or db2_exec().

To learn what the SQLSTATE value means, you can issue the following command at a DB2 Command Line Processor prompt: db2 '? sqlstate-value'. You can also call db2_stmt_errormsg() to retrieve an explicit error message and the associated SQLCODE value.

参数

stmt

A valid statement resource.

返回值

Returns a string containing an SQLSTATE value.

参见

  • db2_conn_error() - Returns a string containing the SQLSTATE returned by the last connection attempt
  • db2_conn_errormsg() - Returns the last connection error message and SQLCODE value
  • db2_stmt_errormsg() - Returns a string containing the last SQL statement error message

db2_statistics
db2_stmt_errormsg
IBM DB2 函数


Returns a string containing the last SQL statement error message

db2_stmt_error
db2_table_privileges
IBM DB2 函数
PHP Manual

db2_stmt_errormsg

(PECL ibm_db2 >= 1.0.0)

db2_stmt_errormsg — Returns a string containing the last SQL statement error message

说明

string db2_stmt_errormsg ([ resource $stmt ] )

Returns a string containing the last SQL statement error message.

If you do not pass a statement resource as an argument to db2_stmt_errormsg(), the driver returns the error message associated with the last attempt to return a statement resource, for example, from db2_prepare() or db2_exec().

参数

stmt

A valid statement resource.

返回值

Returns a string containing the error message and SQLCODE value for the last error that occurred issuing an SQL statement.

参见

  • db2_conn_error() - Returns a string containing the SQLSTATE returned by the last connection attempt
  • db2_conn_errormsg() - Returns the last connection error message and SQLCODE value
  • db2_stmt_error() - Returns a string containing the SQLSTATE returned by an SQL statement

db2_stmt_error
db2_table_privileges
IBM DB2 函数


Returns a result set listing the tables and associated privileges in a database

db2_stmt_errormsg
db2_tables
IBM DB2 函数
PHP Manual

db2_table_privileges

(PECL ibm_db2 >= 1.0.0)

db2_table_privileges — Returns a result set listing the tables and associated privileges in a database

说明

resource db2_table_privileges ( resource $connection [, string $qualifier [, string $schema [, string $table_name ]]] )

Returns a result set listing the tables and associated privileges in a database.

参数

connection

A valid connection to an IBM DB2, Cloudscape, or Apache Derby database.

qualifier

A qualifier for DB2 databases running on OS/390 or z/OS servers. For other databases, pass NULL or an empty string.

schema

The schema which contains the tables. This parameter accepts a search pattern containing _ and % as wildcards.

table_name

The name of the table. This parameter accepts a search pattern containing _ and % as wildcards.

返回值

Returns a statement resource with a result set containing rows describing the privileges for the tables that match the specified parameters. The rows are composed of the following columns:

Column name | Description
TABLE_CAT | The catalog that contains the table. The value is NULL if this table does not have catalogs.
TABLE_SCHEM | Name of the schema that contains the table.
TABLE_NAME | Name of the table.
GRANTOR | Authorization ID of the user who granted the privilege.
GRANTEE | Authorization ID of the user to whom the privilege was granted.
PRIVILEGE | The privilege that has been granted. This can be one of ALTER, CONTROL, DELETE, INDEX, INSERT, REFERENCES, SELECT, or UPDATE.
IS_GRANTABLE | A string value of "YES" or "NO" indicating whether the grantee can grant the privilege to other users.

参见

  • db2_column_privileges() - Returns a result set listing the columns and associated privileges for a table
  • db2_columns() - Returns a result set listing the columns and associated metadata for a table
  • db2_foreign_keys() - Returns a result set listing the foreign keys for a table
  • db2_primary_keys() - Returns a result set listing primary keys for a table
  • db2_procedure_columns() - Returns a result set listing stored procedure parameters
  • db2_procedures() - Returns a result set listing the stored procedures registered in a database
  • db2_special_columns() - Returns a result set listing the unique row identifier columns for a table
  • db2_statistics() - Returns a result set listing the index and statistics for a table
  • db2_tables() - Returns a result set listing the tables and associated metadata in a database

db2_stmt_errormsg
db2_tables
IBM DB2 函数


Returns a result set listing the tables and associated metadata in a database

db2_table_privileges
Informix
IBM DB2 函数
PHP Manual

db2_tables

(PECL ibm_db2 >= 1.0.0)

db2_tables — Returns a result set listing the tables and associated metadata in a database

说明

resource db2_tables ( resource $connection [, string $qualifier [, string $schema [, string $table-name [, string $table-type ]]]] )

Returns a result set listing the tables and associated metadata in a database.

参数

connection

A valid connection to an IBM DB2, Cloudscape, or Apache Derby database.

qualifier

A qualifier for DB2 databases running on OS/390 or z/OS servers. For other databases, pass NULL or an empty string.

schema

The schema which contains the tables. This parameter accepts a search pattern containing _ and % as wildcards.

table-name

The name of the table. This parameter accepts a search pattern containing _ and % as wildcards.

table-type

A list of comma-delimited table type identifiers. To match all table types, pass NULL or an empty string. Valid table type identifiers include: ALIAS, HIERARCHY TABLE, INOPERATIVE VIEW, NICKNAME, MATERIALIZED QUERY TABLE, SYSTEM TABLE, TABLE, TYPED TABLE, TYPED VIEW, and VIEW.

返回值

Returns a statement resource with a result set containing rows describing the tables that match the specified parameters. The rows are composed of the following columns:

Column name | Description
TABLE_CAT | The catalog that contains the table. The value is NULL if this table does not have catalogs.
TABLE_SCHEM | Name of the schema that contains the table.
TABLE_NAME | Name of the table.
TABLE_TYPE | Table type identifier for the table.
REMARKS | Description of the table.

参见

  • db2_column_privileges() - Returns a result set listing the columns and associated privileges for a table
  • db2_columns() - Returns a result set listing the columns and associated metadata for a table
  • db2_foreign_keys() - Returns a result set listing the foreign keys for a table
  • db2_primary_keys() - Returns a result set listing primary keys for a table
  • db2_procedure_columns() - Returns a result set listing stored procedure parameters
  • db2_procedures() - Returns a result set listing the stored procedures registered in a database
  • db2_special_columns() - Returns a result set listing the unique row identifier columns for a table
  • db2_statistics() - Returns a result set listing the index and statistics for a table
  • db2_table_privileges() - Returns a result set listing the tables and associated privileges in a database

db2_table_privileges
Informix
IBM DB2 函数


Informix

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Informix 函数
    • ifx_affected_rows — Get number of rows affected by a query
    • ifx_blobinfile_mode — Set the default blob mode for all select queries
    • ifx_byteasvarchar — Set the default byte mode
    • ifx_close — Close Informix connection
    • ifx_connect — Open Informix server connection
    • ifx_copy_blob — Duplicates the given blob object
    • ifx_create_blob — Creates an blob object
    • ifx_create_char — Creates an char object
    • ifx_do — Execute a previously prepared SQL-statement
    • ifx_error — Returns error code of last Informix call
    • ifx_errormsg — Returns error message of last Informix call
    • ifx_fetch_row — Get row as an associative array
    • ifx_fieldproperties — List of SQL fieldproperties
    • ifx_fieldtypes — List of Informix SQL fields
    • ifx_free_blob — Deletes the blob object
    • ifx_free_char — Deletes the char object
    • ifx_free_result — Releases resources for the query
    • ifx_get_blob — Return the content of a blob object
    • ifx_get_char — Return the content of the char object
    • ifx_getsqlca — Get the contents of sqlca.sqlerrd[0..5] after a query
    • ifx_htmltbl_result — Formats all rows of a query into a HTML table
    • ifx_nullformat — Sets the default return value on a fetch row
    • ifx_num_fields — Returns the number of columns in the query
    • ifx_num_rows — Count the rows already fetched from a query
    • ifx_pconnect — Open persistent Informix connection
    • ifx_prepare — Prepare an SQL-statement for execution
    • ifx_query — Send Informix query
    • ifx_textasvarchar — Set the default text mode
    • ifx_update_blob — Updates the content of the blob object
    • ifx_update_char — Updates the content of the char object
    • ifxus_close_slob — Deletes the slob object
    • ifxus_create_slob — Creates an slob object and opens it
    • ifxus_free_slob — Deletes the slob object
    • ifxus_open_slob — Opens an slob object
    • ifxus_read_slob — Reads nbytes of the slob object
    • ifxus_seek_slob — Sets the current file or seek position
    • ifxus_tell_slob — Returns the current file or seek position
    • ifxus_write_slob — Writes a string into the slob object
db2_tables
简介
针对各数据库系统对应的扩展


简介

The Informix driver for Informix (IDS) 7.x, SE 7.x, Universal Server (IUS) 9.x and IDS 2000 is implemented in "ifx.ec" and "php_informix.h" in the informix extension directory. IDS 7.x support is fairly complete, with full support for BYTE and TEXT columns. IUS 9.x support is partly finished: the new data types are there, but SLOB and CLOB support is still under construction.

Note:

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.2.1.

Informix
安装／配置
Informix


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Informix


需求

Note: 配置信息

You need a version of ESQL/C to compile the PHP Informix driver. ESQL/C versions from 7.2x on should be OK. ESQL/C is now part of the Informix Client SDK. 要编译 PHP Informix 驱动需要 ESQL/C 支持，最低版本是 ESQL/C 7.2x。现在 ESQL/C是 Informix 客户端开发工具（CSDK）的一部分。

在运行 configure 之前，请确认环境变量 INFORMIXDIR 已经设置，环境变量 PATH 中包含 $INFORMIXDIR/bin。 script.

安装／配置
安装
安装／配置


安装

为使 PHP 解析器支持 Informix 模块，需要在编译 PHP 时加入选项 --with-informix[=DIR] , 其中的 DIR 指的是 Informix 的安装目录（INFORMIXDIR）,默认是空。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Note:

Make sure that the Informix environment variables INFORMIXDIR and INFORMIXSERVER are available to the PHP ifx driver, and that the INFORMIX bin directory is in the PATH. Check this by running a script that contains a call to phpinfo() before you start testing. The phpinfo() output should list these environment variables. This is true for both CGI php and Apache mod_php. You may have to set these environment variables in your Apache startup script.

The Informix shared libraries should also be available to the loader (check LD_LIBRARY_PATH or ld.so.conf/ldconfig).

Note: Some notes on the use of BLOBs (TEXT and BYTE columns)

BLOBs are normally addressed by BLOB identifiers. Select queries return a "blob id" for every BYTE and TEXT column. You can get at the contents with "string_var = ifx_get_blob($blob_id);" if you choose to get the BLOBs in memory (with: "ifx_blobinfile(0);"). If you prefer to receive the content of BLOB columns in a file, use "ifx_blobinfile(1);", and "ifx_get_blob($blob_id);" will get you the filename. Use normal file I/O to get at the blob contents.

For insert/update queries you must create these "blob id's" yourself with "ifx_create_blob();". You then plug the blob id's into an array, and replace the blob columns with a question mark (?) in the query string. For updates/inserts, you are responsible for setting the blob contents with ifx_update_blob().

The behaviour of BLOB columns can be altered by configuration variables that also can be set at runtime:

configuration variable: ifx.textasvarchar

configuration variable: ifx.byteasvarchar

runtime functions:

ifx_textasvarchar(0): use blob id's for select queries with TEXT columns

ifx_byteasvarchar(0): use blob id's for select queries with BYTE columns

ifx_textasvarchar(1): return TEXT columns as if they were VARCHAR columns, so that you don't need to use blob id's for select queries.

ifx_byteasvarchar(1): return BYTE columns as if they were VARCHAR columns, so that you don't need to use blob id's for select queries.

configuration variable: ifx.blobinfile

runtime function:

ifx_blobinfile_mode(0): return BYTE columns in memory, the blob id lets you get at the contents.

ifx_blobinfile_mode(1): return BYTE columns in a file, the blob id lets you get at the file name.

If you set ifx_text/byteasvarchar to 1, you can use TEXT and BYTE columns in select queries just like normal (but rather long) VARCHAR fields. Since all strings are "counted" in PHP, this remains "binary safe". It is up to you to handle this correctly. The returned data can contain anything, you are responsible for the contents.

If you set ifx_blobinfile to 1, use the file name returned by ifx_get_blob(..) to get at the blob contents. Note that in this case YOU ARE RESPONSIBLE FOR DELETING THE TEMPORARY FILES CREATED BY INFORMIX when fetching the row. Every new row fetched will create new temporary files for every BYTE column.

The location of the temporary files can be influenced by the environment variable "blobdir", default is "." (the current directory). Something like: putenv(blobdir=tmpblob"); will ease the cleaning up of temp files accidentally left behind (their names all start with "blb").

Note: Automatically trimming "char" (SQLCHAR and SQLNCHAR) data

This can be set with the configuration variable

ifx.charasvarchar: if set to 1 trailing spaces will be automatically trimmed, to save you some "chopping".

Note: NULL values

The configuration variable ifx.nullformat (and the runtime function ifx_nullformat()) when set to TRUE will return NULL columns as the string "NULL", when set to FALSE they return the empty string. This allows you to discriminate between NULL columns and empty columns.

Informix configuration options
名字 | 默认 | 可修改范围 | 更新日志
ifx.allow_persistent | "1" | PHP_INI_SYSTEM | Removed in PHP 5.2.1.
ifx.max_persistent | "-1" | PHP_INI_SYSTEM | Removed in PHP 5.2.1.
ifx.max_links | "-1" | PHP_INI_SYSTEM | Removed in PHP 5.2.1.
ifx.default_host | NULL | PHP_INI_SYSTEM | Removed in PHP 5.2.1.
ifx.default_user | NULL | PHP_INI_SYSTEM | Removed in PHP 5.2.1.
ifx.default_password | NULL | PHP_INI_SYSTEM | Removed in PHP 5.2.1.
ifx.blobinfile | "1" | PHP_INI_ALL | Removed in PHP 5.2.1.
ifx.textasvarchar | "0" | PHP_INI_ALL | Removed in PHP 5.2.1.
ifx.byteasvarchar | "0" | PHP_INI_ALL | Removed in PHP 5.2.1.
ifx.charasvarchar | "0" | PHP_INI_ALL | Removed in PHP 5.2.1.
ifx.nullformat | "0" | PHP_INI_ALL | Removed in PHP 5.2.1.
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

ifx.allow_persistent boolean

Whether to allow persistent Informix connections.

ifx.max_persistent integer

The maximum number of persistent Informix connections per process.

ifx.max_links integer

The maximum number of Informix connections per process, including persistent connections.

ifx.default_host string

The default host to connect to when no host is specified in ifx_connect() or ifx_pconnect(). Doesn't apply in 安全模式.

ifx.default_user string

The default user id to use when none is specified in ifx_connect() or ifx_pconnect(). Doesn't apply in 安全模式.

ifx.default_password string

The default password to use when none is specified in ifx_connect() or ifx_pconnect(). Doesn't apply in 安全模式.

ifx.blobinfile boolean

Set to TRUE if you want to return blob columns in a file, FALSE if you want them in memory. You can override the setting at runtime with ifx_blobinfile_mode().

ifx.textasvarchar boolean

Set to TRUE if you want to return TEXT columns as normal strings in select statements, FALSE if you want to use blob id parameters. You can override the setting at runtime with ifx_textasvarchar().

ifx.byteasvarchar boolean

Set to TRUE if you want to return BYTE columns as normal strings in select queries, FALSE if you want to use blob id parameters. You can override the setting at runtime with ifx_textasvarchar().

ifx.charasvarchar boolean

Set to TRUE if you want to trim trailing spaces from CHAR columns when fetching them.

ifx.nullformat boolean

Set to TRUE if you want to return NULL columns as the literal string "NULL", FALSE if you want them returned as the empty string "". You can override this setting at runtime with ifx_nullformat().

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

IFX_SCROLL (integer)
IFX_HOLD (integer)
IFX_LO_RDONLY (integer)
IFX_LO_WRONLY (integer)
IFX_LO_APPEND (integer)
IFX_LO_RDWR (integer)
IFX_LO_BUFFER (integer)
IFX_LO_NOBUFFER (integer)
资源类型
Informix 函数
Informix


Informix 函数

Table of Contents

  • ifx_affected_rows — Get number of rows affected by a query
  • ifx_blobinfile_mode — Set the default blob mode for all select queries
  • ifx_byteasvarchar — Set the default byte mode
  • ifx_close — Close Informix connection
  • ifx_connect — Open Informix server connection
  • ifx_copy_blob — Duplicates the given blob object
  • ifx_create_blob — Creates an blob object
  • ifx_create_char — Creates an char object
  • ifx_do — Execute a previously prepared SQL-statement
  • ifx_error — Returns error code of last Informix call
  • ifx_errormsg — Returns error message of last Informix call
  • ifx_fetch_row — Get row as an associative array
  • ifx_fieldproperties — List of SQL fieldproperties
  • ifx_fieldtypes — List of Informix SQL fields
  • ifx_free_blob — Deletes the blob object
  • ifx_free_char — Deletes the char object
  • ifx_free_result — Releases resources for the query
  • ifx_get_blob — Return the content of a blob object
  • ifx_get_char — Return the content of the char object
  • ifx_getsqlca — Get the contents of sqlca.sqlerrd[0..5] after a query
  • ifx_htmltbl_result — Formats all rows of a query into a HTML table
  • ifx_nullformat — Sets the default return value on a fetch row
  • ifx_num_fields — Returns the number of columns in the query
  • ifx_num_rows — Count the rows already fetched from a query
  • ifx_pconnect — Open persistent Informix connection
  • ifx_prepare — Prepare an SQL-statement for execution
  • ifx_query — Send Informix query
  • ifx_textasvarchar — Set the default text mode
  • ifx_update_blob — Updates the content of the blob object
  • ifx_update_char — Updates the content of the char object
  • ifxus_close_slob — Deletes the slob object
  • ifxus_create_slob — Creates an slob object and opens it
  • ifxus_free_slob — Deletes the slob object
  • ifxus_open_slob — Opens an slob object
  • ifxus_read_slob — Reads nbytes of the slob object
  • ifxus_seek_slob — Sets the current file or seek position
  • ifxus_tell_slob — Returns the current file or seek position
  • ifxus_write_slob — Writes a string into the slob object
预定义常量
ifx_affected_rows
Informix


Get number of rows affected by a query

Informix 函数
ifx_blobinfile_mode
Informix 函数
PHP Manual

ifx_affected_rows

(PHP 4, PHP <=5.2.0)

ifx_affected_rows — Get number of rows affected by a query

说明

int ifx_affected_rows ( resource $result_id )

Returns the number of rows affected by a query associated with result_id.

For inserts, updates and deletes the number is the real number (sqlerrd[2]) of affected rows. For selects it is an estimate (sqlerrd[0]). Don't rely on it. The database server can never return the actual number of rows that will be returned by a SELECT because it has not even begun fetching them at this stage (just after the "PREPARE" when the optimizer has determined the query plan).

Useful after ifx_prepare() to limit queries to reasonable result sets.

参数

result_id

A valid result id returned by ifx_query() or ifx_prepare().

返回值

Returns the number of rows as an integer.

范例

Example #1 Informix affected rows

<?php
$rid = ifx_prepare("select * from emp
                     where name like " . $name, $connid);
if (! $rid) {
    /* ... error ... */
}
$rowcount = ifx_affected_rows($rid);
if ($rowcount > 1000) {
    printf ("Too many rows in result set (%d)\n<br />", $rowcount);
    die ("Please restrict your query<br />\n");
}
?>

参见

  • ifx_num_rows() - Count the rows already fetched from a query

Informix 函数
ifx_blobinfile_mode
Informix 函数


Set the default blob mode for all select queries

ifx_affected_rows
ifx_byteasvarchar
Informix 函数
PHP Manual

ifx_blobinfile_mode

(PHP 4, PHP <=5.2.0)

ifx_blobinfile_mode — Set the default blob mode for all select queries

说明

bool ifx_blobinfile_mode ( int $mode )

Set the default blob mode for all select queries.

参数

mode

Mode "0" means save Byte-Blobs in memory, and mode "1" means save Byte-Blobs in a file.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ifx_affected_rows
ifx_byteasvarchar
Informix 函数


Set the default byte mode

ifx_blobinfile_mode
ifx_close
Informix 函数
PHP Manual

ifx_byteasvarchar

(PHP 4, PHP <=5.2.0)

ifx_byteasvarchar — Set the default byte mode

说明

bool ifx_byteasvarchar ( int $mode )

Sets the default byte mode for all select-queries.

参数

mode

Mode "0" will return a blob id, and mode "1" will return a varchar with text content.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ifx_textasvarchar() - Set the default text mode

ifx_blobinfile_mode
ifx_close
Informix 函数


Close Informix connection

ifx_byteasvarchar
ifx_connect
Informix 函数
PHP Manual

ifx_close

(PHP 4, PHP <=5.2.0)

ifx_close — Close Informix connection

说明

bool ifx_close ([ resource $link_identifier ] )

ifx_close() closes the link to an Informix database that's associated with the specified link identifier.

Note that this isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution.

ifx_close() will not close persistent links generated by ifx_pconnect().

参数

link_identifier

The link identifier. If not specified, the last opened link is assumed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Closing a Informix connection

<?php
$conn_id = ifx_connect ("mydb@ol_srv", "itsme", "mypassword");
/* ... some queries and stuff ... */
ifx_close($conn_id);
?>

参见

  • ifx_connect() - Open Informix server connection
  • ifx_pconnect() - Open persistent Informix connection

ifx_byteasvarchar
ifx_connect
Informix 函数


Open Informix server connection

ifx_close
ifx_copy_blob
Informix 函数
PHP Manual

ifx_connect

(PHP 4, PHP <=5.2.0)

ifx_connect — Open Informix server connection

说明

resource ifx_connect ([ string $database [, string $userid [, string $password ]]] )

ifx_connect() establishes a connection to an Informix server.

In case a second call is made to ifx_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned.

The link to the server will be closed as soon as the execution of the script ends, unless it's closed earlier by explicitly calling ifx_close().

参数

All of the arguments are optional, and if they're missing, defaults are taken from values supplied in php.ini (ifx.default_host for the host (Informix libraries will use INFORMIXSERVER environment value if not defined), ifx.default_user for user, ifx.default_password for the password (none if not defined).

database

The database name, as a string.

userid

The username, as a string.

password

The password, as a string.

返回值

Returns a connection identifier on success, or FALSE on error.

范例

Example #1 Connect to a Informix database

<?php
$conn_id = ifx_connect ("mydb@ol_srv1", "imyself", "mypassword");
?>

参见

  • ifx_pconnect() - Open persistent Informix connection
  • ifx_close() - Close Informix connection

ifx_close
ifx_copy_blob
Informix 函数


Duplicates the given blob object

ifx_connect
ifx_create_blob
Informix 函数
PHP Manual

ifx_copy_blob

(PHP 4, PHP <=5.2.0)

ifx_copy_blob — Duplicates the given blob object

说明

int ifx_copy_blob ( int $bid )

Duplicates the given blob object.

参数

bid

A BLOB identifier.

返回值

Returns the new blob object-id, or FALSE on errors.

参见

  • ifx_create_blob() - Creates an blob object
  • ifx_free_blob() - Deletes the blob object

ifx_connect
ifx_create_blob
Informix 函数


Creates an blob object

ifx_copy_blob
ifx_create_char
Informix 函数
PHP Manual

ifx_create_blob

(PHP 4, PHP <=5.2.0)

ifx_create_blob — Creates an blob object

说明

int ifx_create_blob ( int $type , int $mode , string $param )

Creates a blob object.

参数

type

1 = TEXT, 0 = BYTE

mode

0 = blob-object holds the content in memory, 1 = blob-object holds the content in file.

param

if mode = 0: pointer to the content, if mode = 1: pointer to the filestring.

返回值

Returns the new BLOB object-id, or FALSE on errors.

参见

  • ifx_copy_blob() - Duplicates the given blob object
  • ifx_free_blob() - Deletes the blob object

ifx_copy_blob
ifx_create_char
Informix 函数


Creates an char object

ifx_create_blob
ifx_do
Informix 函数
PHP Manual

ifx_create_char

(PHP 4, PHP <=5.2.0)

ifx_create_char — Creates an char object

说明

int ifx_create_char ( string $param )

Creates an char object.

参数

param

The char content.

返回值

Returns the new char object id, or FALSE on errors.

参见

  • ifx_free_char() - Deletes the char object

ifx_create_blob
ifx_do
Informix 函数


Execute a previously prepared SQL-statement

ifx_create_char
ifx_error
Informix 函数
PHP Manual

ifx_do

(PHP 4, PHP <=5.2.0)

ifx_do — Execute a previously prepared SQL-statement

说明

bool ifx_do ( resource $result_id )

Executes a previously prepared query or opens a cursor for it.

Does NOT free result_id on error.

Also sets the real number of ifx_affected_rows() for non-select statements for retrieval by ifx_affected_rows().

参数

result_id

result_id is a valid resultid returned by ifx_query() or ifx_prepare() (select type queries only!).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

Example #1 ifx_do() Example

<?php
$conn = fx_connect( "db", "user", "password" );
$result = ifx_prepare("SELECT customer_num, company FROM customer", $conn);
ifx_do($result);
?>

参见

  • ifx_prepare() - Prepare an SQL-statement for execution

ifx_create_char
ifx_error
Informix 函数


Returns error code of last Informix call

ifx_do
ifx_errormsg
Informix 函数
PHP Manual

ifx_error

(PHP 4, PHP <=5.2.0)

ifx_error — Returns error code of last Informix call

说明

string ifx_error ([ resource $link_identifier ] )

Returns in a string one character describing the general results of a statement and both SQLSTATE and SQLCODE associated with the most recent SQL statement executed.

参数

link_identifier

The link identifier.

返回值

The Informix error codes (SQLSTATE & SQLCODE) formatted as x [SQLSTATE = aa bbb SQLCODE=cccc].

where x = space : no error

E : error

N : no more data

W : warning

? : undefined

If the "x" character is anything other than space, SQLSTATE and SQLCODE describe the error in more detail.

See the Informix manual for the description of SQLSTATE and SQLCODE

参见

  • ifx_errormsg() - Returns error message of last Informix call

ifx_do
ifx_errormsg
Informix 函数


Returns error message of last Informix call

ifx_error
ifx_fetch_row
Informix 函数
PHP Manual

ifx_errormsg

(PHP 4, PHP <=5.2.0)

ifx_errormsg — Returns error message of last Informix call

说明

string ifx_errormsg ([ int $errorcode ] )

Returns the Informix error message associated with the most recent Informix error.

参数

errorcode

If specified, the function will return the message corresponding to the specified code.

返回值

Return the error message, as a string.

范例

Example #1 ifx_errormsg() example

<?php
printf("%s\n<br>", ifx_errormsg(-201));
?>

参见

  • ifx_error() - Returns error code of last Informix call

ifx_error
ifx_fetch_row
Informix 函数


Get row as an associative array

ifx_errormsg
ifx_fieldproperties
Informix 函数
PHP Manual

ifx_fetch_row

(PHP 4, PHP <=5.2.0)

ifx_fetch_row — Get row as an associative array

说明

array ifx_fetch_row ( resource $result_id [, mixed $position ] )

Fetches one row of data from the result associated with the specified result identifier.

Subsequent calls to ifx_fetch_row() would return the next row in the result set, or FALSE if there are no more rows.

参数

result_id

result_id is a valid resultid returned by ifx_query() or ifx_prepare() (select type queries only!).

position

An optional parameter for a "fetch" operation on "scroll" cursors: NEXT, PREVIOUS, CURRENT, FIRST, LAST or a number. If you specify a number, an "absolute" row fetch is executed. This parameter is optional, and only valid for SCROLL cursors.

返回值

Returns an associative array that corresponds to the fetched row, or FALSE if there are no more rows.

Blob columns are returned as integer blob id values for use in ifx_get_blob() unless you have used ifx_textasvarchar(1) or ifx_byteasvarchar(1), in which case blobs are returned as string values.

范例

Example #1 Informix fetch rows

<?php
$rid = ifx_prepare ("select * from emp where name like " . $name,
                     $connid, IFX_SCROLL);
if (! $rid) {
    /* ... error ... */
}
$rowcount = ifx_affected_rows($rid);
if ($rowcount > 1000) {
    printf ("Too many rows in result set (%d)\n<br />", $rowcount);
    die ("Please restrict your query<br />\n");
}
if (! ifx_do ($rid)) {
   /* ... error ... */
}
$row = ifx_fetch_row ($rid, "NEXT");
while (is_array($row)) {
    for (reset($row); $fieldname=key($row); next($row)) {
        $fieldvalue = $row[$fieldname];
        printf ("%s = %s,", $fieldname, $fieldvalue);
    }
    printf("\n<br />");
    $row = ifx_fetch_row($rid, "NEXT");
}
ifx_free_result ($rid);
?>

ifx_errormsg
ifx_fieldproperties
Informix 函数


List of SQL fieldproperties

ifx_fetch_row
ifx_fieldtypes
Informix 函数
PHP Manual

ifx_fieldproperties

(PHP 4, PHP <=5.2.0)

ifx_fieldproperties — List of SQL fieldproperties

说明

array ifx_fieldproperties ( resource $result_id )

Returns the Informix SQL fieldproperties of every field in the query as an associative array. Properties are encoded as: "SQLTYPE;length;precision;scale;ISNULLABLE" where SQLTYPE = the Informix type like "SQLVCHAR" etc. and ISNULLABLE = "Y" or "N".

参数

result_id

result_id is a valid resultid returned by ifx_query() or ifx_prepare() (select type queries only!).

返回值

Returns an associative array with fieldnames as key and the SQL fieldproperties as data for a query with result_id. Returns FALSE on errors.

范例

Example #1 Informix SQL fieldproperties

<?php
$properties = ifx_fieldproperties($resultid);
if (!isset($properties)) {
    /* ... error ... */
}
foreach ($properties as $fname => $val) {
    echo "$fname:\t property = $val\n";
}
?>

参见

  • ifx_fieldtypes() - List of Informix SQL fields

ifx_fetch_row
ifx_fieldtypes
Informix 函数


List of Informix SQL fields

ifx_fieldproperties
ifx_free_blob
Informix 函数
PHP Manual

ifx_fieldtypes

(PHP 4, PHP <=5.2.0)

ifx_fieldtypes — List of Informix SQL fields

说明

array ifx_fieldtypes ( resource $result_id )

Returns an associative array with fieldnames as key and the SQL fieldtypes as data for the query associated with result_id.

参数

result_id

result_id is a valid resultid returned by ifx_query() or ifx_prepare() (select type queries only!).

返回值

Returns an associative array with fieldnames as key and the SQL fieldtypes as data for query with result_id. Returns FALSE on error.

范例

Example #1 Fieldnames and SQL fieldtypes

<?php
$types = ifx_fieldtypes($resultid);
if (is_array($types)) {
    foreach ($types as $fname => $val) {
        echo "$fname:\t type = $val\n";
    }
}
?>

参见

  • ifx_fieldproperties() - List of SQL fieldproperties

ifx_fieldproperties
ifx_free_blob
Informix 函数


Deletes the blob object

ifx_fieldtypes
ifx_free_char
Informix 函数
PHP Manual

ifx_free_blob

(PHP 4, PHP <=5.2.0)

ifx_free_blob — Deletes the blob object

说明

bool ifx_free_blob ( int $bid )

Deletes the blobobject for the given blob object-id.

参数

bid

The BLOB object id.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ifx_create_blob() - Creates an blob object

ifx_fieldtypes
ifx_free_char
Informix 函数


Deletes the char object

ifx_free_blob
ifx_free_result
Informix 函数
PHP Manual

ifx_free_char

(PHP 4, PHP <=5.2.0)

ifx_free_char — Deletes the char object

说明

bool ifx_free_char ( int $bid )

Deletes the charobject for the given char object-id.

参数

bid

The char object id.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ifx_create_char() - Creates an char object

ifx_free_blob
ifx_free_result
Informix 函数


Releases resources for the query

ifx_free_char
ifx_get_blob
Informix 函数
PHP Manual

ifx_free_result

(PHP 4, PHP <=5.2.0)

ifx_free_result — Releases resources for the query

说明

bool ifx_free_result ( resource $result_id )

Releases resources for the query associated with result_id.

参数

result_id

result_id is a valid resultid returned by ifx_query() or ifx_prepare() (select type queries only!).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ifx_do() - Execute a previously prepared SQL-statement

ifx_free_char
ifx_get_blob
Informix 函数


Return the content of a blob object

ifx_free_result
ifx_get_char
Informix 函数
PHP Manual

ifx_get_blob

(PHP 4, PHP <=5.2.0)

ifx_get_blob — Return the content of a blob object

说明

string ifx_get_blob ( int $bid )

Returns the content of the blob object.

参数

bid

The BLOB object id.

返回值

The contents of the BLOB as a string, or FALSE on errors.

参见

  • ifx_get_char() - Return the content of the char object

ifx_free_result
ifx_get_char
Informix 函数


Return the content of the char object

ifx_get_blob
ifx_getsqlca
Informix 函数
PHP Manual

ifx_get_char

(PHP 4, PHP <=5.2.0)

ifx_get_char — Return the content of the char object

说明

string ifx_get_char ( int $bid )

Returns the content of the char object.

参数

bid

The char object-id.

返回值

Returns the contents as a string, or FALSE on errors.

参见

  • ifx_get_blob() - Return the content of a blob object

ifx_get_blob
ifx_getsqlca
Informix 函数


Get the contents of sqlca.sqlerrd[0..5] after a query

ifx_get_char
ifx_htmltbl_result
Informix 函数
PHP Manual

ifx_getsqlca

(PHP 4, PHP <=5.2.0)

ifx_getsqlca — Get the contents of sqlca.sqlerrd[0..5] after a query

说明

array ifx_getsqlca ( resource $result_id )

Returns a pseudo-row with sqlca.sqlerrd[0] ... sqlca.sqlerrd[5] after the query associated with result_id.

For inserts, updates and deletes the values returned are those as set by the server after executing the query. This gives access to the number of affected rows and the serial insert value. For SELECTs the values are those saved after the PREPARE statement. This gives access to the *estimated* number of affected rows. The use of this function saves the overhead of executing a SELECT dbinfo('sqlca.sqlerrdx') query, as it retrieves the values that were saved by the ifx driver at the appropriate moment.

参数

result_id

result_id is a valid result id returned by ifx_query() or ifx_prepare() (select type queries only!).

返回值

Returns an associative array with the following entries: sqlerrd0, sqlerrd1, sqlerrd2, sqlerrd3, sqlerrd4 and sqlerrd5.

范例

Example #1 Retrieve Informix sqlca.sqlerrd[x] values

<?php
/* assume the first column of 'sometable' is a serial */
$qid = ifx_query("insert into sometable
                  values (0, '2nd column', 'another column') ", $connid);
if (!$qid) {
    /* ... error ... */
}
$sqlca = ifx_getsqlca($qid);
$serial_value = $sqlca["sqlerrd1"];
echo "The serial value of the inserted row is : $serial_value<br />\n";
?>

ifx_get_char
ifx_htmltbl_result
Informix 函数


Formats all rows of a query into a HTML table

ifx_getsqlca
ifx_nullformat
Informix 函数
PHP Manual

ifx_htmltbl_result

(PHP 4, PHP <=5.2.0)

ifx_htmltbl_result — Formats all rows of a query into a HTML table

说明

int ifx_htmltbl_result ( resource $result_id [, string $html_table_options ] )

Formats and prints all rows of the result_id query into a HTML table.

参数

result_id

result_id is a valid resultid returned by ifx_query() or ifx_prepare() (select type queries only!).

html_table_options

This optional argument is a string of <table> tag options.

返回值

Returns the number of fetched rows, or FALSE on errors.

范例

Example #1 Informix results as HTML table

<?php
$rid = ifx_prepare ("select * from emp where name like " . $name,
                     $connid, IFX_SCROLL);
if (! $rid) {
    /* ... error ... */
}
$rowcount = ifx_affected_rows ($rid);
if ($rowcount > 1000) {
    printf ("Too many rows in result set (%d)\n<br />", $rowcount);
    die ("Please restrict your query<br />\n");
}
if (! ifx_do($rid)) {
    /* ... error ... */
}

ifx_htmltbl_result ($rid, "border=\"2\"");

ifx_free_result($rid);
?>

ifx_getsqlca
ifx_nullformat
Informix 函数


Sets the default return value on a fetch row

ifx_htmltbl_result
ifx_num_fields
Informix 函数
PHP Manual

ifx_nullformat

(PHP 4, PHP <=5.2.0)

ifx_nullformat — Sets the default return value on a fetch row

说明

bool ifx_nullformat ( int $mode )

Sets the default return value of a NULL-value on a fetch row.

参数

mode

Mode "0" returns "", and mode "1" returns "NULL".

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ifx_htmltbl_result
ifx_num_fields
Informix 函数


Returns the number of columns in the query

ifx_nullformat
ifx_num_rows
Informix 函数
PHP Manual

ifx_num_fields

(PHP 4, PHP <=5.2.0)

ifx_num_fields — Returns the number of columns in the query

说明

int ifx_num_fields ( resource $result_id )

After preparing or executing a query, this call gives you the number of columns in the query.

参数

result_id

result_id is a valid resultid returned by ifx_query() or ifx_prepare() (select type queries only!).

返回值

Returns the number of columns in query for result_id, or FALSE on errors.

范例

Example #1 ifx_num_fields() Example

<?php
$conn_id = ifx_connect("db", "user", "password");
$res_id = ifx_query("select * from systables", $conn_id);
echo ifx_num_fields($res_id);
?>

参见

  • ifx_num_rows() - Count the rows already fetched from a query

ifx_nullformat
ifx_num_rows
Informix 函数


Count the rows already fetched from a query

ifx_num_fields
ifx_pconnect
Informix 函数
PHP Manual

ifx_num_rows

(PHP 4, PHP <=5.2.0)

ifx_num_rows — Count the rows already fetched from a query

说明

int ifx_num_rows ( resource $result_id )

Gives the number of rows fetched so far for a query with result_id after a ifx_query() or ifx_do() query.

参数

result_id

result_id is a valid resultid returned by ifx_query() or ifx_prepare() (select type queries only!).

返回值

Returns the number of fetched rows or FALSE on errors.

参见

  • ifx_num_fields() - Returns the number of columns in the query

ifx_num_fields
ifx_pconnect
Informix 函数


Open persistent Informix connection

ifx_num_rows
ifx_prepare
Informix 函数
PHP Manual

ifx_pconnect

(PHP 4, PHP <=5.2.0)

ifx_pconnect — Open persistent Informix connection

说明

resource ifx_pconnect ([ string $database [, string $userid [, string $password ]]] )

ifx_pconnect() acts very much like ifx_connect() with two major differences.

First, when connecting, the function would first try to find a (persistent) link that's already open with the same host, username and password. If one is found, an identifier for it will be returned instead of opening a new connection.

Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (ifx_close() will not close links established by ifx_pconnect()).

This type of links is therefore called 'persistent'.

参数

All of the arguments are optional, and if they're missing, defaults are taken from values supplied in php.ini (ifx.default_host for the host (Informix libraries will use INFORMIXSERVER environment value if not defined), ifx.default_user for user, ifx.default_password for the password (none if not defined).

database

The database name, as a string.

userid

The username, as a string.

password

The password, as a string.

返回值

Returns: valid Informix persistent link identifier on success, or FALSE on errors.

参见

  • ifx_connect() - Open Informix server connection

ifx_num_rows
ifx_prepare
Informix 函数


Prepare an SQL-statement for execution

ifx_pconnect
ifx_query
Informix 函数
PHP Manual

ifx_prepare

(PHP 4, PHP <=5.2.0)

ifx_prepare — Prepare an SQL-statement for execution

说明

resource ifx_prepare ( string $query , resource $link_identifier [, int $cursor_def ], mixed $blobidarray )

Prepares a query for later use with ifx_do().

For "select-type" queries a cursor is declared and opened. Non-select queries are "execute immediate".

For either query type the number of (estimated or real) affected rows is saved for retrieval by ifx_affected_rows().

If the contents of the TEXT (or BYTE) column allow it, you can also use ifx_textasvarchar(1) and ifx_byteasvarchar(1). This allows you to treat TEXT (or BYTE) columns just as if they were ordinary (but long) VARCHAR columns for select queries, and you don't need to bother with blob id's.

With ifx_textasvarchar(0) or ifx_byteasvarchar(0) (the default situation), select queries will return BLOB columns as blob id's (integer value). You can get the value of the blob as a string or file with the blob functions (see below).

参数

query

The query string.

link_identifier

The link identifier.

cursor_def

This optional parameter allows you to make this a scroll and/or hold cursor. It's a bitmask and can be either IFX_SCROLL, IFX_HOLD, or both or'ed together.

blobidarray

If you have BLOB (BYTE or TEXT) columns in the query, you can add a blobidarray parameter containing the corresponding "blob ids", and you should replace those columns with a "?" in the query text.

返回值

Returns a valid result identifier for use by ifx_do(), or FALSE on errors.

参见

  • ifx_do() - Execute a previously prepared SQL-statement

ifx_pconnect
ifx_query
Informix 函数


Send Informix query

ifx_prepare
ifx_textasvarchar
Informix 函数
PHP Manual

ifx_query

(PHP 4, PHP <=5.2.0)

ifx_query — Send Informix query

说明

resource ifx_query ( string $query , resource $link_identifier [, int $cursor_type [, mixed $blobidarray ]] )

Sends a query to the currently active database on the server that's associated with the specified link identifier.

For "select-type" queries a cursor is declared and opened. Non-select queries are "execute immediate".

For either query type the number of (estimated or real) affected rows is saved for retrieval by ifx_affected_rows().

If the contents of the TEXT (or BYTE) column allow it, you can also use ifx_textasvarchar(1) and ifx_byteasvarchar(1). This allows you to treat TEXT (or BYTE) columns just as if they were ordinary (but long) VARCHAR columns for select queries, and you don't need to bother with blob id's.

With ifx_textasvarchar(0) or ifx_byteasvarchar(0) (the default situation), select queries will return BLOB columns as blob id's (integer value). You can get the value of the blob as a string or file with the blob functions (see below).

参数

query

The query string.

link_identifier

The link identifier.

cursor_def

This optional parameter allows you to make this a scroll and/or hold cursor. It's a bitmask and can be either IFX_SCROLL, IFX_HOLD, or both or'ed together. I you omit this parameter the cursor is a normal sequential cursor.

blobidarray

If you have BLOB (BYTE or TEXT) columns in the query, you can add a blobidarray parameter containing the corresponding "blob ids", and you should replace those columns with a "?" in the query text.

返回值

Returns valid Informix result identifier on success, or FALSE on errors.

范例

Example #1 Show all rows of the "orders" table as a HTML table

<?php
ifx_textasvarchar(1);      // use "text mode" for blobs
$res_id = ifx_query("select * from orders", $conn_id);
if (! $res_id) {
    printf("Can't select orders : %s\n<br />%s<br />\n", ifx_error(), ifx_errormsg());
    die;
}
ifx_htmltbl_result($res_id, "border=\"1\"");
ifx_free_result($res_id);
?>

Example #2 Insert some values into the "catalog" table

<?php

// create blob id's for a byte and text column
$textid = ifx_create_blob(0, 0, "Text column in memory");
$byteid = ifx_create_blob(1, 0, "Byte column in memory");

// store blob id's in a blobid array
$blobidarray[] = $textid;
$blobidarray[] = $byteid;

// launch query
$query = "insert into catalog (stock_num, manu_code, " .
         "cat_descr,cat_picture) values(1,'HRO',?,?)";
$res_id = ifx_query($query, $conn_id, $blobidarray);
if (! $res_id) {
    /* ... error ... */
}

// free result id
ifx_free_result($res_id);
?>

参见

  • ifx_connect() - Open Informix server connection

ifx_prepare
ifx_textasvarchar
Informix 函数


Set the default text mode

ifx_query
ifx_update_blob
Informix 函数
PHP Manual

ifx_textasvarchar

(PHP 4, PHP <=5.2.0)

ifx_textasvarchar — Set the default text mode

说明

bool ifx_textasvarchar ( int $mode )

Sets the default text mode for all select-queries.

参数

mode

Mode "0" will return a blob id, and mode "1" will return a varchar with text content.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ifx_byteasvarchar() - Set the default byte mode

ifx_query
ifx_update_blob
Informix 函数


Updates the content of the blob object

ifx_textasvarchar
ifx_update_char
Informix 函数
PHP Manual

ifx_update_blob

(PHP 4, PHP <=5.2.0)

ifx_update_blob — Updates the content of the blob object

说明

bool ifx_update_blob ( int $bid , string $content )

Updates the content of the blob object for the given blob object bid.

参数

bid

A BLOB object identifier.

content

The new data, as a string.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ifx_update_char() - Updates the content of the char object

ifx_textasvarchar
ifx_update_char
Informix 函数


Updates the content of the char object

ifx_update_blob
ifxus_close_slob
Informix 函数
PHP Manual

ifx_update_char

(PHP 4, PHP <=5.2.0)

ifx_update_char — Updates the content of the char object

说明

bool ifx_update_char ( int $bid , string $content )

Updates the content of the char object for the given char object bid.

参数

bid

A char object identifier.

content

The new data, as a string.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ifx_update_blob() - Updates the content of the blob object

ifx_update_blob
ifxus_close_slob
Informix 函数


Deletes the slob object

ifx_update_char
ifxus_create_slob
Informix 函数
PHP Manual

ifxus_close_slob

(PHP 4, PHP <=5.2.0)

ifxus_close_slob — Deletes the slob object

说明

bool ifxus_close_slob ( int $bid )

Deletes the slob object on the given slob object-id bid.

参数

bid

An existing slob id.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ifxus_open_slob() - Opens an slob object

ifx_update_char
ifxus_create_slob
Informix 函数


Creates an slob object and opens it

ifxus_close_slob
ifxus_free_slob
Informix 函数
PHP Manual

ifxus_create_slob

(PHP 4, PHP <=5.2.0)

ifxus_create_slob — Creates an slob object and opens it

说明

int ifxus_create_slob ( int $mode )

Creates an slob object and opens it.

参数

mode

A combination of IFX_LO_RDONLY, IFX_LO_WRONLY, IFX_LO_APPEND IFX_LO_RDWR, IFX_LO_BUFFER, IFX_LO_NOBUFFER.

返回值

Return the new slob object-id, or FALSE on errors.

参见

  • ifxus_close_slob() - Deletes the slob object
  • ifxus_free_slob() - Deletes the slob object

ifxus_close_slob
ifxus_free_slob
Informix 函数


Deletes the slob object

ifxus_create_slob
ifxus_open_slob
Informix 函数
PHP Manual

ifxus_free_slob

(PHP 4, PHP <=5.2.0)

ifxus_free_slob — Deletes the slob object

说明

bool ifxus_free_slob ( int $bid )

Deletes the slob object.

参数

bid

An existing slob id.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ifxus_close_slob() - Deletes the slob object

ifxus_create_slob
ifxus_open_slob
Informix 函数


Opens an slob object

ifxus_free_slob
ifxus_read_slob
Informix 函数
PHP Manual

ifxus_open_slob

(PHP 4, PHP <=5.2.0)

ifxus_open_slob — Opens an slob object

说明

int ifxus_open_slob ( int $bid , int $mode )

Opens an slob object. bid should be an existing slob id.

参数

bid

An existing slob id.

mode

A combination of IFX_LO_RDONLY, IFX_LO_WRONLY, IFX_LO_APPEND IFX_LO_RDWR, IFX_LO_BUFFER, IFX_LO_NOBUFFER.

返回值

Returns the new slob object-id, or FALSE on errors.

参见

  • ifxus_close_slob() - Deletes the slob object
  • ifxus_free_slob() - Deletes the slob object

ifxus_free_slob
ifxus_read_slob
Informix 函数


Reads nbytes of the slob object

ifxus_open_slob
ifxus_seek_slob
Informix 函数
PHP Manual

ifxus_read_slob

(PHP 4, PHP <=5.2.0)

ifxus_read_slob — Reads nbytes of the slob object

说明

string ifxus_read_slob ( int $bid , int $nbytes )

Reads nbytes of the slob object.

参数

bid

An existing slob id.

nbytes

The number of bytes to read.

返回值

Returns the slob contents as a string, or FALSE on errors.

参见

  • ifxus_write_slob() - Writes a string into the slob object

ifxus_open_slob
ifxus_seek_slob
Informix 函数


Sets the current file or seek position

ifxus_read_slob
ifxus_tell_slob
Informix 函数
PHP Manual

ifxus_seek_slob

(PHP 4, PHP <=5.2.0)

ifxus_seek_slob — Sets the current file or seek position

说明

int ifxus_seek_slob ( int $bid , int $mode , int $offset )

Sets the current file or seek position of an open slob object.

参数

bid

An existing slob id.

mode

0 = LO_SEEK_SET, 1 = LO_SEEK_CUR, 2 = LO_SEEK_END.

offset

A byte offset.

返回值

Returns the seek position as an integer, or FALSE on errors.

参见

  • ifxus_tell_slob() - Returns the current file or seek position

ifxus_read_slob
ifxus_tell_slob
Informix 函数


Returns the current file or seek position

ifxus_seek_slob
ifxus_write_slob
Informix 函数
PHP Manual

ifxus_tell_slob

(PHP 4, PHP <=5.2.0)

ifxus_tell_slob — Returns the current file or seek position

说明

int ifxus_tell_slob ( int $bid )

Returns the current file or seek position of an open slob object

参数

bid

An existing slob id.

返回值

Returns the seek position as an integer, or FALSE on errors.

参见

  • ifxus_seek_slob() - Sets the current file or seek position

ifxus_seek_slob
ifxus_write_slob
Informix 函数


Writes a string into the slob object

ifxus_tell_slob
Ingres
Informix 函数
PHP Manual

ifxus_write_slob

(PHP 4, PHP <=5.2.0)

ifxus_write_slob — Writes a string into the slob object

说明

int ifxus_write_slob ( int $bid , string $content )

Writes a string into the slob object.

参数

bid

An existing slob id.

content

The content to write, as a string.

返回值

Returns the bytes written as an integer, or FALSE on errors.

参见

  • ifxus_read_slob() - Reads nbytes of the slob object

ifxus_tell_slob
Ingres
Informix 函数


Ingres DBMS, EDBC, and Enterprise Access Gateways

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Basic usage
  • Ingres 函数
    • ingres_autocommit_state — Test if the connection is using autocommit
    • ingres_autocommit — Switch autocommit on or off
    • ingres_charset — Returns the installation character set
    • ingres_close — Close an Ingres database connection
    • ingres_commit — Commit a transaction
    • ingres_connect — Open a connection to an Ingres database
    • ingres_cursor — Get a cursor name for a given result resource
    • ingres_errno — Get the last Ingres error number generated
    • ingres_error — Get a meaningful error message for the last error generated
    • ingres_errsqlstate — Get the last SQLSTATE error code generated
    • ingres_escape_string — Escape special characters for use in a query
    • ingres_execute — Execute a prepared query
    • ingres_fetch_array — Fetch a row of result into an array
    • ingres_fetch_assoc — Fetch a row of result into an associative array
    • ingres_fetch_object — Fetch a row of result into an object
    • ingres_fetch_proc_return — Get the return value from a procedure call
    • ingres_fetch_row — Fetch a row of result into an enumerated array
    • ingres_field_length — Get the length of a field
    • ingres_field_name — Get the name of a field in a query result
    • ingres_field_nullable — Test if a field is nullable
    • ingres_field_precision — Get the precision of a field
    • ingres_field_scale — Get the scale of a field
    • ingres_field_type — Get the type of a field in a query result
    • ingres_free_result — Free the resources associated with a result identifier
    • ingres_next_error — Get the next Ingres error
    • ingres_num_fields — Get the number of fields returned by the last query
    • ingres_num_rows — Get the number of rows affected or returned by a query
    • ingres_pconnect — Open a persistent connection to an Ingres database
    • ingres_prepare — Prepare a query for later execution
    • ingres_query — Send an SQL query to Ingres
    • ingres_result_seek — Set the row position before fetching data
    • ingres_rollback — Roll back a transaction
    • ingres_set_environment — Set environment features controlling output options
    • ingres_unbuffered_query — Send an unbuffered SQL query to Ingres
ifxus_write_slob
简介
针对各数据库系统对应的扩展


简介

The Ingres driver for PHP enables you to connect to and query the Ingres DBMS, EDBC, and Enterprise Access Gateways.

Note:

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.1.0.

Ingres
安装／配置
Ingres


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Ingres


需求

To use or build the PHP extension for Ingres you must have a working Ingres client environment. You can download the client software for Ingres from » http://esd.ingres.com/.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。 安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/ingres.

You can download the DLL for this PECL extension from » http://esd.ingres.com/product/drivers/PHP/.

To have these functions available, you must » download and compile this extension, enabling Ingres support using the --with-ingres[=DIR] option, where DIR is the Ingres base directory. If the II_SYSTEM environment variable is not set correctly you may need to use --with-ingres=DIR to specify your Ingres installation directory.

PHP code written for version 2.x and later is not backward-compatible with earlier versions of this PHP extension. However, it is possible to run two incompatible releases within the same PHP environment using the --enable-ingres2 option. This configuration option renames the extension to ingres2, changing function names, configuration settings, and constants. For example, with this option enabled, ingres_connect() becomes ingres2_connect().

To use this extension the system environment variable II_SYSTEM must be defined. Linux and UNIX users will also need to define the shared library search path, for example, LD_LIBRARY_PATH. When used with the Apache web server these variables must be set explicitly in the startup script for Apache. In addition, the PassEnv directive is required for the Ingres extension to load the correct shared libraries. For example:

Example #1 Example usage of PassEnv for Ingres

<IfModule mod_env.c>
    PassEnv II_SYSTEM
    PassEnv LD_LIBRARY_PATH
</IfModule>

Note:

For example configurations for different web servers and operating systems see » http://community.ingres.com/wiki/Ingres_Articles#Ingres_and_Web_Servers.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Ingres configuration options
名字 | 默认 | 可修改范围 | 更新日志
ingres.allow_persistent | "1" | PHP_INI_SYSTEM | Available since ingres 1.0.0
ingres.array_index_start | "1" | PHP_INI_ALL | Available since ingres 1.4.0.
ingres.auto | "1" | PHP_INI_ALL | Available since ingres 2.0.0.
ingres.blob_segment_length | "4096" | PHP_INI_ALL | Available since ingres 1.2.0.
ingres.cursor_mode | "0" | PHP_INI_ALL | Available since ingres 1.1.0.
ingres.default_database | NULL | PHP_INI_ALL | Available since ingres 1.0.0
ingres.default_password | NULL | PHP_INI_ALL | Available since ingres 1.0.0
ingres.default_user | NULL | PHP_INI_ALL | Available since ingres 1.0.0
ingres.describe | 1 | PHP_INI_ALL | Available since ingres 2.1.0
ingres.fetch_buffer_size | 100 | PHP_INI_ALL | Available since ingres 2.1.0
ingres.max_links | "-1" | PHP_INI_SYSTEM | Available since ingres 1.0.0
ingres.max_persistent | "-1" | PHP_INI_SYSTEM | Available since ingres 1.0.0
ingres.reuse_connection | "1" | PHP_INI_ALL | Available since ingres 2.0.0
ingres.scrollable | "1" | PHP_INI_ALL | Available since ingres 2.0.0.
ingres.trace | "0" | PHP_INI_ALL | Available since ingres 2.0.0.
ingres.trace_connect | "0" | PHP_INI_ALL | Available since ingres 1.2.1.
ingres.utf8 | "1" | PHP_INI_ALL | Available since ingres 2.0.0.
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

ingres.allow_persistent boolean

Specifies whether to allow persistent connections to Ingres

ingres.array_index_start integer

Specifies the start value for an integer key for arrays generated by ingres_fetch_row() or ingres_fetch_array(). By default ingres.array_index_start is set to 1. If you wish to make the ingres extension behave like other database extensions set this configuration option to 0.

ingres.auto boolean

Enables or disables autocommit emulation. Ingres cannot have multiple cursors open with autocommit enabled. When enabled, the driver emulates autocommit.

ingres.blob_segment_length integer

Specifies the amount of memory to use when reading BLOB data, in bytes

ingres.cursor_mode integer

Specifies the default mode for cursors opened with ingres_prepare(). Valid values are INGRES_CURSOR_UPDATE or INGRES_CURSOR_READONLY.

ingres.default_database string

Specifies the default database name to use when connecting to the database server if no other name is specified. Does not apply in SQL 安全模式.

ingres.default_password string

Specifies the default password to use when connecting to the database server if no other name is specified. Does not apply in SQL 安全模式.

ingres.default_user string

Specifies the default user name to use when connecting to the database server if no other name is specified. Does not apply in SQL 安全模式.

ingres.describe boolean

Enables the use of DESCRIBE INPUT to determine the expected data types for queries that use parameters. Available with Ingres 9.1.0 and later. When disabled, queries that have parameters passed may need to manually describe the types of those parameters using the types parameter in ingres_query().

Note:

Enabling this feature with ingres_query() will cause additional communications traffic between this extension and the server. To minimize this additional traffic, use ingres_prepare() and ingres_execute().

ingres.fetch_buffer_size integer

Specifies the number of pre-fetch rows that ingres_fetch_array(), ingres_fetch_object() and ingres_fetch_row() will try and fetch in one fetch operation.

ingres.max_links integer

Specifies the maximum number of Ingres sessions allowed per process or thread. The number of sessions should not exceed the total number of connected sessions configured within Ingres.

ingres.max_persistent integer

Specifies the maximum number of persistent Ingres sessions allowed per process or thread. The number of sessions should not exceed the total number of connected sessions configured within Ingres.

ingres.reuse_connection boolean

Reuses an existing active connection if connecting to the same database with the same user name

ingres.scrollable boolean

Enables support for scrollable cursors. When fetching CLOB or BLOB data, this should be set to FALSE. Available with Ingres 9.2.0 or later.

ingres.trace boolean

Enables simple tracing using E_NOTICE messages

ingres.trace_connect boolean

Prints E_NOTICE messages during ingres_connect() or ingres_pconnect() calls

ingres.utf8 boolean

Assumes that strings being passed to National Character column types (NVARCHAR or NCHAR) are using UTF8 encoding and converts them to UTF16 for the server

安装
资源类型
安装／配置


资源类型

ingres_connect() and ingres_pconnect() return an Ingres link identifier.

ingres_query() and ingres_unbuffered_query() return an Ingres result identifier.

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

INGRES_ASSOC (integer)
Columns are returned into the array having the fieldname as the array index. Used with ingres_fetch_array().
INGRES_NUM (integer)
Columns are returned into the array having a numerical index to the fields. By default this index starts at 1, the first field in the result. To change this value, see ingres.array_index_start. Used with ingres_fetch_array().
INGRES_BOTH (integer)
Columns are returned into the array having both a numerical index and the fieldname as the array index. Used with ingres_fetch_array().
INGRES_EXT_VERSION (string)
Specifies the version of the Ingres Extension. Available since version 1.2.0 of the PECL extension.
INGRES_API_VERSION (integer)
Specifies the version of Ingres OpenAPI that the extension was built against. Available since version 1.2.0 of the PECL extension.
INGRES_CURSOR_READONLY (integer)
Specifies that Ingres cursors should be opened in "readonly" mode. Available since version 1.2.0 of the PECL extension. Used with ingres.cursor_mode.
INGRES_CURSOR_UPDATE (integer)
Specifies that Ingres cursors should be opened "for update." Available since version 1.2.0 of the PECL extension. Used with ingres.cursor_mode.
INGRES_DATE_MULTINATIONAL (integer)
Equivalent to the II_DATE_FORMAT setting of MULTINATIONAL. Available since version 1.2.0 of the PECL extension. Used with ingres_connect(), ingres_pconnect() and ingres_set_environment(). See options in ingres_set_environment().
INGRES_DATE_MULTINATIONAL4 (integer)
Equivalent to the II_DATE_FORMAT setting of MULTINATIONAL4. Available since version 1.2.0 of the PECL extension.
Used with
ingres_connect(), ingres_pconnect()
and ingres_set_environment(). See options
in ingres_set_environment().
INGRES_DATE_FINNISH (integer)
Equivalent to the II_DATE_FORMAT setting of FINNISH. Available since version 1.2.0 of the PECL extension.
Used with
ingres_connect(), ingres_pconnect()
and ingres_set_environment(). See options
in ingres_set_environment().
INGRES_DATE_ISO (integer)
Equivalent to the II_DATE_FORMAT setting of ISO. Available since version 1.2.0 of the PECL extension.
Used with
ingres_connect(), ingres_pconnect()
and ingres_set_environment(). See options
in ingres_set_environment().
INGRES_DATE_ISO4 (integer)
Equivalent to the II_DATE_FORMAT setting of ISO4. Available since version 1.2.0 of the PECL extension.
Used with
ingres_connect(), ingres_pconnect()
and ingres_set_environment(). See options
in ingres_set_environment().
INGRES_DATE_GERMAN (integer)
Equivalent to the II_DATE_FORMAT setting of GERMAN. Available since version 1.2.0 of the PECL extension.
Used with
ingres_connect(), ingres_pconnect()
and ingres_set_environment(). See options
in ingres_set_environment().
INGRES_DATE_MDY (integer)
Equivalent to the II_DATE_FORMAT setting of MDY. Available since version 1.2.0 of the PECL extension.
Used with
ingres_connect(), ingres_pconnect()
and ingres_set_environment(). See options
in ingres_set_environment().
INGRES_DATE_DMY (integer)
Equivalent to the II_DATE_FORMAT setting of DMY. Available since version 1.2.0 of the PECL extension.
Used with
ingres_connect(), ingres_pconnect()
and ingres_set_environment(). See options
in ingres_set_environment().
INGRES_DATE_YMD (integer)
Equivalent to the II_DATE_FORMAT setting of YMD. Available since version 1.2.0 of the PECL extension.
Used with
ingres_connect(), ingres_pconnect()
and ingres_set_environment(). See options
in ingres_set_environment().
INGRES_MONEY_LEADING (integer)
Specifies the currency character that should be placed at the start of a money value. Equivalent to setting II_MONEY_FORMAT to "L:". Available since version 1.2.0 of the PECL extension. Used with ingres_connect(), ingres_pconnect() and ingres_set_environment(). See options in ingres_set_environment().
INGRES_MONEY_TRAILING (integer)
Specifies the currency character that should be placed at the end of a money value. Equivalent to setting II_MONEY_FORMAT to "T:". Available since version 1.2.0 of the PECL extension. Used with ingres_connect(), ingres_pconnect() and ingres_set_environment(). See options in ingres_set_environment().
INGRES_STRUCTURE_BTREE (integer)
Specifies the default table or index structure to BTREE when used in combination with the
options or index_structure option when connecting. Available since version 1.4.0 of the PECL extension.
Used with ingres_connect() and
ingres_pconnect(). See options
in ingres_connect().
INGRES_STRUCTURE_CBTREE (integer)
Specifies the default table or index structure to COMPRESSED BTREE when used in combination with the
options or index_structure option when connecting. Available since version 1.4.0 of the PECL extension.
Used with ingres_connect() and
ingres_pconnect(). See options
in ingres_connect().
INGRES_STRUCTURE_HASH (integer)
Specifies the default table or index structure to HASH when used in combination with the
options or index_structure option when connecting. Available since version 1.4.0 of the PECL extension.
Used with ingres_connect() and
ingres_pconnect(). See options
in ingres_connect().
INGRES_STRUCTURE_CHASH (integer)
Specifies the default table or index structure to COMPRESSED HASH when used in combination with the
options or index_structure option when connecting. Available since version 1.4.0 of the PECL extension.
Used with ingres_connect() and
ingres_pconnect(). See options
in ingres_connect().
INGRES_STRUCTURE_HEAP (integer)
Specifies the default table structure to HEAP when used in combination with the
options option when connecting. Available since version 1.4.0 of the PECL extension.
Used with ingres_connect() and
ingres_pconnect(). See options
in ingres_connect().
INGRES_STRUCTURE_CHEAP (integer)
Specifies the default table structure to COMPRESSED HEAP when used in combination with the
options option when connecting. Available since version 1.4.0 of the PECL extension.
Used with ingres_connect() and
ingres_pconnect(). See options
in ingres_connect().
INGRES_STRUCTURE_ISAM (integer)
Specifies the default table or index structure to ISAM when used in combination with the
options or index_structure option when connecting. Available since version 1.4.0 of the PECL extension.
Used with ingres_connect() and
ingres_pconnect(). See options
in ingres_connect().
INGRES_STRUCTURE_CISAM (integer)
Specifies the default table or index structure to COMPRESSED ISAM when used in combination with the
options or index_structure option when connecting. Available since version 1.4.0 of the PECL extension.
Used with ingres_connect() and
ingres_pconnect(). See options
in ingres_connect().
资源类型
范例
Ingres


范例

Table of Contents

  • Basic usage
预定义常量
Basic usage
Ingres


Basic usage

The following simple example shows how to connect to an Ingres database, execute a query, print resulting rows and disconnect from the database.

Example #1 Simple Ingres Example

<?php
// Connecting, selecting database
$link = ingres_connect("database", "user", "password")
    or die("Could not connect: " . ingres_error($link));
echo "Connected successfully";

// Select from a table that exists in all Ingres databases
$query = "SELECT * FROM iitables";
$result = ingres_query($link,$query) or die("Query failed: " .
ingres_error($link));

// Print results in HTML
// relid - table name
// relowner - table owner
echo "<table>\n";
while ($iitables = ingres_fetch_object($result)) {
    echo "\t<tr>\n";
    echo "\t\t<td>" . $iitables->relid . "</td>\n";
    echo "\t\t<td>" . $iitables->relowner . "</td>\n";
    echo "\t</tr>\n";
}
echo "</table>\n";

// Free results
ingres_free_result($result);

// Commit transaction
ingres_commit($link);

// Closing connection
ingres_close($link);
?>

范例
Ingres 函数
范例


Ingres 函数

Table of Contents

  • ingres_autocommit_state — Test if the connection is using autocommit
  • ingres_autocommit — Switch autocommit on or off
  • ingres_charset — Returns the installation character set
  • ingres_close — Close an Ingres database connection
  • ingres_commit — Commit a transaction
  • ingres_connect — Open a connection to an Ingres database
  • ingres_cursor — Get a cursor name for a given result resource
  • ingres_errno — Get the last Ingres error number generated
  • ingres_error — Get a meaningful error message for the last error generated
  • ingres_errsqlstate — Get the last SQLSTATE error code generated
  • ingres_escape_string — Escape special characters for use in a query
  • ingres_execute — Execute a prepared query
  • ingres_fetch_array — Fetch a row of result into an array
  • ingres_fetch_assoc — Fetch a row of result into an associative array
  • ingres_fetch_object — Fetch a row of result into an object
  • ingres_fetch_proc_return — Get the return value from a procedure call
  • ingres_fetch_row — Fetch a row of result into an enumerated array
  • ingres_field_length — Get the length of a field
  • ingres_field_name — Get the name of a field in a query result
  • ingres_field_nullable — Test if a field is nullable
  • ingres_field_precision — Get the precision of a field
  • ingres_field_scale — Get the scale of a field
  • ingres_field_type — Get the type of a field in a query result
  • ingres_free_result — Free the resources associated with a result identifier
  • ingres_next_error — Get the next Ingres error
  • ingres_num_fields — Get the number of fields returned by the last query
  • ingres_num_rows — Get the number of rows affected or returned by a query
  • ingres_pconnect — Open a persistent connection to an Ingres database
  • ingres_prepare — Prepare a query for later execution
  • ingres_query — Send an SQL query to Ingres
  • ingres_result_seek — Set the row position before fetching data
  • ingres_rollback — Roll back a transaction
  • ingres_set_environment — Set environment features controlling output options
  • ingres_unbuffered_query — Send an unbuffered SQL query to Ingres
Basic usage
ingres_autocommit_state
Ingres


Test if the connection is using autocommit

Ingres 函数
ingres_autocommit
Ingres 函数
PHP Manual

ingres_autocommit_state

(PECL ingres >= 2.0.0)

ingres_autocommit_state — Test if the connection is using autocommit

说明

bool ingres_autocommit_state ( resource $link )

ingres_autocommit_state() is called to determine whether the current link has autocommit enabled or not.

参数

link

The connection link identifier

返回值

Returns TRUE if autocommit is enabled or FALSE when autocommit is disabled

参见

  • ingres_autocommit() - Switch autocommit on or off
  • ingres_query() - Send an SQL query to Ingres

Ingres 函数
ingres_autocommit
Ingres 函数


Switch autocommit on or off

ingres_autocommit_state
ingres_charset
Ingres 函数
PHP Manual

ingres_autocommit

(PHP 4 >= 4.0.2, PHP 5 <= 5.0.5, PECL ingres >= 1.0.0)

ingres_autocommit — Switch autocommit on or off

说明

bool ingres_autocommit ( resource $link )

ingres_autocommit() is called before opening a transaction (before the first call to ingres_query() or just after a call to ingres_rollback() or ingres_commit()) to switch the autocommit mode of the server on or off (when the script begins the autocommit mode is off).

When autocommit mode is on, every query is automatically committed by the server, as if ingres_commit() was called after every call to ingres_query(). To see if autocommit is enabled use, ingres_autocommit_state().

By default Ingres will rollback any uncommitted transactions at the end of a request. Use this function or ingres_commit() to ensure your data is committed to the database.

参数

link

The connection link identifier

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ingres_autocommit_state() - Test if the connection is using autocommit
  • ingres_query() - Send an SQL query to Ingres
  • ingres_rollback() - Roll back a transaction
  • ingres_commit() - Commit a transaction

ingres_autocommit_state
ingres_charset
Ingres 函数


Returns the installation character set

ingres_autocommit
ingres_close
Ingres 函数
PHP Manual

ingres_charset

(PECL ingres >= 2.1.0)

ingres_charset — Returns the installation character set

说明

string ingres_charset ( resource $link )

ingres_charset() is called to determine the character set being used by the Ingres client, from II_CHARSETxx (where xx is the installation code).

Note:

You can override the value returned by using the function putenv(). Changing the value of II_CHARSETxx in a running Ingres installation can cause data corruption.

参数

link

The connection link identifier

返回值

Returns a string with the value for II_CHARSETxx or returns NULL if the value could not be determined.

范例

Example #1 ingres_charset() - Get the installation character set

<?php
$link = ingres_connect($database, $user, $password);

echo ingres_charset($link) . "\n";

ingres_close($link);
?>

参见

  • ingres_connect() - Open a connection to an Ingres database
  • ingres_query() - Send an SQL query to Ingres

ingres_autocommit
ingres_close
Ingres 函数


Close an Ingres database connection

ingres_charset
ingres_commit
Ingres 函数
PHP Manual

ingres_close

(PHP 4 >= 4.0.2, PHP 5 <= 5.0.5, PECL ingres >= 1.0.0)

ingres_close — Close an Ingres database connection

说明

bool ingres_close ( resource $link )

ingres_close() closes the connection to the Ingres server that is associated with the specified link.

ingres_close() is usually unnecessary, as it will not close persistent connections and all non-persistent connections are automatically closed at the end of the script.

参数

link

The connection link identifier

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ingres_connect() - Open a connection to an Ingres database
  • ingres_pconnect() - Open a persistent connection to an Ingres database

ingres_charset
ingres_commit
Ingres 函数


Commit a transaction

ingres_close
ingres_connect
Ingres 函数
PHP Manual

ingres_commit

(PHP 4 >= 4.0.2, PHP 5 <= 5.0.5, PECL ingres >= 1.0.0)

ingres_commit — Commit a transaction

说明

bool ingres_commit ( resource $link )

ingres_commit() commits the currently open transaction, making all changes made to the database permanent.

This closes the transaction. A new transaction can be opened by sending a query with ingres_query().

You can also have the server commit automatically after every query by calling ingres_autocommit() before opening the transaction.

By default Ingres will roll back any uncommitted transactions at the end of a request. Use this function or ingres_autocommit() to ensure your that data is committed to the database.

参数

link

The connection link identifier

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ingres_query() - Send an SQL query to Ingres
  • ingres_rollback() - Roll back a transaction
  • ingres_autocommit() - Switch autocommit on or off

ingres_close
ingres_connect
Ingres 函数


Open a connection to an Ingres database

ingres_commit
ingres_cursor
Ingres 函数
PHP Manual

ingres_connect

(PHP 4 >= 4.0.2, PHP 5 <= 5.0.5, PECL ingres >= 1.0.0)

ingres_connect — Open a connection to an Ingres database

说明

resource ingres_connect ([ string $database [, string $username [, string $password [, array $options ]]]] )

ingres_connect() opens a connection with the given Ingres database.

The connection is closed when the script ends or when ingres_close() is called on this link.

参数

If some parameters are missing, ingres_connect() uses the values in php.ini for ingres.default_database, ingres.default_user and ingres.default_password.

database

The database name. Must follow the syntax:

[vnode::]dbname[/svr_class]

username

The Ingres user name

password

The password associated with username

options

ingres_connect() options

Option name | Option type | Description | Example
date_century_boundary | integer | The threshold by which a 2-digit year is determined to be in the current century or in the next century. Equivalent to II_DATE_CENTURY_BOUNDARY. | 50
group | string | Specifies the group ID of the user, equivalent to the "-G" flag | payroll
role | string | The role ID of the application. If a role password is required, the parameter value should be specified as "role/password"
effective_user | string | The ingres user account being impersonated, equivalent to the "-u" flag | another_user
dbms_password | string | The internal database password for the user connecting to Ingres | s3cr3t
table_structure string

The default structure for new tables. Valid values for table_structure are:

  • INGRES_STRUCTURE_BTREE
  • INGRES_STRUCTURE_HASH
  • INGRES_STRUCTURE_HEAP
  • INGRES_STRUCTURE_ISAM
  • INGRES_STRUCTURE_CBTREE
  • INGRES_STRUCTURE_CISAM
  • INGRES_STRUCTURE_CHASH
  • INGRES_STRUCTURE_CHEAP

 INGRES_STRUCTURE_BTREE
index_structure string

The default structure for new secondary indexes. Valid values for index_structure are:

  • INGRES_STRUCTURE_CBTREE
  • INGRES_STRUCTURE_CISAM
  • INGRES_STRUCTURE_CHASH
  • INGRES_STRUCTURE_BTREE
  • INGRES_STRUCTURE_HASH
  • INGRES_STRUCTURE_ISAM

 INGRES_STRUCTURE_HASH
login_local | boolean | Determines how the connection user ID and password are used when a VNODE is included in the target database string. If set to TRUE, the user ID and password are used to locally access the VNODE, and the VNODE login information is used to establish the DBMS connection. If set to FALSE, the process user ID is used to access the VNODE, and the connection user ID and password are used in place of the VNODE login information to establish the DBMS connection. This parameter is ignored if no VNODE is included in the target database string. The default is FALSE. | TRUE
timezone | string | Controls the timezone of the session. If not set it will default to the value defined by II_TIMEZONE_NAME. If II_TIMEZONE_NAME is not defined, NA-PACIFIC (GMT-8 with Daylight Savings) is used.
date_format integer

Sets the allowable input and output format for Ingres dates. Defaults to the value defined by II_DATE_FORMAT. If II_DATE_FORMAT is not set the default date format is US, e.g. mm/dd/yy. Valid values for date_format are:

  • INGRES_DATE_DMY
  • INGRES_DATE_FINISH
  • INGRES_DATE_GERMAN
  • INGRES_DATE_ISO
  • INGRES_DATE_ISO4
  • INGRES_DATE_MDY
  • INGRES_DATE_MULTINATIONAL
  • INGRES_DATE_MULTINATIONAL4
  • INGRES_DATE_YMD
  • INGRES_DATE_US

 INGRES_DATE_MULTINATIONAL4
decimal_separator string The character identifier for decimal data ","
money_lort integer

Leading or trailing currency sign. Valid values for money_lort are:

  • INGRES_MONEY_LEADING
  • INGRES_MONEY_TRAILING

 INGRES_MONEY_TRAILING
money_sign string The currency symbol to be used with the MONEY datatype �
money_precision | integer | The precision of the MONEY datatype | 3
float4_precision | integer | Precision of the FLOAT4 datatype | 10
float8_precision | integer | Precision of the FLOAT8 data | 10
blob_segment_length | integer | The amount of data in bytes to fetch at a time when retrieving BLOB or CLOB data, defaults to 4096 bytes when not explicitly set | 8192

返回值

Returns a Ingres link resource on success 或者在失败时返回 FALSE

范例

Example #1 Open a connection to an Ingres database

<?php
$link = ingres_connect("mydb", "user", "pass")
    or die("Could not connect");
echo "Connected successfully";
ingres_close($link);
?>

参见

  • ingres_pconnect() - Open a persistent connection to an Ingres database
  • ingres_close() - Close an Ingres database connection

ingres_commit
ingres_cursor
Ingres 函数


Get a cursor name for a given result resource

ingres_connect
ingres_errno
Ingres 函数
PHP Manual

ingres_cursor

(PECL ingres >= 1.1.0)

ingres_cursor — Get a cursor name for a given result resource

说明

string ingres_cursor ( resource $result )

Returns a string with the active cursor name. If no cursor is active then NULL is returned.

参数

result

The query result identifier

返回值

Returns a string containing the active cursor name. If no cursor is active then NULL is returned.

范例

Example #1 Get cursor name for a query resource

<?php
$link = ingres_connect($database, $user, $password);

$result = ingres_prepare($link, "select * from table");

$cursor_name = ingres_cursor($result);

echo $cursor_name;

?>

参见

  • ingres_prepare() - Prepare a query for later execution
  • ingres_execute() - Execute a prepared query

ingres_connect
ingres_errno
Ingres 函数


Get the last Ingres error number generated

ingres_cursor
ingres_error
Ingres 函数
PHP Manual

ingres_errno

(PECL ingres >= 1.1.0)

ingres_errno — Get the last Ingres error number generated

说明

int ingres_errno ([ resource $link ] )

Returns an integer containing the last error number. If no error was reported 0 is returned.

If a link resource is passed to ingres_errno() it returns the last error recorded for the link. If no link is passed, then ingres_errno() returns the last error reported using the default link.

The function, ingres_errno(), should always be called after executing a database query. Calling another function before ingres_errno() is called will reset or change any error code from the last Ingres function call.

参数

link

The connection link identifier

返回值

Returns an integer containing the last error number. If no error was reported, 0 is returned.

范例

Example #1 Get the last Ingres error number generated

<?php
$link = ingres_connect($database, $user, $password);

$result = ingres_query($link, "select * from table");

$error_code = ingres_errno($link);

if ( $error_code != 0 ) {
   echo "An error occurred - " . $error_code;
}
?>

参见

  • ingres_error() - Get a meaningful error message for the last error generated
  • ingres_errsqlstate() - Get the last SQLSTATE error code generated
  • ingres_next_error() - Get the next Ingres error

ingres_cursor
ingres_error
Ingres 函数


Get a meaningful error message for the last error generated

ingres_errno
ingres_errsqlstate
Ingres 函数
PHP Manual

ingres_error

(PECL ingres >= 1.1.0)

ingres_error — Get a meaningful error message for the last error generated

说明

string ingres_error ([ resource $link ] )

Returns a string containing the last error, or NULL if no error has occurred.

If a link resource is passed to ingres_error(), it returns the last error recorded for the link. If no link is passed then ingres_error() returns the last error reported using the default link.

The function, ingres_error(), should always be called after executing any database query. Calling another function before ingres_error() is called will reset or change any error message from the last Ingres function call.

参数

link

The connection link identifier

返回值

Returns a string containing the last error, or NULL if no error has occurred.

范例

Example #1 Get a message for the last error generated

<?php
$link = ingres_connect($database, $user, $password);

$result = ingres_query($link, "select * from table");

$error_text = ingres_error();

if (!is_null($error_text)) {
   echo "An error occurred - " . $error_text;
}
?>

参见

  • ingres_errno() - Get the last Ingres error number generated
  • ingres_errsqlstate() - Get the last SQLSTATE error code generated
  • ingres_next_error() - Get the next Ingres error

ingres_errno
ingres_errsqlstate
Ingres 函数


Get the last SQLSTATE error code generated

ingres_error
ingres_escape_string
Ingres 函数
PHP Manual

ingres_errsqlstate

(PECL ingres >= 1.1.0)

ingres_errsqlstate — Get the last SQLSTATE error code generated

说明

string ingres_errsqlstate ([ resource $link ] )

Returns a string containing the last SQLSTATE, or NULL if no error has occurred.

If a link resource is passed to ingres_errsqlstate(), it returns the last error recorded for the link. If no link is passed, then ingres_errsqlstate() returns the last error reported using the default link.

The function, ingres_errsqlstate(), should always be called after executing any database query. Calling another function before ingres_errsqlstate() is called will reset or change any error message from the last Ingres function call.

参数

link

The connection link identifier

返回值

Returns a string containing the last SQLSTATE, or NULL if no error has occurred.

范例

Example #1 Get the last SQLSTATE error code generated

<?php
$link = ingres_connect($database, $user, $password);

$result = ingres_query($link, "select * from table");

$error_sqlstate = ingres_errsqlstate($link);

if (!is_null($error_sqlstate)) {
   echo "An error occurred - " . $error_sqlstate;
}
?>

参见

  • ingres_errno() - Get the last Ingres error number generated
  • ingres_error() - Get a meaningful error message for the last error generated
  • ingres_next_error() - Get the next Ingres error

ingres_error
ingres_escape_string
Ingres 函数


Escape special characters for use in a query

ingres_errsqlstate
ingres_execute
Ingres 函数
PHP Manual

ingres_escape_string

(PECL ingres >= 2.1.0)

ingres_escape_string — Escape special characters for use in a query

说明

string ingres_escape_string ( resource $link , string $source_string )

ingres_escape_string() is used to escape certain characters within a string before it is sent to the database server.

参数

link

The connection link identifier

source_string

The source string to be parsed

返回值

Returns a string containing the escaped data.

范例

Example #1 Escape special characters for use in a query

<?php
$link = ingres_connect($database, $user, $password);

$last_name = "O'Connor";

$sql = sprintf("select * from user_profile where up_last = '%s'", ingres_escape_string( $link, $last_name));

$result = ingres_query($link, $sql);

while ($user = ingres_fetch_object($result))
{
  echo $user->up_first . '<BR/>';
}

ingres_commit($link);

ingres_close($link);

?>

参见

  • ingres_query() - Send an SQL query to Ingres

ingres_errsqlstate
ingres_execute
Ingres 函数


Execute a prepared query

ingres_escape_string
ingres_fetch_array
Ingres 函数
PHP Manual

ingres_execute

(PECL ingres >= 1.1.0)

ingres_execute — Execute a prepared query

说明

bool ingres_execute ( resource $result [, array $params [, string $types ]] )

Execute a query prepared using ingres_prepare().

Note: Related Configurations

See also the ingres.describe, ingres.scrollable and ingres.utf8 directives in Runtime Configuration.

参数

result

The result query identifier

params

An array of parameter values to be used with the query

types

A string containing a sequence of types for the parameter values passed. See the types parameter in ingres_query() for the list of type codes.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ingres_unbuffered_query() - Send an unbuffered SQL query to Ingres
  • ingres_fetch_array() - Fetch a row of result into an array
  • ingres_fetch_assoc() - Fetch a row of result into an associative array
  • ingres_fetch_object() - Fetch a row of result into an object
  • ingres_fetch_row() - Fetch a row of result into an enumerated array
  • ingres_commit() - Commit a transaction
  • ingres_rollback() - Roll back a transaction
  • ingres_autocommit() - Switch autocommit on or off
  • ingres_set_environment() - Set environment features controlling output options
  • ingres_errno() - Get the last Ingres error number generated
  • ingres_error() - Get a meaningful error message for the last error generated

ingres_escape_string
ingres_fetch_array
Ingres 函数


Fetch a row of result into an array

ingres_execute
ingres_fetch_assoc
Ingres 函数
PHP Manual

ingres_fetch_array

( PHP 5 <= 5.0.5, PECL ingres >= 1.0.0)

ingres_fetch_array — Fetch a row of result into an array

说明

array ingres_fetch_array ( resource $result [, int $result_type ] )

This function is an extended version of ingres_fetch_row(). In addition to storing the data in the numeric indices of the result array, it also stores the data in associative indices, using the field names as keys.

If two or more columns of the result have the same field names, the last column will take precedence. To access the another column or columns of the same name, you must use the numeric index of the column or make an alias for the column. For example:

<?php

$result = ingres_query($link, "select ap_place as city, ap_ccode as country from airport where ap_iatacode = 'VLL'");
$result = ingres_fetch_array($result);
$foo = $result["city"];
$bar = $result["country"];

?>

With regard to speed, the function is identical to ingres_fetch_object(), and almost as quick as ingres_fetch_row() (the difference is insignificant).

By default, arrays created by ingres_fetch_array() start from position 1 and not 0 as with other DBMS extensions. The starting position can be adjusted to 0 using the configuration parameter ingres.array_index_start.

Note: Related Configurations

See also the ingres.array_index_start, ingres.fetch_buffer_size and ingres.utf8 directives in Runtime Configuration.

参数

result

The query result identifier

result_type

The result type. This result_type can be INGRES_NUM for enumerated array, INGRES_ASSOC for associative array, or INGRES_BOTH (default).

返回值

Returns an array that corresponds to the fetched row, or FALSE if there are no more rows

范例

Example #1 Fetch a row of result into an array

<?php
$link = ingres_connect($database, $user, $password);

$result = ingres_query($link,"select * from table");
while ($row = ingres_fetch_array($result)) {
    echo $row["user_id"];  // using associative array
    echo $row["fullname"];
    echo $row[1];          // using enumerated array
    echo $row[2];
}
?>

参见

  • ingres_query() - Send an SQL query to Ingres
  • ingres_num_fields() - Get the number of fields returned by the last query
  • ingres_field_name() - Get the name of a field in a query result
  • ingres_fetch_assoc() - Fetch a row of result into an associative array
  • ingres_fetch_object() - Fetch a row of result into an object
  • ingres_fetch_row() - Fetch a row of result into an enumerated array

ingres_execute
ingres_fetch_assoc
Ingres 函数


Fetch a row of result into an associative array

ingres_fetch_array
ingres_fetch_object
Ingres 函数
PHP Manual

ingres_fetch_assoc

(PECL ingres >= 2.2.2)

ingres_fetch_assoc — Fetch a row of result into an associative array

说明

array ingres_fetch_assoc ( resource $result )

This function is stores the data fetched from a query executed using ingres_query() in an associative array, using the field names as keys.

With regard to speed, the function is identical to ingres_fetch_object(), and almost as quick as ingres_fetch_row() (the difference is insignificant).

By default, arrays created by ingres_fetch_assoc() start from position 1 and not 0 as with other DBMS extensions. The starting position can be adjusted to 0 using the configuration parameter ingres.array_index_start.

Note: Related Configurations

See also the ingres.array_index_start, ingres.fetch_buffer_size and ingres.utf8 directives in Runtime Configuration.

参数

result

The query result identifier

返回值

Returns an associative array that corresponds to the fetched row, or FALSE if there are no more rows

范例

Example #1 Fetch a row into an associative array

<?php
$link = ingres_connect($database, $user, $password);

$result = ingres_query($link,"select * from table");
while ($row = ingres_fetch_assoc($result)) {
    echo $row["user_id"];  // using associative array
    echo $row["fullname"];
}
?>

参见

  • ingres_query() - Send an SQL query to Ingres
  • ingres_num_fields() - Get the number of fields returned by the last query
  • ingres_field_name() - Get the name of a field in a query result
  • ingres_fetch_array() - Fetch a row of result into an array
  • ingres_fetch_object() - Fetch a row of result into an object
  • ingres_fetch_row() - Fetch a row of result into an enumerated array

ingres_fetch_array
ingres_fetch_object
Ingres 函数


Fetch a row of result into an object

ingres_fetch_assoc
ingres_fetch_proc_return
Ingres 函数
PHP Manual

ingres_fetch_object

(PHP 4 >= 4.0.2, PHP 5 <= 5.0.5, PECL ingres >= 1.0.0)

ingres_fetch_object — Fetch a row of result into an object

说明

object ingres_fetch_object ( resource $result [, int $result_type ] )

This function is similar to ingres_fetch_array(), with one difference - an object is returned instead of an array. Indirectly, this means that you can access the data only by the field names and not by their offsets (numbers are illegal property names).

With regard to speed, the function is identical to ingres_fetch_array(), and almost as quick as ingres_fetch_row() (the difference is insignificant).

Note: Related Configurations

See also the ingres.fetch_buffer_size and ingres.utf8 directives in Runtime Configuration.

参数

link

The query result identifier

result_type

(Optional argument.) result_type is a constant and can take the following values: INGRES_ASSOC, INGRES_NUM, and INGRES_BOTH.

返回值

Returns an object that corresponds to the fetched row, or FALSE if there are no more rows

范例

Example #1 Fetch a row into an object

<?php
$link = ingres_connect($database, $user, $password);
$result = ingres_query($link, "select * from table");
while ($row = ingres_fetch_object($result)) {
    echo $row->user_id;
    echo $row->fullname;
}
?>

参见

  • ingres_query() - Send an SQL query to Ingres
  • ingres_num_fields() - Get the number of fields returned by the last query
  • ingres_field_name() - Get the name of a field in a query result
  • ingres_fetch_array() - Fetch a row of result into an array
  • ingres_fetch_assoc() - Fetch a row of result into an associative array
  • ingres_fetch_row() - Fetch a row of result into an enumerated array

ingres_fetch_assoc
ingres_fetch_proc_return
Ingres 函数


Get the return value from a procedure call

ingres_fetch_object
ingres_fetch_row
Ingres 函数
PHP Manual

ingres_fetch_proc_return

(PECL ingres >= 1.4.0)

ingres_fetch_proc_return — Get the return value from a procedure call

说明

int ingres_fetch_proc_return ( resource $result )

This function is used to retrieve the return value following the execution of an Ingres database procedure (stored procedure).

Note:

If used with a row-producing procedure, this function should be called after all the rows from the procedure have been fetched using ingres_fetch_array(), ingres_fetch_object() or ingres_fetch_row(). This function will eliminate any rows yet to be fetched should there be any left over.

参数

result

The result identifier for a query

返回值

Returns an integer if there is a return value otherwise it will return NULL.

范例

Example #1 Get the return value from a procedure call

<?php

$link = ingres_connect($database);

if ( ingres_errno() != 0 ) {
    $error_text = ingres_error();
    die($error_text);
}

$result = ingres_query($link, "execute procedure php_proc (value = 1000)");

if ( ingres_errno() != 0 ) {
    $error_text = ingres_error();
    die($error_text);
}

echo "return value - " . ingres_fetch_proc_return($result) . "\n";

ingres_close($link);

?>

参见

  • ingres_query() - Send an SQL query to Ingres
  • ingres_fetch_array() - Fetch a row of result into an array
  • ingres_fetch_object() - Fetch a row of result into an object
  • ingres_fetch_row() - Fetch a row of result into an enumerated array

ingres_fetch_object
ingres_fetch_row
Ingres 函数


Fetch a row of result into an enumerated array

ingres_fetch_proc_return
ingres_field_length
Ingres 函数
PHP Manual

ingres_fetch_row

(PHP 4 >= 4.0.2, PHP 5 <= 5.0.5, PECL ingres >= 1.0.0)

ingres_fetch_row — Fetch a row of result into an enumerated array

说明

array ingres_fetch_row ( resource $result )

ingres_fetch_row() returns an array that corresponds to the fetched row, or FALSE if there are no more rows. Each result column is stored in an array offset, starting at offset 1.

Subsequent calls to ingres_fetch_row() return the next row in the result set, or FALSE if there are no more rows.

By default, arrays created by ingres_fetch_row() start from position 1 and not 0 as with other DBMS extensions. The starting position can be adjusted to 0 using the configuration parameter ingres.array_index_start.

Note: Related Configurations

See also the ingres.array_index_start, ingres.fetch_buffer_size and ingres.utf8 directives in Runtime Configuration.

参数

result

The query result identifier

返回值

Returns an array that corresponds to the fetched row, or FALSE if there are no more rows

范例

Example #1 Fetch a row of result into an enumerated array

<?php
$link = ingres_connect($database, $user, $password);

$result = ingres_query($link, "select * from table");
while ($row = ingres_fetch_row($result)) {
    echo $row[1];
    echo $row[2];
}
?>

参见

  • ingres_num_fields() - Get the number of fields returned by the last query
  • ingres_query() - Send an SQL query to Ingres
  • ingres_fetch_array() - Fetch a row of result into an array
  • ingres_fetch_assoc() - Fetch a row of result into an associative array
  • ingres_fetch_object() - Fetch a row of result into an object

ingres_fetch_proc_return
ingres_field_length
Ingres 函数


Get the length of a field

ingres_fetch_row
ingres_field_name
Ingres 函数
PHP Manual

ingres_field_length

(PHP 4 >= 4.0.2, PHP 5 <= 5.0.5, PECL ingres >= 1.0.0)

ingres_field_length — Get the length of a field

说明

int ingres_field_length ( resource $result , int $index )

ingres_field_length() returns the length of a field. This is the number of bytes the server uses to store the field. For detailed information, see the Ingres OpenAPI User Guide, Appendix "Data Types" in the Ingres documentation.

Note: Related Configurations

See ingres.array_index_start in Runtime Configuration

参数

result

The query result identifier

index

index is the column number whose length will be retrieved.

The possible values of index depend upon the value of ingres.array_index_start. If ingres.array_index_start is 1 (the default) then index must be between 1 and the value returned by ingres_num_fields(). If ingres.array_index_start is 0 then index must be between 0 and ingres_num_fields() - 1.

返回值

Returns the length of a field.

参见

  • ingres_query() - Send an SQL query to Ingres
  • ingres_fetch_array() - Fetch a row of result into an array
  • ingres_fetch_assoc() - Fetch a row of result into an associative array
  • ingres_fetch_object() - Fetch a row of result into an object
  • ingres_fetch_row() - Fetch a row of result into an enumerated array

ingres_fetch_row
ingres_field_name
Ingres 函数


Get the name of a field in a query result

ingres_field_length
ingres_field_nullable
Ingres 函数
PHP Manual

ingres_field_name

(PHP 4 >= 4.0.2, PHP 5 <= 5.0.5, PECL ingres >= 1.0.0)

ingres_field_name — Get the name of a field in a query result

说明

string ingres_field_name ( resource $result , int $index )

ingres_field_name() returns the name of a field in a query result.

Note: Related Configurations

See ingres.array_index_start in Runtime Configuration

参数

result

The query result identifier

index

index is the field whose name will be retrieved.

The possible values of index depend upon the value of ingres.array_index_start. If ingres.array_index_start is 1 (the default) then index must be between 1 and the value returned by ingres_num_fields(). If ingres.array_index_start is 0 then index must be between 0 and ingres_num_fields() - 1.

返回值

Returns the name of a field in a query result 或者在失败时返回 FALSE

参见

  • ingres_query() - Send an SQL query to Ingres
  • ingres_fetch_array() - Fetch a row of result into an array
  • ingres_fetch_assoc() - Fetch a row of result into an associative array
  • ingres_fetch_object() - Fetch a row of result into an object
  • ingres_fetch_row() - Fetch a row of result into an enumerated array

ingres_field_length
ingres_field_nullable
Ingres 函数


Test if a field is nullable

ingres_field_name
ingres_field_precision
Ingres 函数
PHP Manual

ingres_field_nullable

(PHP 4 >= 4.0.2, PHP 5 <= 5.0.5, PECL ingres >= 1.0.0)

ingres_field_nullable — Test if a field is nullable

说明

bool ingres_field_nullable ( resource $result , int $index )

Test if a field is nullable.

Note: Related Configurations

See ingres.array_index_start in Runtime Configuration

参数

result

The query result identifier

index

index is the field whose nullability will be retrieved.

The possible values of index depend upon the value of ingres.array_index_start. If ingres.array_index_start is 1 (the default) then index must be between 1 and the value returned by ingres_num_fields(). If ingres.array_index_start is 0 then index must be between 0 and ingres_num_fields() - 1.

返回值

ingres_field_nullable() returns TRUE if the field can be set to the NULL value and FALSE if it cannot

参见

  • ingres_query() - Send an SQL query to Ingres
  • ingres_fetch_array() - Fetch a row of result into an array
  • ingres_fetch_assoc() - Fetch a row of result into an associative array
  • ingres_fetch_object() - Fetch a row of result into an object
  • ingres_fetch_row() - Fetch a row of result into an enumerated array

ingres_field_name
ingres_field_precision
Ingres 函数


Get the precision of a field

ingres_field_nullable
ingres_field_scale
Ingres 函数
PHP Manual

ingres_field_precision

(PHP 4 >= 4.0.2, PHP 5 <= 5.0.5, PECL ingres >= 1.0.0)

ingres_field_precision — Get the precision of a field

说明

int ingres_field_precision ( resource $result , int $index )

ingres_field_precision() returns the precision of a field. This value is used only for decimal, float, and money SQL data types. For detailed information, see the Ingres OpenAPI User Guide, Appendix "Data Types" in the Ingres documentation.

Note: Related Configurations

See ingres.array_index_start in Runtime Configuration

参数

result

The query result identifier

index

index is the field whose precision will be retrieved.

The possible values of index depend upon the value of ingres.array_index_start. If ingres.array_index_start is 1 (the default) then index must be between 1 and the value returned by ingres_num_fields(). If ingres.array_index_start is 0 then index must be between 0 and ingres_num_fields() - 1.

返回值

Returns the field precision as an integer

参见

  • ingres_query() - Send an SQL query to Ingres
  • ingres_fetch_array() - Fetch a row of result into an array
  • ingres_fetch_assoc() - Fetch a row of result into an associative array
  • ingres_fetch_object() - Fetch a row of result into an object
  • ingres_fetch_row() - Fetch a row of result into an enumerated array

ingres_field_nullable
ingres_field_scale
Ingres 函数


Get the scale of a field

ingres_field_precision
ingres_field_type
Ingres 函数
PHP Manual

ingres_field_scale

(PHP 4 >= 4.0.2, PHP 5 <= 5.0.5, PECL ingres >= 1.0.0)

ingres_field_scale — Get the scale of a field

说明

int ingres_field_scale ( resource $result , int $index )

ingres_field_scale() returns the scale of a field. This value is used only for the decimal SQL data type. For detailed information, see the Ingres OpenAPI User Guide, Appendix "Data Types" in the Ingres documentation.

Note: Related Configurations

See ingres.array_index_start in Runtime Configuration

参数

result

The query result identifier

index

index is the field whose scale will be retrieved.

The possible values of index depend upon the value of ingres.array_index_start. If ingres.array_index_start is 1 (the default) then index must be between 1 and the value returned by ingres_num_fields(). If ingres.array_index_start is 0 then index must be between 0 and ingres_num_fields() - 1.

返回值

Returns the scale of the field, as an integer

参见

  • ingres_query() - Send an SQL query to Ingres
  • ingres_fetch_array() - Fetch a row of result into an array
  • ingres_fetch_assoc() - Fetch a row of result into an associative array
  • ingres_fetch_object() - Fetch a row of result into an object
  • ingres_fetch_row() - Fetch a row of result into an enumerated array

ingres_field_precision
ingres_field_type
Ingres 函数


Get the type of a field in a query result

ingres_field_scale
ingres_free_result
Ingres 函数
PHP Manual

ingres_field_type

(PHP 4 >= 4.0.2, PHP 5 <= 5.0.5, PECL ingres >= 1.0.0)

ingres_field_type — Get the type of a field in a query result

说明

string ingres_field_type ( resource $result , int $index )

Get the type of a field in a query result.

Note: Related Configurations

See ingres.array_index_start in Runtime Configuration

参数

result

The query result identifier

index

index is the field whose type will be retrieved.

The possible values of index depend upon the value of ingres.array_index_start. If ingres.array_index_start is 1 (the default) then index must be between 1 and the value returned by ingres_num_fields(). If ingres.array_index_start is 0 then index must be between 0 and ingres_num_fields() - 1.

返回值

ingres_field_type() returns the type of a field in a query result 或者在失败时返回 FALSE. Examples of types returned are IIAPI_BYTE_TYPE, IIAPI_CHA_TYPE, IIAPI_DTE_TYPE, IIAPI_FLT_TYPE, IIAPI_INT_TYPE, IIAPI_VCH_TYPE. Some of these types can map to more than one SQL type depending on the length of the field (see ingres_field_length()). For example IIAPI_FLT_TYPE can be a float4 or a float8. For detailed information, see the Ingres OpenAPI User Guide, Appendix "Data Types" in the Ingres documentation.

参见

  • ingres_query() - Send an SQL query to Ingres
  • ingres_fetch_array() - Fetch a row of result into an array
  • ingres_fetch_assoc() - Fetch a row of result into an associative array
  • ingres_fetch_object() - Fetch a row of result into an object
  • ingres_fetch_row() - Fetch a row of result into an enumerated array

ingres_field_scale
ingres_free_result
Ingres 函数


Free the resources associated with a result identifier

ingres_field_type
ingres_next_error
Ingres 函数
PHP Manual

ingres_free_result

(PECL ingres >= 2.0.0)

ingres_free_result — Free the resources associated with a result identifier

说明

bool ingres_free_result ( resource $result )

参数

result

The query result identifier

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Free a result resource

<?php
$link = ingres_connect($database, $user, $password);

$result = ingres_query($link, "select * from table");

while ($row = ingres_fetch_row($result)) {
    echo $row[1];
    echo $row[2];
}
ingres_free_result($result);

ingres_close($link)

?>

参见

  • ingres_query() - Send an SQL query to Ingres

ingres_field_type
ingres_next_error
Ingres 函数


Get the next Ingres error

ingres_free_result
ingres_num_fields
Ingres 函数
PHP Manual

ingres_next_error

(PECL ingres >= 2.0.0)

ingres_next_error — Get the next Ingres error

说明

bool ingres_next_error ([ resource $link ] )

Get the next Ingres error for the last executed query. Each call to ingres_next_error() can be followed by a call to ingres_errno(), ingres_error() or ingres_errsqlstate() to get the respective error number, error text, or SQL STATE. While ingres_next_error() returns TRUE, there are more errors to fetch.

参数

link

The connection link identifier

返回值

ingres_next_error() returns TRUE if there is another error to retrieve or FALSE when there are no more errors

参见

  • ingres_errno() - Get the last Ingres error number generated
  • ingres_error() - Get a meaningful error message for the last error generated
  • ingres_errsqlstate() - Get the last SQLSTATE error code generated

ingres_free_result
ingres_num_fields
Ingres 函数


Get the number of fields returned by the last query

ingres_next_error
ingres_num_rows
Ingres 函数
PHP Manual

ingres_num_fields

(PHP 4 >= 4.0.2, PHP 5 <= 5.0.5, PECL ingres >= 1.0.0)

ingres_num_fields — Get the number of fields returned by the last query

说明

int ingres_num_fields ( resource $result )

ingres_num_fields() returns the number of fields in the results returned by the Ingres server after a call to ingres_query().

参数

result

The query result identifier

返回值

Returns the number of fields

参见

  • ingres_query() - Send an SQL query to Ingres
  • ingres_fetch_array() - Fetch a row of result into an array
  • ingres_fetch_assoc() - Fetch a row of result into an associative array
  • ingres_fetch_object() - Fetch a row of result into an object
  • ingres_fetch_row() - Fetch a row of result into an enumerated array

ingres_next_error
ingres_num_rows
Ingres 函数


Get the number of rows affected or returned by a query

ingres_num_fields
ingres_pconnect
Ingres 函数
PHP Manual

ingres_num_rows

(PHP 4 >= 4.0.2, PHP 5 <= 5.0.5, PECL ingres >= 1.0.0)

ingres_num_rows — Get the number of rows affected or returned by a query

说明

int ingres_num_rows ( resource $result )

This function primarily is meant to get the number of rows modified in the database. However, it can be used to retrieve the number of rows to fetch for a SELECT statement.

Note:

If scrollable cursors are disabled and this function is called before using ingres_fetch_array(), ingres_fetch_object(), or ingres_fetch_row(), the server will delete the result's data and the script will be unable to get them.

Instead, you should retrieve the result's data using one of these fetch functions in a loop until it returns FALSE, indicating that no more results are available.

参数

result

The result identifier for a query

返回值

For delete, insert, or update queries, ingres_num_rows() returns the number of rows affected by the query. For other queries, ingres_num_rows() returns the number of rows in the query's result.

参见

  • ingres_query() - Send an SQL query to Ingres
  • ingres_fetch_array() - Fetch a row of result into an array
  • ingres_fetch_assoc() - Fetch a row of result into an associative array
  • ingres_fetch_object() - Fetch a row of result into an object
  • ingres_fetch_row() - Fetch a row of result into an enumerated array

ingres_num_fields
ingres_pconnect
Ingres 函数


Open a persistent connection to an Ingres database

ingres_num_rows
ingres_prepare
Ingres 函数
PHP Manual

ingres_pconnect

(PHP 4 >= 4.0.2, PHP 5 <= 5.0.5, PECL ingres >= 1.0.0)

ingres_pconnect — Open a persistent connection to an Ingres database

说明

resource ingres_pconnect ([ string $database [, string $username [, string $password [, array $options ]]]] )

Open a persistent connection to an Ingres database.

There are only two differences between this function and ingres_connect(): First, when connecting, the function will initially try to find a (persistent) link that is already opened with the same parameters. If one is found, an identifier for it will be returned instead of opening a new connection. Second, the connection to the Ingres server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (ingres_close() will not close links established by ingres_pconnect()). This type of link is therefore called "persistent".

参数

database

The database name. Must follow the syntax:

[vnode::]dbname[/svr_class]

username

The Ingres user name

password

The password associated with username

options

See ingres_connect() for the list of options that can be passed

返回值

Returns an Ingres link resource on success 或者在失败时返回 FALSE

参见

  • ingres_connect() - Open a connection to an Ingres database
  • ingres_close() - Close an Ingres database connection

ingres_num_rows
ingres_prepare
Ingres 函数


Prepare a query for later execution

ingres_pconnect
ingres_query
Ingres 函数
PHP Manual

ingres_prepare

(PECL ingres >= 1.1.0)

ingres_prepare — Prepare a query for later execution

说明

mixed ingres_prepare ( resource $link , string $query )

Prepares a query for execution by ingres_execute().

The query becomes part of the currently open transaction. If there is no open transaction, ingres_query() opens a new transaction. To close the transaction, you can call either ingres_commit() to commit the changes made to the database or ingres_rollback() to cancel these changes. When the script ends, any open transaction is rolled back (by calling ingres_rollback()). You can also use ingres_autocommit() before opening a new transaction to have every SQL query immediately committed.

Note: Related Configurations

See also the ingres.describe, ingres.scrollable and ingres.utf8 directives in Runtime Configuration.

参数

link

The connection link identifier

query

A valid SQL query (see the Ingres SQL reference guide) in the Ingres documentation. See the query parameter in ingres_query() for a list of SQL statements which cannot be executed using ingres_prepare()

返回值

ingres_prepare() returns a query result identifier that
is used with ingres_execute() to execute the query. To see
if an error occurred, use ingres_errno(),
ingres_error(), or
ingres_errsqlstate().

参见

  • ingres_unbuffered_query() - Send an unbuffered SQL query to Ingres
  • ingres_fetch_array() - Fetch a row of result into an array
  • ingres_fetch_assoc() - Fetch a row of result into an associative array
  • ingres_fetch_object() - Fetch a row of result into an object
  • ingres_fetch_row() - Fetch a row of result into an enumerated array
  • ingres_commit() - Commit a transaction
  • ingres_rollback() - Roll back a transaction
  • ingres_autocommit() - Switch autocommit on or off
  • ingres_set_environment() - Set environment features controlling output options
  • ingres_errno() - Get the last Ingres error number generated
  • ingres_error() - Get a meaningful error message for the last error generated

ingres_pconnect
ingres_query
Ingres 函数


Send an SQL query to Ingres

ingres_prepare
ingres_result_seek
Ingres 函数
PHP Manual

ingres_query

(PHP 4 >= 4.0.2, PHP 5 <= 5.0.5, PECL ingres >= 1.0.0)

ingres_query — Send an SQL query to Ingres

说明

mixed ingres_query ( resource $link , string $query [, array $params [, string $types ]] )

ingres_query() sends the given query to the Ingres server.

The query becomes part of the currently open transaction. If there is no open transaction, ingres_query() opens a new transaction. To close the transaction, you can call either ingres_commit() to commit the changes made to the database or ingres_rollback() to cancel these changes. When the script ends, any open transaction is rolled back (by calling ingres_rollback()). You can also use ingres_autocommit() before opening a new transaction to have every SQL query immediately committed.

Note: Related Configurations

See also the ingres.describe, ingres.scrollable and ingres.utf8 directives in Runtime Configuration

参数

link

The connection link identifier.

query

A valid SQL query (see the Ingres SQL reference guide) in the Ingres documentation.

Data inside the query should be properly escaped.

The following types of SQL queries cannot be sent with this function:

  • close (see ingres_close())
  • commit (see ingres_commit())
  • connect (see ingres_connect())
  • disconnect (see ingres_close())
  • get dbevent
  • prepare to commit
  • rollback (see ingres_rollback())
  • savepoint
  • set autocommit (see ingres_autocommit())
  • all cursor-related queries are unsupported

params

An array of parameter values to be used with the query

types

A string containing a sequence of types for the parameter values passed. When ingres.describe is enabled, this parameter can be ignored as the driver automatically fetches the expected parameter types from the server.

Type code | Ingres type
a | BOOLEAN
b | BYTE
B | LONG BYTE/BLOB
c | CHAR
d | DATE/ANSIDATE/TIMESTAMP/TIME
f | FLOAT
i | INTEGER
L | LONG TEXT
m | MONEY
M | LONG NVARCHAR
n | NCHAR
N | NVARCHAR
t | TEXT
v | VARCHAR
V | LONG VARCHAR

返回值

ingres_query() returns a query result identifier on
success else it returns FALSE. To see if an error
occurred use ingres_errno(),
ingres_error() or
ingres_errsqlstate().

范例

Example #1 Send a simple select

<?php
$link = ingres_connect("demodb");

$result = ingres_query($link, "select * from user_profile");
while ($row = ingres_fetch_row($result)) {
    echo $row[1];
    echo $row[2];
}
?>

Example #2 Passing query parameters to ingres_query()

<?php
$link = ingres_connect("demodb");

$params[] = "Emma";
$query = "select * from user_profile where up_first = ?";
$result = ingres_query($link, $query, $params);
while ($row = ingres_fetch_row($result)) {
    echo $row[1];
    echo $row[2];
}
?>

Example #3 Inserting a BLOB with parameter types

<?php
$link = ingres_connect("demodb");

//Open a photo
$fh = fopen("photo.jpg","r");
$blob_data = stream_get_contents($fh);
fclose($fh);

//Prepare parameters
$params[] = $blob_data;
$params[] = 1201;

//Define parameter types
$param_types = "Bi";

$query = "update user_profile set up_image = ? where up_id = ?";
$result = ingres_query($link, $query , $params, $param_types);

if (ingres_errno())
{
    echo ingres_errno() . "-" . ingres_error() . "\n";
}

ingres_commit($link);

ingres_close($link);
?>

参见

  • ingres_unbuffered_query() - Send an unbuffered SQL query to Ingres
  • ingres_fetch_array() - Fetch a row of result into an array
  • ingres_fetch_assoc() - Fetch a row of result into an associative array
  • ingres_fetch_object() - Fetch a row of result into an object
  • ingres_fetch_row() - Fetch a row of result into an enumerated array
  • ingres_commit() - Commit a transaction
  • ingres_rollback() - Roll back a transaction
  • ingres_autocommit() - Switch autocommit on or off
  • ingres_set_environment() - Set environment features controlling output options
  • ingres_errno() - Get the last Ingres error number generated
  • ingres_error() - Get a meaningful error message for the last error generated

ingres_prepare
ingres_result_seek
Ingres 函数


Set the row position before fetching data

ingres_query
ingres_rollback
Ingres 函数
PHP Manual

ingres_result_seek

(PECL ingres >= 2.1.0)

ingres_result_seek — Set the row position before fetching data

说明

bool ingres_result_seek ( resource $result , int $position )

This function is used to position the cursor associated with the result resource before issuing a fetch. If ingres.array_index_start is set to 0 then the first row is 0 else it is 1. ingres_result_seek() can be used only with queries that make use of scrollable cursors. It cannot be used with ingres_unbuffered_query().

Note: Related Configurations

See also the ingres.scrollable and ingres.array_index_start directives in Runtime Configuration.

参数

result

The result identifier for a query

position

The row to position the cursor on. If ingres.array_index_start is set to 0, then the first row is 0, else it is 1

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Position the cursor on the 3rd row

<?php

$result=ingres_query($link, "select * from airport where ap_ccode = 'ES' order by ap_place asc");

/* goto row 3 */
if (!ingres_result_seek($result, 3))
{
    echo ingres_errno() . " - " . ingres_error . "\n";
    die("i died");
}
else
{
    $airport = ingres_fetch_object ($result);
    {
        echo $airport->ap_iatacode . " - " .  $airport->ap_name . "\n";
    }
}

ingres_commit($link);

?>

参见

  • ingres_query() - Send an SQL query to Ingres
  • ingres_fetch_array() - Fetch a row of result into an array
  • ingres_fetch_assoc() - Fetch a row of result into an associative array
  • ingres_fetch_object() - Fetch a row of result into an object
  • ingres_fetch_row() - Fetch a row of result into an enumerated array

ingres_query
ingres_rollback
Ingres 函数


Roll back a transaction

ingres_result_seek
ingres_set_environment
Ingres 函数
PHP Manual

ingres_rollback

(PHP 4 >= 4.0.2, PHP 5 <= 5.0.5, PECL ingres >= 1.0.0)

ingres_rollback — Roll back a transaction

说明

bool ingres_rollback ( resource $link )

ingres_rollback() rolls back the currently open transaction, actually cancelling all changes made to the database during the transaction.

This closes the transaction. A new transaction can be opened by sending a query with ingres_query().

参数

link

The connection link identifier

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ingres_query() - Send an SQL query to Ingres
  • ingres_commit() - Commit a transaction
  • ingres_autocommit() - Switch autocommit on or off

ingres_result_seek
ingres_set_environment
Ingres 函数


Set environment features controlling output options

ingres_rollback
ingres_unbuffered_query
Ingres 函数
PHP Manual

ingres_set_environment

(PECL ingres >= 1.2.0)

ingres_set_environment — Set environment features controlling output options

说明

bool ingres_set_environment ( resource $link , array $options )

ingres_set_environment() is called to set environmental options that affect the output of certain values from Ingres, such as the timezone, date format, decimal character separator, and float precision.

参数

link

The connection link identifier

options

An enumerated array of option name/value pairs. The following table lists the option name and the expected type

Option name | Option type | Description | Example
date_century_boundary | integer | The threshold by which a 2-digit year is determined to be in the current century or in the next century. Equivalent to II_DATE_CENTURY_BOUNDARY | 50
timezone | string | Controls the timezone of the session. If not set, it will default the value defined by II_TIMEZONE_NAME. If II_TIMEZONE_NAME is not defined, NA-PACIFIC (GMT-8 with Daylight Savings) is used. | UNITED-KINGDOM
date_format integer

Sets the allowable input and output format for Ingres dates. Defaults to the value defined by II_DATE_FORMAT. If II_DATE_FORMAT is not set, the default date format is US, for example mm/dd/yy. Valid values for date_format are:

  • INGRES_DATE_DMY
  • INGRES_DATE_FINISH
  • INGRES_DATE_GERMAN
  • INGRES_DATE_ISO
  • INGRES_DATE_ISO4
  • INGRES_DATE_MDY
  • INGRES_DATE_MULTINATIONAL
  • INGRES_DATE_MULTINATIONAL4
  • INGRES_DATE_YMD
  • INGRES_DATE_US

 INGRES_DATE_ISO4
decimal_separator string The character identifier for decimal data ","
money_lort integer

Leading or trailing currency sign. Valid values for money_lort are:

  • INGRES_MONEY_LEADING
  • INGRES_MONEY_TRAILING

 INGRES_MONEY_LEADING
money_sign string The currency symbol to be used with the MONEY datatype �
money_precision | integer | The precision of the MONEY datatype | 2
float4_precision | integer | Precision of the FLOAT4 datatype | 10
float8_precision | integer | Precision of the FLOAT8 data | 10
blob_segment_length | integer | The amount of data in bytes to fetch at a time when retrieving BLOB or CLOB data. Defaults to 4096 bytes when not set explicitly | 8192

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Set date_format to ISO4

<?php
$options = array( "date_format" => INGRES_DATE_ISO4 );

if (ingres_set_environment($link, $options))
{
    $result=ingres_query($link,"select date('now') as date");

    while ( $object = ingres_fetch_object ($result) ) {
        echo $object->date."\n";
    }
}
?>

Example #2 Set timezone to HONG-KONG

<?php

$options = array( "timezone" => "HONG-KONG");

if (ingres_set_environment($link, $options))
{
    $result=ingres_query($link,"select date('now') as date");

    while ( $object = ingres_fetch_object ($result) ) {
        echo $object->date."\n";
    }
}
?>

参见

  • ingres_connect() - Open a connection to an Ingres database
  • ingres_query() - Send an SQL query to Ingres

ingres_rollback
ingres_unbuffered_query
Ingres 函数


Send an unbuffered SQL query to Ingres

ingres_set_environment
MaxDB
Ingres 函数
PHP Manual

ingres_unbuffered_query

(No version information available, might only be in Git)

ingres_unbuffered_query — Send an unbuffered SQL query to Ingres

说明

mixed ingres_unbuffered_query ( resource $link , string $query [, array $params [, string $types ]] )

ingres_unbuffered_query() sends the given query to the Ingres server.

The query becomes part of the currently open transaction. If there is no open transaction, ingres_unbuffered_query() opens a new transaction. To close the transaction, you can call either ingres_commit() to commit the changes made to the database or ingres_rollback() to cancel these changes. When the script ends, any open transaction is rolled back (by calling ingres_rollback()). You can also use ingres_autocommit() before opening a new transaction to have every SQL query immediately committed. Ingres allows only a single unbuffered statement to be active at any one time. The extension will close any active unbuffered statements before executing any SQL. In addition you cannot use ingres_result_seek() to position the row before fetching.

Note: Related Configurations

See also the ingres.describe and ingres.utf8 directives in Runtime Configuration.

参数

link

The connection link identifier

query

A valid SQL query (see the Ingres SQL reference guide) in the Ingres documentation. See the query parameter in ingres_query() for a list of SQL statements that cannot be executed via ingres_unbuffered_query().

Data inside the query should be properly escaped.

params

An array of parameter values to be used with the query

types

A string containing a sequence of types for the parameter values passed. See the types parameter in ingres_query() for the list of type codes.

返回值

ingres_unbuffered_query() returns a query result identifier when there are rows to fetch; else it returns FALSE when there are no rows, as is the case of an INSERT, UPDATE, or DELETE statement. To see if an error occurred, use ingres_errno(), ingres_error(), or ingres_errsqlstate().

范例

Example #1 Issue a simple un-buffered select

<?php
$link = ingres_connect("demodb");

$result = ingres_unbuffered_query($link, "select * from user_profile");
while ($row = ingres_fetch_row($result)) {
    echo $row[1];
    echo $row[2];
}
?>

Example #2 Passing query parameters to ingres_unbuffered_query()

<?php
$link = ingres_connect("demodb");

$params[] = "Emma";
$query = "select * from user_profile where up_first = ?";
$result = ingres_unbuffered_query($link, $query, $params);
while ($row = ingres_fetch_row($result)) {
    echo $row[1];
    echo $row[2];
}
?>

Example #3 Inserting a BLOB with parameter types

<?php
$link = ingres_connect("demodb");

//Open a photo
$fh = fopen("photo.jpg","r");
$blob_data = stream_get_contents($fh);
fclose($fh);

//Prepare parameters
$params[] = $blob_data;
$params[] = 1201;

//Define parameter types
$param_types = "Bi";

$query = "update user_profile set up_image = ? where up_id = ?";
$result = ingres_unbuffered_query($link, $query , $params, $param_types);

if (ingres_errno())
{
    echo ingres_errno() . "-" . ingres_error() . "\n";
}
?>

参见

  • ingres_query() - Send an SQL query to Ingres
  • ingres_fetch_array() - Fetch a row of result into an array
  • ingres_fetch_assoc() - Fetch a row of result into an associative array
  • ingres_fetch_object() - Fetch a row of result into an object
  • ingres_fetch_row() - Fetch a row of result into an enumerated array
  • ingres_commit() - Commit a transaction
  • ingres_rollback() - Roll back a transaction
  • ingres_autocommit() - Switch autocommit on or off
  • ingres_set_environment() - Set environment features controlling output options
  • ingres_errno() - Get the last Ingres error number generated
  • ingres_error() - Get a meaningful error message for the last error generated

ingres_set_environment
MaxDB
Ingres 函数


MaxDB

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Basic usage
  • MaxDB 函数
    • maxdb_affected_rows — Gets the number of affected rows in a previous MaxDB operation
    • maxdb_autocommit — Turns on or off auto-commiting database modifications
    • maxdb_bind_param — 别名 maxdb_stmt_bind_param
    • maxdb_bind_result — 别名 maxdb_stmt_bind_result
    • maxdb_change_user — Changes the user of the specified database connection
    • maxdb_character_set_name — Returns the default character set for the database connection
    • maxdb_client_encoding — 别名 maxdb_character_set_name
    • maxdb_close_long_data — 别名 maxdb_stmt_close_long_data
    • maxdb_close — Closes a previously opened database connection
    • maxdb_commit — Commits the current transaction
    • maxdb_connect_errno — Returns the error code from last connect call
    • maxdb_connect_error — Returns a string description of the last connect error
    • maxdb_connect — Open a new connection to the MaxDB server
    • maxdb_data_seek — Adjusts the result pointer to an arbitary row in the result
    • maxdb_debug — Performs debugging operations
    • maxdb_disable_reads_from_master — Disable reads from master
    • maxdb_disable_rpl_parse — Disable RPL parse
    • maxdb_dump_debug_info — Dump debugging information into the log
    • maxdb_embedded_connect — Open a connection to an embedded MaxDB server
    • maxdb_enable_reads_from_master — Enable reads from master
    • maxdb_enable_rpl_parse — Enable RPL parse
    • maxdb_errno — Returns the error code for the most recent function call
    • maxdb_error — Returns a string description of the last error
    • maxdb_escape_string — 别名 maxdb_real_escape_string
    • maxdb_execute — 别名 maxdb_stmt_execute
    • maxdb_fetch_array — Fetch a result row as an associative, a numeric array, or both
    • maxdb_fetch_assoc — Fetch a result row as an associative array
    • maxdb_fetch_field_direct — Fetch meta-data for a single field
    • maxdb_fetch_field — Returns the next field in the result set
    • maxdb_fetch_fields — Returns an array of resources representing the fields in a result set
    • maxdb_fetch_lengths — Returns the lengths of the columns of the current row in the result set
    • maxdb_fetch_object — Returns the current row of a result set as an object
    • maxdb_fetch_row — Get a result row as an enumerated array
    • maxdb_fetch — 别名 maxdb_stmt_fetch
    • maxdb_field_count — Returns the number of columns for the most recent query
    • maxdb_field_seek — Set result pointer to a specified field offset
    • maxdb_field_tell — Get current field offset of a result pointer
    • maxdb_free_result — Frees the memory associated with a result
    • maxdb_get_client_info — Returns the MaxDB client version as a string
    • maxdb_get_client_version — Get MaxDB client info
    • maxdb_get_host_info — Returns a string representing the type of connection used
    • maxdb_get_metadata — 别名 maxdb_stmt_result_metadata
    • maxdb_get_proto_info — Returns the version of the MaxDB protocol used
    • maxdb_get_server_info — Returns the version of the MaxDB server
    • maxdb_get_server_version — Returns the version of the MaxDB server as an integer
    • maxdb_info — Retrieves information about the most recently executed query
    • maxdb_init — Initializes MaxDB and returns an resource for use with maxdb_real_connect
    • maxdb_insert_id — Returns the auto generated id used in the last query
    • maxdb_kill — Disconnects from a MaxDB server
    • maxdb_master_query — Enforce execution of a query on the master in a master/slave setup
    • maxdb_more_results — Check if there any more query results from a multi query
    • maxdb_multi_query — Performs a query on the database
    • maxdb_next_result — Prepare next result from multi_query
    • maxdb_num_fields — Get the number of fields in a result
    • maxdb_num_rows — Gets the number of rows in a result
    • maxdb_options — Set options
    • maxdb_param_count — 别名 maxdb_stmt_param_count
    • maxdb_ping — Pings a server connection, or tries to reconnect if the connection has gone down
    • maxdb_prepare — Prepare an SQL statement for execution
    • maxdb_query — Performs a query on the database
    • maxdb_real_connect — Opens a connection to a MaxDB server
    • maxdb_real_escape_string — Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection
    • maxdb_real_query — Execute an SQL query
    • maxdb_report — Enables or disables internal report functions
    • maxdb_rollback — Rolls back current transaction
    • maxdb_rpl_parse_enabled — Check if RPL parse is enabled
    • maxdb_rpl_probe — RPL probe
    • maxdb_rpl_query_type — Returns RPL query type
    • maxdb_select_db — Selects the default database for database queries
    • maxdb_send_long_data — 别名 maxdb_stmt_send_long_data
    • maxdb_send_query — Send the query and return
    • maxdb_server_end — Shut down the embedded server
    • maxdb_server_init — Initialize embedded server
    • maxdb_set_opt — 别名 maxdb_options
    • maxdb_sqlstate — Returns the SQLSTATE error from previous MaxDB operation
    • maxdb_ssl_set — Used for establishing secure connections using SSL
    • maxdb_stat — Gets the current system status
    • maxdb_stmt_affected_rows — Returns the total number of rows changed, deleted, or inserted by the last executed statement
    • maxdb_stmt_bind_param — Binds variables to a prepared statement as parameters
    • maxdb_stmt_bind_result — Binds variables to a prepared statement for result storage
    • maxdb_stmt_close_long_data — Ends a sequence of maxdb_stmt_send_long_data
    • maxdb_stmt_close — Closes a prepared statement
    • maxdb_stmt_data_seek — Seeks to an arbitray row in statement result set
    • maxdb_stmt_errno — Returns the error code for the most recent statement call
    • maxdb_stmt_error — Returns a string description for last statement error
    • maxdb_stmt_execute — Executes a prepared Query
    • maxdb_stmt_fetch — Fetch results from a prepared statement into the bound variables
    • maxdb_stmt_free_result — Frees stored result memory for the given statement handle
    • maxdb_stmt_init — Initializes a statement and returns an resource for use with maxdb_stmt_prepare
    • maxdb_stmt_num_rows — Return the number of rows in statements result set
    • maxdb_stmt_param_count — Returns the number of parameter for the given statement
    • maxdb_stmt_prepare — Prepare an SQL statement for execution
    • maxdb_stmt_reset — Resets a prepared statement
    • maxdb_stmt_result_metadata — Returns result set metadata from a prepared statement
    • maxdb_stmt_send_long_data — Send data in blocks
    • maxdb_stmt_sqlstate — Returns SQLSTATE error from previous statement operation
    • maxdb_stmt_store_result — Transfers a result set from a prepared statement
    • maxdb_store_result — Transfers a result set from the last query
    • maxdb_thread_id — Returns the thread ID for the current connection
    • maxdb_thread_safe — Returns whether thread safety is given or not
    • maxdb_use_result — Initiate a result set retrieval
    • maxdb_warning_count — Returns the number of warnings from the last query for the given link
ingres_unbuffered_query
简介
针对各数据库系统对应的扩展


简介

The MaxDB PHP extension allows you to access the functionality provided by MaxDB 7.5.0 and above. More information about the MaxDB Database server can be found at » http://www.sdn.sap.com/irj/sdn/maxdb.

The MaxDB PHP extension is compatible to the MySQL mysqli extension. There are only minor differences in the behaviour of some functions due to the differences of the underlying database servers, MaxDB and MySQL.

The main differences to mysqli are in the following functions:

  • maxdb_character_set_name() - Returns only ascii or unicode.
  • maxdb_get_client_info() - Returns a different version string.
  • maxdb_get_client_version() - Returns a different version string.
  • maxdb_get_host_info() - Returns localhost or hostname.
  • maxdb_get_server_info() - Returns a different version string.
  • maxdb_get_server_version() - Returns a different version string.
  • maxdb_kill() - Only disconnects the session.
  • maxdb_multi_query() - Can not handle multiple SQL statements.
  • maxdb_next_result() - Function returns always false.
  • maxdb_options() - Supports a different set of options.
  • maxdb_report() - Supports a different report mode.
  • maxdb_stat() - Returns a different system status string.
  • maxdb_stmt_store_result() - Is not necessary for MaxDB.
  • maxdb_store_result() - Is not necessary for MaxDB.

Documentation for MaxDB can be found at » http://maxdb.sap.com/documentation/.

MaxDB
安装／配置
MaxDB


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
MaxDB


需求

In order to have these functions available, you must compile PHP with MaxDB support. Additionally, you must have the MaxDB SQLDBC runtime library available to access the MaxDB server.

Documentation for MaxDB SQLDBC can be found at » http://maxdb.sap.com/documentation/.

Download the MaxDB SQLDBC package from » http://www.sdn.sap.com/irj/sdn/maxdb-downloads.

安装／配置
安装
安装／配置


安装

By using the --with-maxdb[=DIR] configuration option you enable PHP to access MaxDB databases. [DIR] points to the directory that contains the installed MaxDB SQLDBC package.

Windows users will need to enable php_maxdb.dll inside of php.ini.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

MaxDB Configuration Options
名字 | 默认 | 可修改范围 | 更新日志
maxdb.default_host | NULL | PHP_INI_ALL |
maxdb.default_db | NULL | PHP_INI_ALL |
maxdb.default_user | NULL | PHP_INI_ALL |
maxdb.default_pw | NULL | PHP_INI_ALL |
maxdb.long_readlen | "200" | PHP_INI_ALL |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

maxdb.default_host string

The default server host to use when connecting to the database server if no other host is specified.

maxdb.default_db string

The default server database to use when connecting if no other database is specified.

maxdb.default_user string

The default user name to use when connecting to the database server if no other name is specified.

maxdb.default_pw string

The default password to use when connecting to the database server if no other password is specified.

maxdb.long_readlen integer

The default maximum length of bytes that is transferred to the client if long data is retrieved from the MaxDB database server.

安装
资源类型
安装／配置


资源类型

This extension defines resources.

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

The following constants to use with maxdb_options() are defined. For further description of these constants see » http://maxdb.sap.com/documentation/.

MaxDB PHP client constants
Constant | Description
MAXDB_COMPNAME | The component name used to initialise the SQLDBC runtime environment.
MAXDB_APPLICATION | The application to be connected to the database.
MAXDB_APPVERSION | The version of the application.
MAXDB_SQLMODE | The SQL mode.
MAXDB_UNICODE | TRUE, if the connection is an unicode (UCS2) client or FALSE, if not.
MAXDB_TIMEOUT | The maximum allowed time of inactivity after which the connection to the database is closed by the system.
MAXDB_ISOLATIONLEVEL | Specifies whether and how shared locks and exclusive locks are implicitly requested or released.
MAXDB_PACKETCOUNT | The number of different request packets used for the connection.
MAXDB_STATEMENTCACHESIZE | The number of prepared statements to be cached for the connection for re-use.
MAXDB_CURSORPREFIX | The prefix to use for result tables that are automatically named.

The function maxdb_fetch_array() uses a constant for the different types of result arrays. The following constants are defined:

MaxDB fetch constants
Constant | Description
MAXDB_ASSOC | Columns are returned into the array having the fieldname as the array index.
MAXDB_ASSOC_UPPER | Columns are returned into the array having the upper case fieldname as the array index.
MAXDB_ASSOC_LOWER | Columns are returned into the array having the lower case fieldname as the array index.
MAXDB_BOTH | Columns are returned into the array having both a numerical index and the fieldname as the array index.
MAXDB_NUM | Columns are returned into the array having a numerical index to the fields. This index starts with 0, the first field in the result.

资源类型
范例
MaxDB


范例

Table of Contents

  • Basic usage
预定义常量
Basic usage
MaxDB


Basic usage

All examples in the MaxDB PHP documentation use the HOTELDB demo database from MaxDB. More about this database can be found at » http://maxdb.sap.com/doc/7_7/44/d8c25164bb38d0e10000000a1553f7/content.htm.

To use the examples in the MaxDB PHP documentation, you have to load the tutorial data into your database. Then you have to set maxdb.default_db in php.ini to the database that contains the tutorial data.

This simple example shows how to connect, execute a query, print resulting rows and disconnect from a MaxDB database.

Example #1 MaxDB extension overview example

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* Performing SQL query */
$query = "SELECT * FROM hotel.city";
$result = maxdb_query($link, $query) or die("Query failed : " . maxdb_error());

/* Printing results in HTML */
echo "<table>\n";
while ($line = maxdb_fetch_array($result, MAXDB_ASSOC)) {
    echo "  <tr>\n";
    foreach ($line as $col_value) {
        echo "    <td>$col_value</td>\n";
    }
    echo "  </tr>\n";
}
echo "</table>\n";

/* Free resultset */
maxdb_free_result($result);

/* Closing connection */
maxdb_close($link);
?>

The following example shows how to bind variables to a SELECT INTO statement.

Example #2 Example for use of SELECT INTO statements

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (!$link) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* Performing SQL query */
$stmt = maxdb_prepare ($link, "SELECT percentage INTO ? FROM hotel.countrylanguage where language = ?");
if (!$stmt) {
  printf ("Prepare failed: %s\n", maxdb_error($link));
}

$name = "Mbundu";

maxdb_stmt_bind_param($stmt, 'ds', $percentage, $name);
maxdb_stmt_execute($stmt);

printf ("%f\n", $percentage);

maxdb_stmt_close ($stmt);
?>

The following example shows how to use MaxDB database procedures.

Example #3 Example fore using database procedures

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (!$link) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

maxdb_report (MAXDB_REPORT_OFF);
maxdb_query($link,"DROP DBPROC test_proc");
maxdb_report (MAXDB_REPORT_ERROR);

$query = "create dbproc test_proc (INOUT e_text char(72)) AS select * from SYSDBA.DUAL; fetch into :e_text;";

maxdb_query($link, $query);

/* Performing SQL query */
$stmt = maxdb_prepare ($link, "CALL test_proc (?)");
if (!$stmt) {
  printf ("Prepare failed: %s\n", maxdb_error($link));
}

maxdb_stmt_bind_param($stmt, 's', $result);
maxdb_stmt_execute($stmt);

printf ("%s\n", $result);

maxdb_stmt_close ($stmt);
?>

范例
MaxDB 函数
范例


Basic usage
maxdb_affected_rows
MaxDB
PHP Manual

MaxDB 函数

预定义类

maxdb

Represents a connection between PHP and a MaxDB database.

构造函数

  • maxdb - construct a new maxdb object

方法

  • autocommit - turns on or off auto-commiting database modifications

  • change_user - changes the user of the specified database connection

  • character_set_name - returns the default character set for the database connection

  • close - closes a previously opened connection

  • commit - commits the current transaction

  • connect - opens a new connection to MaxDB database server

  • debug - performs debugging operations

  • dump_debug_info - dumps debug information

  • get_client_info - returns client version

  • get_host_info - returns type of connection used

  • get_server_info - returns version of the MaxDB server

  • get_server_version - returns version of the MaxDB server

  • init - initializes maxdb object

  • info - retrieves information about the most recently executed query

  • kill - asks the server to kill a MaxDB thread

  • multi_query - performs multiple queries

  • more_results - check if more results exist from currently executed multi-query

  • next_result - reads next result from currently executed multi-query

  • options - set options

  • ping - pings a server connection or reconnects if there is no connection

  • prepare - prepares an SQL query

  • query - performs a query

  • real_connect - attempts to open a connection to MaxDB database server

  • escape_string - escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection

  • rollback - rolls back the current transaction

  • select_db - selects the default database

  • ssl_set - sets ssl parameters

  • stat - gets the current system status

  • stmt_init- initializes a statement for use with maxdb_stmt_prepare

  • store_result - transfers a resultset from last query

  • use_result - transfers an unbuffered resultset from last query

  • thread-safe - returns whether thread safety is given or not

属性

  • affected_rows - gets the number of affected rows in a previous MaxDB operation

  • client_info - returns the MaxDB client version as a string

  • client_version - returns the MaxDB client version as an integer

  • errno - returns the error code for the most recent function call

  • error - returns the error string for the most recent function call

  • field_count - returns the number of columns for the most recent query

  • host_info - returns a string representing the type of connection used

  • info - retrieves information about the most recently executed query

  • insert_id - returns the auto generated id used in the last query

  • protocol_version - returns the version of the MaxDB protocol used

  • sqlstate - returns a string containing the SQLSTATE error code for the last error

  • thread_id - returns the thread ID for the current connection

  • warning_count - returns the number of warnings generated during execution of the previous SQL statement

maxdb_stmt

Represents a prepared statement.

方法

  • bind_param - binds variables to a prepared statement

  • bind_result - binds variables to a prepared statement for result storage

  • close - closes a prepared statement

  • data-seek - seeks to an arbitrary row in a statement result set

  • execute - executes a prepared statement

  • fetch - fetches result from a prepared statement into bound variables

  • free_result - frees stored result memory for the given statement handle

  • result_metadata - retrieves a resultset from a prepared statement for metadata information

  • prepare - prepares an SQL query

  • send_long_data - sends data in chunks

  • close_long_data - end sending long data

  • reset - resets a prepared statement

  • store_result - buffers complete resultset from a prepared statement

属性

  • affected_rows - returns affected rows from last statement execution

  • errno - returns errorcode for last statement function

  • errno - returns errormessage for last statement function

  • param_count - returns number of parameter for a given prepare statement

  • sqlstate - returns a string containing the SQLSTATE error code for the last statement function

maxdb_result

Represents the result set obtained from a query against the database.

方法

  • close - closes resultset

  • data_seek - moves internal result pointer

  • fetch_field - gets column information from a resultset

  • fetch_fields - gets information for all columns from a resulset

  • fetch_field_direct - gets column information for specified column

  • fetch_array - fetches a result row as an associative array, a numeric array, or both.

  • fetch_assoc - fetches a result row as an associative array

  • fetch_object - fetches a result row as an object

  • fetch_row - gets a result row as an enumerated array

  • close - frees result memory

  • field_seek - set result pointer to a specified field offset

属性

  • current_field - returns offset of current fieldpointer

  • field_count - returns number of fields in resultset

  • lengths - returns an array of columnlengths

  • num_rows - returns number of rows in resultset

Table of Contents

  • maxdb_affected_rows — Gets the number of affected rows in a previous MaxDB operation
  • maxdb_autocommit — Turns on or off auto-commiting database modifications
  • maxdb_bind_param — 别名 maxdb_stmt_bind_param
  • maxdb_bind_result — 别名 maxdb_stmt_bind_result
  • maxdb_change_user — Changes the user of the specified database connection
  • maxdb_character_set_name — Returns the default character set for the database connection
  • maxdb_client_encoding — 别名 maxdb_character_set_name
  • maxdb_close_long_data — 别名 maxdb_stmt_close_long_data
  • maxdb_close — Closes a previously opened database connection
  • maxdb_commit — Commits the current transaction
  • maxdb_connect_errno — Returns the error code from last connect call
  • maxdb_connect_error — Returns a string description of the last connect error
  • maxdb_connect — Open a new connection to the MaxDB server
  • maxdb_data_seek — Adjusts the result pointer to an arbitary row in the result
  • maxdb_debug — Performs debugging operations
  • maxdb_disable_reads_from_master — Disable reads from master
  • maxdb_disable_rpl_parse — Disable RPL parse
  • maxdb_dump_debug_info — Dump debugging information into the log
  • maxdb_embedded_connect — Open a connection to an embedded MaxDB server
  • maxdb_enable_reads_from_master — Enable reads from master
  • maxdb_enable_rpl_parse — Enable RPL parse
  • maxdb_errno — Returns the error code for the most recent function call
  • maxdb_error — Returns a string description of the last error
  • maxdb_escape_string — 别名 maxdb_real_escape_string
  • maxdb_execute — 别名 maxdb_stmt_execute
  • maxdb_fetch_array — Fetch a result row as an associative, a numeric array, or both
  • maxdb_fetch_assoc — Fetch a result row as an associative array
  • maxdb_fetch_field_direct — Fetch meta-data for a single field
  • maxdb_fetch_field — Returns the next field in the result set
  • maxdb_fetch_fields — Returns an array of resources representing the fields in a result set
  • maxdb_fetch_lengths — Returns the lengths of the columns of the current row in the result set
  • maxdb_fetch_object — Returns the current row of a result set as an object
  • maxdb_fetch_row — Get a result row as an enumerated array
  • maxdb_fetch — 别名 maxdb_stmt_fetch
  • maxdb_field_count — Returns the number of columns for the most recent query
  • maxdb_field_seek — Set result pointer to a specified field offset
  • maxdb_field_tell — Get current field offset of a result pointer
  • maxdb_free_result — Frees the memory associated with a result
  • maxdb_get_client_info — Returns the MaxDB client version as a string
  • maxdb_get_client_version — Get MaxDB client info
  • maxdb_get_host_info — Returns a string representing the type of connection used
  • maxdb_get_metadata — 别名 maxdb_stmt_result_metadata
  • maxdb_get_proto_info — Returns the version of the MaxDB protocol used
  • maxdb_get_server_info — Returns the version of the MaxDB server
  • maxdb_get_server_version — Returns the version of the MaxDB server as an integer
  • maxdb_info — Retrieves information about the most recently executed query
  • maxdb_init — Initializes MaxDB and returns an resource for use with maxdb_real_connect
  • maxdb_insert_id — Returns the auto generated id used in the last query
  • maxdb_kill — Disconnects from a MaxDB server
  • maxdb_master_query — Enforce execution of a query on the master in a master/slave setup
  • maxdb_more_results — Check if there any more query results from a multi query
  • maxdb_multi_query — Performs a query on the database
  • maxdb_next_result — Prepare next result from multi_query
  • maxdb_num_fields — Get the number of fields in a result
  • maxdb_num_rows — Gets the number of rows in a result
  • maxdb_options — Set options
  • maxdb_param_count — 别名 maxdb_stmt_param_count
  • maxdb_ping — Pings a server connection, or tries to reconnect if the connection has gone down
  • maxdb_prepare — Prepare an SQL statement for execution
  • maxdb_query — Performs a query on the database
  • maxdb_real_connect — Opens a connection to a MaxDB server
  • maxdb_real_escape_string — Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection
  • maxdb_real_query — Execute an SQL query
  • maxdb_report — Enables or disables internal report functions
  • maxdb_rollback — Rolls back current transaction
  • maxdb_rpl_parse_enabled — Check if RPL parse is enabled
  • maxdb_rpl_probe — RPL probe
  • maxdb_rpl_query_type — Returns RPL query type
  • maxdb_select_db — Selects the default database for database queries
  • maxdb_send_long_data — 别名 maxdb_stmt_send_long_data
  • maxdb_send_query — Send the query and return
  • maxdb_server_end — Shut down the embedded server
  • maxdb_server_init — Initialize embedded server
  • maxdb_set_opt — 别名 maxdb_options
  • maxdb_sqlstate — Returns the SQLSTATE error from previous MaxDB operation
  • maxdb_ssl_set — Used for establishing secure connections using SSL
  • maxdb_stat — Gets the current system status
  • maxdb_stmt_affected_rows — Returns the total number of rows changed, deleted, or inserted by the last executed statement
  • maxdb_stmt_bind_param — Binds variables to a prepared statement as parameters
  • maxdb_stmt_bind_result — Binds variables to a prepared statement for result storage
  • maxdb_stmt_close_long_data — Ends a sequence of maxdb_stmt_send_long_data
  • maxdb_stmt_close — Closes a prepared statement
  • maxdb_stmt_data_seek — Seeks to an arbitray row in statement result set
  • maxdb_stmt_errno — Returns the error code for the most recent statement call
  • maxdb_stmt_error — Returns a string description for last statement error
  • maxdb_stmt_execute — Executes a prepared Query
  • maxdb_stmt_fetch — Fetch results from a prepared statement into the bound variables
  • maxdb_stmt_free_result — Frees stored result memory for the given statement handle
  • maxdb_stmt_init — Initializes a statement and returns an resource for use with maxdb_stmt_prepare
  • maxdb_stmt_num_rows — Return the number of rows in statements result set
  • maxdb_stmt_param_count — Returns the number of parameter for the given statement
  • maxdb_stmt_prepare — Prepare an SQL statement for execution
  • maxdb_stmt_reset — Resets a prepared statement
  • maxdb_stmt_result_metadata — Returns result set metadata from a prepared statement
  • maxdb_stmt_send_long_data — Send data in blocks
  • maxdb_stmt_sqlstate — Returns SQLSTATE error from previous statement operation
  • maxdb_stmt_store_result — Transfers a result set from a prepared statement
  • maxdb_store_result — Transfers a result set from the last query
  • maxdb_thread_id — Returns the thread ID for the current connection
  • maxdb_thread_safe — Returns whether thread safety is given or not
  • maxdb_use_result — Initiate a result set retrieval
  • maxdb_warning_count — Returns the number of warnings from the last query for the given link
Basic usage
maxdb_affected_rows
MaxDB
PHP Manual


Gets the number of affected rows in a previous MaxDB operation

MaxDB 函数
maxdb_autocommit
MaxDB 函数
PHP Manual

maxdb_affected_rows

maxdb::affected_rows

(PECL maxdb >= 1.0)

maxdb_affected_rows -- maxdb::affected_rows — Gets the number of affected rows in a previous MaxDB operation

说明

过程化风格

int maxdb_affected_rows ( resource $link )

面向对象风格

int $maxdb->affected_rows;

maxdb_affected_rows() returns the number of rows affected by the last INSERT, UPDATE, or DELETE query associated with the provided link parameter. If this number cannot be determined, this function will return -1.

Note:

For SELECT statements maxdb_affected_rows() works like maxdb_num_rows().

The maxdb_affected_rows() function only works with queries which modify a table. In order to return the number of rows from a SELECT query, use the maxdb_num_rows() function instead.

返回值

An integer greater than zero indicates the number of rows affected or retrieved. Zero indicates that no records where updated for an UPDATE statement, no rows matched the WHERE clause in the query or that no query has yet been executed. -1 indicates that the number of rows affected can not be determined.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

maxdb_report (MAXDB_REPORT_OFF);
$maxdb->query("DROP TABLE mycustomer");
maxdb_report (MAXDB_REPORT_ERROR);

/* Insert rows */
$maxdb->query("CREATE TABLE mycustomer AS SELECT * from hotel.customer");
printf("Affected rows (INSERT): %d\n", $maxdb->affected_rows);

$maxdb->query("ALTER TABLE mycustomer ADD Status int default 0");

/* update rows */
$maxdb->query("UPDATE mycustomer SET Status=1 WHERE cno > 50");
printf("Affected rows (UPDATE): %d\n", $maxdb->affected_rows);

/* delete rows */
$maxdb->query("DELETE FROM mycustomer WHERE cno < 50");
printf("Affected rows (DELETE): %d\n", $maxdb->affected_rows);

/* select all rows */
$result = $maxdb->query("SELECT title FROM mycustomer");
printf("Affected rows (SELECT): %d\n", $maxdb->affected_rows);

$result->close();

/* Delete table Language */
$maxdb->query("DROP TABLE mycustomer");

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

if (!$link) {
   printf("Can't connect to localhost. Error: %s\n", maxdb_connect_error());
   exit();
}

maxdb_report (MAXDB_REPORT_OFF);
maxdb_query($link,"DROP TABLE mycustomer");
maxdb_report (MAXDB_REPORT_ERROR);

/* Insert rows */
maxdb_query($link, "CREATE TABLE mycustomer AS SELECT * from hotel.customer");
printf("Affected rows (INSERT): %d\n", maxdb_affected_rows($link));

maxdb_query($link, "ALTER TABLE mycustomer ADD Status int default 0");

/* update rows */
maxdb_query($link, "UPDATE mycustomer SET Status=1 WHERE cno > 50");
printf("Affected rows (UPDATE): %d\n", maxdb_affected_rows($link));

/* delete rows */
maxdb_query($link, "DELETE FROM mycustomer WHERE cno < 50");
printf("Affected rows (DELETE): %d\n", maxdb_affected_rows($link));

/* select all rows */
$result = maxdb_query($link, "SELECT title FROM mycustomer");
printf("Affected rows (SELECT): %d\n", maxdb_affected_rows($link));

maxdb_free_result($result);

/* Delete table Language */
maxdb_query($link, "DROP TABLE mycustomer");

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Affected rows (INSERT): 15
Affected rows (UPDATE): 15
Affected rows (DELETE): 0
Affected rows (SELECT): 15

参见

  • maxdb_num_rows() - Gets the number of rows in a result
  • maxdb_info() - Retrieves information about the most recently executed query

MaxDB 函数
maxdb_autocommit
MaxDB 函数


Turns on or off auto-commiting database modifications

maxdb_affected_rows
maxdb_bind_param
MaxDB 函数
PHP Manual

maxdb_autocommit

maxdb::auto_commit

(PECL maxdb >= 1.0)

maxdb_autocommit -- maxdb::auto_commit — Turns on or off auto-commiting database modifications

说明

过程化风格

bool maxdb_autocommit ( resource $link , bool $mode )

面向对象风格

bool maxdb::auto_commit ( bool $mode )

maxdb_autocommit() is used to turn on or off auto-commit mode on queries for the database connection represented by the link resource.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* turn autocommit on */
$maxdb->autocommit(TRUE);

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

if (!$link) {
   printf("Can't connect to localhost. Error: %s\n", maxdb_connect_error());
   exit();
}

/* turn autocommit on */
maxdb_autocommit($link, TRUE);

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

参见

  • maxdb_commit() - Commits the current transaction
  • maxdb_rollback() - Rolls back current transaction

maxdb_affected_rows
maxdb_bind_param
MaxDB 函数


别名 maxdb_stmt_bind_param

maxdb_autocommit
maxdb_bind_result
MaxDB 函数
PHP Manual

maxdb_bind_param

(PECL maxdb 1.0)

maxdb_bind_param — 别名 maxdb_stmt_bind_param()

说明

此函数是该函数的别名： maxdb_stmt_bind_param()

此函数别名已废弃，仅为了向后兼容而保留。不建议使用此函数，因为将来会从 PHP 中移除。

maxdb_autocommit
maxdb_bind_result
MaxDB 函数


别名 maxdb_stmt_bind_result

maxdb_bind_param
maxdb_change_user
MaxDB 函数
PHP Manual

maxdb_bind_result

(PECL maxdb 1.0)

maxdb_bind_result — 别名 maxdb_stmt_bind_result()

说明

此函数是该函数的别名： maxdb_stmt_bind_result().

此函数别名已废弃，仅为了向后兼容而保留。不建议使用此函数，因为将来会从 PHP 中移除。

maxdb_bind_param
maxdb_change_user
MaxDB 函数


Changes the user of the specified database connection

maxdb_bind_result
maxdb_character_set_name
MaxDB 函数
PHP Manual

maxdb_change_user

maxdb::change_user

(PECL maxdb >= 1.0)

maxdb_change_user -- maxdb::change_user — Changes the user of the specified database connection

说明

过程化风格

bool maxdb_change_user ( resource $link , string $user , string $password , string $database )

面向对象风格

bool maxdb::change_user ( string $user , string $password , string $database )

maxdb_change_user() is used to change the user of the specified database connection as given by the link parameter and to set the current database to that specified by the database parameter.

In order to successfully change users a valid username and password parameters must be provided and that user must have sufficient permissions to access the desired database. If for any reason authorization fails, the current user authentication will remain.

Note:

Using this command will always cause the current database connection to behave as if was a completely new database connection, regardless of if the operation was completed successfully. This reset includes performing a rollback on any active transactions, closing all temporary tables, and unlocking all locked tables.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php

/* connect database test */
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

if ($result = $maxdb->query("SELECT * FROM dual")) {
   $row = $result->fetch_row();
   printf("Result: %s\n", $row[0]);
   $result->free();
}

/* reset all and select a new database */
if (!$maxdb->change_user("DBADMIN", "SECRET", "DEMODB")) {
  printf("Database not running\n");
} else {
  printf("Database running\n");
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (!$link) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

if ($result = maxdb_query($link, "SELECT * FROM dual")) {
   $row = maxdb_fetch_row($result);
   printf("Result: %s\n", $row[0]);
   maxdb_free_result($result);
}

/* reset all and select a new database */
if (!maxdb_change_user($link, "DBADMIN", "SECRET", "DEMODB")) {
  printf("Database not running\n");
} else {
  printf("Database running\n");
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Result: a
Database running

参见

  • maxdb_connect() - Open a new connection to the MaxDB server
  • maxdb_select_db() - Selects the default database for database queries

maxdb_bind_result
maxdb_character_set_name
MaxDB 函数


Returns the default character set for the database connection

maxdb_change_user
maxdb_client_encoding
MaxDB 函数
PHP Manual

maxdb_character_set_name

maxdb::character_set_name

(PECL maxdb >= 1.0)

maxdb_character_set_name -- maxdb::character_set_name — Returns the default character set for the database connection

说明

过程化风格

string maxdb_character_set_name ( resource $link )

面向对象风格

string maxdb::character_set_name ( void )

Returns the current character set for the database connection specified by the link parameter.

返回值

The default character set for the current connection, either ascii or unicode.

范例

Example #1 面向对象风格

<?php
/* Open a connection */
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* Print current character set */
$charset = $maxdb->character_set_name();
printf ("Current character set is %s\n", $charset);

$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (!$link) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* Print current character set */
$charset = maxdb_character_set_name($link);
printf ("Current character set is %s\n",$charset);

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Current character set is ascii

参见

  • maxdb_client_encoding() - 别名 maxdb_character_set_name
  • maxdb_real_escape_string() - Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection

maxdb_change_user
maxdb_client_encoding
MaxDB 函数


别名 maxdb_character_set_name

maxdb_character_set_name
maxdb_close_long_data
MaxDB 函数
PHP Manual

maxdb_client_encoding

(PECL maxdb 1.0)

maxdb_client_encoding — 别名 maxdb_character_set_name()

说明

此函数是该函数的别名： maxdb_character_set_name().

此函数别名已废弃，仅为了向后兼容而保留。不建议使用此函数，因为将来会从 PHP 中移除。

maxdb_character_set_name
maxdb_close_long_data
MaxDB 函数


别名 maxdb_stmt_close_long_data

maxdb_client_encoding
maxdb_close
MaxDB 函数
PHP Manual

maxdb_close_long_data

maxdb::close_long_data

(PECL maxdb >= 1.0)

maxdb_close_long_data -- maxdb::close_long_data — 别名 maxdb_stmt_close_long_data()

说明

此函数是该函数的别名： maxdb_stmt_close_long_data().

此函数别名已废弃，仅为了向后兼容而保留。不建议使用此函数，因为将来会从 PHP 中移除。

maxdb_client_encoding
maxdb_close
MaxDB 函数


Closes a previously opened database connection

maxdb_close_long_data
maxdb_commit
MaxDB 函数
PHP Manual

maxdb_close

maxdb::close

(PECL maxdb >= 1.0)

maxdb_close -- maxdb::close — Closes a previously opened database connection

说明

过程化风格

bool maxdb_close ( resource $link )

面向对象风格

bool maxdb::close ( void )

The maxdb_close() function closes a previously opened database connection specified by the link parameter.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • maxdb_connect() - Open a new connection to the MaxDB server
  • maxdb_init() - Initializes MaxDB and returns an resource for use with maxdb_real_connect
  • maxdb_real_connect() - Opens a connection to a MaxDB server

maxdb_close_long_data
maxdb_commit
MaxDB 函数


Commits the current transaction

maxdb_close
maxdb_connect_errno
MaxDB 函数
PHP Manual

maxdb_commit

maxdb::commit

(PECL maxdb >= 1.0)

maxdb_commit -- maxdb::commit — Commits the current transaction

说明

过程化风格

bool maxdb_commit ( resource $link )

面向对象风格

bool maxdb::commit ( void )

Commits the current transaction for the database connection specified by the link parameter.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* set autocommit to off */
$maxdb->autocommit(FALSE);

maxdb_report (MAXDB_REPORT_OFF);
$maxdb->query("DROP TABLE mycustomer");
maxdb_report (MAXDB_REPORT_ERROR);

$maxdb->query("CREATE TABLE mycustomer LIKE hotel.customer");

/* Insert some values */
$maxdb->query("INSERT INTO mycustomer VALUES (3000,'Mrs','Jenny','Porter','10580','1340 N.Ash Street, #3')");
$maxdb->query("INSERT INTO mycustomer VALUES (3100,'Mr','Peter','Brown','48226','1001 34th Str., APT.3')");

/* commit transaction */
$maxdb->commit();

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (!$link) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* set autocommit to off */
maxdb_autocommit($link, FALSE);

maxdb_report (MAXDB_REPORT_OFF);
maxdb_query($link,"DROP TABLE mycustomer");
maxdb_report (MAXDB_REPORT_ERROR);

maxdb_query($link, "CREATE TABLE mycustomer LIKE hotel.customer");

/* Insert some values */
maxdb_query($link, "INSERT INTO mycustomer VALUES (3000,'Mrs','Jenny','Porter','10580','1340 N.Ash Street, #3')");
maxdb_query($link, "INSERT INTO mycustomer VALUES (3100,'Mr','Peter','Brown','48226','1001 34th Str., APT.3')");

/* commit transaction */
maxdb_commit($link);

/* close connection */
maxdb_close($link);
?>

The above examples produces no output.

参见

  • maxdb_autocommit() - Turns on or off auto-commiting database modifications
  • maxdb_rollback() - Rolls back current transaction

maxdb_close
maxdb_connect_errno
MaxDB 函数


Returns the error code from last connect call

maxdb_commit
maxdb_connect_error
MaxDB 函数
PHP Manual

maxdb_connect_errno

(PECL maxdb >= 1.0)

maxdb_connect_errno — Returns the error code from last connect call

说明

int maxdb_connect_errno ( void )

The maxdb_connect_errno() function will return the last error code number for last call to maxdb_connect(). If no errors have occurred, this function will return zero.

返回值

An error code value for the last call to maxdb_connect(), if it failed. zero means no error occurred.

范例

Example #1 maxdb_connect_errno sample

<?php
$link = maxdb_connect("localhost", "XXXXXXXX", "YYYYYYYYY");

if (!$link) {
   printf("Can't connect to localhost. Errorcode: %d\n", maxdb_connect_errno());
}
?>

以上例程的输出类似于：

PHP Warning:  maxdb_connect(): -4008 POS(1) Unknown user name/password combination [08004] <...>
Can't connect to localhost. Errorcode: -4008

参见

  • maxdb_connect() - Open a new connection to the MaxDB server
  • maxdb_connect_error() - Returns a string description of the last connect error
  • maxdb_errno() - Returns the error code for the most recent function call
  • maxdb_error() - Returns a string description of the last error
  • maxdb_sqlstate() - Returns the SQLSTATE error from previous MaxDB operation

maxdb_commit
maxdb_connect_error
MaxDB 函数


Returns a string description of the last connect error

maxdb_connect_errno
maxdb_connect
MaxDB 函数
PHP Manual

maxdb_connect_error

(PECL maxdb >= 1.0)

maxdb_connect_error — Returns a string description of the last connect error

说明

string maxdb_connect_error ( void )

The maxdb_connect_error() function is identical to the corresponding maxdb_connect_errno() function in every way, except instead of returning an integer error code the maxdb_connect_error() function will return a string representation of the last error to occur for the last maxdb_connect() call. If no error has occurred, this function will return an empty string.

返回值

A string that describes the error. An empty string if no error occurred.

范例

Example #1 maxdb_connect_error sample

<?php

$link = maxdb_connect("localhost", "nonexisting_user", "");

if (!$link) {
   printf("Can't connect to localhost. Error: %s\n", maxdb_connect_error());
}
?>

以上例程的输出类似于：

PHP Warning:  maxdb_connect(): -4008 POS(1) Unknown user name/password combination <...>
Can't connect to localhost. Error: POS(1) Unknown user name/password combination

参见

  • maxdb_connect() - Open a new connection to the MaxDB server
  • maxdb_connect_errno() - Returns the error code from last connect call
  • maxdb_errno() - Returns the error code for the most recent function call
  • maxdb_error() - Returns a string description of the last error
  • maxdb_sqlstate() - Returns the SQLSTATE error from previous MaxDB operation

maxdb_connect_errno
maxdb_connect
MaxDB 函数


Open a new connection to the MaxDB server

maxdb_connect_error
maxdb_data_seek
MaxDB 函数
PHP Manual

maxdb_connect

maxdb::__construct

(PECL maxdb >= 1.0)

maxdb_connect -- maxdb::__construct — Open a new connection to the MaxDB server

说明

过程化风格

resource maxdb_connect ([ string $host [, string $username [, string $passwd [, string $dbname [, int $port = 0 [, string $socket ]]]]]] )

面向对象风格

maxdb::__construct ([ string $host [, string $username [, string $passwd [, string $dbname [, int $port = 0 [, string $socket ]]]]]] )

The maxdb_connect() function attempts to open a connection to the MaxDB Server running on host which can be either a host name or an IP address. Passing the string "localhost" to this parameter, the local host is assumed. If successful, the maxdb_connect() will return an resource representing the connection to the database 或者在失败时返回 FALSE.

The username and password parameters specify the username and password under which to connect to the MaxDB server. If the password is not provided (the NULL value is passed), the MaxDB server will attempt to authenticate the user against the maxdb.default_pw in php.ini.

The dbname parameter if provided will specify the default database to be used when performing queries. If not provied, the entry maxdb.default_db in php.ini is used.

The port and socket parameters are ignored for the MaxDB server.

返回值

Returns a resource which represents the connection to a MaxDB Server or FALSE if the connection failed.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

printf("Host information: %s\n", $maxdb->host_info);

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (!$link) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

printf("Host information: %s\n", maxdb_get_host_info($link));

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Host information: localhost
maxdb_connect_error
maxdb_data_seek
MaxDB 函数


Adjusts the result pointer to an arbitary row in the result

maxdb_connect
maxdb_debug
MaxDB 函数
PHP Manual

maxdb_data_seek

maxdb_result::data_seek

(PECL maxdb >= 1.0)

maxdb_data_seek -- maxdb_result::data_seek — Adjusts the result pointer to an arbitary row in the result

说明

过程化风格

bool maxdb_data_seek ( resource $result , int $offset )

面向对象风格

bool maxdb_result::data_seek ( int $offset )

The maxdb_data_seek() function seeks to an arbitrary result pointer specified by the offset in the result set represented by result. The offset parameter must be between zero and the total number of rows minus one (0..maxdb_num_rows() - 1).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php
/* Open a connection */
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, state FROM hotel.city ORDER BY name";
if ($result = $maxdb->query( $query)) {

   /* seek to row no. 10 */
   $result->data_seek(10);

   /* fetch row */
   $row = $result->fetch_row();

   printf ("City: %s  State: %s\n", $row[0], $row[1]);

   /* free result set*/
   $result->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (!$link) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, state FROM hotel.city ORDER BY name";

if ($result = maxdb_query($link, $query)) {

   /* seek to row no. 400 */
   maxdb_data_seek($result, 10);

   /* fetch row */
   $row = maxdb_fetch_row($result);

   printf ("City: %s  State: %s\n", $row[0], $row[1]);

   /* free result set*/
   maxdb_free_result($result);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

City: Irvine  State: CA

参见

  • maxdb_store_result() - Transfers a result set from the last query
  • maxdb_fetch_row() - Get a result row as an enumerated array
  • maxdb_num_rows() - Gets the number of rows in a result

maxdb_connect
maxdb_debug
MaxDB 函数


Performs debugging operations

maxdb_data_seek
maxdb_disable_reads_from_master
MaxDB 函数
PHP Manual

maxdb_debug

(PECL maxdb >= 1.0)

maxdb_debug — Performs debugging operations

说明

void maxdb_debug ( string $debug )

The maxdb_debug() can be used to trace the SQLDBC communication. The following strings can be used as a parameter to maxdb_debug():

  • TRACE SHORT ON|OFF - Enables/disables method call trace.
  • TRACE LONG ON|OFF - Enables/disables method argument and detail debug trace.
  • TRACE PACKET ON|OFF|<size> - Enables/disables packet trace, limiting the size of the traced object to the specified number of bytes, or 1000 if no size is specified.
  • TRACE SQL ON|OFF - Enables/disables high level api trace.
  • TRACE TIMESTAMP ON|OFF - Enables/disables a timestamp prefix on each line that is traced.
  • TRACE SIZE <size> - Limits the size of the trace file to <size> bytes, at least 8192 bytes are required.

返回值

maxdb_debug() doesn't return any value.

范例

Example #1 过程化风格

<?php

maxdb_debug("trace packet 200");

$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (!$link) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* close connection */
maxdb_close($link);
?>

The above example produces no output.

maxdb_data_seek
maxdb_disable_reads_from_master
MaxDB 函数


Disable reads from master

maxdb_debug
maxdb_disable_rpl_parse
MaxDB 函数
PHP Manual

maxdb_disable_reads_from_master

maxdb::disable_reads_from_master

(PECL maxdb >= 1.0)

maxdb_disable_reads_from_master -- maxdb::disable_reads_from_master — Disable reads from master

说明

过程化风格

bool maxdb_disable_reads_from_master ( resource $link )

面向对象风格

void maxdb::disable_reads_from_master ( void )
Warning

本函数还未编写文档，仅有参数列表。

maxdb_debug
maxdb_disable_rpl_parse
MaxDB 函数


Disable RPL parse

maxdb_disable_reads_from_master
maxdb_dump_debug_info
MaxDB 函数
PHP Manual

maxdb_disable_rpl_parse

(PECL maxdb >= 1.0)

maxdb_disable_rpl_parse — Disable RPL parse

说明

bool maxdb_disable_rpl_parse ( resource $link )
Warning

本函数还未编写文档，仅有参数列表。

maxdb_disable_reads_from_master
maxdb_dump_debug_info
MaxDB 函数


Dump debugging information into the log

maxdb_disable_rpl_parse
maxdb_embedded_connect
MaxDB 函数
PHP Manual

maxdb_dump_debug_info

(PECL maxdb >= 1.0)

maxdb_dump_debug_info — Dump debugging information into the log

说明

bool maxdb_dump_debug_info ( resource $link )
Warning

本函数还未编写文档，仅有参数列表。

maxdb_disable_rpl_parse
maxdb_embedded_connect
MaxDB 函数


Open a connection to an embedded MaxDB server

maxdb_dump_debug_info
maxdb_enable_reads_from_master
MaxDB 函数
PHP Manual

maxdb_embedded_connect

(PECL maxdb >= 1.0)

maxdb_embedded_connect — Open a connection to an embedded MaxDB server

说明

resource maxdb_embedded_connect ([ string $dbname ] )
Warning

本函数还未编写文档，仅有参数列表。

maxdb_dump_debug_info
maxdb_enable_reads_from_master
MaxDB 函数


Enable reads from master

maxdb_embedded_connect
maxdb_enable_rpl_parse
MaxDB 函数
PHP Manual

maxdb_enable_reads_from_master

(PECL maxdb >= 1.0)

maxdb_enable_reads_from_master — Enable reads from master

说明

bool maxdb_enable_reads_from_master ( resource $link )
Warning

本函数还未编写文档，仅有参数列表。

maxdb_embedded_connect
maxdb_enable_rpl_parse
MaxDB 函数


Enable RPL parse

maxdb_enable_reads_from_master
maxdb_errno
MaxDB 函数
PHP Manual

maxdb_enable_rpl_parse

(PECL maxdb >= 1.0)

maxdb_enable_rpl_parse — Enable RPL parse

说明

bool maxdb_enable_rpl_parse ( resource $link )
Warning

本函数还未编写文档，仅有参数列表。

maxdb_enable_reads_from_master
maxdb_errno
MaxDB 函数


Returns the error code for the most recent function call

maxdb_enable_rpl_parse
maxdb_error
MaxDB 函数
PHP Manual

maxdb_errno

maxdb::errno

(PECL maxdb >= 1.0)

maxdb_errno -- maxdb::errno — Returns the error code for the most recent function call

说明

过程化风格

int maxdb_errno ( resource $link )

面向对象风格

int $maxdb->errno;

The maxdb_errno() function will return the last error code for the most recent MaxDB function call that can succeed or fail with respect to the database link defined by the link parameter. If no errors have occurred, this function will return zero.

返回值

An error code value for the last call, if it failed. zero means no error occurred.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

if (!$maxdb->query("SELECT xxx FROM hotel.city")) {
   printf("Errorcode: %d\n", $maxdb->errno);
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

if (!maxdb_query($link, "SELECT xxx FROM hotel.city")) {
   printf("Errorcode: %d\n", maxdb_errno($link));
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

PHP Warning:  maxdb_query(): -4005 POS(8) Unknown column name:XXX [42000] <...>
Errorcode: -4005

参见

  • maxdb_connect_errno() - Returns the error code from last connect call
  • maxdb_connect_error() - Returns a string description of the last connect error
  • maxdb_error() - Returns a string description of the last error
  • maxdb_sqlstate() - Returns the SQLSTATE error from previous MaxDB operation

maxdb_enable_rpl_parse
maxdb_error
MaxDB 函数


Returns a string description of the last error

maxdb_errno
maxdb_escape_string
MaxDB 函数
PHP Manual

maxdb_error

maxdb::error

(PECL maxdb >= 1.0)

maxdb_error -- maxdb::error — Returns a string description of the last error

说明

过程化风格

string maxdb_error ( resource $link )

面向对象风格

string $maxdb->error;

The maxdb_error() function is identical to the corresponding maxdb_errno() function in every way, except instead of returning an integer error code the maxdb_error() function will return a string representation of the last error to occur for the database connection represented by the link parameter. If no error has occurred, this function will return an empty string.

返回值

A string that describes the error. An empty string if no error occurred.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

if (!$maxdb->query("SELECT xxx FROM hotel.city")) {
   printf("Errormessage: %s\n", $maxdb->error);
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

if (!maxdb_query($link, "SELECT xxx FROM hotel.city")) {
   printf("Errormessgae: %s\n", maxdb_error($link));
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

PHP Warning:  maxdb_query(): -4005 POS(8) Unknown column name:XXX [42000]
Errormessgae: POS(8) Unknown column name:XXX

参见

  • maxdb_connect_errno() - Returns the error code from last connect call
  • maxdb_connect_error() - Returns a string description of the last connect error
  • maxdb_errno() - Returns the error code for the most recent function call
  • maxdb_sqlstate() - Returns the SQLSTATE error from previous MaxDB operation

maxdb_errno
maxdb_escape_string
MaxDB 函数


别名 maxdb_real_escape_string

maxdb_error
maxdb_execute
MaxDB 函数
PHP Manual

maxdb_escape_string

(PECL maxdb 1.0)

maxdb_escape_string — 别名 maxdb_real_escape_string()

说明

此函数是该函数的别名： maxdb_real_escape_string().

maxdb_error
maxdb_execute
MaxDB 函数


别名 maxdb_stmt_execute

maxdb_escape_string
maxdb_fetch_array
MaxDB 函数
PHP Manual

maxdb_execute

(PECL maxdb 1.0)

maxdb_execute — 别名 maxdb_stmt_execute()

说明

此函数是该函数的别名： maxdb_stmt_execute().

此函数别名已废弃，仅为了向后兼容而保留。不建议使用此函数，因为将来会从 PHP 中移除。

maxdb_escape_string
maxdb_fetch_array
MaxDB 函数


Fetch a result row as an associative, a numeric array, or both

maxdb_execute
maxdb_fetch_assoc
MaxDB 函数
PHP Manual

maxdb_fetch_array

maxdb_result::fetch_array

(PECL maxdb >= 1.0)

maxdb_fetch_array -- maxdb_result::fetch_array — Fetch a result row as an associative, a numeric array, or both

说明

过程化风格

mixed maxdb_fetch_array ( resource $result [, int $resulttype ] )

面向对象风格

mixed maxdb_result::fetch_array ([ int $resulttype ] )

Returns an array that corresponds to the fetched row or NULL if there are no more rows for the resultset represented by the result parameter.

maxdb_fetch_array() is an extended version of the maxdb_fetch_row() function. In addition to storing the data in the numeric indices of the result array, the maxdb_fetch_array() function can also store the data in associative indices, using the field names of the result set as keys.

Note: 此函数返回的字段名大小写敏感。

Note: 此函数将 NULL 字段设置为 PHP NULL 值。

If two or more columns of the result have the same field names, the last column will take precedence and overwrite the earlier data. In order to access multiple columns with the same name, the numerically indexed version of the row must be used.

The optional second argument resulttype is a constant indicating what type of array should be produced from the current row data. The possible values for this parameter are the constants MAXDB_ASSOC, MAXDB_ASSOC_UPPER, MAXDB_ASSOC_LOWER, MAXDB_NUM, or MAXDB_BOTH. By default the maxdb_fetch_array() function will assume MAXDB_BOTH, which is a combination of MAXDB_NUM and MAXDB_ASSOC for this parameter.

By using the MAXDB_ASSOC constant this function will behave identically to the maxdb_fetch_assoc(), while MAXDB_NUM will behave identically to the maxdb_fetch_row() function. The final option MAXDB_BOTH will create a single array with the attributes of both.

By using the MAXDB_ASSOC_UPPER constant, the behaviour of this function is identical to the use of MAXDB_ASSOC except the array index of a column is the fieldname in upper case.

By using the MAXDB_ASSOC_LOWER constant, the behaviour of this function is identical to the use of MAXDB_ASSOC except the array index of a column is the fieldname in lower case.

返回值

Returns an array that corresponds to the fetched row or NULL if there are no more rows in resultset.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, state FROM hotel.city ORDER by zip";
$result = $maxdb->query($query);

/* numeric array */
$row = $result->fetch_array(MAXDB_NUM);
printf ("%s (%s)\n", $row[0], $row[1]);

/* associative array */
$row = $result->fetch_array(MAXDB_ASSOC);
printf ("%s (%s)\n", $row["NAME"], $row["STATE"]);

/* associative and numeric array */
$row = $result->fetch_array(MAXDB_BOTH);
printf ("%s (%s)\n", $row[0], $row["STATE"]);

/* free result set */
$result->close();

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, state FROM hotel.city ORDER by zip";
$result = maxdb_query($link, $query);

/* numeric array */
$row = maxdb_fetch_array($result, MAXDB_NUM);
printf ("%s (%s)\n", $row[0], $row[1]);

/* associative array */
$row = maxdb_fetch_array($result, MAXDB_ASSOC);
printf ("%s (%s)\n", $row["NAME"], $row["STATE"]);

/* associative and numeric array */
$row = maxdb_fetch_array($result, MAXDB_BOTH);
printf ("%s (%s)\n", $row[0], $row["STATE"]);

/* free result set */
maxdb_free_result($result);

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

New York (NY)
New York (NY)
Long Island (NY)

参见

  • maxdb_fetch_assoc() - Fetch a result row as an associative array
  • maxdb_fetch_row() - Get a result row as an enumerated array
  • maxdb_fetch_resource()

maxdb_execute
maxdb_fetch_assoc
MaxDB 函数


Fetch a result row as an associative array

maxdb_fetch_array
maxdb_fetch_field_direct
MaxDB 函数
PHP Manual

maxdb_fetch_assoc

maxdb_result::fetch_assoc

(PECL maxdb >= 1.0)

maxdb_fetch_assoc -- maxdb_result::fetch_assoc — Fetch a result row as an associative array

说明

过程化风格

array maxdb_fetch_assoc ( resource $result )

面向对象风格

array maxdb_result::fetch_assoc ( void )

Returns an associative array that corresponds to the fetched row or NULL if there are no more rows.

The maxdb_fetch_assoc() function is used to return an associative array representing the next row in the result set for the result represented by the result parameter, where each key in the array represents the name of one of the result set's columns.

If two or more columns of the result have the same field names, the last column will take precedence. To access the other column(s) of the same name, you either need to access the result with numeric indices by using maxdb_fetch_row() or add alias names.

Note: 此函数返回的字段名大小写敏感。

Note: 此函数将 NULL 字段设置为 PHP NULL 值。

返回值

Returns an array that corresponds to the fetched row or NULL if there are no more rows in resultset.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, state FROM hotel.city ORDER by zip";

if ($result = $maxdb->query($query)) {

   /* fetch associative array */
   while ($row = $result->fetch_assoc()) {
       printf ("%s (%s)\n", $row["NAME"], $row["STATE"]);
   }

   /* free result set */
   $result->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, state FROM hotel.city ORDER by zip";

if ($result = maxdb_query($link, $query)) {

   /* fetch associative array */
   while ($row = maxdb_fetch_assoc($result)) {
       printf ("%s (%s)\n", $row["NAME"], $row["STATE"]);
   }

   /* free result set */
   maxdb_free_result($result);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

New York (NY)
New York (NY)
Long Island (NY)
Albany (NY)
Washington (DC)
Washington (DC)
Washington (DC)
Silver Spring (MD)
Daytona Beach (FL)
Deerfield Beach (FL)
Clearwater (FL)
Cincinnati (OH)
Detroit (MI)
Rosemont (IL)
Chicago (IL)
Chicago (IL)
New Orleans (LA)
Dallas (TX)
Los Angeles (CA)
Hollywood (CA)
Long Beach (CA)
Palm Springs (CA)
Irvine (CA)
Santa Clara (CA)
Portland (OR)

参见

  • maxdb_fetch_array() - Fetch a result row as an associative, a numeric array, or both
  • maxdb_fetch_row() - Get a result row as an enumerated array
  • maxdb_fetch_resource()

maxdb_fetch_array
maxdb_fetch_field_direct
MaxDB 函数


Fetch meta-data for a single field

maxdb_fetch_assoc
maxdb_fetch_field
MaxDB 函数
PHP Manual

maxdb_fetch_field_direct

maxdb_result::fetch_field_direct

(PECL maxdb >= 1.0)

maxdb_fetch_field_direct -- maxdb_result::fetch_field_direct — Fetch meta-data for a single field

说明

过程化风格

mixed maxdb_fetch_field_direct ( resource $result , int $fieldnr )

面向对象风格

mixed maxdb_result::fetch_field_direct ( int $fieldnr )

maxdb_fetch_field_direct() returns an resource which contains field definition information from specified resultset. The value of fieldnr must be in the range from 0 to number of fields - 1.

返回值

Returns an resource which contains field definition information or FALSE if no field information for specified fieldnr is available.

Object attributes
Attribute | Description
name | The name of the column
max_length | The maximum width of the field for the result set.
type | The data type used for this field
decimals | The number of decimals used (for integer fields)

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, cno from hotel.customer ORDER BY name";

if ($result = $maxdb->query($query)) {

   /* Get field information for column 'SurfaceArea' */
   $finfo = $result->fetch_field_direct(1);

   printf("Name:     %s\n", $finfo->name);
   printf("Table:    %s\n", $finfo->table);
   printf("max. Len: %d\n", $finfo->max_length);
   printf("Flags:    %d\n", $finfo->flags);
   printf("Type:     %d\n", $finfo->type);

   $result->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, cno from hotel.customer ORDER BY name";

if ($result = maxdb_query($link, $query)) {

   /* Get field information for column 'cno' */
   $finfo = maxdb_fetch_field_direct($result, 1);

   printf("Name:     %s\n", $finfo->name);
   printf("Table:    %s\n", $finfo->table);
   printf("max. Len: %d\n", $finfo->max_length);
   printf("Flags:    %d\n", $finfo->flags);
   printf("Type:     %d\n", $finfo->type);

   maxdb_free_result($result);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Name:     CNO
Table:
max. Len: 4
Flags:    -1
Type:     0

参见

  • maxdb_num_fields() - Get the number of fields in a result
  • maxdb_fetch_field() - Returns the next field in the result set
  • maxdb_fetch_fields() - Returns an array of resources representing the fields in a result set

maxdb_fetch_assoc
maxdb_fetch_field
MaxDB 函数


Returns the next field in the result set

maxdb_fetch_field_direct
maxdb_fetch_fields
MaxDB 函数
PHP Manual

maxdb_fetch_field

maxdb_result::fetch_field

(PECL maxdb >= 1.0)

maxdb_fetch_field -- maxdb_result::fetch_field — Returns the next field in the result set

说明

过程化风格

mixed maxdb_fetch_field ( resource $result )

面向对象风格

mixed maxdb_result::fetch_field ( void )

The maxdb_fetch_field() returns the definition of one column of a result set as an resource. Call this function repeatedly to retrieve information about all columns in the result set. maxdb_fetch_field() returns FALSE when no more fields are left.

返回值

Returns an resource which contains field definition information or FALSE if no field information is available.

Object properties
Property | Description
name | The name of the column
max_length | The maximum width of the field for the result set.
type | The data type used for this field
decimals | The number of decimals used (for integer fields)

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, cno from hotel.customer ORDER BY cno";

if ($result = $maxdb->query($query)) {

   /* Get field information for all columns */
   while ($finfo = $result->fetch_field()) {

       printf("Name:     %s\n", $finfo->name);
       printf("Table:    %s\n", $finfo->table);
       printf("max. Len: %d\n", $finfo->max_length);
       printf("Flags:    %d\n", $finfo->flags);
       printf("Type:     %d\n\n", $finfo->type);
   }
   $result->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, cno from hotel.customer ORDER BY cno";

if ($result = maxdb_query($link, $query)) {

   /* Get field information for all fields */
   while ($finfo = maxdb_fetch_field($result)) {

       printf("Name:     %s\n", $finfo->name);
       printf("Table:    %s\n", $finfo->table);
       printf("max. Len: %d\n", $finfo->max_length);
       printf("Flags:    %d\n", $finfo->flags);
       printf("Type:     %d\n\n", $finfo->type);
   }
   maxdb_free_result($result);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Name:     NAME
Table:
max. Len: 10
Flags:    -1
Type:     2

Name:     CNO
Table:
max. Len: 4
Flags:    -1
Type:     0

参见

  • maxdb_num_fields() - Get the number of fields in a result
  • maxdb_fetch_field_direct() - Fetch meta-data for a single field
  • maxdb_fetch_fields() - Returns an array of resources representing the fields in a result set
  • maxdb_field_seek() - Set result pointer to a specified field offset

maxdb_fetch_field_direct
maxdb_fetch_fields
MaxDB 函数


Returns an array of resources representing the fields in a result set

maxdb_fetch_field
maxdb_fetch_lengths
MaxDB 函数
PHP Manual

maxdb_fetch_fields

maxdb_result::fetch_fields

(PECL maxdb >= 1.0)

maxdb_fetch_fields -- maxdb_result::fetch_fields — Returns an array of resources representing the fields in a result set

说明

过程化风格

mixed maxdb_fetch_fields ( resource $result )

面向对象风格

mixed maxdb_result::fetch_fields ( void )

This function serves an identical purpose to the maxdb_fetch_field() function with the single difference that, instead of returning one resource at a time for each field, the columns are returned as an array of resources.

返回值

Returns an array of resources which contains field definition information or FALSE if no field information is available.

Object properties
Property | Description
name | The name of the column
max_length | The maximum width of the field for the result set.
type | The data type used for this field
decimals | The number of decimals used (for integer fields)

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, cno from hotel.customer ORDER BY cno";

if ($result = $maxdb->query($query)) {

   /* Get field information for all columns */
   $finfo = $result->fetch_fields();

   foreach ($finfo as $val) {
       printf("Name:     %s\n", $val->name);
       printf("Table:    %s\n", $val->table);
       printf("max. Len: %d\n", $val->max_length);
       printf("Flags:    %d\n", $val->flags);
       printf("Type:     %d\n\n", $val->type);
   }
   $result->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, cno from hotel.customer ORDER BY cno";

if ($result = maxdb_query($link, $query)) {

   /* Get field information for all columns */
   $finfo = maxdb_fetch_fields($result);

   foreach ($finfo as $val) {
       printf("Name:     %s\n", $val->name);
       printf("Table:    %s\n", $val->table);
       printf("max. Len: %d\n", $val->max_length);
       printf("Flags:    %d\n", $val->flags);
       printf("Type:     %d\n\n", $val->type);
   }
   maxdb_free_result($result);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Name:     NAME
Table:
max. Len: 10
Flags:    -1
Type:     2

Name:     CNO
Table:
max. Len: 4
Flags:    -1
Type:     0

参见

  • maxdb_num_fields() - Get the number of fields in a result
  • maxdb_fetch_field() - Returns the next field in the result set
  • maxdb_fetch_field_direct() - Fetch meta-data for a single field

maxdb_fetch_field
maxdb_fetch_lengths
MaxDB 函数


Returns the lengths of the columns of the current row in the result set

maxdb_fetch_fields
maxdb_fetch_object
MaxDB 函数
PHP Manual

maxdb_fetch_lengths

maxdb_result::lengths

(PECL maxdb >= 1.0)

maxdb_fetch_lengths -- maxdb_result::lengths — Returns the lengths of the columns of the current row in the result set

说明

过程化风格

array maxdb_fetch_lengths ( resource $result )

面向对象风格

array $maxdb_result->lengths;

The maxdb_fetch_lengths() function returns an array containing the lengths of every column of the current row within the result set represented by the result parameter. If successful, a numerically indexed array representing the lengths of each column is returned 或者在失败时返回 FALSE.

返回值

An array of integers representing the size of each column (not including any terminating null characters). FALSE if an error occurred.

maxdb_fetch_lengths() is valid only for the current row of the result set. It returns FALSE if you call it before calling maxdb_fetch_row/array/resource or after retrieving all rows in the result.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT * from hotel.customer WHERE cno = 3000";

if ($result = $maxdb->query($query)) {

   $row = $result->fetch_row();

   /* display column lengths */
   foreach ($result->lengths as $i => $val) {
       printf("Field %2d has Length %2d\n", $i+1, $val);
   }
   $result->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT * from hotel.customer WHERE cno = 3000";

if ($result = maxdb_query($link, $query)) {

   $row = maxdb_fetch_row($result);

   /* display column lengths */
   foreach (maxdb_fetch_lengths($result) as $i => $val) {
       printf("Field %2d has Length %2d\n", $i+1, $val);
   }
   maxdb_free_result($result);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Field  1 has Length  4
Field  2 has Length  3
Field  3 has Length  5
Field  4 has Length  6
Field  5 has Length  5
Field  6 has Length 21
maxdb_fetch_fields
maxdb_fetch_object
MaxDB 函数


Returns the current row of a result set as an object

maxdb_fetch_lengths
maxdb_fetch_row
MaxDB 函数
PHP Manual

maxdb_fetch_object

maxdb_result::fetch_object

(PECL maxdb >= 1.0)

maxdb_fetch_object -- maxdb_result::fetch_object — Returns the current row of a result set as an object

说明

过程化风格

object maxdb_fetch_object ( object $result )

面向对象风格

object maxdb_result::fetch_object ( void )

The maxdb_fetch_object() will return the current row result set as an object where the attributes of the object represent the names of the fields found within the result set. If no more rows exist in the current result set, NULL is returned.

返回值

Returns an object that corresponds to the fetched row or NULL if there are no more rows in resultset.

Note: 此函数返回的字段名大小写敏感。

Note: 此函数将 NULL 字段设置为 PHP NULL 值。

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, state FROM hotel.city ORDER by zip";

if ($result = $maxdb->query($query)) {

   /* fetch object array */
   while ($obj = $result->fetch_object()) {
       printf ("%s (%s)\n", $obj->NAME, $obj->STATE);
   }

   /* free result set */
   $result->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, state FROM hotel.city ORDER by zip";

if ($result = maxdb_query($link, $query)) {

   /* fetch object array */
   while ($obj = maxdb_fetch_object($result)) {
       printf ("%s (%s)\n", $obj->NAME, $obj->STATE);
   }

   /* free result set */
   maxdb_free_result($result);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

New York (NY)
New York (NY)
Long Island (NY)
Albany (NY)
Washington (DC)
Washington (DC)
Washington (DC)
Silver Spring (MD)
Daytona Beach (FL)
Deerfield Beach (FL)
Clearwater (FL)
Cincinnati (OH)
Detroit (MI)
Rosemont (IL)
Chicago (IL)
Chicago (IL)
New Orleans (LA)
Dallas (TX)
Los Angeles (CA)
Hollywood (CA)
Long Beach (CA)
Palm Springs (CA)
Irvine (CA)
Santa Clara (CA)
Portland (OR)

参见

  • maxdb_fetch_array() - Fetch a result row as an associative, a numeric array, or both
  • maxdb_fetch_assoc() - Fetch a result row as an associative array
  • maxdb_fetch_row() - Get a result row as an enumerated array

maxdb_fetch_lengths
maxdb_fetch_row
MaxDB 函数


Get a result row as an enumerated array

maxdb_fetch_object
maxdb_fetch
MaxDB 函数
PHP Manual

maxdb_fetch_row

maxdb_result::fetch_row

(PECL maxdb >= 1.0)

maxdb_fetch_row -- maxdb_result::fetch_row — Get a result row as an enumerated array

说明

过程化风格

mixed maxdb_fetch_row ( resource $result )

面向对象风格

mixed maxdb_result::fetch_row ( void )

Returns an array that corresponds to the fetched row, or NULL if there are no more rows.

maxdb_fetch_row() fetches one row of data from the result set represented by result and returns it as an enumerated array, where each column is stored in an array offset starting from 0 (zero). Each subsequent call to the maxdb_fetch_row() function will return the next row within the result set, or FALSE if there are no more rows.

返回值

maxdb_fetch_row() returns an array that corresponds to the fetched row or NULL if there are no more rows in result set.

Note: 此函数将 NULL 字段设置为 PHP NULL 值。

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, state FROM hotel.city ORDER by zip";

if ($result = $maxdb->query($query)) {

   /* fetch enumerated array */
   while ($row = $result->fetch_row()) {
       printf ("%s (%s)\n", $row[0], $row[1]);
   }

   /* free result set */
   $result->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, state FROM hotel.city ORDER by zip";

if ($result = maxdb_query($link, $query)) {

   /* fetch enumerated array */
   while ($row = maxdb_fetch_row($result)) {
       printf ("%s (%s)\n", $row[0], $row[1]);
   }

   /* free result set */
   maxdb_free_result($result);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

New York (NY)
New York (NY)
Long Island (NY)
Albany (NY)
Washington (DC)
Washington (DC)
Washington (DC)
Silver Spring (MD)
Daytona Beach (FL)
Deerfield Beach (FL)
Clearwater (FL)
Cincinnati (OH)
Detroit (MI)
Rosemont (IL)
Chicago (IL)
Chicago (IL)
New Orleans (LA)
Dallas (TX)
Los Angeles (CA)
Hollywood (CA)
Long Beach (CA)
Palm Springs (CA)
Irvine (CA)
Santa Clara (CA)
Portland (OR)

参见

  • maxdb_fetch_array() - Fetch a result row as an associative, a numeric array, or both
  • maxdb_fetch_assoc() - Fetch a result row as an associative array
  • maxdb_fetch_resource()

maxdb_fetch_object
maxdb_fetch
MaxDB 函数


别名 maxdb_stmt_fetch

maxdb_fetch_row
maxdb_field_count
MaxDB 函数
PHP Manual

maxdb_fetch

(PECL maxdb 1.0)

maxdb_fetch — 别名 maxdb_stmt_fetch()

说明

此函数是该函数的别名： maxdb_stmt_fetch().

此函数别名已废弃，仅为了向后兼容而保留。不建议使用此函数，因为将来会从 PHP 中移除。

maxdb_fetch_row
maxdb_field_count
MaxDB 函数


Returns the number of columns for the most recent query

maxdb_fetch
maxdb_field_seek
MaxDB 函数
PHP Manual

maxdb_field_count

maxdb::field_count

(PECL maxdb >= 1.0)

maxdb_field_count -- maxdb::field_count — Returns the number of columns for the most recent query

说明

过程化风格

int maxdb_field_count ( resource $link )

面向对象风格

int maxdb::field_count ( void )

Returns the number of columns for the most recent query on the connection represented by the link parameter. This function can be useful when using the maxdb_store_result() function to determine if the query should have produced a non-empty result set or not without knowing the nature of the query.

返回值

An integer representing the number of fields in a result set.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

maxdb_report (MAXDB_REPORT_OFF);
$maxdb->query("DROP TABLE friends");
maxdb_report (MAXDB_REPORT_ERROR);

$maxdb->query( "CREATE TABLE friends (id int, name varchar(20))");

$maxdb->query( "INSERT INTO friends VALUES (1,'Hartmut')");
$maxdb->query( "INSERT INTO friends VALUES (2, 'Ulf')");

if ($maxdb->field_count()) {
   /* this was a select/show or describe query */
   $result = $maxdb->store_result();

   /* process resultset */
   $row = $result->fetch_row();

   /* free resultset */
   $result->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

maxdb_report (MAXDB_REPORT_OFF);
maxdb_query($link,"DROP TABLE friends");
maxdb_report (MAXDB_REPORT_ERROR);

maxdb_query($link, "CREATE TABLE friends (id int, name varchar(20))");

maxdb_query($link, "INSERT INTO friends VALUES (1,'Hartmut')");
maxdb_query($link, "INSERT INTO friends VALUES (2, 'Ulf')");

if (maxdb_field_count($link)) {
   /* this was a select/show or describe query */
   $result = maxdb_store_result($link);

   /* process resultset */
   $row = maxdb_fetch_row($result);

   /* free resultset */
   maxdb_free_result($result);
}

/* close connection */
maxdb_close($link);
?>

The above example produces no output.

maxdb_fetch
maxdb_field_seek
MaxDB 函数


Set result pointer to a specified field offset

maxdb_field_count
maxdb_field_tell
MaxDB 函数
PHP Manual

maxdb_field_seek

maxdb_result::field_seek

(PECL maxdb >= 1.0)

maxdb_field_seek -- maxdb_result::field_seek — Set result pointer to a specified field offset

说明

过程化风格

bool maxdb_field_seek ( resource $result , int $fieldnr )

面向对象风格

bool maxdb_result::field_seek ( int $fieldnr )

Sets the field cursor to the given offset. The next call to maxdb_fetch_field() will retrieve the field definition of the column associated with that offset.

Note:

To seek to the beginning of a row, pass an offset value of zero.

返回值

maxdb_field_seek() returns previuos value of field cursor.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, cno from hotel.customer ORDER BY cno";

if ($result = $maxdb->query($query)) {

   /* Get field information for 2nd column */
   $result->field_seek(1);
   $finfo = $result->fetch_field();

   printf("Name:     %s\n", $finfo->name);
   printf("Table:    %s\n", $finfo->table);
   printf("max. Len: %d\n", $finfo->max_length);
   printf("Flags:    %d\n", $finfo->flags);
   printf("Type:     %d\n\n", $finfo->type);

   $result->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, cno from hotel.customer ORDER BY cno";

if ($result = maxdb_query($link, $query)) {

   /* Get field information for 2nd column */
   maxdb_field_seek($result, 1);
   $finfo = maxdb_fetch_field($result);

   printf("Name:     %s\n", $finfo->name);
   printf("Table:    %s\n", $finfo->table);
   printf("max. Len: %d\n", $finfo->max_length);
   printf("Flags:    %d\n", $finfo->flags);
   printf("Type:     %d\n\n", $finfo->type);

   maxdb_free_result($result);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Name:     NAME
Table:
max. Len: 10
Flags:    -1
Type:     2

参见

  • maxdb_fetch_field() - Returns the next field in the result set

maxdb_field_count
maxdb_field_tell
MaxDB 函数


Get current field offset of a result pointer

maxdb_field_seek
maxdb_free_result
MaxDB 函数
PHP Manual

maxdb_field_tell

maxdb_result::current_field

(PECL maxdb >= 1.0)

maxdb_field_tell -- maxdb_result::current_field — Get current field offset of a result pointer

说明

过程化风格

int maxdb_field_tell ( resource $result )

面向对象风格

int $maxdb_result->current_field;

Returns the position of the field cursor used for the last maxdb_fetch_field() call. This value can be used as an argument to maxdb_field_seek().

返回值

Returns current offset of field cursor.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, cno from hotel.customer ORDER BY cno";

if ($result = $maxdb->query($query)) {

   /* Get field information for all columns */
   while ($finfo = $result->fetch_field()) {

       /* get fieldpointer offset */
       $currentfield = $result->current_field;

       printf("Column    %d:\n", $currentfield);
       printf("Name:     %s\n", $finfo->name);
       printf("Table:    %s\n", $finfo->table);
       printf("max. Len: %d\n", $finfo->max_length);
       printf("Flags:    %d\n", $finfo->flags);
       printf("Type:     %d\n\n", $finfo->type);
   }
   $result->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, cno from hotel.customer ORDER BY cno";

if ($result = maxdb_query($link, $query)) {

   /* Get field information for all fields */
   while ($finfo = maxdb_fetch_field($result)) {

       /* get fieldpointer offset */
       $currentfield = maxdb_field_tell($result);

       printf("Column    %d:\n", $currentfield);
       printf("Name:     %s\n", $finfo->name);
       printf("Table:    %s\n", $finfo->table);
       printf("max. Len: %d\n", $finfo->max_length);
       printf("Flags:    %d\n", $finfo->flags);
       printf("Type:     %d\n\n", $finfo->type);
   }
   maxdb_free_result($result);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Column    1:
Name:     NAME
Table:
max. Len: 10
Flags:    -1
Type:     2

Column    2:
Name:     CNO
Table:
max. Len: 4
Flags:    -1
Type:     0

参见

  • maxdb_fetch_field() - Returns the next field in the result set
  • maxdb_field_seek() - Set result pointer to a specified field offset

maxdb_field_seek
maxdb_free_result
MaxDB 函数


Frees the memory associated with a result

maxdb_field_tell
maxdb_get_client_info
MaxDB 函数
PHP Manual

maxdb_free_result

maxdb_result::free

(PECL maxdb >= 1.0)

maxdb_free_result -- maxdb_result::free — Frees the memory associated with a result

说明

过程化风格

void maxdb_free_result ( resource $result )

面向对象风格

void maxdb_result::free ( void )

The maxdb_free_result() function frees the memory associated with the result represented by the result parameter, which was allocated by maxdb_query(), maxdb_store_result() or maxdb_use_result().

Note:

You should always free your result with maxdb_free_result(), when your result resource is not needed anymore.

返回值

This function doesn't return any value.

参见

  • maxdb_query() - Performs a query on the database
  • maxdb_stmt_store_result() - Transfers a result set from a prepared statement
  • maxdb_store_result() - Transfers a result set from the last query
  • maxdb_use_result() - Initiate a result set retrieval

maxdb_field_tell
maxdb_get_client_info
MaxDB 函数


Returns the MaxDB client version as a string

maxdb_free_result
maxdb_get_client_version
MaxDB 函数
PHP Manual

maxdb_get_client_info

(PECL maxdb >= 1.0)

maxdb_get_client_info — Returns the MaxDB client version as a string

说明

string maxdb_get_client_info ( void )

The maxdb_get_client_info() function is used to return a string representing the client version being used in the MaxDB extension.

返回值

A string that represents the MaxDB client library version

范例

Example #1 maxdb_get_client_info

<?php

/* We don't need a connection to determine
   the version of MaxDB client library */

printf("Client library version: %s\n", maxdb_get_client_info());
?>

以上例程的输出类似于：

Client library version: libSQLDBC <...>

参见

  • maxdb_get_client_version() - Get MaxDB client info
  • maxdb_get_server_info() - Returns the version of the MaxDB server
  • maxdb_get_server_version() - Returns the version of the MaxDB server as an integer

maxdb_free_result
maxdb_get_client_version
MaxDB 函数


Get MaxDB client info

maxdb_get_client_info
maxdb_get_host_info
MaxDB 函数
PHP Manual

maxdb_get_client_version

(PECL maxdb >= 1.0)

maxdb_get_client_version — Get MaxDB client info

说明

int maxdb_get_client_version ( void )

Returns client version number as an integer.

返回值

A number that represents the MaxDB client library version in format: main_version*10000 + minor_version *100 + sub_version. For example, 7.5.0 is returned as 70500.

This is useful to quickly determine the version of the client library to know if some capability exists.

范例

Example #1 maxdb_get_client_version

<?php

/* We don't need a connection to determine
   the version of MaxDB client library */

printf("Client library version: %d\n", maxdb_get_client_version());
?>

以上例程的输出类似于：

Client library version: 7.<...>

参见

  • maxdb_get_client_info() - Returns the MaxDB client version as a string
  • maxdb_get_server_info() - Returns the version of the MaxDB server
  • maxdb_get_server_version() - Returns the version of the MaxDB server as an integer

maxdb_get_client_info
maxdb_get_host_info
MaxDB 函数


Returns a string representing the type of connection used

maxdb_get_client_version
maxdb_get_metadata
MaxDB 函数
PHP Manual

maxdb_get_host_info

maxdb::get_host_info

(PECL maxdb >= 1.0)

maxdb_get_host_info -- maxdb::get_host_info — Returns a string representing the type of connection used

说明

过程化风格

string maxdb_get_host_info ( resource $link )

面向对象风格

string $maxdb->host_info;

The maxdb_get_host_info() function returns a string describing the connection represented by the link parameter is using.

返回值

A character string representing the server hostname and the connection type.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* print host information */
printf("Host info: %s\n", $maxdb->host_info);

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* print host information */
printf("Host info: %s\n", maxdb_get_host_info($link));

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Host info: localhost

参见

  • maxdb_get_proto_info() - Returns the version of the MaxDB protocol used

maxdb_get_client_version
maxdb_get_metadata
MaxDB 函数


别名 maxdb_stmt_result_metadata

maxdb_get_host_info
maxdb_get_proto_info
MaxDB 函数
PHP Manual

maxdb_get_metadata

(PECL maxdb 1.0)

maxdb_get_metadata — 别名 maxdb_stmt_result_metadata()

说明

此函数是该函数的别名： maxdb_stmt_result_metadata().

此函数别名已废弃，仅为了向后兼容而保留。不建议使用此函数，因为将来会从 PHP 中移除。

maxdb_get_host_info
maxdb_get_proto_info
MaxDB 函数


Returns the version of the MaxDB protocol used

maxdb_get_metadata
maxdb_get_server_info
MaxDB 函数
PHP Manual

maxdb_get_proto_info

maxdb::protocol_version

(PECL maxdb >= 1.0)

maxdb_get_proto_info -- maxdb::protocol_version — Returns the version of the MaxDB protocol used

说明

过程化风格

int maxdb_get_proto_info ( resource $link )

面向对象风格

string $maxdb->protocol_version;

Returns an integer representing the MaxDB protocol version used by the connection represented by the link parameter.

返回值

Returns an integer representing the protocol version (constant 10).

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* print protocol version */
printf("Protocol version: %d\n", $maxdb->protocol_version);

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* print protocol version */
printf("Protocol version: %d\n", maxdb_get_proto_info($link));

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Protocol version: 10

参见

  • maxdb_get_host_info() - Returns a string representing the type of connection used

maxdb_get_metadata
maxdb_get_server_info
MaxDB 函数


Returns the version of the MaxDB server

maxdb_get_proto_info
maxdb_get_server_version
MaxDB 函数
PHP Manual

maxdb_get_server_info

maxdb::server_info

(PECL maxdb >= 1.0)

maxdb_get_server_info -- maxdb::server_info — Returns the version of the MaxDB server

说明

过程化风格

string maxdb_get_server_info ( resource $link )

面向对象风格

string $maxdb->server_info;

Returns a string representing the version of the MaxDB server that the MaxDB extension is connected to (represented by the link parameter).

返回值

A character string representing the server version.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* print server version */
printf("Server version: %s\n", $maxdb->server_info);

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* print server version */
printf("Server version: %s\n", maxdb_get_server_info($link));

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Server version: Kernel    7<...>

参见

  • maxdb_get_client_info() - Returns the MaxDB client version as a string
  • maxdb_get_client_version() - Get MaxDB client info
  • maxdb_get_server_version() - Returns the version of the MaxDB server as an integer

maxdb_get_proto_info
maxdb_get_server_version
MaxDB 函数


Returns the version of the MaxDB server as an integer

maxdb_get_server_info
maxdb_info
MaxDB 函数
PHP Manual

maxdb_get_server_version

maxdb::server_version

(PECL maxdb >= 1.0)

maxdb_get_server_version -- maxdb::server_version — Returns the version of the MaxDB server as an integer

说明

过程化风格

int maxdb_get_server_version ( resource $link )

面向对象风格

int $maxdb->server_version;

The maxdb_get_server_version() function returns the version of the server connected to (represented by the link parameter) as an integer.

The form of this version number is main_version * 10000 + minor_version * 100 + sub_version (i.e. version 7.5.0 is 70500).

返回值

An integer representing the server version.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* print server version */
printf("Server version: %d\n", $maxdb->server_version);

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* print server version */
printf("Server version: %d\n", maxdb_get_server_version($link));

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Server version: 7<...>

参见

  • maxdb_get_client_info() - Returns the MaxDB client version as a string
  • maxdb_get_client_version() - Get MaxDB client info
  • maxdb_get_server_info() - Returns the version of the MaxDB server

maxdb_get_server_info
maxdb_info
MaxDB 函数


Retrieves information about the most recently executed query

maxdb_get_server_version
maxdb_init
MaxDB 函数
PHP Manual

maxdb_info

maxdb::info

(PECL maxdb >= 1.0)

maxdb_info -- maxdb::info — Retrieves information about the most recently executed query

说明

过程化风格

string maxdb_info ( resource $link )

面向对象风格

string $maxdb->info;

The maxdb_info() function returns a string providing information about the last query executed. The nature of this string is provided below:

Possible maxdb_info return values
Query type | Example result string
INSERT INTO...SELECT... | Records: 100 Duplicates: 0 Warnings: 0
INSERT INTO...VALUES (...),(...),(...) | Records: 3 Duplicates: 0 Warnings: 0
LOAD DATA INFILE ... | Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
ALTER TABLE ... | Records: 3 Duplicates: 0 Warnings: 0
UPDATE ... | Rows matched: 40 Changed: 40 Warnings: 0

Note:

Queries which do not fall into one of the above formats are not supported. In these situations, maxdb_info() will return an empty string.

返回值

A character string representing additional information about the most recently executed query.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$maxdb->query("CREATE TABLE temp.t1 LIKE hotel.city");

/* INSERT INTO .. SELECT */
$maxdb->query("INSERT INTO temp.t1 SELECT * FROM hotel.city");
printf("%s\n", $maxdb->info);

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

maxdb_query($link, "CREATE TABLE temp.t1 LIKE hotel.city");

/* INSERT INTO .. SELECT */
maxdb_query($link, "INSERT INTO temp.t1 SELECT * FROM hotel.city");
printf("%s\n", maxdb_info($link));

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Records: 25 Duplicates: 0 Warnings: 0

参见

  • maxdb_affected_rows() - Gets the number of affected rows in a previous MaxDB operation
  • maxdb_warning_count() - Returns the number of warnings from the last query for the given link
  • maxdb_num_rows() - Gets the number of rows in a result

maxdb_get_server_version
maxdb_init
MaxDB 函数


Initializes MaxDB and returns an resource for use with maxdb_real_connect

maxdb_info
maxdb_insert_id
MaxDB 函数
PHP Manual

maxdb_init

(PECL maxdb >= 1.0)

maxdb_init — Initializes MaxDB and returns an resource for use with maxdb_real_connect

说明

resource maxdb_init ( void )

Allocates or initializes a MaxDB resource suitable for maxdb_options() and maxdb_real_connect().

Note:

Any subsequent calls to any maxdb function (except maxdb_options()) will fail until maxdb_real_connect() was called.

返回值

Returns an resource.

参见

  • maxdb_options() - Set options
  • maxdb_close() - Closes a previously opened database connection
  • maxdb_real_connect() - Opens a connection to a MaxDB server
  • maxdb_connect() - Open a new connection to the MaxDB server

maxdb_info
maxdb_insert_id
MaxDB 函数


Returns the auto generated id used in the last query

maxdb_init
maxdb_kill
MaxDB 函数
PHP Manual

maxdb_insert_id

maxdb::insert_id

(PECL maxdb >= 1.0)

maxdb_insert_id -- maxdb::insert_id — Returns the auto generated id used in the last query

说明

过程化风格

mixed maxdb_insert_id ( resource $link )

面向对象风格

mixed $maxdb->insert_id;

The maxdb_insert_id() function returns the ID generated by a query on a table with a column having the DEFAULT SERIAL attribute. If the last query wasn't an INSERT or UPDATE statement or if the modified table does not have a column with the DEFAULT SERIAL attribute, this function will return zero.

返回值

The value of the DEFAULT SERIAL field that was updated by the previous query. Returns zero if there was no previous query on the connection or if the query did not update an DEFAULT_SERIAL value.

Note:

If the number is greater than maximal int value, maxdb_insert_id() will return a string.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

maxdb_report (MAXDB_REPORT_OFF);
$maxdb->query("DROP TABLE mycity");
maxdb_report (MAXDB_REPORT_ERROR);

$maxdb->query("CREATE TABLE mycity LIKE hotel.city");
$maxdb->query("ALTER TABLE mycity ADD id FIXED(11) DEFAULT SERIAL");

$query = "INSERT INTO mycity (zip,name,state) VALUES ('12203','Albany' ,'NY')";
$maxdb->query($query);

printf ("New Record has id %d.\n", $maxdb->insert_id);

/* drop table */
$maxdb->query("DROP TABLE mycity");

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

maxdb_report (MAXDB_REPORT_OFF);
maxdb_query($link,"DROP TABLE mycity");
maxdb_report (MAXDB_REPORT_ERROR);

maxdb_query($link, "CREATE TABLE mycity LIKE hotel.city");
maxdb_query($link, "ALTER TABLE mycity ADD id FIXED(11) DEFAULT SERIAL");

$query = "INSERT INTO mycity (zip,name,state) VALUES ('12203','Albany' ,'NY')";
maxdb_query($link, $query);

printf ("New Record has id %d.\n", maxdb_insert_id($link));

/* drop table */
maxdb_query($link, "DROP TABLE mycity");

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

New Record has id 1.
maxdb_init
maxdb_kill
MaxDB 函数


Disconnects from a MaxDB server

maxdb_insert_id
maxdb_master_query
MaxDB 函数
PHP Manual

maxdb_kill

maxdb::kill

(PECL maxdb >= 1.0)

maxdb_kill -- maxdb::kill — Disconnects from a MaxDB server

说明

过程化风格

bool maxdb_kill ( resource $link , int $processid )

面向对象风格

bool maxdb::kill ( int $processid )

This function is used to disconnect from a MaxDB server specified by the processid parameter.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* determine our thread id */
$thread_id = $maxdb->thread_id;

/* Kill connection */
$maxdb->kill($thread_id);

/* This should produce an error */
if (!$maxdb->query("CREATE TABLE myCity LIKE City")) {
   printf("Error: %s\n", $maxdb->error);
   exit;
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* determine our thread id */
$thread_id = maxdb_thread_id($link);

/* Kill connection */
maxdb_kill($link, $thread_id);

/* This should produce an error */
if (!maxdb_query($link, "CREATE TABLE myCity LIKE City")) {
   printf("Error: %s\n", maxdb_error($link));
   exit;
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Error: Session not connected

参见

  • maxdb_thread_id() - Returns the thread ID for the current connection

maxdb_insert_id
maxdb_master_query
MaxDB 函数


Enforce execution of a query on the master in a master/slave setup

maxdb_kill
maxdb_more_results
MaxDB 函数
PHP Manual

maxdb_master_query

(PECL maxdb >= 1.0)

maxdb_master_query — Enforce execution of a query on the master in a master/slave setup

说明

bool maxdb_master_query ( resource $link , string $query )
Warning

本函数还未编写文档，仅有参数列表。

maxdb_kill
maxdb_more_results
MaxDB 函数


Check if there any more query results from a multi query

maxdb_master_query
maxdb_multi_query
MaxDB 函数
PHP Manual

maxdb_more_results

maxdb::more_results

(PECL maxdb >= 1.0)

maxdb_more_results -- maxdb::more_results — Check if there any more query results from a multi query

说明

bool maxdb_more_results ( resource $link )

maxdb_more_results() indicates if one or more result sets are available from a previous call to maxdb_multi_query().

返回值

Always FALSE.

范例

See maxdb_multi_query().

参见

  • maxdb_multi_query() - Performs a query on the database
  • maxdb_next_result() - Prepare next result from multi_query
  • maxdb_store_result() - Transfers a result set from the last query
  • maxdb_use_result() - Initiate a result set retrieval

maxdb_master_query
maxdb_multi_query
MaxDB 函数


Performs a query on the database

maxdb_more_results
maxdb_next_result
MaxDB 函数
PHP Manual

maxdb_multi_query

maxdb::multi_query

(PECL maxdb >= 1.0)

maxdb_multi_query -- maxdb::multi_query — Performs a query on the database

说明

过程化风格

bool maxdb_multi_query ( resource $link , string $query )

面向对象风格

bool maxdb::multi_query ( string $query )

The maxdb_multi_query() works like the function maxdb_query(). Multiple queries are not yet supported.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query  = "SELECT * FROM dual";

/* execute multi query */
if ($maxdb->multi_query($query)) {
   do {
       /* store first result set */
       if ($result = $maxdb->store_result()) {
           while ($row = $result->fetch_row()) {
               printf("%s\n", $row[0]);
           }
           $result->close();
       }
       /* print divider */
       if ($maxdb->more_results()) {
           printf("-----------------\n");
       }
   } while ($maxdb->next_result());
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT * FROM dual";

/* execute multi query */
if (maxdb_multi_query($link, $query)) {
   do {
       /* store first result set */
       if ($result = maxdb_store_result($link)) {
           while ($row = maxdb_fetch_row($result)) {
               printf("%s\n", $row[0]);
           }
           maxdb_free_result($result);
       }
       /* print divider */
       if (maxdb_more_results($link)) {
           printf("-----------------\n");
       }
   } while (maxdb_next_result($link));
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

a

参见

  • maxdb_use_result() - Initiate a result set retrieval
  • maxdb_store_result() - Transfers a result set from the last query
  • maxdb_next_result() - Prepare next result from multi_query
  • maxdb_more_results() - Check if there any more query results from a multi query

maxdb_more_results
maxdb_next_result
MaxDB 函数


Prepare next result from multi_query

maxdb_multi_query
maxdb_num_fields
MaxDB 函数
PHP Manual

maxdb_next_result

maxdb::next_result

(PECL maxdb >= 1.0)

maxdb_next_result -- maxdb::next_result — Prepare next result from multi_query

说明

bool maxdb_next_result ( resource $link )

Since multiple queries are not yet supported, maxdb_next_result() returns always FALSE.

返回值

Returns FALSE.

参见

  • maxdb_multi_query() - Performs a query on the database
  • maxdb_more_results() - Check if there any more query results from a multi query
  • maxdb_store_result() - Transfers a result set from the last query
  • maxdb_use_result() - Initiate a result set retrieval

maxdb_multi_query
maxdb_num_fields
MaxDB 函数


Get the number of fields in a result

maxdb_next_result
maxdb_num_rows
MaxDB 函数
PHP Manual

maxdb_num_fields

maxdb_result::field_count

(PECL maxdb >= 1.0)

maxdb_num_fields -- maxdb_result::field_count — Get the number of fields in a result

说明

过程化风格

int maxdb_num_fields ( resource $result )

面向对象风格

int $maxdb_result->field_count;

maxdb_num_fields() returns the number of fields from specified result set.

返回值

The number of fields from a result set

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

if ($result = $maxdb->query("SELECT * FROM hotel.city ORDER BY zip")) {

   /* determine number of fields in result set */
   $field_cnt = $result->field_count;

   printf("Result set has %d fields.\n", $field_cnt);

   /* close result set */
   $result->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

if ($result = maxdb_query($link, "SELECT * FROM hotel.city ORDER BY zip")) {

   /* determine number of fields in result set */
   $field_cnt = maxdb_num_fields($result);

   printf("Result set has %d fields.\n", $field_cnt);

   /* close result set */
   maxdb_free_result($result);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Result set has 3 fields.

参见

  • maxdb_fetch_field() - Returns the next field in the result set

maxdb_next_result
maxdb_num_rows
MaxDB 函数


Gets the number of rows in a result

maxdb_num_fields
maxdb_options
MaxDB 函数
PHP Manual

maxdb_num_rows

maxdb::num_rows

(PECL maxdb >= 1.0)

maxdb_num_rows -- maxdb::num_rows — Gets the number of rows in a result

说明

过程化风格

int maxdb_num_rows ( resource $result )

面向对象风格

int $maxdb->num_rows;

Returns the number of rows in the result set.

The use of maxdb_num_rows() depends on whether you use buffered or unbuffered result sets. In case you use unbuffered resultsets maxdb_num_rows() will not correct the correct number of rows until all the rows in the result have been retrieved.

返回值

Returns number of rows in the result set.

Note:

If the number of rows is greater than maximal int value, the number will be returned as a string.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

if ($result = $maxdb->query("SELECT cno, name FROM hotel.customer ORDER BY name")) {

   /* determine number of rows result set */
   $row_cnt = $result->num_rows;

   printf("Result set has %d rows.\n", $row_cnt);

   /* close result set */
   $result->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

if ($result = maxdb_query($link, "SELECT cno, name FROM hotel.customer ORDER BY name")) {

   /* determine number of rows result set */
   $row_cnt = maxdb_num_rows($result);

   printf("Result set has %d rows.\n", $row_cnt);

   /* close result set */
   maxdb_free_result($result);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Result set has 15 rows.

参见

  • maxdb_affected_rows() - Gets the number of affected rows in a previous MaxDB operation
  • maxdb_store_result() - Transfers a result set from the last query
  • maxdb_use_result() - Initiate a result set retrieval
  • maxdb_query() - Performs a query on the database

maxdb_num_fields
maxdb_options
MaxDB 函数


Set options

maxdb_num_rows
maxdb_param_count
MaxDB 函数
PHP Manual

maxdb_options

maxdb::options

(PECL maxdb >= 1.0)

maxdb_options -- maxdb::options — Set options

说明

过程化风格

bool maxdb_options ( resource $link , int $option , mixed $value )

面向对象风格

bool maxdb::options ( int $option , mixed $value )

maxdb_options() can be used to set extra connect options and affect behavior for a connection.

This function may be called multiple times to set several options.

maxdb_options() should be called after maxdb_init() and before maxdb_real_connect().

The parameter option is the option that you want to set, the value is the value for the option. For detailed description of the options see » http://maxdb.sap.com/documentation/ The parameter option can be one of the following values:

Valid options
Name | Description
MAXDB_COMPNAME | The component name used to initialise the SQLDBC runtime environment.
MAXDB_APPLICATION | The application to be connected to the database.
MAXDB_APPVERSION | The version of the application.
MAXDB_SQLMODE | The SQL mode.
MAXDB_UNICODE | TRUE, if the connection is an unicode (UCS2) client or FALSE, if not.
MAXDB_TIMEOUT | The maximum allowed time of inactivity after which the connection to the database is closed by the system.
MAXDB_ISOLATIONLEVEL | Specifies whether and how shared locks and exclusive locks are implicitly requested or released.
MAXDB_PACKETCOUNT | The number of different request packets used for the connection.
MAXDB_STATEMENTCACHESIZE | The number of prepared statements to be cached for the connection for re-use.
MAXDB_CURSORPREFIX | The prefix to use for result tables that are automatically named.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

See maxdb_real_connect().

参见

  • maxdb_init() - Initializes MaxDB and returns an resource for use with maxdb_real_connect
  • maxdb_real_connect() - Opens a connection to a MaxDB server

maxdb_num_rows
maxdb_param_count
MaxDB 函数


别名 maxdb_stmt_param_count

maxdb_options
maxdb_ping
MaxDB 函数
PHP Manual

maxdb_param_count

(PECL maxdb 1.0)

maxdb_param_count — 别名 maxdb_stmt_param_count()

说明

此函数是该函数的别名： maxdb_stmt_param_count().

此函数别名已废弃，仅为了向后兼容而保留。不建议使用此函数，因为将来会从 PHP 中移除。

maxdb_options
maxdb_ping
MaxDB 函数


Pings a server connection, or tries to reconnect if the connection has gone down

maxdb_param_count
maxdb_prepare
MaxDB 函数
PHP Manual

maxdb_ping

maxdb::ping

(PECL maxdb >= 1.0)

maxdb_ping -- maxdb::ping — Pings a server connection, or tries to reconnect if the connection has gone down

说明

过程化风格

bool maxdb_ping ( resource $link )

面向对象风格

bool maxdb::ping ( void )

Checks whether the connection to the server is working. If it has gone down, and global option maxdb.reconnect is enabled an automatic reconnection is attempted.

This function can be used by clients that remain idle for a long while, to check whether the server has closed the connection and reconnect if necessary.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* check if server is alive */
if ($maxdb->ping()) {
   printf ("Our connection is ok!\n");
} else {
   printf ("Error: %s\n", $maxdb->error);
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* check if server is alive */
if (maxdb_ping($link)) {
   printf ("Our connection is ok!\n");
} else {
   printf ("Error: %s\n", maxdb_error($link));
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Our connection is ok!
maxdb_param_count
maxdb_prepare
MaxDB 函数


Prepare an SQL statement for execution

maxdb_ping
maxdb_query
MaxDB 函数
PHP Manual

maxdb_prepare

maxdb::prepare

(PECL maxdb >= 1.0)

maxdb_prepare -- maxdb::prepare — Prepare an SQL statement for execution

说明

过程化风格

resource maxdb_prepare ( resource $link , string $query )

面向对象风格

maxdb_stmt maxdb::prepare ( string $query )

maxdb_prepare() prepares the SQL query pointed to by the null-terminated string query, and returns a statement handle to be used for further operations on the statement. The query must consist of a single SQL statement.

Note:

You should not add a terminating semicolon or \g to the statement.

The parameter query can include one or more parameter markers in the SQL statement by embedding question mark (?) characters at the appropriate positions.

Note:

The markers are legal only in certain places in SQL statements. For example, they are allowed in the VALUES() list of an INSERT statement (to specify column values for a row), or in a comparison with a column in a WHERE clause to specify a comparison value.

However, they are not allowed for identifiers (such as table or column names), in the select list that names the columns to be returned by a SELECT statement), or to specify both operands of a binary operator such as the = equal sign. The latter restriction is necessary because it would be impossible to determine the parameter type. In general, parameters are legal only in Data Manipulation Languange (DML) statements, and not in Data Defination Language (DDL) statements.

The parameter markers must be bound to application variables using maxdb_stmt_bind_param() and/or maxdb_stmt_bind_result() before executing the statement or fetching rows.

返回值

maxdb_prepare() returns a statement resource or FALSE if an error occurred.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$city = "Rosemont";

/* create a prepared statement */
if ($stmt = $maxdb->prepare("SELECT state FROM hotel.city WHERE name=?")) {

   /* bind parameters for markers */
   $stmt->bind_param("s", $city);

   /* execute query */
   $stmt->execute();

   /* bind result variables */
   $stmt->bind_result($district);

   /* fetch value */
   $stmt->fetch();

   printf("%s is in district %s\n", $city, $district);

   /* close statement */
   $stmt->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$city = "Rosemont";

/* create a prepared statement */
if ($stmt = maxdb_prepare($link, "SELECT state FROM hotel.city WHERE name=?")) {

   /* bind parameters for markers */
   maxdb_stmt_bind_param($stmt, "s", $city);

   /* execute query */
   maxdb_stmt_execute($stmt);

  /* bind result variables */
   maxdb_stmt_bind_result($stmt, $district);

   /* fetch value */
   maxdb_stmt_fetch($stmt);

   printf("%s is in district %s\n", $city, $district);

   /* close statement */
   maxdb_stmt_close($stmt);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Rosemont is in district IL

参见

  • maxdb_stmt_execute() - Executes a prepared Query
  • maxdb_stmt_fetch() - Fetch results from a prepared statement into the bound variables
  • maxdb_stmt_bind_param() - Binds variables to a prepared statement as parameters
  • maxdb_stmt_bind_result() - Binds variables to a prepared statement for result storage
  • maxdb_stmt_close() - Closes a prepared statement

maxdb_ping
maxdb_query
MaxDB 函数


Performs a query on the database

maxdb_prepare
maxdb_real_connect
MaxDB 函数
PHP Manual

maxdb_query

maxdb::query

(PECL maxdb >= 1.0)

maxdb_query -- maxdb::query — Performs a query on the database

说明

过程化风格

mixed maxdb_query ( resource $link , string $query [, int $resultmode ] )

面向对象风格

mixed maxdb::query ( string $query )

The maxdb_query() function is used to simplify the act of performing a query against the database represented by the link parameter.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 For SELECT, SHOW, DESCRIBE or EXPLAIN maxdb_query() will return a result resource.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* Create table doesn't return a resultset */
if ($maxdb->query("CREATE TABLE temp.mycity LIKE hotel.city") === TRUE) {
   printf("Table mycity successfully created.\n");
}

/* Select queries return a resultset */
if ($result = $maxdb->query("SELECT name FROM hotel.city")) {
   printf("Select returned %d rows.\n", $result->num_rows);

   /* free result set */
   $result->close();
}

/* If we have to retrieve large amount of data we use MAXDB_USE_RESULT */
if ($result = $maxdb->query("SELECT * FROM hotel.city", MAXDB_USE_RESULT)) {
   $result->close();
}

$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* Create table doesn't return a resultset */
if (maxdb_query($link, "CREATE TABLE temp.mycity LIKE hotel.city") === TRUE) {
   printf("Table mycity successfully created.\n");
}

/* Select queries return a resultset */
if ($result = maxdb_query($link, "SELECT name FROM hotel.city")) {
   printf("Select returned %d rows.\n", maxdb_num_rows($result));

   /* free result set */
   maxdb_free_result($result);
}

/* If we have to retrieve large amount of data we use MAXDB_USE_RESULT */
if ($result = maxdb_query($link, "SELECT * FROM hotel.city", MAXDB_USE_RESULT)) {
   maxdb_free_result($result);
}

maxdb_close($link);
?>

以上例程的输出类似于：

Table mycity successfully created.
Select returned 25 rows.

参见

  • maxdb_real_query() - Execute an SQL query
  • maxdb_multi_query() - Performs a query on the database
  • maxdb_free_result() - Frees the memory associated with a result

maxdb_prepare
maxdb_real_connect
MaxDB 函数


Opens a connection to a MaxDB server

maxdb_query
maxdb_real_escape_string
MaxDB 函数
PHP Manual

maxdb_real_connect

maxdb::real_connect

(PECL maxdb >= 1.0)

maxdb_real_connect -- maxdb::real_connect — Opens a connection to a MaxDB server

说明

过程化风格

bool maxdb_real_connect ( resource $link [, string $hostname [, string $username [, string $passwd [, string $dbname [, int $port = 0 [, string $socket ]]]]]] )

面向对象风格

bool maxdb::real_connect ([ string $hostname [, string $username [, string $passwd [, string $dbname [, int $port = 0 [, string $socket ]]]]]] )

maxdb_real_connect() attempts to establish a connection to a MaxDB database engine running on hostname.

This function differs from maxdb_connect():

  • maxdb_real_connect() needs a valid resource which has to be created by function maxdb_init()

  • With function maxdb_options() you can set various options for connection.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php

/* create a connection object which is not connected */
$maxdb = maxdb_init();

/* set connection options */
$maxdb->options(MAXDB_UNICODE, "FALSE");
$maxdb->options(MAXDB_TIMEOUT, 5);

/* connect to server */
$maxdb->real_connect('localhost', 'MONA', 'RED', 'DEMODB');

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

printf ("Connection: %s\n.", $maxdb->host_info);

$maxdb->close();
?>

Example #2 过程化风格

<?php

/* create a connection object which is not connected */
$link = maxdb_init();

/* set connection options */
maxdb_options($link, MAXDB_UNICODE, "FALSE");
maxdb_options($link, MAXDB_TIMEOUT, 5);

/* connect to server */
maxdb_real_connect($link, 'localhost', 'MONA', 'RED', 'DEMODB');

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

printf ("Connection: %s\n.", maxdb_get_host_info($link));

maxdb_close($link);
?>

以上例程的输出类似于：

Connection: localhost <...>

参见

  • maxdb_connect() - Open a new connection to the MaxDB server
  • maxdb_init() - Initializes MaxDB and returns an resource for use with maxdb_real_connect
  • maxdb_options() - Set options
  • maxdb_ssl_set() - Used for establishing secure connections using SSL
  • maxdb_close() - Closes a previously opened database connection

maxdb_query
maxdb_real_escape_string
MaxDB 函数


Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection

maxdb_real_connect
maxdb_real_query
MaxDB 函数
PHP Manual

maxdb_real_escape_string

maxdb::real_escape_string

(PECL maxdb >= 1.0)

maxdb_real_escape_string -- maxdb::real_escape_string — Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection

说明

过程化风格

string maxdb_real_escape_string ( resource $link , string $escapestr )

面向对象风格

string maxdb::real_escape_string ( string $escapestr )

This function is used to create a legal SQL string that you can use in an SQL statement. The string escapestr is encoded to an escaped SQL string, taking into account the current character set of the connection.

Characters encoded are ', ".

返回值

Returns an escaped string.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$maxdb->query("CREATE TABLE temp.mycity LIKE hotel.city");

$city = "'s Hertogenbosch";

/* this query will fail, cause we didn't escape $city */
if (!$maxdb->query("INSERT into temp.mycity VALUES ('11111','$city','NY')")) {
   printf("Error: %s\n", $maxdb->sqlstate);
}

$city = $maxdb->real_escape_string($city);

/* this query with escaped $city will work */
if ($maxdb->query("INSERT into temp.mycity VALUES ('22222','$city','NY')")) {
   printf("%d Row inserted.\n", $maxdb->affected_rows);
}

$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

maxdb_query($link, "CREATE TABLE temp.mycity LIKE hotel.city");

$city = "'s Hertogenbosch";

/* this query will fail, cause we didn't escape $city */
if (!maxdb_query($link, "INSERT into temp.mycity VALUES ('11111','$city','NY')")) {
   printf("Error: %s\n", maxdb_sqlstate($link));
}

$city = maxdb_real_escape_string($link, $city);

/* this query with escaped $city will work */
if (maxdb_query($link, "INSERT into temp.mycity VALUES ('22222','$city','NY')")) {
   printf("%d Row inserted.\n", maxdb_affected_rows($link));
}

maxdb_close($link);
?>

以上例程的输出类似于：

Warning: maxdb_query(): -5016 POS(43) Missing delimiter: ) <...>
Error: 42000
1 Row inserted.

参见

  • maxdb_character_set_name() - Returns the default character set for the database connection

maxdb_real_connect
maxdb_real_query
MaxDB 函数


Execute an SQL query

maxdb_real_escape_string
maxdb_report
MaxDB 函数
PHP Manual

maxdb_real_query

maxdb::real_query

(PECL maxdb >= 1.0)

maxdb_real_query -- maxdb::real_query — Execute an SQL query

说明

过程化风格

bool maxdb_real_query ( resource $link , string $query )

面向对象风格

bool maxdb::real_query ( string $query )

The maxdb_real_query() is functionally identical with the maxdb_query().

Note:

In order to determine if a given query should return a result set or not, see maxdb_field_count().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • maxdb_query() - Performs a query on the database
  • maxdb_store_result() - Transfers a result set from the last query
  • maxdb_use_result() - Initiate a result set retrieval

maxdb_real_escape_string
maxdb_report
MaxDB 函数


Enables or disables internal report functions

maxdb_real_query
maxdb_rollback
MaxDB 函数
PHP Manual

maxdb_report

(PECL maxdb 1.0)

maxdb_report — Enables or disables internal report functions

说明

bool maxdb_report ( int $flags )

参数

flags

One of the MAXDB_REPORT_XXX constants.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 过程化风格

<?php
/* activate reporting */
maxdb_report(MAXDB_REPORT_ERROR);

$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* this query should report an error */
$result = maxdb_query($link,"SELECT Name FROM Nonexistingtable WHERE population > 50000");

maxdb_close($link);
?>

以上例程的输出类似于：

Warning: maxdb_query(): -4004 POS(18) Unknown table name:NONEXISTINGTABLE <...>
maxdb_real_query
maxdb_rollback
MaxDB 函数


Rolls back current transaction

maxdb_report
maxdb_rpl_parse_enabled
MaxDB 函数
PHP Manual

maxdb_rollback

maxdb::rollback

(PECL maxdb >= 1.0)

maxdb_rollback -- maxdb::rollback — Rolls back current transaction

说明

过程化风格

bool maxdb_rollback ( resource $link )

面向对象风格

bool maxdb::rollback ( void )

Rollbacks the current transaction for the database specified by the link parameter.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* disable autocommit */
$maxdb->autocommit(FALSE);

$maxdb->query("CREATE TABLE temp.mycity LIKE hotel.city");
$maxdb->query("INSERT INTO temp.mycity SELECT * FROM hotel.city");

/* commit insert */
$maxdb->commit();

/* delete all rows */
$maxdb->query("DELETE FROM temp.mycity");

if ($result = $maxdb->query("SELECT COUNT(*) FROM temp.mycity")) {
   $row = $result->fetch_row();
   printf("%d rows in table mycity.\n", $row[0]);
   /* Free result */
   $result->close();
}

/* Rollback */
$maxdb->rollback();

if ($result = $maxdb->query("SELECT COUNT(*) FROM temp.mycity")) {
   $row = $result->fetch_row();
   printf("%d rows in table mycity (after rollback).\n", $row[0]);
   /* Free result */
   $result->close();
}

/* Drop table myCity */
$maxdb->query("DROP TABLE temp.mycity");

$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* disable autocommit */
maxdb_autocommit($link, FALSE);

maxdb_query($link, "CREATE TABLE temp.mycity LIKE hotel.city");
maxdb_query($link, "INSERT INTO temp.mycity SELECT * FROM hotel.city");

/* commit insert */
maxdb_commit($link);

/* delete all rows */
maxdb_query($link, "DELETE FROM temp.mycity");

if ($result = maxdb_query($link, "SELECT COUNT(*) FROM temp.mycity")) {
   $row = maxdb_fetch_row($result);
   printf("%d rows in table mycity.\n", $row[0]);
   /* Free result */
   maxdb_free_result($result);
}

/* Rollback */
maxdb_rollback($link);

if ($result = maxdb_query($link, "SELECT COUNT(*) FROM temp.mycity")) {
   $row = maxdb_fetch_row($result);
   printf("%d rows in table mycity (after rollback).\n", $row[0]);
   /* Free result */
   maxdb_free_result($result);
}

/* Drop table myCity */
maxdb_query($link, "DROP TABLE temp.mycity");

maxdb_close($link);
?>

以上例程的输出类似于：

0 rows in table mycity.
25 rows in table mycity (after rollback).

参见

  • maxdb_commit() - Commits the current transaction
  • maxdb_autocommit() - Turns on or off auto-commiting database modifications

maxdb_report
maxdb_rpl_parse_enabled
MaxDB 函数


Check if RPL parse is enabled

maxdb_rollback
maxdb_rpl_probe
MaxDB 函数
PHP Manual

maxdb_rpl_parse_enabled

(PECL maxdb >= 1.0)

maxdb_rpl_parse_enabled — Check if RPL parse is enabled

说明

int maxdb_rpl_parse_enabled ( resource $link )
Warning

本函数还未编写文档，仅有参数列表。

maxdb_rollback
maxdb_rpl_probe
MaxDB 函数


RPL probe

maxdb_rpl_parse_enabled
maxdb_rpl_query_type
MaxDB 函数
PHP Manual

maxdb_rpl_probe

(PECL maxdb >= 1.0)

maxdb_rpl_probe — RPL probe

说明

bool maxdb_rpl_probe ( resource $link )
Warning

本函数还未编写文档，仅有参数列表。

maxdb_rpl_parse_enabled
maxdb_rpl_query_type
MaxDB 函数


Returns RPL query type

maxdb_rpl_probe
maxdb_select_db
MaxDB 函数
PHP Manual

maxdb_rpl_query_type

maxdb::rpl_query_type

(PECL maxdb >= 1.0)

maxdb_rpl_query_type -- maxdb::rpl_query_type — Returns RPL query type

说明

过程化风格

int maxdb_rpl_query_type ( resource $link )

面向对象风格

int maxdb::rpl_query_type ( void )
Warning

本函数还未编写文档，仅有参数列表。

maxdb_rpl_probe
maxdb_select_db
MaxDB 函数


Selects the default database for database queries

maxdb_rpl_query_type
maxdb_send_long_data
MaxDB 函数
PHP Manual

maxdb_select_db

maxdb::select_db

(PECL maxdb >= 1.0)

maxdb_select_db -- maxdb::select_db — Selects the default database for database queries

说明

bool maxdb_select_db ( resource $link , string $dbname )

The maxdb_select_db() function selects the default database (specified by the dbname parameter) to be used when performing queries against the database connection represented by the link parameter.

Note:

This function should only be used to change the default database for the connection. You can select the default database with 4th parameter in maxdb_connect().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* return name of current default database */
if ($result = $maxdb->query("SELECT SERVERDB FROM USERS WHERE USERNAME='MONA'")) {
   $row = $result->fetch_row();
   printf("Default database is %s.\n", $row[0]);
   $result->close();
}

/* change db to non existing db */
$maxdb->select_db("XXXXXXXX");

/* return name of current default database */
if ($result = $maxdb->query("SELECT SERVERDB FROM USERS WHERE USERNAME='MONA'")) {
   $row = $result->fetch_row();
   printf("Default database is %s.\n", $row[0]);
   $result->close();
}

$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* return name of current default database */
if ($result = maxdb_query($link, "SELECT SERVERDB FROM USERS WHERE USERNAME='MONA'")) {
   $row = maxdb_fetch_row($result);
   printf("Default database is %s.\n", $row[0]);
   maxdb_free_result($result);
}

/* change db to non existing db */
maxdb_select_db($link, "XXXXXXXX");

/* return name of current default database */
if ($result = maxdb_query($link, "SELECT SERVERDB FROM USERS WHERE USERNAME='MONA'")) {
   $row = maxdb_fetch_row($result);
   printf("Default database is %s.\n", $row[0]);
   maxdb_free_result($result);
}

maxdb_close($link);
?>

以上例程的输出类似于：

Default database is <...>.

Warning: maxdb_select_db(): -10709 Connection failed (RTE:database not running) <...>

Warning: maxdb_query(): -10821 Session not connected [] <...>

Warning: maxdb_close(): -10821 Session not connected [] <...>

参见

  • maxdb_connect() - Open a new connection to the MaxDB server
  • maxdb_real_connect() - Opens a connection to a MaxDB server

maxdb_rpl_query_type
maxdb_send_long_data
MaxDB 函数


别名 maxdb_stmt_send_long_data

maxdb_select_db
maxdb_send_query
MaxDB 函数
PHP Manual

maxdb_send_long_data

(PECL maxdb >= 1.0)

maxdb_send_long_data — 别名 maxdb_stmt_send_long_data()

说明

此函数是该函数的别名： maxdb_stmt_send_long_data().

此函数别名已废弃，仅为了向后兼容而保留。不建议使用此函数，因为将来会从 PHP 中移除。

maxdb_select_db
maxdb_send_query
MaxDB 函数


Send the query and return

maxdb_send_long_data
maxdb_server_end
MaxDB 函数
PHP Manual

maxdb_send_query

maxdb::send_query

(PECL maxdb >= 1.0)

maxdb_send_query -- maxdb::send_query — Send the query and return

说明

过程化风格

bool maxdb_send_query ( resource $link , string $query )

面向对象风格

bool maxdb::send_query ( string $query )
Warning

本函数还未编写文档，仅有参数列表。

maxdb_send_long_data
maxdb_server_end
MaxDB 函数


Shut down the embedded server

maxdb_send_query
maxdb_server_init
MaxDB 函数
PHP Manual

maxdb_server_end

(PECL maxdb >= 1.0)

maxdb_server_end — Shut down the embedded server

说明

void maxdb_server_end ( void )
Warning

本函数还未编写文档，仅有参数列表。

maxdb_send_query
maxdb_server_init
MaxDB 函数


Initialize embedded server

maxdb_server_end
maxdb_set_opt
MaxDB 函数
PHP Manual

maxdb_server_init

(PECL maxdb >= 1.0)

maxdb_server_init — Initialize embedded server

说明

bool maxdb_server_init ([ array $server [, array $groups ]] )
Warning

本函数还未编写文档，仅有参数列表。

maxdb_server_end
maxdb_set_opt
MaxDB 函数


别名 maxdb_options

maxdb_server_init
maxdb_sqlstate
MaxDB 函数
PHP Manual

maxdb_set_opt

(PECL maxdb 1.0)

maxdb_set_opt — 别名 maxdb_options()

说明

此函数是该函数的别名： maxdb_options().

maxdb_server_init
maxdb_sqlstate
MaxDB 函数


Returns the SQLSTATE error from previous MaxDB operation

maxdb_set_opt
maxdb_ssl_set
MaxDB 函数
PHP Manual

maxdb_sqlstate

maxdb::sqlstate

(PECL maxdb >= 1.0)

maxdb_sqlstate -- maxdb::sqlstate — Returns the SQLSTATE error from previous MaxDB operation

说明

过程化风格

string maxdb_sqlstate ( resource $link )

面向对象风格

string $maxdb->sqlstate;

Returns a string containing the SQLSTATE error code for the last error. The error code consists of five characters. '00000' means no error. The values are specified by ANSI SQL and ODBC.

Note:

Note that not all MaxDB errors are yet mapped to SQLSTATE's. The value HY000 (general error) is used for unmapped errors.

返回值

Returns a string containing the SQLSTATE error code for the last error. The error code consists of five characters. '00000' means no error.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* Table City already exists, so we should get an error */
if (!$maxdb->query("CREATE TABLE hotel.city (ID INT, Name VARCHAR(30))")) {
   printf("Error - SQLSTATE %s.\n", $maxdb->sqlstate);
}

$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* Table City already exists, so we should get an error */
if (!maxdb_query($link, "CREATE TABLE hotel.city (ID INT, Name VARCHAR(30))")) {
   printf("Error - SQLSTATE %s.\n", maxdb_sqlstate($link));
}

maxdb_close($link);
?>

以上例程的输出类似于：

Warning: maxdb_query(): -6000 POS(20) Duplicate table name:CITY [I6000] <...>
Error - SQLSTATE I6000.

参见

  • maxdb_errno() - Returns the error code for the most recent function call
  • maxdb_error() - Returns a string description of the last error

maxdb_set_opt
maxdb_ssl_set
MaxDB 函数


Used for establishing secure connections using SSL

maxdb_sqlstate
maxdb_stat
MaxDB 函数
PHP Manual

maxdb_ssl_set

maxdb::ssl_set

(PECL maxdb >= 1.0)

maxdb_ssl_set -- maxdb::ssl_set — Used for establishing secure connections using SSL

说明

过程化风格

bool maxdb_ssl_set ( resource $link , string $key , string $cert , string $ca , string $capath , string $cipher )

面向对象风格

bool maxdb::ssl_set ( string $key , string $cert , string $ca , string $capath , string $cipher )
Warning

本函数还未编写文档，仅有参数列表。

maxdb_sqlstate
maxdb_stat
MaxDB 函数


Gets the current system status

maxdb_ssl_set
maxdb_stmt_affected_rows
MaxDB 函数
PHP Manual

maxdb_stat

maxdb::stat

(PECL maxdb >= 1.0)

maxdb_stat -- maxdb::stat — Gets the current system status

说明

过程化风格

string maxdb_stat ( resource $link )

面向对象风格

string maxdb::stat ( void )

maxdb_stat() returns a string containing several information about the MaxDB server running.

返回值

A string describing the server status. FALSE if an error occurred.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

printf ("System status: %s\n", $maxdb->stat());

$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

printf("System status: %s\n", maxdb_stat($link));

maxdb_close($link);
?>

以上例程的输出类似于：

System status: Kernel    7<...>

参见

  • maxdb_get_server_info() - Returns the version of the MaxDB server

maxdb_ssl_set
maxdb_stmt_affected_rows
MaxDB 函数


Returns the total number of rows changed, deleted, or inserted by the last executed statement

maxdb_stat
maxdb_stmt_bind_param
MaxDB 函数
PHP Manual

maxdb_stmt_affected_rows

maxdb_stmt::affected_rows

(PECL maxdb >= 1.0)

maxdb_stmt_affected_rows -- maxdb_stmt::affected_rows — Returns the total number of rows changed, deleted, or inserted by the last executed statement

说明

过程化风格

int maxdb_stmt_affected_rows ( resource $stmt )

面向对象风格

int $maxdb_stmt->affected_rows;

maxdb_stmt_affected_rows() returns the number of rows affected by INSERT, UPDATE, or DELETE query. If the last query was invalid or the number of rows can not determined, this function will return -1.

返回值

An integer greater than zero indicates the number of rows affected or retrieved. Zero indicates that no records where updated for an UPDATE/DELETE statement, no rows matched the WHERE clause in the query or that no query has yet been executed. -1 indicates that the query has returned an error or the number of rows can not determined.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* create temp table */
$maxdb->query("CREATE TABLE temp.mycity LIKE hotel.city");

$query = "INSERT INTO temp.mycity SELECT * FROM hotel.city WHERE state LIKE ?";

/* prepare statement */
if ($stmt = $maxdb->prepare($query)) {

   /* Bind variable for placeholder */
   $code = 'N%';
   $stmt->bind_param("s", $code);

   /* execute statement */
   $stmt->execute();

   printf("rows inserted: %d\n", $stmt->affected_rows);

   /* close statement */
   $stmt->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* create temp table */
maxdb_query($link, "CREATE TABLE temp.mycity LIKE hotel.city");

$query = "INSERT INTO temp.mycity SELECT * FROM hotel.city WHERE state LIKE ?";

/* prepare statement */
if ($stmt = maxdb_prepare($link, $query)) {

   /* Bind variable for placeholder */
   $code = 'N%';
   maxdb_stmt_bind_param($stmt, "s", $code);

   /* execute statement */
   maxdb_stmt_execute($stmt);

   printf("rows inserted: %d\n", maxdb_stmt_affected_rows($stmt));

   /* close statement */
   maxdb_stmt_close($stmt);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

rows inserted: 4

参见

  • maxdb_stmt_num_rows() - Return the number of rows in statements result set
  • maxdb_prepare() - Prepare an SQL statement for execution

maxdb_stat
maxdb_stmt_bind_param
MaxDB 函数


Binds variables to a prepared statement as parameters

maxdb_stmt_affected_rows
maxdb_stmt_bind_result
MaxDB 函数
PHP Manual

maxdb_stmt_bind_param

maxdb_stmt::bind_param

(PECL maxdb >= 1.0)

maxdb_stmt_bind_param -- maxdb_stmt::bind_param — Binds variables to a prepared statement as parameters

说明

过程化风格

bool maxdb_stmt_bind_param ( resource $stmt , string $types , mixed &$var1 [, mixed &$... ] )

面向对象风格

bool maxdb_stmt::bind_param ( string $types , mixed &$var1 [, mixed &$... ] )

过程化风格 (extended syntax):

bool maxdb_stmt_bind_param ( resource $stmt , string $types , array &$var )

面向对象风格 (extended syntax):

bool maxdb_stmt::bind_param ( string $types , array &$var )

maxdb_stmt_bind_param() is used to bind variables for the parameter markers in the SQL statement that was passed to maxdb_prepare(). The string types contains one or more characters which specify the types for the corresponding bind variables.

The extended syntax of maxdb_stmt_bind_param() allows to give the parameters as an array instead of a variable list of PHP variables to the function. If the array variable has not been used before calling maxdb_stmt_bind_param(), it has to be initialized as an emtpy array. See the examples how to use maxdb_stmt_bind_param() with extended syntax.

Variables for SELECT INTO SQL statements can also be bound using maxdb_stmt_bind_param(). Parameters for database procedures can be bound using maxdb_stmt_bind_param(). See the examples how to use maxdb_stmt_bind_param() in this cases.

If a variable bound as INTO variable to an SQL statement was used before, the content of this variable is overwritten by the data of the SELECT INTO statement. A reference to this variable will be invalid after a call to maxdb_stmt_bind_param().

For INOUT parameters of database procedures the content of the bound INOUT variable is overwritten by the output value of the database procedure. A reference to this variable will be invalid after a call to maxdb_stmt_bind_param().

Type specification chars
Character | Description
i | corresponding variable has type integer
d | corresponding variable has type double
s | corresponding variable has type string
b | corresponding variable is a blob and will be sent in packages

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb('localhost', 'MONA', 'RED', 'DEMODB');

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$maxdb->query ("CREATE TABLE temp.mycity LIKE hotel.city");
$maxdb->query ("INSERT INTO temp.mycity SELECT * FROM hotel.city");

$stmt = $maxdb->prepare("INSERT INTO temp.mycity VALUES (?, ?, ?)");
$stmt->bind_param('sss', $zip, $name, $state);

$zip = '11111';
$name = 'Georgetown';
$state = 'NY';

/* execute prepared statement */
$stmt->execute();

printf("%d Row inserted.\n", $stmt->affected_rows);

/* close statement and connection */
$stmt->close();

/* Clean up table CountryLanguage */
$maxdb->query("DELETE FROM temp.mycity WHERE name='Georgetown'");
printf("%d Row deleted.\n", $maxdb->affected_rows);

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (!$link) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

maxdb_query ($link, "CREATE TABLE temp.mycity LIKE hotel.city");
maxdb_query ($link, "INSERT INTO temp.mycity SELECT * FROM hotel.city");

$stmt = maxdb_prepare($link, "INSERT INTO temp.mycity VALUES (?, ?, ?)");
maxdb_stmt_bind_param($stmt, 'sss', $zip, $name, $state);

$zip = '11111';
$name = 'Georgetown';
$state = 'NY';

/* execute prepared statement */
maxdb_stmt_execute($stmt);

printf("%d Row inserted.\n", maxdb_stmt_affected_rows($stmt));

/* close statement and connection */
maxdb_stmt_close($stmt);

/* Clean up table CountryLanguage */
maxdb_query($link, "DELETE FROM temp.mycity WHERE name='Georgetown'");
printf("%d Row deleted.\n", maxdb_affected_rows($link));

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

1 Row inserted.
1 Row deleted.

Example #3 过程化风格 (SELECT INTO)

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (!$link) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* Performing SQL query */
$stmt = maxdb_prepare ($link, "SELECT price INTO ? FROM hotel.room where hno = ? and type = ?");
if (!$stmt) {
  printf ("Prepare failed: %s\n", maxdb_error($link));
}

$hno = "50";
$rtype = "suite";

maxdb_stmt_bind_param($stmt, 'dss', $price, $hno, $rtype);
maxdb_stmt_execute($stmt);

printf ("%f\n", $price);

maxdb_stmt_close ($stmt);
?>

以上例程的输出类似于：

21.600000

Example #4 过程化风格 (DB procedure)

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (!$link) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

maxdb_report (MAXDB_REPORT_OFF);
maxdb_query($link,"DROP DBPROC test_proc");
maxdb_report (MAXDB_REPORT_ERROR);

$query = "create dbproc test_proc (INOUT e_text char(72)) AS select * from SYSDBA.DUAL; fetch into :e_text;";

maxdb_query($link, $query);

/* Performing SQL query */
$stmt = maxdb_prepare ($link, "CALL test_proc (?)");
if (!$stmt) {
  printf ("Prepare failed: %s\n", maxdb_error($link));
}

maxdb_stmt_bind_param($stmt, 's', $result);
maxdb_stmt_execute($stmt);

printf ("%s\n", $result);

maxdb_stmt_close ($stmt);
?>

以上例程的输出类似于：

a

Example #5 面向对象风格 (extended syntax)

<?php
$maxdb = new maxdb('localhost', 'MONA', 'RED', 'DEMODB');

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$maxdb->query ("CREATE TABLE temp.mycity LIKE hotel.city");
$maxdb->query ("INSERT INTO temp.mycity SELECT * FROM hotel.city");

$stmt = $maxdb->prepare("INSERT INTO temp.mycity VALUES (?, ?, ?)");

$arr = array();

$stmt->bind_param('iss', $arr);

$arr[0] = 11111;
$arr[1] = 'Georgetown';
$arr[2] = 'NY';

/* execute prepared statement */
$stmt->execute();

printf("%d Row inserted.\n", maxdb_stmt_affected_rows($stmt));

$arr[0] = 22222;
$arr[1] = 'New Orleans';
$arr[2] = 'LA';

/* execute prepared statement */
$stmt->execute();

printf("%d Row inserted.\n", $stmt->affected_rows);

/* close statement and connection */
$stmt->close();

$result = $maxdb->query("SELECT * from temp.mycity WHERE zip = '11111' OR zip = '22222'");
if ($result) {
  while ($row = $result->fetch_row()) {
    printf ("%s %s %s\n", $row[0], $row[1], $row[2]);
  }
}

/* Clean up table CountryLanguage */
$maxdb->query("DELETE FROM temp.mycity WHERE name='Georgetown'");
$maxdb->query("DELETE FROM temp.mycity WHERE name='New Orleans'");
printf("%d Rows deleted.\n", $maxdb->affected_rows);

/* close connection */
$maxdb->close();
?>

以上例程的输出类似于：

1 Row inserted.
1 Row inserted.
11111 Georgetown NY
22222 New Orleans LA
2 Rows deleted.

参见

  • maxdb_stmt_bind_result() - Binds variables to a prepared statement for result storage
  • maxdb_stmt_execute() - Executes a prepared Query
  • maxdb_stmt_fetch() - Fetch results from a prepared statement into the bound variables
  • maxdb_prepare() - Prepare an SQL statement for execution
  • maxdb_stmt_send_long_data() - Send data in blocks
  • maxdb_stmt_errno() - Returns the error code for the most recent statement call
  • maxdb_stmt_error() - Returns a string description for last statement error

maxdb_stmt_affected_rows
maxdb_stmt_bind_result
MaxDB 函数


Binds variables to a prepared statement for result storage

maxdb_stmt_bind_param
maxdb_stmt_close_long_data
MaxDB 函数
PHP Manual

maxdb_stmt_bind_result

maxdb_stmt::bind_result

(PECL maxdb >= 1.0)

maxdb_stmt_bind_result -- maxdb_stmt::bind_result — Binds variables to a prepared statement for result storage

说明

过程化风格

bool maxdb_stmt_bind_result ( resource $stmt , mixed &$var1 [, mixed &$... ] )

面向对象风格

bool maxdb_stmt::bind_result ( mixed &$var1 [, mixed &$... ] )

maxdb_stmt_bind_result() is used to associate (bind) columns in the result set to variables. When maxdb_stmt_fetch() is called to fetch data, the MaxDB client/server protocol places the data for the bound columns into the specified variables var1, ....

Note:

Note that all columns must be bound prior to calling maxdb_stmt_fetch(). Depending on column types bound variables can silently change to the corresponding PHP type.

A column can be bound or rebound at any time, even after a result set has been partially retrieved. The new binding takes effect the next time maxdb_stmt_fetch() is called.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* prepare statement */
if ($stmt = $maxdb->prepare("SELECT zip, name FROM hotel.city ORDER BY name")) {
   $stmt->execute();

   /* bind variables to prepared statement */
   $stmt->bind_result($col1, $col2);

   /* fetch values */
   while ($stmt->fetch()) {
       printf("%s %s\n", $col1, $col2);
   }

   /* close statement */
   $stmt->close();
}
/* close connection */
$maxdb->close();

?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (!$link) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* prepare statement */
if ($stmt = maxdb_prepare($link, "SELECT zip, name FROM hotel.city ORDER BY name")) {
   maxdb_stmt_execute($stmt);

   /* bind variables to prepared statement */
   maxdb_stmt_bind_result($stmt, $col1, $col2);

   /* fetch values */
   while (maxdb_stmt_fetch($stmt)) {
       printf("%s %s\n", $col1, $col2);
   }

   /* close statement */
   maxdb_stmt_close($stmt);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

12203 Albany
60601 Chicago
60615 Chicago
45211 Cincinnati
33575 Clearwater
75243 Dallas
32018 Daytona Beach
33441 Deerfield Beach
48226 Detroit
90029 Hollywood
92714 Irvine
90804 Long Beach
11788 Long Island
90018 Los Angeles
70112 New Orleans
10019 New York
10580 New York
92262 Palm Springs
97213 Portland
60018 Rosemont
95054 Santa Clara
20903 Silver Spring
20005 Washington
20019 Washington
20037 Washington

参见

  • maxdb_stmt_bind_param() - Binds variables to a prepared statement as parameters
  • maxdb_stmt_execute() - Executes a prepared Query
  • maxdb_stmt_fetch() - Fetch results from a prepared statement into the bound variables
  • maxdb_prepare() - Prepare an SQL statement for execution
  • maxdb_stmt_prepare() - Prepare an SQL statement for execution
  • maxdb_stmt_init() - Initializes a statement and returns an resource for use with maxdb_stmt_prepare
  • maxdb_stmt_errno() - Returns the error code for the most recent statement call
  • maxdb_stmt_error() - Returns a string description for last statement error

maxdb_stmt_bind_param
maxdb_stmt_close_long_data
MaxDB 函数


Ends a sequence of maxdb_stmt_send_long_data

maxdb_stmt_bind_result
maxdb_stmt_close
MaxDB 函数
PHP Manual

maxdb_stmt_close_long_data

maxdb_stmt::close_long_data

(PECL maxdb 1.0)

maxdb_stmt_close_long_data -- maxdb_stmt::close_long_data — Ends a sequence of maxdb_stmt_send_long_data()

说明

过程化风格

bool maxdb_stmt_close_long_data ( resource $stmt , int $param_nr )

面向对象风格

bool maxdb_stmt::close_long_data ( void )

This function has to be called after a sequence of maxdb_stmt_send_long_data(), that was started after maxdb_execute().

param_nr indicates which parameter to associate the end of data with. Parameters are numbered beginning with 0.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • maxdb_prepare() - Prepare an SQL statement for execution
  • maxdb_stmt_bind_param() - Binds variables to a prepared statement as parameters

maxdb_stmt_bind_result
maxdb_stmt_close
MaxDB 函数


Closes a prepared statement

maxdb_stmt_close_long_data
maxdb_stmt_data_seek
MaxDB 函数
PHP Manual

maxdb_stmt_close

maxdb_stmt::close

(PECL maxdb >= 1.0)

maxdb_stmt_close -- maxdb_stmt::close — Closes a prepared statement

说明

过程化风格

bool maxdb_stmt_close ( resource $stmt )

面向对象风格

bool maxdb_stmt::close ( void )

Closes a prepared statement. maxdb_stmt_close() also deallocates the statement handle pointed to by stmt. If the current statement has pending or unread results, this function cancels them so that the next query can be executed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • maxdb_prepare() - Prepare an SQL statement for execution

maxdb_stmt_close_long_data
maxdb_stmt_data_seek
MaxDB 函数


Seeks to an arbitray row in statement result set

maxdb_stmt_close
maxdb_stmt_errno
MaxDB 函数
PHP Manual

maxdb_stmt_data_seek

maxdb_stmt::data_seek

(PECL maxdb >= 1.0)

maxdb_stmt_data_seek -- maxdb_stmt::data_seek — Seeks to an arbitray row in statement result set

说明

过程化风格

bool maxdb_stmt_data_seek ( resource $statement , int $offset )

面向对象风格

bool maxdb_stmt::data_seek ( int $offset )

The maxdb_stmt_data_seek() function seeks to an arbitrary result pointer specified by the offset in the statement result set represented by statement. The offset parameter must be between zero and the total number of rows minus one (0..maxdb_stmt_num_rows() - 1).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php
/* Open a connection */
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, zip FROM hotel.city ORDER BY name";
if ($stmt = $maxdb->prepare($query)) {

   /* execute query */
   $stmt->execute();

   /* bind result variables */
   $stmt->bind_result($name, $code);

   /* store result */
   $stmt->store_result();

   /* seek to row no. 5 */
   $stmt->data_seek(5);

   /* fetch values */
   $stmt->fetch();

   printf ("City: %s  Zip: %s\n", $name, $code);

   /* close statement */
   $stmt->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
/* Open a connection */
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, zip FROM hotel.city ORDER BY name";
if ($stmt = maxdb_prepare($link, $query)) {

   /* execute query */
   maxdb_stmt_execute($stmt);

   /* bind result variables */
   maxdb_stmt_bind_result($stmt, $name, $code);

   /* store result */
   maxdb_stmt_store_result($stmt);

   /* seek to row no. 5 */
   maxdb_stmt_data_seek($stmt, 5);

   /* fetch values */
   maxdb_stmt_fetch($stmt);

   printf ("City: %s  Zip: %s\n", $name, $code);

   /* close statement */
   maxdb_stmt_close($stmt);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

City: Dallas  Zip: 75243

参见

  • maxdb_prepare() - Prepare an SQL statement for execution

maxdb_stmt_close
maxdb_stmt_errno
MaxDB 函数


Returns the error code for the most recent statement call

maxdb_stmt_data_seek
maxdb_stmt_error
MaxDB 函数
PHP Manual

maxdb_stmt_errno

maxdb_stmt::errno

(PECL maxdb >= 1.0)

maxdb_stmt_errno -- maxdb_stmt::errno — Returns the error code for the most recent statement call

说明

过程化风格

int maxdb_stmt_errno ( resource $stmt )

面向对象风格

int $maxdb_stmt->errno;

For the statement specified by stmt, maxdb_stmt_errno() returns the error code for the most recently invoked statement function that can succeed or fail.

Note:

For possible error codes see documentation of SQLDBC: » http://maxdb.sap.com/documentation/.

返回值

An error code value. Zero means no error occurred.

范例

Example #1 面向对象风格

<?php
/* Open a connection */
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$maxdb->query("CREATE TABLE temp.mycity LIKE hotel.city");
$maxdb->query("INSERT INTO temp.mycity SELECT * FROM hotel.city");

$query = "SELECT name, zip FROM temp.mycity ORDER BY name";
if ($stmt = $maxdb->prepare($query)) {

   /* drop table */
   $maxdb->query("DROP TABLE temp.mycity");

   /* execute query */
   $stmt->execute();

   printf("Error: %d.\n", $stmt->errno);

   /* close statement */
   $stmt->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
/* Open a connection */
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

maxdb_query($link, "CREATE TABLE temp.mycity LIKE hotel.city");
maxdb_query($link, "INSERT INTO temp.mycity SELECT * FROM hotel.city");

$query = "SELECT name, zip FROM temp.mycity ORDER BY name";
if ($stmt = maxdb_prepare($link, $query)) {

   /* drop table */
   maxdb_query($link, "DROP TABLE temp.mycity");

   /* execute query */
   maxdb_stmt_execute($stmt);

   printf("Error: %d.\n", maxdb_stmt_errno($stmt));

   /* close statement */
   maxdb_stmt_close($stmt);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Warning: maxdb_stmt_execute(): -4004 POS(23) Unknown table name:MYCITY [42000] <...>
Error: -4004.

参见

  • maxdb_stmt_error() - Returns a string description for last statement error
  • maxdb_stmt_sqlstate() - Returns SQLSTATE error from previous statement operation

maxdb_stmt_data_seek
maxdb_stmt_error
MaxDB 函数


Returns a string description for last statement error

maxdb_stmt_errno
maxdb_stmt_execute
MaxDB 函数
PHP Manual

maxdb_stmt_error

maxdb_stmt::error

(PECL maxdb >= 1.0)

maxdb_stmt_error -- maxdb_stmt::error — Returns a string description for last statement error

说明

过程化风格

string maxdb_stmt_error ( resource $stmt )

面向对象风格

string $maxdb_stmt->error;

For the statement specified by stmt, maxdb_stmt_error() returns a containing the error message for the most recently invoked statement function that can succeed or fail.

返回值

A string that describes the error. An empty string if no error occurred.

范例

Example #1 面向对象风格

<?php
/* Open a connection */
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$maxdb->query("CREATE TABLE temp.mycity LIKE hotel.city");
$maxdb->query("INSERT INTO temp.mycity SELECT * FROM hotel.city");

$query = "SELECT name, zip FROM temp.mycity ORDER BY name";
if ($stmt = $maxdb->prepare($query)) {

   /* drop table */
   $maxdb->query("DROP TABLE temp.mycity");

   /* execute query */
   $stmt->execute();

   printf("Error: %s.\n", $stmt->error);

   /* close statement */
   $stmt->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
/* Open a connection */
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

maxdb_query($link, "CREATE TABLE temp.mycity LIKE hotel.city");
maxdb_query($link, "INSERT INTO temp.mycity SELECT * FROM hotel.city");

$query = "SELECT name, zip FROM temp.mycity ORDER BY name";
if ($stmt = maxdb_prepare($link, $query)) {

   /* drop table */
   maxdb_query($link, "DROP TABLE temp.mycity");

   /* execute query */
   maxdb_stmt_execute($stmt);

   printf("Error: %s.\n", maxdb_stmt_error($stmt));

   /* close statement */
   maxdb_stmt_close($stmt);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Warning: maxdb_stmt_execute(): -4004 POS(23) Unknown table name:MYCITY [42000] <...>
Error: POS(23) Unknown table name:MYCITY.

参见

  • maxdb_stmt_errno() - Returns the error code for the most recent statement call
  • maxdb_stmt_sqlstate() - Returns SQLSTATE error from previous statement operation

maxdb_stmt_errno
maxdb_stmt_execute
MaxDB 函数


Executes a prepared Query

maxdb_stmt_error
maxdb_stmt_fetch
MaxDB 函数
PHP Manual

maxdb_stmt_execute

maxdb_stmt::execute

(PECL maxdb >= 1.0)

maxdb_stmt_execute -- maxdb_stmt::execute — Executes a prepared Query

说明

过程化风格

bool maxdb_stmt_execute ( resource $stmt )

面向对象风格

bool maxdb_stmt::execute ( void )

The maxdb_stmt_execute() function executes a query that has been previously prepared using the maxdb_prepare() function represented by the stmt resource. When executed any parameter markers which exist will automatically be replaced with the appropiate data.

If the statement is UPDATE, DELETE, or INSERT, the total number of affected rows can be determined by using the maxdb_stmt_affected_rows() function. Likewise, if the query yields a result set the maxdb_fetch() function is used.

Note:

When using maxdb_stmt_execute(), the maxdb_fetch() function must be used to fetch the data prior to preforming any additional queries.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$maxdb->query("CREATE TABLE temp.mycity LIKE hotel.city");

/* Prepare an insert statement */
$query = "INSERT INTO temp.mycity (zip, name, state) VALUES (?,?,?)";
$stmt = $maxdb->prepare($query);

$stmt->bind_param("sss", $val1, $val2, $val3);

$val1 = '11111';
$val2 = 'Georgetown';
$val3 = 'NY';

/* Execute the statement */
$stmt->execute();

$val1 = '22222';
$val2 = 'Hubbatown';
$val3 = 'CA';

/* Execute the statement */
$stmt->execute();

/* close statement */
$stmt->close();

/* retrieve all rows from myCity */
$query = "SELECT zip, name, state FROM temp.mycity";
if ($result = $maxdb->query($query)) {
   while ($row = $result->fetch_row()) {
       printf("%s (%s,%s)\n", $row[0], $row[1], $row[2]);
   }
   /* free result set */
   $result->close();
}

/* remove table */
$maxdb->query("DROP TABLE temp.mycity");

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

maxdb_query($link, "CREATE TABLE temp.mycity LIKE hotel.city");

/* Prepare an insert statement */
$query = "INSERT INTO temp.mycity (zip, name, state) VALUES (?,?,?)";
$stmt = maxdb_prepare($link, $query);

maxdb_stmt_bind_param($stmt, "sss", $val1, $val2, $val3);

$val1 = '11111';
$val2 = 'Georgetown';
$val3 = 'NY';

/* Execute the statement */
maxdb_stmt_execute($stmt);

$val1 = '22222';
$val2 = 'Hubbatown';
$val3 = 'CA';

/* Execute the statement */
maxdb_stmt_execute($stmt);

/* close statement */
maxdb_stmt_close($stmt);

/* retrieve all rows from myCity */
$query = "SELECT zip, name, state FROM temp.mycity";
if ($result = maxdb_query($link, $query)) {
   while ($row = maxdb_fetch_row($result)) {
       printf("%s (%s,%s)\n", $row[0], $row[1], $row[2]);
   }
   /* free result set */
   maxdb_free_result($result);
}

/* remove table */
maxdb_query($link, "DROP TABLE temp.mycity");

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

11111 (Georgetown,NY)
22222 (Hubbatown,CA)

参见

  • maxdb_prepare() - Prepare an SQL statement for execution
  • maxdb_stmt_bind_param() - Binds variables to a prepared statement as parameters

maxdb_stmt_error
maxdb_stmt_fetch
MaxDB 函数


Fetch results from a prepared statement into the bound variables

maxdb_stmt_execute
maxdb_stmt_free_result
MaxDB 函数
PHP Manual

maxdb_stmt_fetch

maxdb_stmt::fetch

(PECL maxdb >= 1.0)

maxdb_stmt_fetch -- maxdb_stmt::fetch — Fetch results from a prepared statement into the bound variables

说明

过程化风格

bool maxdb_stmt_fetch ( resource $stmt )

面向对象风格

bool maxdb_stmt::fetch ( void )

maxdb_stmt_fetch() returns row data using the variables bound by maxdb_stmt_bind_result().

Note:

Note that all columns must be bound by the application before calling maxdb_stmt_fetch().

返回值

Return values
Value | Description
TRUE | Success. Data has been fetched
FALSE | Error occurred
NULL | No more rows/data exists

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT zip, name FROM hotel.city ORDER by name";

if ($stmt = $maxdb->prepare($query)) {

   /* execute statement */
   $stmt->execute();

   /* bind result variables */
   $stmt->bind_result($name, $code);

   /* fetch values */
   while ($stmt->fetch()) {
       printf ("%s (%s)\n", $name, $code);
   }

   /* close statement */
   $stmt->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT zip, name FROM hotel.city ORDER by name";

if ($stmt = maxdb_prepare($link, $query)) {

   /* execute statement */
   maxdb_stmt_execute($stmt);

   /* bind result variables */
   maxdb_stmt_bind_result($stmt, $name, $code);

   /* fetch values */
   while (maxdb_stmt_fetch($stmt)) {
       printf ("%s (%s)\n", $name, $code);
   }

   /* close statement */
   maxdb_stmt_close($stmt);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

12203 (Albany)
60601 (Chicago)
60615 (Chicago)
45211 (Cincinnati)
33575 (Clearwater)
75243 (Dallas)
32018 (Daytona Beach)
33441 (Deerfield Beach)
48226 (Detroit)
90029 (Hollywood)
92714 (Irvine)
90804 (Long Beach)
11788 (Long Island)
90018 (Los Angeles)
70112 (New Orleans)
10019 (New York)
10580 (New York)
92262 (Palm Springs)
97213 (Portland)
60018 (Rosemont)
95054 (Santa Clara)
20903 (Silver Spring)
20005 (Washington)
20019 (Washington)
20037 (Washington)

参见

  • maxdb_prepare() - Prepare an SQL statement for execution
  • maxdb_stmt_errno() - Returns the error code for the most recent statement call
  • maxdb_stmt_error() - Returns a string description for last statement error
  • maxdb_stmt_bind_result() - Binds variables to a prepared statement for result storage

maxdb_stmt_execute
maxdb_stmt_free_result
MaxDB 函数


Frees stored result memory for the given statement handle

maxdb_stmt_fetch
maxdb_stmt_init
MaxDB 函数
PHP Manual

maxdb_stmt_free_result

maxdb_stmt::free_result

(PECL maxdb >= 1.0)

maxdb_stmt_free_result -- maxdb_stmt::free_result — Frees stored result memory for the given statement handle

说明

过程化风格

void maxdb_stmt_free_result ( resource $stmt )

面向对象风格

void maxdb_stmt::free_result ( void )

The maxdb_stmt_free_result() function frees the result memory associated with the statement represented by the stmt parameter, which was allocated by maxdb_stmt_store_result().

返回值

This function doesn't return any value.

参见

  • maxdb_stmt_store_result() - Transfers a result set from a prepared statement

maxdb_stmt_fetch
maxdb_stmt_init
MaxDB 函数


Initializes a statement and returns an resource for use with maxdb_stmt_prepare

maxdb_stmt_free_result
maxdb_stmt_num_rows
MaxDB 函数
PHP Manual

maxdb_stmt_init

maxdb::stmt_init

(PECL maxdb >= 1.0)

maxdb_stmt_init -- maxdb::stmt_init — Initializes a statement and returns an resource for use with maxdb_stmt_prepare

说明

过程化风格

resource maxdb_stmt_init ( resource $link )

面向对象风格

object maxdb::stmt_init ( void )

Allocates and initializes a statement resource suitable for maxdb_stmt_prepare().

Note:

Any subsequent calls to any maxdb_stmt function will fail until maxdb_stmt_prepare() was called.

返回值

Returns an resource.

参见

  • maxdb_stmt_prepare() - Prepare an SQL statement for execution

maxdb_stmt_free_result
maxdb_stmt_num_rows
MaxDB 函数


Return the number of rows in statements result set

maxdb_stmt_init
maxdb_stmt_param_count
MaxDB 函数
PHP Manual

maxdb_stmt_num_rows

maxdb_stmt::num_rows

(PECL maxdb >= 1.0)

maxdb_stmt_num_rows -- maxdb_stmt::num_rows — Return the number of rows in statements result set

说明

过程化风格

int maxdb_stmt_num_rows ( resource $stmt )

面向对象风格

int $maxdb_stmt->num_rows;

Returns the number of rows in the result set.

返回值

An integer representing the number of rows in result set.

范例

Example #1 面向对象风格

<?php
/* Open a connection */
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT zip, name FROM hotel.city ORDER BY name";
if ($stmt = $maxdb->prepare($query)) {

   /* execute query */
   $stmt->execute();

   /* store result */
   $stmt->store_result();

   printf("Number of rows: %d.\n", $stmt->num_rows);

   /* close statement */
   $stmt->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
/* Open a connection */
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT zip, name FROM hotel.city ORDER BY name";
if ($stmt = maxdb_prepare($link, $query)) {

   /* execute query */
   maxdb_stmt_execute($stmt);

   /* store result */
   maxdb_stmt_store_result($stmt);

   printf("Number of rows: %d.\n", maxdb_stmt_num_rows($stmt));

   /* close statement */
   maxdb_stmt_close($stmt);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Number of rows: 25.

参见

  • maxdb_stmt_affected_rows() - Returns the total number of rows changed, deleted, or inserted by the last executed statement
  • maxdb_prepare() - Prepare an SQL statement for execution
  • maxdb_stmt_store_result() - Transfers a result set from a prepared statement

maxdb_stmt_init
maxdb_stmt_param_count
MaxDB 函数


Returns the number of parameter for the given statement

maxdb_stmt_num_rows
maxdb_stmt_prepare
MaxDB 函数
PHP Manual

maxdb_stmt_param_count

maxdb_stmt::param_count

(PECL maxdb >= 1.0)

maxdb_stmt_param_count -- maxdb_stmt::param_count — Returns the number of parameter for the given statement

说明

过程化风格

int maxdb_stmt_param_count ( resource $stmt )

面向对象风格

int $maxdb_stmt->param_count;

maxdb_stmt_param_count() returns the number of parameter markers present in the prepared statement.

返回值

returns an integer representing the number of parameters.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

if ($stmt = $maxdb->prepare("SELECT name FROM hotel.city WHERE name=? OR state=?")) {

   $marker = $stmt->param_count;
   printf("Statement has %d markers.\n", $marker);

   /* close statement */
   $stmt->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

if ($stmt = maxdb_prepare($link, "SELECT name FROM hotel.city WHERE name=? OR state=?")) {

   $marker = maxdb_stmt_param_count($stmt);
   printf("Statement has %d markers.\n", $marker);

   /* close statement */
   maxdb_stmt_close($stmt);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Statement has 2 markers.

参见

  • maxdb_prepare() - Prepare an SQL statement for execution

maxdb_stmt_num_rows
maxdb_stmt_prepare
MaxDB 函数


Prepare an SQL statement for execution

maxdb_stmt_param_count
maxdb_stmt_reset
MaxDB 函数
PHP Manual

maxdb_stmt_prepare

maxdb_stmt::prepare

(PECL maxdb >= 1.0)

maxdb_stmt_prepare -- maxdb_stmt::prepare — Prepare an SQL statement for execution

说明

过程化风格

bool maxdb_stmt_prepare ( resource $stmt , string $query )

面向对象风格

mixed maxdb_stmt::prepare ( string $query )

maxdb_stmt_prepare() prepares the SQL query pointed to by the null-terminated string query. The statement resource has to be allocated by maxdb_stmt_init(). The query must consist of a single SQL statement.

Note:

You should not add a terminating semicolon or \g to the statement.

The parameter query can include one or more parameter markers in the SQL statement by embedding question mark (?) characters at the appropriate positions.

Note:

The markers are legal only in certain places in SQL statements. For example, they are allowed in the VALUES() list of an INSERT statement (to specify column values for a row), or in a comparison with a column in a WHERE clause to specify a comparison value.

However, they are not allowed for identifiers (such as table or column names), in the select list that names the columns to be returned by a SELECT statement), or to specify both operands of a binary operator such as the = equal sign. The latter restriction is necessary because it would be impossible to determine the parameter type. In general, parameters are legal only in Data Manipulation Languange (DML) statements, and not in Data Defination Language (DDL) statements.

The parameter markers must be bound to application variables using maxdb_stmt_bind_param() and/or maxdb_stmt_bind_result() before executing the statement or fetching rows.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$city = "Portland";

/* create a prepared statement */
$stmt =  $maxdb->stmt_init();
if ($stmt->prepare("SELECT state FROM hotel.city WHERE name=?")) {

   /* bind parameters for markers */
   $stmt->bind_param("s", $city);

   /* execute query */
   $stmt->execute();

   /* bind result variables */
   $stmt->bind_result($district);

   /* fetch value */
   $stmt->fetch();

   printf("%s is in district %s\n", $city, $district);

   /* close statement */
   $stmt->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$city = "Portland";

/* create a prepared statement */
$stmt = maxdb_stmt_init($link);
if (maxdb_stmt_prepare($stmt, "SELECT state FROM hotel.city WHERE name=?")) {

   /* bind parameters for markers */
   maxdb_stmt_bind_param($stmt, "s", $city);

   /* execute query */
   maxdb_stmt_execute($stmt);

   /* bind result variables */
   maxdb_stmt_bind_result($stmt, $district);

   /* fetch value */
   maxdb_stmt_fetch($stmt);

   printf("%s is in district %s\n", $city, $district);

   /* close statement */
   maxdb_stmt_close($stmt);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Portland is in district OR

参见

  • maxdb_stmt_init() - Initializes a statement and returns an resource for use with maxdb_stmt_prepare
  • maxdb_stmt_execute() - Executes a prepared Query
  • maxdb_stmt_fetch() - Fetch results from a prepared statement into the bound variables
  • maxdb_stmt_bind_param() - Binds variables to a prepared statement as parameters
  • maxdb_stmt_bind_result() - Binds variables to a prepared statement for result storage
  • maxdb_stmt_close() - Closes a prepared statement

maxdb_stmt_param_count
maxdb_stmt_reset
MaxDB 函数


Resets a prepared statement

maxdb_stmt_prepare
maxdb_stmt_result_metadata
MaxDB 函数
PHP Manual

maxdb_stmt_reset

maxdb_stmt::reset

(PECL maxdb >= 1.0)

maxdb_stmt_reset -- maxdb_stmt::reset — Resets a prepared statement

说明

过程化风格

bool maxdb_stmt_reset ( resource $stmt )

面向对象风格

bool maxdb_stmt::reset ( void )
Warning

本函数还未编写文档，仅有参数列表。

maxdb_stmt_prepare
maxdb_stmt_result_metadata
MaxDB 函数


Returns result set metadata from a prepared statement

maxdb_stmt_reset
maxdb_stmt_send_long_data
MaxDB 函数
PHP Manual

maxdb_stmt_result_metadata

maxdb_stmt::result_metadata

(PECL maxdb >= 1.0)

maxdb_stmt_result_metadata -- maxdb_stmt::result_metadata — Returns result set metadata from a prepared statement

说明

过程化风格

resource maxdb_stmt_result_metadata ( resource $stmt )

面向对象风格

resource maxdb_stmt::result_metadata ( void )

If a statement passed to maxdb_prepare() is one that produces a result set, maxdb_stmt_result_metadata() returns the result resource that can be used to process the meta information such as total number of fields and individual field information.

Note:

This result set pointer can be passed as an argument to any of the field-based functions that process result set metadata, such as:

  • maxdb_num_fields()

  • maxdb_fetch_field()

  • maxdb_fetch_field_direct()

  • maxdb_fetch_fields()

  • maxdb_field_count()

  • maxdb_field_seek()

  • maxdb_field_tell()

  • maxdb_free_result()

The result set structure should be freed when you are done with it, which you can do by passing it to maxdb_free_result()

Note:

The result set returned by maxdb_stmt_result_metadata() contains only metadata. It does not contain any row results. The rows are obtained by using the statement handle with maxdb_fetch().

返回值

maxdb_stmt_result_metadata() returns a result resource or FALSE if an error occurred.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

$maxdb->query("CREATE TABLE temp.friends (id int, name varchar(20))");

$maxdb->query("INSERT INTO temp.friends VALUES (1,'Hartmut')");
$maxdb->query("INSERT INTO temp.friends VALUES (2, 'Ulf')");

$stmt = $maxdb->prepare("SELECT id, name FROM temp.friends");
$stmt->execute();

/* get resultset for metadata */
$result = $stmt->result_metadata();

/* retrieve field information from metadata result set */
$field = $result->fetch_field();

printf("Fieldname: %s\n", $field->name);

/* close resultset */
$result->close();

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

maxdb_query($link, "CREATE TABLE temp.friends (id int, name varchar(20))");

maxdb_query($link, "INSERT INTO temp.friends VALUES (1,'Hartmut')");
maxdb_query($link, "INSERT INTO temp.friends VALUES (2, 'Ulf')");

$stmt = maxdb_prepare($link, "SELECT id, name FROM temp.friends");
maxdb_stmt_execute($stmt);

/* get resultset for metadata */
$result = maxdb_stmt_result_metadata($stmt);

/* retrieve field information from metadata result set */
$field = maxdb_fetch_field($result);

printf("Fieldname: %s\n", $field->name);

/* close resultset */
maxdb_free_result($result);

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Fieldname: ID

参见

  • maxdb_prepare() - Prepare an SQL statement for execution
  • maxdb_free_result() - Frees the memory associated with a result

maxdb_stmt_reset
maxdb_stmt_send_long_data
MaxDB 函数


Send data in blocks

maxdb_stmt_result_metadata
maxdb_stmt_sqlstate
MaxDB 函数
PHP Manual

maxdb_stmt_send_long_data

maxdb_stmt::send_long_data

(PECL maxdb 1.0)

maxdb_stmt_send_long_data -- maxdb_stmt::send_long_data — Send data in blocks

说明

过程化风格

bool maxdb_stmt_send_long_data ( resource $stmt , int $param_nr , string $data )

面向对象风格

bool maxdb_stmt::stmt_send_long_data ( int $param_nr , string $data )

Allows to send parameter data to the server in pieces (or chunks). This function can be called multiple times to send the parts of a character or binary data value for a column, which must be one of the TEXT or BLOB datatypes.

param_nr indicates which parameter to associate the data with. Parameters are numbered beginning with 0. data is a string containing data to be sent.

Note:

For efficiency reasons, this function should be used after calling maxdb_execute(). In this case, the data is not stored on the client side. The end of the sequence must end with a call to maxdb_stmt_close_long_data().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • maxdb_prepare() - Prepare an SQL statement for execution
  • maxdb_stmt_bind_param() - Binds variables to a prepared statement as parameters

maxdb_stmt_result_metadata
maxdb_stmt_sqlstate
MaxDB 函数


Returns SQLSTATE error from previous statement operation

maxdb_stmt_send_long_data
maxdb_stmt_store_result
MaxDB 函数
PHP Manual

maxdb_stmt_sqlstate

(PECL maxdb >= 1.0)

maxdb_stmt_sqlstate — Returns SQLSTATE error from previous statement operation

说明

string maxdb_stmt_sqlstate ( resource $stmt )

Returns a string containing the SQLSTATE error code for the most recently invoked prepared statement function that can succeed or fail. The error code consists of five characters. '00000' means no error. The values are specified by ANSI SQL and ODBC.

Note:

Note that not all MaxDB errors are yet mapped to SQLSTATE's. The value HY000 (general error) is used for unmapped errors.

返回值

Returns a string containing the SQLSTATE error code for the last error. The error code consists of five characters. '00000' means no error.

范例

Example #1 面向对象风格

<?php
/* Open a connection */
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$maxdb->query("CREATE TABLE temp.mycity LIKE hotel.city");
$maxdb->query("INSERT INTO temp.mycity SELECT * FROM hotel.city");

$query = "SELECT name, zip FROM temp.mycity ORDER BY name";
if ($stmt = $maxdb->prepare($query)) {

   /* drop table */
   $maxdb->query("DROP TABLE temp.mycity");

   /* execute query */
   $stmt->execute();

   printf("Error: %s.\n", $stmt->sqlstate);

   /* close statement */
   $stmt->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
/* Open a connection */
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

maxdb_query($link, "CREATE TABLE temp.mycity LIKE hotel.city");
maxdb_query($link, "INSERT INTO temp.mycity SELECT * FROM hotel.city");

$query = "SELECT name, zip FROM temp.mycity ORDER BY name";
if ($stmt = maxdb_prepare($link, $query)) {

   /* drop table */
   maxdb_query($link, "DROP TABLE temp.mycity");

   /* execute query */
   maxdb_stmt_execute($stmt);

   printf("Error: %s.\n", maxdb_stmt_sqlstate($stmt));

   /* close statement */
   maxdb_stmt_close($stmt);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Warning: maxdb_stmt_execute(): -4004 POS(23) Unknown table name:MYCITY [42000] <...>
Error: 42000.

参见

  • maxdb_stmt_errno() - Returns the error code for the most recent statement call
  • maxdb_stmt_error() - Returns a string description for last statement error

maxdb_stmt_send_long_data
maxdb_stmt_store_result
MaxDB 函数


Transfers a result set from a prepared statement

maxdb_stmt_sqlstate
maxdb_store_result
MaxDB 函数
PHP Manual

maxdb_stmt_store_result

maxdb_stmt::store_result

(PECL maxdb >= 1.0)

maxdb_stmt_store_result -- maxdb_stmt::store_result — Transfers a result set from a prepared statement

说明

过程化风格

bool maxdb_stmt_store_result ( resource $stmt )

面向对象风格

object maxdb_stmt::store_result ( void )

maxdb_stmt_store_result() has no functionally effect and should not be used for retrieving data from MaxDB server.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php
/* Open a connection */
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, zip FROM hotel.city ORDER BY name";
if ($stmt = $maxdb->prepare($query)) {

   /* execute query */
   $stmt->execute();

   /* store result */
   $stmt->store_result();

   printf("Number of rows: %d.\n", $stmt->num_rows);

   /* free result */
   $stmt->free_result();

   /* close statement */
   $stmt->close();
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
/* Open a connection */
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query = "SELECT name, zip FROM hotel.city ORDER BY name";
if ($stmt = maxdb_prepare($link, $query)) {

   /* execute query */
   maxdb_stmt_execute($stmt);

   /* store result */
   maxdb_stmt_store_result($stmt);

   printf("Number of rows: %d.\n", maxdb_stmt_num_rows($stmt));

   /* free result */
   maxdb_stmt_free_result($stmt);

   /* close statement */
   maxdb_stmt_close($stmt);
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Number of rows: 25.

参见

  • maxdb_prepare() - Prepare an SQL statement for execution
  • maxdb_stmt_result_metadata() - Returns result set metadata from a prepared statement
  • maxdb_fetch() - 别名 maxdb_stmt_fetch

maxdb_stmt_sqlstate
maxdb_store_result
MaxDB 函数


Transfers a result set from the last query

maxdb_stmt_store_result
maxdb_thread_id
MaxDB 函数
PHP Manual

maxdb_store_result

maxdb::store_result

(PECL maxdb >= 1.0)

maxdb_store_result -- maxdb::store_result — Transfers a result set from the last query

说明

过程化风格

resource maxdb_store_result ( resource $link )

面向对象风格

object maxdb::store_result ( void )

This function has no functionally effect.

返回值

Returns a result resource or FALSE if an error occurred.

范例

See maxdb_multi_query().

参见

  • maxdb_real_query() - Execute an SQL query
  • maxdb_use_result() - Initiate a result set retrieval

maxdb_stmt_store_result
maxdb_thread_id
MaxDB 函数


Returns the thread ID for the current connection

maxdb_store_result
maxdb_thread_safe
MaxDB 函数
PHP Manual

maxdb_thread_id

maxdb::thread_id

(PECL maxdb >= 1.0)

maxdb_thread_id -- maxdb::thread_id — Returns the thread ID for the current connection

说明

过程化风格

int maxdb_thread_id ( resource $link )

面向对象风格

int $maxdb->thread_id;

The maxdb_thread_id() function returns the thread ID for the current connection which can then be killed using the maxdb_kill() function. If the connection is lost and you reconnect with maxdb_ping(), the thread ID will be other. Therefore you should get the thread ID only when you need it.

Note:

The thread ID is assigned on a connection-by-connection basis. Hence, if the connection is broken and then re-established a new thread ID will be assigned.

返回值

maxdb_thread_id() returns the Thread ID for the current connection.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* determine our thread id */
$thread_id = $maxdb->thread_id;

/* Kill connection */
$maxdb->kill($thread_id);

/* This should produce an error */
if (!$maxdb->query("CREATE TABLE mycity LIKE hotel.city")) {
   printf("Error: %s\n", $maxdb->error);
   exit;
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

/* determine our thread id */
$thread_id = maxdb_thread_id($link);

/* Kill connection */
maxdb_kill($link, $thread_id);

/* This should produce an error */
if (!maxdb_query($link, "CREATE TABLE mycity LIKE hotel.city")) {
   printf("Error: %s\n", maxdb_error($link));
   exit;
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Warning: maxdb_query(): -10821 Session not connected <...>
Error: Session not connected

参见

  • maxdb_kill() - Disconnects from a MaxDB server

maxdb_store_result
maxdb_thread_safe
MaxDB 函数


Returns whether thread safety is given or not

maxdb_thread_id
maxdb_use_result
MaxDB 函数
PHP Manual

maxdb_thread_safe

(PECL maxdb >= 7.6.06.04)

maxdb_thread_safe — Returns whether thread safety is given or not

说明

bool maxdb_thread_safe ( void )

maxdb_thread_safe() indicates whether the client library is compiled as thread-safe.

返回值

TRUE if the client library is thread-safe, otherwise FALSE.

maxdb_thread_id
maxdb_use_result
MaxDB 函数


Initiate a result set retrieval

maxdb_thread_safe
maxdb_warning_count
MaxDB 函数
PHP Manual

maxdb_use_result

maxdb::use_result

(PECL maxdb >= 1.0)

maxdb_use_result -- maxdb::use_result — Initiate a result set retrieval

说明

过程化风格

resource maxdb_use_result ( resource $link )

面向对象风格

resource maxdb::use_result ( void )

maxdb_use_result() has no effect.

返回值

Returns result 或者在失败时返回 FALSE.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query  = "SELECT * FROM DUAL";

/* execute multi query */
if ($maxdb->multi_query($query)) {
   do {
       /* store first result set */
       if ($result = $maxdb->use_result()) {
           while ($row = $result->fetch_row()) {
               printf("%s\n", $row[0]);
           }
           $result->close();
       }
       /* print divider */
       if ($maxdb->more_results()) {
           printf("-----------------\n");
       }
   } while ($maxdb->next_result());
}

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$query  = "SELECT * FROM DUAL";

/* execute multi query */
if (maxdb_multi_query($link, $query)) {
   do {
       /* store first result set */
       if ($result = maxdb_use_result($link)) {
           while ($row = maxdb_fetch_row($result)) {
               printf("%s\n", $row[0]);
           }
           maxdb_free_result($result);
       }
       /* print divider */
       if (maxdb_more_results($link)) {
           printf("-----------------\n");
       }
   } while (maxdb_next_result($link));
}

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

a

参见

  • maxdb_real_query() - Execute an SQL query
  • maxdb_store_result() - Transfers a result set from the last query

maxdb_thread_safe
maxdb_warning_count
MaxDB 函数


Returns the number of warnings from the last query for the given link

maxdb_use_result
Mongo
MaxDB 函数
PHP Manual

maxdb_warning_count

maxdb::warning_count

(PECL maxdb >= 1.0)

maxdb_warning_count -- maxdb::warning_count — Returns the number of warnings from the last query for the given link

说明

过程化风格

int maxdb_warning_count ( resource $link )

面向对象风格

int $maxdb->warning_count;

maxdb_warning_count() returns the number of warnings from the last query in the connection represented by the link parameter.

返回值

Number of warnings or zero if there are no warnings.

范例

Example #1 面向对象风格

<?php
$maxdb = new maxdb("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

$maxdb->query("CREATE TABLE temp.mycity LIKE hotel.city");

/* a remarkable city in Wales */
$query = "INSERT INTO temp.mycity (zip, name) VALUES('11111',
       'Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch')";

$maxdb->query($query);

printf ("Number of warning: %d\n", $maxdb->warning_count);

/* close connection */
$maxdb->close();
?>

Example #2 过程化风格

<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");

/* check connection */
if (maxdb_connect_errno()) {
   printf("Connect failed: %s\n", maxdb_connect_error());
   exit();
}

maxdb_query($link, "CREATE TABLE temp.mycity LIKE hotel.city");

/* a remarkable long city name in Wales */
$query = "INSERT INTO temp.mycity (zip, name) VALUES('11111',
       'Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch')";

maxdb_query($link, $query);

printf ("Number of warning: %d\n", maxdb_warning_count($link));

/* close connection */
maxdb_close($link);
?>

以上例程的输出类似于：

Warning: maxdb_query(): -8004 POS(62) Constant must be compatible with column type and length <...>
Number of warning: 0

参见

  • maxdb_errno() - Returns the error code for the most recent function call
  • maxdb_error() - Returns a string description of the last error
  • maxdb_sqlstate() - Returns the SQLSTATE error from previous MaxDB operation

maxdb_use_result
Mongo
MaxDB 函数


MongoDB

  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
  • 手册
    • 教程
    • 读取首选项
    • Write Concerns
    • SQL 到 Mongo 的对应表
    • 链接服务器
    • Writes
    • Querying
    • Updates
    • Security
    • 故障排除
    • Running the Driver's Tests
  • 核心类
    • MongoClient — MongoClient 类
    • MongoDB — MongoDB 类
    • MongoCollection — The MongoCollection class
    • MongoCursor — The MongoCursor class
  • Types
    • MongoId — MongoId 类
    • MongoCode — The MongoCode class
    • MongoDate — The MongoDate class
    • MongoRegex — MongoRegex 类
    • MongoBinData — The MongoBinData class
    • MongoInt32 — MongoInt32 类
    • MongoInt64 — MongoInt64 类
    • MongoDBRef — MongoDBRef 类
    • MongoMinKey — The MongoMinKey class
    • MongoMaxKey — The MongoMaxKey class
    • MongoTimestamp — MongoTimestamp 类
  • GridFS Classes
    • MongoGridFS — The MongoGridFS class
    • MongoGridFSFile — The MongoGridFSFile class
    • MongoGridFSCursor — The MongoGridFSCursor class
  • Miscellaneous
    • MongoLog — The MongoLog class
    • MongoPool — The MongoPool class
    • Mongo — The Mongo class [deprecated]
  • Mongo 函数
    • bson_decode — 反序列化一个 BSON 对象为 PHP 数组
    • bson_encode — 序列化一个 PHP 变量为 BSON 字符串
  • Exceptions
    • MongoException — The MongoException class
    • MongoResultException — MongoResultException 类
    • MongoCursorException — The MongoCursorException class
    • MongoCursorTimeoutException — The MongoCursorTimeoutException class
    • MongoConnectionException — The MongoConnectionException class
    • MongoGridFSException — The MongoGridFSException class
    • MongoDuplicateKeyException — The MongoDuplicateKeyException class
    • MongoProtocolException — The MongoProtocolException class
    • MongoExecutionTimeoutException — The MongoExecutionTimeoutException class
    • MongoWriteConcernException — The MongoWriteConcernException class
  • 更新日志
maxdb_warning_count
安装／配置
针对各数据库系统对应的扩展


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
Mongo
需求
Mongo


安装

Warning

This extension is deprecated. Instead, the MongoDB extension should be used.

MongoDB 的 PHP 驱动程序可以工作在几乎任何系统上：Windows、Mac OS X、Unix 和 Linux；大端或小端字节序（little/big-endian）；32位和64位的机器；PHP 5.3-5.6(1.6之前的版本同时支持 PHP5.2)。

此 » PECL 扩展未与 PHP 捆绑。

  • 手动安装
  • 在 *NIX 上安装
  • 在 Windows 上安装
  • OS X
  • Gentoo
  • Red Hat
  • 第三方安装说明

手动安装

驱动开发人员和对最新 bug 修复感兴趣的人，可以从 » Github 上获取最新源码来编译驱动。 前往 Github 并点击 "download" 按钮。然后运行：

$ tar zxvf mongodb-mongodb-php-driver-<commit_id>.tar.gz
$ cd mongodb-mongodb-php-driver-<commit_id>
$ phpize
$ ./configure
$ make all
$ sudo make install

并按以下说明修改 php.ini：

  • 确保 extension_dir 变量指向了 mongo.so 的位置。 编译时会显示安装 PHP 驱动的位置，比如输出：

    Installing '/usr/lib/php/extensions/no-debug-non-zts-20060613/mongo.so'
    确保和运行的 PHP 是同一个扩展目录：
    $ php -i | grep extension_dir
  extension_dir => /usr/lib/php/extensions/no-debug-non-zts-20060613 =>
                   /usr/lib/php/extensions/no-debug-non-zts-20060613
    如果不一致，则需要修改 php.ini 里的 extension_dir，或者把 mongo.so 移过去。

  • 要在 PHP 启动的时候加载这个扩展，添加一行：

    extension=mongo.so

在 *NIX 上安装

执行:

$ sudo pecl install mongo

将以下内容添加到 php.ini 文件:

extension=mongo.so

如果 pecl 运行时超出了内存限制，请确认在 php.ini 中的 memory_limit 的设置至少有 128MB。

在 Windows 上安装

针对不同线程安全、VC版本的 PHP 发行版，可从 » PECL 获取到预编译的二进制文件。 解压，并把 php_mongo.dll 放到 PHP 扩展目录（默认是 "ext"）。

将以下内容添加到 php.ini 文件:

extension=php_mongo.dll

Note: 为 Windows 用户添加额外的依赖 DLL

为了使此扩展生效， DLL 文件必须能在 Windows 系统的 PATH 指示的路径下找到。如何操作的信息，请参见题为"如何在 Windows 中将 PHP 目录加到 PATH 中"的FAQ。虽然将 DLL 文件从 PHP 文件夹复制到 Windows 系统目录也行，但不建议这样做。 此扩展需要下列文件在 PATH 路径中： libsasl.dll

OS X

大部分情况下，从 pecl 安装最简单：

$ sudo pecl install mongo

如果用的是 » Homebrew，PHP 包含了驱动安装的方案。比如，安装 PHP 5.6 的驱动，可以使用以下命令：

$ brew install php56-mongo

如果使用的是 » XAMPP，请注意它有自己的 pecl 二进制文件和 php.ini 配置。 你可以通过以下命令安装驱动：

$ sudo /Applications/XAMPP/xamppfiles/bin/pecl install mongo

Note: 在 OS X 上编译时的 Xcode 依赖

在 OS X 上编译驱动需要 Xcode 开发工具，可以通过 xcode-select --install 安装。 如果命令无效，也许应该先安装 » Command Line Tools 包。

Gentoo

Gentoo 有一个 PHP 驱动的包，叫做 dev-php/pecl-mongo，可以通过以下命令安装：

$ sudo emerge -va dev-php5/mongo

如果你使用了 PECL，你可能得到 libtool 版本不正确的错误。 从源码编译，你需要运行 aclocal 和 autoconf。

$ phpize && aclocal && autoconf && ./configure && make && make install

Red Hat

同时包括 Fedora 和 CentOS。

这些系统上默认的 Apache 设置禁止请求产生网络连接，意味着当连接到数据库，驱动会得到一个 "Permission denied" 错误。当遇到这个问题，可以试试运行：

$ /usr/sbin/setsebool -P httpd_can_network_connect 1
然后重启 Apache。（在 SELinux 下也会产生这个问题。）

第三方安装说明

很多人撰写了安装 PHP 驱动的极好教程。

  • » 在 Mac OS X 上安装或重装 PHP

    Justin Hileman 撰写的文章详细描述了在 OS X 上使用 Homebrew 安装 PHP 和额外的扩展（extension）。 此文补充了早些时候此页上用 Homebrew 安装驱动的说明。

  • » Ubuntu 9.10 / Apache 2.2 下，附带 Xdebug, MongoDB 和 Lithium 的 PHP 5.3.1。

    Jon Adams 的视频录像演示了如何在 Ubuntu 9.1 的 Apache 下快速设置运行 PHP 5.3.1，Xdebug 和 MongoDB。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Mongo 配置选项
名字 | 默认 | 可修改范围 | 更新日志
mongo.allow_empty_keys | 0 | PHP_INI_ALL |
mongo.allow_persistent | 1 | PHP_INI_ALL | Removed in 1.2.0
mongo.chunk_size | 262144 | PHP_INI_ALL |
mongo.cmd | "$" | PHP_INI_ALL |
mongo.default_host | "localhost" | PHP_INI_ALL |
mongo.default_port | 27017 | PHP_INI_ALL |
mongo.is_master_interval | 15 | PHP_INI_ALL | Added in 1.2.10, before 1.3.0 the default value was 60.
mongo.long_as_object | 0 | PHP_INI_ALL |
mongo.native_long | 1 | PHP_INI_ALL | Before 1.5.0, the default value was 0.
mongo.ping_interval | 5 | PHP_INI_ALL | Added in 1.2.10
mongo.utf8 | 1 | PHP_INI_ALL |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

mongo.allow_empty_keys int

Added in version 1.0.11.

If empty strings ("") should be allowed as key names. By default, the driver will throw an exception if you attempt to pass the empty string as a key to the database. It is extremely easy to do this inavertently by using double quotes with $-operators, so it is recommended that you leave this setting as default. However, if you need to save keys that are empty strings, you can set this option to true and the driver will allow you to pass empty strings to the database.

mongo.allow_persistent int

If persistent connections are allowed. (Removed in 1.2.0 - all connections are now persistent).

mongo.chunk_size int

The number of bytes-per-chunk. Used in divvying up GridFS files. This number must be at least 100 less than 4 megabytes (max: 4194204) and it is recommended that it be less than that.

mongo.cmd string

A character to be used in place of $ in modifiers and comparisons.

As it is easy to forget to escape the "$", you can also choose your own special character to use instead of '$'. Choose a character that will not occur in your key names, e.g. ":":

mongo.cmd = ":"

Then, to do a comparison, for example:

<?php

$query = array( "i" => array( ":gt" => 20, ":lte" => 30 ) );

?>

You can also change it in your code using ini_set("mongo.cmd", ":"). Of course, you can also just use single quotes or backslash-escape the $.

mongo.default_host string

Default hostname when nothing is passed to the constructor.

mongo.default_port string

The default TCP port number to use when connecting to the database server if no other port is specified. The database's default is 27017.

mongo.is_master_interval int

Added in version 1.2.10.

For replicaset connections: The minimum interval with which the driver will send "isMaster" requests to the MongoDB server. If the value is lower, there will be more requests, but the driver finds faster whether the topology of the replicaset has been changed.

mongo.long_as_object int

Return a BSON_LONG as an instance of MongoInt64 (instead of a primitive type).

mongo.native_long int

The default behavior for this has been changed to TRUE in 1.5.0, so make sure to set this variable to the value you want (probably TRUE) so that the driver's behavior doesn't suddenly change when you upgrade.

On 64-bit platforms, the mongo.native_long setting allows for 64-bit integers to be stored in MongoDB. If it is not set, only 32-bits of the integer will be saved. The MongoDB data type that is used in this case is the BSON LONG, instead of the BSON INT that is used if this setting is turned off.

The setting also changes the way how BSON LONGs behave when they are read back from MongoDB. Without mongo.native_long enabled, the driver would convert every BSON LONG to a PHP double which can result in a loss of precision.

On 32-bit platforms, the mongo.native_long setting changes nothing for storing integers in MongoDB: the integer is stored as a BSON INT as before. However, when the setting is enabled and a BSON LONG is read from MongoDB a MongoCursorException is thrown alerting you that the data could not be read back without losing precision.

On 32-bit systems especially, it is recommended that you combine this with enabling mongo.long_as_object.

mongo.ping_interval int

Added in version 1.2.10.

For replicaset connections: The minimum interval with which the driver will send "ping" requests to the MongoDB server. If the value is lower, there will be more pings, but the driver finds faster whether a node is no longer reachable from the replicaset.

mongo.utf8 int

If an exception should be thrown for non-UTF8 strings. Until version 1.0.4, the PHP driver would ignore non-UTF8 strings, even though you're not supposed to insert them. As of 1.0.4, the driver throws a MongoException. To ease the transition for applications that insert non-UTF8 strings, you can turn this option off to emulate the old, non-exception-throwning behavior. This option will be eliminated and exceptions always thrown for non-UTF8 strings starting with version 1.1.0.

安装
手册
安装／配置


手册

Table of Contents

  • 教程
  • 读取首选项
  • Write Concerns
  • SQL 到 Mongo 的对应表
  • 链接服务器
  • Writes
  • Querying
  • Updates
  • Security
  • 故障排除
  • Running the Driver's Tests

这个手册详细的描述了如何使用 MongoDB，但是它主要覆盖了 PHP 驱动的使用。关于如何设计一种模式、术语的含义以及如何架设数据库服务器，请查看 » MongoDB 文档。

运行时配置
教程
Mongo


教程

Table of Contents

  • 连接数据库
  • 获取数据库实例
  • 获取集合实例
  • 插入一个文档
  • 使用 MongoCollection::findOne 方法
  • 添加多个文档
  • 计算文档数量
  • 使用游标获取所有文档
  • 设置查询条件
  • 获取一个子集
  • 建立索引

这个驱动是由 10gen 公司官方支持的 MongoDB 驱动

这是一个示例程序，它包含 连接数据库、插入文档、查询文档、遍历查询结果、断开链接。 实例中的每一步都有更详细的说明（注释）。

<?php

// 链接服务器
$m = new MongoClient();

// 选择一个数据库
$db = $m->comedy;

// 选择一个集合（ Mongo 的"集合"相当于关系型数据库的"表"）
$collection = $db->cartoons;

// 插入一个文档（译注："文档"相当于关系型数据库的"行"）
$document = array( "title" => "Calvin and Hobbes", "author" => "Bill Watterson" );
$collection->insert($document);

// 添加另一个文档，它的结构与之前的不同
$document = array( "title" => "XKCD", "online" => true );
$collection->insert($document);

// 查询集合中的所有文档
$cursor = $collection->find();

// 遍历查询结果
foreach ($cursor as $document) {
    echo $document["title"] . "\n";
}

?>

以上例程会输出：

Calvin and Hobbes
XKCD
手册
连接数据库
手册


连接数据库

使用下面列出的其中一种方法链接：

<?php
$connection = new MongoClient(); // 连接到 localhost:27017
$connection = new MongoClient( "mongodb://example.com" ); // 连接到远程服务器 （使用默认端口： 27017）
$connection = new MongoClient( "mongodb://example.com:65432" ); // 链接到远程服务器，使用自定义的端口
?>

你并不必须手动从服务器断开连接。这个驱动使用了持久连接，并会在下次试图链接到同一服务器时重用它。

参见

链接 中的相关章节。来获得更多链接方式的信息。

MongoClient 类和 MongoClient::__construct() 的文档中有对所有链接方式的详细说明， 并且带有一些例子。

教程
获取数据库实例
教程


获取数据库实例

要选择数据库，使用：

<?php
$connection = new MongoClient();
$db = $connection->dbname;
?>

这个数据库不需要提前建好，当你使用它的时候，就会自动建立。

要小心的是，你可能不小心建立了一个新的数据库，然后产生奇怪的错误。 （在下面的例子中，第二次使用"同一个"数据库时 name 被错误的拼写成 anme）

<?php
$connection = new MongoClient();

$db = $connection->mybiglongdbname;
// do some stuff

$db = $connection->mybiglongdbanme;
// now connected to a different database! 注意此时选择了另一个数据库！
?>

参见

MongoDB 类的文档中有对数据库对象的详细说明。

连接数据库
获取集合实例
教程


获取集合实例

获取一个集合的语法与获取数据库时相同：

<?php
$connection = new MongoClient();
$db = $connection->baz;

// select a collection:
$collection = $db->foobar;

// or, directly selecting a database and collection:
$collection = $connection->baz->foobar;
?>

一个集合相当于一张表。（如果你对关系型数据库比较熟悉）

参见

MongoCollection 类的文档中有对集合对象的详细说明。

获取数据库实例
插入一个文档
教程


插入一个文档

关联数组是能插入集合的最基本结构。 一般的"文档"结构可能是这样：

<?php
$doc = array(
    "name" => "MongoDB",
    "type" => "database",
    "count" => 1,
    "info" => (object)array( "x" => 203, "y" => 102),
    "versions" => array("0.9.7", "0.9.8", "0.9.9")
);
?>

注意：你可以嵌套数组、对象。驱动会把关联数组保存为 js对象，从0开始的连续数字下标数组保存为 js数组，不从0开始或有间断的（如0,1,4,5）数组保存为 js对象。 译注：即：只有从0开始的连续数字下标数组保存为数组，其他复杂类型均为对象。

要插入这个文档，使用 MongoCollection::insert() 方法：

<?php
$connection = new MongoClient();
$collection = $connection->database->collectionName;

$collection->insert( $doc );
?>

参见

MongoCollection::insert() 方法的文档中有对插入数据的详细说明。

获取集合实例
使用 MongoCollection::findOne 方法
教程


使用 MongoCollection::findOne 方法

插入一个文档
添加多个文档
教程
PHP Manual

使用 MongoCollection::findOne() 方法

要查看我们上一步插入到数据库的文档，可以简单的使用 MongoCollection::findOne() 方法从即合理获得一个简单的文档。 这个方法在只想查询一个结果的时候很有用。

<?php
$connection = new MongoClient();
$collection = $connection->database->collectionName;

$document = $collection->findOne();
var_dump( $document );
?>

以上例程会输出：

array(6) {
  ["_id"]=>
  object(MongoId)#8 (1) {
    ["$id"]=>
    string(24) "4e2995576803fab768000000"
  }
  ["name"]=>
  string(7) "MongoDB"
  ["type"]=>
  string(8) "database"
  ["count"]=>
  int(1)
  ["info"]=>
  array(2) {
    ["x"]=>
    int(203)
    ["y"]=>
    int(102)
  }
  ["versions"]=>
  array(3) {
    [0]=>
    string(5) "0.9.7"
    [1]=>
    string(5) "0.9.8"
    [2]=>
    string(5) "0.9.9"
  }
}

注意：有一个 _id 字段被自动添加到你的文档中了。 _id 字段就是集合的"主键"。 如果插入文档的时候你没有手动指定，驱动就会自动帮你添加一个。

如果你所插入的文档定义了 _id 字段，那么它在集合中必须是唯一的。 这是一个例子：

<?php
$connection = new MongoClient();
$db = $connection->database;

$db->foo->insert(array("_id" => 1));
// this will throw an exception
$db->foo->insert(array("_id" => 1));

// this is fine, as it is a different collection
$db->bar->insert(array("_id" => 1));
?>

默认设置时，驱动会在服务器通过了写入请求后返回（译注："通过"即如果不发生崩溃等情况，待插入的文档就一定会在随后被写入，这并不意味着数据已经写入磁盘）。你可以通过将第二个参数设为 array("w" => 0) 来改变默认行为。此时你的插入请求会立即返回，并且不会抛出 _id 重复的异常。

参见

MongoCollection::findOne() 方法的文档中有对查询的详细说明。

唯一ID的信息查看 MongoId

写入 部分更详细的说明了写操作, Write Concerns 章节深入解释了一些写操作的选项。

插入一个文档
添加多个文档
教程


添加多个文档

为了观察更多查询时值得关注的事情，我们来插入很多相似的文档到同一个集合里。这些文档的结构简单的类似于： array( "i" => value ); 。 通过一个循环，我们可以快速插入这些文档：

<?php
$connection = new MongoClient();
$collection = $connection->database->collectionName;

for ( $i = 0; $i < 100; $i++ )
{
    $collection->insert( array( 'i' => $i, "field{$i}" => $i * 2 ) );
}
?>

注意：我们可以把结构（键名）不同的数组插入同一个集合。这正是我们说 MongoDB 是一个"无结构"数据库的原因。在上面的例子中，每个文档都有一个 i 字段，但同时也有一个变化的 field + $i 字段。

使用 MongoCollection::findOne 方法
计算文档数量
教程


计算文档数量

现在我们的集合中有101个文档（100个循环插入的，加上一开始的一个），我们可以通过 MongoCollection::count() 方法检查它。

<?php
$connection = new MongoClient();
$collection = $connection->database->collectionName;

echo $collection->count();
?>
这会输出 101 。

添加多个文档
使用游标获取所有文档
教程


使用游标获取所有文档

要获得集合中的所有文档，我们需要 MongoCollection::find() 方法。 find() 方法返回一个 MongoCursor 对象，允许我们遍历整个结果集合来读取文档。要查询所有的文档并显示它们，使用：

<?php
$connection = new MongoClient();
$collection = $connection->database->collectionName;

$cursor = $collection->find();
foreach ( $cursor as $id => $value )
{
    echo "$id: ";
    var_dump( $value );
}
?>
这样会输出整个集合中的101个文档。 $id 是集合的 _id 字段（被转换成字符串）， $value 是文档本身。

参见

MongoCollection::find() 方法的文档中有关于查询的详细信息。

计算文档数量
设置查询条件
教程


设置查询条件

我们可以建立一个查询，然后传递给 MongoCollection::find() 方法来查询集合的一个子集。 例如：我们要查询 "i" 字段等于 71 的文档，我们可以使用：

<?php
$connection = new MongoClient();
$collection = $connection->database->collectionName;

$query = array( 'i' => 71 );
$cursor = $collection->find( $query );

while ( $cursor->hasNext() )
{
    var_dump( $cursor->getNext() );
}
?>

以上例程会输出：

array(2) {
  ["_id"]=>
  object(MongoId)#6 (0) {
  }
  ["i"]=>
  int(71)
  ["_ns"]=>
  "testCollection"
}
使用游标获取所有文档
获取一个子集
教程


获取一个子集

我们可以用查询条件从集合中获得多个文档。 例如：想要获得 "i" > 50 的文档，我们需要：

<?php
$connection = new MongoClient();
$collection = $connection->database->collectionName;

$query = array( "i" => array( '$gt' => 50 ) ); //note the single quotes around '$gt'
$cursor = $coll->find( $query );

while ( $cursor->hasNext() )
{
    var_dump( $cursor->getNext() );
}
?>

将会显示 "i" > 50 的文档。也可以获得一个范围内的文档，比如 20 < i <= 30：

<?php
$connection = new MongoClient();
$collection = $connection->database->collectionName;

$query = array( 'i' => array( '$gt' => 20, "\$lte" => 30 ) );
$cursor = $coll->find( $query );

while ( $cursor->hasNext() )
{
    var_dump( $cursor->getNext() );
}
?>

要注意美元字符始终都需要转义，或者可以用单引号代替。否则 PHP 会把它解析成对应的变量 $gt。

设置查询条件
建立索引
教程


建立索引

MongoDB 支持索引，并且很容易给集合添加索引。你需要指定字段名和排序方向： 升序（1）或降序（-1）。例如：

<?php
$connection = new MongoClient();
$collection = $connection->database->collectionName;

$coll->ensureIndex( array( "i" => 1 ) );  // create index on "i"
$coll->ensureIndex( array( "i" => -1, "j" => 1 ) );  // index on "i" descending, "j" ascending
?>

当你的数据量变得越来越大，创建索引对读取性能有巨大的提升。如果你不了解索引，可以参考 MongoCollection::ensureIndex() 文档和 MongoDB 的 » MongoDB indexing documentation。

获取一个子集
读取首选项
教程


读取首选项

MongoDB 2.2 和 1.3.0 版本的驱动增加了支持 » 读取首选项, 允许你指定怎样查询MongoDB复制集. 读取首选项可能被指定在连接上，或者库上，或者是集合上. 首选项规定默认要自上而下的继承 (举个例子 MongoCollection 将继承相应的 MongoDB 实例的读取首选项).

读取首选项是模式和标签集相结合的. 模式决定mongod的优先权, 而 » 标签集 为mongod实例合格指定了标准。只有那些ping附近的mongd实例时间在15毫秒内的Mongod实例是合格的。

读取首选项模式

Warning

所有的读取首选项都可能返回从节点比主节点延时的的数据，除非你选择MongoClient::RP_PRIMARY。如果你不使用MongoClient::RP_PRIMARY.模式，请确保你的应用可以容忍过时的数据。

  • MongoClient::RP_PRIMARY

    所有的读操作将使用主节点. 默认是这样，如果主节点不可用，读操作将产生一个异常。

    这个模式和使用标签集相冲突. 一个标签集指定为 MongoClient::RP_PRIMARY 将产生一个异常。

  • MongoClient::RP_PRIMARY_PREFERRED

    在大多数情况下, 读取会操作主节点. 但是，如果主节点不可用, 故障转移期间, 将从从节点读取数据。

    当读取首选项包含一个标签集, 客户端首先从主节点读取, 如果可用，去从节点匹配标签. 如果从节点没有匹配到标签, 读操作将产生一个异常。

    Warning

    2.2版本的mongos增加了完全支持读取首选项功能。当连接到mongos实例时, MongoClient::RP_PRIMARY_PREFERRED将发送查询到从节点.

  • MongoClient::RP_SECONDARY

    读操作仅仅发送给从节点. 如果没有从节点可用，将产生一个异常.

    大多数复制集至少有一个从节点, 但是可能没有可用的从节点。举个例子，有一主节点和一从节点, 还有一个仲裁节点，但是没有其它从节点了，从节点处于故障转移阶段或者不可用的时候。

    当读取首选项包括了标签集, 客户端试着找到匹配标签的从节点，直接读一个从节点。如果没有匹配标签的从节点，将导致一个异常

  • MongoClient::RP_SECONDARY_PREFERRED

    大多数情况下，从从节点读取，在只有主节点的情况下，读取主节点

    当读取首选项包括了标签集, 客户端试着找到匹配标签的从节点，直接读一个从节点。如果没有匹配标签的从节点，将导致一个异常.

  • MongoClient::RP_NEAREST

    驱动随机读取一个ping时间低于15毫秒的节点。使用 MongoClient::RP_NEAREST 模式的话，读取可能发生在主节点或者从节点。

    采用这个模式的话，读操作会发生在网络延时小的节点，不考虑读取的数据是过时的还是最新的。

    当读取首选项包括了标签集, 客户端试着找到匹配标签的节点，直接读一个最近组的随机节点。

    Note:

    对复制集的读操作都发生在符合特定读首选项的最近的节点。 MongoClient::RP_NEAREST 模式会获取主节点和从节点的状态，找到延时低的节点来读取。

标签集

» 标签集允许你自定义参数，把读操作指向特定的节点。标签集使得下面两种情况成为可能，读操作指向特定的数据节点或者指定的mongod实例给指定类型的操作使用，例如记录日志或者分析日志。

你可以指定标签集用下面的读取首选项模式：

  • MongoClient::RP_PRIMARY_PREFERRED

  • MongoClient::RP_SECONDARY

  • MongoClient::RP_SECONDARY_PREFERRED

  • MongoClient::RP_NEAREST

你不能指定标签集用 MongoClient::RP_PRIMARY 读取首选项模式。只有选择了一个从节点，标签才能用，除非是最近模式。

特殊的读取首选项

读取首选项可能指定连接URI给 MongoClient::__construct(), 使用查询串语法或者使用标签集的数组语法传递给核心类的设置方法。

当某个读取首选项使用了查询串， 标签集的 readPreferenceTags值应该是逗号分隔开的一串冒号连接的键值对。

Note:

每一个查询串定义的标签集将使用 readPreferenceTags 名称. 不像php接收URL查询串的方式，readPreferenceTags连续的值相互不覆盖。驱动将按照顺序获得标签集。

Warning

如果驱动找不到一个匹配的标签集，读取会失败！ 你有责任提供合适的回退，像空的 readPreferenceTags 值指定"没有标签集首选项".

Example #1 查询串语法的读取首选项URI链接

<?php
// Prefer the nearest server with no tag preference
$uri  = 'mongodb://rs1.example.com,rs2.example.com/';
$uri .= '?readPreference=nearest';
$m = new MongoClient($uri, array('replicaSet' => 'rs'));

// Pick the nearest server in the "east" data center
$uri  = 'mongodb://rs1.example.com,rs2.example.com/';
$uri .= '?readPreference=nearest';
$uri .= '&readPreferenceTags=dc:east';
$m = new MongoClient($uri, array('replicaSet' => 'rs'));

// Prefer the nearest server in the "east" data center also used for reporting,
// but fall back to a server in the "west" data center
$uri  = 'mongodb://rs1.example.com,rs2.example.com/';
$uri .= '?readPreference=nearest';
$uri .= '&readPreferenceTags=dc:east,use:reporting';
$uri .= '&readPreferenceTags=dc:west';
$m = new MongoClient($uri, array('replicaSet' => 'rs'));

// Prefer the nearest server in the "east" data center, then a server in the
// "west" data center, and finally fall back to no tag set preference
$uri  = 'mongodb://rs1.example.com,rs2.example.com/';
$uri .= '?readPreference=nearest';
$uri .= '&readPreferenceTags=dc:east';
$uri .= '&readPreferenceTags=dc:west';
$uri .= '&readPreferenceTags=';
$m = new MongoClient($uri, array('replicaSet' => 'rs'));
?>

Example #2 Setting read preferences with array syntax for tag sets

<?php

$m = new MongoClient('mongodb://rs1.example.com,rs2.example.com', array(
    'replicaSet' => 'rs',
));

// Prefer the nearest server with no tag preference
$m->setReadPreference(MongoClient::RP_NEAREST, array());

// Pick the nearest server in the "east" data center
$m->setReadPreference(MongoClient::RP_NEAREST, array(
    array('dc' => 'east'),
));

// Prefer the nearest server in the "east" data center also used for reporting,
// but fall back to a server in the "west" data center
$m->setReadPreference(MongoClient::RP_NEAREST, array(
    array('dc' => 'east', 'use' => 'reporting'),
    array('dc' => 'west'),
));

// Prefer the nearest server in the "east" data center, then a server in the
// "west" data center, and finally fall back to no tag set preference
$m->setReadPreference(MongoClient::RP_NEAREST, array(
    array('dc' => 'east'),
    array('dc' => 'west'),
    array(),
));
?>

建立索引
Write Concerns
手册


Write Concerns

MongoDB provides several different ways of selecting how durable a write to the database should be. These ways are called Write Concerns and span everything from completely ignoring all errors, to specifically targetting which servers are required to confirm the write before returning the operation.

When a write (such as with MongoCollection::insert(), MongoCollection::update(), and MongoCollection::remove()) is given a Write Concern option ("w") the driver will send the query to MongoDB and piggy back a getLastError command (GLE) with the Write Concern option at the same time. The server only returns when the Write Concern condition is verified to be fullfilled, or the query times out (controlled with the "wtimeout" option, 10000 milliseconds is the default).

Warning

Even though a getLastError command times out the data will most likely have been written to the primary server and will be replicated to all the secondaries once they have cought up.

The typical reasons for a timeout to happen is if you specify a Write Concern which requires confirmation from more servers then you currently have available.

When using acknowledged writes and the replica set has failed over, the driver will automatically disconnect from the primary, throw an exception, and attempt to find a new primary on the next operation (your application must decide whether or not to retry the operation on the new primary).

When using unacknowledged writes (w=0) and the replica set has failed over, there will be no way for the driver to know about the change so it will continue and silently fail to write.

The default Write Concern for the MongoClient is 1: acknowledge write operations.

Available Write Concerns
Write Concern | Meaning | Description
w=0 | Unacknowledged | A write will not be followed up with a GLE call, and therefore not checked ("fire and forget")
w=1 | Acknowledged | The write will be acknowledged by the server (the primary on replica set configuration)
w=N | Replica Set Acknowledged | The write will be acknowledged by the primary server, and replicated to N-1 secondaries.
w=majority | Majority Acknowledged | The write will be acknowledged by the majority of the replica set (including the primary). This is a special reserved string.
w=<tag set> | Replica Set Tag Set Acknowledged | The write will be acknowledged by members of the entire tag set
j=true | Journaled | The write will be acknowledged by primary and the journal flushed to disk

Using WriteConcerns

Each of the methods that causes writes (MongoCollection::insert(), MongoCollection::update(), MongoCollection::remove(), and MongoCollection::batchInsert()) allow an optional argument to send a set of options to the MongoDB server. With this option array you can set the WriteConcern as the following example illustrates:

Example #1 Passing a WriteConcern to a write operation

<?php
// Setting w=0 for insert:
$collection->insert($someDoc, array("w" => 0));

// Setting w=majority for update:
$collection->update($someDoc, $someUpdates, array("w" => "majority"));

// Setting w=5 and j=true for remove:
$collection->update($someDoc, array("w" => 5, "j" => true));

// Setting w="AllDCs" for batchInsert:
$collection->update(array($someDoc1, $someDoc2), array("w" => "AllDCs"));
?>

Besides setting WriteConcerns per operation as an option argument, it is also possible to set a default WriteConcern in different ways.

The first way is through the connection string. The connection string accepts the journal, w, and wTimeoutMS options:

Example #2 Connection string WriteConcerns

<?php
$m = new MongoClient("mongodb://localhost/?journal=true&w=majority&wTimeoutMS=20000");
?>

Since driver version 1.5 it is also possible to call MongoDB::setWriteConcern() and MongoCollection::setWriteConcern() to set a default WriteConcern for all operations created from that specific MongoDB or MongoCollection object:

Example #3 MongoDB::setWriteConcern and MongoCollection::setWriteConcern

<?php
$m = new MongoClient("mongodb://localhost/");
$d = $m->demoDb;
$c = $d->demoCollection;

// Set w=3 on the database object with a timeout of 25000ms
$d->setWriteConcern(3, 25000);

// Set w=majority on the collection object without changing the timeout
$c->setWriteConcern("majority");
?>

Unacknowledged Writes

By not requiring the server to acknowledge writes the writes can be performed extremely quickly, but you don't know whether or not they actually succeeded. Writes can fail for a number of reasons: if there are network problems, if a database server goes down, or if the write was simply invalid (e.g., writing to a system collection; or duplicate key errors).

While developing, you should always use acknowledged writes (to protect against inadvertent mistakes, such as syntax errors, invalid operators, duplicate key errors and so on). In production, unacknowledged writes can be used for "unimportant" data. Unimportant data varies on application, but it's generally automatically (instead of user generated) data, such as click tracking or GPS locations, where you can get thousands of records per second.

It is strongly recommended that you do an acknowledged write at the end of series of unacknowledged writes. Doing so will not incur in a too large performance penalty, but still allow you to catch any errors that may have occurred.

Example #4 Unacknowledged WriteConcern, followed with Acknowledged Write

<?php
$collection->insert($someDoc, array("w" => 0));
$collection->update($criteria, $newObj, array("w" => 0));
$collection->insert($somethingElse, array("w" => 0));
try {
    $collection->remove($something, array("w" => 1));
} catch(MongoCursorException $e) {
    /* Handle the exception.. */
    /* Here we should issue find() queries on the IDs generated for
    $somethingElse and $someDoc to verify they got written to the database and
    attempt to figureout where in the chain something happened. */
}
?>

If the last write throws an exception, you know that there's a problem with your database.

Acknowledged Writes

These type of write operations will make sure that the database has accepted the write operation before returning success. If the write failed, it will throw a MongoCursorException with an explanation of the failure. The MongoClient default behaviour is to acknowledge the write (w=1).

It is possible to specify how many members of an replica set have to acknowledge the write (i.e. have it replicated) before the write is deemed acknowledged and the operation returns.

Example #5 Acknowledged Writes

<?php
// Force acknowledgement from the primary only
$collection->insert($doc, array("w" => 1));

// Force acknowledgement from the primary, and one other member of the
// replica set
$collection->insert($doc, array("w" => 2));

// Force acknowledgement from the primary, and six other members of the
// replica set (you probably never should do this):
$collection->insert($doc, array("w" => 7));
?>

Keep in mind to select your Write Concern carefully. If you have a replica set with 5 members, and you select Write Concern of 4 you will risk the write blocking forever when one member of the replica set goes down for maintenance or a temporary network outage happens.

Warning

Passing in a string value for Write Concern has a specific meaning (Replica Set Tag Set Acknowledged). Please be careful of NOT using string values for numbers (i.e. array("w" => "1")) as it will be treated as a tag set name.

Majority Acknowledged Writes

Using the special majority Write Concern option is the recommended way for writes that are required to survive the apocalypse, as it will ensure the majority of your replica set will have the write and will therefore be guaranteed to survive all usual suspect outage scenarios.

Example #6 Majority Acknowledged Write

<?php
$collection->insert($someDoc, array("w" => "majority"));
?>

Journaled Writes

When connecting to a replica set the default Write Concern is only to have the primary server acknowledge the write. There is however a 100ms window until the write gets journaled and flushed to disk. It is possible to force the write to be journaled before acknowledging the write by setting the j option:

Example #7 Acknowledged and Journaled Write

Forcing journal flush

<?php
$options = array(
    "w" => 1,
    "j" => true,
);
try {
    $collection->insert($document, $options);
} catch(MongoCursorException $e) {
    /* handle the exception */
}
?>

参见

  • » MongoDB WriteConcern docs

更新日志

版本 | 说明
1.3.0 | MongoClient was introduced and defaults to acknowledged writes. The deprecated Mongo defaults to unacknowledged writes.
1.3.0 | The "safe" write option has been deprecated and is not available with the new MongoClient class. Use the "w" option instead.
读取首选项
SQL 到 Mongo 的对应表
手册


SQL 到 Mongo 的对应表

这个列表是 PHP 版本的 » SQL to Mongo 对应表（在MongoDB官方手册中有更加通用的版本）。

SQL查询语句 | Mongo查询语句
CREATE TABLE USERS (a Number, b Number) | 隐式的创建，或 MongoDB::createCollection().
INSERT INTO USERS VALUES(1,1) | $db->users->insert(array("a" => 1, "b" => 1));
SELECT a,b FROM users | $db->users->find(array(), array("a" => 1, "b" => 1));
SELECT * FROM users WHERE age=33 | $db->users->find(array("age" => 33));
SELECT a,b FROM users WHERE age=33 | $db->users->find(array("age" => 33), array("a" => 1, "b" => 1));
SELECT a,b FROM users WHERE age=33 ORDER BY name | $db->users->find(array("age" => 33), array("a" => 1, "b" => 1))->sort(array("name" => 1));
SELECT * FROM users WHERE age>33 | $db->users->find(array("age" => array('$gt' => 33)));
SELECT * FROM users WHERE age<33 | $db->users->find(array("age" => array('$lt' => 33)));
SELECT * FROM users WHERE name LIKE "%Joe%" | $db->users->find(array("name" => new MongoRegex("/Joe/")));
SELECT * FROM users WHERE name LIKE "Joe%" | $db->users->find(array("name" => new MongoRegex("/^Joe/")));
SELECT * FROM users WHERE age>33 AND age<=40 | $db->users->find(array("age" => array('$gt' => 33, '$lte' => 40)));
SELECT * FROM users ORDER BY name DESC | $db->users->find()->sort(array("name" => -1));
CREATE INDEX myindexname ON users(name) | $db->users->ensureIndex(array("name" => 1));
CREATE INDEX myindexname ON users(name,ts DESC) | $db->users->ensureIndex(array("name" => 1, "ts" => -1));
SELECT * FROM users WHERE a=1 and b='q' | $db->users->find(array("a" => 1, "b" => "q"));
SELECT * FROM users LIMIT 20, 10 | $db->users->find()->limit(10)->skip(20);
SELECT * FROM users WHERE a=1 or b=2 | $db->users->find(array('$or' => array(array("a" => 1), array("b" => 2))));
SELECT * FROM users LIMIT 1 | $db->users->find()->limit(1);
EXPLAIN SELECT * FROM users WHERE z=3 | $db->users->find(array("z" => 3))->explain()
SELECT DISTINCT last_name FROM users | $db->command(array("distinct" => "users", "key" => "last_name"));
SELECT COUNT(*y) FROM users | $db->users->count();
SELECT COUNT(*y) FROM users where AGE > 30 | $db->users->find(array("age" => array('$gt' => 30)))->count();
SELECT COUNT(AGE) from users | $db->users->find(array("age" => array('$exists' => true)))->count();
UPDATE users SET a=1 WHERE b='q' | $db->users->update(array("b" => "q"), array('$set' => array("a" => 1)));
UPDATE users SET a=a+2 WHERE b='q' | $db->users->update(array("b" => "q"), array('$inc' => array("a" => 2)));
DELETE FROM users WHERE z="abc" | $db->users->remove(array("z" => "abc"));

Write Concerns
链接服务器
手册


链接服务器

Table of Contents

  • 认证
  • 复制集合
  • Sharding
  • Unix Domain Socket支持
  • Connection Pooling (version 1.2.0-1.2.12 *only*)
  • Persistent Connections (version up to 1.1.4 *only*)

链接到 mongo 服务器非常简单，只需要 new MongoClient，但是还可以改变更多的选项设置。 MongoClient::__construct() 方法的文档中包括了所有的 API 参数。这个页面给出了一些详细说明，和一些实用的案例。

SQL 到 Mongo 的对应表
认证
手册


认证

如果 MongoDB 服务器启动时使用了 --auth 或 --keyFile 参数，你就必须在进行任何操作前进行认证。 你可以在连接时进行认证。方法是在链接字符串中指定用户名密码，或者在 MongoClient::__construct() 构造函数中指定 "username" 和 "password"。

Example #1 针对"admin"数据库的认证

<?php
// Specifying the username and password in the connection URI (preferred)
$m = new MongoClient("mongodb://${username}:${password}@localhost");

// Specifying the username and password via the options array (alternative)
$m = new MongoClient("mongodb://localhost", array("username" => $username, "password" => $password));
?>

默认状态下，驱动会针对 admin 数据库进行认证。认证也可以对其他数据库进行。方法是在连接字符串中指定数据库名，或者 MongoClient::__construct() 构造函数中指定 "db"。

Example #2 针对一般数据库的认证

<?php
// Specifying the authentication database in the connection URI (preferred)
$m = new MongoClient("mongodb://${username}:${password}@localhost/myDatabase");

// Specifying the authentication database via the options array (alternative)
$m = new MongoClient("mongodb://${username}:${password}@localhost", array("db" => "myDatabase"));
?>

如果链接中断，驱动会重新尝试链接并会自动重新认证。

链接服务器
复制集合
链接服务器


复制集合

要链接到一个复制，需要指定复制中的一个或多个成员，并使用 "replicaSet" 选项指定复制的名字。多个服务器用逗号分割。

Example #1 链接到一个复制

<?php
// Using multiple servers as the seed list (prefered)
$m = new MongoClient("mongodb://rs1.example.com:27017,rs2.example.com:27017/?replicaSet=myReplSetName"));

// Using one server as the seed list
$m = new MongoClient("mongodb://rs1.example.com:27017", array("replicaSet" => "myReplSetName"));

// Using multiple servers as the seed list
$m = new MongoClient("mongodb://rs1.example.com:27017,rs2.example.com:27017", array("replicaSet" => "myReplSetName"));
?>

驱动会查询数据库服务器列表，然后找出主服务器。如果可以成功的链接到指定的服务器至少一个，并且可以找到主服务器，链接就会成功。如果它无法链接指定的任何一个服务器，或者找不到主服务器，会抛出一个 MongoConnectionException 类型的异常

Tip

你应该始终指定多个复制中的服务器。为了达到最大的可用性，你指定的服务器列表应该包含每一个数据中心的服务器至少一台。

如果主服务器变为不可用，会有一台次要服务器通过投票算法自动提升为主服务器（除非"投票"无法选出主服务器）。在一段时间里 （» 20-60 秒），链接无法进行写操作，此时写入会导致一个异常。 到次要服务器的链接仍然可以提供读取功能。

Note:

默认的 读取偏好 是只从主服务器读取。在自动选择新的主服务器的时间里，读取操作也会失败。

对于要求很高的读取可用性的应用，推荐使用 MongoClient::RP_PRIMARY_PREFERRED 读取偏好来确保主服务器出现问题的时候能正确的从次要服务器中读取。

当新的主服务器被选出后，尝试读写操作时，驱动会检测新的主服务器。然后链接到它，继续提供正常的功能。

次要服务器的健康状态每5秒（可以通过 mongo.ping_interval 调整），或5秒后的下一个操作执行时检查一次。驱动会在连接服务器出现错误时重新检查配置。

复制集会每60秒（可以通过 mongo.is_master_interval 调整），或在w=1的写入操作发生错误的时候检查故障并尝试恢复。

Caution

次要服务器中的操作相比主服务器有一定延迟，因此如果使用 MongoClient::RP_PRIMARY 之外的读取偏好，你的程序就必须能够正确处理过时的数据。

要了解更多关于复制集的信息，参考 » core documentation.

参见

  • 读取首选项
  • Write Concerns

更新日志

版本 | 说明
1.0.9 | 添加了复制集支持，和自动错误恢复。
认证
Sharding
链接服务器


Sharding

To connect to a shard cluster, specify the address of one or more mongos instances in the connection string. Multiple servers may be delimited by a comma.

<?php
// Using one server as the seed list
$m = new MongoClient("mongodb://mongos1.example.com:27017");

// Using multiple servers as the seed list
$m = new MongoClient("mongodb://mongos1.example.com:27017,mongos2.example.com:27017"));
?>

Regardless of whether each shard is a stand-alone mongod server or a full replica set, the driver's connection process is the same. All database communication will be routed through mongos.

For more information on sharding with MongoDB, see the » sharding documentation.

复制集合
Unix Domain Socket支持
链接服务器


Unix Domain Socket支持

MongoDB 服务程序内置支持通过 Unix Sockets 链接，并且会在启动时建立socket，默认位置在 /tmp/mongodb-<port>.sock..

要通过socket链接，需要在连接字符串中指定socket路径，如：

<?php
$m = new MongoClient("mongodb:///tmp/mongo-27017.sock");
?>

如果要在通过socket的链接中对数据库进行认证（如上文所述），你需要指定一个端口号 0 让链接字符串解析时可以找到 socket路径 的结尾。另外，你可以在链接的时候使用options参数。

<?php
$m = new MongoClient("mongodb://username:password@/tmp/mongo-27017.sock:0/foo");
?>

更新日志

版本 | 说明
1.0.9 | 添加 Unix Sockets 的支持。
Sharding
Connection Pooling (version 1.2.0-1.2.12 *only*)
链接服务器


Connection Pooling (version 1.2.0-1.2.12 *only*)

Note:

This section is no longer relevant as of the 1.3.0 release of the driver and only serves as a historical information on how the pooling used to work.

The latest versions of the driver have no concept of pooling anymore and will maintain only one connection per process, for each connection type (ReplicaSet/standalone/mongos), for each credentials combination.

Creating connections is one of the most heavyweight things that the driver does. It can take hundreds of milliseconds to set up a connection correctly, even on a fast network. Thus, the driver tries to minimize the number of new connections created by reusing connections from a pool.

When a user creates a new instance of MongoClient, all necessary connections will be taken from their pools (replica sets may require multiple connections, one for each member of the set). When the MongoClient instance goes out of scope, the connections will be returned to the pool. When the PHP process exits, all connections in the pools will be closed.

"Why do I have so many open connections?"

Connection pools can generate a large number of connections. This is expected and, using a little arithmetic, you can figure out how many connections will be created. There are three factors in determining the total number of connections:

  • connections_per_pool

    Each connection pool will create, by default, an unlimited number of connections. One might assume that this is a problem: if it can create an unlimited number of connections, couldn't it create thousands and the server would run out of file descriptors? In practice, this is unlikely, as unused connections are returned to the pool to be used later, so future connections will use the same connection instead of creating a new one. Unless you create thousands of connections at once without letting any go out of scope, the number of connections open should stay at a reasonable number.

    You can see how many connections you have in a pool using the MongoPool::info() function. Add up the "in use" and "in pool" fields for a given server. That is the total number of connections for that pool.

  • pools_per_process

    Each MongoDB server address you're connecting to gets its own connection pool. For example, if your local hostname is "example.net", connecting to "example.net:27017", "localhost:27017", and "/tmp/mongodb-27017.sock" will create three connection pools. You can see how many connection pools you have open using MongoPool::info().

  • processes

    Each PHP process has a separate set of pools. PHP-FPM and Apache generally create between 6 and a couple of dozen PHP worker children. Check your settings to see what the max number of PHP processes is that can be spawned.

    If you are using PHP-FPM, estimating the number of connections can be tricky because it will spawn more PHP-FPM workers under heavy load. To be on the safe side, look at the max_children parameter or add up spare_servers + start_servers (choose whichever number is higher). That will indicate how many PHP processes (i.e. sets of pools) you should plan for.

The three variables above can be multiplied together to give the max number of connections expected: connections_per_pool * pools_per_process * processes. Note that connections_per_pool can be different for different pools, so connections_per_pool should be the max.

For example, suppose we're getting 30 connections per pool, 10 pools per PHP process, and 128 PHP processes. Then we can expect 38400 connections from this machine. Thus, we should set this machine's file descriptor limit to be high enough to handle all of these connections or it may run out of file descriptors.

See MongoPool for more information on connection pooling.

Unix Domain Socket支持
Persistent Connections (version up to 1.1.4 *only*)
链接服务器


Persistent Connections (version up to 1.1.4 *only*)

Note:

This section is not relevant for 1.2.0+. In 1.2.0+, connections are always persistent and managed automatically by the driver. If you are using a 1.2.x release (but not 1.3.x or later), see MongoPool for more information on pooling.

Creating new connection to the database is very slow. To minimize the number of connections that you need to make, you can use persistent connections. A persistent connection is saved by PHP, so you can use the same connection for multiple requests.

For example, this simple program connects to the database 1000 times:

<?php

for ($i=0; $i<1000; $i++) {
  $m = new MongoClient();
}

?>

It takes approximately 18 seconds to execute. If we change it to use a persistent connection:

<?php

for ($i=0; $i<1000; $i++) {
  $m = new MongoClient("localhost:27017", array("persist" => "x"));
}

?>

...it takes less than .02 seconds to execute, as it only makes one database connection.

Persistent connections need an identifier string (which is "x" in the above example) to uniquely identify them. For a persistent connection to be used, the hostname, port, persist string, and authentication credentials (username, password and database, if given) must match an existing persistent connection. Otherwise, a new connection will be created with this identifying information.

Persistent connections are highly recommended and should always be used in production unless there is a compelling reason not to. Most of the reasons that they are not recommended for relational databases are irrelevant to MongoDB.

Connection Pooling (version 1.2.0-1.2.12 *only*)
Writes
链接服务器


Writes

Updating Nested Objects

Suppose we wish to change the name of a comment's author in this document:

{
    "_id" : ObjectId("4b06c282edb87a281e09dad9"),
    "content" : "this is a blog post.",
    "comments" :
    [
        {
            "author" : "Mike",
            "comment" : "I think that blah blah blah...",
        },
        {
            "author" : "John",
            "comment" : "I disagree."
        }
    ]
}
In order to change an inner field, we use $set (so that all of the other fields are not removed!) with the index of comment to change:
<?php

$blog->update($criteria, array('$set' => array("comments.1" => array("author" => "Jim"))));

?>

The Positional Operator

The positional operator $ is useful for updating objects that are in arrays. In the example above, for instance, suppose that we did not know the index of the comment that we needed to change, merely that we needed to change "John" to "Jim". We can use $ to do so.

<?php

$blog->update(
    array('comments.author' => 'John'),
    array('$set' => array('comments.$.author' => 'Jim')));

?>
Persistent Connections (version up to 1.1.4 *only*)
Querying
手册


Querying

Distributing queries to secondaries

All queries (reads and writes) are only sent to the primary member of a replica set by default. This is however easily configurable by using the Read Preferences which allow you to set some generic read preferences (such as allowing secondary reads of the nearest server), and also provide ways to specifically target a server in a specific country, datacenter, or even hardware, by the use of replica set tag sets.

Read preferences can be configured at every level of the driver:

  • As a query parameter or option to MongoClient::__construct()
  • Specifically by calling MongoClient::setReadPreference()
  • At the database level with MongoDB::setReadPreference()
  • At the collection level with MongoCollection::setReadPreference()
  • At the cursor level with MongoCursor::setReadPreference() or MongoCommandCursor::setReadPreference()
Each class inherits its read preference setting from the "parent" context.

Example #1 Inheriting read preferences from the database level down to the cursor

<?php
$db->setReadPreference(MongoClient::RP_SECONDARY_PREFERRED);
$c = $db->myCollection;

$cursor = $c->find();
?>

In this example, the the query will be executed against a secondary. The collection inherits MongoClient::RP_SECONDARY_PREFERRED from the database and the cursor inherits it from the collection.

How secondaries are chosen

Each instance of MongoClient chooses its own secondary using the available secondary with the lowest ping time. So, if we had a PHP client in Europe and one in Australia and we had one secondary in each of these data centers, we could do:

<?php
$options = array("replicaSet" => "setName", "readPreference" => MongoClient::RP_SECONDARY_PREFERRED);

// on the Australian client
$m = new MongoClient("mongodb://primary,australianhost.secondary,europeanhost.secondary", $options);
$cursor = $m->foo->bar->find();
$cursor->getNext();
echo "Reading from: ", $cursor->info()["server"], "\n";

// on the European client
$m = new MongoClient("mongodb://primary,australianhost.secondary,europeanhost.secondary", $options);
$cursor = $m->foo->bar->find();
$cursor->getNext();
echo "Reading from: ", $cursor->info()["server"], "\n";
?>

以上例程的输出类似于：

Reading from: australianHost
Reading from: europeanHost

Note that we have to do a query before a secondary is chosen: secondaries are chosen lazily by the driver, and for each query separately.

You can see what the driver thinks is the current status of the set members by running MongoClient::getHosts() or MongoClient::getConnections().

If no secondary is readable, the driver will send reads to the primary as we specified MongoClient::RP_SECONDARY_PREFERRED which will fallback to execute a query on a primary if no secondaries are available. A server is considered readable if its state is 2 (SECONDARY) and its health is 1. You can check this with MongoClient::getHosts() and MongoClient::getConnections().

Random notes

Writes are always sent to the primary—and by default all reads are sent to the primary too.

Querying by _id

Every object inserted is automatically assigned a unique _id field, which is often a useful field to use in queries. This works similarly to "get last insert ID" functionality, except that the _id is chosen by the client.

Suppose that we wish to find the document we just inserted. Inserting adds an _id field to the document, so we can query by that:

<?php
$person = array("name" => "joe");

$people->insert($person);

// now $joe has an _id field
$joe = $people->findOne(array("_id" => $person['_id']));
?>

Unless the user has specified otherwise, the _id field is a MongoId. The most common mistake is attempting to use a string to match a MongoId. Keep in mind that these are two different datatypes, and will not match each other in the same way that the string "array()" is not the same as an empty array. For example:

<?php
$person = array("name" => "joe");

$people->insert($person);

// convert the _id to a string
$pid = $person['_id'] . "";

// FAILS - $pid is a string, not a MongoId
$joe = $people->findOne(array("_id" => $pid));
?>

Arrays

Arrays are special in a couple ways. First, there are two types that MongoDB uses: "normal" arrays and associative arrays. Associative arrays can have any mix of key types and values. "Normal" arrays are defined as arrays with ascending numeric indexes starting at 0 and increasing by one for each element. These are, typically, just your usual PHP array.

For instance, if you want to save a list of awards in a document, you could say:

<?php

$collection->save(array("awards" => array("gold", "silver", "bronze")));

?>

Queries can reach into arrays to search for elements. Suppose that we wish to find all documents with an array element of a given value. For example, documents with a "gold" award, such as:

{ "_id" : ObjectId("4b06c282edb87a281e09dad9"), "awards" : ["gold", "silver", "bronze"]}

This can be done with a simple query, ignoring the fact that "awards" is an array:

<?php

  $cursor = $collection->find(array("awards" => "gold"));

?>

Suppose we are querying for a more complex object, if each element of the array were an object itself, such as:

{
     "_id" : ObjectId("4b06c282edb87a281e09dad9"),
     "awards" :
     [
        {
            "first place" : "gold"
        },
        {
            "second place" : "silver"
        },
        {
            "third place" :  "bronze"
        }
     ]
}

Still ignoring that this is an array, we can use dot notation to query the subobject:

<?php

$cursor = $collection->find(array("awards.first place" => "gold"));

?>

Notice that it doesn't matter that there is a space in the field name (although it may be best not to use spaces, just to make things more readable).

You can also use an array to query for a number of possible values. For instance, if we were looking for documents "gold" or "copper", we could do:

<?php

$cursor = $collection->find(array("awards" => array('$in' => array("gold", "copper"))));

?>

更新日志

版本 | 说明
1.3.0 | Introduced the Read Preferences framework to allow more fine grained control over secondary reads.
1.3.0 | Deprecated slaveOkay usage, the alternative is Read Preferences.
1.1.0 | Introduced the possiblity of routing reads to secondaries of replica set members using Mongo::setSlaveOkay()
Writes
Updates
手册


Updates

Updates can be one of the most complicated operation available with MongoDB. They combine a query with an action, modifying documents that match the criteria. They are also extremely powerful, allowing you to change documents quickly and replace them altogether. They are done in-place (when possible) with little overhead.

Modifying vs. replacing documents

There are two types of updates you can use: modifying updates and replacing updates. Modifying updates contain $-operators and change fields in a document: they might increment counters, push new elements onto an array, or change the type of a field.

For example, a modifying update could add a new field to a document.

<?php
/** suppose documents look like:
 * {"username" : "...", "password" : "...", "email" : "..."}
 */
$coll->update(array("username" => "joe"), array('$set' => array("twitter" => "@joe4153")));

/** now the document will look like:
 * {"username" : "joe", "password" : "...", "email" : "...", "twitter" : "@joe4153"}
 */
?>

Replacing updates replace the entire matching document with a new document. They are generally not as efficient as using $-modifiers, but can be very usefully for complex operations or updates that can't be expressed in terms of $-operators.

For example, a replacing update can completely change the structure of a document.

<?php
/** suppose documents look like:
 * {"username" : "...", "password" : "...", "email" : "..."}
 */
$coll->update(array("username" => "joe"), array("userId" => 12345, "info" => array(
    "name" => "joe", "twitter" => "@joe4153", "email" => "..."), "likes" => array()));

/** now the document will look like:
 * {
 *     "userId" : 12345,
 *     "info" : {
 *         "name" : "joe",
 *         "twitter" : "@joe4153",
 *         "email" : "..."
 *     },
 *     "likes" : []
 * }
 */
?>

Updating Nested Objects

Suppose we wish to change the name of a comment's author in this document:

{
    "_id" : ObjectId("4b06c282edb87a281e09dad9"),
    "content" : "this is a blog post.",
    "comments" :
    [
        {
            "author" : "Mike",
            "comment" : "I think that blah blah blah...",
        },
        {
            "author" : "John",
            "comment" : "I disagree."
        }
    ]
}
In order to change an inner field, we use $set (so that all of the other fields are not removed!) with the index of comment to change:
<?php

$blog->update($criteria, array('$set' => array("comments.1" => array("author" => "Jim"))));

?>

The Positional Operator

The positional operator $ is useful for updating objects that are in arrays. In the example above, for instance, suppose that we did not know the index of the comment that we needed to change, merely that we needed to change "John" to "Jim". We can use $ to do so.

<?php

$blog->update(
    array("comments.author" => "John"),
    array('$set' => array('comments.$.author' => "Jim")));

?>
Querying
Security
手册


Security

Request Injection Attacks

If you are passing $_GET (or $_POST) parameters to your queries, make sure that they are cast to strings first. Users can insert associative arrays in GET and POST requests, which could then become unwanted $-queries.

A fairly innocuous example: suppose you are looking up a user's information with the request http://www.example.com?username=bob. Your application does the query $collection->find(array("username" => $_GET['username'])).

Someone could subvert this by getting http://www.example.com?username[$ne]=foo, which PHP will magically turn into an associative array, turning your query into $collection->find(array("username" => array('$ne' => "foo"))), which will return all users not named "foo" (all of your users, probably).

This is a fairly easy attack to defend against: make sure $_GET and $_POST parameters are the type you expect before you send them to the database (cast them to strings, in this case).

Note that this type of attack can be used with any databases interation that locates a document, including updates, upserts, find-and-modifies, and removes.

Thanks to » Phil for pointing this out.

See » the main documentation for more information about SQL-injection-like issues with MongoDB.

Script Injection Attacks

If you are using JavaScript, make sure that any variables that cross the PHP- to-JavaScript boundry are passed in the scope field of MongoCode, not interpolated into the JavaScript string. This can come up when using MongoDB::execute(), $where clauses, MapReduces, group-bys, and any other time you may pass JavaScript into the database.

Note:

MapReduce ignore the scope field of MongoCode, but there is a scope option on the command that can be used instead.

For example, suppose we have some JavaScript to greet a user in the database logs. We could do:

<?php

// don't do this!

$username = $_POST['username'];
$db->execute("print('Hello, $username!');");

?>

However, what if a malicious user passes in some JavaScript?

<?php

// don't do this!

// $username is set to "'); db.users.drop(); print('"
$db->execute("print('Hello, $username!');");

?>

Now MongoDB executes the JavaScript string "print('Hello, '); db.users.drop(); print('!');". This attack is easy to avoid: use scope to pass variables from PHP to JavaScript:

<?php

$scope = array("user" => $username);
$db->execute(new MongoCode("print('Hello, '+user+'!');", $scope));

?>

This adds a variable user to the JavaScript scope. Now if someone tries to send malicious code, MongoDB will harmlessly print Hello, '); db.dropDatabase(); print('!.

Using scope helps prevent malicious input from being executed by the database. However, you must make sure that your code does not turn around and execute the input anyway! For example, never use the JavaScript eval function on user input:

<?php

// don't do this!

// $jsShellInput is "db.users.drop();"
$scope = array("input" => $jsShellInput);
$db->execute(new MongoCode("eval(input);", $scope));

?>

Always use scope and never allow the database to execute user input as code.

Updates
故障排除
手册


故障排除

如果你有问题，这里有一些资源可以访问。

  • IRC

    MongoDB 官方的 IRC 频道是 irc.freenode.net/#mongodb 。 这是所有方式中可以最快获得帮助的地方。

  • 邮件列表

    » MongoDB's mailing list 是提问的好地方（通常回复会比较迅速）。

  • 错误追踪

    发现了BUG，希望在 MongoDB 中添加新的功能，有疑问？可以在 » PHP driver's bug tracker 中创建。

你可以让驱动把所有类型的错误记录为 E_NOTICE 级别的PHP错误。查看 MongoLog 实例。

Security
Running the Driver's Tests
手册


Running the Driver's Tests

The PECL package does not come with the tests, but they are available at » Github.

.phpt Tests

.phpt tests are the standard way of testing PHP extensions. After compiling the MongoDB driver with "make" you can then issue "make test" to run the tests. These tests require MongoDB to be working, and hence, you need to configure the test suite itself.

There is more information on running the tests in the contributing guidelines on » GitHub.

Reporting Errors

Please report any failures or errors in the » bugtracker. There may be skipped tests, these are normal and can be ignored.

New tests are always welcome! Please feel free to contribute new tests of any type testing any functionality.

故障排除
核心类
手册


核心类

Table of Contents

  • MongoClient
  • MongoDB
  • MongoCollection
  • MongoCursor

核心类是该驱动最重要的部分。

Running the Driver's Tests
MongoClient
Mongo


MongoClient 类

(PECL mongo >=1.3.0)

简介

PHP 和 MongoDB 的连接管理器。

这个类用于创建和管理连接。典型的用法：

Example #1 MongoClient 基本用法

<?php

$m = new MongoClient(); // 连接
$db = $m->foo; // 获取名称为 "foo" 的数据库

?>

关于创建连接的更多信息，参见 MongoClient::__construct() 和 connecting 的章节。

类摘要

MongoClient {
/* 常量 */
const string VERSION ;
const string DEFAULT_HOST = "localhost" ;
const int DEFAULT_PORT = 27017 ;
const string RP_PRIMARY = "primary" ;
const string RP_PRIMARY_PREFERRED = "primaryPreferred" ;
const string RP_SECONDARY = "secondary" ;
const string RP_SECONDARY_PREFERRED = "secondaryPreferred" ;
const string RP_NEAREST = "nearest" ;
/* 属性 */
public boolean $connected = FALSE ;
public string $status = NULL ;
protected string $server = NULL ;
protected boolean $persistent = NULL ;
/* 方法 */
public __construct ([ string $server = "mongodb://localhost:27017" [, array $options = array("connect" => TRUE) ]] )
public bool close ([ boolean|string $connection ] )
public bool connect ( void )
public array dropDB ( mixed $db )
public MongoDB __get ( string $dbname )
public static array getConnections ( void )
public array getHosts ( void )
public array getReadPreference ( void )
public array getWriteConcern ( void )
public bool killCursor ( string $server_hash , int|MongoInt64 $id )
public array listDBs ( void )
public MongoCollection selectCollection ( string $db , string $collection )
public MongoDB selectDB ( string $name )
public bool setReadPreference ( string $read_preference [, array $tags ] )
public bool setWriteConcern ( mixed $w [, int $wtimeout ] )
public string __toString ( void )
}

预定义常量

MongoClient 常量

MongoClient::VERSION
PHP 驱动版本。有可能附加 "dev"，"+" 或 "-" 如果是在两个版本之间。
MongoClient::DEFAULT_HOST
"localhost"
如果没有指定主机，默认连接该主机。
MongoClient::DEFAULT_PORT
27017
如果没有指定端口，默认连接该端口。
MongoClient::RP_PRIMARY
"primary"
副本集活跃节点的读取选项。
MongoClient::RP_PRIMARY_PREFERRED
"primaryPreferred"
副本集活跃节点的读取选项。
MongoClient::RP_SECONDARY
"secondary"
副本集备份节点的读取选项。
MongoClient::RP_SECONDARY_PREFERRED
"secondaryPreferred"
副本集备份节点的读取选项。
MongoClient::RP_NEAREST
"nearest"
副本集最近节点的读取选项。

字段属性

connected
如果我们有一个打开的、基于读取选项和标记集（对于集群连接）的数据库连接，将会被设置为 TRUE，否则是 FALSE。 这个属性不考虑账户是否已认证。
status
这个属性不会再被使用，将会被设置为 NULL 在驱动版本 1.1.x 及更早版本中，使用持久连接时这可能会被设置为字符串的值(比如 "recycled"， "new")。

参见

  • 读取首选项
  • Write Concerns
  • 链接服务器
  • 关于 » connecting 的 MongoDB 核心文档

Table of Contents

  • MongoClient::close — 关闭连接
  • MongoClient::connect — 连接到数据库服务器
  • MongoClient::__construct — 创建一个新的数据库连接对象
  • MongoClient::dropDB — 删除一个数据库 [已废弃]
  • MongoClient::__get — 取得一个数据库
  • MongoClient::getConnections — 返回所有已打开连接的信息
  • MongoClient::getHosts — 更新所有关联主机的状态信息
  • MongoClient::getReadPreference — 获取此连接的读取首选项
  • MongoClient::getWriteConcern — Get the write concern for this connection
  • MongoClient::killCursor — Kills a specific cursor on the server
  • MongoClient::listDBs — 列出所有有效数据库
  • MongoClient::selectCollection — 获取数据库的文档集
  • MongoClient::selectDB — 获取一个数据库
  • MongoClient::setReadPreference — 为该连接设置读取选项
  • MongoClient::setWriteConcern — Set the write concern for this connection
  • MongoClient::__toString — 该连接的字符串表达方式
核心类
MongoClient::close
核心类


关闭连接

MongoClient
MongoClient::connect
MongoClient
PHP Manual

MongoClient::close

(PECL mongo >=1.3.0)

MongoClient::close — 关闭连接

说明

public bool MongoClient::close ([ boolean|string $connection ] )

MongoClient::close() 方法强制关闭一个数据库连接，哪怕使用的是持久连接。 在正常情况下，你绝不需要这么做。

参数

connection

如果没有指定 connection，或者是 FALSE，将会选择关闭写作操作的连接。 如果配置为单节点，将会关闭整个连接，但是如果你连接到一个集群， close() 会仅仅关闭 primary 节点的连接。

如果 connection 是 TRUE，连接管理器将会关闭所有由它管理的连接。 这也会包括创建对象时所引用的连接字符串之外的连接。

如果 connection 是一个字符串参数，它将仅仅关闭由该 hash 标识的连接。 Hash 是调用 MongoClient::getConnections() 所返回，能够表示一个连接。

返回值

返回连接是否成功关闭。

范例

Example #1 MongoClient::close() 例子

这个例子演示了如何选择性地仅关闭备份节点的所有连接。

<?php
// 连接到集群
$a = new MongoClient("mongodb://whisky:13000/?replicaset=seta");

$connections = $a->getConnections();

foreach ( $connections as $con )
{
    // 遍历所有连接，如果类型是 "SECONDARY" 则关闭连接
    if ( $con['connection']['connection_type_desc'] == "SECONDARY" )
    {
        echo "Closing '{$con['hash']}': ";
        $closed = $a->close( $con['hash'] );
        echo $closed ? "ok" : "failed", "\n";
    }
}
?>

以上例程会输出：

Closing 'whisky:13001;X;4948': ok

更新日志

版本 | 说明
1.3.0 | 在 1.3.0 版本中，为这个函数添加了 connection 参数。 在此之前，直邮写入连接才会被这个方法关闭。
1.2.0 | 在版本 1.2.0 之前，这个驱动默认不会使用持久连接，所有连接会在作用域结束时关闭。 由于版本 1.2.0 情况不再如此，所以调用 close 会是一个坏主意，在服务器有较高负载时可能会造成更高的压力。

参见

  • MongoClient::getConnections() - 返回所有已打开连接的信息
MongoClient
MongoClient::connect
MongoClient


连接到数据库服务器

MongoClient::close
MongoClient::__construct
MongoClient
PHP Manual

MongoClient::connect

(PECL mongo >=1.3.0)

MongoClient::connect — 连接到数据库服务器

说明

public bool MongoClient::connect ( void )

参数

此函数没有参数。

返回值

连接是否成功。

错误／异常

如果连接失败将会抛出 MongoConnectionException 的异常。

MongoClient::close
MongoClient::__construct
MongoClient


创建一个新的数据库连接对象

MongoClient::connect
MongoClient::dropDB
MongoClient
PHP Manual

MongoClient::__construct

(PECL mongo >=1.3.0)

MongoClient::__construct — 创建一个新的数据库连接对象

说明

 public MongoClient::__construct
  ([ string $server = "mongodb://localhost:27017"
 [, array $options = array("connect" => TRUE)
]] )

如果没有传入参数，它会连接到 "localhost:27017"（或者 php.ini 里指定的 mongo.default_host 和 mongo.default_port）。

server 应该是这样的形式：

mongodb://[username:password@]host1[:port1][,host2[:port2:],...]/db

连接字符串总是以 mongodb:// 开头，表示它是一个连接字符串。

如果指定了 username 和 password，构造器会在返回前尝试验证连接数据库。 用户名和密码是可选的，需要指定时必须紧随一个 @。

至少指定一个主机（端口可选，默认总是 27017），并且可以连接到想要数量的主机。 主机名由逗号分隔，构造器会成功返回，如果连接到了至少一个主机。 如果无法连接到任何主机，它将会抛出一个异常 MongoConnectionException。

如果你指定了一个用户名和密码，你可以指定一个要验证的数据库。 如果没有指定 db，将会使用 "admin"。

可选的查询字符串可以用于指定额外的选项。 同样参数也支持 options 数组。

选项的一部分指示了驱动在集群环境下对备份节点如何读取。 关于读取首选项运行的额外信息可以查找 读取首选项 文档页面。

参数

server

服务器名。

options

此连接的数组选项。当前有效的选项包括了：

  • "connect"

    构造器是否应该在返回前连接。 默认为 TRUE。当设置为 FALSE，驱动会在有查询必要时 自动 连接到服务器。 另外，你也可以用 MongoClient::connect() 手动运行。

    Warning

    这个选项不支持通过连接字符串来设置。

  • "db"

    要验证的数据库能在这里指定，而不是在主机列表中包含它。 能够重载主机列表中指定的数据库。

  • "password"

    能在这里指定密码，而不是在主机列表中指定。 当密码里有一个 "@" 的时候尤其有用。 此参数会覆盖主机列表中设置的密码。

  • "readPreference"

    指定读取首选项类型。 读取首选项提供了对备份数据读取的控制。

    允许的值有： MongoClient::RP_PRIMARY、
MongoClient::RP_PRIMARY_PREFERRED、
MongoClient::RP_SECONDARY、
MongoClient::RP_SECONDARY_PREFERRED 和
MongoClient::RP_NEAREST。

    更多信息参见读取首选项文档。

  • "readPreferenceTags"

    以字符串的数组指定读取选项标签。 标签能够控制 readPreference 选项来进一步控制从备份节点数据的读取。

    更多信息参见读取首选项文档。

  • "replicaSet"

    要连接的集群名称。 如果指定了，活跃节点能够自动检测到。 这意味着驱动能够最终甚至能够连接到未列出的服务器。 更多细节参见集群的例子。

  • "connectTimeoutMS"

    打开连接超时的时间。

  • "timeout"

    "connectTimeoutMS" 废弃的别名。

  • "socketTimeoutMS"

    在套接字上发送或接收超时的时间。

    Note: 这是客户端的超时时间。如果一个 insert 达到了 socketTimeoutMS， 将无法得知服务器是否确实已写入。

  • "username"

    能在这里指定用户名，而不是在主机列表中指定。 当用户名包括一个「:」时尤其有用。 它会覆盖主机列表中的设置。

  • "w"

    选项 w 指定了驱动的 Write Concern，决定了驱动在写入时阻塞的时间。 默认值是 1。

    此选项适用于单台服务器或者是集群。 一个正数值控制了在驱动继续之前，有多少个节点必须应答写入的指令。 值 1 将让单台服务器或者活跃节点（在集群里）应答写入操作。 值 3 将阻塞驱动直至写入到活跃节点和其他两个备份节点服务器（在集群里）。

    一个字符串的值用于控制考虑 write concerns 的标签集。 "majority" 是特殊用于确保写入操作被应用于大多数（大于 50%）参与的节点。

  • "wTimeout"

    此选项用于和 "w" 参数组合使用。 它控制了服务器等待多少毫秒来满足 write concern。 如果超时了，驱动会抛出 MongoCursorException 异常。

返回值

返回一个新的数据库连接对象。

错误／异常

如果给出的主机都无法连接，将会抛出 MongoConnectionException 异常。 如果提供了无效的用户名和密码将会抛出一个 MongoConnnectionException。 参见 MongoConnectionException 相关文档获取异常发生的原因。

更新日志

版本 | 说明
1.3.4

添加了 "connectTimeoutMS" 和 "socketTimeoutMS" 选项。

1.3.0

添加了 "readPreference"、 "readPreferenceTags"、"w" 和 "wTimeout" 选项。

1.2.0

添加了 "username" 和 "password" 选项。

移除了 "persist" 选项，所有的连接都是持久的。它仍旧能够使用，但是不起作用。

"persist"

是否应该是持久连接。如果设置了，连接会是持久连接。 字符形式的值将会用于连接的 ID。所以两个以 array("persist" => "foobar") 初始化的 MongoClient 实例会共享一个数据库连接，以 array("persist" => "barbaz")初始化的实例则使用不同的数据库连接。

"replicaSet" 选项现在支持一个字符串，而不是布尔值。

1.0.9 | 添加了 "replicaSet" 选项。
1.0.2

修改构造器支持选修数组。在 1.0.2 之前，构造器接受以下参数：

server

服务器名。

connect

可选的 boolean 参数指定了构造器是否应该在返回前连接到数据库。默认为 TRUE。

persistent

连接是否应该是持久的。

paired

连接是否应该为 paired 模式。

范例

Example #1 MongoClient::__construct() 集群例子

这个例子显示了如何连接本驱动到一个集群。 它假设了有三个服务器的集群： sf1.example.com、sf2.example.com 和 ny1.example.com。 活跃节点可能是其中任意一个。

<?php

// 传递逗号分隔的服务器名称列表到构造器
// 注意我们不需要传入集群的所有成员，驱动能够获取完整的列表
$m1 = new MongoClient("mongodb://sf2.example.com,ny1.example.com", array("replicaSet" => "myReplSet"));

?>

如果当前活跃节点连接失败，驱动会计算出备用节点服务器作为新的活跃节点，并自动启用该连接。 如果没有指定 replicaSet，自动容错移转将无法正常工作。

在驱动连接的集群种子列表里，起码要有一个种子是在线的。

如果你包含的种子位于两个独立的集群，后面的行为将不可预测。

更多关于集群的信息参见» 核心文档。

Example #2 连接到一个域套接字（domain socket）

在 1.0.9+ 版本中，你可以使用一个 UNIX 域套接字来连接到一个本地的 MongoDB 实例。 这可能会比使用网络连接稍微快一点。

在版本 1.5.0，MongoDB 服务器会自动打开 /tmp/mongodb-<port>.sock 上的套接字。 你可以在连接字符串中指定位置：

<?php

// MongoDB 服务器运行在本地 20000 端口上
$m = new MongoClient("mongodb:///tmp/mongodb-20000.sock");

?>

你也可以和其他想要的连接组合：

<?php

// 尝试连接到套接字，失败时使用 localhost 连接
$m = new MongoClient("mongodb:///tmp/mongodb-27017.sock,localhost:27017");

?>

Example #3 MongoClient::__construct() 验证的例子

在尝试验证时，用户必须存在于 admin 数据库。 你可以通过终端，用 Mongo 创建一个：

> use admin
switched to db admin
> db.addUser("testUser", "testPass");
{
        "_id" : ObjectId("4b21272fd9ab21611d19095c"),
        "user" : "testUser",
        "pwd" : "03b9b27e0abf1865e2f6fcbd9845dd59"
}
>

创建一个用户后，上面的例子里用户名为 "testUser" 并且密码为 "testPass"，你可以创建一个验证后的连接：

<?php

$m = new MongoClient("mongodb://testUser:testPass@localhost");

?>

Example #4 MongoClient::__construct() 读取选项例子

<?php

// 首选 "east" 数据中心最近的服务器
$uri  = 'mongodb://rs1.example.com,rs2.example.com/';
$uri .= '?readPreference=nearest';
$uri .= '&readPreferenceTags=dc:east';
$m = new MongoClient($uri, array('replicaSet' => 'rs'));

更多信息参见本手册中读取选项一节。

MongoClient::connect
MongoClient::dropDB
MongoClient


删除一个数据库 [已废弃]

MongoClient::__construct
MongoClient::__get
MongoClient
PHP Manual

MongoClient::dropDB

(PECL mongo >=1.3.0)

MongoClient::dropDB — 删除一个数据库 [已废弃]

说明

public array MongoClient::dropDB ( mixed $db )
Warning

已废弃

请使用 MongoDB::drop() 作为替代。

参数

db

要函数的数据库。可以是一个 MongoDB对象，或者是数据库名。

返回值

返回数据库的回应。

MongoClient::__construct
MongoClient::__get
MongoClient


取得一个数据库

MongoClient::dropDB
MongoClient::getConnections
MongoClient
PHP Manual

MongoClient::__get

(PECL mongo >=1.3.0)

MongoClient::__get — 取得一个数据库

说明

public MongoDB MongoClient::__get ( string $dbname )

这是获取一个数据库最简洁的方法。 如果数据库名称包含任意特殊字符，需要使用 MongoClient::selectDB() 方法；但是大多数情况下这个方法就可以。

<?php

$mongo = new MongoClient();

// 以下两行是一样的
$db = $mongo->selectDB("foo");
$db = $mongo->foo;

?>

参数

dbname

数据库名

返回值

返回一个新的 db 对象。

错误／异常

如果数据库名无效，将会抛出异常。

MongoClient::dropDB
MongoClient::getConnections
MongoClient


返回所有已打开连接的信息

MongoClient::__get
MongoClient::getHosts
MongoClient
PHP Manual

MongoClient::getConnections

(PECL mongo >=1.3.0)

MongoClient::getConnections — 返回所有已打开连接的信息

说明

public static array MongoClient::getConnections ( void )

返回所有已打开连接的数组，并且每个服务器的信息

参数

此函数没有参数。

返回值

打开连接的一个 array。

范例

Example #1 MongoClient::getConnections() 例子

<?php
$m = new MongoClient;
var_dump($m->getConnections());
?>

以上例程的输出类似于：

array(1) {
  [0]=>
  array(3) {
    ["hash"]=>
    string(26) "localhost:27017;-;X;56052"
    ["server"]=>
    array(3) {
      ["host"]=>
      string(10) "localhost"
      ["port"]=>
      int(27017)
      ["pid"]=>
      int(56052)
    }
    ["connection"]=>
    array(8) {
      ["last_ping"]=>
      int(1354076401)
      ["last_ismaster"]=>
      int(0)
      ["ping_ms"]=>
      int(0)
      ["connection_type"]=>
      int(1)
      ["connection_type_desc"]=>
      string(10) "STANDALONE"
      ["max_bson_size"]=>
      int(16777216)
      ["tag_count"]=>
      int(0)
      ["tags"]=>
      array(0) {
      }
    }
  }
}
MongoClient::__get
MongoClient::getHosts
MongoClient


更新所有关联主机的状态信息

MongoClient::getConnections
MongoClient::getReadPreference
MongoClient
PHP Manual

MongoClient::getHosts

(PECL mongo >=1.3.0)

MongoClient::getHosts — 更新所有关联主机的状态信息

说明

public array MongoClient::getHosts ( void )

此方法仅在连接到副本集时有用。 它返回了集群里所有主机的状态。如果没有副本集，它只返回一个元素的数组，包含你当前连接的主机。

参见手册中查询一节关于分布式查询备份节点的信息。

参数

此函数没有参数。

返回值

返回集群中主机的信息数组。 包含了每个主机的主机名，它的健康程度（1 是很健康），它的状态（1 是活跃节点，2 是备用节点，0 是其他），ping 服务器所需的时间，以及最后一次 ping 的时间。 例如，在具有三个成员的集群中，它看上去可能是这样的：

array(3) {
  ["A:27017"]=>
  array(4) {
    ["host"]=>
    "A"
    ["port"]=>
    27017
    ["health"]=>
    int(1)
    ["state"]=>
    int(2)
    ["ping"]=>
    int(369)
    ["lastPing"]=>
    int(1309470644)
  }
  ["B:27017"]=>
  array(4) {
    ["host"]=>
    "B"
    ["port"]=>
    27017
    ["health"]=>
    int(1)
    ["state"]=>
    int(1)
    ["ping"]=>
    int(139)
    ["lastPing"]=>
    int(1309470644)
  }
  ["C:27017"]=>
  array(4) {
    ["host"]=>
    "C"
    ["port"]=>
    27017
    ["health"]=>
    int(1)
    ["state"]=>
    int(2)
    ["ping"]=>
    int(1012)
    ["lastPing"]=>
    int(1309470644)
  }
}

更新日志

版本 | 说明
1.2.10 | 对非集群的支持。 返回的数组元素现在也包括了 hostname 和 port。

参见

  • MongoClient::getConnections() - 返回所有已打开连接的信息
MongoClient::getConnections
MongoClient::getReadPreference
MongoClient


获取此连接的读取首选项

MongoClient::getHosts
MongoClient::getWriteConcern
MongoClient
PHP Manual

MongoClient::getReadPreference

(PECL mongo >=1.3.0)

MongoClient::getReadPreference — 获取此连接的读取首选项

说明

public array MongoClient::getReadPreference ( void )

参数

此函数没有参数。

返回值

This function returns an array describing the read preference. The array contains the values type for the string read preference mode (corresponding to the MongoClient constants), and tagsets containing a list of all tag set criteria. If no tag sets were specified, tagsets will not be present in the array.

更新日志

版本 | 说明
1.3.3 | 返回的值修改为兼容 MongoClient::setReadPreference()。 type 的值从数组改成字符串，删除了 type_string，并且 tagsets 现在以键值表示的标签而不是冒号分隔的字符串。

范例

Example #1 MongoClient::getReadPreference() 返回值例子

<?php

$m = new MongoClient();
$m->setReadPreference(MongoClient::RP_SECONDARY, array(
    array('dc' => 'east', 'use' => 'reporting'),
    array('dc' => 'west'),
    array(),
));
var_dump($m->getReadPreference());
?>

以上例程会输出：

array(2) {
  ["type"]=>
  string(9) "secondary"
  ["tagsets"]=>
  array(3) {
    [0]=>
    array(2) {
      ["dc"]=>
      string(4) "east"
      ["use"]=>
      string(9) "reporting"
    }
    [1]=>
    array(1) {
      ["dc"]=>
      string(7) "west"
    }
    [2]=>
    array(0) {
    }
  }
}

参见

  • 读取首选项的文档。
MongoClient::getHosts
MongoClient::getWriteConcern
MongoClient


Get the write concern for this connection

MongoClient::getReadPreference
MongoClient::killCursor
MongoClient
PHP Manual

MongoClient::getWriteConcern

(PECL mongo >=1.5.0)

MongoClient::getWriteConcern — Get the write concern for this connection

This extension that defines this method is deprecated. Instead, the MongoDB extension should be used. There is no equivalent for this method in the new extension.

说明

public array MongoClient::getWriteConcern ( void )

参数

此函数没有参数。

返回值

This function returns an array describing the write concern. The array contains the values w for an integer acknowledgement level or string mode, and wtimeout denoting the maximum number of milliseconds to wait for the server to satisfy the write concern.

范例

Example #1 MongoClient::getWriteConcern() return value example

<?php

$mc = new MongoClient('mongodb://localhost:27017', array('wTimeoutMS' => 500));
var_dump($mc->getWriteConcern());

$mc->setWriteConcern(1, 1000);
var_dump($mc->getWriteConcern());
?>

以上例程会输出：

array(2) {
  ["w"]=>
  int(1)
  ["wtimeout"]=>
  int(500)
}
array(2) {
  ["w"]=>
  int(1)
  ["wtimeout"]=>
  int(1000)
}

参见

  • The write concern documentation.
  • MongoClient::setWriteConcern() - Set the write concern for this connection
MongoClient::getReadPreference
MongoClient::killCursor
MongoClient


Kills a specific cursor on the server

MongoClient::getWriteConcern
MongoClient::listDBs
MongoClient
PHP Manual

MongoClient::killCursor

(PECL mongo >=1.5.0)

MongoClient::killCursor — Kills a specific cursor on the server

This extension that defines this method is deprecated. Instead, the MongoDB extension should be used. There is no equivalent for this method in the new extension.

说明

public bool MongoClient::killCursor ( string $server_hash , int|MongoInt64 $id )

In certain situations it might be needed to kill a cursor on the server. Usually cursors time out after 10 minutes of inactivity, but it is possible to create an immortal cursor with MongoCursor::immortal() that never times out. In order to be able to kill such an immortal cursor, you can call this method with the information supplied by MongoCursor::info().

参数

server_hash

The server hash that has the cursor. This can be obtained through MongoCursor::info().

id

The ID of the cursor to kill. You can either supply an int containing the 64 bit cursor ID, or an object of the MongoInt64 class. The latter is necessary on 32 bit platforms (and Windows).

返回值

Returns TRUE if the method attempted to kill a cursor, and FALSE if there was something wrong with the arguments (such as a wrong server_hash). The return status does not reflect where the cursor was actually killed as the server does not provide that information.

错误／异常

This method displays a warning if the supplied server_hash does not match up with an existing connection. No attempt to kill a cursor is attempted in that case either.

范例

Example #1 MongoClient::killCursor() example

This example shows how to connect, do a query, obtain the cursor information and then kill the cursor.

<?php
$m = new MongoClient();
$c = $m->testdb->collection;
$cursor = $c->find();
$result = $cursor->next();

// Now the cursor is valid, so we can get the hash and ID out:
$info = $cursor->info();

// Kill the cursor
MongoClient::killCursor( $info['server'], $info['id'] );
?>
MongoClient::getWriteConcern
MongoClient::listDBs
MongoClient


列出所有有效数据库

MongoClient::killCursor
MongoClient::selectCollection
MongoClient
PHP Manual

MongoClient::listDBs

(PECL mongo >=1.3.0)

MongoClient::listDBs — 列出所有有效数据库

说明

public array MongoClient::listDBs ( void )

参数

此函数没有参数。

返回值

返回的关联数组包括了三个字段。 第一个字段是 databases，里面包含了一个数组。每个元素对应一个数据库，给出数据库名称、尺寸以及是否为空。 另外两个字段是 totalSize（单位为字节 bytes）和 ok，如果方法成功运行，它会是 1。

范例

Example #1 MongoClient::listDBs() 例子

例子演示了如何列出数据库，并返回数据的结构。

<?php

$mongo = new MongoClient();
$dbs = $mongo->listDBs();
print_r($dbs);

?>

以上例程的输出类似于：

Array
(
    [databases] => Array
        (
            [0] => Array
                (
                    [name] => doctrine
                    [sizeOnDisk] => 218103808
                    [empty] =>
                )
        )

    [totalSize] => 218103808
    [ok] => 1
)
MongoClient::killCursor
MongoClient::selectCollection
MongoClient


获取数据库的文档集

MongoClient::listDBs
MongoClient::selectDB
MongoClient
PHP Manual

MongoClient::selectCollection

(PECL mongo >=1.3.0)

MongoClient::selectCollection — 获取数据库的文档集

说明

public MongoCollection MongoClient::selectCollection ( string $db , string $collection )

参数

db

数据库名

collection

文档集名。

返回值

返回一个新的文档集对象。

错误／异常

如果数据库或文档集名称是无效的，抛出 Exception。

范例

Example #1 MongoClient::selectCollection() 例子

<?php
$m = new MongoClient();

$c1 = $m->selectCollection("foo", "bar.baz");
// 就等于
$c2 = $m->selectDB("foo")->selectCollection("bar.baz");

// $c1 和 $c2 现在表示的是同一个文档集
?>
MongoClient::listDBs
MongoClient::selectDB
MongoClient


获取一个数据库

MongoClient::selectCollection
MongoClient::setReadPreference
MongoClient
PHP Manual

MongoClient::selectDB

(PECL mongo >=1.3.0)

MongoClient::selectDB — 获取一个数据库

说明

public MongoDB MongoClient::selectDB ( string $name )

参数

name

数据库名。

返回值

返回一个新的数据库对象。

错误／异常

如果数据库名无效，将会抛出 Exception。

MongoClient::selectCollection
MongoClient::setReadPreference
MongoClient


为该连接设置读取选项

MongoClient::selectDB
MongoClient::setWriteConcern
MongoClient
PHP Manual

MongoClient::setReadPreference

(PECL mongo >=1.3.0)

MongoClient::setReadPreference — 为该连接设置读取选项

说明

public bool MongoClient::setReadPreference ( string $read_preference [, array $tags ] )

参数

read_preference

The read preference mode: MongoClient::RP_PRIMARY, MongoClient::RP_PRIMARY_PREFERRED, MongoClient::RP_SECONDARY, MongoClient::RP_SECONDARY_PREFERRED, or MongoClient::RP_NEAREST.

tags

An array of zero or more tag sets, where each tag set is itself an array of criteria used to match tags on replica set members.

返回值

Returns TRUE on success, or FALSE otherwise.

错误／异常

Emits E_WARNING if either parameter is invalid, or if one or more tag sets are provided with the MongoClient::RP_PRIMARY read preference mode.

范例

Example #1 MongoClient::setReadPreference() 标签集数组语法的例子

<?php

$m = new MongoClient();

// 首选最近的 "east" 数据中心的服务器，也用于报告，
// 失败时调用 "west" 数据中心的服务器
$m->setReadPreference(MongoClient::RP_NEAREST, array(
    array('dc' => 'east', 'use' => 'reporting'),
    array('dc' => 'west'),
));
?>

参见

  • 读取选修的文档。
MongoClient::selectDB
MongoClient::setWriteConcern
MongoClient


Set the write concern for this connection

MongoClient::setReadPreference
MongoClient::__toString
MongoClient
PHP Manual

MongoClient::setWriteConcern

(PECL mongo >=1.5.0)

MongoClient::setWriteConcern — Set the write concern for this connection

This extension that defines this method is deprecated. Instead, the MongoDB extension should be used. There is no equivalent for this method in the new extension.

说明

public bool MongoClient::setWriteConcern ( mixed $w [, int $wtimeout ] )

参数

w

The write concern. This may be an integer denoting the number of servers required to acknowledge the write, or a string mode (e.g. "majority").

wtimeout

The maximum number of milliseconds to wait for the server to satisfy the write concern.

返回值

Returns TRUE on success, or FALSE otherwise.

错误／异常

Emits E_WARNING if the w parameter is not an integer or string value.

范例

Example #1 MongoClient::setWriteConcern() example

<?php

$mc = new MongoClient('mongodb://rs1.example.com,rs2.example.com');

// Require that the majority of servers in the replica set acknowledge writes
// within three seconds.
$mc->setWriteConcern('majority', 3000);
?>

参见

  • The write concern documentation.
  • MongoClient::getWriteConcern() - Get the write concern for this connection
MongoClient::setReadPreference
MongoClient::__toString
MongoClient


该连接的字符串表达方式

MongoClient::setWriteConcern
MongoDB
MongoClient
PHP Manual

MongoClient::__toString

(PECL mongo >=1.3.0)

MongoClient::__toString — 该连接的字符串表达方式

说明

public string MongoClient::__toString ( void )

参数

此函数没有参数。

返回值

返回此连接的主机名和端口号。

MongoClient::setWriteConcern
MongoDB
MongoClient


MongoDB 类

(PECL mongo >=0.9.0)

简介

该类的实例用于和数据库进行交互。要获取一个数据库：

Example #1 选择一个数据库

<?php

$m = new MongoClient(); // 连接
$db = $m->selectDB("example");

?>
数据库名可以用 ASCII 范围内的几乎任何字符。 但是，它们不能包括 " "、"."，或者是空字符串。 名称 "system" 也是被保留的。

个别特殊但有效的数据库名："null"、"[x,y]"、"3"、"\""、 "/"。

不像集合名，数据库名是可以包含 "$" 的。

类摘要

MongoDB {
/* 常量 */
const int PROFILING_OFF = 0 ;
const int PROFILING_SLOW = 1 ;
const int PROFILING_ON = 2 ;
/* Fields */
public integer $w = 1 ;
public integer $wtimeout = 10000 ;
/* 方法 */
public array authenticate ( string $username , string $password )
public array command ( array $command [, array $options = array() ] )
public __construct ( MongoClient $conn , string $name )
public MongoCollection createCollection ( string $name [, array $options ] )
public array createDBRef ( string $collection , mixed $document_or_id )
public array drop ( void )
public array dropCollection ( mixed $coll )
public array execute ( mixed $code [, array $args = array() ] )
public bool forceError ( void )
public MongoCollection __get ( string $name )
public array getCollectionInfo ([ array $options = array() ] )
public array getCollectionNames ([ array $options = array() ] )
public array getDBRef ( array $ref )
public MongoGridFS getGridFS ([ string $prefix = "fs" ] )
public int getProfilingLevel ( void )
public array getReadPreference ( void )
public bool getSlaveOkay ( void )
public array getWriteConcern ( void )
public array lastError ( void )
public array listCollections ([ array $options = array() ] )
public array prevError ( void )
public array repair ([ bool $preserve_cloned_files = FALSE [, bool $backup_original_files = FALSE ]] )
public array resetError ( void )
public MongoCollection selectCollection ( string $name )
public int setProfilingLevel ( int $level )
public bool setReadPreference ( string $read_preference [, array $tags ] )
public bool setSlaveOkay ([ bool $ok = true ] )
public bool setWriteConcern ( mixed $w [, int $wtimeout ] )
public string __toString ( void )
}

预定义常量

MongoDB 日志级别

MongoDB::PROFILING_OFF
0
关闭了分析器。
MongoDB::PROFILING_SLOW
1
为慢操作开启了分析器（>100 ms）。
MongoDB::PROFILING_ON
2
为所有操作开启了分析器。

字段

w
1

在返回成功之前，复制修改到此数量的服务器。 MongoCollection 实例的设置从这里继承。 w 仅仅在 MongoDB 服务器版本 1.5.1+ 以及本驱动 1.0.8+ 有效。

w 用于你需要调整确认级别时 （MongoCollection::insert()、 MongoCollection::update()、 MongoCollection::remove()、 MongoCollection::save() 和 MongoCollection::ensureIndex() 都支持这个选项）。 默认值（1）情况下，只要数据库有操作就会确认。 如果在复制到从服务器前服务器宕机了，它将可能永久丢失本次操作。 所以，你可以为 w 指定一个比一更高的数字， 在返回成功之前确保至少一个从服务器完成了操作。

例如，如果 w 是 2，主服务器和一个从服务必须记录了本次操作， 否则驱动会抛出 MongoCursorException。 它尝试写入总计 w 个从服务器 + 主服务器，但是如果其中一个从服务器宕机了， 操作也会失败，并会抛出异常，所以通常 w=2 是最安全的（主服务器和一个从服务器）。

wtimeout
10000

等待 MongoDB::$w 复制生效的毫秒数。 MongoCollection 实例的设置从这里继承。 w 仅仅在 MongoDB 服务器版本 1.5.1+ 并且驱动版本 1.0.8+ 有效。

除非设置了 wtimeout，服务器会永久等待复制到 w 个服务器。 这个驱动默认会等待 10 秒，你可以修改这个值来改变它的行为。

参见

MongoDB 关于 » databases 的核心文档。

Table of Contents

  • MongoDB::authenticate — 登录到数据库
  • MongoDB::command — 执行一条 Mongo 指令
  • MongoDB::__construct — 选择一个数据库
  • MongoDB::createCollection — 创建一个集合
  • MongoDB::createDBRef — 创建数据库引用
  • MongoDB::drop — 丢弃数据库
  • MongoDB::dropCollection — Drops a collection [deprecated]
  • MongoDB::execute — 在数据库服务器上运行JavaScript
  • MongoDB::forceError — Creates a database error
  • MongoDB::__get — Gets a collection
  • MongoDB::getCollectionInfo — Returns information about collections in this database
  • MongoDB::getCollectionNames — Gets an array of names for all collections in this database
  • MongoDB::getDBRef — Fetches the document pointed to by a database reference
  • MongoDB::getGridFS — Fetches toolkit for dealing with files stored in this database
  • MongoDB::getProfilingLevel — Gets this database's profiling level
  • MongoDB::getReadPreference — Get the read preference for this database
  • MongoDB::getSlaveOkay — Get slaveOkay setting for this database
  • MongoDB::getWriteConcern — Get the write concern for this database
  • MongoDB::lastError — Check if there was an error on the most recent db operation performed
  • MongoDB::listCollections — Gets an array of MongoCollection objects for all collections in this database
  • MongoDB::prevError — Checks for the last error thrown during a database operation
  • MongoDB::repair — Repairs and compacts this database
  • MongoDB::resetError — Clears any flagged errors on the database
  • MongoDB::selectCollection — Gets a collection
  • MongoDB::setProfilingLevel — Sets this database's profiling level
  • MongoDB::setReadPreference — Set the read preference for this database
  • MongoDB::setSlaveOkay — Change slaveOkay setting for this database
  • MongoDB::setWriteConcern — Set the write concern for this database
  • MongoDB::__toString — The name of this database
MongoClient::__toString
MongoDB::authenticate
核心类


登录到数据库

MongoDB
MongoDB::command
MongoDB
PHP Manual

MongoDB::authenticate

(PECL mongo >=1.0.1)

MongoDB::authenticate — 登录到数据库

说明

public array MongoDB::authenticate ( string $username , string $password )

此方法能够认证它的连接。 如果数据库服务器开启了认证（默认没有开启），在做任何操作之前你需要登录。

通常情况下，你应该使用 MongoClient::__construct() 内置的参数而不是此方法。 如果你对一个连接验证了，然后在会话期间连接掉了然后重连，你会被重新验证。 如果你用这个方法手动验证，然后连接掉了，你必须在重新连接时手动调用这个方法。

该方法等同于运行：

<?php

$salted = "${username}:mongo:${password}";
$hash = md5($salted);

$nonce = $db->command(array("getnonce" => 1));

$saltedHash = md5($nonce["nonce"]."${username}${hash}");

$result = $db->command(array("authenticate" => 1,
    "user" => $username,
    "nonce" => $nonce["nonce"],
    "key" => $saltedHash
));

?>

当一个连接验证后，它仅能够通过 "logout" 数据库命令来登出：

<?php

$db->command(array("logout" => 1));

?>

参数

username

用户名。

password

密码（明文格式）。

返回值

返回数据库的响应，如果登录成功，它会返回

<?php
array("ok" => 1);
?>
如果出现了什么错误，它会返回
<?php
array("ok" => 0, "errmsg" => "auth fails");
?>
（"auth fails" 可能是另外的信息，取决于数据库版本和发生了什么错误）。

参见

MongoDB 关于 » authenticate 的核心文档。

更新日志

版本 | 说明
1.2.11 | 使用时产生 E_DEPRECATED。 请将验证细节传入到构造器。

MongoDB
MongoDB::command
MongoDB


执行一条 Mongo 指令

MongoDB::authenticate
MongoDB::__construct
MongoDB
PHP Manual

MongoDB::command

(PECL mongo >=0.9.2)

MongoDB::command — 执行一条 Mongo 指令

说明

public array MongoDB::command ( array $command [, array $options = array() ] )

几乎所有不属于CRUD操作的事情都可以通过一条"数据库指令"完成。需要知道数据库的版本？有一条指令可以实现。需要进行一次聚合？有一条指令可以实现。想要提高日志级别？有一条指令可以实现。我想你已经领会到了。

该方法等同于：

<?php

public function command($data) {
    return $this->selectCollection('$cmd')->findOne($data);
}

?>

参数

command

要发送的指令

options

该参数是一个具有以下形式的关联数组： array("optionname" => <boolean>, ...)，现在支持的选项有：

  • "timeout"

    Integer, defaults to MongoCursor::$timeout. If "safe" is set, this sets how long (in milliseconds) for the client to wait for a database response. If the database does not respond within the timeout period, a MongoCursorTimeoutException will be thrown.

更新日志

版本 | 说明
1.2.0 | 添加 options 参数，和一个选项:"timeout"。

返回值

返回数据库响应。每个响应都不会超过一个文档的大小，也就是不会超过16MB。 结果文档的结构与执行的指令有关,但大部分结果都有 ok 字段来表示成功还是失败。以及 results 字段包含一个结果文档数组。

范例

Example #1 MongoDB::command() "distinct"实例

查找一个键的所有不重复值

<?php

$people = $db->people;

$people->insert(array("name" => "Joe", "age" => 4));
$people->insert(array("name" => "Sally", "age" => 22));
$people->insert(array("name" => "Dave", "age" => 22));
$people->insert(array("name" => "Molly", "age" => 87));

$ages = $db->command(array("distinct" => "people", "key" => "age"));

foreach ($ages['values'] as $age) {
    echo "$age\n";
}

?>

以上例程的输出类似于：

4
22
87

Example #2 MongoDB::command() "distinct"实例

查找一个键的所有不重复值，并且这些值大于等于18

<?php

$people = $db->people;

$people->insert(array("name" => "Joe", "age" => 4));
$people->insert(array("name" => "Sally", "age" => 22));
$people->insert(array("name" => "Dave", "age" => 22));
$people->insert(array("name" => "Molly", "age" => 87));

$ages = $db->command(
    array(
        "distinct" => "people",
        "key" => "age",
        "query" => array("age" => array('$gte' => 18))
    )
);

foreach ($ages['values'] as $age) {
    echo "$age\n";
}

?>

以上例程的输出类似于：

22
87

Example #3 MongoDB::command() MapReduce实例

获取所有有type=sale这样的"event"的用户，以及他们分别有几个这样的"event"（注:此处的event是一个集合的名字）

<?php

// sample event document
$events->insert(array("user_id" => $id,
    "type" => $type,
    "time" => new MongoDate(),
    "desc" => $description));

// construct map and reduce functions
$map = new MongoCode("function() { emit(this.user_id,1); }");
$reduce = new MongoCode("function(k, vals) { ".
    "var sum = 0;".
    "for (var i in vals) {".
        "sum += vals[i];".
    "}".
    "return sum; }");

$sales = $db->command(array(
    "mapreduce" => "events",
    "map" => $map,
    "reduce" => $reduce,
    "query" => array("type" => "sale"),
    "out" => array("merge" => "eventCounts")));

$users = $db->selectCollection($sales['result'])->find();

foreach ($users as $user) {
    echo "{$user['_id']} had {$user['value']} sale(s).\n";
}

?>

以上例程的输出类似于：

User 47cc67093475061e3d9536d2 had 3 sale(s).
User 49902cde5162504500b45c2c had 14 sale(s).
User 4af467e4fd543cce7b0ea8e2 had 1 sale(s).

Note: 使用 MongoCode

这个例子使用了 MongoCode，它还可以接受一个作用域参数。然而，现在 MongoDB 还不支持在 MapReduce 中使用它， 如果你需要在MapReduce函数里用一个客户端参数，那么你可以在使用MapReduce的时候用"optional scope"字段把它们添加到全局作用域中，参考 » MapReduce文档 来获得更多信息。

Note: out 参数

1.8.0以前，out 参数是可选的，如果你不使用它，MapReduce的结果将被写入一个临时集合里，这个临时集合会在连接关闭后删除。 1.8.0以后，out 参数是必须的，参考 » MapReduce documentation 来获得更多信息。

Example #4 MongoDB::command() "textSearch"实例

在MongoDB 2.4以上版本中使用全文检索功能（之前的版本不支持全文检索）。

<?php
$m = new MongoClient();
$d = $m->demo;
$c = $d->planets;

$c->insert(array("name" => "Mercury", "desc" => "Mercury is the smallest and closest to the Sun"));
$c->insert(array("name" => "Venus", "desc" => "Venus is the second planet from the Sun, orbiting it every 224.7 Earth days."));
$c->insert(array("name" => "Earth", "desc" => "Earth is the the densest of the eight planets in the Solar System."));
$c->insert(array("name" => "Mars", "desc" => "Mars is named after the Roman god of war."));

$c->ensureIndex(array('desc' => 'text'));

$r = $d->command(array("text" => "planets", 'search' => "sun" ));
print_r($r);
?>

以上例程的输出类似于：

Array
(
[queryDebugString] => sun||||||
[language] => english
[results] => Array
(
[0] => Array
(
[score] => 0.625
[obj] => Array
(
[_id] => MongoId Object
(
[$id] => 517549d944670a4a5cb3059a
)

[name] => Mercury
[desc] => Mercury is the smallest and closest to the Sun
)

)

[1] => Array
(
[score] => 0.55
[obj] => Array
(
[_id] => MongoId Object
(
[$id] => 517549d944670a4a5cb3059b
)

[name] => Venus
[desc] => Venus is the second planet from the Sun, orbiting it every 224.7 Earth days.
)

)

)

[stats] => Array
(
[nscanned] => 2
[nscannedObjects] => 0
[n] => 2
[nfound] => 2
[timeMicros] => 95
)

[ok] => 1
)

Example #5 MongoDB::command() "geoNear"实例

这个实例说明了如何使用 geoNear 指令。

<?php
$m = new MongoClient();
$d = $m->demo;
$c = $d->poiConcat;

$r = $d->command(array(
    'geoNear' => "poiConcat",      // 在 poiConcat 集合中
    'near' => array(-0.08, 51.48), // 搜索 51.48°N, 0.08°E 附近
    'spherical' => true,           // 启用特殊搜索
    'num' => 5,                    // 最多返回5个文档
));
print_r($r);
?>

参见

  • MongoCollection::aggregate() - Perform an aggregation using the aggregation framework
  • MongoCollection::findAndModify() - Update a document and return it
  • MongoCollection::group() - Performs an operation similar to SQL's GROUP BY command

MongoDB 核心文档的 » 数据库指令 ，以及这些特定指令的文档 » findAndModify、 » getLastError、 » repairDatabase （还有很多其他指令，这只是一些例子）

MongoDB::authenticate
MongoDB::__construct
MongoDB


选择一个数据库

MongoDB::command
MongoDB::createCollection
MongoDB
PHP Manual

MongoDB::__construct

(PECL mongo >=0.9.0)

MongoDB::__construct — 选择一个数据库

说明

public MongoDB::__construct ( MongoClient $conn , string $name )

这个方法通常不直接调用。推荐的用法是通过 MongoClient::__get() 或 MongoClient::selectDB() 方法获得对象实例。

如果你确实需要直接调用，可以通过以下方式：

<?php

$m = new MongoClient();
$db = new MongoDB($m, 'mydbname');

?>

但这并不好。下面的方式更加美观：

<?php

$m = new MongoClient();
$db = $m->mydbname;

// or, if the name contains weird characters: 如果数据库名字有保留的字符：

$db = $m->selectDB('my,db:name');

?>

参数

MongoClient conn

数据库链接

name

数据库名

返回值

返回数据库对象。

错误／异常

如果数据库名称无效。抛出一个默认类型的异常

MongoDB::command
MongoDB::createCollection
MongoDB


创建一个集合

MongoDB::__construct
MongoDB::createDBRef
MongoDB
PHP Manual

MongoDB::createCollection

(PECL mongo >=0.9.0)

MongoDB::createCollection — 创建一个集合

说明

public MongoCollection MongoDB::createCollection ( string $name [, array $options ] )

这个方法用于创建一个"有限集合"之类需要特殊参数的集合。它相当于执行

<?php

$collection = $db->command(array(
    "create" => $name,
    "capped" => $options["capped"],
    "size" => $options["size"],
    "max" => $options["max"],
    "autoIndexId" => $options["autoIndexId"],
));

?>
参考 MongoDB::command() 了解更多关于数据库指令的信息

参数

name

集合的名字

options

一个数组，包含集合的选项，具有以下形式： array("optionname" => "optionvalue", ...) 。支持的选项跟MongoDB服务器的版本有关。目前支持的选项有：

capped

这个集合是否是固定大小的。

size

如果是固定大小的，指定它的大小（字节）。

max

如果是固定大小的，指定集合中最多存储多少个文档。

autoIndexId

如果 capped 是 TRUE 你可以显式定义为 FALSE 来禁用 自增_id 特性。MongoDB 2.2以前， autoIndexId 的默认值是FALSE。

返回值

返回新建的集合对象。

范例

Example #1 MongoDB::createCollection() 固定大小集合 实例

固定大小（capped）集合是一种磁盘容量或者文档数量固定的特殊集合。当集合"满了"的时候，最老的文档就会被新文档代替。固定大小集合在类似日志记录的应用中非常有用，比如你需要保留一定量的日志，不用担心它们占用过多的空间。

这个例子建立了一个非常小的日志集合，保存10条日志。

<?php

$log = $db->createCollection(
    "logger",
    array(
        'capped' => true,
        'size' => 10*1024,
        'max' => 10
    )
);

for ($i = 0; $i < 100; $i++) {
    $log->insert(array("level" => WARN, "msg" => "sample log message #$i", "ts" => new MongoDate()));
}

$msgs = $log->find();

foreach ($msgs as $msg) {
    echo $msg['msg']."\n";
}

?>

以上例程的输出类似于：

sample log message #90
sample log message #91
sample log message #92
sample log message #93
sample log message #94
sample log message #95
sample log message #96
sample log message #97
sample log message #98
sample log message #99

更新日志

版本 | 说明
1.4.0 | 1.4.0以前的版本里，所有选项都是这个方法的参数。之前版本这个方法的签名是这样的： public MongoCollection MongoDB::createCollection ( string $name [, bool $capped = FALSE [, int $size = 0 [, int $max = 0 ]]] ) 参数的意义与现在版本的 options 参数相同。

MongoDB::__construct
MongoDB::createDBRef
MongoDB


创建数据库引用

MongoDB::createCollection
MongoDB::drop
MongoDB
PHP Manual

MongoDB::createDBRef

(PECL mongo >=0.9.0)

MongoDB::createDBRef — 创建数据库引用

说明

public array MongoDB::createDBRef ( string $collection , mixed $document_or_id )

这个方法是一个创建数据库引用的扩展接口（参考MongoDBRef）

参数

collection

数据库引用指向的集合

document_or_id

如果是一个数组或对象，它的 _id 字段将被用做引用ID，如果是一个 MongoId 对象或简单变量，它本身将作为引用ID。

返回值

返回一个数据库引用数组。

如果一个没有 _id 字段的数组作为 document_or_id 参数，NULL会被返回。

范例

Example #1 MongoDB::createDBRef()实例

演示如何从程序中创建文档的数据库引用。

<?php

$articles = $db->articles;

$article = array(
 'title' => 'Test article',
 'description' => 'Test article description'
);

$articles->insert($article);
$ref = $db->createDBRef('articles', $article);

print_r($article);
print_r($ref);
?>

以上例程的输出类似于：

     Array
     (
         [title] => Test article
         [description] => Test article description
         [_id] => MongoId Object
             (
             )

     )
     Array
     (
         [$ref] => articles
         [$id] => MongoId Object
             (
             )

     )

现在$ref可以被保存到另一个文档中，并在之后通过 MongoDB::getDBRef()或MongoCollection::getDBRef() 方法取回。

Example #2 MongoDB::createDBRef()实例

演示如何在程序中值通过一个id创建数据库引用。

<?php

$id = new MongoId('47cc67093475061e3d9536d2');
$ref = $db->createDBRef('articles', $id);
?>
MongoDB::createCollection
MongoDB::drop
MongoDB


丢弃数据库

MongoDB::createDBRef
MongoDB::dropCollection
MongoDB
PHP Manual

MongoDB::drop

(PECL mongo >=0.9.0)

MongoDB::drop — 丢弃数据库

说明

public array MongoDB::drop ( void )

这个方法丢去当前使用的整个数据库。

这相当于执行：

<?php

public function drop() {
    $this->command(array("dropDatabase" => 1));
}

?>

参数

此函数没有参数。

返回值

返回数据库响应

范例

Example #1 MongoDB::drop() 例子

这个实例演示如何删除一个数据库，以及通常的响应。

<?php

$db = $mongo->foo;
$response = $db->drop();
print_r($response);

?>

以上例程的输出类似于：

Array
(
    [dropped] => foo.$cmd
    [ok] => 1
)
MongoDB::createDBRef
MongoDB::dropCollection
MongoDB


Drops a collection [deprecated]

MongoDB::drop
MongoDB::execute
MongoDB
PHP Manual

MongoDB::dropCollection

(PECL mongo >=0.9.0)

MongoDB::dropCollection — Drops a collection [deprecated]

说明

public array MongoDB::dropCollection ( mixed $coll )
Warning

Deprecated

Use MongoCollection::drop() instead.

This function leaks memory in version 1.0.7 and earlier!

参数

coll

MongoCollection or name of collection to drop.

返回值

Returns the database response.

MongoDB::drop
MongoDB::execute
MongoDB


在数据库服务器上运行JavaScript

MongoDB::dropCollection
MongoDB::forceError
MongoDB
PHP Manual

MongoDB::execute

(PECL mongo >=0.9.3)

MongoDB::execute — 在数据库服务器上运行JavaScript

说明

public array MongoDB::execute ( mixed $code [, array $args = array() ] )

MongoDB服务器运行着一个JavaScript引擎。这个方法允许在服务器上执行任意JavaScript代码。如果你想要利用较少资源处理大量集合，或者在服务器上处理一些结果集以减少网络传输，那么这个方法会游泳。

在服务器运行JavaScript代码会创建一个写锁定，这意味着它锁定了其他操作的执行。在运行一段耗时较长的代码之前，请考虑到这一点。

这是一个数据库指令的包装，它简单的说相当于：

<?php

public function execute($code, $args) {
    return $this->command(array('$eval' => $code, 'args' => $args));
}

?>

如果所执行的代码只有一个语句，且只有一行，MongoDB隐含一个return语句。这允许一些直观的行为，比如下面的例子返回"foo"：

<?php

$db->execute('"foo";');

?>

但是下面这两个例子返回NULL:

<?php

$db->execute('"bar"; "foo";'); // 多个语句

$db->execute('db.foo.count(
);'); // 多行

?>

为了防止意外的行为，最好不要依赖MongoDB决定你的返回值。而是明确的提供一个return语句。上面的例子中，可以把代码改为：

<?php

$db->execute('"bar"; return "foo";');

$db->execute('return db.foo.count(
);');

?>

这样第一个语句会返回"foo"，第二个语句会返回"foo"集合的长度。

参数

code

MongoCode或要执行的字符串

args

给code的参数。

返回值

返回执行结果

范例

Example #1 简单的 MongoDB::execute() 实例

<?php

$response = $db->execute("function() { return 'Hello, world!'; }");
echo $response['retval'];

?>

以上例程的输出类似于：

Hello, world!

Example #2 带参数的 MongoDB::execute() 实例

可选的参数将被传递给JavaScrip函数

<?php

$response = $db->execute("function(greeting, name) { return greeting+', '+name+'!'; }", array("Good bye", "Joe"));
echo $response['retval'];

?>

以上例程的输出类似于：

Good bye, Joe!

Example #3 作用域实例

如果使用 MongoCode 对象代替字符串作为第一个参数。可以传递一个作用域到将要执行的JavaScript中。

<?php

$func =
    "function(greeting, name) { ".
        "return greeting+', '+name+', says '+greeter;".
    "}";
$scope = array("greeter" => "Fred");

$code = new MongoCode($func, $scope);

$response = $db->execute($code, array("Goodbye", "Joe"));
echo $response['retval'];

?>

以上例程的输出类似于：

Goodbye, Joe, says Fred
MongoDB::dropCollection
MongoDB::forceError
MongoDB


Creates a database error

MongoDB::execute
MongoDB::__get
MongoDB
PHP Manual

MongoDB::forceError

(PECL mongo >=0.9.5)

MongoDB::forceError — Creates a database error

说明

public bool MongoDB::forceError ( void )

This method is not very useful for normal MongoDB use. It forces a database error to occur. This means that MongoDB::lastError() will return a generic database error after running this command.

This command is identical to running:

<?php

public function forceError() {
    return $this->command(array('forceerror' => 1));
}

?>

参数

此函数没有参数。

返回值

Returns the database response.

更新日志

版本 | 说明
1.2.11 | Emits E_DEPRECATED when used.

MongoDB::execute
MongoDB::__get
MongoDB


Gets a collection

MongoDB::forceError
MongoDB::getCollectionInfo
MongoDB
PHP Manual

MongoDB::__get

(PECL mongo >=1.0.2)

MongoDB::__get — Gets a collection

说明

public MongoCollection MongoDB::__get ( string $name )

This is the easiest way of getting a collection from a database object. If a collection name contains strange characters, you may have to use MongoDB::selectCollection() instead.

<?php

$mongo = new MongoClient();

// the following two lines are equivalent
$collection = $mongo->selectDB("foo")->selectCollection("bar");
$collection = $mongo->foo->bar;

?>

参数

name

The name of the collection.

返回值

Returns the collection.

MongoDB::forceError
MongoDB::getCollectionInfo
MongoDB


Returns information about collections in this database

MongoDB::__get
MongoDB::getCollectionNames
MongoDB
PHP Manual

MongoDB::getCollectionInfo

(PECL mongo >=1.6.0)

MongoDB::getCollectionInfo — Returns information about collections in this database

说明

public array MongoDB::getCollectionInfo ([ array $options = array() ] )

Gets a list of all collections in the database and returns them as an array of documents, which contain their names and options.

Note: This method will use the » listCollections database command when communicating with MongoDB 2.8+. For previous database versions, the method will query the special system.namespaces collection.

参数

options

An array of options for listing the collections. Currently available options include:

  • "filter"

    Optional query criteria. If provided, this criteria will be used to filter the collections included in the result.

    Relevant fields that may be queried include "name" (collection name as a string, without the database name prefix) and "options" (object containing options used to create the collection)..

    Note: MongoDB 2.6 and earlier versions require the "name" criteria, if specified, to be a string value (i.e. equality match). This is because the driver must prefix the value with the database name in order to query the system.namespaces collection. Later versions of MongoDB do not have this limitation, as the driver will use the listCollections command.

  • "includeSystemCollections"

    Boolean, defaults to FALSE. Determines whether system collections should be included in the result.

The following option may be used with MongoDB 2.8+:

  • "maxTimeMS"

    Specifies a cumulative time limit in milliseconds for processing the operation on the server (does not include idle time). If the operation is not completed by the server within the timeout period, a MongoExecutionTimeoutException will be thrown.

返回值

This function returns an array where each element is an array describing a collection. Elements will contain a name key denoting the name of the collection, and optionally contain an options key denoting an array of objects used to create the collection. For example, capped collections will include capped and size options.

错误／异常

For MongoDB 2.6 and earlier, MongoException will be thrown if a non-string value was specified for the "filter" option's "name" criteria.

范例

Example #1 MongoDB::getCollectionInfo() example

<?php
$m = new MongoClient();
$db = $m->selectDB("demo");
var_dump($db->getCollectionInfo());
?>

以上例程的输出类似于：

array(2) {
  [0]=>
  array(2) {
    ["name"]=>
    string(4) "logs"
    ["options"]=>
    array(2) {
      ["capped"]=>
      bool(true)
      ["size"]=>
      int(10240)
    }
  }
  [1]=>
  array(2) {
    ["name"]=>
    string(5) "users"
    ["options"]=>
    array(1) {
      ["flags"]=>
      int(1)
    }
  }
}

参见

  • MongoDB::getCollectionNames() - Gets an array of names for all collections in this database
  • MongoDB::listCollections() - Gets an array of MongoCollection objects for all collections in this database

MongoDB::__get
MongoDB::getCollectionNames
MongoDB


Gets an array of names for all collections in this database

MongoDB::getCollectionInfo
MongoDB::getDBRef
MongoDB
PHP Manual

MongoDB::getCollectionNames

(PECL mongo >=1.3.0)

MongoDB::getCollectionNames — Gets an array of names for all collections in this database

说明

public array MongoDB::getCollectionNames ([ array $options = array() ] )

Gets a list of all collections in the database and returns their names as an array of strings.

Note: This method will use the » listCollections database command when communicating with MongoDB 2.8+. For previous database versions, the method will query the special system.namespaces collection.

参数

options

An array of options for listing the collections. Currently available options include:

  • "filter"

    Optional query criteria. If provided, this criteria will be used to filter the collections included in the result.

    Relevant fields that may be queried include "name" (collection name as a string, without the database name prefix) and "options" (object containing options used to create the collection)..

    Note: MongoDB 2.6 and earlier versions require the "name" criteria, if specified, to be a string value (i.e. equality match). This is because the driver must prefix the value with the database name in order to query the system.namespaces collection. Later versions of MongoDB do not have this limitation, as the driver will use the listCollections command.

  • "includeSystemCollections"

    Boolean, defaults to FALSE. Determines whether system collections should be included in the result.

The following option may be used with MongoDB 2.8+:

  • "maxTimeMS"

    Specifies a cumulative time limit in milliseconds for processing the operation on the server (does not include idle time). If the operation is not completed by the server within the timeout period, a MongoExecutionTimeoutException will be thrown.

返回值

Returns the collection names as an array of strings.

错误／异常

For MongoDB 2.6 and earlier, MongoException will be thrown if a non-string value was specified for the "filter" option's "name" criteria.

更新日志

版本 | 说明
1.6.0 | Changed first parameter to be an array of options. Pre-1.6.0, the first parameter was a boolean indicating the "includeSystemCollections" option.

范例

Example #1 MongoDB::getCollectionNames() example

<?php
$m = new MongoClient();
$db = $m->selectDB("demo");
$collections = $db->getCollectionNames();

foreach ($collections as $collectionName) {
    echo "Found collection: ", $collectionName, "\n";
}
?>

以上例程的输出类似于：

...
Found collection: img
Found collection: beer
Found collection: collation
...

参见

  • MongoDB::listCollections() - Gets an array of MongoCollection objects for all collections in this database
  • MongoDB::getCollectionInfo() - Returns information about collections in this database

MongoDB::getCollectionInfo
MongoDB::getDBRef
MongoDB


Fetches the document pointed to by a database reference

MongoDB::getCollectionNames
MongoDB::getGridFS
MongoDB
PHP Manual

MongoDB::getDBRef

(PECL mongo >=0.9.0)

MongoDB::getDBRef — Fetches the document pointed to by a database reference

说明

public array MongoDB::getDBRef ( array $ref )

参数

ref

A database reference.

返回值

Returns the document pointed to by the reference.

范例

Example #1 MongoDB::getDBRef() example

Example demonstrating how to get a database reference and what the expected input is.

<?php

 $ref = array(
   '$ref' => 'profiles',
   '$id' => new MongoId('47cc67093475061e3d9536d2')
 );

 $profile = $db->getDBRef($ref);
 ?>

See MongoDB::createDBRef() for more information about how to programatically create DB references.

MongoDB::getCollectionNames
MongoDB::getGridFS
MongoDB


Fetches toolkit for dealing with files stored in this database

MongoDB::getDBRef
MongoDB::getProfilingLevel
MongoDB
PHP Manual

MongoDB::getGridFS

(PECL mongo >=0.9.0)

MongoDB::getGridFS — Fetches toolkit for dealing with files stored in this database

说明

public MongoGridFS MongoDB::getGridFS ([ string $prefix = "fs" ] )

参数

prefix

The prefix for the files and chunks collections.

返回值

Returns a new gridfs object for this database.

范例

Example #1 MongoDB::getGridFS() example

This example demonstrates how get a MongoGridFS instance.

<?php

$db = $mongo->my_db;

$prefix = 'files';
$collection = $db->getGridFS($prefix);

?>

Read more about the MongoGridFS to learn how to store files with MongoDB.

MongoDB::getDBRef
MongoDB::getProfilingLevel
MongoDB


Gets this database's profiling level

MongoDB::getGridFS
MongoDB::getReadPreference
MongoDB
PHP Manual

MongoDB::getProfilingLevel

(PECL mongo >=0.9.0)

MongoDB::getProfilingLevel — Gets this database's profiling level

说明

public int MongoDB::getProfilingLevel ( void )

This returns the current database profiling level.

The database profiler tracks query execution times. If you turn it on (say, using MongoDB::setProfilingLevel() or the shell), you can see how many queries took longer than a given number of milliseconds or the timing for all queries.

Note that profiling slows down queries, so it is better to use in development or testing than in a time-sensitive application.

This function is equivalent to running:

<?php

public function getProfilingLevel() {
    return $this->command(array('profile' => -1));
}

?>

参数

此函数没有参数。

返回值

Returns the profiling level.

参见

  • MongoDB core docs on » profiling
  • MongoDB::setProfilingLevel() - Sets this database's profiling level
MongoDB::getGridFS
MongoDB::getReadPreference
MongoDB


Get the read preference for this database

MongoDB::getProfilingLevel
MongoDB::getSlaveOkay
MongoDB
PHP Manual

MongoDB::getReadPreference

(PECL mongo >=1.3.0)

MongoDB::getReadPreference — Get the read preference for this database

说明

public array MongoDB::getReadPreference ( void )

参数

此函数没有参数。

返回值

This function returns an array describing the read preference. The array contains the values type for the string read preference mode (corresponding to the MongoClient constants), and tagsets containing a list of all tag set criteria. If no tag sets were specified, tagsets will not be present in the array.

更新日志

版本 | 说明
1.3.3 | The return value has changed to be consistent with MongoDB::setReadPreference(). The type value was changed from a number to a string, type_string was removed, and tagsets now expresses tags as key/value pairs instead of colon-delimited strings.

范例

Example #1 MongoDB::getReadPreference() return value example

<?php

$m = new MongoClient();
$db = $m->test;
$db->setReadPreference(MongoClient::RP_SECONDARY, array(
    array('dc' => 'east', 'use' => 'reporting'),
    array('dc' => 'west'),
    array(),
));
var_dump($db->getReadPreference());
?>

以上例程会输出：

array(2) {
  ["type"]=>
  string(9) "secondary"
  ["tagsets"]=>
  array(3) {
    [0]=>
    array(2) {
      ["dc"]=>
      string(4) "east"
      ["use"]=>
      string(9) "reporting"
    }
    [1]=>
    array(1) {
      ["dc"]=>
      string(7) "west"
    }
    [2]=>
    array(0) {
    }
  }
}

参见

  • The read preferences documentation.
  • MongoDB::setReadPreference() - Set the read preference for this database
MongoDB::getProfilingLevel
MongoDB::getSlaveOkay
MongoDB


Get slaveOkay setting for this database

MongoDB::getReadPreference
MongoDB::getWriteConcern
MongoDB
PHP Manual

MongoDB::getSlaveOkay

(PECL mongo >=1.1.0)

MongoDB::getSlaveOkay — Get slaveOkay setting for this database

说明

public bool MongoDB::getSlaveOkay ( void )

See the query section of this manual for information on distributing reads to secondaries.

参数

此函数没有参数。

返回值

Returns the value of slaveOkay for this instance.

更新日志

版本 | 说明
1.2.11 | Emits E_DEPRECATED when used.

参见

  • 读取首选项
  • MongoDB::getReadPreference() - Get the read preference for this database
  • MongoDB::setReadPreference() - Set the read preference for this database
MongoDB::getReadPreference
MongoDB::getWriteConcern
MongoDB


Get the write concern for this database

MongoDB::getSlaveOkay
MongoDB::lastError
MongoDB
PHP Manual

MongoDB::getWriteConcern

(PECL mongo >=1.5.0)

MongoDB::getWriteConcern — Get the write concern for this database

说明

public array MongoDB::getWriteConcern ( void )

参数

此函数没有参数。

返回值

This function returns an array describing the write concern. The array contains the values w for an integer acknowledgement level or string mode, and wtimeout denoting the maximum number of milliseconds to wait for the server to satisfy the write concern.

范例

Example #1 MongoDB::getWriteConcern() return value example

<?php

$mc = new MongoClient('mongodb://localhost:27017', array('wTimeoutMS' => 500));
$db = $mc->selectDB('test');
var_dump($db->getWriteConcern());

$db->setWriteConcern(1, 1000);
var_dump($db->getWriteConcern());
?>

以上例程会输出：

array(2) {
  ["w"]=>
  int(1)
  ["wtimeout"]=>
  int(500)
}
array(2) {
  ["w"]=>
  int(1)
  ["wtimeout"]=>
  int(1000)
}

参见

  • The write concern documentation.
  • MongoDB::setWriteConcern() - Set the write concern for this database
MongoDB::getSlaveOkay
MongoDB::lastError
MongoDB


Check if there was an error on the most recent db operation performed

MongoDB::getWriteConcern
MongoDB::listCollections
MongoDB
PHP Manual

MongoDB::lastError

(PECL mongo >=0.9.5)

MongoDB::lastError — Check if there was an error on the most recent db operation performed

说明

public array MongoDB::lastError ( void )

This method is equivalent to:

<?php

public function lastError() {
    return $this->command(array('getlasterror' => 1));
}

?>

参数

此函数没有参数。

返回值

Returns the error, if there was one.

范例

Example #1 MongoDB::lastError() NULL error example

<?php
$db->resetError();
var_dump($db->lastError());
?>

以上例程的输出类似于：

array(3) {
  ["err"]=>
  NULL
  ["n"]=>
  int(0)
  ["ok"]=>
  float(1)
}

Example #2 MongoDB::lastError() duplicate key example

<?php
$c = $db->selectCollection("foo");

// insert two documents with the same _id
$c->insert(array("_id" => 1));
$c->insert(array("_id" => 1));

var_dump($db->lastError());
?>

以上例程的输出类似于：

array(3) {
  ["err"]=>
  string(64) "E11000 duplicate key errorindex: foo.foo.$_id_  dup key: { : 1 }"
  ["n"]=>
  int(0)
  ["ok"]=>
  float(1)
}
MongoDB::getWriteConcern
MongoDB::listCollections
MongoDB


Gets an array of MongoCollection objects for all collections in this database

MongoDB::lastError
MongoDB::prevError
MongoDB
PHP Manual

MongoDB::listCollections

(PECL mongo >=0.9.0)

MongoDB::listCollections — Gets an array of MongoCollection objects for all collections in this database

说明

public array MongoDB::listCollections ([ array $options = array() ] )

Gets a list of all collections in the database and returns them as an array of MongoCollection objects.

Note: This method will use the » listCollections database command when communicating with MongoDB 2.8+. For previous database versions, the method will query the special system.namespaces collection.

参数

options

An array of options for listing the collections. Currently available options include:

  • "filter"

    Optional query criteria. If provided, this criteria will be used to filter the collections included in the result.

    Relevant fields that may be queried include "name" (collection name as a string, without the database name prefix) and "options" (object containing options used to create the collection)..

    Note: MongoDB 2.6 and earlier versions require the "name" criteria, if specified, to be a string value (i.e. equality match). This is because the driver must prefix the value with the database name in order to query the system.namespaces collection. Later versions of MongoDB do not have this limitation, as the driver will use the listCollections command.

  • "includeSystemCollections"

    Boolean, defaults to FALSE. Determines whether system collections should be included in the result.

The following option may be used with MongoDB 2.8+:

  • "maxTimeMS"

    Specifies a cumulative time limit in milliseconds for processing the operation on the server (does not include idle time). If the operation is not completed by the server within the timeout period, a MongoExecutionTimeoutException will be thrown.

返回值

Returns an array of MongoCollection objects.

错误／异常

For MongoDB 2.6 and earlier, MongoException will be thrown if a non-string value was specified for the "filter" option's "name" criteria.

更新日志

版本 | 说明
1.6.0 | Changed first parameter to be an array of options. Pre-1.6.0, the first parameter was a boolean indicating the "includeSystemCollections" option.
1.3.0 | Added the includeSystemCollections parameter.

范例

Example #1 MongoDB::listCollections() example

The following example demonstrates running count on each collection in a database.

<?php

$m = new MongoClient();
$db = $m->selectDB("demo");
$collections = $db->listCollections();

foreach ($collections as $collection) {
    echo "amount of documents in $collection: ";
    echo $collection->count(), "\n";
}

?>

以上例程的输出类似于：

...
amount of documents in demo.pubs: 4
amount of documents in demo.elephpants: 3
amount of documents in demo.cities: 22840
...

参见

  • MongoDB::getCollectionNames() - Gets an array of names for all collections in this database
  • MongoDB::getCollectionInfo() - Returns information about collections in this database

MongoDB::lastError
MongoDB::prevError
MongoDB


Checks for the last error thrown during a database operation

MongoDB::listCollections
MongoDB::repair
MongoDB
PHP Manual

MongoDB::prevError

(PECL mongo >=0.9.5)

MongoDB::prevError — Checks for the last error thrown during a database operation

说明

public array MongoDB::prevError ( void )

MongoDB::lastError() is usually preferred to this. This method returns the last database error that occurred and how many operations ago it occurred. It is mostly deprecated.

参数

此函数没有参数。

返回值

Returns the error and the number of operations ago it occurred.

更新日志

版本 | 说明
1.2.11 | Emits E_DEPRECATED when used.

MongoDB::listCollections
MongoDB::repair
MongoDB


Repairs and compacts this database

MongoDB::prevError
MongoDB::resetError
MongoDB
PHP Manual

MongoDB::repair

(PECL mongo >=0.9.0)

MongoDB::repair — Repairs and compacts this database

说明

public array MongoDB::repair ([ bool $preserve_cloned_files = FALSE [, bool $backup_original_files = FALSE ]] )

This creates a fresh copy of all database data. It will remove any corrupt data and compact and large stretches of free space it finds. This is a very slow operation on a large database.

This is usually run from the shell or the command line, not the driver.

It is equivalent to the function:

<?php

public function repair() {
    return $this->command(array('repairDatabase' => 1));
}

?>

参数

preserve_cloned_files

If cloned files should be kept if the repair fails.

backup_original_files

If original files should be backed up.

返回值

Returns db response.

参见

MongoDB core docs on » repairDatabase.

范例

Example #1 MongoDB::repair() example

This example demonstrates how to repare and compact a database.

<?php

$db = $mongo->foo;

$response = $db->repair();
print_r($response);

?>

以上例程的输出类似于：

Array
(
    [ok] => 1
)
MongoDB::prevError
MongoDB::resetError
MongoDB


Clears any flagged errors on the database

MongoDB::repair
MongoDB::selectCollection
MongoDB
PHP Manual

MongoDB::resetError

(PECL mongo >=0.9.5)

MongoDB::resetError — Clears any flagged errors on the database

说明

public array MongoDB::resetError ( void )

This method is not used in normal operations. It resets the database error tracker (which can be incremented with MongoDB::forceError(), also not normally used).

It is equivalent to running:

<?php

public function resetError() {
    return $this->command(array('reseterror' => 1));
}

?>

参数

此函数没有参数。

返回值

Returns the database response.

更新日志

版本 | 说明
1.2.11 | Emits E_DEPRECATED when used.

MongoDB::repair
MongoDB::selectCollection
MongoDB


Gets a collection

MongoDB::resetError
MongoDB::setProfilingLevel
MongoDB
PHP Manual

MongoDB::selectCollection

(PECL mongo >=0.9.0)

MongoDB::selectCollection — Gets a collection

说明

public MongoCollection MongoDB::selectCollection ( string $name )

参数

name

The collection name.

返回值

Returns a new collection object.

错误／异常

Throws Exception if the collection name is invalid.

MongoDB::resetError
MongoDB::setProfilingLevel
MongoDB


Sets this database's profiling level

MongoDB::selectCollection
MongoDB::setReadPreference
MongoDB
PHP Manual

MongoDB::setProfilingLevel

(PECL mongo >=0.9.0)

MongoDB::setProfilingLevel — Sets this database's profiling level

说明

public int MongoDB::setProfilingLevel ( int $level )

This changes the current database profiling level.

This function is equivalent to running:

<?php

public function setProfilingLevel($level) {
    return $this->command(array('profile' => $level));
}

?>

The options for level are 0 (off), 1 (queries > 100ms), and 2 (all queries). If you would like to profile queries that take longer than another time period, use the database command and pass it a second option, the number of milliseconds. For example, to profile all queries that take longer than one second, run:

<?php

$result = $this->command(array('profile' => 1, 'slowms' => 1000));

?>

Profiled queries will appear in the system.profile collection of this database.

参数

level

Profiling level.

返回值

Returns the previous profiling level.

参见

  • MongoDB core docs on » profiling
  • MongoDB::getProfilingLevel() - Gets this database's profiling level
MongoDB::selectCollection
MongoDB::setReadPreference
MongoDB


Set the read preference for this database

MongoDB::setProfilingLevel
MongoDB::setSlaveOkay
MongoDB
PHP Manual

MongoDB::setReadPreference

(PECL mongo >=1.3.0)

MongoDB::setReadPreference — Set the read preference for this database

说明

public bool MongoDB::setReadPreference ( string $read_preference [, array $tags ] )

参数

read_preference

The read preference mode: MongoClient::RP_PRIMARY, MongoClient::RP_PRIMARY_PREFERRED, MongoClient::RP_SECONDARY, MongoClient::RP_SECONDARY_PREFERRED, or MongoClient::RP_NEAREST.

tags

An array of zero or more tag sets, where each tag set is itself an array of criteria used to match tags on replica set members.

返回值

Returns TRUE on success, or FALSE otherwise.

错误／异常

Emits E_WARNING if either parameter is invalid, or if one or more tag sets are provided with the MongoClient::RP_PRIMARY read preference mode.

范例

Example #1 MongoDB::setReadPreference() tag set array syntax example

<?php

$m = new MongoClient();
$db = $m->test;

// Prefer the nearest server in the "east" data center also used for reporting,
// but fall back to a server in the "west" data center
$db->setReadPreference(MongoClient::RP_NEAREST, array(
    array('dc' => 'east', 'use' => 'reporting'),
    array('dc' => 'west'),
));
?>

参见

  • The read preferences documentation.
  • MongoDB::getReadPreference() - Get the read preference for this database
MongoDB::setProfilingLevel
MongoDB::setSlaveOkay
MongoDB


Change slaveOkay setting for this database

MongoDB::setReadPreference
MongoDB::setWriteConcern
MongoDB
PHP Manual

MongoDB::setSlaveOkay

(PECL mongo >=1.1.0)

MongoDB::setSlaveOkay — Change slaveOkay setting for this database

说明

public bool MongoDB::setSlaveOkay ([ bool $ok = true ] )

See the query section of this manual for information on distributing reads to secondaries.

参数

ok

If reads should be sent to secondary members of a replica set for all possible queries using this MongoDB instance.

返回值

Returns the former value of slaveOkay for this instance.

更新日志

版本 | 说明
1.2.11 | Emits E_DEPRECATED when used.

参见

  • 读取首选项
  • MongoDB::setReadPreference() - Set the read preference for this database
  • MongoDB::getReadPreference() - Get the read preference for this database
MongoDB::setReadPreference
MongoDB::setWriteConcern
MongoDB


Set the write concern for this database

MongoDB::setSlaveOkay
MongoDB::__toString
MongoDB
PHP Manual

MongoDB::setWriteConcern

(PECL mongo >=1.5.0)

MongoDB::setWriteConcern — Set the write concern for this database

说明

public bool MongoDB::setWriteConcern ( mixed $w [, int $wtimeout ] )

参数

w

The write concern. This may be an integer denoting the number of servers required to acknowledge the write, or a string mode (e.g. "majority").

wtimeout

The maximum number of milliseconds to wait for the server to satisfy the write concern.

返回值

Returns TRUE on success, or FALSE otherwise.

错误／异常

Emits E_WARNING if the w parameter is not an integer or string value.

范例

Example #1 MongoDB::setWriteConcern() example

<?php

$mc = new MongoClient('mongodb://rs1.example.com,rs2.example.com');
$db = $mc->selectDB('test');

// Require that the majority of servers in the replica set acknowledge writes
// within three seconds.
$db->setWriteConcern('majority', 3000);
?>

参见

  • The write concern documentation.
  • MongoDB::getWriteConcern() - Get the write concern for this database
MongoDB::setSlaveOkay
MongoDB::__toString
MongoDB


The name of this database

MongoDB::setWriteConcern
MongoCollection
MongoDB
PHP Manual

MongoDB::__toString

(PECL mongo >=0.9.0)

MongoDB::__toString — The name of this database

说明

public string MongoDB::__toString ( void )

参数

此函数没有参数。

返回值

Returns this database's name.

MongoDB::setWriteConcern
MongoCollection
MongoDB


The MongoCollection class

(PECL mongo >=0.9.0)

简介

Represents a MongoDB collection.

Collection names can use any character in the ASCII set. Some valid collection names are "", "...", "my collection", and "*&#@".

User-defined collection names cannot contain the $ symbol. There are certain system collections which use a $ in their names (e.g., local.oplog.$main), but it is a reserved character. If you attempt to create and use a collection with a $ in the name, MongoDB will assert.

类摘要

MongoCollection {
/* 常量 */
const int ASCENDING = 1 ;
const int DESCENDING = -1 ;
/* Fields */
public MongoDB $db = NULL ;
public integer $w ;
public integer $wtimeout ;
/* 方法 */
public array aggregate ( array $pipeline [, array $options ] )
public MongoCommandCursor aggregateCursor ( array $command [, array $options ] )
public mixed batchInsert ( array $a [, array $options = array() ] )
public __construct ( MongoDB $db , string $name )
public int count ([ array $query = array() [, int $limit = 0 [, int $skip = 0 ]]] )
public array createDBRef ( mixed $document_or_id )
public bool createIndex ( array $keys [, array $options = array() ] )
public array deleteIndex ( string|array $keys )
public array deleteIndexes ( void )
public array distinct ( string $key [, array $query ] )
public array drop ( void )
public bool ensureIndex ( string|array $key|keys [, array $options = array() ] )
public MongoCursor find ([ array $query = array() [, array $fields = array() ]] )
public array findAndModify ( array $query [, array $update [, array $fields [, array $options ]]] )
 public array findOne
  ([ array $query = array()
 [, array $fields = array()
 [, array $options = array()
]]] )
public MongoCollection __get ( string $name )
public array getDBRef ( array $ref )
public array getIndexInfo ( void )
public string getName ( void )
public array getReadPreference ( void )
public bool getSlaveOkay ( void )
public array getWriteConcern ( void )
public array group ( mixed $keys , array $initial , MongoCode $reduce [, array $options = array() ] )
public bool|array insert ( array|object $a [, array $options = array() ] )
public array[MongoCommandCursor] parallelCollectionScan ( int $num_cursors )
public bool|array remove ([ array $criteria = array() [, array $options = array() ]] )
public mixed save ( array|object $a [, array $options = array() ] )
public bool setReadPreference ( string $read_preference [, array $tags ] )
public bool setSlaveOkay ([ bool $ok = true ] )
public bool setWriteConcern ( mixed $w [, int $wtimeout ] )
static protected string toIndexString ( mixed $keys )
public string __toString ( void )
public bool|array update ( array $criteria , array $new_object [, array $options = array() ] )
public array validate ([ bool $scan_data = FALSE ] )
}

预定义常量

MongoCollection::ASCENDING
1
Ascending direction for sorts and index creation.
MongoCollection::DESCENDING
-1
Descending direction for sorts and index creation.

Fields

db

The "parent" database for this collection.

w

The number of servers to replicate a change to before returning success. Value is inherited from the parent database. The MongoDB class has a more detailed description of how w works.

wtimeout

The number of milliseconds to wait for $this->w replications to take place. Value is inherited from the parent database. The MongoDB class has a more detailed description of how wtimeout works.

参见

MongoDB core docs on » collections.

Table of Contents

  • MongoCollection::aggregate — Perform an aggregation using the aggregation framework
  • MongoCollection::aggregateCursor — Execute an aggregation pipeline command and retrieve results through a cursor
  • MongoCollection::batchInsert — Inserts multiple documents into this collection
  • MongoCollection::__construct — 创建一个新的集合
  • MongoCollection::count — 返回集合中的文档数量
  • MongoCollection::createDBRef — 创建一个数据库引用
  • MongoCollection::createIndex — Creates an index on the specified field(s) if it does not already exist.
  • MongoCollection::deleteIndex — Deletes an index from this collection
  • MongoCollection::deleteIndexes — 删除集合的所有索引
  • MongoCollection::distinct — 获取集合里指定键的不同值的列表。
  • MongoCollection::drop — 删除该集合
  • MongoCollection::ensureIndex — Creates an index on the specified field(s) if it does not already exist.
  • MongoCollection::find — 查询该集合，并返回结果集的 MongoCursor
  • MongoCollection::findAndModify — Update a document and return it
  • MongoCollection::findOne — Queries this collection, returning a single element
  • MongoCollection::__get — Gets a collection
  • MongoCollection::getDBRef — Fetches the document pointed to by a database reference
  • MongoCollection::getIndexInfo — Returns information about indexes on this collection
  • MongoCollection::getName — 返回这个集合的名称
  • MongoCollection::getReadPreference — Get the read preference for this collection
  • MongoCollection::getSlaveOkay — Get slaveOkay setting for this collection
  • MongoCollection::getWriteConcern — Get the write concern for this collection
  • MongoCollection::group — Performs an operation similar to SQL's GROUP BY command
  • MongoCollection::insert — 插入文档到集合中
  • MongoCollection::parallelCollectionScan — Returns an array of cursors to iterator over a full collection in parallel
  • MongoCollection::remove — 从集合中删除记录
  • MongoCollection::save — 保存一个文档到集合
  • MongoCollection::setReadPreference — Set the read preference for this collection
  • MongoCollection::setSlaveOkay — Change slaveOkay setting for this collection
  • MongoCollection::setWriteConcern — Set the write concern for this database
  • MongoCollection::toIndexString — Converts keys specifying an index to its identifying string
  • MongoCollection::__toString — String representation of this collection
  • MongoCollection::update — Update records based on a given criteria
  • MongoCollection::validate — Validates this collection
MongoDB::__toString
MongoCollection::aggregate
核心类


Perform an aggregation using the aggregation framework

MongoCollection
MongoCollection::aggregateCursor
MongoCollection
PHP Manual

MongoCollection::aggregate

(PECL mongo >=1.3.0)

MongoCollection::aggregate — Perform an aggregation using the aggregation framework

说明

public array MongoCollection::aggregate ( array $pipeline [, array $options ] )
public array MongoCollection::aggregate ( array $op [, array $op [, array $... ]] )

The MongoDB » aggregation framework provides a means to calculate aggregated values without having to use MapReduce. While MapReduce is powerful, it is often more difficult than necessary for many simple aggregation tasks, such as totaling or averaging field values.

This method accepts either a variable amount of pipeline operators, or a single array of operators constituting the pipeline.

参数

pipeline

An array of pipeline operators.

options

Options for the aggregation command. Valid options include:

  • "allowDiskUse"

    Allow aggregation stages to write to temporary files

  • "cursor"

    Options controlling the creation of the cursor object. This option causes the command to return a result document suitable for constructing a MongoCommandCursor. If you need to use this option, you should consider using MongoCollection::aggregateCursor().

  • "explain"

    Return information on the processing of the pipeline.

  • "maxTimeMS"

    Specifies a cumulative time limit in milliseconds for processing the operation on the server (does not include idle time). If the operation is not completed by the server within the timeout period, a MongoExecutionTimeoutException will be thrown.

Or

op

First pipeline operator.

op

The second pipeline operator.

...

Additional pipeline operators.

返回值

The result of the aggregation as an array. The ok will be set to 1 on success, 0 on failure.

错误／异常

When an error occurs an array with the following keys will be returned:

  • errmsg - containing the reason for the failure
  • code - the errorcode of the failure
  • ok - will be set to 0.

更新日志

版本 | 说明
1.5.0 | Added optional options argument

范例

Example #1 MongoCollection::aggregate() example

The following example aggregation operation pivots data to create a set of author names grouped by tags applied to an article. Call the aggregation framework by issuing the following command:

<?php
$m = new MongoClient("localhost");
$c = $m->selectDB("examples")->selectCollection("article");
$data = array (
    'title' => 'this is my title',
    'author' => 'bob',
    'posted' => new MongoDate,
    'pageViews' => 5,
    'tags' => array ( 'fun', 'good', 'fun' ),
    'comments' => array (
      array (
        'author' => 'joe',
        'text' => 'this is cool',
      ),
      array (
        'author' => 'sam',
        'text' => 'this is bad',
      ),
    ),
    'other' =>array (
      'foo' => 5,
    ),
);
$d = $c->insert($data, array("w" => 1));

$ops = array(
    array(
        '$project' => array(
            "author" => 1,
            "tags"   => 1,
        )
    ),
    array('$unwind' => '$tags'),
    array(
        '$group' => array(
            "_id" => array("tags" => '$tags'),
            "authors" => array('$addToSet' => '$author'),
        ),
    ),
);
$results = $c->aggregate($ops);
var_dump($results);
?>

以上例程会输出：

array(2) {
  ["result"]=>
  array(2) {
    [0]=>
    array(2) {
      ["_id"]=>
      array(1) {
        ["tags"]=>
        string(4) "good"
      }
      ["authors"]=>
      array(1) {
        [0]=>
        string(3) "bob"
      }
    }
    [1]=>
    array(2) {
      ["_id"]=>
      array(1) {
        ["tags"]=>
        string(3) "fun"
      }
      ["authors"]=>
      array(1) {
        [0]=>
        string(3) "bob"
      }
    }
  }
  ["ok"]=>
  float(1)
}

The following examples use the » zipcode data set. Use mongoimport to load this data set into your mongod instance.

Example #2 MongoCollection::aggregate() example

To return all states with a population greater than 10 million, use the following aggregation operation:

<?php
$m = new MongoClient("localhost");
$c = $m->selectDB("test")->selectCollection("zips");

$pipeline = array(
    array(
        '$group' => array(
            '_id' => array('state' => '$state'),
            'totalPop' => array('$sum' => '$pop')
        )
    ),
    array(
        '$match' => array(
            'totalPop' => array('$gte' => 10 * 1000 * 1000)
        )
    ),
);
$out = $c->aggregate($pipeline);
var_dump($out);
?>

以上例程的输出类似于：

array(2) {
  ["result"]=>
  array(7) {
    [0]=>
    array(2) {
      ["_id"]=>
      string(2) "TX"
      ["totalPop"]=>
      int(16986510)
    }
    [1]=>
    array(2) {
      ["_id"]=>
      string(2) "PA"
      ["totalPop"]=>
      int(11881643)
    }
    [2]=>
    array(2) {
      ["_id"]=>
      string(2) "NY"
      ["totalPop"]=>
      int(17990455)
    }
    [3]=>
    array(2) {
      ["_id"]=>
      string(2) "IL"
      ["totalPop"]=>
      int(11430602)
    }
    [4]=>
    array(2) {
      ["_id"]=>
      string(2) "CA"
      ["totalPop"]=>
      int(29760021)
    }
    [5]=>
    array(2) {
      ["_id"]=>
      string(2) "OH"
      ["totalPop"]=>
      int(10847115)
    }
    [6]=>
    array(2) {
      ["_id"]=>
      string(2) "FL"
      ["totalPop"]=>
      int(12937926)
    }
  }
  ["ok"]=>
  float(1)
}

Example #3 MongoCollection::aggregate() example

To return the average populations for cities in each state, use the following aggregation operation:

<?php
$m = new MongoClient;
$c = $m->selectDB("test")->selectCollection("zips");

$out = $c->aggregate(
    array(
        '$group' => array(
            '_id' => array('state' => '$state', 'city' => '$city' ),
            'pop' => array('$sum' => '$pop' )
        )
    ),
    array(
        '$group' => array(
            '_id' => '$_id.state',
            'avgCityPop' => array('$avg' => '$pop')
        )
    )
);

var_dump($out);
?>

以上例程的输出类似于：

array(2) {
  ["result"]=>
  array(51) {
    [0]=>
    array(2) {
      ["_id"]=>
      string(2) "DC"
      ["avgCityPop"]=>
      float(303450)
    }
    [1]=>
    array(2) {
      ["_id"]=>
      string(2) "DE"
      ["avgCityPop"]=>
      float(14481.913043478)
    }
...
    [49]=>
    array(2) {
      ["_id"]=>
      string(2) "WI"
      ["avgCityPop"]=>
      float(7323.0074850299)
    }
    [50]=>
    array(2) {
      ["_id"]=>
      string(2) "WV"
      ["avgCityPop"]=>
      float(2759.1953846154)
    }
  }
  ["ok"]=>
  float(1)
}

Example #4 MongoCollection::aggregate() with command options

To return information on how the pipeline will be processed we use the explain command option:

<?php
$m = new MongoClient;
$c = $m->selectDB("test")->selectCollection("zips");

$pipeline = array(
    array(
        '$group' => array(
            '_id' => '$state',
           'totalPop' => array('$sum' => '$pop'),
        ),
    ),
    array(
        '$match' => array(
            'totalPop' => array('$gte' => 10 * 1000 * 1000)
        )
    ),
    array(
        '$sort' => array("totalPop" => -1),
    ),
);

$options = array("explain" => true);
$out = $c->aggregate($pipeline, $options);
var_dump($out);
?>

以上例程的输出类似于：

array(2) {
  ["stages"]=>
  array(4) {
    [0]=>
    array(1) {
      ["$cursor"]=>
      array(3) {
        ["query"]=>
        array(0) {
        }
        ["fields"]=>
        array(3) {
          ["pop"]=>
          int(1)
          ["state"]=>
          int(1)
          ["_id"]=>
          int(0)
        }
        ["plan"]=>
        array(4) {
          ["cursor"]=>
          string(11) "BasicCursor"
          ["isMultiKey"]=>
          bool(false)
          ["scanAndOrder"]=>
          bool(false)
          ["allPlans"]=>
          array(1) {
            [0]=>
            array(3) {
              ["cursor"]=>
              string(11) "BasicCursor"
              ["isMultiKey"]=>
              bool(false)
              ["scanAndOrder"]=>
              bool(false)
            }
          }
        }
      }
    }
    [1]=>
    array(1) {
      ["$group"]=>
      array(2) {
        ["_id"]=>
        string(6) "$state"
        ["totalPop"]=>
        array(1) {
          ["$sum"]=>
          string(4) "$pop"
        }
      }
    }
    [2]=>
    array(1) {
      ["$match"]=>
      array(1) {
        ["totalPop"]=>
        array(1) {
          ["$gte"]=>
          int(10000000)
        }
      }
    }
    [3]=>
    array(1) {
      ["$sort"]=>
      array(1) {
        ["sortKey"]=>
        array(1) {
          ["totalPop"]=>
          int(-1)
        }
      }
    }
  }
  ["ok"]=>
  float(1)
}

参见

  • MongoCollection::aggregateCursor() - Execute an aggregation pipeline command and retrieve results through a cursor
  • The MongoDB » aggregation framework
MongoCollection
MongoCollection::aggregateCursor
MongoCollection


Execute an aggregation pipeline command and retrieve results through a cursor

MongoCollection::aggregate
MongoCollection::batchInsert
MongoCollection
PHP Manual

MongoCollection::aggregateCursor

(PECL mongo >=1.5.0)

MongoCollection::aggregateCursor — Execute an aggregation pipeline command and retrieve results through a cursor

说明

public MongoCommandCursor MongoCollection::aggregateCursor ( array $command [, array $options ] )

With this method you can execute Aggregation Framework pipelines and retrieve the results through a cursor, instead of getting just one document back as you would with MongoCollection::aggregate(). This method returns a MongoCommandCursor object. This cursor object implements the Iterator interface just like the MongoCursor objects that are returned by the MongoCollection::find() method.

Note: The resulting MongoCommandCursor will inherit this collection's read preference. MongoCommandCursor::setReadPreference() may be used to change the read preference before iterating on the cursor.

参数

pipeline

The Aggregation Framework pipeline to execute.

options

Options for the aggregation command. Valid options include:

  • "allowDiskUse"

    Allow aggregation stages to write to temporary files

  • "cursor"

    It is possible to configure how many initial documents the server should return with the first result set. The default initial batch size is 101. You can change it by adding the batchSize option:

    <?php
    $collection    ->aggregateCursor(
            $pipeline,
        [     "cursor" => [ "batchSize" => 4 ] ]
    );

    This option only configures the size of the first batch. To configure the size of future batches, please use the MongoCommandCursor::batchSize() method on the returned MongoCommandCursor object.

  • "explain"

    Return information on the processing of the pipeline. This option may cause the command to return a result document that is unsuitable for constructing a MongoCommandCursor. If you need to use this option, you should consider using MongoCollection::aggregate().

  • "maxTimeMS"

    Specifies a cumulative time limit in milliseconds for processing the operation on the server (does not include idle time). If the operation is not completed by the server within the timeout period, a MongoExecutionTimeoutException will be thrown.

返回值

Returns a MongoCommandCursor object. Because this implements the Iterator interface you can iterate over each of the results as returned by the command query. The MongoCommandCursor also implements the MongoCursorInterface interface which adds the MongoCommandCursor::batchSize(), MongoCommandCursor::dead(), MongoCommandCursor::info() methods.

范例

Example #1 MongoCollection::aggregateCursor() example

Finding all of the distinct values for a key.

<?php
$m = new MongoClient;
$db = $m->test;
$people = $db->people;
$people->drop();

$people->insert(array("name" => "Joe", "points" => 4));
$people->insert(array("name" => "Molly", "points" => 43));
$people->insert(array("name" => "Sally", "points" => 22));
$people->insert(array("name" => "Joe", "points" => 22));
$people->insert(array("name" => "Molly", "points" => 87));

$ages = $people->aggregateCursor( [
        [ '$group' => [ '_id' => '$name', 'points' => [ '$sum' => '$points' ] ] ],
        [ '$sort' => [ 'points' => -1 ] ],
] );

foreach ($ages as $person) {
    echo "{$person['_id']}: {$person['points']}\n";
}

?>

以上例程的输出类似于：

Molly: 130
Joe: 26
Sally: 22

Example #2 MongoCollection::aggregateCursor() example with different initial batch size

Finding all of the distinct values for a key.

<?php
$m = new MongoClient;
$db = $m->test;
$people = $db->people;
$people->drop();

/* Insert some sample data */
$people->insert(array("name" => "Joe", "points" => 4));
$people->insert(array("name" => "Molly", "points" => 43));
$people->insert(array("name" => "Sally", "points" => 22));
$people->insert(array("name" => "Joe", "points" => 22));
$people->insert(array("name" => "Molly", "points" => 87));

/* Run the command cursor */
$ages = $people->aggregateCursor(
    [
        [ '$group' => [ '_id' => '$name', 'points' => [ '$sum' => '$points' ] ] ],
        [ '$sort' => [ 'points' => -1 ] ],
    ],
    [ "cursor" => [ "batchSize" => 4 ] ]
);

foreach ($ages as $person) {
    echo "{$person['_id']}: {$person['points']}\n";
}

?>

以上例程的输出类似于：

Molly: 130
Joe: 26
Sally: 22

参见

  • MongoDB::command() - 执行一条 Mongo 指令
  • MongoCommandCursor
  • MongoCommandCursor::batchSize()
  • MongoCollection::aggregate() - Perform an aggregation using the aggregation framework
  • The MongoDB » aggregation framework

MongoCollection::aggregate
MongoCollection::batchInsert
MongoCollection


Inserts multiple documents into this collection

MongoCollection::aggregateCursor
MongoCollection::__construct
MongoCollection
PHP Manual

MongoCollection::batchInsert

(PECL mongo >=0.9.0)

MongoCollection::batchInsert — Inserts multiple documents into this collection

说明

public mixed MongoCollection::batchInsert ( array $a [, array $options = array() ] )

参数

a

An array of arrays or objects. If any objects are used, they may not have protected or private properties.

Note:

If the documents to insert do not have an _id key or property, a new MongoId instance will be created and assigned to it. See MongoCollection::insert() for additional information on this behavior.

options

An array of options for the batch of insert operations. Currently available options include:

  • "continueOnError"

    Boolean, defaults to FALSE. If set, the database will not stop processing a bulk insert if one fails (eg due to duplicate IDs). This makes bulk insert behave similarly to a series of single inserts, except that calling MongoDB::lastError() will have an error set if any insert fails, not just the last one. If multiple errors occur, only the most recent will be reported by MongoDB::lastError().

    Note:

    Please note that continueOnError affects errors on the database side only. If you try to insert a document that has errors (for example it contains a key with an empty name), then the document is not even transferred to the database as the driver detects this error and bails out. continueOnError has no effect on errors detected in the documents by the driver.

  • "fsync"

    Boolean, defaults to FALSE. Forces the insert to be synced to disk before returning success. If TRUE, an acknowledged insert is implied and will override setting w to 0.

  • "j"

    Boolean, defaults to FALSE. Forces the write operation to block until it is synced to the journal on disk. If TRUE, an acknowledged write is implied and this option will override setting "w" to 0.

    Note: If this option is used and journaling is disabled, MongoDB 2.6+ will raise an error and the write will fail; older server versions will simply ignore the option.

  • "socketTimeoutMS"

    This option specifies the time limit, in milliseconds, for socket communication. If the server does not respond within the timeout period, a MongoCursorTimeoutException will be thrown and there will be no way to determine if the server actually handled the write or not. A value of -1 may be specified to block indefinitely. The default value for MongoClient is 30000 (30 seconds).

  • "w"

    See WriteConcerns. The default value for MongoClient is 1.

  • "wTimeoutMS"

    This option specifies the time limit, in milliseconds, for write concern acknowledgement. It is only applicable when "w" is greater than 1, as the timeout pertains to replication. If the write concern is not satisfied within the time limit, a MongoCursorException will be thrown. A value of 0 may be specified to block indefinitely. The default value for MongoClient is 10000 (ten seconds).

The following options are deprecated and should no longer be used:

  • "safe"

    Deprecated. Please use the WriteConcern w option.

  • "timeout"

    Integer, defaults to MongoCursor::$timeout. If "safe" is set, this sets how long (in milliseconds) for the client to wait for a database response. If the database does not respond within the timeout period, a MongoCursorTimeoutException will be thrown.

  • "wtimeout"

    Deprecated alias for "wTimeoutMS".

返回值

If the w parameter is set to acknowledge the write, returns an associative array with the status of the inserts ("ok") and any error that may have occurred ("err"). Otherwise, returns TRUE if the batch insert was successfully sent, FALSE otherwise.

错误／异常

Throws MongoException if any inserted documents are empty or if they contains zero-length keys. Attempting to insert an object with protected and private properties will cause a zero-length key error.

Throws MongoCursorException if the "w" option is set and the write fails.

Throws MongoCursorTimeoutException if the "w" option is set to a value greater than one and the operation takes longer than MongoCursor::$timeout milliseconds to complete. This does not kill the operation on the server, it is a client-side timeout. The operation in MongoCollection::$wtimeout is milliseconds.

更新日志

版本 | 说明
1.5.0 | Added the "wTimeoutMS" option, which replaces "wtimeout". Emits E_DEPRECATED when "wtimeout" is used. Added the "socketTimeoutMS" option, which replaces "timeout". Emits E_DEPRECATED when "timeout" is used. Emits E_DEPRECATED when "safe" is used.
1.3.4 | Added "wtimeout" option.
1.3.0 | Added "w" option.
1.2.7 | Added "continueOnError" option.
1.0.9 | Added ability to pass integers to the "safe" option, which previously only accepted booleans. Added "fsync" option.
1.0.5 | Added options parameter.

范例

Example #1 MongoCollection::batchInsert() example

Batch insertion is a quick way to add many elements to the database at once

<?php

$users = array();
for ($i = 0; $i<100; $i++) {
  $users[] = array('username' => 'user'.$i, 'i' => $i);
}

$mongo = new MongoClient();
$collection = $mongo->my_db->users;
$collection->drop();

$collection->batchInsert($users);

foreach ($users as $user) {
  echo $user['_id']."\n"; // populated with instanceof MongoId
}

$users = $collection->find()->sort(array('i' => 1));
foreach ($users as $user) {
    var_dump($user['username']);
}

?>

以上例程的输出类似于：

4bf43ac68ead0e1971000000
4bf43ac68ead0e1971010000
4bf43ac68ead0e1971020000
...
string(5) "user1"
string(5) "user2"
string(5) "user3"
...

Example #2 MongoCollection::batchInsert() example with ignoring errors

<?php

$con = new Mongo;
$db = $con->demo;

$doc1 = array(
        '_id' => new MongoId('4cb4ab6d7addf98506010001'),
        'id' => 1,
        'desc' => "ONE",
);
$doc2 = array(
        '_id' => new MongoId('4cb4ab6d7addf98506010002'),
        'id' => 2,
        'desc' => "TWO",
);
$doc3 = array(
        '_id' => new MongoId('4cb4ab6d7addf98506010002'), // same _id as above
        'id' => 3,
        'desc' => "THREE",
);
$doc4 = array(
        '_id' => new MongoId('4cb4ab6d7addf98506010004'),
        'id' => 4,
        'desc' => "FOUR",
);

$c = $db->selectCollection('c');
$c->batchInsert(
    array($doc1, $doc2, $doc3, $doc4),
    array('continueOnError' => true)
);

$docs = $c->find();
foreach ($docs as $doc) {
    var_dump($doc['desc']);
}
?>

以上例程的输出类似于：

string(3) "ONE"
string(3) "TWO"
string(4) "FOUR"

参见

  • MongoCollection::insert() - 插入文档到集合中
  • MongoCollection::update() - Update records based on a given criteria
  • MongoCollection::find() - 查询该集合，并返回结果集的 MongoCursor
  • MongoCollection::remove() - 从集合中删除记录
  • MongoDB core docs on » insert.
MongoCollection::aggregateCursor
MongoCollection::__construct
MongoCollection


创建一个新的集合

MongoCollection::batchInsert
MongoCollection::count
MongoCollection
PHP Manual

MongoCollection::__construct

(PECL mongo >=0.9.0)

MongoCollection::__construct — 创建一个新的集合

说明

public MongoCollection::__construct ( MongoDB $db , string $name )

参数

MongoDB db

所属的父数据库。

name

集合的名称。

返回值

返回一个新的集合对象。

错误／异常

如果集合名称无效，将会抛出一个默认的异常。

MongoCollection::batchInsert
MongoCollection::count
MongoCollection


返回集合中的文档数量

MongoCollection::__construct
MongoCollection::createDBRef
MongoCollection
PHP Manual

MongoCollection::count

(PECL mongo >=0.9.0)

MongoCollection::count — 返回集合中的文档数量

说明

public int MongoCollection::count ([ array $query = array() [, int $limit = 0 [, int $skip = 0 ]]] )

参数

query

关联数组或者对象，含有需要匹配的字段。

limit

指定返回数量的上限。

skip

指定在开始统计前，需要跳过的结果数目。

返回值

返回查询匹配到的文档数目。

更新日志

版本 | 说明
1.0.7 | 添加了 limit 和 skip 参数。

范例

Example #1 MongoCollection::count() 例子

<?php

$collection->insert(array('x'=>1));
$collection->insert(array('x'=>2));
$collection->insert(array('x'=>3));

var_dump($collection->count());
var_dump($collection->count(array('x'=>1)));

?>

以上例程的输出类似于：

int(3)
int(1)
MongoCollection::__construct
MongoCollection::createDBRef
MongoCollection


创建一个数据库引用

MongoCollection::count
MongoCollection::createIndex
MongoCollection
PHP Manual

MongoCollection::createDBRef

(PECL mongo >=0.9.0)

MongoCollection::createDBRef — 创建一个数据库引用

说明

public array MongoCollection::createDBRef ( mixed $document_or_id )

参数

document_or_id

If an array or object is given, its _id field will be used as the reference ID. If a MongoId or scalar is given, it will be used as the reference ID.

返回值

返回一个数据库的引用数组。

如果提供了不包含 _id 字段的数组当做 document_or_id 参数，将会返回 NULL。

范例

Example #1 MongoCollection::createDBRef() 例子

<?php

$songs = $db->songs;
$playlists = $db->playlists;

// 为 song 创建引用
$manamana = $songs->findOne(array('title' => 'Ma na ma na'));
$refToSong = $songs->createDBRef($manamana);

// 添加引用到我的播放列表
$playlists->update(array('username' => 'me'), array('$push' => array('songlist' => $refToSong)));

?>

参见

  • MongoCollection::getDBRef() - Fetches the document pointed to by a database reference

MongoCollection::count
MongoCollection::createIndex
MongoCollection


Creates an index on the specified field(s) if it does not already exist.

MongoCollection::createDBRef
MongoCollection::deleteIndex
MongoCollection
PHP Manual

MongoCollection::createIndex

(PECL mongo >=1.5.0)

MongoCollection::createIndex — Creates an index on the specified field(s) if it does not already exist.

说明

public bool MongoCollection::createIndex ( array $keys [, array $options = array() ] )

Creates an index on the specified field(s) if it does not already exist. Fields may be indexed with a direction (e.g. ascending or descending) or a special type (e.g. text, geospatial, hashed).

Note:

This method will use the » createIndexes database command when communicating with MongoDB 2.6+. For previous database versions, the method will perform an insert operation on the special system.indexes collection.

参数

keys

An array specifying the index's fields as its keys. For each field, the value is either the index direction or » index type. If specifying direction, specify 1 for ascending or -1 for descending.

options

An array of options for the index creation. We pass all given options straight to the server, but a non-exhaustive list of currently available options include:

  • "unique"

    Specify TRUE to create a unique index. The default value is FALSE. This option applies only to ascending/descending indexes.

    Note:

    When MongoDB indexes a field, if a document does not have a value for the field, a NULL value is indexed. If multiple documents do not contain a field, a unique index will reject all but the first of those documents. The "sparse" option may be used to overcome this, since it will prevent documents without the field from being indexed.

  • "sparse"

    Specify TRUE to create a sparse index, which only indexes documents containing a specified field. The default value is FALSE.

  • "expireAfterSeconds"

    The value of this option should specify the number of seconds after which a document should be considered expired and automatically removed from the collection. This option is only compatible with single-field indexes where the field will contain MongoDate values.

    Note:

    This feature is available in MongoDB 2.2+. See » Expire Data from Collections by Setting TTL for more information.

  • "name"

    A optional name that uniquely identifies the index.

    Note:

    By default, the driver will generate an index name based on the index's field(s) and ordering or type. For example, a compound index array("x" => 1, "y" => -1) would be named "x_1_y_-1" and a geospatial index array("loc" => "2dsphere") would be named "loc_2dsphere". For indexes with many fields, it is possible that the generated name might exceed MongoDB's » limit for index names. The "name" option may be used in that case to supply a shorter name.

  • "background"

    Builds the index in the background so that building an index does not block other database activities. Specify TRUE to build in the background. The default value is FALSE.

    Warning

    Prior to MongoDB 2.6.0, index builds on secondaries were executed as foreground operations, irrespective of this option. See » Building Indexes with Replica Sets for more information.

  • "socketTimeoutMS"

    This option specifies the time limit, in milliseconds, for socket communication. If the server does not respond within the timeout period, a MongoCursorTimeoutException will be thrown and there will be no way to determine if the server actually handled the write or not. A value of -1 may be specified to block indefinitely. The default value for MongoClient is 30000 (30 seconds).

The following option may be used with MongoDB 2.6+:

  • "maxTimeMS"

    Specifies a cumulative time limit in milliseconds for processing the operation on the server (does not include idle time). If the operation is not completed by the server within the timeout period, a MongoExecutionTimeoutException will be thrown.

The following options may be used with MongoDB versions before 2.8:

  • "dropDups"

    Specify TRUE to force creation of a unique index where the collection may contain duplicate values for a key. MongoDB will index the first occurrence of a key and delete all subsequent documents from the collection that contain a duplicate value for that key. The default value is FALSE.

    Warning

    "dropDups" may delete data from your database. Use with extreme caution.

    Note:

    This option is not supported on MongoDB 2.8+. Index creation will fail if the collection contains duplicate values.

The following options may be used with MongoDB versions before 2.6:

  • "w"

    See WriteConcerns. The default value for MongoClient is 1.

  • "wTimeoutMS"

    This option specifies the time limit, in milliseconds, for write concern acknowledgement. It is only applicable when "w" is greater than 1, as the timeout pertains to replication. If the write concern is not satisfied within the time limit, a MongoCursorException will be thrown. A value of 0 may be specified to block indefinitely. The default value for MongoClient is 10000 (ten seconds).

The following options are deprecated and should no longer be used:

  • "safe"

    Deprecated. Please use the WriteConcern w option.

  • "timeout"

    Integer, defaults to MongoCursor::$timeout. If "safe" is set, this sets how long (in milliseconds) for the client to wait for a database response. If the database does not respond within the timeout period, a MongoCursorTimeoutException will be thrown.

  • "wtimeout"

    Deprecated alias for "wTimeoutMS".

返回值

Returns an array containing the status of the index creation. The array contains whether the operation succeeded ("ok"), the number of indexes before and after the operation ("numIndexesBefore" and "numIndexesAfter"), and whether the collection that the index belongs to has been created ("createdCollectionAutomatically"). If the index already existed and did not need to be created, a "note" field may be present in lieu of "numIndexesAfter".

With MongoDB 2.4 and earlier, a status document is only returned if the write concern is at least 1. Otherwise, TRUE is returned. The fields in the status document are different, except for the "ok" field, which signals whether the index creation was successful. Additional fields are described in the documentation for MongoCollection::insert().

错误／异常

Throws MongoException if the index name is longer than 128 bytes, or if the index specification is not an array.

Throws MongoDuplicateKeyException if the server could not create the unique index due to conflicting documents.

Throws MongoResultException if the server could not create the index due to an error.

Throws MongoCursorException if the "w" option is set and the write fails.

Throws MongoCursorTimeoutException if the "w" option is set to a value greater than one and the operation takes longer than MongoCursor::$timeout milliseconds to complete. This does not kill the operation on the server, it is a client-side timeout. The operation in MongoCollection::$wtimeout is milliseconds.

范例

Example #1 MongoCollection::createIndex() example

<?php

$c = new MongoCollection($db, 'foo');

// create an index on 'x' ascending
$c->createIndex(array('x' => 1));

// create a unique index on 'y'
$c->createIndex(array('y' => 1), array('unique' => true));

// create a compound index on 'za' ascending and 'zb' descending
$c->createIndex(array('za' => 1, 'zb' => -1));

?>

Example #2 Geospatial Indexing

Mongo supports geospatial indexes, which allow you to search for documents near a given location or within a shape. The following example creates a geospatial index on the "loc" field:

<?php

$collection->createIndex(array('loc' => '2dsphere'));

?>

Example #3 Drop duplicates example

<?php

$collection->insert(array('username' => 'joeschmoe'));
$collection->insert(array('username' => 'joeschmoe'));

/* Index creation fails, since you cannot create a unique index on a field when
 * duplicates exist.
 */
$collection->createIndex(array('username' => 1), array('unique' => 1));

/* MongoDB will one of the conflicting documents and allow the unique index to
 * be created.
 */
$collection->createIndex(array('username' => 1), array('unique' => 1, 'dropDups' => 1));

/* We now have a unique index and subsequent inserts with the same username will
 * fail.
 */
$collection->insert(array('username' => 'joeschmoe'));

?>

参见

  • MongoCollection::deleteIndex() - Deletes an index from this collection
  • MongoCollection::deleteIndexes() - 删除集合的所有索引
  • The MongoDB » index and » index type documentation.
MongoCollection::createDBRef
MongoCollection::deleteIndex
MongoCollection


Deletes an index from this collection

MongoCollection::createIndex
MongoCollection::deleteIndexes
MongoCollection
PHP Manual

MongoCollection::deleteIndex

(PECL mongo >=0.9.0)

MongoCollection::deleteIndex — Deletes an index from this collection

说明

public array MongoCollection::deleteIndex ( string|array $keys )

This method is identical to:

<?php

public function deleteIndexes($keys) {
  $indexName = $this->toIndexString($keys);

  return $this->db->command(array(
    "deleteIndexes" => $this->getName(),
    "index" => $indexName,
  ));
}

?>

Each index is given a unique name when it is created. This is often generated by the driver based on the index key(s) and order/type, but custom names may also be specified with MongoCollection::createIndex()'s "name" option).

Unfortunately, MongoCollection::deleteIndex() cannot delete custom-named indexes due to a backwards compatibility issue. When a string argument is provided, it is assumed to be the single field name in an ascending index (e.g. the name "x_1" would be used for the argument "x"). If an array or object is provided, an index name is generated just as if that argument was passed to MongoCollection::createIndex().

In order to delete a custom-named index with the PHP driver, the deleteIndexes database command must be used. For instance, an index named "myIndex" could be deleted with the PHP driver by running:

<?php

$db->command(array(
  "deleteIndexes" => $collection->getName(),
  "index" => "myIndex",
));

?>

To determine the name of an index with the PHP driver, you can query the system.indexes collection of a database and look for the "name" field of each result. The "ns" field will indicate the collection to which each index belongs.

参数

keys

An array specifying the index's fields as its keys. For each field, the value is either the index direction or » index type. If specifying direction, specify 1 for ascending or -1 for descending.

If a string is provided, it is assumed to be the single field name in an ascending index.

返回值

Returns the database response.

范例

Example #1 MongoCollection::deleteIndex() example

This example passes the function string and array parameters.

<?php

$m = new MongoClient();
$c = $m->example->indices;

// create and remove a simple index
$c->createIndex(array("i"=>1));
$c->deleteIndex("i");

// create and remove a multi-key index
$c->ensureIndex(array("j" => 1, "k" => 1));
$c->deleteIndex(array("j" => 1, "k" => 1));

?>

参见

  • MongoCollection::createIndex() - Creates an index on the specified field(s) if it does not already exist.
  • MongoCollection::deleteIndexes() - 删除集合的所有索引
  • MongoCollection::toIndexString() - Converts keys specifying an index to its identifying string
  • The MongoDB » index and » index type documentation.
MongoCollection::createIndex
MongoCollection::deleteIndexes
MongoCollection


删除集合的所有索引

MongoCollection::deleteIndex
MongoCollection::distinct
MongoCollection
PHP Manual

MongoCollection::deleteIndexes

(PECL mongo >=0.9.0)

MongoCollection::deleteIndexes — 删除集合的所有索引

说明

public array MongoCollection::deleteIndexes ( void )

参数

此函数没有参数。

返回值

返回数据库的响应。

范例

Example #1 MongoCollection::deleteIndexes() 例子

这个例子演示了如何从集合中删除所有索引并得到响应

<?php

$collection = $mongo->my_db->articles;
$response = $collection->deleteIndexes();
print_r($response);

?>

以上例程的输出类似于：

Array
(
    [nIndexesWas] => 1
    [msg] => all indexes deleted for collection
    [ok] => 1
)
MongoCollection::deleteIndex
MongoCollection::distinct
MongoCollection


获取集合里指定键的不同值的列表。

MongoCollection::deleteIndexes
MongoCollection::drop
MongoCollection
PHP Manual

MongoCollection::distinct

(PECL mongo >=1.2.11)

MongoCollection::distinct — 获取集合里指定键的不同值的列表。

说明

public array MongoCollection::distinct ( string $key [, array $query ] )

distinct 命令返回集合里给定键不同值的列表。

参数

key

要使用的键。

query

一个可选的查询参数

返回值

返回不同值的数组， 或者在失败时返回 FALSE

范例

Example #1 MongoCollection::distinct() 例子

<?php
$m = new Mongo;
$db = $m->selectDB("test");
$db->dropCollection("distinct");
$c = $db->distinct;

$c->insert(array("stuff" => "bar", "zip-code" => 10010));
$c->insert(array("stuff" => "foo", "zip-code" => 10010));
$c->insert(array("stuff" => "bar", "zip-code" => 99701), array("w" => 1));

$retval = $c->distinct("zip-code");
var_dump($retval);

$retval = $c->distinct("zip-code", array("stuff" => "foo"));
var_dump($retval);

$retval = $c->distinct("zip-code", array("stuff" => "bar"));
var_dump($retval);

?>

以上例程会输出：

array(2) {
  [0]=>
  int(10010)
  [1]=>
  int(99701)
}
array(1) {
  [0]=>
  int(10010)
}
array(2) {
  [0]=>
  int(10010)
  [1]=>
  int(99701)
}

Example #2 内嵌文档的 MongoCollection::distinct() 例子

<?php
$c->insert(array("user" => array("points" => 25)));
$c->insert(array("user" => array("points" => 31)));
$c->insert(array("user" => array("points" => 25)));

$retval = $c->distinct("user.points");
var_dump($retval);

$retval = $c->distinct("user.nonexisting");
var_dump($retval);
?>

以上例程会输出：

array(2) {
  [0]=>
  int(25)
  [1]=>
  int(31)
}
array(0) {
}
MongoCollection::deleteIndexes
MongoCollection::drop
MongoCollection


删除该集合

MongoCollection::distinct
MongoCollection::ensureIndex
MongoCollection
PHP Manual

MongoCollection::drop

(PECL mongo >=0.9.0)

MongoCollection::drop — 删除该集合

说明

public array MongoCollection::drop ( void )

删除该集合，以及它的索引。

参数

此函数没有参数。

返回值

返回数据库的响应。

范例

Example #1 MongoCollection::drop() 例子

这个例子演示了如何删除一个集合，并且得到想要的回应。

<?php

$collection = $mongo->my_db->articles;
$response = $collection->drop();
print_r($response);

?>

以上例程的输出类似于：

Array
(
    [nIndexesWas] => 1
    [msg] => all indexes deleted for collection
    [ns] => my_db.articles
    [ok] => 1
)
MongoCollection::distinct
MongoCollection::ensureIndex
MongoCollection


Creates an index on the specified field(s) if it does not already exist.

MongoCollection::drop
MongoCollection::find
MongoCollection
PHP Manual

MongoCollection::ensureIndex

(PECL mongo >=0.9.0)

MongoCollection::ensureIndex — Creates an index on the specified field(s) if it does not already exist.

说明

public bool MongoCollection::ensureIndex ( string|array $key|keys [, array $options = array() ] )
Warning

This method is deprecated since version 1.5.0. Please use MongoCollection::createIndex() instead.

Creates an index on the specified field(s) if it does not already exist. Fields may be indexed with a direction (e.g. ascending or descending) or a special type (e.g. text, geospatial, hashed).

Note:

This method will use the » createIndexes database command when communicating with MongoDB 2.6+. For previous database versions, the method will perform an insert operation on the special system.indexes collection.

参数

keys

An array specifying the index's fields as its keys. For each field, the value is either the index direction or » index type. If specifying direction, specify 1 for ascending or -1 for descending.

options

An array of options for the index creation. Currently available options include:

  • "unique"

    Specify TRUE to create a unique index. The default value is FALSE. This option applies only to ascending/descending indexes.

    Note:

    When MongoDB indexes a field, if a document does not have a value for the field, a NULL value is indexed. If multiple documents do not contain a field, a unique index will reject all but the first of those documents. The "sparse" option may be used to overcome this, since it will prevent documents without the field from being indexed.

  • "sparse"

    Specify TRUE to create a sparse index, which only indexes documents containing a specified field. The default value is FALSE.

  • "expireAfterSeconds"

    The value of this option should specify the number of seconds after which a document should be considered expired and automatically removed from the collection. This option is only compatible with single-field indexes where the field will contain MongoDate values.

    Note:

    This feature is available in MongoDB 2.2+. See » Expire Data from Collections by Setting TTL for more information.

  • "name"

    A optional name that uniquely identifies the index.

    Note:

    By default, the driver will generate an index name based on the index's field(s) and ordering or type. For example, a compound index array("x" => 1, "y" => -1) would be named "x_1_y_-1" and a geospatial index array("loc" => "2dsphere") would be named "loc_2dsphere". For indexes with many fields, it is possible that the generated name might exceed MongoDB's » limit for index names. The "name" option may be used in that case to supply a shorter name.

  • "background"

    Builds the index in the background so that building an index does not block other database activities. Specify TRUE to build in the background. The default value is FALSE.

    Warning

    Prior to MongoDB 2.6.0, index builds on secondaries were executed as foreground operations, irrespective of this option. See » Building Indexes with Replica Sets for more information.

  • "socketTimeoutMS"

    This option specifies the time limit, in milliseconds, for socket communication. If the server does not respond within the timeout period, a MongoCursorTimeoutException will be thrown and there will be no way to determine if the server actually handled the write or not. A value of -1 may be specified to block indefinitely. The default value for MongoClient is 30000 (30 seconds).

The following option may be used with MongoDB 2.6+:

  • "maxTimeMS"

    Specifies a cumulative time limit in milliseconds for processing the operation on the server (does not include idle time). If the operation is not completed by the server within the timeout period, a MongoExecutionTimeoutException will be thrown.

The following options may be used with MongoDB versions before 2.8:

  • "dropDups"

    Specify TRUE to force creation of a unique index where the collection may contain duplicate values for a key. MongoDB will index the first occurrence of a key and delete all subsequent documents from the collection that contain a duplicate value for that key. The default value is FALSE.

    Warning

    "dropDups" may delete data from your database. Use with extreme caution.

    Note:

    This option is not supported on MongoDB 2.8+. Index creation will fail if the collection contains duplicate values.

The following options may be used with MongoDB versions before 2.6:

  • "w"

    See WriteConcerns. The default value for MongoClient is 1.

  • "wTimeoutMS"

    This option specifies the time limit, in milliseconds, for write concern acknowledgement. It is only applicable when "w" is greater than 1, as the timeout pertains to replication. If the write concern is not satisfied within the time limit, a MongoCursorException will be thrown. A value of 0 may be specified to block indefinitely. The default value for MongoClient is 10000 (ten seconds).

The following options are deprecated and should no longer be used:

  • "safe"

    Deprecated. Please use the WriteConcern w option.

  • "timeout"

    Integer, defaults to MongoCursor::$timeout. If "safe" is set, this sets how long (in milliseconds) for the client to wait for a database response. If the database does not respond within the timeout period, a MongoCursorTimeoutException will be thrown.

  • "wtimeout"

    Deprecated alias for "wTimeoutMS".

返回值

Returns an array containing the status of the index creation. The array contains whether the operation succeeded ("ok"), the number of indexes before and after the operation ("numIndexesBefore" and "numIndexesAfter"), and whether the collection that the index belongs to has been created ("createdCollectionAutomatically"). If the index already existed and did not need to be created, a "note" field may be present in lieu of "numIndexesAfter".

With MongoDB 2.4 and earlier, a status document is only returned if the write concern is at least 1. Otherwise, TRUE is returned. The fields in the status document are different, except for the "ok" field, which signals whether the index creation was successful. Additional fields are described in the documentation for MongoCollection::insert().

更新日志

版本 | 说明
1.5.0 | Renamed the "wtimeout" option to "wTimeoutMS". Emits E_DEPRECATED when "wtimeout" is used. Renamed the "timeout" option to "socketTimeoutMS". Emits E_DEPRECATED when "timeout" is used. Emits E_DEPRECATED when "safe" is used.
1.3.4 | Added "wtimeout" option.
1.3.0 | Added "w" option. The options parameter no longer accepts a boolean to signify a unique index. Instead, this now has to be done with array('unique' => true).
1.2.11 | Emits E_DEPRECATED when options is scalar.
1.2.0 | Added "timeout" option.
1.0.11 | The "safe" option will trigger a primary failover, if necessary. MongoException will be thrown if the index name (either generated or set) is longer than 128 bytes.
1.0.5 | Added the "name" option to override index name creation.
1.0.2 | Changed options parameter from boolean to array. Pre-1.0.2, the second parameter was an optional boolean value specifying a unique index.

错误／异常

Throws MongoException if the index name is longer than 128 bytes, or if the index specification is not an array.

Throws MongoDuplicateKeyException if the server could not create the unique index due to conflicting documents.

Throws MongoResultException if the server could not create the index due to an error.

Throws MongoCursorException if the "w" option is set and the write fails.

Throws MongoCursorTimeoutException if the "w" option is set to a value greater than one and the operation takes longer than MongoCursor::$timeout milliseconds to complete. This does not kill the operation on the server, it is a client-side timeout. The operation in MongoCollection::$wtimeout is milliseconds.

范例

Example #1 MongoCollection::ensureIndex() example

<?php

$c = new MongoCollection($db, 'foo');

// create an index on 'x' ascending
$c->ensureIndex(array('x' => 1));

// create a unique index on 'y'
$c->ensureIndex(array('y' => 1), array('unique' => true));

// create a compound index on 'za' ascending and 'zb' descending
$c->ensureIndex(array('za' => 1, 'zb' => -1));

?>

Example #2 Geospatial Indexing

Mongo supports geospatial indexes, which allow you to search for documents near a given location or within a shape. The following example creates a geospatial index on the "loc" field:

<?php

$collection->ensureIndex(array('loc' => '2dsphere'));

?>

Example #3 Drop duplicates example

<?php

$collection->insert(array('username' => 'joeschmoe'));
$collection->insert(array('username' => 'joeschmoe'));

/* Index creation fails, since you cannot create a unique index on a field when
 * duplicates exist.
 */
$collection->ensureIndex(array('username' => 1), array('unique' => 1));

/* MongoDB will one of the conflicting documents and allow the unique index to
 * be created.
 */
$collection->ensureIndex(array('username' => 1), array('unique' => 1, 'dropDups' => 1));

/* We now have a unique index and subsequent inserts with the same username will
 * fail.
 */
$collection->insert(array('username' => 'joeschmoe'));

?>

参见

  • MongoCollection::createIndex() - Creates an index on the specified field(s) if it does not already exist.
  • MongoCollection::deleteIndex() - Deletes an index from this collection
  • MongoCollection::deleteIndexes() - 删除集合的所有索引
  • The MongoDB » index and » index type documentation.
MongoCollection::drop
MongoCollection::find
MongoCollection


查询该集合，并返回结果集的 MongoCursor

MongoCollection::ensureIndex
MongoCollection::findAndModify
MongoCollection
PHP Manual

MongoCollection::find

(PECL mongo >=0.9.0)

MongoCollection::find — 查询该集合，并返回结果集的 MongoCursor

说明

 public MongoCursor MongoCollection::find
  ([ array $query = array()
 [, array $fields = array()
]] )

参数

query

要搜索的字段。 MongoDB 的查询语言十分宽泛。 PHP 驱动在几乎所有的情况下会把查询直接传入服务器，所以阅读 MongoDB 关于 » find 的核心文档是个不错的主意。

Warning

请确保所有指定的查询操作符（以 $ 开头）是用单引号的，这样 PHP 才不会尝试用 $exists 变量的值来替换 "$exists" 命令。

fields

返回结果的字段。Array 的格式是 array('fieldname' => true, 'fieldname2' => true)。 _id 字段总会返回。

返回值

返回搜索结果的游标。

范例

Example #1 MongoCollection::find() 例子

该例子演示了基本的搜索选项。

<?php

$m = new MongoClient();
$db = $m->selectDB('test');
$collection = new MongoCollection($db, 'produce');

// 搜索水果
$fruitQuery = array('Type' => 'Fruit');

$cursor = $collection->find($fruitQuery);
foreach ($cursor as $doc) {
    var_dump($doc);
}

// 搜索甜的产品 Taste is a child of Details.
$sweetQuery = array('Details.Taste' => 'Sweet');
echo "Sweet\n";
$cursor = $collection->find($sweetQuery);
foreach ($cursor as $doc) {
    var_dump($doc);
}

?>

以上例程会输出：

array(4) {
  ["_id"]=>
  object(MongoId)#7 (1) {
    ["$id"]=>
    string(24) "50a87dd084f045a19b220dd6"
  }
  ["Name"]=>
  string(5) "Apple"
  ["Type"]=>
  string(5) "Fruit"
  ["Details"]=>
  array(2) {
    ["Taste"]=>
    string(5) "Sweet"
    ["Colour"]=>
    string(3) "Red"
  }
}
array(4) {
  ["_id"]=>
  object(MongoId)#8 (1) {
    ["$id"]=>
    string(24) "50a87de084f045a19b220dd7"
  }
  ["Name"]=>
  string(5) "Lemon"
  ["Type"]=>
  string(5) "Fruit"
  ["Details"]=>
  array(2) {
    ["Taste"]=>
    string(4) "Sour"
    ["Colour"]=>
    string(5) "Green"
  }
}

Sweet:
array(4) {
  ["_id"]=>
  object(MongoId)#7 (1) {
    ["$id"]=>
    string(24) "50a87dd084f045a19b220dd6"
  }
  ["Name"]=>
  string(5) "Apple"
  ["Type"]=>
  string(5) "Fruit"
  ["Details"]=>
  array(2) {
    ["Taste"]=>
    string(5) "Sweet"
    ["Colour"]=>
    string(3) "Red"
  }
}

更多关于游标如何使用的信息，参见 MongoCursor。

Example #2 MongoCollection::find() 例子

这个例子演示了如何搜索一个范围。

<?php

$m = new MongoClient();
$db = $m->selectDB('test');
$collection = new MongoCollection($db, 'phpmanual');

// search for documents where 5 < x < 20
$rangeQuery = array('x' => array( '$gt' => 5, '$lt' => 20 ));

$cursor = $collection->find($rangeQuery);
foreach ($cursor as $doc) {
    var_dump($doc);
}

?>

以上例程会输出：

array(2) {
  ["_id"]=>
  object(MongoId)#10 (1) {
    ["$id"]=>
    string(24) "4ebc3e3710b89f2349000000"
  }
  ["x"]=>
  int(12)
}
array(2) {
  ["_id"]=>
  object(MongoId)#11 (1) {
    ["$id"]=>
    string(24) "4ebc3e3710b89f2349000001"
  }
  ["x"]=>
  int(12)
}

更多关于游标如何使用的信息，参见 MongoCursor。

Example #3 使用 $where 的 MongoCollection::find() 例子

这个例子演示了如何搜索一个集合，并用 javascript 代码来筛选结果集。

<?php

$m = new MongoClient();
$db = $m->selectDB('test');
$collection = new MongoCollection($db, 'phpmanual');

$js = "function() {
    return this.name == 'Joe' || this.age == 50;
}";
$cursor = $collection->find(array('$where' => $js));
foreach ($cursor as $doc) {
    var_dump($doc);
}

?>

以上例程会输出：

array(3) {
  ["_id"]=>
  object(MongoId)#7 (1) {
    ["$id"]=>
    string(24) "4ebc3e3710b89f2349000002"
  }
  ["name"]=>
  string(3) "Joe"
  ["age"]=>
  int(20)
}

Example #4 使用 $in 的 MongoCollection::find() 例子

这个例子演示了使用 $in 操作符来搜索集合。

<?php

$m = new MongoClient();
$db = $m->selectDB('test');
$collection = new MongoCollection($db, 'phpmanual');

$cursor = $collection->find(array(
    'name' => array('$in' => array('Joe', 'Wendy'))
));

?>

以上例程会输出：

array(3) {
  ["_id"]=>
  object(MongoId)#7 (1) {
    ["$id"]=>
    string(24) "4ebc3e3710b89f2349000002"
  }
  ["name"]=>
  string(3) "Joe"
  ["age"]=>
  int(20)
}

Example #5 以数组形式获取结果集

返回 MongoCursor。 常常在开始的时候，人们更习惯使用数组。 使用 iterator_to_array() 将游标转换成一个数组。

<?php

$m = new MongoClient();
$db = $m->selectDB('test');
$collection = new MongoCollection($db, 'phpmanual');

$cursor = $collection->find();
$array = iterator_to_array($cursor);

?>

以上例程会输出：

array(3) {
  ["4ebc40af10b89f5149000000"]=>
  array(2) {
    ["_id"]=>
    object(MongoId)#6 (1) {
      ["$id"]=>
      string(24) "4ebc40af10b89f5149000000"
    }
    ["x"]=>
    int(12)
  }
  ["4ebc40af10b89f5149000001"]=>
  array(2) {
    ["_id"]=>
    object(MongoId)#11 (1) {
      ["$id"]=>
      string(24) "4ebc40af10b89f5149000001"
    }
    ["x"]=>
    int(12)
  }
  ["4ebc40af10b89f5149000002"]=>
  array(3) {
    ["_id"]=>
    object(MongoId)#12 (1) {
      ["$id"]=>
      string(24) "4ebc40af10b89f5149000002"
    }
    ["name"]=>
    string(3) "Joe"
    ["age"]=>
    int(20)
  }
}

使用 iterator_to_array() 会让驱动将强制载入所有搜索结果集到内存，所以对超过内存大小的结果集不要这么做！

同时，有些系统集合不具有 _id 字段。 如果你处理一个可能没有 _id 字段的集合，需要将 FALSE 传入 iterator_to_array() 第二个参数（这样它不会尝试使用不存在的 _id 的值作为数组键）。

参见

  • MongoCollection::findOne() - Queries this collection, returning a single element
  • MongoCollection::insert() - 插入文档到集合中
  • MongoDB » find 的核心文档。
MongoCollection::ensureIndex
MongoCollection::findAndModify
MongoCollection


Update a document and return it

MongoCollection::find
MongoCollection::findOne
MongoCollection
PHP Manual

MongoCollection::findAndModify

(PECL mongo >=1.3.0)

MongoCollection::findAndModify — Update a document and return it

说明

public array MongoCollection::findAndModify ( array $query [, array $update [, array $fields [, array $options ]]] )

The findAndModify command atomically modifies and returns a single document. By default, the returned document does not include the modifications made on the update. To return the document with the modifications made on the update, use the new option.

参数

query

The query criteria to search for.

update

The update criteria.

fields

Optionally only return these fields.

options

An array of options to apply, such as remove the match document from the DB and return it.

Option | 说明
sort array | Determines which document the operation will modify if the query selects multiple documents. findAndModify will modify the first document in the sort order specified by this argument.
remove boolean | Optional if update field exists. When TRUE, removes the selected document. The default is FALSE.
update array | Optional if remove field exists. Performs an update of the selected document.
new boolean | Optional. When TRUE, returns the modified document rather than the original. The findAndModify method ignores the new option for remove operations. The default is FALSE.
upsert boolean | Optional. Used in conjunction with the update field. When TRUE, the findAndModify command creates a new document if the query returns no documents. The default is false. In MongoDB 2.2, the findAndModify command returns NULL when upsert is TRUE.

返回值

Returns the original document, or the modified document when new is set.

错误／异常

Throws MongoResultException on failure.

范例

Example #1 MongoCollection::findAndModify() example

<?php
$m = new Mongo;
$col = $m->selectDB("test")->jobs;

$col->insert(array(
     "name" => "Next promo",
     "inprogress" => false,
     "priority" => 0,
     "tasks" => array( "select product", "add inventory", "do placement"),
) );

$col->insert(array(
     "name" => "Biz report",
     "inprogress" => false,
     "priority" => 1,
     "tasks" => array( "run sales report", "email report" )
) );

$col->insert(array(
     "name" => "Biz report",
     "inprogress" => false,
     "priority" => 2,
     "tasks" => array( "run marketing report", "email report" )
    ),
    array("w" => 1)
);

$retval = $col->findAndModify(
     array("inprogress" => false, "name" => "Biz report"),
     array('$set' => array('inprogress' => true, "started" => new MongoDate())),
     null,
     array(
        "sort" => array("priority" => -1),
        "new" => true,
    )
);

var_dump($retval);
?>

以上例程的输出类似于：

array(6) {
  ["_id"]=>
  object(MongoId)#7 (1) {
    ["$id"]=>
    string(24) "5091b5b244415e8cc3000002"
  }
  ["inprogress"]=>
  bool(true)
  ["name"]=>
  string(10) "Biz report"
  ["priority"]=>
  int(2)
  ["started"]=>
  object(MongoDate)#8 (2) {
    ["sec"]=>
    int(1351726514)
    ["usec"]=>
    int(925000)
  }
  ["tasks"]=>
  array(2) {
    [0]=>
    string(20) "run marketing report"
    [1]=>
    string(12) "email report"
  }
}

Example #2 MongoCollection::findAndModify() error handling

<?php
$m = new Mongo;
$col = $m->selectDB("test")->jobs;
try {
    $retval = $col->findAndModify(
         array("inprogress" => false, "name" => "Next promo"),
         array('$pop' => array("tasks" => -1)),
         array("tasks" => array('$pop' => array("stuff"))),
         array("new" => true)
    );
} catch(MongoResultException $e) {
    echo $e->getCode(), " : ", $e->getMessage(), "\n";
    var_dump($e->getDocument());
}

?>

以上例程的输出类似于：

13097 : exception: Unsupported projection option: $pop
array(3) {
  ["errmsg"]=>
  string(46) "exception: Unsupported projection option: $pop"
  ["code"]=>
  int(13097)
  ["ok"]=>
  float(0)
}

参见

  • The MongoDB » findAndModify command docs
MongoCollection::find
MongoCollection::findOne
MongoCollection


Queries this collection, returning a single element

MongoCollection::findAndModify
MongoCollection::__get
MongoCollection
PHP Manual

MongoCollection::findOne

(PECL mongo >=0.9.0)

MongoCollection::findOne — Queries this collection, returning a single element

说明

 public array MongoCollection::findOne
  ([ array $query = array()
 [, array $fields = array()
 [, array $options = array()
]]] )

As opposed to MongoCollection::find(), this method will return only the first result from the result set, and not a MongoCursor that can be iterated over.

参数

query

The fields for which to search. MongoDB's query language is quite extensive. The PHP driver will in almost all cases pass the query straight through to the server, so reading the MongoDB core docs on » find is a good idea.

Warning

Please make sure that for all special query operaters (starting with $) you use single quotes so that PHP doesn't try to replace "$exists" with the value of the variable $exists.

fields

Fields of the results to return. The array is in the format array('fieldname' => true, 'fieldname2' => true). The _id field is always returned.

options

This parameter is an associative array of the form array("name" => <value>, ...). Currently supported options are:

  • "maxTimeMS"

    Specifies a cumulative time limit in milliseconds for processing the operation on the server (does not include idle time). If the operation is not completed by the server within the timeout period, a MongoExecutionTimeoutException will be thrown.

返回值

Returns record matching the search or NULL.

错误／异常

Throws MongoConnectionException if it cannot reach the database.

更新日志

版本 | 说明
1.5.0 | Added optional options argument.

范例

Example #1 MongoCollection::findOne() document by its id.

This example demonstrates how to find a single document in a collection by its id.

<?php

$articles = $mongo->my_db->articles;

$article = $articles->findOne(array('_id' => new MongoId('47cc67093475061e3d9536d2')));

?>

Example #2 MongoCollection::findOne() document by some condition.

This example demonstrates how to find a single document in a collection by some condition and limiting the returned fields.

<?php

$users = $mongo->my_db->users;
$user = $users->findOne(array('username' => 'jwage'), array('password'));
print_r($user);

?>

以上例程的输出类似于：

Array
(
    [_id] => MongoId Object
        (
        )

    [password] => test
)

Notice how even though the document does have a username field, we limited the results to only contain the password field.

参见

  • MongoCollection::find() - 查询该集合，并返回结果集的 MongoCursor
  • MongoCollection::insert() - 插入文档到集合中
  • MongoDB core docs on » find.
MongoCollection::findAndModify
MongoCollection::__get
MongoCollection


Gets a collection

MongoCollection::findOne
MongoCollection::getDBRef
MongoCollection
PHP Manual

MongoCollection::__get

(PECL mongo >=1.0.2)

MongoCollection::__get — Gets a collection

说明

public MongoCollection MongoCollection::__get ( string $name )

A concise syntax for getting a collection with a dot-separated name. If a collection name contains strange characters, you may have to use MongoDB::selectCollection() instead.

<?php

$mongo = new MongoClient();

// the following two lines are equivalent
$collection = $mongo->selectDB("foo")->selectCollection("bar.baz");
$collection = $mongo->foo->bar->baz;

?>

参数

name

The next string in the collection name.

返回值

Returns the collection.

MongoCollection::findOne
MongoCollection::getDBRef
MongoCollection


Fetches the document pointed to by a database reference

MongoCollection::__get
MongoCollection::getIndexInfo
MongoCollection
PHP Manual

MongoCollection::getDBRef

(PECL mongo >=0.9.0)

MongoCollection::getDBRef — Fetches the document pointed to by a database reference

说明

public array MongoCollection::getDBRef ( array $ref )

参数

ref

A database reference.

返回值

Returns the database document pointed to by the reference.

范例

Example #1 MongoCollection::getDBRef() example

<?php

$playlists = $db->playlists;

$myList = $playlists->findOne(array('username' => 'me'));

// fetch each song in the playlist
foreach ($myList['songlist'] as $songRef) {
    $song = $playlists->getDBRef($songRef);
    echo $song['title'] . "\n";
}

?>

以上例程的输出类似于：

Dazed and Confused
Ma na ma na
Bohemian Rhapsody

In the above example each $songRef looks something like the following:
    Array
    (
        [$ref] => songs
        [$id] => 49902cde5162504500b45c2c
    )

参见

  • MongoCollection::createDBRef() - 创建一个数据库引用

MongoCollection::__get
MongoCollection::getIndexInfo
MongoCollection


Returns information about indexes on this collection

MongoCollection::getDBRef
MongoCollection::getName
MongoCollection
PHP Manual

MongoCollection::getIndexInfo

(PECL mongo >=0.9.0)

MongoCollection::getIndexInfo — Returns information about indexes on this collection

说明

public array MongoCollection::getIndexInfo ( void )

参数

此函数没有参数。

返回值

This function returns an array in which each element describes an index. Elements will contain the values name for the name of the index, ns for the namespace (a combination of the database and collection name), and key for a list of all fields in the index and their ordering. Additional values may be present for special indexes, such as unique or sparse.

范例

Example #1 MongoCollection::getIndexInfo() example

<?php

$m = new MongoClient();
$c = $m->selectCollection('test', 'venues');
var_dump($c->getIndexInfo());

?>

以上例程的输出类似于：

array(4) {
  [0]=>
  array(4) {
    ["v"]=>
    int(1)
    ["key"]=>
    array(1) {
      ["_id"]=>
      int(1)
    }
    ["name"]=>
    string(4) "_id_"
    ["ns"]=>
    string(11) "test.venues"
  }
  [1]=>
  array(4) {
    ["v"]=>
    int(1)
    ["key"]=>
    array(1) {
      ["name"]=>
      float(1)
    }
    ["name"]=>
    string(6) "name_1"
    ["ns"]=>
    string(11) "test.venues"
  }
  [2]=>
  array(4) {
    ["v"]=>
    int(1)
    ["key"]=>
    array(2) {
      ["type"]=>
      float(1)
      ["createdAt"]=>
      float(-1)
    }
    ["name"]=>
    string(19) "type_1_createdAt_-1"
    ["ns"]=>
    string(11) "test.venues"
  }
  [3]=>
  array(5) {
    ["v"]=>
    int(1)
    ["key"]=>
    array(1) {
      ["location"]=>
      string(8) "2dsphere"
    }
    ["name"]=>
    string(17) "location_2dsphere"
    ["ns"]=>
    string(11) "test.venues"
    ["2dsphereIndexVersion"]=>
    int(2)
  }
}

参见

MongoDB core docs on » vanilla indexes and » geospatial indexes.

MongoCollection::getDBRef
MongoCollection::getName
MongoCollection


返回这个集合的名称

MongoCollection::getIndexInfo
MongoCollection::getReadPreference
MongoCollection
PHP Manual

MongoCollection::getName

(PECL mongo >=0.9.0)

MongoCollection::getName — 返回这个集合的名称

说明

public string MongoCollection::getName ( void )

参数

此函数没有参数。

返回值

获取这个集合的名称。

范例

Example #1 MongoCollection::getName() 例子

<?php

$m = new MongoClient();
$c = $m->foo->bar->baz;

echo "Working with collection " . $c->getName() . ".\n";

// the full namespace is given by the MongoCollection::__toString() method
echo "Working in namespace $c.\n";

?>

以上例程的输出类似于：

Working with collection bar.baz.
Working in namespace foo.bar.baz.

MongoCollection::getIndexInfo
MongoCollection::getReadPreference
MongoCollection


Get the read preference for this collection

MongoCollection::getName
MongoCollection::getSlaveOkay
MongoCollection
PHP Manual

MongoCollection::getReadPreference

(PECL mongo >=1.3.0)

MongoCollection::getReadPreference — Get the read preference for this collection

说明

public array MongoCollection::getReadPreference ( void )

参数

此函数没有参数。

返回值

This function returns an array describing the read preference. The array contains the values type for the string read preference mode (corresponding to the MongoClient constants), and tagsets containing a list of all tag set criteria. If no tag sets were specified, tagsets will not be present in the array.

更新日志

版本 | 说明
1.3.3 | The return value has changed to be consistent with MongoCollection::setReadPreference(). The type value was changed from a number to a string, type_string was removed, and tagsets now expresses tags as key/value pairs instead of colon-delimited strings.

范例

Example #1 MongoCollection::getReadPreference() return value example

<?php

$m = new MongoClient();
$c = $m->test->users;
$c->setReadPreference(MongoClient::RP_SECONDARY, array(
    array('dc' => 'east', 'use' => 'reporting'),
    array('dc' => 'west'),
    array(),
));
var_dump($c->getReadPreference());
?>

以上例程会输出：

array(2) {
  ["type"]=>
  string(9) "secondary"
  ["tagsets"]=>
  array(3) {
    [0]=>
    array(2) {
      ["dc"]=>
      string(4) "east"
      ["use"]=>
      string(9) "reporting"
    }
    [1]=>
    array(1) {
      ["dc"]=>
      string(7) "west"
    }
    [2]=>
    array(0) {
    }
  }
}

参见

  • The read preferences documentation.
  • MongoCollection::setReadPreference() - Set the read preference for this collection
MongoCollection::getName
MongoCollection::getSlaveOkay
MongoCollection


Get slaveOkay setting for this collection

MongoCollection::getReadPreference
MongoCollection::getWriteConcern
MongoCollection
PHP Manual

MongoCollection::getSlaveOkay

(PECL mongo >=1.1.0)

MongoCollection::getSlaveOkay — Get slaveOkay setting for this collection

说明

public bool MongoCollection::getSlaveOkay ( void )

See the query section of this manual for information on distributing reads to secondaries.

参数

此函数没有参数。

返回值

Returns the value of slaveOkay for this instance.

更新日志

版本 | 说明
1.2.11 | Emits E_DEPRECATED when used.

参见

  • 读取首选项
  • MongoCollection::getReadPreference() - Get the read preference for this collection
MongoCollection::getReadPreference
MongoCollection::getWriteConcern
MongoCollection


Get the write concern for this collection

MongoCollection::getSlaveOkay
MongoCollection::group
MongoCollection
PHP Manual

MongoCollection::getWriteConcern

(PECL mongo >=1.5.0)

MongoCollection::getWriteConcern — Get the write concern for this collection

说明

public array MongoCollection::getWriteConcern ( void )

参数

此函数没有参数。

返回值

This function returns an array describing the write concern. The array contains the values w for an integer acknowledgement level or string mode, and wtimeout denoting the maximum number of milliseconds to wait for the server to satisfy the write concern.

范例

Example #1 MongoCollection::getWriteConcern() return value example

<?php

$mc = new MongoClient('mongodb://localhost:27017', array('wTimeoutMS' => 500));
$coll = $mc->selectCollection('test', 'foo');
var_dump($coll->getWriteConcern());

$coll->setWriteConcern(1, 1000);
var_dump($coll->getWriteConcern());
?>

以上例程会输出：

array(2) {
  ["w"]=>
  int(1)
  ["wtimeout"]=>
  int(500)
}
array(2) {
  ["w"]=>
  int(1)
  ["wtimeout"]=>
  int(1000)
}

参见

  • The write concern documentation.
  • MongoCollection::setWriteConcern() - Set the write concern for this database
MongoCollection::getSlaveOkay
MongoCollection::group
MongoCollection


Performs an operation similar to SQL's GROUP BY command

MongoCollection::getWriteConcern
MongoCollection::insert
MongoCollection
PHP Manual

MongoCollection::group

(PECL mongo >=0.9.2)

MongoCollection::group — Performs an operation similar to SQL's GROUP BY command

说明

public array MongoCollection::group ( mixed $keys , array $initial , MongoCode $reduce [, array $options = array() ] )

参数

keys

Fields to group by. If an array or non-code object is passed, it will be the key used to group results.

1.0.4+: If keys is an instance of MongoCode, keys will be treated as a function that returns the key to group by (see the "Passing a keys function" example below).

initial

Initial value of the aggregation counter object.

reduce

A function that takes two arguments (the current document and the aggregation to this point) and does the aggregation.

options

Optional parameters to the group command. Valid options include:

  • "condition"

    Criteria for including a document in the aggregation.

  • "finalize"

    Function called once per unique key that takes the final output of the reduce function.

  • "maxTimeMS"

    Specifies a cumulative time limit in milliseconds for processing the operation on the server (does not include idle time). If the operation is not completed by the server within the timeout period, a MongoExecutionTimeoutException will be thrown.

返回值

Returns an array containing the result.

更新日志

版本 | 说明
1.5.0 | Added "maxTimeMS" option.
1.2.11 | Emits E_DEPRECATED when options is scalar.

范例

Example #1 MongoCollection::group() example

This groups documents by category and creates a list of names within that category.

<?php

$collection->insert(array("category" => "fruit", "name" => "apple"));
$collection->insert(array("category" => "fruit", "name" => "peach"));
$collection->insert(array("category" => "fruit", "name" => "banana"));
$collection->insert(array("category" => "veggie", "name" => "corn"));
$collection->insert(array("category" => "veggie", "name" => "broccoli"));

$keys = array("category" => 1);

$initial = array("items" => array());

$reduce = "function (obj, prev) { prev.items.push(obj.name); }";

$g = $collection->group($keys, $initial, $reduce);

echo json_encode($g['retval']);

?>

以上例程的输出类似于：

[{"category":"fruit","items":["apple","peach","banana"]},{"category":"veggie","items":["corn","broccoli"]}]

Example #2 MongoCollection::group() example

This example doesn't use any key, so every document will be its own group. It also uses a condition: only documents that match this condition will be processed by the grouping function.

<?php

$collection->save(array("a" => 2));
$collection->save(array("b" => 5));
$collection->save(array("a" => 1));

// use all fields
$keys = array();

// set intial values
$initial = array("count" => 0);

// JavaScript function to perform
$reduce = "function (obj, prev) { prev.count++; }";

// only use documents where the "a" field is greater than 1
$condition = array('condition' => array("a" => array( '$gt' => 1)));

$g = $collection->group($keys, $initial, $reduce, $condition);

var_dump($g);

?>

以上例程的输出类似于：

array(4) {
  ["retval"]=>
  array(1) {
    [0]=>
    array(1) {
      ["count"]=>
      float(1)
    }
  }
  ["count"]=>
  float(1)
  ["keys"]=>
  int(1)
  ["ok"]=>
  float(1)
}

Example #3 Passing a keys function

If you want to group by something other than a field name, you can pass a function as the first parameter of MongoCollection::group() and it will be run against each document. The return value of the function will be used as its grouping value.

This example demonstrates grouping by the num field modulo 4.

<?php

$c->group(new MongoCode('function(doc) { return {mod : doc.num % 4}; }'),
     array("count" => 0),
     new MongoCode('function(current, total) { total.count++; }'));

?>
MongoCollection::getWriteConcern
MongoCollection::insert
MongoCollection


插入文档到集合中

MongoCollection::group
MongoCollection::parallelCollectionScan
MongoCollection
PHP Manual

MongoCollection::insert

(PECL mongo >=0.9.0)

MongoCollection::insert — 插入文档到集合中

说明

public bool|array MongoCollection::insert ( array|object $a [, array $options = array() ] )

发送到数据库的所有字符串必须是 UTF-8 的。如果有字符串不是 UTF-8，将会抛出 MongoException 异常。 要插入（或者查询）一个非 UTF-8 的字符串，请使用 MongoBinData。

参数

a

一个数组或对象。如果使用的是一个对象，它不能有 protected 或 private 的属性。

Note:

如果参数不具有 _id 键或属性， 将会创建一个新的 MongoId 实例，并赋值给它。 这种特殊行为不意味着参数是传引用的。

options

插入的选项。

  • "fsync"

    Boolean, defaults to FALSE. Forces the insert to be synced to disk before returning success. If TRUE, an acknowledged insert is implied and will override setting w to 0.

  • "j"

    Boolean, defaults to FALSE. Forces the write operation to block until it is synced to the journal on disk. If TRUE, an acknowledged write is implied and this option will override setting "w" to 0.

    Note: If this option is used and journaling is disabled, MongoDB 2.6+ will raise an error and the write will fail; older server versions will simply ignore the option.

  • "w"

    See WriteConcerns. The default value for MongoClient is 1.

  • "wtimeout"

    Deprecated alias for "wTimeoutMS".

  • "safe"

    Deprecated. Please use the WriteConcern w option.

  • "timeout"

    Integer, defaults to MongoCursor::$timeout. If "safe" is set, this sets how long (in milliseconds) for the client to wait for a database response. If the database does not respond within the timeout period, a MongoCursorTimeoutException will be thrown.

返回值

如果设置了 "w" 选项，将会返回包含插入状态的数组。 否则，将会返回一个 TRUE 代表数组不是空的（空数组将会抛出 MongoException ）。

如果返回了一个 array，将会有以下键：

ok

它应该几乎总是 1（除非 last_error 本身出现错误）。

err

如果这个字段不是 null，说明刚才的操作出现了错误。 如果有这个字段，它将包含一个字符串，用于描述出现的错误信息。

code

如果发生了一个数据库错误，相应的错误码会传到客户端。

errmsg

如果数据库命令出现了错误，将会设置这个字段。同时 ok 也会是 0. 例如，设置了 w 并且超时了，errmsg 将会是 "timed out waiting for slaves" 并且 ok 是 0。 如果设置了这个字段，它会是发生的错误的字符串描述。

n

如果最后的操作是插入、更新或删除，将会返回受影响的对象数量。对于插入操作，这个值总是 0。

wtimeout

等待复制直到超时的时间。

waited

在超时前，要等待操作多久。

wtime

如果设置了 w 并且操作成功了，等到复制到 w 台服务器的时间。

upserted

如果发生了一次 upsert，这个字段将会包含新记录的 _id。 对于 upsert，不管是该字段还是 updatedExisting 都会被保留（除非发生了一个错误）。

updatedExisting

如果一个 upsert 更新了一个存在的元素，这个字段将会是 true。 对于 upsert，无论是这个字段 还是 upserted 都会被保留（除非发生了错误）。

错误／异常

如果插入的文档是空的，或者包含零长度的键，将会抛出 MongoException。 尝试插入包含 protected 和 private 属性的对象将会导致零长度键（zero-length key）的错误。

Throws MongoCursorException if the "w" option is set and the write fails.

Throws MongoCursorTimeoutException if the "w" option is set to a value greater than one and the operation takes longer than MongoCursor::$timeout milliseconds to complete. This does not kill the operation on the server, it is a client-side timeout. The operation in MongoCollection::$wtimeout is milliseconds.

更新日志

版本 | 说明
1.3.0 | options 参数不再接受 boolean 来标识一个确认的写入。 现在，你可以通过 array('w' => 1) 设置（ MongoClient 默认的行为）
1.2.0 | 增加了 "timeout" 选项。
1.0.11 | 如果设置了 "safe"，出现 "not master" 错误时断开连接。
1.0.9 | "safe" 选项接受 integer 值，之前只接受 boolean 值。 增加 "fsync" 选项。 如果设置了 "safe" 选项，返回类型改成包含错误信息的 array。 否则，和之前一样返回 boolean。
1.0.5 | 修改第二个参数为选项数组。在 1.0.5 之前，第二个参数是 boolean，指示 "safe" 选项。
1.0.1 | 如果设置了 "safe" 选项并且插入失败了，将会抛出 MongoCursorException。

范例

Example #1 MongoCollection::insert() _id 例子

如果没有 _id，则会添加一个到插入的文档中。 基于参数传入的方式，在调用代码时可能无法产生有效 _id。

<?php

$m = new MongoClient();
$collection = $m->selectCollection('test', 'phpmanual');
// 如果使用的是 array 字面语法，将无法成功生成 _id
$collection->insert(array('x' => 1));

// 通过传 array 的变量可以生成 _id
$a = array('x' => 2);
$collection->insert($a);
var_dump($a);

// 通过传引用的 array 无法生成 _id
$b = array('x' => 3);
$ref = &$b;
$collection->insert($ref);
var_dump($ref);

// 没有在包裹的函数中触发 copy-on-write 时 _id 有效
function insert_no_cow($collection, $document)
{
    $collection->insert($document);
}

$c = array('x' => 4);
insert_no_cow($collection, $c);
var_dump($c);

// 在包裹的函数中触发 copy-on-write 时 _id 无效
function insert_cow($collection, $document)
{
    $document['y'] = 1;
    $collection->insert($document);
}

$d = array('x' => 5);
insert_cow($collection, $d);
var_dump($d);

?>

以上例程的输出类似于：

array(2) {
  ["x"]=>
  int(2)
  ["_id"]=>
  object(MongoId)#4 (0) {
  }
}
array(1) {
  ["x"]=>
  int(3)
}
array(2) {
  ["x"]=>
  int(4)
  ["_id"]=>
  object(MongoId)#5 (0) {
  }
}
array(1) {
  ["x"]=>
  int(5)
}

Example #2 MongoCollection::insert() 确认写入的例子

这个例子显示了设置了 w 后，插入两个具有相同 _id 的元素时，导致抛出 MongoCursorException 的例子。

<?php

$person = array("name" => "Joe", "age" => 20);
$collection->insert($person);

// 现在 $person 具有一个 _id 字段，所以我们再次
// 保存它的时候，将会得到一个异常
try {
    $collection->insert($person, array("w" => 1));
} catch(MongoCursorException $e) {
    echo "Can't save the same person twice!\n";
}

?>

参见

  • MongoCollection::batchInsert() - Inserts multiple documents into this collection
  • MongoCollection::update() - Update records based on a given criteria
  • MongoCollection::find() - 查询该集合，并返回结果集的 MongoCursor
  • MongoCollection::remove() - 从集合中删除记录
  • MongoDB » insert 的核心文档。
MongoCollection::group
MongoCollection::parallelCollectionScan
MongoCollection


Returns an array of cursors to iterator over a full collection in parallel

MongoCollection::insert
MongoCollection::remove
MongoCollection
PHP Manual

MongoCollection::parallelCollectionScan

(PECL mongo >=1.5.0)

MongoCollection::parallelCollectionScan — Returns an array of cursors to iterator over a full collection in parallel

说明

public array[MongoCommandCursor] MongoCollection::parallelCollectionScan ( int $num_cursors )

This method returns an array of a maximum of num_cursors cursors. An iteration over one of the returned cursors results in a partial set of documents for a collection. Iteration over all the returned cursors results in getting every document back from the collection.

This method is a wrapper for the parallelCollectionScan MongoDB command.

参数

num_cursors

The number of cursors to request from the server. Please note, that the server can return less cursors than you requested.

返回值

Returns an array of MongoCommandCursor objects.

范例

Example #1 MongoCollection::parallelCollectionScan() example

Returning all documents in a collection by using multiple cursors.

<?php
$m = new MongoClient;
$c = $m->demo->cities;

/* Request three cursors */
$cursors = $c->parallelCollectionScan( 3 );

/* Add all the cursors to the MultipleIterator */
$mi = new MultipleIterator( MultipleIterator::MIT_NEED_ANY );
foreach ( $cursors as $cursor )
{
    $mi->attachIterator( $cursor );
}

/* Iterate over all the associated cursors */
foreach ( $mi as $items )
{
    foreach ( $items as $item )
    {
        if ( $item !== NULL )
        {
            echo $item['name'], "\n";
        }
    }
}
?>

参见

  • MultipleIterator
  • MongoCommandCursor
  • MongoDB::command() - 执行一条 Mongo 指令

MongoCollection::insert
MongoCollection::remove
MongoCollection


从集合中删除记录

MongoCollection::parallelCollectionScan
MongoCollection::save
MongoCollection
PHP Manual

MongoCollection::remove

(PECL mongo >=0.9.0)

MongoCollection::remove — 从集合中删除记录

说明

 public bool|array MongoCollection::remove
  ([ array $criteria = array()
 [, array $options = array()
]] )

参数

criteria

待删除记录的描述。

options

删除的选项。

  • "w"

    See WriteConcerns. The default value for MongoClient is 1.

  • "justOne"

    最多只删除一个匹配的记录。

  • "fsync"

    Boolean, defaults to FALSE. Forces the insert to be synced to disk before returning success. If TRUE, an acknowledged insert is implied and will override setting w to 0.

  • "j"

    Boolean, defaults to FALSE. Forces the write operation to block until it is synced to the journal on disk. If TRUE, an acknowledged write is implied and this option will override setting "w" to 0.

    Note: If this option is used and journaling is disabled, MongoDB 2.6+ will raise an error and the write will fail; older server versions will simply ignore the option.

  • "w"

    See WriteConcerns. The default value for MongoClient is 1.

  • "wtimeout"

    Deprecated alias for "wTimeoutMS".

  • "safe"

    Deprecated. Please use the WriteConcern w option.

  • "timeout"

    Integer, defaults to MongoCursor::$timeout. If "safe" is set, this sets how long (in milliseconds) for the client to wait for a database response. If the database does not respond within the timeout period, a MongoCursorTimeoutException will be thrown.

返回值

如果设置了 "w" 选项，将会返回包含删除状态的 array。 否则返回 TRUE。

状态数组字段的解释位于 MongoCollection::insert() 的文档。

错误／异常

Throws MongoCursorException if the "w" option is set and the write fails.

Throws MongoCursorTimeoutException if the "w" option is set to a value greater than one and the operation takes longer than MongoCursor::$timeout milliseconds to complete. This does not kill the operation on the server, it is a client-side timeout. The operation in MongoCollection::$wtimeout is milliseconds.

更新日志

版本 | 说明
1.3.0 | options 参数不再接受 boolean 值来代表 "justOne"。 现在，必须使用 array('justOne' => true) 作为替代。
1.2.11 | 当 options 是 scalar 时产生一个 E_DEPRECATED 警告。
1.2.0 | 添加 "timeout" 选项。
1.0.11 | 在设置了 "safe" 之后，将在出现 "not master" 错误时断开连接。
1.0.9 | 添加了 "safe" 选项对 integer 的支持，之前只接受 boolean 值。 添加了 "fsync" 选项。 当使用了 "safe" 选项时将会返回包含错误信息的数组。 否则和之前一样返回一个 boolean。
1.0.5 | 修改第二个参数为选项的 array。在 1.0.5 之前，第二个选项是 boolean 值， 代表了 "safe" 选项。

范例

Example #1 MongoCollection::remove() 的 justOne 例子

<?php

$radioactive = $db->radioactive;

// 统计那有多少个钚
$remaining = $radioactive->count(array('type' => 94));

$halflife = $remaining/2;

// 删除一半
while ($halflife > 0) {
    $radioactive->remove(array('type' => 94), array("justOne" => true));
    $halflife--;
}

?>

参见

  • MongoCollection::insert() - 插入文档到集合中
  • MongoCollection::update() - Update records based on a given criteria
  • MongoDB » remove 的核心文档。
MongoCollection::parallelCollectionScan
MongoCollection::save
MongoCollection


保存一个文档到集合

MongoCollection::remove
MongoCollection::setReadPreference
MongoCollection
PHP Manual

MongoCollection::save

(PECL mongo >=0.9.0)

MongoCollection::save — 保存一个文档到集合

说明

public mixed MongoCollection::save ( array|object $a [, array $options = array() ] )

如果对象来自数据库，则更新现有的数据库对象，否则插入对象。

参数

a

要保存的 Array 或 Object。 如果用的是 Object，它不能有 protected 或 private 的属性。

Note:

如果参数不具有 _id 的键或者属性，将会创建并赋值一个新的 MongoId 实例。 关于此行为的更多信息，参见 MongoCollection::insert()。

options

此次保存的选项。

  • "fsync"

    Boolean, defaults to FALSE. Forces the insert to be synced to disk before returning success. If TRUE, an acknowledged insert is implied and will override setting w to 0.

  • "j"

    Boolean, defaults to FALSE. Forces the write operation to block until it is synced to the journal on disk. If TRUE, an acknowledged write is implied and this option will override setting "w" to 0.

    Note: If this option is used and journaling is disabled, MongoDB 2.6+ will raise an error and the write will fail; older server versions will simply ignore the option.

  • "w"

    See WriteConcerns. The default value for MongoClient is 1.

  • "wtimeout"

    Deprecated alias for "wTimeoutMS".

  • "safe"

    Deprecated. Please use the WriteConcern w option.

  • "timeout"

    Integer, defaults to MongoCursor::$timeout. If "safe" is set, this sets how long (in milliseconds) for the client to wait for a database response. If the database does not respond within the timeout period, a MongoCursorTimeoutException will be thrown.

返回值

如果设置了 w，返回包含此次保存状态的一个 array。 否则，返回一个 boolean，表示数组是否为空（空数组不会被插入）。

错误／异常

如果插入的文档时空的，或者包含零长度的键，将抛出 MongoException。 尝试插入包含 protected 和 private 属性的对象将导致零长度键的错误。

Throws MongoCursorException if the "w" option is set and the write fails.

Throws MongoCursorTimeoutException if the "w" option is set to a value greater than one and the operation takes longer than MongoCursor::$timeout milliseconds to complete. This does not kill the operation on the server, it is a client-side timeout. The operation in MongoCollection::$wtimeout is milliseconds.

更新日志

版本 | 说明
1.2.0 | 增加 "timeout" 选项。
1.0.11 | 设置 "safe" 时，当出现 "not master" 错误时主动断开连接。
1.0.9 | 选项 "safe" 接受 integer 的值，之前仅仅接受 boolean。 增加 "fsync" 选项。
1.0.5 | 增加 options 参数。

范例

Example #1 MongoCollection::save() 例子

<?php

$obj = array('x' => 1);

// 插入 $obj 到 db
$collection->save($obj);
var_dump($obj);

// 增加额外的字段
$obj['foo'] = 'bar';

// $obj 不能被再次插入，导致 duplicate _id 错误
$collection->insert($obj);

// 保存、更新附带新字段的 $obj
$collection->save($obj);

?>

以上例程的输出类似于：

array(2) {
  ["x"]=>
  int(1)
  ["_id"]=>
  object(MongoId)#4 (1) {
    ["$id"]=>
    string(24) "50b6afe544415ed606000000"
  }
}
MongoCollection::remove
MongoCollection::setReadPreference
MongoCollection


Set the read preference for this collection

MongoCollection::save
MongoCollection::setSlaveOkay
MongoCollection
PHP Manual

MongoCollection::setReadPreference

(PECL mongo >=1.3.0)

MongoCollection::setReadPreference — Set the read preference for this collection

说明

public bool MongoCollection::setReadPreference ( string $read_preference [, array $tags ] )

参数

read_preference

The read preference mode: MongoClient::RP_PRIMARY, MongoClient::RP_PRIMARY_PREFERRED, MongoClient::RP_SECONDARY, MongoClient::RP_SECONDARY_PREFERRED, or MongoClient::RP_NEAREST.

tags

An array of zero or more tag sets, where each tag set is itself an array of criteria used to match tags on replica set members.

返回值

Returns TRUE on success, or FALSE otherwise.

错误／异常

Emits E_WARNING if either parameter is invalid, or if one or more tag sets are provided with the MongoClient::RP_PRIMARY read preference mode.

范例

Example #1 MongoCollection::setReadPreference() tag set array syntax example

<?php

$m = new MongoClient();
$c = $m->test->users;

// Prefer the nearest server in the "east" data center also used for reporting,
// but fall back to a server in the "west" data center
$c->setReadPreference(MongoClient::RP_NEAREST, array(
    array('dc' => 'east', 'use' => 'reporting'),
    array('dc' => 'west'),
));
?>

参见

  • The read preferences documentation.
  • MongoCollection::getReadPreference() - Get the read preference for this collection
MongoCollection::save
MongoCollection::setSlaveOkay
MongoCollection


Change slaveOkay setting for this collection

MongoCollection::setReadPreference
MongoCollection::setWriteConcern
MongoCollection
PHP Manual

MongoCollection::setSlaveOkay

(PECL mongo >=1.1.0)

MongoCollection::setSlaveOkay — Change slaveOkay setting for this collection

说明

public bool MongoCollection::setSlaveOkay ([ bool $ok = true ] )

See the query section of this manual for information on distributing reads to secondaries.

参数

ok

If reads should be sent to secondary members of a replica set for all possible queries using this MongoCollection instance.

返回值

Returns the former value of slaveOkay for this instance.

更新日志

版本 | 说明
1.2.11 | Emits E_DEPRECATED when used.

参见

  • 读取首选项
  • MongoCollection::setReadPreference() - Set the read preference for this collection
MongoCollection::setReadPreference
MongoCollection::setWriteConcern
MongoCollection


Set the write concern for this database

MongoCollection::setSlaveOkay
MongoCollection::toIndexString
MongoCollection
PHP Manual

MongoCollection::setWriteConcern

(PECL mongo >=1.5.0)

MongoCollection::setWriteConcern — Set the write concern for this database

说明

public bool MongoCollection::setWriteConcern ( mixed $w [, int $wtimeout ] )

参数

w

The write concern. This may be an integer denoting the number of servers required to acknowledge the write, or a string mode (e.g. "majority").

wtimeout

The maximum number of milliseconds to wait for the server to satisfy the write concern.

返回值

Returns TRUE on success, or FALSE otherwise.

错误／异常

Emits E_WARNING if the w parameter is not an integer or string value.

范例

Example #1 MongoDB::setWriteConcern() example

<?php

$mc = new MongoClient('mongodb://rs1.example.com,rs2.example.com');
$coll = $mc->selectCollection('test', 'foo');

// Require that the majority of servers in the replica set acknowledge writes
// within three seconds.
$coll->setWriteConcern('majority', 3000);
?>

参见

  • The write concern documentation.
  • MongoCollection::getWriteConcern() - Get the write concern for this collection
MongoCollection::setSlaveOkay
MongoCollection::toIndexString
MongoCollection


Converts keys specifying an index to its identifying string

MongoCollection::setWriteConcern
MongoCollection::__toString
MongoCollection
PHP Manual

MongoCollection::toIndexString

(PECL mongo >=0.9.0)

MongoCollection::toIndexString — Converts keys specifying an index to its identifying string

说明

static protected string MongoCollection::toIndexString ( mixed $keys )
Warning

This method is deprecated since version 1.5.0.

参数

keys

Field or fields to convert to the identifying string

返回值

Returns a string that describes the index.

范例

Example #1 MongoCollection::toIndexString() example

This example shows how you can create an index name out of keys. Because this is a protected (static) method, you need to overload it in a child class first.

<?php
// Create inherited class to make the method "public".
class MyCollection extends MongoCollection
{
    static public function toIndexString($a)
    {
        return parent::toIndexString($a);
    }
}

echo MyCollection::toIndexString("foo"), "\n";
// Outputs: foo_1

echo MyCollection::toIndexString(array('name' => 1, 'age' => -1)), "\n";
// Outputs: name_1_age_-1
?>

参见

MongoDB core docs on » indexes.

更新日志

版本 | 说明
1.5.0 | This method has been deprecated.

MongoCollection::setWriteConcern
MongoCollection::__toString
MongoCollection


String representation of this collection

MongoCollection::toIndexString
MongoCollection::update
MongoCollection
PHP Manual

MongoCollection::__toString

(PECL mongo >=0.9.0)

MongoCollection::__toString — String representation of this collection

说明

public string MongoCollection::__toString ( void )

参数

此函数没有参数。

返回值

Returns the full name of this collection.

范例

Example #1 MongoCollection::__toString() example

<?php

$m = new MongoClient();

$c1 = $m->foo->bar->baz;
echo "Working with collection $c1.";

$c2 = $m->selectCollection('[]', '&');
echo "Working with collection $c2.";

?>

以上例程的输出类似于：

Working with collection foo.bar.baz.
Working with collection [].&.

MongoCollection::toIndexString
MongoCollection::update
MongoCollection


Update records based on a given criteria

MongoCollection::__toString
MongoCollection::validate
MongoCollection
PHP Manual

MongoCollection::update

(PECL mongo >=0.9.0)

MongoCollection::update — Update records based on a given criteria

说明

public bool|array MongoCollection::update ( array $criteria , array $new_object [, array $options = array() ] )

参数

criteria

Query criteria for the documents to update.

new_object

The object used to update the matched documents. This may either contain update operators (for modifying specific fields) or be a replacement document.

options

An array of options for the update operation. Currently available options include:

  • "upsert"

    If no document matches $criteria, a new document will be inserted.

    If a new document would be inserted and $new_object contains atomic modifiers (i.e. $ operators), those operations will be applied to the $criteria parameter to create the new document. If $new_object does not contain atomic modifiers, it will be used as-is for the inserted document. See the upsert examples below for more information.

  • "multiple"

    All documents matching $criteria will be updated. MongoCollection::update() has exactly the opposite behavior of MongoCollection::remove(): it updates one document by default, not all matching documents. It is recommended that you always specify whether you want to update multiple documents or a single document, as the database may change its default behavior at some point in the future.

  • "fsync"

    Boolean, defaults to FALSE. Forces the insert to be synced to disk before returning success. If TRUE, an acknowledged insert is implied and will override setting w to 0.

  • "j"

    Boolean, defaults to FALSE. Forces the write operation to block until it is synced to the journal on disk. If TRUE, an acknowledged write is implied and this option will override setting "w" to 0.

    Note: If this option is used and journaling is disabled, MongoDB 2.6+ will raise an error and the write will fail; older server versions will simply ignore the option.

  • "socketTimeoutMS"

    This option specifies the time limit, in milliseconds, for socket communication. If the server does not respond within the timeout period, a MongoCursorTimeoutException will be thrown and there will be no way to determine if the server actually handled the write or not. A value of -1 may be specified to block indefinitely. The default value for MongoClient is 30000 (30 seconds).

  • "w"

    See WriteConcerns. The default value for MongoClient is 1.

  • "wTimeoutMS"

    This option specifies the time limit, in milliseconds, for write concern acknowledgement. It is only applicable when "w" is greater than 1, as the timeout pertains to replication. If the write concern is not satisfied within the time limit, a MongoCursorException will be thrown. A value of 0 may be specified to block indefinitely. The default value for MongoClient is 10000 (ten seconds).

The following options are deprecated and should no longer be used:

  • "safe"

    Deprecated. Please use the WriteConcern w option.

  • "timeout"

    Integer, defaults to MongoCursor::$timeout. If "safe" is set, this sets how long (in milliseconds) for the client to wait for a database response. If the database does not respond within the timeout period, a MongoCursorTimeoutException will be thrown.

  • "wtimeout"

    Deprecated alias for "wTimeoutMS".

返回值

Returns an array containing the status of the update if the "w" option is set. Otherwise, returns TRUE.

Fields in the status array are described in the documentation for MongoCollection::insert().

错误／异常

Throws MongoCursorException if the "w" option is set and the write fails.

Throws MongoCursorTimeoutException if the "w" option is set to a value greater than one and the operation takes longer than MongoCursor::$timeout milliseconds to complete. This does not kill the operation on the server, it is a client-side timeout. The operation in MongoCollection::$wtimeout is milliseconds.

更新日志

版本 | 说明
1.5.0 | Added the "wTimeoutMS" option, which replaces "wtimeout". Emits E_DEPRECATED when "wtimeout" is used. Added the "socketTimeoutMS" option, which replaces "timeout". Emits E_DEPRECATED when "timeout" is used. Emits E_DEPRECATED when "safe" is used.
1.3.4 | Added "wtimeout" option.
1.3.0 | Added "w" option. The options parameter no longer accepts a boolean to signify an upsert. Instead, this now has to be done with array('upsert' => true).
1.2.11 | Emits E_DEPRECATED when options is scalar.
1.2.0 | Added "timeout" option.
1.0.11 | Disconnects on "not master" errors if "safe" is set.
1.0.9 | Added ability to pass integers to the "safe" option, which previously only accepted booleans. Added "fsync" option. The return type was changed to be an array containing error information if the "safe" option is used. Otherwise, a boolean is returned as before.
1.0.5 | Added "safe" option.
1.0.1 | Changed options parameter from boolean to array. Pre-1.0.1, the second parameter was an optional boolean value specifying an upsert.

范例

Example #1 MongoCollection::update()

Adding an address field to a document.

<?php

$c->insert(array("firstname" => "Bob", "lastname" => "Jones" ));
$newdata = array('$set' => array("address" => "1 Smith Lane"));
$c->update(array("firstname" => "Bob"), $newdata);

var_dump($c->findOne(array("firstname" => "Bob")));

?>

以上例程的输出类似于：

array(4) {
  ["_id"]=>
  object(MongoId)#6 (0) {
  }
  ["firstname"]=>
  string(3) "Bob"
  ["lastname"]=>
  string(5) "Jones"
  ["address"]=>
  string(12) "1 Smith Lane"
}

Example #2 MongoCollection::update() upsert examples

Upserts can simplify code, as a single line can create the document if it does not exist (based on $criteria), or update an existing document if it matches.

In the following example, $new_object contains an atomic modifier. Since the collection is empty and upsert must insert a new document, it will apply those operations to the $criteria parameter in order to create the document.

<?php

$c->drop();
$c->update(
    array("uri" => "/summer_pics"),
    array('$inc' => array("page hits" => 1)),
    array("upsert" => true)
);
var_dump($c->findOne());

?>

以上例程的输出类似于：

array(3) {
  ["_id"]=>
  object(MongoId)#9 (0) {
  }
  ["uri"]=>
  string(12) "/summer_pics"
  ["page hits"]=>
  int(1)
}

If $new_object does not contain atomic modifiers (i.e. $ operators), upsert will use $new_object as-is for the new document. This matches the behavior of a normal update, where not using atomic modifiers causes the document to be overwritten.

<?php

$c->drop();
$c->update(
    array("name" => "joe"),
    array("username" => "joe312", "createdAt" => new MongoDate()),
    array("upsert" => true)
);
var_dump($c->findOne());

?>

以上例程的输出类似于：

array(3) {
  ["_id"]=>
  object(MongoId)#10 (0) {
  }
  ["username"]=>
  string(6) "joe312"
  ["createdAt"]=>
  object(MongoDate)#4 (0) {
  }
}

Example #3 MongoCollection::update() multiple example

By default, MongoCollection::update() will only update the first document matching $criteria that it finds. Using the "multiple" option can override this behavior, if needed.

This example adds a "gift" field to every person whose birthday is in the next day.

<?php

$today = array('$gt' => new MongoDate(), '$lt' => new MongoDate(strtotime("+1 day")));
$people->update(
    array("birthday" => $today),
    array('$set' => array('gift' => $surprise)),
    array("multiple" => true)
);

?>

参见

The PHP documentation on updates and the » MongoDB core docs.

MongoCollection::__toString
MongoCollection::validate
MongoCollection


Validates this collection

MongoCollection::update
MongoCursor
MongoCollection
PHP Manual

MongoCollection::validate

(PECL mongo >=0.9.0)

MongoCollection::validate — Validates this collection

说明

public array MongoCollection::validate ([ bool $scan_data = FALSE ] )

参数

scan_data

Only validate indices, not the base collection.

返回值

Returns the database's evaluation of this object.

MongoCollection::update
MongoCursor
MongoCollection


The MongoCursor class

(PECL mongo >=0.9.0)

简介

A cursor is used to iterate through the results of a database query. For example, to query the database and see all results, you could do:

Example #1 MongoCursor basic usage

<?php

$cursor = $collection->find();
var_dump(iterator_to_array($cursor));

?>

You don't generally create cursors using the MongoCursor constructor, you get a new cursor by calling MongoCollection::find() (as shown above).

Suppose that, in the example above, $collection was a 50GB collection. We certainly wouldn't want to load that into memory all at once, which is what a cursor is for: allowing the client to access the collection in dribs and drabs.

If we have a large result set, we can iterate through it, loading a few megabytes of results into memory at a time. For example, we could do:

Example #2 Iterating over MongoCursor

<?php

$cursor = $collection->find();

foreach ($cursor as $doc) {
    // do something to each document
}

?>
This will go through each document in the collection, loading and garbage collecting documents as needed.

Note that this means that a cursor does not "contain" the database results, it just manages them. Thus, if you print a cursor (with, say, var_dump() or print_r()), you'll just get the cursor object, not your documents. To get the documents themselves, you can use one of the methods shown above.

Cursor Stages

A MongoCursor has two "life stages": pre- and post- query. When a cursor is created, it has not yet contacted the database, so it is in its pre-query state. In this state, the client can further specify what they want the query to do, including adding limits, skips, sorts, and more advanced options.

When the client attempts to get a result (by calling MongoCursor::next(), directly or indirectly), the cursor moves into the post-query stage. At this point, the query has been executed by the database and cannot be modified anymore.

Example #3 Adding options to MongoCursor

<?php

$cursor = $collection->find()->limit(10);

// database has not yet been queried, so more search options can be added
$cursor = $cursor->sort(array("a" => 1));

var_dump($cursor->getNext());
// now database has been queried and more options cannot be added

// so this will throw an exception:
$cursor->skip(4);
?>

类摘要

MongoCursor implements MongoCursorInterface , Iterator {
/* Static Fields */
static boolean $slaveOkay = FALSE ;
static integer $timeout = 30000 ;
/* 方法 */
public MongoCursor addOption ( string $key , mixed $value )
public MongoCursor awaitData ([ bool $wait = true ] )
public MongoCursor batchSize ( int $batchSize )
public __construct ( MongoClient $connection , string $ns [, array $query = array() [, array $fields = array() ]] )
public int count ([ bool $foundOnly = FALSE ] )
public array current ( void )
public bool dead ( void )
protected void doQuery ( void )
public array explain ( void )
public MongoCursor fields ( array $f )
public array getNext ( void )
public array getReadPreference ( void )
public bool hasNext ( void )
public MongoCursor hint ( mixed $index )
public MongoCursor immortal ([ bool $liveForever = true ] )
public array info ( void )
public string|int key ( void )
public MongoCursor limit ( int $num )
public MongoCursor maxTimeMS ( int $ms )
public array next ( void )
public MongoCursor partial ([ bool $okay = true ] )
public void reset ( void )
public void rewind ( void )
public MongoCursor setFlag ( int $flag [, bool $set = true ] )
public MongoCursor setReadPreference ( string $read_preference [, array $tags ] )
public MongoCursor skip ( int $num )
public MongoCursor slaveOkay ([ bool $okay = true ] )
public MongoCursor snapshot ( void )
public MongoCursor sort ( array $fields )
public MongoCursor tailable ([ bool $tail = true ] )
public MongoCursor timeout ( int $ms )
public bool valid ( void )
}

Static Variables

slaveOkay

If the query should have the "slaveOkay" flag set, which allows reads on the secondary (secondaries are, by default, just for backup and not queried). Can be overridden with MongoCursor::slaveOkay().

This functionality is deprecated. Please use 读取首选项 instead.

timeout

Set timeout in milliseconds for all database responses. Use -1 to wait forever. Can be overridden with MongoCursor::timeout(). This does not cause the MongoDB server to cancel the operation; it only instructs the driver to stop waiting for a response and throw a MongoCursorTimeoutException after a set time.

参见

MongoDB core docs on » cursors.

Table of Contents

  • MongoCursor::addOption — Adds a top-level key/value pair to a query
  • MongoCursor::awaitData — Sets whether this cursor will wait for a while for a tailable cursor to return more data
  • MongoCursor::batchSize — Limits the number of elements returned in one batch.
  • MongoCursor::__construct — Create a new cursor
  • MongoCursor::count — Counts the number of results for this query
  • MongoCursor::current — Returns the current element
  • MongoCursor::dead — Checks if there are results that have not yet been sent from the database
  • MongoCursor::doQuery — Execute the query.
  • MongoCursor::explain — Return an explanation of the query, often useful for optimization and debugging
  • MongoCursor::fields — Sets the fields for a query
  • MongoCursor::getNext — Advances the cursor to the next result, and returns that result
  • MongoCursor::getReadPreference — Get the read preference for this query
  • MongoCursor::hasNext — Checks if there are any more elements in this cursor
  • MongoCursor::hint — Gives the database a hint about the query
  • MongoCursor::immortal — Sets whether this cursor will timeout
  • MongoCursor::info — Gets information about the cursor's creation and iteration
  • MongoCursor::key — Returns the current result's _id, or its index within the result set
  • MongoCursor::limit — Limits the number of results returned
  • MongoCursor::maxTimeMS — Sets a server-side timeout for this query
  • MongoCursor::next — Advances the cursor to the next result, and returns that result
  • MongoCursor::partial — If this query should fetch partial results from mongos if a shard is down
  • MongoCursor::reset — Clears the cursor
  • MongoCursor::rewind — Returns the cursor to the beginning of the result set
  • MongoCursor::setFlag — Sets arbitrary flags in case there is no method available the specific flag
  • MongoCursor::setReadPreference — Set the read preference for this query
  • MongoCursor::skip — Skips a number of results
  • MongoCursor::slaveOkay — Sets whether this query can be done on a secondary [deprecated]
  • MongoCursor::snapshot — Use snapshot mode for the query
  • MongoCursor::sort — Sorts the results by given fields
  • MongoCursor::tailable — Sets whether this cursor will be left open after fetching the last results
  • MongoCursor::timeout — Sets a client-side timeout for this query
  • MongoCursor::valid — Checks if the cursor is reading a valid result.
MongoCollection::validate
MongoCursor::addOption
核心类


Adds a top-level key/value pair to a query

MongoCursor
MongoCursor::awaitData
MongoCursor
PHP Manual

MongoCursor::addOption

(PECL mongo >=1.0.4)

MongoCursor::addOption — Adds a top-level key/value pair to a query

说明

public MongoCursor MongoCursor::addOption ( string $key , mixed $value )

This is an advanced function and should not be used unless you know what you're doing.

A query can optionally be nested in a "query" field if other options, such as a sort or hint, are given. For instance, adding a sort causes the query to become a subfield of a bigger query object, like:

<?php

$query = array("query" => $query, "orderby" => $sort);

?>

This method is for adding a top-level field to a query. It makes the query a subobject (if it isn't already) and adds the key/value pair of your chosing to the top level.

Warning

It cannot be used to add extra criteria to a query on the fly. For instance, this will not work:

<?php

// NOT CORRECT
$cursor = $users->find()->addOption("name", "joe")->addOption("age", 20);

?>
This does not query for a user named "joe" with an age of 20.

参数

key

Fieldname to add.

value

Value to add.

返回值

Returns this cursor.

错误／异常

Throws MongoCursorException if this cursor has started iterating.

范例

Example #1 Adding a comment with MongoCursor::addOption() example

MongoDB supports special options to be send to the server. The shell uses the _addSpecial option to send a $comment to the server. This comment will show up in the profiling log (for slow queries f.e.). In the PHP driver, you use the MongoCursor::addOption() method.

<?php
$m = new MongoClient;
$c = $m->demo->demo;
$cursor = $c->find();
$cursor->addOption('$comment', "This comment will show up in the profiling log");

foreach ($cursor as $document) { /* empty */ }
?>

以上例程的输出类似于：

{
    "op" : "query",
    "ns" : "demo.demo",
    "query" : {
        "$query" : {

        },
        "$comment" : "This comment will show up in the profiling log"
    },
    "cursorid" : 168463566447,
    "ntoreturn" : 0,
    "ntoskip" : 0,
    "nscanned" : 101,
    "nscannedObjects" : 101,
    "keyUpdates" : 0,
    "numYield" : 0,
...

Example #2 MongoCursor::addOption() example

Using MongoCursor::skip() to skip over millions of results can become slow. One way around this is to use $min or $max options for the query. These can be handy, but they require an index on exactly the fields being searched for. This is an example of how to use $min as an alternative to MongoCursor::skip().

<?php

// make sure we have an index
$c->ensureIndex(array("ts" => 1));

// you may have to modify this to run in a reasonable amount of time on slow
// machines (should take about 30 seconds on a good machine)
for ($i = 0; $i < 30000000; $i++) {
    $c->insert(array("ts" => new MongoDate(), "i" => $i));
}

$now = strtotime("now");

// find documents inserted in the last 2 seconds
$cursor = $c->find()->addOption('$min', array("ts" => $now-2));

?>
MongoCursor
MongoCursor::awaitData
MongoCursor


Sets whether this cursor will wait for a while for a tailable cursor to return more data

MongoCursor::addOption
MongoCursor::batchSize
MongoCursor
PHP Manual

MongoCursor::awaitData

(PECL mongo >=1.2.11)

MongoCursor::awaitData — Sets whether this cursor will wait for a while for a tailable cursor to return more data

说明

public MongoCursor MongoCursor::awaitData ([ bool $wait = true ] )

This method is to be used with tailable cursors. If we are at the end of the data, block for a while rather than returning no data. After a timeout period, we do return as normal.

参数

wait

If the cursor should wait for more data to become available.

返回值

Returns this cursor.

错误／异常

Throws MongoCursorException if this cursor has started iterating.

范例

Example #1 MongoCursor::awaitData() example

In this example we tail the "oplog" and instead of sleeping during every iteration, we set the MongoCursor::awaitData() option. MongoCursor::hasNext() will now block until there is more data available.

<?php
$m = new MongoClient( 'mongodb://localhost:13000', array( 'replSet' => 'seta' ) );
$c = $m->local->selectCollection( 'oplog.rs' );
$cursor = $c->find( array( 'ns' => 'demo.article', 'op' => 'i' ) );
$cursor->tailable( true );
$cursor->awaitData( true );

while (true) {
    if (!$cursor->hasNext()) {
        // we've read all the results, exit
        if ($cursor->dead()) {
            break;
        }
    } else {
        var_dump( $cursor->getNext() );
    }
}
?>

参见

MongoDB core docs on » tailable cursors.

  • MongoCursor::tailable() - Sets whether this cursor will be left open after fetching the last results

MongoCursor::addOption
MongoCursor::batchSize
MongoCursor


Limits the number of elements returned in one batch.

MongoCursor::awaitData
MongoCursor::__construct
MongoCursor
PHP Manual

MongoCursor::batchSize

(PECL mongo >=1.0.11)

MongoCursor::batchSize — Limits the number of elements returned in one batch.

说明

public MongoCursor MongoCursor::batchSize ( int $batchSize )

A cursor typically fetches a batch of result objects and store them locally. This method sets the batchSize value to configure the amount of documents retrieved from the server in one round trip. However, it will never return more documents than fit in the max batch size limit (usually 4MB).

参数

batchSize

The number of results to return per batch. Each batch requires a round-trip to the server.

If batchSize is 2 or more, it represents the size of each batch of objects retrieved. It can be adjusted to optimize performance and limit data transfer.

If batchSize is 1 or negative, it will limit of number returned documents to the absolute value of batchSize, and the cursor will be closed. For example if batchSize is -10, then the server will return a maximum of 10 documents and as many as can fit in 4MB, then close the cursor.

Warning

A batchSize of 1 is special, and means the same as -1, i.e. a value of 1 makes the cursor only capable of returning one document.

Note that this feature is different from MongoCursor::limit() in that documents must fit within a maximum size, and it removes the need to send a request to close the cursor server-side. The batch size can be changed even after a cursor is iterated, in which case the setting will apply on the next batch retrieval.

This cannot override MongoDB's limit on the amount of data it will return to the client (i.e., if you set batch size to 1,000,000,000, MongoDB will still only return 4-16MB of results per batch).

To ensure consistent behavior, the rules of MongoCursor::batchSize() and MongoCursor::limit() behave a little complex but work "as expected". The rules are: hard limits override soft limits with preference given to MongoCursor::limit() over MongoCursor::batchSize(). After that, whichever is set and lower than the other will take precedence. See below. section for some examples.

返回值

Returns this cursor.

范例

Example #1 MongoCursor::batchSize() and combinations with MongoCursor::limit()

<?php

// one batch, at most 10 items. The -10 makes the server to return 10 items,
// and then remove the cursor.
$cursor->limit(20)->batchSize(-10);

// first batch: at most 10 items
$cursor->limit(10);

// first batch: at most 10 items
$cursor->limit(10)->batchSize(20);

// results are fetched in batches of 10 each, with a maximum of 20 items
// returned (that means two batches of 10).
$cursor->limit(20)->batchSize(10);

// results are fetched in batches of 7 each, with a maximum of 30 items
// returned (that means that the driver requests 4 batches of 7, and one batch
// of 2).
$cursor->limit(30)->batchSize(7)
?>

参见

MongoDB core docs on » batchSize.

  • MongoCursor::limit() - Limits the number of results returned
  • MongoCursorInterface::batchSize()

更新日志

版本 | 说明
1.4.5 | Before 1.4.5, this method would throw an MongoCursorException if the cursor had already started iterating.

MongoCursor::awaitData
MongoCursor::__construct
MongoCursor


Create a new cursor

MongoCursor::batchSize
MongoCursor::count
MongoCursor
PHP Manual

MongoCursor::__construct

(PECL mongo >=0.9.0)

MongoCursor::__construct — Create a new cursor

说明

public MongoCursor::__construct ( MongoClient $connection , string $ns [, array $query = array() [, array $fields = array() ]] )

参数

connection

Database connection.

ns

Full name of database and collection.

query

Database query.

fields

Fields to return.

返回值

Returns the new cursor.

MongoCursor::batchSize
MongoCursor::count
MongoCursor


Counts the number of results for this query

MongoCursor::__construct
MongoCursor::current
MongoCursor
PHP Manual

MongoCursor::count

(PECL mongo >=0.9.2)

MongoCursor::count — Counts the number of results for this query

说明

public int MongoCursor::count ([ bool $foundOnly = FALSE ] )

This method does not affect the state of the cursor: if you haven't queried yet, you can still apply limits, skips, etc. If you have started iterating through results, it will not move the current position of the cursor. If you have exhasted the cursor, it will not reset it.

参数

foundOnly

Send cursor limit and skip information to the count function, if applicable.

返回值

The number of documents returned by this cursor's query.

范例

Example #1 MongoCursor::count() example

<?php

$collection->insert(array('x'=>1));
$collection->insert(array('x'=>2));
$collection->insert(array('x'=>3));

$cursor = $collection->find();

var_dump($cursor->count());
var_dump($cursor->count(true));

$cursor->limit(2);

var_dump($cursor->count());
var_dump($cursor->count(true));

?>

以上例程的输出类似于：

int(3)
int(3)
int(3)
int(2)

错误／异常

Throws MongoConnectionException if it cannot reach the database.

MongoCursor::__construct
MongoCursor::current
MongoCursor


Returns the current element

MongoCursor::count
MongoCursor::dead
MongoCursor
PHP Manual

MongoCursor::current

(PECL mongo >=0.9.0)

MongoCursor::current — Returns the current element

说明

public array MongoCursor::current ( void )

This returns NULL until MongoCursor::next() is called.

参数

此函数没有参数。

返回值

The current result document as an associative array. NULL will be returned if there is no result.

参见

  • Iterator::current() - 返回当前元素
MongoCursor::count
MongoCursor::dead
MongoCursor


Checks if there are results that have not yet been sent from the database

MongoCursor::current
MongoCursor::doQuery
MongoCursor
PHP Manual

MongoCursor::dead

(PECL mongo >=0.9.6)

MongoCursor::dead — Checks if there are results that have not yet been sent from the database

说明

public bool MongoCursor::dead ( void )

The database sends responses in batches of documents, up to 4MB of documents per response. This method checks if the database has more batches or if the result set has been exhausted.

A cursor being "dead" does not mean that MongoCursor::hasNext() will return FALSE, it only means that the database is done sending results to the client. The client should continue iterating through results until MongoCursor::hasNext() is FALSE.

参数

此函数没有参数。

返回值

Returns TRUE if there are more results that have not yet been sent to the client, and FALSE otherwise.

参见

  • MongoCursorInterface::dead()
MongoCursor::current
MongoCursor::doQuery
MongoCursor


Execute the query.

MongoCursor::dead
MongoCursor::explain
MongoCursor
PHP Manual

MongoCursor::doQuery

(PECL mongo >=0.9.0 <1.6.0)

MongoCursor::doQuery — Execute the query.

说明

protected void MongoCursor::doQuery ( void )
Warning

Please do not use me.

This function actually queries the database. All queries and commands go through this function. Thus, this function can be overridden to provide custom query handling.

This handles serializing your query, sending it to the database, receiving a response, and deserializing it. Thus, if you are planning to override this, your code should probably call out to the original to use the existing functionality (see the example below).

参数

此函数没有参数。

返回值

NULL.

错误／异常

Throws MongoConnectionException if it cannot reach the database.

更新日志

版本 | 说明
1.2.11 | Emits E_DEPRECATED when used.

范例

Example #1 MongoCursor::doQuery() example

You could override this function to attempt a query on a secondary and, if that fails, try it again on the primary.

<?php

class MyCursor extends MongoCursor {

    protected function doQuery() {

        $this->slaveOkay();

        try {
            MongoCursor::doQuery();
        }
        catch(MongoCursorException $e) {
            $this->slaveOkay(false);
            MongoCursor::doQuery();
        }
    }
}

?>

MongoCursor::dead
MongoCursor::explain
MongoCursor


Return an explanation of the query, often useful for optimization and debugging

MongoCursor::doQuery
MongoCursor::fields
MongoCursor
PHP Manual

MongoCursor::explain

(PECL mongo >=0.9.2)

MongoCursor::explain — Return an explanation of the query, often useful for optimization and debugging

说明

public array MongoCursor::explain ( void )

参数

此函数没有参数。

返回值

Returns an explanation of the query.

范例

Example #1 MongoCursor::explain() example

<?php

$cursor = $collection->find(array("x"=>1), array("y"));
$cursor->sort(array("z" => 1))->limit(4)->skip(5);

var_dump($cursor->explain());

?>

以上例程的输出类似于：

array(8) {
  ["cursor"]=>
  string(15) "BtreeCursor x_1"
  ["startKey"]=>
  array(1) {
    ["x"]=>
    int(1)
  }
  ["endKey"]=>
  array(1) {
    ["x"]=>
    int(1)
  }
  ["nscanned"]=>
  float(4)
  ["n"]=>
  int(4)
  ["scanAndOrder"]=>
  int(1)
  ["millis"]=>
  int(3)
  ["allPlans"]=>
  array(2) {
    [0]=>
    array(3) {
      ["cursor"]=>
      string(15) "BtreeCursor x_1"
      ["startKey"]=>
      array(1) {
        ["x"]=>
        int(1)
      }
      ["endKey"]=>
      array(1) {
        ["x"]=>
        int(1)
      }
    }
    [1]=>
    array(3) {
      ["cursor"]=>
      string(11) "BasicCursor"
      ["startKey"]=>
      array(0) {
      }
      ["endKey"]=>
      array(0) {
      }
    }
  }
}

错误／异常

Throws MongoConnectionException if it cannot reach the database.

参见

MongoDB core docs on » explain.

MongoCursor::doQuery
MongoCursor::fields
MongoCursor


Sets the fields for a query

MongoCursor::explain
MongoCursor::getNext
MongoCursor
PHP Manual

MongoCursor::fields

(PECL mongo >=1.0.6)

MongoCursor::fields — Sets the fields for a query

说明

public MongoCursor MongoCursor::fields ( array $f )

Fields are specified by "fieldname" : bool. TRUE indicates that a field should be returned, FALSE indicates that it should not be returned. You can also use 1 and 0 instead of TRUE and FALSE.

Thus, to return only the "summary" field, one could say:

<?php

$cursor->fields(array("summary" => true));

?>

To return all fields except the "hidden" field:

<?php

$cursor->fields(array("hidden" => false));

?>

参数

f

Fields to return (or not return).

返回值

Returns this cursor.

错误／异常

Throws MongoCursorException if this cursor has started iterating or a scalar argument is given.

MongoCursor::explain
MongoCursor::getNext
MongoCursor


Advances the cursor to the next result, and returns that result

MongoCursor::fields
MongoCursor::getReadPreference
MongoCursor
PHP Manual

MongoCursor::getNext

(PECL mongo >=0.9.0)

MongoCursor::getNext — Advances the cursor to the next result, and returns that result

说明

public array MongoCursor::getNext ( void )

Note:

MongoCursor::getNext() is an alias of MongoCursor::next().

MongoCursor::fields
MongoCursor::getReadPreference
MongoCursor


Get the read preference for this query

MongoCursor::getNext
MongoCursor::hasNext
MongoCursor
PHP Manual

MongoCursor::getReadPreference

(PECL mongo >=1.3.3)

MongoCursor::getReadPreference — Get the read preference for this query

说明

public array MongoCursor::getReadPreference ( void )

参数

此函数没有参数。

返回值

This function returns an array describing the read preference. The array contains the values type for the string read preference mode (corresponding to the MongoClient constants), and tagsets containing a list of all tag set criteria. If no tag sets were specified, tagsets will not be present in the array.

范例

Example #1 MongoCursor::getReadPreference() return value example

<?php

$m = new MongoClient();
$cursor = $m->test->users->find();
$cursor->setReadPreference(MongoClient::RP_SECONDARY, array(
    array('dc' => 'east', 'use' => 'reporting'),
    array('dc' => 'west'),
    array(),
));
var_dump($cursor->getReadPreference());
?>

以上例程会输出：

array(2) {
  ["type"]=>
  string(9) "secondary"
  ["tagsets"]=>
  array(3) {
    [0]=>
    array(2) {
      ["dc"]=>
      string(4) "east"
      ["use"]=>
      string(9) "reporting"
    }
    [1]=>
    array(1) {
      ["dc"]=>
      string(7) "west"
    }
    [2]=>
    array(0) {
    }
  }
}

参见

  • The read preferences documentation.
  • MongoCursor::setReadPreference() - Set the read preference for this query
  • MongoCursorInterface::getReadPreference()
MongoCursor::getNext
MongoCursor::hasNext
MongoCursor


Checks if there are any more elements in this cursor

MongoCursor::getReadPreference
MongoCursor::hint
MongoCursor
PHP Manual

MongoCursor::hasNext

(PECL mongo >=0.9.0)

MongoCursor::hasNext — Checks if there are any more elements in this cursor

说明

public bool MongoCursor::hasNext ( void )

参数

此函数没有参数。

返回值

Returns if there is another element.

错误／异常

Throws MongoConnectionException if it cannot reach the database and MongoCursorTimeoutException if the timeout is exceeded.

MongoCursor::getReadPreference
MongoCursor::hint
MongoCursor


Gives the database a hint about the query

MongoCursor::hasNext
MongoCursor::immortal
MongoCursor
PHP Manual

MongoCursor::hint

(PECL mongo >=0.9.0)

MongoCursor::hint — Gives the database a hint about the query

说明

public MongoCursor MongoCursor::hint ( mixed $index )

参数

index

Index to use for the query. If a string is passed, it should correspond to an index name. If an array or object is passed, it should correspond to the specification used to create the index (i.e. the first argument to MongoCollection::ensureIndex()).

返回值

Returns this cursor.

错误／异常

Throws MongoCursorException if this cursor has started iterating.

更新日志

版本 | 说明
1.4.0 | The index argument now supports index names as string values. In versions before 1.4.0, only array or object values were accepted.

MongoCursor::hasNext
MongoCursor::immortal
MongoCursor


Sets whether this cursor will timeout

MongoCursor::hint
MongoCursor::info
MongoCursor
PHP Manual

MongoCursor::immortal

(PECL mongo >=1.0.1)

MongoCursor::immortal — Sets whether this cursor will timeout

说明

public MongoCursor MongoCursor::immortal ([ bool $liveForever = true ] )

After remaining idle on the server for some amount of time, cursors, by default, "die." This is generally the behavior one wants. The database cleans up a cursor once all of its results have been sent to the client, but if the client doesn't request all of the results, the cursor will languish there, taking up resources. Thus, after a few minutes, the cursor "times out" and the database assumes the client has gotten everything it needs and cleans up its the cursor's resources.

If, for some reason, you need a cursor to hang around for a long time, you can prevent the database from cleaning it up by using this method. However, if you make a cursor immortal, you need to iterate through all of its results (or at least until MongoCursor::dead() returns TRUE) or the cursor will hang around the database forever, taking up resources.

参数

liveForever

If the cursor should be immortal.

返回值

Returns this cursor.

错误／异常

Throws MongoCursorException if this cursor has started iterating.

MongoCursor::hint
MongoCursor::info
MongoCursor


Gets information about the cursor's creation and iteration

MongoCursor::immortal
MongoCursor::key
MongoCursor
PHP Manual

MongoCursor::info

(PECL mongo >=1.0.5)

MongoCursor::info — Gets information about the cursor's creation and iteration

说明

public array MongoCursor::info ( void )

This can be called before or after the cursor has started iterating.

参数

此函数没有参数。

返回值

Returns the namespace, batch size, limit, skip, flags, query, and projected fields for this cursor. If the cursor has started iterating, additional information about iteration and the connection will be included.

更新日志

版本 | 说明
1.1.0 | Added a number of other fields, including id (the cursor id), at (the driver's counter of which document is current), numReturned (the number returned by the server in the current batch), and server (which server the query was sent to—useful in conjunction with 读取首选项.
1.0.10 | Added started_iterating field, a boolean indicating if cursor is pre- or post-query.

范例

Example #1 MongoCursor::info() example

<?php
$m = new MongoClient();

$cursor = $m->test->foo->find(array("x" => 4), array("y" => 0));

echo "Before iteration started:\n";
var_dump($cursor->info());

echo "\nAfter iteration started:\n";
$cursor->rewind();
var_dump($cursor->info());

?>

以上例程的输出类似于：

Before iteration started:
array(8) {
  ["ns"]=>
  string(8) "test.foo"
  ["limit"]=>
  int(0)
  ["batchSize"]=>
  int(0)
  ["skip"]=>
  int(0)
  ["flags"]=>
  int(0)
  ["query"]=>
  array(1) {
    ["x"]=>
    int(4)
  }
  ["fields"]=>
  array(1) {
    ["y"]=>
    int(0)
  }
  ["started_iterating"]=>
  bool(false)
}

After iteration started:
array(15) {
  ["ns"]=>
  string(8) "test.foo"
  ["limit"]=>
  int(0)
  ["batchSize"]=>
  int(0)
  ["skip"]=>
  int(0)
  ["flags"]=>
  int(0)
  ["query"]=>
  array(1) {
    ["x"]=>
    int(4)
  }
  ["fields"]=>
  array(1) {
    ["y"]=>
    int(0)
  }
  ["started_iterating"]=>
  bool(true)
  ["id"]=>
  int(0)
  ["at"]=>
  int(0)
  ["numReturned"]=>
  int(1)
  ["server"]=>
  string(25) "localhost:27017;-;.;26450"
  ["host"]=>
  string(9) "localhost"
  ["port"]=>
  int(27017)
  ["connection_type_desc"]=>
  string(10) "STANDALONE"
}

参见

  • MongoCursorInterface::info()
MongoCursor::immortal
MongoCursor::key
MongoCursor


Returns the current result's _id, or its index within the result set

MongoCursor::info
MongoCursor::limit
MongoCursor
PHP Manual

MongoCursor::key

(PECL mongo >=0.9.0)

MongoCursor::key — Returns the current result's _id, or its index within the result set

说明

public string|int MongoCursor::key ( void )

参数

此函数没有参数。

返回值

The current result's _id as a string. If the result has no _id, its numeric index within the result set will be returned as an integer.

参见

  • Iterator::key() - 返回当前元素的键
MongoCursor::info
MongoCursor::limit
MongoCursor


Limits the number of results returned

MongoCursor::key
MongoCursor::maxTimeMS
MongoCursor
PHP Manual

MongoCursor::limit

(PECL mongo >=0.9.0)

MongoCursor::limit — Limits the number of results returned

说明

public MongoCursor MongoCursor::limit ( int $num )

参数

num

The number of results to return.

返回值

Returns this cursor.

错误／异常

Throws MongoCursorException if this cursor has started iterating.

参见

  • MongoDB core docs on » limit.
  • MongoCursor::batchSize() - Limits the number of elements returned in one batch.
  • MongoCursor::skip() - Skips a number of results

MongoCursor::key
MongoCursor::maxTimeMS
MongoCursor


Sets a server-side timeout for this query

MongoCursor::limit
MongoCursor::next
MongoCursor
PHP Manual

MongoCursor::maxTimeMS

(PECL mongo >=1.5.0)

MongoCursor::maxTimeMS — Sets a server-side timeout for this query

说明

public MongoCursor MongoCursor::maxTimeMS ( int $ms )

Specifies a cumulative time limit in milliseconds to be allowed by the server for processing operations on the cursor.

参数

ms

Specifies a cumulative time limit in milliseconds to be allowed by the server for processing operations on the cursor.

返回值

This cursor.

错误／异常

Throws MongoCursorException if this cursor has started iterating.

Causes methods that fetch results to throw a MongoExecutionTimeoutException if the query takes longer than the specified number of milliseconds in processing time.

范例

Example #1 MongoCursor::maxTimeMS() example

In the following example, the server will abort the query if the cursor requires more than two seconds in processing time to return its results.

<?php

$cursor = $collection->find();
$cursor->maxTimeMS(2000);

try {
    $results = iterator_to_array($cursor);
} catch (MongoExecutionTimeoutException $e) {
    echo "query took too long!";
}

?>

注释

Warning

Unlike MongoCursor::timeout(), which specifies a client-side timeout, MongoCursor::maxTimeMS() can be used to cause the MongoDB server to abort long-running queries. This timeout is cumulative for the lifetime of the cursor (i.e. each batch will contribute to this time limit). The timeout only considers processing time; idle time is not considered.

MongoCursor::limit
MongoCursor::next
MongoCursor


Advances the cursor to the next result, and returns that result

MongoCursor::maxTimeMS
MongoCursor::partial
MongoCursor
PHP Manual

MongoCursor::next

(PECL mongo >=0.9.0)

MongoCursor::next — Advances the cursor to the next result, and returns that result

说明

public array MongoCursor::next ( void )

参数

此函数没有参数。

返回值

Returns the next document.

错误／异常

Throws MongoConnectionException if it cannot reach the database and MongoCursorTimeoutException if the timeout is exceeded.

参见

  • Iterator::next() - 向前移动到下一个元素
MongoCursor::maxTimeMS
MongoCursor::partial
MongoCursor


If this query should fetch partial results from mongos if a shard is down

MongoCursor::next
MongoCursor::reset
MongoCursor
PHP Manual

MongoCursor::partial

(PECL mongo >=1.2.0)

MongoCursor::partial — If this query should fetch partial results from mongos if a shard is down

说明

public MongoCursor MongoCursor::partial ([ bool $okay = true ] )

This option allows mongos to send partial query results if a shard is unreachable. This is only applicable when running a sharded MongoDB cluster and connecting to a mongos.

If a shard goes down and a query needs to be sent to that shard, mongos will return the results (if any) from shards it already contacted, then an error message that it could not reach the shard (a MongoCursorException in PHP). If you would like to get whatever results mongos can provide and no exception, you can use this method. Note that this means that you won't have an indication that a shard is down in your query response.

This has no effect on the query if all shards are reachable. This flag was implemented in MongoDB version 1.7.5, so will only work with that version and higher.

参数

okay

If receiving partial results is okay.

返回值

Returns this cursor.

错误／异常

Throws MongoCursorException if this cursor has started iterating.

MongoCursor::next
MongoCursor::reset
MongoCursor


Clears the cursor

MongoCursor::partial
MongoCursor::rewind
MongoCursor
PHP Manual

MongoCursor::reset

(PECL mongo >=0.9.0)

MongoCursor::reset — Clears the cursor

说明

public void MongoCursor::reset ( void )

参数

此函数没有参数。

返回值

NULL.

MongoCursor::partial
MongoCursor::rewind
MongoCursor


Returns the cursor to the beginning of the result set

MongoCursor::reset
MongoCursor::setFlag
MongoCursor
PHP Manual

MongoCursor::rewind

(PECL mongo >=0.9.0)

MongoCursor::rewind — Returns the cursor to the beginning of the result set

说明

public void MongoCursor::rewind ( void )

This is identical to the function:

<?php

public function rewind() {
    $this->reset();
    $this->next();
}

?>

参数

此函数没有参数。

返回值

NULL.

错误／异常

Throws MongoConnectionException if it cannot reach the database and MongoCursorTimeoutException if the timeout is exceeded.

参见

  • Iterator::rewind() - 返回到迭代器的第一个元素
MongoCursor::reset
MongoCursor::setFlag
MongoCursor


Sets arbitrary flags in case there is no method available the specific flag

MongoCursor::rewind
MongoCursor::setReadPreference
MongoCursor
PHP Manual

MongoCursor::setFlag

(PECL mongo >=1.2.11)

MongoCursor::setFlag — Sets arbitrary flags in case there is no method available the specific flag

说明

public MongoCursor MongoCursor::setFlag ( int $flag [, bool $set = true ] )

The MongoCursor class has several methods for setting flags on the query object. This method is available in case the MongoDB wire protocol has acquired a new flag, and the driver has not been updated with a method for this new flag. In all other cases, the method should be used. See the "See also" section for available methods.

参数

flag

Which flag to set. You can not set flag 6 (EXHAUST) as the driver does not know how to handle them. You will get a warning if you try to use this flag. For available flags, please refer to the wire protocol » documentation.

set

Whether the flag should be set (TRUE) or unset (FALSE).

返回值

Returns this cursor.

错误／异常

Shows a warning when an unsupport flag is attempted to be set.

更新日志

版本 | 说明
1.4.0 | Support for flag 3 (OPLOG_REPLAY) is added. Versions before 1.4.0 would throw a warning saying that the flag is unsupported.

范例

Example #1 MongoCursor::setFlag() example

<?php
$m = new MongoClient( 'mongodb://localhost:13000', array( 'replSet' => 'seta' ) );
$c = $m->local->selectCollection( 'oplog.rs' );
$cursor = $c->find( array( 'ns' => 'demo.article', 'op' => 'i' ) );
$cursor->setFlag( 1, true ); // sets the tailable flag
$cursor->setFlag( 5, true ); // sets the await data flag
?>

参见

  • MongoCursor::tailable() - Sets whether this cursor will be left open after fetching the last results
  • MongoCursor::immortal() - Sets whether this cursor will timeout
  • MongoCursor::awaitData() - Sets whether this cursor will wait for a while for a tailable cursor to return more data
  • MongoCursor::partial() - If this query should fetch partial results from mongos if a shard is down
  • MongoDB core docs on» wire protocol query flags

MongoCursor::rewind
MongoCursor::setReadPreference
MongoCursor


Set the read preference for this query

MongoCursor::setFlag
MongoCursor::skip
MongoCursor
PHP Manual

MongoCursor::setReadPreference

(PECL mongo >=1.3.3)

MongoCursor::setReadPreference — Set the read preference for this query

说明

public MongoCursor MongoCursor::setReadPreference ( string $read_preference [, array $tags ] )

参数

read_preference

The read preference mode: MongoClient::RP_PRIMARY, MongoClient::RP_PRIMARY_PREFERRED, MongoClient::RP_SECONDARY, MongoClient::RP_SECONDARY_PREFERRED, or MongoClient::RP_NEAREST.

tags

An array of zero or more tag sets, where each tag set is itself an array of criteria used to match tags on replica set members.

返回值

Returns this cursor.

错误／异常

Emits E_WARNING if either parameter is invalid, or if one or more tag sets are provided with the MongoClient::RP_PRIMARY read preference mode.

范例

Example #1 MongoCursor::setReadPreference() tag set array syntax example

<?php

$m = new MongoClient();
$cursor = $m->test->users->find();

// Prefer the nearest server in the "east" data center also used for reporting,
// but fall back to a server in the "west" data center
$cursor->setReadPreference(MongoClient::RP_NEAREST, array(
    array('dc' => 'east', 'use' => 'reporting'),
    array('dc' => 'west'),
));
?>

参见

  • The read preferences documentation.
  • MongoCursor::getReadPreference() - Get the read preference for this query
  • MongoCursorInterface::setReadPreference()
MongoCursor::setFlag
MongoCursor::skip
MongoCursor


Skips a number of results

MongoCursor::setReadPreference
MongoCursor::slaveOkay
MongoCursor
PHP Manual

MongoCursor::skip

(PECL mongo >=0.9.0)

MongoCursor::skip — Skips a number of results

说明

public MongoCursor MongoCursor::skip ( int $num )

参数

num

The number of results to skip.

返回值

Returns this cursor.

错误／异常

Throws MongoCursorException if this cursor has started iterating.

参见

  • MongoCursor::limit() - Limits the number of results returned

MongoCursor::setReadPreference
MongoCursor::slaveOkay
MongoCursor


Sets whether this query can be done on a secondary [deprecated]

MongoCursor::skip
MongoCursor::snapshot
MongoCursor
PHP Manual

MongoCursor::slaveOkay

(PECL mongo >=0.9.4)

MongoCursor::slaveOkay — Sets whether this query can be done on a secondary [deprecated]

说明

public MongoCursor MongoCursor::slaveOkay ([ bool $okay = true ] )
Warning

This method is deprecated since version 1.5.0. Instead, please use MongoCursor::setReadPreference() and 读取首选项.

Calling this will make the driver route reads to secondaries if:

  • You are using a replica set, and
  • You created a MongoClient instance using the option "replicaSet" => "setName", and
  • There is a healthy secondary that can be reached by the driver.
You can check which server was used for this query by calling MongoCursor::info() after running the query. It's server field will show which server the query was sent to.

Note that you should use this function even if you do not use the automatic routing to secondaries. If you connect directly to a secondary in a replica set, you still need to call this function, which basically tells the database that you are aware that you might be getting older data and you're okay with that. If you do not call this, you'll get "not master" errors when you try to query.

This method will override the static class variable
MongoCursor::$slaveOkay.  It will also override
Mongo::setSlaveOkay(),
MongoDB::setSlaveOkay() and
MongoCollection::setSlaveOkay().

参数

okay

If it is okay to query the secondary.

返回值

Returns this cursor.

错误／异常

Throws MongoCursorException if this cursor has started iterating.

范例

Example #1 MongoCursor::slaveOkay() example

<?php

MongoCursor::$slaveOkay = false;

// cannot query secondary
$cursor = $collection->find();

// can query secondary
$cursor = $collection->find()->slaveOkay();

MongoCursor::$slaveOkay = true;

// can query secondary
$cursor = $collection->find();

// cannot query secondary
$cursor = $collection->find()->slaveOkay(false);

?>

参见

  • 读取首选项
  • MongoCursor::setReadPreference() - Set the read preference for this query
  • MongoCursor::getReadPreference() - Get the read preference for this query

更新日志

版本 | 说明
1.5.0 | This method has been deprecated in favour of MongoCursor::setReadPreference() and 读取首选项.

MongoCursor::skip
MongoCursor::snapshot
MongoCursor


Use snapshot mode for the query

MongoCursor::slaveOkay
MongoCursor::sort
MongoCursor
PHP Manual

MongoCursor::snapshot

(PECL mongo >=0.9.4)

MongoCursor::snapshot — Use snapshot mode for the query

说明

public MongoCursor MongoCursor::snapshot ( void )

Use snapshot mode for the query. Snapshot mode ensures that a document will not be returned more than once because an intervening write operation results in a move of the document. Documents inserted or deleted during the lifetime of the cursor may or may not be returned, irrespective of snapshot mode.

Queries with short responses (less than 1MB) are always effectively snapshotted.

Snapshot mode may not be used with sorting, explicit hints, or queries on sharded collections.

参数

此函数没有参数。

返回值

Returns this cursor.

错误／异常

Throws MongoCursorException if this cursor has started iterating.

参见

MongoDB core docs on » $snapshot operator.

MongoCursor::slaveOkay
MongoCursor::sort
MongoCursor


Sorts the results by given fields

MongoCursor::snapshot
MongoCursor::tailable
MongoCursor
PHP Manual

MongoCursor::sort

(PECL mongo >=0.9.0)

MongoCursor::sort — Sorts the results by given fields

说明

public MongoCursor MongoCursor::sort ( array $fields )

参数

fields

An array of fields by which to sort. Each element in the array has as key the field name, and as value either 1 for ascending sort, or -1 for descending sort.

Each result is first sorted on the first field in the array, then (if it exists) on the second field in the array, etc. This means that the order of the fields in the fields array is important. See also the examples section.

返回值

Returns the same cursor that this method was called on.

错误／异常

Throws MongoCursorException if this cursor has started iterating.

范例

Example #1 MongoCursor::sort() example

<?php
// Sort on field x, ascending
$cursor->sort(array('x' => 1));

// The order in the associative array is important. For instance, these two
// examples will yield different results:

// Sort on date ascending and age descending
$cursor->sort(array('date' => 1, 'age' => -1));

// Sort on age descending and date ascending
$cursor->sort(array('age' => -1, 'date' => 1));
?>
MongoCursor::snapshot
MongoCursor::tailable
MongoCursor


Sets whether this cursor will be left open after fetching the last results

MongoCursor::sort
MongoCursor::timeout
MongoCursor
PHP Manual

MongoCursor::tailable

(PECL mongo >=0.9.4)

MongoCursor::tailable — Sets whether this cursor will be left open after fetching the last results

说明

public MongoCursor MongoCursor::tailable ([ bool $tail = true ] )

Mongo has a feature known as tailable cursors which are similar to the Unix "tail -f" command.

Tailable means cursor is not closed when the last data is retrieved. Rather, the cursor marks the final object's position. you can resume using the cursor later, from where it was located, if more data were received.

Like any "latent cursor", the cursor may become invalid at some point -- for example if that final object it references were deleted. Thus, you should be prepared to requery if the cursor is MongoCursor::dead().

参数

tail

If the cursor should be tailable.

返回值

Returns this cursor.

错误／异常

Throws MongoCursorException if this cursor has started iterating.

范例

Example #1 MongoCursor::tailable() example

<?php

$cursor = $collection->find()->tailable();

$results = array();

while (1) {
    if (!$cursor->hasNext()) {
        // we've read all the results, exit
        if ($cursor->dead()) {
            break;
        }
        // read all results so far, wait for more
        sleep(10);
    }
    else {
        $results[] = $cursor->getNext();
    }
}

?>

参见

MongoDB core docs on » tailable cursors.

  • MongoCursor::awaitData() - Sets whether this cursor will wait for a while for a tailable cursor to return more data

MongoCursor::sort
MongoCursor::timeout
MongoCursor


Sets a client-side timeout for this query

MongoCursor::tailable
MongoCursor::valid
MongoCursor
PHP Manual

MongoCursor::timeout

(PECL mongo >=1.0.3)

MongoCursor::timeout — Sets a client-side timeout for this query

说明

public MongoCursor MongoCursor::timeout ( int $ms )

A timeout can be set at any time and will affect subsequent queries on the cursor, including fetching more results from the database.

参数

ms

The number of milliseconds for the cursor to wait for a response. Use -1 to wait forever. By default, the cursor will wait 30000 milliseconds (30 seconds).

返回值

This cursor.

错误／异常

Causes methods that fetch results to throw a MongoCursorTimeoutException if the query takes longer than the specified number of milliseconds.

范例

Example #1 MongoCursor::timeout() example

In the following example, the driver will wait forever for the initial database response, and then wait 100ms for subsequent responses.

<?php

$cursor = $collection->find();
$cursor->timeout(-1);

/* $cursor->hasNext() executes the query. An infinite timeout has been set, so
 * the driver will wait as long as necessary for a response.
 */
while ($cursor->hasNext()) {
    $cursor->timeout(100);

    /* A timeout has now been set, so if the cursor needs to get more results
     * from the database, it will only wait 100ms for a response.
     */
    try {
        print_r($cursor->getNext());
    } catch (MongoCursorTimeoutException $e) {
        echo "query took too long!";
    }
}

?>

注释

Warning

This does not cause the MongoDB server to cancel long-running operations; it only instructs the driver to stop waiting for a response and throw a MongoCursorTimeoutException after a set time. If you need to specify a server-side timeout for a query, consider using MongoCursor::maxTimeMS().

参见

  • MongoCursorInterface::timeout()
  • The socketTimeoutMS option for MongoClient::__construct()
MongoCursor::tailable
MongoCursor::valid
MongoCursor


Checks if the cursor is reading a valid result.

MongoCursor::timeout
Types
MongoCursor
PHP Manual

MongoCursor::valid

(PECL mongo >=0.9.0)

MongoCursor::valid — Checks if the cursor is reading a valid result.

说明

public bool MongoCursor::valid ( void )

参数

此函数没有参数。

返回值

TRUE if the current result is not null, and FALSE otherwise.

参见

  • Iterator::valid() - 检查当前位置是否有效
MongoCursor::timeout
Types
MongoCursor


Types

Table of Contents

  • MongoId
  • MongoCode
  • MongoDate
  • MongoRegex
  • MongoBinData
  • MongoInt32
  • MongoInt64
  • MongoDBRef
  • MongoMinKey
  • MongoMaxKey
  • MongoTimestamp

MongoDB allows programmers to save and query for data expressed in all of the basic PHP types, compound types (arrays, associative arrays, and objects), and a half-dozen classes provided by the MongoDB PHP driver (for regular expressions, dates, and other specialized applications).

Booleans and NULL

TRUE, FALSE, and NULL can be used as-is.

Numbers

Numbers are distinct from strings in MongoDB: "123" does not match 123. Thus, if you want to make sure numbers are sorted and matched correctly, you must make sure that they are actually saved as numbers.

<?php

$doc = array("a" => 123, "b" => "123");
$collection->insert($doc);

$doc->find(array("a" => 123));   // matches
$doc->find(array("a" => "123")); // doesn't match
$doc->find(array("a" => 123.0)); // matches
$doc->find(array("b" => 123));   // doesn't match
$doc->find(array("b" => "123")); // matches

?>

As noted above, floating point numbers do compare with/match integer numbers as one would expect.

Large Numbers

By default, on a 32-bit system, numbers are sent to the database as 32-bit integers. On a 64-bit system, they are sent as 64-bit integers. For backwards compatibility, all systems deserialize 64-bit integers as floating point numbers. Floating point numbers are not exact. If you need exact values, you must tweak your php.ini settings.

On a 32-bit system, if mongo.long_as_object is set, 64-bit integers will be returns as MongoInt64 objects. The integer will be stored in the value field with perfect precision (as a string). You can also use MongoInt64 to save 64-bit integers on 32-bit machines.

On 64-bit systems, you can either set mongo.long_as_object or set mongo.native_long. mongo.native_long will return 64-bit integers and "normal" PHP integers. You can use MongoInt32 to save 32-bit integers on 64-bit machines.

You should set the mongo.long_as_object and mongo.native_long behavior that you plan to use, even if it is the default behavior (to protect against future changes to the defaults).

See also: php.ini Options, MongoInt32, MongoInt64.

Strings

Strings must be UTF-8. Non-UTF-8 strings must either be converted to UTF-8 before being sent to the database or saved as binary data.

Regular expressions can be used to match strings, and are expressed using the MongoRegex class.

Binary Data

Non-UTF-8 strings, images, and any other binary data should be sent to the database using the MongoBinData type.

Dates

Dates can be created using the MongoDate class. They are stored as milliseconds since the epoch.

MongoTimestamp is not for saving dates or timestamps, it is used internally by MongoDB. Unless you are creating a tool that interacts with the internals of replication or sharding, you should use MongoDate, not MongoTimestamp.

Unique Ids

The driver will automatically create an _id field before inserting a document (unless one is specified by the user). This field is an instance of MongoId (called "ObjectId" in most other languages).

These ids are 12 bytes long and composed of:

  • 4 bytes of timestamp

    No two records can have the same id if they were inserted at different times.

  • 3 bytes machine id

    No two records can have the same id if they were inserted on different machines

  • 2 bytes thread id

    No two records can have the same id if they were inserted by different threads running on the same machine.

  • 3 bytes incrementing value

    Each time an id is created, a global counter is incremented and used as the increment value of the next id.

Thus, no two records can have the same id unless a single process on a single machine managed to insert 256^3 (over 16 million) documents in one second, overflowing the increment field.

JavaScript

MongoDB comes with a JavaScript engine, so you can embed JavaScript in queries (using a $where clause), send it directly to the database to be executed, and use it to perform aggregations.

For security, use MongoCode's scope field to use PHP variables in JavaScript. Code that does not require external values can either use MongoCode or just be a string. See the section on security for more information about sending JavaScript to the database.

Arrays and Objects

Arrays and objects can also be saved to the database. An array with ascending numeric keys will be saved as a an array, anything else will be saved as an object.

<?php

// $scores will be saved as an array
$scores = array(98, 100, 73, 85);
$collection->insert(array("scores" => $scores));

// $scores will be saved as an object
$scores = array("quiz1" => 98, "midterm" => 100, "quiz2" => 73, "final" => 85);
$collection->insert(array("scores" => $scores));

?>

If you query for these objects using the database shell, they will look like:

> db.students.find()
{ "_id" : ObjectId("4b06beada9ad6390dab17c43"), "scores" : [ 98, 100, 73, 85 ] }
{ "_id" : ObjectId("4b06bebea9ad6390dab17c44"), "scores" : { "quiz1" : 98, "midterm" : 100, "quiz2" : 73, "final" : 85 } }

The database can also save arbitrary PHP objects (although they will be returned as associative arrays). The fields are used for the key/value pairs. For example, a blog post might look like:

<?php

  // the blog post class
  class Post {

  var $author;
  var $content;
  var $comments = array();
  var $date;

  public function __construct($author, $content) {
  $this->author = $author;
$this->content = $content;
    $this->date = new MongoDate();
  }

  public function setTitle($title) {
    $this->title = $title;
  }
}

// create a simple blog post and insert it into the database
$post1 = new Post("Adam", "This is a blog post");

$blog->insert($post1);

// there is nothing restricting the type of the "author" field, so we can make
// it a nested object
$author = array("name" => "Fred", "karma" => 42);
$post2 = new Post($author, "This is another blog post.");

// we create an extra field by setting the title
$post2->setTitle("Second Post");

$blog->insert($post2);

?>

From the database shell, this will look something like:

> db.blog.find()
{ "_id" : ObjectId("4b06c263edb87a281e09dad8"), "author" : "Adam", "content" : "This is a blog post", "comments" : [ ], "date" : "Fri Nov 20 2009 11:22:59 GMT-0500 (EST)" }
{ "_id" : ObjectId("4b06c282edb87a281e09dad9"), "author" : { "name" : "Fred", "karma" : 42 }, "content" : "This is a blog post", "comments" : [ ], "date" : "Fri Nov 20 2009 11:23:30 GMT-0500 (EST)", "title" : "Second Post" }

The driver will not detect reference loops in arrays and objects. For example, this will give a fatal error:

<?php

$collection->insert($GLOBALS);

?>
Fatal error: Nesting level too deep - recursive dependency?
If you need to insert documents that may have recursive dependency, you have to check for it yourself before passing it to the driver.

MongoCursor::valid
MongoId
Mongo


MongoId 类

(PECL mongo >=0.8.0)

简介

为数据库对象创建的唯一标识符。 如果插入数据库的对象不具有 _id 字段，将会为 _id 字段添加一个 MongoId 实例作为值。 如果数据具有自然的唯一字段（比如说，用户名或 timestamp），用来作为 _id 字段也不错，它不会被 一个 MongoId 替换。

MongoId 类实例满足了关系数据库中自增列的角色： 如果数据不具有天然的唯一键，则提供一个。 自增列在分布式数据库中不会工作得很好，因为它无法快速找到下一个数字。 这个类能够满足在分布式下快速产生唯一值的条件。

每个 MongoId 具有 12 个字节（使它的字符串形式是 24 个十六进制字符）。 前四个字节是一个时间戳（timestamp），后三个是客户端主机名的 hash 摘要，然后两个是运行脚本的进程 ID， 最后三位是一个自增值。

MongoId 是可以序列化/反序列化的。 它们序列化后的格式和它们的字符串格式比较像：

C:7:"MongoId":24:{4af9f23d8ead0e1d32000000}

类摘要

MongoId {
public string $id = NULL ;
/* 方法 */
public __construct ([ string $id = NULL ] )
public static string getHostname ( void )
public int getInc ( void )
public int getPID ( void )
public int getTimestamp ( void )
public static bool isValid ( mixed $value )
public static MongoId __set_state ( array $props )
public string __toString ( void )
}

Fields

id
这个字段包含了该对象的字符串表达形式。

参见

关于 » ids 的 MongoDB 核心文档。

Table of Contents

  • MongoId::__construct — 创建一个新的id
  • MongoId::getHostname — 获取这台机器上 id 所使用的 hostname
  • MongoId::getInc — 返回用于创建 id 所增加的值
  • MongoId::getPID — 获取进程 ID
  • MongoId::getTimestamp — 获取新纪元时间到 id 创建时的秒数。
  • MongoId::isValid — Check if a value is a valid ObjectId
  • MongoId::__set_state — 创建一个假的 MongoId
  • MongoId::__toString — 返回该 id 十六进制的表示形式
Types
MongoId::__construct
Types


创建一个新的id

MongoId
MongoId::getHostname
MongoId
PHP Manual

MongoId::__construct

(PECL mongo >= 0.8.0)

MongoId::__construct — 创建一个新的id

说明

public MongoId::__construct ([ string $id = NULL ] )

参数

id

用于 id 的一个字符串。必须为24个十六进制的字符。

返回值

返回一个新的 id。

更新日志

版本 | 说明
1.4.0 | 传入无效字符将抛出异常

范例

Example #1 MongoId::__construct() 例子

这个例子展示了如何创建一个新的 id。 这很少用到，因为在保存到数据库之前，驱动会为数组自动添加一个id。

<?php

  $id1 = new MongoId();
  echo "$id1\n";

  $id2 = new MongoId();
  echo "$id2\n";

  ?>

以上例程的输出类似于：

49a7011a05c677b9a916612a
49a702d5450046d3d515d10d

Example #2 参数的例子

这个例子展示了如何使用 string 的参数来初始化一个指定值的 MongoId。

<?php
  $id1 = new MongoId();

  // 从 $id1 创建一个新的 MongoId
  $id2 = new MongoId("$id1");

  // 显示 $id1 和 $id2 具有相同的十六进制值
  var_dump($id1 == $id2);
  ?>

以上例程的输出类似于：

bool(true)

参见

  • MongoId::__toString() - 返回该 id 十六进制的表示形式
  • MongoId::isvalid() - Check if a value is a valid ObjectId

MongoId
MongoId::getHostname
MongoId


获取这台机器上 id 所使用的 hostname

MongoId::__construct
MongoId::getInc
MongoId
PHP Manual

MongoId::getHostname

(PECL mongo >= 1.0.8)

MongoId::getHostname — 获取这台机器上 id 所使用的 hostname

说明

public static string MongoId::getHostname ( void )

返回的 hostname 用于 MongoId 产生唯一 id。 这和 gethostname() 应该会返回同样的值。

它和以下函数是一样的：

<?php

public static function getHostname() {
    return gethostname();
}

?>

参数

此函数没有参数。

返回值

返回 hostname。

MongoId::__construct
MongoId::getInc
MongoId


返回用于创建 id 所增加的值

MongoId::getHostname
MongoId::getPID
MongoId
PHP Manual

MongoId::getInc

(PECL mongo >= 1.0.11)

MongoId::getInc — 返回用于创建 id 所增加的值

说明

public int MongoId::getInc ( void )

参数

此函数没有参数。

返回值

返回增加的值，用于创建 MongoId。

MongoId::getHostname
MongoId::getPID
MongoId


获取进程 ID

MongoId::getInc
MongoId::getTimestamp
MongoId
PHP Manual

MongoId::getPID

(PECL mongo >= 1.0.11)

MongoId::getPID — 获取进程 ID

说明

public int MongoId::getPID ( void )

从 Mongo ID 中提取 pid。

参数

此函数没有参数。

返回值

返回 MongoId 里的 PID。

MongoId::getInc
MongoId::getTimestamp
MongoId


获取新纪元时间到 id 创建时的秒数。

MongoId::getPID
MongoId::isValid
MongoId
PHP Manual

MongoId::getTimestamp

(PECL mongo >= 1.0.1)

MongoId::getTimestamp — 获取新纪元时间到 id 创建时的秒数。

说明

public int MongoId::getTimestamp ( void )

返回 id 创建时运行 time() 同样的东西。

参数

此函数没有参数。

返回值

获取新纪元时间到 id 创建时的秒数。 仅储存了四个字节的时间戳，所以 MongoDate 是储存更精准、更广范围时间的更佳选择。

MongoId::getPID
MongoId::isValid
MongoId


Check if a value is a valid ObjectId

MongoId::getTimestamp
MongoId::__set_state
MongoId
PHP Manual

MongoId::isValid

(PECL mongo >= 1.5.0)

MongoId::isValid — Check if a value is a valid ObjectId

This extension that defines this method is deprecated. Instead, the MongoDB extension should be used. There is no equivalent for this method in the new extension.

说明

public static bool MongoId::isValid ( mixed $value )

This method may be used to check a variable before passing it as an argument to MongoId::__construct().

参数

value

The value to check for validity.

返回值

Returns TRUE if value is a MongoId instance or a string consisting of exactly 24 hexadecimal characters; otherwise, FALSE is returned.

MongoId::getTimestamp
MongoId::__set_state
MongoId


创建一个假的 MongoId

MongoId::isValid
MongoId::__toString
MongoId
PHP Manual

MongoId::__set_state

(PECL mongo >= 1.0.8)

MongoId::__set_state — 创建一个假的 MongoId

说明

public static MongoId MongoId::__set_state ( array $props )

该函数仅被 PHP 内部使用，用户不需要调用它。

它和下面的函数是一样的：

<?php

public static function __set_state($props) {
    return new MongoId("000000000000000000000000");
}

?>

参数

props

从理论上讲，要用数组的属性来创建一个新 id。但是 MongoId 示例没有属性，所以这是没用的。

返回值

具有 "000000000000000000000000" 的值的 id。

MongoId::isValid
MongoId::__toString
MongoId


返回该 id 十六进制的表示形式

MongoId::__set_state
MongoCode
MongoId
PHP Manual

MongoId::__toString

(PECL mongo >= 0.8.0)

MongoId::__toString — 返回该 id 十六进制的表示形式

说明

public string MongoId::__toString ( void )

参数

此函数没有参数。

返回值

该 id。

范例

Example #1 MongoId::__toString() 例子

<?php

$m = new MongoClient();
$collection = $m->selectDB("foo")->selectCollection("bar");

$collection->insert(array( "x" => "y" ));
$collection->insert(array( "x" => "y" ));

$cursor = $collection->find();
$r1 = $cursor->next();
$r2 = $cursor->next();

echo $r1["_id"] . "\n";
echo $r2["_id"] . "\n";

?>

以上例程的输出类似于：

49a7011a05c677b9a916612a
49a702d5450046d3d515d10d
MongoId::__set_state
MongoCode
MongoId


The MongoCode class

(PECL mongo >=0.8.3)

Warning

This extension that defines this class is deprecated. Instead, the MongoDB extension should be used. Alternatives to this class include:

  • MongoDB\BSON\JavaScript

简介

Represents JavaScript code for the database.

MongoCode objects are composed of two parts: a string of code and an optional scope. The string of code must be valid JavaScript. The scope is a associative array of variable name/value pairs.

类摘要

MongoCode {
/* 方法 */
public __construct ( string $code [, array $scope = array() ] )
public string __toString ( void )
}

Table of Contents

  • MongoCode::__construct — 创建一个新的代码对象
  • MongoCode::__toString — 返回代码的字符串形式
MongoId::__toString
MongoCode::__construct
Types


创建一个新的代码对象

MongoCode
MongoCode::__toString
MongoCode
PHP Manual

MongoCode::__construct

(PECL mongo >= 0.8.3)

MongoCode::__construct — 创建一个新的代码对象

说明

public MongoCode::__construct ( string $code [, array $scope = array() ] )

参数

code

字符串代码。

scope

使用代码的范围。

返回值

返回一个新的代码对象。

范例

Example #1 MongoCode::__construct() 例子

<?php

$code = new MongoCode('function() { '.
    'for(i=0;i<10;i++) {'.
        'db.foo.update({z : i}, {z : x});'.
    '}'.
    'return x-1;'.
 '}', array("x" => 4));
var_dump($code);

?>

以上例程的输出类似于：

object(MongoCode)#1 (2) {
  ["scope"]=>
  array(1) {
    ["x"]=>
    int(4)
  }
  ["code"]=>
  string(80) "function() { for(i=0;i<10;i++) { db.foo.update({z : i}, {z : x}); } return x-1; }"
}

Example #2 使用具有 $where 的 MongoCode

这个例子查询了集合里，'x' 字段比 $y 小的元素。 注意，PHP 对象能够传入到 JavaScript 作用域，然后 JavaScript 函数返回一个 boolean。

<?php

$cursor = $collection->find(array('$where' => new MongoCode('function() { return this.x < y; }', array('y'=>$y))));

?>
MongoCode
MongoCode::__toString
MongoCode


返回代码的字符串形式

MongoCode::__construct
MongoDate
MongoCode
PHP Manual

MongoCode::__toString

(PECL mongo >= 0.8.3)

MongoCode::__toString — 返回代码的字符串形式

说明

public string MongoCode::__toString ( void )

参数

此函数没有参数。

返回值

该代码，不会返回作用域。

范例

Example #1 MongoCode::__toString() 例子

<?php

$code = new MongoCode('return x;', array("x"=>"hi"));
echo "$code\n";

$code = new MongoCode('function() { for(i=0;i<10;i++) { db.foo.update({x:i}, {x:i+1}); } }');
echo "$code\n";

?>

以上例程的输出类似于：

return x;
function() { for(i=0;i<10;i++) { db.foo.update({x:i}, {x:i+1}); } }
MongoCode::__construct
MongoDate
MongoCode


The MongoDate class

(PECL mongo >=0.8.1)

Warning

This extension that defines this class is deprecated. Instead, the MongoDB extension should be used. Alternatives to this class include:

  • MongoDB\BSON\UTCDateTime

简介

Represent date objects for the database. This class should be used to save dates to the database and to query for dates. For example:

Example #1 Storing dates with MongoDate

<?php

// save a date to the database
$collection->save(array("ts" => new MongoDate()));

$start = new MongoDate(strtotime("2010-01-15 00:00:00"));
$end = new MongoDate(strtotime("2010-01-30 00:00:00"));

// find dates between 1/15/2010 and 1/30/2010
$collection->find(array("ts" => array('$gt' => $start, '$lte' => $end)));

?>

MongoDB stores dates as milliseconds past the epoch. This means that dates do not contain timezone information. Timezones must be stored in a separate field if needed. Second, this means that any precision beyond milliseconds will be lost when the document is sent to/from the database.

类摘要

MongoDate {
/* Fields */
public int $sec ;
public int $usec ;
/* 方法 */
public __construct ([ int $sec = time() [, int $usec = 0 ]] )
public DateTime toDateTime ( void )
public string __toString ( void )
}

Table of Contents

  • MongoDate::__construct — 创建一个新的日期。
  • MongoDate::toDateTime — Returns a DateTime object representing this date
  • MongoDate::__toString — 返回该日期的字符串形式的表达
MongoCode::__toString
MongoDate::__construct
Types


创建一个新的日期。

MongoDate
MongoDate::toDateTime
MongoDate
PHP Manual

MongoDate::__construct

(PECL mongo >= 0.8.1)

MongoDate::__construct — 创建一个新的日期。

说明

public MongoDate::__construct ([ int $sec = time() [, int $usec = 0 ]] )

创建一个新的日期。如果没有指定参数，将会使用当前的时间。

参数

sec

自纪元时间以来的秒数(例如 1 Jan 1970 00:00:00.000 UTC)。

usec

微秒。请注意 MongoDB 的解决方案是毫秒而不是微秒，这意味着这个值会被截成毫秒的方案。

返回值

返回该新的时间。

范例

Example #1 MongoDate::__construct() 例子

这个例子演示了用当前时间创建一个新的日期以及给定时间的新日期。

<?php

$d = new MongoDate();
echo "$d\n";
$d = new MongoDate(1234567890);
echo "$d\n";
$d = new MongoDate(strtotime("2009-05-01 00:00:01"));
echo "$d\n";

?>

以上例程的输出类似于：

0.23660600 1235685067
0.00000000 1234567890
0.00000000 1241150401

参见

  • MongoDate::__toString() - 返回该日期的字符串形式的表达

MongoDate
MongoDate::toDateTime
MongoDate


Returns a DateTime object representing this date

MongoDate::__construct
MongoDate::__toString
MongoDate
PHP Manual

MongoDate::toDateTime

(PECL mongo >= 1.6.0; PHP > 5.3.4)

MongoDate::toDateTime — Returns a DateTime object representing this date

This extension that defines this method is deprecated. Instead, the MongoDB extension should be used. Alternatives to this method include:

  • MongoDB\BSON\UTCDateTime::toDateTime()

说明

public DateTime MongoDate::toDateTime ( void )

Returns a DateTime object representation of this date.

参数

此函数没有参数。

返回值

This date as a DateTime object.

范例

Example #1 MongoDate::toDateTime() example

This example demonstrates creating a DateTime object from a MongoDate object.

<?php
$d = new MongoDate(strtotime("2014-11-18 11:01:25"));
var_dump( $d->toDateTime() );
?>

以上例程的输出类似于：

class DateTime#2 (3) {
  public $date =>
  string(26) "2014-11-18 11:01:25.000000"
  public $timezone_type =>
  int(1)
  public $timezone =>
  string(6) "+00:00"
}
MongoDate::__construct
MongoDate::__toString
MongoDate


返回该日期的字符串形式的表达

MongoDate::toDateTime
MongoRegex
MongoDate
PHP Manual

MongoDate::__toString

(PECL mongo >= 0.8.1)

MongoDate::__toString — 返回该日期的字符串形式的表达

说明

public string MongoDate::__toString ( void )

返回该日期的字符串表示形式，类似 microtime() 返回的表示。

参数

此函数没有参数。

返回值

该日期。

MongoDate::toDateTime
MongoRegex
MongoDate


MongoRegex 类

(PECL mongo >=0.8.1)

简介

这个类用于创建一个正则表达式。 通常这些表达式用于查询数据库中匹配的字符串。不常用的是，它们可以保存到数据库并用于检索。

正则表达式由四部分组成。 首先 / 作为起始的分隔符，然后是 pattern、另一个 / 以及最后包含 flag 的字符串。

Example #1 正则表达式

/pattern/flags

Mongo 能够识别六种正则表达式标记（flag）：

  • i：大小写不敏感

  • m：多行

  • x：能够包含注释

  • l：语言环境

  • s：dotall，"." 匹配任何字符，包括换行符。

  • u：匹配 Unicode

类摘要

MongoRegex {
/* 字段 */
public string $regex ;
public string $flags ;
/* 方法 */
public __construct ( string $regex )
public string __toString ( void )
}

Table of Contents

  • MongoRegex::__construct — 创建一个新的正则表达式
  • MongoRegex::__toString — 正则表达式的字符串表达形式
MongoDate::__toString
MongoRegex::__construct
Types


创建一个新的正则表达式

MongoRegex
MongoRegex::__toString
MongoRegex
PHP Manual

MongoRegex::__construct

(PECL mongo >= 0.8.1)

MongoRegex::__construct — 创建一个新的正则表达式

说明

public MongoRegex::__construct ( string $regex )

创建一个新的正则表达式。

参数

regex

以 /expr/flags 形式的正则表达式字符串。

返回值

返回一个新的正则表达式。

范例

Example #1 MongoRegex::__construct() 例子

这个例子使用了正则表达式来查询包含匹配正则表达式的所有文档，用户名字段以 (^) 开始，一个 l 和一个元音字母 ([aeiouy])，大小写不敏感 (/i)。

<?php
$luke_search = new MongoRegex("/^l[aeiouy]/i");
$cursor = $collection->find(array("username" => $luke_search));
?>

参见

  • MongoRegex::__toString() - 正则表达式的字符串表达形式

MongoRegex
MongoRegex::__toString
MongoRegex


正则表达式的字符串表达形式

MongoRegex::__construct
MongoBinData
MongoRegex
PHP Manual

MongoRegex::__toString

(PECL mongo >= 0.8.1)

MongoRegex::__toString — 正则表达式的字符串表达形式

说明

public string MongoRegex::__toString ( void )

返回该正则表达式的字符串表示形式。

参数

此函数没有参数。

返回值

以 "/expr/flags" 形式的正则表达式。

范例

Example #1 MongoRegex::__toString() 例子

<?php

$r = new MongoRegex( "/[a-fA-F0-9]{16}/g" );
echo $r->regex . "\n";
echo $r->flags . "\n";
echo "$r\n";

?>

以上例程的输出类似于：

[a-fA-F0-9]{16}
g
/[a-fA-F0-9]{16}/g

MongoRegex::__construct
MongoBinData
MongoRegex


The MongoBinData class

(PECL mongo >= 0.8.1)

Warning

This extension that defines this class is deprecated. Instead, the MongoDB extension should be used. Alternatives to this class include:

  • MongoDB\BSON\Binary

简介

An object that can be used to store or retrieve binary data from the database.

The maximum size of a single object that can be inserted into the database is 16MB. For data that is larger than this (movies, music, Henry Kissinger's autobiography), use MongoGridFS. For data that is smaller than 16MB, you may find it easier to embed it within the document using MongoBinData.

For example, to embed an image in a document, one could write:

<?php

$profile = array(
    "username" => "foobity",
    "pic" => new MongoBinData(file_get_contents("gravatar.jpg"), MongoBinData::GENERIC),
);

$users->save($profile);

?>

This class contains a type field, which currently gives no additional functionality in the PHP driver or the database. There are seven predefined types, which are defined as class constants below. For backwards compatibility, the PHP driver uses MongoBinData::BYTE_ARRAY as the default; however, this may change to MongoBinData::GENERIC in the future. Users are encouraged to specify a type in MongoBinData::__construct().

类摘要

MongoBinData {
/* 常量 */
const int GENERIC = 0 ;
const int FUNC = 1 ;
const int BYTE_ARRAY = 2 ;
const int UUID = 3 ;
const int UUID_RFC4122 = 4 ;
const int MD5 = 5 ;
const int CUSTOM = 128 ;
/* Fields */
public string $bin ;
public int $type = 2 ;
/* 方法 */
public __construct ( string $data [, int $type = 2 ] )
public string __toString ( void )
}

预定义常量

Binary Data Types

MongoBinData::GENERIC
0x00
Generic binary data.
MongoBinData::FUNC
0x01
Function.
MongoBinData::BYTE_ARRAY
0x02
Generic binary data (deprecated in favor of MongoBinData::GENERIC).
MongoBinData::UUID
0x03
Universally unique identifier (deprecated in favor of MongoBinData::UUID_RFC4122).
MongoBinData::UUID_RFC4122
0x04
Universally unique identifier (according to » RFC 4122).
MongoBinData::MD5
0x05
MD5.
MongoBinData::CUSTOM
0x80
User-defined type.

更新日志

版本 | 说明
1.5.0 | Added MongoBinData::GENERIC and MongoBinData::UUID_RFC4122 constants.

Table of Contents

  • MongoBinData::__construct — 创建一个新的二进制数据对象
  • MongoBinData::__toString — 二进制数据对象的字符串表达形式。
MongoRegex::__toString
MongoBinData::__construct
Types


创建一个新的二进制数据对象

MongoBinData
MongoBinData::__toString
MongoBinData
PHP Manual

MongoBinData::__construct

(PECL mongo >= 0.8.1)

MongoBinData::__construct — 创建一个新的二进制数据对象

说明

public MongoBinData::__construct ( string $data [, int $type = 2 ] )

创建一个新的二进制数据对象。

当前有五种类型的二进制数据能被 BSON 规格所识别： function (0x01)、 byte array (0x02)、 UUID (0x03)、 MD5 (0x05)，和用户定义的 (0x80)。 默认类型是 byte array (0x02)。 驱动和服务器解释不同类型时没有什么特殊的不同之处，所以目前他们是无关紧要的。 任何数字（在0和255之间）能用于 type，只要用户愿意冒着数据库可能基于类型做些处理的风险。

参数

data

二进制数据。

type

数据类型。

返回值

返回一个新的二进制数据对象。

更新日志

版本 | 说明
1.2.11 | 没有使用第二个参数时产生 E_DEPRECATED。 type 的默认值在近期的功能里可能会改变。

MongoBinData
MongoBinData::__toString
MongoBinData


二进制数据对象的字符串表达形式。

MongoBinData::__construct
MongoInt32
MongoBinData
PHP Manual

MongoBinData::__toString

(PECL mongo >= 0.8.1)

MongoBinData::__toString — 二进制数据对象的字符串表达形式。

说明

public string MongoBinData::__toString ( void )

参数

此函数没有参数。

返回值

返回字符串 "<Mongo Binary Data>"。要获取 MongoBinData 的内容，使用 bin 字段。

MongoBinData::__construct
MongoInt32
MongoBinData


MongoInt32 类

(PECL mongo >=1.0.9)

简介

这个类可以在一个 64 位的操作系统上将 32 位的 integer 保存到数据库。

类摘要

MongoInt32 {
/* 字段 */
public string $value ;
/* 方法 */
public __construct ( string $value )
public string __toString ( void )
}

字段

value
This is the string value of the 64-bit number. 例如，123 的值应该是 "123"。

Table of Contents

  • MongoInt32::__construct — 创建一个新的 32位 integer。
  • MongoInt32::__toString — 返回该 32 位 integer 的字符串表示。
MongoBinData::__toString
MongoInt32::__construct
Types


创建一个新的 32位 integer。

MongoInt32
MongoInt32::__toString
MongoInt32
PHP Manual

MongoInt32::__construct

(PECL mongo >= 1.0.9)

MongoInt32::__construct — 创建一个新的 32位 integer。

说明

public MongoInt32::__construct ( string $value )

创建具有指定值的 32 位数字。

参数

value

一个数字。

返回值

返回新的 integer。

MongoInt32
MongoInt32::__toString
MongoInt32


返回该 32 位 integer 的字符串表示。

MongoInt32::__construct
MongoInt64
MongoInt32
PHP Manual

MongoInt32::__toString

(PECL mongo >= 1.0.9)

MongoInt32::__toString — 返回该 32 位 integer 的字符串表示。

说明

public string MongoInt32::__toString ( void )

参数

此函数没有参数。

返回值

返回该 integer 字符串形式的表示。

MongoInt32::__construct
MongoInt64
MongoInt32


MongoInt64 类

(PECL mongo >=1.0.9)

简介

这个类能够在 32 位的系统上保存一个 64 位的 integer 到数据库。

类摘要

MongoInt64 {
/* 字段 */
public string $value ;
/* 方法 */
public __construct ( string $value )
public string __toString ( void )
}

字段

value
64 位数字的字符串值。例如 ，123 的值是 "123"。

Table of Contents

  • MongoInt64::__construct — 创建一个新的 64 位 integer。
  • MongoInt64::__toString — 返回该 64 位 integer 的字符串表示形式。
MongoInt32::__toString
MongoInt64::__construct
Types


创建一个新的 64 位 integer。

MongoInt64
MongoInt64::__toString
MongoInt64
PHP Manual

MongoInt64::__construct

(PECL mongo >= 1.0.9)

MongoInt64::__construct — 创建一个新的 64 位 integer。

说明

public MongoInt64::__construct ( string $value )

创建具有指定值的新的 64 位数字。

参数

value

一个数字。

返回值

返回一个新的 integer。

MongoInt64
MongoInt64::__toString
MongoInt64


返回该 64 位 integer 的字符串表示形式。

MongoInt64::__construct
MongoDBRef
MongoInt64
PHP Manual

MongoInt64::__toString

(PECL mongo >= 1.0.9)

MongoInt64::__toString — 返回该 64 位 integer 的字符串表示形式。

说明

public string MongoInt64::__toString ( void )

参数

此函数没有参数。

返回值

返回该 integer 的字符串表示形式。

MongoInt64::__construct
MongoDBRef
MongoInt64


MongoDBRef 类

(PECL mongo >=0.9.0)

简介

这个类可以用于创建不同集合中对象间的轻量级的链接。

Motivation：如果我们需要引用其他集合中的文档。最简单的方法是在当前文档中创建一个字段。比如，有 "people" 集合和 "addresses" 集合，我们需要"关联"每个 person 和对应的 address ，可以：

Example #1 链接文档

<?php

$people = $db->people;
$addresses = $db->addresses;

$myAddress = array("line 1" => "123 Main Street",
    "line 2" => null,
    "city" => "Springfield",
    "state" => "Vermont",
    "country" => "USA");

// save the address 保存address文档
$addresses->insert($myAddress);

// save a person with a reference to the address 保存一个people，关联刚才的address
$me = array("name" => "Fred", "address" => $myAddress['_id']);
$people->insert($me);

?>

然后，我们可以：把保存在 "people" 集合中的 MongoId 作为条件，查询 "address" 集合，来获取一个人的地址。

如果我们现在有更加一般性的的情况，我们不知道哪个集合（甚至数据库）中包含我们要引用的文档。 MongoDBRef 就是个好选择，它是一个更加通用的格式，所有的驱动和数据库都可以处理它。

如果每个"人"有一系列关联到其他多个集合的信息，例如爱好、运动、书籍等，我们可以用数个 MongoDBRef 对象来跟踪每一个 爱好 来自哪个集合：

Example #2 Creating MongoDBRef links

<?php

$people = $db->selectCollection("people");

// model trains are in the "hobbies" collection
$trainRef = MongoDBRef::create("hobbies", $modelTrains['_id']);
// soccer is in the "sports" collection
$soccerRef = MongoDBRef::create("sports", $soccer['_id']);

// now we'll know what collections the items in the "likes" array came from when
// we retrieve this document
//  # 现在当我们读取这个文档的时候，就可以知道"likes"字段里的数组元素分别来自哪个集合了。
$people->insert(array("name" => "Fred", "likes" => array($trainRef, $soccerRef)));

?>

数据库引用可以被理解为超链接：它们指定了一个文档的唯一地址，但不会自动读取或者跟踪引用、链接。、

一个数据库引用仅仅是一个普通关联数组，不是 MongoDBRef 的实例，所以这个类与其他数据类型有些不同。这个类只包含静态方法，用来操作引用。 译注：上面两段的意思概括为 1.一个数据库引用与超链接相似，复制、删除、修改等操作不会影响原来的文档。 2.读取这个引用可以得知指向的文档的位置，但不能知道文档的内容，要手动解引用。 3.这个"引用"保存到Mongo的时候就是普通数组

类摘要

MongoDBRef {
/* 方法 */
public static array create ( string $collection , mixed $id [, string $database ] )
public static array get ( MongoDB $db , array $ref )
public static bool isRef ( mixed $ref )
}

参见

MongoDB 官方核心文档 » databases references.

Table of Contents

  • MongoDBRef::create — 创建一个新的数据库引用
  • MongoDBRef::get — 获取引用所指向的对象
  • MongoDBRef::isRef — 检测数组是否为数据库引用
MongoInt64::__toString
MongoDBRef::create
Types


创建一个新的数据库引用

MongoDBRef
MongoDBRef::get
MongoDBRef
PHP Manual

MongoDBRef::create

(PECL mongo >= 0.9.0)

MongoDBRef::create — 创建一个新的数据库引用

说明

public static array MongoDBRef::create ( string $collection , mixed $id [, string $database ] )

如果没有指定数据库，将会使用当前数据库。

参数

collection

集合名称（不包括数据库名）。

id

要链接的对象的 _id 字段。

database

数据库名。

返回值

返回引用。

范例

Example #1 MongoDBRef::create() 例子

这个例子为文档创建了一个 addresses 的数据库引用。 MongoCollection::getName() 函数返回集合的名字（不包括数据库名）。

<?php
$addresses = $db->addresses;
$people = $db->people;

// 保存 $address，所以它有一个 _id
$addresses->insert($address);

// 创建引用
$ref = MongoDBRef::create($addresses->getName(), $address['_id']);

//设置 $person 里的字段
$person['address'] = $ref;
$people->save($person);
?>

参见

  • MongoDB::createDBRef() - 创建数据库引用
  • MongoCollection::createDBRef() - 创建一个数据库引用

MongoDBRef
MongoDBRef::get
MongoDBRef


获取引用所指向的对象

MongoDBRef::create
MongoDBRef::isRef
MongoDBRef
PHP Manual

MongoDBRef::get

(PECL mongo >= 0.9.0)

MongoDBRef::get — 获取引用所指向的对象

说明

public static array MongoDBRef::get ( MongoDB $db , array $ref )

参数

db

使用的数据库。

ref

要获取的引用。

返回值

返回引用指向的文档，如果文档不存在则返回 NULL（该引用已损坏）。

范例

Example #1 MongoCollection::createDBRef() 例子

<?php

// 从 db 获取 $person。
$person = $people->findOne();

// 解析引用的 address
$address = MongoDBRef::get($people->db, $person['address']);

?>

参见

  • MongoDB::getDBRef() - Fetches the document pointed to by a database reference
  • MongoCollection::getDBRef() - Fetches the document pointed to by a database reference

MongoDBRef::create
MongoDBRef::isRef
MongoDBRef


检测数组是否为数据库引用

MongoDBRef::get
MongoMinKey
MongoDBRef
PHP Manual

MongoDBRef::isRef

(PECL mongo >= 0.9.0)

MongoDBRef::isRef — 检测数组是否为数据库引用

说明

public static bool MongoDBRef::isRef ( mixed $ref )

这个方法没有真正读取引用的数据，所以它无法检测引用是否损坏。 它仅仅检查 ref 是否为有效的数据库引用格式（一个对象或数组，并具有 $ref 和 $id 的字段）。

参数

ref

要检查的数组或对象。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

MongoDBRef::get
MongoMinKey
MongoDBRef


The MongoMinKey class

(PECL mongo >= 1.0.2)

Warning

This extension that defines this class is deprecated. Instead, the MongoDB extension should be used. Alternatives to this class include:

  • MongoDB\BSON\MinKey

简介

MongoMinKey is an special type used by the database that compares less than all other possible BSON values. Thus, if a query is sorted by a given field in ascending order, any document with a MongoMinKey as its value will be returned first.

MongoMinKey has no associated fields, methods, or constants. It is merely the "smallest" value that can be represented in the database.

Note: MongoMinKey is used internally by MongoDB for indexing and sharding. There is generally no reason to use this class in an application.

类摘要

MongoMinKey {
}

Using MongoMinKey as a value

<?php

$collection->insert(array("task" => "lunch", "doBy" => new MongoMinKey));
$collection->insert(array("task" => "staff meeting", "doBy" => new MongoDate(strtotime("+4 days"))));

$cursor = $collection->find()->sort(array("doBy" => 1));

?>

The cursor will return the lunch document followed by the staff meeting document. The lunch document will always be returned first, regardless of what else is added to the collection (unless other documents are added with MongoMinKey in their "doBy" field).

参见

  • MongoMaxKey
MongoDBRef::isRef
MongoMaxKey
Types


The MongoMaxKey class

(PECL mongo >= 1.0.2)

Warning

This extension that defines this class is deprecated. Instead, the MongoDB extension should be used. Alternatives to this class include:

  • MongoDB\BSON\MaxKey

简介

MongoMaxKey is an special type used by the database that compares greater than all other possible BSON values. Thus, if a query is sorted by a given field in ascending order, any document with a MongoMaxKey as its value will be returned last.

MongoMaxKey has no associated fields, methods, or constants. It is merely the "greatest" value that can be represented in the database.

Note: MongoMaxKey is used internally by MongoDB for indexing and sharding. There is generally no reason to use this class in an application.

类摘要

MongoMaxKey {
}

Using MongoMaxKey as a value

<?php

$collection->insert(array("task" => "dishes", "doBy" => new MongoMaxKey));
$collection->insert(array("task" => "staff meeting", "doBy" => new MongoDate(strtotime("+4 days"))));

$cursor = $collection->find()->sort(array("doBy" => 1));

?>

The cursor will return the staff meeting document followed by the dishes document. The dishes document will always be returned last, regardless of what else is added to the collection (unless other documents are added with MongoMaxKey in their "doBy" field).

参见

  • MongoMinKey
MongoMinKey
MongoTimestamp
Types


MongoTimestamp 类

(PECL mongo >=1.0.1)

简介

MongoTimestamp 用于分片（sharding）。 如果你不是想写分布式工具，你需要的也许是 MongoDate。

MongoTimestamp 是 4 字节的时间戳（自新纪元以来的秒数），和 4 字节的自增长值。

这个类不用于测量时间、为文档创建时间戳或为一个文档自动增加、更新时间戳。 除非你写的是关于分片式内部的交互，否则请停下，直接前往 MongoDate， 不要再继续研究这个东西。这不是你要找的类。

如果你在写一个分片工具，继续阅读。

类摘要

MongoTimestamp {
/* 字段 */
public int $sec = 0 ;
public int $inc = 0 ;
/* 方法 */
public __construct ([ int $sec = time() [, int $inc ]] )
public string __toString ( void )
}

Table of Contents

  • MongoTimestamp::__construct — 创建一个新的时间戳。
  • MongoTimestamp::__toString — 返回时间戳的字符串表示形式
MongoMaxKey
MongoTimestamp::__construct
Types


创建一个新的时间戳。

MongoTimestamp
MongoTimestamp::__toString
MongoTimestamp
PHP Manual

MongoTimestamp::__construct

(PECL mongo >= 1.0.1)

MongoTimestamp::__construct — 创建一个新的时间戳。

说明

public MongoTimestamp::__construct ([ int $sec = time() [, int $inc ]] )

创建一个新的时间戳。如果没有指定参数，将使用当前的时间戳，也会自动提供增量。 模块加载时增量设置为 0，并且在每次调用构造器时自动增加（没有传入 $inc 参数时）。

参数

sec

自纪元时间以来的秒数(比如 1 Jan 1970 00:00:00.000 UTC)。

inc

增量。

返回值

返回新的 timestamp。

参见

  • MongoTimestamp::__toString() - 返回时间戳的字符串表示形式

MongoTimestamp
MongoTimestamp::__toString
MongoTimestamp


返回时间戳的字符串表示形式

MongoTimestamp::__construct
GridFS Classes
MongoTimestamp
PHP Manual

MongoTimestamp::__toString

(PECL mongo >= 1.0.1)

MongoTimestamp::__toString — 返回时间戳的字符串表示形式

说明

public string MongoTimestamp::__toString ( void )

返回时间戳里的秒数字段。

参数

此函数没有参数。

返回值

该时间戳自新纪元时间以来的秒数。

MongoTimestamp::__construct
GridFS Classes
MongoTimestamp


GridFS Classes

Table of Contents

  • MongoGridFS
  • MongoGridFSFile
  • MongoGridFSCursor
MongoTimestamp::__toString
MongoGridFS
Mongo


The MongoGridFS class

(PECL mongo >=0.9.0)

简介

Utilities for storing and retrieving files from the database.

GridFS is a storage specification all supported drivers implement. Basically, it defines two collections: files, for file metadata, and chunks, for file content. If the file is large, it will automatically be split into smaller chunks and each chunk will be saved as a document in the chunks collection.

Each document in the files collection contains the filename, upload date, and md5 hash. It also contains a unique _id field, which can be used to query the chunks collection for the file's content. Each document in the chunks collection contains a chunk of binary data, a files_id field that matches its file's _id, and the position of this chunk in the overall file.

For example, the files document is something like:

<?php
array("_id" => 123456789, "filename" => "foo.txt", "chunkSize" => 3, "length" => 12);
?>
and the chunks documents look like:
<?php
array("files_id" => 123456789, "n" => 0, "data" => new MongoBinData("abc"));
array("files_id" => 123456789, "n" => 1, "data" => new MongoBinData("def"));
array("files_id" => 123456789, "n" => 2, "data" => new MongoBinData("ghi"));
array("files_id" => 123456789, "n" => 3, "data" => new MongoBinData("jkl"));
?>
Of course, the default chunk size is thousands of bytes, but that makes an unwieldy example.

Inter-Language Compatibility

You should be able to use any files created by MongoGridFS with any other drivers, and vice versa. However, some drivers expect that all metadata associated with a file be in a "metadata" field. If you're going to be using other languages, it's a good idea to wrap info you might want them to see in a "metadata" field. For example, instead of:

<?php

$grid->storeFile("somefile.txt", array("date" => new MongoDate()));

?>

use something like:

<?php

$grid->storeFile("somefile.txt", array("metadata" => array("date" => new MongoDate())));

?>

The MongoGridFS Family

MongoGridFS represents the files and chunks collections. MongoGridFS extends MongoCollection, and an instance of MongoGridFS has access to all of MongoCollection methods, which act on the files collection:

<?php

$grid = $db->getGridFS();
$grid->update(array("filename" => "foo"), $newObj); // update on the files collection

?>

Another example of manipulating metadata:

<?php

// save a file
$id = $grid->storeFile("game.tgz");
$game = $grid->findOne();

// add a downloads counter
$game->file['downloads'] = 0;
$grid->save($game->file);

// increment the counter
$grid->update(array("_id" => $id), array('$inc' => array("downloads" => 1)));

?>

You can also access the chunks collection from an instance of MongoGridFS:

<?php

  $chunks = $grid->chunks; // $chunks is a normal MongoCollection
$chunks->insert(array("x" => 4));

?>

There are some methods for MongoGridFS with the same name as MongoCollection methods, that behave slightly differently. For example, MongoGridFS::remove() will remove any objects that match the criteria from the files collection and their content from the chunks collection.

To store something new in GridFS, there are a couple options. If you have a filename, you can say:

<?php

$grid->storeFile($filename, array("whatever" => "metadata", "you" => "want"));

?>

If you have a string of bytes that isn't a file, you can also store that using MongoGridFS::storeBytes():

<?php

$grid->storeBytes($bytes, array("whatever" => "metadata", "you" => "want"));

?>

Querying a MongoGridFS collection returns a MongoGridFSCursor, which behaves like a normal MongoCursor except that it returns MongoGridFSFiles instead of associative arrays.

MongoGridFSFiles can be written back to disc using MongoGridFSFile::write() or retrieved in memory using MongoGridFSFile::getBytes(). There is currently no method that automatically streams chunks, but it would be fairly easy to write by querying the $grid->chunks collection.

MongoGridFSFile objects contain a field file which contains any file metadata.

类摘要

extends MongoCollection {
/* Fields */
public MongoCollection $chunks = NULL ;
protected string $filesName = NULL ;
protected string $chunksName = NULL ;
/* 方法 */
public __construct ( MongoDB $db [, string $prefix = "fs" [, mixed $chunks = "fs" ]] )
public bool|array delete ( mixed $id )
public array drop ( void )
public MongoGridFSCursor find ([ array $query = array() [, array $fields = array() ]] )
public MongoGridFSFile findOne ([ mixed $query = array() [, mixed $fields = array() ]] )
public MongoGridFSFile get ( mixed $id )
public mixed put ( string $filename [, array $metadata = array() [, array $options = array() ]] )
public bool|array remove ([ array $criteria = array() [, array $options = array() ]] )
public mixed storeBytes ( string $bytes [, array $metadata = array() [, array $options = array() ]] )
public mixed storeFile ( string|resource $filename [, array $metadata = array() [, array $options = array() ]] )
public mixed storeUpload ( string $name [, array $metadata ] )
}

参见

  • MongoDB core docs on » GridFS
  • LightCube Solutions blog post on » saving user uploads
  • LightCube Solutions blog post on » adding metadata to files

Table of Contents

  • MongoGridFS::__construct — Creates new file collections
  • MongoGridFS::delete — Remove a file and its chunks from the database
  • MongoGridFS::drop — Drops the files and chunks collections
  • MongoGridFS::find — Queries for files
  • MongoGridFS::findOne — Returns a single file matching the criteria
  • MongoGridFS::get — Retrieve a file from the database
  • MongoGridFS::put — Stores a file in the database
  • MongoGridFS::remove — Remove files and their chunks from the database
  • MongoGridFS::storeBytes — Stores a string of bytes in the database
  • MongoGridFS::storeFile — Stores a file in the database
  • MongoGridFS::storeUpload — Stores an uploaded file in the database
GridFS Classes
MongoGridFS::__construct
GridFS Classes


Creates new file collections

MongoGridFS
MongoGridFS::delete
MongoGridFS
PHP Manual

MongoGridFS::__construct

(PECL mongo >=0.9.0)

MongoGridFS::__construct — Creates new file collections

说明

public MongoGridFS::__construct ( MongoDB $db [, string $prefix = "fs" [, mixed $chunks = "fs" ]] )

Files as stored across two collections, the first containing file meta information, the second containing chunks of the actual file. By default, fs.files and fs.chunks are the collection names used.

Use one argument to specify a prefix other than "fs":

$fs = new MongoGridFS($db, "myfiles");
uses myfiles.files and myfiles.chunks collections.

参数

db

Database.

files

Optional collection name prefix.

MongoGridFS
MongoGridFS::delete
MongoGridFS


Remove a file and its chunks from the database

MongoGridFS::__construct
MongoGridFS::drop
MongoGridFS
PHP Manual

MongoGridFS::delete

(PECL mongo >=1.0.8)

MongoGridFS::delete — Remove a file and its chunks from the database

说明

public bool|array MongoGridFS::delete ( mixed $id )

Note:

MongoGridFS::delete() is a convenience method for calling MongoGridFS::remove() with specific criteria and default options parameters.

参数

id

_id of the file to remove.

返回值

Returns an array containing the status of the removal (with respect to the files collection) if a write concern is applied. Otherwise, returns TRUE.

Fields in the status array are described in the documentation for MongoCollection::insert().

错误／异常

Throws MongoCursorException if the "w" option is set and the write fails.

Throws MongoCursorTimeoutException if the "w" option is set to a value greater than one and the operation takes longer than MongoCursor::$timeout milliseconds to complete. This does not kill the operation on the server, it is a client-side timeout. The operation in MongoCollection::$wtimeout is milliseconds.

MongoGridFS::__construct
MongoGridFS::drop
MongoGridFS


Drops the files and chunks collections

MongoGridFS::delete
MongoGridFS::find
MongoGridFS
PHP Manual

MongoGridFS::drop

(PECL mongo >=0.9.0)

MongoGridFS::drop — Drops the files and chunks collections

说明

public array MongoGridFS::drop ( void )

参数

此函数没有参数。

返回值

The database response.

MongoGridFS::delete
MongoGridFS::find
MongoGridFS


Queries for files

MongoGridFS::drop
MongoGridFS::findOne
MongoGridFS
PHP Manual

MongoGridFS::find

(PECL mongo >=0.9.0)

MongoGridFS::find — Queries for files

说明

 public MongoGridFSCursor MongoGridFS::find
  ([ array $query = array()
 [, array $fields = array()
]] )

参数

query

The query.

fields

Fields to return.

返回值

A MongoGridFSCursor.

MongoGridFS::drop
MongoGridFS::findOne
MongoGridFS


Returns a single file matching the criteria

MongoGridFS::find
MongoGridFS::get
MongoGridFS
PHP Manual

MongoGridFS::findOne

(PECL mongo >=0.9.0)

MongoGridFS::findOne — Returns a single file matching the criteria

说明

 public MongoGridFSFile MongoGridFS::findOne
  ([ mixed $query = array()
 [, mixed $fields = array()
]] )

参数

query

The filename or criteria for which to search.

返回值

Returns a MongoGridFSFile or NULL.

范例

Example #1 MongoGridFS::findOne() example

Example demonstrating how to find a single file from the MongoGridFS.

<?php

$downloads = $mongo->my_db->getGridFS('downloads');

$downloads->storeFile('filename.tgz');

$download = $downloads->findOne('filename.tgz'); // instance of MongoGridFSFile

print_r($download);
?>

See MongoGridFSFile for more information about how to work with files.

以上例程的输出类似于：

MongoGridFSFile Object
(
    [file] => Array
        (
            [_id] => MongoId Object
                (
                )

            [filename] => filename.tgz
            [uploadDate] => MongoDate Object
                (
                    [sec] => 1274288014
                    [usec] => 467000
                )

            [chunkSize] => 262144
            [md5] => d41d8cd98f00b204e9800998ecf8427e
        )

    [gridfs:protected] => MongoGridFS Object
        (
            [chunks] => MongoCollection Object
                (
                )

            [filesName:protected] => downloads.files
            [chunksName:protected] => downloads.chunks
        )

)
MongoGridFS::find
MongoGridFS::get
MongoGridFS


Retrieve a file from the database

MongoGridFS::findOne
MongoGridFS::put
MongoGridFS
PHP Manual

MongoGridFS::get

(PECL mongo >=1.0.8)

MongoGridFS::get — Retrieve a file from the database

说明

public MongoGridFSFile MongoGridFS::get ( mixed $id )

参数

id

_id of the file to find.

返回值

Returns the file, if found, or NULL.

MongoGridFS::findOne
MongoGridFS::put
MongoGridFS


Stores a file in the database

MongoGridFS::get
MongoGridFS::remove
MongoGridFS
PHP Manual

MongoGridFS::put

(PECL mongo >=1.0.8)

MongoGridFS::put — Stores a file in the database

说明

public mixed MongoGridFS::put ( string $filename [, array $metadata = array() [, array $options = array() ]] )

Note:

MongoGridFS::put() is an alias of MongoGridFS::storeFile().

参数

filename

Name of the file to store.

metadata

Other metadata fields to include in the file document.

Note:

These fields may also overwrite those that would be created automatically by the driver, as described in the MongoDB core documentation for the » files collection. Some practical use cases for this behavior would be to specify a custom chunkSize or _id for the file.

options

An array of options for the insert operations executed against the chunks and files collections. See MongoCollection::insert() for documentation on these these options.

返回值

Returns the _id of the saved file document. This will be a generated MongoId unless an _id was explicitly specified in the extra parameter.

错误／异常

Throws MongoGridFSException if there is an error reading filename or inserting into the chunks or files collections.

参见

  • MongoGridFS::storeBytes() - Stores a string of bytes in the database
  • MongoGridFS::storeFile() - Stores a file in the database
  • MongoGridFS::storeUpload() - Stores an uploaded file in the database
  • MongoDB core docs on » GridFS
MongoGridFS::get
MongoGridFS::remove
MongoGridFS


Remove files and their chunks from the database

MongoGridFS::put
MongoGridFS::storeBytes
MongoGridFS
PHP Manual

MongoGridFS::remove

(PECL mongo >=0.9.0)

MongoGridFS::remove — Remove files and their chunks from the database

说明

 public bool|array MongoGridFS::remove
  ([ array $criteria = array()
 [, array $options = array()
]] )

参数

criteria

The filename or criteria for which to search.

options

An array of options for the remove operations executed against the chunks and files collections. See MongoCollection::remove() for documentation on these options.

返回值

Returns an array containing the status of the removal (with respect to the files collection) if the "w" option is set. Otherwise, returns TRUE.

Fields in the status array are described in the documentation for MongoCollection::insert().

错误／异常

Throws MongoCursorException if the "w" option is set and the write fails.

Throws MongoCursorTimeoutException if the "w" option is set to a value greater than one and the operation takes longer than MongoCursor::$timeout milliseconds to complete. This does not kill the operation on the server, it is a client-side timeout. The operation in MongoCollection::$wtimeout is milliseconds.

MongoGridFS::put
MongoGridFS::storeBytes
MongoGridFS


Stores a string of bytes in the database

MongoGridFS::remove
MongoGridFS::storeFile
MongoGridFS
PHP Manual

MongoGridFS::storeBytes

(PECL mongo >=0.9.2)

MongoGridFS::storeBytes — Stores a string of bytes in the database

说明

public mixed MongoGridFS::storeBytes ( string $bytes [, array $metadata = array() [, array $options = array() ]] )

参数

bytes

String of bytes to store.

metadata

Other metadata fields to include in the file document.

Note:

These fields may also overwrite those that would be created automatically by the driver, as described in the MongoDB core documentation for the » files collection. Some practical use cases for this behavior would be to specify a custom chunkSize or _id for the file.

options

An array of options for the insert operations executed against the chunks and files collections. See MongoCollection::insert() for documentation on these these options.

返回值

Returns the _id of the saved file document. This will be a generated MongoId unless an _id was explicitly specified in the extra parameter.

错误／异常

Throws MongoGridFSException if there is an error inserting into the chunks or files collections.

范例

Example #1 MongoGridFS::storeBytes() with additional metadata

<?php
$m = new MongoClient();
$gridfs = $m->selectDB('test')->getGridFS();

$bytes = 'abcdefghijklmnopqrstuvwxyz';
$id = $gridfs->storeBytes($bytes, array('_id' => 'alphabet'));
$gridfsFile = $gridfs->get($id);

var_dump($gridfsFile->file);
?>

以上例程的输出类似于：

array(7) {
  ["_id"]=>
  string(8) "alphabet"
  ["uploadDate"]=>
  object(MongoDate)#7 (0) {
  }
  ["length"]=>
  int(26)
  ["chunkSize"]=>
  int(262144)
  ["md5"]=>
  string(32) "c3fcd3d76192e4007dfb496cca67e13b"
}

参见

  • MongoGridFS::put() - Stores a file in the database
  • MongoGridFS::storeFile() - Stores a file in the database
  • MongoGridFS::storeUpload() - Stores an uploaded file in the database
  • MongoDB core docs on » GridFS
MongoGridFS::remove
MongoGridFS::storeFile
MongoGridFS


Stores a file in the database

MongoGridFS::storeBytes
MongoGridFS::storeUpload
MongoGridFS
PHP Manual

MongoGridFS::storeFile

(PECL mongo >=0.9.0)

MongoGridFS::storeFile — Stores a file in the database

说明

public mixed MongoGridFS::storeFile ( string|resource $filename [, array $metadata = array() [, array $options = array() ]] )

参数

filename

Name of the file or a readable stream to store.

metadata

Other metadata fields to include in the file document.

Note:

These fields may also overwrite those that would be created automatically by the driver, as described in the MongoDB core documentation for the » files collection. Some practical use cases for this behavior would be to specify a custom chunkSize or _id for the file.

options

An array of options for the insert operations executed against the chunks and files collections. See MongoCollection::insert() for documentation on these these options.

返回值

Returns the _id of the saved file document. This will be a generated MongoId unless an _id was explicitly specified in the extra parameter.

错误／异常

Throws MongoGridFSException if there is an error reading filename or inserting into the chunks or files collections.

范例

Example #1 MongoGridFS::storeFile() with additional metadata

<?php
$m = new MongoClient();
$gridfs = $m->selectDB('test')->getGridFS();

$id = $gridfs->storeFile('example.txt', array('contentType' => 'plain/text'));
$gridfsFile = $gridfs->get($id);

var_dump($gridfsFile->file);
?>

以上例程的输出类似于：

array(7) {
  ["_id"]=>
  object(MongoId)#6 (0) {
  }
  ["contentType"]=>
  string(10) "plain/text"
  ["filename"]=>
  string(11) "example.txt"
  ["uploadDate"]=>
  object(MongoDate)#7 (0) {
  }
  ["length"]=>
  int(26)
  ["chunkSize"]=>
  int(262144)
  ["md5"]=>
  string(32) "c3fcd3d76192e4007dfb496cca67e13b"
}

参见

  • MongoGridFS::put() - Stores a file in the database
  • MongoGridFS::storeBytes() - Stores a string of bytes in the database
  • MongoGridFS::storeUpload() - Stores an uploaded file in the database
  • MongoDB core docs on » GridFS
MongoGridFS::storeBytes
MongoGridFS::storeUpload
MongoGridFS


Stores an uploaded file in the database

MongoGridFS::storeFile
MongoGridFSFile
MongoGridFS
PHP Manual

MongoGridFS::storeUpload

(PECL mongo >=0.9.0)

MongoGridFS::storeUpload — Stores an uploaded file in the database

说明

public mixed MongoGridFS::storeUpload ( string $name [, array $metadata ] )

参数

name

The name of the uploaded file(s) to store. This should correspond to the file field's name attribute in the HTML form.

metadata

Other metadata fields to include in the file document.

Note:

These fields may also overwrite those that would be created automatically by the driver, as described in the MongoDB core documentation for the » files collection. Some practical use cases for this behavior would be to specify a custom chunkSize or _id for the file.

Note:

The filename field will be populated with the client's filename (e.g. $_FILES['foo']['name']).

返回值

Returns the _id of the saved file document. This will be a generated MongoId unless an _id was explicitly specified in the extra parameter.

Note:

If multiple files are uploaded using the same field name, this method will not return anything; however, the files themselves will still be processed.

错误／异常

Throws MongoGridFSException if there is an error reading the uploaded file(s) or inserting into the chunks or files collections.

更新日志

版本 | 说明
1.2.5 | Changed second parameter to an array of metadata. Pre-1.2.5, the second parameter was an optional string overriding the filename.

范例

Example #1 MongoGridFS::storeUpload() HTML form example

Suppose you have the following HTML form:

<form method="POST" enctype="multipart/form-data">
    <label for="username">Username:</label>
    <input type="text" name="username" id="username" />

    <label for="pic">Please upload a profile picture:</label>
    <input type="file" name="pic" id="pic" />

    <input type="submit" />
</form>

If you wanted to store the uploaded image in MongoDB, you could do the following in the script handling the form submission:

<?php
$m = new MongoClient();
$gridfs = $m->selectDB('test')->getGridFS();

$gridfs->storeUpload('pic', array('username' => $_POST['username']));
?>

参见

  • MongoGridFS::put() - Stores a file in the database
  • MongoGridFS::storeBytes() - Stores a string of bytes in the database
  • MongoGridFS::storeFile() - Stores a file in the database
  • MongoDB core docs on » GridFS
MongoGridFS::storeFile
MongoGridFSFile
MongoGridFS


The MongoGridFSFile class

(PECL mongo >=0.9.0)

简介

A database file object.

类摘要

MongoGridFSFile {
/* Fields */
public array $file = NULL ;
protected MongoGridFS $gridfs = NULL ;
/* 方法 */
public MongoGridfsFile::__construct ( MongoGridFS $gridfs , array $file )
public string getBytes ( void )
public string getFilename ( void )
public resource getResource ( void )
public int getSize ( void )
public int write ([ string $filename = NULL ] )
}

Table of Contents

  • MongoGridfsFile::__construct — Create a new GridFS file
  • MongoGridFSFile::getBytes — Returns this file's contents as a string of bytes
  • MongoGridFSFile::getFilename — Returns this file's filename
  • MongoGridFSFile::getResource — Returns a resource that can be used to read the stored file
  • MongoGridFSFile::getSize — Returns this file's size
  • MongoGridFSFile::write — Writes this file to the filesystem
MongoGridFS::storeUpload
MongoGridfsFile::__construct
GridFS Classes


Create a new GridFS file

MongoGridFSFile
MongoGridFSFile::getBytes
MongoGridFSFile
PHP Manual

MongoGridfsFile::__construct

(PECL mongo >=0.9.0)

MongoGridfsFile::__construct — Create a new GridFS file

说明

public MongoGridfsFile::__construct ( MongoGridFS $gridfs , array $file )

参数

gridfs

The parent MongoGridFS instance.

file

A file from the database.

返回值

Returns a new MongoGridFSFile.

MongoGridFSFile
MongoGridFSFile::getBytes
MongoGridFSFile


Returns this file's contents as a string of bytes

MongoGridfsFile::__construct
MongoGridFSFile::getFilename
MongoGridFSFile
PHP Manual

MongoGridFSFile::getBytes

(PECL mongo >=0.9.0)

MongoGridFSFile::getBytes — Returns this file's contents as a string of bytes

说明

public string MongoGridFSFile::getBytes ( void )

Warning: this will load the file into memory. If the file is bigger than your memory, this will cause problems!

参数

此函数没有参数。

返回值

Returns a string of the bytes in the file.

范例

Example #1 MongoGridFSFile::getBytes() example

<?php

$images = $db->my_db->getGridFS('images');

$image = $images->findOne('jwage.png');

header('Content-type: image/png;');
echo $image->getBytes();
?>
MongoGridfsFile::__construct
MongoGridFSFile::getFilename
MongoGridFSFile


Returns this file's filename

MongoGridFSFile::getBytes
MongoGridFSFile::getResource
MongoGridFSFile
PHP Manual

MongoGridFSFile::getFilename

(PECL mongo >=0.9.0)

MongoGridFSFile::getFilename — Returns this file's filename

说明

public string MongoGridFSFile::getFilename ( void )

参数

此函数没有参数。

返回值

Returns the filename.

MongoGridFSFile::getBytes
MongoGridFSFile::getResource
MongoGridFSFile


Returns a resource that can be used to read the stored file

MongoGridFSFile::getFilename
MongoGridFSFile::getSize
MongoGridFSFile
PHP Manual

MongoGridFSFile::getResource

(PECL mongo >=1.3.0)

MongoGridFSFile::getResource — Returns a resource that can be used to read the stored file

说明

public resource MongoGridFSFile::getResource ( void )

This method returns a stream resource that can be used with all file functions in PHP that deal with reading files. The contents of the file are pulled out of MongoDB on the fly, so that the whole file does not have to be loaded into memory first.

At most two GridFSFile chunks will be loaded in memory.

参数

此函数没有参数。

返回值

Returns a resource that can be used to read the file with

范例

Example #1 MongoGridFSFile::getResource() example

<?php
$m = new Mongo;
$images = $m->my_db->getGridFS('images');

$image = $images->findOne('mongo.png');

header('Content-type: image/png;');
$stream = $image->getResource();

while (!feof($stream)) {
    echo fread($stream, 8192);
}
?>
MongoGridFSFile::getFilename
MongoGridFSFile::getSize
MongoGridFSFile


Returns this file's size

MongoGridFSFile::getResource
MongoGridFSFile::write
MongoGridFSFile
PHP Manual

MongoGridFSFile::getSize

(PECL mongo >=0.9.0)

MongoGridFSFile::getSize — Returns this file's size

说明

public int MongoGridFSFile::getSize ( void )

参数

此函数没有参数。

返回值

Returns this file's size

MongoGridFSFile::getResource
MongoGridFSFile::write
MongoGridFSFile


Writes this file to the filesystem

MongoGridFSFile::getSize
MongoGridFSCursor
MongoGridFSFile
PHP Manual

MongoGridFSFile::write

(PECL mongo >=0.9.0)

MongoGridFSFile::write — Writes this file to the filesystem

说明

public int MongoGridFSFile::write ([ string $filename = NULL ] )

参数

filename

The location to which to write the file. If none is given, the stored filename will be used.

返回值

Returns the number of bytes written.

范例

Example #1 MongoGridFSFile::write() example

<?php

$images = $db->my_db->getGridFS('images');

$image = $images->findOne('jwage.png');
$image->write('/path/to/write/jwage.png');
?>
MongoGridFSFile::getSize
MongoGridFSCursor
MongoGridFSFile


The MongoGridFSCursor class

(PECL mongo >=0.9.0)

简介

Cursor for database file results.

类摘要

extends MongoCursor {
/* Fields */
protected MongoGridFS $gridfs = NULL ;
/* 方法 */
public __construct ( MongoGridFS $gridfs , resource $connection , string $ns , array $query , array $fields )
public MongoGridFSFile current ( void )
public MongoGridFSFile getNext ( void )
public string key ( void )
}

Table of Contents

  • MongoGridFSCursor::__construct — Create a new cursor
  • MongoGridFSCursor::current — Returns the current file
  • MongoGridFSCursor::getNext — Return the next file to which this cursor points, and advance the cursor
  • MongoGridFSCursor::key — Returns the current result's filename
MongoGridFSFile::write
MongoGridFSCursor::__construct
GridFS Classes


Create a new cursor

MongoGridFSCursor
MongoGridFSCursor::current
MongoGridFSCursor
PHP Manual

MongoGridFSCursor::__construct

(PECL mongo >=0.9.0)

MongoGridFSCursor::__construct — Create a new cursor

说明

public MongoGridFSCursor::__construct ( MongoGridFS $gridfs , resource $connection , string $ns , array $query , array $fields )

参数

gridfs

Related GridFS collection.

connection

Database connection.

ns

Full name of database and collection.

query

Database query.

fields

Fields to return.

返回值

Returns the new cursor.

MongoGridFSCursor
MongoGridFSCursor::current
MongoGridFSCursor


Returns the current file

MongoGridFSCursor::__construct
MongoGridFSCursor::getNext
MongoGridFSCursor
PHP Manual

MongoGridFSCursor::current

(PECL mongo >=0.9.0)

MongoGridFSCursor::current — Returns the current file

说明

public MongoGridFSFile MongoGridFSCursor::current ( void )

参数

此函数没有参数。

返回值

The current file.

MongoGridFSCursor::__construct
MongoGridFSCursor::getNext
MongoGridFSCursor


Return the next file to which this cursor points, and advance the cursor

MongoGridFSCursor::current
MongoGridFSCursor::key
MongoGridFSCursor
PHP Manual

MongoGridFSCursor::getNext

(PECL mongo >=0.9.0)

MongoGridFSCursor::getNext — Return the next file to which this cursor points, and advance the cursor

说明

public MongoGridFSFile MongoGridFSCursor::getNext ( void )

参数

此函数没有参数。

返回值

Returns the next file.

MongoGridFSCursor::current
MongoGridFSCursor::key
MongoGridFSCursor


Returns the current result's filename

MongoGridFSCursor::getNext
Miscellaneous
MongoGridFSCursor
PHP Manual

MongoGridFSCursor::key

(PECL mongo >=0.9.0)

MongoGridFSCursor::key — Returns the current result's filename

说明

public string MongoGridFSCursor::key ( void )

参数

此函数没有参数。

返回值

The current result's _id as a string.

更新日志

版本 | 说明
1.3.0 | The document's _id is returned as a string value, since the key should be unique. Pre-1.3.0, filename was returned.

MongoGridFSCursor::getNext
Miscellaneous
MongoGridFSCursor


Miscellaneous

Table of Contents

  • MongoLog
  • MongoPool
  • Mongo
MongoGridFSCursor::key
MongoLog
Mongo


The MongoLog class

(PECL mongo >=1.2.3)

简介

Logging can be used to get detailed information about what the driver is doing. Logging is disabled by default, but this class allows you to activate specific levels of logging for various parts of the driver. Some examples:

<?php

// print every log message possible
MongoLog::setLevel(MongoLog::ALL); // all log levels
MongoLog::setModule(MongoLog::ALL); // all parts of the driver

// print significant events about replica set failover
MongoLog::setLevel(MongoLog::INFO);
MongoLog::setModule(MongoLog::RS);

// print info- and diagnostic-level events for replica sets and connections
MongoLog::setLevel(MongoLog::INFO|MongoLog::FINE);
MongoLog::setModule(MongoLog::RS|MongoLog::CON);

?>

Note:

By default, MongoLog emits all log messages as PHP notices. Depending on the SAPI you use, messages may be sent to stderr (for CLI) or the web server's error log. If, after configuring MongoLog, log messages are not appearing as expected, ensure that the E_NOTICE bit is included in error_reporting and that display_errors is on.

类摘要

MongoLog {
/* 常量 */
const int NONE = 0 ;
const int ALL = 31 ;
level constants {
const int WARNING = 1 ;
const int INFO = 2 ;
const int FINE = 4 ;
module constants {
const int RS = 1 ;
const int POOL = 1 ;
const int CON = 2 ;
const int IO = 4 ;
const int SERVER = 8 ;
const int PARSE = 16 ;
/* Fields */
private static int $callback ;
private static int $level ;
private static int $module ;
/* 方法 */
public static callable getCallback ( void )
public static int getLevel ( void )
public static int getModule ( void )
public static void setCallback ( callable $log_function )
public static void setLevel ( int $level )
public static void setModule ( int $module )
}

预定义常量

MongoLog Constants

These constants can be used by both MongoLog::setLevel() and MongoLog::setModule().

MongoLog::NONE
Log nothing.
MongoLog::ALL
Log everything.

MongoLog Level Constants

These constants can be used by MongoLog::setLevel().

MongoLog::WARNING
Log events that are somewhat exceptional, but not quite worthy of an actual exception (e.g. recoverable connection errors).
MongoLog::INFO
Log events that may be of interest to administrators, but are not particularly noteworthy (e.g. option parsing, authentication steps).
MongoLog::FINE
Log most events that the driver performs (e.g. server selection, socket communication). Depending on the module being logged, this can be extremely noisy and is primarily useful for debugging.

MongoLog Module Constants

These constants can be used by MongoLog::setModule().

MongoLog::CON
Log connection activity. Creating new connections, authentication, pinging, timeouts, etc.
MongoLog::IO
Log traffic to/from the database. Unless your program is trivial, this will create an enormous number of log messages.
MongoLog::PARSE
Log parsing of the connection string and options when constructing MongoClient.
MongoLog::POOL
Previously used to log connection pool activity. This option is now a deprecated alias of MongoLog::RS.
MongoLog::RS
Log replica set activity. Failovers, read preference selection, etc.
MongoLog::SERVER
Previously used to log server status changes. This option is deprecated in favor of MongoLog::RS.

更新日志

版本 | 说明
1.3.0 | Added MongoLog::CON and deprecated MongoLog::POOL and MongoLog::SERVER.

Table of Contents

  • MongoLog::getCallback — Gets the previously set callback function
  • MongoLog::getLevel — Gets the level(s) currently being logged
  • MongoLog::getModule — Gets the module(s) currently being logged
  • MongoLog::setCallback — Sets a callback function to be invoked for events
  • MongoLog::setLevel — Sets the level(s) to be logged
  • MongoLog::setModule — Sets the module(s) to be logged
Miscellaneous
MongoLog::getCallback
Miscellaneous


Gets the previously set callback function

MongoLog
MongoLog::getLevel
MongoLog
PHP Manual

MongoLog::getCallback

(PECL mongo >= 1.3.0)

MongoLog::getCallback — Gets the previously set callback function

说明

public static callable MongoLog::getCallback ( void )

Retrieves the callback function.

参数

此函数没有参数。

返回值

Returns the callback function, or FALSE if not set yet.

注释

Caution

This function is only available with PHP 5.3.0 and later.

MongoLog
MongoLog::getLevel
MongoLog


Gets the level(s) currently being logged

MongoLog::getCallback
MongoLog::getModule
MongoLog
PHP Manual

MongoLog::getLevel

(PECL mongo >= 1.2.3)

MongoLog::getLevel — Gets the level(s) currently being logged

说明

public static int MongoLog::getLevel ( void )

This function can be used to see which log levels are currently enabled. The returned integer may be compared with the MongoLog level constants using bitwise operators to check for specific log levels.

<?php

if (MongoLog::getLevel() & MongoLog::FINE) {
    echo "lots of logs\n";
}

if (MongoLog::getLevel() ^ MongoLog::NONE) {
    echo "logging, at least a little\n";
}

if (MongoLog::getLevel() == MongoLog::ALL) {
    echo "logging at the highest levels\n";
}

?>

参数

此函数没有参数。

返回值

Returns the level(s) currently being logged.

MongoLog::getCallback
MongoLog::getModule
MongoLog


Gets the module(s) currently being logged

MongoLog::getLevel
MongoLog::setCallback
MongoLog
PHP Manual

MongoLog::getModule

(PECL mongo >= 1.2.3)

MongoLog::getModule — Gets the module(s) currently being logged

说明

public static int MongoLog::getModule ( void )

This function can be used to see which driver modules are currently being logged. The returned integer may be compared with the MongoLog module constants using bitwise operators to check if specific modules are being logged.

<?php

if (MongoLog::getModule() & MongoLog::RS) {
    echo "logging replica sets\n";
}

if (MongoLog::getModule() ^ MongoLog::NONE) {
    echo "logging something\n";
}

if ((MongoLog::getModule() & MongoLog::IO) == 0) {
    echo "not logging io\n";
}

?>

参数

此函数没有参数。

返回值

Returns the module(s) currently being logged.

MongoLog::getLevel
MongoLog::setCallback
MongoLog


Sets a callback function to be invoked for events

MongoLog::getModule
MongoLog::setLevel
MongoLog
PHP Manual

MongoLog::setCallback

(PECL mongo >= 1.3.0)

MongoLog::setCallback — Sets a callback function to be invoked for events

说明

public static void MongoLog::setCallback ( callable $log_function )

This function will set a callback function to be invoked for events in lieu of emitting of PHP notice.

参数

log_function

The callback function to be invoked on events. It should have the following prototype:

log_function ( int $module , int $level , string $message )
module
One of the MongoLog module constants.
level
One of the MongoLog level constants.
message
The log message itself.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 MongoLog::setCallback() example

<?php

function module2string($module)
{
    switch ($module) {
        case MongoLog::RS: return "REPLSET";
        case MongoLog::CON: return "CON";
        case MongoLog::IO: return "IO";
        case MongoLog::SERVER: return "SERVER";
        case MongoLog::PARSE: return "PARSE";
        default: return "UNKNOWN";
    }
}

function level2string($level)
{
    switch ($level) {
        case MongoLog::WARNING: return "WARN";
        case MongoLog::INFO: return "INFO";
        case MongoLog::FINE: return "FINE";
        default: return "UNKNOWN";
    }
}

function callback($module, $level, $message)
{
    echo date("Y-m-d H:i:s - ");
    printf("%s (%s): %s\n", module2string($module), level2string($level), $message);
}

MongoLog::setLevel(MongoLog::ALL);
MongoLog::setModule(MongoLog::ALL);

// We specify the function name here, but any callable (e.g. anonymous function) will work
MongoLog::setCallback("callback");

new MongoClient();
?>

以上例程的输出类似于：

2013-07-09 09:41:42 - PARSE (INFO): Parsing localhost:27017
2013-07-09 09:41:42 - PARSE (INFO): - Found node: localhost:27017
2013-07-09 09:41:42 - PARSE (INFO): - Connection type: STANDALONE
2013-07-09 09:41:42 - CON (INFO): mongo_get_read_write_connection: finding a STANDALONE connection
2013-07-09 09:41:42 - CON (INFO): connection_create: creating new connection for localhost:27017
2013-07-09 09:41:42 - CON (INFO): stream_connect: Not establishing SSL for localhost:27017
2013-07-09 09:41:42 - CON (INFO): get_server_flags: start
2013-07-09 09:41:42 - CON (FINE): send_packet: read from header: 36
2013-07-09 09:41:42 - CON (FINE): send_packet: data_size: 95
2013-07-09 09:41:42 - CON (FINE): get_server_flags: setting maxBsonObjectSize to 16777216
2013-07-09 09:41:42 - CON (FINE): get_server_flags: setting maxMessageSizeBytes to 48000000
2013-07-09 09:41:42 - CON (INFO): is_ping: pinging localhost:27017;-;.;1543
2013-07-09 09:41:42 - CON (FINE): send_packet: read from header: 36
2013-07-09 09:41:42 - CON (FINE): send_packet: data_size: 17
2013-07-09 09:41:42 - CON (INFO): is_ping: last pinged at 1373359302; time: 0ms
2013-07-09 09:41:42 - REPLSET (FINE): finding candidate servers
2013-07-09 09:41:42 - REPLSET (FINE): - all servers
2013-07-09 09:41:42 - REPLSET (FINE): filter_connections: adding connections:
2013-07-09 09:41:42 - REPLSET (FINE): - connection: type: STANDALONE, socket: 42, ping: 0, hash: localhost:27017;-;.;1543
2013-07-09 09:41:42 - REPLSET (FINE): filter_connections: done
2013-07-09 09:41:42 - REPLSET (FINE): limiting by seeded/discovered servers
2013-07-09 09:41:42 - REPLSET (FINE): - connection: type: STANDALONE, socket: 42, ping: 0, hash: localhost:27017;-;.;1543
2013-07-09 09:41:42 - REPLSET (FINE): limiting by seeded/discovered servers: done
2013-07-09 09:41:42 - REPLSET (FINE): limiting by credentials
2013-07-09 09:41:42 - REPLSET (FINE): - connection: type: STANDALONE, socket: 42, ping: 0, hash: localhost:27017;-;.;1543
2013-07-09 09:41:42 - REPLSET (FINE): limiting by credentials: done
2013-07-09 09:41:42 - REPLSET (FINE): sorting servers by priority and ping time
2013-07-09 09:41:42 - REPLSET (FINE): - connection: type: STANDALONE, socket: 42, ping: 0, hash: localhost:27017;-;.;1543
2013-07-09 09:41:42 - REPLSET (FINE): sorting servers: done
2013-07-09 09:41:42 - REPLSET (FINE): selecting near servers
2013-07-09 09:41:42 - REPLSET (FINE): selecting near servers: nearest is 0ms
2013-07-09 09:41:42 - REPLSET (FINE): - connection: type: STANDALONE, socket: 42, ping: 0, hash: localhost:27017;-;.;1543
2013-07-09 09:41:42 - REPLSET (FINE): selecting near server: done
2013-07-09 09:41:42 - REPLSET (INFO): pick server: random element 0
2013-07-09 09:41:42 - REPLSET (INFO): - connection: type: STANDALONE, socket: 42, ping: 0, hash: localhost:27017;-;.;1543

注释

Caution

This function is only available with PHP 5.3.0 and later.

MongoLog::getModule
MongoLog::setLevel
MongoLog


Sets the level(s) to be logged

MongoLog::setCallback
MongoLog::setModule
MongoLog
PHP Manual

MongoLog::setLevel

(PECL mongo >= 1.2.3)

MongoLog::setLevel — Sets the level(s) to be logged

说明

public static void MongoLog::setLevel ( int $level )

This function can be used to control logging verbosity and the types of activities that should be logged. The MongoLog level constants may be used with bitwise operators to specify multiple levels.

<?php

// first, specify a logging module
MongoLog::setModule(MongoLog::CON);

// log messages for every level
MongoLog::setLevel(MongoLog::ALL);

// log warning and info messages only
MongoLog::setLevel(MongoLog::WARNING|MongoLog::INFO);

// log everything except fine activity
MongoLog::setLevel(MongoLog::ALL & (~MongoLog::FINE));

?>

Note that you must also call MongoLog::setModule() to specify which modules(s) of the driver should log.

参数

level

The level(s) you would like to log.

MongoLog::setCallback
MongoLog::setModule
MongoLog


Sets the module(s) to be logged

MongoLog::setLevel
MongoPool
MongoLog
PHP Manual

MongoLog::setModule

(PECL mongo >= 1.2.3)

MongoLog::setModule — Sets the module(s) to be logged

说明

public static void MongoLog::setModule ( int $module )

This function can be used to set which driver modules should be logged. The MongoLog module constants may be used with bitwise operators to specify multiple modules.

<?php

// first, specify a logging level
MongoLog::setLevel(MongoLog::ALL);

// log replica set activity
MongoLog::setModule(MongoLog::RS);

// log replica sets and connection activity
MongoLog::setModule(MongoLog::RS|MongoLog::CON);

// log everything except IO activity
MongoLog::setModule(MongoLog::ALL & (~MongoLog::IO));

?>

Note that you must also call MongoLog::setLevel() to enable logging.

参数

module

The module(s) you would like to log.

MongoLog::setLevel
MongoPool
MongoLog


The MongoPool class

(PECL mongo >= 1.2.3)

简介

Warning

The current (1.3.0+) releases of the driver no longer implements pooling. This class and its methods are therefore deprecated and should not be used.

类摘要

MongoPool {
/* 方法 */
public static int getSize ( void )
public array info ( void )
public static bool setSize ( int $size )
}

更新日志

版本 | 说明
1.3.0 | This functionality has been removed and no longer does anything other than emit deprecation warnings. This class is only kept around for backwards compatability and will be removed in the near future.
1.2.11 | Emits E_DEPRECATED when used.

Table of Contents

  • MongoPool::getSize — Get pool size for connection pools
  • MongoPool::info — Returns information about all connection pools.
  • MongoPool::setSize — Set the size for future connection pools.
MongoLog::setModule
MongoPool::getSize
Miscellaneous


Get pool size for connection pools

MongoPool
MongoPool::info
MongoPool
PHP Manual

MongoPool::getSize

(PECL mongo >= 1.2.3)

MongoPool::getSize — Get pool size for connection pools

说明

public static int MongoPool::getSize ( void )

参数

此函数没有参数。

返回值

Returns the current pool size.

更新日志

版本 | 说明
1.2.11 | Emits E_DEPRECATED when used.

范例

Example #1 Changing pool size

This returns the default pool size, sets a new pool size, then prints the new pool size and the pool debugging information. Note that changing the pool size only affects new connection pools, it does not change old ones.

<?php

$connection = new Mongo("host1");

// pool size is -1
echo "pool size is: ".MongoPool::getSize()."\n";

echo "setting pool size to 200\n";

MongoPool::setSize(200);

// pool size is 200
echo "pool size is: ".MongoPool::getSize()."\n";

$conn2 = new Mongo("host2");

// remaining for host1 is -2
// remaining for host2 is 199
var_dump(Mongo::poolDebug());

?>

参见

  • MongoPool::setSize() - Set the size for future connection pools.
  • MongoPool::info() - Returns information about all connection pools.
  • The connection documentation.

MongoPool
MongoPool::info
MongoPool


Returns information about all connection pools.

MongoPool::getSize
MongoPool::setSize
MongoPool
PHP Manual

MongoPool::info

(PECL mongo >= 1.2.3)

MongoPool::info — Returns information about all connection pools.

说明

public array MongoPool::info ( void )

Returns an array of information about all connection pools.

参数

此函数没有参数。

返回值

Each connection pool has an identifier, which starts with the host. For each pool, this function shows the following fields:

in use

The number of connections currently being used by Mongo instances.

in pool

The number of connections currently in the pool (not being used).

remaining

The number of connections that could be created by this pool. For example, suppose a pool had 5 connections remaining and 3 connections in the pool. We could create 8 new instances of MongoClient before we exhausted this pool (assuming no instances of MongoClient went out of scope, returning their connections to the pool).

A negative number means that this pool will spawn unlimited connections.

Before a pool is created, you can change the max number of connections by calling Mongo::setPoolSize(). Once a pool is showing up in the output of this function, its size cannot be changed.

total

The total number of connections allowed for this pool. This should be greater than or equal to "in use" + "in pool" (or -1).

timeout

The socket timeout for connections in this pool. This is how long connections in this pool will attempt to connect to a server before giving up.

waiting

If you have capped the pool size, workers requesting connections from the pool may block until other workers return their connections. This field shows how many milliseconds workers have blocked for connections to be released. If this number keeps increasing, you may want to use MongoPool::setSize() to add more connections to your pool.

更新日志

版本 | 说明
1.2.11 | Emits E_DEPRECATED when used.

MongoPool::getSize
MongoPool::setSize
MongoPool


Set the size for future connection pools.

MongoPool::info
Mongo
MongoPool
PHP Manual

MongoPool::setSize

(PECL mongo >= 1.2.3)

MongoPool::setSize — Set the size for future connection pools.

说明

public static bool MongoPool::setSize ( int $size )

Sets the max number of connections new pools will be able to create.

参数

size

The max number of connections future pools will be able to create. Negative numbers mean that the pool will spawn an infinite number of connections.

返回值

Returns the former value of pool size.

更新日志

版本 | 说明
1.2.11 | Emits E_DEPRECATED when used.

范例

Example #1 Mongo::setPoolSize() example

If you set the pool size to n and then create n connections, attempting to create an n+1st connection will throw a MongoConnectionException.

<?php

// only allow one connection to a server
MongoPool::setSize(1);

// creates one connection to localhost:27017
$m1 = new Mongo();

// attempt to create a second connection to localhost:27017
// only one connection is allowed, so this will throw an exception
$m2 = new Mongo();

?>

以上例程的输出类似于：

Fatal error: Uncaught exception 'MongoConnectionException' with message 'no more connections in pool' in /path/to/php/script.php:10
Stack trace:
#0 /path/to/php/script.php(10): Mongo->__construct()
#1 {main}
  thrown in /path/to/php/script.php on line 10

参见

  • MongoPool::getSize() - Get pool size for connection pools
  • MongoPool::info() - Returns information about all connection pools.
  • The connection documentation.

MongoPool::info
Mongo
MongoPool


The Mongo class [deprecated]

(PECL mongo >=0.9.0)

简介

A connection between PHP and MongoDB.

This class extends MongoClient and provides access to several deprecated methods.

For backwards compatibility, it also defaults the "w" option of its constructor argument to 0, which does not require write operations to be acknowledged by the server. See MongoClient::__construct() for more information.

Warning

This class has been DEPRECATED as of version 1.3.0. Relying on this feature is highly discouraged. Please use MongoClient instead.

类摘要

Mongo extends MongoClient {
/* 方法 */
protected bool connectUtil ( void )
public static int getPoolSize ( void )
public string getSlave ( void )
public bool getSlaveOkay ( void )
public array poolDebug ( void )
public static bool setPoolSize ( int $size )
public bool setSlaveOkay ([ bool $ok = true ] )
public string switchSlave ( void )
/* 继承的方法 */
public bool MongoClient::close ([ boolean|string $connection ] )
public bool MongoClient::connect ( void )
public array MongoClient::dropDB ( mixed $db )
public MongoDB MongoClient::__get ( string $dbname )
public static array MongoClient::getConnections ( void )
public array MongoClient::getHosts ( void )
public array MongoClient::getReadPreference ( void )
public array MongoClient::getWriteConcern ( void )
public bool MongoClient::killCursor ( string $server_hash , int|MongoInt64 $id )
public array MongoClient::listDBs ( void )
public MongoCollection MongoClient::selectCollection ( string $db , string $collection )
public MongoDB MongoClient::selectDB ( string $name )
public bool MongoClient::setReadPreference ( string $read_preference [, array $tags ] )
public bool MongoClient::setWriteConcern ( mixed $w [, int $wtimeout ] )
public string MongoClient::__toString ( void )
}

Table of Contents

  • Mongo::connectUtil — Connects with a database server
  • Mongo::__construct — The __construct purpose
  • Mongo::getPoolSize — Get pool size for connection pools
  • Mongo::getSlave — Returns the address being used by this for slaveOkay reads
  • Mongo::getSlaveOkay — Get slaveOkay setting for this connection
  • Mongo::poolDebug — Returns information about all connection pools.
  • Mongo::setPoolSize — Set the size for future connection pools.
  • Mongo::setSlaveOkay — Change slaveOkay setting for this connection
  • Mongo::switchSlave — Choose a new secondary for slaveOkay reads
MongoPool::setSize
Mongo::connectUtil
Miscellaneous


Connects with a database server

Mongo
Mongo::__construct
Mongo
PHP Manual

Mongo::connectUtil

(PECL mongo >=0.9.0)

Mongo::connectUtil — Connects with a database server

说明

protected bool Mongo::connectUtil ( void )
Warning

This is an internal function that you should never call yourself.

参数

此函数没有参数。

返回值

If the connection was successful.

错误／异常

Throws MongoConnectionException if it fails to connect to the databases.

Mongo
Mongo::__construct
Mongo


The __construct purpose

Mongo::connectUtil
Mongo::getPoolSize
Mongo
PHP Manual

Mongo::__construct

(PECL mongo >=0.9.0)

Mongo::__construct — The __construct purpose

说明

public Mongo::__construct ([ string $server [, array $options ]] )

This method overwrites the MongoClient constructor and turns off acknowledged writes.

Please see MongoClient::__construct() for description of the parameters.

返回值

Warning

Instanciating this class will emit E_DEPRECATED warning, and turn off acknowledged writes.

Please use the MongoClient instead.

Mongo::connectUtil
Mongo::getPoolSize
Mongo


Get pool size for connection pools

Mongo::__construct
Mongo::getSlave
Mongo
PHP Manual

Mongo::getPoolSize

(PECL mongo >=1.2.0)

Mongo::getPoolSize — Get pool size for connection pools

说明

public static int Mongo::getPoolSize ( void )
Warning

This feature has been DEPRECATED as of version 1.2.3. Relying on this feature is highly discouraged. Please use MongoPool::getSize() instead.

参数

此函数没有参数。

返回值

Returns the current pool size.

更新日志

版本 | 说明
1.2.11 | Emits E_DEPRECATED when used.

范例

Example #1 Changing pool size

This returns the default pool size, sets a new pool size, then prints the new pool size and the pool debugging information. Note that changing the pool size only affects new connection pools, it does not change old ones.

<?php

$connection = new Mongo("host1");

// pool size is -1
echo "pool size is: ".Mongo::getPoolSize()."\n";

echo "setting pool size to 200\n";

Mongo::setPoolSize(200);

// pool size is 200
echo "pool size is: ".Mongo::getPoolSize()."\n";

$conn2 = new Mongo("host2");

// remaining for host1 is -2
// remaining for host2 is 199
var_dump(Mongo::poolDebug());

?>

参见

  • Mongo::setPoolSize() - Set the size for future connection pools.
  • Mongo::poolDebug() - Returns information about all connection pools.
  • The connection documentation.

Mongo::__construct
Mongo::getSlave
Mongo


Returns the address being used by this for slaveOkay reads

Mongo::getPoolSize
Mongo::getSlaveOkay
Mongo
PHP Manual

Mongo::getSlave

(PECL mongo >=1.1.0)

Mongo::getSlave — Returns the address being used by this for slaveOkay reads

说明

public string Mongo::getSlave ( void )

This finds the address of the secondary currently being used for reads. It is a read-only method: it does not change anything about the internal state of the object.

When you create a connection to the database, the driver will not immediately decide on a secondary to use. Thus, after you connect, this function will return NULL even if there are secondaries available. When you first do a query with slaveOkay set, at that point the driver will choose a secondary for this connection. At that point, this function will return the chosen secondary.

See the query section of this manual for information on distributing reads to secondaries.

参数

此函数没有参数。

返回值

The address of the secondary this connection is using for reads.

This returns NULL if this is not connected to a replica set or not yet initialized.

错误／异常

Issues E_DEPRECATED warning

The returned results aren't really useful as the secondary selection process is done on each query and database command execution.

更新日志

版本 | 说明
1.2.11 | Emits E_DEPRECATED when used.

参见

  • MongoCursor::info() - Gets information about the cursor's creation and iteration
Mongo::getPoolSize
Mongo::getSlaveOkay
Mongo


Get slaveOkay setting for this connection

Mongo::getSlave
Mongo::poolDebug
Mongo
PHP Manual

Mongo::getSlaveOkay

(PECL mongo >=1.1.0)

Mongo::getSlaveOkay — Get slaveOkay setting for this connection

说明

public bool Mongo::getSlaveOkay ( void )

See the query section of this manual for information on distributing reads to secondaries.

参数

此函数没有参数。

返回值

Returns the value of slaveOkay for this instance.

错误／异常

Issues E_DEPRECATED warning

更新日志

版本 | 说明
1.2.11 | Emits E_DEPRECATED when used.

参见

  • 读取首选项
  • MongoClient::getReadPreference() - 获取此连接的读取首选项
Mongo::getSlave
Mongo::poolDebug
Mongo


Returns information about all connection pools.

Mongo::getSlaveOkay
Mongo::setPoolSize
Mongo
PHP Manual

Mongo::poolDebug

(PECL mongo >=1.2.0)

Mongo::poolDebug — Returns information about all connection pools.

说明

public array Mongo::poolDebug ( void )
Warning

This feature has been DEPRECATED as of version 1.2.3. Relying on this feature is highly discouraged. Please use MongoPool::info() instead.

Returns an array of information about all connection pools.

参数

此函数没有参数。

返回值

Each connection pool has an identifier, which starts with the host. For each pool, this function shows the following fields:

in use

The number of connections currently being used by MongoClient instances.

in pool

The number of connections currently in the pool (not being used).

remaining

The number of connections that could be created by this pool. For example, suppose a pool had 5 connections remaining and 3 connections in the pool. We could create 8 new instances of MongoClient before we exhausted this pool (assuming no instances of MongoClient went out of scope, returning their connections to the pool).

A negative number means that this pool will spawn unlimited connections.

Before a pool is created, you can change the max number of connections by calling Mongo::setPoolSize(). Once a pool is showing up in the output of this function, its size cannot be changed.

timeout

The socket timeout for connections in this pool. This is how long connections in this pool will attempt to connect to a server before giving up.

更新日志

版本 | 说明
1.2.11 | Emits E_DEPRECATED when used.

Mongo::getSlaveOkay
Mongo::setPoolSize
Mongo


Set the size for future connection pools.

Mongo::poolDebug
Mongo::setSlaveOkay
Mongo
PHP Manual

Mongo::setPoolSize

(PECL mongo >=1.2.0)

Mongo::setPoolSize — Set the size for future connection pools.

说明

public static bool Mongo::setPoolSize ( int $size )
Warning

This method has been DEPRECATED as of version 1.2.3. Relying on this feature is highly discouraged. Please use MongoPool::setSize() instead.

Sets the max number of connections new pools will be able to create.

参数

size

The max number of connections future pools will be able to create. Negative numbers mean that the pool will spawn an infinite number of connections.

返回值

Returns the former value of pool size.

范例

Example #1 Mongo::setPoolSize() example

If you set the pool size to n and then create n connections, attempting to create an n+1st connection will throw a MongoConnectionException.

<?php

// only allow one connection to a server
Mongo::setPoolSize(1);

// creates one connection to localhost:27017
$m1 = new Mongo();

// attempt to create a second connection to localhost:27017
// only one connection is allowed, so this will throw an exception
$m2 = new Mongo();

?>

以上例程的输出类似于：

Fatal error: Uncaught exception 'MongoConnectionException' with message 'no more connections in pool' in /path/to/php/script.php:10
Stack trace:
#0 /path/to/php/script.php(10): Mongo->__construct()
#1 {main}
  thrown in /path/to/php/script.php on line 10

参见

  • Mongo::getPoolSize() - Get pool size for connection pools
  • Mongo::poolDebug() - Returns information about all connection pools.
  • The connection documentation.

Mongo::poolDebug
Mongo::setSlaveOkay
Mongo


Change slaveOkay setting for this connection

Mongo::setPoolSize
Mongo::switchSlave
Mongo
PHP Manual

Mongo::setSlaveOkay

(PECL mongo >=1.1.0)

Mongo::setSlaveOkay — Change slaveOkay setting for this connection

说明

public bool Mongo::setSlaveOkay ([ bool $ok = true ] )

See the query section of this manual for information on distributing reads to secondaries.

参数

ok

If reads should be sent to secondary members of a replica set for all possible queries using this MongoClient instance.

返回值

Returns the former value of slaveOkay for this instance.

更新日志

版本 | 说明
1.2.11 | Emits E_DEPRECATED when used.

参见

  • 读取首选项
  • MongoClient::setReadPreference() - 为该连接设置读取选项
Mongo::setPoolSize
Mongo::switchSlave
Mongo


Choose a new secondary for slaveOkay reads

Mongo::setSlaveOkay
Mongo 函数
Mongo
PHP Manual

Mongo::switchSlave

(PECL mongo >=1.1.0)

Mongo::switchSlave — Choose a new secondary for slaveOkay reads

说明

public string Mongo::switchSlave ( void )

This choses a random secondary for a connection to read from. It is called automatically by the driver and should not need to be used. It calls MongoClient::getHosts() (to refresh the status of hosts) and Mongo::getSlave() (to get the return value).

See the query section of this manual for information on distributing reads to secondaries.

参数

此函数没有参数。

返回值

The address of the secondary this connection is using for reads. This may be the same as the previous address as addresses are randomly chosen. It may return only one address if only one secondary (or only the primary) is available.

For example, if we had a three member replica set with a primary, secondary, and arbiter this method would always return the address of the secondary. If the secondary became unavailable, this method would always return the address of the primary. If the primary also became unavailable, this method would throw an exception, as an arbiter cannot handle reads.

错误／异常

Throws a MongoException (error code 15) if it is called on a non-replica-set connection. It will also throw MongoExceptions if it cannot find anyone (primary or secondary) to read from (error code 16).

更新日志

版本 | 说明
1.2.11 | Emits E_DEPRECATED when used.

参见

  • 读取首选项
Mongo::setSlaveOkay
Mongo 函数
Mongo


Mongo 函数

Table of Contents

  • bson_decode — 反序列化一个 BSON 对象为 PHP 数组
  • bson_encode — 序列化一个 PHP 变量为 BSON 字符串
Mongo::switchSlave
bson_decode
Mongo


反序列化一个 BSON 对象为 PHP 数组

Mongo 函数
bson_encode
Mongo 函数
PHP Manual

bson_decode

(PECL mongo >=1.0.1)

bson_decode — 反序列化一个 BSON 对象为 PHP 数组

说明

array bson_decode ( string $bson )

这个函数非常不正式，对 99% 的用户是完全没用的。 仅仅在做着一些不寻常的事的情况下有用，比如在 PHP 驱动的基础上编写自己的驱动。

参数

bson

要反序列化的 BSON。

返回值

返回反序列化后的 BSON 对象。

Mongo 函数
bson_encode
Mongo 函数


序列化一个 PHP 变量为 BSON 字符串

bson_decode
Exceptions
Mongo 函数
PHP Manual

bson_encode

(PECL mongo >=1.0.1)

bson_encode — 序列化一个 PHP 变量为 BSON 字符串

说明

string bson_encode ( mixed $anything )

这个函数非常不正式，对 99% 的用户是完全没用的。 仅仅在做着一些不寻常的事的情况下有用，比如在 PHP 驱动的基础上编写自己的驱动。

参数

anything

要序列化的变量。

返回值

返回序列化后的字符串。

bson_decode
Exceptions
Mongo 函数


Exceptions

Table of Contents

  • MongoException
  • MongoResultException
  • MongoCursorException
  • MongoCursorTimeoutException
  • MongoConnectionException
  • MongoGridFSException
  • MongoDuplicateKeyException
  • MongoProtocolException
  • MongoExecutionTimeoutException
  • MongoWriteConcernException

VMWare Oddities

If you are running VMWare on Windows and are using CIFS, pausing the VM will cause CIFS to go out of sync and cause weird errors on un-pausing it ("The Mongo object has not been correctly initialized by its constructor"). Permanently mounting the Windows shares will fix this and you'll be able to pause and unpause at will.

To permanently mount the Windows shares, run:

$ sudo update-rc.d -f umountnfs.sh remove
$ sudo update-rc.d umountnfs.sh stop 15 0 6 .

See » the Ubuntu docs for the most up-to-date instructions.

bson_encode
MongoException
Mongo


The MongoException class

(PECL mongo >= 1.0.0)

简介

Default Mongo exception.

This covers a bunch of different error conditions that may eventually be moved to more specific exceptions, but will always extend MongoException.

  • The MongoSomething object has not been correctly initialized by its constructor

    Code: 0

    Probably your Mongo object is not connected to a database server.

  • zero-length keys are not allowed, did you use $ with double quotes?

    Code: 1

    You tried to save "" as a key. You generally should not do this. "" can mess up subobject access and is used by MongoDB internally. However, if you really want, you can set mongo.allow_empty_keys to true in your php.ini file to override this sanity check. If you override this, it is highly recommended that you set error checking to strict to avoid string interpolation errors.

  • '.' not allowed in key: <key>

    Code: 2

    You attempted to write a key with '.' in it, which is prohibited.

  • insert too large: <size>, max: <max>

    Code: 3

    You're attempting to send too much data to the database at once: the database will only accept inserts up to a certain size (currently 16 MB).

  • no elements in doc

    Code: 4

    You're attempting to save a document with no fields.

  • size of BSON doc is <size> bytes, max <max>MB

    Code: 5

    You're attempting to save a document that is larger than MongoDB can save.

  • no documents given

    Code: 6

    You're attempting to batch insert an empty array of documents.

  • MongoCollection::group takes an array, object, or MongoCode key

    Code: 7

    Wrong type parameter send to MongoCollection::group().

  • field names must be strings

    Code: 8

    You should format field selectors as array("field1" => 1, "field2" => 1, ..., "fieldN" => 1).

  • invalid regex

    Code: 9

    The regex passed to MongoRegex is not of the correct form.

  • MongoDBRef::get: $ref field must be a string

    Code: 10

  • MongoDBRef::get: $db field must be a string

    Code: 11

  • non-utf8 string: <str>

    Code: 12

    This error occurs if you attempt to send a non-utf8 string to the database. All strings going into the database should be UTF8. See php.ini options for the transition option of quieting this exception.

  • mutex error: <err>

    Code: 13

    The driver uses mutexes for synchronizing requests and responses in multithreaded environments. This is a fairly serious error and may not have a stack trace. It's unusual and should be reported to maintainers with any system information and steps to reproduce that you can provide.

  • index name too long: <len>, max <max> characters

    Code: 14

    Indexes with names longer than 128 characters cannot be created. If you get this error, you should use MongoCollection::ensureIndex()'s "name" option to create a shorter name for your index.

类摘要

MongoException extends Exception {
}
Exceptions
MongoResultException
Exceptions


MongoResultException 类

(PECL mongo >=1.3.0)

简介

MongoResultException 由几个助手命令（例如 MongoCollection::findAndModify()）在发生失败事件时抛出。 原始的结果文档可以通过 MongoResultException::getDocument() 获取。

类摘要

MongoResultException extends MongoException {
/* 属性 */
public $document ;
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 方法 */
public array getDocument ( void )
}

属性

document

array 的原始结果文档。

Table of Contents

  • MongoResultException::getDocument — 获取完整的结果文档
MongoException
MongoResultException::getDocument
Exceptions


获取完整的结果文档

MongoResultException
MongoCursorException
MongoResultException
PHP Manual

MongoResultException::getDocument

(PECL mongo >=1.3.0)

MongoResultException::getDocument — 获取完整的结果文档

说明

public array MongoResultException::getDocument ( void )

获取完整的错误结果文档。

参数

此函数没有参数。

返回值

完整的结果文档数组，包括是否有效的部分数据以及额外的键。

范例

Example #1 MongoResultException::getDocument() 例子

<?php
$mc = new MongoClient("localhost");
$c = $mc->selectCollection("test", "test");

$c->insert(array(
     "name" => "Next promo",
     "inprogress" => false,
     "priority" => 0,
     "tasks" => array( "select product", "add inventory", "do placement"),
) );

$c->insert(array(
     "name" => "Biz report",
     "inprogress" => false,
     "priority" => 1,
     "tasks" => array( "run sales report", "email report" )
) );

$c->insert(array(
     "name" => "Biz report",
     "inprogress" => false,
     "priority" => 2,
     "tasks" => array( "run marketing report", "email report" )
    ),
    array("w" => true)
);

try {
    $retval = $c->findAndModify(
         array("inprogress" => false, "name" => "Biz report"),
         array('$set' => array('$set' => array('inprogress' => true, "started" => new MongoDate()))),
         null,
         array(
            "sort" => array("priority" => -1),
            "new" => true,
        )
    );
} catch(MongoResultException $e) {
    echo $e->getMessage(), "\n";
    $res = $e->getDocument();
    var_dump($res);
}
?>

以上例程的输出类似于：

$set is not valid for storage.
array(3) {
  ["lastErrorObject"]=>
  array(5) {
    ["connectionId"]=>
    int(6)
    ["err"]=>
    string(30) "$set is not valid for storage."
    ["code"]=>
    int(52)
    ["n"]=>
    int(0)
    ["ok"]=>
    float(1)
  }
  ["ok"]=>
  float(0)
  ["errmsg"]=>
  string(30) "$set is not valid for storage."
}
MongoResultException
MongoCursorException
MongoResultException


The MongoCursorException class

(PECL mongo >= 1.0.0)

简介

Caused by accessing a cursor incorrectly or a error receiving a reply. Note that this can be thrown by any database request that receives a reply, not just queries. Writes, commands, and any other operation that sends information to the database and waits for a response can throw a MongoCursorException. The only exception is new MongoClient() (creating a new connection), which will only throw MongoConnectionExceptions.

This returns a specific error message to help diagnose the problem and a numeric error code associated with the cause of the exception.

For example, suppose you tried to insert two documents with the same _id:

<?php

try {
    $collection->insert(array("_id" => 1), array("w" => 1));
    $collection->insert(array("_id" => 1), array("w" => 1));
}
catch (MongoCursorException $e) {
    echo "error message: ".$e->getMessage()."\n";
    echo "error code: ".$e->getCode()."\n";
}

?>
This would produce output like:
error message: E11000 duplicate key error index: foo.bar.$_id_  dup key: { : 1 }
error code: 11000
Note that the MongoDB error code (11000) is used for the PHP error code. The PHP driver uses the "native" error code wherever possible.

The following is a list of common errors, codes, and causes. Exact errors are in italics, errors where the message can vary are described in obliques.

  • cannot modify cursor after beginning iteration

    Code: 0

    You are calling a method that sets up the query after executing the query. Reset the cursor and try again.

    An example:

    <?php

    try {
            $cursor = $collection->find();
            var_dump($cursor->getNext());

            // getNext() queried the database, it's too late to set a limit
            $cursor->limit(1);
    }
    catch (    MongoCursorException $e) {
        echo     "error message: ".$e->getMessage()."\n";
        echo     "error code: ".$e->getCode()."\n";
    }

    // this will work, though:
    $cursor->getNext();
    $cursor->reset();
    $cursor->limit(1);

    ?>

  • Get next batch send errors

    Code: 1

    Could not send the query to the database. Make sure the database is still up and the network is okay.

  • cursor not found

    Code: 2

    The driver was trying to fetch more results from the database, but the database did not have a record of the query. This usually means that the cursor timed out on the server side: after a few minutes of inactivity, the database will kill a cursor (see MongoCursor::immortal() for information on preventing this).

    An example:

    <?php

    try {
            $cursor = $collection->find();
            $cursor->getNext();

            // sleep for 15 minutes
            sleep(60*15);

        while (    $cursor->hasNext()) {
                $cursor->getNext();
        }
    }
    catch (    MongoCursorException $e) {
        echo     "error message: ".$e->getMessage()."\n";
        echo     "error code: ".$e->getCode()."\n";
    }

    ?>

  • cursor->buf.pos is null

    Code: 3

    This may indicate you are out of RAM or some other extraordinary circumstance.

  • couldn't get response header

    Code: 4

    A common error if the database or network goes down. This means that the driver couldn't get a response from the connection.

  • no db response

    Code: 5

    This may not even be an error, for example, the database command "shutdown" returns no response. However, if you were expecting a response, this means the database didn't give one.

  • bad response length: %d, did the db assert?

    Code: 6

    This means that the database said that its response was less than 0. This error probably indicates a network error or database corruption.

  • incomplete header

    Code: 7

    Highly unusual. Occurs if the database response started out correctly, but broke off in the middle. Probably indicates a network problem.

  • incomplete response

    Code: 8

    Highly unusual. Occurs if the database response started out correctly, but broke off in the middle. Probably indicates a network problem.

  • couldn't find a response

    Code: 9

    If the response was cached and now cannot be located.

  • error getting socket

    Code: 10

    The socket was closed or encountered an error. The driver should automatically reconnect (if possible) on the next operation.

  • couldn't find reply, please try again

    Code: 11

    The driver saves any database responses it cannot immediately match with a request. This exception occurs if the driver has already passed your request's response and cannot find your response in its cache.

  • error getting database response: errstr

    WSA error getting database response: errstr

    "errstr" is an io error reported directly from the C socket subsystem. On Windows, the error message is prefixed with "WSA".

  • Timeout error

    Code: 13

    If there was an error while waiting for a query to complete.

  • couldn't send query: <various>

    Code: 14

    C socket error on send.

  • max number of retries exhausted, couldn't send query

    Code: 19

    The driver will automatically retry "plain" queries (not commands) a couple of times if the first attempt failed for certain reasons. This is to cause fewer exceptions during replica set failover (although you will probably still have to deal with some) and gloss over transient network issues.

    This can also be caused by the driver not being able to reconnect at all to the database (if, for example, the database is unreachable).

    Version 1.2.2+.

Errors passed through by the database

Database errors should always trigger MongoCursorExceptions on queries. Error messages and codes are sent directly from the database and you should be able to see matching errors in the database log.

A few common database errors are listed below:

  • E11000 duplicate key error index: foo.bar.$X dup key: { /* ... */ }

    Code: 11000

    Database error for duplicate keys.

  • not master

    Codes: 10107, 13435, and 10058

    Not master errors, piped through by the database. ach of these will cause the driver to disconnect and attempt to find a new primary. The actual error you get on failover may not be a "not master" error, depending on when the change in primary occurs.

类摘要

MongoCursorException extends MongoException {
}

Table of Contents

  • MongoCursorException::getHost — 遇到该错误的服务器的 hostname
MongoResultException::getDocument
MongoCursorException::getHost
Exceptions


遇到该错误的服务器的 hostname

MongoCursorException
MongoCursorTimeoutException
MongoCursorException
PHP Manual

MongoCursorException::getHost

(PECL mongo >= 1.0.0)

MongoCursorException::getHost — 遇到该错误的服务器的 hostname

说明

public string MongoCursorException::getHost ( void )

返回发送查询到该服务器的 hostname。

参数

此函数没有参数。

返回值

返回 hostname，如果 hostname 是未知的则是 NULL。

MongoCursorException
MongoCursorTimeoutException
MongoCursorException


The MongoCursorTimeoutException class

(PECL mongo >= 1.0.0)

简介

Caused by a query timing out. You can set the length of time to wait before this exception is thrown by calling MongoCursor::timeout() on the cursor or setting MongoCursor::$timeout. The static variable is useful for queries such as database commands and MongoCollection::findOne(), both of which implicitly use cursors.

类摘要

MongoCursorTimeoutException extends MongoCursorException {
}
MongoCursorException::getHost
MongoConnectionException
Exceptions


The MongoConnectionException class

(PECL mongo >= 1.0.0)

简介

Thrown when the driver fails to connect to the database.

There are a number of possible error messages to help you diagnose the connection problem. These are:

  • No candidate servers found

    Thrown when the driver cannot establish a connection to MongoDB (fulfilling the ReadPreferences, if specified).

  • No server name given.

    This error occurs if you pass in "" as the server name, probably because of an typo with string interpolation, e.g., "$servr" instead of "$server".

  • failed to get host [hostname] or port [portnum] from [server].

    This indicated that the server string was malformed. "[hostname]" and "[portnum]" will be as much as the driver could dicipher of it.

  • Operation in progress

    Connecting to the database timed out.

  • Transport endpoint is not connected

    Generally means that the connection string isn't correct, the driver couldn't even find the database server.

  • couldn't determine master

    No server in a replica set connection was identified as the primary.

  • couldn't get host info for [server]

    This indicated that DNS could not resolve the server address you gave. This could easily be caused by a typo, for example, "server" instead of "$server".

  • Invalid Argument

    This can be caused by attempting to connect to a machine that is up but that the database isn't actually running on. Make sure that you've started the database server before connecting.

  • Permission denied

    This means that the socket could not be opened due to permissions issues. On Red Hat variants, this can be caused by a default setting that does not allow Apache to create network connections. You can override this setting by running:

    $ /usr/sbin/setsebool -P httpd_can_network_connect 1
    then restarting Apache.

If the error message is not listed above, it is probably an error from the C socket, and you can search the web for its usual cause.

类摘要

MongoConnectionException extends MongoException {
}
MongoCursorTimeoutException
MongoGridFSException
Exceptions


The MongoGridFSException class

(PECL mongo >= 1.0.0)

简介

Thrown when there are errors reading or writing files to or from the database.

类摘要

MongoGridFSException extends MongoException {
}

Error codes

MongoGridFSException error codes
Code | Message | Reason
3 | Could not open file $filename | Attempting to store an invalid file, such as directory
4 | File $filename is too large: $filesize bytes | Maximum filesize in GridFS is 4GB
5 | could not find filehandle | Resource doesn't have a filehandle
6 | no file is associate with this filehandle | Resource isn't a file resource
7 | error setting up file: $filenames | Could not open file for reading
9 | error reading file $filenames | Failed reading file
10 | error reading filehandle | Failed reading from a resource
11 | could not find uploaded file %s | Filename doesn't seem to be uploaded file
12 | Couldn't find tmp_name in the $_FILES array. Are you sure the upload worked? | Uploaded filename probably failed
13 | tmp_name was not a string or an array | Invalid filename given
14 | couldn't find file size | The length property is missing
15 | Cannot find filename | No filename provided, and no filename property set
16 | could not open destination file %s | Destination filename not writable
17 | error reading chunk of file | Chunk corruption
18 | couldn't create a php_stream | Couldn't create a stream resource
19 | couldn't find property | Chunk corruption
20 | chunk number has wrong size (size) when the max is maxchunksize | Chunk larger then expected
21 | chunk has wrong format | Chunk corruption

MongoConnectionException
MongoDuplicateKeyException
Exceptions


The MongoDuplicateKeyException class

(PECL mongo >= 1.5.0)

简介

Thrown when attempting to insert a document into a collection which already contains the same values for the unique keys.

类摘要

MongoDuplicateKeyException extends MongoWriteConcernException {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
public array MongoWriteConcernException::getDocument ( void )
}

范例

Example #1 Catching MongoDuplicateKeyException

<?php
$mc = new MongoClient("localhost");

$c = $mc->selectCollection("test", "test");

$c->insert(array('_id' => 1));
try {
    $c->insert(array('_id' => 1));
} catch (MongoWriteConcernException $e) {
    echo $e->getMessage(), "\n";
}
?>

以上例程的输出类似于：

localhost:27017: insertDocument :: caused by :: 11000 E11000 duplicate key error index: test.test.$_id_  dup key: { : 1 }
MongoGridFSException
MongoProtocolException
Exceptions


The MongoProtocolException class

(PECL mongo >= 1.5.0)

简介

When talking to MongoDB 2.6.0, and later, certain operations (such as writes) may throw MongoProtocolException when the response from the server did not make sense - for example during network failure (we could read the entire response) or data corruption.

This exception is also thrown when attempting to talk newer protocols then the server supports, for example using the MongoWriteBatch when talking to a MongoDB server prior to 2.6.0.

类摘要

MongoProtocolException extends MongoException {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
}

范例

Example #1 Catching MongoProtocolException

Running the following example against MongoDB prior to 2.6.0 will throw an MongoProtocolException

<?php
$mc = new MongoClient("localhost");
$c = $mc->selectCollection("test", "test");

try {
    $batch = new MongoInsertBatch($c);
} catch(MongoProtocolException $e) {
    echo $e->getMessage();
}
?>

以上例程的输出类似于：

Current primary does not have a Write API
MongoDuplicateKeyException
MongoExecutionTimeoutException
Exceptions


The MongoExecutionTimeoutException class

(PECL mongo >= 1.5.0)

简介

Thrown when a operation times out server side (i.e. in MongoDB).

To configure the operation timeout threshold, use MongoCursor::maxTimeMS() or the "maxTimeMS" command option.

类摘要

MongoExecutionTimeoutException extends MongoException {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
}
MongoProtocolException
MongoWriteConcernException
Exceptions


The MongoWriteConcernException class

(PECL mongo >= 1.5.0)

简介

MongoWriteConcernException is thrown when a write fails. See Write Concerns for how to set failure thresholds.

Prior to MongoDB 2.6.0, the » getLastError command would determine whether a write failed.

类摘要

MongoWriteConcernException extends MongoCursorException {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 方法 */
public array getDocument ( void )
/* 继承的方法 */
public string MongoCursorException::getHost ( void )
}

Table of Contents

  • MongoWriteConcernException::getDocument — Get the error document
MongoExecutionTimeoutException
MongoWriteConcernException::getDocument
Exceptions


Get the error document

MongoWriteConcernException
更新日志
MongoWriteConcernException
PHP Manual

MongoWriteConcernException::getDocument

(PECL mongo >= 1.5.0)

MongoWriteConcernException::getDocument — Get the error document

说明

public array MongoWriteConcernException::getDocument ( void )

Returns the actual response from the server that was interperated as an error.

参数

此函数没有参数。

返回值

A MongoDB document, if available, as an array.

MongoWriteConcernException
更新日志
MongoWriteConcernException


更新日志

对本扩展的类／函数／方法有以下更新。

MongoDB PHP Driver 1.5.0

It supports all new features for MongoDB 2.6, including:

  • Aggregate can now return a cursor
  • Aggregation pipelines can now be explained
  • Possible to set maxTimeMS for commands and queries
  • Transparent support for the new command-based MongoDB write API
  • New MongoWriteBatch classes (using the new MongoDB write API)
  • Support for MongoDB Enterprise features (e.g. Kerberos, LDAP, X509)
  • Option to tune acceptable server latency for secondary reads (secondaryAcceptableLatencyMS)

With this release, some driver functionality which was previously documented as deprecated will now formally raise deprecation notices. This includes:

  • Instantiating the Mongo class
  • Calling MongoCursor::slaveOkay()
  • "wtimeout" and "safe" options for MongoCollection write operations
  • Manipulating public properties on core classes (such as $collection->w)

Note:

No previously deprecated features have been removed.

Changes in behaviour:

  • Setting the mongo.native_long INI setting now raises an error on 32-bit platforms, and now defaults to true for 64-bit platforms.

MongoDB PHP Driver 1.4.0

The 1.4 series introduced fundemental changes in how connections are created to the MongoDB servers. The driver now utilizes PHP native streams, so all normal PHP stream options apply. Furthermore, an experimental Stream Context Support was added.

The 1.4.x series also added support for MongoDB 2.4.x.

The most important improvements however deal with the handling of replica sets, especially nodes that timeout and nodes that are unreachable for various reasons. Besides the improvements to replica set handling, this release addresses issues with read preferences through mongos nodes. It also adds support for SSL enabled connections as well as journal and fsync connection string options.

MongoDB PHP Driver 1.3.0

The 1.3 series introduced several major changes to the extension such as completely rewritten connection handling (and removal of the pooling mechanism), support for ReadPreferences and change the default WriteConcerns to be acknowledged by introducing a new class MongoClient which serves as a replacement class for the now deprecated Mongo class.

The driver now also supports connecting to multiple mongos instances (the Mongo Shard router) for loadbalancing.

Other enhancements include improved logging for easier connection handling debugging with MongoLog and support for the » Aggregation Framework via the MongoCollection::aggregate() method.

Changes to existing methods

Following is a list of all improvements to existing methods since their inception.

Version | Function | Description
1.6.0 | MongoDB::getCollectionNames | Changed first parameter to be an array of options. Pre-1.6.0, the first parameter was a boolean indicating the "includeSystemCollections" option.
 | MongoDB::listCollections | Changed first parameter to be an array of options. Pre-1.6.0, the first parameter was a boolean indicating the "includeSystemCollections" option.
1.5.0 | MongoCollection::aggregate | Added optional options argument
 | MongoCollection::batchInsert | Added the "wTimeoutMS" option, which replaces "wtimeout". Emits E_DEPRECATED when "wtimeout" is used. Added the "socketTimeoutMS" option, which replaces "timeout". Emits E_DEPRECATED when "timeout" is used. Emits E_DEPRECATED when "safe" is used.
 | MongoCollection::ensureIndex | Renamed the "wtimeout" option to "wTimeoutMS". Emits E_DEPRECATED when "wtimeout" is used. Renamed the "timeout" option to "socketTimeoutMS". Emits E_DEPRECATED when "timeout" is used. Emits E_DEPRECATED when "safe" is used.
 | MongoCollection::findOne | Added optional options argument.
 | MongoCollection::group | Added "maxTimeMS" option.
 | MongoCollection::toIndexString | This method has been deprecated.
 | MongoCollection::update | Added the "wTimeoutMS" option, which replaces "wtimeout". Emits E_DEPRECATED when "wtimeout" is used. Added the "socketTimeoutMS" option, which replaces "timeout". Emits E_DEPRECATED when "timeout" is used. Emits E_DEPRECATED when "safe" is used.
 | MongoCursor::slaveOkay | This method has been deprecated in favour of MongoCursor::setReadPreference and .
1.4.5 | MongoCursor::batchSize | Before 1.4.5, this method would throw an MongoCursorException if the cursor had already started iterating.
1.4.0 | MongoCursor::hint | The index argument now supports index names as string values. In versions before 1.4.0, only array or object values were accepted.
 | MongoCursor::setFlag | Support for flag 3 (OPLOG_REPLAY) is added. Versions before 1.4.0 would throw a warning saying that the flag is unsupported.
 | MongoDB::createCollection | 1.4.0以前的版本里，所有选项都是这个方法的参数。之前版本这个方法的签名是这样的： public MongoCollectionMongoDB::createCollection stringname boolcappedFALSE intsize0 intmax0 参数的意义与现在版本的 options 参数相同。
 | MongoId::__construct | 传入无效字符将抛出异常
1.3.4 | MongoClient::__construct | 添加了 "connectTimeoutMS" 和 "socketTimeoutMS" 选项。
 | MongoCollection::batchInsert | Added "wtimeout" option.
 | MongoCollection::ensureIndex | Added "wtimeout" option.
 | MongoCollection::update | Added "wtimeout" option.
1.3.3 | MongoClient::getReadPreference | 返回的值修改为兼容 MongoClient::setReadPreference。 type 的值从数组改成字符串，删除了 type_string，并且 tagsets 现在以键值表示的标签而不是冒号分隔的字符串。
 | MongoCollection::getReadPreference | The return value has changed to be consistent with MongoCollection::setReadPreference. The type value was changed from a number to a string, type_string was removed, and tagsets now expresses tags as key/value pairs instead of colon-delimited strings.
 | MongoDB::getReadPreference | The return value has changed to be consistent with MongoDB::setReadPreference. The type value was changed from a number to a string, type_string was removed, and tagsets now expresses tags as key/value pairs instead of colon-delimited strings.
1.3.0 | MongoClient::close | 在 1.3.0 版本中，为这个函数添加了 connection 参数。 在此之前，直邮写入连接才会被这个方法关闭。
 | MongoClient::__construct | 添加了 "readPreference"、 "readPreferenceTags"、"w" 和 "wTimeout" 选项。
 | MongoCollection::batchInsert | Added "w" option.
 | MongoCollection::ensureIndex | Added "w" option. The options parameter no longer accepts a boolean to signify a unique index. Instead, this now has to be done with array('unique' => true).
 | MongoCollection::insert | options 参数不再接受 boolean 来标识一个确认的写入。 现在，你可以通过 array('w' => 1) 设置（ MongoClient 默认的行为）
 | MongoCollection::remove | options 参数不再接受 boolean 值来代表 "justOne"。 现在，必须使用 array('justOne' => true) 作为替代。
 | MongoCollection::update | Added "w" option. The options parameter no longer accepts a boolean to signify an upsert. Instead, this now has to be done with array('upsert' => true).
 | MongoDB::listCollections | Added the includeSystemCollections parameter.
 | MongoGridFSCursor::key | The document's _id is returned as a string value, since the key should be unique. Pre-1.3.0, filename was returned.
1.2.11 | Mongo::getPoolSize | Emits E_DEPRECATED when used.
 | Mongo::getSlave | Emits E_DEPRECATED when used.
 | Mongo::getSlaveOkay | Emits E_DEPRECATED when used.
 | Mongo::poolDebug | Emits E_DEPRECATED when used.
 | Mongo::setSlaveOkay | Emits E_DEPRECATED when used.
 | Mongo::switchSlave | Emits E_DEPRECATED when used.
 | MongoBinData::__construct | 没有使用第二个参数时产生 E_DEPRECATED。 type 的默认值在近期的功能里可能会改变。
 | MongoCollection::ensureIndex | Emits E_DEPRECATED when options is scalar.
 | MongoCollection::getSlaveOkay | Emits E_DEPRECATED when used.
 | MongoCollection::group | Emits E_DEPRECATED when options is scalar.
 | MongoCollection::remove | 当 options 是 scalar 时产生一个 E_DEPRECATED 警告。
 | MongoCollection::setSlaveOkay | Emits E_DEPRECATED when used.
 | MongoCollection::update | Emits E_DEPRECATED when options is scalar.
 | MongoCursor::doQuery | Emits E_DEPRECATED when used.
 | MongoDB::authenticate | 使用时产生 E_DEPRECATED。 请将验证细节传入到构造器。
 | MongoDB::forceError | Emits E_DEPRECATED when used.
 | MongoDB::getSlaveOkay | Emits E_DEPRECATED when used.
 | MongoDB::prevError | Emits E_DEPRECATED when used.
 | MongoDB::resetError | Emits E_DEPRECATED when used.
 | MongoDB::setSlaveOkay | Emits E_DEPRECATED when used.
 | MongoPool::getSize | Emits E_DEPRECATED when used.
 | MongoPool::info | Emits E_DEPRECATED when used.
 | MongoPool::setSize | Emits E_DEPRECATED when used.
1.2.10 | MongoClient::getHosts | 对非集群的支持。 返回的数组元素现在也包括了 hostname 和 port。
1.2.7 | MongoCollection::batchInsert | Added "continueOnError" option.
1.2.5 | MongoGridFS::storeUpload | Changed second parameter to an array of metadata. Pre-1.2.5, the second parameter was an optional string overriding the filename.
1.2.0 | MongoClient::close | 在版本 1.2.0 之前，这个驱动默认不会使用持久连接，所有连接会在作用域结束时关闭。 由于版本 1.2.0 情况不再如此，所以调用 close 会是一个坏主意，在服务器有较高负载时可能会造成更高的压力。
 | MongoClient::__construct | 添加了 "username" 和 "password" 选项。 移除了 "persist" 选项，所有的连接都是持久的。它仍旧能够使用，但是不起作用。 "persist" 是否应该是持久连接。如果设置了，连接会是持久连接。 字符形式的值将会用于连接的 ID。所以两个以 array("persist" => "foobar") 初始化的 MongoClient 实例会共享一个数据库连接，以 array("persist" => "barbaz")初始化的实例则使用不同的数据库连接。 "replicaSet" 选项现在支持一个字符串，而不是布尔值。
 | MongoCollection::ensureIndex | Added "timeout" option.
 | MongoCollection::insert | 增加了 "timeout" 选项。
 | MongoCollection::remove | 添加 "timeout" 选项。
 | MongoCollection::save | 增加 "timeout" 选项。
 | MongoCollection::update | Added "timeout" option.
 | MongoDB::command | 添加 options 参数，和一个选项:"timeout"。
1.1.0 | MongoCursor::info | Added a number of other fields, including id (the cursor id), at (the driver's counter of which document is current), numReturned (the number returned by the server in the current batch), and server (which server the query was sent to—useful in conjunction with .
1.0.11 | MongoCollection::ensureIndex | The "safe" option will trigger a primary failover, if necessary. MongoException will be thrown if the index name (either generated or set) is longer than 128 bytes.
 | MongoCollection::insert | 如果设置了 "safe"，出现 "not master" 错误时断开连接。
 | MongoCollection::remove | 在设置了 "safe" 之后，将在出现 "not master" 错误时断开连接。
 | MongoCollection::save | 设置 "safe" 时，当出现 "not master" 错误时主动断开连接。
 | MongoCollection::update | Disconnects on "not master" errors if "safe" is set.
1.0.10 | MongoCursor::info | Added started_iterating field, a boolean indicating if cursor is pre- or post-query.
1.0.9 | MongoClient::__construct | 添加了 "replicaSet" 选项。
 | MongoCollection::batchInsert | Added ability to pass integers to the "safe" option, which previously only accepted booleans. Added "fsync" option.
 | MongoCollection::insert | "safe" 选项接受 integer 值，之前只接受 boolean 值。 增加 "fsync" 选项。 如果设置了 "safe" 选项，返回类型改成包含错误信息的 array。 否则，和之前一样返回 boolean。
 | MongoCollection::remove | 添加了 "safe" 选项对 integer 的支持，之前只接受 boolean 值。 添加了 "fsync" 选项。 当使用了 "safe" 选项时将会返回包含错误信息的数组。 否则和之前一样返回一个 boolean。
 | MongoCollection::save | 选项 "safe" 接受 integer 的值，之前仅仅接受 boolean。 增加 "fsync" 选项。
 | MongoCollection::update | Added ability to pass integers to the "safe" option, which previously only accepted booleans. Added "fsync" option. The return type was changed to be an array containing error information if the "safe" option is used. Otherwise, a boolean is returned as before.
1.0.7 | MongoCollection::count | 添加了 limit 和 skip 参数。
1.0.5 | MongoCollection::batchInsert | Added options parameter.
 | MongoCollection::ensureIndex | Added the "name" option to override index name creation.
 | MongoCollection::insert | 修改第二个参数为选项数组。在 1.0.5 之前，第二个参数是 boolean，指示 "safe" 选项。
 | MongoCollection::remove | 修改第二个参数为选项的 array。在 1.0.5 之前，第二个选项是 boolean 值， 代表了 "safe" 选项。
 | MongoCollection::save | 增加 options 参数。
 | MongoCollection::update | Added "safe" option.
1.0.2 | MongoClient::__construct | 修改构造器支持选修数组。在 1.0.2 之前，构造器接受以下参数： server 服务器名。 connect 可选的 boolean 参数指定了构造器是否应该在返回前连接到数据库。默认为 TRUE。 persistent 连接是否应该是持久的。 paired 连接是否应该为 paired 模式。
 | MongoCollection::ensureIndex | Changed options parameter from boolean to array. Pre-1.0.2, the second parameter was an optional boolean value specifying a unique index.
1.0.1 | MongoCollection::insert | 如果设置了 "safe" 选项并且插入失败了，将会抛出 MongoCursorException。
 | MongoCollection::update | Changed options parameter from boolean to array. Pre-1.0.1, the second parameter was an optional boolean value specifying an upsert.
MongoWriteConcernException::getDocument
MongoDB
Mongo


MongoDB driver

Unlike the mongo extension, this extension supports both PHP and HHVM and is developed atop the » libmongoc and » libbson libraries. It provides a minimal API for core driver functionality: commands, queries, writes, connection management, and BSON serialization.

Userland PHP libraries that depend on this extension may provide higher level APIs, such as query builders, individual command helper methods, and GridFS. Application developers should consider using this extension in conjunction with the » MongoDB PHP library, which implements the same higher level APIs found in MongoDB drivers for other languages. This separation of concerns allows the driver to focus on essential features for which an extension implementation is paramount for performance.

  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 预定义常量
  • Tutorials
    • Getting Started with HHVM
    • Using the PHP Library for MongoDB (PHPLIB)
  • Driver Architecture and Internals — Explains the driver architecure, and special features
    • Architecture — Architecture Overview
    • Connections — Connection handling and persistence
    • Persisting Data — Serialization and deserialization of PHP variables into MongoDB
  • Security
    • Request Injection Attacks
    • Script Injection Attacks
  • MongoDB\Driver — MongoDB driver classes
    • MongoDB\Driver\Manager — The MongoDB\Driver\Manager class
    • MongoDB\Driver\Command — The MongoDB\Driver\Command class
    • MongoDB\Driver\Query — The MongoDB\Driver\Query class
    • MongoDB\Driver\BulkWrite — The MongoDB\Driver\BulkWrite class
    • MongoDB\Driver\WriteConcern — The MongoDB\Driver\WriteConcern class
    • MongoDB\Driver\ReadPreference — The MongoDB\Driver\ReadPreference class
    • MongoDB\Driver\ReadConcern — The MongoDB\Driver\ReadConcern class
    • MongoDB\Driver\Cursor — The MongoDB\Driver\Cursor class
    • MongoDB\Driver\CursorId — The MongoDB\Driver\CursorId class
    • MongoDB\Driver\Server — The MongoDB\Driver\Server class
    • MongoDB\Driver\WriteConcernError — The MongoDB\Driver\WriteConcernError class
    • MongoDB\Driver\WriteError — The MongoDB\Driver\WriteError class
    • MongoDB\Driver\WriteResult — The MongoDB\Driver\WriteResult class
  • MongoDB\BSON — BSON type classes and serialization functions
    • 函数
    • MongoDB\BSON\Binary — The MongoDB\BSON\Binary class
    • MongoDB\BSON\Decimal128 — The MongoDB\BSON\Decimal128 class
    • MongoDB\BSON\Javascript — The MongoDB\BSON\Javascript class
    • MongoDB\BSON\MaxKey — The MongoDB\BSON\MaxKey class
    • MongoDB\BSON\MinKey — The MongoDB\BSON\MinKey class
    • MongoDB\BSON\ObjectID — The MongoDB\BSON\ObjectID class
    • MongoDB\BSON\Regex — The MongoDB\BSON\Regex class
    • MongoDB\BSON\Timestamp — The MongoDB\BSON\Timestamp class
    • MongoDB\BSON\UTCDateTime — The MongoDB\BSON\UTCDateTime class
    • MongoDB\BSON\Type — The MongoDB\BSON\Type interface
    • MongoDB\BSON\Persistable — The MongoDB\BSON\Persistable interface
    • MongoDB\BSON\Serializable — The MongoDB\BSON\Serializable interface
    • MongoDB\BSON\Unserializable — The MongoDB\BSON\Unserializable interface
  • MongoDB\Driver\Exception — Exception classes
    • MongoDB\Driver\Exception\AuthenticationException — The MongoDB\Driver\Exception\AuthenticationException class
    • MongoDB\Driver\Exception\BulkWriteException — The MongoDB\Driver\Exception\BulkWriteException class
    • MongoDB\Driver\Exception\ConnectionException — The MongoDB\Driver\Exception\ConnectionException class
    • MongoDB\Driver\Exception\ConnectionTimeoutException — The MongoDB\Driver\Exception\ConnectionTimeoutException class
    • MongoDB\Driver\Exception\Exception — The MongoDB\Driver\Exception\Exception interface
    • MongoDB\Driver\Exception\ExecutionTimeoutException — The MongoDB\Driver\Exception\ExecutionTimeoutException class
    • MongoDB\Driver\Exception\InvalidArgumentException — The MongoDB\Driver\Exception\InvalidArgumentException class
    • MongoDB\Driver\Exception\LogicException — The MongoDB\Driver\Exception\LogicException class
    • MongoDB\Driver\Exception\RuntimeException — The MongoDB\Driver\Exception\RuntimeException class
    • MongoDB\Driver\Exception\SSLConnectionException — The MongoDB\Driver\Exception\SSLConnectionException class
    • MongoDB\Driver\Exception\UnexpectedValueException — The MongoDB\Driver\Exception\UnexpectedValueException class
    • MongoDB\Driver\Exception\WriteException — The MongoDB\Driver\Exception\WriteException class
更新日志
安装／配置
针对各数据库系统对应的扩展


安装／配置

  • 需求
  • 安装
    • Installing the MongoDB PHP Driver with PECL
    • Installing the MongoDB PHP Driver on OSX with Homebrew
    • Installing the MongoDB PHP Driver on Windows
    • Manually Installing the MongoDB PHP Driver
    • Manually Installing the MongoDB HHVM Driver
  • 运行时配置
  • 预定义常量
MongoDB
需求
MongoDB


需求

The PHP variant of the driver requires PHP 5.4 or higher.

The HHVM variant of the driver requires HHVM 3.9 or higher.

The driver requires » libbson and » libmongoc, and will use bundled versions of both libraries by default.

The driver requires » OpenSSL and will rely on PHP to find its headers (i.e. PHP_SETUP_OPENSSL). If the build process fails to find OpenSSL, check that the OpenSSL development package (e.g. libssl-dev) and » pkg-config are both installed.

» Cyrus SASL is an optional dependency and will be used if available.

安装／配置
安装
安装／配置


安装

Table of Contents

  • Installing the MongoDB PHP Driver with PECL
  • Installing the MongoDB PHP Driver on OSX with Homebrew
  • Installing the MongoDB PHP Driver on Windows
  • Manually Installing the MongoDB PHP Driver
  • Manually Installing the MongoDB HHVM Driver
需求
Installing the MongoDB PHP Driver with PECL
安装／配置


Installing the MongoDB PHP Driver with PECL

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/mongodb

Linux, Unix, and OS X users may run the following command to install the driver:

$ sudo pecl install mongodb

Note: Installing the driver via PECL will use bundled versions of » libbson and » libmongoc and rely on PHP to find OpenSSL (i.e. PHP_SETUP_OPENSSL). If the build process fails to find OpenSSL, check that the OpenSSL development package (e.g. libssl-dev) and » pkg-config are both installed.

Add the following line to your php.ini file:

extension=mongodb.so

安装
Installing the MongoDB PHP Driver on OSX with Homebrew
安装


Installing the MongoDB PHP Driver on OSX with Homebrew

If you are using » Homebrew, the PHP tap includes formulae for installing the driver on various PHP versions.

  • php54-mongodb
  • php55-mongodb
  • php56-mongodb
  • php70-mongodb

For example, you might install the driver for PHP 7.0 using the following command:

$ brew install php70-mongodb

Installing the MongoDB PHP Driver with PECL
Installing the MongoDB PHP Driver on Windows
安装


Installing the MongoDB PHP Driver on Windows

Precompiled binaries for each release are available from » PECL for a variety of combinations of versions, thread safety, and VC libraries. Extract the archive and put php_mongodb.dll in your PHP extension directory ("ext" by default).

Add the following line to your php.ini file:

extension=php_mongodb.dll

Installing the MongoDB PHP Driver on OSX with Homebrew
Manually Installing the MongoDB PHP Driver
安装


Manually Installing the MongoDB PHP Driver

For driver developers and people interested in the latest bugfixes, you can compile the driver from the latest source code on » Github. Run the following commands to clone and build the project:

$ git clone https://github.com/mongodb/mongo-php-driver.git
$ cd mongo-php-driver
$ git submodule sync && git submodule update --init
$ phpize
$ ./configure
$ make all -j 5
$ sudo make install

Note: By default, the driver will use bundled versions of » libbson and » libmongoc and rely on PHP to find OpenSSL (i.e. PHP_SETUP_OPENSSL). If the build process fails to find OpenSSL, check that the OpenSSL development package (e.g. libssl-dev) and » pkg-config are both installed.

The last step will report where mongodb.so has been installed, similar to:

Installing shared extensions:     /usr/lib/php/extensions/debug-non-zts-20151012/

Ensure that the extension_dir option in php.ini points to the directory where mongodb.so was installed. You can query the option by running:

$ php -i | grep extension_dir
  extension_dir => /usr/lib/php/extensions/debug-non-zts-20151012 =>
                   /usr/lib/php/extensions/debug-non-zts-20151012

If the directories differ, either change extension_dir in php.ini or manually move mongodb.so to the correct directory.

Add the following line to your php.ini file:

extension=mongodb.so

Installing the MongoDB PHP Driver on Windows
Manually Installing the MongoDB HHVM Driver
安装


Manually Installing the MongoDB HHVM Driver

At the time of this writing, HHVM does not have a package manager for extensions. Download the latest driver from » GitHub. Alternatively, you may clone the repository to build the latest source code:

$ git clone https://github.com/mongodb/mongo-hhvm-driver.git
$ cd mongo-hhvm-driver
$ git submodule sync && git submodule update --init --recursive

Set up the make files by running:

$ hphpize
$ cmake .

Generate the configure files for the bundled libraries. For this this to work, you need to have the automake, autoconf, and libtool packages installed (e.g. through apt-get).

$ make configlib

Build and install the driver by running:

$ make -j 5
$ sudo make install

Note:

If the hphpize command is not available, you will need to either compile HHVM from source or install the hhvm-dev package (e.g. through apt-get).

The last step will report where mongodb.so has been installed, similar to:

Installing:     /usr/local/hhvm/3.9.1/lib/hhvm/extensions/20150212/mongodb.so

Add the following line to your php.ini file (usually found in "/etc/hhvm"):

hhvm.dynamic_extension_path=/usr/local/hhvm/3.9.1/lib/hhvm/extensions/20150212
hhvm.dynamic_extensions[mongodb]=mongodb.so

Manually Installing the MongoDB PHP Driver
运行时配置
安装


运行时配置

这些函数的行为受 php.ini 中的设置影响。

mongodb 配置选项
名字 | 默认 | 可修改范围 | 更新日志 | Comments
mongodb.debug | "" | PHP_INI_ALL |  | Only available for the PHP driver, and not the HHVM one

这是配置指令的简短说明。

mongodb.debug string

Store full activity debug log in this directory or stream. The special value "stderr" can be provided to write to STDERR.

Note:

Not available for HHVM

Manually Installing the MongoDB HHVM Driver
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

MONGODB_VERSION (string)
x.y.z style version number of the extension
MONGODB_STABILITY (string)
Current stability (alpha/beta/stable)

运行时配置
Tutorials
安装／配置


Tutorials

In this section you will find several tutorials on how to use the MongoDB driver for PHP and HHVM. Because the drivers work exactly the same, they share common usage tutorials, but have a separate installation sections.

  • Getting Started with HHVM
  • Using the PHP Library for MongoDB (PHPLIB)
预定义常量
Getting Started with HHVM
MongoDB


Getting Started with HHVM

In this section you will learn how to set-up NGINX with HHVM and MongoDB. However, this tutorial is not meant to be an all inclusive guide on how to run NGINX and HHVM in a production environment.

In this tutorial, we will be using a Debian system with NGINX installed through apt-get and HHVM installed from source or pre-built packages into /usr/local/hhvm/3.9.1 (with the binary located at /usr/local/hhvm/3.9.1/bin/hhvm).

Installing NGINX

We simply install NGINX by running apt-get install nginx-full. If NGINX fails to start after installation, it is likely that you already have another web server (e.g. Apache) running on the same port. In that case, you will see the following lines in /var/log/nginx/error.log:

2015/09/29 10:19:27 [emerg] 22445#22445: bind() to 0.0.0.0:80 failed (98:Address already in use)
2015/09/29 10:19:27 [emerg] 22445#22445: bind() to [::]:80 failed (98: Address already in use)

To resolve this, you can either change the default port for NGINX or Apache, stop the Apache process with service apache2 stop, or remove Apache entirely with apt-get remove apache2.

Installing HHVM

This tutorial is written from the perspective of an extension developer, so we've installed HHVM from source to faciliate patch development and ensure that debug symbols are available. That said, the folks at Facebook also provide pre-built packages, which is probably what you will want to use in production and development. You can find installation instructions for these packages on the » HHVM Wiki.

You will need to install both the the hhvm and hhvm-dev packages. The latter is needed so that we can compile the MongoDB HHVM extension later on.

If you are compiling HHVM from source, you will need to create /var/run/hhvm:

sudo mkdir -p /var/run/hhvm
sudo chown www-data.www-data /var/run/hhvm
sudo mkdir /etc/hhvm
sudo touch /etc/hhvm/php.ini
# So that you don't have to ``sudo`` to edit the file
sudo chown derick /etc/hhvm/php.ini
# To see whether it actually works
echo "date.timezone=Europe/London" >> /etc/hhvm/php.ini

HHVM should be started as the www-data user. For the purposes of this tutorial, we can run it in the foreground in server mode as follows:

sudo -u www-data -s /usr/local/hhvm/3.9.1/bin/hhvm \
 --mode server \
 -vServer.Type=fastcgi \
 -vServer.FileSocket=/var/run/hhvm/sock

Making NGINX Talk to HHVM

Once HHVM runs, we need to tell NGINX how to talk to HHVM for executing .php files. Although this is perhaps not the cleanest approach, you can add the following snippet to /etc/nginx/sites-enabled/default, just after the location / { ... } section:

location ~ \.php$ {
   fastcgi_pass unix:/var/run/hhvm/sock;
   fastcgi_index index.php;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   include fastcgi_params;
}

After adding that snippet, you should restart NGINX:

sudo service nginx restart

To confirm that everything works so far, we will create a project directory with an index.php file that calls phpinfo():

  • Create the project directory: sudo mkdir -p /var/www/html/my-first-project

  • Change permissions to your user and the www-data group: sudo chown derick.www-data /var/www/html/my-first-project

  • Create the file /var/www/html/my-first-project/index.php. From now on, I will not include the full path /var/www/html/my-first-project/ when I mention file names. Put the following content in this file:

    <?php
    phpinfo    ();
    ?>

Now, in your browser, request the page http://gargleblaster/my-first-project/index.php (but adjust the hostname). This should then show a page starting with "HHVM Version 3.9.1" followed by several tables with information.

Installing the MongoDB Driver for HHVM

The MongoDB driver is the part that links up the PHP in HHVM with the database server. To install and register the driver with HHVM, you need to follow the steps in Manually Installing the MongoDB HHVM Driver.

After you have installed and enabled the extension, HHVM will need to be restarted. If you have HHVM running in the shell from earlier, stop it with Ctrl-C and restart it again as above:

sudo -u www-data -s /usr/local/hhvm/3.9.1/bin/hhvm \
   --mode server \
   -vServer.Type=fastcgi \
   -vServer.FileSocket=/var/run/hhvm/sock

In order to test that the driver is loaded, edit the index.php file and replace its contents with:

<?php
var_dump(phpversion("mongodb"));
?>

This should output something similar to:

string(5) "x.y.z"

Further Reading

Continue this tutorial by jumping to Using the PHP Library for MongoDB (PHPLIB).

Tutorials
Using the PHP Library for MongoDB (PHPLIB)
Tutorials


Using the PHP Library for MongoDB (PHPLIB)

After the initial driver set-up, we will continue explaining how to get started with the MongoDB driver and corresponding userland library to write our first project.

Installing the PHP Library with Composer

The last thing we still need to install to get started on the application itself, is the PHP library.

The library needs to be installed with » Composer, a package manager for PHP. Instructions for installing Composer on various platforms may be found on its website.

Install the library by running:

$ composer require mongodb/mongodb

It will output something akin to:

./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing mongodb/mongodb (1.0.0)
    Downloading: 100%

Writing lock file
Generating autoload files

Composer will create several files: composer.json, composer.lock, and a vendor directory that will contain the library and any other dependencies your project might require.

Using the PHP Library

In addition to managing your dependencies, Composer will also provide you with an autoloader (for those dependencies' classes). Ensure that it is included at the start of your script or in your application's bootstrap code:

<?php
// This path should point to Composer's autoloader
require 'vendor/autoload.php';

With this done, you can now use any of the functionality as described in the » library documentation.

If you have previously used the old driver (i.e. mongo extension), the library's API should look familiar. It contains a » Client class for connecting to MongoDB, and » Database class for database-level operations (e.g. commands, collection management) and a » Collection class for collection-level operations (e.g. » CRUD methods, index management). Various Collection methods have been renamed for clarity, and to be in accordance with a new language-agnostic » specification.

As an example, this is how you insert a document into the beers collection of the demo database:

<?php
require 'vendor/autoload.php'; // include Composer's autoloader

$client = new MongoDB\Client("mongodb://localhost:27017");
$collection = $client->demo->beers;

$result = $collection->insertOne( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );

echo "Inserted with Object ID '{$result->getInsertedId()}'";
?>

Instead of injecting the generated _id field into the input document (as was done in the old driver), it is now made available through the result object returned by the insertOne method.

After insertion, you can of course also query the data that you have just inserted. For that, you use the find method, which returns an iterable cursor:

<?php
require 'vendor/autoload.php'; // include Composer's autoloader

$client = new MongoDB\Client("mongodb://localhost:27017");
$collection = $client->demo->beers;

$result = $collection->find( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );

foreach ($result as $entry) {
    echo $entry['_id'], ': ', $entry['name'], "\n";
}
?>

While it may not be apparent in the examples, BSON documents and arrays are unserialized as type classes in the library by default. These classes ensure that values preserve their type when being serialized back into BSON, which avoids a caveat in the old driver where arrays might turn into documents, and vice versa. Additionally, the classes extend ArrayObject for enhanced usability. You can find more information on how serialization and deserialization between PHP variables and BSON is handled by the driver and library by reading the Persisting Data specification.

Getting Started with HHVM
Driver Architecture and Internals
Tutorials


Explains the driver architecure, and special features

  • Architecture — Architecture Overview
  • Connections — Connection handling and persistence
  • Persisting Data — Serialization and deserialization of PHP variables into MongoDB
    • Serialization to BSON
    • Deserialization from BSON
Using the PHP Library for MongoDB (PHPLIB)
Architecture
MongoDB


Architecture Overview

This section explains how all the different parts of the driver fit together. From the different language runtimes, through the extensions and to the PHP libraries on top. This new architecture has replaced the old mongo extension. We refer to the new one as the mongodb extension.

At the top of this stack sits a pure » PHP library, which we will distribute as a Composer package. This library will provide an API similar to what users have come to expect from the old mongo driver (e.g. CRUD methods, database and collection objects, command helpers) and we expect it to be a common dependency for most applications built with MongoDB. This library will also implement common » specifications, in the interest of improving API consistency across all of the » drivers maintained by MongoDB (and hopefully some community drivers, too).

Sitting below that library we have the lower level drivers—one per platform. These extensions will effectively form the glue between PHP and HHVM and our system libraries (» libmongoc and » libbson). These extensions will expose an identical public API for the most essential and performance-sensitive functionality:

  • Connection management
  • BSON encoding and decoding
  • Object document serialization (to support ODM libraries)
  • Executing commands and write operations
  • Handling queries and cursors

By decoupling the driver internals and a high-level API into extensions and PHP libraries, respectively, we hope to reduce our maintainence burden and allow for faster iteration on new features. As a welcome side effect, this also makes it easier for anyone to contribute to the driver. Additionally, an identical public API for these extensions will make it that much easier to port an application across PHP runtimes, whether the application uses the low-level driver directly or a higher-level PHP library.

» GridFS is a great example of why we chose this direction. Although we implemented GridFS in C for our old mongo driver, it is actually quite a high-level specification. Its API is just an abstraction for accessing two collections: files (i.e. metadata) and chunks (i.e. blocks of data). Likewise, all of the syntactic sugar found in the old mongo driver, such as processing uploaded files or exposing GridFS files as PHP streams, can be implemented in pure PHP. Provided we have performant methods for reading from and writing to GridFS' collections - and thanks to our low level extensions, we will - shifting this API to PHP is win-win.

Earlier I mentioned that we expect the PHP library to be a common dependency for most applications, but not all. Some users may prefer to stick to the no-frills API offered by the extensions, or create their own high-level abstraction (akin to » Doctrine MongoDB for the old mongo driver). Future libraries could include a PHP library geared for MongoDB administration, which provides an API for various user management and ops commands. The next major version of » Doctrine MongoDB ODM will likely also sit directly atop the extensions.

While we will continue to maintain and support the old mongo driver and its users for the foreseeable future, we invite everyone to use the next-generation driver and consider it for any new projects going forward. You can find all of the essential components across GitHub and JIRA:

Driver Source Code and JIRA Locations
Project | GitHub | JIRA
PHP Library | » mongodb/mongo-php-library | » PHPLIB
PHP 5 and PHP 7 Driver (phongo) | » mongodb/mongo-php-driver | » PHPC
HHVM Driver (hippo) | » mongodb/mongo-hhvm-driver | » HHVM

The existing » PHP project in JIRA will remain open for reporting bugs against the old mongo driver, but we would ask that you use the new projects above for anything pertaining to our next-generation drivers.

Driver Architecture and Internals
Connections
Driver Architecture and Internals


Connection handling and persistence

Tip

On Unix platforms, the MongoDB driver is sensitive to scripts that use the fork() system call without also calling exec(). Users are advised not to re-use MongoDB\Driver\Manager instances in a forked child process.

Connection and topology persistence (PHP and HHVM versions since 1.2.0)

All versions of the driver since 1.2.0 persist the » libmongoc client object in the PHP worker process, which allows it to re-use database connections, authentication states, and topology information across multiple requests.

When MongoDB\Driver\Manager::__construct() is invoked, a hash is created from its arguments (i.e. URI string and array options). The driver will attempt to find a previously persisted » libmongoc client object for that hash. If an existing client cannot be found for the hash, a new client will be created (and persisted for future use).

Each client contains its own database connections and a view of the server topology (e.g. standalone, replica set, shard cluster). By persisting the client between PHP requests, the driver is able to re-use established database connections and remove the need for » discovering the server topology on each request.

Consider the following example:

<?php

$managers = [
    new MongoDB\Driver\Manager('mongodb://127.0.0.1'),
    new MongoDB\Driver\Manager('mongodb://127.0.0.1'),
    new MongoDB\Driver\Manager('mongodb://127.0.0.1:27017'),
    new MongoDB\Driver\Manager('mongodb://rs1.example.com,rs2.example.com/', ['replicaSet' => 'myReplicaSet']),
];

foreach ($managers as $manager) {
    $manager->executeCommand('test', new MongoDB\Driver\Command(['ping' => 1]));
}

?>

The first two Manager objects will share the same » libmongoc client since their constructor arguments are identical. The third and fourth objects will each use their own client. In total, three clients will be created and the PHP worker executing this script will open two connections to 127.0.0.1 and one connection to each of rs1.example.com and rs2.example.com. If the driver discovers additional members of the replica set after issuing isMaster commands, it will open additional connections to those servers as well.

If the same worker executes the script again in a second request, the three clients will be re-used and no new connections should be made. Depending on how long ago the previous request was served, the driver may need to issue additional isMaster commands to update its view of the topologies.

Socket persistence (PHP versions before 1.2.0)

Versions of the PHP driver before 1.2.0 utilize PHP's Streams API for database connections, using an API within » libmongoc to designate custom handlers for socket communication; however, a new libmongoc client is created for each MongoDB\Driver\Manager. As a result, the driver persists individual database connections but not authentication state or topology information. This means that the driver needs to issue commands at the start of each request to authenticate and » discover the server topology.

Database connections are persisted by a hash derived from the server's host, port, and the URI string used to construct the MongoDB\Driver\Manager. The constructor's array options are not included in this hash.

Note: Versions of the driver >= 1.1.8 and < 1.2.0 do not persist sockets for SSL connections. See » PHPC-720 for additional information.

Despite its shortcomings with persisting SSL connections when and topology information, this version of the driver supports all SSL context options since it uses PHP's Streams API.

No persistence (HHVM versions before 1.2.0)

Versions of the HHVM driver before 1.2.0 do not persist sockets, authentication state, or topology information. Socket communication uses » libmongoc entirely.

Architecture
Persisting Data
Driver Architecture and Internals


Serialization and deserialization of PHP variables into MongoDB

Table of Contents

  • Serialization to BSON
  • Deserialization from BSON

This document discusses the methods how compound structures (documents, arrays, objects) are persisted through the drivers. And how they are brought back into PHP land.

Connections
Serialization to BSON
Driver Architecture and Internals


Serialization to BSON

Arrays

If an array is a packed array — i.e. the keys start at 0 and are sequential without gaps: BSON array.

If the array is not packed — i.e. having associative (string) keys, the keys don't start at 0, or when there are gaps:: BSON object

A top-level (root) document, always serializes as a BSON document.

Examples

These serialize as a BSON array:

[ 8, 5, 2, 3 ] => [ 8, 5, 2, 3 ]
[ 0 => 4, 1 => 9 ] => [ 4, 9 ]

These serialize as a BSON document:

[ 0 => 1, 2 => 8, 3 => 12 ] => { "0" : 1, "2" : 8, "3" : 12 }
[ "foo" => 42 ] => { "foo" : 42 }
[ 1 => 9, 0 => 10 ] => { "1" : 9, "0" : 10 }

Note that the five examples are extracts of a full document, and represent only one value inside a document.

Objects

If an object is of the stdClass class, serialize as a BSON document.

If an object is a supported class that implements MongoDB\BSON\Type, then use the BSON serialization logic for that specific type. MongoDB\BSON\Type instances (excluding MongoDB\BSON\Serializable may only be serialized as a document field value. Attempting to serialize such an object as a root document will throw a MongoDB\Driver\Exception\UnexpectedValueException

If an object is of an unknown class implementing the MongoDB\BSON\Type interface, then throw a MongoDB\Driver\Exception\UnexpectedValueException

If an object is of any other class, without implementing any special interface, serialize as a BSON document. Keep only public properties, and ignore protected and private properties.

If an object is of a class that implements the MongoDB\BSON\Serializable interface, call MongoDB\BSON\Serializable::bsonSerialize() and use the returned array or stdClass to serialize as a BSON document or array. The BSON type will be determined by the following:

  1. Root documents must be serialized as a BSON document.

  2. MongoDB\BSON\Persistable objects must be serialized as a BSON document.

  3. If MongoDB\BSON\Serializable::bsonSerialize() returns a packed array, serialize as a BSON array.

  4. If MongoDB\BSON\Serializable::bsonSerialize() returns a non-packed array or stdClass, serialize as a BSON document.

  5. If MongoDB\BSON\Serializable::bsonSerialize() did not return an array or stdClass, throw an MongoDB\Driver\Exception\UnexpectedValueException exception.

If an object is of a class that implements the MongoDB\BSON\Persistable interface (which implies MongoDB\BSON\Serializable obtain the properties in a similar way as in the previous paragraphs, but also add an additional property __pclass as a Binary value, with subtype 0x80 and data bearing the fully qualified class name of the object that is being serialized.

The __pclass property is added to the array or object returned by MongoDB\BSON\Serializable::bsonSerialize(), which means it will overwrite any __pclass key/property in the MongoDB\BSON\Serializable::bsonSerialize() return value. If you want to avoid this behaviour and set your own __pclass value, you must not implement MongoDB\BSON\Persistable and should instead implement MongoDB\BSON\Serializable directly.

Examples

<?php

class stdClass {
  public $foo = 42;
} // => { "foo" : 42 }

class MyClass {
  public $foo = 42;
  protected $prot = "wine";
  private $fpr = "cheese";
} // => { "foo" : 42 }

class AnotherClass1 implements MongoDB\BSON\Serializable {
  public $foo = 42;
  protected $prot = "wine";
  private $fpr = "cheese";
  function bsonSerialize() {
      return [ 'foo' => $this->foo, 'prot' => $this->prot ];
  }
} // => { "foo" : 42, "prot" : "wine" }

class AnotherClass2 implements MongoDB\BSON\Serializable {
  public $foo = 42;
  function bsonSerialize() {
      return $this;
  }
} // => MongoDB\Driver\Exception\UnexpectedValueException("bsonSerialize() did not return an array or stdClass")

class AnotherClass3 implements MongoDB\BSON\Serializable {
  private $elements = [ 'foo', 'bar' ];
  function bsonSerialize() {
      return $this->elements;
  }
} // => { "0" : "foo", "1" : "bar" }

class ContainerClass implements MongoDB\BSON\Serializable {
  public $things = AnotherClass4 implements MongoDB\BSON\Serializable {
    private $elements = [ 0 => 'foo', 2 => 'bar' ];
    function bsonSerialize() {
      return $this->elements;
    }
  }
  function bsonSerialize() {
      return [ 'things' => $this->things ];
  }
} // => { "things" : { "0" : "foo", "2" : "bar" } }

class ContainerClass implements MongoDB\BSON\Serializable {
  public $things = AnotherClass5 implements MongoDB\BSON\Serializable {
    private $elements = [ 0 => 'foo', 2 => 'bar' ];
    function bsonSerialize() {
      return array_values($this->elements);
    }
  }
  function bsonSerialize() {
      return [ 'things' => $this->things ];
  }
} // => { "things" : [ "foo", "bar" ] }

class ContainerClass implements MongoDB\BSON\Serializable {
  public $things = AnotherClass6 implements MongoDB\BSON\Serializable {
    private $elements = [ 'foo', 'bar' ];
    function bsonSerialize() {
      return (object) $this->elements;
    }
  }
  function bsonSerialize() {
      return [ 'things' => $this->things ];
  }
} // => { "things" : { "0" : "foo", "1" : "bar" } }

class UpperClass implements MongoDB\BSON\Persistable {
  public $foo = 42;
  protected $prot = "wine";
  private $fpr = "cheese";
  function bsonSerialize() {
      return [ 'foo' => $this->foo, 'prot' => $this->prot ];
  }
} // => { "foo" : 42, "prot" : "wine", "__pclass" : { "$type" : "80", "$binary" : "VXBwZXJDbGFzcw==" } }
Persisting Data
Deserialization from BSON
Persisting Data


Deserialization from BSON

For compound types, there are three data types:

root

refers to the top-level BSON document only

document

refers to embedded BSON documents only

array

refers to a BSON array

Each of those three data types can be mapped against different PHP types. The possible mapping values are:

not set or NULL (the is the default)

  • A BSON array will be deserialized as a PHP array.

  • A BSON document (root or embedded) without a __pclass property [1] becomes a PHP stdClass object, with each BSON document key set as a public stdClass property.

  • A BSON document (root or embedded) with a __pclass property [1] becomes a PHP object of the class name as defined by the __pclass property.

    If the named class implements the MongoDB\BSON\Persistable interface, then the properties of the BSON document, including the __pclass property, are sent as an associative array to the MongoDB\BSON\Unserializable::bsonUnserialize() function to initialise the object's properties.

    If the named class does not exist or does not implement the MongoDB\BSON\Persistable interface, stdClass will be used and each BSON document key (including __pclass) will be set as a public stdClass property.

"array"

Turns a BSON array or BSON document into a PHP array. There will be no special treatment of a __pclass property [1], but it may be set as an element in the returned array if it was present in the BSON document.

"object" or "stdClass"

Turns a BSON array or BSON document into a stdClass object. There will be no special treatment of a __pclass property [1], but it may be set as a public property in the returned object if it was present in the BSON document.

any other string

Defines the class name that the BSON array or BSON object should be deserialized as. For BSON objects that include __pclass properties, that class will take priority.

If the named class does not exist, is not concrete (i.e. it is abstract or an interface), or does not implement MongoDB\BSON\Unserializable then an MongoDB\Driver\Exception\InvalidArgumentException exception is thrown.

If the BSON object has a __pclass property and that class exists and implements MongoDB\BSON\Persistable it will supersede the class provided in the type map.

The properties of the BSON document, including the __pclass property if it exists, will be sent as an associative array to the MongoDB\BSON\Unserializable::bsonUnserialize() function to initialise the object's properties.

TypeMaps

TypeMaps can be set through the MongoDB\Driver\Cursor::setTypeMap() method on a MongoDB\Driver\Cursor object, or the $typeMap argument of MongoDB\BSON\toPHP(). Each of the three classes (root, document and array) can be individually set.

If the value in the map is NULL, it means the same as the default value for that item.

Examples

These examples use the following classes:

MyClass

which does not implement any interface

YourClass

which implements MongoDB\BSON\Unserializable

OurClass

which implements MongoDB\BSON\Persistable

TheirClass

which extends OurClass

The MongoDB\BSON\Unserializable::bsonUnserialize() method of YourClass, OurClass, TheirClass iterate over the array and set the properties without modifications. It also sets the $unserialized property to true:

<?php

function bsonUnserialize( array $map )
{
    foreach ( $map as $k => $value )
    {
        $this->$k = $value;
    }
    $this->unserialized = true;
}

/* typemap: [] (all defaults) */
{ "foo": "yes", "bar" : false }
  -> stdClass { $foo => 'yes', $bar => false }

{ "foo": "no", "array" : [ 5, 6 ] }
  -> stdClass { $foo => 'no', $array => [ 5, 6 ] }

{ "foo": "no", "obj" : { "embedded" : 3.14 } }
  -> stdClass { $foo => 'no', $obj => stdClass { $embedded => 3.14 } }

{ "foo": "yes", "__pclass": "MyClass" }
  -> stdClass { $foo => 'yes', $__pclass => 'MyClass' }

{ "foo": "yes", "__pclass": { "$type" : "80", "$binary" : "MyClass" } }
  -> stdClass { $foo => 'yes', $__pclass => Binary(0x80, 'MyClass') }

{ "foo": "yes", "__pclass": { "$type" : "80", "$binary" : "YourClass") }
  -> stdClass { $foo => 'yes', $__pclass => Binary(0x80, 'YourClass') }

{ "foo": "yes", "__pclass": { "$type" : "80", "$binary" : "OurClass") }
  -> OurClass { $foo => 'yes', $__pclass => Binary(0x80, 'OurClass'), $unserialized => true }

{ "foo": "yes", "__pclass": { "$type" : "44", "$binary" : "YourClass") }
  -> stdClass { $foo => 'yes', $__pclass => Binary(0x44, 'YourClass') }

/* typemap: [ "root" => "MissingClass" ] */
{ "foo": "yes" }
  -> MongoDB\Driver\Exception\InvalidArgumentException("MissingClass does not exist")

/* typemap: [ "root" => "MyClass" ] */
{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MyClass" } }
  -> MongoDB\Driver\Exception\InvalidArgumentException("MyClass does not implement Unserializable interface")

/* typemap: [ "root" => "MongoDB\BSON\Unserializable" ] */
{ "foo": "yes" }
  -> MongoDB\Driver\Exception\InvalidArgumentException("Unserializable is not a concrete class")

/* typemap: [ "root" => "YourClass" ] */
{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MongoDB\BSON\Unserializable" } }
  -> YourClass { $foo => "yes", $__pclass => Binary(0x80, "MongoDB\BSON\Unserializable"), $unserialized => true }

/* typemap: [ "root" => "YourClass" ] */
{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MyClass" } }
  -> YourClass { $foo => "yes", $__pclass => Binary(0x80, "MyClass"), $unserialized => true }

/* typemap: [ "root" => "YourClass" ] */
{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "OurClass" } }
  -> OurClass { $foo => "yes", $__pclass => Binary(0x80, "OurClass"), $unserialized => true }

/* typemap: [ "root" => "YourClass" ] */
{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "TheirClass" } }
  -> TheirClass { $foo => "yes", $__pclass => Binary(0x80, "TheirClass"), $unserialized => true }

/* typemap: [ "root" => "OurClass" ] */
{ foo: "yes", "__pclass" : { "$type": "80", "$binary": "TheirClass" } }
  -> TheirClass { $foo => "yes", $__pclass => Binary(0x80, "TheirClass"), $unserialized => true }

/* typemap: [ 'root' => 'YourClass' ] */
{ foo: "yes", "__pclass" : { "$type": "80", "$binary": "YourClass" } }
  -> YourClass { $foo => 'yes', $__pclass => Binary(0x80, 'YourClass'), $unserialized => true }

/* typemap: [ 'root' => 'array', 'document' => 'array' ] */
{ "foo": "yes", "bar" : false }
  -> [ "foo" => "yes", "bar" => false ]

{ "foo": "no", "array" : [ 5, 6 ] }
  -> [ "foo" => "no", "array" => [ 5, 6 ] ]

{ "foo": "no", "obj" : { "embedded" : 3.14 } }
  -> [ "foo" => "no", "obj" => [ "embedded => 3.14 ] ]

{ "foo": "yes", "__pclass": "MyClass" }
  -> [ "foo" => "yes", "__pclass" => "MyClass" ]

{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "MyClass" } }
  -> [ "foo" => "yes", "__pclass" => Binary(0x80, "MyClass") ]

{ "foo": "yes", "__pclass" : { "$type": "80", "$binary": "OurClass" } }
  -> [ "foo" => "yes", "__pclass" => Binary(0x80, "OurClass") ]

/* typemap: [ 'root' => 'object', 'document' => 'object' ] */
{ "foo": "yes", "__pclass": { "$type": "80", "$binary": "MyClass" } }
  -> stdClass { $foo => "yes", "__pclass" => Binary(0x80, "MyClass") }

Serialization to BSON
Security
Persisting Data


Security

  • Request Injection Attacks
  • Script Injection Attacks
Deserialization from BSON
Request Injection Attacks
MongoDB


Request Injection Attacks

If you are passing $_GET (or $_POST) parameters to your queries, make sure that they are cast to strings first. Users can insert associative arrays in GET and POST requests, which could then become unwanted $-queries.

A fairly innocuous example: suppose you are looking up a user's information with the request http://www.example.com?username=bob. Your application creates the query $q = new \MongoDB\Driver\Query( [ 'username' => $_GET['username'] ]).

Someone could subvert this by getting http://www.example.com?username[$ne]=foo, which PHP will magically turn into an associative array, turning your query into $q = new \MongoDB\Driver\Query( [ 'username' => [ '$ne' => 'foo' ] ] ), which will return all users not named "foo" (all of your users, probably).

This is a fairly easy attack to defend against: make sure $_GET and $_POST parameters are the type you expect before you send them to the database. PHP has the filter_var() function to assist with this.

Note that this type of attack can be used with any database interaction that locates a document, including updates, upserts, deletes, and findAndModify commands.

See » the main documentation for more information about SQL-injection-like issues with MongoDB.

Security
Script Injection Attacks
Security


Script Injection Attacks

If you are using JavaScript, make sure that any variables that cross the PHP- to-JavaScript boundry are passed in the scope field of MongoDB\BSON\Javascript, not interpolated into the JavaScript string. This can come up when using $where clauses in queries, mapReduce and group commands, and any other time you may pass JavaScript into the database.

For example, suppose we have some JavaScript to greet a user in the database logs. We could do:

<?php
$m = new MongoDB\Driver\Manager;

// Don't do this!!!
$username = $_GET['field'];

$cmd = new \MongoDB\Driver\Command( [
    'eval' => "print('Hello, $username!');"
] );

$r = $m->executeCommand( 'dramio', $cmd );
?>

However, what if a malicious user passes in some JavaScript?

<?php
$m = new MongoDB\Driver\Manager;

// Don't do this!!!
$username = $_GET['field'];
// $username is set to "'); db.users.drop(); print('"

$cmd = new \MongoDB\Driver\Command( [
    'eval' => "print('Hello, $username!');"
] );

$r = $m->executeCommand( 'dramio', $cmd );
?>

Now MongoDB executes the JavaScript string "print('Hello, '); db.users.drop(); print('!');". This attack is easy to avoid: use args to pass variables from PHP to JavaScript:

<?php
$m = new MongoDB\Driver\Manager;

$_GET['field'] = 'derick';
$args = [ $_GET['field'] ];

$cmd = new \MongoDB\Driver\Command( [
    'eval' => "function greet(username) { print('Hello, ' + username + '!'); }",
    'args' => $args,
] );

$r = $m->executeCommand( 'dramio', $cmd );
?>

This adds an argument to the JavaScript scope, which gets used as argument for the greet function. Now if someone tries to send malicious code, MongoDB will harmlessly print Hello, '); db.dropDatabase(); print('!.

Using arguments helps to prevent malicious input from being executed by the database. However, you must make sure that your code does not turn around and execute the input anyway! It is best to avoid executing any JavaScript on the server in the first place.

You are strongly recommended to stay clear of the » $where clause with queries, as it impacts performance significantly. Where possible, use either normal query operators, or the » Aggregation Framework.

As alternative to » MapReduce, which uses JavaScript, consider using the » Aggregation Framework. Unlike Map/Reduce, it uses an idiomatic language to construct queries, without having to write, and use, the slower JavaScript approach that Map/Reduce requires.

The » eval command has been deprecated since MongoDB 3.0, and should also be avoided.

Request Injection Attacks
MongoDB\Driver
Security


MongoDB driver classes

  • MongoDB\Driver\Manager — The MongoDB\Driver\Manager class
    • MongoDB\Driver\Manager::__construct — Create new MongoDB Manager
    • MongoDB\Driver\Manager::executeBulkWrite — Execute one or more write operations
    • MongoDB\Driver\Manager::executeCommand — Execute a database command
    • MongoDB\Driver\Manager::executeQuery — Execute a database query
    • MongoDB\Driver\Manager::getReadConcern — Return the ReadConcern for the Manager
    • MongoDB\Driver\Manager::getReadPreference — Return the ReadPreference for the Manager
    • MongoDB\Driver\Manager::getServers — Return the servers to which this manager is connected
    • MongoDB\Driver\Manager::getWriteConcern — Return the WriteConcern for the Manager
    • MongoDB\Driver\Manager::selectServer — Select a server matching a read preference
  • MongoDB\Driver\Command — The MongoDB\Driver\Command class
    • MongoDB\Driver\Command::__construct — Create a new Command
  • MongoDB\Driver\Query — The MongoDB\Driver\Query class
    • MongoDB\Driver\Query::__construct — Construct new Query
  • MongoDB\Driver\BulkWrite — The MongoDB\Driver\BulkWrite class
    • MongoDB\Driver\BulkWrite::__construct — Create a new BulkWrite
    • MongoDB\Driver\BulkWrite::count — Count number of write operations in the bulk
    • MongoDB\Driver\BulkWrite::delete — Add a delete operation to the bulk
    • MongoDB\Driver\BulkWrite::insert — Add an insert operation to the bulk
    • MongoDB\Driver\BulkWrite::update — Add an update operation to the bulk
  • MongoDB\Driver\WriteConcern — The MongoDB\Driver\WriteConcern class
    • MongoDB\Driver\WriteConcern::bsonSerialize — Returns an object for BSON serialization
    • MongoDB\Driver\WriteConcern::__construct — Construct immutable WriteConcern
    • MongoDB\Driver\WriteConcern::getJournal — Returns the WriteConcern's "journal" option
    • MongoDB\Driver\WriteConcern::getW — Returns the WriteConcern's "w" option
    • MongoDB\Driver\WriteConcern::getWtimeout — Returns the WriteConcern's "wtimeout" option
  • MongoDB\Driver\ReadPreference — The MongoDB\Driver\ReadPreference class
    • MongoDB\Driver\ReadPreference::bsonSerialize — Returns an object for BSON serialization
    • MongoDB\Driver\ReadPreference::__construct — Construct immutable ReadPreference
    • MongoDB\Driver\ReadPreference::getMaxStalenessSeconds — Returns the ReadPreference's "maxStalenessSeconds" option
    • MongoDB\Driver\ReadPreference::getMode — Returns the ReadPreference's "mode" option
    • MongoDB\Driver\ReadPreference::getTagSets — Returns the ReadPreference's "tagSets" option
  • MongoDB\Driver\ReadConcern — The MongoDB\Driver\ReadConcern class
    • MongoDB\Driver\ReadConcern::bsonSerialize — Returns an object for BSON serialization
    • MongoDB\Driver\ReadConcern::__construct — Construct immutable ReadConcern
    • MongoDB\Driver\ReadConcern::getLevel — Returns the ReadConcern's "level" option
  • MongoDB\Driver\Cursor — The MongoDB\Driver\Cursor class
    • MongoDB\Driver\Cursor::__construct — Create a new Cursor (not used)
    • MongoDB\Driver\Cursor::getId — Returns the ID for this cursor
    • MongoDB\Driver\Cursor::getServer — Returns the server associated with this cursor
    • MongoDB\Driver\Cursor::isDead — Checks if the cursor is still open on the server
    • MongoDB\Driver\Cursor::setTypeMap — Sets a type map to use for BSON unserialization
    • MongoDB\Driver\Cursor::toArray — Returns an array containing all results for this cursor
  • MongoDB\Driver\CursorId — The MongoDB\Driver\CursorId class
    • MongoDB\Driver\CursorId::__construct — Create a new CursorId (not used)
    • MongoDB\Driver\CursorId::__toString — String representation of the cursor ID
  • MongoDB\Driver\Server — The MongoDB\Driver\Server class
    • MongoDB\Driver\Server::__construct — Create a new Server (not used)
    • MongoDB\Driver\Server::executeBulkWrite — Execute one or more write operations on this server
    • MongoDB\Driver\Server::executeCommand — Execute a database command on this server
    • MongoDB\Driver\Server::executeQuery — Execute a database query on this server
    • MongoDB\Driver\Server::getHost — Returns the hostname of this server
    • MongoDB\Driver\Server::getInfo — Returns an array of information about this server
    • MongoDB\Driver\Server::getLatency — Returns the latency of this server
    • MongoDB\Driver\Server::getPort — Returns the port on which this server is listening
    • MongoDB\Driver\Server::getTags — Returns an array of tags describing this server in a replica set
    • MongoDB\Driver\Server::getType — Returns an integer denoting the type of this server
    • MongoDB\Driver\Server::isArbiter — Checks if this server is an arbiter member of a replica set
    • MongoDB\Driver\Server::isHidden — Checks if this server is a hidden member of a replica set
    • MongoDB\Driver\Server::isPassive — Checks if this server is a passive member of a replica set
    • MongoDB\Driver\Server::isPrimary — Checks if this server is a primary member of a replica set
    • MongoDB\Driver\Server::isSecondary — Checks if this server is a secondary member of a replica set
  • MongoDB\Driver\WriteConcernError — The MongoDB\Driver\WriteConcernError class
    • MongoDB\Driver\WriteConcernError::getCode — Returns the WriteConcernError's error code
    • MongoDB\Driver\WriteConcernError::getInfo — Returns additional metadata for the WriteConcernError
    • MongoDB\Driver\WriteConcernError::getMessage — Returns the WriteConcernError's error message
  • MongoDB\Driver\WriteError — The MongoDB\Driver\WriteError class
    • MongoDB\Driver\WriteError::getCode — Returns the WriteError's error code
    • MongoDB\Driver\WriteError::getIndex — Returns the index of the write operation corresponding to this WriteError
    • MongoDB\Driver\WriteError::getInfo — Returns additional metadata for the WriteError
    • MongoDB\Driver\WriteError::getMessage — Returns the WriteError's error message
  • MongoDB\Driver\WriteResult — The MongoDB\Driver\WriteResult class
    • MongoDB\Driver\WriteResult::getDeletedCount — Returns the number of documents deleted
    • MongoDB\Driver\WriteResult::getInsertedCount — Returns the number of documents inserted (excluding upserts)
    • MongoDB\Driver\WriteResult::getMatchedCount — Returns the number of documents selected for update
    • MongoDB\Driver\WriteResult::getModifiedCount — Returns the number of existing documents updated
    • MongoDB\Driver\WriteResult::getServer — Returns the server associated with this write result
    • MongoDB\Driver\WriteResult::getUpsertedCount — Returns the number of documents inserted by an upsert
    • MongoDB\Driver\WriteResult::getUpsertedIds — Returns an array of identifiers for upserted documents
    • MongoDB\Driver\WriteResult::getWriteConcernError — Returns any write concern error that occurred
    • MongoDB\Driver\WriteResult::getWriteErrors — Returns any write errors that occurred
    • MongoDB\Driver\WriteResult::isAcknowledged — Returns whether the write was acknowledged
Script Injection Attacks
MongoDB\Driver\Manager
MongoDB


The MongoDB\Driver\Manager class

(mongodb >=1.0.0)

简介

The MongoDB\Driver\Manager is the main entry point to the extension. It is responsible for maintaining connections to MongoDB (be it standalone server, replica set, or sharded cluster).

No connection to MongoDB is made upon instantiating the Manager. This means the MongoDB\Driver\Manager can always be constructed, even though one or more MongoDB servers are down.

Any write or query can throw connection exceptions as connections are created lazily. A MongoDB server may also become unavailable during the life time of the script. It is therefore important that all actions on the Manager to be wrapped in try/catch statements.

类摘要

final MongoDB\Driver\Manager {
/* 方法 */
 final public __construct
  ([ string $uri = "mongodb://127.0.0.1/
 [, array $uriOptions = []
 [, array $driverOptions = []
]]] )
final public MongoDB\Driver\WriteResult executeBulkWrite ( string $namespace , MongoDB\Driver\BulkWrite $bulk [, MongoDB\Driver\WriteConcern $writeConcern ] )
final public MongoDB\Driver\Cursor executeCommand ( string $db , MongoDB\Driver\Command $command [, MongoDB\Driver\ReadPreference $readPreference ] )
final public MongoDB\Driver\Cursor executeQuery ( string $namespace , MongoDB\Driver\Query $query [, MongoDB\Driver\ReadPreference $readPreference ] )
final public MongoDB\Driver\ReadConcern getReadConcern ( void )
final public MongoDB\Driver\ReadPreference getReadPreference ( void )
final public array getServers ( void )
final public MongoDB\Driver\WriteConcern getWriteConcern ( void )
final public MongoDB\Driver\Server selectServer ( MongoDB\Driver\ReadPreference $readPreference )
}

范例

Example #1 MongoDB\Driver\Manager::__construct() basic example

var_dump()ing a MongoDB\Driver\Manager will print out various details about the manager that are otherwise not normally exposed. This can be useful to debug how the driver views your MongoDB setup, and which options are used.

<?php

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
var_dump($manager);

?>

以上例程的输出类似于：

object(MongoDB\Driver\Manager)#1 (3) {
  ["request_id"]=>
  int(1714636915)
  ["uri"]=>
  string(25) "mongodb://localhost:27017"
  ["cluster"]=>
  array(13) {
    ["mode"]=>
    string(6) "direct"
    ["state"]=>
    string(4) "born"
    ["request_id"]=>
    int(0)
    ["sockettimeoutms"]=>
    int(300000)
    ["last_reconnect"]=>
    int(0)
    ["uri"]=>
    string(25) "mongodb://localhost:27017"
    ["requires_auth"]=>
    int(0)
    ["nodes"]=>
    array(...)
    ["max_bson_size"]=>
    int(16777216)
    ["max_msg_size"]=>
    int(50331648)
    ["sec_latency_ms"]=>
    int(15)
    ["peers"]=>
    array(0) {
    }
    ["replSet"]=>
    NULL
  }
}

Table of Contents

  • MongoDB\Driver\Manager::__construct — Create new MongoDB Manager
  • MongoDB\Driver\Manager::executeBulkWrite — Execute one or more write operations
  • MongoDB\Driver\Manager::executeCommand — Execute a database command
  • MongoDB\Driver\Manager::executeQuery — Execute a database query
  • MongoDB\Driver\Manager::getReadConcern — Return the ReadConcern for the Manager
  • MongoDB\Driver\Manager::getReadPreference — Return the ReadPreference for the Manager
  • MongoDB\Driver\Manager::getServers — Return the servers to which this manager is connected
  • MongoDB\Driver\Manager::getWriteConcern — Return the WriteConcern for the Manager
  • MongoDB\Driver\Manager::selectServer — Select a server matching a read preference
MongoDB\Driver
MongoDB\Driver\Manager::__construct
MongoDB\Driver


Create new MongoDB Manager

MongoDB\Driver\Manager
MongoDB\Driver\Manager::executeBulkWrite
MongoDB\Driver\Manager
PHP Manual

MongoDB\Driver\Manager::__construct

(mongodb >=1.0.0)

MongoDB\Driver\Manager::__construct — Create new MongoDB Manager

说明

 final public MongoDB\Driver\Manager::__construct
  ([ string $uri = "mongodb://127.0.0.1/
 [, array $uriOptions = []
 [, array $driverOptions = []
]]] )

Constructs a new MongoDB\Driver\Manager object with the specified options.

Note: Per the » Server Discovery and Monitoring Specification, this constructor performs no I/O. Connections will be initialized on demand, when the first operation is executed.

Tip

On Unix platforms, the MongoDB driver is sensitive to scripts that use the fork() system call without also calling exec(). Users are advised not to re-use MongoDB\Driver\Manager instances in a forked child process.

参数

uri

A » mongodb:// connection URI:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

For details on supported options, see » Connection String Options in the MongoDB manual. » Connection pool options are not supported, as the PHP driver does not implement connection pools.

The uri is a URL, hence any special characters in its components need to be URL encoded according to » RFC 3986. This is particularly relevant to the username and password, which can often include special characters such as @, :, or %. When connecting via a Unix domain socket, the socket path may contain special characters such as slashes and must be encoded. The rawurlencode() function may be used to encode constituent parts of the URI.

uriOptions

Additional » connection string options, which will overwrite any options with the same name in the uri parameter.

Note: The "authMechanism" and "authMechanismProperties" options are not supported in uriOptions and must be specified in the uri parameter. For additional details, see » Authentication Options in the MongoDB manual and the » Driver Authentication Specification.

uriOptions
Option | Type | Description
appname string

MongoDB 3.4+ has the ability to annotate connections with metadata provided by the connecting client. This metadata is included in the server's logs upon establishing a connection and also recorded in slow query logs when database profiling is enabled.

This option may be used to specify an application name, which will be included in the metadata. The value cannot exceed 128 characters in length.

authSource string

The database name associated with the user's credentials. Defaults to the database component of the connection URI.

For authentication mechanisms that delegate credential storage to other services (e.g. GSSAPI), this should be "$external".

canonicalizeHostname boolean

If TRUE, the driver will resolve the real hostname for the server IP address before authenticating via SASL. Some underlying GSSAPI layers already do this, but the functionality may be disabled in their config (e.g. krb.conf). Defaults to FALSE.

connectTimeoutMS integer

The time in milliseconds to attempt a connection before timing out. Defaults to 10,000 milliseconds.

gssapiServiceName string

Set the Kerberos service name when connecting to Kerberized MongoDB instances. This value must match the service name set on MongoDB instances (i.e. » saslServiceName server parameter). Defaults to "mongodb".

heartbeatFrequencyMS integer

Specifies the interval in milliseconds between the driver's checks of the MongoDB topology, counted from the end of the previous check until the beginning of the next one. Defaults to 60,000 milliseconds.

Per the » Server Discovery and Monitoring Specification, this value cannot be less than 500 milliseconds.

journal boolean

Corresponds to the write concern's journal parameter. If TRUE, writes will require acknowledgement from MongoDB that the operation has been written to the journal. For details, see MongoDB\Driver\WriteConcern.

localThresholdMS integer

The size in milliseconds of the latency window for selecting among multiple suitable MongoDB instances while resolving a read preference. Defaults to 15 milliseconds.

maxStalenessSeconds integer

Corresponds to the read preference's "maxStalenessSeconds". Specifies, in seconds, how stale a secondary can be before the client stops using it for read operations. By default, there is no maximum staleness and clients will not consider a secondary's lag when choosing where to direct a read operation. For details, see MongoDB\Driver\ReadPreference.

If specified, the max staleness must be a signed 32-bit integer greater than or equal to MongoDB\Driver\ReadPreference::SMALLEST_MAX_STALENESS_SECONDS (i.e. 90 seconds).

password | string | The password for the user being authenticated. This option is useful if the password contains special characters, which would otherwise need to be URL encoded for the connection URI.
readConcernLevel | string | Corresponds to the read concern's level parameter. Specifies the level of read isolation. For details, see MongoDB\Driver\ReadConcern.
readPreference string

Corresponds to the read preferences's mode parameter. Defaults to "primary". For details, see MongoDB\Driver\ReadPreference.

Note: This accepts a string value (e.g. "primary", "secondaryPreferred"), unlike MongoDB\Driver\ReadPreference::__construct(), which takes an integer.

readPreferenceTags array

Corresponds to the read preferences's tagSets parameter. Tag sets allow you to target read operations to specific members of a replica set. For details, see MongoDB\Driver\ReadPreference.

Note: When not specified in the URI string, this option is expressed as an array consistent with the format expected by MongoDB\Driver\ReadPreference::__construct().

replicaSet string

Specifies the name of the replica set.

safe boolean

Specifies 1 for the write concern if TRUE, or 0 if FALSE For details, see MongoDB\Driver\WriteConcern.

This option is deprecated and should not be used.

serverSelectionTimeoutMS integer

Specifies how long in milliseconds to block for server selection before throwing an exception. Defaults to 30,000 milliseconds.

serverSelectionTryOnce boolean

When TRUE, instructs the driver to scan the MongoDB deployment exactly once after server selection fails and then either select a server or raise an error. When FALSE, the driver blocks and searches for a server up to the "serverSelectionTimeoutMS" value. Defaults to TRUE.

slaveOk boolean

Specifies "secondaryPreferred" for the read preference mode if TRUE. For details, see MongoDB\Driver\ReadPreference.

This option is deprecated and should not be used.

socketCheckIntervalMS integer

If a socket has not been used recently, the driver must check it via an isMaster command before using it for any operation. Defaults to 5,000 milliseconds.

socketTimeoutMS integer

The time in milliseconds to attempt a send or receive on a socket before timing out. Defaults to 300,000 milliseconds (i.e. five minutes).

ssl boolean

Initiates the connection with TLS/SSL if TRUE. Defaults to FALSE.

username | string | The username for the user being authenticated. This option is useful if the username contains special characters, which would otherwise need to be URL encoded for the connection URI.
w integer|string

Corresponds to the write concern's w parameter. For details, see MongoDB\Driver\WriteConcern.

wTimeoutMS integer|string

Corresponds to the write concern's wtimeout parameter. Specifies a time limit, in milliseconds, for the write concern. For details, see MongoDB\Driver\WriteConcern.

driverOptions

driverOptions
Option | Type | Description
allow_invalid_hostname bool

Disables hostname validation if TRUE. Defaults to FALSE.

Allowing invalid hostnames may expose the driver to a » man-in-the-middle attack.

ca_dir string

Path to a correctly hashed certificate directory. The system certificate store will be used by default.

Falls back to the deprecated "capath" SSL context option if not specified.

ca_file string

Path to a certificate authority file. The system certificate store will be used by default.

Falls back to the deprecated "cafile" SSL context option if not specified.

crl_file | string | Path to a certificate revocation list file.
pem_file string

Path to a PEM encoded certificate to use for client authentication.

Falls back to the deprecated "local_cert" SSL context option if not specified.

pem_pwd string

Passphrase for the PEM encoded certificate (if applicable).

Falls back to the deprecated "passphrase" SSL context option if not specified.

context resource

SSL context options to be used as fallbacks for other driver options (as specified). Note that the driver does not consult the default stream context.

This option is supported for backwards compatibility, but should be considered deprecated.

weak_cert_validation bool

Disables certificate validation if TRUE. Defaults to FALSE

Falls back to the deprecated "allow_self_signed" SSL context option if not specified.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\RuntimeException if the uri format is invalid

更新日志

版本 说明
1.2.0

The uri argument defaults to "mongodb://127.0.0.1/". The default port remains 27017.

Added the "appname" URI option.

Added the "allow_invalid_hostname", "ca_file", "ca_dir", "clr_file", "pem_file", "pem_pwd", and "weak_cert_validation" driver options.

The PHP Streams API is no longer used for socket communication. The "connectTimeoutMS" URI option now defaults to 10 seconds instead of default_socket_timeout in previous versions. Additionally, the driver no longer supports all SSL context options via the "context" driver option.

1.1.0

The uri argument is optional and defaults to "mongodb://localhost:27017/".

范例

Example #1 MongoDB\Driver\Manager::__construct() basic examples

Connecting to standalone MongoDB node:

<?php

$manager = new MongoDB\Driver\Manager("mongodb://example.com:27017");

?>

Connecting to standalone MongoDB node via a Unix domain socket. The socket path may include special characters such as slashes and should be encoded with rawurlencode().

<?php

$manager = new MongoDB\Driver\Manager("mongodb://" . rawurlencode("/tmp/mongodb-27017.sock"));

?>

Connecting to a replica set:

<?php

$manager = new MongoDB\Driver\Manager("mongodb://rs1.example.com,rs2.example.com/?replicaSet=myReplicaSet");

?>

Connecting to a sharded cluster (i.e. one or more mongos instances):

<?php

$manager = new MongoDB\Driver\Manager("mongodb://mongos1.example.com,mongos2.example.com/");

?>

Connecting to MongoDB with authentication credentials for a particular user and database:

<?php

$manager = new MongoDB\Driver\Manager("mongodb://myusername:mypassword@example.com/mydatabase");

?>

Connecting to MongoDB with authentication credentials for a particular user and database, where the username or password includes special characters (e.g. @, :, %). In the following example, the password string myp@ss:w%rd has been manually escaped; however, rawurlencode() may also be used to escape URI components that may contain special characters.

<?php

$manager = new MongoDB\Driver\Manager("mongodb://myusername:myp%40ss%3Aw%25rd@example.com/mydatabase");

?>

Connecting to MongoDB with X509 authentication:

<?php

$manager = new MongoDB\Driver\Manager(
    "mongodb://example.com/?ssl=true&authMechanism=MONGODB-X509",
    [],
    [
        "pem_file" => "/path/to/client.pem",
    ]
);
?>

参见

  • Connection handling and persistence
  • » MongoDB Connection String Format
MongoDB\Driver\Manager
MongoDB\Driver\Manager::executeBulkWrite
MongoDB\Driver\Manager


Execute one or more write operations

MongoDB\Driver\Manager::__construct
MongoDB\Driver\Manager::executeCommand
MongoDB\Driver\Manager
PHP Manual

MongoDB\Driver\Manager::executeBulkWrite

(mongodb >=1.0.0)

MongoDB\Driver\Manager::executeBulkWrite — Execute one or more write operations

说明

final public MongoDB\Driver\WriteResult MongoDB\Driver\Manager::executeBulkWrite ( string $namespace , MongoDB\Driver\BulkWrite $bulk [, MongoDB\Driver\WriteConcern $writeConcern ] )

Executes one or more write operations on the primary server.

A MongoDB\Driver\BulkWrite can be constructed with one or more write operations of varying types (e.g. updates, deletes, and inserts). The driver will attempt to send operations of the same type to the server in as few requests as possible to optimize round trips.

参数

namespace (string)

A fully qualified namespace (e.g. "databaseName.collectionName").

bulk (MongoDB\Driver\BulkWrite)

The MongoDB\Driver\BulkWrite to execute.

writeConcern (MongoDB\Driver\WriteConcern)

Optionally, a MongoDB\Driver\WriteConcern to apply to the write operation. If none is given, the write concern from the MongoDB Connection URI will be used.

返回值

Returns MongoDB\Driver\WriteResult on success.

错误／异常

  • Throws MongoDB\Driver\Exception\BulkWriteException on any write failure (e.g. write error, failure to apply a write concern)
  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
  • Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
  • Throws MongoDB\Driver\Exception\RuntimeException on other errors.

范例

Example #1 MongoDB\Driver\Manager::executeBulkWrite() example

<?php

$bulk = new MongoDB\Driver\BulkWrite();

$bulk->insert(['_id' => 1, 'x' => 1]);
$bulk->insert(['_id' => 2, 'x' => 2]);

$bulk->update(['x' => 2], ['$set' => ['x' => 1]], ['multi' => false, 'upsert' => false]);
$bulk->update(['x' => 3], ['$set' => ['x' => 3]], ['multi' => false, 'upsert' => true]);
$bulk->update(['_id' => 3], ['$set' => ['x' => 3]], ['multi' => false, 'upsert' => true]);

$bulk->insert(['_id' => 4, 'x' => 2]);

$bulk->delete(['x' => 1], ['limit' => 1]);

$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 100);
$result = $manager->executeBulkWrite('db.collection', $bulk, $writeConcern);

printf("Inserted %d document(s)\n", $result->getInsertedCount());
printf("Matched  %d document(s)\n", $result->getMatchedCount());
printf("Updated  %d document(s)\n", $result->getModifiedCount());
printf("Upserted %d document(s)\n", $result->getUpsertedCount());
printf("Deleted  %d document(s)\n", $result->getDeletedCount());

foreach ($result->getUpsertedIds() as $index => $id) {
    printf('upsertedId[%d]: ', $index);
    var_dump($id);
}

/* If the WriteConcern could not be fulfilled */
if ($writeConcernError = $result->getWriteConcernError()) {
    printf("%s (%d): %s\n", $writeConcernError->getMessage(), $writeConcernError->getCode(), var_export($writeConcernError->getInfo(), true));
}

/* If a write could not happen at all */
foreach ($result->getWriteErrors() as $writeError) {
    printf("Operation#%d: %s (%d)\n", $writeError->getIndex(), $writeError->getMessage(), $writeError->getCode());
}
?>

以上例程的输出类似于：

Inserted 3 document(s)
Matched  1 document(s)
Updated  1 document(s)
Upserted 2 document(s)
Deleted  1 document(s)
upsertedId[3]: object(MongoDB\BSON\ObjectID)#5 (1) {
  ["oid"]=>
  string(24) "54d3adc3ce7a792f4d703756"
}
upsertedId[4]: int(3)

参见

  • MongoDB\Driver\BulkWrite
  • MongoDB\Driver\WriteResult
  • MongoDB\Driver\WriteConcern
  • MongoDB\Driver\Server::executeBulkWrite() - Execute one or more write operations on this server
MongoDB\Driver\Manager::__construct
MongoDB\Driver\Manager::executeCommand
MongoDB\Driver\Manager


Execute a database command

MongoDB\Driver\Manager::executeBulkWrite
MongoDB\Driver\Manager::executeQuery
MongoDB\Driver\Manager
PHP Manual

MongoDB\Driver\Manager::executeCommand

(mongodb >=1.0.0)

MongoDB\Driver\Manager::executeCommand — Execute a database command

说明

final public MongoDB\Driver\Cursor MongoDB\Driver\Manager::executeCommand ( string $db , MongoDB\Driver\Command $command [, MongoDB\Driver\ReadPreference $readPreference ] )

Executes command on a server If readPreference is provided, it will be used for server selection; otherwise, the default read preference will be used.

参数

db (string)

The name of the database on which to execute the command.

command (MongoDB\Driver\Command)

The MongoDB\Driver\Command to execute.

readPreference (MongoDB\Driver\ReadPreference)

Optionally, a MongoDB\Driver\ReadPreference to select the server for this operation. If none is given, the read preference from the MongoDB Connection URI will be used.

返回值

Returns MongoDB\Driver\Cursor on success.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
  • Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
  • Throws MongoDB\Driver\Exception\RuntimeException on other errors (e.g. invalid command, issuing a write command to a secondary).

范例

Example #1 MongoDB\Driver\Manager::executeCommand() with a command returning a single result document

<?php

$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$command = new MongoDB\Driver\Command(['ping' => 1]);

try {
    $cursor = $manager->executeCommand('admin', $command);
} catch(MongoDB\Driver\Exception $e) {
    echo $e->getMessage(), "\n";
    exit;
}

/* The ping command returns a single result document, so we need to access the
 * first result in the cursor. */
$response = $cursor->toArray()[0];

var_dump($response);

?>

以上例程会输出：

array(1) {
  ["ok"]=>
  float(1)
}

Example #2 MongoDB\Driver\Manager::executeCommand() with a command returning a cursor

<?php

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1, 'y' => 'foo']);
$bulk->insert(['x' => 2, 'y' => 'bar']);
$bulk->insert(['x' => 3, 'y' => 'bar']);
$manager->executeBulkWrite('db.collection', $bulk);

$command = new MongoDB\Driver\Command([
    'aggregate' => 'collection',
    'pipeline' => [
        ['$group' => ['_id' => '$y', 'sum' => ['$sum' => '$x']]],
    ],
    'cursor' => new stdClass,
]);
$cursor = $manager->executeCommand('db', $command);

/* The aggregate command can optionally return its results in a cursor instead
 * of a single result document. In this case, we can iterate on the cursor
 * directly to access those results. */
foreach ($cursor as $document) {
    var_dump($document);
}

?>

以上例程会输出：

object(stdClass)#6 (2) {
  ["_id"]=>
  string(3) "bar"
  ["sum"]=>
  int(10)
}
object(stdClass)#7 (2) {
  ["_id"]=>
  string(3) "foo"
  ["sum"]=>
  int(2)
}

注释

Note:

This method does not take a MongoDB\Driver\WriteConcern parameter. For write commands (e.g. » findAndModify in MongoDB 3.2+), the write concern should be included in the command document itself.

If a secondary readPreference is used, it is the caller's responsibility to ensure that the command can be executed on a secondary. No validation is done by the driver.

参见

  • MongoDB\Driver\Command
  • MongoDB\Driver\Cursor
  • MongoDB\Driver\ReadPreference
  • MongoDB\Driver\Server::executeCommand() - Execute a database command on this server
MongoDB\Driver\Manager::executeBulkWrite
MongoDB\Driver\Manager::executeQuery
MongoDB\Driver\Manager


Execute a database query

MongoDB\Driver\Manager::executeCommand
MongoDB\Driver\Manager::getReadConcern
MongoDB\Driver\Manager
PHP Manual

MongoDB\Driver\Manager::executeQuery

(mongodb >=1.0.0)

MongoDB\Driver\Manager::executeQuery — Execute a database query

说明

final public MongoDB\Driver\Cursor MongoDB\Driver\Manager::executeQuery ( string $namespace , MongoDB\Driver\Query $query [, MongoDB\Driver\ReadPreference $readPreference ] )

Executes query on a server. If readPreference is provided, it will be used for server selection; otherwise, the default read preference will be used.

参数

namespace (string)

A fully qualified namespace (e.g. "databaseName.collectionName").

query (MongoDB\Driver\Query)

The MongoDB\Driver\Query to execute.

readPreference (MongoDB\Driver\ReadPreference)

Optionally, a MongoDB\Driver\ReadPreference to select the server for this operation. If none is given, the read preference from the MongoDB Connection URI will be used.

返回值

Returns MongoDB\Driver\Cursor on success.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
  • Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
  • Throws MongoDB\Driver\Exception\RuntimeException on other errors (e.g. invalid query operators).

范例

Example #1 MongoDB\Driver\Manager::executeQuery() example

<?php

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);
$bulk->insert(['x' => 2]);
$bulk->insert(['x' => 3]);
$manager->executeBulkWrite('db.collection', $bulk);

$filter = ['x' => ['$gt' => 1]];
$options = [
    'projection' => ['_id' => 0],
    'sort' => ['x' => -1],
];

$query = new MongoDB\Driver\Query($filter, $options);
$cursor = $manager->executeQuery('db.collection', $query);

foreach ($cursor as $document) {
    var_dump($document);
}

?>

以上例程会输出：

object(stdClass)#6 (1) {
  ["x"]=>
  int(3)
}
object(stdClass)#7 (1) {
  ["x"]=>
  int(2)
}

参见

  • MongoDB\Driver\Cursor
  • MongoDB\Driver\Query
  • MongoDB\Driver\ReadPreference
  • MongoDB\Driver\Server::executeQuery() - Execute a database query on this server
MongoDB\Driver\Manager::executeCommand
MongoDB\Driver\Manager::getReadConcern
MongoDB\Driver\Manager


Return the ReadConcern for the Manager

MongoDB\Driver\Manager::executeQuery
MongoDB\Driver\Manager::getReadPreference
MongoDB\Driver\Manager
PHP Manual

MongoDB\Driver\Manager::getReadConcern

(mongodb >=1.1.0)

MongoDB\Driver\Manager::getReadConcern — Return the ReadConcern for the Manager

说明

final public MongoDB\Driver\ReadConcern MongoDB\Driver\Manager::getReadConcern ( void )

Returns the MongoDB\Driver\ReadConcern for the Manager, which is derived from its URI options. This is the default read concern for queries and commands executed on the Manager.

参数

此函数没有参数。

返回值

The MongoDB\Driver\ReadConcern for the Manager.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\Manager::getReadConcern() example

<?php

$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
var_dump($manager->getReadConcern());

$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017/?readConcernLevel=local');
var_dump($manager->getReadConcern());

?>

以上例程的输出类似于：

object(MongoDB\Driver\ReadConcern)#2 (0) {
}
object(MongoDB\Driver\ReadConcern)#1 (1) {
  ["level"]=>
  string(5) "local"
}

参见

  • MongoDB\Driver\ReadConcern
  • MongoDB\Driver\Manager::__construct() - Create new MongoDB Manager
MongoDB\Driver\Manager::executeQuery
MongoDB\Driver\Manager::getReadPreference
MongoDB\Driver\Manager


Return the ReadPreference for the Manager

MongoDB\Driver\Manager::getReadConcern
MongoDB\Driver\Manager::getServers
MongoDB\Driver\Manager
PHP Manual

MongoDB\Driver\Manager::getReadPreference

(mongodb >=1.0.0)

MongoDB\Driver\Manager::getReadPreference — Return the ReadPreference for the Manager

说明

final public MongoDB\Driver\ReadPreference MongoDB\Driver\Manager::getReadPreference ( void )

Returns the MongoDB\Driver\ReadPreference for the Manager, which is derived from its URI options. This is the default read preference for queries and commands executed on the Manager.

参数

此函数没有参数。

返回值

The MongoDB\Driver\ReadPreference for the Manager.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\Manager::getReadPreference() example

<?php

$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
var_dump($manager->getReadPreference());

$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017/?readPreference=secondaryPreferred&readPreferenceTags=dc:ny,rack:1&readPreferenceTags=dc:ny&readPreferenceTags=');
var_dump($manager->getReadPreference());

?>

以上例程的输出类似于：

object(MongoDB\Driver\ReadPreference)#2 (1) {
  ["mode"]=>
  string(7) "primary"
}
object(MongoDB\Driver\ReadPreference)#1 (2) {
  ["mode"]=>
  string(18) "secondaryPreferred"
  ["tags"]=>
  array(3) {
    [0]=>
    object(stdClass)#3 (2) {
      ["dc"]=>
      string(2) "ny"
      ["rack"]=>
      string(1) "1"
    }
    [1]=>
    object(stdClass)#4 (1) {
      ["dc"]=>
      string(2) "ny"
    }
    [2]=>
    object(stdClass)#5 (0) {
    }
  }
}

参见

  • MongoDB\Driver\ReadPreference
  • MongoDB\Driver\Manager::__construct() - Create new MongoDB Manager
MongoDB\Driver\Manager::getReadConcern
MongoDB\Driver\Manager::getServers
MongoDB\Driver\Manager


Return the servers to which this manager is connected

MongoDB\Driver\Manager::getReadPreference
MongoDB\Driver\Manager::getWriteConcern
MongoDB\Driver\Manager
PHP Manual

MongoDB\Driver\Manager::getServers

(mongodb >=1.0.0)

MongoDB\Driver\Manager::getServers — Return the servers to which this manager is connected

说明

final public array MongoDB\Driver\Manager::getServers ( void )

Returns an array of MongoDB\Driver\Server instances to which this manager is connected.

Note:

Since the driver connects to the database lazily, this method may return an empty array if called before executing an operation on the MongoDB\Driver\Manager.

参数

此函数没有参数。

返回值

Returns an array of MongoDB\Driver\Server instances to which this manager is connected.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\Manager::getServers() example

<?php

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");

/* The driver connects to the database server lazily, so Manager::getServers()
 * may initially return an empty array. */
var_dump($manager->getServers());

$command = new MongoDB\Driver\Command(['ping' => 1]);
$manager->executeCommand('db', $command);

var_dump($manager->getServers());

?>

以上例程的输出类似于：

array(0) {
}
array(1) {
  [0]=>
  object(MongoDB\Driver\Server)#3 (10) {
    ["host"]=>
    string(9) "localhost"
    ["port"]=>
    int(27017)
    ["type"]=>
    int(1)
    ["is_primary"]=>
    bool(false)
    ["is_secondary"]=>
    bool(false)
    ["is_arbiter"]=>
    bool(false)
    ["is_hidden"]=>
    bool(false)
    ["is_passive"]=>
    bool(false)
    ["last_is_master"]=>
    array(8) {
      ["ismaster"]=>
      bool(true)
      ["maxBsonObjectSize"]=>
      int(16777216)
      ["maxMessageSizeBytes"]=>
      int(48000000)
      ["maxWriteBatchSize"]=>
      int(1000)
      ["localTime"]=>
      object(MongoDB\BSON\UTCDateTime)#4 (1) {
        ["milliseconds"]=>
        int(1447267964517)
      }
      ["maxWireVersion"]=>
      int(3)
      ["minWireVersion"]=>
      int(0)
      ["ok"]=>
      float(1)
    }
    ["round_trip_time"]=>
    int(554)
  }
}

参见

  • MongoDB\Driver\Server
  • MongoDB\Driver\Manager::selectServer() - Select a server matching a read preference
MongoDB\Driver\Manager::getReadPreference
MongoDB\Driver\Manager::getWriteConcern
MongoDB\Driver\Manager


Return the WriteConcern for the Manager

MongoDB\Driver\Manager::getServers
MongoDB\Driver\Manager::selectServer
MongoDB\Driver\Manager
PHP Manual

MongoDB\Driver\Manager::getWriteConcern

(mongodb >=1.0.0)

MongoDB\Driver\Manager::getWriteConcern — Return the WriteConcern for the Manager

说明

final public MongoDB\Driver\WriteConcern MongoDB\Driver\Manager::getWriteConcern ( void )

Returns the MongoDB\Driver\WriteConcern for the Manager, which is derived from its URI options. This is the default write concern for writes and commands executed on the Manager.

参数

此函数没有参数。

返回值

The MongoDB\Driver\WriteConcern for the Manager.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\Manager::getWriteConcern() example

<?php

$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
var_dump($manager->getWriteConcern());

$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017/?w=majority&wtimeoutMS=2000');
var_dump($manager->getWriteConcern());

?>

以上例程的输出类似于：

object(MongoDB\Driver\WriteConcern)#2 (0) {
}
object(MongoDB\Driver\WriteConcern)#1 (2) {
  ["w"]=>
  string(8) "majority"
  ["wtimeout"]=>
  int(2000)
}

参见

  • MongoDB\Driver\WriteConcern
  • MongoDB\Driver\Manager::__construct() - Create new MongoDB Manager
MongoDB\Driver\Manager::getServers
MongoDB\Driver\Manager::selectServer
MongoDB\Driver\Manager


Select a server matching a read preference

MongoDB\Driver\Manager::getWriteConcern
MongoDB\Driver\Command
MongoDB\Driver\Manager
PHP Manual

MongoDB\Driver\Manager::selectServer

(mongodb >=1.0.0)

MongoDB\Driver\Manager::selectServer — Select a server matching a read preference

说明

final public MongoDB\Driver\Server MongoDB\Driver\Manager::selectServer ( MongoDB\Driver\ReadPreference $readPreference )

Selects a MongoDB\Driver\Server matching readPreference. This may be used to preselect a server in order to perform version checking before executing an operation.

Note:

Unlike MongoDB\Driver\Manager::getServers(), this method will initialize database connections and perform server discovery if necessary. See the » Server Selection Specification for additional information.

参数

readPreference (MongoDB\Driver\ReadPreference)

Optionally, a MongoDB\Driver\ReadPreference to select the server for this operation. If none is given, the read preference from the MongoDB Connection URI will be used.

返回值

Returns an MongoDB\Driver\Server matching the read preference.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
  • Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
  • Throws MongoDB\Driver\Exception\RuntimeException if a server matching the read preference could not be found.

参见

  • MongoDB\Driver\Server
  • MongoDB\Driver\Manager::getServers() - Return the servers to which this manager is connected
  • » Server Selection Specification
MongoDB\Driver\Manager::getWriteConcern
MongoDB\Driver\Command
MongoDB\Driver\Manager


The MongoDB\Driver\Command class

(mongodb >=1.0.0)

简介

The MongoDB\Driver\Command class is a value object that represents a database command.

To provide "Command Helpers" the MongoDB\Driver\Command object should be composed.

类摘要

final MongoDB\Driver\Command {
/* 方法 */
final public __construct ( array|object $document )
}

范例

Example #1 Composing MongoDB\Driver\Command to provide a helper to create collections

<?php
class CreateCollection {
    protected $cmd = array();

    function __construct($collectionName) {
        $this->cmd["create"] = (string)$collectionName;
    }
    function setAutoIndexId($bool) {
        $this->cmd["autoIndexId"] = (bool)$bool;
    }
    function setCappedCollection($maxBytes, $maxDocuments = false) {
        $this->cmd["capped"] = true;
        $this->cmd["size"]   = (int)$maxBytes;

        if ($maxDocuments) {
            $this->cmd["max"] = (int)$maxDocuments;
        }
    }
    function usePowerOf2Sizes($bool) {
        if ($bool) {
            $this->cmd["flags"] = 1;
        } else {
            $this->cmd["flags"] = 0;
        }
    }
    function setFlags($flags) {
        $this->cmd["flags"] = (int)$flags;
    }
    function getCommand() {
        return new MongoDB\Driver\Command($this->cmd);
    }
    function getCollectionName() {
        return $this->cmd["create"];
    }
}

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");

$createCollection = new CreateCollection("cappedCollection");
$createCollection->setCappedCollection(64 * 1024);

try {
    $command = $createCollection->getCommand();
    $cursor = $manager->executeCommand("databaseName", $command);
    $response = $cursor->toArray()[0];
    var_dump($response);

    $collstats = ["collstats" => $createCollection->getCollectionName()];
    $cursor = $manager->executeCommand("databaseName", new MongoDB\Driver\Command($collstats));
    $response = $cursor->toArray()[0];
    var_dump($response);
} catch(MongoDB\Driver\Exception $e) {
    echo $e->getMessage(), "\n";
    exit;
}

?>

以上例程会输出：

object(MongoDB\Driver\Command)#3 (1) {
  ["command"]=>
  array(3) {
    ["create"]=>
    string(16) "cappedCollection"
    ["capped"]=>
    bool(true)
    ["size"]=>
    int(65536)
  }
}
array(1) {
  ["ok"]=>
  float(1)
}
array(16) {
  ["ns"]=>
  string(29) "databaseName.cappedCollection"
  ["count"]=>
  int(0)
  ["size"]=>
  int(0)
  ["numExtents"]=>
  int(1)
  ["storageSize"]=>
  int(65536)
  ["nindexes"]=>
  int(1)
  ["lastExtentSize"]=>
  float(65536)
  ["paddingFactor"]=>
  float(1)
  ["paddingFactorNote"]=>
  string(101) "paddingFactor is unused and unmaintained in 2.8. It remains hard coded to 1.0 for compatibility only."
  ["userFlags"]=>
  int(0)
  ["capped"]=>
  bool(true)
  ["max"]=>
  int(9223372036854775807)
  ["maxSize"]=>
  int(65536)
  ["totalIndexSize"]=>
  int(8176)
  ["indexSizes"]=>
  object(stdClass)#4 (1) {
    ["_id_"]=>
    int(8176)
  }
  ["ok"]=>
  float(1)
}

Table of Contents

  • MongoDB\Driver\Command::__construct — Create a new Command
MongoDB\Driver\Manager::selectServer
MongoDB\Driver\Command::__construct
MongoDB\Driver


Create a new Command

MongoDB\Driver\Command
MongoDB\Driver\Query
MongoDB\Driver\Command
PHP Manual

MongoDB\Driver\Command::__construct

(mongodb >=1.0.0)

MongoDB\Driver\Command::__construct — Create a new Command

说明

final public MongoDB\Driver\Command::__construct ( array|object $document )

参数

document

The complete command to construct

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\Command::__construct() example

<?php

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
$command = new MongoDB\Driver\Command(array("buildinfo" => 1));

try {
    $cursor = $manager->executeCommand("admin", $command);
    $response = $cursor->toArray()[0];
} catch(MongoDB\Driver\Exception $e) {
    echo $e->getMessage(), "\n";
    exit;
}
var_dump($response);

?>

以上例程的输出类似于：

array(13) {
  ["version"]=>
  string(14) "2.8.0-rc2-pre-"
  ["gitVersion"]=>
  string(62) "b743d7158f7642f4da6b7eac8320374b3b88dc2e modules: subscription"
  ["OpenSSLVersion"]=>
  string(25) "OpenSSL 1.0.1f 6 Jan 2014"
  ["sysInfo"]=>
  string(104) "Linux infant 3.16.0-24-generic #32-Ubuntu SMP Tue Oct 28 13:07:32 UTC 2014 x86_64 BOOST_LIB_VERSION=1_49"
  ["loaderFlags"]=>
  string(91) "-fPIC -pthread -Wl,-z,now -rdynamic -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -Wl,-E"
  ["compilerFlags"]=>
  string(301) "-Wnon-virtual-dtor -Woverloaded-virtual -std=c++11 -fPIC -fno-strict-aliasing -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch -pipe -Werror -O3 -Wno-unused-local-typedefs -Wno-unused-function -Wno-deprecated-declarations -Wno-unused-but-set-variable -fno-builtin-memcmp -std=c99"
  ["allocator"]=>
  string(8) "tcmalloc"
  ["versionArray"]=>
  array(4) {
    [0]=>
    int(2)
    [1]=>
    int(8)
    [2]=>
    int(0)
    [3]=>
    int(-8)
  }
  ["javascriptEngine"]=>
  string(2) "V8"
  ["bits"]=>
  int(64)
  ["debug"]=>
  bool(false)
  ["maxBsonObjectSize"]=>
  int(16777216)
  ["ok"]=>
  float(1)
}

参见

  • MongoDB\Driver\Manager::executeCommand() - Execute a database command
  • MongoDB\Driver\Cursor
MongoDB\Driver\Command
MongoDB\Driver\Query
MongoDB\Driver\Command


The MongoDB\Driver\Query class

(mongodb >=1.0.0)

简介

The MongoDB\Driver\Query class is a value object that represents a database query.

类摘要

final MongoDB\Driver\Query {
/* 方法 */
final public __construct ( array|object $filter [, array $queryOptions ] )
}

Table of Contents

  • MongoDB\Driver\Query::__construct — Construct new Query
MongoDB\Driver\Command::__construct
MongoDB\Driver\Query::__construct
MongoDB\Driver


Construct new Query

MongoDB\Driver\Query
MongoDB\Driver\BulkWrite
MongoDB\Driver\Query
PHP Manual

MongoDB\Driver\Query::__construct

(mongodb >=1.0.0)

MongoDB\Driver\Query::__construct — Construct new Query

说明

final public MongoDB\Driver\Query::__construct ( array|object $filter [, array $queryOptions ] )

参数

filter (array|object)

The » query predicate. An empty predicate will match all documents in the collection.

Note: When evaluating query criteria, MongoDB compares types and values according to its own » comparison rules for BSON types, which differs from PHP's comparison and type juggling rules. When matching a special BSON type the query criteria should use the respective BSON class (e.g. use MongoDB\BSON\ObjectID to match an » ObjectID).

queryOptions

queryOptions
Option | Type | Description
allowPartialResults bool

For queries against a sharded collection, returns partial results from the mongos if some shards are unavailable instead of throwing an error.

Falls back to the deprecated "partial" option if not specified.

awaitData | bool | Use in conjunction with the "tailable" option to block a getMore operation on the cursor temporarily if at the end of data rather than returning no data. After a timeout period, the query returns as normal.
batchSize integer

The number of documents to return in the first batch. Defaults to 101. A batch size of 0 means that the cursor will be established, but no documents will be returned in the first batch.

In versions of MongoDB before 3.2, where queries use the legacy wire protocol OP_QUERY, a batch size of 1 will close the cursor irrespective of the number of matched documents.

collation array|object

» Collation allows users to specify language-specific rules for string comparison, such as rules for lettercase and accent marks. When specifying collation, the "locale" field is mandatory; all other collation fields are optional. For descriptions of the fields, see » Collation Document.

If the collation is unspecified but the collection has a default collation, the operation uses the collation specified for the collection. If no collation is specified for the collection or for the operation, MongoDB uses the simple binary comparison used in prior versions for string comparisons.

This option is available in MongoDB 3.4+ and will result in an exception at execution time if specified for an older server version.

comment string

A comment to attach to the query to help interpret and trace query profile data.

Falls back to the deprecated "$comment" modifier if not specified.

exhaust bool

Stream the data down full blast in multiple "more" packages, on the assumption that the client will fully read all data queried. Faster when you are pulling a lot of data and know you want to pull it all down. Note: the client is not allowed to not read all the data unless it closes the connection.

This option is not supported by the find command in MongoDB 3.2+ and will force the driver to use the legacy wire protocol version (i.e. OP_QUERY).

explain bool

If TRUE, the returned MongoDB\Driver\Cursor will contain a single document that describes the process and indexes used to return the query.

Falls back to the deprecated "$explain" modifier if not specified.

This option is not supported by the find command in MongoDB 3.2+ and will only be respected when using the legacy wire protocol version (i.e. OP_QUERY). The » explain command should be used on MongoDB 3.0+.

hint string|array|object

Index specification. Specify either the index name as a string or the index key pattern. If specified, then the query system will only consider plans using the hinted index.

Falls back to the deprecated "hint" option if not specified.

limit integer

The maximum number of documents to return. If unspecified, then defaults to no limit. A limit of 0 is equivalent to setting no limit.

A negative limit is will be interpreted as a positive limit with the "singleBatch" option set to TRUE. This behavior is supported for backwards compatibility, but should be considered deprecated.

max array|object

The exclusive upper bound for a specific index.

Falls back to the deprecated "$max" modifier if not specified.

maxScan integer

Positive integer denoting the maximum number of documents or index keys to scan when executing the query.

Falls back to the deprecated "$maxScan" modifier if not specified.

maxTimeMS integer

The cumulative time limit in milliseconds for processing operations on the cursor. MongoDB aborts the operation at the earliest following interrupt point.

Falls back to the deprecated "$maxTimeMS" modifier if not specified.

min array|object

The inclusive lower bound for a specific index.

Falls back to the deprecated "$min" modifier if not specified.

modifiers | array | » Meta operators modifying the output or behavior of a query. Use of these operators is deprecated in favor of named options.
noCursorTimeout | bool | Prevents the server from timing out idle cursors after an inactivity period (10 minutes).
oplogReplay bool

Internal use for replica sets. To use oplogReplay, you must include the following condition in the filter:

[ 'ts' => [ '$gte' => <timestamp> ] ]
projection | array|object | The » projection specification to determine which fields to include in the returned documents.
returnKey bool

If TRUE, returns only the index keys in the resulting documents. Default value is FALSE. If TRUE and the find command does not use an index, the returned documents will be empty.

Falls back to the deprecated "$returnKey" modifier if not specified.

showRecordId bool

Determines whether to return the record identifier for each document. If TRUE, adds a top-level "$recordId" field to the returned documents.

Falls back to the deprecated "$showDiskLoc" modifier if not specified.

singleBatch | bool | Determines whether to close the cursor after the first batch. Defaults to FALSE.
readConcern MongoDB\Driver\ReadConcern

Specifies the » read concern. The default level is "local".

To use a read concern level of "majority", you must use the WiredTiger storage engine with MongoDB 3.2+ and enable the feature in the server configuration.

skip | integer | Number of documents to skip. Defaults to 0.
slaveOk | bool | Allow query of replica set secondaries
sort array|object

The sort specification for the ordering of the results.

Falls back to the deprecated "$orderby" modifier if not specified.

snapshot bool

Prevents the cursor from returning a document more than once because of an intervening write operation.

Falls back to the deprecated "$snapshot" modifier if not specified.

tailable | bool | Returns a tailable cursor for a capped collection.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

更新日志

版本 | 说明
1.2.0

Added the "allowPartialResults", "collation", "comment", "hint", "max", "maxScan", "maxTimeMS", "min", "returnKey", "showRecordId", and "snapshot" options.

Renamed the "partial" option to "allowPartialResults". For backwards compatibility, "partial" will still be read if "allowPartialResults" is not specified.

Removed the "slaveOk" option, which is obsolete. For queries using the legacy wire protocol OP_QUERY, the driver will set the slaveOk bit as needed in accordance with the » Server Selection Specification.

1.1.0 | Added the "readConcern" option.

范例

Example #1 MongoDB\Driver\Query::__construct() example

<?php
/* Select only documents authord by "bjori" with at least 100 views */
$filter = [
    'author' => 'bjori',
    'views' => [
        '$gte' => 100,
    ],
];

$options = [
    /* Only return the following fields in the matching documents */
    'projection' => [
        'title' => 1,
        'article' => 1,
    ],
    /* Return the documents in descending order of views */
    'sort' => [
        'views' => -1
    ],
);

$query = new MongoDB\Driver\Query($filter, $options);

$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$readPreference = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY);
$cursor = $manager->executeQuery('databaseName.collectionName', $query, $readPreference);

foreach($cursor as $document) {
    var_dump($document);
}

?>

参见

  • MongoDB\Driver\Manager::executeQuery() - Execute a database query
  • MongoDB\Driver\Cursor
MongoDB\Driver\Query
MongoDB\Driver\BulkWrite
MongoDB\Driver\Query


The MongoDB\Driver\BulkWrite class

(mongodb >=1.0.0)

简介

The MongoDB\Driver\BulkWrite collects one or more write operations that should be sent to the server. After adding any number of insert, update, and delete operations, the collection may be executed via MongoDB\Driver\Manager::executeBulkWrite().

Write operations may either be ordered (default) or unordered. Ordered write operations are sent to the server, in the order provided, for serial execution. If a write fails, any remaining operations will be aborted. Unordered operations are sent to the server in an arbitrary order where they may be executed in parallel. Any errors that occur are reported after all operations have been attempted.

类摘要

final MongoDB\Driver\BulkWrite implements Countable {
/* 方法 */
public __construct ([ array $options ] )
public int count ( void )
public void delete ( array|object $filter [, array $deleteOptions ] )
public mixed insert ( array|object $document )
public void update ( array|object $filter , array|object $newObj [, array $updateOptions ] )
}

范例

Example #1 Mixed write operations are grouped by type

Mixed write operations (i.e. inserts, updates, and deletes) will be assembled into typed write commands to be sent sequentially to the server.

<?php

$bulk = new MongoDB\Driver\BulkWrite(['ordered' => true]);
$bulk->insert(['_id' => 1, 'x' => 1]);
$bulk->insert(['_id' => 2, 'x' => 2]);
$bulk->update(['x' => 2], ['$set' => ['x' => 1]]);
$bulk->insert(['_id' => 3, 'x' => 3]);
$bulk->delete(['x' => 1]);

?>

Will result in four write commands (i.e. roundtrips) being executed. Since the operations are ordered, the third insertion cannot be sent until the preceding update is executed.

Example #2 Ordered write operations causing an error

<?php

$bulk = new MongoDB\Driver\BulkWrite(['ordered' => true]);
$bulk->delete([]);
$bulk->insert(['_id' => 1]);
$bulk->insert(['_id' => 2]);
$bulk->insert(['_id' => 3, 'hello' => 'world']);
$bulk->update(['_id' => 3], ['$set' => ['hello' => 'earth']]);
$bulk->insert(['_id' => 4, 'hello' => 'pluto']);
$bulk->update(['_id' => 4], ['$set' => ['hello' => 'moon']]);
$bulk->insert(['_id' => 3]);
$bulk->insert(['_id' => 4]);
$bulk->insert(['_id' => 5]);

$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);

try {
    $result = $manager->executeBulkWrite('db.collection', $bulk, $writeConcern);
} catch (MongoDB\Driver\Exception\BulkWriteException $e) {
    $result = $e->getWriteResult();

    // Check if the write concern could not be fulfilled
    if ($writeConcernError = $result->getWriteConcernError()) {
        printf("%s (%d): %s\n",
            $writeConcernError->getMessage(),
            $writeConcernError->getCode(),
            var_export($writeConcernError->getInfo(), true)
        );
    }

    // Check if any write operations did not complete at all
    foreach ($result->getWriteErrors() as $writeError) {
        printf("Operation#%d: %s (%d)\n",
            $writeError->getIndex(),
            $writeError->getMessage(),
            $writeError->getCode()
        );
    }
} catch (MongoDB\Driver\Exception\Exception $e) {
    printf("Other error: %s\n", $e->getMessage());
    exit;
}

printf("Inserted %d document(s)\n", $result->getInsertedCount());
printf("Updated  %d document(s)\n", $result->getModifiedCount());

?>

以上例程会输出：

Operation#7: E11000 duplicate key error index: db.collection.$_id_ dup key: { : 3 } (11000)
Inserted 4 document(s)
Updated  2 document(s)

If the write concern could not be fullfilled, the example above would output something like:

waiting for replication timed out (64): array (
  'wtimeout' => true,
)
Operation#7: E11000 duplicate key error index: databaseName.collectionName.$_id_ dup key: { : 3 } (11000)
Inserted 4 document(s)
Updated  2 document(s)

If we execute the example above, but allow for unordered writes:

<?php

$bulk = new MongoDB\Driver\BulkWrite(['ordered' => false]);
/* ... */

?>

以上例程会输出：

Operation#7: E11000 duplicate key error index: db.collection.$_id_ dup key: { : 3 } (11000)
Operation#8: E11000 duplicate key error index: db.collection.$_id_ dup key: { : 4 } (11000)
Inserted 5 document(s)
Updated  2 document(s)

参见

  • MongoDB\Driver\Manager::executeBulkWrite()
  • MongoDB\Driver\WriteResult
  • MongoDB\Driver\WriteConcern
  • MongoDB\Driver\WriteConcernError
  • MongoDB\Driver\WriteError

Table of Contents

  • MongoDB\Driver\BulkWrite::__construct — Create a new BulkWrite
  • MongoDB\Driver\BulkWrite::count — Count number of write operations in the bulk
  • MongoDB\Driver\BulkWrite::delete — Add a delete operation to the bulk
  • MongoDB\Driver\BulkWrite::insert — Add an insert operation to the bulk
  • MongoDB\Driver\BulkWrite::update — Add an update operation to the bulk
MongoDB\Driver\Query::__construct
MongoDB\Driver\BulkWrite::__construct
MongoDB\Driver


Create a new BulkWrite

MongoDB\Driver\BulkWrite
MongoDB\Driver\BulkWrite::count
MongoDB\Driver\BulkWrite
PHP Manual

MongoDB\Driver\BulkWrite::__construct

(mongodb >=1.0.0)

MongoDB\Driver\BulkWrite::__construct — Create a new BulkWrite

说明

public MongoDB\Driver\BulkWrite::__construct ([ array $options ] )

Constructs a new ordered (default) or unordered MongoDB\Driver\BulkWrite.

参数

options (array)

options
Option | Type | Description | Default
ordered | bool | Ordered operations (TRUE) are executed serially on the MongoDB server, while unordered operations (FALSE) are sent to the server in an arbitrary order and may be executed in parallel. | TRUE

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\BulkWrite::__construct() example

<?php

$bulk = new MongoDB\Driver\BulkWrite(['ordered' => true]);
$bulk->delete([]);
$bulk->insert(['_id' => 1, 'x' => 1]);
$bulk->insert(['_id' => 2, 'x' => 2]);
$bulk->update(
    ['x' => 2],
    ['$set' => ['x' => 1]],
    ['limit' => 1, 'upsert' => false]
);
$bulk->delete(['x' => 1], ['limit' => 1]);
$bulk->update(
    ['_id' => 3],
    ['$set' => ['x' => 3]],
    ['limit' => 1, 'upsert' => true]
);

$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);

try {
    $result = $manager->executeBulkWrite('db.collection', $bulk, $writeConcern);
} catch (MongoDB\Driver\Exception\BulkWriteException $e) {
    $result = $e->getWriteResult();

    // Check if the write concern could not be fulfilled
    if ($writeConcernError = $result->getWriteConcernError()) {
        printf("%s (%d): %s\n",
            $writeConcernError->getMessage(),
            $writeConcernError->getCode(),
            var_export($writeConcernError->getInfo(), true)
        );
    }

    // Check if any write operations did not complete at all
    foreach ($result->getWriteErrors() as $writeError) {
        printf("Operation#%d: %s (%d)\n",
            $writeError->getIndex(),
            $writeError->getMessage(),
            $writeError->getCode()
        );
    }
} catch (MongoDB\Driver\Exception\Exception $e) {
    printf("Other error: %s\n", $e->getMessage());
    exit;
}

printf("Inserted %d document(s)\n", $result->getInsertedCount());
printf("Updated  %d document(s)\n", $result->getModifiedCount());
printf("Upserted %d document(s)\n", $result->getUpsertedCount());
printf("Deleted  %d document(s)\n", $result->getDeletedCount());

?>

以上例程会输出：

Inserted 2 document(s)
Updated  1 document(s)
Upserted 1 document(s)
Deleted  1 document(s)

参见

  • MongoDB\Driver\Manager::executeBulkWrite() - Execute one or more write operations
  • MongoDB\Driver\WriteResult
MongoDB\Driver\BulkWrite
MongoDB\Driver\BulkWrite::count
MongoDB\Driver\BulkWrite


Count number of write operations in the bulk

MongoDB\Driver\BulkWrite::__construct
MongoDB\Driver\BulkWrite::delete
MongoDB\Driver\BulkWrite
PHP Manual

MongoDB\Driver\BulkWrite::count

(mongodb >=1.0.0)

MongoDB\Driver\BulkWrite::count — Count number of write operations in the bulk

说明

public int MongoDB\Driver\BulkWrite::count ( void )

Returns the number of write operations added to the MongoDB\Driver\BulkWrite object.

参数

此函数没有参数。

返回值

Returns number of write operations added to the MongoDB\Driver\BulkWrite object.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

更新日志

版本 | 说明
1.2.0 | Returns the number of write operations added to the MongoDB\Driver\BulkWrite object. Earlier versions returned the expected number of client-to-server roundtrips required to execute all write operations.

范例

Example #1 MongoDB\Driver\BulkWrite::count() example

<?php

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['_id' => 1, 'x' => 1]);
$bulk->insert(['_id' => 2, 'x' => 2]);
$bulk->update(['x' => 2], ['$set' => ['x' => 1]]);
$bulk->delete(['x' => 1]);

var_dump(count($bulk));

?>

以上例程会输出：

int(4)
MongoDB\Driver\BulkWrite::__construct
MongoDB\Driver\BulkWrite::delete
MongoDB\Driver\BulkWrite


Add a delete operation to the bulk

MongoDB\Driver\BulkWrite::count
MongoDB\Driver\BulkWrite::insert
MongoDB\Driver\BulkWrite
PHP Manual

MongoDB\Driver\BulkWrite::delete

(mongodb >=1.0.0)

MongoDB\Driver\BulkWrite::delete — Add a delete operation to the bulk

说明

public void MongoDB\Driver\BulkWrite::delete ( array|object $filter [, array $deleteOptions ] )

Adds a delete operation to the MongoDB\Driver\BulkWrite.

参数

filter (array|object)

The » query predicate. An empty predicate will match all documents in the collection.

Note: When evaluating query criteria, MongoDB compares types and values according to its own » comparison rules for BSON types, which differs from PHP's comparison and type juggling rules. When matching a special BSON type the query criteria should use the respective BSON class (e.g. use MongoDB\BSON\ObjectID to match an » ObjectID).

deleteOptions

deleteOptions
Option | Type | Description | Default
collation array|object

» Collation allows users to specify language-specific rules for string comparison, such as rules for lettercase and accent marks. When specifying collation, the "locale" field is mandatory; all other collation fields are optional. For descriptions of the fields, see » Collation Document.

If the collation is unspecified but the collection has a default collation, the operation uses the collation specified for the collection. If no collation is specified for the collection or for the operation, MongoDB uses the simple binary comparison used in prior versions for string comparisons.

This option is available in MongoDB 3.4+ and will result in an exception at execution time if specified for an older server version.

limit | bool | Delete all matching documents (FALSE), or only the first matching document (TRUE) | FALSE

返回值

没有返回值。

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

更新日志

版本 | 说明
1.2.0 | Added the "collation" option.

范例

Example #1 MongoDB\Driver\BulkWrite::delete() example

<?php

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->delete(['x' => 1], ['limit' => 1]);
$bulk->delete(['x' => 2], ['limit' => 0]);

$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
$result = $manager->executeBulkWrite('db.collection', $bulk, $writeConcern);

?>

参见

  • MongoDB\Driver\Manager::executeBulkWrite() - Execute one or more write operations
  • MongoDB\Driver\WriteResult
MongoDB\Driver\BulkWrite::count
MongoDB\Driver\BulkWrite::insert
MongoDB\Driver\BulkWrite


Add an insert operation to the bulk

MongoDB\Driver\BulkWrite::delete
MongoDB\Driver\BulkWrite::update
MongoDB\Driver\BulkWrite
PHP Manual

MongoDB\Driver\BulkWrite::insert

(mongodb >=1.0.0)

MongoDB\Driver\BulkWrite::insert — Add an insert operation to the bulk

说明

public mixed MongoDB\Driver\BulkWrite::insert ( array|object $document )

Adds an insert operation to the MongoDB\Driver\BulkWrite.

参数

document (array|object)

A document to insert.

返回值

If the document did not have an _id, a MongoDB\BSON\ObjectID will be generated and returned; otherwise, no value is returned.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\BulkWrite::insert() example

<?php

$bulk = new MongoDB\Driver\BulkWrite;

$document1 = ['title' => 'one'];
$document2 = ['_id' => 'custom ID', 'title' => 'two'];
$document3 = ['_id' => new MongoDB\BSON\ObjectID, 'title' => 'three'];

$_id1 = $bulk->insert($document1);
$_id2 = $bulk->insert($document2);
$_id3 = $bulk->insert($document3);

var_dump($_id1, $_id2, $_id3);

$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
$result = $manager->executeBulkWrite('db.collection', $bulk, $writeConcern);

?>

以上例程的输出类似于：

object(MongoDB\BSON\ObjectID)#3 (1) {
  ["oid"]=>
  string(24) "54d51146bd21b91405401d92"
}
NULL
NULL

参见

  • MongoDB\Driver\Manager::executeBulkWrite() - Execute one or more write operations
  • MongoDB\Driver\WriteResult
  • MongoDB\BSON\ObjectID
  • MongoDB\BSON\Persistable
MongoDB\Driver\BulkWrite::delete
MongoDB\Driver\BulkWrite::update
MongoDB\Driver\BulkWrite


Add an update operation to the bulk

MongoDB\Driver\BulkWrite::insert
MongoDB\Driver\WriteConcern
MongoDB\Driver\BulkWrite
PHP Manual

MongoDB\Driver\BulkWrite::update

(mongodb >=1.0.0)

MongoDB\Driver\BulkWrite::update — Add an update operation to the bulk

说明

public void MongoDB\Driver\BulkWrite::update ( array|object $filter , array|object $newObj [, array $updateOptions ] )

Adds an update operation to the MongoDB\Driver\BulkWrite.

参数

filter (array|object)

The » query predicate. An empty predicate will match all documents in the collection.

Note: When evaluating query criteria, MongoDB compares types and values according to its own » comparison rules for BSON types, which differs from PHP's comparison and type juggling rules. When matching a special BSON type the query criteria should use the respective BSON class (e.g. use MongoDB\BSON\ObjectID to match an » ObjectID).

newObj (array|object)

A document containing either update operators (e.g. $set) or a replacement document (i.e. only field:value expressions).

updateOptions

updateOptions
Option | Type | Description | Default
collation array|object

» Collation allows users to specify language-specific rules for string comparison, such as rules for lettercase and accent marks. When specifying collation, the "locale" field is mandatory; all other collation fields are optional. For descriptions of the fields, see » Collation Document.

If the collation is unspecified but the collection has a default collation, the operation uses the collation specified for the collection. If no collation is specified for the collection or for the operation, MongoDB uses the simple binary comparison used in prior versions for string comparisons.

This option is available in MongoDB 3.4+ and will result in an exception at execution time if specified for an older server version.

multi | bool | Update only the first matching document (multi=false), or all matching documents (multi=true). | FALSE
upsert | bool | If filter does not match an existing document, insert a single document. The document will be created from newObj if it is a replacement document (i.e. no update operators); otherwise, the operators in newObj will be applied to filter to create the new document. | FALSE

返回值

没有返回值。

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

更新日志

版本 | 说明
1.2.0 | Added the "collation" option.

范例

Example #1 MongoDB\Driver\BulkWrite::update() example

<?php

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->update(
    ['x' => 2],
    ['$set' => ['y' => 3]],
    ['multi' => false, 'upsert' => false]
);

$manager = new MongoDB\Driver\Manager('mongodb://localhost:27017');
$writeConcern = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000);
$result = $manager->executeBulkWrite('db.collection', $bulk, $writeConcern);

?>

参见

  • MongoDB\Driver\Manager::executeBulkWrite() - Execute one or more write operations
  • MongoDB\Driver\WriteResult
MongoDB\Driver\BulkWrite::insert
MongoDB\Driver\WriteConcern
MongoDB\Driver\BulkWrite


The MongoDB\Driver\WriteConcern class

(mongodb >=1.0.0)

简介

MongoDB\Driver\WriteConcern describes the level of acknowledgement requested from MongoDB for write operations to a standalone mongod or to replica sets or to sharded clusters. In sharded clusters, mongos instances will pass the write concern on to the shards.

类摘要

final MongoDB\Driver\WriteConcern implements MongoDB\BSON\Serializable {
/* Constants */
const string MAJORITY = majority ;
/* 方法 */
final public object bsonSerialize ( void )
final public __construct ( string|int $w [, integer $wtimeout [, boolean $journal ]] )
final public bool|null getJournal ( void )
final public string|int|null getW ( void )
final public int getWtimeout ( void )
}

预定义常量

MongoDB\Driver\WriteConcern::MAJORITY

Majority of all the members in the set; arbiters, non-voting members, passive members, hidden members and delayed members are all included in the definition of majority write concern.

Table of Contents

  • MongoDB\Driver\WriteConcern::bsonSerialize — Returns an object for BSON serialization
  • MongoDB\Driver\WriteConcern::__construct — Construct immutable WriteConcern
  • MongoDB\Driver\WriteConcern::getJournal — Returns the WriteConcern's "journal" option
  • MongoDB\Driver\WriteConcern::getW — Returns the WriteConcern's "w" option
  • MongoDB\Driver\WriteConcern::getWtimeout — Returns the WriteConcern's "wtimeout" option
MongoDB\Driver\BulkWrite::update
MongoDB\Driver\WriteConcern::bsonSerialize
MongoDB\Driver


Returns an object for BSON serialization

MongoDB\Driver\WriteConcern
MongoDB\Driver\WriteConcern::__construct
MongoDB\Driver\WriteConcern
PHP Manual

MongoDB\Driver\WriteConcern::bsonSerialize

(mongodb >=1.2.0)

MongoDB\Driver\WriteConcern::bsonSerialize — Returns an object for BSON serialization

说明

final public object MongoDB\Driver\WriteConcern::bsonSerialize ( void )

参数

此函数没有参数。

返回值

Returns an object for serializing the WriteConcern as BSON.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\WriteConcern::bsonSerialize() with majority write concern

<?php

$wc = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY);
var_dump($wc->bsonSerialize());

echo "\n", MongoDB\BSON\toJSON(MongoDB\BSON\fromPHP($wc));

?>

以上例程的输出类似于：

object(stdClass)#2 (1) {
  ["w"]=>
  string(8) "majority"
}

{ "w" : "majority" }

Example #2 MongoDB\Driver\WriteConcern::bsonSerialize() with wtimeout and journal

<?php

$wc = new MongoDB\Driver\WriteConcern(2, 1000, true);
var_dump($wc->bsonSerialize());

echo "\n", MongoDB\BSON\toJSON(MongoDB\BSON\fromPHP($wc));

?>

以上例程的输出类似于：

object(stdClass)#2 (3) {
  ["w"]=>
  int(2)
  ["j"]=>
  bool(true)
  ["wtimeout"]=>
  int(1000)
}

{ "w" : 2, "j" : true, "wtimeout" : 1000 }

参见

  • MongoDB\BSON\Serializable::bsonSerialize() - Provides an array or document to serialize as BSON
  • » Write Concern reference
MongoDB\Driver\WriteConcern
MongoDB\Driver\WriteConcern::__construct
MongoDB\Driver\WriteConcern


Construct immutable WriteConcern

MongoDB\Driver\WriteConcern::bsonSerialize
MongoDB\Driver\WriteConcern::getJournal
MongoDB\Driver\WriteConcern
PHP Manual

MongoDB\Driver\WriteConcern::__construct

(mongodb >=1.0.0)

MongoDB\Driver\WriteConcern::__construct — Construct immutable WriteConcern

说明

final public MongoDB\Driver\WriteConcern::__construct ( string|int $w [, integer $wtimeout [, boolean $journal ]] )

Creates a new WriteConcern.

参数

w

Write concern
Value | Description
1 | Requests acknowledgement that the write operation has propagated to the standalone mongod or the primary in a replica set. This is the default write concern for MongoDB.
0 | Requests no acknowledgment of the write operation. However, this may return information about socket exceptions and networking errors to the application.
<integer greater than 1> | Numbers greater than 1 are valid only for replica sets to request acknowledgement from specified number of members, including the primary.
MongoDB\Driver\WriteConcern::MAJORITY

Requests acknowledgment that write operations have propagated to the majority of voting nodes, including the primary, and have been written to the on-disk journal for these nodes.

Prior to MongoDB 3.0, this refers to the majority of replica set members (not just voting nodes).

string | A string value is interpereted as a tag set. Requests acknowledgement that the write operations have propagated to a replica set member with the specified tag.

wtimeout

How long to wait (in milliseconds) for secondaries before failing.

wtimeout causes write operations to return with an error (WriteConcernError) after the specified limit, even if the required write concern will eventually succeed. When these write operations return, MongoDB does not undo successful data modifications performed before the write concern exceeded the wtimeout time limit.

Write concern timeout
Value | Description
0 | Block indefinitely. This is the default.
<integer greater than 0> | Milliseconds to wait until returning.

journal

Wait until mongod has applied the write to the journal.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\InvalidArgumentException if w is invalid or wtimeout is negative.

范例

Example #1 MongoDB\Driver\WriteConcern::__construct() example

<?php

/* Request write acknowledgement from the majority of the replica set nodes */
$wc = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 500);

/* Request write acknowledgement from a node configured with the "MultipleDC" tag */
$wc = new MongoDB\Driver\WriteConcern("MultipleDC", 500);

?>

参见

  • » Write Concern reference
MongoDB\Driver\WriteConcern::bsonSerialize
MongoDB\Driver\WriteConcern::getJournal
MongoDB\Driver\WriteConcern


Returns the WriteConcern's "journal" option

MongoDB\Driver\WriteConcern::__construct
MongoDB\Driver\WriteConcern::getW
MongoDB\Driver\WriteConcern
PHP Manual

MongoDB\Driver\WriteConcern::getJournal

(mongodb >=1.0.0)

MongoDB\Driver\WriteConcern::getJournal — Returns the WriteConcern's "journal" option

说明

final public bool|null MongoDB\Driver\WriteConcern::getJournal ( void )

参数

此函数没有参数。

返回值

Returns the WriteConcern's "journal" option.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\WriteConcern::getJournal() example

<?php

$wc = new MongoDB\Driver\WriteConcern(1);
var_dump($wc->getJournal());

$wc = new MongoDB\Driver\WriteConcern(1, 0, true);
var_dump($wc->getJournal());

$wc = new MongoDB\Driver\WriteConcern(1, 0, false);
var_dump($wc->getJournal());

?>

以上例程会输出：

NULL
bool(true)
bool(false)

参见

  • » Write Concern reference
MongoDB\Driver\WriteConcern::__construct
MongoDB\Driver\WriteConcern::getW
MongoDB\Driver\WriteConcern


Returns the WriteConcern's "w" option

MongoDB\Driver\WriteConcern::getJournal
MongoDB\Driver\WriteConcern::getWtimeout
MongoDB\Driver\WriteConcern
PHP Manual

MongoDB\Driver\WriteConcern::getW

(mongodb >=1.0.0)

MongoDB\Driver\WriteConcern::getW — Returns the WriteConcern's "w" option

说明

final public string|int|null MongoDB\Driver\WriteConcern::getW ( void )

参数

此函数没有参数。

返回值

Returns the WriteConcern's "w" option.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\WriteConcern::getW() example

<?php

$wc = new MongoDB\Driver\WriteConcern(1);
var_dump($wc->getW());

$wc = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY);
var_dump($wc->getW());

?>

以上例程会输出：

int(1)
string(8) "majority"

参见

  • » Write Concern reference
MongoDB\Driver\WriteConcern::getJournal
MongoDB\Driver\WriteConcern::getWtimeout
MongoDB\Driver\WriteConcern


Returns the WriteConcern's "wtimeout" option

MongoDB\Driver\WriteConcern::getW
MongoDB\Driver\ReadPreference
MongoDB\Driver\WriteConcern
PHP Manual

MongoDB\Driver\WriteConcern::getWtimeout

(mongodb >=1.0.0)

MongoDB\Driver\WriteConcern::getWtimeout — Returns the WriteConcern's "wtimeout" option

说明

final public int MongoDB\Driver\WriteConcern::getWtimeout ( void )

参数

此函数没有参数。

返回值

Returns the WriteConcern's "wtimeout" option.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\WriteConcern::getWtimeout() example

<?php

$wc = new MongoDB\Driver\WriteConcern(1);
var_dump($wc->getWtimeout());

$wc = new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 3000);
var_dump($wc->getWtimeout());

?>

以上例程会输出：

int(0)
int(3000)

参见

  • » Write Concern reference
MongoDB\Driver\WriteConcern::getW
MongoDB\Driver\ReadPreference
MongoDB\Driver\WriteConcern


The MongoDB\Driver\ReadPreference class

(mongodb >=1.0.0)

简介

类摘要

final MongoDB\Driver\ReadPreference implements MongoDB\BSON\Serializable {
/* Constants */
const integer RP_PRIMARY = 1 ;
const integer RP_PRIMARY_PREFERRED = 5 ;
const integer RP_SECONDARY = 2 ;
const integer RP_SECONDARY_PREFERRED = 6 ;
const integer RP_NEAREST = 10 ;
const integer NO_MAX_STALENESS = -1 ;
const integer SMALLEST_MAX_STALENESS_SECONDS = 90 ;
/* 方法 */
final public object bsonSerialize ( void )
final public __construct ( int $mode [, array $tagSets = NULL [, array $options = [] ]] )
final public integer getMaxStalenessSeconds ( void )
final public integer getMode ( void )
final public array getTagSets ( void )
}

预定义常量

MongoDB\Driver\ReadPreference::RP_PRIMARY

All operations read from the current replica set primary. This is the default read preference for MongoDB.

MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED

In most situations, operations read from the primary but if it is unavailable, operations read from secondary members.

MongoDB\Driver\ReadPreference::RP_SECONDARY

All operations read from the secondary members of the replica set.

MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED

In most situations, operations read from secondary members but if no secondary members are available, operations read from the primary.

MongoDB\Driver\ReadPreference::RP_NEAREST

Operations read from member of the replica set with the least network latency, irrespective of the member's type.

MongoDB\Driver\ReadPreference::NO_MAX_STALENESS

The default value for the "maxStalenessSeconds" option is to specify no limit on maximum staleness, which means that the driver will not consider a secondary's lag when choosing where to direct a read operation.

MongoDB\Driver\ReadPreference::SMALLEST_MAX_STALENESS_SECONDS

The minimum value for the "maxStalenessSeconds" option is 90 seconds. The driver estimates secondaries' staleness by periodically checking the latest write date of each replica set member. Since these checks are infrequent, the staleness estimate is coarse. Thus, the driver cannot enforce a max staleness value of less than 90 seconds.

更新日志

版本 | 说明
1.2.0 | Added the MongoDB\Driver\ReadPreference::NO_MAX_STALENESS and MongoDB\Driver\ReadPreference::SMALLEST_MAX_STALENESS_SECONDS constants.

Table of Contents

  • MongoDB\Driver\ReadPreference::bsonSerialize — Returns an object for BSON serialization
  • MongoDB\Driver\ReadPreference::__construct — Construct immutable ReadPreference
  • MongoDB\Driver\ReadPreference::getMaxStalenessSeconds — Returns the ReadPreference's "maxStalenessSeconds" option
  • MongoDB\Driver\ReadPreference::getMode — Returns the ReadPreference's "mode" option
  • MongoDB\Driver\ReadPreference::getTagSets — Returns the ReadPreference's "tagSets" option
MongoDB\Driver\WriteConcern::getWtimeout
MongoDB\Driver\ReadPreference::bsonSerialize
MongoDB\Driver


Returns an object for BSON serialization

MongoDB\Driver\ReadPreference
MongoDB\Driver\ReadPreference::__construct
MongoDB\Driver\ReadPreference
PHP Manual

MongoDB\Driver\ReadPreference::bsonSerialize

(mongodb >=1.2.0)

MongoDB\Driver\ReadPreference::bsonSerialize — Returns an object for BSON serialization

说明

final public object MongoDB\Driver\ReadPreference::bsonSerialize ( void )

参数

此函数没有参数。

返回值

Returns an object for serializing the ReadPreference as BSON.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\ReadPreference::bsonSerialize() with primary read preference

<?php

$rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY);
var_dump($rp->bsonSerialize());

echo "\n", MongoDB\BSON\toJSON(MongoDB\BSON\fromPHP($rp));

?>

以上例程的输出类似于：

object(stdClass)#2 (1) {
  ["mode"]=>
  string(7) "primary"
}

{ "mode" : "primary" }

Example #2 MongoDB\Driver\ReadPreference::bsonSerialize() with secondary read preference and tag sets

<?php

$rp = new MongoDB\Driver\ReadPreference(
    MongoDB\Driver\ReadPreference::RP_SECONDARY,
    [
        ['dc' => 'ny'],
        ['dc' => 'sf', 'use' => 'reporting'],
        []
    ]
);
var_dump($rp->bsonSerialize());

echo "\n", MongoDB\BSON\toJSON(MongoDB\BSON\fromPHP($rp));

?>

以上例程的输出类似于：

object(stdClass)#2 (2) {
  ["mode"]=>
  string(9) "secondary"
  ["tags"]=>
  array(3) {
    [0]=>
    object(stdClass)#1 (1) {
      ["dc"]=>
      string(2) "ny"
    }
    [1]=>
    object(stdClass)#5 (2) {
      ["dc"]=>
      string(2) "sf"
      ["use"]=>
      string(9) "reporting"
    }
    [2]=>
    object(stdClass)#4 (0) {
    }
  }
}

{ "mode" : "secondary", "tags" : [ { "dc" : "ny" }, { "dc" : "sf", "use" : "reporting" }, {  } ] }

Example #3 MongoDB\Driver\ReadPreference::bsonSerialize() with secondary read preference and max staleness

<?php

$rp = new MongoDB\Driver\ReadPreference(
    MongoDB\Driver\ReadPreference::RP_SECONDARY,
    null,
    ['maxStalenessSeconds' => 120]
);
var_dump($rp->bsonSerialize());

echo "\n", MongoDB\BSON\toJSON(MongoDB\BSON\fromPHP($rp));

?>

以上例程的输出类似于：

object(stdClass)#2 (2) {
  ["mode"]=>
  string(9) "secondary"
  ["maxStalenessSeconds"]=>
  int(120)
}

{ "mode" : "secondary", "maxStalenessSeconds" : 120 }

参见

  • MongoDB\BSON\Serializable::bsonSerialize() - Provides an array or document to serialize as BSON
  • » Read Preference reference
MongoDB\Driver\ReadPreference
MongoDB\Driver\ReadPreference::__construct
MongoDB\Driver\ReadPreference


Construct immutable ReadPreference

MongoDB\Driver\ReadPreference::bsonSerialize
MongoDB\Driver\ReadPreference::getMaxStalenessSeconds
MongoDB\Driver\ReadPreference
PHP Manual

MongoDB\Driver\ReadPreference::__construct

(mongodb >=1.0.0)

MongoDB\Driver\ReadPreference::__construct — Construct immutable ReadPreference

说明

final public MongoDB\Driver\ReadPreference::__construct ( int $mode [, array $tagSets = NULL [, array $options = [] ]] )

Creates a new ReadPreference.

参数

mode

Read preference mode
Value Description
MongoDB\Driver\ReadPreference::RP_PRIMARY

All operations read from the current replica set primary. This is the default read preference for MongoDB.

MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED

In most situations, operations read from the primary but if it is unavailable, operations read from secondary members.

MongoDB\Driver\ReadPreference::RP_SECONDARY

All operations read from the secondary members of the replica set.

MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED

In most situations, operations read from secondary members but if no secondary members are available, operations read from the primary.

MongoDB\Driver\ReadPreference::RP_NEAREST

Operations read from member of the replica set with the least network latency, irrespective of the member's type.

tagSets

Tag sets allow you to target read operations to specific members of a replica set. This parameter should be an array of associative arrays, each of which contain zero or more key/value pairs. When selecting a server for a read operation, the driver attempt to select a node having all tags in a set (i.e. the associative array of key/value pairs). If selection fails, the driver will attempt subsequent sets. An empty tag set (array()) will match any node and may be used as a fallback.

Tags are not compatible with the MongoDB\Driver\ReadPreference::RP_PRIMARY mode and, in general, only apply when selecting a secondary member of a set for a read operation. However, the MongoDB\Driver\ReadPreference::RP_NEAREST mode, when combined with a tag set, selects the matching member with the lowest network latency. This member may be a primary or secondary.

options

options
Option Type Description
maxStalenessSeconds integer

Specifies a maximum replication lag, or "staleness", for reads from secondaries. When a secondary's estimated staleness exceeds this value, the driver stops using it for read operations.

If specified, the max staleness must be a signed 32-bit integer greater than or equal to MongoDB\Driver\ReadPreference::SMALLEST_MAX_STALENESS_SECONDS.

Defaults to MongoDB\Driver\ReadPreference::NO_MAX_STALENESS, which means that the driver will not consider a secondary's lag when choosing where to direct a read operation.

This option is not compatible with the MongoDB\Driver\ReadPreference::RP_PRIMARY mode. Specifying a max staleness also requires all MongoDB instances in the deployment to be using MongoDB 3.4+. An exception will be thrown at execution time if any MongoDB instances in the deployment are of an older server version.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\InvalidArgumentException if mode is invalid.
  • Throws MongoDB\Driver\Exception\InvalidArgumentException if tagSets is provided for a primary read preference or is malformed (i.e. not an array of zero or more documents).
  • Throws MongoDB\Driver\Exception\InvalidArgumentException if the "maxStalenessSeconds" option is provided for a primary read preference or is out of range.

更新日志

版本 | 说明
1.2.0 | Added a third options argument, which supports the "maxStalenessSeconds" option.

范例

Example #1 MongoDB\Driver\ReadPreference::__construct() example

<?php

/* Prefer a secondary node but fall back to a primary. */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED));

/* Prefer a node in the New York data center with lowest latency. */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_NEAREST, [['dc' => 'ny']]));

/* Require a secondary node whose replication lag is within two minutes of the primary */
var_dump(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, null, ['maxStalenessSeconds' => 120]));

?>

以上例程会输出：

object(MongoDB\Driver\ReadPreference)#1 (1) {
  ["mode"]=>
  string(18) "secondaryPreferred"
}
object(MongoDB\Driver\ReadPreference)#1 (2) {
  ["mode"]=>
  string(7) "nearest"
  ["tags"]=>
  array(1) {
    [0]=>
    object(stdClass)#2 (1) {
      ["dc"]=>
      string(2) "ny"
    }
  }
}
object(MongoDB\Driver\ReadPreference)#1 (2) {
  ["mode"]=>
  string(9) "secondary"
  ["maxStalenessSeconds"]=>
  int(120)
}

参见

  • » Read Preference reference
MongoDB\Driver\ReadPreference::bsonSerialize
MongoDB\Driver\ReadPreference::getMaxStalenessSeconds
MongoDB\Driver\ReadPreference


Returns the ReadPreference's "maxStalenessSeconds" option

MongoDB\Driver\ReadPreference::__construct
MongoDB\Driver\ReadPreference::getMode
MongoDB\Driver\ReadPreference
PHP Manual

MongoDB\Driver\ReadPreference::getMaxStalenessSeconds

(mongodb >=1.2.0)

MongoDB\Driver\ReadPreference::getMaxStalenessSeconds — Returns the ReadPreference's "maxStalenessSeconds" option

说明

final public integer MongoDB\Driver\ReadPreference::getMaxStalenessSeconds ( void )

参数

此函数没有参数。

返回值

Returns the ReadPreference's "maxStalenessSeconds" option. If no max staleness has been specified, MongoDB\Driver\ReadPreference::NO_MAX_STALENESS will be returned.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\ReadPreference::getMaxStalenessSeconds() example

<?php

$rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY);
var_dump($rp->getMaxStalenessSeconds());

$rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, null, [
    'maxStalenessSeconds' => MongoDB\Driver\ReadPreference::NO_MAX_STALENESS,
]);
var_dump($rp->getMaxStalenessSeconds());

$rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, null, [
    'maxStalenessSeconds' => MongoDB\Driver\ReadPreference::SMALLEST_MAX_STALENESS_SECONDS,
]);
var_dump($rp->getMaxStalenessSeconds());

$rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY, null, [
    'maxStalenessSeconds' => 1000,
]);
var_dump($rp->getMaxStalenessSeconds());

?>

以上例程会输出：

int(-1)
int(-1)
int(90)
int(1000)

参见

  • » Read Preference reference
MongoDB\Driver\ReadPreference::__construct
MongoDB\Driver\ReadPreference::getMode
MongoDB\Driver\ReadPreference


Returns the ReadPreference's "mode" option

MongoDB\Driver\ReadPreference::getMaxStalenessSeconds
MongoDB\Driver\ReadPreference::getTagSets
MongoDB\Driver\ReadPreference
PHP Manual

MongoDB\Driver\ReadPreference::getMode

(mongodb >=1.0.0)

MongoDB\Driver\ReadPreference::getMode — Returns the ReadPreference's "mode" option

说明

final public integer MongoDB\Driver\ReadPreference::getMode ( void )

参数

此函数没有参数。

返回值

Returns the ReadPreference's "mode" option.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\ReadPreference::getMode() example

<?php

$rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY);
var_dump($rp->getMode());

$rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED);
var_dump($rp->getMode());

$rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY);
var_dump($rp->getMode());

$rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED);
var_dump($rp->getMode());

$rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_NEAREST);
var_dump($rp->getMode());

?>

以上例程会输出：

int(1)
int(5)
int(2)
int(6)
int(10)

参见

  • » Read Preference reference
MongoDB\Driver\ReadPreference::getMaxStalenessSeconds
MongoDB\Driver\ReadPreference::getTagSets
MongoDB\Driver\ReadPreference


Returns the ReadPreference's "tagSets" option

MongoDB\Driver\ReadPreference::getMode
MongoDB\Driver\ReadConcern
MongoDB\Driver\ReadPreference
PHP Manual

MongoDB\Driver\ReadPreference::getTagSets

(mongodb >=1.0.0)

MongoDB\Driver\ReadPreference::getTagSets — Returns the ReadPreference's "tagSets" option

说明

final public array MongoDB\Driver\ReadPreference::getTagSets ( void )

参数

此函数没有参数。

返回值

Returns the ReadPreference's "tagSets" option.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\ReadPreference::getTagSets() example

<?php

$mode = MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED);

/* Null and an empty array both denote no tag set preference. */
$rp = new MongoDB\Driver\ReadPreference($mode, null);
var_dump($rp->getTagSets());

$rp = new MongoDB\Driver\ReadPreference($mode, []);
var_dump($rp->getTagSets());

/* Prefer a node in New York, but fall back to any available node. */
$rp = new MongoDB\Driver\ReadPreference($mode, [['dc' => 'ny']]);
var_dump($rp->getTagSets());

/* Prefer a node in the New York, followed by a node in San Francisco that is
   labeled for reporting usage, and finally fall back to any available node. */
$rp = new MongoDB\Driver\ReadPreference($mode, [
  ['dc' => 'ny'],
  ['dc' => 'sf', 'use' => 'reporting'],
  [],
]);
var_dump($rp->getTagSets());

?>

以上例程会输出：

array(0) {
}
array(0) {
}
array(2) {
  [0]=>
  array(1) {
    ["dc"]=>
    string(2) "ny"
  }
  [1]=>
  array(0) {
  }
}
array(3) {
  [0]=>
  array(1) {
    ["dc"]=>
    string(2) "ny"
  }
  [1]=>
  array(2) {
    ["dc"]=>
    string(2) "sf"
    ["use"]=>
    string(9) "reporting"
  }
  [2]=>
  array(0) {
  }
}

参见

  • » Read Preference reference
MongoDB\Driver\ReadPreference::getMode
MongoDB\Driver\ReadConcern
MongoDB\Driver\ReadPreference


The MongoDB\Driver\ReadConcern class

(mongodb >=1.1.0)

简介

MongoDB\Driver\ReadConcern controls the level of isolation for read operations for replica sets and replica set shards. This option requires the WiredTiger storage engine and MongoDB 3.2 or later.

类摘要

final MongoDB\Driver\ReadConcern implements MongoDB\BSON\Serializable {
/* Constants */
const string LINEARIZABLE = linearizable ;
const string LOCAL = local ;
const string MAJORITY = majority ;
/* 方法 */
final public object bsonSerialize ( void )
final public __construct ([ string $level ] )
final public string|null getLevel ( void )
}

预定义常量

MongoDB\Driver\ReadConcern::LINEARIZABLE

A linearizable read avoids returning reads from a stale primary (one that has already been superseded by a new primary but doesn't know it yet). It is important to note that this read concern level does not by itself produce linearizable reads; they must be issued in conjunction with MongoDB\Driver\WriteConcern::MAJORITY writes to the same document(s) in order to be linearizable.

MongoDB\Driver\ReadConcern::LOCAL

Queries using this read concern will return the node's most recent copy of the data. This provides no guarantee that the data has been written to a majority of the nodes (i.e. it may be rolled back).

This is the default read concern level.

MongoDB\Driver\ReadConcern::MAJORITY

Queries using this read concern will return the node's most recent copy of the data confirmed as having been written to a majority of the nodes (i.e. the data cannot be rolled back).

更新日志

版本 | 说明
1.2.0 | Added the MongoDB\Driver\ReadConcern::LINEARIZABLE constant.

Table of Contents

  • MongoDB\Driver\ReadConcern::bsonSerialize — Returns an object for BSON serialization
  • MongoDB\Driver\ReadConcern::__construct — Construct immutable ReadConcern
  • MongoDB\Driver\ReadConcern::getLevel — Returns the ReadConcern's "level" option
MongoDB\Driver\ReadPreference::getTagSets
MongoDB\Driver\ReadConcern::bsonSerialize
MongoDB\Driver


Returns an object for BSON serialization

MongoDB\Driver\ReadConcern
MongoDB\Driver\ReadConcern::__construct
MongoDB\Driver\ReadConcern
PHP Manual

MongoDB\Driver\ReadConcern::bsonSerialize

(mongodb >=1.2.0)

MongoDB\Driver\ReadConcern::bsonSerialize — Returns an object for BSON serialization

说明

final public object MongoDB\Driver\ReadConcern::bsonSerialize ( void )

参数

此函数没有参数。

返回值

Returns an object for serializing the ReadConcern as BSON.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\ReadConcern::bsonSerialize() with empty read concern

<?php

$rc = new MongoDB\Driver\ReadConcern;
var_dump($rc->bsonSerialize());

echo "\n", MongoDB\BSON\toJSON(MongoDB\BSON\fromPHP($rc));

?>

以上例程的输出类似于：

object(stdClass)#2 (0) {
}

{ }

Example #2 MongoDB\Driver\ReadConcern::bsonSerialize() with local read concern

<?php

$rc = new MongoDB\Driver\ReadConcern(MongoDB\Driver\ReadConcern::LOCAL);
var_dump($rc->bsonSerialize());

echo "\n", MongoDB\BSON\toJSON(MongoDB\BSON\fromPHP($rc));

?>

以上例程的输出类似于：

object(stdClass)#2 (1) {
  ["level"]=>
  string(5) "local"
}

{ "level" : "local" }

参见

  • MongoDB\BSON\Serializable::bsonSerialize() - Provides an array or document to serialize as BSON
  • » Read Concern reference
MongoDB\Driver\ReadConcern
MongoDB\Driver\ReadConcern::__construct
MongoDB\Driver\ReadConcern


Construct immutable ReadConcern

MongoDB\Driver\ReadConcern::bsonSerialize
MongoDB\Driver\ReadConcern::getLevel
MongoDB\Driver\ReadConcern
PHP Manual

MongoDB\Driver\ReadConcern::__construct

(mongodb >=1.0.0)

MongoDB\Driver\ReadConcern::__construct — Construct immutable ReadConcern

说明

final public MongoDB\Driver\ReadConcern::__construct ([ string $level ] )

Creates a new ReadConcern.

参数

level

Read concern
Value | Description
MongoDB\Driver\ReadConcern::LOCAL | Queries using this read concern will return the node's most recent copy of the data. This provides no guarantee that the data has been written to a majority of the nodes (i.e. it may be rolled back). This is the default read concern for MongoDB.
MongoDB\Driver\ReadConcern::MAJORITY | Queries using this read concern will return the node's most recent copy of the data confirmed as having been written to a majority of the nodes (i.e. the data cannot be rolled back).

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\ReadConcern::__construct() example

<?php

/* Unspecified read isolation level (uses the server's default behavior) */
$rc = new MongoDB\Driver\ReadConcern();

/* Request read isolation from a single replica set node */
$rc = new MongoDB\Driver\ReadConcern(MongoDB\Driver\ReadConcern::LOCAL);

/* Request read isolation from a majority of the replica set nodes */
$rc = new MongoDB\Driver\ReadConcern(MongoDB\Driver\ReadConcern::MAJORITY);

?>

参见

  • » Read Concern reference
MongoDB\Driver\ReadConcern::bsonSerialize
MongoDB\Driver\ReadConcern::getLevel
MongoDB\Driver\ReadConcern


Returns the ReadConcern's "level" option

MongoDB\Driver\ReadConcern::__construct
MongoDB\Driver\Cursor
MongoDB\Driver\ReadConcern
PHP Manual

MongoDB\Driver\ReadConcern::getLevel

(mongodb >=1.0.0)

MongoDB\Driver\ReadConcern::getLevel — Returns the ReadConcern's "level" option

说明

final public string|null MongoDB\Driver\ReadConcern::getLevel ( void )

参数

此函数没有参数。

返回值

Returns the ReadConcern's "level" option.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\ReadConcern::getLevel() example

<?php

$rc = new MongoDB\Driver\ReadConcern();
var_dump($rc->getLevel());

$rc = new MongoDB\Driver\ReadConcern(MongoDB\Driver\ReadConcern::LOCAL);
var_dump($rc->getLevel());

$rc = new MongoDB\Driver\ReadConcern(MongoDB\Driver\ReadConcern::MAJORITY);
var_dump($rc->getLevel());

?>

以上例程会输出：

NULL
string(5) "local"
string(8) "majority"

参见

  • » Read Concern reference
MongoDB\Driver\ReadConcern::__construct
MongoDB\Driver\Cursor
MongoDB\Driver\ReadConcern


The MongoDB\Driver\Cursor class

(mongodb >=1.0.0)

简介

The MongoDB\Driver\Cursor class encapsulates the results of a MongoDB command or query and may be returned by MongoDB\Driver\Manager::executeCommand() or MongoDB\Driver\Manager::executeQuery(), respectively.

类摘要

MongoDB\Driver\Cursor implements Traversable {
/* 方法 */
final private __construct ( void )
final public MongoDB\Driver\CursorId getId ( void )
final public MongoDB\Driver\Server getServer ( void )
final public bool isDead ( void )
final public void setTypeMap ( array $typemap )
final public array toArray ( void )
}

Table of Contents

  • MongoDB\Driver\Cursor::__construct — Create a new Cursor (not used)
  • MongoDB\Driver\Cursor::getId — Returns the ID for this cursor
  • MongoDB\Driver\Cursor::getServer — Returns the server associated with this cursor
  • MongoDB\Driver\Cursor::isDead — Checks if the cursor is still open on the server
  • MongoDB\Driver\Cursor::setTypeMap — Sets a type map to use for BSON unserialization
  • MongoDB\Driver\Cursor::toArray — Returns an array containing all results for this cursor
MongoDB\Driver\ReadConcern::getLevel
MongoDB\Driver\Cursor::__construct
MongoDB\Driver


Create a new Cursor (not used)

MongoDB\Driver\Cursor
MongoDB\Driver\Cursor::getId
MongoDB\Driver\Cursor
PHP Manual

MongoDB\Driver\Cursor::__construct

(mongodb >=1.0.0)

MongoDB\Driver\Cursor::__construct — Create a new Cursor (not used)

说明

final private MongoDB\Driver\Cursor::__construct ( void )

MongoDB\Driver\Cursor objects are returned as the result of an executed command or query and cannot be constructed directly.

参数

此函数没有参数。

参见

  • MongoDB\Driver\Manager::executeCommand() - Execute a database command
  • MongoDB\Driver\Manager::executeQuery() - Execute a database query
  • MongoDB\Driver\Server::executeCommand() - Execute a database command on this server
  • MongoDB\Driver\Server::executeQuery() - Execute a database query on this server
MongoDB\Driver\Cursor
MongoDB\Driver\Cursor::getId
MongoDB\Driver\Cursor


Returns the ID for this cursor

MongoDB\Driver\Cursor::__construct
MongoDB\Driver\Cursor::getServer
MongoDB\Driver\Cursor
PHP Manual

MongoDB\Driver\Cursor::getId

(mongodb >=1.0.0)

MongoDB\Driver\Cursor::getId — Returns the ID for this cursor

说明

final public MongoDB\Driver\CursorId MongoDB\Driver\Cursor::getId ( void )

Returns the MongoDB\Driver\CursorId associated with this cursor. A cursor ID uniquely identifies the cursor on the server.

参数

此函数没有参数。

返回值

Returns the MongoDB\Driver\CursorId for this cursor.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\Cursor::getId() example

<?php

/* In this example, we insert several documents into the collection and specify
 * a smaller batchSize to ensure that the first batch contains only a subset of
 * our results and the cursor remains open on the server. */
$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
$query = new MongoDB\Driver\Query([], ['batchSize' => 2]);

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);
$bulk->insert(['x' => 2]);
$bulk->insert(['x' => 3]);
$manager->executeBulkWrite('db.collection', $bulk);

$cursor = $manager->executeQuery('db.collection', $query);
var_dump($cursor->getId());

?>

以上例程的输出类似于：

object(MongoDB\Driver\CursorId)#5 (1) {
  ["id"]=>
  int(94810124093)
}

参见

  • MongoDB\Driver\CursorId
  • MongoDB\Driver\CursorId::__toString() - String representation of the cursor ID
MongoDB\Driver\Cursor::__construct
MongoDB\Driver\Cursor::getServer
MongoDB\Driver\Cursor


Returns the server associated with this cursor

MongoDB\Driver\Cursor::getId
MongoDB\Driver\Cursor::isDead
MongoDB\Driver\Cursor
PHP Manual

MongoDB\Driver\Cursor::getServer

(mongodb >=1.0.0)

MongoDB\Driver\Cursor::getServer — Returns the server associated with this cursor

说明

final public MongoDB\Driver\Server MongoDB\Driver\Cursor::getServer ( void )

Returns the MongoDB\Driver\Server associated with this cursor. This is the server that executed the MongoDB\Driver\Query or MongoDB\Driver\Command.

参数

此函数没有参数。

返回值

Returns the MongoDB\Driver\Server associated with this cursor.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\Cursor::getServer() example

<?php

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
$query = new MongoDB\Driver\Query([]);

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);
$manager->executeBulkWrite('db.collection', $bulk);

$cursor = $manager->executeQuery('db.collection', $query);
var_dump($cursor->getServer());

?>

以上例程的输出类似于：

object(MongoDB\Driver\Server)#5 (10) {
  ["host"]=>
  string(9) "localhost"
  ["port"]=>
  int(27017)
  ["type"]=>
  int(1)
  ["is_primary"]=>
  bool(false)
  ["is_secondary"]=>
  bool(false)
  ["is_arbiter"]=>
  bool(false)
  ["is_hidden"]=>
  bool(false)
  ["is_passive"]=>
  bool(false)
  ["last_is_master"]=>
  array(8) {
    ["ismaster"]=>
    bool(true)
    ["maxBsonObjectSize"]=>
    int(16777216)
    ["maxMessageSizeBytes"]=>
    int(48000000)
    ["maxWriteBatchSize"]=>
    int(1000)
    ["localTime"]=>
    object(MongoDB\BSON\UTCDateTime)#6 (1) {
      ["milliseconds"]=>
      int(1446505367907)
    }
    ["maxWireVersion"]=>
    int(3)
    ["minWireVersion"]=>
    int(0)
    ["ok"]=>
    float(1)
  }
  ["round_trip_time"]=>
  int(584)
}

参见

  • MongoDB\Driver\Server
MongoDB\Driver\Cursor::getId
MongoDB\Driver\Cursor::isDead
MongoDB\Driver\Cursor


Checks if the cursor is still open on the server

MongoDB\Driver\Cursor::getServer
MongoDB\Driver\Cursor::setTypeMap
MongoDB\Driver\Cursor
PHP Manual

MongoDB\Driver\Cursor::isDead

(mongodb >=1.0.0)

MongoDB\Driver\Cursor::isDead — Checks if the cursor is still open on the server

说明

final public bool MongoDB\Driver\Cursor::isDead ( void )

Returns whether the cursor is still open on the server (i.e. the server has more results that have yet to be sent to the client).

A cursor being "dead" does not mean that it cannot be iterated further. The database sends responses in batches of documents (up to 4MB of documents per response). The client's cursor may still have results to be iterated even if the server has no more batches to send.

参数

此函数没有参数。

返回值

Returns TRUE if there are more results that have not yet been sent to the client, and FALSE otherwise.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\Cursor::isDead() example

<?php

/* In this example, we insert several documents into the collection and specify
 * a smaller batchSize to ensure that the first batch contains only a subset of
 * our results and the cursor remains open on the server. */
$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
$query = new MongoDB\Driver\Query([], ['batchSize' => 2]);

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);
$bulk->insert(['x' => 2]);
$bulk->insert(['x' => 3]);
$manager->executeBulkWrite('db.collection', $bulk);

$cursor = $manager->executeQuery('db.collection', $query);

var_dump($cursor->isDead());
$cursor->toArray();
var_dump($cursor->isDead());

?>

以上例程会输出：

bool(false)
bool(true)
MongoDB\Driver\Cursor::getServer
MongoDB\Driver\Cursor::setTypeMap
MongoDB\Driver\Cursor


Sets a type map to use for BSON unserialization

MongoDB\Driver\Cursor::isDead
MongoDB\Driver\Cursor::toArray
MongoDB\Driver\Cursor
PHP Manual

MongoDB\Driver\Cursor::setTypeMap

(mongodb >=1.0.0)

MongoDB\Driver\Cursor::setTypeMap — Sets a type map to use for BSON unserialization

说明

final public void MongoDB\Driver\Cursor::setTypeMap ( array $typemap )

Sets the type map configuration to use when unserializing the BSON results into PHP values.

参数

typeMap (array)

Type map configuration.

返回值

没有返回值。

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\Cursor::setTypeMap() example

<?php

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");

$bulk = new MongoDB\Driver\BulkWrite;
$id = $bulk->insert(['x' => 1]);
$manager->executeBulkWrite('db.collection', $bulk);

$query = new MongoDB\Driver\Query(['_id' => $id]);
$cursor = $manager->executeQuery('db.collection', $query);
$cursor->setTypeMap(['root' => 'array']);

foreach ($cursor as $document) {
    var_dump($document);
}

?>

以上例程的输出类似于：

array(2) {
  ["_id"]=>
  object(MongoDB\BSON\ObjectID)#6 (1) {
    ["oid"]=>
    string(24) "56424fb76118fd3267180741"
  }
  ["x"]=>
  int(1)
}

参见

  • Persisting Data
MongoDB\Driver\Cursor::isDead
MongoDB\Driver\Cursor::toArray
MongoDB\Driver\Cursor


Returns an array containing all results for this cursor

MongoDB\Driver\Cursor::setTypeMap
MongoDB\Driver\CursorId
MongoDB\Driver\Cursor
PHP Manual

MongoDB\Driver\Cursor::toArray

(mongodb >=1.0.0)

MongoDB\Driver\Cursor::toArray — Returns an array containing all results for this cursor

说明

final public array MongoDB\Driver\Cursor::toArray ( void )

Iterates the cursor and returns its results in an array. MongoDB\Driver\Cursor::setTypeMap() may be used to control how documents are unserialized into PHP values.

参数

此函数没有参数。

返回值

Returns an array containing all results for this cursor.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\Cursor::toArray() example

<?php

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);
$bulk->insert(['x' => 2]);
$bulk->insert(['x' => 3]);
$manager->executeBulkWrite('db.collection', $bulk);

$query = new MongoDB\Driver\Query([]);
$cursor = $manager->executeQuery('db.collection', $query);

var_dump($cursor->toArray());

?>

以上例程的输出类似于：

array(3) {
  [0]=>
  object(stdClass)#6 (2) {
    ["_id"]=>
    object(MongoDB\BSON\ObjectID)#5 (1) {
      ["oid"]=>
      string(24) "564259a96118fd40b41bcf61"
    }
    ["x"]=>
    int(1)
  }
  [1]=>
  object(stdClass)#8 (2) {
    ["_id"]=>
    object(MongoDB\BSON\ObjectID)#7 (1) {
      ["oid"]=>
      string(24) "564259a96118fd40b41bcf62"
    }
    ["x"]=>
    int(2)
  }
  [2]=>
  object(stdClass)#10 (2) {
    ["_id"]=>
    object(MongoDB\BSON\ObjectID)#9 (1) {
      ["oid"]=>
      string(24) "564259a96118fd40b41bcf63"
    }
    ["x"]=>
    int(3)
  }
}

参见

  • MongoDB\Driver\Cursor::setTypeMap() - Sets a type map to use for BSON unserialization
MongoDB\Driver\Cursor::setTypeMap
MongoDB\Driver\CursorId
MongoDB\Driver\Cursor


The MongoDB\Driver\CursorId class

(mongodb >=1.0.0)

简介

类摘要

final MongoDB\Driver\CursorId {
/* 方法 */
final private __construct ( void )
final public string __toString ( void )
}

Table of Contents

  • MongoDB\Driver\CursorId::__construct — Create a new CursorId (not used)
  • MongoDB\Driver\CursorId::__toString — String representation of the cursor ID
MongoDB\Driver\Cursor::toArray
MongoDB\Driver\CursorId::__construct
MongoDB\Driver


Create a new CursorId (not used)

MongoDB\Driver\CursorId
MongoDB\Driver\CursorId::__toString
MongoDB\Driver\CursorId
PHP Manual

MongoDB\Driver\CursorId::__construct

(mongodb >=1.0.0)

MongoDB\Driver\CursorId::__construct — Create a new CursorId (not used)

说明

final private MongoDB\Driver\CursorId::__construct ( void )

MongoDB\Driver\CursorId objects are returned from MongoDB\Driver\Cursor::getId() and cannot be constructed directly.

参数

此函数没有参数。

参见

  • MongoDB\Driver\Cursor::getId() - Returns the ID for this cursor
MongoDB\Driver\CursorId
MongoDB\Driver\CursorId::__toString
MongoDB\Driver\CursorId


String representation of the cursor ID

MongoDB\Driver\CursorId::__construct
MongoDB\Driver\Server
MongoDB\Driver\CursorId
PHP Manual

MongoDB\Driver\CursorId::__toString

(mongodb >=1.0.0)

MongoDB\Driver\CursorId::__toString — String representation of the cursor ID

说明

final public string MongoDB\Driver\CursorId::__toString ( void )

Returns the string representation of the cursor ID.

参数

此函数没有参数。

返回值

Returns the string representation of the cursor ID.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\CursorId::__toString() example

<?php

/* In this example, we insert several documents into the collection and specify
 * a smaller batchSize to ensure that the first batch contains only a subset of
 * our results and the cursor remains open on the server. */
$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
$query = new MongoDB\Driver\Query([], ['batchSize' => 2]);

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);
$bulk->insert(['x' => 2]);
$bulk->insert(['x' => 3]);
$manager->executeBulkWrite('db.collection', $bulk);

$cursor = $manager->executeQuery('db.collection', $query);
var_dump((string) $cursor->getId());

?>

以上例程的输出类似于：

string(11) "98061641158"

参见

  • MongoDB\Driver\Cursor::getId() - Returns the ID for this cursor
MongoDB\Driver\CursorId::__construct
MongoDB\Driver\Server
MongoDB\Driver\CursorId


The MongoDB\Driver\Server class

(mongodb >=1.0.0)

简介

类摘要

final MongoDB\Driver\Server {
/* Constants */
const integer TYPE_UNKNOWN = 0 ;
const integer TYPE_STANDALONE = 1 ;
const integer TYPE_MONGOS = 2 ;
const integer TYPE_POSSIBLE_PRIMARY = 3 ;
const integer TYPE_RS_PRIMARY = 4 ;
const integer TYPE_RS_SECONDARY = 5 ;
const integer TYPE_RS_ARBITER = 6 ;
const integer TYPE_RS_OTHER = 7 ;
const integer TYPE_RS_GHOST = 8 ;
/* 方法 */
final private __construct ( void )
final public MongoDB\Driver\WriteResult executeBulkWrite ( string $namespace , MongoDB\Driver\BulkWrite $bulk [, MongoDB\Driver\WriteConcern $writeConcern ] )
final public MongoDB\Driver\Cursor executeCommand ( string $db , MongoDB\Driver\Command $command [, MongoDB\Driver\ReadPreference $readPreference ] )
final public MongoDB\Driver\Cursor executeQuery ( string $namespace , MongoDB\Driver\Query $query [, MongoDB\Driver\ReadPreference $readPreference ] )
final public string getHost ( void )
final public array getInfo ( void )
final public string getLatency ( void )
final public int getPort ( void )
final public array getTags ( void )
final public int getType ( void )
final public bool isArbiter ( void )
final public bool isHidden ( void )
final public bool isPassive ( void )
final public bool isPrimary ( void )
final public bool isSecondary ( void )
}

预定义常量

MongoDB\Driver\Server::TYPE_UNKNOWN

Unknown server type, returned by MongoDB\Driver\Server::getType().

MongoDB\Driver\Server::TYPE_STANDALONE

Standalone server type, returned by MongoDB\Driver\Server::getType().

MongoDB\Driver\Server::TYPE_MONGOS

Mongos server type, returned by MongoDB\Driver\Server::getType().

MongoDB\Driver\Server::TYPE_POSSIBLE_PRIMARY

Replica set possible primary server type, returned by MongoDB\Driver\Server::getType().

A server may be identified as a possible primary if it has not yet been checked but another memory of the replica set thinks it is the primary.

MongoDB\Driver\Server::TYPE_RS_PRIMARY

Replica set primary server type, returned by MongoDB\Driver\Server::getType().

MongoDB\Driver\Server::TYPE_RS_SECONDARY

Replica set secondary server type, returned by MongoDB\Driver\Server::getType().

MongoDB\Driver\Server::TYPE_RS_ARBITER

Replica set arbiter server type, returned by MongoDB\Driver\Server::getType().

MongoDB\Driver\Server::TYPE_RS_OTHER

Replica set other server type, returned by MongoDB\Driver\Server::getType().

Such servers may be hidden, starting up, or recovering. They cannot be queried, but their hosts lists are useful for discovering the current replica set configuration.

MongoDB\Driver\Server::TYPE_RS_GHOST

Replica set ghost server type, returned by MongoDB\Driver\Server::getType().

Servers may be identified as such in at least three situations: briefly during server startup; in an uninitialized replica set; or when the server is shunned (i.e. removed from the replica set config). They cannot be queried, nor can their host list be used to discover the current replica set configuration; however, the client may monitor this server in hope that it transitions to a more useful state.

Table of Contents

  • MongoDB\Driver\Server::__construct — Create a new Server (not used)
  • MongoDB\Driver\Server::executeBulkWrite — Execute one or more write operations on this server
  • MongoDB\Driver\Server::executeCommand — Execute a database command on this server
  • MongoDB\Driver\Server::executeQuery — Execute a database query on this server
  • MongoDB\Driver\Server::getHost — Returns the hostname of this server
  • MongoDB\Driver\Server::getInfo — Returns an array of information about this server
  • MongoDB\Driver\Server::getLatency — Returns the latency of this server
  • MongoDB\Driver\Server::getPort — Returns the port on which this server is listening
  • MongoDB\Driver\Server::getTags — Returns an array of tags describing this server in a replica set
  • MongoDB\Driver\Server::getType — Returns an integer denoting the type of this server
  • MongoDB\Driver\Server::isArbiter — Checks if this server is an arbiter member of a replica set
  • MongoDB\Driver\Server::isHidden — Checks if this server is a hidden member of a replica set
  • MongoDB\Driver\Server::isPassive — Checks if this server is a passive member of a replica set
  • MongoDB\Driver\Server::isPrimary — Checks if this server is a primary member of a replica set
  • MongoDB\Driver\Server::isSecondary — Checks if this server is a secondary member of a replica set
MongoDB\Driver\CursorId::__toString
MongoDB\Driver\Server::__construct
MongoDB\Driver


Create a new Server (not used)

MongoDB\Driver\Server
MongoDB\Driver\Server::executeBulkWrite
MongoDB\Driver\Server
PHP Manual

MongoDB\Driver\Server::__construct

(mongodb >=1.0.0)

MongoDB\Driver\Server::__construct — Create a new Server (not used)

说明

final private MongoDB\Driver\Server::__construct ( void )

MongoDB\Driver\Server objects are created internally by MongoDB\Driver\Manager when a database connection is established and may be returned by MongoDB\Driver\Manager::getServers() and MongoDB\Driver\Manager::selectServer().

参数

此函数没有参数。

参见

  • MongoDB\Driver\Manager::getServers() - Return the servers to which this manager is connected
  • MongoDB\Driver\Manager::selectServer() - Select a server matching a read preference
MongoDB\Driver\Server
MongoDB\Driver\Server::executeBulkWrite
MongoDB\Driver\Server


Execute one or more write operations on this server

MongoDB\Driver\Server::__construct
MongoDB\Driver\Server::executeCommand
MongoDB\Driver\Server
PHP Manual

MongoDB\Driver\Server::executeBulkWrite

(mongodb >=1.0.0)

MongoDB\Driver\Server::executeBulkWrite — Execute one or more write operations on this server

说明

final public MongoDB\Driver\WriteResult MongoDB\Driver\Server::executeBulkWrite ( string $namespace , MongoDB\Driver\BulkWrite $bulk [, MongoDB\Driver\WriteConcern $writeConcern ] )

Executes one or more write operations on this server.

A MongoDB\Driver\BulkWrite can be constructed with one or more write operations of varying types (e.g. updates, deletes, and inserts). The driver will attempt to send operations of the same type to the server in as few requests as possible to optimize round trips.

参数

namespace (string)

A fully qualified namespace (e.g. "databaseName.collectionName").

bulk (MongoDB\Driver\BulkWrite)

The MongoDB\Driver\BulkWrite to execute.

writeConcern (MongoDB\Driver\WriteConcern)

Optionally, a MongoDB\Driver\WriteConcern to apply to the write operation. If none is given, the write concern from the MongoDB Connection URI will be used.

返回值

Returns MongoDB\Driver\WriteResult on success.

错误／异常

  • Throws MongoDB\Driver\Exception\BulkWriteException on any write failure (e.g. write error, failure to apply a write concern)
  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
  • Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
  • Throws MongoDB\Driver\Exception\RuntimeException on other errors.

注释

Note:

It is the caller's responsibility to ensure that the server is capable of executing the write operation. For example, executing a write operation on a secondary (excluding its "local" database) will fail.

参见

  • MongoDB\Driver\BulkWrite
  • MongoDB\Driver\WriteResult
  • MongoDB\Driver\WriteConcern
  • MongoDB\Driver\Manager::executeBulkWrite() - Execute one or more write operations
MongoDB\Driver\Server::__construct
MongoDB\Driver\Server::executeCommand
MongoDB\Driver\Server


Execute a database command on this server

MongoDB\Driver\Server::executeBulkWrite
MongoDB\Driver\Server::executeQuery
MongoDB\Driver\Server
PHP Manual

MongoDB\Driver\Server::executeCommand

(mongodb >=1.0.0)

MongoDB\Driver\Server::executeCommand — Execute a database command on this server

说明

final public MongoDB\Driver\Cursor MongoDB\Driver\Server::executeCommand ( string $db , MongoDB\Driver\Command $command [, MongoDB\Driver\ReadPreference $readPreference ] )

Executes command on this server.

Note:

The readPreference parameter does not control the server to which the driver issues the command; the command will always be executed on this server object. Instead, it may be used when issuing the command to a secondary (from a replica set connection, not standalone) or mongos node to ensure that the driver sets the wire protocol accordingly or adds the read preference to the command document, respectively.

参数

db (string)

The name of the database on which to execute the command.

command (MongoDB\Driver\Command)

The MongoDB\Driver\Command to execute.

readPreference (MongoDB\Driver\ReadPreference)

Optionally, a MongoDB\Driver\ReadPreference to select the server for this operation. If none is given, the read preference from the MongoDB Connection URI will be used.

返回值

Returns MongoDB\Driver\Cursor on success.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
  • Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
  • Throws MongoDB\Driver\Exception\RuntimeException on other errors (e.g. invalid command, issuing a write command to a secondary).

注释

Note:

This method does not take a MongoDB\Driver\WriteConcern parameter. For write commands (e.g. » findAndModify in MongoDB 3.2+), the write concern should be included in the command document itself.

It is the caller's responsibility to ensure that the server is capable of executing the command. For example, executing a write operation on a secondary (excluding its "local" database) will fail.

参见

  • MongoDB\Driver\Command
  • MongoDB\Driver\Cursor
  • MongoDB\Driver\ReadPreference
  • MongoDB\Driver\Manager::executeCommand() - Execute a database command
MongoDB\Driver\Server::executeBulkWrite
MongoDB\Driver\Server::executeQuery
MongoDB\Driver\Server


Execute a database query on this server

MongoDB\Driver\Server::executeCommand
MongoDB\Driver\Server::getHost
MongoDB\Driver\Server
PHP Manual

MongoDB\Driver\Server::executeQuery

(mongodb >=1.0.0)

MongoDB\Driver\Server::executeQuery — Execute a database query on this server

说明

final public MongoDB\Driver\Cursor MongoDB\Driver\Server::executeQuery ( string $namespace , MongoDB\Driver\Query $query [, MongoDB\Driver\ReadPreference $readPreference ] )

Executes query on this server.

Note:

The readPreference parameter does not control the server to which the driver issues the query; the query will always be executed on this server object. Instead, it may be used when issuing the command to a secondary (from a replica set connection, not standalone) or mongos node to ensure that the driver sets the wire protocol accordingly or adds the read preference to the query document, respectively.

参数

namespace (string)

A fully qualified namespace (e.g. "databaseName.collectionName").

query (MongoDB\Driver\Query)

The MongoDB\Driver\Query to execute.

readPreference (MongoDB\Driver\ReadPreference)

Optionally, a MongoDB\Driver\ReadPreference to select the server for this operation. If none is given, the read preference from the MongoDB Connection URI will be used.

返回值

Returns MongoDB\Driver\Cursor on success.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\ConnectionException if connection to the server fails (for reasons other than authentication).
  • Throws MongoDB\Driver\Exception\AuthenticationException if authentication is needed and fails.
  • Throws MongoDB\Driver\Exception\RuntimeException on other errors (e.g. invalid query operators).

参见

  • MongoDB\Driver\Cursor
  • MongoDB\Driver\Query
  • MongoDB\Driver\ReadPreference
  • MongoDB\Driver\Manager::executeQuery() - Execute a database query
MongoDB\Driver\Server::executeCommand
MongoDB\Driver\Server::getHost
MongoDB\Driver\Server


Returns the hostname of this server

MongoDB\Driver\Server::executeQuery
MongoDB\Driver\Server::getInfo
MongoDB\Driver\Server
PHP Manual

MongoDB\Driver\Server::getHost

(mongodb >=1.0.0)

MongoDB\Driver\Server::getHost — Returns the hostname of this server

说明

final public string MongoDB\Driver\Server::getHost ( void )

Returns the hostname of this server.

参数

此函数没有参数。

返回值

Returns the hostname of this server.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\Server::getHost() example

<?php

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017/");

$rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY);
$server = $manager->selectServer($rp);

var_dump($server->getHost());

?>

以上例程会输出：

string(9) "localhost"

参见

  • MongoDB\Driver\Server::getInfo() - Returns an array of information about this server
MongoDB\Driver\Server::executeQuery
MongoDB\Driver\Server::getInfo
MongoDB\Driver\Server


Returns an array of information about this server

MongoDB\Driver\Server::getHost
MongoDB\Driver\Server::getLatency
MongoDB\Driver\Server
PHP Manual

MongoDB\Driver\Server::getInfo

(mongodb >=1.0.0)

MongoDB\Driver\Server::getInfo — Returns an array of information about this server

说明

final public array MongoDB\Driver\Server::getInfo ( void )

Returns an array of information about this server.

参数

此函数没有参数。

返回值

Returns an array of information about this server.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\Server::getInfo() example

<?php

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017/");

$rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY);
$server = $manager->selectServer($rp);

var_dump($server->getInfo());

?>

以上例程的输出类似于：

array(8) {
  ["ismaster"]=>
  bool(true)
  ["maxBsonObjectSize"]=>
  int(16777216)
  ["maxMessageSizeBytes"]=>
  int(48000000)
  ["maxWriteBatchSize"]=>
  int(1000)
  ["localTime"]=>
  object(MongoDB\BSON\UTCDateTime)#4 (1) {
    ["milliseconds"]=>
    int(1447276242774)
  }
  ["maxWireVersion"]=>
  int(3)
  ["minWireVersion"]=>
  int(0)
  ["ok"]=>
  float(1)
}
MongoDB\Driver\Server::getHost
MongoDB\Driver\Server::getLatency
MongoDB\Driver\Server


Returns the latency of this server

MongoDB\Driver\Server::getInfo
MongoDB\Driver\Server::getPort
MongoDB\Driver\Server
PHP Manual

MongoDB\Driver\Server::getLatency

(mongodb >=1.0.0)

MongoDB\Driver\Server::getLatency — Returns the latency of this server

说明

final public string MongoDB\Driver\Server::getLatency ( void )

Returns the latency of this server (i.e. the client's measured » round trip time of an ismaster command).

参数

此函数没有参数。

返回值

Returns the latency of this server.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\Server::getLatency() example

<?php

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017/");

$rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY);
$server = $manager->selectServer($rp);

var_dump($server->getLatency());

?>

以上例程的输出类似于：

int(592)

参见

  • MongoDB\Driver\Server::getInfo() - Returns an array of information about this server
  • » Server Discovery and Monitoring Specification
MongoDB\Driver\Server::getInfo
MongoDB\Driver\Server::getPort
MongoDB\Driver\Server


Returns the port on which this server is listening

MongoDB\Driver\Server::getLatency
MongoDB\Driver\Server::getTags
MongoDB\Driver\Server
PHP Manual

MongoDB\Driver\Server::getPort

(mongodb >=1.0.0)

MongoDB\Driver\Server::getPort — Returns the port on which this server is listening

说明

final public int MongoDB\Driver\Server::getPort ( void )

Returns the port on which this server is listening.

参数

此函数没有参数。

返回值

Returns the port on which this server is listening.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\Server::getPort() example

<?php

$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017/");

$rp = new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY);
$server = $manager->selectServer($rp);

var_dump($server->getPort());

?>

以上例程会输出：

int(27017)

参见

  • MongoDB\Driver\Server::getInfo() - Returns an array of information about this server
MongoDB\Driver\Server::getLatency
MongoDB\Driver\Server::getTags
MongoDB\Driver\Server


Returns an array of tags describing this server in a replica set

MongoDB\Driver\Server::getPort
MongoDB\Driver\Server::getType
MongoDB\Driver\Server
PHP Manual

MongoDB\Driver\Server::getTags

(mongodb >=1.0.0)

MongoDB\Driver\Server::getTags — Returns an array of tags describing this server in a replica set

说明

final public array MongoDB\Driver\Server::getTags ( void )

Returns an array of » tags used to describe this server in a replica set. The array will contain zero or more string key and value pairs.

参数

此函数没有参数。

返回值

Returns an array of tags used to describe this server in a replica set.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • MongoDB\Driver\Server::getInfo() - Returns an array of information about this server
MongoDB\Driver\Server::getPort
MongoDB\Driver\Server::getType
MongoDB\Driver\Server


Returns an integer denoting the type of this server

MongoDB\Driver\Server::getTags
MongoDB\Driver\Server::isArbiter
MongoDB\Driver\Server
PHP Manual

MongoDB\Driver\Server::getType

(mongodb >=1.0.0)

MongoDB\Driver\Server::getType — Returns an integer denoting the type of this server

说明

final public int MongoDB\Driver\Server::getType ( void )

Returns an integer denoting the type of this server. The value will correlate with a MongoDB\Driver\Server constant.

参数

此函数没有参数。

返回值

Returns an integer denoting the type of this server.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • MongoDB\Driver\Server::getInfo() - Returns an array of information about this server
MongoDB\Driver\Server::getTags
MongoDB\Driver\Server::isArbiter
MongoDB\Driver\Server


Checks if this server is an arbiter member of a replica set

MongoDB\Driver\Server::getType
MongoDB\Driver\Server::isHidden
MongoDB\Driver\Server
PHP Manual

MongoDB\Driver\Server::isArbiter

(mongodb >=1.0.0)

MongoDB\Driver\Server::isArbiter — Checks if this server is an arbiter member of a replica set

说明

final public bool MongoDB\Driver\Server::isArbiter ( void )

Returns whether this server is an » arbiter member of a replica set.

参数

此函数没有参数。

返回值

Returns TRUE if this server is an arbiter member of a replica set, and FALSE otherwise.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • MongoDB\Driver\Server::getInfo() - Returns an array of information about this server
MongoDB\Driver\Server::getType
MongoDB\Driver\Server::isHidden
MongoDB\Driver\Server


Checks if this server is a hidden member of a replica set

MongoDB\Driver\Server::isArbiter
MongoDB\Driver\Server::isPassive
MongoDB\Driver\Server
PHP Manual

MongoDB\Driver\Server::isHidden

(mongodb >=1.0.0)

MongoDB\Driver\Server::isHidden — Checks if this server is a hidden member of a replica set

说明

final public bool MongoDB\Driver\Server::isHidden ( void )

Returns whether this server is a » hidden member of a replica set.

参数

此函数没有参数。

返回值

Returns TRUE if this server is a hidden member of a replica set, and FALSE otherwise.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • MongoDB\Driver\Server::getInfo() - Returns an array of information about this server
MongoDB\Driver\Server::isArbiter
MongoDB\Driver\Server::isPassive
MongoDB\Driver\Server


Checks if this server is a passive member of a replica set

MongoDB\Driver\Server::isHidden
MongoDB\Driver\Server::isPrimary
MongoDB\Driver\Server
PHP Manual

MongoDB\Driver\Server::isPassive

(mongodb >=1.0.0)

MongoDB\Driver\Server::isPassive — Checks if this server is a passive member of a replica set

说明

final public bool MongoDB\Driver\Server::isPassive ( void )

Returns whether this server is a » passive member of a replica set (i.e. its priority is 0).

参数

此函数没有参数。

返回值

Returns TRUE if this server is a passive member of a replica set, and FALSE otherwise.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • MongoDB\Driver\Server::getInfo() - Returns an array of information about this server
MongoDB\Driver\Server::isHidden
MongoDB\Driver\Server::isPrimary
MongoDB\Driver\Server


Checks if this server is a primary member of a replica set

MongoDB\Driver\Server::isPassive
MongoDB\Driver\Server::isSecondary
MongoDB\Driver\Server
PHP Manual

MongoDB\Driver\Server::isPrimary

(mongodb >=1.0.0)

MongoDB\Driver\Server::isPrimary — Checks if this server is a primary member of a replica set

说明

final public bool MongoDB\Driver\Server::isPrimary ( void )

Returns whether this server is a » primary member of a replica set.

参数

此函数没有参数。

返回值

Returns TRUE if this server is a primary member of a replica set, and FALSE otherwise.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • MongoDB\Driver\Server::getInfo() - Returns an array of information about this server
MongoDB\Driver\Server::isPassive
MongoDB\Driver\Server::isSecondary
MongoDB\Driver\Server


Checks if this server is a secondary member of a replica set

MongoDB\Driver\Server::isPrimary
MongoDB\Driver\WriteConcernError
MongoDB\Driver\Server
PHP Manual

MongoDB\Driver\Server::isSecondary

(mongodb >=1.0.0)

MongoDB\Driver\Server::isSecondary — Checks if this server is a secondary member of a replica set

说明

final public bool MongoDB\Driver\Server::isSecondary ( void )

Returns whether this server is a » secondary member of a replica set.

参数

此函数没有参数。

返回值

Returns TRUE if this server is a secondary member of a replica set, and FALSE otherwise.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • MongoDB\Driver\Server::getInfo() - Returns an array of information about this server
MongoDB\Driver\Server::isPrimary
MongoDB\Driver\WriteConcernError
MongoDB\Driver\Server


The MongoDB\Driver\WriteConcernError class

(mongodb >=1.0.0)

简介

The MongoDB\Driver\WriteConcernError class encapsulates information about a write concern error and may be returned by MongoDB\Driver\WriteResult::getWriteConcernError().

类摘要

final MongoDB\Driver\WriteConcernError {
/* 方法 */
final public int getCode ( void )
final public mixed getInfo ( void )
final public string getMessage ( void )
}

Table of Contents

  • MongoDB\Driver\WriteConcernError::getCode — Returns the WriteConcernError's error code
  • MongoDB\Driver\WriteConcernError::getInfo — Returns additional metadata for the WriteConcernError
  • MongoDB\Driver\WriteConcernError::getMessage — Returns the WriteConcernError's error message
MongoDB\Driver\Server::isSecondary
MongoDB\Driver\WriteConcernError::getCode
MongoDB\Driver


Returns the WriteConcernError's error code

MongoDB\Driver\WriteConcernError
MongoDB\Driver\WriteConcernError::getInfo
MongoDB\Driver\WriteConcernError
PHP Manual

MongoDB\Driver\WriteConcernError::getCode

(mongodb >=1.0.0)

MongoDB\Driver\WriteConcernError::getCode — Returns the WriteConcernError's error code

说明

final public int MongoDB\Driver\WriteConcernError::getCode ( void )

参数

此函数没有参数。

返回值

Returns the WriteConcernError's error code.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\WriteConcernError::getCode() example

<?php

$manager = new MongoDB\Driver\Manager("mongodb://rs1.example.com,rs2.example.com/?replicaSet=myReplicaSet");

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);

$writeConcern = new MongoDB\Driver\WriteConcern(2, 1);

try {
    $manager->executeBulkWrite('db.collection', $bulk, $writeConcern);
} catch(MongoDB\Driver\Exception\BulkWriteException $e) {
    var_dump($e->getWriteResult()->getWriteConcernError()->getCode());
}

?>

以上例程的输出类似于：

int(64)

参见

  • » Write Concern reference
MongoDB\Driver\WriteConcernError
MongoDB\Driver\WriteConcernError::getInfo
MongoDB\Driver\WriteConcernError


Returns additional metadata for the WriteConcernError

MongoDB\Driver\WriteConcernError::getCode
MongoDB\Driver\WriteConcernError::getMessage
MongoDB\Driver\WriteConcernError
PHP Manual

MongoDB\Driver\WriteConcernError::getInfo

(mongodb >=1.0.0)

MongoDB\Driver\WriteConcernError::getInfo — Returns additional metadata for the WriteConcernError

说明

final public mixed MongoDB\Driver\WriteConcernError::getInfo ( void )

参数

此函数没有参数。

返回值

Returns additional metadata for the WriteConcernError, or NULL if no metadata is available.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\WriteConcernError::getInfo() example

<?php

$manager = new MongoDB\Driver\Manager("mongodb://rs1.example.com,rs2.example.com/?replicaSet=myReplicaSet");

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);

$writeConcern = new MongoDB\Driver\WriteConcern(2, 1);

try {
    $manager->executeBulkWrite('db.collection', $bulk, $writeConcern);
} catch(MongoDB\Driver\Exception\BulkWriteException $e) {
    var_dump($e->getWriteResult()->getWriteConcernError()->getInfo());
}

?>

以上例程的输出类似于：

object(stdClass)#1 (1) {
  ["wtimeout"]=>
  bool(true)
}

参见

  • » Write Concern reference
MongoDB\Driver\WriteConcernError::getCode
MongoDB\Driver\WriteConcernError::getMessage
MongoDB\Driver\WriteConcernError


Returns the WriteConcernError's error message

MongoDB\Driver\WriteConcernError::getInfo
MongoDB\Driver\WriteError
MongoDB\Driver\WriteConcernError
PHP Manual

MongoDB\Driver\WriteConcernError::getMessage

(mongodb >=1.0.0)

MongoDB\Driver\WriteConcernError::getMessage — Returns the WriteConcernError's error message

说明

final public string MongoDB\Driver\WriteConcernError::getMessage ( void )

参数

此函数没有参数。

返回值

Returns the WriteConcernError's error message.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\WriteConcernError::getMessage() example

<?php

$manager = new MongoDB\Driver\Manager("mongodb://rs1.example.com,rs2.example.com/?replicaSet=myReplicaSet");

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);

$writeConcern = new MongoDB\Driver\WriteConcern(2, 1);

try {
    $manager->executeBulkWrite('db.collection', $bulk, $writeConcern);
} catch(MongoDB\Driver\Exception\BulkWriteException $e) {
    var_dump($e->getWriteResult()->getWriteConcernError()->getMessage());
}

?>

以上例程的输出类似于：

string(33) "waiting for replication timed out"

参见

  • » Write Concern reference
MongoDB\Driver\WriteConcernError::getInfo
MongoDB\Driver\WriteError
MongoDB\Driver\WriteConcernError


The MongoDB\Driver\WriteError class

(mongodb >=1.0.0)

简介

The MongoDB\Driver\WriteError class encapsulates information about a write error and may be returned as an array element from MongoDB\Driver\WriteResult::getWriteErrors().

类摘要

final MongoDB\Driver\WriteError {
/* 方法 */
final public int getCode ( void )
final public int getIndex ( void )
final public mixed getInfo ( void )
final public string getMessage ( void )
}

Table of Contents

  • MongoDB\Driver\WriteError::getCode — Returns the WriteError's error code
  • MongoDB\Driver\WriteError::getIndex — Returns the index of the write operation corresponding to this WriteError
  • MongoDB\Driver\WriteError::getInfo — Returns additional metadata for the WriteError
  • MongoDB\Driver\WriteError::getMessage — Returns the WriteError's error message
MongoDB\Driver\WriteConcernError::getMessage
MongoDB\Driver\WriteError::getCode
MongoDB\Driver


Returns the WriteError's error code

MongoDB\Driver\WriteError
MongoDB\Driver\WriteError::getIndex
MongoDB\Driver\WriteError
PHP Manual

MongoDB\Driver\WriteError::getCode

(mongodb >=1.0.0)

MongoDB\Driver\WriteError::getCode — Returns the WriteError's error code

说明

final public int MongoDB\Driver\WriteError::getCode ( void )

参数

此函数没有参数。

返回值

Returns the WriteError's error code.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\WriteError::getCode() example

<?php

$manager = new MongoDB\Driver\Manager;

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['_id' => 1]);
$bulk->insert(['_id' => 1]);

try {
    $manager->executeBulkWrite('db.collection', $bulk);
} catch(MongoDB\Driver\Exception\BulkWriteException $e) {
    var_dump($e->getWriteResult()->getWriteErrors()[0]->getCode());
}

?>

以上例程的输出类似于：

int(11000)
MongoDB\Driver\WriteError
MongoDB\Driver\WriteError::getIndex
MongoDB\Driver\WriteError


Returns the index of the write operation corresponding to this WriteError

MongoDB\Driver\WriteError::getCode
MongoDB\Driver\WriteError::getInfo
MongoDB\Driver\WriteError
PHP Manual

MongoDB\Driver\WriteError::getIndex

(mongodb >=1.0.0)

MongoDB\Driver\WriteError::getIndex — Returns the index of the write operation corresponding to this WriteError

说明

final public int MongoDB\Driver\WriteError::getIndex ( void )

参数

此函数没有参数。

返回值

Returns the index of the write operation (from MongoDB\Driver\BulkWrite) corresponding to this WriteError.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\WriteError::getIndex() example

<?php

$manager = new MongoDB\Driver\Manager;

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['_id' => 1]);
$bulk->insert(['_id' => 1]);

try {
    $manager->executeBulkWrite('db.collection', $bulk);
} catch(MongoDB\Driver\Exception\BulkWriteException $e) {
    var_dump($e->getWriteResult()->getWriteErrors()[0]->getIndex());
}

?>

以上例程的输出类似于：

int(1)

参见

  • MongoDB\Driver\BulkWrite
MongoDB\Driver\WriteError::getCode
MongoDB\Driver\WriteError::getInfo
MongoDB\Driver\WriteError


Returns additional metadata for the WriteError

MongoDB\Driver\WriteError::getIndex
MongoDB\Driver\WriteError::getMessage
MongoDB\Driver\WriteError
PHP Manual

MongoDB\Driver\WriteError::getInfo

(mongodb >=1.0.0)

MongoDB\Driver\WriteError::getInfo — Returns additional metadata for the WriteError

说明

final public mixed MongoDB\Driver\WriteError::getInfo ( void )

参数

此函数没有参数。

返回值

Returns additional metadata for the WriteError, or NULL if no metadata is available.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
MongoDB\Driver\WriteError::getIndex
MongoDB\Driver\WriteError::getMessage
MongoDB\Driver\WriteError


Returns the WriteError's error message

MongoDB\Driver\WriteError::getInfo
MongoDB\Driver\WriteResult
MongoDB\Driver\WriteError
PHP Manual

MongoDB\Driver\WriteError::getMessage

(mongodb >=1.0.0)

MongoDB\Driver\WriteError::getMessage — Returns the WriteError's error message

说明

final public string MongoDB\Driver\WriteError::getMessage ( void )

参数

此函数没有参数。

返回值

Returns the WriteError's error message.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\WriteError::getMessage() example

<?php

$manager = new MongoDB\Driver\Manager;

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['_id' => 1]);
$bulk->insert(['_id' => 1]);

try {
    $manager->executeBulkWrite('db.collection', $bulk);
} catch(MongoDB\Driver\Exception\BulkWriteException $e) {
    var_dump($e->getWriteResult()->getWriteErrors()[0]->getMessage());
}

?>

以上例程的输出类似于：

string(70) "E11000 duplicate key error index: db.collection.$_id_ dup key: { : 1 }"
MongoDB\Driver\WriteError::getInfo
MongoDB\Driver\WriteResult
MongoDB\Driver\WriteError


The MongoDB\Driver\WriteResult class

(mongodb >=1.0.0)

简介

The MongoDB\Driver\WriteResult class encapsulates information about an executed MongoDB\Driver\BulkWrite and may be returned by MongoDB\Driver\Manager::executeBulkWrite().

类摘要

final MongoDB\Driver\WriteResult {
/* 方法 */
final public int|null getDeletedCount ( void )
final public int|null getInsertedCount ( void )
final public int|null getMatchedCount ( void )
final public int|null getModifiedCount ( void )
final public MongoDB\Driver\Server getServer ( void )
final public int|null getUpsertedCount ( void )
final public array getUpsertedIds ( void )
final public MongoDB\Driver\WriteConcernError|null getWriteConcernError ( void )
final public array getWriteErrors ( void )
final public bool isAcknowledged ( void )
}

Table of Contents

  • MongoDB\Driver\WriteResult::getDeletedCount — Returns the number of documents deleted
  • MongoDB\Driver\WriteResult::getInsertedCount — Returns the number of documents inserted (excluding upserts)
  • MongoDB\Driver\WriteResult::getMatchedCount — Returns the number of documents selected for update
  • MongoDB\Driver\WriteResult::getModifiedCount — Returns the number of existing documents updated
  • MongoDB\Driver\WriteResult::getServer — Returns the server associated with this write result
  • MongoDB\Driver\WriteResult::getUpsertedCount — Returns the number of documents inserted by an upsert
  • MongoDB\Driver\WriteResult::getUpsertedIds — Returns an array of identifiers for upserted documents
  • MongoDB\Driver\WriteResult::getWriteConcernError — Returns any write concern error that occurred
  • MongoDB\Driver\WriteResult::getWriteErrors — Returns any write errors that occurred
  • MongoDB\Driver\WriteResult::isAcknowledged — Returns whether the write was acknowledged
MongoDB\Driver\WriteError::getMessage
MongoDB\Driver\WriteResult::getDeletedCount
MongoDB\Driver


Returns the number of documents deleted

MongoDB\Driver\WriteResult
MongoDB\Driver\WriteResult::getInsertedCount
MongoDB\Driver\WriteResult
PHP Manual

MongoDB\Driver\WriteResult::getDeletedCount

(mongodb >=1.0.0)

MongoDB\Driver\WriteResult::getDeletedCount — Returns the number of documents deleted

说明

final public int|null MongoDB\Driver\WriteResult::getDeletedCount ( void )

参数

此函数没有参数。

返回值

Returns the number of documents deleted, or NULL if the write was not acknowledged.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\WriteResult::getDeletedCount() example

<?php

$manager = new MongoDB\Driver\Manager;

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);
$bulk->update(['x' => 1], ['$set' => ['y' => 3]]);
$bulk->update(['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
$bulk->update(['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
$bulk->delete(['x' => 1]);

$result = $manager->executeBulkWrite('db.collection', $bulk);

var_dump($result->getDeletedCount());

?>

以上例程会输出：

int(1)

参见

  • MongoDB\Driver\WriteResult::isAcknowledged() - Returns whether the write was acknowledged
MongoDB\Driver\WriteResult
MongoDB\Driver\WriteResult::getInsertedCount
MongoDB\Driver\WriteResult


Returns the number of documents inserted (excluding upserts)

MongoDB\Driver\WriteResult::getDeletedCount
MongoDB\Driver\WriteResult::getMatchedCount
MongoDB\Driver\WriteResult
PHP Manual

MongoDB\Driver\WriteResult::getInsertedCount

(mongodb >=1.0.0)

MongoDB\Driver\WriteResult::getInsertedCount — Returns the number of documents inserted (excluding upserts)

说明

final public int|null MongoDB\Driver\WriteResult::getInsertedCount ( void )

参数

此函数没有参数。

返回值

Returns the number of documents inserted (excluding upserts), or NULL if the write was not acknowledged.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\WriteResult::getInsertedCount() example

<?php

$manager = new MongoDB\Driver\Manager;

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);
$bulk->update(['x' => 1], ['$set' => ['y' => 3]]);
$bulk->update(['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
$bulk->update(['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
$bulk->delete(['x' => 1]);

$result = $manager->executeBulkWrite('db.collection', $bulk);

var_dump($result->getInsertedCount());

?>

以上例程会输出：

int(1)

参见

  • MongoDB\Driver\WriteResult::isAcknowledged() - Returns whether the write was acknowledged
MongoDB\Driver\WriteResult::getDeletedCount
MongoDB\Driver\WriteResult::getMatchedCount
MongoDB\Driver\WriteResult


Returns the number of documents selected for update

MongoDB\Driver\WriteResult::getInsertedCount
MongoDB\Driver\WriteResult::getModifiedCount
MongoDB\Driver\WriteResult
PHP Manual

MongoDB\Driver\WriteResult::getMatchedCount

(mongodb >=1.0.0)

MongoDB\Driver\WriteResult::getMatchedCount — Returns the number of documents selected for update

说明

final public int|null MongoDB\Driver\WriteResult::getMatchedCount ( void )

If the update operation results in no change to the document (e.g. setting the value of a field to its current value), the matched count may be greater than the value returned by MongoDB\Driver\WriteResult::getModifiedCount().

参数

此函数没有参数。

返回值

Returns the number of documents selected for update, or NULL if the write was not acknowledged.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\WriteResult::getMatchedCount() example

<?php

$manager = new MongoDB\Driver\Manager;

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);
$bulk->update(['x' => 1], ['$set' => ['y' => 3]]);
$bulk->update(['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
$bulk->update(['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
$bulk->delete(['x' => 1]);

$result = $manager->executeBulkWrite('db.collection', $bulk);

var_dump($result->getMatchedCount());

?>

以上例程会输出：

int(1)

参见

  • MongoDB\Driver\WriteResult::getModifiedCount() - Returns the number of existing documents updated
  • MongoDB\Driver\WriteResult::isAcknowledged() - Returns whether the write was acknowledged
MongoDB\Driver\WriteResult::getInsertedCount
MongoDB\Driver\WriteResult::getModifiedCount
MongoDB\Driver\WriteResult


Returns the number of existing documents updated

MongoDB\Driver\WriteResult::getMatchedCount
MongoDB\Driver\WriteResult::getServer
MongoDB\Driver\WriteResult
PHP Manual

MongoDB\Driver\WriteResult::getModifiedCount

(mongodb >=1.0.0)

MongoDB\Driver\WriteResult::getModifiedCount — Returns the number of existing documents updated

说明

final public int|null MongoDB\Driver\WriteResult::getModifiedCount ( void )

If the update operation results in no change to the document (e.g. setting the value of a field to its current value), the modified count may be less than the value returned by MongoDB\Driver\WriteResult::getMatchedCount().

参数

此函数没有参数。

返回值

Returns the number of existing documents updated, or NULL if the write was not acknowledged.

The modified count is not available on versions of MongoDB before 2.6, which used the legacy wire protocol version (i.e. OP_UPDATE). If this is the case, the modified count will also be NULL.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\WriteResult::getModifiedCount() example

<?php

$manager = new MongoDB\Driver\Manager;

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);
$bulk->update(['x' => 1], ['$set' => ['y' => 3]]);
$bulk->update(['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
$bulk->update(['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
$bulk->delete(['x' => 1]);

$result = $manager->executeBulkWrite('db.collection', $bulk);

var_dump($result->getModifiedCount());

?>

以上例程会输出：

int(1)

参见

  • MongoDB\Driver\WriteResult::getMatchedCount() - Returns the number of documents selected for update
  • MongoDB\Driver\WriteResult::isAcknowledged() - Returns whether the write was acknowledged
MongoDB\Driver\WriteResult::getMatchedCount
MongoDB\Driver\WriteResult::getServer
MongoDB\Driver\WriteResult


Returns the server associated with this write result

MongoDB\Driver\WriteResult::getModifiedCount
MongoDB\Driver\WriteResult::getUpsertedCount
MongoDB\Driver\WriteResult
PHP Manual

MongoDB\Driver\WriteResult::getServer

(mongodb >=1.0.0)

MongoDB\Driver\WriteResult::getServer — Returns the server associated with this write result

说明

final public MongoDB\Driver\Server MongoDB\Driver\WriteResult::getServer ( void )

Returns the MongoDB\Driver\Server associated with this write result. This is the server that executed the MongoDB\Driver\BulkWrite.

参数

此函数没有参数。

返回值

Returns the MongoDB\Driver\Server associated with this write result.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\WriteResult::getServer() example

<?php

$manager = new MongoDB\Driver\Manager;
$server = $manager->selectServer(new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY));

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);

$result = $server->executeBulkWrite('db.collection', $bulk);

var_dump($result->getServer() == $server);

?>

以上例程会输出：

bool(true)

参见

  • MongoDB\Driver\Server
MongoDB\Driver\WriteResult::getModifiedCount
MongoDB\Driver\WriteResult::getUpsertedCount
MongoDB\Driver\WriteResult


Returns the number of documents inserted by an upsert

MongoDB\Driver\WriteResult::getServer
MongoDB\Driver\WriteResult::getUpsertedIds
MongoDB\Driver\WriteResult
PHP Manual

MongoDB\Driver\WriteResult::getUpsertedCount

(mongodb >=1.0.0)

MongoDB\Driver\WriteResult::getUpsertedCount — Returns the number of documents inserted by an upsert

说明

final public int|null MongoDB\Driver\WriteResult::getUpsertedCount ( void )

参数

此函数没有参数。

返回值

Returns the number of documents inserted by an upsert.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\WriteResult::getUpsertedCount() example

<?php

$manager = new MongoDB\Driver\Manager;

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);
$bulk->update(['x' => 1], ['$set' => ['y' => 3]]);
$bulk->update(['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
$bulk->update(['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
$bulk->delete(['x' => 1]);

$result = $manager->executeBulkWrite('db.collection', $bulk);

var_dump($result->getUpsertedCount());

?>

以上例程会输出：

int(2)

参见

  • MongoDB\Driver\WriteResult::getUpsertedIds() - Returns an array of identifiers for upserted documents
  • MongoDB\Driver\WriteResult::isAcknowledged() - Returns whether the write was acknowledged
MongoDB\Driver\WriteResult::getServer
MongoDB\Driver\WriteResult::getUpsertedIds
MongoDB\Driver\WriteResult


Returns an array of identifiers for upserted documents

MongoDB\Driver\WriteResult::getUpsertedCount
MongoDB\Driver\WriteResult::getWriteConcernError
MongoDB\Driver\WriteResult
PHP Manual

MongoDB\Driver\WriteResult::getUpsertedIds

(mongodb >=1.0.0)

MongoDB\Driver\WriteResult::getUpsertedIds — Returns an array of identifiers for upserted documents

说明

final public array MongoDB\Driver\WriteResult::getUpsertedIds ( void )

参数

此函数没有参数。

返回值

Returns an array of identifiers (i.e. "_id" field values) for upserted documents. The array keys will correspond to the index of the write operation (from MongoDB\Driver\BulkWrite) responsible for the upsert.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\WriteResult::getUpsertedIds() example

<?php

$manager = new MongoDB\Driver\Manager;

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);
$bulk->update(['x' => 1], ['$set' => ['y' => 3]]);
$bulk->update(['x' => 2], ['$set' => ['y' => 1]], ['upsert' => true]);
$bulk->update(['x' => 3], ['$set' => ['y' => 2]], ['upsert' => true]);
$bulk->delete(['x' => 1]);

$result = $manager->executeBulkWrite('db.collection', $bulk);

var_dump($result->getUpsertedIds());

?>

以上例程的输出类似于：

array(2) {
  [2]=>
  object(MongoDB\BSON\ObjectID)#4 (1) {
    ["oid"]=>
    string(24) "580e62a224f2302f191b880b"
  }
  [3]=>
  object(MongoDB\BSON\ObjectID)#5 (1) {
    ["oid"]=>
    string(24) "580e62a224f2302f191b880c"
  }
}

参见

  • MongoDB\Driver\WriteResult::getUpsertedCount() - Returns the number of documents inserted by an upsert
  • MongoDB\Driver\WriteResult::isAcknowledged() - Returns whether the write was acknowledged
MongoDB\Driver\WriteResult::getUpsertedCount
MongoDB\Driver\WriteResult::getWriteConcernError
MongoDB\Driver\WriteResult


Returns any write concern error that occurred

MongoDB\Driver\WriteResult::getUpsertedIds
MongoDB\Driver\WriteResult::getWriteErrors
MongoDB\Driver\WriteResult
PHP Manual

MongoDB\Driver\WriteResult::getWriteConcernError

(mongodb >=1.0.0)

MongoDB\Driver\WriteResult::getWriteConcernError — Returns any write concern error that occurred

说明

final public MongoDB\Driver\WriteConcernError|null MongoDB\Driver\WriteResult::getWriteConcernError ( void )

参数

此函数没有参数。

返回值

Returns a MongoDB\Driver\WriteConcernError if a write concern error was encountered during the write operation, and NULL otherwise.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\WriteResult::getWriteConcernError() example

<?php

$manager = new MongoDB\Driver\Manager("mongodb://rs1.example.com,rs2.example.com/?replicaSet=myReplicaSet");

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);

$writeConcern = new MongoDB\Driver\WriteConcern(2, 1);

try {
    $manager->executeBulkWrite('db.collection', $bulk, $writeConcern);
} catch(MongoDB\Driver\Exception\BulkWriteException $e) {
    var_dump($e->getWriteResult()->getWriteConcernError());
}

?>

以上例程的输出类似于：

object(MongoDB\Driver\WriteConcernError)#6 (3) {
  ["message"]=>
  string(33) "waiting for replication timed out"
  ["code"]=>
  int(64)
  ["info"]=>
  object(stdClass)#7 (1) {
    ["wtimeout"]=>
    bool(true)
  }
}

参见

  • MongoDB\Driver\WriteConcern
  • » Write Concern reference
MongoDB\Driver\WriteResult::getUpsertedIds
MongoDB\Driver\WriteResult::getWriteErrors
MongoDB\Driver\WriteResult


Returns any write errors that occurred

MongoDB\Driver\WriteResult::getWriteConcernError
MongoDB\Driver\WriteResult::isAcknowledged
MongoDB\Driver\WriteResult
PHP Manual

MongoDB\Driver\WriteResult::getWriteErrors

(mongodb >=1.0.0)

MongoDB\Driver\WriteResult::getWriteErrors — Returns any write errors that occurred

说明

final public array MongoDB\Driver\WriteResult::getWriteErrors ( void )

参数

此函数没有参数。

返回值

Returns an array of MongoDB\Driver\WriteError objects for any write errors encountered during the write operation. The array will be empty if no write errors occurred.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\WriteResult::getWriteErrors() with a single error

<?php

$manager = new MongoDB\Driver\Manager;

/* By default, bulk write operations are executed serially in order and
 * execution will stop after the first error.
 */
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['_id' => 1]);
$bulk->insert(['_id' => 2]);
$bulk->insert(['_id' => 2]);
$bulk->insert(['_id' => 3]);
$bulk->insert(['_id' => 4]);
$bulk->insert(['_id' => 4]);

try {
    $result = $manager->executeBulkWrite('db.collection', $bulk);
} catch (MongoDB\Driver\Exception\BulkWriteException $e) {
    var_dump($e->getWriteResult()->getWriteErrors());
}

?>

以上例程的输出类似于：

array(1) {
  [0]=>
  object(MongoDB\Driver\WriteError)#5 (4) {
    ["message"]=>
    string(81) "E11000 duplicate key error collection: db.collection index: _id_ dup key: { : 2 }"
    ["code"]=>
    int(11000)
    ["index"]=>
    int(2)
    ["info"]=>
    NULL
  }
}

Example #2 MongoDB\Driver\WriteResult::getWriteErrors() with multiple errors

<?php

$manager = new MongoDB\Driver\Manager;

/* The "ordered" option may be used to allow bulk write operations to continue
 * executing after the first error is encountered.
 */
$bulk = new MongoDB\Driver\BulkWrite(['ordered' => false]);
$bulk->insert(['_id' => 1]);
$bulk->insert(['_id' => 2]);
$bulk->insert(['_id' => 2]);
$bulk->insert(['_id' => 3]);
$bulk->insert(['_id' => 4]);
$bulk->insert(['_id' => 4]);

try {
    $result = $manager->executeBulkWrite('db.collection', $bulk);
} catch (MongoDB\Driver\Exception\BulkWriteException $e) {
    var_dump($e->getWriteResult()->getWriteErrors());
}

?>

以上例程的输出类似于：

array(2) {
  [0]=>
  object(MongoDB\Driver\WriteError)#5 (4) {
    ["message"]=>
    string(81) "E11000 duplicate key error collection: db.collection index: _id_ dup key: { : 2 }"
    ["code"]=>
    int(11000)
    ["index"]=>
    int(2)
    ["info"]=>
    NULL
  }
  [1]=>
  object(MongoDB\Driver\WriteError)#6 (4) {
    ["message"]=>
    string(81) "E11000 duplicate key error collection: db.collection index: _id_ dup key: { : 4 }"
    ["code"]=>
    int(11000)
    ["index"]=>
    int(5)
    ["info"]=>
    NULL
  }
}

参见

  • MongoDB\Driver\WriteError
MongoDB\Driver\WriteResult::getWriteConcernError
MongoDB\Driver\WriteResult::isAcknowledged
MongoDB\Driver\WriteResult


Returns whether the write was acknowledged

MongoDB\Driver\WriteResult::getWriteErrors
MongoDB\BSON
MongoDB\Driver\WriteResult
PHP Manual

MongoDB\Driver\WriteResult::isAcknowledged

(mongodb >=1.0.0)

MongoDB\Driver\WriteResult::isAcknowledged — Returns whether the write was acknowledged

说明

final public bool MongoDB\Driver\WriteResult::isAcknowledged ( void )

If the write is acknowledged, other count fields will be available on the MongoDB\Driver\WriteResult object.

参数

此函数没有参数。

返回值

Returns TRUE if the write was acknowledged, and FALSE otherwise.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\Driver\WriteResult::isAcknowledged() with acknowledged write concern

<?php

$manager = new MongoDB\Driver\Manager;

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);

$result = $manager->executeBulkWrite('db.collection', $bulk);

var_dump($result->isAcknowledged());

?>

以上例程会输出：

bool(true)

Example #2 MongoDB\Driver\WriteResult::isAcknowledged() with unacknowledged write concern

<?php

$manager = new MongoDB\Driver\Manager;

$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['x' => 1]);

$result = $manager->executeBulkWrite('db.collection', $bulk, new MongoDB\Driver\WriteConcern(0));

var_dump($result->isAcknowledged());

?>

以上例程会输出：

bool(false)

参见

  • MongoDB\Driver\WriteConcern
  • » Write Concern reference
MongoDB\Driver\WriteResult::getWriteErrors
MongoDB\BSON
MongoDB\Driver\WriteResult


BSON type classes and serialization functions

  • 函数
    • MongoDB\BSON\fromJSON — Returns the BSON representation of a JSON value
    • MongoDB\BSON\fromPHP — Returns the BSON representation of a PHP value
    • MongoDB\BSON\toJSON — Returns the JSON representation of a BSON value
    • MongoDB\BSON\toPHP — Returns the PHP representation of a BSON value
  • MongoDB\BSON\Binary — The MongoDB\BSON\Binary class
    • MongoDB\BSON\Binary::__construct — Construct a new Binary
    • MongoDB\BSON\Binary::getData — Returns the Binary's data
    • MongoDB\BSON\Binary::getType — Returns the Binary's type
    • MongoDB\BSON\Binary::jsonSerialize — Returns a representation that can be converted to JSON
    • MongoDB\BSON\Binary::serialize — Serialize a Binary
    • MongoDB\BSON\Binary::__toString — Returns the Binary's data
    • MongoDB\BSON\Binary::unserialize — Unserialize a Binary
  • MongoDB\BSON\Decimal128 — The MongoDB\BSON\Decimal128 class
    • MongoDB\BSON\Decimal128::__construct — Construct a new Decimal128
    • MongoDB\BSON\Decimal128::jsonSerialize — Returns a representation that can be converted to JSON
    • MongoDB\BSON\Decimal128::serialize — Serialize a Decimal128
    • MongoDB\BSON\Decimal128::__toString — Returns the string representation of this Decimal128
    • MongoDB\BSON\Decimal128::unserialize — Unserialize a Decimal128
  • MongoDB\BSON\Javascript — The MongoDB\BSON\Javascript class
    • MongoDB\BSON\Javascript::__construct — Construct a new Javascript
    • MongoDB\BSON\Javascript::getCode — Returns the Javascript's code
    • MongoDB\BSON\Javascript::getScope — Returns the Javascript's scope document
    • MongoDB\BSON\Javascript::jsonSerialize — Returns a representation that can be converted to JSON
    • MongoDB\BSON\Javascript::serialize — Serialize a Javascript
    • MongoDB\BSON\Javascript::__toString — Returns the Javascript's code
    • MongoDB\BSON\Javascript::unserialize — Unserialize a Javascript
  • MongoDB\BSON\MaxKey — The MongoDB\BSON\MaxKey class
    • MongoDB\BSON\MaxKey::__construct — Construct a new MaxKey
    • MongoDB\BSON\MaxKey::jsonSerialize — Returns a representation that can be converted to JSON
    • MongoDB\BSON\MaxKey::serialize — Serialize a MaxKey
    • MongoDB\BSON\MaxKey::unserialize — Unserialize a MaxKey
  • MongoDB\BSON\MinKey — The MongoDB\BSON\MinKey class
    • MongoDB\BSON\MinKey::__construct — Construct a new MinKey
    • MongoDB\BSON\MinKey::jsonSerialize — Returns a representation that can be converted to JSON
    • MongoDB\BSON\MinKey::serialize — Serialize a MinKey
    • MongoDB\BSON\MinKey::unserialize — Unserialize a MinKey
  • MongoDB\BSON\ObjectID — The MongoDB\BSON\ObjectID class
    • MongoDB\BSON\ObjectID::__construct — Construct a new ObjectID
    • MongoDB\BSON\ObjectID::getTimestamp — Returns the timestamp component of this ObjectID
    • MongoDB\BSON\ObjectID::jsonSerialize — Returns a representation that can be converted to JSON
    • MongoDB\BSON\ObjectID::serialize — Serialize an ObjectID
    • MongoDB\BSON\ObjectID::__toString — Returns the hexidecimal representation of this ObjectID
    • MongoDB\BSON\ObjectID::unserialize — Unserialize an ObjectID
  • MongoDB\BSON\Regex — The MongoDB\BSON\Regex class
    • MongoDB\BSON\Regex::__construct — Construct a new Regex
    • MongoDB\BSON\Regex::getFlags — Returns the Regex's flags
    • MongoDB\BSON\Regex::getPattern — Returns the Regex's pattern
    • MongoDB\BSON\Regex::jsonSerialize — Returns a representation that can be converted to JSON
    • MongoDB\BSON\Regex::serialize — Serialize a Regex
    • MongoDB\BSON\Regex::__toString — Returns the string representation of this Regex
    • MongoDB\BSON\Regex::unserialize — Unserialize a Regex
  • MongoDB\BSON\Timestamp — The MongoDB\BSON\Timestamp class
    • MongoDB\BSON\Timestamp::__construct — Construct a new Timestamp
    • MongoDB\BSON\Timestamp::jsonSerialize — Returns a representation that can be converted to JSON
    • MongoDB\BSON\Timestamp::serialize — Serialize a Timestamp
    • MongoDB\BSON\Timestamp::__toString — Returns the string representation of this Timestamp
    • MongoDB\BSON\Timestamp::unserialize — Unserialize a Timestamp
  • MongoDB\BSON\UTCDateTime — The MongoDB\BSON\UTCDateTime class
    • MongoDB\BSON\UTCDateTime::__construct — Construct a new UTCDateTime
    • MongoDB\BSON\UTCDateTime::jsonSerialize — Returns a representation that can be converted to JSON
    • MongoDB\BSON\UTCDateTime::serialize — Serialize a UTCDateTime
    • MongoDB\BSON\UTCDateTime::toDateTime — Returns the DateTime representation of this UTCDateTime
    • MongoDB\BSON\UTCDateTime::__toString — Returns the string representation of this UTCDateTime
    • MongoDB\BSON\UTCDateTime::unserialize — Unserialize a UTCDateTime
  • MongoDB\BSON\Type — The MongoDB\BSON\Type interface
  • MongoDB\BSON\Persistable — The MongoDB\BSON\Persistable interface
  • MongoDB\BSON\Serializable — The MongoDB\BSON\Serializable interface
    • MongoDB\BSON\Serializable::bsonSerialize — Provides an array or document to serialize as BSON
  • MongoDB\BSON\Unserializable — The MongoDB\BSON\Unserializable interface
    • MongoDB\BSON\Unserializable::bsonUnserialize — Constructs the object from a BSON array or document
MongoDB\Driver\WriteResult::isAcknowledged
函数
MongoDB


函数

Table of Contents

  • MongoDB\BSON\fromJSON — Returns the BSON representation of a JSON value
  • MongoDB\BSON\fromPHP — Returns the BSON representation of a PHP value
  • MongoDB\BSON\toJSON — Returns the JSON representation of a BSON value
  • MongoDB\BSON\toPHP — Returns the PHP representation of a BSON value
MongoDB\BSON
MongoDB\BSON\fromJSON
MongoDB\BSON


Returns the BSON representation of a JSON value

函数
MongoDB\BSON\fromPHP
函数
PHP Manual

MongoDB\BSON\fromJSON

(mongodb >=1.0.0)

MongoDB\BSON\fromJSON — Returns the BSON representation of a JSON value

说明

string MongoDB\BSON\fromJSON ( string $json )

Converts an » extended JSON string to its BSON representation.

参数

json (string)

JSON value to be converted.

返回值

The serialized BSON document as a binary string.

错误／异常

Throws MongoDB\Driver\Exception\UnexpectedValueException if the JSON value cannot be converted to BSON (e.g. due to a syntax error).

范例

Example #1 MongoDB\BSON\fromJSON() example

<?php

$json = '{ "_id": { "$oid": "563143b280d2387c91807965" } }';
$bson = MongoDB\BSON\fromJSON($json);
$value = MongoDB\BSON\toPHP($bson);
var_dump($value);

?>

以上例程会输出：

object(stdClass)#2 (1) {
  ["_id"]=>
  object(MongoDB\BSON\ObjectID)#1 (1) {
    ["oid"]=>
    string(24) "563143b280d2387c91807965"
  }
}

参见

  • MongoDB\BSON\toJSON() - Returns the JSON representation of a BSON value
  • » MongoDB Extended JSON
  • » MongoDB BSON
函数
MongoDB\BSON\fromPHP
函数


Returns the BSON representation of a PHP value

MongoDB\BSON\fromJSON
MongoDB\BSON\toJSON
函数
PHP Manual

MongoDB\BSON\fromPHP

(mongodb >=1.0.0)

MongoDB\BSON\fromPHP — Returns the BSON representation of a PHP value

说明

string MongoDB\BSON\fromPHP ( array|object $value )

Serializes a PHP array or object (e.g. document) to its » BSON representation. The returned binary string will describe a BSON document.

参数

value (array|object)

PHP value to be serialized.

返回值

The serialized BSON document as a binary string.

错误／异常

Throws MongoDB\Driver\Exception\UnexpectedValueException if the PHP value cannot be converted to BSON. Possible reasons include, but are not limited to, encountering an unexpected MongoDB\BSON\Type instance or MongoDB\BSON\Serializable::bsonSerialize() failing to return an array or stdClass.

范例

Example #1 MongoDB\BSON\fromPHP() example

<?php

$bson = MongoDB\BSON\fromPHP(['foo' => 1]);
echo bin2hex($bson), "\n";

?>

以上例程会输出：

0e00000010666f6f000100000000cat

参见

  • MongoDB\BSON\toPHP() - Returns the PHP representation of a BSON value
  • » MongoDB BSON
  • Persisting Data
MongoDB\BSON\fromJSON
MongoDB\BSON\toJSON
函数


Returns the JSON representation of a BSON value

MongoDB\BSON\fromPHP
MongoDB\BSON\toPHP
函数
PHP Manual

MongoDB\BSON\toJSON

(mongodb >=1.0.0)

MongoDB\BSON\toJSON — Returns the JSON representation of a BSON value

说明

string MongoDB\BSON\toJSON ( string $bson )

Converts a BSON string to its » extended JSON representation.

参数

bson (string)

BSON value to be converted.

返回值

The converted JSON value.

错误／异常

Throws MongoDB\Driver\Exception\UnexpectedValueException if the input did not contain exactly one BSON document. Possible reasons include, but are not limited to, invalid BSON, extra data (after reading one BSON document), or an unexpected » libbson error.

范例

Example #1 MongoDB\BSON\toJSON() example

<?php

$document = ['_id' => new MongoDB\BSON\ObjectId('56315a7c6118fd1b920270b1')];
$bson = MongoDB\BSON\fromPHP($document);
echo MongoDB\BSON\toJSON($bson), "\n";

?>

以上例程会输出：

{ "_id" : { "$oid" : "56315a7c6118fd1b920270b1" } }

参见

  • MongoDB\BSON\fromJSON() - Returns the BSON representation of a JSON value
  • » MongoDB Extended JSON
  • » MongoDB BSON
MongoDB\BSON\fromPHP
MongoDB\BSON\toPHP
函数


Returns the PHP representation of a BSON value

MongoDB\BSON\toJSON
MongoDB\BSON\Binary
函数
PHP Manual

MongoDB\BSON\toPHP

(mongodb >=1.0.0)

MongoDB\BSON\toPHP — Returns the PHP representation of a BSON value

说明

array|object MongoDB\BSON\toPHP ( string $bson [, array $typeMap = array() ] )

Unserializes a BSON document (i.e. binary string) to its PHP representation. The typeMap paramater may be used to control the PHP types used for converting BSON arrays and documents (both root and embedded).

参数

bson (string)

BSON value to be unserialized.

typeMap (array)

Type map configuration.

返回值

The unserialized PHP value.

错误／异常

Throws MongoDB\Driver\Exception\InvalidArgumentException if a class in the type map cannot be instantiated or does not implement MongoDB\BSON\Unserializable.

Throws MongoDB\Driver\Exception\UnexpectedValueException if the input did not contain exactly one BSON document. Possible reasons include, but are not limited to, invalid BSON, extra data (after reading one BSON document), or an unexpected » libbson error.

范例

Example #1 MongoDB\BSON\toPHP() example

<?php

$bson = hex2bin('0e00000010666f6f000100000000');
$value = MongoDB\BSON\toPHP($bson);
var_dump($value);

?>

以上例程会输出：

object(stdClass)#1 (1) {
  ["foo"]=>
  int(1)
}

参见

  • MongoDB\BSON\fromPHP() - Returns the BSON representation of a PHP value
  • » MongoDB BSON
  • Persisting Data
MongoDB\BSON\toJSON
MongoDB\BSON\Binary
函数


The MongoDB\BSON\Binary class

(mongodb >=1.0.0)

简介

类摘要

MongoDB\BSON\Binary implements MongoDB\BSON\Type , Serializable , JsonSerializable {
/* Constants */
const integer TYPE_GENERIC = 0 ;
const integer TYPE_FUNCTION = 1 ;
const integer TYPE_OLD_BINARY = 2 ;
const integer TYPE_OLD_UUID = 3 ;
const integer TYPE_UUID = 4 ;
const integer TYPE_MD5 = 5 ;
const integer TYPE_USER_DEFINED = 128 ;
/* 方法 */
final public __construct ( string $data , integer $type )
final public string getData ( void )
final public integer getType ( void )
final public mixed jsonSerialize ( void )
final public string serialize ( void )
final public string __toString ( void )
final public void unserialize ( string $serialized )
}

预定义常量

MongoDB\BSON\Binary::TYPE_GENERIC

Generic binary data.

MongoDB\BSON\Binary::TYPE_FUNCTION

Function.

MongoDB\BSON\Binary::TYPE_OLD_BINARY

Generic binary data (deprecated in favor of MongoDB\BSON\Binary::TYPE_GENERIC).

MongoDB\BSON\Binary::TYPE_OLD_UUID

Universally unique identifier (deprecated in favor of MongoDB\BSON\Binary::TYPE_UUID). When using this type, the Binary's data should be 16 bytes in length.

Historically, other drivers encoded values with this type based on their language conventions (e.g. varying endianness), which makes it non-portable. The PHP driver applies no special handling for encoding or decoding data with this type.

MongoDB\BSON\Binary::TYPE_UUID

Universally unique identifier. When using this type, the Binary's data should be 16 bytes in length and encoded according to » RFC 4122.

MongoDB\BSON\Binary::TYPE_MD5

MD5 hash. When using this type, the Binary's data should be 16 bytes in length.

MongoDB\BSON\Binary::TYPE_USER_DEFINED

User-defined type. While types between 0 and 127 are predefined or reserved, types between 128 and 255 are user-defined and may be used for anything.

更新日志

版本 | 说明
1.2.0 | Implements Serializable and JsonSerializable.

Table of Contents

  • MongoDB\BSON\Binary::__construct — Construct a new Binary
  • MongoDB\BSON\Binary::getData — Returns the Binary's data
  • MongoDB\BSON\Binary::getType — Returns the Binary's type
  • MongoDB\BSON\Binary::jsonSerialize — Returns a representation that can be converted to JSON
  • MongoDB\BSON\Binary::serialize — Serialize a Binary
  • MongoDB\BSON\Binary::__toString — Returns the Binary's data
  • MongoDB\BSON\Binary::unserialize — Unserialize a Binary
MongoDB\BSON\toPHP
MongoDB\BSON\Binary::__construct
MongoDB\BSON


Construct a new Binary

MongoDB\BSON\Binary
MongoDB\BSON\Binary::getData
MongoDB\BSON\Binary
PHP Manual

MongoDB\BSON\Binary::__construct

(mongodb >=1.0.0)

MongoDB\BSON\Binary::__construct — Construct a new Binary

说明

final public MongoDB\BSON\Binary::__construct ( string $data , integer $type )

参数

data (string)

Binary data.

type (integer)

Unsigned 8-bit integer denoting the data's type.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\InvalidArgumentException if type is not an unsigned 8-bit integer.

更新日志

版本 | 说明
1.1.3 | MongoDB\Driver\Exception\InvalidArgumentException is thrown if type is not an unsigned 8-bit integer.

范例

Example #1 MongoDB\BSON\Binary::__construct() example

<?php

$binary = new MongoDB\BSON\Binary('foo', MongoDB\BSON\Binary::TYPE_GENERIC);
var_dump($binary);

?>

以上例程会输出：

object(MongoDB\BSON\Binary)#1 (2) {
  ["data"]=>
  string(3) "foo"
  ["type"]=>
  int(0)
}

参见

  • » BSON Types
MongoDB\BSON\Binary
MongoDB\BSON\Binary::getData
MongoDB\BSON\Binary


Returns the Binary's data

MongoDB\BSON\Binary::__construct
MongoDB\BSON\Binary::getType
MongoDB\BSON\Binary
PHP Manual

MongoDB\BSON\Binary::getData

(mongodb >=1.0.0)

MongoDB\BSON\Binary::getData — Returns the Binary's data

说明

final public string MongoDB\BSON\Binary::getData ( void )

参数

此函数没有参数。

返回值

Returns the Binary's data.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\BSON\Binary::getData() example

<?php

$binary = new MongoDB\BSON\Binary('foo', MongoDB\BSON\Binary::TYPE_GENERIC);
var_dump($binary->getData());

?>

以上例程会输出：

string(3) "foo"

参见

  • » BSON Types
MongoDB\BSON\Binary::__construct
MongoDB\BSON\Binary::getType
MongoDB\BSON\Binary


Returns the Binary's type

MongoDB\BSON\Binary::getData
MongoDB\BSON\Binary::jsonSerialize
MongoDB\BSON\Binary
PHP Manual

MongoDB\BSON\Binary::getType

(mongodb >=1.0.0)

MongoDB\BSON\Binary::getType — Returns the Binary's type

说明

final public integer MongoDB\BSON\Binary::getType ( void )

参数

此函数没有参数。

返回值

Returns the Binary's type.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\BSON\Binary::getType() example

<?php

$binary = new MongoDB\BSON\Binary('foo', MongoDB\BSON\Binary::TYPE_GENERIC);
var_dump($binary->getType());

?>

以上例程会输出：

int(0)

参见

  • » BSON Types
MongoDB\BSON\Binary::getData
MongoDB\BSON\Binary::jsonSerialize
MongoDB\BSON\Binary


Returns a representation that can be converted to JSON

MongoDB\BSON\Binary::getType
MongoDB\BSON\Binary::serialize
MongoDB\BSON\Binary
PHP Manual

MongoDB\BSON\Binary::jsonSerialize

(mongodb >=1.2.0)

MongoDB\BSON\Binary::jsonSerialize — Returns a representation that can be converted to JSON

说明

final public mixed MongoDB\BSON\Binary::jsonSerialize ( void )

参数

此函数没有参数。

返回值

Returns data which can be serialized by json_encode() to produce the » extended JSON representation of the MongoDB\BSON\Binary.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • JsonSerializable::jsonSerialize() - 指定需要被序列化成 JSON 的数据
  • json_encode() - 对变量进行 JSON 编码
  • » MongoDB Extended JSON
MongoDB\BSON\Binary::getType
MongoDB\BSON\Binary::serialize
MongoDB\BSON\Binary


Serialize a Binary

MongoDB\BSON\Binary::jsonSerialize
MongoDB\BSON\Binary::__toString
MongoDB\BSON\Binary
PHP Manual

MongoDB\BSON\Binary::serialize

(mongodb >=1.2.0)

MongoDB\BSON\Binary::serialize — Serialize a Binary

说明

final public string MongoDB\BSON\Binary::serialize ( void )

参数

此函数没有参数。

返回值

Returns the serialized representation of the MongoDB\BSON\Binary.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • MongoDB\BSON\Binary::unserialize() - Unserialize a Binary
  • serialize() - 产生一个可存储的值的表示
  • Serializing Objects
MongoDB\BSON\Binary::jsonSerialize
MongoDB\BSON\Binary::__toString
MongoDB\BSON\Binary


Returns the Binary's data

MongoDB\BSON\Binary::serialize
MongoDB\BSON\Binary::unserialize
MongoDB\BSON\Binary
PHP Manual

MongoDB\BSON\Binary::__toString

(mongodb >=1.2.0)

MongoDB\BSON\Binary::__toString — Returns the Binary's data

说明

final public string MongoDB\BSON\Binary::__toString ( void )

此方法是该方法的别名： MongoDB\BSON\Binary::getData().

参数

此函数没有参数。

返回值

Returns the Binary's code.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\BSON\Binary::__toString() example

<?php

var_dump((string) new MongoDB\BSON\Binary('foo', MongoDB\BSON\Binary::TYPE_GENERIC));

?>

以上例程会输出：

string(3) "foo"

参见

  • MongoDB\BSON\Binary::getData() - Returns the Binary's data
  • » BSON Types
MongoDB\BSON\Binary::serialize
MongoDB\BSON\Binary::unserialize
MongoDB\BSON\Binary


Unserialize a Binary

MongoDB\BSON\Binary::__toString
MongoDB\BSON\Decimal128
MongoDB\BSON\Binary
PHP Manual

MongoDB\BSON\Binary::unserialize

(mongodb >=1.2.0)

MongoDB\BSON\Binary::unserialize — Unserialize a Binary

说明

final public void MongoDB\BSON\Binary::unserialize ( string $serialized )

参数

serialized

The serialized MongoDB\BSON\Binary.

返回值

Returns the unserialized MongoDB\BSON\Binary.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\UnexpectedValueException if the properties cannot be unserialized (i.e. serialized was malformed).
  • Throws MongoDB\Driver\Exception\InvalidArgumentException if the properties are invalid (e.g. missing fields or invalid values).

参见

  • MongoDB\BSON\Binary::serialize() - Serialize a Binary
  • unserialize() - 从已存储的表示中创建 PHP 的值
  • Serializing Objects
MongoDB\BSON\Binary::__toString
MongoDB\BSON\Decimal128
MongoDB\BSON\Binary


The MongoDB\BSON\Decimal128 class

(mongodb >=1.2.0)

简介

BSON type for the » Decimal128 floating-point format, which supports numbers with up to 34 decimal digits (i.e. significant digits) and an exponent range of ?6143 to +6144.

Unlike the double BSON type (i.e. float in PHP), which only stores an approximation of the decimal values, the decimal data type stores the exact value. For example, MongoDB\BSON\Decimal128('9.99') has a precise value of 9.99 where as a double 9.99 would have an approximate value of 9.9900000000000002131628....

Note: MongoDB\BSON\Decimal128 is only compatible with MongoDB 3.4+. Attempting to use the BSON type with an earlier version of MongoDB will result in an error.

类摘要

MongoDB\BSON\Decimal128 implements MongoDB\BSON\Type , Serializable , JsonSerializable {
/* 方法 */
final public __construct ([ string $value ] )
final public mixed jsonSerialize ( void )
final public string serialize ( void )
final public string __toString ( void )
final public void unserialize ( string $serialized )
}

更新日志

版本 | 说明
1.2.0 | Implements Serializable and JsonSerializable.

Table of Contents

  • MongoDB\BSON\Decimal128::__construct — Construct a new Decimal128
  • MongoDB\BSON\Decimal128::jsonSerialize — Returns a representation that can be converted to JSON
  • MongoDB\BSON\Decimal128::serialize — Serialize a Decimal128
  • MongoDB\BSON\Decimal128::__toString — Returns the string representation of this Decimal128
  • MongoDB\BSON\Decimal128::unserialize — Unserialize a Decimal128
MongoDB\BSON\Binary::unserialize
MongoDB\BSON\Decimal128::__construct
MongoDB\BSON


Construct a new Decimal128

MongoDB\BSON\Decimal128
MongoDB\BSON\Decimal128::jsonSerialize
MongoDB\BSON\Decimal128
PHP Manual

MongoDB\BSON\Decimal128::__construct

(mongodb >=1.2.0)

MongoDB\BSON\Decimal128::__construct — Construct a new Decimal128

说明

final public MongoDB\BSON\Decimal128::__construct ([ string $value ] )

Note: MongoDB\BSON\Decimal128 is only compatible with MongoDB 3.4+. Attempting to use the BSON type with an earlier version of MongoDB will result in an error.

参数

value (string)

A decimal string.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\InvalidArgumentException if value is not a valid decimal string.

范例

Example #1 MongoDB\BSON\Decimal128::__construct() example

<?php

var_dump(new MongoDB\BSON\Decimal128(1234.5678));
var_dump(new MongoDB\BSON\Decimal128(NAN));
var_dump(new MongoDB\BSON\Decimal128(INF));

?>

以上例程的输出类似于：

object(MongoDB\BSON\Decimal128)#1 (1) {
  ["dec"]=>
  string(9) "1234.5678"
}
object(MongoDB\BSON\Decimal128)#1 (1) {
  ["dec"]=>
  string(3) "NaN"
}
object(MongoDB\BSON\Decimal128)#1 (1) {
  ["dec"]=>
  string(8) "Infinity"
}

参见

  • » Decimal128 floating-point format
  • » BSON Types
MongoDB\BSON\Decimal128
MongoDB\BSON\Decimal128::jsonSerialize
MongoDB\BSON\Decimal128


Returns a representation that can be converted to JSON

MongoDB\BSON\Decimal128::__construct
MongoDB\BSON\Decimal128::serialize
MongoDB\BSON\Decimal128
PHP Manual

MongoDB\BSON\Decimal128::jsonSerialize

(mongodb >=1.2.0)

MongoDB\BSON\Decimal128::jsonSerialize — Returns a representation that can be converted to JSON

说明

final public mixed MongoDB\BSON\Decimal128::jsonSerialize ( void )

参数

此函数没有参数。

返回值

Returns data which can be serialized by json_encode() to produce the » extended JSON representation of the MongoDB\BSON\Decimal128.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • JsonSerializable::jsonSerialize() - 指定需要被序列化成 JSON 的数据
  • json_encode() - 对变量进行 JSON 编码
  • » MongoDB Extended JSON
MongoDB\BSON\Decimal128::__construct
MongoDB\BSON\Decimal128::serialize
MongoDB\BSON\Decimal128


Serialize a Decimal128

MongoDB\BSON\Decimal128::jsonSerialize
MongoDB\BSON\Decimal128::__toString
MongoDB\BSON\Decimal128
PHP Manual

MongoDB\BSON\Decimal128::serialize

(mongodb >=1.2.0)

MongoDB\BSON\Decimal128::serialize — Serialize a Decimal128

说明

final public string MongoDB\BSON\Decimal128::serialize ( void )

参数

此函数没有参数。

返回值

Returns the serialized representation of the MongoDB\BSON\Decimal128.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • MongoDB\BSON\Decimal128::unserialize() - Unserialize a Decimal128
  • serialize() - 产生一个可存储的值的表示
  • Serializing Objects
MongoDB\BSON\Decimal128::jsonSerialize
MongoDB\BSON\Decimal128::__toString
MongoDB\BSON\Decimal128


Returns the string representation of this Decimal128

MongoDB\BSON\Decimal128::serialize
MongoDB\BSON\Decimal128::unserialize
MongoDB\BSON\Decimal128
PHP Manual

MongoDB\BSON\Decimal128::__toString

(mongodb >=1.2.0)

MongoDB\BSON\Decimal128::__toString — Returns the string representation of this Decimal128

说明

final public string MongoDB\BSON\Decimal128::__toString ( void )

参数

此函数没有参数。

返回值

Returns the string representation of this Decimal128.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\BSON\Decimal128::__toString() example

<?php

var_dump((string) new MongoDB\BSON\Decimal128(1234.5678));
var_dump((string) new MongoDB\BSON\Decimal128(NAN));
var_dump((string) new MongoDB\BSON\Decimal128(INF));

?>

以上例程的输出类似于：

string(9) "1234.5678"
string(3) "NaN"
string(8) "Infinity"

参见

  • » Decimal128 floating-point format
  • » BSON Types
MongoDB\BSON\Decimal128::serialize
MongoDB\BSON\Decimal128::unserialize
MongoDB\BSON\Decimal128


Unserialize a Decimal128

MongoDB\BSON\Decimal128::__toString
MongoDB\BSON\Javascript
MongoDB\BSON\Decimal128
PHP Manual

MongoDB\BSON\Decimal128::unserialize

(mongodb >=1.2.0)

MongoDB\BSON\Decimal128::unserialize — Unserialize a Decimal128

说明

final public void MongoDB\BSON\Decimal128::unserialize ( string $serialized )

参数

serialized

The serialized MongoDB\BSON\Decimal128.

返回值

Returns the unserialized MongoDB\BSON\Decimal128.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\UnexpectedValueException if the properties cannot be unserialized (i.e. serialized was malformed).
  • Throws MongoDB\Driver\Exception\InvalidArgumentException if the properties are invalid (e.g. missing fields or invalid values).

参见

  • MongoDB\BSON\Decimal128::serialize() - Serialize a Decimal128
  • unserialize() - 从已存储的表示中创建 PHP 的值
  • Serializing Objects
MongoDB\BSON\Decimal128::__toString
MongoDB\BSON\Javascript
MongoDB\BSON\Decimal128


The MongoDB\BSON\Javascript class

(mongodb >=1.0.0)

简介

类摘要

MongoDB\BSON\Javascript implements MongoDB\BSON\Type , Serializable , JsonSerializable {
/* 方法 */
final public __construct ( string $code [, array|object $scope ] )
final public string getCode ( void )
final public object|null getScope ( void )
final public mixed jsonSerialize ( void )
final public string serialize ( void )
final public string __toString ( void )
final public void unserialize ( string $serialized )
}

更新日志

版本 | 说明
1.2.0 | Implements Serializable and JsonSerializable.

Table of Contents

  • MongoDB\BSON\Javascript::__construct — Construct a new Javascript
  • MongoDB\BSON\Javascript::getCode — Returns the Javascript's code
  • MongoDB\BSON\Javascript::getScope — Returns the Javascript's scope document
  • MongoDB\BSON\Javascript::jsonSerialize — Returns a representation that can be converted to JSON
  • MongoDB\BSON\Javascript::serialize — Serialize a Javascript
  • MongoDB\BSON\Javascript::__toString — Returns the Javascript's code
  • MongoDB\BSON\Javascript::unserialize — Unserialize a Javascript
MongoDB\BSON\Decimal128::unserialize
MongoDB\BSON\Javascript::__construct
MongoDB\BSON


Construct a new Javascript

MongoDB\BSON\Javascript
MongoDB\BSON\Javascript::getCode
MongoDB\BSON\Javascript
PHP Manual

MongoDB\BSON\Javascript::__construct

(mongodb >=1.0.0)

MongoDB\BSON\Javascript::__construct — Construct a new Javascript

说明

final public MongoDB\BSON\Javascript::__construct ( string $code [, array|object $scope ] )

参数

code (string)

Javascript code.

scope (array|object)

Javascript scope.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\InvalidArgumentException if code contains null bytes.

更新日志

版本 | 说明
1.2.0 | MongoDB\Driver\Exception\InvalidArgumentException is thrown if code contains null bytes. Previously, values would be truncated at the first null byte.

范例

Example #1 MongoDB\BSON\Javascript::__construct() example

<?php

$code = new MongoDB\BSON\Javascript('function() { return 1; }');
var_dump($code);

$codews = new MongoDB\BSON\Javascript('function() { return foo; }', ['foo' => 'bar']);
var_dump($codews);

?>

以上例程会输出：

object(MongoDB\BSON\Javascript)#1 (2) {
  ["javascript"]=>
  string(24) "function() { return 1; }"
  ["scope"]=>
  object(stdClass)#2 (0) {
  }
}
object(MongoDB\BSON\Javascript)#2 (2) {
  ["javascript"]=>
  string(26) "function() { return foo; }"
  ["scope"]=>
  object(stdClass)#1 (1) {
    ["foo"]=>
    string(3) "bar"
  }
}

参见

  • » BSON Types
MongoDB\BSON\Javascript
MongoDB\BSON\Javascript::getCode
MongoDB\BSON\Javascript


Returns the Javascript's code

MongoDB\BSON\Javascript::__construct
MongoDB\BSON\Javascript::getScope
MongoDB\BSON\Javascript
PHP Manual

MongoDB\BSON\Javascript::getCode

(mongodb >=1.2.0)

MongoDB\BSON\Javascript::getCode — Returns the Javascript's code

说明

final public string MongoDB\BSON\Javascript::getCode ( void )

参数

此函数没有参数。

返回值

Returns the Javascript's code.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\BSON\Javascript::getCode() example

<?php

$js = new MongoDB\BSON\Javascript('function foo(bar) { return bar; }');
var_dump($js->getCode());

?>

以上例程会输出：

string(33) "function foo(bar) { return bar; }"

参见

  • » BSON Types
MongoDB\BSON\Javascript::__construct
MongoDB\BSON\Javascript::getScope
MongoDB\BSON\Javascript


Returns the Javascript's scope document

MongoDB\BSON\Javascript::getCode
MongoDB\BSON\Javascript::jsonSerialize
MongoDB\BSON\Javascript
PHP Manual

MongoDB\BSON\Javascript::getScope

(mongodb >=1.2.0)

MongoDB\BSON\Javascript::getScope — Returns the Javascript's scope document

说明

final public object|null MongoDB\BSON\Javascript::getScope ( void )

参数

此函数没有参数。

返回值

Returns the Javascript's scope document.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\BSON\Javascript::getScope() example

<?php

$js = new MongoDB\BSON\Javascript('function foo(bar) { return bar; }');
var_dump($js->getScope());

$js = new MongoDB\BSON\Javascript('function foo() { return foo; }', ['foo' => 42]);
var_dump($js->getScope());

?>

以上例程会输出：

NULL
object(stdClass)#1 (1) {
  ["foo"]=>
  int(42)
}

参见

  • » BSON Types
MongoDB\BSON\Javascript::getCode
MongoDB\BSON\Javascript::jsonSerialize
MongoDB\BSON\Javascript


Returns a representation that can be converted to JSON

MongoDB\BSON\Javascript::getScope
MongoDB\BSON\Javascript::serialize
MongoDB\BSON\Javascript
PHP Manual

MongoDB\BSON\Javascript::jsonSerialize

(mongodb >=1.2.0)

MongoDB\BSON\Javascript::jsonSerialize — Returns a representation that can be converted to JSON

说明

final public mixed MongoDB\BSON\Javascript::jsonSerialize ( void )

参数

此函数没有参数。

返回值

Returns data which can be serialized by json_encode() to produce the » extended JSON representation of the MongoDB\BSON\Javascript.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • JsonSerializable::jsonSerialize() - 指定需要被序列化成 JSON 的数据
  • json_encode() - 对变量进行 JSON 编码
  • » MongoDB Extended JSON
MongoDB\BSON\Javascript::getScope
MongoDB\BSON\Javascript::serialize
MongoDB\BSON\Javascript


Serialize a Javascript

MongoDB\BSON\Javascript::jsonSerialize
MongoDB\BSON\Javascript::__toString
MongoDB\BSON\Javascript
PHP Manual

MongoDB\BSON\Javascript::serialize

(mongodb >=1.2.0)

MongoDB\BSON\Javascript::serialize — Serialize a Javascript

说明

final public string MongoDB\BSON\Javascript::serialize ( void )

参数

此函数没有参数。

返回值

Returns the serialized representation of the MongoDB\BSON\Javascript.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • MongoDB\BSON\Javascript::unserialize() - Unserialize a Javascript
  • serialize() - 产生一个可存储的值的表示
  • Serializing Objects
MongoDB\BSON\Javascript::jsonSerialize
MongoDB\BSON\Javascript::__toString
MongoDB\BSON\Javascript


Returns the Javascript's code

MongoDB\BSON\Javascript::serialize
MongoDB\BSON\Javascript::unserialize
MongoDB\BSON\Javascript
PHP Manual

MongoDB\BSON\Javascript::__toString

(mongodb >=1.2.0)

MongoDB\BSON\Javascript::__toString — Returns the Javascript's code

说明

final public string MongoDB\BSON\Javascript::__toString ( void )

此方法是该方法的别名： MongoDB\BSON\Javascript::getCode().

参数

此函数没有参数。

返回值

Returns the Javascript's code.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\BSON\Javascript::__toString() example

<?php

var_dump((string) new MongoDB\BSON\Javascript('function foo(bar) { return bar; }'));

?>

以上例程会输出：

string(33) "function foo(bar) { return bar; }"

参见

  • MongoDB\BSON\Javascript::getCode() - Returns the Javascript's code
  • » BSON Types
MongoDB\BSON\Javascript::serialize
MongoDB\BSON\Javascript::unserialize
MongoDB\BSON\Javascript


Unserialize a Javascript

MongoDB\BSON\Javascript::__toString
MongoDB\BSON\MaxKey
MongoDB\BSON\Javascript
PHP Manual

MongoDB\BSON\Javascript::unserialize

(mongodb >=1.2.0)

MongoDB\BSON\Javascript::unserialize — Unserialize a Javascript

说明

final public void MongoDB\BSON\Javascript::unserialize ( string $serialized )

参数

serialized

The serialized MongoDB\BSON\Javascript.

返回值

Returns the unserialized MongoDB\BSON\Javascript.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\UnexpectedValueException if the properties cannot be unserialized (i.e. serialized was malformed).
  • Throws MongoDB\Driver\Exception\InvalidArgumentException if the properties are invalid (e.g. missing fields or invalid values).

参见

  • MongoDB\BSON\Javascript::serialize() - Serialize a Javascript
  • unserialize() - 从已存储的表示中创建 PHP 的值
  • Serializing Objects
MongoDB\BSON\Javascript::__toString
MongoDB\BSON\MaxKey
MongoDB\BSON\Javascript


The MongoDB\BSON\MaxKey class

(mongodb >=1.0.0)

简介

类摘要

MongoDB\BSON\MaxKey implements MongoDB\BSON\Type , Serializable , JsonSerializable {
/* 方法 */
final public __construct ( void )
final public mixed jsonSerialize ( void )
final public string serialize ( void )
final public void unserialize ( string $serialized )
}

更新日志

版本 | 说明
1.2.0 | Implements Serializable and JsonSerializable.

Table of Contents

  • MongoDB\BSON\MaxKey::__construct — Construct a new MaxKey
  • MongoDB\BSON\MaxKey::jsonSerialize — Returns a representation that can be converted to JSON
  • MongoDB\BSON\MaxKey::serialize — Serialize a MaxKey
  • MongoDB\BSON\MaxKey::unserialize — Unserialize a MaxKey
MongoDB\BSON\Javascript::unserialize
MongoDB\BSON\MaxKey::__construct
MongoDB\BSON


Construct a new MaxKey

MongoDB\BSON\MaxKey
MongoDB\BSON\MaxKey::jsonSerialize
MongoDB\BSON\MaxKey
PHP Manual

MongoDB\BSON\MaxKey::__construct

(mongodb >=1.0.0)

MongoDB\BSON\MaxKey::__construct — Construct a new MaxKey

说明

final public MongoDB\BSON\MaxKey::__construct ( void )

参数

此函数没有参数。

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\BSON\MaxKey::__construct() example

<?php

var_dump(new MongoDB\BSON\MaxKey());

?>

以上例程会输出：

object(MongoDB\BSON\MaxKey)#1 (0) {
}

参见

  • » BSON Types
MongoDB\BSON\MaxKey
MongoDB\BSON\MaxKey::jsonSerialize
MongoDB\BSON\MaxKey


Returns a representation that can be converted to JSON

MongoDB\BSON\MaxKey::__construct
MongoDB\BSON\MaxKey::serialize
MongoDB\BSON\MaxKey
PHP Manual

MongoDB\BSON\MaxKey::jsonSerialize

(mongodb >=1.2.0)

MongoDB\BSON\MaxKey::jsonSerialize — Returns a representation that can be converted to JSON

说明

final public mixed MongoDB\BSON\MaxKey::jsonSerialize ( void )

参数

此函数没有参数。

返回值

Returns data which can be serialized by json_encode() to produce the » extended JSON representation of the MongoDB\BSON\MaxKey.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • JsonSerializable::jsonSerialize() - 指定需要被序列化成 JSON 的数据
  • json_encode() - 对变量进行 JSON 编码
  • » MongoDB Extended JSON
MongoDB\BSON\MaxKey::__construct
MongoDB\BSON\MaxKey::serialize
MongoDB\BSON\MaxKey


Serialize a MaxKey

MongoDB\BSON\MaxKey::jsonSerialize
MongoDB\BSON\MaxKey::unserialize
MongoDB\BSON\MaxKey
PHP Manual

MongoDB\BSON\MaxKey::serialize

(mongodb >=1.2.0)

MongoDB\BSON\MaxKey::serialize — Serialize a MaxKey

说明

final public string MongoDB\BSON\MaxKey::serialize ( void )

参数

此函数没有参数。

返回值

Returns the serialized representation of the MongoDB\BSON\MaxKey.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • MongoDB\BSON\MaxKey::unserialize() - Unserialize a MaxKey
  • serialize() - 产生一个可存储的值的表示
  • Serializing Objects
MongoDB\BSON\MaxKey::jsonSerialize
MongoDB\BSON\MaxKey::unserialize
MongoDB\BSON\MaxKey


Unserialize a MaxKey

MongoDB\BSON\MaxKey::serialize
MongoDB\BSON\MinKey
MongoDB\BSON\MaxKey
PHP Manual

MongoDB\BSON\MaxKey::unserialize

(mongodb >=1.2.0)

MongoDB\BSON\MaxKey::unserialize — Unserialize a MaxKey

说明

final public void MongoDB\BSON\MaxKey::unserialize ( string $serialized )

参数

serialized

The serialized MongoDB\BSON\MaxKey.

返回值

Returns the unserialized MongoDB\BSON\MaxKey.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • MongoDB\BSON\MaxKey::serialize() - Serialize a MaxKey
  • unserialize() - 从已存储的表示中创建 PHP 的值
  • Serializing Objects
MongoDB\BSON\MaxKey::serialize
MongoDB\BSON\MinKey
MongoDB\BSON\MaxKey


The MongoDB\BSON\MinKey class

(mongodb >=1.0.0)

简介

类摘要

MongoDB\BSON\MinKey implements MongoDB\BSON\Type , Serializable , JsonSerializable {
/* 方法 */
final public __construct ( void )
final public mixed jsonSerialize ( void )
final public string serialize ( void )
final public void unserialize ( string $serialized )
}

更新日志

版本 | 说明
1.2.0 | Implements Serializable and JsonSerializable.

Table of Contents

  • MongoDB\BSON\MinKey::__construct — Construct a new MinKey
  • MongoDB\BSON\MinKey::jsonSerialize — Returns a representation that can be converted to JSON
  • MongoDB\BSON\MinKey::serialize — Serialize a MinKey
  • MongoDB\BSON\MinKey::unserialize — Unserialize a MinKey
MongoDB\BSON\MaxKey::unserialize
MongoDB\BSON\MinKey::__construct
MongoDB\BSON


Construct a new MinKey

MongoDB\BSON\MinKey
MongoDB\BSON\MinKey::jsonSerialize
MongoDB\BSON\MinKey
PHP Manual

MongoDB\BSON\MinKey::__construct

(mongodb >=1.0.0)

MongoDB\BSON\MinKey::__construct — Construct a new MinKey

说明

final public MongoDB\BSON\MinKey::__construct ( void )

参数

此函数没有参数。

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\BSON\MinKey::__construct() example

<?php

var_dump(new MongoDB\BSON\MinKey());

?>

以上例程会输出：

object(MongoDB\BSON\MinKey)#1 (0) {
}

参见

  • » BSON Types
MongoDB\BSON\MinKey
MongoDB\BSON\MinKey::jsonSerialize
MongoDB\BSON\MinKey


Returns a representation that can be converted to JSON

MongoDB\BSON\MinKey::__construct
MongoDB\BSON\MinKey::serialize
MongoDB\BSON\MinKey
PHP Manual

MongoDB\BSON\MinKey::jsonSerialize

(mongodb >=1.2.0)

MongoDB\BSON\MinKey::jsonSerialize — Returns a representation that can be converted to JSON

说明

final public mixed MongoDB\BSON\MinKey::jsonSerialize ( void )

参数

此函数没有参数。

返回值

Returns data which can be serialized by json_encode() to produce the » extended JSON representation of the MongoDB\BSON\MinKey.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • JsonSerializable::jsonSerialize() - 指定需要被序列化成 JSON 的数据
  • json_encode() - 对变量进行 JSON 编码
  • » MongoDB Extended JSON
MongoDB\BSON\MinKey::__construct
MongoDB\BSON\MinKey::serialize
MongoDB\BSON\MinKey


Serialize a MinKey

MongoDB\BSON\MinKey::jsonSerialize
MongoDB\BSON\MinKey::unserialize
MongoDB\BSON\MinKey
PHP Manual

MongoDB\BSON\MinKey::serialize

(mongodb >=1.2.0)

MongoDB\BSON\MinKey::serialize — Serialize a MinKey

说明

final public string MongoDB\BSON\MinKey::serialize ( void )

参数

此函数没有参数。

返回值

Returns the serialized representation of the MongoDB\BSON\MinKey.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • MongoDB\BSON\MinKey::unserialize() - Unserialize a MinKey
  • serialize() - 产生一个可存储的值的表示
  • Serializing Objects
MongoDB\BSON\MinKey::jsonSerialize
MongoDB\BSON\MinKey::unserialize
MongoDB\BSON\MinKey


Unserialize a MinKey

MongoDB\BSON\MinKey::serialize
MongoDB\BSON\ObjectID
MongoDB\BSON\MinKey
PHP Manual

MongoDB\BSON\MinKey::unserialize

(mongodb >=1.2.0)

MongoDB\BSON\MinKey::unserialize — Unserialize a MinKey

说明

final public void MongoDB\BSON\MinKey::unserialize ( string $serialized )

参数

serialized

The serialized MongoDB\BSON\MinKey.

返回值

Returns the unserialized MongoDB\BSON\MinKey.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • MongoDB\BSON\MinKey::serialize() - Serialize a MinKey
  • unserialize() - 从已存储的表示中创建 PHP 的值
  • Serializing Objects
MongoDB\BSON\MinKey::serialize
MongoDB\BSON\ObjectID
MongoDB\BSON\MinKey


The MongoDB\BSON\ObjectID class

(mongodb >=1.0.0)

简介

类摘要

MongoDB\BSON\ObjectID implements MongoDB\BSON\Type , Serializable , JsonSerializable {
/* 方法 */
final public __construct ([ string $id ] )
final public integer getTimestamp ( void )
final public mixed jsonSerialize ( void )
final public string serialize ( void )
final public string __toString ( void )
final public void unserialize ( string $serialized )
}

更新日志

版本 | 说明
1.2.0 | Implements Serializable and JsonSerializable.

Table of Contents

  • MongoDB\BSON\ObjectID::__construct — Construct a new ObjectID
  • MongoDB\BSON\ObjectID::getTimestamp — Returns the timestamp component of this ObjectID
  • MongoDB\BSON\ObjectID::jsonSerialize — Returns a representation that can be converted to JSON
  • MongoDB\BSON\ObjectID::serialize — Serialize an ObjectID
  • MongoDB\BSON\ObjectID::__toString — Returns the hexidecimal representation of this ObjectID
  • MongoDB\BSON\ObjectID::unserialize — Unserialize an ObjectID
MongoDB\BSON\MinKey::unserialize
MongoDB\BSON\ObjectID::__construct
MongoDB\BSON


Construct a new ObjectID

MongoDB\BSON\ObjectID
MongoDB\BSON\ObjectID::getTimestamp
MongoDB\BSON\ObjectID
PHP Manual

MongoDB\BSON\ObjectID::__construct

(mongodb >=1.0.0)

MongoDB\BSON\ObjectID::__construct — Construct a new ObjectID

说明

final public MongoDB\BSON\ObjectID::__construct ([ string $id ] )

参数

id (string)

A 24-character hexadecimal string. If not provided, the driver will generate an ObjectID.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\InvalidArgumentException if id is not a 24-character hexadecimal string.

范例

Example #1 MongoDB\BSON\ObjectID::__construct() example

<?php

var_dump(new MongoDB\BSON\ObjectId());

var_dump(new MongoDB\BSON\ObjectId('000000000000000000000001'));

?>

以上例程的输出类似于：

object(MongoDB\BSON\ObjectID)#1 (1) {
  ["oid"]=>
  string(24) "56732d3dda14d81214634921"
}
object(MongoDB\BSON\ObjectID)#1 (1) {
  ["oid"]=>
  string(24) "000000000000000000000001"
}

参见

  • » ObjectID Reference
  • » BSON Types: ObjectID
MongoDB\BSON\ObjectID
MongoDB\BSON\ObjectID::getTimestamp
MongoDB\BSON\ObjectID


Returns the timestamp component of this ObjectID

MongoDB\BSON\ObjectID::__construct
MongoDB\BSON\ObjectID::jsonSerialize
MongoDB\BSON\ObjectID
PHP Manual

MongoDB\BSON\ObjectID::getTimestamp

(mongodb >=1.2.0)

MongoDB\BSON\ObjectID::getTimestamp — Returns the timestamp component of this ObjectID

说明

final public integer MongoDB\BSON\ObjectID::getTimestamp ( void )

The timestamp component of an ObjectID is its first four bytes, which denote the number of seconds since the Unix epoch. This value is read as an unsigned 32-bit integer with big-endian byte order.

参数

此函数没有参数。

返回值

Returns the timestamp component of this ObjectID.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\BSON\ObjectID::getTimestamp() example

<?php

var_dump((new MongoDB\BSON\ObjectId())->getTimestamp());

var_dump((new MongoDB\BSON\ObjectId('0000002a0000000000000000'))->getTimestamp());

?>

以上例程的输出类似于：

integer(1484854719)
integer(42)

参见

  • » ObjectID Reference
  • » BSON Types: ObjectID
MongoDB\BSON\ObjectID::__construct
MongoDB\BSON\ObjectID::jsonSerialize
MongoDB\BSON\ObjectID


Returns a representation that can be converted to JSON

MongoDB\BSON\ObjectID::getTimestamp
MongoDB\BSON\ObjectID::serialize
MongoDB\BSON\ObjectID
PHP Manual

MongoDB\BSON\ObjectID::jsonSerialize

(mongodb >=1.2.0)

MongoDB\BSON\ObjectID::jsonSerialize — Returns a representation that can be converted to JSON

说明

final public mixed MongoDB\BSON\ObjectID::jsonSerialize ( void )

参数

此函数没有参数。

返回值

Returns data which can be serialized by json_encode() to produce the » extended JSON representation of the MongoDB\BSON\ObjectID.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • JsonSerializable::jsonSerialize() - 指定需要被序列化成 JSON 的数据
  • json_encode() - 对变量进行 JSON 编码
  • » MongoDB Extended JSON
MongoDB\BSON\ObjectID::getTimestamp
MongoDB\BSON\ObjectID::serialize
MongoDB\BSON\ObjectID


Serialize an ObjectID

MongoDB\BSON\ObjectID::jsonSerialize
MongoDB\BSON\ObjectID::__toString
MongoDB\BSON\ObjectID
PHP Manual

MongoDB\BSON\ObjectID::serialize

(mongodb >=1.2.0)

MongoDB\BSON\ObjectID::serialize — Serialize an ObjectID

说明

final public string MongoDB\BSON\ObjectID::serialize ( void )

参数

此函数没有参数。

返回值

Returns the serialized representation of the MongoDB\BSON\ObjectID.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • MongoDB\BSON\ObjectID::unserialize() - Unserialize an ObjectID
  • serialize() - 产生一个可存储的值的表示
  • Serializing Objects
MongoDB\BSON\ObjectID::jsonSerialize
MongoDB\BSON\ObjectID::__toString
MongoDB\BSON\ObjectID


Returns the hexidecimal representation of this ObjectID

MongoDB\BSON\ObjectID::serialize
MongoDB\BSON\ObjectID::unserialize
MongoDB\BSON\ObjectID
PHP Manual

MongoDB\BSON\ObjectID::__toString

(mongodb >=1.0.0)

MongoDB\BSON\ObjectID::__toString — Returns the hexidecimal representation of this ObjectID

说明

final public string MongoDB\BSON\ObjectID::__toString ( void )

参数

此函数没有参数。

返回值

Returns the hexidecimal representation of this ObjectID.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\BSON\ObjectID::__toString() example

<?php

var_dump((string) new MongoDB\BSON\ObjectId());
var_dump((string) new MongoDB\BSON\ObjectId('000000000000000000000001'));

?>

以上例程的输出类似于：

string(24) "56731b49da14d8747d701211"
string(24) "000000000000000000000001"

参见

  • » ObjectID Reference
  • » BSON Types: ObjectID
MongoDB\BSON\ObjectID::serialize
MongoDB\BSON\ObjectID::unserialize
MongoDB\BSON\ObjectID


Unserialize an ObjectID

MongoDB\BSON\ObjectID::__toString
MongoDB\BSON\Regex
MongoDB\BSON\ObjectID
PHP Manual

MongoDB\BSON\ObjectID::unserialize

(mongodb >=1.2.0)

MongoDB\BSON\ObjectID::unserialize — Unserialize an ObjectID

说明

final public void MongoDB\BSON\ObjectID::unserialize ( string $serialized )

参数

serialized

The serialized MongoDB\BSON\ObjectID.

返回值

Returns the unserialized MongoDB\BSON\ObjectID.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\UnexpectedValueException if the properties cannot be unserialized (i.e. serialized was malformed).
  • Throws MongoDB\Driver\Exception\InvalidArgumentException if the properties are invalid (e.g. missing fields or invalid values).

参见

  • MongoDB\BSON\ObjectID::serialize() - Serialize an ObjectID
  • unserialize() - 从已存储的表示中创建 PHP 的值
  • Serializing Objects
MongoDB\BSON\ObjectID::__toString
MongoDB\BSON\Regex
MongoDB\BSON\ObjectID


The MongoDB\BSON\Regex class

(mongodb >=1.0.0)

简介

类摘要

MongoDB\BSON\Regex implements MongoDB\BSON\Type , Serializable , JsonSerializable {
/* 方法 */
final public __construct ( string $pattern [, string $flags = "" ] )
final public string getFlags ( void )
final public string getPattern ( void )
final public mixed jsonSerialize ( void )
final public string serialize ( void )
final public string __toString ( void )
final public void unserialize ( string $serialized )
}

更新日志

版本 | 说明
1.2.0 | Implements Serializable and JsonSerializable.

Table of Contents

  • MongoDB\BSON\Regex::__construct — Construct a new Regex
  • MongoDB\BSON\Regex::getFlags — Returns the Regex's flags
  • MongoDB\BSON\Regex::getPattern — Returns the Regex's pattern
  • MongoDB\BSON\Regex::jsonSerialize — Returns a representation that can be converted to JSON
  • MongoDB\BSON\Regex::serialize — Serialize a Regex
  • MongoDB\BSON\Regex::__toString — Returns the string representation of this Regex
  • MongoDB\BSON\Regex::unserialize — Unserialize a Regex
MongoDB\BSON\ObjectID::unserialize
MongoDB\BSON\Regex::__construct
MongoDB\BSON


Construct a new Regex

MongoDB\BSON\Regex
MongoDB\BSON\Regex::getFlags
MongoDB\BSON\Regex
PHP Manual

MongoDB\BSON\Regex::__construct

(mongodb >=1.0.0)

MongoDB\BSON\Regex::__construct — Construct a new Regex

说明

final public MongoDB\BSON\Regex::__construct ( string $pattern [, string $flags = "" ] )

参数

pattern (string)

The regular expression pattern.

Note:

The pattern should not be wrapped with delimiter characters.

flags (string)

The » regular expression flags. Characters in this argument will be sorted alphabetically.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\InvalidArgumentException if pattern or flags contain null bytes.

更新日志

版本 说明
1.2.0

The flags argument is optional and defaults to an empty string.

Characters in the flags argument will be sorted alphabetically when a Regex is constructed. Previously, the characters were stored in the order provided.

MongoDB\Driver\Exception\InvalidArgumentException is thrown if pattern or flags contain null bytes. Previously, values would be truncated at the first null byte.

范例

Example #1 MongoDB\BSON\Regex::__construct() example

<?php

$regex = new MongoDB\BSON\Regex('^foo', 'i');
var_dump($regex);

?>

以上例程会输出：

object(MongoDB\BSON\Regex)#1 (2) {
  ["pattern"]=>
  string(4) "^foo"
  ["flags"]=>
  string(1) "i"
}

参见

  • » BSON Types
  • » Supported regular expression flags
MongoDB\BSON\Regex
MongoDB\BSON\Regex::getFlags
MongoDB\BSON\Regex


Returns the Regex's flags

MongoDB\BSON\Regex::__construct
MongoDB\BSON\Regex::getPattern
MongoDB\BSON\Regex
PHP Manual

MongoDB\BSON\Regex::getFlags

(mongodb >=1.0.0)

MongoDB\BSON\Regex::getFlags — Returns the Regex's flags

说明

final public string MongoDB\BSON\Regex::getFlags ( void )

参数

此函数没有参数。

返回值

Returns the Regex's flags.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\BSON\Regex::getFlags() example

<?php

$regex = new MongoDB\BSON\Regex('regex', 'i');
var_dump($regex->getFlags());

?>

以上例程的输出类似于：

string(1) "i"

参见

  • » BSON Types
  • » Supported regular expression flags
MongoDB\BSON\Regex::__construct
MongoDB\BSON\Regex::getPattern
MongoDB\BSON\Regex


Returns the Regex's pattern

MongoDB\BSON\Regex::getFlags
MongoDB\BSON\Regex::jsonSerialize
MongoDB\BSON\Regex
PHP Manual

MongoDB\BSON\Regex::getPattern

(mongodb >=1.0.0)

MongoDB\BSON\Regex::getPattern — Returns the Regex's pattern

说明

final public string MongoDB\BSON\Regex::getPattern ( void )

参数

此函数没有参数。

返回值

Returns the Regex's pattern.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\BSON\Regex::getPattern() example

<?php

$regex = new MongoDB\BSON\Regex('regex', 'i');
var_dump($regex->getPattern());

?>

以上例程的输出类似于：

string(5) "regex"

参见

  • » BSON Types
MongoDB\BSON\Regex::getFlags
MongoDB\BSON\Regex::jsonSerialize
MongoDB\BSON\Regex


Returns a representation that can be converted to JSON

MongoDB\BSON\Regex::getPattern
MongoDB\BSON\Regex::serialize
MongoDB\BSON\Regex
PHP Manual

MongoDB\BSON\Regex::jsonSerialize

(mongodb >=1.2.0)

MongoDB\BSON\Regex::jsonSerialize — Returns a representation that can be converted to JSON

说明

final public mixed MongoDB\BSON\Regex::jsonSerialize ( void )

参数

此函数没有参数。

返回值

Returns data which can be serialized by json_encode() to produce the » extended JSON representation of the MongoDB\BSON\Regex.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • JsonSerializable::jsonSerialize() - 指定需要被序列化成 JSON 的数据
  • json_encode() - 对变量进行 JSON 编码
  • » MongoDB Extended JSON
MongoDB\BSON\Regex::getPattern
MongoDB\BSON\Regex::serialize
MongoDB\BSON\Regex


Serialize a Regex

MongoDB\BSON\Regex::jsonSerialize
MongoDB\BSON\Regex::__toString
MongoDB\BSON\Regex
PHP Manual

MongoDB\BSON\Regex::serialize

(mongodb >=1.2.0)

MongoDB\BSON\Regex::serialize — Serialize a Regex

说明

final public string MongoDB\BSON\Regex::serialize ( void )

参数

此函数没有参数。

返回值

Returns the serialized representation of the MongoDB\BSON\Regex.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • MongoDB\BSON\Regex::unserialize() - Unserialize a Regex
  • serialize() - 产生一个可存储的值的表示
  • Serializing Objects
MongoDB\BSON\Regex::jsonSerialize
MongoDB\BSON\Regex::__toString
MongoDB\BSON\Regex


Returns the string representation of this Regex

MongoDB\BSON\Regex::serialize
MongoDB\BSON\Regex::unserialize
MongoDB\BSON\Regex
PHP Manual

MongoDB\BSON\Regex::__toString

(mongodb >=1.0.0)

MongoDB\BSON\Regex::__toString — Returns the string representation of this Regex

说明

final public string MongoDB\BSON\Regex::__toString ( void )

参数

此函数没有参数。

返回值

Returns the string representation of this Regex.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\BSON\Regex::__toString() example

<?php

$regex = new MongoDB\BSON\Regex('regex', 'i');
var_dump((string) $regex);

?>

以上例程会输出：

string(8) "/regex/i"

参见

  • » BSON Types
MongoDB\BSON\Regex::serialize
MongoDB\BSON\Regex::unserialize
MongoDB\BSON\Regex


Unserialize a Regex

MongoDB\BSON\Regex::__toString
MongoDB\BSON\Timestamp
MongoDB\BSON\Regex
PHP Manual

MongoDB\BSON\Regex::unserialize

(mongodb >=1.2.0)

MongoDB\BSON\Regex::unserialize — Unserialize a Regex

说明

final public void MongoDB\BSON\Regex::unserialize ( string $serialized )

参数

serialized

The serialized MongoDB\BSON\Regex.

返回值

Returns the unserialized MongoDB\BSON\Regex.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\UnexpectedValueException if the properties cannot be unserialized (i.e. serialized was malformed).
  • Throws MongoDB\Driver\Exception\InvalidArgumentException if the properties are invalid (e.g. missing fields or invalid values).

参见

  • MongoDB\BSON\Regex::serialize() - Serialize a Regex
  • unserialize() - 从已存储的表示中创建 PHP 的值
  • Serializing Objects
MongoDB\BSON\Regex::__toString
MongoDB\BSON\Timestamp
MongoDB\BSON\Regex


The MongoDB\BSON\Timestamp class

(mongodb >=1.0.0)

简介

Represents a » BSON timestamp, which is an internal MongoDB type not intended for general date storage.

类摘要

MongoDB\BSON\Timestamp implements MongoDB\BSON\Type , Serializable , JsonSerializable {
/* 方法 */
final public __construct ( integer $increment , integer $timestamp )
final public mixed jsonSerialize ( void )
final public string serialize ( void )
final public string __toString ( void )
final public void unserialize ( string $serialized )
}

更新日志

版本 | 说明
1.2.0 | Implements Serializable and JsonSerializable.

Table of Contents

  • MongoDB\BSON\Timestamp::__construct — Construct a new Timestamp
  • MongoDB\BSON\Timestamp::jsonSerialize — Returns a representation that can be converted to JSON
  • MongoDB\BSON\Timestamp::serialize — Serialize a Timestamp
  • MongoDB\BSON\Timestamp::__toString — Returns the string representation of this Timestamp
  • MongoDB\BSON\Timestamp::unserialize — Unserialize a Timestamp
MongoDB\BSON\Regex::unserialize
MongoDB\BSON\Timestamp::__construct
MongoDB\BSON


Construct a new Timestamp

MongoDB\BSON\Timestamp
MongoDB\BSON\Timestamp::jsonSerialize
MongoDB\BSON\Timestamp
PHP Manual

MongoDB\BSON\Timestamp::__construct

(mongodb >=1.0.0)

MongoDB\BSON\Timestamp::__construct — Construct a new Timestamp

说明

final public MongoDB\BSON\Timestamp::__construct ( integer $increment , integer $timestamp )

参数

increment (integer)

32-bit integer denoting the incrementing ordinal for operations within a given second.

timestamp (integer)

32-bit integer denoting seconds since the Unix epoch.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\BSON\Timestamp::__construct() example

<?php

$timestamp = new MongoDB\BSON\Timestamp(1234, 5678);

?>

以上例程会输出：

object(MongoDB\BSON\Timestamp)#1 (2) {
  ["increment"]=>
  int(1234)
  ["timestamp"]=>
  int(5678)
}

参见

  • » BSON Types: Timestamps
MongoDB\BSON\Timestamp
MongoDB\BSON\Timestamp::jsonSerialize
MongoDB\BSON\Timestamp


Returns a representation that can be converted to JSON

MongoDB\BSON\Timestamp::__construct
MongoDB\BSON\Timestamp::serialize
MongoDB\BSON\Timestamp
PHP Manual

MongoDB\BSON\Timestamp::jsonSerialize

(mongodb >=1.2.0)

MongoDB\BSON\Timestamp::jsonSerialize — Returns a representation that can be converted to JSON

说明

final public mixed MongoDB\BSON\Timestamp::jsonSerialize ( void )

参数

此函数没有参数。

返回值

Returns data which can be serialized by json_encode() to produce the » extended JSON representation of the MongoDB\BSON\Timestamp.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • JsonSerializable::jsonSerialize() - 指定需要被序列化成 JSON 的数据
  • json_encode() - 对变量进行 JSON 编码
  • » MongoDB Extended JSON
MongoDB\BSON\Timestamp::__construct
MongoDB\BSON\Timestamp::serialize
MongoDB\BSON\Timestamp


Serialize a Timestamp

MongoDB\BSON\Timestamp::jsonSerialize
MongoDB\BSON\Timestamp::__toString
MongoDB\BSON\Timestamp
PHP Manual

MongoDB\BSON\Timestamp::serialize

(mongodb >=1.2.0)

MongoDB\BSON\Timestamp::serialize — Serialize a Timestamp

说明

final public string MongoDB\BSON\Timestamp::serialize ( void )

参数

此函数没有参数。

返回值

Returns the serialized representation of the MongoDB\BSON\Timestamp.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • MongoDB\BSON\Timestamp::unserialize() - Unserialize a Timestamp
  • serialize() - 产生一个可存储的值的表示
  • Serializing Objects
MongoDB\BSON\Timestamp::jsonSerialize
MongoDB\BSON\Timestamp::__toString
MongoDB\BSON\Timestamp


Returns the string representation of this Timestamp

MongoDB\BSON\Timestamp::serialize
MongoDB\BSON\Timestamp::unserialize
MongoDB\BSON\Timestamp
PHP Manual

MongoDB\BSON\Timestamp::__toString

(mongodb >=1.0.0)

MongoDB\BSON\Timestamp::__toString — Returns the string representation of this Timestamp

说明

final public string MongoDB\BSON\Timestamp::__toString ( void )

参数

此函数没有参数。

返回值

Returns the string representation of this Timestamp.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\BSON\Timestamp::__toString() example

<?php

$timestamp = new MongoDB\BSON\Timestamp(1234, 5678);
var_dump((string) $timestamp);

?>

以上例程的输出类似于：

string(11) "[1234:5678]"

参见

  • » BSON Types: Timestamps
MongoDB\BSON\Timestamp::serialize
MongoDB\BSON\Timestamp::unserialize
MongoDB\BSON\Timestamp


Unserialize a Timestamp

MongoDB\BSON\Timestamp::__toString
MongoDB\BSON\UTCDateTime
MongoDB\BSON\Timestamp
PHP Manual

MongoDB\BSON\Timestamp::unserialize

(mongodb >=1.2.0)

MongoDB\BSON\Timestamp::unserialize — Unserialize a Timestamp

说明

final public void MongoDB\BSON\Timestamp::unserialize ( string $serialized )

参数

serialized

The serialized MongoDB\BSON\Timestamp.

返回值

Returns the unserialized MongoDB\BSON\Timestamp.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\UnexpectedValueException if the properties cannot be unserialized (i.e. serialized was malformed).
  • Throws MongoDB\Driver\Exception\InvalidArgumentException if the properties are invalid (e.g. missing fields or invalid values).

参见

  • MongoDB\BSON\Timestamp::serialize() - Serialize a Timestamp
  • unserialize() - 从已存储的表示中创建 PHP 的值
  • Serializing Objects
MongoDB\BSON\Timestamp::__toString
MongoDB\BSON\UTCDateTime
MongoDB\BSON\Timestamp


The MongoDB\BSON\UTCDateTime class

(mongodb >=1.0.0)

简介

Represents a » BSON date.

类摘要

MongoDB\BSON\UTCDateTime implements MongoDB\BSON\Type , Serializable , JsonSerializable {
/* 方法 */
final public __construct ([ integer|float|string|DateTimeInterface $milliseconds = NULL ] )
final public mixed jsonSerialize ( void )
final public string serialize ( void )
final public DateTime toDateTime ( void )
final public string __toString ( void )
final public void unserialize ( string $serialized )
}

更新日志

版本 | 说明
1.2.0 | Implements Serializable and JsonSerializable.

Table of Contents

  • MongoDB\BSON\UTCDateTime::__construct — Construct a new UTCDateTime
  • MongoDB\BSON\UTCDateTime::jsonSerialize — Returns a representation that can be converted to JSON
  • MongoDB\BSON\UTCDateTime::serialize — Serialize a UTCDateTime
  • MongoDB\BSON\UTCDateTime::toDateTime — Returns the DateTime representation of this UTCDateTime
  • MongoDB\BSON\UTCDateTime::__toString — Returns the string representation of this UTCDateTime
  • MongoDB\BSON\UTCDateTime::unserialize — Unserialize a UTCDateTime
MongoDB\BSON\Timestamp::unserialize
MongoDB\BSON\UTCDateTime::__construct
MongoDB\BSON


Construct a new UTCDateTime

MongoDB\BSON\UTCDateTime
MongoDB\BSON\UTCDateTime::jsonSerialize
MongoDB\BSON\UTCDateTime
PHP Manual

MongoDB\BSON\UTCDateTime::__construct

(mongodb >=1.0.0)

MongoDB\BSON\UTCDateTime::__construct — Construct a new UTCDateTime

说明

final public MongoDB\BSON\UTCDateTime::__construct ([ integer|float|string|DateTimeInterface $milliseconds = NULL ] )

参数

milliseconds (integer|float|string|DateTimeInterface)

Number of milliseconds since the Unix epoch (Jan 1, 1970). Negative values represent dates before 1970. This value may be provided as a 64-bit integer. For compatibility on 32-bit systems, this parameter may also be provided as a float or string.

If the argument is a DateTimeInterface, the number of milliseconds since the Unix epoch will be derived from that value. Note that in versions of PHP versions before 7.1.0, DateTime and DateTimeImmutable objects constructed from the current time did not incorporate sub-second precision.

If this argument is NULL, the current time will be used by default.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

更新日志

版本 | 说明
1.2.0 | The milliseconds argument is optional and defaults to NULL (i.e. current time). The argument also accepts a DateTimeInterface, which may be used to derive the number of milliseconds since the Unix epoch.

范例

Example #1 MongoDB\BSON\UTCDateTime::__construct() example

<?php

var_dump(new MongoDB\BSON\UTCDateTime);

var_dump(new MongoDB\BSON\UTCDateTime(new DateTime));

var_dump(new MongoDB\BSON\UTCDateTime(1416445411987));

?>

以上例程的输出类似于：

object(MongoDB\BSON\UTCDateTime)#1 (1) {
  ["milliseconds"]=>
  string(13) "1484852905560"
}
object(MongoDB\BSON\UTCDateTime)#1 (1) {
  ["milliseconds"]=>
  string(13) "1484852905560"
}
object(MongoDB\BSON\UTCDateTime)#1 (1) {
  ["milliseconds"]=>
  string(13) "1416445411987"
}

参见

  • » BSON Types: Date
MongoDB\BSON\UTCDateTime
MongoDB\BSON\UTCDateTime::jsonSerialize
MongoDB\BSON\UTCDateTime


Returns a representation that can be converted to JSON

MongoDB\BSON\UTCDateTime::__construct
MongoDB\BSON\UTCDateTime::serialize
MongoDB\BSON\UTCDateTime
PHP Manual

MongoDB\BSON\UTCDateTime::jsonSerialize

(mongodb >=1.2.0)

MongoDB\BSON\UTCDateTime::jsonSerialize — Returns a representation that can be converted to JSON

说明

final public mixed MongoDB\BSON\UTCDateTime::jsonSerialize ( void )

参数

此函数没有参数。

返回值

Returns data which can be serialized by json_encode() to produce the » extended JSON representation of the MongoDB\BSON\UTCDateTime.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • JsonSerializable::jsonSerialize() - 指定需要被序列化成 JSON 的数据
  • json_encode() - 对变量进行 JSON 编码
  • » MongoDB Extended JSON
MongoDB\BSON\UTCDateTime::__construct
MongoDB\BSON\UTCDateTime::serialize
MongoDB\BSON\UTCDateTime


Serialize a UTCDateTime

MongoDB\BSON\UTCDateTime::jsonSerialize
MongoDB\BSON\UTCDateTime::toDateTime
MongoDB\BSON\UTCDateTime
PHP Manual

MongoDB\BSON\UTCDateTime::serialize

(mongodb >=1.2.0)

MongoDB\BSON\UTCDateTime::serialize — Serialize a UTCDateTime

说明

final public string MongoDB\BSON\UTCDateTime::serialize ( void )

参数

此函数没有参数。

返回值

Returns the serialized representation of the MongoDB\BSON\UTCDateTime.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

参见

  • MongoDB\BSON\UTCDateTime::unserialize() - Unserialize a UTCDateTime
  • serialize() - 产生一个可存储的值的表示
  • Serializing Objects
MongoDB\BSON\UTCDateTime::jsonSerialize
MongoDB\BSON\UTCDateTime::toDateTime
MongoDB\BSON\UTCDateTime


Returns the DateTime representation of this UTCDateTime

MongoDB\BSON\UTCDateTime::serialize
MongoDB\BSON\UTCDateTime::__toString
MongoDB\BSON\UTCDateTime
PHP Manual

MongoDB\BSON\UTCDateTime::toDateTime

(mongodb >=1.0.0)

MongoDB\BSON\UTCDateTime::toDateTime — Returns the DateTime representation of this UTCDateTime

说明

final public DateTime MongoDB\BSON\UTCDateTime::toDateTime ( void )

参数

此函数没有参数。

返回值

Returns the DateTime representation of this UTCDateTime. The returned DateTime will use the UTC time zone.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\BSON\UTCDatetime::toDateTime() example

<?php

$utcdatetime = new MongoDB\BSON\UTCDateTime(1416445411987);
$datetime = $utcdatetime->toDateTime();
var_dump($datetime->format('r'));
var_dump($datetime->format('U.u'));
var_dump($datetime->getTimezone());

?>

以上例程的输出类似于：

string(31) "Thu, 20 Nov 2014 01:03:31 +0000"
string(17) "1416445411.987000"
object(DateTimeZone)#3 (2) {
  ["timezone_type"]=>
  int(1)
  ["timezone"]=>
  string(6) "+00:00"
}

参见

  • » BSON Types: Date
MongoDB\BSON\UTCDateTime::serialize
MongoDB\BSON\UTCDateTime::__toString
MongoDB\BSON\UTCDateTime


Returns the string representation of this UTCDateTime

MongoDB\BSON\UTCDateTime::toDateTime
MongoDB\BSON\UTCDateTime::unserialize
MongoDB\BSON\UTCDateTime
PHP Manual

MongoDB\BSON\UTCDateTime::__toString

(mongodb >=1.0.0)

MongoDB\BSON\UTCDateTime::__toString — Returns the string representation of this UTCDateTime

说明

final public string MongoDB\BSON\UTCDateTime::__toString ( void )

参数

此函数没有参数。

返回值

Returns the string representation of this UTCDateTime.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.

范例

Example #1 MongoDB\BSON\UTCDateTime::__toString() example

<?php

$utcdatetime = new MongoDB\BSON\UTCDateTime(1416445411987);
var_dump((string) $utcdatetime);

?>

以上例程会输出：

string(13) "1416445411987"

参见

  • » BSON Types: Date
MongoDB\BSON\UTCDateTime::toDateTime
MongoDB\BSON\UTCDateTime::unserialize
MongoDB\BSON\UTCDateTime


Unserialize a UTCDateTime

MongoDB\BSON\UTCDateTime::__toString
MongoDB\BSON\Type
MongoDB\BSON\UTCDateTime
PHP Manual

MongoDB\BSON\UTCDateTime::unserialize

(mongodb >=1.2.0)

MongoDB\BSON\UTCDateTime::unserialize — Unserialize a UTCDateTime

说明

final public void MongoDB\BSON\UTCDateTime::unserialize ( string $serialized )

参数

serialized

The serialized MongoDB\BSON\UTCDateTime.

返回值

Returns the unserialized MongoDB\BSON\UTCDateTime.

错误／异常

  • Throws MongoDB\Driver\Exception\InvalidArgumentException on argument parsing errors.
  • Throws MongoDB\Driver\Exception\UnexpectedValueException if the properties cannot be unserialized (i.e. serialized was malformed).
  • Throws MongoDB\Driver\Exception\InvalidArgumentException if the properties are invalid (e.g. missing fields or invalid values).

参见

  • MongoDB\BSON\UTCDateTime::serialize() - Serialize a UTCDateTime
  • unserialize() - 从已存储的表示中创建 PHP 的值
  • Serializing Objects
MongoDB\BSON\UTCDateTime::__toString
MongoDB\BSON\Type
MongoDB\BSON\UTCDateTime


The MongoDB\BSON\Type interface

(mongodb >=1.0.0)

简介

类摘要

MongoDB\BSON\Type {
}
MongoDB\BSON\UTCDateTime::unserialize
MongoDB\BSON\Persistable
MongoDB\BSON


The MongoDB\BSON\Persistable interface

(mongodb >=1.0.0)

简介

Classes may implement this interface to take advantage of automatic ODM (object document mapping) behavior in the driver. During serialization, the driver will inject a __pclass property containing the PHP class name into the data returned by MongoDB\BSON\Serializable::bsonSerialize(). During unserialization, the same __pclass property will then be used to infer the PHP class (independent of any type map configuration) to be constructed before MongoDB\BSON\Unserializable::bsonUnserialize() is invoked. See Persisting Data for additional information.

Note:

Even if MongoDB\BSON\Serializable::bsonSerialize() would return a sequential array, injection of the __pclass property will cause the object to be serialized as a BSON document.

类摘要

MongoDB\BSON\Persistable implements MongoDB\BSON\Unserializable , MongoDB\BSON\Serializable {
/* 继承的方法 */
abstract public array|object MongoDB\BSON\Serializable::bsonSerialize ( void )
abstract public void MongoDB\BSON\Unserializable::bsonUnserialize ( array $data )
}
MongoDB\BSON\Type
MongoDB\BSON\Serializable
MongoDB\BSON


The MongoDB\BSON\Serializable interface

(mongodb >=1.0.0)

简介

Classes that implement this interface may return data to be serialized as a BSON array or document in lieu of the object's public properties.

类摘要

MongoDB\BSON\Serializable implements MongoDB\BSON\Type {
/* 方法 */
abstract public array|object bsonSerialize ( void )
}

Table of Contents

  • MongoDB\BSON\Serializable::bsonSerialize — Provides an array or document to serialize as BSON
MongoDB\BSON\Persistable
MongoDB\BSON\Serializable::bsonSerialize
MongoDB\BSON


Provides an array or document to serialize as BSON

MongoDB\BSON\Serializable
MongoDB\BSON\Unserializable
MongoDB\BSON\Serializable
PHP Manual

MongoDB\BSON\Serializable::bsonSerialize

(mongodb >=1.0.0)

MongoDB\BSON\Serializable::bsonSerialize — Provides an array or document to serialize as BSON

说明

abstract public array|object MongoDB\BSON\Serializable::bsonSerialize ( void )

Called during serialization of the object to BSON. The method must return an array or stdClass.

Root documents (e.g. a MongoDB\BSON\Serializable passed to MongoDB\BSON\fromPHP()) will always be serialized as a BSON document. For field values, associative arrays and stdClass instances will be serialized as a BSON document and sequential arrays (i.e. sequential, numeric indexes starting at 0) will be serialized as a BSON array.

Users are encouraged to include an _id property (e.g. a MongoDB\BSON\ObjectID initialized in your constructor) when returning data for a BSON root document; otherwise, the driver or database will need to generate a MongoDB\BSON\ObjectID when inserting or upserting the document, respectively.

参数

此函数没有参数。

返回值

An array or stdClass to be serialized as a BSON array or document.

范例

Example #1 MongoDB\BSON\Serializable::bsonSerialize() returning an associative array for root document

<?php

class MyDocument implements MongoDB\BSON\Serializable
{
    private $id;

    function __construct()
    {
        $this->id = new MongoDB\BSON\ObjectID;
    }

    function bsonSerialize()
    {
        return ['_id' => $this->id, 'foo' => 'bar'];
    }
}

$bson = MongoDB\BSON\fromPHP(new MyDocument);
echo MongoDB\BSON\toJSON($bson), "\n";

?>

以上例程的输出类似于：

{ "_id" : { "$oid" : "56cccdcada14d8755a58c591" }, "foo" : "bar" }

Example #2 MongoDB\BSON\Serializable::bsonSerialize() returning a sequential array for root document

<?php

class MyArray implements MongoDB\BSON\Serializable
{
    function bsonSerialize()
    {
        return [1, 2, 3];
    }
}

$bson = MongoDB\BSON\fromPHP(new MyArray);
echo MongoDB\BSON\toJSON($bson), "\n";

?>

以上例程会输出：

{ "0" : 1, "1" : 2, "2" : 3 }

Example #3 MongoDB\BSON\Serializable::bsonSerialize() returning an associative array for document field

<?php

class MyDocument implements MongoDB\BSON\Serializable
{
    function bsonSerialize()
    {
        return ['foo' => 'bar'];
    }
}

$value = ['document' => new MyDocument];
$bson = MongoDB\BSON\fromPHP($value);
echo MongoDB\BSON\toJSON($bson), "\n";

?>

以上例程会输出：

{ "document" : { "foo" : "bar" } }

Example #4 MongoDB\BSON\Serializable::bsonSerialize() returning a sequential array for document field

<?php

class MyArray implements MongoDB\BSON\Serializable
{
    function bsonSerialize()
    {
        return [1, 2, 3];
    }
}

$value = ['array' => new MyArray];
$bson = MongoDB\BSON\fromPHP($value);
echo MongoDB\BSON\toJSON($bson), "\n";

?>

以上例程会输出：

{ "array" : [ 1, 2, 3 ] }

参见

  • MongoDB\BSON\Unserializable::bsonUnserialize() - Constructs the object from a BSON array or document
  • MongoDB\BSON\Persistable
  • Persisting Data
MongoDB\BSON\Serializable
MongoDB\BSON\Unserializable
MongoDB\BSON\Serializable


The MongoDB\BSON\Unserializable interface

(mongodb >=1.0.0)

简介

Classes that implement this interface may be specified in a type map for unserializing BSON arrays and documents (both root and embedded).

类摘要

MongoDB\BSON\Unserializable {
/* 方法 */
abstract public void bsonUnserialize ( array $data )
}

Table of Contents

  • MongoDB\BSON\Unserializable::bsonUnserialize — Constructs the object from a BSON array or document
MongoDB\BSON\Serializable::bsonSerialize
MongoDB\BSON\Unserializable::bsonUnserialize
MongoDB\BSON


Constructs the object from a BSON array or document

MongoDB\BSON\Unserializable
MongoDB\Driver\Exception
MongoDB\BSON\Unserializable
PHP Manual

MongoDB\BSON\Unserializable::bsonUnserialize

(mongodb >=1.0.0)

MongoDB\BSON\Unserializable::bsonUnserialize — Constructs the object from a BSON array or document

说明

abstract public void MongoDB\BSON\Unserializable::bsonUnserialize ( array $data )

Called during unserialization of the object from BSON. The properties of the BSON array or document will be passed to the method as an array.

Remember to check for an _id property when handling data from a BSON document.

Note:

This method acts as the constructor of the object. The __construct() method will not be called after this method.

参数

data (array)

Properties within the BSON array or document.

返回值

The return value from this method is ignored.

范例

Example #1 MongoDB\BSON\Unserializable::bsonUnserialize() example

<?php

class MyDocument implements MongoDB\BSON\Unserializable
{
    private $data = [];

    function bsonUnserialize(array $data)
    {
        $this->data = $data;
    }
}

$bson = MongoDB\BSON\fromJSON('{ "foo": "bar" }');
$value = MongoDB\BSON\toPHP($bson, ['root' => 'MyDocument']);
var_dump($value);

?>

以上例程会输出：

object(MyDocument)#1 (1) {
  ["data":"MyDocument":private]=>
  array(1) {
    ["foo"]=>
    string(3) "bar"
  }
}

参见

  • MongoDB\BSON\Serializable::bsonSerialize() - Provides an array or document to serialize as BSON
  • MongoDB\BSON\Persistable
  • Persisting Data
MongoDB\BSON\Unserializable
MongoDB\Driver\Exception
MongoDB\BSON\Unserializable


Exception classes

  • MongoDB\Driver\Exception\AuthenticationException — The MongoDB\Driver\Exception\AuthenticationException class
  • MongoDB\Driver\Exception\BulkWriteException — The MongoDB\Driver\Exception\BulkWriteException class
  • MongoDB\Driver\Exception\ConnectionException — The MongoDB\Driver\Exception\ConnectionException class
  • MongoDB\Driver\Exception\ConnectionTimeoutException — The MongoDB\Driver\Exception\ConnectionTimeoutException class
  • MongoDB\Driver\Exception\Exception — The MongoDB\Driver\Exception\Exception interface
  • MongoDB\Driver\Exception\ExecutionTimeoutException — The MongoDB\Driver\Exception\ExecutionTimeoutException class
  • MongoDB\Driver\Exception\InvalidArgumentException — The MongoDB\Driver\Exception\InvalidArgumentException class
  • MongoDB\Driver\Exception\LogicException — The MongoDB\Driver\Exception\LogicException class
  • MongoDB\Driver\Exception\RuntimeException — The MongoDB\Driver\Exception\RuntimeException class
  • MongoDB\Driver\Exception\SSLConnectionException — The MongoDB\Driver\Exception\SSLConnectionException class
  • MongoDB\Driver\Exception\UnexpectedValueException — The MongoDB\Driver\Exception\UnexpectedValueException class
  • MongoDB\Driver\Exception\WriteException — The MongoDB\Driver\Exception\WriteException class
    • MongoDB\Driver\Exception\WriteException::getWriteResult — Returns the WriteResult for the failed write operation
MongoDB\BSON\Unserializable::bsonUnserialize
MongoDB\Driver\Exception\AuthenticationException
MongoDB


The MongoDB\Driver\Exception\AuthenticationException class

(mongodb >= 1.0.0)

简介

Thrown when the driver fails to authenticate with the server.

类摘要

MongoDB\Driver\Exception\AuthenticationException extends MongoDB\Driver\Exception\ConnectionException implements MongoDB\Driver\Exception\Exception {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
MongoDB\Driver\Exception
MongoDB\Driver\Exception\BulkWriteException
MongoDB\Driver\Exception


The MongoDB\Driver\Exception\BulkWriteException class

(mongodb >= 1.0.0)

简介

Thrown when a bulk write operation fails.

类摘要

MongoDB\Driver\Exception\BulkWriteException extends MongoDB\Driver\Exception\WriteException implements MongoDB\Driver\Exception\Exception {
/* 继承的属性 */
protected MongoDB\Driver\WriteResult $writeResult ;
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public MongoDB\Driver\WriteResult MongoDB\Driver\Exception\WriteException::getWriteResult ( void )
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
MongoDB\Driver\Exception\AuthenticationException
MongoDB\Driver\Exception\ConnectionException
MongoDB\Driver\Exception


The MongoDB\Driver\Exception\ConnectionException class

(mongodb >= 1.0.0)

简介

Base class for exceptions thrown when the driver fails to establish a database connection.

类摘要

MongoDB\Driver\Exception\ConnectionException extends MongoDB\Driver\Exception\RuntimeException implements MongoDB\Driver\Exception\Exception {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
MongoDB\Driver\Exception\BulkWriteException
MongoDB\Driver\Exception\ConnectionTimeoutException
MongoDB\Driver\Exception


The MongoDB\Driver\Exception\ConnectionTimeoutException class

(mongodb >= 1.0.0)

简介

Thrown when the driver fails to establish a database connection within a specified time limit (e.g. » connectTimeoutMS).

类摘要

MongoDB\Driver\Exception\ConnectionTimeoutException extends MongoDB\Driver\Exception\ConnectionException implements MongoDB\Driver\Exception\Exception {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
MongoDB\Driver\Exception\ConnectionException
MongoDB\Driver\Exception\Exception
MongoDB\Driver\Exception


The MongoDB\Driver\Exception\Exception interface

(mongodb >= 1.0.0)

简介

Common interface for all driver exceptions. This may be used to catch only exceptions originating from the driver itself.

类摘要

MongoDB\Driver\Exception\Exception {
}
MongoDB\Driver\Exception\ConnectionTimeoutException
MongoDB\Driver\Exception\ExecutionTimeoutException
MongoDB\Driver\Exception


The MongoDB\Driver\Exception\ExecutionTimeoutException class

(mongodb >= 1.0.0)

简介

Thrown when a query or command fails to complete within a specified time limit (e.g. » maxTimeMS).

类摘要

MongoDB\Driver\Exception\ExecutionTimeoutException extends MongoDB\Driver\Exception\RuntimeException implements MongoDB\Driver\Exception\Exception {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
MongoDB\Driver\Exception\Exception
MongoDB\Driver\Exception\InvalidArgumentException
MongoDB\Driver\Exception


The MongoDB\Driver\Exception\InvalidArgumentException class

(mongodb >= 1.0.0)

简介

Thrown when a driver method is given invalid arguments (e.g. invalid option types).

类摘要

MongoDB\Driver\Exception\InvalidArgumentException extends InvalidArgumentException implements MongoDB\Driver\Exception\Exception {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
MongoDB\Driver\Exception\ExecutionTimeoutException
MongoDB\Driver\Exception\LogicException
MongoDB\Driver\Exception


The MongoDB\Driver\Exception\LogicException class

(mongodb >= 1.0.0)

简介

Thrown when the driver is incorrectly used (e.g. rewinding a cursor).

类摘要

MongoDB\Driver\Exception\LogicException extends LogicException implements MongoDB\Driver\Exception\Exception {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
MongoDB\Driver\Exception\InvalidArgumentException
MongoDB\Driver\Exception\RuntimeException
MongoDB\Driver\Exception


The MongoDB\Driver\Exception\RuntimeException class

(mongodb >= 1.0.0)

简介

Thrown when the driver encounters a runtime error (e.g. internal error from » libmongoc).

类摘要

MongoDB\Driver\Exception\RuntimeException extends RuntimeException implements MongoDB\Driver\Exception\Exception {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
MongoDB\Driver\Exception\LogicException
MongoDB\Driver\Exception\SSLConnectionException
MongoDB\Driver\Exception


The MongoDB\Driver\Exception\SSLConnectionException class

(mongodb >= 1.0.0)

简介

Thrown when the driver fails to establish an SSL connection with the server.

类摘要

MongoDB\Driver\Exception\SSLConnectionException extends MongoDB\Driver\Exception\ConnectionException implements MongoDB\Driver\Exception\Exception {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
MongoDB\Driver\Exception\RuntimeException
MongoDB\Driver\Exception\UnexpectedValueException
MongoDB\Driver\Exception


The MongoDB\Driver\Exception\UnexpectedValueException class

(mongodb >= 1.0.0)

简介

Thrown when the driver encounters an unexpected value (e.g. during BSON serialization or deserialization).

类摘要

MongoDB\Driver\Exception\UnexpectedValueException extends UnexpectedValueException implements MongoDB\Driver\Exception\Exception {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
MongoDB\Driver\Exception\SSLConnectionException
MongoDB\Driver\Exception\WriteException
MongoDB\Driver\Exception


The MongoDB\Driver\Exception\WriteException class

(mongodb >= 1.0.0)

简介

Base class for exceptions thrown by a failed write operation. The exception encapsulates a MongoDB\Driver\WriteResult object.

类摘要

abstract MongoDB\Driver\Exception\WriteException extends MongoDB\Driver\Exception\RuntimeException implements MongoDB\Driver\Exception\Exception {
/* 属性 */
protected MongoDB\Driver\WriteResult $writeResult ;
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 方法 */
final public MongoDB\Driver\WriteResult getWriteResult ( void )
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}

属性

writeResult

The MongoDB\Driver\WriteResult associated with the failed write operation.

Table of Contents

  • MongoDB\Driver\Exception\WriteException::getWriteResult — Returns the WriteResult for the failed write operation
MongoDB\Driver\Exception\UnexpectedValueException
MongoDB\Driver\Exception\WriteException::getWriteResult
MongoDB\Driver\Exception


Returns the WriteResult for the failed write operation

MongoDB\Driver\Exception\WriteException
mSQL
MongoDB\Driver\Exception\WriteException
PHP Manual

MongoDB\Driver\Exception\WriteException::getWriteResult

(mongodb >= 1.0.0)

MongoDB\Driver\Exception\WriteException::getWriteResult — Returns the WriteResult for the failed write operation

说明

final public MongoDB\Driver\WriteResult MongoDB\Driver\Exception\WriteException::getWriteResult ( void )

Returns the MongoDB\Driver\WriteResult for the failed write operation. The MongoDB\Driver\WriteResult::getWriteErrors() and MongoDB\Driver\WriteResult::getWriteConcernError() methods may be used to get more details about the failure.

参数

此函数没有参数。

返回值

The MongoDB\Driver\WriteResult for the failed write operation.

范例

Example #1 MongoDB\Driver\Exception\WriteException::getWriteResult() example

<?php

$manager = new MongoDB\Driver\Manager('mongodb://localhost');
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(['_id' => 1]);
$bulk->insert(['_id' => 1]);

try {
    $manager->executeBulkWrite('db.collection', $bulk);
} catch (MongoDB\Driver\Exception\WriteException $e) {
    $writeResult = $e->getWriteResult();

    if ($writeConcernError = $writeResult->getWriteConcernError()) {
        var_dump($writeConcernError);
    }

    if ($writeErrors = $writeResult->getWriteErrors()) {
        var_dump($writeErrors);
    }
}

?>

以上例程的输出类似于：

array(1) {
  [0]=>
  object(MongoDB\Driver\WriteError)#5 (4) {
    ["message"]=>
    string(70) "E11000 duplicate key error index: db.collection.$_id_ dup key: { : 1 }"
    ["code"]=>
    int(11000)
    ["index"]=>
    int(1)
    ["info"]=>
    NULL
  }
}

参见

  • MongoDB\Driver\WriteResult
  • MongoDB\Driver\Manager::executeBulkWrite() - Execute one or more write operations
MongoDB\Driver\Exception\WriteException
mSQL
MongoDB\Driver\Exception\WriteException


mSQL

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Basic usage
  • mSQL 函数
    • msql_affected_rows — Returns number of affected rows
    • msql_close — Close mSQL connection
    • msql_connect — Open mSQL connection
    • msql_create_db — Create mSQL database
    • msql_createdb — 别名 msql_create_db
    • msql_data_seek — Move internal row pointer
    • msql_db_query — Send mSQL query
    • msql_dbname — 别名 msql_result
    • msql_drop_db — Drop (delete) mSQL database
    • msql_error — Returns error message of last msql call
    • msql_fetch_array — Fetch row as array
    • msql_fetch_field — Get field information
    • msql_fetch_object — Fetch row as object
    • msql_fetch_row — Get row as enumerated array
    • msql_field_flags — Get field flags
    • msql_field_len — Get field length
    • msql_field_name — Get the name of the specified field in a result
    • msql_field_seek — Set field offset
    • msql_field_table — Get table name for field
    • msql_field_type — Get field type
    • msql_fieldflags — Alias of msql_field_flags
    • msql_fieldlen — Alias of msql_field_len
    • msql_fieldname — Alias of msql_field_name
    • msql_fieldtable — Alias of msql_field_table
    • msql_fieldtype — Alias of msql_field_type
    • msql_free_result — Free result memory
    • msql_list_dbs — List mSQL databases on server
    • msql_list_fields — List result fields
    • msql_list_tables — List tables in an mSQL database
    • msql_num_fields — Get number of fields in result
    • msql_num_rows — Get number of rows in result
    • msql_numfields — Alias of msql_num_fields
    • msql_numrows — Alias of msql_num_rows
    • msql_pconnect — Open persistent mSQL connection
    • msql_query — Send mSQL query
    • msql_regcase — Alias of sql_regcase
    • msql_result — Get result data
    • msql_select_db — Select mSQL database
    • msql_tablename — Alias of msql_result
    • msql — Alias of msql_db_query
MongoDB\Driver\Exception\WriteException::getWriteResult
简介
针对各数据库系统对应的扩展


简介

These functions allow you to access mSQL database servers. More information about mSQL can be found at » http://www.hughes.com.au/.

mSQL
安装／配置
mSQL


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
mSQL


安装

In order to have these functions available, you must compile PHP with msql support by using the --with-msql[=DIR] option. DIR is the mSQL base install directory, defaults to /usr/local/msql3.

Note: Note to Win32 Users

为了使此扩展生效， DLL 文件必须能在 Windows 系统的 PATH 指示的路径下找到。如何操作的信息，请参见题为"如何在 Windows 中将 PHP 目录加到 PATH 中"的FAQ。虽然将 DLL 文件从 PHP 文件夹复制到 Windows 系统目录也行，但不建议这样做。 此扩展需要下列文件在 PATH 路径中： msql.dll

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

mSQL configuration options
名字 | 默认 | 可修改范围 | 更新日志
msql.allow_persistent | "1" | PHP_INI_ALL |
msql.max_persistent | "-1" | PHP_INI_ALL |
msql.max_links | "-1" | PHP_INI_ALL |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

msql.allow_persistent boolean

Whether to allow persistent mSQL connections.

msql.max_persistent integer

The maximum number of persistent mSQL connections per process.

msql.max_links integer

The maximum number of mSQL connections per process, including persistent connections.

安装
资源类型
安装／配置


资源类型

There are two resource types used in the mSQL module. The first one is the link identifier for a database connection, the second a resource which holds the result of a query.

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

MSQL_ASSOC (integer)
MSQL_NUM (integer)
MSQL_BOTH (integer)
资源类型
范例
mSQL


范例

Table of Contents

  • Basic usage
预定义常量
Basic usage
mSQL


Basic usage

This simple example shows how to connect, execute a query, print resulting rows and disconnect from a mSQL database.

Example #1 mSQL usage example

<?php
/* Connecting, selecting database */
$link = msql_connect('localhost', 'username', 'password')
    or die('Could not connect : ' . msql_error($link));

msql_select_db('database', $link)
    or die('Could not select database');

/* Issue SQL query */
$query = 'SELECT * FROM my_table';
$result = msql_query($query, $link) or die('Query failed : ' . msql_error());

/* Printing results in HTML */
echo "<table>\n";
while ($row = msql_fetch_array($result, MSQL_ASSOC)) {
    echo "\t<tr>\n";
    foreach ($row as $col_value) {
        echo "\t\t<td>$col_value</td>\n";
    }
    echo "\t</tr>\n";
}
echo "</table>\n";

/* Free result set */
msql_free_result($result);

/* Close connection */
msql_close($link);
?>

范例
mSQL 函数
范例


mSQL 函数

Table of Contents

  • msql_affected_rows — Returns number of affected rows
  • msql_close — Close mSQL connection
  • msql_connect — Open mSQL connection
  • msql_create_db — Create mSQL database
  • msql_createdb — 别名 msql_create_db
  • msql_data_seek — Move internal row pointer
  • msql_db_query — Send mSQL query
  • msql_dbname — 别名 msql_result
  • msql_drop_db — Drop (delete) mSQL database
  • msql_error — Returns error message of last msql call
  • msql_fetch_array — Fetch row as array
  • msql_fetch_field — Get field information
  • msql_fetch_object — Fetch row as object
  • msql_fetch_row — Get row as enumerated array
  • msql_field_flags — Get field flags
  • msql_field_len — Get field length
  • msql_field_name — Get the name of the specified field in a result
  • msql_field_seek — Set field offset
  • msql_field_table — Get table name for field
  • msql_field_type — Get field type
  • msql_fieldflags — Alias of msql_field_flags
  • msql_fieldlen — Alias of msql_field_len
  • msql_fieldname — Alias of msql_field_name
  • msql_fieldtable — Alias of msql_field_table
  • msql_fieldtype — Alias of msql_field_type
  • msql_free_result — Free result memory
  • msql_list_dbs — List mSQL databases on server
  • msql_list_fields — List result fields
  • msql_list_tables — List tables in an mSQL database
  • msql_num_fields — Get number of fields in result
  • msql_num_rows — Get number of rows in result
  • msql_numfields — Alias of msql_num_fields
  • msql_numrows — Alias of msql_num_rows
  • msql_pconnect — Open persistent mSQL connection
  • msql_query — Send mSQL query
  • msql_regcase — Alias of sql_regcase
  • msql_result — Get result data
  • msql_select_db — Select mSQL database
  • msql_tablename — Alias of msql_result
  • msql — Alias of msql_db_query
Basic usage
msql_affected_rows
mSQL


Returns number of affected rows

mSQL 函数
msql_close
mSQL 函数
PHP Manual

msql_affected_rows

(PHP 4, PHP 5, PHP 7)

msql_affected_rows — Returns number of affected rows

说明

int msql_affected_rows ( resource $result )

Returns number of affected rows by the last SELECT, UPDATE or DELETE query associated with result.

参数

result

resource 型的结果集。此结果集来自对 msql_query() 的调用。

返回值

Returns the number of affected rows on success, or FALSE on error.

参见

  • msql_query() - Send mSQL query

mSQL 函数
msql_close
mSQL 函数


Close mSQL connection

msql_affected_rows
msql_connect
mSQL 函数
PHP Manual

msql_close

(PHP 4, PHP 5, PHP 7)

msql_close — Close mSQL connection

说明

bool msql_close ([ resource $link_identifier ] )

msql_close() closes the non-persistent connection to the mSQL server that's associated with the specified link identifier.

Using msql_close() isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution. See also freeing resources.

参数

link_identifier

mSQL 连接。如果不指定，则使用由 msql_connect() 最近打开的连接。如果没有找到该连接，函数会尝试通过调用 msql_connect() 建立连接并使用它。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • msql_connect() - Open mSQL connection
  • msql_pconnect() - Open persistent mSQL connection

msql_affected_rows
msql_connect
mSQL 函数


Open mSQL connection

msql_close
msql_create_db
mSQL 函数
PHP Manual

msql_connect

(PHP 4, PHP 5, PHP 7)

msql_connect — Open mSQL connection

说明

resource msql_connect ([ string $hostname ] )

msql_connect() establishes a connection to a mSQL server.

If a second call is made to msql_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned.

The link to the server will be closed as soon as the execution of the script ends, unless it's closed earlier by explicitly calling msql_close().

参数

hostname

The hostname can also include a port number. e.g. hostname,port.

If not specified, the connection is established by the means of a Unix domain socket, being then more efficient then a localhost TCP socket connection.

Note:

While this function will accept a colon (:) as a host/port separator, a comma (,) is the preferred method.

返回值

Returns a positive mSQL link identifier on success, or FALSE on error.

参见

  • msql_pconnect() - Open persistent mSQL connection
  • msql_close() - Close mSQL connection

msql_close
msql_create_db
mSQL 函数


Create mSQL database

msql_connect
msql_createdb
mSQL 函数
PHP Manual

msql_create_db

(PHP 4, PHP 5, PHP 7)

msql_create_db — Create mSQL database

说明

bool msql_create_db ( string $database_name [, resource $link_identifier ] )

msql_create_db() attempts to create a new database on the mSQL server.

参数

database_name

The name of the mSQL database.

link_identifier

mSQL 连接。如果不指定，则使用由 msql_connect() 最近打开的连接。如果没有找到该连接，函数会尝试通过调用 msql_connect() 建立连接并使用它。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • msql_drop_db() - Drop (delete) mSQL database

msql_connect
msql_createdb
mSQL 函数


别名 msql_create_db

msql_create_db
msql_data_seek
mSQL 函数
PHP Manual

msql_createdb

(PHP 4, PHP 5, PHP 7)

msql_createdb — 别名 msql_create_db()

说明

此函数是该函数的别名： msql_create_db().

msql_create_db
msql_data_seek
mSQL 函数


Move internal row pointer

msql_createdb
msql_db_query
mSQL 函数
PHP Manual

msql_data_seek

(PHP 4, PHP 5, PHP 7)

msql_data_seek — Move internal row pointer

说明

bool msql_data_seek ( resource $result , int $row_number )

msql_data_seek() moves the internal row pointer of the mSQL result associated with the specified query identifier to point to the specified row number. The next call to msql_fetch_row() would return that row.

参数

result

resource 型的结果集。此结果集来自对 msql_query() 的调用。

row_number

The seeked row number.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • msql_fetch_array() - Fetch row as array
  • msql_fetch_object() - Fetch row as object
  • msql_fetch_row() - Get row as enumerated array
  • msql_result() - Get result data

msql_createdb
msql_db_query
mSQL 函数


Send mSQL query

msql_data_seek
msql_dbname
mSQL 函数
PHP Manual

msql_db_query

(PHP 4, PHP 5, PHP 7)

msql_db_query — Send mSQL query

说明

resource msql_db_query ( string $database , string $query [, resource $link_identifier ] )

msql_db_query() selects a database and executes a query on it.

参数

database

The name of the mSQL database.

query

The SQL query.

link_identifier

mSQL 连接。如果不指定，则使用由 msql_connect() 最近打开的连接。如果没有找到该连接，函数会尝试通过调用 msql_connect() 建立连接并使用它。

返回值

Returns a positive mSQL query identifier to the query result, or FALSE on error.

参见

  • msql_query() - Send mSQL query

msql_data_seek
msql_dbname
mSQL 函数


别名 msql_result

msql_db_query
msql_drop_db
mSQL 函数
PHP Manual

msql_dbname

(PHP 4, PHP 5, PHP 7)

msql_dbname — 别名 msql_result()

说明

此函数是该函数的别名： msql_result().

msql_db_query
msql_drop_db
mSQL 函数


Drop (delete) mSQL database

msql_dbname
msql_error
mSQL 函数
PHP Manual

msql_drop_db

(PHP 4, PHP 5, PHP 7)

msql_drop_db — Drop (delete) mSQL database

说明

bool msql_drop_db ( string $database_name [, resource $link_identifier ] )

msql_drop_db() attempts to drop (remove) a database from the mSQL server.

参数

database_name

The name of the database.

link_identifier

mSQL 连接。如果不指定，则使用由 msql_connect() 最近打开的连接。如果没有找到该连接，函数会尝试通过调用 msql_connect() 建立连接并使用它。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • msql_create_db() - Create mSQL database

msql_dbname
msql_error
mSQL 函数


Returns error message of last msql call

msql_drop_db
msql_fetch_array
mSQL 函数
PHP Manual

msql_error

(PHP 4, PHP 5, PHP 7)

msql_error — Returns error message of last msql call

说明

string msql_error ( void )

msql_error() returns the last issued error by the mSQL server. Note that only the last error message is accessible with msql_error().

返回值

The last error message or an empty string if no error was issued.

msql_drop_db
msql_fetch_array
mSQL 函数


Fetch row as array

msql_error
msql_fetch_field
mSQL 函数
PHP Manual

msql_fetch_array

(PHP 4, PHP 5, PHP 7)

msql_fetch_array — Fetch row as array

说明

array msql_fetch_array ( resource $result [, int $result_type ] )

msql_fetch_array() is an extended version of msql_fetch_row(). In addition to storing the data in the numeric indices of the result array, it also stores the data in associative indices, using the field names as keys.

An important thing to note is that using msql_fetch_array() is NOT significantly slower than using msql_fetch_row(), while it provides a significant added value.

参数

result

resource 型的结果集。此结果集来自对 msql_query() 的调用。

result_type

A constant that can take the following values: MSQL_ASSOC, MSQL_NUM, and MSQL_BOTH with MSQL_BOTH being the default.

返回值

Returns an array that corresponds to the fetched row, or FALSE if there are no more rows.

范例

Example #1 msql_fetch_array() example

<?php
$con = msql_connect();
if (!$con) {
    die('Server connection problem: ' . msql_error());
}

if (!msql_select_db('test', $con)) {
    die('Database connection problem: ' . msql_error());
}

$result = msql_query('SELECT id, name FROM people', $con);
if (!$result) {
    die('Query execution problem: ' . msql_error());
}

while ($row = msql_fetch_array($result, MSQL_ASSOC)) {
    echo $row['id'] . ': ' . $row['name'] . "\n";
}

msql_free_result($result);
?>

更新日志

版本 | 说明
5.0.4 | A bug was fixed when retrieving data from columns containing NULL values. Such columns were not placed into the resulting array.

参见

  • msql_fetch_row() - Get row as enumerated array
  • msql_fetch_object() - Fetch row as object
  • msql_data_seek() - Move internal row pointer
  • msql_result() - Get result data

msql_error
msql_fetch_field
mSQL 函数


Get field information

msql_fetch_array
msql_fetch_object
mSQL 函数
PHP Manual

msql_fetch_field

(PHP 4, PHP 5, PHP 7)

msql_fetch_field — Get field information

说明

object msql_fetch_field ( resource $result [, int $field_offset = 0 ] )

msql_fetch_field() can be used in order to obtain information about fields in a certain query result.

参数

result

resource 型的结果集。此结果集来自对 msql_query() 的调用。

field_offset

The field offset. If not specified, the next field that wasn't yet retrieved by msql_fetch_field() is retrieved.

返回值

Returns an object containing field information. The properties of the object are:

  • name - column name

  • table - name of the table the column belongs to

  • not_null - 1 if the column cannot be NULL

  • unique - 1 if the column is a unique key

  • type - the type of the column

参见

  • msql_field_seek() - Set field offset

msql_fetch_array
msql_fetch_object
mSQL 函数


Fetch row as object

msql_fetch_field
msql_fetch_row
mSQL 函数
PHP Manual

msql_fetch_object

(PHP 4, PHP 5, PHP 7)

msql_fetch_object — Fetch row as object

说明

object msql_fetch_object ( resource $result )

msql_fetch_object() is similar to msql_fetch_array(), with one difference - an object is returned, instead of an array. Indirectly, that means that you can only access the data by the field names, and not by their offsets (numbers are illegal property names).

Speed-wise, the function is identical to msql_fetch_array(), and almost as quick as msql_fetch_row() (the difference is insignificant).

参数

result

resource 型的结果集。此结果集来自对 msql_query() 的调用。

返回值

Returns an object with properties that correspond to the fetched row, or FALSE if there are no more rows.

范例

Example #1 msql_fetch_object() example

<?php
$con = msql_connect();
if (!$con) {
    die('Server connection problem: ' . msql_error());
}

if (!msql_select_db('test', $con)) {
    die('Database connection problem: ' . msql_error());
}

$result = msql_query('SELECT id, name FROM people', $con);
if (!$result) {
    die('Query execution problem: ' . msql_error());
}

while ($row = msql_fetch_object($result, MSQL_ASSOC)) {
    echo $row->id . ': ' . $row->name . "\n";
}

msql_free_result($result);
?>

更新日志

版本 | 说明
5.0.4 | A bug was fixed when retrieving data from columns containing NULL values. Such columns were not placed into the resulting array.

参见

  • msql_fetch_array() - Fetch row as array
  • msql_fetch_row() - Get row as enumerated array
  • msql_data_seek() - Move internal row pointer
  • msql_result() - Get result data

msql_fetch_field
msql_fetch_row
mSQL 函数


Get row as enumerated array

msql_fetch_object
msql_field_flags
mSQL 函数
PHP Manual

msql_fetch_row

(PHP 4, PHP 5, PHP 7)

msql_fetch_row — Get row as enumerated array

说明

array msql_fetch_row ( resource $result )

msql_fetch_row() fetches one row of data from the result associated with the specified query identifier. The row is returned as an array. Each result column is stored in an array offset, starting at offset 0.

Subsequent call to msql_fetch_row() would return the next row in the result set, or FALSE if there are no more rows.

参数

result

resource 型的结果集。此结果集来自对 msql_query() 的调用。

返回值

Returns an array that corresponds to the fetched row, or FALSE if there are no more rows.

范例

Example #1 msql_fetch_row() example

<?php
$con = msql_connect();
if (!$con) {
    die('Server connection problem: ' . msql_error());
}

if (!msql_select_db('test', $con)) {
    die('Database connection problem: ' . msql_error());
}

$result = msql_query('SELECT id, name FROM people', $con);
if (!$result) {
    die('Query execution problem: ' . msql_error());
}

while ($row = msql_fetch_row($result)) {
    echo $row[0] . ': ' . $row[1] . "\n";
}

msql_free_result($result);
?>

更新日志

版本 | 说明
5.0.4 | A bug was fixed when retrieving data from columns containing NULL values. Such columns were not placed into the resulting array.

参见

  • msql_fetch_array() - Fetch row as array
  • msql_fetch_object() - Fetch row as object
  • msql_data_seek() - Move internal row pointer
  • msql_result() - Get result data

msql_fetch_object
msql_field_flags
mSQL 函数


Get field flags

msql_fetch_row
msql_field_len
mSQL 函数
PHP Manual

msql_field_flags

(PHP 4, PHP 5, PHP 7)

msql_field_flags — Get field flags

说明

string msql_field_flags ( resource $result , int $field_offset )

msql_field_flags() returns the field flags of the specified field.

参数

result

resource 型的结果集。此结果集来自对 msql_query() 的调用。

field_offset

数值型字段偏移量。 field_offset 从 1 开始。

返回值

Returns a string containing the field flags of the specified key. This can be: primary key not null, not null, primary key, unique not null or unique.

msql_fetch_row
msql_field_len
mSQL 函数


Get field length

msql_field_flags
msql_field_name
mSQL 函数
PHP Manual

msql_field_len

(PHP 4, PHP 5, PHP 7)

msql_field_len — Get field length

说明

int msql_field_len ( resource $result , int $field_offset )

msql_field_len() returns the length of the specified field.

参数

result

resource 型的结果集。此结果集来自对 msql_query() 的调用。

field_offset

数值型字段偏移量。 field_offset 从 1 开始。

返回值

Returns the length of the specified field or FALSE on error.

msql_field_flags
msql_field_name
mSQL 函数


Get the name of the specified field in a result

msql_field_len
msql_field_seek
mSQL 函数
PHP Manual

msql_field_name

(PHP 4, PHP 5, PHP 7)

msql_field_name — Get the name of the specified field in a result

说明

string msql_field_name ( resource $result , int $field_offset )

msql_field_name() gets the name of the specified field index.

参数

result

resource 型的结果集。此结果集来自对 msql_query() 的调用。

field_offset

数值型字段偏移量。 field_offset 从 1 开始。

返回值

The name of the field 或者在失败时返回 FALSE.

参见

  • msql_field_len() - Get field length

msql_field_len
msql_field_seek
mSQL 函数


Set field offset

msql_field_name
msql_field_table
mSQL 函数
PHP Manual

msql_field_seek

(PHP 4, PHP 5, PHP 7)

msql_field_seek — Set field offset

说明

bool msql_field_seek ( resource $result , int $field_offset )

Seeks to the specified field offset. If the next call to msql_fetch_field() won't include a field offset, this field would be returned.

参数

result

resource 型的结果集。此结果集来自对 msql_query() 的调用。

field_offset

数值型字段偏移量。 field_offset 从 1 开始。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • msql_fetch_field() - Get field information

msql_field_name
msql_field_table
mSQL 函数


Get table name for field

msql_field_seek
msql_field_type
mSQL 函数
PHP Manual

msql_field_table

(PHP 4, PHP 5, PHP 7)

msql_field_table — Get table name for field

说明

int msql_field_table ( resource $result , int $field_offset )

Returns the name of the table that the specified field is in.

参数

result

resource 型的结果集。此结果集来自对 msql_query() 的调用。

field_offset

数值型字段偏移量。 field_offset 从 1 开始。

返回值

The name of the table on success 或者在失败时返回 FALSE.

msql_field_seek
msql_field_type
mSQL 函数


Get field type

msql_field_table
msql_fieldflags
mSQL 函数
PHP Manual

msql_field_type

(PHP 4, PHP 5, PHP 7)

msql_field_type — Get field type

说明

string msql_field_type ( resource $result , int $field_offset )

msql_field_type() gets the type of the specified field index.

参数

result

resource 型的结果集。此结果集来自对 msql_query() 的调用。

field_offset

数值型字段偏移量。 field_offset 从 1 开始。

返回值

The type of the field. One of int, char, real, ident, null or unknown. This functions will return FALSE on failure.

msql_field_table
msql_fieldflags
mSQL 函数


Alias of msql_field_flags

msql_field_type
msql_fieldlen
mSQL 函数
PHP Manual

msql_fieldflags

(PHP 4, PHP 5, PHP 7)

msql_fieldflags — Alias of msql_field_flags()

说明

This function is an alias of msql_field_flags().

msql_field_type
msql_fieldlen
mSQL 函数


Alias of msql_field_len

msql_fieldflags
msql_fieldname
mSQL 函数
PHP Manual

msql_fieldlen

(PHP 4, PHP 5, PHP 7)

msql_fieldlen — Alias of msql_field_len()

说明

This function is an alias of msql_field_len().

msql_fieldflags
msql_fieldname
mSQL 函数


Alias of msql_field_name

msql_fieldlen
msql_fieldtable
mSQL 函数
PHP Manual

msql_fieldname

(PHP 4, PHP 5, PHP 7)

msql_fieldname — Alias of msql_field_name()

说明

This function is an alias of msql_field_name().

msql_fieldlen
msql_fieldtable
mSQL 函数


Alias of msql_field_table

msql_fieldname
msql_fieldtype
mSQL 函数
PHP Manual

msql_fieldtable

(PHP 4, PHP 5, PHP 7)

msql_fieldtable — Alias of msql_field_table()

说明

This function is an alias of msql_field_table().

msql_fieldname
msql_fieldtype
mSQL 函数


Alias of msql_field_type

msql_fieldtable
msql_free_result
mSQL 函数
PHP Manual

msql_fieldtype

(PHP 4, PHP 5, PHP 7)

msql_fieldtype — Alias of msql_field_type()

说明

This function is an alias of msql_field_type().

msql_fieldtable
msql_free_result
mSQL 函数


Free result memory

msql_fieldtype
msql_list_dbs
mSQL 函数
PHP Manual

msql_free_result

(PHP 4, PHP 5, PHP 7)

msql_free_result — Free result memory

说明

bool msql_free_result ( resource $result )

msql_free_result() frees the memory associated with query_identifier. When PHP completes a request, this memory is freed automatically, so you only need to call this function when you want to make sure you don't use too much memory while the script is running.

参数

result

resource 型的结果集。此结果集来自对 msql_query() 的调用。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

msql_fieldtype
msql_list_dbs
mSQL 函数


List mSQL databases on server

msql_free_result
msql_list_fields
mSQL 函数
PHP Manual

msql_list_dbs

(PHP 4, PHP 5, PHP 7)

msql_list_dbs — List mSQL databases on server

说明

resource msql_list_dbs ([ resource $link_identifier ] )

msql_list_tables() lists the databases available on the specified link_identifier.

参数

link_identifier

mSQL 连接。如果不指定，则使用由 msql_connect() 最近打开的连接。如果没有找到该连接，函数会尝试通过调用 msql_connect() 建立连接并使用它。

返回值

Returns a result set which may be traversed with any function that fetches result sets, such as msql_fetch_array(). On failure, this function will return FALSE.

参见

  • msql_list_tables() - List tables in an mSQL database
  • msql_list_fields() - List result fields

msql_free_result
msql_list_fields
mSQL 函数


List result fields

msql_list_dbs
msql_list_tables
mSQL 函数
PHP Manual

msql_list_fields

(PHP 4, PHP 5, PHP 7)

msql_list_fields — List result fields

说明

resource msql_list_fields ( string $database , string $tablename [, resource $link_identifier ] )

msql_list_fields() returns information about the given table.

参数

database

The name of the database.

tablename

The name of the table.

link_identifier

mSQL 连接。如果不指定，则使用由 msql_connect() 最近打开的连接。如果没有找到该连接，函数会尝试通过调用 msql_connect() 建立连接并使用它。

返回值

Returns a result set which may be traversed with any function that fetches result sets, such as msql_fetch_array(). On failure, this function will return FALSE.

参见

  • msql_list_tables() - List tables in an mSQL database
  • msql_list_dbs() - List mSQL databases on server

msql_list_dbs
msql_list_tables
mSQL 函数


List tables in an mSQL database

msql_list_fields
msql_num_fields
mSQL 函数
PHP Manual

msql_list_tables

(PHP 4, PHP 5, PHP 7)

msql_list_tables — List tables in an mSQL database

说明

resource msql_list_tables ( string $database [, resource $link_identifier ] )

msql_list_tables() lists the tables on the specified database.

参数

database

The name of the database.

link_identifier

mSQL 连接。如果不指定，则使用由 msql_connect() 最近打开的连接。如果没有找到该连接，函数会尝试通过调用 msql_connect() 建立连接并使用它。

返回值

Returns a result set which may be traversed with any function that fetches result sets, such as msql_fetch_array(). On failure, this function will return FALSE.

参见

  • msql_list_fields() - List result fields
  • msql_list_dbs() - List mSQL databases on server

msql_list_fields
msql_num_fields
mSQL 函数


Get number of fields in result

msql_list_tables
msql_num_rows
mSQL 函数
PHP Manual

msql_num_fields

(PHP 4, PHP 5, PHP 7)

msql_num_fields — Get number of fields in result

说明

int msql_num_fields ( resource $result )

msql_num_fields() returns the number of fields in a result set.

参数

result

resource 型的结果集。此结果集来自对 msql_query() 的调用。

返回值

Returns the number of fields in the result set.

参见

  • msql_query() - Send mSQL query
  • msql_fetch_field() - Get field information
  • msql_num_rows() - Get number of rows in result

msql_list_tables
msql_num_rows
mSQL 函数


Get number of rows in result

msql_num_fields
msql_numfields
mSQL 函数
PHP Manual

msql_num_rows

(PHP 4, PHP 5, PHP 7)

msql_num_rows — Get number of rows in result

说明

int msql_num_rows ( resource $query_identifier )

msql_num_rows() returns the number of rows in a result set.

参数

result

resource 型的结果集。此结果集来自对 msql_query() 的调用。

返回值

Returns the number of rows in the result set.

参见

  • msql_num_fields() - Get number of fields in result

msql_num_fields
msql_numfields
mSQL 函数


Alias of msql_num_fields

msql_num_rows
msql_numrows
mSQL 函数
PHP Manual

msql_numfields

(PHP 4, PHP 5, PHP 7)

msql_numfields — Alias of msql_num_fields()

说明

This function is an alias of msql_num_fields().

msql_num_rows
msql_numrows
mSQL 函数


Alias of msql_num_rows

msql_numfields
msql_pconnect
mSQL 函数
PHP Manual

msql_numrows

(PHP 4, PHP 5, PHP 7)

msql_numrows — Alias of msql_num_rows()

说明

This function is an alias of msql_num_rows().

msql_numfields
msql_pconnect
mSQL 函数


Open persistent mSQL connection

msql_numrows
msql_query
mSQL 函数
PHP Manual

msql_pconnect

(PHP 4, PHP 5, PHP 7)

msql_pconnect — Open persistent mSQL connection

说明

resource msql_pconnect ([ string $hostname ] )

msql_pconnect() acts very much like msql_connect() with two major differences.

First, when connecting, the function would first try to find a (persistent) link that's already open with the same host. If one is found, an identifier for it will be returned instead of opening a new connection.

Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (msql_close() will not close links established by this function).

参数

hostname

The hostname can also include a port number. e.g. hostname,port.

If not specified, the connection is established by the means of a Unix domain socket, being more efficient than a localhost TCP socket connection.

Note: While this function will accept a colon (:) as a host/port separator, a comma (,) is the preferred method.

返回值

Returns a positive mSQL link identifier on success, or FALSE on error.

参见

  • msql_connect() - Open mSQL connection
  • msql_close() - Close mSQL connection

msql_numrows
msql_query
mSQL 函数


Send mSQL query

msql_pconnect
msql_regcase
mSQL 函数
PHP Manual

msql_query

(PHP 4, PHP 5, PHP 7)

msql_query — Send mSQL query

说明

resource msql_query ( string $query [, resource $link_identifier ] )

msql_query() sends a query to the currently active database on the server that's associated with the specified link identifier.

参数

query

The SQL query.

link_identifier

mSQL 连接。如果不指定，则使用由 msql_connect() 最近打开的连接。如果没有找到该连接，函数会尝试通过调用 msql_connect() 建立连接并使用它。

返回值

Returns a positive mSQL query identifier on success, or FALSE on error.

范例

Example #1 msql_query() example

<?php
$link = msql_connect("dbserver")
   or die("unable to connect to msql server: " . msql_error());
msql_select_db("db", $link)
   or die("unable to select database 'db': " . msql_error());

$result = msql_query("SELECT * FROM table WHERE id=1", $link);
if (!$result) {
   die("query failed: " . msql_error());
}

while ($row = msql_fetch_array($result)) {
    echo $row["id"];
}
?>

参见

  • msql_db_query() - Send mSQL query
  • msql_select_db() - Select mSQL database
  • msql_connect() - Open mSQL connection

msql_pconnect
msql_regcase
mSQL 函数


Alias of sql_regcase

msql_query
msql_result
mSQL 函数
PHP Manual

msql_regcase

(PHP 4, PHP 5, PHP 7)

msql_regcase — Alias of sql_regcase()

说明

This function is an alias of sql_regcase().

msql_query
msql_result
mSQL 函数


Get result data

msql_regcase
msql_select_db
mSQL 函数
PHP Manual

msql_result

(PHP 4, PHP 5, PHP 7)

msql_result — Get result data

说明

string msql_result ( resource $result , int $row [, mixed $field ] )

msql_result() returns the contents of one cell from a mSQL result set.

When working on large result sets, you should consider using one of the functions that fetch an entire row (specified below). As these functions return the contents of multiple cells in one function call, they are often much quicker than msql_result().

Recommended high-performance alternatives:
msql_fetch_row(),
msql_fetch_array(), and
msql_fetch_object().

参数

result

resource 型的结果集。此结果集来自对 msql_query() 的调用。

row

The row offset.

field

Can be the field's offset, or the field's name, or the field's table dot field's name (tablename.fieldname.). If the column name has been aliased ('select foo as bar from ...'), use the alias instead of the column name.

Note:

Specifying a numeric field offset is much quicker than specifying a fieldname or tablename.fieldname.

返回值

Returns the contents of the cell at the row and offset in the specified mSQL result set.

msql_regcase
msql_select_db
mSQL 函数


Select mSQL database

msql_result
msql_tablename
mSQL 函数
PHP Manual

msql_select_db

(PHP 4, PHP 5, PHP 7)

msql_select_db — Select mSQL database

说明

bool msql_select_db ( string $database_name [, resource $link_identifier ] )

msql_select_db() sets the current active database on the server that's associated with the specified link_identifier.

Subsequent calls to msql_query() will be made on the active database.

参数

database_name

The database name.

link_identifier

mSQL 连接。如果不指定，则使用由 msql_connect() 最近打开的连接。如果没有找到该连接，函数会尝试通过调用 msql_connect() 建立连接并使用它。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • msql_connect() - Open mSQL connection
  • msql_pconnect() - Open persistent mSQL connection
  • msql_query() - Send mSQL query

msql_result
msql_tablename
mSQL 函数


Alias of msql_result

msql_select_db
msql
mSQL 函数
PHP Manual

msql_tablename

(PHP 4, PHP 5, PHP 7)

msql_tablename — Alias of msql_result()

说明

This function is an alias of msql_result().

msql_select_db
msql
mSQL 函数


Alias of msql_db_query

msql_tablename
Mssql
mSQL 函数
PHP Manual

msql

(PHP 4, PHP 5, PHP 7)

msql — Alias of msql_db_query()

说明

This function is an alias of msql_db_query().

msql_tablename
Mssql
mSQL 函数


Microsoft SQL Server

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Mssql 函数
    • mssql_bind — Adds a parameter to a stored procedure or a remote stored procedure
    • mssql_close — 关闭MS SQL Server链接
    • mssql_connect — 打开MS SQL server链接
    • mssql_data_seek — Moves internal row pointer
    • mssql_execute — Executes a stored procedure on a MS SQL server database
    • mssql_fetch_array — Fetch a result row as an associative array, a numeric array, or both
    • mssql_fetch_assoc — Returns an associative array of the current row in the result
    • mssql_fetch_batch — Returns the next batch of records
    • mssql_fetch_field — Get field information
    • mssql_fetch_object — Fetch row as object
    • mssql_fetch_row — Get row as enumerated array
    • mssql_field_length — Get the length of a field
    • mssql_field_name — Get the name of a field
    • mssql_field_seek — Seeks to the specified field offset
    • mssql_field_type — Gets the type of a field
    • mssql_free_result — Free result memory
    • mssql_free_statement — Free statement memory
    • mssql_get_last_message — Returns the last message from the server
    • mssql_guid_string — Converts a 16 byte binary GUID to a string
    • mssql_init — Initializes a stored procedure or a remote stored procedure
    • mssql_min_error_severity — Sets the minimum error severity
    • mssql_min_message_severity — Sets the minimum message severity
    • mssql_next_result — Move the internal result pointer to the next result
    • mssql_num_fields — Gets the number of fields in result
    • mssql_num_rows — Gets the number of rows in result
    • mssql_pconnect — Open persistent MS SQL connection
    • mssql_query — Send MS SQL query
    • mssql_result — Get result data
    • mssql_rows_affected — Returns the number of records affected by the query
    • mssql_select_db — Select MS SQL database
msql
简介
针对各数据库系统对应的扩展


简介

Warning

This feature was REMOVED in PHP 7.0.0.

Alternatives to this feature include:

  • PDO_SQLSRV (Windows only)
  • PDO_ODBC
  • SQLSRV (Windows only)
  • Unified ODBC API

These functions allow you to access MS SQL Server database.

This extension is not available anymore on Windows with PHP 5.3 or later.

SQLSRV, an alternative extension for MS SQL connectivity is available from Microsoft: » http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx.

Mssql
安装／配置
Mssql


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Mssql


需求

Requirements for Win32 platforms.

The extension requires the MS SQL Client Tools to be installed on the system where PHP is installed. The Client Tools can be installed from the MS SQL Server CD or by copying ntwdblib.dll from \winnt\system32 on the server to \winnt\system32 on the PHP box. Copying ntwdblib.dll will only provide access through named pipes. Configuration of the client will require installation of all the tools.

This extension is not available anymore on Windows with PHP 5.3 or later.

SqlSrv, an alternative driver for MS SQL is available from Microsoft: » http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx.

Requirements for Unix/Linux platforms.

To use the MSSQL extension on Unix/Linux, you first need to build and install the FreeTDS library. Source code and installation instructions are available at the FreeTDS home page: » http://www.freetds.org/

Note:

On Windows, the DBLIB from Microsoft is used. Functions that return a column name are based on the dbcolname() function in DBLIB. DBLIB was developed for SQL Server 6.x where the max identifier length is 30. For this reason, the maximum column length is 30 characters. On platforms where FreeTDS is used (Linux), this is not a problem.

Note:

On Windows, if you're using MSSQL 2005 or greater you must copy the ntwdblib.dll into the directory where you have installed php and overwrite the one thats already in there. This is due to the version distributed is old and outdated. Alternatively you can use the » http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx, ODBC, PDO_DBLIB or PDO_ODBC extensions, to talk to MSSQL.

安装／配置
安装
安装／配置


安装

The MSSQL extension is enabled by adding extension=php_mssql.dll to php.ini.

To get these functions to work, you have to compile PHP with --with-mssql[=DIR] , where DIR is the FreeTDS install prefix. And FreeTDS should be compiled using --enable-msdblib .

Warning

MS SQL functions are aliases to Sybase functions if PHP is compiled with Sybase extension and without MS SQL extension.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

MS SQL Server configuration options
名字 | 默认 | 可修改范围 | 更新日志
mssql.allow_persistent | "1" | PHP_INI_SYSTEM |
mssql.max_persistent | "-1" | PHP_INI_SYSTEM |
mssql.max_links | "-1" | PHP_INI_SYSTEM |
mssql.min_error_severity | "10" | PHP_INI_ALL |
mssql.min_message_severity | "10" | PHP_INI_ALL |
mssql.compatability_mode | "0" | PHP_INI_ALL |
mssql.connect_timeout | "5" | PHP_INI_ALL |
mssql.timeout | "60" | PHP_INI_ALL | Available since PHP 4.1.0.
mssql.textsize | "-1" | PHP_INI_ALL |
mssql.textlimit | "-1" | PHP_INI_ALL |
mssql.batchsize | "0" | PHP_INI_ALL | Available since PHP 4.0.4.
mssql.datetimeconvert | "1" | PHP_INI_ALL | Available since PHP 4.2.0.
mssql.secure_connection | "0" | PHP_INI_SYSTEM | Available since PHP 4.3.0.
mssql.max_procs | "-1" | PHP_INI_ALL | Available since PHP 4.3.0.
mssql.charset | "" | PHP_INI_ALL | Available since PHP 5.1.2 when built with FreeTDS 7.0 or greater.
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

安装
资源类型
安装／配置


资源类型

mssql link

A connection link returned by mssql_connect() and mssql_pconnect().

mssql result

A result handle returned by mssql_query() on SELECT queries.

mssql statement

A statement handle returned by mssql_init().

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

MSSQL_ASSOC (integer)
Return an associative array. Used on mssql_fetch_array()'s result_type parameter.
MSSQL_NUM (integer)
Return an array with numeric keys. Used on mssql_fetch_array()'s result_type parameter.
MSSQL_BOTH (integer)
Return an array with both numeric keys and keys with their field name. This is the default value for mssql_fetch_array()'s result_type parameter.
SQLTEXT (integer)
Indicates the 'TEXT' type in MSSQL, used by mssql_bind()'s type parameter.
SQLVARCHAR (integer)
Indicates the 'VARCHAR' type in MSSQL, used by mssql_bind()'s type parameter.
SQLCHAR (integer)
Indicates the 'CHAR' type in MSSQL, used by mssql_bind()'s type parameter.
SQLINT1 (integer)
Represents one byte, with a range of -128 to 127.
SQLINT2 (integer)
Represents two bytes, with a range of -32768 to 32767.
SQLINT4 (integer)
Represents four bytes, with a range of -2147483648 to 2147483647.
SQLBIT (integer)
Indicates the 'BIT' type in MSSQL, used by mssql_bind()'s type parameter.
SQLFLT4 (integer)
Represents an four byte float.
SQLFLT8 (integer)
Represents an eight byte float.
资源类型
Mssql 函数
Mssql


Mssql 函数

Table of Contents

  • mssql_bind — Adds a parameter to a stored procedure or a remote stored procedure
  • mssql_close — 关闭MS SQL Server链接
  • mssql_connect — 打开MS SQL server链接
  • mssql_data_seek — Moves internal row pointer
  • mssql_execute — Executes a stored procedure on a MS SQL server database
  • mssql_fetch_array — Fetch a result row as an associative array, a numeric array, or both
  • mssql_fetch_assoc — Returns an associative array of the current row in the result
  • mssql_fetch_batch — Returns the next batch of records
  • mssql_fetch_field — Get field information
  • mssql_fetch_object — Fetch row as object
  • mssql_fetch_row — Get row as enumerated array
  • mssql_field_length — Get the length of a field
  • mssql_field_name — Get the name of a field
  • mssql_field_seek — Seeks to the specified field offset
  • mssql_field_type — Gets the type of a field
  • mssql_free_result — Free result memory
  • mssql_free_statement — Free statement memory
  • mssql_get_last_message — Returns the last message from the server
  • mssql_guid_string — Converts a 16 byte binary GUID to a string
  • mssql_init — Initializes a stored procedure or a remote stored procedure
  • mssql_min_error_severity — Sets the minimum error severity
  • mssql_min_message_severity — Sets the minimum message severity
  • mssql_next_result — Move the internal result pointer to the next result
  • mssql_num_fields — Gets the number of fields in result
  • mssql_num_rows — Gets the number of rows in result
  • mssql_pconnect — Open persistent MS SQL connection
  • mssql_query — Send MS SQL query
  • mssql_result — Get result data
  • mssql_rows_affected — Returns the number of records affected by the query
  • mssql_select_db — Select MS SQL database
预定义常量
mssql_bind
Mssql


Adds a parameter to a stored procedure or a remote stored procedure

Mssql 函数
mssql_close
Mssql 函数
PHP Manual

mssql_bind

(PHP 4 >= 4.0.7, PHP 5, PECL odbtp >= 1.1.1)

mssql_bind — Adds a parameter to a stored procedure or a remote stored procedure

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • PDOStatement::bindParam()
  • PDOStatement::bindValue()
  • sqlsrv_prepare()
  • odbc_prepare()

说明

bool mssql_bind ( resource $stmt , string $param_name , mixed &$var , int $type [, bool $is_output = false [, bool $is_null = false [, int $maxlen = -1 ]]] )

Binds a parameter to a stored procedure or a remote stored procedure.

参数

stmt

Statement resource, obtained with mssql_init().

param_name

The parameter name, as a string.

Note:

You have to include the @ character, like in the T-SQL syntax. See the explanation included in mssql_execute().

var

The PHP variable you'll bind the MSSQL parameter to. It is passed by reference, to retrieve OUTPUT and RETVAL values after the procedure execution.

type

One of: SQLTEXT, SQLVARCHAR, SQLCHAR, SQLINT1, SQLINT2, SQLINT4, SQLBIT, SQLFLT4, SQLFLT8, SQLFLTN.

is_output

Whether the value is an OUTPUT parameter or not. If it's an OUTPUT parameter and you don't mention it, it will be treated as a normal input parameter and no error will be thrown.

is_null

Whether the parameter is NULL or not. Passing the NULL value as var will not do the job.

maxlen

Used with char/varchar values. You have to indicate the length of the data so if the parameter is a varchar(50), the type must be SQLVARCHAR and this value 50.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 mssql_bind() example

<?php
// Connect to MSSQL and select the database
mssql_connect('KALLESPC\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php');

// Create a new stored prodecure
$stmt = mssql_init('NewUserRecord');

// Bind the field names
mssql_bind($stmt, '@username',  'Kalle',  SQLVARCHAR,  false,  false,  60);
mssql_bind($stmt, '@name',      'Kalle',  SQLVARCHAR,  false,  false,  60);
mssql_bind($stmt, '@age',       19,       SQLINT1,     false,  false,   3);

// Execute
mssql_execute($stmt);

// Free statement
mssql_free_statement($stmt);
?>

参见

  • mssql_execute() - Executes a stored procedure on a MS SQL server database
  • mssql_free_statement() - Free statement memory
  • mssql_init() - Initializes a stored procedure or a remote stored procedure

Mssql 函数
mssql_close
Mssql 函数


关闭MS SQL Server链接

mssql_bind
mssql_connect
Mssql 函数
PHP Manual

mssql_close

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_close — 关闭MS SQL Server链接

说明

bool mssql_close ([ resource $link_identifier ] )

关闭指定的链接标识符相关联的MS SQL Server数据库链接。如果链接不存在，则试图关闭最后产生的链接。

注：这个操作通常不是必要的，在非持久打开的链接在程序执行结束后会自动关闭链接。

参数

link_identifier

一个SQL Server链接, mssql_connect() 的返回值。

这个方法不能关闭由mssql_pconnect() 产生的长链接。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 mssql_close() 例子

<?php
// Connect to MSSQL
$link = mssql_connect('KALLESPC\SQLEXPRESS', 'sa', 'phpfi');

// Do any related operations here

// Close the link to MSSQL
mssql_close($link);
?>

参见

  • mssql_connect() - 打开MS SQL server链接
  • mssql_pconnect() - Open persistent MS SQL connection

mssql_bind
mssql_connect
Mssql 函数


打开MS SQL server链接

mssql_close
mssql_data_seek
Mssql 函数
PHP Manual

mssql_connect

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_connect — 打开MS SQL server链接

说明

resource mssql_connect ([ string $servername [, string $username [, string $password [, bool $new_link = false ]]]] )

mssql_connect() 建立一个MS SQL server链接。

链接会在程序执行结束之后关闭, 除非在之前已经通过调用mssql_close()关闭。

参数

servername

服务器,它可以包含一个端口号 e.g. 主机:端口号(hostname:port) (Linux), 或 主机,端口号(hostname,port) (Windows).

username

用户名。

password

密码。

new_link

如果第二次调用mssql_connect()使用相同的参数， 不会建立新的链接，而是将之前已经打开的链接标识返回。对这个参数的值进行修改，则使得调用 mssql_connect()总是会建立新的链接， 即便调用mssql_connect()使用与之前同样的参数。

返回值

返回一个链接视为成功, 或者 FALSE 和错误信息.

更新日志

版本 | 说明
5.1.0 | new_link参数加入

范例

Example #1 mssql_connect() 例子

<?php
// Server in the this format: <computer>\<instance name> or
// <server>,<port> when using a non default port number
$server = 'KALLESPC\SQLEXPRESS';

// Connect to MSSQL
$link = mssql_connect($server, 'sa', 'phpfi');

if (!$link) {
    die('Something went wrong while connecting to MSSQL');
}
?>

参见

  • mssql_close() - 关闭MS SQL Server链接
  • mssql_pconnect() - Open persistent MS SQL connection

mssql_close
mssql_data_seek
Mssql 函数


Moves internal row pointer

mssql_connect
mssql_execute
Mssql 函数
PHP Manual

mssql_data_seek

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_data_seek — Moves internal row pointer

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • Using an OFFSET clause with a query issued through PDO_SQLSRV, PDO_ODBC, SQLSRV, or the unified ODBC driver.

说明

bool mssql_data_seek ( resource $result_identifier , int $row_number )

mssql_data_seek() moves the internal row pointer of the MS SQL result associated with the specified result identifier to point to the specified row number, first row being number 0. The next call to mssql_fetch_row() would return that row.

参数

result_identifier

The result resource that is being evaluated.

row_number

The desired row number of the new result pointer.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 mssql_data_seek() example

<?php
// Connect to MSSQL and select the database
$link = mssql_connect('MANGO\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php', $link);

// Select all people
$result = mssql_query('SELECT [name], [age] FROM [persons] WHERE [age] >= 13');

if (!$result) {
    die('Query failed.');
}

// Select every 4th student in the results
for ($i = mssql_num_rows($result) - 1; $i % 4; $i++) {
    if (!mssql_data_seek($result, $i)) {
        continue;
    }

    // Fetch the row ...
}

// Free the query result
mssql_free_result($result);
?>

mssql_connect
mssql_execute
Mssql 函数


Executes a stored procedure on a MS SQL server database

mssql_data_seek
mssql_fetch_array
Mssql 函数
PHP Manual

mssql_execute

(PHP 4 >= 4.0.7, PHP 5, PECL odbtp >= 1.1.1)

mssql_execute — Executes a stored procedure on a MS SQL server database

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • Using an EXEC query issued through PDO_SQLSRV, PDO_ODBC, SQLSRV, or the unified ODBC driver.

说明

mixed mssql_execute ( resource $stmt [, bool $skip_results = false ] )

Executes a stored procedure on a MS SQL server database

参数

stmt

Statement handle obtained with mssql_init().

skip_results

Whenever to skip the results or not.

范例

Example #1 mssql_execute() example

<?php
// Create a new statement
$stmt = mssql_init('NewBlogEntry');

// Some data strings
$title = 'Test of blogging system';
$content = 'If you can read this, then the new system is compatible with MSSQL';

// Bind values
mssql_bind($stmt, '@author',    'Felipe Pena',  SQLVARCHAR,     false,  false,   60);
mssql_bind($stmt, '@date',      '08/10/2008',   SQLVARCHAR,     false,  false,   20);
mssql_bind($stmt, '@title',     $title,         SQLVARCHAR,     false,  false,   60);
mssql_bind($stmt, '@content',   $content,       SQLTEXT);

// Execute the statement
mssql_execute($stmt);

// And we can free it like so:
mssql_free_statement($stmt);
?>

注释

Note:

If the stored procedure returns parameters or a return value these will be available after the call to mssql_execute() unless the stored procedure returns more than one result set. In that case use mssql_next_result() to shift through the results. When the last result has been processed the output parameters and return values will be available.

参见

  • mssql_bind() - Adds a parameter to a stored procedure or a remote stored procedure
  • mssql_free_statement() - Free statement memory
  • mssql_init() - Initializes a stored procedure or a remote stored procedure

mssql_data_seek
mssql_fetch_array
Mssql 函数


Fetch a result row as an associative array, a numeric array, or both

mssql_execute
mssql_fetch_assoc
Mssql 函数
PHP Manual

mssql_fetch_array

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_fetch_array — Fetch a result row as an associative array, a numeric array, or both

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • PDOStatement::fetch()
  • sqlsrv_fetch_array()
  • odbc_fetch_array()

说明

array mssql_fetch_array ( resource $result [, int $result_type = MSSQL_BOTH ] )

mssql_fetch_array() is an extended version of mssql_fetch_row(). In addition to storing the data in the numeric indices of the result array, it also stores the data in associative indices, using the field names as keys.

An important thing to note is that using mssql_fetch_array() is NOT significantly slower than using mssql_fetch_row(), while it provides a significant added value.

参数

result

The result resource that is being evaluated. This result comes from a call to mssql_query().

result_type

The type of array that is to be fetched. It's a constant and can take the following values: MSSQL_ASSOC, MSSQL_NUM, and MSSQL_BOTH.

返回值

Returns an array that corresponds to the fetched row, or FALSE if there are no more rows.

范例

Example #1 mssql_fetch_array() example

<?php
// Send a select query to MSSQL
$query = mssql_query('SELECT [username], [name] FROM [php].[dbo].[userlist]');

// Check if there were any records
if (!mssql_num_rows($query)) {
    echo 'No records found';
} else {
    // The following is equal to the code below:
    //
    // while ($row = mssql_fetch_row($query)) {

    while ($row = mssql_fetch_array($query, MSSQL_NUM)) {
        // ...
    }
}

// Free the query result
mssql_free_result($query);
?>

注释

Note: 此函数返回的字段名大小写敏感。

Note: 此函数将 NULL 字段设置为 PHP NULL 值。

参见

  • mssql_fetch_row() - Get row as enumerated array

mssql_execute
mssql_fetch_assoc
Mssql 函数


Returns an associative array of the current row in the result

mssql_fetch_array
mssql_fetch_batch
Mssql 函数
PHP Manual

mssql_fetch_assoc

(PHP 4 >= 4.2.0, PHP 5, PECL odbtp >= 1.1.1)

mssql_fetch_assoc — Returns an associative array of the current row in the result

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • PDOStatement::fetch()
  • sqlsrv_fetch_array()
  • odbc_fetch_array()

说明

array mssql_fetch_assoc ( resource $result_id )

Returns an associative array that corresponds to the fetched row and moves the internal data pointer ahead. mssql_fetch_assoc() is equivalent to calling mssql_fetch_array() with MSSQL_ASSOC for the optional second parameter.

参数

result_id

The result resource that is being evaluated. This result comes from a call to mssql_query().

返回值

Returns an associative array that corresponds to the fetched row, or FALSE if there are no more rows.

范例

Example #1 mssql_fetch_assoc() example

<?php
// Send a select query to MSSQL
$query = mssql_query('SELECT [username], [name] FROM [php].[dbo].[userlist]');

// Check if there were any records
if (!mssql_num_rows($query)) {
    echo 'No records found';
}
else
{
    // Print a nice list of users in the format of:
    // * name (username)

    echo '<ul>';

    while ($row = mssql_fetch_assoc($query)) {
        echo '<li>' . $row['name'] . ' (' . $row['username'] . ')</li>';
    }

    echo '</ul>';
}

// Free the query result
mssql_free_result($query);
?>

mssql_fetch_array
mssql_fetch_batch
Mssql 函数


Returns the next batch of records

mssql_fetch_assoc
mssql_fetch_field
Mssql 函数
PHP Manual

mssql_fetch_batch

(PHP 4 >= 4.0.4, PHP 5, PECL odbtp >= 1.1.1)

mssql_fetch_batch — Returns the next batch of records

Warning

This function was REMOVED in PHP 7.0.0.

说明

int mssql_fetch_batch ( resource $result )

Returns the next batch of records.

参数

result

The result resource that is being evaluated. This result comes from a call to mssql_query().

返回值

Returns the number of rows in the returned batch.

范例

Example #1 mssql_fetch_batch() example

<?php
// Connect to MSSQL and select the database
$link = mssql_connect('MANGO\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php', $link);

// Send a query
$result = mssql_query('SELECT * FROM [php].[dbo].[people]', $link, 100);
$records = 10;

while ($records >= 0) {
    while ($row = mssql_fetch_assoc($result)) {
        // Do stuff ...
    }

    --$records;
}

if ($batchsize = mssql_fetch_batch($result)) {
    // $batchsize is the number of records left
    // in the result, but not shown above
}
?>

mssql_fetch_assoc
mssql_fetch_field
Mssql 函数


Get field information

mssql_fetch_batch
mssql_fetch_object
Mssql 函数
PHP Manual

mssql_fetch_field

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_fetch_field — Get field information

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • PDOStatement::getColumnMeta()
  • sqlsrv_field_metadata()
  • The various odbc_field_* functions in the unified ODBC driver.

说明

object mssql_fetch_field ( resource $result [, int $field_offset = -1 ] )

mssql_fetch_field() can be used in order to obtain information about fields in a certain query result.

参数

result

The result resource that is being evaluated. This result comes from a call to mssql_query().

field_offset

The numerical field offset. If the field offset is not specified, the next field that was not yet retrieved by this function is retrieved. The field_offset starts at 0.

返回值

Returns an object containing field information.

The properties of the object are:

  • name - column name. if the column is a result of a function, this property is set to computed#N, where #N is a serial number.
  • column_source - the table from which the column was taken
  • max_length - maximum length of the column
  • numeric - 1 if the column is numeric
  • type - the column type.

范例

Example #1 mssql_fetch_field() example

<?php
// Connect to MSSQL and select the database
mssql_connect('MANGO\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php');

// Send a select query to MSSQL
$query = mssql_query('SELECT * FROM [php].[dbo].[persons]');

// Construct table
echo '<h3>Table structure for \'persons\'</h3>';
echo '<table border="1">';

// Table header
echo '<thead>';
echo '<tr>';
echo '<td>Field name</td>';
echo '<td>Data type</td>';
echo '<td>Max length</td>';
echo '</tr>';
echo '</thead>';

// Dump all fields
echo '<tbody>';

for ($i = 0; $i < mssql_num_fields($query); ++$i) {
    // Fetch the field information
    $field = mssql_fetch_field($query, $i);

    // Print the row
    echo '<tr>';
    echo '<td>' . $field->name . '</td>';
    echo '<td>' . strtoupper($field->type) . '</td>';
    echo '<td>' . $field->max_length . '</td>';
    echo '</tr>';
}

echo '</tbody>';
echo '</table>';

// Free the query result
mssql_free_result($query);
?>

参见

  • mssql_field_seek() - Seeks to the specified field offset

mssql_fetch_batch
mssql_fetch_object
Mssql 函数


Fetch row as object

mssql_fetch_field
mssql_fetch_row
Mssql 函数
PHP Manual

mssql_fetch_object

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_fetch_object — Fetch row as object

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • PDOStatement::fetchObject()
  • sqlsrv_fetch_object()
  • odbc_fetch_object()

说明

object mssql_fetch_object ( resource $result )

mssql_fetch_object() is similar to mssql_fetch_array(), with one difference - an object is returned, instead of an array. Indirectly, that means that you can only access the data by the field names, and not by their offsets (numbers are illegal property names).

Speed-wise, the function is identical to mssql_fetch_array(), and almost as quick as mssql_fetch_row() (the difference is insignificant).

参数

result

The result resource that is being evaluated. This result comes from a call to mssql_query().

返回值

Returns an object with properties that correspond to the fetched row, or FALSE if there are no more rows.

范例

Example #1 mssql_fetch_object() example

<?php
// Send a select query to MSSQL
$query = mssql_query('SELECT [username], [name] FROM [php].[dbo].[userlist]');

// Check if there were any records
if (!mssql_num_rows($query)) {
    echo 'No records found';
} else {
    // Print a nice list of users in the format of:
    // * name (username)

    echo '<ul>';

    while ($row = mssql_fetch_object($query)) {
        echo '<li>' . $row->name . ' (' . $row->username . ')</li>';
    }

    echo '</ul>';
}

// Free the query result
mssql_free_result($query);
?>

注释

Note: 此函数返回的字段名大小写敏感。

Note: 此函数将 NULL 字段设置为 PHP NULL 值。

参见

  • mssql_fetch_array() - Fetch a result row as an associative array, a numeric array, or both
  • mssql_fetch_row() - Get row as enumerated array

mssql_fetch_field
mssql_fetch_row
Mssql 函数


Get row as enumerated array

mssql_fetch_object
mssql_field_length
Mssql 函数
PHP Manual

mssql_fetch_row

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_fetch_row — Get row as enumerated array

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • PDOStatement::fetch()
  • sqlsrv_fetch_array()
  • odbc_fetch_row()

说明

array mssql_fetch_row ( resource $result )

mssql_fetch_row() fetches one row of data from the result associated with the specified result identifier. The row is returned as an array. Each result column is stored in an array offset, starting at offset 0.

Subsequent call to mssql_fetch_row() would return the next row in the result set, or FALSE if there are no more rows.

参数

result

The result resource that is being evaluated. This result comes from a call to mssql_query().

返回值

Returns an array that corresponds to the fetched row, or FALSE if there are no more rows.

范例

Example #1 mssql_fetch_row() example

<?php
// Connect to MSSQL and select the database
$link = mssql_connect('MANGO\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php', $link);

// Query to execute
$query = mssql_query('SELECT [id], [quote] FROM [quotes] WHERE [id] = \'42\'', $link);

// Did the query fail?
if (!$query) {
    die('MSSQL error: ' . mssql_get_last_message());
}

// Fetch the row
$row = mssql_fetch_row($query);

// Print the 'quote'
echo 'Quote #' . $row[0] . ': "' . $row[1] . '"';
?>

以上例程的输出类似于：

Quote #42: "The answer to everything..."

注释

Note: 此函数将 NULL 字段设置为 PHP NULL 值。

参见

  • mssql_fetch_array() - Fetch a result row as an associative array, a numeric array, or both
  • mssql_fetch_object() - Fetch row as object
  • mssql_data_seek() - Moves internal row pointer
  • mssql_result() - Get result data

mssql_fetch_object
mssql_field_length
Mssql 函数


Get the length of a field

mssql_fetch_row
mssql_field_name
Mssql 函数
PHP Manual

mssql_field_length

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_field_length — Get the length of a field

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • PDOStatement::getColumnMeta()
  • sqlsrv_field_metadata()
  • odbc_field_len()

说明

int mssql_field_length ( resource $result [, int $offset = -1 ] )

Returns the length of field no. offset in result.

参数

result

The result resource that is being evaluated. This result comes from a call to mssql_query().

offset

The field offset, starts at 0. If omitted, the current field is used.

返回值

The length of the specified field index on success 或者在失败时返回 FALSE.

范例

Example #1 mssql_field_length() example

<?php
// Connect to MSSQL and select the database
mssql_connect('MANGO\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php');

// Send a select query to MSSQL
$query = mssql_query('SELECT [name], [age] FROM [php].[dbo].[persons]');

// Print the field length
echo 'The field \'age\' has a data length of ' . mssql_field_length($query, 1);

// Free the query result
mssql_free_result($query);
?>

以上例程的输出类似于：

The field 'age' has a data length of 4

注释

Note: Note to Windows Users

Due to a limitation in the underlying API used by PHP (MS DBLib C API), the length of VARCHAR fields is limited to 255. If you need to store more data, use a TEXT field instead.

参见

  • mssql_field_name() - Get the name of a field
  • mssql_field_type() - Gets the type of a field

mssql_fetch_row
mssql_field_name
Mssql 函数


Get the name of a field

mssql_field_length
mssql_field_seek
Mssql 函数
PHP Manual

mssql_field_name

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_field_name — Get the name of a field

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • PDOStatement::getColumnMeta()
  • sqlsrv_field_metadata()
  • odbc_field_name()

说明

string mssql_field_name ( resource $result [, int $offset = -1 ] )

Returns the name of field no. offset in result.

参数

result

The result resource that is being evaluated. This result comes from a call to mssql_query().

offset

The field offset, starts at 0. If omitted, the current field is used.

返回值

The name of the specified field index on success 或者在失败时返回 FALSE.

范例

Example #1 mssql_field_name() example

<?php
// Send a select query to MSSQL
$query = mssql_query('SELECT [username], [name], [email] FROM [php].[dbo].[userlist]');

echo 'Result set contains the following field(s):', PHP_EOL;

// Dump all field names in result
for ($i = 0; $i < mssql_num_fields($query); ++$i) {
    echo ' - ' . mssql_field_name($query, $i), PHP_EOL;
}

// Free the query result
mssql_free_result($query);
?>

以上例程的输出类似于：

Result set contains the following field(s):
 - username
 - name
 - email

参见

  • mssql_field_length() - Get the length of a field
  • mssql_field_type() - Gets the type of a field

mssql_field_length
mssql_field_seek
Mssql 函数


Seeks to the specified field offset

mssql_field_name
mssql_field_type
Mssql 函数
PHP Manual

mssql_field_seek

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_field_seek — Seeks to the specified field offset

Warning

This function was REMOVED in PHP 7.0.0.

说明

bool mssql_field_seek ( resource $result , int $field_offset )

Seeks to the specified field offset. If the next call to mssql_fetch_field() won't include a field offset, this field would be returned.

参数

result

The result resource that is being evaluated. This result comes from a call to mssql_query().

field_offset

The field offset, starts at 0.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Using mssql_field_seek() on the example for mssql_fetch_field()

<?php
// Connect to MSSQL and select the database
mssql_connect('MANGO\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php');

// Send a select query to MSSQL
$query = mssql_query('SELECT * FROM [php].[dbo].[persons]');

// Construct table
echo '<h3>Table structure for \'persons\'</h3>';
echo '<table border="1">';

// Table header
echo '<thead>';
echo '<tr>';
echo '<td>Field name</td>';
echo '<td>Data type</td>';
echo '<td>Max length</td>';
echo '</tr>';
echo '</thead>';

// Dump all fields
echo '<tbody>';

for ($i = 0; $i < mssql_num_fields($query); ++$i) {
    // Fetch the field information, notice the
    // field_offset parameter is not set. See
    // the mssql_field_seek call below
    $field = mssql_fetch_field($query);

    // Print the row
    echo '<tr>';
    echo '<td>' . $field->name . '</td>';
    echo '<td>' . strtoupper($field->type) . '</td>';
    echo '<td>' . $field->max_length . '</td>';
    echo '</tr>';

    // Move the internal seek pointer to the next
    // row in the result set
    mssql_field_seek($query, $i + 1);
}

echo '</tbody>';
echo '</table>';

// Free the query result
mssql_free_result($query);
?>

参见

  • mssql_fetch_field() - Get field information

mssql_field_name
mssql_field_type
Mssql 函数


Gets the type of a field

mssql_field_seek
mssql_free_result
Mssql 函数
PHP Manual

mssql_field_type

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_field_type — Gets the type of a field

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • PDOStatement::getColumnMeta()
  • sqlsrv_field_metadata()
  • odbc_field_type()

说明

string mssql_field_type ( resource $result [, int $offset = -1 ] )

Returns the type of field no. offset in result.

参数

result

The result resource that is being evaluated. This result comes from a call to mssql_query().

offset

The field offset, starts at 0. If omitted, the current field is used.

返回值

The type of the specified field index on success 或者在失败时返回 FALSE.

范例

Example #1 mssql_field_type() example

<?php
// Connect to MSSQL and select the database
mssql_connect('MANGO\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php');

// Send a select query to MSSQL
$query = mssql_query('SELECT [name] FROM [php].[dbo].[persons]');

// Print the field type and length
echo '\'' . mssql_field_name($query, 0) . '\' is a type of ' .
     strtoupper(mssql_field_type($query, 0)) .
     '(' . mssql_field_length($query, 0) . ')';

// Free the query result
mssql_free_result($query);
?>

以上例程的输出类似于：

'name' is a type of CHAR(50)

参见

  • mssql_field_length() - Get the length of a field
  • mssql_field_name() - Get the name of a field

mssql_field_seek
mssql_free_result
Mssql 函数


Free result memory

mssql_field_type
mssql_free_statement
Mssql 函数
PHP Manual

mssql_free_result

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_free_result — Free result memory

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • odbc_free_result()

说明

bool mssql_free_result ( resource $result )

mssql_free_result() only needs to be called if you are worried about using too much memory while your script is running. All result memory will automatically be freed when the script ends. You may call mssql_free_result() with the result identifier as an argument and the associated result memory will be freed.

参数

result

The result resource that is being freed. This result comes from a call to mssql_query().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 mssql_free_result() example

<?php
// Select some data from a table
$query = mssql_query('SELECT * FROM [php].[dbo].[persons]', $link);

// Handle query result here

// When we're done we free the result by calling
// mssql_free_result like so:
mssql_free_result($query);
?>

参见

  • mssql_free_statement() - Free statement memory

mssql_field_type
mssql_free_statement
Mssql 函数


Free statement memory

mssql_free_result
mssql_get_last_message
Mssql 函数
PHP Manual

mssql_free_statement

(PHP 4 >= 4.3.2, PHP 5, PECL odbtp >= 1.1.1)

mssql_free_statement — Free statement memory

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • sqlsrv_free_stmt()

说明

bool mssql_free_statement ( resource $stmt )

mssql_free_statement() only needs to be called if you are worried about using too much memory while your script is running. All statement memory will automatically be freed when the script ends. You may call mssql_free_statement() with the statement identifier as an argument and the associated statement memory will be freed.

参数

stmt

Statement resource, obtained with mssql_init().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 mssql_free_statement() example

<?php
// Create a new statement
$stmt = mssql_init('test');

// Bind values here and execute the statement

// once we're done, we clear it from the memory
// using mssql_free_statement like so:
mssql_free_statement($stmt);
?>

参见

  • mssql_bind() - Adds a parameter to a stored procedure or a remote stored procedure
  • mssql_execute() - Executes a stored procedure on a MS SQL server database
  • mssql_init() - Initializes a stored procedure or a remote stored procedure
  • mssql_free_result() - Free result memory

mssql_free_result
mssql_get_last_message
Mssql 函数


Returns the last message from the server

mssql_free_statement
mssql_guid_string
Mssql 函数
PHP Manual

mssql_get_last_message

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_get_last_message — Returns the last message from the server

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • PDOStatement::errorInfo()
  • sqlsrv_errors()
  • odbc_errormsg()

说明

string mssql_get_last_message ( void )

Gets the last message from the MS-SQL server

参数

此函数没有参数。

返回值

Returns last error message from server, or an empty string if no error messages are returned from MSSQL.

范例

Example #1 mssql_get_last_message() example

<?php
// Connect to MSSQL and select the database
mssql_connect('KALLESPC\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php');

// Make a query that will fail
$query = @mssql_query('SELECT * FROM [php].[dbo].[not-found]');

if (!$query) {
    // The query has failed, print a nice error message
    // using mssql_get_last_message()
    die('MSSQL error: ' . mssql_get_last_message());
}
?>

以上例程的输出类似于：

MSSQL error: Invalid object name 'php.dbo.not-found'.

参见

  • mssql_min_error_severity() - Sets the minimum error severity
  • mssql_min_message_severity() - Sets the minimum message severity

mssql_free_statement
mssql_guid_string
Mssql 函数


Converts a 16 byte binary GUID to a string

mssql_get_last_message
mssql_init
Mssql 函数
PHP Manual

mssql_guid_string

(PHP 4 >= 4.0.7, PHP 5, PECL odbtp >= 1.1.1)

mssql_guid_string — Converts a 16 byte binary GUID to a string

Warning

This function was REMOVED in PHP 7.0.0.

说明

string mssql_guid_string ( string $binary [, bool $short_format = false ] )

Converts a 16 byte binary GUID to a string.

参数

binary

A 16 byte binary GUID.

short_format

Whenever to use short format.

返回值

Returns the converted string on success.

范例

Example #1 mssql_guid_string() example

<?php
$binary = '19555081977808608437941339997619274330352755554827939936';

var_dump(mssql_guid_string($binary));
var_dump(mssql_guid_string($binary, true));
?>

以上例程会输出：

string(36) "35353931-3035-3138-3937-373830383630"
string(32) "31393535353038313937373830383630"

mssql_get_last_message
mssql_init
Mssql 函数


Initializes a stored procedure or a remote stored procedure

mssql_guid_string
mssql_min_error_severity
Mssql 函数
PHP Manual

mssql_init

(PHP 4 >= 4.0.7, PHP 5, PECL odbtp >= 1.1.1)

mssql_init — Initializes a stored procedure or a remote stored procedure

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • Using an EXEC query issued through PDO_SQLSRV, PDO_ODBC, SQLSRV, or the unified ODBC driver.

说明

resource mssql_init ( string $sp_name [, resource $link_identifier ] )

Initializes a stored procedure or a remote stored procedure.

参数

sp_name

Stored procedure name, like ownew.sp_name or otherdb.owner.sp_name.

link_identifier

A MS SQL link identifier, returned by mssql_connect().

返回值

Returns a resource identifier "statement", used in subsequent calls to mssql_bind() and mssql_execute(), or FALSE on errors.

范例

Example #1 mssql_init() example

<?php
// Connect to MSSQL and select the database
$link = mssql_connect('KALLESPC\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php', $link);

// Create a new statement
$stmt = mssql_init('StatementTest', $link);

// Bind values here

// Once values are binded we execute our statement
// using mssql_execute:
mssql_execute($stmt);

// And we can free it like so:
mssql_free_statement($stmt);
?>

参见

  • mssql_bind() - Adds a parameter to a stored procedure or a remote stored procedure
  • mssql_execute() - Executes a stored procedure on a MS SQL server database
  • mssql_free_statement() - Free statement memory

mssql_guid_string
mssql_min_error_severity
Mssql 函数


Sets the minimum error severity

mssql_init
mssql_min_message_severity
Mssql 函数
PHP Manual

mssql_min_error_severity

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_min_error_severity — Sets the minimum error severity

Warning

This function was REMOVED in PHP 7.0.0.

说明

void mssql_min_error_severity ( int $severity )

Sets the minimum error severity.

参数

severity

The new error severity.

返回值

没有返回值。

范例

Example #1 mssql_min_error_severity() example

<?php
// Connect to MSSQL and select the database
mssql_connect('KALLESPC\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php');

// Set the minimum error severity to not include SQL
// syntax errors by setting it to something greater than
// or equal to 1.
mssql_min_error_severity(1);

// Send a query we know that will cause an syntax error, in
// this case we use the MySQL quote signs instead of wrapping
// square brackets around the field and table names.
$query = mssql_query('SELECT `syntax`, `error` FROM `MSSQL`');

if (!$query) {
    // Custom error handler ...
}
?>

mssql_init
mssql_min_message_severity
Mssql 函数


Sets the minimum message severity

mssql_min_error_severity
mssql_next_result
Mssql 函数
PHP Manual

mssql_min_message_severity

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_min_message_severity — Sets the minimum message severity

Warning

This function was REMOVED in PHP 7.0.0.

说明

void mssql_min_message_severity ( int $severity )

Sets the minimum message severity.

参数

severity

The new message severity.

返回值

没有返回值。

范例

Example #1 mssql_min_message_severity() example

<?php
// Connect to MSSQL
mssql_connect('KALLESPC\SQLEXPRESS', 'sa', 'phpfi');

// Set the minimum message severity to 17, this
// will not show any messages issued by the underlaying
// API when we select a non-existent database below
mssql_min_message_severity(17);

// Select a non-existent database
mssql_select_db('THIS_DATABASE_DOES_NOT_EXISTS');
?>

以上例程会输出：

mssql_select_db(): Unable to select database:  THIS_DATABASE_DOES_NOT_EXISTS

mssql_min_error_severity
mssql_next_result
Mssql 函数


Move the internal result pointer to the next result

mssql_min_message_severity
mssql_num_fields
Mssql 函数
PHP Manual

mssql_next_result

(PHP 4 >= 4.0.5, PHP 5, PECL odbtp >= 1.1.1)

mssql_next_result — Move the internal result pointer to the next result

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • PDOStatement::nextRowset()
  • sqlsrv_next_result()
  • odbc_next_result()

说明

bool mssql_next_result ( resource $result_id )

When sending more than one SQL statement to the server or executing a stored procedure with multiple results, it will cause the server to return multiple result sets. This function will test for additional results available form the server. If an additional result set exists it will free the existing result set and prepare to fetch the rows from the new result set.

参数

result_id

The result resource that is being evaluated. This result comes from a call to mssql_query().

返回值

Returns TRUE if an additional result set was available or FALSE otherwise.

范例

Example #1 mssql_next_result() example

<?php
// Connect to MSSQL and select the database
$link = mssql_connect('MANGO\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php', $link);

// Send a query to MSSQL
$sql = 'SELECT [name], [age] FROM [php].[dbo].[persons]';
$query = mssql_query($sql, $link);

// Iterate through returned records
do {
    while ($row = mssql_fetch_row($query)) {
        // Handle record ...
    }
} while (mssql_next_result($query));

// Clean up
mssql_free_result($query);
mssql_close($link);
?>

mssql_min_message_severity
mssql_num_fields
Mssql 函数


Gets the number of fields in result

mssql_next_result
mssql_num_rows
Mssql 函数
PHP Manual

mssql_num_fields

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_num_fields — Gets the number of fields in result

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • PDOStatement::columnCount()
  • sqlsrv_num_fields()
  • odbc_num_fields()

说明

int mssql_num_fields ( resource $result )

mssql_num_fields() returns the number of fields in a result set.

参数

result

The result resource that is being evaluated. This result comes from a call to mssql_query().

返回值

Returns the number of fields, as an integer.

范例

Example #1 mssql_num_fields() example

<?php
// Connect to MSSQL and select the database
$link = mssql_connect('KALLESPC\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php', $link);

// Select some data from our database
$data = mssql_query('SELECT [name], [age] FROM [php].[dbo].[persons]');

// Construct a table
echo '<table border="1">';

$header = false;

// Iterate through returned results
while ($row = mssql_fetch_array($data)) {
    // Build the table header
    if (!$header) {
        echo '<thead>';
        echo '<tr>';

        for ($i = 1; ($i + 1) <= mssql_num_fields($data); ++$i) {
            echo '<td>' . ucfirst($row[$i]) . '</td>';
        }

        echo '</tr>';
        echo '</thead>';
        echo '<tbody>';

        $header = true;
    }

    // Build the row
    echo '<tr>';

    foreach($row as $value) {
        echo '<td>' . $value . '</td>';
    }

    echo '</tr>';
}

// Close table
echo '</tbody>';
echo '</table>';

// Clean up
mssql_free_result($data);
mssql_close($link);
?>

参见

  • mssql_query() - Send MS SQL query
  • mssql_fetch_field() - Get field information
  • mssql_num_rows() - Gets the number of rows in result

mssql_next_result
mssql_num_rows
Mssql 函数


Gets the number of rows in result

mssql_num_fields
mssql_pconnect
Mssql 函数
PHP Manual

mssql_num_rows

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_num_rows — Gets the number of rows in result

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • PDOStatement::rowCount()
  • sqlsrv_num_rows()
  • odbc_num_rows()

说明

int mssql_num_rows ( resource $result )

mssql_num_rows() returns the number of rows in a result set.

参数

result

The result resource that is being evaluated. This result comes from a call to mssql_query().

返回值

Returns the number of rows, as an integer.

范例

Example #1 mssql_num_rows() example

<?php
// Connect to MSSQL and select the database
$link = mssql_connect('KALLESPC\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php');

// Select all our records from a table
$query = mssql_query('SELECT * FROM [php].[dbo].[persons]');

echo 'Total records in database: ' . mssql_num_rows($query);

// Clean up
mssql_free_result($query);
?>

参见

  • mssql_query() - Send MS SQL query
  • mssql_fetch_row() - Get row as enumerated array

mssql_num_fields
mssql_pconnect
Mssql 函数


Open persistent MS SQL connection

mssql_num_rows
mssql_query
Mssql 函数
PHP Manual

mssql_pconnect

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_pconnect — Open persistent MS SQL connection

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • PDO::__construct()
  • sqlsrv_connect()
  • odbc_pconnect()

说明

resource mssql_pconnect ([ string $servername [, string $username [, string $password [, bool $new_link = false ]]]] )

mssql_pconnect() acts very much like mssql_connect() with two major differences.

First, when connecting, the function would first try to find a (persistent) link that's already open with the same host, username and password. If one is found, an identifier for it will be returned instead of opening a new connection.

Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (mssql_close() will not close links established by mssql_pconnect()).

This type of links is therefore called 'persistent'.

参数

servername

The MS SQL server. It can also include a port number. e.g. hostname:port.

username

The username.

password

The password.

new_link

If a second call is made to mssql_pconnect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned. This parameter modifies this behavior and makes mssql_pconnect() always open a new link, even if mssql_pconnect() was called before with the same parameters.

返回值

Returns a positive MS SQL persistent link identifier on success, or FALSE on error.

范例

Example #1 mssql_pconnect() using the new_link parameter

<?php
// Connect to MSSQL and select the database
$link1 = mssql_pconnect('MANGO\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php', $link1);

// Create a new link
$link2 = mssql_pconnect('MANGO\SQLEXPRESS', 'sa', 'phpfi', true);
mssql_select_db('random', $link2);
?>

mssql_num_rows
mssql_query
Mssql 函数


Send MS SQL query

mssql_pconnect
mssql_result
Mssql 函数
PHP Manual

mssql_query

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_query — Send MS SQL query

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • PDO::query()
  • sqlsrv_query()
  • odbc_exec()

说明

mixed mssql_query ( string $query [, resource $link_identifier [, int $batch_size = 0 ]] )

mssql_query() sends a query to the currently active database on the server that's associated with the specified link identifier.

参数

query

An SQL query.

link_identifier

A MS SQL link identifier, returned by mssql_connect() or mssql_pconnect().

If the link identifier isn't specified, the last opened link is assumed. If no link is open, the function tries to establish a link as if mssql_connect() was called, and use it.

batch_size

The number of records to batch in the buffer.

返回值

Returns a MS SQL result resource on success, TRUE if no rows were returned, or FALSE on error.

范例

Example #1 mssql_query() example

<?php
// Connect to MSSQL
$link = mssql_connect('KALLESPC\SQLEXPRESS', 'sa', 'phpfi');

if (!$link || !mssql_select_db('php', $link)) {
    die('Unable to connect or select database!');
}

// Do a simple query, select the version of
// MSSQL and print it.
$version = mssql_query('SELECT @@VERSION');
$row = mssql_fetch_array($version);

echo $row[0];

// Clean up
mssql_free_result($version);
?>

注释

Note:

If the query returns multiple results then it is necessary to fetch all results by mssql_next_result() or free the results by mssql_free_result() before executing next query.

参见

  • mssql_select_db() - Select MS SQL database
  • mssql_connect() - 打开MS SQL server链接

mssql_pconnect
mssql_result
Mssql 函数


Get result data

mssql_query
mssql_rows_affected
Mssql 函数
PHP Manual

mssql_result

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_result — Get result data

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • odbc_result()

说明

string mssql_result ( resource $result , int $row , mixed $field )

mssql_result() returns the contents of one cell from a MS SQL result set.

参数

result

The result resource that is being evaluated. This result comes from a call to mssql_query().

row

The row number.

field

Can be the field's offset, the field's name or the field's table dot field's name (tablename.fieldname). If the column name has been aliased ('select foo as bar from...'), it uses the alias instead of the column name.

Note:

Specifying a numeric offset for the field argument is much quicker than specifying a fieldname or tablename.fieldname argument.

返回值

Returns the contents of the specified cell.

范例

Example #1 mssql_result() example

<?php
// Send a select query to MSSQL
$query = mssql_query('SELECT [username] FROM [php].[dbo].[userlist]');

// Check if there were any records
if (!mssql_num_rows($query)) {
    echo 'No records found';
} else {
    for ($i = 0; $i < mssql_num_rows($query); ++$i) {
        echo mssql_result($query, $i, 'username'), PHP_EOL;
    }
}

// Free the query result
mssql_free_result($query);
?>

以上例程的输出类似于：

Kalle
Felipe
Emil
Ross

Example #2 Faster alternative to above example

<?php
// Send a select query to MSSQL
$query = mssql_query('SELECT [username] FROM [php].[dbo].[userlist]');

// Check if there were any records
if (!mssql_num_rows($query)) {
    echo 'No records found';
} else {
    while ($row = mssql_fetch_array($query)) {
        echo $row['username'], PHP_EOL;
    }
}

// Free the query result
mssql_free_result($query);
?>

注释

Note:

When working on large result sets, you should consider using one of the functions that fetch an entire row (specified below). As these functions return the contents of multiple cells in one function call, they're MUCH quicker than mssql_result().

参见

Recommended high-performance alternatives:

  • mssql_fetch_row() - Get row as enumerated array
  • mssql_fetch_array() - Fetch a result row as an associative array, a numeric array, or both
  • mssql_fetch_assoc() - Returns an associative array of the current row in the result
  • mssql_fetch_object() - Fetch row as object

mssql_query
mssql_rows_affected
Mssql 函数


Returns the number of records affected by the query

mssql_result
mssql_select_db
Mssql 函数
PHP Manual

mssql_rows_affected

(PHP 4 >= 4.0.4, PHP 5, PECL odbtp >= 1.1.1)

mssql_rows_affected — Returns the number of records affected by the query

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • PDOStatement::rowCount()
  • sqlsrv_rows_affected()

说明

int mssql_rows_affected ( resource $link_identifier )

Returns the number of records affected by the last write query.

参数

link_identifier

A MS SQL link identifier, returned by mssql_connect() or mssql_pconnect().

返回值

Returns the number of records affected by last operation.

范例

Example #1 mssql_rows_affected() example

<?php
// Delete all rows in a table
mssql_query('TRUNCATE TABLE [php].[dbo].[persons]');

echo 'Deleted ' . mssql_rows_affected($link) . ' row(s)';
?>

mssql_result
mssql_select_db
Mssql 函数


Select MS SQL database

mssql_rows_affected
MySQL
Mssql 函数
PHP Manual

mssql_select_db

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_select_db — Select MS SQL database

Warning

This function was REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • PDO_SQLSRV DSN
  • PDO_ODBC DSN
  • sqlsrv_connect()
  • odbc_connect()

说明

bool mssql_select_db ( string $database_name [, resource $link_identifier ] )

mssql_select_db() sets the current active database on the server that's associated with the specified link identifier.

Every subsequent call to mssql_query() will be made on the active database.

参数

database_name

The database name.

To escape the name of a database that contains spaces, hyphens ("-"), or any other exceptional characters, the database name must be enclosed in brackets, as is shown in the example, below. This technique must also be applied when selecting a database name that is also a reserved word (such as primary).

link_identifier

A MS SQL link identifier, returned by mssql_connect() or mssql_pconnect().

If no link identifier is specified, the last opened link is assumed. If no link is open, the function will try to establish a link as if mssql_connect() was called, and use it.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 mssql_select_db() example

<?php
// Create a link to MSSQL
$link = mssql_connect('KALLESPC\SQLEXPRESS', 'sa', 'phpfi');

// Select the database 'php'
mssql_select_db('php', $link);
?>

Example #2 Escaping the database name with square brackets

<?php
// Create a link to MSSQL
$link = mssql_connect('KALLESPC\SQLEXPRESS', 'sa', 'phpfi');

// Select the database 'my.database-name'
mssql_select_db('[my.database-name]', $link);
?>

参见

  • mssql_connect() - 打开MS SQL server链接
  • mssql_pconnect() - Open persistent MS SQL connection
  • mssql_query() - Send MS SQL query

mssql_rows_affected
MySQL
Mssql 函数


MySQL Drivers and Plugins

PHP offers several MySQL drivers and plugins for accessing and handling MySQL.

The differences and functionality of the MySQL extensions are described within the overview of this section.

  • Overview of the MySQL PHP drivers
    • Terminology overview
    • Choosing an API
    • Choosing a library
    • Concepts
  • Mysqli — MySQL增强版扩展
    • 简介
    • Overview
    • Quick start guide
    • 安装／配置
    • mysqli扩展和持久化连接
    • 预定义常量
    • Notes
    • MySQLi扩展功能概述
    • MySQLi — MySQLi类
    • MySQLi_STMT — MySQLi_STMT类
    • mysqli_result — mysqli_result类
    • MySQLi_Driver — MySQLi_Driver类
    • MySQLi_Warning — MySQLi_Warning类
    • mysqli_sql_exception — mysqli异常类
    • 别名和过时的Mysqli 函数
  • Mysql（原始） — 原始的 MySQL API
    • 简介
    • 安装／配置
    • 更新日志
    • 预定义常量
    • 范例
    • MySQL 函数
  • Mysqlnd — MySQL Native Driver
    • 简介
    • Overview
    • Installation
    • 运行时配置
    • Incompatibilities
    • Persistent Connections
    • Statistics
    • Notes
    • Memory management
    • MySQL Native Driver Plugin API
  • mysqlnd_ms — Mysqlnd 主从复制和负载均衡插件
    • 简介
    • 快速入门与例子
    • 概念
    • 安装／配置
    • 预定义常量
    • Mysqlnd_ms 函数
    • Change History
  • mysqlnd_qc — Mysqlnd query result cache plugin
    • 简介
    • Quickstart and Examples
    • 安装／配置
    • 预定义常量
    • mysqlnd_qc 函数
    • Change History
  • mysqlnd_uh — Mysqlnd user handler plugin
    • 简介
    • Quickstart and Examples
    • 安装／配置
    • 预定义常量
    • MysqlndUhConnection — The MysqlndUhConnection class
    • MysqlndUhPreparedStatement — The MysqlndUhPreparedStatement class
    • Mysqlnd_uh 函数
    • Change History
  • mysqlnd_mux — Mysqlnd connection multiplexing plugin
    • 简介
    • Concepts
    • 安装／配置
    • 预定义常量
    • Change History
  • mysqlnd_memcache — Mysqlnd Memcache plugin
    • 简介
    • Quickstart and Examples
    • 安装／配置
    • 预定义常量
    • Mysqlnd_memcache 函数
    • Change History
mssql_select_db
Overview of the MySQL PHP drivers
针对各数据库系统对应的扩展


Overview of the MySQL PHP drivers

Introduction

Depending on the version of PHP, there are either two or three PHP APIs for accessing the MySQL database. PHP 5 users can choose between the deprecated mysql extension, mysqli, or PDO_MySQL. PHP 7 removes the mysql extension, leaving only the latter two options.

This guide explains the terminology used to describe each API, information about choosing which API to use, and also information to help choose which MySQL library to use with the API.

  • Terminology overview
  • Choosing an API
  • Choosing a library
  • Concepts
    • Buffered and Unbuffered queries
    • Character sets
MySQL
Terminology overview
MySQL


Terminology overview

This section provides an introduction to the options available to you when developing a PHP application that needs to interact with a MySQL database.

What is an API?

An Application Programming Interface, or API, defines the classes, methods, functions and variables that your application will need to call in order to carry out its desired task. In the case of PHP applications that need to communicate with databases the necessary APIs are usually exposed via PHP extensions.

APIs can be procedural or object-oriented. With a procedural API you call functions to carry out tasks, with the object-oriented API you instantiate classes and then call methods on the resulting objects. Of the two the latter is usually the preferred interface, as it is more modern and leads to better organized code.

When writing PHP applications that need to connect to the MySQL server there are several API options available. This document discusses what is available and how to select the best solution for your application.

What is a Connector?

In the MySQL documentation, the term connector refers to a piece of software that allows your application to connect to the MySQL database server. MySQL provides connectors for a variety of languages, including PHP.

If your PHP application needs to communicate with a database server you will need to write PHP code to perform such activities as connecting to the database server, querying the database and other database-related functions. Software is required to provide the API that your PHP application will use, and also handle the communication between your application and the database server, possibly using other intermediate libraries where necessary. This software is known generically as a connector, as it allows your application to connect to a database server.

What is a Driver?

A driver is a piece of software designed to communicate with a specific type of database server. The driver may also call a library, such as the MySQL Client Library or the MySQL Native Driver. These libraries implement the low-level protocol used to communicate with the MySQL database server.

By way of an example, the PHP Data Objects (PDO) database abstraction layer may use one of several database-specific drivers. One of the drivers it has available is the PDO MYSQL driver, which allows it to interface with the MySQL server.

Sometimes people use the terms connector and driver interchangeably, this can be confusing. In the MySQL-related documentation the term "driver" is reserved for software that provides the database-specific part of a connector package.

What is an Extension?

In the PHP documentation you will come across another term - extension. The PHP code consists of a core, with optional extensions to the core functionality. PHP's MySQL-related extensions, such as the mysqli extension, and the mysql extension, are implemented using the PHP extension framework.

An extension typically exposes an API to the PHP programmer, to allow its facilities to be used programmatically. However, some extensions which use the PHP extension framework do not expose an API to the PHP programmer.

The PDO MySQL driver extension, for example, does not expose an API to the PHP programmer, but provides an interface to the PDO layer above it.

The terms API and extension should not be taken to mean the same thing, as an extension may not necessarily expose an API to the programmer.

Overview of the MySQL PHP drivers
Choosing an API
Overview of the MySQL PHP drivers


Choosing an API

PHP offers three different APIs to connect to MySQL. Below we show the APIs provided by the mysql, mysqli, and PDO extensions. Each code snippet creates a connection to a MySQL server running on "example.com" using the username "user" and the password "password". And a query is run to greet the user.

Example #1 Comparing the three MySQL APIs

<?php
// mysqli
$mysqli = new mysqli("example.com", "user", "password", "database");
$result = $mysqli->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $result->fetch_assoc();
echo htmlentities($row['_message']);

// PDO
$pdo = new PDO('mysql:host=example.com;dbname=database', 'user', 'password');
$statement = $pdo->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);

// mysql
$c = mysql_connect("example.com", "user", "password");
mysql_select_db("database");
$result = mysql_query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = mysql_fetch_assoc($result);
echo htmlentities($row['_message']);
?>

Recommended API

It is recommended to use either the mysqli or PDO_MySQL extensions. It is not recommended to use the old mysql extension for new development, as it was deprecated in PHP 5.5.0 and was removed in PHP 7. A detailed feature comparison matrix is provided below. The overall performance of all three extensions is considered to be about the same. Although the performance of the extension contributes only a fraction of the total run time of a PHP web request. Often, the impact is as low as 0.1%.

Feature comparison

 | ext/mysqli | PDO_MySQL | ext/mysql
PHP version introduced | 5.0 | 5.1 | 2.0
Included with PHP 5.x | Yes | Yes | Yes
Included with PHP 7.x | Yes | Yes | No
Development status | Active | Active | Maintenance only in 5.x; removed in 7.x
Lifecycle | Active | Active | Deprecated in 5.x; removed in 7.x
Recommended for new projects | Yes | Yes | No
OOP Interface | Yes | Yes | No
Procedural Interface | Yes | No | Yes
API supports non-blocking, asynchronous queries with mysqlnd | Yes | No | No
Persistent Connections | Yes | Yes | Yes
API supports Charsets | Yes | Yes | Yes
API supports server-side Prepared Statements | Yes | Yes | No
API supports client-side Prepared Statements | No | Yes | No
API supports Stored Procedures | Yes | Yes | No
API supports Multiple Statements | Yes | Most | No
API supports Transactions | Yes | Yes | No
Transactions can be controlled with SQL | Yes | Yes | Yes
Supports all MySQL 5.1+ functionality | Yes | Most | No
Terminology overview
Choosing a library
Overview of the MySQL PHP drivers


Choosing a library

The mysqli, PDO_MySQL and mysql PHP extensions are lightweight wrappers on top of a C client library. The extensions can either use the mysqlnd library or the libmysqlclient library. Choosing a library is a compile time decision.

The mysqlnd library is part of the PHP distribution since 5.3.0. It offers features like lazy connections and query caching, features that are not available with libmysqlclient, so using the built-in mysqlnd library is highly recommended. See the mysqlnd documentation for additional details, and a listing of features and functionality that it offers.

Example #1 Configure commands for using mysqlnd or libmysqlclient

// Recommended, compiles with mysqlnd
$ ./configure --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql=mysqlnd

// Alternatively recommended, compiles with mysqlnd as of PHP 5.4
$ ./configure --with-mysqli --with-pdo-mysql --with-mysql

// Not recommended, compiles with libmysqlclient
$ ./configure --with-mysqli=/path/to/mysql_config --with-pdo-mysql=/path/to/mysql_config --with-mysql=/path/to/mysql_config

Library feature comparison

It is recommended to use the mysqlnd library instead of the MySQL Client Server library (libmysqlclient). Both libraries are supported and constantly being improved.

 | MySQL native driver (mysqlnd) | MySQL client server library (libmysqlclient)
Part of the PHP distribution | Yes | No
PHP version introduced | 5.3.0 | N/A
License | PHP License 3.01 | Dual-License
Development status | Active | Active
Lifecycle | No end announced | No end announced
PHP 5.4 and above; compile default (for all MySQL extensions) | Yes | No
PHP 5.3; compile default (for all MySQL extensions) | No | Yes
Compression protocol support | Yes (5.3.1+) | Yes
SSL support | Yes (5.3.3+) | Yes
Named pipe support | Yes (5.3.4+) | Yes
Non-blocking, asynchronous queries | Yes | No
Performance statistics | Yes | No
LOAD LOCAL INFILE respects the open_basedir directive | Yes | No
Uses PHP's native memory management system (e.g., follows PHP memory limits) | Yes | No
Return numeric column as double (COM_QUERY) | Yes | No
Return numeric column as string (COM_QUERY) | Yes | Yes
Plugin API | Yes | Limited
Read/Write splitting for MySQL Replication | Yes, with plugin | No
Load Balancing | Yes, with plugin | No
Fail over | Yes, with plugin | No
Lazy connections | Yes, with plugin | No
Query caching | Yes, with plugin | No
Transparent query manipulations (E.g., auto-EXPLAIN or monitoring) | Yes, with plugin | No
Automatic reconnect | No | Optional
Choosing an API
Concepts
Overview of the MySQL PHP drivers


Concepts

Table of Contents

  • Buffered and Unbuffered queries
  • Character sets

These concepts are specific to the MySQL drivers for PHP.

Choosing a library
Buffered and Unbuffered queries
Overview of the MySQL PHP drivers


Buffered and Unbuffered queries

Queries are using the buffered mode by default. This means that query results are immediately transferred from the MySQL Server to PHP and then are kept in the memory of the PHP process. This allows additional operations like counting the number of rows, and moving (seeking) the current result pointer. It also allows issuing further queries on the same connection while working on the result set. The downside of the buffered mode is that larger result sets might require quite a lot memory. The memory will be kept occupied till all references to the result set are unset or the result set was explicitly freed, which will automatically happen during request end the latest. The terminology "store result" is also used for buffered mode, as the whole result set is stored at once.

Note:

When using libmysqlclient as library PHP's memory limit won't count the memory used for result sets unless the data is fetched into PHP variables. With mysqlnd the memory accounted for will include the full result set.

Unbuffered MySQL queries execute the query and then return a resource while the data is still waiting on the MySQL server for being fetched. This uses less memory on the PHP-side, but can increase the load on the server. Unless the full result set was fetched from the server no further queries can be sent over the same connection. Unbuffered queries can also be referred to as "use result".

Following these characteristics buffered queries should be used in cases where you expect only a limited result set or need to know the amount of returned rows before reading all rows. Unbuffered mode should be used when you expect larger results.

Because buffered queries are the default, the examples below will demonstrate how to execute unbuffered queries with each API.

Example #1 Unbuffered query example: mysqli

<?php
$mysqli  = new mysqli("localhost", "my_user", "my_password", "world");
$uresult = $mysqli->query("SELECT Name FROM City", MYSQLI_USE_RESULT);

if ($uresult) {
   while ($row = $uresult->fetch_assoc()) {
       echo $row['Name'] . PHP_EOL;
   }
}
$uresult->close();
?>

Example #2 Unbuffered query example: pdo_mysql

<?php
$pdo = new PDO("mysql:host=localhost;dbname=world", 'my_user', 'my_pass');
$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);

$uresult = $pdo->query("SELECT Name FROM City");
if ($uresult) {
   while ($row = $uresult->fetch(PDO::FETCH_ASSOC)) {
       echo $row['Name'] . PHP_EOL;
   }
}
?>

Example #3 Unbuffered query example: mysql

<?php
$conn = mysql_connect("localhost", "my_user", "my_pass");
$db   = mysql_select_db("world");

$uresult = mysql_unbuffered_query("SELECT Name FROM City");
if ($uresult) {
   while ($row = mysql_fetch_assoc($uresult)) {
       echo $row['Name'] . PHP_EOL;
   }
}
?>
Concepts
Character sets
Concepts


Character sets

Ideally a proper character set will be set at the server level, and doing this is described within the » Character Set Configuration section of the MySQL Server manual. Alternatively, each MySQL API offers a method to set the character set at runtime.

Caution

The character set and character escaping

The character set should be understood and defined, as it has an affect on every action, and includes security implications. For example, the escaping mechanism (e.g., mysqli_real_escape_string() for mysqli, mysql_real_escape_string() for mysql, and PDO::quote() for PDO_MySQL) will adhere to this setting. It is important to realize that these functions will not use the character set that is defined with a query, so for example the following will not have an effect on them:

Example #1 Problems with setting the character set with SQL

<?php

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

// Will NOT affect $mysqli->real_escape_string();
$mysqli->query("SET NAMES utf8");

// Will NOT affect $mysqli->real_escape_string();
$mysqli->query("SET CHARACTER SET utf8");

// But, this will affect $mysqli->real_escape_string();
$mysqli->set_charset('utf8');

// But, this will NOT affect it (utf-8 vs utf8) -- don't use dashes here
$mysqli->set_charset('utf-8');

?>

Below are examples that demonstrate how to properly alter the character set at runtime using each API.

Note: Possible UTF-8 confusion

Because character set names in MySQL do not contain dashes, the string "utf8" is valid in MySQL to set the character set to UTF-8. The string "utf-8" is not valid, as using "utf-8" will fail to change the character set.

Example #2 Setting the character set example: mysqli

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

printf("Initial character set: %s\n", $mysqli->character_set_name());

if (!$mysqli->set_charset('utf8')) {
    printf("Error loading character set utf8: %s\n", $mysqli->error);
    exit;
}

echo "New character set information:\n";
print_r( $mysqli->get_charset() );

?>

Example #3 Setting the character set example: pdo_mysql

Note: This only works as of PHP 5.3.6.

<?php
$pdo = new PDO("mysql:host=localhost;dbname=world;charset=utf8", 'my_user', 'my_pass');
?>

Example #4 Setting the character set example: mysql

<?php
$conn = mysql_connect("localhost", "my_user", "my_pass");
$db   = mysql_select_db("world");

echo 'Initial character set: ' .  mysql_client_encoding($conn) . "\n";

if (!mysql_set_charset('utf8', $conn)) {
    echo "Error: Unable to set the character set.\n";
    exit;
}

echo 'Your current character set is: ' .  mysql_client_encoding($conn);
?>
Buffered and Unbuffered queries
Mysqli
Concepts


MySQL增强版扩展

  • 简介
  • Overview
  • Quick start guide
    • Dual procedural and object-oriented interface
    • Connections
    • Executing statements
    • Prepared Statements
    • Stored Procedures
    • Multiple Statements
    • API support for transactions
    • Metadata
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • mysqli扩展和持久化连接
  • 预定义常量
  • Notes
  • MySQLi扩展功能概述
  • MySQLi — MySQLi类
    • mysqli::$affected_rows — Gets the number of affected rows in a previous MySQL operation
    • mysqli::autocommit — 打开或关闭本次数据库连接的自动命令提交事务模式
    • mysqli::begin_transaction — Starts a transaction
    • mysqli::change_user — Changes the user of the specified database connection
    • mysqli::character_set_name — 返回当前数据库连接的默认字符编码
    • mysqli::$client_info — Get MySQL client info
    • mysqli::$client_version — Returns the MySQL client version as a string
    • mysqli::close — 关闭先前打开的数据库连接
    • mysqli::commit — 提交一个事务
    • mysqli::$connect_errno — Returns the error code from last connect call
    • mysqli::$connect_error — Returns a string description of the last connect error
    • mysqli::__construct — Open a new connection to the MySQL server
    • mysqli::debug — Performs debugging operations
    • mysqli::dump_debug_info — 将调试信息输出到日志
    • mysqli::errno — 返回最近函数调用的错误代码
    • mysqli::$error_list — Returns a list of errors from the last command executed
    • mysqli::$error — Returns a string description of the last error
    • mysqli::$field_count — Returns the number of columns for the most recent query
    • mysqli::get_charset — Returns a character set object
    • mysqli::get_client_info — Get MySQL client info
    • mysqli_get_client_stats — Returns client per-process statistics
    • mysqli_get_client_version — 作为一个整数返回MySQL客户端的版本
    • mysqli::get_connection_stats — Returns statistics about the client connection
    • mysqli::$host_info — 返回一个表述使用的连接类型的字符串
    • mysqli::$protocol_version — 返回MySQL使用的协议版本号
    • mysqli::$server_info — 返回MySQL服务器的版本号
    • mysqli::$server_version — 作为一个整数返回MySQL服务器的版本
    • mysqli::get_warnings — Get result of SHOW WARNINGS
    • mysqli::$info — Retrieves information about the most recently executed query
    • mysqli::init — Initializes MySQLi and returns a resource for use with mysqli_real_connect()
    • mysqli::$insert_id — Returns the auto generated id used in the latest query
    • mysqli::kill — Asks the server to kill a MySQL thread
    • mysqli::more_results — Check if there are any more query results from a multi query
    • mysqli::multi_query — Performs a query on the database
    • mysqli::next_result — Prepare next result from multi_query
    • mysqli::options — Set options
    • mysqli::ping — Pings a server connection, or tries to reconnect if the connection has gone down
    • mysqli::poll — Poll connections
    • mysqli::prepare — Prepare an SQL statement for execution
    • mysqli::query — 对数据库执行一次查询
    • mysqli::real_connect — 建立一个 MySQL 服务器连接
    • mysqli::real_escape_string — Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection
    • mysqli::real_query — 执行一个mysql查询
    • mysqli::reap_async_query — Get result from async query
    • mysqli::refresh — Refreshes
    • mysqli::release_savepoint — Removes the named savepoint from the set of savepoints of the current transaction
    • mysqli::rollback — 回退当前事务
    • mysqli::rpl_query_type — Returns RPL query type
    • mysqli::savepoint — Set a named transaction savepoint
    • mysqli::select_db — 选择用于数据库查询的默认数据库
    • mysqli::send_query — 发送请求并返回结果
    • mysqli::set_charset — 设置默认字符编码
    • mysqli::set_local_infile_default — Unsets user defined handler for load local infile command
    • mysqli::set_local_infile_handler — Set callback function for LOAD DATA LOCAL INFILE command
    • mysqli::$sqlstate — Returns the SQLSTATE error from previous MySQL operation
    • mysqli::ssl_set — Used for establishing secure connections using SSL
    • mysqli::stat — Gets the current system status
    • mysqli::stmt_init — 初始化一条语句并返回一个用于mysqli_stmt_prepare(调用)的对象
    • mysqli::store_result — Transfers a result set from the last query
    • mysqli::$thread_id — Returns the thread ID for the current connection
    • mysqli::thread_safe — 返回是否是线程安全的
    • mysqli::use_result — Initiate a result set retrieval
    • mysqli::$warning_count — Returns the number of warnings from the last query for the given link
  • MySQLi_STMT — MySQLi_STMT类
    • mysqli_stmt::$affected_rows — Returns the total number of rows changed, deleted, or inserted by the last executed statement
    • mysqli_stmt::attr_get — Used to get the current value of a statement attribute
    • mysqli_stmt::attr_set — Used to modify the behavior of a prepared statement
    • mysqli_stmt::bind_param — Binds variables to a prepared statement as parameters
    • mysqli_stmt::bind_result — Binds variables to a prepared statement for result storage
    • mysqli_stmt::close — Closes a prepared statement
    • mysqli_stmt::__construct — Constructs a new mysqli_stmt object
    • mysqli_stmt::data_seek — Seeks to an arbitrary row in statement result set
    • mysqli_stmt::$errno — Returns the error code for the most recent statement call
    • mysqli_stmt::$error_list — Returns a list of errors from the last statement executed
    • mysqli_stmt::$error — Returns a string description for last statement error
    • mysqli_stmt::execute — Executes a prepared Query
    • mysqli_stmt::fetch — Fetch results from a prepared statement into the bound variables
    • mysqli_stmt::$field_count — Returns the number of field in the given statement
    • mysqli_stmt::free_result — Frees stored result memory for the given statement handle
    • mysqli_stmt::get_result — Gets a result set from a prepared statement
    • mysqli_stmt::get_warnings — Get result of SHOW WARNINGS
    • mysqli_stmt::$insert_id — Get the ID generated from the previous INSERT operation
    • mysqli_stmt::more_results — Check if there are more query results from a multiple query
    • mysqli_stmt::next_result — Reads the next result from a multiple query
    • mysqli_stmt::$num_rows — Return the number of rows in statements result set
    • mysqli_stmt::$param_count — Returns the number of parameter for the given statement
    • mysqli_stmt::prepare — Prepare an SQL statement for execution
    • mysqli_stmt::reset — Resets a prepared statement
    • mysqli_stmt::result_metadata — Returns result set metadata from a prepared statement
    • mysqli_stmt::send_long_data — Send data in blocks
    • mysqli_stmt::$sqlstate — Returns SQLSTATE error from previous statement operation
    • mysqli_stmt::store_result — Transfers a result set from a prepared statement
  • mysqli_result — mysqli_result类
    • mysqli_result::$current_field — Get current field offset of a result pointer
    • mysqli_result::data_seek — Adjusts the result pointer to an arbitrary row in the result
    • mysqli_result::fetch_all — Fetches all result rows as an associative array, a numeric array, or both
    • mysqli_result::fetch_array — Fetch a result row as an associative, a numeric array, or both
    • mysqli_result::fetch_assoc — Fetch a result row as an associative array
    • mysqli_result::fetch_field_direct — Fetch meta-data for a single field
    • mysqli_result::fetch_field — Returns the next field in the result set
    • mysqli_result::fetch_fields — Returns an array of objects representing the fields in a result set
    • mysqli_result::fetch_object — Returns the current row of a result set as an object
    • mysqli_result::fetch_row — Get a result row as an enumerated array
    • mysqli_result::$field_count — Get the number of fields in a result
    • mysqli_result::field_seek — Set result pointer to a specified field offset
    • mysqli_result::free — Frees the memory associated with a result
    • mysqli_result::$lengths — Returns the lengths of the columns of the current row in the result set
    • mysqli_result::$num_rows — Gets the number of rows in a result
  • MySQLi_Driver — MySQLi_Driver类
    • mysqli_driver::embedded_server_end — Stop embedded server
    • mysqli_driver::embedded_server_start — Initialize and start embedded server
    • mysqli_driver::$report_mode — Enables or disables internal report functions
  • MySQLi_Warning — MySQLi_Warning类
    • mysqli_warning::__construct — The __construct purpose
    • mysqli_warning::next — The next purpose
  • mysqli_sql_exception — mysqli异常类
  • 别名和过时的Mysqli 函数
    • mysqli_bind_param — mysqli_stmt_bind_param的别名
    • mysqli_bind_result — mysqli_stmt_bind_result的别名
    • mysqli_client_encoding — mysqli_character_set_name的别名
    • mysqli_connect — 别名 mysqli::__construct
    • mysqli::disable_reads_from_master — Disable reads from master
    • mysqli_disable_rpl_parse — 禁用RPL解析
    • mysqli_enable_reads_from_master — 开启从主机读取
    • mysqli_enable_rpl_parse — 开启RPL解析
    • mysqli_escape_string — 别名 mysqli_real_escape_string
    • mysqli_execute — mysqli_stmt_execute的别名
    • mysqli_fetch — mysqli_stmt_fetch的别名。
    • mysqli_get_cache_stats — 返回客户端Zval缓存统计信息
    • mysqli_get_links_stats — 返回打开和缓存的链接相关信息
    • mysqli_get_metadata — mysqli_stmt_result_metadata的别名
    • mysqli_master_query — 在主/从机制中强制在主机中执行一个查询
    • mysqli_param_count — mysqli_stmt_param_count的别名
    • mysqli_report — 开启或禁用（Mysql）内部（错误）报告函数
    • mysqli_rpl_parse_enabled — 检查是否开启了RPL解析
    • mysqli_rpl_probe — RPL探测
    • mysqli_send_long_data — mysqli_stmt_send_long_data的别名
    • mysqli_set_opt — mysqli_options的别名
    • mysqli_slave_query — 在主/从机制中强制在从机上执行一个查询
Character sets
简介
MySQL


简介

mysqli扩展允许我们访问MySQL 4.1及以上版本提供的功能。关于MySQL数据库 服务端的信息请参阅» http://www.mysql.com/。

Overview是在PHP中可以用于MySQL访问的软件的一个概览。

Mysql的文档请查看» http://dev.mysql.com/doc/。

本文档中部分内容经过Oracle公司授权引自MySQL手册。 Parts of this documentation included from MySQL manual with permissions of Oracle Corporation.

示例

所有mysqli文档示例使用的都是world数据库，该数据库可以从» http://dev.mysql.com/doc/world-setup/en/index.html下载。

Mysqli
Overview
Mysqli


Overview

这一部分对在PHP应用开发过程中需要和Mysql数据库交互时可用的选择进行一个简单介绍。

什么是API?

一个应用程序接口（Application Programming Interface的缩写），定义了类，方法，函数，变量等等一切 你的应用程序中为了完成特定任务而需要调用的内容。在PHP应用程序需要和数据库进行交互的时候所需要的API 通常是通过PHP扩展暴露出来（给终端PHP程序员调用）。

API可以是面向过程的，也可以是面向对象的。对于面向过程的API，我们通过调用函数来完成任务，而对于面向对象的API， 我们实例化类，并在实例化后得到的对象上调用方法。对于这两种接口而言，后者通常是首选的，因为它更加现代化，并且 给我们带来了良好的代码结构。

当构建一个需要连接到MySQL服务端的PHP应用的时候，有好几种API可供选择。此文档就是讨论这些可用的API并讨论如何为 你的应用选择一个最佳的解决方案。

什么是连接器?

在MySQL文档中，术语connector解释为"一段允许你的应用连接到MySQL数据库服务器的软件代码"。 MySQL提供了很多语言的连接器，其中包括PHP的。

在你的PHP应用需要和一个数据库服务器交互的时候，你需要书写PHP代码去完成"连接数据库服务器"，"查询数据库"以及其他数据库相关功能 等一系列活动。你的PHP应用将会使用提供这些API的软件，或者在需要的时候使用一些中间库，来处理你的应用和数据库服务器之间的交互。 这种软件通常被认为是连接器，它允许你的引用连接到数据库服务器。

什么是驱动?

驱动是一段设计用来于一种特定类型的数据库服务器进行交互的软件代码。驱动可能会调用一些库，比如MySQL客户端库或者MySQL Native驱动库。 这些库实现了用于和MySQL数据库服务器进行交互的底层协议。

通过一个例子PDO(PHP Database Object的缩写)数据库抽象层可以 使用多种特定数据库的驱动。其中一种驱动就是PDO MYSQL驱动，它就是与MySQL服务器之间的接口。

有时大家会不加区分的使用连接器和驱动这两个术语。在MySQL相关文档中"driver"术语被作为一个连接器包 中提供特定数据库部分的软件代码。

什么是扩展?

在PHP文档中你还会发现很多其他的扩展。PHP代码是由一个核心，一些可选扩展组成了核心功能。PHP 的MySQL相关扩展，比如mysqli，mysql都是基于PHP扩展框架实现的。

扩展一个典型的作用就是暴露一个API给PHP程序员，允许扩展自己的功能可以被程序员使用。当然，也有一部分基于PHP扩展框架 开发的扩展不会给PHP程序员暴露API接口。

比如说PDO MySQL驱动扩展，就没有向PHP程序员暴露API接口，但是向它上层的PDO层提供了一个接口。

术语API和扩展描述的不是同一类事物，因为扩展可能并不需要暴露一个API接口给程序员。

PHP中提供的用于MySQL的主要API是什么？

当考虑连接到MySQL数据库服务器的时候，有三种主要的API可供选择：

  • PHP的MySQL扩展

  • PHP的mysqli扩展

  • PHP数据对象(PDO)

三者都有各自的优缺点。下面的讨论就是为了对每种API的关键方面给出一个简短的介绍。

什么是PHP的MySQL扩展?

这是设计开发允许PHP应用与MySQL数据库交互的早期扩展。mysql扩展提供了一个面向过程 的接口，并且是针对MySQL4.1.3或更早版本设计的。因此，这个扩展虽然可以与MySQL4.1.3或更新的数据库服务端 进行交互，但并不支持后期MySQL服务端提供的一些特性。

Note:

如果你是使用MySQL4.1.3或更新的服务端版本，强烈建议你使用mysqli 扩展替代它。

mysql扩展的源代码在PHP扩展目录ext/mysql下。

对于mysql扩展的更多信息，请参阅Mysql（原始）。

什么是PHP的mysqli扩展?

mysqli扩展，我们有时称之为MySQL增强扩展，可以用于使用 MySQL4.1.3或更新版本中新的高级特性。mysqli扩展在PHP 5及以后版本中包含。

mysqli扩展有一系列的优势，相对于mysql扩展的提升主要有：

  • 面向对象接口

  • prepared语句支持（译注：关于prepare请参阅mysql相关文档）

  • 多语句执行支持

  • 事务支持

  • 增强的调试能力

  • 嵌入式服务支持

Note:

如果你使用MySQL4.1.3或更新版本，强烈建议你使用这个扩展。

在提供了面向对象接口的同时也提供了一个面向过程的接口。

mysqli扩展是使用PHP扩展框架构建的，它的源代码在PHP源码目录下的ext/mysqli中。

对于mysqli扩展的更多信息，请参阅Mysqli。

什么是PDO?

PHP数据对象，是PHP应用中的一个数据库抽象层规范。PDO提供了一个统一的API接口可以使得你的PHP应用不去关心具体要 连接的数据库服务器系统类型。也就是说，如果你使用PDO的API，可以在任何需要的时候无缝切换数据库服务器，比如从Firebird 到MySQL，仅仅需要修改很少的PHP代码。

其他数据库抽象层的例子包括Java应用中的JDBC以及Perl中的DBI。

当然，PDO也有它自己的先进性，比如一个干净的，简单的，可移植的API，它最主要的缺点是会限制让你不能使用 后期MySQL服务端提供所有的数据库高级特性。比如，PDO不允许使用MySQL支持的多语句执行。

PDO是基于PHP扩展框架实现的，它的源码在PHP源码目录的ext/pdo下。

PDO的更多信息，请参阅PDO。

什么是PDO的MySQL驱动器?

PDO的MySQL驱动并不是一套API，至少从PHP程序员的角度来看是这样的。实际上，PDO的MySQL驱动处于PDO自己的下层， 提供了特定的Mysql功能。程序员直接调用PDO的API，而PDO使用了PDO的MySQL驱动完成与MySQL服务器端的交互。

PDO的MySQL驱动是众多PDO驱动中的一个。其他可用的PDO驱动包括Firebird，PostgreSQL等等。

PDO的MySQL驱动是基于PHP扩展框架实现的。它的源码在PHP源码目录下的ext/pdo_mysql。 它没有向PHP程序员暴露API。

PDO的MySQL扩展的更多信息请参阅MySQL (PDO)。

什么是PHP的MySQL Native 驱动?

为了与MySQL数据库服务端进行交互，mysql扩展，mysqli扩展， PDO MySQL驱动都使用了实现了必要的协议的底层库。以前，可用的库只有MySQL客户端库和libmysql。

然而，libmysql包含的接口没有针对与PHP的应用交互进行优化，libmysql 是早期为C应用程序设计的。基于这个原因，MySQL Native驱动mysqlnd，作为libmysql的一个 针对PHP应用的修改版本被开发。

mysql，mysqli以及PDO Mysql驱动都可以各自配置使用 libmysql或者mysqlnd。mysqlnd作为一个专门设计 用于PHP系统的库，它在内存和速度上都比libmysql有很大提升。非常希望你去尝试这些提升。

Note:

MySQL Native驱动仅仅可以在MySQL服务端版本为4.1.3及以后版本才可以使用。

MySQL Native驱动是基于PHP扩展框架实现的。源代码位于PHP源码目录的ext/mysqlnd下。 它没有向PHP程序员暴露接口。

特性比较

下表比较了PHP中三种主要的MySQL连接方式的功能：

 | PHP的mysqli扩展 | PDO (使用PDO MySQL驱动和MySQL Native驱动) | PHP的mysql扩展
引入的PHP版本 | 5.0 | 5.0 | 3.0之前
PHP5.x是否包含 | 是 | 是 | 是
MySQL开发状态 | 活跃 | 在PHP5.3中活跃 | 仅维护
在MySQL新项目中的建议使用程度 | 建议 - 首选 | 建议 | 不建议
API的字符集支持 | 是 | 是 | 否
服务端prepare语句的支持情况 | 是 | 是 | 否
客户端prepare语句的支持情况 | 否 | 是 | 否
存储过程支持情况 | 是 | 是 | 否
多语句执行支持情况 | 是 | 大多数 | 否
是否支持所有MySQL4.1以上功能 | 是 | 大多数 | 否
简介
Quick start guide
Mysqli


Quick start guide

Table of Contents

  • Dual procedural and object-oriented interface
  • Connections
  • Executing statements
  • Prepared Statements
  • Stored Procedures
  • Multiple Statements
  • API support for transactions
  • Metadata

This quick start guide will help with choosing and gaining familiarity with the PHP MySQL API.

This quick start gives an overview on the mysqli extension. Code examples are provided for all major aspects of the API. Database concepts are explained to the degree needed for presenting concepts specific to MySQL.

Required: A familiarity with the PHP programming language, the SQL language, and basic knowledge of the MySQL server.

Overview
Dual procedural and object-oriented interface
Mysqli


Dual procedural and object-oriented interface

The mysqli extension features a dual interface. It supports the procedural and object-oriented programming paradigm.

Users migrating from the old mysql extension may prefer the procedural interface. The procedural interface is similar to that of the old mysql extension. In many cases, the function names differ only by prefix. Some mysqli functions take a connection handle as their first argument, whereas matching functions in the old mysql interface take it as an optional last argument.

Example #1 Easy migration from the old mysql extension

<?php
$mysqli = mysqli_connect("example.com", "user", "password", "database");
$res = mysqli_query($mysqli, "SELECT 'Please, do not use ' AS _msg FROM DUAL");
$row = mysqli_fetch_assoc($res);
echo $row['_msg'];

$mysql = mysql_connect("example.com", "user", "password");
mysql_select_db("test");
$res = mysql_query("SELECT 'the mysql extension for new developments.' AS _msg FROM DUAL", $mysql);
$row = mysql_fetch_assoc($res);
echo $row['_msg'];
?>

以上例程会输出：

Please, do not use the mysql extension for new developments.

The object-oriented interface

In addition to the classical procedural interface, users can choose to use the object-oriented interface. The documentation is organized using the object-oriented interface. The object-oriented interface shows functions grouped by their purpose, making it easier to get started. The reference section gives examples for both syntax variants.

There are no significant performance differences between the two interfaces. Users can base their choice on personal preference.

Example #2 Object-oriented and procedural interface

<?php
$mysqli = mysqli_connect("example.com", "user", "password", "database");
if (mysqli_connect_errno($mysqli)) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$res = mysqli_query($mysqli, "SELECT 'A world full of ' AS _msg FROM DUAL");
$row = mysqli_fetch_assoc($res);
echo $row['_msg'];

$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: " . $mysqli->connect_error;
}

$res = $mysqli->query("SELECT 'choices to please everybody.' AS _msg FROM DUAL");
$row = $res->fetch_assoc();
echo $row['_msg'];
?>

以上例程会输出：

A world full of choices to please everybody.

The object oriented interface is used for the quickstart because the reference section is organized that way.

Mixing styles

It is possible to switch between styles at any time. Mixing both styles is not recommended for code clarity and coding style reasons.

Example #3 Bad coding style

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: " . $mysqli->connect_error;
}

$res = mysqli_query($mysqli, "SELECT 'Possible but bad style.' AS _msg FROM DUAL");
if (!$res) {
    echo "Failed to run query: (" . $mysqli->errno . ") " . $mysqli->error;
}

if ($row = $res->fetch_assoc()) {
    echo $row['_msg'];
}
?>

以上例程会输出：

Possible but bad style.

See also

  • mysqli::__construct()
  • mysqli::query()
  • mysqli_result::fetch_assoc()
  • $mysqli::connect_errno
  • $mysqli::connect_error
  • $mysqli::errno
  • $mysqli::error
  • The MySQLi Extension Function Summary

Quick start guide
Connections
Quick start guide


Connections

The MySQL server supports the use of different transport layers for connections. Connections use TCP/IP, Unix domain sockets or Windows named pipes.

The hostname localhost has a special meaning. It is bound to the use of Unix domain sockets. It is not possible to open a TCP/IP connection using the hostname localhost you must use 127.0.0.1 instead.

Example #1 Special meaning of localhost

<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
echo $mysqli->host_info . "\n";

$mysqli = new mysqli("127.0.0.1", "user", "password", "database", 3306);
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

echo $mysqli->host_info . "\n";
?>

以上例程会输出：

Localhost via UNIX socket
127.0.0.1 via TCP/IP

Connection parameter defaults

Depending on the connection function used, assorted parameters can be omitted. If a parameter is not provided, then the extension attempts to use the default values that are set in the PHP configuration file.

Example #2 Setting defaults

mysqli.default_host=192.168.2.27
mysqli.default_user=root
mysqli.default_pw=""
mysqli.default_port=3306
mysqli.default_socket=/tmp/mysql.sock

The resulting parameter values are then passed to the client library that is used by the extension. If the client library detects empty or unset parameters, then it may default to the library built-in values.

Built-in connection library defaults

If the host value is unset or empty, then the client library will default to a Unix socket connection on localhost. If socket is unset or empty, and a Unix socket connection is requested, then a connection to the default socket on /tmp/mysql.sock is attempted.

On Windows systems, the host name . is interpreted by the client library as an attempt to open a Windows named pipe based connection. In this case the socket parameter is interpreted as the pipe name. If not given or empty, then the socket (pipe name) defaults to \\.\pipe\MySQL.

If neither a Unix domain socket based not a Windows named pipe based connection is to be established and the port parameter value is unset, the library will default to port 3306.

The mysqlnd library and the MySQL Client Library (libmysqlclient) implement the same logic for determining defaults.

Connection options

Connection options are available to, for example, set init commands which are executed upon connect, or for requesting use of a certain charset. Connection options must be set before a network connection is established.

For setting a connection option, the connect operation has to be
performed in three steps: creating a connection handle with
mysqli_init(), setting the requested options using
mysqli_options(), and establishing the network
connection with mysqli_real_connect().

Connection pooling

The mysqli extension supports persistent database connections, which are a special kind of pooled connections. By default, every database connection opened by a script is either explicitly closed by the user during runtime or released automatically at the end of the script. A persistent connection is not. Instead it is put into a pool for later reuse, if a connection to the same server using the same username, password, socket, port and default database is opened. Reuse saves connection overhead.

Every PHP process is using its own mysqli connection pool. Depending on the web server deployment model, a PHP process may serve one or multiple requests. Therefore, a pooled connection may be used by one or more scripts subsequently.

Persistent connection

If a unused persistent connection for a given combination of host, username, password, socket, port and default database can not be found in the connection pool, then mysqli opens a new connection. The use of persistent connections can be enabled and disabled using the PHP directive mysqli.allow_persistent. The total number of connections opened by a script can be limited with mysqli.max_links. The maximum number of persistent connections per PHP process can be restricted with mysqli.max_persistent. Please note, that the web server may spawn many PHP processes.

A common complain about persistent connections is that their state is not reset before reuse. For example, open and unfinished transactions are not automatically rolled back. But also, authorization changes which happened in the time between putting the connection into the pool and reusing it are not reflected. This may be seen as an unwanted side-effect. On the contrary, the name persistent may be understood as a promise that the state is persisted.

The mysqli extension supports both interpretations of a persistent connection: state persisted, and state reset before reuse. The default is reset. Before a persistent connection is reused, the mysqli extension implicitly calls mysqli_change_user() to reset the state. The persistent connection appears to the user as if it was just opened. No artifacts from previous usages are visible.

The mysqli_change_user() function is an expensive operation. For best performance, users may want to recompile the extension with the compile flag MYSQLI_NO_CHANGE_USER_ON_PCONNECT being set.

It is left to the user to choose between safe behavior and best performance. Both are valid optimization goals. For ease of use, the safe behavior has been made the default at the expense of maximum performance.

See also

  • mysqli::__construct()
  • mysqli::init()
  • mysqli::options()
  • mysqli::real_connect()
  • mysqli::change_user()
  • $mysqli::host_info
  • MySQLi Configuration Options
  • Persistent Database Connections

Dual procedural and object-oriented interface
Executing statements
Quick start guide


Executing statements

Statements can be executed with the
mysqli_query(), mysqli_real_query()
and mysqli_multi_query() functions.
The mysqli_query() function is the most
common, and combines the executing statement with a
buffered fetch of its result set, if any, in one call.
Calling mysqli_query() is identical to
calling mysqli_real_query()
followed by mysqli_store_result().

Example #1 Connecting to MySQL

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$mysqli->query("DROP TABLE IF EXISTS test") ||
    !$mysqli->query("CREATE TABLE test(id INT)") ||
    !$mysqli->query("INSERT INTO test(id) VALUES (1)")) {
    echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
?>

Buffered result sets

After statement execution results can be retrieved at once to be buffered by the client or by read row by row. Client-side result set buffering allows the server to free resources associated with the statement results as early as possible. Generally speaking, clients are slow consuming result sets. Therefore, it is recommended to use buffered result sets. mysqli_query() combines statement execution and result set buffering.

PHP applications can navigate freely through buffered results. Navigation is fast because the result sets are held in client memory. Please, keep in mind that it is often easier to scale by client than it is to scale the server.

Example #2 Navigation through buffered results

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$mysqli->query("DROP TABLE IF EXISTS test") ||
    !$mysqli->query("CREATE TABLE test(id INT)") ||
    !$mysqli->query("INSERT INTO test(id) VALUES (1), (2), (3)")) {
    echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

$res = $mysqli->query("SELECT id FROM test ORDER BY id ASC");

echo "Reverse order...\n";
for ($row_no = $res->num_rows - 1; $row_no >= 0; $row_no--) {
    $res->data_seek($row_no);
    $row = $res->fetch_assoc();
    echo " id = " . $row['id'] . "\n";
}

echo "Result set order...\n";
$res->data_seek(0);
while ($row = $res->fetch_assoc()) {
    echo " id = " . $row['id'] . "\n";
}
?>

以上例程会输出：

Reverse order...
 id = 3
 id = 2
 id = 1
Result set order...
 id = 1
 id = 2
 id = 3

Unbuffered result sets

If client memory is a short resource and freeing server resources as early as possible to keep server load low is not needed, unbuffered results can be used. Scrolling through unbuffered results is not possible before all rows have been read.

Example #3 Navigation through unbuffered results

<?php
$mysqli->real_query("SELECT id FROM test ORDER BY id ASC");
$res = $mysqli->use_result();

echo "Result set order...\n";
while ($row = $res->fetch_assoc()) {
    echo " id = " . $row['id'] . "\n";
}
?>

Result set values data types

The mysqli_query(), mysqli_real_query() and mysqli_multi_query() functions are used to execute non-prepared statements. At the level of the MySQL Client Server Protocol, the command COM_QUERY and the text protocol are used for statement execution. With the text protocol, the MySQL server converts all data of a result sets into strings before sending. This conversion is done regardless of the SQL result set column data type. The mysql client libraries receive all column values as strings. No further client-side casting is done to convert columns back to their native types. Instead, all values are provided as PHP strings.

Example #4 Text protocol returns strings by default

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$mysqli->query("DROP TABLE IF EXISTS test") ||
    !$mysqli->query("CREATE TABLE test(id INT, label CHAR(1))") ||
    !$mysqli->query("INSERT INTO test(id, label) VALUES (1, 'a')")) {
    echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

$res = $mysqli->query("SELECT id, label FROM test WHERE id = 1");
$row = $res->fetch_assoc();

printf("id = %s (%s)\n", $row['id'], gettype($row['id']));
printf("label = %s (%s)\n", $row['label'], gettype($row['label']));
?>

以上例程会输出：

id = 1 (string)
label = a (string)

It is possible to convert integer and float columns back to PHP numbers by setting the MYSQLI_OPT_INT_AND_FLOAT_NATIVE connection option, if using the mysqlnd library. If set, the mysqlnd library will check the result set meta data column types and convert numeric SQL columns to PHP numbers, if the PHP data type value range allows for it. This way, for example, SQL INT columns are returned as integers.

Example #5 Native data types with mysqlnd and connection option

<?php
$mysqli = mysqli_init();
$mysqli->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, 1);
$mysqli->real_connect("example.com", "user", "password", "database");

if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$mysqli->query("DROP TABLE IF EXISTS test") ||
    !$mysqli->query("CREATE TABLE test(id INT, label CHAR(1))") ||
    !$mysqli->query("INSERT INTO test(id, label) VALUES (1, 'a')")) {
    echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

$res = $mysqli->query("SELECT id, label FROM test WHERE id = 1");
$row = $res->fetch_assoc();

printf("id = %s (%s)\n", $row['id'], gettype($row['id']));
printf("label = %s (%s)\n", $row['label'], gettype($row['label']));
?>

以上例程会输出：

id = 1 (integer)
label = a (string)

See also

  • mysqli::__construct()
  • mysqli::init()
  • mysqli::options()
  • mysqli::real_connect()
  • mysqli::query()
  • mysqli::multi_query()
  • mysqli::use_result()
  • mysqli::store_result()
  • mysqli_result::free()

Connections
Prepared Statements
Quick start guide


Prepared Statements

The MySQL database supports prepared statements. A prepared statement or a parameterized statement is used to execute the same statement repeatedly with high efficiency.

Basic workflow

The prepared statement execution consists of two stages: prepare and execute. At the prepare stage a statement template is sent to the database server. The server performs a syntax check and initializes server internal resources for later use.

The MySQL server supports using anonymous, positional placeholder with ?.

Example #1 First stage: prepare

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

/* Non-prepared statement */
if (!$mysqli->query("DROP TABLE IF EXISTS test") || !$mysqli->query("CREATE TABLE test(id INT)")) {
    echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

/* Prepared statement, stage 1: prepare */
if (!($stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (?)"))) {
    echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
?>

Prepare is followed by execute. During execute the client binds parameter values and sends them to the server. The server creates a statement from the statement template and the bound values to execute it using the previously created internal resources.

Example #2 Second stage: bind and execute

<?php
/* Prepared statement, stage 2: bind and execute */
$id = 1;
if (!$stmt->bind_param("i", $id)) {
    echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
}

if (!$stmt->execute()) {
    echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}
?>

Repeated execution

A prepared statement can be executed repeatedly. Upon every execution the current value of the bound variable is evaluated and sent to the server. The statement is not parsed again. The statement template is not transferred to the server again.

Example #3 INSERT prepared once, executed multiple times

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

/* Non-prepared statement */
if (!$mysqli->query("DROP TABLE IF EXISTS test") || !$mysqli->query("CREATE TABLE test(id INT)")) {
    echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

/* Prepared statement, stage 1: prepare */
if (!($stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (?)"))) {
     echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

/* Prepared statement, stage 2: bind and execute */
$id = 1;
if (!$stmt->bind_param("i", $id)) {
    echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
}

if (!$stmt->execute()) {
    echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}

/* Prepared statement: repeated execution, only data transferred from client to server */
for ($id = 2; $id < 5; $id++) {
    if (!$stmt->execute()) {
        echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
    }
}

/* explicit close recommended */
$stmt->close();

/* Non-prepared statement */
$res = $mysqli->query("SELECT id FROM test");
var_dump($res->fetch_all());
?>

以上例程会输出：

array(4) {
  [0]=>
  array(1) {
    [0]=>
    string(1) "1"
  }
  [1]=>
  array(1) {
    [0]=>
    string(1) "2"
  }
  [2]=>
  array(1) {
    [0]=>
    string(1) "3"
  }
  [3]=>
  array(1) {
    [0]=>
    string(1) "4"
  }
}

Every prepared statement occupies server resources. Statements should be closed explicitly immediately after use. If not done explicitly, the statement will be closed when the statement handle is freed by PHP.

Using a prepared statement is not always the most efficient way of executing a statement. A prepared statement executed only once causes more client-server round-trips than a non-prepared statement. This is why the SELECT is not run as a prepared statement above.

Also, consider the use of the MySQL multi-INSERT SQL syntax for INSERTs. For the example, multi-INSERT requires less round-trips between the server and client than the prepared statement shown above.

Example #4 Less round trips using multi-INSERT SQL

<?php
if (!$mysqli->query("INSERT INTO test(id) VALUES (1), (2), (3), (4)")) {
    echo "Multi-INSERT failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
?>

Result set values data types

The MySQL Client Server Protocol defines a different data transfer protocol for prepared statements and non-prepared statements. Prepared statements are using the so called binary protocol. The MySQL server sends result set data "as is" in binary format. Results are not serialized into strings before sending. The client libraries do not receive strings only. Instead, they will receive binary data and try to convert the values into appropriate PHP data types. For example, results from an SQL INT column will be provided as PHP integer variables.

Example #5 Native datatypes

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$mysqli->query("DROP TABLE IF EXISTS test") ||
    !$mysqli->query("CREATE TABLE test(id INT, label CHAR(1))") ||
    !$mysqli->query("INSERT INTO test(id, label) VALUES (1, 'a')")) {
    echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

$stmt = $mysqli->prepare("SELECT id, label FROM test WHERE id = 1");
$stmt->execute();
$res = $stmt->get_result();
$row = $res->fetch_assoc();

printf("id = %s (%s)\n", $row['id'], gettype($row['id']));
printf("label = %s (%s)\n", $row['label'], gettype($row['label']));
?>

以上例程会输出：

id = 1 (integer)
label = a (string)

This behavior differs from non-prepared statements. By default, non-prepared statements return all results as strings. This default can be changed using a connection option. If the connection option is used, there are no differences.

Fetching results using bound variables

Results from prepared statements can either be retrieved by binding output variables, or by requesting a mysqli_result object.

Output variables must be bound after statement execution. One variable must be bound for every column of the statements result set.

Example #6 Output variable binding

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$mysqli->query("DROP TABLE IF EXISTS test") ||
    !$mysqli->query("CREATE TABLE test(id INT, label CHAR(1))") ||
    !$mysqli->query("INSERT INTO test(id, label) VALUES (1, 'a')")) {
    echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!($stmt = $mysqli->prepare("SELECT id, label FROM test"))) {
    echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!$stmt->execute()) {
    echo "Execute failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

$out_id    = NULL;
$out_label = NULL;
if (!$stmt->bind_result($out_id, $out_label)) {
    echo "Binding output parameters failed: (" . $stmt->errno . ") " . $stmt->error;
}

while ($stmt->fetch()) {
    printf("id = %s (%s), label = %s (%s)\n", $out_id, gettype($out_id), $out_label, gettype($out_label));
}
?>

以上例程会输出：

id = 1 (integer), label = a (string)

Prepared statements return unbuffered result sets by default. The results of the statement are not implicitly fetched and transferred from the server to the client for client-side buffering. The result set takes server resources until all results have been fetched by the client. Thus it is recommended to consume results timely. If a client fails to fetch all results or the client closes the statement before having fetched all data, the data has to be fetched implicitly by mysqli.

It is also possible to buffer the results of a prepared statement using mysqli_stmt_store_result().

Fetching results using mysqli_result interface

Instead of using bound results, results can also be retrieved through the mysqli_result interface. mysqli_stmt_get_result() returns a buffered result set.

Example #7 Using mysqli_result to fetch results

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$mysqli->query("DROP TABLE IF EXISTS test") ||
    !$mysqli->query("CREATE TABLE test(id INT, label CHAR(1))") ||
    !$mysqli->query("INSERT INTO test(id, label) VALUES (1, 'a')")) {
    echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!($stmt = $mysqli->prepare("SELECT id, label FROM test ORDER BY id ASC"))) {
    echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!$stmt->execute()) {
     echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}

if (!($res = $stmt->get_result())) {
    echo "Getting result set failed: (" . $stmt->errno . ") " . $stmt->error;
}

var_dump($res->fetch_all());
?>

以上例程会输出：

array(1) {
  [0]=>
  array(2) {
    [0]=>
    int(1)
    [1]=>
    string(1) "a"
  }
}

Using the mysqli_result interface offers the additional benefit of flexible client-side result set navigation.

Example #8 Buffered result set for flexible read out

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$mysqli->query("DROP TABLE IF EXISTS test") ||
    !$mysqli->query("CREATE TABLE test(id INT, label CHAR(1))") ||
    !$mysqli->query("INSERT INTO test(id, label) VALUES (1, 'a'), (2, 'b'), (3, 'c')")) {
    echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!($stmt = $mysqli->prepare("SELECT id, label FROM test"))) {
    echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!$stmt->execute()) {
     echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}

if (!($res = $stmt->get_result())) {
    echo "Getting result set failed: (" . $stmt->errno . ") " . $stmt->error;
}

for ($row_no = ($res->num_rows - 1); $row_no >= 0; $row_no--) {
    $res->data_seek($row_no);
    var_dump($res->fetch_assoc());
}
$res->close();
?>

以上例程会输出：

array(2) {
  ["id"]=>
  int(3)
  ["label"]=>
  string(1) "c"
}
array(2) {
  ["id"]=>
  int(2)
  ["label"]=>
  string(1) "b"
}
array(2) {
  ["id"]=>
  int(1)
  ["label"]=>
  string(1) "a"
}

Escaping and SQL injection

Bound variables are sent to the server separately from the query and thus cannot interfere with it. The server uses these values directly at the point of execution, after the statement template is parsed. Bound parameters do not need to be escaped as they are never substituted into the query string directly. A hint must be provided to the server for the type of bound variable, to create an appropriate conversion. See the mysqli_stmt_bind_param() function for more information.

Such a separation sometimes considered as the only security feature to prevent SQL injection, but the same degree of security can be achieved with non-prepared statements, if all the values are formatted correctly. It should be noted that correct formatting is not the same as escaping and involves more logic than simple escaping. Thus, prepared statements are simply a more convenient and less error-prone approach to this element of database security.

Client-side prepared statement emulation

The API does not include emulation for client-side prepared statement emulation.

Quick prepared - non-prepared statement comparison

The table below compares server-side prepared and non-prepared statements.

Comparison of prepared and non-prepared statements
 | Prepared Statement | Non-prepared statement
Client-server round trips, SELECT, single execution | 2 | 1
Statement string transferred from client to server | 1 | 1
Client-server round trips, SELECT, repeated (n) execution | 1 + n | n
Statement string transferred from client to server | 1 template, n times bound parameter, if any | n times together with parameter, if any
Input parameter binding API | Yes, automatic input escaping | No, manual input escaping
Output variable binding API | Yes | No
Supports use of mysqli_result API | Yes, use mysqli_stmt_get_result() | Yes
Buffered result sets | Yes, use mysqli_stmt_get_result() or binding with mysqli_stmt_store_result() | Yes, default of mysqli_query()
Unbuffered result sets | Yes, use output binding API | Yes, use mysqli_real_query() with mysqli_use_result()
MySQL Client Server protocol data transfer flavor | Binary protocol | Text protocol
Result set values SQL data types | Preserved when fetching | Converted to string or preserved when fetching
Supports all SQL statements | Recent MySQL versions support most but not all | Yes

See also

  • mysqli::__construct()
  • mysqli::query()
  • mysqli::prepare()
  • mysqli_stmt::prepare()
  • mysqli_stmt::execute()
  • mysqli_stmt::bind_param()
  • mysqli_stmt::bind_result()

Executing statements
Stored Procedures
Quick start guide


Stored Procedures

The MySQL database supports stored procedures. A stored procedure is a subroutine stored in the database catalog. Applications can call and execute the stored procedure. The CALL SQL statement is used to execute a stored procedure.

Parameter

Stored procedures can have IN, INOUT and OUT parameters, depending on the MySQL version. The mysqli interface has no special notion for the different kinds of parameters.

IN parameter

Input parameters are provided with the CALL statement. Please, make sure values are escaped correctly.

Example #1 Calling a stored procedure

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$mysqli->query("DROP TABLE IF EXISTS test") || !$mysqli->query("CREATE TABLE test(id INT)")) {
    echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!$mysqli->query("DROP PROCEDURE IF EXISTS p") ||
    !$mysqli->query("CREATE PROCEDURE p(IN id_val INT) BEGIN INSERT INTO test(id) VALUES(id_val); END;")) {
    echo "Stored procedure creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!$mysqli->query("CALL p(1)")) {
    echo "CALL failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!($res = $mysqli->query("SELECT id FROM test"))) {
    echo "SELECT failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

var_dump($res->fetch_assoc());
?>

以上例程会输出：

array(1) {
  ["id"]=>
  string(1) "1"
}

INOUT/OUT parameter

The values of INOUT/OUT parameters are accessed using session variables.

Example #2 Using session variables

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$mysqli->query("DROP PROCEDURE IF EXISTS p") ||
    !$mysqli->query('CREATE PROCEDURE p(OUT msg VARCHAR(50)) BEGIN SELECT "Hi!" INTO msg; END;')) {
    echo "Stored procedure creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!$mysqli->query("SET @msg = ''") || !$mysqli->query("CALL p(@msg)")) {
    echo "CALL failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!($res = $mysqli->query("SELECT @msg as _p_out"))) {
    echo "Fetch failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

$row = $res->fetch_assoc();
echo $row['_p_out'];
?>

以上例程会输出：

Hi!

Application and framework developers may be able to provide a more convenient API using a mix of session variables and databased catalog inspection. However, please note the possible performance impact of a custom solution based on catalog inspection.

Handling result sets

Stored procedures can return result sets. Result sets returned from a stored procedure cannot be fetched correctly using mysqli_query(). The mysqli_query() function combines statement execution and fetching the first result set into a buffered result set, if any. However, there are additional stored procedure result sets hidden from the user which cause mysqli_query() to fail returning the user expected result sets.

Result sets returned from a stored procedure are fetched using mysqli_real_query() or mysqli_multi_query(). Both functions allow fetching any number of result sets returned by a statement, such as CALL. Failing to fetch all result sets returned by a stored procedure causes an error.

Example #3 Fetching results from stored procedures

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$mysqli->query("DROP TABLE IF EXISTS test") ||
    !$mysqli->query("CREATE TABLE test(id INT)") ||
    !$mysqli->query("INSERT INTO test(id) VALUES (1), (2), (3)")) {
    echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!$mysqli->query("DROP PROCEDURE IF EXISTS p") ||
    !$mysqli->query('CREATE PROCEDURE p() READS SQL DATA BEGIN SELECT id FROM test; SELECT id + 1 FROM test; END;')) {
    echo "Stored procedure creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!$mysqli->multi_query("CALL p()")) {
    echo "CALL failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

do {
    if ($res = $mysqli->store_result()) {
        printf("---\n");
        var_dump($res->fetch_all());
        $res->free();
    } else {
        if ($mysqli->errno) {
            echo "Store failed: (" . $mysqli->errno . ") " . $mysqli->error;
        }
    }
} while ($mysqli->more_results() && $mysqli->next_result());
?>

以上例程会输出：

---
array(3) {
  [0]=>
  array(1) {
    [0]=>
    string(1) "1"
  }
  [1]=>
  array(1) {
    [0]=>
    string(1) "2"
  }
  [2]=>
  array(1) {
    [0]=>
    string(1) "3"
  }
}
---
array(3) {
  [0]=>
  array(1) {
    [0]=>
    string(1) "2"
  }
  [1]=>
  array(1) {
    [0]=>
    string(1) "3"
  }
  [2]=>
  array(1) {
    [0]=>
    string(1) "4"
  }
}

Use of prepared statements

No special handling is required when using the prepared statement interface for fetching results from the same stored procedure as above. The prepared statement and non-prepared statement interfaces are similar. Please note, that not every MYSQL server version may support preparing the CALL SQL statement.

Example #4 Stored Procedures and Prepared Statements

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$mysqli->query("DROP TABLE IF EXISTS test") ||
    !$mysqli->query("CREATE TABLE test(id INT)") ||
    !$mysqli->query("INSERT INTO test(id) VALUES (1), (2), (3)")) {
    echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!$mysqli->query("DROP PROCEDURE IF EXISTS p") ||
    !$mysqli->query('CREATE PROCEDURE p() READS SQL DATA BEGIN SELECT id FROM test; SELECT id + 1 FROM test; END;')) {
    echo "Stored procedure creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!($stmt = $mysqli->prepare("CALL p()"))) {
    echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!$stmt->execute()) {
    echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}

do {
    if ($res = $stmt->get_result()) {
        printf("---\n");
        var_dump(mysqli_fetch_all($res));
        mysqli_free_result($res);
    } else {
        if ($stmt->errno) {
            echo "Store failed: (" . $stmt->errno . ") " . $stmt->error;
        }
    }
} while ($stmt->more_results() && $stmt->next_result());
?>

Of course, use of the bind API for fetching is supported as well.

Example #5 Stored Procedures and Prepared Statements using bind API

<?php
if (!($stmt = $mysqli->prepare("CALL p()"))) {
    echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

if (!$stmt->execute()) {
    echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}

do {

    $id_out = NULL;
    if (!$stmt->bind_result($id_out)) {
        echo "Bind failed: (" . $stmt->errno . ") " . $stmt->error;
    }

    while ($stmt->fetch()) {
        echo "id = $id_out\n";
    }
} while ($stmt->more_results() && $stmt->next_result());
?>

See also

  • mysqli::query()
  • mysqli::multi_query()
  • mysqli_result::next-result()
  • mysqli_result::more-results()

Prepared Statements
Multiple Statements
Quick start guide


Multiple Statements

MySQL optionally allows having multiple statements in one statement string. Sending multiple statements at once reduces client-server round trips but requires special handling.

Multiple statements or multi queries must be executed with mysqli_multi_query(). The individual statements of the statement string are separated by semicolon. Then, all result sets returned by the executed statements must be fetched.

The MySQL server allows having statements that do return result sets and statements that do not return result sets in one multiple statement.

Example #1 Multiple Statements

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$mysqli->query("DROP TABLE IF EXISTS test") || !$mysqli->query("CREATE TABLE test(id INT)")) {
    echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

$sql = "SELECT COUNT(*) AS _num FROM test; ";
$sql.= "INSERT INTO test(id) VALUES (1); ";
$sql.= "SELECT COUNT(*) AS _num FROM test; ";

if (!$mysqli->multi_query($sql)) {
    echo "Multi query failed: (" . $mysqli->errno . ") " . $mysqli->error;
}

do {
    if ($res = $mysqli->store_result()) {
        var_dump($res->fetch_all(MYSQLI_ASSOC));
        $res->free();
    }
} while ($mysqli->more_results() && $mysqli->next_result());
?>

以上例程会输出：

array(1) {
  [0]=>
  array(1) {
    ["_num"]=>
    string(1) "0"
  }
}
array(1) {
  [0]=>
  array(1) {
    ["_num"]=>
    string(1) "1"
  }
}

Security considerations

The API functions mysqli_query() and mysqli_real_query() do not set a connection flag necessary for activating multi queries in the server. An extra API call is used for multiple statements to reduce the likeliness of accidental SQL injection attacks. An attacker may try to add statements such as ; DROP DATABASE mysql or ; SELECT SLEEP(999). If the attacker succeeds in adding SQL to the statement string but mysqli_multi_query is not used, the server will not execute the second, injected and malicious SQL statement.

Example #2 SQL Injection

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
$res    = $mysqli->query("SELECT 1; DROP TABLE mysql.user");
if (!$res) {
    echo "Error executing query: (" . $mysqli->errno . ") " . $mysqli->error;
}
?>

以上例程会输出：

Error executing query: (1064) You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax
to use near 'DROP TABLE mysql.user' at line 1

Prepared statements

Use of the multiple statement with prepared statements is not supported.

See also

  • mysqli::query()
  • mysqli::multi_query()
  • mysqli_result::next-result()
  • mysqli_result::more-results()

Stored Procedures
API support for transactions
Quick start guide


API support for transactions

The MySQL server supports transactions depending on the storage engine used. Since MySQL 5.5, the default storage engine is InnoDB. InnoDB has full ACID transaction support.

Transactions can either be controlled using SQL or API calls. It is recommended to use API calls for enabling and disabling the auto commit mode and for committing and rolling back transactions.

Example #1 Setting auto commit mode with SQL and through the API

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

/* Recommended: using API to control transactional settings */
$mysqli->autocommit(false);

/* Won't be monitored and recognized by the replication and the load balancing plugin */
if (!$mysqli->query('SET AUTOCOMMIT = 0')) {
    echo "Query failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
?>

Optional feature packages, such as the replication and load balancing plugin, can easily monitor API calls. The replication plugin offers transaction aware load balancing, if transactions are controlled with API calls. Transaction aware load balancing is not available if SQL statements are used for setting auto commit mode, committing or rolling back a transaction.

Example #2 Commit and rollback

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
$mysqli->autocommit(false);

$mysqli->query("INSERT INTO test(id) VALUES (1)");
$mysqli->rollback();

$mysqli->query("INSERT INTO test(id) VALUES (2)");
$mysqli->commit();
?>

Please note, that the MySQL server cannot roll back all statements. Some statements cause an implicit commit.

See also

  • mysqli::autocommit()
  • mysqli_result::commit()
  • mysqli_result::rollback()

Multiple Statements
Metadata
Quick start guide


Metadata

A MySQL result set contains metadata. The metadata describes the columns found in the result set. All metadata sent by MySQL is accessible through the mysqli interface. The extension performs no or negligible changes to the information it receives. Differences between MySQL server versions are not aligned.

Meta data is access through the mysqli_result interface.

Example #1 Accessing result set meta data

<?php
$mysqli = new mysqli("example.com", "user", "password", "database");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

$res = $mysqli->query("SELECT 1 AS _one, 'Hello' AS _two FROM DUAL");
var_dump($res->fetch_fields());
?>

以上例程会输出：

array(2) {
  [0]=>
  object(stdClass)#3 (13) {
    ["name"]=>
    string(4) "_one"
    ["orgname"]=>
    string(0) ""
    ["table"]=>
    string(0) ""
    ["orgtable"]=>
    string(0) ""
    ["def"]=>
    string(0) ""
    ["db"]=>
    string(0) ""
    ["catalog"]=>
    string(3) "def"
    ["max_length"]=>
    int(1)
    ["length"]=>
    int(1)
    ["charsetnr"]=>
    int(63)
    ["flags"]=>
    int(32897)
    ["type"]=>
    int(8)
    ["decimals"]=>
    int(0)
  }
  [1]=>
  object(stdClass)#4 (13) {
    ["name"]=>
    string(4) "_two"
    ["orgname"]=>
    string(0) ""
    ["table"]=>
    string(0) ""
    ["orgtable"]=>
    string(0) ""
    ["def"]=>
    string(0) ""
    ["db"]=>
    string(0) ""
    ["catalog"]=>
    string(3) "def"
    ["max_length"]=>
    int(5)
    ["length"]=>
    int(5)
    ["charsetnr"]=>
    int(8)
    ["flags"]=>
    int(1)
    ["type"]=>
    int(253)
    ["decimals"]=>
    int(31)
  }
}

Prepared statements

Meta data of result sets created using prepared statements are accessed the same way. A suitable mysqli_result handle is returned by mysqli_stmt_result_metadata().

Example #2 Prepared statements metadata

<?php
$stmt = $mysqli->prepare("SELECT 1 AS _one, 'Hello' AS _two FROM DUAL");
$stmt->execute();
$res = $stmt->result_metadata();
var_dump($res->fetch_fields());
?>

See also

  • mysqli::query()
  • mysqli_result::fetch_fields()

API support for transactions
安装／配置
Quick start guide


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
Metadata
需求
Mysqli


需求

为了使这些函数可用，你必须以支持mysqli扩展的方式编译PHP。

Note:

mysqli扩展被设计用于配合Mysql 4.1.13或更新的服务端版本（或者5.0.7或更新）工作。对于此前的数据库服务端版本， 请参阅MySQL扩展文档。

安装／配置
安装
安装／配置


安装

mysqli扩展在PHP5.0.0中被引入。Mysql Native驱动在PHP5.3.0版本中被引入。

在linux上安装

通用的Unix分发包中会包含PHP可安装的二进制版本。虽然这些二进制版本通常会被构建为支持启用mysql扩展的， 蚕食扩展库自身可能需要依赖其他附加包的安装。因此对包管理的检查会比选择可用的发行版本更重要。

除非你的Unix分发包包含的PHP二进制包的mysqli扩展可用，否则你就需要 从源码构建PHP。如果你希望使用mysql扩展，从PHP源代码构建允许你这样做，并且可以指定每个扩展 使用什么客户端库。

使用Mysql Native Driver 是推荐的选项，会提升性能并且会带来一些Mysql Client Library不允许的访问特性。 什么是Mysql自然驱动器？中对Mysql Native Driver 的优势做了一个简要概述。

/path/to/mysql_config代表了要用来编译mysql客户端/连接mysql服务端的mysql_config程序位置。

mysqli 编译时支持表
PHP 版本 | 默认 | 配置选项: mysqlnd | 配置选项: libmysql | 更新日志
5.0.x, 5.1.x, 5.2.x | libmysql | 不适用 | --with-mysqli=/path/to/mysql_config |
5.3.x | libmysql | --with-mysqli=mysqlnd | --with-mysqli=/path/to/mysql_config | mysqlnd is now supported
5.4.x | mysqlnd | --with-mysqli | --with-mysqli=/path/to/mysql_config | mysqlnd is now the default

请注意Mysql扩展和客户端库是可以自由混合的。比如，可以使用libmysql这个mysql客户端库来启用Mysql扩展，使用 Mysql Native Driver来配置mysqli扩展。所有的扩展和客户端库的顺序都是可能的。

下面的示例使用Mysql Client Library（libmysql）构建了mysql扩展，并且mysqli和 PDO Mysql扩展使用Mysql Native Dirver（作为客户端库）：

./configure --with-mysql=/usr/bin/mysql_config  \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd
[other options]

在windows系统安装

在windows上，PHP通常使用二进制安装包进行安装。

PHP 5.0, 5.1, 5.2

当PHP安装后，如果期望使用则可以通过一些配置来开启mysqli并指定客户端库。

mysqli扩展默认并不会开启，因此php.ini中php_mysqli.dll这个DLL 必须开启。为此你需要找到php.ini文件（通常在c:\php），并且你需要确认删除了 [PHP_MYSQLI]部分中的extension=php_mysqli.dll一行行首的注释符号（分号）。

另外，如果你希望使用Mysql client library（libmysql）作为mysqli的驱动器，你需要确保PHP可以访问 客户端库的文件。Mysql Client Library作为文件libmysql.dll包含在windows的PHP分发包中。 这个文件需要在windows系统的PATH环境变量中才可以被成功加载。查看FAQ文档 怎样增加我的PHP目录到Windows的PATH中了解怎样配置环境变量PATH。 把libmysql.dll拷贝到Windows的系统目录（通常是c:\Windows\system）也是适用的， 通常系统目录默认就在系统的PATH环境变量下。然而，我们强烈反对这种做法。

就像开启任何PHP扩展（比如php_mysqli.dll），PHP指令 extension_dir可以被设置为PHP扩展位置的目录路径。 查看windows安装介绍手册。关于此的一个例子是PHP 5中 extension_dir指令的值是c:\php\ext。

Note:

如果启动web服务器的时候发生了类似下面这样的错误"Unable to load dynamic library './php_mysqli.dll'"， 这就是因为在系统中无法找到php_mysqli.dll或者libmysql.dll。

PHP 5.3.0+

在windows上，对于PHP 5.3或更新版本，mysqli扩展默认开启并使用Mysql Native Driver。 这就是说你不需要担心关于访问libmysql.dll的配置。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

MySQLi配置选项
名字 | 默认 | 可修改范围 | 更新日志
mysqli.allow_local_infile | "1" | PHP_INI_SYSTEM | 自PHP 5.2.4起可用。
mysqli.allow_persistent | "1" | PHP_INI_SYSTEM | 自PHP 5.3.0起可用。
mysqli.max_persistent | "-1" | PHP_INI_SYSTEM | 自PHP 5.3.0起可用。
mysqli.max_links | "-1" | PHP_INI_SYSTEM | 自PHP 5.0.0起可用。
mysqli.default_port | "3306" | PHP_INI_ALL | 自PHP 5.0.0起可用。
mysqli.default_socket | NULL | PHP_INI_ALL | 自PHP 5.0.0起可用。
mysqli.default_host | NULL | PHP_INI_ALL | 自PHP 5.0.0起可用。
mysqli.default_user | NULL | PHP_INI_ALL | 自PHP 5.0.0起可用。
mysqli.default_pw | NULL | PHP_INI_ALL | 自PHP 5.0.0起可用。
mysqli.reconnect | "0" | PHP_INI_SYSTEM | 自PHP 4.3.5起可用。
mysqli.rollback_on_cached_plink | TRUE | PHP_INI_SYSTEM | 自 PHP 5.6.0 起可用。
mysqli.cache_size | "2000" | PHP_INI_SYSTEM | 自PHP 5.3.0起可用。

关于前面出现的PHP_INI_*系列常量的详细定义，请参阅配置的修改一章。

这是配置指令的简短说明。

mysqli.allow_local_infile integer

允许Mysql的Load Data语句访问PHP角度看的本地文件。

mysqli.allow_persistent integer

开启使用mysqli_connect()函数创建持久化连接的能力。

mysqli.max_persistent integer

可以创建的持久化连接的最大数量，设置为0表明不限制。

mysqli.max_links integer

每个进程中Mysql连接的最大数量。

mysqli.default_port integer

当没有指定其他端口号时使用的默认的用于连接数据库服务器的TCP端口号。如果没有设置默认值， 端口号将会按照顺序从环境变量MYSQL_TCP_PORT，/etc/services 文件中的mysql-tcp条目或编译期的MYSQL_PORT常量等位置获取。 Win32仅使用MYSQL_PORT常量。

mysqli.default_socket string

当连接到本地数据库服务器时如果没有指定其他socket名称，使用的默认socket名称。

mysqli.default_host string

当连接到数据库服务器时， 如果没有指定其他主机地址，使用的默认服务器主机。不要在 安全模式下使用。

mysqli.default_user string

当连接到数据库服务器时，如果没有指定其他用户名，使用的默认用户名。不要在 安全模式下使用。

mysqli.default_pw string

当连接到数据库服务器时，如果灭有指定其他密码，使用的默认密码。不要在 安全模式下使用。

mysqli.reconnect integer

连接丢失时是否自动重新连接。

mysqli.rollback_on_cached_plink bool

Used for rollbacking connections put back into the persistent connection pool.

mysqli.cache_size integer

仅可用于 mysqlnd。

用户不能通过API调用或运行时配置来设置MYSQL_OPT_READ_TIMEOUT。 注意，如果可能这样做那么libmysql和流对MYSQL_OPT_READ_TIMEOUT 的值将会有不同的解释。

安装
资源类型
安装／配置


资源类型

此扩展没有定义资源类型。

运行时配置
mysqli扩展和持久化连接
安装／配置


mysqli扩展和持久化连接

mysqli扩展的持久化连接在PHP5.3中被引入。支持已经存在于PDO MYSQL 和ext/mysql中。持久化连接背后的思想是客户端进程和数据库之间的连接可以通过一个客户端进程来保持重用， 而不是多次的创建和销毁。这降低了每次需要创建一个新连接的开销，未使用的连接被缓存起来并且准备随时被重用。

不像mysql扩展，mysqli没有提供一个特殊的方法用于打开持久化连接。需要打开一个持久化连接时，你必须在 连接时在主机名前增加p:。

使用持久化连接的问题在于它们可能在客户端处于不可预知的状态。比如，一个表锁可能在客户端意外终止之前被激活。 一个新的客户端进程重用这个持久化连接就会"按照原样"得到这个连接。这样，一个新的客户端进程 为了更好的使用持久化连接，就需要做任何可能的清理工作，这样就增加了对程序员的负担。

mysqli扩展的持久化连接提供了内建的清理处理代码。mysqli 所做的清理工作包括：

  • 回滚活动的事务

  • 关闭并且删除临时表

  • 对表解锁、

  • 重置会话变量

  • 关闭prepared语句（在PHP中经常发生）

  • 关闭处理程序

  • 释放通过GET_LOCK()获得的锁

这确保了从连接池返回的持久化连接在客户端进程使用它之前处于干净的状态。

mysqli扩展通过自动的调用C-API函数mysql_change_user() 来完成这个清理工作。

自动清理的特性有优点也有缺点。优点是程序员不再需要担心附加的清理代码，因为它们会自动调用。然而缺点就是 代码可能会潜在的慢一点，因为每次从连接池返回一个连接都需要执行这些清理代码。

这个自动清理的代码可以通过在编译php时定义MYSQLI_NO_CHANGE_USER_ON_PCONNECT 来关闭。

Note:

mysqli扩展在使用Mysql Native Driver或Mysql Client Library（libmysql）时都支持持久化连接。

资源类型
预定义常量
Mysqli


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

MYSQLI_READ_DEFAULT_GROUP

Read options from the named group from my.cnf or the file specified with MYSQLI_READ_DEFAULT_FILE

MYSQLI_READ_DEFAULT_FILE

Read options from the named option file instead of from my.cnf

MYSQLI_OPT_CONNECT_TIMEOUT

Connect timeout in seconds

MYSQLI_OPT_LOCAL_INFILE

Enables command LOAD LOCAL INFILE

MYSQLI_INIT_COMMAND

Command to execute when connecting to MySQL server. Will automatically be re-executed when reconnecting.

MYSQLI_CLIENT_SSL

Use SSL (encrypted protocol). This option should not be set by application programs; it is set internally in the MySQL client library

MYSQLI_CLIENT_COMPRESS

Use compression protocol

MYSQLI_CLIENT_INTERACTIVE

Allow interactive_timeout seconds (instead of wait_timeout seconds) of inactivity before closing the connection. The client's session wait_timeout variable will be set to the value of the session interactive_timeout variable.

MYSQLI_CLIENT_IGNORE_SPACE

Allow spaces after function names. Makes all functions names reserved words.

MYSQLI_CLIENT_NO_SCHEMA

Don't allow the db_name.tbl_name.col_name syntax.

MYSQLI_CLIENT_MULTI_QUERIES

Allows multiple semicolon-delimited queries in a single mysqli_query() call.

MYSQLI_STORE_RESULT

For using buffered resultsets

MYSQLI_USE_RESULT

For using unbuffered resultsets

MYSQLI_ASSOC

Columns are returned into the array having the fieldname as the array index.

MYSQLI_NUM

Columns are returned into the array having an enumerated index.

MYSQLI_BOTH

Columns are returned into the array having both a numerical index and the fieldname as the associative index.

MYSQLI_NOT_NULL_FLAG

Indicates that a field is defined as NOT NULL

MYSQLI_PRI_KEY_FLAG

Field is part of a primary index

MYSQLI_UNIQUE_KEY_FLAG

Field is part of a unique index.

MYSQLI_MULTIPLE_KEY_FLAG

Field is part of an index.

MYSQLI_BLOB_FLAG

Field is defined as BLOB

MYSQLI_UNSIGNED_FLAG

Field is defined as UNSIGNED

MYSQLI_ZEROFILL_FLAG

Field is defined as ZEROFILL

MYSQLI_AUTO_INCREMENT_FLAG

Field is defined as AUTO_INCREMENT

MYSQLI_TIMESTAMP_FLAG

Field is defined as TIMESTAMP

MYSQLI_SET_FLAG

Field is defined as SET

MYSQLI_NUM_FLAG

Field is defined as NUMERIC

MYSQLI_PART_KEY_FLAG

Field is part of an multi-index

MYSQLI_GROUP_FLAG

Field is part of GROUP BY

MYSQLI_TYPE_DECIMAL

Field is defined as DECIMAL

MYSQLI_TYPE_NEWDECIMAL

Precision math DECIMAL or NUMERIC field (MySQL 5.0.3 and up)

MYSQLI_TYPE_BIT

Field is defined as BIT (MySQL 5.0.3 and up)

MYSQLI_TYPE_TINY

Field is defined as TINYINT

MYSQLI_TYPE_SHORT

Field is defined as SMALLINT

MYSQLI_TYPE_LONG

Field is defined as INT

MYSQLI_TYPE_FLOAT

Field is defined as FLOAT

MYSQLI_TYPE_DOUBLE

Field is defined as DOUBLE

MYSQLI_TYPE_NULL

Field is defined as DEFAULT NULL

MYSQLI_TYPE_TIMESTAMP

Field is defined as TIMESTAMP

MYSQLI_TYPE_LONGLONG

Field is defined as BIGINT

MYSQLI_TYPE_INT24

Field is defined as MEDIUMINT

MYSQLI_TYPE_DATE

Field is defined as DATE

MYSQLI_TYPE_TIME

Field is defined as TIME

MYSQLI_TYPE_DATETIME

Field is defined as DATETIME

MYSQLI_TYPE_YEAR

Field is defined as YEAR

MYSQLI_TYPE_NEWDATE

Field is defined as DATE

MYSQLI_TYPE_INTERVAL

Field is defined as INTERVAL

MYSQLI_TYPE_ENUM

Field is defined as ENUM

MYSQLI_TYPE_SET

Field is defined as SET

MYSQLI_TYPE_TINY_BLOB

Field is defined as TINYBLOB

MYSQLI_TYPE_MEDIUM_BLOB

Field is defined as MEDIUMBLOB

MYSQLI_TYPE_LONG_BLOB

Field is defined as LONGBLOB

MYSQLI_TYPE_BLOB

Field is defined as BLOB

MYSQLI_TYPE_VAR_STRING

Field is defined as VARCHAR

MYSQLI_TYPE_STRING

Field is defined as STRING

MYSQLI_TYPE_CHAR

Field is defined as CHAR

MYSQLI_TYPE_GEOMETRY

Field is defined as GEOMETRY

MYSQLI_NEED_DATA

More data available for bind variable

MYSQLI_NO_DATA

No more data available for bind variable

MYSQLI_DATA_TRUNCATED

Data truncation occurred. Available since PHP 5.1.0 and MySQL 5.0.5.

MYSQLI_ENUM_FLAG

Field is defined as ENUM. Available since PHP 5.3.0.

MYSQLI_CURSOR_TYPE_FOR_UPDATE

MYSQLI_CURSOR_TYPE_NO_CURSOR

MYSQLI_CURSOR_TYPE_READ_ONLY

MYSQLI_CURSOR_TYPE_SCROLLABLE

MYSQLI_STMT_ATTR_CURSOR_TYPE

MYSQLI_STMT_ATTR_PREFETCH_ROWS

MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH

MYSQLI_SET_CHARSET_NAME

MYSQLI_REPORT_INDEX

Report if no index or bad index was used in a query.

MYSQLI_REPORT_ERROR

Report errors from mysqli function calls.

MYSQLI_REPORT_STRICT

Throw a mysqli_sql_exception for errors instead of warnings.

MYSQLI_REPORT_ALL

Set all options on (report all).

MYSQLI_REPORT_OFF

Turns reporting off.

MYSQLI_DEBUG_TRACE_ENABLED

Is set to 1 if mysqli_debug() functionality is enabled.

MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED

MYSQLI_SERVER_QUERY_NO_INDEX_USED

MYSQLI_REFRESH_GRANT

Refreshes the grant tables.

MYSQLI_REFRESH_LOG

Flushes the logs, like executing the FLUSH LOGS SQL statement.

MYSQLI_REFRESH_TABLES

Flushes the table cache, like executing the FLUSH TABLES SQL statement.

MYSQLI_REFRESH_HOSTS

Flushes the host cache, like executing the FLUSH HOSTS SQL statement.

MYSQLI_REFRESH_STATUS

Reset the status variables, like executing the FLUSH STATUS SQL statement.

MYSQLI_REFRESH_THREADS

Flushes the thread cache.

MYSQLI_REFRESH_SLAVE

On a slave replication server: resets the master server information, and restarts the slave. Like executing the RESET SLAVE SQL statement.

MYSQLI_REFRESH_MASTER

On a master replication server: removes the binary log files listed in the binary log index, and truncates the index file. Like executing the RESET MASTER SQL statement.

mysqli扩展和持久化连接
Notes
Mysqli


Notes

Some implementation notes:

  1. Support was added for MYSQL_TYPE_GEOMETRY to the MySQLi extension in PHP 5.3.

  2. Note there are different internal implementations within libmysqlclient and mysqlnd for handling columns of type MYSQL_TYPE_GEOMETRY. Generally speaking, mysqlnd will allocate significantly less memory. For example, if there is a POINT column in a result set, libmysqlclient may pre-allocate up to 4GB of RAM although less than 50 bytes are needed for holding a POINT column in memory. Memory allocation is much lower, less than 50 bytes, if using mysqlnd.

预定义常量
MySQLi扩展功能概述
Mysqli


MySQLi扩展功能概述

MySQLi类
面向对象接口 | 面向过程接口 | 别名 | 描述
属性
$mysqli->affected_rows | mysqli_affected_rows() | N/A | 获取前一个Mysql操作的受影响行数
$mysqli->client_info | mysqli_get_client_info() | N/A | 返回字符串类型的Mysql客户端版本信息
$mysqli->client_version | mysqli_get_client_version() | N/A | 返回整型的Mysql客户端版本信息
$mysqli->connect_errno | mysqli_connect_errno() | N/A | 返回最后一次连接调用的错误代码
$mysqli->connect_error | mysqli_connect_error() | N/A | 返回一个字符串描述的最后一次连接调用的错误代码
$mysqli->errno | mysqli_errno() | N/A | 返回最近的函数调用产生的错误代码
$mysqli->error | mysqli_error() | N/A | 返回字符串描述的最近一次函数调用产生的错误代码
$mysqli->field_count | mysqli_field_count() | N/A | 返回最近一次查询获取到的列的数目
$mysqli->host_info | mysqli_get_host_info() | N/A | 返回一个能够代表使用的连接类型的字符串
$mysqli->protocol_version | mysqli_get_proto_info() | N/A | 返回使用的Mysql协议的版本信息
$mysqli->server_info | mysqli_get_server_info() | N/A | 返回Mysql服务端版本的信息
$mysqli->server_version | mysqli_get_server_version() | N/A | 返回整型的Mysql服务端版本信息
$mysqli->info | mysqli_info() | N/A | 最近一次执行的查询的检索信息
$mysqli->insert_id | mysqli_insert_id() | N/A | 返回最后一次查询自动生成并使用的id
$mysqli->sqlstate | mysqli_sqlstate() | N/A | 返回前一个Mysql操作的SQLSTATE错误
$mysqli->warning_count | mysqli_warning_count() | N/A | 返回给定链接最后一次查询的警告数量
方法
mysqli->autocommit() | mysqli_autocommit() | N/A | 打开或关闭数据库的自动提交功能
mysqli->change_user() | mysqli_change_user() | N/A | 更改指定数据库连接的用户
mysqli->character_set_name(), mysqli->client_encoding | mysqli_character_set_name() | mysqli_client_encoding() | 返回数据库连接的默认字符集
mysqli->close() | mysqli_close() | N/A | 关闭先前打开的数据库连接
mysqli->commit() | mysqli_commit() | N/A | 提交当前事务
mysqli::__construct() | mysqli_connect() | N/A | 打开一个到Mysql服务端的新的连接［注意：静态方法］
mysqli->debug() | mysqli_debug() | N/A | 执行调试操作
mysqli->dump_debug_info() | mysqli_dump_debug_info() | N/A | 将调试信息转储到日志中
mysqli->get_charset() | mysqli_get_charset() | N/A | 返回对象的字符集
mysqli->get_connection_stats() | mysqli_get_connection_stats() | N/A | 返回客户端连接的统计信息。 仅可用于 mysqlnd。
mysqli->get_client_info() | mysqli_get_client_info() | N/A | 返回字符串描述的Mysql客户端版本
mysqli->get_client_stats() | mysqli_get_client_stats() | N/A | 返回每个客户端进程的统计信息。 仅可用于 mysqlnd。
mysqli->get_cache_stats() | mysqli_get_cache_stats() | N/A | 返回客户端的zval缓存统计信息。 仅可用于 mysqlnd。
mysqli->get_server_info() | mysqli_get_server_info() | N/A | 没有文档
mysqli->get_warnings() | mysqli_get_warnings() | N/A | 没有文档
mysqli::init() | mysqli_init() | N/A | 初始化mysqli并且返回一个由mysqli_real_connect使用的资源类型。［不是在对象上，是它返回的$mysqli对象］
mysqli->kill() | mysqli_kill() | N/A | 请求服务器杀死一个Mysql线程
mysqli->more_results() | mysqli_more_results() | N/A | 检查一个多语句查询是否还有其他查询结果集
mysqli->multi_query() | mysqli_multi_query() | N/A | 在数据库上执行一个多语句查询
mysqli->next_result() | mysqli_next_result() | N/A | 从multi_query中准备下一个结果集
mysqli->options() | mysqli_options() | mysqli_set_opt() | 设置选项
mysqli->ping() | mysqli_ping() | N/A | ping一个服务器连接，或者如果那个连接断了尝试重连
mysqli->prepare() | mysqli_prepare() | N/A | 准备一个用于执行的SQL语句
mysqli->query() | mysqli_query() | N/A | 在数据库上执行一个查询
mysqli->real_connect() | mysqli_real_connect() | N/A | 打开一个到Mysql服务端的连接
mysqli->real_escape_string(), mysqli->escape_string() | mysqli_real_escape_string() | mysqli_escape_string() | 转义字符串中用于SQL语句中的特殊字符，这个转换会考虑连接的当前字符集。
mysqli->real_query() | mysqli_real_query() | N/A | 执行一个SQL查询
mysqli->rollback() | mysqli_rollback() | N/A | 回滚当前事务
mysqli->select_db() | mysqli_select_db() | N/A | 为数据库查询选择默认数据库
mysqli->set_charset() | mysqli_set_charset() | N/A | 设置默认的客户端字符集
mysqli->set_local_infile_default() | mysqli_set_local_infile_default() | N/A | 清除用户为load data local infile命令定义的处理程序
mysqli->set_local_infile_handler() | mysqli_set_local_infile_handler() | N/A | 设置LOAD DATA LOCAL INFILE命令执行的回调函数
mysqli->ssl_set() | mysqli_ssl_set() | N/A | 使用SSL建立安装连接
mysqli->stat() | mysqli_stat() | N/A | 获取当前系统状态
mysqli->stmt_init() | mysqli_stmt_init() | N/A | 初始化一个语句并且返回一个mysqli_stmt_prepare使用的对象
mysqli->store_result() | mysqli_store_result() | N/A | 传输最后一个查询的结果集
mysqli->thread_id() | mysqli_thread_id() | N/A | 返回当前连接的线程ID
mysqli->thread_safe() | mysqli_thread_safe() | N/A | 返回是否设定了线程安全
mysqli->use_result() | mysqli_use_result() | N/A | 初始化一个结果集的取回
MySQL_STMT
面向对象接口 | 过程化接口 | 别名（不要使用） | 描述
属性
$mysqli_stmt->affected_rows | mysqli_stmt_affected_rows() | N/A | 返回最后一条倍执行的语句改变，删除或插入的总行数
$mysqli_stmt->errno | mysqli_stmt_errno() | N/A | 返回最近一次语句调用的错误代码
$mysqli_stmt->error | mysqli_stmt_error() | N/A | 返回最后一条语句错误的字符串描述
$mysqli_stmt->field_count | mysqli_stmt_field_count() | N/A | 返回给定语句得到的字段数量
$mysqli_stmt->insert_id | mysqli_stmt_insert_id() | N/A | 获取前一个INSERT操作生成的ID
$mysqli_stmt->num_rows | mysqli_stmt_num_rows() | N/A | 返回语句结果集中的行数
$mysqli_stmt->param_count | mysqli_stmt_param_count() | mysqli_param_count() | 返回给定语句中参数数量
$mysqli_stmt->sqlstate | mysqli_stmt_sqlstate() | N/A | 返回前一个语句操作的SQLSTATE错误代码
方法
mysqli_stmt->attr_get() | mysqli_stmt_attr_get() | N/A | 用于获取语句属性的当前值
mysqli_stmt->attr_set() | mysqli_stmt_attr_set() | N/A | 用于修改prepared语句的行为
mysqli_stmt->bind_param() | mysqli_stmt_bind_param() | mysqli_bind_param() | 将一个变量作为参数绑定到prepared语句上
mysqli_stmt->bind_result() | mysqli_stmt_bind_result() | mysqli_bind_result() | 将一个变量绑定到一个prepared语句上用于结果存储
mysqli_stmt->close() | mysqli_stmt_close() | N/A | 关闭一个prepared语句
mysqli_stmt->data_seek() | mysqli_stmt_data_seek() | N/A | 查看语句结果集中的任意行
mysqli_stmt->execute() | mysqli_stmt_execute() | mysqli_execute() | 执行一个prepared查询
mysqli_stmt->fetch() | mysqli_stmt_fetch() | mysqli_fetch() | 从一个prepared语句中抓取结果到限定变量中
mysqli_stmt->free_result() | mysqli_stmt_free_result() | N/A | 释放给定语句处理存储的结果集所占内存
$mysqli_stmt->get_result() | mysqli_stmt_get_result | N/A | 没有文档 仅可用于 mysqlnd。
mysqli_stmt->get_warnings() | mysqli_stmt_get_warnings() | N/A | 没有文档
$mysqli_stmt->more_results() | mysqli_stmt_more_results() | N/A | 没有文档 仅可用于 mysqlnd。
$mysqli_stmt->next_result() | mysqli_stmt_next_result() | N/A | 没有文档 仅可用于 mysqlnd。
mysqli_stmt->num_rows() | mysqli_stmt_num_rows() | N/A | 查阅属性$mysqli_stmt->num_rows
mysqli_stmt->prepare() | mysqli_stmt_prepare() | N/A | 准备一个SQL语句用于执行
mysqli_stmt->reset() | mysqli_stmt_reset() | N/A | 重置一个prepared语句
mysqli_stmt->result_metadata() | mysqli_stmt_result_metadata() | mysqli_get_metadata() | 从一个prepared语句返回结果集元数据
mysqli_stmt->send_long_data() | mysqli_stmt_send_long_data() | mysqli_send_long_data() | 发送数据块
mysqli_stmt->store_result() | mysqli_stmt_store_result() | N/A | 从一个prepared语句中传输一个结果集
MySQLi_RESULT
面向对象接口 | 过程化接口 | 别名（不要使用） | 描述
属性
$mysqli_result->current_field | mysqli_field_tell() | N/A | 获取当前字段在结果集指针中的开始位置
$mysqli_result->field_count | mysqli_num_fields() | N/A | 获取结果中字段数量
$mysqli_result->lengths | mysqli_fetch_lengths() | N/A | 返回结果集中哦功能当前行的列长度
$mysqli_result->num_rows | mysqli_num_rows() | N/A | 获取结果中行的数量
方法
mysqli_result->data_seek() | mysqli_data_seek() | N/A | 将结果中的结果指针调整到任意行
mysqli_result->fetch_all() | mysqli_fetch_all() | N/A | 抓取所有的结果行并且以关联数据，数值索引数组，或者两者皆有的方式返回结果集。仅可用于 mysqlnd。
mysqli_result->fetch_array() | mysqli_fetch_array() | N/A | 以一个关联数组，数值索引数组，或者两者皆有的方式抓取一行结果
mysqli_result->fetch_assoc() | mysqli_fetch_assoc() | N/A | 以一个关联数组方式抓取一行结果
mysqli_result->fetch_field_direct() | mysqli_fetch_field_direct() | N/A | 抓取一个单字段的元数据
mysqli_result->fetch_field() | mysqli_fetch_field() | N/A | 返回结果集中的下一个字段
mysqli_result->fetch_fields() | mysqli_fetch_fields() | N/A | 返回一个代表结果集字段的对象数组
mysqli_result->fetch_object() | mysqli_fetch_object() | N/A | 以一个对象的方式返回一个结果集中的当前行
mysqli_result->fetch_row() | mysqli_fetch_row() | N/A | 以一个枚举数组方式返回一行结果
mysqli_result->field_seek() | mysqli_field_seek() | N/A | 设置结果指针到特定的字段开始位置
mysqli_result->free(), mysqli_result->close, mysqli_result->free_result | mysqli_free_result() | N/A | 释放与一个结果集相关的内存
MySQL_Driver
面向对象接口 | 过程化接口 | 别名（不要使用） | 描述
属性
N/A
方法
mysqli_driver->embedded_server_end() | mysqli_embedded_server_end() | N/A | 没有文档
mysqli_driver->embedded_server_start() | mysqli_embedded_server_start() | N/A | 没有文档

Note:

别名函数仅仅是为了提供向后兼容的目的而存在。在新的项目中不要使用它们。

Notes
MySQLi
Mysqli


MySQLi类

(PHP 5, PHP 7)

简介

代表PHP和Mysql数据库之间的一个连接。

类摘要

MySQLi {
/* 属性 */
int $mysqli->affected_rows;
string $mysqli->client_info;
int $mysqli->client_version;
int $mysqli->connect_errno;
string $mysqli->connect_error;
int $errno;
array $mysqli->error_list;
string $mysqli->error;
int $mysqli->field_count;
int $mysqli->client_version;
string $mysqli->host_info;
string $mysqli->protocol_version;
string $mysqli->server_info;
int $mysqli->server_version;
string $mysqli->info;
mixed $mysqli->insert_id;
string $mysqli->sqlstate;
int $mysqli->thread_id;
int $mysqli->warning_count;
/* 方法 */
int mysqli_affected_rows ( mysqli $link )
bool mysqli::autocommit ( bool $mode )
public bool mysqli::begin_transaction ([ int $flags [, string $name ]] )
bool mysqli::change_user ( string $user , string $password , string $database )
string mysqli::character_set_name ( void )
string mysqli_get_client_info ( mysqli $link )
int mysqli_get_client_version ( mysqli $link )
bool mysqli::close ( void )
bool mysqli::commit ( void )
int mysqli_connect_errno ( void )
string mysqli_connect_error ( void )
 mysqli mysqli_connect
  ([ string $host = ini_get("mysqli.default_host")
 [, string $username = ini_get("mysqli.default_user")
 [, string $passwd = ini_get("mysqli.default_pw")
 [, string $dbname = ""
 [, int $port = ini_get("mysqli.default_port")
 [, string $socket = ini_get("mysqli.default_socket")
]]]]]] )
bool mysqli::debug ( string $message )
bool mysqli::dump_debug_info ( void )
int mysqli_errno ( mysqli $link )
array mysqli_error_list ( mysqli $link )
string mysqli_error ( mysqli $link )
int mysqli_field_count ( mysqli $link )
object mysqli::get_charset ( void )
string mysqli::get_client_info ( void )
array mysqli_get_client_stats ( void )
int mysqli_get_client_version ( mysqli $link )
bool mysqli::get_connection_stats ( void )
string mysqli_get_host_info ( mysqli $link )
int mysqli_get_proto_info ( mysqli $link )
string mysqli_get_server_info ( mysqli $link )
int mysqli_get_server_version ( mysqli $link )
mysqli_warning mysqli::get_warnings ( void )
string mysqli_info ( mysqli $link )
mysqli mysqli::init ( void )
mixed mysqli_insert_id ( mysqli $link )
bool mysqli::kill ( int $processid )
bool mysqli::more_results ( void )
bool mysqli::multi_query ( string $query )
bool mysqli::next_result ( void )
bool mysqli::options ( int $option , mixed $value )
bool mysqli::ping ( void )
public static int mysqli::poll ( array &$read , array &$error , array &$reject , int $sec [, int $usec ] )
mysqli_stmt mysqli::prepare ( string $query )
mixed mysqli::query ( string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )
bool mysqli::real_connect ([ string $host [, string $username [, string $passwd [, string $dbname [, int $port [, string $socket [, int $flags ]]]]]]] )
string mysqli::escape_string ( string $escapestr )
bool mysqli::real_query ( string $query )
public mysqli_result mysqli::reap_async_query ( void )
public bool mysqli::refresh ( int $options )
public bool mysqli::release_savepoint ( string $name )
bool mysqli::rollback ( void )
int mysqli::rpl_query_type ( string $query )
public bool mysqli::savepoint ( string $name )
bool mysqli::select_db ( string $dbname )
bool mysqli::send_query ( string $query )
bool mysqli::set_charset ( string $charset )
void mysqli_set_local_infile_default ( mysqli $link )
bool mysqli::set_local_infile_handler ( mysqli $link , callable $read_func )
string mysqli_sqlstate ( mysqli $link )
bool mysqli::ssl_set ( string $key , string $cert , string $ca , string $capath , string $cipher )
string mysqli::stat ( void )
mysqli_stmt mysqli::stmt_init ( void )
mysqli_result mysqli::store_result ([ int $option ] )
int mysqli_thread_id ( mysqli $link )
bool mysqli_thread_safe ( void )
mysqli_result mysqli::use_result ( void )
int mysqli_warning_count ( mysqli $link )
}

Table of Contents

  • mysqli::$affected_rows — Gets the number of affected rows in a previous MySQL operation
  • mysqli::autocommit — 打开或关闭本次数据库连接的自动命令提交事务模式
  • mysqli::begin_transaction — Starts a transaction
  • mysqli::change_user — Changes the user of the specified database connection
  • mysqli::character_set_name — 返回当前数据库连接的默认字符编码
  • mysqli::$client_info — Get MySQL client info
  • mysqli::$client_version — Returns the MySQL client version as a string
  • mysqli::close — 关闭先前打开的数据库连接
  • mysqli::commit — 提交一个事务
  • mysqli::$connect_errno — Returns the error code from last connect call
  • mysqli::$connect_error — Returns a string description of the last connect error
  • mysqli::__construct — Open a new connection to the MySQL server
  • mysqli::debug — Performs debugging operations
  • mysqli::dump_debug_info — 将调试信息输出到日志
  • mysqli::errno — 返回最近函数调用的错误代码
  • mysqli::$error_list — Returns a list of errors from the last command executed
  • mysqli::$error — Returns a string description of the last error
  • mysqli::$field_count — Returns the number of columns for the most recent query
  • mysqli::get_charset — Returns a character set object
  • mysqli::get_client_info — Get MySQL client info
  • mysqli_get_client_stats — Returns client per-process statistics
  • mysqli_get_client_version — 作为一个整数返回MySQL客户端的版本
  • mysqli::get_connection_stats — Returns statistics about the client connection
  • mysqli::$host_info — 返回一个表述使用的连接类型的字符串
  • mysqli::$protocol_version — 返回MySQL使用的协议版本号
  • mysqli::$server_info — 返回MySQL服务器的版本号
  • mysqli::$server_version — 作为一个整数返回MySQL服务器的版本
  • mysqli::get_warnings — Get result of SHOW WARNINGS
  • mysqli::$info — Retrieves information about the most recently executed query
  • mysqli::init — Initializes MySQLi and returns a resource for use with mysqli_real_connect()
  • mysqli::$insert_id — Returns the auto generated id used in the latest query
  • mysqli::kill — Asks the server to kill a MySQL thread
  • mysqli::more_results — Check if there are any more query results from a multi query
  • mysqli::multi_query — Performs a query on the database
  • mysqli::next_result — Prepare next result from multi_query
  • mysqli::options — Set options
  • mysqli::ping — Pings a server connection, or tries to reconnect if the connection has gone down
  • mysqli::poll — Poll connections
  • mysqli::prepare — Prepare an SQL statement for execution
  • mysqli::query — 对数据库执行一次查询
  • mysqli::real_connect — 建立一个 MySQL 服务器连接
  • mysqli::real_escape_string — Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection
  • mysqli::real_query — 执行一个mysql查询
  • mysqli::reap_async_query — Get result from async query
  • mysqli::refresh — Refreshes
  • mysqli::release_savepoint — Removes the named savepoint from the set of savepoints of the current transaction
  • mysqli::rollback — 回退当前事务
  • mysqli::rpl_query_type — Returns RPL query type
  • mysqli::savepoint — Set a named transaction savepoint
  • mysqli::select_db — 选择用于数据库查询的默认数据库
  • mysqli::send_query — 发送请求并返回结果
  • mysqli::set_charset — 设置默认字符编码
  • mysqli::set_local_infile_default — Unsets user defined handler for load local infile command
  • mysqli::set_local_infile_handler — Set callback function for LOAD DATA LOCAL INFILE command
  • mysqli::$sqlstate — Returns the SQLSTATE error from previous MySQL operation
  • mysqli::ssl_set — Used for establishing secure connections using SSL
  • mysqli::stat — Gets the current system status
  • mysqli::stmt_init — 初始化一条语句并返回一个用于mysqli_stmt_prepare(调用)的对象
  • mysqli::store_result — Transfers a result set from the last query
  • mysqli::$thread_id — Returns the thread ID for the current connection
  • mysqli::thread_safe — 返回是否是线程安全的
  • mysqli::use_result — Initiate a result set retrieval
  • mysqli::$warning_count — Returns the number of warnings from the last query for the given link
MySQLi扩展功能概述
mysqli::$affected_rows
Mysqli


Gets the number of affected rows in a previous MySQL operation

MySQLi
mysqli::autocommit
MySQLi
PHP Manual

mysqli::$affected_rows

mysqli_affected_rows

(PHP 5, PHP 7)

mysqli::$affected_rows -- mysqli_affected_rows — Gets the number of affected rows in a previous MySQL operation

说明

面向对象风格

int $mysqli->affected_rows;

过程化风格

int mysqli_affected_rows ( mysqli $link )

Returns the number of rows affected by the last INSERT, UPDATE, REPLACE or DELETE query.

For SELECT statements mysqli_affected_rows() works like mysqli_num_rows().

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

An integer greater than zero indicates the number of rows affected or retrieved. Zero indicates that no records were updated for an UPDATE statement, no rows matched the WHERE clause in the query or that no query has yet been executed. -1 indicates that the query returned an error.

Note:

If the number of affected rows is greater than the maximum integer value( PHP_INT_MAX ), the number of affected rows will be returned as a string.

范例

Example #1 $mysqli->affected_rows example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* Insert rows */
$mysqli->query("CREATE TABLE Language SELECT * from CountryLanguage");
printf("Affected rows (INSERT): %d\n", $mysqli->affected_rows);

$mysqli->query("ALTER TABLE Language ADD Status int default 0");

/* update rows */
$mysqli->query("UPDATE Language SET Status=1 WHERE Percentage > 50");
printf("Affected rows (UPDATE): %d\n", $mysqli->affected_rows);

/* delete rows */
$mysqli->query("DELETE FROM Language WHERE Percentage < 50");
printf("Affected rows (DELETE): %d\n", $mysqli->affected_rows);

/* select all rows */
$result = $mysqli->query("SELECT CountryCode FROM Language");
printf("Affected rows (SELECT): %d\n", $mysqli->affected_rows);

$result->close();

/* Delete table Language */
$mysqli->query("DROP TABLE Language");

/* close connection */
$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

if (!$link) {
    printf("Can't connect to localhost. Error: %s\n", mysqli_connect_error());
    exit();
}

/* Insert rows */
mysqli_query($link, "CREATE TABLE Language SELECT * from CountryLanguage");
printf("Affected rows (INSERT): %d\n", mysqli_affected_rows($link));

mysqli_query($link, "ALTER TABLE Language ADD Status int default 0");

/* update rows */
mysqli_query($link, "UPDATE Language SET Status=1 WHERE Percentage > 50");
printf("Affected rows (UPDATE): %d\n", mysqli_affected_rows($link));

/* delete rows */
mysqli_query($link, "DELETE FROM Language WHERE Percentage < 50");
printf("Affected rows (DELETE): %d\n", mysqli_affected_rows($link));

/* select all rows */
$result = mysqli_query($link, "SELECT CountryCode FROM Language");
printf("Affected rows (SELECT): %d\n", mysqli_affected_rows($link));

mysqli_free_result($result);

/* Delete table Language */
mysqli_query($link, "DROP TABLE Language");

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Affected rows (INSERT): 984
Affected rows (UPDATE): 168
Affected rows (DELETE): 815
Affected rows (SELECT): 169

参见

  • mysqli_num_rows() - Gets the number of rows in a result
  • mysqli_info() - Retrieves information about the most recently executed query

MySQLi
mysqli::autocommit
MySQLi


打开或关闭本次数据库连接的自动命令提交事务模式

mysqli::$affected_rows
mysqli::begin_transaction
MySQLi
PHP Manual

mysqli::autocommit

mysqli_autocommit

(PHP 5, PHP 7)

mysqli::autocommit -- mysqli_autocommit — 打开或关闭本次数据库连接的自动命令提交事务模式

说明

面向对象风格

bool mysqli::autocommit ( bool $mode )

过程化风格

bool mysqli_autocommit ( mysqli $link , bool $mode )

打开或关闭本次数据库连接的自动命令提交事务模式。

如需要确认当前连接的自动事务提交状态，可执行这个SQL请求SELECT @@autocommit.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

mode

Whether to turn on auto-commit or not.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note:

这个方法不会在不支持事务处理的表单查询中生效，如MyISAM或 ISAM。

范例

Example #1 mysqli::autocommit() example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* turn autocommit on */
$mysqli->autocommit(TRUE);

if ($result = $mysqli->query("SELECT @@autocommit")) {
    $row = $result->fetch_row();
    printf("Autocommit is %s\n", $row[0]);
    $result->free();
}

/* close connection */
$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

if (!$link) {
    printf("Can't connect to localhost. Error: %s\n", mysqli_connect_error());
    exit();
}

/* turn autocommit on */
mysqli_autocommit($link, TRUE);

if ($result = mysqli_query($link, "SELECT @@autocommit")) {
    $row = mysqli_fetch_row($result);
    printf("Autocommit is %s\n", $row[0]);
    mysqli_free_result($result);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Autocommit is 1

参见

  • mysqli_commit() - 提交一个事务
  • mysqli_rollback() - 回退当前事务

mysqli::$affected_rows
mysqli::begin_transaction
MySQLi


Starts a transaction

mysqli::autocommit
mysqli::change_user
MySQLi
PHP Manual

mysqli::begin_transaction

mysqli_begin_transaction

(PHP 5 >= 5.5.0, PHP 7)

mysqli::begin_transaction -- mysqli_begin_transaction — Starts a transaction

说明

面向对象风格 (method):

public bool mysqli::begin_transaction ([ int $flags [, string $name ]] )

过程化风格:

bool mysqli_begin_transaction ( mysqli $link [, int $flags [, string $name ]] )

Begins a transaction. Requires MySQL 5.6 and above, and the InnoDB engine (it is enabled by default). For additional details about how MySQL transactions work, see » http://dev.mysql.com/doc/mysql/en/commit.html.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

flags

Valid flags are:

  • MYSQLI_TRANS_START_READ_ONLY: Start the transaction as "START TRANSACTION READ ONLY".

  • MYSQLI_TRANS_START_READ_WRITE: Start the transaction as "START TRANSACTION READ WRITE".

  • MYSQLI_TRANS_START_WITH_CONSISTENT_SNAPSHOT: Start the transaction as "START TRANSACTION WITH CONSISTENT SNAPSHOT".

name

Savepoint name for the transaction.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 $mysqli->begin_transaction() example

面向对象风格

<?php
$mysqli = new mysqli("127.0.0.1", "my_user", "my_password", "sakila");

if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

$mysqli->begin_transaction(MYSQLI_TRANS_START_READ_ONLY);

$mysqli->query("SELECT first_name, last_name FROM actor");
$mysqli->commit();

$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "sakila");

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

mysqli_begin_transaction($link, MYSQLI_TRANS_START_READ_ONLY);

mysqli_query($link, "SELECT first_name, last_name FROM actor LIMIT 1");
mysqli_commit($link);

mysqli_close($link);
?>

参见

  • mysqli_autocommit() - 打开或关闭本次数据库连接的自动命令提交事务模式
  • mysqli_commit() - 提交一个事务
  • mysqli_rollback() - 回退当前事务

mysqli::autocommit
mysqli::change_user
MySQLi


Changes the user of the specified database connection

mysqli::begin_transaction
mysqli::character_set_name
MySQLi
PHP Manual

mysqli::change_user

mysqli_change_user

(PHP 5, PHP 7)

mysqli::change_user -- mysqli_change_user — Changes the user of the specified database connection

说明

面向对象风格

bool mysqli::change_user ( string $user , string $password , string $database )

过程化风格

bool mysqli_change_user ( mysqli $link , string $user , string $password , string $database )

Changes the user of the specified database connection and sets the current database.

In order to successfully change users a valid username and password parameters must be provided and that user must have sufficient permissions to access the desired database. If for any reason authorization fails, the current user authentication will remain.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

user

The MySQL user name.

password

The MySQL password.

database

The database to change to.

If desired, the NULL value may be passed resulting in only changing the user and not selecting a database. To select a database in this case use the mysqli_select_db() function.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note:

Using this command will always cause the current database connection to behave as if was a completely new database connection, regardless of if the operation was completed successfully. This reset includes performing a rollback on any active transactions, closing all temporary tables, and unlocking all locked tables.

范例

Example #1 mysqli::change_user() example

面向对象风格

<?php

/* connect database test */
$mysqli = new mysqli("localhost", "my_user", "my_password", "test");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* Set Variable a */
$mysqli->query("SET @a:=1");

/* reset all and select a new database */
$mysqli->change_user("my_user", "my_password", "world");

if ($result = $mysqli->query("SELECT DATABASE()")) {
    $row = $result->fetch_row();
    printf("Default database: %s\n", $row[0]);
    $result->close();
}

if ($result = $mysqli->query("SELECT @a")) {
    $row = $result->fetch_row();
    if ($row[0] === NULL) {
        printf("Value of variable a is NULL\n");
    }
    $result->close();
}

/* close connection */
$mysqli->close();
?>

过程化风格

<?php
/* connect database test */
$link = mysqli_connect("localhost", "my_user", "my_password", "test");

/* check connection */
if (!$link) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* Set Variable a */
mysqli_query($link, "SET @a:=1");

/* reset all and select a new database */
mysqli_change_user($link, "my_user", "my_password", "world");

if ($result = mysqli_query($link, "SELECT DATABASE()")) {
    $row = mysqli_fetch_row($result);
    printf("Default database: %s\n", $row[0]);
    mysqli_free_result($result);
}

if ($result = mysqli_query($link, "SELECT @a")) {
    $row = mysqli_fetch_row($result);
    if ($row[0] === NULL) {
        printf("Value of variable a is NULL\n");
    }
    mysqli_free_result($result);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Default database: world
Value of variable a is NULL

参见

  • mysqli_connect() - 别名 mysqli::__construct
  • mysqli_select_db() - 选择用于数据库查询的默认数据库

mysqli::begin_transaction
mysqli::character_set_name
MySQLi


返回当前数据库连接的默认字符编码

mysqli::change_user
mysqli::$client_info
MySQLi
PHP Manual

mysqli::character_set_name

mysqli_character_set_name

(PHP 5, PHP 7)

mysqli::character_set_name -- mysqli_character_set_name — 返回当前数据库连接的默认字符编码

说明

面向对象风格

string mysqli::character_set_name ( void )

过程化风格

string mysqli_character_set_name ( mysqli $link )

返回当前数据库连接的默认字符编码。

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

The default character set for the current connection

范例

Example #1 mysqli::character_set_name() example

面向对象风格

<?php
/* Open a connection */
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* Print current character set */
$charset = $mysqli->character_set_name();
printf ("Current character set is %s\n", $charset);

$mysqli->close();
?>

过程化风格

<?php
/* Open a connection */
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (!$link) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* Print current character set */
$charset = mysqli_character_set_name($link);
printf ("Current character set is %s\n",$charset);

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Current character set is latin1_swedish_ci

参见

  • mysqli_set_charset() - 设置默认字符编码
  • mysqli_client_encoding() - mysqli_character_set_name的别名
  • mysqli_real_escape_string() - Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection

mysqli::change_user
mysqli::$client_info
MySQLi


Get MySQL client info

mysqli::character_set_name
mysqli::$client_version
MySQLi
PHP Manual

mysqli::$client_info

mysqli_get_client_info

(PHP 5, PHP 7)

mysqli::$client_info -- mysqli_get_client_info — Get MySQL client info

说明

面向对象风格

string $mysqli->client_info;

过程化风格

string mysqli_get_client_info ( mysqli $link )

Returns a string that represents the MySQL client library version.

返回值

A string that represents the MySQL client library version

范例

Example #1 mysqli_get_client_info

<?php

/* We don't need a connection to determine
   the version of mysql client library */

printf("Client library version: %s\n", mysqli_get_client_info());
?>

参见

  • mysqli_get_client_version() - 作为一个整数返回MySQL客户端的版本
  • mysqli_get_server_info() - 返回MySQL服务器的版本号
  • mysqli_get_server_version() - 作为一个整数返回MySQL服务器的版本

mysqli::character_set_name
mysqli::$client_version
MySQLi


Returns the MySQL client version as a string

mysqli::$client_info
mysqli::close
MySQLi
PHP Manual

mysqli::$client_version

mysqli_get_client_version

(PHP 5, PHP 7)

mysqli::$client_version -- mysqli_get_client_version — Returns the MySQL client version as a string

说明

面向对象风格

int $mysqli->client_version;

过程化风格

int mysqli_get_client_version ( mysqli $link )

Returns client version number as an integer.

返回值

A number that represents the MySQL client library version in format: main_version*10000 + minor_version *100 + sub_version. For example, 4.1.0 is returned as 40100.

This is useful to quickly determine the version of the client library to know if some capability exists.

范例

Example #1 mysqli_get_client_version

<?php

/* We don't need a connection to determine
   the version of mysql client library */

printf("Client library version: %d\n", mysqli_get_client_version());
?>

参见

  • mysqli_get_client_info() - Get MySQL client info
  • mysqli_get_server_info() - 返回MySQL服务器的版本号
  • mysqli_get_server_version() - 作为一个整数返回MySQL服务器的版本

mysqli::$client_info
mysqli::close
MySQLi


关闭先前打开的数据库连接

mysqli::$client_version
mysqli::commit
MySQLi
PHP Manual

mysqli::close

mysqli_close

(PHP 5, PHP 7)

mysqli::close -- mysqli_close — 关闭先前打开的数据库连接

说明

面向对象风格

bool mysqli::close ( void )

过程化风格

bool mysqli_close ( mysqli $link )

关闭先前打开的数据库连接

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

See mysqli_connect().

参见

  • mysqli::__construct() - Open a new connection to the MySQL server
  • mysqli_init() - Initializes MySQLi and returns a resource for use with mysqli_real_connect()
  • mysqli_real_connect() - 建立一个 MySQL 服务器连接

mysqli::$client_version
mysqli::commit
MySQLi


提交一个事务

mysqli::close
mysqli::$connect_errno
MySQLi
PHP Manual

mysqli::commit

mysqli_commit

(PHP 5, PHP 7)

mysqli::commit -- mysqli_commit — 提交一个事务

说明

面向对象风格

bool mysqli::commit ( void )

过程化风格

bool mysqli_commit ( mysqli $link )

提交数据库连接的当前事务

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 mysqli::commit() example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$mysqli->query("CREATE TABLE Language LIKE CountryLanguage");

/* set autocommit to off */
$mysqli->autocommit(FALSE);

/* Insert some values */
$mysqli->query("INSERT INTO Language VALUES ('DEU', 'Bavarian', 'F', 11.2)");
$mysqli->query("INSERT INTO Language VALUES ('DEU', 'Swabian', 'F', 9.4)");

/* commit transaction */
$mysqli->commit();

/* drop table */
$mysqli->query("DROP TABLE Language");

/* close connection */
$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "test");

/* check connection */
if (!$link) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* set autocommit to off */
mysqli_autocommit($link, FALSE);

mysqli_query($link, "CREATE TABLE Language LIKE CountryLanguage");

/* Insert some values */
mysqli_query($link, "INSERT INTO Language VALUES ('DEU', 'Bavarian', 'F', 11.2)");
mysqli_query($link, "INSERT INTO Language VALUES ('DEU', 'Swabian', 'F', 9.4)");

/* commit transaction */
mysqli_commit($link);

/* close connection */
mysqli_close($link);
?>

参见

  • mysqli_autocommit() - 打开或关闭本次数据库连接的自动命令提交事务模式
  • mysqli_rollback() - 回退当前事务

mysqli::close
mysqli::$connect_errno
MySQLi


Returns the error code from last connect call

mysqli::commit
mysqli::$connect_error
MySQLi
PHP Manual

mysqli::$connect_errno

mysqli_connect_errno

(PHP 5, PHP 7)

mysqli::$connect_errno -- mysqli_connect_errno — Returns the error code from last connect call

说明

面向对象风格

int $mysqli->connect_errno;

过程化风格

int mysqli_connect_errno ( void )

Returns the last error code number from the last call to mysqli_connect().

Note:

Client error message numbers are listed in the MySQL errmsg.h header file, server error message numbers are listed in mysqld_error.h. In the MySQL source distribution you can find a complete list of error messages and error numbers in the file Docs/mysqld_error.txt.

返回值

An error code value for the last call to mysqli_connect(), if it failed. zero means no error occurred.

范例

Example #1 $mysqli->connect_errno example

面向对象风格

<?php
$mysqli = @new mysqli('localhost', 'fake_user', 'my_password', 'my_db');

if ($mysqli->connect_errno) {
    die('Connect Error: ' . $mysqli->connect_errno);
}
?>

过程化风格

<?php
$link = @mysqli_connect('localhost', 'fake_user', 'my_password', 'my_db');

if (!$link) {
    die('Connect Error: ' . mysqli_connect_errno());
}
?>

以上例程会输出：

Connect Error: 1045

参见

  • mysqli_connect() - 别名 mysqli::__construct
  • mysqli_connect_error() - Returns a string description of the last connect error
  • mysqli_errno() - 返回最近函数调用的错误代码
  • mysqli_error() - Returns a string description of the last error
  • mysqli_sqlstate() - Returns the SQLSTATE error from previous MySQL operation

mysqli::commit
mysqli::$connect_error
MySQLi


Returns a string description of the last connect error

mysqli::$connect_errno
mysqli::__construct
MySQLi
PHP Manual

mysqli::$connect_error

mysqli_connect_error

(PHP 5, PHP 7)

mysqli::$connect_error -- mysqli_connect_error — Returns a string description of the last connect error

说明

面向对象风格

string $mysqli->connect_error;

过程化风格

string mysqli_connect_error ( void )

Returns the last error message string from the last call to mysqli_connect().

返回值

A string that describes the error. NULL is returned if no error occurred.

范例

Example #1 $mysqli->connect_error example

面向对象风格

<?php
$mysqli = @new mysqli('localhost', 'fake_user', 'my_password', 'my_db');

// Works as of PHP 5.2.9 and 5.3.0.
if ($mysqli->connect_error) {
    die('Connect Error: ' . $mysqli->connect_error);
}
?>

过程化风格

<?php
$link = @mysqli_connect('localhost', 'fake_user', 'my_password', 'my_db');

if (!$link) {
    die('Connect Error: ' . mysqli_connect_error());
}
?>

以上例程会输出：

Connect Error: Access denied for user 'fake_user'@'localhost' (using password: YES)

注释

Warning

The mysqli->connect_error property only works properly as of PHP versions 5.2.9 and 5.3.0. Use the mysqli_connect_error() function if compatibility with earlier PHP versions is required.

参见

  • mysqli_connect() - 别名 mysqli::__construct
  • mysqli_connect_errno() - Returns the error code from last connect call
  • mysqli_errno() - 返回最近函数调用的错误代码
  • mysqli_error() - Returns a string description of the last error
  • mysqli_sqlstate() - Returns the SQLSTATE error from previous MySQL operation

mysqli::$connect_errno
mysqli::__construct
MySQLi


Open a new connection to the MySQL server

mysqli::$connect_error
mysqli::debug
MySQLi
PHP Manual

mysqli::__construct

mysqli_connect

(PHP 5, PHP 7)

mysqli::__construct -- mysqli_connect — Open a new connection to the MySQL server

说明

面向对象风格

 mysqli::__construct
  ([ string $host = ini_get("mysqli.default_host")
 [, string $username = ini_get("mysqli.default_user")
 [, string $passwd = ini_get("mysqli.default_pw")
 [, string $dbname = ""
 [, int $port = ini_get("mysqli.default_port")
 [, string $socket = ini_get("mysqli.default_socket")
]]]]]] )

过程化风格

 mysqli mysqli_connect
  ([ string $host = ini_get("mysqli.default_host")
 [, string $username = ini_get("mysqli.default_user")
 [, string $passwd = ini_get("mysqli.default_pw")
 [, string $dbname = ""
 [, int $port = ini_get("mysqli.default_port")
 [, string $socket = ini_get("mysqli.default_socket")
]]]]]] )

Opens a connection to the MySQL Server running on.

参数

host

Can be either a host name or an IP address. Passing the NULL value or the string "localhost" to this parameter, the local host is assumed. When possible, pipes will be used instead of the TCP/IP protocol.

Prepending host by p: opens a persistent connection. mysqli_change_user() is automatically called on connections opened from the connection pool.

username

The MySQL user name.

passwd

If not provided or NULL, the MySQL server will attempt to authenticate the user against those user records which have no password only. This allows one username to be used with different permissions (depending on if a password as provided or not).

dbname

If provided will specify the default database to be used when performing queries.

port

Specifies the port number to attempt to connect to the MySQL server.

socket

Specifies the socket or named pipe that should be used.

Note:

Specifying the socket parameter will not explicitly determine the type of connection to be used when connecting to the MySQL server. How the connection is made to the MySQL database is determined by the host parameter.

返回值

Returns an object which represents the connection to a MySQL Server.

更新日志

版本 | 说明
5.3.0 | Added the ability of persistent connections.

范例

Example #1 mysqli::__construct() example

面向对象风格

<?php
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');

/*
 * This is the "official" OO way to do it,
 * BUT $connect_error was broken until PHP 5.2.9 and 5.3.0.
 */
if ($mysqli->connect_error) {
    die('Connect Error (' . $mysqli->connect_errno . ') '
            . $mysqli->connect_error);
}

/*
 * Use this instead of $connect_error if you need to ensure
 * compatibility with PHP versions prior to 5.2.9 and 5.3.0.
 */
if (mysqli_connect_error()) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}

echo 'Success... ' . $mysqli->host_info . "\n";

$mysqli->close();
?>

面向对象风格 when extending mysqli class

<?php

class foo_mysqli extends mysqli {
    public function __construct($host, $user, $pass, $db) {
        parent::__construct($host, $user, $pass, $db);

        if (mysqli_connect_error()) {
            die('Connect Error (' . mysqli_connect_errno() . ') '
                    . mysqli_connect_error());
        }
    }
}

$db = new foo_mysqli('localhost', 'my_user', 'my_password', 'my_db');

echo 'Success... ' . $db->host_info . "\n";

$db->close();
?>

过程化风格

<?php
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');

if (!$link) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}

echo 'Success... ' . mysqli_get_host_info($link) . "\n";

mysqli_close($link);
?>

以上例程会输出：

Success... MySQL host info: localhost via TCP/IP

注释

Note:

MySQLnd 总是使用服务器的默认字符集。此字符集在连接握手／认证时发送，并被 mysqlnd 使用。

Libmysqlclient 使用 my.cnf 中的默认字符集或者由在调用 mysqli_init() 之后，mysqli_real_connect() 之前先调用 mysqli_options() 来指定。

Note:

OO syntax only: If a connection fails an object is still returned. To check if the connection failed then use either the mysqli_connect_error() function or the mysqli->connect_error property as in the preceding examples.

Note:

If it is necessary to set options, such as the connection timeout, mysqli_real_connect() must be used instead.

Note:

Calling the constructor with no parameters is the same as calling mysqli_init().

Note:

Error "Can't create TCP/IP socket (10106)" usually means that the variables_order configure directive doesn't contain character E. On Windows, if the environment is not copied the SYSTEMROOT environment variable won't be available and PHP will have problems loading Winsock.

参见

  • mysqli_real_connect() - 建立一个 MySQL 服务器连接
  • mysqli_options() - Set options
  • mysqli_connect_errno() - Returns the error code from last connect call
  • mysqli_connect_error() - Returns a string description of the last connect error
  • mysqli_close() - 关闭先前打开的数据库连接

mysqli::$connect_error
mysqli::debug
MySQLi


Performs debugging operations

mysqli::__construct
mysqli::dump_debug_info
MySQLi
PHP Manual

mysqli::debug

mysqli_debug

(PHP 5, PHP 7)

mysqli::debug -- mysqli_debug — Performs debugging operations

说明

面向对象风格

bool mysqli::debug ( string $message )

过程化风格

bool mysqli_debug ( string $message )

Performs debugging operations using the Fred Fish debugging library.

参数

message

A string representing the debugging operation to perform

返回值

Returns TRUE.

注释

Note:

To use the mysqli_debug() function you must compile the MySQL client library to support debugging.

范例

Example #1 Generating a Trace File

<?php

/* Create a trace file in '/tmp/client.trace' on the local (client) machine: */
mysqli_debug("d:t:o,/tmp/client.trace");

?>

参见

  • mysqli_dump_debug_info() - 将调试信息输出到日志
  • mysqli_report() - 开启或禁用（Mysql）内部（错误）报告函数

mysqli::__construct
mysqli::dump_debug_info
MySQLi


将调试信息输出到日志

mysqli::debug
mysqli::errno
MySQLi
PHP Manual

mysqli::dump_debug_info

mysqli_dump_debug_info

(PHP 5, PHP 7)

mysqli::dump_debug_info -- mysqli_dump_debug_info — 将调试信息输出到日志

说明

面向对象风格

bool mysqli::dump_debug_info ( void )

过程化风格

bool mysqli_dump_debug_info ( mysqli $link )

这个函数设计用于超级权限用户执行将调试信息输出到连接相关的MySQL服务端日志

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • mysqli_debug() - Performs debugging operations

mysqli::debug
mysqli::errno
MySQLi


返回最近函数调用的错误代码

mysqli::dump_debug_info
mysqli::$error_list
MySQLi
PHP Manual

mysqli::errno

mysqli_errno

(PHP 5, PHP 7)

mysqli::errno -- mysqli_errno — 返回最近函数调用的错误代码

说明

面向对象风格

int $errno;

过程化风格

int mysqli_errno ( mysqli $link )

返回最近的mysqli函数调用产生的错误代码.

客户端错误在Mysqlerrmsg.h头文件中列出, 服务端错误好在mysqld_error.h中列出. 在mysql源码分发包中的Docs/mysqld_error.txt你可以发现一个完整的错误消息和错误号.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

最后一次调用产生的错误代码, 返回0代表没有错误发生.

范例

Example #1 mysqli->errno example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* 检查连接 */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if (!$mysqli->query("SET a=1")) {
    printf("Errorcode: %d\n", $mysqli->errno);
}

/* 关闭连接 */
$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* 检查连接 */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if (!mysqli_query($link, "SET a=1")) {
    printf("Errorcode: %d\n", mysqli_errno($link));
}

/* 关闭连接 */
mysqli_close($link);
?>

以上例程会输出：

Errorcode: 1193

参见

  • mysqli_connect_errno() - Returns the error code from last connect call
  • mysqli_connect_error() - Returns a string description of the last connect error
  • mysqli_error() - Returns a string description of the last error
  • mysqli_sqlstate() - Returns the SQLSTATE error from previous MySQL operation

mysqli::dump_debug_info
mysqli::$error_list
MySQLi


Returns a list of errors from the last command executed

mysqli::errno
mysqli::$error
MySQLi
PHP Manual

mysqli::$error_list

mysqli_error_list

(PHP 5 >= 5.4.0, PHP 7)

mysqli::$error_list -- mysqli_error_list — Returns a list of errors from the last command executed

说明

面向对象风格

array $mysqli->error_list;

过程化风格

array mysqli_error_list ( mysqli $link )

Returns a array of errors for the most recent MySQLi function call that can succeed or fail.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

A list of errors, each as an associative array containing the errno, error, and sqlstate.

范例

Example #1 $mysqli->error_list example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "nobody", "");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if (!$mysqli->query("SET a=1")) {
    print_r($mysqli->error_list);
}

/* close connection */
$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if (!mysqli_query($link, "SET a=1")) {
    print_r(mysqli_error_list($link));
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Array
(
    [0] => Array
        (
            [errno] => 1193
            [sqlstate] => HY000
            [error] => Unknown system variable 'a'
        )

)

参见

  • mysqli_connect_errno() - Returns the error code from last connect call
  • mysqli_connect_error() - Returns a string description of the last connect error
  • mysqli_error() - Returns a string description of the last error
  • mysqli_sqlstate() - Returns the SQLSTATE error from previous MySQL operation

mysqli::errno
mysqli::$error
MySQLi


Returns a string description of the last error

mysqli::$error_list
mysqli::$field_count
MySQLi
PHP Manual

mysqli::$error

mysqli_error

(PHP 5, PHP 7)

mysqli::$error -- mysqli_error — Returns a string description of the last error

说明

面向对象风格

string $mysqli->error;

过程化风格

string mysqli_error ( mysqli $link )

Returns the last error message for the most recent MySQLi function call that can succeed or fail.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

A string that describes the error. An empty string if no error occurred.

范例

Example #1 $mysqli->error example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

if (!$mysqli->query("SET a=1")) {
    printf("Errormessage: %s\n", $mysqli->error);
}

/* close connection */
$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if (!mysqli_query($link, "SET a=1")) {
    printf("Errormessage: %s\n", mysqli_error($link));
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Errormessage: Unknown system variable 'a'

参见

  • mysqli_connect_errno() - Returns the error code from last connect call
  • mysqli_connect_error() - Returns a string description of the last connect error
  • mysqli_errno() - 返回最近函数调用的错误代码
  • mysqli_sqlstate() - Returns the SQLSTATE error from previous MySQL operation

mysqli::$error_list
mysqli::$field_count
MySQLi


Returns the number of columns for the most recent query

mysqli::$error
mysqli::get_charset
MySQLi
PHP Manual

mysqli::$field_count

mysqli_field_count

(PHP 5, PHP 7)

mysqli::$field_count -- mysqli_field_count — Returns the number of columns for the most recent query

说明

面向对象风格

int $mysqli->field_count;

过程化风格

int mysqli_field_count ( mysqli $link )

Returns the number of columns for the most recent query on the connection represented by the link parameter. This function can be useful when using the mysqli_store_result() function to determine if the query should have produced a non-empty result set or not without knowing the nature of the query.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

An integer representing the number of fields in a result set.

范例

Example #1 $mysqli->field_count example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "test");

$mysqli->query( "DROP TABLE IF EXISTS friends");
$mysqli->query( "CREATE TABLE friends (id int, name varchar(20))");

$mysqli->query( "INSERT INTO friends VALUES (1,'Hartmut'), (2, 'Ulf')");

$mysqli->real_query("SELECT * FROM friends");

if ($mysqli->field_count) {
    /* this was a select/show or describe query */
    $result = $mysqli->store_result();

    /* process resultset */
    $row = $result->fetch_row();

    /* free resultset */
    $result->close();
}

/* close connection */
$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "test");

mysqli_query($link, "DROP TABLE IF EXISTS friends");
mysqli_query($link, "CREATE TABLE friends (id int, name varchar(20))");

mysqli_query($link, "INSERT INTO friends VALUES (1,'Hartmut'), (2, 'Ulf')");

mysqli_real_query($link, "SELECT * FROM friends");

if (mysqli_field_count($link)) {
    /* this was a select/show or describe query */
    $result = mysqli_store_result($link);

    /* process resultset */
    $row = mysqli_fetch_row($result);

    /* free resultset */
    mysqli_free_result($result);
}

/* close connection */
mysqli_close($link);
?>
mysqli::$error
mysqli::get_charset
MySQLi


Returns a character set object

mysqli::$field_count
mysqli::get_client_info
MySQLi
PHP Manual

mysqli::get_charset

mysqli_get_charset

(PHP 5 >= 5.1.0, PHP 7)

mysqli::get_charset -- mysqli_get_charset — Returns a character set object

说明

面向对象风格

object mysqli::get_charset ( void )

过程化风格

object mysqli_get_charset ( mysqli $link )

Returns a character set object providing several properties of the current active character set.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

The function returns a character set object with the following properties:

charset

Character set name

collation

Collation name

dir

Directory the charset description was fetched from (?) or "" for built-in character sets

min_length

Minimum character length in bytes

max_length

Maximum character length in bytes

number

Internal character set number

state

Character set status (?)

范例

Example #1 mysqli::get_charset() example

面向对象风格

<?php
  $db = mysqli_init();
  $db->real_connect("localhost","root","","test");
  var_dump($db->get_charset());
?>

过程化风格

<?php
  $db = mysqli_init();
  mysqli_real_connect($db, "localhost","root","","test");
  var_dump(mysqli_get_charset($db));
?>

以上例程会输出：

object(stdClass)#2 (7) {
  ["charset"]=>
  string(6) "latin1"
  ["collation"]=>
  string(17) "latin1_swedish_ci"
  ["dir"]=>
  string(0) ""
  ["min_length"]=>
  int(1)
  ["max_length"]=>
  int(1)
  ["number"]=>
  int(8)
  ["state"]=>
  int(801)
}

参见

  • mysqli_character_set_name() - 返回当前数据库连接的默认字符编码
  • mysqli_set_charset() - 设置默认字符编码

mysqli::$field_count
mysqli::get_client_info
MySQLi


Get MySQL client info

mysqli::get_charset
mysqli_get_client_stats
MySQLi
PHP Manual

mysqli::get_client_info

mysqli_get_client_info

(PHP 5, PHP 7)

mysqli::get_client_info -- mysqli_get_client_info — Get MySQL client info

说明

面向对象风格

string mysqli::get_client_info ( void )

过程化风格

string mysqli_get_client_info ( mysqli $link )

Returns a string that represents the MySQL client library version.

返回值

A string that represents the MySQL client library version

范例

Example #1 mysqli_get_client_info

<?php

/* We don't need a connection to determine
   the version of mysql client library */

printf("Client library version: %s\n", mysqli_get_client_info());
?>

参见

  • mysqli_get_client_version() - 作为一个整数返回MySQL客户端的版本
  • mysqli_get_server_info() - 返回MySQL服务器的版本号
  • mysqli_get_server_version() - 作为一个整数返回MySQL服务器的版本

mysqli::get_charset
mysqli_get_client_stats
MySQLi


Returns client per-process statistics

mysqli::get_client_info
mysqli_get_client_version
MySQLi
PHP Manual

mysqli_get_client_stats

(PHP 5 >= 5.3.0, PHP 7)

mysqli_get_client_stats — Returns client per-process statistics

说明

array mysqli_get_client_stats ( void )

Returns client per-process statistics. 仅可用于 mysqlnd。

参数

返回值

Returns an array with client stats if success, FALSE otherwise.

范例

Example #1 A mysqli_get_client_stats() example

<?php
$link = mysqli_connect();
print_r(mysqli_get_client_stats());
?>

以上例程的输出类似于：

Array
(
    [bytes_sent] => 43
    [bytes_received] => 80
    [packets_sent] => 1
    [packets_received] => 2
    [protocol_overhead_in] => 8
    [protocol_overhead_out] => 4
    [bytes_received_ok_packet] => 11
    [bytes_received_eof_packet] => 0
    [bytes_received_rset_header_packet] => 0
    [bytes_received_rset_field_meta_packet] => 0
    [bytes_received_rset_row_packet] => 0
    [bytes_received_prepare_response_packet] => 0
    [bytes_received_change_user_packet] => 0
    [packets_sent_command] => 0
    [packets_received_ok] => 1
    [packets_received_eof] => 0
    [packets_received_rset_header] => 0
    [packets_received_rset_field_meta] => 0
    [packets_received_rset_row] => 0
    [packets_received_prepare_response] => 0
    [packets_received_change_user] => 0
    [result_set_queries] => 0
    [non_result_set_queries] => 0
    [no_index_used] => 0
    [bad_index_used] => 0
    [slow_queries] => 0
    [buffered_sets] => 0
    [unbuffered_sets] => 0
    [ps_buffered_sets] => 0
    [ps_unbuffered_sets] => 0
    [flushed_normal_sets] => 0
    [flushed_ps_sets] => 0
    [ps_prepared_never_executed] => 0
    [ps_prepared_once_executed] => 0
    [rows_fetched_from_server_normal] => 0
    [rows_fetched_from_server_ps] => 0
    [rows_buffered_from_client_normal] => 0
    [rows_buffered_from_client_ps] => 0
    [rows_fetched_from_client_normal_buffered] => 0
    [rows_fetched_from_client_normal_unbuffered] => 0
    [rows_fetched_from_client_ps_buffered] => 0
    [rows_fetched_from_client_ps_unbuffered] => 0
    [rows_fetched_from_client_ps_cursor] => 0
    [rows_skipped_normal] => 0
    [rows_skipped_ps] => 0
    [copy_on_write_saved] => 0
    [copy_on_write_performed] => 0
    [command_buffer_too_small] => 0
    [connect_success] => 1
    [connect_failure] => 0
    [connection_reused] => 0
    [reconnect] => 0
    [pconnect_success] => 0
    [active_connections] => 1
    [active_persistent_connections] => 0
    [explicit_close] => 0
    [implicit_close] => 0
    [disconnect_close] => 0
    [in_middle_of_command_close] => 0
    [explicit_free_result] => 0
    [implicit_free_result] => 0
    [explicit_stmt_close] => 0
    [implicit_stmt_close] => 0
    [mem_emalloc_count] => 0
    [mem_emalloc_ammount] => 0
    [mem_ecalloc_count] => 0
    [mem_ecalloc_ammount] => 0
    [mem_erealloc_count] => 0
    [mem_erealloc_ammount] => 0
    [mem_efree_count] => 0
    [mem_malloc_count] => 0
    [mem_malloc_ammount] => 0
    [mem_calloc_count] => 0
    [mem_calloc_ammount] => 0
    [mem_realloc_count] => 0
    [mem_realloc_ammount] => 0
    [mem_free_count] => 0
    [proto_text_fetched_null] => 0
    [proto_text_fetched_bit] => 0
    [proto_text_fetched_tinyint] => 0
    [proto_text_fetched_short] => 0
    [proto_text_fetched_int24] => 0
    [proto_text_fetched_int] => 0
    [proto_text_fetched_bigint] => 0
    [proto_text_fetched_decimal] => 0
    [proto_text_fetched_float] => 0
    [proto_text_fetched_double] => 0
    [proto_text_fetched_date] => 0
    [proto_text_fetched_year] => 0
    [proto_text_fetched_time] => 0
    [proto_text_fetched_datetime] => 0
    [proto_text_fetched_timestamp] => 0
    [proto_text_fetched_string] => 0
    [proto_text_fetched_blob] => 0
    [proto_text_fetched_enum] => 0
    [proto_text_fetched_set] => 0
    [proto_text_fetched_geometry] => 0
    [proto_text_fetched_other] => 0
    [proto_binary_fetched_null] => 0
    [proto_binary_fetched_bit] => 0
    [proto_binary_fetched_tinyint] => 0
    [proto_binary_fetched_short] => 0
    [proto_binary_fetched_int24] => 0
    [proto_binary_fetched_int] => 0
    [proto_binary_fetched_bigint] => 0
    [proto_binary_fetched_decimal] => 0
    [proto_binary_fetched_float] => 0
    [proto_binary_fetched_double] => 0
    [proto_binary_fetched_date] => 0
    [proto_binary_fetched_year] => 0
    [proto_binary_fetched_time] => 0
    [proto_binary_fetched_datetime] => 0
    [proto_binary_fetched_timestamp] => 0
    [proto_binary_fetched_string] => 0
    [proto_binary_fetched_blob] => 0
    [proto_binary_fetched_enum] => 0
    [proto_binary_fetched_set] => 0
    [proto_binary_fetched_geometry] => 0
    [proto_binary_fetched_other] => 0
)

参见

  • Stats description

mysqli::get_client_info
mysqli_get_client_version
MySQLi


作为一个整数返回MySQL客户端的版本

mysqli_get_client_stats
mysqli::get_connection_stats
MySQLi
PHP Manual

mysqli_get_client_version

mysqli::$client_version

(PHP 5, PHP 7)

mysqli_get_client_version -- mysqli::$client_version — 作为一个整数返回MySQL客户端的版本

说明

面向对象风格

int $mysqli->client_version;

过程化风格

int mysqli_get_client_version ( mysqli $link )

作为一个整数返回客户端版本号.

返回值

一个表述MySQL客户端库版本的数字的格式: main_version*10000 + minor_version *100 + sub_version. 举个例子： 4.1.0 将返回 40100.

这有助于快速确定客户端库的版本来辨别是否有某些特性存在.

范例

Example #1 mysqli_get_client_version

<?php

/* We don't need a connection to determine
   the version of mysql client library */

printf("Client library version: %d\n", mysqli_get_client_version());
?>

参见

  • mysqli_get_client_info() - Get MySQL client info
  • mysqli_get_server_info() - 返回MySQL服务器的版本号
  • mysqli_get_server_version() - 作为一个整数返回MySQL服务器的版本

mysqli_get_client_stats
mysqli::get_connection_stats
MySQLi


Returns statistics about the client connection

mysqli_get_client_version
mysqli::$host_info
MySQLi
PHP Manual

mysqli::get_connection_stats

mysqli_get_connection_stats

(PHP 5 >= 5.3.0, PHP 7)

mysqli::get_connection_stats -- mysqli_get_connection_stats — Returns statistics about the client connection

说明

面向对象风格

bool mysqli::get_connection_stats ( void )

过程化风格

array mysqli_get_connection_stats ( mysqli $link )

Returns statistics about the client connection. 仅可用于 mysqlnd。

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

Returns an array with connection stats if success, FALSE otherwise.

范例

Example #1 A mysqli_get_connection_stats() example

<?php
$link = mysqli_connect();
print_r(mysqli_get_connection_stats($link));
?>

以上例程的输出类似于：

Array
(
    [bytes_sent] => 43
    [bytes_received] => 80
    [packets_sent] => 1
    [packets_received] => 2
    [protocol_overhead_in] => 8
    [protocol_overhead_out] => 4
    [bytes_received_ok_packet] => 11
    [bytes_received_eof_packet] => 0
    [bytes_received_rset_header_packet] => 0
    [bytes_received_rset_field_meta_packet] => 0
    [bytes_received_rset_row_packet] => 0
    [bytes_received_prepare_response_packet] => 0
    [bytes_received_change_user_packet] => 0
    [packets_sent_command] => 0
    [packets_received_ok] => 1
    [packets_received_eof] => 0
    [packets_received_rset_header] => 0
    [packets_received_rset_field_meta] => 0
    [packets_received_rset_row] => 0
    [packets_received_prepare_response] => 0
    [packets_received_change_user] => 0
    [result_set_queries] => 0
    [non_result_set_queries] => 0
    [no_index_used] => 0
    [bad_index_used] => 0
    [slow_queries] => 0
    [buffered_sets] => 0
    [unbuffered_sets] => 0
    [ps_buffered_sets] => 0
    [ps_unbuffered_sets] => 0
    [flushed_normal_sets] => 0
    [flushed_ps_sets] => 0
    [ps_prepared_never_executed] => 0
    [ps_prepared_once_executed] => 0
    [rows_fetched_from_server_normal] => 0
    [rows_fetched_from_server_ps] => 0
    [rows_buffered_from_client_normal] => 0
    [rows_buffered_from_client_ps] => 0
    [rows_fetched_from_client_normal_buffered] => 0
    [rows_fetched_from_client_normal_unbuffered] => 0
    [rows_fetched_from_client_ps_buffered] => 0
    [rows_fetched_from_client_ps_unbuffered] => 0
    [rows_fetched_from_client_ps_cursor] => 0
    [rows_skipped_normal] => 0
    [rows_skipped_ps] => 0
    [copy_on_write_saved] => 0
    [copy_on_write_performed] => 0
    [command_buffer_too_small] => 0
    [connect_success] => 1
    [connect_failure] => 0
    [connection_reused] => 0
    [reconnect] => 0
    [pconnect_success] => 0
    [active_connections] => 1
    [active_persistent_connections] => 0
    [explicit_close] => 0
    [implicit_close] => 0
    [disconnect_close] => 0
    [in_middle_of_command_close] => 0
    [explicit_free_result] => 0
    [implicit_free_result] => 0
    [explicit_stmt_close] => 0
    [implicit_stmt_close] => 0
    [mem_emalloc_count] => 0
    [mem_emalloc_ammount] => 0
    [mem_ecalloc_count] => 0
    [mem_ecalloc_ammount] => 0
    [mem_erealloc_count] => 0
    [mem_erealloc_ammount] => 0
    [mem_efree_count] => 0
    [mem_malloc_count] => 0
    [mem_malloc_ammount] => 0
    [mem_calloc_count] => 0
    [mem_calloc_ammount] => 0
    [mem_realloc_count] => 0
    [mem_realloc_ammount] => 0
    [mem_free_count] => 0
    [proto_text_fetched_null] => 0
    [proto_text_fetched_bit] => 0
    [proto_text_fetched_tinyint] => 0
    [proto_text_fetched_short] => 0
    [proto_text_fetched_int24] => 0
    [proto_text_fetched_int] => 0
    [proto_text_fetched_bigint] => 0
    [proto_text_fetched_decimal] => 0
    [proto_text_fetched_float] => 0
    [proto_text_fetched_double] => 0
    [proto_text_fetched_date] => 0
    [proto_text_fetched_year] => 0
    [proto_text_fetched_time] => 0
    [proto_text_fetched_datetime] => 0
    [proto_text_fetched_timestamp] => 0
    [proto_text_fetched_string] => 0
    [proto_text_fetched_blob] => 0
    [proto_text_fetched_enum] => 0
    [proto_text_fetched_set] => 0
    [proto_text_fetched_geometry] => 0
    [proto_text_fetched_other] => 0
    [proto_binary_fetched_null] => 0
    [proto_binary_fetched_bit] => 0
    [proto_binary_fetched_tinyint] => 0
    [proto_binary_fetched_short] => 0
    [proto_binary_fetched_int24] => 0
    [proto_binary_fetched_int] => 0
    [proto_binary_fetched_bigint] => 0
    [proto_binary_fetched_decimal] => 0
    [proto_binary_fetched_float] => 0
    [proto_binary_fetched_double] => 0
    [proto_binary_fetched_date] => 0
    [proto_binary_fetched_year] => 0
    [proto_binary_fetched_time] => 0
    [proto_binary_fetched_datetime] => 0
    [proto_binary_fetched_timestamp] => 0
    [proto_binary_fetched_string] => 0
    [proto_binary_fetched_blob] => 0
    [proto_binary_fetched_enum] => 0
    [proto_binary_fetched_set] => 0
    [proto_binary_fetched_geometry] => 0
    [proto_binary_fetched_other] => 0
)

参见

  • Stats description

mysqli_get_client_version
mysqli::$host_info
MySQLi


返回一个表述使用的连接类型的字符串

mysqli::get_connection_stats
mysqli::$protocol_version
MySQLi
PHP Manual

mysqli::$host_info

mysqli_get_host_info

(PHP 5, PHP 7)

mysqli::$host_info -- mysqli_get_host_info — 返回一个表述使用的连接类型的字符串

说明

面向对象风格

string $mysqli->host_info;

过程化风格

string mysqli_get_host_info ( mysqli $link )

返回一个字符串，描述被link 参数所表述的连接 (包括服务器主机名).

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

一个特征字符串，表述服务器主机名和连接类型.

范例

Example #1 $mysqli->host_info example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* print host information */
printf("Host info: %s\n", $mysqli->host_info);

/* close connection */
$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* print host information */
printf("Host info: %s\n", mysqli_get_host_info($link));

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Host info: Localhost via UNIX socket

参见

  • mysqli_get_proto_info() - 返回MySQL使用的协议版本号

mysqli::get_connection_stats
mysqli::$protocol_version
MySQLi


返回MySQL使用的协议版本号

mysqli::$host_info
mysqli::$server_info
MySQLi
PHP Manual

mysqli::$protocol_version

mysqli_get_proto_info

(PHP 5, PHP 7)

mysqli::$protocol_version -- mysqli_get_proto_info — 返回MySQL使用的协议版本号

说明

面向对象风格

string $mysqli->protocol_version;

过程化风格

int mysqli_get_proto_info ( mysqli $link )

返回一个整数，表述 被link参数所表述的连接 所使用的MySQL协议的版本号.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

返回一个整数来表述协议的版本号.

范例

Example #1 $mysqli->protocol_version example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* print protocol version */
printf("Protocol version: %d\n", $mysqli->protocol_version);

/* close connection */
$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* print protocol version */
printf("Protocol version: %d\n", mysqli_get_proto_info($link));

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Protocol version: 10

参见

  • mysqli_get_host_info() - 返回一个表述使用的连接类型的字符串

mysqli::$host_info
mysqli::$server_info
MySQLi


返回MySQL服务器的版本号

mysqli::$protocol_version
mysqli::$server_version
MySQLi
PHP Manual

mysqli::$server_info

mysqli_get_server_info

(PHP 5, PHP 7)

mysqli::$server_info -- mysqli_get_server_info — 返回MySQL服务器的版本号

说明

面向对象风格

string $mysqli->server_info;

过程化风格

string mysqli_get_server_info ( mysqli $link )

返回一个字符串，表述MySQLi扩展连接的MySQL服务器的版本号.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

一个特征字符串，表述服务器的版本.

范例

Example #1 $mysqli->server_info example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* print server version */
printf("Server version: %s\n", $mysqli->server_info);

/* close connection */
$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* print server version */
printf("Server version: %s\n", mysqli_get_server_info($link));

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Server version: 4.1.2-alpha-debug

参见

  • mysqli_get_client_info() - Get MySQL client info
  • mysqli_get_client_version() - 作为一个整数返回MySQL客户端的版本
  • mysqli_get_server_version() - 作为一个整数返回MySQL服务器的版本

mysqli::$protocol_version
mysqli::$server_version
MySQLi


作为一个整数返回MySQL服务器的版本

mysqli::$server_info
mysqli::get_warnings
MySQLi
PHP Manual

mysqli::$server_version

mysqli_get_server_version

(PHP 5, PHP 7)

mysqli::$server_version -- mysqli_get_server_version — 作为一个整数返回MySQL服务器的版本

说明

面向对象风格

int $mysqli->server_version;

过程化风格

int mysqli_get_server_version ( mysqli $link )

mysqli_get_server_version()函数以整数的形式返回被连接的link参数所表述的服务器的版本.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

一个整数表述的服务器版本.

版本号的格式是 main_version * 10000 + minor_version * 100 + sub_version (例如： 版本 4.1.0 是 40100).

范例

Example #1 $mysqli->server_version example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* print server version */
printf("Server version: %d\n", $mysqli->server_version);

/* close connection */
$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* print server version */
printf("Server version: %d\n", mysqli_get_server_version($link));

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Server version: 40102

参见

  • mysqli_get_client_info() - Get MySQL client info
  • mysqli_get_client_version() - 作为一个整数返回MySQL客户端的版本
  • mysqli_get_server_info() - 返回MySQL服务器的版本号

mysqli::$server_info
mysqli::get_warnings
MySQLi


Get result of SHOW WARNINGS

mysqli::$server_version
mysqli::$info
MySQLi
PHP Manual

mysqli::get_warnings

mysqli_get_warnings

(PHP 5 >= 5.1.0, PHP 7)

mysqli::get_warnings -- mysqli_get_warnings — Get result of SHOW WARNINGS

说明

面向对象风格

mysqli_warning mysqli::get_warnings ( void )

过程化风格

mysqli_warning mysqli_get_warnings ( mysqli $link )
Warning

本函数还未编写文档，仅有参数列表。

mysqli::$server_version
mysqli::$info
MySQLi


Retrieves information about the most recently executed query

mysqli::get_warnings
mysqli::init
MySQLi
PHP Manual

mysqli::$info

mysqli_info

(PHP 5, PHP 7)

mysqli::$info -- mysqli_info — Retrieves information about the most recently executed query

说明

面向对象风格

string $mysqli->info;

过程化风格

string mysqli_info ( mysqli $link )

The mysqli_info() function returns a string providing information about the last query executed. The nature of this string is provided below:

Possible mysqli_info return values
Query type | Example result string
INSERT INTO...SELECT... | Records: 100 Duplicates: 0 Warnings: 0
INSERT INTO...VALUES (...),(...),(...) | Records: 3 Duplicates: 0 Warnings: 0
LOAD DATA INFILE ... | Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
ALTER TABLE ... | Records: 3 Duplicates: 0 Warnings: 0
UPDATE ... | Rows matched: 40 Changed: 40 Warnings: 0

Note:

Queries which do not fall into one of the preceding formats are not supported. In these situations, mysqli_info() will return an empty string.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

A character string representing additional information about the most recently executed query.

范例

Example #1 $mysqli->info example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$mysqli->query("CREATE TEMPORARY TABLE t1 LIKE City");

/* INSERT INTO .. SELECT */
$mysqli->query("INSERT INTO t1 SELECT * FROM City ORDER BY ID LIMIT 150");
printf("%s\n", $mysqli->info);

/* close connection */
$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

mysqli_query($link, "CREATE TEMPORARY TABLE t1 LIKE City");

/* INSERT INTO .. SELECT */
mysqli_query($link, "INSERT INTO t1 SELECT * FROM City ORDER BY ID LIMIT 150");
printf("%s\n", mysqli_info($link));

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Records: 150  Duplicates: 0  Warnings: 0

参见

  • mysqli_affected_rows() - Gets the number of affected rows in a previous MySQL operation
  • mysqli_warning_count() - Returns the number of warnings from the last query for the given link
  • mysqli_num_rows() - Gets the number of rows in a result

mysqli::get_warnings
mysqli::init
MySQLi


Initializes MySQLi and returns a resource for use with mysqli_real_connect()

mysqli::$info
mysqli::$insert_id
MySQLi
PHP Manual

mysqli::init

mysqli_init

(PHP 5, PHP 7)

mysqli::init -- mysqli_init — Initializes MySQLi and returns a resource for use with mysqli_real_connect()

说明

面向对象风格

mysqli mysqli::init ( void )

过程化风格

mysqli mysqli_init ( void )

Allocates or initializes a MYSQL object suitable for mysqli_options() and mysqli_real_connect().

Note:

Any subsequent calls to any mysqli function (except mysqli_options()) will fail until mysqli_real_connect() was called.

返回值

Returns an object.

范例

See mysqli_real_connect().

参见

  • mysqli_options() - Set options
  • mysqli_close() - 关闭先前打开的数据库连接
  • mysqli_real_connect() - 建立一个 MySQL 服务器连接
  • mysqli_connect() - 别名 mysqli::__construct

mysqli::$info
mysqli::$insert_id
MySQLi


Returns the auto generated id used in the latest query

mysqli::init
mysqli::kill
MySQLi
PHP Manual

mysqli::$insert_id

mysqli_insert_id

(PHP 5, PHP 7)

mysqli::$insert_id -- mysqli_insert_id — Returns the auto generated id used in the latest query

说明

面向对象风格

mixed $mysqli->insert_id;

过程化风格

mixed mysqli_insert_id ( mysqli $link )

The mysqli_insert_id() function returns the ID generated by a query on a table with a column having the AUTO_INCREMENT attribute. If the last query wasn't an INSERT or UPDATE statement or if the modified table does not have a column with the AUTO_INCREMENT attribute, this function will return zero.

Note:

Performing an INSERT or UPDATE statement using the LAST_INSERT_ID() function will also modify the value returned by the mysqli_insert_id() function.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

The value of the AUTO_INCREMENT field that was updated by the previous query. Returns zero if there was no previous query on the connection or if the query did not update an AUTO_INCREMENT value.

Note:

If the number is greater than maximal int value, mysqli_insert_id() will return a string.

范例

Example #1 $mysqli->insert_id example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$mysqli->query("CREATE TABLE myCity LIKE City");

$query = "INSERT INTO myCity VALUES (NULL, 'Stuttgart', 'DEU', 'Stuttgart', 617000)";
$mysqli->query($query);

printf ("New Record has id %d.\n", $mysqli->insert_id);

/* drop table */
$mysqli->query("DROP TABLE myCity");

/* close connection */
$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

mysqli_query($link, "CREATE TABLE myCity LIKE City");

$query = "INSERT INTO myCity VALUES (NULL, 'Stuttgart', 'DEU', 'Stuttgart', 617000)";
mysqli_query($link, $query);

printf ("New Record has id %d.\n", mysqli_insert_id($link));

/* drop table */
mysqli_query($link, "DROP TABLE myCity");

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

New Record has id 1.
mysqli::init
mysqli::kill
MySQLi


Asks the server to kill a MySQL thread

mysqli::$insert_id
mysqli::more_results
MySQLi
PHP Manual

mysqli::kill

mysqli_kill

(PHP 5, PHP 7)

mysqli::kill -- mysqli_kill — Asks the server to kill a MySQL thread

说明

面向对象风格

bool mysqli::kill ( int $processid )

过程化风格

bool mysqli_kill ( mysqli $link , int $processid )

This function is used to ask the server to kill a MySQL thread specified by the processid parameter. This value must be retrieved by calling the mysqli_thread_id() function.

To stop a running query you should use the SQL command KILL QUERY processid.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 mysqli::kill() example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* determine our thread id */
$thread_id = $mysqli->thread_id;

/* Kill connection */
$mysqli->kill($thread_id);

/* This should produce an error */
if (!$mysqli->query("CREATE TABLE myCity LIKE City")) {
    printf("Error: %s\n", $mysqli->error);
    exit;
}

/* close connection */
$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* determine our thread id */
$thread_id = mysqli_thread_id($link);

/* Kill connection */
mysqli_kill($link, $thread_id);

/* This should produce an error */
if (!mysqli_query($link, "CREATE TABLE myCity LIKE City")) {
    printf("Error: %s\n", mysqli_error($link));
    exit;
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Error: MySQL server has gone away

参见

  • mysqli_thread_id() - Returns the thread ID for the current connection

mysqli::$insert_id
mysqli::more_results
MySQLi


Check if there are any more query results from a multi query

mysqli::kill
mysqli::multi_query
MySQLi
PHP Manual

mysqli::more_results

mysqli_more_results

(PHP 5, PHP 7)

mysqli::more_results -- mysqli_more_results — Check if there are any more query results from a multi query

说明

面向对象风格

bool mysqli::more_results ( void )

过程化风格

bool mysqli_more_results ( mysqli $link )

Indicates if one or more result sets are available from a previous call to mysqli_multi_query().

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

Returns TRUE if one or more result sets are available from a previous call to mysqli_multi_query(), otherwise FALSE.

范例

See mysqli_multi_query().

参见

  • mysqli_multi_query() - Performs a query on the database
  • mysqli_next_result() - Prepare next result from multi_query
  • mysqli_store_result() - Transfers a result set from the last query
  • mysqli_use_result() - Initiate a result set retrieval

mysqli::kill
mysqli::multi_query
MySQLi


Performs a query on the database

mysqli::more_results
mysqli::next_result
MySQLi
PHP Manual

mysqli::multi_query

mysqli_multi_query

(PHP 5, PHP 7)

mysqli::multi_query -- mysqli_multi_query — Performs a query on the database

说明

面向对象风格

bool mysqli::multi_query ( string $query )

过程化风格

bool mysqli_multi_query ( mysqli $link , string $query )

Executes one or multiple queries which are concatenated by a semicolon.

To retrieve the resultset from the first query you can use mysqli_use_result() or mysqli_store_result(). All subsequent query results can be processed using mysqli_more_results() and mysqli_next_result().

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

query

The query, as a string.

Data inside the query should be properly escaped.

返回值

Returns FALSE if the first statement failed. To retrieve subsequent errors from other statements you have to call mysqli_next_result() first.

范例

Example #1 mysqli::multi_query() example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query  = "SELECT CURRENT_USER();";
$query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5";

/* execute multi query */
if ($mysqli->multi_query($query)) {
    do {
        /* store first result set */
        if ($result = $mysqli->store_result()) {
            while ($row = $result->fetch_row()) {
                printf("%s\n", $row[0]);
            }
            $result->free();
        }
        /* print divider */
        if ($mysqli->more_results()) {
            printf("-----------------\n");
        }
    } while ($mysqli->next_result());
}

/* close connection */
$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query  = "SELECT CURRENT_USER();";
$query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5";

/* execute multi query */
if (mysqli_multi_query($link, $query)) {
    do {
        /* store first result set */
        if ($result = mysqli_store_result($link)) {
            while ($row = mysqli_fetch_row($result)) {
                printf("%s\n", $row[0]);
            }
            mysqli_free_result($result);
        }
        /* print divider */
        if (mysqli_more_results($link)) {
            printf("-----------------\n");
        }
    } while (mysqli_next_result($link));
}

/* close connection */
mysqli_close($link);
?>

以上例程的输出类似于：

my_user@localhost
-----------------
Amersfoort
Maastricht
Dordrecht
Leiden
Haarlemmermeer

参见

  • mysqli_query() - 对数据库执行一次查询
  • mysqli_use_result() - Initiate a result set retrieval
  • mysqli_store_result() - Transfers a result set from the last query
  • mysqli_next_result() - Prepare next result from multi_query
  • mysqli_more_results() - Check if there are any more query results from a multi query

mysqli::more_results
mysqli::next_result
MySQLi


Prepare next result from multi_query

mysqli::multi_query
mysqli::options
MySQLi
PHP Manual

mysqli::next_result

mysqli_next_result

(PHP 5, PHP 7)

mysqli::next_result -- mysqli_next_result — Prepare next result from multi_query

说明

面向对象风格

bool mysqli::next_result ( void )

过程化风格

bool mysqli_next_result ( mysqli $link )

Prepares next result set from a previous call to
mysqli_multi_query() which can be retrieved by
mysqli_store_result() or
mysqli_use_result().

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

See mysqli_multi_query().

参见

  • mysqli_multi_query() - Performs a query on the database
  • mysqli_more_results() - Check if there are any more query results from a multi query
  • mysqli_store_result() - Transfers a result set from the last query
  • mysqli_use_result() - Initiate a result set retrieval

mysqli::multi_query
mysqli::options
MySQLi


Set options

mysqli::next_result
mysqli::ping
MySQLi
PHP Manual

mysqli::options

mysqli_options

(PHP 5, PHP 7)

mysqli::options -- mysqli_options — Set options

说明

面向对象风格

bool mysqli::options ( int $option , mixed $value )

过程化风格

bool mysqli_options ( mysqli $link , int $option , mixed $value )

Used to set extra connect options and affect behavior for a connection.

This function may be called multiple times to set several options.

mysqli_options() should be called after
mysqli_init() and before
mysqli_real_connect().

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

option

The option that you want to set. It can be one of the following values:

Valid options
Name | Description
MYSQLI_OPT_CONNECT_TIMEOUT | connection timeout in seconds (supported on Windows with TCP/IP since PHP 5.3.1)
MYSQLI_OPT_LOCAL_INFILE | enable/disable use of LOAD LOCAL INFILE
MYSQLI_INIT_COMMAND | command to execute after when connecting to MySQL server
MYSQLI_READ_DEFAULT_FILE | Read options from named option file instead of my.cnf
MYSQLI_READ_DEFAULT_GROUP | Read options from the named group from my.cnf or the file specified with MYSQL_READ_DEFAULT_FILE.
MYSQLI_SERVER_PUBLIC_KEY | RSA public key file used with the SHA-256 based authentication.
MYSQLI_OPT_NET_CMD_BUFFER_SIZE | The size of the internal command/network buffer. Only valid for mysqlnd.
MYSQLI_OPT_NET_READ_BUFFER_SIZE | Maximum read chunk size in bytes when reading the body of a MySQL command packet. Only valid for mysqlnd.
MYSQLI_OPT_INT_AND_FLOAT_NATIVE | Convert integer and float columns back to PHP numbers. Only valid for mysqlnd.
MYSQLI_OPT_SSL_VERIFY_SERVER_CERT

value

The value for the option.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.5.0 | The MYSQLI_SERVER_PUBLIC_KEY and MYSQLI_SERVER_PUBLIC_KEY options were added.
5.3.0 | The MYSQLI_OPT_INT_AND_FLOAT_NATIVE, MYSQLI_OPT_NET_CMD_BUFFER_SIZE, MYSQLI_OPT_NET_READ_BUFFER_SIZE, and MYSQLI_OPT_SSL_VERIFY_SERVER_CERT options were added.

范例

See mysqli_real_connect().

注释

Note:

MySQLnd 总是使用服务器的默认字符集。此字符集在连接握手／认证时发送，并被 mysqlnd 使用。

Libmysqlclient 使用 my.cnf 中的默认字符集或者由在调用 mysqli_init() 之后，mysqli_real_connect() 之前先调用 mysqli_options() 来指定。

参见

  • mysqli_init() - Initializes MySQLi and returns a resource for use with mysqli_real_connect()
  • mysqli_real_connect() - 建立一个 MySQL 服务器连接

mysqli::next_result
mysqli::ping
MySQLi


Pings a server connection, or tries to reconnect if the connection has gone down

mysqli::options
mysqli::poll
MySQLi
PHP Manual

mysqli::ping

mysqli_ping

(PHP 5, PHP 7)

mysqli::ping -- mysqli_ping — Pings a server connection, or tries to reconnect if the connection has gone down

说明

面向对象风格

bool mysqli::ping ( void )

过程化风格

bool mysqli_ping ( mysqli $link )

Checks whether the connection to the server is working. If it has gone down and global option mysqli.reconnect is enabled, an automatic reconnection is attempted.

Note: The php.ini setting mysqli.reconnect is ignored by the mysqlnd driver, so automatic reconnection is never attempted.

This function can be used by clients that remain idle for a long while, to check whether the server has closed the connection and reconnect if necessary.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 mysqli::ping() example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

/* check if server is alive */
if ($mysqli->ping()) {
    printf ("Our connection is ok!\n");
} else {
    printf ("Error: %s\n", $mysqli->error);
}

/* close connection */
$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* check if server is alive */
if (mysqli_ping($link)) {
    printf ("Our connection is ok!\n");
} else {
    printf ("Error: %s\n", mysqli_error($link));
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Our connection is ok!
mysqli::options
mysqli::poll
MySQLi


Poll connections

mysqli::ping
mysqli::prepare
MySQLi
PHP Manual

mysqli::poll

mysqli_poll

(PHP 5 >= 5.3.0, PHP 7)

mysqli::poll -- mysqli_poll — Poll connections

说明

面向对象风格

public static int mysqli::poll ( array &$read , array &$error , array &$reject , int $sec [, int $usec ] )

过程化风格

int mysqli_poll ( array &$read , array &$error , array &$reject , int $sec [, int $usec ] )

Poll connections. 仅可用于 mysqlnd。 The method can be used as static.

参数

read

List of connections to check for outstanding results that can be read.

error

List of connections on which an error occured, for example, query failure or lost connection.

reject

List of connections rejected because no asynchronous query has been run on for which the function could poll results.

sec

Number of seconds to wait, must be non-negative.

usec

Number of microseconds to wait, must be non-negative.

返回值

Returns number of ready connections upon success, FALSE otherwise.

范例

Example #1 A mysqli_poll() example

<?php
$link1 = mysqli_connect();
$link1->query("SELECT 'test'", MYSQLI_ASYNC);
$all_links = array($link1);
$processed = 0;
do {
    $links = $errors = $reject = array();
    foreach ($all_links as $link) {
        $links[] = $errors[] = $reject[] = $link;
    }
    if (!mysqli_poll($links, $errors, $reject, 1)) {
        continue;
    }
    foreach ($links as $link) {
        if ($result = $link->reap_async_query()) {
            print_r($result->fetch_row());
            if (is_object($result))
                mysqli_free_result($result);
        } else die(sprintf("MySQLi Error: %s", mysqli_error($link)));
        $processed++;
    }
} while ($processed < count($all_links));
?>

以上例程会输出：

Array
(
    [0] => test
)

参见

  • mysqli_query() - 对数据库执行一次查询
  • mysqli_reap_async_query() - Get result from async query

mysqli::ping
mysqli::prepare
MySQLi


Prepare an SQL statement for execution

mysqli::poll
mysqli::query
MySQLi
PHP Manual

mysqli::prepare

mysqli_prepare

(PHP 5, PHP 7)

mysqli::prepare -- mysqli_prepare — Prepare an SQL statement for execution

说明

面向对象风格

mysqli_stmt mysqli::prepare ( string $query )

过程化风格

mysqli_stmt mysqli_prepare ( mysqli $link , string $query )

Prepares the SQL query, and returns a statement handle to be used for further operations on the statement. The query must consist of a single SQL statement.

The parameter markers must be bound to application variables using mysqli_stmt_bind_param() and/or mysqli_stmt_bind_result() before executing the statement or fetching rows.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

query

The query, as a string.

Note:

You should not add a terminating semicolon or \g to the statement.

This parameter can include one or more parameter markers in the SQL statement by embedding question mark (?) characters at the appropriate positions.

Note:

The markers are legal only in certain places in SQL statements. For example, they are allowed in the VALUES() list of an INSERT statement (to specify column values for a row), or in a comparison with a column in a WHERE clause to specify a comparison value.

However, they are not allowed for identifiers (such as table or column names), in the select list that names the columns to be returned by a SELECT statement, or to specify both operands of a binary operator such as the = equal sign. The latter restriction is necessary because it would be impossible to determine the parameter type. It's not allowed to compare marker with NULL by ? IS NULL too. In general, parameters are legal only in Data Manipulation Language (DML) statements, and not in Data Definition Language (DDL) statements.

返回值

mysqli_prepare() returns a statement object or FALSE if an error occurred.

范例

Example #1 mysqli::prepare() example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$city = "Amersfoort";

/* create a prepared statement */
if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {

    /* bind parameters for markers */
    $stmt->bind_param("s", $city);

    /* execute query */
    $stmt->execute();

    /* bind result variables */
    $stmt->bind_result($district);

    /* fetch value */
    $stmt->fetch();

    printf("%s is in district %s\n", $city, $district);

    /* close statement */
    $stmt->close();
}

/* close connection */
$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$city = "Amersfoort";

/* create a prepared statement */
if ($stmt = mysqli_prepare($link, "SELECT District FROM City WHERE Name=?")) {

    /* bind parameters for markers */
    mysqli_stmt_bind_param($stmt, "s", $city);

    /* execute query */
    mysqli_stmt_execute($stmt);

    /* bind result variables */
    mysqli_stmt_bind_result($stmt, $district);

    /* fetch value */
    mysqli_stmt_fetch($stmt);

    printf("%s is in district %s\n", $city, $district);

    /* close statement */
    mysqli_stmt_close($stmt);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Amersfoort is in district Utrecht

参见

  • mysqli_stmt_execute() - Executes a prepared Query
  • mysqli_stmt_fetch() - Fetch results from a prepared statement into the bound variables
  • mysqli_stmt_bind_param() - Binds variables to a prepared statement as parameters
  • mysqli_stmt_bind_result() - Binds variables to a prepared statement for result storage
  • mysqli_stmt_close() - Closes a prepared statement

mysqli::poll
mysqli::query
MySQLi


对数据库执行一次查询

mysqli::prepare
mysqli::real_connect
MySQLi
PHP Manual

mysqli::query

mysqli_query

(PHP 5, PHP 7)

mysqli::query -- mysqli_query — 对数据库执行一次查询

说明

面向对象风格

mixed mysqli::query ( string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )

过程化风格

mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )

Performs a query against the database.

For non-DML queries (not INSERT, UPDATE or DELETE),
this function is similar to calling
mysqli_real_query() followed by either
mysqli_use_result() or
mysqli_store_result().

Note:

In the case where you pass a statement to mysqli_query() that is longer than max_allowed_packet of the server, the returned error codes are different depending on whether you are using MySQL Native Driver (mysqlnd) or MySQL Client Library (libmysqlclient). The behavior is as follows:

  • mysqlnd on Linux returns an error code of 1153. The error message means "got a packet bigger than max_allowed_packet bytes".

  • mysqlnd on Windows returns an error code 2006. This error message means "server has gone away".

  • libmysqlclient on all platforms returns an error code 2006. This error message means "server has gone away".

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

query

The query string.

Data inside the query should be properly escaped.

resultmode

Either the constant MYSQLI_USE_RESULT or MYSQLI_STORE_RESULT depending on the desired behavior. By default, MYSQLI_STORE_RESULT is used.

If you use MYSQLI_USE_RESULT all subsequent calls will return error Commands out of sync unless you call mysqli_free_result()

With MYSQLI_ASYNC (available with mysqlnd), it is possible to perform query asynchronously. mysqli_poll() is then used to get results from such queries.

返回值

失败时返回 FALSE，通过mysqli_query() 成功执行SELECT, SHOW, DESCRIBE或 EXPLAIN查询会返回一个mysqli_result 对象，其他查询则返回TRUE。

更新日志

版本 | 说明
5.3.0 | Added the ability of async queries.

范例

Example #1 mysqli::query() example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

/* Create table doesn't return a resultset */
if ($mysqli->query("CREATE TEMPORARY TABLE myCity LIKE City") === TRUE) {
    printf("Table myCity successfully created.\n");
}

/* Select queries return a resultset */
if ($result = $mysqli->query("SELECT Name FROM City LIMIT 10")) {
    printf("Select returned %d rows.\n", $result->num_rows);

    /* free result set */
    $result->close();
}

/* If we have to retrieve large amount of data we use MYSQLI_USE_RESULT */
if ($result = $mysqli->query("SELECT * FROM City", MYSQLI_USE_RESULT)) {

    /* Note, that we can't execute any functions which interact with the
       server until result set was closed. All calls will return an
       'out of sync' error */
    if (!$mysqli->query("SET @a:='this will not work'")) {
        printf("Error: %s\n", $mysqli->error);
    }
    $result->close();
}

$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* Create table doesn't return a resultset */
if (mysqli_query($link, "CREATE TEMPORARY TABLE myCity LIKE City") === TRUE) {
    printf("Table myCity successfully created.\n");
}

/* Select queries return a resultset */
if ($result = mysqli_query($link, "SELECT Name FROM City LIMIT 10")) {
    printf("Select returned %d rows.\n", mysqli_num_rows($result));

    /* free result set */
    mysqli_free_result($result);
}

/* If we have to retrieve large amount of data we use MYSQLI_USE_RESULT */
if ($result = mysqli_query($link, "SELECT * FROM City", MYSQLI_USE_RESULT)) {

    /* Note, that we can't execute any functions which interact with the
       server until result set was closed. All calls will return an
       'out of sync' error */
    if (!mysqli_query($link, "SET @a:='this will not work'")) {
        printf("Error: %s\n", mysqli_error($link));
    }
    mysqli_free_result($result);
}

mysqli_close($link);
?>

以上例程会输出：

Table myCity successfully created.
Select returned 10 rows.
Error: Commands out of sync;  You can't run this command now

参见

  • mysqli_real_query() - 执行一个mysql查询
  • mysqli_multi_query() - Performs a query on the database
  • mysqli_free_result() - Frees the memory associated with a result

mysqli::prepare
mysqli::real_connect
MySQLi


建立一个 MySQL 服务器连接

mysqli::query
mysqli::real_escape_string
MySQLi
PHP Manual

mysqli::real_connect

mysqli_real_connect

(PHP 5, PHP 7)

mysqli::real_connect -- mysqli_real_connect — 建立一个 MySQL 服务器连接

说明

面向对象风格

bool mysqli::real_connect ([ string $host [, string $username [, string $passwd [, string $dbname [, int $port [, string $socket [, int $flags ]]]]]]] )

过程化风格

bool mysqli_real_connect ( mysqli $link [, string $host [, string $username [, string $passwd [, string $dbname [, int $port [, string $socket [, int $flags ]]]]]]] )

建立一个到 MySQL 服务器的链接。

与 mysqli_connect() 的不同点：

  • mysqli_real_connect() 需要一个有效的对象，这个对象由 mysqli_init() 创建。

  • 可以使用 mysqli_options() 设置各种连接设置。

  • 提供 flags 参数。

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

host

可以使用域名、IP 地址。如果传送 NULL 或者字符串 "localhost" 那么会使用 通道替代 TCP/IP 连接本地服务器。

username

MySQL 登录用户名

passwd

如果设置 NULL，那么会使用没有密码验证的方式尝试登录。这样可以为一个用户 提供不同的权限，基于他是否提供了密码。

dbname

设置执行查询语句的默认数据库。

port

指定 MySQL 服务器的端口

socket

指定使用的 socket 或者命名通道。

Note:

指定 socket 参数并不能说明要采用何种方式连接数据库。 连接数据的方式由 host 设定。

flags

这里可以设置连接参数：

Supported flags
Name | Description
MYSQLI_CLIENT_COMPRESS | 使用压缩协议
MYSQLI_CLIENT_FOUND_ROWS | 返回语句匹配的行数，而不是影响的行数
MYSQLI_CLIENT_IGNORE_SPACE | 允许函数名称后有空格，这将使所有的函数名称成为保留字。
MYSQLI_CLIENT_INTERACTIVE | 在关闭连接之前允许等待 interactive_timeout 秒， 他替代 wait_timeout 设定。
MYSQLI_CLIENT_SSL | 使用 SSL 加密

Note:

从安全角度考虑，在 PHP 中不可以使用 MULTI_STATEMENT， 若要执行多查询语句，请使用 mysqli_multi_query()。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 mysqli::real_connect() 例子

面向对象风格

<?php

$mysqli = mysqli_init();
if (!$mysqli) {
    die('mysqli_init failed');
}

if (!$mysqli->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
    die('Setting MYSQLI_INIT_COMMAND failed');
}

if (!$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
    die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');
}

if (!$mysqli->real_connect('localhost', 'my_user', 'my_password', 'my_db')) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}

echo 'Success... ' . $mysqli->host_info . "\n";

$mysqli->close();
?>

面向对象风格 when extending mysqli class

<?php

class foo_mysqli extends mysqli {
    public function __construct($host, $user, $pass, $db) {
        parent::init();

        if (!parent::options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
            die('Setting MYSQLI_INIT_COMMAND failed');
        }

        if (!parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
            die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');
        }

        if (!parent::real_connect($host, $user, $pass, $db)) {
            die('Connect Error (' . mysqli_connect_errno() . ') '
                    . mysqli_connect_error());
        }
    }
}

$db = new foo_mysqli('localhost', 'my_user', 'my_password', 'my_db');

echo 'Success... ' . $db->host_info . "\n";

$db->close();
?>

过程化风格

<?php

$link = mysqli_init();
if (!$link) {
    die('mysqli_init failed');
}

if (!mysqli_options($link, MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
    die('Setting MYSQLI_INIT_COMMAND failed');
}

if (!mysqli_options($link, MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
    die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');
}

if (!mysqli_real_connect($link, 'localhost', 'my_user', 'my_password', 'my_db')) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}

echo 'Success... ' . mysqli_get_host_info($link) . "\n";

mysqli_close($link);
?>

以上例程会输出：

Success... MySQL host info: localhost via TCP/IP

注释

Note:

MySQLnd 总是使用服务器的默认字符集。此字符集在连接握手／认证时发送，并被 mysqlnd 使用。

Libmysqlclient 使用 my.cnf 中的默认字符集或者由在调用 mysqli_init() 之后，mysqli_real_connect() 之前先调用 mysqli_options() 来指定。

参见

  • mysqli_connect() - 别名 mysqli::__construct
  • mysqli_init() - Initializes MySQLi and returns a resource for use with mysqli_real_connect()
  • mysqli_options() - Set options
  • mysqli_ssl_set() - Used for establishing secure connections using SSL
  • mysqli_close() - 关闭先前打开的数据库连接

mysqli::query
mysqli::real_escape_string
MySQLi


Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection

mysqli::real_connect
mysqli::real_query
MySQLi
PHP Manual

mysqli::real_escape_string

mysqli_real_escape_string

(PHP 5, PHP 7)

mysqli::real_escape_string -- mysqli_real_escape_string — Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection

说明

面向对象风格

string mysqli::escape_string ( string $escapestr )
string mysqli::real_escape_string ( string $escapestr )

过程化风格

string mysqli_real_escape_string ( mysqli $link , string $escapestr )

This function is used to create a legal SQL string that you can use in an SQL statement. The given string is encoded to an escaped SQL string, taking into account the current character set of the connection.

Caution

Security: the default character set

The character set must be set either at the server level, or with the API function mysqli_set_charset() for it to affect mysqli_real_escape_string(). See the concepts section on character sets for more information.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

escapestr

The string to be escaped.

Characters encoded are NUL (ASCII 0), \n, \r, \, ', ", and Control-Z.

返回值

Returns an escaped string.

范例

Example #1 mysqli::real_escape_string() example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$mysqli->query("CREATE TEMPORARY TABLE myCity LIKE City");

$city = "'s Hertogenbosch";

/* this query will fail, cause we didn't escape $city */
if (!$mysqli->query("INSERT into myCity (Name) VALUES ('$city')")) {
    printf("Error: %s\n", $mysqli->sqlstate);
}

$city = $mysqli->real_escape_string($city);

/* this query with escaped $city will work */
if ($mysqli->query("INSERT into myCity (Name) VALUES ('$city')")) {
    printf("%d Row inserted.\n", $mysqli->affected_rows);
}

$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

mysqli_query($link, "CREATE TEMPORARY TABLE myCity LIKE City");

$city = "'s Hertogenbosch";

/* this query will fail, cause we didn't escape $city */
if (!mysqli_query($link, "INSERT into myCity (Name) VALUES ('$city')")) {
    printf("Error: %s\n", mysqli_sqlstate($link));
}

$city = mysqli_real_escape_string($link, $city);

/* this query with escaped $city will work */
if (mysqli_query($link, "INSERT into myCity (Name) VALUES ('$city')")) {
    printf("%d Row inserted.\n", mysqli_affected_rows($link));
}

mysqli_close($link);
?>

以上例程会输出：

Error: 42000
1 Row inserted.

注释

Note:

For those accustomed to using mysql_real_escape_string(),
note that the arguments of mysqli_real_escape_string()
differ from what mysql_real_escape_string() expects.
The link identifier comes first in
mysqli_real_escape_string(), whereas the string to be escaped
comes first in mysql_real_escape_string().

参见

  • mysqli_set_charset() - 设置默认字符编码
  • mysqli_character_set_name() - 返回当前数据库连接的默认字符编码

mysqli::real_connect
mysqli::real_query
MySQLi


执行一个mysql查询

mysqli::real_escape_string
mysqli::reap_async_query
MySQLi
PHP Manual

mysqli::real_query

mysqli_real_query

(PHP 5, PHP 7)

mysqli::real_query -- mysqli_real_query — 执行一个mysql查询

说明

面向对象风格

bool mysqli::real_query ( string $query )

过程化风格

bool mysqli_real_query ( mysqli $link , string $query )

执行一个单条数据库查询, 其结果可以使用mysqli_store_result()或mysqli_use_result()检索或存储.

为了确定给定的查询是否真的返回一个结果集, 可以查看mysqli_field_count().

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

query

查询字符串

查询中的数据可以进行属性转义.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • mysqli_query() - 对数据库执行一次查询
  • mysqli_store_result() - Transfers a result set from the last query
  • mysqli_use_result() - Initiate a result set retrieval

mysqli::real_escape_string
mysqli::reap_async_query
MySQLi


Get result from async query

mysqli::real_query
mysqli::refresh
MySQLi
PHP Manual

mysqli::reap_async_query

mysqli_reap_async_query

(PHP 5 >= 5.3.0, PHP 7)

mysqli::reap_async_query -- mysqli_reap_async_query — Get result from async query

说明

面向对象风格

public mysqli_result mysqli::reap_async_query ( void )

过程化风格

mysqli_result mysqli_reap_async_query ( mysqli $link )

Get result from async query. 仅可用于 mysqlnd。

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

Returns mysqli_result in success, FALSE otherwise.

参见

  • mysqli_poll() - Poll connections

mysqli::real_query
mysqli::refresh
MySQLi


Refreshes

mysqli::reap_async_query
mysqli::release_savepoint
MySQLi
PHP Manual

mysqli::refresh

mysqli_refresh

(PHP 5 <= 5.3.0)

mysqli::refresh -- mysqli_refresh — Refreshes

说明

面向对象风格

public bool mysqli::refresh ( int $options )

过程化风格

int mysqli_refresh ( resource $link , int $options )

Flushes tables or caches, or resets the replication server information.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

options

The options to refresh, using the MYSQLI_REFRESH_* constants as documented within the MySQLi constants documentation.

See also the official » MySQL Refresh documentation.

返回值

TRUE if the refresh was a success, otherwise FALSE

参见

  • mysqli_poll() - Poll connections

mysqli::reap_async_query
mysqli::release_savepoint
MySQLi


Removes the named savepoint from the set of savepoints of the current transaction

mysqli::refresh
mysqli::rollback
MySQLi
PHP Manual

mysqli::release_savepoint

mysqli_release_savepoint

(PHP 5 >= 5.5.0, PHP 7)

mysqli::release_savepoint -- mysqli_release_savepoint — Removes the named savepoint from the set of savepoints of the current transaction

说明

面向对象风格 (method):

public bool mysqli::release_savepoint ( string $name )

过程化风格:

bool mysqli_release_savepoint ( mysqli $link , string $name )

Warning

本函数还未编写文档，仅有参数列表。

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

name

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • mysqli_rollback() - 回退当前事务

mysqli::refresh
mysqli::rollback
MySQLi


回退当前事务

mysqli::release_savepoint
mysqli::rpl_query_type
MySQLi
PHP Manual

mysqli::rollback

mysqli_rollback

(PHP 5, PHP 7)

mysqli::rollback -- mysqli_rollback — 回退当前事务

说明

面向对象风格

bool mysqli::rollback ( void )

过程化风格

bool mysqli_rollback ( mysqli $link )

回退当前数据库的事务。

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 mysqli::rollback() example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* disable autocommit */
$mysqli->autocommit(FALSE);

$mysqli->query("CREATE TABLE myCity LIKE City");
$mysqli->query("ALTER TABLE myCity Type=InnoDB");
$mysqli->query("INSERT INTO myCity SELECT * FROM City LIMIT 50");

/* commit insert */
$mysqli->commit();

/* delete all rows */
$mysqli->query("DELETE FROM myCity");

if ($result = $mysqli->query("SELECT COUNT(*) FROM myCity")) {
    $row = $result->fetch_row();
    printf("%d rows in table myCity.\n", $row[0]);
    /* Free result */
    $result->close();
}

/* Rollback */
$mysqli->rollback();

if ($result = $mysqli->query("SELECT COUNT(*) FROM myCity")) {
    $row = $result->fetch_row();
    printf("%d rows in table myCity (after rollback).\n", $row[0]);
    /* Free result */
    $result->close();
}

/* Drop table myCity */
$mysqli->query("DROP TABLE myCity");

$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* disable autocommit */
mysqli_autocommit($link, FALSE);

mysqli_query($link, "CREATE TABLE myCity LIKE City");
mysqli_query($link, "ALTER TABLE myCity Type=InnoDB");
mysqli_query($link, "INSERT INTO myCity SELECT * FROM City LIMIT 50");

/* commit insert */
mysqli_commit($link);

/* delete all rows */
mysqli_query($link, "DELETE FROM myCity");

if ($result = mysqli_query($link, "SELECT COUNT(*) FROM myCity")) {
    $row = mysqli_fetch_row($result);
    printf("%d rows in table myCity.\n", $row[0]);
    /* Free result */
    mysqli_free_result($result);
}

/* Rollback */
mysqli_rollback($link);

if ($result = mysqli_query($link, "SELECT COUNT(*) FROM myCity")) {
    $row = mysqli_fetch_row($result);
    printf("%d rows in table myCity (after rollback).\n", $row[0]);
    /* Free result */
    mysqli_free_result($result);
}

/* Drop table myCity */
mysqli_query($link, "DROP TABLE myCity");

mysqli_close($link);
?>

以上例程会输出：

0 rows in table myCity.
50 rows in table myCity (after rollback).

参见

  • mysqli_commit() - 提交一个事务
  • mysqli_autocommit() - 打开或关闭本次数据库连接的自动命令提交事务模式

mysqli::release_savepoint
mysqli::rpl_query_type
MySQLi


Returns RPL query type

mysqli::rollback
mysqli::savepoint
MySQLi
PHP Manual

mysqli::rpl_query_type

mysqli_rpl_query_type

(PHP 5, PHP 7)

mysqli::rpl_query_type -- mysqli_rpl_query_type — Returns RPL query type

说明

面向对象风格

int mysqli::rpl_query_type ( string $query )

过程化风格

int mysqli_rpl_query_type ( mysqli $link , string $query )

Returns MYSQLI_RPL_MASTER, MYSQLI_RPL_SLAVE or MYSQLI_RPL_ADMIN depending on a query type. INSERT, UPDATE and similar are master queries, SELECT is slave, and FLUSH, REPAIR and similar are admin.

Warning

本函数还未编写文档，仅有参数列表。

Warning

自 PHP 5.3.0 起，已经废弃并移除此函数。

mysqli::rollback
mysqli::savepoint
MySQLi


Set a named transaction savepoint

mysqli::rpl_query_type
mysqli::select_db
MySQLi
PHP Manual

mysqli::savepoint

mysqli_savepoint

(PHP 5 >= 5.5.0, PHP 7)

mysqli::savepoint -- mysqli_savepoint — Set a named transaction savepoint

说明

面向对象风格 (method):

public bool mysqli::savepoint ( string $name )

过程化风格:

bool mysqli_savepoint ( mysqli $link , string $name )

Warning

本函数还未编写文档，仅有参数列表。

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

name

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • mysqli_commit() - 提交一个事务

mysqli::rpl_query_type
mysqli::select_db
MySQLi


选择用于数据库查询的默认数据库

mysqli::savepoint
mysqli::send_query
MySQLi
PHP Manual

mysqli::select_db

mysqli_select_db

(PHP 5, PHP 7)

mysqli::select_db -- mysqli_select_db — 选择用于数据库查询的默认数据库

说明

面向对象风格

bool mysqli::select_db ( string $dbname )

过程化风格

bool mysqli_select_db ( mysqli $link , string $dbname )

针对本次数据库连接用于数据库查询的默认数据库。

Note:

本函数应该只被用在改变本次链接的数据库，你也能在mysqli_connect()第四个参数确认默认数据库。

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

dbname

数据库名称

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 mysqli::select_db() example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "test");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* return name of current default database */
if ($result = $mysqli->query("SELECT DATABASE()")) {
    $row = $result->fetch_row();
    printf("Default database is %s.\n", $row[0]);
    $result->close();
}

/* change db to world db */
$mysqli->select_db("world");

/* return name of current default database */
if ($result = $mysqli->query("SELECT DATABASE()")) {
    $row = $result->fetch_row();
    printf("Default database is %s.\n", $row[0]);
    $result->close();
}

$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "test");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* return name of current default database */
if ($result = mysqli_query($link, "SELECT DATABASE()")) {
    $row = mysqli_fetch_row($result);
    printf("Default database is %s.\n", $row[0]);
    mysqli_free_result($result);
}

/* change db to world db */
mysqli_select_db($link, "world");

/* return name of current default database */
if ($result = mysqli_query($link, "SELECT DATABASE()")) {
    $row = mysqli_fetch_row($result);
    printf("Default database is %s.\n", $row[0]);
    mysqli_free_result($result);
}

mysqli_close($link);
?>

以上例程会输出：

Default database is test.
Default database is world.

参见

  • mysqli_connect() - 别名 mysqli::__construct
  • mysqli_real_connect() - 建立一个 MySQL 服务器连接

mysqli::savepoint
mysqli::send_query
MySQLi


发送请求并返回结果

mysqli::select_db
mysqli::set_charset
MySQLi
PHP Manual

mysqli::send_query

mysqli_send_query

(PHP 5, PHP 7)

mysqli::send_query -- mysqli_send_query — 发送请求并返回结果

说明

面向对象风格

bool mysqli::send_query ( string $query )

过程化风格

bool mysqli_send_query ( mysqli $link , string $query )
Warning

本函数还未编写文档，仅有参数列表。

Warning

自 PHP 5.3.0 起，已经废弃并移除此函数。

mysqli::select_db
mysqli::set_charset
MySQLi


设置默认字符编码

mysqli::send_query
mysqli::set_local_infile_default
MySQLi
PHP Manual

mysqli::set_charset

mysqli_set_charset

(PHP 5 >= 5.0.5, PHP 7)

mysqli::set_charset -- mysqli_set_charset — 设置默认字符编码

说明

面向对象风格

bool mysqli::set_charset ( string $charset )

过程化风格

bool mysqli_set_charset ( mysqli $link , string $charset )

设置在数据库间传输字符时所用的默认字符编码。

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

charset

被设为默认的字符编码名。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note:

如果在Windows平台上使用该方法，需要4.1.11版或以上的MySQL客户端库，且MySQL版本为5.0.6以上。

Note:

这应该是首选的用于改变字符编码的方法，不建议使用mysqli_query()执行SQL请求的SET NAMES ...（如 SET NAMES utf8）。 详见MySQL字符集的概念

范例

Example #1 mysqli::set_charset() example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "test");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* change character set to utf8 */
if (!$mysqli->set_charset("utf8")) {
    printf("Error loading character set utf8: %s\n", $mysqli->error);
} else {
    printf("Current character set: %s\n", $mysqli->character_set_name());
}

$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'test');

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* change character set to utf8 */
if (!mysqli_set_charset($link, "utf8")) {
    printf("Error loading character set utf8: %s\n", mysqli_error($link));
} else {
    printf("Current character set: %s\n", mysqli_character_set_name($link));
}

mysqli_close($link);
?>

以上例程会输出：

Current character set: utf8

参见

  • mysqli_character_set_name() - 返回当前数据库连接的默认字符编码
  • mysqli_real_escape_string() - Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection
  • » 关于MySQL支持字符集的列表

mysqli::send_query
mysqli::set_local_infile_default
MySQLi


Unsets user defined handler for load local infile command

mysqli::set_charset
mysqli::set_local_infile_handler
MySQLi
PHP Manual

mysqli::set_local_infile_default

mysqli_set_local_infile_default

(PHP 5, PHP 7)

mysqli::set_local_infile_default -- mysqli_set_local_infile_default — Unsets user defined handler for load local infile command

说明

void mysqli_set_local_infile_default ( mysqli $link )

Deactivates a LOAD DATA INFILE LOCAL handler previously set with mysqli_set_local_infile_handler().

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

没有返回值。

范例

See mysqli_set_local_infile_handler() examples

参见

  • mysqli_set_local_infile_handler() - Set callback function for LOAD DATA LOCAL INFILE command

mysqli::set_charset
mysqli::set_local_infile_handler
MySQLi


Set callback function for LOAD DATA LOCAL INFILE command

mysqli::set_local_infile_default
mysqli::$sqlstate
MySQLi
PHP Manual

mysqli::set_local_infile_handler

mysqli_set_local_infile_handler

(PHP 5, PHP 7)

mysqli::set_local_infile_handler -- mysqli_set_local_infile_handler — Set callback function for LOAD DATA LOCAL INFILE command

说明

面向对象风格

bool mysqli::set_local_infile_handler ( mysqli $link , callable $read_func )

过程化风格

bool mysqli_set_local_infile_handler ( mysqli $link , callable $read_func )

Set callback function for LOAD DATA LOCAL INFILE command

The callbacks task is to read input from the file specified in the LOAD DATA LOCAL INFILE and to reformat it into the format understood by LOAD DATA INFILE.

The returned data needs to match the format specified in the LOAD DATA

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

read_func

A callback function or object method taking the following parameters:

stream

A PHP stream associated with the SQL commands INFILE

&buffer

A string buffer to store the rewritten input into

buflen

The maximum number of characters to be stored in the buffer

&errormsg

If an error occurs you can store an error message in here

The callback function should return the number of characters stored in the buffer or a negative value if an error occurred.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 mysqli::set_local_infile_handler() example

面向对象风格

<?php
  $db = mysqli_init();
  $db->real_connect("localhost","root","","test");

  function callme($stream, &$buffer, $buflen, &$errmsg)
  {
    $buffer = fgets($stream);

    echo $buffer;

    // convert to upper case and replace "," delimiter with [TAB]
    $buffer = strtoupper(str_replace(",", "\t", $buffer));

    return strlen($buffer);
  }

  echo "Input:\n";

  $db->set_local_infile_handler("callme");
  $db->query("LOAD DATA LOCAL INFILE 'input.txt' INTO TABLE t1");
  $db->set_local_infile_default();

  $res = $db->query("SELECT * FROM t1");

  echo "\nResult:\n";
  while ($row = $res->fetch_assoc()) {
    echo join(",", $row)."\n";
  }
?>

过程化风格

<?php
  $db = mysqli_init();
  mysqli_real_connect($db, "localhost","root","","test");

  function callme($stream, &$buffer, $buflen, &$errmsg)
  {
    $buffer = fgets($stream);

    echo $buffer;

    // convert to upper case and replace "," delimiter with [TAB]
    $buffer = strtoupper(str_replace(",", "\t", $buffer));

    return strlen($buffer);
  }

  echo "Input:\n";

  mysqli_set_local_infile_handler($db, "callme");
  mysqli_query($db, "LOAD DATA LOCAL INFILE 'input.txt' INTO TABLE t1");
  mysqli_set_local_infile_default($db);

  $res = mysqli_query($db, "SELECT * FROM t1");

  echo "\nResult:\n";
  while ($row = mysqli_fetch_assoc($res)) {
    echo join(",", $row)."\n";
  }
?>

以上例程会输出：

Input:
23,foo
42,bar

Output:
23,FOO
42,BAR

参见

  • mysqli_set_local_infile_default() - Unsets user defined handler for load local infile command

mysqli::set_local_infile_default
mysqli::$sqlstate
MySQLi


Returns the SQLSTATE error from previous MySQL operation

mysqli::set_local_infile_handler
mysqli::ssl_set
MySQLi
PHP Manual

mysqli::$sqlstate

mysqli_sqlstate

(PHP 5, PHP 7)

mysqli::$sqlstate -- mysqli_sqlstate — Returns the SQLSTATE error from previous MySQL operation

说明

面向对象风格

string $mysqli->sqlstate;

过程化风格

string mysqli_sqlstate ( mysqli $link )

Returns a string containing the SQLSTATE error code for the last error. The error code consists of five characters. '00000' means no error. The values are specified by ANSI SQL and ODBC. For a list of possible values, see » http://dev.mysql.com/doc/mysql/en/error-handling.html.

Note:

Note that not all MySQL errors are yet mapped to SQLSTATE's. The value HY000 (general error) is used for unmapped errors.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

Returns a string containing the SQLSTATE error code for the last error. The error code consists of five characters. '00000' means no error.

范例

Example #1 $mysqli->sqlstate example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* Table City already exists, so we should get an error */
if (!$mysqli->query("CREATE TABLE City (ID INT, Name VARCHAR(30))")) {
    printf("Error - SQLSTATE %s.\n", $mysqli->sqlstate);
}

$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* Table City already exists, so we should get an error */
if (!mysqli_query($link, "CREATE TABLE City (ID INT, Name VARCHAR(30))")) {
    printf("Error - SQLSTATE %s.\n", mysqli_sqlstate($link));
}

mysqli_close($link);
?>

以上例程会输出：

Error - SQLSTATE 42S01.

参见

  • mysqli_errno() - 返回最近函数调用的错误代码
  • mysqli_error() - Returns a string description of the last error

mysqli::set_local_infile_handler
mysqli::ssl_set
MySQLi


Used for establishing secure connections using SSL

mysqli::$sqlstate
mysqli::stat
MySQLi
PHP Manual

mysqli::ssl_set

mysqli_ssl_set

(PHP 5, PHP 7)

mysqli::ssl_set -- mysqli_ssl_set — Used for establishing secure connections using SSL

说明

面向对象风格

bool mysqli::ssl_set ( string $key , string $cert , string $ca , string $capath , string $cipher )

过程化风格

bool mysqli_ssl_set ( mysqli $link , string $key , string $cert , string $ca , string $capath , string $cipher )

Used for establishing secure connections using SSL. It must be called before mysqli_real_connect(). This function does nothing unless OpenSSL support is enabled.

Note that MySQL Native Driver does not support SSL before PHP 5.3.3, so calling this function when using MySQL Native Driver will result in an error. MySQL Native Driver is enabled by default on Microsoft Windows from PHP version 5.3 onwards.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

key

The path name to the key file.

cert

The path name to the certificate file.

ca

The path name to the certificate authority file.

capath

The pathname to a directory that contains trusted SSL CA certificates in PEM format.

cipher

A list of allowable ciphers to use for SSL encryption.

Any unused SSL parameters may be given as NULL

返回值

This function always returns TRUE value. If SSL setup is incorrect mysqli_real_connect() will return an error when you attempt to connect.

参见

  • mysqli_options() - Set options
  • mysqli_real_connect() - 建立一个 MySQL 服务器连接

mysqli::$sqlstate
mysqli::stat
MySQLi


Gets the current system status

mysqli::ssl_set
mysqli::stmt_init
MySQLi
PHP Manual

mysqli::stat

mysqli_stat

(PHP 5, PHP 7)

mysqli::stat -- mysqli_stat — Gets the current system status

说明

面向对象风格

string mysqli::stat ( void )

过程化风格

string mysqli_stat ( mysqli $link )

mysqli_stat() returns a string containing information similar to that provided by the 'mysqladmin status' command. This includes uptime in seconds and the number of running threads, questions, reloads, and open tables.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

A string describing the server status. FALSE if an error occurred.

范例

Example #1 mysqli::stat() example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

printf ("System status: %s\n", $mysqli->stat());

$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

printf("System status: %s\n", mysqli_stat($link));

mysqli_close($link);
?>

以上例程会输出：

System status: Uptime: 272  Threads: 1  Questions: 5340  Slow queries: 0
Opens: 13  Flush tables: 1  Open tables: 0  Queries per second avg: 19.632
Memory in use: 8496K  Max memory used: 8560K

参见

  • mysqli_get_server_info() - 返回MySQL服务器的版本号

mysqli::ssl_set
mysqli::stmt_init
MySQLi


初始化一条语句并返回一个用于mysqli_stmt_prepare(调用)的对象

mysqli::stat
mysqli::store_result
MySQLi
PHP Manual

mysqli::stmt_init

mysqli_stmt_init

(PHP 5, PHP 7)

mysqli::stmt_init -- mysqli_stmt_init — 初始化一条语句并返回一个用于mysqli_stmt_prepare(调用)的对象

说明

面向对象风格

mysqli_stmt mysqli::stmt_init ( void )

过程化风格

mysqli_stmt mysqli_stmt_init ( mysqli $link )

分配并初始化一个语句对象用于mysqli_stmt_prepare().

Note:

任何其后调用的mysqli_stmt函数都会失败直到mysqli_stmt_prepare()被调用.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

Returns an object.

参见

  • mysqli_stmt_prepare() - Prepare an SQL statement for execution

mysqli::stat
mysqli::store_result
MySQLi


Transfers a result set from the last query

mysqli::stmt_init
mysqli::$thread_id
MySQLi
PHP Manual

mysqli::store_result

mysqli_store_result

(PHP 5, PHP 7)

mysqli::store_result -- mysqli_store_result — Transfers a result set from the last query

说明

面向对象风格

mysqli_result mysqli::store_result ([ int $option ] )

过程化风格

mysqli_result mysqli_store_result ( mysqli $link [, int $option ] )

Transfers the result set from the last query on the database connection represented by the link parameter to be used with the mysqli_data_seek() function.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

option

The option that you want to set. It can be one of the following values:

Valid options
Name | Description
MYSQLI_STORE_RESULT_COPY_DATA | Copy results from the internal mysqlnd buffer into the PHP variables fetched. By default, mysqlnd will use a reference logic to avoid copying and duplicating results held in memory. For certain result sets, for example, result sets with many small rows, the copy approach can reduce the overall memory usage because PHP variables holding results may be released earlier (available with mysqlnd only, since PHP 5.6.0)

返回值

Returns a buffered result object or FALSE if an error occurred.

Note:

mysqli_store_result() returns FALSE in case the query didn't return a result set (if the query was, for example an INSERT statement). This function also returns FALSE if the reading of the result set failed. You can check if you have got an error by checking if mysqli_error() doesn't return an empty string, if mysqli_errno() returns a non zero value, or if mysqli_field_count() returns a non zero value. Also possible reason for this function returning FALSE after successful call to mysqli_query() can be too large result set (memory for it cannot be allocated). If mysqli_field_count() returns a non-zero value, the statement should have produced a non-empty result set.

注释

Note:

Although it is always good practice to free the memory used by the result of a query using the mysqli_free_result() function, when transferring large result sets using the mysqli_store_result() this becomes particularly important.

范例

See mysqli_multi_query().

参见

  • mysqli_real_query() - 执行一个mysql查询
  • mysqli_use_result() - Initiate a result set retrieval

mysqli::stmt_init
mysqli::$thread_id
MySQLi


Returns the thread ID for the current connection

mysqli::store_result
mysqli::thread_safe
MySQLi
PHP Manual

mysqli::$thread_id

mysqli_thread_id

(PHP 5, PHP 7)

mysqli::$thread_id -- mysqli_thread_id — Returns the thread ID for the current connection

说明

面向对象风格

int $mysqli->thread_id;

过程化风格

int mysqli_thread_id ( mysqli $link )

The mysqli_thread_id() function returns the thread ID for the current connection which can then be killed using the mysqli_kill() function. If the connection is lost and you reconnect with mysqli_ping(), the thread ID will be other. Therefore you should get the thread ID only when you need it.

Note:

The thread ID is assigned on a connection-by-connection basis. Hence, if the connection is broken and then re-established a new thread ID will be assigned.

To kill a running query you can use the SQL command KILL QUERY processid.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

Returns the Thread ID for the current connection.

范例

Example #1 $mysqli->thread_id example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* determine our thread id */
$thread_id = $mysqli->thread_id;

/* Kill connection */
$mysqli->kill($thread_id);

/* This should produce an error */
if (!$mysqli->query("CREATE TABLE myCity LIKE City")) {
    printf("Error: %s\n", $mysqli->error);
    exit;
}

/* close connection */
$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* determine our thread id */
$thread_id = mysqli_thread_id($link);

/* Kill connection */
mysqli_kill($link, $thread_id);

/* This should produce an error */
if (!mysqli_query($link, "CREATE TABLE myCity LIKE City")) {
    printf("Error: %s\n", mysqli_error($link));
    exit;
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Error: MySQL server has gone away

参见

  • mysqli_kill() - Asks the server to kill a MySQL thread

mysqli::store_result
mysqli::thread_safe
MySQLi


返回是否是线程安全的

mysqli::$thread_id
mysqli::use_result
MySQLi
PHP Manual

mysqli::thread_safe

mysqli_thread_safe

(PHP 5, PHP 7)

mysqli::thread_safe -- mysqli_thread_safe — 返回是否是线程安全的

说明

过程化风格

bool mysqli_thread_safe ( void )

告知本数据库客户端库是否编译为线程安全的。 Tells whether the client library is compiled as thread-safe.

返回值

如果是的话，返回TRUE，否则返回FALSE。

mysqli::$thread_id
mysqli::use_result
MySQLi


Initiate a result set retrieval

mysqli::thread_safe
mysqli::$warning_count
MySQLi
PHP Manual

mysqli::use_result

mysqli_use_result

(PHP 5, PHP 7)

mysqli::use_result -- mysqli_use_result — Initiate a result set retrieval

说明

面向对象风格

mysqli_result mysqli::use_result ( void )

过程化风格

mysqli_result mysqli_use_result ( mysqli $link )

Used to initiate the retrieval of a result set from the last query executed using the mysqli_real_query() function on the database connection.

Either this or the mysqli_store_result() function must be called before the results of a query can be retrieved, and one or the other must be called to prevent the next query on that database connection from failing.

Note:

The mysqli_use_result() function does not transfer the entire result set from the database and hence cannot be used functions such as mysqli_data_seek() to move to a particular row within the set. To use this functionality, the result set must be stored using mysqli_store_result(). One should not use mysqli_use_result() if a lot of processing on the client side is performed, since this will tie up the server and prevent other threads from updating any tables from which the data is being fetched.

返回值

Returns an unbuffered result object or FALSE if an error occurred.

范例

Example #1 mysqli::use_result() example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query  = "SELECT CURRENT_USER();";
$query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5";

/* execute multi query */
if ($mysqli->multi_query($query)) {
    do {
        /* store first result set */
        if ($result = $mysqli->use_result()) {
            while ($row = $result->fetch_row()) {
                printf("%s\n", $row[0]);
            }
            $result->close();
        }
        /* print divider */
        if ($mysqli->more_results()) {
            printf("-----------------\n");
        }
    } while ($mysqli->next_result());
}

/* close connection */
$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query  = "SELECT CURRENT_USER();";
$query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5";

/* execute multi query */
if (mysqli_multi_query($link, $query)) {
    do {
        /* store first result set */
        if ($result = mysqli_use_result($link)) {
            while ($row = mysqli_fetch_row($result)) {
                printf("%s\n", $row[0]);
            }
            mysqli_free_result($result);
        }
        /* print divider */
        if (mysqli_more_results($link)) {
            printf("-----------------\n");
        }
    } while (mysqli_next_result($link));
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

my_user@localhost
-----------------
Amersfoort
Maastricht
Dordrecht
Leiden
Haarlemmermeer

参见

  • mysqli_real_query() - 执行一个mysql查询
  • mysqli_store_result() - Transfers a result set from the last query

mysqli::thread_safe
mysqli::$warning_count
MySQLi


Returns the number of warnings from the last query for the given link

mysqli::use_result
MySQLi_STMT
MySQLi
PHP Manual

mysqli::$warning_count

mysqli_warning_count

(PHP 5, PHP 7)

mysqli::$warning_count -- mysqli_warning_count — Returns the number of warnings from the last query for the given link

说明

面向对象风格

int $mysqli->warning_count;

过程化风格

int mysqli_warning_count ( mysqli $link )

Returns the number of warnings from the last query in the connection.

Note:

For retrieving warning messages you can use the SQL command SHOW WARNINGS [limit row_count].

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

返回值

Number of warnings or zero if there are no warnings.

范例

Example #1 $mysqli->warning_count example

面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$mysqli->query("CREATE TABLE myCity LIKE City");

/* a remarkable city in Wales */
$query = "INSERT INTO myCity (CountryCode, Name) VALUES('GBR',
        'Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch')";

$mysqli->query($query);

if ($mysqli->warning_count) {
    if ($result = $mysqli->query("SHOW WARNINGS")) {
        $row = $result->fetch_row();
        printf("%s (%d): %s\n", $row[0], $row[1], $row[2]);
        $result->close();
    }
}

/* close connection */
$mysqli->close();
?>

过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

mysqli_query($link, "CREATE TABLE myCity LIKE City");

/* a remarkable long city name in Wales */
$query = "INSERT INTO myCity (CountryCode, Name) VALUES('GBR',
        'Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch')";

mysqli_query($link, $query);

if (mysqli_warning_count($link)) {
    if ($result = mysqli_query($link, "SHOW WARNINGS")) {
        $row = mysqli_fetch_row($result);
        printf("%s (%d): %s\n", $row[0], $row[1], $row[2]);
        mysqli_free_result($result);
    }
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Warning (1264): Data truncated for column 'Name' at row 1

参见

  • mysqli_errno() - 返回最近函数调用的错误代码
  • mysqli_error() - Returns a string description of the last error
  • mysqli_sqlstate() - Returns the SQLSTATE error from previous MySQL operation

mysqli::use_result
MySQLi_STMT
MySQLi


MySQLi_STMT类

(PHP 5, PHP 7)

简介

代表一个prepared语句。

类摘要

MySQLi_STMT {
/* 属性 */
int $mysqli_stmt->affected_rows;
int $mysqli_stmt->errno;
array $mysqli_stmt->error_list;
string $mysqli_stmt->error;
int $mysqli_stmt->field_count;
int $mysqli_stmt->insert_id;
int $mysqli_stmt->num_rows;
int $mysqli_stmt->param_count;
string $mysqli_stmt->sqlstate;
/* 方法 */
int mysqli_stmt_affected_rows ( mysqli_stmt $stmt )
int mysqli_stmt::attr_get ( int $attr )
bool mysqli_stmt::attr_set ( int $attr , int $mode )
bool mysqli_stmt::bind_param ( string $types , mixed &$var1 [, mixed &$... ] )
bool mysqli_stmt::bind_result ( mixed &$var1 [, mixed &$... ] )
bool mysqli_stmt::close ( void )
void mysqli_stmt::data_seek ( int $offset )
int mysqli_stmt_errno ( mysqli_stmt $stmt )
array mysqli_stmt_error_list ( mysqli_stmt $stmt )
string mysqli_stmt_error ( mysqli_stmt $stmt )
bool mysqli_stmt::execute ( void )
bool mysqli_stmt::fetch ( void )
int mysqli_stmt_field_count ( mysqli_stmt $stmt )
void mysqli_stmt::free_result ( void )
mysqli_result mysqli_stmt::get_result ( void )
object mysqli_stmt::get_warnings ( mysqli_stmt $stmt )
mixed mysqli_stmt_insert_id ( mysqli_stmt $stmt )
public bool mysqli_stmt::more_results ( void )
public bool mysqli_stmt::next_result ( void )
int mysqli_stmt_num_rows ( mysqli_stmt $stmt )
int mysqli_stmt_param_count ( mysqli_stmt $stmt )
mixed mysqli_stmt::prepare ( string $query )
bool mysqli_stmt::reset ( void )
mysqli_result mysqli_stmt::result_metadata ( void )
bool mysqli_stmt::send_long_data ( int $param_nr , string $data )
string mysqli_stmt_sqlstate ( mysqli_stmt $stmt )
bool mysqli_stmt::store_result ( void )
}

Table of Contents

  • mysqli_stmt::$affected_rows — Returns the total number of rows changed, deleted, or inserted by the last executed statement
  • mysqli_stmt::attr_get — Used to get the current value of a statement attribute
  • mysqli_stmt::attr_set — Used to modify the behavior of a prepared statement
  • mysqli_stmt::bind_param — Binds variables to a prepared statement as parameters
  • mysqli_stmt::bind_result — Binds variables to a prepared statement for result storage
  • mysqli_stmt::close — Closes a prepared statement
  • mysqli_stmt::__construct — Constructs a new mysqli_stmt object
  • mysqli_stmt::data_seek — Seeks to an arbitrary row in statement result set
  • mysqli_stmt::$errno — Returns the error code for the most recent statement call
  • mysqli_stmt::$error_list — Returns a list of errors from the last statement executed
  • mysqli_stmt::$error — Returns a string description for last statement error
  • mysqli_stmt::execute — Executes a prepared Query
  • mysqli_stmt::fetch — Fetch results from a prepared statement into the bound variables
  • mysqli_stmt::$field_count — Returns the number of field in the given statement
  • mysqli_stmt::free_result — Frees stored result memory for the given statement handle
  • mysqli_stmt::get_result — Gets a result set from a prepared statement
  • mysqli_stmt::get_warnings — Get result of SHOW WARNINGS
  • mysqli_stmt::$insert_id — Get the ID generated from the previous INSERT operation
  • mysqli_stmt::more_results — Check if there are more query results from a multiple query
  • mysqli_stmt::next_result — Reads the next result from a multiple query
  • mysqli_stmt::$num_rows — Return the number of rows in statements result set
  • mysqli_stmt::$param_count — Returns the number of parameter for the given statement
  • mysqli_stmt::prepare — Prepare an SQL statement for execution
  • mysqli_stmt::reset — Resets a prepared statement
  • mysqli_stmt::result_metadata — Returns result set metadata from a prepared statement
  • mysqli_stmt::send_long_data — Send data in blocks
  • mysqli_stmt::$sqlstate — Returns SQLSTATE error from previous statement operation
  • mysqli_stmt::store_result — Transfers a result set from a prepared statement
mysqli::$warning_count
mysqli_stmt::$affected_rows
Mysqli


Returns the total number of rows changed, deleted, or inserted by the last executed statement

MySQLi_STMT
mysqli_stmt::attr_get
MySQLi_STMT
PHP Manual

mysqli_stmt::$affected_rows

mysqli_stmt_affected_rows

(PHP 5, PHP 7)

mysqli_stmt::$affected_rows -- mysqli_stmt_affected_rows — Returns the total number of rows changed, deleted, or inserted by the last executed statement

说明

面向对象风格

int $mysqli_stmt->affected_rows;

过程化风格

int mysqli_stmt_affected_rows ( mysqli_stmt $stmt )

Returns the number of rows affected by INSERT, UPDATE, or DELETE query.

This function only works with queries which update a table. In order to get the number of rows from a SELECT query, use mysqli_stmt_num_rows() instead.

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

返回值

An integer greater than zero indicates the number of rows affected or retrieved. Zero indicates that no records where updated for an UPDATE/DELETE statement, no rows matched the WHERE clause in the query or that no query has yet been executed. -1 indicates that the query has returned an error. NULL indicates an invalid argument was supplied to the function.

Note:

If the number of affected rows is greater than maximal PHP int value, the number of affected rows will be returned as a string value.

范例

Example #1 面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* create temp table */
$mysqli->query("CREATE TEMPORARY TABLE myCountry LIKE Country");

$query = "INSERT INTO myCountry SELECT * FROM Country WHERE Code LIKE ?";

/* prepare statement */
if ($stmt = $mysqli->prepare($query)) {

    /* Bind variable for placeholder */
    $code = 'A%';
    $stmt->bind_param("s", $code);

    /* execute statement */
    $stmt->execute();

    printf("rows inserted: %d\n", $stmt->affected_rows);

    /* close statement */
    $stmt->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* create temp table */
mysqli_query($link, "CREATE TEMPORARY TABLE myCountry LIKE Country");

$query = "INSERT INTO myCountry SELECT * FROM Country WHERE Code LIKE ?";

/* prepare statement */
if ($stmt = mysqli_prepare($link, $query)) {

    /* Bind variable for placeholder */
    $code = 'A%';
    mysqli_stmt_bind_param($stmt, "s", $code);

    /* execute statement */
    mysqli_stmt_execute($stmt);

    printf("rows inserted: %d\n", mysqli_stmt_affected_rows($stmt));

    /* close statement */
    mysqli_stmt_close($stmt);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

rows inserted: 17

参见

  • mysqli_stmt_num_rows() - Return the number of rows in statements result set
  • mysqli_prepare() - Prepare an SQL statement for execution

MySQLi_STMT
mysqli_stmt::attr_get
MySQLi_STMT


Used to get the current value of a statement attribute

mysqli_stmt::$affected_rows
mysqli_stmt::attr_set
MySQLi_STMT
PHP Manual

mysqli_stmt::attr_get

mysqli_stmt_attr_get

(PHP 5, PHP 7)

mysqli_stmt::attr_get -- mysqli_stmt_attr_get — Used to get the current value of a statement attribute

说明

面向对象风格

int mysqli_stmt::attr_get ( int $attr )

过程化风格

int mysqli_stmt_attr_get ( mysqli_stmt $stmt , int $attr )

Gets the current value of a statement attribute.

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

attr

The attribute that you want to get.

返回值

Returns FALSE if the attribute is not found, otherwise returns the value of the attribute.

mysqli_stmt::$affected_rows
mysqli_stmt::attr_set
MySQLi_STMT


Used to modify the behavior of a prepared statement

mysqli_stmt::attr_get
mysqli_stmt::bind_param
MySQLi_STMT
PHP Manual

mysqli_stmt::attr_set

mysqli_stmt_attr_set

(PHP 5, PHP 7)

mysqli_stmt::attr_set -- mysqli_stmt_attr_set — Used to modify the behavior of a prepared statement

说明

面向对象风格

bool mysqli_stmt::attr_set ( int $attr , int $mode )

过程化风格

bool mysqli_stmt_attr_set ( mysqli_stmt $stmt , int $attr , int $mode )

Used to modify the behavior of a prepared statement. This function may be called multiple times to set several attributes.

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

attr

The attribute that you want to set. It can have one of the following values:

Attribute values
Character | Description
MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH | Setting to TRUE causes mysqli_stmt_store_result() to update the metadata MYSQL_FIELD->max_length value.
MYSQLI_STMT_ATTR_CURSOR_TYPE | Type of cursor to open for statement when mysqli_stmt_execute() is invoked. mode can be MYSQLI_CURSOR_TYPE_NO_CURSOR (the default) or MYSQLI_CURSOR_TYPE_READ_ONLY.
MYSQLI_STMT_ATTR_PREFETCH_ROWS | Number of rows to fetch from server at a time when using a cursor. mode can be in the range from 1 to the maximum value of unsigned long. The default is 1.

If you use the MYSQLI_STMT_ATTR_CURSOR_TYPE option with MYSQLI_CURSOR_TYPE_READ_ONLY, a cursor is opened for the statement when you invoke mysqli_stmt_execute(). If there is already an open cursor from a previous mysqli_stmt_execute() call, it closes the cursor before opening a new one. mysqli_stmt_reset() also closes any open cursor before preparing the statement for re-execution. mysqli_stmt_free_result() closes any open cursor.

If you open a cursor for a prepared statement, mysqli_stmt_store_result() is unnecessary.

mode

The value to assign to the attribute.

参见

  • » Connector/MySQL mysql_stmt_attr_set()

mysqli_stmt::attr_get
mysqli_stmt::bind_param
MySQLi_STMT


Binds variables to a prepared statement as parameters

mysqli_stmt::attr_set
mysqli_stmt::bind_result
MySQLi_STMT
PHP Manual

mysqli_stmt::bind_param

mysqli_stmt_bind_param

(PHP 5, PHP 7)

mysqli_stmt::bind_param -- mysqli_stmt_bind_param — Binds variables to a prepared statement as parameters

说明

面向对象风格

bool mysqli_stmt::bind_param ( string $types , mixed &$var1 [, mixed &$... ] )

过程化风格

bool mysqli_stmt_bind_param ( mysqli_stmt $stmt , string $types , mixed &$var1 [, mixed &$... ] )

Bind variables for the parameter markers in the SQL statement that was passed to mysqli_prepare().

Note:

If data size of a variable exceeds max. allowed packet size (max_allowed_packet), you have to specify b in types and use mysqli_stmt_send_long_data() to send the data in packets.

Note:

Care must be taken when using mysqli_stmt_bind_param() in conjunction with call_user_func_array(). Note that mysqli_stmt_bind_param() requires parameters to be passed by reference, whereas call_user_func_array() can accept as a parameter a list of variables that can represent references or values.

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

types

A string that contains one or more characters which specify the types for the corresponding bind variables:

Type specification chars
Character | Description
i | corresponding variable has type integer
d | corresponding variable has type double
s | corresponding variable has type string
b | corresponding variable is a blob and will be sent in packets

var1

The number of variables and length of string types must match the parameters in the statement.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd', $code, $language, $official, $percent);

$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;

/* execute prepared statement */
$stmt->execute();

printf("%d Row inserted.\n", $stmt->affected_rows);

/* close statement and connection */
$stmt->close();

/* Clean up table CountryLanguage */
$mysqli->query("DELETE FROM CountryLanguage WHERE Language='Bavarian'");
printf("%d Row deleted.\n", $mysqli->affected_rows);

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'world');

/* check connection */
if (!$link) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$stmt = mysqli_prepare($link, "INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($stmt, 'sssd', $code, $language, $official, $percent);

$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;

/* execute prepared statement */
mysqli_stmt_execute($stmt);

printf("%d Row inserted.\n", mysqli_stmt_affected_rows($stmt));

/* close statement and connection */
mysqli_stmt_close($stmt);

/* Clean up table CountryLanguage */
mysqli_query($link, "DELETE FROM CountryLanguage WHERE Language='Bavarian'");
printf("%d Row deleted.\n", mysqli_affected_rows($link));

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

1 Row inserted.
1 Row deleted.

参见

  • mysqli_stmt_bind_result() - Binds variables to a prepared statement for result storage
  • mysqli_stmt_execute() - Executes a prepared Query
  • mysqli_stmt_fetch() - Fetch results from a prepared statement into the bound variables
  • mysqli_prepare() - Prepare an SQL statement for execution
  • mysqli_stmt_send_long_data() - Send data in blocks
  • mysqli_stmt_errno() - Returns the error code for the most recent statement call
  • mysqli_stmt_error() - Returns a string description for last statement error

mysqli_stmt::attr_set
mysqli_stmt::bind_result
MySQLi_STMT


Binds variables to a prepared statement for result storage

mysqli_stmt::bind_param
mysqli_stmt::close
MySQLi_STMT
PHP Manual

mysqli_stmt::bind_result

mysqli_stmt_bind_result

(PHP 5, PHP 7)

mysqli_stmt::bind_result -- mysqli_stmt_bind_result — Binds variables to a prepared statement for result storage

说明

面向对象风格

bool mysqli_stmt::bind_result ( mixed &$var1 [, mixed &$... ] )

过程化风格

bool mysqli_stmt_bind_result ( mysqli_stmt $stmt , mixed &$var1 [, mixed &$... ] )

Binds columns in the result set to variables.

When mysqli_stmt_fetch() is called to fetch data, the MySQL client/server protocol places the data for the bound columns into the specified variables var1, ....

Note:

Note that all columns must be bound after mysqli_stmt_execute() and prior to calling mysqli_stmt_fetch(). Depending on column types bound variables can silently change to the corresponding PHP type.

A column can be bound or rebound at any time, even after a result set has been partially retrieved. The new binding takes effect the next time mysqli_stmt_fetch() is called.

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

var1

The variable to be bound.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* prepare statement */
if ($stmt = $mysqli->prepare("SELECT Code, Name FROM Country ORDER BY Name LIMIT 5")) {
    $stmt->execute();

    /* bind variables to prepared statement */
    $stmt->bind_result($col1, $col2);

    /* fetch values */
    while ($stmt->fetch()) {
        printf("%s %s\n", $col1, $col2);
    }

    /* close statement */
    $stmt->close();
}
/* close connection */
$mysqli->close();

?>

Example #2 过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (!$link) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* prepare statement */
if ($stmt = mysqli_prepare($link, "SELECT Code, Name FROM Country ORDER BY Name LIMIT 5")) {
    mysqli_stmt_execute($stmt);

    /* bind variables to prepared statement */
    mysqli_stmt_bind_result($stmt, $col1, $col2);

    /* fetch values */
    while (mysqli_stmt_fetch($stmt)) {
        printf("%s %s\n", $col1, $col2);
    }

    /* close statement */
    mysqli_stmt_close($stmt);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

AFG Afghanistan
ALB Albania
DZA Algeria
ASM American Samoa
AND Andorra

参见

  • mysqli_stmt_get_result() - Gets a result set from a prepared statement
  • mysqli_stmt_bind_param() - Binds variables to a prepared statement as parameters
  • mysqli_stmt_execute() - Executes a prepared Query
  • mysqli_stmt_fetch() - Fetch results from a prepared statement into the bound variables
  • mysqli_prepare() - Prepare an SQL statement for execution
  • mysqli_stmt_prepare() - Prepare an SQL statement for execution
  • mysqli_stmt_init() - 初始化一条语句并返回一个用于mysqli_stmt_prepare(调用)的对象
  • mysqli_stmt_errno() - Returns the error code for the most recent statement call
  • mysqli_stmt_error() - Returns a string description for last statement error

mysqli_stmt::bind_param
mysqli_stmt::close
MySQLi_STMT


Closes a prepared statement

mysqli_stmt::bind_result
mysqli_stmt::__construct
MySQLi_STMT
PHP Manual

mysqli_stmt::close

mysqli_stmt_close

(PHP 5, PHP 7)

mysqli_stmt::close -- mysqli_stmt_close — Closes a prepared statement

说明

面向对象风格

bool mysqli_stmt::close ( void )

过程化风格

bool mysqli_stmt_close ( mysqli_stmt $stmt )

Closes a prepared statement. mysqli_stmt_close() also deallocates the statement handle. If the current statement has pending or unread results, this function cancels them so that the next query can be executed.

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • mysqli_prepare() - Prepare an SQL statement for execution

mysqli_stmt::bind_result
mysqli_stmt::__construct
MySQLi_STMT


Constructs a new mysqli_stmt object

mysqli_stmt::close
mysqli_stmt::data_seek
MySQLi_STMT
PHP Manual

mysqli_stmt::__construct

(PHP 5, PHP 7)

mysqli_stmt::__construct — Constructs a new mysqli_stmt object

说明

mysqli_stmt::__construct ( mysqli $link [, string $query ] )

This method constructs a new mysqli_stmt object.

Note:

In general, you should use either mysqli_prepare() or mysqli_stmt_init() to create a mysqli_stmt object, rather than directly instantiating the object with new mysqli_stmt. This method (and the ability to directly instantiate mysqli_stmt objects) may be deprecated and removed in the future.

参数

link

仅以过程化样式：由mysqli_connect() 或 mysqli_init() 返回的链接标识。

query

The query, as a string. If this parameter is omitted, then the constructor behaves identically to mysqli_stmt_init(), if provided, then it behaves as per mysqli_prepare().

参见

  • mysqli_prepare() - Prepare an SQL statement for execution
  • mysqli_stmt_init() - 初始化一条语句并返回一个用于mysqli_stmt_prepare(调用)的对象

mysqli_stmt::close
mysqli_stmt::data_seek
MySQLi_STMT


Seeks to an arbitrary row in statement result set

mysqli_stmt::__construct
mysqli_stmt::$errno
MySQLi_STMT
PHP Manual

mysqli_stmt::data_seek

mysqli_stmt_data_seek

(PHP 5, PHP 7)

mysqli_stmt::data_seek -- mysqli_stmt_data_seek — Seeks to an arbitrary row in statement result set

说明

面向对象风格

void mysqli_stmt::data_seek ( int $offset )

过程化风格

void mysqli_stmt_data_seek ( mysqli_stmt $stmt , int $offset )

Seeks to an arbitrary result pointer in the statement result set.

mysqli_stmt_store_result() must be called prior to mysqli_stmt_data_seek().

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

offset

Must be between zero and the total number of rows minus one (0.. mysqli_stmt_num_rows() - 1).

返回值

没有返回值。

范例

Example #1 面向对象风格

<?php
/* Open a connection */
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER BY Name";
if ($stmt = $mysqli->prepare($query)) {

    /* execute query */
    $stmt->execute();

    /* bind result variables */
    $stmt->bind_result($name, $code);

    /* store result */
    $stmt->store_result();

    /* seek to row no. 400 */
    $stmt->data_seek(399);

    /* fetch values */
    $stmt->fetch();

    printf ("City: %s  Countrycode: %s\n", $name, $code);

    /* close statement */
    $stmt->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
/* Open a connection */
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER BY Name";
if ($stmt = mysqli_prepare($link, $query)) {

    /* execute query */
    mysqli_stmt_execute($stmt);

    /* bind result variables */
    mysqli_stmt_bind_result($stmt, $name, $code);

    /* store result */
    mysqli_stmt_store_result($stmt);

    /* seek to row no. 400 */
    mysqli_stmt_data_seek($stmt, 399);

    /* fetch values */
    mysqli_stmt_fetch($stmt);

    printf ("City: %s  Countrycode: %s\n", $name, $code);

    /* close statement */
    mysqli_stmt_close($stmt);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

City: Benin City  Countrycode: NGA

参见

  • mysqli_prepare() - Prepare an SQL statement for execution

mysqli_stmt::__construct
mysqli_stmt::$errno
MySQLi_STMT


Returns the error code for the most recent statement call

mysqli_stmt::data_seek
mysqli_stmt::$error_list
MySQLi_STMT
PHP Manual

mysqli_stmt::$errno

mysqli_stmt_errno

(PHP 5, PHP 7)

mysqli_stmt::$errno -- mysqli_stmt_errno — Returns the error code for the most recent statement call

说明

面向对象风格

int $mysqli_stmt->errno;

过程化风格

int mysqli_stmt_errno ( mysqli_stmt $stmt )

Returns the error code for the most recently invoked statement function that can succeed or fail.

Client error message numbers are listed in the MySQL errmsg.h header file, server error message numbers are listed in mysqld_error.h. In the MySQL source distribution you can find a complete list of error messages and error numbers in the file Docs/mysqld_error.txt.

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

返回值

An error code value. Zero means no error occurred.

范例

Example #1 面向对象风格

<?php
/* Open a connection */
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$mysqli->query("CREATE TABLE myCountry LIKE Country");
$mysqli->query("INSERT INTO myCountry SELECT * FROM Country");

$query = "SELECT Name, Code FROM myCountry ORDER BY Name";
if ($stmt = $mysqli->prepare($query)) {

    /* drop table */
    $mysqli->query("DROP TABLE myCountry");

    /* execute query */
    $stmt->execute();

    printf("Error: %d.\n", $stmt->errno);

    /* close statement */
    $stmt->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
/* Open a connection */
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

mysqli_query($link, "CREATE TABLE myCountry LIKE Country");
mysqli_query($link, "INSERT INTO myCountry SELECT * FROM Country");

$query = "SELECT Name, Code FROM myCountry ORDER BY Name";
if ($stmt = mysqli_prepare($link, $query)) {

    /* drop table */
    mysqli_query($link, "DROP TABLE myCountry");

    /* execute query */
    mysqli_stmt_execute($stmt);

    printf("Error: %d.\n", mysqli_stmt_errno($stmt));

    /* close statement */
    mysqli_stmt_close($stmt);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Error: 1146.

参见

  • mysqli_stmt_error() - Returns a string description for last statement error
  • mysqli_stmt_sqlstate() - Returns SQLSTATE error from previous statement operation

mysqli_stmt::data_seek
mysqli_stmt::$error_list
MySQLi_STMT


Returns a list of errors from the last statement executed

mysqli_stmt::$errno
mysqli_stmt::$error
MySQLi_STMT
PHP Manual

mysqli_stmt::$error_list

mysqli_stmt_error_list

(PHP 5 >= 5.4.0, PHP 7)

mysqli_stmt::$error_list -- mysqli_stmt_error_list — Returns a list of errors from the last statement executed

说明

面向对象风格

array $mysqli_stmt->error_list;

过程化风格

array mysqli_stmt_error_list ( mysqli_stmt $stmt )

Returns an array of errors for the most recently invoked statement function that can succeed or fail.

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

返回值

A list of errors, each as an associative array containing the errno, error, and sqlstate.

范例

Example #1 面向对象风格

<?php
/* Open a connection */
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$mysqli->query("CREATE TABLE myCountry LIKE Country");
$mysqli->query("INSERT INTO myCountry SELECT * FROM Country");

$query = "SELECT Name, Code FROM myCountry ORDER BY Name";
if ($stmt = $mysqli->prepare($query)) {

    /* drop table */
    $mysqli->query("DROP TABLE myCountry");

    /* execute query */
    $stmt->execute();

    echo "Error:\n";
    print_r($stmt->error_list);

    /* close statement */
    $stmt->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
/* Open a connection */
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

mysqli_query($link, "CREATE TABLE myCountry LIKE Country");
mysqli_query($link, "INSERT INTO myCountry SELECT * FROM Country");

$query = "SELECT Name, Code FROM myCountry ORDER BY Name";
if ($stmt = mysqli_prepare($link, $query)) {

    /* drop table */
    mysqli_query($link, "DROP TABLE myCountry");

    /* execute query */
    mysqli_stmt_execute($stmt);

    echo "Error:\n";
    print_r(mysql_stmt_error_list($stmt));

    /* close statement */
    mysqli_stmt_close($stmt);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Array
(
    [0] => Array
        (
            [errno] => 1146
            [sqlstate] => 42S02
            [error] => Table 'world.myCountry' doesn't exist
        )

)

参见

  • mysqli_stmt_error() - Returns a string description for last statement error
  • mysqli_stmt_errno() - Returns the error code for the most recent statement call
  • mysqli_stmt_sqlstate() - Returns SQLSTATE error from previous statement operation

mysqli_stmt::$errno
mysqli_stmt::$error
MySQLi_STMT


Returns a string description for last statement error

mysqli_stmt::$error_list
mysqli_stmt::execute
MySQLi_STMT
PHP Manual

mysqli_stmt::$error

mysqli_stmt_error

(PHP 5, PHP 7)

mysqli_stmt::$error -- mysqli_stmt_error — Returns a string description for last statement error

说明

面向对象风格

string $mysqli_stmt->error;

过程化风格

string mysqli_stmt_error ( mysqli_stmt $stmt )

Returns a string containing the error message for the most recently invoked statement function that can succeed or fail.

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

返回值

A string that describes the error. An empty string if no error occurred.

范例

Example #1 面向对象风格

<?php
/* Open a connection */
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$mysqli->query("CREATE TABLE myCountry LIKE Country");
$mysqli->query("INSERT INTO myCountry SELECT * FROM Country");

$query = "SELECT Name, Code FROM myCountry ORDER BY Name";
if ($stmt = $mysqli->prepare($query)) {

    /* drop table */
    $mysqli->query("DROP TABLE myCountry");

    /* execute query */
    $stmt->execute();

    printf("Error: %s.\n", $stmt->error);

    /* close statement */
    $stmt->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
/* Open a connection */
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

mysqli_query($link, "CREATE TABLE myCountry LIKE Country");
mysqli_query($link, "INSERT INTO myCountry SELECT * FROM Country");

$query = "SELECT Name, Code FROM myCountry ORDER BY Name";
if ($stmt = mysqli_prepare($link, $query)) {

    /* drop table */
    mysqli_query($link, "DROP TABLE myCountry");

    /* execute query */
    mysqli_stmt_execute($stmt);

    printf("Error: %s.\n", mysqli_stmt_error($stmt));

    /* close statement */
    mysqli_stmt_close($stmt);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Error: Table 'world.myCountry' doesn't exist.

参见

  • mysqli_stmt_errno() - Returns the error code for the most recent statement call
  • mysqli_stmt_sqlstate() - Returns SQLSTATE error from previous statement operation

mysqli_stmt::$error_list
mysqli_stmt::execute
MySQLi_STMT


Executes a prepared Query

mysqli_stmt::$error
mysqli_stmt::fetch
MySQLi_STMT
PHP Manual

mysqli_stmt::execute

mysqli_stmt_execute

(PHP 5, PHP 7)

mysqli_stmt::execute -- mysqli_stmt_execute — Executes a prepared Query

说明

面向对象风格

bool mysqli_stmt::execute ( void )

过程化风格

bool mysqli_stmt_execute ( mysqli_stmt $stmt )

Executes a query that has been previously prepared using the mysqli_prepare() function. When executed any parameter markers which exist will automatically be replaced with the appropriate data.

If the statement is UPDATE, DELETE, or INSERT, the total number of affected rows can be determined by using the mysqli_stmt_affected_rows() function. Likewise, if the query yields a result set the mysqli_stmt_fetch() function is used.

Note:

When using mysqli_stmt_execute(), the mysqli_stmt_fetch() function must be used to fetch the data prior to performing any additional queries.

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$mysqli->query("CREATE TABLE myCity LIKE City");

/* Prepare an insert statement */
$query = "INSERT INTO myCity (Name, CountryCode, District) VALUES (?,?,?)";
$stmt = $mysqli->prepare($query);

$stmt->bind_param("sss", $val1, $val2, $val3);

$val1 = 'Stuttgart';
$val2 = 'DEU';
$val3 = 'Baden-Wuerttemberg';

/* Execute the statement */
$stmt->execute();

$val1 = 'Bordeaux';
$val2 = 'FRA';
$val3 = 'Aquitaine';

/* Execute the statement */
$stmt->execute();

/* close statement */
$stmt->close();

/* retrieve all rows from myCity */
$query = "SELECT Name, CountryCode, District FROM myCity";
if ($result = $mysqli->query($query)) {
    while ($row = $result->fetch_row()) {
        printf("%s (%s,%s)\n", $row[0], $row[1], $row[2]);
    }
    /* free result set */
    $result->close();
}

/* remove table */
$mysqli->query("DROP TABLE myCity");

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

mysqli_query($link, "CREATE TABLE myCity LIKE City");

/* Prepare an insert statement */
$query = "INSERT INTO myCity (Name, CountryCode, District) VALUES (?,?,?)";
$stmt = mysqli_prepare($link, $query);

mysqli_stmt_bind_param($stmt, "sss", $val1, $val2, $val3);

$val1 = 'Stuttgart';
$val2 = 'DEU';
$val3 = 'Baden-Wuerttemberg';

/* Execute the statement */
mysqli_stmt_execute($stmt);

$val1 = 'Bordeaux';
$val2 = 'FRA';
$val3 = 'Aquitaine';

/* Execute the statement */
mysqli_stmt_execute($stmt);

/* close statement */
mysqli_stmt_close($stmt);

/* retrieve all rows from myCity */
$query = "SELECT Name, CountryCode, District FROM myCity";
if ($result = mysqli_query($link, $query)) {
    while ($row = mysqli_fetch_row($result)) {
        printf("%s (%s,%s)\n", $row[0], $row[1], $row[2]);
    }
    /* free result set */
    mysqli_free_result($result);
}

/* remove table */
mysqli_query($link, "DROP TABLE myCity");

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Stuttgart (DEU,Baden-Wuerttemberg)
Bordeaux (FRA,Aquitaine)

参见

  • mysqli_prepare() - Prepare an SQL statement for execution
  • mysqli_stmt_bind_param() - Binds variables to a prepared statement as parameters
  • mysqli_stmt_get_result() - Gets a result set from a prepared statement

mysqli_stmt::$error
mysqli_stmt::fetch
MySQLi_STMT


Fetch results from a prepared statement into the bound variables

mysqli_stmt::execute
mysqli_stmt::$field_count
MySQLi_STMT
PHP Manual

mysqli_stmt::fetch

mysqli_stmt_fetch

(PHP 5, PHP 7)

mysqli_stmt::fetch -- mysqli_stmt_fetch — Fetch results from a prepared statement into the bound variables

说明

面向对象风格

bool mysqli_stmt::fetch ( void )

过程化风格

bool mysqli_stmt_fetch ( mysqli_stmt $stmt )

Fetch the result from a prepared statement into the variables bound by mysqli_stmt_bind_result().

Note:

Note that all columns must be bound by the application before calling mysqli_stmt_fetch().

Note:

Data are transferred unbuffered without calling mysqli_stmt_store_result() which can decrease performance (but reduces memory cost).

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

返回值

返回值
Value | Description
TRUE | Success. Data has been fetched
FALSE | Error occurred
NULL | No more rows/data exists or data truncation occurred

范例

Example #1 面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 150,5";

if ($stmt = $mysqli->prepare($query)) {

    /* execute statement */
    $stmt->execute();

    /* bind result variables */
    $stmt->bind_result($name, $code);

    /* fetch values */
    while ($stmt->fetch()) {
        printf ("%s (%s)\n", $name, $code);
    }

    /* close statement */
    $stmt->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 150,5";

if ($stmt = mysqli_prepare($link, $query)) {

    /* execute statement */
    mysqli_stmt_execute($stmt);

    /* bind result variables */
    mysqli_stmt_bind_result($stmt, $name, $code);

    /* fetch values */
    while (mysqli_stmt_fetch($stmt)) {
        printf ("%s (%s)\n", $name, $code);
    }

    /* close statement */
    mysqli_stmt_close($stmt);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Rockford (USA)
Tallahassee (USA)
Salinas (USA)
Santa Clarita (USA)
Springfield (USA)

参见

  • mysqli_prepare() - Prepare an SQL statement for execution
  • mysqli_stmt_errno() - Returns the error code for the most recent statement call
  • mysqli_stmt_error() - Returns a string description for last statement error
  • mysqli_stmt_bind_result() - Binds variables to a prepared statement for result storage

mysqli_stmt::execute
mysqli_stmt::$field_count
MySQLi_STMT


Returns the number of field in the given statement

mysqli_stmt::fetch
mysqli_stmt::free_result
MySQLi_STMT
PHP Manual

mysqli_stmt::$field_count

mysqli_stmt_field_count

(PHP 5, PHP 7)

mysqli_stmt::$field_count -- mysqli_stmt_field_count — Returns the number of field in the given statement

说明

面向对象风格

int $mysqli_stmt->field_count;

过程化风格

int mysqli_stmt_field_count ( mysqli_stmt $stmt )
Warning

本函数还未编写文档，仅有参数列表。

mysqli_stmt::fetch
mysqli_stmt::free_result
MySQLi_STMT


Frees stored result memory for the given statement handle

mysqli_stmt::$field_count
mysqli_stmt::get_result
MySQLi_STMT
PHP Manual

mysqli_stmt::free_result

mysqli_stmt_free_result

(PHP 5, PHP 7)

mysqli_stmt::free_result -- mysqli_stmt_free_result — Frees stored result memory for the given statement handle

说明

面向对象风格

void mysqli_stmt::free_result ( void )

过程化风格

void mysqli_stmt_free_result ( mysqli_stmt $stmt )

Frees the result memory associated with the statement, which was allocated by mysqli_stmt_store_result().

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

返回值

没有返回值。

参见

  • mysqli_stmt_store_result() - Transfers a result set from a prepared statement

mysqli_stmt::$field_count
mysqli_stmt::get_result
MySQLi_STMT


Gets a result set from a prepared statement

mysqli_stmt::free_result
mysqli_stmt::get_warnings
MySQLi_STMT
PHP Manual

mysqli_stmt::get_result

mysqli_stmt_get_result

(PHP 5 >= 5.3.0, PHP 7)

mysqli_stmt::get_result -- mysqli_stmt_get_result — Gets a result set from a prepared statement

说明

面向对象风格

mysqli_result mysqli_stmt::get_result ( void )

过程化风格

mysqli_result mysqli_stmt_get_result ( mysqli_stmt $stmt )

Call to return a result set from a prepared statement query.

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

返回值

Returns a resultset for successful SELECT queries, or FALSE for other DML queries or on failure. The mysqli_errno() function can be used to distinguish between the two types of failure.

仅 MySQL 原生驱动

仅可用于 mysqlnd。

范例

Example #1 面向对象风格

<?php

$mysqli = new mysqli("127.0.0.1", "user", "password", "world");

if($mysqli->connect_error)
{
    die("$mysqli->connect_errno: $mysqli->connect_error");
}

$query = "SELECT Name, Population, Continent FROM Country WHERE Continent=? ORDER BY Name LIMIT 1";

$stmt = $mysqli->stmt_init();
if(!$stmt->prepare($query))
{
    print "Failed to prepare statement\n";
}
else
{
    $stmt->bind_param("s", $continent);

    $continent_array = array('Europe','Africa','Asia','North America');

    foreach($continent_array as $continent)
    {
        $stmt->execute();
        $result = $stmt->get_result();
        while ($row = $result->fetch_array(MYSQLI_NUM))
        {
            foreach ($row as $r)
            {
                print "$r ";
            }
            print "\n";
        }
    }
}

$stmt->close();
$mysqli->close();
?>

Example #2 过程化风格

<?php

$link = mysqli_connect("127.0.0.1", "user", "password", "world");

if (!$link)
{
    $error = mysqli_connect_error();
    $errno = mysqli_connect_errno();
    print "$errno: $error\n";
    exit();
}

$query = "SELECT Name, Population, Continent FROM Country WHERE Continent=? ORDER BY Name LIMIT 1";

$stmt = mysqli_stmt_init($link);
if(!mysqli_stmt_prepare($stmt, $query))
{
    print "Failed to prepare statement\n";
}
else
{
    mysqli_stmt_bind_param($stmt, "s", $continent);

    $continent_array = array('Europe','Africa','Asia','North America');

    foreach($continent_array as $continent)
    {
        mysqli_stmt_execute($stmt);
        $result = mysqli_stmt_get_result($stmt);
        while ($row = mysqli_fetch_array($result, MYSQLI_NUM))
        {
            foreach ($row as $r)
            {
                print "$r ";
            }
            print "\n";
        }
    }
}
mysqli_stmt_close($stmt);
mysqli_close($link);
?>

以上例程会输出：

Albania 3401200 Europe
Algeria 31471000 Africa
Afghanistan 22720000 Asia
Anguilla 8000 North America

参见

  • mysqli_prepare() - Prepare an SQL statement for execution
  • mysqli_stmt_result_metadata() - Returns result set metadata from a prepared statement
  • mysqli_stmt_fetch() - Fetch results from a prepared statement into the bound variables
  • mysqli_fetch_array() - Fetch a result row as an associative, a numeric array, or both
  • mysqli_stmt_store_result() - Transfers a result set from a prepared statement
  • mysqli_errno() - 返回最近函数调用的错误代码

mysqli_stmt::free_result
mysqli_stmt::get_warnings
MySQLi_STMT


Get result of SHOW WARNINGS

mysqli_stmt::get_result
mysqli_stmt::$insert_id
MySQLi_STMT
PHP Manual

mysqli_stmt::get_warnings

mysqli_stmt_get_warnings

(PHP 5 >= 5.1.0, PHP 7)

mysqli_stmt::get_warnings -- mysqli_stmt_get_warnings — Get result of SHOW WARNINGS

说明

面向对象风格

object mysqli_stmt::get_warnings ( mysqli_stmt $stmt )

过程化风格

object mysqli_stmt_get_warnings ( mysqli_stmt $stmt )
Warning

本函数还未编写文档，仅有参数列表。

mysqli_stmt::get_result
mysqli_stmt::$insert_id
MySQLi_STMT


Get the ID generated from the previous INSERT operation

mysqli_stmt::get_warnings
mysqli_stmt::more_results
MySQLi_STMT
PHP Manual

mysqli_stmt::$insert_id

mysqli_stmt_insert_id

(PHP 5, PHP 7)

mysqli_stmt::$insert_id -- mysqli_stmt_insert_id — Get the ID generated from the previous INSERT operation

说明

面向对象风格

int $mysqli_stmt->insert_id;

过程化风格

mixed mysqli_stmt_insert_id ( mysqli_stmt $stmt )
Warning

本函数还未编写文档，仅有参数列表。

mysqli_stmt::get_warnings
mysqli_stmt::more_results
MySQLi_STMT


Check if there are more query results from a multiple query

mysqli_stmt::$insert_id
mysqli_stmt::next_result
MySQLi_STMT
PHP Manual

mysqli_stmt::more_results

mysqli_stmt_more_results

(PHP 5 >= 5.3.0, PHP 7)

mysqli_stmt::more_results -- mysqli_stmt_more_results — Check if there are more query results from a multiple query

说明

面向对象风格 (method):

public bool mysqli_stmt::more_results ( void )

过程化风格:

bool mysqli_stmt_more_results ( mysql_stmt $stmt )

Checks if there are more query results from a multiple query.

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

返回值

Returns TRUE if more results exist, otherwise FALSE.

仅 MySQL 原生驱动

仅可用于 mysqlnd。

参见

  • mysqli_stmt::next_result() - Reads the next result from a multiple query
  • mysqli::multi_query() - Performs a query on the database

mysqli_stmt::$insert_id
mysqli_stmt::next_result
MySQLi_STMT


Reads the next result from a multiple query

mysqli_stmt::more_results
mysqli_stmt::$num_rows
MySQLi_STMT
PHP Manual

mysqli_stmt::next_result

mysqli_stmt_next_result

(PHP 5 >= 5.3.0, PHP 7)

mysqli_stmt::next_result -- mysqli_stmt_next_result — Reads the next result from a multiple query

说明

面向对象风格 (method):

public bool mysqli_stmt::next_result ( void )

过程化风格:

bool mysqli_stmt_next_result ( mysql_stmt $stmt )

Reads the next result from a multiple query.

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Emits an E_STRICT level error if a result set does not exist, and suggests using mysqli_stmt::more_results() in these cases, before calling mysqli_stmt::next_result().

仅 MySQL 原生驱动

仅可用于 mysqlnd。

参见

  • mysqli_stmt::more_results() - Check if there are more query results from a multiple query
  • mysqli::multi_query() - Performs a query on the database

mysqli_stmt::more_results
mysqli_stmt::$num_rows
MySQLi_STMT


Return the number of rows in statements result set

mysqli_stmt::next_result
mysqli_stmt::$param_count
MySQLi_STMT
PHP Manual

mysqli_stmt::$num_rows

mysqli_stmt_num_rows

(PHP 5, PHP 7)

mysqli_stmt::$num_rows -- mysqli_stmt_num_rows — Return the number of rows in statements result set

说明

面向对象风格

int $mysqli_stmt->num_rows;

过程化风格

int mysqli_stmt_num_rows ( mysqli_stmt $stmt )

Returns the number of rows in the result set. The use of mysqli_stmt_num_rows() depends on whether or not you used mysqli_stmt_store_result() to buffer the entire result set in the statement handle.

If you use mysqli_stmt_store_result(), mysqli_stmt_num_rows() may be called immediately.

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

返回值

An integer representing the number of rows in result set.

范例

Example #1 面向对象风格

<?php
/* Open a connection */
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";
if ($stmt = $mysqli->prepare($query)) {

    /* execute query */
    $stmt->execute();

    /* store result */
    $stmt->store_result();

    printf("Number of rows: %d.\n", $stmt->num_rows);

    /* close statement */
    $stmt->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
/* Open a connection */
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";
if ($stmt = mysqli_prepare($link, $query)) {

    /* execute query */
    mysqli_stmt_execute($stmt);

    /* store result */
    mysqli_stmt_store_result($stmt);

    printf("Number of rows: %d.\n", mysqli_stmt_num_rows($stmt));

    /* close statement */
    mysqli_stmt_close($stmt);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Number of rows: 20.

参见

  • mysqli_stmt_affected_rows() - Returns the total number of rows changed, deleted, or inserted by the last executed statement
  • mysqli_prepare() - Prepare an SQL statement for execution
  • mysqli_stmt_store_result() - Transfers a result set from a prepared statement

mysqli_stmt::next_result
mysqli_stmt::$param_count
MySQLi_STMT


Returns the number of parameter for the given statement

mysqli_stmt::$num_rows
mysqli_stmt::prepare
MySQLi_STMT
PHP Manual

mysqli_stmt::$param_count

mysqli_stmt_param_count

(PHP 5, PHP 7)

mysqli_stmt::$param_count -- mysqli_stmt_param_count — Returns the number of parameter for the given statement

说明

面向对象风格

int $mysqli_stmt->param_count;

过程化风格

int mysqli_stmt_param_count ( mysqli_stmt $stmt )

Returns the number of parameter markers present in the prepared statement.

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

返回值

Returns an integer representing the number of parameters.

范例

Example #1 面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if ($stmt = $mysqli->prepare("SELECT Name FROM Country WHERE Name=? OR Code=?")) {

    $marker = $stmt->param_count;
    printf("Statement has %d markers.\n", $marker);

    /* close statement */
    $stmt->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if ($stmt = mysqli_prepare($link, "SELECT Name FROM Country WHERE Name=? OR Code=?")) {

    $marker = mysqli_stmt_param_count($stmt);
    printf("Statement has %d markers.\n", $marker);

    /* close statement */
    mysqli_stmt_close($stmt);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Statement has 2 markers.

参见

  • mysqli_prepare() - Prepare an SQL statement for execution

mysqli_stmt::$num_rows
mysqli_stmt::prepare
MySQLi_STMT


Prepare an SQL statement for execution

mysqli_stmt::$param_count
mysqli_stmt::reset
MySQLi_STMT
PHP Manual

mysqli_stmt::prepare

mysqli_stmt_prepare

(PHP 5, PHP 7)

mysqli_stmt::prepare -- mysqli_stmt_prepare — Prepare an SQL statement for execution

说明

面向对象风格

mixed mysqli_stmt::prepare ( string $query )

过程化风格

bool mysqli_stmt_prepare ( mysqli_stmt $stmt , string $query )

Prepares the SQL query pointed to by the null-terminated string query.

The parameter markers must be bound to application variables using mysqli_stmt_bind_param() and/or mysqli_stmt_bind_result() before executing the statement or fetching rows.

Note:

In the case where you pass a statement to mysqli_stmt_prepare() that is longer than max_allowed_packet of the server, the returned error codes are different depending on whether you are using MySQL Native Driver (mysqlnd) or MySQL Client Library (libmysqlclient). The behavior is as follows:

  • mysqlnd on Linux returns an error code of 1153. The error message means "got a packet bigger than max_allowed_packet bytes".

  • mysqlnd on Windows returns an error code 2006. This error message means "server has gone away".

  • libmysqlclient on all platforms returns an error code 2006. This error message means "server has gone away".

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

query

The query, as a string. It must consist of a single SQL statement.

You can include one or more parameter markers in the SQL statement by embedding question mark (?) characters at the appropriate positions.

Note:

You should not add a terminating semicolon or \g to the statement.

Note:

The markers are legal only in certain places in SQL statements. For example, they are allowed in the VALUES() list of an INSERT statement (to specify column values for a row), or in a comparison with a column in a WHERE clause to specify a comparison value.

However, they are not allowed for identifiers (such as table or column names), in the select list that names the columns to be returned by a SELECT statement), or to specify both operands of a binary operator such as the = equal sign. The latter restriction is necessary because it would be impossible to determine the parameter type. In general, parameters are legal only in Data Manipulation Language (DML) statements, and not in Data Definition Language (DDL) statements.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$city = "Amersfoort";

/* create a prepared statement */
$stmt =  $mysqli->stmt_init();
if ($stmt->prepare("SELECT District FROM City WHERE Name=?")) {

    /* bind parameters for markers */
    $stmt->bind_param("s", $city);

    /* execute query */
    $stmt->execute();

    /* bind result variables */
    $stmt->bind_result($district);

    /* fetch value */
    $stmt->fetch();

    printf("%s is in district %s\n", $city, $district);

    /* close statement */
    $stmt->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$city = "Amersfoort";

/* create a prepared statement */
$stmt = mysqli_stmt_init($link);
if (mysqli_stmt_prepare($stmt, 'SELECT District FROM City WHERE Name=?')) {

    /* bind parameters for markers */
    mysqli_stmt_bind_param($stmt, "s", $city);

    /* execute query */
    mysqli_stmt_execute($stmt);

    /* bind result variables */
    mysqli_stmt_bind_result($stmt, $district);

    /* fetch value */
    mysqli_stmt_fetch($stmt);

    printf("%s is in district %s\n", $city, $district);

    /* close statement */
    mysqli_stmt_close($stmt);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Amersfoort is in district Utrecht

参见

  • mysqli_stmt_init() - 初始化一条语句并返回一个用于mysqli_stmt_prepare(调用)的对象
  • mysqli_stmt_execute() - Executes a prepared Query
  • mysqli_stmt_fetch() - Fetch results from a prepared statement into the bound variables
  • mysqli_stmt_bind_param() - Binds variables to a prepared statement as parameters
  • mysqli_stmt_bind_result() - Binds variables to a prepared statement for result storage
  • mysqli_stmt_get_result() - Gets a result set from a prepared statement
  • mysqli_stmt_close() - Closes a prepared statement

mysqli_stmt::$param_count
mysqli_stmt::reset
MySQLi_STMT


Resets a prepared statement

mysqli_stmt::prepare
mysqli_stmt::result_metadata
MySQLi_STMT
PHP Manual

mysqli_stmt::reset

mysqli_stmt_reset

(PHP 5, PHP 7)

mysqli_stmt::reset -- mysqli_stmt_reset — Resets a prepared statement

说明

面向对象风格

bool mysqli_stmt::reset ( void )

过程化风格

bool mysqli_stmt_reset ( mysqli_stmt $stmt )

Resets a prepared statement on client and server to state after prepare.

It resets the statement on the server, data sent using mysqli_stmt_send_long_data(), unbuffered result sets and current errors. It does not clear bindings or stored result sets. Stored result sets will be cleared when executing the prepared statement (or closing it).

To prepare a statement with another query use function mysqli_stmt_prepare().

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • mysqli_prepare() - Prepare an SQL statement for execution

mysqli_stmt::prepare
mysqli_stmt::result_metadata
MySQLi_STMT


Returns result set metadata from a prepared statement

mysqli_stmt::reset
mysqli_stmt::send_long_data
MySQLi_STMT
PHP Manual

mysqli_stmt::result_metadata

mysqli_stmt_result_metadata

(PHP 5, PHP 7)

mysqli_stmt::result_metadata -- mysqli_stmt_result_metadata — Returns result set metadata from a prepared statement

说明

面向对象风格

mysqli_result mysqli_stmt::result_metadata ( void )

过程化风格

mysqli_result mysqli_stmt_result_metadata ( mysqli_stmt $stmt )

If a statement passed to mysqli_prepare() is one that produces a result set, mysqli_stmt_result_metadata() returns the result object that can be used to process the meta information such as total number of fields and individual field information.

Note:

This result set pointer can be passed as an argument to any of the field-based functions that process result set metadata, such as:

  • mysqli_num_fields()

  • mysqli_fetch_field()

  • mysqli_fetch_field_direct()

  • mysqli_fetch_fields()

  • mysqli_field_count()

  • mysqli_field_seek()

  • mysqli_field_tell()

  • mysqli_free_result()

The result set structure should be freed when you are done with it, which you can do by passing it to mysqli_free_result()

Note:

The result set returned by mysqli_stmt_result_metadata() contains only metadata. It does not contain any row results. The rows are obtained by using the statement handle with mysqli_stmt_fetch().

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

返回值

Returns a result object or FALSE if an error occurred.

范例

Example #1 面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "test");

$mysqli->query("DROP TABLE IF EXISTS friends");
$mysqli->query("CREATE TABLE friends (id int, name varchar(20))");

$mysqli->query("INSERT INTO friends VALUES (1,'Hartmut'), (2, 'Ulf')");

$stmt = $mysqli->prepare("SELECT id, name FROM friends");
$stmt->execute();

/* get resultset for metadata */
$result = $stmt->result_metadata();

/* retrieve field information from metadata result set */
$field = $result->fetch_field();

printf("Fieldname: %s\n", $field->name);

/* close resultset */
$result->close();

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "test");

mysqli_query($link, "DROP TABLE IF EXISTS friends");
mysqli_query($link, "CREATE TABLE friends (id int, name varchar(20))");

mysqli_query($link, "INSERT INTO friends VALUES (1,'Hartmut'), (2, 'Ulf')");

$stmt = mysqli_prepare($link, "SELECT id, name FROM friends");
mysqli_stmt_execute($stmt);

/* get resultset for metadata */
$result = mysqli_stmt_result_metadata($stmt);

/* retrieve field information from metadata result set */
$field = mysqli_fetch_field($result);

printf("Fieldname: %s\n", $field->name);

/* close resultset */
mysqli_free_result($result);

/* close connection */
mysqli_close($link);
?>

参见

  • mysqli_prepare() - Prepare an SQL statement for execution
  • mysqli_free_result() - Frees the memory associated with a result

mysqli_stmt::reset
mysqli_stmt::send_long_data
MySQLi_STMT


Send data in blocks

mysqli_stmt::result_metadata
mysqli_stmt::$sqlstate
MySQLi_STMT
PHP Manual

mysqli_stmt::send_long_data

mysqli_stmt_send_long_data

(PHP 5, PHP 7)

mysqli_stmt::send_long_data -- mysqli_stmt_send_long_data — Send data in blocks

说明

面向对象风格

bool mysqli_stmt::send_long_data ( int $param_nr , string $data )

过程化风格

bool mysqli_stmt_send_long_data ( mysqli_stmt $stmt , int $param_nr , string $data )

Allows to send parameter data to the server in pieces (or chunks), e.g. if the size of a blob exceeds the size of max_allowed_packet. This function can be called multiple times to send the parts of a character or binary data value for a column, which must be one of the TEXT or BLOB datatypes.

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

param_nr

Indicates which parameter to associate the data with. Parameters are numbered beginning with 0.

data

A string containing data to be sent.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php
$stmt = $mysqli->prepare("INSERT INTO messages (message) VALUES (?)");
$null = NULL;
$stmt->bind_param("b", $null);
$fp = fopen("messages.txt", "r");
while (!feof($fp)) {
    $stmt->send_long_data(0, fread($fp, 8192));
}
fclose($fp);
$stmt->execute();
?>

参见

  • mysqli_prepare() - Prepare an SQL statement for execution
  • mysqli_stmt_bind_param() - Binds variables to a prepared statement as parameters

mysqli_stmt::result_metadata
mysqli_stmt::$sqlstate
MySQLi_STMT


Returns SQLSTATE error from previous statement operation

mysqli_stmt::send_long_data
mysqli_stmt::store_result
MySQLi_STMT
PHP Manual

mysqli_stmt::$sqlstate

mysqli_stmt_sqlstate

(PHP 5, PHP 7)

mysqli_stmt::$sqlstate -- mysqli_stmt_sqlstate — Returns SQLSTATE error from previous statement operation

说明

面向对象风格

string $mysqli_stmt->sqlstate;

过程化风格

string mysqli_stmt_sqlstate ( mysqli_stmt $stmt )

Returns a string containing the SQLSTATE error code for the most recently invoked prepared statement function that can succeed or fail. The error code consists of five characters. '00000' means no error. The values are specified by ANSI SQL and ODBC. For a list of possible values, see » http://dev.mysql.com/doc/mysql/en/error-handling.html.

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

返回值

Returns a string containing the SQLSTATE error code for the last error. The error code consists of five characters. '00000' means no error.

注释

Note:

Note that not all MySQL errors are yet mapped to SQLSTATE's. The value HY000 (general error) is used for unmapped errors.

范例

Example #1 面向对象风格

<?php
/* Open a connection */
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$mysqli->query("CREATE TABLE myCountry LIKE Country");
$mysqli->query("INSERT INTO myCountry SELECT * FROM Country");

$query = "SELECT Name, Code FROM myCountry ORDER BY Name";
if ($stmt = $mysqli->prepare($query)) {

    /* drop table */
    $mysqli->query("DROP TABLE myCountry");

    /* execute query */
    $stmt->execute();

    printf("Error: %s.\n", $stmt->sqlstate);

    /* close statement */
    $stmt->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
/* Open a connection */
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

mysqli_query($link, "CREATE TABLE myCountry LIKE Country");
mysqli_query($link, "INSERT INTO myCountry SELECT * FROM Country");

$query = "SELECT Name, Code FROM myCountry ORDER BY Name";
if ($stmt = mysqli_prepare($link, $query)) {

    /* drop table */
    mysqli_query($link, "DROP TABLE myCountry");

    /* execute query */
    mysqli_stmt_execute($stmt);

    printf("Error: %s.\n", mysqli_stmt_sqlstate($stmt));

    /* close statement */
    mysqli_stmt_close($stmt);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Error: 42S02.

参见

  • mysqli_stmt_errno() - Returns the error code for the most recent statement call
  • mysqli_stmt_error() - Returns a string description for last statement error

mysqli_stmt::send_long_data
mysqli_stmt::store_result
MySQLi_STMT


Transfers a result set from a prepared statement

mysqli_stmt::$sqlstate
mysqli_result
MySQLi_STMT
PHP Manual

mysqli_stmt::store_result

mysqli_stmt_store_result

(PHP 5, PHP 7)

mysqli_stmt::store_result -- mysqli_stmt_store_result — Transfers a result set from a prepared statement

说明

面向对象风格

bool mysqli_stmt::store_result ( void )

过程化风格

bool mysqli_stmt_store_result ( mysqli_stmt $stmt )

You must call mysqli_stmt_store_result() for every query that successfully produces a result set (SELECT, SHOW, DESCRIBE, EXPLAIN), if and only if you want to buffer the complete result set by the client, so that the subsequent mysqli_stmt_fetch() call returns buffered data.

Note:

It is unnecessary to call mysqli_stmt_store_result() for other queries, but if you do, it will not harm or cause any notable performance loss in all cases. You can detect whether the query produced a result set by checking if mysqli_stmt_result_metadata() returns NULL.

参数

stmt

仅以过程化样式：由 mysqli_stmt_init() 返回的 statement 标识。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php
/* Open a connection */
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";
if ($stmt = $mysqli->prepare($query)) {

    /* execute query */
    $stmt->execute();

    /* store result */
    $stmt->store_result();

    printf("Number of rows: %d.\n", $stmt->num_rows);

    /* free result */
    $stmt->free_result();

    /* close statement */
    $stmt->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
/* Open a connection */
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";
if ($stmt = mysqli_prepare($link, $query)) {

    /* execute query */
    mysqli_stmt_execute($stmt);

    /* store result */
    mysqli_stmt_store_result($stmt);

    printf("Number of rows: %d.\n", mysqli_stmt_num_rows($stmt));

    /* free result */
    mysqli_stmt_free_result($stmt);

    /* close statement */
    mysqli_stmt_close($stmt);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Number of rows: 20.

参见

  • mysqli_prepare() - Prepare an SQL statement for execution
  • mysqli_stmt_result_metadata() - Returns result set metadata from a prepared statement
  • mysqli_stmt_fetch() - Fetch results from a prepared statement into the bound variables

mysqli_stmt::$sqlstate
mysqli_result
MySQLi_STMT


mysqli_result类

(PHP 5, PHP 7)

简介

代表从一个数据库查询中获取的结果集。

更新日志

更新日志
版本 | 说明
5.4.0 | Iterator support was added, as mysqli_result now implements Traversable.

类摘要

mysqli_result {
/* 属性 */
int $current_field ;
int $field_count;
array $lengths;
int $num_rows;
/* 方法 */
int mysqli_field_tell ( mysqli_result $result )
bool data_seek ( int $offset )
mixed fetch_all ([ int $resulttype = MYSQLI_NUM ] )
mixed fetch_array ([ int $resulttype = MYSQLI_BOTH ] )
array fetch_assoc ( void )
object fetch_field_direct ( int $fieldnr )
object fetch_field ( void )
array fetch_fields ( void )
object fetch_object ([ string $class_name = "stdClass" [, array $params ]] )
mixed fetch_row ( void )
int mysqli_num_fields ( mysqli_result $result )
bool field_seek ( int $fieldnr )
void free ( void )
array mysqli_fetch_lengths ( mysqli_result $result )
int mysqli_num_rows ( mysqli_result $result )
}

Table of Contents

  • mysqli_result::$current_field — Get current field offset of a result pointer
  • mysqli_result::data_seek — Adjusts the result pointer to an arbitrary row in the result
  • mysqli_result::fetch_all — Fetches all result rows as an associative array, a numeric array, or both
  • mysqli_result::fetch_array — Fetch a result row as an associative, a numeric array, or both
  • mysqli_result::fetch_assoc — Fetch a result row as an associative array
  • mysqli_result::fetch_field_direct — Fetch meta-data for a single field
  • mysqli_result::fetch_field — Returns the next field in the result set
  • mysqli_result::fetch_fields — Returns an array of objects representing the fields in a result set
  • mysqli_result::fetch_object — Returns the current row of a result set as an object
  • mysqli_result::fetch_row — Get a result row as an enumerated array
  • mysqli_result::$field_count — Get the number of fields in a result
  • mysqli_result::field_seek — Set result pointer to a specified field offset
  • mysqli_result::free — Frees the memory associated with a result
  • mysqli_result::$lengths — Returns the lengths of the columns of the current row in the result set
  • mysqli_result::$num_rows — Gets the number of rows in a result
mysqli_stmt::store_result
mysqli_result::$current_field
Mysqli


Get current field offset of a result pointer

mysqli_result
mysqli_result::data_seek
mysqli_result
PHP Manual

mysqli_result::$current_field

mysqli_field_tell

(PHP 5, PHP 7)

mysqli_result::$current_field -- mysqli_field_tell — Get current field offset of a result pointer

说明

面向对象风格

int $mysqli_result->current_field ;

过程化风格

int mysqli_field_tell ( mysqli_result $result )

Returns the position of the field cursor used for the last mysqli_fetch_field() call. This value can be used as an argument to mysqli_field_seek().

参数

result

仅以过程化样式：由 mysqli_query()，mysqli_store_result() 或 mysqli_use_result()返回的结果集标识。

返回值

Returns current offset of field cursor.

范例

Example #1 面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, SurfaceArea from Country ORDER BY Code LIMIT 5";

if ($result = $mysqli->query($query)) {

    /* Get field information for all columns */
    while ($finfo = $result->fetch_field()) {

        /* get fieldpointer offset */
        $currentfield = $result->current_field;

        printf("Column %d:\n", $currentfield);
        printf("Name:     %s\n", $finfo->name);
        printf("Table:    %s\n", $finfo->table);
        printf("max. Len: %d\n", $finfo->max_length);
        printf("Flags:    %d\n", $finfo->flags);
        printf("Type:     %d\n\n", $finfo->type);
    }
    $result->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, SurfaceArea from Country ORDER BY Code LIMIT 5";

if ($result = mysqli_query($link, $query)) {

    /* Get field information for all fields */
    while ($finfo = mysqli_fetch_field($result)) {

        /* get fieldpointer offset */
        $currentfield = mysqli_field_tell($result);

        printf("Column %d:\n", $currentfield);
        printf("Name:     %s\n", $finfo->name);
        printf("Table:    %s\n", $finfo->table);
        printf("max. Len: %d\n", $finfo->max_length);
        printf("Flags:    %d\n", $finfo->flags);
        printf("Type:     %d\n\n", $finfo->type);
    }
    mysqli_free_result($result);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Column 1:
Name:     Name
Table:    Country
max. Len: 11
Flags:    1
Type:     254

Column 2:
Name:     SurfaceArea
Table:    Country
max. Len: 10
Flags:    32769
Type:     4

参见

  • mysqli_fetch_field() - Returns the next field in the result set
  • mysqli_field_seek() - Set result pointer to a specified field offset

mysqli_result
mysqli_result::data_seek
mysqli_result


Adjusts the result pointer to an arbitrary row in the result

mysqli_result::$current_field
mysqli_result::fetch_all
mysqli_result
PHP Manual

mysqli_result::data_seek

mysqli_data_seek

(PHP 5, PHP 7)

mysqli_result::data_seek -- mysqli_data_seek — Adjusts the result pointer to an arbitrary row in the result

说明

面向对象风格

bool mysqli_result::data_seek ( int $offset )

过程化风格

bool mysqli_data_seek ( mysqli_result $result , int $offset )

The mysqli_data_seek() function seeks to an arbitrary result pointer specified by the offset in the result set.

参数

result

仅以过程化样式：由 mysqli_query()，mysqli_store_result() 或 mysqli_use_result()返回的结果集标识。

offset

The field offset. Must be between zero and the total number of rows minus one (0..mysqli_num_rows() - 1).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note:

This function can only be used with buffered results attained from the use of the mysqli_store_result() or mysqli_query() functions.

范例

Example #1 面向对象风格

<?php
/* Open a connection */
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER BY Name";
if ($result = $mysqli->query($query)) {

    /* seek to row no. 400 */
    $result->data_seek(399);

    /* fetch row */
    $row = $result->fetch_row();

    printf ("City: %s  Countrycode: %s\n", $row[0], $row[1]);

    /* free result set*/
    $result->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
/* Open a connection */
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (!$link) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER BY Name";

if ($result = mysqli_query($link, $query)) {

    /* seek to row no. 400 */
    mysqli_data_seek($result, 399);

    /* fetch row */
    $row = mysqli_fetch_row($result);

    printf ("City: %s  Countrycode: %s\n", $row[0], $row[1]);

    /* free result set*/
    mysqli_free_result($result);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

City: Benin City  Countrycode: NGA

参见

  • mysqli_store_result() - Transfers a result set from the last query
  • mysqli_fetch_row() - Get a result row as an enumerated array
  • mysqli_fetch_array() - Fetch a result row as an associative, a numeric array, or both
  • mysqli_fetch_assoc() - Fetch a result row as an associative array
  • mysqli_fetch_object() - Returns the current row of a result set as an object
  • mysqli_query() - 对数据库执行一次查询
  • mysqli_num_rows() - Gets the number of rows in a result

mysqli_result::$current_field
mysqli_result::fetch_all
mysqli_result


Fetches all result rows as an associative array, a numeric array, or both

mysqli_result::data_seek
mysqli_result::fetch_array
mysqli_result
PHP Manual

mysqli_result::fetch_all

mysqli_fetch_all

(PHP 5 >= 5.3.0, PHP 7)

mysqli_result::fetch_all -- mysqli_fetch_all — Fetches all result rows as an associative array, a numeric array, or both

说明

面向对象风格

mixed mysqli_result::fetch_all ([ int $resulttype = MYSQLI_NUM ] )

过程化风格

mixed mysqli_fetch_all ( mysqli_result $result [, int $resulttype = MYSQLI_NUM ] )

mysqli_fetch_all() fetches all result rows and returns the result set as an associative array, a numeric array, or both.

参数

result

仅以过程化样式：由 mysqli_query()，mysqli_store_result() 或 mysqli_use_result()返回的结果集标识。

resulttype

This optional parameter is a constant indicating what type of array should be produced from the current row data. The possible values for this parameter are the constants MYSQLI_ASSOC, MYSQLI_NUM, or MYSQLI_BOTH.

返回值

Returns an array of associative or numeric arrays holding result rows.

仅 MySQL 原生驱动

仅可用于 mysqlnd。

As mysqli_fetch_all() returns all the rows as an array in a single step, it may consume more memory than some similar functions such as mysqli_fetch_array(), which only returns one row at a time from the result set. Further, if you need to iterate over the result set, you will need a looping construct that will further impact performance. For these reasons mysqli_fetch_all() should only be used in those situations where the fetched result set will be sent to another layer for processing.

参见

  • mysqli_fetch_array() - Fetch a result row as an associative, a numeric array, or both
  • mysqli_query() - 对数据库执行一次查询

mysqli_result::data_seek
mysqli_result::fetch_array
mysqli_result


Fetch a result row as an associative, a numeric array, or both

mysqli_result::fetch_all
mysqli_result::fetch_assoc
mysqli_result
PHP Manual

mysqli_result::fetch_array

mysqli_fetch_array

(PHP 5, PHP 7)

mysqli_result::fetch_array -- mysqli_fetch_array — Fetch a result row as an associative, a numeric array, or both

说明

面向对象风格

mixed mysqli_result::fetch_array ([ int $resulttype = MYSQLI_BOTH ] )

过程化风格

mixed mysqli_fetch_array ( mysqli_result $result [, int $resulttype = MYSQLI_BOTH ] )

Returns an array that corresponds to the fetched row or NULL if there are no more rows for the resultset represented by the result parameter.

mysqli_fetch_array() is an extended version of the mysqli_fetch_row() function. In addition to storing the data in the numeric indices of the result array, the mysqli_fetch_array() function can also store the data in associative indices, using the field names of the result set as keys.

Note: 此函数返回的字段名大小写敏感。

Note: 此函数将 NULL 字段设置为 PHP NULL 值。

If two or more columns of the result have the same field names, the last column will take precedence and overwrite the earlier data. In order to access multiple columns with the same name, the numerically indexed version of the row must be used.

参数

result

仅以过程化样式：由 mysqli_query()，mysqli_store_result() 或 mysqli_use_result()返回的结果集标识。

resulttype

This optional parameter is a constant indicating what type of array should be produced from the current row data. The possible values for this parameter are the constants MYSQLI_ASSOC, MYSQLI_NUM, or MYSQLI_BOTH.

By using the MYSQLI_ASSOC constant this function will behave identically to the mysqli_fetch_assoc(), while MYSQLI_NUM will behave identically to the mysqli_fetch_row() function. The final option MYSQLI_BOTH will create a single array with the attributes of both.

返回值

Returns an array of strings that corresponds to the fetched row or NULL if there are no more rows in resultset.

范例

Example #1 面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER by ID LIMIT 3";
$result = $mysqli->query($query);

/* numeric array */
$row = $result->fetch_array(MYSQLI_NUM);
printf ("%s (%s)\n", $row[0], $row[1]);

/* associative array */
$row = $result->fetch_array(MYSQLI_ASSOC);
printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);

/* associative and numeric array */
$row = $result->fetch_array(MYSQLI_BOTH);
printf ("%s (%s)\n", $row[0], $row["CountryCode"]);

/* free result set */
$result->free();

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER by ID LIMIT 3";
$result = mysqli_query($link, $query);

/* numeric array */
$row = mysqli_fetch_array($result, MYSQLI_NUM);
printf ("%s (%s)\n", $row[0], $row[1]);

/* associative array */
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);

/* associative and numeric array */
$row = mysqli_fetch_array($result, MYSQLI_BOTH);
printf ("%s (%s)\n", $row[0], $row["CountryCode"]);

/* free result set */
mysqli_free_result($result);

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Kabul (AFG)
Qandahar (AFG)
Herat (AFG)

参见

  • mysqli_fetch_assoc() - Fetch a result row as an associative array
  • mysqli_fetch_row() - Get a result row as an enumerated array
  • mysqli_fetch_object() - Returns the current row of a result set as an object
  • mysqli_query() - 对数据库执行一次查询
  • mysqli_data_seek() - Adjusts the result pointer to an arbitrary row in the result

mysqli_result::fetch_all
mysqli_result::fetch_assoc
mysqli_result


Fetch a result row as an associative array

mysqli_result::fetch_array
mysqli_result::fetch_field_direct
mysqli_result
PHP Manual

mysqli_result::fetch_assoc

mysqli_fetch_assoc

(PHP 5, PHP 7)

mysqli_result::fetch_assoc -- mysqli_fetch_assoc — Fetch a result row as an associative array

说明

面向对象风格

array mysqli_result::fetch_assoc ( void )

过程化风格

array mysqli_fetch_assoc ( mysqli_result $result )

Returns an associative array that corresponds to the fetched row or NULL if there are no more rows.

Note: 此函数返回的字段名大小写敏感。

Note: 此函数将 NULL 字段设置为 PHP NULL 值。

参数

result

仅以过程化样式：由 mysqli_query()，mysqli_store_result() 或 mysqli_use_result()返回的结果集标识。

返回值

Returns an associative array of strings representing the fetched row in the result set, where each key in the array represents the name of one of the result set's columns or NULL if there are no more rows in resultset.

If two or more columns of the result have the same field names, the last column will take precedence. To access the other column(s) of the same name, you either need to access the result with numeric indices by using mysqli_fetch_row() or add alias names.

范例

Example #1 面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5";

if ($result = $mysqli->query($query)) {

    /* fetch associative array */
    while ($row = $result->fetch_assoc()) {
        printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);
    }

    /* free result set */
    $result->free();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5";

if ($result = mysqli_query($link, $query)) {

    /* fetch associative array */
    while ($row = mysqli_fetch_assoc($result)) {
        printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);
    }

    /* free result set */
    mysqli_free_result($result);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Pueblo (USA)
Arvada (USA)
Cape Coral (USA)
Green Bay (USA)
Santa Clara (USA)

Example #3 A mysqli_result example comparing iterator usage

<?php
$c = mysqli_connect('127.0.0.1','user', 'pass');

// Using iterators (support was added with PHP 5.4)
foreach ( $c->query('SELECT user,host FROM mysql.user') as $row ) {
    printf("'%s'@'%s'\n", $row['user'], $row['host']);
}

echo "\n==================\n";

// Not using iterators
$result = $c->query('SELECT user,host FROM mysql.user');
while ($row = $result->fetch_assoc()) {
    printf("'%s'@'%s'\n", $row['user'], $row['host']);
}

?>

以上例程的输出类似于：

'root'@'192.168.1.1'
'root'@'127.0.0.1'
'dude'@'localhost'
'lebowski'@'localhost'

==================

'root'@'192.168.1.1'
'root'@'127.0.0.1'
'dude'@'localhost'
'lebowski'@'localhost'

参见

  • mysqli_fetch_array() - Fetch a result row as an associative, a numeric array, or both
  • mysqli_fetch_row() - Get a result row as an enumerated array
  • mysqli_fetch_object() - Returns the current row of a result set as an object
  • mysqli_query() - 对数据库执行一次查询
  • mysqli_data_seek() - Adjusts the result pointer to an arbitrary row in the result

mysqli_result::fetch_array
mysqli_result::fetch_field_direct
mysqli_result


Fetch meta-data for a single field

mysqli_result::fetch_assoc
mysqli_result::fetch_field
mysqli_result
PHP Manual

mysqli_result::fetch_field_direct

mysqli_fetch_field_direct

(PHP 5, PHP 7)

mysqli_result::fetch_field_direct -- mysqli_fetch_field_direct — Fetch meta-data for a single field

说明

面向对象风格

object mysqli_result::fetch_field_direct ( int $fieldnr )

过程化风格

object mysqli_fetch_field_direct ( mysqli_result $result , int $fieldnr )

Returns an object which contains field definition information from the specified result set.

参数

result

仅以过程化样式：由 mysqli_query()，mysqli_store_result() 或 mysqli_use_result()返回的结果集标识。

fieldnr

The field number. This value must be in the range from 0 to number of fields - 1.

返回值

Returns an object which contains field definition information or FALSE if no field information for specified fieldnr is available.

Object attributes
Attribute | Description
name | The name of the column
orgname | Original column name if an alias was specified
table | The name of the table this field belongs to (if not calculated)
orgtable | Original table name if an alias was specified
def | The default value for this field, represented as a string
max_length | The maximum width of the field for the result set.
length | The width of the field, as specified in the table definition.
charsetnr | The character set number for the field.
flags | An integer representing the bit-flags for the field.
type | The data type used for this field
decimals | The number of decimals used (for numeric fields)

范例

Example #1 面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, SurfaceArea from Country ORDER BY Name LIMIT 5";

if ($result = $mysqli->query($query)) {

    /* Get field information for column 'SurfaceArea' */
    $finfo = $result->fetch_field_direct(1);

    printf("Name:     %s\n", $finfo->name);
    printf("Table:    %s\n", $finfo->table);
    printf("max. Len: %d\n", $finfo->max_length);
    printf("Flags:    %d\n", $finfo->flags);
    printf("Type:     %d\n", $finfo->type);

    $result->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, SurfaceArea from Country ORDER BY Name LIMIT 5";

if ($result = mysqli_query($link, $query)) {

    /* Get field information for column 'SurfaceArea' */
    $finfo = mysqli_fetch_field_direct($result, 1);

    printf("Name:     %s\n", $finfo->name);
    printf("Table:    %s\n", $finfo->table);
    printf("max. Len: %d\n", $finfo->max_length);
    printf("Flags:    %d\n", $finfo->flags);
    printf("Type:     %d\n", $finfo->type);

    mysqli_free_result($result);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Name:     SurfaceArea
Table:    Country
max. Len: 10
Flags:    32769
Type:     4

参见

  • mysqli_num_fields() - Get the number of fields in a result
  • mysqli_fetch_field() - Returns the next field in the result set
  • mysqli_fetch_fields() - Returns an array of objects representing the fields in a result set

mysqli_result::fetch_assoc
mysqli_result::fetch_field
mysqli_result


Returns the next field in the result set

mysqli_result::fetch_field_direct
mysqli_result::fetch_fields
mysqli_result
PHP Manual

mysqli_result::fetch_field

mysqli_fetch_field

(PHP 5, PHP 7)

mysqli_result::fetch_field -- mysqli_fetch_field — Returns the next field in the result set

说明

面向对象风格

object mysqli_result::fetch_field ( void )

过程化风格

object mysqli_fetch_field ( mysqli_result $result )

Returns the definition of one column of a result set as an object. Call this function repeatedly to retrieve information about all columns in the result set.

参数

result

仅以过程化样式：由 mysqli_query()，mysqli_store_result() 或 mysqli_use_result()返回的结果集标识。

返回值

Returns an object which contains field definition information or FALSE if no field information is available.

Object properties
Property | Description
name | The name of the column
orgname | Original column name if an alias was specified
table | The name of the table this field belongs to (if not calculated)
orgtable | Original table name if an alias was specified
def | Reserved for default value, currently always ""
db | Database (since PHP 5.3.6)
catalog | The catalog name, always "def" (since PHP 5.3.6)
max_length | The maximum width of the field for the result set.
length | The width of the field, as specified in the table definition.
charsetnr | The character set number for the field.
flags | An integer representing the bit-flags for the field.
type | The data type used for this field
decimals | The number of decimals used (for integer fields)

范例

Example #1 面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, SurfaceArea from Country ORDER BY Code LIMIT 5";

if ($result = $mysqli->query($query)) {

    /* Get field information for all columns */
    while ($finfo = $result->fetch_field()) {

        printf("Name:     %s\n", $finfo->name);
        printf("Table:    %s\n", $finfo->table);
        printf("max. Len: %d\n", $finfo->max_length);
        printf("Flags:    %d\n", $finfo->flags);
        printf("Type:     %d\n\n", $finfo->type);
    }
    $result->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, SurfaceArea from Country ORDER BY Code LIMIT 5";

if ($result = mysqli_query($link, $query)) {

    /* Get field information for all fields */
    while ($finfo = mysqli_fetch_field($result)) {

        printf("Name:     %s\n", $finfo->name);
        printf("Table:    %s\n", $finfo->table);
        printf("max. Len: %d\n", $finfo->max_length);
        printf("Flags:    %d\n", $finfo->flags);
        printf("Type:     %d\n\n", $finfo->type);
    }
    mysqli_free_result($result);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Name:     Name
Table:    Country
max. Len: 11
Flags:    1
Type:     254

Name:     SurfaceArea
Table:    Country
max. Len: 10
Flags:    32769
Type:     4

参见

  • mysqli_num_fields() - Get the number of fields in a result
  • mysqli_fetch_field_direct() - Fetch meta-data for a single field
  • mysqli_fetch_fields() - Returns an array of objects representing the fields in a result set
  • mysqli_field_seek() - Set result pointer to a specified field offset

mysqli_result::fetch_field_direct
mysqli_result::fetch_fields
mysqli_result


Returns an array of objects representing the fields in a result set

mysqli_result::fetch_field
mysqli_result::fetch_object
mysqli_result
PHP Manual

mysqli_result::fetch_fields

mysqli_fetch_fields

(PHP 5, PHP 7)

mysqli_result::fetch_fields -- mysqli_fetch_fields — Returns an array of objects representing the fields in a result set

说明

面向对象风格

array mysqli_result::fetch_fields ( void )

过程化风格

array mysqli_fetch_fields ( mysqli_result $result )

This function serves an identical purpose to the mysqli_fetch_field() function with the single difference that, instead of returning one object at a time for each field, the columns are returned as an array of objects.

参数

result

仅以过程化样式：由 mysqli_query()，mysqli_store_result() 或 mysqli_use_result()返回的结果集标识。

返回值

Returns an array of objects which contains field definition information or FALSE if no field information is available.

Object properties
Property | Description
name | The name of the column
orgname | Original column name if an alias was specified
table | The name of the table this field belongs to (if not calculated)
orgtable | Original table name if an alias was specified
max_length | The maximum width of the field for the result set.
length | The width of the field, in bytes, as specified in the table definition. Note that this number (bytes) might differ from your table definition value (characters), depending on the character set you use. For example, the character set utf8 has 3 bytes per character, so varchar(10) will return a length of 30 for utf8 (10*3), but return 10 for latin1 (10*1).
charsetnr | The character set number (id) for the field.
flags | An integer representing the bit-flags for the field.
type | The data type used for this field
decimals | The number of decimals used (for integer fields)

范例

Example #1 面向对象风格

<?php
$mysqli = new mysqli("127.0.0.1", "root", "foofoo", "sakila");

/* check connection */
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

foreach (array('latin1', 'utf8') as $charset) {

    // Set character set, to show its impact on some values (e.g., length in bytes)
    $mysqli->set_charset($charset);

    $query = "SELECT actor_id, last_name from actor ORDER BY actor_id";

    echo "======================\n";
    echo "Character Set: $charset\n";
    echo "======================\n";

    if ($result = $mysqli->query($query)) {

        /* Get field information for all columns */
        $finfo = $result->fetch_fields();

        foreach ($finfo as $val) {
            printf("Name:      %s\n",   $val->name);
            printf("Table:     %s\n",   $val->table);
            printf("Max. Len:  %d\n",   $val->max_length);
            printf("Length:    %d\n",   $val->length);
            printf("charsetnr: %d\n",   $val->charsetnr);
            printf("Flags:     %d\n",   $val->flags);
            printf("Type:      %d\n\n", $val->type);
        }
        $result->free();
    }
}
$mysqli->close();
?>

Example #2 过程化风格

<?php
$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "sakila");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

foreach (array('latin1', 'utf8') as $charset) {

    // Set character set, to show its impact on some values (e.g., length in bytes)
    mysqli_set_charset($link, $charset);

    $query = "SELECT actor_id, last_name from actor ORDER BY actor_id";

    echo "======================\n";
    echo "Character Set: $charset\n";
    echo "======================\n";

    if ($result = mysqli_query($link, $query)) {

        /* Get field information for all columns */
        $finfo = mysqli_fetch_fields($result);

        foreach ($finfo as $val) {
            printf("Name:      %s\n",   $val->name);
            printf("Table:     %s\n",   $val->table);
            printf("Max. Len:  %d\n",   $val->max_length);
            printf("Length:    %d\n",   $val->length);
            printf("charsetnr: %d\n",   $val->charsetnr);
            printf("Flags:     %d\n",   $val->flags);
            printf("Type:      %d\n\n", $val->type);
        }
        mysqli_free_result($result);
    }
}

mysqli_close($link);
?>

以上例程会输出：

======================
Character Set: latin1
======================
Name:      actor_id
Table:     actor
Max. Len:  3
Length:    5
charsetnr: 63
Flags:     49699
Type:      2

Name:      last_name
Table:     actor
Max. Len:  12
Length:    45
charsetnr: 8
Flags:     20489
Type:      253

======================
Character Set: utf8
======================
Name:      actor_id
Table:     actor
Max. Len:  3
Length:    5
charsetnr: 63
Flags:     49699
Type:      2

Name:      last_name
Table:     actor
Max. Len:  12
Length:    135
charsetnr: 33
Flags:     20489

参见

  • mysqli_num_fields() - Get the number of fields in a result
  • mysqli_fetch_field_direct() - Fetch meta-data for a single field
  • mysqli_fetch_field() - Returns the next field in the result set

mysqli_result::fetch_field
mysqli_result::fetch_object
mysqli_result


Returns the current row of a result set as an object

mysqli_result::fetch_fields
mysqli_result::fetch_row
mysqli_result
PHP Manual

mysqli_result::fetch_object

mysqli_fetch_object

(PHP 5, PHP 7)

mysqli_result::fetch_object -- mysqli_fetch_object — Returns the current row of a result set as an object

说明

面向对象风格

object mysqli_result::fetch_object ([ string $class_name = "stdClass" [, array $params ]] )

过程化风格

object mysqli_fetch_object ( mysqli_result $result [, string $class_name = "stdClass" [, array $params ]] )

The mysqli_fetch_object() will return the current row result set as an object where the attributes of the object represent the names of the fields found within the result set.

Note that mysqli_fetch_object() sets the properties of the object before calling the object constructor.

参数

result

仅以过程化样式：由 mysqli_query()，mysqli_store_result() 或 mysqli_use_result()返回的结果集标识。

class_name

The name of the class to instantiate, set the properties of and return. If not specified, a stdClass object is returned.

params

An optional array of parameters to pass to the constructor for class_name objects.

返回值

Returns an object with string properties that corresponds to the fetched row or NULL if there are no more rows in resultset.

Note: 此函数返回的字段名大小写敏感。

Note: 此函数将 NULL 字段设置为 PHP NULL 值。

范例

Example #1 面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5";

if ($result = $mysqli->query($query)) {

    /* fetch object array */
    while ($obj = $result->fetch_object()) {
        printf ("%s (%s)\n", $obj->Name, $obj->CountryCode);
    }

    /* free result set */
    $result->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5";

if ($result = mysqli_query($link, $query)) {

    /* fetch associative array */
    while ($obj = mysqli_fetch_object($result)) {
        printf ("%s (%s)\n", $obj->Name, $obj->CountryCode);
    }

    /* free result set */
    mysqli_free_result($result);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Pueblo (USA)
Arvada (USA)
Cape Coral (USA)
Green Bay (USA)
Santa Clara (USA)

参见

  • mysqli_fetch_array() - Fetch a result row as an associative, a numeric array, or both
  • mysqli_fetch_assoc() - Fetch a result row as an associative array
  • mysqli_fetch_row() - Get a result row as an enumerated array
  • mysqli_query() - 对数据库执行一次查询
  • mysqli_data_seek() - Adjusts the result pointer to an arbitrary row in the result

mysqli_result::fetch_fields
mysqli_result::fetch_row
mysqli_result


Get a result row as an enumerated array

mysqli_result::fetch_object
mysqli_result::$field_count
mysqli_result
PHP Manual

mysqli_result::fetch_row

mysqli_fetch_row

(PHP 5, PHP 7)

mysqli_result::fetch_row -- mysqli_fetch_row — Get a result row as an enumerated array

说明

面向对象风格

mixed mysqli_result::fetch_row ( void )

过程化风格

mixed mysqli_fetch_row ( mysqli_result $result )

Fetches one row of data from the result set and returns it as an enumerated array, where each column is stored in an array offset starting from 0 (zero). Each subsequent call to this function will return the next row within the result set, or NULL if there are no more rows.

参数

result

仅以过程化样式：由 mysqli_query()，mysqli_store_result() 或 mysqli_use_result()返回的结果集标识。

返回值

mysqli_fetch_row() returns an array of strings that corresponds to the fetched row or NULL if there are no more rows in result set.

Note: 此函数将 NULL 字段设置为 PHP NULL 值。

范例

Example #1 面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5";

if ($result = $mysqli->query($query)) {

    /* fetch object array */
    while ($row = $result->fetch_row()) {
        printf ("%s (%s)\n", $row[0], $row[1]);
    }

    /* free result set */
    $result->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5";

if ($result = mysqli_query($link, $query)) {

    /* fetch associative array */
    while ($row = mysqli_fetch_row($result)) {
        printf ("%s (%s)\n", $row[0], $row[1]);
    }

    /* free result set */
    mysqli_free_result($result);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Pueblo (USA)
Arvada (USA)
Cape Coral (USA)
Green Bay (USA)
Santa Clara (USA)

参见

  • mysqli_fetch_array() - Fetch a result row as an associative, a numeric array, or both
  • mysqli_fetch_assoc() - Fetch a result row as an associative array
  • mysqli_fetch_object() - Returns the current row of a result set as an object
  • mysqli_query() - 对数据库执行一次查询
  • mysqli_data_seek() - Adjusts the result pointer to an arbitrary row in the result

mysqli_result::fetch_object
mysqli_result::$field_count
mysqli_result


Get the number of fields in a result

mysqli_result::fetch_row
mysqli_result::field_seek
mysqli_result
PHP Manual

mysqli_result::$field_count

mysqli_num_fields

(PHP 5, PHP 7)

mysqli_result::$field_count -- mysqli_num_fields — Get the number of fields in a result

说明

面向对象风格

int $mysqli_result->field_count;

过程化风格

int mysqli_num_fields ( mysqli_result $result )

Returns the number of fields from specified result set.

参数

result

仅以过程化样式：由 mysqli_query()，mysqli_store_result() 或 mysqli_use_result()返回的结果集标识。

返回值

The number of fields from a result set.

范例

Example #1 面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if ($result = $mysqli->query("SELECT * FROM City ORDER BY ID LIMIT 1")) {

    /* determine number of fields in result set */
    $field_cnt = $result->field_count;

    printf("Result set has %d fields.\n", $field_cnt);

    /* close result set */
    $result->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if ($result = mysqli_query($link, "SELECT * FROM City ORDER BY ID LIMIT 1")) {

    /* determine number of fields in result set */
    $field_cnt = mysqli_num_fields($result);

    printf("Result set has %d fields.\n", $field_cnt);

    /* close result set */
    mysqli_free_result($result);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Result set has 5 fields.

参见

  • mysqli_fetch_field() - Returns the next field in the result set

mysqli_result::fetch_row
mysqli_result::field_seek
mysqli_result


Set result pointer to a specified field offset

mysqli_result::$field_count
mysqli_result::free
mysqli_result
PHP Manual

mysqli_result::field_seek

mysqli_field_seek

(PHP 5, PHP 7)

mysqli_result::field_seek -- mysqli_field_seek — Set result pointer to a specified field offset

说明

面向对象风格

bool mysqli_result::field_seek ( int $fieldnr )

过程化风格

bool mysqli_field_seek ( mysqli_result $result , int $fieldnr )

Sets the field cursor to the given offset. The next call to mysqli_fetch_field() will retrieve the field definition of the column associated with that offset.

Note:

To seek to the beginning of a row, pass an offset value of zero.

参数

result

仅以过程化样式：由 mysqli_query()，mysqli_store_result() 或 mysqli_use_result()返回的结果集标识。

fieldnr

The field number. This value must be in the range from 0 to number of fields - 1.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, SurfaceArea from Country ORDER BY Code LIMIT 5";

if ($result = $mysqli->query($query)) {

    /* Get field information for 2nd column */
    $result->field_seek(1);
    $finfo = $result->fetch_field();

    printf("Name:     %s\n", $finfo->name);
    printf("Table:    %s\n", $finfo->table);
    printf("max. Len: %d\n", $finfo->max_length);
    printf("Flags:    %d\n", $finfo->flags);
    printf("Type:     %d\n\n", $finfo->type);

    $result->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT Name, SurfaceArea from Country ORDER BY Code LIMIT 5";

if ($result = mysqli_query($link, $query)) {

    /* Get field information for 2nd column */
    mysqli_field_seek($result, 1);
    $finfo = mysqli_fetch_field($result);

    printf("Name:     %s\n", $finfo->name);
    printf("Table:    %s\n", $finfo->table);
    printf("max. Len: %d\n", $finfo->max_length);
    printf("Flags:    %d\n", $finfo->flags);
    printf("Type:     %d\n\n", $finfo->type);

    mysqli_free_result($result);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Name:     SurfaceArea
Table:    Country
max. Len: 10
Flags:    32769
Type:     4

参见

  • mysqli_fetch_field() - Returns the next field in the result set

mysqli_result::$field_count
mysqli_result::free
mysqli_result


Frees the memory associated with a result

mysqli_result::field_seek
mysqli_result::$lengths
mysqli_result
PHP Manual

mysqli_result::free

mysqli_free_result

(PHP 5, PHP 7)

mysqli_result::free -- mysqli_free_result — Frees the memory associated with a result

说明

面向对象风格

void mysqli_result::free ( void )
void mysqli_result::close ( void )
void mysqli_result::free_result ( void )

过程化风格

void mysqli_free_result ( mysqli_result $result )

Frees the memory associated with the result.

Note:

You should always free your result with mysqli_free_result(), when your result object is not needed anymore.

参数

result

仅以过程化样式：由 mysqli_query()，mysqli_store_result() 或 mysqli_use_result()返回的结果集标识。

返回值

没有返回值。

参见

  • mysqli_query() - 对数据库执行一次查询
  • mysqli_stmt_store_result() - Transfers a result set from a prepared statement
  • mysqli_store_result() - Transfers a result set from the last query
  • mysqli_use_result() - Initiate a result set retrieval

mysqli_result::field_seek
mysqli_result::$lengths
mysqli_result


Returns the lengths of the columns of the current row in the result set

mysqli_result::free
mysqli_result::$num_rows
mysqli_result
PHP Manual

mysqli_result::$lengths

mysqli_fetch_lengths

(PHP 5, PHP 7)

mysqli_result::$lengths -- mysqli_fetch_lengths — Returns the lengths of the columns of the current row in the result set

说明

面向对象风格

array $mysqli_result->lengths;

过程化风格

array mysqli_fetch_lengths ( mysqli_result $result )

The mysqli_fetch_lengths() function returns an array containing the lengths of every column of the current row within the result set.

参数

result

仅以过程化样式：由 mysqli_query()，mysqli_store_result() 或 mysqli_use_result()返回的结果集标识。

返回值

An array of integers representing the size of each column (not including any terminating null characters). FALSE if an error occurred.

mysqli_fetch_lengths() is valid only for the current row of the result set. It returns FALSE if you call it before calling mysqli_fetch_row/array/object or after retrieving all rows in the result.

范例

Example #1 面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT * from Country ORDER BY Code LIMIT 1";

if ($result = $mysqli->query($query)) {

    $row = $result->fetch_row();

    /* display column lengths */
    foreach ($result->lengths as $i => $val) {
        printf("Field %2d has Length %2d\n", $i+1, $val);
    }
    $result->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT * from Country ORDER BY Code LIMIT 1";

if ($result = mysqli_query($link, $query)) {

    $row = mysqli_fetch_row($result);

    /* display column lengths */
    foreach (mysqli_fetch_lengths($result) as $i => $val) {
        printf("Field %2d has Length %2d\n", $i+1, $val);
    }
    mysqli_free_result($result);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Field  1 has Length  3
Field  2 has Length  5
Field  3 has Length 13
Field  4 has Length  9
Field  5 has Length  6
Field  6 has Length  1
Field  7 has Length  6
Field  8 has Length  4
Field  9 has Length  6
Field 10 has Length  6
Field 11 has Length  5
Field 12 has Length 44
Field 13 has Length  7
Field 14 has Length  3
Field 15 has Length  2
mysqli_result::free
mysqli_result::$num_rows
mysqli_result


Gets the number of rows in a result

mysqli_result::$lengths
MySQLi_Driver
mysqli_result
PHP Manual

mysqli_result::$num_rows

mysqli_num_rows

(PHP 5, PHP 7)

mysqli_result::$num_rows -- mysqli_num_rows — Gets the number of rows in a result

说明

面向对象风格

int $mysqli_result->num_rows;

过程化风格

int mysqli_num_rows ( mysqli_result $result )

Returns the number of rows in the result set.

The behaviour of mysqli_num_rows() depends on whether buffered or unbuffered result sets are being used. For unbuffered result sets, mysqli_num_rows() will not return the correct number of rows until all the rows in the result have been retrieved.

参数

result

仅以过程化样式：由 mysqli_query()，mysqli_store_result() 或 mysqli_use_result()返回的结果集标识。

返回值

Returns number of rows in the result set.

Note:

If the number of rows is greater than PHP_INT_MAX, the number will be returned as a string.

范例

Example #1 面向对象风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if ($result = $mysqli->query("SELECT Code, Name FROM Country ORDER BY Name")) {

    /* determine number of rows result set */
    $row_cnt = $result->num_rows;

    printf("Result set has %d rows.\n", $row_cnt);

    /* close result set */
    $result->close();
}

/* close connection */
$mysqli->close();
?>

Example #2 过程化风格

<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if ($result = mysqli_query($link, "SELECT Code, Name FROM Country ORDER BY Name")) {

    /* determine number of rows result set */
    $row_cnt = mysqli_num_rows($result);

    printf("Result set has %d rows.\n", $row_cnt);

    /* close result set */
    mysqli_free_result($result);
}

/* close connection */
mysqli_close($link);
?>

以上例程会输出：

Result set has 239 rows.

参见

  • mysqli_affected_rows() - Gets the number of affected rows in a previous MySQL operation
  • mysqli_store_result() - Transfers a result set from the last query
  • mysqli_use_result() - Initiate a result set retrieval
  • mysqli_query() - 对数据库执行一次查询

mysqli_result::$lengths
MySQLi_Driver
mysqli_result


MySQLi_Driver类

(PHP 5, PHP 7)

简介

MySQLi 驱动.

类摘要

MySQLi_Driver {
/* 属性 */
public readonly string $client_info ;
public readonly string $client_version ;
public readonly string $driver_version ;
public readonly string $embedded ;
public bool $reconnect ;
public int $report_mode ;
/* 方法 */
void mysqli_driver::embedded_server_end ( void )
bool mysqli_driver::embedded_server_start ( bool $start , array $arguments , array $groups )
bool mysqli_report ( int $flags )
}

属性

client_info

客户端API头版本（比如：(string)"5.1.49"）

client_version

客户端版本（比如：(int)50149）

driver_version

Mysqli驱动版本（比如：(int)101009）

embedded

是否开启了MySQLi嵌入式支持。

reconnect

允许或阻止重连接（查看INI指令中的mysqli.reconnect）

report_mode

设置为MYSQLI_REPORT_OFF, MYSQLI_REPORT_ALL或者 MYSQLI_REPORT_STRICT （为错误抛出异常，译注：需要和MYSQLI_REPORT_ERROR联合使用）, MYSQLI_REPORT_ERROR (报告MYSQL错误)和 MYSQLI_REPORT_INDEX (报告索引相关的错误)的任意组合。 参阅mysqli_report().

Table of Contents

  • mysqli_driver::embedded_server_end — Stop embedded server
  • mysqli_driver::embedded_server_start — Initialize and start embedded server
  • mysqli_driver::$report_mode — Enables or disables internal report functions
mysqli_result::$num_rows
mysqli_driver::embedded_server_end
Mysqli


Stop embedded server

MySQLi_Driver
mysqli_driver::embedded_server_start
MySQLi_Driver
PHP Manual

mysqli_driver::embedded_server_end

mysqli_embedded_server_end

(PHP 5, PHP 7)

mysqli_driver::embedded_server_end -- mysqli_embedded_server_end — Stop embedded server

说明

面向对象风格

void mysqli_driver::embedded_server_end ( void )

过程化风格

void mysqli_embedded_server_end ( void )
Warning

本函数还未编写文档，仅有参数列表。

MySQLi_Driver
mysqli_driver::embedded_server_start
MySQLi_Driver


Initialize and start embedded server

mysqli_driver::embedded_server_end
mysqli_driver::$report_mode
MySQLi_Driver
PHP Manual

mysqli_driver::embedded_server_start

mysqli_embedded_server_start

(PHP 5, PHP 7)

mysqli_driver::embedded_server_start -- mysqli_embedded_server_start — Initialize and start embedded server

说明

面向对象风格

bool mysqli_driver::embedded_server_start ( bool $start , array $arguments , array $groups )

过程化风格

bool mysqli_embedded_server_start ( bool $start , array $arguments , array $groups )
Warning

本函数还未编写文档，仅有参数列表。

mysqli_driver::embedded_server_end
mysqli_driver::$report_mode
MySQLi_Driver


Enables or disables internal report functions

mysqli_driver::embedded_server_start
MySQLi_Warning
MySQLi_Driver
PHP Manual

mysqli_driver::$report_mode

mysqli_report

(PHP 5, PHP 7)

mysqli_driver::$report_mode -- mysqli_report — Enables or disables internal report functions

说明

面向对象风格

int $mysqli_driver->report_mode ;

过程化风格

bool mysqli_report ( int $flags )

A function helpful in improving queries during code development and testing. Depending on the flags, it reports errors from mysqli function calls or queries that don't use an index (or use a bad index).

参数

flags

Supported flags
Name | Description
MYSQLI_REPORT_OFF | Turns reporting off
MYSQLI_REPORT_ERROR | Report errors from mysqli function calls
MYSQLI_REPORT_STRICT | Throw mysqli_sql_exception for errors instead of warnings
MYSQLI_REPORT_INDEX | Report if no index or bad index was used in a query
MYSQLI_REPORT_ALL | Set all options (report all)

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.3.4 | Changing the reporting mode is now be per-request, rather than per-process.
5.2.15 | Changing the reporting mode is now be per-request, rather than per-process.

范例

Example #1 面向对象风格

<?php

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* activate reporting */
$driver = new mysqli_driver();
$driver->report_mode = MYSQLI_REPORT_ALL;

try {

    /* this query should report an error */
    $result = $mysqli->query("SELECT Name FROM Nonexistingtable WHERE population > 50000");

    /* this query should report a bad index */
    $result = $mysqli->query("SELECT Name FROM City WHERE population > 50000");

    $result->close();

    $mysqli->close();

} catch (mysqli_sql_exception $e) {

    echo $e->__toString();
}
?>

Example #2 过程化风格

<?php
/* activate reporting */
mysqli_report(MYSQLI_REPORT_ALL);

$link = mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* this query should report an error */
$result = mysqli_query("SELECT Name FROM Nonexistingtable WHERE population > 50000");

/* this query should report a bad index */
$result = mysqli_query("SELECT Name FROM City WHERE population > 50000");

mysqli_free_result($result);

mysqli_close($link);
?>

参见

  • mysqli_debug() - Performs debugging operations
  • mysqli_dump_debug_info() - 将调试信息输出到日志
  • mysqli_sql_exception
  • set_exception_handler() - 设置一个用户定义的异常处理函数。
  • error_reporting() - 设置应该报告何种 PHP 错误

mysqli_driver::embedded_server_start
MySQLi_Warning
MySQLi_Driver


MySQLi_Warning类

(PHP 5, PHP 7)

简介

代表一个Mysql警告。

类摘要

mysqli_warning {
/* 属性 */
public $message ;
public $sqlstate ;
public $errno ;
/* 方法 */
protected __construct ( void )
public void next ( void )
}

属性

message

消息字符串

sqlstate

SQL状态

errno

错误编号

Table of Contents

  • mysqli_warning::__construct — The __construct purpose
  • mysqli_warning::next — The next purpose
mysqli_driver::$report_mode
mysqli_warning::__construct
Mysqli


The __construct purpose

MySQLi_Warning
mysqli_warning::next
MySQLi_Warning
PHP Manual

mysqli_warning::__construct

(PHP 5, PHP 7)

mysqli_warning::__construct — The __construct purpose

说明

protected mysqli_warning::__construct ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

MySQLi_Warning
mysqli_warning::next
MySQLi_Warning


The next purpose

mysqli_warning::__construct
mysqli_sql_exception
MySQLi_Warning
PHP Manual

mysqli_warning::next

(PHP 5, PHP 7)

mysqli_warning::next — The next purpose

说明

public void mysqli_warning::next ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

mysqli_warning::__construct
mysqli_sql_exception
MySQLi_Warning


mysqli异常类

(PHP 5, PHP 7)

简介

mysqli异常类

类摘要

mysqli_sql_exception extends RuntimeException {
/* 属性 */
protected string $sqlstate ;
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
}

属性

sqlstate

出现错误的sql状态

mysqli_warning::next
别名和过时的Mysqli 函数
Mysqli


别名和过时的Mysqli 函数

Table of Contents

  • mysqli_bind_param — mysqli_stmt_bind_param的别名
  • mysqli_bind_result — mysqli_stmt_bind_result的别名
  • mysqli_client_encoding — mysqli_character_set_name的别名
  • mysqli_connect — 别名 mysqli::__construct
  • mysqli::disable_reads_from_master — Disable reads from master
  • mysqli_disable_rpl_parse — 禁用RPL解析
  • mysqli_enable_reads_from_master — 开启从主机读取
  • mysqli_enable_rpl_parse — 开启RPL解析
  • mysqli_escape_string — 别名 mysqli_real_escape_string
  • mysqli_execute — mysqli_stmt_execute的别名
  • mysqli_fetch — mysqli_stmt_fetch的别名。
  • mysqli_get_cache_stats — 返回客户端Zval缓存统计信息
  • mysqli_get_links_stats — 返回打开和缓存的链接相关信息
  • mysqli_get_metadata — mysqli_stmt_result_metadata的别名
  • mysqli_master_query — 在主/从机制中强制在主机中执行一个查询
  • mysqli_param_count — mysqli_stmt_param_count的别名
  • mysqli_report — 开启或禁用（Mysql）内部（错误）报告函数
  • mysqli_rpl_parse_enabled — 检查是否开启了RPL解析
  • mysqli_rpl_probe — RPL探测
  • mysqli_send_long_data — mysqli_stmt_send_long_data的别名
  • mysqli_set_opt — mysqli_options的别名
  • mysqli_slave_query — 在主/从机制中强制在从机上执行一个查询
mysqli_sql_exception
mysqli_bind_param
Mysqli


mysqli_stmt_bind_param的别名

别名和过时的Mysqli 函数
mysqli_bind_result
别名和过时的Mysqli 函数
PHP Manual

mysqli_bind_param

(PHP 5 < 5.4.0)

mysqli_bind_param — mysqli_stmt_bind_param()的别名

说明

这个函数是mysqli_stmt_bind_param()的一个别名。

注释

Note:

mysqli_bind_param()已经被废弃并且将会被移除。

参见

  • mysqli_stmt_bind_param() - Binds variables to a prepared statement as parameters

别名和过时的Mysqli 函数
mysqli_bind_result
别名和过时的Mysqli 函数


mysqli_stmt_bind_result的别名

mysqli_bind_param
mysqli_client_encoding
别名和过时的Mysqli 函数
PHP Manual

mysqli_bind_result

(PHP 5 < 5.4.0)

mysqli_bind_result — mysqli_stmt_bind_result()的别名

说明

这个函数是mysqli_stmt_bind_result()的一个别名

注释

Note:

mysqli_bind_result()已经被废弃并且将会被移除。

参见

  • mysqli_stmt_bind_result() - Binds variables to a prepared statement for result storage

mysqli_bind_param
mysqli_client_encoding
别名和过时的Mysqli 函数


mysqli_character_set_name的别名

mysqli_bind_result
mysqli_connect
别名和过时的Mysqli 函数
PHP Manual

mysqli_client_encoding

(PHP 5 < 5.4.0)

mysqli_client_encoding — mysqli_character_set_name()的别名

说明

这个函数是mysqli_character_set_name()的一个别名。

参见

  • mysqli_real_escape_string() - Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection

mysqli_bind_result
mysqli_connect
别名和过时的Mysqli 函数


别名 mysqli::__construct

mysqli_client_encoding
mysqli::disable_reads_from_master
别名和过时的Mysqli 函数
PHP Manual

mysqli_connect

(PHP 5, PHP 7)

mysqli_connect — 别名 mysqli::__construct()

说明

此函数是该函数的别名： mysqli::__construct()

mysqli_client_encoding
mysqli::disable_reads_from_master
别名和过时的Mysqli 函数


Disable reads from master

mysqli_connect
mysqli_disable_rpl_parse
别名和过时的Mysqli 函数
PHP Manual

mysqli::disable_reads_from_master

mysqli_disable_reads_from_master

(PHP 5 < 5.3.0)

mysqli::disable_reads_from_master -- mysqli_disable_reads_from_master — Disable reads from master

说明

面向对象风格

void mysqli::disable_reads_from_master ( void )

过程化风格

bool mysqli_disable_reads_from_master ( mysqli $link )
Warning

本函数还未编写文档，仅有参数列表。

Warning

自 PHP 5.3.0 起，已经废弃并移除此函数。

mysqli_connect
mysqli_disable_rpl_parse
别名和过时的Mysqli 函数


禁用RPL解析

mysqli::disable_reads_from_master
mysqli_enable_reads_from_master
别名和过时的Mysqli 函数
PHP Manual

mysqli_disable_rpl_parse

(PHP 5 < 5.3.0)

mysqli_disable_rpl_parse — 禁用RPL解析

说明

bool mysqli_disable_rpl_parse ( mysqli $link )
Warning

本函数还未编写文档，仅有参数列表。

Warning

自 PHP 5.3.0 起，已经废弃并移除此函数。

mysqli::disable_reads_from_master
mysqli_enable_reads_from_master
别名和过时的Mysqli 函数


开启从主机读取

mysqli_disable_rpl_parse
mysqli_enable_rpl_parse
别名和过时的Mysqli 函数
PHP Manual

mysqli_enable_reads_from_master

(PHP 5 < 5.3.0)

mysqli_enable_reads_from_master — 开启从主机读取

说明

bool mysqli_enable_reads_from_master ( mysqli $link )
Warning

本函数还未编写文档，仅有参数列表。

Warning

自 PHP 5.3.0 起，已经废弃并移除此函数。

mysqli_disable_rpl_parse
mysqli_enable_rpl_parse
别名和过时的Mysqli 函数


开启RPL解析

mysqli_enable_reads_from_master
mysqli_escape_string
别名和过时的Mysqli 函数
PHP Manual

mysqli_enable_rpl_parse

(PHP 5 < 5.3.0)

mysqli_enable_rpl_parse — 开启RPL解析

说明

bool mysqli_enable_rpl_parse ( mysqli $link )
Warning

本函数还未编写文档，仅有参数列表。

Warning

自 PHP 5.3.0 起，已经废弃并移除此函数。

mysqli_enable_reads_from_master
mysqli_escape_string
别名和过时的Mysqli 函数


别名 mysqli_real_escape_string

mysqli_enable_rpl_parse
mysqli_execute
别名和过时的Mysqli 函数
PHP Manual

mysqli_escape_string

(PHP 5, PHP 7)

mysqli_escape_string — 别名 mysqli_real_escape_string()

说明

此函数是该函数的别名： mysqli_real_escape_string().

mysqli_enable_rpl_parse
mysqli_execute
别名和过时的Mysqli 函数


mysqli_stmt_execute的别名

mysqli_escape_string
mysqli_fetch
别名和过时的Mysqli 函数
PHP Manual

mysqli_execute

(PHP 5, PHP 7)

mysqli_execute — mysqli_stmt_execute()的别名

说明

这个函数是mysqli_stmt_execute()的一个别名。

注释

Note:

mysqli_execute()已经被废弃并且将会被移除。

参见

  • mysqli_stmt_execute() - Executes a prepared Query

mysqli_escape_string
mysqli_fetch
别名和过时的Mysqli 函数


mysqli_stmt_fetch的别名。

mysqli_execute
mysqli_get_cache_stats
别名和过时的Mysqli 函数
PHP Manual

mysqli_fetch

(PHP 5 < 5.4.0)

mysqli_fetch — mysqli_stmt_fetch()的别名。

说明

这个函数是mysqli_stmt_fetch()的一个别名。

注释

Note:

mysqli_fetch()已经被废弃并且将会被移除。

参见

  • mysqli_stmt_fetch() - Fetch results from a prepared statement into the bound variables

mysqli_execute
mysqli_get_cache_stats
别名和过时的Mysqli 函数


返回客户端Zval缓存统计信息

mysqli_fetch
mysqli_get_links_stats
别名和过时的Mysqli 函数
PHP Manual

mysqli_get_cache_stats

(PHP 5 >= 5.3.0 and < 5.4.0)

mysqli_get_cache_stats — 返回客户端Zval缓存统计信息

说明

array mysqli_get_cache_stats ( void )
Warning

本函数还未编写文档，仅有参数列表。

返回客户端Zval缓存统计信息 仅可用于 mysqlnd。

参数

返回值

如果成功返回一个数组描述的客户端Zval缓存统计信息，其他情况下返回 FALSE。

范例

Example #1 一个mysqli_get_cache_stats()的示例

<?php
$link = mysqli_connect();
print_r(mysqli_get_cache_stats());
?>

以上例程的输出类似于：

Array
(
    [bytes_sent] => 43
    [bytes_received] => 80
    [packets_sent] => 1
    [packets_received] => 2
    [protocol_overhead_in] => 8
    [protocol_overhead_out] => 4
    [bytes_received_ok_packet] => 11
    [bytes_received_eof_packet] => 0
    [bytes_received_rset_header_packet] => 0
    [bytes_received_rset_field_meta_packet] => 0
    [bytes_received_rset_row_packet] => 0
    [bytes_received_prepare_response_packet] => 0
    [bytes_received_change_user_packet] => 0
    [packets_sent_command] => 0
    [packets_received_ok] => 1
    [packets_received_eof] => 0
    [packets_received_rset_header] => 0
    [packets_received_rset_field_meta] => 0
    [packets_received_rset_row] => 0
    [packets_received_prepare_response] => 0
    [packets_received_change_user] => 0
    [result_set_queries] => 0
    [non_result_set_queries] => 0
    [no_index_used] => 0
    [bad_index_used] => 0
    [slow_queries] => 0
    [buffered_sets] => 0
    [unbuffered_sets] => 0
    [ps_buffered_sets] => 0
    [ps_unbuffered_sets] => 0
    [flushed_normal_sets] => 0
    [flushed_ps_sets] => 0
    [ps_prepared_never_executed] => 0
    [ps_prepared_once_executed] => 0
    [rows_fetched_from_server_normal] => 0
    [rows_fetched_from_server_ps] => 0
    [rows_buffered_from_client_normal] => 0
    [rows_buffered_from_client_ps] => 0
    [rows_fetched_from_client_normal_buffered] => 0
    [rows_fetched_from_client_normal_unbuffered] => 0
    [rows_fetched_from_client_ps_buffered] => 0
    [rows_fetched_from_client_ps_unbuffered] => 0
    [rows_fetched_from_client_ps_cursor] => 0
    [rows_skipped_normal] => 0
    [rows_skipped_ps] => 0
    [copy_on_write_saved] => 0
    [copy_on_write_performed] => 0
    [command_buffer_too_small] => 0
    [connect_success] => 1
    [connect_failure] => 0
    [connection_reused] => 0
    [reconnect] => 0
    [pconnect_success] => 0
    [active_connections] => 1
    [active_persistent_connections] => 0
    [explicit_close] => 0
    [implicit_close] => 0
    [disconnect_close] => 0
    [in_middle_of_command_close] => 0
    [explicit_free_result] => 0
    [implicit_free_result] => 0
    [explicit_stmt_close] => 0
    [implicit_stmt_close] => 0
    [mem_emalloc_count] => 0
    [mem_emalloc_ammount] => 0
    [mem_ecalloc_count] => 0
    [mem_ecalloc_ammount] => 0
    [mem_erealloc_count] => 0
    [mem_erealloc_ammount] => 0
    [mem_efree_count] => 0
    [mem_malloc_count] => 0
    [mem_malloc_ammount] => 0
    [mem_calloc_count] => 0
    [mem_calloc_ammount] => 0
    [mem_realloc_count] => 0
    [mem_realloc_ammount] => 0
    [mem_free_count] => 0
    [proto_text_fetched_null] => 0
    [proto_text_fetched_bit] => 0
    [proto_text_fetched_tinyint] => 0
    [proto_text_fetched_short] => 0
    [proto_text_fetched_int24] => 0
    [proto_text_fetched_int] => 0
    [proto_text_fetched_bigint] => 0
    [proto_text_fetched_decimal] => 0
    [proto_text_fetched_float] => 0
    [proto_text_fetched_double] => 0
    [proto_text_fetched_date] => 0
    [proto_text_fetched_year] => 0
    [proto_text_fetched_time] => 0
    [proto_text_fetched_datetime] => 0
    [proto_text_fetched_timestamp] => 0
    [proto_text_fetched_string] => 0
    [proto_text_fetched_blob] => 0
    [proto_text_fetched_enum] => 0
    [proto_text_fetched_set] => 0
    [proto_text_fetched_geometry] => 0
    [proto_text_fetched_other] => 0
    [proto_binary_fetched_null] => 0
    [proto_binary_fetched_bit] => 0
    [proto_binary_fetched_tinyint] => 0
    [proto_binary_fetched_short] => 0
    [proto_binary_fetched_int24] => 0
    [proto_binary_fetched_int] => 0
    [proto_binary_fetched_bigint] => 0
    [proto_binary_fetched_decimal] => 0
    [proto_binary_fetched_float] => 0
    [proto_binary_fetched_double] => 0
    [proto_binary_fetched_date] => 0
    [proto_binary_fetched_year] => 0
    [proto_binary_fetched_time] => 0
    [proto_binary_fetched_datetime] => 0
    [proto_binary_fetched_timestamp] => 0
    [proto_binary_fetched_string] => 0
    [proto_binary_fetched_blob] => 0
    [proto_binary_fetched_enum] => 0
    [proto_binary_fetched_set] => 0
    [proto_binary_fetched_geometry] => 0
    [proto_binary_fetched_other] => 0
)

参见

  • 统计描述

mysqli_fetch
mysqli_get_links_stats
别名和过时的Mysqli 函数


返回打开和缓存的链接相关信息

mysqli_get_cache_stats
mysqli_get_metadata
别名和过时的Mysqli 函数
PHP Manual

mysqli_get_links_stats

(PHP 5 >= 5.6.0, PHP 7)

mysqli_get_links_stats — 返回打开和缓存的链接相关信息

说明

array mysqli_get_links_stats ( void )

mysqli_get_links_stats() 返回已经打开和缓存的MySQL链接的相关信息。

参数

此函数没有参数。

返回值

mysqli_get_links_stats() 返回一个有三个元素的关联数组, 键如下:

total

类型 integer 所有状态链接的总数

active_plinks

类型 integer 不活跃的持久链接数

cached_plinks

类型 integer 不活跃的持久链接数

mysqli_get_cache_stats
mysqli_get_metadata
别名和过时的Mysqli 函数


mysqli_stmt_result_metadata的别名

mysqli_get_links_stats
mysqli_master_query
别名和过时的Mysqli 函数
PHP Manual

mysqli_get_metadata

(PHP 5 < 5.4.0)

mysqli_get_metadata — mysqli_stmt_result_metadata()的别名

说明

这个函数是mysqli_stmt_result_metadata()的一个别名。

注释

Note:

mysqli_get_metadata()已经被废弃并且将会被移除。

参见

  • mysqli_stmt_result_metadata() - Returns result set metadata from a prepared statement

mysqli_get_links_stats
mysqli_master_query
别名和过时的Mysqli 函数


在主/从机制中强制在主机中执行一个查询

mysqli_get_metadata
mysqli_param_count
别名和过时的Mysqli 函数
PHP Manual

mysqli_master_query

(PHP 5 < 5.3.0)

mysqli_master_query — 在主/从机制中强制在主机中执行一个查询

说明

bool mysqli_master_query ( mysqli $link , string $query )
Warning

本函数还未编写文档，仅有参数列表。

Warning

自 PHP 5.3.0 起，已经废弃并移除此函数。

mysqli_get_metadata
mysqli_param_count
别名和过时的Mysqli 函数


mysqli_stmt_param_count的别名

mysqli_master_query
mysqli_report
别名和过时的Mysqli 函数
PHP Manual

mysqli_param_count

(PHP 5 < 5.4.0)

mysqli_param_count — mysqli_stmt_param_count()的别名

说明

这个函数是mysqli_stmt_param_count()的一个别名。

注释

Note:

mysqli_param_count()已经被废弃并且将会被移除。

参见

  • mysqli_stmt_param_count() - Returns the number of parameter for the given statement

mysqli_master_query
mysqli_report
别名和过时的Mysqli 函数


开启或禁用（Mysql）内部（错误）报告函数

mysqli_param_count
mysqli_rpl_parse_enabled
别名和过时的Mysqli 函数
PHP Manual

mysqli_report

(PHP 5, PHP 7)

mysqli_report — 开启或禁用（Mysql）内部（错误）报告函数

说明

bool mysqli_report ( int $flags )

mysqli_report()在开发和测试阶段对于你的查询和代码测试的提升方面是一个非常有用的函数。 它依赖flags参数报告从mysqli函数调用或没有使用索引（或使用了坏的索引）的查询引发的错误。

参数

flags

支持的flags
名称 | 描述
MYSQLI_REPORT_OFF | 关闭错误报告
MYSQLI_REPORT_ERROR | 报告mysqli函数调用中的错误
MYSQLI_REPORT_STRICT | 以抛出异常mysqli_sql_exception的方式替换警告错误。
MYSQLI_REPORT_INDEX | 如果一个查询没有索引或使用了错误的索引则报告错误
MYSQLI_REPORT_ALL | 设置所有选项（报告所有）

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.2.15 & 5.3.4 | 修改了报告模式，现在是每个请求，而不是每个进程。

范例

面向对象风格

<?php
/* 激活错误报告 */
mysqli_report(MYSQLI_REPORT_ALL);

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* 检查连接 */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* 这个查询会报告一个错误 */
$result = $mysqli->query("SELECT Name FROM Nonexistingtable WHERE population > 50000");

/* 这个查询会报告一个坏的索引 */
$result = $mysqli->query("SELECT Name FROM City WHERE population > 50000");
$result->close();

$mysqli->close();
?>

参见

  • MySQLi_Driver::$report_mode
  • mysqli_debug() - Performs debugging operations
  • mysqli_dump_debug_info() - 将调试信息输出到日志

mysqli_param_count
mysqli_rpl_parse_enabled
别名和过时的Mysqli 函数


检查是否开启了RPL解析

mysqli_report
mysqli_rpl_probe
别名和过时的Mysqli 函数
PHP Manual

mysqli_rpl_parse_enabled

(PHP 5 < 5.3.0)

mysqli_rpl_parse_enabled — 检查是否开启了RPL解析

说明

int mysqli_rpl_parse_enabled ( mysqli $link )
Warning

本函数还未编写文档，仅有参数列表。

Warning

自 PHP 5.3.0 起，已经废弃并移除此函数。

mysqli_report
mysqli_rpl_probe
别名和过时的Mysqli 函数


RPL探测

mysqli_rpl_parse_enabled
mysqli_send_long_data
别名和过时的Mysqli 函数
PHP Manual

mysqli_rpl_probe

(PHP 5 < 5.3.0)

mysqli_rpl_probe — RPL探测

说明

bool mysqli_rpl_probe ( mysqli $link )
Warning

本函数还未编写文档，仅有参数列表。

Warning

自 PHP 5.3.0 起，已经废弃并移除此函数。

mysqli_rpl_parse_enabled
mysqli_send_long_data
别名和过时的Mysqli 函数


mysqli_stmt_send_long_data的别名

mysqli_rpl_probe
mysqli_set_opt
别名和过时的Mysqli 函数
PHP Manual

mysqli_send_long_data

(PHP 5 < 5.4.0)

mysqli_send_long_data — mysqli_stmt_send_long_data()的别名

说明

这个函数是mysqli_stmt_send_long_data()的一个别名。

注释

Note:

mysqli_send_long_data()已经被废弃并且将会被移除。

参见

  • mysqli_stmt_send_long_data() - Send data in blocks

mysqli_rpl_probe
mysqli_set_opt
别名和过时的Mysqli 函数


mysqli_options的别名

mysqli_send_long_data
mysqli_slave_query
别名和过时的Mysqli 函数
PHP Manual

mysqli_set_opt

(PHP 5, PHP 7)

mysqli_set_opt — mysqli_options()的别名

说明

这个函数是mysqli_options()的一个别名。

mysqli_send_long_data
mysqli_slave_query
别名和过时的Mysqli 函数


在主/从机制中强制在从机上执行一个查询

mysqli_set_opt
Mysql（原始）
别名和过时的Mysqli 函数
PHP Manual

mysqli_slave_query

(PHP 5 < 5.3.0)

mysqli_slave_query — 在主/从机制中强制在从机上执行一个查询

说明

bool mysqli_slave_query ( mysqli $link , string $query )
Warning

本函数还未编写文档，仅有参数列表。

Warning

自 PHP 5.3.0 起，已经废弃并移除此函数。

mysqli_set_opt
Mysql（原始）
别名和过时的Mysqli 函数


原始的 MySQL API

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 更新日志
  • 预定义常量
  • 范例
    • MySQL 扩展概述范例
  • MySQL 函数
    • mysql_affected_rows — 取得前一次 MySQL 操作所影响的记录行数
    • mysql_client_encoding — 返回字符集的名称
    • mysql_close — 关闭 MySQL 连接
    • mysql_connect — 打开一个到 MySQL 服务器的连接
    • mysql_create_db — 新建一个 MySQL 数据库
    • mysql_data_seek — 移动内部结果的指针
    • mysql_db_name — 取得结果数据
    • mysql_db_query — 发送一条 MySQL 查询
    • mysql_drop_db — 丢弃（删除）一个 MySQL 数据库
    • mysql_errno — 返回上一个 MySQL 操作中的错误信息的数字编码
    • mysql_error — 返回上一个 MySQL 操作产生的文本错误信息
    • mysql_escape_string — 转义一个字符串用于 mysql_query
    • mysql_fetch_array — 从结果集中取得一行作为关联数组，或数字数组，或二者兼有
    • mysql_fetch_assoc — 从结果集中取得一行作为关联数组
    • mysql_fetch_field — 从结果集中取得列信息并作为对象返回
    • mysql_fetch_lengths — 取得结果集中每个输出的长度
    • mysql_fetch_object — 从结果集中取得一行作为对象
    • mysql_fetch_row — 从结果集中取得一行作为枚举数组
    • mysql_field_flags — 从结果中取得和指定字段关联的标志
    • mysql_field_len — 返回指定字段的长度
    • mysql_field_name — 取得结果中指定字段的字段名
    • mysql_field_seek — 将结果集中的指针设定为制定的字段偏移量
    • mysql_field_table — 取得指定字段所在的表名
    • mysql_field_type — 取得结果集中指定字段的类型
    • mysql_free_result — 释放结果内存
    • mysql_get_client_info — 取得 MySQL 客户端信息
    • mysql_get_host_info — 取得 MySQL 主机信息
    • mysql_get_proto_info — 取得 MySQL 协议信息
    • mysql_get_server_info — 取得 MySQL 服务器信息
    • mysql_info — 取得最近一条查询的信息
    • mysql_insert_id — 取得上一步 INSERT 操作产生的 ID
    • mysql_list_dbs — 列出 MySQL 服务器中所有的数据库
    • mysql_list_fields — 列出 MySQL 结果中的字段
    • mysql_list_processes — 列出 MySQL 进程
    • mysql_list_tables — 列出 MySQL 数据库中的表
    • mysql_num_fields — 取得结果集中字段的数目
    • mysql_num_rows — 取得结果集中行的数目
    • mysql_pconnect — 打开一个到 MySQL 服务器的持久连接
    • mysql_ping — Ping 一个服务器连接，如果没有连接则重新连接
    • mysql_query — 发送一条 MySQL 查询
    • mysql_real_escape_string — 转义 SQL 语句中使用的字符串中的特殊字符，并考虑到连接的当前字符集
    • mysql_result — 取得结果数据
    • mysql_select_db — 选择 MySQL 数据库
    • mysql_set_charset — 设置客户端的字符集
    • mysql_stat — 取得当前系统状态
    • mysql_tablename — 取得表名
    • mysql_thread_id — 返回当前线程的 ID
    • mysql_unbuffered_query — 向 MySQL 发送一条 SQL 查询，并不获取和缓存结果的行
mysqli_slave_query
简介
MySQL


简介

从 PHP 5.5.0 起这个扩展已经被废弃，并且从 PHP 7.0.0. 开始被移除。作为替代，可以使用 mysqli 或者 PDO_MySQL 扩展代替。 参见 MySQL API 概览 寻找关于选择 MySQL API 的更多帮助。

这些函数允许你接入 MySQL 数据库服务器。更多关于 MySQL 的信息： » http://www.mysql.com/。

关于 MySQL 的文档能在此找到： » http://dev.mysql.com/doc/。

Mysql（原始）
安装／配置
Mysql（原始）


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Mysql（原始）


需求

为了使这些函数能够使用，你必须编译加入 PHP 对 MySQL 的支持。

Warning

本扩展自 PHP 5.5.0 起已废弃，并在自 PHP 7.0.0 开始被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之。参见 MySQL：选择 API 指南以及相关 FAQ 来获取更多信息。用以替代本函数的有：

安装／配置
安装
安装／配置


安装

Warning

本扩展自 PHP 5.5.0 起已废弃，并在自 PHP 7.0.0 开始被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之。参见 MySQL：选择 API 指南以及相关 FAQ 来获取更多信息。用以替代本函数的有：

编译时，只要使用 --with-mysql[=DIR] 配置选项即可，其中可选的 [DIR] 指向 MySQL 的安装目录。

虽然本 MySQL 扩展库兼容 MySQL 4.1.0 及其以后版本，但是它不支持这些版本提供的额外功能。要使用这些功能，请使用 MySQLi 扩展库。

如果要同时安装 mysql 扩展库和 mysqli 扩展库，必须使用同一个客户端库以避免任何冲突。

在 Linux 系统下安装

Note: [DIR] is the path to the MySQL client library files (headers and libraries), which can be downloaded from » MySQL.

ext/mysql compile time support matrix
PHP 版本 | 默认 | 配置选项: mysqlnd | 配置选项: libmysql | 更新日志
4.x.x | libmysql | 不适用 | --without-mysql to disable | MySQL enabled by default, MySQL client libraries are bundled
5.0.x, 5.1.x, 5.2.x | libmysql | 不适用 | --with-mysql=[DIR] | MySQL is no longer enabled by default, and the MySQL client libraries are no longer bundled
5.3.x | libmysql | --with-mysql=mysqlnd | --with-mysql=[DIR] | mysqlnd is now available
5.4.x | mysqlnd | --with-mysql | --with-mysql=[DIR] | mysqlnd is now the default

在 Windows 系统下安装

PHP 4

PHP MySQL 扩展已经编译入 PHP。

PHP 5+

MySQL 默认未启用，因此必须在 php.ini 中激活 php_mysql.dll 动态连接库。此外，PHP 还需要访问 MySQL 客户端连接库。PHP 的 Windows 发行版包括了一个 libmysql.dll，为了让 PHP 能和 MySQL 对话，此文件必须放在 Windows 的系统路径 PATH 中。怎样做见 FAQ 中的"怎样把 PHP 目录加入到 Windows PATH中"。尽管将 libmysql.dll 拷贝到 Windows 系统目录中也可以（因为系统目录默认在系统路径 PATH 中），但不推荐这样做。

要激活任何 PHP 扩展库（例如 php_mysql.dll），PHP 指令 extension_dir 要被设为 PHP 扩展库所在的目录。参见手工 Windows 安装指南。PHP 5 下 extension_dir 取值的一个例子是 c:\php\ext。

Note:

如果启动 web 服务器时出现类似如下的错误："Unable to load dynamic library './php_mysql.dll'"，这是因为系统找不到 php_mysql.dll 和／或 libmysql.dll。

PHP 5.3.0+

The MySQL Native Driver is enabled by default. Include php_mysql.dll, but libmysql.dll is no longer required or used.

MySQL 安装注意事项

Warning

当同时加在本扩展库和 recode 扩展库时 PHP 可能会崩溃。更多信息见 recode 扩展库。

Note:

如果需要不同于 latin（默认值）的字符集，必须安装外部的（非绑定的）已编译入所需字符集支持的 libmysql。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

MySQL 配置选项
名字 | 默认 | 可修改范围 | 更新日志
mysql.allow_local_infile | "1" | PHP_INI_SYSTEM |
mysql.allow_persistent | "1" | PHP_INI_SYSTEM |
mysql.max_persistent | "-1" | PHP_INI_SYSTEM |
mysql.max_links | "-1" | PHP_INI_SYSTEM |
mysql.trace_mode | "0" | PHP_INI_ALL | 自 PHP 4.3.0 起可用
mysql.default_port | NULL | PHP_INI_ALL |
mysql.default_socket | NULL | PHP_INI_ALL | 自 PHP 4.0.1 起可用
mysql.default_host | NULL | PHP_INI_ALL |
mysql.default_user | NULL | PHP_INI_ALL |
mysql.default_password | NULL | PHP_INI_ALL |
mysql.connect_timeout | "60" | PHP_INI_ALL | 自 PHP 4.3.0 起可用。在 PHP <= 4.3.2 时为 PHP_INI_SYSTEM
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

mysql.allow_local_infile integer

Allow accessing, from PHP's perspective, local files with LOAD DATA statements

mysql.allow_persistent boolean

是否允许 MySQL 的持久连接。

mysql.max_persistent integer

每个进程中最大的持久连接数目。

mysql.max_links integer

每个进程中最大的连接数，包括持久连接。

mysql.trace_mode boolean

跟踪模式。当激活 mysql.trace_mode 时，将会显示 table/index 扫描的警告，未释放的结果集以及 SQL 错误。（PHP 4.3.0 引进）

mysql.default_port string

指定默认连接数据库的 TCP 端口号。如果没有指定默认端口号，则按顺序从 MYSQL_TCP_PORT 环境变量，/etc/services 文件中的 mysql-tcp 项或者编译时指定的 MYSQL_PORT 常量中取得。Win32 环境下只会使用 MYSQL_PORT 常量。

mysql.default_socket string

当使用本地连接的时候，默认的 socket 名称。

mysql.default_host string

默认连接的数据库服务器地址。不适用于 SQL 安全模式。

mysql.default_user string

默认连接数据库时使用的用户名。不适用于 SQL 安全模式。

mysql.default_password string

默认连接数据库时使用的密码。不适用于 SQL 安全模式。

mysql.connect_timeout integer

连接超时秒数。在 Linux 中，此参数设定了等候来自服务器的响应的时长。

安装
资源类型
安装／配置


资源类型

在 MySQL 模块中用到了两种资源类型。第一种是数据库链接的链接标识符，第二种是资源标识符，包含了查询结果集。

运行时配置
更新日志
安装／配置


更新日志

对本扩展的类／函数／方法有以下更新。

ext/mysql 扩展更新日志概要

ext/mysql 扩展相关的更新日志。

全局 ext/mysql 的变更

以下列表是整个 ext/mysql 扩展的变动更新。

版本 | 说明
7.0.0 | 此扩展从 PHP 中移除. 参见 Choosing an API.
5.5.0 | 此扩展已经不建议使用。通过 mysql_connect()、 mysql_pconnect() 或任何由 mysql_* 函数实现的 MySQL 数据库连接 将产生 E_DEPRECATED 错误。
5.5.0 | 所有旧的废弃函数和别名现在会产生 E_DEPRECATED 错误。这些函数分别是： mysql(), mysql_fieldname(), mysql_fieldtable(), mysql_fieldlen(), mysql_fieldtype(), mysql_fieldflags(), mysql_selectdb(), mysql_createdb(), mysql_dropdb(), mysql_freeresult(), mysql_numfields(), mysql_numrows(), mysql_listdbs(), mysql_listtables(), mysql_listfields(), mysql_db_name(), mysql_dbname(), mysql_tablename() 和 mysql_table_name()。

函数的变更项

以下列表为 ext/mysql 函数完整的更新历史项。

Version | Function | Description
5.0.0 | mysql_fetch_object | Added the ability to return as a different object.
4.3.0 | mysql_connect | 添加 client_flags 参数。
4.2.0 | mysql_connect | 添加 new_link 参数。
3.0.10 | mysql_connect | 对 server 添加 ":/path/to/socket" 支持。
3.0.0 | mysql_connect | 对 server 添加 ":port" 支持。
资源类型
预定义常量
Mysql（原始）


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

在 PHP 4.3.0 以后的版本中，允许在 mysql_connect() 函数和 mysql_pconnect() 函数中指定更多的客户端标记。下面列出所定义的常量：

MySQL 客户端常量
常量 | 说明
MYSQL_CLIENT_COMPRESS | 使用压缩的通讯协议
MYSQL_CLIENT_IGNORE_SPACE | 允许在函数名后留空格位
MYSQL_CLIENT_INTERACTIVE | 允许设置断开连接之前所空闲等候的 interactive_timeout 时间（代替 wait_timeout）。
MYSQL_CLIENT_SSL | 使用 SSL 加密。本标志仅在 MySQL 客户端库版本为 4.x 或更高版本时可用。在 PHP 4 和 Windows 版的 PHP 5 安装包中绑定的都是 3.23.x。

mysql_fetch_array() 函数使用一个常量来表示所返回数组的类型。下面是常量的定义：

MySQL fetch 常量
常量 | 说明
MYSQL_ASSOC | 返回的数据列使用字段名作为数组的索引名。
MYSQL_BOTH | 返回的数据列使用字段名及数字索引作为数组的索引名。
MYSQL_NUM | 返回的数据列使用数字索引作为数组的索引名。索引从 0 开始，表示返回结果的第一个字段。

更新日志
范例
Mysql（原始）


范例

Table of Contents

  • MySQL 扩展概述范例
预定义常量
MySQL 扩展概述范例
Mysql（原始）


MySQL 扩展概述范例

这个简单的范例展示了如何连接、执行一个查询，打印结果集后断开 MySQL 数据库的连接。

Example #1 MySQL 扩展概述范例

<?php
// 连接、选择数据库
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
    or die('Could not connect: ' . mysql_error());
echo 'Connected successfully';
mysql_select_db('my_database') or die('Could not select database');

// 执行 SQL 查询
$query = 'SELECT * FROM my_table';
$result = mysql_query($query) or die('Query failed: ' . mysql_error());

// 以 HTML 打印查询结果
echo "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo "\t<tr>\n";
    foreach ($line as $col_value) {
        echo "\t\t<td>$col_value</td>\n";
    }
    echo "\t</tr>\n";
}
echo "</table>\n";

// 释放结果集
mysql_free_result($result);

// 关闭连接
mysql_close($link);
?>

范例
MySQL 函数
范例


MySQL 函数

注释

Note:

大多数 MySQL 函数的最后一个可选参数是 link_identifier。 如果没有提供这个参数，则会使用最后一个打开的连接。 若不存在这个最后打开的连接，则会尝试用 php.ini 里定义的默认参数来连接。 如果没有成功连接，函数会返回 FALSE。

Table of Contents

  • mysql_affected_rows — 取得前一次 MySQL 操作所影响的记录行数
  • mysql_client_encoding — 返回字符集的名称
  • mysql_close — 关闭 MySQL 连接
  • mysql_connect — 打开一个到 MySQL 服务器的连接
  • mysql_create_db — 新建一个 MySQL 数据库
  • mysql_data_seek — 移动内部结果的指针
  • mysql_db_name — 取得结果数据
  • mysql_db_query — 发送一条 MySQL 查询
  • mysql_drop_db — 丢弃（删除）一个 MySQL 数据库
  • mysql_errno — 返回上一个 MySQL 操作中的错误信息的数字编码
  • mysql_error — 返回上一个 MySQL 操作产生的文本错误信息
  • mysql_escape_string — 转义一个字符串用于 mysql_query
  • mysql_fetch_array — 从结果集中取得一行作为关联数组，或数字数组，或二者兼有
  • mysql_fetch_assoc — 从结果集中取得一行作为关联数组
  • mysql_fetch_field — 从结果集中取得列信息并作为对象返回
  • mysql_fetch_lengths — 取得结果集中每个输出的长度
  • mysql_fetch_object — 从结果集中取得一行作为对象
  • mysql_fetch_row — 从结果集中取得一行作为枚举数组
  • mysql_field_flags — 从结果中取得和指定字段关联的标志
  • mysql_field_len — 返回指定字段的长度
  • mysql_field_name — 取得结果中指定字段的字段名
  • mysql_field_seek — 将结果集中的指针设定为制定的字段偏移量
  • mysql_field_table — 取得指定字段所在的表名
  • mysql_field_type — 取得结果集中指定字段的类型
  • mysql_free_result — 释放结果内存
  • mysql_get_client_info — 取得 MySQL 客户端信息
  • mysql_get_host_info — 取得 MySQL 主机信息
  • mysql_get_proto_info — 取得 MySQL 协议信息
  • mysql_get_server_info — 取得 MySQL 服务器信息
  • mysql_info — 取得最近一条查询的信息
  • mysql_insert_id — 取得上一步 INSERT 操作产生的 ID
  • mysql_list_dbs — 列出 MySQL 服务器中所有的数据库
  • mysql_list_fields — 列出 MySQL 结果中的字段
  • mysql_list_processes — 列出 MySQL 进程
  • mysql_list_tables — 列出 MySQL 数据库中的表
  • mysql_num_fields — 取得结果集中字段的数目
  • mysql_num_rows — 取得结果集中行的数目
  • mysql_pconnect — 打开一个到 MySQL 服务器的持久连接
  • mysql_ping — Ping 一个服务器连接，如果没有连接则重新连接
  • mysql_query — 发送一条 MySQL 查询
  • mysql_real_escape_string — 转义 SQL 语句中使用的字符串中的特殊字符，并考虑到连接的当前字符集
  • mysql_result — 取得结果数据
  • mysql_select_db — 选择 MySQL 数据库
  • mysql_set_charset — 设置客户端的字符集
  • mysql_stat — 取得当前系统状态
  • mysql_tablename — 取得表名
  • mysql_thread_id — 返回当前线程的 ID
  • mysql_unbuffered_query — 向 MySQL 发送一条 SQL 查询，并不获取和缓存结果的行
MySQL 扩展概述范例
mysql_affected_rows
Mysql（原始）


取得前一次 MySQL 操作所影响的记录行数

MySQL 函数
mysql_client_encoding
MySQL 函数
PHP Manual

mysql_affected_rows

(PHP 4, PHP 5)

mysql_affected_rows — 取得前一次 MySQL 操作所影响的记录行数

Warning

本扩展自 PHP 5.5.0 起已废弃，并在自 PHP 7.0.0 开始被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之。参见 MySQL：选择 API 指南以及相关 FAQ 来获取更多信息。用以替代本函数的有：

  • mysqli_affected_rows()
  • PDOStatement::rowCount()

说明

int mysql_affected_rows ([ resource $link_identifier = NULL ] )

取得最近一次与 link_identifier 关联的 INSERT，UPDATE 或 DELETE 查询所影响的记录行数。

参数

link_identifier

MySQL 连接。如不指定连接标识，则使用由 mysql_connect() 最近打开的连接。如果没有找到该连接，会尝试不带参数调用 mysql_connect() 来创建。如没有找到连接或无法建立连接，则会生成 E_WARNING 级别的错误。

返回值

执行成功则返回受影响的行的数目，如果最近一次查询失败的话，函数返回 -1。

如果最近一次操作是没有任何条件（WHERE）的 DELETE 查询，在表中所有的记录都会被删除，但本函数返回值在 4.1.2 版之前都为 0。

当使用 UPDATE 查询，MySQL 不会将原值和新值一样的列更新。这样使得 mysql_affected_rows() 函数返回值不一定就是查询条件所符合的记录数，只有真正被修改的记录数才会被返回。

REPLACE 语句首先删除具有相同主键的记录，然后插入一个新记录。本函数返回的是被删除的记录数加上被插入的记录数。

"INSERT ... ON DUPLICATE KEY UPDATE" 这种情况的查询，当执行了一次 INSERT 返回的值会是 1；如果是对已经存在的记录执行一次 UPDATE 将返回 2。

范例

Example #1 mysql_affected_rows() 例子

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');

/* 本例返回被删除记录的准确数目 */
mysql_query('DELETE FROM mytable WHERE id < 10');
printf("Records deleted: %d\n", mysql_affected_rows());

/* 对于非真值的 WHERE 子句，应返回 0 */
mysql_query('DELETE FROM mytable WHERE 0');
printf("Records deleted: %d\n", mysql_affected_rows());
?>

以上例程的输出类似于：

Records deleted: 10
Records deleted: 0

Example #2 使用事务处理的 mysql_affected_rows() 例子

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db('mydb');

/* Update records */
mysql_query("UPDATE mytable SET used=1 WHERE id < 10");
printf ("Updated records: %d\n", mysql_affected_rows());
mysql_query("COMMIT");
?>

以上例程的输出类似于：

Updated Records: 10

注释

Note: 事务处理

如果使用事务处理（transactions），需要在 INSERT，UPDATE 或 DELETE 查询后调用 mysql_affected_rows() 函数，而不是在 COMMIT 命令之后。

Note: SELECT 语句

要获取 SELECT 所返回的行数，可以用 mysql_num_rows()。

Note: Cascaded 外键

mysql_affected_rows() does not count rows affected implicitly through the use of ON DELETE CASCADE and/or ON UPDATE CASCADE in foreign key constraints.

参见

  • mysql_num_rows() - 取得结果集中行的数目
  • mysql_info() - 取得最近一条查询的信息

MySQL 函数
mysql_client_encoding
MySQL 函数


返回字符集的名称

mysql_affected_rows
mysql_close
MySQL 函数
PHP Manual

mysql_client_encoding

(PHP 4 >= 4.3.0, PHP 5)

mysql_client_encoding — 返回字符集的名称

说明

string mysql_client_encoding ([ resource $link_identifier ] )

从 MySQL 中取得 character_set 变量的值。

参数

link_identifier

MySQL 连接。如不指定连接标识，则使用由 mysql_connect() 最近打开的连接。如果没有找到该连接，会尝试不带参数调用 mysql_connect() 来创建。如没有找到连接或无法建立连接，则会生成 E_WARNING 级别的错误。

返回值

返回当前连接的默认字符集名称。

范例

Example #1 mysql_client_encoding() 例子

<?php
$link    = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$charset = mysql_client_encoding($link);

echo "The current character set is: $charset\n";
?>

以上例程的输出类似于：

The current character set is: latin1

注释

Note:

本扩展自 PHP 5.5.0 起已废弃，并在自 PHP 7.0.0 开始被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之。参见 MySQL：选择 API 指南以及相关 FAQ 来获取更多信息。用以替代本函数的有：

  • mysqli_character_set_name()
  • PDO::setAttribute() (e.g., $db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");)

参见

  • mysql_real_escape_string() - 转义 SQL 语句中使用的字符串中的特殊字符，并考虑到连接的当前字符集

mysql_affected_rows
mysql_close
MySQL 函数


关闭 MySQL 连接

mysql_client_encoding
mysql_connect
MySQL 函数
PHP Manual

mysql_close

(PHP 4, PHP 5)

mysql_close — 关闭 MySQL 连接

Warning

本扩展自 PHP 5.5.0 起已废弃，并在自 PHP 7.0.0 开始被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之。参见 MySQL：选择 API 指南以及相关 FAQ 来获取更多信息。用以替代本函数的有：

  • mysqli_close()
  • PDO: 为 PDO 对象设置一个 NULL 值

说明

bool mysql_close ([ resource $link_identifier = NULL ] )

mysql_close() 关闭指定的连接标识所关联的到 MySQL 服务器的非持久连接。如果没有指定 link_identifier，则关闭上一个打开的连接。

通常不需要使用 mysql_close()，因为已打开的非持久连接会在脚本执行完毕后自动关闭。参见释放资源。

参数

link_identifier

MySQL 连接. 如果该连接标识符未给出, 将使用最近一次mysql_connect()建立的连接. 如果没有找到可使用的连接, 将产生一个 E_WARNING 错误.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 mysql_close() 例子

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>

以上例程会输出：

Connected successfully

注释

Note:

mysql_close() 不会关闭由 mysql_pconnect() 建立的持久连接。

参见

  • mysql_connect() - 打开一个到 MySQL 服务器的连接
  • mysql_free_result() - 释放结果内存

mysql_client_encoding
mysql_connect
MySQL 函数


打开一个到 MySQL 服务器的连接

mysql_close
mysql_create_db
MySQL 函数
PHP Manual

mysql_connect

(PHP 4, PHP 5)

mysql_connect — 打开一个到 MySQL 服务器的连接

Warning

本扩展自 PHP 5.5.0 起已废弃，并在自 PHP 7.0.0 开始被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之。参见 MySQL：选择 API 指南以及相关 FAQ 来获取更多信息。用以替代本函数的有：

  • mysqli_connect()
  • PDO::__construct()

说明

resource mysql_connect ([ string $server [, string $username [, string $password [, bool $new_link [, int $client_flags ]]]]] )

打开或重复使用一个到 MySQL 服务器的连接。

参数

server

MySQL 服务器。可以包括端口号，例如 "hostname:port"，或者到本地套接字的路径，例如对于 localhost 的 ":/path/to/socket"。

如果 PHP 指令 mysql.default_host 未定义（默认情况），则默认值是 'localhost:3306'。 在 SQL 安全模式 时，参数被忽略，总是使用 'localhost:3306'。

username

用户名。默认值由 mysql.default_user 定义。 在 SQL 安全模式 时，参数被忽略，总是使用服务器进程所有者的用户名。

password

密码。默认值由mysql.default_password定义。在 SQL 安全模式 时，参数被忽略，总是使用空密码。

new_link

如果用同样的参数第二次调用 mysql_connect()，将不会建立新连接，而将返回已经打开的连接标识。参数 new_link 改变此行为并使 mysql_connect() 总是打开新的连接，甚至当 mysql_connect() 曾在前面被用同样的参数调用过。

client_flags

client_flags 参数可以是以下常量的组合：MYSQL_CLIENT_SSL，MYSQL_CLIENT_COMPRESS，MYSQL_CLIENT_IGNORE_SPACE 或 MYSQL_CLIENT_INTERACTIVE。进一步信息见MySQL 客户端常量。

返回值

如果成功则返回一个 MySQL 连接标识， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
4.3.0 | 添加 client_flags 参数。
4.2.0 | 添加 new_link 参数。
3.0.10 | 对 server 添加 ":/path/to/socket" 支持。
3.0.0 | 对 server 添加 ":port" 支持。

范例

Example #1 mysql_connect() 例子

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>

Example #2 mysql_connect() 例子：使用 hostname:port 语法

<?php
// we connect to example.com and port 3307
$link = mysql_connect('example.com:3307', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);

// we connect to localhost at port 3307
$link = mysql_connect('127.0.0.1:3307', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>

Example #3 mysql_connect() 例子：使用 ":/path/to/socket" 语法

<?php
// we connect to localhost and socket e.g. /tmp/mysql.sock

//variant 1: ommit localhost
$link = mysql_connect('/tmp/mysql', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);

// variant 2: with localhost
$link = mysql_connect('localhost:/tmp/mysql.sock', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>

注释

Note:

本扩展自 PHP 5.5.0 起已废弃，并在自 PHP 7.0.0 开始被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之。参见 MySQL：选择 API 指南以及相关 FAQ 来获取更多信息。用以替代本函数的有：

  • mysqli_connect()
  • PDO::__construct()

Note:

只要将 server 指定为 "localhost" 或 "localhost:port"，MySQL 客户端库会越过此值并尝试连接到本地套接字（Windows 中的名字管道）。如果想用 TCP/IP，应该用 "127.0.0.1" 代替 "localhost"。如果 MySQL 客户端库试图连接到一个错误的本地套接字，则应该在 PHP 配置中设定 的正确路径并把 server 留空。

Note:

脚本一结束，到服务器的连接就被关闭，除非之前已经明确调用 mysql_close() 关闭了。

Note:

可以在函数名前加上一个 @ 来抑制出错时的错误信息。

参见

  • mysql_pconnect() - 打开一个到 MySQL 服务器的持久连接
  • mysql_close() - 关闭 MySQL 连接

mysql_close
mysql_create_db
MySQL 函数


新建一个 MySQL 数据库

mysql_connect
mysql_data_seek
MySQL 函数
PHP Manual

mysql_create_db

(PHP 4, PHP 5)

mysql_create_db — 新建一个 MySQL 数据库

说明

bool mysql_create_db ( string $database name [, resource $link_identifier ] )

mysql_create_db() 尝试在指定的连接标识所关联的服务器上建立一个新数据库。

参数

database_name

要创建的数据库名。

link_identifier

MySQL 连接。如不指定连接标识，则使用由 mysql_connect() 最近打开的连接。如果没有找到该连接，会尝试不带参数调用 mysql_connect() 来创建。如没有找到连接或无法建立连接，则会生成 E_WARNING 级别的错误。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 替代 mysql_create_db() 的例子

mysql_create_db() 函数已废弃。最好用 mysql_query() 来提交一条 SQL 的 CREATE DATABASE 语句来代替。

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}

$sql = 'CREATE DATABASE my_db';
if (mysql_query($sql, $link)) {
    echo "Database my_db created successfully\n";
} else {
    echo 'Error creating database: ' . mysql_error() . "\n";
}
?>

以上例程的输出类似于：

Database my_db created successfully

注释

Note:

本扩展自 PHP 5.5.0 起已废弃，并在自 PHP 7.0.0 开始被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之。参见 MySQL：选择 API 指南以及相关 FAQ 来获取更多信息。用以替代本函数的有：

  • mysqli_query()
  • PDO::query()

Note:

为了向下兼容，可以使用下列已废弃的别名： mysql_createdb()

Note:

如果 MySQL 扩展是基于 MySQL 4.x 客户端库编译的话则本函数不可用。

参见

  • mysql_query() - 发送一条 MySQL 查询
  • mysql_select_db() - 选择 MySQL 数据库

mysql_connect
mysql_data_seek
MySQL 函数


移动内部结果的指针

mysql_create_db
mysql_db_name
MySQL 函数
PHP Manual

mysql_data_seek

(PHP 4, PHP 5)

mysql_data_seek — 移动内部结果的指针

说明

bool mysql_data_seek ( resource $result , int $row_number )

mysql_data_seek() 将指定的结果标识所关联的 MySQL 结果内部的行指针移动到指定的行号。接着调用 mysql_fetch_row() 将返回那一行。

row_number 从 0 开始。row_number 的取值范围应该从 0 到 mysql_num_rows - 1。但是如果结果集为空（mysql_num_rows() == 0），要将指针移动到 0 会失败并发出 E_WARNING 级的错误，mysql_data_seek() 将返回 FALSE。

参数

result

resource 型的结果集。此结果集来自对 mysql_query() 的调用。

row_number

想要设定的新的结果集指针的行数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 mysql_data_seek() 例子

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db('sample_db');
if (!$db_selected) {
    die('Could not select database: ' . mysql_error());
}
$query = 'SELECT last_name, first_name FROM friends';
$result = mysql_query($query);
if (!$result) {
    die('Query failed: ' . mysql_error());
}
/* fetch rows in reverse order */
for ($i = mysql_num_rows($result) - 1; $i >= 0; $i--) {
    if (!mysql_data_seek($result, $i)) {
        echo "Cannot seek to row $i: " . mysql_error() . "\n";
        continue;
    }

    if (!($row = mysql_fetch_assoc($result))) {
        continue;
    }

    echo $row['last_name'] . ' ' . $row['first_name'] . "<br />\n";
}

mysql_free_result($result);
?>

注释

Note:

本扩展自 PHP 5.5.0 起已废弃，并在自 PHP 7.0.0 开始被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之。参见 MySQL：选择 API 指南以及相关 FAQ 来获取更多信息。用以替代本函数的有：

  • mysqli_data_seek()
  • PDO::FETCH_ORI_ABS

Note:

mysql_data_seek() 只能和
mysql_query() 结合起来使用，而不能用于
mysql_unbuffered_query()。

参见

  • mysql_query() - 发送一条 MySQL 查询
  • mysql_num_rows() - 取得结果集中行的数目
  • mysql_fetch_row() - 从结果集中取得一行作为枚举数组
  • mysql_fetch_assoc() - 从结果集中取得一行作为关联数组
  • mysql_fetch_array() - 从结果集中取得一行作为关联数组，或数字数组，或二者兼有
  • mysql_fetch_object() - 从结果集中取得一行作为对象

mysql_create_db
mysql_db_name
MySQL 函数


取得结果数据

mysql_data_seek
mysql_db_query
MySQL 函数
PHP Manual

mysql_db_name

(PHP 4, PHP 5)

mysql_db_name — 取得结果数据

说明

string mysql_db_name ( resource $result , int $row [, mixed $field ] )

取得 mysql_list_dbs() 调用所返回的数据库名。

参数

result

mysql_list_dbs() 调用所返回的结果指针。

row

结果集中的行号。

field

字段名。

返回值

如果成功则返回数据库名，失败返回 FALSE。如果返回了 FALSE，用 mysql_error() 来判断错误的种类。

范例

Example #1 mysql_db_name() 例子

<?php
error_reporting(E_ALL);

$link = mysql_connect('dbhost', 'username', 'password');
$db_list = mysql_list_dbs($link);

$i = 0;
$cnt = mysql_num_rows($db_list);
while ($i < $cnt) {
    echo mysql_db_name($db_list, $i) . "\n";
    $i++;
}
?>

注释

Note:

本扩展自 PHP 5.5.0 起已废弃，并在自 PHP 7.0.0 开始被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之。参见 MySQL：选择 API 指南以及相关 FAQ 来获取更多信息。用以替代本函数的有：

  • Query: SELECT DATABASE()

Note:

为了向下兼容，可以使用下列已废弃的别名： mysql_dbname()

参见

  • mysql_list_dbs() - 列出 MySQL 服务器中所有的数据库
  • mysql_tablename() - 取得表名

mysql_data_seek
mysql_db_query
MySQL 函数


发送一条 MySQL 查询

mysql_db_name
mysql_drop_db
MySQL 函数
PHP Manual

mysql_db_query

(PHP 4, PHP 5)

mysql_db_query — 发送一条 MySQL 查询

说明

resource mysql_db_query ( string $database , string $query [, resource $ link_identifier ] )

根据查询结果返回一个正的 MySQL 结果资源号，出错时返回 FALSE。本函数会对 INSERT/UPDATE/DELETE 查询返回 TRUE/FALSE 来指示成功或失败。

mysql_db_query() 选择一个数据库并在其上执行查询。如果没有提供可选的连接标识，本函数会去找一个到 MySQL 服务器的已打开的连接，如果找不到已打开连接则会尝试无参数调用 mysql_connect() 来建立一个。

注意此函数不会切换回先前连接到的数据库。换句话说，不能用此函数临时在另一个数据库上执行 sql 查询，只能手工切换回来。强烈建议用户在 sql 查询中使用 database.table 语法来替代此函数。

参见 mysql_connect() 和 mysql_query()。

Note: 自 PHP 4.0.6 起不提倡使用此函数。不要用此函数，用 mysql_select_db() 和 mysql_query() 来替代。

mysql_db_name
mysql_drop_db
MySQL 函数


丢弃（删除）一个 MySQL 数据库

mysql_db_query
mysql_errno
MySQL 函数
PHP Manual

mysql_drop_db

(PHP 4, PHP 5)

mysql_drop_db — 丢弃（删除）一个 MySQL 数据库

说明

bool mysql_drop_db ( string $database_name [, resource $ link_identifier ] )

mysql_drop_db() 尝试丢弃（删除）指定连接标识所关联的服务器上的一整个数据库。

成功时返回 TRUE， 或者在失败时返回 FALSE。

为向下兼容也可以用 mysql_dropdb()，但反对这样做。

Note:

不提倡使用 mysql_drop_db() 函数。最好用 mysql_query() 提交一条 SQL DROP DATABASE 语句来替代。

Warning

如果 MySQL 扩展库是基于 MySQL 4.x 客户端库建立的，则本函数不可用。

参见 mysql_create_db() 和 mysql_query()。

参数

database_name

The name of the database that will be deleted.

link_identifier

MySQL 连接。如不指定连接标识，则使用由 mysql_connect() 最近打开的连接。如果没有找到该连接，会尝试不带参数调用 mysql_connect() 来创建。如没有找到连接或无法建立连接，则会生成 E_WARNING 级别的错误。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 mysql_drop_db() alternative example

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}

$sql = 'DROP DATABASE my_db';
if (mysql_query($sql, $link)) {
    echo "Database my_db was successfully dropped\n";
} else {
    echo 'Error dropping database: ' . mysql_error() . "\n";
}
?>

注释

Note:

本扩展自 PHP 5.5.0 起已废弃，并在自 PHP 7.0.0 开始被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之。参见 MySQL：选择 API 指南以及相关 FAQ 来获取更多信息。用以替代本函数的有：

  • Execute a DROP DATABASE query

Warning

This function will not be available if the MySQL extension was built against a MySQL 4.x client library.

Note:

为了向下兼容，可以使用下列已废弃的别名： mysql_dropdb()

参见

  • mysql_query() - 发送一条 MySQL 查询

mysql_db_query
mysql_errno
MySQL 函数


返回上一个 MySQL 操作中的错误信息的数字编码

mysql_drop_db
mysql_error
MySQL 函数
PHP Manual

mysql_errno

(PHP 4, PHP 5)

mysql_errno — 返回上一个 MySQL 操作中的错误信息的数字编码

说明

int mysql_errno ([ resource $link_identifier ] )

返回上一个 MySQL 函数的错误号码，如果没有出错则返回 0（零）。

从 MySQL 数据库后端来的错误不再发出警告，要用
mysql_errno() 来提取错误代码。注意本函数仅返回最近一次
MySQL 函数的执行（不包括 mysql_error() 和
mysql_errno()）的错误代码，因此如果要使用此函数，确保在调用另一个
MySQL 函数之前检查它的值。

Example #1 mysql_errno() 例子

<?php
    mysql_connect("localhost", "mysql_user", "mysql_password");

    mysql_select_db("nonexistentdb");
    echo mysql_errno() . ": " . mysql_error(). "\n";

    mysql_select_db("kossu");
    mysql_query("SELECT * FROM nonexistenttable");
    echo mysql_errno() . ": " . mysql_error() . "\n";
?>

以上例子将产生如下输出：

1049: Unknown database 'nonexistentdb'
1146: Table 'kossu.nonexistenttable' doesn't exist

Note:

如果指定了可选参数则用给定的连接提取错误代码。否则使用上一个打开的连接。

参见 mysql_error()。

mysql_drop_db
mysql_error
MySQL 函数


返回上一个 MySQL 操作产生的文本错误信息

mysql_errno
mysql_escape_string
MySQL 函数
PHP Manual

mysql_error

(PHP 4, PHP 5)

mysql_error — 返回上一个 MySQL 操作产生的文本错误信息

说明

string mysql_error ([ resource $link_identifier ] )

返回上一个 MySQL 函数的错误文本，如果没有出错则返回 ''（空字符串）。如果没有指定连接资源号，则使用上一个成功打开的连接从 MySQL 服务器提取错误信息。

从 MySQL 数据库后端来的错误不再发出警告，要用
mysql_error() 来提取错误文本。注意本函数仅返回最近一次
MySQL 函数的执行（不包括 mysql_error() 和
mysql_errno()）的错误文本，因此如果要使用此函数，确保在调用另一个
MySQL 函数之前检查它的值。

Example #1 mysql_error 例子

<?php
    mysql_connect("localhost", "mysql_user", "mysql_password");

    mysql_select_db("nonexistentdb");
    echo mysql_errno() . ": " . mysql_error(). "\n";

    mysql_select_db("kossu");
    mysql_query("SELECT * FROM nonexistenttable");
    echo mysql_errno() . ": " . mysql_error() . "\n";
?>

以上例子将产生如下输出：

1049: Unknown database 'nonexistentdb'
1146: Table 'kossu.nonexistenttable' doesn't exist

参见 mysql_errno()。

mysql_errno
mysql_escape_string
MySQL 函数


转义一个字符串用于 mysql_query

mysql_error
mysql_fetch_array
MySQL 函数
PHP Manual

mysql_escape_string

(PHP 4 >= 4.0.3, PHP 5)

mysql_escape_string — 转义一个字符串用于 mysql_query

说明

string mysql_escape_string ( string $unescaped_string )

本函数将 unescaped_string 转义，使之可以安全用于 mysql_query()。

Note: mysql_escape_string() 并不转义 % 和 _。 本函数和 mysql_real_escape_string() 完全一样，除了 mysql_real_escape_string() 接受的是一个连接句柄并根据当前字符集转移字符串之外。mysql_escape_string() 并不接受连接参数，也不管当前字符集设定。

Example #1 mysql_escape_string() 例子

<?php
    $item = "Zak's Laptop";
    $escaped_item = mysql_escape_string($item);
    printf ("Escaped string: %s\n", $escaped_item);
?>

以上例子将产生如下输出：

Escaped string: Zak\'s Laptop

参见 mysql_real_escape_string()，addslashes() 和 magic_quotes_gpc 指令。

mysql_error
mysql_fetch_array
MySQL 函数


从结果集中取得一行作为关联数组，或数字数组，或二者兼有

mysql_escape_string
mysql_fetch_assoc
MySQL 函数
PHP Manual

mysql_fetch_array

(PHP 4, PHP 5)

mysql_fetch_array — 从结果集中取得一行作为关联数组，或数字数组，或二者兼有

说明

array mysql_fetch_array ( resource $result [, int $ result_type ] )

返回根据从结果集取得的行生成的数组，如果没有更多行则返回 FALSE。

mysql_fetch_array() 是 mysql_fetch_row() 的扩展版本。除了将数据以数字索引方式储存在数组中之外，还可以将数据作为关联索引储存，用字段名作为键名。

如果结果中的两个或以上的列具有相同字段名，最后一列将优先。要访问同名的其它列，必须用该列的数字索引或给该列起个别名。对有别名的列，不能再用原来的列名访问其内容（本例中的 'field'）。

Example #1 相同字段名的查询

select table1.field as foo, table2.field as bar from table1, table2

有一点很重要必须指出，用 mysql_fetch_array() 并不明显 比用 mysql_fetch_row() 慢，而且还提供了明显更多的值。

mysql_fetch_array() 中可选的第二个参数 result_type 是一个常量，可以接受以下值：MYSQL_ASSOC，MYSQL_NUM 和 MYSQL_BOTH。本特性是 PHP 3.0.7 起新加的。本参数的默认值是 MYSQL_BOTH。

如果用了 MYSQL_BOTH，将得到一个同时包含关联和数字索引的数组。用 MYSQL_ASSOC 只得到关联索引（如同 mysql_fetch_assoc() 那样），用 MYSQL_NUM 只得到数字索引（如同 mysql_fetch_row() 那样）。

Note: 此函数返回的字段名大小写敏感。

Example #2 mysql_fetch_array 使用 MYSQL_NUM

<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("Could not connect: " . mysql_error());
    mysql_select_db("mydb");

    $result = mysql_query("SELECT id, name FROM mytable");

    while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
        printf ("ID: %s  Name: %s", $row[0], $row[1]);
    }

    mysql_free_result($result);
?>

Example #3 mysql_fetch_array 使用 MYSQL_ASSOC

<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("Could not connect: " . mysql_error());
    mysql_select_db("mydb");

    $result = mysql_query("SELECT id, name FROM mytable");

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        printf ("ID: %s  Name: %s", $row["id"], $row["name"]);
    }

    mysql_free_result($result);
?>

Example #4 mysql_fetch_array 使用 MYSQL_BOTH

<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("Could not connect: " . mysql_error());
    mysql_select_db("mydb");

    $result = mysql_query("SELECT id, name FROM mytable");

    while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
        printf ("ID: %s  Name: %s", $row[0], $row["name"]);
    }

    mysql_free_result($result);
?>

参见 mysql_fetch_row() 和 mysql_fetch_assoc()。

参数

result

resource 型的结果集。此结果集来自对 mysql_query() 的调用。

result_type

The type of array that is to be fetched. It's a constant and can take the following values: MYSQL_ASSOC, MYSQL_NUM, and MYSQL_BOTH.

返回值

Returns an array of strings that corresponds to the fetched row, or FALSE if there are no more rows. The type of returned array depends on how result_type is defined. By using MYSQL_BOTH (default), you'll get an array with both associative and number indices. Using MYSQL_ASSOC, you only get associative indices (as mysql_fetch_assoc() works), using MYSQL_NUM, you only get number indices (as mysql_fetch_row() works).

If two or more columns of the result have the same field names, the last column will take precedence. To access the other column(s) of the same name, you must use the numeric index of the column or make an alias for the column. For aliased columns, you cannot access the contents with the original column name.

范例

Example #5 Query with aliased duplicate field names

SELECT table1.field AS foo, table2.field AS bar FROM table1, table2

Example #6 mysql_fetch_array() with MYSQL_NUM

<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
    die("Could not connect: " . mysql_error());
mysql_select_db("mydb");

$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
    printf("ID: %s  Name: %s", $row[0], $row[1]);
}

mysql_free_result($result);
?>

Example #7 mysql_fetch_array() with MYSQL_ASSOC

<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
    die("Could not connect: " . mysql_error());
mysql_select_db("mydb");

$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    printf("ID: %s  Name: %s", $row["id"], $row["name"]);
}

mysql_free_result($result);
?>

Example #8 mysql_fetch_array() with MYSQL_BOTH

<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
    die("Could not connect: " . mysql_error());
mysql_select_db("mydb");

$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
    printf ("ID: %s  Name: %s", $row[0], $row["name"]);
}

mysql_free_result($result);
?>

注释

Note: Performance

An important thing to note is that using mysql_fetch_array() is not significantly slower than using mysql_fetch_row(), while it provides a significant added value.

Note: 此函数返回的字段名大小写敏感。

Note: 此函数将 NULL 字段设置为 PHP NULL 值。

参见

  • mysql_fetch_row() - 从结果集中取得一行作为枚举数组
  • mysql_fetch_assoc() - 从结果集中取得一行作为关联数组
  • mysql_data_seek() - 移动内部结果的指针
  • mysql_query() - 发送一条 MySQL 查询

mysql_escape_string
mysql_fetch_assoc
MySQL 函数


从结果集中取得一行作为关联数组

mysql_fetch_array
mysql_fetch_field
MySQL 函数
PHP Manual

mysql_fetch_assoc

(PHP 4 >= 4.0.3, PHP 5)

mysql_fetch_assoc — 从结果集中取得一行作为关联数组

Warning

本扩展自 PHP 5.5.0 起已废弃，并在自 PHP 7.0.0 开始被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之。参见 MySQL：选择 API 指南以及相关 FAQ 来获取更多信息。用以替代本函数的有：

  • mysqli_fetch_assoc()
  • PDOStatement::fetch(PDO::FETCH_ASSOC)

说明

array mysql_fetch_assoc ( resource $result )

返回对应结果集的关联数组，并且继续移动内部数据指针。 mysql_fetch_assoc() 和用 mysql_fetch_array() 加上第二个可选参数 MYSQL_ASSOC 完全相同。它仅仅返回关联数组。

参数

result

resource 型的结果集。此结果集来自对 mysql_query() 的调用。

返回值

返回根据从结果集取得的行生成的关联数组；如果没有更多行则返回 FALSE。

如果结果中的两个或以上的列具有相同字段名，最后一列将优先。要访问同名的其它列，要么用 mysql_fetch_row() 来取得数字索引或给该列起个别名。 参见 mysql_fetch_array() 例子中有关别名说明。

范例

Example #1 扩展的 mysql_fetch_assoc() 例子

<?php

$conn = mysql_connect("localhost", "mysql_user", "mysql_password");

if (!$conn) {
    echo "Unable to connect to DB: " . mysql_error();
    exit;
}

if (!mysql_select_db("mydbname")) {
    echo "Unable to select mydbname: " . mysql_error();
    exit;
}

$sql = "SELECT id as userid, fullname, userstatus
        FROM   sometable
        WHERE  userstatus = 1";

$result = mysql_query($sql);

if (!$result) {
    echo "Could not successfully run query ($sql) from DB: " . mysql_error();
    exit;
}

if (mysql_num_rows($result) == 0) {
    echo "No rows found, nothing to print so am exiting";
    exit;
}

// While a row of data exists, put that row in $row as an associative array
// Note: If you're expecting just one row, no need to use a loop
// Note: If you put extract($row); inside the following loop, you'll
//       then create $userid, $fullname, and $userstatus
while ($row = mysql_fetch_assoc($result)) {
    echo $row["userid"];
    echo $row["fullname"];
    echo $row["userstatus"];
}

mysql_free_result($result);

?>

注释

Note: 性能

必须指出一个要点： mysql_fetch_assoc() 比 mysql_fetch_row() 并不明显 慢，而且还提供了更多有用的值。

Note: 此函数返回的字段名大小写敏感。

Note: 此函数将 NULL 字段设置为 PHP NULL 值。

参见

  • mysql_fetch_row() - 从结果集中取得一行作为枚举数组
  • mysql_fetch_array() - 从结果集中取得一行作为关联数组，或数字数组，或二者兼有
  • mysql_data_seek() - 移动内部结果的指针
  • mysql_query() - 发送一条 MySQL 查询
  • mysql_error() - 返回上一个 MySQL 操作产生的文本错误信息

mysql_fetch_array
mysql_fetch_field
MySQL 函数


从结果集中取得列信息并作为对象返回

mysql_fetch_assoc
mysql_fetch_lengths
MySQL 函数
PHP Manual

mysql_fetch_field

(PHP 4, PHP 5)

mysql_fetch_field — 从结果集中取得列信息并作为对象返回

说明

object mysql_fetch_field ( resource $result [, int $field_offset ] )

返回一个包含字段信息的对象。

mysql_fetch_field() 可以用来从某个查询结果中取得字段的信息。如果没有指定字段偏移量，则下一个尚未被 mysql_fetch_field() 取得的字段被提取。

对象的属性为：

  • name - 列名
  • table - 该列所在的表名
  • max_length - 该列最大长度
  • not_null - 1，如果该列不能为 NULL
  • primary_key - 1，如果该列是 primary key
  • unique_key - 1，如果该列是 unique key
  • multiple_key - 1，如果该列是 non-unique key
  • numeric - 1，如果该列是 numeric
  • blob - 1，如果该列是 BLOB
  • type - 该列的类型
  • unsigned - 1，如果该列是无符号数
  • zerofill - 1，如果该列是 zero-filled

Note: 此函数返回的字段名大小写敏感。

Example #1 mysql_fetch_field()

<?php
mysql_connect('localhost:3306', $user, $password)
    or die("Could not connect: " . mysql_error());
mysql_select_db("database");
$result = mysql_query("select * from table")
    or die("Query failed: " . mysql_error());
/* get column metadata */
$i = 0;
while ($i < mysql_num_fields($result)) {
    echo "Information for column $i:<br />\n";
    $meta = mysql_fetch_field($result);
    if (!$meta) {
        echo "No information available<br />\n";
    }
    echo "<pre>
blob:         $meta->blob
max_length:   $meta->max_length
multiple_key: $meta->multiple_key
name:         $meta->name
not_null:     $meta->not_null
numeric:      $meta->numeric
primary_key:  $meta->primary_key
table:        $meta->table
type:         $meta->type
unique_key:   $meta->unique_key
unsigned:     $meta->unsigned
zerofill:     $meta->zerofill
</pre>";
    $i++;
}
mysql_free_result($result);
?>

参见 mysql_field_seek()。

参数

result

resource 型的结果集。此结果集来自对 mysql_query() 的调用。

field_offset

The numerical field offset. If the field offset is not specified, the next field that was not yet retrieved by this function is retrieved. The field_offset starts at 0.

返回值

Returns an object containing field information. The properties of the object are:

  • name - column name
  • table - name of the table the column belongs to
  • max_length - maximum length of the column
  • not_null - 1 if the column cannot be NULL
  • primary_key - 1 if the column is a primary key
  • unique_key - 1 if the column is a unique key
  • multiple_key - 1 if the column is a non-unique key
  • numeric - 1 if the column is numeric
  • blob - 1 if the column is a BLOB
  • type - the type of the column
  • unsigned - 1 if the column is unsigned
  • zerofill - 1 if the column is zero-filled

范例

Example #2 mysql_fetch_field() example

<?php
$conn = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$conn) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db('database');
$result = mysql_query('select * from table');
if (!$result) {
    die('Query failed: ' . mysql_error());
}
/* get column metadata */
$i = 0;
while ($i < mysql_num_fields($result)) {
    echo "Information for column $i:<br />\n";
    $meta = mysql_fetch_field($result, $i);
    if (!$meta) {
        echo "No information available<br />\n";
    }
    echo "<pre>
blob:         $meta->blob
max_length:   $meta->max_length
multiple_key: $meta->multiple_key
name:         $meta->name
not_null:     $meta->not_null
numeric:      $meta->numeric
primary_key:  $meta->primary_key
table:        $meta->table
type:         $meta->type
unique_key:   $meta->unique_key
unsigned:     $meta->unsigned
zerofill:     $meta->zerofill
</pre>";
    $i++;
}
mysql_free_result($result);
?>

注释

Note: 此函数返回的字段名大小写敏感。

参见

  • mysql_field_seek() - 将结果集中的指针设定为制定的字段偏移量

mysql_fetch_assoc
mysql_fetch_lengths
MySQL 函数


取得结果集中每个输出的长度

mysql_fetch_field
mysql_fetch_object
MySQL 函数
PHP Manual

mysql_fetch_lengths

(PHP 4, PHP 5)

mysql_fetch_lengths — 取得结果集中每个输出的长度

说明

array mysql_fetch_lengths ( resource $result )

以数组返回上一次用 mysql_fetch_row() 取得的行中每个字段的长度，如果出错返回 FALSE。

mysql_fetch_lengths() 将上一次
mysql_fetch_row()，mysql_fetch_array()
和 mysql_fetch_object()
所返回的每个列的长度储存到一个数组中，偏移量从 0 开始。

参见 mysql_fetch_row()。

mysql_fetch_field
mysql_fetch_object
MySQL 函数


从结果集中取得一行作为对象

mysql_fetch_lengths
mysql_fetch_row
MySQL 函数
PHP Manual

mysql_fetch_object

(PHP 4, PHP 5)

mysql_fetch_object — 从结果集中取得一行作为对象

说明

object mysql_fetch_object ( resource $result )

返回根据所取得的行生成的对象，如果没有更多行则返回 FALSE。

mysql_fetch_object() 和 mysql_fetch_array() 类似，只有一点区别 - 返回一个对象而不是数组。间接地也意味着只能通过字段名来访问数组，而不是偏移量（数字是合法的属性名）。

Note: 此函数返回的字段名大小写敏感。

<?php

/* this is valid */
echo $row->field;
/* this is invalid */
echo $row->0;

?>

速度上，本函数和 mysql_fetch_array() 一样，也几乎和 mysql_fetch_row() 一样快（差别很不明显）。

Example #1 mysql_fetch_object() 例子

<?php
mysql_connect("hostname", "user", "password");
mysql_select_db("mydb");
$result = mysql_query("select * from mytable");
while ($row = mysql_fetch_object($result)) {
    echo $row->user_id;
    echo $row->fullname;
}
mysql_free_result($result);
?>

参见 mysql_fetch_array()，mysql_fetch_assoc() 和 mysql_fetch_row()。

参数

result

resource 型的结果集。此结果集来自对 mysql_query() 的调用。

class_name

The name of the class to instantiate, set the properties of and return. If not specified, a stdClass object is returned.

params

An optional array of parameters to pass to the constructor for class_name objects.

返回值

Returns an object with string properties that correspond to the fetched row, or FALSE if there are no more rows.

更新日志

版本 | 说明
5.0.0 | Added the ability to return as a different object.

范例

Example #2 mysql_fetch_object() example

<?php
mysql_connect("hostname", "user", "password");
mysql_select_db("mydb");
$result = mysql_query("select * from mytable");
while ($row = mysql_fetch_object($result)) {
    echo $row->user_id;
    echo $row->fullname;
}
mysql_free_result($result);
?>

Example #3 mysql_fetch_object() example

<?php
class foo {
    public $name;
}

mysql_connect("hostname", "user", "password");
mysql_select_db("mydb");

$result = mysql_query("select name from mytable limit 1");
$obj = mysql_fetch_object($result, 'foo');
var_dump($obj);
?>

注释

Note: Performance

Speed-wise, the function is identical to mysql_fetch_array(), and almost as quick as mysql_fetch_row() (the difference is insignificant).

Note:

mysql_fetch_object() is similar to mysql_fetch_array(), with one difference - an object is returned, instead of an array. Indirectly, that means that you can only access the data by the field names, and not by their offsets (numbers are illegal property names).

Note: 此函数返回的字段名大小写敏感。

Note: 此函数将 NULL 字段设置为 PHP NULL 值。

参见

  • mysql_fetch_array() - 从结果集中取得一行作为关联数组，或数字数组，或二者兼有
  • mysql_fetch_assoc() - 从结果集中取得一行作为关联数组
  • mysql_fetch_row() - 从结果集中取得一行作为枚举数组
  • mysql_data_seek() - 移动内部结果的指针
  • mysql_query() - 发送一条 MySQL 查询

mysql_fetch_lengths
mysql_fetch_row
MySQL 函数


从结果集中取得一行作为枚举数组

mysql_fetch_object
mysql_field_flags
MySQL 函数
PHP Manual

mysql_fetch_row

(PHP 4, PHP 5)

mysql_fetch_row — 从结果集中取得一行作为枚举数组

说明

array mysql_fetch_row ( resource $result )

返回根据所取得的行生成的数组，如果没有更多行则返回 FALSE。

mysql_fetch_row() 从和指定的结果标识关联的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中，偏移量从 0 开始。

依次调用 mysql_fetch_row() 将返回结果集中的下一行，如果没有更多行则返回 FALSE。

参见 mysql_fetch_array()，mysql_fetch_assoc()，mysql_fetch_object()，mysql_data_seek()，mysql_fetch_lengths() 和 mysql_result()。

参数

result

resource 型的结果集。此结果集来自对 mysql_query() 的调用。

返回值

Returns an numerical array of strings that corresponds to the fetched row, or FALSE if there are no more rows.

mysql_fetch_row() fetches one row of data from the result associated with the specified result identifier. The row is returned as an array. Each result column is stored in an array offset, starting at offset 0.

范例

Example #1 Fetching one row with mysql_fetch_row()

<?php
$result = mysql_query("SELECT id,email FROM people WHERE id = '42'");
if (!$result) {
    echo 'Could not run query: ' . mysql_error();
    exit;
}
$row = mysql_fetch_row($result);

echo $row[0]; // 42
echo $row[1]; // the email value
?>

注释

Note: 此函数将 NULL 字段设置为 PHP NULL 值。

参见

  • mysql_fetch_array() - 从结果集中取得一行作为关联数组，或数字数组，或二者兼有
  • mysql_fetch_assoc() - 从结果集中取得一行作为关联数组
  • mysql_fetch_object() - 从结果集中取得一行作为对象
  • mysql_data_seek() - 移动内部结果的指针
  • mysql_fetch_lengths() - 取得结果集中每个输出的长度
  • mysql_result() - 取得结果数据

mysql_fetch_object
mysql_field_flags
MySQL 函数


从结果中取得和指定字段关联的标志

mysql_fetch_row
mysql_field_len
MySQL 函数
PHP Manual

mysql_field_flags

(PHP 4, PHP 5)

mysql_field_flags — 从结果中取得和指定字段关联的标志

说明

string mysql_field_flags ( resource $result , int $field_offset )

mysql_field_flags() 返回指定字段的字段标志。每个标志都用一个单词表示，之间用一个空格分开，因此可以用 explode() 将其分开。

如果 MySQL 版本足够新，则会支持以下的标志："not_null", "primary_key", "unique_key", "multiple_key", "blob", "unsigned", "zerofill", "binary", "enum", "auto_increment", "timestamp"。

为向下兼容仍然可以使用 mysql_fieldflags()，但反对这样做。

mysql_fetch_row
mysql_field_len
MySQL 函数


返回指定字段的长度

mysql_field_flags
mysql_field_name
MySQL 函数
PHP Manual

mysql_field_len

(PHP 4, PHP 5)

mysql_field_len — 返回指定字段的长度

说明

int mysql_field_len ( resource $result , int $field_offset )

mysql_field_len() 返回指定字段的长度。

为向下兼容仍然可以使用 mysql_fieldlen()，但反对这样做。

mysql_field_flags
mysql_field_name
MySQL 函数


取得结果中指定字段的字段名

mysql_field_len
mysql_field_seek
MySQL 函数
PHP Manual

mysql_field_name

(PHP 4, PHP 5)

mysql_field_name — 取得结果中指定字段的字段名

说明

string mysql_field_name ( resource $result , int $field_index )

mysql_field_name() 返回指定字段索引的字段名。result 必须是一个合法的结果标识符，field_index 是该字段的数字偏移量。

Note:

field_index 从 0 开始。

例如，第三个字段的索引值其实是 2，第四个字段的索引值是 3，以此类推。

Note: 此函数返回的字段名大小写敏感。

Example #1 mysql_field_name() 例子

<?php
/* The users table consists of three fields:
 *   user_id
 *   username
 *   password.
 */
$link = mysql_connect('localhost', "mysql_user", "mysql_password");
$dbname = "mydb";
mysql_select_db($dbname, $link)
    or die("Could not set $dbname: " . mysql_error());
$res = mysql_query("select * from users", $link);

echo mysql_field_name($res, 0) . "\n";
echo mysql_field_name($res, 2);
?>

以上例子将产生如下输出：

user_id
password

为向下兼容仍然可以使用 mysql_fieldname()，但反对这样做。

参数

result

resource 型的结果集。此结果集来自对 mysql_query() 的调用。

field_offset

数值型字段偏移量。 field_offset 从 0 开始。如果 field_offset 不存在，则会发出一个 E_WARNING 级别的错误

返回值

The name of the specified field index on success 或者在失败时返回 FALSE.

范例

Example #2 mysql_field_name() example

<?php
/* The users table consists of three fields:
 *   user_id
 *   username
 *   password.
 */
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect to MySQL server: ' . mysql_error());
}
$dbname = 'mydb';
$db_selected = mysql_select_db($dbname, $link);
if (!$db_selected) {
    die("Could not set $dbname: " . mysql_error());
}
$res = mysql_query('select * from users', $link);

echo mysql_field_name($res, 0) . "\n";
echo mysql_field_name($res, 2);
?>

以上例程会输出：

user_id
password

注释

Note: 此函数返回的字段名大小写敏感。

Note:

为了向下兼容，可以使用下列已废弃的别名： mysql_fieldname()

参见

  • mysql_field_type() - 取得结果集中指定字段的类型
  • mysql_field_len() - 返回指定字段的长度

mysql_field_len
mysql_field_seek
MySQL 函数


将结果集中的指针设定为制定的字段偏移量

mysql_field_name
mysql_field_table
MySQL 函数
PHP Manual

mysql_field_seek

(PHP 4, PHP 5)

mysql_field_seek — 将结果集中的指针设定为制定的字段偏移量

说明

int mysql_field_seek ( resource $result , int $field_offset )

用指定的字段偏移量检索。如果下一个 mysql_fetch_field() 的调用不包括字段偏移量，则会返回本次 mysql_field_seek() 中指定的偏移量的字段。

参见 mysql_fetch_field()。

mysql_field_name
mysql_field_table
MySQL 函数


取得指定字段所在的表名

mysql_field_seek
mysql_field_type
MySQL 函数
PHP Manual

mysql_field_table

(PHP 4, PHP 5)

mysql_field_table — 取得指定字段所在的表名

说明

string mysql_field_table ( resource $result , int $field_offset )

返回指定字段所在的表的名字。

为向下兼容仍然可以使用 mysql_fieldtable()，但反对这样做。

mysql_field_seek
mysql_field_type
MySQL 函数


取得结果集中指定字段的类型

mysql_field_table
mysql_free_result
MySQL 函数
PHP Manual

mysql_field_type

(PHP 4, PHP 5)

mysql_field_type — 取得结果集中指定字段的类型

说明

string mysql_field_type ( resource $result , int $field_offset )

mysql_field_type() 和 mysql_field_name() 函数相似。参数完全相同，但返回的是字段类型而不是字段名。字段类型有"int"，"real"，"string"，"blob"以及其它，详见 » MySQL 手册。

Example #1 mysql_field_type() 例子

<?php
    mysql_connect("localhost", "mysql_username", "mysql_password");
    mysql_select_db("mysql");
    $result = mysql_query("SELECT * FROM func");
    $fields = mysql_num_fields($result);
    $rows   = mysql_num_rows($result);
    $table = mysql_field_table($result, 0);
    echo "Your '".$table."' table has ".$fields." fields and ".$rows." record(s)\n";
    echo "The table has the following fields:\n";
    for ($i=0; $i < $fields; $i++) {
        $type  = mysql_field_type($result, $i);
        $name  = mysql_field_name($result, $i);
        $len   = mysql_field_len($result, $i);
        $flags = mysql_field_flags($result, $i);
        echo $type." ".$name." ".$len." ".$flags."\n";
    }
    mysql_free_result($result);
    mysql_close();
?>

以上例子将产生如下输出：

Your 'func' table has 4 fields and 1 record(s)
The table has the following fields:
string name 64 not_null primary_key binary
int ret 1 not_null
string dl 128 not_null
string type 9 not_null enum

为向下兼容仍然可以使用 mysql_fieldtype()，但反对这样做。

参数

result

resource 型的结果集。此结果集来自对 mysql_query() 的调用。

field_offset

数值型字段偏移量。 field_offset 从 0 开始。如果 field_offset 不存在，则会发出一个 E_WARNING 级别的错误

返回值

The returned field type will be one of "int", "real", "string", "blob", and others as detailed in the » MySQL documentation.

范例

Example #2 mysql_field_type() example

<?php
mysql_connect("localhost", "mysql_username", "mysql_password");
mysql_select_db("mysql");
$result = mysql_query("SELECT * FROM func");
$fields = mysql_num_fields($result);
$rows   = mysql_num_rows($result);
$table  = mysql_field_table($result, 0);
echo "Your '" . $table . "' table has " . $fields . " fields and " . $rows . " record(s)\n";
echo "The table has the following fields:\n";
for ($i=0; $i < $fields; $i++) {
    $type  = mysql_field_type($result, $i);
    $name  = mysql_field_name($result, $i);
    $len   = mysql_field_len($result, $i);
    $flags = mysql_field_flags($result, $i);
    echo $type . " " . $name . " " . $len . " " . $flags . "\n";
}
mysql_free_result($result);
mysql_close();
?>

以上例程的输出类似于：

Your 'func' table has 4 fields and 1 record(s)
The table has the following fields:
string name 64 not_null primary_key binary
int ret 1 not_null
string dl 128 not_null
string type 9 not_null enum

注释

Note:

为了向下兼容，可以使用下列已废弃的别名： mysql_fieldtype()

参见

  • mysql_field_name() - 取得结果中指定字段的字段名
  • mysql_field_len() - 返回指定字段的长度

mysql_field_table
mysql_free_result
MySQL 函数


释放结果内存

mysql_field_type
mysql_get_client_info
MySQL 函数
PHP Manual

mysql_free_result

(PHP 4, PHP 5)

mysql_free_result — 释放结果内存

说明

bool mysql_free_result ( resource $result )

mysql_free_result() 将释放所有与结果标识符 result 所关联的内存。

mysql_free_result() 仅需要在考虑到返回很大的结果集时会占用多少内存时调用。在脚本结束后所有关联的内存都会被自动释放。

成功时返回 TRUE， 或者在失败时返回 FALSE。

为向下兼容仍然可以使用 mysql_freeresult()，但反对这样做。

参数

result

resource 型的结果集。此结果集来自对 mysql_query() 的调用。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

If a non-resource is used for the result, an error of level E_WARNING will be emitted. It's worth noting that mysql_query() only returns a resource for SELECT, SHOW, EXPLAIN, and DESCRIBE queries.

范例

Example #1 A mysql_free_result() example

<?php
$result = mysql_query("SELECT id,email FROM people WHERE id = '42'");
if (!$result) {
    echo 'Could not run query: ' . mysql_error();
    exit;
}
/* Use the result, assuming we're done with it afterwards */
$row = mysql_fetch_assoc($result);

/* Now we free up the result and continue on with our script */
mysql_free_result($result);

echo $row['id'];
echo $row['email'];
?>

注释

Note:

为了向下兼容，可以使用下列已废弃的别名： mysql_freeresult()

参见

  • mysql_query() - 发送一条 MySQL 查询
  • is_resource() - 检测变量是否为资源类型

mysql_field_type
mysql_get_client_info
MySQL 函数


取得 MySQL 客户端信息

mysql_free_result
mysql_get_host_info
MySQL 函数
PHP Manual

mysql_get_client_info

(PHP 4 >= 4.0.5, PHP 5)

mysql_get_client_info — 取得 MySQL 客户端信息

说明

string mysql_get_client_info ( void )

mysql_get_client_info() 返回一个字符串指出了客户端库的版本。

Example #1 mysql_get_client_info() 例子

<?php
    printf ("MySQL client info: %s\n", mysql_get_client_info());
?>

以上例子将产生如下输出：

MySQL client info: 3.23.39

参见 mysql_get_host_info()，mysql_get_proto_info() 和 mysql_get_server_info()。

mysql_free_result
mysql_get_host_info
MySQL 函数


取得 MySQL 主机信息

mysql_get_client_info
mysql_get_proto_info
MySQL 函数
PHP Manual

mysql_get_host_info

(PHP 4 >= 4.0.5, PHP 5)

mysql_get_host_info — 取得 MySQL 主机信息

说明

string mysql_get_host_info ([ resource $link_identifier ] )

mysql_get_host_info() 返回一个字符串说明了连接 link_identifier 所使用的连接方式，包括服务器的主机名。如果省略 link_identifier，则使用上一个打开的连接。

Example #1 mysql_get_host_info() 例子

<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("Could not connect: " . mysql_error());
    printf ("MySQL host info: %s\n", mysql_get_host_info());
?>

以上例子将产生如下输出：

MySQL host info: Localhost via UNIX socket

参见 mysql_get_client_info()，mysql_get_proto_info() 和 mysql_get_server_info()。

mysql_get_client_info
mysql_get_proto_info
MySQL 函数


取得 MySQL 协议信息

mysql_get_host_info
mysql_get_server_info
MySQL 函数
PHP Manual

mysql_get_proto_info

(PHP 4 >= 4.0.5, PHP 5)

mysql_get_proto_info — 取得 MySQL 协议信息

说明

int mysql_get_proto_info ([ resource $link_identifier ] )

mysql_get_proto_info() 返回 link_identifier 所使用的协议版本。如果省略 link_identifier，则使用上一个打开的连接。

Example #1 mysql_get_proto_info() 例子

<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("Could not connect: " . mysql_error());
    printf ("MySQL protocol version: %s\n", mysql_get_proto_info());
?>

以上例子将产生如下输出：

MySQL protocol version: 10

参见 mysql_get_client_info()，mysql_get_host_info() 和 mysql_get_server_info()。

mysql_get_host_info
mysql_get_server_info
MySQL 函数


取得 MySQL 服务器信息

mysql_get_proto_info
mysql_info
MySQL 函数
PHP Manual

mysql_get_server_info

(PHP 4 >= 4.0.5, PHP 5)

mysql_get_server_info — 取得 MySQL 服务器信息

说明

string mysql_get_server_info ([ resource $link_identifier ] )

mysql_get_server_info() 返回 link_identifier 所使用的服务器版本。如果省略 link_identifier，则使用上一个打开的连接。

Example #1 mysql_get_server_info() 例子

<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("Could not connect: " . mysql_error());
    printf ("MySQL server version: %s\n", mysql_get_server_info());
?>

以上例子将产生如下输出：

MySQL server version: 4.0.1-alpha

参见 mysql_get_client_info()，mysql_get_host_info() 和 mysql_get_proto_info()。

mysql_get_proto_info
mysql_info
MySQL 函数


取得最近一条查询的信息

mysql_get_server_info
mysql_insert_id
MySQL 函数
PHP Manual

mysql_info

(PHP 4 >= 4.3.0, PHP 5)

mysql_info — 取得最近一条查询的信息

说明

string mysql_info ([ resource $link_identifier ] )

mysql_info() 返回通过给定的 link_identifier 所进行的最新一条查询的详细信息。如果没有指定 link_identifier，则假定为上一个打开的连接。

mysql_info() 对以下列出的所有语句返回一个字符串。对于其它任何语句返回 FALSE。字符串的格式取决于给出的语句。

Example #1 相关的 MySQL 语句

INSERT INTO ... SELECT ...
字符串格式：Records: 23 Duplicates: 0 Warnings: 0
INSERT INTO ... VALUES (...),(...),(...)...
字符串格式：Records: 37 Duplicates: 0 Warnings: 0
LOAD DATA INFILE ...
字符串格式：Records: 42 Deleted: 0 Skipped: 0 Warnings: 0
ALTER TABLE
字符串格式：Records: 60 Duplicates: 0 Warnings: 0
UPDATE
字符串格式：Rows matched: 65 Changed: 65 Warnings: 0
上例中的数字只是为了演示的目的，实际的值取决于查询。

Note:

mysql_info() 对于 INSERT ... VALUES 语句仅在该语句中列出了多个值的情况下返回一个非 FALSE 的值。

参见 mysql_affected_rows()。

mysql_get_server_info
mysql_insert_id
MySQL 函数


取得上一步 INSERT 操作产生的 ID

mysql_info
mysql_list_dbs
MySQL 函数
PHP Manual

mysql_insert_id

(PHP 4, PHP 5)

mysql_insert_id — 取得上一步 INSERT 操作产生的 ID

说明

int mysql_insert_id ([ resource $link_identifier ] )

mysql_insert_id() 返回给定的 link_identifier 中上一步 INSERT 查询中产生的 AUTO_INCREMENT 的 ID 号。如果没有指定 link_identifier，则使用上一个打开的连接。

如果上一查询没有产生 AUTO_INCREMENT 的值，则 mysql_insert_id() 返回 0。如果需要保存该值以后使用，要确保在产生了值的查询之后立即调用 mysql_insert_id()。

Note:

MySQL 中的 SQL 函数 LAST_INSERT_ID() 总是保存着最新产生的 AUTO_INCREMENT 值，并且不会在查询语句之间被重置。

Warning

mysql_insert_id() 将 MySQL 内部的 C API 函数 mysql_insert_id() 的返回值转换成 long（PHP 中命名为 int）。如果 AUTO_INCREMENT 的列的类型是 BIGINT，则 mysql_insert_id() 返回的值将不正确。可以在 SQL 查询中用 MySQL 内部的 SQL 函数 LAST_INSERT_ID() 来替代。

Example #1 mysql_insert_id() 例子

<?php
    mysql_connect("localhost", "mysql_user", "mysql_password") or
        die("Could not connect: " . mysql_error());
    mysql_select_db("mydb");

    mysql_query("INSERT INTO mytable (product) values ('kossu')");
    printf ("Last inserted record has id %d\n", mysql_insert_id());
?>

参见 mysql_query()。

mysql_info
mysql_list_dbs
MySQL 函数


列出 MySQL 服务器中所有的数据库

mysql_insert_id
mysql_list_fields
MySQL 函数
PHP Manual

mysql_list_dbs

(PHP 4, PHP 5)

mysql_list_dbs — 列出 MySQL 服务器中所有的数据库

说明

resource mysql_list_dbs ([ resource $link_identifier ] )

mysql_list_dbs() 将返回一个结果指针，包含了当前 MySQL 进程中所有可用的数据库。用 mysql_tablename() 函数来遍历此结果指针，或者任何使用结果表的函数，例如 mysql_fetch_array()。

Example #1 mysql_list_dbs() 例子

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$db_list = mysql_list_dbs($link);

while ($row = mysql_fetch_object($db_list)) {
    echo $row->Database . "\n";
}
?>

以上例子将产生如下输出：

database1
database2
database3
...

Note:

以上代码用起来和 mysql_fetch_row() 或类似函数一样简单。

为向下兼容仍然可以使用 mysql_listdbs()，但反对这样做。

参见 mysql_db_name()。

mysql_insert_id
mysql_list_fields
MySQL 函数


列出 MySQL 结果中的字段

mysql_list_dbs
mysql_list_processes
MySQL 函数
PHP Manual

mysql_list_fields

(PHP 4, PHP 5)

mysql_list_fields — 列出 MySQL 结果中的字段

说明

resource mysql_list_fields ( string $database_name , string $table_name [, resource $link_identifier ] )

mysql_list_fields() 取得给定表名的信息。参数是数据库名和表名。返回一个结果指针，可以用于 mysql_field_flags()，mysql_field_len()，mysql_field_name() 和 mysql_field_type()。

Example #1 mysql_list_fields() 例子

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');

$fields = mysql_list_fields("database1", "table1", $link);
$columns = mysql_num_fields($fields);

for ($i = 0; $i < $columns; $i++) {
    echo mysql_field_name($fields, $i) . "\n";
}

以上例子将产生如下输出：

field1
field2
field3
...

为向下兼容仍然可以使用 mysql_listfields()，但反对这样做。

Note:

mysql_list_fields() 函数已过时。最好用 mysql_query() 来发出一条 SHOW COLUMNS FROM table [LIKE 'name'] 的 SQL 语句来代替。

mysql_list_dbs
mysql_list_processes
MySQL 函数


列出 MySQL 进程

mysql_list_fields
mysql_list_tables
MySQL 函数
PHP Manual

mysql_list_processes

(PHP 4 >= 4.3.0, PHP 5)

mysql_list_processes — 列出 MySQL 进程

说明

resource mysql_list_processes ([ resource $link_identifier ] )

mysql_list_processes() 返回一个结果指针，说明了当前服务器的线程。

Example #1 mysql_list_processes() 例子

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');

$result = mysql_list_processes($link);
while ($row = mysql_fetch_assoc($result)){
    printf("%s %s %s %s %s\n", $row["Id"], $row["Host"], $row["db"],
       $row["Command"], $row["Time"]);
}
mysql_free_result ($result);
?>

以上例子将产生如下输出：

1 localhost test Processlist 0
4 localhost mysql sleep 5

参见 mysql_thread_id()。

mysql_list_fields
mysql_list_tables
MySQL 函数


列出 MySQL 数据库中的表

mysql_list_processes
mysql_num_fields
MySQL 函数
PHP Manual

mysql_list_tables

(PHP 4, PHP 5)

mysql_list_tables — 列出 MySQL 数据库中的表

说明

resource mysql_list_tables ( string $database [, resource $link_identifier ] )

mysql_list_tables() 接受一个数据库名并返回和 mysql_query() 函数很相似的一个结果指针。用 mysql_tablename() 函数来遍历此结果指针，或者任何使用结果表的函数，例如 mysql_fetch_array()。

database 参数是需要被取得其中的的表名的数据库名。如果失败 mysql_list_tables() 返回 FALSE。

为向下兼容仍然可以使用本函数的别名 mysql_listtables()，但反对这样做。

Note: 该函数已经被删除了，请不要再使用该函数。您可以用命令 SHOW TABLES FROM DATABASE 来实现该函数的功能。

Example #1 mysql_list_tables() 例子

<?php
    $dbname = 'mysql_dbname';

    if (!mysql_connect('mysql_host', 'mysql_user', 'mysql_password')) {
        print 'Could not connect to mysql';
        exit;
    }

    $result = mysql_list_tables($dbname);

    if (!$result) {
        print "DB Error, could not list tables\n";
        print 'MySQL Error: ' . mysql_error();
        exit;
    }

    while ($row = mysql_fetch_row($result)) {
        print "Table: $row[0]\n";
    }

    mysql_free_result($result);
?>

参见 mysql_list_dbs() 和 mysql_tablename()。

mysql_list_processes
mysql_num_fields
MySQL 函数


取得结果集中字段的数目

mysql_list_tables
mysql_num_rows
MySQL 函数
PHP Manual

mysql_num_fields

(PHP 4, PHP 5)

mysql_num_fields — 取得结果集中字段的数目

说明

int mysql_num_fields ( resource $result )

mysql_num_fields() 返回结果集中字段的数目。

参见 mysql_select_db()，mysql_query()，mysql_fetch_field() 和 mysql_num_rows()。

为向下兼容仍然可以使用 mysql_numfields()，但反对这样做。

mysql_list_tables
mysql_num_rows
MySQL 函数


取得结果集中行的数目

mysql_num_fields
mysql_pconnect
MySQL 函数
PHP Manual

mysql_num_rows

(PHP 4, PHP 5)

mysql_num_rows — 取得结果集中行的数目

说明

int mysql_num_rows ( resource $result )

mysql_num_rows() 返回结果集中行的数目。此命令仅对 SELECT 语句有效。要取得被 INSERT，UPDATE 或者 DELETE 查询所影响到的行的数目，用 mysql_affected_rows()。

Example #1 mysql_num_rows() 例子

<?php

$link = mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("database", $link);

$result = mysql_query("SELECT * FROM table1", $link);
$num_rows = mysql_num_rows($result);

echo "$num_rows Rows\n";

?>

Note:

如果使用 mysql_unbuffered_query()，则直到结果集中的所有行都被提取后 mysql_num_rows() 才能返回正确的值。

参见 mysql_affected_rows()，mysql_connect()，mysql_data_seek()，mysql_select_db() 和 mysql_query()。

为向下兼容仍然可以使用 mysql_numrows()，但反对这样做。

mysql_num_fields
mysql_pconnect
MySQL 函数


打开一个到 MySQL 服务器的持久连接

mysql_num_rows
mysql_ping
MySQL 函数
PHP Manual

mysql_pconnect

(PHP 4, PHP 5)

mysql_pconnect — 打开一个到 MySQL 服务器的持久连接

说明

resource mysql_pconnect ([ string $server [, string $username [, string $password [, int $client_flags ]]]] )

如果成功则返回一个正的 MySQL 持久连接标识符，出错则返回 FALSE。

mysql_pconnect() 建立一个到 MySQL 服务器的连接。如果没有提供可选参数，则使用如下默认值：server = 'localhost:3306'，username = 服务器进程所有者的用户名，password = 空密码。client_flags 参数可以是以下常量的组合：MYSQL_CLIENT_COMPRESS，MYSQL_CLIENT_IGNORE_SPACE 或者 MYSQL_CLIENT_INTERACTIVE。

server 参数也可以包括端口号，例如 "hostname:port"，或者是本机套接字的的路径，例如 ":/path/to/socket"。

Note:

对 ":port" 的支持是 3.0B4 版添加的。

对 ":/path/to/socket" 的支持是 3.0.10 版添加的。

mysql_pconnect() 和 mysql_connect() 非常相似，但有两个主要区别。

首先，当连接的时候本函数将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的（持久）连接，如果找到，则返回此连接标识而不打开新连接。

其次，当脚本执行完毕后到 SQL 服务器的连接不会被关闭，此连接将保持打开以备以后使用（mysql_close() 不会关闭由 mysql_pconnect() 建立的连接）。

可选参数 client_flags 自 PHP 4.3.0 版起可用。

此种连接称为"持久的"。

Note:

注意，此种连接仅能用于模块版本的 PHP。更多信息参见数据库持久连接一节。

Warning

使用持久连接需要调整一些 Apache 和 MySQL 的配置以使不会超出 MySQL 所允许的连接数目。

mysql_num_rows
mysql_ping
MySQL 函数


Ping 一个服务器连接，如果没有连接则重新连接

mysql_pconnect
mysql_query
MySQL 函数
PHP Manual

mysql_ping

(PHP 4 >= 4.3.0, PHP 5)

mysql_ping — Ping 一个服务器连接，如果没有连接则重新连接

说明

bool mysql_ping ([ resource $ link_identifier ] )

mysql_ping() 检查到服务器的连接是否正常。如果断开，则自动尝试连接。本函数可用于空闲很久的脚本来检查服务器是否关闭了连接，如果有必要则重新连接上。如果到服务器的连接可用则 mysql_ping() 返回 TRUE，否则返回 FALSE。

参见 mysql_thread_id() 和 mysql_list_processes()。

mysql_pconnect
mysql_query
MySQL 函数


发送一条 MySQL 查询

mysql_ping
mysql_real_escape_string
MySQL 函数
PHP Manual

mysql_query

(PHP 4, PHP 5)

mysql_query — 发送一条 MySQL 查询

Warning

本扩展自 PHP 5.5.0 起已废弃，并在自 PHP 7.0.0 开始被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之。参见 MySQL：选择 API 指南以及相关 FAQ 来获取更多信息。用以替代本函数的有：

  • mysqli_query()
  • PDO::query()

说明

resource mysql_query ( string $query [, resource $link_identifier = NULL ] )

mysql_query() 向与指定的 link_identifier 关联的服务器中的当前活动数据库发送一条查询（不支持多条查询）。

参数

query

SQL 查询语句

查询字符串不应以分号结束。 查询中被嵌入的数据应该正确地转义。

link_identifier

MySQL 连接。如不指定连接标识，则使用由 mysql_connect() 最近打开的连接。如果没有找到该连接，会尝试不带参数调用 mysql_connect() 来创建。如没有找到连接或无法建立连接，则会生成 E_WARNING 级别的错误。

返回值

mysql_query() 仅对 SELECT，SHOW，DESCRIBE, EXPLAIN 和其他语句 语句返回一个 resource，如果查询出现错误则返回 FALSE。

对于其它类型的 SQL 语句，比如INSERT, UPDATE, DELETE, DROP 之类， mysql_query() 在执行成功时返回 TRUE，出错时返回 FALSE。

返回的结果资源应该传递给 mysql_fetch_array() 和其他函数来处理结果表,取出返回的数据。

假定查询成功，可以调用 mysql_num_rows() 来查看对应于 SELECT 语句返回了多少行，或者调用 mysql_affected_rows() 来查看对应于 DELETE，INSERT，REPLACE 或 UPDATE 语句影响到了多少行。

如果没有权限访问查询语句中引用的表时，mysql_query() 也会返回 FALSE。

范例

Example #1 无效的查询

以下查询语法上有错，因此 mysql_query() 失败并返回 FALSE。

<?php
$result = mysql_query('SELECT * WHERE 1=1');
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

?>

Example #2 有效的查询

以下查询语法正确，所以 mysql_query() 返回了一个 resource。

<?php
// 这应该由用户提供,下面是一个示例
$firstname = 'fred';
$lastname  = 'fox';

// 构造查询
// 这是执行 SQL 最好的方式
// 更多例子参见 mysql_real_escape_string()
$query = sprintf("SELECT firstname, lastname, address, age FROM friends
    WHERE firstname='%s' AND lastname='%s'",
    mysql_real_escape_string($firstname),
    mysql_real_escape_string($lastname));

// 执行查询
$result = mysql_query($query);

// 检查结果
// 下面显示了实际发送给 MySQL 的查询，以及出现的错误。这对调试很有帮助。
if (!$result) {
    $message  = 'Invalid query: ' . mysql_error() . "\n";
    $message .= 'Whole query: ' . $query;
    die($message);
}

// 结果的使用
// 尝试 print $result 并不会取出结果资源中的信息
// 所以必须至少使用其中一个 mysql 结果函数
// 参见 mysql_result(), mysql_fetch_array(), mysql_fetch_row() 等。
while ($row = mysql_fetch_assoc($result)) {
    echo $row['firstname'];
    echo $row['lastname'];
    echo $row['address'];
    echo $row['age'];
}

// 释放关联结果集的资源
// 在脚本结束的时候会自动进行
mysql_free_result($result);
?>

参见

  • mysql_connect() - 打开一个到 MySQL 服务器的连接
  • mysql_error() - 返回上一个 MySQL 操作产生的文本错误信息
  • mysql_real_escape_string() - 转义 SQL 语句中使用的字符串中的特殊字符，并考虑到连接的当前字符集
  • mysql_result() - 取得结果数据
  • mysql_fetch_assoc() - 从结果集中取得一行作为关联数组
  • mysql_unbuffered_query() - 向 MySQL 发送一条 SQL 查询，并不获取和缓存结果的行

mysql_ping
mysql_real_escape_string
MySQL 函数


转义 SQL 语句中使用的字符串中的特殊字符，并考虑到连接的当前字符集

mysql_query
mysql_result
MySQL 函数
PHP Manual

mysql_real_escape_string

(PHP 4 >= 4.3.0, PHP 5)

mysql_real_escape_string — 转义 SQL 语句中使用的字符串中的特殊字符，并考虑到连接的当前字符集

Warning

本扩展自 PHP 5.5.0 起已废弃，并在自 PHP 7.0.0 开始被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之。参见 MySQL：选择 API 指南以及相关 FAQ 来获取更多信息。用以替代本函数的有：

  • mysqli_real_escape_string()
  • PDO::quote()

说明

string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier = NULL ] )

本函数将 unescaped_string 中的特殊字符转义，并计及连接的当前字符集，因此可以安全用于 mysql_query()。

mysql_real_escape_string() 调用mysql库的函数 mysql_real_escape_string, 在以下字符前添加反斜杠: \x00, \n, \r, \, ', " 和 \x1a.

为了安全起见，在像MySQL传送查询前，必须调用这个函数（除了少数例外情况）。

Caution

安全提示: 默认字符集

The character set must be set either at the server level, or with the API function mysql_set_charset() for it to affect mysql_real_escape_string(). See the concepts section on character sets for more information.

参数

unescaped_string

The string that is to be escaped.

link_identifier

MySQL 连接。如不指定连接标识，则使用由 mysql_connect() 最近打开的连接。如果没有找到该连接，会尝试不带参数调用 mysql_connect() 来创建。如没有找到连接或无法建立连接，则会生成 E_WARNING 级别的错误。

返回值

Returns the escaped string, or FALSE on error.

错误／异常

Executing this function without a MySQL connection present will also emit E_WARNING level PHP errors. Only execute this function with a valid MySQL connection present.

范例

Example #1 mysql_real_escape_string() 例子

<?php
// Connect
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
    OR die(mysql_error());

// Query
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
            mysql_real_escape_string($user),
            mysql_real_escape_string($password));
?>

Example #2 mysql_real_escape_string() requires a connection example

This example demonstrates what happens if a MySQL connection is not present when calling this function.

<?php
// We have not connected to MySQL

$lastname  = "O'Reilly";
$_lastname = mysql_real_escape_string($lastname);

$query = "SELECT * FROM actors WHERE last_name = '$_lastname'";

var_dump($_lastname);
var_dump($query);
?>

以上例程的输出类似于：

Warning: mysql_real_escape_string(): No such file or directory in /this/test/script.php on line 5
Warning: mysql_real_escape_string(): A link to the server could not be established in /this/test/script.php on line 5

bool(false)
string(41) "SELECT * FROM actors WHERE last_name = ''"

Example #3 An example SQL Injection Attack

<?php
// We didn't check $_POST['password'], it could be anything the user wanted! For example:
$_POST['username'] = 'aidan';
$_POST['password'] = "' OR ''='";

// Query database to check if there are any matching users
$query = "SELECT * FROM users WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'";
mysql_query($query);

// This means the query sent to MySQL would be:
echo $query;
?>

The query sent to MySQL:

SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''

This would allow anyone to log in without a valid password.

注释

Note:

A MySQL connection is required before using mysql_real_escape_string() otherwise an error of level E_WARNING is generated, and FALSE is returned. If link_identifier isn't defined, the last MySQL connection is used.

Note:

If magic_quotes_gpc is enabled, first apply stripslashes() to the data. Using this function on data which has already been escaped will escape the data twice.

Note:

If this function is not used to escape data, the query is vulnerable to SQL Injection Attacks.

Note: mysql_real_escape_string() does not escape % and _. These are wildcards in MySQL if combined with LIKE, GRANT, or REVOKE.

参见

  • mysql_set_charset() - 设置客户端的字符集
  • mysql_client_encoding() - 返回字符集的名称
  • addslashes() - 使用反斜线引用字符串
  • stripslashes() - 反引用一个引用字符串
  • The magic_quotes_gpc directive
  • The magic_quotes_runtime directive

mysql_query
mysql_result
MySQL 函数


取得结果数据

mysql_real_escape_string
mysql_select_db
MySQL 函数
PHP Manual

mysql_result

(PHP 4, PHP 5)

mysql_result — 取得结果数据

说明

mixed mysql_result ( resource $result , int $row [, mixed $field ] )

mysql_result() 返回 MySQL 结果集中一个单元的内容。字段参数可以是字段的偏移量或者字段名，或者是字段表点字段名（tablename.fieldname）。如果给列起了别名（'select foo as bar from...'），则用别名替代列名。

当作用于很大的结果集时，应该考虑使用能够取得整行的函数（在下边指出）。这些函数在一次函数调用中返回了多个单元的内容，比 mysql_result() 快得多。此外注意在字段参数中指定数字偏移量比指定字段名或者 tablename.fieldname 要快得多。

调用 mysql_result() 不能和其它处理结果集的函数混合调用。

Example #1 mysql_result() 例子

<?php
    $link = mysql_connect("localhost", "mysql_user", "mysql_password")
            or die("Could not connect: " . mysql_error());

    $result = mysql_query("SELECT name FROM work.employee")
            or die("Could not query: . mysql_error());

    echo mysql_result($result,2); // outputs third employee's name

    mysql_close($link);
?>

推荐使用高性能的替代函数：mysql_fetch_row()，mysql_fetch_array()，mysql_fetch_assoc() 和 mysql_fetch_object()。

mysql_real_escape_string
mysql_select_db
MySQL 函数


选择 MySQL 数据库

mysql_result
mysql_set_charset
MySQL 函数
PHP Manual

mysql_select_db

(PHP 4, PHP 5)

mysql_select_db — 选择 MySQL 数据库

说明

bool mysql_select_db ( string $database_name [, resource $ link_identifier ] )

成功时返回 TRUE， 或者在失败时返回 FALSE。

mysql_select_db() 设定与指定的连接标识符所关联的服务器上的当前激活数据库。如果没有指定连接标识符，则使用上一个打开的连接。如果没有打开的连接，本函数将无参数调用 mysql_connect() 来尝试打开一个并使用之。

每个其后的 mysql_query() 调用都会作用于活动数据库。

Example #1 mysql_select_db() 例子

<?php

$lnk = mysql_connect('localhost', 'mysql_user', 'mysql_password')
       or die ('Not connected : ' . mysql_error());

// make foo the current db
mysql_select_db('foo', $lnk) or die ('Can\'t use foo : ' . mysql_error());

?>

参见 mysql_connect()，mysql_pconnect() 和 mysql_query()。

为向下兼容仍然可以使用 mysql_selectdb()，但反对这样做。

参数

database_name

The name of the database that is to be selected.

link_identifier

MySQL 连接。如不指定连接标识，则使用由 mysql_connect() 最近打开的连接。如果没有找到该连接，会尝试不带参数调用 mysql_connect() 来创建。如没有找到连接或无法建立连接，则会生成 E_WARNING 级别的错误。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #2 mysql_select_db() example

<?php

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Not connected : ' . mysql_error());
}

// make foo the current db
$db_selected = mysql_select_db('foo', $link);
if (!$db_selected) {
    die ('Can\'t use foo : ' . mysql_error());
}
?>

注释

Note:

为了向下兼容，可以使用下列已废弃的别名： mysql_selectdb()

参见

  • mysql_connect() - 打开一个到 MySQL 服务器的连接
  • mysql_pconnect() - 打开一个到 MySQL 服务器的持久连接
  • mysql_query() - 发送一条 MySQL 查询

mysql_result
mysql_set_charset
MySQL 函数


设置客户端的字符集

mysql_select_db
mysql_stat
MySQL 函数
PHP Manual

mysql_set_charset

(PHP 5 >= 5.2.3)

mysql_set_charset — 设置客户端的字符集

本扩展自 PHP 5.5.0 起已废弃，并在自 PHP 7.0.0 开始被移除。应使用 MySQLi 或 PDO_MySQL 扩展来替换之。参见 MySQL：选择 API 指南以及相关 FAQ 来获取更多信息。用以替代本函数的有：

  • mysqli_character_set_name()
  • PDO: 添加 charset 到连接字符串，比如 charset=utf8

说明

bool mysql_set_charset ( string $charset [, resource $link_identifier = NULL ] )

设置当前连接的默认字符集。

参数

charset

一个有效的字符集名称。

link_identifier

MySQL 连接。如不指定连接标识，则使用由 mysql_connect() 最近打开的连接。如果没有找到该连接，会尝试不带参数调用 mysql_connect() 来创建。如没有找到连接或无法建立连接，则会生成 E_WARNING 级别的错误。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note:

本函数需要 MySQL 5.0.7 或更高版本。

Note:

这是改变字符集的最佳方式。不推荐您使用 mysql_query() 来设置 (比如 SET NAMES utf8)。 更多信息参见 MySQL character set concepts 一节。

参见

  • mysql_client_encoding() - 返回字符集的名称
  • Setting character sets in MySQL
  • » List of character sets that MySQL supports

mysql_select_db
mysql_stat
MySQL 函数


取得当前系统状态

mysql_set_charset
mysql_tablename
MySQL 函数
PHP Manual

mysql_stat

(PHP 4 >= 4.3.0, PHP 5)

mysql_stat — 取得当前系统状态

说明

string mysql_stat ([ resource $link_identifier ] )

mysql_stat() 返回当前服务器状态。

Note:

mysql_stat() 目前只返回 uptime，threads，queries，open tables，flush tables 和 queries per second。要得到其它状态变量的完整列表，只能使用 SQL 命令 SHOW STATUS。

Example #1 mysql_stat() 例子

<?php
$link = mysql_connect('localhost', "mysql_user", "mysql_password");
$status = explode('  ', mysql_stat($link));
print_r($status);
?>

以上例子将产生如下输出：

Array
(
    [0] => Uptime: 5380
    [1] => Threads: 2
    [2] => Questions: 1321299
    [3] => Slow queries: 0
    [4] => Opens: 26
    [5] => Flush tables: 1
    [6] => Open tables: 17
    [7] => Queries per second avg: 245.595
)

mysql_set_charset
mysql_tablename
MySQL 函数


取得表名

mysql_stat
mysql_thread_id
MySQL 函数
PHP Manual

mysql_tablename

(PHP 4, PHP 5)

mysql_tablename — 取得表名

说明

string mysql_tablename ( resource $result , int $i )

mysql_tablename() 接受 mysql_list_tables() 返回的结果指针以及一个整数索引作为参数并返回表名。可以用 mysql_num_rows() 函数来判断结果指针中的表的数目。用 mysql_tablename() 函数来遍历此结果指针，或者任何处理结果表的函数，例如 mysql_fetch_array()。

Example #1 mysql_tablename() 例子

<?php
    mysql_connect("localhost", "mysql_user", "mysql_password");
    $result = mysql_list_tables("mydb");

    for ($i = 0; $i < mysql_num_rows($result); $i++)
        printf ("Table: %s\n", mysql_tablename($result, $i));

    mysql_free_result($result);
?>

参见 mysql_list_tables()。

mysql_stat
mysql_thread_id
MySQL 函数


返回当前线程的 ID

mysql_tablename
mysql_unbuffered_query
MySQL 函数
PHP Manual

mysql_thread_id

(PHP 4 >= 4.3.0, PHP 5)

mysql_thread_id — 返回当前线程的 ID

说明

int mysql_thread_id ([ resource $link_identifier ] )

mysql_thread_id() 返回当前线程的 ID。如果连接丢失了并用 mysql_ping() 重新连接上，线程 ID 会改变。这意味着不能取得线程的 ID 后保存起来备用。当需要的时候再去获取之。

Example #1 mysql_thread_id() 例子

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$thread_id = mysql_thread_id($link);
if ($thread_id){
    printf ("current thread id is %d\n", $thread_id);
}
?>

以上例子将产生如下输出：

current thread id is 73

参见 mysql_ping() 和 mysql_list_processes()。

mysql_tablename
mysql_unbuffered_query
MySQL 函数


向 MySQL 发送一条 SQL 查询，并不获取和缓存结果的行

mysql_thread_id
Mysqlnd
MySQL 函数
PHP Manual

mysql_unbuffered_query

(PHP 4 >= 4.0.6, PHP 5)

mysql_unbuffered_query — 向 MySQL 发送一条 SQL 查询，并不获取和缓存结果的行

说明

resource mysql_unbuffered_query ( string $query [, resource $link_identifier ] )

mysql_unbuffered_query() 向 MySQL 发送一条 SQL 查询 query，但不像 mysql_query() 那样自动获取并缓存结果集。一方面，这在处理很大的结果集时会节省可观的内存。另一方面，可以在获取第一行后立即对结果集进行操作，而不用等到整个 SQL 语句都执行完毕。当使用多个数据库连接时，必须指定可选参数 link_identifier。

Note:

mysql_unbuffered_query() 的好处是有代价的：在 mysql_unbuffered_query() 返回的结果集之上不能使用 mysql_num_rows() 和 mysql_data_seek()。此外在向 MySQL 发送一条新的 SQL 查询之前，必须提取掉所有未缓存的 SQL 查询所产生的结果行。

参见 mysql_query()。

mysql_thread_id
Mysqlnd
MySQL 函数


MySQL Native Driver

  • 简介
  • Overview
  • Installation
  • 运行时配置
  • Incompatibilities
  • Persistent Connections
  • Statistics
  • Notes
  • Memory management
  • MySQL Native Driver Plugin API
    • A comparison of mysqlnd plugins with MySQL Proxy
    • Obtaining the mysqlnd plugin API
    • MySQL Native Driver Plugin Architecture
    • The mysqlnd plugin API
    • Getting started building a mysqlnd plugin
mysql_unbuffered_query
简介
MySQL


简介

MySQL Native Driver is a replacement for the MySQL Client Library (libmysqlclient). MySQL Native Driver is part of the official PHP sources as of PHP 5.3.0.

The MySQL database extensions MySQL extension, mysqli and PDO MYSQL all communicate with the MySQL server. In the past, this was done by the extension using the services provided by the MySQL Client Library. The extensions were compiled against the MySQL Client Library in order to use its client-server protocol.

With MySQL Native Driver there is now an alternative, as the MySQL database extensions can be compiled to use MySQL Native Driver instead of the MySQL Client Library.

MySQL Native Driver is written in C as a PHP extension.

Mysqlnd
Overview
Mysqlnd


Overview

What it is not

Although MySQL Native Driver is written as a PHP extension, it is important to note that it does not provide a new API to the PHP programmer. The programmer APIs for MySQL database connectivity are provided by the MySQL extension, mysqli and PDO MYSQL. These extensions can now use the services of MySQL Native Driver to communicate with the MySQL Server. Therefore, you should not think of MySQL Native Driver as an API.

Why use it?

Using the MySQL Native Driver offers a number of advantages over using the MySQL Client Library.

The older MySQL Client Library was written by MySQL AB (now Oracle Corporation) and so was released under the MySQL license. This ultimately led to MySQL support being disabled by default in PHP. However, the MySQL Native Driver has been developed as part of the PHP project, and is therefore released under the PHP license. This removes licensing issues that have been problematic in the past.

Also, in the past, you needed to build the MySQL database extensions against a copy of the MySQL Client Library. This typically meant you needed to have MySQL installed on a machine where you were building the PHP source code. Also, when your PHP application was running, the MySQL database extensions would call down to the MySQL Client library file at run time, so the file needed to be installed on your system. With MySQL Native Driver that is no longer the case as it is included as part of the standard distribution. So you do not need MySQL installed in order to build PHP or run PHP database applications.

Because MySQL Native Driver is written as a PHP extension, it is tightly coupled to the workings of PHP. This leads to gains in efficiency, especially when it comes to memory usage, as the driver uses the PHP memory management system. It also supports the PHP memory limit. Using MySQL Native Driver leads to comparable or better performance than using MySQL Client Library, it always ensures the most efficient use of memory. One example of the memory efficiency is the fact that when using the MySQL Client Library, each row is stored in memory twice, whereas with the MySQL Native Driver each row is only stored once in memory.

Note: Reporting memory usage

Because MySQL Native Driver uses the PHP memory management system, its memory usage can be tracked with memory_get_usage(). This is not possible with libmysqlclient because it uses the C function malloc() instead.

Special features

MySQL Native Driver also provides some special features not available when the MySQL database extensions use MySQL Client Library. These special features are listed below:

  • Improved persistent connections

  • The special function mysqli_fetch_all()

  • Performance statistics calls:
mysqli_get_cache_stats(),
mysqli_get_client_stats(),
mysqli_get_connection_stats()

The performance statistics facility can prove to be very useful in identifying performance bottlenecks.

MySQL Native Driver also allows for persistent connections when used with the mysqli extension.

SSL Support

MySQL Native Driver has supported SSL since PHP version 5.3.3

Compressed Protocol Support

As of PHP 5.3.2 MySQL Native Driver supports the compressed client server protocol. MySQL Native Driver did not support this in 5.3.0 and 5.3.1. Extensions such as ext/mysql, ext/mysqli, that are configured to use MySQL Native Driver, can also take advantage of this feature. Note that PDO_MYSQL does NOT support compression when used together with mysqlnd.

Named Pipes Support

Named pipes support for Windows was added in PHP version 5.4.0.

简介
Installation
Mysqlnd


Installation

更新日志

更新日志
版本 | 说明
5.3.0 | The MySQL Native Driver was added, with support for all MySQL extensions (i.e., mysql, mysqli and PDO_MYSQL). Passing in mysqlnd to the appropriate configure switch enables this support.
5.4.0 | The MySQL Native Driver is now the default for all MySQL extensions (i.e., mysql, mysqli and PDO_MYSQL). Passing in mysqlnd to configure is now optional.
5.5.0 | SHA-256 Authentication Plugin support was added

Installation on Unix

The MySQL database extensions must be configured to use the MySQL Client Library. In order to use the MySQL Native Driver, PHP needs to be built specifying that the MySQL database extensions are compiled with MySQL Native Driver support. This is done through configuration options prior to building the PHP source code.

For example, to build the MySQL extension, mysqli and PDO MYSQL using the MySQL Native Driver, the following command would be given:

./configure --with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
[other options]

Installation on Windows

In the official PHP Windows distributions from 5.3 onwards, MySQL Native Driver is enabled by default, so no additional configuration is required to use it. All MySQL database extensions will use MySQL Native Driver in this case.

SHA-256 Authentication Plugin support

The MySQL Native Driver requires the OpenSSL functionality of PHP to be loaded and enabled to connect to MySQL through accounts that use the MySQL SHA-256 Authentication Plugin. For example, PHP could be configured using:

./configure --with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl
[other options]
Overview
运行时配置
Mysqlnd


运行时配置

这些函数的行为受 php.ini 中的设置影响。

MySQL Native Driver Configuration Options
名字 | 默认 | 可修改范围 | 更新日志
mysqlnd.collect_statistics | "1" | PHP_INI_SYSTEM | Available since PHP 5.3.0.
mysqlnd.collect_memory_statistics | "0" | PHP_INI_SYSTEM | Available since PHP 5.3.0.
mysqlnd.debug | "" | PHP_INI_SYSTEM | Available since PHP 5.3.0.
mysqlnd.log_mask | 0 | PHP_INI_ALL | Available since PHP 5.3.0
mysqlnd.mempool_default_size | 16000 | PHP_INI_ALL | Available since PHP 5.3.3
mysqlnd.net_read_timeout | "31536000" | PHP_INI_SYSTEM | Available since PHP 5.3.0.
mysqlnd.net_cmd_buffer_size | 5.3.0 - "2048", 5.3.1 - "4096" | PHP_INI_SYSTEM | Available since PHP 5.3.0.
mysqlnd.net_read_buffer_size | "32768" | PHP_INI_SYSTEM | Available since PHP 5.3.0.
mysqlnd.sha256_server_public_key | "" | PHP_INI_PERDIR | Available since PHP 5.5.0.
mysqlnd.fetch_data_copy | 0 | PHP_INI_ALL | Available since PHP 5.6.0.
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

mysqlnd.collect_statistics boolean

Enables the collection of various client statistics which can be
accessed through mysqli_get_client_stats(),
mysqli_get_connection_stats(),
mysqli_get_cache_stats() and are shown in
mysqlnd section of the output of the
phpinfo() function as well.

This configuration setting enables all MySQL Native Driver statistics except those relating to memory management.

mysqlnd.collect_memory_statistics boolean

Enable the collection of various memory statistics which can be
accessed through mysqli_get_client_stats(),
mysqli_get_connection_stats(),
mysqli_get_cache_stats() and are shown in
mysqlnd section of the output of the
phpinfo() function as well.

This configuration setting enables the memory management statistics within the overall set of MySQL Native Driver statistics.

mysqlnd.debug string

Records communication from all extensions using mysqlnd to the specified log file.

The format of the directive is mysqlnd.debug = "option1[,parameter_option1][:option2[,parameter_option2]]".

The options for the format string are as follows:

  • A[,file] - Appends trace output to specified file. Also ensures that data is written after each write. This is done by closing and reopening the trace file (this is slow). It helps ensure a complete log file should the application crash.

  • a[,file] - Appends trace output to the specified file.

  • d - Enables output from DBUG_<N> macros for the current state. May be followed by a list of keywords which selects output only for the DBUG macros with that keyword. An empty list of keywords implies output for all macros.

  • f[,functions] - Limits debugger actions to the specified list of functions. An empty list of functions implies that all functions are selected.

  • F - Marks each debugger output line with the name of the source file containing the macro causing the output.

  • i - Marks each debugger output line with the PID of the current process.

  • L - Marks each debugger output line with the name of the source file line number of the macro causing the output.

  • n - Marks each debugger output line with the current function nesting depth

  • o[,file] - Similar to a[,file] but overwrites old file, and does not append.

  • O[,file] - Similar to A[,file] but overwrites old file, and does not append.

  • t[,N] - Enables function control flow tracing. The maximum nesting depth is specified by N, and defaults to 200.

  • x - This option activates profiling.

  • m - Trace memory allocation and deallocation related calls.

Example:

d:t:x:O,/tmp/mysqlnd.trace

Note:

This feature is only available with a debug build of PHP. Works on Microsoft Windows if using a debug build of PHP and PHP was built using Microsoft Visual C version 9 and above.

mysqlnd.log_mask integer

Defines which queries will be logged. The default 0, which disables logging. Define using an integer, and not with PHP constants. For example, a value of 48 (16 + 32) will log slow queries which either use 'no good index' (SERVER_QUERY_NO_GOOD_INDEX_USED = 16) or no index at all (SERVER_QUERY_NO_INDEX_USED = 32). A value of 2043 (1 + 2 + 8 + ... + 1024) will log all slow query types.

The types are as follows: SERVER_STATUS_IN_TRANS=1, SERVER_STATUS_AUTOCOMMIT=2,
SERVER_MORE_RESULTS_EXISTS=8, SERVER_QUERY_NO_GOOD_INDEX_USED=16, SERVER_QUERY_NO_INDEX_USED=32,
SERVER_STATUS_CURSOR_EXISTS=64, SERVER_STATUS_LAST_ROW_SENT=128, SERVER_STATUS_DB_DROPPED=256,
SERVER_STATUS_NO_BACKSLASH_ESCAPES=512, and SERVER_QUERY_WAS_SLOW=1024.

mysqlnd.mempool_default_size integer

Default size of the mysqlnd memory pool, which is used by result sets.

mysqlnd.net_read_timeout integer

mysqlnd and the MySQL Client Library, libmysqlclient use different networking APIs. mysqlnd uses PHP streams, whereas libmysqlclient uses its own wrapper around the operating level network calls. PHP, by default, sets a read timeout of 60s for streams. This is set via php.ini, default_socket_timeout. This default applies to all streams that set no other timeout value. mysqlnd does not set any other value and therefore connections of long running queries can be disconnected after default_socket_timeout seconds resulting in an error message "2006 - MySQL Server has gone away". The MySQL Client Library sets a default timeout of 365 * 24 * 3600 seconds (1 year) and waits for other timeouts to occur, such as TCP/IP timeouts. mysqlnd now uses the same very long timeout. The value is configurable through a new php.ini setting: mysqlnd.net_read_timeout. mysqlnd.net_read_timeout gets used by any extension (ext/mysql, ext/mysqli, PDO_MySQL) that uses mysqlnd. mysqlnd tells PHP Streams to use mysqlnd.net_read_timeout. Please note that there may be subtle differences between MYSQL_OPT_READ_TIMEOUT from the MySQL Client Library and PHP Streams, for example MYSQL_OPT_READ_TIMEOUT is documented to work only for TCP/IP connections and, prior to MySQL 5.1.2, only for Windows. PHP streams may not have this limitation. Please check the streams documentation, if in doubt.

mysqlnd.net_cmd_buffer_size long

mysqlnd allocates an internal command/network buffer of mysqlnd.net_cmd_buffer_size (in php.ini) bytes for every connection. If a MySQL Client Server protocol command, for example, COM_QUERY ("normal" query), does not fit into the buffer, mysqlnd will grow the buffer to the size required for sending the command. Whenever the buffer gets extended for one connection, command_buffer_too_small will be incremented by one.

If mysqlnd has to grow the buffer beyond its initial size of mysqlnd.net_cmd_buffer_size bytes for almost every connection, you should consider increasing the default size to avoid re-allocations.

The default buffer size is 2048 bytes in PHP 5.3.0. In later versions the default is 4096 bytes.

It is recommended that the buffer size be set to no less than 4096 bytes because mysqlnd also uses it when reading certain communication packet from MySQL. In PHP 5.3.0, mysqlnd will not grow the buffer if MySQL sends a packet that is larger than the current size of the buffer. As a consequence, mysqlnd is unable to decode the packet and the client application will get an error. There are only two situations when the packet can be larger than the 2048 bytes default of mysqlnd.net_cmd_buffer_size in PHP 5.3.0: the packet transports a very long error message, or the packet holds column meta data from COM_LIST_FIELD (mysql_list_fields() and the meta data come from a string column with a very long default value (>1900 bytes).

As of PHP 5.3.2 mysqlnd does not allow setting buffers smaller than 4096 bytes.

The value can also be set using mysqli_options(link, MYSQLI_OPT_NET_CMD_BUFFER_SIZE, size).

mysqlnd.net_read_buffer_size long

Maximum read chunk size in bytes when reading the body of a MySQL command packet. The MySQL client server protocol encapsulates all its commands in packets. The packets consist of a small header and a body with the actual payload. The size of the body is encoded in the header. mysqlnd reads the body in chunks of MIN(header.size, mysqlnd.net_read_buffer_size) bytes. If a packet body is larger than mysqlnd.net_read_buffer_size bytes, mysqlnd has to call read() multiple times.

The value can also be set using mysqli_options(link, MYSQLI_OPT_NET_READ_BUFFER_SIZE, size).

mysqlnd.sha256_server_public_key string

SHA-256 Authentication Plugin related. File with the MySQL server public RSA key.

Clients can either omit setting a public RSA key, specify the key through this PHP configuration setting or set the key at runtime using mysqli_options(). If not public RSA key file is given by the client, then the key will be exchanged as part of the standard SHA-256 Authentication Plugin authentication procedure.

mysqlnd.fetch_data_copy long

Enforce copying result sets from the internal result set buffers into PHP variables instead of using the default reference and copy-on-write logic. Please, see the memory management implementation notes for further details.

Copying result sets instead of having PHP variables reference them allows releasing the memory occupied for the PHP variables earlier. Depending on the user API code, the actual database quries and the size of their result sets this may reduce the memory footprint of mysqlnd.

Do not set if using PDO_MySQL. PDO_MySQL has not yet been updated to support the new fetch mode.

Installation
Incompatibilities
Mysqlnd


Incompatibilities

MySQL Native Driver is in most cases compatible with MySQL Client Library (libmysql). This section documents incompatibilities between these libraries.

  • Values of bit data type are returned as binary strings (e.g. "\0" or "\x1F") with libmysql and as decimal strings (e.g. "0" or "31") with mysqlnd. If you want the code to be compatible with both libraries then always return bit fields as numbers from MySQL with a query like this: SELECT bit + 0 FROM table.

运行时配置
Persistent Connections
Mysqlnd


Persistent Connections

Using Persistent Connections

If mysqli is used with mysqlnd, when a persistent connection is created it generates a COM_CHANGE_USER (mysql_change_user()) call on the server. This ensures that re-authentication of the connection takes place.

As there is some overhead associated with the COM_CHANGE_USER call, it is possible to switch this off at compile time. Reusing a persistent connection will then generate a COM_PING (mysql_ping) call to simply test the connection is reusable.

Generation of COM_CHANGE_USER can be switched off with the compile flag MYSQLI_NO_CHANGE_USER_ON_PCONNECT. For example:

shell# CFLAGS="-DMYSQLI_NO_CHANGE_USER_ON_PCONNECT" ./configure --with-mysql=/usr/local/mysql/ --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql/bin/mysql_config --enable-debug && make clean && make -j6

Or alternatively:

shell# export CFLAGS="-DMYSQLI_NO_CHANGE_USER_ON_PCONNECT"
shell# configure --whatever-option
shell# make clean
shell# make

Note that only mysqli on mysqlnd uses COM_CHANGE_USER. Other extension-driver combinations use COM_PING on initial use of a persistent connection.

Incompatibilities
Statistics
Mysqlnd


Statistics

Using Statistical Data

MySQL Native Driver contains support for gathering statistics on the communication between the client and the server. The statistics gathered are of two main types:

  • Client statistics

  • Connection statistics

If you are using the mysqli extension, these statistics can be obtained through two API calls:

  • mysqli_get_client_stats()

  • mysqli_get_connection_stats()

Note:

Statistics are aggregated among all extensions that use MySQL Native Driver. For example, when compiling both ext/mysql and ext/mysqli against MySQL Native Driver, both function calls of ext/mysql and ext/mysqli will change the statistics. There is no way to find out how much a certain API call of any extension that has been compiled against MySQL Native Driver has impacted a certain statistic. You can configure the PDO MySQL Driver, ext/mysql and ext/mysqli to optionally use the MySQL Native Driver. When doing so, all three extensions will change the statistics.

Accessing Client Statistics

To access client statistics, you need to call mysqli_get_client_stats(). The function call does not require any parameters.

The function returns an associative array that contains the name of the statistic as the key and the statistical data as the value.

Client statistics can also be accessed by calling the phpinfo() function.

Accessing Connection Statistics

To access connection statistics call mysqli_get_connection_stats(). This takes the database connection handle as the parameter.

The function returns an associative array that contains the name of the statistic as the key and the statistical data as the value.

Buffered and Unbuffered Result Sets

Result sets can be buffered or unbuffered. Using default settings, ext/mysql and ext/mysqli work with buffered result sets for normal (non prepared statement) queries. Buffered result sets are cached on the client. After the query execution all results are fetched from the MySQL Server and stored in a cache on the client. The big advantage of buffered result sets is that they allow the server to free all resources allocated to a result set, once the results have been fetched by the client.

Unbuffered result sets on the other hand are kept much longer on the server. If you want to reduce memory consumption on the client, but increase load on the server, use unbuffered results. If you experience a high server load and the figures for unbuffered result sets are high, you should consider moving the load to the clients. Clients typically scale better than servers. "Load" does not only refer to memory buffers - the server also needs to keep other resources open, for example file handles and threads, before a result set can be freed.

Prepared Statements use unbuffered result sets by default. However, you can use mysqli_stmt_store_result() to enable buffered result sets.

Statistics returned by MySQL Native Driver

The following tables show a list of statistics returned by the mysqli_get_client_stats() and mysqli_get_connection_stats() functions.

Returned mysqlnd statistics: Network
Statistic | Scope | Description | Notes
bytes_sent | Connection | Number of bytes sent from PHP to the MySQL server | Can be used to check the efficiency of the compression protocol
bytes_received | Connection | Number of bytes received from MySQL server | Can be used to check the efficiency of the compression protocol
packets_sent | Connection | Number of MySQL Client Server protocol packets sent | Used for debugging Client Server protocol implementation
packets_received | Connection | Number of MySQL Client Server protocol packets received | Used for debugging Client Server protocol implementation
protocol_overhead_in | Connection | MySQL Client Server protocol overhead in bytes for incoming traffic. Currently only the Packet Header (4 bytes) is considered as overhead. protocol_overhead_in = packets_received * 4 | Used for debugging Client Server protocol implementation
protocol_overhead_out | Connection | MySQL Client Server protocol overhead in bytes for outgoing traffic. Currently only the Packet Header (4 bytes) is considered as overhead. protocol_overhead_out = packets_sent * 4 | Used for debugging Client Server protocol implementation
bytes_received_ok_packet | Connection | Total size of bytes of MySQL Client Server protocol OK packets received. OK packets can contain a status message. The length of the status message can vary and thus the size of an OK packet is not fixed. | Used for debugging CS protocol implementation. Note that the total size in bytes includes the size of the header packet (4 bytes, see protocol overhead).
packets_received_ok | Connection | Number of MySQL Client Server protocol OK packets received. | Used for debugging CS protocol implementation. Note that the total size in bytes includes the size of the header packet (4 bytes, see protocol overhead).
bytes_received_eof_packet | Connection | Total size in bytes of MySQL Client Server protocol EOF packets received. EOF can vary in size depending on the server version. Also, EOF can transport an error message. | Used for debugging CS protocol implementation. Note that the total size in bytes includes the size of the header packet (4 bytes, see protocol overhead).
packets_received_eof | Connection | Number of MySQL Client Server protocol EOF packets. Like with other packet statistics the number of packets will be increased even if PHP does not receive the expected packet but, for example, an error message. | Used for debugging CS protocol implementation. Note that the total size in bytes includes the size of the header packet (4 bytes, see protocol overhead).
bytes_received_rset_header_packet | Connection | Total size in bytes of MySQL Client Server protocol result set header packets. The size of the packets varies depending on the payload (LOAD LOCAL INFILE, INSERT, UPDATE, SELECT, error message). | Used for debugging CS protocol implementation. Note that the total size in bytes includes the size of the header packet (4 bytes, see protocol overhead).
packets_received_rset_header | Connection | Number of MySQL Client Server protocol result set header packets. | Used for debugging CS protocol implementation. Note that the total size in bytes includes the size of the header packet (4 bytes, see protocol overhead).
bytes_received_rset_field_meta_packet | Connection | Total size in bytes of MySQL Client Server protocol result set meta data (field information) packets. Of course the size varies with the fields in the result set. The packet may also transport an error or an EOF packet in case of COM_LIST_FIELDS. | Only useful for debugging CS protocol implementation. Note that the total size in bytes includes the size of the header packet (4 bytes, see protocol overhead).
packets_received_rset_field_meta | Connection | Number of MySQL Client Server protocol result set meta data (field information) packets. | Only useful for debugging CS protocol implementation. Note that the total size in bytes includes the size of the header packet (4 bytes, see protocol overhead).
bytes_received_rset_row_packet | Connection | Total size in bytes of MySQL Client Server protocol result set row data packets. The packet may also transport an error or an EOF packet. You can reverse engineer the number of error and EOF packets by subtracting rows_fetched_from_server_normal and rows_fetched_from_server_ps from bytes_received_rset_row_packet. | Only useful for debugging CS protocol implementation. Note that the total size in bytes includes the size of the header packet (4 bytes, see protocol overhead).
packets_received_rset_row | Connection | Number of MySQL Client Server protocol result set row data packets and their total size in bytes. | Only useful for debugging CS protocol implementation. Note that the total size in bytes includes the size of the header packet (4 bytes, see protocol overhead).
bytes_received_prepare_response_packet | Connection | Total size in bytes of MySQL Client Server protocol OK for Prepared Statement Initialization packets (prepared statement init packets). The packet may also transport an error. The packet size depends on the MySQL version: 9 bytes with MySQL 4.1 and 12 bytes from MySQL 5.0 on. There is no safe way to know how many errors happened. You may be able to guess that an error has occurred if, for example, you always connect to MySQL 5.0 or newer and, bytes_received_prepare_response_packet != packets_received_prepare_response * 12. See also ps_prepared_never_executed, ps_prepared_once_executed. | Only useful for debugging CS protocol implementation. Note that the total size in bytes includes the size of the header packet (4 bytes, see protocol overhead).
packets_received_prepare_response | Connection | Number of MySQL Client Server protocol OK for Prepared Statement Initialization packets (prepared statement init packets). | Only useful for debugging CS protocol implementation. Note that the total size in bytes includes the size of the header packet (4 bytes, see protocol overhead).
bytes_received_change_user_packet | Connection | Total size in bytes of MySQL Client Server protocol COM_CHANGE_USER packets. The packet may also transport an error or EOF. | Only useful for debugging CS protocol implementation. Note that the total size in bytes includes the size of the header packet (4 bytes, see protocol overhead).
packets_received_change_user | Connection | Number of MySQL Client Server protocol COM_CHANGE_USER packets | Only useful for debugging CS protocol implementation. Note that the total size in bytes includes the size of the header packet (4 bytes, see protocol overhead).
packets_sent_command | Connection | Number of MySQL Client Server protocol commands sent from PHP to MySQL. There is no way to know which specific commands and how many of them have been sent. At its best you can use it to check if PHP has sent any commands to MySQL to know if you can consider to disable MySQL support in your PHP binary. There is also no way to reverse engineer the number of errors that may have occurred while sending data to MySQL. The only error that is recorded is command_buffer_too_small (see below). | Only useful for debugging CS protocol implementation.
bytes_received_real_data_normal Connection Number of bytes of payload fetched by the PHP client from mysqlnd using the text protocol. This is the size of the actual data contained in result sets that do not originate from prepared statements and which have been fetched by the PHP client. Note that although a full result set may have been pulled from MySQL by mysqlnd, this statistic only counts actual data pulled from mysqlnd by the PHP client. An example of a code sequence that will increase the value is as follows:
$mysqli = new mysqli();
$res = $mysqli->query("SELECT 'abc'");
$res->fetch_assoc();
$res->close();

Every fetch operation will increase the value.

The statistic will not be increased if the result set is only buffered on the client, but not fetched, such as in the following example:

$mysqli = new mysqli();
$res = $mysqli->query("SELECT 'abc'");
$res->close();

This statistic is available as of PHP version 5.3.4.

bytes_received_real_data_ps | Connection | Number of bytes of the payload fetched by the PHP client from mysqlnd using the prepared statement protocol. | This is the size of the actual data contained in result sets that originate from prepared statements and which has been fetched by the PHP client. The value will not be increased if the result set is not subsequently read by the PHP client. Note that although a full result set may have been pulled from MySQL by mysqlnd, this statistic only counts actual data pulled from mysqlnd by the PHP client. See also bytes_received_real_data_normal. This statistic is available as of PHP version 5.3.4.

Result Set

Returned mysqlnd statistics: Result Set
Statistic | Scope | Description | Notes
result_set_queries | Connection | Number of queries that have generated a result set. Examples of queries that generate a result set: SELECT, SHOW. The statistic will not be incremented if there is an error reading the result set header packet from the line. | You may use it as an indirect measure for the number of queries PHP has sent to MySQL, for example, to identify a client that causes a high database load.
non_result_set_queries | Connection | Number of queries that did not generate a result set. Examples of queries that do not generate a result set: INSERT, UPDATE, LOAD DATA. The statistic will not be incremented if there is an error reading the result set header packet from the line. | You may use it as an indirect measure for the number of queries PHP has sent to MySQL, for example, to identify a client that causes a high database load.
no_index_used | Connection | Number of queries that have generated a result set but did not use an index (see also mysqld start option -log-queries-not-using-indexes). If you want these queries to be reported you can use mysqli_report(MYSQLI_REPORT_INDEX) to make ext/mysqli throw an exception. If you prefer a warning instead of an exception use mysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT).
bad_index_used | Connection | Number of queries that have generated a result set and did not use a good index (see also mysqld start option -log-slow-queries). | If you want these queries to be reported you can use mysqli_report(MYSQLI_REPORT_INDEX) to make ext/mysqli throw an exception. If you prefer a warning instead of an exception use mysqli_report(MYSQLI_REPORT_INDEX ^ MYSQLI_REPORT_STRICT)
slow_queries | Connection | SQL statements that took more than long_query_time seconds to execute and required at least min_examined_row_limit rows to be examined. | Not reported through mysqli_report()
buffered_sets | Connection | Number of buffered result sets returned by "normal" queries. "Normal" means "not prepared statement" in the following notes. | Examples of API calls that will buffer result sets on the client: mysql_query(), mysqli_query(), mysqli_store_result(), mysqli_stmt_get_result(). Buffering result sets on the client ensures that server resources are freed as soon as possible and it makes result set scrolling easier. The downside is the additional memory consumption on the client for buffering data. Note that mysqlnd (unlike the MySQL Client Library) respects the PHP memory limit because it uses PHP internal memory management functions to allocate memory. This is also the reason why memory_get_usage() reports a higher memory consumption when using mysqlnd instead of the MySQL Client Library. memory_get_usage() does not measure the memory consumption of the MySQL Client Library at all because the MySQL Client Library does not use PHP internal memory management functions monitored by the function!
unbuffered_sets | Connection | Number of unbuffered result sets returned by normal (non prepared statement) queries. | Examples of API calls that will not buffer result sets on the client: mysqli_use_result()
ps_buffered_sets | Connection | Number of buffered result sets returned by prepared statements. By default prepared statements are unbuffered. | Examples of API calls that will buffer result sets on the client: mysqli_stmt_store_result
ps_unbuffered_sets | Connection | Number of unbuffered result sets returned by prepared statements. | By default prepared statements are unbuffered.
flushed_normal_sets Connection Number of result sets from normal (non prepared statement) queries with unread data which have been flushed silently for you. Flushing happens only with unbuffered result sets. Unbuffered result sets must be fetched completely before a new query can be run on the connection otherwise MySQL will throw an error. If the application does not fetch all rows from an unbuffered result set, mysqlnd does implicitly fetch the result set to clear the line. See also rows_skipped_normal, rows_skipped_ps. Some possible causes for an implicit flush:

  • Faulty client application

  • Client stopped reading after it found what it was looking for but has made MySQL calculate more records than needed

  • Client application has stopped unexpectedly

flushed_ps_sets Connection Number of result sets from prepared statements with unread data which have been flushed silently for you. Flushing happens only with unbuffered result sets. Unbuffered result sets must be fetched completely before a new query can be run on the connection otherwise MySQL will throw an error. If the application does not fetch all rows from an unbuffered result set, mysqlnd does implicitly fetch the result set to clear the line. See also rows_skipped_normal, rows_skipped_ps. Some possible causes for an implicit flush:

  • Faulty client application

  • Client stopped reading after it found what it was looking for but has made MySQL calculate more records than needed

  • Client application has stopped unexpectedly

ps_prepared_never_executed | Connection | Number of statements prepared but never executed. | Prepared statements occupy server resources. You should not prepare a statement if you do not plan to execute it.
ps_prepared_once_executed | Connection | Number of prepared statements executed only one. | One of the ideas behind prepared statements is that the same query gets executed over and over again (with different parameters) and some parsing and other preparation work can be saved, if statement execution is split up in separate prepare and execute stages. The idea is to prepare once and "cache" results, for example, the parse tree to be reused during multiple statement executions. If you execute a prepared statement only once the two stage processing can be inefficient compared to "normal" queries because all the caching means extra work and it takes (limited) server resources to hold the cached information. Consequently, prepared statements that are executed only once may cause performance hurts.
rows_fetched_from_server_normal, rows_fetched_from_server_ps | Connection | Total number of result set rows successfully fetched from MySQL regardless if the client application has consumed them or not. Some of the rows may not have been fetched by the client application but have been flushed implicitly. | See also packets_received_rset_row
rows_buffered_from_client_normal, rows_buffered_from_client_ps | Connection | Total number of successfully buffered rows originating from a "normal" query or a prepared statement. This is the number of rows that have been fetched from MySQL and buffered on client. Note that there are two distinct statistics on rows that have been buffered (MySQL to mysqlnd internal buffer) and buffered rows that have been fetched by the client application (mysqlnd internal buffer to client application). If the number of buffered rows is higher than the number of fetched buffered rows it can mean that the client application runs queries that cause larger result sets than needed resulting in rows not read by the client. | Examples of queries that will buffer results: mysqli_query(), mysqli_store_result()
rows_fetched_from_client_normal_buffered, rows_fetched_from_client_ps_buffered | Connection | Total number of rows fetched by the client from a buffered result set created by a normal query or a prepared statement.
rows_fetched_from_client_normal_unbuffered, rows_fetched_from_client_ps_unbuffered | Connection | Total number of rows fetched by the client from a unbuffered result set created by a "normal" query or a prepared statement.
rows_fetched_from_client_ps_cursor | Connection | Total number of rows fetch by the client from a cursor created by a prepared statement.
rows_skipped_normal, rows_skipped_ps | Connection | Reserved for future use (currently not supported)
copy_on_write_saved, copy_on_write_performed | Process | With mysqlnd, variables returned by the extensions point into mysqlnd internal network result buffers. If you do not change the variables, fetched data will be kept only once in memory. If you change the variables, mysqlnd has to perform a copy-on-write to protect the internal network result buffers from being changed. With the MySQL Client Library you always hold fetched data twice in memory. Once in the internal MySQL Client Library buffers and once in the variables returned by the extensions. In theory mysqlnd can save up to 40% memory. However, note that the memory saving cannot be measured using memory_get_usage().
explicit_free_result, implicit_free_result | Connection, Process (only during prepared statement cleanup) | Total number of freed result sets. | The free is always considered explicit but for result sets created by an init command, for example, mysqli_options(MYSQLI_INIT_COMMAND , ...)
proto_text_fetched_null, proto_text_fetched_bit, proto_text_fetched_tinyint proto_text_fetched_short, proto_text_fetched_int24, proto_text_fetched_int proto_text_fetched_bigint, proto_text_fetched_decimal, proto_text_fetched_float proto_text_fetched_double, proto_text_fetched_date, proto_text_fetched_year proto_text_fetched_time, proto_text_fetched_datetime, proto_text_fetched_timestamp proto_text_fetched_string, proto_text_fetched_blob, proto_text_fetched_enum proto_text_fetched_set, proto_text_fetched_geometry, proto_text_fetched_other Connection Total number of columns of a certain type fetched from a normal query (MySQL text protocol). Mapping from C API / MySQL meta data type to statistics name:

  • MYSQL_TYPE_NULL - proto_text_fetched_null

  • MYSQL_TYPE_BIT - proto_text_fetched_bit

  • MYSQL_TYPE_TINY - proto_text_fetched_tinyint

  • MYSQL_TYPE_SHORT - proto_text_fetched_short

  • MYSQL_TYPE_INT24 - proto_text_fetched_int24

  • MYSQL_TYPE_LONG - proto_text_fetched_int

  • MYSQL_TYPE_LONGLONG - proto_text_fetched_bigint

  • MYSQL_TYPE_DECIMAL, MYSQL_TYPE_NEWDECIMAL - proto_text_fetched_decimal

  • MYSQL_TYPE_FLOAT - proto_text_fetched_float

  • MYSQL_TYPE_DOUBLE - proto_text_fetched_double

  • MYSQL_TYPE_DATE, MYSQL_TYPE_NEWDATE - proto_text_fetched_date

  • MYSQL_TYPE_YEAR - proto_text_fetched_year

  • MYSQL_TYPE_TIME - proto_text_fetched_time

  • MYSQL_TYPE_DATETIME - proto_text_fetched_datetime

  • MYSQL_TYPE_TIMESTAMP - proto_text_fetched_timestamp

  • MYSQL_TYPE_STRING, MYSQL_TYPE_VARSTRING, MYSQL_TYPE_VARCHAR - proto_text_fetched_string

  • MYSQL_TYPE_TINY_BLOB, MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB, MYSQL_TYPE_BLOB - proto_text_fetched_blob

  • MYSQL_TYPE_ENUM - proto_text_fetched_enum

  • MYSQL_TYPE_SET - proto_text_fetched_set

  • MYSQL_TYPE_GEOMETRY - proto_text_fetched_geometry

  • Any MYSQL_TYPE_* not listed before (there should be none) - proto_text_fetched_other

Note that the MYSQL_*-type constants may not be associated with the very same SQL column types in every version of MySQL.

proto_binary_fetched_null, proto_binary_fetched_bit, proto_binary_fetched_tinyint proto_binary_fetched_short, proto_binary_fetched_int24, proto_binary_fetched_int, proto_binary_fetched_bigint, proto_binary_fetched_decimal, proto_binary_fetched_float, proto_binary_fetched_double, proto_binary_fetched_date, proto_binary_fetched_year, proto_binary_fetched_time, proto_binary_fetched_datetime, proto_binary_fetched_timestamp, proto_binary_fetched_string, proto_binary_fetched_blob, proto_binary_fetched_enum, proto_binary_fetched_set, proto_binary_fetched_geometry, proto_binary_fetched_other | Connection | Total number of columns of a certain type fetched from a prepared statement (MySQL binary protocol). | For type mapping see proto_text_* described in the preceding text.
Returned mysqlnd statistics: Connection
Statistic | Scope | Description | Notes
connect_success, connect_failure | Connection | Total number of successful / failed connection attempt. | Reused connections and all other kinds of connections are included.
reconnect | Process | Total number of (real_)connect attempts made on an already opened connection handle. | The code sequence $link = new mysqli(...); $link->real_connect(...) will cause a reconnect. But $link = new mysqli(...); $link->connect(...) will not because $link->connect(...) will explicitly close the existing connection before a new connection is established.
pconnect_success | Connection | Total number of successful persistent connection attempts. | Note that connect_success holds the sum of successful persistent and non-persistent connection attempts. The number of successful non-persistent connection attempts is connect_success - pconnect_success.
active_connections | Connection | Total number of active persistent and non-persistent connections.
active_persistent_connections | Connection | Total number of active persistent connections. | The total number of active non-persistent connections is active_connections - active_persistent_connections.
explicit_close Connection Total number of explicitly closed connections (ext/mysqli only). Examples of code snippets that cause an explicit close :
$link = new mysqli(...); $link->close(...)
$link = new mysqli(...); $link->connect(...)
implicit_close Connection Total number of implicitly closed connections (ext/mysqli only). Examples of code snippets that cause an implicit close :

  • $link = new mysqli(...); $link->real_connect(...)

  • unset($link)

  • Persistent connection: pooled connection has been created with real_connect and there may be unknown options set - close implicitly to avoid returning a connection with unknown options

  • Persistent connection: ping/change_user fails and ext/mysqli closes the connection

  • end of script execution: close connections that have not been closed by the user

disconnect_close | Connection | Connection failures indicated by the C API call mysql_real_connect() during an attempt to establish a connection. | It is called disconnect_close because the connection handle passed to the C API call will be closed.
in_middle_of_command_close | Process | A connection has been closed in the middle of a command execution (outstanding result sets not fetched, after sending a query and before retrieving an answer, while fetching data, while transferring data with LOAD DATA). | Unless you use asynchronous queries this should only happen if your script stops unexpectedly and PHP shuts down the connections for you.
init_command_executed_count | Connection | Total number of init command executions, for example, mysqli_options(MYSQLI_INIT_COMMAND , ...). | The number of successful executions is init_command_executed_count - init_command_failed_count.
init_command_failed_count | Connection | Total number of failed init commands.
Returned mysqlnd statistics: COM_* Command
Statistic Scope Description Notes
com_quit, com_init_db, com_query, com_field_list, com_create_db, com_drop_db, com_refresh, com_shutdown, com_statistics, com_process_info, com_connect, com_process_kill, com_debug, com_ping, com_time, com_delayed_insert, com_change_user, com_binlog_dump, com_table_dump, com_connect_out, com_register_slave, com_stmt_prepare, com_stmt_execute, com_stmt_send_long_data, com_stmt_close, com_stmt_reset, com_stmt_set_option, com_stmt_fetch, com_daemon Connection Total number of attempts to send a certain COM_* command from PHP to MySQL.

The statistics are incremented after checking the line and immediately before sending the corresponding MySQL client server protocol packet. If mysqlnd fails to send the packet over the wire the statistics will not be decremented. In case of a failure mysqlnd emits a PHP warning "Error while sending %s packet. PID=%d."

Usage examples:

  • Check if PHP sends certain commands to MySQL, for example, check if a client sends COM_PROCESS_KILL

  • Calculate the average number of prepared statement executions by comparing COM_EXECUTE with COM_PREPARE

  • Check if PHP has run any non-prepared SQL statements by checking if COM_QUERY is zero

  • Identify PHP scripts that run an excessive number of SQL statements by checking COM_QUERY and COM_EXECUTE

Miscellaneous

Returned mysqlnd statistics: Miscellaneous
Statistic | Scope | Description | Notes
explicit_stmt_close, implicit_stmt_close | Process | Total number of close prepared statements. | A close is always considered explicit but for a failed prepare.
mem_emalloc_count, mem_emalloc_ammount, mem_ecalloc_count, mem_ecalloc_ammount, mem_erealloc_count, mem_erealloc_ammount, mem_efree_count, mem_malloc_count, mem_malloc_ammount, mem_calloc_count, mem_calloc_ammount, mem_realloc_count, mem_realloc_ammount, mem_free_count | Process | Memory management calls. | Development only.
command_buffer_too_small Connection Number of network command buffer extensions while sending commands from PHP to MySQL.

mysqlnd allocates an internal command/network buffer of mysqlnd.net_cmd_buffer_size (php.ini) bytes for every connection. If a MySQL Client Server protocol command, for example, COM_QUERY (normal query), does not fit into the buffer, mysqlnd will grow the buffer to what is needed for sending the command. Whenever the buffer gets extended for one connection command_buffer_too_small will be incremented by one.

If mysqlnd has to grow the buffer beyond its initial size of mysqlnd.net_cmd_buffer_size (php.ini) bytes for almost every connection, you should consider to increase the default size to avoid re-allocations.

The default buffer size is 2048 bytes in PHP 5.3.0. In future versions the default will be 4kB or larger. The default can changed either through the php.ini setting mysqlnd.net_cmd_buffer_size or using mysqli_options(MYSQLI_OPT_NET_CMD_BUFFER_SIZE, int size).

It is recommended to set the buffer size to no less than 4096 bytes because mysqlnd also uses it when reading certain communication packet from MySQL. In PHP 5.3.0, mysqlnd will not grow the buffer if MySQL sends a packet that is larger than the current size of the buffer. As a consequence mysqlnd is unable to decode the packet and the client application will get an error. There are only two situations when the packet can be larger than the 2048 bytes default of mysqlnd.net_cmd_buffer_size in PHP 5.3.0: the packet transports a very long error message or the packet holds column meta data from COM_LIST_FIELD (mysql_list_fields()) and the meta data comes from a string column with a very long default value (>1900 bytes). No bug report on this exists - it should happen rarely.

As of PHP 5.3.2 mysqlnd does not allow setting buffers smaller than 4096 bytes.

connection_reused
Persistent Connections
Notes
Mysqlnd


Notes

This section provides a collection of miscellaneous notes on MySQL Native Driver usage.

  • Using mysqlnd means using PHP streams for underlying connectivity. For mysqlnd, the PHP streams documentation (Streams) should be consulted on such details as timeout settings, not the documentation for the MySQL Client Library.

Statistics
Memory management
Mysqlnd


Memory management

Introduction

The MySQL Native Driver manages memory different than the MySQL Client Library. The libraries differ in the way memory is allocated and released, how memory is allocated in chunks while reading results from MySQL, which debug and development options exist, and how results read from MySQL are linked to PHP user variables.

The following notes are intended as an introduction and summary to users interested at understanding the MySQL Native Driver at the C code level.

Memory management functions used

All memory allocation and deallocation is done using the PHP memory management functions. Therefore, the memory consumption of mysqlnd can be tracked using PHP API calls, such as memory_get_usage(). Because memory is allocated and released using the PHP memory management, the changes may not immediately become visible at the operating system level. The PHP memory management acts as a proxy which may delay releasing memory towards the system. Due to this, comparing the memory usage of the MySQL Native Driver and the MySQL Client Library is difficult. The MySQL Client Library is using the operating system memory management calls directly, hence the effects can be observed immediately at the operating system level.

Any memory limit enforced by PHP also affects the MySQL Native Driver. This may cause out of memory errors when fetching large result sets that exceed the size of the remaining memory made available by PHP. Because the MySQL Client Library is not using PHP memory management functions, it does not comply to any PHP memory limit set. If using the MySQL Client Library, depending on the deployment model, the memory footprint of the PHP process may grow beyond the PHP memory limit. But also PHP scripts may be able to process larger result sets as parts of the memory allocated to hold the result sets are beyond the control of the PHP engine.

PHP memory management functions are invoked by the MySQL Native Driver through a lightweight wrapper. Among others, the wrapper makes debugging easier.

Handling of result sets

The various MySQL Server and the various client APIs differentiate between buffered and unbuffered result sets. Unbuffered result sets are transferred row-by-row from MySQL to the client as the client iterates over the results. Buffered results are fetched in their entirety by the client library before passing them on to the client.

The MySQL Native Driver is using PHP Streams for the network communication with the MySQL Server. Results sent by MySQL are fetched from the PHP Streams network buffers into the result buffer of mysqlnd. The result buffer is made of zvals. In a second step the results are made available to the PHP script. This final transfer from the result buffer into PHP variables impacts the memory consumption and is mostly noticible when using buffered result sets.

By default the MySQL Native Driver tries to avoid holding buffered results twice in memory. Results are kept only once in the internal result buffers and their zvals. When results are fetched into PHP variables by the PHP script, the variables will reference the internal result buffers. Database query results are not copied and kept in memory only once. Should the user modify the contents of a variable holding the database results a copy-on-write must be performed to avoid changing the referenced internal result buffer. The contents of the buffer must not be modified because the user may decide to read the result set a second time. The copy-on-write mechanism is implemented using an additional reference management list and the use of standard zval reference counters. Copy-on-write must also be done if the user reads a result set into PHP variables and frees a result set before the variables are unset.

Generally speaking, this pattern works well for scripts that read a result set once and do not modify variables holding results. Its major drawback is the memory overhead caused by the additional reference management which comes primarily from the fact that user variables holding results cannot be entirely released until the mysqlnd reference management stops referencing them. The MySQL Native driver removes the reference to the user variables when the result set is freed or a copy-on-write is performed. An observer will see the total memory consumption grow until the result set is released. Use the statistics to check whether a script does release result sets explicitly or the driver is does implicit releases and thus memory is used for a time longer than necessary. Statistics also help to see how many copy-on-write operations happened.

A PHP script reading many small rows of a buffered result set using a code snippet equal or equivalent to while ($row = $res->fetch_assoc()) { ... } may optimize memory consumption by requesting copies instead of references. Albeit requesting copies means keeping results twice in memory, it allows PHP to free the copy contained in $row as the result set is being iterated and prior to releasing the result set itself. On a loaded server optimizing peak memory usage may help improving the overall system performace although for an individual script the copy approach may be slower due to additional allocations and memory copy operations.

The copy mode can be enforced by setting mysqlnd.fetch_data_copy=1.

Monitoring and debugging

There are multiple ways of tracking the memory usage of the MySQL Native Driver. If the goal is to get a quick high level overview or to verify the memory efficiency of PHP scripts, then check the statistics collected by the library. The statistics allow you, for example, to catch SQL statements which generate more results than are processed by a PHP script.

The debug trace log can be configured to record memory management calls. This helps to see when memory is allocated or free'd. However, the size of the requested memory chunks may not be listed.

Some, recent versions of the MySQL Native Driver feature the emulation of random out of memory situations. This feature is meant to be used by the C developers of the library or mysqlnd plugin authors only. Please, search the source code for corresponding PHP configuration settings and further details. The feature is considered private and may be modified at any time without prior notice.

Notes
MySQL Native Driver Plugin API
Mysqlnd


MySQL Native Driver Plugin API

Table of Contents

  • A comparison of mysqlnd plugins with MySQL Proxy
  • Obtaining the mysqlnd plugin API
  • MySQL Native Driver Plugin Architecture
  • The mysqlnd plugin API
  • Getting started building a mysqlnd plugin

The MySQL Native Driver Plugin API is a feature of MySQL Native Driver, or mysqlnd. Mysqlnd plugins operate in the layer between PHP applications and the MySQL server. This is comparable to MySQL Proxy. MySQL Proxy operates on a layer between any MySQL client application, for example, a PHP application and, the MySQL server. Mysqlnd plugins can undertake typical MySQL Proxy tasks such as load balancing, monitoring and performance optimizations. Due to the different architecture and location, mysqlnd plugins do not have some of MySQL Proxy's disadvantages. For example, with plugins, there is no single point of failure, no dedicated proxy server to deploy, and no new programming language to learn (Lua).

A mysqlnd plugin can be thought of as an extension to mysqlnd. Plugins can intercept the majority of mysqlnd functions. The mysqlnd functions are called by the PHP MySQL extensions such as ext/mysql, ext/mysqli, and PDO_MYSQL. As a result, it is possible for a mysqlnd plugin to intercept all calls made to these extensions from the client application.

Internal mysqlnd function calls can also be intercepted, or replaced. There are no restrictions on manipulating mysqlnd internal function tables. It is possible to set things up so that when certain mysqlnd functions are called by the extensions that use mysqlnd, the call is directed to the appropriate function in the mysqlnd plugin. The ability to manipulate mysqlnd internal function tables in this way allows maximum flexibility for plugins.

Mysqlnd plugins are in fact PHP Extensions, written in C, that use the mysqlnd plugin API (which is built into MySQL Native Driver, mysqlnd). Plugins can be made 100% transparent to PHP applications. No application changes are needed because plugins operate on a different layer. The mysqlnd plugin can be thought of as operating in a layer below mysqlnd.

The following list represents some possible applications of mysqlnd plugins.

  • Load Balancing

    • Read/Write Splitting. An example of this is the PECL/mysqlnd_ms (Master Slave) extension. This extension splits read/write queries for a replication setup.

    • Failover

    • Round-Robin, least loaded

  • Monitoring

    • Query Logging

    • Query Analysis

    • Query Auditing. An example of this is the PECL/mysqlnd_sip (SQL Injection Protection) extension. This extension inspects queries and executes only those that are allowed according to a ruleset.

  • Performance

    • Caching. An example of this is the PECL/mysqlnd_qc (Query Cache) extension.

    • Throttling

    • Sharding. An example of this is the PECL/mysqlnd_mc (Multi Connect) extension. This extension will attempt to split a SELECT statement into n-parts, using SELECT ... LIMIT part_1, SELECT LIMIT part_n. It sends the queries to distinct MySQL servers and merges the result at the client.

MySQL Native Driver Plugins Available

There are a number of mysqlnd plugins already available. These include:

  • PECL/mysqlnd_mc - Multi Connect plugin.

  • PECL/mysqlnd_ms - Master Slave plugin.

  • PECL/mysqlnd_qc - Query Cache plugin.

  • PECL/mysqlnd_pscache - Prepared Statement Handle Cache plugin.

  • PECL/mysqlnd_sip - SQL Injection Protection plugin.

  • PECL/mysqlnd_uh - User Handler plugin.

Memory management
A comparison of mysqlnd plugins with MySQL Proxy
Mysqlnd


A comparison of mysqlnd plugins with MySQL Proxy

Mysqlnd plugins and MySQL Proxy are different technologies using different approaches. Both are valid tools for solving a variety of common tasks such as load balancing, monitoring, and performance enhancements. An important difference is that MySQL Proxy works with all MySQL clients, whereas mysqlnd plugins are specific to PHP applications.

As a PHP Extension, a mysqlnd plugin gets installed on the PHP application server, along with the rest of PHP. MySQL Proxy can either be run on the PHP application server or can be installed on a dedicated machine to handle multiple PHP application servers.

Deploying MySQL Proxy on the application server has two advantages:

  1. No single point of failure

  2. Easy to scale out (horizontal scale out, scale by client)

MySQL Proxy (and mysqlnd plugins) can solve problems easily which otherwise would have required changes to existing applications.

However, MySQL Proxy does have some disadvantages:

  • MySQL Proxy is a new component and technology to master and deploy.

  • MySQL Proxy requires knowledge of the Lua scripting language.

MySQL Proxy can be customized with C and Lua programming. Lua is the preferred scripting language of MySQL Proxy. For most PHP experts Lua is a new language to learn. A mysqlnd plugin can be written in C. It is also possible to write plugins in PHP using » PECL/mysqlnd_uh.

MySQL Proxy runs as a daemon - a background process. MySQL Proxy can recall earlier decisions, as all state can be retained. However, a mysqlnd plugin is bound to the request-based lifecycle of PHP. MySQL Proxy can also share one-time computed results among multiple application servers. A mysqlnd plugin would need to store data in a persistent medium to be able to do this. Another daemon would need to be used for this purpose, such as Memcache. This gives MySQL Proxy an advantage in this case.

MySQL Proxy works on top of the wire protocol. With MySQL Proxy you have to parse and reverse engineer the MySQL Client Server Protocol. Actions are limited to those that can be achieved by manipulating the communication protocol. If the wire protocol changes (which happens very rarely) MySQL Proxy scripts would need to be changed as well.

Mysqlnd plugins work on top of the C API, which mirrors the libmysqlclient client and Connector/C APIs. This C API is basically a wrapper around the MySQL Client Server protocol, or wire protocol, as it is sometimes called. You can intercept all C API calls. PHP makes use of the C API, therefore you can hook all PHP calls, without the need to program at the level of the wire protocol.

Mysqlnd implements the wire protocol. Plugins can therefore parse, reverse engineer, manipulate and even replace the communication protocol. However, this is usually not required.

As plugins allow you to create implementations that use two levels (C API and wire protocol), they have greater flexibility than MySQL Proxy. If a mysqlnd plugin is implemented using the C API, any subsequent changes to the wire protocol do not require changes to the plugin itself.

MySQL Native Driver Plugin API
Obtaining the mysqlnd plugin API
MySQL Native Driver Plugin API


Obtaining the mysqlnd plugin API

The mysqlnd plugin API is simply part of the MySQL Native Driver PHP extension, ext/mysqlnd. Development started on the mysqlnd plugin API in December 2009. It is developed as part of the PHP source repository, and as such is available to the public either via Git, or through source snapshot downloads.

The following table shows PHP versions and the corresponding mysqlnd version contained within.

The bundled mysqlnd version per PHP release
PHP Version | MySQL Native Driver version
5.3.0 | 5.0.5
5.3.1 | 5.0.5
5.3.2 | 5.0.7
5.3.3 | 5.0.7
5.3.4 | 5.0.7

Plugin developers can determine the mysqlnd version through accessing MYSQLND_VERSION, which is a string of the format "mysqlnd 5.0.7-dev - 091210 - $Revision: 300535", or through MYSQLND_VERSION_ID, which is an integer such as 50007. Developers can calculate the version number as follows:

MYSQLND_VERSION_ID calculation table
Version (part) | Example
Major*10000 | 5*10000 = 50000
Minor*100 | 0*100 = 0
Patch | 7 = 7
MYSQLND_VERSION_ID | 50007

During development, developers should refer to the mysqlnd version number for compatibility and version tests, as several iterations of mysqlnd could occur during the lifetime of a PHP development branch with a single PHP version number.

A comparison of mysqlnd plugins with MySQL Proxy
MySQL Native Driver Plugin Architecture
MySQL Native Driver Plugin API


MySQL Native Driver Plugin Architecture

This section provides an overview of the mysqlnd plugin architecture.

MySQL Native Driver Overview

Before developing mysqlnd plugins, it is useful to know a little of how mysqlnd itself is organized. Mysqlnd consists of the following modules:

The mysqlnd organization chart, per module
Modules Statistics | mysqlnd_statistics.c
Connection | mysqlnd.c
Resultset | mysqlnd_result.c
Resultset Metadata | mysqlnd_result_meta.c
Statement | mysqlnd_ps.c
Network | mysqlnd_net.c
Wire protocol | mysqlnd_wireprotocol.c

C Object Oriented Paradigm

At the code level, mysqlnd uses a C pattern for implementing object orientation.

In C you use a struct to represent an object. Members of the struct represent object properties. Struct members pointing to functions represent methods.

Unlike with other languages such as C++ or Java, there are no fixed rules on inheritance in the C object oriented paradigm. However, there are some conventions that need to be followed that will be discussed later.

The PHP Life Cycle

When considering the PHP life cycle there are two basic cycles:

  • PHP engine startup and shutdown cycle

  • Request cycle

When the PHP engine starts up it will call the module initialization (MINIT) function of each registered extension. This allows each module to setup variables and allocate resources that will exist for the lifetime of the PHP engine process. When the PHP engine shuts down it will call the module shutdown (MSHUTDOWN) function of each extension.

During the lifetime of the PHP engine it will receive a number of requests. Each request constitutes another life cycle. On each request the PHP engine will call the request initialization function of each extension. The extension can perform any variable setup and resource allocation required for request processing. As the request cycle ends the engine calls the request shutdown (RSHUTDOWN) function of each extension so the extension can perform any cleanup required.

How a plugin works

A mysqlnd plugin works by intercepting calls made to mysqlnd by extensions that use mysqlnd. This is achieved by obtaining the mysqlnd function table, backing it up, and replacing it by a custom function table, which calls the functions of the plugin as required.

The following code shows how the mysqlnd function table is replaced:

/* a place to store original function table */
struct st_mysqlnd_conn_methods org_methods;

void minit_register_hooks(TSRMLS_D) {
  /* active function table */
  struct st_mysqlnd_conn_methods * current_methods
    = mysqlnd_conn_get_methods();

  /* backup original function table */
  memcpy(&org_methods, current_methods,
    sizeof(struct st_mysqlnd_conn_methods);

  /* install new methods */
  current_methods->query = MYSQLND_METHOD(my_conn_class, query);
}

Connection function table manipulations must be done during Module Initialization (MINIT). The function table is a global shared resource. In an multi-threaded environment, with a TSRM build, the manipulation of a global shared resource during the request processing will almost certainly result in conflicts.

Note:

Do not use any fixed-size logic when manipulating the mysqlnd function table: new methods may be added at the end of the function table. The function table may change at any time in the future.

Calling parent methods

If the original function table entries are backed up, it is still possible to call the original function table entries - the parent methods.

In some cases, such as for Connection::stmt_init(), it is vital to call the parent method prior to any other activity in the derived method.

MYSQLND_METHOD(my_conn_class, query)(MYSQLND *conn,
  const char *query, unsigned int query_len TSRMLS_DC) {

  php_printf("my_conn_class::query(query = %s)\n", query);

  query = "SELECT 'query rewritten' FROM DUAL";
  query_len = strlen(query);

  return org_methods.query(conn, query, query_len); /* return with call to parent */
}

Extending properties

A mysqlnd object is represented by a C struct. It is not possible to add a member to a C struct at run time. Users of mysqlnd objects cannot simply add properties to the objects.

Arbitrary data (properties) can be added to a mysqlnd objects using an appropriate function of the mysqlnd_plugin_get_plugin_<object>_data() family. When allocating an object mysqlnd reserves space at the end of the object to hold a void * pointer to arbitrary data. mysqlnd reserves space for one void * pointer per plugin.

The following table shows how to calculate the position of the pointer for a specific plugin:

Pointer calculations for mysqlnd
Memory address | Contents
0 | Beginning of the mysqlnd object C struct
n | End of the mysqlnd object C struct
n + (m x sizeof(void*)) | void* to object data of the m-th plugin

If you plan to subclass any of the mysqlnd object constructors, which is allowed, you must keep this in mind!

The following code shows extending properties:

/* any data we want to associate */
typedef struct my_conn_properties {
  unsigned long query_counter;
} MY_CONN_PROPERTIES;

/* plugin id */
unsigned int my_plugin_id;

void minit_register_hooks(TSRMLS_D) {
  /* obtain unique plugin ID */
  my_plugin_id = mysqlnd_plugin_register();
  /* snip - see Extending Connection: methods */
}

static MY_CONN_PROPERTIES** get_conn_properties(const MYSQLND *conn TSRMLS_DC) {
  MY_CONN_PROPERTIES** props;
  props = (MY_CONN_PROPERTIES**)mysqlnd_plugin_get_plugin_connection_data(
    conn, my_plugin_id);
  if (!props || !(*props)) {
    *props = mnd_pecalloc(1, sizeof(MY_CONN_PROPERTIES), conn->persistent);
    (*props)->query_counter = 0;
  }
  return props;
}

The plugin developer is responsible for the management of plugin data memory.

Use of the mysqlnd memory allocator is recommended for plugin data. These functions are named using the convention: mnd_*loc(). The mysqlnd allocator has some useful features, such as the ability to use a debug allocator in a non-debug build.

When and how to subclass
 | When to subclass? | Each instance has its own private function table? | How to subclass?
Connection (MYSQLND) | MINIT | No | mysqlnd_conn_get_methods()
Resultset (MYSQLND_RES) | MINIT or later | Yes | mysqlnd_result_get_methods() or object method function table manipulation
Resultset Meta (MYSQLND_RES_METADATA) | MINIT | No | mysqlnd_result_metadata_get_methods()
Statement (MYSQLND_STMT) | MINIT | No | mysqlnd_stmt_get_methods()
Network (MYSQLND_NET) | MINIT or later | Yes | mysqlnd_net_get_methods() or object method function table manipulation
Wire protocol (MYSQLND_PROTOCOL) | MINIT or later | Yes | mysqlnd_protocol_get_methods() or object method function table manipulation

You must not manipulate function tables at any time later than MINIT if it is not allowed according to the above table.

Some classes contain a pointer to the method function table. All instances of such a class will share the same function table. To avoid chaos, in particular in threaded environments, such function tables must only be manipulated during MINIT.

Other classes use copies of a globally shared function table. The class function table copy is created together with the object. Each object uses its own function table. This gives you two options: you can manipulate the default function table of an object at MINIT, and you can additionally refine methods of an object without impacting other instances of the same class.

The advantage of the shared function table approach is performance. There is no need to copy a function table for each and every object.

Constructor status
Allocation, construction, reset | Can be modified? | Caller
Connection (MYSQLND) | mysqlnd_init() | No | mysqlnd_connect()
Resultset(MYSQLND_RES)

Allocation:

  • Connection::result_init()

Reset and re-initialized during:

  • Result::use_result()

  • Result::store_result

Yes, but call parent!

  • Connection::list_fields()

  • Statement::get_result()

  • Statement::prepare() (Metadata only)

  • Statement::resultMetaData()

Resultset Meta (MYSQLND_RES_METADATA) | Connection::result_meta_init() | Yes, but call parent! | Result::read_result_metadata()
Statement (MYSQLND_STMT) | Connection::stmt_init() | Yes, but call parent! | Connection::stmt_init()
Network (MYSQLND_NET) | mysqlnd_net_init() | No | Connection::init()
Wire protocol (MYSQLND_PROTOCOL) | mysqlnd_protocol_init() | No | Connection::init()

It is strongly recommended that you do not entirely replace a constructor. The constructors perform memory allocations. The memory allocations are vital for the mysqlnd plugin API and the object logic of mysqlnd. If you do not care about warnings and insist on hooking the constructors, you should at least call the parent constructor before doing anything in your constructor.

Regardless of all warnings, it can be useful to subclass constructors. Constructors are the perfect place for modifying the function tables of objects with non-shared object tables, such as Resultset, Network, Wire Protocol.

Destruction status
 | Derived method must call parent? | Destructor
Connection | yes, after method execution | free_contents(), end_psession()
Resultset | yes, after method execution | free_result()
Resultset Meta | yes, after method execution | free()
Statement | yes, after method execution | dtor(), free_stmt_content()
Network | yes, after method execution | free()
Wire protocol | yes, after method execution | free()

The destructors are the appropriate place to free properties, mysqlnd_plugin_get_plugin_<object>_data().

The listed destructors may not be equivalent to the actual mysqlnd method freeing the object itself. However, they are the best possible place for you to hook in and free your plugin data. As with constructors you may replace the methods entirely but this is not recommended. If multiple methods are listed in the above table you will need to hook all of the listed methods and free your plugin data in whichever method is called first by mysqlnd.

The recommended method for plugins is to simply hook the methods, free your memory and call the parent implementation immediately following this.

Caution

Due to a bug in PHP versions 5.3.0 to 5.3.3, plugins do not associate plugin data with a persistent connection. This is because ext/mysql and ext/mysqli do not trigger all the necessary mysqlnd end_psession() method calls and the plugin may therefore leak memory. This has been fixed in PHP 5.3.4.

Obtaining the mysqlnd plugin API
The mysqlnd plugin API
MySQL Native Driver Plugin API


The mysqlnd plugin API

The following is a list of functions provided in the mysqlnd plugin API:

  • mysqlnd_plugin_register()

  • mysqlnd_plugin_count()

  • mysqlnd_plugin_get_plugin_connection_data()

  • mysqlnd_plugin_get_plugin_result_data()

  • mysqlnd_plugin_get_plugin_stmt_data()

  • mysqlnd_plugin_get_plugin_net_data()

  • mysqlnd_plugin_get_plugin_protocol_data()

  • mysqlnd_conn_get_methods()

  • mysqlnd_result_get_methods()

  • mysqlnd_result_meta_get_methods()

  • mysqlnd_stmt_get_methods()

  • mysqlnd_net_get_methods()

  • mysqlnd_protocol_get_methods()

There is no formal definition of what a plugin is and how a plugin mechanism works.

Components often found in plugins mechanisms are:

  • A plugin manager

  • A plugin API

  • Application services (or modules)

  • Application service APIs (or module APIs)

The mysqlnd plugin concept employs these features, and additionally enjoys an open architecture.

No Restrictions

A plugin has full access to the inner workings of mysqlnd. There are no security limits or restrictions. Everything can be overwritten to implement friendly or hostile algorithms. It is recommended you only deploy plugins from a trusted source.

As discussed previously, plugins can use pointers freely. These pointers are not restricted in any way, and can point into another plugin's data. Simple offset arithmetic can be used to read another plugin's data.

It is recommended that you write cooperative plugins, and that you always call the parent method. The plugins should always cooperate with mysqlnd itself.

Issues: an example of chaining and cooperation
Extension | mysqlnd.query() pointer | call stack if calling parent
ext/mysqlnd | mysqlnd.query() | mysqlnd.query
ext/mysqlnd_cache mysqlnd_cache.query()

  1. mysqlnd_cache.query()

  2. mysqlnd.query

ext/mysqlnd_monitor mysqlnd_monitor.query()

  1. mysqlnd_monitor.query()

  2. mysqlnd_cache.query()

  3. mysqlnd.query

In this scenario, a cache (ext/mysqlnd_cache) and a monitor (ext/mysqlnd_monitor) plugin are loaded. Both subclass Connection::query(). Plugin registration happens at MINIT using the logic shown previously. PHP calls extensions in alphabetical order by default. Plugins are not aware of each other and do not set extension dependencies.

By default the plugins call the parent implementation of the query method in their derived version of the method.

PHP Extension Recap

This is a recap of what happens when using an example plugin, ext/mysqlnd_plugin, which exposes the mysqlnd C plugin API to PHP:

  • Any PHP MySQL application tries to establish a connection to 192.168.2.29

  • The PHP application will either use ext/mysql, ext/mysqli or PDO_MYSQL. All three PHP MySQL extensions use mysqlnd to establish the connection to 192.168.2.29.

  • Mysqlnd calls its connect method, which has been subclassed by ext/mysqlnd_plugin.

  • ext/mysqlnd_plugin calls the userspace hook proxy::connect() registered by the user.

  • The userspace hook changes the connection host IP from 192.168.2.29 to 127.0.0.1 and returns the connection established by parent::connect().

  • ext/mysqlnd_plugin performs the equivalent of parent::connect(127.0.0.1) by calling the original mysqlnd method for establishing a connection.

  • ext/mysqlnd establishes a connection and returns to ext/mysqlnd_plugin. ext/mysqlnd_plugin returns as well.

  • Whatever PHP MySQL extension had been used by the application, it receives a connection to 127.0.0.1. The PHP MySQL extension itself returns to the PHP application. The circle is closed.

MySQL Native Driver Plugin Architecture
Getting started building a mysqlnd plugin
MySQL Native Driver Plugin API


Getting started building a mysqlnd plugin

It is important to remember that a mysqlnd plugin is itself a PHP extension.

The following code shows the basic structure of the MINIT function that will be used in the typical mysqlnd plugin:

/* my_php_mysqlnd_plugin.c */

 static PHP_MINIT_FUNCTION(mysqlnd_plugin) {
  /* globals, ini entries, resources, classes */

  /* register mysqlnd plugin */
  mysqlnd_plugin_id = mysqlnd_plugin_register();

  conn_m = mysqlnd_get_conn_methods();
  memcpy(org_conn_m, conn_m,
    sizeof(struct st_mysqlnd_conn_methods));

  conn_m->query = MYSQLND_METHOD(mysqlnd_plugin_conn, query);
  conn_m->connect = MYSQLND_METHOD(mysqlnd_plugin_conn, connect);
}

/* my_mysqlnd_plugin.c */

 enum_func_status MYSQLND_METHOD(mysqlnd_plugin_conn, query)(/* ... */) {
  /* ... */
}
enum_func_status MYSQLND_METHOD(mysqlnd_plugin_conn, connect)(/* ... */) {
  /* ... */
}

Task analysis: from C to userspace

 class proxy extends mysqlnd_plugin_connection {
  public function connect($host, ...) { .. }
}
mysqlnd_plugin_set_conn_proxy(new proxy());

Process:

  1. PHP: user registers plugin callback

  2. PHP: user calls any PHP MySQL API to connect to MySQL

  3. C: ext/*mysql* calls mysqlnd method

  4. C: mysqlnd ends up in ext/mysqlnd_plugin

  5. C: ext/mysqlnd_plugin

    1. Calls userspace callback

    2. Or original mysqlnd method, if userspace callback not set

You need to carry out the following:

  1. Write a class "mysqlnd_plugin_connection" in C

  2. Accept and register proxy object through "mysqlnd_plugin_set_conn_proxy()"

  3. Call userspace proxy methods from C (optimization - zend_interfaces.h)

Userspace object methods can either be called using call_user_function() or you can operate at a level closer to the Zend Engine and use zend_call_method().

Optimization: calling methods from C using zend_call_method

The following code snippet shows the prototype for the zend_call_method function, taken from zend_interfaces.h.

 ZEND_API zval* zend_call_method(
  zval **object_pp, zend_class_entry *obj_ce,
  zend_function **fn_proxy, char *function_name,
  int function_name_len, zval **retval_ptr_ptr,
  int param_count, zval* arg1, zval* arg2 TSRMLS_DC
);

Zend API supports only two arguments. You may need more, for example:

 enum_func_status (*func_mysqlnd_conn__connect)(
  MYSQLND *conn, const char *host,
  const char * user, const char * passwd,
  unsigned int passwd_len, const char * db,
  unsigned int db_len, unsigned int port,
  const char * socket, unsigned int mysql_flags TSRMLS_DC
);

To get around this problem you will need to make a copy of zend_call_method() and add a facility for additional parameters. You can do this by creating a set of MY_ZEND_CALL_METHOD_WRAPPER macros.

Calling PHP userspace

This code snippet shows the optimized method for calling a userspace function from C:

/* my_mysqlnd_plugin.c */

MYSQLND_METHOD(my_conn_class,connect)(
  MYSQLND *conn, const char *host /* ... */ TSRMLS_DC) {
  enum_func_status ret = FAIL;
  zval * global_user_conn_proxy = fetch_userspace_proxy();
  if (global_user_conn_proxy) {
    /* call userspace proxy */
    ret = MY_ZEND_CALL_METHOD_WRAPPER(global_user_conn_proxy, host, /*...*/);
  } else {
    /* or original mysqlnd method = do nothing, be transparent */
    ret = org_methods.connect(conn, host, user, passwd,
          passwd_len, db, db_len, port,
          socket, mysql_flags TSRMLS_CC);
  }
  return ret;
}

Calling userspace: simple arguments

/* my_mysqlnd_plugin.c */

 MYSQLND_METHOD(my_conn_class,connect)(
  /* ... */, const char *host, /* ...*/) {
  /* ... */
  if (global_user_conn_proxy) {
    /* ... */
    zval* zv_host;
    MAKE_STD_ZVAL(zv_host);
    ZVAL_STRING(zv_host, host, 1);
    MY_ZEND_CALL_METHOD_WRAPPER(global_user_conn_proxy, zv_retval, zv_host /*, ...*/);
    zval_ptr_dtor(&zv_host);
    /* ... */
  }
  /* ... */
}

Calling userspace: structs as arguments

/* my_mysqlnd_plugin.c */

MYSQLND_METHOD(my_conn_class, connect)(
  MYSQLND *conn, /* ...*/) {
  /* ... */
  if (global_user_conn_proxy) {
    /* ... */
    zval* zv_conn;
    ZEND_REGISTER_RESOURCE(zv_conn, (void *)conn, le_mysqlnd_plugin_conn);
    MY_ZEND_CALL_METHOD_WRAPPER(global_user_conn_proxy, zv_retval, zv_conn, zv_host /*, ...*/);
    zval_ptr_dtor(&zv_conn);
    /* ... */
  }
  /* ... */
}

The first argument of many mysqlnd methods is a C "object". For example, the first argument of the connect() method is a pointer to MYSQLND. The struct MYSQLND represents a mysqlnd connection object.

The mysqlnd connection object pointer can be compared to a standard I/O file handle. Like a standard I/O file handle a mysqlnd connection object shall be linked to the userspace using the PHP resource variable type.

From C to userspace and back

 class proxy extends mysqlnd_plugin_connection {
  public function connect($conn, $host, ...) {
    /* "pre" hook */
    printf("Connecting to host = '%s'\n", $host);
    debug_print_backtrace();
    return parent::connect($conn);
  }

  public function query($conn, $query) {
    /* "post" hook */
    $ret = parent::query($conn, $query);
    printf("Query = '%s'\n", $query);
    return $ret;
  }
}
mysqlnd_plugin_set_conn_proxy(new proxy());

PHP users must be able to call the parent implementation of an overwritten method.

As a result of subclassing it is possible to refine only selected methods and you can choose to have "pre" or "post" hooks.

Buildin class: mysqlnd_plugin_connection::connect()

/*  my_mysqlnd_plugin_classes.c */

 PHP_METHOD("mysqlnd_plugin_connection", connect) {
  /* ... simplified! ... */
  zval* mysqlnd_rsrc;
  MYSQLND* conn;
  char* host; int host_len;
  if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs",
    &mysqlnd_rsrc, &host, &host_len) == FAILURE) {
    RETURN_NULL();
  }
  ZEND_FETCH_RESOURCE(conn, MYSQLND* conn, &mysqlnd_rsrc, -1,
    "Mysqlnd Connection", le_mysqlnd_plugin_conn);
  if (PASS == org_methods.connect(conn, host, /* simplified! */ TSRMLS_CC))
    RETVAL_TRUE;
  else
    RETVAL_FALSE;
}
The mysqlnd plugin API
mysqlnd_ms
MySQL Native Driver Plugin API


Mysqlnd 主从复制和负载均衡插件

  • 简介
  • 快速入门与例子
    • Setup
    • Running statements
    • 连接状态
    • SQL Hints (SQL 优化器)
    • 事务
    • XA/Distributed Transactions
    • 服务级别和一致性
    • Global transaction IDs (GTID)
    • Cache integration
    • 故障转移
    • 分区和分片
    • MySQL Fabric
  • 概念
    • Architecture
    • 连接池与切换
    • 事务控制
    • 错误处理
    • 短错误
    • 错误处理
    • 负载均衡
    • Read-write splitting
    • Filter
    • Service level and consistency
    • Global transaction IDs
    • Cache integration
    • Supported clusters
    • XA/Distributed transactions
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • Plugin configuration file (>=1.1.x)
  • 预定义常量
  • Mysqlnd_ms 函数
    • mysqlnd_ms_dump_servers — Returns a list of currently configured servers
    • mysqlnd_ms_fabric_select_global — Switch to global sharding server for a given table
    • mysqlnd_ms_fabric_select_shard — Switch to shard
    • mysqlnd_ms_get_last_gtid — 返回最后的全局同步 ID (GTID)
    • mysqlnd_ms_get_last_used_connection — Returns an array which describes the last used connection
    • mysqlnd_ms_get_stats — Returns query distribution and connection statistics
    • mysqlnd_ms_match_wild — Finds whether a table name matches a wildcard pattern or not
    • mysqlnd_ms_query_is_select — 查询给定的 SQL 会发送给 master、slave 还是最后使用的 MySQL server 执行。
    • mysqlnd_ms_set_qos — Sets the quality of service needed from the cluster
    • mysqlnd_ms_set_user_pick_server — Sets a callback for user-defined read/write splitting
    • mysqlnd_ms_xa_begin — Starts a distributed/XA transaction among MySQL servers
    • mysqlnd_ms_xa_commit — Commits a distributed/XA transaction among MySQL servers
    • mysqlnd_ms_xa_gc — Garbage collects unfinished XA transactions after severe errors
    • mysqlnd_ms_xa_rollback — Rolls back a distributed/XA transaction among MySQL servers
  • Change History
    • PECL/mysqlnd_ms 1.6 series
    • PECL/mysqlnd_ms 1.5 series
    • PECL/mysqlnd_ms 1.4 series
    • PECL/mysqlnd_ms 1.3 series
    • PECL/mysqlnd_ms 1.2 series
    • PECL/mysqlnd_ms 1.1 series
    • PECL/mysqlnd_ms 1.0 series
Getting started building a mysqlnd plugin
简介
MySQL


简介

Mysql 主从复制和负载均衡插件 (mysqlnd_ms) 可以帮助我们很简单的支 持所有使用 mysqlnd 的 PHP MySQL 扩展。

自从 PHP 5.3.3 版本，MySQL native driver 以一个 C API 接口的方式存在。这个 C 插件， 可以通过 mysqlnd 完成对 MySQL 主从复制和负载均衡 的相关功能扩展。

从 PHP 5.3.0 以后，MySQL native driver 可以以 C 库的方式工作。它以插入的方式替代 MySQL Client 库 (libmysqlclient) 的作用。使用 mysqlnd 有几个好处: 不需要特别下载内容， 他已经被内置在 PHP 当中; 他基于 PHP 许可协议; 他会消耗更小的内存; 并且他包含很多新的 函数方法 (例如：异步查询).

Mysqlnd 插件 (例如 mysqlnd_ms) 都是从用户的使用要求中提炼出来. mysqlnd_ms 支持所有的 PHP 应用, 和所有的 MySQL PHP 扩展. 他并不改变现有的 APIs, 所以他可以很容易的在现有的 PHP 应用环境中使用.

Key Features

主要功能

  • 透明使用, 并且容易使用.

    • 支持所有的 PHP MySQL 扩展

    • 支持 SSL

    • 一致的 API 接口

    • 只需要很小的基于使用需要的方案设定

    • 被动连接，只有实际的 SQL 执行时，才会与 Master 和 Slaver 进行连接

    • 可选：从 Web request 的第一个写以后自动使用 Master, 降低可能的主从复制的延时影响

  • 可以在 MySQL Cluster 中使用

    • MySQL Replication: 实现读写分离, 插件主要为 MySQL Replication 编写

    • MySQL Cluster: 可以禁用读写分离, 可以使用多个 Master

    • 第三方解决方案: 插件为 MySQL Replication 定制开发, 但是也可以适用于其他的 MySQL Cluster 解决方案

  • 读写分离策略

    • 自动检测 SELECT 语句

    • Supports SQL hints to overrule automatism.

    • 用户自定义

    • 可以被禁用，例如在使用同步 Cluster 时

  • 负载均衡策略

    • Round Robin: 针对每一个 slave 查询，使用不同的 slave，轮循方式

    • Random: 随机选择 slave

    • Random once (sticky): 随机选取一个 slave, 在这个页面的请求过程中, 都是用这个 slave

    • User-defined: 应用可以在 mysqlnd_ms 中注册一个 callback

    • 从 PHP 5.4.0 以后版本，事务可以通过事务控制的 API 调用进行处理。

    • Weighted load balancing: Slave 可以被分配不同的优先级, 例如; 可以让更多的查询在一个更好的设备上执行, 或者在一个更近的设备查询以降低延时影响

  • Global transaction ID

    • Client-side emulation. Makes manual master server failover and slave promotion easier with asynchronous clusters, such as MySQL Replication.

    • 支持 MySQL 5.6.5 以上版本内置的 GTID.

    • 在 Session 一致性策略下，可以通过 GTID 完成异步 slave 读取最新的数据。

    • Throttling: optionally, the plugin can wait for a slave to become "synchronous" before continuing.

  • 服务和一致性级别

    • 应用可以在连接中选择：最终、session 和强一致性服务级别。最合适的通讯节点 将自动进行选择。

    • 最终一致性时，MySQL 主从同步的 slave 可以被本地 cache 替换，用于降低服务器负载。

  • 分区和共享

    • 数据库群组中的服务器，可以被定义到组中，利用 SQL hints 可以手动的指定在特定的组中进行查询。 组可以完成数据分区，或者完成数据热点的更新。

    • MySQL 主从同步过滤可以通过表过滤器支持。

限制

内置的读写分离机制非常基础, 任何一个以 SELECT 开头的查询, 都被认为是读操作, 从而发送给 slave 服务器. 所有其他的查询 (包括 SHOW) 都会被认为是写操作， 而被发送给 master 服务器. 内置的操作方法可以通过重写 SQL hints 改变, 或者使用一个用户定义的 callback 实现.

读写分离不能提供对于多查询的结构支持, 多查询结果会被认为是一个单一查询. 通过开头的字符串来决定如何执行这些查询. 例如, 如果使用 mysqli_multi_query() 执行多查询 SELECT id FROM test; INSERT INTO test(id) VALUES (1) 将会被认为是一个查询操作， 而被发送给 slave 服务器, 以为他开头使用了 SELECT. 其中的 INSERT 结构，将不会被发送给 master 服务器.

Note:

应用必须知道连接切换的重要性, 他是负载均衡的墓地. 可以查看相关说明: connection pooling and switching, transaction handling, failover load balancing 和 read-write splitting.

On the name

The shortcut mysqlnd_ms stands for mysqlnd master slave plugin. The name was chosen for a quick-and-dirty proof-of-concept. In the beginning the developers did not expect to continue using the code base.

mysqlnd_ms
快速入门与例子
mysqlnd_ms


快速入门与例子

Table of Contents

  • Setup
  • Running statements
  • 连接状态
  • SQL Hints (SQL 优化器)
  • 事务
  • XA/Distributed Transactions
  • 服务级别和一致性
  • Global transaction IDs (GTID)
  • Cache integration
  • 故障转移
  • 分区和分片
  • MySQL Fabric

mysqlnd 是非常容易使用的 MySQL 主从复制负载均衡插件。 这里会给出用户使用的典型例子，并会提供开始使用的实用建议。

我们强烈建议您阅读相关在 Quickstart 中的相关章节。这里可以避免在理论、 概念和限制等方便的混淆。我们力劝您一定要阅读相关说明章节中的背景信息， 以避免在实际使用过程中遇到严重的问题。

焦点是将 PECL mysqlnd_ms 用于异步的 MySQL Cluster，也就是 MySQL replication (MySQL 主从复制)。一般来说，使用主从复制要比同步的 MySQL Cluster 要复杂，难用。所以这里能够为使用 MySQL Cluster 的用户提供更多的信息。

简介
Setup
mysqlnd_ms


Setup

插件是一个 PHP 的扩展, 可以查看 installation instructions 学习如何安装 » PECL/mysqlnd_ms 扩展。

编译或配置 PHP MySQL 扩展 (API) (mysqli、 PDO_MYSQL、 mysql)，也就是你打算使用的、支持 mysqlnd 的库。 PECL/mysqlnd_ms 是一个 mysqlnd 库的插件。使用任意 PHP MySQL 扩展时，要使用 mysqlnd 必须使用该插件。

然后，使用 mysqlnd_ms.enable 在 PHP 配置文件中装载和激活插件。

Example #1 启用插件(php.ini)

mysqlnd_ms.enable=1
mysqlnd_ms.config_file=/path/to/mysqlnd_ms_plugin.ini

插件使用他自己的配置文件。使用 PHP 指令 mysqlnd_ms.config_file 定义插件配置文件的完整路径。 该文件必须能被 PHP 读取(比如 web 服务器的用户)。 请注意，从 1.4.0 版本开始配置文件变量使用 mysqlnd_ms.config_file, 以前的 mysqlnd_ms.ini_file 不再使用。 使用旧的、不再有效的指令是一个很常见的错误。

在 mysqlnd_ms.config_file 指定的目录中，创建保存插件的配置文件。

插件的 配置文件 基于 JSON 格式。 配置写在一个或者多个章节中。每个章节都包含一个名称，例如： myapp。 每个章节包含自己的配置信息。

一个章节的配置中，至少要包含 MySQL 主从复制中的 master 服务器和相关 slave 服务器。 每个章节只能使用一个 master 服务器。 目前还不能完全支持多 master(Multi-master)的设置。 master 用于设定 MySQL master 服务器的 hostname、port 或 socket。 而 MySQL slave 服务器信息使用 slave 来设定。

Example #2 最基本的插件配置文件 (mysqlnd_ms_plugin.ini)

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost"
            }
        },
        "slave": [

        ]
    }
}

必须配置 MySQL slave 服务器列表，当然它也可以是空的列表。我们建议至少配置一个 slave 服务器。

服务器列表可以使用 匿名或者非匿名语法。 非匿名列表包含一个别名，例如 master_0 可用于上面的例子。 在这里，将使用更详细的非匿名语法。

Example #3 建议最基本的插件配置文件 (mysqlnd_ms_plugin.ini)

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.2.27",
                "port": "3306"
            }
        }
    }
}

如果这里至少有两个服务器，插件可以负载均衡、切换连接。切换链接并不总是透明的，在某些具体条件下会导致问题。本参考中包含 连接池和切换， 事务处理， 故障转移 负载均衡 和 读写分离。稍后在本指南中将具体描述更多潜在的陷阱。

应用需要处理连接切换过程中潜在的问题，配置一个 master 和至少一个 slave，这样就可以切换，因此能发现相关问题。

MySQL 主从同步并不需要你配置 master 和 slave。 为了测试的目的，你可以使用单个 MySQL 服务器，让插件认为是 master 和 slave 服务器，就像以下的设置。这样可以帮助你在连接切换中检测到很多潜在问题。 不过，这样的设置不容易发生因为主从同步延迟而导致的问题。

Example #4 使用一个服务器同时作为 master 和 slave（仅用于测试！）

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "127.0.0.1",
                "port": "3306"
            }
        }
    }
}

插件将尝试通知你不合理的配置. 从 1.5.0 版本开始, 下列情况它抛出一个 PHP warning, 配置文件不可读; 空配置或者 JSON 配置语法错误. 通过 PHP 本身的配置，可能这些报警信息 会被放置在某些错误 LOG 文件当中。在验证完毕后，通过配置文件中有效的章节，连接会被建立。 设置 mysqlnd_ms.force_config_usage 可以帮助你进行 DEBUG。可以参考 配置文件 DEBUG 说明.

快速入门与例子
Running statements
快速入门与例子


Running statements

这个插件可以配合 (mysqli, mysql, 和 PDO_MYSQL) 使用, 他们都是基于 mysqlnd library 工作的。 PECL/mysqlnd_ms 插件是 mysqlnd library 的一部分, 他并不改变这些扩展的 API 或者行为。

当 MySQL 链接打开的时候，插件会在配置文件中根据章节设定匹配 host 参数。 例如，插件配置文件中指定 myapp，那么可以使用 myapp 作为 host 打开 MySQL 链接。

Example #1 插件指定的配置文件 (mysqlnd_ms_plugin.ini)

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.2.27",
                "port": "3306"
            }
        }
    }
}

Example #2 开启一个负载均衡链接

<?php
/* 根据配置针对 myapp 开启一个负载均衡的链接 */
$mysqli = new mysqli("myapp", "username", "password", "database");
$pdo = new PDO('mysql:host=myapp;dbname=database', 'username', 'password');
$mysql = mysql_connect("myapp", "username", "password");
?>

上面的连接范例是负载均衡方式的。插件将发送只读查询给 192.168.2.27 端口 3306。其他的所有查询，将发送给 localhost 指定的 master 服务器。在 Linux 设备中， /tmp/mysql.sock 指定了本机的 MySQL 服务；在 Windows 系统中将使用默认的 TCP/IP 通讯。 插件将使用 username 和 password 连接任何一个 在 myapp 章节中指定的数据库。在连接以后，将选择 database 设定的数据库作为当前操作数据库。

username, password 和默认数据库将在所有设定的数据库中做统一设定。 换句话说，就是所有的数据库必须使用同样的用户名口令登录。 从 1.1.0 版本以后，这个限制将不再存在，可以针对任何一个服务器通过 username 和 password 进行登录鉴权设定。

插件在不改变查询结构的基础上，提供 读写分离。 下面的范例假定 master 和 slave 之间并没有很大的延迟。

Example #3 Executing statements

<?php
/* myapp 负载均衡设定 */
$mysqli = new mysqli("myapp", "username", "password", "database");
if (mysqli_connect_errno())
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

/* 查询将在 master 上运行 */
if (!$mysqli->query("DROP TABLE IF EXISTS test")) {
 printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
}
if (!$mysqli->query("CREATE TABLE test(id INT)")) {
 printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
}
if (!$mysqli->query("INSERT INTO test(id) VALUES (1)")) {
 printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
}

/* 只读查询将在 slave 上运行 */
if (!($res = $mysqli->query("SELECT id FROM test")) {
 printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
} else {
 $row = $res->fetch_assoc();
 $res->close();
 printf("Slave returns id = '%s'\n", $row['id'];
}
$mysqli->close();
?>

以上例程的输出类似于：

Slave returns id = '1'

Setup
连接状态
快速入门与例子


连接状态

插件改变了 PHP MySQL 连接的控制，新建连接会从一个连接池中获取，用于替代 client-server 的单一连接方式。连接池包含一组 master 连接，和可选数目的 slave 连接。

连接池中的每一个连接都有自己的状态，例如：SQL 用户变量、临时表、事物状态。 所有的链接状态可以参考 连接池与切换 说明。 如果插件决定要为负载均衡切换连接，应用可能得到一个不同状态的链接。 应用必须能够处理这些问题。

Example #1 配置了一个 master 和一个 slave 的插件

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.2.27",
                "port": "3306"
            }
        }
    }
}

Example #2 陷阱：连接状态和 SQL 用户变量

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (!$mysqli)
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

/* 链接 1：绑定 SQL 用户变量，因为没有 SELECT 所以在 master 上执行 */
if (!$mysqli->query("SET @myrole='master'")) {
 printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
}

/* 连接 2：因为有 SELECT 所以在 slave 上执行 */
if (!($res = $mysqli->query("SELECT @myrole AS _role"))) {
 printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
} else {
 $row = $res->fetch_assoc();
 $res->close();
 printf("@myrole = '%s'\n", $row['_role']);
}
$mysqli->close();
?>

以上例程会输出：

@myrole = ''

范例打开了负载均衡连接，并且执行两个查询。 第一个查询 SET @myrole='master' 没有以 SELECT 开头。然而并不能识别这是一个应该在 slave 中执行的查询，所以他被在 master 中执行。 所以这个变量被绑定在 master 连接中，master 连接设定被改变了。

然后执行 SELECT @myrole AS _role 查询，差将将其识别为只读查询， 并且发送给 slave 服务器。这样这个查询不会获得任何已经设定的 SQL 用户变量。 这个变量被设定在了第一次使用的 master 连接上面。所以范例将打印 @myrole = ''。

这是开发人员必须注意的问题，插件并不会监控所有连接的变化情况。 若要监控所有的变化，将消耗大量的 CPU 资源。

当然这种陷阱，可以通过 SQL hints 解决。

Running statements
SQL Hints (SQL 优化器)
快速入门与例子


SQL Hints (SQL 优化器)

SQL 优化器可以强行指定连接池中特定的链接。可以给定插件一个优化器去使用特定的服务器连接， 这样可以解决由于链接切换引起的链接状态变化问题。

SQL hints 是基于 SQL 语句的。因为 SQL 注释会被 SQL 执行器忽略， 他并不会妨碍 MySQL 服务器、MySQL proxy 或者任何防火墙的工作。

插件支持 SQL hints，MYSQLND_MS_MASTER_SWITCH hints 可以指定语句在 master 上运行，MYSQLND_MS_SLAVE_SWITCH 可以指定在 slave 上运行，MYSQLND_MS_LAST_USED_SWITCH 可以指定语句在上一条语句执行的 slave 上运行。

插件会扫描语句的内容，查询是否有 SQL hints。他只能在语句的开头被识别。

Example #1 配置一个 master 和一个 slave 的插件

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.2.27",
                "port": "3306"
            }
        }
    }
}

Example #2 SQL hints 禁止连接切换

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (mysqli_connect_errno())
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

/* 连接 1：设置一个 SQL 用户变量，没有 SELECT 所以运行在 master 上 */
if (!$mysqli->query("SET @myrole='master'")) {
 printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
}

/* 连接 1：因为指定了 SQL hint */
if (!($res = $mysqli->query(sprintf("/*%s*/SELECT @myrole AS _role", MYSQLND_MS_LAST_USED_SWITCH)))) {
 printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
} else {
 $row = $res->fetch_assoc();
 $res->close();
 printf("@myrole = '%s'\n", $row['_role']);
}
$mysqli->close();
?>

以上例程会输出：

@myrole = 'master'

上面的范例使用 MYSQLND_MS_LASTER_USED_SWITCH 来防止在 master 和 slave 之间进行切换，即使运行了 SELECT 开头的语句。

SQL hints 也可以用于在 master 上运行 SELECT 语句。 这经常发生于 slave 中的数据落后于 master，但是希望获取当前数据的时候。

在 1.2.0 版本中，引入了服务级别的概念，用于处理即时数据获取的问题。 使用服务级别，可以降低对这个问题的关注，替代 SQL hints 的使用。 可以在服务级别和一致性的章节中找到更多的说明。

Example #3 与同步延迟斗争

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (!$mysqli)
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

/* Force use of master, master has always fresh and current data */
if (!$mysqli->query(sprintf("/*%s*/SELECT critical_data FROM important_table", MYSQLND_MS_MASTER_SWITCH))) {
 printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
}
?>

在使用中，slave 中应该有同样的表单。当没有给定 SQL hints 的时候，插件在发送 CREATE INSERT 语句到 master 服务器。 可以通过设定 MYSQLND_MS_SLAVE_SWITCH 来让这些语句在 slave 中运行。例如建立一个临时表单：

Example #4 Table creation on a slave

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (!$mysqli)
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

/* 强迫在 slave 运行 */
if (!$mysqli->query(sprintf("/*%s*/CREATE TABLE slave_reporting(id INT)", MYSQLND_MS_SLAVE_SWITCH))) {
 printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
}
/* 使用刚刚使用的 slave 连接 */
if (!$mysqli->query(sprintf("/*%s*/INSERT INTO slave_reporting(id) VALUES (1), (2), (3)", MYSQLND_MS_LAST_USED_SWITCH))) {
 printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
}
/* 不使用 MYSQLND_MS_SLAVE_SWITCH 将会切换到另外一台 slave */
if ($res = $mysqli->query(sprintf("/*%s*/SELECT COUNT(*) AS _num FROM slave_reporting", MYSQLND_MS_LAST_USED_SWITCH))) {
  $row = $res->fetch_assoc();
  $res->close();
  printf("There are %d rows in the table 'slave_reporting'", $row['_num']);
} else {
  printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
}
$mysqli->close();
?>

SQL hint MYSQLND_MS_LAST_USED 禁止切换连接， 他将使用上一次使用的链接。

连接状态
事务
快速入门与例子


事务

当前版本的插件并不是事务安全的，因为他并没有识别全部的事务操作。 SQL 事务单元是在单一服务器中运行的。插件并不能有效的知道事务单元 何时开始，何时终止。所以，在事务单元中，可能数据库连接会被切换。

如果应用没有设定事务单元编辑，那么没有任何 MySQL 负载均衡能够检测他。

可以通过 SQL hints 来解除这个限制。可以选择性的调用事务 API 进行监控， 然后嗲用 API 执行控制事务。下面给出范例：

Example #1 配置一个 master 和一个 slave 的插件

[myapp]
{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.2.27",
                "port": "3306"
            }
        }
    }
}

Example #2 在事务中使用 SQL hints

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (!$mysqli)
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

/* 不是 SELECT 开头，所以使用 master */
if (!$mysqli->query("START TRANSACTION")) {
 /* Please use better error handling in your code */
 die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
}

/* 禁止连接切换*/
if (!$mysqli->query(sprintf("/*%s*/INSERT INTO test(id) VALUES (1)", MYSQLND_MS_LAST_USED_SWITCH)))) {
 /* Please do proper ROLLBACK in your code, don't just die */
 die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
}
if ($res = $mysqli->query(sprintf("/*%s*/SELECT COUNT(*) AS _num FROM test", MYSQLND_MS_LAST_USED_SWITCH)))) {
  $row = $res->fetch_assoc();
  $res->close();
  if ($row['_num'] > 1000) {
   if (!$mysqli->query(sprintf("/*%s*/INSERT INTO events(task) VALUES ('cleanup')", MYSQLND_MS_LAST_USED_SWITCH)))) {
     die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
   }
  }
} else {
 die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
}
if (!$mysqli->query(sprintf("/*%s*/UPDATE log SET last_update = NOW()", MYSQLND_MS_LAST_USED_SWITCH)))) {
 die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
}
if (!$mysqli->query(sprintf("/*%s*/COMMIT", MYSQLND_MS_LAST_USED_SWITCH)))) {
 die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
}

$mysqli->close();
?>

自从 PHP 5.4.0 版本开始，mysqlnd library 允许插件监控 autocommit 模式下的状态，例如调用 SET AUTOCOMMIT=0 这样的语句，这将让插件开始关心事务处理。这样你就可以不用使用 SQl hints。

从 PHP 5.4.0 版本开始，调用 API autocommit 模式，插件设定中有 trx_stickiness=master， 那么插件将在事务中自动禁止负载均衡和连接切换。在 autocommit 禁用的配置当中， 插件将在事务过程中将所有的语句发送给 master，禁用负载均衡。当 autocommit 重新启用以后，插件将重新开始负载均衡所有的语句。

在 PHP 5.5.0 和 PECL/mysqlnd_ms 1.5.0 版本后，这种检查将不仅仅检查 mysqli_autocommit() 还会检查 mysql_commit() 和 mysql_rollback()。

Example #3 事务相关负载均衡下的 trx_stickiness 设置

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "127.0.0.1",
                "port": "3306"
            }
        },
        "trx_stickiness": "master"
    }
}

Example #4 Transaction aware

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (!$mysqli)
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

/* 禁用 autocommit，插件将所有语句发送给 master */
$mysqli->autocommit(FALSE);

if (!$mysqli->query("INSERT INTO test(id) VALUES (1)")) {
 /* Please do proper ROLLBACK in your code, don't just die */
 die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
}
if ($res = $mysqli->query("SELECT COUNT(*) AS _num FROM test")) {
  $row = $res->fetch_assoc();
  $res->close();
  if ($row['_num'] > 1000) {
   if (!$mysqli->query("INSERT INTO events(task) VALUES ('cleanup')")) {
     die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
   }
  }
} else {
 die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
}
if (!$mysqli->query("UPDATE log SET last_update = NOW()")) {
 die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
}
if (!$mysqli->commit()) {
 die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
}

/* 插件判定事务终止，重新启用负载均衡 */
$mysqli->autocommit(TRUE);
$mysqli->close();
?>

Note: 版本需求

trx_stickiness=master 参数需要 PHP 5.4.0 以上版本。

可以参考相关限制在 transaction handling 章节中。

SQL Hints (SQL 优化器)
XA/Distributed Transactions
快速入门与例子


XA/Distributed Transactions

Note: Version requirement

XA related functions have been introduced in PECL mysqlnd_ms version 1.6.0-alpha.

Note: Experimental

The feature is currently under development. There may be issues and/or feature limitations. Do not use in production environments.

XA transactions are a standardized method for executing transactions across multiple resources. Those resources can be databases or other transactional systems. The MySQL server supports XA SQL statements which allows users to carry out a distributed SQL transaction that spawns multiple database servers or any kind as long as they support the SQL statements too. In such a scenario it is in the responsibility of the user to coordinate the participating servers.

PECL/mysqlnd_ms can act as a transaction coordinator for a global (distributed, XA) transaction carried out on MySQL servers only. As a transaction coordinator, the plugin tracks all servers involved in a global transaction and transparently issues appropriate SQL statements on the participants. The global transactions are controlled with mysqlnd_ms_xa_begin(), mysqlnd_ms_xa_commit() and mysqlnd_ms_xa_rollback(). SQL details are mostly hidden from the application as is the need to track and coordinate participants.

Example #1 General pattern for XA transactions

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (!$mysqli)
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

/* start a global transaction */
$gtrid_id = "12345";
if (!mysqlnd_ms_xa_begin($mysqli, $gtrid_id)) {
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
}

/* run queries as usual: XA BEGIN will be injected upon running a query */
if (!$mysqli->query("INSERT INTO orders(order_id, item) VALUES (1, 'christmas tree, 1.8m')")) {
   /* Either INSERT failed or the injected XA BEGIN failed */
  if ('XA' == substr($mysqli->sqlstate, 0, 2)) {
    printf("Global transaction/XA related failure, [%d] %s\n", $mysqli->errno, $mysqli->error);
  } else {
    printf("INSERT failed, [%d] %s\n", $mysqli->errno, $mysqli->error);
  }
  /* rollback global transaction */
  mysqlnd_ms_xa_rollback($mysqli, $xid);
  die("Stopping.");
}

/* continue carrying out queries on other servers, e.g. other shards */

/* commit the global transaction */
if (!mysqlnd_ms_xa_commit($mysqli, $xa_id)) {
  printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
}
?>

Unlike with local transactions, which are carried out on a single server, XA transactions have an identifier (xid) associated with them. The XA transaction identifier is composed of a global transaction identifier (gtrid), a branch qualifier (bqual) a format identifier (formatID). Only the global transaction identifier can and must be given when calling any of the plugins XA functions.

Once a global transaction has been started, the plugin begins tracking servers until the global transaction ends. When a server is picked for query execution, the plugin injects the SQL statement XA BEGIN prior to executing the actual SQL statement on the server. XA BEGIN makes the server participate in the global transaction. If the injected SQL statement fails, the plugin will report the issue in reply to the query execution function that was used. In the above example, $mysqli->query("INSERT INTO orders(order_id, item) VALUES (1, 'christmas tree, 1.8m')") would indicate such an error. You may want to check the errors SQL state code to determine whether the actual query (here: INSERT) has failed or the error is related to the global transaction. It is up to you to ignore the failure to start the global transaction on a server and continue execution without having the server participate in the global transaction.

Example #2 Local and global transactions are mutually exclusive

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (!$mysqli)
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

/* start a local transaction */
if (!$mysqli->begin_transaction())
  die(sprintf("[%d/%s] %s\n", $mysqli->errno, $mysqli->sqlstate, $mysqli->error));

/* cannot start global transaction now - must end local transaction first */
$gtrid_id = "12345";
if (!mysqlnd_ms_xa_begin($mysqli, $gtrid_id)) {
  die(sprintf("[%d/%s] %s\n", $mysqli->errno, $mysqli->sqlstate, $mysqli->error));
}
?>

以上例程会输出：

Warning: mysqlnd_ms_xa_begin(): (mysqlnd_ms) Some work is done outside global transaction. You must end the active local transaction first in ... on line ...
[1400/XAE09] (mysqlnd_ms) Some work is done outside global transaction. You must end the active local transaction first

A global transaction cannot be started when a local transaction is active. The plugin tries to detect this situation as early as possible, that is when mysqlnd_ms_xa_begin() is called. If using API calls only to control transactions, the plugin will know that a local transaction is open and return an error for mysqlnd_ms_xa_begin(). However, note the plugins limitations on detecting transaction boundaries.. In the worst case, if using direct SQL for local transactions (BEGIN, COMMIT, ...), it may happen that an error is delayed until some SQL is executed on a server.

To end a global transaction invoke mysqlnd_ms_xa_commit() or mysqlnd_ms_xa_rollback(). When a global transaction is ended all participants must be informed of the end. Therefore, PECL/mysqlnd_ms transparently issues appropriate XA related SQL statements on some or all of them. Any failure during this phase will cause an implicit rollback. The XA related API is intentionally kept simple here. A more complex API that gave more control would bare few, if any, advantages over a user implementation that issues all lower level XA SQL statements itself.

XA transactions use the two-phase commit protocol. The two-phase commit protocol is a blocking protocol. There are cases when no progress can be made, not even when using timeouts. Transaction coordinators should survive their own failure, be able to detect blockades and break ties. PECL/mysqlnd_ms takes the role of a transaction coordinator and can be configured to survive its own crash to avoid issues with blocked MySQL servers. Therefore, the plugin can and should be configured to use a persistent and crash-safe state to allow garbage collection of unfinished, aborted global transactions. A global transaction can be aborted in an open state if either the plugin fails (crashes) or a connection from the plugin to a global transaction participant fails.

Example #3 Transaction coordinator state store

{
    "myapp": {
        "xa": {
            "state_store": {
                "participant_localhost_ip": "192.168.2.12",
                "mysql": {
                    "host": "192.168.2.13",
                    "user": "root",
                    "password": "",
                    "db": "test",
                    "port": "3312",
                    "socket": null
                }
            }
        },
        "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.2.14",
                "port": "3306"
            }
        }
    }
}

Currently, PECL/mysqlnd_ms supports only using MySQL database tables as a state store. The SQL definitions of the tables are given in the plugin configuration section. Please, make sure to use a transactional and crash-safe storage engine for the tables, such as InnoDB. InnoDB is the default table engine in recent versions of the MySQL server. Make also sure the database server itself is higly available.

If a state store has been configured, the plugin can perform a garbage collection. During garbage collection it may be necessary to connect to a participant of a failed global transaction. Thus, the state store holds a list of participants and, among others, their host names. If the garbage collection is run on another host but the one that has written a participant entry with the host name localhost, then localhost resolves to different machines. There are two solutions to the problem. Either you do not configure any servers with the host name localhost but configure an IP address (and port) or, you hint the garbage collection. In the above example, localhost is used for master_0, hence it may not resolve to the correct host during garbage collection. However, participant_localhost_ip is also set to hint the garbage collection that localhost stands for the IP 192.168.2.12.

事务
服务级别和一致性
快速入门与例子


服务级别和一致性

Note: 版本需求

服务级别是从 1.2.0-alpha版本引入的，mysqlnd_ms_set_qos() 从 PHP 5.4.0 版本开始可以使用。

不同类型的 MySQL 群组提供了，不同的服务和数据一致性级别。异步的 MySQL 主从同步 提供最终的数据一致性，一个读操作是否能够得到当前的数据、状态，一类与 slave 是否已经从 master 获取了最后的更新。

使用 MySQL 主从同步依赖于网络的有效性，最终会获得数据的一致性。然而， 状态数据是不能同步的。这样，只有指定的 slave 或者 master 连接才能得到所有内容。

从 1.2.0 版本开始，插件能够自动的进行 MySQL 主从同步的节点，来完成 session 一致性 或者完成很强的一致性要求。session 一致性是指一个客户端可以读取他的写入内容， 其他客户端可能不能看到他的写入内容。很强的一致性要求是指所有客户端都能够看到 其他所有客户端的写入内容。

Example #1 session 一致性：读取写入内容

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "127.0.0.1",
                "port": "3306"
            }
        }
    }
}

Example #2 Requesting session consistency

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (!$mysqli)
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

/* 使用 master 完成读写分离 */
if (!$mysqli->query("INSERT INTO orders(order_id, item) VALUES (1, 'christmas tree, 1.8m')")) {
   /* Please use better error handling in your code */
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
}

/* 要求 session 一致性，读取写入内容 */
if (!mysqlnd_ms_set_qos($mysqli, MYSQLND_MS_QOS_CONSISTENCY_SESSION))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

/* 插件选择一个改变数据的节点，这里是 master */
if (!$res = $mysqli->query("SELECT item FROM orders WHERE order_id = 1"))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

var_dump($res->fetch_assoc());

/* 返回到最终数据一致性状态，允许陈旧数据 */
if (!mysqlnd_ms_set_qos($mysqli, MYSQLND_MS_QOS_CONSISTENCY_EVENTUAL))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

/* 插件选择任何一个 slaver 完成允许陈旧数据的读取 */
if (!$res = $mysqli->query("SELECT item, price FROM specials"))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
?>

服务级别可以被写在插件的配置文件中，也可以在运行时使用 mysqlnd_ms_set_qos() 设定。 在范例中，使用这个函数强制 session 一致性，直到再次通知改变。 orders 表单中的 SELECT 语句在前面写入使用的 连接中执行。读写分离逻辑被服务级别策略改变。

在从 orders 表单读取数据以后，恢复到默认的服务级别 (最终数据一致性)。 这时，语句执行选择的服务器将不再被限制，因而在 specials 表单上做的 SELECT 查询将在一个 slave 服务器中进行。

一个新的替代 SQL hint的功能，master_on_write 配置设定。 在绝大部分情况下 mysqlnd_ms_set_qos() 更容易使用， 使用它移植性更好。

Example #3 Maximum age/slave lag

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "127.0.0.1",
                "port": "3306"
            }
        },
        "failover" : "master"
    }
}

Example #4 限制 slave 延迟

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (!$mysqli)
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

/* 若 slave 延迟不超过 4 秒，则从 Slave 读取 */
$ret = mysqlnd_ms_set_qos($mysqli,
         MYSQLND_MS_QOS_CONSISTENCY_EVENTUAL,
         MYSQLND_MS_QOS_OPTION_AGE, 4);

if (!$ret)
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

/* 选择一个 slave，他可能没有改变 */
if (!$res = $mysqli->query("SELECT item, price FROM daytrade"))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

/* 恢复默认状态，使用所有的 slave 和 master */
if (!mysqlnd_ms_set_qos($mysqli, MYSQLND_MS_QOS_CONSISTENCY_EVENTUAL))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
?>

最终一致性服务级别可以使用一个可选的参数设定最大允许的延迟，用于选择 slave。 如果设定这个值，插件会检查所有 slave 的 SHOW SLAVE STATUS。 在范例中，只有满足 Slave_IO_Running=Yes, Slave_SQL_Running=Yes 和 Seconds_Behind_Master <= 4 的 slave 会被执行语句 SELECT item, price FROM daytrade。

在应用运行时，会透明的执行 SHOW SLAVE STATUS 命令。 任何错误会以 warning 的方式报警，但是错误信息不会被保存在连接中。 即使所有的 SHOW SLAVE STATUS 都失败了，用户的执行请求也不会被终止， 给定的 master 作为最后的选择。然而应用不需要做任何调整。

Note: 耗时和缓慢的操作

在任何程序的开始，对所有的 slave 进行 SHOW SLAVE STATUS 查询，是一个非常耗时和缓慢的操作。不要经常这样操作。MySQL 主从同步集群并没有 提供一个客户端从一个中心控制器获取备选方案的能力。 然而，没有更多有效的方式获取 slave 延迟。

请注意，关于 SHOW SLAVE STATUS 的各种限制和参数说明， 请参考 MySQl 的参考手册。

若要禁止插件，在没有找到满足延迟条件的 slave 时产生报警，需要在配置文件 当中设定 master 作为故障处理。如果没有 slave 满足条件，那么故障处理开始启动， 插件会使用 master 去执行语句。

如果没有 slave 满足条件，并且没有启动故障处理，插件将会报警。 这时，语句不会被执行，并且错误信息会被写入连接当中。

Example #5 不设置故障处理

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "127.0.0.1",
                "port": "3306"
            }
        }
    }
}

Example #6 No slave within time limit

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (!$mysqli)
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

/* 若 slave 延迟不超过 4 秒，则从 slave 执行 */
$ret = mysqlnd_ms_set_qos($mysqli,
         MYSQLND_MS_QOS_CONSISTENCY_EVENTUAL,
         MYSQLND_MS_QOS_OPTION_AGE, 4);

if (!$ret)
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

/* Plugin picks any slave, which may or may not have the changes */
if (!$res = $mysqli->query("SELECT item, price FROM daytrade"))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

/* Back to default: use of all slaves and masters permitted */
if (!mysqlnd_ms_set_qos($mysqli, MYSQLND_MS_QOS_CONSISTENCY_EVENTUAL))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
?>

以上例程会输出：

PHP Warning:  mysqli::query(): (mysqlnd_ms) Couldn't find the appropriate slave connection. 0 slaves to choose from. Something is wrong in %s on line %d
PHP Warning:  mysqli::query(): (mysqlnd_ms) No connection selected by the last filter in %s on line %d
[2000] (mysqlnd_ms) No connection selected by the last filter

XA/Distributed Transactions
Global transaction IDs (GTID)
快速入门与例子


Global transaction IDs (GTID)

Note: 版本需求

从 1.2.0-alpha 版本开始客户端 GTID 可以使用，这个功能并不需要在同步集群中使用， 例如 MySQL Cluster。他用于异步集群，例如 MySQL 主从同步。

从 MySQL 5.6.5-m8 版本开始，MySQL 使用内置的 GTID，这需要 1.3.0-alpha 以后版本支持。

PECL/mysqlnd_ms 可以使用自己的 GTID 仿真，或者使用 MySQL 内置的 GTID。无论使用哪种方式， 对于使用服务级别来说都是一样的。他们的区别，在 concepts section 进行说明。

这里先使用插件内部的 GTID 模拟来展示如何使用服务端的副本。

概念和客户端模拟

GTID 是 slave 需要同步的 table 在 master 上基于这个 table 的一个计数器，每当事务提交他都会增加。 这个计数器有两个作用，如果 master 产生故障，他帮助数据库管理员确定使用最新的 slave 来 恢复新的 master。最新的 slave 就是那个数值最高的。应用可以使用 GTID 查询某一次写入， 是否已经在 slave 被同步。

插件可以在每次提交事务的时候，增加 GTID。当然这个 GTID 也可以让应用判断写操作是否同步。 这样就可以实现在 session 一致性服务级别中，不一定从 master 读取数据，也可以从已经同步 的 slave 中获取数据，从而减轻 master 的读负载。

客户端 GTID 模拟有一些限制，可以参考 concepts section 说明。在生产换金钟使用前，请细致全面的理解他的工作原理和概念。相关背景的支持， 不在本参考中进行说明。

首先在 master 建立一个计数器表，并且插入一条记录。插件并不会帮助你建立这个表， 数据库管理员需要帮助你操作。如果表不存在或者有问题，基于错误报告机制， 你可能得不到任何错误信息。

Example #1 在 master 创建计数器表

CREATE TABLE `trx` (
  `trx_id` int(11) DEFAULT NULL,
  `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1
INSERT INTO `trx`(`trx_id`) VALUES (1);

在插件的配置文件中，需要在 global_transaction_id_injection 章节中设定 on_commit 参数。一定要确认在 UPDATE 中使用的表明是可达的，例如：使用上一步创建的表， test.trx 要比 trx 更合适。 这一点非常重要，因为不同的数据库连接，可能的默认数据库选择并不相同。 并且确认，使用连接的用户，有权限对这个表执行 UPDATE 命令。

当 GTID 更新时，打开错误报告。

Example #2 Plugin config: SQL for client-side GTID injection

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "127.0.0.1",
                "port": "3306"
            }
        },
        "global_transaction_id_injection":{
            "on_commit":"UPDATE test.trx SET trx_id = trx_id + 1",
            "report_error":true
        }
    }
}

Example #3 Transparent global transaction ID injection

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (!$mysqli)
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

/* auto commit mode, transaction on master, GTID must be incremented */
if (!$mysqli->query("DROP TABLE IF EXISTS test"))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

/* auto commit mode, transaction on master, GTID must be incremented */
if (!$mysqli->query("CREATE TABLE test(id INT)"))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

/* auto commit mode, transaction on master, GTID must be incremented */
if (!$mysqli->query("INSERT INTO test(id) VALUES (1)"))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

/* auto commit mode, read on slave, no increment */
if (!($res = $mysqli->query("SELECT id FROM test")))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

var_dump($res->fetch_assoc());
?>

以上例程会输出：

array(1) {
  ["id"]=>
  string(1) "1"
}

上面的范例运行 3 条语句在 master 上，他们都是在 autocommit 下执行，这样会引起 3 次 GTID 的增加。每次插件都会在执行语句以前，根据配置中的 UPDATE 设定 增加 GTID。

第四条语句，因为是 SELECT 语句，并不会在 master 上执行， 所以不会引发 master 增加 GTID。

Note: 基于 SQL 的 GTID 如何有效率的工作

在客户端通过 GTID 模拟在每个 SQL 执行的时候处理是很没有效率的做法。 这样做，是为了能够清楚的说明情况，而不是为了执行效率，不要在实际的 生产环境中这样使用。可以在本文中找到更有效率的做法。

Example #4 Plugin config: SQL for fetching GTID

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "127.0.0.1",
                "port": "3306"
            }
        },
        "global_transaction_id_injection":{
            "on_commit":"UPDATE test.trx SET trx_id = trx_id + 1",
            "fetch_last_gtid" : "SELECT MAX(trx_id) FROM test.trx",
            "report_error":true
        }
    }
}

Example #5 Obtaining GTID after injection

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (!$mysqli)
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

/* auto commit mode, transaction on master, GTID must be incremented */
if (!$mysqli->query("DROP TABLE IF EXISTS test"))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

printf("GTID after transaction %s\n", mysqlnd_ms_get_last_gtid($mysqli));

/* auto commit mode, transaction on master, GTID must be incremented */
if (!$mysqli->query("CREATE TABLE test(id INT)"))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

printf("GTID after transaction %s\n", mysqlnd_ms_get_last_gtid($mysqli));
?>

以上例程会输出：

GTID after transaction 7
GTID after transaction 8

应用可以通过插件获取最后一次写操作产生的 GTID。函数mysqlnd_ms_get-last-gtid() 通过在配置文件中 global_transaction_id_injection 章节中 定义的 fetch_last-gtid 方法，返回最后一次 写操作产生的 GTID。函数应该在 GTID 增加后调用。

不建议应用运行自己运行哪些可能产生风险的 SQL 语句，从而增加 GTID。并且，使用函数 可以轻松的将查询 GTID 迁移到其他应用中。例如，使用任何 MySQL 内置的 GTID。

这里展现了一个 SQL 语句获得了他的 GTID 或者比实际执行得到的 GTID 更大的数据。 在 SELECT 和 查询 GTID 之间，可能有其他的客户端执行 SQL 语句，从而增加了 GTID，所以获得的 GTID 可能比实际数据大。

Example #6 Plugin config: Checking for a certain GTID

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "127.0.0.1",
                "port": "3306"
            }
        },
        "global_transaction_id_injection":{
            "on_commit":"UPDATE test.trx SET trx_id = trx_id + 1",
            "fetch_last_gtid" : "SELECT MAX(trx_id) FROM test.trx",
            "check_for_gtid" : "SELECT trx_id FROM test.trx WHERE trx_id >= #GTID",
            "report_error":true
        }
    }
}

Example #7 Session consistency service level and GTID combined

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (!$mysqli)
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

/* autocommit 模式下，在 master 执行，用于增加 GTID */
if (!$mysqli->query("DROP TABLE IF EXISTS test") ||
    !$mysqli->query("CREATE TABLE test(id INT)") ||
    !$mysqli->query("INSERT INTO test(id) VALUES (1)"))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

/* 获取最后一次写入的 GTID */
$gtid = mysqlnd_ms_get_last_gtid($mysqli);

/* Session 一致性，尝试从 slave 读取，而不只从 master 读取 */
if (false == mysqlnd_ms_set_qos($mysqli, MYSQLND_MS_QOS_CONSISTENCY_SESSION, MYSQLND_MS_QOS_OPTION_GTID, $gtid)) {
    die(sprintf("[006] [%d] %s\n", $mysqli->errno, $mysqli->error));
}

/* Either run on master or a slave which has replicated the INSERT */
if (!($res = $mysqli->query("SELECT id FROM test"))) {
    die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
}

var_dump($res->fetch_assoc());
?>

通过 mysqlnd_ms_get_last_gtid() 获取的 GTID 可以被用于 Session 一致性服务级别。通过 mysqlnd_ms_set_qos() 设定 Session 一致性服务级别，他决定从哪里读取写入的数据。在范例中， 通过判断 INSERT 是否已经被同步，来决定 SELECT 从哪个服务器中读取数据，

插件检查配置中的所有 slave 服务器，通过查看 GTID 表中的值，判断是否 INSERT 已经被同步。检查的方法在 global_transaction_id_injection 章节中，使用 check_for_gtid 参数定义。 请注意，这是一种低效，浪费资源的方法。 在 master 的读取压力很大的时候，应用可以零星的采用这种方式，来降低读取压力。

使用服务器端的 GTID

自从 MySQL 5.6.5-m8 版本开始，MySQL 主从同步开始支持服务器端的 GTID。GTID 的 创建和增长由服务器控制，用户可以不再关心这些问题。这也就是说，不需要再添加任何 数据库表用于记录 GTID，也不用设置 on_commit 方法。客户端模拟 的 GTID 不再需要使用。

客户端可以顺畅使用 GTID 完成 Session 一致性服务，运算的方式与上面描述的 GTID 模拟 是一样的。不同的是 check_for_gtid 和 fetch_last_gtid 还是需要进行配置。 请注意，MySQL 5.6.5-m8 是一个研发版本，具体执行细节在实际的运行版本对于这些功能可能有改变。

使用下面的配置，可以上上面讨论过的任何一个脚本，能够利用服务器端的 GTID 正常工作。 函数 mysqlnd_ms_get_last_gtid() 和 mysqlnd_ms_set_qos() 工作也一样正常。不同点在于， 服务器并不采用简单的顺序序列，而是采用一个包含服务器标识号和序列数字的字符串。 所以，用户并不能简单的通过 mysqlnd_ms_get_last_gtid() 得到的顺序判断 GTID。 译者注：从 MySQL 5.6.9 版本开始 GTID_DONE 已经被 GTID_EXECUTED 替代，所以下面的 范例中，应该做相应变更。

Example #8 使用 MySQL 5.6.5-m8 内置 GTID

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "127.0.0.1",
                "port": "3306"
            }
        },
        "global_transaction_id_injection":{
            "fetch_last_gtid" : "SELECT @@GLOBAL.GTID_DONE AS trx_id FROM DUAL",
            "check_for_gtid" : "SELECT GTID_SUBSET('#GTID', @@GLOBAL.GTID_DONE) AS trx_id FROM DUAL",
            "report_error":true
        }
    }
}

服务级别和一致性
Cache integration
快速入门与例子


Cache integration

Note: 版本需求、依赖性和状态

可以从 concepts section 获取更多的内容。

数据库群组可以设定不同的一致性级别。从 1.2.0 版本，我们建议插件仅仅从群组节点选择上 考虑使用的一致性级别。例如，如果使用异步的 MySQL 主从同步，他采用群组的最终一致性， 建议在任何时间通过 mysqlnd_ms_set_quos() 使用 Session 一致性。 这可以参考 服务级别与一致性

Example #1 Recap: quality of service to request read your writes

/* 设定采用 Session 一致性 */
if (!mysqlnd_ms_set_qos($mysqli, MYSQLND_MS_QOS_CONSISTENCY_SESSION))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

假设插件使用最终一致性服务级别，而不采用其他更高要求的一致性策略。那么插件可能使用 通过 TTL 失效策略控制的缓存来替代从数据库节点读取数据。数据库节点和缓存都采用 最终一致性策略，他们可能保存的不是最新的数据。

通过本地缓存替代数据库操作，可以有效的提升性能，降低数据库压力。 如果其他客户端比创建这个缓存条目的客户端更频繁使用他，那么数据库的访问就被降低下来， 从而降低数据库压力。并且，由于本地缓存的速度快于数据库查询，那么整体计算性能就被提升。

Example #2 Plugin config: no special entries for caching

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "127.0.0.1",
                "port": "3306"
            }
        },
    }
}

Example #3 Caching a slave request

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (!$mysqli)
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

if (!$mysqli->query("DROP TABLE IF EXISTS test") ||
    !$mysqli->query("CREATE TABLE test(id INT)") ||
    !$mysqli->query("INSERT INTO test(id) VALUES (1)"))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

/* 确认允许最终一致性，并且设定缓存有效期 (TTL <= 60 seconds) */
if (false == mysqlnd_ms_set_qos($mysqli, MYSQLND_MS_QOS_CONSISTENCY_EVENTUAL, MYSQLND_MS_QOS_OPTION_CACHE, 60)) {
    die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
}

/* 为了让范例工作，我们采用强制性的循环捕捉 slave 操作 */
$attempts = 0;
do {
  /* check if slave has the table */
  if ($res = $mysqli->query("SELECT id FROM test")) {
    break;
  } else if ($mysqli->errno) {
    die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
  }
  /* wait for slave to catch up */
  usleep(200000);
} while ($attempts++ < 10);

/* Query has been run on a slave, result is in the cache */
assert($res);
var_dump($res->fetch_assoc());

/* Served from cache */
$res = $mysqli->query("SELECT id FROM test");
?>

上面的范例说明如何使用缓存功能。通过 mysqlnd_ms_set_qos() 设定最终一致性服务器级别，并且允许使用缓存。然后任何只读的操作都会被放入 缓存中，存活时间通过 mysqlnd_ms_set_qos() 指定。

实际的 TTL 要比通过 mysqlnd_ms_set_qos() 设定的要小，设定值 是他的最大值。插件会在 TTL 上扣除 slave 同步延迟，用于计算实际的 TTL。在范例中， 如果 slave 的同步延迟是 10 秒，TTL 的最大值是 60 秒，那么计算的 TTL 值是 50 秒。 TTL 的计算，对于每一个缓存条目是独立的。

Example #4 Read your writes and caching combined

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (!$mysqli)
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

if (!$mysqli->query("DROP TABLE IF EXISTS test") ||
    !$mysqli->query("CREATE TABLE test(id INT)") ||
    !$mysqli->query("INSERT INTO test(id) VALUES (1)"))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

/* Explicitly allow eventual consistency and caching (TTL <= 60 seconds) */
if (false == mysqlnd_ms_set_qos($mysqli, MYSQLND_MS_QOS_CONSISTENCY_EVENTUAL, MYSQLND_MS_QOS_OPTION_CACHE, 60)) {
    die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
}

/* To make this example work, we must wait for a slave to catch up. Brute force style. */
$attempts = 0;
do {
  /* check if slave has the table */
  if ($res = $mysqli->query("SELECT id FROM test")) {
    break;
  } else if ($mysqli->errno) {
    die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
  }
  /* wait for slave to catch up */
  usleep(200000);
} while ($attempts++ < 10);

assert($res);

/* Query has been run on a slave, result is in the cache */
var_dump($res->fetch_assoc());

/* Served from cache */
if (!($res = $mysqli->query("SELECT id FROM test")))
 die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
var_dump($res->fetch_assoc());

/* Update on master */
if (!$mysqli->query("UPDATE test SET id = 2"))
 die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

/* Read your writes */
if (false == mysqlnd_ms_set_qos($mysqli, MYSQLND_MS_QOS_CONSISTENCY_SESSION)) {
    die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
}

/* Fetch latest data */
if (!($res = $mysqli->query("SELECT id FROM test")))
 die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
var_dump($res->fetch_assoc());
?>

服务设定可以随时改变，用于屏蔽缓存的使用。如果需要，你可以变更为 Session 一致性策略， 这时缓存将不会被使用，并且被更新为最新的数据结果。

Global transaction IDs (GTID)
故障转移
快速入门与例子


故障转移

默认情况下，插件并不会在连接一个服务器失败的时候进行故障处理。这是为了防止 连接状态中的陷阱。 这里建议手动的对连接错误进行处理，你可以捕获这个错误，重新建立连接，执行的你的查询，如同下面展示的那样。

如果连接状态并不是由于你的操作引起的，你可以选择自动进行错误处理或者无视他。 通过配置可以实现，当 master 出现故障，可以在重新连接 master 之前，自动尝试连接 一台 slave 去自动处理故障，或者无视这个错误。因为 自动故障转移 并不是一个十分安全的方式，这里就不做过多讨论了，在 concepts section 中会有更多的说明。

Example #1 手动故障转移，可选自动

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "simulate_slave_failure",
                "port": "0"
            },
            "slave_1": {
                "host": "127.0.0.1",
                "port": 3311
            }
        },
       "filters": { "roundrobin": [] }
    }
 }

Example #2 手动故障转移

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (!$mysqli)
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

$sql = "SELECT 1 FROM DUAL";

/* error handling as it should be done regardless of the plugin */
if (!($res = $link->query($sql))) {
  /* plugin specific: check for connection error */
  switch ($link->errno) {
    case 2002:
    case 2003:
    case 2005:
      printf("Connection error - trying next slave!\n");
      /* load balancer will pick next slave */
      $res = $link->query($sql);
      break;
    default:
      /* no connection error, failover is unlikely to help */
      die(sprintf("SQL error: [%d] %s", $link->errno, $link->error));
      break;
  }
}
if ($res) {
  var_dump($res->fetch_assoc());
}
?>

Cache integration
分区和分片
快速入门与例子


分区和分片

数据库群组是由于各种各样的原因建立的，他可以提升处理能力、容忍错误，并且 提升大量服务器同时工作的的性能。群组有时会组合分区和共享功能，来将大量复杂的任务 分拆成更加简单的任务，更加可控的单元。

插件可以支持各种各样的 MySQL 群组，一些群组会内置一些分区和共享的方法，他们可以 被透明的使用。插件支持最常用的 MySQL 主从同步表过滤和共享 (应用级分区)。

MySQL 主从同步支持过滤方式的分区，他可以让你创建所有数据库同步，或者部分数据库同步。 这样就要求应用能够拥有同样的策略，你可以通过 node_groups 手动的支持这个策略，或者使用实验性质的表过滤器。

从 1.5.0 版本开始，可以通过节点组过滤和 SQL hints 完成手动的分区和共享。 节点组过滤器可以让你将 master 和 slave 命名成一个符号。 范例中， master_0 和 slave_0 被放在一个命名为 Partition_A 的组中。他们能够完全的组成一个群组。 例如，你可以使用一个节点群组用于共享，并且使用使用群组名称作为一个地址共享， 就像 Shard_A_Range_0_100

Example #1 Cluster node groups

{
  "myapp": {
       "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "simulate_slave_failure",
                "port": "0"
            },
            "slave_1": {
                "host": "127.0.0.1",
                "port": 3311
            }
        },
        "filters": {
            "node_groups": {
                "Partition_A" : {
                    "master": ["master_0"],
                    "slave": ["slave_0"]
                }
            },
           "roundrobin": []
        }
    }
}

Example #2 通过 SQL hints 完成手动分区

<?php
function select($mysqli, $msg, $hint = '') {
  /* Note: weak test, two connections to two servers may have the same thread id */
  $sql = sprintf("SELECT CONNECTION_ID() AS _thread, '%s' AS _hint FROM DUAL", $msg);
  if ($hint) {
    $sql = $hint . $sql;
  }
  if (!($res = $mysqli->query($sql))) {
    printf("[%d] %s", $mysqli->errno, $mysqli->error);
    return false;
  }
  $row =  $res->fetch_assoc();
  printf("%d - %s - %s\n", $row['_thread'], $row['_hint'], $sql);
  return true;
}

$mysqli = new mysqli("myapp", "user", "password", "database");
if (!$mysqli)
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

/* All slaves allowed */
select($mysqli, "slave_0");
select($mysqli, "slave_1");

/* only servers of node group "Partition_A" allowed */
select($mysqli, "slave_1", "/*Partition_A*/");
select($mysqli, "slave_1", "/*Partition_A*/");
?>
6804 - slave_0 - SELECT CONNECTION_ID() AS _thread, 'slave1' AS _hint FROM DUAL
2442 - slave_1 - SELECT CONNECTION_ID() AS _thread, 'slave2' AS _hint FROM DUAL
6804 - slave_0 - /*Partition_A*/SELECT CONNECTION_ID() AS _thread, 'slave1' AS _hint FROM DUAL
6804 - slave_0 - /*Partition_A*/SELECT CONNECTION_ID() AS _thread, 'slave1' AS _hint FROM DUAL

默认的，插件使用所有配置的 master 和 slave 进行查询操作。但是如果一个查询，使用 /*node_group*/ 的 SQL hint，那么插件将只使用在 node_group 列出的服务器进行查询操作。所以，SELECT 查询操作，只会在 /*Partition_A*/ 列出的 slave_0 中进行。

故障转移
MySQL Fabric
快速入门与例子


MySQL Fabric

Note: Version requirement and status

Work on supporting MySQL Fabric started in version 1.6. Please, consider the support to be of pre-alpha quality. The manual may not list all features or feature limitations. This is work in progress.

Sharding is the only use case supported by the plugin to date.

Note: MySQL Fabric concepts

Please, check the MySQL reference manual for more information about MySQL Fabric and how to set it up. The PHP manual assumes that you are familiar with the basic concepts and ideas of MySQL Fabric.

MySQL Fabric is a system for managing farms of MySQL servers to achive High Availability and optionally support sharding. Technically, it is a middleware to manage and monitor MySQL servers.

Clients query MySQL Fabric to obtain lists of MySQL servers, their state and their roles. For example, clients can can request a list of slaves for a MySQL Replication group and whether they are ready to handle SQL requests. Another example is a cluster of sharded MySQL servers where the client seeks to know which shard to query for a given table and shard key. If configured to use Fabric, the plugin uses XML RCP over HTTP to obtain the list at runtime from a MySQL Fabric host. The XML remote procedure call itself is done in the background and transparent from a developers point of view.

Instead of listing MySQL servers directly in the plugins configuration file it contains a list of one or more MySQL Fabric hosts

Example #1 Plugin config: Fabric hosts instead of MySQL servers

{
    "myapp": {
        "fabric": {
            "hosts": [
                {
                    "host" : "127.0.0.1",
                    "port" : 8080
                }
            ]
        }
    }
}

Users utilize the new functions mysqlnd_ms_fabric_select_shard() and mysqlnd_ms_fabric_select_global() to switch to the set of servers responsible for a given shard key. Then, the plugin picks an appropriate server for running queries on. When doing so, the plugin takes care of additional load balancing rules set.

The below example assumes that MySQL Fabric has been setup to shard the table test.fabrictest using the id column of the table as a shard key.

Example #2 Manual partitioning using SQL hints

<?php
$mysqli = new mysqli("myapp", "user", "password", "database");
if (!$mysqli)
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

/* Create a global table - a table available on all shards */
mysqlnd_ms_fabric_select_global($mysqli, "test.fabrictest");
if (!$mysqli->query("CREATE TABLE test.fabrictest(id INT NOT NULL PRIMARY KEY)"))
 die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

/* Switch connection to appropriate shard and insert record */
mysqlnd_ms_fabric_select_shard($mysqli, "test.fabrictest", 10);
if (!($res = $mysqli->query("INSERT INTO fabrictest(id) VALUES (10)")))
 die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

/* Try to read newly inserted record */
mysqlnd_ms_fabric_select_shard($mysqli, "test.fabrictest", 10);
if (!($res = $mysqli->query("SELECT id FROM test WHERE id = 10")))
 die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
?>

The example creates the sharded table, inserts a record and reads the record thereafter. All SQL data definition language (DDL) operations on a sharded table must be applied to the so called global server group. Prior to creatingor altering a sharded table, mysqlnd_ms_fabric_select_global() is called to switch the given connection to the corresponsing servers of the global group. Data manipulation (DML) SQL statements must be sent to the shards directly. The mysqlnd_ms_fabric_select_shard() switches a connection to shards handling a certain shard key.

分区和分片
概念
快速入门与例子


概念

Table of Contents

  • Architecture
  • 连接池与切换
  • 事务控制
  • 错误处理
  • 短错误
  • 错误处理
  • 负载均衡
  • Read-write splitting
  • Filter
  • Service level and consistency
  • Global transaction IDs
  • Cache integration
  • Supported clusters
  • XA/Distributed transactions

这里说明关于插件的一些相关概念，与使用数据库集群的 MySQL 主从同步对于开发 的一些影响。为了能够让插件更好的工作，需要阅读和理解这些概念。

MySQL Fabric
Architecture
mysqlnd_ms


Architecture

mysqlnd 作为一个 PHP 扩展完成主从同步和负载均衡。他使用 C 语言编写， 从底层嵌入 PHP。伴随 PHP 解释器的启动，他以模块的方式嵌入 PHP 引擎。 他使用 mysqlnd 名称注册在引擎中， 并且使用 mysqlnd 自己的 C 方法替换系统默认操作。

在 PHP 脚本运行期间，他检查所有通过 mysqlnd 发送给 MySQL 服务器的指令。 如果指令时只读的，那么将会发送给排至的 slave 服务器。通过判断语句 是否以 SELECT 开头，决定他是否是只读指令。或者通过 SQL hints /*ms=slave*/ 指定 slave 运行，或者通过 SQL hints /*ms=last_used*/ 指定通过上一条查询的连接运行。 其他情况下，指令会被发送到 MySQL 主从同步的 master 服务器执行。

为了更好的移植性，应用应该使用 MYSQLND_MS_MASTER_SWITCH, MYSQLND_MS_SLAVE_SWITCH, 和 MYSQLND_MS_LAST_USED_SWITCH mysqlnd_ms 预定义常量, 替代 SQL hints 的使用，例如：/*ms=slave*/。

插件控制所有到 master 和 slave 的链接。对于应用来说，只需要控制一个连接。 然而这个应用控制的链接，其实是插件管理的连接池中的一个。插件代理了这些 到 master 的链接，并且管理很多的到达 slave 的链接。

数据库连接的状态，由事务、状态、事务设定、字符集设定、临时表等内容组成。 插件在事务执行的过程中和自动提交指令执行中，维护同样的链接状态。有效维护这些 状态并不容易，当运行 BEGIN TRANSACTION 指令后，插件将 控制权移交给用户。

概念
连接池与切换
概念


连接池与切换

插件控制 PHP MySQL 链接，完成同步和负载均衡，他并不会改变现有的 PHP MySQL 扩展的方法使用 (mysqli, mysql, 和 PDO_MYSQL) 现有的应用并不需要 更新他们代码，或者使用新的 API，但是若操作行为改变，还是需要一些修改的。

插件结果下面这些扩展对于 MySQL 连接的控制， mysqli, mysql, 和 PDO_MYSQL。 并且为 mysqli, mysql, 和 PDO_MYSQL 提供一个本地的连接池 完成 MySQL 主从同步的 master 和 slave 通讯控制。插件会代理所有的 到达 master 和 slave 的查询请求。 在某一时刻一个连接到 master 的链接，会在稍后变更为 slave 连接，或者 依然保持 master 连接。在执行非事务处理中，控制和替换 PHP MySQL 的网络链接。

每个 MySQL 连接都有他的状态，在连接池中的每个连接可以有不同的状态。 当插件将一个写入连接变更为另外一个的时候，链接状态可能被改变。应用 需要关注这个问题。

下面列出连接状态的内容，他可能并不完整。

  • 事务状态
  • 临时表
  • 表锁
  • Session 系统变量和用户变量
  • 当前使用的数据库 USE 和其他束缚 SQL 指令的状态
  • 预执行语句
  • HANDLER 变量
  • 通过 GET_LOCK () 获得的锁

连接替换将在语句执行前进行，在下一个语句执行以前，插件不会变更连接。

Note: 同步的问题

请参考 MySQL 参考手册中关于 » replication features 的相关内容。一些限制跟这个 PHP 插件无感，但是与 MySQL 的主从同步相关。

广播消息

插件的设计哲学是只有完全控制的链接，插件会在连接池排列连接的状态，或者由于 一些安全因素也会这么做。只有很少的操作改变连接状态会失败，在这样的分类当中。

下面列出了哪些客户端的库，会改变连接状态，并且会将它广播到连接池中所有 打开的链接当中。

任何下面列出的内容被执行，插件会轮循所有打开的 master 和 slave 连接， 轮循会在操作了所有的服务器后停止。这个轮循不会影响服务器连接失败的状态。 库函数的触发器可能以备检测到失败，并且通过用户 API 函数广播。

Library call | Notes | Version
change_user() | Called by the mysqli_change_user() user API call. Also triggered upon reuse of a persistent mysqli connection. | Since 1.0.0.
select_db | Called by the following user API calls: mysql_select_db(), mysql_list_tables(), mysql_db_query(), mysql_list_fields(), mysqli_select_db(). Note, that SQL USE is not monitored. | Since 1.0.0.
set_charset() | Called by the following user API calls: mysql_set_charset(). mysqli_set_charset(). Note, that SQL SET NAMES is not monitored. | Since 1.0.0.
set_server_option() | Called by the following user API calls: mysqli_multi_query(), mysqli_real_query(), mysqli_query(), mysql_query(). | Since 1.0.0.
set_client_option() | Called by the following user API calls: mysqli_options(), mysqli_ssl_set(), mysqli_connect(), mysql_connect(), mysql_pconnect(). | Since 1.0.0.
set_autocommit() | Called by the following user API calls: mysqli_autocommit(), PDO::setAttribute(PDO::ATTR_AUTOCOMMIT). | Since 1.0.0. PHP >= 5.4.0.
ssl_set() | Called by the following user API calls: mysqli_ssl_set(). | Since 1.1.0.

广播和被动连接

连接打开以后，插件无法代理或者记录其上所有的设定。如果采用 lazy connections. 这非常重要。被动连接方式，客户端在发起第一次指令的时候，连接才被建立。 插件默认的采用这种被动连接方式。

下面的这些库调用，将在被动连接建立以后执行。这有助于确信所有连接池中 连接的状态存在可比性。

Library call | Notes | Version
change_user() | User, password and database recorded for future use. | Since 1.1.0.
select_db | Database recorded for future use. | Since 1.1.0.
set_charset() | Calls set_client_option(MYSQL_SET_CHARSET_NAME, charset) on lazy connection to ensure charset will be used upon opening the lazy connection. | Since 1.1.0.
set_autocommit() | Adds SET AUTOCOMMIT=0|1 to the list of init commands of a lazy connection using set_client_option(MYSQL_INIT_COMMAND, "SET AUTOCOMMIT=...%quot;). | Since 1.1.0. PHP >= 5.4.0.
Caution

连接状态

连接状态不仅仅会被 API 调用改变。所以，即使插件监控了所有的 API 调用， 应用也要在这方面关注变化。最后，对于连接状态的维护，是应用应该完成的事情。

字符集和字符串换码

当使用默认的被动连接时，若应用尝试在连接建立以前对 SQL 语句中的字符进行转码， 是不可能完成的。因为连接建立以前，并不知道连接需要的字符集是甚么。

在 1.4.0 以后版本中，通过配置中的 server_charset 设置可以解决这个问题。

需要注意已经转换为某种字符集，但是连接的结果采用了另外一种不同的字符集。 插件控制的链接和连接池中的每个连接可能采用了不同的默认字符集，所以建议配置 服务器采用统一的默认字符集设定。配置文件中的 server_charset 可以很好的处理这种情况，如果使用它，插件将对每一个新打开的链接设定默认的字符集。

Architecture
事务控制
概念


事务控制

事务控制已经从根本上被改变了，一个 SQL 事务是运行在一个数据库服务器中的 一个或者一组 SQL 语句。

默认情况下，插件并不关心 SQL 事务处理，插件会在每个 SQL 执行时进行负载均衡， 这就可能在事务执行的中间更换了连接。这对事务执行来说是不可以的，所以默认 配置的插件并不是事务安全的。

MySQL 负载均衡需要从事务开始到终止时，处于连续的状态。这种连续控制，可以使用 监控 API 调用，或者使用 SQL hints。具体插件可以支持哪种方式，基于您使用的 PHP 版本。API 调用监控，需要 PHP 5.4.0 以上版本。就像其他的 MySQL 负载均衡控制 一样，本插件无法自动识别事务的起始和终止边界。采用 API 监控方式是对现有应用 改变最小的方式。

可以在 examples section 找到使用 SQL hints 和 API 监控的范例。在 API 监控作用下，插件会关注事务的执行。

从 PHP 5.4.0 版本开始，mysqlnd 库允许调用 set_autocommit() 他用于检测 autocommit 设定。

PHP MySQL 扩展调用查询语句 (例如 SET AUTOCOMMIT=0|1) 或者 set_autocommit() 来控制 autocommit 设置。 如果通过 set_autocommit() 来设置，那么插件能够识别事务。 插件无法知道通过查询语句设定的 autocommit 状态。 set_autocommit() 会被 mysqli_autocommit() 和 PDO::setAttribute(PDO::ATTR_AUTOCOMMIT) 调用。

插件的配置 trx_stickiness=master 可以用来让插件识别事务处理。在这种情况下，如果 autocommit 被禁用，那么插件将终止负载均衡， 所有的语句都将交给 master执行，直到 autocommit 被启用。

应用程序若不想针对事务执行设置 SQL hints，那么就需要使用 API 监控来完成对 事务处理的支持，那么请注意一定要使用上面列出的，可以识别 autocommit 状态变化 的 API 调用。

基于 API 的事务处理边界识别，是从 PHP 5.5.0 和 本插件 1.5.0 版本开始的，并且
不仅仅识别 mysqli_autocommit() 也可以识别
mysqli_begin(),mysqli_commit() 和
mysqli_rollback()。

连接池与切换
错误处理
概念


错误处理

应用程序使用本插件，应该针对用户的 API 调用实现一些错误处理。并且由于插件 改变了连接控制，API 调用可能返回不可预期的错误。如果插件被用于连接控制中， 那么连接将不在代表一个独立的网络链接，他是一个连接池。那么一个错误编号和 错误消息将被设置在连接控制中，那么他可能被设置在任何一个实际的连接中。

如果使用默认的被动连接，那么连接再实际查询执行以前是不建立实际连接的。 这样一个执行语句的 API 调用会产生一个连接错误。下面的范例中，当尝试在 slave 中执行一个语句的时候将产生一个错误。连接错误的产生是因为在配置文件中 没有设定一个有效的 slave。

Example #1 Provoking a connection error

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "invalid_host_name",
            }
        },
        "lazy_connections": 1
    }
}

明确的指定被动连接设定只是为了范例目的使用。

Example #2 在查询执行时产生连接错误

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (mysqli_connect_errno())
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

/* 连接 1：在连接中绑定 SQL 用户定义变量，没有 SELECT 所以在 master 上运行 */
if (!$mysqli->query("SET @myrole='master'")) {
 printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
}

/* 连接 2：运行 SELECT 在 slave，产生一个连接错误 */
if (!($res = $mysqli->query("SELECT @myrole AS _role"))) {
 printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
} else {
 $row = $res->fetch_assoc();
 $res->close();
 printf("@myrole = '%s'\n", $row['_role']);
}
$mysqli->close();
?>

以上例程的输出类似于：

PHP Warning:  mysqli::query(): php_network_getaddresses: getaddrinfo failed: Name or service not known in %s on line %d
PHP Warning:  mysqli::query(): [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known (trying to connect via tcp://invalid_host_name:3306) in %s on line %d
[2002] php_network_getaddresses: getaddrinfo failed: Name or service not known

应用程序希望通过有效的错误处理控制这种连接错误。

处于使用的目的，应用程序应该希望控制这些错误，典型的错误内容 2002 (CR_CONNECTION_ERROR) - Can't connect to local MySQL server through socket '%s' (%d), 2003 (CR_CONN_HOST_ERROR) - Can't connect to MySQL server on '%s' (%d) 和 2005 (CR_UNKNOWN_HOST) - Unknown MySQL server host '%s' (%d)。 例如，应用程序可以判断这些错误编号，进而手动的执行某些错误处理。插件并不会自动的进行 这些错误处理，包括 master 错误处理，因为这些并不是透明的操作。

Example #3 产生一个连接错误

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost"
            }
        },
        "slave": {
            "slave_0": {
                "host": "invalid_host_name"
            },
            "slave_1": {
                "host": "192.168.78.136"
            }
        },
        "lazy_connections": 1,
        "filters": {
            "roundrobin": [

            ]
        }
    }
}

明确的指定被动连接只为了进行范例使用，包括使用默认的负载均衡策略 random once。

Example #4 非常基础的错误处理

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (mysqli_connect_errno())
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

/* Connection 1, connection bound SQL user variable, no SELECT thus run on master */
if (!$mysqli->query("SET @myrole='master'")) {
 printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
}

/* 连接 2：第一个 Slave 执行 */
$res = $mysqli->query("SELECT VERSION() AS _version");
/* 强硬的进行错误处理 */
if (2002 == $mysqli->errno || 2003 == $mysqli->errno || 2004 == $mysqli->errno) {
  /* 连接 3：第一个 slave 连接失败，尝试下一个 slave 连接 */
  $res = $mysqli->query("SELECT VERSION() AS _version");
}

if (!$res) {
  printf("ERROR, [%d] '%s'\n", $mysqli->errno, $mysqli->error);
} else {
 /* 从连接 3 中获取错误信息，他并没有错误 */
 printf("SUCCESS, [%d] '%s'\n", $mysqli->errno, $mysqli->error);
 $row = $res->fetch_assoc();
 $res->close();
 printf("version = %s\n", $row['_version']);
}
$mysqli->close();
?>

以上例程的输出类似于：

[1045] Access denied for user 'username'@'localhost' (using password: YES)
PHP Warning:  mysqli::query(): php_network_getaddresses: getaddrinfo failed: Name or service not known in %s on line %d
PHP Warning:  mysqli::query(): [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known (trying to connect via tcp://invalid_host_name:3306) in %s on line %d
SUCCESS, [0] ''
version = 5.6.2-m5-log

由于一些原因，连接控制并不可能很容易在所有网络连接中检查所有的错误。 例如，我们假设在连接池中有 3 个网络链接，一个连接是 master 连接，2个是 slave 链接。 应用程序通过 mysqli_select_db() API 调用改变当前操作数据库， 插件监控到这个函数，并且尝试更改当前的所有连接来统一他们的链接状态。如果 master 已经成功的更改了数据库，两个 slave 连接更改失败，那么在使用第一个 slave 连接的时候， 其中会包含一个连接错误。对于第二个 slave 链接也是一样的，那么在第一个 slave 上的 错误信息将被丢失。

这种情况下，可以通过检查 E_WARNING 类型的错误，或者检查 mysqlnd_ms debug and trace log。

事务控制
短错误
概念


短错误

一些分布式的数据库群组使用短错误。一个短错误只是一段时间内的一个临时错误。 在一定的顶一下，这种忽略短错误并且重新在同一个数据库服务器中进行尝试是 安全的，尝试处理对客户端不产生影响。客户端将不会被迫终止他们的工作，或者去处理 另外一个数据库服务器的错误。他们将进入一个尝试处理错误的循环，而不需要等待错误 信息消失。例如，当使用 MySQL Cluster时，可以看到这种短错误信息。他们并不会被 绑定在特定的群组解决方案中。

插件可以提供在短错误中的自动尝试处理循环。这将提高分布处理的透明度，并且对于 应用程序从一个单独服务器运行一直到数据库服务群组执行变得更加简单。

自动的尝试循环，将不断的尝试，直到用户配置文件指定的次数，并且根据配置指定的 间隔时间进行短暂的等待。如果错误在循环过程中消失，应用程序将不会再看到这个 错误信息。如果错误没有消失，错误将被提交给应用程序进行处理。

下面的范例中，duplicate key 的错误内容在提交给应用程序以前，会被尝试处理 2 次， 两次尝试之间间隔 100 ms。

Example #1 Provoking a transient error

mysqlnd_ms.enable=1
mysqlnd_ms.collect_statistics=1
{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.78.136",
                "port": "3306"
            }
       },
       "transient_error": {
          "mysql_error_codes": [
            1062
          ],
          "max_retries": 2,
          "usleep_retry": 100
       }
    }
}

Example #2 短错误尝试循环

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
if (mysqli_connect_errno())
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

if (!$mysqli->query("DROP TABLE IF EXISTS test") ||
    !$mysqli->query("CREATE TABLE test(id INT PRIMARY KEY)") ||
    !$mysqli->query("INSERT INTO test(id) VALUES (1))")) {
  printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
}

/* Retry loop is completely transparent. Checking statistics is
 the only way to know about implicit retries */
$stats = mysqlnd_ms_get_stats();
printf("Transient error retries before error: %d\n", $stats['transient_error_retries']);

/* Provoking duplicate key error to see statistics change */
if (!$mysqli->query("INSERT INTO test(id) VALUES (1))")) {
  printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
}

$stats = mysqlnd_ms_get_stats();
printf("Transient error retries after error: %d\n", $stats['transient_error_retries']);

$mysqli->close();
?>

以上例程的输出类似于：

Transient error retries before error: 0
[1062] Duplicate entry '1' for key 'PRIMARY'
Transient error retries before error: 2

Because the execution of the retry loop is transparent from a users point of view, the example checks the statistics provided by the plugin to learn about it.

As the example shows, the plugin can be instructed to consider any error transient regardless of the database servers error semantics. The only error that a stock MySQL server considers temporary has the error code 1297. When configuring other error codes but 1297 make sure your configuration reflects the semantics of your clusters error codes.

The following mysqlnd C API calls are monitored by the plugin to check
for transient errors: query(),
change_user(), select_db(),
set_charset(), set_server_option()
prepare(), execute(),
set_autocommit(),
tx_begin(), tx_commit(),
tx_rollback(), tx_commit_or_rollback().
The corresponding user API calls have similar names.

The maximum time the plugin may sleep during the retry loop depends on the function in question. The a retry loop for query(), prepare() or execute() will sleep for up to max_retries * usleep_retry milliseconds.

However, functions that control connection state are dispatched to all all connections. The retry loop settings are applied to every connection on which the command is to be run. Thus, such a function may interrupt program execution for longer than a function that is run on one server only. For example, set_autocommit() is dispatched to connections and may sleep up to (max_retries * usleep_retry) * number_of_open_connections) milliseconds. Please, keep this in mind when setting long sleep times and large retry numbers. Using the default settings of max_retries=1, usleep_retry=100 and lazy_connections=1 it is unlikely that you will ever see a delay of more than 1 second.

错误处理
错误处理
概念


错误处理

默认情况下，错误处理应该由用户来处理，应用程序应该检查数据库函数的返回值并且 处理其中可能产生的错误内容。例如，如果插件为一个只读查询选择了一个已经不可用 的 slave，那么将会在执行以后产生一个错误。

默认：手动处理错误

It is up to the application to handle the error and, if required, re-issue the query to trigger the selection of another slave server for statement execution. The plugin will make no attempts to failover automatically, because the plugin cannot ensure that an automatic failover will not change the state of the connection. For example, the application may have issued a query which depends on SQL user variables which are bound to a specific connection. Such a query might return incorrect results if the plugin would switch the connection implicitly as part of automatic failover. To ensure correct results, the application must take care of the failover, and rebuild the required connection state. Therefore, by default, no automatic failover is performed by the plugin.

A user that does not change the connection state after opening a connection may activate automatic failover. Please note, that automatic failover logic is limited to connection attempts. Automatic failover is not used for already established connections. There is no way to instruct the plugin to attempt failover on a connection that has been connected to MySQL already in the past.

Automatic failover

The failover policy is configured in the plugins configuration file, by using the failover configuration directive.

Automatic and silent failover can be enabled through the failover configuration directive. Automatic failover can either be configured to try exactly one master after a slave failure or, alternatively, loop over slaves and masters before returning an error to the user. The number of connection attempts can be limited and failed hosts can be excluded from future load balancing attempts. Limiting the number of retries and remembering failed hosts are considered experimental features, albeit being reasonable stable. Syntax and semantics may change in future versions.

Please note, since version 1.5.0 automatic failover is disabled for the duration of a transaction if transaction stickiness is enabled and transaction boundaries have been detected. The plugin will not switch connections for the duration of a transaction. It will also not perform automatic and silent failover. Instead an error will be thrown. It is then left to the user to handle the failure of the transaction. Please check, the trx_stickiness documentation how to do this.

A basic manual failover example is provided within the error handling section.

Standby servers

Using weighted load balancing, introduced in PECL/mysqlnd 1.4.0, it is possible to configure standby servers that are sparsely used during normal operations. A standby server that is primarily used as a worst-case standby failover target can be assigned a very low weight/priority in relation to all other servers. As long as all servers are up and running the majority of the workload is assigned to the servers which have hight weight values. Few requests will be directed to the standby system which has a very low weight value.

Upon failure of the servers with a high priority, you can still failover to the standby, which has been given a low load balancing priority by assigning a low weight to it. Failover can be some manually or automatically. If done automatically, you may want to combine it with the remember_failed option.

At this point, it is not possible to instruct the load balancer to direct no requests at all to a standby. This may not be much of a limitation given that the highest weight you can assign to a server is 65535. Given two slaves, of which one shall act as a standby and has been assigned a weight of 1, the standby will have to handle far less than one percent of the overall workload.

Failover and primary copy

Please note, if using a primary copy cluster, such as MySQL Replication, it is difficult to do connection failover in case of a master failure. At any time there is only one master in the cluster for a given dataset. The master is a single point of failure. If the master fails, clients have no target to fail over write requests. In case of a master outage the database administrator must take care of the situation and update the client configurations, if need be.

短错误
负载均衡
概念


负载均衡

有 4 中复杂均衡策略，可以用于支持 MySQL slave 的配置。

random

当执行语句的时候随机选择一个服务器。

random once (默认值)

当第一个查询执行的时候，随机选择一个服务器，在本页面随后的查询中， 使用相同的一个服务器连接。

这是默认值，并且这种方式对于连接状态信息可能产生的变数影响最小。

round robin

轮循配置中的所有服务器。

user-defined via callback

可以用于制定任何一种其他的策略。

可以使用 random, roundrobin, 和 user filters 在插件的配置中，指定使用的 负载均衡策略。

服务器可以被设定权重。若果一个服务器的权重被设定为 2，那么在大量的操作后，可以看到 他使用的次数将是那些权重为 1 的服务器使用的 2 倍。这种优先级信息可以被非常方便的 在 heterogenous 环境中设定。例如，希望在一个更好的设备上执行更多查询， 或者希望在就近的设备中进行更多的查询，等等这些各种各样的不同原因使用。

错误处理
Read-write splitting
概念


Read-write splitting

The plugin executes read-only statements on the configured MySQL slaves, and all other queries on the MySQL master. Statements are considered read-only if they either start with SELECT, the SQL hint /*ms=slave*/, or if a slave had been chosen for running the previous query and the query starts with the SQL hint /*ms=last_used*/. In all other cases, the query will be sent to the MySQL replication master server. It is recommended to use the constants MYSQLND_MS_SLAVE_SWITCH, MYSQLND_MS_MASTER_SWITCH and MYSQLND_MS_LAST_USED_SWITCH instead of /*ms=slave*/. See also the list of mysqlnd_ms constants.

SQL hints are a special kind of standard compliant SQL comments. The plugin does check every statement for certain SQL hints. The SQL hints are described within the mysqlnd_ms constants documentation, constants that are exported by the extension. Other systems involved with the statement processing, such as the MySQL server, SQL firewalls, and SQL proxies, are unaffected by the SQL hints, because those systems are designed to ignore SQL comments.

The built-in read-write splitter can be replaced by a user-defined filter, see also the user filter documentation.

A user-defined read-write splitter can request the built-in logic to send a statement to a specific location, by invoking mysqlnd_ms_is_select().

Note:

The built-in read-write splitter is not aware of multi-statements. Multi-statements are seen as one statement. The splitter will check the beginning of the statement to decide where to run the statement. If, for example, a multi-statement begins with SELECT 1 FROM DUAL; INSERT INTO test(id) VALUES (1); ... the plugin will run it on a slave although the statement is not read-only.

负载均衡
Filter
概念


Filter

Note: Version requirement

Filters exist as of mysqlnd_ms version 1.1.0-beta.

filters. PHP applications that implement a MySQL replication cluster must first identify a group of servers in the cluster which could execute a statement before the statement is executed by one of the candidates. In other words: a defined list of servers must be filtered until only one server is available.

The process of filtering may include using one or more filters, and filters can be chained. And they are executed in the order they are defined in the plugins configuration file.

Note: Explanation: comparing filter chaining to pipes

The concept of chained filters can be compared to using pipes to connect command line utilities on an operating system command shell. For example, an input stream is passed to a processor, filtered, and then transferred to be output. Then, the output is passed as input to the next command, which is connected to the previous using the pipe operator.

Available filters:

  • Load balancing filters: random and roundrobin.
  • Selection filter: user, user_multi, quality_of_service.

The random filter implements the 'random' and 'random once' load balancing policies. The 'round robin' load balancing can be configured through the roundrobin filter. Setting a 'user defined callback' for server selection is possible with the user filter. The quality_of_service filter finds cluster nodes capable of delivering a certain service, for example, read-your-writes or, not lagging more seconds behind the master than allowed.

Filters can accept parameters to change their behaviour. The random filter accepts an optional sticky parameter. If set to true, the filter changes load balancing from random to random once. Random picks a random server every time a statement is to be executed. Random once picks a random server when the first statement is to be executed and uses the same server for the rest of the PHP request.

One of the biggest strength of the filter concept is the possibility to chain filters. This strength does not become immediately visible because tje random, roundrobin and user filters are supposed to output no more than one server. If a filter reduces the list of candidates for running a statement to only one server, it makes little sense to use that one server as input for another filter for further reduction of the list of candidates.

An example filter sequence that will fail:

  • Statement to be executed: SELECT 1 FROM DUAL. Passed to all filters.
  • All configured nodes are passed as input to the first filter. Master nodes: master_0. Slave nodes:slave_0, slave_1
  • Filter: random, argument sticky=1. Picks a random slave once to be used for the rest of the PHP request. Output: slave_0.
  • Output of slave_0 and the statement to be executed is passed as input to the next filter. Here: roundrobin, server list passed to filter is: slave_0.
  • Filter: roundrobin. Server list consists of one server only, round robin will always return the same server.
If trying to use such a filter sequence, the plugin may emit a warning like (mysqlnd_ms) Error while creating filter '%s' . Non-multi filter '%s' already created. Stopping in %s on line %d. Furthermore, an appropriate error on the connection handle may be set.

A second type of filter exists: multi filter. A multi filter emits zero, one or multiple servers after processing. The quality_of_service filter is an example. If the service quality requested sets an upper limit for the slave lag and more than one slave is lagging behind less than the allowed number of seconds, the filter returns more than one cluster node. A multi filter must be followed by other to further reduce the list of candidates for statement execution until a candidate is found.

A filter sequence with the quality_of_service multi filter followed by a load balancing filter.

  • Statement to be executed: SELECT sum(price) FROM orders WHERE order_id = 1. Passed to all filters.
  • All configured nodes are passed as input to the first filter. Master nodes: master_0. Slave nodes: slave_0, slave_1, slave_2, slave_3
  • Filter: quality_of_service, rule set: session_consistency (read-your-writes) Output: master_0
  • Output of master_0 and the statement to be executed is passed as input to the next filter, which is roundrobin.
  • Filter: roundrobin. Server list consists of one server. Round robin selects master_0.

A filter sequence must not end with a multi filter. If trying to use a filter sequence which ends with a multi filter the plugin may emit a warning like (mysqlnd_ms) Error in configuration. Last filter is multi filter. Needs to be non-multi one. Stopping in %s on line %d. Furthermore, an appropriate error on the connection handle may be set.

Note: Speculation towards the future: MySQL replication filtering

In future versions, there may be additional multi filters. For example, there may be a table filter to support MySQL replication filtering. This would allow you to define rules for which database or table is to be replicated to which node of a replication cluster. Assume your replication cluster consists of four slaves (slave_0, slave_1, slave_2, slave_3) two of which replicate a database named sales (slave_0, slave_1). If the application queries the database slaves, the hypothetical table filter reduces the list of possible servers to slave_0 and slave_1. Because the output and list of candidates consists of more than one server, it is necessary and possible to add additional filters to the candidate list, for example, using a load balancing filter to identify a server for statement execution.

Read-write splitting
Service level and consistency
概念


Service level and consistency

Note: Version requirement

Service levels have been introduced in mysqlnd_ms version 1.2.0-alpha. mysqlnd_ms_set_qos() requires PHP 5.4.0 or newer.

The plugin can be used with different kinds of MySQL database clusters. Different clusters can deliver different levels of service to applications. The service levels can be grouped by the data consistency levels that can be achieved. The plugin knows about:

  • eventual consistency
  • session consistency
  • strong consistency

Depending how a cluster is used it may be possible to achieve higher service levels than the default one. For example, a read from an asynchronous MySQL replication slave is eventual consistent. Thus, one may say the default consistency level of a MySQL replication cluster is eventual consistency. However, if the master only is used by a client for reading and writing during a session, session consistency (read your writes) is given. PECL mysqlnd 1.2.0 abstracts the details of choosing an appropriate node for any of the above service levels from the user.

Service levels can be set through the qualify-of-service filter in the plugins configuration file and at runtime using the function mysqlnd_ms_set_qos().

The plugin defines the different service levels as follows.

Eventual consistency is the default service provided by an asynchronous cluster, such as classical MySQL replication. A read operation executed on an arbitrary node may or may not return stale data. The applications view of the data is eventual consistent.

Session consistency is given if a client can always read its own writes. An asynchronous MySQL replication cluster can deliver session consistency if clients always use the master after the first write or never query a slave which has not yet replicated the clients write operation.

The plugins understanding of strong consistency is that all clients always see the committed writes of all other clients. This is the default when using MySQL Cluster or any other cluster offering synchronous data distribution.

Service level parameters

Eventual consistency and session consistency service level accept parameters.

Eventual consistency is the service provided by classical MySQL replication. By default, all nodes qualify for read requests. An optional age parameter can be given to filter out nodes which lag more than a certain number of seconds behind the master. The plugin is using SHOW SLAVE STATUS to measure the lag. Please, see the MySQL reference manual to learn about accuracy and reliability of the SHOW SLAVE STATUS command.

Session consistency (read your writes) accepts an optional GTID parameter to consider reading not only from the master but also from slaves which already have replicated a certain write described by its transaction identifier. This way, when using asynchronous MySQL replication, read requests may be load balanced over slaves while still ensuring session consistency.

The latter requires the use of client-side global transaction id injection.

Advantages of the new approach

The new approach supersedes the use of SQL hints and the configuration option master_on_write in some respects. If an application running on top of an asynchronous MySQL replication cluster cannot accept stale data for certain reads, it is easier to tell the plugin to choose appropriate nodes than prefixing all read statements in question with the SQL hint to enforce the use of the master. Furthermore, the plugin may be able to use selected slaves for reading.

The master_on_write configuration option makes the plugin use the master after the first write (session consistency, read your writes). In some cases, session consistency may not be needed for the rest of the session but only for some, few read operations. Thus, master_on_write may result in more read load on the master than necessary. In those cases it is better to request a higher than default service level only for those reads that actually need it. Once the reads are done, the application can return to default service level. Switching between service levels is only possible using mysqlnd_ms_set_qos().

Performance considerations

A MySQL replication cluster cannot tell clients which slaves are capable of delivering which level of service. Thus, in some cases, clients need to query the slaves to check their status. PECL mysqlnd_ms transparently runs the necessary SQL in the background. However, this is an expensive and slow operation. SQL statements are run if eventual consistency is combined with an age (slave lag) limit and if session consistency is combined with a global transaction ID.

If eventual consistency is combined with an maximum age (slave lag), the plugin selects candidates for statement execution and load balancing for each statement as follows. If the statement is a write all masters are considered as candidates. Slaves are not checked and not considered as candidates. If the statement is a read, the plugin transparently executes SHOW SLAVE STATUS on every slaves connection. It will loop over all connections, send the statement and then start checking for results. Usually, this is slightly faster than a loop over all connections in which for every connection a query is send and the plugin waits for its results. A slave is considered a candidate if SHOW SLAVE STATUS reports Slave_IO_Running=Yes, Slave_SQL_Running=Yes and Seconds_Behind_Master is less or equal than the allowed maximum age. In case of an SQL error, the plugin emits a warning but does not set an error on the connection. The error is not set to make it possible to use the plugin as a drop-in.

If session consistency is combined with a global transaction ID, the plugin executes the SQL statement set with the fetch_last_gtid entry of the global_transaction_id_injection section from the plugins configuration file. Further details are identical to those described above.

In version 1.2.0 no additional optimizations are done for executing background queries. Future versions may contain optimizations, depending on user demand.

If no parameters and options are set, no SQL is needed. In that case, the plugin consider all nodes of the type shown below.

  • eventual consistency, no further options set: all masters, all slaves
  • session consistency, no further options set: all masters
  • strong consistency (no options allowed): all masters

Throttling

The quality of service filter can be combined with Global transaction IDs to throttle clients. Throttling does reduce the write load on the master by slowing down clients. If session consistency is requested and global transactions idenentifier are used to check the status of a slave, the check can be done in two ways. By default a slave is checked and skipped immediately if it does not match the criteria for session consistency. Alternatively, the plugin can wait for a slave to catch up to the master until session consistency is possible. To enable the throttling, you have to set wait_for_gtid_timeout configuration option.

Filter
Global transaction IDs
概念


Global transaction IDs

Note: Version requirement

Client side global transaction ID injection exists as of mysqlnd_ms version 1.2.0-alpha. Transaction boundaries are detected by monitoring API calls. This is possible as of PHP 5.4.0. Please, see also Transaction handling.

As of MySQL 5.6.5-m8 the MySQL server features built-in global transaction identifiers. The MySQL built-in global transaction ID feature is supported by PECL/mysqlnd_ms 1.3.0-alpha or later. Neither are client-side transaction boundary monitoring nor any setup activities required if using the server feature.

Idea and client-side emulation

PECL/mysqlnd_ms can do client-side transparent global transaction ID injection. In its most basic form, a global transaction identifier is a counter which is incremented for every transaction executed on the master. The counter is held in a table on the master. Slaves replicate the counter table.

In case of a master failure a database administrator can easily identify the most recent slave for promiting it as a new master. The most recent slave has the highest transaction identifier.

Application developers can ask the plugin for the global transaction identifier (GTID) for their last successful write operation. The plugin will return an identifier that refers to an transaction no older than that of the clients last write operation. Then, the GTID can be passed as a parameter to the quality of service (QoS) filter as an option for session consistency. Session consistency ensures read your writes. The filter ensures that all reads are either directed to a master or a slave which has replicated the write referenced by the GTID.

When injection is done

The plugin transparently maintains the GTID table on the master. In autocommit mode the plugin injects an UPDATE statement before executing the users statement for every master use. In manual transaction mode, the injection is done before the application calls commit() to close a transaction. The configuration option report_error of the GTID section in the plugins configuration file is used to control whether a failed injection shall abort the current operation or be ignored silently (default).

Please note, the PHP version requirements for transaction boundary monitoring and their limits.

Limitations

Client-side global transaction ID injection has shortcomings. The potential issues are not specific to PECL/mysqlnd_ms but are rather of general nature.

  • Global transaction ID tables must be deployed on all masters and replicas.
  • The GTID can have holes. Only PHP clients using the plugin will maintain the table. Other clients will not.
  • Client-side transaction boundary detection is based on API calls only.
  • Client-side transaction boundary detection does not take implicit commit into account. Some MySQL SQL statements cause an implicit commit and cannot be rolled back.

Using server-side global transaction identifier

Starting with PECL/mysqlnd_ms 1.3.0-alpha the MySQL 5.6.5-m8 or newer built-in global transaction identifier feature is supported. Use of the server feature lifts all of the above listed limitations. Please, see the MySQL Reference Manual for limitations and preconditions for using server built-in global transaction identifiers.

Whether to use the client-side emulation or the server built-in functionality is a question not directly related to the plugin, thus it is not discussed in depth. There are no plans to remove the client-side emulation and you can continue to use it, if the server-side solution is no option. This may be the case in heterogenous environments with old MySQL server or, if any of the server-side solution limitations is not acceptable.

From an applications perspective there is hardly a difference in using one or the other approach. The following properties differ.

  • Client-side emulation, as shown in the manual, is using an easy to compare sequence number for global transactions. Multi-master is not handled to keep the manual examples easy. Server-side built-in feature is using a combination of a server identifier and a sequence number as a global transaction identifier. Comparison cannot use numeric algebra. Instead a SQL function must be used. Please, see the MySQL Reference Manual for details.
  • Plugin global transaction ID statistics are only available with client-side emulation because they monitor the emulation.

Note: Global transaction identifiers in distributed systems

Global transaction identifiers can serve multiple purposes in the context of distributed systems, such as a database cluster. Global transaction identifiers can be used for, for example, system wide identification of transactions, global ordering of transactions, heartbeat mechanism and for checking the replication status of replicas. PECL/mysqlnd_ms, a clientside driver based software, does focus on using GTIDs for tasks that can be handled at the client, such as checking the replication status of replicas for asynchronous replication setups.

Service level and consistency
Cache integration
概念


Cache integration

Note: 版本需求

功能需要 PECL/mysqlnd_ms 1.3.0-beta 以上版本，和 PECL/mysqlnd_qc 1.1.0-alpha 以上版本。PECL/mysqlnd_ms 必须编译的时候支持这个功能，需要 PHP 5.4.0 以上版本。

Note: Setup: extension load order

PECL/mysqlnd_ms 必须在 PECL/mysqlnd_qc 前面装载。

Note: 功能稳定性

继承的缓存提供 beta 品质。

Note: 适用的 MySQL 集群

这个功能主要为 MySQL 主从同步提供支持，目前不支持其他的 MySQL 集群方式。如果用它 替代客户端查询缓存，用户必须手动控制 PECL/mysqlnd_qc。

Support for MySQL replication clusters (asynchronous primary copy) is the main focus of PECL/mysqlnd_ms. The slaves of a MySQL replication cluster may or may not reflect the latest updates from the master. Slaves are asynchronous and can lag behind the master. A read from a slave is eventual consistent from a cluster-wide perspective.

The same level of consistency is offered by a local cache using time-to-live (TTL) invalidation strategy. Current data or stale data may be served. Eventually, data searched for in the cache is not available and the source of the cache needs to be accessed.

Given that both a MySQL Replication slave (asynchronous secondary) and a local TTL-driven cache deliver the same level of service it is possible to transparently replace a remote database access with a local cache access to gain better possibility.

As of PECL/mysqlnd_ms 1.3.0-beta the plugin is capable of transparently controlling PECL/mysqlnd_ms 1.1.0-alpha or newer to cache a read-only query if explicitly allowed by setting an appropriate quality of service through mysqlnd_ms_set_qos(). Please, see the quickstart for a code example. Both plugins must be installed, PECL/mysqlnd_ms must be compiled to support the cache feature and PHP 5.4.0 or newer has to be used.

Applications have full control of cache usage and can request fresh data at any time, if need be. Thec ache usage can be enabled and disabled time during the execution of a script. The cache will be used if mysqlnd_ms_set_qos() sets the quality of service to eventual consistency and enables cache usage. Cache usage is disabled by requesting higher consistency levels, for example, session consistency (read your writes). Once the quality of service has been relaxed to eventual consistency the cache can be used again.

If caching is enabled for a read-only statement, PECL/mysqlnd_ms may inject SQL hints to control caching by PECL/mysqlnd_qc. It may modify the SQL statement it got from the application. Subsequent SQL processors are supposed to ignore the SQL hints. A SQL hint is a SQL comment. Comments must not be ignored, for example, by the database server.

The TTL of a cache entry is computed on a per statement basis. Applications set an maximum age for the data they want to retrieve using mysqlnd_ms_set_qos(). The age sets an approximate upper limit of how many seconds the data returned may lag behind the master.

The following logic is used to compute the actual TTL if caching is enabled. The logic takes the estimated slave lag into account for choosing a TTL. If, for example, there are two slaves lagging 5 and 10 seconds behind and the maximum age allowed is 60 seconds, the TTL is set to 50 seconds. Please note, the age setting is no more than an estimated guess.

  • Check whether the statement is read-only. If not, don't cache.
  • If caching is enabled, check the slave lag of all configured slaves. Establish slave connections if none exist so far and lazy connections are used.
  • Send SHOW SLAVE STATUS to all slaves. Do not wait for the first slave to reply before sending to the second slave. Clients often wait long for replies, thus we send out all requests in a burst before fetching in a second stage.
  • Loop over all slaves. For every slave wait for its reply. Do not start checking another slave before the currently waited for slave has replied. Check for Slave_IO_Running=Yes and Slave_SQL_Running=Yes. If both conditions hold true, fetch the value of Seconds_Behind_Master. In case of any errors or if conditions fail, set an error on the slave connection. Skip any such slave connection for the rest of connection filtering.
  • Search for the maximum value of Seconds_Behind_Master from all slaves that passed the previous conditions. Subtract the value from the maximum age provided by the user with mysqlnd_ms_set_qos(). Use the result as a TTL.
  • The filtering may sort out all slaves. If so, the maximum age is used as TTL, because the maximum lag found equals zero. It is perfectly valid to sort out all slaves. In the following it is up to subsequent filter to decide what to do. The built-in load balancing filter will pick the master.
  • Inject the appropriate SQL hints to enable caching by PECL/mysqlnd_qc.
  • Proceed with the connection filtering, e.g. apply load balancing rules to pick a slave.
  • PECL/mysqlnd_qc is loaded after PECL/mysqlnd_ms by PHP. Thus, it will see all query modifications of PECL/mysqlnd_ms and cache the query if instructed to do so.

The algorithm may seem expensive. SHOW SLAVE STATUS is a very fast operation. Given a sufficient number of requests and cache hits per second the cost of checking the slaves lag can easily outweight the costs of the cache decision.

Suggestions on a better algorithm are always welcome.

Global transaction IDs
Supported clusters
概念


Supported clusters

Any application using any kind of MySQL cluster is faced with the same tasks:

  • Identify nodes capable of executing a given statement with the required service level
  • Load balance requests within the list of candidates
  • Automatic fail over within candidates, if needed

The plugin is optimized for fulfilling these tasks in the context of a classical asynchronous MySQL replication cluster consisting of a single master and many slaves (primary copy). When using classical, asynchronous MySQL replication all of the above listed tasks need to be mastered at the client side.

Other types of MySQL cluster may have lower requirements on the application side. For example, if all nodes in the cluster can answer read and write requests, no read-write splitting needs to be done (multi-master, update-all). If all nodes in the cluster are synchronous, they automatically provide the highest possible quality of service which makes choosing a node easier. In this case, the plugin may serve the application after some reconfiguration to disable certain features, such as built-in read-write splitting.

Note: Documentation focus

The documentation focusses describing the use of the plugin with classical asynchronous MySQL replication clusters (primary copy). Support for this kind of cluster has been the original development goal. Use of other clusters is briefly described below. Please note, that this is still work in progress.

Primary copy (MySQL Replication)

This is the primary use case of the plugin. Follow the hints given in the descriptions of each feature.

  • Configure one master and one or more slaves. Server configuration details are given in the setup section.
  • Use random load balancing policy together with the sticky flag.
  • If you do not plan to use the service level API calls, add the master on write flag.
  • Please, make yourself aware of the properties of automatic failover before adding a failover directive.
  • Consider the use of trx_stickiness to execute transactions on the primary only. Please, read carefully how it works before you rely on it.

Example #1 Enabling the plugin (php.ini)

mysqlnd_ms.enable=1
mysqlnd_ms.config_file=/path/to/mysqlnd_ms_plugin.ini

Example #2 Basic plugin configuration (mysqlnd_ms_plugin.ini) for MySQL Replication

{
  "myapp": {
    "master": {
      "master_1": {
        "host": "localhost",
        "socket": "\/tmp\/mysql57.sock"
      }
    },
    "slave": {
      "slave_0": {
        "host": "127.0.0.1",
        "port": 3308
      },
      "slave_1": {
        "host": "192.168.2.28",
        "port": 3306
      }
    },
    "filters": {
      "random": {
        "sticky": "1"
      }
    }
  }
}

Primary copy with multi primaries (MMM - MySQL Multi Master)

MySQL Replication allows you to create cluster topologies with multiple masters (primaries). Write-write conflicts are not handled by the replication system. This is no update anywhere setup. Thus, data must be partitioned manually and clients must redirected in accordance to the partitioning rules. The recommended setup is equal to the sharding setup below.

Manual sharding, possibly combined with primary copy and multiple primaries

Use SQL hints and the node group filter for clusters that use data partitioning but leave query redirection to the client. The example configuration shows a multi master setup with two shards.

Example #3 Multiple primaries - multi master (php.ini)

mysqlnd_ms.enable=1
mysqlnd_ms.config_file=/path/to/mysqlnd_ms_plugin.ini
mysqlnd_ms.multi_master=1

Example #4 Primary copy with multiple primaries and paritioning

{
  "myapp": {
    "master": {
      "master_1": {
        "host": "localhost",
        "socket": "\/tmp\/mysql57.sock"
      }
      "master_2": {
        "host": "192.168.2.27",
        "socket": "3306"
      }
    },
    "slave": {
      "slave_1": {
        "host": "127.0.0.1",
        "port": 3308
      },
      "slave_2": {
        "host": "192.168.2.28",
        "port": 3306
      }
    },
    "filters": {
      "node_groups": {
        "Partition_A" : {
          "master": ["master_1"],
          "slave": ["slave_1"]
        },
        "Partition_B" : {
          "master": ["master_2"],
          "slave": ["slave_2"]
        }
      },
      "roundrobin": []
    }
  }
}

The plugin can also be used with a loose collection of unrelated shards. For such a cluster, configure masters only and disable read write splitting. The nodes of such a cluster are called masters in the plugin configuration as they accept both reads and writes for their partition.

Using synchronous update everywhere clusters such as MySQL Cluster

MySQL Cluster is a synchronous cluster solution. All cluster nodes accept read and write requests. In the context of the plugin, all nodes shall be considered as masters.

Use the load balancing and fail over features only.

  • Disable the plugins built-in read-write splitting.
  • Configure masters only.
  • Consider random once load balancing strategy, which is the plugins default. If random once is used, only masters are configured and no SQL hints are used to force using a certain node, no connection switches will happen for the duration of a web request. Thus, no special handling is required for transactions. The plugin will pick one master at the beginning of the PHP script and use it until the script terminates.
  • Do not set the quality of service. All nodes have all the data. This automatically gives you the highest possible service quality (strong consistency).
  • Do not enable client-side global transaction injection. It is neither required to help with server-side fail over nor to assist the quality of service filter choosing an appropriate node.

Disabling built-in read-write splitting.

  • Set mysqlnd_ms.disable_rw_split=1
  • Do not use SQL hints to enforce the use of slaves

Configure masters only.

  • Set mysqlnd_ms.multi_master=1.
  • Do not configure any slaves.
  • Set failover=loop_before_master in the plugins configuration file to avoid warnings about the empty slave list and to make the failover logic loop over all configured masters before emitting an error. Please, note the warnings about automatic failover given in the previous sections.

Example #5 Multiple primaries - multi master (php.ini)

mysqlnd_ms.enable=1
mysqlnd_ms.config_file=/path/to/mysqlnd_ms_plugin.ini
mysqlnd_ms.multi_master=1
mysqlnd_ms.disable_rw_split=1

Example #6 Synchronous update anywhere cluster

"myapp": {
    "master": {
      "master_1": {
        "host": "localhost",
        "socket": "\/tmp\/mysql57.sock"
      },
      "master_2": {
        "host": "192.168.2.28",
        "port": 3306
      }
    },
    "slave": {
    },
    "filters": {
      "roundrobin": {
      }
    },
    "failover": {
      "strategy": "loop_before_master",
      "remember_failed": true
    }
  }
}

If running an update everywhere cluster that has no built-in partitioning to avoid hot spots and high collision rates, consider using the node groups filter to keep updates on a frequently accessed table on one of the nodes. This may help to reduce collision rates and thus improve performance.

Cache integration
XA/Distributed transactions
概念


XA/Distributed transactions

Note: Version requirement

XA related functions have been introduced in PECL/mysqlnd_ms version 1.6.0-alpha.

Note: Early adaptors wanted

The feature is currently under development. There may be issues and/or feature limitations. Do not use in production environments, although early lab tests indicate reasonable quality.

Please, contact the development team if you are interested in this feature. We are looking for real life feedback to complement the feature.

Below is a list of some feature restrictions.

  • The feature is not yet compatible with the MySQL Fabric support . This limitation is soon to be lifted.

    XA transaction identifier are currently restricted to numbers. This limitation will be lifted upon request, it is a simplification used during the initial implementation.

Note: MySQL server restrictions

The XA support by the MySQL server has some restrictions. Most noteably, the servers binary log may lack changes made by XA transactions in case of certain errors. Please, see the MySQL manual for details.

XA/Distributed transactions can spawn multiple MySQL servers. Thus, they may seem like a perfect tool for sharded MySQL clusters, for example, clusters managed with MySQL Fabric. PECL/mysqlnd_ms hides most of the SQL commands to control XA transactions and performs automatic administrative tasks in cases of errors, to provide the user with a comprehensive API. Users should setup the plugin carefully and be well aware of server restrictions prior to using the feature.

Example #1 General pattern for XA transactions

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");

/* BEGIN */
mysqlnd_ms_xa_begin($mysqli, 1 /* xa id */);

/* run queries on various servers */
$mysqli->query("UPDATE some_table SET col_a = 1");
...

/* COMMIT */
mysqlnd_ms_xa_commit($link, 1);
?>

XA transactions use the two-phase commit protocol. The two-phase commit protocol is a blocking protocol. During the first phase participating servers begin a transaction and the client carries out its work. This phase is followed by a second voting phase. During voting, the servers first make a firm promise that they are ready to commit the work even in case of their possible unexpected failure. Should a server crash in this phase, it will still recall the aborted transaction after recover and wait for the client to decide on whether it shall be committed or rolled back.

Should a client that has initiated a global transaction crash after all the participating servers gave their promise to be ready to commit, then the servers must wait for a decision. The servers are not allowed to uniliterally decide on the transaction.

A client crash or disconnect from a participant, a server crash or server error during the fist phase of the protocol is uncritical. In most cases, the server will forget about the XA transaction and its work is rolled back. Additionally, the plugin tries to reach out to as many participants as it can to instruct the server to roll back the work immediately. It is not possible to disable this implicit rollback carried out by PECL/mysqlnd_ms in case of errors during the first phase of the protocol. This design decision has been made to keep the implementation simple.

An error during the second phase of the commit protocol can develop into a more severe situation. The servers will not forget about prepared but unfinished transactions in all cases. The plugin will not attempt to solve these cases immediately but waits for optional background garbage collection to ensure progress of the commit protocol. It is assumed that a solution will take significant time as it may include waiting for a participating server to recover from a crash. This time span may be longer than a developer and end user expects when trying to commit a global transaction with mysqlnd_ms_xa_commit(). Thus, the function returns with the unfinished global transaction still requiring attention. Please, be warned that at this point, it is not yet clear whether the global transaction will be committed or rolled back later on.

Errors during the second phase can be ignored, handled by yourself or solved by the build-int garbage collection logic. Ignoring them is not recommended as you may experience unfinished global transactions on your servers that block resources virtually indefinetly. Handling the errors requires knowing the participants, checking their state and issueing appropriate SQL commands on them. There are no user API calls to expose this very information. You will have to configure a state store and make the plugin record its actions in it to receive the desired facts.

Please, see the quickstart and related plugin configuration file settings for an example how to configure a state. In addition to configuring a state store, you have to setup some SQL tables. The table definitions are given in the description of the plugin configuration settings.

Setting up and configuring a state store is also a precondition for using the built-in garbage collection for XA transactions that fail during the second commit phase. Recording information about ongoing XA transactions is an unavoidable extra task. The extra task consists of updating the state store after each and every operation that changes the state of the global transaction itself (started, committed, rolled back, errors and aborts), the addition of participants (host, optionally user and password required to connect) and any changes to a participants state. Please note, depending on configuration and your security policies, these recordings may be considered sensitive. It is therefore recommended to restrict access to the state store. Unless the state store itself becomes overloaded, writing the state information may contribute noteworthy to the runtime but should overall be only a minor factor.

It is possible that the effort it takes to implement your own routines for handling XA transactions that failed during the second commit phase exceeds the benefits of using the XA feature of PECL/mysqlnd_ms in the first place. Thus, the manual focussed on using the built-on garbage collection only.

Garbage collection can be triggered manually or automatically in the background. You may want to call mysqlnd_ms_xa_gc() immediately after a commit failure to attempt to solve any failed but still open global transactions as soon as possible. You may also decide to disable the automatic background garbage collection, implement your own rule set for invoking the built-in garbage collection and trigger it when desired.

By default the plugin will start the garbage collection with a certain probability in the extensions internal RSHUTDOWN method. The request shutdown is called after your script finished. Whether the garbage collection will be triggered is determined by computing a random value between 1...1000 and comparing it with the configuration setting probability (default: 5). If the setting is greater or equal to the random value, the garbage collection will be triggered.

Once started, the garbage collection acts upon up to max_transactions_per_run (default: 100) global transactions recorded. Records include successfully finished but also unfinished XA transactions. Records for successful transactions are removed and unfinished transactions are attempted to be solved. There are no statistics that help you finding the right balance between keeping garbage collection runs short by limiting the number of transactions considered per run and preventing the garbage collection to fall behind, resulting in many records.

For each failed XA transaction the garbage collection makes max_retries (default: 5) attempts to finish it. After that PECL/mysqlnd_ms gives up. There are two possible reasons for this. Either a participating server crashed and has not become accessible again within max_retries invocations of the garbage collection, or there is a situation that the built-in garbage collection cannot cope with. Likely, the latter would be considered a bug. However, you can manually force more garbage collection runs calling mysqlnd_ms_xa_gc() with the appropriate parameter set. Should even those function runs fail to solve the situation, then the problem must be solved by an operator.

The function mysqlnd_ms_get_stats() provides some statistics on how many XA transactions have been started, committed, failed or rolled back.

Supported clusters
安装／配置
概念


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • Plugin configuration file (>=1.1.x)
XA/Distributed transactions
需求
mysqlnd_ms


需求

PHP 5.3.6 或更高版本，一些建议使用的功能，需要 PHP 5.4.0 或更高版本。

mysqlnd_ms 主从同步和负载均衡插件，可以支持所有的 PHP 应用程序，并且支持所有的 PHP MySQL 扩展 (mysqli, mysql, PDO_MYSQL)。 所有的 PHP MySQL 扩展必须配置为使用 mysqlnd 并且在 mysqlnd 中使用 mysqlnd_ms。

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/mysqlnd_ms

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Mysqlnd_ms 配置选项
名字 | 默认 | 可修改范围 | 更新日志
mysqlnd_ms.enable | 0 | PHP_INI_SYSTEM |
mysqlnd_ms.force_config_usage | 0 | PHP_INI_SYSTEM |
mysqlnd_ms.ini_file | "" | PHP_INI_SYSTEM |
mysqlnd_ms.config_file | "" | PHP_INI_SYSTEM |
mysqlnd_ms.collect_statistics | 0 | PHP_INI_SYSTEM |
mysqlnd_ms.multi_master | 0 | PHP_INI_SYSTEM |
mysqlnd_ms.disable_rw_split | 0 | PHP_INI_SYSTEM |

这是配置指令的简短说明。

mysqlnd_ms.enable integer

是否启动插件，如果禁用插件将不会嵌入 mysqlnd 库中内部 PROXY 调用的 mysqlnd C API 接口。

mysqlnd_ms.force_config_usage integer

如果启用，插件会在每次尝试 MySQL 连接的时候通过配置文件检查服务器参数。如果存在问题， 连接将被阻塞。

这个参数对于运行中的系统没有什么用处，用于调试配置文件。配置文件的作用分为两个阶段。 首先是 PHP 开始接收 WEB 请求时执行，这时插件会读取并且解析配置文件，在这个较早的阶段 中错误信息可能被陷入循环而不会展现给用户。因此缓存这些错误，并且在 MySQL 连接建立的 时候展现给用户。默认情况下，启动时被缓存的错误会产生一个 E_WARNING 级别的错误。如果设定了 force_config_usage 参数，错误类型会变为 E_RECOVERABLE_ERROR 级别。

可以参考 configuration file debugging notes 说明。

mysqlnd_ms.ini_file string

从 1.4.0 版本已经作废，被 mysqlnd_ms.config_file 替代， 指定插件配置文件。

mysqlnd_ms.config_file string

插件的配置文件名称，mysqlnd_ms.ini_file 从 1.4.0 版本作废。

mysqlnd_ms.collect_statistics integer

启动或者禁用统计信息手机，考虑到性能问题默认是禁用的。统计信息可以使用 mysqlnd_ms_get_stats() 获取。

mysqlnd_ms.multi_master integer

是否启动 MySQL multi master 集群，可以参考 supported clusters。

mysqlnd_ms.disable_rw_split integer

启动还是禁用读写分离。

控制负载均衡和连接切换是否会基于读写分离。如果禁用读写分离，只有 master 列表 中的服务器会被用于执行语句，所有 slave 列表中的服务器会被忽略。

SQL hint 中 MYSQLND_MS_USE_SLAVE 不会被识别，语句还是会被 发送个 master 执行。

禁用读写分离会影响 mysqlnd_ms_query_is_select() 的返回值， 函数将不会再返回在 slave 运行的返回值。

Note: Multiple master servers

设置 mysqlnd_ms.multi_master=1 将允许插件使用多台 master 服务器，否则 master 列表中只能有一个服务器。

可以参考 supported clusters 中的说明

安装
Plugin configuration file (>=1.1.x)
安装／配置


Plugin configuration file (>=1.1.x)

The following documentation applies to PECL/mysqlnd_ms >= 1.1.0-beta. It is not valid for prior versions. For documentation covering earlier versions, see the configuration documentation for mysqlnd_ms 1.0.x and below.

Introduction

Note: Changelog: Feature was added in PECL/mysqlnd_ms 1.1.0-beta

The below description applies to PECL/mysqlnd_ms >= 1.1.0-beta. It is not valid for prior versions.

The plugin uses its own configuration file. The configuration file holds information about the MySQL replication master server, the MySQL replication slave servers, the server pick (load balancing) policy, the failover strategy, and the use of lazy connections.

The plugin loads its configuration file at the beginning of a web request. It is then cached in memory and used for the duration of the web request. This way, there is no need to restart PHP after deploying the configuration file. Configuration file changes will become active almost instantly.

The PHP configuration directive mysqlnd_ms.config_file is used to set the plugins configuration file. Please note, that the PHP configuration directive may not be evaluated for every web request. Therefore, changing the plugins configuration file name or location may require a PHP restart. However, no restart is required to read changes if an already existing plugin configuration file is updated.

Using and parsing JSON is efficient, and using JSON makes it easier to express hierarchical data structures than the standard php.ini format.

Example #1 Converting a PHP array (hash) into JSON format

Or alternatively, a developer may be more familiar with the PHP array syntax, and prefer it. This example demonstrates how a developer might convert a PHP array to JSON.

<?php
$config = array(
  "myapp" => array(
    "master" => array(
      "master_0" => array(
        "host"   => "localhost",
        "socket" => "/tmp/mysql.sock",
      ),
    ),
    "slave" => array(),
  ),
);

file_put_contents("mysqlnd_ms.ini", json_encode($config, JSON_PRETTY_PRINT));
printf("mysqlnd_ms.ini file created...\n");
printf("Dumping file contents...\n");
printf("%s\n", str_repeat("-", 80));
echo file_get_contents("mysqlnd_ms.ini");
printf("\n%s\n", str_repeat("-", 80));
?>

以上例程会输出：

mysqlnd_ms.ini file created...
Dumping file contents...
--------------------------------------------------------------------------------
{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": [

        ]
    }
}
--------------------------------------------------------------------------------

A plugin configuration file consists of one or more sections. Sections are represented by the top-level object properties of the object encoded in the JSON file. Sections could also be called configuration names.

Applications reference sections by their name. Applications use section names as the host (server) parameter to the various connect methods of the mysqli, mysql and PDO_MYSQL extensions. Upon connect, the mysqlnd plugin compares the hostname with all of the section names from the plugin configuration file. If the hostname and section name match, then the plugin will load the settings for that section.

Example #2 Using section names example

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.2.27"
            },
            "slave_1": {
                "host": "192.168.2.27",
                "port": 3306
            }
        }
    },
    "localhost": {
        "master": [
            {
                "host": "localhost",
                "socket": "\/path\/to\/mysql.sock"
            }
        ],
        "slave": [
            {
                "host": "192.168.3.24",
                "port": "3305"
            },
            {
                "host": "192.168.3.65",
                "port": "3309"
            }
        ]
    }
}
<?php
/* All of the following connections will be load balanced */
$mysqli = new mysqli("myapp", "username", "password", "database");
$pdo = new PDO('mysql:host=myapp;dbname=database', 'username', 'password');
$mysql = mysql_connect("myapp", "username", "password");

$mysqli = new mysqli("localhost", "username", "password", "database");
?>

Section names are strings. It is valid to use a section name such as 192.168.2.1, 127.0.0.1 or localhost. If, for example, an application connects to localhost and a plugin configuration section localhost exists, the semantics of the connect operation are changed. The application will no longer only use the MySQL server running on the host localhost, but the plugin will start to load balance MySQL queries following the rules from the localhost configuration section. This way you can load balance queries from an application without changing the applications source code. Please keep in mind, that such a configuration may not contribute to overall readability of your applications source code. Using section names that can be mixed up with host names should be seen as a last resort.

Each configuration section contains, at a minimum, a list of master servers and a list of slave servers. The master list is configured with the keyword master, while the slave list is configured with the slave keyword. Failing to provide a slave list will result in a fatal E_ERROR level error, although a slave list may be empty. It is possible to allow no slaves. However, this is only recommended with synchronous clusters, please see also supported clusters. The main part of the documentation focusses on the use of asynchronous MySQL replication clusters.

The master and slave server lists can be optionally indexed by symbolic names for the servers they describe. Alternatively, an array of descriptions for slave and master servers may be used.

Example #3 List of anonymous slaves

"slave": [
    {
        "host": "192.168.3.24",
        "port": "3305"
    },
    {
        "host": "192.168.3.65",
        "port": "3309"
    }
]

An anonymous server list is encoded by the JSON array type. Optionally, symbolic names may be used for indexing the slave or master servers of a server list, and done so using the JSON object type.

Example #4 Master list using symbolic names

"master": {
    "master_0": {
        "host": "localhost"
    }
}

It is recommended to index the server lists with symbolic server names. The alias names will be shown in error messages.

The order of servers is preserved and taken into account by mysqlnd_ms. If, for example, you configure round robin load balancing strategy, the first SELECT statement will be executed on the slave that appears first in the slave server list.

A configured server can be described with the host, port, socket, db, user, password and connect_flags. It is mandatory to set the database server host using the host keyword. All other settings are optional.

Example #5 Keywords to configure a server

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "db_server_host",
                "port": "db_server_port",
                "socket": "db_server_socket",
                "db": "database_resp_schema",
                "user": "user",
                "password": "password",
                "connect_flags": 0
            }
        },
        "slave": {
            "slave_0": {
                "host": "db_server_host",
                "port": "db_server_port",
                "socket": "db_server_socket"
            }
        }
    }
}

If a setting is omitted, the plugin will use the value provided by the user API call used to open a connection. Please, see the using section names example above.

The configuration file format has been changed in version 1.1.0-beta to allow for chained filters. Filters are responsible for filtering the configured list of servers to identify a server for execution of a given statement. Filters are configured with the filter keyword. Filters are executed by mysqlnd_ms in the order of their appearance. Defining filters is optional. A configuration section in the plugins configuration file does not need to have a filters entry.

Filters replace the pick[] setting from prior versions. The new random and roundrobin provide the same functionality.

Example #6 New roundrobin filter, old functionality

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.78.136",
                "port": "3306"
            },
            "slave_1": {
                "host": "192.168.78.137",
                "port": "3306"
            }
        },
        "filters": {
            "roundrobin": [

            ]
        }
    }
}

The function mysqlnd_ms_set_user_pick_server() has been removed. Setting a callback is now done with the user filter. Some filters accept parameters. The user filter requires and accepts a mandatory callback parameter to set the callback previously set through the function mysqlnd_ms_set_user_pick_server().

Example #7 The user filter replaces mysqlnd_ms_set_user_pick_server()

"filters": {
    "user": {
        "callback": "pick_server"
    }
}

The validity of the configuration file is checked both when reading the configuration file and later when establishing a connection. The configuration file is read during PHP request startup. At this early stage a PHP extension may not display error messages properly. In the worst case, no error is shown and a connection attempt fails without an adequate error message. This problem has been cured in version 1.5.0.

Example #8 Common error message in case of configuration file issues (upto version 1.5.0)

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
?>

以上例程会输出：

Warning: mysqli::mysqli(): (mysqlnd_ms) (mysqlnd_ms) Failed to parse config file [s1.json]. Please, verify the JSON in Command line code

Warning: mysqli::mysqli(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in Command line code on line 1

Warning: mysqli::query(): Couldn't fetch mysqli in Command line code on line 1

Fatal error: Call to a member function fetch_assoc() on a non-object in Command line code on line 1

Since version 1.5.0 startup errors are additionally buffered and emitted when a connection attempt is made. Use the configuration directive mysqlnd_ms.force_config_usage to set the error type used to display buffered errors. By default an error of type E_WARNING will be emitted.

Example #9 Improved configuration file validation since 1.5.0

<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
?>

以上例程会输出：

Warning: mysqli::mysqli(): (mysqlnd_ms) (mysqlnd_ms) Failed to parse config file [s1.json]. Please, verify the JSON in Command line code on line 1

It can be useful to set mysqlnd_ms.force_config_usage = 1 when debugging potential configuration file errors. This will not only turn the type of buffered startup errors into E_RECOVERABLE_ERROR but also help detecting misspelled section names.

Example #10 Possibly more precise error due to mysqlnd_ms.force_config_usage=1

mysqlnd_ms.force_config_usage=1
<?php
$mysqli = new mysqli("invalid_section", "username", "password", "database");
?>

以上例程会输出：

Warning: mysqli::mysqli(): (mysqlnd_ms) Exclusive usage of configuration enforced but did not find the correct INI file section (invalid_section) in Command line code on line 1 line 1

Configuration Directives

Here is a short explanation of the configuration directives that can be used.

master array or object

List of MySQL replication master servers. The list of either of the JSON type array to declare an anonymous list of servers or of the JSON type object. Please, see above for examples.

Setting at least one master server is mandatory. The plugin will issue an error of type E_ERROR if the user has failed to provide a master server list for a configuration section. The fatal error may read (mysqlnd_ms) Section [master] doesn't exist for host [name_of_a_config_section] in %s on line %d.

A server is described with the host, port, socket, db, user, password and connect_flags. It is mandatory to provide at a value for host. If any of the other values is not given, it will be taken from the user API connect call, please, see also: using section names example.

Table of server configuration keywords.

Keyword Description Version
host

Database server host. This is a mandatory setting. Failing to provide, will cause an error of type E_RECOVERABLE_ERROR when the plugin tries to connect to the server. The error message may read (mysqlnd_ms) Cannot find [host] in [%s] section in config in %s on line %d.

Since 1.1.0.
port

Database server TCP/IP port.

Since 1.1.0.
socket

Database server Unix domain socket.

Since 1.1.0.
db

Database (schemata).

Since 1.1.0.
user

MySQL database user.

Since 1.1.0.
password

MySQL database user password.

Since 1.1.0.
connect_flags

Connection flags.

Since 1.1.0.

The plugin supports using only one master server. An experimental setting exists to enable multi-master support. The details are not documented. The setting is meant for development only.

slave array or object

List of one or more MySQL replication slave servers. The syntax is identical to setting master servers, please, see master above for details.

The plugin supports using one or more slave servers.

Setting a list of slave servers is mandatory. The plugin will report an error of the type E_ERROR if slave is not given for a configuration section. The fatal error message may read (mysqlnd_ms) Section [slave] doesn't exist for host [%s] in %s on line %d. Note, that it is valid to use an empty slave server list. The error has been introduced to prevent accidently setting no slaves by forgetting about the slave setting. A master-only setup is still possible using an empty slave server list.

If an empty slave list is configured and an attempt is made to execute a statement on a slave the plugin may emit a warning like mysqlnd_ms) Couldn't find the appropriate slave connection. 0 slaves to choose from. upon statement execution. It is possible that another warning follows such as (mysqlnd_ms) No connection selected by the last filter.

global_transaction_id_injection array or object

Global transaction identifier configuration related to both the use of the server built-in global transaction ID feature and the client-side emulation.

Keyword Description Version
fetch_last_gtid

SQL statement for accessing the latest global transaction identifier. The SQL statement is run if the plugin needs to know the most recent global transaction identifier. This can be the case, for example, when checking MySQL Replication slave status. Also used with mysqlnd_ms_get_last_gtid().

Since 1.2.0.
check_for_gtid

SQL statement for checking if a replica has replicated all transactions up to and including ones searched for. The SQL statement is run when searching for replicas which can offer a higher level of consistency than eventual consistency. The statement must contain a placeholder #GTID which is to be replaced with the global transaction identifier searched for by the plugin. Please, check the quickstart for examples.

Since 1.2.0.
report_errors

Whether to emit an error of type warning if an issue occurs while executing any of the configured SQL statements.

Since 1.2.0.
on_commit

Client-side global transaction ID emulation only. SQL statement to run when a transaction finished to update the global transaction identifier sequence number on the master. Please, see the quickstart for examples.

Since 1.2.0.
wait_for_gtid_timeout

Instructs the plugin to wait up to wait_for_gtid_timeout seconds for a slave to catch up when searching for slaves that can deliver session consistency. The setting limits the time spend for polling the slave status. If polling the status takes very long, the total clock time spend waiting may exceed wait_for_gtid_timeout. The plugin calls sleep(1) to sleep one second between each two polls.

The setting can be used both with the plugins client-side emulation and the server-side global transaction identifier feature of MySQL 5.6.

Waiting for a slave to replicate a certain GTID needed for session consistency also means throttling the client. By throttling the client the write load on the master is reduced indirectly. A primary copy based replication system, such as MySQL Replication, is given more time to reach a consistent state. This can be desired, for example, to increase the number of data copies for high availability considerations or to prevent the master from being overloaded.

Since 1.4.0.
fabric object

MySQL Fabric related settings. If the plugin is used together with MySQL Fabric, then the plugins configuration file no longer contains lists of MySQL servers. Instead, the plugin will ask MySQL Fabric which list of servers to use to perform a certain task.

A minimum plugin configuration for use with MySQL Fabric contains a list of one or more MySQL Fabric hosts that the plugin can query. If more than one MySQL Fabric host is configured, the plugin will use a roundrobin strategy to choose among them. Other strategies are currently not available.

Example #11 Minimum pluging configuration for use with MySQL Fabric

{
    "myapp": {
        "fabric": {
            "hosts": [
                {
                    "host" : "127.0.0.1",
                    "port" : 8080
                }
            ]
        }
    }
}

Each MySQL Fabric host is described using a JSON object with the following members.

Keyword Description Version
host

Host name of the MySQL Fabric host.

Since 1.6.0.
port

The TCP/IP port on which the MySQL Fabric host listens for remote procedure calls sent by clients such as the plugin.

Since 1.6.0.

The plugin is using PHP streams to communicate with MySQL Fabric through XML RPC over HTTP. By default no timeouts are set for the network communication. Thus, the plugin defaults to PHP stream default timeouts. Those defaults are out of control of the plugin itself.

An optional timeout value can be set to overrule the PHP streams default timeout setting. Setting the timeout in the plugins configuration file has the same effect as setting a timeout for a PHP user space HTTP connection established through PHP streams.

The plugins Fabric timeout value unit is seconds. The allowed value range is from 0 to 65535. The setting exists since version 1.6.

Example #12 Optional timeout for communication with Fabric

{
    "myapp": {
        "fabric": {
            "hosts": [
                {
                    "host" : "127.0.0.1",
                    "port" : 8080
                }
            ],
            "timeout": 2
        }
    }
}

Transaction stickiness and MySQL Fabric logic can collide. The stickiness option disables switching between servers for the duration of a transaction. When using Fabric and sharding the user may (erroneously) start a local transaction on one share and then attempt to switch to a different shard using either mysqlnd_ms_fabric_select_shard() or mysqlnd_ms_fabric_select_global(). In this case, the plugin will not reject the request to switch servers in the middle of a transaction but allow the user to switch to another server regardless of the transaction stickiness setting used. It is clearly a user error to write such code.

If transaction stickiness is enabled and you would like to get an error of type warning when calling mysqlnd_ms_fabric_select_shard() or mysqlnd_ms_fabric_select_global(), set the boolean flag trx_warn_server_list_changes.

Example #13 Warnings about the violation of transaction boundaries

{
    "myapp": {
        "fabric": {
            "hosts": [
                {
                    "host" : "127.0.0.1",
                    "port" : 8080
                }
            ],
            "trx_warn_serverlist_changes": 1
        },
        "trx_stickiness": "on"
    }
}
<?php
$link = new mysqli("myapp", "root", "", "test");
/*
  For the demo the call may fail.
  Failed or not we get into the state
  needed for the example.
*/
@mysqlnd_ms_fabric_select_global($link, 1);
$link->begin_transaction();
@$link->query("DROP TABLE IF EXISTS test");
/*
  Switching servers/shards is a mistake due to open
  local transaction!
*/
mysqlnd_ms_select_global($link, 1);
?>

以上例程会输出：

PHP Warning: mysqlnd_ms_fabric_select_global(): (mysqlnd_ms) Fabric server exchange in the middle of a transaction in %s on line %d

Please, consider the feature experimental. Changes to syntax and semantics may happen.

filters object

List of filters. A filter is responsible to filter the list of available servers for executing a given statement. Filters can be chained. The random and roundrobin filter replace the pick[] directive used in prior version to select a load balancing policy. The user filter replaces the mysqlnd_ms_set_user_pick_server() function.

Filters may accept parameters to refine their actions.

If no load balancing policy is set, the plugin will default to random_once. The random_once policy picks a random slave server when running the first read-only statement. The slave server will be used for all read-only statements until the PHP script execution ends. No load balancing policy is set and thus, defaulting takes place, if neither the random nor the roundrobin are part of a configuration section.

If a filter chain is configured so that a filter which output no more than once server is used as input for a filter which should be given more than one server as input, the plugin may emit a warning upon opening a connection. The warning may read: (mysqlnd_ms) Error while creating filter '%s' . Non-multi filter '%s' already created. Stopping in %s on line %d. Furthermore, an error of the error code 2000, the sql state HY000 and an error message similar to the warning may be set on the connection handle.

Example #14 Invalid filter sequence

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.78.136",
                "port": "3306"
            }
        },
        "filters": [
            "roundrobin",
            "random"
        ]
    }
}
<?php
$link = new mysqli("myapp", "root", "", "test");
printf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
$link->query("SELECT 1 FROM DUAL");
?>

以上例程会输出：

PHP Warning:  mysqli::mysqli(): (HY000/2000): (mysqlnd_ms) Error while creating filter 'random' . Non-multi filter 'roundrobin' already created. Stopping in filter_warning.php on line 1
[2000] (mysqlnd_ms) Error while creating filter 'random' . Non-multi filter 'roundrobin' already created. Stopping
PHP Warning:  mysqli::query(): Couldn't fetch mysqli in filter_warning.php on line 3

Filter: random object

The random filter features the random and random once load balancing policies, set through the pick[] directive in older versions.

The random policy will pick a random server whenever a read-only statement is to be executed. The random once strategy picks a random slave server once and continues using the slave for the rest of the PHP web request. Random once is a default, if load balancing is not configured through a filter.

If the random filter is not given any arguments, it stands for random load balancing policy.

Example #15 Random load balancing with random filter

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.78.136",
                "port": "3306"
            },
            "slave_1": {
                "host": "192.168.78.137",
                "port": "3306"
            }
        },
        "filters": [
            "random"
        ]
    }
}

Optionally, the sticky argument can be passed to the filter. If the parameter sticky is set to the string 1, the filter follows the random once load balancing strategy.

Example #16 Random once load balancing with random filter

{
    "filters": {
        "random": {
            "sticky": "1"
        }
    }
}

Both the random and roundrobin filters support setting a priority, a weight for a server, since PECL/mysqlnd_ms 1.4.0. If the weight argument is passed to the filter, it must assign a weight for all servers. Servers must be given an alias name in the slave respectively master server lists. The alias must be used to reference servers for assigning a priority with weight.

Example #17 Referencing error

[E_RECOVERABLE_ERROR] mysqli_real_connect(): (mysqlnd_ms) Unknown server 'slave3' in 'random' filter configuration. Stopping in %s on line %d

Using a wrong alias name with weight may result in an error similar to the shown above.

If weight is omitted, the default weight of all servers is one.

Example #18 Assigning a weight for load balancing

{
   "myapp": {
       "master": {
           "master1":{
               "host":"localhost",
               "socket":"\/var\/run\/mysql\/mysql.sock"
           }
       },
       "slave": {
           "slave1": {
               "host":"192.168.2.28",
               "port":3306
           },
           "slave2": {
               "host":"192.168.2.29",
               "port":3306
           },
           "slave3": {
               "host":"192.0.43.10",
               "port":3306
           },
       },
       "filters": {
           "random": {
               "weights": {
                   "slave1":8,
                   "slave2":4,
                   "slave3":1,
                   "master1":1
               }
           }
       }
   }
}

At the average a server assigned a weight of two will be selected twice as often as a server assigned a weight of one. Different weights can be assigned to reflect differently sized machines, to prefer co-located slaves which have a low network latency or, to configure a standby failover server. In the latter case, you may want to assign the standby server a very low weight in relation to the other servers. For example, given the configuration above slave3 will get only some eight percent of the requests in the average. As long as slave1 and slave2 are running, it will be used sparsely, similar to a standby failover server. Upon failure of slave1 and slave2, the usage of slave3 increases. Please, check the notes on failover before using weight this way.

Valid weight values range from 1 to 65535.

Unknown arguments are ignored by the filter. No warning or error is given.

The filter expects one or more servers as input. Outputs one server. A filter sequence such as random, roundrobin may cause a warning and an error message to be set on the connection handle when executing a statement.

List of filter arguments.

Keyword Description Version
sticky

Enables or disabled random once load balancing policy. See above.

Since 1.2.0.
weight

Assigns a load balancing weight/priority to a server. Please, see above for a description.

Since 1.4.0.
Filter: roundrobin object

If using the roundrobin filter, the plugin iterates over the list of configured slave servers to pick a server for statement execution. If the plugin reaches the end of the list, it wraps around to the beginning of the list and picks the first configured slave server.

Example #19 roundrobin filter

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.78.136",
                "port": "3306"
            }
        },
        "filters": [
            "roundrobin"
        ]
    }
}

Expects one or more servers as input. Outputs one server. A filter sequence such as roundrobin, random may cause a warning and an error message to be set on the connection handle when executing a statement.

List of filter arguments.

Keyword Description Version
weight

Assigns a load balancing weight/priority to a server. Please, find a description above.

Since 1.4.0.
Filter: user object

The user replaces mysqlnd_ms_set_user_pick_server() function, which was removed in 1.1.0-beta. The filter sets a callback for user-defined read/write splitting and server selection.

The plugins built-in read/write query split mechanism decisions can be overwritten in two ways. The easiest way is to prepend a query string with the SQL hints MYSQLND_MS_MASTER_SWITCH, MYSQLND_MS_SLAVE_SWITCH or MYSQLND_MS_LAST_USED_SWITCH. Using SQL hints one can control, for example, whether a query shall be send to the MySQL replication master server or one of the slave servers. By help of SQL hints it is not possible to pick a certain slave server for query execution.

Full control on server selection can be gained using a callback function. Use of a callback is recommended to expert users only because the callback has to cover all cases otherwise handled by the plugin.

The plugin will invoke the callback function for selecting a server from the lists of configured master and slave servers. The callback function inspects the query to run and picks a server for query execution by returning the hosts URI, as found in the master and slave list.

If the lazy connections are enabled and the callback chooses a slave server for which no connection has been established so far and establishing the connection to the slave fails, the plugin will return an error upon the next action on the failed connection, for example, when running a query. It is the responsibility of the application developer to handle the error. For example, the application can re-run the query to trigger a new server selection and callback invocation. If so, the callback must make sure to select a different slave, or check slave availability, before returning to the plugin to prevent an endless loop.

Example #20 Setting a callback

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.78.136",
                "port": "3306"
            }
        },
        "filters": {
            "user": {
                "callback": "pick_server"
            }
        }
    }
}

The callback is supposed to return a host to run the query on. The host URI is to be taken from the master and slave connection lists passed to the callback function. If callback returns a value neither found in the master nor in the slave connection lists the plugin will emit an error of the type E_RECOVERABLE_ERROR The error may read like (mysqlnd_ms) User filter callback has returned an unknown server. The server 'server that is not in master or slave list' can neither be found in the master list nor in the slave list. If the application catches the error to ignore it, follow up errors may be set on the connection handle, for example, (mysqlnd_ms) No connection selected by the last filter with the error code 2000 and the sqlstate HY000. Furthermore a warning may be emitted.

Referencing a non-existing function as a callback will result in any error of the type E_RECOVERABLE_ERROR whenever the plugin tries to callback function. The error message may reads like: (mysqlnd_ms) Specified callback (pick_server) is not a valid callback. If the application catches the error to ignore it, follow up errors may be set on the connection handle, for example, (mysqlnd_ms) Specified callback (pick_server) is not a valid callback with the error code 2000 and the sqlstate HY000. Furthermore a warning may be emitted.

The following parameters are passed from the plugin to the callback.

Parameter Description Version
connected_host

URI of the currently connected database server.

Since 1.1.0.
query

Query string of the statement for which a server needs to be picked.

Since 1.1.0.
masters

List of master servers to choose from. Note, that the list of master servers may not be identical to the list of configured master servers if the filter is not the first in the filter chain. Previously run filters may have reduced the master list already.

Since 1.1.0.
slaves

List of slave servers to choose from. Note, that the list of master servers may not be identical to the list of configured master servers if the filter is not the first in the filter chain. Previously run filters may have reduced the master list already.

Since 1.1.0.
last_used_connection

URI of the server of the connection used to execute the previous statement on.

Since 1.1.0.
in_transaction

Boolean flag indicating whether the statement is part of an open transaction. If autocommit mode is turned off, this will be set to TRUE. Otherwise it is set to FALSE.

Transaction detection is based on monitoring the mysqlnd library call set_autocommit. Monitoring is not possible before PHP 5.4.0. Please, see connection pooling and switching concepts discussion for further details.

Since 1.1.0.

Example #21 Using a callback

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.2.27",
                "port": "3306"
            },
            "slave_1": {
                "host": "192.168.78.136",
                "port": "3306"
            }
        },
        "filters": {
            "user": {
                "callback": "pick_server"
            }
        }
    }
}
<?php
function pick_server($connected, $query, $masters, $slaves, $last_used_connection, $in_transaction)
{
 static $slave_idx = 0;
 static $num_slaves = NULL;
 if (is_null($num_slaves))
  $num_slaves = count($slaves);

 /* default: fallback to the plugins build-in logic */
 $ret = NULL;

 printf("User has connected to '%s'...\n", $connected);
 printf("... deciding where to run '%s'\n", $query);

 $where = mysqlnd_ms_query_is_select($query);
 switch ($where)
 {
  case MYSQLND_MS_QUERY_USE_MASTER:
   printf("... using master\n");
   $ret = $masters[0];
   break;
  case MYSQLND_MS_QUERY_USE_SLAVE:
   /* SELECT or SQL hint for using slave */
   if (stristr($query, "FROM table_on_slave_a_only"))
   {
    /* a table which is only on the first configured slave  */
    printf("... access to table available only on slave A detected\n");
    $ret = $slaves[0];
   }
   else
   {
    /* round robin */
    printf("... some read-only query for a slave\n");
    $ret = $slaves[$slave_idx++ % $num_slaves];
   }
   break;
  case MYSQLND_MS_QUERY_LAST_USED:
   printf("... using last used server\n");
   $ret = $last_used_connection;
   break;
 }

 printf("... ret = '%s'\n", $ret);
 return $ret;
}

$mysqli = new mysqli("myapp", "root", "", "test");

if (!($res = $mysqli->query("SELECT 1 FROM DUAL")))
 printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
else
 $res->close();

if (!($res = $mysqli->query("SELECT 2 FROM DUAL")))
 printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
else
 $res->close();

if (!($res = $mysqli->query("SELECT * FROM table_on_slave_a_only")))
 printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
else
 $res->close();

$mysqli->close();
?>

以上例程会输出：

User has connected to 'myapp'...
... deciding where to run 'SELECT 1 FROM DUAL'
... some read-only query for a slave
... ret = 'tcp://192.168.2.27:3306'
User has connected to 'myapp'...
... deciding where to run 'SELECT 2 FROM DUAL'
... some read-only query for a slave
... ret = 'tcp://192.168.78.136:3306'
User has connected to 'myapp'...
... deciding where to run 'SELECT * FROM table_on_slave_a_only'
... access to table available only on slave A detected
... ret = 'tcp://192.168.2.27:3306'

Filter: user_multi object

The user_multi differs from the user only in one aspect. Otherwise, their syntax is identical. The user filter must pick and return exactly one node for statement execution. A filter chain usually ends with a filter that emits only one node. The filter chain shall reduce the list of candidates for statement execution down to one. This, only one node left, is the case after the user filter has been run.

The user_multi filter is a multi filter. It returns a list of slave and a list of master servers. This list needs further filtering to identify exactly one node for statement execution. A multi filter is typically placed at the top of the filter chain. The quality_of_service filter is another example of a multi filter.

The return value of the callback set for user_multi must be an array with two elements. The first element holds a list of selected master servers. The second element contains a list of selected slave servers. The lists shall contain the keys of the slave and master servers as found in the slave and master lists passed to the callback. The below example returns random master and slave lists extracted from the functions input.

Example #22 Returning random masters and slaves

<?php
function pick_server($connected, $query, $masters, $slaves, $last_used_connection, $in_transaction)
{
  $picked_masters = array()
  foreach ($masters as $key => $value) {
    if (mt_rand(0, 2) > 1)
      $picked_masters[] = $key;
  }
  $picked_slaves = array()
  foreach ($slaves as $key => $value) {
    if (mt_rand(0, 2) > 1)
      $picked_slaves[] = $key;
  }
  return array($picked_masters, $picked_slaves);
}
?>

The plugin will issue an error of type E_RECOVERABLE if the callback fails to return a server list. The error may read (mysqlnd_ms) User multi filter callback has not returned a list of servers to use. The callback must return an array in %s on line %d. In case the server list is not empty but has invalid servers key/ids in it, an error of type E_RECOVERABLE will the thrown with an error message like (mysqlnd_ms) User multi filter callback has returned an invalid list of servers to use. Server id is negative in %s on line %d, or similar.

Whether an error is emitted in case of an empty slave or master list depends on the configuration. If an empty master list is returned for a write operation, it is likely that the plugin will emit a warning that may read (mysqlnd_ms) Couldn't find the appropriate master connection. 0 masters to choose from. Something is wrong in %s on line %d. Typically a follow up error of type E_ERROR will happen. In case of a read operation and an empty slave list the behavior depends on the fail over configuration. If fail over to master is enabled, no error should appear. If fail over to master is deactivated the plugin will emit a warning that may read (mysqlnd_ms) Couldn't find the appropriate slave connection. 0 slaves to choose from. Something is wrong in %s on line %d.

Filter: node_groups object

The node_groups filter lets you group cluster nodes and query selected groups, for example, to support data partitioning. Data partitioning can be required for manual sharding, primary copy based clusters running multiple masters, or to avoid hot spots in update everywhere clusters that have no built-in partitioning. The filter is a multi filter which returns zero, one or multiple of its input servers. Thus, it must be followed by other filters to reduce the number of candidates down to one for statement execution.

Keyword Description Version
user defined node group name

One or more node groups must be defined. A node group can have an arbitrary user defined name. The name is used in combination with a SQL hint to restrict query execution to the nodes listed for the node group. To run a query on any of the servers of a node group, the query must begin with the SQL hint /*user defined node group name*/. Please note, no white space is allowed around user defined node group name. Because user defined node group name is used as-is as part of a SQL hint, you should choose the name that is compliant with the SQL language.

Each node group entry must contain a list of master servers. Additional slave servers are allowed. Failing to provide a list of master for a node group name_of_group may cause an error of type E_RECOVERABLE_ERROR like (mysqlnd_ms) No masters configured in node group 'name_of_group' for 'node_groups' filter.

The list of master and slave servers must reference corresponding entries in the global master respectively slave server list. Referencing an unknown server in either of the both server lists may cause an E_RECOVERABLE_ERROR error like (mysqlnd_ms) Unknown master 'server_alias_name' (section 'name_of_group') in 'node_groups' filter configuration.

Example #23 Manual partitioning

{
  "myapp": {
       "master": {
            "master_0": {
                "host": "localhost",
                "socket": "\/tmp\/mysql.sock"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.2.28",
                "port": 3306
            },
            "slave_1": {
                "host": "127.0.0.1",
                "port": 3311
            }
        },
        "filters": {
            "node_groups": {
                "Partition_A" : {
                    "master": ["master_0"],
                    "slave": ["slave_0"]
                }
            },
           "roundrobin": []
        }
    }
}

Please note, if a filter chain generates an empty slave list and the PHP configuration directive mysqlnd_ms.multi_master=0 is used, the plugin may emit a warning.

Since 1.5.0.
Filter: quality_of_service object

The quality_of_service identifies cluster nodes capable of delivering a certain quality of service. It is a multi filter which returns zero, one or multiple of its input servers. Thus, it must be followed by other filters to reduce the number of candidates down to one for statement execution.

The quality_of_service filter has been introduced in 1.2.0-alpha. In the 1.2 series the filters focus is on the consistency aspect of service quality. Different types of clusters offer different default data consistencies. For example, an asynchronous MySQL replication slave offers eventual consistency. The slave may not be able to deliver requested data because it has not replicated the write, it may serve stale database because its lagging behind or it may serve current information. Often, this is acceptable. In some cases higher consistency levels are needed for the application to work correct. In those cases, the quality_of_service can filter out cluster nodes which cannot deliver the necessary quality of service.

The quality_of_service filter can be replaced or created at runtime. A successful call to mysqlnd_ms_set_qos() removes all existing qos filter entries from the filter list and installs a new one at the very beginning. All settings that can be made through mysqlnd_ms_set_qos() can also be in the plugins configuration file. However, use of the function is by far the most common use case. Instead of setting session consistency and strong consistency service levels in the plugins configuration file it is recommended to define only masters and no slaves. Both service levels will force the use of masters only. Using an empty slave list shortens the configuration file, thus improving readability. The only service level for which there is a case of defining in the plugins configuration file is the combination of eventual consistency and maximum slave lag.

Keyword Description Version
eventual_consistency

Request eventual consistency. Allows the use of all master and slave servers. Data returned may or may not be current.

Eventual consistency accepts an optional age parameter. If age is given the plugin considers only slaves for reading for which MySQL replication reports a slave lag less or equal to age. The replication lag is measure using SHOW SLAVE STATUS. If the plugin fails to fetch the replication lag, the slave tested is skipped. Implementation details and tips are given in the quality of service concepts section.

Please note, if a filter chain generates an empty slave list and the PHP configuration directive mysqlnd_ms.multi_master=0 is used, the plugin may emit a warning.

Example #24 Global limit on slave lag

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.2.27",
                "port": "3306"
            },
            "slave_1": {
                "host": "192.168.78.136",
                "port": "3306"
            }
        },
        "filters": {
            "quality_of_service": {
                "eventual_consistency": {
                    "age":123
                }
            }
        }
    }
}

 Since 1.2.0.
session_consistency

Request session consistency (read your writes). Allows use of all masters and all slaves which are in sync with the master. If no further parameters are given slaves are filtered out as there is no reliable way to test if a slave has caught up to the master or is lagging behind. Please note, if a filter chain generates an empty slave list and the PHP configuration directive mysqlnd_ms.multi_master=0 is used, the plugin may emit a warning.

Session consistency temporarily requested using mysqlnd_ms_set_qos() is a valuable alternative to using master_on_write. master_on_write is likely to send more statements to the master than needed. The application may be able to continue operation at a lower consistency level after it has done some critical reads.

Since 1.1.0.
strong_consistency

Request strong consistency. Only masters will be used.

Since 1.2.0.
failover Up to and including 1.3.x: string. Since 1.4.0: object.

Failover policy. Supported policies: disabled (default), master, loop_before_master (Since 1.4.0).

If no failover policy is set, the plugin will not do any automatic failover (failover=disabled). Whenever the plugin fails to connect a server it will emit a warning and set the connections error code and message. Thereafter it is up to the application to handle the error and, for example, resent the last statement to trigger the selection of another server.

Please note, the automatic failover logic is applied when opening connections only. Once a connection has been opened no automatic attempts are made to reopen it in case of an error. If, for example, the server a connection is connected to is shut down and the user attempts to run a statement on the connection, no automatic failover will be tried. Instead, an error will be reported.

If using failover=master the plugin will implicitly failover to a master, if available. Please check the concepts documentation to learn about potential pitfalls and risks of using failover=master.

Example #25 Optional master failover when failing to connect to slave (PECL/mysqlnd_ms < 1.4.0)

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.78.136",
                "port": "3306"
            }
        },
        "failover": "master"
    }
}

Since PECL/mysqlnd_ms 1.4.0 the failover configuration keyword refers to an object.

Example #26 New syntax since 1.4.0

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.78.136",
                "port": "3306"
            }
        },
        "failover": {"strategy": "master" }
    }
}

Keyword Description Version
strategy

Failover policy. Possible values: disabled (default), master, loop_before_master

A value of disabled disables automatic failover.

Setting master instructs the plugin to try to connect to a master in case of a slave connection error. If the master connection attempt fails, the plugin exists the failover loop and returns an error to the user.

If using loop_before_master and a slave request is made, the plugin tries to connect to other slaves before failing over to a master. If multiple master are given and multi master is enabled, the plugin also loops over the list of masters and attempts to connect before returning an error to the user.

Since 1.4.0.
remember_failed

Remember failures for the duration of a web request. Default: false.

If set to true the plugin will remember failed hosts and skip the hosts in all future load balancing made for the duration of the current web request.

Since 1.4.0. The feature is only available together with the random and roundrobin load balancing filter. Use of the setting is recommended.
max_retries

Maximum number of connection attempts before skipping host. Default: 0 (no limit).

The setting is used to prevent hosts from being dropped of the host list upon the first failure. If set to n > 0, the plugin will keep the node in the node list even after a failed connection attempt. The node will not be removed immediately from the slave respectively master lists after the first connection failure but instead be tried to connect to up to n times in future load balancing rounds before being removed.

Since 1.4.0. The feature is only available together with the random and roundrobin load balancing filter.

Setting failover to any other value but disabled, master or loop_before_master will not emit any warning or error.

lazy_connections bool

Controls the use of lazy connections. Lazy connections are connections which are not opened before the client sends the first connection. Lazy connections are a default.

It is strongly recommended to use lazy connections. Lazy connections help to keep the number of open connections low. If you disable lazy connections and, for example, configure one MySQL replication master server and two MySQL replication slaves, the plugin will open three connections upon the first call to a connect function although the application might use the master connection only.

Lazy connections bare a risk if you make heavy use of actions which change the state of a connection. The plugin does not dispatch all state changing actions to all connections from the connection pool. The few dispatched actions are applied to already opened connections only. Lazy connections opened in the future are not affected. Only some settings are "remembered" and applied when lazy connections are opened.

Example #27 Disabling lazy connection

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.78.136",
                "port": "3306"
            }
        },
        "lazy_connections": 0
    }
}

Please, see also server_charset to overcome potential problems with string escaping and servers using different default charsets.

server_charset string

The setting has been introduced in 1.4.0. It is recommended to set it if using lazy connections.

The server_charset setting serves two purposes. It acts as a fallback charset to be used for string escaping done before a connection has been established and it helps to avoid escaping pitfalls in heterogeneous environments which servers using different default charsets.

String escaping takes a connections charset into account. String escaping is not possible before a connection has been opened and the connections charset is known. The use of lazy connections delays the actual opening of connections until a statement is send.

An application using lazy connections may attempt to escape a string before sending a statement. In fact, this should be a common case as the statement string may contain the string that is to be escaped. However, due to the lazy connection feature no connection has been opened yet and escaping fails. The plugin may report an error of the type E_WARNING and a message like (mysqlnd_ms) string escaping doesn't work without established connection. Possible solution is to add server_charset to your configuration to inform you of the pitfall.

Setting server_charset makes the plugin use the given charset for string escaping done on lazy connection handles before establishing a network connection to MySQL. Furthermore, the plugin will enforce the use of the charset when the connection is established.

Enforcing the use of the configured charset used for escaping is done to prevent tapping into the pitfall of using a different charset for escaping than used later for the connection. This has the additional benefit of removing the need to align the charset configuration of all servers used. No matter what the default charset on any of the servers is, the plugin will set the configured one as a default.

The plugin does not stop the user from changing the charset at any time using the set_charset() call or corresponding SQL statements. Please, note that the use of SQL is not recommended as it cannot be monitored by the plugin. The user can, for example, change the charset on a lazy connection handle after escaping a string and before the actual connection is opened. The charset set by the user will be used for any subsequent escaping before the connection is established. The connection will be established using the configured charset, no matter what the server charset is or what the user has set before. Once a connection has been opened, set_charset is of no meaning anymore.

Example #28 String escaping on a lazy connection handle

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.78.136",
                "port": "3306"
            }
        },
        "lazy_connections": 1,
        "server_charset" : "utf8"
    }
}
<?php
$mysqli = new mysqli("myapp", "username", "password", "database");
$mysqli->real_escape("this will be escaped using the server_charset setting - utf8");
$mysqli->set_charset("latin1");
$mysqli->real_escape("this will be escaped using latin1");
/* server_charset implicitly set - utf8 connection */
$mysqli->query("SELECT 'This connection will be set to server_charset upon establishing' AS _msg FROM DUAL");
/* latin1 used from now on */
$mysqli->set_charset("latin1");
?>

master_on_write bool

If set, the plugin will use the master server only after the first statement has been executed on the master. Applications can still send statements to the slaves using SQL hints to overrule the automatic decision.

The setting may help with replication lag. If an application runs an INSERT the plugin will, by default, use the master to execute all following statements, including SELECT statements. This helps to avoid problems with reads from slaves which have not replicated the INSERT yet.

Example #29 Master on write for consistent reads

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.78.136",
                "port": "3306"
            }
        },
        "master_on_write": 1
    }
}

Please, note the quality_of_service filter introduced in version 1.2.0-alpha. It gives finer control, for example, for achieving read-your-writes and, it offers additional functionality introducing service levels.

All transaction stickiness settings, including trx_stickiness=on, are overruled by master_on_write=1.

trx_stickiness string

Transaction stickiness policy. Supported policies: disabled (default), master.

The setting requires 5.4.0 or newer. If used with PHP older than 5.4.0, the plugin will emit a warning like (mysqlnd_ms) trx_stickiness strategy is not supported before PHP 5.3.99.

If no transaction stickiness policy is set or, if setting trx_stickiness=disabled, the plugin is not transaction aware. Thus, the plugin may load balance connections and switch connections in the middle of a transaction. The plugin is not transaction safe. SQL hints must be used avoid connection switches during a transaction.

As of PHP 5.4.0 the mysqlnd library allows the plugin to monitor the autocommit mode set by calls to the libraries set_autocommit() function. If setting set_stickiness=master and autocommit gets disabled by a PHP MySQL extension invoking the mysqlnd library internal function call set_autocommit(), the plugin is made aware of the begin of a transaction. Then, the plugin stops load balancing and directs all statements to the master server until autocommit is enabled. Thus, no SQL hints are required.

An example of a PHP MySQL API function calling the mysqlnd library internal function call set_autocommit() is mysqli_autocommit().

Although setting trx_stickiness=master, the plugin cannot be made aware of autocommit mode changes caused by SQL statements such as SET AUTOCOMMIT=0 or BEGIN.

As of PHP 5.5.0, the mysqlnd library features additional C API calls to control transactions. The level of control matches the one offered by SQL statements. The mysqli API has been modified to use these calls. Since version 1.5.0, PECL/mysqlnd_ms can monitor not only mysqli_autocommit(), but also mysqli_begin(), mysqli_commit() and mysqli_rollback() to detect transaction boundaries and stop load balancing for the duration of a transaction.

Example #30 Using master to execute transactions

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.78.136",
                "port": "3306"
            }
        },
        "trx_stickiness": "master"
    }
}

Since version 1.5.0 automatic and silent failover is disabled for the duration of a transaction. If the boundaries of a transaction have been properly detected, transaction stickiness is enabled and a server fails, the plugin will not attempt to fail over to the next server, if any, regardless of the failover policy configured. The user must handle the error manually. Depending on the configuration, the plugin may emit an error of type E_WARNING reading like (mysqlnd_ms) Automatic failover is not permitted in the middle of a transaction. This error may then be overwritten by follow up errors such as (mysqlnd_ms) No connection selected by the last filter. Those errors will be generated by the failing query function.

Example #31 No automatic failover, error handling pitfall

<?php
/* assumption: automatic failover configured */
$mysqli = new mysqli("myapp", "username", "password", "database");

/* sets plugin internal state in_trx = 1 */
$mysqli->autocommit(false);

/* assumption: server fails */
if (!($res = $mysqli->query("SELECT 'Assume this query fails' AS _msg FROM DUAL"))) {
 /* handle failure of transaction, plugin internal state is still in_trx = 1 */
 printf("[%d] %s", $mysqli->errno, $mysqli->error);
 /*
  If using autocommit() based transaction detection it is a
  MUST to call autocommit(true). Otherwise the plugin assumes
  the current transaction continues and connection
  changes remain forbidden.
 */
 $mysqli->autocommit(true);
 /* Likewise, you'll want to start a new transaction */
 $mysqli->autocommit(false);
}
/* latin1 used from now on */
$mysqli->set_charset("latin1");
?>

If a server fails in the middle of a transaction the plugin continues to refuse to switch connections until the current transaction has been finished. Recall that the plugin monitors API calls to detect transaction boundaries. Thus, you have to, for example, enable auto commit mode to end the current transaction before the plugin continues load balancing and switches the server. Likewise, you will want to start a new transaction immediately thereafter and disable auto commit mode again.

Not handling failed queries and not ending a failed transaction using API calls may cause all following commands emit errors such as Commands out of sync; you can't run this command now. Thus, it is important to handle all errors.

transient_error object

The setting has been introduced in 1.6.0.

A database cluster node may reply a transient error to a client. The client can then repeat the operation on the same node, fail over to a different node or abort the operation. Per definition is it safe for a client to retry the same operation on the same node before giving up.

PECL/mysqlnd_ms can perform the retry loop on behalf of the application. By configuring transient_error the plugin can be instructed to repeat operations failing with a certain error code for a certain maximum number of times with a pause between the retries. If the transient error disappears during loop execution, it is hidden from the application. Otherwise, the error is forwarded to the application by the end of the loop.

Example #32 Retry loop for transient errors

{
    "myapp": {
        "master": {
            "master_0": {
                "host": "localhost"
            }
        },
        "slave": {
            "slave_0": {
                "host": "192.168.78.136",
                "port": "3306"
            }
       },
       "transient_error": {
          "mysql_error_codes": [
            1297
          ],
          "max_retries": 2,
          "usleep_retry": 100
       }
    }
}

Keyword Description Version
mysql_error_codes

List of transient error codes. You may add any MySQL error code to the list. It is possible to consider any error as transient not only 1297 (HY000 (ER_GET_TEMPORARY_ERRMSG), Message: Got temporary error %d '%s' from %s). Before adding other codes but 1297 to the list, make sure your cluster supports a new attempt without impacting the state of your application.

Since 1.6.0.
max_retries

How often to retry an operation which fails with a transient error before forwarding the failure to the user.

Default: 1

Since 1.6.0.
usleep_retry

Milliseconds to sleep between transient error retries. The value is passed to the C function usleep(), hence the name.

Default: 100

Since 1.6.0.
xa object

The setting has been introduced in 1.6.0.

Note: Experimental

The feature is currently under development. There may be issues and/or feature limitations. Do not use in production environments.

state_store
record_participant_credentials

Whether to store the username and password of a global transaction participant in the participants table. If disabled, the garbage collection will use the default username and password when connecting to the participants. Unless you are using a different username and password for each of your MySQL servers, you can use the default and avoid storing the sensible information in state store.

Please note, username and password are stored in clear text when using the MySQL state store, which is the only one available. It is in your responsibility to protect this sensible information.

Default: false

participant_localhost_ip

During XA garbage collection the plugin may find a participant server for which the host localhost has been recorded. If the garbage collection takes place on another host but the host that has written the participant record to the state store, the host name localhost now resolves to a different host. Therefore, when recording a participant servers host name in the state store, a value of localhost must be replaced with the actual IP address of localhost.

Setting participant_localhost_ip should be considered only if using localhost cannot be avoided. From a garbage collection point of view only, it is preferrable not to configure any socket connection but to provide an IP address and port for a node.

mysql

The MySQL state store is the only state store available.

global_trx_table

Name of the MySQL table used to store the state of an ongoing or aborted global transaction. Use the below SQL statement to create the table. Make sure to edit the table name to match your configuration.

Default: mysqlnd_ms_xa_trx

Example #33 SQL definition for the MySQL state store transaction table

CREATE TABLE mysqlnd_ms_xa_trx (
  store_trx_id int(11) NOT NULL AUTO_INCREMENT,
  gtrid int(11) NOT NULL,
  format_id int(10) unsigned NOT NULL DEFAULT '1',
  state enum('XA_NON_EXISTING','XA_ACTIVE','XA_IDLE','XA_PREPARED','XA_COMMIT','XA_ROLLBACK') NOT NULL DEFAULT 'XA_NON_EXISTING',
  intend enum('XA_NON_EXISTING','XA_ACTIVE','XA_IDLE','XA_PREPARED','XA_COMMIT','XA_ROLLBACK') DEFAULT 'XA_NON_EXISTING',
  finished enum('NO','SUCCESS','FAILURE') NOT NULL DEFAULT 'NO',
  modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  started datetime DEFAULT NULL,
  timeout datetime DEFAULT NULL,
  PRIMARY KEY (store_trx_id),
  KEY idx_xa_id (gtrid,format_id,finished),
  KEY idx_state (state)
) ENGINE=InnoDB

participant_table

Name of the MySQL table used to store participants of an ongoing or aborted global transaction. Use the below SQL statement to create the table. Make sure to edit the table name to match your configuration.

Storing credentials can be enabled and disabled using record_participant_credentials

Default: mysqlnd_ms_xa_participants

Example #34 SQL definition for the MySQL state store transaction table

CREATE TABLE mysqlnd_ms_xa_participants (
  fk_store_trx_id int(11) NOT NULL,
  bqual varbinary(64) NOT NULL DEFAULT '',
  participant_id int(10) unsigned NOT NULL AUTO_INCREMENT,
  server_uuid varchar(127) DEFAULT NULL,
  scheme varchar(1024) NOT NULL,
  host varchar(127) DEFAULT NULL,
  port smallint(5) unsigned DEFAULT NULL,
  socket varchar(127) DEFAULT NULL,
  user varchar(127) DEFAULT NULL,
  password varchar(127) DEFAULT NULL,
  state enum('XA_NON_EXISTING','XA_ACTIVE','XA_IDLE','XA_PREPARED','XA_COMMIT','XA_ROLLBACK')
   NOT NULL DEFAULT 'XA_NON_EXISTING',
  health enum('OK','GC_DONE','CLIENT ERROR','SERVER ERROR') NOT NULL DEFAULT 'OK',
  connection_id int(10) unsigned DEFAULT NULL,
  client_errno smallint(5) unsigned DEFAULT NULL,
  client_error varchar(1024) DEFAULT NULL,
  modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (participant_id),
  KEY idx_xa_bqual (bqual),
  KEY idx_store_trx (fk_store_trx_id),
  CONSTRAINT mysqlnd_ms_xa_participants_ibfk_1 FOREIGN KEY (fk_store_trx_id)
    REFERENCES mysqlnd_ms_xa_trx (store_trx_id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB
garbage_collection_table

Name of the MySQL table used to track and synchronize garbage collection runs. Use the below SQL statement to create the table. Make sure to edit the table name to match your configuration.

Default: mysqlnd_ms_xa_gc

Example #35 SQL definition for the MySQL state store garbage collection table

CREATE TABLE mysqlnd_ms_xa_gc (
  gc_id int(10) unsigned NOT NULL AUTO_INCREMENT,
  gtrid int(11) NOT NULL,
  format_id int(10) unsigned NOT NULL DEFAULT '1',
  fk_store_trx_id int(11) DEFAULT NULL,
  modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  attempts smallint(5) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (gc_id),
  KEY idx_store_trx (gtrid,format_id,fk_store_trx_id)
) ENGINE=InnoDB
host

Host name of the MySQL server.

user

Name of the user used to connect to the MySQL server.

password

Password for the MySQL server user.

db

Database that holds the garbage collection tables. Please note, you have to create the garbage collection tables prior to using the plugin. The tables will not be created implicitly during runtime but garbage collection will fail if the tables to not exist.

port

Port of the MySQL server.

socket

Unix domain socket of the MySQL server. Please note, if you have multiple PHP servers each of them will try to carry out garbage collection and need to be able to connect to the state store. In this case, you may prefer configuring an IP address and a port for the MySQL state store server to ensure all PHP servers can reach it.

rollback_on_close

Whether to automatically rollback an open global transaction when a connection is closed. If enabled, it mimics the default behaviour of local transactions. Should a client disconnect, the server rolls back any open and unfinished transactions.

Default: true

garbage_collection
max_retries

Maximum number of garbage collection runs before giving up. Allowed values are from 0 to 100. A setting of 0 means no limit, unless the state store enforces a limit. Should the state store enforce a limit, it can be supposed to be significantly higher than 100. Available since 1.6.0.

Please note, it is important to end failed XA transactions within reasonable time to make participating servers free resources bound to the transaction. The built-in garbage collection is not expected to fail for a long period as long as crashed servers become available again quickly. Still, a situation may arise where a human is required to act because the built-in garbage collection stopped or failed. In this case, you may first want to check if the transaction still cannot be fixed by forcing mysqlnd_ms_xa_gc() to ignore the setting, prior to handling it manually.

Default: 5

probability

Garbage collection probability. Allowed values are from 0 to 1000. A setting of 0 disables automatic background garbage collection. Despite a setting of 0 it is still possible to trigger garbage collection by calling mysqlnd_ms_gc(). Available since 1.6.0.

The automatic garbage collection of stalled XA transaction is only available if a state store have been configured. The state store is responsible to keep track of XA transactions. Based on its recordings it can find blocked XA transactions where the client has crashed, connect to the participants and rollback the unfinished transactions.

The garbage collection is triggered as part of PHP's request shutdown procedure at the end of a web request. That is after your PHP script has finished working. Do decide whether to run the garbage collection a random value between 0 and 1000 is computed. If the probability value is higher or equal to the random value, the state stores garbage collection routines are invoked.

Default: 5

max_transactions_per_run

Maximum number of unfinished XA transactions considered by the garbage collection during one run. Allowed values are from 1 to 32768. Available since 1.6.0.

Cleaning up an unfinished XA transaction takes considerable amounts of time and resources. The garbage collection routine may have to connect to several participants of a failed global transaction to issue the SQL commands for rolling back the unfinished tranaction.

Default: 100

Plugin configuration file (<= 1.0.x)

Note:

The below description applies to PECL/mysqlnd_ms < 1.1.0-beta. It is not valid for later versions.

The plugin is using its own configuration file. The configuration file holds information on the MySQL replication master server, the MySQL replication slave servers, the server pick (load balancing) policy, the failover strategy and the use of lazy connections.

The PHP configuration directive mysqlnd_ms.ini_file is used to set the plugins configuration file.

The configuration file mimics standard the php.ini format. It consists of one or more sections. Every section defines its own unit of settings. There is no global section for setting defaults.

Applications reference sections by their name. Applications use section names as the host (server) parameter to the various connect methods of the mysqli, mysql and PDO_MYSQL extensions. Upon connect the mysqlnd plugin compares the hostname with all section names from the plugin configuration file. If hostname and section name match, the plugin will load the sections settings.

Example #36 Using section names example

[myapp]
master[] = localhost
slave[] = 192.168.2.27
slave[] = 192.168.2.28:3306
[localhost]
master[] = localhost:/tmp/mysql/mysql.sock
slave[] = 192.168.3.24:3305
slave[] = 192.168.3.65:3309
<?php
/* All of the following connections will be load balanced */
$mysqli = new mysqli("myapp", "username", "password", "database");
$pdo = new PDO('mysql:host=myapp;dbname=database', 'username', 'password');
$mysql = mysql_connect("myapp", "username", "password");

$mysqli = new mysqli("localhost", "username", "password", "database");
?>

Section names are strings. It is valid to use a section name such as 192.168.2.1, 127.0.0.1 or localhost. If, for example, an application connects to localhost and a plugin configuration section [localhost] exists, the semantics of the connect operation are changed. The application will no longer only use the MySQL server running on the host localhost but the plugin will start to load balance MySQL queries following the rules from the [localhost] configuration section. This way you can load balance queries from an application without changing the applications source code.

The master[], slave[] and pick[] configuration directives use a list-like syntax. Configuration directives supporting list-like syntax may appear multiple times in a configuration section. The plugin maintains the order in which entries appear when interpreting them. For example, the below example shows two slave[] configuration directives in the configuration section [myapp]. If doing round-robin load balancing for read-only queries, the plugin will send the first read-only query to the MySQL server mysql_slave_1 because it is the first in the list. The second read-only query will be send to the MySQL server mysql_slave_2 because it is the second in the list. Configuration directives supporting list-like syntax result are ordered from top to bottom in accordance to their appearance within a configuration section.

Example #37 List-like syntax

[myapp]
master[] = mysql_master_server
slave[] = mysql_slave_1
slave[] = mysql_slave_2

Here is a short explanation of the configuration directives that can be used.

master[] string

URI of a MySQL replication master server. The URI follows the syntax hostname[:port|unix_domain_socket].

The plugin supports using only one master server.

Setting a master server is mandatory. The plugin will report a warning upon connect if the user has failed to provide a master server for a configuration section. The warning may read (mysqlnd_ms) Cannot find master section in config. Furthermore the plugin may set an error code for the connection handle such as HY000/2000 (CR_UNKNOWN_ERROR). The corresponding error message depends on your language settings.

slave[] string

URI of one or more MySQL replication slave servers. The URI follows the syntax hostname[:port|unix_domain_socket].

The plugin supports using one or more slave servers.

Setting a slave server is mandatory. The plugin will report a warning upon connect if the user has failed to provide at least one slave server for a configuration section. The warning may read (mysqlnd_ms) Cannot find slaves section in config. Furthermore the plugin may set an error code for the connection handle such as HY000/2000 (CR_UNKNOWN_ERROR). The corresponding error message depends on your language settings.

pick[] string

Load balancing (server picking) policy. Supported policies: random, random_once (default), roundrobin, user.

If no load balancing policy is set, the plugin will default to random_once. The random_once policy picks a random slave server when running the first read-only statement. The slave server will be used for all read-only statements until the PHP script execution ends.

The random policy will pick a random server whenever a read-only statement is to be executed.

If using roundrobin the plugin iterates over the list of configured slave servers to pick a server for statement execution. If the plugin reaches the end of the list, it wraps around to the beginning of the list and picks the first configured slave server.

Setting more than one load balancing policy for a configuration section makes only sense in conjunction with user and mysqlnd_ms_set_user_pick_server(). If the user defined callback fails to pick a server, the plugin falls back to the second configured load balancing policy.

failover string

Failover policy. Supported policies: disabled (default), master.

If no failover policy is set, the plugin will not do any automatic failover (failover=disabled). Whenever the plugin fails to connect a server it will emit a warning and set the connections error code and message. Thereafter it is up to the application to handle the error and, for example, resent the last statement to trigger the selection of another server.

If using failover=master the plugin will implicitly failover to a slave, if available. Please check the concepts documentation to learn about potential pitfalls and risks of using failover=master.

lazy_connections bool

Controls the use of lazy connections. Lazy connections are connections which are not opened before the client sends the first connection.

It is strongly recommended to use lazy connections. Lazy connections help to keep the number of open connections low. If you disable lazy connections and, for example, configure one MySQL replication master server and two MySQL replication slaves, the plugin will open three connections upon the first call to a connect function although the application might use the master connection only.

Lazy connections bare a risk if you make heavy use of actions which change the state of a connection. The plugin does not dispatch all state changing actions to all connections from the connection pool. The few dispatched actions are applied to already opened connections only. Lazy connections opened in the future are not affected. If, for example, the connection character set is changed using a PHP MySQL API call, the plugin will change the character set of all currently opened connection. It will not remember the character set change to apply it on lazy connections opened in the future. As a result the internal connection pool would hold connections using different character sets. This is not desired. Remember that character sets are taken into account for escaping.

master_on_write bool

If set, the plugin will use the master server only after the first statement has been executed on the master. Applications can still send statements to the slaves using SQL hints to overrule the automatic decision.

The setting may help with replication lag. If an application runs an INSERT the plugin will, by default, use the master to execute all following statements, including SELECT statements. This helps to avoid problems with reads from slaves which have not replicated the INSERT yet.

trx_stickiness string

Transaction stickiness policy. Supported policies: disabled (default), master.

Experimental feature.

The setting requires 5.4.0 or newer. If used with PHP older than 5.4.0, the plugin will emit a warning like (mysqlnd_ms) trx_stickiness strategy is not supported before PHP 5.3.99.

If no transaction stickiness policy is set or, if setting trx_stickiness=disabled, the plugin is not transaction aware. Thus, the plugin may load balance connections and switch connections in the middle of a transaction. The plugin is not transaction safe. SQL hints must be used avoid connection switches during a transaction.

As of PHP 5.4.0 the mysqlnd library allows the plugin to monitor the autocommit mode set by calls to the libraries trx_autocommit() function. If setting trx_stickiness=master and autocommit gets disabled by a PHP MySQL extension invoking the mysqlnd library internal function call trx_autocommit(), the plugin is made aware of the begin of a transaction. Then, the plugin stops load balancing and directs all statements to the master server until autocommit is enabled. Thus, no SQL hints are required.

An example of a PHP MySQL API function calling the mysqlnd library internal function call trx_autocommit() is mysqli_autocommit().

Although setting trx_stickiness=master, the plugin cannot be made aware of autocommit mode changes caused by SQL statements such as SET AUTOCOMMIT=0.

Testing

Note:

The section applies to mysqlnd_ms 1.1.0 or newer, not the 1.0 series.

The PECL/mysqlnd_ms test suite is in the tests/ directory of the source distribution. The test suite consists of standard phpt tests, which are described on the PHP Quality Assurance Teams website.

Running the tests requires setting up one to four MySQL servers. Some tests don't connect to MySQL at all. Others require one server for testing. Some require two distinct servers. In some cases two servers are used to emulate a replication setup. In other cases a master and a slave of an existing MySQL replication setup are required for testing. The tests will try to detect how many servers and what kind of servers are given. If the required servers are not found, the test will be skipped automatically.

Before running the tests, edit tests/config.inc to configure the MySQL servers to be used for testing.

The most basic configuration is as follows.

 putenv("MYSQL_TEST_HOST=localhost");
 putenv("MYSQL_TEST_PORT=3306");
 putenv("MYSQL_TEST_USER=root");
 putenv("MYSQL_TEST_PASSWD=");
 putenv("MYSQL_TEST_DB=test");
 putenv("MYSQL_TEST_ENGINE=MyISAM");
 putenv("MYSQL_TEST_SOCKET=");

 putenv("MYSQL_TEST_SKIP_CONNECT_FAILURE=1");
 putenv("MYSQL_TEST_CONNECT_FLAGS=0");
 putenv("MYSQL_TEST_EXPERIMENTAL=0");

 /* replication cluster emulation */
 putenv("MYSQL_TEST_EMULATED_MASTER_HOST=". getenv("MYSQL_TEST_HOST"));
 putenv("MYSQL_TEST_EMULATED_SLAVE_HOST=". getenv("MYSQL_TEST_HOST"));

 /* real replication cluster */
 putenv("MYSQL_TEST_MASTER_HOST=". getenv("MYSQL_TEST_EMULATED_MASTER_HOST"));
 putenv("MYSQL_TEST_SLAVE_HOST=". getenv("MYSQL_TEST_EMULATED_SLAVE_HOST"));

MYSQL_TEST_HOST, MYSQL_TEST_PORT and MYSQL_TEST_SOCKET define the hostname, TCP/IP port and Unix domain socket of the default database server. MYSQL_TEST_USER and MYSQL_TEST_PASSWD contain the user and password needed to connect to the database/schema configured with MYSQL_TEST_DB. All configured servers must have the same database user configured to give access to the test database.

Using host, host:port or host:/path/to/socket syntax one can set an alternate host, host and port or host and socket for any of the servers.

putenv("MYSQL_TEST_SLAVE_HOST=192.168.78.136:3307"));
putenv("MYSQL_TEST_MASTER_HOST=myserver_hostname:/path/to/socket"));

Debugging and Tracing

The mysqlnd debug log can be used to debug and trace the actitivities of PECL/mysqlnd_ms. As a mysqlnd PECL/mysqlnd_ms adds trace information to the mysqlnd library debug file. Please, see the mysqlnd.debug PHP configuration directive documentation for a detailed description on how to configure the debug log.

Configuration setting example to activate the debug log:

mysqlnd.debug=d:t:x:O,/tmp/mysqlnd.trace

Note:

This feature is only available with a debug build of PHP. Works on Microsoft Windows if using a debug build of PHP and PHP was built using Microsoft Visual C version 9 and above.

The debug log shows mysqlnd library and PECL/mysqlnd_ms plugin function calls, similar to a trace log. Mysqlnd library calls are usually prefixed with mysqlnd_. PECL/mysqlnd internal calls begin with mysqlnd_ms.

Example excerpt from the debug log (connect):

[...]
>mysqlnd_connect
| info : host=myapp user=root db=test port=3306 flags=131072
| >mysqlnd_ms::connect
| | >mysqlnd_ms_config_json_section_exists
| | | info : section=[myapp] len=[5]
| | | >mysqlnd_ms_config_json_sub_section_exists
| | | | info : section=[myapp] len=[5]
| | | | info : ret=1
| | | <mysqlnd_ms_config_json_sub_section_exists
| | | info : ret=1
| | <mysqlnd_ms_config_json_section_exists
[...]

The debug log is not only useful for plugin developers but also to find the cause of user errors. For example, if your application does not do proper error handling and fails to record error messages, checking the debug and trace log may help finding the cause. Use of the debug log to debug application issues should be considered only if no other option is available. Writing the debug log to disk is a slow operation and may have negative impact on the application performance.

Example excerpt from the debug log (connection failure):

[...]
| | | | | | | info : adding error [Access denied for user 'root'@'localhost' (using password: YES)] to the list
| | | | | | | info : PACKET_FREE(0)
| | | | | | | info : PACKET_FREE(0x7f3ef6323f50)
| | | | | | | info : PACKET_FREE(0x7f3ef6324080)
| | | | | | <mysqlnd_auth_handshake
| | | | | | info : switch_to_auth_protocol=n/a
| | | | | | info : conn->error_info.error_no = 1045
| | | | | <mysqlnd_connect_run_authentication
| | | | | info : PACKET_FREE(0x7f3ef63236d8)
| | | | | >mysqlnd_conn::free_contents
| | | | | | >mysqlnd_net::free_contents
| | | | | | <mysqlnd_net::free_contents
| | | | | | info : Freeing memory of members
| | | | | | info : scheme=unix:///tmp/mysql.sock
| | | | | | >mysqlnd_error_list_pdtor
| | | | | | <mysqlnd_error_list_pdtor
| | | | | <mysqlnd_conn::free_contents
| | | | <mysqlnd_conn::connect
[...]

The trace log can also be used to verify correct behaviour of PECL/mysqlnd_ms itself, for example, to check which server has been selected for query execution and why.

Example excerpt from the debug log (plugin decision):

[...]
>mysqlnd_ms::query
| info : query=DROP TABLE IF EXISTS test
| >_mysqlnd_plugin_get_plugin_connection_data
| | info : plugin_id=5
| <_mysqlnd_plugin_get_plugin_connection_data
| >mysqlnd_ms_pick_server_ex
| | info : conn_data=0x7fb6a7d3e5a0 *conn_data=0x7fb6a7d410d0
| | >mysqlnd_ms_select_servers_all
| | <mysqlnd_ms_select_servers_all
| | >mysqlnd_ms_choose_connection_rr
| | | >mysqlnd_ms_query_is_select
[...]
| | | <mysqlnd_ms_query_is_select
[...]
| | | info : Init the master context
| | | info : list(0x7fb6a7d3f598) has 1
| | | info : Using master connection
| | | >mysqlnd_ms_advanced_connect
| | | | >mysqlnd_conn::connect
| | | | | info : host=localhost user=root db=test port=3306 flags=131072 persistent=0 state=0

In this case the statement DROP TABLE IF EXISTS test has been executed. Note that the statement string is shown in the log file. You may want to take measures to restrict access to the log for security considerations.

The statement has been load balanced using round robin policy, as you can easily guess from the functions name >mysqlnd_ms_choose_connection_rr. It has been sent to a master server running on host=localhost user=root db=test port=3306 flags=131072 persistent=0 state=0.

Monitoring

Plugin activity can be monitored using the mysqlnd trace log, mysqlnd statistics, mysqlnd_ms plugin statistics and external PHP debugging tools. Use of the trace log should be limited to debugging. It is recommended to use the plugins statistics for monitoring.

Writing a trace log is a slow operation. If using an external PHP debugging tool, please refer to the vendors manual about its performance impact and the type of information collected. In many cases, external debugging tools will provide call stacks. Often, a call stack or a trace log is more difficult to interpret than the statistics provided by the plugin.

Plugin statistics tell how often which kind of cluster node has been used (slave or master), why the node was used, if lazy connections have been used and if global transaction ID injection has been performed. The monitoring information provided enables user to verify plugin decisions and to plan their cluster resources based on usage pattern. The function mysqlnd_ms_get_stats() is used to access the statistics. Please, see the functions description for a list of available statistics.

Statistics are collected on a per PHP process basis. Their scope is a PHP process. Depending on the PHP deployment model a process may serve one or multiple web requests. If using CGI model, a PHP process serves one web request. If using FastCGI or pre-fork web server models, a PHP process usually serves multiple web requests. The same is the case with a threaded web server. Please, note that threads running in parallel can update the statistics in parallel. Thus, if using a threaded PHP deployment model, statistics can be changed by more than one script at a time. A script cannot rely on the fact that it sees only its own changes to statistics.

Example #38 Verify plugin activity in a non-threaded deployment model

mysqlnd_ms.enable=1
mysqlnd_ms.collect_statistics=1
<?php
/* Load balanced following "myapp" section rules from the plugins config file (not shown) */
$mysqli = new mysqli("myapp", "username", "password", "database");
if (mysqli_connect_errno())
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

$stats_before = mysqlnd_ms_get_stats();
if ($res = $mysqli->query("SELECT 'Read request' FROM DUAL")) {
  var_dump($res->fetch_all());
}
$stats_after = mysqlnd_ms_get_stats();
if ($stats_after['use_slave'] <= $stats_before['use_slave']) {
  echo "According to the statistics the read request has not been run on a slave!";
}
?>

Statistics are aggregated for all plugin activities and all connections handled by the plugin. It is not possible to tell how much a certain connection handle has contributed to the overall statistics.

Utilizing PHPs register_shutdown_function() function or the auto_append_file PHP configuration directive it is easily possible to dump statistics into, for example, a log file when a script finishes. Instead of using a log file it is also possible to send the statistics to an external monitoring tool for recording and display.

Example #39 Recording statistics during shutdown

mysqlnd_ms.enable=1
mysqlnd_ms.collect_statistics=1
error_log=/tmp/php_errors.log
<?php
function check_stats() {
  $msg = str_repeat("-", 80) . "\n";
  $msg .= var_export(mysqlnd_ms_get_stats(), true) . "\n";
  $msg .= str_repeat("-", 80) . "\n";
  error_log($msg);
}
register_shutdown_function("check_stats");
?>

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

SQL hint related

Example #1 Example demonstrating the usage of mysqlnd_ms constants

The mysqlnd replication and load balancing plugin (mysqlnd_ms) performs read/write splitting. This directs write queries to a MySQL master server, and read-only queries to the MySQL slave servers. The plugin has a built-in read/write split logic. All queries which start with SELECT are considered read-only queries, which are then sent to a MySQL slave server that is listed in the plugin configuration file. All other queries are directed to the MySQL master server that is also specified in the plugin configuration file.

User supplied SQL hints can be used to overrule automatic read/write splitting, to gain full control on the process. SQL hints are standards compliant SQL comments. The plugin will scan the beginning of a query string for an SQL comment for certain commands, which then control query redirection. Other systems involved in the query processing are unaffected by the SQL hints because other systems will ignore the SQL comments.

The plugin supports three SQL hints to direct queries to either the MySQL slave servers, the MySQL master server, or the last used MySQL server. SQL hints must be placed at the beginning of a query to be recognized by the plugin.

For better portability, it is recommended to use the string constants MYSQLND_MS_MASTER_SWITCH, MYSQLND_MS_SLAVE_SWITCH and MYSQLND_MS_LAST_USED_SWITCH instead of their literal values.

<?php
/* Use constants for maximum portability */
$master_query = "/*" . MYSQLND_MS_MASTER_SWITCH . "*/SELECT id FROM test";

/* Valid but less portable: using literal instead of constant */
$slave_query = "/*ms=slave*/SHOW TABLES";

printf("master_query = '%s'\n", $master_query);
printf("slave_query = '%s'\n", $slave_query);
?>

以上例程会输出：

master_query = /*ms=master*/SELECT id FROM test
slave_query = /*ms=slave*/SHOW TABLES

MYSQLND_MS_MASTER_SWITCH (string)
SQL hint used to send a query to the MySQL replication master server.
MYSQLND_MS_SLAVE_SWITCH (string)
SQL hint used to send a query to one of the MySQL replication slave servers.
MYSQLND_MS_LAST_USED_SWITCH (string)
SQL hint used to send a query to the last used MySQL server. The last used MySQL server can either be a master or a slave server in a MySQL replication setup.

mysqlnd_ms_query_is_select() related

MYSQLND_MS_QUERY_USE_MASTER (integer)
If mysqlnd_ms_is_select() returns MYSQLND_MS_QUERY_USE_MASTER for a given query, the built-in read/write split mechanism recommends sending the query to a MySQL replication master server.
MYSQLND_MS_QUERY_USE_SLAVE (integer)
If mysqlnd_ms_is_select() returns MYSQLND_MS_QUERY_USE_SLAVE for a given query, the built-in read/write split mechanism recommends sending the query to a MySQL replication slave server.
MYSQLND_MS_QUERY_USE_LAST_USED (integer)
If mysqlnd_ms_is_select() returns MYSQLND_MS_QUERY_USE_LAST_USED for a given query, the built-in read/write split mechanism recommends sending the query to the last used server.

mysqlnd_ms_set_qos(), quality of service filter and service level related

MYSQLND_MS_QOS_CONSISTENCY_EVENTUAL (integer)
Use to request the service level eventual consistency from the mysqlnd_ms_set_qos(). Eventual consistency is the default quality of service when reading from an asynchronous MySQL replication slave. Data returned in this service level may or may not be stale, depending on whether the selected slaves happen to have replicated the latest changes from the MySQL replication master or not.
MYSQLND_MS_QOS_CONSISTENCY_SESSION (integer)
Use to request the service level session consistency from the mysqlnd_ms_set_qos(). Session consistency is defined as read your writes. The client is guaranteed to see his latest changes.
MYSQLND_MS_QOS_CONSISTENCY_STRONG (integer)
Use to request the service level strong consistency from the mysqlnd_ms_set_qos(). Strong consistency is used to ensure all clients see each others changes.
MYSQLND_MS_QOS_OPTION_GTID (integer)
Used as a service level option with mysqlnd_ms_set_qos() to parameterize session consistency.
MYSQLND_MS_QOS_OPTION_AGE (integer)
Used as a service level option with mysqlnd_ms_set_qos() to parameterize eventual consistency.

Other

The plugins version number can be obtained using MYSQLND_MS_VERSION or MYSQLND_MS_VERSION_ID. MYSQLND_MS_VERSION is the string representation of the numerical version number MYSQLND_MS_VERSION_ID, which is an integer such as 10000. Developers can calculate the version number as follows.

Version (part) | Example
Major*10000 | 1*10000 = 10000
Minor*100 | 0*100 = 0
Patch | 0 = 0
MYSQLND_MS_VERSION_ID | 10000

MYSQLND_MS_VERSION (string)
Plugin version string, for example, "1.0.0-prototype".
MYSQLND_MS_VERSION_ID (integer)
Plugin version number, for example, 10000.

Plugin configuration file (>=1.1.x)
Mysqlnd_ms 函数
mysqlnd_ms


Mysqlnd_ms 函数

Table of Contents

  • mysqlnd_ms_dump_servers — Returns a list of currently configured servers
  • mysqlnd_ms_fabric_select_global — Switch to global sharding server for a given table
  • mysqlnd_ms_fabric_select_shard — Switch to shard
  • mysqlnd_ms_get_last_gtid — 返回最后的全局同步 ID (GTID)
  • mysqlnd_ms_get_last_used_connection — Returns an array which describes the last used connection
  • mysqlnd_ms_get_stats — Returns query distribution and connection statistics
  • mysqlnd_ms_match_wild — Finds whether a table name matches a wildcard pattern or not
  • mysqlnd_ms_query_is_select — 查询给定的 SQL 会发送给 master、slave 还是最后使用的 MySQL server 执行。
  • mysqlnd_ms_set_qos — Sets the quality of service needed from the cluster
  • mysqlnd_ms_set_user_pick_server — Sets a callback for user-defined read/write splitting
  • mysqlnd_ms_xa_begin — Starts a distributed/XA transaction among MySQL servers
  • mysqlnd_ms_xa_commit — Commits a distributed/XA transaction among MySQL servers
  • mysqlnd_ms_xa_gc — Garbage collects unfinished XA transactions after severe errors
  • mysqlnd_ms_xa_rollback — Rolls back a distributed/XA transaction among MySQL servers
预定义常量
mysqlnd_ms_dump_servers
mysqlnd_ms


Returns a list of currently configured servers

Mysqlnd_ms 函数
mysqlnd_ms_fabric_select_global
Mysqlnd_ms 函数
PHP Manual

mysqlnd_ms_dump_servers

(No version information available, might only be in Git)

mysqlnd_ms_dump_servers — Returns a list of currently configured servers

说明

array mysqlnd_ms_dump_servers ( mixed $connection )

Returns a list of currently configured servers.

参数

connection

A MySQL connection handle obtained from any of the connect functions of the mysqli, mysql or PDO_MYSQL extensions.

返回值

FALSE on error. Otherwise, returns an array with two entries masters and slaves each of which contains an array listing all corresponding servers.

The function can be used to check and debug the list of servers currently used by the plugin. It is mostly useful when the list of servers changes at runtime, for example, when using MySQL Fabric.

masters and slaves server entries

Key | Description | Version
name_from_config | Server entry name from config, if appliciable. NULL if no configuration name is available. | Since 1.6.0.
hostname | Host name of the server. | Since 1.6.0.
user | Database user used to authenticate against the server. | Since 1.6.0.
port | TCP/IP port of the server. | Since 1.6.0.
socket | Unix domain socket of the server. | Since 1.6.0.

注释

Note:

mysqlnd_ms_dump_servers() requires PECL mysqlnd_ms >> 1.6.0.

范例

Example #1 mysqlnd_ms_dump_servers() example

{
    "myapp": {
        "master": {
            "master1": {
                "host":"master1_host",
                "port":"master1_port",
                "socket":"master1_socket",
                "db":"master1_db",
                "user":"master1_user",
                "password":"master1_pw"
            }
        },
        "slave": {
             "slave_0": {
                 "host":"slave0_host",
                 "port":"slave0_port",
                 "socket":"slave0_socket",
                 "db":"slave0_db",
                 "user":"slave0_user",
                 "password":"slave0_pw"
             },
             "slave_1": {
                 "host":"slave1_host"
             }
        }
    }
}
<?php
$link = mysqli_connect("myapp", "global_user", "global_pass", "global_db", 1234, "global_socket");
var_dump(mysqlnd_ms_dump_servers($link);
?>

以上例程会输出：

array(2) {
  ["masters"]=>
  array(1) {
    [0]=>
    array(5) {
      ["name_from_config"]=>
      string(7) "master1"
      ["hostname"]=>
      string(12) "master1_host"
      ["user"]=>
      string(12) "master1_user"
      ["port"]=>
      int(3306)
      ["socket"]=>
      string(14) "master1_socket"
    }
  }
  ["slaves"]=>
  array(2) {
    [0]=>
    array(5) {
      ["name_from_config"]=>
      string(7) "slave_0"
      ["hostname"]=>
      string(11) "slave0_host"
      ["user"]=>
      string(11) "slave0_user"
      ["port"]=>
      int(3306)
      ["socket"]=>
      string(13) "slave0_socket"
    }
    [1]=>
    array(5) {
      ["name_from_config"]=>
      string(7) "slave_1"
      ["hostname"]=>
      string(11) "slave1_host"
      ["user"]=>
      string(12) "gloabal_user"
      ["port"]=>
      int(1234)
      ["socket"]=>
      string(13) "global_socket"
    }
  }
}

Mysqlnd_ms 函数
mysqlnd_ms_fabric_select_global
Mysqlnd_ms 函数


Switch to global sharding server for a given table

mysqlnd_ms_dump_servers
mysqlnd_ms_fabric_select_shard
Mysqlnd_ms 函数
PHP Manual

mysqlnd_ms_fabric_select_global

(No version information available, might only be in Git)

mysqlnd_ms_fabric_select_global — Switch to global sharding server for a given table

说明

array mysqlnd_ms_fabric_select_global ( mixed $connection , mixed $table_name )
Warning

本函数还未编写文档，仅有参数列表。

MySQL Fabric related.

Switch the connection to the nodes handling global sharding queries for the given table name.

参数

connection

A MySQL connection handle obtained from any of the connect functions of the mysqli, mysql or PDO_MYSQL extensions.

table_name

The table name to ask Fabric about.

返回值

FALSE on error. Otherwise, TRUE

注释

Note:

mysqlnd_ms_fabric_select_global() requires PECL mysqlnd_ms >> 1.6.0.

mysqlnd_ms_dump_servers
mysqlnd_ms_fabric_select_shard
Mysqlnd_ms 函数


Switch to shard

mysqlnd_ms_fabric_select_global
mysqlnd_ms_get_last_gtid
Mysqlnd_ms 函数
PHP Manual

mysqlnd_ms_fabric_select_shard

(No version information available, might only be in Git)

mysqlnd_ms_fabric_select_shard — Switch to shard

说明

array mysqlnd_ms_fabric_select_shard ( mixed $connection , mixed $table_name , mixed $shard_key )
Warning

本函数还未编写文档，仅有参数列表。

MySQL Fabric related.

Switch the connection to the shards responsible for the given table name and shard key.

参数

connection

A MySQL connection handle obtained from any of the connect functions of the mysqli, mysql or PDO_MYSQL extensions.

table_name

The table name to ask Fabric about.

shard_key

The shard key to ask Fabric about.

返回值

FALSE on error. Otherwise, TRUE

注释

Note:

mysqlnd_ms_fabric_select_shard() requires PECL mysqlnd_ms >> 1.6.0.

mysqlnd_ms_fabric_select_global
mysqlnd_ms_get_last_gtid
Mysqlnd_ms 函数


返回最后的全局同步 ID (GTID)

mysqlnd_ms_fabric_select_shard
mysqlnd_ms_get_last_used_connection
Mysqlnd_ms 函数
PHP Manual

mysqlnd_ms_get_last_gtid

(PECL mysqlnd_ms >= 1.2.0)

mysqlnd_ms_get_last_gtid — 返回最后的全局同步 ID (GTID)

说明

string mysqlnd_ms_get_last_gtid ( mixed $connection )

返回最后一次写操作以后的 GTID，他并不能保证一定是那次写操作产生的 GTID，但是得到的 GTID 一定比这次写操作产生的 GTID 大。

参数

connection

由 PDO_MYSQL, mysqli> 或者 ext/mysql 产生的 MySQL 服务器连接， 这些链接受 PECL/mysqlnd_ms 连接控制。连接的创建是通过 mysqlnd_ms 配置文件中 约定的群组名称建立的。

返回值

成功返回 GTID，失败返回 FALSE。

函数通过配置文件中 global_transaction_id_injection 章节定义的 fetch_last_gtid 参数来获取 GTID。

在函数调用的时候，GTID 可能已经增加了。

注释

Note:

函数需要 PHP >= 5.4.0 版本，PECL/mysqlnd_ms >= 1.2.0 版本，在 PHP 5.3 版本中 mysqlnd 库不能使用。

范例

Example #1 mysqlnd_ms_get_last_gtid() example

<?php
/* Open mysqlnd_ms connection using mysqli, PDO_MySQL or mysql extension */
$mysqli = new mysqli("myapp", "username", "password", "database");
if (!$mysqli)
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

/* auto commit mode, transaction on master, GTID must be incremented */
if (!$mysqli->query("DROP TABLE IF EXISTS test"))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

printf("GTID after transaction %s\n", mysqlnd_ms_get_last_gtid($mysqli));

/* auto commit mode, transaction on master, GTID must be incremented */
if (!$mysqli->query("CREATE TABLE test(id INT)"))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

printf("GTID after transaction %s\n", mysqlnd_ms_get_last_gtid($mysqli));
?>

参见

  • Global Transaction IDs

mysqlnd_ms_fabric_select_shard
mysqlnd_ms_get_last_used_connection
Mysqlnd_ms 函数


Returns an array which describes the last used connection

mysqlnd_ms_get_last_gtid
mysqlnd_ms_get_stats
Mysqlnd_ms 函数
PHP Manual

mysqlnd_ms_get_last_used_connection

(PECL mysqlnd_ms >= 1.1.0)

mysqlnd_ms_get_last_used_connection — Returns an array which describes the last used connection

说明

array mysqlnd_ms_get_last_used_connection ( mixed $connection )

Returns an array which describes the last used connection from the plugins connection pool currently pointed to by the user connection handle. If using the plugin, a user connection handle represents a pool of database connections. It is not possible to tell from the user connection handles properties to which database server from the pool the user connection handle points.

The function can be used to debug or monitor PECL mysqlnd_ms.

参数

connection

A MySQL connection handle obtained from any of the connect functions of the mysqli, mysql or PDO_MYSQL extensions.

返回值

FALSE on error. Otherwise, an array which describes the connection used to execute the last statement on.

Array which describes the connection.

Property | Description | Version
scheme | Connection scheme. Either tcp://host:port or unix://host:socket. If you want to distinguish connections from each other use a combination of scheme and thread_id as a unique key. Neither scheme nor thread_id alone are sufficient to distinguish two connections from each other. Two servers may assign the same thread_id to two different connections. Thus, connections in the pool may have the same thread_id. Also, do not rely on uniqueness of scheme in a pool. Your QA engineers may use the same MySQL server instance for two distinct logical roles and add it multiple times to the pool. This hack is used, for example, in the test suite. | Since 1.1.0.
host | Database server host used with the connection. The host is only set with TCP/IP connections. It is empty with Unix domain or Windows named pipe connections, | Since 1.1.0.
host_info | A character string representing the server hostname and the connection type. | Since 1.1.2.
port | Database server port used with the connection. | Since 1.1.0.
socket_or_pipe | Unix domain socket or Windows named pipe used with the connection. The value is empty for TCP/IP connections. | Since 1.1.2.
thread_id | Connection thread id. | Since 1.1.0.
last_message | Info message obtained from the MySQL C API function mysql_info(). Please, see mysqli_info() for a description. | Since 1.1.0.
errno | Error code. | Since 1.1.0.
error | Error message. | Since 1.1.0.
sqlstate | Error SQLstate code. | Since 1.1.0.

注释

Note:

mysqlnd_ms_get_last_used_connection() requires PHP >= 5.4.0 and PECL mysqlnd_ms >> 1.1.0. Internally, it is using a mysqlnd library C call not available with PHP 5.3.

范例

The example assumes that myapp refers to a plugin configuration file section and represents a connection pool.

Example #1 mysqlnd_ms_get_last_used_connection() example

<?php
$link = new mysqli("myapp", "user", "password", "database");
$res = $link->query("SELECT 1 FROM DUAL");
var_dump(mysqlnd_ms_get_last_used_connection($link));
?>

以上例程会输出：

array(10) {
  ["scheme"]=>
  string(22) "unix:///tmp/mysql.sock"
  ["host_info"]=>
  string(25) "Localhost via UNIX socket"
  ["host"]=>
  string(0) ""
  ["port"]=>
  int(3306)
  ["socket_or_pipe"]=>
  string(15) "/tmp/mysql.sock"
  ["thread_id"]=>
  int(46253)
  ["last_message"]=>
  string(0) ""
  ["errno"]=>
  int(0)
  ["error"]=>
  string(0) ""
  ["sqlstate"]=>
  string(5) "00000"
}

mysqlnd_ms_get_last_gtid
mysqlnd_ms_get_stats
Mysqlnd_ms 函数


Returns query distribution and connection statistics

mysqlnd_ms_get_last_used_connection
mysqlnd_ms_match_wild
Mysqlnd_ms 函数
PHP Manual

mysqlnd_ms_get_stats

(PECL mysqlnd_ms >= 1.0.0)

mysqlnd_ms_get_stats — Returns query distribution and connection statistics

说明

array mysqlnd_ms_get_stats ( void )

Returns an array of statistics collected by the replication and load balancing plugin.

The PHP configuration setting mysqlnd_ms.collect_statistics controls the collection of statistics. The collection of statistics is disabled by default for performance reasons.

The scope of the statistics is the PHP process. Depending on your deployment model a PHP process may handle one or multiple requests.

Statistics are aggregated for all connections and all storage handler. It is not possible to tell how much queries originating from mysqli, PDO_MySQL or mysql API calls have contributed to the aggregated data values.

参数

此函数没有参数。

返回值

Returns NULL if the PHP configuration directive mysqlnd_ms.enable has disabled the plugin. Otherwise, returns array of statistics.

Array of statistics

Statistic | Description | Version
use_slave

The semantics of this statistic has changed between 1.0.1 - 1.1.0.

The meaning for version 1.0.1 is as follows. Number of statements considered as read-only by the built-in query analyzer. Neither statements which begin with a SQL hint to force use of slave nor statements directed to a slave by an user-defined callback are included. The total number of statements sent to the slaves is use_slave + use_slave_sql_hint + use_slave_callback.

PECL/mysqlnd_ms 1.1.0 introduces a new concept of chained filters. The statistics is now set by the internal load balancing filter. With version 1.1.0 the load balancing filter is always the last in the filter chain, if used. In future versions a load balancing filter may be followed by other filters causing another change in the meaning of the statistic. If, in the future, a load balancing filter is followed by another filter it is no longer guaranteed that the statement, which increments use_slave, will be executed on the slaves.

The meaning for version 1.1.0 is as follows. Number of statements sent to the slaves. Statements directed to a slave by the user filter (an user-defined callback) are not included. The latter are counted by use_slave_callback.

Since 1.0.0.
use_master

The semantics of this statistic has changed between 1.0.1 - 1.1.0.

The meaning for version 1.0.1 is as follows. Number of statements not considered as read-only by the built-in query analyzer. Neither statements which begin with a SQL hint to force use of master nor statements directed to a master by an user-defined callback are included. The total number of statements sent to the master is use_master + use_master_sql_hint + use_master_callback.

PECL/mysqlnd_ms 1.1.0 introduces a new concept of chained filters. The statictics is now set by the internal load balancing filter. With version 1.1.0 the load balancing filter is always the last in the filter chain, if used. In future versions a load balancing filter may be followed by other filters causing another change in the meaning of the statistic. If, in the future, a load balancing filter is followed by another filter it is no longer guaranteed that the statement, which increments use_master, will be executed on the slaves.

The meaning for version 1.1.0 is as follows. Number of statements sent to the masters. Statements directed to a master by the user filter (an user-defined callback) are not included. The latter are counted by use_master_callback.

Since 1.0.0.
use_slave_guess | Number of statements the built-in query analyzer recommends sending to a slave because they contain no SQL hint to force use of a certain server. The recommendation may be overruled in the following. It is not guaranteed whether the statement will be executed on a slave or not. This is how often the internal is_select function has guessed that a slave shall be used. Please, see also the user space function mysqlnd_ms_query_is_select(). | Since 1.1.0.
use_master_guess | Number of statements the built-in query analyzer recommends sending to a master because they contain no SQL hint to force use of a certain server. The recommendation may be overruled in the following. It is not guaranteed whether the statement will be executed on a slave or not. This is how often the internal is_select function has guessed that a master shall be used. Please, see also the user space function mysqlnd_ms_query_is_select(). | Since 1.1.0.
use_slave_sql_hint | Number of statements sent to a slave because statement begins with the SQL hint to force use of slave. | Since 1.0.0.
use_master_sql_hint | Number of statements sent to a master because statement begins with the SQL hint to force use of master. | Since 1.0.0.
use_last_used_sql_hint | Number of statements sent to server which has run the previous statement, because statement begins with the SQL hint to force use of previously used server. | Since 1.0.0.
use_slave_callback | Number of statements sent to a slave because an user-defined callback has chosen a slave server for statement execution. | Since 1.0.0.
use_master_callback | Number of statements sent to a master because an user-defined callback has chosen a master server for statement execution. | Since 1.0.0.
non_lazy_connections_slave_success | Number of successfully opened slave connections from configurations not using lazy connections. The total number of successfully opened slave connections is non_lazy_connections_slave_success + lazy_connections_slave_success | Since 1.0.0.
non_lazy_connections_slave_failure | Number of failed slave connection attempts from configurations not using lazy connections. The total number of failed slave connection attempts is non_lazy_connections_slave_failure + lazy_connections_slave_failure | Since 1.0.0.
non_lazy_connections_master_success | Number of successfully opened master connections from configurations not using lazy connections. The total number of successfully opened master connections is non_lazy_connections_master_success + lazy_connections_master_success | Since 1.0.0.
non_lazy_connections_master_failure | Number of failed master connection attempts from configurations not using lazy connections. The total number of failed master connection attempts is non_lazy_connections_master_failure + lazy_connections_master_failure | Since 1.0.0.
lazy_connections_slave_success | Number of successfully opened slave connections from configurations using lazy connections. | Since 1.0.0.
lazy_connections_slave_failure | Number of failed slave connection attempts from configurations using lazy connections. | Since 1.0.0.
lazy_connections_master_success | Number of successfully opened master connections from configurations using lazy connections. | Since 1.0.0.
lazy_connections_master_failure | Number of failed master connection attempts from configurations using lazy connections. | Since 1.0.0.
trx_autocommit_on | Number of autocommit mode activations via API calls. This figure may be used to monitor activity related to the plugin configuration setting trx_stickiness. If, for example, you want to know if a certain API call invokes the mysqlnd library function trx_autocommit(), which is a requirement for trx_stickiness, you may call the user API function in question and check if the statistic has changed. The statistic is modified only by the plugins internal subclassed trx_autocommit() method. | Since 1.0.0.
trx_autocommit_off | Number of autocommit mode deactivations via API calls. | Since 1.0.0.
trx_master_forced | Number of statements redirected to the master while trx_stickiness=master and autocommit mode is disabled. | Since 1.0.0.
gtid_autocommit_injections_success | Number of successful SQL injections in autocommit mode as part of the plugins client-side global transaction id emulation. | Since 1.2.0.
gtid_autocommit_injections_failure | Number of failed SQL injections in autocommit mode as part of the plugins client-side global transaction id emulation. | Since 1.2.0.
gtid_commit_injections_success | Number of successful SQL injections in commit mode as part of the plugins client-side global transaction id emulation. | Since 1.2.0.
gtid_commit_injections_failure | Number of failed SQL injections in commit mode as part of the plugins client-side global transaction id emulation. | Since 1.2.0.
gtid_implicit_commit_injections_success | Number of successful SQL injections when implicit commit is detected as part of the plugins client-side global transaction id emulation. Implicit commit happens, for example, when autocommit has been turned off, a query is executed and autocommit is enabled again. In that case, the statement will be committed by the server and SQL to maintain is injected before the autocommit is re-enabled. Another sequence causing an implicit commit is begin(), query(), begin(). The second call to begin() will implicitly commit the transaction started by the first call to begin(). begin() refers to internal library calls not actual PHP user API calls. | Since 1.2.0.
gtid_implicit_commit_injections_failure | Number of failed SQL injections when implicit commit is detected as part of the plugins client-side global transaction id emulation. Implicit commit happens, for example, when autocommit has been turned off, a query is executed and autocommit is enabled again. In that case, the statement will be committed by the server and SQL to maintain is injected before the autocommit is re-enabled. | Since 1.2.0.
transient_error_retries | How often an operation has been retried when a transient error was detected. See also, transient_error plugin configuration file setting. | Since 1.6.0.
fabric_sharding_lookup_servers_success | Number of successful sharding.lookup_servers remote procedure calls to MySQL Fabric. A call is considered successful if the plugin could reach MySQL Fabric and got any reply. The reply itself may or may not be understood by the plugin. Success refers to the network transport only. If the reply was not understood or indicates a valid error condition, fabric_sharding_lookup_servers_xml_failure gets incremented. | Since 1.6.0.
fabric_sharding_lookup_servers_failure | Number of failed sharding.lookup_servers remote procedure calls to MySQL Fabric. A remote procedure call is considered failed if there was a network error in connecting to, writing to or reading from MySQL Fabric. | Since 1.6.0.
fabric_sharding_lookup_servers_time_total | Time spent connecting to,writing to and reading from MySQL Fabrich during the sharding.lookup_servers remote procedure call. The value is aggregated for all calls. Time is measured in microseconds. | Since 1.6.0.
fabric_sharding_lookup_servers_bytes_total | Total number of bytes received from MySQL Fabric in reply to sharding.lookup_servers calls. | Since 1.6.0.
fabric_sharding_lookup_servers_xml_failure | How often a reply from MySQL Fabric to sharding.lookup_servers calls was not understood. Please note, the current experimental implementation does not distinguish between valid errors returned and malformed replies. | Since 1.6.0.
xa_begin | How many XA/distributed transactions have been started using mysqlnd_ms_xa_begin(). | Since 1.6.0.
xa_commit_success | How many XA/distributed transactions have been successfully committed using mysqlnd_ms_xa_commit(). | Since 1.6.0.
xa_commit_failure | How many XA/distributed transactions failed to commit during mysqlnd_ms_xa_commit(). | Since 1.6.0.
xa_rollback_success | How many XA/distributed transactions have been successfully rolled back using mysqlnd_ms_xa_rollback(). The figure does not include implict rollbacks performed as a result of mysqlnd_ms_xa_commit() failure. | Since 1.6.0.
xa_rollback_failure | How many XA/distributed transactions could not be rolled back. This includes failures of mysqlnd_ms_xa_rollback() but also failured during rollback when closing a connection, if rollback_on_close is set. Please, see also xa_rollback_on_close below. | Since 1.6.0.
xa_participants | Total number of participants in any XA transaction started with mysqlnd_ms_xa_begin(). | Since 1.6.0.
xa_rollback_on_close | How many XA transactions have been rolled back implicitly when a connection was close and rollback_on_close is set. Depending on your coding policies, this may hint a flaw in your code as you may prefer to explicitly clean up resources. | Since 1.6.0.
pool_masters_total | Number of master servers (connections) in the internal connection pool. | Since 1.6.0.
pool_slaves_total | Number of slave servers (connections) in the internal connection pool. | Since 1.6.0.
pool_masters_active | Number of master servers (connections) from the internal connection pool which are currently used for picking a connection. | Since 1.6.0.
pool_slaves_active | Number of slave servers (connections) from the internal connection pool which are currently used for picking a connection. | Since 1.6.0.
pool_updates | How often the active connection list has been replaced and a new set of master and slave servers had been installed. | Since 1.6.0.
pool_master_reactivated | How often a master connection has been reused after being flushed from the active list. | Since 1.6.0.
pool_slave_reactivated | How often a slave connection has been reused after being flushed from the active list. | Since 1.6.0.

范例

Example #1 mysqlnd_ms_get_stats() example

<?php
printf("mysqlnd_ms.enable = %d\n", ini_get("mysqlnd_ms.enable"));
printf("mysqlnd_ms.collect_statistics = %d\n", ini_get("mysqlnd_ms.collect_statistics"));
var_dump(mysqlnd_ms_get_stats());
?>

以上例程会输出：

mysqlnd_ms.enable = 1
mysqlnd_ms.collect_statistics = 1
array(26) {
  ["use_slave"]=>
  string(1) "0"
  ["use_master"]=>
  string(1) "0"
  ["use_slave_guess"]=>
  string(1) "0"
  ["use_master_guess"]=>
  string(1) "0"
  ["use_slave_sql_hint"]=>
  string(1) "0"
  ["use_master_sql_hint"]=>
  string(1) "0"
  ["use_last_used_sql_hint"]=>
  string(1) "0"
  ["use_slave_callback"]=>
  string(1) "0"
  ["use_master_callback"]=>
  string(1) "0"
  ["non_lazy_connections_slave_success"]=>
  string(1) "0"
  ["non_lazy_connections_slave_failure"]=>
  string(1) "0"
  ["non_lazy_connections_master_success"]=>
  string(1) "0"
  ["non_lazy_connections_master_failure"]=>
  string(1) "0"
  ["lazy_connections_slave_success"]=>
  string(1) "0"
  ["lazy_connections_slave_failure"]=>
  string(1) "0"
  ["lazy_connections_master_success"]=>
  string(1) "0"
  ["lazy_connections_master_failure"]=>
  string(1) "0"
  ["trx_autocommit_on"]=>
  string(1) "0"
  ["trx_autocommit_off"]=>
  string(1) "0"
  ["trx_master_forced"]=>
  string(1) "0"
  ["gtid_autocommit_injections_success"]=>
  string(1) "0"
  ["gtid_autocommit_injections_failure"]=>
  string(1) "0"
  ["gtid_commit_injections_success"]=>
  string(1) "0"
  ["gtid_commit_injections_failure"]=>
  string(1) "0"
  ["gtid_implicit_commit_injections_success"]=>
  string(1) "0"
  ["gtid_implicit_commit_injections_failure"]=>
  string(1) "0"
  ["transient_error_retries"]=>
  string(1) "0"
}

参见

  • Runtime configuration
  • mysqlnd_ms.collect_statistics
  • mysqlnd_ms.enable
  • Monitoring

mysqlnd_ms_get_last_used_connection
mysqlnd_ms_match_wild
Mysqlnd_ms 函数


Finds whether a table name matches a wildcard pattern or not

mysqlnd_ms_get_stats
mysqlnd_ms_query_is_select
Mysqlnd_ms 函数
PHP Manual

mysqlnd_ms_match_wild

(PECL mysqlnd_ms >= 1.1.0)

mysqlnd_ms_match_wild — Finds whether a table name matches a wildcard pattern or not

说明

bool mysqlnd_ms_match_wild ( string $table_name , string $wildcard )

Finds whether a table name matches a wildcard pattern or not.

This function is not of much practical relevance with PECL mysqlnd_ms 1.1.0 because the plugin does not support MySQL replication table filtering yet.

参数

table_name

The table name to check if it is matched by the wildcard.

wildcard

The wildcard pattern to check against the table name. The wildcard pattern supports the same placeholders as MySQL replication filters do.

MySQL replication filters can be configured by using the MySQL Server configuration options --replicate-wild-do-table and --replicate-wild-do-db. Please, consult the MySQL Reference Manual to learn more about this MySQL Server feature.

The supported placeholders are:

  • % - zero or more literals
  • _ - one literal

Placeholders can be escaped using \.

返回值

Returns TRUE table_name is matched by wildcard. Otherwise, returns FALSE

范例

Example #1 mysqlnd_ms_match_wild() example

<?php
var_dump(mysqlnd_ms_match_wild("schema_name.table_name", "schema%"));
var_dump(mysqlnd_ms_match_wild("abc", "_"));
var_dump(mysqlnd_ms_match_wild("table1", "table_"));
var_dump(mysqlnd_ms_match_wild("asia_customers", "%customers"));
var_dump(mysqlnd_ms_match_wild("funny%table","funny\%table"));
var_dump(mysqlnd_ms_match_wild("funnytable", "funny%table"));
?>

以上例程会输出：

bool(true)
bool(false)
bool(true)
bool(true)
bool(true)
bool(true)

mysqlnd_ms_get_stats
mysqlnd_ms_query_is_select
Mysqlnd_ms 函数


查询给定的 SQL 会发送给 master、slave 还是最后使用的 MySQL server 执行。

mysqlnd_ms_match_wild
mysqlnd_ms_set_qos
Mysqlnd_ms 函数
PHP Manual

mysqlnd_ms_query_is_select

(PECL mysqlnd_ms >= 1.0.0)

mysqlnd_ms_query_is_select — 查询给定的 SQL 会发送给 master、slave 还是最后使用的 MySQL server 执行。

说明

int mysqlnd_ms_query_is_select ( string $query )

查询给定的 SQL 会发送给 master、slave 还是最后使用的 MySQL server 执行。

插件内置的读写分离会分析 SQL，然后决定到底把他发送到哪里执行。这个读写分离器非常 的基本和简单。插件会将所有的查询发送给 master，除非他以 SELECT 开头，或者使用 SQL hints 指定要去 slave 执行。因为这个读写分离很简单， 所以会将一些只读查询发送给主从同步的 master，例如：SHOW TABLES。

参数

query

要测试的 SQL 字符串。

返回值

返回 MYSQLND_MS_QUERY_USE_MASTER 说明发送给 master。 返回 MYSQLND_MS_QUERY_USE_SLAVE 说明是一个只读语句， 将发送给 slave 执行。返回 MYSQLND_MS_QUERY_USE_LAST_USED 说明会在上一次执行的服务器连接中执行，这可能是 master 也可能是 slave。

如果通过设定 mysqlnd_ms.disable_rw_split 禁用了读写分离， 那么函数可能返回 MYSQLND_MS_QUERY_USE_MASTER 或者返回 MYSQLND_MS_QUERY_USE_LAST_USED。

范例

Example #1 mysqlnd_ms_query_is_select() example

<?php
function is_select($query)
{
 switch (mysqlnd_ms_query_is_select($query))
 {
  case MYSQLND_MS_QUERY_USE_MASTER:
   printf("'%s' should be run on the master.\n", $query);
   break;
  case MYSQLND_MS_QUERY_USE_SLAVE:
   printf("'%s' should be run on a slave.\n", $query);
   break;
  case MYSQLND_MS_QUERY_USE_LAST_USED:
   printf("'%s' should be run on the server that has run the previous query\n", $query);
   break;
  default:
   printf("No suggestion where to run the '%s', fallback to master recommended\n", $query);
   break;
 }
}

is_select("INSERT INTO test(id) VALUES (1)");
is_select("SELECT 1 FROM DUAL");
is_select("/*" . MYSQLND_MS_LAST_USED_SWITCH . "*/SELECT 2 FROM DUAL");
?>

以上例程会输出：

INSERT INTO test(id) VALUES (1) should be run on the master.
SELECT 1 FROM DUAL should be run on a slave.
/*ms=last_used*/SELECT 2 FROM DUAL should be run on the server that has run the previous query

参见

  • Predefined Constants
  • user filter
  • Runtime configuration
  • mysqlnd_ms.disable_rw_split
  • mysqlnd_ms.enable

mysqlnd_ms_match_wild
mysqlnd_ms_set_qos
Mysqlnd_ms 函数


Sets the quality of service needed from the cluster

mysqlnd_ms_query_is_select
mysqlnd_ms_set_user_pick_server
Mysqlnd_ms 函数
PHP Manual

mysqlnd_ms_set_qos

(PECL mysqlnd_ms < 1.2.0)

mysqlnd_ms_set_qos — Sets the quality of service needed from the cluster

说明

bool mysqlnd_ms_set_qos ( mixed $connection , int $service_level [, int $service_level_option [, mixed $option_value ]] )

Sets the quality of service needed from the cluster. A database cluster delivers a certain quality of service to the user depending on its architecture. A major aspect of the quality of service is the consistency level the cluster can offer. An asynchronous MySQL replication cluster defaults to eventual consistency for slave reads: a slave may serve stale data, current data, or it may have not the requested data at all, because it is not synchronous to the master. In a MySQL replication cluster, only master accesses can give strong consistency, which promises that all clients see each others changes.

PECL/mysqlnd_ms hides the complexity of choosing appropriate nodes to achieve a certain level of service from the cluster. The "Quality of Service" filter implements the necessary logic. The filter can either be configured in the plugins configuration file, or at runtime using mysqlnd_ms_set_qos().

Similar results can be achieved with PECL mysqlnd_ms < 1.2.0, if using SQL hints to force the use of a certain type of node or using the master_on_write plugin configuration option. The first requires more code and causes more work on the application side. The latter is less refined than using the quality of service filter. Settings made through the function call can be reversed, as shown in the example below. The example temporarily switches to a higher service level (session consistency, read your writes) and returns back to the clusters default after it has performed all operations that require the better service. This way, read load on the master can be minimized compared to using master_on_write, which would continue using the master after the first write.

Since 1.5.0 calls will fail when done in the middle of a transaction if transaction stickiness is enabled and transaction boundaries have been detected. properly.

参数

connection

A PECL/mysqlnd_ms connection handle to a MySQL server of the type PDO_MYSQL, mysqli or ext/mysql for which a service level is to be set. The connection handle is obtained when opening a connection with a host name that matches a mysqlnd_ms configuration file entry using any of the above three MySQL driver extensions.

service_level

The requested service level: MYSQLND_MS_QOS_CONSISTENCY_EVENTUAL, MYSQLND_MS_QOS_CONSISTENCY_SESSION or MYSQLND_MS_QOS_CONSISTENCY_STRONG.

service_level_option

An option to parameterize the requested service level. The option can either be MYSQLND_MS_QOS_OPTION_GTID or MYSQLND_MS_QOS_OPTION_AGE.

The option MYSQLND_MS_QOS_OPTION_GTID can be used to refine the service level MYSQLND_MS_QOS_CONSISTENCY_SESSION. It must be combined with a fourth function parameter, the option_value. The option_value shall be a global transaction ID obtained from mysqlnd_ms_get_last_gtid(). If set, the plugin considers both master servers and asynchronous slaves for session consistency (read your writes). Otherwise, only masters are used to achieve session consistency. A slave is considered up-to-date and checked if it has already replicated the global transaction ID from option_value. Please note, searching appropriate slaves is an expensive and slow operation. Use the feature sparsely, if the master cannot handle the read load alone.

The MYSQLND_MS_QOS_OPTION_AGE option can be combined with the MYSQLND_MS_QOS_CONSISTENCY_EVENTUAL service level, to filter out asynchronous slaves that lag more seconds behind the master than option_value. If set, the plugin will only consider slaves for reading if SHOW SLAVE STATUS reports Slave_IO_Running=Yes, Slave_SQL_Running=Yes and Seconds_Behind_Master <= option_value. Please note, searching appropriate slaves is an expensive and slow operation. Use the feature sparsely in version 1.2.0. Future versions may improve the algorithm used to identify candidates. Please, see the MySQL reference manual about the precision, accuracy and limitations of the MySQL administrative command SHOW SLAVE STATUS.

option_value

Parameter value for the service level option. See also the service_level_option parameter.

返回值

Returns TRUE if the connections service level has been switched to the requested. Otherwise, returns FALSE

注释

Note:

mysqlnd_ms_set_qos() requires PHP >= 5.4.0 and PECL mysqlnd_ms >= 1.2.0. Internally, it is using a mysqlnd library C functionality not available with PHP 5.3.

Please note, all MySQL 5.6 production versions do not provide clients with enough information to use GTIDs for enforcing session consistency. In the worst case, the plugin will choose the master only.

范例

Example #1 mysqlnd_ms_set_qos() example

<?php
/* Open mysqlnd_ms connection using mysqli, PDO_MySQL or mysql extension */
$mysqli = new mysqli("myapp", "username", "password", "database");
if (!$mysqli)
  /* Of course, your error handling is nicer... */
  die(sprintf("[%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()));

/* Session consistency: read your writes */
$ret = mysqlnd_ms_set_qos($mysqli, MYSQLND_MS_QOS_CONSISTENCY_SESSION);
if (!$ret)
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

/* Will use master and return fresh data, client can see his last write */
if (!$res = $mysqli->query("SELECT item, price FROM orders WHERE order_id = 1"))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

/* Back to default: use of all slaves and masters permitted, stale data can happen */
if (!mysqlnd_ms_set_qos($mysqli, MYSQLND_MS_QOS_CONSISTENCY_EVENTUAL))
  die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));
?>

参见

  • mysqlnd_ms_get_last_gtid() - 返回最后的全局同步 ID (GTID)
  • Service level and consistency concept
  • Filter concept

mysqlnd_ms_query_is_select
mysqlnd_ms_set_user_pick_server
Mysqlnd_ms 函数


Sets a callback for user-defined read/write splitting

mysqlnd_ms_set_qos
mysqlnd_ms_xa_begin
Mysqlnd_ms 函数
PHP Manual

mysqlnd_ms_set_user_pick_server

(PECL mysqlnd_ms < 1.1.0)

mysqlnd_ms_set_user_pick_server — Sets a callback for user-defined read/write splitting

说明

bool mysqlnd_ms_set_user_pick_server ( string $function )

Sets a callback for user-defined read/write splitting. The plugin will call the callback only if pick[]=user is the default rule for server picking in the relevant section of the plugins configuration file.

The plugins built-in read/write query split mechanism decisions can be overwritten in two ways. The easiest way is to prepend the query string with the SQL hints MYSQLND_MS_MASTER_SWITCH, MYSQLND_MS_SLAVE_SWITCH or MYSQLND_MS_LAST_USED_SWITCH. Using SQL hints one can control, for example, whether a query shall be send to the MySQL replication master server or one of the slave servers. By help of SQL hints it is not possible to pick a certain slave server for query execution.

Full control on server selection can be gained using a callback function. Use of a callback is recommended to expert users only because the callback has to cover all cases otherwise handled by the plugin.

The plugin will invoke the callback function for selecting a server from the lists of configured master and slave servers. The callback function inspects the query to run and picks a server for query execution by returning the hosts URI, as found in the master and slave list.

If the lazy connections are enabled and the callback chooses a slave server for which no connection has been established so far and establishing the connection to the slave fails, the plugin will return an error upon the next action on the failed connection, for example, when running a query. It is the responsibility of the application developer to handle the error. For example, the application can re-run the query to trigger a new server selection and callback invocation. If so, the callback must make sure to select a different slave, or check slave availability, before returning to the plugin to prevent an endless loop.

参数

function

The function to be called. Class methods may also be invoked statically using this function by passing array($classname, $methodname) to this parameter. Additionally class methods of an object instance may be called by passing array($objectinstance, $methodname) to this parameter.

返回值

Host to run the query on. The host URI is to be taken from the master and slave connection lists passed to the callback function. If callback returns a value neither found in the master nor in the slave connection lists the plugin will fallback to the second pick method configured via the pick[] setting in the plugin configuration file. If not second pick method is given, the plugin falls back to the build-in default pick method for server selection.

注释

Note:

mysqlnd_ms_set_user_pick_server() is available with PECL mysqlnd_ms < 1.1.0. It has been replaced by the user filter. Please, check the Change History for upgrade notes.

范例

Example #1 mysqlnd_ms_set_user_pick_server() example

[myapp]
master[] = localhost
slave[] = 192.168.2.27:3306
slave[] = 192.168.78.136:3306
pick[] = user
<?php

function pick_server($connected, $query, $master, $slaves, $last_used)
{
 static $slave_idx = 0;
 static $num_slaves = NULL;
 if (is_null($num_slaves))
  $num_slaves = count($slaves);

 /* default: fallback to the plugins build-in logic */
 $ret = NULL;

 printf("User has connected to '%s'...\n", $connected);
 printf("... deciding where to run '%s'\n", $query);

 $where = mysqlnd_ms_query_is_select($query);
 switch ($where)
 {
  case MYSQLND_MS_QUERY_USE_MASTER:
   printf("... using master\n");
   $ret = $master[0];
   break;
  case MYSQLND_MS_QUERY_USE_SLAVE:
   /* SELECT or SQL hint for using slave */
   if (stristr($query, "FROM table_on_slave_a_only"))
   {
    /* a table which is only on the first configured slave  */
    printf("... access to table available only on slave A detected\n");
    $ret = $slaves[0];
   }
   else
   {
    /* round robin */
    printf("... some read-only query for a slave\n");
    $ret = $slaves[$slave_idx++ % $num_slaves];
   }
   break;
  case MYSQLND_MS_QUERY_LAST_USED:
   printf("... using last used server\n");
   $ret = $last_used;
   break;
 }

 printf("... ret = '%s'\n", $ret);
 return $ret;
}

mysqlnd_ms_set_user_pick_server("pick_server");

$mysqli = new mysqli("myapp", "root", "root", "test");

if (!($res = $mysqli->query("SELECT 1 FROM DUAL")))
 printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
else
 $res->close();

if (!($res = $mysqli->query("SELECT 2 FROM DUAL")))
 printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
else
 $res->close();

if (!($res = $mysqli->query("SELECT * FROM table_on_slave_a_only")))
 printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
else
 $res->close();

$mysqli->close();
?>

以上例程会输出：

User has connected to 'myapp'...
... deciding where to run 'SELECT 1 FROM DUAL'
... some read-only query for a slave
... ret = 'tcp://192.168.2.27:3306'
User has connected to 'myapp'...
... deciding where to run 'SELECT 2 FROM DUAL'
... some read-only query for a slave
... ret = 'tcp://192.168.78.136:3306'
User has connected to 'myapp'...
... deciding where to run 'SELECT * FROM table_on_slave_a_only'
... access to table available only on slave A detected
... ret = 'tcp://192.168.2.27:3306'

参见

  • mysqlnd_ms_query_is_select() - 查询给定的 SQL 会发送给 master、slave 还是最后使用的 MySQL server 执行。
  • Filter concept
  • user filter

mysqlnd_ms_set_qos
mysqlnd_ms_xa_begin
Mysqlnd_ms 函数


Starts a distributed/XA transaction among MySQL servers

mysqlnd_ms_set_user_pick_server
mysqlnd_ms_xa_commit
Mysqlnd_ms 函数
PHP Manual

mysqlnd_ms_xa_begin

(PECL mysqlnd_ms < 1.6.0)

mysqlnd_ms_xa_begin — Starts a distributed/XA transaction among MySQL servers

说明

int mysqlnd_ms_xa_begin ( mixed $connection , string $gtrid [, int $timeout ] )

Starts a XA transaction among MySQL servers. PECL/mysqlnd_ms acts as a transaction coordinator the distributed transaction.

Once a global transaction has been started, the plugin injects appropriate XA BEGIN SQL statements on all MySQL servers used in the following. The global transaction is either ended by calling mysqlnd_ms_xa_commit(), mysqlnd_ms_xa_rollback() or by an implicit rollback in case of an error.

During a global transaction, the plugin tracks all server switches, for example, when switching from one MySQL shard to another MySQL shard. Immediately before a query is run on a server that has not been participating in the global transaction yet, XA BEGIN is executed on the server. From a users perspective the injection happens during a call to a query execution function such as mysqli_query(). Should the injection fail an error is reported to the caller of the query execution function. The failing server does not become a participant in the global transaction. The user may retry executing a query on the server and hereby retry injecting XA BEGIN, abort the global transaction because not all required servers can participate, or ignore and continue the global without the failed server.

Reasons to fail executing XA BEGIN include but are not limited to a server being unreachable or the server having an open, concurrent XA transaction using the same xid.

Please note, global and local transactions are mutually exclusive. You cannot start a XA transaction when you have a local transaction open. The local transaction must be ended first. The plugin tries to detect this conflict as early as possible. It monitors API calls for controlling local transactions to learn about the current state. However, if using SQL statements for local transactions such as BEGIN, the plugin may not know the current state and the conflict is not detected before XA BEGIN is injected and executed.

The use of other XA resources but MySQL servers is not supported by the function. To carry out a global transaction among, for example, a MySQL server and another vendors database system, you should issue the systems SQL commands yourself.

Note: Experimental

The feature is currently under development. There may be issues and/or feature limitations. Do not use in production environments.

参数

connection

A MySQL connection handle obtained from any of the connect functions of the mysqli, mysql or PDO_MYSQL extensions.

gtrid

Global transaction identifier (gtrid). The gtrid is a binary string up to 64 bytes long. Please note, depending on your character set settings, 64 characters may require more than 64 bytes to store.

In accordance with the MySQL SQL syntax, XA transactions use identifiers made of three parts. An xid consists of a global transaction identifier (gtrid), a branch qualifier (bqual) and a format identifier (formatID). Only the global transaction identifier can and needs to be set.

The branch qualifier and format identifier are set automatically. The details should be considered implementation dependent, which may change without prior notice. In version 1.6 the branch qualifier is consecutive number which is incremented whenever a participant joins the global transaction.

timeout

Timeout in seconds. The default value is 60 seconds.

The timeout is a hint to the garbage collection. If a transaction is recorded to take longer than expected, the garbage collection begins checking the transactions status.

Setting a low value may make the garbage collection check the progress too often. Please note, checking the status of a global transaction may involve connecting to all recorded participants and possibly issuing queries on the servers.

返回值

Returns TRUE if there is no open local or global transaction and a new global transaction can be started. Otherwise, returns FALSE

参见

  • Quickstart XA/Distributed transactions
  • Runtime configuration
  • mysqlnd_ms_get_stats() - Returns query distribution and connection statistics

mysqlnd_ms_set_user_pick_server
mysqlnd_ms_xa_commit
Mysqlnd_ms 函数


Commits a distributed/XA transaction among MySQL servers

mysqlnd_ms_xa_begin
mysqlnd_ms_xa_gc
Mysqlnd_ms 函数
PHP Manual

mysqlnd_ms_xa_commit

(PECL mysqlnd_ms < 1.6.0)

mysqlnd_ms_xa_commit — Commits a distributed/XA transaction among MySQL servers

说明

int mysqlnd_ms_xa_commit ( mixed $connection , string $gtrid )

Commits a global transaction among MySQL servers started by mysqlnd_ms_xa_begin().

If any of the global transaction participants fails to commit an implicit rollback is performed. It may happen that not all cases can be handled during the rollback. For example, no attempts will be made to reconnect to a participant after the connection to the participant has been lost. Solving cases that cannot easily be rolled back is left to the garbage collection.

Note: Experimental

The feature is currently under development. There may be issues and/or feature limitations. Do not use in production environments.

参数

connection

A MySQL connection handle obtained from any of the connect functions of the mysqli, mysql or PDO_MYSQL extensions.

gtrid

Global transaction identifier (gtrid).

返回值

Returns TRUE if the global transaction has been committed. Otherwise, returns FALSE

参见

  • Quickstart XA/Distributed transactions
  • Runtime configuration
  • mysqlnd_ms_get_stats() - Returns query distribution and connection statistics

mysqlnd_ms_xa_begin
mysqlnd_ms_xa_gc
Mysqlnd_ms 函数


Garbage collects unfinished XA transactions after severe errors

mysqlnd_ms_xa_commit
mysqlnd_ms_xa_rollback
Mysqlnd_ms 函数
PHP Manual

mysqlnd_ms_xa_gc

(PECL mysqlnd_ms < 1.6.0)

mysqlnd_ms_xa_gc — Garbage collects unfinished XA transactions after severe errors

说明

int mysqlnd_ms_xa_gc ( mixed $connection [, string $gtrid [, boolean $ignore_max_retries ]] )

Garbage collects unfinished XA transactions.

The XA protocol is a blocking protocol. There exist cases when servers participating in a global transaction cannot make progress when the transaction coordinator crashes or disconnects. In such a case, the MySQL servers keep waiting for instructions to finish the XA transaction in question. Because transactions occupy resources, transactions should always be terminated properly.

Garbage collection requires configuring a state store to track global transactions. Should a PHP client crash in the middle of a transaction and a new PHP client be started, then the built-in garbage collection can learn about the aborted global transaction and terminate it. If you do not configure a state store, the garbage collection cannot perform any cleanup tasks.

The state store should be crash-safe and be highly available to survive its own crash. Currently, only MySQL is supported as a state store.

Garbage collection can also be performed automatically in the background. See the plugin configuration directive garbage_collection for details.

Note: Experimental

The feature is currently under development. There may be issues and/or feature limitations. Do not use in production environments.

参数

connection

A MySQL connection handle obtained from any of the connect functions of the mysqli, mysql or PDO_MYSQL extensions.

gtrid

Global transaction identifier (gtrid). If given, the garbage collection considers the transaction only. Otherwise, the state store is scanned for any unfinished transaction.

ignore_max_retries

Whether to ignore the plugin configuration max_retries setting. If garbage collection continuously fails and the max_retries limit is reached prior to finishing the failed global transaction, you can attempt further runs prior to investigating the cause and solving the issue manually by issuing appropriate SQL statements on the participants. Setting the parameter has the same effect as temporarily setting max_retries = 0.

返回值

Returns TRUE if garbage collection was successful. Otherwise, returns FALSE

参见

  • Quickstart XA/Distributed transactions
  • Runtime configuration
  • State store configuration
  • mysqlnd_ms_get_stats() - Returns query distribution and connection statistics

mysqlnd_ms_xa_commit
mysqlnd_ms_xa_rollback
Mysqlnd_ms 函数


Rolls back a distributed/XA transaction among MySQL servers

mysqlnd_ms_xa_gc
Change History
Mysqlnd_ms 函数
PHP Manual

mysqlnd_ms_xa_rollback

(PECL mysqlnd_ms < 1.6.0)

mysqlnd_ms_xa_rollback — Rolls back a distributed/XA transaction among MySQL servers

说明

int mysqlnd_ms_xa_rollback ( mixed $connection , string $gtrid )

Rolls back a global transaction among MySQL servers started by mysqlnd_ms_xa_begin().

If any of the global transaction participants fails to rollback the situation is left to be solved by the garbage collection.

Note: Experimental

The feature is currently under development. There may be issues and/or feature limitations. Do not use in production environments.

参数

connection

A MySQL connection handle obtained from any of the connect functions of the mysqli, mysql or PDO_MYSQL extensions.

gtrid

Global transaction identifier (gtrid).

返回值

Returns TRUE if the global transaction has been rolled back. Otherwise, returns FALSE

参见

  • Quickstart XA/Distributed transactions
  • Runtime configuration
  • mysqlnd_ms_get_stats() - Returns query distribution and connection statistics

mysqlnd_ms_xa_gc
Change History
Mysqlnd_ms 函数


Change History

Table of Contents

  • PECL/mysqlnd_ms 1.6 series
  • PECL/mysqlnd_ms 1.5 series
  • PECL/mysqlnd_ms 1.4 series
  • PECL/mysqlnd_ms 1.3 series
  • PECL/mysqlnd_ms 1.2 series
  • PECL/mysqlnd_ms 1.1 series
  • PECL/mysqlnd_ms 1.0 series

This change history is a high level summary of selected changes that may impact applications and/or break backwards compatibility.

See also the CHANGES file in the source distribution for a complete list of changes.

mysqlnd_ms_xa_rollback
PECL/mysqlnd_ms 1.6 series
mysqlnd_ms


PECL/mysqlnd_ms 1.6 series

1.6.0-alpha

  • Release date: TBD
  • Motto/theme: Maintenance and initial MySQL Fabric support

Note:

This is the current development series. All features are at an early stage. Changes may happen at any time without prior notice. Please, do not use this version in production environments.

The documentation may not reflect all changes yet.

Bug fixes

  • Won't fix: #66616 R/W split fails: QOS with mysqlnd_get_last_gtid with built-in MySQL GTID

    This is not a bug in the plugins implementation but a server side feature limitation not considered and documented before. MySQL 5.6 built-in GTIDs cannot be used to ensure session consistency when reading from slaves in all cases. In the worst case the plugin will not consider using the slaves and fallback to using the master. There will be no wrong results but no benefit from doing GTID checks either.

  • Fixed #66064 - Random once load balancer ignoring weights

    Due to a config parsing bug random load balancing has ignored node weights if, and only if, the sticky flag was set (random once).

  • Fixed #65496 - Wrong check for slave delay

    The quality of service filter has erroneously ignored slaves that lag for zero (0) seconds if a any maximum lag had been set. Although a slave was not lagging behind, it was excluded from the load balancing list if a maximum age was set by the QoS filter. This was due to using the wrong comparison operator in the source of the filter.

  • Fixed #65408 - Compile failure with -Werror=format-security

Feature changes

  • Introduced an internal connection pool. When using Fabric and switching from shard group A to shard group B, we are replacing the entire list of masters and slaves. This troubles the connections state alignment logic and some filters. Some filters cache information on the master and slave lists. The new internal connection pool abstraction allows us to inform the filters of changes, hence they can update their caches.

    Later on, the pool can also be used to reduce connection overhead. Assume you are switching from a shard group to another and back again. Whenever the switch is done, the pool's active server (and connection) lists are replaced. However, no longer used connections are not necessarily closed immediately but can be kept in the pool for later reuse.

    Please note, the connection pool is internalat this point. There are some new statistics to monitor it. However, you cannot yet configure pool size of behaviour.

  • Added a basic distributed transaction abstraction. XA transactions can are supported ever since using standard SQL calls. This is inconvenient as XA participants must be managed manually. PECL/mysqlnd_ms introduces API calls to control XA transaction among MySQL servers. When using the new functions, PECL/mysqlnd_ms acts as a transaction coordinator. After starting a distributed transaction, the plugin tracks all servers involved until the transaction is ended and issues appropriate SQL statements on the XA participants.

    This is useful, for example, when using Fabric and sharding. When using Fabric the actual shard servers involved in a business transaction may not be known in advance. Thus, manually controlling a transaction that spawns multiple shards becomes difficult. Please, be warned about current limitations.

  • Introduced automatic retry loop for transient errors and corresponding statistic to count the number of implicit retries. Some distributed database clusters use transient errors to hint a client to retry its operation in a bit. Most often, the client is then supposed to halt execution (sleep) for a short moment before retrying the desired operation. Immediately failing over to another node is not necessary in response to the error. Instead, a retry loop can be performed. Common situation when using MySQL Cluster.

  • Introduced automatic retry loop for transient errors and corresponding statistic to count the number of implicit retries. Some distributed database clusters use transient errors to hint a client to retry its operation in a bit. Most often, the client is then supposed to halt execution (sleep) for a short moment before retrying the desired operation. Immediately failing over to another node is not necessary in response to the error. Instead, a retry loop can be performed. Common situation when using MySQL Cluster.

  • Introduced most basic support for the MySQL Fabric High Availability and sharding framework.

    Please, consider this pre-alpha quality. Both the server side framework and the client side code is supposed to work flawless considering the MySQL Fabric quickstart examples only. However, testing has not been performed to the level of prior plugin alpha releases. Either sides are moving targets, API changes may happen at any time without prior warning.

    As this is work in progress, the manual may not yet reflect allow feature limitations and known bugs.

  • New statistics to monitor the Fabric XML RPC call sharding.lookup_servers: fabric_sharding_lookup_servers_success, fabric_sharding_lookup_servers_failure, fabric_sharding_lookup_servers_time_total, fabric_sharding_lookup_servers_bytes_total, fabric_sharding_lookup_servers_xml_failure.

  • New functions related to MySQL Fabric:
mysqlnd_ms_fabric_select_shard(),
mysqlnd_ms_fabric_select_global(),
mysqlnd_ms_dump_servers().

Change History
PECL/mysqlnd_ms 1.5 series
Change History


PECL/mysqlnd_ms 1.5 series

1.5.1-stable

  • Release date: 06/2013
  • Motto/theme: Sharding support, improved transaction support

Note:

This is the current stable series. Use this version in production environments.

The documentation is complete.

1.5.0-alpha

  • Release date: 03/2013
  • Motto/theme: Sharding support, improved transaction support

Bug fixes

  • Fixed #60605 PHP segmentation fault when mysqlnd_ms is enabled.

  • Setting transaction stickiness disables all load balancing, including automatic failover, for the duration of a transaction. So far connection switches could have happened in the middle of a transaction in multi-master configurations and during automatic failover although transaction monitoring had detected transaction boundaries properly.

  • BC break and bug fix. SQL hints enforcing the use of a specific kind of server (MYSQLND_MS_MASTER_SWITCH, MYSQLND_MS_SLAVE_SWITCH, MYSQLND_MS_LAST_USED_SWITCH) are ignored for the duration of a transaction of transaction stickiness is enabled and transaction boundaries have been detected properly.

    This is a change in behaviour. However, it is also a bug fix and a step to align behaviour. If, in previous versions, transaction stickiness, one of the above listed SQL hints and the quality of service filtering was combined it could happened that the SQL hints got ignored. In some case the SQL hints did work, in other cases they did not. The new behaviour is more consistent. SQL hints will always be ignore for the duration of a transaction, if transaction stickiness is enabled.

    Please note, transaction boundary detection continues to be based on API call monitoring. SQL commands controlling transactions are not monitored.

  • BC break and bug fix. Calls to mysqlnd_ms_set_qos() will fail when done in the middle of a transaction if transaction stickiness is enabled. Connection switches are not allowed for the duration of a transaction. Changing the quality of service likely results on a different set of servers qualifying for query execution, possibly making it necessary to switch connections. Thus, the call is not allowed in during an active transaction. The quality of server can, however, be changed in between transactions.

Feature changes

  • Introduced the node_group filter. The filter lets you organize servers (master and slaves) into groups. Queries can be directed to a certain group of servers by prefixing the query statement with a SQL hint/comment that contains the groups configured name. Grouping can be used for partitioning and sharding, and also to optimize for local caching. In the case of sharding, a group name can be thought of like a shard key. All queries for a given shard key will be executed on the configured shard. Note: both the client and server must support sharding for sharding to function with mysqlnd_ms.

  • Extended configuration file validation during PHP startup (RINIT). An E_WARNING level error will be thrown if the configuration file can not be read (permissions), is empty, or the file (JSON) could not be parsed. Warnings may appear in log files, which depending on how PHP is configured.

    Distributions that aim to provide a pre-configured setup, including a configuration file stub, are asked to put {} into the configuration file to prevent this warning about an invalid configuration file.

    Further configuration file validation is done when parsing sections upon opening a connection. Please, note that there may still be situations when an invalid plugin configuration file does not lead to proper error messages but a failure to connect.

  • As of PHP 5.5.0, improved support for transaction boundaries detection was added for mysqli. The mysqli extension has been modified to use the new C API calls of the mysqlnd library to begin, commit, and rollback a transaction or savepoint. If trx_stickiness is used to enable transaction aware load balancing, the mysqli_begin(), mysqli_commit() and mysqli_rollback() functions will now be monitered by the plugin, to go along with the mysqli_autocommit() function that was already supported. All SQL features to control transactions are also available through the improved mysqli transaction control related functions. This means that it is not required to issue SQL statements instead of using API calls. Applications using the appropriate API calls can be load balanced by PECL/mysqlnd_ms in a completely transaction-aware way.

    Please note, PDO_MySQL has not been updated yet to utilize the new mysqlnd API calls. Thus, transaction boundary detection with PDO_MySQL continues to be limited to the monitoring by passing in PDO::ATTR_AUTOCOMMIT to PDO::setAttribute().

  • Introduced trx_stickiness=on. This trx_stickiness option differs from trx_stickiness=master as it tries to execute a read-only transaction on a slave, if quality of service (consistency level) allows the use of a slave. Read-only transactions were introduced in MySQL 5.6, and they offer performance gains.

  • Query cache support is considered beta if used with the mysqli API. It should work fine with primary copy based clusters. For all other APIs, this feature continues to be called experimental.

  • The code examples in the mysqlnd_ms source were updated.

PECL/mysqlnd_ms 1.6 series
PECL/mysqlnd_ms 1.4 series
Change History


PECL/mysqlnd_ms 1.4 series

1.4.2-stable

  • Release date: 08/2012
  • Motto/theme: Tweaking based on user feedback

1.4.1-beta

  • Release date: 08/2012
  • Motto/theme: Tweaking based on user feedback

Bug fixes

  • Fixed build with PHP 5.5

1.4.0-alpha

  • Release date: 07/2012
  • Motto/theme: Tweaking based on user feedback

Feature changes

  • BC break: Renamed plugin configuration setting ini_file to config_file. In early versions the plugin configuration file used ini style. Back then the configuration setting was named accordingly. It has now been renamed to reflect the newer file format and to distinguish it from PHP's own ini file (configuration directives file).

  • Introduced new default charset setting server_charset to allow proper escaping before a connection is opened. This is most useful when using lazy connections, which are a default.

  • Introduced wait_for_gtid_timeout setting to throttle slave reads that need session consistency. If global transaction identifier are used and the service level is set to session consistency, the plugin tries to find up-to-date slaves. The slave status check is done by a SQL statement. If nothing else is set, the slave status is checked only one can the search for more up-to-date slaves continues immediately thereafter. Setting wait_for_gtid_timeout instructs the plugin to poll a slaves status for wait_for_gtid_timeout seconds if the first execution of the SQL statement has shown that the slave is not up-to-date yet. The poll will be done once per second. This way, the plugin will wait for slaves to catch up and throttle the client.

  • New failover strategy loop_before_master. By default the plugin does no failover. It is possible to enable automatic failover if a connection attempt fails. Upto version 1.3 only master strategy existed to failover to a master if a slave connection fails. loop_before_master is similar but tries all other slaves before attempting to connect to the master if a slave connection fails.

    The number of attempts can be limited using the max_retries option. Failed hosts can be remembered and skipped in load balancing for the rest of the web request. max_retries and remember_failed are considered experimental although decent stability is given. Syntax and semantics may change in the future without prior notice.

PECL/mysqlnd_ms 1.5 series
PECL/mysqlnd_ms 1.3 series
Change History


PECL/mysqlnd_ms 1.3 series

1.3.2-stable

  • Release date: 04/2012
  • Motto/theme: see 1.3.0-alpha

Bug fixes

  • Fixed problem with multi-master where although in a transaction the queries to the master weren't sticky and were spread all over the masters (RR). Still not sticky for Random. Random_once is not affected.

1.3.1-beta

  • Release date: 04/2012
  • Motto/theme: see 1.3.0-alpha

Bug fixes

  • Fixed problem with building together with QC.

1.3.0-alpha

  • Release date: 04/2012
  • Motto/theme: Query caching through quality-of-service concept

The 1.3 series aims to improve the performance of applications and the overall load of an asynchronous MySQL cluster, for example, a MySQL cluster using MySQL Replication. This is done by transparently replacing a slave access with a local cache access, if the application allows it by setting an appropriate quality of service flag. When using MySQL replication a slave can serve stale data. An application using MySQL replication must continue to work correctly with stale data. Given that the application is know to work correctly with stale data, the slave access can transparently be replace with a local cache access.

PECL/mysqlnd_qc serves as a cache backend. PECL/mysqlnd_qc supports use of various storage locations, among others main memory, APC and MEMCACHE.

Feature changes

  • Added cache option to quality-of-service (QoS) filter.

    • New configure option enable-mysqlnd-ms-cache-support
    • New constant MYSQLND_MS_HAVE_CACHE_SUPPORT.
    • New constant MYSQLND_MS_QOS_OPTION_CACHE to be used with mysqlnd_ms_set_qos().

  • Support for built-in global transaction identifier feature of MySQL 5.6.5-m8 or newer.

PECL/mysqlnd_ms 1.4 series
PECL/mysqlnd_ms 1.2 series
Change History


PECL/mysqlnd_ms 1.2 series

1.2.1-beta

  • Release date: 01/2012
  • Motto/theme: see 1.2.0-alpha

Minor test changes.

1.2.0-alpha

  • Release date: 11/2011
  • Motto/theme: Global Transaction ID injection and quality-of-service concept

In version 1.2 the focus continues to be on supporting MySQL database clusters with asynchronous replication. The plugin tries to make using the cluster introducing a quality-of-service filter which applications can use to define what service quality they need from the cluster. Service levels provided are eventual consistency with optional maximum age/slave slag, session consistency and strong consistency.

Additionally the plugin can do client-side global transaction id injection to make manual master failover easier.

Feature changes

  • Introduced quality-of-service (QoS) filter. Service levels provided by QoS filter:

    • eventual consistency, optional option slave lag
    • session consistency, optional option GTID
    • strong consistency

  • Added the mysqlnd_ms_set_qos() function to set the required connection quality at runtime. The new constants related to mysqlnd_ms_set_qos() are:

    • MYSQLND_MS_QOS_CONSISTENCY_STRONG
    • MYSQLND_MS_QOS_CONSISTENCY_SESSION
    • MYSQLND_MS_QOS_CONSISTENCY_EVENTUAL
    • MYSQLND_MS_QOS_OPTION_GTID
    • MYSQLND_MS_QOS_OPTION_AGE

  • Added client-side global transaction id injection (GTID).

  • New statistics related to GTID:

    • gtid_autocommit_injections_success
    • gtid_autocommit_injections_failure
    • gtid_commit_injections_success
    • gtid_commit_injections_failure
    • gtid_implicit_commit_injections_success
    • gtid_implicit_commit_injections_failure

  • Added mysqlnd_ms_get_last_gtid() to fetch the last global transaction id.

  • Enabled support for multi master without slaves.

PECL/mysqlnd_ms 1.3 series
PECL/mysqlnd_ms 1.1 series
Change History


PECL/mysqlnd_ms 1.1 series

1.1.0

  • Release date: 09/2011
  • Motto/theme: Cover replication basics with production quality

The 1.1 and 1.0 series expose a similar feature set. Internally, the 1.1 series has been refactored to plan for future feature additions. A new configuration file format has been introduced, and limitations have been lifted. And the code quality and quality assurance has been improved.

Feature changes

  • Added the (chainable) filter concept:

    • BC break: mysqlnd_ms_set_user_pick_server() has been removed. Thehttp://svn.php.net/viewvc/pecl/mysqlnd_ms/trunk/ user filter has been introduced to replace it. The filter offers similar functionality, but see below for an explanation of the differences.

  • New powerful JSON based configuration syntax.
  • Lazy connections improved: security relevant, and state changing commands are covered.
  • Support for (native) prepared statements.

  • New statistics: use_master_guess, use_slave_guess.

    • BC break: Semantics of statistics changed for use_slave, use_master. Future changes are likely. Please see, mysqlnd_ms_get_stats().

  • List of broadcasted messages extended by ssl_set.
  • Library calls now monitored to remember settings for lazy connections: change_user, select_db, set_charset, set_autocommit.
  • Introduced mysqlnd_ms.disable_rw_split. The configuration setting allows using the load balancing and lazy connection functionality independently of read write splitting.

Bug fixes

  • Fixed PECL #22724 - Server switching (mysqlnd_ms_query_is_select() case sensitive)
  • Fixed PECL #22784 - Using mysql_connect and mysql_select_db did not work
  • Fixed PECL #59982 - Unusable extension with --enable-mysqlnd-ms-table-filter. Use of the option is NOT supported. You must not used it. Added note to m4.
  • Fixed Bug #60119 - host="localhost" lost in mysqlnd_ms_get_last_used_connection()

The mysqlnd_ms_set_user_pick_server() function was removed, and replaced in favor of a new user filter. You can no longer set a callback function using mysqlnd_ms_set_user_pick_server() at runtime, but instead have to configure it in the plugins configuration file. The user filter will pass the same arguments to the callback as before. Therefore, you can continue to use the same procedural function as a callback.callback It is no longer possible to use static class methods, or class methods of an object instance, as a callback. Doing so will cause the function executing a statement handled by the plugin to emit an E_RECOVERABLE_ERROR level error, which might look like: "(mysqlnd_ms) Specified callback (picker) is not a valid callback." Note: this may halt your application.

PECL/mysqlnd_ms 1.2 series
PECL/mysqlnd_ms 1.0 series
Change History


PECL/mysqlnd_ms 1.0 series

1.0.1-alpha

  • Release date: 04/2011
  • Motto/theme: bug fix release

1.0.0-alpha

  • Release date: 04/2011
  • Motto/theme: Cover replication basics to test user feedback

The first release of practical use. It features basic automatic read-write splitting, SQL hints to overrule automatic redirection, load balancing of slave requests, lazy connections, and optional, automatic use of the master after the first write.

The public feature set is close to that of the 1.1 release.

1.0.0-pre-alpha

  • Release date: 09/2010
  • Motto/theme: Proof of concept

Initial check-in. Essentially a demo of the mysqlnd plugin API.

PECL/mysqlnd_ms 1.1 series
mysqlnd_qc
Change History


Mysqlnd query result cache plugin

  • 简介
  • Quickstart and Examples
    • Architecture and Concepts
    • Setup
    • Caching queries
    • Setting the TTL
    • Pattern based caching
    • Slam defense
    • Finding cache candidates
    • Measuring cache efficiency
    • Beyond TTL: user-defined storage
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
  • 预定义常量
  • mysqlnd_qc 函数
    • mysqlnd_qc_clear_cache — Flush all cache contents
    • mysqlnd_qc_get_available_handlers — Returns a list of available storage handler
    • mysqlnd_qc_get_cache_info — Returns information on the current handler, the number of cache entries and cache entries, if available
    • mysqlnd_qc_get_core_stats — Statistics collected by the core of the query cache
    • mysqlnd_qc_get_normalized_query_trace_log — Returns a normalized query trace log for each query inspected by the query cache
    • mysqlnd_qc_get_query_trace_log — Returns a backtrace for each query inspected by the query cache
    • mysqlnd_qc_set_cache_condition — Set conditions for automatic caching
    • mysqlnd_qc_set_is_select — Installs a callback which decides whether a statement is cached
    • mysqlnd_qc_set_storage_handler — Change current storage handler
    • mysqlnd_qc_set_user_handlers — Sets the callback functions for a user-defined procedural storage handler
  • Change History
    • PECL/mysqlnd_qc 1.2 series
    • PECL/mysqlnd_qc 1.1 series
    • PECL/mysqlnd_qc 1.0 series
PECL/mysqlnd_ms 1.0 series
简介
MySQL


简介

The mysqlnd query result cache plugin adds easy to use client-side query caching to all PHP MySQL extensions using mysqlnd.

As of version PHP 5.3.3 the MySQL native driver for PHP ( mysqlnd) features an internal plugin C API. C plugins, such as the query cache plugin, can extend the functionality of mysqlnd.

Mysqlnd plugins such as the query cache plugin operate transparent from a user perspective. The cache plugin supports all PHP applications and all PHP MySQL extensions ( mysqli, mysql, PDO_MYSQL). It does not change existing APIs.

No significant application changes are required to cache a query. The cache has two operation modes. It will either cache all queries (not recommended) or only those queries marked with a certain SQL hint (recommended).

Key Features

  • Transparent and therefore easy to use

    • supports all PHP MySQL extensions

    • no API changes

    • very little application changes required

  • Flexible invalidation strategy

    • Time-to-Live (TTL)

    • user-defined

  • Storage with different scope and life-span

    • Default (Hash, process memory)

    • APC

    • MEMCACHE

    • sqlite

    • user-defined

  • Built-in slam defense to prevent cache stampeding.

Limitations

The current 1.0.1 release of PECL mysqlnd_qc does not support PHP 5.4. Version 1.1.0-alpha lifts this limitation.

Prepared statements and unbuffered queries are fully supported. Thus, the plugin is capable of caching all statements issued with mysqli or PDO_MySQL, which are the only two PHP MySQL APIs to offer prepared statement support.

On the name

The shortcut mysqlnd_qc stands for mysqlnd query cache plugin. The name was chosen for a quick-and-dirty proof-of-concept. In the beginning the developers did not expect to continue using the code base. Sometimes PECL/mysqlnd_qc has also been called client-side query result set cache.

mysqlnd_qc
Quickstart and Examples
mysqlnd_qc


Quickstart and Examples

Table of Contents

  • Architecture and Concepts
  • Setup
  • Caching queries
  • Setting the TTL
  • Pattern based caching
  • Slam defense
  • Finding cache candidates
  • Measuring cache efficiency
  • Beyond TTL: user-defined storage

The mysqlnd query cache plugin is easy to use. This quickstart will demo typical use-cases, and provide practical advice on getting started.

It is strongly recommended to read the reference sections in addition to the quickstart. It is safe to begin with the quickstart. However, before using the plugin in mission critical environments we urge you to read additionally the background information from the reference sections.

Most of the examples use the mysqli extension because it is the most feature complete PHP MySQL extension. However, the plugin can be used with any PHP MySQL extension that is using the mysqlnd library.

简介
Architecture and Concepts
mysqlnd_qc


Architecture and Concepts

The query cache plugin is implemented as a PHP extension. It is written in C and operates under the hood of PHP. During the startup of the PHP interpreter, it gets registered as a mysqlnd plugin to replace selected mysqlnd C methods. Hereby, it can change the behaviour of any PHP MySQL extension (mysqli, PDO_MYSQL, mysql) compiled to use the mysqlnd library without changing the extensions API. This makes the plugin compatible with each and every PHP MySQL application. Because existing APIs are not changed, it is almost transparent to use. Please, see the mysqlnd plugin API description for a discussion of the advantages of the plugin architecture and a comparison with proxy based solutions.

Transparent to use

At PHP run time PECL/mysqlnd_qc can proxy queries send from PHP (mysqlnd) to the MySQL server. It then inspects the statement string to find whether it shall cache its results. If so, result set is cached using a storage handler and further executions of the statement are served from the cache for a user-defined period. The Time to Live (TTL) of the cache entry can either be set globally or on a per statement basis.

A statement is either cached if the plugin is instructed to cache all statements globally using a or, if the query string starts with the SQL hint (/*qc=on*/). The plugin is capable of caching any query issued by calling appropriate API calls of any of the existing PHP MySQL extensions.

Flexible storage: various storage handler

Various storage handler are supported to offer different scopes for cache entries. Different scopes allow for different degrees in sharing cache entries among clients.

  • default (built-in): process memory, scope: process, one or more web requests depending on PHP deployment model used

  • APC: shared memory, scope: single server, multiple web requests

  • SQLite: memory or file, scope: single server, multiple web requests

  • MEMCACHE: main memory, scope: single or multiple server, multiple web requests

  • user (built-in): user-defined - any, scope: user-defined - any

Support for the APC, SQLite and MEMCACHE storage handler has to be enabled at compile time. The default and user handler are built-in. It is possible to switch between compiled-in storage handlers on a per query basis at run time. However, it is recommended to pick one storage handler and use it for all cache entries.

Built-in slam defense to avoid overloading

To avoid overload situations the cache plugin has a built-in slam defense mechanism. If a popular cache entries expires many clients using the cache entries will try to refresh the cache entry. For the duration of the refresh many clients may access the database server concurrently. In the worst case, the database server becomes overloaded and it takes more and more time to refresh the cache entry, which in turn lets more and more clients try to refresh the cache entry. To prevent this from happening the plugin has a slam defense mechanism. If slam defense is enabled and the plugin detects an expired cache entry it extends the life time of the cache entry before it refreshes the cache entry. This way other concurrent accesses to the expired cache entry are still served from the cache for a certain time. The other concurrent accesses to not trigger a concurrent refresh. Ideally, the cache entry gets refreshed by the client which extended the cache entries lifespan before other clients try to refresh the cache and potentially cause an overload situation.

Unique approach to caching

PECL/mysqlnd_qc has a unique approach to caching result sets that is superior to application based cache solutions. Application based solutions first fetch a result set into PHP variables. Then, the PHP variables are serialized for storage in a persistent cache, and then unserialized when fetching. The mysqlnd query cache stores the raw wire protocol data sent from MySQL to PHP in its cache and replays it, if still valid, on a cache hit. This way, it saves an extra serialization step for a cache put that all application based solutions have to do. It can store the raw wire protocol data in the cache without having to serialize into a PHP variable first and deserializing the PHP variable for storing in the cache again.

Quickstart and Examples
Setup
Quickstart and Examples


Setup

The plugin is implemented as a PHP extension. See also the installation instructions to install the » PECL/mysqlnd_qc extension.

Compile or configure the PHP MySQL extension (mysqli, PDO_MYSQL, mysql) that you plan to use with support for the mysqlnd library. PECL/mysqlnd_qc is a plugin for the mysqlnd library. To use the plugin with any of the existing PHP MySQL extensions (APIs), the extension has to use the mysqlnd library.

Then, load the extension into PHP and activate the plugin in the PHP configuration file using the PHP configuration directive named mysqlnd_qc.enable_qc.

Example #1 Enabling the plugin (php.ini)

mysqlnd_qc.enable_qc=1

Architecture and Concepts
Caching queries
Quickstart and Examples


Caching queries

There are four ways to trigger caching of a query.

  • Use of SQL hints on a per query basis
  • User supplied callbacks to decide on a per query basis, for example, using mysqlnd_qc_is_select()
  • mysqlnd_set_cache_condition() for rule based automatic per query decisions
  • mysqlnd_qc.cache_by_default = 1 to cache all queries blindly

Use of SQL hints and mysqlnd_qc.cache_by_default = 1 are explained below. Please, refer to the function reference on mysqlnd_qc_is_select() for a description of using a callback and, mysqlnd_qc_set_cache_condition() on how to set rules for automatic caching.

A SQL hint is a SQL standards compliant comment. As a SQL comment it is ignored by the database. A statement is considered eligible for caching if it either begins with the SQL hint enabling caching or it is a SELECT statement.

An individual query which shall be cached must begin with the SQL hint /*qc=on*/. It is recommended to use the PHP constant MYSQLND_QC_ENABLE_SWITCH instead of using the string value.

  • not eligible for caching and not cached: INSERT INTO test(id) VALUES (1)

  • not eligible for caching and not cached: SHOW ENGINES

  • eligible for caching but uncached: SELECT id FROM test

  • eligible for caching and cached: /*qc=on*/SELECT id FROM test

The examples SELECT statement string is prefixed with the MYSQLND_QC_ENABLE_SWITCH SQL hint to enable caching of the statement. The SQL hint must be given at the very beginning of the statement string to enable caching.

Example #1 Using the MYSQLND_QC_ENABLE_SWITCH SQL hint

mysqlnd_qc.enable_qc=1
<?php
/* Connect, create and populate test table */
$mysqli = new mysqli("host", "user", "password", "schema", "port", "socket");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT)");
$mysqli->query("INSERT INTO test(id) VALUES (1), (2)");

/* Will be cached because of the SQL hint */
$start = microtime(true);
$res   = $mysqli->query("/*" . MYSQLND_QC_ENABLE_SWITCH . "*/" . "SELECT id FROM test WHERE id = 1");

var_dump($res->fetch_assoc());
$res->free();

printf("Total time uncached query: %.6fs\n", microtime(true) - $start);

/* Cache hit */
$start = microtime(true);
$res   = $mysqli->query("/*" . MYSQLND_QC_ENABLE_SWITCH . "*/" . "SELECT id FROM test WHERE id = 1");

var_dump($res->fetch_assoc());
$res->free();

printf("Total time cached query: %.6fs\n", microtime(true) - $start);
?>

以上例程的输出类似于：

array(1) {
  ["id"]=>
  string(1) "1"
}
Total time uncached query: 0.000740s
array(1) {
  ["id"]=>
  string(1) "1"
}
Total time cached query: 0.000098s

If nothing else is configured, as it is the case in the quickstart example, the plugin will use the built-in default storage handler. The default storage handler uses process memory to hold a cache entry. Depending on the PHP deployment model, a PHP process may serve one or more web requests. Please, consult the web server manual for details. Details make no difference for the examples given in the quickstart.

The query cache plugin will cache all queries regardless if the query string begins with the SQL hint which enables caching or not, if the PHP configuration directive mysqlnd_qc.cache_by_default is set to 1. The setting mysqlnd_qc.cache_by_default is evaluated by the core of the query cache plugins. Neither the built-in nor user-defined storage handler can overrule the setting.

The SQL hint /*qc=off*/ can be used to disable caching of individual queries if mysqlnd_qc.cache_by_default = 1 It is recommended to use the PHP constant MYSQLND_QC_DISABLE_SWITCH instead of using the string value.

Example #2 Using the MYSQLND_QC_DISABLE_SWITCH SQL hint

mysqlnd_qc.enable_qc=1
mysqlnd_qc.cache_by_default=1
<?php
/* Connect, create and populate test table */
$mysqli = new mysqli("host", "user", "password", "schema", "port", "socket");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT)");
$mysqli->query("INSERT INTO test(id) VALUES (1), (2)");

/* Will be cached although no SQL hint is present because of mysqlnd_qc.cache_by_default = 1*/
$res = $mysqli->query("SELECT id FROM test WHERE id = 1");
var_dump($res->fetch_assoc());
$res->free();

$mysqli->query("DELETE FROM test WHERE id = 1");

/* Cache hit - no automatic invalidation and still valid! */
$res = $mysqli->query("SELECT id FROM test WHERE id = 1");
var_dump($res->fetch_assoc());
$res->free();

/* Cache miss - query must not be cached because of the SQL hint */
$res = $mysqli->query("/*" . MYSQLND_QC_DISABLE_SWITCH . "*/SELECT id FROM test WHERE id = 1");
var_dump($res->fetch_assoc());
$res->free();
?>

以上例程会输出：

array(1) {
  ["id"]=>
  string(1) "1"
}
array(1) {
  ["id"]=>
  string(1) "1"
}
NULL

PECL/mysqlnd_qc forbids caching of statements for which at least one column from the statements result set shows no table name in its meta data by default. This is usually the case for columns originating from SQL functions such as NOW() or LAST_INSERT_ID(). The policy aims to prevent pitfalls if caching by default is used.

Example #3 Example showing which type of statements are not cached

mysqlnd_qc.enable_qc=1
mysqlnd_qc.cache_by_default=1
<?php
/* Connect, create and populate test table */
$mysqli = new mysqli("host", "user", "password", "schema", "port", "socket");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT)");
$mysqli->query("INSERT INTO test(id) VALUES (1)");

for ($i = 0; $i < 3; $i++) {

    $start = microtime(true);

    /* Note: statement will not be cached because of NOW() use */
    $res = $mysqli->query("SELECT id, NOW() AS _time FROM test");
    $row = $res->fetch_assoc();

    /* dump results */
    var_dump($row);

    printf("Total time: %.6fs\n", microtime(true) - $start);

    /* pause one second */
    sleep(1);
}
?>

以上例程的输出类似于：

array(2) {
  ["id"]=>
  string(1) "1"
  ["_time"]=>
  string(19) "2012-01-11 15:43:10"
}
Total time: 0.000540s
array(2) {
  ["id"]=>
  string(1) "1"
  ["_time"]=>
  string(19) "2012-01-11 15:43:11"
}
Total time: 0.000555s
array(2) {
  ["id"]=>
  string(1) "1"
  ["_time"]=>
  string(19) "2012-01-11 15:43:12"
}
Total time: 0.000549s

It is possible to enable caching for all statements including those which has columns in their result set for which MySQL reports no table, such as the statement from the example. Set mysqlnd_qc.cache_no_table = 1 to enable caching of such statements. Please, note the difference in the measured times for the above and below examples.

Example #4 Enabling caching for all statements using the mysqlnd_qc.cache_no_table ini setting

mysqlnd_qc.enable_qc=1
mysqlnd_qc.cache_by_default=1
mysqlnd_qc.cache_no_table=1
<?php
/* Connect, create and populate test table */
$mysqli = new mysqli("host", "user", "password", "schema", "port", "socket");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT)");
$mysqli->query("INSERT INTO test(id) VALUES (1)");

for ($i = 0; $i < 3; $i++) {

    $start = microtime(true);

    /* Note: statement will not be cached because of NOW() use */
    $res = $mysqli->query("SELECT id, NOW() AS _time FROM test");
    $row = $res->fetch_assoc();

    /* dump results */
    var_dump($row);

    printf("Total time: %.6fs\n", microtime(true) - $start);

    /* pause one second */
    sleep(1);
}
?>

以上例程的输出类似于：

array(2) {
  ["id"]=>
  string(1) "1"
  ["_time"]=>
  string(19) "2012-01-11 15:47:45"
}
Total time: 0.000546s
array(2) {
  ["id"]=>
  string(1) "1"
  ["_time"]=>
  string(19) "2012-01-11 15:47:45"
}
Total time: 0.000187s
array(2) {
  ["id"]=>
  string(1) "1"
  ["_time"]=>
  string(19) "2012-01-11 15:47:45"
}
Total time: 0.000167s

Note:

Although mysqlnd_qc.cache_no_table = 1 has been created for use with mysqlnd_qc.cache_by_default = 1 it is bound it. The plugin will evaluate the mysqlnd_qc.cache_no_table whenever a query is to be cached, no matter whether caching has been enabled using a SQL hint or any other measure.

Setup
Setting the TTL
Quickstart and Examples


Setting the TTL

The default invalidation strategy of the query cache plugin is Time to Live (TTL). The built-in storage handlers will use the default TTL defined by the PHP configuration value mysqlnd_qc.ttl unless the query string contains a hint for setting a different TTL. The TTL is specified in seconds. By default cache entries expire after 30 seconds

The example sets mysqlnd_qc.ttl=3 to cache statements for three seconds by default. Every second it updates a database table record to hold the current time and executes a SELECT statement to fetch the record from the database. The SELECT statement is cached for three seconds because it is prefixed with the SQL hint enabling caching. The output verifies that the query results are taken from the cache for the duration of three seconds before they are refreshed.

Example #1 Setting the TTL with the mysqlnd_qc.ttl ini setting

mysqlnd_qc.enable_qc=1
mysqlnd_qc.ttl=3
<?php
/* Connect, create and populate test table */
$mysqli = new mysqli("host", "user", "password", "schema", "port", "socket");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id VARCHAR(255))");

for ($i = 0; $i < 7; $i++) {

    /* update DB row  */
    if (!$mysqli->query("DELETE FROM test") ||
        !$mysqli->query("INSERT INTO test(id) VALUES (NOW())"))
      /* Of course, a real-life script should do better error handling */
      die(sprintf("[%d] %s\n", $mysqli->errno, $mysqli->error));

    /* select latest row but cache results */
    $query  = "/*" . MYSQLND_QC_ENABLE_SWITCH . "*/";
    $query .= "SELECT id AS _time FROM test";
    if (!($res = $mysqli->query($query)) ||
        !($row = $res->fetch_assoc()))
    {
      printf("[%d] %s\n", $mysqli->errno, $mysqli->error);
    }
    $res->free();
    printf("Wall time %s - DB row time %s\n", date("H:i:s"), $row['_time']);

    /* pause one second */
    sleep(1);
}
?>

以上例程的输出类似于：

Wall time 14:55:59 - DB row time 2012-01-11 14:55:59
Wall time 14:56:00 - DB row time 2012-01-11 14:55:59
Wall time 14:56:01 - DB row time 2012-01-11 14:55:59
Wall time 14:56:02 - DB row time 2012-01-11 14:56:02
Wall time 14:56:03 - DB row time 2012-01-11 14:56:02
Wall time 14:56:04 - DB row time 2012-01-11 14:56:02
Wall time 14:56:05 - DB row time 2012-01-11 14:56:05

As can be seen from the example, any TTL based cache can serve stale data. Cache entries are not automatically invalidated, if underlying data changes. Applications using the default TTL invalidation strategy must be able to work correctly with stale data.

A user-defined cache storage handler can implement any invalidation strategy to work around this limitation.

The default TTL can be overruled using the SQL hint /*qc_tt=seconds*/. The SQL hint must be appear immediately after the SQL hint which enables caching. It is recommended to use the PHP constant MYSQLND_QC_TTL_SWITCH instead of using the string value.

Example #2 Setting TTL with SQL hints

<?php
$start = microtime(true);

/* Connect, create and populate test table */
$mysqli = new mysqli("host", "user", "password", "schema", "port", "socket");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT)");
$mysqli->query("INSERT INTO test(id) VALUES (1), (2)");

printf("Default TTL\t: %d seconds\n", ini_get("mysqlnd_qc.ttl"));

/* Will be cached for 2 seconds */
$sql = sprintf("/*%s*//*%s%d*/SELECT id FROM test WHERE id = 1", MYSQLND_QC_ENABLE_SWITCH, MYSQLND_QC_TTL_SWITCH, 2);
$res = $mysqli->query($sql);

var_dump($res->fetch_assoc());
$res->free();

$mysqli->query("DELETE FROM test WHERE id = 1");
sleep(1);

/* Cache hit - no automatic invalidation and still valid! */
$res = $mysqli->query($sql);
var_dump($res->fetch_assoc());
$res->free();

sleep(2);

/* Cache miss - cache entry has expired */
$res = $mysqli->query($sql);
var_dump($res->fetch_assoc());
$res->free();

printf("Script runtime\t: %d seconds\n", microtime(true) - $start);
?>

以上例程的输出类似于：

Default TTL     : 30 seconds
array(1) {
  ["id"]=>
  string(1) "1"
}
array(1) {
  ["id"]=>
  string(1) "1"
}
NULL
Script runtime  : 3 seconds

Caching queries
Pattern based caching
Quickstart and Examples


Pattern based caching

An application has three options for telling PECL/mysqlnd_qc whether a particular statement shall be used. The most basic approach is to cache all statements by setting mysqlnd_qc.cache_by_default = 1. This approach is often of little practical value. But it enables users to make a quick estimation about the maximum performance gains from caching. An application designed to use a cache may be able to prefix selected statements with the appropriate SQL hints. However, altering an applications source code may not always be possible or desired, for example, to avoid problems with software updates. Therefore, PECL/mysqlnd_qc allows setting a callback which decides if a query is to be cached.

The callback is installed with the mysqlnd_qc_set_is_select() function. The callback is given the statement string of every statement inspected by the plugin. Then, the callback can decide whether to cache the function. The callback is supposed to return FALSE if the statement shall not be cached. A return value of TRUE makes the plugin try to add the statement into the cache. The cache entry will be given the default TTL ( mysqlnd_qc.ttl). If the callback returns a numerical value it is used as the TTL instead of the global default.

Example #1 Setting a callback with mysqlnd_qc_set_is_select()

mysqlnd_qc.enable_qc=1
mysqlnd_qc.collect_statistics=1
<?php
/* callback which decides if query is cached */
function is_select($query) {
    static $patterns = array(
      /* true - use default from mysqlnd_qc.ttl */
      "@SELECT\s+.*\s+FROM\s+test@ismU" => true,
      /* 3 - use TTL = 3 seconds */
      "@SELECT\s+.*\s+FROM\s+news@ismU" => 3
    );

    /* check if query does match pattern */
    foreach ($patterns as $pattern => $ttl) {
        if (preg_match($pattern, $query)) {
            printf("is_select(%45s): cache\n", $query);
            return $ttl;
        }
    }
    printf("is_select(%45s): do not cache\n", $query);
    return false;
}
/* install callback */
mysqlnd_qc_set_is_select("is_select");

/* Connect, create and populate test table */
$mysqli = new mysqli("host", "user", "password", "schema", "port", "socket");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT)");
$mysqli->query("INSERT INTO test(id) VALUES (1), (2), (3)");

/* cache put */
$mysqli->query("SELECT id FROM test WHERE id = 1");
/* cache hit */
$mysqli->query("SELECT id FROM test WHERE id = 1");
/* cache put */
$mysqli->query("SELECT * FROM test");

$stats = mysqlnd_qc_get_core_stats();
printf("Cache put: %d\n", $stats['cache_put']);
printf("Cache hit: %d\n", $stats['cache_hit']);
?>

以上例程的输出类似于：

is_select(                    DROP TABLE IF EXISTS test): do not cache
is_select(                    CREATE TABLE test(id INT)): do not cache
is_select(    INSERT INTO test(id) VALUES (1), (2), (3)): do not cache
is_select(             SELECT id FROM test WHERE id = 1): cache
is_select(             SELECT id FROM test WHERE id = 1): cache
is_select(                           SELECT * FROM test): cache
Cache put: 2
Cache hit: 1

The examples callback tests if a statement string matches a pattern. If this is the case, it either returns TRUE to cache the statement using the global default TTL or an alternative TTL.

To minimize application changes the callback can put into and registered in an auto prepend file.

Setting the TTL
Slam defense
Quickstart and Examples


Slam defense

A badly designed cache can do more harm than good. In the worst case a cache can increase database server load instead of minimizing it. An overload situation can occur if a highly shared cache entry expires (cache stampeding).

Cache entries are shared and reused to a different degree depending on the storage used. The default storage handler stores cache entries in process memory. Thus, a cache entry can be reused for the life-span of a process. Other PHP processes cannot access it. If Memcache is used, a cache entry can be shared among multiple PHP processes and even among multiple machines, depending on the set up being used.

If a highly shared cache entry stored, for example, in Memcache expires, many clients gets a cache miss. Many client requests can no longer be served from the cache but try to run the underlying query on the database server. Until the cache entry is refreshed, more and more clients contact the database server. In the worst case, a total lost of service is the result.

The overload can be avoided using a storage handler which limits the reuse of cache entries to few clients. Then, at the average, its likely that only a limited number of clients will try to refresh a cache entry concurrently.

Additionally, the built-in slam defense mechanism can and should be used. If slam defense is activated an expired cache entry is given an extended life time. The first client getting a cache miss for the expired cache entry tries to refresh the cache entry within the extended life time. All other clients requesting the cache entry are temporarily served from the cache although the original TTL of the cache entry has expired. The other clients will not experience a cache miss before the extended life time is over.

Example #1 Enabling the slam defense mechanism

mysqlnd_qc.slam_defense=1
mysqlnd_qc.slam_defense_ttl=1

The slam defense mechanism is enabled with the PHP configuration directive mysqlnd_qc.slam_defense. The extended life time of a cache entry is set with mysqlnd_qc.slam_defense_ttl.

The function mysqlnd_qc_get_core_stats() returns an array of statistics. The statistics slam_stale_refresh and slam_stale_hit are incremented if slam defense takes place.

It is not possible to give a one-fits-all recommendation on the slam defense configuration. Users are advised to monitor and test their setup and derive settings accordingly.

Pattern based caching
Finding cache candidates
Quickstart and Examples


Finding cache candidates

A statement should be considered for caching if it is executed often and has a long run time. Cache candidates are found by creating a list of statements sorted by the product of the number of executions multiplied by the statements run time. The function mysqlnd_qc_get_query_trace_log() returns a query log which help with the task.

Collecting a query trace is a slow operation. Thus, it is disabled by default. The PHP configuration directive mysqlnd_qc.collect_query_trace is used to enable it. The functions trace contains one entry for every query issued before the function is called.

Example #1 Collecting a query trace

mysqlnd_qc.enable_qc=1
mysqlnd_qc.collect_query_trace=1
<?php
/* connect to MySQL */
$mysqli = new mysqli("host", "user", "password", "schema", "port", "socket");

/* dummy queries to fill the query trace */
for ($i = 0; $i < 2; $i++) {
    $res = $mysqli->query("SELECT 1 AS _one FROM DUAL");
    $res->free();
}

/* dump trace */
var_dump(mysqlnd_qc_get_query_trace_log());
?>

以上例程会输出：

array(2) {
  [0]=>
  array(8) {
    ["query"]=>
    string(26) "SELECT 1 AS _one FROM DUAL"
    ["origin"]=>
    string(102) "#0 qc.php(7): mysqli->query('SELECT 1 AS _on...')
#1 {main}"
    ["run_time"]=>
    int(0)
    ["store_time"]=>
    int(25)
    ["eligible_for_caching"]=>
    bool(false)
    ["no_table"]=>
    bool(false)
    ["was_added"]=>
    bool(false)
    ["was_already_in_cache"]=>
    bool(false)
  }
  [1]=>
  array(8) {
    ["query"]=>
    string(26) "SELECT 1 AS _one FROM DUAL"
    ["origin"]=>
    string(102) "#0 qc.php(7): mysqli->query('SELECT 1 AS _on...')
#1 {main}"
    ["run_time"]=>
    int(0)
    ["store_time"]=>
    int(8)
    ["eligible_for_caching"]=>
    bool(false)
    ["no_table"]=>
    bool(false)
    ["was_added"]=>
    bool(false)
    ["was_already_in_cache"]=>
    bool(false)
  }
}

Assorted information is given in the trace. Among them timings and the origin of the query call. The origin property holds a code backtrace to identify the source of the query. The depth of the backtrace can be limited with the PHP configuration directive mysqlnd_qc.query_trace_bt_depth. The default depth is 3.

Example #2 Setting the backtrace depth with the mysqlnd_qc.query_trace_bt_depth ini setting

mysqlnd_qc.enable_qc=1
mysqlnd_qc.collect_query_trace=1
<?php
/* connect to MySQL */
$mysqli = new mysqli("host", "user", "password", "schema", "port", "socket");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT)");
$mysqli->query("INSERT INTO test(id) VALUES (1), (2), (3)");

/* dummy queries to fill the query trace */
for ($i = 0; $i < 3; $i++) {
    $res = $mysqli->query("SELECT id FROM test WHERE id = " . $mysqli->real_escape_string($i));
    $res->free();
}

$trace = mysqlnd_qc_get_query_trace_log();
$summary = array();
foreach ($trace as $entry) {
    if (!isset($summary[$entry['query']])) {
        $summary[$entry['query']] = array(
            "executions" => 1,
            "time"       => $entry['run_time'] + $entry['store_time'],
        );
    } else {
        $summary[$entry['query']]['executions']++;
        $summary[$entry['query']]['time'] += $entry['run_time'] + $entry['store_time'];
    }
}

foreach ($summary as $query => $details) {
    printf("%45s: %5dms (%dx)\n",
    $query, $details['time'], $details['executions']);
}
?>

以上例程的输出类似于：

                    DROP TABLE IF EXISTS test:     0ms (1x)
                    CREATE TABLE test(id INT):     0ms (1x)
    INSERT INTO test(id) VALUES (1), (2), (3):     0ms (1x)
             SELECT id FROM test WHERE id = 0:    25ms (1x)
             SELECT id FROM test WHERE id = 1:    10ms (1x)
             SELECT id FROM test WHERE id = 2:     9ms (1x)

Slam defense
Measuring cache efficiency
Quickstart and Examples


Measuring cache efficiency

PECL/mysqlnd_qc offers three ways to measure the cache efficiency. The function mysqlnd_qc_get_normalized_query_trace_log() returns statistics aggregated by the normalized query string, mysqlnd_qc_get_cache_info() gives storage handler specific information which includes a list of all cached items, depending on the storage handler. Additionally, the core of PECL/mysqlnd_qc collects high-level summary statistics aggregated per PHP process. The high-level statistics are returned by mysqlnd_qc_get_core_stats().

The functions mysqlnd_qc_get_normalized_query_trace_log() and mysqlnd_qc_get_core_stats() will not collect data unless data collection has been enabled through their corresponding PHP configuration directives. Data collection is disabled by default for performance considerations. It is configurable with the mysqlnd_qc.time_statistics option, which determines if timing information should be collected. Collection of time statistics is enabled by default but only performed if data collection as such has been enabled. Recording time statistics causes extra system calls. In most cases, the benefit of the monitoring outweighs any potential performance penalty of the additional system calls.

Example #1 Collecting statistics data with the mysqlnd_qc.time_statistics ini setting

mysqlnd_qc.enable_qc=1
mysqlnd_qc.collect_statistics=1
<?php
/* connect to MySQL */
$mysqli = new mysqli("host", "user", "password", "schema", "port", "socket");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT)");
$mysqli->query("INSERT INTO test(id) VALUES (1), (2), (3)");

/* dummy queries */
for ($i = 1; $i <= 4; $i++) {
    $query = sprintf("/*%s*/SELECT id FROM test WHERE id = %d", MYSQLND_QC_ENABLE_SWITCH, $i % 2);
    $res   = $mysqli->query($query);

    $res->free();
}

var_dump(mysqlnd_qc_get_core_stats());
?>

以上例程的输出类似于：

array(26) {
  ["cache_hit"]=>
  string(1) "2"
  ["cache_miss"]=>
  string(1) "2"
  ["cache_put"]=>
  string(1) "2"
  ["query_should_cache"]=>
  string(1) "4"
  ["query_should_not_cache"]=>
  string(1) "3"
  ["query_not_cached"]=>
  string(1) "3"
  ["query_could_cache"]=>
  string(1) "4"
  ["query_found_in_cache"]=>
  string(1) "2"
  ["query_uncached_other"]=>
  string(1) "0"
  ["query_uncached_no_table"]=>
  string(1) "0"
  ["query_uncached_no_result"]=>
  string(1) "0"
  ["query_uncached_use_result"]=>
  string(1) "0"
  ["query_aggr_run_time_cache_hit"]=>
  string(2) "28"
  ["query_aggr_run_time_cache_put"]=>
  string(3) "900"
  ["query_aggr_run_time_total"]=>
  string(3) "928"
  ["query_aggr_store_time_cache_hit"]=>
  string(2) "14"
  ["query_aggr_store_time_cache_put"]=>
  string(2) "40"
  ["query_aggr_store_time_total"]=>
  string(2) "54"
  ["receive_bytes_recorded"]=>
  string(3) "136"
  ["receive_bytes_replayed"]=>
  string(3) "136"
  ["send_bytes_recorded"]=>
  string(2) "84"
  ["send_bytes_replayed"]=>
  string(2) "84"
  ["slam_stale_refresh"]=>
  string(1) "0"
  ["slam_stale_hit"]=>
  string(1) "0"
  ["request_counter"]=>
  int(1)
  ["process_hash"]=>
  int(1929695233)
}

For a quick overview, call mysqlnd_qc_get_core_stats(). It delivers cache usage, cache timing and traffic related statistics. Values are aggregated on a per process basis for all queries issued by any PHP MySQL API call.

Some storage handler, such as the default handler, can report cache entries, statistics related to the entries and meta data for the underlying query through the mysqlnd_qc_get_cache_info() function. Please note, that the information returned depends on the storage handler. Values are aggregated on a per process basis.

Example #2 Example mysqlnd_qc_get_cache_info() usage

mysqlnd_qc.enable_qc=1
<?php
/* connect to MySQL */
$mysqli = new mysqli("host", "user", "password", "schema", "port", "socket");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT)");
$mysqli->query("INSERT INTO test(id) VALUES (1), (2), (3)");

/* dummy queries to fill the query trace */
for ($i = 1; $i <= 4; $i++) {
    $query = sprintf("/*%s*/SELECT id FROM test WHERE id = %d", MYSQLND_QC_ENABLE_SWITCH, $i % 2);
    $res   = $mysqli->query($query);

    $res->free();
}

var_dump(mysqlnd_qc_get_cache_info());
?>

以上例程的输出类似于：

array(4) {
  ["num_entries"]=>
  int(2)
  ["handler"]=>
  string(7) "default"
  ["handler_version"]=>
  string(5) "1.0.0"
  ["data"]=>
  array(2) {
    ["Localhost via UNIX socket
3306
root
test|/*qc=on*/SELECT id FROM test WHERE id = 1"]=>
    array(2) {
      ["statistics"]=>
      array(11) {
        ["rows"]=>
        int(1)
        ["stored_size"]=>
        int(71)
        ["cache_hits"]=>
        int(1)
        ["run_time"]=>
        int(391)
        ["store_time"]=>
        int(27)
        ["min_run_time"]=>
        int(16)
        ["max_run_time"]=>
        int(16)
        ["min_store_time"]=>
        int(8)
        ["max_store_time"]=>
        int(8)
        ["avg_run_time"]=>
        int(8)
        ["avg_store_time"]=>
        int(4)
      }
      ["metadata"]=>
      array(1) {
        [0]=>
        array(8) {
          ["name"]=>
          string(2) "id"
          ["orig_name"]=>
          string(2) "id"
          ["table"]=>
          string(4) "test"
          ["orig_table"]=>
          string(4) "test"
          ["db"]=>
          string(4) "test"
          ["max_length"]=>
          int(1)
          ["length"]=>
          int(11)
          ["type"]=>
          int(3)
        }
      }
    }
    ["Localhost via UNIX socket
3306
root
test|/*qc=on*/SELECT id FROM test WHERE id = 0"]=>
    array(2) {
      ["statistics"]=>
      array(11) {
        ["rows"]=>
        int(0)
        ["stored_size"]=>
        int(65)
        ["cache_hits"]=>
        int(1)
        ["run_time"]=>
        int(299)
        ["store_time"]=>
        int(13)
        ["min_run_time"]=>
        int(11)
        ["max_run_time"]=>
        int(11)
        ["min_store_time"]=>
        int(6)
        ["max_store_time"]=>
        int(6)
        ["avg_run_time"]=>
        int(5)
        ["avg_store_time"]=>
        int(3)
      }
      ["metadata"]=>
      array(1) {
        [0]=>
        array(8) {
          ["name"]=>
          string(2) "id"
          ["orig_name"]=>
          string(2) "id"
          ["table"]=>
          string(4) "test"
          ["orig_table"]=>
          string(4) "test"
          ["db"]=>
          string(4) "test"
          ["max_length"]=>
          int(0)
          ["length"]=>
          int(11)
          ["type"]=>
          int(3)
        }
      }
    }
  }
}

It is possible to further break down the granularity of statistics to the level of the normalized statement string. The normalized statement string is the statements string with all parameters replaced with question marks. For example, the two statements SELECT id FROM test WHERE id = 0 and SELECT id FROM test WHERE id = 1 are normalized into SELECT id FROM test WHERE id = ?. Their both statistics are aggregated into one entry for SELECT id FROM test WHERE id = ?.

Example #3 Example mysqlnd_qc_get_normalized_query_trace_log() usage

mysqlnd_qc.enable_qc=1
mysqlnd_qc.collect_normalized_query_trace=1
<?php
/* connect to MySQL */
$mysqli = new mysqli("host", "user", "password", "schema", "port", "socket");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT)");
$mysqli->query("INSERT INTO test(id) VALUES (1), (2), (3)");

/* dummy queries to fill the query trace */
for ($i = 1; $i <= 4; $i++) {
    $query = sprintf("/*%s*/SELECT id FROM test WHERE id = %d", MYSQLND_QC_ENABLE_SWITCH, $i % 2);
    $res   = $mysqli->query($query);

    $res->free();
}

var_dump(mysqlnd_qc_get_normalized_query_trace_log());
?>

以上例程的输出类似于：

array(4) {
  [0]=>
  array(9) {
    ["query"]=>
    string(25) "DROP TABLE IF EXISTS test"
    ["occurences"]=>
    int(0)
    ["eligible_for_caching"]=>
    bool(false)
    ["avg_run_time"]=>
    int(0)
    ["min_run_time"]=>
    int(0)
    ["max_run_time"]=>
    int(0)
    ["avg_store_time"]=>
    int(0)
    ["min_store_time"]=>
    int(0)
    ["max_store_time"]=>
    int(0)
  }
  [1]=>
  array(9) {
    ["query"]=>
    string(27) "CREATE TABLE test (id INT )"
    ["occurences"]=>
    int(0)
    ["eligible_for_caching"]=>
    bool(false)
    ["avg_run_time"]=>
    int(0)
    ["min_run_time"]=>
    int(0)
    ["max_run_time"]=>
    int(0)
    ["avg_store_time"]=>
    int(0)
    ["min_store_time"]=>
    int(0)
    ["max_store_time"]=>
    int(0)
  }
  [2]=>
  array(9) {
    ["query"]=>
    string(46) "INSERT INTO test (id ) VALUES (? ), (? ), (? )"
    ["occurences"]=>
    int(0)
    ["eligible_for_caching"]=>
    bool(false)
    ["avg_run_time"]=>
    int(0)
    ["min_run_time"]=>
    int(0)
    ["max_run_time"]=>
    int(0)
    ["avg_store_time"]=>
    int(0)
    ["min_store_time"]=>
    int(0)
    ["max_store_time"]=>
    int(0)
  }
  [3]=>
  array(9) {
    ["query"]=>
    string(31) "SELECT id FROM test WHERE id =?"
    ["occurences"]=>
    int(4)
    ["eligible_for_caching"]=>
    bool(true)
    ["avg_run_time"]=>
    int(179)
    ["min_run_time"]=>
    int(11)
    ["max_run_time"]=>
    int(393)
    ["avg_store_time"]=>
    int(12)
    ["min_store_time"]=>
    int(7)
    ["max_store_time"]=>
    int(25)
  }
}

The source distribution of PECL/mysqlnd_qc contains a directory web/ in which web based monitoring scripts can be found which give an example how to write a cache monitor. Please, follow the instructions given in the source.

Since PECL/mysqlnd_qc 1.1.0 it is possible to write statistics into a log file. Please, see mysqlnd_qc.collect_statistics_log_file.

Finding cache candidates
Beyond TTL: user-defined storage
Quickstart and Examples


Beyond TTL: user-defined storage

The query cache plugin supports the use of user-defined storage handler. User-defined storage handler can use arbitrarily complex invalidation algorithms and support arbitrary storage media.

All user-defined storage handlers have to provide a certain interface. The functions of the user-defined storage handler will be called by the core of the cache plugin. The necessary interface consists of seven public functions. Both procedural and object oriented user-defined storage handler must implement the same set of functions.

Example #1 Using a user-defined storage handler

<?php
/* Enable default caching of all statements */
ini_set("mysqlnd_qc.cache_by_default", 1);

/* Procedural user defined storage handler functions */

$__cache = array();

function get_hash($host_info, $port, $user, $db, $query) {
    global $__cache;
    printf("\t%s(%d)\n", __FUNCTION__, func_num_args());

    return md5(sprintf("%s%s%s%s%s", $host_info, $port, $user, $db, $query));
}

function find_query_in_cache($key) {
    global $__cache;
    printf("\t%s(%d)\n", __FUNCTION__, func_num_args());

    if (isset($__cache[$key])) {
        $tmp = $__cache[$key];
        if ($tmp["valid_until"] < time()) {
            unset($__cache[$key]);
            $ret = NULL;
        } else {
            $ret = $__cache[$key]["data"];
        }
    } else {
        $ret = NULL;
    }

    return $ret;
}

function return_to_cache($key) {
    /*
     Called on cache hit after cached data has been processed,
     may be used for reference counting
    */
    printf("\t%s(%d)\n", __FUNCTION__, func_num_args());
}

function add_query_to_cache_if_not_exists($key, $data, $ttl, $run_time, $store_time, $row_count) {
    global $__cache;
    printf("\t%s(%d)\n", __FUNCTION__, func_num_args());

    $__cache[$key] = array(
        "data"               => $data,
        "row_count"          => $row_count,
        "valid_until"        => time() + $ttl,
        "hits"               => 0,
        "run_time"           => $run_time,
        "store_time"         => $store_time,
        "cached_run_times"   => array(),
        "cached_store_times" => array(),
    );

    return TRUE;
}

function query_is_select($query) {
    printf("\t%s('%s'): ", __FUNCTION__, $query);

    $ret = FALSE;
    if (stristr($query, "SELECT") !== FALSE) {
        /* cache for 5 seconds */
        $ret = 5;
    }

    printf("%s\n", (FALSE === $ret) ? "FALSE" : $ret);
    return $ret;
}

function update_query_run_time_stats($key, $run_time, $store_time) {
    global $__cache;
    printf("\t%s(%d)\n", __FUNCTION__, func_num_args());

    if (isset($__cache[$key])) {
        $__cache[$key]['hits']++;
        $__cache[$key]["cached_run_times"][] = $run_time;
        $__cache[$key]["cached_store_times"][] = $store_time;
    }
}

function get_stats($key = NULL) {
    global $__cache;
    printf("\t%s(%d)\n", __FUNCTION__, func_num_args());

    if ($key && isset($__cache[$key])) {
        $stats = $__cache[$key];
    } else {
        $stats = array();
        foreach ($__cache as $key => $details) {
            $stats[$key] = array(
               'hits'              => $details['hits'],
               'bytes'             => strlen($details['data']),
               'uncached_run_time' => $details['run_time'],
               'cached_run_time'   => (count($details['cached_run_times']))
                                      ? array_sum($details['cached_run_times']) / count($details['cached_run_times'])
                                      : 0,
            );
        }
    }

    return $stats;
}

function clear_cache() {
    global $__cache;
    printf("\t%s(%d)\n", __FUNCTION__, func_num_args());

    $__cache = array();
    return TRUE;
}

/* Install procedural user-defined storage handler */
if (!mysqlnd_qc_set_user_handlers("get_hash", "find_query_in_cache",
    "return_to_cache", "add_query_to_cache_if_not_exists",
    "query_is_select", "update_query_run_time_stats", "get_stats", "clear_cache")) {

        printf("Failed to install user-defined storage handler\n");
}

/* Connect, create and populate test table */
$mysqli = new mysqli("host", "user", "password", "schema", "port", "socket");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT)");
$mysqli->query("INSERT INTO test(id) VALUES (1), (2)");

printf("\nCache put/cache miss\n");

$res = $mysqli->query("SELECT id FROM test WHERE id = 1");
var_dump($res->fetch_assoc());
$res->free();

/* Delete record to verify we get our data from the cache */
$mysqli->query("DELETE FROM test WHERE id = 1");

printf("\nCache hit\n");

$res = $mysqli->query("SELECT id FROM test WHERE id = 1");
var_dump($res->fetch_assoc());
$res->free();

printf("\nDisplay cache statistics\n");
var_dump(mysqlnd_qc_get_cache_info());

printf("\nFlushing cache, cache put/cache miss");
var_dump(mysqlnd_qc_clear_cache());

$res = $mysqli->query("SELECT id FROM test WHERE id = 1");
var_dump($res->fetch_assoc());
$res->free();
?>

以上例程的输出类似于：

        query_is_select('DROP TABLE IF EXISTS test'): FALSE
        query_is_select('CREATE TABLE test(id INT)'): FALSE
        query_is_select('INSERT INTO test(id) VALUES (1), (2)'): FALSE

Cache put/cache miss
        query_is_select('SELECT id FROM test WHERE id = 1'): 5
        get_hash(5)
        find_query_in_cache(1)
        add_query_to_cache_if_not_exists(6)
array(1) {
  ["id"]=>
  string(1) "1"
}
        query_is_select('DELETE FROM test WHERE id = 1'): FALSE

Cache hit
        query_is_select('SELECT id FROM test WHERE id = 1'): 5
        get_hash(5)
        find_query_in_cache(1)
        return_to_cache(1)
        update_query_run_time_stats(3)
array(1) {
  ["id"]=>
  string(1) "1"
}

Display cache statistics
        get_stats(0)
array(4) {
  ["num_entries"]=>
  int(1)
  ["handler"]=>
  string(4) "user"
  ["handler_version"]=>
  string(5) "1.0.0"
  ["data"]=>
  array(1) {
    ["18683c177dc89bb352b29965d112fdaa"]=>
    array(4) {
      ["hits"]=>
      int(1)
      ["bytes"]=>
      int(71)
      ["uncached_run_time"]=>
      int(398)
      ["cached_run_time"]=>
      int(4)
    }
  }
}

Flushing cache, cache put/cache miss    clear_cache(0)
bool(true)
        query_is_select('SELECT id FROM test WHERE id = 1'): 5
        get_hash(5)
        find_query_in_cache(1)
        add_query_to_cache_if_not_exists(6)
NULL

Measuring cache efficiency
安装／配置
Quickstart and Examples


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
Beyond TTL: user-defined storage
需求
mysqlnd_qc


需求

PHP 5.3.3 or a newer version of PHP.

PECL/mysqlnd_qc is a mysqlnd plugin. It plugs into the mysqlnd library. To use you this plugin with a PHP MySQL extension, the extension (mysqli, mysql, or PDO_MYSQL) must enable the mysqlnd library.

For using the APC storage handler with PECL/mysqlnd_qc 1.0 APC 3.1.3p1-beta or newer. PECL/mysqlnd_qc 1.2 has been tested with APC 3.1.13-beta. The APC storage handler cannot be used with a shared build. You cannot use the PHP configuration directive extension to load the APC and PECL/mysqlnd_qc extensions if PECL/mysqlnd_qc will use APC as a storage handler. For using the APC storage handler, you have to statically compile PHP with APC and PECL/mysqlnd_qc support into PHP.

For using MEMCACHE storage handler: Use libmemcache 0.38 or newer. PECL/mysqlnd_qc 1.2 has been tested with libmemcache 1.4.0.

For using sqlite storage handler: Use the sqlite3 extension that bundled with PHP.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/mysqlnd_qc

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

mysqlnd_qc 配置选项
名字 | 默认 | 可修改范围 | 更新日志
mysqlnd_qc.enable_qc | 1 | PHP_INI_SYSTEM |
mysqlnd_qc.ttl | 30 | PHP_INI_ALL |
mysqlnd_qc.cache_by_default | 0 | PHP_INI_ALL |
mysqlnd_qc.cache_no_table | 0 | PHP_INI_ALL |
mysqlnd_qc.use_request_time | 0 | PHP_INI_ALL |
mysqlnd_qc.time_statistics | 1 | PHP_INI_ALL |
mysqlnd_qc.collect_statistics | 0 | PHP_INI_ALL |
mysqlnd_qc.collect_statistics_log_file | /tmp/mysqlnd_qc.stats | PHP_INI_SYSTEM |
mysqlnd_qc.collect_query_trace | 0 | PHP_INI_SYSTEM |
mysqlnd_qc.query_trace_bt_depth | 3 | PHP_INI_SYSTEM |
mysqlnd_qc.collect_normalized_query_trace | 0 | PHP_INI_SYSTEM |
mysqlnd_qc.ignore_sql_comments | 1 | PHP_INI_ALL |
mysqlnd_qc.slam_defense | 0 | PHP_INI_SYSTEM |
mysqlnd_qc.slam_defense_ttl | 30 | PHP_INI_SYSTEM |
mysqlnd_qc.std_data_copy | 0 | PHP_INI_SYSTEM |
mysqlnd_qc.apc_prefix | qc_ | PHP_INI_ALL |
mysqlnd_qc.memc_server | 127.0.0.1 | PHP_INI_ALL |
mysqlnd_qc.memc_port | 11211 | PHP_INI_ALL |
mysqlnd_qc.sqlite_data_file | :memory: | PHP_INI_ALL |

这是配置指令的简短说明。

mysqlnd_qc.enable_qc integer

Enables or disables the plugin. If disabled the extension will not plug into mysqlnd to proxy internal mysqlnd C API calls.

mysqlnd_qc.ttl integer

Default Time-to-Live (TTL) for cache entries in seconds.

mysqlnd_qc.cache_by_default integer

Cache all queries regardless if they begin with the SQL hint that enables caching of a query or not. Storage handler cannot overrule the setting. It is evaluated by the core of the plugin.

mysqlnd_qc.cache_no_table integer

Whether to cache queries with no table name in any of columns meta data of their result set, for example, SELECT SLEEP(1), SELECT NOW(), SELECT SUBSTRING().

mysqlnd_qc.use_request_time integer

Use PHP global request time to avoid gettimeofday() system calls? If using APC storage handler it should be set to the value of apc.use_request_time , if not warnings will be generated.

mysqlnd_qc.time_statistics integer

Collect run time and store time statistics using gettimeofday() system call? Data will be collected only if you also set mysqlnd_qc.collect_statistics = 1,

mysqlnd_qc.collect_statistics integer

Collect statistics for mysqlnd_qc_get_core_stats()? Does not influence storage handler statistics! Handler statistics can be an integral part of the handler internal storage format. Therefore, collection of some handler statistics cannot be disabled.

mysqlnd_qc.collect_statistics-log-file integer

If mysqlnd_qc.collect_statistics and mysqlnd_qc.collect_statistics_log_file are set, the plugin will dump statistics into the specified log file at every 10th web request during PHP request shutdown. The log file needs to be writable by the web server user.

Since 1.1.0.

mysqlnd_qc.collect_query_trace integer

Collect query back traces?

mysqlnd_qc.query_trace_bt_depth integer

Maximum depth/level of a query code backtrace.

mysqlnd_qc.ignore_sql_comments integer

Whether to remove SQL comments from a query string before hashing it to generate a cache key. Disable if you do not want two statemts such as SELECT /*my_source_ip=123*/ id FROM test and SELECT /*my_source_ip=456*/ id FROM test to refer to the same cache entry.

Since 1.1.0.

mysqlnd_qc.slam_defense integer

Activates handler based slam defense (cache stampeding protection) if available. Supported by Default and APC storage handler

mysqlnd_qc.slam_defense_ttl integer

TTL for stale cache entries which are served while another client updates the entries. Supported by APC storage handler.

mysqlnd_qc.collect_normalized_query_trace integer

Collect aggregated normalized query traces? The setting has no effect by default. You compile the extension using the define NORM_QUERY_TRACE_LOG to make use of the setting.

mysqlnd_qc.std_data_copy integer

Default storage handler: copy cached wire data? EXPERIMENTAL - use default setting!

mysqlnd_qc.apc_prefix string

The APC storage handler stores data in the APC user cache. The setting sets a prefix to be used for cache entries.

mysqlnd_qc.memc_server string

MEMCACHE storage handler: memcache server host.

mysqlnd_qc.memc_port integer

MEMCACHE storage handler: memcached server port.

mysqlnd_qc.sqlite_data_file string

sqlite storage handler: data file. Any setting but :memory: may be of little practical value.

安装
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

SQL hint related

Example #1 Using SQL hint constants

The query cache is controlled by SQL hints. SQL hints are used to enable and disable caching. SQL hints can be used to set the TTL of a query.

The SQL hints recognized by the query cache can be manually changed at compile time. This makes it possible to use mysqlnd_qc in environments in which the default SQL hints are already taken and interpreted by other systems. Therefore it is recommended to use the SQL hint string constants instead of manually adding the default SQL hints to the query string.

<?php
/* Use constants for maximum portability */
$query = "/*" . MYSQLND_QC_ENABLE_SWITCH . "*/SELECT id FROM test";

/* Valid but less portable: default TTL */
$query = "/*qc=on*/SELECT id FROM test";

/* Valid but less portable: per statement TTL */
$query = "/*qc=on*//*qc_ttl=5*/SELECT id FROM test";

printf("MYSQLND_QC_ENABLE_SWITCH: %s\n", MYSQLND_QC_ENABLE_SWITCH);
printf("MYSQLND_QC_DISABLE_SWITCH: %s\n", MYSQLND_QC_DISABLE_SWITCH);
printf("MYSQLND_QC_TTL_SWITCH: %s\n", MYSQLND_QC_TTL_SWITCH);
?>

以上例程会输出：

MYSQLND_QC_ENABLE_SWITCH: qc=on
MYSQLND_QC_DISABLE_SWITCH: qc=off
MYSQLND_QC_TTL_SWITCH: qc_ttl=

MYSQLND_QC_ENABLE_SWITCH (string)
SQL hint used to enable caching of a query.
MYSQLND_QC_DISABLE_SWITCH (string)
SQL hint used to disable caching of a query if mysqlnd_qc.cache_by_default = 1.
MYSQLND_QC_TTL_SWITCH (string)
SQL hint used to set the TTL of a result set.
MYSQLND_QC_SERVER_ID_SWITCH (string)
This SQL hint should not be used in general. It is needed by PECL/mysqlnd_ms to group cache entries for one statement but originating from different physical connections. If the hint is used connection settings such as user, hostname and charset are not considered for generating a cache key of a query. Instead the given value and the query string are used as input to the hashing function that generates the key. PECL/mysqlnd_ms may, if instructed, cache results from MySQL Replication slaves. Because it can hold many connections to the slave the cache key shall not be formed from the user, hostname or other settings that may vary for the various slave connections. Instead, PECL/mysqlnd_ms provides an identifier which refers to the group of slave connections that shall be enabled to share cache entries no matter which physical slave connection was to generate the cache entry. Use of this feature outside of PECL/mysqlnd_ms is not recommended.

mysqlnd_qc_set_cache_condition() related

Example #2 Example mysqlnd_qc_set_cache_condition() usage

The function mysqlnd_qc_set_cache_condition() allows setting conditions for automatic caching of statements which don't begin with the SQL hints necessary to manually enable caching.

<?php
/* Cache all accesses to tables with the name "new%" in schema/database "db_example" for 1 second */
if (!mysqlnd_qc_set_cache_condition(MYSQLND_QC_CONDITION_META_SCHEMA_PATTERN, "db_example.new%", 1)) {
  die("Failed to set cache condition!");
}

$mysqli = new mysqli("host", "user", "password", "db_example", "port");
/* cached although no SQL hint given  */
$mysqli->query("SELECT id, title FROM news");

$pdo_mysql = new PDO("mysql:host=host;dbname=db_example;port=port", "user", "password");
/* not cached: no SQL hint, no pattern match */
$pdo_mysql->query("SELECT id, title FROM latest_news");
/* cached: TTL 1 second, pattern match */
$pdo_mysql->query("SELECT id, title FROM news");
?>

MYSQLND_QC_CONDITION_META_SCHEMA_PATTERN (int)
Used as a parameter of mysqlnd_qc_set_cache_condition() to set conditions for schema based automatic caching.

Other

The plugin version number can be obtained using either MYSQLND_QC_VERSION, which is the string representation of the numerical version number, or MYSQLND_QC_VERSION_ID, which is an integer such as 10000. Developers can calculate the version number as follows.

Version (part) | Example
Major*10000 | 1*10000 = 10000
Minor*100 | 0*100 = 0
Patch | 0 = 0
MYSQLND_QC_VERSION_ID | 10000

MYSQLND_QC_VERSION (string)
Plugin version string, for example, "1.0.0-prototype".

MYSQLND_QC_VERSION_ID (int)
Plugin version number, for example, 10000.

运行时配置
mysqlnd_qc 函数
mysqlnd_qc


mysqlnd_qc 函数

Table of Contents

  • mysqlnd_qc_clear_cache — Flush all cache contents
  • mysqlnd_qc_get_available_handlers — Returns a list of available storage handler
  • mysqlnd_qc_get_cache_info — Returns information on the current handler, the number of cache entries and cache entries, if available
  • mysqlnd_qc_get_core_stats — Statistics collected by the core of the query cache
  • mysqlnd_qc_get_normalized_query_trace_log — Returns a normalized query trace log for each query inspected by the query cache
  • mysqlnd_qc_get_query_trace_log — Returns a backtrace for each query inspected by the query cache
  • mysqlnd_qc_set_cache_condition — Set conditions for automatic caching
  • mysqlnd_qc_set_is_select — Installs a callback which decides whether a statement is cached
  • mysqlnd_qc_set_storage_handler — Change current storage handler
  • mysqlnd_qc_set_user_handlers — Sets the callback functions for a user-defined procedural storage handler
预定义常量
mysqlnd_qc_clear_cache
mysqlnd_qc


Flush all cache contents

mysqlnd_qc 函数
mysqlnd_qc_get_available_handlers
mysqlnd_qc 函数
PHP Manual

mysqlnd_qc_clear_cache

(PECL mysqlnd_qc >= 1.0.0)

mysqlnd_qc_clear_cache — Flush all cache contents

说明

bool mysqlnd_qc_clear_cache ( void )

Flush all cache contents.

Flushing the cache is a storage handler responsibility. All built-in storage handler but the memcache storage handler support flushing the cache. The memcache storage handler cannot flush its cache contents.

User-defined storage handler may or may not support the operation.

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

A return value of FALSE indicates that flushing all cache contents has failed or the operation is not supported by the active storage handler. Applications must not expect that calling the function will always flush the cache.

mysqlnd_qc 函数
mysqlnd_qc_get_available_handlers
mysqlnd_qc 函数


Returns a list of available storage handler

mysqlnd_qc_clear_cache
mysqlnd_qc_get_cache_info
mysqlnd_qc 函数
PHP Manual

mysqlnd_qc_get_available_handlers

(PECL mysqlnd_qc >= 1.0.0)

mysqlnd_qc_get_available_handlers — Returns a list of available storage handler

说明

array mysqlnd_qc_get_available_handlers ( void )

Which storage are available depends on the compile time configuration of the query cache plugin. The default storage handler is always available. All other storage handler must be enabled explicitly when building the extension.

参数

此函数没有参数。

返回值

Returns an array of available built-in storage handler. For each storage handler the version number and version string is given.

范例

Example #1 mysqlnd_qc_get_available_handlers() example

<?php
var_dump(mysqlnd_qc_get_available_handlers());
?>

以上例程会输出：

array(5) {
  ["default"]=>
  array(2) {
    ["version"]=>
    string(5) "1.0.0"
    ["version_number"]=>
    int(100000)
  }
  ["user"]=>
  array(2) {
    ["version"]=>
    string(5) "1.0.0"
    ["version_number"]=>
    int(100000)
  }
  ["APC"]=>
  array(2) {
    ["version"]=>
    string(5) "1.0.0"
    ["version_number"]=>
    int(100000)
  }
  ["MEMCACHE"]=>
  array(2) {
    ["version"]=>
    string(5) "1.0.0"
    ["version_number"]=>
    int(100000)
  }
  ["sqlite"]=>
  array(2) {
    ["version"]=>
    string(5) "1.0.0"
    ["version_number"]=>
    int(100000)
  }
}

参见

  • Installation
  • mysqlnd_qc_set_storage_handler() - Change current storage handler

mysqlnd_qc_clear_cache
mysqlnd_qc_get_cache_info
mysqlnd_qc 函数


Returns information on the current handler, the number of cache entries and cache entries, if available

mysqlnd_qc_get_available_handlers
mysqlnd_qc_get_core_stats
mysqlnd_qc 函数
PHP Manual

mysqlnd_qc_get_cache_info

(PECL mysqlnd_qc >= 1.0.0)

mysqlnd_qc_get_cache_info — Returns information on the current handler, the number of cache entries and cache entries, if available

说明

array mysqlnd_qc_get_cache_info ( void )

参数

此函数没有参数。

返回值

Returns information on the current handler, the number of cache entries and cache entries, if available. If and what data will be returned for the cache entries is subject to the active storage handler. Storage handler are free to return any data. Storage handler are recommended to return at least the data provided by the default handler, if technically possible.

The scope of the information is the PHP process. Depending on the PHP deployment model a process may serve one or more web requests.

Values are aggregated for all cache activities on a per storage handler basis. It is not possible to tell how much queries originating from mysqli, PDO_MySQL or mysql.API calls have contributed to the aggregated data values. Use mysqlnd_qc_get_core_stats() to get timing data aggregated for all storage handlers.

Array of cache information

handler string

The active storage handler.

All storage handler. Since 1.0.0.

handler_version string

The version of the active storage handler.

All storage handler. Since 1.0.0.

num_entries int

The number of cache entries. The value depends on the storage handler in use.

The default, APC and SQLite storage handler provide the actual number of cache entries.

The MEMCACHE storage handler always returns 0. MEMCACHE does not support counting the number of cache entries.

If a user defined handler is used, the number of entries of the data property is reported.

Since 1.0.0.

data array

The version of the active storage handler.

Additional storage handler dependent data on the cache entries. Storage handler are requested to provide similar and comparable information. A user defined storage handler is free to return any data.

Since 1.0.0.

The following information is provided by the default storage handler for the data property.

The data property holds a hash. The hash is indexed by the internal cache entry identifier of the storage handler. The cache entry identifier is human-readable and contains the query string leading to the cache entry. Please, see also the example below. The following data is given for every cache entry.

statistics array

Statistics of the cache entry.

Since 1.0.0.

Property | Description | Version
rows | Number of rows of the cached result set. | Since 1.0.0.
stored_size | The size of the cached result set in bytes. This is the size of the payload. The value is not suited for calculating the total memory consumption of all cache entries including the administrative overhead of the cache entries. | Since 1.0.0.
cache_hits | How often the cached entry has been returned. | Since 1.0.0.
run_time | Run time of the statement to which the cache entry belongs. This is the run time of the uncached statement. It is the time between sending the statement to MySQL receiving a reply from MySQL. Run time saved by using the query cache plugin can be calculated like this: cache_hits * ((run_time - avg_run_time) + (store_time - avg_store_time)). | Since 1.0.0.
store_time | Store time of the statements result set to which the cache entry belongs. This is the time it took to fetch and store the results of the uncached statement. | Since 1.0.0.
min_run_time | Minimum run time of the cached statement. How long it took to find the statement in the cache. | Since 1.0.0.
min_store_time | Minimum store time of the cached statement. The time taken for fetching the cached result set from the storage medium and decoding | Since 1.0.0.
avg_run_time | Average run time of the cached statement. | Since 1.0.0.
avg_store_time | Average store time of the cached statement. | Since 1.0.0.
max_run_time | Average run time of the cached statement. | Since 1.0.0.
max_store_time | Average store time of the cached statement. | Since 1.0.0.
valid_until | Timestamp when the cache entry expires. | Since 1.1.0.
metadata array

Metadata of the cache entry. This is the metadata provided by MySQL together with the result set of the statement in question. Different versions of the MySQL server may return different metadata. Unlike with some of the PHP MySQL extensions no attempt is made to hide MySQL server version dependencies and version details from the caller. Please, refer to the MySQL C API documentation that belongs to the MySQL server in use for further details.

The metadata list contains one entry for every column.

Since 1.0.0.

Property | Description | Version
name | The field name. Depending on the MySQL version this may be the fields alias name. | Since 1.0.0.
org_name | The field name. | Since 1.0.0.
table | The table name. If an alias name was used for the table, this usually holds the alias name. | Since 1.0.0.
org_table | The table name. | Since 1.0.0.
db | The database/schema name. | Since 1.0.0.
max_length | The maximum width of the field. Details may vary by MySQL server version. | Since 1.0.0.
length | The width of the field. Details may vary by MySQL server version. | Since 1.0.0.
type | The data type of the field. Details may vary by the MySQL server in use. This is the MySQL C API type constants value. It is recommended to use type constants provided by the mysqli extension to test for its meaning. You should not test for certain type values by comparing with certain numbers. | Since 1.0.0.

The APC storage handler returns the same information for the data property but no metadata. The metadata of a cache entry is set to NULL.

The MEMCACHE storage handler does not fill the data property. Statistics are not available on a per cache entry basis with the MEMCACHE storage handler.

A user defined storage handler is free to provide any data.

范例

Example #1 mysqlnd_qc_get_cache_info() example

The example shows the output from the built-in default storage handler. Other storage handler may report different data.

<?php
/* Populate the cache, e.g. using mysqli */
$mysqli = new mysqli("host", "user", "password", "schema");
$mysqli->query("/*" . MYSQLND_QC_ENABLE_SWITCH . "*/SELECT id FROM test");

/* Display cache information */
var_dump(mysqlnd_qc_get_cache_info());
?>

以上例程会输出：

array(4) {
 ["num_entries"]=>
 int(1)
 ["handler"]=>
 string(7) "default"
 ["handler_version"]=>
 string(5) "1.0.0"
 ["data"]=>
 array(1) {
   ["Localhost via UNIX socket 3306 user schema|/*qc=on*/SELECT id FROM test"]=>
   array(2) {
     ["statistics"]=>
     array(11) {
       ["rows"]=>
       int(6)
       ["stored_size"]=>
       int(101)
       ["cache_hits"]=>
       int(0)
       ["run_time"]=>
       int(471)
       ["store_time"]=>
       int(27)
       ["min_run_time"]=>
       int(0)
       ["max_run_time"]=>
       int(0)
       ["min_store_time"]=>
       int(0)
       ["max_store_time"]=>
       int(0)
       ["avg_run_time"]=>
       int(0)
       ["avg_store_time"]=>
       int(0)
     }
     ["metadata"]=>
     array(1) {
       [0]=>
       array(8) {
         ["name"]=>
         string(2) "id"
         ["orig_name"]=>
         string(2) "id"
         ["table"]=>
         string(4) "test"
         ["orig_table"]=>
         string(4) "test"
         ["db"]=>
         string(4) "schema"
         ["max_length"]=>
         int(1)
         ["length"]=>
         int(11)
         ["type"]=>
         int(3)
       }
     }
   }
 }
}

参见

  • mysqlnd_qc_get_core_stats() - Statistics collected by the core of the query cache

mysqlnd_qc_get_available_handlers
mysqlnd_qc_get_core_stats
mysqlnd_qc 函数


Statistics collected by the core of the query cache

mysqlnd_qc_get_cache_info
mysqlnd_qc_get_normalized_query_trace_log
mysqlnd_qc 函数
PHP Manual

mysqlnd_qc_get_core_stats

(PECL mysqlnd_qc >= 1.0.0)

mysqlnd_qc_get_core_stats — Statistics collected by the core of the query cache

说明

array mysqlnd_qc_get_core_stats ( void )

Returns an array of statistics collected by the core of the cache plugin. The same data fields will be reported for any storage handler because the data is collected by the core.

The PHP configuration setting mysqlnd_qc.collect_statistics controls the collection of statistics. The collection of statistics is disabled by default for performance reasons. Disabling the collection of statistics will also disable the collection of time related statistics.

The PHP configuration setting mysqlnd_qc.collect_time_statistics controls the collection of time related statistics.

The scope of the core statistics is the PHP process. Depending on your deployment model a PHP process may handle one or multiple requests.

Statistics are aggregated for all cache entries and all storage handler. It is not possible to tell how much queries originating from mysqli, PDO_MySQL or mysql API calls have contributed to the aggregated data values.

参数

此函数没有参数。

返回值

Array of core statistics

Statistic | Description | Version
cache_hit | Statement is considered cacheable and cached data has been reused. Statement is considered cacheable and a cache miss happened but the statement got cached by someone else while we process it and thus we can fetch the result from the refreshed cache. | Since 1.0.0.
cache_miss Statement is considered cacheable...

  • ... and has been added to the cache

  • ... but the PHP configuration directive setting of mysqlnd_qc.cache_no_table = 1 has prevented caching.

  • ... but an unbuffered result set is requested.

  • ... but a buffered result set was empty.

Since 1.0.0.
cache_put | Statement is considered cacheable and has been added to the cache. Take care when calculating derived statistics. Storage handler with a storage life time beyond process scope may report cache_put = 0 together with cache_hit > 0, if another process has filled the cache. You may want to use num_entries from mysqlnd_qc_get_cache_info() if the handler supports it ( default, APC). | Since 1.0.0.
query_should_cache | Statement is considered cacheable based on query string analysis. The statement may or may not be added to the cache. See also cache_put. | Since 1.0.0.
query_should_not_cache | Statement is considered not cacheable based on query string analysis. | Since 1.0.0.
query_not_cached | Statement is considered not cacheable or it is considered cachable but the storage handler has not returned a hash key for it. | Since 1.0.0.
query_could_cache Statement is considered cacheable...

  • ... and statement has been run without errors

  • ... and meta data shows at least one column in the result set

The statement may or may not be in the cache already. It may or may not be added to the cache later on. 		Since 1.0.0.
query_found_in_cache | Statement is considered cacheable and we have found it in the cache but we have not replayed the cached data yet and we have not send the result set to the client yet. This is not considered a cache hit because the client might not fetch the result or the cached data may be faulty. | Since 1.0.0.
query_uncached_other | Statement is considered cacheable and it may or may not be in the cache already but either replaying cached data has failed, no result set is available or some other error has happened.
query_uncached_no_table | Statement has not been cached because the result set has at least one column which has no table name in its meta data. An example of such a query is SELECT SLEEP(1). To cache those statements you have to change default value of the PHP configuration directive mysqlnd_qc.cache_no_table and set mysqlnd_qc.cache_no_table = 1. Often, it is not desired to cache such statements. | Since 1.0.0.
query_uncached_use_result | Statement would have been cached if a buffered result set had been used. The situation is also considered as a cache miss and cache_miss will be incremented as well. | Since 1.0.0.
query_aggr_run_time_cache_hit | Aggregated run time (ms) of all cached queries. Cached queries are those which have incremented cache_hit. | Since 1.0.0.
query_aggr_run_time_cache_put | Aggregated run time (ms) of all uncached queries that have been put into the cache. See also cache_put. | Since 1.0.0.
query_aggr_run_time_total | Aggregated run time (ms) of all uncached and cached queries that have been inspected and executed by the query cache. | Since 1.0.0.
query_aggr_store_time_cache_hit | Aggregated store time (ms) of all cached queries. Cached queries are those which have incremented cache_hit. | Since 1.0.0.
query_aggr_store_time_cache_put | Aggregated store time ( ms) of all uncached queries that have been put into the cache. See also cache_put. | Since 1.0.0.
query_aggr_store_time_total | Aggregated store time (ms) of all uncached and cached queries that have been inspected and executed by the query cache. | Since 1.0.0.
receive_bytes_recorded | Recorded incoming network traffic ( bytes) send from MySQL to PHP. The traffic may or may not have been added to the cache. The traffic is the total for all queries regardless if cached or not. | Since 1.0.0.
receive_bytes_replayed | Network traffic replayed during cache. This is the total amount of incoming traffic saved because of the usage of the query cache plugin. | Since 1.0.0.
send_bytes_recorded | Recorded outgoing network traffic ( bytes) send from MySQL to PHP. The traffic may or may not have been added to the cache. The traffic is the total for all queries regardless if cached or not. | Since 1.0.0.
send_bytes_replayed | Network traffic replayed during cache. This is the total amount of outgoing traffic saved because of the usage of the query cache plugin. | Since 1.0.0.
slam_stale_refresh | Number of cache misses which triggered serving stale data until the client causing the cache miss has refreshed the cache entry. | Since 1.0.0.
slam_stale_hit | Number of cache hits while a stale cache entry gets refreshed. | Since 1.0.0.

范例

Example #1 mysqlnd_qc_get_core_stats() example

<?php
/* Enable collection of statistics - default: disabled */
ini_set("mysqlnd_qc.collect_statistics", 1);

/* Enable collection of all timing related statistics -
default: enabled but overruled by mysqlnd_qc.collect_statistics = 0 */
ini_set("mysqlnd_qc.collect_time_statistics", 1);

/* Populate the cache, e.g. using mysqli */
$mysqli = new mysqli('host', 'user', 'password', 'schema');

/* Cache miss and cache put */
$mysqli->query("/*qc=on*/SELECT id FROM test");
/* Cache hit */
$mysqli->query("/*qc=on*/SELECT id FROM test");

/* Display core statistics */
var_dump(mysqlnd_qc_get_core_stats());
?>

以上例程会输出：

array(26) {
  ["cache_hit"]=>
  string(1) "1"
  ["cache_miss"]=>
  string(1) "1"
  ["cache_put"]=>
  string(1) "1"
  ["query_should_cache"]=>
  string(1) "2"
  ["query_should_not_cache"]=>
  string(1) "0"
  ["query_not_cached"]=>
  string(1) "0"
  ["query_could_cache"]=>
  string(1) "2"
  ["query_found_in_cache"]=>
  string(1) "1"
  ["query_uncached_other"]=>
  string(1) "0"
  ["query_uncached_no_table"]=>
  string(1) "0"
  ["query_uncached_no_result"]=>
  string(1) "0"
  ["query_uncached_use_result"]=>
  string(1) "0"
  ["query_aggr_run_time_cache_hit"]=>
  string(1) "4"
  ["query_aggr_run_time_cache_put"]=>
  string(3) "395"
  ["query_aggr_run_time_total"]=>
  string(3) "399"
  ["query_aggr_store_time_cache_hit"]=>
  string(1) "2"
  ["query_aggr_store_time_cache_put"]=>
  string(1) "8"
  ["query_aggr_store_time_total"]=>
  string(2) "10"
  ["receive_bytes_recorded"]=>
  string(2) "65"
  ["receive_bytes_replayed"]=>
  string(2) "65"
  ["send_bytes_recorded"]=>
  string(2) "29"
  ["send_bytes_replayed"]=>
  string(2) "29"
  ["slam_stale_refresh"]=>
  string(1) "0"
  ["slam_stale_hit"]=>
  string(1) "0"
  ["request_counter"]=>
  int(1)
  ["process_hash"]=>
  int(3547549858)
}

参见

  • Runtime configuration
  • mysqlnd_qc.collect_statistics
  • mysqlnd_qc.time_statistics
  • mysqlnd_qc_get_cache_info() - Returns information on the current handler, the number of cache entries and cache entries, if available

mysqlnd_qc_get_cache_info
mysqlnd_qc_get_normalized_query_trace_log
mysqlnd_qc 函数


Returns a normalized query trace log for each query inspected by the query cache

mysqlnd_qc_get_core_stats
mysqlnd_qc_get_query_trace_log
mysqlnd_qc 函数
PHP Manual

mysqlnd_qc_get_normalized_query_trace_log

(PECL mysqlnd_qc >= 1.0.0)

mysqlnd_qc_get_normalized_query_trace_log — Returns a normalized query trace log for each query inspected by the query cache

说明

array mysqlnd_qc_get_normalized_query_trace_log ( void )

Returns a normalized query trace log for each query inspected by the query cache. The collection of the trace log is disabled by default. To collect the trace log you have to set the PHP configuration directive mysqlnd_qc.collect_normalized_query_trace to 1

Entries in the trace log are grouped by the normalized query statement. The normalized query statement is the query statement with all statement parameter values being replaced with a question mark. For example, the two statements SELECT id FROM test WHERE id = 1 and SELECT id FROM test WHERE id = 2 are normalized as SELECT id FROM test WHERE id = ?. Whenever a statement is inspected by the query cache which matches the normalized statement pattern, its statistics are grouped by the normalized statement string.

参数

此函数没有参数。

返回值

An array of query log. Every list entry contains the normalized query stringand further detail information.

Key | Description
query | Normalized statement string.
occurences | How many statements have matched the normalized statement string in addition to the one which has created the log entry. The value is zero if a statement has been normalized, its normalized representation has been added to the log but no further queries inspected by PECL/mysqlnd_qc have the same normalized statement string.
eligible_for_caching | Whether the statement could be cached. An statement eligible for caching has not necessarily been cached. It not possible to tell for sure if or how many cached statement have contributed to the aggregated normalized statement log entry. However, comparing the minimum and average run time one can make an educated guess.
avg_run_time | The average run time of all queries contributing to the query log entry. The run time is the time between sending the query statement to MySQL and receiving an answer from MySQL.
avg_store_time | The average store time of all queries contributing to the query log entry. The store time is the time needed to fetch a statements result set from the server to the client and, storing it on the client.
min_run_time | The minimum run time of all queries contributing to the query log entry.
min_store_time | The minimum store time of all queries contributing to the query log entry.
max_run_time | The maximum run time of all queries contributing to the query log entry.
max_store_time | The maximum store time of all queries contributing to the query log entry.

范例

Example #1 mysqlnd_qc_get_normalized_query_trace_log() example

mysqlnd_qc.collect_normalized_query_trace=1
<?php
/* Connect, create and populate test table */
$mysqli = new mysqli("host", "user", "password", "schema", "port", "socket");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT)");
$mysqli->query("INSERT INTO test(id) VALUES (1), (2)");

/* not cached */
$res = $mysqli->query("SELECT id FROM test WHERE id = 1");
var_dump($res->fetch_assoc());
$res->free();

/* cache put */
$res = $mysqli->query("/*" . MYSQLND_QC_ENABLE_SWITCH . "*/" . "SELECT id FROM test WHERE id = 2");
var_dump($res->fetch_assoc());
$res->free();

/* cache hit */
$res = $mysqli->query("/*" . MYSQLND_QC_ENABLE_SWITCH . "*/" . "SELECT id FROM test WHERE id = 2");
var_dump($res->fetch_assoc());
$res->free();

var_dump(mysqlnd_qc_get_normalized_query_trace_log());
?>

以上例程会输出：

array(1) {
  ["id"]=>
  string(1) "1"
}
array(1) {
  ["id"]=>
  string(1) "2"
}
array(1) {
  ["id"]=>
  string(1) "2"
}
array(4) {
  [0]=>
  array(9) {
    ["query"]=>
    string(25) "DROP TABLE IF EXISTS test"
    ["occurences"]=>
    int(0)
    ["eligible_for_caching"]=>
    bool(false)
    ["avg_run_time"]=>
    int(0)
    ["min_run_time"]=>
    int(0)
    ["max_run_time"]=>
    int(0)
    ["avg_store_time"]=>
    int(0)
    ["min_store_time"]=>
    int(0)
    ["max_store_time"]=>
    int(0)
  }
  [1]=>
  array(9) {
    ["query"]=>
    string(27) "CREATE TABLE test (id INT )"
    ["occurences"]=>
    int(0)
    ["eligible_for_caching"]=>
    bool(false)
    ["avg_run_time"]=>
    int(0)
    ["min_run_time"]=>
    int(0)
    ["max_run_time"]=>
    int(0)
    ["avg_store_time"]=>
    int(0)
    ["min_store_time"]=>
    int(0)
    ["max_store_time"]=>
    int(0)
  }
  [2]=>
  array(9) {
    ["query"]=>
    string(40) "INSERT INTO test (id ) VALUES (? ), (? )"
    ["occurences"]=>
    int(0)
    ["eligible_for_caching"]=>
    bool(false)
    ["avg_run_time"]=>
    int(0)
    ["min_run_time"]=>
    int(0)
    ["max_run_time"]=>
    int(0)
    ["avg_store_time"]=>
    int(0)
    ["min_store_time"]=>
    int(0)
    ["max_store_time"]=>
    int(0)
  }
  [3]=>
  array(9) {
    ["query"]=>
    string(31) "SELECT id FROM test WHERE id =?"
    ["occurences"]=>
    int(2)
    ["eligible_for_caching"]=>
    bool(true)
    ["avg_run_time"]=>
    int(159)
    ["min_run_time"]=>
    int(12)
    ["max_run_time"]=>
    int(307)
    ["avg_store_time"]=>
    int(10)
    ["min_store_time"]=>
    int(8)
    ["max_store_time"]=>
    int(13)
  }
}

参见

  • Runtime configuration
  • mysqlnd_qc.collect_normalized_query_trace
  • mysqlnd_qc.time_statistics
  • mysqlnd_qc_get_query_trace_log() - Returns a backtrace for each query inspected by the query cache

mysqlnd_qc_get_core_stats
mysqlnd_qc_get_query_trace_log
mysqlnd_qc 函数


Returns a backtrace for each query inspected by the query cache

mysqlnd_qc_get_normalized_query_trace_log
mysqlnd_qc_set_cache_condition
mysqlnd_qc 函数
PHP Manual

mysqlnd_qc_get_query_trace_log

(PECL mysqlnd_qc >= 1.0.0)

mysqlnd_qc_get_query_trace_log — Returns a backtrace for each query inspected by the query cache

说明

array mysqlnd_qc_get_query_trace_log ( void )

Returns a backtrace for each query inspected by the query cache. The collection of the backtrace is disabled by default. To collect the backtrace you have to set the PHP configuration directive mysqlnd_qc.collect_query_trace to 1

The maximum depth of the backtrace is limited to the depth set with the PHP configuration directive mysqlnd_qc.query_trace_bt_depth.

参数

此函数没有参数。

返回值

An array of query backtrace. Every list entry contains the query string, a backtrace and further detail information.

Key | Description
query | Query string.
origin | Code backtrace.
run_time | Query run time in milliseconds. The collection of all times and the necessary gettimeofday system calls can be disabled by setting the PHP configuration directive mysqlnd_qc.time_statistics to 0
store_time | Query result set store time in milliseconds. The collection of all times and the necessary gettimeofday system calls can be disabled by setting the PHP configuration directive mysqlnd_qc.time_statistics to 0
eligible_for_caching | TRUE if query is cacheable otherwise FALSE.
no_table | TRUE if the query has generated a result set and at least one column from the result set has no table name set in its metadata. This is usually the case with queries which one probably do not want to cache such as SELECT SLEEP(1). By default any such query will not be added to the cache. See also PHP configuration directive mysqlnd_qc.cache_no_table.
was_added | TRUE if the query result has been put into the cache, otherwise FALSE.
was_already_in_cache | TRUE if the query result would have been added to the cache if it was not already in the cache (cache hit). Otherwise FALSE.

范例

Example #1 mysqlnd_qc_get_query_trace_log() example

mysqlnd_qc.collect_query_trace=1
<?php
/* Connect, create and populate test table */
$mysqli = new mysqli("host", "user", "password", "schema", "port", "socket");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT)");
$mysqli->query("INSERT INTO test(id) VALUES (1), (2)");

/* not cached */
$res = $mysqli->query("SELECT id FROM test WHERE id = 1");
var_dump($res->fetch_assoc());
$res->free();

/* cache put */
$res = $mysqli->query("/*" . MYSQLND_QC_ENABLE_SWITCH . "*/" . "SELECT id FROM test WHERE id = 2");
var_dump($res->fetch_assoc());
$res->free();

/* cache hit */
$res = $mysqli->query("/*" . MYSQLND_QC_ENABLE_SWITCH . "*/" . "SELECT id FROM test WHERE id = 2");
var_dump($res->fetch_assoc());
$res->free();

var_dump(mysqlnd_qc_get_query_trace_log());
?>

以上例程会输出：

array(1) {
  ["id"]=>
  string(1) "1"
}
array(1) {
  ["id"]=>
  string(1) "2"
}
array(1) {
  ["id"]=>
  string(1) "2"
}
array(6) {
  [0]=>
  array(8) {
    ["query"]=>
    string(25) "DROP TABLE IF EXISTS test"
    ["origin"]=>
    string(102) "#0 qc.php(4): mysqli->query('DROP TABLE IF E...')
#1 {main}"
    ["run_time"]=>
    int(0)
    ["store_time"]=>
    int(0)
    ["eligible_for_caching"]=>
    bool(false)
    ["no_table"]=>
    bool(false)
    ["was_added"]=>
    bool(false)
    ["was_already_in_cache"]=>
    bool(false)
  }
  [1]=>
  array(8) {
    ["query"]=>
    string(25) "CREATE TABLE test(id INT)"
    ["origin"]=>
    string(102) "#0 qc.php(5): mysqli->query('CREATE TABLE te...')
#1 {main}"
    ["run_time"]=>
    int(0)
    ["store_time"]=>
    int(0)
    ["eligible_for_caching"]=>
    bool(false)
    ["no_table"]=>
    bool(false)
    ["was_added"]=>
    bool(false)
    ["was_already_in_cache"]=>
    bool(false)
  }
  [2]=>
  array(8) {
    ["query"]=>
    string(36) "INSERT INTO test(id) VALUES (1), (2)"
    ["origin"]=>
    string(102) "#0 qc.php(6): mysqli->query('INSERT INTO tes...')
#1 {main}"
    ["run_time"]=>
    int(0)
    ["store_time"]=>
    int(0)
    ["eligible_for_caching"]=>
    bool(false)
    ["no_table"]=>
    bool(false)
    ["was_added"]=>
    bool(false)
    ["was_already_in_cache"]=>
    bool(false)
  }
  [3]=>
  array(8) {
    ["query"]=>
    string(32) "SELECT id FROM test WHERE id = 1"
    ["origin"]=>
    string(102) "#0 qc.php(9): mysqli->query('SELECT id FROM ...')
#1 {main}"
    ["run_time"]=>
    int(0)
    ["store_time"]=>
    int(25)
    ["eligible_for_caching"]=>
    bool(false)
    ["no_table"]=>
    bool(false)
    ["was_added"]=>
    bool(false)
    ["was_already_in_cache"]=>
    bool(false)
  }
  [4]=>
  array(8) {
    ["query"]=>
    string(41) "/*qc=on*/SELECT id FROM test WHERE id = 2"
    ["origin"]=>
    string(103) "#0 qc.php(14): mysqli->query('/*qc=on*/SELECT...')
#1 {main}"
    ["run_time"]=>
    int(311)
    ["store_time"]=>
    int(13)
    ["eligible_for_caching"]=>
    bool(true)
    ["no_table"]=>
    bool(false)
    ["was_added"]=>
    bool(true)
    ["was_already_in_cache"]=>
    bool(false)
  }
  [5]=>
  array(8) {
    ["query"]=>
    string(41) "/*qc=on*/SELECT id FROM test WHERE id = 2"
    ["origin"]=>
    string(103) "#0 qc.php(19): mysqli->query('/*qc=on*/SELECT...')
#1 {main}"
    ["run_time"]=>
    int(13)
    ["store_time"]=>
    int(8)
    ["eligible_for_caching"]=>
    bool(true)
    ["no_table"]=>
    bool(false)
    ["was_added"]=>
    bool(false)
    ["was_already_in_cache"]=>
    bool(true)
  }
}

参见

  • Runtime configuration
  • mysqlnd_qc.collect_query_trace
  • mysqlnd_qc.query_trace_bt_depth
  • mysqlnd_qc.time_statistics
  • mysqlnd_qc.cache_no_table
  • mysqlnd_qc_get_normalized_query_trace_log() - Returns a normalized query trace log for each query inspected by the query cache

mysqlnd_qc_get_normalized_query_trace_log
mysqlnd_qc_set_cache_condition
mysqlnd_qc 函数


Set conditions for automatic caching

mysqlnd_qc_get_query_trace_log
mysqlnd_qc_set_is_select
mysqlnd_qc 函数
PHP Manual

mysqlnd_qc_set_cache_condition

(PECL mysqlnd_qc >= 1.1.0)

mysqlnd_qc_set_cache_condition — Set conditions for automatic caching

说明

bool mysqlnd_qc_set_cache_condition ( int $condition_type , mixed $condition , mixed $condition_option )

Sets a condition for automatic caching of statements which do not contain the necessary SQL hints to enable caching of them.

参数

condition_type

Type of the condition. The only allowed value is MYSQLND_QC_CONDITION_META_SCHEMA_PATTERN.

condition

Parameter for the condition set with condition_type. Parameter type and structure depend on condition_type

If condition_type equals MYSQLND_QC_CONDITION_META_SCHEMA_PATTERN condition must be a string. The string sets a pattern. Statements are cached if table and database meta data entry of their result sets match the pattern. The pattern is checked for a match with the db and org_table meta data entries provided by the underlying MySQL client server library. Please, check the MySQL Reference manual for details about the two entries. The db and org_table values are concatenated with a dot (.) before matched against condition. Pattern matching supports the wildcards % and _. The wildcard % will match one or many arbitrary characters. _ will match one arbitrary character. The escape symbol is backslash.

condition_option

Option for condition. Type and structure depend on condition_type.

If condition_type equals MYSQLND_QC_CONDITION_META_SCHEMA_PATTERN condition_options is the TTL to be used.

范例

Example #1 mysqlnd_qc_set_cache_condition() example

<?php
/* Cache all accesses to tables with the name "new%" in schema/database "db_example" for 1 second */
if (!mysqlnd_qc_set_cache_condition(MYSQLND_QC_CONDITION_META_SCHEMA_PATTERN, "db_example.new%", 1)) {
  die("Failed to set cache condition!");
}

$mysqli = new mysqli("host", "user", "password", "db_example", "port");
/* cached although no SQL hint given  */
$mysqli->query("SELECT id, title FROM news");

$pdo_mysql = new PDO("mysql:host=host;dbname=db_example;port=port", "user", "password");
/* not cached: no SQL hint, no pattern match */
$pdo_mysql->query("SELECT id, title FROM latest_news");
/* cached: TTL 1 second, pattern match */
$pdo_mysql->query("SELECT id, title FROM news");
?>

返回值

Returns TRUE on success or FALSE on FAILURE.

参见

  • Quickstart: pattern based caching

mysqlnd_qc_get_query_trace_log
mysqlnd_qc_set_is_select
mysqlnd_qc 函数


Installs a callback which decides whether a statement is cached

mysqlnd_qc_set_cache_condition
mysqlnd_qc_set_storage_handler
mysqlnd_qc 函数
PHP Manual

mysqlnd_qc_set_is_select

(PECL mysqlnd_qc >= 1.0.0)

mysqlnd_qc_set_is_select — Installs a callback which decides whether a statement is cached

说明

mixed mysqlnd_qc_set_is_select ( string $callback )

Installs a callback which decides whether a statement is cached.

There are several ways of hinting PELC/mysqlnd_qc to cache a query. By default, PECL/mysqlnd_qc attempts to cache a if caching of all statements is enabled or the query string begins with a certain SQL hint. The plugin internally calls a function named is_select() to find out. This internal function can be replaced with a user-defined callback. Then, the user-defined callback is responsible to decide whether the plugin attempts to cache a statement. Because the internal function is replaced with the callback, the callback gains full control. The callback is free to ignore the configuration setting mysqlnd_qc.cache_by_default and SQL hints.

The callback is invoked for every statement inspected by the plugin. It is given the statements string as a parameter. The callback returns FALSE if the statement shall not be cached. It returns TRUE to make the plugin attempt to cache the statements result set, if any. A so-created cache entry is given the default TTL set with the PHP configuration directive mysqlnd_qc.ttl. If a different TTL shall be used, the callback returns a numeric value to be used as the TTL.

The internal is_select function is part of the internal cache storage handler interface. Thus, a user-defined storage handler offers the same capabilities.

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 mysqlnd_qc_set_is_select() example

<?php
/* callback which decides if query is cached */
function is_select($query) {
  static $patterns = array(
   /* true - use default from mysqlnd_qc.ttl */
   "@SELECT\s+.*\s+FROM\s+test@ismU" => true,
   /* 3 - use TTL = 3 seconds */
   "@SELECT\s+.*\s+FROM\s+news@ismU" => 3
  );
  /* check if query does match pattern */
  foreach ($patterns as $pattern => $ttl) {
    if (preg_match($pattern, $query)) {
      printf("is_select(%45s): cache\n", $query);
      return $ttl;
    }
  }
  printf("is_select(%45s): do not cache\n", $query);
  return false;
}
mysqlnd_qc_set_is_select("is_select");

/* Connect, create and populate test table */
$mysqli = new mysqli("host", "user", "password", "schema");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT)");
$mysqli->query("INSERT INTO test(id) VALUES (1), (2), (3)");

/* cache put */
$mysqli->query("SELECT id FROM test WHERE id = 1");
/* cache hit */
$mysqli->query("SELECT id FROM test WHERE id = 1");
/* cache put */
$mysqli->query("SELECT * FROM test");
?>

以上例程会输出：

is_select(                    DROP TABLE IF EXISTS test): do not cache
is_select(                    CREATE TABLE test(id INT)): do not cache
is_select(    INSERT INTO test(id) VALUES (1), (2), (3)): do not cache
is_select(             SELECT id FROM test WHERE id = 1): cache
is_select(             SELECT id FROM test WHERE id = 1): cache
is_select(                           SELECT * FROM test): cache

参见

  • Runtime configuration
  • mysqlnd_qc.ttl
  • mysqlnd_qc.cache_by_default
  • mysqlnd_qc_set_user_handlers() - Sets the callback functions for a user-defined procedural storage handler

mysqlnd_qc_set_cache_condition
mysqlnd_qc_set_storage_handler
mysqlnd_qc 函数


Change current storage handler

mysqlnd_qc_set_is_select
mysqlnd_qc_set_user_handlers
mysqlnd_qc 函数
PHP Manual

mysqlnd_qc_set_storage_handler

(PECL mysqlnd_qc >= 1.0.0)

mysqlnd_qc_set_storage_handler — Change current storage handler

说明

bool mysqlnd_qc_set_storage_handler ( string $handler )

Sets the storage handler used by the query cache. A list of available storage handler can be obtained from mysqlnd_qc_get_available_handlers(). Which storage are available depends on the compile time configuration of the query cache plugin. The default storage handler is always available. All other storage handler must be enabled explicitly when building the extension.

参数

handler

Handler can be of type string representing the name of a built-in storage handler or an object of type mysqlnd_qc_handler_default. The names of the built-in storage handler are default, APC, MEMCACHE, sqlite.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

If changing the storage handler fails a catchable fatal error will be thrown. The query cache cannot operate if the previous storage handler has been shutdown but no new storage handler has been installed.

范例

Example #1 mysqlnd_qc_set_storage_handler() example

The example shows the output from the built-in default storage handler. Other storage handler may report different data.

<?php
var_dump(mysqlnd_qc_set_storage_handler("memcache"));

if (true === mysqlnd_qc_set_storage_handler("default"))
  printf("Default storage handler activated");

/* Catchable fatal error */
var_dump(mysqlnd_qc_set_storage_handler("unknown"));
?>

以上例程会输出：

bool(true)
Default storage handler activated
Catchable fatal error: mysqlnd_qc_set_storage_handler(): Unknown handler 'unknown' in (file) on line (line)

参见

  • Installation
  • mysqlnd_qc_get_available_handlers() - Returns a list of available storage handler

mysqlnd_qc_set_is_select
mysqlnd_qc_set_user_handlers
mysqlnd_qc 函数


Sets the callback functions for a user-defined procedural storage handler

mysqlnd_qc_set_storage_handler
Change History
mysqlnd_qc 函数
PHP Manual

mysqlnd_qc_set_user_handlers

(PECL mysqlnd_qc >= 1.0.0)

mysqlnd_qc_set_user_handlers — Sets the callback functions for a user-defined procedural storage handler

说明

bool mysqlnd_qc_set_user_handlers ( string $get_hash , string $find_query_in_cache , string $return_to_cache , string $add_query_to_cache_if_not_exists , string $query_is_select , string $update_query_run_time_stats , string $get_stats , string $clear_cache )

Sets the callback functions for a user-defined procedural storage handler.

参数

get_hash

Name of the user function implementing the storage handler get_hash functionality.

find_query_in_cache

Name of the user function implementing the storage handler find_in_cache functionality.

return_to_cache

Name of the user function implementing the storage handler return_to_cache functionality.

add_query_to_cache_if_not_exists

Name of the user function implementing the storage handler add_query_to_cache_if_not_exists functionality.

query_is_select

Name of the user function implementing the storage handler query_is_select functionality.

update_query_run_time_stats

Name of the user function implementing the storage handler update_query_run_time_stats functionality.

get_stats

Name of the user function implementing the storage handler get_stats functionality.

clear_cache

Name of the user function implementing the storage handler clear_cache functionality.

返回值

Returns TRUE on success or FALSE on FAILURE.

参见

  • Procedural user-defined storage handler example

mysqlnd_qc_set_storage_handler
Change History
mysqlnd_qc 函数


Change History

Table of Contents

  • PECL/mysqlnd_qc 1.2 series
  • PECL/mysqlnd_qc 1.1 series
  • PECL/mysqlnd_qc 1.0 series

This change history is a high level summary of selected changes that may impact applications and/or break backwards compatibility.

See also the CHANGES file in the source distribution for a complete list of changes.

mysqlnd_qc_set_user_handlers
PECL/mysqlnd_qc 1.2 series
mysqlnd_qc


PECL/mysqlnd_qc 1.2 series

1.2.0 - alpha

  • Release date: 03/2013
  • Motto/theme: PHP 5.5 compatibility

Feature changes

  • Update build for PHP 5.5 (Credits: Remi Collet)

  • APC storage handler update

    • Fix build for APC 3.1.13-beta and trunk

  • Introduced MYSQLND_QC_VERSION and MYSQLND_QC_VERSION_ID.

Change History
PECL/mysqlnd_qc 1.1 series
Change History


PECL/mysqlnd_qc 1.1 series

1.1.0 - stable

  • Release date: 04/2012
  • Motto/theme: PHP 5.4 compatibility, schema pattern based caching and mysqlnd_ms support

1.1.0 - beta

  • Release date: 04/2012
  • Motto/theme: PHP 5.4 compatibility, schema pattern based caching and mysqlnd_ms support

1.1.0 - alpha

  • Release date: 04/2012
  • Motto/theme: PHP 5.4 compatibility, schema pattern based caching and mysqlnd_ms support

Feature changes

  • APC storage handler update

    • Fix build for APC 3.1.9+
    • Note: Use of the APC storage handler is currently not recommended due to stability issues of APC itself.

  • New PHP configuration directives

    • mysqlnd_qc.collect_statistics_log_file. Aggregated cache statistics log file written after every 10th request served by the PHP process.
    • mysqlnd_qc.ignore_sql_comments. Control whether SQL comments are ignored for cache key hash generation.

  • New constants and SQL hints

    • MYSQLND_QC_SERVER_ID_SWITCH allows grouping of cache entries from different physical connections. This is needed by PECL/mysqlnd_ms.
    • MYSQLND_QC_CONDITION_META_SCHEMA_PATTERN to be used with mysqlnd_qc_set_cache_condition().

  • New function mysqlnd_qc_set_cache_condition() for built-in schema pattern based caching. Likely to support a wider range of conditions in the future.

  • Report valid_until timestamp for cache entries of the default handler through mysqlnd_qc_get_cache_info().

  • Include charset number for cache entry hashing. This should prevent serving result sets which have the wrong charset.

    API change: get_hash_key expects new "charsetnr" (int) parameter after "port".

  • API change: changing is_select() signature from bool is_select() to mixed is_select(). Mixed can be either boolean or array(long ttl, string server_id). This is needed by PECL/mysqlnd_ms.

Other

  • Support acting as a cache backend for PECL/mysqlnd_ms 1.3.0-beta or later to transparently replace MySQL Replication slave reads with cache accesses, if the user explicitly allows.

Bug fixes

  • Fixed Bug #59959 (config.m4, wrong library - 64bit memcached handler builds) (Credits: Remi Collet)

PECL/mysqlnd_qc 1.2 series
PECL/mysqlnd_qc 1.0 series
Change History


PECL/mysqlnd_qc 1.0 series

1.0.1-stable

  • Release date: 12/2010
  • Motto/theme: Prepared statement support

Added support for Prepared statements and unbuffered queries.

1.0.0-beta

  • Release date: 07/2010
  • Motto/theme: TTL-based cache with various storage options (Memcache, APC, SQLite, user-defined)

Initial public release of the transparent TTL-based query result cache. Flexible storage of cached results. Various storage media supported.

PECL/mysqlnd_qc 1.1 series
mysqlnd_uh
Change History


Mysqlnd user handler plugin

  • 简介
  • Quickstart and Examples
    • Setup
    • How it works
    • Installing a proxy
    • Basic query monitoring
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • MysqlndUhConnection — The MysqlndUhConnection class
    • MysqlndUhConnection::changeUser — Changes the user of the specified mysqlnd database connection
    • MysqlndUhConnection::charsetName — Returns the default character set for the database connection
    • MysqlndUhConnection::close — Closes a previously opened database connection
    • MysqlndUhConnection::connect — Open a new connection to the MySQL server
    • MysqlndUhConnection::__construct — The __construct purpose
    • MysqlndUhConnection::endPSession — End a persistent connection
    • MysqlndUhConnection::escapeString — Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection
    • MysqlndUhConnection::getAffectedRows — Gets the number of affected rows in a previous MySQL operation
    • MysqlndUhConnection::getErrorNumber — Returns the error code for the most recent function call
    • MysqlndUhConnection::getErrorString — Returns a string description of the last error
    • MysqlndUhConnection::getFieldCount — Returns the number of columns for the most recent query
    • MysqlndUhConnection::getHostInformation — Returns a string representing the type of connection used
    • MysqlndUhConnection::getLastInsertId — Returns the auto generated id used in the last query.
    • MysqlndUhConnection::getLastMessage — Retrieves information about the most recently executed query
    • MysqlndUhConnection::getProtocolInformation — Returns the version of the MySQL protocol used
    • MysqlndUhConnection::getServerInformation — Returns the version of the MySQL server
    • MysqlndUhConnection::getServerStatistics — Gets the current system status
    • MysqlndUhConnection::getServerVersion — Returns the version of the MySQL server as an integer
    • MysqlndUhConnection::getSqlstate — Returns the SQLSTATE error from previous MySQL operation
    • MysqlndUhConnection::getStatistics — Returns statistics about the client connection.
    • MysqlndUhConnection::getThreadId — Returns the thread ID for the current connection
    • MysqlndUhConnection::getWarningCount — Returns the number of warnings from the last query for the given link
    • MysqlndUhConnection::init — Initialize mysqlnd connection
    • MysqlndUhConnection::killConnection — Asks the server to kill a MySQL thread
    • MysqlndUhConnection::listFields — List MySQL table fields
    • MysqlndUhConnection::listMethod — Wrapper for assorted list commands
    • MysqlndUhConnection::moreResults — Check if there are any more query results from a multi query
    • MysqlndUhConnection::nextResult — Prepare next result from multi_query
    • MysqlndUhConnection::ping — Pings a server connection, or tries to reconnect if the connection has gone down
    • MysqlndUhConnection::query — Performs a query on the database
    • MysqlndUhConnection::queryReadResultsetHeader — Read a result set header
    • MysqlndUhConnection::reapQuery — Get result from async query
    • MysqlndUhConnection::refreshServer — Flush or reset tables and caches
    • MysqlndUhConnection::restartPSession — Restart a persistent mysqlnd connection
    • MysqlndUhConnection::selectDb — Selects the default database for database queries
    • MysqlndUhConnection::sendClose — Sends a close command to MySQL
    • MysqlndUhConnection::sendQuery — Sends a query to MySQL
    • MysqlndUhConnection::serverDumpDebugInformation — Dump debugging information into the log for the MySQL server
    • MysqlndUhConnection::setAutocommit — Turns on or off auto-committing database modifications
    • MysqlndUhConnection::setCharset — Sets the default client character set
    • MysqlndUhConnection::setClientOption — Sets a client option
    • MysqlndUhConnection::setServerOption — Sets a server option
    • MysqlndUhConnection::shutdownServer — The shutdownServer purpose
    • MysqlndUhConnection::simpleCommand — Sends a basic COM_* command
    • MysqlndUhConnection::simpleCommandHandleResponse — Process a response for a basic COM_* command send to the client
    • MysqlndUhConnection::sslSet — Used for establishing secure connections using SSL
    • MysqlndUhConnection::stmtInit — Initializes a statement and returns a resource for use with mysqli_statement::prepare
    • MysqlndUhConnection::storeResult — Transfers a result set from the last query
    • MysqlndUhConnection::txCommit — Commits the current transaction
    • MysqlndUhConnection::txRollback — Rolls back current transaction
    • MysqlndUhConnection::useResult — Initiate a result set retrieval
  • MysqlndUhPreparedStatement — The MysqlndUhPreparedStatement class
    • MysqlndUhPreparedStatement::__construct — The __construct purpose
    • MysqlndUhPreparedStatement::execute — Executes a prepared Query
    • MysqlndUhPreparedStatement::prepare — Prepare an SQL statement for execution
  • Mysqlnd_uh 函数
    • mysqlnd_uh_convert_to_mysqlnd — Converts a MySQL connection handle into a mysqlnd connection handle
    • mysqlnd_uh_set_connection_proxy — Installs a proxy for mysqlnd connections
    • mysqlnd_uh_set_statement_proxy — Installs a proxy for mysqlnd statements
  • Change History
    • PECL/mysqlnd_uh 1.0 series
PECL/mysqlnd_qc 1.0 series
简介
MySQL


简介

The mysqlnd user handler plugin (mysqlnd_uh) allows users to set hooks for most internal calls of the MySQL native driver for PHP (mysqlnd). Mysqlnd and its plugins, including PECL/mysqlnd_uh, operate on a layer beneath the PHP MySQL extensions. A mysqlnd plugin can be considered as a proxy between the PHP MySQL extensions and the MySQL server as part of the PHP executable on the client-side. Because the plugins operates on their own layer below the PHP MySQL extensions, they can monitor and change application actions without requiring application changes. If the PHP MySQL extensions (mysqli, mysql, PDO_MYSQL) are compiled to use mysqlnd this can be used for:

  • Monitoring

    • Queries executed by any of the PHP MySQL extensions

    • Prepared statements executing by any of the PHP MySQL extensions

  • Auditing

    • Detection of database usage

    • SQL injection protection using black and white lists

  • Assorted

    • Load Balancing connections

The MySQL native driver for PHP (mysqlnd) features an internal plugin C API. C plugins, such as the mysqlnd user handler plugin, can extend the functionality of mysqlnd. PECL/mysqlnd_uh makes parts of the internal plugin C API available to the PHP user for plugin development with PHP.

Note: Status

The mysqlnd user handler plugin is in alpha status. Take appropriate care before using it in production environments.

Security considerations

PECL/mysqlnd_uh gives users access to MySQL user names, MySQL password used by any of the PHP MySQL extensions to connect to MySQL. It allows monitoring of all queries and prepared statements exposing the statement string to the user. Therefore, the extension should be installed with care. The PHP_INI_SYSTEM configuration setting mysqlnd_uh.enable can be used to prevent users from hooking mysqlnd calls.

Code obfuscators and similar technologies are not suitable to prevent monitoring of mysqlnd library activities if PECL/mysqlnd_uh is made available and the user can install a proxy, for example, using auto_prepend_file.

Documentation note

Many of the mysqlnd_uh functions are briefly described because the mysqli extension is a thin abstraction layer on top of the MySQL C API that the mysqlnd library provides. Therefore, the corresponding mysqli documentation (along with the MySQL reference manual) can be consulted to receive more information about a particular function.

On the name

The shortcut mysqlnd_uh stands for mysqlnd user handler, and has been the name since early development.

mysqlnd_uh
Quickstart and Examples
mysqlnd_uh


Quickstart and Examples

Table of Contents

  • Setup
  • How it works
  • Installing a proxy
  • Basic query monitoring

The mysqlnd user handler plugin can be understood as a client-side proxy for all PHP MySQL extensions (mysqli, mysql, PDO_MYSQL), if they are compiled to use the mysqlnd library. The extensions use the mysqlnd library internally, at the C level, to communicate with the MySQL server. PECL/mysqlnd_uh allows it to hook many mysqlnd calls. Therefore, most activities of the PHP MySQL extensions can be monitored.

Because monitoring happens at the level of the library, at a layer below the application, it is possible to monitor applications without changing them.

On the C level, the mysqlnd library is structured in modules or classes. The extension hooks almost all methods of the mysqlnd internal connection class and exposes them through the user space class MysqlndUhConnection. Some few methods of the mysqlnd internal statement class are made available to the PHP user with the class MysqlndUhPreparedStatement. By subclassing the classes MysqlndUhConnection and MysqlndUhPreparedStatement users get access to mysqlnd internal function calls.

Note:

The internal mysqlnd function calls are not designed to be exposed to the PHP user. Manipulating their activities may cause PHP to crash or leak memory. Often, this is not considered a bug. Please, keep in mind that you are accessing C library functions through PHP which are expected to take certain actions, which you may not be able to emulate in user space. Therefore, it is strongly recommended to always call the parent method implementation when subclassing MysqlndUhConnection or MysqlndUhPreparedStatement. To prevent the worst case, the extension performs some sanity checks. Please, see also the Mysqlnd_uh 配置选项.

简介
Setup
mysqlnd_uh


Setup

The plugin is implemented as a PHP extension. See the installation instructions to install the » PECL/mysqlnd_uh extension. Then, load the extension into PHP and activate the plugin in the PHP configuration file using the PHP configuration directive named mysqlnd_uh.enable. The below example shows the default settings of the extension.

Example #1 Enabling the plugin (php.ini)

mysqlnd_uh.enable=1
mysqlnd_uh.report_wrong_types=1

Quickstart and Examples
How it works
Quickstart and Examples


How it works

This describes the background and inner workings of the mysqlnd_uh extension.

Two classes are provided by the extension: MysqlndUhConnection and MysqlndUhPreparedStatement. MysqlndUhConnection lets you access almost all methods of the mysqlnd internal connection class. The latter exposes some selected methods of the mysqlnd internal statement class. For example, MysqlndUhConnection::connect() maps to the mysqlnd library C function mysqlnd_conn__connect.

As a mysqlnd plugin, the PECL/mysqlnd_uh extension replaces mysqlnd library C functions with its own functions. Whenever a PHP MySQL extension compiled to use mysqlnd calls a mysqlnd function, the functions installed by the plugin are executed instead of the original mysqlnd ones. For example, mysqli_connect() invokes mysqlnd_conn__connect, so the connect function installed by PECL/mysqlnd_uh will be called. The functions installed by PECL/mysqlnd_uh are the methods of the built-in classes.

The built-in PHP classes and their methods do nothing but call their mysqlnd C library counterparts, to behave exactly like the original mysqlnd function they replace. The code below illustrates in pseudo-code what the extension does.

Example #1 Pseudo-code: what a built-in class does

class MysqlndUhConnection {
  public function connect(($conn, $host, $user, $passwd, $db, $port, $socket, $mysql_flags) {
    MYSQLND* c_mysqlnd_connection = convert_from_php_to_c($conn);
    ...
    return call_c_function(mysqlnd_conn__connect(c_mysqlnd_connection, ...));
  }
}

The build-in classes behave like a transparent proxy. It is possible for you to replace the proxy with your own. This is done by subclassing MysqlndUhConnection or MysqlndUhPreparedStatement to extend the functionality of the proxy, followed by registering a new proxy object. Proxy objects are installed by mysqlnd_uh_set_connection_proxy() and mysqlnd_uh_set_statement_proxy().

Example #2 Installing a proxy

<?php
class proxy extends MysqlndUhConnection {
 public function connect($res, $host, $user, $passwd, $db, $port, $socket, $mysql_flags) {
   printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
   $ret = parent::connect($res, $host, $user, $passwd, $db, $port, $socket, $mysql_flags);
   printf("%s returns %s\n", __METHOD__, var_export($ret, true));
   return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
?>

以上例程会输出：

proxy::connect(array (
  0 => NULL,
  1 => 'localhost',
  2 => 'root',
  3 => '',
  4 => 'test',
  5 => 3306,
  6 => NULL,
  7 => 131072,
))
proxy::connect returns true

Setup
Installing a proxy
Quickstart and Examples


Installing a proxy

The extension provides two built-in classes: MysqlndUhConnection and MysqlndUhPreparedStatement. The classes are used for hooking mysqlnd library calls. Their methods correspond to mysqlnd internal functions. By default they act like a transparent proxy and do nothing but call their mysqlnd counterparts. By subclassing the classes you can install your own proxy to monitor mysqlnd.

See also the How it works guide to learn about the inner workings of this extension.

Connection proxies are objects of the type MysqlndUhConnection. Connection proxy objects are installed by mysqlnd_uh_set_connection_proxy(). If you install the built-in class MysqlndUhConnection as a proxy, nothing happens. It behaves like a transparent proxy.

Example #1 Proxy registration, mysqlnd_uh.enable=1

<?php
mysqlnd_uh_set_connection_proxy(new MysqlndUhConnection());
$mysqli = new mysqli("localhost", "root", "", "test");
?>

The PHP_INI_SYSTEM configuration setting mysqlnd_uh.enable controls whether a proxy may be set. If disabled, the extension will throw errors of type E_WARNING

Example #2 Proxy installation disabled

mysqlnd_uh.enable=0
<?php
mysqlnd_uh_set_connection_proxy(new MysqlndUhConnection());
$mysqli = new mysqli("localhost", "root", "", "test");
?>

以上例程会输出：

PHP Warning:  MysqlndUhConnection::__construct(): (Mysqlnd User Handler) The plugin has been disabled by setting the configuration parameter mysqlnd_uh.enabled = false.  You must not use any of the base classes in %s on line %d
PHP Warning:  mysqlnd_uh_set_connection_proxy(): (Mysqlnd User Handler) The plugin has been disabled by setting the configuration parameter mysqlnd_uh.enable = false. The proxy has not been installed  in %s on line %d

To monitor mysqlnd, you have to write your own proxy object subclassing MysqlndUhConnection. Please, see the function reference for a the list of methods that can be subclassed. Alternatively, you can use reflection to inspect the built-in MysqlndUhConnection.

Create a new class proxy. Derive it from the built-in class MysqlndUhConnection. Replace the MysqlndUhConnection::connect(). method. Print out the host parameter value passed to the method. Make sure that you call the parent implementation of the connect method. Failing to do so may give unexpected and undesired results, including memory leaks and crashes.

Register your proxy and open three connections using the PHP MySQL extensions mysqli, mysql, PDO_MYSQL. If the extensions have been compiled to use the mysqlnd library, the proxy::connect method will be called three times, once for each connection opened.

Example #3 Connection proxy

<?php
class proxy extends MysqlndUhConnection {
  public function connect($res, $host, $user, $passwd, $db, $port, $socket, $mysql_flags) {
   printf("Connection opened to '%s'\n", $host);
   /* Always call the parent implementation! */
   return parent::connect($res, $host, $user, $passwd, $db, $port, $socket, $mysql_flags);
  }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
$mysql = mysql_connect("localhost", "root", "");
$pdo = new PDO("mysql:host=localhost;dbname=test", "root", "");
?>

以上例程会输出：

Connection opened to 'localhost'
Connection opened to 'localhost'
Connection opened to 'localhost'

The use of prepared statement proxies follows the same pattern: create a proxy object of the type MysqlndUhPreparedStatement and install the proxy using mysqlnd_uh_set_statement_proxy().

Example #4 Prepared statement proxy

<?php
class stmt_proxy extends MysqlndUhPreparedStatement {
 public function prepare($res, $query) {
  printf("%s(%s)\n", __METHOD__, $query);
  return parent::prepare($res, $query);
 }
}
mysqlnd_uh_set_statement_proxy(new stmt_proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
$stmt = $mysqli->prepare("SELECT 'mysqlnd hacking made easy' AS _msg FROM DUAL");
?>

以上例程会输出：

stmt_proxy::prepare(SELECT 'mysqlnd hacking made easy' AS _msg FROM DUAL)

How it works
Basic query monitoring
Quickstart and Examples


Basic query monitoring

Basic monitoring of a query statement is easy with PECL/mysqlnd_uh. Combined with debug_print_backtrace() it can become a powerful tool, for example, to find the origin of certain statement. This may be desired when searching for slow queries but also after database refactoring to find code still accessing deprecated databases or tables. The latter may be a complicated matter to do otherwise, especially if the application uses auto-generated queries.

Example #1 Basic Monitoring

<?php
class conn_proxy extends MysqlndUhConnection {
 public function query($res, $query) {
  debug_print_backtrace();
  return parent::query($res, $query);
 }
}
class stmt_proxy extends MysqlndUhPreparedStatement {
 public function prepare($res, $query) {
  debug_print_backtrace();
  return parent::prepare($res, $query);
 }
}
mysqlnd_uh_set_connection_proxy(new conn_proxy());
mysqlnd_uh_set_statement_proxy(new stmt_proxy());

printf("Proxies installed...\n");
$pdo = new PDO("mysql:host=localhost;dbname=test", "root", "");
var_dump($pdo->query("SELECT 1 AS _one FROM DUAL")->fetchAll(PDO::FETCH_ASSOC));

$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->prepare("SELECT 1 AS _two FROM DUAL");
?>

以上例程会输出：

#0  conn_proxy->query(Resource id #19, SELECT 1 AS _one FROM DUAL)
#1  PDO->query(SELECT 1 AS _one FROM DUAL) called at [example.php:19]
array(1) {
  [0]=>
  array(1) {
    ["_one"]=>
    string(1) "1"
  }
}
#0  stmt_proxy->prepare(Resource id #753, SELECT 1 AS _two FROM DUAL)
#1  mysqli->prepare(SELECT 1 AS _two FROM DUAL) called at [example.php:22]

For basic query monitoring you should install a connection and a prepared statement proxy. The connection proxy should subclass MysqlndUhConnection::query(). All database queries not using native prepared statements will call this method. In the example the query function is invoked by a PDO call. By default, PDO_MySQL is using prepared statement emulation.

All native prepared statements are prepared with the prepare method of mysqlnd exported through MysqlndUhPreparedStatement::prepare(). Subclass MysqlndUhPreparedStatement and overwrite prepare for native prepared statement monitoring.

Installing a proxy
安装／配置
Quickstart and Examples


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
Basic query monitoring
需求
mysqlnd_uh


需求

PHP 5.3.3 or later. It is recommended to use PHP 5.4.0 or later to get access to the latest mysqlnd features.

The mysqlnd_uh user handler plugin supports all PHP applications and all available PHP MySQL extensions (mysqli, mysql, PDO_MYSQL). The PHP MySQL extension must be configured to use mysqlnd in order to be able to use the mysqlnd_uh plugin for mysqlnd.

The alpha versions makes use of some mysqli features. You must enable mysqli to compile the plugin. This requirement may be removed in the future. Note, that this requirement does not restrict you to use the plugin only with mysqli. You can use the plugin to monitor mysql, mysqli and PDO_MYSQL.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/mysqlnd-uh

PECL/mysqlnd_uh is currently not available on Windows. The source code of the extension makes use of C99 constructs not allowed with PHP Windows builds.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Mysqlnd_uh 配置选项
名字 | 默认 | 可修改范围 | 更新日志
mysqlnd_uh.enable | 1 | PHP_INI_SYSTEM |
mysqlnd_uh.report_wrong_types | 1 | PHP_INI_ALL |

这是配置指令的简短说明。

mysqlnd_uh.enable integer

Enables or disables the plugin. If set to disabled, the extension will not allow users to plug into mysqlnd to hook mysqlnd calls.

mysqlnd_uh.report_wrong_types integer

Whether to report wrong return value types of user hooks as E_WARNING level errors. This is recommended for detecting errors.

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

Most of the constants refer to details of the MySQL Client Server Protocol. Please, refer to the MySQL reference manual to learn about their meaning. To avoid content duplication, only short descriptions are given.

MysqlndUhConnection::simpleCommand() related

The following constants can be used to detect what command is to be send through MysqlndUhConnection::simpleCommand().

MYSQLND_UH_MYSQLND_COM_SLEEP (integer)
MySQL Client Server protocol command: COM_SLEEP.
MYSQLND_UH_MYSQLND_COM_QUIT (integer)
MySQL Client Server protocol command: COM_QUIT.
MYSQLND_UH_MYSQLND_COM_INIT_DB (integer)
MySQL Client Server protocol command: COM_INIT_DB.
MYSQLND_UH_MYSQLND_COM_QUERY (integer)
MySQL Client Server protocol command: COM_QUERY.
MYSQLND_UH_MYSQLND_COM_FIELD_LIST (integer)
MySQL Client Server protocol command: COM_FIELD_LIST.
MYSQLND_UH_MYSQLND_COM_CREATE_DB (integer)
MySQL Client Server protocol command: COM_CREATE_DB.
MYSQLND_UH_MYSQLND_COM_DROP_DB (integer)
MySQL Client Server protocol command: COM_DROP_DB.
MYSQLND_UH_MYSQLND_COM_REFRESH (integer)
MySQL Client Server protocol command: COM_REFRESH.
MYSQLND_UH_MYSQLND_COM_SHUTDOWN (integer)
MySQL Client Server protocol command: COM_SHUTDOWN.
MYSQLND_UH_MYSQLND_COM_STATISTICS (integer)
MySQL Client Server protocol command: COM_STATISTICS.
MYSQLND_UH_MYSQLND_COM_PROCESS_INFO (integer)
MySQL Client Server protocol command: COM_PROCESS_INFO.
MYSQLND_UH_MYSQLND_COM_CONNECT (integer)
MySQL Client Server protocol command: COM_CONNECT.
MYSQLND_UH_MYSQLND_COM_PROCESS_KILL (integer)
MySQL Client Server protocol command: COM_PROCESS_KILL.
MYSQLND_UH_MYSQLND_COM_DEBUG (integer)
MySQL Client Server protocol command: COM_DEBUG.
MYSQLND_UH_MYSQLND_COM_PING (integer)
MySQL Client Server protocol command: COM_PING.
MYSQLND_UH_MYSQLND_COM_TIME (integer)
MySQL Client Server protocol command: COM_TIME.
MYSQLND_UH_MYSQLND_COM_DELAYED_INSERT (integer)
MySQL Client Server protocol command: COM_DELAYED_INSERT.
MYSQLND_UH_MYSQLND_COM_CHANGE_USER (integer)
MySQL Client Server protocol command: COM_CHANGE_USER.
MYSQLND_UH_MYSQLND_COM_BINLOG_DUMP (integer)
MySQL Client Server protocol command: COM_BINLOG_DUMP.
MYSQLND_UH_MYSQLND_COM_TABLE_DUMP (integer)
MySQL Client Server protocol command: COM_TABLE_DUMP.
MYSQLND_UH_MYSQLND_COM_CONNECT_OUT (integer)
MySQL Client Server protocol command: COM_CONNECT_OUT.
MYSQLND_UH_MYSQLND_COM_REGISTER_SLAVED (integer)
MySQL Client Server protocol command: COM_REGISTER_SLAVED.
MYSQLND_UH_MYSQLND_COM_STMT_PREPARE (integer)
MySQL Client Server protocol command: COM_STMT_PREPARE.
MYSQLND_UH_MYSQLND_COM_STMT_EXECUTE (integer)
MySQL Client Server protocol command: COM_STMT_EXECUTE.
MYSQLND_UH_MYSQLND_COM_STMT_SEND_LONG_DATA (integer)
MySQL Client Server protocol command: COM_STMT_SEND_LONG_DATA.
MYSQLND_UH_MYSQLND_COM_STMT_CLOSE (integer)
MySQL Client Server protocol command: COM_STMT_CLOSE.
MYSQLND_UH_MYSQLND_COM_STMT_RESET (integer)
MySQL Client Server protocol command: COM_STMT_RESET.
MYSQLND_UH_MYSQLND_COM_SET_OPTION (integer)
MySQL Client Server protocol command: COM_SET_OPTION.
MYSQLND_UH_MYSQLND_COM_STMT_FETCH (integer)
MySQL Client Server protocol command: COM_STMT_FETCH.
MYSQLND_UH_MYSQLND_COM_DAEMON (integer)
MySQL Client Server protocol command: COM_DAEMON.
MYSQLND_UH_MYSQLND_COM_END (integer)
MySQL Client Server protocol command: COM_END.

The following constants can be used to analyze the ok_packet argument of MysqlndUhConnection::simpleCommand().

MYSQLND_UH_MYSQLND_PROT_GREET_PACKET (integer)
MySQL Client Server protocol packet: greeting.
MYSQLND_UH_MYSQLND_PROT_AUTH_PACKET (integer)
MySQL Client Server protocol packet: authentication.
MYSQLND_UH_MYSQLND_PROT_OK_PACKET (integer)
MySQL Client Server protocol packet: OK.
MYSQLND_UH_MYSQLND_PROT_EOF_PACKET (integer)
MySQL Client Server protocol packet: EOF.
MYSQLND_UH_MYSQLND_PROT_CMD_PACKET (integer)
MySQL Client Server protocol packet: command.
MYSQLND_UH_MYSQLND_PROT_RSET_HEADER_PACKET (integer)
MySQL Client Server protocol packet: result set header.
MYSQLND_UH_MYSQLND_PROT_RSET_FLD_PACKET (integer)
MySQL Client Server protocol packet: resultset field.
MYSQLND_UH_MYSQLND_PROT_ROW_PACKET (integer)
MySQL Client Server protocol packet: row.
MYSQLND_UH_MYSQLND_PROT_STATS_PACKET (integer)
MySQL Client Server protocol packet: stats.
MYSQLND_UH_MYSQLND_PREPARE_RESP_PACKET (integer)
MySQL Client Server protocol packet: prepare response.
MYSQLND_UH_MYSQLND_CHG_USER_RESP_PACKET (integer)
MySQL Client Server protocol packet: change user response.
MYSQLND_UH_MYSQLND_PROT_LAST (integer)
No practical meaning. Last entry marker of internal C data structure list.

MysqlndUhConnection::close() related

The following constants can be used to detect why a connection has been closed through MysqlndUhConnection::close().

MYSQLND_UH_MYSQLND_CLOSE_EXPLICIT (integer)
User has called mysqlnd to close the connection.
MYSQLND_UH_MYSQLND_CLOSE_IMPLICIT (integer)
Implicitly closed, for example, during garbage connection.
MYSQLND_UH_MYSQLND_CLOSE_DISCONNECTED (integer)
Connection error.
MYSQLND_UH_MYSQLND_CLOSE_LAST (integer)
No practical meaning. Last entry marker of internal C data structure list.

MysqlndUhConnection::setServerOption() related

The following constants can be used to detect which option is set through MysqlndUhConnection::setServerOption().

MYSQLND_UH_SERVER_OPTION_MULTI_STATEMENTS_ON (integer)
Option: enables multi statement support.
MYSQLND_UH_SERVER_OPTION_MULTI_STATEMENTS_OFF (integer)
Option: disables multi statement support.

MysqlndUhConnection::setClientOption() related

The following constants can be used to detect which option is set through MysqlndUhConnection::setClientOption().

MYSQLND_UH_MYSQLND_OPTION_OPT_CONNECT_TIMEOUT (integer)
Option: connection timeout.
MYSQLND_UH_MYSQLND_OPTION_OPT_COMPRESS (integer)
Option: whether the MySQL compressed protocol is to be used.
MYSQLND_UH_MYSQLND_OPTION_OPT_NAMED_PIPE (integer)
Option: named pipe to use for connection (Windows).
MYSQLND_UH_MYSQLND_OPTION_INIT_COMMAND (integer)
Option: init command to execute upon connect.
MYSQLND_UH_MYSQLND_READ_DEFAULT_FILE (integer)
Option: MySQL server default file to read upon connect.
MYSQLND_UH_MYSQLND_READ_DEFAULT_GROUP (integer)
Option: MySQL server default file group to read upon connect.
MYSQLND_UH_MYSQLND_SET_CHARSET_DIR (integer)
Option: charset description files directory.
MYSQLND_UH_MYSQLND_SET_CHARSET_NAME (integer)
Option: charset name.
MYSQLND_UH_MYSQLND_OPT_LOCAL_INFILE (integer)
Option: Whether to allow LOAD DATA LOCAL INFILE use.
MYSQLND_UH_MYSQLND_OPT_PROTOCOL (integer)
Option: supported protocol version.
MYSQLND_UH_MYSQLND_SHARED_MEMORY_BASE_NAME (integer)
Option: shared memory base name for shared memory connections.
MYSQLND_UH_MYSQLND_OPT_READ_TIMEOUT (integer)
Option: connection read timeout.
MYSQLND_UH_MYSQLND_OPT_WRITE_TIMEOUT (integer)
Option: connection write timeout.
MYSQLND_UH_MYSQLND_OPT_USE_RESULT (integer)
Option: unbuffered result sets.
MYSQLND_UH_MYSQLND_OPT_USE_REMOTE_CONNECTION (integer)
Embedded server related.
MYSQLND_UH_MYSQLND_OPT_USE_EMBEDDED_CONNECTION (integer)
Embedded server related.
MYSQLND_UH_MYSQLND_OPT_GUESS_CONNECTION (integer)
TODO
MYSQLND_UH_MYSQLND_SET_CLIENT_IP (integer)
TODO
MYSQLND_UH_MYSQLND_SECURE_AUTH (integer)
TODO
MYSQLND_UH_MYSQLND_REPORT_DATA_TRUNCATION (integer)
Option: Whether to report data truncation.
MYSQLND_UH_MYSQLND_OPT_RECONNECT (integer)
Option: Whether to reconnect automatically.
MYSQLND_UH_MYSQLND_OPT_SSL_VERIFY_SERVER_CERT (integer)
Option: TODO
MYSQLND_UH_MYSQLND_OPT_NET_CMD_BUFFER_SIZE (integer)
Option: mysqlnd network buffer size for commands.
MYSQLND_UH_MYSQLND_OPT_NET_READ_BUFFER_SIZE (integer)
Option: mysqlnd network buffer size for reading from the server.
MYSQLND_UH_MYSQLND_OPT_SSL_KEY (integer)
Option: SSL key.
MYSQLND_UH_MYSQLND_OPT_SSL_CERT (integer)
Option: SSL certificate.
MYSQLND_UH_MYSQLND_OPT_SSL_CA (integer)
Option: SSL CA.
MYSQLND_UH_MYSQLND_OPT_SSL_CAPATH (integer)
Option: Path to SSL CA.
MYSQLND_UH_MYSQLND_OPT_SSL_CIPHER (integer)
Option: SSL cipher.
MYSQLND_UH_MYSQLND_OPT_SSL_PASSPHRASE (integer)
Option: SSL passphrase.
MYSQLND_UH_SERVER_OPTION_PLUGIN_DIR (integer)
Option: server plugin directory.
MYSQLND_UH_SERVER_OPTION_DEFAULT_AUTH (integer)
Option: default authentication method.
MYSQLND_UH_SERVER_OPTION_SET_CLIENT_IP (integer)
TODO
MYSQLND_UH_MYSQLND_OPT_MAX_ALLOWED_PACKET (integer)
Option: maximum allowed packet size. Available as of PHP 5.4.0.
MYSQLND_UH_MYSQLND_OPT_AUTH_PROTOCOL (integer)
Option: TODO. Available as of PHP 5.4.0.
MYSQLND_UH_MYSQLND_OPT_INT_AND_FLOAT_NATIVE (integer)
Option: make mysqlnd return integer and float columns as long even when using the MySQL Client Server text protocol. Only available with a custom build of mysqlnd.

Other

The plugins version number can be obtained using MYSQLND_UH_VERSION or MYSQLND_UH_VERSION_ID. MYSQLND_UH_VERSION is the string representation of the numerical version number MYSQLND_UH_VERSION_ID, which is an integer such as 10000. Developers can calculate the version number as follows.

Version (part) | Example
Major*10000 | 1*10000 = 10000
Minor*100 | 0*100 = 0
Patch | 0 = 0
MYSQLND_UH_VERSION_ID | 10000

MYSQLND_UH_VERSION (string)
Plugin version string, for example, "1.0.0-alpha".
MYSQLND_UH_VERSION_ID (integer)
Plugin version number, for example, 10000.

资源类型
MysqlndUhConnection
mysqlnd_uh


The MysqlndUhConnection class

(PECL mysqlnd-uh >= 1.0.0-alpha)

简介

类摘要

MysqlndUhConnection {
/* 方法 */
public bool changeUser ( mysqlnd_connection $connection , string $user , string $password , string $database , bool $silent , int $passwd_len )
public string charsetName ( mysqlnd_connection $connection )
public bool close ( mysqlnd_connection $connection , int $close_type )
public bool connect ( mysqlnd_connection $connection , string $host , string $use" , string $password , string $database , int $port , string $socket , int $mysql_flags )
public __construct ( void )
public bool endPSession ( mysqlnd_connection $connection )
public string escapeString ( mysqlnd_connection $connection , string $escape_string )
public int getAffectedRows ( mysqlnd_connection $connection )
public int getErrorNumber ( mysqlnd_connection $connection )
public string getErrorString ( mysqlnd_connection $connection )
public int getFieldCount ( mysqlnd_connection $connection )
public string getHostInformation ( mysqlnd_connection $connection )
public int getLastInsertId ( mysqlnd_connection $connection )
public void getLastMessage ( mysqlnd_connection $connection )
public string getProtocolInformation ( mysqlnd_connection $connection )
public string getServerInformation ( mysqlnd_connection $connection )
public string getServerStatistics ( mysqlnd_connection $connection )
public int getServerVersion ( mysqlnd_connection $connection )
public string getSqlstate ( mysqlnd_connection $connection )
public array getStatistics ( mysqlnd_connection $connection )
public int getThreadId ( mysqlnd_connection $connection )
public int getWarningCount ( mysqlnd_connection $connection )
public bool init ( mysqlnd_connection $connection )
public bool killConnection ( mysqlnd_connection $connection , int $pid )
public array listFields ( mysqlnd_connection $connection , string $table , string $achtung_wild )
public void listMethod ( mysqlnd_connection $connection , string $query , string $achtung_wild , string $par1 )
public bool moreResults ( mysqlnd_connection $connection )
public bool nextResult ( mysqlnd_connection $connection )
public bool ping ( mysqlnd_connection $connection )
public bool query ( mysqlnd_connection $connection , string $query )
public bool queryReadResultsetHeader ( mysqlnd_connection $connection , mysqlnd_statement $mysqlnd_stmt )
public bool reapQuery ( mysqlnd_connection $connection )
public bool refreshServer ( mysqlnd_connection $connection , int $options )
public bool restartPSession ( mysqlnd_connection $connection )
public bool selectDb ( mysqlnd_connection $connection , string $database )
public bool sendClose ( mysqlnd_connection $connection )
public bool sendQuery ( mysqlnd_connection $connection , string $query )
public bool serverDumpDebugInformation ( mysqlnd_connection $connection )
public bool setAutocommit ( mysqlnd_connection $connection , int $mode )
public bool setCharset ( mysqlnd_connection $connection , string $charset )
public bool setClientOption ( mysqlnd_connection $connection , int $option , int $value )
public void setServerOption ( mysqlnd_connection $connection , int $option )
public void shutdownServer ( string $MYSQLND_UH_RES_MYSQLND_NAME , string $"level" )
public bool simpleCommand ( mysqlnd_connection $connection , int $command , string $arg , int $ok_packet , bool $silent , bool $ignore_upsert_status )
public bool simpleCommandHandleResponse ( mysqlnd_connection $connection , int $ok_packet , bool $silent , int $command , bool $ignore_upsert_status )
public bool sslSet ( mysqlnd_connection $connection , string $key , string $cert , string $ca , string $capath , string $cipher )
public resource stmtInit ( mysqlnd_connection $connection )
public resource storeResult ( mysqlnd_connection $connection )
public bool txCommit ( mysqlnd_connection $connection )
public bool txRollback ( mysqlnd_connection $connection )
public resource useResult ( mysqlnd_connection $connection )
}

Table of Contents

  • MysqlndUhConnection::changeUser — Changes the user of the specified mysqlnd database connection
  • MysqlndUhConnection::charsetName — Returns the default character set for the database connection
  • MysqlndUhConnection::close — Closes a previously opened database connection
  • MysqlndUhConnection::connect — Open a new connection to the MySQL server
  • MysqlndUhConnection::__construct — The __construct purpose
  • MysqlndUhConnection::endPSession — End a persistent connection
  • MysqlndUhConnection::escapeString — Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection
  • MysqlndUhConnection::getAffectedRows — Gets the number of affected rows in a previous MySQL operation
  • MysqlndUhConnection::getErrorNumber — Returns the error code for the most recent function call
  • MysqlndUhConnection::getErrorString — Returns a string description of the last error
  • MysqlndUhConnection::getFieldCount — Returns the number of columns for the most recent query
  • MysqlndUhConnection::getHostInformation — Returns a string representing the type of connection used
  • MysqlndUhConnection::getLastInsertId — Returns the auto generated id used in the last query.
  • MysqlndUhConnection::getLastMessage — Retrieves information about the most recently executed query
  • MysqlndUhConnection::getProtocolInformation — Returns the version of the MySQL protocol used
  • MysqlndUhConnection::getServerInformation — Returns the version of the MySQL server
  • MysqlndUhConnection::getServerStatistics — Gets the current system status
  • MysqlndUhConnection::getServerVersion — Returns the version of the MySQL server as an integer
  • MysqlndUhConnection::getSqlstate — Returns the SQLSTATE error from previous MySQL operation
  • MysqlndUhConnection::getStatistics — Returns statistics about the client connection.
  • MysqlndUhConnection::getThreadId — Returns the thread ID for the current connection
  • MysqlndUhConnection::getWarningCount — Returns the number of warnings from the last query for the given link
  • MysqlndUhConnection::init — Initialize mysqlnd connection
  • MysqlndUhConnection::killConnection — Asks the server to kill a MySQL thread
  • MysqlndUhConnection::listFields — List MySQL table fields
  • MysqlndUhConnection::listMethod — Wrapper for assorted list commands
  • MysqlndUhConnection::moreResults — Check if there are any more query results from a multi query
  • MysqlndUhConnection::nextResult — Prepare next result from multi_query
  • MysqlndUhConnection::ping — Pings a server connection, or tries to reconnect if the connection has gone down
  • MysqlndUhConnection::query — Performs a query on the database
  • MysqlndUhConnection::queryReadResultsetHeader — Read a result set header
  • MysqlndUhConnection::reapQuery — Get result from async query
  • MysqlndUhConnection::refreshServer — Flush or reset tables and caches
  • MysqlndUhConnection::restartPSession — Restart a persistent mysqlnd connection
  • MysqlndUhConnection::selectDb — Selects the default database for database queries
  • MysqlndUhConnection::sendClose — Sends a close command to MySQL
  • MysqlndUhConnection::sendQuery — Sends a query to MySQL
  • MysqlndUhConnection::serverDumpDebugInformation — Dump debugging information into the log for the MySQL server
  • MysqlndUhConnection::setAutocommit — Turns on or off auto-committing database modifications
  • MysqlndUhConnection::setCharset — Sets the default client character set
  • MysqlndUhConnection::setClientOption — Sets a client option
  • MysqlndUhConnection::setServerOption — Sets a server option
  • MysqlndUhConnection::shutdownServer — The shutdownServer purpose
  • MysqlndUhConnection::simpleCommand — Sends a basic COM_* command
  • MysqlndUhConnection::simpleCommandHandleResponse — Process a response for a basic COM_* command send to the client
  • MysqlndUhConnection::sslSet — Used for establishing secure connections using SSL
  • MysqlndUhConnection::stmtInit — Initializes a statement and returns a resource for use with mysqli_statement::prepare
  • MysqlndUhConnection::storeResult — Transfers a result set from the last query
  • MysqlndUhConnection::txCommit — Commits the current transaction
  • MysqlndUhConnection::txRollback — Rolls back current transaction
  • MysqlndUhConnection::useResult — Initiate a result set retrieval
预定义常量
MysqlndUhConnection::changeUser
mysqlnd_uh


Changes the user of the specified mysqlnd database connection

MysqlndUhConnection
MysqlndUhConnection::charsetName
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::changeUser

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::changeUser — Changes the user of the specified mysqlnd database connection

说明

public bool MysqlndUhConnection::changeUser ( mysqlnd_connection $connection , string $user , string $password , string $database , bool $silent , int $passwd_len )

Changes the user of the specified mysqlnd database connection

参数

connection

Mysqlnd connection handle. Do not modify!

user

The MySQL user name.

password

The MySQL password.

database

The MySQL database to change to.

silent

Controls if mysqlnd is allowed to emit errors or not.

passwd_len

Length of the MySQL password.

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::changeUser() example

<?php
class proxy extends MysqlndUhConnection {
 /* Hook mysqlnd's connection::change_user call */
 public function changeUser($res, $user, $passwd, $db, $silent, $passwd_len) {
   printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
   $ret = parent::changeUser($res, $user, $passwd, $db, $silent, $passwd_len);
   printf("%s returns %s\n", __METHOD__, var_export($ret, true));
   return $ret;
 }
}
/* Install proxy/hooks to be used with all future mysqlnd connection */
mysqlnd_uh_set_connection_proxy(new proxy());

/* Create mysqli connection which is using the mysqlnd library */
$mysqli = new mysqli("localhost", "root", "", "test");

/* Example of a user API call which triggers the hooked mysqlnd call */
var_dump($mysqli->change_user("root", "bar", "test"));
?>

以上例程会输出：

proxy::changeUser(array (
  0 => NULL,
  1 => 'root',
  2 => 'bar',
  3 => 'test',
  4 => false,
  5 => 3,
))
proxy::changeUser returns false
bool(false)

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_change_user() - Changes the user of the specified database connection

MysqlndUhConnection
MysqlndUhConnection::charsetName
MysqlndUhConnection


Returns the default character set for the database connection

MysqlndUhConnection::changeUser
MysqlndUhConnection::close
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::charsetName

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::charsetName — Returns the default character set for the database connection

说明

public string MysqlndUhConnection::charsetName ( mysqlnd_connection $connection )

Returns the default character set for the database connection.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

The default character set.

范例

Example #1 MysqlndUhConnection::charsetName() example

<?php
class proxy extends MysqlndUhConnection {
  public function charsetName($res) {
   printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
   $ret = parent::charsetName($res);
   printf("%s returns %s\n", __METHOD__, var_export($ret, true));
   return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
var_dump(mysqli_character_set_name($mysqli));
?>

以上例程会输出：

proxy::charsetName(array (
  0 => NULL,
))
proxy::charsetName returns 'latin1'
string(6) "latin1"

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_character_set_name() - 返回当前数据库连接的默认字符编码

MysqlndUhConnection::changeUser
MysqlndUhConnection::close
MysqlndUhConnection


Closes a previously opened database connection

MysqlndUhConnection::charsetName
MysqlndUhConnection::connect
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::close

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::close — Closes a previously opened database connection

说明

public bool MysqlndUhConnection::close ( mysqlnd_connection $connection , int $close_type )

Closes a previously opened database connection.

Note:

Failing to call the parent implementation may cause memory leaks or crash PHP. This is not considered a bug. Please, keep in mind that the mysqlnd library functions have never been designed to be exposed to the user space.

参数

connection

The connection to be closed. Do not modify!

close_type

Why the connection is to be closed. The value of close_type is one of MYSQLND_UH_MYSQLND_CLOSE_EXPLICIT, MYSQLND_UH_MYSQLND_CLOSE_IMPLICIT, MYSQLND_UH_MYSQLND_CLOSE_DISCONNECTED or MYSQLND_UH_MYSQLND_CLOSE_LAST. The latter should never be seen, unless the default behaviour of the mysqlnd library has been changed by a plugin.

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::close() example

<?php
function close_type_to_string($close_type) {
 $mapping = array(
  MYSQLND_UH_MYSQLND_CLOSE_DISCONNECTED => "MYSQLND_UH_MYSQLND_CLOSE_DISCONNECTED",
  MYSQLND_UH_MYSQLND_CLOSE_EXPLICIT => "MYSQLND_UH_MYSQLND_CLOSE_EXPLICIT",
  MYSQLND_UH_MYSQLND_CLOSE_IMPLICIT => "MYSQLND_UH_MYSQLND_CLOSE_IMPLICIT",
  MYSQLND_UH_MYSQLND_CLOSE_LAST => "MYSQLND_UH_MYSQLND_CLOSE_IMPLICIT"
 );
 return (isset($mapping[$close_type])) ? $mapping[$close_type] : 'unknown';
}

class proxy extends MysqlndUhConnection {
  public function close($res, $close_type) {
   printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
   printf("close_type = %s\n", close_type_to_string($close_type));
   /* WARNING: you must call the parent */
   $ret = parent::close($res, $close_type);
   printf("%s returns %s\n", __METHOD__, var_export($ret, true));
   return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->close();
?>

以上例程会输出：

proxy::close(array (
  0 => NULL,
  1 => 0,
))
close_type = MYSQLND_UH_MYSQLND_CLOSE_EXPLICIT
proxy::close returns true

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_close() - 关闭先前打开的数据库连接
  • mysql_close() - 关闭 MySQL 连接

MysqlndUhConnection::charsetName
MysqlndUhConnection::connect
MysqlndUhConnection


Open a new connection to the MySQL server

MysqlndUhConnection::close
MysqlndUhConnection::__construct
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::connect

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::connect — Open a new connection to the MySQL server

说明

public bool MysqlndUhConnection::connect ( mysqlnd_connection $connection , string $host , string $use" , string $password , string $database , int $port , string $socket , int $mysql_flags )

Open a new connection to the MySQL server.

参数

connection

Mysqlnd connection handle. Do not modify!

host

Can be either a host name or an IP address. Passing the NULL value or the string "localhost" to this parameter, the local host is assumed. When possible, pipes will be used instead of the TCP/IP protocol.

user

The MySQL user name.

password

If not provided or NULL, the MySQL server will attempt to authenticate the user against those user records which have no password only. This allows one username to be used with different permissions (depending on if a password as provided or not).

database

If provided will specify the default database to be used when performing queries.

port

Specifies the port number to attempt to connect to the MySQL server.

socket

Specifies the socket or named pipe that should be used. If NULL, mysqlnd will default to /tmp/mysql.sock.

mysql_flags

Connection options.

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::connect() example

<?php
class proxy extends MysqlndUhConnection {
 public function connect($res, $host, $user, $passwd, $db, $port, $socket, $mysql_flags) {
   printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
   $ret = parent::connect($res, $host, $user, $passwd, $db, $port, $socket, $mysql_flags);
   printf("%s returns %s\n", __METHOD__, var_export($ret, true));
   return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
?>

以上例程会输出：

proxy::connect(array (
  0 => NULL,
  1 => 'localhost',
  2 => 'root',
  3 => '',
  4 => 'test',
  5 => 3306,
  6 => NULL,
  7 => 131072,
))
proxy::connect returns true

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_connect() - 别名 mysqli::__construct
  • mysql_connect() - 打开一个到 MySQL 服务器的连接

MysqlndUhConnection::close
MysqlndUhConnection::__construct
MysqlndUhConnection


The __construct purpose

MysqlndUhConnection::connect
MysqlndUhConnection::endPSession
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::__construct

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::__construct — The __construct purpose

说明

public MysqlndUhConnection::__construct ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

MysqlndUhConnection::connect
MysqlndUhConnection::endPSession
MysqlndUhConnection


End a persistent connection

MysqlndUhConnection::__construct
MysqlndUhConnection::escapeString
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::endPSession

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::endPSession — End a persistent connection

说明

public bool MysqlndUhConnection::endPSession ( mysqlnd_connection $connection )

End a persistent connection

Warning

本函数还未编写文档，仅有参数列表。

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::endPSession() example

<?php
class proxy extends MysqlndUhConnection {
 public function endPSession($conn) {
   printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
   $ret = parent::endPSession($conn);
   printf("%s returns %s\n", __METHOD__, var_export($ret, true));
   return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("p:localhost", "root", "", "test");
$mysqli->close();
?>

以上例程会输出：

proxy::endPSession(array (
  0 => NULL,
))
proxy::endPSession returns true

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections

MysqlndUhConnection::__construct
MysqlndUhConnection::escapeString
MysqlndUhConnection


Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection

MysqlndUhConnection::endPSession
MysqlndUhConnection::getAffectedRows
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::escapeString

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::escapeString — Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection

说明

public string MysqlndUhConnection::escapeString ( mysqlnd_connection $connection , string $escape_string )

Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection.

参数

MYSQLND_UH_RES_MYSQLND_NAME

Mysqlnd connection handle. Do not modify!

escape_string

The string to be escaped.

返回值

The escaped string.

范例

Example #1 MysqlndUhConnection::escapeString() example

<?php
class proxy extends MysqlndUhConnection {
 public function escapeString($res, $string) {
   printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
   $ret = parent::escapeString($res, $string);
   printf("%s returns %s\n", __METHOD__, var_export($ret, true));
   return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->set_charset("latin1");
$mysqli->real_escape_string("test0'test");
?>

以上例程会输出：

proxy::escapeString(array (
  0 => NULL,
  1 => 'test0\'test',
))
proxy::escapeString returns 'test0\\\'test'

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_real_escape_string() - Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection
  • mysql_real_escape_string() - 转义 SQL 语句中使用的字符串中的特殊字符，并考虑到连接的当前字符集

MysqlndUhConnection::endPSession
MysqlndUhConnection::getAffectedRows
MysqlndUhConnection


Gets the number of affected rows in a previous MySQL operation

MysqlndUhConnection::escapeString
MysqlndUhConnection::getErrorNumber
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::getAffectedRows

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::getAffectedRows — Gets the number of affected rows in a previous MySQL operation

说明

public int MysqlndUhConnection::getAffectedRows ( mysqlnd_connection $connection )

Gets the number of affected rows in a previous MySQL operation.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Number of affected rows.

范例

Example #1 MysqlndUhConnection::getAffectedRows() example

<?php
class proxy extends MysqlndUhConnection {
 public function getAffectedRows($res) {
   printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
   $ret = parent::getAffectedRows($res);
   printf("%s returns %s\n", __METHOD__, var_export($ret, true));
   return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT)");
$mysqli->query("INSERT INTO test(id) VALUES (1)");
var_dump($mysqli->affected_rows);
?>

以上例程会输出：

proxy::getAffectedRows(array (
  0 => NULL,
))
proxy::getAffectedRows returns 1
int(1)

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_affected_rows() - Gets the number of affected rows in a previous MySQL operation
  • mysql_affected_rows() - 取得前一次 MySQL 操作所影响的记录行数

MysqlndUhConnection::escapeString
MysqlndUhConnection::getErrorNumber
MysqlndUhConnection


Returns the error code for the most recent function call

MysqlndUhConnection::getAffectedRows
MysqlndUhConnection::getErrorString
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::getErrorNumber

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::getErrorNumber — Returns the error code for the most recent function call

说明

public int MysqlndUhConnection::getErrorNumber ( mysqlnd_connection $connection )

Returns the error code for the most recent function call.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Error code for the most recent function call.

范例

MysqlndUhConnection::getErrorNumber() is not only executed after the invocation of a user space API call which maps directly to it but also called internally.

Example #1 MysqlndUhConnection::getErrorNumber() example

<?php
class proxy extends MysqlndUhConnection {
 public function getErrorNumber($res) {
   printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
   $ret = parent::getErrorNumber($res);
   printf("%s returns %s\n", __METHOD__, var_export($ret, true));
   return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

printf("connect...\n");
$mysqli = new mysqli("localhost", "root", "", "test");
printf("query...\n");
$mysqli->query("PLEASE_LET_THIS_BE_INVALID_SQL");
printf("errno...\n");
var_dump($mysqli->errno);
printf("close...\n");
$mysqli->close();
?>

以上例程会输出：

connect...
proxy::getErrorNumber(array (
  0 => NULL,
))
proxy::getErrorNumber returns 0
query...
errno...
proxy::getErrorNumber(array (
  0 => NULL,
))
proxy::getErrorNumber returns 1064
int(1064)
close...

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • MysqlndUhConnection::getErrorString() - Returns a string description of the last error
  • mysqli_errno() - 返回最近函数调用的错误代码
  • mysql_errno() - 返回上一个 MySQL 操作中的错误信息的数字编码

MysqlndUhConnection::getAffectedRows
MysqlndUhConnection::getErrorString
MysqlndUhConnection


Returns a string description of the last error

MysqlndUhConnection::getErrorNumber
MysqlndUhConnection::getFieldCount
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::getErrorString

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::getErrorString — Returns a string description of the last error

说明

public string MysqlndUhConnection::getErrorString ( mysqlnd_connection $connection )

Returns a string description of the last error.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Error string for the most recent function call.

范例

MysqlndUhConnection::getErrorString() is not only executed after the invocation of a user space API call which maps directly to it but also called internally.

Example #1 MysqlndUhConnection::getErrorString() example

<?php
class proxy extends MysqlndUhConnection {
 public function getErrorString($res) {
   printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
   $ret = parent::getErrorString($res);
   printf("%s returns %s\n", __METHOD__, var_export($ret, true));
   return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

printf("connect...\n");
$mysqli = new mysqli("localhost", "root", "", "test");
printf("query...\n");
$mysqli->query("WILL_I_EVER_LEARN_SQL?");
printf("errno...\n");
var_dump($mysqli->error);
printf("close...\n");
$mysqli->close();
?>

以上例程会输出：

connect...
proxy::getErrorString(array (
  0 => NULL,
))
proxy::getErrorString returns ''
query...
errno...
proxy::getErrorString(array (
  0 => NULL,
))
proxy::getErrorString returns 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'WILL_I_EVER_LEARN_SQL?\' at line 1'
string(168) "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WILL_I_EVER_LEARN_SQL?' at line 1"
close...

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • MysqlndUhConnection::getErrorNumber() - Returns the error code for the most recent function call
  • mysqli_error() - Returns a string description of the last error
  • mysql_error() - 返回上一个 MySQL 操作产生的文本错误信息

MysqlndUhConnection::getErrorNumber
MysqlndUhConnection::getFieldCount
MysqlndUhConnection


Returns the number of columns for the most recent query

MysqlndUhConnection::getErrorString
MysqlndUhConnection::getHostInformation
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::getFieldCount

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::getFieldCount — Returns the number of columns for the most recent query

说明

public int MysqlndUhConnection::getFieldCount ( mysqlnd_connection $connection )

Returns the number of columns for the most recent query.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Number of columns.

范例

MysqlndUhConnection::getFieldCount() is not only executed after the invocation of a user space API call which maps directly to it but also called internally.

Example #1 MysqlndUhConnection::getFieldCount() example

<?php
class proxy extends MysqlndUhConnection {
 public function getFieldCount($res) {
   printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
   $ret = parent::getFieldCount($res);
   printf("%s returns %s\n", __METHOD__, var_export($ret, true));
   return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->query("WILL_I_EVER_LEARN_SQL?");
var_dump($mysqli->field_count);
$mysqli->query("SELECT 1, 2, 3 FROM DUAL");
var_dump($mysqli->field_count);
?>

以上例程会输出：

proxy::getFieldCount(array (
  0 => NULL,
))
proxy::getFieldCount returns 0
int(0)
proxy::getFieldCount(array (
  0 => NULL,
))
proxy::getFieldCount returns 3
proxy::getFieldCount(array (
  0 => NULL,
))
proxy::getFieldCount returns 3
int(3)

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_field_count() - Returns the number of columns for the most recent query

MysqlndUhConnection::getErrorString
MysqlndUhConnection::getHostInformation
MysqlndUhConnection


Returns a string representing the type of connection used

MysqlndUhConnection::getFieldCount
MysqlndUhConnection::getLastInsertId
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::getHostInformation

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::getHostInformation — Returns a string representing the type of connection used

说明

public string MysqlndUhConnection::getHostInformation ( mysqlnd_connection $connection )

Returns a string representing the type of connection used.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Connection description.

范例

Example #1 MysqlndUhConnection::getHostInformation() example

<?php
class proxy extends MysqlndUhConnection {
 public function getHostInformation($res) {
   printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
   $ret = parent::getHostInformation($res);
   printf("%s returns %s\n", __METHOD__, var_export($ret, true));
   return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
var_dump($mysqli->host_info);
?>

以上例程会输出：

proxy::getHostInformation(array (
  0 => NULL,
))
proxy::getHostInformation returns 'Localhost via UNIX socket'
string(25) "Localhost via UNIX socket"

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_get_host_info() - 返回一个表述使用的连接类型的字符串
  • mysql_get_host_info() - 取得 MySQL 主机信息

MysqlndUhConnection::getFieldCount
MysqlndUhConnection::getLastInsertId
MysqlndUhConnection


Returns the auto generated id used in the last query.

MysqlndUhConnection::getHostInformation
MysqlndUhConnection::getLastMessage
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::getLastInsertId

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::getLastInsertId — Returns the auto generated id used in the last query.

说明

public int MysqlndUhConnection::getLastInsertId ( mysqlnd_connection $connection )

Returns the auto generated id used in the last query.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Last insert id.

范例

Example #1 MysqlndUhConnection::getLastInsertId() example

<?php
class proxy extends MysqlndUhConnection {
 public function getLastInsertId($res) {
   printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
   $ret = parent::getLastInsertId($res);
   printf("%s returns %s\n", __METHOD__, var_export($ret, true));
   return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT AUTO_INCREMENT PRIMARY KEY, col VARCHAR(255))");
$mysqli->query("INSERT INTO test(col) VALUES ('a')");
var_dump($mysqli->insert_id);
?>

以上例程会输出：

proxy::getLastInsertId(array (
  0 => NULL,
))
proxy::getLastInsertId returns 1
int(1)

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_insert_id() - Returns the auto generated id used in the latest query
  • mysql_insert_id() - 取得上一步 INSERT 操作产生的 ID

MysqlndUhConnection::getHostInformation
MysqlndUhConnection::getLastMessage
MysqlndUhConnection


Retrieves information about the most recently executed query

MysqlndUhConnection::getLastInsertId
MysqlndUhConnection::getProtocolInformation
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::getLastMessage

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::getLastMessage — Retrieves information about the most recently executed query

说明

public void MysqlndUhConnection::getLastMessage ( mysqlnd_connection $connection )

Retrieves information about the most recently executed query.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Last message. Trying to return a string longer than 511 bytes will cause an error of the type E_WARNING and result in the string being truncated.

范例

Example #1 MysqlndUhConnection::getLastMessage() example

<?php
class proxy extends MysqlndUhConnection {
 public function getLastMessage($res) {
   printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
   $ret = parent::getLastMessage($res);
   printf("%s returns %s\n", __METHOD__, var_export($ret, true));
   return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
var_dump($mysqli->info);
$mysqli->query("DROP TABLE IF EXISTS test");
var_dump($mysqli->info);
?>

以上例程会输出：

proxy::getLastMessage(array (
  0 => NULL,
))
proxy::getLastMessage returns ''
string(0) ""
proxy::getLastMessage(array (
  0 => NULL,
))
proxy::getLastMessage returns ''
string(0) ""

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_info() - Retrieves information about the most recently executed query
  • mysql_info() - 取得最近一条查询的信息

MysqlndUhConnection::getLastInsertId
MysqlndUhConnection::getProtocolInformation
MysqlndUhConnection


Returns the version of the MySQL protocol used

MysqlndUhConnection::getLastMessage
MysqlndUhConnection::getServerInformation
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::getProtocolInformation

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::getProtocolInformation — Returns the version of the MySQL protocol used

说明

public string MysqlndUhConnection::getProtocolInformation ( mysqlnd_connection $connection )

Returns the version of the MySQL protocol used.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

The protocol version.

范例

Example #1 MysqlndUhConnection::getProtocolInformation() example

<?php
class proxy extends MysqlndUhConnection {
 public function getProtocolInformation($res) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::getProtocolInformation($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
var_dump($mysqli->protocol_version);
?>

以上例程会输出：

proxy::getProtocolInformation(array (
  0 => NULL,
))
proxy::getProtocolInformation returns 10
int(10)

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_get_proto_info() - 返回MySQL使用的协议版本号
  • mysql_get_proto_info() - 取得 MySQL 协议信息

MysqlndUhConnection::getLastMessage
MysqlndUhConnection::getServerInformation
MysqlndUhConnection


Returns the version of the MySQL server

MysqlndUhConnection::getProtocolInformation
MysqlndUhConnection::getServerStatistics
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::getServerInformation

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::getServerInformation — Returns the version of the MySQL server

说明

public string MysqlndUhConnection::getServerInformation ( mysqlnd_connection $connection )

Returns the version of the MySQL server.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

The server version.

范例

Example #1 MysqlndUhConnection::getServerInformation() example

<?php
class proxy extends MysqlndUhConnection {
 public function getServerInformation($res) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::getServerInformation($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
var_dump($mysqli->server_info);
?>

以上例程会输出：

proxy::getServerInformation(array (
  0 => NULL,
))
proxy::getServerInformation returns '5.1.45-debug-log'
string(16) "5.1.45-debug-log"

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_get_server_info() - 返回MySQL服务器的版本号
  • mysql_get_server_info() - 取得 MySQL 服务器信息

MysqlndUhConnection::getProtocolInformation
MysqlndUhConnection::getServerStatistics
MysqlndUhConnection


Gets the current system status

MysqlndUhConnection::getServerInformation
MysqlndUhConnection::getServerVersion
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::getServerStatistics

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::getServerStatistics — Gets the current system status

说明

public string MysqlndUhConnection::getServerStatistics ( mysqlnd_connection $connection )

Gets the current system status.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

The system status message.

范例

Example #1 MysqlndUhConnection::getServerStatistics() example

<?php
class proxy extends MysqlndUhConnection {
 public function getServerStatistics($res) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::getServerStatistics($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
var_dump(mysqli_stat($mysqli));
?>

以上例程会输出：

proxy::getServerStatistics(array (
  0 => NULL,
))
proxy::getServerStatistics returns 'Uptime: 2059995  Threads: 1  Questions: 126157  Slow queries: 0  Opens: 6377  Flush tables: 1  Open tables: 18  Queries per second avg: 0.61'
string(140) "Uptime: 2059995  Threads: 1  Questions: 126157  Slow queries: 0  Opens: 6377  Flush tables: 1  Open tables: 18  Queries per second avg: 0.61"

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_stat() - Gets the current system status
  • mysql_stat() - 取得当前系统状态

MysqlndUhConnection::getServerInformation
MysqlndUhConnection::getServerVersion
MysqlndUhConnection


Returns the version of the MySQL server as an integer

MysqlndUhConnection::getServerStatistics
MysqlndUhConnection::getSqlstate
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::getServerVersion

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::getServerVersion — Returns the version of the MySQL server as an integer

说明

public int MysqlndUhConnection::getServerVersion ( mysqlnd_connection $connection )

Returns the version of the MySQL server as an integer.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

The MySQL version.

范例

Example #1 MysqlndUhConnection::getServerVersion() example

<?php
class proxy extends MysqlndUhConnection {
 public function getServerVersion($res) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::getServerVersion($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
var_dump($mysqli->server_version);
?>

以上例程会输出：

proxy::getServerVersion(array (
  0 => NULL,
))
proxy::getServerVersion returns 50145
int(50145)

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_get_server_version() - 作为一个整数返回MySQL服务器的版本
  • mysql_get_server_version()

MysqlndUhConnection::getServerStatistics
MysqlndUhConnection::getSqlstate
MysqlndUhConnection


Returns the SQLSTATE error from previous MySQL operation

MysqlndUhConnection::getServerVersion
MysqlndUhConnection::getStatistics
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::getSqlstate

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::getSqlstate — Returns the SQLSTATE error from previous MySQL operation

说明

public string MysqlndUhConnection::getSqlstate ( mysqlnd_connection $connection )

Returns the SQLSTATE error from previous MySQL operation.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

The SQLSTATE code.

范例

Example #1 MysqlndUhConnection::getSqlstate() example

<?php
class proxy extends MysqlndUhConnection {
 public function getSqlstate($res) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::getSqlstate($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
var_dump($mysqli->sqlstate);
$mysqli->query("AN_INVALID_REQUEST_TO_PROVOKE_AN_ERROR");
var_dump($mysqli->sqlstate);
?>

以上例程会输出：

proxy::getSqlstate(array (
  0 => NULL,
))
proxy::getSqlstate returns '00000'
string(5) "00000"
proxy::getSqlstate(array (
  0 => NULL,
))
proxy::getSqlstate returns '42000'
string(5) "42000"

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_sql_state()

MysqlndUhConnection::getServerVersion
MysqlndUhConnection::getStatistics
MysqlndUhConnection


Returns statistics about the client connection.

MysqlndUhConnection::getSqlstate
MysqlndUhConnection::getThreadId
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::getStatistics

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::getStatistics — Returns statistics about the client connection.

说明

public array MysqlndUhConnection::getStatistics ( mysqlnd_connection $connection )

Returns statistics about the client connection.

Warning

本函数还未编写文档，仅有参数列表。

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Connection statistics collected by mysqlnd.

范例

Example #1 MysqlndUhConnection::getStatistics() example

<?php
class proxy extends MysqlndUhConnection {
 public function getStatistics($res) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::getStatistics($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
var_dump($mysqli->get_connection_stats());
?>

以上例程会输出：

proxy::getStatistics(array (
  0 => NULL,
))
proxy::getStatistics returns array (
  'bytes_sent' => '73',
  'bytes_received' => '77',
  'packets_sent' => '2',
  'packets_received' => '2',
  'protocol_overhead_in' => '8',
  'protocol_overhead_out' => '8',
  'bytes_received_ok_packet' => '0',
  'bytes_received_eof_packet' => '0',
  'bytes_received_rset_header_packet' => '0',
  'bytes_received_rset_field_meta_packet' => '0',
  'bytes_received_rset_row_packet' => '0',
  'bytes_received_prepare_response_packet' => '0',
  'bytes_received_change_user_packet' => '0',
  'packets_sent_command' => '0',
  'packets_received_ok' => '0',
  'packets_received_eof' => '0',
  'packets_received_rset_header' => '0',
  'packets_received_rset_field_meta' => '0',
  'packets_received_rset_row' => '0',
  'packets_received_prepare_response' => '0',
  'packets_received_change_user' => '0',
  'result_set_queries' => '0',
  'non_result_set_queries' => '0',
  'no_index_used' => '0',
  'bad_index_used' => '0',
  'slow_queries' => '0',
  'buffered_sets' => '0',
  'unbuffered_sets' => '0',
  'ps_buffered_sets' => '0',
  'ps_unbuffered_sets' => '0',
  'flushed_normal_sets' => '0',
  'flushed_ps_sets' => '0',
  'ps_prepared_never_executed' => '0',
  'ps_prepared_once_executed' => '0',
  'rows_fetched_from_server_normal' => '0',
  'rows_fetched_from_server_ps' => '0',
  'rows_buffered_from_client_normal' => '0',
  'rows_buffered_from_client_ps' => '0',
  'rows_fetched_from_client_normal_buffered' => '0',
  'rows_fetched_from_client_normal_unbuffered' => '0',
  'rows_fetched_from_client_ps_buffered' => '0',
  'rows_fetched_from_client_ps_unbuffered' => '0',
  'rows_fetched_from_client_ps_cursor' => '0',
  'rows_affected_normal' => '0',
  'rows_affected_ps' => '0',
  'rows_skipped_normal' => '0',
  'rows_skipped_ps' => '0',
  'copy_on_write_saved' => '0',
  'copy_on_write_performed' => '0',
  'command_buffer_too_small' => '0',
  'connect_success' => '1',
  'connect_failure' => '0',
  'connection_reused' => '0',
  'reconnect' => '0',
  'pconnect_success' => '0',
  'active_connections' => '1',
  'active_persistent_connections' => '0',
  'explicit_close' => '0',
  'implicit_close' => '0',
  'disconnect_close' => '0',
  'in_middle_of_command_close' => '0',
  'explicit_free_result' => '0',
  'implicit_free_result' => '0',
  'explicit_stmt_close' => '0',
  'implicit_stmt_close' => '0',
  'mem_emalloc_count' => '0',
  'mem_emalloc_amount' => '0',
  'mem_ecalloc_count' => '0',
  'mem_ecalloc_amount' => '0',
  'mem_erealloc_count' => '0',
  'mem_erealloc_amount' => '0',
  'mem_efree_count' => '0',
  'mem_efree_amount' => '0',
  'mem_malloc_count' => '0',
  'mem_malloc_amount' => '0',
  'mem_calloc_count' => '0',
  'mem_calloc_amount' => '0',
  'mem_realloc_count' => '0',
  'mem_realloc_amount' => '0',
  'mem_free_count' => '0',
  'mem_free_amount' => '0',
  'mem_estrndup_count' => '0',
  'mem_strndup_count' => '0',
  'mem_estndup_count' => '0',
  'mem_strdup_count' => '0',
  'proto_text_fetched_null' => '0',
  'proto_text_fetched_bit' => '0',
  'proto_text_fetched_tinyint' => '0',
  'proto_text_fetched_short' => '0',
  'proto_text_fetched_int24' => '0',
  'proto_text_fetched_int' => '0',
  'proto_text_fetched_bigint' => '0',
  'proto_text_fetched_decimal' => '0',
  'proto_text_fetched_float' => '0',
  'proto_text_fetched_double' => '0',
  'proto_text_fetched_date' => '0',
  'proto_text_fetched_year' => '0',
  'proto_text_fetched_time' => '0',
  'proto_text_fetched_datetime' => '0',
  'proto_text_fetched_timestamp' => '0',
  'proto_text_fetched_string' => '0',
  'proto_text_fetched_blob' => '0',
  'proto_text_fetched_enum' => '0',
  'proto_text_fetched_set' => '0',
  'proto_text_fetched_geometry' => '0',
  'proto_text_fetched_other' => '0',
  'proto_binary_fetched_null' => '0',
  'proto_binary_fetched_bit' => '0',
  'proto_binary_fetched_tinyint' => '0',
  'proto_binary_fetched_short' => '0',
  'proto_binary_fetched_int24' => '0',
  'proto_binary_fetched_int' => '0',
  'proto_binary_fetched_bigint' => '0',
  'proto_binary_fetched_decimal' => '0',
  'proto_binary_fetched_float' => '0',
  'proto_binary_fetched_double' => '0',
  'proto_binary_fetched_date' => '0',
  'proto_binary_fetched_year' => '0',
  'proto_binary_fetched_time' => '0',
  'proto_binary_fetched_datetime' => '0',
  'proto_binary_fetched_timestamp' => '0',
  'proto_binary_fetched_string' => '0',
  'proto_binary_fetched_blob' => '0',
  'proto_binary_fetched_enum' => '0',
  'proto_binary_fetched_set' => '0',
  'proto_binary_fetched_geometry' => '0',
  'proto_binary_fetched_other' => '0',
  'init_command_executed_count' => '0',
  'init_command_failed_count' => '0',
  'com_quit' => '0',
  'com_init_db' => '0',
  'com_query' => '0',
  'com_field_list' => '0',
  'com_create_db' => '0',
  'com_drop_db' => '0',
  'com_refresh' => '0',
  'com_shutdown' => '0',
  'com_statistics' => '0',
  'com_process_info' => '0',
  'com_connect' => '0',
  'com_process_kill' => '0',
  'com_debug' => '0',
  'com_ping' => '0',
  'com_time' => '0',
  'com_delayed_insert' => '0',
  'com_change_user' => '0',
  'com_binlog_dump' => '0',
  'com_table_dump' => '0',
  'com_connect_out' => '0',
  'com_register_slave' => '0',
  'com_stmt_prepare' => '0',
  'com_stmt_execute' => '0',
  'com_stmt_send_long_data' => '0',
  'com_stmt_close' => '0',
  'com_stmt_reset' => '0',
  'com_stmt_set_option' => '0',
  'com_stmt_fetch' => '0',
  'com_deamon' => '0',
  'bytes_received_real_data_normal' => '0',
  'bytes_received_real_data_ps' => '0',
)
array(160) {
  ["bytes_sent"]=>
  string(2) "73"
  ["bytes_received"]=>
  string(2) "77"
  ["packets_sent"]=>
  string(1) "2"
  ["packets_received"]=>
  string(1) "2"
  ["protocol_overhead_in"]=>
  string(1) "8"
  ["protocol_overhead_out"]=>
  string(1) "8"
  ["bytes_received_ok_packet"]=>
  string(1) "0"
  ["bytes_received_eof_packet"]=>
  string(1) "0"
  ["bytes_received_rset_header_packet"]=>
  string(1) "0"
  ["bytes_received_rset_field_meta_packet"]=>
  string(1) "0"
  ["bytes_received_rset_row_packet"]=>
  string(1) "0"
  ["bytes_received_prepare_response_packet"]=>
  string(1) "0"
  ["bytes_received_change_user_packet"]=>
  string(1) "0"
  ["packets_sent_command"]=>
  string(1) "0"
  ["packets_received_ok"]=>
  string(1) "0"
  ["packets_received_eof"]=>
  string(1) "0"
  ["packets_received_rset_header"]=>
  string(1) "0"
  ["packets_received_rset_field_meta"]=>
  string(1) "0"
  ["packets_received_rset_row"]=>
  string(1) "0"
  ["packets_received_prepare_response"]=>
  string(1) "0"
  ["packets_received_change_user"]=>
  string(1) "0"
  ["result_set_queries"]=>
  string(1) "0"
  ["non_result_set_queries"]=>
  string(1) "0"
  ["no_index_used"]=>
  string(1) "0"
  ["bad_index_used"]=>
  string(1) "0"
  ["slow_queries"]=>
  string(1) "0"
  ["buffered_sets"]=>
  string(1) "0"
  ["unbuffered_sets"]=>
  string(1) "0"
  ["ps_buffered_sets"]=>
  string(1) "0"
  ["ps_unbuffered_sets"]=>
  string(1) "0"
  ["flushed_normal_sets"]=>
  string(1) "0"
  ["flushed_ps_sets"]=>
  string(1) "0"
  ["ps_prepared_never_executed"]=>
  string(1) "0"
  ["ps_prepared_once_executed"]=>
  string(1) "0"
  ["rows_fetched_from_server_normal"]=>
  string(1) "0"
  ["rows_fetched_from_server_ps"]=>
  string(1) "0"
  ["rows_buffered_from_client_normal"]=>
  string(1) "0"
  ["rows_buffered_from_client_ps"]=>
  string(1) "0"
  ["rows_fetched_from_client_normal_buffered"]=>
  string(1) "0"
  ["rows_fetched_from_client_normal_unbuffered"]=>
  string(1) "0"
  ["rows_fetched_from_client_ps_buffered"]=>
  string(1) "0"
  ["rows_fetched_from_client_ps_unbuffered"]=>
  string(1) "0"
  ["rows_fetched_from_client_ps_cursor"]=>
  string(1) "0"
  ["rows_affected_normal"]=>
  string(1) "0"
  ["rows_affected_ps"]=>
  string(1) "0"
  ["rows_skipped_normal"]=>
  string(1) "0"
  ["rows_skipped_ps"]=>
  string(1) "0"
  ["copy_on_write_saved"]=>
  string(1) "0"
  ["copy_on_write_performed"]=>
  string(1) "0"
  ["command_buffer_too_small"]=>
  string(1) "0"
  ["connect_success"]=>
  string(1) "1"
  ["connect_failure"]=>
  string(1) "0"
  ["connection_reused"]=>
  string(1) "0"
  ["reconnect"]=>
  string(1) "0"
  ["pconnect_success"]=>
  string(1) "0"
  ["active_connections"]=>
  string(1) "1"
  ["active_persistent_connections"]=>
  string(1) "0"
  ["explicit_close"]=>
  string(1) "0"
  ["implicit_close"]=>
  string(1) "0"
  ["disconnect_close"]=>
  string(1) "0"
  ["in_middle_of_command_close"]=>
  string(1) "0"
  ["explicit_free_result"]=>
  string(1) "0"
  ["implicit_free_result"]=>
  string(1) "0"
  ["explicit_stmt_close"]=>
  string(1) "0"
  ["implicit_stmt_close"]=>
  string(1) "0"
  ["mem_emalloc_count"]=>
  string(1) "0"
  ["mem_emalloc_amount"]=>
  string(1) "0"
  ["mem_ecalloc_count"]=>
  string(1) "0"
  ["mem_ecalloc_amount"]=>
  string(1) "0"
  ["mem_erealloc_count"]=>
  string(1) "0"
  ["mem_erealloc_amount"]=>
  string(1) "0"
  ["mem_efree_count"]=>
  string(1) "0"
  ["mem_efree_amount"]=>
  string(1) "0"
  ["mem_malloc_count"]=>
  string(1) "0"
  ["mem_malloc_amount"]=>
  string(1) "0"
  ["mem_calloc_count"]=>
  string(1) "0"
  ["mem_calloc_amount"]=>
  string(1) "0"
  ["mem_realloc_count"]=>
  string(1) "0"
  ["mem_realloc_amount"]=>
  string(1) "0"
  ["mem_free_count"]=>
  string(1) "0"
  ["mem_free_amount"]=>
  string(1) "0"
  ["mem_estrndup_count"]=>
  string(1) "0"
  ["mem_strndup_count"]=>
  string(1) "0"
  ["mem_estndup_count"]=>
  string(1) "0"
  ["mem_strdup_count"]=>
  string(1) "0"
  ["proto_text_fetched_null"]=>
  string(1) "0"
  ["proto_text_fetched_bit"]=>
  string(1) "0"
  ["proto_text_fetched_tinyint"]=>
  string(1) "0"
  ["proto_text_fetched_short"]=>
  string(1) "0"
  ["proto_text_fetched_int24"]=>
  string(1) "0"
  ["proto_text_fetched_int"]=>
  string(1) "0"
  ["proto_text_fetched_bigint"]=>
  string(1) "0"
  ["proto_text_fetched_decimal"]=>
  string(1) "0"
  ["proto_text_fetched_float"]=>
  string(1) "0"
  ["proto_text_fetched_double"]=>
  string(1) "0"
  ["proto_text_fetched_date"]=>
  string(1) "0"
  ["proto_text_fetched_year"]=>
  string(1) "0"
  ["proto_text_fetched_time"]=>
  string(1) "0"
  ["proto_text_fetched_datetime"]=>
  string(1) "0"
  ["proto_text_fetched_timestamp"]=>
  string(1) "0"
  ["proto_text_fetched_string"]=>
  string(1) "0"
  ["proto_text_fetched_blob"]=>
  string(1) "0"
  ["proto_text_fetched_enum"]=>
  string(1) "0"
  ["proto_text_fetched_set"]=>
  string(1) "0"
  ["proto_text_fetched_geometry"]=>
  string(1) "0"
  ["proto_text_fetched_other"]=>
  string(1) "0"
  ["proto_binary_fetched_null"]=>
  string(1) "0"
  ["proto_binary_fetched_bit"]=>
  string(1) "0"
  ["proto_binary_fetched_tinyint"]=>
  string(1) "0"
  ["proto_binary_fetched_short"]=>
  string(1) "0"
  ["proto_binary_fetched_int24"]=>
  string(1) "0"
  ["proto_binary_fetched_int"]=>
  string(1) "0"
  ["proto_binary_fetched_bigint"]=>
  string(1) "0"
  ["proto_binary_fetched_decimal"]=>
  string(1) "0"
  ["proto_binary_fetched_float"]=>
  string(1) "0"
  ["proto_binary_fetched_double"]=>
  string(1) "0"
  ["proto_binary_fetched_date"]=>
  string(1) "0"
  ["proto_binary_fetched_year"]=>
  string(1) "0"
  ["proto_binary_fetched_time"]=>
  string(1) "0"
  ["proto_binary_fetched_datetime"]=>
  string(1) "0"
  ["proto_binary_fetched_timestamp"]=>
  string(1) "0"
  ["proto_binary_fetched_string"]=>
  string(1) "0"
  ["proto_binary_fetched_blob"]=>
  string(1) "0"
  ["proto_binary_fetched_enum"]=>
  string(1) "0"
  ["proto_binary_fetched_set"]=>
  string(1) "0"
  ["proto_binary_fetched_geometry"]=>
  string(1) "0"
  ["proto_binary_fetched_other"]=>
  string(1) "0"
  ["init_command_executed_count"]=>
  string(1) "0"
  ["init_command_failed_count"]=>
  string(1) "0"
  ["com_quit"]=>
  string(1) "0"
  ["com_init_db"]=>
  string(1) "0"
  ["com_query"]=>
  string(1) "0"
  ["com_field_list"]=>
  string(1) "0"
  ["com_create_db"]=>
  string(1) "0"
  ["com_drop_db"]=>
  string(1) "0"
  ["com_refresh"]=>
  string(1) "0"
  ["com_shutdown"]=>
  string(1) "0"
  ["com_statistics"]=>
  string(1) "0"
  ["com_process_info"]=>
  string(1) "0"
  ["com_connect"]=>
  string(1) "0"
  ["com_process_kill"]=>
  string(1) "0"
  ["com_debug"]=>
  string(1) "0"
  ["com_ping"]=>
  string(1) "0"
  ["com_time"]=>
  string(1) "0"
  ["com_delayed_insert"]=>
  string(1) "0"
  ["com_change_user"]=>
  string(1) "0"
  ["com_binlog_dump"]=>
  string(1) "0"
  ["com_table_dump"]=>
  string(1) "0"
  ["com_connect_out"]=>
  string(1) "0"
  ["com_register_slave"]=>
  string(1) "0"
  ["com_stmt_prepare"]=>
  string(1) "0"
  ["com_stmt_execute"]=>
  string(1) "0"
  ["com_stmt_send_long_data"]=>
  string(1) "0"
  ["com_stmt_close"]=>
  string(1) "0"
  ["com_stmt_reset"]=>
  string(1) "0"
  ["com_stmt_set_option"]=>
  string(1) "0"
  ["com_stmt_fetch"]=>
  string(1) "0"
  ["com_deamon"]=>
  string(1) "0"
  ["bytes_received_real_data_normal"]=>
  string(1) "0"
  ["bytes_received_real_data_ps"]=>
  string(1) "0"
}

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_get_connection_stats() - Returns statistics about the client connection

MysqlndUhConnection::getSqlstate
MysqlndUhConnection::getThreadId
MysqlndUhConnection


Returns the thread ID for the current connection

MysqlndUhConnection::getStatistics
MysqlndUhConnection::getWarningCount
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::getThreadId

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::getThreadId — Returns the thread ID for the current connection

说明

public int MysqlndUhConnection::getThreadId ( mysqlnd_connection $connection )

Returns the thread ID for the current connection.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Connection thread id.

范例

Example #1 MysqlndUhConnection::getThreadId() example

<?php
class proxy extends MysqlndUhConnection {
 public function getThreadId($res) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::getThreadId($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
var_dump($mysqli->thread_id);
?>

以上例程会输出：

proxy::getThreadId(array (
  0 => NULL,
))
proxy::getThreadId returns 27646
int(27646)

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_thread_id() - Returns the thread ID for the current connection
  • mysql_thread_id() - 返回当前线程的 ID

MysqlndUhConnection::getStatistics
MysqlndUhConnection::getWarningCount
MysqlndUhConnection


Returns the number of warnings from the last query for the given link

MysqlndUhConnection::getThreadId
MysqlndUhConnection::init
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::getWarningCount

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::getWarningCount — Returns the number of warnings from the last query for the given link

说明

public int MysqlndUhConnection::getWarningCount ( mysqlnd_connection $connection )

Returns the number of warnings from the last query for the given link.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Number of warnings.

范例

Example #1 MysqlndUhConnection::getWarningCount() example

<?php
class proxy extends MysqlndUhConnection {
 public function getWarningCount($res) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::getWarningCount($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
var_dump($mysqli->warning_count);
?>

以上例程会输出：

proxy::getWarningCount(array (
  0 => NULL,
))
proxy::getWarningCount returns 0
int(0)

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_warning_count() - Returns the number of warnings from the last query for the given link

MysqlndUhConnection::getThreadId
MysqlndUhConnection::init
MysqlndUhConnection


Initialize mysqlnd connection

MysqlndUhConnection::getWarningCount
MysqlndUhConnection::killConnection
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::init

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::init — Initialize mysqlnd connection

说明

public bool MysqlndUhConnection::init ( mysqlnd_connection $connection )

Initialize mysqlnd connection. This is an mysqlnd internal call to initialize the connection object.

Note:

Failing to call the parent implementation may cause memory leaks or crash PHP. This is not considered a bug. Please, keep in mind that the mysqlnd library functions have never been designed to be exposed to the user space.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::init() example

<?php
class proxy extends MysqlndUhConnection {
 public function init($res) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::init($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
?>

以上例程会输出：

proxy::init(array (
  0 => NULL,
))
proxy::init returns true

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections

MysqlndUhConnection::getWarningCount
MysqlndUhConnection::killConnection
MysqlndUhConnection


Asks the server to kill a MySQL thread

MysqlndUhConnection::init
MysqlndUhConnection::listFields
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::killConnection

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::killConnection — Asks the server to kill a MySQL thread

说明

public bool MysqlndUhConnection::killConnection ( mysqlnd_connection $connection , int $pid )

Asks the server to kill a MySQL thread.

参数

connection

Mysqlnd connection handle. Do not modify!

pid

Thread Id of the connection to be killed.

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::kill() example

<?php
class proxy extends MysqlndUhConnection {
 public function killConnection($res, $pid) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::killConnection($res, $pid);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->kill($mysqli->thread_id);
?>

以上例程会输出：

proxy::killConnection(array (
  0 => NULL,
  1 => 27650,
))
proxy::killConnection returns true

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_kill() - Asks the server to kill a MySQL thread

MysqlndUhConnection::init
MysqlndUhConnection::listFields
MysqlndUhConnection


List MySQL table fields

MysqlndUhConnection::killConnection
MysqlndUhConnection::listMethod
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::listFields

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::listFields — List MySQL table fields

说明

public array MysqlndUhConnection::listFields ( mysqlnd_connection $connection , string $table , string $achtung_wild )

List MySQL table fields.

Warning

本函数还未编写文档，仅有参数列表。

参数

connection

Mysqlnd connection handle. Do not modify!

table

The name of the table that's being queried.

pattern

Name pattern.

返回值

范例

Example #1 MysqlndUhConnection::listFields() example

<?php
class proxy extends MysqlndUhConnection {
 public function listFields($res, $table, $pattern) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::listFields($res, $table, $pattern);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysql = mysql_connect("localhost", "root", "");
mysql_select_db("test", $mysql);
mysql_query("DROP TABLE IF EXISTS test_a", $mysql);
mysql_query("CREATE TABLE test_a(id INT, col1 VARCHAR(255))", $mysql);
$res = mysql_list_fields("test", "test_a", $mysql);
printf("num_rows = %d\n", mysql_num_rows($res));
while ($row = mysql_fetch_assoc($res))
 var_dump($row);
?>

以上例程会输出：

proxy::listFields(array (
  0 => NULL,
  1 => 'test_a',
  2 => '',
))
proxy::listFields returns NULL
num_rows = 0

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysql_list_fields() - 列出 MySQL 结果中的字段

MysqlndUhConnection::killConnection
MysqlndUhConnection::listMethod
MysqlndUhConnection


Wrapper for assorted list commands

MysqlndUhConnection::listFields
MysqlndUhConnection::moreResults
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::listMethod

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::listMethod — Wrapper for assorted list commands

说明

public void MysqlndUhConnection::listMethod ( mysqlnd_connection $connection , string $query , string $achtung_wild , string $par1 )

Wrapper for assorted list commands.

Warning

本函数还未编写文档，仅有参数列表。

参数

connection

Mysqlnd connection handle. Do not modify!

query

SHOW command to be executed.

achtung_wild

par1

返回值

返回值

TODO

范例

Example #1 MysqlndUhConnection::listMethod() example

<?php
class proxy extends MysqlndUhConnection {
 public function listMethod($res, $query, $pattern, $par1) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::listMethod($res, $query, $pattern, $par1);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysql = mysql_connect("localhost", "root", "");
$res = mysql_list_dbs($mysql);
printf("num_rows = %d\n", mysql_num_rows($res));
while ($row = mysql_fetch_assoc($res))
 var_dump($row);
?>

以上例程会输出：

proxy::listMethod(array (
  0 => NULL,
  1 => 'SHOW DATABASES',
  2 => '',
  3 => '',
))
proxy::listMethod returns NULL
num_rows = 6
array(1) {
  ["Database"]=>
  string(18) "information_schema"
}
array(1) {
  ["Database"]=>
  string(5) "mysql"
}
array(1) {
  ["Database"]=>
  string(8) "oxid_new"
}
array(1) {
  ["Database"]=>
  string(7) "phptest"
}
array(1) {
  ["Database"]=>
  string(7) "pushphp"
}
array(1) {
  ["Database"]=>
  string(4) "test"
}

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysql_list_dbs() - 列出 MySQL 服务器中所有的数据库

MysqlndUhConnection::listFields
MysqlndUhConnection::moreResults
MysqlndUhConnection


Check if there are any more query results from a multi query

MysqlndUhConnection::listMethod
MysqlndUhConnection::nextResult
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::moreResults

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::moreResults — Check if there are any more query results from a multi query

说明

public bool MysqlndUhConnection::moreResults ( mysqlnd_connection $connection )

Check if there are any more query results from a multi query.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::moreResults() example

<?php
class proxy extends MysqlndUhConnection {
 public function moreResults($res) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::moreResults($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->multi_query("SELECT 1 AS _one; SELECT 2 AS _two");
do {
  $res = $mysqli->store_result();
  var_dump($res->fetch_assoc());
  printf("%s\n", str_repeat("-", 40));
} while ($mysqli->more_results() && $mysqli->next_result());
?>

以上例程会输出：

array(1) {
  ["_one"]=>
  string(1) "1"
}
----------------------------------------
proxy::moreResults(array (
  0 => NULL,
))
proxy::moreResults returns true
proxy::moreResults(array (
  0 => NULL,
))
proxy::moreResults returns true
array(1) {
  ["_two"]=>
  string(1) "2"
}
----------------------------------------
proxy::moreResults(array (
  0 => NULL,
))
proxy::moreResults returns false

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_more_results() - Check if there are any more query results from a multi query

MysqlndUhConnection::listMethod
MysqlndUhConnection::nextResult
MysqlndUhConnection


Prepare next result from multi_query

MysqlndUhConnection::moreResults
MysqlndUhConnection::ping
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::nextResult

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::nextResult — Prepare next result from multi_query

说明

public bool MysqlndUhConnection::nextResult ( mysqlnd_connection $connection )

Prepare next result from multi_query.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::nextResult() example

<?php
class proxy extends MysqlndUhConnection {
 public function nextResult($res) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::nextResult($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->multi_query("SELECT 1 AS _one; SELECT 2 AS _two");
do {
  $res = $mysqli->store_result();
  var_dump($res->fetch_assoc());
  printf("%s\n", str_repeat("-", 40));
} while ($mysqli->more_results() && $mysqli->next_result());
?>

以上例程会输出：

array(1) {
  ["_one"]=>
  string(1) "1"
}
----------------------------------------
proxy::nextResult(array (
  0 => NULL,
))
proxy::nextResult returns true
array(1) {
  ["_two"]=>
  string(1) "2"
}
----------------------------------------

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_next_result() - Prepare next result from multi_query

MysqlndUhConnection::moreResults
MysqlndUhConnection::ping
MysqlndUhConnection


Pings a server connection, or tries to reconnect if the connection has gone down

MysqlndUhConnection::nextResult
MysqlndUhConnection::query
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::ping

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::ping — Pings a server connection, or tries to reconnect if the connection has gone down

说明

public bool MysqlndUhConnection::ping ( mysqlnd_connection $connection )

Pings a server connection, or tries to reconnect if the connection has gone down.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::ping() example

<?php
class proxy extends MysqlndUhConnection {
 public function ping($res) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::ping($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->ping();
?>

以上例程会输出：

proxy::ping(array (
  0 => NULL,
))
proxy::ping returns true

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_ping() - Pings a server connection, or tries to reconnect if the connection has gone down
  • mysql_ping() - Ping 一个服务器连接，如果没有连接则重新连接

MysqlndUhConnection::nextResult
MysqlndUhConnection::query
MysqlndUhConnection


Performs a query on the database

MysqlndUhConnection::ping
MysqlndUhConnection::queryReadResultsetHeader
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::query

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::query — Performs a query on the database

说明

public bool MysqlndUhConnection::query ( mysqlnd_connection $connection , string $query )

Performs a query on the database (COM_QUERY).

参数

connection

Mysqlnd connection handle. Do not modify!

query

The query string.

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::query() example

<?php
class proxy extends MysqlndUhConnection {
 public function query($res, $query) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $query = "SELECT 'How about query rewriting?'";
  $ret = parent::query($res, $query);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
$res = $mysqli->query("SELECT 'Welcome mysqlnd_uh!' FROM DUAL");
var_dump($res->fetch_assoc());
?>

以上例程会输出：

proxy::query(array (
  0 => NULL,
  1 => 'SELECT \'Welcome mysqlnd_uh!\' FROM DUAL',
))
proxy::query returns true
array(1) {
  ["How about query rewriting?"]=>
  string(26) "How about query rewriting?"
}

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_query() - 对数据库执行一次查询
  • mysql_query() - 发送一条 MySQL 查询

MysqlndUhConnection::ping
MysqlndUhConnection::queryReadResultsetHeader
MysqlndUhConnection


Read a result set header

MysqlndUhConnection::query
MysqlndUhConnection::reapQuery
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::queryReadResultsetHeader

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::queryReadResultsetHeader — Read a result set header

说明

public bool MysqlndUhConnection::queryReadResultsetHeader ( mysqlnd_connection $connection , mysqlnd_statement $mysqlnd_stmt )

Read a result set header.

参数

connection

Mysqlnd connection handle. Do not modify!

mysqlnd_stmt

Mysqlnd statement handle. Do not modify! Set to NULL, if function is not used in the context of a prepared statement.

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::queryReadResultsetHeader() example

<?php
class proxy extends MysqlndUhConnection {
 public function queryReadResultsetHeader($res, $stmt) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::queryReadResultsetHeader($res, $stmt);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
$res = $mysqli->query("SELECT 'Welcome mysqlnd_uh!' FROM DUAL");
var_dump($res->fetch_assoc());
?>

以上例程会输出：

proxy::queryReadResultsetHeader(array (
  0 => NULL,
  1 => NULL,
))
proxy::queryReadResultsetHeader returns true
array(1) {
  ["Welcome mysqlnd_uh!"]=>
  string(19) "Welcome mysqlnd_uh!"
}

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections

MysqlndUhConnection::query
MysqlndUhConnection::reapQuery
MysqlndUhConnection


Get result from async query

MysqlndUhConnection::queryReadResultsetHeader
MysqlndUhConnection::refreshServer
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::reapQuery

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::reapQuery — Get result from async query

说明

public bool MysqlndUhConnection::reapQuery ( mysqlnd_connection $connection )

Get result from async query.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::reapQuery() example

<?php
class proxy extends MysqlndUhConnection {
 public function reapQuery($res) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::reapQuery($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$conn1 = new mysqli("localhost", "root", "", "test");
$conn2 = new mysqli("localhost", "root", "", "test");

$conn1->query("SELECT 1 as 'one', SLEEP(1) AS _sleep FROM DUAL", MYSQLI_ASYNC |  MYSQLI_USE_RESULT);
$conn2->query("SELECT 1.1 as 'one dot one' FROM DUAL", MYSQLI_ASYNC |  MYSQLI_USE_RESULT);

$links = array(
 $conn1->thread_id => array('link' => $conn1, 'processed' => false),
 $conn2->thread_id => array('link' => $conn2, 'processed' => false)
);

$saved_errors = array();
do {
 $poll_links = $poll_errors = $poll_reject = array();
 foreach ($links as $thread_id => $link) {
  if (!$link['processed']) {
   $poll_links[] = $link['link'];
   $poll_errors[] = $link['link'];
   $poll_reject[] = $link['link'];
  }
 }
 if (0 == count($poll_links))
  break;

 if (0 == ($num_ready = mysqli_poll($poll_links, $poll_errors, $poll_reject, 0, 200000)))
  continue;

 if (!empty($poll_errors)) {
  die(var_dump($poll_errors));
 }

 foreach ($poll_links as $link) {
  $thread_id = mysqli_thread_id($link);
  $links[$thread_id]['processed'] = true;

  if (is_object($res = mysqli_reap_async_query($link))) {
   // result set object
   while ($row = mysqli_fetch_assoc($res)) {
    // eat up all results
    var_dump($row);
   }
   mysqli_free_result($res);
  } else {
   // either there is no result (no SELECT) or there is an error
   if (mysqli_errno($link) > 0) {
    $saved_errors[$thread_id] = mysqli_errno($link);
    printf("'%s' caused %d\n", $links[$thread_id]['query'],     mysqli_errno($link));
   }
  }
 }
} while (true);
?>

以上例程会输出：

proxy::reapQuery(array (
  0 => NULL,
))
proxy::reapQuery returns true
array(1) {
  ["one dot one"]=>
  string(3) "1.1"
}
proxy::reapQuery(array (
  0 => NULL,
))
proxy::reapQuery returns true
array(2) {
  ["one"]=>
  string(1) "1"
  ["_sleep"]=>
  string(1) "0"
}

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_real_async_query()

MysqlndUhConnection::queryReadResultsetHeader
MysqlndUhConnection::refreshServer
MysqlndUhConnection


Flush or reset tables and caches

MysqlndUhConnection::reapQuery
MysqlndUhConnection::restartPSession
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::refreshServer

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::refreshServer — Flush or reset tables and caches

说明

public bool MysqlndUhConnection::refreshServer ( mysqlnd_connection $connection , int $options )

Flush or reset tables and caches.

Warning

本函数还未编写文档，仅有参数列表。

参数

connection

Mysqlnd connection handle. Do not modify!

options

What to refresh.

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::refreshServer() example

<?php
class proxy extends MysqlndUhConnection {
 public function refreshServer($res, $option) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::refreshServer($res, $option);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());
$mysqli = new mysqli("localhost", "root", "", "test");
mysqli_refresh($mysqli, 1);
?>

以上例程会输出：

proxy::refreshServer(array (
  0 => NULL,
  1 => 1,
))
proxy::refreshServer returns false

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections

MysqlndUhConnection::reapQuery
MysqlndUhConnection::restartPSession
MysqlndUhConnection


Restart a persistent mysqlnd connection

MysqlndUhConnection::refreshServer
MysqlndUhConnection::selectDb
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::restartPSession

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::restartPSession — Restart a persistent mysqlnd connection

说明

public bool MysqlndUhConnection::restartPSession ( mysqlnd_connection $connection )

Restart a persistent mysqlnd connection.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::restartPSession() example

<?php
class proxy extends MysqlndUhConnection {
 public function ping($res) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::ping($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->ping();
?>

以上例程会输出：

proxy::restartPSession(array (
  0 => NULL,
))
proxy::restartPSession returns true

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections

MysqlndUhConnection::refreshServer
MysqlndUhConnection::selectDb
MysqlndUhConnection


Selects the default database for database queries

MysqlndUhConnection::restartPSession
MysqlndUhConnection::sendClose
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::selectDb

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::selectDb — Selects the default database for database queries

说明

public bool MysqlndUhConnection::selectDb ( mysqlnd_connection $connection , string $database )

Selects the default database for database queries.

参数

connection

Mysqlnd connection handle. Do not modify!

database

The database name.

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::selectDb() example

<?php
class proxy extends MysqlndUhConnection {
 public function selectDb($res, $database) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::selectDb($res, $database);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());
$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->select_db("mysql");
?>

以上例程会输出：

proxy::selectDb(array (
  0 => NULL,
  1 => 'mysql',
))
proxy::selectDb returns true

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_select_db() - 选择用于数据库查询的默认数据库
  • mysql_select_db() - 选择 MySQL 数据库

MysqlndUhConnection::restartPSession
MysqlndUhConnection::sendClose
MysqlndUhConnection


Sends a close command to MySQL

MysqlndUhConnection::selectDb
MysqlndUhConnection::sendQuery
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::sendClose

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::sendClose — Sends a close command to MySQL

说明

public bool MysqlndUhConnection::sendClose ( mysqlnd_connection $connection )

Sends a close command to MySQL.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::sendClose() example

<?php
class proxy extends MysqlndUhConnection {
 public function sendClose($res) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::sendClose($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());
$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->close();
?>

以上例程会输出：

proxy::sendClose(array (
  0 => NULL,
))
proxy::sendClose returns true
proxy::sendClose(array (
  0 => NULL,
))
proxy::sendClose returns true

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections

MysqlndUhConnection::selectDb
MysqlndUhConnection::sendQuery
MysqlndUhConnection


Sends a query to MySQL

MysqlndUhConnection::sendClose
MysqlndUhConnection::serverDumpDebugInformation
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::sendQuery

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::sendQuery — Sends a query to MySQL

说明

public bool MysqlndUhConnection::sendQuery ( mysqlnd_connection $connection , string $query )

Sends a query to MySQL.

参数

connection

Mysqlnd connection handle. Do not modify!

query

The query string.

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::sendQuery() example

<?php
class proxy extends MysqlndUhConnection {
 public function sendQuery($res, $query) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::sendQuery($res, $query);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());
$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->query("SELECT 1");
?>

以上例程会输出：

proxy::sendQuery(array (
  0 => NULL,
  1 => 'SELECT 1',
))
proxy::sendQuery returns true

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections

MysqlndUhConnection::sendClose
MysqlndUhConnection::serverDumpDebugInformation
MysqlndUhConnection


Dump debugging information into the log for the MySQL server

MysqlndUhConnection::sendQuery
MysqlndUhConnection::setAutocommit
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::serverDumpDebugInformation

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::serverDumpDebugInformation — Dump debugging information into the log for the MySQL server

说明

public bool MysqlndUhConnection::serverDumpDebugInformation ( mysqlnd_connection $connection )

Dump debugging information into the log for the MySQL server.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::serverDumpDebugInformation() example

<?php
class proxy extends MysqlndUhConnection {
 public function serverDumpDebugInformation($res) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::serverDumpDebugInformation($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());
$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->dump_debug_info();
?>

以上例程会输出：

proxy::serverDumpDebugInformation(array (
  0 => NULL,
))
proxy::serverDumpDebugInformation returns true

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_dump_debug_info() - 将调试信息输出到日志

MysqlndUhConnection::sendQuery
MysqlndUhConnection::setAutocommit
MysqlndUhConnection


Turns on or off auto-committing database modifications

MysqlndUhConnection::serverDumpDebugInformation
MysqlndUhConnection::setCharset
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::setAutocommit

(PECL mysqlnd-uh >= 1.0.1-alpha, PHP >= 5.4.0)

MysqlndUhConnection::setAutocommit — Turns on or off auto-committing database modifications

说明

public bool MysqlndUhConnection::setAutocommit ( mysqlnd_connection $connection , int $mode )

Turns on or off auto-committing database modifications

参数

connection

Mysqlnd connection handle. Do not modify!

mode

Whether to turn on auto-commit or not.

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::setAutocommit() example

<?php
class proxy extends MysqlndUhConnection {
 public function setAutocommit($res, $mode) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::setAutocommit($res, $mode);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());
$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->autocommit(false);
$mysqli->autocommit(true);
?>

以上例程会输出：

proxy::setAutocommit(array (
  0 => NULL,
  1 => 0,
))
proxy::setAutocommit returns true
proxy::setAutocommit(array (
  0 => NULL,
  1 => 1,
))
proxy::setAutocommit returns true

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_autocommit() - 打开或关闭本次数据库连接的自动命令提交事务模式

MysqlndUhConnection::serverDumpDebugInformation
MysqlndUhConnection::setCharset
MysqlndUhConnection


Sets the default client character set

MysqlndUhConnection::setAutocommit
MysqlndUhConnection::setClientOption
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::setCharset

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::setCharset — Sets the default client character set

说明

public bool MysqlndUhConnection::setCharset ( mysqlnd_connection $connection , string $charset )

Sets the default client character set.

参数

connection

Mysqlnd connection handle. Do not modify!

charset

The charset to be set as default.

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::setCharset() example

<?php
class proxy extends MysqlndUhConnection {
 public function setCharset($res, $charset) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::setCharset($res, $charset);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());
$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->set_charset("latin1");
?>

以上例程会输出：

proxy::setCharset(array (
  0 => NULL,
  1 => 'latin1',
))
proxy::setCharset returns true

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_set_charset() - 设置默认字符编码

MysqlndUhConnection::setAutocommit
MysqlndUhConnection::setClientOption
MysqlndUhConnection


Sets a client option

MysqlndUhConnection::setCharset
MysqlndUhConnection::setServerOption
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::setClientOption

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::setClientOption — Sets a client option

说明

public bool MysqlndUhConnection::setClientOption ( mysqlnd_connection $connection , int $option , int $value )

Sets a client option.

参数

connection

Mysqlnd connection handle. Do not modify!

option

The option to be set.

value

Optional option value, if required.

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::setClientOption() example

<?php
function client_option_to_string($option) {
 static $mapping = array(
  MYSQLND_UH_MYSQLND_OPTION_OPT_CONNECT_TIMEOUT => "MYSQLND_UH_MYSQLND_OPTION_OPT_CONNECT_TIMEOUT",
  MYSQLND_UH_MYSQLND_OPTION_OPT_COMPRESS => "MYSQLND_UH_MYSQLND_OPTION_OPT_COMPRESS",
  MYSQLND_UH_MYSQLND_OPTION_OPT_NAMED_PIPE => "MYSQLND_UH_MYSQLND_OPTION_OPT_NAMED_PIPE",
  MYSQLND_UH_MYSQLND_OPTION_INIT_COMMAND => "MYSQLND_UH_MYSQLND_OPTION_INIT_COMMAND",
  MYSQLND_UH_MYSQLND_READ_DEFAULT_FILE => "MYSQLND_UH_MYSQLND_READ_DEFAULT_FILE",
  MYSQLND_UH_MYSQLND_READ_DEFAULT_GROUP => "MYSQLND_UH_MYSQLND_READ_DEFAULT_GROUP",
  MYSQLND_UH_MYSQLND_SET_CHARSET_DIR => "MYSQLND_UH_MYSQLND_SET_CHARSET_DIR",
  MYSQLND_UH_MYSQLND_SET_CHARSET_NAME => "MYSQLND_UH_MYSQLND_SET_CHARSET_NAME",
  MYSQLND_UH_MYSQLND_OPT_LOCAL_INFILE => "MYSQLND_UH_MYSQLND_OPT_LOCAL_INFILE",
  MYSQLND_UH_MYSQLND_OPT_PROTOCOL => "MYSQLND_UH_MYSQLND_OPT_PROTOCOL",
  MYSQLND_UH_MYSQLND_SHARED_MEMORY_BASE_NAME => "MYSQLND_UH_MYSQLND_SHARED_MEMORY_BASE_NAME",
  MYSQLND_UH_MYSQLND_OPT_READ_TIMEOUT => "MYSQLND_UH_MYSQLND_OPT_READ_TIMEOUT",
  MYSQLND_UH_MYSQLND_OPT_WRITE_TIMEOUT => "MYSQLND_UH_MYSQLND_OPT_WRITE_TIMEOUT",
  MYSQLND_UH_MYSQLND_OPT_USE_RESULT => "MYSQLND_UH_MYSQLND_OPT_USE_RESULT",
  MYSQLND_UH_MYSQLND_OPT_USE_REMOTE_CONNECTION => "MYSQLND_UH_MYSQLND_OPT_USE_REMOTE_CONNECTION",
  MYSQLND_UH_MYSQLND_OPT_USE_EMBEDDED_CONNECTION => "MYSQLND_UH_MYSQLND_OPT_USE_EMBEDDED_CONNECTION",
  MYSQLND_UH_MYSQLND_OPT_GUESS_CONNECTION => "MYSQLND_UH_MYSQLND_OPT_GUESS_CONNECTION",
  MYSQLND_UH_MYSQLND_SET_CLIENT_IP => "MYSQLND_UH_MYSQLND_SET_CLIENT_IP",
  MYSQLND_UH_MYSQLND_SECURE_AUTH => "MYSQLND_UH_MYSQLND_SECURE_AUTH",
  MYSQLND_UH_MYSQLND_REPORT_DATA_TRUNCATION => "MYSQLND_UH_MYSQLND_REPORT_DATA_TRUNCATION",
  MYSQLND_UH_MYSQLND_OPT_RECONNECT => "MYSQLND_UH_MYSQLND_OPT_RECONNECT",
  MYSQLND_UH_MYSQLND_OPT_SSL_VERIFY_SERVER_CERT => "MYSQLND_UH_MYSQLND_OPT_SSL_VERIFY_SERVER_CERT",
  MYSQLND_UH_MYSQLND_OPT_NET_CMD_BUFFER_SIZE => "MYSQLND_UH_MYSQLND_OPT_NET_CMD_BUFFER_SIZE",
  MYSQLND_UH_MYSQLND_OPT_NET_READ_BUFFER_SIZE => "MYSQLND_UH_MYSQLND_OPT_NET_READ_BUFFER_SIZE",
  MYSQLND_UH_MYSQLND_OPT_SSL_KEY => "MYSQLND_UH_MYSQLND_OPT_SSL_KEY",
  MYSQLND_UH_MYSQLND_OPT_SSL_CERT => "MYSQLND_UH_MYSQLND_OPT_SSL_CERT",
  MYSQLND_UH_MYSQLND_OPT_SSL_CA => "MYSQLND_UH_MYSQLND_OPT_SSL_CA",
  MYSQLND_UH_MYSQLND_OPT_SSL_CAPATH => "MYSQLND_UH_MYSQLND_OPT_SSL_CAPATH",
  MYSQLND_UH_MYSQLND_OPT_SSL_CIPHER => "MYSQLND_UH_MYSQLND_OPT_SSL_CIPHER",
  MYSQLND_UH_MYSQLND_OPT_SSL_PASSPHRASE => "MYSQLND_UH_MYSQLND_OPT_SSL_PASSPHRASE",
  MYSQLND_UH_SERVER_OPTION_PLUGIN_DIR => "MYSQLND_UH_SERVER_OPTION_PLUGIN_DIR",
  MYSQLND_UH_SERVER_OPTION_DEFAULT_AUTH => "MYSQLND_UH_SERVER_OPTION_DEFAULT_AUTH",
  MYSQLND_UH_SERVER_OPTION_SET_CLIENT_IP => "MYSQLND_UH_SERVER_OPTION_SET_CLIENT_IP"
 );
 if (version_compare(PHP_VERSION, '5.3.99-dev', '>')) {
  $mapping[MYSQLND_UH_MYSQLND_OPT_MAX_ALLOWED_PACKET] = "MYSQLND_UH_MYSQLND_OPT_MAX_ALLOWED_PACKET";
  $mapping[MYSQLND_UH_MYSQLND_OPT_AUTH_PROTOCOL] = "MYSQLND_UH_MYSQLND_OPT_AUTH_PROTOCOL";
 }
 if (defined("MYSQLND_UH_MYSQLND_OPT_INT_AND_FLOAT_NATIVE")) {
  /* special mysqlnd build */
  $mapping["MYSQLND_UH_MYSQLND_OPT_INT_AND_FLOAT_NATIVE"] = "MYSQLND_UH_MYSQLND_OPT_INT_AND_FLOAT_NATIVE";
 }
 return (isset($mapping[$option])) ? $mapping[$option] : 'unknown';
}

class proxy extends MysqlndUhConnection {
 public function setClientOption($res, $option, $value) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  printf("Option '%s' set to %s\n", client_option_to_string($option), var_export($value, true));
  $ret = parent::setClientOption($res, $option, $value);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());
$mysqli = new mysqli("localhost", "root", "", "test");
?>

以上例程会输出：

proxy::setClientOption(array (
  0 => NULL,
  1 => 210,
  2 => 3221225472,
))
Option 'MYSQLND_UH_MYSQLND_OPT_MAX_ALLOWED_PACKET' set to 3221225472
proxy::setClientOption returns true
proxy::setClientOption(array (
  0 => NULL,
  1 => 211,
  2 => 'mysql_native_password',
))
Option 'MYSQLND_UH_MYSQLND_OPT_AUTH_PROTOCOL' set to 'mysql_native_password'
proxy::setClientOption returns true
proxy::setClientOption(array (
  0 => NULL,
  1 => 8,
  2 => 1,
))
Option 'MYSQLND_UH_MYSQLND_OPT_LOCAL_INFILE' set to 1
proxy::setClientOption returns true

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_real_connect() - 建立一个 MySQL 服务器连接
  • mysqli_options() - Set options

MysqlndUhConnection::setCharset
MysqlndUhConnection::setServerOption
MysqlndUhConnection


Sets a server option

MysqlndUhConnection::setClientOption
MysqlndUhConnection::shutdownServer
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::setServerOption

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::setServerOption — Sets a server option

说明

public void MysqlndUhConnection::setServerOption ( mysqlnd_connection $connection , int $option )

Sets a server option.

参数

connection

Mysqlnd connection handle. Do not modify!

option

The option to be set.

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::setServerOption() example

<?php
function server_option_to_string($option) {
 $ret = 'unknown';
 switch ($option) {
  case MYSQLND_UH_SERVER_OPTION_MULTI_STATEMENTS_ON:
   $ret = 'MYSQLND_UH_SERVER_OPTION_MULTI_STATEMENTS_ON';
   break;
  case MYSQLND_UH_SERVER_OPTION_MULTI_STATEMENTS_OFF:
   $ret = 'MYSQLND_UH_SERVER_OPTION_MULTI_STATEMENTS_ON';
   break;
 }
 return $ret;
}

class proxy extends MysqlndUhConnection {
 public function setServerOption($res, $option) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  printf("Option '%s' set\n", server_option_to_string($option));
  $ret = parent::setServerOption($res, $option);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());
$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->multi_query("SELECT 1; SELECT 2");
?>

以上例程会输出：

proxy::setServerOption(array (
  0 => NULL,
  1 => 0,
))
Option 'MYSQLND_UH_SERVER_OPTION_MULTI_STATEMENTS_ON' set
proxy::setServerOption returns true

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_real_connect() - 建立一个 MySQL 服务器连接
  • mysqli_options() - Set options
  • mysqli_multi_query() - Performs a query on the database

MysqlndUhConnection::setClientOption
MysqlndUhConnection::shutdownServer
MysqlndUhConnection


The shutdownServer purpose

MysqlndUhConnection::setServerOption
MysqlndUhConnection::simpleCommand
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::shutdownServer

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::shutdownServer — The shutdownServer purpose

说明

public void MysqlndUhConnection::shutdownServer ( string $MYSQLND_UH_RES_MYSQLND_NAME , string $"level" )

Warning

本函数还未编写文档，仅有参数列表。

参数

MYSQLND_UH_RES_MYSQLND_NAME

"level"

返回值

MysqlndUhConnection::setServerOption
MysqlndUhConnection::simpleCommand
MysqlndUhConnection


Sends a basic COM_* command

MysqlndUhConnection::shutdownServer
MysqlndUhConnection::simpleCommandHandleResponse
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::simpleCommand

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::simpleCommand — Sends a basic COM_* command

说明

public bool MysqlndUhConnection::simpleCommand ( mysqlnd_connection $connection , int $command , string $arg , int $ok_packet , bool $silent , bool $ignore_upsert_status )

Sends a basic COM_* command to MySQL.

参数

connection

Mysqlnd connection handle. Do not modify!

command

The COM command to be send.

arg

Optional COM command arguments.

ok_packet

The OK packet type.

silent

Whether mysqlnd may emit errors.

ignore_upsert_status

Whether to ignore UPDATE/INSERT status.

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::simpleCommand() example

<?php
function server_cmd_2_string($command) {
 $mapping = array(
  MYSQLND_UH_MYSQLND_COM_SLEEP => "MYSQLND_UH_MYSQLND_COM_SLEEP",
  MYSQLND_UH_MYSQLND_COM_QUIT => "MYSQLND_UH_MYSQLND_COM_QUIT",
  MYSQLND_UH_MYSQLND_COM_INIT_DB => "MYSQLND_UH_MYSQLND_COM_INIT_DB",
  MYSQLND_UH_MYSQLND_COM_QUERY => "MYSQLND_UH_MYSQLND_COM_QUERY",
  MYSQLND_UH_MYSQLND_COM_FIELD_LIST => "MYSQLND_UH_MYSQLND_COM_FIELD_LIST",
  MYSQLND_UH_MYSQLND_COM_CREATE_DB => "MYSQLND_UH_MYSQLND_COM_CREATE_DB",
  MYSQLND_UH_MYSQLND_COM_DROP_DB => "MYSQLND_UH_MYSQLND_COM_DROP_DB",
  MYSQLND_UH_MYSQLND_COM_REFRESH => "MYSQLND_UH_MYSQLND_COM_REFRESH",
  MYSQLND_UH_MYSQLND_COM_SHUTDOWN => "MYSQLND_UH_MYSQLND_COM_SHUTDOWN",
  MYSQLND_UH_MYSQLND_COM_STATISTICS => "MYSQLND_UH_MYSQLND_COM_STATISTICS",
  MYSQLND_UH_MYSQLND_COM_PROCESS_INFO => "MYSQLND_UH_MYSQLND_COM_PROCESS_INFO",
  MYSQLND_UH_MYSQLND_COM_CONNECT => "MYSQLND_UH_MYSQLND_COM_CONNECT",
  MYSQLND_UH_MYSQLND_COM_PROCESS_KILL => "MYSQLND_UH_MYSQLND_COM_PROCESS_KILL",
  MYSQLND_UH_MYSQLND_COM_DEBUG => "MYSQLND_UH_MYSQLND_COM_DEBUG",
  MYSQLND_UH_MYSQLND_COM_PING => "MYSQLND_UH_MYSQLND_COM_PING",
  MYSQLND_UH_MYSQLND_COM_TIME => "MYSQLND_UH_MYSQLND_COM_TIME",
  MYSQLND_UH_MYSQLND_COM_DELAYED_INSERT => "MYSQLND_UH_MYSQLND_COM_DELAYED_INSERT",
  MYSQLND_UH_MYSQLND_COM_CHANGE_USER => "MYSQLND_UH_MYSQLND_COM_CHANGE_USER",
  MYSQLND_UH_MYSQLND_COM_BINLOG_DUMP => "MYSQLND_UH_MYSQLND_COM_BINLOG_DUMP",
  MYSQLND_UH_MYSQLND_COM_TABLE_DUMP => "MYSQLND_UH_MYSQLND_COM_TABLE_DUMP",
  MYSQLND_UH_MYSQLND_COM_CONNECT_OUT => "MYSQLND_UH_MYSQLND_COM_CONNECT_OUT",
  MYSQLND_UH_MYSQLND_COM_REGISTER_SLAVED => "MYSQLND_UH_MYSQLND_COM_REGISTER_SLAVED",
  MYSQLND_UH_MYSQLND_COM_STMT_PREPARE => "MYSQLND_UH_MYSQLND_COM_STMT_PREPARE",
  MYSQLND_UH_MYSQLND_COM_STMT_EXECUTE => "MYSQLND_UH_MYSQLND_COM_STMT_EXECUTE",
  MYSQLND_UH_MYSQLND_COM_STMT_SEND_LONG_DATA => "MYSQLND_UH_MYSQLND_COM_STMT_SEND_LONG_DATA",
  MYSQLND_UH_MYSQLND_COM_STMT_CLOSE => "MYSQLND_UH_MYSQLND_COM_STMT_CLOSE",
  MYSQLND_UH_MYSQLND_COM_STMT_RESET => "MYSQLND_UH_MYSQLND_COM_STMT_RESET",
  MYSQLND_UH_MYSQLND_COM_SET_OPTION => "MYSQLND_UH_MYSQLND_COM_SET_OPTION",
  MYSQLND_UH_MYSQLND_COM_STMT_FETCH => "MYSQLND_UH_MYSQLND_COM_STMT_FETCH",
  MYSQLND_UH_MYSQLND_COM_DAEMON => "MYSQLND_UH_MYSQLND_COM_DAEMON",
  MYSQLND_UH_MYSQLND_COM_END => "MYSQLND_UH_MYSQLND_COM_END",
 );
 return (isset($mapping[$command])) ? $mapping[$command] : 'unknown';
}

function ok_packet_2_string($ok_packet) {
 $mapping = array(
  MYSQLND_UH_MYSQLND_PROT_GREET_PACKET => "MYSQLND_UH_MYSQLND_PROT_GREET_PACKET",
  MYSQLND_UH_MYSQLND_PROT_AUTH_PACKET => "MYSQLND_UH_MYSQLND_PROT_AUTH_PACKET",
  MYSQLND_UH_MYSQLND_PROT_OK_PACKET => "MYSQLND_UH_MYSQLND_PROT_OK_PACKET",
  MYSQLND_UH_MYSQLND_PROT_EOF_PACKET => "MYSQLND_UH_MYSQLND_PROT_EOF_PACKET",
  MYSQLND_UH_MYSQLND_PROT_CMD_PACKET => "MYSQLND_UH_MYSQLND_PROT_CMD_PACKET",
  MYSQLND_UH_MYSQLND_PROT_RSET_HEADER_PACKET => "MYSQLND_UH_MYSQLND_PROT_RSET_HEADER_PACKET",
  MYSQLND_UH_MYSQLND_PROT_RSET_FLD_PACKET => "MYSQLND_UH_MYSQLND_PROT_RSET_FLD_PACKET",
  MYSQLND_UH_MYSQLND_PROT_ROW_PACKET => "MYSQLND_UH_MYSQLND_PROT_ROW_PACKET",
  MYSQLND_UH_MYSQLND_PROT_STATS_PACKET => "MYSQLND_UH_MYSQLND_PROT_STATS_PACKET",
  MYSQLND_UH_MYSQLND_PREPARE_RESP_PACKET => "MYSQLND_UH_MYSQLND_PREPARE_RESP_PACKET",
  MYSQLND_UH_MYSQLND_CHG_USER_RESP_PACKET => "MYSQLND_UH_MYSQLND_CHG_USER_RESP_PACKET",
  MYSQLND_UH_MYSQLND_PROT_LAST => "MYSQLND_UH_MYSQLND_PROT_LAST",
 );
 return (isset($mapping[$ok_packet])) ? $mapping[$ok_packet] : 'unknown';
}

class proxy extends MysqlndUhConnection {
 public function simpleCommand($conn, $command, $arg, $ok_packet, $silent, $ignore_upsert_status) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  printf("Command '%s'\n", server_cmd_2_string($command));
  printf("OK packet '%s'\n",  ok_packet_2_string($ok_packet));
  $ret = parent::simpleCommand($conn, $command, $arg, $ok_packet, $silent, $ignore_upsert_status);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());
$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->query("SELECT 1");
?>

以上例程会输出：

proxy::simpleCommand(array (
  0 => NULL,
  1 => 3,
  2 => 'SELECT 1',
  3 => 13,
  4 => false,
  5 => false,
))
Command 'MYSQLND_UH_MYSQLND_COM_QUERY'
OK packet 'MYSQLND_UH_MYSQLND_PROT_LAST'
proxy::simpleCommand returns true
:)proxy::simpleCommand(array (
  0 => NULL,
  1 => 1,
  2 => '',
  3 => 13,
  4 => true,
  5 => true,
))
Command 'MYSQLND_UH_MYSQLND_COM_QUIT'
OK packet 'MYSQLND_UH_MYSQLND_PROT_LAST'
proxy::simpleCommand returns true

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections

MysqlndUhConnection::shutdownServer
MysqlndUhConnection::simpleCommandHandleResponse
MysqlndUhConnection


Process a response for a basic COM_* command send to the client

MysqlndUhConnection::simpleCommand
MysqlndUhConnection::sslSet
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::simpleCommandHandleResponse

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::simpleCommandHandleResponse — Process a response for a basic COM_* command send to the client

说明

public bool MysqlndUhConnection::simpleCommandHandleResponse ( mysqlnd_connection $connection , int $ok_packet , bool $silent , int $command , bool $ignore_upsert_status )

Process a response for a basic COM_* command send to the client.

参数

connection

Mysqlnd connection handle. Do not modify!

ok_packet

The OK packet type.

silent

Whether mysqlnd may emit errors.

command

The COM command to process results from.

ignore_upsert_status

Whether to ignore UPDATE/INSERT status.

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::simpleCommandHandleResponse() example

<?php
function server_cmd_2_string($command) {
 $mapping = array(
  MYSQLND_UH_MYSQLND_COM_SLEEP => "MYSQLND_UH_MYSQLND_COM_SLEEP",
  MYSQLND_UH_MYSQLND_COM_QUIT => "MYSQLND_UH_MYSQLND_COM_QUIT",
  MYSQLND_UH_MYSQLND_COM_INIT_DB => "MYSQLND_UH_MYSQLND_COM_INIT_DB",
  MYSQLND_UH_MYSQLND_COM_QUERY => "MYSQLND_UH_MYSQLND_COM_QUERY",
  MYSQLND_UH_MYSQLND_COM_FIELD_LIST => "MYSQLND_UH_MYSQLND_COM_FIELD_LIST",
  MYSQLND_UH_MYSQLND_COM_CREATE_DB => "MYSQLND_UH_MYSQLND_COM_CREATE_DB",
  MYSQLND_UH_MYSQLND_COM_DROP_DB => "MYSQLND_UH_MYSQLND_COM_DROP_DB",
  MYSQLND_UH_MYSQLND_COM_REFRESH => "MYSQLND_UH_MYSQLND_COM_REFRESH",
  MYSQLND_UH_MYSQLND_COM_SHUTDOWN => "MYSQLND_UH_MYSQLND_COM_SHUTDOWN",
  MYSQLND_UH_MYSQLND_COM_STATISTICS => "MYSQLND_UH_MYSQLND_COM_STATISTICS",
  MYSQLND_UH_MYSQLND_COM_PROCESS_INFO => "MYSQLND_UH_MYSQLND_COM_PROCESS_INFO",
  MYSQLND_UH_MYSQLND_COM_CONNECT => "MYSQLND_UH_MYSQLND_COM_CONNECT",
  MYSQLND_UH_MYSQLND_COM_PROCESS_KILL => "MYSQLND_UH_MYSQLND_COM_PROCESS_KILL",
  MYSQLND_UH_MYSQLND_COM_DEBUG => "MYSQLND_UH_MYSQLND_COM_DEBUG",
  MYSQLND_UH_MYSQLND_COM_PING => "MYSQLND_UH_MYSQLND_COM_PING",
  MYSQLND_UH_MYSQLND_COM_TIME => "MYSQLND_UH_MYSQLND_COM_TIME",
  MYSQLND_UH_MYSQLND_COM_DELAYED_INSERT => "MYSQLND_UH_MYSQLND_COM_DELAYED_INSERT",
  MYSQLND_UH_MYSQLND_COM_CHANGE_USER => "MYSQLND_UH_MYSQLND_COM_CHANGE_USER",
  MYSQLND_UH_MYSQLND_COM_BINLOG_DUMP => "MYSQLND_UH_MYSQLND_COM_BINLOG_DUMP",
  MYSQLND_UH_MYSQLND_COM_TABLE_DUMP => "MYSQLND_UH_MYSQLND_COM_TABLE_DUMP",
  MYSQLND_UH_MYSQLND_COM_CONNECT_OUT => "MYSQLND_UH_MYSQLND_COM_CONNECT_OUT",
  MYSQLND_UH_MYSQLND_COM_REGISTER_SLAVED => "MYSQLND_UH_MYSQLND_COM_REGISTER_SLAVED",
  MYSQLND_UH_MYSQLND_COM_STMT_PREPARE => "MYSQLND_UH_MYSQLND_COM_STMT_PREPARE",
  MYSQLND_UH_MYSQLND_COM_STMT_EXECUTE => "MYSQLND_UH_MYSQLND_COM_STMT_EXECUTE",
  MYSQLND_UH_MYSQLND_COM_STMT_SEND_LONG_DATA => "MYSQLND_UH_MYSQLND_COM_STMT_SEND_LONG_DATA",
  MYSQLND_UH_MYSQLND_COM_STMT_CLOSE => "MYSQLND_UH_MYSQLND_COM_STMT_CLOSE",
  MYSQLND_UH_MYSQLND_COM_STMT_RESET => "MYSQLND_UH_MYSQLND_COM_STMT_RESET",
  MYSQLND_UH_MYSQLND_COM_SET_OPTION => "MYSQLND_UH_MYSQLND_COM_SET_OPTION",
  MYSQLND_UH_MYSQLND_COM_STMT_FETCH => "MYSQLND_UH_MYSQLND_COM_STMT_FETCH",
  MYSQLND_UH_MYSQLND_COM_DAEMON => "MYSQLND_UH_MYSQLND_COM_DAEMON",
  MYSQLND_UH_MYSQLND_COM_END => "MYSQLND_UH_MYSQLND_COM_END",
 );
 return (isset($mapping[$command])) ? $mapping[$command] : 'unknown';
}

function ok_packet_2_string($ok_packet) {
 $mapping = array(
  MYSQLND_UH_MYSQLND_PROT_GREET_PACKET => "MYSQLND_UH_MYSQLND_PROT_GREET_PACKET",
  MYSQLND_UH_MYSQLND_PROT_AUTH_PACKET => "MYSQLND_UH_MYSQLND_PROT_AUTH_PACKET",
  MYSQLND_UH_MYSQLND_PROT_OK_PACKET => "MYSQLND_UH_MYSQLND_PROT_OK_PACKET",
  MYSQLND_UH_MYSQLND_PROT_EOF_PACKET => "MYSQLND_UH_MYSQLND_PROT_EOF_PACKET",
  MYSQLND_UH_MYSQLND_PROT_CMD_PACKET => "MYSQLND_UH_MYSQLND_PROT_CMD_PACKET",
  MYSQLND_UH_MYSQLND_PROT_RSET_HEADER_PACKET => "MYSQLND_UH_MYSQLND_PROT_RSET_HEADER_PACKET",
  MYSQLND_UH_MYSQLND_PROT_RSET_FLD_PACKET => "MYSQLND_UH_MYSQLND_PROT_RSET_FLD_PACKET",
  MYSQLND_UH_MYSQLND_PROT_ROW_PACKET => "MYSQLND_UH_MYSQLND_PROT_ROW_PACKET",
  MYSQLND_UH_MYSQLND_PROT_STATS_PACKET => "MYSQLND_UH_MYSQLND_PROT_STATS_PACKET",
  MYSQLND_UH_MYSQLND_PREPARE_RESP_PACKET => "MYSQLND_UH_MYSQLND_PREPARE_RESP_PACKET",
  MYSQLND_UH_MYSQLND_CHG_USER_RESP_PACKET => "MYSQLND_UH_MYSQLND_CHG_USER_RESP_PACKET",
  MYSQLND_UH_MYSQLND_PROT_LAST => "MYSQLND_UH_MYSQLND_PROT_LAST",
 );
 return (isset($mapping[$ok_packet])) ? $mapping[$ok_packet] : 'unknown';
}

class proxy extends MysqlndUhConnection {
 public function simpleCommandHandleResponse($conn, $ok_packet, $silent, $command, $ignore_upsert_status) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  printf("Command '%s'\n", server_cmd_2_string($command));
  printf("OK packet '%s'\n",  ok_packet_2_string($ok_packet));
  $ret = parent::simpleCommandHandleResponse($conn, $ok_packet, $silent, $command, $ignore_upsert_status);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());
$mysql = mysql_connect("localhost", "root", "");
mysql_query("SELECT 1 FROM DUAL", $mysql);
?>

以上例程会输出：

proxy::simpleCommandHandleResponse(array (
  0 => NULL,
  1 => 5,
  2 => false,
  3 => 27,
  4 => true,
))
Command 'MYSQLND_UH_MYSQLND_COM_SET_OPTION'
OK packet 'MYSQLND_UH_MYSQLND_PROT_EOF_PACKET'
proxy::simpleCommandHandleResponse returns true

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections

MysqlndUhConnection::simpleCommand
MysqlndUhConnection::sslSet
MysqlndUhConnection


Used for establishing secure connections using SSL

MysqlndUhConnection::simpleCommandHandleResponse
MysqlndUhConnection::stmtInit
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::sslSet

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::sslSet — Used for establishing secure connections using SSL

说明

public bool MysqlndUhConnection::sslSet ( mysqlnd_connection $connection , string $key , string $cert , string $ca , string $capath , string $cipher )

Used for establishing secure connections using SSL.

参数

connection

Mysqlnd connection handle. Do not modify!

key

The path name to the key file.

cert

The path name to the certificate file.

ca

The path name to the certificate authority file.

capath

The pathname to a directory that contains trusted SSL CA certificates in PEM format.

cipher

A list of allowable ciphers to use for SSL encryption.

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::sslSet() example

<?php
class proxy extends MysqlndUhConnection {
 public function sslSet($conn, $key, $cert, $ca, $capath, $cipher) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::sslSet($conn, $key, $cert, $ca, $capath, $cipher);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());
$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->ssl_set("key", "cert", "ca", "capath", "cipher");
?>

以上例程会输出：

proxy::sslSet(array (
  0 => NULL,
  1 => 'key',
  2 => 'cert',
  3 => 'ca',
  4 => 'capath',
  5 => 'cipher',
))
proxy::sslSet returns true

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_ssl_set() - Used for establishing secure connections using SSL

MysqlndUhConnection::simpleCommandHandleResponse
MysqlndUhConnection::stmtInit
MysqlndUhConnection


Initializes a statement and returns a resource for use with mysqli_statement::prepare

MysqlndUhConnection::sslSet
MysqlndUhConnection::storeResult
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::stmtInit

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::stmtInit — Initializes a statement and returns a resource for use with mysqli_statement::prepare

说明

public resource MysqlndUhConnection::stmtInit ( mysqlnd_connection $connection )

Initializes a statement and returns a resource for use with mysqli_statement::prepare.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Resource of type Mysqlnd Prepared Statement (internal only - you must not modify it!). The documentation may also refer to such resources using the alias name mysqlnd_prepared_statement.

范例

Example #1 MysqlndUhConnection::stmtInit() example

<?php
class proxy extends MysqlndUhConnection {
 public function stmtInit($res) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  var_dump($res);
  $ret = parent::stmtInit($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  var_dump($ret);
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());
$mysqli = new mysqli("localhost", "root", "", "test");
$stmt = $mysqli->prepare("SELECT 1 AS _one FROM DUAL");
$stmt->execute();
$one = NULL;
$stmt->bind_result($one);
$stmt->fetch();
var_dump($one);
?>

以上例程会输出：

proxy::stmtInit(array (
  0 => NULL,
))
resource(19) of type (Mysqlnd Connection)
proxy::stmtInit returns NULL
resource(246) of type (Mysqlnd Prepared Statement (internal only - you must not modify it!))
int(1)

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_stmt_init() - 初始化一条语句并返回一个用于mysqli_stmt_prepare(调用)的对象

MysqlndUhConnection::sslSet
MysqlndUhConnection::storeResult
MysqlndUhConnection


Transfers a result set from the last query

MysqlndUhConnection::stmtInit
MysqlndUhConnection::txCommit
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::storeResult

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::storeResult — Transfers a result set from the last query

说明

public resource MysqlndUhConnection::storeResult ( mysqlnd_connection $connection )

Transfers a result set from the last query.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Resource of type Mysqlnd Resultset (internal only - you must not modify it!). The documentation may also refer to such resources using the alias name mysqlnd_resultset.

范例

Example #1 MysqlndUhConnection::storeResult() example

<?php
class proxy extends MysqlndUhConnection {
 public function storeResult($res) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::storeResult($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  var_dump($ret);
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
$res = $mysqli->query("SELECT 'Also called buffered result' AS _msg FROM DUAL");
var_dump($res->fetch_assoc());

$mysqli->real_query("SELECT 'Good morning!' AS _msg FROM DUAL");
$res = $mysqli->store_result();
var_dump($res->fetch_assoc());
?>

以上例程会输出：

proxy::storeResult(array (
  0 => NULL,
))
proxy::storeResult returns NULL
resource(475) of type (Mysqlnd Resultset (internal only - you must not modify it!))
array(1) {
  ["_msg"]=>
  string(27) "Also called buffered result"
}
proxy::storeResult(array (
  0 => NULL,
))
proxy::storeResult returns NULL
resource(730) of type (Mysqlnd Resultset (internal only - you must not modify it!))
array(1) {
  ["_msg"]=>
  string(13) "Good morning!"
}

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_store_result() - Transfers a result set from the last query
  • mysqli_real_query() - 执行一个mysql查询

MysqlndUhConnection::stmtInit
MysqlndUhConnection::txCommit
MysqlndUhConnection


Commits the current transaction

MysqlndUhConnection::storeResult
MysqlndUhConnection::txRollback
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::txCommit

(PECL mysqlnd-uh >= 1.0.1-alpha, PHP >= 5.4.0)

MysqlndUhConnection::txCommit — Commits the current transaction

说明

public bool MysqlndUhConnection::txCommit ( mysqlnd_connection $connection )

Commits the current transaction.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::txCommit() example

<?php
class proxy extends MysqlndUhConnection {
 public function txCommit($res) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::txCommit($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->commit();
?>

以上例程会输出：

proxy::txCommit(array (
  0 => NULL,
))
proxy::txCommit returns true

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_commit() - 提交一个事务

MysqlndUhConnection::storeResult
MysqlndUhConnection::txRollback
MysqlndUhConnection


Rolls back current transaction

MysqlndUhConnection::txCommit
MysqlndUhConnection::useResult
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::txRollback

(PECL mysqlnd-uh >= 1.0.1-alpha, PHP >= 5.4.0)

MysqlndUhConnection::txRollback — Rolls back current transaction

说明

public bool MysqlndUhConnection::txRollback ( mysqlnd_connection $connection )

Rolls back current transaction.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhConnection::txRollback() example

<?php
class proxy extends MysqlndUhConnection {
 public function txRollback($res) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::txRollback($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->rollback();
?>

以上例程会输出：

proxy::txRollback(array (
  0 => NULL,
))
proxy::txRollback returns true

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_commit() - 提交一个事务

MysqlndUhConnection::txCommit
MysqlndUhConnection::useResult
MysqlndUhConnection


Initiate a result set retrieval

MysqlndUhConnection::txRollback
MysqlndUhPreparedStatement
MysqlndUhConnection
PHP Manual

MysqlndUhConnection::useResult

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhConnection::useResult — Initiate a result set retrieval

说明

public resource MysqlndUhConnection::useResult ( mysqlnd_connection $connection )

Initiate a result set retrieval.

参数

connection

Mysqlnd connection handle. Do not modify!

返回值

Resource of type Mysqlnd Resultset (internal only - you must not modify it!). The documentation may also refer to such resources using the alias name mysqlnd_resultset.

范例

Example #1 MysqlndUhConnection::useResult() example

<?php
class proxy extends MysqlndUhConnection {
 public function useResult($res) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $ret = parent::useResult($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  var_dump($ret);
  return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->real_query("SELECT 'Good morning!' AS _msg FROM DUAL");
$res = $mysqli->use_result();
var_dump($res->fetch_assoc());
?>

以上例程会输出：

proxy::useResult(array (
  0 => NULL,
))
proxy::useResult returns NULL
resource(425) of type (Mysqlnd Resultset (internal only - you must not modify it!))
array(1) {
  ["_msg"]=>
  string(13) "Good morning!"
}

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqli_use_result() - Initiate a result set retrieval
  • mysqli_real_query() - 执行一个mysql查询

MysqlndUhConnection::txRollback
MysqlndUhPreparedStatement
MysqlndUhConnection


The MysqlndUhPreparedStatement class

(PECL mysqlnd-uh >= 1.0.0-alpha)

简介

类摘要

MysqlndUhPreparedStatement {
/* 方法 */
public __construct ( void )
public bool execute ( mysqlnd_prepared_statement $statement )
public bool prepare ( mysqlnd_prepared_statement $statement , string $query )
}

Table of Contents

  • MysqlndUhPreparedStatement::__construct — The __construct purpose
  • MysqlndUhPreparedStatement::execute — Executes a prepared Query
  • MysqlndUhPreparedStatement::prepare — Prepare an SQL statement for execution
MysqlndUhConnection::useResult
MysqlndUhPreparedStatement::__construct
mysqlnd_uh


The __construct purpose

MysqlndUhPreparedStatement
MysqlndUhPreparedStatement::execute
MysqlndUhPreparedStatement
PHP Manual

MysqlndUhPreparedStatement::__construct

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhPreparedStatement::__construct — The __construct purpose

说明

public MysqlndUhPreparedStatement::__construct ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

MysqlndUhPreparedStatement
MysqlndUhPreparedStatement::execute
MysqlndUhPreparedStatement


Executes a prepared Query

MysqlndUhPreparedStatement::__construct
MysqlndUhPreparedStatement::prepare
MysqlndUhPreparedStatement
PHP Manual

MysqlndUhPreparedStatement::execute

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhPreparedStatement::execute — Executes a prepared Query

说明

public bool MysqlndUhPreparedStatement::execute ( mysqlnd_prepared_statement $statement )

Executes a prepared Query.

参数

statement

Mysqlnd prepared statement handle. Do not modify! Resource of type Mysqlnd Prepared Statement (internal only - you must not modify it!).

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhPreparedStatement::execute() example

<?php
class stmt_proxy extends MysqlndUhPreparedStatement {
 public function execute($res) {
  printf("%s(", __METHOD__);
  var_dump($res);
  printf(")\n");
  $ret = parent::execute($res);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  var_dump($ret);
  return $ret;
 }
}
mysqlnd_uh_set_statement_proxy(new stmt_proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
$stmt = $mysqli->prepare("SELECT 'Labskaus' AS _msg FROM DUAL");
$stmt->execute();
$msg = NULL;
$stmt->bind_result($msg);
$stmt->fetch();
var_dump($msg);
?>

以上例程会输出：

stmt_proxy::execute(resource(256) of type (Mysqlnd Prepared Statement (internal only - you must not modify it!))
)
stmt_proxy::execute returns true
bool(true)
string(8) "Labskaus"

参见

  • mysqlnd_uh_set_statement_proxy() - Installs a proxy for mysqlnd statements
  • mysqli_stmt_execute() - Executes a prepared Query

MysqlndUhPreparedStatement::__construct
MysqlndUhPreparedStatement::prepare
MysqlndUhPreparedStatement


Prepare an SQL statement for execution

MysqlndUhPreparedStatement::execute
Mysqlnd_uh 函数
MysqlndUhPreparedStatement
PHP Manual

MysqlndUhPreparedStatement::prepare

(PECL mysqlnd-uh >= 1.0.0-alpha)

MysqlndUhPreparedStatement::prepare — Prepare an SQL statement for execution

说明

public bool MysqlndUhPreparedStatement::prepare ( mysqlnd_prepared_statement $statement , string $query )

Prepare an SQL statement for execution.

参数

statement

Mysqlnd prepared statement handle. Do not modify! Resource of type Mysqlnd Prepared Statement (internal only - you must not modify it!).

query

The query to be prepared.

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 MysqlndUhPreparedStatement::prepare() example

<?php
class stmt_proxy extends MysqlndUhPreparedStatement {
 public function prepare($res, $query) {
  printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
  $query = "SELECT 'No more you-know-what-I-mean for lunch, please' AS _msg FROM DUAL";
  $ret = parent::prepare($res, $query);
  printf("%s returns %s\n", __METHOD__, var_export($ret, true));
  var_dump($ret);
  return $ret;
 }
}
mysqlnd_uh_set_statement_proxy(new stmt_proxy());

$mysqli = new mysqli("localhost", "root", "", "test");
$stmt = $mysqli->prepare("SELECT 'Labskaus' AS _msg FROM DUAL");
$stmt->execute();
$msg = NULL;
$stmt->bind_result($msg);
$stmt->fetch();
var_dump($msg);
?>

以上例程会输出：

stmt_proxy::prepare(array (
  0 => NULL,
  1 => 'SELECT \'Labskaus\' AS _msg FROM DUAL',
))
stmt_proxy::prepare returns true
bool(true)
string(46) "No more you-know-what-I-mean for lunch, please"

参见

  • mysqlnd_uh_set_statement_proxy() - Installs a proxy for mysqlnd statements
  • mysqli_stmt_prepare() - Prepare an SQL statement for execution
  • mysqli_prepare() - Prepare an SQL statement for execution

MysqlndUhPreparedStatement::execute
Mysqlnd_uh 函数
MysqlndUhPreparedStatement


Mysqlnd_uh 函数

Table of Contents

  • mysqlnd_uh_convert_to_mysqlnd — Converts a MySQL connection handle into a mysqlnd connection handle
  • mysqlnd_uh_set_connection_proxy — Installs a proxy for mysqlnd connections
  • mysqlnd_uh_set_statement_proxy — Installs a proxy for mysqlnd statements
MysqlndUhPreparedStatement::prepare
mysqlnd_uh_convert_to_mysqlnd
mysqlnd_uh


Converts a MySQL connection handle into a mysqlnd connection handle

Mysqlnd_uh 函数
mysqlnd_uh_set_connection_proxy
Mysqlnd_uh 函数
PHP Manual

mysqlnd_uh_convert_to_mysqlnd

(PECL mysqlnd-uh >= 1.0.0-alpha)

mysqlnd_uh_convert_to_mysqlnd — Converts a MySQL connection handle into a mysqlnd connection handle

说明

resource mysqlnd_uh_convert_to_mysqlnd ( mysqli &$mysql_connection )

Converts a MySQL connection handle into a mysqlnd connection handle. After conversion you can execute mysqlnd library calls on the connection handle. This can be used to access mysqlnd functionality not made available through user space API calls.

The function can be disabled with mysqlnd_uh.enable. If mysqlnd_uh.enable is set to FALSE the function will not install the proxy and always return TRUE. Additionally, an error of the type E_WARNING may be emitted. The error message may read like PHP Warning: mysqlnd_uh_convert_to_mysqlnd(): (Mysqlnd User Handler) The plugin has been disabled by setting the configuration parameter mysqlnd_uh.enable = false. You are not allowed to call this function [...].

参数

MySQL connection handle

A MySQL connection handle of type mysql, mysqli or PDO_MySQL.

返回值

A mysqlnd connection handle.

更新日志

版本 | 说明
5.4.0 | The mysql_connection parameter can now be of type mysql, PDO_MySQL, or mysqli. Before, only the mysqli type was allowed.

范例

Example #1 mysqlnd_uh_convert_to_mysqlnd() example

<?php
/* PDO user API gives no access to connection thread id */
$mysql_connection = new PDO("mysql:host=localhost;dbname=test", "root", "");

/* Convert PDO MySQL handle to mysqlnd handle */
$mysqlnd = mysqlnd_uh_convert_to_mysqlnd($mysql_connection);

/* Create Proxy to call mysqlnd connection class methods */
$obj = new MySQLndUHConnection();
/* Call mysqlnd_conn::get_thread_id */
var_dump($obj->getThreadId($mysqlnd));

/* Use SQL to fetch connection thread id */
var_dump($mysql_connection->query("SELECT CONNECTION_ID()")->fetchAll());
?>

以上例程会输出：

int(27054)
array(1) {
  [0]=>
  array(2) {
    ["CONNECTION_ID()"]=>
    string(5) "27054"
    [0]=>
    string(5) "27054"
  }
}

参见

  • mysqlnd_uh.enable

Mysqlnd_uh 函数
mysqlnd_uh_set_connection_proxy
Mysqlnd_uh 函数


Installs a proxy for mysqlnd connections

mysqlnd_uh_convert_to_mysqlnd
mysqlnd_uh_set_statement_proxy
Mysqlnd_uh 函数
PHP Manual

mysqlnd_uh_set_connection_proxy

(PECL mysqlnd-uh >= 1.0.0-alpha)

mysqlnd_uh_set_connection_proxy — Installs a proxy for mysqlnd connections

说明

bool mysqlnd_uh_set_connection_proxy ( MysqlndUhConnection &$connection_proxy [, mysqli &$mysqli_connection ] )

Installs a proxy object to hook mysqlnd's connection objects methods. Once installed, the proxy will be used for all MySQL connections opened with mysqli, mysql or PDO_MYSQL, assuming that the listed extensions are compiled to use the mysqlnd library.

The function can be disabled with mysqlnd_uh.enable. If mysqlnd_uh.enable is set to FALSE the function will not install the proxy and always return TRUE. Additionally, an error of the type E_WARNING may be emitted. The error message may read like PHP Warning: mysqlnd_uh_set_connection_proxy(): (Mysqlnd User Handler) The plugin has been disabled by setting the configuration parameter mysqlnd_uh.enable = false. The proxy has not been installed [...].

参数

connection_proxy

A proxy object of type MysqlndUhConnection.

mysqli_connection

Object of type mysqli. If given, the proxy will be set for this particular connection only.

返回值

Returns TRUE on success. Otherwise, returns FALSE

范例

Example #1 mysqlnd_uh_set_connection_proxy() example

<?php
$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->query("SELECT 'No proxy installed, yet'");

class proxy extends MysqlndUhConnection {
 public function query($res, $query) {
   printf("%s(%s)\n", __METHOD__, var_export(func_get_args(), true));
   $ret = parent::query($res, $query);
   printf("%s returns %s\n", __METHOD__, var_export($ret, true));
   return $ret;
 }
}
mysqlnd_uh_set_connection_proxy(new proxy());

$mysqli->query("SELECT 'mysqlnd rocks!'");

$mysql = mysql_connect("localhost", "root", "", "test");
mysql_query("SELECT 'Ahoy Andrey!'", $mysql);

$pdo = new PDO("mysql:host=localhost;dbname=test", "root", "");
$pdo->query("SELECT 'Moin Johannes!'");
?>

以上例程会输出：

proxy::query(array (
  0 => NULL,
  1 => 'SELECT \'mysqlnd rocks!\'',
))
proxy::query returns true
proxy::query(array (
  0 => NULL,
  1 => 'SELECT \'Ahoy Andrey!\'',
))
proxy::query returns true
proxy::query(array (
  0 => NULL,
  1 => 'SELECT \'Moin Johannes!\'',
))
proxy::query returns true

参见

  • mysqlnd_uh_set_statement_proxy() - Installs a proxy for mysqlnd statements
  • mysqlnd_uh.enable

mysqlnd_uh_convert_to_mysqlnd
mysqlnd_uh_set_statement_proxy
Mysqlnd_uh 函数


Installs a proxy for mysqlnd statements

mysqlnd_uh_set_connection_proxy
Change History
Mysqlnd_uh 函数
PHP Manual

mysqlnd_uh_set_statement_proxy

(PECL mysqlnd-uh >= 1.0.0-alpha)

mysqlnd_uh_set_statement_proxy — Installs a proxy for mysqlnd statements

说明

bool mysqlnd_uh_set_statement_proxy ( MysqlndUhStatement &$statement_proxy )

Installs a proxy for mysqlnd statements. The proxy object will be used for all mysqlnd prepared statement objects, regardless which PHP MySQL extension (mysqli, mysql, PDO_MYSQL) has created them as long as the extension is compiled to use the mysqlnd library.

The function can be disabled with mysqlnd_uh.enable. If mysqlnd_uh.enable is set to FALSE the function will not install the proxy and always return TRUE. Additionally, an error of the type E_WARNING may be emitted. The error message may read like PHP Warning: mysqlnd_uh_set_statement_proxy(): (Mysqlnd User Handler) The plugin has been disabled by setting the configuration parameter mysqlnd_uh.enable = false. The proxy has not been installed [...].

参数

statement_proxy

The mysqlnd statement proxy object of type MysqlndUhStatement

返回值

Returns TRUE on success. Otherwise, returns FALSE

参见

  • mysqlnd_uh_set_connection_proxy() - Installs a proxy for mysqlnd connections
  • mysqlnd_uh.enable

mysqlnd_uh_set_connection_proxy
Change History
Mysqlnd_uh 函数


Change History

Table of Contents

  • PECL/mysqlnd_uh 1.0 series

The Change History lists major changes users need to be aware if upgrading from one version to another. It is a high level summary of selected changes that may impact applications or might even break backwards compatibility. See also the CHANGES file contained in the source for additional changelog information. The commit history is also available.

mysqlnd_uh_set_statement_proxy
PECL/mysqlnd_uh 1.0 series
mysqlnd_uh


PECL/mysqlnd_uh 1.0 series

1.0.1-alpha

  • Release date: TBD
  • Motto/theme: bug fix release

Feature changes

  • Support of PHP 5.4.0 or later.
  • BC break: MysqlndUhConnection::changeUser() requires additional passwd_len parameter.
  • BC break: MYSQLND_UH_VERSION_STR renamed to MYSQLND_UH_VERSION. MYSQLND_UH_VERSION renamed to MYSQLND_UH_VERSION_ID.
  • BC break: mysqlnd_uh.enabled configuration setting renamed to mysqlnd_uh.enable.

1.0.0-alpha

  • Release date: 08/2010
  • Motto/theme: Initial release

Change History
mysqlnd_mux
Change History


Mysqlnd connection multiplexing plugin

  • 简介
  • Concepts
    • Architecture
    • Connection pool
    • Sharing connections
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
  • 预定义常量
  • Change History
    • PECL/mysqlnd_mux 1.0 series
PECL/mysqlnd_uh 1.0 series
简介
MySQL


简介

The mysqlnd multiplexing plugin (mysqlnd_mux) multiplexes MySQL connections established by all PHP MySQL extensions that use the MySQL native driver (mysqlnd) for PHP.

The MySQL native driver for PHP features an internal C API for plugins, such as the connection multiplexing plugin, which can extend the functionality of mysqlnd. See the mysqlnd for additional details about its benefits over the MySQL Client Library libmysqlclient.

Mysqlnd plugins like mysqlnd_mux operate, for the most part, transparently from a user perspective. The connection multiplexing plugin supports all PHP applications, and all MySQL PHP extensions. It does not change existing APIs. Therefore, it can easily be used with existing PHP applications.

Note:

This is a proof-of-concept. All features are at an early stage. Not all kinds of queries are handled by the plugin yet. Thus, it cannot be used in a drop-in fashion at the moment.

Please, do not use this version in production environments.

Key Features

The key features of mysqlnd_mux are as follows:

  • Transparent and therefore easy to use:

    • Supports all of the PHP MySQL extensions.

    • Little to no application changes are required, dependent on the required usage scenario.

  • Reduces server load and connection establishment latency:

    • Opens less connections to the MySQL server.

    • Less connections to MySQL mean less work for the MySQL server. In a client-server environment scaling the server is often more difficult than scaling the client. Multiplexing helps with horizontal scale-out (scale-by-client).

    • Pooling saves connection time.

    • Multiplexed connection: multiple user handles share the same network connection. Once opened, a network connection is cached and shared among multiple user handles. There is a 1:n relationship between internal network connection and user connection handles.

    • Persistent connection: a network connection is kept open at the end of the web request, if the PHP deployment model allows. Thus, subsequently web requests can reuse a previously opened connection. Like other resources, network connections are bound to the scope of a process. Thus, they can be reused for all web requests served by a process.

Limitations

The proof-of-concept does not support unbuffered queries, prepared statements, and asynchronous queries.

The connection pool is using a combination of the transport method and hostname as keys. As a consequence, two connections to the same host using the same transport method (TCP/IP, Unix socket, Windows named pipe) will be linked to the same pooled connection even if username and password differ. Be aware of the possible security implications.

The proof-of-concept is transaction agnostic. It does not know about SQL transactions.

Note:

Applications must be aware of the consequences of connection sharing connections.

About the name mysqlnd_mux

The shortcut mysqlnd_mux stands for mysqlnd connection multiplexing plugin.

mysqlnd_mux
Concepts
mysqlnd_mux


Concepts

Table of Contents

  • Architecture
  • Connection pool
  • Sharing connections

This explains the architecture and related concepts for this plugin. Reading and understanding these concepts is required to successfully use this plugin.

简介
Architecture
mysqlnd_mux


Architecture

The mysqlnd connection multiplexing plugin is implemented as a PHP extension. It is written in C and operates under the hood of PHP. During the startup of the PHP interpreter, in the module initialization phase of the PHP engine, it gets registered as a mysqlnd plugin to replace specific mysqlnd C methods.

The mysqlnd library uses PHP streams to communicate with the MySQL server. PHP streams are accessed by the mysqlnd library through its net module. The mysqlnd connection multiplexing plugin proxies methods of the mysqlnd library net module to control opening and closing of network streams.

Upon opening a user connection to MySQL using the appropriate connection functions of either mysqli, PDO_MYSQL or ext/mysql, the plugin will search its connection pool for an open network connection. If the pool contains a network connection to the host specified by the connect function using the transport method requested (TCP/IP, Unix domain socket, Windows named pipe), the pooled connection is linked to the user handle. Otherwise, a new network connection is opened, put into the poolm and associated with the user connection handle. This way, multiple user handles can be linked to the same network connection.

Concepts
Connection pool
Concepts


Connection pool

The plugins connection pool is created when PHP initializes its modules (MINIT) and free'd when PHP shuts down the modules (MSHUTDOWN). This is the same as for persistent MySQL connections.

Depending on the deployment model, the pool is used for the duration of one or multiple web requests. Network connections are bound to the lifespan of an operating system level process. If the PHP process serves multiple web requests as it is the case for Fast-CGI or threaded web server deployments, then the pooled connections can be reused over multiple connections. Because multiplexing means sharing connections, it can even happen with a threaded deployment that two threads or two distinct web requests are linked to one pooled network connections.

A pooled connection is explicitly closed once the last reference to it is released. An implicit close happens when PHP shuts down its modules.

Architecture
Sharing connections
Concepts


Sharing connections

The PHP mysqlnd connection multiplexing plugin changes the relationship between a users connection handle and the underlying MySQL connection. Without the plugin, every MySQL connection belongs to exactly one user connection at a time. The multiplexing plugin changes. A MySQL connection is shared among multiple user handles. There no one-to-one relation if using the plugin.

Sharing pooled connections has an impact on the connection state. State changing operations from multiple user handles pointing to one MySQL connection are not isolated from each other. If, for example, a session variable is set through one user connection handle, the session variable becomes visible to all other user handles that reference the same underlying MySQL connection.

This is similar in concept to connection state related phenomens described for the PHP mysqlnd replication and load balancing plugin. Please, check the PECL/mysqlnd_ms documentation for more details on the state of a connection.

The proof-of-concept takes no measures to isolate multiplexed connections from each other.

Connection pool
安装／配置
Concepts


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
Sharing connections
需求
mysqlnd_mux


需求

PHP 5.5.0 or newer. Some advanced functionality requires PHP 5.5.0 or newer.

The mysqlnd_mux replication and load balancing plugin supports all PHP applications and all available PHP MySQL extensions (mysqli, mysql, PDO_MYSQL). The PHP MySQL extension must be configured to use mysqlnd in order to be able to use the mysqlnd_mux plugin for mysqlnd.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/mysqlnd_mux

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Mysqlnd_mux 配置选项
名字 | 默认 | 可修改范围 | 更新日志
mysqlnd_mux.enable | 0 | PHP_INI_SYSTEM |

这是配置指令的简短说明。

mysqlnd_mux.enable integer

Enables or disables the plugin. If disabled, the extension will not plug into mysqlnd to proxy internal mysqlnd C API calls.

安装
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

Other

The plugins version number can be obtained using MYSQLND_MUX_VERSION or MYSQLND_MUX_VERSION_ID. MYSQLND_MUX_VERSION is the string representation of the numerical version number MYSQLND_MUX_VERSION_ID, which is an integer such as 10000. Developers can calculate the version number as follows.

Version (part) | Example
Major*10000 | 1*10000 = 10000
Minor*100 | 0*100 = 0
Patch | 0 = 0
MYSQLND_MUX_VERSION_ID | 10000

MYSQLND_MUX_VERSION (string)
Plugin version string, for example, "1.0.0-prototype".
MYSQLND_MUX_VERSION_ID (integer)
Plugin version number, for example, 10000.

运行时配置
Change History
mysqlnd_mux


Change History

Table of Contents

  • PECL/mysqlnd_mux 1.0 series

This change history is a high level summary of selected changes that may impact applications and/or break backwards compatibility.

See also the CHANGES file in the source distribution for a complete list of changes.

预定义常量
PECL/mysqlnd_mux 1.0 series
mysqlnd_mux


PECL/mysqlnd_mux 1.0 series

1.0.0-pre-alpha

  • Release date: no package released, initial check-in 09/2012
  • Motto/theme: Proof of concept

Initial check-in. Essentially a demo of the mysqlnd plugin API.

Note:

This is the current development series. All features are at an early stage. Changes may happen at any time without prior notice. Please, do not use this version in production environments.

The documentation may not reflect all changes yet.

Change History
mysqlnd_memcache
Change History


Mysqlnd Memcache plugin

  • 简介
  • Quickstart and Examples
    • Setup
    • Usage
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
  • 预定义常量
  • Mysqlnd_memcache 函数
    • mysqlnd_memcache_get_config — Returns information about the plugin configuration
    • mysqlnd_memcache_set — Associate a MySQL connection with a Memcache connection
  • Change History
    • PECL/mysqlnd_memcache 1.0 series
PECL/mysqlnd_mux 1.0 series
简介
MySQL


简介

The mysqlnd memcache plugin (mysqlnd_memcache) is an PHP extension for transparently translating SQL into requests for the MySQL InnoDB Memcached Daemon Plugin (server plugin). It includes experimental support for the MySQL Cluster Memcached Daemon. The server plugin provides access to data stored inside MySQL InnoDB (respectively MySQL Cluster NDB) tables using the Memcache protocol. This PHP extension, which supports all PHP MySQL extensions that use mysqlnd, will identify tables exported in this way and will translate specific SELECT queries into Memcache requests.

mysqlnd_memcache data flow

Note:

This plugin depends on the MySQL InnoDB Memcached Daemon Plugin. It is not provided to be used with a stand-alone Memcached. For a generic query cache using Memcached look at the mysqlnd query cache plugin. For direct Memcache access look at the memcache and memcached extensions.

The MySQL native driver for PHP is a C library that ships together with PHP as of PHP 5.3.0. It serves as a drop-in replacement for the MySQL Client Library (libmysqlclient). Using mysqlnd has several advantages: no extra downloads are required because it's bundled with PHP, it's under the PHP license, there is lower memory consumption in certain cases, and it contains new functionality such as asynchronous queries.

The mysqlnd_mmemcache operates, for the most part, transparently from a user perspective. The mysqlnd memcache plugin supports all PHP applications, and all MySQL PHP extensions. It does not change existing APIs. Therefore, it can easily be used with existing PHP applications.

The MySQL Memcache plugins add key-value style access method for data stored in InnoDB resp. NDB (MySQL Cluster) SQL tables through the Memcache protocol. This type of key-value access if often faster than using SQL.

Key Features

The key features of PECL/mysqlnd_memcache are as follows.

  • Possible performance benefits

    • Client-side: light-weight protocol.

    • Server-side: no SQL parsing, direct access to the storage.

    • Please, run your own benchmarks! Actual performance results are highly dependent on setup and hardware used.

Limitations

The initial version is not binary safe. Due to the way the MySQL Memcache plugins works there are restrictions related to separators.

Prepared statements and asynchronous queries are not supported. Result set meta data support is limited.

The mapping information for tables accessible via Memcache is not cached in the plugin between requests but fetched from the MySQL server each time a MySQL connection is associated with a Memcache connection. See mysqlnd_memcache_set() for details.

On the name

The shortcut mysqlnd_memcache stands for mysqlnd memcache plugin. Memcache refers to support of the MySQL Memcache plugins for InnoDB and NDB (MySQL Cluster). The plugin is not related to the Memcached cache server.

mysqlnd_memcache
Quickstart and Examples
mysqlnd_memcache


Quickstart and Examples

Table of Contents

  • Setup
  • Usage

The mysqlnd memcache plugin is easy to use. This quickstart will demo typical use-cases, and provide practical advice on getting started.

It is strongly recommended to read the reference sections in addition to the quickstart. The quickstart tries to avoid discussing theoretical concepts and limitations. Instead, it will link to the reference sections. It is safe to begin with the quickstart. However, before using the plugin in mission critical environments we urge you to read additionally the background information from the reference sections.

简介
Setup
mysqlnd_memcache


Setup

The plugin is implemented as a PHP extension. See also the installation instructions to install this extension.

Compile or configure the PHP MySQL extension (API) (mysqli, PDO_MYSQL, mysql). That extension must use the mysqlnd library as because mysqlnd_memcache is a plugin for the mysqlnd library. For additional information, refer to the mysqlnd_memcache installation instructions.

Then, load this extension into PHP and activate the plugin in the PHP configuration file using the PHP configuration directive named mysqlnd_memcache.enable.

Example #1 Enabling the plugin (php.ini)

; On Windows the filename is php_mysqnd_memcache.dll
; Load the extension
extension=mysqlnd_memcache.so
; Enable it
mysqlnd_memcache.enable=1

Follow the instructions given in the » MySQL Reference Manual on installing the Memcache plugins for the MySQL server. Activate the plugins and configure Memcache access for SQL tables.

The examples in this quickguide assume that the following table exists, and that Memcache is configured with access to it.

Example #2 SQL table used for the Quickstart

CREATE TABLE test(
  id CHAR(16),
  f1 VARCHAR(255),
  f2 VARCHAR(255),
  f3 VARCHAR(255),
  flags INT NOT NULL,
  cas_column INT,
  expire_time_column INT,
  PRIMARY KEY(id)
  ) ENGINE=InnoDB;

INSERT INTO test (id, f1, f2, f3) VALUES (1, 'Hello', 'World', '!');
INSERT INTO test (id, f1, f2, f3) VALUES (2, 'Lady', 'and', 'the tramp');

INSERT INTO innodb_memcache.containers(
  name, db_schema, db_table, key_columns, value_columns,
  flags, cas_column, expire_time_column, unique_idx_name_on_key)
VALUES (
  'plugin_test', 'test', 'test', 'id', 'f1,f2,f3',
  'flags', 'cas_column', 'expire_time_column', 'PRIMARY KEY');

Quickstart and Examples
Usage
Quickstart and Examples


Usage

After associating a MySQL connection with a Memcache connection using mysqnd_memcache_set() the plugin attempts to transparently replace SQL SELECT statements by a memcache access. For that purpose the plugin monitors all SQL statements executed and tries to match the statement string against MYSQLND_MEMCACHE_DEFAULT_REGEXP. In case of a match, the mysqlnd memcache plugin checks whether the SELECT is accessing only columns of a mapped table and the WHERE clause is limited to a single key lookup.

In case of the example SQL table, the plugin will use the Memcache interface of the MySQL server to fetch results for a SQL query like SELECT f1, f2, f3 WHERE id = n.

Example #1 Basic example.

<?php
$mysqli = new mysqli("host", "user", "passwd", "database");
$memc = new Memcached();
$memc->addServer("host", 11211);
mysqlnd_memcache_set($mysqli, $memc);

/*
   This is a query which queries table test using id as key in the WHERE part
   and is accessing fields f1, f2 and f3. Therefore, mysqlnd_memcache
   will intercept it and route it via memcache.
*/
$result = $mysqli->query("SELECT f1, f2, f3 FROM test WHERE id = 1");
while ($row = $result->fetch_row()) {
    print_r($row);
}

/*
   This is a query which queries table test but using f1 in the WHERE clause.
   Therefore, mysqlnd_memcache can't intercept it. This will be executed
   using the MySQL protocol
*/
$mysqli->query("SELECT id FROM test WHERE f1 = 'Lady'");
while ($row = $result->fetch_row()) {
    print_r($row);
}
?>

以上例程会输出：

array(
    [f1] => Hello
    [f2] => World
    [f3] => !
)
array(
    [id] => 2
)

Setup
安装／配置
Quickstart and Examples


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
Usage
需求
mysqlnd_memcache


需求

PHP: this extension requires PHP 5.4+, version PHP 5.4.4 or never. The required PHP extensions are PCRE (enabled by default), and the memcached extension version 2.0.x.

The mysqlnd_memcache Memcache plugin supports all PHP applications and all available PHP MySQL extensions (mysqli, mysql, PDO_MYSQL). The PHP MySQL extension must be configured with mysqlnd support.

For accessing InnoDB tables, this PHP extension requires MySQL Server 5.6.6 or newer with the InnoDB Memcache Daemon Plugin enabled.

For accessing MySQL Cluster NDB tables, this PHP extension requires MySQL Cluster 7.2 or newer with the NDB Memcache API nodes enabled.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/mysqlnd_memcache

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Mysqlnd_memcache 配置选项
名字 | 默认 | 可修改范围 | 更新日志
mysqlnd_memcache.enable | 1 | PHP_INI_SYSTEM | Available since 1.0.0

这是配置指令的简短说明。

mysqlnd_memcache.enable integer

Enables or disables the plugin. If disabled, the extension will not plug into mysqlnd to proxy internal mysqlnd C API calls.

Note:

This option is mainly used by developers to build this extension statically into PHP. General users are encouraged to build this extension as a shared object, and to unload it completely when it is not needed.

安装
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

MySQL Memcache Plugin related

MYSQLND_MEMCACHE_DEFAULT_REGEXP (string)
Default regular expression (PCRE style) used for matching SELECT statements that will be mapped into a MySQL Memcache Plugin access point, if possible. It is also possible to use mysqlnd_memcache_set(), but the default approach is using this regular expression for pattern matching.

Assorted

The version number of this plugin can be obtained by using MYSQLND_MEMCACHE_VERSION or MYSQLND_MEMCACHE_VERSION_ID. MYSQLND_MEMCACHE_VERSION is the string representation of the numerical version number MYSQLND_MEMCACHE_VERSION_ID, which is an integer such as 10000. Developers can calculate the version number as follows.

Version (part) | Example
Major*10000 | 1*10000 = 10000
Minor*100 | 0*100 = 0
Patch | 0 = 0
MYSQLND_MEMCACHE_VERSION_ID | 10000

MYSQLND_MEMCACHE_VERSION (string)
Plugin version string, for example, "1.0.0-alpha".
MYSQLND_MEMCACHE_VERSION_ID (integer)
Plugin version number, for example, 10000.

运行时配置
Mysqlnd_memcache 函数
mysqlnd_memcache


Mysqlnd_memcache 函数

Table of Contents

  • mysqlnd_memcache_get_config — Returns information about the plugin configuration
  • mysqlnd_memcache_set — Associate a MySQL connection with a Memcache connection
预定义常量
mysqlnd_memcache_get_config
mysqlnd_memcache


Returns information about the plugin configuration

Mysqlnd_memcache 函数
mysqlnd_memcache_set
Mysqlnd_memcache 函数
PHP Manual

mysqlnd_memcache_get_config

(PECL mysqlnd_memcache >= 1.0.0)

mysqlnd_memcache_get_config — Returns information about the plugin configuration

说明

array mysqlnd_memcache_get_config ( mixed $connection )

This function returns an array of all mysqlnd_memcache related configuration information that is attached to the MySQL connection. This includes MySQL, the Memcache object provided via mysqlnd_memcache_set(), and the table mapping configuration that was automatically collected from the MySQL Server.

参数

connection

A handle to a MySQL Server using one of the MySQL API extensions for PHP, which are PDO_MYSQL, mysqli or ext/mysql.

返回值

An array of mysqlnd_memcache configuration information on success, otherwise FALSE.

The returned array has these elements:

mysqlnd_memcache_get_config() array structure
Array Key | Description
memcached | Instance of Memcached associated to this MySQL connection by mysqlnd_memcache_set(). You can use this to change settings of the memcache connection, or directly by querying the server on this connection.
pattern | The PCRE regular expression used to match the SQL query sent to the server. Queries matching this pattern will be further analyzed to decide whether the query can be intercepted and sent via the memcache interface or whether the query is sent using the general MySQL protocol to the server. The pattern is either the default pattern (MYSQLND_MEMCACHE_DEFAULT_REGEXP) or it is set via mysqlnd_memcache_set().
mappings | An associative array with a list of all configured containers as they were discovered by this plugin. The key for these elements is the name of the container in the MySQL configuration. The value is described below. The contents of this field is created by querying the MySQL Server during association to MySQL and a memcache connection using mysqlnd_memcache_set().
mapping_query | An SQL query used during mysqlnd_memcache_set() to identify the available containers and mappings. The result of that query is provided in the mappings element.
Mapping entry structure
Array Key | Description
prefix | A prefix used while accessing data via memcache. With the MySQL InnoDB Memcache Deamon plugin, this usually begins with @@ and ends with a configurable separator. This prefix is placed in front of the key value while using the memcache protocol.
schema_name | Name of the schema (database) which contains the table being accessed.
table_name | Name of the table which contains the data accessible via memcache protocol.
id_field_name | Name of the database field (column) with the id used as key when accessing the table via memcache. Often this is the database field having a primary key.
separator The separator used to split the different field values. This is needed as memcache only provides access to a single value while MySQL can map multiple columns to this value.

Note:

The separator, which can be set in the MySQL Server configuration, should not be part of any value retrieved via memcache because proper mapping can't be guaranteed.

fields | An array with the name of all fields available for this mapping.

范例

Example #1 mysqlnd_memcache_get_config() example

<?php
$mysqli = new mysqli("host", "user", "passwd", "database");
$memc = new Memcached();
$memc->addServer("host", 11211);
mysqlnd_memcache_set($mysqli, $memc);

var_dump(mysqlnd_memcache_get_config($mysqli));
?>

以上例程会输出：

array(4) {
  ["memcached"]=>
  object(Memcached)#2 (0) {
  }
  ["pattern"]=>
  string(125) "/^\s*SELECT\s*(.+?)\s*FROM\s*`?([a-z0-9_]+)`?\s*WHERE\s*`?([a-z0-9_]+)`?\s*=\s*(?(?=["'])["']([^"']*)["']|([0-9e\.]*))\s*$/is"
  ["mappings"]=>
  array(1) {
    ["mymem_test"]=>
    array(6) {
      ["prefix"]=>
      string(13) "@@mymem_test."
      ["schema_name"]=>
      string(4) "test"
      ["table_name"]=>
      string(10) "mymem_test"
      ["id_field_name"]=>
      string(2) "id"
      ["separator"]=>
      string(1) "|"
      ["fields"]=>
      array(3) {
        [0]=>
        string(2) "f1"
        [1]=>
        string(2) "f2"
        [2]=>
        string(2) "f3"
      }
    }
  }
  ["mapping_query"]=>
  string(209) "    SELECT c.name,
                          CONCAT('@@', c.name, (SELECT value FROM innodb_memcache.config_options WHERE name = 'table_map_delimiter')) AS key_prefix,
                          c.db_schema,
                          c.db_table,
                          c.key_columns,
                          c.value_columns,
                          (SELECT value FROM innodb_memcache.config_options WHERE name = 'separator') AS sep
                     FROM innodb_memcache.containers c"
}

参见

  • mysqlnd_memcache_set() - Associate a MySQL connection with a Memcache connection

Mysqlnd_memcache 函数
mysqlnd_memcache_set
Mysqlnd_memcache 函数


Associate a MySQL connection with a Memcache connection

mysqlnd_memcache_get_config
Change History
Mysqlnd_memcache 函数
PHP Manual

mysqlnd_memcache_set

(PECL mysqlnd_memcache >= 1.0.0)

mysqlnd_memcache_set — Associate a MySQL connection with a Memcache connection

说明

bool mysqlnd_memcache_set ( mixed $mysql_connection [, Memcached $memcache_connection [, string $pattern [, callback $callback ]]] )

Associate mysql_connection with memcache_connection using pattern as a PCRE regular expression, and callback as a notification callback or to unset the association of mysql_connection.

While associating a MySQL connection with a Memcache connection, this function will query the MySQL Server for its configuration. It will automatically detect whether the server is configured to use the InnoDB Memcache Daemon Plugin or MySQL Cluster NDB Memcache support. It will also query the server to automatically identify exported tables and other configuration options. The results of this automatic configuration can be retrieved using mysqlnd_memcache_get_config().

参数

mysql_connection

A handle to a MySQL Server using one of the MySQL API extensions for PHP, which are PDO_MYSQL, mysqli or ext/mysql.

memcache_connection

A Memcached instance with a connection to the MySQL Memcache Daemon plugin. If this parameter is omitted, then mysql_connection will be unassociated from any memcache connection. And if a previous association exists, then it will be replaced.

pattern

A regular expression in Perl Compatible Regular Expression syntax used to identify potential Memcache-queries. The query should have three sub patterns. The first subpattern contains the requested field list, the second the name of the ID column from the query and the third the requested value. If this parameter is omitted or os set to NULL, then a default pattern will be used.

callback

A callback which will be used whenever a query is being sent to MySQL. The callback will receive a single boolean parameter telling if a query was sent via Memcache.

返回值

TRUE if the association or disassociation is successful, otherwise FALSE if there is an error.

范例

Example #1 mysqlnd_memcache_set() example with var_dump() as a simple debugging callback.

<?php
$mysqli = new mysqli("host", "user", "passwd", "database");
$memc = new Memcached();
$memc->addServer("host", 11211);
mysqlnd_memcache_set($mysqli, $memc, NULL, 'var_dump');

/* This query will be intercepted and executed via Memcache protocol */
echo "Sending query for id via Memcache: ";
$mysqli->query("SELECT f1, f2, f3 FROM test WHERE id = 1");

/* f1 is not configured as valid key field, this won't be sent via Memcache */
echo "Sending query for f1 via Memcache: ";
$mysqli->query("SELECT id FROM test WHERE f1 = 1");

mysqlnd_memcache_set($mysqli);

/* Now the regular MySQL protocol will be used */
echo "var_dump won't be invoked: ";
$mysqli->query("SELECT f1, f2, f3 WHERE id = 1");

?>

以上例程会输出：

Sending query for id via Memcache: bool(true)
Sending query for f1 via Memcache: bool(false)
var_dump won't be invoked:

参见

  • mysqlnd_memcache_get_config() - Returns information about the plugin configuration

mysqlnd_memcache_get_config
Change History
Mysqlnd_memcache 函数


Change History

Table of Contents

  • PECL/mysqlnd_memcache 1.0 series

This change history is a high level summary of selected changes that may impact applications and/or break backwards compatibility.

See also the CHANGES file in the source distribution for a complete list of changes.

mysqlnd_memcache_set
PECL/mysqlnd_memcache 1.0 series
mysqlnd_memcache


PECL/mysqlnd_memcache 1.0 series

1.0.0-alpha

  • Release date: TBD
  • Motto/theme: Basic mapping of SQL SELECT to a MySQL Memcache plugin access.

The initial release does map basic SQL SELECT statements to a MySQL Memcache plugin access. This bares potential performance benefits as the direct key-value access to MySQL storage using the Memcache protocol is usually faster than using SQL access.

Change History
OCI8
Change History


Oracle OCI8

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • Testing
    • 运行时配置
  • 预定义常量
  • 范例
  • OCI8 Connection Handling and Connection Pooling
  • OCI8 Fast Application Notification (FAN) Support
  • OCI8 and DTrace Dynamic Tracing
  • Supported Datatypes
  • OCI8 函数
    • oci_bind_array_by_name — Binds a PHP array to an Oracle PL/SQL array parameter
    • oci_bind_by_name — 绑定一个 PHP 变量到一个 Oracle 位置标志符
    • oci_cancel — 中断游标读取数据
    • oci_client_version — Returns the Oracle client library version
    • oci_close — 关闭 Oracle 连接
    • oci_commit — 提交未执行的事务处理
    • oci_connect — 建立一个到 Oracle 服务器的连接
    • oci_define_by_name — 在 SELECT 中使用 PHP 变量作为定义的步骤
    • oci_error — 返回上一个错误
    • oci_execute — 执行一条语句
    • oci_fetch_all — 获取结果数据的所有行到一个数组
    • oci_fetch_array — Returns the next row from a query as an associative or numeric array
    • oci_fetch_assoc — Returns the next row from a query as an associative array
    • oci_fetch_object — Returns the next row from a query as an object
    • oci_fetch_row — Returns the next row from a query as a numeric array
    • oci_fetch — Fetches the next row into result-buffer
    • oci_field_is_null — 检查字段是否为 NULL
    • oci_field_name — 返回字段名
    • oci_field_precision — 返回字段精度
    • oci_field_scale — 返回字段范围
    • oci_field_size — 返回字段大小
    • oci_field_type_raw — 返回字段的原始 Oracle 数据类型
    • oci_field_type — 返回字段的数据类型
    • oci_free_descriptor — Frees a descriptor
    • oci_free_statement — 释放关联于语句或游标的所有资源
    • oci_get_implicit_resultset — Returns the next child statement resource from a parent statement resource that has Oracle Database 12c Implicit Result Sets
    • oci_internal_debug — 打开或关闭内部调试输出
    • oci_lob_copy — Copies large object
    • oci_lob_is_equal — Compares two LOB/FILE locators for equality
    • oci_new_collection — 分配新的 collection 对象
    • oci_new_connect — 建定一个到 Oracle 服务器的新连接
    • oci_new_cursor — 分配并返回一个新的游标（语句句柄）
    • oci_new_descriptor — 初始化一个新的空 LOB 或 FILE 描述符
    • oci_num_fields — 返回结果列的数目
    • oci_num_rows — 返回语句执行后受影响的行数
    • oci_parse — 配置 Oracle 语句预备执行
    • oci_password_change — 修改 Oracle 用户的密码
    • oci_pconnect — 使用一个持久连接连到 Oracle 数据库
    • oci_result — 返回所取得行中字段的值
    • oci_rollback — 回滚未提交的事务
    • oci_server_version — 返回服务器版本信息
    • oci_set_action — Sets the action name
    • oci_set_client_identifier — Sets the client identifier
    • oci_set_client_info — Sets the client information
    • oci_set_edition — Sets the database edition
    • oci_set_module_name — Sets the module name
    • oci_set_prefetch — 设置预提取行数
    • oci_statement_type — 返回 OCI 语句的类型
  • OCI-Collection — The OCI-Collection class
    • OCI-Collection::append — Appends element to the collection
    • OCI-Collection::assign — Assigns a value to the collection from another existing collection
    • OCI-Collection::assignElem — Assigns a value to the element of the collection
    • OCI-Collection::free — Frees the resources associated with the collection object
    • OCI-Collection::getElem — Returns value of the element
    • OCI-Collection::max — Returns the maximum number of elements in the collection
    • OCI-Collection::size — Returns size of the collection
    • OCI-Collection::trim — Trims elements from the end of the collection
  • OCI-Lob — The OCI-Lob class
    • OCI-Lob::append — Appends data from the large object to another large object
    • OCI-Lob::close — Closes LOB descriptor
    • OCI-Lob::eof — Tests for end-of-file on a large object's descriptor
    • OCI-Lob::erase — Erases a specified portion of the internal LOB data
    • OCI-Lob::export — Exports LOB's contents to a file
    • OCI-Lob::flush — Flushes/writes buffer of the LOB to the server
    • OCI-Lob::free — Frees resources associated with the LOB descriptor
    • OCI-Lob::getBuffering — Returns current state of buffering for the large object
    • OCI-Lob::import — Imports file data to the LOB
    • OCI-Lob::load — Returns large object's contents
    • OCI-Lob::read — Reads part of the large object
    • OCI-Lob::rewind — Moves the internal pointer to the beginning of the large object
    • OCI-Lob::save — Saves data to the large object
    • OCI-Lob::saveFile — 别名 OCI-Lob::import
    • OCI-Lob::seek — Sets the internal pointer of the large object
    • OCI-Lob::setBuffering — Changes current state of buffering for the large object
    • OCI-Lob::size — Returns size of large object
    • OCI-Lob::tell — Returns the current position of internal pointer of large object
    • OCI-Lob::truncate — Truncates large object
    • OCI-Lob::write — Writes data to the large object
    • OCI-Lob::writeTemporary — Writes a temporary large object
    • OCI-Lob::writeToFile — 别名 OCI-Lob::export
  • OCI8 Obsolete Aliases and Functions
    • ocibindbyname — 别名 oci_bind_by_name
    • ocicancel — 别名 oci_cancel
    • ocicloselob — 别名 OCI-Lob::close
    • ocicollappend — 别名 OCI-Collection::append
    • ocicollassign — 别名 OCI-Collection::assign
    • ocicollassignelem — 别名 OCI-Collection::assignElem
    • ocicollgetelem — 别名 OCI-Collection::getElem
    • ocicollmax — 别名 OCI-Collection::max
    • ocicollsize — 别名 OCI-Collection::size
    • ocicolltrim — 别名 OCI-Collection::trim
    • ocicolumnisnull — 别名 oci_field_is_null
    • ocicolumnname — 别名 oci_field_name
    • ocicolumnprecision — 别名 oci_field_precision
    • ocicolumnscale — 别名 oci_field_scale
    • ocicolumnsize — 别名 oci_field_size
    • ocicolumntype — 别名 oci_field_type
    • ocicolumntyperaw — 别名 oci_field_type_raw
    • ocicommit — 别名 oci_commit
    • ocidefinebyname — 别名 oci_define_by_name
    • ocierror — 别名 oci_error
    • ociexecute — 别名 oci_execute
    • ocifetch — 别名 oci_fetch
    • ocifetchinto — Obsolete variant of oci_fetch_array, oci_fetch_object, oci_fetch_assoc and oci_fetch_row
    • ocifetchstatement — 别名 oci_fetch_all
    • ocifreecollection — 别名 OCI-Collection::free
    • ocifreecursor — 别名 oci_free_statement
    • ocifreedesc — 别名 OCI-Lob::free
    • ocifreestatement — 别名 oci_free_statement
    • ociinternaldebug — 别名 oci_internal_debug
    • ociloadlob — 别名 OCI-Lob::load
    • ocilogoff — 别名 oci_close
    • ocilogon — 别名 oci_connect
    • ocinewcollection — 别名 oci_new_collection
    • ocinewcursor — 别名 oci_new_cursor
    • ocinewdescriptor — 别名 oci_new_descriptor
    • ocinlogon — 别名 oci_new_connect
    • ocinumcols — 别名 oci_num_fields
    • ociparse — 别名 oci_parse
    • ociplogon — 别名 oci_pconnect
    • ociresult — 别名 oci_result
    • ocirollback — 别名 oci_rollback
    • ocirowcount — 别名 oci_num_rows
    • ocisavelob — 别名 OCI-Lob::save
    • ocisavelobfile — 别名 OCI-Lob::import
    • ociserverversion — 别名 oci_server_version
    • ocisetprefetch — 别名 oci_set_prefetch
    • ocistatementtype — 别名 oci_statement_type
    • ociwritelobtofile — 别名 OCI-Lob::export
    • ociwritetemporarylob — 别名 OCI-Lob::writeTemporary
PECL/mysqlnd_memcache 1.0 series
简介
针对各数据库系统对应的扩展


简介

These functions allow you to access Oracle Database 12c, 11g, 10g, 9i and 8i. They support SQL and PL/SQL statements. Basic features include transaction control, binding of PHP variables to Oracle placeholders, and support for large object (LOB) types and collections. Oracle's scalability features such as Database Resident Connection Pooling (DRCP) and result caching are also supported.

OCI8
安装／配置
OCI8


安装／配置

Table of Contents

  • 需求
  • 安装
  • Testing
  • 运行时配置
简介
需求
OCI8


需求

The OCI8 1.4 extension is included with PHP 5.3, PHP 5.4 and PHP 5.5. It is also available from » PECL. A newer OCI8 2.0 version is available only from » PECL. OCI8 1.4 requires Oracle 12c, 11g, 10g or 9iR2 client libraries and will install on PHP 4.3.9 onwards. OCI8 2.0 requires Oracle 12c, 11g or 10g client libraries and will install on PHP 5.2 onwards.

If the Oracle Database is on the same machine as PHP, the database software already contains the necessary libraries. When PHP is on a different machine, use the free » Oracle Instant Client libraries.

To use Oracle Instant Client, install the basic or basiclite Oracle Instant Client ZIP file or RPM package. When building PHP from source code, also install the sdk ZIP file or devel RPM package.

You must run PHP with the same, or a more recent, version of the Oracle libraries that OCI8 was built with.

On Windows, the php_oci8 DLL needs Oracle client libraries from version 10gR2 or greater. In PHP 5.3 up to and including PHP 5.3.5, the php_oci8_11g DLL requires Oracle 11gR1 or greater client libraries. From PHP 5.3.6 the php_oci8_11g DLL requires Oracle 11gR2 or greater client libraries. The php_oci8_12c DLL from PECL requires Oracle 12cR1 client libraries. With some versions of Instant Client you may additionally need mfc71.dll and msvcr71.dll libraries.

Note:

If OCI8 uses 9iR2 client libraries, then PHP can connect to Oracle Database 8i, 9iR2, 10g or 11g. If OCI8 uses 10gR2 client libraries, the database can be 9iR2, 10g, 11g or 12c. If OCI8 uses 11g client libraries, the database can be 9iR2, 10g, 11g or 12c. If OCI8 uses 12c client libraries, the database can be 10gR2, 11g or 12c.

Note:

Full OCI8 feature support is only available when using the most recent versions of the Oracle client libraries and database.

安装／配置
安装
安装／配置


安装

Configuring PHP with OCI8

Review the previous Requirements section before configuring OCI8.

To enable the OCI8 extension, configure PHP with the option --with-oci8 .

Before starting the web server, OCI8 typically requires several Oracle environment variables (see below) to locate libraries, point to configuration files, and set some basic properties such as the character set used by Oracle libraries. The variables should be set before any PHP process starts.

PHP should be run with the same, or more recent, major version of Oracle libraries as it was configured with. For example, if you build OCI8 with Oracle 11.2 libraries, then PHP should also be deployed and run with Oracle 11.2 libraries.

Installing OCI8 as a Shared Extension

The configuration shared option builds OCI8 as a shared library that can be dynamically loaded into PHP. Building a shared extension allows OCI8 to be upgraded easily without impacting the rest of PHP.

Configure OCI8 using one of the following configure options.

  • If using Oracle Instant Client, then do:

    ./configure --with-oci8=shared,instantclient,/path/to/instant/client/lib

    If Instant Client is installed from ZIP files, make sure to create the library symbolic link, for example ln -s libclntsh.so.11.1 libclntsh.so.

    If using an RPM-based installation of Oracle Instant Client, the configure line will look like this:

    ./configure --with-oci8=shared,instantclient,/usr/lib/oracle/<version>/client/lib

    For example, --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client/lib .

    Note that Oracle Instant Client support first appeared in PHP 4.3.11 and 5.0.4 and originally used the option --with-oci8-instant-client to configure PHP.

  • If using an Oracle database or full Oracle Client installation then do:

    ./configure --with-oci8=shared,$ORACLE_HOME

    Make sure the web server user (nobody, www) has access to the libraries, initialization files and tnsnames.ora (if used) under the $ORACLE_HOME directory. With Oracle 10gR2, you may need to run the $ORACLE_HOME/install/changePerm.sh utility to give directory access.

After configuration, follow the usual PHP building procedure, e.g. make install. The OCI8 shared extension oci8.so library will be created. It may need to be manually moved to the PHP extension directory, specified by the extension_dir option in your php.ini file.

To complete installation of OCI8, edit php.ini and add the line:

extension=oci8.so

Installing OCI8 as a Statically Compiled Extension

Configure OCI8 using one of the following configure options.

  • If using Oracle Instant Client, then do:

    ./configure --with-oci8=instantclient,/path/to/instant/client/lib

  • If using an Oracle database or full Oracle Client installation then do:

    ./configure --with-oci8=$ORACLE_HOME

After configuration, follow the usual PHP building procedure, e.g. make install. After successful compilation, you do not need to add oci8.so to php.ini. No additional build steps are required.

Installing OCI8 from PECL

The OCI8 extension can be added to an existing PHP installation either automatically or manually from » http://pecl.php.net/. 安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/oci8.

For an automated install follow these steps:

  • If you are behind a firewall, set PEAR's proxy, for example:

    pear config-set http_proxy http://my-proxy.example.com:80/

  • Run

    pecl install oci8

    When prompted, enter either the value of $ORACLE_HOME, or instantclient,/path/to/instant/client/lib.

    Note: Do not enter the variable $ORACLE_HOME because it will not be expanded. Instead, enter the actual path of the Oracle home directory.

For a manual install, download the PECL OCI8 package, e.g. oci8-1.3.5.tgz.

  • Extract the package:

    tar -zxf oci8-1.3.5.tgz
cd oci8-1.3.5

  • Prepare the package:

    phpize

  • Configure the package, either using $ORACLE_HOME or Instant Client

    ./configure -with-oci8=shared,$ORACLE_HOME

    or

    ./configure -with-oci8=shared,instantclient,/path/to/instant/client/lib

  • Install the package:

    make install

After either an automatic or manual install, edit your php.ini file and add the line:

extension=oci8.so

Make sure the php.ini directive extension_dir is set to the directory that oci8.so was installed in.

Installing OCI8 on Windows

On Windows, uncomment the php.ini line extension=php_oci8.dll when using Oracle 10gR2 client libraries. Uncomment extension=php_oci8_11g.dll when using Oracle 11g client libraries. These two DLLs contain equivalent functionality and only one may be enabled at a time. Make sure extension_dir is set to the directory containing the PHP extension DLLs.

If using Instant Client, set the system PATH environment variable to the Oracle library directory.

Setting the Oracle Environment

Before using this extension, make sure that the Oracle environment variables are properly set for the web daemon user. If your web server is automatically started at boot time then make sure that the boot-time environment is also configured correctly.

Note:

Do not set Oracle environment variables using putenv() in a PHP script because Oracle libraries may be loaded and initialized before your script runs. Variables set with putenv() may then cause conflicts, crashes, or unpredictable behavior. Some functions may work but others might give subtle errors. The variables should be set up before the web server is started.

On Red Hat Linux and variants, export variables at the end of /etc/sysconfig/httpd. Other systems with Apache 2 may use an envvars script in the Apache bin directory. A third option, the Apache SetEnv directive in httpd.conf, may work in some systems but is known to be insufficient in others.

To check that environment variables are set correctly, use phpinfo() and check the Environment (not the Apache Environment) section contains the expected variables.

The variables that might be needed are included in the following table. Refer to the Oracle documentation for more information on all the variables.

Common Oracle Environment Variables
Name | Purpose
ORACLE_HOME | Contains the directory of the full Oracle Database software. Do not set this when using Oracle Instant Client as it is unnecessary and may cause installation problems.
ORACLE_SID | Contains the name of the database on the local machine to be connected to. There is no need to set this if you using Oracle Instant Client, or always pass the connection parameter to oci_connect().
LD_LIBRARY_PATH | Set this (or its platform equivalent, such as DYLD_LIBRARY_PATH, LIBPATH, or SHLIB_PATH) to the location of the Oracle libraries, for example $ORACLE_HOME/lib or /usr/lib/oracle/11.1/client/lib. This variable is not needed if the libraries are located by a different search mechanism, such as with ldconfig or with LD_PRELOAD.
NLS_LANG | This is the primary variable for setting the character set and globalization information used by the Oracle libraries.
ORA_SDTZ | Sets the Oracle session timezone.
TNS_ADMIN | Contains the directory where the Oracle Net Services configuration files such as tnsnames.ora and sqlnet.ora are kept. Not needed if the oci_connect() connection string uses the Easy Connect naming syntax such as localhost/XE. Not needed if the network configuration files are in one of the default locations such as $ORACLE_HOME/network/admin or /etc.
Less frequently used Oracle environment variables include TWO_TASK, ORA_TZFILE, and the various Oracle globalization settings like NLS* and the ORA_NLS_* variables.

Troubleshooting

The most common problem with installing OCI8 is not having the Oracle environment correctly set. This typically appears as a problem using oci_connect() or oci_pconnect(). The error may be a PHP error such as Call to undefined function oci_connect(), an Oracle error such as ORA-12705, or even an Apache crash. Check the Apache log files for startup errors and see the sections above to resolve this problem.

While network errors like ORA-12154 or ORA-12514 indicate an Oracle network naming or configuration issue, the root cause may be because the PHP environment is incorrectly set up and Oracle libraries are unable to locate the tnsnames.ora configuration file.

On Windows, having multiple versions of Oracle on the one machine can easily cause library clashes unless care is taken to make sure PHP only uses the correct version of Oracle.

A utility to examine what libraries are being looked for and loaded can help resolve missing or clashing library issues, particularly on Windows.

Note: If the web server doesn't start or crashes at startup

Check that Apache is linked with the pthread library:

# ldd /www/apache/bin/httpd
  libpthread.so.0 => /lib/libpthread.so.0 (0x4001c000)
  libm.so.6 => /lib/libm.so.6 (0x4002f000)
  libcrypt.so.1 => /lib/libcrypt.so.1 (0x4004c000)
  libdl.so.2 => /lib/libdl.so.2 (0x4007a000)
  libc.so.6 => /lib/libc.so.6 (0x4007e000)
  /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

If the libpthread is not listed, then reinstall Apache:

# cd /usr/src/apache_1.3.xx
# make clean
# LIBS=-lpthread ./config.status
# make
# make install

Please note that on some systems like UnixWare, it is libthread instead of libpthread. PHP and Apache have to be configured with EXTRA_LIBS=-lthread.

需求
Testing
安装／配置


Testing

The OCI8 test suite is in ext/oci8/tests. After OCI8 tests are run this directory will also contain logs of any failures.

Before running PHP's tests, edit details.inc and set $user, $password and the $dbase connection string. The OCI8 test suite has been developed using the SYSTEM account. Some tests will fail if the test user does not have equivalent permissions.

If Oracle Database Resident Connection Pooling is being tested, set $test_drcp to TRUE and ensure the connection string uses an appropriate DRCP pooled server.

An alternative to editing details.inc is the set environment variables, for example:

    $ export PHP_OCI8_TEST_USER=system
    $ export PHP_OCI8_TEST_PASS=oracle
    $ export PHP_OCI8_TEST_DB=localhost/XE
    $ export PHP_OCI8_TEST_DRCP=FALSE
Note in some shells these variables are not propagated correctly to the PHP process and tests will fail to connect if this method is used.

Next, set any necessary environment for the Oracle database. With Oracle 10gR2 XE do:

    $ . /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh

With Oracle 11gR2 XE do:

    $ . /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh

For other versions of the Oracle database do:

    $ . /usr/local/bin/oraenv

Some shells require that php.ini has E in the variables_order parameter, for example:

    variables_order = "EGPCS"

Run all the PHP tests with:

    $ cd your_php_src_directory
    $ make test
or run only the OCI8 tests with
    $ cd your_php_src_directory
    $ make test TESTS=ext/oci8

When the tests have completed, review any test failures. On slow systems, some tests may take longer than the default test timeout in run-tests.php. To correct this, set the environment variable TEST_TIMEOUT to a larger number of seconds.

On fast machines with a local database configured for light load (e.g. Oracle 11gR2 XE) some tests might fail with ORA-12516 or ORA-12520 errors. To prevent this, increase the database PROCESSES parameter using the following steps:

Connect as the oracle software owner:

    $ su - oracle

Set the necessary Oracle environment with oracle_env.sh or oraenv, as described above.

Start the SQL*Plus command line tool and increase PROCESSES

    $ sqlplus / as sysdba
    SQL> alter system set processes=100 scope=spfile

Restart the database:

    SQL> startup force

安装
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

OCI8 Configuration Options
名字 | 默认 | 可修改范围 | 更新日志
oci8.connection_class | "" | PHP_INI_ALL | Available since PHP 5.3 (PECL OCI8 1.3).
oci8.default_prefetch | "100" | PHP_INI_SYSTEM | Available since PHP 5.1.2 (PECL OCI8 1.1).
oci8.events | Off | PHP_INI_SYSTEM | Available since PHP 5.3 (PECL OCI8 1.3).
oci8.max_persistent | "-1" | PHP_INI_SYSTEM | Available since PHP 5.1.2 (PECL OCI8 1.1).
oci8.old_oci_close_semantics | Off | PHP_INI_SYSTEM | Available since PHP 5.1.2 (PECL OCI8 1.1).
oci8.persistent_timeout | "-1" | PHP_INI_SYSTEM | Available since PHP 5.1.2 (PECL OCI8 1.1).
oci8.ping_interval | "60" | PHP_INI_SYSTEM | Available since PHP 5.1.2 (PECL OCI8 1.1).
oci8.privileged_connect | Off | PHP_INI_SYSTEM | Available since PHP 5.1.2 (PECL OCI8 1.1).
oci8.statement_cache_size | "20" | PHP_INI_SYSTEM | Available since PHP 5.1.2 (PECL OCI8 1.1).

这是配置指令的简短说明。

oci8.connection_class string

This user defined text is used by Oracle 11g Database Resident Connection Pooling (DRCP) connections to sub-partition the connection pool. It allows OCI8 persistent connections from an application to reuse database sessions from a previous PHP script, giving better scalability. When an application uses a database pooled process previously used with a different connection class, the session settings such as the default Oracle date format are reset. This prevents accidental sharing of information between different applications.

The value can be set at runtime with ini_set() prior to connecting.

To use DRCP, OCI8 must be linked with Oracle 11g libraries and the database must be Oracle 11g. The connection pool must be enabled in the database, the oci8.connection_class should be set to the same string for all web servers running the same application, and the OCI8 connection string must specify to use a pooled server.

oci8.default_prefetch int

This option sets the default number of extra rows that will be fetched and cached automatically whenever a low-level request for data from the database is made. Setting a value of 0 turns off prefetching.

The prefetch value does not alter the number of rows that functions like oci_fetch_array() return to the user; the prefetching and caching of rows is handled internally in OCI8.

The value can be set per-statement with oci_set_prefetch() prior to statement execution.

In PHP 5.3 (PECL OCI8 1.3.4) the default value was increased from 10 to 100.

In PHP 5.3.2 (PECL OCI8 1.4) the minimum value settable was reduced from 1 to 0, allowing prefetching to be turned off.

When using Oracle Database 12c, the prefetch value set by PHP can be overridden by Oracle's client oraaccess.xml configuration file. Refer to Oracle documentation for more detail.

Note: A larger prefetch can result in improved performance, at the cost of some increased memory usage. For queries that return large amounts of data, the performance benefit can be significant.

oci8.events boolean

Using On allows PHP to be notified of database Fast Application Notification (FAN) events.

Without FAN, when a database instance or machine node fails unexpectedly, PHP applications may be blocked waiting for a database response until a TCP timeout expires. With FAN events, PHP applications are quickly notified of failures that affect their established database connections. The OCI8 extension will clean up unusable connections in the persistent connection cache.

When using On, the database must also be configured to post FAN events.

FAN support is available when OCI8 is linked with Oracle 10gR2 (or later) libraries and connected to Oracle Database 10gR2 (or later).

oci8.max_persistent int

The maximum number of persistent OCI8 connections per PHP process. Setting this option to -1 means that there is no limit.

oci8.old_oci_close_semantics boolean

This option controls oci_close() behaviour. Enabling it means that oci_close() will do nothing; the connection will not be closed until the end of the script. This is for backward compatibility only. If you find that you need to enable this setting, you are strongly encouraged to adjust the oci_close() calls in your application instead of enabling this option.

oci8.persistent_timeout int

The maximum number of seconds that a PHP process is allowed to keep an idle persistent connection open. Setting this option to -1 means that idle persistent connections will be retained until the PHP process terminates or the connection is explicitly closed with oci_close().

Note: In PHP, the expiry of idle resources is not alarm-based. It occurs when PHP finishes processing a script and checks the last-used timestamp of resources. Hence there is a paradox that idle connections can only be closed when there is some activity (though not necessarily OCI8 related) in the PHP process. If there is more than one PHP process then each must individually be activated in order to trigger expiry of its idle resources. The introduction of Database Resident Connection Pooling (DRCP) in Oracle 11g resolves the memory and resource issues that oci8.max_persistent and oci8.persistent_timeout previously attempted to overcome.

Note: In PHP 5.3 (PECL OCI8 1.3), persistent connections can be closed with oci_close().

oci8.ping_interval int

The number of seconds that must pass before issuing a ping during oci_pconnect(). A ping ensures that the database connection is valid. When set to 0, persistent connections will be pinged every time oci_pconnect() is called. To disable pings completely, set this option to -1.

Note: Disabling pings allows oci_pconnect() to operate at the highest efficiency, but PHP may not be able to detect unusable connections, such as caused by network dropout, or if the Oracle database has gone down since PHP connected, until the connection is used later in the script. Consult the oci_pconnect() documentation for more information.

oci8.privileged_connect boolean

This option allows connections to use the privileged external credentials OCI_SYSOPER or OCI_SYSDBA.

Note: Seting this On can allow scripts on web servers running with the appropriate OS user privileges to connect as privileged database users without requiring a database password. This can be a security risk.

oci8.statement_cache_size int

This option enables statement caching, and specifies how many statements to cache. To disable statement caching just set this option to 0.

Statement caching removes the need to transmit the statement text to the database and removes the need to transmit any meta data about the statement back to PHP. This can significantly improve overall system performance in applications which reuse statements during the lifetime of a connection. Some extra database "cursors" may be held open under the assumption that statements will be reused.

Set this value to the size of the working set of statements used by your application. Setting too small a value can cause statements to be flushed from the cache before they are reused.

This option is of most use with persistent connections.

When using Oracle Database 12c, this value can be overridden and automatically tuned by Oracle's client oraaccess.xml file. Refer to Oracle documentation for more detail.

Testing
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

OCI8 Function and Method Modes
Constant | Description
OCI_ASSOC | Used with oci_fetch_all() and oci_fetch_array() to get results as an associative array.
OCI_BOTH | Used with oci_fetch_all() and oci_fetch_array() to get results as an array with both associative and number indices.
OCI_COMMIT_ON_SUCCESS | Statement execution mode for oci_execute() call. Automatically commit changes when the statement has succeeded.
OCI_CRED_EXT | Used with oci_connect() for using Oracles' External or OS authentication. Introduced in PHP 5.3 and PECL OCI8 1.3.4.
OCI_DEFAULT | See OCI_NO_AUTO_COMMIT.
OCI_DESCRIBE_ONLY | Statement execution mode for oci_execute(). Use this mode if you want meta data such as the column names but don't want to fetch rows from the query.
OCI_EXACT_FETCH | Obsolete. Statement fetch mode. Used when the application knows in advance exactly how many rows it will be fetching. This mode turns prefetching off for Oracle release 8 or later mode. The cursor is canceled after the desired rows are fetched which may result in reduced server-side resource usage.
OCI_FETCHSTATEMENT_BY_COLUMN | Default mode of oci_fetch_all().
OCI_FETCHSTATEMENT_BY_ROW | Alternative mode of oci_fetch_all().
OCI_LOB_BUFFER_FREE | Used with OCI-Lob::flush to free buffers used.
OCI_NO_AUTO_COMMIT | Statement execution mode for oci_execute(). The transaction is not automatically committed when using this mode. For readability in new code, use this value instead of the older, equivalent OCI_DEFAULT constant. Introduced in PHP 5.3.2 (PECL OCI8 1.4).
OCI_NUM | Used with oci_fetch_all() and oci_fetch_array() to get results as an enumerated array.
OCI_RETURN_LOBS | Used with oci_fetch_array() to get the data value of the LOB instead of the descriptor.
OCI_RETURN_NULLS | Used with oci_fetch_array() to get empty array elements if the row items value is NULL.
OCI_SEEK_CUR | Used with OCI-Lob::seek to set the seek position.
OCI_SEEK_END | Used with OCI-Lob::seek to set the seek position.
OCI_SEEK_SET | Used with OCI-Lob::seek to set the seek position.
OCI_SYSDATE | Obsolete.
OCI_SYSDBA | Used with oci_connect() to connect with the SYSDBA privilege. The php.ini setting oci8.privileged_connect should be enabled to use this.
OCI_SYSOPER | Used with oci_connect() to connect with the SYSOPER privilege. The php.ini setting oci8.privileged_connect should be enabled to use this.
OCI_TEMP_BLOB | Used with OCI-Lob::writeTemporary to indicate that a temporary BLOB should be created.
OCI_TEMP_CLOB | Used with OCI-Lob::writeTemporary to indicate that a temporary CLOB should be created.
OCI8 Bind and Define Types
Constant | Description
OCI_B_BFILE | Used with oci_bind_by_name() when binding BFILEs.
OCI_B_BIN | Used with oci_bind_by_name() to bind RAW values.
OCI_B_BLOB | Used with oci_bind_by_name() when binding BLOBs.
OCI_B_BOL | Used with oci_bind_by_name() to bind a PL/SQL BOOLEAN variable.
OCI_B_CFILEE | Used with oci_bind_by_name() when binding CFILEs.
OCI_B_CLOB | Used with oci_bind_by_name() when binding CLOBs.
OCI_B_CURSOR | Used with oci_bind_by_name() when binding cursors, previously allocated with oci_new_descriptor().
OCI_B_INT | Used with oci_bind_array_by_name() to bind arrays of INTEGER.
OCI_B_NTY | Used with oci_bind_by_name() when binding named data types. Note: in PHP < 5.0 it was called OCI_B_SQLT_NTY.
OCI_B_NUM | Used with oci_bind_array_by_name() to bind arrays of NUMBER.
OCI_B_ROWID | Used with oci_bind_by_name() when binding ROWIDs.
SQLT_AFC | Used with oci_bind_array_by_name() to bind arrays of CHAR.
SQLT_AVC | Used with oci_bind_array_by_name() to bind arrays of VARCHAR2.
SQLT_BDOUBLE | Not supported.
SQLT_BFILEE | The same as OCI_B_BFILE.
SQLT_BFLOAT | Not supported.
SQLT_BIN | The same as OCI_B_BIN.
SQLT_BLOB | The same as OCI_B_BLOB.
SQLT_BOL | The same as OCI_B_BOL.
SQLT_CFILEE | The same as OCI_B_CFILEE.
SQLT_CHR | Used with oci_bind_array_by_name() to bind arrays of VARCHAR2. Also used with oci_bind_by_name().
SQLT_CLOB | The same as OCI_B_CLOB.
SQLT_FLT | Used with oci_bind_array_by_name() to bind arrays of FLOAT.
SQLT_INT | The same as OCI_B_INT.
SQLT_LBI | Used with oci_bind_by_name() to bind LONG RAW values.
SQLT_LNG | Used with oci_bind_by_name() to bind LONG values.
SQLT_LVC | Used with oci_bind_array_by_name() to bind arrays of LONG VARCHAR.
SQLT_NTY | The same as OCI_B_NTY.
SQLT_NUM | The same as OCI_B_NUM.
SQLT_ODT | Used with oci_bind_array_by_name() to bind arrays of LONG.
SQLT_RDD | The same as OCI_B_ROWID.
SQLT_RSET | The same as OCI_B_CURSOR.
SQLT_STR | Used with oci_bind_array_by_name() to bind arrays of STRING.
SQLT_UIN | Not supported.
SQLT_VCS | Used with oci_bind_array_by_name() to bind arrays of VARCHAR.
OCI8 Descriptor Types
Constant | Description
OCI_DTYPE_FILE | This flag tells oci_new_descriptor() to initialize a new FILE descriptor.
OCI_DTYPE_LOB | This flag tells oci_new_descriptor() to initialize a new LOB descriptor.
OCI_DTYPE_ROWID | This flag tells oci_new_descriptor() to initialize a new ROWID descriptor.
OCI_D_FILE | The same as OCI_DTYPE_FILE.
OCI_D_LOB | The same as OCI_DTYPE_LOB.
OCI_D_ROWID | The same as OCI_DTYPE_ROWID.
运行时配置
范例
OCI8


范例

These examples connect as the HR user, which is the sample "Human Resources" schema supplied with the Oracle database. The account may need to be unlocked and the password reset before you can use it.

The examples connect to the XE database on your machine. Change the connect string to your database before running the examples.

Example #1 Basic query

This shows querying and displaying results. Statements in OCI8 use a prepare-execute-fetch sequence of steps.

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

// Prepare the statement
$stid = oci_parse($conn, 'SELECT * FROM departments');
if (!$stid) {
    $e = oci_error($conn);
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

// Perform the logic of the query
$r = oci_execute($stid);
if (!$r) {
    $e = oci_error($stid);
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

// Fetch the results of the query
print "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    print "<tr>\n";
    foreach ($row as $item) {
        print "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";
    }
    print "</tr>\n";
}
print "</table>\n";

oci_free_statement($stid);
oci_close($conn);

?>

Example #2 Inserting with bind variables

Bind variables improve performance by allowing reuse of execution contexts and caches. Bind variables improve security by preventing some kinds of SQL Injection problems.

<?php

// Before running, create the table:
//   CREATE TABLE MYTABLE (mid NUMBER, myd VARCHAR2(20));

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'INSERT INTO MYTABLE (mid, myd) VALUES(:myid, :mydata)');

$id = 60;
$data = 'Some data';

oci_bind_by_name($stid, ':myid', $id);
oci_bind_by_name($stid, ':mydata', $data);

$r = oci_execute($stid);  // executes and commits

if ($r) {
    print "One row inserted";
}

oci_free_statement($stid);
oci_close($conn);

?>

Example #3 Binding in the WHERE clause of a query

This shows a single scalar bind.

<?php

$conn = oci_connect("hr", "hrpwd", "localhost/XE");
if (!$conn) {
    $m = oci_error();
    trigger_error(htmlentities($m['message']), E_USER_ERROR);
}

$sql = 'SELECT last_name FROM employees WHERE department_id = :didbv ORDER BY last_name';
$stid = oci_parse($conn, $sql);
$didbv = 60;
oci_bind_by_name($stid, ':didbv', $didbv);
oci_execute($stid);
while (($row = oci_fetch_array($stid, OCI_ASSOC)) != false) {
    echo $row['LAST_NAME'] ."<br>\n";
}

// Output is
//    Austin
//    Ernst
//    Hunold
//    Lorentz
//    Pataballa

oci_free_statement($stid);
oci_close($conn);

?>

Example #4 Inserting and fetching a CLOB

For large data use binary long object (BLOB) or character long object (CLOB) types. This example uses CLOB.

<?php

// Before running, create the table:
//     CREATE TABLE MYTABLE (mykey NUMBER, myclob CLOB);

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$mykey = 12343;  // arbitrary key for this example;

$sql = "INSERT INTO mytable (mykey, myclob)
        VALUES (:mykey, EMPTY_CLOB())
        RETURNING myclob INTO :myclob";

$stid = oci_parse($conn, $sql);
$clob = oci_new_descriptor($conn, OCI_D_LOB);
oci_bind_by_name($stid, ":mykey", $mykey, 5);
oci_bind_by_name($stid, ":myclob", $clob, -1, OCI_B_CLOB);
oci_execute($stid, OCI_NO_AUTO_COMMIT); // use OCI_DEFAULT for PHP <= 5.3.1
$clob->save("A very long string");

oci_commit($conn);

// Fetching CLOB data

$query = 'SELECT myclob FROM mytable WHERE mykey = :mykey';

$stid = oci_parse ($conn, $query);
oci_bind_by_name($stid, ":mykey", $mykey, 5);
oci_execute($stid);

print '<table border="1">';
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_LOBS)) {
    print '<tr><td>'.$row['MYCLOB'].'</td></tr>';
    // In a loop, freeing the large variable before the 2nd fetch reduces PHP's peak memory usage
    unset($row);
}
print '</table>';

?>

Example #5 Using a PL/SQL stored function

You must bind a variable for the return value and optionally for any PL/SQL function arguments.

<?php

/*
  Before running the PHP program, create a stored function in
  SQL*Plus or SQL Developer:

  CREATE OR REPLACE FUNCTION myfunc(p IN NUMBER) RETURN NUMBER AS
  BEGIN
      RETURN p * 3;
  END;

*/

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$p = 8;

$stid = oci_parse($conn, 'begin :r := myfunc(:p); end;');
oci_bind_by_name($stid, ':p', $p);
oci_bind_by_name($stid, ':r', $r, 40);

oci_execute($stid);

print "$r\n";   // prints 24

oci_free_statement($stid);
oci_close($conn);

?>

Example #6 Using a PL/SQL stored procedure

With stored procedures, you should bind variables for any arguments.

<?php

/*
  Before running the PHP program, create a stored procedure in
  SQL*Plus or SQL Developer:

  CREATE OR REPLACE PROCEDURE myproc(p1 IN NUMBER, p2 OUT NUMBER) AS
  BEGIN
      p2 := p1 * 2;
  END;

*/

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$p1 = 8;

$stid = oci_parse($conn, 'begin myproc(:p1, :p2); end;');
oci_bind_by_name($stid, ':p1', $p1);
oci_bind_by_name($stid, ':p2', $p2, 40);

oci_execute($stid);

print "$p2\n";   // prints 16

oci_free_statement($stid);
oci_close($conn);

?>

Example #7 Calling a PL/SQL function that returns a REF CURSOR

Each returned value from the query is a REF CURSOR that can be fetched from.

<?php
/*
  Create the PL/SQL stored function as:

  CREATE OR REPLACE FUNCTION myfunc(p1 IN NUMBER) RETURN SYS_REFCURSOR AS
      rc SYS_REFCURSOR;
  BEGIN
      OPEN rc FOR SELECT city FROM locations WHERE ROWNUM < p1;
      RETURN rc;
  END;
*/

$conn = oci_connect('hr', 'welcome', 'localhost/XE');

$stid = oci_parse($conn, 'SELECT myfunc(5) AS mfrc FROM dual');
oci_execute($stid);

echo "<table border='1'>\n";
while (($row = oci_fetch_array($stid, OCI_ASSOC))) {
    echo "<tr>\n";
    $rc = $row['MFRC'];
    oci_execute($rc);  // returned column value from the query is a ref cursor
    while (($rc_row = oci_fetch_array($rc, OCI_ASSOC))) {
        echo "    <td>" . $rc_row['CITY'] . "</td>\n";
    }
    oci_free_statement($rc);
    echo "</tr>\n";
}
echo "</table>\n";

// Output is:
//   Beijing
//   Bern
//   Bombay
//   Geneva

oci_free_statement($stid);
oci_close($conn);

?>
预定义常量
OCI8 Connection Handling and Connection Pooling
OCI8


OCI8 Connection Handling and Connection Pooling

Connection Functions

The OCI8 extension provides three different functions for connecting to Oracle. The standard connection function is oci_connect(). This creates a connection to an Oracle database and returns a resource used by subsequent database calls.

Connecting to an Oracle server is a reasonably expensive operation in terms of the time that it takes to complete. The oci_pconnect() function uses a persistent cache of connections that can be re-used across different script requests. This means that the connection overhead will typically only occur once per PHP process (or Apache child).

If the application connects to Oracle using a different set of credentials for each web user, the persistent cache employed by oci_pconnect() will become less useful as the number of concurrent users increases, to the point where it may start to adversely affect the overall performance of the Oracle server due to maintaining too many idle connections. If the application is structured in this way, it is recommended to either tune the application using the oci8.max_persistent and oci8.persistent_timeout configuration settings (these will give control over the persistent connection cache size and lifetime), use Oracle Database Resident Connection Pooling (in Oracle Database 11g or later), or use oci_connect() instead.

Both oci_connect() and oci_pconnect() employ a connection cache; if multiple calls to oci_connect() use the same parameters in a given script, the second and subsequent calls return the existing connection handle. The cache used by oci_connect() is cleaned up at the end of the script run, or when the connection handle is explicitly closed. The function oci_pconnect() has similar behavior, although its cache is maintained separately and survives between HTTP requests.

This caching feature means the two handles are not transactionally isolated (they are in fact the same connection handle, so there is no isolation of any kind). If the application needs two separate, transactionally isolated connections, then use oci_new_connect().

The oci_pconnect() cache is cleared and any database connections closed when the PHP process terminates, so effective use of persistent connections requires that PHP be an Apache module or used with FCGI, or similar. Persistent connections will not have any benefits over oci_connect() when PHP is used with CGI or via the command-line.

The function oci_new_connect() always creates a new connection to the Oracle server, regardless of what other connections might already exist. High traffic web applications should avoid using oci_new_connect(), especially in the busiest sections of the application.

DRCP Connection Pooling

PHP from 5.3 (PECL OCI8 1.3) supports Oracle Database Resident Connection Pooling (DRCP). DRCP allows more efficient use of database machine memory and provides high scalability. No, or minimal, application changes are needed to use DRCP.

DRCP is suited for applications that connect using few database schemas and hold database connections open for a short period of time. Other applications should use Oracle's default Dedicated database server processes, or use Shared servers.

DRCP benefits all three connection functions, but gives the highest scalability when connections are created with oci_pconnect().

For DRCP to be available in OCI8, Oracle client libraries used by PHP and the version of the Oracle Database must both be 11g or greater.

Documentation on DRCP is found in several Oracle manuals. For example, see » Configuring Database Resident Connection Pooling in the Oracle documentation for usage information. A » DRCP white paper contains background information on DRCP.

To use DRCP, build PHP with the OCI8 1.3 (or later) extension and Oracle 11g (or later) libraries and then follow these steps:

  • As a privileged database administrator, use a program like SQL*Plus to start the connection pool in the database:

        SQL> execute dbms_connection_pool.start_pool;

  • Optionally use dbms_connection_pool.alter_param() to configure DRCP settings. The current pool settings can be queried from the DBA_CPOOL_INFO view.

  • Update the connection strings used. For PHP applications that currently connect using a Network Connect Name like MYDB:

        $c = oci_pconnect("myuser", "mypassword", "MYDB");

    modify the tnsnames.ora file and add a (SERVER=POOLED) clause, for example:

        MYDB = (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) (HOST=myhost.dom.com)
           (PORT=1521))(CONNECT_DATA=(SERVICE_NAME=sales)
           (SERVER=POOLED)))

    Alternatively, modify the Easy Connect syntax in PHP and add :POOLED after the service name:

        $c = oci_pconnect("myuser", "mypassword", "myhost.dom.com:1521/sales:POOLED");

  • Edit php.ini and choose a connection class name. This name indicates a logical division of the connection pool and can be used to isolate pooling for separate applications. Any PHP applications with the same user name and connection class value will be able to share connections in the pool, giving greater scalability.

        oci8.connection_class = "MY_APPLICATION_NAME"

  • Run the application, connecting to the 11g (or later) database.

Note:

Applications using Oracle 10g that require the performance of persistent connections can reduce the amount of database server memory needed by using Oracle Shared servers (previously known as Multi Threaded Servers). Refer to Oracle documentation for information.

DRCP Recommendations and Known Limitations

Changing a password over DRCP connections will fail with the error ORA-56609: Usage not supported with DRCP. This is a documented restriction of Oracle Database 11g.

From OCI8 1.3, persistent connections can be closed by the user, allowing greater control over connection resource usage. Persistent connections will now also be closed automatically when there is no PHP variable referencing them, such as at the end of scope of a PHP user function. This will rollback any uncommitted transaction. These changes to persistent connections make them behave similarly to non-persistent connections, simplifying the interface, allowing for greater application consistency and predictability. Use oci8.old_oci_close_semantics set to On to retain the historical behavior.

If the Oracle Database is version 11.1.0.6, then the Oracle database patch for Oracle bug 6474441 must be applied to use DRCP. Without this patch, errors such as ORA-01000: maximum open cursors exceeded, ORA-01001 invalid cursor or ORA-01002 fetch out of sequence may occur. This bug was fixed in Oracle 11.1.0.7 onwards.

If the Oracle 11.1.0.6 database patch cannot be applied, one of the following three workarounds can be used instead:

  • Connect using Oracle Dedicated or Shared servers instead of DRCP.
  • Set PHP's oci8.statement_cache_size to 0.
  • Set an event in the database initialization parameter file: event="56699 trace name context forever, level 128".

Oracle Database 11.1.0.7 and the Oracle Database 11.1.0.6 patch for Oracle bug 6474441 allow PHP applications with DRCP connection to use a database LOGON trigger to set session properties at the time of session creation. Examples of such settings are the NLS language and the date format.

If the Oracle 11.1.0.6 database patch cannot be applied, one of the following workarounds can be used instead of using LOGON triggers:

  • After logon, explicitly set the session properties using PHP application code.
  • Connect using Oracle Dedicated or Shared servers instead of DRCP.

The automatic re-establishment of PHP persistent connections after an Apache or FCGI process respawns means LOGON triggers in PHP are only recommended for setting session attributes and not for per-application user connection requests. This is even more so with DRCP due to the automatic pool sizing and with the way LOGON triggers fire with DRCP authentication.

范例
OCI8 Fast Application Notification (FAN) Support
OCI8


OCI8 Fast Application Notification (FAN) Support

FAN support gives fast connection failover, an Oracle Database high availability feature. This allows PHP OCI8 scripts to be notified when a database machine or database instance becomes unavailable. Without FAN, OCI8 can hang until a TCP timeout occurs and an error is returned, which might be several minutes. Enabling FAN in OCI8 can allow applications to detect errors and re-connect to an available database instance without the web user being aware of an outage.

FAN support is available when the Oracle client libraries that PHP links with and the Oracle Database are either version 10gR2 or later.

FAN benefits users of Oracle's clustering technology (RAC) because connections to surviving database instances can be immediately made. Users of Oracle's Data Guard with a broker will see the FAN events generated when the standby database goes online. Standalone databases will send FAN events when the database restarts.

For active connections, when a machine or database instance becomes unavailable, a connection failure error will be returned by the OCI8 extension function currently being called. On a subsequent PHP script re-connect, a connection to a surviving database instance will be established. The OCI8 extension also transparently cleans up any idle connections affected by a database machine or instance failure so PHP connect calls will establish a fresh connection without the script being aware of any service disruption.

When oci8.events is On, it is suggested to set oci8.ping_interval to -1 to disable pinging, since enabling FAN events provide pro-active connection management of idle connections made invalid by a service disruption.

To enable FAN support in PHP OCI8, build PHP OCI8 with Oracle 10gR2 or later libraries and then follow these steps:

  • As a privileged database administrator, use a program like SQL*Plus to enable the database service to post FAN events, for example:

        SQL> execute dbms_service.modify_service(
                   SERVICE_NAME        => 'sales',
                   AQ_HA_NOTIFICATIONS => TRUE);

  • Edit php.ini and add

        oci8.events = On

  • If the application does not already handle OCI8 error conditions, modify it to detect failures and take appropriate action. This may include re-connecting and re-executing statements.
  • Run the application, connecting to Oracle Database 10gR2 or later.

OCI8 Connection Handling and Connection Pooling
OCI8 and DTrace Dynamic Tracing
OCI8


OCI8 and DTrace Dynamic Tracing

OCI8 2.0 introduced static DTrace probes that can be used on operating systems that support DTrace. See DTrace Dynamic Tracing for an overview of PHP and DTrace.

Installing OCI8 with DTrace Support

To enable DTrace support in PHP OCI8, build OCI8 as a shared extension after setting PHP_DTRACE.

$ export PHP_DTRACE=yes
$ pecl install oci8

Edit php.ini, set extension_dir to the directory with the created oci8.so and also enable the extension by adding:

extension=oci8.so

If you install PHP OCI8 2.0 from PECL using phpize and configure (instead of pecl), you will still need to set PHP_DTRACE=yes. This is because the --enable-dtrace option will be ignored by the limited configure script of a PECL bundle.

See Installation of PECL extensions for general PECL installation instructions.

DTrace Static Probes in PHP OCI8

The following static probes are available in PHP OCI8
Probe Name | Probe Description | Probe Arguments
oci8-connect-entry | Initiated by oci_connect(), oci_pconnect() and oci_new_connect(). Fires before database connection is established. | char *username, char *dbname, char *charset, long session_mode, int persistent, int exclusive
oci8-connect-return | Fires at the end of connection. | void *connection
oci8-check-connection | Fires if an Oracle error might have caused the connection to become invalid. | void *connection, char *client_id, int is_open, long errcode, unsigned long server_status
oci8-sqltext | Fires when oci_parse() is executed. | void *connection, char *client_id, void *statement, char *sql
oci8-connection-close | Fires when the connection to the database is completely destroyed. | void *connection
oci8-error | Fires if an Oracle error occurs. | int status, long errcode
oci8-execute-mode | Fires at oci_execute() to show the execution mode. | void *connection, char *client_id, void *statement, unsigned int mode

These probes are useful for tracing OCI8 scripts.

The connection and statement are the pointers to internal structures used for tracking PHP connections and executed statements.

The client_id is the value set by oci_set_client_identifier().

Core PHP also has static probes. See DTrace Static Probes in Core PHP.

Internal Debugging DTrace Probes in OCI8
Probe Name
oci8-connect-expiry
oci8-connect-lookup
oci8-connect-p-dtor-close
oci8-connect-p-dtor-release
oci8-connect-type
oci8-sesspool-create
oci8-sesspool-stats
oci8-sesspool-type

These probes are useful for OCI8 maintainers. Refer to the OCI8 source code for arguments and to see when the will fire.

Listing DTrace Static Probes in PHP OCI8

To list available probes, start a PHP process and then run:

# dtrace -l

The output will be similar to:

   ID   PROVIDER            MODULE                          FUNCTION NAME
   [ . . . ]
   17 phpoci22116           oci8.so   php_oci_dtrace_check_connection oci8-check-connection
   18 phpoci22116           oci8.so                php_oci_do_connect oci8-connect-entry
   19 phpoci22116           oci8.so         php_oci_persistent_helper oci8-connect-expiry
   20 phpoci22116           oci8.so             php_oci_do_connect_ex oci8-connect-lookup
   21 phpoci22116           oci8.so  php_oci_pconnection_list_np_dtor oci8-connect-p-dtor-close
   22 phpoci22116           oci8.so  php_oci_pconnection_list_np_dtor oci8-connect-p-dtor-release
   23 phpoci22116           oci8.so                php_oci_do_connect oci8-connect-return
   24 phpoci22116           oci8.so             php_oci_do_connect_ex oci8-connect-type
   25 phpoci22116           oci8.so          php_oci_connection_close oci8-connection-close
   26 phpoci22116           oci8.so                     php_oci_error oci8-error
   27 phpoci22116           oci8.so         php_oci_statement_execute oci8-execute-mode
   28 phpoci22116           oci8.so              php_oci_create_spool oci8-sesspool-create
   29 phpoci22116           oci8.so            php_oci_create_session oci8-sesspool-stats
   30 phpoci22116           oci8.so            php_oci_create_session oci8-sesspool-type
   31 phpoci22116           oci8.so          php_oci_statement_create oci8-sqltext

The Provider column values consist of phpoci and the process id of the currently running PHP process.

The Function column refers to PHP's internal C implementation function names where each provider is located.

If a PHP process is not running, then no PHP probes will be shown.

DTrace with PHP OCI8 Example

This example shows the basics of the DTrace D scripting language.

Example #1 user_oci8_probes.d for tracing all user-level PHP OCI8 Static Probes with DTrace

#!/usr/sbin/dtrace -Zs

#pragma D option quiet

php*:::oci8-connect-entry
{
    printf("%lld: PHP connect-entry\n", walltimestamp);
    printf("  credentials=\"%s@%s\"\n", arg0 ? copyinstr(arg0) : "", arg1 ? copyinstr(arg1) : "");
    printf("  charset=\"%s\"\n", arg2 ? copyinstr(arg2) : "");
    printf("  session_mode=%ld\n", (long)arg3);
    printf("  persistent=%d\n", (int)arg4);
    printf("  exclusive=%d\n", (int)arg5);
}

php*:::oci8-connect-return
{
    printf("%lld: PHP oci8-connect-return\n", walltimestamp);
    printf("  connection=0x%p\n", (void *)arg0);
}

php*:::oci8-connection-close
{
    printf("%lld: PHP oci8-connect-close\n", walltimestamp);
    printf("  connection=0x%p\n", (void *)arg0);
}

php*:::oci8-error
{
    printf("%lld: PHP oci8-error\n", walltimestamp);
    printf("  status=%d\n", (int)arg0);
    printf("  errcode=%ld\n", (long)arg1);
}

php*:::oci8-check-connection
{
    printf("%lld: PHP oci8-check-connection\n", walltimestamp);
    printf("  connection=0x%p\n", (void *)arg0);
    printf("  client_id=\"%s\"\n", arg1 ? copyinstr(arg1) : "");
    printf("  is_open=%d\n", arg2);
    printf("  errcode=%ld\n", (long)arg3);
    printf("  server_status=%lu\n", (unsigned long)arg4);
}

php*:::oci8-sqltext
{
    printf("%lld: PHP oci8-sqltext\n", walltimestamp);
    printf("  connection=0x%p\n", (void *)arg0);
    printf("  client_id=\"%s\"\n", arg1 ? copyinstr(arg1) : "");
    printf("  statement=0x%p\n", (void *)arg2);
    printf("  sql=\"%s\"\n", arg3 ? copyinstr(arg3) : "");
}

php*:::oci8-execute-mode
{
    printf("%lld: PHP oci8-execute-mode\n", walltimestamp);
    printf("  connection=0x%p\n", (void *)arg0);
    printf("  client_id=\"%s\"\n", arg1 ? copyinstr(arg1) : "");
    printf("  statement=0x%p\n", (void *)arg2);
    printf("  mode=0x%x\n", arg3);
}

This script uses the -Z option to dtrace, allowing it to be run when there is no PHP process executing. If this option were omitted the script would immediately terminate when no PHP executable was running because it knows none of the probes to be monitored are in existence.

On multi-CPU machines the probe ordering might not appear to be sequential. This depends on which CPU was processing the probes, and how threads migrate across CPUs. Displaying probe time stamps helps reduce confusion.

The script traces all user-level PHP OCI8 static probe points throughout the duration of a running PHP script. Run the D script:

# ./user_oci8_probes.d

Run a PHP script or application. The monitoring D script will output each probe's arguments as it fires. For example, a simple PHP script that queries a table might produce the following trace output:

1381794982092854582: PHP connect-entry
  credentials="hr@localhost/pdborcl"
  charset=""
  session_mode=0
  persistent=0
  exclusive=0
1381794982183158766: PHP oci8-connect-return
  connection=0x7f4a7907bfb8
1381794982183594576: PHP oci8-sqltext
  connection=0x7f4a7907bfb8
  client_id="Chris"
  statement=0x7f4a7907c2a0
  sql="select * from employees"
1381794982183783706: PHP oci8-execute-mode
  connection=0x7f4a7907bfb8
  client_id="Chris"
  statement=0x7f4a7907c2a0
  mode=0x20
1381794982444344390: PHP oci8-connect-close
  connection=0x7f4a7907bfb8

When monitoring is complete, the D script can be terminated with a ^C.

See Also

  • DTrace Dynamic Tracing
OCI8 Fast Application Notification (FAN) Support
Supported Datatypes
OCI8


Supported Datatypes

The driver supports the following types when binding parameters using the oci_bind_by_name() function:
Type | Mapping
SQLT_NTY | Maps a native collection type from a PHP collection object, such as those created by oci_new_collection().
SQLT_BFILEE | Maps a native descriptor, such as those created by oci_new_descriptor().
SQLT_CFILEE | Maps a native descriptor, such as those created by oci_new_descriptor().
SQLT_CLOB | Maps a native descriptor, such as those created by oci_new_descriptor().
SQLT_BLOB | Maps a native descriptor, such as those created by oci_new_descriptor().
SQLT_RDD | Maps a native descriptor, such as those created by oci_new_descriptor().
SQLT_NUM | Converts the PHP parameter to a 'C' long type, and binds to that value.
SQLT_RSET | Maps a native statement handle, such as those created by oci_parse() or those retrieved from other OCI queries.
SQLT_BOL | Bind the PHP parameter to a PL/SQL BOOLEAN
SQLT_CHR and any other type | Converts the PHP parameter to a string type and binds as a string.
The following types are supported when retrieving columns from a result set:
Type | Mapping
SQLT_RSET | Creates an oci statement resource to represent the cursor.
SQLT_RDD | Creates a ROWID object.
SQLT_BLOB | Creates a LOB object.
SQLT_CLOB | Creates a LOB object.
SQLT_BFILE | Creates a LOB object.
SQLT_LNG | Bound as SQLT_CHR, returned as a string
SQLT_LBI | Bound as SQLT_BIN, returned as a string
Any other type | Bound as SQLT_CHR, returned as a string
OCI8 and DTrace Dynamic Tracing
OCI8 函数
OCI8


OCI8 函数

Table of Contents

  • oci_bind_array_by_name — Binds a PHP array to an Oracle PL/SQL array parameter
  • oci_bind_by_name — 绑定一个 PHP 变量到一个 Oracle 位置标志符
  • oci_cancel — 中断游标读取数据
  • oci_client_version — Returns the Oracle client library version
  • oci_close — 关闭 Oracle 连接
  • oci_commit — 提交未执行的事务处理
  • oci_connect — 建立一个到 Oracle 服务器的连接
  • oci_define_by_name — 在 SELECT 中使用 PHP 变量作为定义的步骤
  • oci_error — 返回上一个错误
  • oci_execute — 执行一条语句
  • oci_fetch_all — 获取结果数据的所有行到一个数组
  • oci_fetch_array — Returns the next row from a query as an associative or numeric array
  • oci_fetch_assoc — Returns the next row from a query as an associative array
  • oci_fetch_object — Returns the next row from a query as an object
  • oci_fetch_row — Returns the next row from a query as a numeric array
  • oci_fetch — Fetches the next row into result-buffer
  • oci_field_is_null — 检查字段是否为 NULL
  • oci_field_name — 返回字段名
  • oci_field_precision — 返回字段精度
  • oci_field_scale — 返回字段范围
  • oci_field_size — 返回字段大小
  • oci_field_type_raw — 返回字段的原始 Oracle 数据类型
  • oci_field_type — 返回字段的数据类型
  • oci_free_descriptor — Frees a descriptor
  • oci_free_statement — 释放关联于语句或游标的所有资源
  • oci_get_implicit_resultset — Returns the next child statement resource from a parent statement resource that has Oracle Database 12c Implicit Result Sets
  • oci_internal_debug — 打开或关闭内部调试输出
  • oci_lob_copy — Copies large object
  • oci_lob_is_equal — Compares two LOB/FILE locators for equality
  • oci_new_collection — 分配新的 collection 对象
  • oci_new_connect — 建定一个到 Oracle 服务器的新连接
  • oci_new_cursor — 分配并返回一个新的游标（语句句柄）
  • oci_new_descriptor — 初始化一个新的空 LOB 或 FILE 描述符
  • oci_num_fields — 返回结果列的数目
  • oci_num_rows — 返回语句执行后受影响的行数
  • oci_parse — 配置 Oracle 语句预备执行
  • oci_password_change — 修改 Oracle 用户的密码
  • oci_pconnect — 使用一个持久连接连到 Oracle 数据库
  • oci_result — 返回所取得行中字段的值
  • oci_rollback — 回滚未提交的事务
  • oci_server_version — 返回服务器版本信息
  • oci_set_action — Sets the action name
  • oci_set_client_identifier — Sets the client identifier
  • oci_set_client_info — Sets the client information
  • oci_set_edition — Sets the database edition
  • oci_set_module_name — Sets the module name
  • oci_set_prefetch — 设置预提取行数
  • oci_statement_type — 返回 OCI 语句的类型
Supported Datatypes
oci_bind_array_by_name
OCI8


Binds a PHP array to an Oracle PL/SQL array parameter

OCI8 函数
oci_bind_by_name
OCI8 函数
PHP Manual

oci_bind_array_by_name

(PHP 5 >= 5.1.2, PHP 7, PECL OCI8 >= 1.2.0)

oci_bind_array_by_name — Binds a PHP array to an Oracle PL/SQL array parameter

说明

bool oci_bind_array_by_name ( resource $statement , string $name , array &$var_array , int $max_table_length [, int $max_item_length = -1 [, int $type = SQLT_AFC ]] )

Binds the PHP array var_array to the Oracle placeholder name, which points to an Oracle PL/SQL array. Whether it will be used for input or output will be determined at run-time.

参数

statement

A valid OCI statement identifier.

name

The Oracle placeholder.

var_array

An array.

max_table_length

Sets the maximum length both for incoming and result arrays.

max_item_length

Sets maximum length for array items. If not specified or equals to -1, oci_bind_array_by_name() will find the longest element in the incoming array and will use it as the maximum length.

type

Should be used to set the type of PL/SQL array items. See list of available types below:

  • SQLT_NUM - for arrays of NUMBER.

  • SQLT_INT - for arrays of INTEGER (Note: INTEGER it is actually a synonym for NUMBER(38), but SQLT_NUM type won't work in this case even though they are synonyms).

  • SQLT_FLT - for arrays of FLOAT.

  • SQLT_AFC - for arrays of CHAR.

  • SQLT_CHR - for arrays of VARCHAR2.

  • SQLT_VCS - for arrays of VARCHAR.

  • SQLT_AVC - for arrays of CHARZ.

  • SQLT_STR - for arrays of STRING.

  • SQLT_LVC - for arrays of LONG VARCHAR.

  • SQLT_ODT - for arrays of DATE.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 oci_bind_array_by_name() example

<?php

$conn = oci_connect("hr", "hrpwd", "localhost/XE");
if (!$conn) {
    $m = oci_error();
    trigger_error(htmlentities($m['message']), E_USER_ERROR);
}

$create = "CREATE TABLE bind_example(name VARCHAR(20))";
$stid = oci_parse($conn, $create);
oci_execute($stid);

$create_pkg = "
CREATE OR REPLACE PACKAGE ARRAYBINDPKG1 AS
  TYPE ARRTYPE IS TABLE OF VARCHAR(20) INDEX BY BINARY_INTEGER;
  PROCEDURE iobind(c1 IN OUT ARRTYPE);
END ARRAYBINDPKG1;";
$stid = oci_parse($conn, $create_pkg);
oci_execute($stid);

$create_pkg_body = "
CREATE OR REPLACE PACKAGE BODY ARRAYBINDPKG1 AS
  CURSOR CUR IS SELECT name FROM bind_example;
  PROCEDURE iobind(c1 IN OUT ARRTYPE) IS
    BEGIN
    -- Bulk Insert
    FORALL i IN INDICES OF c1
      INSERT INTO bind_example VALUES (c1(i));

    -- Fetch and reverse
    IF NOT CUR%ISOPEN THEN
      OPEN CUR;
    END IF;
    FOR i IN REVERSE 1..5 LOOP
      FETCH CUR INTO c1(i);
      IF CUR%NOTFOUND THEN
        CLOSE CUR;
        EXIT;
      END IF;
    END LOOP;
  END iobind;
END ARRAYBINDPKG1;";
$stid = oci_parse($conn, $create_pkg_body);
oci_execute($stid);

$stid = oci_parse($conn, "BEGIN arraybindpkg1.iobind(:c1); END;");
$array = array("one", "two", "three", "four", "five");
oci_bind_array_by_name($stid, ":c1", $array, 5, -1, SQLT_CHR);
oci_execute($stid);

var_dump($array);

?>

OCI8 函数
oci_bind_by_name
OCI8 函数


绑定一个 PHP 变量到一个 Oracle 位置标志符

oci_bind_array_by_name
oci_cancel
OCI8 函数
PHP Manual

oci_bind_by_name

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_bind_by_name — 绑定一个 PHP 变量到一个 Oracle 位置标志符

说明

bool oci_bind_by_name ( resource $stmt , string $ph_name , mixed &$variable [, int $maxlength [, int $type ]] )

oci_bind_by_name() 将 PHP 变量 variable 绑定到 Oracle 的位置标志符 ph_name。该变量是否会被用作输入输出是在运行时决定的，并且函数给该变量分配必要的存储空间。length 参数确定该绑定的最大长度，如果将 length 设为 -1，oci_bind_by_name() 会用 variable 变量的当前长度确定绑定的最大长度。

如果要绑定一个抽象数据类型（LOB/ROWID/BFILE），需要先用 oci_new_descriptor() 函数分配空间。length 没有用于抽象数据类型，应被设为 -1。type 参数告诉 Oracle 要使用什么样的描述符。可能的值为：

  • SQLT_FILE - 对应于 BFILE；

  • SQLT_CFILE - 对应于 CFILE；

  • SQLT_CLOB - 对应于 CLOB；

  • SQLT_BLOB - 对应于 BLOB；

  • SQLT_ROWID - 对应于 ROWID；

  • SQLT_NTY - 对应于有名字的数据类型；

  • SQLT_INT - 对应于 integers；

  • SQLT_CHR - 对应于 VARCHARs；

  • SQLT_BIN - 对应于 RAW 列；

  • SQLT_LNG - 对应于 LONG 列；

  • SQLT_LBI - 对应于 LONG RAW 列；

  • SQLT_RSET - 对应于游标，是之前由 oci_new_cursor() 创建的。

Example #1 oci_bind_by_name() 例子

<?php
/* oci_bind_by_name example thies at thieso dot net (980221)
  inserts 3 records into emp, and uses the ROWID for updating the
  records just after the insert.
*/

$conn = oci_connect("scott", "tiger");

$stmt = oci_parse($conn, "
                          INSERT INTO
                                     emp (empno, ename)
                                              VALUES
                                     (:empno,:ename)
                            RETURNING
                                     ROWID
                                 INTO
                                     :rid
                                         ");

$data = array(
              1111 => "Larry",
              2222 => "Bill",
              3333 => "Jim"
             );

$rowid = oci_new_descriptor($conn, OCI_D_ROWID);

oci_bind_by_name($stmt, ":empno", $empno, 32);
oci_bind_by_name($stmt, ":ename", $ename, 32);
oci_bind_by_name($stmt, ":rid",   $rowid, -1, OCI_B_ROWID);

$update = oci_parse($conn, "
                            UPDATE
                                  emp
                               SET
                                  sal = :sal
                             WHERE
                                  ROWID = :rid
                             ");
oci_bind_by_name($update, ":rid", $rowid, -1, OCI_B_ROWID);
oci_bind_by_name($update, ":sal", $sal,   32);

$sal = 10000;

foreach ($data as $empno => $ename) {
    oci_execute($stmt);
    oci_execute($update);
}

$rowid->free();

oci_free_statement($update);
oci_free_statement($stmt);

$stmt = oci_parse($conn, "
                          SELECT
                                *
                            FROM
                                emp
                           WHERE
                                empno
                              IN
                                (1111,2222,3333)
                              ");
oci_execute($stmt);

while ($row = oci_fetch_assoc($stmt)) {
    var_dump($row);
}

oci_free_statement($stmt);

/* delete our "junk" from the emp table.... */
$stmt = oci_parse($conn, "
                          DELETE FROM
                                     emp
                                WHERE
                                     empno
                                   IN
                                     (1111,2222,3333)
                                   ");
oci_execute($stmt);
oci_free_statement($stmt);

oci_close($conn);
?>

记住，本函数删除了行尾的空白字符。见以下例子：

Example #2 oci_bind_by_name() 例子

<?php
$connection = oci_connect('apelsin','kanistra');
$query = "INSERT INTO test_table VALUES(:id, :text)";

$statement = oci_parse($query);
oci_bind_by_name($statement, ":id", 1);
oci_bind_by_name($statement, ":text", "trailing spaces follow     ");
oci_execute($statement);
/*
 This code will insert into DB string 'trailing spaces follow', without
 trailing spaces
*/
?>

Example #3 oci_bind_by_name() 例子

<?php
$connection = oci_connect('apelsin','kanistra');
$query = "INSERT INTO test_table VALUES(:id, 'trailing spaces follow      ')";

$statement = oci_parse($query);
oci_bind_by_name($statement, ":id", 1);
oci_execute($statement);
/*
 And this code will add 'trailing spaces follow      ', preserving
 trailing whitespaces
*/
?>

Warning

不要将 magic_quotes_gpc 或 addslashes() 与 oci_bind_by_name() 同时使用，因为不需要转义，任何自动加上的引号都会被写入数据库中，因为 oci_bind_by_name() 不能分辨有意加上的引号和魔术引号。

成功时返回 TRUE， 或者在失败时返回 FALSE。

Note:

在 PHP 5.0.0 之前的版本必须使用 ocibindbyname() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_bind_by_name() 的别名。不过其已被废弃，不推荐使用。

参数

statement

A valid OCI8 statement identifer.

bv_name

The colon-prefixed bind variable placeholder used in the statement. The colon is optional in bv_name. Oracle does not use question marks for placeholders.

variable

The PHP variable to be associated with bv_name

maxlength

Sets the maximum length for the data. If you set it to -1, this function will use the current length of variable to set the maximum length. In this case the variable must exist and contain data when oci_bind_by_name() is called.

type

The datatype that Oracle will treat the data as. The default type used is SQLT_CHR. Oracle will convert the data between this type and the database column (or PL/SQL variable type), when possible.

If you need to bind an abstract datatype (LOB/ROWID/BFILE) you need to allocate it first using the oci_new_descriptor() function. The length is not used for abstract datatypes and should be set to -1.

Possible values for type are:

  • SQLT_BFILEE or OCI_B_BFILE - for BFILEs;

  • SQLT_CFILEE or OCI_B_CFILEE - for CFILEs;

  • SQLT_CLOB or OCI_B_CLOB - for CLOBs;

  • SQLT_BLOB or OCI_B_BLOB - for BLOBs;

  • SQLT_RDD or OCI_B_ROWID - for ROWIDs;

  • SQLT_NTY or OCI_B_NTY - for named datatypes;

  • SQLT_INT or OCI_B_INT - for integers;

  • SQLT_CHR - for VARCHARs;

  • SQLT_BIN or OCI_B_BIN - for RAW columns;

  • SQLT_LNG - for LONG columns;

  • SQLT_LBI - for LONG RAW columns;

  • SQLT_RSET - for cursors created with oci_new_cursor().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #4 Inserting data with oci_bind_by_name()

<?php

// Create the table with:
//   CREATE TABLE mytab (id NUMBER, text VARCHAR2(40));

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $m = oci_error();
    trigger_error(htmlentities($m['message']), E_USER_ERROR);
}

$stid = oci_parse($conn,"INSERT INTO mytab (id, text) VALUES(:id_bv, :text_bv)");

$id = 1;
$text = "Data to insert     ";
oci_bind_by_name($stid, ":id_bv", $id);
oci_bind_by_name($stid, ":text_bv", $text);
oci_execute($stid);

// Table now contains: 1, 'Data to insert     '

?>

Example #5 Binding once for multiple executions

<?php

// Create the table with:
//   CREATE TABLE mytab (id NUMBER);

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $m = oci_error();
    trigger_error(htmlentities($m['message']), E_USER_ERROR);
}

$a = array(1,3,5,7,11);  // data to insert

$stid = oci_parse($conn, 'INSERT INTO mytab (id) VALUES (:bv)');
oci_bind_by_name($stid, ':bv', $v, 20);
foreach ($a as $v) {
    $r = oci_execute($stid, OCI_DEFAULT);  // don't auto commit
}
oci_commit($conn); // commit everything at once

// Table contains five rows: 1, 3, 5, 7, 11

oci_free_statement($stid);
oci_close($conn);

?>

Example #6 Binding with a foreach() loop

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $m = oci_error();
    trigger_error(htmlentities($m['message']), E_USER_ERROR);
}

$sql = 'SELECT * FROM departments WHERE department_name = :dname AND location_id = :loc';
$stid = oci_parse($conn, $sql);

$ba = array(':dname' => 'IT Support', ':loc' => 1700);

foreach ($ba as $key => $val) {

    // oci_bind_by_name($stid, $key, $val) does not work
    // because it binds each placeholder to the same location: $val
    // instead use the actual location of the data: $ba[$key]
    oci_bind_by_name($stid, $key, $ba[$key]);
}

oci_execute($stid);
$row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS);
foreach ($row as $item) {
    print $item."<br>\n";
}

oci_free_statement($stid);
oci_close($conn);

?>

Example #7 Binding in a WHERE clause

<?php

$conn = oci_connect("hr", "hrpwd", "localhost/XE");
if (!$conn) {
    $m = oci_error();
    trigger_error(htmlentities($m['message']), E_USER_ERROR);
}

$sql = 'SELECT last_name FROM employees WHERE employee_id = :eidbv';
$stid = oci_parse($conn, $sql);
$myeid = 101;
oci_bind_by_name($stid, ':eidbv', $myeid);
oci_execute($stid);
$row = oci_fetch_array($stid, OCI_ASSOC);
echo $row['LAST_NAME'] ."<br>\n";

// Output is
//    Kochhar

oci_free_statement($stid);
oci_close($conn);

?>

Example #8 Binding with a LIKE clause

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $m = oci_error();
    trigger_error(htmlentities($m['message']), E_USER_ERROR);
}

// Find all cities that begin with 'South'
$stid = oci_parse($conn, "SELECT city FROM locations WHERE city LIKE :bv");
$city = 'South%';  // '%' is a wildcard in SQL
oci_bind_by_name($stid, ":bv", $city);
oci_execute($stid);
oci_fetch_all($stid, $res);

foreach ($res['CITY'] as $c) {
    print $c . "<br>\n";
}
// Output is
//   South Brunswick
//   South San Francisco
//   Southlake

oci_free_statement($stid);
oci_close($conn);

?>

Example #9 Binding with REGEXP_LIKE

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $m = oci_error();
    trigger_error(htmlentities($m['message']), E_USER_ERROR);
}

// Find all cities that contain 'ing'
$stid = oci_parse($conn, "SELECT city FROM locations WHERE REGEXP_LIKE(city, :bv)");
$city = '.*ing.*';
oci_bind_by_name($stid, ":bv", $city);
oci_execute($stid);
oci_fetch_all($stid, $res);

foreach ($res['CITY'] as $c) {
    print $c . "<br>\n";
}
// Output is
//   Beijing
//   Singapore

oci_free_statement($stid);
oci_close($conn);

?>

For a small, fixed number of IN clause conditions, use individual bind variables. Values unknown at run time can be set to NULL. This allows a single statement to be used by all application users, maximizing Oracle DB cache efficiency.

Example #10 Binding Multiple Values in an IN Clause

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $m = oci_error();
    trigger_error(htmlentities($m['message']), E_USER_ERROR);
}

$sql = 'SELECT last_name FROM employees WHERE employee_id in (:e1, :e2, :e3)';
$stid = oci_parse($conn, $sql);
$mye1 = 103;
$mye2 = 104;
$mye3 = NULL; // pretend we were not given this value
oci_bind_by_name($stid, ':e1', $mye1);
oci_bind_by_name($stid, ':e2', $mye2);
oci_bind_by_name($stid, ':e3', $mye3);
oci_execute($stid);
oci_fetch_all($stid, $res);
foreach ($res['LAST_NAME'] as $name) {
    print $name ."<br>\n";
}

// Output is
//   Ernst
//   Hunold

oci_free_statement($stid);
oci_close($conn);

?>

Example #11 Binding a ROWID returned by a query

<?php

// Create the table with:
//   CREATE TABLE mytab (id NUMBER, salary NUMBER, name VARCHAR2(40));
//   INSERT INTO mytab (id, salary, name) VALUES (1, 100, 'Chris');
//   COMMIT;

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $m = oci_error();
    trigger_error(htmlentities($m['message']), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT ROWID, name FROM mytab WHERE id = :id_bv FOR UPDATE');
$id = 1;
oci_bind_by_name($stid, ':id_bv', $id);
oci_execute($stid);
$row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS);
$rid = $row['ROWID'];
$name = $row['NAME'];

// Change name to upper case & save the changes
$name = strtoupper($name);
$stid = oci_parse($conn, 'UPDATE mytab SET name = :n_bv WHERE ROWID = :r_bv');
oci_bind_by_name($stid, ':n_bv', $name);
oci_bind_by_name($stid, ':r_bv', $rid, -1, OCI_B_ROWID);
oci_execute($stid);

// The table now contains 1, 100, CHRIS

oci_free_statement($stid);
oci_close($conn);

?>

Example #12 Binding a ROWID on INSERT

<?php

// This example inserts an id & name, and then updates the salary
// Create the table with:
//   CREATE TABLE mytab (id NUMBER, salary NUMBER, name VARCHAR2(40));
//
// Based on original ROWID example by thies at thieso dot net (980221)

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $m = oci_error();
    trigger_error(htmlentities($m['message']), E_USER_ERROR);
}

$sql = "INSERT INTO mytab (id, name) VALUES(:id_bv, :name_bv)
        RETURNING ROWID INTO :rid";

$ins_stid = oci_parse($conn, $sql);

$rowid = oci_new_descriptor($conn, OCI_D_ROWID);
oci_bind_by_name($ins_stid, ":id_bv",   $id,    10);
oci_bind_by_name($ins_stid, ":name_bv", $name,  32);
oci_bind_by_name($ins_stid, ":rid",     $rowid, -1, OCI_B_ROWID);

$sql = "UPDATE mytab SET salary = :salary WHERE ROWID = :rid";
$upd_stid = oci_parse($conn, $sql);
oci_bind_by_name($upd_stid, ":rid", $rowid, -1, OCI_B_ROWID);
oci_bind_by_name($upd_stid, ":salary", $salary,   32);

// ids and names to insert
$data = array(1111 => "Larry",
              2222 => "Bill",
              3333 => "Jim");

// Salary of each person
$salary = 10000;

// Insert and immediately update each row
foreach ($data as $id => $name) {
    oci_execute($ins_stid);
    oci_execute($upd_stid);
}

$rowid->free();
oci_free_statement($upd_stid);
oci_free_statement($ins_stid);

// Show the new rows
$stid = oci_parse($conn, "SELECT * FROM mytab");
oci_execute($stid);
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    var_dump($row);
}

oci_free_statement($stid);
oci_close($conn);

?>

Example #13 Binding for a PL/SQL stored function

<?php

//  Before running the PHP program, create a stored function in
//  SQL*Plus or SQL Developer:
//
//  CREATE OR REPLACE FUNCTION myfunc(p IN NUMBER) RETURN NUMBER AS
//  BEGIN
//      RETURN p * 3;
//  END;

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

$p = 8;

$stid = oci_parse($conn, 'begin :r := myfunc(:p); end;');
oci_bind_by_name($stid, ':p', $p);

// The return value is an OUT bind. The default type will be a string
// type so binding a length 40 means that at most 40 digits will be
// returned.
oci_bind_by_name($stid, ':r', $r, 40);

oci_execute($stid);

print "$r\n";   // prints 24

oci_free_statement($stid);
oci_close($conn);

?>

Example #14 Binding parameters for a PL/SQL stored procedure

<?php

//  Before running the PHP program, create a stored procedure in
//  SQL*Plus or SQL Developer:
//
//  CREATE OR REPLACE PROCEDURE myproc(p1 IN NUMBER, p2 OUT NUMBER) AS
//  BEGIN
//      p2 := p1 * 2;
//  END;

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

$p1 = 8;

$stid = oci_parse($conn, 'begin myproc(:p1, :p2); end;');
oci_bind_by_name($stid, ':p1', $p1);

// The second procedure parameter is an OUT bind. The default type
// will be a string type so binding a length 40 means that at most 40
// digits will be returned.
oci_bind_by_name($stid, ':p2', $p2, 40);

oci_execute($stid);

print "$p2\n";   // prints 16

oci_free_statement($stid);
oci_close($conn);

?>

Example #15 Binding a CLOB column

<?php

// Before running, create the table:
//     CREATE TABLE mytab (mykey NUMBER, myclob CLOB);

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

$mykey = 12343;  // arbitrary key for this example;

$sql = "INSERT INTO mytab (mykey, myclob)
        VALUES (:mykey, EMPTY_CLOB())
        RETURNING myclob INTO :myclob";

$stid = oci_parse($conn, $sql);
$clob = oci_new_descriptor($conn, OCI_D_LOB);
oci_bind_by_name($stid, ":mykey", $mykey, 5);
oci_bind_by_name($stid, ":myclob", $clob, -1, OCI_B_CLOB);
oci_execute($stid, OCI_DEFAULT);
$clob->save("A very long string");

oci_commit($conn);

// Fetching CLOB data

$query = 'SELECT myclob FROM mytab WHERE mykey = :mykey';

$stid = oci_parse ($conn, $query);
oci_bind_by_name($stid, ":mykey", $mykey, 5);
oci_execute($stid);

print '<table border="1">';
while ($row = oci_fetch_array($stid, OCI_ASSOC)) {
  $result = $row['MYCLOB']->load();
  print '<tr><td>'.$result.'</td></tr>';
}
print '</table>';

?>

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Warning

Do not use magic_quotes_gpc or addslashes() and oci_bind_by_name() simultaneously as no quoting is needed. Any magically applied quotes will be written into your database because oci_bind_by_name() inserts data verbatim and does not remove quotes or escape characters.

Note:

If you bind a string to a CHAR column in a WHERE clause, remember that Oracle uses blank-padded comparison semantics for CHAR columns. Your PHP variable should be blank padded to the same width as the column for the WHERE clause to succeed.

Note:

The PHP variable argument is a reference. Some forms of loops do not work as expected:

<?php
foreach ($myarray as $key => $value)  {
    oci_bind_by_name($stid, $key, $value);
}
?>

This binds each key to the location of $value, so all bound variables end up pointing to the last loop iteration's value. Instead use the following:

<?php
foreach ($myarray as $key => $value) {
    oci_bind_by_name($stid, $key, $myarray[$key]);
}
?>

Note:

In PHP versions before 5.0.0 you must use ocibindbyname() instead. 在当前版本中，旧的函数名还可以被使用，但已经被废弃并不建议使用。

参见

  • oci_bind_array_by_name() - Binds a PHP array to an Oracle PL/SQL array parameter
  • oci_parse() - 配置 Oracle 语句预备执行

oci_bind_array_by_name
oci_cancel
OCI8 函数


中断游标读取数据

oci_bind_by_name
oci_client_version
OCI8 函数
PHP Manual

oci_cancel

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_cancel — 中断游标读取数据

说明

bool oci_cancel ( resource $statement )

oci_cancel() 使一个游标无效，释放所有与之关联的资源并取消了从中读取的能力。

参数

statement

OCI 语句。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

oci_bind_by_name
oci_client_version
OCI8 函数


Returns the Oracle client library version

oci_cancel
oci_close
OCI8 函数
PHP Manual

oci_client_version

(PHP 5.3.7, PHP 7, PECL OCI8 >= 1.4.6)

oci_client_version — Returns the Oracle client library version

说明

string oci_client_version ( void )

Returns a string containing the version number of the Oracle C client library that PHP is linked with.

参数

None

返回值

Returns the version number as a string.

范例

Example #1 oci_client_version() example

<?php
    echo "Client Version: " . oci_client_version(); // Client version: 11.2.0.2
?>

注释

Note:

Oracle libraries before 10gR2 do not have the underlying functionality to get the client library version number. The string "Unknown" will be returned in this case.

参见

  • oci_server_version() - 返回服务器版本信息

oci_cancel
oci_close
OCI8 函数


关闭 Oracle 连接

oci_client_version
oci_commit
OCI8 函数
PHP Manual

oci_close

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_close — 关闭 Oracle 连接

说明

bool oci_close ( resource $connection )

oci_close() 将 Oracle 连接 connection 关闭。

Note:

自版本 1.1 起 oci_close() 正确关闭 Oracle 连接。使用 oci8.old_oci_close_semantics 选项来恢复本函数的旧行为。

成功时返回 TRUE， 或者在失败时返回 FALSE。

Note:

在 PHP 5.0.0 之前的版本必须使用 ocilogoff() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_close() 的别名。不过其已被废弃，不推荐使用。

参数

connection

An Oracle connection identifier returned by oci_connect(), oci_pconnect(), or oci_new_connect().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Closing a connection

Resources associated with a connection should be closed to ensure the underlying database connection is properly terminated and the database resources are released.

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT * FROM departments');
$r = oci_execute($stid);
oci_fetch_all($stid, $res);
var_dump($res);

// Free the statement identifier when closing the connection
oci_free_statement($stid);
oci_close($conn);

?>

Example #2 Database connections are not closed until all references are closed

The internal refcount of a connection identifier must be zero before the underlying connection to the database is closed.

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT * FROM departments');  // this increases the refcount on $conn
oci_execute($stid);
oci_fetch_all($stid, $res);
var_dump($res);

oci_close($conn);

// $conn is no long usable in the script but the underlying database
// connection is still held open until $stid is freed.
var_dump($conn);  // prints NULL

// While PHP sleeps, querying the Oracle V$SESSION view in a
// terminal window will show that the database user is still connected.
sleep(10);

// When $stid is freed, the database connection is physically closed
oci_free_statement($stid);

// While PHP sleeps, querying the Oracle V$SESSION view in a
// terminal window will show that the database user has disconnected.
sleep(10);

?>

Example #3 Closing a connection opened more than once

When database credentials are reused, both connections must be closed before the underlying database connection is closed.

<?php

$conn1 = oci_connect('hr', 'welcome', 'localhost/XE');

// Using the same credentials reuses the same underlying database connection
// Any uncommitted changes done on $conn1 will be visible in $conn2
$conn2 = oci_connect('hr', 'welcome', 'localhost/XE');

// While PHP sleeps, querying the Oracle V$SESSION view in a
// terminal window will show that only one database user is connected.
sleep(10);

oci_close($conn1); // doesn't close the underlying database connection
var_dump($conn1);  // prints NULL because the variable $conn1 is no longer usable
var_dump($conn2);  // displays that $conn2 is still a valid connection resource

?>

Example #4 Connections are closed when variables go out of scope

When all variables referencing a connection go out of scope and are freed by PHP, a rollback occurs (if necessary) and the underlying connection to the database is closed.

<?php

function myfunc() {
    $conn = oci_connect('hr', 'hrpwd', 'localhost/XE');
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
    }

    $stid = oci_parse($conn, 'UPDATE mytab SET id = 100');
    oci_execute($stid, OCI_NO_AUTO_COMMIT);
    return "Finished";
}

$r = myfunc();
// At this point a rollback occurred and the underlying database connection was released.

print $r;  // displays the function return value "Finished"

?>

注释

Note:

Variables that have a dependency on the connection identifier, such as statement identifiers returned by oci_parse(), must also be freed before the underlying database connection is closed.

Note:

Prior to version PHP 5.1.2 (PECL OCI8 1.1) oci_close() was a no-op. In more recent versions it correctly closes the Oracle connection. Use oci8.old_oci_close_semantics option to restore old behavior of this function.

Note:

The oci_close() function does not close the underlying database connections created with oci_pconnect().

Note:

In PHP versions before 5.0.0 you must use ocilogoff() instead. 在当前版本中，旧的函数名还可以被使用，但已经被废弃并不建议使用。

参见

  • oci_connect() - 建立一个到 Oracle 服务器的连接
  • oci_free_statement() - 释放关联于语句或游标的所有资源

oci_client_version
oci_commit
OCI8 函数


提交未执行的事务处理

oci_close
oci_connect
OCI8 函数
PHP Manual

oci_commit

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_commit — 提交未执行的事务处理

说明

bool oci_commit ( resource $connection )

oci_commit() 将 Oracle 连接 connection 上正在运行的事务中所有未执行的语句提交处理。

Example #1 oci_commit() 例子

<?php
    // Login to Oracle server
    $conn = oci_connect('scott', 'tiger');

    // Parse SQL
    $stmt = oci_parse($conn, "
                              INSERT INTO
                                         employees (name, surname)
                                   VALUES
                                         ('Maxim', 'Maletsky')
                             ");

    /* Execute statement
       OCI_DEFAULT tells oci_execute()
       not to commit statement immediately */
    oci_execute($stmt, OCI_DEFAULT);

    /*
    ....
    Parsing and executing other statements here ...
    ....
    */

    // Commit transaction
    $committed = oci_commit($conn);

    // Test whether commit was successful. If error occurred, return error message
    if (!$committed) {
        $error = oci_error($conn);
        echo 'Commit failed. Oracle reports: ' . $error['message'];
    }

?>

成功时返回 TRUE， 或者在失败时返回 FALSE。

Note:

当关闭连接或脚本结束时（看哪个先）事务会自动回卷。需要明确地调用 oci_commit() 来提交事务，或 oci_rollback() 来中止事务。

Note:

在 PHP 5.0.0 之前的版本必须使用 ocicommit() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_commit() 的别名。不过其已被废弃，不推荐使用。

参见 oci_rollback() 和 oci_execute()。

参数

connection

An Oracle connection identifier, returned by oci_connect(), oci_pconnect(), or oci_new_connect().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #2 oci_commit() example

<?php

// Insert into several tables, rolling back the changes if an error occurs

$conn = oci_connect('hr', 'welcome', 'localhost/XE');

$stid = oci_parse($conn, "INSERT INTO mysalary (id, name) VALUES (1, 'Chris')");

// The OCI_NO_AUTO_COMMIT flag tells Oracle not to commit the INSERT immediately
// Use OCI_DEFAULT as the flag for PHP <= 5.3.1.  The two flags are equivalent
$r = oci_execute($stid, OCI_NO_AUTO_COMMIT);
if (!$r) {
    $e = oci_error($stid);
    trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

$stid = oci_parse($conn, 'INSERT INTO myschedule (startday) VALUES (12)');
$r = oci_execute($stid, OCI_NO_AUTO_COMMIT);
if (!$r) {
    $e = oci_error($stid);
    oci_rollback($conn);  // rollback changes to both tables
    trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

// Commit the changes to both tables
$r = oci_commit($conn);
if (!r) {
    $e = oci_error($conn);
    trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

?>

注释

Note:

Transactions are automatically rolled back when you close the connection, or when the script ends, whichever is soonest. You need to explicitly call oci_commit() to commit the transaction.

Any call to oci_execute() that uses OCI_COMMIT_ON_SUCCESS mode explicitly or by default will commit any previous uncommitted transaction.

Any Oracle DDL statement such as CREATE or DROP will automatically commit any uncommitted transaction.

Note:

In PHP versions before 5.0.0 you must use ocicommit() instead. 在当前版本中，旧的函数名还可以被使用，但已经被废弃并不建议使用。

参见

  • oci_execute() - 执行一条语句
  • oci_rollback() - 回滚未提交的事务

oci_close
oci_connect
OCI8 函数


建立一个到 Oracle 服务器的连接

oci_commit
oci_define_by_name
OCI8 函数
PHP Manual

oci_connect

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_connect — 建立一个到 Oracle 服务器的连接

说明

resource oci_connect ( string $username , string $password [, string $db [, string $charset [, int $session_mode ]]] )

oci_connect() 返回一个大多数 OCI 调用都需要的连接标识符。可选的第三个参数可以包含想要连接的本地 Oracle 的实例的或者在 tnsnames.ora 中的条目的名字。如果没有指定可选的第三个参数，PHP 使用环境变量 ORACLE_SID（Oracle 实例）或 TWO_TASK（tnsnames.ora）来确定连接哪一个数据库。

session_mode 参数自版本 1.1 起可用并接受如下值：OCI_DEFAULT，OCI_SYSOPER 和 OCI_SYSDBA。如果指定了 OCI_SYSOPER 或 OCI_SYSDBA 其中之一，oci_connect() 将尝试使用外部认证信息建立特权连接。特权连接默认被禁止。要启用，需要将 oci8.privileged_connect 设为 On。

Note: 对 oci_connect() 用同样的参数第二次及之后的调用将返回第一次调用所返回的连接句柄。也就是说对一个句柄发出的查询也适用于另一个句柄，因为它们是同一个句柄。此行为演示于下面的例 1。如果需要两个句柄在事务上互相隔离开，应该使用 oci_new_connect() 来替代。

使用 Oracle 客户端库来确定字符集。字符集不需要与数据库的字符集相匹配。如果不匹配，Oracle 会尽可能地将数据从数据库字符集进行转换。因为依赖于字符集，可能不能给出可用的结果。转换也增加一些时间开销。

如果不指定，Oracle 客户端用 NLS_LANG 环境变量来决定字符集。

传递此参数可减少连接时间。

Example #1 oci_connect() 例子

<?php
echo "<pre>";
$db = "";

$c1 = oci_connect("scott", "tiger", $db);
$c2 = oci_connect("scott", "tiger", $db);

function create_table($conn)
{
  $stmt = oci_parse($conn, "create table scott.hallo (test varchar2(64))");
  oci_execute($stmt);
  echo $conn . " created table\n\n";
}

function drop_table($conn)
{
  $stmt = oci_parse($conn, "drop table scott.hallo");
  oci_execute($stmt);
  echo $conn . " dropped table\n\n";
}

function insert_data($conn)
{
  $stmt = oci_parse($conn, "insert into scott.hallo
            values('$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))");
  oci_execute($stmt, OCI_DEFAULT);
  echo $conn . " inserted hallo\n\n";
}

function delete_data($conn)
{
  $stmt = oci_parse($conn, "delete from scott.hallo");
  oci_execute($stmt, OCI_DEFAULT);
  echo $conn . " deleted hallo\n\n";
}

function commit($conn)
{
  oci_commit($conn);
  echo $conn . " committed\n\n";
}

function rollback($conn)
{
  oci_rollback($conn);
  echo $conn . " rollback\n\n";
}

function select_data($conn)
{
  $stmt = oci_parse($conn, "select * from scott.hallo");
  oci_execute($stmt, OCI_DEFAULT);
  echo $conn."----selecting\n\n";
  while (oci_fetch($stmt)) {
    echo $conn . " [" . oci_result($stmt, "TEST") . "]\n\n";
  }
  echo $conn . "----done\n\n";
}

create_table($c1);
insert_data($c1);   // Insert a row using c1
insert_data($c2);   // Insert a row using c2

select_data($c1);   // Results of both inserts are returned
select_data($c2);

rollback($c1);      // Rollback using c1

select_data($c1);   // Both inserts have been rolled back
select_data($c2);

insert_data($c2);   // Insert a row using c2
commit($c2);        // Commit using c2

select_data($c1);   // Result of c2 insert is returned

delete_data($c1);   // Delete all rows in table using c1
select_data($c1);   // No rows returned
select_data($c2);   // No rows returned
commit($c1);        // Commit using c1

select_data($c1);   // No rows returned
select_data($c2);   // No rows returned

drop_table($c1);
echo "</pre>";
?>

oci_connect() 如果出错则返回 FALSE。

Note:

在 PHP 5.0.0 之前的版本必须使用 ocilogon() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_connect() 的别名。不过其已被废弃，不推荐使用。

参见 oci_pconnect()，oci_new_connect() 和 oci_close()。

参数

username

The Oracle user name.

password

The password for username.

connection_string

包含要连接的 Oracle 实例。可以是 » Easy Connect 串，或是 tnsnames.ora 文件中的连接名，或是本地 Oracle 实例名。

如果不指定，PHP 使用环境变量来确定连接的 Oracle 实例，诸如 TWO_TASK（Linux 下）或 LOCAL（Windows 下）与 ORACLE_SID 等。

要使用 Easy Connect 命名方法，PHP 必须与 Oracle 10g 或更高版本的客户端库进行链接。Oracle 10g 的 Easy Connect 串格式：[//]host_name[:port][/service_name]。Oracle 11g 则为：[//]host_name[:port][/service_name][:server_type][/instance_name]。服务名可在数据库服务器机器上运行 Oracle 实用程序 lsnrctl status 找到。

tnsnames.ora 文件可在 Oracle Net 查找路径中，此路径包括 $ORACLE_HOME/network/admin 和 /etc。 另一种方法是设置 TNS_ADMIN 以便通过 $TNS_ADMIN/tnsnames.ora 来读取。表确认 web 守护进程可读取此文件。

character_set

使用 Oracle 客户端库来确定字符集。字符集不需要与数据库的字符集相匹配。如果不匹配，Oracle 会尽可能地将数据从数据库字符集进行转换。因为依赖于字符集，可能不能给出可用的结果。转换也增加一些时间开销。

如果不指定，Oracle 客户端用 NLS_LANG 环境变量来决定字符集。

传递此参数可减少连接时间。

session_mode

此参数在 PHP 5（PECL OCI8 1.1）版本开始可用，并收受下列值：OCI_DEFAULT，OCI_SYSOPER 和 OCI_SYSDBA。如为 OCI_SYSOPER 或 OCI_SYSDBA 其中之一，此函数将会使用外部的证书建立有特权的连接。有特权的连接默认是禁用的。需要将 oci8.privileged_connect 设为 On 来启用。

PHP 5.3（PECL OCI8 1.3.4）引进了 OCI_CRED_EXT 模式值。使用外部或操作系统认证必需在 Oracle 数据库中进行配置。OCI_CRED_EXT 标志只可用于用户为 "/"，密码为空的情况。oci8.privileged_connect 可为 On 或 Off。

OCI_CRED_EXT 可与 OCI_SYSOPER 或 OCI_SYSDBA 模式组合使用。

OCI_CRED_EXT 由于安全的原因不支持 Windows 系统。

返回值

Returns a connection identifier or FALSE on error.

范例

Example #2 Basic oci_connect() using Easy Connect syntax

<?php

// Connects to the XE service (i.e. database) on the "localhost" machine
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT * FROM employees');
oci_execute($stid);

echo "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    echo "<tr>\n";
    foreach ($row as $item) {
        echo "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";

?>

Example #3 Basic oci_connect() using a Network Connect name

<?php

// Connects to the MYDB database described in tnsnames.ora file,
// One example tnsnames.ora entry for MYDB could be:
//   MYDB =
//     (DESCRIPTION =
//       (ADDRESS = (PROTOCOL = TCP)(HOST = mymachine.oracle.com)(PORT = 1521))
//       (CONNECT_DATA =
//         (SERVER = DEDICATED)
//         (SERVICE_NAME = XE)
//       )
//     )

$conn = oci_connect('hr', 'welcome', 'MYDB');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT * FROM employees');
oci_execute($stid);

echo "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    echo "<tr>\n";
    foreach ($row as $item) {
        echo "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";

?>

Example #4 oci_connect() with an explicit character set

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE', 'AL32UTF8');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT * FROM employees');
oci_execute($stid);

echo "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    echo "<tr>\n";
    foreach ($row as $item) {
        echo "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";

?>

Example #5 Using multiple calls to oci_connect()

<?php

$c1 = oci_connect("hr", "welcome", 'localhost/XE');
$c2 = oci_connect("hr", "welcome", 'localhost/XE');

// Both $c1 and $c2 show the same PHP resource id meaning they use the
// same underlying database connection
echo "c1 is $c1<br>\n";
echo "c2 is $c2<br>\n";

function create_table($conn)
{
    $stmt = oci_parse($conn, "create table hallo (test varchar2(64))");
    oci_execute($stmt);
    echo "Created table<br>\n";
}

function drop_table($conn)
{
    $stmt = oci_parse($conn, "drop table hallo");
    oci_execute($stmt);
    echo "Dropped table<br>\n";
}

function insert_data($connname, $conn)
{
    $stmt = oci_parse($conn, "insert into hallo
              values(to_char(sysdate,'DD-MON-YY HH24:MI:SS'))");
    oci_execute($stmt, OCI_DEFAULT);
    echo "$connname inserted row without committing<br>\n";
}

function rollback($connname, $conn)
{
    oci_rollback($conn);
    echo "$connname rollback<br>\n";
}

function select_data($connname, $conn)
{
    $stmt = oci_parse($conn, "select * from hallo");
    oci_execute($stmt, OCI_DEFAULT);
    echo "$connname ----selecting<br>\n";
    while (oci_fetch($stmt)) {
        echo "    " . oci_result($stmt, "TEST") . "<br>\n";
    }
    echo "$connname ----done<br>\n";
}

create_table($c1);

insert_data('c1', $c1);   // Insert a row using c1
sleep(2);                 // sleep to show a different timestamp for the 2nd row
insert_data('c2', $c2);   // Insert a row using c2

select_data('c1', $c1);   // Results of both inserts are returned
select_data('c2', $c2);   // Results of both inserts are returned

rollback('c1', $c1);      // Rollback using c1

select_data('c1', $c1);   // Both inserts have been rolled back
select_data('c2', $c2);

drop_table($c1);

// Closing one of the connections makes the PHP variable unusable, but
// the other could be used
oci_close($c1);
echo "c1 is $c1<br>\n";
echo "c2 is $c2<br>\n";

// Output is:
//    c1 is Resource id #5
//    c2 is Resource id #5
//    Created table
//    c1 inserted row without committing
//    c2 inserted row without committing
//    c1 ----selecting
//        09-DEC-09 12:14:43
//        09-DEC-09 12:14:45
//    c1 ----done
//    c2 ----selecting
//        09-DEC-09 12:14:43
//        09-DEC-09 12:14:45
//    c2 ----done
//    c1 rollback
//    c1 ----selecting
//    c1 ----done
//    c2 ----selecting
//    c2 ----done
//    Dropped table
//    c1 is
//    c2 is Resource id #5

?>

注释

Note:

An incorrectly installed or configured OCI8 extension will often manifest itself as a connection problem or error. See Installing/Configuring for troubleshooting information.

Note:

In PHP versions before 5.0.0 use ocilogon() instead. 在当前版本中，旧的函数名还可以被使用，但已经被废弃并不建议使用。

参见

  • oci_pconnect() - 使用一个持久连接连到 Oracle 数据库
  • oci_new_connect() - 建定一个到 Oracle 服务器的新连接
  • oci_close() - 关闭 Oracle 连接

oci_commit
oci_define_by_name
OCI8 函数


在 SELECT 中使用 PHP 变量作为定义的步骤

oci_connect
oci_error
OCI8 函数
PHP Manual

oci_define_by_name

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_define_by_name — 在 SELECT 中使用 PHP 变量作为定义的步骤

说明

bool oci_define_by_name ( resource $statement , string $column_name , mixed &$variable [, int $type ] )

oci_define_by_name() 绑定 PHP 到获取的 SQL 列。 需要注意的是，Oracle 使用大写字母的列名，而用户在 select 中也可以用小写字母。oci_define_by_name() 期望 column_name 是大写字母。如果定义一个变量不存在于 select 语句中，将没有错误被给出。

如果需要定义一个抽象数据类型（LOB/ROWID/BFILE），必须先用 oci_new_descriptor() 分配空间。参见 oci_bind_by_name() 函数。

Example #1 oci_define_by_name() 例子

<?php
/* oci_define_by_name example - thies at thieso dot net (980219) */

$conn = oci_connect("scott", "tiger");

$stmt = oci_parse($conn, "SELECT empno, ename FROM emp");

/* the define MUST be done BEFORE oci_execute! */

oci_define_by_name($stmt, "EMPNO", $empno);
oci_define_by_name($stmt, "ENAME", $ename);

oci_execute($stmt);

while (oci_fetch($stmt)) {
    echo "empno:" . $empno . "\n";
    echo "ename:" . $ename . "\n";
}

oci_free_statement($stmt);
oci_close($conn);
?>

Note:

在 PHP 5.0.0 之前的版本必须使用 ocidefinebyname() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_define_by_name() 的别名。不过其已被废弃，不推荐使用。

oci_connect
oci_error
OCI8 函数


返回上一个错误

oci_define_by_name
oci_execute
OCI8 函数
PHP Manual

oci_error

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_error — 返回上一个错误

说明

array oci_error ([ resource $source ] )

对于大多数错误，参数是最适合的资源句柄。对于 oci_connect()，oci_new_connect() 或 oci_pconnect() 的连接错误，不要传递参数。如果没有发现错误，oci_error() 返回 FALSE。oci_error() 以一个关联数组返回错误。在此数组中，code 是 oracle 错误代码而 message 是 oracle 的错误字符串。

Note: 自 PHP 4.3 起

offset 和 sqltext 也包括在返回的数组中，用来指出错误发生的位置以及造成错误的原始的 SQL 文本。

Example #1 连接错误后显示 Oracle 错误信息

$conn = @oci_connect("scott", "tiger", "mydb");
if (!$conn) {
  $e = oci_error();   // For oci_connect errors pass no handle
  echo htmlentities($e['message']);
}

Example #2 语法解析错误后显示 Oracle 错误信息

$stmt = @oci_parse($conn, "select ' from dual");  // note mismatched quote
if (!$stmt) {
  $e = oci_error($conn);  // For oci_parse errors pass the connection handle
  echo htmlentities($e['message']);
}

Example #3 执行错误后显示 Oracle 错误信息和出错的语句

$r = oci_execute($stmt);
if (!$r) {
  $e = oci_error($stmt); // For oci_execute errors pass the statementhandle
  echo htmlentities($e['message']);
  echo "<pre>";
  echo htmlentities($e['sqltext']);
  printf("\n%".($e['offset']+1)."s", "^");
  echo "</pre>";
}

Note:

在 PHP 5.0.0 之前的版本必须使用 ocierror() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_error() 的别名。不过其已被废弃，不推荐使用。

oci_define_by_name
oci_execute
OCI8 函数


执行一条语句

oci_error
oci_fetch_all
OCI8 函数
PHP Manual

oci_execute

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_execute — 执行一条语句

说明

bool oci_execute ( resource $stmt [, int $mode ] )

oci_execute() 执行一条之前被解析过的语句（见 oci_parse()）。可选参数 mode 允许定义执行模式（默认是 OCI_COMMIT_ON_SUCCESS）。如果不需要将语句自动提交，则需要把 mode 设为 OCI_DEFAULT。

用 OCI_DEFAULT 模式时，将建立一个事务。事务会在关闭连接或脚本结束时（看哪个先）自动回卷。需要明确调用 oci_commit() 来提交事务，或者 oci_rollback() 中止事务。

成功时返回 TRUE， 或者在失败时返回 FALSE。

Note:

在 PHP 5.0.0 之前的版本必须使用 ociexecute() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_execute() 的别名。不过其已被废弃，不推荐使用。

参数

statement

A valid OCI statement identifier.

mode

An optional second parameter can be one of the following constants:

Execution Modes
Constant | Description
OCI_COMMIT_ON_SUCCESS | Automatically commit all outstanding changes for this connection when the statement has succeeded. This is the default.
OCI_DEFAULT | Obsolete as of PHP 5.3.2 (PECL OCI8 1.4) but still available for backward compatibility. Use the equivalent OCI_NO_AUTO_COMMIT in new code.
OCI_DESCRIBE_ONLY | Make query meta data available to functions like oci_field_name() but do not create a result set. Any subsequent fetch call such as oci_fetch_array() will fail.
OCI_NO_AUTO_COMMIT | Do not automatically commit changes. Prior to PHP 5.3.2 (PECL OCI8 1.4) use OCI_DEFAULT which is an alias for OCI_NO_AUTO_COMMIT.

Using OCI_NO_AUTO_COMMIT mode starts a transaction. Transactions are automatically rolled back when the connection is closed, or when the script ends. Explicitly call oci_commit() to commit a transaction, or oci_rollback() to abort it.

When inserting or updating data, using transactions is recommended for relational data consistency and for performance reasons.

If OCI_NO_AUTO_COMMIT mode is used for any statement including queries, and oci_commit() or oci_rollback() is not subsequently called, then OCI8 will perform a rollback at the end of the script even if no data was changed. To avoid an unnecessary rollback, many scripts do not use OCI_NO_AUTO_COMMIT mode for queries or PL/SQL. Be careful to ensure the appropriate transactional consistency for the application when using oci_execute() with different modes in the same script.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 oci_execute() for queries

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE');

$stid = oci_parse($conn, 'SELECT * FROM employees');
oci_execute($stid);

echo "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    echo "<tr>\n";
    foreach ($row as $item) {
        echo "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";

?>

Example #2 oci_execute() without specifying a mode example

<?php

// Before running, create the table:
//   CREATE TABLE MYTABLE (col1 NUMBER);

$conn = oci_connect('hr', 'welcome', 'localhost/XE');

$stid = oci_parse($conn, 'INSERT INTO mytab (col1) VALUES (123)');

oci_execute($stid); // The row is committed and immediately visible to other users

?>

Example #3 oci_execute() with OCI_NO_AUTO_COMMIT example

<?php

// Before running, create the table:
//   CREATE TABLE MYTABLE (col1 NUMBER);

$conn = oci_connect('hr', 'welcome', 'localhost/XE');

$stid = oci_parse($conn, 'INSERT INTO mytab (col1) VALUES (:bv)');
oci_bind_by_name($stid, ':bv', $i, 10);
for ($i = 1; $i <= 5; ++$i) {
    oci_execute($stid, OCI_NO_AUTO_COMMIT);  // use OCI_DEFAULT for PHP <= 5.3.1
}
oci_commit($conn);  // commits all new values: 1, 2, 3, 4, 5

?>

Example #4 oci_execute() with different commit modes example

<?php

// Before running, create the table:
//   CREATE TABLE MYTABLE (col1 NUMBER);

$conn = oci_connect('hr', 'welcome', 'localhost/XE');

$stid = oci_parse($conn, 'INSERT INTO mytab (col1) VALUES (123)');
oci_execute($stid, OCI_NO_AUTO_COMMIT);  // data not committed

$stid = oci_parse($conn, 'INSERT INTO mytab (col1) VALUES (456)');
oci_execute($stid);  // commits both 123 and 456 values

?>

Example #5 oci_execute() with OCI_DESCRIBE_ONLY example

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE');

$stid = oci_parse($conn, 'SELECT * FROM locations');
oci_execute($s, OCI_DESCRIBE_ONLY);
for ($i = 1; $i <= oci_num_fields($stid); ++$i) {
    echo oci_field_name($stid, $i) . "<br>\n";
}

?>

注释

Note:

Transactions are automatically rolled back when connections are closed, or when the script ends, whichever is soonest. Explicitly call oci_commit() to commit a transaction.

Any call to oci_execute() that uses OCI_COMMIT_ON_SUCCESS mode explicitly or by default will commit any previous uncommitted transaction.

Any Oracle DDL statement such as CREATE or DROP will automatically commit any uncommitted transaction.

Note:

Because the oci_execute() function generally sends the statement to the database, oci_execute() can identify some statement syntax errors that the lightweight, local oci_parse() function does not.

Note:

In PHP versions before 5.0.0 use ociexecute() instead. 在当前版本中，旧的函数名还可以被使用，但已经被废弃并不建议使用。

参见

  • oci_parse() - 配置 Oracle 语句预备执行

oci_error
oci_fetch_all
OCI8 函数


获取结果数据的所有行到一个数组

oci_execute
oci_fetch_array
OCI8 函数
PHP Manual

oci_fetch_all

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_fetch_all — 获取结果数据的所有行到一个数组

说明

int oci_fetch_all ( resource $statement , array &$output [, int $skip [, int $maxrows [, int $flags ]]] )

oci_fetch_all() 从一个结果中获取所有的行到一个用户定义的数组。oci_fetch_all() 返回获取的行数，出错则返回 FALSE。skip 是从结果中获取数据时，最开始忽略的行数（默认值是 0，即从第一行开始）。maxrows 是要读取的行数，从第 skip 行开始（默认值是 -1，即所有行）。

flags 参数可以是下列值的任意组合：

  • OCI_FETCHSTATEMENT_BY_ROW
  • OCI_FETCHSTATEMENT_BY_COLUMN（默认值）
  • OCI_NUM
  • OCI_ASSOC

Example #1 oci_fetch_all() 例子

<?php
/* oci_fetch_all example mbritton at verinet dot com (990624) */

$conn = oci_connect("scott", "tiger");

$stmt = oci_parse($conn, "select * from emp");

oci_execute($stmt);

$nrows = oci_fetch_all($stmt, $results);
if ($nrows > 0) {
   echo "<table border=\"1\">\n";
   echo "<tr>\n";
   foreach ($results as $key => $val) {
      echo "<th>$key</th>\n";
   }
   echo "</tr>\n";

   for ($i = 0; $i < $nrows; $i++) {
      echo "<tr>\n";
      foreach ($results as $data) {
         echo "<td>$data[$i]</td>\n";
      }
      echo "</tr>\n";
   }
   echo "</table>\n";
} else {
   echo "No data found<br />\n";
}
echo "$nrows Records Selected<br />\n";

oci_free_statement($stmt);
oci_close($conn);
?>

oci_fetch_all() 如果出错则返回 FALSE。

Note:

在 PHP 5.0.0 之前的版本必须使用 ocifetchstatement() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_fetch_all() 的别名。不过其已被废弃，不推荐使用。

参数

statement

有效的 OCI8 报表标识符 由 oci_parse() 创建，被 oci_execute() 或 REF CURSOR statement 标识执行。

output

The variable to contain the returned rows.

LOB columns are returned as strings, where Oracle supports conversion.

See oci_fetch_array() for more information on how data and types are fetched.

skip

The number of initial rows to discard when fetching the result. The default value is 0, so the first row onwards is returned.

maxrows

The number of rows to return. The default is -1 meaning return all the rows from skip + 1 onwards.

flags

Parameter flags indicates the array structure and whether associative arrays should be used.

oci_fetch_all() Array Structure Modes
Constant | Description
OCI_FETCHSTATEMENT_BY_ROW | The outer array will contain one sub-array per query row.
OCI_FETCHSTATEMENT_BY_COLUMN | The outer array will contain one sub-array per query column. This is the default.

Arrays can be indexed by column heading or numerically.

oci_fetch_all() Array Index Modes
Constant | Description
OCI_NUM | Numeric indexes are used for each column's array.
OCI_ASSOC | Associative indexes are used for each column's array. This is the default.

Use the addition operator "+" to choose a combination of array structure and index modes.

Oracle's default, non-case sensitive column names will have uppercase array keys. Case-sensitive column names will have array keys using the exact column case. Use var_dump() on output to verify the appropriate case to use for each query.

Queries that have more than one column with the same name should use column aliases. Otherwise only one of the columns will appear in an associative array.

返回值

Returns the number of rows in output, which may be 0 or more, 或者在失败时返回 FALSE.

范例

Example #2 oci_fetch_all() example

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT POSTAL_CODE, CITY FROM locations WHERE ROWNUM < 3');
oci_execute($stid);

$nrows = oci_fetch_all($stid, $res);

echo "$nrows rows fetched<br>\n";
var_dump($res);

// var_dump output is:
//    2 rows fetched
//    array(2) {
//      ["POSTAL_CODE"]=>
//      array(2) {
//        [0]=>
//        string(6) "00989x"
//        [1]=>
//        string(6) "10934x"
//      }
//      ["CITY"]=>
//      array(2) {
//        [0]=>
//        string(4) "Roma"
//        [1]=>
//        string(6) "Venice"
//      }
//    }

// Pretty-print the results
echo "<table border='1'>\n";
foreach ($res as $col) {
    echo "<tr>\n";
    foreach ($col as $item) {
        echo "    <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : "")."</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";

oci_free_statement($stid);
oci_close($conn);

?>

Example #3 oci_fetch_all() example with OCI_FETCHSTATEMENT_BY_ROW

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT POSTAL_CODE, CITY FROM locations WHERE ROWNUM < 3');
oci_execute($stid);

$nrows = oci_fetch_all($stid, $res, null, null, OCI_FETCHSTATEMENT_BY_ROW);

echo "$nrows rows fetched<br>\n";
var_dump($res);

// Output is:
//    2 rows fetched
//    array(2) {
//      [0]=>
//      array(2) {
//        ["POSTAL_CODE"]=>
//        string(6) "00989x"
//        ["CITY"]=>
//        string(4) "Roma"
//      }
//      [1]=>
//      array(2) {
//        ["POSTAL_CODE"]=>
//        string(6) "10934x"
//        ["CITY"]=>
//        string(6) "Venice"
//      }
//    }

oci_free_statement($stid);
oci_close($conn);

?>

Example #4 oci_fetch_all() with OCI_NUM

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT POSTAL_CODE, CITY FROM locations WHERE ROWNUM < 3');
oci_execute($stid);

$nrows = oci_fetch_all($stid, $res, null, null, OCI_FETCHSTATEMENT_BY_ROW + OCI_NUM);

echo "$nrows rows fetched<br>\n";
var_dump($res);

// Output is:
//    2 rows fetched
//    array(2) {
//      [0]=>
//      array(2) {
//        [0]=>
//        string(6) "00989x"
//        [1]=>
//        string(4) "Roma"
//      }
//      [1]=>
//      array(2) {
//        [0]=>
//        string(6) "10934x"
//        [1]=>
//        string(6) "Venice"
//      }
//    }

oci_free_statement($stid);
oci_close($conn);

?>

注释

Note:

Using skip is very inefficient. All the rows to be skipped are included in the result set that is returned from the database to PHP. They are then discarded. It is more efficient to use SQL to restrict the offset and range of rows in the query. See oci_fetch_array() for an example.

Note:

Queries that return a large number of rows can be more memory efficient if a single-row fetching function like oci_fetch_array() is used.

Note:

查询返回巨大数量的数据行时，通过增大 oci8.default_prefetch 值或使用 oci_set_prefetch() 可显著提高性能。

Note:

In PHP versions before 5.0.0 you must use ocifetchstatement() instead. 在当前版本中，旧的函数名还可以被使用，但已经被废弃并不建议使用。

参见

  • oci_fetch() - Fetches the next row into result-buffer
  • oci_fetch_array() - Returns the next row from a query as an associative or numeric array
  • oci_fetch_assoc() - Returns the next row from a query as an associative array
  • oci_fetch_object() - Returns the next row from a query as an object
  • oci_fetch_row() - Returns the next row from a query as a numeric array
  • oci_set_prefetch() - 设置预提取行数

oci_execute
oci_fetch_array
OCI8 函数


Returns the next row from a query as an associative or numeric array

oci_fetch_all
oci_fetch_assoc
OCI8 函数
PHP Manual

oci_fetch_array

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_fetch_array — Returns the next row from a query as an associative or numeric array

说明

array oci_fetch_array ( resource $statement [, int $mode ] )

Returns an array containing the next result-set row of a query. Each array entry corresponds to a column of the row. This function is typically called in a loop until it returns FALSE, indicating no more rows exist.

If statement corresponds to a PL/SQL block returning Oracle Database 12c Implicit Result Sets, then rows from all sets are consecutively fetched. If statement is returned by oci_get_implicit_resultset(), then only the subset of rows for one child query are returned.

要获取 OCI8 扩展进行数据类型映射的细节，请参见驱动所支持的数据类型。

参数

statement

有效的 OCI8 报表标识符 由 oci_parse() 创建，被 oci_execute() 或 REF CURSOR statement 标识执行。

Can also be a statement identifier returned by oci_get_implicit_resultset().

mode

An optional second parameter can be any combination of the following constants:

oci_fetch_array() Modes
Constant | Description
OCI_BOTH | Returns an array with both associative and numeric indices. This is the same as OCI_ASSOC + OCI_NUM and is the default behavior.
OCI_ASSOC | Returns an associative array.
OCI_NUM | Returns a numeric array.
OCI_RETURN_NULLS | Creates elements for NULL fields. The element values will be a PHP NULL.
OCI_RETURN_LOBS | Returns the contents of LOBs instead of the LOB descriptors.

The default mode is OCI_BOTH.

Use the addition operator "+" to specify more than one mode at a time.

返回值

Returns an array with associative and/or numeric indices. If there are no more rows in the statement then FALSE is returned.

By default, LOB columns are returned as LOB descriptors.

DATE columns are returned as strings formatted to the current date format. The default format can be changed with Oracle environment variables such as NLS_LANG or by a previously executed ALTER SESSION SET NLS_DATE_FORMAT command.

Oracle's default, non-case sensitive column names will have uppercase associative indices in the result array. Case-sensitive column names will have array indices using the exact column case. Use var_dump() on the result array to verify the appropriate case to use for each query.

The table name is not included in the array index. If your query contains two different columns with the same name, use OCI_NUM or add a column alias to the query to ensure name uniqueness, see example #7. Otherwise only one column will be returned via PHP.

范例

Example #1 oci_fetch_array() with OCI_BOTH

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT department_id, department_name FROM departments');
oci_execute($stid);

while (($row = oci_fetch_array($stid, OCI_BOTH)) != false) {
    // Use the uppercase column names for the associative array indices
    echo $row[0] . " and " . $row['DEPARTMENT_ID']   . " are the same<br>\n";
    echo $row[1] . " and " . $row['DEPARTMENT_NAME'] . " are the same<br>\n";
}

oci_free_statement($stid);
oci_close($conn);

?>

Example #2 oci_fetch_array() with OCI_NUM

<?php

/*
  Before running, create the table:
      CREATE TABLE mytab (id NUMBER, description CLOB);
      INSERT INTO mytab (id, description) values (1, 'A very long string');
      COMMIT;
*/

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT id, description FROM mytab');
oci_execute($stid);

while (($row = oci_fetch_array($stid, OCI_NUM)) != false) {
    echo $row[0] . "<br>\n";
    echo $row[1]->read(11) . "<br>\n"; // this will output first 11 bytes from DESCRIPTION
}

// Output is:
//    1
//    A very long

oci_free_statement($stid);
oci_close($conn);

?>

Example #3 oci_fetch_array() with OCI_ASSOC

<?php

/*
  Before running, create the table:
      CREATE TABLE mytab (id NUMBER, description CLOB);
      INSERT INTO mytab (id, description) values (1, 'A very long string');
      COMMIT;
*/

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT id, description FROM mytab');
oci_execute($stid);

while (($row = oci_fetch_array($stid, OCI_ASSOC)) != false) {
    echo $row['ID'] . "<br>\n";
    echo $row['DESCRIPTION']->read(11) . "<br>\n"; // this will output first 11 bytes from DESCRIPTION
}

// Output is:
//    1
//    A very long

oci_free_statement($stid);
oci_close($conn);

?>

Example #4 oci_fetch_array() with OCI_RETURN_NULLS

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT 1, null FROM dual');
oci_execute($stid);
while (($row = oci_fetch_array ($stid, OCI_ASSOC)) != false) { // Ignore NULLs
    var_dump($row);
}

/*
The above code prints:
  array(1) {
    [1]=>
    string(1) "1"
  }
*/

$stid = oci_parse($conn, 'SELECT 1, null FROM dual');
oci_execute($stid);
while (($row = oci_fetch_array ($stid, OCI_ASSOC+OCI_RETURN_NULLS)) != false) { // Fetch NULLs
    var_dump($row);
}

/*
The above code prints:
  array(2) {
    [1]=>
    string(1) "1"
    ["NULL"]=>
    NULL
  }
*/

?>

Example #5 oci_fetch_array() with OCI_RETURN_LOBS

<?php

/*
  Before running, create the table:
      CREATE TABLE mytab (id NUMBER, description CLOB);
      INSERT INTO mytab (id, description) values (1, 'A very long string');
      COMMIT;
*/

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT id, description FROM mytab');
oci_execute($stid);

while (($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_LOBS)) != false) {
    echo $row['ID'] . "<br>\n";
    echo $row['DESCRIPTION'] . "<br>\n"; // this contains all of DESCRIPTION
    // In a loop, freeing the large variable before the 2nd fetch reduces PHP's peak memory usage
    unset($row);
}

// Output is:
//    1
//    A very long string

oci_free_statement($stid);
oci_close($conn);

?>

Example #6 oci_fetch_array() with case sensitive column names

<?php

/*
   Before running, create the table:
      CREATE TABLE mytab ("Name" VARCHAR2(20), city VARCHAR2(20));
      INSERT INTO mytab ("Name", city) values ('Chris', 'Melbourne');
      COMMIT;
*/

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'select * from mytab');
oci_execute($stid);
$row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS);

// Because 'Name' was created as a case-sensitive column, that same
// case is used for the array index.  However uppercase 'CITY' must
// be used for the case-insensitive column index
print $row['Name'] . "<br>\n";   //  prints Chris
print $row['CITY'] . "<br>\n";   //  prints Melbourne

oci_free_statement($stid);
oci_close($conn);

?>

Example #7 oci_fetch_array() with columns having duplicate names

<?php

/*
  Before running, create the tables:
      CREATE TABLE mycity (id NUMBER, name VARCHAR2(20));
      INSERT INTO mycity (id, name) values (1, 'Melbourne');
      CREATE TABLE mycountry (id NUMBER, name VARCHAR2(20));
      INSERT INTO mycountry (id, name) values (1, 'Australia');
      COMMIT;
*/

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$sql = 'SELECT mycity.name, mycountry.name
        FROM mycity, mycountry
        WHERE mycity.id = mycountry.id';
$stid = oci_parse($conn, $sql);
oci_execute($stid);
$row = oci_fetch_array($stid, OCI_ASSOC);
var_dump($row);

// Output only contains one "NAME" entry:
//    array(1) {
//      ["NAME"]=>
//      string(9) "Australia"
//    }

// To query a repeated column name, use an SQL column alias like "AS ctnm":
$sql = 'SELECT mycity.name AS ctnm, mycountry.name
        FROM mycity, mycountry
        WHERE mycity.id = mycountry.id';
$stid = oci_parse($conn, $sql);
oci_execute($stid);
$row = oci_fetch_array($stid, OCI_ASSOC);
var_dump($row);

// Output now contains both columns selected:
//    array(2) {
//      ["CTNM"]=>
//      string(9) "Melbourne"
//      ["NAME"]=>
//      string(9) "Australia"
//    }

oci_free_statement($stid);
oci_close($conn);

?>

Example #8 oci_fetch_array() with DATE columns

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

// Set the date format for this connection.
// For performance reasons, consider changing the format
// in a trigger or with environment variables instead
$stid = oci_parse($conn, "ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD'");
oci_execute($stid);

$stid = oci_parse($conn, 'SELECT hire_date FROM employees WHERE employee_id = 188');
oci_execute($stid);
$row = oci_fetch_array($stid, OCI_ASSOC);
echo $row['HIRE_DATE'] . "<br>\n";  // prints 1997-06-14

oci_free_statement($stid);
oci_close($conn);

?>

Example #9 oci_fetch_array() with REF CURSOR

<?php
/*
  Create the PL/SQL stored procedure as:

  CREATE OR REPLACE PROCEDURE myproc(p1 OUT SYS_REFCURSOR) AS
  BEGIN
    OPEN p1 FOR SELECT * FROM all_objects WHERE ROWNUM < 5000;
  END;
*/

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'BEGIN myproc(:rc); END;');
$refcur = oci_new_cursor($conn);
oci_bind_by_name($stid, ':rc', $refcur, -1, OCI_B_CURSOR);
oci_execute($stid);

// Execute the returned REF CURSOR and fetch from it like a statement identifier
oci_execute($refcur);
echo "<table border='1'>\n";
while (($row = oci_fetch_array($refcur, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
    echo "<tr>\n";
    foreach ($row as $item) {
        echo "    <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;")."</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";

oci_free_statement($refcur);
oci_free_statement($stid);
oci_close($conn);

?>

Example #10 Pagination with oci_fetch_array() using a LIMIT-like query

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

// Find the version of the database
preg_match('/Release ([0-9]+)\./', oci_server_version($conn), $matches);
$oracleversion = $matches[1];

// This is the query you want to "page" through
$sql = 'SELECT city, postal_code FROM locations ORDER BY city';

if ($oracleversion >= 12) {
    // Make use of Oracle 12c OFFSET / FETCH NEXT syntax
    $sql = $sql . ' OFFSET :offset ROWS FETCH NEXT :numrows ROWS ONLY';
} else {
    // Older Oracle versions need a nested query selecting a subset
    // from $sql.  Or, if the SQL statement is known at development
    // time, consider using a row_number() function instead of this
    // nested solution.  In production environments, be careful to
    // avoid SQL Injection issues with concatenation.
    $sql = "SELECT * FROM (SELECT a.*, ROWNUM AS my_rnum
                           FROM ($sql) a
                           WHERE ROWNUM <= :offset + :numrows)
            WHERE my_rnum > :offset";
}

$offset  = 0;  // skip this many rows
$numrows = 5;  // return 5 rows
$stid = oci_parse($conn, $sql);
oci_bind_by_name($stid, ':numrows', $numrows);
oci_bind_by_name($stid, ':offset', $offset);
oci_execute($stid);

while (($row = oci_fetch_array($stid, OCI_ASSOC + OCI_RETURN_NULLS)) != false) {
    echo $row['CITY'] . " " . $row['POSTAL_CODE'] . "<br>\n";
}

// Output is:
//    Beijing 190518
//    Bern 3095
//    Bombay 490231
//    Geneva 1730
//    Hiroshima 6823

oci_free_statement($stid);
oci_close($conn);

?>

Example #11 oci_fetch_array() with Oracle Database 12c Implicit Result Sets

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/pdborcl');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

// Requires OCI8 2.0 and Oracle Database 12c
// Also see oci_get_implicit_resultset()
$sql = 'DECLARE
           c1 SYS_REFCURSOR;
        BEGIN
           OPEN c1 FOR SELECT city, postal_code FROM locations WHERE ROWNUM < 4 ORDER BY city;
           DBMS_SQL.RETURN_RESULT(c1);
           OPEN c1 FOR SELECT country_id FROM locations WHERE ROWNUM < 4 ORDER BY city;
           DBMS_SQL.RETURN_RESULT(c1);
        END;';

$stid = oci_parse($conn, $sql);
oci_execute($stid);

// Note: oci_fetch_all and oci_fetch() cannot be used in this manner
echo "<table>\n";
while (($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
    echo "<tr>\n";
    foreach ($row as $item) {
        echo "  <td>".($item!==null?htmlentities($item, ENT_QUOTES|ENT_SUBSTITUTE):"&nbsp;")."</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";

// Output is:
//    Beijing 190518
//    Bern    3095
//    Bombay  490231
//    CN
//    CH
//    IN

oci_free_statement($stid);
oci_close($conn);

?>

注释

Note:

Associative array indices need to be in uppercase for standard Oracle columns that were created with case insensitive names.

Note:

查询返回巨大数量的数据行时，通过增大 oci8.default_prefetch 值或使用 oci_set_prefetch() 可显著提高性能。

Note:

The function oci_fetch_array() is insignificantly slower than oci_fetch_assoc() or oci_fetch_row(), but is more flexible.

参见

  • oci_fetch() - Fetches the next row into result-buffer
  • oci_fetch_all() - 获取结果数据的所有行到一个数组
  • oci_fetch_assoc() - Returns the next row from a query as an associative array
  • oci_fetch_object() - Returns the next row from a query as an object
  • oci_fetch_row() - Returns the next row from a query as a numeric array
  • oci_set_prefetch() - 设置预提取行数

oci_fetch_all
oci_fetch_assoc
OCI8 函数


Returns the next row from a query as an associative array

oci_fetch_array
oci_fetch_object
OCI8 函数
PHP Manual

oci_fetch_assoc

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_fetch_assoc — Returns the next row from a query as an associative array

说明

array oci_fetch_assoc ( resource $statement )

Returns an associative array containing the next result-set row of a query. Each array entry corresponds to a column of the row. This function is typically called in a loop until it returns FALSE, indicating no more rows exist.

Calling oci_fetch_assoc() is identical to calling oci_fetch_array() with OCI_ASSOC + OCI_RETURN_NULLS.

参数

statement

有效的 OCI8 报表标识符 由 oci_parse() 创建，被 oci_execute() 或 REF CURSOR statement 标识执行。

返回值

Returns an associative array. If there are no more rows in the statement then FALSE is returned.

范例

Example #1 oci_fetch_assoc() Example

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT department_id, department_name FROM departments');
oci_execute($stid);

while (($row = oci_fetch_assoc($stid)) != false) {
    echo $row['DEPARTMENT_ID'] . " " . $row['DEPARTMENT_NAME'] . "<br>\n";
}

oci_free_statement($stid);
oci_close($conn);

?>

注释

Note:

See oci_fetch_array() for more examples of fetching rows.

参见

  • oci_fetch() - Fetches the next row into result-buffer
  • oci_fetch_all() - 获取结果数据的所有行到一个数组
  • oci_fetch_array() - Returns the next row from a query as an associative or numeric array
  • oci_fetch_object() - Returns the next row from a query as an object
  • oci_fetch_row() - Returns the next row from a query as a numeric array

oci_fetch_array
oci_fetch_object
OCI8 函数


Returns the next row from a query as an object

oci_fetch_assoc
oci_fetch_row
OCI8 函数
PHP Manual

oci_fetch_object

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_fetch_object — Returns the next row from a query as an object

说明

object oci_fetch_object ( resource $statement )

Returns an object containing the next result-set row of a query. Each attribute of the object corresponds to a column of the row. This function is typically called in a loop until it returns FALSE, indicating no more rows exist.

要获取 OCI8 扩展进行数据类型映射的细节，请参见驱动所支持的数据类型。

参数

statement

有效的 OCI8 报表标识符 由 oci_parse() 创建，被 oci_execute() 或 REF CURSOR statement 标识执行。

返回值

Returns an object. Each attribute of the object corresponds to a column of the row. If there are no more rows in the statement then FALSE is returned.

Any LOB columns are returned as LOB descriptors.

DATE columns are returned as strings formatted to the current date format. The default format can be changed with Oracle environment variables such as NLS_LANG or by a previously executed ALTER SESSION SET NLS_DATE_FORMAT command.

Oracle's default, non-case sensitive column names will have uppercase attribute names. Case-sensitive column names will have attribute names using the exact column case. Use var_dump() on the result object to verify the appropriate case for attribute access.

Attribute values will be NULL for any NULL data fields.

范例

Example #1 oci_fetch_object() example

<?php

/*
  Before running, create the table:
    CREATE TABLE mytab (id NUMBER, description VARCHAR2(30));
    INSERT INTO mytab (id, description) values (1, 'Fish and Chips');
    COMMIT;
*/

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT id, description FROM mytab');
oci_execute($stid);

while (($row = oci_fetch_object($stid)) != false) {
    // Use upper case attribute names for each standard Oracle column
    echo $row->ID . "<br>\n";
    echo $row->DESCRIPTION . "<br>\n";
}

// Output is:
//    1
//    Fish and Chips

oci_free_statement($stid);
oci_close($conn);

?>

Example #2 oci_fetch_object() with case sensitive column names

<?php

/*
  Before running, create the table with a case sensitive column name:
    CREATE TABLE mytab (id NUMBER, "MyDescription" VARCHAR2(30));
    INSERT INTO mytab (id, "MyDescription") values (1, 'Iced Coffee');
    COMMIT;
*/

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT id, "MyDescription" FROM mytab');
oci_execute($stid);

while (($row = oci_fetch_object($stid)) != false) {
    // Use upper case attribute names for each standard Oracle column
    echo $row->ID . "<br>\n";
    // Use the exact case for the case sensitive column name
    echo $row->MyDescription . "<br>\n";
}

// Output is:
//    1
//    Iced Coffee

oci_free_statement($stid);
oci_close($conn);

?>

Example #3 oci_fetch_object() with LOBs

<?php

/*
  Before running, create the table:
    CREATE TABLE mytab (id NUMBER, description CLOB);
    INSERT INTO mytab (id, description) values (1, 'A very long string');
    COMMIT;
*/

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT id, description FROM mytab');
oci_execute($stid);

while (($row = oci_fetch_object($stid)) != false) {
    echo $row->ID . "<br>\n";
    // The following will output the first 11 bytes from DESCRIPTION
    echo $row->DESCRIPTION->read(11) . "<br>\n";
}

// Output is:
//    1
//    A very long

oci_free_statement($stid);
oci_close($conn);

?>

参见

  • oci_fetch() - Fetches the next row into result-buffer
  • oci_fetch_all() - 获取结果数据的所有行到一个数组
  • oci_fetch_assoc() - Returns the next row from a query as an associative array
  • oci_fetch_array() - Returns the next row from a query as an associative or numeric array
  • oci_fetch_row() - Returns the next row from a query as a numeric array

oci_fetch_assoc
oci_fetch_row
OCI8 函数


Returns the next row from a query as a numeric array

oci_fetch_object
oci_fetch
OCI8 函数
PHP Manual

oci_fetch_row

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_fetch_row — Returns the next row from a query as a numeric array

说明

array oci_fetch_row ( resource $statement )

Returns a numerically indexed array containing the next result-set row of a query. Each array entry corresponds to a column of the row. This function is typically called in a loop until it returns FALSE, indicating no more rows exist.

Calling oci_fetch_row() is identical to calling oci_fetch_array() with OCI_NUM + OCI_RETURN_NULLS.

参数

statement

有效的 OCI8 报表标识符 由 oci_parse() 创建，被 oci_execute() 或 REF CURSOR statement 标识执行。

返回值

Returns a numerically indexed array. If there are no more rows in the statement then FALSE is returned.

范例

Example #1 oci_fetch_row() Example

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT department_id, department_name FROM departments');
oci_execute($stid);

while (($row = oci_fetch_row($stid)) != false) {
    echo $row[0] . " " . $row[1] . "<br>\n";
}

oci_free_statement($stid);
oci_close($conn);

?>

注释

Note:

See oci_fetch_array() for more examples of fetching rows.

参见

  • oci_fetch() - Fetches the next row into result-buffer
  • oci_fetch_all() - 获取结果数据的所有行到一个数组
  • oci_fetch_array() - Returns the next row from a query as an associative or numeric array
  • oci_fetch_assoc() - Returns the next row from a query as an associative array
  • oci_fetch_object() - Returns the next row from a query as an object

oci_fetch_object
oci_fetch
OCI8 函数


Fetches the next row into result-buffer

oci_fetch_row
oci_field_is_null
OCI8 函数
PHP Manual

oci_fetch

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_fetch — Fetches the next row into result-buffer

说明

bool oci_fetch ( resource $statement )

oci_fetch() 获取下一行（对于 SELECT 语句）到内部结果缓冲区。

Note:

在 PHP 5.0.0 之前的版本必须使用 ocifetch() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_fetch() 的别名。不过其已被废弃，不推荐使用。

参数

statement

有效的 OCI8 报表标识符 由 oci_parse() 创建，被 oci_execute() 或 REF CURSOR statement 标识执行。

返回值

Returns TRUE on success or FALSE if there are no more rows in the statement.

范例

Example #1 oci_fetch() with defined variables

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$sql = 'SELECT location_id, city FROM locations WHERE location_id < 1200';
$stid = oci_parse($conn, $sql);

// The defines MUST be done before executing
oci_define_by_name($stid, 'LOCATION_ID', $locid);
oci_define_by_name($stid, 'CITY', $city);

oci_execute($stid);

// Each fetch populates the previously defined variables with the next row's data
while (oci_fetch($stid)) {
    echo "Location id $locid is $city<br>\n";
}

// Displays:
//   Location id 1000 is Roma
//   Location id 1100 is Venice

oci_free_statement($stid);
oci_close($conn);

?>

Example #2 oci_fetch() with oci_result()

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$sql = 'SELECT location_id, city FROM locations WHERE location_id < 1200';
$stid = oci_parse($conn, $sql);
oci_execute($stid);

while (oci_fetch($stid)) {
    echo oci_result($stid, 'LOCATION_ID') . " is ";
    echo oci_result($stid, 'CITY') . "<br>\n";
}

// Displays:
//   1000 is Roma
//   1100 is Venice

oci_free_statement($stid);
oci_close($conn);

?>

注释

Note:

In PHP versions before 5.0.0 use ocifetch() instead. 在当前版本中，旧的函数名还可以被使用，但已经被废弃并不建议使用。

参见

  • oci_define_by_name() - 在 SELECT 中使用 PHP 变量作为定义的步骤
  • oci_fetch_all() - 获取结果数据的所有行到一个数组
  • oci_fetch_array() - Returns the next row from a query as an associative or numeric array
  • oci_fetch_assoc() - Returns the next row from a query as an associative array
  • oci_fetch_object() - Returns the next row from a query as an object
  • oci_fetch_row() - Returns the next row from a query as a numeric array
  • oci_result() - 返回所取得行中字段的值

oci_fetch_row
oci_field_is_null
OCI8 函数


检查字段是否为 NULL

oci_fetch
oci_field_name
OCI8 函数
PHP Manual

oci_field_is_null

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_field_is_null — 检查字段是否为 NULL

说明

bool oci_field_is_null ( resource $statement , mixed $field )

如果 statement 语句结果中返回的 field 字段的值是 NULL，oci_field_is_null() 返回 TRUE。field 参数可以是字段的索引或字段名（大写字母）。

Note:

在 PHP 5.0.0 之前的版本必须使用 ocicolumnisnull() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_field_is_null() 的别名。不过其已被废弃，不推荐使用。

oci_fetch
oci_field_name
OCI8 函数


返回字段名

oci_field_is_null
oci_field_precision
OCI8 函数
PHP Manual

oci_field_name

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_field_name — 返回字段名

说明

string oci_field_name ( resource $statement , int $field )

oci_field_name() 返回与字段数字索引（从 1 开始）相对应的字段名。

Example #1 oci_field_name() 例子

<?php
    $conn = oci_connect("scott", "tiger");
    $stmt = oci_parse($conn, "SELECT * FROM emp");
    oci_execute($stmt);

    echo "<table border=\"1\">";
    echo "<tr>";
    echo "<th>Name</th>";
    echo "<th>Type</th>";
    echo "<th>Length</th>";
    echo "</tr>";

    $ncols = oci_num_fields($stmt);

    for ($i = 1; $i <= $ncols; $i++) {
        $column_name  = oci_field_name($stmt, $i);
        $column_type  = oci_field_type($stmt, $i);
        $column_size  = oci_field_size($stmt, $i);

        echo "<tr>";
        echo "<td>$column_name</td>";
        echo "<td>$column_type</td>";
        echo "<td>$column_size</td>";
        echo "</tr>";
    }

    echo "</table>\n";
    oci_free_statement($stmt);
    oci_close($conn);
?>

Note:

在 PHP 5.0.0 之前的版本必须使用 ocicolumnname() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_field_name() 的别名。不过其已被废弃，不推荐使用。

参见 oci_num_fields()，oci_field_type() 和 oci_field_size()。

oci_field_is_null
oci_field_precision
OCI8 函数


返回字段精度

oci_field_name
oci_field_scale
OCI8 函数
PHP Manual

oci_field_precision

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_field_precision — 返回字段精度

说明

int oci_field_precision ( resource $statement , int $field )

返回索引为 field（从 1 开始）的字段的精度。

对于 FLOAT 字段，精度为非零值且范围为 -127。如果精度为 0，则字段为 NUMBER。其它类型为 NUMBER(precision, scale)。

Note:

在 PHP 5.0.0 之前的版本必须使用 ocicolumnprecision() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_field_precision() 的别名。不过其已被废弃，不推荐使用。

参见 oci_field_scale() 和 oci_field_type()。

oci_field_name
oci_field_scale
OCI8 函数


返回字段范围

oci_field_precision
oci_field_size
OCI8 函数
PHP Manual

oci_field_scale

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_field_scale — 返回字段范围

说明

int oci_field_scale ( resource $statement , int $field )

返回索引为 field（从 1 开始）的字段的范围。如果无此字段则返回 FALSE。

对于 FLOAT 字段，精度为非零值且范围为 -127。如果精度为 0，则字段为 NUMBER。其它类型为 NUMBER(precision, scale)。

Note:

在 PHP 5.0.0 之前的版本必须使用 ocicolumnscale() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_field_scale() 的别名。不过其已被废弃，不推荐使用。

参见 oci_field_precision() 和 oci_field_type()。

oci_field_precision
oci_field_size
OCI8 函数


返回字段大小

oci_field_scale
oci_field_type_raw
OCI8 函数
PHP Manual

oci_field_size

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_field_size — 返回字段大小

说明

int oci_field_size ( resource $stmt , mixed $field )

oci_field_size() 以字节为单位返回字段的大小。field 参数的值可以是字段的索引（从 1 开始）或者字段名。

Example #1 oci_field_size()例子

<?php
    $conn = oci_connect("scott", "tiger");
    $stmt = oci_parse($conn, "SELECT * FROM emp");
    oci_execute($stmt);

    echo "<table border=\"1\">";
    echo "<tr>";
    echo "<th>Name</th>";
    echo "<th>Type</th>";
    echo "<th>Length</th>";
    echo "</tr>";

    $ncols = oci_num_fields($stmt);

    for ($i = 1; $i <= $ncols; $i++) {
        $column_name  = oci_field_name($stmt, $i);
        $column_type  = oci_field_type($stmt, $i);
        $column_size  = oci_field_size($stmt, $i);
        echo "<tr>";
        echo "<td>$column_name</td>";
        echo "<td>$column_type</td>";
        echo "<td>$column_size</td>";
        echo "</tr>";
    }

    echo "</table>";

    oci_free_statement($stmt);
    oci_close($conn);
?>

Note:

在 PHP 5.0.0 之前的版本必须使用 ocicolumnsize() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_field_size() 的别名。不过其已被废弃，不推荐使用。

参见 oci_num_fields() 和 oci_field_name()。

oci_field_scale
oci_field_type_raw
OCI8 函数


返回字段的原始 Oracle 数据类型

oci_field_size
oci_field_type
OCI8 函数
PHP Manual

oci_field_type_raw

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_field_type_raw — 返回字段的原始 Oracle 数据类型

说明

int oci_field_type_raw ( resource $statement , int $field )

oci_field_type_raw() 返回字段的原始 Oracle 数据类型。

Note:

在 PHP 5.0.0 之前的版本必须使用 ocicolumntyperaw() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_field_type_raw() 的别名。不过其已被废弃，不推荐使用。

不过，如果需要取得字段的类型，oci_field_type() 更为适合。更多信息见 oci_field_type()。

oci_field_size
oci_field_type
OCI8 函数


返回字段的数据类型

oci_field_type_raw
oci_free_descriptor
OCI8 函数
PHP Manual

oci_field_type

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_field_type — 返回字段的数据类型

说明

mixed oci_field_type ( resource $stmt , int $field )

oci_field_type() 返回字段的数据类型。field 参数是字段的索引（从 1 开始）。

Example #1 oci_field_type() 例子

<?php
    $conn = oci_connect("scott", "tiger");
    $stmt = oci_parse($conn, "SELECT * FROM emp");
    oci_execute($stmt);

    echo "<table border=\"1\">";
    echo "<tr>";
    echo "<th>Name</th>";
    echo "<th>Type</th>";
    echo "<th>Length</th>";
    echo "</tr>";

    $ncols = oci_num_fields($stmt);

    for ($i = 1; $i <= $ncols; $i++) {
        $column_name  = oci_field_name($stmt, $i);
        $column_type  = oci_field_type($stmt, $i);
        $column_size  = oci_field_size($stmt, $i);

        echo "<tr>";
        echo "<td>$column_name</td>";
        echo "<td>$column_type</td>";
        echo "<td>$column_size</td>";
        echo "</tr>";
    }

    echo "</table>\n";

    oci_free_statement($stmt);
    oci_close($conn);
?>

Note:

在 PHP 5.0.0 之前的版本必须使用 ocicolumntype() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_field_type() 的别名。不过其已被废弃，不推荐使用。

参见 oci_num_fields()，oci_field_name() 和 oci_field_size()。

oci_field_type_raw
oci_free_descriptor
OCI8 函数


Frees a descriptor

oci_field_type
oci_free_statement
OCI8 函数
PHP Manual

oci_free_descriptor

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_free_descriptor — Frees a descriptor

说明

bool oci_free_descriptor ( resource $descriptor )

Frees a descriptor allocated by oci_new_descriptor().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note:

This function is commonly used as a method OCI-LOB::free.

参见

  • OCI-LOB::free

oci_field_type
oci_free_statement
OCI8 函数


释放关联于语句或游标的所有资源

oci_free_descriptor
oci_get_implicit_resultset
OCI8 函数
PHP Manual

oci_free_statement

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_free_statement — 释放关联于语句或游标的所有资源

说明

bool oci_free_statement ( resource $statement )

oci_free_statement() 释放关联于 Oracle 游标或语句的资源，该资源是作为 oci_parse() 的结果或者是从 Oracle 取得。

参数

statement

有效的 OCI 语句。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

oci_free_descriptor
oci_get_implicit_resultset
OCI8 函数


Returns the next child statement resource from a parent statement resource that has Oracle Database 12c Implicit Result Sets

oci_free_statement
oci_internal_debug
OCI8 函数
PHP Manual

oci_get_implicit_resultset

(PECL OCI8 >= 2.0.0)

oci_get_implicit_resultset — Returns the next child statement resource from a parent statement resource that has Oracle Database 12c Implicit Result Sets

说明

resource oci_get_implicit_resultset ( resource $statement )

Used to fetch consectutive sets of query results after the execution of a stored or anonymous Oracle PL/SQL block where that block returns query results with Oracle's DBMS_SQL.RETURN_RESULT PL/SQL function. This allows PL/SQL blocks to easily return query results.

The child statement can be used with any of the OCI8 fetching
functions: oci_fetch(), oci_fetch_all(),
oci_fetch_array(), oci_fetch_object(),
oci_fetch_assoc() or oci_fetch_row()

Child statements inherit their parent statement's prefetch value, or it can be explicitly set with oci_set_prefetch().

参数

statement

A valid OCI8 statement identifier created by oci_parse() and executed by oci_execute(). The statement identifier may or may not be associated with a SQL statement that returns Implicit Result Sets.

返回值

Returns a statement handle for the next child statement available on statement. Returns FALSE when child statements do not exist, or all child statements have been returned by previous calls to oci_get_implicit_resultset().

范例

Example #1 Fetching Implicit Result Sets in a loop

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/pdborcl');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$sql = 'DECLARE
            c1 SYS_REFCURSOR;
        BEGIN
           OPEN c1 FOR SELECT city, postal_code FROM locations WHERE ROWNUM < 4 ORDER BY city;
           DBMS_SQL.RETURN_RESULT(c1);
           OPEN c1 FOR SELECT country_id FROM locations WHERE ROWNUM < 4 ORDER BY city;
           DBMS_SQL.RETURN_RESULT(c1);
        END;';

$stid = oci_parse($conn, $sql);
oci_execute($stid);

while (($stid_c = oci_get_implicit_resultset($stid))) {
    echo "<h2>New Implicit Result Set:</h2>\n";
    echo "<table>\n";
    while (($row = oci_fetch_array($stid_c, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
        echo "<tr>\n";
        foreach ($row as $item) {
            echo "  <td>".($item!==null?htmlentities($item, ENT_QUOTES|ENT_SUBSTITUTE):"&nbsp;")."</td>\n";
        }
        echo "</tr>\n";
    }
    echo "</table>\n";
}

// Output is:
//    New Implicit Result Set:
//     Beijing 190518
//     Bern    3095
//     Bombay  490231
//    New Implicit Result Set:
//     CN
//     CH
//     IN

oci_free_statement($stid);
oci_close($conn);

?>

Example #2 Getting child statement handles individually

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/pdborcl');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$sql = 'DECLARE
            c1 SYS_REFCURSOR;
        BEGIN
           OPEN c1 FOR SELECT city, postal_code FROM locations WHERE ROWNUM < 4 ORDER BY city;
           DBMS_SQL.RETURN_RESULT(c1);
           OPEN c1 FOR SELECT country_id FROM locations WHERE ROWNUM < 4 ORDER BY city;
           DBMS_SQL.RETURN_RESULT(c1);
        END;';

$stid = oci_parse($conn, $sql);
oci_execute($stid);

$stid_1 = oci_get_implicit_resultset($stid);
$stid_2 = oci_get_implicit_resultset($stid);

$row = oci_fetch_array($stid_1, OCI_ASSOC+OCI_RETURN_NULLS);
var_dump($row);
$row = oci_fetch_array($stid_2, OCI_ASSOC+OCI_RETURN_NULLS);
var_dump($row);
$row = oci_fetch_array($stid_1, OCI_ASSOC+OCI_RETURN_NULLS);
var_dump($row);
$row = oci_fetch_array($stid_2, OCI_ASSOC+OCI_RETURN_NULLS);
var_dump($row);

// Output is:
//    array(2) {
//      ["CITY"]=>
//      string(7) "Beijing"
//      ["POSTAL_CODE"]=>
//      string(6) "190518"
//    }
//    array(1) {
//      ["COUNTRY_ID"]=>
//      string(2) "CN"
//    }
//    array(2) {
//      ["CITY"]=>
//      string(4) "Bern"
//      ["POSTAL_CODE"]=>
//      string(4) "3095"
//    }
//    array(1) {
//      ["COUNTRY_ID"]=>
//      string(2) "CH"
//    }

oci_free_statement($stid);
oci_close($conn);

?>

Example #3 Explicitly setting the Prefetch Count

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/pdborcl');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$sql = 'DECLARE
            c1 SYS_REFCURSOR;
        BEGIN
           OPEN c1 FOR SELECT city, postal_code FROM locations ORDER BY city;
           DBMS_SQL.RETURN_RESULT(c1);
        END;';

$stid = oci_parse($conn, $sql);
oci_execute($stid);

$stid_c = oci_get_implicit_resultset($stid);
oci_set_prefetch($stid_c, 200);   // Set the prefetch before fetching from the child statement
echo "<table>\n";
while (($row = oci_fetch_array($stid_c, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
    echo "<tr>\n";
    foreach ($row as $item) {
        echo "  <td>".($item!==null?htmlentities($item, ENT_QUOTES|ENT_SUBSTITUTE):"&nbsp;")."</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";

oci_free_statement($stid);
oci_close($conn);

?>

Example #4 Implicit Result Set example without using oci_get_implicit_resultset()

All results from all queries are returned consecutively.

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/pdborcl');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$sql = 'DECLARE
            c1 SYS_REFCURSOR;
        BEGIN
           OPEN c1 FOR SELECT city, postal_code FROM locations WHERE ROWNUM < 4 ORDER BY city;
           DBMS_SQL.RETURN_RESULT(c1);
           OPEN c1 FOR SELECT country_id FROM locations WHERE ROWNUM < 4 ORDER BY city;
           DBMS_SQL.RETURN_RESULT(c1);
        END;';

$stid = oci_parse($conn, $sql);
oci_execute($stid);

// Note: oci_fetch_all and oci_fetch() cannot be used in this manner
echo "<table>\n";
while (($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
    echo "<tr>\n";
    foreach ($row as $item) {
        echo "  <td>".($item!==null?htmlentities($item, ENT_QUOTES|ENT_SUBSTITUTE):"&nbsp;")."</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";

// Output is:
//    Beijing 190518
//    Bern 3095
//    Bombay 490231
//    CN
//    CH
//    IN

oci_free_statement($stid);
oci_close($conn);

?>

注释

Note:

查询返回巨大数量的数据行时，通过增大 oci8.default_prefetch 值或使用 oci_set_prefetch() 可显著提高性能。

oci_free_statement
oci_internal_debug
OCI8 函数


打开或关闭内部调试输出

oci_get_implicit_resultset
oci_lob_copy
OCI8 函数
PHP Manual

oci_internal_debug

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_internal_debug — 打开或关闭内部调试输出

说明

void oci_internal_debug ( int $onoff )

oci_internal_debug() 打开或关闭内部调试输出。设置 onoff 为 0 关闭调试输出，为 1 则打开。

Note:

在 PHP 5.0.0 之前的版本必须使用 ociinternaldebug() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_internal_debug() 的别名。不过其已被废弃，不推荐使用。

oci_get_implicit_resultset
oci_lob_copy
OCI8 函数


Copies large object

oci_internal_debug
oci_lob_is_equal
OCI8 函数
PHP Manual

oci_lob_copy

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_lob_copy — Copies large object

说明

bool oci_lob_copy ( OCI-Lob $lob_to , OCI-Lob $lob_from [, int $length = 0 ] )

Copies a large object or a part of a large object to another large object. Old LOB-recipient data will be overwritten.

If you need to copy a particular part of a LOB to a particular position of a LOB, use OCI-Lob::seek() to move LOB internal pointers.

参数

lob_to

The destination LOB.

lob_from

The copied LOB.

length

Indicates the length of data to be copied.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

oci_internal_debug
oci_lob_is_equal
OCI8 函数


Compares two LOB/FILE locators for equality

oci_lob_copy
oci_new_collection
OCI8 函数
PHP Manual

oci_lob_is_equal

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_lob_is_equal — Compares two LOB/FILE locators for equality

说明

bool oci_lob_is_equal ( OCI-Lob $lob1 , OCI-Lob $lob2 )

Compares two LOB/FILE locators.

参数

lob1

A LOB identifier.

lob2

A LOB identifier.

返回值

Returns TRUE if these objects are equal, FALSE otherwise.

oci_lob_copy
oci_new_collection
OCI8 函数


分配新的 collection 对象

oci_lob_is_equal
oci_new_connect
OCI8 函数
PHP Manual

oci_new_collection

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_new_collection — 分配新的 collection 对象

说明

OCI-Collection oci_new_collection ( resource $connection , string $tdo [, string $schema ] )

分配一个新的 collection 对象。tdo 参数应为一个有效的名字类型（大写）。第三个可选参数 schema 应指向建立名字对象的架构。oci_new_collection() 使用当前用户作为 schema 的默认值。

oci_new_collection() 如果出错返回 FALSE。

Note:

在 PHP 5.0.0 之前的版本必须使用 ocinewcollection() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_new_collection() 的别名。不过其已被废弃，不推荐使用。

oci_lob_is_equal
oci_new_connect
OCI8 函数


建定一个到 Oracle 服务器的新连接

oci_new_collection
oci_new_cursor
OCI8 函数
PHP Manual

oci_new_connect

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_new_connect — 建定一个到 Oracle 服务器的新连接

说明

resource oci_new_connect ( string $username , string $password [, string $db [, string $charset [, int $session_mode ]]] )

oci_new_connect() 创建一个到 Oracle
服务器的新连接并登录。与 oci_connect()
和 oci_pconnect() 不同，oci_new_connect()
不会缓冲连接，总是会返回一个全新的刚打开的连接句柄。这在应用程序需要在两组查询之间实现事务隔离很有用。

可选的第三个参数可以是本地 Oracle 实例的名字或者是在 tnsnames.ora 的条目中的名字。如果没有指定第三个参数， PHP 使用环境变量 ORACLE_SID 和 TWO_TASK 来分别确定本地 Oracle 实例的名字和 tnsnames.ora 的位置。

session_mode 参数自版本 1.1 起可用并接受如下值：OCI_DEFAULT，OCI_SYSOPER 和 OCI_SYSDBA。如果指定了 OCI_SYSOPER 或 OCI_SYSDBA 其中之一，oci_new_connect() 将尝试使用外部认证信息建立特权连接。特权连接默认被禁止。要启用，需要将 oci8.privileged_connect 设为 On。

使用 Oracle 客户端库来确定字符集。字符集不需要与数据库的字符集相匹配。如果不匹配，Oracle 会尽可能地将数据从数据库字符集进行转换。因为依赖于字符集，可能不能给出可用的结果。转换也增加一些时间开销。

如果不指定，Oracle 客户端用 NLS_LANG 环境变量来决定字符集。

传递此参数可减少连接时间。

下面例子演示了怎样隔离连接。

Example #1 oci_new_connect() 例子

<?php
echo "<html><pre>";
$db = "";

$c1 = oci_connect("scott", "tiger", $db);
$c2 = oci_new_connect("scott", "tiger", $db);

function create_table($conn)
{
  $stmt = oci_parse($conn, "create table scott.hallo (test
varchar2(64))");
  oci_execute($stmt);
  echo $conn . " created table\n\n";
}

function drop_table($conn)
{
  $stmt = oci_parse($conn, "drop table scott.hallo");
  oci_execute($stmt);
  echo $conn . " dropped table\n\n";
}

function insert_data($conn)
{
  $stmt = oci_parse($conn, "insert into scott.hallo
            values('$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))");
  oci_execute($stmt, OCI_DEFAULT);
  echo $conn . " inserted hallo\n\n";
}

function delete_data($conn)
{
  $stmt = oci_parse($conn, "delete from scott.hallo");
  oci_execute($stmt, OCI_DEFAULT);
  echo $conn . " deleted hallo\n\n";
}

function commit($conn)
{
  oci_commit($conn);
  echo $conn . " committed\n\n";
}

function rollback($conn)
{
  oci_rollback($conn);
  echo $conn . " rollback\n\n";
}

function select_data($conn)
{
  $stmt = oci_parse($conn, "select * from scott.hallo");
  oci_execute($stmt, OCI_DEFAULT);
  echo $conn . "----selecting\n\n";
  while (oci_fetch($stmt)) {
    echo $conn . " <" . oci_result($stmt, "TEST") . ">\n\n";
  }
  echo $conn . "----done\n\n";
}

create_table($c1);
insert_data($c1);

select_data($c1);
select_data($c2);

rollback($c1);

select_data($c1);
select_data($c2);

insert_data($c2);
commit($c2);

select_data($c1);

delete_data($c1);
select_data($c1);
select_data($c2);
commit($c1);

select_data($c1);
select_data($c2);

drop_table($c1);
echo "</pre></html>";
?>

oci_new_connect() 在出错时返回 FALSE。

Note:

在 PHP 5.0.0 之前的版本必须使用 ocinlogon() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_new_connect() 的别名。不过其已被废弃，不推荐使用。

参见 oci_connect() 和 oci_pconnect()。

参数

username

The Oracle user name.

password

The password for username.

connection_string

包含要连接的 Oracle 实例。可以是 » Easy Connect 串，或是 tnsnames.ora 文件中的连接名，或是本地 Oracle 实例名。

如果不指定，PHP 使用环境变量来确定连接的 Oracle 实例，诸如 TWO_TASK（Linux 下）或 LOCAL（Windows 下）与 ORACLE_SID 等。

要使用 Easy Connect 命名方法，PHP 必须与 Oracle 10g 或更高版本的客户端库进行链接。Oracle 10g 的 Easy Connect 串格式：[//]host_name[:port][/service_name]。Oracle 11g 则为：[//]host_name[:port][/service_name][:server_type][/instance_name]。服务名可在数据库服务器机器上运行 Oracle 实用程序 lsnrctl status 找到。

tnsnames.ora 文件可在 Oracle Net 查找路径中，此路径包括 $ORACLE_HOME/network/admin 和 /etc。 另一种方法是设置 TNS_ADMIN 以便通过 $TNS_ADMIN/tnsnames.ora 来读取。表确认 web 守护进程可读取此文件。

character_set

使用 Oracle 客户端库来确定字符集。字符集不需要与数据库的字符集相匹配。如果不匹配，Oracle 会尽可能地将数据从数据库字符集进行转换。因为依赖于字符集，可能不能给出可用的结果。转换也增加一些时间开销。

如果不指定，Oracle 客户端用 NLS_LANG 环境变量来决定字符集。

传递此参数可减少连接时间。

session_mode

此参数在 PHP 5（PECL OCI8 1.1）版本开始可用，并收受下列值：OCI_DEFAULT，OCI_SYSOPER 和 OCI_SYSDBA。如为 OCI_SYSOPER 或 OCI_SYSDBA 其中之一，此函数将会使用外部的证书建立有特权的连接。有特权的连接默认是禁用的。需要将 oci8.privileged_connect 设为 On 来启用。

PHP 5.3（PECL OCI8 1.3.4）引进了 OCI_CRED_EXT 模式值。使用外部或操作系统认证必需在 Oracle 数据库中进行配置。OCI_CRED_EXT 标志只可用于用户为 "/"，密码为空的情况。oci8.privileged_connect 可为 On 或 Off。

OCI_CRED_EXT 可与 OCI_SYSOPER 或 OCI_SYSDBA 模式组合使用。

OCI_CRED_EXT 由于安全的原因不支持 Windows 系统。

返回值

Returns a connection identifier or FALSE on error.

范例

The following demonstrates how you can separate connections.

Example #2 oci_new_connect() example

<?php
echo "<html><pre>";
$db = "";

$c1 = oci_connect("scott", "tiger", $db);
$c2 = oci_new_connect("scott", "tiger", $db);

function create_table($conn)
{
  $stmt = oci_parse($conn, "create table scott.hallo (test
varchar2(64))");
  oci_execute($stmt);
  echo $conn . " created table\n\n";
}

function drop_table($conn)
{
  $stmt = oci_parse($conn, "drop table scott.hallo");
  oci_execute($stmt);
  echo $conn . " dropped table\n\n";
}

function insert_data($conn)
{
  $stmt = oci_parse($conn, "insert into scott.hallo
            values('$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))");
  oci_execute($stmt, OCI_DEFAULT);
  echo $conn . " inserted hallo\n\n";
}

function delete_data($conn)
{
  $stmt = oci_parse($conn, "delete from scott.hallo");
  oci_execute($stmt, OCI_DEFAULT);
  echo $conn . " deleted hallo\n\n";
}

function commit($conn)
{
  oci_commit($conn);
  echo $conn . " committed\n\n";
}

function rollback($conn)
{
  oci_rollback($conn);
  echo $conn . " rollback\n\n";
}

function select_data($conn)
{
  $stmt = oci_parse($conn, "select * from scott.hallo");
  oci_execute($stmt, OCI_DEFAULT);
  echo $conn . "----selecting\n\n";
  while (oci_fetch($stmt)) {
    echo $conn . " <" . oci_result($stmt, "TEST") . ">\n\n";
  }
  echo $conn . "----done\n\n";
}

create_table($c1);
insert_data($c1);

select_data($c1);
select_data($c2);

rollback($c1);

select_data($c1);
select_data($c2);

insert_data($c2);
commit($c2);

select_data($c1);

delete_data($c1);
select_data($c1);
select_data($c2);
commit($c1);

select_data($c1);
select_data($c2);

drop_table($c1);
echo "</pre></html>";
?>

注释

Note:

In PHP versions before 5.0.0 you must use ocinlogon() instead. 在当前版本中，旧的函数名还可以被使用，但已经被废弃并不建议使用。

参见

  • oci_connect() - 建立一个到 Oracle 服务器的连接
  • oci_pconnect() - 使用一个持久连接连到 Oracle 数据库

oci_new_collection
oci_new_cursor
OCI8 函数


分配并返回一个新的游标（语句句柄）

oci_new_connect
oci_new_descriptor
OCI8 函数
PHP Manual

oci_new_cursor

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_new_cursor — 分配并返回一个新的游标（语句句柄）

说明

resource oci_new_cursor ( resource $connection )

oci_new_cursor() 在指定的连接上分配一个新的语句句柄。

Example #1 在 Oracle 的存储过程中使用 REF CURSOR

<?php
// suppose your stored procedure info.output returns a ref cursor in :data

$conn = oci_connect("scott", "tiger");
$curs = oci_new_cursor($conn);
$stmt = oci_parse($conn, "begin info.output(:data); end;");

oci_bind_by_name($stmt, "data", $curs, -1, OCI_B_CURSOR);
oci_execute($stmt);
oci_execute($curs);

while ($data = oci_fetch_row($curs)) {
    var_dump($data);
}

oci_free_statement($stmt);
oci_free_statement($curs);
oci_close($conn);
?>

Example #2 在 Oracle 的 select 语句中使用 REF CURSOR

<?php
echo "<html><body>";
$conn = oci_connect("scott", "tiger");
$count_cursor = "CURSOR(select count(empno) num_emps from emp " .
                "where emp.deptno = dept.deptno) as EMPCNT from dept";
$stmt = oci_parse($conn, "select deptno,dname,$count_cursor");

oci_execute($stmt);
echo "<table border=\"1\">";
echo "<tr>";
echo "<th>DEPT NAME</th>";
echo "<th>DEPT #</th>";
echo "<th># EMPLOYEES</th>";
echo "</tr>";

while ($data = oci_fetch_assoc($stmt)) {
    echo "<tr>";
    $dname  = $data["DNAME"];
    $deptno = $data["DEPTNO"];
    echo "<td>$dname</td>";
    echo "<td>$deptno</td>";
    oci_execute($data["EMPCNT"]);
    while ($subdata = oci_fetch_assoc($data["EMPCNT"])) {
        $num_emps = $subdata["NUM_EMPS"];
        echo  "<td>$num_emps</td>";
    }
    echo "</tr>";
}
echo "</table>";
echo "</body></html>";
oci_free_statement($stmt);
oci_close($conn);
?>

oci_new_cursor() 如果出错返回 FALSE。

Note:

在 PHP 5.0.0 之前的版本必须使用 ocinewcursor() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_new_cursor() 的别名。不过其已被废弃，不推荐使用。

oci_new_connect
oci_new_descriptor
OCI8 函数


初始化一个新的空 LOB 或 FILE 描述符

oci_new_cursor
oci_num_fields
OCI8 函数
PHP Manual

oci_new_descriptor

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_new_descriptor — 初始化一个新的空 LOB 或 FILE 描述符

说明

OCI-Lob oci_new_descriptor ( resource $connection [, int $type ] )

oci_new_descriptor() 分配资源以保存描述符或 LOB 定位器。有效的 type 值是：OCI_D_FILE，OCI_D_LOB 以及 OCI_D_ROWID。

Example #1 oci_new_descriptor() 例子

<?php
    /* This script is designed to be called from a HTML form.
     * It expects $user, $password, $table, $where, and $commitsize
     * to be passed in from the form.  The script then deletes
     * the selected rows using the ROWID and commits after each
     * set of $commitsize rows. (Use with care, there is no rollback)
     */
    $conn = oci_connect($user, $password);
    $stmt = oci_parse($conn, "select rowid from $table $where");
    $rowid = oci_new_descriptor($conn, OCI_D_ROWID);
    oci_define_by_name($stmt, "ROWID", $rowid);
    oci_execute($stmt);
    while (oci_fetch($stmt)) {
       $nrows = oci_num_rows($stmt);
       $delete = oci_parse($conn, "delete from $table where ROWID = :rid");
       oci_bind_by_name($delete, ":rid", $rowid, -1, OCI_B_ROWID);
       oci_execute($delete);
       echo "$nrows\n";
       if (($nrows % $commitsize) == 0) {
           oci_commit($conn);
       }
    }
    $nrows = oci_num_rows($stmt);
    echo "$nrows deleted...\n";
    oci_free_statement($stmt);
    oci_close($conn);
?>
<?php
    /* This script demonstrates file upload to LOB columns
     * The formfield used for this example looks like this
     * <form action="upload.php" method="post" enctype="multipart/form-data">
     * <input type="file" name="lob_upload" />
     * ...
     */
  if (!isset($lob_upload) || $lob_upload == 'none'){
?>
<form action="upload.php" method="post" enctype="multipart/form-data">
Upload file: <input type="file" name="lob_upload" /><br />
<input type="submit" value="Upload" /> - <input type="reset" value="Reset" />
</form>
<?php
  } else {

     // $lob_upload contains the temporary filename of the uploaded file

     // see also the features section on file upload,
     // if you would like to use secure uploads

     $conn = oci_connect($user, $password);
     $lob = oci_new_descriptor($conn, OCI_D_LOB);
     $stmt = oci_parse($conn, "insert into $table (id, the_blob)
               values(my_seq.NEXTVAL, EMPTY_BLOB()) returning the_blob into :the_blob");
     oci_bind_by_name($stmt, ':the_blob', $lob, -1, OCI_B_BLOB);
     oci_execute($stmt, OCI_DEFAULT);
     if ($lob->savefile($lob_upload)){
        oci_commit($conn);
        echo "Blob successfully uploaded\n";
     }else{
        echo "Couldn't upload Blob\n";
     }
     oci_free_descriptor($lob);
     oci_free_statement($stmt);
     oci_close($conn);
  }
?>

Example #2 oci_new_descriptor() 例子

<?php
    /* Calling PL/SQL stored procedures which contain clobs as input
     * parameters (PHP 4 >= 4.0.6).
     * Example PL/SQL stored procedure signature is:
     *
     * PROCEDURE save_data
     *   Argument Name                  Type                    In/Out Default?
     *   ------------------------------ ----------------------- ------ --------
     *   KEY                            NUMBER(38)              IN
     *   DATA                           CLOB                    IN
     *
     */

    $conn = oci_connect($user, $password);
    $stmt = oci_parse($conn, "begin save_data(:key, :data); end;");
    $clob = oci_new_descriptor($conn, OCI_D_LOB);
    oci_bind_by_name($stmt, ':key', $key);
    oci_bind_by_name($stmt, ':data', $clob, -1, OCI_B_CLOB);
    $clob->write($data);
    oci_execute($stmt, OCI_DEFAULT);
    oci_commit($conn);
    $clob->free();
    oci_free_statement($stmt);
?>

oci_new_descriptor() 如果出错返回 FALSE。

Note:

在 PHP 5.0.0 之前的版本必须使用 ocinewdescriptor() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_new_descriptor() 的别名。不过其已被废弃，不推荐使用。

oci_new_cursor
oci_num_fields
OCI8 函数


返回结果列的数目

oci_new_descriptor
oci_num_rows
OCI8 函数
PHP Manual

oci_num_fields

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_num_fields — 返回结果列的数目

说明

int oci_num_fields ( resource $statement )

oci_num_fields() 返回 statement 中的列的数目。

Example #1 oci_num_fields() 例子

<?php
    echo "<pre>\n";
    $conn = oci_connect("scott", "tiger");
    $stmt = oci_parse($conn, "select * from emp");

    oci_execute($stmt);

    while (oci_fetch($stmt)) {
        echo "\n";
        $ncols = oci_num_fields($stmt);
        for ($i = 1; $i <= $ncols; $i++) {
            $column_name  = oci_field_name($stmt, $i);
            $column_value = oci_result($stmt, $i);
            echo $column_name . ': ' . $column_value . "\n";
        }
        echo "\n";
    }

    oci_free_statement($stmt);
    oci_close($conn);

    echo "</pre>";
?>

oci_num_fields() 在出错时返回 FALSE。

Note:

在 PHP 5.0.0 之前的版本必须使用 ocinumcols() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_num_fields() 的别名。不过其已被废弃，不推荐使用。

oci_new_descriptor
oci_num_rows
OCI8 函数


返回语句执行后受影响的行数

oci_num_fields
oci_parse
OCI8 函数
PHP Manual

oci_num_rows

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_num_rows — 返回语句执行后受影响的行数

说明

int oci_num_rows ( resource $stmt )

oci_num_rows() 返回语句执行后受影响的行数。

Note:

本函数并不返回 SELECT 查询出来的行数！对于 SELECT 语句本函数将返回用 oci_fetch*() 函数取到缓冲区的行数。

Example #1 oci_num_rows() 例子

<?php
    echo "<pre>";
    $conn = oci_connect("scott", "tiger");

    $stmt = oci_parse($conn, "create table emp2 as select * from emp");
    oci_execute($stmt);
    echo oci_num_rows($stmt) . " rows inserted.<br />";
    oci_free_statement($stmt);

    $stmt = oci_parse($conn, "delete from emp2");
    oci_execute($stmt, OCI_DEFAULT);
    echo oci_num_rows($stmt) . " rows deleted.<br />";
    oci_commit($conn);
    oci_free_statement($stmt);

    $stmt = oci_parse($conn, "drop table emp2");
    oci_execute($stmt);
    oci_free_statement($stmt);

    oci_close($conn);
    echo "</pre>";
?>

oci_num_rows() 在出错时返回 FALSE。

Note:

在 PHP 5.0.0 之前的版本必须使用 ocirowcount() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_num_rows() 的别名。不过其已被废弃，不推荐使用。

oci_num_fields
oci_parse
OCI8 函数


配置 Oracle 语句预备执行

oci_num_rows
oci_password_change
OCI8 函数
PHP Manual

oci_parse

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_parse — 配置 Oracle 语句预备执行

说明

resource oci_parse ( resource $connection , string $query )

oci_parse() 在 connection 上配置 query 并返回语句标识符以用于 oci_bind_by_name()，oci_execute() 以及其它函数。

Note:

本函数并不验证 query。要知道 query 是否是合法的 SQL 或 PL/SQL 语句的唯一方法是执行它。

oci_parse() 在出错时返回 FALSE。

Note:

在 PHP 5.0.0 之前的版本必须使用 ociparse() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_parse() 的别名。不过其已被废弃，不推荐使用。

oci_num_rows
oci_password_change
OCI8 函数


修改 Oracle 用户的密码

oci_parse
oci_pconnect
OCI8 函数
PHP Manual

oci_password_change

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_password_change — 修改 Oracle 用户的密码

说明

bool oci_password_change ( resource $connection , string $username , string $old_password , string $new_password )
resource oci_password_change ( string $dbname , string $username , string $old_password , string $new_password )

修改用户 username 的密码。old_password 和 new_password 应分别指定旧密码和新密码。

Note: 第二种 oci_password_change() 的语法自版本 1.1（OCI8 扩展库版本）起可用。

成功时返回 TRUE， 或者在失败时返回 FALSE。

Note:

在 PHP 5.0.0 之前的版本必须使用 ocipasswordchange() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_password_change() 的别名。不过其已被废弃，不推荐使用。

参数

connection

An Oracle connection identifier, returned by oci_connect() or oci_pconnect().

username

The Oracle user name.

old_password

The old password.

new_password

The new password to be set.

dbname

The database name.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note:

Changing the password either with this function or directly in Oracle should be done carefully. This is because PHP applications may continue to successfully reuse persistent connections by authenticating with the old password. The best practice is to restart all web servers whenever the user password is changed.

Note:

If upgrading the Oracle client libraries or the database from a release prior to 11.2.0.3 to version 11.2.0.3 or higher, oci_password_change() may give the error "ORA-1017: invalid username/password" unless both client and server versions are upgraded at the same time.

Note: The second oci_password_change() syntax is available since OCI8 version 1.1.

Note:

In PHP versions before 5.0.0 you must use ocipasswordchange() instead. This name still can be used, it was left as alias of oci_password_change() for downwards compatability. This, however, is deprecated and not recommended.

oci_parse
oci_pconnect
OCI8 函数


使用一个持久连接连到 Oracle 数据库

oci_password_change
oci_result
OCI8 函数
PHP Manual

oci_pconnect

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_pconnect — 使用一个持久连接连到 Oracle 数据库

说明

resource oci_pconnect ( string $username , string $password [, string $db [, string $charset [, int $session_mode ]]] )

oci_pconnect() 创建一个到 Oracle 服务器的持久连接并登录。持久连接会被缓冲并在请求之间重复使用，可以降低每个页面加载的消耗。一个典型的 PHP 应用程序对于每个 Apache 子进程（或者 PHP FastCGI/CGI 进程）会有一个打开的持久连接到 Oracle 服务器。更多信息见数据库持久连接一节。

Note: 自 OCI8 扩展库版本 1.1 起，持久 Oracle 连接的生命周期和最大数目可以通过设定以下配置选项来调整：oci8.persistent_timeout，oci8.ping_interval 和 oci8.max_persistent。

可选的第三个参数可以是本地 Oracle 实例的名字或者是在 tnsnames.ora 的条目中的名字。如果没有指定第三个参数， PHP 使用环境变量 ORACLE_SID 和 TWO_TASK 来分别确定本地 Oracle 实例的名字和 tnsnames.ora 的位置。

session_mode 参数自版本 1.1 起可用并接受如下值：OCI_DEFAULT，OCI_SYSOPER 和 OCI_SYSDBA。如果指定了 OCI_SYSOPER 或 OCI_SYSDBA 其中之一，oci_new_connect() 将尝试使用外部认证信息建立特权连接。特权连接默认被禁止。要启用，需要将 oci8.privileged_connect 设为 On。

使用 Oracle 客户端库来确定字符集。字符集不需要与数据库的字符集相匹配。如果不匹配，Oracle 会尽可能地将数据从数据库字符集进行转换。因为依赖于字符集，可能不能给出可用的结果。转换也增加一些时间开销。

如果不指定，Oracle 客户端用 NLS_LANG 环境变量来决定字符集。

传递此参数可减少连接时间。

oci_pconnect() 返回连接标识符，出错则返回 FALSE。

Note:

在 PHP 5.0.0 之前的版本必须使用 ociplogon() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_pconnect() 的别名。不过其已被废弃，不推荐使用。

参见 oci_connect() 和 oci_new_connect()。

参数

username

The Oracle user name.

password

The password for username.

connection_string

包含要连接的 Oracle 实例。可以是 » Easy Connect 串，或是 tnsnames.ora 文件中的连接名，或是本地 Oracle 实例名。

如果不指定，PHP 使用环境变量来确定连接的 Oracle 实例，诸如 TWO_TASK（Linux 下）或 LOCAL（Windows 下）与 ORACLE_SID 等。

要使用 Easy Connect 命名方法，PHP 必须与 Oracle 10g 或更高版本的客户端库进行链接。Oracle 10g 的 Easy Connect 串格式：[//]host_name[:port][/service_name]。Oracle 11g 则为：[//]host_name[:port][/service_name][:server_type][/instance_name]。服务名可在数据库服务器机器上运行 Oracle 实用程序 lsnrctl status 找到。

tnsnames.ora 文件可在 Oracle Net 查找路径中，此路径包括 $ORACLE_HOME/network/admin 和 /etc。 另一种方法是设置 TNS_ADMIN 以便通过 $TNS_ADMIN/tnsnames.ora 来读取。表确认 web 守护进程可读取此文件。

character_set

使用 Oracle 客户端库来确定字符集。字符集不需要与数据库的字符集相匹配。如果不匹配，Oracle 会尽可能地将数据从数据库字符集进行转换。因为依赖于字符集，可能不能给出可用的结果。转换也增加一些时间开销。

如果不指定，Oracle 客户端用 NLS_LANG 环境变量来决定字符集。

传递此参数可减少连接时间。

session_mode

此参数在 PHP 5（PECL OCI8 1.1）版本开始可用，并收受下列值：OCI_DEFAULT，OCI_SYSOPER 和 OCI_SYSDBA。如为 OCI_SYSOPER 或 OCI_SYSDBA 其中之一，此函数将会使用外部的证书建立有特权的连接。有特权的连接默认是禁用的。需要将 oci8.privileged_connect 设为 On 来启用。

PHP 5.3（PECL OCI8 1.3.4）引进了 OCI_CRED_EXT 模式值。使用外部或操作系统认证必需在 Oracle 数据库中进行配置。OCI_CRED_EXT 标志只可用于用户为 "/"，密码为空的情况。oci8.privileged_connect 可为 On 或 Off。

OCI_CRED_EXT 可与 OCI_SYSOPER 或 OCI_SYSDBA 模式组合使用。

OCI_CRED_EXT 由于安全的原因不支持 Windows 系统。

返回值

Returns a connection identifier or FALSE on error.

注释

Note: Starting with PHP 5.1.2 and PECL oci8 1.1, the lifetime and maximum number of persistent Oracle connections can be tuned by setting the following configuration values: oci8.persistent_timeout, oci8.ping_interval and oci8.max_persistent.

Note:

In PHP versions before 5.0.0 you must use ociplogon() instead. 在当前版本中，旧的函数名还可以被使用，但已经被废弃并不建议使用。

参见

  • oci_connect() - 建立一个到 Oracle 服务器的连接
  • oci_new_connect() - 建定一个到 Oracle 服务器的新连接

oci_password_change
oci_result
OCI8 函数


返回所取得行中字段的值

oci_pconnect
oci_rollback
OCI8 函数
PHP Manual

oci_result

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_result — 返回所取得行中字段的值

说明

mixed oci_result ( resource $statement , mixed $field )

oci_result() 返回由 oci_fetch() 所取得的当前行中 field 字段的数据。oci_result() 对所有类型都返回字符串只除了抽象类型（ROWID，LOB 和 FILE）。oci_result() 在出错时返回 FALSE。

可以使用列序号（从 1 开始）或列名（大写）作为 col 的参数。

Note:

在 PHP 5.0.0 之前的版本必须使用 ociresult() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_result() 的别名。不过其已被废弃，不推荐使用。

要获取 OCI8 扩展进行数据类型映射的细节，请参见驱动所支持的数据类型。

参见 oci_fetch_array()，oci_fetch_assoc()，oci_fetch_object()，oci_fetch_row() 和 oci_fetch_all()。

参数

statement

field

Can be either use the column number (1-based) or the column name (in uppercase).

返回值

Returns everything as strings except for abstract types (ROWIDs, LOBs and FILEs). Returns FALSE on error.

注释

Note:

In PHP versions before 5.0.0 you must use ociresult() instead. This name still can be used, it was left as alias of oci_result() for downwards compatability. This, however, is deprecated and not recommended.

参见

  • oci_fetch_array() - Returns the next row from a query as an associative or numeric array
  • oci_fetch_assoc() - Returns the next row from a query as an associative array
  • oci_fetch_object() - Returns the next row from a query as an object
  • oci_fetch_row() - Returns the next row from a query as a numeric array
  • oci_fetch_all() - 获取结果数据的所有行到一个数组

oci_pconnect
oci_rollback
OCI8 函数


回滚未提交的事务

oci_result
oci_server_version
OCI8 函数
PHP Manual

oci_rollback

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_rollback — 回滚未提交的事务

说明

bool oci_rollback ( resource $connection )

oci_rollback() 回滚 Oracle 连接 connection 上所有未提交的语句。

成功时返回 TRUE， 或者在失败时返回 FALSE。

Note:

当关闭连接或脚本结束时（看哪个先）事务会自动回卷。需要明确地调用 oci_commit() 来提交事务，或 oci_rollback() 来中止事务。

Note:

在 PHP 5.0.0 之前的版本必须使用 ocirollback() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_rollback() 的别名。不过其已被废弃，不推荐使用。

参见 oci_commit()。

参数

connection

An Oracle connection identifier, returned by oci_connect(), oci_pconnect() or oci_new_connect().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 oci_rollback() example

<?php

// Insert into several tables, rolling back the changes if an error occurs

$conn = oci_connect('hr', 'welcome', 'localhost/XE');

$stid = oci_parse($conn, "INSERT INTO mysalary (id, name) VALUES (1, 'Chris')");

// The OCI_NO_AUTO_COMMIT flag tells Oracle not to commit the INSERT immediately
// Use OCI_DEFAULT as the flag for PHP <= 5.3.1.  The two flags are equivalent
$r = oci_execute($stid, OCI_NO_AUTO_COMMIT);
if (!$r) {
    $e = oci_error($stid);
    trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

$stid = oci_parse($conn, 'INSERT INTO myschedule (startday) VALUES (12)');
$r = oci_execute($stid, OCI_NO_AUTO_COMMIT);
if (!$r) {
    $e = oci_error($stid);
    oci_rollback($conn);  // rollback changes to both tables
    trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

// Commit the changes to both tables
$r = oci_commit($conn);
if (!r) {
    $e = oci_error($conn);
    trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

?>

Example #2 Rolling back to a SAVEPOINT example

<?php
$stid = oci_parse($conn, 'UPDATE mytab SET id = 1111');
oci_execute($stid, OCI_NO_AUTO_COMMIT);

// Create the savepoint
$stid = oci_parse($conn, 'SAVEPOINT mysavepoint');
oci_execute($stid, OCI_NO_AUTO_COMMIT);

$stid = oci_parse($conn, 'UPDATE mytab SET id = 2222');
oci_execute($stid, OCI_NO_AUTO_COMMIT);

// Use an explicit SQL statement to rollback to the savepoint
$stid = oci_parse($conn, 'ROLLBACK TO SAVEPOINT mysavepoint');
oci_execute($stid, OCI_NO_AUTO_COMMIT);

oci_commit($conn);  // mytab now has id of 1111
?>

注释

Note:

Transactions are automatically rolled back when you close the connection, or when the script ends, whichever is soonest. You need to explicitly call oci_commit() to commit the transaction.

Any call to oci_execute() that uses OCI_COMMIT_ON_SUCCESS mode explicitly or by default will commit any previous uncommitted transaction.

Any Oracle DDL statement such as CREATE or DROP will automatically commit any uncommitted transaction.

Note:

In PHP versions before 5.0.0 you must use ocirollback() instead. 在当前版本中，旧的函数名还可以被使用，但已经被废弃并不建议使用。

参见

  • oci_commit() - 提交未执行的事务处理
  • oci_execute() - 执行一条语句

oci_result
oci_server_version
OCI8 函数


返回服务器版本信息

oci_rollback
oci_set_action
OCI8 函数
PHP Manual

oci_server_version

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_server_version — 返回服务器版本信息

说明

string oci_server_version ( resource $connection )

以字符串返回 connection 所连接的 Oracle 服务器的版本信息。出错则返回 FALSE。

Example #1 oci_server_version() 例子

<?php
    $conn = oci_connect("scott", "tiger");
    echo "Server Version: " . oci_server_version($conn);
    oci_close($conn);
?>

Note:

在 PHP 5.0.0 之前的版本必须使用 ociserverversion() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_server_version() 的别名。不过其已被废弃，不推荐使用。

oci_rollback
oci_set_action
OCI8 函数


Sets the action name

oci_server_version
oci_set_client_identifier
OCI8 函数
PHP Manual

oci_set_action

(PHP 5.3.2, PHP 7, PECL OCI8 >= 1.4.0)

oci_set_action — Sets the action name

说明

bool oci_set_action ( resource $connection , string $action_name )

Sets the action name for Oracle tracing.

The action name is registered with the database when the next 'roundtrip' from PHP to the database occurs, typically when an SQL statement is executed.

The action name can subsequently be queried from database administration views such as V$SESSION. It can be used for tracing and monitoring such as with V$SQLAREA and DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE.

The value may be retained across persistent connections.

参数

connection

Oracle 连接标识，由 oci_connect()，oci_pconnect()，或 oci_new_connect() 返回。

action_name

User chosen string up to 32 bytes long.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Setting the action

<?php

$c = oci_connect('hr', 'welcome', 'localhost/XE');

// Record the action
oci_set_action($c, 'Friend Lookup');

// Code that causes a roundtrip, for example a query:
$s = oci_parse($c, 'select * from dual');
oci_execute($s);
oci_fetch_all($s, $res);

sleep(30);

?>
// While the script is running, the administrator can see the actions
// being performed:

sqlplus system/welcome
SQL> select action from v$session;

注释

Note: Oracle 版本需求

当 PHP 是与 Oracle 数据库 10g 及更新版本的 扩展库链接时，此函数可用。

Tip

性能

使用旧版的 OCI8 或 ORACLE 数据库 ，可使用 Oracle DBMS_APPLICATION_INFO 包来设置客户端信息。这比使用 oci_set_client_info() 较低效。

Caution

Roundtrip Gotcha

一些 OCI8 函数会导致 Roundtrips. 对数据库来说当启用结果缓存时，查询可能不产生Roundtrips。

参见

  • oci_set_module_name() - Sets the module name
  • oci_set_client_info() - Sets the client information
  • oci_set_client_identifier() - Sets the client identifier

oci_server_version
oci_set_client_identifier
OCI8 函数


Sets the client identifier

oci_set_action
oci_set_client_info
OCI8 函数
PHP Manual

oci_set_client_identifier

(PHP 5.3.2, PHP 7, PECL OCI8 >= 1.4.0)

oci_set_client_identifier — Sets the client identifier

说明

bool oci_set_client_identifier ( resource $connection , string $client_identifier )

Sets the client identifier used by various database components to identify lightweight application users who authenticate as the same database user.

The client identifier is registered with the database when the next 'roundtrip' from PHP to the database occurs, typically when an SQL statement is executed.

The identifier can subsequently be queried, for example with SELECT SYS_CONTEXT('USERENV','CLIENT_IDENTIFIER') FROM DUAL. Database administration views such as V$SESSION will also contain the value. It can be used with DBMS_MONITOR.CLIENT_ID_TRACE_ENABLE for tracing and can also be used for auditing.

The value may be retained across page requests that use the same persistent connection.

参数

connection

Oracle 连接标识，由 oci_connect()，oci_pconnect()，或 oci_new_connect() 返回。

client_identifier

User chosen string up to 64 bytes long.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Setting the client identifier to the application user

<?php

// Find the application user's login name
session_start();
$un = my_validate_session($_SESSION['username']);
$c = oci_connect('myschema', 'welcome', 'localhost/XE');

// Tell Oracle who that user is
oci_set_client_identifier($c, $un);

// The next roundtrip to the database will piggyback the identifier
$s = oci_parse($c, 'select mydata from mytable');
oci_execute($s);

// ...

?>

注释

Caution

Roundtrip Gotcha

一些 OCI8 函数会导致 Roundtrips. 对数据库来说当启用结果缓存时，查询可能不产生Roundtrips。

参见

  • oci_set_module_name() - Sets the module name
  • oci_set_action() - Sets the action name
  • oci_set_client_info() - Sets the client information

oci_set_action
oci_set_client_info
OCI8 函数


Sets the client information

oci_set_client_identifier
oci_set_edition
OCI8 函数
PHP Manual

oci_set_client_info

(PHP 5.3.2, PHP 7, PECL OCI8 >= 1.4.0)

oci_set_client_info — Sets the client information

说明

bool oci_set_client_info ( resource $connection , string $client_info )

Sets the client information for Oracle tracing.

The client information is registered with the database when the next 'roundtrip' from PHP to the database occurs, typically when an SQL statement is executed.

The client information can subsequently be queried from database administration views such as V$SESSION.

The value may be retained across persistent connections.

参数

connection

Oracle 连接标识，由 oci_connect()，oci_pconnect()，或 oci_new_connect() 返回。

client_info

User chosen string up to 64 bytes long.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Setting the client information

<?php

$c = oci_connect('hr', 'welcome', 'localhost/XE');

// Record the client information
oci_set_client_info($c, 'My Application Version 2');

// Code that causes a roundtrip, for example a query:
$s = oci_parse($c, 'select * from dual');
oci_execute($s);
oci_fetch_all($s, $res);

sleep(30);

?>
// While the script is running, the administrator can see the client
// information:

sqlplus system/welcome
SQL> select client_info from v$session;

注释

Note: Oracle 版本需求

当 PHP 是与 Oracle 数据库 10g 及更新版本的 扩展库链接时，此函数可用。

Tip

性能

使用旧版的 OCI8 或 ORACLE 数据库 ，可使用 Oracle DBMS_APPLICATION_INFO 包来设置客户端信息。这比使用 oci_set_client_info() 较低效。

Caution

Roundtrip Gotcha

一些 OCI8 函数会导致 Roundtrips. 对数据库来说当启用结果缓存时，查询可能不产生Roundtrips。

参见

  • oci_set_module_name() - Sets the module name
  • oci_set_action() - Sets the action name
  • oci_set_client_identifier() - Sets the client identifier

oci_set_client_identifier
oci_set_edition
OCI8 函数


Sets the database edition

oci_set_client_info
oci_set_module_name
OCI8 函数
PHP Manual

oci_set_edition

(PHP 5.3.2, PHP 7, PECL OCI8 >= 1.4.0)

oci_set_edition — Sets the database edition

说明

bool oci_set_edition ( string $edition )

Sets the database "edition" of objects to be used by a subsequent connections.

Oracle Editions allow concurrent versions of applications to run using the same schema and object names. This is useful for upgrading live systems.

Call oci_set_edition() before calling
oci_connect(), oci_pconnect()
or oci_new_connect().

If an edition is set that is not valid in the database, connection will fail even if oci_set_edition() returns success.

When using persistent connections, if a connection with the requested edition setting already exists, it is reused. Otherwise, a different persistent connection is created

参数

edition

Oracle Database edition name previously created with the SQL "CREATE EDITION" command.

注释

Note: Oracle version requirement

This function is available from Oracle 11gR2 onwards.

Caution

Persistent connections

To avoid inconsistencies and unexpected errors, do not use ALTER SESSION SET EDITION to change the edition on persistent connections.

Caution

DRCP Connection Pooling

To avoid inconsistencies and unexpected errors when using editions and DRCP with Oracle 11.2.0.1, keep a one-to-one correspondence between the oci8.connection_class and the edition name used by applications. Each pooled server of a given connection class should only be used with one edition. This restriction has been removed with Oracle 11.2.0.2.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Two scripts can use different versions of myfunc() at the same time

<?php

// File 1

echo "Version 1 of application\n";

oci_set_edition('ORA$BASE');
$c = oci_connect('hr', 'welcome', 'localhost/XE');

$s = oci_parse($c, "begin :r := myfunc(); end;");
oci_bind_by_name($s, ":r", $r, 20);
oci_execute($s);
echo "The result is $r\n";

?>
<?php

// File 2

echo "Version 2 of application\n";

oci_set_edition('E1');
$c = oci_connect('hr', 'welcome', 'localhost/XE');

$s = oci_parse($c, "begin :r := myfunc(); end;");
oci_bind_by_name($s, ":r", $r, 20);
oci_execute($s);
echo "The result is $r\n";

?>

oci_set_client_info
oci_set_module_name
OCI8 函数


Sets the module name

oci_set_edition
oci_set_prefetch
OCI8 函数
PHP Manual

oci_set_module_name

(PHP 5.3.2, PHP 7, PECL OCI8 >= 1.4.0)

oci_set_module_name — Sets the module name

说明

bool oci_set_module_name ( resource $connection , string $module_name )

Sets the module name for Oracle tracing.

The module name is registered with the database when the next 'roundtrip' from PHP to the database occurs, typically when an SQL statement is executed.

The name can subsequently be queried from database administration views such as V$SESSION. It can be used for tracing and monitoring such as with V$SQLAREA and DBMS_MONITOR.SERV_MOD_ACT_STAT_ENABLE.

The value may be retained across persistent connections.

参数

connection

Oracle 连接标识，由 oci_connect()，oci_pconnect()，或 oci_new_connect() 返回。

module_name

User chosen string up to 48 bytes long.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note: Oracle 版本需求

当 PHP 是与 Oracle 数据库 10g 及更新版本的 扩展库链接时，此函数可用。

Tip

性能

使用旧版的 OCI8 或 ORACLE 数据库 ，可使用 Oracle DBMS_APPLICATION_INFO 包来设置客户端信息。这比使用 oci_set_client_info() 较低效。

Caution

Roundtrip Gotcha

一些 OCI8 函数会导致 Roundtrips. 对数据库来说当启用结果缓存时，查询可能不产生Roundtrips。

范例

Example #1 Setting the module name

<?php

$c = oci_connect('hr', 'welcome', 'localhost/XE');

// Record the module
oci_set_module_name($c, 'Home Page');

// Code that causes a roundtrip, for example a query:
$s = oci_parse($c, 'select * from dual');
oci_execute($s);
oci_fetch_all($s, $res);

sleep(30);
?>
// While the script is running, the administrator can see the
// modules in use:

sqlplus system/welcome
SQL> select module from v$session;

参见

  • oci_set_action() - Sets the action name
  • oci_set_client_info() - Sets the client information
  • oci_set_client_identifier() - Sets the client identifier

oci_set_edition
oci_set_prefetch
OCI8 函数


设置预提取行数

oci_set_module_name
oci_statement_type
OCI8 函数
PHP Manual

oci_set_prefetch

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_set_prefetch — 设置预提取行数

说明

bool oci_set_prefetch ( resource $statement [, int $rows ] )

在成功调用 oci_execute() 之后设定预提取的行数。rows 的默认值为 1。

Note:

在 PHP 5.0.0 之前的版本必须使用 ocisetprefetch() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_set_prefetch() 的别名。不过其已被废弃，不推荐使用。

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见 oci8_.default_prefetch INI 选项。

参数

statement

有效的 OCI8 报表标识符 由 oci_parse() 创建，被 oci_execute() 或 REF CURSOR statement 标识执行。

rows

The number of rows to be prefetched, >= 0

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
PHP 5.3.2 (PECL OCI8 1.4) | Before this release, rows must be >= 1.
PHP 5.3 (PECL OCI8 1.3.4) | Before this release, prefetching was limited to the lesser of rows rows and 1024 * rows bytes. The byte size restriction has now been removed.

范例

Example #1 Changing the default prefetch value for a query

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/XE');

$stid = oci_parse($conn, 'SELECT * FROM myverybigtable');
oci_set_prefetch($stid, 300);  // Set before calling oci_execute()
oci_execute($stid);

echo "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    echo "<tr>\n";
    foreach ($row as $item) {
        echo "    <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;")."</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";

oci_free_statement($stid);
oci_close($conn);

?>

Example #2 Changing the default prefetch for a REF CURSOR fetch

<?php
/*
  Create the PL/SQL stored procedure as:

  CREATE OR REPLACE PROCEDURE myproc(p1 OUT SYS_REFCURSOR) AS
  BEGIN
    OPEN p1 FOR SELECT * FROM all_objects WHERE ROWNUM < 5000;
  END;
*/

$conn = oci_connect('hr', 'welcome', 'localhost/XE');

$stid = oci_parse($conn, 'BEGIN myproc(:rc); END;');
$refcur = oci_new_cursor($conn);
oci_bind_by_name($stid, ':rc', $refcur, -1, OCI_B_CURSOR);
oci_execute($stid);

// Change the prefetch before executing the cursor.
// REF CURSOR prefetching works when PHP is linked with Oracle 11gR2 Client libraries
oci_set_prefetch($refcur, 200);
oci_execute($refcur);

echo "<table border='1'>\n";
while ($row = oci_fetch_array($refcur, OCI_ASSOC+OCI_RETURN_NULLS)) {
    echo "<tr>\n";
    foreach ($row as $item) {
        echo "    <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;")."</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";

oci_free_statement($refcur);
oci_free_statement($stid);
oci_close($conn);

?>

If PHP OCI8 fetches from a REF CURSOR and then passes the REF CURSOR back to a second PL/SQL procedure for further processing, then set the REF CURSOR prefetch count to 0 to avoid rows being "lost" from the result set. The prefetch value is the number of extra rows fetched in each OCI8 internal request to the database, so setting it to 0 means only fetch one row at a time.

Example #3 Setting the prefetch value when passing a REF CURSOR back to Oracle

<?php

$conn = oci_connect('hr', 'welcome', 'localhost/orcl');

// get the REF CURSOR
$stid = oci_parse($conn, 'BEGIN myproc(:rc_out); END;');
$refcur = oci_new_cursor($conn);
oci_bind_by_name($stid, ':rc_out', $refcur, -1, OCI_B_CURSOR);
oci_execute($stid);

// Display two rows, but don't prefetch any extra rows otherwise
// those extra rows would not be passed back to myproc_use_rc().
// A prefetch value of 0 is allowed in PHP 5.3.2 and PECL OCI8 1.4
oci_set_prefetch($refcur, 0);
oci_execute($refcur);
$row = oci_fetch_array($refcur);
var_dump($row);
$row = oci_fetch_array($refcur);
var_dump($row);

// pass the REF CURSOR to myproc_use_rc() to do more data processing
// with the result set
$stid = oci_parse($conn, 'begin myproc_use_rc(:rc_in); end;');
oci_bind_by_name($stid, ':rc_in', $refcur, -1, OCI_B_CURSOR);
oci_execute($stid);

?>

注释

Note:

In PHP versions before 5.0.0 use ocisetprefetch() instead. 在当前版本中，旧的函数名还可以被使用，但已经被废弃并不建议使用。

参见

  • oci8.default_prefetch ini option

oci_set_module_name
oci_statement_type
OCI8 函数


返回 OCI 语句的类型

oci_set_prefetch
OCI-Collection
OCI8 函数
PHP Manual

oci_statement_type

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_statement_type — 返回 OCI 语句的类型

说明

string oci_statement_type ( resource $statement )

oci_statement_type() 返回语句 statement 的查询类型，其值为下列之一：

  1. SELECT
  2. UPDATE
  3. DELETE
  4. INSERT
  5. CREATE
  6. DROP
  7. ALTER
  8. BEGIN
  9. DECLARE
  10. UNKNOWN

statement 参数是一个由 oci_parse() 所返回的有效的 OCI 语句标识符。

Example #1 oci_statement_type() 例子

<?php
    $conn = oci_connect("scott", "tiger");
    $sql  = "delete from emp where deptno = 10";

    $stmt = oci_parse($conn, $sql);
    if (oci_statement_type($stmt) == "DELETE") {
        die("You are not allowed to delete from this table<br />");
    }

    oci_close($conn);
?>

oci_statement_type() 在出错时返回 FALSE。

Note:

在 PHP 5.0.0 之前的版本必须使用 ocistatementtype() 替代本函数。该函数名仍然可用，为向下兼容作为 oci_statement_type() 的别名。不过其已被废弃，不推荐使用。

oci_set_prefetch
OCI-Collection
OCI8 函数


The OCI-Collection class

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

简介

OCI8 Collection functionality.

类摘要

OCI-Collection {
/* 方法 */
bool append ( mixed $value )
bool assign ( OCI-Collection $from )
bool assignElem ( int $index , mixed $value )
bool free ( void )
mixed getElem ( int $index )
int max ( void )
int size ( void )
bool trim ( int $num )
}

Table of Contents

  • OCI-Collection::append — Appends element to the collection
  • OCI-Collection::assign — Assigns a value to the collection from another existing collection
  • OCI-Collection::assignElem — Assigns a value to the element of the collection
  • OCI-Collection::free — Frees the resources associated with the collection object
  • OCI-Collection::getElem — Returns value of the element
  • OCI-Collection::max — Returns the maximum number of elements in the collection
  • OCI-Collection::size — Returns size of the collection
  • OCI-Collection::trim — Trims elements from the end of the collection
oci_statement_type
OCI-Collection::append
OCI8


Appends element to the collection

OCI-Collection
OCI-Collection::assign
OCI-Collection
PHP Manual

OCI-Collection::append

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Collection::append — Appends element to the collection

说明

bool OCI-Collection::append ( mixed $value )

Appends element to the end of the collection.

参数

value

The value to be added to the collection. Can be a string or a number.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • OCI-Collection::assign

OCI-Collection
OCI-Collection::assign
OCI-Collection


Assigns a value to the collection from another existing collection

OCI-Collection::append
OCI-Collection::assignElem
OCI-Collection
PHP Manual

OCI-Collection::assign

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Collection::assign — Assigns a value to the collection from another existing collection

说明

bool OCI-Collection::assign ( OCI-Collection $from )

Assigns a value to the collection from another, previously created collection. Both collections must be created with oci_new_collection() prior to using them.

参数

from

An instance of OCI-Collection.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • OCI-Collection::append

OCI-Collection::append
OCI-Collection::assignElem
OCI-Collection


Assigns a value to the element of the collection

OCI-Collection::assign
OCI-Collection::free
OCI-Collection
PHP Manual

OCI-Collection::assignElem

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Collection::assignElem — Assigns a value to the element of the collection

说明

bool OCI-Collection::assignElem ( int $index , mixed $value )

Assigns a value to the element with index index.

参数

index

The element index. First index is 0.

value

Can be a string or a number.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • OCI-Collection::getElem

OCI-Collection::assign
OCI-Collection::free
OCI-Collection


Frees the resources associated with the collection object

OCI-Collection::assignElem
OCI-Collection::getElem
OCI-Collection
PHP Manual

OCI-Collection::free

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Collection::free — Frees the resources associated with the collection object

说明

bool OCI-Collection::free ( void )

Frees the resources associated with the collection object.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • oci_new_collection

OCI-Collection::assignElem
OCI-Collection::getElem
OCI-Collection


Returns value of the element

OCI-Collection::free
OCI-Collection::max
OCI-Collection
PHP Manual

OCI-Collection::getElem

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Collection::getElem — Returns value of the element

说明

mixed OCI-Collection::getElem ( int $index )

Returns element's value with the index index (0-based).

参数

index

The element index. First index is 0.

返回值

Returns FALSE if such element doesn't exist; NULL if element is NULL; string if element is column of a string datatype or number if element is numeric field.

参见

  • OCI-Collection::assignElem

OCI-Collection::free
OCI-Collection::max
OCI-Collection


Returns the maximum number of elements in the collection

OCI-Collection::getElem
OCI-Collection::size
OCI-Collection
PHP Manual

OCI-Collection::max

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Collection::max — Returns the maximum number of elements in the collection

说明

int OCI-Collection::max ( void )

Returns the maximum number of elements in the collection.

返回值

Returns the maximum number as an integer, or FALSE on errors.

If the returned value is 0, then the number of elements is not limited.

参见

  • OCI-Collection::size

OCI-Collection::getElem
OCI-Collection::size
OCI-Collection


Returns size of the collection

OCI-Collection::max
OCI-Collection::trim
OCI-Collection
PHP Manual

OCI-Collection::size

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Collection::size — Returns size of the collection

说明

int OCI-Collection::size ( void )

Returns the size of the collection.

返回值

Returns the number of elements in the collection or FALSE on error.

参见

  • OCI-Collection::max

OCI-Collection::max
OCI-Collection::trim
OCI-Collection


Trims elements from the end of the collection

OCI-Collection::size
OCI-Lob
OCI-Collection
PHP Manual

OCI-Collection::trim

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Collection::trim — Trims elements from the end of the collection

说明

bool OCI-Collection::trim ( int $num )

Trims num of elements from the end of the collection.

参数

num

The number of elements to be trimmed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • OCI-Collection::size

OCI-Collection::size
OCI-Lob
OCI-Collection


The OCI-Lob class

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

简介

OCI8 LOB functionality for large binary (BLOB) and character (CLOB) objects.

类摘要

OCI-Lob {
/* 方法 */
bool append ( OCI-Lob $lob_from )
bool close ( void )
bool eof ( void )
int erase ([ int $offset [, int $length ]] )
bool export ( string $filename [, int $start [, int $length ]] )
bool flush ([ int $flag ] )
bool free ( void )
bool getBuffering ( void )
bool import ( string $filename )
string load ( void )
string read ( int $length )
bool rewind ( void )
bool save ( string $data [, int $offset ] )
bool seek ( int $offset [, int $whence = OCI_SEEK_SET ] )
bool setBuffering ( bool $on_off )
int size ( void )
int tell ( void )
bool truncate ([ int $length = 0 ] )
int write ( string $data [, int $length ] )
bool writeTemporary ( string $data [, int $lob_type = OCI_TEMP_CLOB ] )
}

Table of Contents

  • OCI-Lob::append — Appends data from the large object to another large object
  • OCI-Lob::close — Closes LOB descriptor
  • OCI-Lob::eof — Tests for end-of-file on a large object's descriptor
  • OCI-Lob::erase — Erases a specified portion of the internal LOB data
  • OCI-Lob::export — Exports LOB's contents to a file
  • OCI-Lob::flush — Flushes/writes buffer of the LOB to the server
  • OCI-Lob::free — Frees resources associated with the LOB descriptor
  • OCI-Lob::getBuffering — Returns current state of buffering for the large object
  • OCI-Lob::import — Imports file data to the LOB
  • OCI-Lob::load — Returns large object's contents
  • OCI-Lob::read — Reads part of the large object
  • OCI-Lob::rewind — Moves the internal pointer to the beginning of the large object
  • OCI-Lob::save — Saves data to the large object
  • OCI-Lob::saveFile — 别名 OCI-Lob::import
  • OCI-Lob::seek — Sets the internal pointer of the large object
  • OCI-Lob::setBuffering — Changes current state of buffering for the large object
  • OCI-Lob::size — Returns size of large object
  • OCI-Lob::tell — Returns the current position of internal pointer of large object
  • OCI-Lob::truncate — Truncates large object
  • OCI-Lob::write — Writes data to the large object
  • OCI-Lob::writeTemporary — Writes a temporary large object
  • OCI-Lob::writeToFile — 别名 OCI-Lob::export
OCI-Collection::trim
OCI-Lob::append
OCI8


Appends data from the large object to another large object

OCI-Lob
OCI-Lob::close
OCI-Lob
PHP Manual

OCI-Lob::append

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::append — Appends data from the large object to another large object

说明

bool OCI-Lob::append ( OCI-Lob $lob_from )

Appends data from the large object to the end of another large object.

Writing to the large object with this method will fail if buffering was previously enabled. You must disable buffering before appending. You may need to flush buffers with OCI-Lob::flush before disabling buffering.

参数

lob_from

The copied LOB.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • OCI-Lob::flush
  • OCI-Lob::setBuffering
  • OCI-Lob::getBuffering

OCI-Lob
OCI-Lob::close
OCI-Lob


Closes LOB descriptor

OCI-Lob::append
OCI-Lob::eof
OCI-Lob
PHP Manual

OCI-Lob::close

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::close — Closes LOB descriptor

说明

bool OCI-Lob::close ( void )

Closes descriptor of LOB or FILE. This function should be used only with OCI-Lob::writeTemporary.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • OCI-Lob::writeTemporary

OCI-Lob::append
OCI-Lob::eof
OCI-Lob


Tests for end-of-file on a large object's descriptor

OCI-Lob::close
OCI-Lob::erase
OCI-Lob
PHP Manual

OCI-Lob::eof

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::eof — Tests for end-of-file on a large object's descriptor

说明

bool OCI-Lob::eof ( void )

Tells whether the internal pointer of large object is at the end of LOB.

返回值

Returns TRUE if internal pointer of large object is at the end of LOB. Otherwise returns FALSE.

注释

Note:

This function will return an Oracle error if OCI-Lob::setBuffering is enabled on the LOB.

参见

  • OCI-Lob::size

OCI-Lob::close
OCI-Lob::erase
OCI-Lob


Erases a specified portion of the internal LOB data

OCI-Lob::eof
OCI-Lob::export
OCI-Lob
PHP Manual

OCI-Lob::erase

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::erase — Erases a specified portion of the internal LOB data

说明

int OCI-Lob::erase ([ int $offset [, int $length ]] )

Erases a specified portion of the internal LOB data starting at a specified offset. If called without parameters, it erases all LOB data.

For BLOBs, erasing means that the existing LOB value is overwritten with zero-bytes. For CLOBs, the existing LOB value is overwritten with spaces.

参数

offset

length

返回值

Returns the actual number of characters/bytes erased 或者在失败时返回 FALSE.

参见

  • OCI-Lob::truncate

OCI-Lob::eof
OCI-Lob::export
OCI-Lob


Exports LOB's contents to a file

OCI-Lob::erase
OCI-Lob::flush
OCI-Lob
PHP Manual

OCI-Lob::export

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::export — Exports LOB's contents to a file

说明

bool OCI-Lob::export ( string $filename [, int $start [, int $length ]] )

Exports LOB contents to a file.

参数

filename

Path to the file.

start

Indicates from where to start exporting.

length

Indicates the length of data to be exported.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • OCI-Lob::import

OCI-Lob::erase
OCI-Lob::flush
OCI-Lob


Flushes/writes buffer of the LOB to the server

OCI-Lob::export
OCI-Lob::free
OCI-Lob
PHP Manual

OCI-Lob::flush

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::flush — Flushes/writes buffer of the LOB to the server

说明

bool OCI-Lob::flush ([ int $flag ] )

OCI-Lob::flush() actually writes data to the server.

参数

flag

By default, resources are not freed, but using flag OCI_LOB_BUFFER_FREE you can do it explicitly. Be sure you know what you're doing - next read/write operation to the same part of LOB will involve a round-trip to the server and initialize new buffer resources. It is recommended to use OCI_LOB_BUFFER_FREE flag only when you are not going to work with the LOB anymore.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

Returns FALSE if buffering was not enabled or an error occurred.

参见

  • OCI-Lob::getBuffering
  • OCI-Lob::setBuffering

OCI-Lob::export
OCI-Lob::free
OCI-Lob


Frees resources associated with the LOB descriptor

OCI-Lob::flush
OCI-Lob::getBuffering
OCI-Lob
PHP Manual

OCI-Lob::free

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::free — Frees resources associated with the LOB descriptor

说明

bool OCI-Lob::free ( void )

Frees resources associated with the descriptor, previously allocated with oci_new_descriptor().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

OCI-Lob::flush
OCI-Lob::getBuffering
OCI-Lob


Returns current state of buffering for the large object

OCI-Lob::free
OCI-Lob::import
OCI-Lob
PHP Manual

OCI-Lob::getBuffering

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::getBuffering — Returns current state of buffering for the large object

说明

bool OCI-Lob::getBuffering ( void )

Tells whether the buffering for the large object is on or off.

返回值

Returns FALSE if buffering for the large object is off and TRUE if buffering is used.

参见

  • OCI-Lob::setBuffering

OCI-Lob::free
OCI-Lob::import
OCI-Lob


Imports file data to the LOB

OCI-Lob::getBuffering
OCI-Lob::load
OCI-Lob
PHP Manual

OCI-Lob::import

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::import — Imports file data to the LOB

说明

bool OCI-Lob::import ( string $filename )

Writes data from the filename in to the current position of large object.

参数

filename

Path to the file.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • OCI-Lob::export
  • OCI-Lob::write

OCI-Lob::getBuffering
OCI-Lob::load
OCI-Lob


Returns large object's contents

OCI-Lob::import
OCI-Lob::read
OCI-Lob
PHP Manual

OCI-Lob::load

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::load — Returns large object's contents

说明

string OCI-Lob::load ( void )

Returns large object's contents. As script execution is terminated when the memory_limit is reached, ensure that the LOB does not exceed this limit. In most cases it's recommended to use OCI-Lob::read instead.

返回值

Returns the contents of the object, or FALSE on errors.

参见

  • OCI-Lob::read

OCI-Lob::import
OCI-Lob::read
OCI-Lob


Reads part of the large object

OCI-Lob::load
OCI-Lob::rewind
OCI-Lob
PHP Manual

OCI-Lob::read

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::read — Reads part of the large object

说明

string OCI-Lob::read ( int $length )

Reads length bytes from the current position of LOB's internal pointer.

Reading stops when length bytes have been read or end of the large object is reached. Internal pointer of the large object will be shifted on the amount of bytes read.

参数

length

The length of data to read, in bytes. Large values will be rounded down to 1 MB.

返回值

Returns the contents as a string, 或者在失败时返回 FALSE.

参见

  • OCI-Lob::load
  • OCI-Lob::write

OCI-Lob::load
OCI-Lob::rewind
OCI-Lob


Moves the internal pointer to the beginning of the large object

OCI-Lob::read
OCI-Lob::save
OCI-Lob
PHP Manual

OCI-Lob::rewind

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::rewind — Moves the internal pointer to the beginning of the large object

说明

bool OCI-Lob::rewind ( void )

Sets the internal pointer to the beginning of the large object.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • OCI-Lob::seek
  • OCI-Lob::tell

OCI-Lob::read
OCI-Lob::save
OCI-Lob


Saves data to the large object

OCI-Lob::rewind
OCI-Lob::saveFile
OCI-Lob
PHP Manual

OCI-Lob::save

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::save — Saves data to the large object

说明

bool OCI-Lob::save ( string $data [, int $offset ] )

Saves data to the large object.

参数

data

The data to be saved.

offset

Can be used to indicate offset from the beginning of the large object.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • OCI-Lob::write
  • OCI-Lob::import

OCI-Lob::rewind
OCI-Lob::saveFile
OCI-Lob


别名 OCI-Lob::import

OCI-Lob::save
OCI-Lob::seek
OCI-Lob
PHP Manual

OCI-Lob::saveFile

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::saveFile — 别名 OCI-Lob::import()

说明

此函数是该函数的别名： OCI-Lob::import().

OCI-Lob::save
OCI-Lob::seek
OCI-Lob


Sets the internal pointer of the large object

OCI-Lob::saveFile
OCI-Lob::setBuffering
OCI-Lob
PHP Manual

OCI-Lob::seek

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::seek — Sets the internal pointer of the large object

说明

bool OCI-Lob::seek ( int $offset [, int $whence = OCI_SEEK_SET ] )

Sets the internal pointer of the large object.

参数

offset

Indicates the amount of bytes, on which internal pointer should be moved from the position, pointed by whence.

whence

May be one of:

  • OCI_SEEK_SET - sets the position equal to offset
  • OCI_SEEK_CUR - adds offset bytes to the current position
  • OCI_SEEK_END - adds offset bytes to the end of large object (use negative value to move to a position before the end of large object)

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • OCI-Lob::rewind
  • OCI-Lob::tell
  • OCI-Lob::eof

OCI-Lob::saveFile
OCI-Lob::setBuffering
OCI-Lob


Changes current state of buffering for the large object

OCI-Lob::seek
OCI-Lob::size
OCI-Lob
PHP Manual

OCI-Lob::setBuffering

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::setBuffering — Changes current state of buffering for the large object

说明

bool OCI-Lob::setBuffering ( bool $on_off )

Sets the buffering for the large object, depending on the value of the on_off parameter.

Use of this function may provide performance improvements by buffering small reads and writes of LOBs by reducing the number of network round-trips and LOB versions. OCI-Lob::flush() should be used to flush buffers, when you have finished working with the large object.

参数

on_off

TRUE for on and FALSE for off.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 Repeated calls to this method with the same flag will return TRUE.

参见

  • OCI-Lob::getBuffering

OCI-Lob::seek
OCI-Lob::size
OCI-Lob


Returns size of large object

OCI-Lob::setBuffering
OCI-Lob::tell
OCI-Lob
PHP Manual

OCI-Lob::size

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::size — Returns size of large object

说明

int OCI-Lob::size ( void )

Gets the size of the large object.

返回值

Returns length of large object value 或者在失败时返回 FALSE. Empty objects have zero length.

OCI-Lob::setBuffering
OCI-Lob::tell
OCI-Lob


Returns the current position of internal pointer of large object

OCI-Lob::size
OCI-Lob::truncate
OCI-Lob
PHP Manual

OCI-Lob::tell

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::tell — Returns the current position of internal pointer of large object

说明

int OCI-Lob::tell ( void )

Gets the current position of a LOB's internal pointer.

返回值

Returns current position of a LOB's internal pointer or FALSE if an error occurred.

参见

  • OCI-Lob::rewind
  • OCI-Lob::size
  • OCI-Lob::eof

OCI-Lob::size
OCI-Lob::truncate
OCI-Lob


Truncates large object

OCI-Lob::tell
OCI-Lob::write
OCI-Lob
PHP Manual

OCI-Lob::truncate

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::truncate — Truncates large object

说明

bool OCI-Lob::truncate ([ int $length = 0 ] )

Truncates the LOB.

参数

length

If provided, this method will truncate the LOB to length bytes. Otherwise, it will completely purge the LOB.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • OCI-Lob::erase

OCI-Lob::tell
OCI-Lob::write
OCI-Lob


Writes data to the large object

OCI-Lob::truncate
OCI-Lob::writeTemporary
OCI-Lob
PHP Manual

OCI-Lob::write

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::write — Writes data to the large object

说明

int OCI-Lob::write ( string $data [, int $length ] )

Writes data from the parameter data into the current position of LOB's internal pointer.

参数

data

The data to write in the LOB.

length

If this parameter is given, writing will stop after length bytes have been written or the end of data is reached, whichever comes first.

返回值

Returns the number of bytes written 或者在失败时返回 FALSE.

参见

  • OCI-Lob::read

OCI-Lob::truncate
OCI-Lob::writeTemporary
OCI-Lob


Writes a temporary large object

OCI-Lob::write
OCI-Lob::writeToFile
OCI-Lob
PHP Manual

OCI-Lob::writeTemporary

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::writeTemporary — Writes a temporary large object

说明

bool OCI-Lob::writeTemporary ( string $data [, int $lob_type = OCI_TEMP_CLOB ] )

Creates a temporary large object and writes data to it.

You should use OCI-Lob::close when you are done with this object.

参数

data

The data to write.

lob_type

Can be one of the following:

  • OCI_TEMP_BLOB is used to create temporary BLOBs
  • OCI_TEMP_CLOB is used to create temporary CLOBs

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • OCI-Lob::close

OCI-Lob::write
OCI-Lob::writeToFile
OCI-Lob


别名 OCI-Lob::export

OCI-Lob::writeTemporary
OCI8 Obsolete Aliases and Functions
OCI-Lob
PHP Manual

OCI-Lob::writeToFile

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

OCI-Lob::writeToFile — 别名 OCI-Lob::export()

说明

此函数是该函数的别名： OCI-Lob::export().

OCI-Lob::writeTemporary
OCI8 Obsolete Aliases and Functions
OCI-Lob


OCI8 Obsolete Aliases and Functions

Table of Contents

  • ocibindbyname — 别名 oci_bind_by_name
  • ocicancel — 别名 oci_cancel
  • ocicloselob — 别名 OCI-Lob::close
  • ocicollappend — 别名 OCI-Collection::append
  • ocicollassign — 别名 OCI-Collection::assign
  • ocicollassignelem — 别名 OCI-Collection::assignElem
  • ocicollgetelem — 别名 OCI-Collection::getElem
  • ocicollmax — 别名 OCI-Collection::max
  • ocicollsize — 别名 OCI-Collection::size
  • ocicolltrim — 别名 OCI-Collection::trim
  • ocicolumnisnull — 别名 oci_field_is_null
  • ocicolumnname — 别名 oci_field_name
  • ocicolumnprecision — 别名 oci_field_precision
  • ocicolumnscale — 别名 oci_field_scale
  • ocicolumnsize — 别名 oci_field_size
  • ocicolumntype — 别名 oci_field_type
  • ocicolumntyperaw — 别名 oci_field_type_raw
  • ocicommit — 别名 oci_commit
  • ocidefinebyname — 别名 oci_define_by_name
  • ocierror — 别名 oci_error
  • ociexecute — 别名 oci_execute
  • ocifetch — 别名 oci_fetch
  • ocifetchinto — Obsolete variant of oci_fetch_array, oci_fetch_object, oci_fetch_assoc and oci_fetch_row
  • ocifetchstatement — 别名 oci_fetch_all
  • ocifreecollection — 别名 OCI-Collection::free
  • ocifreecursor — 别名 oci_free_statement
  • ocifreedesc — 别名 OCI-Lob::free
  • ocifreestatement — 别名 oci_free_statement
  • ociinternaldebug — 别名 oci_internal_debug
  • ociloadlob — 别名 OCI-Lob::load
  • ocilogoff — 别名 oci_close
  • ocilogon — 别名 oci_connect
  • ocinewcollection — 别名 oci_new_collection
  • ocinewcursor — 别名 oci_new_cursor
  • ocinewdescriptor — 别名 oci_new_descriptor
  • ocinlogon — 别名 oci_new_connect
  • ocinumcols — 别名 oci_num_fields
  • ociparse — 别名 oci_parse
  • ociplogon — 别名 oci_pconnect
  • ociresult — 别名 oci_result
  • ocirollback — 别名 oci_rollback
  • ocirowcount — 别名 oci_num_rows
  • ocisavelob — 别名 OCI-Lob::save
  • ocisavelobfile — 别名 OCI-Lob::import
  • ociserverversion — 别名 oci_server_version
  • ocisetprefetch — 别名 oci_set_prefetch
  • ocistatementtype — 别名 oci_statement_type
  • ociwritelobtofile — 别名 OCI-Lob::export
  • ociwritetemporarylob — 别名 OCI-Lob::writeTemporary
OCI-Lob::writeToFile
ocibindbyname
OCI8


别名 oci_bind_by_name

OCI8 Obsolete Aliases and Functions
ocicancel
OCI8 Obsolete Aliases and Functions
PHP Manual

ocibindbyname

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocibindbyname — 别名 oci_bind_by_name()

说明

别名 oci_bind_by_name()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

OCI8 Obsolete Aliases and Functions
ocicancel
OCI8 Obsolete Aliases and Functions


别名 oci_cancel

ocibindbyname
ocicloselob
OCI8 Obsolete Aliases and Functions
PHP Manual

ocicancel

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocicancel — 别名 oci_cancel()

说明

别名 oci_cancel()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocibindbyname
ocicloselob
OCI8 Obsolete Aliases and Functions


别名 OCI-Lob::close

ocicancel
ocicollappend
OCI8 Obsolete Aliases and Functions
PHP Manual

ocicloselob

(PHP 4 >= 4.0.6, PECL OCI8 1.0)

ocicloselob — 别名 OCI-Lob::close()

说明

别名 OCI-Lob::close()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocicancel
ocicollappend
OCI8 Obsolete Aliases and Functions


别名 OCI-Collection::append

ocicloselob
ocicollassign
OCI8 Obsolete Aliases and Functions
PHP Manual

ocicollappend

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocicollappend — 别名 OCI-Collection::append()

说明

别名 OCI-Collection::append()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocicloselob
ocicollassign
OCI8 Obsolete Aliases and Functions


别名 OCI-Collection::assign

ocicollappend
ocicollassignelem
OCI8 Obsolete Aliases and Functions
PHP Manual

ocicollassign

(PHP 4 >= 4.0.6, PECL OCI8 1.0)

ocicollassign — 别名 OCI-Collection::assign()

说明

别名 OCI-Collection::assign()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocicollappend
ocicollassignelem
OCI8 Obsolete Aliases and Functions


别名 OCI-Collection::assignElem

ocicollassign
ocicollgetelem
OCI8 Obsolete Aliases and Functions
PHP Manual

ocicollassignelem

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocicollassignelem — 别名 OCI-Collection::assignElem()

说明

别名 OCI-Collection::assignElem()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocicollassign
ocicollgetelem
OCI8 Obsolete Aliases and Functions


别名 OCI-Collection::getElem

ocicollassignelem
ocicollmax
OCI8 Obsolete Aliases and Functions
PHP Manual

ocicollgetelem

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocicollgetelem — 别名 OCI-Collection::getElem()

说明

别名 OCI-Collection::getElem()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocicollassignelem
ocicollmax
OCI8 Obsolete Aliases and Functions


别名 OCI-Collection::max

ocicollgetelem
ocicollsize
OCI8 Obsolete Aliases and Functions
PHP Manual

ocicollmax

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocicollmax — 别名 OCI-Collection::max()

说明

别名 OCI-Collection::max()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocicollgetelem
ocicollsize
OCI8 Obsolete Aliases and Functions


别名 OCI-Collection::size

ocicollmax
ocicolltrim
OCI8 Obsolete Aliases and Functions
PHP Manual

ocicollsize

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocicollsize — 别名 OCI-Collection::size()

说明

别名 OCI-Collection::size()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocicollmax
ocicolltrim
OCI8 Obsolete Aliases and Functions


别名 OCI-Collection::trim

ocicollsize
ocicolumnisnull
OCI8 Obsolete Aliases and Functions
PHP Manual

ocicolltrim

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocicolltrim — 别名 OCI-Collection::trim()

说明

别名 OCI-Collection::trim()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocicollsize
ocicolumnisnull
OCI8 Obsolete Aliases and Functions


别名 oci_field_is_null

ocicolltrim
ocicolumnname
OCI8 Obsolete Aliases and Functions
PHP Manual

ocicolumnisnull

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocicolumnisnull — 别名 oci_field_is_null()

说明

别名 oci_field_is_null()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocicolltrim
ocicolumnname
OCI8 Obsolete Aliases and Functions


别名 oci_field_name

ocicolumnisnull
ocicolumnprecision
OCI8 Obsolete Aliases and Functions
PHP Manual

ocicolumnname

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocicolumnname — 别名 oci_field_name()

说明

别名 oci_field_name()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocicolumnisnull
ocicolumnprecision
OCI8 Obsolete Aliases and Functions


别名 oci_field_precision

ocicolumnname
ocicolumnscale
OCI8 Obsolete Aliases and Functions
PHP Manual

ocicolumnprecision

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocicolumnprecision — 别名 oci_field_precision()

说明

别名 oci_field_precision()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocicolumnname
ocicolumnscale
OCI8 Obsolete Aliases and Functions


别名 oci_field_scale

ocicolumnprecision
ocicolumnsize
OCI8 Obsolete Aliases and Functions
PHP Manual

ocicolumnscale

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocicolumnscale — 别名 oci_field_scale()

说明

别名 oci_field_scale()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocicolumnprecision
ocicolumnsize
OCI8 Obsolete Aliases and Functions


别名 oci_field_size

ocicolumnscale
ocicolumntype
OCI8 Obsolete Aliases and Functions
PHP Manual

ocicolumnsize

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocicolumnsize — 别名 oci_field_size()

说明

别名 oci_field_size()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocicolumnscale
ocicolumntype
OCI8 Obsolete Aliases and Functions


别名 oci_field_type

ocicolumnsize
ocicolumntyperaw
OCI8 Obsolete Aliases and Functions
PHP Manual

ocicolumntype

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocicolumntype — 别名 oci_field_type()

说明

别名 oci_field_type()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocicolumnsize
ocicolumntyperaw
OCI8 Obsolete Aliases and Functions


别名 oci_field_type_raw

ocicolumntype
ocicommit
OCI8 Obsolete Aliases and Functions
PHP Manual

ocicolumntyperaw

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocicolumntyperaw — 别名 oci_field_type_raw()

说明

别名 oci_field_type_raw()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocicolumntype
ocicommit
OCI8 Obsolete Aliases and Functions


别名 oci_commit

ocicolumntyperaw
ocidefinebyname
OCI8 Obsolete Aliases and Functions
PHP Manual

ocicommit

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocicommit — 别名 oci_commit()

说明

别名 oci_commit()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocicolumntyperaw
ocidefinebyname
OCI8 Obsolete Aliases and Functions


别名 oci_define_by_name

ocicommit
ocierror
OCI8 Obsolete Aliases and Functions
PHP Manual

ocidefinebyname

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocidefinebyname — 别名 oci_define_by_name()

说明

别名 oci_define_by_name()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocicommit
ocierror
OCI8 Obsolete Aliases and Functions


别名 oci_error

ocidefinebyname
ociexecute
OCI8 Obsolete Aliases and Functions
PHP Manual

ocierror

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocierror — 别名 oci_error()

说明

别名 oci_error()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocidefinebyname
ociexecute
OCI8 Obsolete Aliases and Functions


别名 oci_execute

ocierror
ocifetch
OCI8 Obsolete Aliases and Functions
PHP Manual

ociexecute

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ociexecute — 别名 oci_execute()

说明

别名 oci_execute()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocierror
ocifetch
OCI8 Obsolete Aliases and Functions


别名 oci_fetch

ociexecute
ocifetchinto
OCI8 Obsolete Aliases and Functions
PHP Manual

ocifetch

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocifetch — 别名 oci_fetch()

说明

别名 oci_fetch()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ociexecute
ocifetchinto
OCI8 Obsolete Aliases and Functions


Obsolete variant of oci_fetch_array, oci_fetch_object, oci_fetch_assoc and oci_fetch_row

ocifetch
ocifetchstatement
OCI8 Obsolete Aliases and Functions
PHP Manual

ocifetchinto

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocifetchinto — Obsolete variant of oci_fetch_array(), oci_fetch_object(), oci_fetch_assoc() and oci_fetch_row()

说明

Obsolete variant of oci_fetch_array(), oci_fetch_object(),
  oci_fetch_assoc() and
  oci_fetch_row()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocifetch
ocifetchstatement
OCI8 Obsolete Aliases and Functions


别名 oci_fetch_all

ocifetchinto
ocifreecollection
OCI8 Obsolete Aliases and Functions
PHP Manual

ocifetchstatement

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocifetchstatement — 别名 oci_fetch_all()

说明

别名 oci_fetch_all()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocifetchinto
ocifreecollection
OCI8 Obsolete Aliases and Functions


别名 OCI-Collection::free

ocifetchstatement
ocifreecursor
OCI8 Obsolete Aliases and Functions
PHP Manual

ocifreecollection

(PHP 4 >= 4.0.7, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocifreecollection — 别名 OCI-Collection::free()

说明

别名 OCI-Collection::free()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocifetchstatement
ocifreecursor
OCI8 Obsolete Aliases and Functions


别名 oci_free_statement

ocifreecollection
ocifreedesc
OCI8 Obsolete Aliases and Functions
PHP Manual

ocifreecursor

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocifreecursor — 别名 oci_free_statement()

说明

别名 oci_free_statement()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocifreecollection
ocifreedesc
OCI8 Obsolete Aliases and Functions


别名 OCI-Lob::free

ocifreecursor
ocifreestatement
OCI8 Obsolete Aliases and Functions
PHP Manual

ocifreedesc

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocifreedesc — 别名 OCI-Lob::free()

说明

别名 OCI-Lob::free()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocifreecursor
ocifreestatement
OCI8 Obsolete Aliases and Functions


别名 oci_free_statement

ocifreedesc
ociinternaldebug
OCI8 Obsolete Aliases and Functions
PHP Manual

ocifreestatement

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocifreestatement — 别名 oci_free_statement()

说明

别名 oci_free_statement()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocifreedesc
ociinternaldebug
OCI8 Obsolete Aliases and Functions


别名 oci_internal_debug

ocifreestatement
ociloadlob
OCI8 Obsolete Aliases and Functions
PHP Manual

ociinternaldebug

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ociinternaldebug — 别名 oci_internal_debug()

说明

别名 oci_internal_debug()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocifreestatement
ociloadlob
OCI8 Obsolete Aliases and Functions


别名 OCI-Lob::load

ociinternaldebug
ocilogoff
OCI8 Obsolete Aliases and Functions
PHP Manual

ociloadlob

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ociloadlob — 别名 OCI-Lob::load()

说明

别名 OCI-Lob::load()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ociinternaldebug
ocilogoff
OCI8 Obsolete Aliases and Functions


别名 oci_close

ociloadlob
ocilogon
OCI8 Obsolete Aliases and Functions
PHP Manual

ocilogoff

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocilogoff — 别名 oci_close()

说明

别名 oci_close()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ociloadlob
ocilogon
OCI8 Obsolete Aliases and Functions


别名 oci_connect

ocilogoff
ocinewcollection
OCI8 Obsolete Aliases and Functions
PHP Manual

ocilogon

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocilogon — 别名 oci_connect()

说明

别名 oci_connect()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocilogoff
ocinewcollection
OCI8 Obsolete Aliases and Functions


别名 oci_new_collection

ocilogon
ocinewcursor
OCI8 Obsolete Aliases and Functions
PHP Manual

ocinewcollection

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocinewcollection — 别名 oci_new_collection()

说明

别名 oci_new_collection()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocilogon
ocinewcursor
OCI8 Obsolete Aliases and Functions


别名 oci_new_cursor

ocinewcollection
ocinewdescriptor
OCI8 Obsolete Aliases and Functions
PHP Manual

ocinewcursor

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocinewcursor — 别名 oci_new_cursor()

说明

别名 oci_new_cursor()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocinewcollection
ocinewdescriptor
OCI8 Obsolete Aliases and Functions


别名 oci_new_descriptor

ocinewcursor
ocinlogon
OCI8 Obsolete Aliases and Functions
PHP Manual

ocinewdescriptor

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocinewdescriptor — 别名 oci_new_descriptor()

说明

别名 oci_new_descriptor()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocinewcursor
ocinlogon
OCI8 Obsolete Aliases and Functions


别名 oci_new_connect

ocinewdescriptor
ocinumcols
OCI8 Obsolete Aliases and Functions
PHP Manual

ocinlogon

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocinlogon — 别名 oci_new_connect()

说明

别名 oci_new_connect()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocinewdescriptor
ocinumcols
OCI8 Obsolete Aliases and Functions


别名 oci_num_fields

ocinlogon
ociparse
OCI8 Obsolete Aliases and Functions
PHP Manual

ocinumcols

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocinumcols — 别名 oci_num_fields()

说明

别名 oci_num_fields()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocinlogon
ociparse
OCI8 Obsolete Aliases and Functions


别名 oci_parse

ocinumcols
ociplogon
OCI8 Obsolete Aliases and Functions
PHP Manual

ociparse

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ociparse — 别名 oci_parse()

说明

别名 oci_parse()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocinumcols
ociplogon
OCI8 Obsolete Aliases and Functions


别名 oci_pconnect

ociparse
ociresult
OCI8 Obsolete Aliases and Functions
PHP Manual

ociplogon

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ociplogon — 别名 oci_pconnect()

说明

别名 oci_pconnect()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ociparse
ociresult
OCI8 Obsolete Aliases and Functions


别名 oci_result

ociplogon
ocirollback
OCI8 Obsolete Aliases and Functions
PHP Manual

ociresult

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ociresult — 别名 oci_result()

说明

别名 oci_result()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ociplogon
ocirollback
OCI8 Obsolete Aliases and Functions


别名 oci_rollback

ociresult
ocirowcount
OCI8 Obsolete Aliases and Functions
PHP Manual

ocirollback

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocirollback — 别名 oci_rollback()

说明

别名 oci_rollback()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ociresult
ocirowcount
OCI8 Obsolete Aliases and Functions


别名 oci_num_rows

ocirollback
ocisavelob
OCI8 Obsolete Aliases and Functions
PHP Manual

ocirowcount

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocirowcount — 别名 oci_num_rows()

说明

别名 oci_num_rows()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocirollback
ocisavelob
OCI8 Obsolete Aliases and Functions


别名 OCI-Lob::save

ocirowcount
ocisavelobfile
OCI8 Obsolete Aliases and Functions
PHP Manual

ocisavelob

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocisavelob — 别名 OCI-Lob::save()

说明

别名 OCI-Lob::save()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocirowcount
ocisavelobfile
OCI8 Obsolete Aliases and Functions


别名 OCI-Lob::import

ocisavelob
ociserverversion
OCI8 Obsolete Aliases and Functions
PHP Manual

ocisavelobfile

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocisavelobfile — 别名 OCI-Lob::import()

说明

别名 OCI-Lob::import()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocisavelob
ociserverversion
OCI8 Obsolete Aliases and Functions


别名 oci_server_version

ocisavelobfile
ocisetprefetch
OCI8 Obsolete Aliases and Functions
PHP Manual

ociserverversion

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ociserverversion — 别名 oci_server_version()

说明

别名 oci_server_version()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocisavelobfile
ocisetprefetch
OCI8 Obsolete Aliases and Functions


别名 oci_set_prefetch

ociserverversion
ocistatementtype
OCI8 Obsolete Aliases and Functions
PHP Manual

ocisetprefetch

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocisetprefetch — 别名 oci_set_prefetch()

说明

别名 oci_set_prefetch()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ociserverversion
ocistatementtype
OCI8 Obsolete Aliases and Functions


别名 oci_statement_type

ocisetprefetch
ociwritelobtofile
OCI8 Obsolete Aliases and Functions
PHP Manual

ocistatementtype

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ocistatementtype — 别名 oci_statement_type()

说明

别名 oci_statement_type()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocisetprefetch
ociwritelobtofile
OCI8 Obsolete Aliases and Functions


别名 OCI-Lob::export

ocistatementtype
ociwritetemporarylob
OCI8 Obsolete Aliases and Functions
PHP Manual

ociwritelobtofile

(PHP 4, PHP 5, PHP 7, PECL OCI8 >= 1.0.0)

ociwritelobtofile — 别名 OCI-Lob::export()

说明

别名 OCI-Lob::export()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ocistatementtype
ociwritetemporarylob
OCI8 Obsolete Aliases and Functions


别名 OCI-Lob::writeTemporary

ociwritelobtofile
Paradox
OCI8 Obsolete Aliases and Functions
PHP Manual

ociwritetemporarylob

(PHP 4 >= 4.0.6, PECL OCI8 1.0)

ociwritetemporarylob — 别名 OCI-Lob::writeTemporary()

说明

别名 OCI-Lob::writeTemporary()

Warning

自 PHP 5.4.0 起，已经废弃此别名。强烈建议不要应用此别名 。

ociwritelobtofile
Paradox
OCI8 Obsolete Aliases and Functions


Paradox File Access

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Paradox 函数
    • px_close — Closes a paradox database
    • px_create_fp — Create a new paradox database
    • px_date2string — Converts a date into a string.
    • px_delete_record — Deletes record from paradox database
    • px_delete — Deletes resource of paradox database
    • px_get_field — Returns the specification of a single field
    • px_get_info — Return lots of information about a paradox file
    • px_get_parameter — Gets a parameter
    • px_get_record — Returns record of paradox database
    • px_get_schema — Returns the database schema
    • px_get_value — Gets a value
    • px_insert_record — Inserts record into paradox database
    • px_new — Create a new paradox object
    • px_numfields — Returns number of fields in a database
    • px_numrecords — Returns number of records in a database
    • px_open_fp — Open paradox database
    • px_put_record — Stores record into paradox database
    • px_retrieve_record — Returns record of paradox database
    • px_set_blob_file — Sets the file where blobs are read from
    • px_set_parameter — Sets a parameter
    • px_set_tablename — Sets the name of a table (deprecated)
    • px_set_targetencoding — Sets the encoding for character fields (deprecated)
    • px_set_value — Sets a value
    • px_timestamp2string — Converts the timestamp into a string.
    • px_update_record — Updates record in paradox database
ociwritetemporarylob
简介
针对各数据库系统对应的扩展


简介

This module allows to read and write Paradox databases, primary index files and blob files. Write support has been proven to be quite reliable, though due to lack of documentation the produced files may not in any case be readable by other applications. Encrypted databases can be read without specifying a password if pxlib >= 0.5.0 is used.

Note:

This module is also in development and may change, though major changes to the API are not expected.

Warning

此扩展是实验性 的。 此扩展的表象，包括其函数名称以及其他此扩展的相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本扩展风险自担 。

Paradox
安装／配置
Paradox


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Paradox


需求

You need at least PHP 5.0.0 and pxlib >= 0.4.4 for the basic set of functions. Some newer functions are only available with pxlib >= 0.6.0. Reading and writing of encrypted databases requires at least pxlib >= 0.5.0. The paradox library (pxlib) is available at » http://pxlib.sourceforge.net.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/paradox

Make sure you have pxlib installed before. If you install pxlib from an rpm or debian package, do not forget to install the development package as well.

需求
运行时配置
安装／配置


资源类型

px_new() creates a new Paradox object required by all Paradox functions.

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

The following two tables lists all constants defined by the paradox extension.

Contants for field types
Name | Meaning
PX_FIELD_ALPHA | Character data with fixed length
PX_FIELD_DATE | Date, number of days since 1.1.0000
PX_FIELD_SHORT | Short integer (2 Bytes)
PX_FIELD_LONG | Long integer (4 Bytes)
PX_FIELD_CURRENCY | same as PX_FIELD_NUMBER
PX_FIELD_NUMBER | Double
PX_FIELD_LOGICAL | Boolean
PX_FIELD_MEMOBLOB | Binary large object
PX_FIELD_BLOB | Binary large object (not supported)
PX_FIELD_FMTMEMOBLOB | Binary large object
PX_FIELD_OLE | OLE object (basically a blob, not supported)
PX_FIELD_GRAPHIC | Graphic (basically a blob, not supported)
PX_FIELD_TIME | time, number of milli seconds since midnight
PX_FIELD_TIMESTAMP | timestamp, number of milli seconds since 1.1.0000
PX_FIELD_AUTOINC | Auto incrementing interger (like PX_FIELD_LONG)
PX_FIELD_BCD | Decimal number stored in bcd format (not supported)
PX_FIELD_BYTES | Array of Bytes with not more than 255 bytes (not supported)
PX_KEYTOLOWER | Turn all field names into lower case
PX_KEYTOUPPER | Turn all field names into upper case
Contants for file types
Name | Meaning
PX_FILE_INDEX_DB | Indexed database
PX_FILE_PRIM_INDEX | Primary index
PX_FILE_NON_INDEX_DB | None indexed database
PX_FILE_NON_INC_SEC_INDEX | None incremental secondary index
PX_FILE_SEC_INDEX | Secondary index
PX_FILE_INC_SEC_INDEX | Incremental secondary index
PX_FILE_NON_INC_SEC_INDEX_G | Non incremental secondary index
PX_FILE_SEC_INDEX_G | Secondary index
PX_FILE_INC_SEC_INDEX_G | Non incremental secondary index

资源类型
Paradox 函数
Paradox


Paradox 函数

Object oriented API

The paradox extension provides also an object oriented API. It consists of only one class called paradox_db. Its methods only differ from the functions in its name and of course the missing first parameter. The following table will list all methods and its equivalent functions.

Methods of class paradox_db
Name of method | Equivalent function
Constructor | px_new()
Destructor | px_delete()
open_fp() | px_open_fp()
create_fp() | px_create_fp()
close() | px_close()
numrecords() | px_numrecords()
numfields() | px_numfields()
get_record() | px_get_record()
put_record() | px_put_record()
retrieve_record() | px_retrieve_record()
delete_record() | px_delete_record()
insert_record() | px_insert_record()
update_record() | px_update_record()
get_field() | px_get_field()
get_schema() | px_get_schema()
get_info() | px_get_info()
set_parameter() | px_set_parameter()
get_parameter() | px_get_parameter()
set_value() | px_set_value()
get_value() | px_get_value()
get_info() | px_get_info()
set_targetencoding() | px_set_targetencoding()
set_tablename() | px_set_tablename()
set_blob_file() | px_set_blob_file()
date2string() | px_date2string()
timestamp2string() | px_timestamp2string()

Table of Contents

  • px_close — Closes a paradox database
  • px_create_fp — Create a new paradox database
  • px_date2string — Converts a date into a string.
  • px_delete_record — Deletes record from paradox database
  • px_delete — Deletes resource of paradox database
  • px_get_field — Returns the specification of a single field
  • px_get_info — Return lots of information about a paradox file
  • px_get_parameter — Gets a parameter
  • px_get_record — Returns record of paradox database
  • px_get_schema — Returns the database schema
  • px_get_value — Gets a value
  • px_insert_record — Inserts record into paradox database
  • px_new — Create a new paradox object
  • px_numfields — Returns number of fields in a database
  • px_numrecords — Returns number of records in a database
  • px_open_fp — Open paradox database
  • px_put_record — Stores record into paradox database
  • px_retrieve_record — Returns record of paradox database
  • px_set_blob_file — Sets the file where blobs are read from
  • px_set_parameter — Sets a parameter
  • px_set_tablename — Sets the name of a table (deprecated)
  • px_set_targetencoding — Sets the encoding for character fields (deprecated)
  • px_set_value — Sets a value
  • px_timestamp2string — Converts the timestamp into a string.
  • px_update_record — Updates record in paradox database
预定义常量
px_close
Paradox


Closes a paradox database

Paradox 函数
px_create_fp
Paradox 函数
PHP Manual

px_close

(PECL paradox >= 1.0.0)

px_close — Closes a paradox database

说明

bool px_close ( resource $pxdoc )

Closes the paradox database. This function will not close the file. You will have to call fclose() afterwards.

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • px_open_fp() - Open paradox database
  • The example at px_new() - Create a new paradox object

Paradox 函数
px_create_fp
Paradox 函数


Create a new paradox database

px_close
px_date2string
Paradox 函数
PHP Manual

px_create_fp

(PECL paradox >= 1.0.0)

px_create_fp — Create a new paradox database

说明

bool px_create_fp ( resource $pxdoc , resource $file , array $fielddesc )

Create a new paradox database file. The actual file has to be opened before with fopen(). Make sure the file is writable.

Note:

Calling this functions issues a warning about an empty tablename which can be safely ignored. Just set the tablename afterwards with px_set_parameter().

Note:

This function is highly experimental, due to insufficient documentation of the paradox file format. Database files created with this function can be opened by px_open_fp() and has been successfully opened by the Paradox software, but your milage may vary.

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

file

File handle as returned by fopen().

fielddesc

fielddesc is an array containing one element for each field specification. A field specification is an array itself with either two or three elements.The first element is always a string value used as the name of the field. It may not be larger than ten characters. The second element contains the field type which is one of the constants listed in the table Constants for field types. In the case of a character field or bcd field, you will have to provide a third element specifying the length respectively the precesion of the field. If your field specification contains blob fields, you will have to make sure to either make the field large enough for all field values to fit or specify a blob file with px_set_blob_file() for storing the blobs. If this is not done the field data is truncated.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Creating a Paradox database with two fields

<?php
if(!$pxdoc = px_new()) {
  /* Error handling */
}
$fp = fopen("test.db", "w+");
$fields = array(array("col1", "S"), array("col2", "I"));
if(!px_create_fp($pxdoc, $fp, $fields)) {
  /* Error handling */
}
px_set_parameter($pxdoc, "tablename", "testtable");
for($i=-50; $i<50; $i++) {
  $rec = array($i, -$i);
  px_put_record($pxdoc, $rec);
}
px_close($pxdoc);
px_delete($pxdoc);
fclose($fp);
?>

参见

  • px_new() - Create a new paradox object
  • px_put_record() - Stores record into paradox database
  • fopen() - 打开文件或者 URL

px_close
px_date2string
Paradox 函数


Converts a date into a string.

px_create_fp
px_delete_record
Paradox 函数
PHP Manual

px_date2string

(PECL paradox >= 1.4.0)

px_date2string — Converts a date into a string.

说明

string px_date2string ( resource $pxdoc , int $value , string $format )

Turns a date as it stored in the paradox file into human readable format. Paradox dates are the number of days since 1.1.0000. This function is just for convenience. It can be easily replaced by some math and the calendar functions as demonstrated in the example below.

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

value

Value as stored in paradox database field of type PX_FIELD_DATE.

format

String format similar to the format used by date(). The placeholders support by this function is a subset of those supported by date() (Y, y, m, n, d, j, L).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Turn a paradox date into a human readable form

<?php
$px = px_new();

/* make up a date as it could be stored in */
/* a date field of a paradox db. */
/* 700000 days since 1.1.0000. */
$days = 700000;

/* Use the calendar functions to print a */
/* human readable format of the date */
echo jdtogregorian($days+1721425)."\n";
/* px_date2string() outputs the same */
echo px_date2string($px, $days, "n/d/Y")."\n";

px_delete($px);
?>

以上例程会输出：

7/15/1917
7/15/1917

参见

  • px_timestamp2string() - Converts the timestamp into a string.
  • jdtogregorian() - 转变一个Julian Day计数为Gregorian历法日期

px_create_fp
px_delete_record
Paradox 函数


Deletes record from paradox database

px_date2string
px_delete
Paradox 函数
PHP Manual

px_delete_record

(PECL paradox >= 1.4.0)

px_delete_record — Deletes record from paradox database

说明

bool px_delete_record ( resource $pxdoc , int $num )

This function deletes a record from the database. It does not free the space in the database file but just marks it as deleted. Inserting a new record afterwards will reuse the space.

Note:

This function is only available if pxlib >= 0.6.0 is used.

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

num

The record number is an artificial number counting records in the order as they are stored in the database. The first record has number 0.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

px_date2string
px_delete
Paradox 函数


Deletes resource of paradox database

px_delete_record
px_get_field
Paradox 函数
PHP Manual

px_delete

(PECL paradox >= 1.0.0)

px_delete — Deletes resource of paradox database

说明

bool px_delete ( resource $pxdoc )

Deletes the resource of the paradox file and frees all memory.

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

px_delete_record
px_get_field
Paradox 函数


Returns the specification of a single field

px_delete
px_get_info
Paradox 函数
PHP Manual

px_get_field

(PECL paradox >= 1.0.0)

px_get_field — Returns the specification of a single field

说明

array px_get_field ( resource $pxdoc , int $fieldno )

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

fieldno

Number of the field. The first field has number 0. Specifying a field number less than 0 and greater or equal the number of fields will trigger an error.

返回值

Returns the specification of the fieldno 'th database field as an associated array. The array contains three fields named name, type, and size.

px_delete
px_get_info
Paradox 函数


Return lots of information about a paradox file

px_get_field
px_get_parameter
Paradox 函数
PHP Manual

px_get_info

(PECL paradox >= 1.0.0)

px_get_info — Return lots of information about a paradox file

说明

array px_get_info ( resource $pxdoc )

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

返回值

Returns an associated array with lots of information about a paradox file. This array is likely to be extended in the future.

fileversion

Version of file multiplied by 10, e.g. 70.

tablename

Name of table as stored in the file. If the database was created by pxlib, then this will be the name of the file without the extension.

numrecords

Number of records in this table.

numfields

Number of fields in this table.

headersize

Number of bytes used for the header. This is usually 0x800.

recordsize

Number of bytes used for each record. This is the sum of all field sizes (available since version 1.4.2).

maxtablesize

This value multiplied by 0x400 is the size of a data block in bytes. The maximum number of records in a datablock is the integer part of (maxtablesize * 0x400 - 8) / recordsize.

numdatablocks

The number of data blocks in the file. Each data block contains a certain number of records which depends on the record size and the data block size (maxtablesize). Data blocks may not necessarily be completely filled.

numindexfields

Number of fields used for the primary index. The fields do always start with field number 1.

codepage

The DOS codepage which was used for encoding fields with character data. If the target encoding is not set with px_set_targetencoding() this will be the encoding for character fields when records are being accessed with px_get_record() or px_retrieve_record().

参见

  • px_numfields() - Returns number of fields in a database
  • px_numrecords() - Returns number of records in a database

px_get_field
px_get_parameter
Paradox 函数


Gets a parameter

px_get_info
px_get_record
Paradox 函数
PHP Manual

px_get_parameter

(PECL paradox >= 1.1.0)

px_get_parameter — Gets a parameter

说明

string px_get_parameter ( resource $pxdoc , string $name )

Gets various parameters.

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

name

The name can be one of the following:

tablename

The name of the table as it will be stored in the database header.

targetencoding

The encoding for the output. Data which is being read from character fields with px_get_record() or px_retrieve_record() is recoded into the targetencoding. If it is not set, then the data will be delivered as stored in the database file.

inputencoding

The encoding of the input data which is to be stored into the database. When storing data of character fields in the database, the data is expected to be delivered in this encoding.

返回值

Returns the value of the parameter 或者在失败时返回 FALSE.

px_get_info
px_get_record
Paradox 函数


Returns record of paradox database

px_get_parameter
px_get_schema
Paradox 函数
PHP Manual

px_get_record

(PECL paradox >= 1.0.0)

px_get_record — Returns record of paradox database

说明

array px_get_record ( resource $pxdoc , int $num [, int $mode = 0 ] )

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

num

The record number is an artificial number counting records in the order as they are stored in the database. The first record has number 0.

mode

The optional mode can be PX_KEYTOLOWER or PX_KEYTOUPPER in order to convert the keys of the returned array into lower or upper case. If mode is not passed or is 0, then the key will be exactly like the field name. The element values will contain the field values. NULL values will be retained and are different from 0.0, 0 or the empty string. Fields of type PX_FIELD_TIME will be returned as an integer counting the number of milliseconds starting at midnight. A timestamp (PX_FIELD_TIMESTAMP) and date (PX_FIELD_DATE) are floating point respectively int values counting milliseconds respectively days starting at the beginning of julian calendar. Use the functions px-timestamp2string() and px-date2string() to convert them into a character representation.

返回值

Returns the num'th record from the paradox database. The record is returned as an associated array with its keys being the field names.

参见

  • px_retrieve_record() - Returns record of paradox database

px_get_parameter
px_get_schema
Paradox 函数


Returns the database schema

px_get_record
px_get_value
Paradox 函数
PHP Manual

px_get_schema

(PECL paradox >= 1.0.0)

px_get_schema — Returns the database schema

说明

array px_get_schema ( resource $pxdoc [, int $mode = 0 ] )

px_get_schema() returns the database schema.

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

mode

If the optional mode is PX_KEYTOLOWER or PX_KEYTOUPPER the keys of the returned array will be converted to lower or upper case. If mode is 0 or not passed at all, then the key name will be identical to the field name.

返回值

Returns the schema of a database file as an associated array. The key name is equal to the field name. Each array element is itself an associated array containing the two fields type and size. type is one of the constants in table Constants for field types. size is the number of bytes this field consumes in the record. The total of all field sizes is equal to the record size as it can be retrieved with px-get-info().

px_get_record
px_get_value
Paradox 函数


Gets a value

px_get_schema
px_insert_record
Paradox 函数
PHP Manual

px_get_value

(PECL paradox >= 1.1.0)

px_get_value — Gets a value

说明

float px_get_value ( resource $pxdoc , string $name )

Gets various values.

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

name

name can be one of the following.

numprimkeys

The number of primary keys. Paradox databases always use the first numprimkeys fields for the primary index.

返回值

Returns the value of the parameter 或者在失败时返回 FALSE.

px_get_schema
px_insert_record
Paradox 函数


Inserts record into paradox database

px_get_value
px_new
Paradox 函数
PHP Manual

px_insert_record

(PECL paradox >= 1.4.0)

px_insert_record — Inserts record into paradox database

说明

int px_insert_record ( resource $pxdoc , array $data )

Inserts a new record into the database. The record is not necessarily inserted at the end of the database, but may be inserted at any position depending on where the first free slot is found.

The record data is passed as an array of field values. The elements in the array must correspond to the fields in the database. If the array has less elements than fields in the database, the remaining fields will be set to null.

Most field values can be passed as its equivalent php type e.g. a long value is used for fields of type PX_FIELD_LONG, PX_FIELD_SHORT and PX_FIELD_AUTOINC, a double values is used for fields of type PX_FIELD_CURRENCY and PX_FIELD_NUMBER. Field values for blob and alpha fields are passed as strings.

Fields of type PX_FIELD_TIME and PX_FIELD_DATE both require a long value. In the first case this is the number of milliseconds since midnight. In the second case this is the number of days since 1.1.0000. Below there are two examples to convert the current date or timestamp into a value suitable for one of paradox's date/time fields.

Note:

This function is only available if pxlib >= 0.6.0 is used.

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

data

Associated or indexed array containing the field values as e.g. returned by px_retrieve_record().

返回值

Returns FALSE on failure or the record number in case of success.

范例

Example #1 Set the date/time fields in a paradox database to the current date/time

<?php
$px = px_new();
$fp = fopen("test.db", "w+");
px_create_fp($px, $fp, array(array("timestamp", "@"), array("time", "T"), array("date", "D")));

$curdate = getdate();
$jd = gregoriantojd($curdate["mon"], $curdate["mday"], $curdate["year"]);
$days = $jd - 1721425; /* Number of days between 1.1.4714 b.c. and 1.1.0000 */
$secs = $curdate["hours"]*3600 + $curdate["minutes"]*60 + $curdate["seconds"];
px_insert_record($px, array($days*86400000.0 + $secs*1000.0, $secs*1000.0, $days));

$curtimestamp = microtime(true);
$days = (int) ($curtimestamp/86400);
$secs = $curtimestamp - ($days * 86400.0);
$days += 2440588; /* Number of days between 1.1.4714 b.c. and 1.1.1970 */
$days -= 1721425; /* Number of days between 1.1.4714 b.c. and 1.1.0000 */
px_insert_record($px, array($days*86400000.0 + $secs*1000.0, $secs*1000.0, $days));
for($i=0; $i<2; $i++) {
    $rec = px_retrieve_record($px, $i);
    echo px_timestamp2string($px, $rec["timestamp"], "n/d/Y H:i:s")."\n";
    echo px_date2string($px, $rec["date"], "n/d/Y")."\n";
}
px_close($px);
px_delete($px);
?>

以上例程会输出：

2/21/2006 21:42:30
2/21/2006
2/21/2006 20:42:30
2/21/2006

The Julian day count as passed to jdtogregorian() has a different base of 1.1.4714 b.c. and must therefore be calculated by adding 1721425 to the day count used in the paradox file. Turning the day count into a timestamp is easily done by multiplying with 86400000.0 to obtain milli seconds.

参见

px_update_record() - Updates record in paradox database

px_get_value
px_new
Paradox 函数


Create a new paradox object

px_insert_record
px_numfields
Paradox 函数
PHP Manual

px_new

(PECL paradox >= 1.0.0)

px_new — Create a new paradox object

说明

resource px_new ( void )

Create a new paradox object. You will have to call this function before any further functions. px_new() does not create any file on the disk, it just creates an instance of a paradox object. This function must not be called if the object oriented interface is used. Use new paradox_db() instead.

返回值

Returns FALSE on failure.

范例

Example #1 Opening a Paradox database

<?php
if(!$pxdoc = px_new()) {
  /* Error handling */
}
$fp = fopen("test.db", "r");
if(!px_open_fp($pxdoc, $fp)) {
  /* Error handling */
}
// ...
px_close($pxdoc);
px_delete($pxdoc);
fclose($fp);
?>

If you prefer the object oriented API, then the above example will look like the following.

Example #2 Opening a Paradox database

<?php
$fp = fopen("test.db", "r");
$pxdoc = new paradox_db();
if(!$pxdoc->open_fp($fp)) {
  /* Error handling */
}
// ...
$pxdoc->close();
fclose($fp);
?>

参见

  • px_delete() - Deletes resource of paradox database
  • px_open_fp() - Open paradox database

px_insert_record
px_numfields
Paradox 函数


Returns number of fields in a database

px_new
px_numrecords
Paradox 函数
PHP Manual

px_numfields

(PECL paradox >= 1.0.0)

px_numfields — Returns number of fields in a database

说明

int px_numfields ( resource $pxdoc )

Get the number of fields in a database file.

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

返回值

Returns the number of fields in a database file. The return value of this function is identical to the element numfields in the array returned by px_get_info().

px_new
px_numrecords
Paradox 函数


Returns number of records in a database

px_numfields
px_open_fp
Paradox 函数
PHP Manual

px_numrecords

(PECL paradox >= 1.0.0)

px_numrecords — Returns number of records in a database

说明

int px_numrecords ( resource $pxdoc )

Get the number of records in a database file.

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

返回值

Returns the number of records in a database file. The return value of this function is identical to the element numrecords in the array returned by px_get_info().

px_numfields
px_open_fp
Paradox 函数


Open paradox database

px_numrecords
px_put_record
Paradox 函数
PHP Manual

px_open_fp

(PECL paradox >= 1.0.0)

px_open_fp — Open paradox database

说明

bool px_open_fp ( resource $pxdoc , resource $file )

Open an existing paradox database file. The actual file has to be opened before with fopen(). This function can also be used to open primary index files and tread them like a paradox database. This is supported for those who would like to investigate a primary index. It cannot be used to accelerate access to a database file.

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

file

file is the return value from fopen() with the actual database file as parameter. Make sure the database is writable if you plan to update or insert records.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • fopen() - 打开文件或者 URL
  • The example at px_new() - Create a new paradox object

px_numrecords
px_put_record
Paradox 函数


Stores record into paradox database

px_open_fp
px_retrieve_record
Paradox 函数
PHP Manual

px_put_record

(PECL paradox >= 1.0.0)

px_put_record — Stores record into paradox database

说明

bool px_put_record ( resource $pxdoc , array $record [, int $recpos = -1 ] )

Stores a record into a paradox database. The record is always added at the end of the database, regardless of any free slots. Use px_insert_record() to add a new record into the first free slot found in the database.

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

record

Associated or indexed array containing the field values as e.g. returned by px_retrieve_record().

recpos

This optional parameter may be used to specify a record number greater than the current number of records in the database. The function will add as many empty records as needed. There is hardly any need for this parameter.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

px_open_fp
px_retrieve_record
Paradox 函数


Returns record of paradox database

px_put_record
px_set_blob_file
Paradox 函数
PHP Manual

px_retrieve_record

(PECL paradox >= 1.4.0)

px_retrieve_record — Returns record of paradox database

说明

array px_retrieve_record ( resource $pxdoc , int $num [, int $mode = 0 ] )

This function is very similar to px_get_record() but uses internally a different approach to retrieve the data. It relies on pxlib for reading each single field value, which usually results in support for more field types.

Note:

This function is only available if pxlib >= 0.6.0 is used.

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

num

The record number is an artificial number counting records in the order as they are stored in the database. The first record has number 0.

mode

The optional mode can be PX_KEYTOLOWER or PX_KEYTOUPPER in order to convert the keys into lower or upper case. If mode is not passed or is 0, then the key will be exactly like the field name. The element values will contain the field values. NULL values will be retained and are different from 0.0, 0 or the empty string. Fields of type PX_FIELD_TIME will be returned as an integer counting the number of milliseconds starting at midnight. A timestamp is a floating point value also counting milliseconds starting at the beginning of julian calendar.

返回值

Returns the num'th record from the paradox database. The record is returned as an associated array with its keys being the field names.

参见

  • px_get_record() - Returns record of paradox database

px_put_record
px_set_blob_file
Paradox 函数


Sets the file where blobs are read from

px_retrieve_record
px_set_parameter
Paradox 函数
PHP Manual

px_set_blob_file

(PECL paradox >= 1.3.0)

px_set_blob_file — Sets the file where blobs are read from

说明

bool px_set_blob_file ( resource $pxdoc , string $filename )

Sets the name of the file where blobs are going to be read from or written into. Without calling this function, px_get_record() or px_retrieve_record() will only return data in blob fields if the data is part of the record and not stored in the blob file. Blob data is stored in the record if it is small enough to fit in the size of the blob field.

Calling px_put_record(),
px_insert_record(), or
px_update_record() without calling
px_set_blob_file() will result in truncated blob fields
unless the data fits into the database file.

Calling this function twice will close the first blob file and open the new one.

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

filename

The name of the file. Its extension should be .MB.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

px_retrieve_record
px_set_parameter
Paradox 函数


Sets a parameter

px_set_blob_file
px_set_tablename
Paradox 函数
PHP Manual

px_set_parameter

(PECL paradox >= 1.1.0)

px_set_parameter — Sets a parameter

说明

bool px_set_parameter ( resource $pxdoc , string $name , string $value )

Sets various parameters.

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

name

Depending on the parameter you want to set, name can be one of the following.

tablename

The name of the table as it will be stored in the database header.

targetencoding

The encoding for the output. Data which is being read from character fields is recoded into the targetencoding.

inputencoding

The encoding of the input data which is to be stored into the database.

value

The value of parameter to set. For inputencoding and targetencoding this must be the name of the encoding as understood by iconv or recode, e.g. iso-8859-1, utf-8, cp850.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • px_get_info() - Return lots of information about a paradox file to determine the DOS code page.

px_set_blob_file
px_set_tablename
Paradox 函数


Sets the name of a table (deprecated)

px_set_parameter
px_set_targetencoding
Paradox 函数
PHP Manual

px_set_tablename

(PECL paradox >= 1.0.0)

px_set_tablename — Sets the name of a table (deprecated)

说明

void px_set_tablename ( resource $pxdoc , string $name )

Sets the table name of a paradox database, which was created with px_create_fp(). This function is deprecated use px_set_parameter() instead.

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

tablename

The name of the table. If it is not set explicitly it will be set to the name of the database file.

返回值

Returns NULL on success 或者在失败时返回 FALSE.

参见

px_set_parameter() - Sets a parameter

px_set_parameter
px_set_targetencoding
Paradox 函数


Sets the encoding for character fields (deprecated)

px_set_tablename
px_set_value
Paradox 函数
PHP Manual

px_set_targetencoding

(PECL paradox >= 1.0.0)

px_set_targetencoding — Sets the encoding for character fields (deprecated)

说明

bool px_set_targetencoding ( resource $pxdoc , string $encoding )

Set the encoding for data retrieved from a character field. All character fields will be recoded to the encoding set by this function. If the encoding is not set, the character data will be returned in the DOS code page encoding as specified in the database file. The encoding can be any string identifier known to iconv or recode. On Unix systems run iconv -l for a list of available encodings.

This function is deprecated and should be replaced by calling px_set_parameter().

See also px_get_info() to determine the DOS code page as stored in the database file.

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

encoding

The encoding for the output. Data which is being read from character fields is recoded into the targetencoding.

返回值

Returns FALSE if the encoding could not be set, e.g. the encoding is unknown, or pxlib does not support recoding at all. In the second case a warning will be issued.

参见

px_set_parameter() - Sets a parameter

px_set_tablename
px_set_value
Paradox 函数


Sets a value

px_set_targetencoding
px_timestamp2string
Paradox 函数
PHP Manual

px_set_value

(PECL paradox >= 1.1.0)

px_set_value — Sets a value

说明

bool px_set_value ( resource $pxdoc , string $name , float $value )

Sets various values.

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

name

name can be one of the following.

numprimkeys

The number of primary keys. Paradox databases always use the first numprimkeys fields for the primary index.

value

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

px_set_parameter() - Sets a parameter

px_set_targetencoding
px_timestamp2string
Paradox 函数


Converts the timestamp into a string.

px_set_value
px_update_record
Paradox 函数
PHP Manual

px_timestamp2string

(PECL paradox >= 1.4.0)

px_timestamp2string — Converts the timestamp into a string.

说明

string px_timestamp2string ( resource $pxdoc , float $value , string $format )

Turns a timestamp as it stored in the paradox file into human readable format. Paradox timestamps are the number of miliseconds since 0001-01-02. This function is just for convenience. It can be easily replaced by some math and the calendar functions as demonstrated in the following example.

参数

pxdoc

Resource identifier of the paradox database.

value

Value as stored in paradox database field of type PX_FIELD_TIME, or PX_FIELD_TIMESTAMP.

format

String format similar to the format used by date(). The placeholders support by this function is a subset of those supported by date() (Y, y, m, n, d, j, H, h, G, g, i, s, A, a, L).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Turn a paradox timestamp into a human readable form

<?php
$px = px_new();

/* make up a date as it could be stored in */
/* a date field of a paradox db. */
/* 700000 days since 1.1.0000. */
$days = 700000;

/* Use the calendar functions to print a */
/* human readable format of the date */
echo jdtogregorian($days+1721425)."\n";

/* Turn it into a timestamp as it stored in a paradox database */
/* Timestamps are stored in miliseconds since 0001-01-02 */
$stamp = $days * 86400.0 * 1000.0;
/* Add one hour */
$stamp += 3600000.0;
/* The following will output '7/15/1917 01:00:00'. */
echo px_timestamp2string($px, $stamp, "n/d/Y H:i:s")."\n";

px_delete($px);
?>

以上例程会输出：

7/15/1917
7/15/1917 01:00:00

The Julian day count as passed to jdtogregorian() has a different base of 1.1.4714 b.c. and must therefore be calculated by adding 1721425 to the day count used in the paradox file. Turning the day count into a timestamp is easily done by multiplying with 86400000.0 to obtain miliseconds.

参见

  • px_date2string() - Converts a date into a string.
  • jdtogregorian() - 转变一个Julian Day计数为Gregorian历法日期

px_set_value
px_update_record
Paradox 函数


Updates record in paradox database

px_timestamp2string
PostgreSQL
Paradox 函数
PHP Manual

px_update_record

(PECL paradox >= 1.4.0)

px_update_record — Updates record in paradox database

说明

bool px_update_record ( resource $pxdoc , array $data , int $num )

Updates an exiting record in the database. The record starts at 0.

The record data is passed as an array of field values. The elements in the array must correspond to the fields in the database. If the array has less elements than fields in the database, the remaining fields will be set to null.

Note:

This function is only available if pxlib >= 0.6.0 is used.

参数

pxdoc

Resource identifier of the paradox database as returned by px_new().

data

Associated array containing the field values as returned by px_retrieve_record().

num

The record number is an artificial number counting records in the order as they are stored in the database. The first record has number 0.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

px_insert_record() - Inserts record into paradox database

px_timestamp2string
PostgreSQL
Paradox 函数


PostgreSQL

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Basic usage
  • PostgreSQL 函数
    • pg_affected_rows — 返回受影响的记录数目
    • pg_cancel_query — 取消异步查询
    • pg_client_encoding — 取得客户端编码方式
    • pg_close — 关闭一个 PostgreSQL 连接
    • pg_connect_poll — 正在进行尝试轮询 PostgreSQL 链接状态。
    • pg_connect — 打开一个 PostgreSQL 连接
    • pg_connection_busy — 获知连接是否为忙
    • pg_connection_reset — 重置连接（再次连接）
    • pg_connection_status — 获得连接状态
    • pg_consume_input — Reads input on the connection
    • pg_convert — 将关联的数组值转换为适合 SQL 语句的格式。
    • pg_copy_from — 根据数组将记录插入表中
    • pg_copy_to — 将一个表拷贝到数组中
    • pg_dbname — 获得数据库名
    • pg_delete — 删除记录
    • pg_end_copy — 与 PostgreSQL 后端同步
    • pg_escape_bytea — 转义 bytea 类型的二进制数据
    • pg_escape_identifier — Escape a identifier for insertion into a text field
    • pg_escape_literal — Escape a literal for insertion into a text field
    • pg_escape_string — 转义 text/char 类型的字符串
    • pg_execute — Sends a request to execute a prepared statement with given parameters, and waits for the result.
    • pg_fetch_all_columns — Fetches all rows in a particular result column as an array
    • pg_fetch_all — 从结果中提取所有行作为一个数组
    • pg_fetch_array — 提取一行作为数组
    • pg_fetch_assoc — 提取一行作为关联数组
    • pg_fetch_object — 提取一行作为对象
    • pg_fetch_result — 从结果资源中返回值
    • pg_fetch_row — 提取一行作为枚举数组
    • pg_field_is_null — 测试字段是否为 NULL
    • pg_field_name — 返回字段的名字
    • pg_field_num — 返回字段的编号
    • pg_field_prtlen — 返回打印出来的长度
    • pg_field_size — 返回指定字段占用内部存储空间的大小
    • pg_field_table — Returns the name or oid of the tables field
    • pg_field_type_oid — Returns the type ID (OID) for the corresponding field number
    • pg_field_type — 返回相应字段的类型名称
    • pg_flush — 刷新链接中已处理的数据查询
    • pg_free_result — 释放查询结果占用的内存
    • pg_get_notify — Ping 数据库连接
    • pg_get_pid — Ping 数据库连接
    • pg_get_result — 取得异步查询结果
    • pg_host — 返回和某连接关联的主机名
    • pg_insert — 将数组插入到表中
    • pg_last_error — 得到某连接的最后一条错误信息
    • pg_last_notice — 返回 PostgreSQL 服务器最新一条公告信息
    • pg_last_oid — 返回上一个对象的 oid
    • pg_lo_close — 关闭一个大型对象
    • pg_lo_create — 新建一个大型对象
    • pg_lo_export — 将大型对象导出到文件
    • pg_lo_import — 将文件导入为大型对象
    • pg_lo_open — 打开一个大型对象
    • pg_lo_read_all — 读入整个大型对象并直接发送给浏览器
    • pg_lo_read — 从大型对象中读入数据
    • pg_lo_seek — 移动大型对象中的指针
    • pg_lo_tell — 返回大型对象的当前指针位置
    • pg_lo_truncate — Truncates a large object
    • pg_lo_unlink — 删除一个大型对象
    • pg_lo_write — 向大型对象写入数据
    • pg_meta_data — 获得表的元数据
    • pg_num_fields — 返回字段的数目
    • pg_num_rows — 返回行的数目
    • pg_options — 获得和连接有关的选项
    • pg_parameter_status — Looks up a current parameter setting of the server.
    • pg_pconnect — 打开一个持久的 PostgreSQL 连接
    • pg_ping — Ping 数据库连接
    • pg_port — 返回该连接的端口号
    • pg_prepare — Submits a request to create a prepared statement with the given parameters, and waits for completion.
    • pg_put_line — 向 PostgreSQL 后端发送以 NULL 结尾的字符串
    • pg_query_params — Submits a command to the server and waits for the result, with the ability to pass parameters separately from the SQL command text.
    • pg_query — 执行查询
    • pg_result_error_field — Returns an individual field of an error report.
    • pg_result_error — 获得查询结果的错误信息
    • pg_result_seek — 在结果资源中设定内部行偏移量
    • pg_result_status — 获得查询结果的状态
    • pg_select — 选择记录
    • pg_send_execute — Sends a request to execute a prepared statement with given parameters, without waiting for the result(s).
    • pg_send_prepare — Sends a request to create a prepared statement with the given parameters, without waiting for completion.
    • pg_send_query_params — Submits a command and separate parameters to the server without waiting for the result(s).
    • pg_send_query — 发送异步查询
    • pg_set_client_encoding — 设定客户端编码
    • pg_set_error_verbosity — Determines the verbosity of messages returned by pg_last_error and pg_result_error.
    • pg_socket — Get a read only handle to the socket underlying a PostgreSQL connection
    • pg_trace — 启动一个 PostgreSQL 连接的追踪功能
    • pg_transaction_status — Returns the current in-transaction status of the server.
    • pg_tty — 返回该连接的 tty 号
    • pg_unescape_bytea — 取消 bytea 类型中的字符串转义
    • pg_untrace — 关闭 PostgreSQL 连接的追踪功能
    • pg_update — 更新表
    • pg_version — Returns an array with client, protocol and server version (when available)
px_update_record
简介
针对各数据库系统对应的扩展


简介

PostgreSQL database is an Open Source product and available without cost. Postgres, developed originally in the UC Berkeley Computer Science Department, pioneered many of the object-relational concepts now becoming available in some commercial databases. It provides SQL92/SQL99 language support, transactions, referential integrity, stored procedures and type extensibility. PostgreSQL is an open source descendant of this original Berkeley code.

PostgreSQL
安装／配置
PostgreSQL


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
PostgreSQL


需求

To use PostgreSQL support, you need PostgreSQL 6.5 or later, PostgreSQL 8.0 or later to enable all PostgreSQL module features. PostgreSQL supports many character encodings including multibyte character encoding. The current version and more information about PostgreSQL is available at » http://www.postgresql.org/ and the » PostgreSQL Documentation.

安装／配置
安装
安装／配置


安装

为添加 PostgreSQL 支持，在编译 PHP 时需要加上 --with-pgsql[=DIR] 选项。如果可以用共享模块方式，PostgreSQL 模块可以在 php.ini 用 extension 指令或者 dl() 函数加载。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

PostgreSQL 配置选项
名字 | 默认 | 可修改范围 | 更新日志
pgsql.allow_persistent | "1" | PHP_INI_SYSTEM |
pgsql.max_persistent | "-1" | PHP_INI_SYSTEM |
pgsql.max_links | "-1" | PHP_INI_SYSTEM |
pgsql.auto_reset_persistent | "0" | PHP_INI_SYSTEM | 从 PHP 4.2.0 起开始存在
pgsql.ignore_notice | "0" | PHP_INI_ALL | 从 PHP 4.3.0 起开始存在
pgsql.log_notice | "0" | PHP_INI_ALL | 从 PHP 4.3.0 起开始存在
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

pgsql.allow_persistent boolean

是否允许持久的 Postgres 连接。

pgsql.max_persistent integer

每个进程所能有的持久 Postgres 连接数目。

pgsql.max_links integer

每个进程所能有的 Postgres 连接数目，包括持久连接。

pgsql.auto_reset_persistent integer

检测用在 pg_pconnect() 上的中断了的持久连接。需要一些损耗。

pgsql.ignore_notice integer

是否忽略 PostgreSQL 后端的通告。

pgsql.log_notice integer

是否记录 PostgreSQL 后端的通告消息。要记录通告消息日志，PHP 指令 pgsql.ignore_notice 必须为 off。

安装
资源类型
安装／配置


资源类型

There are two resource types used in the PostgreSQL module. The first one is the link identifier for a database connection, the second a resource which holds the result of a query.

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

PGSQL_ASSOC (integer)
Passed to pg_fetch_array(). Return an associative array of field names and values.
PGSQL_NUM (integer)
Passed to pg_fetch_array(). Return a numerically indexed array of field numbers and values.
PGSQL_BOTH (integer)
Passed to pg_fetch_array(). Return an array of field values that is both numerically indexed (by field number) and associated (by field name).
PGSQL_CONNECT_FORCE_NEW (integer)
Passed to pg_connect() to force the creation of a new connection, rather then re-using an existing identical connection.
PGSQL_CONNECTION_BAD (integer)
Returned by pg_connection_status() indicating that the database connection is in an invalid state.
PGSQL_CONNECTION_OK (integer)
Returned by pg_connection_status() indicating that the database connection is in a valid state.
PGSQL_SEEK_SET (integer)
Passed to pg_lo_seek(). Seek operation is to begin from the start of the object.
PGSQL_SEEK_CUR (integer)
Passed to pg_lo_seek(). Seek operation is to begin from the current position.
PGSQL_SEEK_END (integer)
Passed to pg_lo_seek(). Seek operation is to begin from the end of the object.
PGSQL_EMPTY_QUERY (integer)
Returned by pg_result_status(). The string sent to the server was empty.
PGSQL_COMMAND_OK (integer)
Returned by pg_result_status(). Successful completion of a command returning no data.
PGSQL_TUPLES_OK (integer)
Returned by pg_result_status(). Successful completion of a command returning data (such as a SELECT or SHOW).
PGSQL_COPY_OUT (integer)
Returned by pg_result_status(). Copy Out (from server) data transfer started.
PGSQL_COPY_IN (integer)
Returned by pg_result_status(). Copy In (to server) data transfer started.
PGSQL_BAD_RESPONSE (integer)
Returned by pg_result_status(). The server's response was not understood.
PGSQL_NONFATAL_ERROR (integer)
Returned by pg_result_status(). A nonfatal error (a notice or warning) occurred.
PGSQL_FATAL_ERROR (integer)
Returned by pg_result_status(). A fatal error occurred.
PGSQL_TRANSACTION_IDLE (integer)
Returned by pg_transaction_status(). Connection is currently idle, not in a transaction.
PGSQL_TRANSACTION_ACTIVE (integer)
Returned by pg_transaction_status(). A command is in progress on the connection. A query has been sent via the connection and not yet completed.
PGSQL_TRANSACTION_INTRANS (integer)
Returned by pg_transaction_status(). The connection is idle, in a transaction block.
PGSQL_TRANSACTION_INERROR (integer)
Returned by pg_transaction_status(). The connection is idle, in a failed transaction block.
PGSQL_TRANSACTION_UNKNOWN (integer)
Returned by pg_transaction_status(). The connection is bad.
PGSQL_DIAG_SEVERITY (integer)
Passed to pg_result_error_field(). The severity; the field contents are ERROR, FATAL, or PANIC (in an error message), or WARNING, NOTICE, DEBUG, INFO, or LOG (in a notice message), or a localized translation of one of these. Always present.
PGSQL_DIAG_SQLSTATE (integer)
Passed to pg_result_error_field(). The SQLSTATE code for the error. The SQLSTATE code identifies the type of error that has occurred; it can be used by front-end applications to perform specific operations (such as error handling) in response to a particular database error. This field is not localizable, and is always present.
PGSQL_DIAG_MESSAGE_PRIMARY (integer)
Passed to pg_result_error_field(). The primary human-readable error message (typically one line). Always present.
PGSQL_DIAG_MESSAGE_DETAIL (integer)
Passed to pg_result_error_field(). Detail: an optional secondary error message carrying more detail about the problem. May run to multiple lines.
PGSQL_DIAG_MESSAGE_HINT (integer)
Passed to pg_result_error_field(). Hint: an optional suggestion what to do about the problem. This is intended to differ from detail in that it offers advice (potentially inappropriate) rather than hard facts. May run to multiple lines.
PGSQL_DIAG_STATEMENT_POSITION (integer)
Passed to pg_result_error_field(). A string containing a decimal integer indicating an error cursor position as an index into the original statement string. The first character has index 1, and positions are measured in characters not bytes.
PGSQL_DIAG_INTERNAL_POSITION (integer)
Passed to pg_result_error_field(). This is defined the same as the PG_DIAG_STATEMENT_POSITION field, but it is used when the cursor position refers to an internally generated command rather than the one submitted by the client. The PG_DIAG_INTERNAL_QUERY field will always appear when this field appears.
PGSQL_DIAG_INTERNAL_QUERY (integer)
Passed to pg_result_error_field(). The text of a failed internally-generated command. This could be, for example, a SQL query issued by a PL/pgSQL function.
PGSQL_DIAG_CONTEXT (integer)
Passed to pg_result_error_field(). An indication of the context in which the error occurred. Presently this includes a call stack traceback of active procedural language functions and internally-generated queries. The trace is one entry per line, most recent first.
PGSQL_DIAG_SOURCE_FILE (integer)
Passed to pg_result_error_field(). The file name of the PostgreSQL source-code location where the error was reported.
PGSQL_DIAG_SOURCE_LINE (integer)
Passed to pg_result_error_field(). The line number of the PostgreSQL source-code location where the error was reported.
PGSQL_DIAG_SOURCE_FUNCTION (integer)
Passed to pg_result_error_field(). The name of the PostgreSQL source-code function reporting the error.
PGSQL_ERRORS_TERSE (integer)
Passed to pg_set_error_verbosity(). Specified that returned messages include severity, primary text, and position only; this will normally fit on a single line.
PGSQL_ERRORS_DEFAULT (integer)
Passed to pg_set_error_verbosity(). The default mode produces messages that include the above plus any detail, hint, or context fields (these may span multiple lines).
PGSQL_ERRORS_VERBOSE (integer)
Passed to pg_set_error_verbosity(). The verbose mode includes all available fields.
PGSQL_STATUS_LONG (integer)
Passed to pg_result_status(). Indicates that numerical result code is desired.
PGSQL_STATUS_STRING (integer)
Passed to pg_result_status(). Indicates that textual result command tag is desired.
PGSQL_CONV_IGNORE_DEFAULT (integer)
Passed to pg_convert(). Ignore default values in the table during conversion.
PGSQL_CONV_FORCE_NULL (integer)
Passed to pg_convert(). Use SQL NULL in place of an empty string.
PGSQL_CONV_IGNORE_DEFAULT (integer)
Passed to pg_convert(). Ignore conversion of NULL into SQL NOT NULL columns.
资源类型
范例
PostgreSQL


范例

Table of Contents

  • Basic usage
预定义常量
Basic usage
PostgreSQL


Basic usage

This simple example shows how to connect, execute a query, print resulting rows and disconnect from a PostgreSQL database.

Example #1 PostgreSQL extension overview example

<?php
// Connecting, selecting database
$dbconn = pg_connect("host=localhost dbname=publishing user=www password=foo")
    or die('Could not connect: ' . pg_last_error());

// Performing SQL query
$query = 'SELECT * FROM authors';
$result = pg_query($query) or die('Query failed: ' . pg_last_error());

// Printing results in HTML
echo "<table>\n";
while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {
    echo "\t<tr>\n";
    foreach ($line as $col_value) {
        echo "\t\t<td>$col_value</td>\n";
    }
    echo "\t</tr>\n";
}
echo "</table>\n";

// Free resultset
pg_free_result($result);

// Closing connection
pg_close($dbconn);
?>

范例
PostgreSQL 函数
范例


PostgreSQL 函数

注释

Note:

Not all functions are supported by all builds. It depends on your libpq (The PostgreSQL C client library) version and how libpq is compiled. If PHP PostgreSQL extensions are missing, then it is because your libpq version does not support them.

Note:

Most PostgreSQL functions accept connection as the optional first parameter. If it is not provided, the last opened connection is used. If it doesn't exist, functions return FALSE.

Note:

PostgreSQL automatically folds all identifiers (e.g. table/column names) to lower-case values at object creation time and at query time. To force the use of mixed or upper case identifiers, you must escape the identifier using double quotes ("").

Note:

PostgreSQL does not have special commands for fetching database schema information (eg. all the tables in the current database). Instead, there is a standard schema named information_schema in PostgreSQL 7.4 and above containing system views with all the necessary information, in an easily queryable form. See the » PostgreSQL Documentation for full details.

Table of Contents

  • pg_affected_rows — 返回受影响的记录数目
  • pg_cancel_query — 取消异步查询
  • pg_client_encoding — 取得客户端编码方式
  • pg_close — 关闭一个 PostgreSQL 连接
  • pg_connect_poll — 正在进行尝试轮询 PostgreSQL 链接状态。
  • pg_connect — 打开一个 PostgreSQL 连接
  • pg_connection_busy — 获知连接是否为忙
  • pg_connection_reset — 重置连接（再次连接）
  • pg_connection_status — 获得连接状态
  • pg_consume_input — Reads input on the connection
  • pg_convert — 将关联的数组值转换为适合 SQL 语句的格式。
  • pg_copy_from — 根据数组将记录插入表中
  • pg_copy_to — 将一个表拷贝到数组中
  • pg_dbname — 获得数据库名
  • pg_delete — 删除记录
  • pg_end_copy — 与 PostgreSQL 后端同步
  • pg_escape_bytea — 转义 bytea 类型的二进制数据
  • pg_escape_identifier — Escape a identifier for insertion into a text field
  • pg_escape_literal — Escape a literal for insertion into a text field
  • pg_escape_string — 转义 text/char 类型的字符串
  • pg_execute — Sends a request to execute a prepared statement with given parameters, and waits for the result.
  • pg_fetch_all_columns — Fetches all rows in a particular result column as an array
  • pg_fetch_all — 从结果中提取所有行作为一个数组
  • pg_fetch_array — 提取一行作为数组
  • pg_fetch_assoc — 提取一行作为关联数组
  • pg_fetch_object — 提取一行作为对象
  • pg_fetch_result — 从结果资源中返回值
  • pg_fetch_row — 提取一行作为枚举数组
  • pg_field_is_null — 测试字段是否为 NULL
  • pg_field_name — 返回字段的名字
  • pg_field_num — 返回字段的编号
  • pg_field_prtlen — 返回打印出来的长度
  • pg_field_size — 返回指定字段占用内部存储空间的大小
  • pg_field_table — Returns the name or oid of the tables field
  • pg_field_type_oid — Returns the type ID (OID) for the corresponding field number
  • pg_field_type — 返回相应字段的类型名称
  • pg_flush — 刷新链接中已处理的数据查询
  • pg_free_result — 释放查询结果占用的内存
  • pg_get_notify — Ping 数据库连接
  • pg_get_pid — Ping 数据库连接
  • pg_get_result — 取得异步查询结果
  • pg_host — 返回和某连接关联的主机名
  • pg_insert — 将数组插入到表中
  • pg_last_error — 得到某连接的最后一条错误信息
  • pg_last_notice — 返回 PostgreSQL 服务器最新一条公告信息
  • pg_last_oid — 返回上一个对象的 oid
  • pg_lo_close — 关闭一个大型对象
  • pg_lo_create — 新建一个大型对象
  • pg_lo_export — 将大型对象导出到文件
  • pg_lo_import — 将文件导入为大型对象
  • pg_lo_open — 打开一个大型对象
  • pg_lo_read_all — 读入整个大型对象并直接发送给浏览器
  • pg_lo_read — 从大型对象中读入数据
  • pg_lo_seek — 移动大型对象中的指针
  • pg_lo_tell — 返回大型对象的当前指针位置
  • pg_lo_truncate — Truncates a large object
  • pg_lo_unlink — 删除一个大型对象
  • pg_lo_write — 向大型对象写入数据
  • pg_meta_data — 获得表的元数据
  • pg_num_fields — 返回字段的数目
  • pg_num_rows — 返回行的数目
  • pg_options — 获得和连接有关的选项
  • pg_parameter_status — Looks up a current parameter setting of the server.
  • pg_pconnect — 打开一个持久的 PostgreSQL 连接
  • pg_ping — Ping 数据库连接
  • pg_port — 返回该连接的端口号
  • pg_prepare — Submits a request to create a prepared statement with the given parameters, and waits for completion.
  • pg_put_line — 向 PostgreSQL 后端发送以 NULL 结尾的字符串
  • pg_query_params — Submits a command to the server and waits for the result, with the ability to pass parameters separately from the SQL command text.
  • pg_query — 执行查询
  • pg_result_error_field — Returns an individual field of an error report.
  • pg_result_error — 获得查询结果的错误信息
  • pg_result_seek — 在结果资源中设定内部行偏移量
  • pg_result_status — 获得查询结果的状态
  • pg_select — 选择记录
  • pg_send_execute — Sends a request to execute a prepared statement with given parameters, without waiting for the result(s).
  • pg_send_prepare — Sends a request to create a prepared statement with the given parameters, without waiting for completion.
  • pg_send_query_params — Submits a command and separate parameters to the server without waiting for the result(s).
  • pg_send_query — 发送异步查询
  • pg_set_client_encoding — 设定客户端编码
  • pg_set_error_verbosity — Determines the verbosity of messages returned by pg_last_error and pg_result_error.
  • pg_socket — Get a read only handle to the socket underlying a PostgreSQL connection
  • pg_trace — 启动一个 PostgreSQL 连接的追踪功能
  • pg_transaction_status — Returns the current in-transaction status of the server.
  • pg_tty — 返回该连接的 tty 号
  • pg_unescape_bytea — 取消 bytea 类型中的字符串转义
  • pg_untrace — 关闭 PostgreSQL 连接的追踪功能
  • pg_update — 更新表
  • pg_version — Returns an array with client, protocol and server version (when available)
Basic usage
pg_affected_rows
PostgreSQL


返回受影响的记录数目

PostgreSQL 函数
pg_cancel_query
PostgreSQL 函数
PHP Manual

pg_affected_rows

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_affected_rows — 返回受影响的记录数目

说明

int pg_affected_rows ( resource $result )

pg_affected_rows() 返回在 pg_query() 中执行 INSERT，UPDATE 和 DELETE 查询后受到影响的记录数目（包括实例／记录／行）。如果本函数没有影响到任何记录，则返回 0。

Example #1 pg_affected_rows() 例子

<?php
$result = pg_query($conn, "INSERT INTO authors VALUES ('Orwell', 2002, 'Animal Farm')");
$cmdtuples = pg_affected_rows($result);
echo $cmdtuples . " tuples are affected.\n";
?>

Note:

本函数以前被称为 pg_cmdtuples()。

参见 pg_query() 和 pg_num_rows()。

PostgreSQL 函数
pg_cancel_query
PostgreSQL 函数


取消异步查询

pg_affected_rows
pg_client_encoding
PostgreSQL 函数
PHP Manual

pg_cancel_query

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_cancel_query — 取消异步查询

说明

bool pg_cancel_query ( resource $connection )

pg_cancel_query() 取消由 pg_send_query() 发送的异步查询。不能取消由 pg_query() 执行的查询。

参见 pg_send_query() 和 pg_connection_busy()。

pg_affected_rows
pg_client_encoding
PostgreSQL 函数


取得客户端编码方式

pg_cancel_query
pg_close
PostgreSQL 函数
PHP Manual

pg_client_encoding

(PHP 4 >= 4.0.3, PHP 5, PHP 7)

pg_client_encoding — 取得客户端编码方式

说明

string pg_client_encoding ([ resource $connection ] )

pg_client_encoding() 以字符串形式返回客户端编码。所返回的字符串为以下之一：SQL_ASCII，EUC_JP，EUC_CN，EUC_KR，EUC_TW，UNICODE，MULE_INTERNAL，LATINX (X=1...9)，KOI8，WIN，ALT，SJIS，BIG5，WIN1250。

Note:

本函数需要 PHP-4.0.3 或以上版本以及 PostgreSQL-7.0 或以上版本。如果在编译 libpq 时没有加入多字节编码支持，则 pg_set_client_encoding() 总是返回 "SQL_ASCII"。所支持的编码方式取决于 PostgreSQL 的版本。详情参见 PostgreSQL 手册如何加入多字节支持以及所支持的编码方式。

本函数以前被称为 pg_clientencoding()。

参见 pg_set_client_encoding()。

pg_cancel_query
pg_close
PostgreSQL 函数


关闭一个 PostgreSQL 连接

pg_client_encoding
pg_connect_poll
PostgreSQL 函数
PHP Manual

pg_close

(PHP 4, PHP 5, PHP 7)

pg_close — 关闭一个 PostgreSQL 连接

说明

bool pg_close ([ resource $connection ] )

pg_close() 关闭由所给资源 connection 指定的到 PostgreSQL 数据库的非持久连接。

Note:

使用 pg_close() 并不很必要，因为非持久连接在本脚本执行结束后会自动关闭。

如果在此连接中打开了 large object 资源，则在关闭所有 large object 资源之前不要关闭连接。

参数

connection

PostgreSQL database connection resource. When connection is not present, the default connection is used. The default connection is the last connection made by pg_connect() or pg_pconnect().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 pg_close() 例子

<?php
$dbconn = pg_connect("host=localhost port=5432 dbname=mary")
   or die("Could not connect");
echo "Connected successfully";
pg_close($dbconn);
?>

以上例程会输出：

Connected successfully

参见

  • pg_connect() - 打开一个 PostgreSQL 连接

pg_client_encoding
pg_connect_poll
PostgreSQL 函数


正在进行尝试轮询 PostgreSQL 链接状态。

pg_close
pg_connect
PostgreSQL 函数
PHP Manual

pg_connect_poll

(PHP 5 >= 5.6.0, PHP 7)

pg_connect_poll — 正在进行尝试轮询 PostgreSQL 链接状态。

说明

int pg_connect_poll ([ resource $connection ] )

pg_connect_poll() 轮询使用 pg_connect() 创建的 PostgreSQL 链接状态，根据 PGSQL_CONNECT_ASYNC 选项

参数

connection

PostgreSQL 数据库链接资源

返回值

返回常量 PGSQL_POLLING_FAILED, PGSQL_POLLING_READING, PGSQL_POLLING_WRITING, PGSQL_POLLING_OK, 或者 PGSQL_POLLING_ACTIVE.

pg_close
pg_connect
PostgreSQL 函数


打开一个 PostgreSQL 连接

pg_connect_poll
pg_connection_busy
PostgreSQL 函数
PHP Manual

pg_connect

(PHP 4, PHP 5, PHP 7)

pg_connect — 打开一个 PostgreSQL 连接

说明

resource pg_connect ( string $connection_string )

pg_connect() 返回其它 PostgreSQL 函数所需要的资源。

pg_connect() 打开一个由 connection_string 所指定的 PostgreSQL 数据库的连接。如果成功则返回连接资源，如果不能连接则返回 FALSE。connection_string 应该是用引号引起来的字符串。

Example #1 使用 pg_connect()

<?php
$dbconn = pg_connect("dbname=mary");
//connect to a database named "mary"
$dbconn2 = pg_connect("host=localhost port=5432 dbname=mary");
// connect to a database named "mary" on "localhost" at port "5432"
$dbconn3 = pg_connect("host=sheep port=5432 dbname=mary user=lamb password=foo");
//connect to a database named "mary" on the host "sheep" with a username and password

$conn_string = "host=sheep port=5432 dbname=test user=lamb password=bar";
$dbconn4 = pg_connect($conn_string);
//connect to a database named "test" on the host "sheep" with a username and password
?>
connection_string 所包括的参数有 host，port，tty, options，dbname, user 和 password。

如果用同样的 connection_string 再次调用 pg_connect()，不会建立新连接，而是返回前面已经打开的连接资源。如果使用不同的连接字符串，则可以和同一个数据库建立多个连接。

旧的多参数语法 $conn = pg_connect("host", "port", "options", "tty", "dbname") 已经不提倡使用。

参见 pg_pconnect()，pg_close()，pg_host()，pg_port(), pg_tty()，pg_options() 和 pg_dbname()。

pg_connect_poll
pg_connection_busy
PostgreSQL 函数


获知连接是否为忙

pg_connect
pg_connection_reset
PostgreSQL 函数
PHP Manual

pg_connection_busy

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_connection_busy — 获知连接是否为忙

说明

bool pg_connection_busy ( resource $connection )

pg_connection_busy() 在此连接状态为忙的时候返回 TRUE。如果连接状态为忙，说明前一个查询仍然在执行。如果调用 pg_get_result() 函数的话，则会被锁死。

Example #1 pg_connection_busy() 例子

<?php
    $dbconn = pg_connect("dbname=publisher") or die("Could not connect");
    $bs = pg_connection_busy($dbconn);
    if ($bs) {
        echo 'connection is busy';
    }
    else {
       echo 'connection is not busy';
    }
?>

参见 pg_connection_status() 和 pg_get_result()。

pg_connect
pg_connection_reset
PostgreSQL 函数


重置连接（再次连接）

pg_connection_busy
pg_connection_status
PostgreSQL 函数
PHP Manual

pg_connection_reset

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_connection_reset — 重置连接（再次连接）

说明

bool pg_connection_reset ( resource $connection )

pg_connection_reset() 重置一个连接，用于错误恢复。

参数

connection

PostgreSQL database connection resource.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 pg_connection_reset() 例子

<?php
  $dbconn = pg_connect("dbname=publisher") or die("Could not connect");
  $dbconn2 = pg_connection_reset($dbconn);
  if ($dbconn2) {
      echo "reset successful\n";
  } else {
      echo "reset failed\n";
  }
?>

参见

  • pg_connect() - 打开一个 PostgreSQL 连接
  • pg_pconnect() - 打开一个持久的 PostgreSQL 连接
  • pg_connection_status() - 获得连接状态

pg_connection_busy
pg_connection_status
PostgreSQL 函数


获得连接状态

pg_connection_reset
pg_consume_input
PostgreSQL 函数
PHP Manual

pg_connection_status

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_connection_status — 获得连接状态

说明

int pg_connection_status ( resource $connection )

pg_connection_status() 返回一个连接的状态。可能的状态为 PGSQL_CONNECTION_OK 和 PGSQL_CONNECTION_BAD。

Example #1 pg_connection_status() 例子

<?php
    $dbconn = pg_connect("dbname=publisher") or die("Could not connect");
    $stat = pg_connection_status($dbconn);
    echo 'connection_status: '.$stat;
?>

Example #2 pg_connection_status() 例子

<?php
    $dbconn = pg_connect("dbname=publisher") or die("Could not connect");
    $stat = pg_connection_status($dbconn);
    echo 'connection_status: '.$stat;
?>

参见 pg_connection_busy()。

pg_connection_reset
pg_consume_input
PostgreSQL 函数


Reads input on the connection

pg_connection_status
pg_convert
PostgreSQL 函数
PHP Manual

pg_consume_input

(PHP 5 >= 5.6.0, PHP 7)

pg_consume_input — Reads input on the connection

说明

bool pg_consume_input ( resource $connection )

pg_consume_input() consumes any input waiting to be read from the database server.

参数

connection

PostgreSQL database connection resource.

返回值

TRUE if no error occurred, or FALSE if there was an error. Note that TRUE does not necessarily indicate that input was waiting to be read.

pg_connection_status
pg_convert
PostgreSQL 函数


将关联的数组值转换为适合 SQL 语句的格式。

pg_consume_input
pg_copy_from
PostgreSQL 函数
PHP Manual

pg_convert

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

pg_convert — 将关联的数组值转换为适合 SQL 语句的格式。

说明

array pg_convert ( resource $connection , string $table_name , array $assoc_array [, int $options = 0 ] )

pg_convert() 检查 assoc_array 中的值并将其转换为为适用于 SQL 语句的值。pg_convert() 的前提条件是现有的表 table_name 中具有的列至少有 assoc_array 中的单元那么多。table_name 中的字段名以及字段值必须和 assoc_array 中的键名及值匹配。如果成功则返回一个包括转换后的值的数组，否则返回 FALSE。

Note:

If there are boolean fields in table_name don't use the constant TRUE in assoc_array. It will be converted to the string 'TRUE' which is no valid entry for boolean fields in PostgreSQL. Use one of t, true, 1, y, yes instead.

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

connection

PostgreSQL database connection resource.

table_name

Name of the table against which to convert types.

assoc_array

Data to be converted.

options

Any number of PGSQL_CONV_IGNORE_DEFAULT, PGSQL_CONV_FORCE_NULL or PGSQL_CONV_IGNORE_NOT_NULL, combined.

返回值

An array of converted values, or FALSE on error.

范例

Example #1 pg_convert() example

<?php
  $dbconn = pg_connect('dbname=foo');

  $tmp = array(
      'author' => 'Joe Thackery',
      'year' => 2005,
      'title' => 'My Life, by Joe Thackery'
  );

  $vals = pg_convert($dbconn, 'authors', $tmp);
?>

参见

  • pg_meta_data() - 获得表的元数据

pg_consume_input
pg_copy_from
PostgreSQL 函数


根据数组将记录插入表中

pg_convert
pg_copy_to
PostgreSQL 函数
PHP Manual

pg_copy_from

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_copy_from — 根据数组将记录插入表中

说明

bool pg_copy_from ( resource $connection , string $table_name , array $rows [, string $delimiter [, string $null_as ]] )

pg_copy_from() 将数组 rows 的内容作为记录插入表中。它在内部使用了 COPY FROM SQL 命令来插入记录。

参数

connection

PostgreSQL database connection resource.

table_name

Name of the table into which to copy the rows.

rows

An array of data to be copied into table_name. Each value in rows becomes a row in table_name. Each value in rows should be a delimited string of the values to insert into each field. Values should be linefeed terminated.

delimiter

The token that separates values for each field in each element of rows. Default is TAB.

null_as

How SQL NULL values are represented in the rows. Default is \N ("\N").

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 pg_copy_from() example

<?php
   $db = pg_connect("dbname=publisher") or die("Could not connect");

   $rows = pg_copy_to($db, $table_name);

   pg_query($db, "DELETE FROM $table_name");

   pg_copy_from($db, $table_name, $rows);
?>

参见

  • pg_copy_to() - 将一个表拷贝到数组中

pg_convert
pg_copy_to
PostgreSQL 函数


将一个表拷贝到数组中

pg_copy_from
pg_dbname
PostgreSQL 函数
PHP Manual

pg_copy_to

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_copy_to — 将一个表拷贝到数组中

说明

array pg_copy_to ( resource $connection , string $table_name [, string $delimiter [, string $null_as ]] )

pg_copy_to() 将一个表拷贝到数组中，该数组作为结果返回。它在内部使用了 COPY FROM SQL 命令来插入记录，并返回结果数组。如果失败则返回 FALSE。

参见 pg_copy_from()。

pg_copy_from
pg_dbname
PostgreSQL 函数


获得数据库名

pg_copy_to
pg_delete
PostgreSQL 函数
PHP Manual

pg_dbname

(PHP 4, PHP 5, PHP 7)

pg_dbname — 获得数据库名

说明

string pg_dbname ( resource $connection )

pg_dbname() 返回给定 PostgreSQL connection 资源的数据库名称。如果 connection 不是有效的 PostgreSQL 连接资源则返回 FALSE。

Example #1 pg_dbname() 例子

<?php
    error_reporting(E_ALL);

    pg_connect("host=localhost port=5432 dbname=mary");
    echo pg_dbname(); // mary
?>

pg_copy_to
pg_delete
PostgreSQL 函数


删除记录

pg_dbname
pg_end_copy
PostgreSQL 函数
PHP Manual

pg_delete

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

pg_delete — 删除记录

说明

mixed pg_delete ( resource $connection , string $table_name , array $assoc_array [, int $options = PGSQL_DML_EXEC ] )

pg_delete() 删除符合条件的记录，条件在 assoc_array 中以 field=>value 格式给出。如果指定了 option，则 pg_convert() 按照该选项作用于 assoc_array 之上。

参数

connection

PostgreSQL database connection resource.

table_name

Name of the table from which to delete rows.

assoc_array

An array whose keys are field names in the table table_name, and whose values are the values of those fields that are to be deleted.

options

Any number of PGSQL_CONV_FORCE_NULL, PGSQL_DML_NO_CONV, PGSQL_DML_EXEC or PGSQL_DML_STRING combined. If PGSQL_DML_STRING is part of the options then query string is returned.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 Returns string if PGSQL_DML_STRING is passed via options.

范例

Example #1 pg_delete() 例子

<?php
  $db = pg_connect('dbname=foo');
  // This is safe, since $_POST is converted automatically
  $res = pg_delete($db, 'post_log', $_POST);
  if ($res) {
      echo "POST data is deleted: $res\n";
  } else {
      echo "User must have sent wrong inputs\n";
  }
?>

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • pg_convert() - 将关联的数组值转换为适合 SQL 语句的格式。

pg_dbname
pg_end_copy
PostgreSQL 函数


与 PostgreSQL 后端同步

pg_delete
pg_escape_bytea
PostgreSQL 函数
PHP Manual

pg_end_copy

(PHP 4 >= 4.0.3, PHP 5, PHP 7)

pg_end_copy — 与 PostgreSQL 后端同步

说明

bool pg_end_copy ([ resource $connection ] )

pg_end_copy() 在处理完 pg_put_line() 所执行的拷贝操作之后将 PostgreSQL 前端（通常为 web server 进程）与 PostgreSQL 服务器进行同步。pg_end_copy() 必须被调用，否则 PostgreSQL 服务器可能会和前端失去同步并报错。

参数

connection

PostgreSQL database connection resource. When connection is not present, the default connection is used. The default connection is the last connection made by pg_connect() or pg_pconnect().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 pg_end_copy() 例子

<?php
  $conn = pg_pconnect("dbname=foo");
  pg_query($conn, "create table bar (a int4, b char(16), d float8)");
  pg_query($conn, "copy bar from stdin");
  pg_put_line($conn, "3\thello world\t4.5\n");
  pg_put_line($conn, "4\tgoodbye world\t7.11\n");
  pg_put_line($conn, "\.\n");
  pg_end_copy($conn);
?>

参见

  • pg_put_line() - 向 PostgreSQL 后端发送以 NULL 结尾的字符串

pg_delete
pg_escape_bytea
PostgreSQL 函数


转义 bytea 类型的二进制数据

pg_end_copy
pg_escape_identifier
PostgreSQL 函数
PHP Manual

pg_escape_bytea

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_escape_bytea — 转义 bytea 类型的二进制数据

说明

string pg_escape_bytea ( string $data )

pg_escape_bytea() 转义 bytea 数据类型的二进制字符串，返回转义后的字符串。

Note:

当对 bytea 类型字段进行 SELECT 操作时，PostgreSQL 返回前导 \ 的八进制字节值（例如 \032）。用户需要自己将结果转换为二进制格式。

本函数需要 PostgreSQL 7.2 或以上版本。在 PostgreSQL 7.2.0 和 7.2.1 版中，如果使用了多字节支持，bytea 类型必须被强制转换。例如 INSERT INTO test_table (image) VALUES ('$image_escaped'::bytea);。PostgreSQL 7.2.2 或以上版本不需要强制转换。异常情况是当客户端和后端字符编码不匹配时，可能会有多字节流错误。用户必须强制转换 bytea 以避免此错误。

参见 pg_unescape_bytea() 和 pg_escape_string()。

pg_end_copy
pg_escape_identifier
PostgreSQL 函数


Escape a identifier for insertion into a text field

pg_escape_bytea
pg_escape_literal
PostgreSQL 函数
PHP Manual

pg_escape_identifier

(PHP 5 >= 5.4.4, PHP 7)

pg_escape_identifier — Escape a identifier for insertion into a text field

说明

string pg_escape_identifier ([ resource $connection ], string $data )

pg_escape_identifier() escapes a identifier (e.g. table, field names) for quering the database. It returns an escaped identifier string for PostgreSQL server. pg_escape_identifier() adds double quotes before and after data. Users should not add double quotes. Use of this function is recommended for identifier parameters in query. For SQL literals (i.e. parameters except bytea), pg_escape_literal() or pg_escape_string() must be used. For bytea type fields, pg_escape_bytea() must be used instead.

Note:

This function has internal escape code and can also be used with PostgreSQL 8.4 or less.

参数

connection

PostgreSQL database connection resource. When connection is not present, the default connection is used. The default connection is the last connection made by pg_connect() or pg_pconnect().

data

A string containing text to be escaped.

返回值

A string containing the escaped data.

范例

Example #1 pg_escape_identifier() example

<?php
  // Connect to the database
  $dbconn = pg_connect('dbname=foo');

  // Escape the table name data
  $escaped = pg_escape_identifier($table_name);

  // Select rows from $table_name
  pg_query("SELECT * FROM {$escaped};");
?>

参见

  • pg_escape_literal() - Escape a literal for insertion into a text field
  • pg_escape_bytea() - 转义 bytea 类型的二进制数据
  • pg_escape_string() - 转义 text/char 类型的字符串

pg_escape_bytea
pg_escape_literal
PostgreSQL 函数


Escape a literal for insertion into a text field

pg_escape_identifier
pg_escape_string
PostgreSQL 函数
PHP Manual

pg_escape_literal

(PHP 5 >= 5.4.4, PHP 7)

pg_escape_literal — Escape a literal for insertion into a text field

说明

string pg_escape_literal ([ resource $connection ], string $data )

pg_escape_literal() escapes a literal for querying the PostgreSQL database. It returns an escaped literal in the PostgreSQL format. pg_escape_literal() adds quotes before and after data. Users should not add quotes. Use of this function is recommended instead of pg_escape_string(). If the type of the column is bytea, pg_escape_bytea() must be used instead. For escaping identifiers (e.g. table, field names), pg_escape_identifier() must be used.

Note:

This function has internal escape code and can also be used with PostgreSQL 8.4 or less.

参数

connection

PostgreSQL database connection resource. When connection is not present, the default connection is used. The default connection is the last connection made by pg_connect() or pg_pconnect(). When there is no default connection, it raises E_WARNING and returns FALSE.

data

A string containing text to be escaped.

返回值

A string containing the escaped data.

范例

Example #1 pg_escape_literal() example

<?php
  // Connect to the database
  $dbconn = pg_connect('dbname=foo');

  // Read in a text file (containing apostrophes and backslashes)
  $data = file_get_contents('letter.txt');

  // Escape the text data
  $escaped = pg_escape_literal($data);

  // Insert it into the database. Note that no quotes around {$escaped}
  pg_query("INSERT INTO correspondence (name, data) VALUES ('My letter', {$escaped})");
?>

参见

  • pg_escape_identifier() - Escape a identifier for insertion into a text field
  • pg_escape_bytea() - 转义 bytea 类型的二进制数据
  • pg_escape_string() - 转义 text/char 类型的字符串

pg_escape_identifier
pg_escape_string
PostgreSQL 函数


转义 text/char 类型的字符串

pg_escape_literal
pg_execute
PostgreSQL 函数
PHP Manual

pg_escape_string

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_escape_string — 转义 text/char 类型的字符串

说明

string pg_escape_string ( string $data )

pg_escape_string() 转义 text/char 数据类型的字符串，返回转义后的字符串。建议用此函数替代 addslashes()。

Note:

本函数需要 PostgreSQL 7.2 或以上版本。

参见 pg_escape_bytea()。

pg_escape_literal
pg_execute
PostgreSQL 函数


Sends a request to execute a prepared statement with given parameters, and waits for the result.

pg_escape_string
pg_fetch_all_columns
PostgreSQL 函数
PHP Manual

pg_execute

(PHP 5 >= 5.1.0, PHP 7)

pg_execute — Sends a request to execute a prepared statement with given parameters, and waits for the result.

说明

resource pg_execute ([ resource $connection ], string $stmtname , array $params )

Sends a request to execute a prepared statement with given parameters, and waits for the result.

pg_execute() is like pg_query_params(), but the command to be executed is specified by naming a previously-prepared statement, instead of giving a query string. This feature allows commands that will be used repeatedly to be parsed and planned just once, rather than each time they are executed. The statement must have been prepared previously in the current session. pg_execute() is supported only against PostgreSQL 7.4 or higher connections; it will fail when using earlier versions.

The parameters are identical to pg_query_params(), except that the name of a prepared statement is given instead of a query string.

参数

connection

PostgreSQL database connection resource. When connection is not present, the default connection is used. The default connection is the last connection made by pg_connect() or pg_pconnect().

stmtname

The name of the prepared statement to execute. if "" is specified, then the unnamed statement is executed. The name must have been previously prepared using pg_prepare(), pg_send_prepare() or a PREPARE SQL command.

params

An array of parameter values to substitute for the $1, $2, etc. placeholders in the original prepared query string. The number of elements in the array must match the number of placeholders.

Warning

Elements are converted to strings by calling this function.

返回值

A query result resource on success 或者在失败时返回 FALSE.

范例

Example #1 Using pg_execute()

<?php
// Connect to a database named "mary"
$dbconn = pg_connect("dbname=mary");

// Prepare a query for execution
$result = pg_prepare($dbconn, "my_query", 'SELECT * FROM shops WHERE name = $1');

// Execute the prepared query.  Note that it is not necessary to escape
// the string "Joe's Widgets" in any way
$result = pg_execute($dbconn, "my_query", array("Joe's Widgets"));

// Execute the same prepared query, this time with a different parameter
$result = pg_execute($dbconn, "my_query", array("Clothes Clothes Clothes"));

?>

参见

  • pg_prepare() - Submits a request to create a prepared statement with the given parameters, and waits for completion.
  • pg_send_prepare() - Sends a request to create a prepared statement with the given parameters, without waiting for completion.
  • pg_query_params() - Submits a command to the server and waits for the result, with the ability to pass parameters separately from the SQL command text.

pg_escape_string
pg_fetch_all_columns
PostgreSQL 函数


Fetches all rows in a particular result column as an array

pg_execute
pg_fetch_all
PostgreSQL 函数
PHP Manual

pg_fetch_all_columns

(PHP 5 >= 5.1.0, PHP 7)

pg_fetch_all_columns — Fetches all rows in a particular result column as an array

说明

array pg_fetch_all_columns ( resource $result [, int $column = 0 ] )

pg_fetch_all_columns() returns an array that contains all rows (records) in a particular column of the result resource.

Note: 此函数将 NULL 字段设置为 PHP NULL 值。

参数

result

PostgreSQL query result resource, returned by pg_query(), pg_query_params() or pg_execute() (among others).

column

Column number, zero-based, to be retrieved from the result resource. Defaults to the first column if not specified.

返回值

An array with all values in the result column.

FALSE is returned if column is larger than the number of columns in the result, or on any other error.

范例

Example #1 pg_fetch_all_columns() example

<?php
$conn = pg_pconnect("dbname=publisher");
if (!$conn) {
  echo "An error occurred.\n";
  exit;
}

$result = pg_query($conn, "SELECT title, name, address FROM authors");
if (!$result) {
  echo "An error occurred.\n";
  exit;
}

// Get an array of all author names
$arr = pg_fetch_all_columns($result, 1);

var_dump($arr);

?>

参见

  • pg_fetch_all() - 从结果中提取所有行作为一个数组

pg_execute
pg_fetch_all
PostgreSQL 函数


从结果中提取所有行作为一个数组

pg_fetch_all_columns
pg_fetch_array
PostgreSQL 函数
PHP Manual

pg_fetch_all

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

pg_fetch_all — 从结果中提取所有行作为一个数组

说明

array pg_fetch_all ( resource $result )

pg_fetch_all() 从结果资源中返回一个包含有所有的行（元组/记录）的数组。如果没有更多行可供提取，则返回 FALSE。

Example #1 pg_fetch_all() 例子

<?php
$conn = pg_pconnect("dbname=publisher");
if (!$conn) {
    echo "An error occured.\n";
    exit;
}
$result = pg_query($conn, "SELECT * FROM authors");
if (!$result) {
    echo "An error occured.\n";
    exit;
}
$arr = pg_fetch_all($result);
var_dump($arr);
?>

参见 pg_fetch_row()，pg_fetch_array()，pg_fetch_object() 和 pg_fetch_result()。

pg_fetch_all_columns
pg_fetch_array
PostgreSQL 函数


提取一行作为数组

pg_fetch_all
pg_fetch_assoc
PostgreSQL 函数
PHP Manual

pg_fetch_array

(PHP 4, PHP 5, PHP 7)

pg_fetch_array — 提取一行作为数组

说明

array pg_fetch_array ( resource $result [, int $row [, int $result_type ]] )

pg_fetch_array() 返回一个与所提取的行（元组/记录）相一致的数组。如果没有更多行可供提取，则返回 FALSE。

pg_fetch_array() 是 pg_fetch_row() 的扩展版本。在返回的数组中不仅以数字索引方式存放数据（字段编号），默认情况下还用字段名做索引存放数据（字段名）。

row 是想要取得的行（记录）的编号。第一行为 0。

result_type 是可选参数，控制着怎样初始化返回值。result_type 是一个常量，可以有以下取值：PGSQL_ASSOC，PGSQL_NUM 和 PGSQL_BOTH。取值为 PGSQL_ASSOC 时 pg_fetch_array() 返回用字段名作为键值索引的关联数组，取值为 PGSQL_NUM 时用字段编号作为键值，取值为 PGSQL_BOTH 时则同时用两者作为键值。默认值是 PGSQL_BOTH。

Note:

result_type 是在 PHP 4.0 中才加入的参数。

pg_fetch_array() 并不明显比使用 pg_fetch_row() 慢，而且在使用中提供了更大的方便。

Example #1 pg_fetch_array()

<?php

$conn = pg_pconnect("dbname=publisher");
if (!$conn) {
    echo "An error occured.\n";
    exit;
}

$result = pg_query($conn, "SELECT * FROM authors");
if (!$result) {
    echo "An error occured.\n";
    exit;
}

$arr = pg_fetch_array($result, 0, PGSQL_NUM);
echo $arr[0] . " <- array\n";

$arr = pg_fetch_array($result, 1, PGSQL_ASSOC);
echo $arr["author"] . " <- array\n";

?>

Note:

从 4.1.0 开始，row 成为可选参数。每次调用 pg_fetch_array()，内部的行计数器都会加一。

参见 pg_fetch_row() 和 pg_fetch_object() 以及 pg_fetch_result()。

pg_fetch_all
pg_fetch_assoc
PostgreSQL 函数


提取一行作为关联数组

pg_fetch_array
pg_fetch_object
PostgreSQL 函数
PHP Manual

pg_fetch_assoc

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

pg_fetch_assoc — 提取一行作为关联数组

说明

array pg_fetch_assoc ( resource $result [, int $row ] )

pg_fetch_assoc() 和调用 pg_fetch_array() 加上第三个可选参数 PGSQL_ASSOC 是等价的。它只返回一个关联数组。如果需要数字索引，用 pg_fetch_row()。

pg_fetch_assoc() 是 pg_fetch_row() 的扩展版本。除了将数据存储在数字索引（字段编号）之外，默认还将数组存储在关联索引（字段名）中。

row 是要被提取的行（记录）编号。第一行为 0。

pg_fetch_assoc() 并不明显比 pg_fetch_row() 慢，而且还显著更便于使用。

Example #1 pg_fetch_assoc() 例子

<?php
$conn = pg_pconnect("dbname=publisher");
if (!$conn) {
    echo "An error occured.\n";
    exit;
}

$result = pg_query($conn, "SELECT id, author, email FROM authors");
if (!$result) {
    echo "An error occured.\n";
    exit;
}
while ($row = pg_fetch_assoc($result)) {
    echo $row['id'];
    echo $row['author'];
    echo $row['email'];
}
?>

参见 pg_fetch_row()，pg_fetch_array()，pg_fetch_object() 和 pg_fetch_result()。

pg_fetch_array
pg_fetch_object
PostgreSQL 函数


提取一行作为对象

pg_fetch_assoc
pg_fetch_result
PostgreSQL 函数
PHP Manual

pg_fetch_object

(PHP 4, PHP 5, PHP 7)

pg_fetch_object — 提取一行作为对象

说明

object pg_fetch_object ( resource $result [, int $row [, int $result_type ]] )

pg_fetch_object() 返回与所提取行的属性相一致的一个对象。如果出错或者没有更多行可供提取时则返回 FALSE。

pg_fetch_object() 和 pg_fetch_array() 相似，只有一点区别 － 返回一个对象而不是数组。间接的，这意味着只能通过字段名来访问数据而不能通过偏移量来访问（数字是非法的属性名）。

row 是想要取得的行（记录）的编号。第一行为 0。

除了速度之外，本函数和 pg_fetch_array() 完全一样，而且几乎和 pg_fetch_row() 一样快（速度上的差别很小）。

Note:

从 4.1.0 版本开始，参数 row 变为可选参数。

从 4.3.0 开始，result_type 默认值为 PGSQL_ASSOC，而旧版本的默认值是 PGSQL_BOTH。数字属性在这里没有用处，因为在 PHP 中对象的属性不能是数字。

result_type 参数在以后的版本中可能会删除。

Example #1 pg_fetch_object()

<?php

$database = "store";

$db_conn = pg_connect("host=localhost port=5432 dbname=$database");
if (!$db_conn) {
    echo "Failed connecting to postgres database $database\n";
    exit;
}

$qu = pg_query($db_conn, "SELECT * FROM books ORDER BY author");

$row = 0; // postgres needs a row counter

while ($data = pg_fetch_object($qu, $row)) {
    echo $data->author . " (";
    echo $data->year . "): ";
    echo $data->title . "<br />";
    $row++;
}

pg_free_result ($qu);
pg_close ($db_conn);

?>

Note:

从 4.1.0 开始，row 成为可选参数。每次调用 pg_fetch_object()，内部的行计数器都会加一。

参见 pg_query()，pg_fetch_array()，pg_fetch_row() 和 pg_fetch_result()。

pg_fetch_assoc
pg_fetch_result
PostgreSQL 函数


从结果资源中返回值

pg_fetch_object
pg_fetch_row
PostgreSQL 函数
PHP Manual

pg_fetch_result

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_fetch_result — 从结果资源中返回值

说明

mixed pg_fetch_result ( resource $result , int $row , mixed $field )

pg_fetch_result() 根据由 pg_query() 返回的 result 资源返回相应的值。row 为整型数。field 为字段名（字符串）或字段索引（整数）。row 和 field 指明了查询结果中的哪个单元被返回。行编号从 0 开始。除了用字段名之外，还可以用不带引号的数字作为字段索引。字段索引从 0 开始。

PostgreSQL 有很多内置的类型，这里只直接支持基本类型。所有形式的 integer，boolean 和 void 类型都被返回为 integer 值。所有形式的 float 和 real 类型都被返回为 float 值。Boolean 类型被返回为 "t" 或者 "f"。所有其它类型包括数组都被返回为字符串，该字符串的格式和默认的 PostgreSQL 风格一样，可以在 psql 程序中看到。

pg_fetch_object
pg_fetch_row
PostgreSQL 函数


提取一行作为枚举数组

pg_fetch_result
pg_field_is_null
PostgreSQL 函数
PHP Manual

pg_fetch_row

(PHP 4, PHP 5, PHP 7)

pg_fetch_row — 提取一行作为枚举数组

说明

array pg_fetch_row ( resource $result [, int $row ] )

pg_fetch_row() 根据指定的 result 资源提取一行数据（记录）作为数组返回。每个得到的列依次存放在数组中，从偏移量 0 开始。

Note: 此函数将 NULL 字段设置为 PHP NULL 值。

参数

result

PostgreSQL query result resource, returned by pg_query(), pg_query_params() or pg_execute() (among others).

row

Row number in result to fetch. Rows are numbered from 0 upwards. If omitted or NULL, the next row is fetched.

返回值

An array, indexed from 0 upwards, with each value represented as a string. Database NULL values are returned as NULL.

返回的数组和提取的行相一致。如果没有更多行 row 可提取，则返回 FALSE。

更新日志

版本 | 说明
4.1.0 | 参数 row 成为可选参数。

范例

Example #1 pg_fetch_row() 例子

<?php

$conn = pg_pconnect("dbname=publisher");
if (!$conn) {
  echo "An error occured.\n";
  exit;
}

$result = pg_query($conn, "SELECT author, email FROM authors");
if (!$result) {
  echo "An error occured.\n";
  exit;
}

while ($row = pg_fetch_row($result)) {
  echo "Author: $row[0]  E-mail: $row[1]";
  echo "<br />\n";
}

?>

参见

  • pg_query() - 执行查询
  • pg_fetch_array() - 提取一行作为数组
  • pg_fetch_object() - 提取一行作为对象
  • pg_fetch_result() - 从结果资源中返回值

pg_fetch_result
pg_field_is_null
PostgreSQL 函数


测试字段是否为 NULL

pg_fetch_row
pg_field_name
PostgreSQL 函数
PHP Manual

pg_field_is_null

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_field_is_null — 测试字段是否为 NULL

说明

int pg_field_is_null ( resource $result , int $row , mixed $field )

pg_field_is_null() 测试字段是否为 NULL。如果字段在给出的行中为 NULL 则返回 1，如果字段在给出的行中不是 NULL 则返回 0。字段可以以列的索引号（数字）方式给出，也可以以字段名（字符串）方式给出。行的编号从 0 开始。

Example #1 pg_field_is_null() 例子

<?php
    $dbconn = pg_connect("dbname=publisher") or die ("Could not connect");
    $res = pg_query($dbconn, "select * from authors where author = 'Orwell'");
    if ($res) {
        if (pg_field_is_null($res, 0, "year") == 1) {
            echo "The value of the field year is null.\n";
        }
        if (pg_field_is_null($res, 0, "year") == 0) {
            echo "The value of the field year is not null.\n";
      }
   }
?>

Note:

本函数以前的名字为 pg_fieldisnull()。

pg_fetch_row
pg_field_name
PostgreSQL 函数


返回字段的名字

pg_field_is_null
pg_field_num
PostgreSQL 函数
PHP Manual

pg_field_name

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_field_name — 返回字段的名字

说明

string pg_field_name ( resource $result , int $field_number )

pg_field_name() 返回给定 PostgreSQL result 资源中的 field_number 所代表的字段名。字段编号从 0 开始。

Example #1 获取字段信息

<?php
    $dbconn = pg_connect("dbname=publisher") or die("Could not connect");
    $res = pg_query($dbconn, "select * from authors where author = 'Orwell'");
    $i = pg_num_fields($res);
    for ($j = 0; $j < $i; $j++) {
        echo "column $j\n";
        $fieldname = pg_field_name($res, $j);
        echo "fieldname: $fieldname\n";
        echo "printed length: ".pg_field_prtlen($res, $fieldname)." characters\n";
        echo "storage length: ".pg_field_size($res, $j)." bytes\n";
        echo "field type: ".pg_field_type($res, $j)." \n\n";
}
?>

上例的输出如下：

column 0
fieldname: author
printed length: 6 characters
storage length: -1 bytes
field type: varchar

column 1
fieldname: year
printed length: 4 characters
storage length: 2 bytes
field type: int2

column 2
fieldname: title
printed length: 24 characters
storage length: -1 bytes
field type: varchar

Note:

本函数以前的名字为 pg_fieldname()。

参见 pg_field_num()。

pg_field_is_null
pg_field_num
PostgreSQL 函数


返回字段的编号

pg_field_name
pg_field_prtlen
PostgreSQL 函数
PHP Manual

pg_field_num

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_field_num — 返回字段的编号

说明

int pg_field_num ( resource $result , string $field_name )

pg_field_num() 返回给定 PostgreSQL result 资源中的 field_name 所代表的列（字段）的编号。字段编号从 0 开始。如果出错本函数返回 -1。

例子参见 pg_field_name() 页。

Note:

本函数以前的名字为 pg_fieldnum()。

参见 pg_field_name()。

pg_field_name
pg_field_prtlen
PostgreSQL 函数


返回打印出来的长度

pg_field_num
pg_field_size
PostgreSQL 函数
PHP Manual

pg_field_prtlen

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_field_prtlen — 返回打印出来的长度

说明

int pg_field_prtlen ( resource $result , int $row_number , string $field_name )

pg_field_prtlen() 返回 PostgreSQL result 中得到的值实际上打印出来的长度（字符数）。行编号从 0 开始。如果出错本函数返回 -1。

例子参见 pg_field_name() 页。

Note:

本函数以前的名字为 pg_field_prtlen()。

参见 pg_field_size()。

pg_field_num
pg_field_size
PostgreSQL 函数


返回指定字段占用内部存储空间的大小

pg_field_prtlen
pg_field_table
PostgreSQL 函数
PHP Manual

pg_field_size

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_field_size — 返回指定字段占用内部存储空间的大小

说明

int pg_field_size ( resource $result , int $field_number )

pg_field_size() 返回 PostgreSQL result 中指定字段占用内部存储空间的大小（字节数）。字段编号从 0 开始。字段大小为 -1 表示可变长度字段。如果出错本函数返回 FALSE。

参考 pg_field_name() 页面中的例子。

Note:

本函数以前的名字为 pg_fieldsize()。

参见 pg_field_prtlen() 和 pg_field_type()。

pg_field_prtlen
pg_field_table
PostgreSQL 函数


Returns the name or oid of the tables field

pg_field_size
pg_field_type_oid
PostgreSQL 函数
PHP Manual

pg_field_table

(PHP 5 >= 5.2.0, PHP 7)

pg_field_table — Returns the name or oid of the tables field

说明

mixed pg_field_table ( resource $result , int $field_number [, bool $oid_only = false ] )

pg_field_table() returns the name of the table that field belongs to, or the table's oid if oid_only is TRUE.

参数

result

PostgreSQL query result resource, returned by pg_query(), pg_query_params() or pg_execute() (among others).

field_number

Field number, starting from 0.

oid_only

By default the tables name that field belongs to is returned but if oid_only is set to TRUE, then the oid will instead be returned.

返回值

On success either the fields table name or oid. Or, FALSE on failure.

范例

Example #1 Getting table information about a field

<?php
$dbconn = pg_connect("dbname=publisher") or die("Could not connect");

$res = pg_query($dbconn, "SELECT bar FROM foo");

echo pg_field_table($res, 0);
echo pg_field_table($res, 0, true);

$res = pg_query($dbconn, "SELECT version()");
var_dump(pg_field_table($res, 0));
?>

以上例程的输出类似于：

foo
14379580

bool(false)

注释

Note:

Returning the oid is much faster than returning the table name because fetching the table name requires a query to the database system table.

参见

  • pg_field_name() - 返回字段的名字
  • pg_field_type() - 返回相应字段的类型名称

pg_field_size
pg_field_type_oid
PostgreSQL 函数


Returns the type ID (OID) for the corresponding field number

pg_field_table
pg_field_type
PostgreSQL 函数
PHP Manual

pg_field_type_oid

(PHP 5 >= 5.1.0, PHP 7)

pg_field_type_oid — Returns the type ID (OID) for the corresponding field number

说明

int pg_field_type_oid ( resource $result , int $field_number )

pg_field_type_oid() returns an integer containing the OID of the base type of the given field_number in the given PostgreSQL result resource.

You can get more information about the field type by querying PostgreSQL's pg_type system table using the OID obtained with this function. The PostgreSQL format_type() function will convert a type OID into an SQL standard type name.

Note:

If the field uses a PostgreSQL domain (rather than a basic type), it is the OID of the domain's underlying type that is returned, rather than the OID of the domain itself.

参数

result

PostgreSQL query result resource, returned by pg_query(), pg_query_params() or pg_execute() (among others).

field_number

Field number, starting from 0.

返回值

The OID of the field's base type. FALSE is returned on error.

范例

Example #1 Getting information about fields

<?php
  $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

  // Assume 'title' is a varchar type
  $res = pg_query($dbconn, "select title from authors where author = 'Orwell'");

  echo "Title field type OID: ", pg_field_type_oid($res, 0);
?>

以上例程会输出：

Title field type OID: 1043

参见

  • pg_field_type() - 返回相应字段的类型名称
  • pg_field_prtlen() - 返回打印出来的长度
  • pg_field_name() - 返回字段的名字

pg_field_table
pg_field_type
PostgreSQL 函数


返回相应字段的类型名称

pg_field_type_oid
pg_flush
PostgreSQL 函数
PHP Manual

pg_field_type

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_field_type — 返回相应字段的类型名称

说明

string pg_field_type ( resource $result , int $field_number )

pg_field_type() 以字符串返回 PostgreSQL result 资源中指定 field_number 字段的类型。字段编号从 0 开始。

参考 pg_field_name() 页面中的例子。

Note:

本函数以前的名字为 pg_fieldtype()。

参见 pg_field_prtlen() 和 pg_field_name()。

pg_field_type_oid
pg_flush
PostgreSQL 函数


刷新链接中已处理的数据查询

pg_field_type
pg_free_result
PostgreSQL 函数
PHP Manual

pg_flush

(PHP 5 >= 5.6.0, PHP 7)

pg_flush — 刷新链接中已处理的数据查询

说明

mixed pg_flush ( resource $connection )

pg_flush() 刷新任何已经处理的等待发送到链接的数据查询。

参数

connection

PostgreSQL 数据库链接资源

返回值

如果刷新成功或者没有数据等待刷新返回 TRUE ， 如果返回 0 为部分刷新或者更多未被刷新,刷新失败为 FALSE

pg_field_type
pg_free_result
PostgreSQL 函数


释放查询结果占用的内存

pg_flush
pg_get_notify
PostgreSQL 函数
PHP Manual

pg_free_result

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_free_result — 释放查询结果占用的内存

说明

bool pg_free_result ( resource $result )

pg_free_result() 仅在当你担心脚本执行时占用了过多内存时调用。脚本执行完毕后所有的查询结果占用的内存都会被自动释放。不过如果你确认在脚本中不会再用到查询结果了，你可以用 result 作为参数调用 pg_free_result() 来释放有关的内存。成功时返回 TRUE， 或者在失败时返回 FALSE。

Note:

本函数以前的名字为 pg_freeresult()。

参见 pg_query()。

参数

result

PostgreSQL query result resource, returned by pg_query(), pg_query_params() or pg_execute() (among others).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 pg_free_result() example

<?php
$db = pg_connect("dbname=users user=me") || die();

$res = pg_query($db, "SELECT 1 UNION ALL SELECT 2");

$val = pg_fetch_result($res, 1, 0);

echo "First field in the second row is: ", $val, "\n";

pg_free_result($res);
?>

以上例程会输出：

First field in the second row is: 2

参见

  • pg_query() - 执行查询
  • pg_query_params() - Submits a command to the server and waits for the result, with the ability to pass parameters separately from the SQL command text.
  • pg_execute() - Sends a request to execute a prepared statement with given parameters, and waits for the result.

pg_flush
pg_get_notify
PostgreSQL 函数


Ping 数据库连接

pg_free_result
pg_get_pid
PostgreSQL 函数
PHP Manual

pg_get_notify

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

pg_get_notify — Ping 数据库连接

说明

array pg_get_notify ( resource $connection [, int $result_type ] )

pg_get_notify() 取得 SQL 命令 NOTIFY 发送的通告消息。要接收通告消息，必须发送 SQL 命令 LISTEN。如果连接中有通告消息，则数组包含消息名并且返回后端的 PID。如果没有消息则返回 FALSE。

参见 pg_get_pid()。

Example #1 PostgreSQL NOTIFY 消息

<?php
$conn = pg_pconnect("dbname=publisher");
if (!$conn) {
    echo "An error occured.\n";
    exit;
}

// Listen 'author_updated' message from other processes
pq_query($conn, 'LISTEN author_updated;');
$notify = pg_get_notify($conn);
if (!$notify)
    print("No messages\n");
else
    print_r($notify);
?>

pg_free_result
pg_get_pid
PostgreSQL 函数


Ping 数据库连接

pg_get_notify
pg_get_result
PostgreSQL 函数
PHP Manual

pg_get_pid

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

pg_get_pid — Ping 数据库连接

说明

int pg_get_pid ( resource $connection )

pg_get_pid() 取得后端（数据库服务器进程）的 PID。PID 用来检查其它进程是否发送了 NOTIFY 消息。

Example #1 PostgreSQL 后端 PID

<?php
$conn = pg_pconnect("dbname=publisher");
if (!$conn) {
    echo "An error occured.\n";
    exit;
}

// Backend process PID. Use PID with pg_get_notify()
$pid = pg_get_pid($conn);
?>

参见 pg_get_notify()。

pg_get_notify
pg_get_result
PostgreSQL 函数


取得异步查询结果

pg_get_pid
pg_host
PostgreSQL 函数
PHP Manual

pg_get_result

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_get_result — 取得异步查询结果

说明

resource pg_get_result ([ resource $connection ] )

pg_get_result() 取得执行 pg_send_query() 而得到的查询结果资源。pg_send_query() 可以向 PostgreSQL 发送多个查询， pg_get_result() 则用来逐个得到查询结果。返回值为查询结果资源号。如果没有更多查询结果，则返回 FALSE。

pg_get_pid
pg_host
PostgreSQL 函数


返回和某连接关联的主机名

pg_get_result
pg_insert
PostgreSQL 函数
PHP Manual

pg_host

(PHP 4, PHP 5, PHP 7)

pg_host — 返回和某连接关联的主机名

说明

string pg_host ( resource $connection )

pg_host() 返回指定的 PostgreSQL connection 资源号所连接到的主机名称。

参见 pg_connect() 和 pg_pconnect()。

pg_get_result
pg_insert
PostgreSQL 函数


将数组插入到表中

pg_host
pg_last_error
PostgreSQL 函数
PHP Manual

pg_insert

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

pg_insert — 将数组插入到表中

说明

mixed pg_insert ( resource $connection , string $table_name , array $assoc_array [, int $options = PGSQL_DML_EXEC ] )

pg_insert() 将 assoc_array 数组中的值插入到由 table_name 指定的表中。 如果给出了参数 options ，则函数 pg_convert() 会按照给定选项被作用到 assoc_array 上

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

connection

PostgreSQL database connection resource.

table_name

Name of the table into which to insert rows. table_name 中的列必须至少要有 assoc_array 中的单元那么多。

assoc_array

table_name 中的字段名以及字段值必须和 array 参数 中的键名及值匹配。

options

Any number of PGSQL_CONV_OPTS, PGSQL_DML_NO_CONV, PGSQL_DML_EXEC, PGSQL_DML_ASYNC or PGSQL_DML_STRING combined. If PGSQL_DML_STRING is part of the options then query string is returned.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 Returns string if PGSQL_DML_STRING is passed via options.

范例

Example #1 pg_insert() example

<?php
  $dbconn = pg_connect('dbname=foo');
  // This is safe, since $_POST is converted automatically
  $res = pg_insert($dbconn, 'post_log', $_POST);
  if ($res) {
      echo "POST data is successfully logged\n";
  } else {
      echo "User must have sent wrong inputs\n";
  }
?>

参见

  • pg_convert() - 将关联的数组值转换为适合 SQL 语句的格式。

pg_host
pg_last_error
PostgreSQL 函数


得到某连接的最后一条错误信息

pg_insert
pg_last_notice
PostgreSQL 函数
PHP Manual

pg_last_error

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_last_error — 得到某连接的最后一条错误信息

说明

string pg_last_error ([ resource $connection ] )

pg_last_error() 返回指定连接 connection 的最后一条错误信息。

错误信息可能会被 PostgreSQL(libpq) 的内部函数调用所覆盖。如果 PostgreSQL 的内部模块函数产生了多个错误，则可能不能返回适当的错误信息。

使用 pg_result_error()，pg_result_status() 和 pg_connection_status() 来取得更好的错误处理。

Note:

本函数以前的名字为 pg_errormessage()。

参见 pg_result_error()。

pg_insert
pg_last_notice
PostgreSQL 函数


返回 PostgreSQL 服务器最新一条公告信息

pg_last_error
pg_last_oid
PostgreSQL 函数
PHP Manual

pg_last_notice

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

pg_last_notice — 返回 PostgreSQL 服务器最新一条公告信息

说明

string pg_last_notice ( resource $connection )

pg_last_notice() 返回由 connection 指定的 PostgreSQL 服务器最新的一条公告信息。PostgreSQL 服务器在某些情况下会发送公告信息，例如在表里创建 SERIAL 列。

有了 pg_last_notice()，只要检查公告是否和该事务有关，就可以避免提交无用的查询。

可以通过在 php.ini 中把 pgsql.ignore_notice 置为 1 来使公告信息追踪成为可选项。

可以通过在 php.ini 中把 pgsql.log_notice 置为 0 来使公告信息日志成为可选项。 除非 pgsql.ignore_notice 为 0，否则公告信息不能被日志记录。

参数

connection

PostgreSQL database connection resource.

返回值

A string containing the last notice on the given connection, or FALSE on error.

更新日志

版本 | 说明
4.3.0 | 本函数在 PHP 4.3.0 中完全实现。低于 PHP 4.3.0 的版本中都忽略了数据库连接参数。
4.3.0 | The pgsql.ignore_notice and pgsql.log_notice php.ini directives were added.
4.0.6 | PHP 4.0.6 本身在公告信息处理上有问题。即使不使用 pg_last_notice() 函数，也不推荐在 PHP 4.0.6 中使用 PostgreSQL 模块。

范例

Example #1 pg_last_notice() example

<?php
  $pgsql_conn = pg_connect("dbname=mark host=localhost");

  $res = pg_query("CREATE TABLE test (id SERIAL)");

  $notice = pg_last_notice($pgsql_conn);

  echo $notice;
?>

以上例程会输出：

CREATE TABLE will create implicit sequence "test_id_seq" for "serial" column "test.id"

参见

  • pg_query() - 执行查询
  • pg_last_error() - 得到某连接的最后一条错误信息

pg_last_error
pg_last_oid
PostgreSQL 函数


返回上一个对象的 oid

pg_last_notice
pg_lo_close
PostgreSQL 函数
PHP Manual

pg_last_oid

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_last_oid — 返回上一个对象的 oid

说明

int pg_last_oid ( resource $result )

pg_last_oid() 在上一条通过 pg_query() 发送的命令是 SQL INSERT 的情况下用来取得分配给所插入记录的 oid。如果存在有效的 oid 则返回一个正整数，如果出错或者上一条通过 pg_query() 发送的命令不是 INSERT 或者该 INSERT 失败则返回 FALSE。

从 PostgreSQL 7.2 版开始 OID 字段成为可选项。如果一个表中没有定义 OID 字段，程序员必须用 pg_result_status() 函数来检查记录是否被成功插入。

Note:

本函数以前的名字为 pg_getlastoid()。

参见 pg_query() 和 pg_result_status()。

pg_last_notice
pg_lo_close
PostgreSQL 函数


关闭一个大型对象

pg_last_oid
pg_lo_create
PostgreSQL 函数
PHP Manual

pg_lo_close

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_lo_close — 关闭一个大型对象

说明

bool pg_lo_close ( resource $large_object )

pg_lo_close() 关闭一个大型对象。参数 large_object 是 pg_lo_open() 函数所返回的资源号。

要使用大型对象（lo）接口，需要将其放置在事务块中。

Note:

本函数以前的名字为 pg_loclose()。

参见 pg_lo_open()，pg_lo_create() 和 pg_lo_import()。

pg_last_oid
pg_lo_create
PostgreSQL 函数


新建一个大型对象

pg_lo_close
pg_lo_export
PostgreSQL 函数
PHP Manual

pg_lo_create

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_lo_create — 新建一个大型对象

说明

int pg_lo_create ( resource $connection )

pg_lo_create() 新建一个大型对象并返回该大型对象的 oid。connection 指定了由 pg_connect() 或 pg_pconnect() 打开的有效的数据库连接号。不支持 PostgreSQL 访问模式 INV_READ，INV_WRITE 和 INV_ARCHIVE，该对象总是以读写方式访问。INV_ARCHIVE 已经从 PostgreSQL 中删除了（6.3 及以上版本）。本函数返回大型对象的 oid，如果出错则返回 FALSE。

要使用大型对象（lo）接口，需要将其放置在事务块中。

Note:

本函数以前的名字为 pg_locreate()。

pg_lo_close
pg_lo_export
PostgreSQL 函数


将大型对象导出到文件

pg_lo_create
pg_lo_import
PostgreSQL 函数
PHP Manual

pg_lo_export

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_lo_export — 将大型对象导出到文件

说明

bool pg_lo_export ([ resource $connection ], int $oid , string $pathname )

pg_lo_export() takes a large object in a PostgreSQL database and saves its contents to a file on the local filesystem.

要使用大型对象（lo）接口，需要将其放置在事务块中。

Note:

本函数以前的名字为 pg_loexport()。

参数

connection

PostgreSQL database connection resource. When connection is not present, the default connection is used. The default connection is the last connection made by pg_connect() or pg_pconnect().

oid

要导出的数据库里的大型对象的 OID。

pathname

要导出的数据库里的大型对象的文件在客户端上完整路径和文件名。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 pg_lo_export() example

<?php
   $database = pg_connect("dbname=jacarta");
   pg_query($database, "begin");
   $oid = pg_lo_create($database);
   $handle = pg_lo_open($database, $oid, "w");
   pg_lo_write($handle, "large object data");
   pg_lo_close($handle);
   pg_lo_export($database, $oid, '/tmp/lob.dat');
   pg_query($database, "commit");
?>

参见

  • pg_lo_import() - 将文件导入为大型对象

pg_lo_create
pg_lo_import
PostgreSQL 函数


将文件导入为大型对象

pg_lo_export
pg_lo_open
PostgreSQL 函数
PHP Manual

pg_lo_import

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_lo_import — 将文件导入为大型对象

说明

int pg_lo_import ([ resource $connection ], string $pathname [, mixed $object_id ] )

pg_lo_import() creates a new large object in the database using a file on the filesystem as its data source.

要使用大型对象（lo）接口，需要将其放置在事务块中。

Note: 当启用 安全模式时， PHP 会检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。

Note:

本函数以前的名字为 pg_loimport()。

参数

connection

PostgreSQL database connection resource. When connection is not present, the default connection is used. The default connection is the last connection made by pg_connect() or pg_pconnect().

pathname

变量指明了要导入为大型对象的文件名。

object_id

If an object_id is given the function will try to create a large object with this id, else a free object id is assigned by the server. The parameter was added in PHP 5.3 and relies on functionality that first appeared in PostgreSQL 8.1.

返回值

导入成功则返回新建的大型对象的 OID，如果出错则返回 FALSE。

更新日志

版本 | 说明
5.3.0 | The optional object_id was added.
4.2.0 | 在 PHP 4.2.0 版本之前，本函数语法不一样，见如下定义： int pg_lo_import ( string $pathname [, resource $connection ] )

范例

Example #1 pg_lo_import() 例子

<?php
   $database = pg_connect("dbname=jacarta");
   pg_query($database, "begin");
   $oid = pg_lo_import($database, '/tmp/lob.dat');
   pg_query($database, "commit");
?>

参见

  • pg_lo_export() - 将大型对象导出到文件
  • pg_lo_open() - 打开一个大型对象

pg_lo_export
pg_lo_open
PostgreSQL 函数


打开一个大型对象

pg_lo_import
pg_lo_read_all
PostgreSQL 函数
PHP Manual

pg_lo_open

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_lo_open — 打开一个大型对象

说明

resource pg_lo_open ( resource $connection , int $oid , string $mode )

pg_lo_open() 打开一个大型对象并返回大型对象资源号。该资源号内封装了连接号。oid 指定了有效的大型对象的 oid，mode 可以为 "r"，"w" 或者 "rw"。如果失败则返回 FALSE。

Warning

在关闭大型对象资源之前不要关闭数据库连接。

要使用大型对象（lo）接口，需要将其放置在事务块中。

Note:

本函数以前的名字为 pg_loopen()。

参见 pg_lo_close() 和 pg_lo_create()。

pg_lo_import
pg_lo_read_all
PostgreSQL 函数


读入整个大型对象并直接发送给浏览器

pg_lo_open
pg_lo_read
PostgreSQL 函数
PHP Manual

pg_lo_read_all

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_lo_read_all — 读入整个大型对象并直接发送给浏览器

说明

int pg_lo_read_all ( resource $large_object )

pg_lo_read_all() 读入一个大型对象并在（PHP）发送完所有待发的 header 之后将其直接发送给浏览器。主要目的是发送图片或声音等二进制数据。返回值为读入的字节数，如果出错则返回 FALSE。

要使用大型对象（lo）接口，需要将其放置在事务块中。

Note:

本函数以前的名字为 pg_loreadall()。

参见 pg_lo_read()。

pg_lo_open
pg_lo_read
PostgreSQL 函数


从大型对象中读入数据

pg_lo_read_all
pg_lo_seek
PostgreSQL 函数
PHP Manual

pg_lo_read

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_lo_read — 从大型对象中读入数据

说明

string pg_lo_read ( resource $large_object , int $len )

pg_lo_read() 从大型对象中读入最多 len 字节的数据并以字符串返回。large_object 指定了有效的大型对象的资源号，len 则指定了大型对象的段所允许的最大长度。如果出错则返回 FALSE。

要使用大型对象（lo）接口，需要将其放置在事务块中。

Note:

本函数以前的名字为 pg_loread()。

参见 pg_lo_read_all()。

pg_lo_read_all
pg_lo_seek
PostgreSQL 函数


移动大型对象中的指针

pg_lo_read
pg_lo_tell
PostgreSQL 函数
PHP Manual

pg_lo_seek

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_lo_seek — 移动大型对象中的指针

说明

bool pg_lo_seek ( resource $large_object , int $offset [, int $whence ] )

pg_lo_seek() 在大型对象资源中移动指针位置。whence 参数为 PGSQL_SEEK_SET，PGSQL_SEEK_CUR 或 PGSQL_SEEK_END。

参见 pg_lo_tell()。

pg_lo_read
pg_lo_tell
PostgreSQL 函数


返回大型对象的当前指针位置

pg_lo_seek
pg_lo_truncate
PostgreSQL 函数
PHP Manual

pg_lo_tell

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_lo_tell — 返回大型对象的当前指针位置

说明

int pg_lo_tell ( resource $large_object )

pg_lo_tell() 返回当前指针位置（大型对象中从头开始的偏移量）。

参见 pg_lo_seek()。

pg_lo_seek
pg_lo_truncate
PostgreSQL 函数


Truncates a large object

pg_lo_tell
pg_lo_unlink
PostgreSQL 函数
PHP Manual

pg_lo_truncate

(No version information available, might only be in Git)

pg_lo_truncate — Truncates a large object

说明

bool pg_lo_truncate ( resource $large_object , int $size )

pg_lo_truncate() truncates a large object resource.

To use the large object interface, it is necessary to enclose it within a transaction block.

参数

large_object

PostgreSQL large object (LOB) resource, returned by pg_lo_open().

size

The number of bytes to truncate.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 pg_lo_truncate() example

<?php
   $doc_oid = 189762345;
   $database = pg_connect("dbname=jacarta");
   pg_query($database, "begin");
   $handle = pg_lo_open($database, $doc_oid, "r");
   // Truncate to 0
   pg_lo_truncate($handle, 0);
   pg_query($database, "commit");
   echo $data;
?>

更新日志

版本 | 说明
5.6.0 | Added truncate function. It supports PostgreSQL 9.3's 64bit large object. Both client and server must support PostgreSQL 9.3 and PHP must be 64bit build to use 64bit large object.

参见

  • pg_lo_tell() - 返回大型对象的当前指针位置

pg_lo_tell
pg_lo_unlink
PostgreSQL 函数


删除一个大型对象

pg_lo_truncate
pg_lo_write
PostgreSQL 函数
PHP Manual

pg_lo_unlink

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_lo_unlink — 删除一个大型对象

说明

bool pg_lo_unlink ( resource $connection , int $oid )

pg_lo_unlink() 删除由 oid 指定的大型对象。成功时返回 TRUE， 或者在失败时返回 FALSE。

要使用大型对象（lo）接口，需要将其放置在事务块中。

Note:

本函数以前的名字为 pg_lo_unlink()。

参数

connection

PostgreSQL database connection resource. When connection is not present, the default connection is used. The default connection is the last connection made by pg_connect() or pg_pconnect().

oid

The OID of the large object in the database.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 pg_lo_unlink() example

<?php
   // OID of the large object to delete
   $doc_oid = 189762345;
   $database = pg_connect("dbname=jacarta");
   pg_query($database, "begin");
   pg_lo_unlink($database, $doc_oid);
   pg_query($database, "commit");
?>

参见

  • pg_lo_create() - 新建一个大型对象
  • pg_lo_import() - 将文件导入为大型对象

pg_lo_truncate
pg_lo_write
PostgreSQL 函数


向大型对象写入数据

pg_lo_unlink
pg_meta_data
PostgreSQL 函数
PHP Manual

pg_lo_write

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_lo_write — 向大型对象写入数据

说明

int pg_lo_write ( resource $large_object , string $data )

pg_lo_write() 把 data 参数中的数据尽可能多地写入大型对象并返回实际写入的字节数。如果出错则返回 FALSE。large_object 参数是 pg_lo_open() 函数所返回的大型对象资源号。

要使用大型对象（lo）接口，需要将其放置在事务块中。

Note:

本函数以前的名字为 pg_lo_write()。

参见 pg_lo_create() 和 pg_lo_open()。

pg_lo_unlink
pg_meta_data
PostgreSQL 函数


获得表的元数据

pg_lo_write
pg_num_fields
PostgreSQL 函数
PHP Manual

pg_meta_data

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

pg_meta_data — 获得表的元数据

说明

array pg_meta_data ( resource $connection , string $table_name )

pg_metadata() 以数组形式返回 table_name 表的定义。

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

connection

PostgreSQL database connection resource.

table_name

The name of the table.

返回值

以数组 array 形式返回表的定义，如果出错则返回 FALSE。

范例

Example #1 取得表的元数据

<?php
  $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

  $meta = pg_meta_data($dbconn, 'authors');
  if (is_array($meta)) {
      echo '<pre>';
      var_dump($meta);
      echo '</pre>';
  }
?>

以上例程会输出：

array(3) {
["author"]=>
array(5) {
  ["num"]=>
  int(1)
  ["type"]=>
  string(7) "varchar"
  ["len"]=>
  int(-1)
  ["not null"]=>
  bool(false)
  ["has default"]=>
  bool(false)
}
["year"]=>
array(5) {
  ["num"]=>
  int(2)
  ["type"]=>
  string(4) "int2"
  ["len"]=>
  int(2)
  ["not null"]=>
  bool(false)
  ["has default"]=>
  bool(false)
}
["title"]=>
array(5) {
  ["num"]=>
  int(3)
  ["type"]=>
  string(7) "varchar"
  ["len"]=>
  int(-1)
  ["not null"]=>
  bool(false)
  ["has default"]=>
  bool(false)
}
}

参见

  • pg_convert() - 将关联的数组值转换为适合 SQL 语句的格式。

pg_lo_write
pg_num_fields
PostgreSQL 函数


返回字段的数目

pg_meta_data
pg_num_rows
PostgreSQL 函数
PHP Manual

pg_num_fields

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_num_fields — 返回字段的数目

说明

int pg_num_fields ( resource $result )

pg_num_fields() 返回 PostgreSQL result 中的字段（列）数目。参数是由 pg_query() 函数返回的查询结果资源号。如果出错则返回 -1。

Note:

本函数以前的名字为 pg_numfields()。

参见 pg_num_rows() 和 pg_affected_rows()。

pg_meta_data
pg_num_rows
PostgreSQL 函数


返回行的数目

pg_num_fields
pg_options
PostgreSQL 函数
PHP Manual

pg_num_rows

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_num_rows — 返回行的数目

说明

int pg_num_rows ( resource $result )

pg_num_rows() 返回 PostgreSQL result 中的行的数目。result 参数是由 pg_query() 函数返回的查询结果资源号。如果出错则返回 -1。

Note:

用 pg_affected_rows() 函数获得被 INSERT，UPDATE 和 DELETE 命令影响到的行的数目。

Note:

本函数以前的名字为 pg_numrows()。

参见 pg_num_fields() 和 pg_affected_rows()。

pg_num_fields
pg_options
PostgreSQL 函数


获得和连接有关的选项

pg_num_rows
pg_parameter_status
PostgreSQL 函数
PHP Manual

pg_options

(PHP 4, PHP 5, PHP 7)

pg_options — 获得和连接有关的选项

说明

string pg_options ( resource $connection )

pg_options() 以字符串形式返回指定 PostgreSQL connection 资源的连接选项。

pg_num_rows
pg_parameter_status
PostgreSQL 函数


Looks up a current parameter setting of the server.

pg_options
pg_pconnect
PostgreSQL 函数
PHP Manual

pg_parameter_status

(PHP 5, PHP 7)

pg_parameter_status — Looks up a current parameter setting of the server.

说明

string pg_parameter_status ([ resource $connection ], string $param_name )

Looks up a current parameter setting of the server.

Certain parameter values are reported by the server automatically at connection startup or whenever their values change. pg_parameter_status() can be used to interrogate these settings. It returns the current value of a parameter if known, or FALSE if the parameter is not known.

Parameters reported as of PostgreSQL 8.0 include server_version, server_encoding, client_encoding, is_superuser, session_authorization, DateStyle, TimeZone, and integer_datetimes. (server_encoding, TimeZone, and integer_datetimes were not reported by releases before 8.0.) Note that server_version, server_encoding and integer_datetimes cannot change after PostgreSQL startup.

PostgreSQL 7.3 or lower servers do not report parameter settings, pg_parameter_status() includes logic to obtain values for server_version and client_encoding anyway. Applications are encouraged to use pg_parameter_status() rather than ad hoc code to determine these values.

Caution

On a pre-7.4 PostgreSQL server, changing client_encoding via SET after connection startup will not be reflected by pg_parameter_status().

参数

connection

PostgreSQL database connection resource. When connection is not present, the default connection is used. The default connection is the last connection made by pg_connect() or pg_pconnect().

param_name

Possible param_name values include server_version, server_encoding, client_encoding, is_superuser, session_authorization, DateStyle, TimeZone, and integer_datetimes.

返回值

A string containing the value of the parameter, FALSE on failure or invalid param_name.

范例

Example #1 pg_parameter_status() example

<?php
  $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

  echo "Server encoding: ", pg_parameter_status($dbconn, "server_encoding");
?>

以上例程会输出：

Server encoding: SQL_ASCII

pg_options
pg_pconnect
PostgreSQL 函数


打开一个持久的 PostgreSQL 连接

pg_parameter_status
pg_ping
PostgreSQL 函数
PHP Manual

pg_pconnect

(PHP 4, PHP 5, PHP 7)

pg_pconnect — 打开一个持久的 PostgreSQL 连接

说明

resource pg_pconnect ( string $connection_string [, int $connect_type ] )

pg_pconnect() 打开一个到 PostgreSQL 数据库的持久连接。返回其它 PostgreSQL 函数所需要的连接资源号。

If a second call is made to pg_pconnect() with the same connection_string as an existing connection, the existing connection will be returned unless you pass PGSQL_CONNECT_FORCE_NEW as connect_type.

要打开持久连接功能，php.ini 中的 pgsql.allow_persistent 参数必须为 "On"（也是默认值）。 最大持久连接数目由 php.ini 中的 pgsql.max_persistent 参数定义（默认为 -1 表示没有限制）。所有连接的数目可由 php.ini 中的 pgsql.max_links 参数设置。

pg_close() 不能关闭由 pg_pconnect() 打开的持久连接。

参数

connection_string

The connection_string can be empty to use all default parameters, or it can contain one or more parameter settings separated by whitespace. Each parameter setting is in the form keyword = value. Spaces around the equal sign are optional. To write an empty value or a value containing spaces, surround it with single quotes, e.g., keyword = 'a value'. Single quotes and backslashes within the value must be escaped with a backslash, i.e., \' and \.

The currently recognized parameter keywords are: host, hostaddr, port, dbname, user, password, connect_timeout, options, tty (ignored), sslmode, requiressl (deprecated in favor of sslmode), and service. Which of these arguments exist depends on your PostgreSQL version.

connect_type

If PGSQL_CONNECT_FORCE_NEW is passed, then a new connection is created, even if the connection_string is identical to an existing connection.

返回值

PostgreSQL connection resource on success, FALSE on failure.

范例

Example #1 Using pg_pconnect()

<?php
$dbconn = pg_pconnect("dbname=mary");
//connect to a database named "mary"

$dbconn2 = pg_pconnect("host=localhost port=5432 dbname=mary");
// connect to a database named "mary" on "localhost" at port "5432"

$dbconn3 = pg_pconnect("host=sheep port=5432 dbname=mary user=lamb password=foo");
//connect to a database named "mary" on the host "sheep" with a username and password

$conn_string = "host=sheep port=5432 dbname=test user=lamb password=bar";
$dbconn4 = pg_pconnect($conn_string);
//connect to a database named "test" on the host "sheep" with a username and password
?>

参见

  • pg_connect() - 打开一个 PostgreSQL 连接
  • 持久数据库连接

pg_parameter_status
pg_ping
PostgreSQL 函数


Ping 数据库连接

pg_pconnect
pg_port
PostgreSQL 函数
PHP Manual

pg_ping

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

pg_ping — Ping 数据库连接

说明

bool pg_ping ( resource $connection )

pg_ping() ping 数据库连接，如果中断则尝试重新连接。如果连接在活动状态返回 TRUE，否则返回 FALSE。

Example #1 pg_ping()

<?php
$conn = pg_pconnect ("dbname=publisher");
if (!$conn) {
    echo "An error occured.\n";
    exit;
}

if (!pg_ping($conn))
    die("Connection is broken\n");
?>
参见 pg_connection_status() 和 pg_connection_reset()。

pg_pconnect
pg_port
PostgreSQL 函数


返回该连接的端口号

pg_ping
pg_prepare
PostgreSQL 函数
PHP Manual

pg_port

(PHP 4, PHP 5, PHP 7)

pg_port — 返回该连接的端口号

说明

int pg_port ( resource $connection )

pg_port() 返回给定的 PostgreSQL connection 资源所连接的端口号。

pg_ping
pg_prepare
PostgreSQL 函数


Submits a request to create a prepared statement with the given parameters, and waits for completion.

pg_port
pg_put_line
PostgreSQL 函数
PHP Manual

pg_prepare

(PHP 5 >= 5.1.0, PHP 7)

pg_prepare — Submits a request to create a prepared statement with the given parameters, and waits for completion.

说明

resource pg_prepare ([ resource $connection ], string $stmtname , string $query )

pg_prepare() creates a prepared statement for later execution with pg_execute() or pg_send_execute(). This feature allows commands that will be used repeatedly to be parsed and planned just once, rather than each time they are executed. pg_prepare() is supported only against PostgreSQL 7.4 or higher connections; it will fail when using earlier versions.

The function creates a prepared statement named stmtname from the query string, which must contain a single SQL command. stmtname may be "" to create an unnamed statement, in which case any pre-existing unnamed statement is automatically replaced; otherwise it is an error if the statement name is already defined in the current session. If any parameters are used, they are referred to in the query as $1, $2, etc.

Prepared statements for use with pg_prepare() can also be created by executing SQL PREPARE statements. (But pg_prepare() is more flexible since it does not require parameter types to be pre-specified.) Also, although there is no PHP function for deleting a prepared statement, the SQL DEALLOCATE statement can be used for that purpose.

参数

connection

PostgreSQL database connection resource. When connection is not present, the default connection is used. The default connection is the last connection made by pg_connect() or pg_pconnect().

stmtname

The name to give the prepared statement. Must be unique per-connection. If "" is specified, then an unnamed statement is created, overwriting any previously defined unnamed statement.

query

The parameterized SQL statement. Must contain only a single statement. (multiple statements separated by semi-colons are not allowed.) If any parameters are used, they are referred to as $1, $2, etc.

返回值

A query result resource on success 或者在失败时返回 FALSE.

范例

Example #1 Using pg_prepare()

<?php
// Connect to a database named "mary"
$dbconn = pg_connect("dbname=mary");

// Prepare a query for execution
$result = pg_prepare($dbconn, "my_query", 'SELECT * FROM shops WHERE name = $1');

// Execute the prepared query.  Note that it is not necessary to escape
// the string "Joe's Widgets" in any way
$result = pg_execute($dbconn, "my_query", array("Joe's Widgets"));

// Execute the same prepared query, this time with a different parameter
$result = pg_execute($dbconn, "my_query", array("Clothes Clothes Clothes"));

?>

参见

  • pg_execute() - Sends a request to execute a prepared statement with given parameters, and waits for the result.
  • pg_send_execute() - Sends a request to execute a prepared statement with given parameters, without waiting for the result(s).

pg_port
pg_put_line
PostgreSQL 函数


向 PostgreSQL 后端发送以 NULL 结尾的字符串

pg_prepare
pg_query_params
PostgreSQL 函数
PHP Manual

pg_put_line

(PHP 4 >= 4.0.3, PHP 5, PHP 7)

pg_put_line — 向 PostgreSQL 后端发送以 NULL 结尾的字符串

说明

bool pg_put_line ([ resource $connection ], string $data )

pg_put_line() 向 PostgreSQL 后端服务器发送以 NULL 结尾的字符串。例如可以通过 PostgreSQL 的 COPY 操作来向表中高速插入数据。结尾的 NULL 字符会自动加入。

COPY is a high-speed data loading interface supported by PostgreSQL. Data is passed in without being parsed, and in a single transaction.

An alternative to using raw pg_put_line() commands is to use pg_copy_from(). This is a far simpler interface.

Note:

应用程序必须明确地在 pg_end_copy() 之前最后一行发送两个字符 "\." 来向后端指明发送数据结束。

Warning

Use of the pg_put_line() causes most large object operations, including pg_lo_read() and pg_lo_tell(), to subsequently fail. You can use pg_copy_from() and pg_copy_to() instead.

参数

connection

PostgreSQL database connection resource. When connection is not present, the default connection is used. The default connection is the last connection made by pg_connect() or pg_pconnect().

data

A line of text to be sent directly to the PostgreSQL backend. A NULL terminator is added automatically.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 pg_put_line() 例子

<?php
  $conn = pg_pconnect("dbname=foo");
  pg_query($conn, "create table bar (a int4, b char(16), d float8)");
  pg_query($conn, "copy bar from stdin");
  pg_put_line($conn, "3\thello world\t4.5\n");
  pg_put_line($conn, "4\tgoodbye world\t7.11\n");
  pg_put_line($conn, "\.\n");
  pg_end_copy($conn);
?>

参见

  • pg_end_copy() - 与 PostgreSQL 后端同步

pg_prepare
pg_query_params
PostgreSQL 函数


Submits a command to the server and waits for the result, with the ability to pass parameters separately from the SQL command text.

pg_put_line
pg_query
PostgreSQL 函数
PHP Manual

pg_query_params

(PHP 5 >= 5.1.0, PHP 7)

pg_query_params — Submits a command to the server and waits for the result, with the ability to pass parameters separately from the SQL command text.

说明

resource pg_query_params ([ resource $connection ], string $query , array $params )

Submits a command to the server and waits for the result, with the ability to pass parameters separately from the SQL command text.

pg_query_params() is like pg_query(), but offers additional functionality: parameter values can be specified separately from the command string proper. pg_query_params() is supported only against PostgreSQL 7.4 or higher connections; it will fail when using earlier versions.

If parameters are used, they are referred to in the query string as $1, $2, etc. The same parameter may appear more than once in the query; the same value will be used in that case. params specifies the actual values of the parameters. A NULL value in this array means the corresponding parameter is SQL NULL.

The primary advantage of pg_query_params() over pg_query() is that parameter values may be separated from the query string, thus avoiding the need for tedious and error-prone quoting and escaping. Unlike pg_query(), pg_query_params() allows at most one SQL command in the given string. (There can be semicolons in it, but not more than one nonempty command.)

参数

connection

PostgreSQL database connection resource. When connection is not present, the default connection is used. The default connection is the last connection made by pg_connect() or pg_pconnect().

query

The parameterized SQL statement. Must contain only a single statement. (multiple statements separated by semi-colons are not allowed.) If any parameters are used, they are referred to as $1, $2, etc.

User-supplied values should always be passed as parameters, not interpolated into the query string, where they form possible SQL injection attack vectors and introduce bugs when handling data containing quotes. If for some reason you cannot use a parameter, ensure that interpolated values are properly escaped.

params

An array of parameter values to substitute for the $1, $2, etc. placeholders in the original prepared query string. The number of elements in the array must match the number of placeholders.

Values intended for bytea fields are not supported as parameters. Use pg_escape_bytea() instead, or use the large object functions.

返回值

A query result resource on success 或者在失败时返回 FALSE.

范例

Example #1 Using pg_query_params()

<?php
// Connect to a database named "mary"
$dbconn = pg_connect("dbname=mary");

// Find all shops named Joe's Widgets.  Note that it is not necessary to
// escape "Joe's Widgets"
$result = pg_query_params($dbconn, 'SELECT * FROM shops WHERE name = $1', array("Joe's Widgets"));

// Compare against just using pg_query
$str = pg_escape_string("Joe's Widgets");
$result = pg_query($dbconn, "SELECT * FROM shops WHERE name = '{$str}'");

?>

参见

  • pg_query() - 执行查询

pg_put_line
pg_query
PostgreSQL 函数


执行查询

pg_query_params
pg_result_error_field
PostgreSQL 函数
PHP Manual

pg_query

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_query — 执行查询

说明

resource pg_query ( resource $connection , string $query )

pg_query() 在查询可以执行时返回查询结果资源号。如果查询失败或者提供的连接号无效则返回 FALSE。如果连接号有效，则可以用 pg_last_error() 函数来提取详细的错误信息。pg_query() 发送一条 SQL 语句到 connection 资源指定的 PostgreSQL 数据库。connection 必须是由 pg_connect() 或 pg_pconnect() 返回的合法连接号。本函数返回值是一个其它 PostgreSQL 函数例如 pg_fetch_array() 可以用来访问查询结果的查询结果资源号。

Note: connection 是 pg_query() 中的可选参数。如果没有指定 connection，则使用默认连接。默认连接是 pg_connect() 或 pg_pconnect() 所打开的最后一个连接。 尽管 connection 参数可以省略，但不推荐这样做。因为这样可能会导致很难发现脚本中的错误。

Note:

本函数以前的名字为 pg_exec()。pg_exec() 函数为了兼容性的原因仍然可以使用，但是鼓励用户使用新的名字。

参见 pg_connect()，pg_pconnect()，pg_fetch_array()，pg_fetch_object()，pg_num_rows() 和 pg_affected_rows()。

pg_query_params
pg_result_error_field
PostgreSQL 函数


Returns an individual field of an error report.

pg_query
pg_result_error
PostgreSQL 函数
PHP Manual

pg_result_error_field

(PHP 5 >= 5.1.0, PHP 7)

pg_result_error_field — Returns an individual field of an error report.

说明

string pg_result_error_field ( resource $result , int $fieldcode )

pg_result_error_field() returns one of the detailed error message fields associated with result resource. It is only available against a PostgreSQL 7.4 or above server. The error field is specified by the fieldcode.

Because pg_query() and pg_query_params() return FALSE if the query fails, you must use pg_send_query() and pg_get_result() to get the result handle.

If you need to get additional error information from failed pg_query() queries, use pg_set_error_verbosity() and pg_last_error() and then parse the result.

参数

result

A PostgreSQL query result resource from a previously executed statement.

fieldcode

Possible fieldcode values are: PGSQL_DIAG_SEVERITY, PGSQL_DIAG_SQLSTATE, PGSQL_DIAG_MESSAGE_PRIMARY, PGSQL_DIAG_MESSAGE_DETAIL, PGSQL_DIAG_MESSAGE_HINT, PGSQL_DIAG_STATEMENT_POSITION, PGSQL_DIAG_INTERNAL_POSITION (PostgreSQL 8.0+ only), PGSQL_DIAG_INTERNAL_QUERY (PostgreSQL 8.0+ only), PGSQL_DIAG_CONTEXT, PGSQL_DIAG_SOURCE_FILE, PGSQL_DIAG_SOURCE_LINE or PGSQL_DIAG_SOURCE_FUNCTION.

返回值

A string containing the contents of the error field, NULL if the field does not exist or FALSE on failure.

范例

Example #1 pg_result_error_field() example

<?php
  $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

  if (!pg_connection_busy($dbconn)) {
      pg_send_query($dbconn, "select * from doesnotexist;");
  }

  $res1 = pg_get_result($dbconn);
  echo pg_result_error_field($res1, PGSQL_DIAG_SQLSTATE);
?>

参见

  • pg_result_error() - 获得查询结果的错误信息

pg_query
pg_result_error
PostgreSQL 函数


获得查询结果的错误信息

pg_result_error_field
pg_result_seek
PostgreSQL 函数
PHP Manual

pg_result_error

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_result_error — 获得查询结果的错误信息

说明

string pg_result_error ( resource $result )

pg_result_error() 返回和 result 资源关联的错误信息。因此用户更有机会可以得到比 pg_last_error() 更好的错误信息。

参见 pg_query()，pg_send_query()，pg_get_result()，pg_last_error() 和 pg_last_notice()。

pg_result_error_field
pg_result_seek
PostgreSQL 函数


在结果资源中设定内部行偏移量

pg_result_error
pg_result_status
PostgreSQL 函数
PHP Manual

pg_result_seek

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

pg_result_seek — 在结果资源中设定内部行偏移量

说明

array pg_result_seek ( resource $result , int $offset )

pg_result_seek() 在结果资源中设定内部行偏移量。如果出错则返回 FALSE。

参见 pg_fetch_row()，pg_fetch_assoc()，pg_fetch_array()，pg_fetch_object() 和 pg_fetch_result()。

pg_result_error
pg_result_status
PostgreSQL 函数


获得查询结果的状态

pg_result_seek
pg_select
PostgreSQL 函数
PHP Manual

pg_result_status

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_result_status — 获得查询结果的状态

说明

int pg_result_status ( resource $result )

pg_result_status() 返回该查询结果资源的状态。可能的返回值有 PGSQL_EMPTY_QUERY，PGSQL_COMMAND_OK，PGSQL_TUPLES_OK，PGSQL_COPY_TO，PGSQL_COPY_FROM，PGSQL_BAD_RESPONSE，PGSQL_NONFATAL_ERROR 和 PGSQL_FATAL_ERROR。

参见 pg_connection_status()。

pg_result_seek
pg_select
PostgreSQL 函数


选择记录

pg_result_status
pg_send_execute
PostgreSQL 函数
PHP Manual

pg_select

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

pg_select — 选择记录

说明

mixed pg_select ( resource $connection , string $table_name , array $assoc_array [, int $options = PGSQL_DML_EXEC ] )

pg_select() 根据 assoc_array 数组中的 field=>value 值来选择记录。成功的查询返回和 assoc_array 指定的条件相匹配的包括记录和字段的数组。

如果指定了 options，pg_convert() 会按照指定选项作用于 assoc_array 之上。

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

connection

PostgreSQL 数据库连接资源。

table_name

Name of the table from which to select rows.

assoc_array

An array whose keys are field names in the table table_name, and whose values are the conditions that a row must meet to be retrieved.

options

Any number of PGSQL_CONV_FORCE_NULL, PGSQL_DML_NO_CONV, PGSQL_DML_EXEC, PGSQL_DML_ASYNC or PGSQL_DML_STRING combined. If PGSQL_DML_STRING is part of the options then query string is returned.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 Returns string if PGSQL_DML_STRING is passed via options.

范例

Example #1 pg_select() example

<?php
  $db = pg_connect('dbname=foo');
  // This is safe, since $_POST is converted automatically
  $rec = pg_select($db, 'post_log', $_POST);
  if ($rec) {
      echo "Records selected\n";
      var_dump($rec);
  } else {
      echo "User must have sent wrong inputs\n";
  }
?>

参见

  • pg_convert() - 将关联的数组值转换为适合 SQL 语句的格式。

pg_result_status
pg_send_execute
PostgreSQL 函数


Sends a request to execute a prepared statement with given parameters, without waiting for the result(s).

pg_select
pg_send_prepare
PostgreSQL 函数
PHP Manual

pg_send_execute

(PHP 5 >= 5.1.0, PHP 7)

pg_send_execute — Sends a request to execute a prepared statement with given parameters, without waiting for the result(s).

说明

bool pg_send_execute ( resource $connection , string $stmtname , array $params )

Sends a request to execute a prepared statement with given parameters, without waiting for the result(s).

This is similar to pg_send_query_params(), but the command to be executed is specified by naming a previously-prepared statement, instead of giving a query string. The function's parameters are handled identically to pg_execute(). Like pg_execute(), it will not work on pre-7.4 versions of PostgreSQL.

参数

connection

PostgreSQL database connection resource. When connection is not present, the default connection is used. The default connection is the last connection made by pg_connect() or pg_pconnect().

stmtname

The name of the prepared statement to execute. if "" is specified, then the unnamed statement is executed. The name must have been previously prepared using pg_prepare(), pg_send_prepare() or a PREPARE SQL command.

params

An array of parameter values to substitute for the $1, $2, etc. placeholders in the original prepared query string. The number of elements in the array must match the number of placeholders.

返回值

Returns TRUE on success, FALSE on failure. Use pg_get_result() to determine the query result.

范例

Example #1 Using pg_send_execute()

<?php
  $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

  // Prepare a query for execution
  if (!pg_connection_busy($dbconn)) {
    pg_send_prepare($dbconn, "my_query", 'SELECT * FROM shops WHERE name = $1');
    $res1 = pg_get_result($dbconn);
  }

  // Execute the prepared query.  Note that it is not necessary to escape
  // the string "Joe's Widgets" in any way
  if (!pg_connection_busy($dbconn)) {
    pg_send_execute($dbconn, "my_query", array("Joe's Widgets"));
    $res2 = pg_get_result($dbconn);
  }

  // Execute the same prepared query, this time with a different parameter
  if (!pg_connection_busy($dbconn)) {
    pg_send_execute($dbconn, "my_query", array("Clothes Clothes Clothes"));
    $res3 = pg_get_result($dbconn);
  }

?>

参见

  • pg_prepare() - Submits a request to create a prepared statement with the given parameters, and waits for completion.
  • pg_send_prepare() - Sends a request to create a prepared statement with the given parameters, without waiting for completion.
  • pg_execute() - Sends a request to execute a prepared statement with given parameters, and waits for the result.

pg_select
pg_send_prepare
PostgreSQL 函数


Sends a request to create a prepared statement with the given parameters, without waiting for completion.

pg_send_execute
pg_send_query_params
PostgreSQL 函数
PHP Manual

pg_send_prepare

(PHP 5 >= 5.1.0, PHP 7)

pg_send_prepare — Sends a request to create a prepared statement with the given parameters, without waiting for completion.

说明

bool pg_send_prepare ( resource $connection , string $stmtname , string $query )

Sends a request to create a prepared statement with the given parameters, without waiting for completion.

This is an asynchronous version of pg_prepare(): it returns TRUE if it was able to dispatch the request, and FALSE if not. After a successful call, call pg_get_result() to determine whether the server successfully created the prepared statement. The function's parameters are handled identically to pg_prepare(). Like pg_prepare(), it will not work on pre-7.4 versions of PostgreSQL.

参数

connection

PostgreSQL database connection resource. When connection is not present, the default connection is used. The default connection is the last connection made by pg_connect() or pg_pconnect().

stmtname

The name to give the prepared statement. Must be unique per-connection. If "" is specified, then an unnamed statement is created, overwriting any previously defined unnamed statement.

query

The parameterized SQL statement. Must contain only a single statement. (multiple statements separated by semi-colons are not allowed.) If any parameters are used, they are referred to as $1, $2, etc.

返回值

Returns TRUE on success, FALSE on failure. Use pg_get_result() to determine the query result.

范例

Example #1 Using pg_send_prepare()

<?php
  $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

  // Prepare a query for execution
  if (!pg_connection_busy($dbconn)) {
    pg_send_prepare($dbconn, "my_query", 'SELECT * FROM shops WHERE name = $1');
    $res1 = pg_get_result($dbconn);
  }

  // Execute the prepared query.  Note that it is not necessary to escape
  // the string "Joe's Widgets" in any way
  if (!pg_connection_busy($dbconn)) {
    pg_send_execute($dbconn, "my_query", array("Joe's Widgets"));
    $res2 = pg_get_result($dbconn);
  }

  // Execute the same prepared query, this time with a different parameter
  if (!pg_connection_busy($dbconn)) {
    pg_send_execute($dbconn, "my_query", array("Clothes Clothes Clothes"));
    $res3 = pg_get_result($dbconn);
  }

?>

参见

  • pg_connect() - 打开一个 PostgreSQL 连接
  • pg_pconnect() - 打开一个持久的 PostgreSQL 连接
  • pg_execute() - Sends a request to execute a prepared statement with given parameters, and waits for the result.
  • pg_send_execute() - Sends a request to execute a prepared statement with given parameters, without waiting for the result(s).
  • pg_send_query_params() - Submits a command and separate parameters to the server without waiting for the result(s).

pg_send_execute
pg_send_query_params
PostgreSQL 函数


Submits a command and separate parameters to the server without waiting for the result(s).

pg_send_prepare
pg_send_query
PostgreSQL 函数
PHP Manual

pg_send_query_params

(PHP 5 >= 5.1.0, PHP 7)

pg_send_query_params — Submits a command and separate parameters to the server without waiting for the result(s).

说明

bool pg_send_query_params ( resource $connection , string $query , array $params )

Submits a command and separate parameters to the server without waiting for the result(s).

This is equivalent to pg_send_query() except that query parameters can be specified separately from the query string. The function's parameters are handled identically to pg_query_params(). Like pg_query_params(), it will not work on pre-7.4 PostgreSQL connections, and it allows only one command in the query string.

参数

connection

PostgreSQL database connection resource.

query

The parameterized SQL statement. Must contain only a single statement. (multiple statements separated by semi-colons are not allowed.) If any parameters are used, they are referred to as $1, $2, etc.

params

An array of parameter values to substitute for the $1, $2, etc. placeholders in the original prepared query string. The number of elements in the array must match the number of placeholders.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

Use pg_get_result() to determine the query result.

范例

Example #1 Using pg_send_query_params()

<?php
  $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

  // Using parameters.  Note that it is not necessary to quote or escape
  // the parameter.
  pg_send_query_params($dbconn, 'select count(*) from authors where city = $1', array('Perth'));

  // Compare against basic pg_send_query usage
  $str = pg_escape_string('Perth');
  pg_send_query($dbconn, "select count(*) from authors where city = '${str}'");
?>

参见

  • pg_send_query() - 发送异步查询

pg_send_prepare
pg_send_query
PostgreSQL 函数


发送异步查询

pg_send_query_params
pg_set_client_encoding
PostgreSQL 函数
PHP Manual

pg_send_query

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pg_send_query — 发送异步查询

说明

bool pg_send_query ( resource $connection , string $query )
bool pg_send_query ( string $query )

pg_send_query() 向 connection
连接发送异步查询。和 pg_query() 不同，它可以向 PostgreSQL
发送多个查询并用 pg_get_result()
依次得到结果。当执行查询时脚本的执行不会被锁定。用
pg_connection_busy() 来检查连接连接是否为忙（即查询正在执行中）。调用
pg_cancel_query() 则有可能取消查询。

尽管用户可以一次发送多个查询，但用户不能通过正忙的连接发送多个查询。如果向正忙的连接发送了查询，则会等待上一条查询结束并丢弃所有结果。

Example #1 异步查询

<?php
    $dbconn = pg_connect("dbname=publisher") or die("Could not connect");
    if (!pg_connection_busy($dbconn)) {
        pg_send_query($dbconn,"select * from authors; select count(*) from authors;");
    }
    $res1 = pg_get_result($dbconn);
    echo "First call to pg_get_result(): $res1\n";
    $rows1 = pg_num_rows($res1);
    echo "$res1 has $rows1 records\n\n";
    $res2 = pg_get_result($dbconn);
    echo "second call to pg_get_result(): $res2\n";
    $rows2 = pg_num_rows($res2);
    echo "$res2 has $rows2 records\n";
?>

上例输出如下：

first call to pg_get_result(): Resource id #3
Resource id #3 has 3 records

second call to pg_get_result(): Resource id #4
Resource id #4 has 1 records

参见 pg_query()，pg_cancel_query()，pg_get_result() 和 pg_connection_busy()。

pg_send_query_params
pg_set_client_encoding
PostgreSQL 函数


设定客户端编码

pg_send_query
pg_set_error_verbosity
PostgreSQL 函数
PHP Manual

pg_set_client_encoding

(PHP 4 >= 4.0.3, PHP 5, PHP 7)

pg_set_client_encoding — 设定客户端编码

说明

int pg_set_client_encoding ([ resource $connection ], string $encoding )

pg_set_client_encoding() 设定客户端编码方式，成功返回 0，出错返回 -1。

encoding 是客户端的编码方式，可以为：SQL_ASCII，EUC_JP，EUC_CN，EUC_KR，EUC_TW，UNICODE，MULE_INTERNAL，LATINX (X=1...9)，KOI8，WIN，ALT，SJIS，BIG5，WIN1250。可用的编码取决于 PostgreSQL 和 libpq 的版本。参考 PostgreSQL 手册查看你的 PostgreSQL 所支持的编码方式。

Note:

本函数需要 PHP 4.0.3 或以上版本以及 PostgreSQL 7.0 或以上版本。所支持的编码方式取决于 PostgreSQL 的版本，详情参考 PostgreSQL 手册。

本函数以前的名字为 pg_setclientencoding()。

参见 pg_client_encoding()。

pg_send_query
pg_set_error_verbosity
PostgreSQL 函数


Determines the verbosity of messages returned by pg_last_error and pg_result_error.

pg_set_client_encoding
pg_socket
PostgreSQL 函数
PHP Manual

pg_set_error_verbosity

(PHP 5 >= 5.1.0, PHP 7)

pg_set_error_verbosity — Determines the verbosity of messages returned by pg_last_error() and pg_result_error().

说明

int pg_set_error_verbosity ([ resource $connection ], int $verbosity )

Determines the verbosity of messages returned by pg_last_error() and pg_result_error().

pg_set_error_verbosity() sets the verbosity mode, returning the connection's previous setting. In PGSQL_ERRORS_TERSE mode, returned messages include severity, primary text, and position only; this will normally fit on a single line. The default mode (PGSQL_ERRORS_DEFAULT) produces messages that include the above plus any detail, hint, or context fields (these may span multiple lines). The PGSQL_ERRORS_VERBOSE mode includes all available fields. Changing the verbosity does not affect the messages available from already-existing result objects, only subsequently-created ones.

参数

connection

PostgreSQL database connection resource. When connection is not present, the default connection is used. The default connection is the last connection made by pg_connect() or pg_pconnect().

verbosity

The required verbosity: PGSQL_ERRORS_TERSE, PGSQL_ERRORS_DEFAULT or PGSQL_ERRORS_VERBOSE.

返回值

The previous verbosity level: PGSQL_ERRORS_TERSE, PGSQL_ERRORS_DEFAULT or PGSQL_ERRORS_VERBOSE.

范例

Example #1 pg_set_error_verbosity() example

<?php
  $dbconn = pg_connect("dbname=publisher") or die("Could not connect");

  if (!pg_connection_busy($dbconn)) {
      pg_send_query($dbconn, "select * from doesnotexist;");
  }

  pg_set_error_verbosity($dbconn, PGSQL_ERRORS_VERBOSE);
  $res1 = pg_get_result($dbconn);
  echo pg_result_error($res1);
?>

参见

  • pg_last_error() - 得到某连接的最后一条错误信息
  • pg_result_error() - 获得查询结果的错误信息

pg_set_client_encoding
pg_socket
PostgreSQL 函数


Get a read only handle to the socket underlying a PostgreSQL connection

pg_set_error_verbosity
pg_trace
PostgreSQL 函数
PHP Manual

pg_socket

(PHP 5 >= 5.6.0, PHP 7)

pg_socket — Get a read only handle to the socket underlying a PostgreSQL connection

说明

resource pg_socket ( resource $connection )

pg_socket() returns a read only resource corresponding to the socket underlying the given PostgreSQL connection.

Warning

本函数还未编写文档，仅有参数列表。

参数

connection

PostgreSQL database connection resource.

返回值

A socket resource on success 或者在失败时返回 FALSE.

pg_set_error_verbosity
pg_trace
PostgreSQL 函数


启动一个 PostgreSQL 连接的追踪功能

pg_socket
pg_transaction_status
PostgreSQL 函数
PHP Manual

pg_trace

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

pg_trace — 启动一个 PostgreSQL 连接的追踪功能

说明

bool pg_trace ( string $pathname [, string $mode [, resource $connection ]] )

pg_trace() 启动 PostgreSQL 前端／后端通讯的追踪并记录到 pathname 指定的文件中。要完全理解结果，用户需要熟悉 PostgreSQL 通讯协议的本质。对不熟悉的用户来说，追踪发送到服务器的查询错误依然有用，例如可以用 grep '^To backend' trace.log 来查看哪些查询实际上被发送到了 PostgreSQL 服务器。更多信息参考 PostgreSQL 手册。

参数 pathname 和 mode 和 fopen()(mode 默认为 'w') 中的一样。connection 指定了要追踪的连接，默认为上一个打开的连接。

如果 pathname 可以作为日志文件打开，则 pg_trace() 返回 TRUE，否则返回 FALSE。

参见 fopen() 和 pg_untrace()。

pg_socket
pg_transaction_status
PostgreSQL 函数


Returns the current in-transaction status of the server.

pg_trace
pg_tty
PostgreSQL 函数
PHP Manual

pg_transaction_status

(PHP 5 >= 5.1.0, PHP 7)

pg_transaction_status — Returns the current in-transaction status of the server.

说明

int pg_transaction_status ( resource $connection )

Returns the current in-transaction status of the server.

Caution

pg_transaction_status() will give incorrect results when using a PostgreSQL 7.3 server that has the parameter autocommit set to off. The server-side autocommit feature has been deprecated and does not exist in later server versions.

参数

connection

PostgreSQL database connection resource.

返回值

The status can be PGSQL_TRANSACTION_IDLE (currently idle), PGSQL_TRANSACTION_ACTIVE (a command is in progress), PGSQL_TRANSACTION_INTRANS (idle, in a valid transaction block), or PGSQL_TRANSACTION_INERROR (idle, in a failed transaction block). PGSQL_TRANSACTION_UNKNOWN is reported if the connection is bad. PGSQL_TRANSACTION_ACTIVE is reported only when a query has been sent to the server and not yet completed.

范例

Example #1 pg_transaction_status() example

<?php
  $dbconn = pg_connect("dbname=publisher") or die("Could not connect");
  $stat = pg_transaction_status($dbconn);
  if ($stat === PGSQL_TRANSACTION_UNKNOWN) {
      echo 'Connection is bad';
  } else if ($stat === PGSQL_TRANSACTION_IDLE) {
      echo 'Connection is currently idle';
  } else {
      echo 'Connection is in a transaction state';
  }
?>

pg_trace
pg_tty
PostgreSQL 函数


返回该连接的 tty 号

pg_transaction_status
pg_unescape_bytea
PostgreSQL 函数
PHP Manual

pg_tty

(PHP 4, PHP 5, PHP 7)

pg_tty — 返回该连接的 tty 号

说明

string pg_tty ( resource $connection )

pg_tty() 返回指定 PostgreSQL connection 资源在服务器端输出调试信息的 tty 号。

pg_transaction_status
pg_unescape_bytea
PostgreSQL 函数


取消 bytea 类型中的字符串转义

pg_tty
pg_untrace
PostgreSQL 函数
PHP Manual

pg_unescape_bytea

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

pg_unescape_bytea — 取消 bytea 类型中的字符串转义

说明

string pg_unescape_bytea ( string $data )

pg_unescape_bytea() 将 bytea 数据类型中的字符串取消转义。返回未转义的字符串（二进制）。

Note:

当 SELECT bytea 类型，PostgreSQL 返回用 \ 前导的八进制字节值（例如 \032）。用户需要自行将其转换回二进制格式。

本函数需要 PostgreSQL 7.2 或更新版本。在 PostgreSQL 7.2.0 和 7.2.1 中，当激活了多字节支持时必须强制转换为 bytea 类型，例如 INSERT INTO test_table (image) VALUES ('$image_escaped'::bytea);。PostgreSQL 7.2.2 或更新版本不需要强制转换。例外是当客户端和后端的字符编码不匹配时，有可能出现多字节流错误。用户必须强制转换为 bytea 来避免此错误。

参见 pg_escape_bytea() 和 pg_escape_string()。

pg_tty
pg_untrace
PostgreSQL 函数


关闭 PostgreSQL 连接的追踪功能

pg_unescape_bytea
pg_update
PostgreSQL 函数
PHP Manual

pg_untrace

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

pg_untrace — 关闭 PostgreSQL 连接的追踪功能

说明

bool pg_untrace ([ resource $connection ] )

停止由 pg_trace() 启动的追踪功能。connection 指定了被追踪的连接号，默认为上一个打开的连接。

本函数总是返回 TRUE。

参见 pg_trace()。

pg_unescape_bytea
pg_update
PostgreSQL 函数


更新表

pg_untrace
pg_version
PostgreSQL 函数
PHP Manual

pg_update

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

pg_update — 更新表

说明

mixed pg_update ( resource $connection , string $table_name , array $data , array $condition [, int $options = PGSQL_DML_EXEC ] )

pg_update() 用 condition 作为条件查询数据库，用 data 中的数据更新符合条件的记录。如果指定了 options，则 pg_convert() 会按照指定选项作用到 data 上。

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

connection

PostgreSQL database connection resource.

table_name

Name of the table into which to update rows.

data

An array whose keys are field names in the table table_name, and whose values are what matched rows are to be updated to.

condition

An array whose keys are field names in the table table_name, and whose values are the conditions that a row must meet to be updated.

options

Any number of PGSQL_CONV_OPTS, PGSQL_DML_NO_CONV, PGSQL_DML_EXEC or PGSQL_DML_STRING combined. If PGSQL_DML_STRING is part of the options then query string is returned.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 Returns string if PGSQL_DML_STRING is passed via options.

范例

Example #1 pg_update() example

<?php
  $db = pg_connect('dbname=foo');
  $data = array('field1'=>'AA', 'field2'=>'BB');

  // This is safe, since $_POST is converted automatically
  $res = pg_update($db, 'post_log', $_POST, $data);
  if ($res) {
      echo "Data is updated: $res\n";
  } else {
      echo "User must have sent wrong inputs\n";
  }
?>

参见

  • pg_convert() - 将关联的数组值转换为适合 SQL 语句的格式。

pg_untrace
pg_version
PostgreSQL 函数


Returns an array with client, protocol and server version (when available)

pg_update
SQLite
PostgreSQL 函数
PHP Manual

pg_version

(PHP 5, PHP 7)

pg_version — Returns an array with client, protocol and server version (when available)

说明

array pg_version ([ resource $connection ] )

pg_version() returns an array with the client, protocol and server version. Protocol and server versions are only available if PHP was compiled with PostgreSQL 7.4 or later.

For more detailed server information, use pg_parameter_status().

参数

connection

PostgreSQL database connection resource. When connection is not present, the default connection is used. The default connection is the last connection made by pg_connect() or pg_pconnect().

返回值

Returns an array with client, protocol and server keys and values (if available). Returns FALSE on error or invalid connection.

范例

Example #1 pg_version() example

<?php
  $dbconn = pg_connect("host=localhost port=5432 dbname=mary")
     or die("Could not connect");

  $v = pg_version($dbconn);

  echo $v['client'];
?>

以上例程会输出：

7.4

参见

  • pg_parameter_status() - Looks up a current parameter setting of the server.

pg_update
SQLite
PostgreSQL 函数


SQLite

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • SQLite 函数
    • sqlite_array_query — Execute a query against a given database and returns an array
    • sqlite_busy_timeout — Set busy timeout duration, or disable busy handlers
    • sqlite_changes — Returns the number of rows that were changed by the most recent SQL statement
    • sqlite_close — Closes an open SQLite database
    • sqlite_column — Fetches a column from the current row of a result set
    • sqlite_create_aggregate — Register an aggregating UDF for use in SQL statements
    • sqlite_create_function — Registers a "regular" User Defined Function for use in SQL statements
    • sqlite_current — Fetches the current row from a result set as an array
    • sqlite_error_string — Returns the textual description of an error code
    • sqlite_escape_string — Escapes a string for use as a query parameter
    • sqlite_exec — Executes a result-less query against a given database
    • sqlite_factory — Opens an SQLite database and returns an SQLiteDatabase object
    • sqlite_fetch_all — Fetches all rows from a result set as an array of arrays
    • sqlite_fetch_array — Fetches the next row from a result set as an array
    • sqlite_fetch_column_types — Return an array of column types from a particular table
    • sqlite_fetch_object — Fetches the next row from a result set as an object
    • sqlite_fetch_single — Fetches the first column of a result set as a string
    • sqlite_fetch_string — 别名 sqlite_fetch_single
    • sqlite_field_name — Returns the name of a particular field
    • sqlite_has_more — Finds whether or not more rows are available
    • sqlite_has_prev — Returns whether or not a previous row is available
    • sqlite_key — Returns the current row index
    • sqlite_last_error — Returns the error code of the last error for a database
    • sqlite_last_insert_rowid — Returns the rowid of the most recently inserted row
    • sqlite_libencoding — Returns the encoding of the linked SQLite library
    • sqlite_libversion — Returns the version of the linked SQLite library
    • sqlite_next — Seek to the next row number
    • sqlite_num_fields — Returns the number of fields in a result set
    • sqlite_num_rows — Returns the number of rows in a buffered result set
    • sqlite_open — Opens an SQLite database and create the database if it does not exist
    • sqlite_popen — Opens a persistent handle to an SQLite database and create the database if it does not exist
    • sqlite_prev — Seek to the previous row number of a result set
    • sqlite_query — Executes a query against a given database and returns a result handle
    • sqlite_rewind — Seek to the first row number
    • sqlite_seek — Seek to a particular row number of a buffered result set
    • sqlite_single_query — Executes a query and returns either an array for one single column or the value of the first row
    • sqlite_udf_decode_binary — Decode binary data passed as parameters to an UDF
    • sqlite_udf_encode_binary — Encode binary data before returning it from an UDF
    • sqlite_unbuffered_query — Execute a query that does not prefetch and buffer all data
    • sqlite_valid — Returns whether more rows are available
pg_version
简介
针对各数据库系统对应的扩展


简介

This is an extension for the SQLite Embeddable SQL Database Engine. SQLite is a C library that implements an embeddable SQL database engine. Programs that link with the SQLite library can have SQL database access without running a separate RDBMS process.

SQLite is not a client library used to connect to a big database server. SQLite is the server. The SQLite library reads and writes directly to and from the database files on disk.

Note:

For further information see the SQLite Website (» http://sqlite.org/).

Note: This extension offers support for SQLite 2.x. Sqlite 3.x is supported by the SQLite3 extension.

SQLite
安装／配置
SQLite


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
SQLite


需求

The SQLite extension is enabled by default as of PHP 5.0. Beginning with PHP 5.4, the SQLite extension is available only via PECL.

安装／配置
安装
安装／配置


安装

Since PHP 5.0 this extension was bundled with PHP. Beginning with PHP 5.4, this extension is available only via PECL.

Windows users must enable php_sqlite.dll inside of php.ini in order to use these functions. PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

Windows builds must also enable PDO because as of PHP 5.1.0 it depends on it. So, php.ini will end up with something like this:

extension=php_pdo.dll
extension=php_sqlite.dll
On Linux or Unix operating systems, if you build PDO as a shared extension, you must build SQLite as a shared extension using the --with-sqlite=shared configure option.

The PHP 5.0.x series of Windows builds enabled this extension by default, where no DLL file is necessary.

SQLite 3 is supported through PDO SQLite.

Note: Windows installation for unprivileged accounts

On Windows operating systems, unprivileged accounts don't have the TMP environment variable set by default. This will make sqlite create temporary files in the windows directory, which is not desirable. So, you should set the TMP environment variable for the web server or the user account the web server is running under. If Apache is your web server, you can accomplish this via a SetEnv directive in your httpd.conf file. For example:

SetEnv TMP c:/temp
If you are unable to establish this setting at the server level, you can implement the setting in your script:
<?php
putenv('TMP=C:/temp');
?>
The setting must refer to a directory that the web server has permission to create files in and subsequently write to and delete the files it created. Otherwise, you may receive the following error message: malformed database schema - unable to open a temporary database file for storing temporary tables

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

SQLite 配置选项
名字 | 默认 | 可修改范围 | Changelog
sqlite.assoc_case | "0" | PHP_INI_ALL | Available since PHP 5.0.0.
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

sqlite.assoc_case int

Whether to use mixed case (0), upper case (1) or lower case (2) hash indexes.

This option is primarily useful when you need compatibility with other database systems, where the names of the columns are always returned as uppercase or lowercase, regardless of the case of the actual field names in the database schema.

The SQLite library returns the column names in their natural case (that matches the case you used in your schema). When sqlite.assoc_case is set to 0 the natural case will be preserved. When it is set to 1 or 2, PHP will apply case folding on the hash keys to upper- or lower-case the keys, respectively.

Use of this option incurs a slight performance penalty, but is MUCH faster than performing the case folding yourself using PHP script.

安装
资源类型
安装／配置


资源类型

There are two resources used in the SQLite Interface. The first one is the database connection, the second one the result set.

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

The functions sqlite_fetch_array() and sqlite_current() use a constant for the different types of result arrays. The following constants are defined:

SQLite result type constants
SQLITE_ASSOC (int)
Columns are returned into the array having the field name as the array index.
SQLITE_BOTH (int)
Columns are returned into the array having both a numerical index and the field name as the array index.
SQLITE_NUM (int)
Columns are returned into the array having a numerical index to the fields. This index starts with 0, the first field in the result.

A number of functions may return status codes. The following constants are defined:

SQLite status code constants
SQLITE_OK (int)
Successful result.
SQLITE_ERROR (int)
SQL error or missing database.
SQLITE_INTERNAL (int)
An internal logic error in SQLite.
SQLITE_PERM (int)
Access permission denied.
SQLITE_ABORT (int)
Callback routine requested an abort.
SQLITE_BUSY (int)
The database file is locked.
SQLITE_LOCKED (int)
A table in the database is locked.
SQLITE_NOMEM (int)
Memory allocation failed.
SQLITE_READONLY (int)
Attempt to write a readonly database.
SQLITE_INTERRUPT (int)
Operation terminated internally.
SQLITE_IOERR (int)
Disk I/O error occurred.
SQLITE_NOTADB (int)
File opened that is not a database file.
SQLITE_CORRUPT (int)
The database disk image is malformed.
SQLITE_FORMAT (int)
Auxiliary database format error.
SQLITE_NOTFOUND (int)
(Internal) Table or record not found.
SQLITE_FULL (int)
Insertion failed because database is full.
SQLITE_CANTOPEN (int)
Unable to open the database file.
SQLITE_PROTOCOL (int)
Database lock protocol error.
SQLITE_EMPTY (int)
(Internal) Database table is empty.
SQLITE_SCHEMA (int)
The database schema changed.
SQLITE_TOOBIG (int)
Too much data for one row of a table.
SQLITE_CONSTRAINT (int)
Abort due to constraint violation.
SQLITE_MISMATCH (int)
Data type mismatch.
SQLITE_MISUSE (int)
Library used incorrectly.
SQLITE_NOLFS (int)
Uses of OS features not supported on host.
SQLITE_AUTH (int)
Authorized failed.
SQLITE_ROW (int)
Internal process has another row ready.
SQLITE_DONE (int)
Internal process has finished executing.
资源类型
SQLite 函数
SQLite


SQLite 函数

预定义类

SQLiteDatabase

Represents an opened SQLite database.

构造函数

  • __construct - construct a new SQLiteDatabase object

方法

  • query - Execute a query
  • queryExec - Execute a result-less query
  • arrayQuery - Execute a query and return the result as an array
  • singleQuery - Execute a query and return either an array for one single column or the value of the first row
  • unbufferedQuery - Execute an unbuffered query
  • lastInsertRowid - Returns the rowid of the most recently inserted row
  • changes - Returns the number of rows changed by the most recent statement
  • createAggregate - Register an aggregating UDF for use in SQL statements
  • createFunction - Register a UDF for use in SQL statements
  • busyTimeout - Sets or disables busy timeout duration
  • lastError - Returns the last error code of the most recently encountered error
  • fetchColumnTypes - Return an array of column types from a particular table

SQLiteResult

Represents a buffered SQLite result set.

方法

  • fetch - Fetches the next row from the result set as an array
  • fetchObject - Fetches the next row from the result set as an object
  • fetchSingle - Fetches the first column from the result set as a string
  • fetchAll - Fetches all rows from the result set as an array of arrays
  • column - Fetches a column from the current row of the result set
  • numFields - Returns the number of fields in the result set
  • fieldName - Returns the name of a particular field in the result set
  • current - Fetches the current row from the result set as an array
  • key - Return the current row index
  • next - Seek to the next row number
  • valid - Returns whether more rows are available
  • rewind - Seek to the first row number of the result set
  • prev - Seek to the previous row number of the result set
  • hasPrev - Returns whether or not a previous row is available
  • numRows - Returns the number of rows in the result set
  • seek - Seek to a particular row number

SQLiteUnbuffered

Represents an unbuffered SQLite result set. Unbuffered results sets are sequential, forward-seeking only.

方法

  • fetch - Fetches the next row from the result set as an array
  • fetchObject - Fetches the next row from the result set as an object
  • fetchSingle - Fetches the first column from the result set as a string
  • fetchAll - Fetches all rows from the result set as an array of arrays
  • column - Fetches a column from the current row of the result set
  • numFields - Returns the number of fields in the result set
  • fieldName - Returns the name of a particular field in the result set
  • current - Fetches the current row from the result set as an array
  • next - Seek to the next row number
  • valid - Returns whether more rows are available

Table of Contents

  • sqlite_array_query — Execute a query against a given database and returns an array
  • sqlite_busy_timeout — Set busy timeout duration, or disable busy handlers
  • sqlite_changes — Returns the number of rows that were changed by the most recent SQL statement
  • sqlite_close — Closes an open SQLite database
  • sqlite_column — Fetches a column from the current row of a result set
  • sqlite_create_aggregate — Register an aggregating UDF for use in SQL statements
  • sqlite_create_function — Registers a "regular" User Defined Function for use in SQL statements
  • sqlite_current — Fetches the current row from a result set as an array
  • sqlite_error_string — Returns the textual description of an error code
  • sqlite_escape_string — Escapes a string for use as a query parameter
  • sqlite_exec — Executes a result-less query against a given database
  • sqlite_factory — Opens an SQLite database and returns an SQLiteDatabase object
  • sqlite_fetch_all — Fetches all rows from a result set as an array of arrays
  • sqlite_fetch_array — Fetches the next row from a result set as an array
  • sqlite_fetch_column_types — Return an array of column types from a particular table
  • sqlite_fetch_object — Fetches the next row from a result set as an object
  • sqlite_fetch_single — Fetches the first column of a result set as a string
  • sqlite_fetch_string — 别名 sqlite_fetch_single
  • sqlite_field_name — Returns the name of a particular field
  • sqlite_has_more — Finds whether or not more rows are available
  • sqlite_has_prev — Returns whether or not a previous row is available
  • sqlite_key — Returns the current row index
  • sqlite_last_error — Returns the error code of the last error for a database
  • sqlite_last_insert_rowid — Returns the rowid of the most recently inserted row
  • sqlite_libencoding — Returns the encoding of the linked SQLite library
  • sqlite_libversion — Returns the version of the linked SQLite library
  • sqlite_next — Seek to the next row number
  • sqlite_num_fields — Returns the number of fields in a result set
  • sqlite_num_rows — Returns the number of rows in a buffered result set
  • sqlite_open — Opens an SQLite database and create the database if it does not exist
  • sqlite_popen — Opens a persistent handle to an SQLite database and create the database if it does not exist
  • sqlite_prev — Seek to the previous row number of a result set
  • sqlite_query — Executes a query against a given database and returns a result handle
  • sqlite_rewind — Seek to the first row number
  • sqlite_seek — Seek to a particular row number of a buffered result set
  • sqlite_single_query — Executes a query and returns either an array for one single column or the value of the first row
  • sqlite_udf_decode_binary — Decode binary data passed as parameters to an UDF
  • sqlite_udf_encode_binary — Encode binary data before returning it from an UDF
  • sqlite_unbuffered_query — Execute a query that does not prefetch and buffer all data
  • sqlite_valid — Returns whether more rows are available
预定义常量
sqlite_array_query
SQLite


Execute a query against a given database and returns an array

SQLite 函数
sqlite_busy_timeout
SQLite 函数
PHP Manual

sqlite_array_query

SQLiteDatabase::arrayQuery

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_array_query -- SQLiteDatabase::arrayQuery — Execute a query against a given database and returns an array

说明

array sqlite_array_query ( resource $dbhandle , string $query [, int $result_type = SQLITE_BOTH [, bool $decode_binary = true ]] )
array sqlite_array_query ( string $query , resource $dbhandle [, int $result_type = SQLITE_BOTH [, bool $decode_binary = true ]] )

面向对象风格 (method):

public array SQLiteDatabase::arrayQuery ( string $query [, int $result_type = SQLITE_BOTH [, bool $decode_binary = true ]] )

sqlite_array_query() executes the given query and returns an array of the entire result set. It is similar to calling sqlite_query() and then sqlite_fetch_array() for each row in the result set. sqlite_array_query() is significantly faster than the aforementioned.

Tip

sqlite_array_query() is best suited to queries returning 45 rows or less. If you have more data than that, it is recommended that you write your scripts to use sqlite_unbuffered_query() instead for more optimal performance.

参数

query

The query to be executed.

Data inside the query should be properly escaped.

dbhandle

The SQLite Database resource; returned from sqlite_open() when used procedurally. This parameter is not required when using the object-oriented method.

result_type

可选的 result_type 参数接受常量，且决定返回的数组如何被索引。使用 SQLITE_ASSOC 会仅返回关联索引（已命名字段），而 SQLITE_NUM 会仅返回数值索引。SQLITE_BOTH 会同时返回关联和数值索引。SQLITE_BOTH 是此函数的默认值。

decode_binary

当 decode_binary 参数设置为 TRUE（默认值）时，PHP 会解码那些由 sqlite_escape_string() 编码后的二进制数据。通常应保留此值为其默认值，除非要与其他使用 SQLlite 的应用程序建立的数据交互。

Note: 为兼容其他数据库扩展(比如 MySQL)，支持两种可替代的语法。推荐第一种格式，函数的第一个参数是dbhandle。

返回值

Returns an array of the entire result set; FALSE otherwise.

由 SQLITE_ASSOC 与 SQLITE_BOTH 返回的列名会依照 sqlite.assoc_case 配置选项的值决定大小写。

范例

Example #1 过程化风格

<?php
$dbhandle = sqlite_open('sqlitedb');
$result = sqlite_array_query($dbhandle, 'SELECT name, email FROM users LIMIT 25', SQLITE_ASSOC);
foreach ($result as $entry) {
    echo 'Name: ' . $entry['name'] . '  E-mail: ' . $entry['email'];
}
?>

Example #2 Object-oriented style

<?php
$dbhandle = new SQLiteDatabase('sqlitedb');
$result = $dbhandle->arrayQuery('SELECT name, email FROM users LIMIT 25', SQLITE_ASSOC);
foreach ($result as $entry) {
    echo 'Name: ' . $entry['name'] . '  E-mail: ' . $entry['email'];
}
?>

参见

  • sqlite_query() - Executes a query against a given database and returns a result handle
  • sqlite_fetch_array() - Fetches the next row from a result set as an array
  • sqlite_fetch_string() - 别名 sqlite_fetch_single

SQLite 函数
sqlite_busy_timeout
SQLite 函数


Set busy timeout duration, or disable busy handlers

sqlite_array_query
sqlite_changes
SQLite 函数
PHP Manual

sqlite_busy_timeout

SQLiteDatabase::busyTimeout

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_busy_timeout -- SQLiteDatabase::busyTimeout — Set busy timeout duration, or disable busy handlers

说明

void sqlite_busy_timeout ( resource $dbhandle , int $milliseconds )

面向对象风格 (method):

public void SQLiteDatabase::busyTimeout ( int $milliseconds )

Set the maximum time, in milliseconds, that SQLite will wait for a dbhandle to become ready for use.

参数

dbhandle

The SQLite Database resource; returned from sqlite_open() when used procedurally. This parameter is not required when using the object-oriented method.

milliseconds

The number of milliseconds. When set to 0, busy handlers will be disabled and SQLite will return immediately with a SQLITE_BUSY status code if another process/thread has the database locked for an update.

PHP sets the default busy timeout to be 60 seconds when the database is opened.

Note:

There are one thousand (1000) milliseconds in one second.

返回值

没有返回值。

范例

Example #1 过程化风格

<?php
$dbhandle = sqlite_open('sqlitedb');
sqlite_busy_timeout($dbhandle, 10000); // set timeout to 10 seconds
sqlite_busy_timeout($dbhandle, 0); // disable busy handler
?>

Example #2 面向对象风格

<?php
$dbhandle = new SQLiteDatabase('sqlitedb');
$dbhandle->busyTimeout(10000); // 10 seconds
$dbhandle->busyTimeout(0); // disable
?>

参见

  • sqlite_open() - Opens an SQLite database and create the database if it does not exist

sqlite_array_query
sqlite_changes
SQLite 函数


Returns the number of rows that were changed by the most recent SQL statement

sqlite_busy_timeout
sqlite_close
SQLite 函数
PHP Manual

sqlite_changes

SQLiteDatabase::changes

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_changes -- SQLiteDatabase::changes — Returns the number of rows that were changed by the most recent SQL statement

说明

int sqlite_changes ( resource $dbhandle )

面向对象风格 (method):

public int SQLiteDatabase::changes ( void )

Returns the numbers of rows that were changed by the most recent SQL statement executed against the dbhandle database handle.

参数

dbhandle

The SQLite Database resource; returned from sqlite_open() when used procedurally. This parameter is not required when using the object-oriented method.

返回值

Returns the number of changed rows.

范例

Example #1 过程化风格

<?php
$dbhandle = sqlite_open('mysqlitedb');
$query = sqlite_query($dbhandle, "UPDATE users SET email='jDoe@example.com' WHERE username='jDoe'");
if (!$query) {
    exit('Error in query.');
} else {
    echo 'Number of rows modified: ', sqlite_changes($dbhandle);
}
?>

Example #2 面向对象风格

<?php
$dbhandle = new SQLiteDatabase('mysqlitedb');
$query = $dbhandle->query("UPDATE users SET email='jDoe@example.com' WHERE username='jDoe'");
if (!$query) {
    exit('Error in query.');
} else {
    echo 'Number of rows modified: ', $dbhandle->changes();
}
?>

参见

  • sqlite_open() - Opens an SQLite database and create the database if it does not exist

sqlite_busy_timeout
sqlite_close
SQLite 函数


Closes an open SQLite database

sqlite_changes
sqlite_column
SQLite 函数
PHP Manual

sqlite_close

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_close — Closes an open SQLite database

说明

void sqlite_close ( resource $dbhandle )

Closes the given db_handle database handle. If the database was persistent, it will be closed and removed from the persistent list.

参数

dbhandle

The SQLite Database resource; returned from sqlite_open() when used procedurally.

返回值

没有返回值。

范例

Example #1 sqlite_close() example

<?php
$dbhandle = sqlite_open('sqlitedb');
sqlite_close($dbhandle);
?>

参见

  • sqlite_open() - Opens an SQLite database and create the database if it does not exist
  • sqlite_popen() - Opens a persistent handle to an SQLite database and create the database if it does not exist

sqlite_changes
sqlite_column
SQLite 函数


Fetches a column from the current row of a result set

sqlite_close
sqlite_create_aggregate
SQLite 函数
PHP Manual

sqlite_column

SQLiteResult::column

SQLiteUnbuffered::column

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_column -- SQLiteResult::column -- SQLiteUnbuffered::column — Fetches a column from the current row of a result set

说明

mixed sqlite_column ( resource $result , mixed $index_or_name [, bool $decode_binary = true ] )
mixed SQLiteResult::column ( mixed $index_or_name [, bool $decode_binary = true ] )
mixed SQLiteUnbuffered::column ( mixed $index_or_name [, bool $decode_binary = true ] )

Fetches the value of a column named index_or_name (if it is a string), or of the ordinal column numbered index_or_name (if it is an integer) from the current row of the query result handle result.

参数

result

The SQLite result resource. This parameter is not required when using the object-oriented method.

index_or_name

The column index or name to fetch.

decode_binary

当 decode_binary 参数设置为 TRUE（默认值）时，PHP 会解码那些由 sqlite_escape_string() 编码后的二进制数据。通常应保留此值为其默认值，除非要与其他使用 SQLlite 的应用程序建立的数据交互。

返回值

Returns the column value.

注释

Note:

Use this function when you are iterating a large result set with many columns, or with columns that contain large amounts of data.

参见

  • sqlite_fetch_string() - 别名 sqlite_fetch_single

sqlite_close
sqlite_create_aggregate
SQLite 函数


Register an aggregating UDF for use in SQL statements

sqlite_column
sqlite_create_function
SQLite 函数
PHP Manual

sqlite_create_aggregate

SQLiteDatabase::createAggregate

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_create_aggregate -- SQLiteDatabase::createAggregate — Register an aggregating UDF for use in SQL statements

说明

void sqlite_create_aggregate ( resource $dbhandle , string $function_name , callable $step_func , callable $finalize_func [, int $num_args = -1 ] )

面向对象风格 (method):

public void SQLiteDatabase::createAggregate ( string $function_name , callable $step_func , callable $finalize_func [, int $num_args = -1 ] )

sqlite_create_aggregate() is similar to sqlite_create_function() except that it registers functions that can be used to calculate a result aggregated across all the rows of a query.

The key difference between this function and sqlite_create_function() is that two functions are required to manage the aggregate; step_func is called for each row of the result set. Your PHP function should accumulate the result and store it into the aggregation context. Once all the rows have been processed, finalize_func will be called and it should then take the data from the aggregation context and return the result. Callback functions should return a type understood by SQLite (i.e. scalar type).

参数

dbhandle

The SQLite Database resource; returned from sqlite_open() when used procedurally. This parameter is not required when using the object-oriented method.

function_name

The name of the function used in SQL statements.

step_func

Callback function called for each row of the result set. Function parameters are &$context, $value, ....

finalize_func

Callback function to aggregate the "stepped" data from each row. Function parameter is &$context and the function should return the final result of aggregation.

num_args

Hint to the SQLite parser if the callback function accepts a predetermined number of arguments.

返回值

没有返回值。

范例

Example #1 max_length aggregation function example

<?php
$data = array(
   'one',
   'two',
   'three',
   'four',
   'five',
   'six',
   'seven',
   'eight',
   'nine',
   'ten',
   );
$dbhandle = sqlite_open(':memory:');
sqlite_query($dbhandle, "CREATE TABLE strings(a)");
foreach ($data as $str) {
    $str = sqlite_escape_string($str);
    sqlite_query($dbhandle, "INSERT INTO strings VALUES ('$str')");
}

function max_len_step(&$context, $string)
{
    if (strlen($string) > $context) {
        $context = strlen($string);
    }
}

function max_len_finalize(&$context)
{
    return $context;
}

sqlite_create_aggregate($dbhandle, 'max_len', 'max_len_step', 'max_len_finalize');

var_dump(sqlite_array_query($dbhandle, 'SELECT max_len(a) from strings'));

?>

In this example, we are creating an aggregating function that will calculate the length of the longest string in one of the columns of the table. For each row, the max_len_step function is called and passed a context parameter. The context parameter is just like any other PHP variable and be set to hold an array or even an object value. In this example, we are simply using it to hold the maximum length we have seen so far; if the string has a length longer than the current maximum, we update the context to hold this new maximum length.

After all of the rows have been processed, SQLite calls the max_len_finalize function to determine the aggregate result. Here, we could perform some kind of calculation based on the data found in the context. In our simple example though, we have been calculating the result as the query progressed, so we simply need to return the context value.

Note:

The example above will not work correctly if the column contains binary data. Take a look at the manual page for sqlite_udf_decode_binary() for an explanation of why this is so, and an example of how to make it respect the binary encoding.

Tip

It is NOT recommended for you to store a copy of the values in the context and then process them at the end, as you would cause SQLite to use a lot of memory to process the query - just think of how much memory you would need if a million rows were stored in memory, each containing a string 32 bytes in length.

Tip

You can use sqlite_create_function() and sqlite_create_aggregate() to override SQLite native SQL functions.

参见

  • sqlite_create_function() - Registers a "regular" User Defined Function for use in SQL statements
  • sqlite_udf_encode_binary() - Encode binary data before returning it from an UDF
  • sqlite_udf_decode_binary() - Decode binary data passed as parameters to an UDF

sqlite_column
sqlite_create_function
SQLite 函数


Registers a "regular" User Defined Function for use in SQL statements

sqlite_create_aggregate
sqlite_current
SQLite 函数
PHP Manual

sqlite_create_function

SQLiteDatabase::createFunction

(PHP 5 < 5.4.0, sqlite >= 1.0.0)

sqlite_create_function -- SQLiteDatabase::createFunction — Registers a "regular" User Defined Function for use in SQL statements

说明

void sqlite_create_function ( resource $dbhandle , string $function_name , callable $callback [, int $num_args = -1 ] )

面向对象风格 (method):

public void SQLiteDatabase::createFunction ( string $function_name , callable $callback [, int $num_args = -1 ] )

sqlite_create_function() allows you to register a PHP function with SQLite as an UDF (User Defined Function), so that it can be called from within your SQL statements.

The UDF can be used in any SQL statement that can call functions, such as SELECT and UPDATE statements and also in triggers.

参数

dbhandle

The SQLite Database resource; returned from sqlite_open() when used procedurally. This parameter is not required when using the object-oriented method.

function_name

The name of the function used in SQL statements.

callback

Callback function to handle the defined SQL function.

Note: Callback functions should return a type understood by SQLite (i.e. scalar type).

num_args

Hint to the SQLite parser if the callback function accepts a predetermined number of arguments.

Note: 为兼容其他数据库扩展(比如 MySQL)，支持两种可替代的语法。推荐第一种格式，函数的第一个参数是dbhandle。

返回值

没有返回值。

范例

Example #1 sqlite_create_function() example

<?php
function md5_and_reverse($string)
{
    return strrev(md5($string));
}

if ($dbhandle = sqlite_open('mysqlitedb', 0666, $sqliteerror)) {

    sqlite_create_function($dbhandle, 'md5rev', 'md5_and_reverse', 1);

    $sql  = 'SELECT md5rev(filename) FROM files';
    $rows = sqlite_array_query($dbhandle, $sql);
} else {
    echo 'Error opening sqlite db: ' . $sqliteerror;
    exit;
}
?>

In this example, we have a function that calculates the md5 sum of a string, and then reverses it. When the SQL statement executes, it returns the value of the filename transformed by our function. The data returned in $rows contains the processed result.

The beauty of this technique is that you do not need to process the result using a foreach loop after you have queried for the data.

PHP registers a special function named php when the database is first opened. The php function can be used to call any PHP function without having to register it first.

Example #2 Example of using the PHP function

<?php
$rows = sqlite_array_query($dbhandle, "SELECT php('md5', filename) from files");
?>

This example will call the md5() on each filename column in the database and return the result into $rows

Note:

For performance reasons, PHP will not automatically encode/decode binary data passed to and from your UDF's. You need to manually encode/decode the parameters and return values if you need to process binary data in this way. Take a look at sqlite_udf_encode_binary() and sqlite_udf_decode_binary() for more details.

Tip

It is not recommended to use UDF's to handle processing of binary data, unless high performance is not a key requirement of your application.

Tip

You can use sqlite_create_function() and sqlite_create_aggregate() to override SQLite native SQL functions.

参见

  • sqlite_create_aggregate() - Register an aggregating UDF for use in SQL statements

sqlite_create_aggregate
sqlite_current
SQLite 函数


Fetches the current row from a result set as an array

sqlite_create_function
sqlite_error_string
SQLite 函数
PHP Manual

sqlite_current

SQLiteResult::current

SQLiteUnbuffered::current

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_current -- SQLiteResult::current -- SQLiteUnbuffered::current — Fetches the current row from a result set as an array

说明

array sqlite_current ( resource $result [, int $result_type = SQLITE_BOTH [, bool $decode_binary = true ]] )

面向对象风格 (method):

array SQLiteResult::current ([ int $result_type = SQLITE_BOTH [, bool $decode_binary = true ]] )
array SQLiteUnbuffered::current ([ int $result_type = SQLITE_BOTH [, bool $decode_binary = true ]] )

sqlite_current() is identical to sqlite_fetch_array() except that it does not advance to the next row prior to returning the data; it returns the data from the current position only.

参数

result

The SQLite result resource. This parameter is not required when using the object-oriented method.

result_type

可选的 result_type 参数接受常量，且决定返回的数组如何被索引。使用 SQLITE_ASSOC 会仅返回关联索引（已命名字段），而 SQLITE_NUM 会仅返回数值索引。SQLITE_BOTH 会同时返回关联和数值索引。SQLITE_BOTH 是此函数的默认值。

decode_binary

当 decode_binary 参数设置为 TRUE（默认值）时，PHP 会解码那些由 sqlite_escape_string() 编码后的二进制数据。通常应保留此值为其默认值，除非要与其他使用 SQLlite 的应用程序建立的数据交互。

返回值

Returns an array of the current row from a result set; FALSE if the current position is beyond the final row.

由 SQLITE_ASSOC 与 SQLITE_BOTH 返回的列名会依照 sqlite.assoc_case 配置选项的值决定大小写。

参见

  • sqlite_seek() - Seek to a particular row number of a buffered result set
  • sqlite_next() - Seek to the next row number
  • sqlite_fetch_array() - Fetches the next row from a result set as an array

sqlite_create_function
sqlite_error_string
SQLite 函数


Returns the textual description of an error code

sqlite_current
sqlite_escape_string
SQLite 函数
PHP Manual

sqlite_error_string

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_error_string — Returns the textual description of an error code

说明

string sqlite_error_string ( int $error_code )

Returns a human readable description of the error_code returned from sqlite_last_error().

参数

error_code

The error code being used, which might be passed in from sqlite_last_error().

返回值

Returns a human readable description of the error_code, as a string.

参见

  • sqlite_last_error() - Returns the error code of the last error for a database

sqlite_current
sqlite_escape_string
SQLite 函数


Escapes a string for use as a query parameter

sqlite_error_string
sqlite_exec
SQLite 函数
PHP Manual

sqlite_escape_string

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_escape_string — Escapes a string for use as a query parameter

说明

string sqlite_escape_string ( string $item )

sqlite_escape_string() will correctly quote the string specified by item for use in an SQLite SQL statement. This includes doubling up single-quote characters (') and checking for binary-unsafe characters in the query string.

Although the encoding makes it safe to insert the data, it will render simple text comparisons and LIKE clauses in your queries unusable for the columns that contain the binary data. In practice, this shouldn't be a problem, as your schema should be such that you don't use such things on binary columns (in fact, it might be better to store binary data using other means, such as in files).

参数

item

The string being quoted.

If the item contains a NUL character, or if it begins with a character whose ordinal value is 0x01, PHP will apply a binary encoding scheme so that you can safely store and retrieve binary data.

返回值

Returns an escaped string for use in an SQLite SQL statement.

注释

Note:

    Do not use this function to encode the return values from UDF's created
    using sqlite_create_function() or
    sqlite_create_aggregate() - use
    sqlite_udf_encode_binary() instead.

Warning

addslashes() should NOT be used to quote your strings for SQLite queries; it will lead to strange results when retrieving your data.

参见

  • sqlite_udf_encode_binary() - Encode binary data before returning it from an UDF

sqlite_error_string
sqlite_exec
SQLite 函数


Executes a result-less query against a given database

sqlite_escape_string
sqlite_factory
SQLite 函数
PHP Manual

sqlite_exec

SQLiteDatabase::exec

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.3)

sqlite_exec -- SQLiteDatabase::exec — Executes a result-less query against a given database

说明

bool sqlite_exec ( resource $dbhandle , string $query [, string &$error_msg ] )
bool sqlite_exec ( string $query , resource $dbhandle )

面向对象风格 (method):

public bool SQLiteDatabase::queryExec ( string $query [, string &$error_msg ] )

Executes an SQL statement given by the query against a given database handle (specified by the dbhandle parameter).

Warning

SQLite will execute multiple queries separated by semicolons, so you can use it to execute a batch of SQL that you have loaded from a file or have embedded in a script.

参数

dbhandle

The SQLite Database resource; returned from sqlite_open() when used procedurally. This parameter is not required when using the object-oriented method.

query

The query to be executed.

Data inside the query should be properly escaped.

error_msg

The specified variable will be filled if an error occurs. This is specially important because SQL syntax errors can't be fetched using the sqlite_last_error() function.

Note: 为兼容其他数据库扩展(比如 MySQL)，支持两种可替代的语法。推荐第一种格式，函数的第一个参数是dbhandle。

返回值

This function will return a boolean result; TRUE for success or FALSE for failure. If you need to run a query that returns rows, see sqlite_query().

由 SQLITE_ASSOC 与 SQLITE_BOTH 返回的列名会依照 sqlite.assoc_case 配置选项的值决定大小写。

更新日志

版本 | 说明
5.1.0 | Added the error_msg parameter

范例

Example #1 Procedural example

<?php
$dbhandle = sqlite_open('mysqlitedb');
$query = sqlite_exec($dbhandle, "UPDATE users SET email='jDoe@example.com' WHERE username='jDoe'", $error);
if (!$query) {
    exit("Error in query: '$error'");
} else {
    echo 'Number of rows modified: ', sqlite_changes($dbhandle);
}
?>

Example #2 Object-oriented example

<?php
$dbhandle = new SQLiteDatabase('mysqlitedb');
$query = $dbhandle->queryExec("UPDATE users SET email='jDoe@example.com' WHERE username='jDoe'", $error);
if (!$query) {
    exit("Error in query: '$error'");
} else {
    echo 'Number of rows modified: ', $dbhandle->changes();
}
?>

参见

  • sqlite_query() - Executes a query against a given database and returns a result handle
  • sqlite_unbuffered_query() - Execute a query that does not prefetch and buffer all data
  • sqlite_array_query() - Execute a query against a given database and returns an array

sqlite_escape_string
sqlite_factory
SQLite 函数


Opens an SQLite database and returns an SQLiteDatabase object

sqlite_exec
sqlite_fetch_all
SQLite 函数
PHP Manual

sqlite_factory

(PHP 5 < 5.4.0)

sqlite_factory — Opens an SQLite database and returns an SQLiteDatabase object

说明

SQLiteDatabase sqlite_factory ( string $filename [, int $mode = 0666 [, string &$error_message ]] )

sqlite_factory() behaves similarly to sqlite_open() in that it opens an SQLite database or attempts to create it if it does not exist. However, a SQLiteDatabase object is returned rather than a resource. Please see the sqlite_open() reference page for further usage and caveats.

参数

filename

The filename of the SQLite database.

mode

The mode of the file. Intended to be used to open the database in read-only mode. Presently, this parameter is ignored by the sqlite library. The default value for mode is the octal value 0666 and this is the recommended value.

error_message

Passed by reference and is set to hold a descriptive error message explaining why the database could not be opened if there was an error.

返回值

Returns an SQLiteDatabase object on success, NULL on error.

范例

Example #1 sqlite_factory() example

<?php
$dbhandle = sqlite_factory('sqlitedb');
$dbhandle->query('SELECT user_id, username FROM users');

/* functionally equivalent to: */

$dbhandle = new SQLiteDatabase('sqlitedb');
$dbhandle->query('SELECT user_id, username FROM users');

?>

参见

  • sqlite_open() - Opens an SQLite database and create the database if it does not exist
  • sqlite_popen() - Opens a persistent handle to an SQLite database and create the database if it does not exist

sqlite_exec
sqlite_fetch_all
SQLite 函数


Fetches all rows from a result set as an array of arrays

sqlite_factory
sqlite_fetch_array
SQLite 函数
PHP Manual

sqlite_fetch_all

SQLiteResult::fetchAll

SQLiteUnbuffered::fetchAll

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_fetch_all -- SQLiteResult::fetchAll -- SQLiteUnbuffered::fetchAll — Fetches all rows from a result set as an array of arrays

说明

array sqlite_fetch_all ( resource $result [, int $result_type = SQLITE_BOTH [, bool $decode_binary = true ]] )

面向对象风格 (method):

array SQLiteResult::fetchAll ([ int $result_type = SQLITE_BOTH [, bool $decode_binary = true ]] )
array SQLiteUnbuffered::fetchAll ([ int $result_type = SQLITE_BOTH [, bool $decode_binary = true ]] )

sqlite_fetch_all() returns an array of the entire result set from the result resource. It is similar to calling sqlite_query() (or sqlite_unbuffered_query()) and then sqlite_fetch_array() for each row in the result set.

参数

result

The SQLite result resource. This parameter is not required when using the object-oriented method.

result_type

可选的 result_type 参数接受常量，且决定返回的数组如何被索引。使用 SQLITE_ASSOC 会仅返回关联索引（已命名字段），而 SQLITE_NUM 会仅返回数值索引。SQLITE_BOTH 会同时返回关联和数值索引。SQLITE_BOTH 是此函数的默认值。

decode_binary

当 decode_binary 参数设置为 TRUE（默认值）时，PHP 会解码那些由 sqlite_escape_string() 编码后的二进制数据。通常应保留此值为其默认值，除非要与其他使用 SQLlite 的应用程序建立的数据交互。

返回值

Returns an array of the remaining rows in a result set. If called right after sqlite_query(), it returns all rows. If called after sqlite_fetch_array(), it returns the rest. If there are no rows in a result set, it returns an empty array.

由 SQLITE_ASSOC 与 SQLITE_BOTH 返回的列名会依照 sqlite.assoc_case 配置选项的值决定大小写。

范例

Example #1 Procedural example

<?php
$dbhandle = sqlite_open('sqlitedb');
$query = sqlite_query($dbhandle, 'SELECT name, email FROM users LIMIT 25');
$result = sqlite_fetch_all($query, SQLITE_ASSOC);
foreach ($result as $entry) {
    echo 'Name: ' . $entry['name'] . '  E-mail: ' . $entry['email'];
}
?>

Example #2 Object-oriented example

<?php
$dbhandle = new SQLiteDatabase('sqlitedb');

$query = $dbhandle->query('SELECT name, email FROM users LIMIT 25'); // buffered result set
$query = $dbhandle->unbufferedQuery('SELECT name, email FROM users LIMIT 25'); // unbuffered result set

$result = $query->fetchAll(SQLITE_ASSOC);
foreach ($result as $entry) {
    echo 'Name: ' . $entry['name'] . '  E-mail: ' . $entry['email'];
}
?>

参见

  • sqlite_fetch_array() - Fetches the next row from a result set as an array

sqlite_factory
sqlite_fetch_array
SQLite 函数


Fetches the next row from a result set as an array

sqlite_fetch_all
sqlite_fetch_column_types
SQLite 函数
PHP Manual

sqlite_fetch_array

SQLiteResult::fetch

SQLiteUnbuffered::fetch

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_fetch_array -- SQLiteResult::fetch -- SQLiteUnbuffered::fetch — Fetches the next row from a result set as an array

说明

array sqlite_fetch_array ( resource $result [, int $result_type = SQLITE_BOTH [, bool $decode_binary = true ]] )

面向对象风格 (method):

array SQLiteResult::fetch ([ int $result_type = SQLITE_BOTH [, bool $decode_binary = true ]] )
array SQLiteUnbuffered::fetch ([ int $result_type = SQLITE_BOTH [, bool $decode_binary = true ]] )

Fetches the next row from the given result handle. If there are no more rows, returns FALSE, otherwise returns an associative array representing the row data.

参数

result

The SQLite result resource. This parameter is not required when using the object-oriented method.

result_type

可选的 result_type 参数接受常量，且决定返回的数组如何被索引。使用 SQLITE_ASSOC 会仅返回关联索引（已命名字段），而 SQLITE_NUM 会仅返回数值索引。SQLITE_BOTH 会同时返回关联和数值索引。SQLITE_BOTH 是此函数的默认值。

decode_binary

当 decode_binary 参数设置为 TRUE（默认值）时，PHP 会解码那些由 sqlite_escape_string() 编码后的二进制数据。通常应保留此值为其默认值，除非要与其他使用 SQLlite 的应用程序建立的数据交互。

返回值

Returns an array of the next row from a result set; FALSE if the next position is beyond the final row.

由 SQLITE_ASSOC 与 SQLITE_BOTH 返回的列名会依照 sqlite.assoc_case 配置选项的值决定大小写。

范例

Example #1 Procedural example

<?php
$dbhandle = sqlite_open('sqlitedb');
$query = sqlite_query($dbhandle, 'SELECT name, email FROM users LIMIT 25');
while ($entry = sqlite_fetch_array($query, SQLITE_ASSOC)) {
    echo 'Name: ' . $entry['name'] . '  E-mail: ' . $entry['email'];
}
?>

Example #2 Object-oriented example

<?php
$dbhandle = new SQLiteDatabase('sqlitedb');

$query = $dbhandle->query('SELECT name, email FROM users LIMIT 25'); // buffered result set
$query = $dbhandle->unbufferedQuery('SELECT name, email FROM users LIMIT 25'); // unbuffered result set

while ($entry = $query->fetch(SQLITE_ASSOC)) {
    echo 'Name: ' . $entry['name'] . '  E-mail: ' . $entry['email'];
}
?>

参见

  • sqlite_array_query() - Execute a query against a given database and returns an array
  • sqlite_fetch_string() - 别名 sqlite_fetch_single

sqlite_fetch_all
sqlite_fetch_column_types
SQLite 函数


Return an array of column types from a particular table

sqlite_fetch_array
sqlite_fetch_object
SQLite 函数
PHP Manual

sqlite_fetch_column_types

SQLiteDatabase::fetchColumnTypes

(PHP 5 < 5.4.0)

sqlite_fetch_column_types -- SQLiteDatabase::fetchColumnTypes — Return an array of column types from a particular table

说明

array sqlite_fetch_column_types ( string $table_name , resource $dbhandle [, int $result_type = SQLITE_ASSOC ] )

面向对象风格 (method):

public array SQLiteDatabase::fetchColumnTypes ( string $table_name [, int $result_type = SQLITE_ASSOC ] )

sqlite_fetch_column_types() returns an array of column data types from the specified table_name table.

参数

table_name

The table name to query.

dbhandle

The SQLite Database resource; returned from sqlite_open() when used procedurally. This parameter is not required when using the object-oriented method.

result_type

The optional result_type parameter accepts a constant and determines how the returned array will be indexed. Using SQLITE_ASSOC will return only associative indices (named fields) while SQLITE_NUM will return only numerical indices (ordinal field numbers). SQLITE_ASSOC is the default for this function.

返回值

Returns an array of column data types; FALSE on error.

由 SQLITE_ASSOC 与 SQLITE_BOTH 返回的列名会依照 sqlite.assoc_case 配置选项的值决定大小写。

更新日志

版本 | 说明
5.1.0 | Added result_type

范例

Example #1 Procedural example

<?php
$db = sqlite_open('mysqlitedb');
sqlite_query($db, 'CREATE TABLE foo (bar varchar(10), arf text)');
$cols = sqlite_fetch_column_types('foo', $db, SQLITE_ASSOC);

foreach ($cols as $column => $type) {
    echo "Column: $column  Type: $type\n";
}
?>

Example #2 Object-oriented example

<?php
$db = new SQLiteDatabase('mysqlitedb');
$db->query('CREATE TABLE foo (bar varchar(10), arf text)');
$cols = $db->fetchColumnTypes('foo', SQLITE_ASSOC);

foreach ($cols as $column => $type) {
    echo "Column: $column  Type: $type\n";
}
?>

以上例程会输出：

Column: bar  Type: VARCHAR
Column: arf  Type: TEXT

sqlite_fetch_array
sqlite_fetch_object
SQLite 函数


Fetches the next row from a result set as an object

sqlite_fetch_column_types
sqlite_fetch_single
SQLite 函数
PHP Manual

sqlite_fetch_object

SQLiteResult::fetchObject

SQLiteUnbuffered::fetchObject

(PHP 5 < 5.4.0)

sqlite_fetch_object -- SQLiteResult::fetchObject -- SQLiteUnbuffered::fetchObject — Fetches the next row from a result set as an object

说明

object sqlite_fetch_object ( resource $result [, string $class_name [, array $ctor_params [, bool $decode_binary = true ]]] )

面向对象风格 (method):

object SQLiteResult::fetchObject ([ string $class_name [, array $ctor_params [, bool $decode_binary = true ]]] )
object SQLiteUnbuffered::fetchObject ([ string $class_name [, array $ctor_params [, bool $decode_binary = true ]]] )
Warning

本函数还未编写文档，仅有参数列表。

sqlite_fetch_column_types
sqlite_fetch_single
SQLite 函数


Fetches the first column of a result set as a string

sqlite_fetch_object
sqlite_fetch_string
SQLite 函数
PHP Manual

sqlite_fetch_single

SQLiteResult::fetchSingle

SQLiteUnbuffered::fetchSingle

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.1)

sqlite_fetch_single -- SQLiteResult::fetchSingle -- SQLiteUnbuffered::fetchSingle — Fetches the first column of a result set as a string

说明

string sqlite_fetch_single ( resource $result [, bool $decode_binary = true ] )

面向对象风格 (method):

string SQLiteResult::fetchSingle ([ bool $decode_binary = true ] )
string SQLiteUnbuffered::fetchSingle ([ bool $decode_binary = true ] )

sqlite_fetch_single() is identical to sqlite_fetch_array() except that it returns the value of the first column of the rowset.

This is the most optimal way to retrieve data when you are only interested in the values from a single column of data.

参数

result

The SQLite result resource. This parameter is not required when using the object-oriented method.

decode_binary

当 decode_binary 参数设置为 TRUE（默认值）时，PHP 会解码那些由 sqlite_escape_string() 编码后的二进制数据。通常应保留此值为其默认值，除非要与其他使用 SQLlite 的应用程序建立的数据交互。

返回值

Returns the first column value, as a string.

范例

Example #1 A sqlite_fetch_single() example

<?php
if ($dbhandle = sqlite_open('mysqlitedb', 0666, $sqliteerror)) {

    $sql = "SELECT id FROM sometable WHERE id = 42";
    $res = sqlite_query($dbhandle, $sql);

    if (sqlite_num_rows($res) > 0) {
        echo sqlite_fetch_single($res); // 42
    }

    sqlite_close($dbhandle);
}
?>

参见

  • sqlite_fetch_array() - Fetches the next row from a result set as an array

sqlite_fetch_object
sqlite_fetch_string
SQLite 函数


别名 sqlite_fetch_single

sqlite_fetch_single
sqlite_field_name
SQLite 函数
PHP Manual

sqlite_fetch_string

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_fetch_string — 别名 sqlite_fetch_single()

说明

此函数是该函数的别名： sqlite_fetch_single().

sqlite_fetch_single
sqlite_field_name
SQLite 函数


Returns the name of a particular field

sqlite_fetch_string
sqlite_has_more
SQLite 函数
PHP Manual

sqlite_field_name

SQLiteResult::fieldName

SQLiteUnbuffered::fieldName

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_field_name -- SQLiteResult::fieldName -- SQLiteUnbuffered::fieldName — Returns the name of a particular field

说明

string sqlite_field_name ( resource $result , int $field_index )

面向对象风格 (method):

string SQLiteResult::fieldName ( int $field_index )
string SQLiteUnbuffered::fieldName ( int $field_index )

Given the ordinal column number, field_index, sqlite_field_name() returns the name of that field in the result set result.

参数

result

The SQLite result resource. This parameter is not required when using the object-oriented method.

field_index

The ordinal column number in the result set.

返回值

Returns the name of a field in an SQLite result set, given the ordinal column number; FALSE on error.

由 SQLITE_ASSOC 与 SQLITE_BOTH 返回的列名会依照 sqlite.assoc_case 配置选项的值决定大小写。

sqlite_fetch_string
sqlite_has_more
SQLite 函数


Finds whether or not more rows are available

sqlite_field_name
sqlite_has_prev
SQLite 函数
PHP Manual

sqlite_has_more

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_has_more — Finds whether or not more rows are available

说明

bool sqlite_has_more ( resource $result )

Finds whether more rows are available from the given result set.

参数

result

The SQLite result resource.

返回值

Returns TRUE if there are more rows available from the result handle, or FALSE otherwise.

参见

  • sqlite_num_rows() - Returns the number of rows in a buffered result set
  • sqlite_changes() - Returns the number of rows that were changed by the most recent SQL statement

sqlite_field_name
sqlite_has_prev
SQLite 函数


Returns whether or not a previous row is available

sqlite_has_more
sqlite_key
SQLite 函数
PHP Manual

sqlite_has_prev

SQLiteResult::hasPrev

(PHP 5 < 5.4.0)

sqlite_has_prev -- SQLiteResult::hasPrev — Returns whether or not a previous row is available

说明

bool sqlite_has_prev ( resource $result )

面向对象风格 (method):

bool SQLiteResult::hasPrev ( void )

Find whether there are more previous rows from the given result handle.

参数

result

The SQLite result resource. This parameter is not required when using the object-oriented method.

Note:

此函数不能用于未缓冲的结果句柄。

返回值

Returns TRUE if there are more previous rows available from the result handle, or FALSE otherwise.

参见

  • sqlite_prev() - Seek to the previous row number of a result set
  • sqlite_has_more() - Finds whether or not more rows are available
  • sqlite_num_rows() - Returns the number of rows in a buffered result set

sqlite_has_more
sqlite_key
SQLite 函数


Returns the current row index

sqlite_has_prev
sqlite_last_error
SQLite 函数
PHP Manual

sqlite_key

SQLiteResult::key

(PHP 5 >= 5.1.0 and < 5.4.0)

sqlite_key -- SQLiteResult::key — Returns the current row index

说明

面向对象风格 (method):

int SQLiteResult::key ( void )

SQLiteResult::key() returns the current row index of the buffered result set result.

Unlike all other SQLite functions, this function does not have a procedural version, and can only be called as a method on a SQLiteResult object.

返回值

Returns the current row index of the buffered result set result.

参见

  • sqlite_next() - Seek to the next row number
  • sqlite_current() - Fetches the current row from a result set as an array
  • sqlite_rewind() - Seek to the first row number

sqlite_has_prev
sqlite_last_error
SQLite 函数


Returns the error code of the last error for a database

sqlite_key
sqlite_last_insert_rowid
SQLite 函数
PHP Manual

sqlite_last_error

SQLiteDatabase::lastError

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_last_error -- SQLiteDatabase::lastError — Returns the error code of the last error for a database

说明

int sqlite_last_error ( resource $dbhandle )

面向对象风格 (method):

public int SQLiteDatabase::lastError ( void )

Returns the error code from the last operation performed on dbhandle (the database handle), or 0 when no error occurred. A human readable description of the error code can be retrieved using sqlite_error_string().

参数

dbhandle

The SQLite Database resource; returned from sqlite_open() when used procedurally. This parameter is not required when using the object-oriented method.

返回值

Returns an error code, or 0 if no error occurred.

参见

  • sqlite_error_string() - Returns the textual description of an error code

sqlite_key
sqlite_last_insert_rowid
SQLite 函数


Returns the rowid of the most recently inserted row

sqlite_last_error
sqlite_libencoding
SQLite 函数
PHP Manual

sqlite_last_insert_rowid

SQLiteDatabase::lastInsertRowid

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_last_insert_rowid -- SQLiteDatabase::lastInsertRowid — Returns the rowid of the most recently inserted row

说明

int sqlite_last_insert_rowid ( resource $dbhandle )

面向对象风格 (method):

public int SQLiteDatabase::lastInsertRowid ( void )

Returns the rowid of the row that was most recently inserted into the database dbhandle, if it was created as an auto-increment field.

Tip

You can create auto-increment fields in SQLite by declaring them as INTEGER PRIMARY KEY in your table schema.

参数

dbhandle

The SQLite Database resource; returned from sqlite_open() when used procedurally. This parameter is not required when using the object-oriented method.

返回值

Returns the row id, as an integer.

sqlite_last_error
sqlite_libencoding
SQLite 函数


Returns the encoding of the linked SQLite library

sqlite_last_insert_rowid
sqlite_libversion
SQLite 函数
PHP Manual

sqlite_libencoding

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_libencoding — Returns the encoding of the linked SQLite library

说明

string sqlite_libencoding ( void )

The SQLite library may be compiled in either ISO-8859-1 or UTF-8 compatible modes. This function allows you to determine which encoding scheme is used by your version of the library.

Warning

The default PHP distribution builds libsqlite in ISO-8859-1 encoding mode. However, this is a misnomer; rather than handling ISO-8859-1, it operates according to your current locale settings for string comparisons and sort ordering. So, rather than ISO-8859-1, you should think of it as being '8-bit' instead.

When compiled with UTF-8 support, sqlite handles encoding and decoding of UTF-8 multi-byte character sequences, but does not yet do a complete job when working with the data (no normalization is performed for example), and some comparison operations may still not be carried out correctly.

Warning

It is not recommended that you use PHP in a web-server configuration with a version of the SQLite library compiled with UTF-8 support, since libsqlite will abort the process if it detects a problem with the UTF-8 encoding.

返回值

Returns the library encoding.

参见

  • sqlite_lib_version()

sqlite_last_insert_rowid
sqlite_libversion
SQLite 函数


Returns the version of the linked SQLite library

sqlite_libencoding
sqlite_next
SQLite 函数
PHP Manual

sqlite_libversion

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_libversion — Returns the version of the linked SQLite library

说明

string sqlite_libversion ( void )

Returns the version of the linked SQLite library.

返回值

Returns the library version, as a string.

参见

  • sqlite_libencoding() - Returns the encoding of the linked SQLite library

sqlite_libencoding
sqlite_next
SQLite 函数


Seek to the next row number

sqlite_libversion
sqlite_num_fields
SQLite 函数
PHP Manual

sqlite_next

SQLiteResult::next

SQLiteUnbuffered::next

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_next -- SQLiteResult::next -- SQLiteUnbuffered::next — Seek to the next row number

说明

bool sqlite_next ( resource $result )

面向对象风格 (method):

bool SQLiteResult::next ( void )
bool SQLiteUnbuffered::next ( void )

sqlite_next() advances the result handle result to the next row.

参数

result

The SQLite result resource. This parameter is not required when using the object-oriented method.

返回值

Returns TRUE on success, or FALSE if there are no more rows.

参见

  • sqlite_seek() - Seek to a particular row number of a buffered result set
  • sqlite_current() - Fetches the current row from a result set as an array
  • sqlite_rewind() - Seek to the first row number

sqlite_libversion
sqlite_num_fields
SQLite 函数


Returns the number of fields in a result set

sqlite_next
sqlite_num_rows
SQLite 函数
PHP Manual

sqlite_num_fields

SQLiteResult::numFields

SQLiteUnbuffered::numFields

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_num_fields -- SQLiteResult::numFields -- SQLiteUnbuffered::numFields — Returns the number of fields in a result set

说明

int sqlite_num_fields ( resource $result )

面向对象风格 (method):

int SQLiteResult::numFields ( void )
int SQLiteUnbuffered::numFields ( void )

Returns the number of fields in the result set.

参数

result

The SQLite result resource. This parameter is not required when using the object-oriented method.

返回值

Returns the number of fields, as an integer.

参见

  • sqlite_changes() - Returns the number of rows that were changed by the most recent SQL statement
  • sqlite_num_rows() - Returns the number of rows in a buffered result set

sqlite_next
sqlite_num_rows
SQLite 函数


Returns the number of rows in a buffered result set

sqlite_num_fields
sqlite_open
SQLite 函数
PHP Manual

sqlite_num_rows

SQLiteResult::numRows

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_num_rows -- SQLiteResult::numRows — Returns the number of rows in a buffered result set

说明

int sqlite_num_rows ( resource $result )

面向对象风格 (method):

int SQLiteResult::numRows ( void )

Returns the number of rows in the buffered result set.

参数

result

The SQLite result resource. This parameter is not required when using the object-oriented method.

Note:

此函数不能用于未缓冲的结果句柄。

返回值

Returns the number of rows, as an integer.

范例

Example #1 Procedural example

<?php
$db = sqlite_open('mysqlitedb');
$result = sqlite_query($db, "SELECT * FROM mytable WHERE name='John Doe'");
$rows = sqlite_num_rows($result);

echo "Number of rows: $rows";
?>

Example #2 Object-oriented example

<?php
$db = new SQLiteDatabase('mysqlitedb');
$result = $db->query("SELECT * FROM mytable WHERE name='John Doe'");
$rows = $result->numRows();

echo "Number of rows: $rows";
?>

参见

  • sqlite_changes() - Returns the number of rows that were changed by the most recent SQL statement
  • sqlite_query() - Executes a query against a given database and returns a result handle
  • sqlite_num_fields() - Returns the number of fields in a result set

sqlite_num_fields
sqlite_open
SQLite 函数


Opens an SQLite database and create the database if it does not exist

sqlite_num_rows
sqlite_popen
SQLite 函数
PHP Manual

sqlite_open

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_open — Opens an SQLite database and create the database if it does not exist

说明

resource sqlite_open ( string $filename [, int $mode = 0666 [, string &$error_message ]] )

面向对象风格 (constructor):

final public SQLiteDatabase::__construct ( string $filename [, int $mode = 0666 [, string &$error_message ]] )

Opens an SQLite database or creates the database if it does not exist.

参数

filename

The filename of the SQLite database. If the file does not exist, SQLite will attempt to create it. PHP must have write permissions to the file if data is inserted, the database schema is modified or to create the database if it does not exist.

mode

The mode of the file. Intended to be used to open the database in read-only mode. Presently, this parameter is ignored by the sqlite library. The default value for mode is the octal value 0666 and this is the recommended value.

error_message

Passed by reference and is set to hold a descriptive error message explaining why the database could not be opened if there was an error.

返回值

Returns a resource (database handle) on success, FALSE on error.

范例

Example #1 sqlite_open() example

<?php
if ($db = sqlite_open('mysqlitedb', 0666, $sqliteerror)) {
    sqlite_query($db, 'CREATE TABLE foo (bar varchar(10))');
    sqlite_query($db, "INSERT INTO foo VALUES ('fnord')");
    $result = sqlite_query($db, 'select bar from foo');
    var_dump(sqlite_fetch_array($result));
} else {
    die($sqliteerror);
}
?>

注释

Tip

On Unix platforms, SQLite is sensitive to scripts that use the fork() system call. If you do have such a script, it is recommended that you close the handle prior to forking and then re-open it in the child and/or parent. For more information on this issue, see » The C language interface to the SQLite library in the section entitled Multi-Threading And SQLite.

Tip

It is not recommended to work with SQLite databases mounted on NFS partitions. Since NFS is notoriously bad when it comes to locking you may find that you cannot even open the database at all, and if it succeeds, the locking behaviour may be undefined.

Note: Starting with SQLite library version 2.8.2, you can specify :memory: as the filename to create a database that lives only in the memory of the computer. This is useful mostly for temporary processing, as the in-memory database will be destroyed when the process ends. It can also be useful when coupled with the ATTACH DATABASE SQL statement to load other databases and move and query data between them.

Note: SQLite is 安全模式 and open_basedir aware.

参见

  • sqlite_popen() - Opens a persistent handle to an SQLite database and create the database if it does not exist
  • sqlite_close() - Closes an open SQLite database
  • sqlite_factory() - Opens an SQLite database and returns an SQLiteDatabase object

sqlite_num_rows
sqlite_popen
SQLite 函数


Opens a persistent handle to an SQLite database and create the database if it does not exist

sqlite_open
sqlite_prev
SQLite 函数
PHP Manual

sqlite_popen

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_popen — Opens a persistent handle to an SQLite database and create the database if it does not exist

说明

resource sqlite_popen ( string $filename [, int $mode = 0666 [, string &$error_message ]] )

This function behaves identically to sqlite_open() except that is uses the persistent resource mechanism of PHP. For information about the meaning of the parameters, read the sqlite_open() manual page.

sqlite_popen() will first check to see if a persistent handle has already been opened for the given filename. If it finds one, it returns that handle to your script, otherwise it opens a fresh handle to the database.

The benefit of this approach is that you don't incur the performance cost of re-reading the database and index schema on each page hit served by persistent web server SAPI's (any SAPI except for regular CGI or CLI).

Note: If you use persistent handles and have the database updated by a background process (perhaps via a crontab), and that process re-creates the database by overwriting it (either by unlinking and rebuilding, or moving the updated version to replace the current version), you may experience undefined behaviour when a persistent handle on the old version of the database is recycled. To avoid this situation, have your background processes open the same database file and perform their updates in a transaction.

参数

filename

The filename of the SQLite database. If the file does not exist, SQLite will attempt to create it. PHP must have write permissions to the file if data is inserted, the database schema is modified or to create the database if it does not exist.

mode

The mode of the file. Intended to be used to open the database in read-only mode. Presently, this parameter is ignored by the sqlite library. The default value for mode is the octal value 0666 and this is the recommended value.

error_message

Passed by reference and is set to hold a descriptive error message explaining why the database could not be opened if there was an error.

返回值

Returns a resource (database handle) on success, FALSE on error.

参见

  • sqlite_open() - Opens an SQLite database and create the database if it does not exist
  • sqlite_close() - Closes an open SQLite database
  • sqlite_factory() - Opens an SQLite database and returns an SQLiteDatabase object

sqlite_open
sqlite_prev
SQLite 函数


Seek to the previous row number of a result set

sqlite_popen
sqlite_query
SQLite 函数
PHP Manual

sqlite_prev

SQLiteResult::prev

(PHP 5 < 5.4.0)

sqlite_prev -- SQLiteResult::prev — Seek to the previous row number of a result set

说明

bool sqlite_prev ( resource $result )

面向对象风格 (method):

bool SQLiteResult::prev ( void )

sqlite_prev() seeks back the result handle to the previous row.

参数

result

The SQLite result resource. This parameter is not required when using the object-oriented method.

Note:

此函数不能用于未缓冲的结果句柄。

返回值

Returns TRUE on success, or FALSE if there are no more previous rows.

参见

  • sqlite_has_prev() - Returns whether or not a previous row is available
  • sqlite_rewind() - Seek to the first row number
  • sqlite_next() - Seek to the next row number

sqlite_popen
sqlite_query
SQLite 函数


Executes a query against a given database and returns a result handle

sqlite_prev
sqlite_rewind
SQLite 函数
PHP Manual

sqlite_query

SQLiteDatabase::query

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_query -- SQLiteDatabase::query — Executes a query against a given database and returns a result handle

说明

resource sqlite_query ( resource $dbhandle , string $query [, int $result_type = SQLITE_BOTH [, string &$error_msg ]] )
resource sqlite_query ( string $query , resource $dbhandle [, int $result_type = SQLITE_BOTH [, string &$error_msg ]] )

面向对象风格 (method):

public SQLiteResult SQLiteDatabase::query ( string $query [, int $result_type = SQLITE_BOTH [, string &$error_msg ]] )

Executes an SQL statement given by the query against a given database handle.

参数

dbhandle

The SQLite Database resource; returned from sqlite_open() when used procedurally. This parameter is not required when using the object-oriented method.

query

The query to be executed.

Data inside the query should be properly escaped.

result_type

可选的 result_type 参数接受常量，且决定返回的数组如何被索引。使用 SQLITE_ASSOC 会仅返回关联索引（已命名字段），而 SQLITE_NUM 会仅返回数值索引。SQLITE_BOTH 会同时返回关联和数值索引。SQLITE_BOTH 是此函数的默认值。

error_msg

The specified variable will be filled if an error occurs. This is specially important because SQL syntax errors can't be fetched using the sqlite_last_error() function.

Note: 为兼容其他数据库扩展(比如 MySQL)，支持两种可替代的语法。推荐第一种格式，函数的第一个参数是dbhandle。

返回值

This function will return a result handle 或者在失败时返回 FALSE. For queries that return rows, the result handle can then be used with functions such as sqlite_fetch_array() and sqlite_seek().

Regardless of the query type, this function will return FALSE if the query failed.

sqlite_query() returns a buffered, seekable result handle. This is useful for reasonably small queries where you need to be able to randomly access the rows. Buffered result handles will allocate memory to hold the entire result and will not return until it has been fetched. If you only need sequential access to the data, it is recommended that you use the much higher performance sqlite_unbuffered_query() instead.

更新日志

版本 | 说明
5.1.0 | Added the error_msg parameter

注释

Warning

SQLite will execute multiple queries separated by semicolons, so you can use it to execute a batch of SQL that you have loaded from a file or have embedded in a script. However, this works only when the result of the function is not used - if it is used, only the first SQL statement would be executed. Function sqlite_exec() will always execute multiple SQL statements.

When executing multiple queries, the return value of this function will be FALSE if there was an error, but undefined otherwise (it might be TRUE for success or it might return a result handle).

参见

  • sqlite_unbuffered_query() - Execute a query that does not prefetch and buffer all data
  • sqlite_array_query() - Execute a query against a given database and returns an array

sqlite_prev
sqlite_rewind
SQLite 函数


Seek to the first row number

sqlite_query
sqlite_seek
SQLite 函数
PHP Manual

sqlite_rewind

SQLiteResult::rewind

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_rewind -- SQLiteResult::rewind — Seek to the first row number

说明

bool sqlite_rewind ( resource $result )

面向对象风格 (method):

bool SQLiteResult::rewind ( void )

sqlite_rewind() seeks back to the first row in the given result set.

参数

result

The SQLite result resource. This parameter is not required when using the object-oriented method.

Note:

此函数不能用于未缓冲的结果句柄。

返回值

Returns FALSE if there are no rows in the result set, TRUE otherwise.

参见

  • sqlite_next() - Seek to the next row number
  • sqlite_current() - Fetches the current row from a result set as an array
  • sqlite_seek() - Seek to a particular row number of a buffered result set

sqlite_query
sqlite_seek
SQLite 函数


Seek to a particular row number of a buffered result set

sqlite_rewind
sqlite_single_query
SQLite 函数
PHP Manual

sqlite_seek

SQLiteResult::seek

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_seek -- SQLiteResult::seek — Seek to a particular row number of a buffered result set

说明

bool sqlite_seek ( resource $result , int $rownum )

面向对象风格 (method):

bool SQLiteResult::seek ( int $rownum )

sqlite_seek() seeks to the row given by the parameter rownum.

参数

result

The SQLite result resource. This parameter is not required when using the object-oriented method.

Note:

此函数不能用于未缓冲的结果句柄。

rownum

The ordinal row number to seek to. The row number is zero-based (0 is the first row).

Note:

此函数不能用于未缓冲的结果句柄。

返回值

Returns FALSE if the row does not exist, TRUE otherwise.

参见

  • sqlite_next() - Seek to the next row number
  • sqlite_current() - Fetches the current row from a result set as an array
  • sqlite_rewind() - Seek to the first row number

sqlite_rewind
sqlite_single_query
SQLite 函数


Executes a query and returns either an array for one single column or the value of the first row

sqlite_seek
sqlite_udf_decode_binary
SQLite 函数
PHP Manual

sqlite_single_query

SQLiteDatabase::singleQuery

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.1)

sqlite_single_query -- SQLiteDatabase::singleQuery — Executes a query and returns either an array for one single column or the value of the first row

说明

array sqlite_single_query ( resource $db , string $query [, bool $first_row_only [, bool $decode_binary ]] )

面向对象风格 (method):

public array SQLiteDatabase::singleQuery ( string $query [, bool $first_row_only [, bool $decode_binary ]] )
Warning

本函数还未编写文档，仅有参数列表。

sqlite_seek
sqlite_udf_decode_binary
SQLite 函数


Decode binary data passed as parameters to an UDF

sqlite_single_query
sqlite_udf_encode_binary
SQLite 函数
PHP Manual

sqlite_udf_decode_binary

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_udf_decode_binary — Decode binary data passed as parameters to an UDF

说明

string sqlite_udf_decode_binary ( string $data )

Decodes binary data passed as parameters to a UDF.

You must call this function on parameters passed to your UDF if you need them to handle binary data, as the binary encoding employed by PHP will obscure the content and of the parameter in its natural, non-coded form.

PHP does not perform this encode/decode operation automatically as it would severely impact performance if it did.

参数

data

The encoded data that will be decoded, data that was applied by either sqlite_udf_encode_binary() or sqlite_escape_string().

返回值

The decoded string.

范例

Example #1 binary-safe max_length aggregation function example

<?php
$data = array(
   'one',
   'two',
   'three',
   'four',
   'five',
   'six',
   'seven',
   'eight',
   'nine',
   'ten',
   );
$db = sqlite_open(':memory:');
sqlite_query($db, "CREATE TABLE strings(a)");
foreach ($data as $str) {
    $str = sqlite_escape_string($str);
    sqlite_query($db, "INSERT INTO strings VALUES ('$str')");
}

function max_len_step(&$context, $string)
{
    $string = sqlite_udf_decode_binary($string);
    if (strlen($string) > $context) {
        $context = strlen($string);
    }
}

function max_len_finalize(&$context)
{
    return $context;
}

sqlite_create_aggregate($db, 'max_len', 'max_len_step', 'max_len_finalize');

var_dump(sqlite_array_query($db, 'SELECT max_len(a) from strings'));

?>

参见

  • sqlite_udf_encode_binary() - Encode binary data before returning it from an UDF
  • sqlite_create_function() - Registers a "regular" User Defined Function for use in SQL statements
  • sqlite_create_aggregate() - Register an aggregating UDF for use in SQL statements

sqlite_single_query
sqlite_udf_encode_binary
SQLite 函数


Encode binary data before returning it from an UDF

sqlite_udf_decode_binary
sqlite_unbuffered_query
SQLite 函数
PHP Manual

sqlite_udf_encode_binary

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_udf_encode_binary — Encode binary data before returning it from an UDF

说明

string sqlite_udf_encode_binary ( string $data )

sqlite_udf_encode_binary() applies a binary encoding to the data so that it can be safely returned from queries (since the underlying libsqlite API is not binary safe).

If there is a chance that your data might be binary unsafe (e.g.: it contains a NUL byte in the middle rather than at the end, or if it has and 0x01 byte as the first character) then you must call this function to encode the return value from your UDF.

PHP does not perform this encode/decode operation automatically as it would severely impact performance if it did.

Note:

Do not use sqlite_escape_string() to quote strings returned from UDF's as it will lead to double-quoting of the data. Use sqlite_udf_encode_binary() instead!

参数

data

The string being encoded.

返回值

The encoded string.

参见

  • sqlite_udf_decode_binary() - Decode binary data passed as parameters to an UDF
  • sqlite_escape_string() - Escapes a string for use as a query parameter
  • sqlite_create_function() - Registers a "regular" User Defined Function for use in SQL statements
  • sqlite_create_aggregate() - Register an aggregating UDF for use in SQL statements

sqlite_udf_decode_binary
sqlite_unbuffered_query
SQLite 函数


Execute a query that does not prefetch and buffer all data

sqlite_udf_encode_binary
sqlite_valid
SQLite 函数
PHP Manual

sqlite_unbuffered_query

SQLiteDatabase::unbufferedQuery

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_unbuffered_query -- SQLiteDatabase::unbufferedQuery — Execute a query that does not prefetch and buffer all data

说明

resource sqlite_unbuffered_query ( resource $dbhandle , string $query [, int $result_type = SQLITE_BOTH [, string &$error_msg ]] )
resource sqlite_unbuffered_query ( string $query , resource $dbhandle [, int $result_type = SQLITE_BOTH [, string &$error_msg ]] )

面向对象风格 (method):

public SQLiteUnbuffered SQLiteDatabase::unbufferedQuery ( string $query [, int $result_type = SQLITE_BOTH [, string &$error_msg ]] )

sqlite_unbuffered_query() is identical to sqlite_query() except that the result that is returned is a sequential forward-only result set that can only be used to read each row, one after the other.

This function is ideal for generating things such as HTML tables where you only need to process one row at a time and don't need to randomly access the row data.

Note:

Functions such as sqlite_seek(),
sqlite_rewind(), sqlite_next(),
sqlite_current(), and
sqlite_num_rows() do not work on result handles
returned from sqlite_unbuffered_query().

参数

dbhandle

The SQLite Database resource; returned from sqlite_open() when used procedurally. This parameter is not required when using the object-oriented method.

query

The query to be executed.

Data inside the query should be properly escaped.

result_type

可选的 result_type 参数接受常量，且决定返回的数组如何被索引。使用 SQLITE_ASSOC 会仅返回关联索引（已命名字段），而 SQLITE_NUM 会仅返回数值索引。SQLITE_BOTH 会同时返回关联和数值索引。SQLITE_BOTH 是此函数的默认值。

error_msg

The specified variable will be filled if an error occurs. This is specially important because SQL syntax errors can't be fetched using the sqlite_last_error() function.

Note: 为兼容其他数据库扩展(比如 MySQL)，支持两种可替代的语法。推荐第一种格式，函数的第一个参数是dbhandle。

返回值

Returns a result handle 或者在失败时返回 FALSE.

sqlite_unbuffered_query() returns a sequential forward-only result set that can only be used to read each row, one after the other.

更新日志

版本 | 说明
5.1.0 | Added the error_msg parameter

参见

  • sqlite_query() - Executes a query against a given database and returns a result handle

sqlite_udf_encode_binary
sqlite_valid
SQLite 函数


Returns whether more rows are available

sqlite_unbuffered_query
SQLite3
SQLite 函数
PHP Manual

sqlite_valid

SQLiteResult::valid

SQLiteUnbuffered::valid

(PHP 5 < 5.4.0)

sqlite_valid -- SQLiteResult::valid -- SQLiteUnbuffered::valid — Returns whether more rows are available

说明

bool sqlite_valid ( resource $result )

面向对象风格 (method):

bool SQLiteResult::valid ( void )
bool SQLiteUnbuffered::valid ( void )

Finds whether more rows are available from the given result handle.

参数

result

The SQLite result resource. This parameter is not required when using the object-oriented method.

Note:

此函数不能用于未缓冲的结果句柄。

返回值

Returns TRUE if there are more rows available from the result handle, or FALSE otherwise.

参见

  • sqlite_num_rows() - Returns the number of rows in a buffered result set
  • sqlite_changes() - Returns the number of rows that were changed by the most recent SQL statement

sqlite_unbuffered_query
SQLite3
SQLite 函数


SQLite3

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • SQLite3 — SQLite3 类
    • SQLite3::busyTimeout — Sets the busy connection handler
    • SQLite3::changes — Returns the number of database rows that were changed (or inserted or deleted) by the most recent SQL statement
    • SQLite3::close — Closes the database connection
    • SQLite3::__construct — Instantiates an SQLite3 object and opens an SQLite 3 database
    • SQLite3::createAggregate — Registers a PHP function for use as an SQL aggregate function
    • SQLite3::createCollation — Registers a PHP function for use as an SQL collating function
    • SQLite3::createFunction — Registers a PHP function for use as an SQL scalar function
    • SQLite3::enableExceptions — Enable throwing exceptions
    • SQLite3::escapeString — Returns a string that has been properly escaped
    • SQLite3::exec — Executes a result-less query against a given database
    • SQLite3::lastErrorCode — Returns the numeric result code of the most recent failed SQLite request
    • SQLite3::lastErrorMsg — Returns English text describing the most recent failed SQLite request
    • SQLite3::lastInsertRowID — Returns the row ID of the most recent INSERT into the database
    • SQLite3::loadExtension — Attempts to load an SQLite extension library
    • SQLite3::open — Opens an SQLite database
    • SQLite3::openBlob — Opens a stream resource to read a BLOB
    • SQLite3::prepare — Prepares an SQL statement for execution
    • SQLite3::query — Executes an SQL query
    • SQLite3::querySingle — Executes a query and returns a single result
    • SQLite3::version — Returns the SQLite3 library version as a string constant and as a number
  • SQLite3Stmt — SQLite3Stmt 类
    • SQLite3Stmt::bindParam — Binds a parameter to a statement variable
    • SQLite3Stmt::bindValue — Binds the value of a parameter to a statement variable
    • SQLite3Stmt::clear — Clears all current bound parameters
    • SQLite3Stmt::close — Closes the prepared statement
    • SQLite3Stmt::execute — Executes a prepared statement and returns a result set object
    • SQLite3Stmt::paramCount — Returns the number of parameters within the prepared statement
    • SQLite3Stmt::readOnly() — Returns whether a statement is definitely read only
    • SQLite3Stmt::reset — Resets the prepared statement
  • SQLite3Result — SQLite3Result 类
    • SQLite3Result::columnName — Returns the name of the nth column
    • SQLite3Result::columnType — Returns the type of the nth column
    • SQLite3Result::fetchArray — Fetches a result row as an associative or numerically indexed array or both
    • SQLite3Result::finalize — Closes the result set
    • SQLite3Result::numColumns — Returns the number of columns in the result set
    • SQLite3Result::reset — Resets the result set back to the first row
sqlite_valid
简介
针对各数据库系统对应的扩展


简介

对 SQLite v3 数据库的支持信息。

SQLite3
安装／配置
SQLite3


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
SQLite3


安装

SQLite3 扩展自 PHP 5.3.0 起已默认启用。 允许在编译时使用 --without-sqlite3 禁用之。

Windows 用户必须启用 php_sqlite3.dll 方可使用该扩展。自 PHP 5.3.0 起，此扩展的 DLL 文件 已包含于 Windows 版的 PHP 发行包中。

Note:

该扩展是 PECL 扩展的简化版本， 但后者仅建议用于实验性用途。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

SQLite3 配置选项
名字 | 默认 | 可修改范围 | 更新日志
sqlite3.extension_dir | NULL | PHP_INI_SYSTEM |

这是配置指令的简短说明。

sqlite3.extension_dir string

指向存放可加载的 SQLite 扩展的目录路径。

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

SQLITE3_ASSOC (integer)
指定 Sqlite3Result::fetchArray() 方法返回按列名称索引的数组，其中列名即相应结果集返回的列名。
SQLITE3_NUM (integer)
指定 Sqlite3Result::fetchArray() 方法返回按列序号索引的数组，其中列号即相应结果集返回的列号，从第 0 列开始计数。
SQLITE3_BOTH (integer)
指定 Sqlite3Result::fetchArray() 方法返回同时按列名称与列序号索引的数组，其中列名即相应结果集返回的列名，列号即相应结果集返回的列号，从第 0 列开始计数。
SQLITE3_INTEGER (integer)
表示 SQLite3 INTEGER (整型) 存储类。
SQLITE3_FLOAT (integer)
表示 SQLite3 REAL (FLOAT) (实型) 存储类。
SQLITE3_TEXT (integer)
表示 SQLite3 TEXT (文本) 存储类。
SQLITE3_BLOB (integer)
表示 SQLite3 BLOB (二进制对象) 存储类。
SQLITE3_NULL (integer)
表示 SQLite3 NULL 存储类。
SQLITE3_OPEN_READONLY (integer)
指定 SQLite3 数据库以只读模式打开。
SQLITE3_OPEN_READWRITE (integer)
指定 SQLite3 数据库以读写模式打开。
SQLITE3_OPEN_CREATE (integer)
指定 SQLite3 数据库若不存在，则创建并打开。

资源类型
SQLite3
SQLite3


SQLite3 类

(PHP 5 >= 5.3.0, PHP 7)

简介

实现与 SQLite 3 数据库对接的类。

类摘要

SQLite3 {
/* 方法 */
public bool busyTimeout ( int $msecs )
public int changes ( void )
public bool close ( void )
public __construct ( string $filename [, int $flags = SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE [, string $encryption_key = null ]] )
public bool createAggregate ( string $name , mixed $step_callback , mixed $final_callback [, int $argument_count = -1 ] )
public bool createCollation ( string $name , callable $callback )
public bool createFunction ( string $name , mixed $callback [, int $argument_count = -1 ] )
bool enableExceptions ([ bool $enableExceptions = false ] )
public static string escapeString ( string $value )
public bool exec ( string $query )
public int lastErrorCode ( void )
public string lastErrorMsg ( void )
public int lastInsertRowID ( void )
public bool loadExtension ( string $shared_library )
public void open ( string $filename [, int $flags = SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE [, string $encryption_key = null ]] )
public resource open ( string $table , string $column , int $rowid [, string $dbname = "main" ] )
public SQLite3Stmt prepare ( string $query )
public SQLite3Result query ( string $query )
public mixed querySingle ( string $query [, bool $entire_row = false ] )
public static array version ( void )
}

Table of Contents

  • SQLite3::busyTimeout — Sets the busy connection handler
  • SQLite3::changes — Returns the number of database rows that were changed (or inserted or deleted) by the most recent SQL statement
  • SQLite3::close — Closes the database connection
  • SQLite3::__construct — Instantiates an SQLite3 object and opens an SQLite 3 database
  • SQLite3::createAggregate — Registers a PHP function for use as an SQL aggregate function
  • SQLite3::createCollation — Registers a PHP function for use as an SQL collating function
  • SQLite3::createFunction — Registers a PHP function for use as an SQL scalar function
  • SQLite3::enableExceptions — Enable throwing exceptions
  • SQLite3::escapeString — Returns a string that has been properly escaped
  • SQLite3::exec — Executes a result-less query against a given database
  • SQLite3::lastErrorCode — Returns the numeric result code of the most recent failed SQLite request
  • SQLite3::lastErrorMsg — Returns English text describing the most recent failed SQLite request
  • SQLite3::lastInsertRowID — Returns the row ID of the most recent INSERT into the database
  • SQLite3::loadExtension — Attempts to load an SQLite extension library
  • SQLite3::open — Opens an SQLite database
  • SQLite3::openBlob — Opens a stream resource to read a BLOB
  • SQLite3::prepare — Prepares an SQL statement for execution
  • SQLite3::query — Executes an SQL query
  • SQLite3::querySingle — Executes a query and returns a single result
  • SQLite3::version — Returns the SQLite3 library version as a string constant and as a number
预定义常量
SQLite3::busyTimeout
SQLite3


Sets the busy connection handler

SQLite3
SQLite3::changes
SQLite3
PHP Manual

SQLite3::busyTimeout

(PHP 5 >= 5.3.3, PHP 7)

SQLite3::busyTimeout — Sets the busy connection handler

说明

public bool SQLite3::busyTimeout ( int $msecs )

Sets a busy handler that will sleep until the database is not locked or the timeout is reached.

参数

msecs

The milliseconds to sleep. Setting this value to a value less than or equal to zero, will turn off an already set timeout handler.

返回值

Returns TRUE on success, FALSE on failure.

SQLite3
SQLite3::changes
SQLite3


Returns the number of database rows that were changed (or inserted or deleted) by the most recent SQL statement

SQLite3::busyTimeout
SQLite3::close
SQLite3
PHP Manual

SQLite3::changes

(PHP 5 >= 5.3.0, PHP 7)

SQLite3::changes — Returns the number of database rows that were changed (or inserted or deleted) by the most recent SQL statement

说明

public int SQLite3::changes ( void )

Returns the number of database rows that were changed (or inserted or deleted) by the most recent SQL statement.

参数

此函数没有参数。

返回值

Returns an integer value corresponding to the number of database rows changed (or inserted or deleted) by the most recent SQL statement.

范例

Example #1 SQLite3::changes() example

<?php
$db = new SQLite3('mysqlitedb.db');

$query = $db->exec('UPDATE counter SET views=0 WHERE page="test"');
if ($query) {
    echo 'Number of rows modified: ', $db->changes();
}
?>

SQLite3::busyTimeout
SQLite3::close
SQLite3


Closes the database connection

SQLite3::changes
SQLite3::__construct
SQLite3
PHP Manual

SQLite3::close

(PHP 5 >= 5.3.0, PHP 7)

SQLite3::close — Closes the database connection

说明

public bool SQLite3::close ( void )

Closes the database connection.

参数

此函数没有参数。

返回值

Returns TRUE on success, FALSE on failure.

范例

Example #1 SQLite3::close() example

<?php
$db = new SQLite3('mysqlitedb.db');
$db->close();
?>

SQLite3::changes
SQLite3::__construct
SQLite3


Instantiates an SQLite3 object and opens an SQLite 3 database

SQLite3::close
SQLite3::createAggregate
SQLite3
PHP Manual

SQLite3::__construct

(PHP 5 >= 5.3.0, PHP 7)

SQLite3::__construct — Instantiates an SQLite3 object and opens an SQLite 3 database

说明

public SQLite3::__construct ( string $filename [, int $flags = SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE [, string $encryption_key = null ]] )

Instantiates an SQLite3 object and opens a connection to an SQLite 3 database. If the build includes encryption, then it will attempt to use the key.

参数

filename

Path to the SQLite database, or :memory: to use in-memory database.

flags

Optional flags used to determine how to open the SQLite database. By default, open uses SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE.

  • SQLITE3_OPEN_READONLY: Open the database for reading only.

  • SQLITE3_OPEN_READWRITE: Open the database for reading and writing.

  • SQLITE3_OPEN_CREATE: Create the database if it does not exist.

encryption_key

An optional encryption key used when encrypting and decrypting an SQLite database. If the SQLite encryption module is not installed, this parameter will have no effect.

返回值

Returns an SQLite3 object on success.

错误／异常

Throws an Exception on failure.

范例

Example #1 SQLite3::__construct() example

<?php
$db = new SQLite3('mysqlitedb.db');

$db->exec('CREATE TABLE foo (bar STRING)');
$db->exec("INSERT INTO foo (bar) VALUES ('This is a test')");

$result = $db->query('SELECT bar FROM foo');
var_dump($result->fetchArray());
?>

SQLite3::close
SQLite3::createAggregate
SQLite3


Registers a PHP function for use as an SQL aggregate function

SQLite3::__construct
SQLite3::createCollation
SQLite3
PHP Manual

SQLite3::createAggregate

(PHP 5 >= 5.3.0, PHP 7)

SQLite3::createAggregate — Registers a PHP function for use as an SQL aggregate function

说明

public bool SQLite3::createAggregate ( string $name , mixed $step_callback , mixed $final_callback [, int $argument_count = -1 ] )

Registers a PHP function or user-defined function for use as an SQL aggregate function for use within SQL statements.

参数

name

Name of the SQL aggregate to be created or redefined.

step_callback

The name of a PHP function or user-defined function to apply as a callback for every item in the aggregate.

final_callback

The name of a PHP function or user-defined function to apply as a callback at the end of the aggregate data.

argument_count

The number of arguments that the SQL aggregate takes. If this parameter is negative, then the SQL aggregate may take any number of arguments.

返回值

Returns TRUE upon successful creation of the aggregate, FALSE on failure.

SQLite3::__construct
SQLite3::createCollation
SQLite3


Registers a PHP function for use as an SQL collating function

SQLite3::createAggregate
SQLite3::createFunction
SQLite3
PHP Manual

SQLite3::createCollation

(PHP 5 >= 5.3.11, PHP 7)

SQLite3::createCollation — Registers a PHP function for use as an SQL collating function

说明

public bool SQLite3::createCollation ( string $name , callable $callback )

Registers a PHP function or user-defined function for use as a collating function within SQL statements.

参数

name

Name of the SQL collating function to be created or redefined

callback

The name of a PHP function or user-defined function to apply as a callback, defining the behavior of the collation. It should accept two strings and return as strcmp() does, i.e. it should return -1, 1, or 0 if the first string sorts before, sorts after, or is equal to the second.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 SQLite3::createCollation() example

Register the PHP function strnatcmp() as a collating sequence in the SQLite3 database.

<?php

$db = new SQLite3(":memory:");
$db->exec("CREATE TABLE test (col1 string)");
$db->exec("INSERT INTO test VALUES ('a1')");
$db->exec("INSERT INTO test VALUES ('a10')");
$db->exec("INSERT INTO test VALUES ('a2')");

$db->createCollation('NATURAL_CMP', 'strnatcmp');

$defaultSort = $db->query("SELECT col1 FROM test ORDER BY col1");
$naturalSort = $db->query("SELECT col1 FROM test ORDER BY col1 COLLATE NATURAL_CMP");

echo "default:\n";
while ($row = $defaultSort->fetchArray()){
    echo $row['col1'], "\n";
}

echo "\nnatural:\n";
while ($row = $naturalSort->fetchArray()){
    echo $row['col1'], "\n";
}

$db->close();

?>

以上例程会输出：

default:
a1
a10
a2

natural:
a1
a2
a10

参见

  • The SQLite collation documentation: » http://sqlite.org/datatype3.html#collation
SQLite3::createAggregate
SQLite3::createFunction
SQLite3


Registers a PHP function for use as an SQL scalar function

SQLite3::createCollation
SQLite3::enableExceptions
SQLite3
PHP Manual

SQLite3::createFunction

(PHP 5 >= 5.3.0, PHP 7)

SQLite3::createFunction — Registers a PHP function for use as an SQL scalar function

说明

public bool SQLite3::createFunction ( string $name , mixed $callback [, int $argument_count = -1 ] )

Registers a PHP function or user-defined function for use as an SQL scalar function for use within SQL statements.

参数

name

Name of the SQL function to be created or redefined.

callback

The name of a PHP function or user-defined function to apply as a callback, defining the behavior of the SQL function.

argument_count

The number of arguments that the SQL function takes. If this parameter is negative, then the SQL function may take any number of arguments.

返回值

Returns TRUE upon successful creation of the function, FALSE on failure.

范例

Example #1 SQLite3::createFunction() example

<?php
function my_udf_md5($string) {
    return md5($string);
}

$db = new SQLite3('mysqlitedb.db');
$db->createFunction('my_udf_md5', 'my_udf_md5');

var_dump($db->querySingle('SELECT my_udf_md5("test")'));
?>

以上例程的输出类似于：

string(32) "098f6bcd4621d373cade4e832627b4f6"

SQLite3::createCollation
SQLite3::enableExceptions
SQLite3


Enable throwing exceptions

SQLite3::createFunction
SQLite3::escapeString
SQLite3
PHP Manual

SQLite3::enableExceptions

(PHP 5 >= 5.3.0, PHP 7)

SQLite3::enableExceptions — Enable throwing exceptions

说明

bool SQLite3::enableExceptions ([ bool $enableExceptions = false ] )

Controls whether the SQLite3 instance will throw exceptions or warnings on error.

参数

enable

When TRUE, the SQLite3 instance, and SQLite3Stmt and SQLite3Result instances derived from it, will throw exceptions on error.

When FALSE, the SQLite3 instance, and SQLite3Stmt and SQLite3Result instances derived from it, will raise warnings on error.

For either mode, the error code and message, if any, will be available via SQLite3::lastErrorCode() and SQLite3::lastErrorMsg() respectively.

返回值

Returns the old value; TRUE if exceptions were enabled, FALSE otherwise.

范例

Example #1 SQLite3::enableExceptions() example

<?php
$sqlite = new SQLite3(':memory:');
try {
    $sqlite->exec('create table foo');
    $sqlite->enableExceptions(true);
    $sqlite->exec('create table bar');
} catch (Exception $e) {
    echo 'Caught exception: ' . $e->getMessage();
}
?>

以上例程的输出类似于：

Warning: SQLite3::exec(): near "foo": syntax error in example.php on line 4
Caught exception: near "bar": syntax error
SQLite3::createFunction
SQLite3::escapeString
SQLite3


Returns a string that has been properly escaped

SQLite3::enableExceptions
SQLite3::exec
SQLite3
PHP Manual

SQLite3::escapeString

(PHP 5 >= 5.3.0, PHP 7)

SQLite3::escapeString — Returns a string that has been properly escaped

说明

public static string SQLite3::escapeString ( string $value )

Returns a string that has been properly escaped for safe inclusion in an SQL statement.

Warning

此函数（还）不能安全地适用于二进制对象！

To properly handle BLOB fields which may contain NUL characters, use SQLite3Stmt::bindParam() instead.

参数

value

The string to be escaped.

返回值

Returns a properly escaped string that may be used safely in an SQL statement.

注释

Warning

addslashes() should NOT be used to quote your strings for SQLite queries; it will lead to strange results when retrieving your data.

SQLite3::enableExceptions
SQLite3::exec
SQLite3


Executes a result-less query against a given database

SQLite3::escapeString
SQLite3::lastErrorCode
SQLite3
PHP Manual

SQLite3::exec

(PHP 5 >= 5.3.0, PHP 7)

SQLite3::exec — Executes a result-less query against a given database

说明

public bool SQLite3::exec ( string $query )

Executes a result-less query against a given database.

参数

query

The SQL query to execute (typically an INSERT, UPDATE, or DELETE query).

返回值

Returns TRUE if the query succeeded, FALSE on failure.

范例

Example #1 SQLite3::exec() example

<?php
$db = new SQLite3('mysqlitedb.db');

$db->exec('CREATE TABLE bar (bar STRING)');
?>

SQLite3::escapeString
SQLite3::lastErrorCode
SQLite3


Returns the numeric result code of the most recent failed SQLite request

SQLite3::exec
SQLite3::lastErrorMsg
SQLite3
PHP Manual

SQLite3::lastErrorCode

(PHP 5 >= 5.3.0, PHP 7)

SQLite3::lastErrorCode — Returns the numeric result code of the most recent failed SQLite request

说明

public int SQLite3::lastErrorCode ( void )

Returns the numeric result code of the most recent failed SQLite request.

参数

此函数没有参数。

返回值

Returns an integer value representing the numeric result code of the most recent failed SQLite request.

SQLite3::exec
SQLite3::lastErrorMsg
SQLite3


Returns English text describing the most recent failed SQLite request

SQLite3::lastErrorCode
SQLite3::lastInsertRowID
SQLite3
PHP Manual

SQLite3::lastErrorMsg

(PHP 5 >= 5.3.0, PHP 7)

SQLite3::lastErrorMsg — Returns English text describing the most recent failed SQLite request

说明

public string SQLite3::lastErrorMsg ( void )

Returns English text describing the most recent failed SQLite request.

参数

此函数没有参数。

返回值

Returns an English string describing the most recent failed SQLite request.

SQLite3::lastErrorCode
SQLite3::lastInsertRowID
SQLite3


Returns the row ID of the most recent INSERT into the database

SQLite3::lastErrorMsg
SQLite3::loadExtension
SQLite3
PHP Manual

SQLite3::lastInsertRowID

(PHP 5 >= 5.3.0, PHP 7)

SQLite3::lastInsertRowID — Returns the row ID of the most recent INSERT into the database

说明

public int SQLite3::lastInsertRowID ( void )

Returns the row ID of the most recent INSERT into the database.

参数

此函数没有参数。

返回值

Returns the row ID of the most recent INSERT into the database

SQLite3::lastErrorMsg
SQLite3::loadExtension
SQLite3


Attempts to load an SQLite extension library

SQLite3::lastInsertRowID
SQLite3::open
SQLite3
PHP Manual

SQLite3::loadExtension

(PHP 5 >= 5.3.0, PHP 7)

SQLite3::loadExtension — Attempts to load an SQLite extension library

说明

public bool SQLite3::loadExtension ( string $shared_library )

Attempts to load an SQLite extension library.

参数

shared_library

The name of the library to load. The library must be located in the directory specified in the configure option sqlite3.extension_dir.

返回值

Returns TRUE if the extension is successfully loaded, FALSE on failure.

范例

Example #1 SQLite3::loadExtension() example

<?php
$db = new SQLite3('mysqlitedb.db');
$db->loadExtension('libagg.so');
?>

SQLite3::lastInsertRowID
SQLite3::open
SQLite3


Opens an SQLite database

SQLite3::loadExtension
SQLite3::openBlob
SQLite3
PHP Manual

SQLite3::open

(PHP 5 >= 5.3.0, PHP 7)

SQLite3::open — Opens an SQLite database

说明

public void SQLite3::open ( string $filename [, int $flags = SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE [, string $encryption_key = null ]] )

Opens an SQLite 3 Database. If the build includes encryption, then it will attempt to use the key.

参数

filename

Path to the SQLite database, or :memory: to use in-memory database.

flags

Optional flags used to determine how to open the SQLite database. By default, open uses SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE.

  • SQLITE3_OPEN_READONLY: Open the database for reading only.

  • SQLITE3_OPEN_READWRITE: Open the database for reading and writing.

  • SQLITE3_OPEN_CREATE: Create the database if it does not exist.

encryption_key

An optional encryption key used when encrypting and decrypting an SQLite database. If the SQLite encryption module is not installed, this parameter will have no effect.

返回值

没有返回值。

范例

Example #1 SQLite3::open() example

<?php
/**
 * Simple example of extending the SQLite3 class and changing the __construct
 * parameters, then using the open method to initialize the DB.
 */
class MyDB extends SQLite3
{
    function __construct()
    {
        $this->open('mysqlitedb.db');
    }
}

$db = new MyDB();

$db->exec('CREATE TABLE foo (bar STRING)');
$db->exec("INSERT INTO foo (bar) VALUES ('This is a test')");

$result = $db->query('SELECT bar FROM foo');
var_dump($result->fetchArray());
?>

SQLite3::loadExtension
SQLite3::openBlob
SQLite3


Opens a stream resource to read a BLOB

SQLite3::open
SQLite3::prepare
SQLite3
PHP Manual

SQLite3::openBlob

(PHP 5 >= 5.3.0, PHP 7)

SQLite3::openBlob — Opens a stream resource to read a BLOB

说明

public resource SQLite3::open ( string $table , string $column , int $rowid [, string $dbname = "main" ] )

Opens a stream resource to read a BLOB, which would be selected by:

SELECT column FROM dbname.table WHERE rowid = rowid

参数

table

The table name.

column

The column name.

rowid

The row ID.

dbname

The symbolic name of the DB

返回值

Returns a stream resource, 或者在失败时返回 FALSE.

范例

Example #1 SQLite3::openBlob() example

<?php
$conn = new SQLite3(':memory:');
$conn->exec('CREATE TABLE test (text text)');
$conn->exec("INSERT INTO test VALUES ('Lorem ipsum')");
$stream = $conn->openBlob('test', 'text', 1);
echo stream_get_contents($stream);
fclose($stream); // mandatory, otherwise the next line would fail
$conn->close();
?>

以上例程会输出：

Lorem ipsum

SQLite3::open
SQLite3::prepare
SQLite3


Prepares an SQL statement for execution

SQLite3::openBlob
SQLite3::query
SQLite3
PHP Manual

SQLite3::prepare

(PHP 5 >= 5.3.0, PHP 7)

SQLite3::prepare — Prepares an SQL statement for execution

说明

public SQLite3Stmt SQLite3::prepare ( string $query )

Prepares an SQL statement for execution and returns an SQLite3Stmt object.

参数

query

The SQL query to prepare.

返回值

Returns an SQLite3Stmt object on success 或者在失败时返回 FALSE.

范例

Example #1 SQLite3::prepare() example

<?php
unlink('mysqlitedb.db');
$db = new SQLite3('mysqlitedb.db');

$db->exec('CREATE TABLE foo (id INTEGER, bar STRING)');
$db->exec("INSERT INTO foo (id, bar) VALUES (1, 'This is a test')");

$stmt = $db->prepare('SELECT bar FROM foo WHERE id=:id');
$stmt->bindValue(':id', 1, SQLITE3_INTEGER);

$result = $stmt->execute();
var_dump($result->fetchArray());
?>

SQLite3::openBlob
SQLite3::query
SQLite3


Executes an SQL query

SQLite3::prepare
SQLite3::querySingle
SQLite3
PHP Manual

SQLite3::query

(PHP 5 >= 5.3.0, PHP 7)

SQLite3::query — Executes an SQL query

说明

public SQLite3Result SQLite3::query ( string $query )

Executes an SQL query, returning an SQLite3Result object if the query returns results.

参数

query

The SQL query to execute.

返回值

Returns an SQLite3Result object if the query returns results. Otherwise, returns TRUE if the query succeeded, FALSE on failure.

范例

Example #1 SQLite3::query() example

<?php
$db = new SQLite3('mysqlitedb.db');

$results = $db->query('SELECT bar FROM foo');
while ($row = $results->fetchArray()) {
    var_dump($row);
}
?>

SQLite3::prepare
SQLite3::querySingle
SQLite3


Executes a query and returns a single result

SQLite3::query
SQLite3::version
SQLite3
PHP Manual

SQLite3::querySingle

(PHP 5 >= 5.3.0, PHP 7)

SQLite3::querySingle — Executes a query and returns a single result

说明

public mixed SQLite3::querySingle ( string $query [, bool $entire_row = false ] )

Executes a query and returns a single result.

参数

query

The SQL query to execute.

entire_row

By default, querySingle() returns the value of the first column returned by the query. If entire_row is TRUE, then it returns an array of the entire first row.

返回值

Returns the value of the first column of results or an array of the entire first row (if entire_row is TRUE).

If the query is valid but no results are returned, then NULL will be returned if entire_row is FALSE, otherwise an empty array is returned.

Invalid or failing queries will return FALSE.

范例

Example #1 SQLite3::querySingle() example

<?php
$db = new SQLite3('mysqlitedb.db');

var_dump($db->querySingle('SELECT username FROM user WHERE userid=1'));
print_r($db->querySingle('SELECT username, email FROM user WHERE userid=1', true));
?>

以上例程的输出类似于：

string(5) "Scott"
Array
(
    [username] => Scott
    [email] => scott@example.com
)

SQLite3::query
SQLite3::version
SQLite3


Returns the SQLite3 library version as a string constant and as a number

SQLite3::querySingle
SQLite3Stmt
SQLite3
PHP Manual

SQLite3::version

(PHP 5 >= 5.3.0, PHP 7)

SQLite3::version — Returns the SQLite3 library version as a string constant and as a number

说明

public static array SQLite3::version ( void )

Returns the SQLite3 library version as a string constant and as a number.

参数

此函数没有参数。

返回值

Returns an associative array with the keys "versionString" and "versionNumber".

范例

Example #1 SQLite3::version() example

<?php
print_r(SQLite3::version());
?>

以上例程的输出类似于：

Array
(
    [versionString] => 3.5.9
    [versionNumber] => 3005009
)

SQLite3::querySingle
SQLite3Stmt
SQLite3


SQLite3Stmt 类

(PHP 5 >= 5.3.0, PHP 7)

简介

处理 SQLite 3 扩展语句模板的类。

类摘要

SQLite3Stmt {
/* 方法 */
public bool bindParam ( mixed $sql_param , mixed &$param [, int $type ] )
public bool bindValue ( mixed $sql_param , mixed $value [, int $type ] )
public bool clear ( void )
public bool close ( void )
public SQLite3Result execute ( void )
public int paramCount ( void )
public bool readOnly ( void )
public bool reset ( void )
}

Table of Contents

  • SQLite3Stmt::bindParam — Binds a parameter to a statement variable
  • SQLite3Stmt::bindValue — Binds the value of a parameter to a statement variable
  • SQLite3Stmt::clear — Clears all current bound parameters
  • SQLite3Stmt::close — Closes the prepared statement
  • SQLite3Stmt::execute — Executes a prepared statement and returns a result set object
  • SQLite3Stmt::paramCount — Returns the number of parameters within the prepared statement
  • SQLite3Stmt::readOnly() — Returns whether a statement is definitely read only
  • SQLite3Stmt::reset — Resets the prepared statement
SQLite3::version
SQLite3Stmt::bindParam
SQLite3


Binds a parameter to a statement variable

SQLite3Stmt
SQLite3Stmt::bindValue
SQLite3Stmt
PHP Manual

SQLite3Stmt::bindParam

(PHP 5 >= 5.3.0, PHP 7)

SQLite3Stmt::bindParam — Binds a parameter to a statement variable

说明

public bool SQLite3Stmt::bindParam ( mixed $sql_param , mixed &$param [, int $type ] )

Binds a parameter to a statement variable.

参数

sql_param

Either a string or an int identifying the statement variable to which the parameter should be bound.

param

The parameter to bind to a statement variable.

type

The data type of the parameter to bind.

  • SQLITE3_INTEGER: The value is a signed integer, stored in 1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value.

  • SQLITE3_FLOAT: The value is a floating point value, stored as an 8-byte IEEE floating point number.

  • SQLITE3_TEXT: The value is a text string, stored using the database encoding (UTF-8, UTF-16BE or UTF-16-LE).

  • SQLITE3_BLOB: The value is a blob of data, stored exactly as it was input.

  • SQLITE3_NULL: The value is a NULL value.

返回值

Returns TRUE if the parameter is bound to the statement variable, FALSE on failure.

SQLite3Stmt
SQLite3Stmt::bindValue
SQLite3Stmt


Binds the value of a parameter to a statement variable

SQLite3Stmt::bindParam
SQLite3Stmt::clear
SQLite3Stmt
PHP Manual

SQLite3Stmt::bindValue

(PHP 5 >= 5.3.0, PHP 7)

SQLite3Stmt::bindValue — Binds the value of a parameter to a statement variable

说明

public bool SQLite3Stmt::bindValue ( mixed $sql_param , mixed $value [, int $type ] )

Binds the value of a parameter to a statement variable.

参数

sql_param

Either a string or an int identifying the statement variable to which the value should be bound.

value

The value to bind to a statement variable.

type

The data type of the value to bind.

  • SQLITE3_INTEGER: The value is a signed integer, stored in 1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value.

  • SQLITE3_FLOAT: The value is a floating point value, stored as an 8-byte IEEE floating point number.

  • SQLITE3_TEXT: The value is a text string, stored using the database encoding (UTF-8, UTF-16BE or UTF-16-LE).

  • SQLITE3_BLOB: The value is a blob of data, stored exactly as it was input.

  • SQLITE3_NULL: The value is a NULL value.

返回值

Returns TRUE if the value is bound to the statement variable, FALSE on failure.

范例

Example #1 SQLite3Stmt::bindValue() example

<?php
unlink('mysqlitedb.db');
$db = new SQLite3('mysqlitedb.db');

$db->exec('CREATE TABLE foo (id INTEGER, bar STRING)');
$db->exec("INSERT INTO foo (id, bar) VALUES (1, 'This is a test')");

$stmt = $db->prepare('SELECT bar FROM foo WHERE id=:id');
$stmt->bindValue(':id', 1, SQLITE3_INTEGER);

$result = $stmt->execute();
var_dump($result->fetchArray());
?>

SQLite3Stmt::bindParam
SQLite3Stmt::clear
SQLite3Stmt


Clears all current bound parameters

SQLite3Stmt::bindValue
SQLite3Stmt::close
SQLite3Stmt
PHP Manual

SQLite3Stmt::clear

(PHP 5 >= 5.3.0, PHP 7)

SQLite3Stmt::clear — Clears all current bound parameters

说明

public bool SQLite3Stmt::clear ( void )

Clears all current bound parameters.

参数

此函数没有参数。

返回值

Returns TRUE on successful clearing of bound parameters, FALSE on failure.

SQLite3Stmt::bindValue
SQLite3Stmt::close
SQLite3Stmt


Closes the prepared statement

SQLite3Stmt::clear
SQLite3Stmt::execute
SQLite3Stmt
PHP Manual

SQLite3Stmt::close

(PHP 5 >= 5.3.0, PHP 7)

SQLite3Stmt::close — Closes the prepared statement

说明

public bool SQLite3Stmt::close ( void )

Closes the prepared statement.

Note: Note that all SQLite3Results that have been retrieved by executing this statement will be invalidated when the statement is closed.

参数

此函数没有参数。

返回值

Returns TRUE

SQLite3Stmt::clear
SQLite3Stmt::execute
SQLite3Stmt


Executes a prepared statement and returns a result set object

SQLite3Stmt::close
SQLite3Stmt::paramCount
SQLite3Stmt
PHP Manual

SQLite3Stmt::execute

(PHP 5 >= 5.3.0, PHP 7)

SQLite3Stmt::execute — Executes a prepared statement and returns a result set object

说明

public SQLite3Result SQLite3Stmt::execute ( void )

Executes a prepared statement and returns a result set object.

Caution

Result set objects retrieved by calling this method on the same statement object are not independent, but rather share the same underlying structure. Therefore it is recommended to call SQLite3Result::finalize(), before calling SQLite3Stmt::execute() on the same statement object again.

参数

此函数没有参数。

返回值

Returns an SQLite3Result object on successful execution of the prepared statement, FALSE on failure.

SQLite3Stmt::close
SQLite3Stmt::paramCount
SQLite3Stmt


Returns the number of parameters within the prepared statement

SQLite3Stmt::execute
SQLite3Stmt::readOnly()
SQLite3Stmt
PHP Manual

SQLite3Stmt::paramCount

(PHP 5 >= 5.3.0, PHP 7)

SQLite3Stmt::paramCount — Returns the number of parameters within the prepared statement

说明

public int SQLite3Stmt::paramCount ( void )

Returns the number of parameters within the prepared statement.

参数

此函数没有参数。

返回值

Returns the number of parameters within the prepared statement.

SQLite3Stmt::execute
SQLite3Stmt::readOnly()
SQLite3Stmt


Returns whether a statement is definitely read only

SQLite3Stmt::paramCount
SQLite3Stmt::reset
SQLite3Stmt
PHP Manual

SQLite3Stmt::readOnly()

(PHP 5 >= 5.3.6, PHP 7)

SQLite3Stmt::readOnly() — Returns whether a statement is definitely read only

说明

public bool SQLite3Stmt::readOnly ( void )

Returns whether a statement is definitely read only. A statement is considered read only, if it makes no direct changes to the content of the database file. Note that user defined SQL functions might change the database indirectly as a side effect.

参数

此函数没有参数。

返回值

Returns TRUE if a statement is definitely read only, FALSE otherwise.

SQLite3Stmt::paramCount
SQLite3Stmt::reset
SQLite3Stmt


Resets the prepared statement

SQLite3Stmt::readOnly()
SQLite3Result
SQLite3Stmt
PHP Manual

SQLite3Stmt::reset

(PHP 5 >= 5.3.0, PHP 7)

SQLite3Stmt::reset — Resets the prepared statement

说明

public bool SQLite3Stmt::reset ( void )

Resets the prepared statement to its state prior to execution. All bindings remain intact after reset.

参数

此函数没有参数。

返回值

Returns TRUE if the statement is successfully reset, FALSE on failure.

SQLite3Stmt::readOnly()
SQLite3Result
SQLite3Stmt


SQLite3Result 类

(PHP 5 >= 5.3.0, PHP 7)

简介

处理 SQLite 3 扩展返回结果集的类。

类摘要

SQLite3Result {
/* 方法 */
public string columnName ( int $column_number )
public int columnType ( int $column_number )
public array fetchArray ([ int $mode = SQLITE3_BOTH ] )
public bool finalize ( void )
public int numColumns ( void )
public bool reset ( void )
}

Table of Contents

  • SQLite3Result::columnName — Returns the name of the nth column
  • SQLite3Result::columnType — Returns the type of the nth column
  • SQLite3Result::fetchArray — Fetches a result row as an associative or numerically indexed array or both
  • SQLite3Result::finalize — Closes the result set
  • SQLite3Result::numColumns — Returns the number of columns in the result set
  • SQLite3Result::reset — Resets the result set back to the first row
SQLite3Stmt::reset
SQLite3Result::columnName
SQLite3


Returns the name of the nth column

SQLite3Result
SQLite3Result::columnType
SQLite3Result
PHP Manual

SQLite3Result::columnName

(PHP 5 >= 5.3.0, PHP 7)

SQLite3Result::columnName — Returns the name of the nth column

说明

public string SQLite3Result::columnName ( int $column_number )

Returns the name of the column specified by the column_number.

参数

column_number

The numeric zero-based index of the column.

返回值

Returns the string name of the column identified by column_number.

SQLite3Result
SQLite3Result::columnType
SQLite3Result


Returns the type of the nth column

SQLite3Result::columnName
SQLite3Result::fetchArray
SQLite3Result
PHP Manual

SQLite3Result::columnType

(PHP 5 >= 5.3.0, PHP 7)

SQLite3Result::columnType — Returns the type of the nth column

说明

public int SQLite3Result::columnType ( int $column_number )

Returns the type of the column identified by column_number.

参数

column_number

The numeric zero-based index of the column.

返回值

Returns the data type index of the column identified by column_number (one of SQLITE3_INTEGER, SQLITE3_FLOAT, SQLITE3_TEXT, SQLITE3_BLOB, or SQLITE3_NULL).

SQLite3Result::columnName
SQLite3Result::fetchArray
SQLite3Result


Fetches a result row as an associative or numerically indexed array or both

SQLite3Result::columnType
SQLite3Result::finalize
SQLite3Result
PHP Manual

SQLite3Result::fetchArray

(PHP 5 >= 5.3.0, PHP 7)

SQLite3Result::fetchArray — Fetches a result row as an associative or numerically indexed array or both

说明

public array SQLite3Result::fetchArray ([ int $mode = SQLITE3_BOTH ] )

Fetches a result row as an associative or numerically indexed array or both. By default, fetches as both.

参数

mode

Controls how the next row will be returned to the caller. This value must be one of either SQLITE3_ASSOC, SQLITE3_NUM, or SQLITE3_BOTH.

  • SQLITE3_ASSOC: returns an array indexed by column name as returned in the corresponding result set

  • SQLITE3_NUM: returns an array indexed by column number as returned in the corresponding result set, starting at column 0

  • SQLITE3_BOTH: returns an array indexed by both column name and number as returned in the corresponding result set, starting at column 0

返回值

Returns a result row as an associatively or numerically indexed array or both. Alternately will return FALSE if there are no more rows.

The types of the values of the returned array are mapped from SQLite3 types as follows: integers are mapped to integer if they fit into the range PHP_INT_MIN..PHP_INT_MAX, and to string otherwise. Floats are mapped to float, NULL values are mapped to null, and strings and blobs are mapped to string.

SQLite3Result::columnType
SQLite3Result::finalize
SQLite3Result


Closes the result set

SQLite3Result::fetchArray
SQLite3Result::numColumns
SQLite3Result
PHP Manual

SQLite3Result::finalize

(PHP 5 >= 5.3.0, PHP 7)

SQLite3Result::finalize — Closes the result set

说明

public bool SQLite3Result::finalize ( void )

Closes the result set.

参数

此函数没有参数。

返回值

Returns TRUE.

SQLite3Result::fetchArray
SQLite3Result::numColumns
SQLite3Result


Returns the number of columns in the result set

SQLite3Result::finalize
SQLite3Result::reset
SQLite3Result
PHP Manual

SQLite3Result::numColumns

(PHP 5 >= 5.3.0, PHP 7)

SQLite3Result::numColumns — Returns the number of columns in the result set

说明

public int SQLite3Result::numColumns ( void )

Returns the number of columns in the result set.

参数

此函数没有参数。

返回值

Returns the number of columns in the result set.

SQLite3Result::finalize
SQLite3Result::reset
SQLite3Result


Resets the result set back to the first row

SQLite3Result::numColumns
SQLSRV
SQLite3Result
PHP Manual

SQLite3Result::reset

(PHP 5 >= 5.3.0, PHP 7)

SQLite3Result::reset — Resets the result set back to the first row

说明

public bool SQLite3Result::reset ( void )

Resets the result set back to the first row.

参数

此函数没有参数。

返回值

Returns TRUE if the result set is successfully reset back to the first row, FALSE on failure.

SQLite3Result::numColumns
SQLSRV
SQLite3Result


Microsoft SQL Server Driver for PHP

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • SQLSRV 函数
    • sqlsrv_begin_transaction — Begins a database transaction
    • sqlsrv_cancel — Cancels a statement
    • sqlsrv_client_info — Returns information about the client and specified connection
    • sqlsrv_close — Closes an open connection and releases resourses associated with the connection
    • sqlsrv_commit — Commits a transaction that was begun with sqlsrv_begin_transaction
    • sqlsrv_configure — Changes the driver error handling and logging configurations
    • sqlsrv_connect — Opens a connection to a Microsoft SQL Server database
    • sqlsrv_errors — Returns error and warning information about the last SQLSRV operation performed
    • sqlsrv_execute — Executes a statement prepared with sqlsrv_prepare
    • sqlsrv_fetch_array — Returns a row as an array
    • sqlsrv_fetch_object — Retrieves the next row of data in a result set as an object
    • sqlsrv_fetch — Makes the next row in a result set available for reading
    • sqlsrv_field_metadata — Retrieves metadata for the fields of a statement prepared by sqlsrv_prepare or sqlsrv_query
    • sqlsrv_free_stmt — Frees all resources for the specified statement
    • sqlsrv_get_config — Returns the value of the specified configuration setting
    • sqlsrv_get_field — Gets field data from the currently selected row
    • sqlsrv_has_rows — Indicates whether the specified statement has rows
    • sqlsrv_next_result — Makes the next result of the specified statement active
    • sqlsrv_num_fields — Retrieves the number of fields (columns) on a statement
    • sqlsrv_num_rows — Retrieves the number of rows in a result set
    • sqlsrv_prepare — Prepares a query for execution
    • sqlsrv_query — Prepares and executes a query.
    • sqlsrv_rollback — Rolls back a transaction that was begun with sqlsrv_begin_transaction
    • sqlsrv_rows_affected — Returns the number of rows modified by the last INSERT, UPDATE, or DELETE query executed
    • sqlsrv_send_stream_data — Sends data from parameter streams to the server
    • sqlsrv_server_info — Returns information about the server
SQLite3Result::reset
简介
针对各数据库系统对应的扩展


简介

The SQLSRV extension allows you to access Microsoft SQL Server and SQL Azure databases when running PHP on Windows. The 3.0 release of the driver supports SQL Server, beginning with SQL Server 2005, including SQL Server 2012 and SQL Server 2012 LocalDB. (For more information about LocalDB, see » PHP Driver for SQL Server Support for LocalDB and » SQL Server 2012 Express LocalDB.)

The SQLSRV extension is supported by Microsoft and available for download here: » http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx. SQL Server 2012 LocalDB can be downloaded here: » http://go.microsoft.com/fwlink/?LinkID=237665.

SQLSRV
安装／配置
SQLSRV


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
SQLSRV


需求

The SQLSRV extension can be used on the following operating systems:

  • Windows Vista Service Pack 2 or later
  • Windows Server 2008 Service Pack 2 or later
  • Windows Server 2008 R2
  • Windows 7

The SQLSRV extension requires that the Microsoft SQL Server 2012 Native Client be installed on the same computer that is running PHP. If the Microsoft SQL Server 2012 Native Client is not already installed, click the appropriate link below to download it:

  • » Download the x86 package
  • » Download the x64 package

The SQLSRV download comes 8 driver files, four of which are for PDO support. If you are running non-thread-safe PHP (PHP 5.3), use the php_sqlsrv_53_nts.dll file. (You should use a non-thread-safe version if you are using IIS as your web server). If you are running thread-safe PHP, use the php_sqlsrv_53_ts.dll file. Similarly for PHP 5.4, use the php_sqlsrv_54_nts.dll or php_sqlsrv_54_ts.dll depending on whether your PHP installation is non-thread-safe or thread-safe.

The most recent version of the driver is available for download here: » SQLSRV 3.0 download. If you need support for PHP 5.2 and/or PHP compiled with VC6, use the 2.0 release of the driver: » SQLSRV 2.0 download.

For more information about SQLSRV requirements, see » SQLSRV System Requirements.

安装／配置
安装
安装／配置


安装

The SQLSRV extension is enabled by adding appropriate DLL file to your PHP extension directory and the corresponding entry to the php.ini file. The SQLSRV download comes 8 driver files, four of which are for PDO support. If you are running non-thread-safe PHP (PHP 5.3), use the php_sqlsrv_53_nts.dll file. (You should use a non-thread-safe version if you are using IIS as your web server). If you are running thread-safe PHP, use the php_sqlsrv_53_ts.dll file. Similarly for PHP 5.4, use the php_sqlsrv_54_nts.dll or php_sqlsrv_54_ts.dll depending on whether your PHP installation is non-thread-safe or thread-safe.

The most recent version of the driver is available for download here: » SQLSRV 3.0 download. If you need support for PHP 5.2 and/or PHP compiled with VC6, use the 2.0 release of the driver: » SQLSRV 2.0 download.

For more information about SQLSRV requirements, see » SQLSRV System Requirements.

The SQLSRV extension is only compatible with PHP running on Windows.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

The following table lists the configuration options available in the SQLSRV extension. For more information about these options, see » Handling SQLSRV Warnings and Errors.

SQLSRV 配置选项
名字 | 默认 | 可修改范围 | Changelog
sqlsrv.WarningsReturnAsErrors | 1 (TRUE) | PHP_INI_ALL | Available since SQLSRV 1.0
sqlsrv.LogSubsystems | 0 | PHP_INI_ALL | Available since SQLSRV 1.0
sqlsrv.LogSeverity | 1 | PHP_INI_ALL | Available since SQLSRV 1.0

安装
资源类型
安装／配置


资源类型

Connection resource

A connection resource returned by sqlsrv_connect().

Statement resource

A statement resource returned by sqlsrv_query() or by sqlsrv_prepare().

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

SQLSRV_FETCH_ASSOC (integer)
Forces sqlsrv_fetch_array() to return an associative array when passed as a parameter.
SQLSRV_FETCH_NUMERIC (integer)
Forces sqlsrv_fetch_array() to return an array with numeric when passed as a parameter.
SQLSRV_FETCH_BOTH (integer)
Forces sqlsrv_fetch_array() to return an array with both associative and numeric keys when passed as a parameter (the default behavior).
SQLSRV_ERR_ALL (integer)
Forces sqlsrv_errors() to return both errors and warings when passed as a parameter (the default behavior).
SQLSRV_ERR_ERRORS (integer)
Forces sqlsrv_errors() to return errors only (no warnings) when passed as a parameter.
SQLSRV_ERR_WARNINGS (integer)
Forces sqlsrv_errors() to return warnings only (no errors) when passed as a parameter.
SQLSRV_LOG_SYSTEM_ALL (integer)
Turns on logging of all subsystems when passed to sqlsrv_configure() as a parameter.
SQLSRV_LOG_SYSTEM_CONN (integer)
Turns on logging of connection activity when passed to sqlsrv_configure() as a parameter.
SQLSRV_LOG_SYSTEM_INIT (integer)
Turns on logging of initialization activity when passed to sqlsrv_configure() as a parameter.
SQLSRV_LOG_SYSTEM_OFF (integer)
Turns off logging of all subsystems when passed to sqlsrv_configure() as a parameter.
SQLSRV_LOG_SYSTEM_STMT (integer)
Turns on logging of statement activity when passed to sqlsrv_configure() as a parameter.
SQLSRV_LOG_SYSTEM_UTIL (integer)
Turns on logging of error function activity when passed to sqlsrv_configure() as a parameter.
SQLSRV_LOG_SEVERITY_ALL (integer)
Specifies that errors, warnings, and notices will be logged when passed to sqlsrv_configure() as a parameter.
SQLSRV_LOG_SEVERITY_ERROR (integer)
Specifies that errors will be logged when passed to sqlsrv_configure() as a parameter.
SQLSRV_LOG_SEVERITY_NOTICE (integer)
Specifies that notices will be logged when passed to sqlsrv_configure() as a parameter.
SQLSRV_LOG_SEVERITY_WARNING (integer)
Specifies that warnings will be logged when passed to sqlsrv_configure() as a parameter.
SQLSRV_NULLABLE_YES (integer)
Indicates that a column is nullable.
SQLSRV_NULLABLE_NO (integer)
Indicates that a column is not nullable.
SQLSRV_NULLABLE_UNKNOWN (integer)
Indicates that it is not known if a column is nullable.
SQLSRV_PARAM_IN (integer)
Indicates an input parameter when passed to sqlsrv_query() or sqlsrv_prepare().
SQLSRV_PARAM_INOUT (integer)
Indicates a bidirectional parameter when passed to sqlsrv_query() or sqlsrv_prepare().
SQLSRV_PARAM_OUT (integer)
Indicates an output parameter when passed to sqlsrv_query() or sqlsrv_prepare().
SQLSRV_PHPTYPE_INT (integer)
Specifies an integer PHP data type. For usage information, see » How to: Specify PHP Types.
SQLSRV_PHPTYPE_DATETIME (integer)
Specifies a datetime PHP data type. For usage information, see » How to: Specify PHP Types.
SQLSRV_PHPTYPE_FLOAT (integer)
Specifies a float PHP data type. For usage information, see » How to: Specify PHP Types.
SQLSRV_PHPTYPE_STREAM (integer)
Specifies a PHP stream. This constant works like a function and accepts an encoding constant. See the SQLSRV_ENC_* constants. For usage information, see » How to: Specify PHP Types.
SQLSRV_PHPTYPE_STRING (integer)
Specifies a string PHP data type. This constant works like a function and accepts an encoding constant. See the SQLSRV_ENC_* constants. For usage information, see » How to: Specify PHP Types.
SQLSRV_ENC_BINARY (integer)
Specifies that data is returned as a raw byte stream from the server without performing encoding or translation. For usage information, see » How to: Specify PHP Types.
SQLSRV_ENC_CHAR (integer)
Data is returned in 8-bit characters as specified in the code page of the Windows locale that is set on the system. Any multi-byte characters or characters that do not map into this code page are substituted with a single byte question mark (?) character. This is the default encoding. For usage information, see » How to: Specify PHP Types.
UTF-8 (integer)
Specifies that data is returned with UTF-8 encoding. For usage information, see » How to: Specify PHP Types.
SQLSRV_SQLTYPE_BIGINT (integer)
Describes the bigint SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_BINARY (integer)
Describes the binary SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_BIT (integer)
Describes the bit SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_CHAR (integer)
Describes the char SQL Server data type. This constant works like a function and accepts a parameter indicating the number characters. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_DATE (integer)
Describes the date SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_DATETIME (integer)
Describes the datetime SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_DATETIME2 (integer)
Describes the datetime2 SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_DATETIMEOFFSET (integer)
Describes the datetimeoffset SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_DECIMAL (integer)
Describes the decimal SQL Server data type. This constant works like a function and accepts two parameters indicating (in order) precision and scale. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_FLOAT (integer)
Describes the float SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_IMAGE (integer)
Describes the image SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_INT (integer)
Describes the int SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_MONEY (integer)
Describes the money SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_NCHAR (integer)
Describes the nchar SQL Server data type. This constant works like a function and accepts a single parameter indicating the character count. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_NUMERIC (integer)
Describes the numeric SQL Server data type. This constant works like a function and accepts two parameter indicating (in order) precision and scale. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_NVARCHAR (integer)
Describes the nvarchar SQL Server data type. This constant works like a function and accepts a single parameter indicating the character count. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_NVARCHAR('max') (integer)
Describes the nvarchar(MAX) SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_NTEXT (integer)
Describes the ntext SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_REAL (integer)
Describes the real SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_SMALLDATETIME (integer)
Describes the smalldatetime SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_SMALLINT (integer)
Describes the smallint SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_SMALLMONEY (integer)
Describes the smallmoney SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_TEXT (integer)
Describes the text SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_TIME (integer)
Describes the time SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_TIMESTAMP (integer)
Describes the timestamp SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_TINYINT (integer)
Describes the tinyint SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_UNIQUEIDENTIFIER (integer)
Describes the uniqueidentifier SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_UDT (integer)
Describes the UDT SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_VARBINARY (integer)
Describes the varbinary SQL Server data type. This constant works like a function and accepts a single parameter indicating the byte count. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_VARBINARY('max') (integer)
Describes the varbinary(MAX) SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_VARCHAR (integer)
Describes the varchar SQL Server data type. This constant works like a function and accepts a single parameter indicating the character count. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_VARCHAR('max') (integer)
Describes the varchar(MAX) SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_SQLTYPE_XML (integer)
Describes the XML SQL Server data type. For usage information, see » How to: Specify SQL Types.
SQLSRV_TXN_READ_UNCOMMITTED (integer)
Inidicates a transaction isolation level of READ UNCOMMITTED. This value is used to set the TransactionIsolation level in the $connectionOptions arrary passed to sqlsrv_connect().
SQLSRV_TXN_READ_COMMITTED (integer)
Inidicates a transaction isolation level of READ COMMITTED. This value is used to set the TransactionIsolation level in the $connectionOptions arrary passed to sqlsrv_connect().
SQLSRV_TXN_REPEATABLE_READ (integer)
Inidicates a transaction isolation level of REPEATABLE READ. This value is used to set the TransactionIsolation level in the $connectionOptions arrary passed to sqlsrv_connect().
SQLSRV_TXN_SNAPSHOT (integer)
Inidicates a transaction isolation level of SNAPSHOT. This value is used to set the TransactionIsolation level in the $connectionOptions arrary passed to sqlsrv_connect().
SQLSRV_TXN_READ_SERIALIZABLE (integer)
Inidicates a transaction isolation level of SERIALIZABLE. This value is used to set the TransactionIsolation level in the $connectionOptions arrary passed to sqlsrv_connect().
SQLSRV_CURSOR_FORWARD (integer)
Inidicates a forward-only cursor. For usage information, see » Specifying a Cursor Type and Selecting Rows.
SQLSRV_CURSOR_STATIC (integer)
Inidicates a static cursor. For usage information, see » Specifying a Cursor Type and Selecting Rows.
SQLSRV_CURSOR_DYNAMIC (integer)
Inidicates a dynamic cursor. For usage information, see » Specifying a Cursor Type and Selecting Rows.
SQLSRV_CURSOR_KEYSET (integer)
Inidicates a keyset cursor. For usage information, see » Specifying a Cursor Type and Selecting Rows.
SQLSRV_CURSOR_BUFFERED (integer)
Creates a client-side cursor query. Lets you access rows in any order. For usage information, see » Specifying a Cursor Type and Selecting Rows.
SQLSRV_SCROLL_NEXT (integer)
Specifies which row to select in a result set. For usage information, see » Specifying a Cursor Type and Selecting Rows.
SQLSRV_SCROLL_PRIOR (integer)
Specifies which row to select in a result set. For usage information, see » Specifying a Cursor Type and Selecting Rows.
SQLSRV_SCROLL_FIRST (integer)
Specifies which row to select in a result set. For usage information, see » Specifying a Cursor Type and Selecting Rows.
SQLSRV_SCROLL_LAST (integer)
Specifies which row to select in a result set. For usage information, see » Specifying a Cursor Type and Selecting Rows.
SQLSRV_SCROLL_ABSOLUTE (integer)
Specifies which row to select in a result set. For usage information, see » Specifying a Cursor Type and Selecting Rows.
SQLSRV_SCROLL_RELATIVE (integer)
Specifies which row to select in a result set. For usage information, see » Specifying a Cursor Type and Selecting Rows.

资源类型
SQLSRV 函数
SQLSRV


SQLSRV 函数

Table of Contents

  • sqlsrv_begin_transaction — Begins a database transaction
  • sqlsrv_cancel — Cancels a statement
  • sqlsrv_client_info — Returns information about the client and specified connection
  • sqlsrv_close — Closes an open connection and releases resourses associated with the connection
  • sqlsrv_commit — Commits a transaction that was begun with sqlsrv_begin_transaction
  • sqlsrv_configure — Changes the driver error handling and logging configurations
  • sqlsrv_connect — Opens a connection to a Microsoft SQL Server database
  • sqlsrv_errors — Returns error and warning information about the last SQLSRV operation performed
  • sqlsrv_execute — Executes a statement prepared with sqlsrv_prepare
  • sqlsrv_fetch_array — Returns a row as an array
  • sqlsrv_fetch_object — Retrieves the next row of data in a result set as an object
  • sqlsrv_fetch — Makes the next row in a result set available for reading
  • sqlsrv_field_metadata — Retrieves metadata for the fields of a statement prepared by sqlsrv_prepare or sqlsrv_query
  • sqlsrv_free_stmt — Frees all resources for the specified statement
  • sqlsrv_get_config — Returns the value of the specified configuration setting
  • sqlsrv_get_field — Gets field data from the currently selected row
  • sqlsrv_has_rows — Indicates whether the specified statement has rows
  • sqlsrv_next_result — Makes the next result of the specified statement active
  • sqlsrv_num_fields — Retrieves the number of fields (columns) on a statement
  • sqlsrv_num_rows — Retrieves the number of rows in a result set
  • sqlsrv_prepare — Prepares a query for execution
  • sqlsrv_query — Prepares and executes a query.
  • sqlsrv_rollback — Rolls back a transaction that was begun with sqlsrv_begin_transaction
  • sqlsrv_rows_affected — Returns the number of rows modified by the last INSERT, UPDATE, or DELETE query executed
  • sqlsrv_send_stream_data — Sends data from parameter streams to the server
  • sqlsrv_server_info — Returns information about the server
预定义常量
sqlsrv_begin_transaction
SQLSRV


Begins a database transaction

SQLSRV 函数
sqlsrv_cancel
SQLSRV 函数
PHP Manual

sqlsrv_begin_transaction

(No version information available, might only be in Git)

sqlsrv_begin_transaction — Begins a database transaction

说明

bool sqlsrv_begin_transaction ( resource $conn )

The transaction begun by sqlsrv_begin_transaction() includes all statements that were executed after the call to sqlsrv_begin_transaction() and before calls to sqlsrv_rollback() or sqlsrv_commit(). Explicit transactions should be started and committed or rolled back using these functions instead of executing SQL statements that begin and committ/roll back transactions. For more information, see » SQLSRV Transactions.

参数

conn

The connection resource returned by a call to sqlsrv_connect().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 sqlsrv_begin_transaction() example

The following example demonstrates how to use sqlsrv_begin_transaction() together with sqlsrv_commit() and sqlsrv_rollback().

<?php
$serverName = "serverName\sqlexpress";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
    die( print_r( sqlsrv_errors(), true ));
}

/* Begin the transaction. */
if ( sqlsrv_begin_transaction( $conn ) === false ) {
     die( print_r( sqlsrv_errors(), true ));
}

/* Initialize parameter values. */
$orderId = 1; $qty = 10; $productId = 100;

/* Set up and execute the first query. */
$sql1 = "INSERT INTO OrdersTable (ID, Quantity, ProductID)
          VALUES (?, ?, ?)";
$params1 = array( $orderId, $qty, $productId );
$stmt1 = sqlsrv_query( $conn, $sql1, $params1 );

/* Set up and execute the second query. */
$sql2 = "UPDATE InventoryTable
          SET Quantity = (Quantity - ?)
          WHERE ProductID = ?";
$params2 = array($qty, $productId);
$stmt2 = sqlsrv_query( $conn, $sql2, $params2 );

/* If both queries were successful, commit the transaction. */
/* Otherwise, rollback the transaction. */
if( $stmt1 && $stmt2 ) {
     sqlsrv_commit( $conn );
     echo "Transaction committed.<br />";
} else {
     sqlsrv_rollback( $conn );
     echo "Transaction rolled back.<br />";
}
?>

以上例程的输出类似于：

参见

  • sqlsrv_commit() - Commits a transaction that was begun with sqlsrv_begin_transaction
  • sqlsrv_rollback() - Rolls back a transaction that was begun with sqlsrv_begin_transaction

SQLSRV 函数
sqlsrv_cancel
SQLSRV 函数


Cancels a statement

sqlsrv_begin_transaction
sqlsrv_client_info
SQLSRV 函数
PHP Manual

sqlsrv_cancel

(No version information available, might only be in Git)

sqlsrv_cancel — Cancels a statement

说明

bool sqlsrv_cancel ( resource $stmt )

Cancels a statement. Any results associated with the statement that have not been consumed are deleted. After sqlsrv_cancel() has been called, the specified statement can be re-executed if it was created with sqlsrv_prepare(). Calling sqlsrv_cancel() is not necessary if all the results associated with the statement have been consumed.

参数

stmt

The statement resource to be cancelled.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 sqlsrv_cancel() example

<?php
$serverName = "serverName\sqlexpress";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
     die( print_r( sqlsrv_errors(), true));
}

$sql = "SELECT Sales FROM Table_1";

$stmt = sqlsrv_prepare( $conn, $sql);

if( $stmt === false ) {
     die( print_r( sqlsrv_errors(), true));
}

if( sqlsrv_execute( $stmt ) === false) {
     die( print_r( sqlsrv_errors(), true));
}

$salesTotal = 0;
$count = 0;

while( ($row = sqlsrv_fetch_array( $stmt)) && $salesTotal <=100000)
{
     $qty = $row[0];
     $price = $row[1];
     $salesTotal += ( $price * $qty);
     $count++;
}

echo "$count sales accounted for the first $$salesTotal in revenue.<br />";

// Cancel the pending results. The statement can be reused.
sqlsrv_cancel( $stmt);
?>

注释

The main difference between sqlsrv_cancel() and sqlsrv_free_stmt() is that a statement resource cancelled with sqlsrv_cancel() can be re-executed if it was created with sqlsrv_prepare(). A statement resource cancelled with sqlsrv_free_statement() cannot be re-executed.

参见

  • sqlsrv_free_stmt() - Frees all resources for the specified statement
  • sqlsrv_prepare() - Prepares a query for execution

sqlsrv_begin_transaction
sqlsrv_client_info
SQLSRV 函数


Returns information about the client and specified connection

sqlsrv_cancel
sqlsrv_close
SQLSRV 函数
PHP Manual

sqlsrv_client_info

(No version information available, might only be in Git)

sqlsrv_client_info — Returns information about the client and specified connection

说明

array sqlsrv_client_info ( resource $conn )

Returns information about the client and specified connection

参数

conn

The connection about which information is returned.

返回值

Returns an associative array with keys described in the table below. Returns FALSE otherwise.

Array returned by sqlsrv_client_info
Key | Description
DriverDllName | SQLNCLI10.DLL
DriverODBCVer | ODBC version (xx.yy)
DriverVer | SQL Server Native Client DLL version (10.5.xxx)
ExtensionVer | php_sqlsrv.dll version (2.0.xxx.x)

范例

Example #1 sqlsrv_client_info() example

<?php
$serverName = "serverName\sqlexpress";
$connOptions = array("UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connOptions );

if( $conn === false ) {
    die( print_r( sqlsrv_errors(), true));
}

if( $client_info = sqlsrv_client_info( $conn)) {
    foreach( $client_info as $key => $value) {
        echo $key.": ".$value."<br />";
    }
} else {
    echo "Error in retrieving client info.<br />";
}
?>

参见

  • sqlsrv_server_info() - Returns information about the server

sqlsrv_cancel
sqlsrv_close
SQLSRV 函数


Closes an open connection and releases resourses associated with the connection

sqlsrv_client_info
sqlsrv_commit
SQLSRV 函数
PHP Manual

sqlsrv_close

(No version information available, might only be in Git)

sqlsrv_close — Closes an open connection and releases resourses associated with the connection

说明

bool sqlsrv_close ( resource $conn )

Closes an open connection and releases resourses associated with the connection.

参数

conn

The connection to be closed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 sqlsrv_close() example

<?php
$serverName = "serverName\sqlexpres";
$connOptions = array("UID"=>"username", "PWD"=>"password", "Database"=>"dbname");
$conn = sqlsrv_connect( $serverName, $connOptions );
if( $conn === false ) {
     die( print_r( sqlsrv_errors(), true));
}

//-------------------------------------
// Perform database operations here.
//-------------------------------------

// Close the connection.
sqlsrv_close( $conn );
?>

参见

  • sqlsrv_connect() - Opens a connection to a Microsoft SQL Server database

sqlsrv_client_info
sqlsrv_commit
SQLSRV 函数


Commits a transaction that was begun with sqlsrv_begin_transaction

sqlsrv_close
sqlsrv_configure
SQLSRV 函数
PHP Manual

sqlsrv_commit

(No version information available, might only be in Git)

sqlsrv_commit — Commits a transaction that was begun with sqlsrv_begin_transaction()

说明

bool sqlsrv_commit ( resource $conn )

Commits a transaction that was begun with sqlsrv_begin_transaction(). The connection is returned to auto-commit mode after sqlsrv_commit() is called. The transaction that is committed includes all statements that were executed after the call to sqlsrv_begin_transaction(). Explicit transactions should be started and committed or rolled back using these functions instead of executing SQL statements that begin and committ/roll back transactions. For more information, see » SQLSRV Transactions.

参数

conn

The connection on which the transaction is to be committed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 sqlsrv_commit() example

The following example demonstrates how to use sqlsrv_commit() together with sqlsrv_begin_transaction() and sqlsrv_rollback().

<?php
$serverName = "serverName\sqlexpress";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
    die( print_r( sqlsrv_errors(), true ));
}

/* Begin the transaction. */
if ( sqlsrv_begin_transaction( $conn ) === false ) {
     die( print_r( sqlsrv_errors(), true ));
}

/* Initialize parameter values. */
$orderId = 1; $qty = 10; $productId = 100;

/* Set up and execute the first query. */
$sql1 = "INSERT INTO OrdersTable (ID, Quantity, ProductID)
         VALUES (?, ?, ?)";
$params1 = array( $orderId, $qty, $productId );
$stmt1 = sqlsrv_query( $conn, $sql1, $params1 );

/* Set up and execute the second query. */
$sql2 = "UPDATE InventoryTable
         SET Quantity = (Quantity - ?)
         WHERE ProductID = ?";
$params2 = array($qty, $productId);
$stmt2 = sqlsrv_query( $conn, $sql2, $params2 );

/* If both queries were successful, commit the transaction. */
/* Otherwise, rollback the transaction. */
if( $stmt1 && $stmt2 ) {
     sqlsrv_commit( $conn );
     echo "Transaction committed.<br />";
} else {
     sqlsrv_rollback( $conn );
     echo "Transaction rolled back.<br />";
}
?>

参见

  • sqlsrv_begin_transaction() - Begins a database transaction
  • sqlsrv_rollback() - Rolls back a transaction that was begun with sqlsrv_begin_transaction

sqlsrv_close
sqlsrv_configure
SQLSRV 函数


Changes the driver error handling and logging configurations

sqlsrv_commit
sqlsrv_connect
SQLSRV 函数
PHP Manual

sqlsrv_configure

(No version information available, might only be in Git)

sqlsrv_configure — Changes the driver error handling and logging configurations

说明

bool sqlsrv_configure ( string $setting , mixed $value )

Changes the driver error handling and logging configurations.

参数

setting

The name of the setting to set. The possible values are "WarningsReturnAsErrors", "LogSubsystems", and "LogSeverity".

value

The value of the specified setting. The following table shows possible values:

Error and Logging Setting Options
Setting | Options
WarningsReturnAsErrors | 1 (TRUE) or 0 (FALSE)
LogSubsystems | SQLSRV_LOG_SYSTEM_ALL (-1) SQLSRV_LOG_SYSTEM_CONN (2) SQLSRV_LOG_SYSTEM_INIT (1) SQLSRV_LOG_SYSTEM_OFF (0) SQLSRV_LOG_SYSTEM_STMT (4) SQLSRV_LOG_SYSTEM_UTIL (8)
LogSeverity | SQLSRV_LOG_SEVERITY_ALL (-1) SQLSRV_LOG_SEVERITY_ERROR (1) SQLSRV_LOG_SEVERITY_NOTICE (4) SQLSRV_LOG_SEVERITY_WARNING (2)

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • » SQLSRV Error Handling.
  • » Logging SQLSRV Activity.

sqlsrv_commit
sqlsrv_connect
SQLSRV 函数


Opens a connection to a Microsoft SQL Server database

sqlsrv_configure
sqlsrv_errors
SQLSRV 函数
PHP Manual

sqlsrv_connect

(No version information available, might only be in Git)

sqlsrv_connect — Opens a connection to a Microsoft SQL Server database

说明

resource sqlsrv_connect ( string $serverName [, array $connectionInfo ] )

Opens a connection to a Microsoft SQL Server database. By default, the connection is attempted using Windows Authentication. To connect using SQL Server Authentication, include "UID" and "PWD" in the connection options array.

参数

serverName

The name of the server to which a connection is established. To connect to a specific instance, follow the server name with a backward slash and the instance name (e.g. serverName\sqlexpress).

connectionInfo

An associative array that specifies options for connecting to the server. If values for the UID and PWD keys are not specified, the connection will be attempted using Windows Authentication. For a complete list of supported keys, see » SQLSRV Connection Options.

返回值

A connection resource. If a connection cannot be successfully opened, FALSE is returned.

范例

Example #1 Connect using Windows Authentication.

<?php
$serverName = "serverName\sqlexpress"; //serverName\instanceName

// Since UID and PWD are not specified in the $connectionInfo array,
// The connection will be attempted using Windows Authentication.
$connectionInfo = array( "Database"=>"dbName");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
     echo "Connection established.<br />";
}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}
?>

Example #2 Connect by specifying a user name and password.

<?php
$serverName = "serverName\sqlexpress"; //serverName\instanceName
$connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
     echo "Connection established.<br />";
}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}
?>

Example #3 Connect on a specifed port.

<?php
$serverName = "serverName\sqlexpress, 1542"; //serverName\instanceName, portNumber (default is 1433)
$connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
     echo "Connection established.<br />";
}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}
?>

注释

By default, the sqlsrv_connect() uses connection pooling to improve connection performance. To turn off connection pooling (i.e. force a new connection on each call), set the "ConnectionPooling" option in the $connectionOptions array to 0 (or FALSE). For more information, see » SQLSRV Connection Pooling.

The SQLSRV extension does not have a dedicated function for changing which database is connected to. The target database is specified in the $connectionOptions array that is passed to sqlsrv_connect. To change the database on an open connection, execute the following query "USE dbName" (e.g. sqlsrv_query($conn, "USE dbName")).

参见

  • sqlsrv_close() - Closes an open connection and releases resourses associated with the connection
  • sqlsrv_errors() - Returns error and warning information about the last SQLSRV operation performed
  • sqlsrv_query() - Prepares and executes a query.

sqlsrv_configure
sqlsrv_errors
SQLSRV 函数


Returns error and warning information about the last SQLSRV operation performed

sqlsrv_connect
sqlsrv_execute
SQLSRV 函数
PHP Manual

sqlsrv_errors

(No version information available, might only be in Git)

sqlsrv_errors — Returns error and warning information about the last SQLSRV operation performed

说明

mixed sqlsrv_errors ([ int $errorsOrWarnings ] )

Returns error and warning information about the last SQLSRV operation performed.

参数

errorsOrWarnings

Determines whether error information, warning information, or both are returned. If this parameter is not supplied, both error information and warning information are returned. The following are the supported values for this parameter: SQLSRV_ERR_ALL, SQLSRV_ERR_ERRORS, SQLSRV_ERR_WARNINGS.

返回值

If errors and/or warnings occurred on the last sqlsrv operation, an array of arrays containing error information is returned. If no errors and/or warnings occurred on the last sqlsrv operation, NULL is returned. The following table describes the structure of the returned arrays:

Array returned by sqlsrv_errors
Key | Description
SQLSTATE | For errors that originate from the ODBC driver, the SQLSTATE returned by ODBC. For errors that originate from the Microsoft Drivers for PHP for SQL Server, a SQLSTATE of IMSSP. For warnings that originate from the Microsoft Drivers for PHP for SQL Server, a SQLSTATE of 01SSP.
code | For errors that originate from SQL Server, the native SQL Server error code. For errors that originate from the ODBC driver, the error code returned by ODBC. For errors that originate from the Microsoft Drivers for PHP for SQL Server, the Microsoft Drivers for PHP for SQL Server error code.
message | A description of the error.

范例

Example #1 functionname() example

<?php
$serverName = "serverName/sqlexpress";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
     die( print_r( sqlsrv_errors(), true));
}

/* Set up a query to select an invalid column name. */
$sql = "SELECT BadColumnName FROM Table_1";

/* Execution of the query will fail because of the bad column name. */
$stmt = sqlsrv_query( $conn, $sql );
if( $stmt === false ) {
    if( ($errors = sqlsrv_errors() ) != null) {
        foreach( $errors as $error ) {
            echo "SQLSTATE: ".$error[ 'SQLSTATE']."<br />";
            echo "code: ".$error[ 'code']."<br />";
            echo "message: ".$error[ 'message']."<br />";
        }
    }
}
?>

注释

By default, warnings generated on a call to any SQLSRV function are treated as errors. This means that if a warning occurs on a call to a SQLSRV function, the function returns FALSE. However, warnings that correspond to SQLSTATE values 01000, 01001, 01003, and 01S02 are never treated as errors. For information about changing this behavior, see sqlsrv_configure() and the WarningsReturnAsErrors setting.

参见

  • sqlsrv_configure() - Changes the driver error handling and logging configurations

sqlsrv_connect
sqlsrv_execute
SQLSRV 函数


Executes a statement prepared with sqlsrv_prepare

sqlsrv_errors
sqlsrv_fetch_array
SQLSRV 函数
PHP Manual

sqlsrv_execute

(No version information available, might only be in Git)

sqlsrv_execute — Executes a statement prepared with sqlsrv_prepare()

说明

bool sqlsrv_execute ( resource $stmt )

Executes a statement prepared with sqlsrv_prepare(). This function is ideal for executing a prepared statement multiple times with different parameter values.

参数

stmt

A statement resource returned by sqlsrv_prepare().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 sqlsrv_execute() example

This example demonstrates how to prepare a statement with sqlsrv_prepare() and re-execute it multiple times (with different parameter values) using sqlsrv_execute().

<?php
$serverName = "serverName\sqlexpress";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false) {
    die( print_r( sqlsrv_errors(), true));
}

$sql = "UPDATE Table_1
        SET OrderQty = ?
        WHERE SalesOrderID = ?";

// Initialize parameters and prepare the statement.
// Variables $qty and $id are bound to the statement, $stmt.
$qty = 0; $id = 0;
$stmt = sqlsrv_prepare( $conn, $sql, array( &$qty, &$id));
if( !$stmt ) {
    die( print_r( sqlsrv_errors(), true));
}

// Set up the SalesOrderDetailID and OrderQty information.
// This array maps the order ID to order quantity in key=>value pairs.
$orders = array( 1=>10, 2=>20, 3=>30);

// Execute the statement for each order.
foreach( $orders as $id => $qty) {
    // Because $id and $qty are bound to $stmt1, their updated
    // values are used with each execution of the statement.
    if( sqlsrv_execute( $stmt ) === false ) {
          die( print_r( sqlsrv_errors(), true));
    }
}
?>

注释

When you prepare a statement that uses variables as parameters, the variables are bound to the statement. This means that if you update the values of the variables, the next time you execute the statement it will run with updated parameter values. For statements that you plan to execute only once, use sqlsrv_query().

参见

  • sqlsrv_prepare() - Prepares a query for execution
  • sqlsrv_query() - Prepares and executes a query.

sqlsrv_errors
sqlsrv_fetch_array
SQLSRV 函数


Returns a row as an array

sqlsrv_execute
sqlsrv_fetch_object
SQLSRV 函数
PHP Manual

sqlsrv_fetch_array

(No version information available, might only be in Git)

sqlsrv_fetch_array — Returns a row as an array

说明

array sqlsrv_fetch_array ( resource $stmt [, int $fetchType [, int $row [, int $offset ]]] )

Returns the next available row of data as an associative array, a numeric array, or both (the default).

参数

stmt

A statement resource returned by sqlsrv_query or sqlsrv_prepare.

fetchType

A predefined constant specifying the type of array to return. Possible values are SQLSRV_FETCH_ASSOC, SQLSRV_FETCH_NUMERIC, and SQLSRV_FETCH_BOTH (the default).

A fetch type of SQLSRV_FETCH_ASSOC should not be used when consuming a result set with multiple columns of the same name.

row

Specifies the row to access in a result set that uses a scrollable cursor. Possible values are SQLSRV_SCROLL_NEXT, SQLSRV_SCROLL_PRIOR, SQLSRV_SCROLL_FIRST, SQLSRV_SCROLL_LAST, SQLSRV_SCROLL_ABSOLUTE and, SQLSRV_SCROLL_RELATIVE (the default). When this parameter is specified, the fetchType must be explicitly defined.

offset

Specifies the row to be accessed if the row parameter is set to SQLSRV_SCROLL_ABSOLUTE or SQLSRV_SCROLL_RELATIVE. Note that the first row in a result set has index 0.

返回值

Returns an array on success, NULL if there are no more rows to return, and FALSE if an error occurs.

范例

Example #1 Retrieving an associative array.

<?php
$serverName = "serverName\instanceName";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo );
if( $conn === false ) {
    die( print_r( sqlsrv_errors(), true));
}

$sql = "SELECT FirstName, LastName FROM SomeTable";
$stmt = sqlsrv_query( $conn, $sql );
if( $stmt === false) {
    die( print_r( sqlsrv_errors(), true) );
}

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
      echo $row['LastName'].", ".$row['FirstName']."<br />";
}

sqlsrv_free_stmt( $stmt);
?>

Example #2 Retrieving a numeric array.

<?php
$serverName = "serverName\instanceName";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo );
if( $conn === false ) {
    die( print_r( sqlsrv_errors(), true));
}

$sql = "SELECT FirstName, LastName FROM SomeTable";
$stmt = sqlsrv_query( $conn, $sql );
if( $stmt === false) {
    die( print_r( sqlsrv_errors(), true) );
}

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC) ) {
      echo $row[0].", ".$row[1]."<br />";
}

sqlsrv_free_stmt( $stmt);
?>

注释

Not specifying the fetchType or explicity using the SQLSRV_FETCH_TYPE constant in the examples above will return an array that has both associative and numeric keys.

If more than one column is returned with the same name, the last column will take precedence. To avoid field name collisions, use aliases.

If a column with no name is returned, the associative key for the array element will be an empty string ("").

参见

  • sqlsrv_connect() - Opens a connection to a Microsoft SQL Server database
  • sqlsrv_query() - Prepares and executes a query.
  • sqlsrv_errors() - Returns error and warning information about the last SQLSRV operation performed
  • sqlsrv_fetch() - Makes the next row in a result set available for reading

sqlsrv_execute
sqlsrv_fetch_object
SQLSRV 函数


Retrieves the next row of data in a result set as an object

sqlsrv_fetch_array
sqlsrv_fetch
SQLSRV 函数
PHP Manual

sqlsrv_fetch_object

(No version information available, might only be in Git)

sqlsrv_fetch_object — Retrieves the next row of data in a result set as an object

说明

mixed sqlsrv_fetch_object ( resource $stmt [, string $className [, array $ctorParams [, int $row [, int $offset ]]]] )

Retrieves the next row of data in a result set as an instance of the specified class with properties that match the row field names and values that correspond to the row field values.

参数

stmt

A statement resource created by sqlsrv_query() or sqlsrv_execute().

className

The name of the class to instantiate. If no class name is specified, stdClass is instantiated.

ctorParams

Values passed to the constructor of the specified class. If the constructor of the specified class takes parameters, the ctorParams array must be supplied.

row

The row to be accessed. This parameter can only be used if the specified statement was prepared with a scrollable cursor. In that case, this parameter can take on one of the following values:

  • SQLSRV_SCROLL_NEXT
  • SQLSRV_SCROLL_PRIOR
  • SQLSRV_SCROLL_FIRST
  • SQLSRV_SCROLL_LAST
  • SQLSRV_SCROLL_ABSOLUTE
  • SQLSRV_SCROLL_RELATIVE

offset

Specifies the row to be accessed if the row parameter is set to SQLSRV_SCROLL_ABSOLUTE or SQLSRV_SCROLL_RELATIVE. Note that the first row in a result set has index 0.

返回值

Returns an object on success, NULL if there are no more rows to return, and FALSE if an error occurs or if the specified class does not exist.

范例

Example #1 sqlsrv_fetch_object() example

The following example demonstrates how to retrieve a row as a stdClass object.

<?php
$serverName = "serverName\sqlexpress";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
     die( print_r( sqlsrv_errors(), true));
}

$sql = "SELECT fName, lName FROM Table_1";
$stmt = sqlsrv_query( $conn, $sql);
if( $stmt === false ) {
     die( print_r( sqlsrv_errors(), true));
}

// Retrieve each row as an object.
// Because no class is specified, each row will be retrieved as a stdClass object.
// Property names correspond to field names.
while( $obj = sqlsrv_fetch_object( $stmt)) {
      echo $obj->fName.", ".$obj->lName."<br />";
}
?>

注释

If a class name is specified with the optional $className parameter and the class has properties whose names match the result set field names, the corresponding result set values are applied to the properties. If a result set field name does not match a class property, a property with the result set field name is added to the object and the result set value is applied to the property. The following rules apply when using the $className parameter:

  • Field-property name matching is case-sensitive.
  • Field-property matching occurs regardless of access modifiers.
  • Class property data types are ignored when applying a field value to a property.
  • If the class does not exist, the function returns FALSE and adds an error to the error collection.
Regardless of whether the $className parameter is supplied, if a field with no name is returned, the field value will be ignored and a warning will be added to the error collection.

When consuming a result set that has multiple columns with the same name, it may be better to use sqlsrv_fetch_array() or the combination of sqlsrv_fetch() and sqlsrv_get_field().

参见

  • sqlsrv_fetch() - Makes the next row in a result set available for reading
  • sqlsrv_fetch_array() - Returns a row as an array

sqlsrv_fetch_array
sqlsrv_fetch
SQLSRV 函数


Makes the next row in a result set available for reading

sqlsrv_fetch_object
sqlsrv_field_metadata
SQLSRV 函数
PHP Manual

sqlsrv_fetch

(No version information available, might only be in Git)

sqlsrv_fetch — Makes the next row in a result set available for reading

说明

mixed sqlsrv_fetch ( resource $stmt [, int $row [, int $offset ]] )

Makes the next row in a result set available for reading. Use sqlsrv_get_field() to read the fields of the row.

参数

stmt

A statement resource created by executing sqlsrv_query() or sqlsrv_execute().

row

The row to be accessed. This parameter can only be used if the specified statement was prepared with a scrollable cursor. In that case, this parameter can take on one of the following values:

  • SQLSRV_SCROLL_NEXT
  • SQLSRV_SCROLL_PRIOR
  • SQLSRV_SCROLL_FIRST
  • SQLSRV_SCROLL_LAST
  • SQLSRV_SCROLL_ABSOLUTE
  • SQLSRV_SCROLL_RELATIVE

offset

Specifies the row to be accessed if the row parameter is set to SQLSRV_SCROLL_ABSOLUTE or SQLSRV_SCROLL_RELATIVE. Note that the first row in a result set has index 0.

返回值

Returns TRUE if the next row of a result set was successfully retrieved, FALSE if an error occurs, and NULL if there are no more rows in the result set.

范例

Example #1 sqlsrv_fetch() example

The following example demonstrates how to retrieve a row with sqlsrv_fetch() and get the row fields with sqlsrv_get_field().

<?php
$serverName = "serverName\sqlexpress";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
     die( print_r( sqlsrv_errors(), true));
}

$sql = "SELECT Name, Comment
        FROM Table_1
        WHERE ReviewID=1";
$stmt = sqlsrv_query( $conn, $sql);
if( $stmt === false ) {
     die( print_r( sqlsrv_errors(), true));
}

// Make the first (and in this case, only) row of the result set available for reading.
if( sqlsrv_fetch( $stmt ) === false) {
     die( print_r( sqlsrv_errors(), true));
}

// Get the row fields. Field indeces start at 0 and must be retrieved in order.
// Retrieving row fields by name is not supported by sqlsrv_get_field.
$name = sqlsrv_get_field( $stmt, 0);
echo "$name: ";

$comment = sqlsrv_get_field( $stmt, 1);
echo $comment;
?>

参见

  • sqlsrv_get_field() - Gets field data from the currently selected row
  • sqlsrv_fetch_array() - Returns a row as an array
  • sqlsrv_fetch_object() - Retrieves the next row of data in a result set as an object

sqlsrv_fetch_object
sqlsrv_field_metadata
SQLSRV 函数


Retrieves metadata for the fields of a statement prepared by sqlsrv_prepare or sqlsrv_query

sqlsrv_fetch
sqlsrv_free_stmt
SQLSRV 函数
PHP Manual

sqlsrv_field_metadata

(No version information available, might only be in Git)

sqlsrv_field_metadata — Retrieves metadata for the fields of a statement prepared by sqlsrv_prepare() or sqlsrv_query()

说明

mixed sqlsrv_field_metadata ( resource $stmt )

Retrieves metadata for the fields of a statement prepared by sqlsrv_prepare() or sqlsrv_query(). sqlsrv_field_metadata() can be called on a statement before or after statement execution.

参数

stmt

The statment resource for which metadata is returned.

返回值

Returns an array of arrays is returned on success. Otherwise, FALSE is returned. Each returned array is described by the following table:

Array returned by sqlsrv_field_metadata
Key | Description
Name | The name of the field.
Type | The numeric value for the SQL type.
Size | The number of characters for fields of character type, the number of bytes for fields of binary type, or NULL for other types.
Precision | The precision for types of variable precision, NULL for other types.
Scale | The scale for types of variable scale, NULL for other types.
Nullable | An enumeration indicating whether the column is nullable, not nullable, or if it is not known.
For more information, see » sqlsrv_field_metadata in the Microsoft SQLSRV documentation.

范例

Example #1 sqlsrv_field_metadata() example

<?php
$serverName = "serverName\sqlexpress";
$connectionInfo = array( "Database"=>"AdventureWorks", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
   die( print_r( sqlsrv_errors(), true));
}

$sql = "SELECT * FROM Table_1";
$stmt = sqlsrv_prepare( $conn, $sql );

foreach( sqlsrv_field_metadata( $stmt ) as $fieldMetadata ) {
    foreach( $fieldMetadata as $name => $value) {
       echo "$name: $value<br />";
    }
      echo "<br />";
}
?>

参见

  • sqlsrv_client_info() - Returns information about the client and specified connection

sqlsrv_fetch
sqlsrv_free_stmt
SQLSRV 函数


Frees all resources for the specified statement

sqlsrv_field_metadata
sqlsrv_get_config
SQLSRV 函数
PHP Manual

sqlsrv_free_stmt

(No version information available, might only be in Git)

sqlsrv_free_stmt — Frees all resources for the specified statement

说明

bool sqlsrv_free_stmt ( resource $stmt )

Frees all resources for the specified statement. The statement cannot be used after sqlsrv_free_stmt() has been called on it. If sqlsrv_free_stmt() is called on an in-progress statement that alters server state, statement execution is terminated and the statement is rolled back.

参数

stmt

The statment for which resources are freed. Note that NULL is a valid parameter value. This allows the function to be called multiple times in a script.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 sqlsrv_free_stmt() example

<?php
$serverName = "serverName\sqlexpress";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
     die( print_r( sqlsrv_errors(), true));
}

$stmt = sqlsrv_query( $conn, "SELECT * FROM Table_1");
if( $stmt === false ) {
     die( print_r( sqlsrv_errors(), true));
}

/*-------------------------------
     Process query results here.
-------------------------------*/

/* Free the statement resources. */
sqlsrv_free_stmt( $stmt);

?>

注释

The main difference between sqlsrv_free_stmt() and sqlsrv_cancel() is that a statement resource cancelled with sqlsrv_cancel() can be re-executed if it was created with sqlsrv_prepare(). A statement resource cancelled with sqlsrv_free_statement() cannot be re-executed.

参见

  • sqlsrv_cancel() - Cancels a statement

sqlsrv_field_metadata
sqlsrv_get_config
SQLSRV 函数


Returns the value of the specified configuration setting

sqlsrv_free_stmt
sqlsrv_get_field
SQLSRV 函数
PHP Manual

sqlsrv_get_config

(No version information available, might only be in Git)

sqlsrv_get_config — Returns the value of the specified configuration setting

说明

mixed sqlsrv_get_config ( string $setting )

Returns the value of the specified configuration setting.

参数

setting

The name of the setting for which the value is returned. For a list of configurable settings, see sqlsrv_configure().

返回值

Returns the value of the specified setting. If an invalid setting is specified, FALSE is returned.

参见

  • sqlsrv_configure() - Changes the driver error handling and logging configurations

sqlsrv_free_stmt
sqlsrv_get_field
SQLSRV 函数


Gets field data from the currently selected row

sqlsrv_get_config
sqlsrv_has_rows
SQLSRV 函数
PHP Manual

sqlsrv_get_field

(No version information available, might only be in Git)

sqlsrv_get_field — Gets field data from the currently selected row

说明

mixed sqlsrv_get_field ( resource $stmt , int $fieldIndex [, int $getAsType ] )

Gets field data from the currently selected row. Fields must be accessed in order. Field indices start at 0.

参数

stmt

A statement resource returned by sqlsrv_query() or sqlsrv_execute().

fieldIndex

The index of the field to be retrieved. Field indices start at 0. Fields must be accessed in order. i.e. If you access field index 1, then field index 0 will not be available.

getAsType

The PHP data type for the returned field data. If this parameter is not set, the field data will be returned as its default PHP data type. For information about default PHP data types, see » Default PHP Data Types in the Microsoft SQLSRV documentation.

返回值

Returns data from the specified field on success. Returns FALSE otherwise.

范例

Example #1 sqlsrv_get_field() example

The following example demonstrates how to retrieve a row with sqlsrv_fetch() and get the row fields with sqlsrv_get_field().

<?php
$serverName = "serverName\sqlexpress";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
     die( print_r( sqlsrv_errors(), true));
}

$sql = "SELECT Name, Comment
        FROM Table_1
        WHERE ReviewID=1";
$stmt = sqlsrv_query( $conn, $sql);
if( $stmt === false ) {
     die( print_r( sqlsrv_errors(), true));
}

// Make the first (and in this case, only) row of the result set available for reading.
if( sqlsrv_fetch( $stmt ) === false) {
     die( print_r( sqlsrv_errors(), true));
}

// Get the row fields. Field indeces start at 0 and must be retrieved in order.
// Retrieving row fields by name is not supported by sqlsrv_get_field.
$name = sqlsrv_get_field( $stmt, 0);
echo "$name: ";

$comment = sqlsrv_get_field( $stmt, 1);
echo $comment;
?>

参见

  • sqlsrv_fetch() - Makes the next row in a result set available for reading
  • sqlsrv_fetch_array() - Returns a row as an array
  • sqlsrv_fetch_object() - Retrieves the next row of data in a result set as an object

sqlsrv_get_config
sqlsrv_has_rows
SQLSRV 函数


Indicates whether the specified statement has rows

sqlsrv_get_field
sqlsrv_next_result
SQLSRV 函数
PHP Manual

sqlsrv_has_rows

(No version information available, might only be in Git)

sqlsrv_has_rows — Indicates whether the specified statement has rows

说明

bool sqlsrv_has_rows ( resource $stmt )

Indicates whether the specified statement has rows.

参数

stmt

A statement resource returned by sqlsrv_query() or sqlsrv_execute().

返回值

Returns TRUE if the specified statement has rows and FALSE if the statement does not have rows or if an error occurred.

范例

Example #1 sqlsrv_has_rows() example

<?php
$server = "serverName\sqlexpress";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password" )
$conn = sqlsrv_connect( $server, $connectionInfo );

$stmt = sqlsrv_query( $conn, "SELECT * FROM Table_1");

if ($stmt) {
   $rows = sqlsrv_has_rows( $stmt );
   if ($rows === true)
      echo "There are rows. <br />";
   else
      echo "There are no rows. <br />";
}
?>

参见

  • sqlsrv_num_rows() - Retrieves the number of rows in a result set
  • sqlsrv_query() - Prepares and executes a query.

sqlsrv_get_field
sqlsrv_next_result
SQLSRV 函数


Makes the next result of the specified statement active

sqlsrv_has_rows
sqlsrv_num_fields
SQLSRV 函数
PHP Manual

sqlsrv_next_result

(No version information available, might only be in Git)

sqlsrv_next_result — Makes the next result of the specified statement active

说明

mixed sqlsrv_next_result ( resource $stmt )

Makes the next result of the specified statement active. Results include result sets, row counts, and output parameters.

参数

stmt

The statment on which the next result is being called.

返回值

Returns TRUE if the next result was successfully retrieved, FALSE if an error occurred, and NULL if there are no more results to retrieve.

范例

Example #1 sqlsrv_next_result() example

The following example executes a batch query that inserts into a table and then selects from the table. This produces two results on the statement: one for the rows affected by the INSERT and one for the rows returned by the SELECT. To get to the rows returned by the SELECT, sqlsrv_next_result() must be called to move past the first result.

<?php
$serverName = "serverName\sqlexpress";
$connectionInfo = array("Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

$query = "INSERT INTO Table_1 (id, data) VALUES (?,?); SELECT * FROM TABLE_1;";
$params = array(1, "some data");
$stmt = sqlsrv_query($conn, $query, $params);

// Consume the first result (rows affected by INSERT) without calling sqlsrv_next_result.
echo "Rows affected: ".sqlsrv_rows_affected($stmt)."<br />";

// Move to the next result and display results.
$next_result = sqlsrv_next_result($stmt);
if( $next_result ) {
   while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)){
      echo $row['id'].": ".$row['data']."<br />";
   }
} elseif( is_null($next_result)) {
     echo "No more results.<br />";
} else {
     die(print_r(sqlsrv_errors(), true));
}
?>

参见

  • sqlsrv_query() - Prepares and executes a query.
  • sqlsrv_fetch_array() - Returns a row as an array
  • sqlsrv_rows_affected() - Returns the number of rows modified by the last INSERT, UPDATE, or DELETE query executed

sqlsrv_has_rows
sqlsrv_num_fields
SQLSRV 函数


Retrieves the number of fields (columns) on a statement

sqlsrv_next_result
sqlsrv_num_rows
SQLSRV 函数
PHP Manual

sqlsrv_num_fields

(No version information available, might only be in Git)

sqlsrv_num_fields — Retrieves the number of fields (columns) on a statement

说明

mixed sqlsrv_num_fields ( resource $stmt )

Retrieves the number of fields (columns) on a statement.

参数

stmt

The statment for which the number of fields is returned. sqlsrv_num_fields() can be called on a statement before or after statement execution.

返回值

Returns the number of fields on success. Returns FALSE otherwise.

范例

Example #1 sqlsrv_num_fields() example

<?php
$serverName = "serverName\sqlexpress";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
   die( print_r( sqlsrv_errors(), true));
}

$sql = "SELECT * FROM Table_1";
$stmt = sqlsrv_query($conn, $sql);
if( $stmt === false) {
   die( print_r( sqlsrv_errors(), true));
}

$numFields = sqlsrv_num_fields( $stmt );

while( sqlsrv_fetch( $stmt )) {
   // Iterate through the fields of each row.
   for($i = 0; $i < $numFields; $i++) {
      echo sqlsrv_get_field($stmt, $i)." ";
   }
   echo "<br />";
}
?>

参见

  • sqlsrv_field_metadata() - Retrieves metadata for the fields of a statement prepared by sqlsrv_prepare or sqlsrv_query
  • sqlsrv_fetch() - Makes the next row in a result set available for reading
  • sqlsrv_get_field() - Gets field data from the currently selected row

sqlsrv_next_result
sqlsrv_num_rows
SQLSRV 函数


Retrieves the number of rows in a result set

sqlsrv_num_fields
sqlsrv_prepare
SQLSRV 函数
PHP Manual

sqlsrv_num_rows

(No version information available, might only be in Git)

sqlsrv_num_rows — Retrieves the number of rows in a result set

说明

mixed sqlsrv_num_rows ( resource $stmt )

Retrieves the number of rows in a result set. This function requires that the statment resource be created with a static or keyset cursor. For more information, see sqlsrv_query(), sqlsrv_prepare(), or » Specifying a Cursor Type and Selecting Rows in the Microsoft SQLSRV documentation.

参数

stmt

The statement for which the row count is returned. The statment resource must be created with a static or keyset cursor. For more information, see sqlsrv_query(), sqlsrv_prepare(), or » Specifying a Cursor Type and Selecting Rows in the Microsoft SQLSRV documentation.

返回值

Returns the number of rows retrieved on success and FALSE if an error occurred. If a forward cursor (the default) or dynamic cursor is used, FALSE is returned.

范例

Example #1 sqlsrv_num_rows() example

<?php
$server = "serverName\sqlexpress";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password" );
$conn = sqlsrv_connect( $server, $connectionInfo );

$sql = "SELECT * FROM Table_1";
$params = array();
$options =  array( "Scrollable" => SQLSRV_CURSOR_KEYSET );
$stmt = sqlsrv_query( $conn, $sql , $params, $options );

$row_count = sqlsrv_num_rows( $stmt );

if ($row_count === false)
   echo "Error in retrieveing row count.";
else
   echo $row_count;
?>

参见

  • sqlsrv_has_rows() - Indicates whether the specified statement has rows
  • sqlsrv_rows_affected() - Returns the number of rows modified by the last INSERT, UPDATE, or DELETE query executed

sqlsrv_num_fields
sqlsrv_prepare
SQLSRV 函数


Prepares a query for execution

sqlsrv_num_rows
sqlsrv_query
SQLSRV 函数
PHP Manual

sqlsrv_prepare

(No version information available, might only be in Git)

sqlsrv_prepare — Prepares a query for execution

说明

mixed sqlsrv_prepare ( resource $conn , string $sql [, array $params [, array $options ]] )

Prepares a query for execution. This function is ideal for preparing a query that will be executed multiple times with different parameter values.

参数

conn

A connection resource returned by sqlsrv_connect().

sql

The string that defines the query to be prepared and executed.

params

An array specifying parameter information when executing a parameterized query. Array elements can be any of the following:

  • A literal value
  • A PHP variable
  • An array with this structure: array($value [, $direction [, $phpType [, $sqlType]]])
The following table describes the elements in the array structure above:

Array structure
Element | Description
$value | A literal value, a PHP variable, or a PHP by-reference variable.
$direction (optional) | One of the following SQLSRV constants used to indicate the parameter direction: SQLSRV_PARAM_IN, SQLSRV_PARAM_OUT, SQLSRV_PARAM_INOUT. The default value is SQLSRV_PARAM_IN.
$phpType (optional) | A SQLSRV_PHPTYPE_* constant that specifies PHP data type of the returned value.
$sqlType (optional) | A SQLSRV_SQLTYPE_* constant that specifies the SQL Server data type of the input value.
options

An array specifing query property options. The supported keys are described in the following table:

Query Options
Key | Values | Description
QueryTimeout | A positive integer value. | Sets the query timeout in seconds. By default, the driver will wait indefinitely for results.
SendStreamParamsAtExec | TRUE or FALSE (the default is TRUE) | Configures the driver to send all stream data at execution (TRUE), or to send stream data in chunks (FALSE). By default, the value is set to TRUE. For more information, see sqlsrv_send_stream_data().
Scrollable | SQLSRV_CURSOR_FORWARD, SQLSRV_CURSOR_STATIC, SQLSRV_CURSOR_DYNAMIC, or SQLSRV_CURSOR_KEYSET | See » Specifying a Cursor Type and Selecting Rows in the Microsoft SQLSRV documentation.

返回值

Returns a statement resource on success and FALSE if an error occurred.

范例

Example #1 sqlsrv_prepare() example

This example demonstrates how to prepare a statement with sqlsrv_prepare() and re-execute it multiple times (with different parameter values) using sqlsrv_execute().

<?php
$serverName = "serverName\sqlexpress";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false) {
    die( print_r( sqlsrv_errors(), true));
}

$sql = "UPDATE Table_1
        SET OrderQty = ?
        WHERE SalesOrderID = ?";

// Initialize parameters and prepare the statement.
// Variables $qty and $id are bound to the statement, $stmt.
$qty = 0; $id = 0;
$stmt = sqlsrv_prepare( $conn, $sql, array( &$qty, &$id));
if( !$stmt ) {
    die( print_r( sqlsrv_errors(), true));
}

// Set up the SalesOrderDetailID and OrderQty information.
// This array maps the order ID to order quantity in key=>value pairs.
$orders = array( 1=>10, 2=>20, 3=>30);

// Execute the statement for each order.
foreach( $orders as $id => $qty) {
    // Because $id and $qty are bound to $stmt1, their updated
    // values are used with each execution of the statement.
    if( sqlsrv_execute( $stmt ) === false ) {
          die( print_r( sqlsrv_errors(), true));
    }
}
?>

注释

When you prepare a statement that uses variables as parameters, the variables are bound to the statement. This means that if you update the values of the variables, the next time you execute the statement it will run with updated parameter values. For statements that you plan to execute only once, use sqlsrv_query().

参见

  • sqlsrv_execute() - Executes a statement prepared with sqlsrv_prepare
  • sqlsrv_query() - Prepares and executes a query.

sqlsrv_num_rows
sqlsrv_query
SQLSRV 函数


Prepares and executes a query.

sqlsrv_prepare
sqlsrv_rollback
SQLSRV 函数
PHP Manual

sqlsrv_query

(No version information available, might only be in Git)

sqlsrv_query — Prepares and executes a query.

说明

mixed sqlsrv_query ( resource $conn , string $sql [, array $params [, array $options ]] )

Prepares and executes a query.

参数

conn

A connection resource returned by sqlsrv_connect().

sql

The string that defines the query to be prepared and executed.

params

An array specifying parameter information when executing a parameterized query. Array elements can be any of the following:

  • A literal value
  • A PHP variable
  • An array with this structure: array($value [, $direction [, $phpType [, $sqlType]]])
The following table describes the elements in the array structure above:

Array structure
Element | Description
$value | A literal value, a PHP variable, or a PHP by-reference variable.
$direction (optional) | One of the following SQLSRV constants used to indicate the parameter direction: SQLSRV_PARAM_IN, SQLSRV_PARAM_OUT, SQLSRV_PARAM_INOUT. The default value is SQLSRV_PARAM_IN.
$phpType (optional) | A SQLSRV_PHPTYPE_* constant that specifies PHP data type of the returned value.
$sqlType (optional) | A SQLSRV_SQLTYPE_* constant that specifies the SQL Server data type of the input value.
options

An array specifing query property options. The supported keys are described in the following table:

Query Options
Key | Values | Description
QueryTimeout | A positive integer value. | Sets the query timeout in seconds. By default, the driver will wait indefinitely for results.
SendStreamParamsAtExec | TRUE or FALSE (the default is TRUE) | Configures the driver to send all stream data at execution (TRUE), or to send stream data in chunks (FALSE). By default, the value is set to TRUE. For more information, see sqlsrv_send_stream_data().
Scrollable | SQLSRV_CURSOR_FORWARD, SQLSRV_CURSOR_STATIC, SQLSRV_CURSOR_DYNAMIC, or SQLSRV_CURSOR_KEYSET | See » Specifying a Cursor Type and Selecting Rows in the Microsoft SQLSRV documentation.

返回值

Returns a statement resource on success and FALSE if an error occurred.

范例

Example #1 sqlsrv_query() example

<?php
$serverName = "serverName\sqlexpress";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password" );
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
     die( print_r( sqlsrv_errors(), true));
}

$sql = "INSERT INTO Table_1 (id, data) VALUES (?, ?)";
$params = array(1, "some data");

$stmt = sqlsrv_query( $conn, $sql, $params);
if( $stmt === false ) {
     die( print_r( sqlsrv_errors(), true));
}
?>

注释

For statements that you plan to execute only once, use sqlsrv_query(). If you intend to re-execute a statement with different parameter values, use the combination of sqlsrv_prepare() and sqlsrv_execute().

参见

  • sqlsrv_prepare() - Prepares a query for execution
  • sqlsrv_execute() - Executes a statement prepared with sqlsrv_prepare

sqlsrv_prepare
sqlsrv_rollback
SQLSRV 函数


Rolls back a transaction that was begun with sqlsrv_begin_transaction

sqlsrv_query
sqlsrv_rows_affected
SQLSRV 函数
PHP Manual

sqlsrv_rollback

(No version information available, might only be in Git)

sqlsrv_rollback — Rolls back a transaction that was begun with sqlsrv_begin_transaction()

说明

bool sqlsrv_rollback ( resource $conn )

Rolls back a transaction that was begun with sqlsrv_begin_transaction() and returns the connection to auto-commit mode.

参数

conn

The connection resource returned by a call to sqlsrv_connect().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 sqlsrv_rollback() example

The following example demonstrates how to use sqlsrv_begin_transaction() together with sqlsrv_commit() and sqlsrv_rollback().

<?php
$serverName = "serverName\sqlexpress";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
    die( print_r( sqlsrv_errors(), true ));
}

/* Begin the transaction. */
if ( sqlsrv_begin_transaction( $conn ) === false ) {
     die( print_r( sqlsrv_errors(), true ));
}

/* Initialize parameter values. */
$orderId = 1; $qty = 10; $productId = 100;

/* Set up and execute the first query. */
$sql1 = "INSERT INTO OrdersTable (ID, Quantity, ProductID)
         VALUES (?, ?, ?)";
$params1 = array( $orderId, $qty, $productId );
$stmt1 = sqlsrv_query( $conn, $sql1, $params1 );

/* Set up and execute the second query. */
$sql2 = "UPDATE InventoryTable
         SET Quantity = (Quantity - ?)
         WHERE ProductID = ?";
$params2 = array($qty, $productId);
$stmt2 = sqlsrv_query( $conn, $sql2, $params2 );

/* If both queries were successful, commit the transaction. */
/* Otherwise, rollback the transaction. */
if( $stmt1 && $stmt2 ) {
     sqlsrv_commit( $conn );
     echo "Transaction committed.<br />";
} else {
     sqlsrv_rollback( $conn );
     echo "Transaction rolled back.<br />";
}
?>

参见

  • sqlsrv_begin_transaction() - Begins a database transaction
  • sqlsrv_commit() - Commits a transaction that was begun with sqlsrv_begin_transaction

sqlsrv_query
sqlsrv_rows_affected
SQLSRV 函数


Returns the number of rows modified by the last INSERT, UPDATE, or DELETE query executed

sqlsrv_rollback
sqlsrv_send_stream_data
SQLSRV 函数
PHP Manual

sqlsrv_rows_affected

(No version information available, might only be in Git)

sqlsrv_rows_affected — Returns the number of rows modified by the last INSERT, UPDATE, or DELETE query executed

说明

int sqlsrv_rows_affected ( resource $stmt )

Returns the number of rows modified by the last INSERT, UPDATE, or DELETE query executed. For information about the number of rows returned by a SELECT query, see sqlsrv_num_rows().

参数

stmt

The executed statement resource for which the number of affected rows is returned.

返回值

Returns the number of rows affected by the last INSERT, UPDATE, or DELETE query. If no rows were affected, 0 is returned. If the number of affected rows cannot be determined, -1 is returned. If an error occurred, FALSE is returned.

范例

Example #1 sqlsrv_rows_affected() example

<?php
$serverName = "serverName\sqlexpress";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password" );
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
     die( print_r( sqlsrv_errors(), true));
}

$sql = "UPDATE Table_1 SET data = ? WHERE id = ?";

$params = array("updated data", 1);

$stmt = sqlsrv_query( $conn, $sql, $params);

$rows_affected = sqlsrv_rows_affected( $stmt);
if( $rows_affected === false) {
     die( print_r( sqlsrv_errors(), true));
} elseif( $rows_affected == -1) {
      echo "No information available.<br />";
} else {
      echo $rows_affected." rows were updated.<br />";
}
?>

参见

  • sqlsrv_num_rows() - Retrieves the number of rows in a result set

sqlsrv_rollback
sqlsrv_send_stream_data
SQLSRV 函数


Sends data from parameter streams to the server

sqlsrv_rows_affected
sqlsrv_server_info
SQLSRV 函数
PHP Manual

sqlsrv_send_stream_data

(No version information available, might only be in Git)

sqlsrv_send_stream_data — Sends data from parameter streams to the server

说明

bool sqlsrv_send_stream_data ( resource $stmt )

Send data from parameter streams to the server. Up to 8 KB of data is sent with each call.

参数

stmt

A statement resource returned by sqlsrv_query() or sqlsrv_execute().

返回值

Returns TRUE if there is more data to send and FALSE if there is not.

范例

Example #1 sqlsrv_send_stream_data() example

<?php
$serverName = "serverName\sqlexpress";
$connectionInfo = array( "Database"=>"dbName", "UID"=>"username", "PWD"=>"password" );
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) {
     die( print_r( sqlsrv_errors(), true));
}

$sql = "UPDATE Table_1 SET data = ( ?) WHERE id = 100";

// Open parameter data as a stream and put it in the $params array.
$data = fopen( "data://text/plain,[ Lengthy content here. ]", "r");
$params = array( &$data);

// Prepare the statement. Use the $options array to turn off the
// default behavior, which is to send all stream data at the time of query
// execution.
$options = array("SendStreamParamsAtExec"=>0);
$stmt = sqlsrv_prepare( $conn, $sql, $params, $options);

sqlsrv_execute( $stmt);

// Send up to 8K of parameter data to the server
// with each call to sqlsrv_send_stream_data.
$i = 1;
while( sqlsrv_send_stream_data( $stmt)) {
      $i++;
}
echo "$i calls were made.";
?>

参见

  • sqlsrv_prepare() - Prepares a query for execution
  • sqlsrv_query() - Prepares and executes a query.

sqlsrv_rows_affected
sqlsrv_server_info
SQLSRV 函数


Returns information about the server

sqlsrv_send_stream_data
Sybase
SQLSRV 函数
PHP Manual

sqlsrv_server_info

(No version information available, might only be in Git)

sqlsrv_server_info — Returns information about the server

说明

array sqlsrv_server_info ( resource $conn )

Returns information about the server.

参数

conn

The connection resource that connects the client and the server.

返回值

Returns an array as described in the following table:

Returned Array
CurrentDatabase | The connected-to database.
SQLServerVersion | The SQL Server version.
SQLServerName | The name of the server.

范例

Example #1 sqlsrv_server_info() example

<?php
$serverName = "serverName\sqlexpress";
$conn = sqlsrv_connect( $serverName);
if( $conn === false ) {
     die( print_r( sqlsrv_errors(), true));
}

$server_info = sqlsrv_server_info( $conn);
if( $server_info )
{
    foreach( $server_info as $key => $value) {
       echo $key.": ".$value."<br />";
    }
} else {
      die( print_r( sqlsrv_errors(), true));
}
?>

参见

  • sqlsrv_client_info() - Returns information about the client and specified connection

sqlsrv_send_stream_data
Sybase
SQLSRV 函数


Sybase

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Sybase 函数
    • sybase_affected_rows — Gets number of affected rows in last query
    • sybase_close — Closes a Sybase connection
    • sybase_connect — Opens a Sybase server connection
    • sybase_data_seek — Moves internal row pointer
    • sybase_deadlock_retry_count — Sets the deadlock retry count
    • sybase_fetch_array — Fetch row as array
    • sybase_fetch_assoc — Fetch a result row as an associative array
    • sybase_fetch_field — Get field information from a result
    • sybase_fetch_object — Fetch a row as an object
    • sybase_fetch_row — Get a result row as an enumerated array
    • sybase_field_seek — Sets field offset
    • sybase_free_result — Frees result memory
    • sybase_get_last_message — Returns the last message from the server
    • sybase_min_client_severity — Sets minimum client severity
    • sybase_min_error_severity — Sets minimum error severity
    • sybase_min_message_severity — Sets minimum message severity
    • sybase_min_server_severity — Sets minimum server severity
    • sybase_num_fields — Gets the number of fields in a result set
    • sybase_num_rows — Get number of rows in a result set
    • sybase_pconnect — Open persistent Sybase connection
    • sybase_query — Sends a Sybase query
    • sybase_result — Get result data
    • sybase_select_db — Selects a Sybase database
    • sybase_set_message_handler — Sets the handler called when a server message is raised
    • sybase_unbuffered_query — Send a Sybase query and do not block
sqlsrv_server_info
简介
针对各数据库系统对应的扩展


简介

Warning

As of PHP 7.0.0, the sybase_ct extension has been removed.

Sybase
安装／配置
Sybase


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Sybase


安装

To enable Sybase-DB support configure PHP --with-sybase[=DIR] . DIR is the Sybase home directory, defaults to /home/sybase. To enable Sybase-CT support configure PHP --with-sybase-ct[=DIR] . DIR is the Sybase home directory, defaults to /home/sybase.

Note:

As of PHP 5.3.0, the Sybase extension has been superseded by the sybase_ct extension and is no longer maintained. To continue using sybase you must use the sybase_ct extension.

As of PHP 7.0.0, the sybase_ct extension has been removed.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Sybase configuration options
名字 | 默认 | 可修改范围 | 更新日志
sybase.allow_persistent | "1" | PHP_INI_ALL | PHP_INI_ALL in PHP <= 4.0.2. PHP_INI_SYSTEM in PHP <= 4.0.3.
sybase.max_persistent | "-1" | PHP_INI_ALL | PHP_INI_ALL in PHP <= 4.0.2. PHP_INI_SYSTEM in PHP <= 4.0.3.
sybase.max_links | "-1" | PHP_INI_ALL | PHP_INI_ALL in PHP <= 4.0.2. PHP_INI_SYSTEM in PHP <= 4.0.3.
sybase.interface_file | "/usr/sybase/interfaces" | PHP_INI_SYSTEM |
sybase.min_error_severity | "10" | PHP_INI_ALL |
sybase.min_message_severity | "10" | PHP_INI_ALL |
sybase.compatability_mode | "0" | PHP_INI_ALL |
magic_quotes_sybase | "0" | PHP_INI_ALL | Deprecated in PHP 5.3.0. Removed in PHP 5.4.0.

这是配置指令的简短说明。

sybase.allow_persistent boolean

Whether to allow persistent Sybase connections.

sybase.max_persistent integer

The maximum number of persistent Sybase connections per process. -1 means no limit.

sybase.max_links integer

The maximum number of Sybase connections per process, including persistent connections. -1 means no limit.

sybase.min_error_severity integer

Minimum error severity to display.

sybase.min_message_severity integer

Minimum message severity to display.

magic_quotes_sybase boolean

If magic_quotes_sybase is on, a single-quote is escaped with a single-quote instead of a backslash if magic_quotes_gpc or magic_quotes_runtime are enabled. This setting is also respected by addslashes() and stripslashes().

Note:

Note that when magic_quotes_sybase is ON it completely overrides magic_quotes_gpc . In this case even when magic_quotes_gpc is enabled neither double quotes, backslashes or NUL's will be escaped.

Warning

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

Sybase-CT configuration options
名字 | 默认 | 可修改范围 | 更新日志
sybct.deadlock_retry_count | "0" | PHP_INI_ALL | Available since PHP 4.3.0.

这是配置指令的简短说明。

sybct.login_timeout integer

The maximum time in seconds to wait for a connection attempt to succeed before returning failure. Note that if max_execution_time has been exceeded when a connection attempt times out, your script will be terminated before it can take action on failure. The default is one minute.

sybct.timeout integer

The maximum time in seconds to wait for a select_db or query operation to succeed before returning failure. Note that if max_execution_time has been exceeded when an operation times out, your script will be terminated before it can take action on failure. The default is no limit.

sybct.deadlock_retry_count int

Allows you to define how often deadlocks are to be retried. The default is 0, value -1 means "forever".

有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

安装
资源类型
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
Sybase 函数
Sybase


Sybase 函数

Table of Contents

  • sybase_affected_rows — Gets number of affected rows in last query
  • sybase_close — Closes a Sybase connection
  • sybase_connect — Opens a Sybase server connection
  • sybase_data_seek — Moves internal row pointer
  • sybase_deadlock_retry_count — Sets the deadlock retry count
  • sybase_fetch_array — Fetch row as array
  • sybase_fetch_assoc — Fetch a result row as an associative array
  • sybase_fetch_field — Get field information from a result
  • sybase_fetch_object — Fetch a row as an object
  • sybase_fetch_row — Get a result row as an enumerated array
  • sybase_field_seek — Sets field offset
  • sybase_free_result — Frees result memory
  • sybase_get_last_message — Returns the last message from the server
  • sybase_min_client_severity — Sets minimum client severity
  • sybase_min_error_severity — Sets minimum error severity
  • sybase_min_message_severity — Sets minimum message severity
  • sybase_min_server_severity — Sets minimum server severity
  • sybase_num_fields — Gets the number of fields in a result set
  • sybase_num_rows — Get number of rows in a result set
  • sybase_pconnect — Open persistent Sybase connection
  • sybase_query — Sends a Sybase query
  • sybase_result — Get result data
  • sybase_select_db — Selects a Sybase database
  • sybase_set_message_handler — Sets the handler called when a server message is raised
  • sybase_unbuffered_query — Send a Sybase query and do not block
预定义常量
sybase_affected_rows
Sybase


Gets number of affected rows in last query

Sybase 函数
sybase_close
Sybase 函数
PHP Manual

sybase_affected_rows

(PHP 4, PHP 5)

sybase_affected_rows — Gets number of affected rows in last query

Warning

This function was REMOVED in PHP 7.0.0.

说明

int sybase_affected_rows ([ resource $link_identifier ] )

sybase_affected_rows() returns the number of rows affected by the last INSERT, UPDATE or DELETE query on the server associated with the specified link identifier.

This command is not effective for SELECT statements, only on statements which modify records. To retrieve the number of rows returned from a SELECT, use sybase_num_rows().

参数

link_identifier

If the link identifier isn't specified, the last opened link is assumed.

返回值

Returns the number of affected rows, as an integer.

范例

Example #1 Delete-Query

<?php
/* connect to database */
sybase_connect('SYBASE', '', '') or
die("Could not connect");
sybase_select_db("db");

sybase_query("DELETE FROM sometable WHERE id < 10");
printf("Records deleted: %d\n", sybase_affected_rows());
?>

以上例程会输出：

Records deleted: 10

参见

  • sybase_num_rows() - Get number of rows in a result set

Sybase 函数
sybase_close
Sybase 函数


Closes a Sybase connection

sybase_affected_rows
sybase_connect
Sybase 函数
PHP Manual

sybase_close

(PHP 4, PHP 5)

sybase_close — Closes a Sybase connection

Warning

This function was REMOVED in PHP 7.0.0.

说明

bool sybase_close ([ resource $link_identifier ] )

sybase_close() closes the link to a Sybase database that's associated with the specified link link_identifier.

Note that this isn't usually necessary, as non-persistent open links are automatically closed at the end of the script's execution.

sybase_close() will not close persistent links generated by sybase_pconnect().

参数

link_identifier

If the link identifier isn't specified, the last opened link is assumed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • sybase_connect() - Opens a Sybase server connection
  • sybase_pconnect() - Open persistent Sybase connection

sybase_affected_rows
sybase_connect
Sybase 函数


Opens a Sybase server connection

sybase_close
sybase_data_seek
Sybase 函数
PHP Manual

sybase_connect

(PHP 4, PHP 5)

sybase_connect — Opens a Sybase server connection

Warning

This function was REMOVED in PHP 7.0.0.

说明

resource sybase_connect ([ string $servername [, string $username [, string $password [, string $charset [, string $appname [, bool $new = false ]]]]]] )

sybase_connect() establishes a connection to a Sybase server.

In case a second call is made to sybase_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned.

The link to the server will be closed as soon as the execution of the script ends, unless it's closed earlier by explicitly calling sybase_close().

参数

servername

The servername argument has to be a valid servername that is defined in the 'interfaces' file.

username

Sybase user name

password

Password associated with username.

charset

Specifies the charset for the connection

appname

Specifies an appname for the Sybase connection. This allow you to make separate connections in the same script to the same database. This may come handy when you have started a transaction in your current connection, and you need to be able to do a separate query which cannot be performed inside this transaction.

new

Whether to open a new connection or use the existing one.

返回值

Returns a positive Sybase link identifier on success, or FALSE on failure.

更新日志

版本 | 说明
5.3.0 | The new parameter was added.

范例

Example #1 sybase_connect() example

<?php
$link = sybase_connect('SYBASE', '', '')
        or die("Could not connect !");
echo "Connected successfully";
sybase_close($link);
?>

参见

  • sybase_pconnect() - Open persistent Sybase connection
  • sybase_close() - Closes a Sybase connection

sybase_close
sybase_data_seek
Sybase 函数


Moves internal row pointer

sybase_connect
sybase_deadlock_retry_count
Sybase 函数
PHP Manual

sybase_data_seek

(PHP 4, PHP 5)

sybase_data_seek — Moves internal row pointer

Warning

This function was REMOVED in PHP 7.0.0.

说明

bool sybase_data_seek ( resource $result_identifier , int $row_number )

sybase_data_seek() moves the internal row pointer of the Sybase result associated with the specified result identifier to pointer to the specified row number. The next call to sybase_fetch_row() would return that row.

参数

result_identifier

row_number

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • sybase_fetch_row() - Get a result row as an enumerated array

sybase_connect
sybase_deadlock_retry_count
Sybase 函数


Sets the deadlock retry count

sybase_data_seek
sybase_fetch_array
Sybase 函数
PHP Manual

sybase_deadlock_retry_count

(PHP 4 >= 4.3.0, PHP 5)

sybase_deadlock_retry_count — Sets the deadlock retry count

Warning

This function was REMOVED in PHP 7.0.0.

说明

void sybase_deadlock_retry_count ( int $retry_count )

Using sybase_deadlock_retry_count(), the number of retries can be defined in cases of deadlocks. By default, every deadlock is retried an infinite number of times or until the process is killed by Sybase, the executing script is killed (for instance, by set_time_limit()) or the query succeeds.

参数

retry_count

Values for retry_count
-1 | Retry forever (default)
0 | Do not retry
n | Retry n times

返回值

没有返回值。

注释

Note: 此函数仅适用于对 Sybase 使用 CT 库接口，而不适用于 DB 库。

sybase_data_seek
sybase_fetch_array
Sybase 函数


Fetch row as array

sybase_deadlock_retry_count
sybase_fetch_assoc
Sybase 函数
PHP Manual

sybase_fetch_array

(PHP 4, PHP 5)

sybase_fetch_array — Fetch row as array

Warning

This function was REMOVED in PHP 7.0.0.

说明

array sybase_fetch_array ( resource $result )

sybase_fetch_array() is an extended version of sybase_fetch_row(). In addition to storing the data in the numeric indices of the result array, it also stores the data in associative indices, using the field names as keys.

An important thing to note is that using sybase_fetch_array() is NOT significantly slower than using sybase_fetch_row(), while it provides a significant added value.

参数

result

返回值

Returns an array that corresponds to the fetched row, or FALSE if there are no more rows.

Note:

When selecting fields with identical names (for instance, in a join), the associative indices will have a sequential number prepended. See the example for details.

范例

Example #1 Identical fieldnames

<?php

$dbh = sybase_connect('SYBASE', '', '');
$q = sybase_query('SELECT * FROM p, a WHERE p.person_id= a.person_id');
var_dump(sybase_fetch_array($q));
sybase_close($dbh);
?>

The above example would produce the following output (assuming the two tables only have each one column called "person_id"):

array(4) {
  [0]=>
  int(1)
  ["person_id"]=>
  int(1)
  [1]=>
  int(1)
  ["person_id1"]=>
  int(1)
}

参见

  • sybase_fetch_row() - Get a result row as an enumerated array
  • sybase_fetch_assoc() - Fetch a result row as an associative array
  • sybase_fetch_object() - Fetch a row as an object

sybase_deadlock_retry_count
sybase_fetch_assoc
Sybase 函数


Fetch a result row as an associative array

sybase_fetch_array
sybase_fetch_field
Sybase 函数
PHP Manual

sybase_fetch_assoc

(PHP 4 >= 4.3.0, PHP 5)

sybase_fetch_assoc — Fetch a result row as an associative array

Warning

This function was REMOVED in PHP 7.0.0.

说明

array sybase_fetch_assoc ( resource $result )

sybase_fetch_assoc() is a version of sybase_fetch_row() that uses column names instead of integers for indices in the result array. Columns from different tables with the same names are returned as name, name1, name2, ..., nameN.

An important thing to note is that using sybase_fetch_assoc() is NOT significantly slower than using sybase_fetch_row(), while it provides a significant added value.

参数

result

返回值

Returns an array that corresponds to the fetched row, or FALSE if there are no more rows.

注释

Note: 此函数仅适用于对 Sybase 使用 CT 库接口，而不适用于 DB 库。

参见

  • sybase_fetch_row() - Get a result row as an enumerated array
  • sybase_fetch_array() - Fetch row as array
  • sybase_fetch_object() - Fetch a row as an object

sybase_fetch_array
sybase_fetch_field
Sybase 函数


Get field information from a result

sybase_fetch_assoc
sybase_fetch_object
Sybase 函数
PHP Manual

sybase_fetch_field

(PHP 4, PHP 5)

sybase_fetch_field — Get field information from a result

Warning

This function was REMOVED in PHP 7.0.0.

说明

object sybase_fetch_field ( resource $result [, int $field_offset = -1 ] )

sybase_fetch_field() can be used in order to obtain information about fields in a certain query result.

参数

result

field_offset

If the field offset isn't specified, the next field that wasn't yet retrieved by sybase_fetch_field() is retrieved.

返回值

Returns an object containing field information.

The properties of the object are:

  • name - column name. if the column is a result of a function, this property is set to computed#N, where #N is a serial number.
  • column_source - the table from which the column was taken
  • max_length - maximum length of the column
  • numeric - 1 if the column is numeric
  • type - datatype of the column

参见

  • sybase_field_seek() - Sets field offset

sybase_fetch_assoc
sybase_fetch_object
Sybase 函数


Fetch a row as an object

sybase_fetch_field
sybase_fetch_row
Sybase 函数
PHP Manual

sybase_fetch_object

(PHP 4, PHP 5)

sybase_fetch_object — Fetch a row as an object

Warning

This function was REMOVED in PHP 7.0.0.

说明

object sybase_fetch_object ( resource $result [, mixed $object ] )

sybase_fetch_object() is similar to sybase_fetch_assoc(), with one difference - an object is returned, instead of an array.

Speed-wise, the function is identical to sybase_fetch_array(), and almost as quick as sybase_fetch_row() (the difference is insignificant).

参数

result

object

Use the second object to specify the type of object you want to return. If this parameter is omitted, the object will be of type stdClass.

返回值

Returns an object with properties that correspond to the fetched row, or FALSE if there are no more rows.

范例

Example #1 sybase_fetch_object() return as Foo

<?php
    class Foo {
        var $foo, $bar, $baz;
    }

    // {...]
    $qrh= sybase_query('SELECT foo, bar, baz FROM example');
    $foo= sybase_fetch_object($qrh, 'Foo');
    $bar= sybase_fetch_object($qrh, new Foo());
    // {...]
?>

参见

  • sybase_fetch_array() - Fetch row as array
  • sybase_fetch_row() - Get a result row as an enumerated array

sybase_fetch_field
sybase_fetch_row
Sybase 函数


Get a result row as an enumerated array

sybase_fetch_object
sybase_field_seek
Sybase 函数
PHP Manual

sybase_fetch_row

(PHP 4, PHP 5)

sybase_fetch_row — Get a result row as an enumerated array

Warning

This function was REMOVED in PHP 7.0.0.

说明

array sybase_fetch_row ( resource $result )

sybase_fetch_row() fetches one row of data from the result associated with the specified result identifier.

Subsequent call to sybase_fetch_row() would return the next row in the result set, or FALSE if there are no more rows.

参数

result

返回值

Returns an array that corresponds to the fetched row, or FALSE if there are no more rows. Each result column is stored in an array offset, starting at offset 0.

Data types
PHP | Sybase
string | VARCHAR, TEXT, CHAR, IMAGE, BINARY, VARBINARY, DATETIME
int | NUMERIC (w/o precision), DECIMAL (w/o precision), INT, BIT, TINYINT, SMALLINT
float | NUMERIC (w/ precision), DECIMAL (w/ precision), REAL, FLOAT, MONEY
NULL | NULL

参见

  • sybase_fetch_array() - Fetch row as array
  • sybase_fetch_assoc() - Fetch a result row as an associative array
  • sybase_fetch_object() - Fetch a row as an object
  • sybase_data_seek() - Moves internal row pointer
  • sybase_result() - Get result data

sybase_fetch_object
sybase_field_seek
Sybase 函数


Sets field offset

sybase_fetch_row
sybase_free_result
Sybase 函数
PHP Manual

sybase_field_seek

(PHP 4, PHP 5)

sybase_field_seek — Sets field offset

Warning

This function was REMOVED in PHP 7.0.0.

说明

bool sybase_field_seek ( resource $result , int $field_offset )

Seeks to the specified field offset. If the next call to sybase_fetch_field() won't include a field offset, this field would be returned.

参数

result

field_offset

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • sybase_fetch_field() - Get field information from a result

sybase_fetch_row
sybase_free_result
Sybase 函数


Frees result memory

sybase_field_seek
sybase_get_last_message
Sybase 函数
PHP Manual

sybase_free_result

(PHP 4, PHP 5)

sybase_free_result — Frees result memory

Warning

This function was REMOVED in PHP 7.0.0.

说明

bool sybase_free_result ( resource $result )

sybase_free_result() only needs to be called if you are worried about using too much memory while your script is running. All result memory will automatically be freed when the script ends. You may call sybase_free_result() with the result identifier as an argument and the associated result memory will be freed.

参数

result

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

sybase_field_seek
sybase_get_last_message
Sybase 函数


Returns the last message from the server

sybase_free_result
sybase_min_client_severity
Sybase 函数
PHP Manual

sybase_get_last_message

(PHP 4, PHP 5)

sybase_get_last_message — Returns the last message from the server

Warning

This function was REMOVED in PHP 7.0.0.

说明

string sybase_get_last_message ( void )

sybase_get_last_message() returns the last message reported by the server.

返回值

Returns the message as a string.

参见

  • sybase_min_message_severity() - Sets minimum message severity

sybase_free_result
sybase_min_client_severity
Sybase 函数


Sets minimum client severity

sybase_get_last_message
sybase_min_error_severity
Sybase 函数
PHP Manual

sybase_min_client_severity

(PHP 4, PHP 5)

sybase_min_client_severity — Sets minimum client severity

Warning

This function was REMOVED in PHP 7.0.0.

说明

void sybase_min_client_severity ( int $severity )

sybase_min_client_severity() sets the minimum client severity level.

参数

severity

返回值

没有返回值。

注释

Note: 此函数仅适用于对 Sybase 使用 CT 库接口，而不适用于 DB 库。

参见

  • sybase_min_server_severity() - Sets minimum server severity

sybase_get_last_message
sybase_min_error_severity
Sybase 函数


Sets minimum error severity

sybase_min_client_severity
sybase_min_message_severity
Sybase 函数
PHP Manual

sybase_min_error_severity

(PHP 4, PHP 5)

sybase_min_error_severity — Sets minimum error severity

Warning

This function was REMOVED in PHP 7.0.0.

说明

void sybase_min_error_severity ( int $severity )

sybase_min_error_severity() sets the minimum error severity level.

参数

severity

返回值

没有返回值。

注释

Note: 此函数仅适用于对 Sybase 使用 CT 库接口，而不适用于 DB 库。

参见

  • sybase_min_message_severity() - Sets minimum message severity

sybase_min_client_severity
sybase_min_message_severity
Sybase 函数


Sets minimum message severity

sybase_min_error_severity
sybase_min_server_severity
Sybase 函数
PHP Manual

sybase_min_message_severity

(PHP 4, PHP 5)

sybase_min_message_severity — Sets minimum message severity

Warning

This function was REMOVED in PHP 7.0.0.

说明

void sybase_min_message_severity ( int $severity )

sybase_min_message_severity() sets the minimum message severity level.

参数

severity

返回值

没有返回值。

注释

Note: 此函数仅适用于对 Sybase 使用 DB 库接口，而不适用于 CT 库。

参见

  • sybase_min_error_severity() - Sets minimum error severity

sybase_min_error_severity
sybase_min_server_severity
Sybase 函数


Sets minimum server severity

sybase_min_message_severity
sybase_num_fields
Sybase 函数
PHP Manual

sybase_min_server_severity

(PHP 4, PHP 5)

sybase_min_server_severity — Sets minimum server severity

Warning

This function was REMOVED in PHP 7.0.0.

说明

void sybase_min_server_severity ( int $severity )

sybase_min_server_severity() sets the minimum server severity level.

参数

severity

返回值

没有返回值。

注释

Note: 此函数仅适用于对 Sybase 使用 CT 库接口，而不适用于 DB 库。

参见

  • sybase_min_client_severity() - Sets minimum client severity

sybase_min_message_severity
sybase_num_fields
Sybase 函数


Gets the number of fields in a result set

sybase_min_server_severity
sybase_num_rows
Sybase 函数
PHP Manual

sybase_num_fields

(PHP 4, PHP 5)

sybase_num_fields — Gets the number of fields in a result set

Warning

This function was REMOVED in PHP 7.0.0.

说明

int sybase_num_fields ( resource $result )

sybase_num_fields() returns the number of fields in a result set.

参数

result

返回值

Returns the number of fields as an integer.

参见

  • sybase_query() - Sends a Sybase query
  • sybase_fetch_field() - Get field information from a result
  • sybase_num_rows() - Get number of rows in a result set

sybase_min_server_severity
sybase_num_rows
Sybase 函数


Get number of rows in a result set

sybase_num_fields
sybase_pconnect
Sybase 函数
PHP Manual

sybase_num_rows

(PHP 4, PHP 5)

sybase_num_rows — Get number of rows in a result set

Warning

This function was REMOVED in PHP 7.0.0.

说明

int sybase_num_rows ( resource $result )

sybase_num_rows() returns the number of rows in a result set.

参数

result

返回值

Returns the number of rows as an integer.

参见

  • sybase_num_fields() - Gets the number of fields in a result set
  • sybase_query() - Sends a Sybase query
  • sybase_fetch_row() - Get a result row as an enumerated array

sybase_num_fields
sybase_pconnect
Sybase 函数


Open persistent Sybase connection

sybase_num_rows
sybase_query
Sybase 函数
PHP Manual

sybase_pconnect

(PHP 4, PHP 5)

sybase_pconnect — Open persistent Sybase connection

Warning

This function was REMOVED in PHP 7.0.0.

说明

resource sybase_pconnect ([ string $servername [, string $username [, string $password [, string $charset [, string $appname ]]]]] )

sybase_pconnect() acts very much like sybase_connect() with two major differences.

First, when connecting, the function would first try to find a (persistent) link that's already open with the same host, username and password. If one is found, an identifier for it will be returned instead of opening a new connection.

Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (sybase_close() will not close links established by sybase_pconnect()).

This type of links is therefore called 'persistent'.

参数

servername

The servername argument has to be a valid servername that is defined in the 'interfaces' file.

username

Sybase user name

password

Password associated with username.

charset

Specifies the charset for the connection

appname

Specifies an appname for the Sybase connection. This allow you to make separate connections in the same script to the same database. This may come handy when you have started a transaction in your current connection, and you need to be able to do a separate query which cannot be performed inside this transaction.

返回值

Returns a positive Sybase persistent link identifier on success, or FALSE on error.

参见

  • sybase_connect() - Opens a Sybase server connection

sybase_num_rows
sybase_query
Sybase 函数


Sends a Sybase query

sybase_pconnect
sybase_result
Sybase 函数
PHP Manual

sybase_query

(PHP 4, PHP 5)

sybase_query — Sends a Sybase query

Warning

This function was REMOVED in PHP 7.0.0.

说明

mixed sybase_query ( string $query [, resource $link_identifier ] )

sybase_query() sends a query to the currently active database on the server that's associated with the specified link identifier.

参数

query

link_identifier

If the link identifier isn't specified, the last opened link is assumed. If no link is open, the function tries to establish a link as if sybase_connect() was called, and use it.

返回值

Returns a positive Sybase result identifier on success, FALSE on error, or TRUE if the query was successful but didn't return any columns.

参见

  • sybase_select_db() - Selects a Sybase database
  • sybase_connect() - Opens a Sybase server connection

sybase_pconnect
sybase_result
Sybase 函数


Get result data

sybase_query
sybase_select_db
Sybase 函数
PHP Manual

sybase_result

(PHP 4, PHP 5)

sybase_result — Get result data

Warning

This function was REMOVED in PHP 7.0.0.

说明

string sybase_result ( resource $result , int $row , mixed $field )

Returns the contents of the cell at the row and offset in the specified Sybase result set.

When working on large result sets, you should consider using one of the functions that fetch an entire row (specified below). As these functions return the contents of multiple cells in one function call, they're MUCH quicker than sybase_result(). Also, note that specifying a numeric offset for the field argument is much quicker than specifying a fieldname or tablename.fieldname argument.

Recommended high-performance alternatives:
sybase_fetch_row(),
sybase_fetch_array() and
sybase_fetch_object().

参数

result

row

field

The field argument can be the field's offset, or the field's name, or the field's table dot field's name (tablename.fieldname). If the column name has been aliased ('select foo as bar from...'), use the alias instead of the column name.

返回值

sybase_result() returns the contents of one cell from a Sybase result set.

sybase_query
sybase_select_db
Sybase 函数


Selects a Sybase database

sybase_result
sybase_set_message_handler
Sybase 函数
PHP Manual

sybase_select_db

(PHP 4, PHP 5)

sybase_select_db — Selects a Sybase database

Warning

This function was REMOVED in PHP 7.0.0.

说明

bool sybase_select_db ( string $database_name [, resource $link_identifier ] )

sybase_select_db() sets the current active database on the server that's associated with the specified link identifier.

Every subsequent call to sybase_query() will be made on the active database.

参数

database_name

link_identifier

If no link identifier is specified, the last opened link is assumed. If no link is open, the function will try to establish a link as if sybase_connect() was called, and use it.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • sybase_connect() - Opens a Sybase server connection
  • sybase_pconnect() - Open persistent Sybase connection
  • sybase_query() - Sends a Sybase query

sybase_result
sybase_set_message_handler
Sybase 函数


Sets the handler called when a server message is raised

sybase_select_db
sybase_unbuffered_query
Sybase 函数
PHP Manual

sybase_set_message_handler

(PHP 4 >= 4.3.0, PHP 5)

sybase_set_message_handler — Sets the handler called when a server message is raised

Warning

This function was REMOVED in PHP 7.0.0.

说明

bool sybase_set_message_handler ( callable $handler [, resource $link_identifier ] )

sybase_set_message_handler() sets a user function to handle messages generated by the server. You may specify the name of a global function, or use an array to specify an object reference and a method name.

参数

handler

The handler expects five arguments in the following order: message number, severity, state, line number and description. The first four are integers. The last is a string. If the function returns FALSE, PHP generates an ordinary error message.

link_identifier

If the link identifier isn't specified, the last opened link is assumed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 sybase_set_message_handler() callback function

<?php
    function msg_handler($msgnumber, $severity, $state, $line, $text)
    {
        var_dump($msgnumber, $severity, $state, $line, $text);
    }

    sybase_set_message_handler('msg_handler');
?>

Example #2 sybase_set_message_handler() callback to a class

<?php
    class Sybase {
        function handler($msgnumber, $severity, $state, $line, $text)
        {
            var_dump($msgnumber, $severity, $state, $line, $text);
        }
    }

    $sybase= new Sybase();
    sybase_set_message_handler(array($sybase, 'handler'));
?>

Example #3 sybase_set_message_handler() unhandled messages

<?php
    // Return FALSE from this function to indicate you can't handle
    // this. The error is printed out as a warning, the way you're used
    // to it if there is no handler installed.
    function msg_handler($msgnumber, $severity, $state, $line, $text)
    {
        if (257 == $msgnumber) {
            return false;
        }
        var_dump($msgnumber, $severity, $state, $line, $text);
    }

    sybase_set_message_handler('msg_handler');
?>

注释

Note: 此函数仅适用于对 Sybase 使用 CT 库接口，而不适用于 DB 库。

sybase_select_db
sybase_unbuffered_query
Sybase 函数


Send a Sybase query and do not block

sybase_set_message_handler
tokyo_tyrant
Sybase 函数
PHP Manual

sybase_unbuffered_query

(PHP 4 >= 4.3.0, PHP 5)

sybase_unbuffered_query — Send a Sybase query and do not block

Warning

This function was REMOVED in PHP 7.0.0.

说明

resource sybase_unbuffered_query ( string $query , resource $link_identifier [, bool $store_result ] )

sybase_unbuffered_query() sends a query to the currently active database on the server that's associated with the specified link identifier. If the link identifier isn't specified, the last opened link is assumed. If no link is open, the function tries to establish a link as if sybase_connect() was called, and use it.

Unlike sybase_query(), sybase_unbuffered_query() reads only the first row of the result set. sybase_fetch_array() and similar function read more rows as needed. sybase_data_seek() reads up to the target row. The behavior may produce better performance for large result sets.

sybase_num_rows() will only return the correct number of rows if all result sets have been read. To Sybase, the number of rows is not known and is therefore computed by the client implementation.

Note:

If you don't read all of the resultsets prior to executing the next query, PHP will raise a warning and cancel all of the pending results. To get rid of this, use sybase_free_result() which will cancel pending results of an unbuffered query.

参数

query

link_identifier

store_result

The optional store_result can be FALSE to indicate the resultsets shouldn't be fetched into memory, thus minimizing memory usage which is particularly interesting with very large resultsets.

返回值

Returns a positive Sybase result identifier on success, or FALSE on error.

范例

Example #1 sybase_unbuffered_query() example

<?php

$dbh = sybase_connect('SYBASE', '', '');
$q = sybase_unbuffered_query('select firstname, lastname from huge_table', $dbh, false);
sybase_data_seek($q, 10000);
$i = 0;

while ($row = sybase_fetch_row($q)) {
    echo $row[0], ' ', $row[1], '<br />';
    if ($i++ > 40000) {
        break;
    }
}

sybase_free_result($q);
sybase_close($dbh);

?>

注释

Note: 此函数仅适用于对 Sybase 使用 CT 库接口，而不适用于 DB 库。

参见

  • sybase_query() - Sends a Sybase query

sybase_set_message_handler
tokyo_tyrant
Sybase 函数


tokyo_tyrant

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • TokyoTyrant — The TokyoTyrant class
    • TokyoTyrant::add — Adds to a numeric key
    • TokyoTyrant::connect — Connect to a database
    • TokyoTyrant::connectUri — Connects to a database
    • TokyoTyrant::__construct — Construct a new TokyoTyrant object
    • TokyoTyrant::copy — Copies the database
    • TokyoTyrant::ext — Execute a remote script
    • TokyoTyrant::fwmKeys — Returns the forward matching keys
    • TokyoTyrant::get — The get purpose
    • TokyoTyrant::getIterator — Get an iterator
    • TokyoTyrant::num — Number of records in the database
    • TokyoTyrant::out — Removes records
    • TokyoTyrant::put — Puts values
    • TokyoTyrant::putCat — Concatenates to a record
    • TokyoTyrant::putKeep — Puts a record
    • TokyoTyrant::putNr — Puts value
    • TokyoTyrant::putShl — Concatenates to a record
    • TokyoTyrant::restore — Restore the database
    • TokyoTyrant::setMaster — Set the replication master
    • TokyoTyrant::size — Returns the size of the value
    • TokyoTyrant::stat — Get statistics
    • TokyoTyrant::sync — Synchronize the database
    • TokyoTyrant::tune — Tunes connection values
    • TokyoTyrant::vanish — Empties the database
  • TokyoTyrantTable — The TokyoTyrantTable class
    • TokyoTyrantTable::add — Adds a record
    • TokyoTyrantTable::genUid — Generate unique id
    • TokyoTyrantTable::get — Get a row
    • TokyoTyrantTable::getIterator — Get an iterator
    • TokyoTyrantTable::getQuery — Get a query object
    • TokyoTyrantTable::out — Remove records
    • TokyoTyrantTable::put — Store a row
    • TokyoTyrantTable::putCat — Concatenates to a row
    • TokyoTyrantTable::putKeep — Put a new record
    • TokyoTyrantTable::putNr — Puts value
    • TokyoTyrantTable::putShl — Concatenates to a record
    • TokyoTyrantTable::setIndex — Sets index
  • TokyoTyrantQuery — The TokyoTyrantQuery class
    • TokyoTyrantQuery::addCond — Adds a condition to the query
    • TokyoTyrantQuery::__construct — Construct a new query
    • TokyoTyrantQuery::count — Counts records
    • TokyoTyrantQuery::current — Returns the current element
    • TokyoTyrantQuery::hint — Get the hint string of the query
    • TokyoTyrantQuery::key — Returns the current key
    • TokyoTyrantQuery::metaSearch — Retrieve records with multiple queries
    • TokyoTyrantQuery::next — Moves the iterator to next entry
    • TokyoTyrantQuery::out — Removes records based on query
    • TokyoTyrantQuery::rewind — Rewinds the iterator
    • TokyoTyrantQuery::search — Searches records
    • TokyoTyrantQuery::setLimit — Limit results
    • TokyoTyrantQuery::setOrder — Orders results
    • TokyoTyrantQuery::valid — Checks the validity of current item
  • TokyoTyrantIterator — The TokyoTyrantIterator class
    • TokyoTyrantIterator::__construct — Construct an iterator
    • TokyoTyrantIterator::current — Get the current value
    • TokyoTyrantIterator::key — Returns the current key
    • TokyoTyrantIterator::next — Move to next key
    • TokyoTyrantIterator::rewind — Rewinds the iterator
    • TokyoTyrantIterator::valid — Rewinds the iterator
  • TokyoTyrantException — The TokyoTyrantException class
sybase_unbuffered_query
简介
针对各数据库系统对应的扩展


简介

tokyo_tyrant extension provides a wrapper for Tokyo Tyrant client libraries. The extension contains the normal key-value API and the table API.

"Tokyo Tyrant is a package of network interface to the DBM called Tokyo Cabinet. Though the DBM has high performance, you might bother in case that multiple processes share the same database, or remote processes access the database. Thus, Tokyo Tyrant is provided for concurrent and remote connections to Tokyo Cabinet. It is composed of the server process managing a database and its access library for client applications." --Tokyo Tyrant documentation

Tokyo Tyrant is written by Mikio Hirabayashi and is licensed under GNU Lesser General Public License.

tokyo_tyrant
安装／配置
tokyo_tyrant


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
tokyo_tyrant


需求

Before using this extension Tokyo Cabinet and Tokyo Tyrant must be installed.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/tokyo_tyrant

Configure options

  • --with-tokyo-tyrant[=DIR] DIR is the prefix to the Tokyo Tyrant installation
  • --with-tokyo-cabinet-dir[=DIR] DIR is the prefix to the Tokyo Cabinet installation
  • --disable-tokyo-tyrant-session Disable Tokyo Tyrant session handler support

Enabling the extension

The extension can be enabled by adding extension=tokyo_tyrant.so to the INI-configuration

Running Tokyo Tyrant for the session handler

ttserver -port 2000 -ext /path/to/expire.lua -extpc expire 30.0 '/tmp/sessions.tct#idx=ts:dec'

Note: expire.lua is included in the tokyo_tyrant extension source distribution

Configuring session handler

  • tokyo_tyrant.session_salt="randomlongstring"
  • session.save_handler=tokyo_tyrant
  • session.save_path="tcp://hostname1:2000,tcp://hostname2:2000"

Note: It is important to make sure that tokyo_tyrant.session_salt matches on all servers.

How it works?

The session handler creates a session id like the following: 8b0e27a823fa4a6cf7246945b82c1d51-a5eadbbed1f2075952900628456bfd6830541629-0-5460

The parts from left to right:

  • Session id - Generated session id
  • Checksum - Checksum of session salt, session id, node id and primary key
  • Node id - The id of the node where the session maps to
  • Primary key - The primary key of the row where the session is stored

The checksum contains SHA1 sum of the node id, primary key, session id and the salt which is known only on the server side. This allows quick mapping of session id to node and primary key since there is no need to do an additional search. During session id regeneration only the parts 1 and 2 change but the mapping to the node and primary key stays constant.

In case some of the nodes fail tokyo_tyrant.allow_failover, tokyo_tyrant.fail_threshold and tokyo_tyrant.health_check_divisor INI-settings control the behavior during failover. If failover is allowed the session handler will map the session to a healthy node and creates a new empty session.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

tokyo_tyrant 配置选项
名字 | 默认 | 可修改范围 | 更新日志
tokyo_tyrant.default_timeout | 2.0 | PHP_INI_ALL |
tokyo_tyrant.session_salt | NULL | PHP_INI_ALL |
tokyo_tyrant.key_prefix | NULL | PHP_INI_ALL |
tokyo_tyrant.allow_failover | 1 | PHP_INI_ALL |
tokyo_tyrant.fail_threshold | 5 | PHP_INI_ALL |
tokyo_tyrant.health_check_divisor | 1000 | PHP_INI_ALL |
tokyo_tyrant.php_expiration | 0 | PHP_INI_ALL |

这是配置指令的简短说明。

tokyo_tyrant.default_timeout integer

Default timeout when connecting to databases

tokyo_tyrant.session_salt string

The secret that is used to salt session id

tokyo_tyrant.key_prefix string

Prefix all keys with this string. The prefix is transparent to the developer but helps making sure that keys won't collide if multiple applications are using the same database.

tokyo_tyrant.allow_failover integer

Whether to allow session failover in case a server dies.

tokyo_tyrant.fail_threshold integer

How many read/write or connection failures is allowed before server is marked as failed.

tokyo_tyrant.health_check_divisor integer

Defines the divisor for the health check probability. If there are failed servers and the probability matches, the servers are health checked and in case the server seems healthy, it will be added back to the pool.

tokyo_tyrant.php_expiration integer

Whether to use built in session expiration mechanism or delegate the expiration to a lua-script on the server-side.

安装
资源类型
安装／配置


预定义常量

TokyoTyrant constants

资源类型
范例
tokyo_tyrant


范例

Basic usage

Example #1 Putting and getting a key-value pair

<?php
$tt = new TokyoTyrant("localhost");
$tt->put("key", "value");
echo $tt->get("key");
?>

以上例程会输出：

value
预定义常量
TokyoTyrant
tokyo_tyrant


The TokyoTyrant class

(PECL tokyo_tyrant >= 0.1.0)

简介

The main Tokyo Tyrant class

类摘要

TokyoTyrant {
/* 常量 */
const integer RDBDEF_PORT = 1978 ;
const integer RDBQC_STREQ = 0 ;
const integer RDBQC_STRINC = 1 ;
const integer RDBQC_STRBW = 2 ;
const integer RDBQC_STREW = 3 ;
const integer RDBQC_STRAND = 4 ;
const integer RDBQC_STROR = 5 ;
const integer RDBQC_STROREQ = 6 ;
const integer RDBQC_STRRX = 7 ;
const integer RDBQC_NUMEQ = 8 ;
const integer RDBQC_NUMGT = 9 ;
const integer RDBQC_NUMGE = 10 ;
const integer RDBQC_NUMLT = 11 ;
const integer RDBQC_NUMLE = 12 ;
const integer RDBQC_NUMBT = 13 ;
const integer RDBQC_NUMOREQ = 14 ;
const integer RDBQC_NEGATE = 16777216 ;
const integer RDBQC_NOIDX = 33554432 ;
const integer RDBQO_STRASC = 0 ;
const integer RDBQO_STRDESC = 1 ;
const integer RDBQO_NUMASC = 2 ;
const integer RDBQO_NUMDESC = 3 ;
const integer RDBIT_LEXICAL = 0 ;
const integer RDBIT_DECIMAL = 1 ;
const integer RDBIT_TOKEN = 2 ;
const integer RDBIT_QGRAM = 3 ;
const integer RDBIT_OPT = 9998 ;
const integer RDBIT_VOID = 9999 ;
const integer RDBIT_KEEP = 16777216 ;
const integer RDBQCFTS_PH = 15 ;
const integer RDBQCFTS_AND = 16 ;
const integer RDBQCFTS_OR = 17 ;
const integer RDBQCFTS_EX = 18 ;
const integer RDBXO_LCKREC = 1 ;
const integer RDBXOLCK_GLB = 2 ;
const integer RDBREC_INT = 1 ;
const integer RDBREC_DBL = 2 ;
const integer RDBMS_UNION = 0 ;
const integer RDBMS_ISECT = 1 ;
const integer RDBMS_DIFF = 2 ;
const integer RDBT_RECON = 1 ;
/* 方法 */
public number add ( string $key , number $increment [, int $type = 0 ] )
public TokyoTyrant connect ( string $host [, int $port = TokyoTyrant::RDBDEF_PORT [, array $options ]] )
public TokyoTyrant connectUri ( string $uri )
public __construct ([ string $host [, int $port = TokyoTyrant::RDBDEF_PORT [, array $options ]]] )
public TokyoTyrant copy ( string $path )
public string ext ( string $name , int $options , string $key , string $value )
public array fwmKeys ( string $prefix , int $max_recs )
public mixed get ( mixed $keys )
public TokyoTyrantIterator getIterator ( void )
public int num ( void )
public TokyoTyrant out ( mixed $keys )
public TokyoTyrant put ( mixed $keys [, string $value = NULL ] )
public TokyoTyrant putCat ( mixed $keys [, string $value ] )
public TokyoTyrant putKeep ( mixed $keys [, string $value ] )
public TokyoTyrant putNr ( mixed $keys [, string $value = NULL ] )
public mixed putShl ( string $key , string $value , int $width )
public mixed restore ( string $log_dir , int $timestamp [, bool $check_consistency = true ] )
public mixed setMaster ( string $host , int $port , int $timestamp [, bool $check_consistency = true ] )
public int size ( string $key )
public array stat ( void )
public mixed sync ( void )
public TokyoTyrant tune ( float $timeout [, int $options = TokyoTyrant::RDBT_RECON ] )
public mixed vanish ( void )
}

预定义常量

TokyoTyrant Constants

TokyoTyrant::RDBDEF_PORT

The default port of the Tokyo Tyrant database

TokyoTyrant::RDBQC_STREQ

string is equal to

TokyoTyrant::RDBQC_STRINC

string is included in

TokyoTyrant::RDBQC_STRBW

string begins with

TokyoTyrant::RDBQC_STREW

string ends with

TokyoTyrant::RDBQC_STRAND

string includes all tokens in

TokyoTyrant::RDBQC_STROR

string includes at least one token in

TokyoTyrant::RDBQC_STROREQ

string is equal to at least one token in

TokyoTyrant::RDBQC_STRRX

string matches regular expressions of

TokyoTyrant::RDBQC_NUMEQ

number is equal to

TokyoTyrant::RDBQC_NUMGT

number is greater than

TokyoTyrant::RDBQC_NUMGE

number is greater than or equal to

TokyoTyrant::RDBQC_NUMLT

number is less than

TokyoTyrant::RDBQC_NUMLE

number is less than or equal to

TokyoTyrant::RDBQC_NUMBT

number is between two tokens of

TokyoTyrant::RDBQC_NUMOREQ

number is equal to at least one token in

TokyoTyrant::RDBQC_NEGATE

negation flag

TokyoTyrant::RDBQC_NOIDX

no index flag

TokyoTyrant::RDBQO_STRASC

string ascending

TokyoTyrant::RDBQO_STRDESC

string descending

TokyoTyrant::RDBQO_NUMASC

number ascending

TokyoTyrant::RDBQO_NUMDESC

number descending

TokyoTyrant::RDBIT_LEXICAL

lexical string

TokyoTyrant::RDBIT_DECIMAL

decimal string

TokyoTyrant::RDBIT_TOKEN

token inverted index (Tokyo Tyrant >= 1.1.29)

TokyoTyrant::RDBIT_QGRAM

QGRAM inverted index (Tokyo Tyrant >= 1.1.29)

TokyoTyrant::RDBIT_OPT

optimize

TokyoTyrant::RDBIT_VOID

void

TokyoTyrant::RDBIT_KEEP

keep existing index

TokyoTyrant::RDBQCFTS_PH

full-text search with the phrase of (Tokyo Tyrant >= 1.1.29)

TokyoTyrant::RDBQCFTS_AND

full-text search with all tokens in (Tokyo Tyrant >= 1.1.29)

TokyoTyrant::RDBQCFTS_OR

full-text search with at least one token in (Tokyo Tyrant >= 1.1.29)

TokyoTyrant::RDBQCFTS_EX

full-text search with the compound expression of (Tokyo Tyrant >= 1.1.29)

TokyoTyrant::RDBQCFTS_AND

Metasearch union between records (Tokyo Tyrant >= 1.1.33)

TokyoTyrant::RDBQCFTS_OR

Metasearch intersection between records (Tokyo Tyrant >= 1.1.33)

TokyoTyrant::RDBQCFTS_EX

Metasearch difference between records (Tokyo Tyrant >= 1.1.33)

TokyoTyrant::RDBT_RECON

Whether to reconnect on connection failure. It is recommended to have this parameter on for persistent connections

TokyoTyrant::RDBXOLCK_REC

record locking

TokyoTyrant::RDBXOLCK_GLB

global locking

TokyoTyrant::RDBREC_INT

record type int

TokyoTyrant::RDBREC_DBL

record type float (double)

TokyoTyrant::TTE_SUCCESS

success

TokyoTyrant::TTE_INVALID

invalid operation

TokyoTyrant::TTE_NOHOST

host not found

TokyoTyrant::TTE_REFUSED

connection refused

TokyoTyrant::TTE_SEND

send error

TokyoTyrant::TTE_RECV

recv error

TokyoTyrant::TTE_KEEP

record exist

TokyoTyrant::TTE_NOREC

no record found

TokyoTyrant::TTE_MISC

miscellaneous error

Table of Contents

  • TokyoTyrant::add — Adds to a numeric key
  • TokyoTyrant::connect — Connect to a database
  • TokyoTyrant::connectUri — Connects to a database
  • TokyoTyrant::__construct — Construct a new TokyoTyrant object
  • TokyoTyrant::copy — Copies the database
  • TokyoTyrant::ext — Execute a remote script
  • TokyoTyrant::fwmKeys — Returns the forward matching keys
  • TokyoTyrant::get — The get purpose
  • TokyoTyrant::getIterator — Get an iterator
  • TokyoTyrant::num — Number of records in the database
  • TokyoTyrant::out — Removes records
  • TokyoTyrant::put — Puts values
  • TokyoTyrant::putCat — Concatenates to a record
  • TokyoTyrant::putKeep — Puts a record
  • TokyoTyrant::putNr — Puts value
  • TokyoTyrant::putShl — Concatenates to a record
  • TokyoTyrant::restore — Restore the database
  • TokyoTyrant::setMaster — Set the replication master
  • TokyoTyrant::size — Returns the size of the value
  • TokyoTyrant::stat — Get statistics
  • TokyoTyrant::sync — Synchronize the database
  • TokyoTyrant::tune — Tunes connection values
  • TokyoTyrant::vanish — Empties the database
范例
TokyoTyrant::add
tokyo_tyrant


Adds to a numeric key

TokyoTyrant
TokyoTyrant::connect
TokyoTyrant
PHP Manual

TokyoTyrant::add

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrant::add — Adds to a numeric key

说明

public number TokyoTyrant::add ( string $key , number $increment [, int $type = 0 ] )

Adds to an int or double value. This increments the value by the given amount and returns the new value. If the key does not exist a new key is created with initial value of the increment parameter.

参数

key

The string key

increment

The amount to increment

type

TokyoTyrant::RDBREC_INT or TokyoTyrant::RDBREC_DBL constant. If this parameter is omitted the type is guessed from the increment parameters type.

返回值

Returns the new value on success

范例

Example #1 TokyoTyrant::add() example

<?php
$tt = new TokyoTyrant("localhost", TokyoTyrant::RDBDEF_PORT);
/* Adds integer 3 to key and creates a new key */
$tt->add("test", 3);

/* String value is converted to double */
echo $tt->add("test", "3.5", TokyoTyrant::RDBREC_DBL);
?>

以上例程的输出类似于：

6.5

参见

  • TokyoTyrant::put() - Puts values
  • TokyoTyrant::putcat() - Concatenates to a record
  • TokyoTyrant::putkeep() - Puts a record

TokyoTyrant
TokyoTyrant::connect
TokyoTyrant


Connect to a database

TokyoTyrant::add
TokyoTyrant::connectUri
TokyoTyrant
PHP Manual

TokyoTyrant::connect

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrant::connect — Connect to a database

说明

public TokyoTyrant TokyoTyrant::connect ( string $host [, int $port = TokyoTyrant::RDBDEF_PORT [, array $options ]] )

Connects to a remote database

参数

host

The hostname

port

The port. Default: 1978

options

Connection options: timeout (default: 5.0), reconnect (default: TRUE) and persistent (default: TRUE)

返回值

This method returns the current object and throws TokyoTyrantException on failure.

范例

Example #1 TokyoTyrant::connect() example

<?php
$tt = new TokyoTyrant();
$tt->connect("localhost", TokyoTyrant::RDBDEF_PORT)->put("test", "value");
?>

参见

  • TokyoTyrant::connectUri() - Connects to a database

TokyoTyrant::add
TokyoTyrant::connectUri
TokyoTyrant


Connects to a database

TokyoTyrant::connect
TokyoTyrant::__construct
TokyoTyrant
PHP Manual

TokyoTyrant::connectUri

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrant::connectUri — Connects to a database

说明

public TokyoTyrant TokyoTyrant::connectUri ( string $uri )

Connects to a database using an uri

参数

uri

An URI to the database. For example tcp://localhost:1979/

返回值

This method returns the current object and throws TokyoTyrantException on failure.

范例

Example #1 TokyoTyrant::connectUri() example

<?php
$tt = new TokyoTyrant();
$tt->connectUri("tcp://localhost:1978/")->put("test", "hi");
?>

参见

  • TokyoTyrant::connect() - Connect to a database

TokyoTyrant::connect
TokyoTyrant::__construct
TokyoTyrant


Construct a new TokyoTyrant object

TokyoTyrant::connectUri
TokyoTyrant::copy
TokyoTyrant
PHP Manual

TokyoTyrant::__construct

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrant::__construct — Construct a new TokyoTyrant object

说明

public TokyoTyrant::__construct ([ string $host [, int $port = TokyoTyrant::RDBDEF_PORT [, array $options ]]] )

Constructs a new TokyoTyrant object and optionally connects to the database

参数

host

The hostname. Default: NULL

port

port number. Default: 1978

options

Connection options: timeout (default: 5.0), reconnect (default: TRUE) and persistent (default: TRUE)

返回值

Throws TokyoTyrantException if connection to database fails

参见

  • TokyoTyrant::connect() - Connect to a database
  • TokyoTyrant::connectUri() - Connects to a database

TokyoTyrant::connectUri
TokyoTyrant::copy
TokyoTyrant


Copies the database

TokyoTyrant::__construct
TokyoTyrant::ext
TokyoTyrant
PHP Manual

TokyoTyrant::copy

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrant::copy — Copies the database

说明

public TokyoTyrant TokyoTyrant::copy ( string $path )

Makes a copy of the current database

参数

path

Path to where to copy the database. The user running the remote database must have a write access to the directory.

返回值

This method returns the current object and throws TokyoTyrantException on failure.

范例

Example #1 TokyoTyrant::copy() example

<?php
$tt = new TokyoTyrant("localhost", 1978);
$tt->copy("/tmp/foobar.tct");
?>

参见

  • TokyoTyrant::restore() - Restore the database

TokyoTyrant::__construct
TokyoTyrant::ext
TokyoTyrant


Execute a remote script

TokyoTyrant::copy
TokyoTyrant::fwmKeys
TokyoTyrant
PHP Manual

TokyoTyrant::ext

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrant::ext — Execute a remote script

说明

public string TokyoTyrant::ext ( string $name , int $options , string $key , string $value )

Executes a remote script extension.

参数

name

Name of the function to execute

options

Either TokyoTyrant::RDBXO_LCKREC for record locking and TokyoTyrant::RDBXO_LCKGLB for global locking.

key

The key to pass to the function

value

The value to pass to the function

返回值

Returns the result of the script function

范例

Example #1 TokyoTyrant::ext() example

<?php
$tt = new TokyoTyrant("localhost", 1978);
echo $tt->ext("somefunc", TokyoTyrant::RDBXO_LCKREC, "some_key", "some_value");
?>

TokyoTyrant::copy
TokyoTyrant::fwmKeys
TokyoTyrant


Returns the forward matching keys

TokyoTyrant::ext
TokyoTyrant::get
TokyoTyrant
PHP Manual

TokyoTyrant::fwmKeys

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrant::fwmKeys — Returns the forward matching keys

说明

public array TokyoTyrant::fwmKeys ( string $prefix , int $max_recs )

Returns the forward matching keys from the database

参数

prefix

Prefix of the keys

max_recs

Maximum records to return

返回值

Returns an array of matching keys. The values are not returned

范例

Example #1 TokyoTyrant::fwmKeys() example

<?php

$tt = new TokyoTyrant("localhost");

/* Create 20 macthing keys */
for ($i = 0; $i < 20; $i++) {
    $tt->put("key_" . $i, "value_" . $i);
}

/* Create 20 non-macthing keys */
for ($i = 0; $i < 20; $i++) {
    $tt->put("something_" . $i, "data_" . $i);
}

/* Get five matching keys */
var_dump($tt->fwmKeys("key_", 5));
?>

以上例程的输出类似于：

array(5) {
  [0]=>
  string(5) "key_5"
  [1]=>
  string(6) "key_14"
  [2]=>
  string(5) "key_6"
  [3]=>
  string(6) "key_15"
  [4]=>
  string(5) "key_7"
}

TokyoTyrant::ext
TokyoTyrant::get
TokyoTyrant


The get purpose

TokyoTyrant::fwmKeys
TokyoTyrant::getIterator
TokyoTyrant
PHP Manual

TokyoTyrant::get

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrant::get — The get purpose

说明

public mixed TokyoTyrant::get ( mixed $keys )

This method is used to return a value or multiple values. This method accepts a string or an array as a value.

参数

keys

A string key or an array of string keys

返回值

Returns a string or an array based on the given parameters. Throws a TokyoTyrantException on error. If string is passed null is returned if the key is not found. In case an array is given as an parameter only existing keys will be returned. It is not an error to pass a key that does not exist.

范例

Example #1 TokyoTyrant::get() example

<?php
$tt = new TokyoTyrant("localhost", 1978);
$tt->put("key1", "value1");
$tt->put("key2", "value2");
var_dump($tt->get(array("key1", "key2")));
var_dump($tt->get("key1"));
?>

以上例程会输出：

array(2) {
  ["key1"]=>
  string(6) "value1"
  ["key2"]=>
  string(6) "value2"
}
string(6) "value1"

参见

  • TokyoTyrant::put() - Puts values

TokyoTyrant::fwmKeys
TokyoTyrant::getIterator
TokyoTyrant


Get an iterator

TokyoTyrant::get
TokyoTyrant::num
TokyoTyrant
PHP Manual

TokyoTyrant::getIterator

(No version information available, might only be in Git)

TokyoTyrant::getIterator — Get an iterator

说明

public TokyoTyrantIterator TokyoTyrant::getIterator ( void )

Gets an iterator for iterating all keys / values in the database.

参数

此函数没有参数。

返回值

This method returns TokyoTyrantIterator object and throws TokyoTyrantException on failure.

范例

Example #1 TokyoTyrant::getIterator() example

<?php
$tt = new TokyoTyrant("localhost");
$it = $tt->getIterator();

foreach ($it as $k => $v) {

}
?>

参见

  • TokyoTyrantTable::getQuery() - Get a query object
  • TokyoTyrantTable::getIterator() - Get an iterator

TokyoTyrant::get
TokyoTyrant::num
TokyoTyrant


Number of records in the database

TokyoTyrant::getIterator
TokyoTyrant::out
TokyoTyrant
PHP Manual

TokyoTyrant::num

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrant::num — Number of records in the database

说明

public int TokyoTyrant::num ( void )

Returns the number of records in the database

参数

此函数没有参数。

返回值

Returns number of records in the database

范例

Example #1 TokyoTyrant::num() example

<?php
/* Connect to a database on default port */
$tt = new TokyoTyrant("localhost");

/* Echo the number of records */
echo $tt->num();
?>

以上例程的输出类似于：

1234

参见

  • TokyoTyrant::stat() - Get statistics

TokyoTyrant::getIterator
TokyoTyrant::out
TokyoTyrant


Removes records

TokyoTyrant::num
TokyoTyrant::put
TokyoTyrant
PHP Manual

TokyoTyrant::out

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrant::out — Removes records

说明

public TokyoTyrant TokyoTyrant::out ( mixed $keys )

Removes a record or multiple records. This method accepts a string for a single key or an array of keys for multiple records.

参数

keys

A string key or an array of string keys

返回值

This method returns the current object and throws TokyoTyrantException on failure.

范例

Example #1 TokyoTyrant::out() example

<?php
/* Connect to a database on default port */
$tt = new TokyoTyrant("localhost");

$tt->put("test1", "value1");
$tt->put("test2", "value2");

$tt->out(array("test1", "test2"));
?>

参见

  • TokyoTyrant::put() - Puts values

TokyoTyrant::num
TokyoTyrant::put
TokyoTyrant


Puts values

TokyoTyrant::out
TokyoTyrant::putCat
TokyoTyrant
PHP Manual

TokyoTyrant::put

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrant::put — Puts values

说明

public TokyoTyrant TokyoTyrant::put ( mixed $keys [, string $value = NULL ] )

Puts a key-value pair into the database or multiple key-value pairs. If keys is string then the second parameter value defines the value. The second parameter is mandatory if keys is a string. If the key exists the value will be replaced with new value.

参数

keys

A string key or an array of key-value pairs

value

The value in case a string key is used

返回值

This method returns a reference to the current object and throws TokyoTyrantException on failure.

范例

Example #1 TokyoTyrant::put() example

<?php
/* Connect to a database on default port */
$tt = new TokyoTyrant("localhost");

/* Put single key-value pair */
$tt->put("key", "value");

/* Put key-value pairs, new value overwrites the old */
$tt->put(array("key1" => "value1", "key" => "value2"));

/* Get back one key */
echo $tt->get("key");
?>

以上例程会输出：

value2

参见

  • TokyoTyrant::putKeep() - Puts a record
  • TokyoTyrant::putCat() - Concatenates to a record

TokyoTyrant::out
TokyoTyrant::putCat
TokyoTyrant


Concatenates to a record

TokyoTyrant::put
TokyoTyrant::putKeep
TokyoTyrant
PHP Manual

TokyoTyrant::putCat

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrant::putCat — Concatenates to a record

说明

public TokyoTyrant TokyoTyrant::putCat ( mixed $keys [, string $value ] )

Appends a value into existing key or multiple values if keys is an array. The second parameter is mandatory if keys is a string. If the record does not exist a new record is created.

参数

keys

A string key or an array of key-value pairs

value

The value in case a string key is used

返回值

This method returns a reference to the current object and throws TokyoTyrantException on failure.

范例

Example #1 TokyoTyrant::putCat() example

<?php
/* Connect to a database on default port */
$tt = new TokyoTyrant("localhost");

/* Create a new key */
$tt->put("key", "value");

/* Concatenate single key-value pair */
$tt->putCat("key", " has more data");

/* Echo the key */
echo $tt->get("key");
?>

以上例程会输出：

value has more data

参见

  • TokyoTyrant::put() - Puts values
  • TokyoTyrant::putKeep() - Puts a record

TokyoTyrant::put
TokyoTyrant::putKeep
TokyoTyrant


Puts a record

TokyoTyrant::putCat
TokyoTyrant::putNr
TokyoTyrant
PHP Manual

TokyoTyrant::putKeep

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrant::putKeep — Puts a record

说明

public TokyoTyrant TokyoTyrant::putKeep ( mixed $keys [, string $value ] )

Puts a key-value pair into the database or multiple key-value pairs. If keys is string then the second parameter value defines the value. The second parameter is mandatory if keys is a string. If the key already exists this method throws an exception indicating that the records exists.

参数

keys

A string key or an array of key-value pairs

value

The string value

返回值

This method returns a reference to the current object and throws TokyoTyrantException on failure.

范例

Example #1 tokyotyrant::putKeep() example

<?php
/* Connect to a database on default port */
$tt = new TokyoTyrant("localhost");

/* Create a new key */
$tt->put("key", "value");

try {
    $tt->putKeep("key", "new value");
} catch (TokyoTyrantException $e) {
    if ($e->getCode() === TokyoTyrant::TTE_KEEP) {
        echo "Existing record! Not modified\n";
    } else {
        echo "Error: " , $e->getMessage() , "\n";
    }
}
echo $tt->get("key");
?>

以上例程会输出：

Existing record! Not modified
value

参见

  • TokyoTyrant::put() - Puts values
  • TokyoTyrant::putCat() - Concatenates to a record

TokyoTyrant::putCat
TokyoTyrant::putNr
TokyoTyrant


Puts value

TokyoTyrant::putKeep
TokyoTyrant::putShl
TokyoTyrant
PHP Manual

TokyoTyrant::putNr

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrant::putNr — Puts value

说明

public TokyoTyrant TokyoTyrant::putNr ( mixed $keys [, string $value = NULL ] )

Puts a key-value pair into the database or multiple key-value pairs. If keys is string then the second parameter value defines the value. The second parameter is mandatory if keys is a string. This method does not wait for the response from the server.

参数

keys

A string key or an array of key-value pairs

value

The value in case a string key is used

返回值

This method returns a reference to the current object and throws TokyoTyrantException on failure.

范例

Example #1 TokyoTyrant::putNr() example

<?php
/* Connect to a database on default port */
$tt = new TokyoTyrant("localhost");

/* Put single key-value pair */
$tt->putNr("key", "value");

/* Put key-value pairs */
$tt->putNr(array("key1" => "value1", "key2" => "value2"));

/* Get back one key */
echo $tt->get("key1");
?>

以上例程会输出：

value1

参见

  • TokyoTyrant::putNr()
  • TokyoTyrant::putKeep() - Puts a record
  • TokyoTyrant::putCat() - Concatenates to a record

TokyoTyrant::putKeep
TokyoTyrant::putShl
TokyoTyrant


Concatenates to a record

TokyoTyrant::putNr
TokyoTyrant::restore
TokyoTyrant
PHP Manual

TokyoTyrant::putShl

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrant::putShl — Concatenates to a record

说明

public mixed TokyoTyrant::putShl ( string $key , string $value , int $width )

Concatenate to a record and shift to left.

参数

key

A string key

value

The value to concatenate

width

The width of the record

返回值

This method returns a reference to the current object and throws TokyoTyrantException on failure.

范例

Example #1 TokyoTyrant::putShl() example

<?php
/* Connect to a database on default port */
$tt = new TokyoTyrant("localhost");

/* Create a new key */
$tt->put("key", "just a long piece of data");

/* Concatenate and shift to left */
$tt->putShl("key", " and string", 15);

/* Echo the key */
echo $tt->get("key");
?>

以上例程会输出：

data and string

参见

  • TokyoTyrant::put() - Puts values
  • TokyoTyrant::putKeep() - Puts a record
  • TokyoTyrant::putCat() - Concatenates to a record

TokyoTyrant::putNr
TokyoTyrant::restore
TokyoTyrant


Restore the database

TokyoTyrant::putShl
TokyoTyrant::setMaster
TokyoTyrant
PHP Manual

TokyoTyrant::restore

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrant::restore — Restore the database

说明

public mixed TokyoTyrant::restore ( string $log_dir , int $timestamp [, bool $check_consistency = true ] )

Restore the database from the update log.

Warning

This method is not supported on 32bit platforms.

参数

log_dir

Directory where the log is

timestamp

Beginning timestamp with microseconds

check_consistency

Whether to check consistency: Default: TRUE

返回值

This method returns the current object and throws TokyoTyrantException on failure.

TokyoTyrant::putShl
TokyoTyrant::setMaster
TokyoTyrant


Set the replication master

TokyoTyrant::restore
TokyoTyrant::size
TokyoTyrant
PHP Manual

TokyoTyrant::setMaster

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrant::setMaster — Set the replication master

说明

public mixed TokyoTyrant::setMaster ( string $host , int $port , int $timestamp [, bool $check_consistency = true ] )

Sets the replication master of the database

Warning

This method is not supported on 32bit platforms.

参数

host

Hostname of the replication master. If NULL the replication is disabled.

port

Port of the replication master

timestamp

Beginning timestamp with microseconds

check_consistency

Whether to check consistency.

返回值

This method returns the current object and throws TokyoTyrantException on failure.

范例

Example #1 TokyoTyrant::setMaster() example

<?php
/* Connect to a database */
$tt = new TokyoTyrant("tokyotyrant.example.com");

/* Disable the replication */
$tt->setMaster(NULL, 0, 0);
?>

参见

  • Classname::Method()

TokyoTyrant::restore
TokyoTyrant::size
TokyoTyrant


Returns the size of the value

TokyoTyrant::setMaster
TokyoTyrant::stat
TokyoTyrant
PHP Manual

TokyoTyrant::size

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrant::size — Returns the size of the value

说明

public int TokyoTyrant::size ( string $key )

Returns the size of a value by key

参数

key

The key of which size to fetch

返回值

Returns the size of the key or throw TokyoTyrantException on error

范例

Example #1 TokyoTyrant::size() example

<?php
$tt = new TokyoTyrant("localhost");

$tt->put("test_key", "12345");

echo $tt->size("test_key");
?>

以上例程会输出：

5

TokyoTyrant::setMaster
TokyoTyrant::stat
TokyoTyrant


Get statistics

TokyoTyrant::size
TokyoTyrant::sync
TokyoTyrant
PHP Manual

TokyoTyrant::stat

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrant::stat — Get statistics

说明

public array TokyoTyrant::stat ( void )

Returns statistics of the remote database

参数

此函数没有参数。

返回值

Returns an array of key value pairs describing the statistics

范例

Example #1 TokyoTyrant::stat() example

<?php
$tt = new TokyoTyrant("localhost");

var_dump($tt->stat());
?>

以上例程的输出类似于：

array(19) {
  ["version"]=>
  string(6) "1.1.28"
  ["libver"]=>
  string(3) "311"
  ["protver"]=>
  string(4) "0.91"
  ["os"]=>
  string(5) "Linux"
  ["time"]=>
  string(17) "1247358357.665630"
  ["pid"]=>
  string(5) "14348"
  ["sid"]=>
  string(8) "59025947"
  ["type"]=>
  string(9) "on-memory"
  ["path"]=>
  string(1) "*"
  ["rnum"]=>
  string(1) "4"
  ["size"]=>
  string(6) "262856"
  ["bigend"]=>
  string(1) "0"
  ["fd"]=>
  string(1) "5"
  ["loadavg"]=>
  string(8) "0.000000"
  ["memsize"]=>
  string(8) "77328384"
  ["memrss"]=>
  string(7) "1183744"
  ["ru_real"]=>
  string(13) "162776.042152"
  ["ru_user"]=>
  string(8) "0.476029"
  ["ru_sys"]=>
  string(8) "8.652540"
}

参见

  • Classname::Method()

TokyoTyrant::size
TokyoTyrant::sync
TokyoTyrant


Synchronize the database

TokyoTyrant::stat
TokyoTyrant::tune
TokyoTyrant
PHP Manual

TokyoTyrant::sync

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrant::sync — Synchronize the database

说明

public mixed TokyoTyrant::sync ( void )

Synchronizes the database on to the physical device

参数

此函数没有参数。

返回值

This method returns the current object and throws TokyoTyrantException on failure.

TokyoTyrant::stat
TokyoTyrant::tune
TokyoTyrant


Tunes connection values

TokyoTyrant::sync
TokyoTyrant::vanish
TokyoTyrant
PHP Manual

TokyoTyrant::tune

(PECL tokyo_tyrant >= 0.2.0)

TokyoTyrant::tune — Tunes connection values

说明

public TokyoTyrant TokyoTyrant::tune ( float $timeout [, int $options = TokyoTyrant::RDBT_RECON ] )

Tunes database connection options.

参数

timeout

The objects timeout value (default: 5.0)

options

Bitmask of options to tune. This can be either 0 or TokyoTyrant::RDBT_RECON. It is recommended not to change the second parameter.

返回值

This method returns a reference to the current object and throws TokyoTyrantException on failure.

TokyoTyrant::sync
TokyoTyrant::vanish
TokyoTyrant


Empties the database

TokyoTyrant::tune
TokyoTyrantTable
TokyoTyrant
PHP Manual

TokyoTyrant::vanish

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrant::vanish — Empties the database

说明

public mixed TokyoTyrant::vanish ( void )

Empties a remote database

参数

此函数没有参数。

返回值

This method returns the current object and throws TokyoTyrantException on failure.

范例

Example #1 TokyoTyrant::vanish() example

<?php
$tt = new TokyoTyrant("localhost");
$tt->vanish();
?>

参见

  • TokyoTyrant::out() - Removes records

TokyoTyrant::tune
TokyoTyrantTable
TokyoTyrant


The TokyoTyrantTable class

(PECL tokyo_tyrant >= 0.1.0)

简介

Provides an API to the table databases. A table database can be create using the following command: ttserver -port 1979 /tmp/tt_table.tct. In Tokyo Tyrant the table API is a schemaless database which can store arbitrary amount of key-value pairs under a single primary key.

类摘要

TokyoTyrantTable extends TokyoTyrant {
/* 方法 */
public void add ( string $key , mixed $increment [, string $type ] )
public int genUid ( void )
public array get ( mixed $keys )
public TokyoTyrantIterator getIterator ( void )
public TokyoTyrantQuery getQuery ( void )
public void out ( mixed $keys )
public int put ( string $key , array $columns )
public void putCat ( string $key , array $columns )
public void putKeep ( string $key , array $columns )
public void putNr ( mixed $keys [, string $value ] )
public void putShl ( string $key , string $value , int $width )
public mixed setIndex ( string $column , int $type )
/* 继承的方法 */
public number TokyoTyrant::add ( string $key , number $increment [, int $type = 0 ] )
public TokyoTyrant TokyoTyrant::connect ( string $host [, int $port = TokyoTyrant::RDBDEF_PORT [, array $options ]] )
public TokyoTyrant TokyoTyrant::connectUri ( string $uri )
public TokyoTyrant::__construct ([ string $host [, int $port = TokyoTyrant::RDBDEF_PORT [, array $options ]]] )
public TokyoTyrant TokyoTyrant::copy ( string $path )
public string TokyoTyrant::ext ( string $name , int $options , string $key , string $value )
public array TokyoTyrant::fwmKeys ( string $prefix , int $max_recs )
public mixed TokyoTyrant::get ( mixed $keys )
public TokyoTyrantIterator TokyoTyrant::getIterator ( void )
public int TokyoTyrant::num ( void )
public TokyoTyrant TokyoTyrant::out ( mixed $keys )
public TokyoTyrant TokyoTyrant::put ( mixed $keys [, string $value = NULL ] )
public TokyoTyrant TokyoTyrant::putCat ( mixed $keys [, string $value ] )
public TokyoTyrant TokyoTyrant::putKeep ( mixed $keys [, string $value ] )
public TokyoTyrant TokyoTyrant::putNr ( mixed $keys [, string $value = NULL ] )
public mixed TokyoTyrant::putShl ( string $key , string $value , int $width )
public mixed TokyoTyrant::restore ( string $log_dir , int $timestamp [, bool $check_consistency = true ] )
public mixed TokyoTyrant::setMaster ( string $host , int $port , int $timestamp [, bool $check_consistency = true ] )
public int TokyoTyrant::size ( string $key )
public array TokyoTyrant::stat ( void )
public mixed TokyoTyrant::sync ( void )
public TokyoTyrant TokyoTyrant::tune ( float $timeout [, int $options = TokyoTyrant::RDBT_RECON ] )
public mixed TokyoTyrant::vanish ( void )
}

Table of Contents

  • TokyoTyrantTable::add — Adds a record
  • TokyoTyrantTable::genUid — Generate unique id
  • TokyoTyrantTable::get — Get a row
  • TokyoTyrantTable::getIterator — Get an iterator
  • TokyoTyrantTable::getQuery — Get a query object
  • TokyoTyrantTable::out — Remove records
  • TokyoTyrantTable::put — Store a row
  • TokyoTyrantTable::putCat — Concatenates to a row
  • TokyoTyrantTable::putKeep — Put a new record
  • TokyoTyrantTable::putNr — Puts value
  • TokyoTyrantTable::putShl — Concatenates to a record
  • TokyoTyrantTable::setIndex — Sets index
TokyoTyrant::vanish
TokyoTyrantTable::add
tokyo_tyrant


Adds a record

TokyoTyrantTable
TokyoTyrantTable::genUid
TokyoTyrantTable
PHP Manual

TokyoTyrantTable::add

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantTable::add — Adds a record

说明

public void TokyoTyrantTable::add ( string $key , mixed $increment [, string $type ] )

This method is not supported with table databases.

参数

key

The string key

increment

The amount to increment

type

TokyoTyrant::RDB_RECINT or TokyoTyrant::RDB_RECDBL constant. If this parameter is omitted the type is guessed from the increment parameters type.

返回值

This method throws an TokyoTyrantException if used through this class.

参见

  • TokyoTyrant::add() - Adds to a numeric key

TokyoTyrantTable
TokyoTyrantTable::genUid
TokyoTyrantTable


Generate unique id

TokyoTyrantTable::add
TokyoTyrantTable::get
TokyoTyrantTable
PHP Manual

TokyoTyrantTable::genUid

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantTable::genUid — Generate unique id

说明

public int TokyoTyrantTable::genUid ( void )

Generates an unique id inside the table database. In table databases rows are referenced using a numeric primary key.

参数

此函数没有参数。

返回值

Returns an unique id or throws TokyoTyrantException on error

范例

Example #1 TokyoTyrantTable::genUid() example

<?php
$tt = new TokyoTyrantTable("localhost", 1122);

echo $tt->genUid();
?>

以上例程的输出类似于：

4

参见

  • TokyoTyrantTable::put() - Store a row

TokyoTyrantTable::add
TokyoTyrantTable::get
TokyoTyrantTable


Get a row

TokyoTyrantTable::genUid
TokyoTyrantTable::getIterator
TokyoTyrantTable
PHP Manual

TokyoTyrantTable::get

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantTable::get — Get a row

说明

public array TokyoTyrantTable::get ( mixed $keys )

Gets a row from table database. keys is a single integer for the primary key of the row or an array of integers for multiple rows.

参数

keys

The primary key, can be a string or an integer

返回值

Returns the row as an array

范例

Example #1 TokyoTyrantTable::get() example

<?php
/* Connect to a table database */
$tt = new TokyoTyrantTable("localhost", 1979);

/* Passing null to put generates a new uid */
$index = $tt->put(null, array("column1" => "some data", "column2" => "more data"));

/* Get the row back */
var_dump($tt->get($index));
?>

以上例程会输出：

array(2) {
  ["column1"]=>
  string(9) "some data"
  ["column2"]=>
  string(9) "more data"
}

注释

Note:

Starting from version 0.3.0 this method accepts array as parameter. Please note that multi-get on tables is not binary-safe.

参见

  • TokyoTyrantTable::put() - Store a row

TokyoTyrantTable::genUid
TokyoTyrantTable::getIterator
TokyoTyrantTable


Get an iterator

TokyoTyrantTable::get
TokyoTyrantTable::getQuery
TokyoTyrantTable
PHP Manual

TokyoTyrantTable::getIterator

(No version information available, might only be in Git)

TokyoTyrantTable::getIterator — Get an iterator

说明

public TokyoTyrantIterator TokyoTyrantTable::getIterator ( void )

Gets an iterator for iterating all keys / values in the database.

参数

此函数没有参数。

返回值

This method returns TokyoTyrantIterator object and throws TokyoTyrantException on failure.

范例

Example #1 TokyoTyrantTable::getIterator() example

<?php
$tt = new TokyoTyrantTable("localhost");
$it = $tt->getIterator();

foreach ($it as $k => $v) {
  var_dump($k, $v);
}
?>

参见

  • TokyoTyrantTable::getQuery() - Get a query object
  • TokyoTyrant::getIterator() - Get an iterator

TokyoTyrantTable::get
TokyoTyrantTable::getQuery
TokyoTyrantTable


Get a query object

TokyoTyrantTable::getIterator
TokyoTyrantTable::out
TokyoTyrantTable
PHP Manual

TokyoTyrantTable::getQuery

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantTable::getQuery — Get a query object

说明

public TokyoTyrantQuery TokyoTyrantTable::getQuery ( void )

Get a query object to execute searches on the database

参数

此函数没有参数。

返回值

Returns TokyoTyrantQuery on success and throws TokyoTyrantException on error

范例

Example #1 TokyoTyrantTable::getQuery() example

<?php
/* Connect to a table database */
$table = new TokyoTyrantTable("localhost", 1979);

/* Put a few rows */
$table->put(null, array("column1" => "some data", "column2" => "more data"));
$table->put(null, array("something" => "value", "data" => "good data"));

/* Get query object */
$query = $table->getQuery();

/* Add condition to query */
$query->addCond('data', TokyoTyrant::RDBQC_STREQ, 'good data');

/* Get matching rows */
var_dump($query->search());
?>

以上例程的输出类似于：

array(1) {
  [11]=>
  array(2) {
    ["something"]=>
    string(5) "value"
    ["data"]=>
    string(9) "good data"
  }
}

参见

  • TokyoTyrantQuery::search() - Searches records
  • TokyoTyrantQuery::out() - Removes records based on query

TokyoTyrantTable::getIterator
TokyoTyrantTable::out
TokyoTyrantTable


Remove records

TokyoTyrantTable::getQuery
TokyoTyrantTable::put
TokyoTyrantTable
PHP Manual

TokyoTyrantTable::out

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantTable::out — Remove records

说明

public void TokyoTyrantTable::out ( mixed $keys )

Removes records from a table database.

参数

keys

A single integer key or an array of integers

返回值

This method returns the current object and throws TokyoTyrantException on failure.

范例

Example #1 TokyoTyrantTable::out() example

<?php
/* Connect to a table database */
$tt = new TokyoTyrantTable("localhost", 1979);

/* Passing null to put generates a new uid */
$index = $tt->put(null, array("column1" => "some data", "column2" => "more data"));

/* Delete the row */
$tt->out($index);
?>

参见

  • TokyoTyrantTable::put() - Store a row

TokyoTyrantTable::getQuery
TokyoTyrantTable::put
TokyoTyrantTable


Store a row

TokyoTyrantTable::out
TokyoTyrantTable::putCat
TokyoTyrantTable
PHP Manual

TokyoTyrantTable::put

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantTable::put — Store a row

说明

public int TokyoTyrantTable::put ( string $key , array $columns )

Puts a new row into the database. This method parameters are key which is the primary key of the row, passing NULL will generate a new unique id. value is an array containing the row contents which is usually key value pairs.

参数

key

The primary key of the row

columns

The row contents

返回值

Returns the primary key on success and throws TokyoTyrantException on error

范例

Example #1 TokyoTyrantTable::put() example

<?php
/* Connect to a table database */
$tt = new TokyoTyrantTable("localhost", 1979);

/* Passing null to put generates a new uid */
$index = $tt->put(null, array("column1" => "some data", "column2" => "more data"));

/* Get the row back */
var_dump($tt->get($index));

/* Modify an existing row */
$tt->put($index, array("column1" => "other data", "column2" => "better data"));

/* Get the row back */
var_dump($tt->get($index));
?>

以上例程会输出：

array(2) {
  ["column1"]=>
  string(9) "some data"
  ["column2"]=>
  string(9) "more data"
}
array(2) {
  ["column1"]=>
  string(10) "other data"
  ["column2"]=>
  string(11) "better data"
}

参见

  • TokyoTyrantTable::get() - Get a row

TokyoTyrantTable::out
TokyoTyrantTable::putCat
TokyoTyrantTable


Concatenates to a row

TokyoTyrantTable::put
TokyoTyrantTable::putKeep
TokyoTyrantTable
PHP Manual

TokyoTyrantTable::putCat

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantTable::putCat — Concatenates to a row

说明

public void TokyoTyrantTable::putCat ( string $key , array $columns )

This method can be used to add new columns to existing records. Existing keys will be left unmodified but any new columns will be appended to the row. Passing null as key will generate a new row.

参数

key

The primary key of the row or NULL

columns

Array of row contents

返回值

Returns the primary key and throws TokyoTyrantException on error.

范例

Example #1 TokyoTyrantTable::putCat() example

<?php
/* Connect to a table database */
$tt = new TokyoTyrantTable("localhost", 1979);

/* Passing null to put generates a new uid */
$index = $tt->put(null, array("column1" => "some data", "column2" => "more data"));

/* Get the row back */
var_dump($tt->get($index));

/* Modify an existing row */
$tt->putcat($index, array("column1" => "something new", "new_column" => "other data"));

/* Get the row back */
var_dump($tt->get($index));
?>

以上例程会输出：

array(2) {
  ["column1"]=>
  string(9) "some data"
  ["column2"]=>
  string(9) "more data"
}
array(3) {
  ["column1"]=>
  string(9) "some data"
  ["column2"]=>
  string(9) "more data"
  ["new_column"]=>
  string(10) "other data"
}

参见

  • TokyoTyrantTable::put() - Store a row

TokyoTyrantTable::put
TokyoTyrantTable::putKeep
TokyoTyrantTable


Put a new record

TokyoTyrantTable::putCat
TokyoTyrantTable::putNr
TokyoTyrantTable
PHP Manual

TokyoTyrantTable::putKeep

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantTable::putKeep — Put a new record

说明

public void TokyoTyrantTable::putKeep ( string $key , array $columns )

Puts a new record into the database. If the key already exists this method throws an exception indicating that the records exists.

参数

key

The primary key of the row or NULL

columns

Array of the row contents

返回值

Returns the primary key and throws TokyoTyrantException on error.

范例

Example #1 TokyoTyrantTable::putKeep() example

<?php
/* Connect to a table database */
$tt = new TokyoTyrantTable("localhost", 1979);

/* Passing null to put generates a new uid */
$index = $tt->put(null, array("column1" => "some data", "column2" => "more data"));

/* Get the row back */
var_dump($tt->get($index));

try {
    $tt->putKeep($index, array("column1" => "something new", "new_column" => "other data"));
} catch (TokyoTyrantException $e) {
    if ($e->getCode() === TokyoTyrant::TTE_KEEP) {
        echo "Existing record! Not modified\n";
    } else {
        echo "Error: " , $e->getMessage() , "\n";
    }
}

/* Get the row back */
var_dump($tt->get($index));
?>

以上例程的输出类似于：

array(2) {
  ["column1"]=>
  string(9) "some data"
  ["column2"]=>
  string(9) "more data"
}
Existing record! Not modified
array(2) {
  ["column1"]=>
  string(9) "some data"
  ["column2"]=>
  string(9) "more data"
}

参见

  • TokyoTyrantTable::put() - Store a row

TokyoTyrantTable::putCat
TokyoTyrantTable::putNr
TokyoTyrantTable


Puts value

TokyoTyrantTable::putKeep
TokyoTyrantTable::putShl
TokyoTyrantTable
PHP Manual

TokyoTyrantTable::putNr

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantTable::putNr — Puts value

说明

public void TokyoTyrantTable::putNr ( mixed $keys [, string $value ] )

This method is not supported on table databases. Calling this method through TokyoTyrantTable is considered an error and an TokyoTyrantException will be thrown.

参数

keys

A string key or an array of key-value pairs

value

The value in case a string key is used

返回值

This method is not supported on table databases. Calling this method through TokyoTyrantTable is considered an error and an TokyoTyrantException will be thrown.

参见

  • TokyoTyrant::putNr() - Puts value
  • TokyoTyrant::putKeep() - Puts a record
  • TokyoTyrant::putCat() - Concatenates to a record

TokyoTyrantTable::putKeep
TokyoTyrantTable::putShl
TokyoTyrantTable


Concatenates to a record

TokyoTyrantTable::putNr
TokyoTyrantTable::setIndex
TokyoTyrantTable
PHP Manual

TokyoTyrantTable::putShl

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantTable::putShl — Concatenates to a record

说明

public void TokyoTyrantTable::putShl ( string $key , string $value , int $width )

This method is not supported on table databases. Calling this method through TokyoTyrantTable is considered an error and an TokyoTyrantException will be thrown.

参数

key

A string key

value

The value to concatenate

width

The width of the record

返回值

This method is not supported on table databases.

参见

  • TokyoTyrant::put() - Puts values
  • TokyoTyrant::putKeep() - Puts a record
  • TokyoTyrant::putCat() - Concatenates to a record
  • TokyoTyrantTable::put() - Store a row
  • TokyoTyrantTable::putKeep() - Put a new record
  • TokyoTyrantTable::putCat() - Concatenates to a row

TokyoTyrantTable::putNr
TokyoTyrantTable::setIndex
TokyoTyrantTable


Sets index

TokyoTyrantTable::putShl
TokyoTyrantQuery
TokyoTyrantTable
PHP Manual

TokyoTyrantTable::setIndex

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantTable::setIndex — Sets index

说明

public mixed TokyoTyrantTable::setIndex ( string $column , int $type )

Sets an index on a specified column. The index type is one of the TokyoTyrant::RDBIT_* constants. Passing TokyoTyrant::RDBIT_VOID removes the index.

参数

column

The name of the column

type

The index type

返回值

This method returns the current object and throws TokyoTyrantException on failure.

TokyoTyrantTable::putShl
TokyoTyrantQuery
TokyoTyrantTable


The TokyoTyrantQuery class

(PECL tokyo_tyrant >= 0.1.0)

简介

This class is used to query the table databases

类摘要

TokyoTyrantQuery implements Iterator {
/* 方法 */
public mixed addCond ( string $name , int $op , string $expr )
public __construct ( TokyoTyrantTable $table )
public int count ( void )
public array current ( void )
public string hint ( void )
public string key ( void )
public array metaSearch ( array $queries , int $type )
public array next ( void )
public TokyoTyrantQuery out ( void )
public bool rewind ( void )
public array search ( void )
public mixed setLimit ([ int $max [, int $skip ]] )
public mixed setOrder ( string $name , int $type )
public bool valid ( void )
}

Table of Contents

  • TokyoTyrantQuery::addCond — Adds a condition to the query
  • TokyoTyrantQuery::__construct — Construct a new query
  • TokyoTyrantQuery::count — Counts records
  • TokyoTyrantQuery::current — Returns the current element
  • TokyoTyrantQuery::hint — Get the hint string of the query
  • TokyoTyrantQuery::key — Returns the current key
  • TokyoTyrantQuery::metaSearch — Retrieve records with multiple queries
  • TokyoTyrantQuery::next — Moves the iterator to next entry
  • TokyoTyrantQuery::out — Removes records based on query
  • TokyoTyrantQuery::rewind — Rewinds the iterator
  • TokyoTyrantQuery::search — Searches records
  • TokyoTyrantQuery::setLimit — Limit results
  • TokyoTyrantQuery::setOrder — Orders results
  • TokyoTyrantQuery::valid — Checks the validity of current item
TokyoTyrantTable::setIndex
TokyoTyrantQuery::addCond
tokyo_tyrant


Adds a condition to the query

TokyoTyrantQuery
TokyoTyrantQuery::__construct
TokyoTyrantQuery
PHP Manual

TokyoTyrantQuery::addCond

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantQuery::addCond — Adds a condition to the query

说明

public mixed TokyoTyrantQuery::addCond ( string $name , int $op , string $expr )

Adds a condition to the query. Condition can be something like: get all keys which value matches expr.

参数

name

Name of the column in the condition

op

The operator. One of the TokyoTyrant::RDBQC_* constants

expr

The expression

返回值

This method returns the current object and throws TokyoTyrantException on failure.

范例

Example #1 TokyoTyrantQuery::addCond() example

<?php
/* Connect to a table database */
$tt = new TokyoTyrantTable("localhost", 1979);

/* Add rows */
$tt->put(null, array("column1" => "some data", "column2" => "something here"));
$tt->put(null, array("column1" => "more data", "column2" => "best data this far"));
$tt->put(null, array("column1" => "again data", "column3" => "not here"));
$tt->put(null, array("column45" => "random data", "column2" => "something along the lines"));
$tt->put(null, array("column21" => "test data", "column2" => "generating.."));
$tt->put(null, array("column1" => "foobar data", "column2" => "value here"));

/* Get a new query object */
$query = $tt->getQuery();

/* Add a search condition */
$query->addCond("column2", TokyoTyrant::RDBQC_STROR, "something");

/* Dump the search results */
var_dump($query->search());
?>

以上例程会输出：

array(2) {
  [1]=>
  array(2) {
    ["column1"]=>
    string(9) "some data"
    ["column2"]=>
    string(14) "something here"
  }
  [4]=>
  array(2) {
    ["column45"]=>
    string(11) "random data"
    ["column2"]=>
    string(25) "something along the lines"
  }
}

参见

  • Classname::Method()

TokyoTyrantQuery
TokyoTyrantQuery::__construct
TokyoTyrantQuery


Construct a new query

TokyoTyrantQuery::addCond
TokyoTyrantQuery::count
TokyoTyrantQuery
PHP Manual

TokyoTyrantQuery::__construct

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantQuery::__construct — Construct a new query

说明

public TokyoTyrantQuery::__construct ( TokyoTyrantTable $table )

Construct a new query object

参数

table

TokyoTyrantTable object with active database connection

返回值

Returns a new TokyoTyrantQuery object and throws TokyoTyrantException on error

范例

Example #1 TokyoTyrantQuery::__construct() example

<?php
$tt = new TokyoTyrantTable("localhost", 1979);

$query = new TokyoTyrantQuery($tt);

/* Work with $query */
?>

参见

  • TokyoTyrantTable::getQuery() - Get a query object

TokyoTyrantQuery::addCond
TokyoTyrantQuery::count
TokyoTyrantQuery


Counts records

TokyoTyrantQuery::__construct
TokyoTyrantQuery::current
TokyoTyrantQuery
PHP Manual

TokyoTyrantQuery::count

(No version information available, might only be in Git)

TokyoTyrantQuery::count — Counts records

说明

public int TokyoTyrantQuery::count ( void )

Returns a count of how many records a query returns.

参数

此函数没有参数。

返回值

Returns a count of matching rows and throws TokyoTyrantException on error

范例

Example #1 TokyoTyrantQuery::count() example

<?php
/* Connect to a table database */
$tt = new TokyoTyrantTable("localhost", 1979);

/* Add rows */
$tt->put(null, array("column1" => "some data", "column2" => "something here"));
$tt->put(null, array("column1" => "more data", "column2" => "best data this far"));
$tt->put(null, array("column1" => "again data", "column3" => "not here"));
$tt->put(null, array("column45" => "random data", "column2" => "something along the lines"));
$tt->put(null, array("column21" => "test data", "column2" => "generating.."));
$tt->put(null, array("column1" => "foobar data", "column2" => "value here"));

/* Get a new query object */
$query = $tt->getQuery();

/* Add a search condition */
$query->addCond("column2", TokyoTyrant::RDBQC_STROR, "something");

/* Count the results */
var_dump($query->count());
?>

以上例程会输出：

int(2)

参见

  • TokyoTyrantQuery::out() - Removes records based on query
  • TokyoTyrantQuery::search() - Searches records
  • TokyoTyrantQuery::metaSearch() - Retrieve records with multiple queries

TokyoTyrantQuery::__construct
TokyoTyrantQuery::current
TokyoTyrantQuery


Returns the current element

TokyoTyrantQuery::count
TokyoTyrantQuery::hint
TokyoTyrantQuery
PHP Manual

TokyoTyrantQuery::current

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantQuery::current — Returns the current element

说明

public array TokyoTyrantQuery::current ( void )

Returns the current element. Part of Iterator interface

参数

此函数没有参数。

返回值

Returns the current row

范例

Example #1 TokyoTyrantQuery iterator example

<?php
/* Connect to a table database */
$tt = new TokyoTyrantTable("localhost", 1979);

/* Add rows */
$tt->put(null, array("column1" => "some data", "column2" => "something here"));
$tt->put(null, array("column1" => "more data", "column2" => "best data this far"));
$tt->put(null, array("column1" => "again data", "column3" => "foobar here"));
$tt->put(null, array("column45" => "random data", "column2" => "something along the lines"));
$tt->put(null, array("column21" => "test data", "column2" => "generating.."));
$tt->put(null, array("column1" => "foobar data", "column2" => "value here"));

/* Get a new query object */
$query = $tt->getQuery();

/* Add a search condition */
$query->addCond("column2", TokyoTyrant::RDBQC_STROR, "something");

/* Iterate the results */
foreach ($query as $key => $value) {
    echo "pk: $key, columns: ", count($value) ,"\n";
}
?>

以上例程的输出类似于：

pk: 1, columns: 2
pk: 4, columns: 2

参见

  • TokyoTyrantQuery::addCond() - Adds a condition to the query

TokyoTyrantQuery::count
TokyoTyrantQuery::hint
TokyoTyrantQuery


Get the hint string of the query

TokyoTyrantQuery::current
TokyoTyrantQuery::key
TokyoTyrantQuery
PHP Manual

TokyoTyrantQuery::hint

(No version information available, might only be in Git)

TokyoTyrantQuery::hint — Get the hint string of the query

说明

public string TokyoTyrantQuery::hint ( void )

Get the hint string of the query. The hint string contains information about an executed query and it could be compared to for example MySQL EXPLAIN statement.

参数

此函数没有参数。

返回值

This method always returns a string

范例

Example #1 TokyoTyrantQuery::hint example

<?php
$tt = new TokyoTyrantTable("localhost", 1979);
$tt->vanish();

for ($i = 0; $i < 11; $i++) {
     $tt->put(null, array('a_col' => 'a' . $i, 'b_col' => 'b' . $i));
}

$query = $tt->getQuery();
$query->addCond('a_col', TokyoTyrant::RDBQC_STRBW, 'a');

$query->search();
var_dump($query->hint());
?>

以上例程的输出类似于：

string(72) "
scanning the whole table
result set size: 11
leaving the natural order
"

参见

  • TokyoTyrantQuery::addCond() - Adds a condition to the query

TokyoTyrantQuery::current
TokyoTyrantQuery::key
TokyoTyrantQuery


Returns the current key

TokyoTyrantQuery::hint
TokyoTyrantQuery::metaSearch
TokyoTyrantQuery
PHP Manual

TokyoTyrantQuery::key

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantQuery::key — Returns the current key

说明

public string TokyoTyrantQuery::key ( void )

Returns the current key. Part of the Iterator interface

参数

此函数没有参数。

返回值

Returns the current key and throws TokyoTyrantException on error

范例

Example #1 TokyoTyrantQuery iterator example

<?php
/* Connect to a table database */
$tt = new TokyoTyrantTable("localhost", 1979);

/* Add rows */
$tt->put(null, array("column1" => "some data", "column2" => "something here"));
$tt->put(null, array("column1" => "more data", "column2" => "best data this far"));
$tt->put(null, array("column1" => "again data", "column3" => "foobar here"));
$tt->put(null, array("column45" => "random data", "column2" => "something along the lines"));
$tt->put(null, array("column21" => "test data", "column2" => "generating.."));
$tt->put(null, array("column1" => "foobar data", "column2" => "value here"));

/* Get a new query object */
$query = $tt->getQuery();

/* Add a search condition */
$query->addCond("column2", TokyoTyrant::RDBQC_STROR, "something");

/* Iterate the results */
foreach ($query as $key => $value) {
    echo "pk: $key, columns: ", count($value) ,"\n";
}
?>

以上例程的输出类似于：

pk: 1, columns: 2
pk: 4, columns: 2

参见

  • TokyoTyrantQuery::addCond() - Adds a condition to the query

TokyoTyrantQuery::hint
TokyoTyrantQuery::metaSearch
TokyoTyrantQuery


Retrieve records with multiple queries

TokyoTyrantQuery::key
TokyoTyrantQuery::next
TokyoTyrantQuery
PHP Manual

TokyoTyrantQuery::metaSearch

(No version information available, might only be in Git)

TokyoTyrantQuery::metaSearch — Retrieve records with multiple queries

说明

public array TokyoTyrantQuery::metaSearch ( array $queries , int $type )

Executes multiple queries on a database and returns matching records. The current object is always the left most object in the search.

参数

queries

Array of TokyoTyrantQuery objects

type

One of the TokyoTyrant::RDBMS_* constants

返回值

Returns the matching rows and throws TokyoTyrantException on error

范例

Example #1 TokyoTyrantQuery::metaSearch() example

<?php
/* Connect to a table database */
$tt = new TokyoTyrantTable("localhost", 1979);

/* Add test data */
$tt->put('cherry',     array('color' => 'red'));
$tt->put('strawberry', array('color' => 'red'));
$tt->put('apple',      array('color' => 'green'));
$tt->put('lemon',      array('color' => 'yellow'));

/* First query */
$query = $tt->getQuery();
$query->addCond('color', TokyoTyrant::RDBQC_STREQ, 'red')->setOrder('color', TokyoTyrant::RDBQO_STRASC);

/* Second query */
$query1 = $tt->getQuery();
$query1->addCond('color', TokyoTyrant::RDBQC_STREQ, 'yellow');

/* Get union between the queries */
var_dump($query->metaSearch(array($query1), TokyoTyrant::RDBMS_UNION));
?>

以上例程会输出：

array(3) {
  ["cherry"]=>
  array(1) {
    ["color"]=>
    string(3) "red"
  }
  ["strawberry"]=>
  array(1) {
    ["color"]=>
    string(3) "red"
  }
  ["lemon"]=>
  array(1) {
    ["color"]=>
    string(6) "yellow"
  }
}

参见

  • TokyoTyrantQuery::search() - Searches records

TokyoTyrantQuery::key
TokyoTyrantQuery::next
TokyoTyrantQuery


Moves the iterator to next entry

TokyoTyrantQuery::metaSearch
TokyoTyrantQuery::out
TokyoTyrantQuery
PHP Manual

TokyoTyrantQuery::next

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantQuery::next — Moves the iterator to next entry

说明

public array TokyoTyrantQuery::next ( void )

Returns the next result in the resultset. Part of the Iterator interface.

参数

此函数没有参数。

返回值

Returns the next row and throws TokyoTyrantException on error.

范例

Example #1 TokyoTyrantQuery iterator example

<?php
/* Connect to a table database */
$tt = new TokyoTyrantTable("localhost", 1979);

/* Add rows */
$tt->put(null, array("column1" => "some data", "column2" => "something here"));
$tt->put(null, array("column1" => "more data", "column2" => "best data this far"));
$tt->put(null, array("column1" => "again data", "column3" => "foobar here"));
$tt->put(null, array("column45" => "random data", "column2" => "something along the lines"));
$tt->put(null, array("column21" => "test data", "column2" => "generating.."));
$tt->put(null, array("column1" => "foobar data", "column2" => "value here"));

/* Get a new query object */
$query = $tt->getQuery();

/* Add a search condition */
$query->addCond("column2", TokyoTyrant::RDBQC_STROR, "something");

/* Iterate the results */
foreach ($query as $key => $value) {
    echo "pk: $key, columns: ", count($value) ,"\n";
}
?>

以上例程的输出类似于：

pk: 1, columns: 2
pk: 4, columns: 2

参见

  • TokyoTyrantQuery::addCond() - Adds a condition to the query

TokyoTyrantQuery::metaSearch
TokyoTyrantQuery::out
TokyoTyrantQuery


Removes records based on query

TokyoTyrantQuery::next
TokyoTyrantQuery::rewind
TokyoTyrantQuery
PHP Manual

TokyoTyrantQuery::out

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantQuery::out — Removes records based on query

说明

public TokyoTyrantQuery TokyoTyrantQuery::out ( void )

Removes all records that match the query. Works exactly like search but removes the records instead of returning them.

参数

此函数没有参数。

返回值

This method returns the current object and throws TokyoTyrantException on failure.

范例

Example #1 TokyoTyrantQuery::out() example

<?php
/* Connect to a table database */
$tt = new TokyoTyrantTable("localhost", 1979);

/* Add rows */
$tt->put(null, array("column1" => "some data", "column2" => "something here"));
$tt->put(null, array("column1" => "more data", "column2" => "best data this far"));
$tt->put(null, array("column1" => "again data", "column3" => "foobar here"));
$tt->put(null, array("column45" => "random data", "column2" => "something along the lines"));
$tt->put(null, array("column21" => "test data", "column2" => "generating.."));
$tt->put(null, array("column1" => "foobar data", "column2" => "value here"));

/* Get a new query object */
$query = $tt->getQuery();

/* Add a search condition */
$query->addCond("column2", TokyoTyrant::RDBQC_STROR, "something");

/* Remove matching records */
$query->out();
?>

参见

  • TokyoTyrantQuery::addCond() - Adds a condition to the query

TokyoTyrantQuery::next
TokyoTyrantQuery::rewind
TokyoTyrantQuery


Rewinds the iterator

TokyoTyrantQuery::out
TokyoTyrantQuery::search
TokyoTyrantQuery
PHP Manual

TokyoTyrantQuery::rewind

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantQuery::rewind — Rewinds the iterator

说明

public bool TokyoTyrantQuery::rewind ( void )

Rewind the resultset and executes the query if it has not been executed. Part of the Iterator interface.

参数

此函数没有参数。

返回值

Returns TRUE

范例

Example #1 TokyoTyrantQuery iterator example

<?php
/* Connect to a table database */
$tt = new TokyoTyrantTable("localhost", 1979);

/* Add rows */
$tt->put(null, array("column1" => "some data", "column2" => "something here"));
$tt->put(null, array("column1" => "more data", "column2" => "best data this far"));
$tt->put(null, array("column1" => "again data", "column3" => "foobar here"));
$tt->put(null, array("column45" => "random data", "column2" => "something along the lines"));
$tt->put(null, array("column21" => "test data", "column2" => "generating.."));
$tt->put(null, array("column1" => "foobar data", "column2" => "value here"));

/* Get a new query object */
$query = $tt->getQuery();

/* Add a search condition */
$query->addCond("column2", TokyoTyrant::RDBQC_STROR, "something");

/* Iterate the results */
foreach ($query as $key => $value) {
    echo "pk: $key, columns: ", count($value) ,"\n";
}
?>

以上例程的输出类似于：

pk: 1, columns: 2
pk: 4, columns: 2

参见

  • TokyoTyrantQuery::addCond() - Adds a condition to the query

TokyoTyrantQuery::out
TokyoTyrantQuery::search
TokyoTyrantQuery


Searches records

TokyoTyrantQuery::rewind
TokyoTyrantQuery::setLimit
TokyoTyrantQuery
PHP Manual

TokyoTyrantQuery::search

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantQuery::search — Searches records

说明

public array TokyoTyrantQuery::search ( void )

Executes a search on the table database. Returns an array of arrays containing the matching records. In the returned array the first level is the primary key of the data and the second level is the row data.

参数

此函数没有参数。

返回值

Returns the matching rows and throws TokyoTyrantException on error

范例

Example #1 TokyoTyrantQuery::search() example

<?php
/* Connect to a table database */
$tt = new TokyoTyrantTable("localhost", 1979);

/* Add rows */
$tt->put(null, array("column1" => "some data", "column2" => "something here"));
$tt->put(null, array("column1" => "more data", "column2" => "best data this far"));
$tt->put(null, array("column1" => "again data", "column3" => "not here"));
$tt->put(null, array("column45" => "random data", "column2" => "something along the lines"));
$tt->put(null, array("column21" => "test data", "column2" => "generating.."));
$tt->put(null, array("column1" => "foobar data", "column2" => "value here"));

/* Get a new query object */
$query = $tt->getQuery();

/* Add a search condition */
$query->addCond("column2", TokyoTyrant::RDBQC_STROR, "something");

/* Dump the search results */
var_dump($query->search());
?>

以上例程会输出：

array(2) {
  [1]=>
  array(2) {
    ["column1"]=>
    string(9) "some data"
    ["column2"]=>
    string(14) "something here"
  }
  [4]=>
  array(2) {
    ["column45"]=>
    string(11) "random data"
    ["column2"]=>
    string(25) "something along the lines"
  }
}

参见

  • TokyoTyrantQuery::out() - Removes records based on query
  • TokyoTyrantQuery::metaSearch() - Retrieve records with multiple queries

TokyoTyrantQuery::rewind
TokyoTyrantQuery::setLimit
TokyoTyrantQuery


Limit results

TokyoTyrantQuery::search
TokyoTyrantQuery::setOrder
TokyoTyrantQuery
PHP Manual

TokyoTyrantQuery::setLimit

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantQuery::setLimit — Limit results

说明

public mixed TokyoTyrantQuery::setLimit ([ int $max [, int $skip ]] )

Set the maximum amount of records to return on a query.

参数

max

Maximum amount of records. Default: -1

skip

How many records to skip from the start. Default: -1

返回值

This method returns the current object and throws TokyoTyrantException on failure.

TokyoTyrantQuery::search
TokyoTyrantQuery::setOrder
TokyoTyrantQuery


Orders results

TokyoTyrantQuery::setLimit
TokyoTyrantQuery::valid
TokyoTyrantQuery
PHP Manual

TokyoTyrantQuery::setOrder

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantQuery::setOrder — Orders results

说明

public mixed TokyoTyrantQuery::setOrder ( string $name , int $type )

Sets the order of a query

参数

name

The column name to apply the ordering on.

type

The type can be one of the following constants:

  • TokyoTyrant::RDBQO_STRASC - String ascending
  • TokyoTyrant::RDBQO_STRDESC - String descending
  • TokyoTyrant::RDBQO_NUMASC - Numberic ascending
  • TokyoTyrant::RDBQO_NUMDESC - String descending

返回值

This method returns the current object.

TokyoTyrantQuery::setLimit
TokyoTyrantQuery::valid
TokyoTyrantQuery


Checks the validity of current item

TokyoTyrantQuery::setOrder
TokyoTyrantIterator
TokyoTyrantQuery
PHP Manual

TokyoTyrantQuery::valid

(PECL tokyo_tyrant >= 0.1.0)

TokyoTyrantQuery::valid — Checks the validity of current item

说明

public bool TokyoTyrantQuery::valid ( void )

Checks if the current item is valid. Part of the Iterator interface

参数

此函数没有参数。

返回值

Returns TRUE if the current item is valid and FALSE if not.

范例

Example #1 TokyoTyrantQuery iterator example

<?php
/* Connect to a table database */
$tt = new TokyoTyrantTable("localhost", 1979);

/* Add rows */
$tt->put(null, array("column1" => "some data", "column2" => "something here"));
$tt->put(null, array("column1" => "more data", "column2" => "best data this far"));
$tt->put(null, array("column1" => "again data", "column3" => "foobar here"));
$tt->put(null, array("column45" => "random data", "column2" => "something along the lines"));
$tt->put(null, array("column21" => "test data", "column2" => "generating.."));
$tt->put(null, array("column1" => "foobar data", "column2" => "value here"));

/* Get a new query object */
$query = $tt->getQuery();

/* Add a search condition */
$query->addCond("column2", TokyoTyrant::RDBQC_STROR, "something");

/* Iterate the results */
foreach ($query as $key => $value) {
    echo "pk: $key, columns: ", count($value) ,"\n";
}
?>

以上例程的输出类似于：

pk: 1, columns: 2
pk: 4, columns: 2

参见

  • TokyoTyrantQuery::addCond() - Adds a condition to the query

TokyoTyrantQuery::setOrder
TokyoTyrantIterator
TokyoTyrantQuery


The TokyoTyrantIterator class

(PECL tokyo_tyrant >= 0.2.0)

简介

Provides an iterator for TokyoTyrant and TokyoTyrantTable objects. The iterator iterates over all keys and values in the database. TokyoTyrantIterator was added in version 0.2.0.

类摘要

TokyoTyrantIterator implements Iterator {
/* Methods */
public __construct ( mixed $object )
public mixed current ( void )
public mixed key ( void )
public mixed next ( void )
public void rewind ( void )
public bool valid ( void )
/* Inherited methods */
public number TokyoTyrant::add ( string $key , number $increment [, int $type = 0 ] )
public TokyoTyrant TokyoTyrant::connect ( string $host [, int $port = TokyoTyrant::RDBDEF_PORT [, array $options ]] )
public TokyoTyrant TokyoTyrant::connectUri ( string $uri )
public TokyoTyrant::__construct ([ string $host [, int $port = TokyoTyrant::RDBDEF_PORT [, array $options ]]] )
public TokyoTyrant TokyoTyrant::copy ( string $path )
public string TokyoTyrant::ext ( string $name , int $options , string $key , string $value )
public array TokyoTyrant::fwmKeys ( string $prefix , int $max_recs )
public mixed TokyoTyrant::get ( mixed $keys )
public TokyoTyrantIterator TokyoTyrant::getIterator ( void )
public int TokyoTyrant::num ( void )
public TokyoTyrant TokyoTyrant::out ( mixed $keys )
public TokyoTyrant TokyoTyrant::put ( mixed $keys [, string $value = NULL ] )
public TokyoTyrant TokyoTyrant::putCat ( mixed $keys [, string $value ] )
public TokyoTyrant TokyoTyrant::putKeep ( mixed $keys [, string $value ] )
public TokyoTyrant TokyoTyrant::putNr ( mixed $keys [, string $value = NULL ] )
public mixed TokyoTyrant::putShl ( string $key , string $value , int $width )
public mixed TokyoTyrant::restore ( string $log_dir , int $timestamp [, bool $check_consistency = true ] )
public mixed TokyoTyrant::setMaster ( string $host , int $port , int $timestamp [, bool $check_consistency = true ] )
public int TokyoTyrant::size ( string $key )
public array TokyoTyrant::stat ( void )
public mixed TokyoTyrant::sync ( void )
public TokyoTyrant TokyoTyrant::tune ( float $timeout [, int $options = TokyoTyrant::RDBT_RECON ] )
public mixed TokyoTyrant::vanish ( void )
}

Table of Contents

  • TokyoTyrantIterator::__construct — Construct an iterator
  • TokyoTyrantIterator::current — Get the current value
  • TokyoTyrantIterator::key — Returns the current key
  • TokyoTyrantIterator::next — Move to next key
  • TokyoTyrantIterator::rewind — Rewinds the iterator
  • TokyoTyrantIterator::valid — Rewinds the iterator
TokyoTyrantQuery::valid
TokyoTyrantIterator::__construct
tokyo_tyrant


Construct an iterator

TokyoTyrantIterator
TokyoTyrantIterator::current
TokyoTyrantIterator
PHP Manual

TokyoTyrantIterator::__construct

(PECL tokyo_tyrant >= 0.2.0)

TokyoTyrantIterator::__construct — Construct an iterator

说明

public TokyoTyrantIterator::__construct ( mixed $object )

Construct a new TokyoTyrantIterator object. One connection can have multiple iterators but it is not quaranteed that all items are traversed in that case. object parameter can be either an of instance TokyoTyrant or TokyoTyrantTable.

参数

此函数没有参数。

返回值

Throws an exception if iterator initialization fails.

范例

Example #1 TokyoTyrantIterator::__construct() example

<?php
/* Connect to a table database */
$tt = new TokyoTyrantTable("localhost", 1979);

/* Passing null to put generates a new uid */
$index = $tt->put(null, array("column1" => "some data", "column2" => "more data"));

/* Construct an iterator */
$it = new TokyoTyrantIterator($tt);

foreach ($it as $value) {
    var_dump($value);
}
?>

以上例程会输出：

array(2) {
  ["column1"]=>
  string(9) "some data"
  ["column2"]=>
  string(9) "more data"
}

参见

  • TokyoTyrantIterator::key() - Returns the current key
  • TokyoTyrantIterator::current() - Get the current value
  • TokyoTyrantIterator::next() - Move to next key
  • TokyoTyrantIterator::rewind() - Rewinds the iterator
  • TokyoTyrantIterator::key() - Returns the current key

TokyoTyrantIterator
TokyoTyrantIterator::current
TokyoTyrantIterator


Get the current value

TokyoTyrantIterator::__construct
TokyoTyrantIterator::key
TokyoTyrantIterator
PHP Manual

TokyoTyrantIterator::current

(PECL tokyo_tyrant >= 0.2.0)

TokyoTyrantIterator::current — Get the current value

说明

public mixed TokyoTyrantIterator::current ( void )

Returns the current value during iteration.

参数

此函数没有参数。

返回值

Returns the current value on success and false on failure.

参见

  • TokyoTyrantIterator::valid() - Rewinds the iterator
  • TokyoTyrantIterator::key() - Returns the current key
  • TokyoTyrantIterator::next() - Move to next key
  • TokyoTyrantIterator::rewind() - Rewinds the iterator

TokyoTyrantIterator::__construct
TokyoTyrantIterator::key
TokyoTyrantIterator


Returns the current key

TokyoTyrantIterator::current
TokyoTyrantIterator::next
TokyoTyrantIterator
PHP Manual

TokyoTyrantIterator::key

(PECL tokyo_tyrant >= 0.2.0)

TokyoTyrantIterator::key — Returns the current key

说明

public mixed TokyoTyrantIterator::key ( void )

Returns the current key.

参数

此函数没有参数。

返回值

Returns the current key on success and false on failure.

参见

  • TokyoTyrantIterator::valid() - Rewinds the iterator
  • TokyoTyrantIterator::current() - Get the current value
  • TokyoTyrantIterator::next() - Move to next key
  • TokyoTyrantIterator::rewind() - Rewinds the iterator

TokyoTyrantIterator::current
TokyoTyrantIterator::next
TokyoTyrantIterator


Move to next key

TokyoTyrantIterator::key
TokyoTyrantIterator::rewind
TokyoTyrantIterator
PHP Manual

TokyoTyrantIterator::next

(PECL tokyo_tyrant >= 0.2.0)

TokyoTyrantIterator::next — Move to next key

说明

public mixed TokyoTyrantIterator::next ( void )

Move to next key during iteration and return it's value.

参数

此函数没有参数。

返回值

Returns the next value on success and false on failure.

参见

  • TokyoTyrantIterator::valid() - Rewinds the iterator
  • TokyoTyrantIterator::key() - Returns the current key
  • TokyoTyrantIterator::current() - Get the current value
  • TokyoTyrantIterator::rewind() - Rewinds the iterator

TokyoTyrantIterator::key
TokyoTyrantIterator::rewind
TokyoTyrantIterator


Rewinds the iterator

TokyoTyrantIterator::next
TokyoTyrantIterator::valid
TokyoTyrantIterator
PHP Manual

TokyoTyrantIterator::rewind

(PECL tokyo_tyrant >= 0.2.0)

TokyoTyrantIterator::rewind — Rewinds the iterator

说明

public void TokyoTyrantIterator::rewind ( void )

Rewinds the iterator for new iteration. Called automatically at the beginning of foreach.

参数

此函数没有参数。

返回值

Throws TokyoTyrantException if iterator initialization fails.

参见

  • TokyoTyrantIterator::valid() - Rewinds the iterator
  • TokyoTyrantIterator::current() - Get the current value
  • TokyoTyrantIterator::next() - Move to next key
  • TokyoTyrantIterator::rewind()

TokyoTyrantIterator::next
TokyoTyrantIterator::valid
TokyoTyrantIterator


Rewinds the iterator

TokyoTyrantIterator::rewind
TokyoTyrantException
TokyoTyrantIterator
PHP Manual

TokyoTyrantIterator::valid

(PECL tokyo_tyrant >= 0.2.0)

TokyoTyrantIterator::valid — Rewinds the iterator

说明

public bool TokyoTyrantIterator::valid ( void )

Checks whether the internal pointer points to valid element.

参数

此函数没有参数。

返回值

Returns TRUE if the current item is valid and FALSE if not.

参见

  • TokyoTyrantIterator::key() - Returns the current key
  • TokyoTyrantIterator::current() - Get the current value
  • TokyoTyrantIterator::next() - Move to next key
  • TokyoTyrantIterator::rewind() - Rewinds the iterator

TokyoTyrantIterator::rewind
TokyoTyrantException
TokyoTyrantIterator


The TokyoTyrantException class

(PECL tokyo_tyrant >= 0.1.0)

简介

TokyoTyrantException

类摘要

tokyotyrantexception extends Exception {
/* 属性 */
protected int $code ;
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}

属性

code

The exception code. This can be compared to TokyoTyrant::TTE_* constants

TokyoTyrantIterator::valid
日期与时间相关扩展
tokyo_tyrant


日期与时间相关扩展

  • Calendar
    • 简介
    • 安装／配置
    • 预定义常量
    • 日历 函数
  • 日期/时间 — 日期和时间
    • 简介
    • 安装／配置
    • 预定义常量
    • DateTime — The DateTime class
    • DateTimeImmutable — The DateTimeImmutable class
    • DateTimeInterface — The DateTimeInterface interface
    • DateTimeZone — The DateTimeZone class
    • DateInterval — The DateInterval class
    • DatePeriod — The DatePeriod class
    • Date/Time 函数
    • Supported Date and Time Formats
    • 所支持的时区列表
  • HRTime — High resolution timing
    • 简介
    • 安装／配置
    • 范例
    • HRTime\PerformanceCounter — The HRTime\PerformanceCounter class
    • HRTime\StopWatch — The HRTime\StopWatch class
    • HRTime\Unit — The HRTime\Unit class
TokyoTyrantException
Calendar
函数参考


Calendar

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 日历 函数
    • cal_days_in_month — 返回某个历法中某年中某月的天数
    • cal_from_jd — 转换Julian Day计数到一个支持的历法。
    • cal_info — 返回选定历法的信息
    • cal_to_jd — 从一个支持的历法转变为Julian Day计数。
    • easter_date — 得到指定年份的复活节午夜时的Unix时间戳。
    • easter_days — 得到指定年份的3月21日到复活节之间的天数
    • FrenchToJD — 从一个French Republican历法的日期得到Julian Day计数。
    • GregorianToJD — 转变一个Gregorian历法日期到Julian Day计数
    • JDDayOfWeek — 返回星期的日期
    • JDMonthName — 返回月份的名称
    • JDToFrench — 转变一个Julian Day计数到French Republican历法的日期
    • JDToGregorian — 转变一个Julian Day计数为Gregorian历法日期
    • jdtojewish — 转换一个julian天数为Jewish历法的日期
    • JDToJulian — 转变一个Julian Day计数到Julian历法的日期
    • jdtounix — 转变Julian Day计数为一个Unix时间戳
    • JewishToJD — 转变一个Jewish历法的日期为一个Julian Day计数
    • JulianToJD — 转变一个Julian历法的日期为Julian Day计数
    • unixtojd — 转变Unix时间戳为Julian Day计数
日期与时间相关扩展
简介
日期与时间相关扩展


简介

历法扩展集包括了一系列用于在不同历法间进行转换的函数，它是以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/本页中的引用包括在相应的文章中。

Calendar
安装／配置
Calendar


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Calendar


安装

要使用本类函数，需要在编译 PHP 时加上 --enable-calendar 。

PHP 的 Windows 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

CAL_GREGORIAN (integer)
CAL_JULIAN (integer)
CAL_JEWISH (integer)
CAL_FRENCH (integer)
CAL_NUM_CALS (integer)
CAL_DOW_DAYNO (integer)
CAL_DOW_SHORT (integer)
CAL_DOW_LONG (integer)
CAL_MONTH_GREGORIAN_SHORT (integer)
CAL_MONTH_GREGORIAN_LONG (integer)
CAL_MONTH_JULIAN_SHORT (integer)
CAL_MONTH_JULIAN_LONG (integer)
CAL_MONTH_JEWISH (integer)
CAL_MONTH_FRENCH (integer)

以下常量自 PHP 4.3.0 起可用：

CAL_EASTER_DEFAULT (integer)
CAL_EASTER_ROMAN (integer)
CAL_EASTER_ALWAYS_GREGORIAN (integer)
CAL_EASTER_ALWAYS_JULIAN (integer)

以下常量自 PHP 5.0.0 起可用：

CAL_JEWISH_ADD_ALAFIM_GERESH (integer)
CAL_JEWISH_ADD_ALAFIM (integer)
CAL_JEWISH_ADD_GERESHAYIM (integer)
资源类型
日历 函数
Calendar


日历 函数

Table of Contents

  • cal_days_in_month — 返回某个历法中某年中某月的天数
  • cal_from_jd — 转换Julian Day计数到一个支持的历法。
  • cal_info — 返回选定历法的信息
  • cal_to_jd — 从一个支持的历法转变为Julian Day计数。
  • easter_date — 得到指定年份的复活节午夜时的Unix时间戳。
  • easter_days — 得到指定年份的3月21日到复活节之间的天数
  • FrenchToJD — 从一个French Republican历法的日期得到Julian Day计数。
  • GregorianToJD — 转变一个Gregorian历法日期到Julian Day计数
  • JDDayOfWeek — 返回星期的日期
  • JDMonthName — 返回月份的名称
  • JDToFrench — 转变一个Julian Day计数到French Republican历法的日期
  • JDToGregorian — 转变一个Julian Day计数为Gregorian历法日期
  • jdtojewish — 转换一个julian天数为Jewish历法的日期
  • JDToJulian — 转变一个Julian Day计数到Julian历法的日期
  • jdtounix — 转变Julian Day计数为一个Unix时间戳
  • JewishToJD — 转变一个Jewish历法的日期为一个Julian Day计数
  • JulianToJD — 转变一个Julian历法的日期为Julian Day计数
  • unixtojd — 转变Unix时间戳为Julian Day计数
预定义常量
cal_days_in_month
Calendar


返回某个历法中某年中某月的天数

日历 函数
cal_from_jd
日历 函数
PHP Manual

cal_days_in_month

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

cal_days_in_month — 返回某个历法中某年中某月的天数

说明

int cal_days_in_month ( int $calendar , int $month , int $year )

该函数返回特定历法中的某年中的某月的天数。

参数

calendar

用来计算的某个历法

month

选定历法中的某月

year

选定历法中的某年

返回值

指定历法中选定的某月的天数。

范例

Example #1 cal_days_in_month() example

<?php
$num = cal_days_in_month(CAL_GREGORIAN, 8, 2003); // 31
echo "There was $num days in August 2003";
?>

日历 函数
cal_from_jd
日历 函数


转换Julian Day计数到一个支持的历法。

cal_days_in_month
cal_info
日历 函数
PHP Manual

cal_from_jd

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

cal_from_jd — 转换Julian Day计数到一个支持的历法。

说明

array cal_from_jd ( int $jd , int $calendar )

cal_from_jd()函数根据给定的Julian day的jd 天数转换成特定历法calendar中的日期。calendar支持的值有CAL_GREGORIAN，CAL_JULIAN，CAL_JEWISH 和CAL_FRENCH。

参数

jd

一个Julian day天数的整数数字

calendar

要转换成的历法

返回值

返回一个数组，包含的历法信息有月，日，年，星期，星期的缩写和全写，月份的缩写和全写，日期的形式是"月/日/年"。

范例

Example #1 cal_from_jd() example

<?php
$today = unixtojd(mktime(0, 0, 0, 8, 16, 2003));
print_r(cal_from_jd($today, CAL_GREGORIAN));
?>

以上例程会输出：

Array
(
    [date] => 8/16/2003
    [month] => 8
    [day] => 16
    [year] => 2003
    [dow] => 6
    [abbrevdayname] => Sat
    [dayname] => Saturday
    [abbrevmonth] => Aug
    [monthname] => August
)

参见

  • cal_to_jd() - 从一个支持的历法转变为Julian Day计数。
  • jdtofrench() - 转变一个Julian Day计数到French Republican历法的日期
  • jdtogregorian() - 转变一个Julian Day计数为Gregorian历法日期
  • jdtojewish() - 转换一个julian天数为Jewish历法的日期
  • jdtojulian() - 转变一个Julian Day计数到Julian历法的日期
  • jdtounix() - 转变Julian Day计数为一个Unix时间戳

cal_days_in_month
cal_info
日历 函数


返回选定历法的信息

cal_from_jd
cal_to_jd
日历 函数
PHP Manual

cal_info

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

cal_info — 返回选定历法的信息

说明

array cal_info ([ int $calendar = -1 ] )

cal_info()返回选定 calendar的作息。

历法信息以一个数组的形式返回，包含的元素有历法名称，历法代码，月份，月份的缩写和单月的最多天数。作为参数的calendar历法名字可以有：

  • 0 or CAL_GREGORIAN - Gregorian Calendar
  • 1 or CAL_JULIAN - Julian Calendar
  • 2 or CAL_JEWISH - Jewish Calendar
  • 3 or CAL_FRENCH - French Revolutionary Calendar

如果没有指定参数calendar，所支持的所有历法将以数组形式返回。

参数

calendar

返回信息所指定的历法名称，如果没有指定历法，将返回所有历法。

返回值

更新日志

版本 | 说明
Since 5.0 | 参数calendar作为可选项，缺省时默认值为"所有历法"。

范例

Example #1 cal_info() example

<?php
$info = cal_info(0);
print_r($info);
?>

以上例程会输出：

Array
(
    [months] => Array
        (
            [1] => January
            [2] => February
            [3] => March
            [4] => April
            [5] => May
            [6] => June
            [7] => July
            [8] => August
            [9] => September
            [10] => October
            [11] => November
            [12] => December
        )

    [abbrevmonths] => Array
        (
            [1] => Jan
            [2] => Feb
            [3] => Mar
            [4] => Apr
            [5] => May
            [6] => Jun
            [7] => Jul
            [8] => Aug
            [9] => Sep
            [10] => Oct
            [11] => Nov
            [12] => Dec
        )

    [maxdaysinmonth] => 31
    [calname] => Gregorian
    [calsymbol] => CAL_GREGORIAN
)

cal_from_jd
cal_to_jd
日历 函数


从一个支持的历法转变为Julian Day计数。

cal_info
easter_date
日历 函数
PHP Manual

cal_to_jd

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

cal_to_jd — 从一个支持的历法转变为Julian Day计数。

说明

int cal_to_jd ( int $calendar , int $month , int $day , int $year )

cal_to_jd()函数从一个给定的历法日期计算出Julian天数，支持的历法有 CAL_GREGORIAN，CAL_JULIAN，CAL_JEWISH和CAL_FRENCH。

参数

calendar

选定的历法，可以是CAL_GREGORIAN，CAL_JULIAN，CAL_JEWISH或CAL_FRENCH中的某一个。

month

数字形式的月份，根据选定的calendar历法来确定范围。

day

数字形式的日期，根据选定的calendar历法来确定范围。

year

数字形式的年份，根据选定的calendar历法来确定范围。

返回值

一个Julian天数。

参见

  • cal_from_jd() - 转换Julian Day计数到一个支持的历法。
  • frenchtojd() - 从一个French Republican历法的日期得到Julian Day计数。
  • gregoriantojd() - 转变一个Gregorian历法日期到Julian Day计数
  • jewishtojd() - 转变一个Jewish历法的日期为一个Julian Day计数
  • juliantojd() - 转变一个Julian历法的日期为Julian Day计数
  • unixtojd() - 转变Unix时间戳为Julian Day计数

cal_info
easter_date
日历 函数


得到指定年份的复活节午夜时的Unix时间戳。

cal_to_jd
easter_days
日历 函数
PHP Manual

easter_date

(PHP 4, PHP 5, PHP 7)

easter_date — 得到指定年份的复活节午夜时的Unix时间戳。

说明

int easter_date ([ int $year ] )

返回指定年份的复活节午夜时的Unix时间戳。

Warning

如果给定的年份超出Unix时间戳的范围（比如1970年以前或2037年以后），该函数将返回一个警告。

复活节的日期是由尼西亚议会在AD325年确定的为每年春分月圆后的第一个星期日。春分一般是在3月21日，这就简化为只要计算满月的日期和紧挨的星期日的日期。这里所用的算法是在532年由Dionysius Exiguus所介绍的，参考了Julian历法和Gregorian历法这两个历法来提高精确度。（在1753年以前用Julian历法计算，该历法是一个以19年为周期来确定月亮的相位的历法。在1753年以后用Gregorian历法计算，该历法由Clavius和Lilius发明，由Pope Gregory 8世在1582年推广）

参数

year

1970年至2037年之间的数字形式的年份。

返回值

复活节日期的Unix时间戳。

更新日志

版本 | 说明
Since 4.3.0 | year参数可选，缺省的默认值是当年。

范例

Example #1 easter_date() example

<?php

echo date("M-d-Y", easter_date(1999));        // Apr-04-1999
echo date("M-d-Y", easter_date(2000));        // Apr-23-2000
echo date("M-d-Y", easter_date(2001));        // Apr-15-2001

?>

参见

  • easter_days() - 得到指定年份的3月21日到复活节之间的天数 for calculating Easter before 1970 or after 2037

cal_to_jd
easter_days
日历 函数


得到指定年份的3月21日到复活节之间的天数

easter_date
FrenchToJD
日历 函数
PHP Manual

easter_days

(PHP 4, PHP 5, PHP 7)

easter_days — 得到指定年份的3月21日到复活节之间的天数

说明

int easter_days ([ int $year [, int $method = CAL_EASTER_DEFAULT ]] )

返回指定年份的3月21日到复活节之间的天数，如果没有指定年份，默认是当年。

这个函数可以用来代替easter_date()函数来计算Unix时间戳以外年份的复活节日期。（比如1970年以前或2037年以后）

复活节的日期是由尼西亚议会在AD325年确定的为每年春分月圆后的第一个星期日。春分一般是在3月21日，这就简化为只要计算满月的日期和紧挨的星期日的日期。这里所用的算法是在532年由Dionysius Exiguus所介绍的，参考了Julian历法和Gregorian历法这两个历法来提高精确度。（在1753年以前用Julian历法计算，该历法是一个以19年为周期来确定月亮的相位的历法。在1753年以后用Gregorian历法计算，该历法由Clavius和Lilius发明，由Pope Gregory 8世在1582年推广）

参数

year

正数形式的年份

method

当设置为CAL_EASTER_ROMAN时可以用Gregorian历法来计算1582－1752之间的复活节日期。更多可用的常量参考calendar constants。

返回值

根据给定参数year年份而返回的3月21日至复活节的天数。

更新日志

版本 | 说明
Since 4.3.0 | 参数year 可选，缺省默认值是当年。
Since 4.3.0 | 引入参数 method。

范例

Example #1 easter_days() example

<?php

echo easter_days(1999);        // 14, i.e. April 4
echo easter_days(1492);        // 32, i.e. April 22
echo easter_days(1913);        //  2, i.e. March 23

?>

参见

  • easter_date() - 得到指定年份的复活节午夜时的Unix时间戳。

easter_date
FrenchToJD
日历 函数


从一个French Republican历法的日期得到Julian Day计数。

easter_days
GregorianToJD
日历 函数
PHP Manual

FrenchToJD

(PHP 4, PHP 5, PHP 7)

FrenchToJD — 从一个French Republican历法的日期得到Julian Day计数。

说明

int frenchtojd ( int $month , int $day , int $year )

从一个French Republican历法的日期得到Julian Day计数。

年份所能用的范围是1到14（Gregorian历法的1792年9月22日到1806年9月22日）。

参数

month

月份的范围是1到13。

day

日期的范围是1到30。

year

年份的范围是1到14。

返回值

返回指定french revolution日期的julian天数。

参见

  • jdtofrench() - 转变一个Julian Day计数到French Republican历法的日期
  • cal_to_jd() - 从一个支持的历法转变为Julian Day计数。

easter_days
GregorianToJD
日历 函数


转变一个Gregorian历法日期到Julian Day计数

FrenchToJD
JDDayOfWeek
日历 函数
PHP Manual

GregorianToJD

(PHP 4, PHP 5, PHP 7)

GregorianToJD — 转变一个Gregorian历法日期到Julian Day计数

说明

int gregoriantojd ( int $month , int $day , int $year )

Gregorian历法的合理范围是4714 B.C. 至 9999 A.D.

虽然这个函数可以处理4714 B.C.以前的日期，但是没有意义。Gregorian历法直到1582年10年15日（或是Julian历法的1582年10月5日）才被发明，很久以后一些国家也没有接受它。比如，英国是在1752年开始使用Gregorian历法，苏联是在1918年，希腊是在1923年，大部分的欧洲国家使用Julian历法。

参数

month

月份的范围是 1（January）到 12（December）。

day

日期的范围是 1到 31。

year

年份的范围是 -4714 到 9999。

返回值

给定gregorian历法日期的julian天数。

范例

Example #1 Calendar functions

<?php
$jd = GregorianToJD(10, 11, 1970);
echo "$jd\n";
$gregorian = JDToGregorian($jd);
echo "$gregorian\n";
?>

参见

  • jdtogregorian() - 转变一个Julian Day计数为Gregorian历法日期
  • cal_to_jd() - 从一个支持的历法转变为Julian Day计数。

FrenchToJD
JDDayOfWeek
日历 函数


返回星期的日期

GregorianToJD
JDMonthName
日历 函数
PHP Manual

JDDayOfWeek

(PHP 4, PHP 5, PHP 7)

JDDayOfWeek — 返回星期的日期

说明

mixed jddayofweek ( int $julianday [, int $mode = CAL_DOW_DAYNO ] )

返回星期的日期，根据模式不同可能是字符串或是整数。

参数

julianday

一个julian天数。

mode
历法星期模式
Mode | Meaning
0 (默认) | 返回数字形式(0=Sunday, 1=Monday, etc)
1 | 返回字符串形式 (English-Gregorian)
2 | 返回缩写形式的字符串 (English-Gregorian)

返回值

数字或字符串形式的星期数。

GregorianToJD
JDMonthName
日历 函数


返回月份的名称

JDDayOfWeek
JDToFrench
日历 函数
PHP Manual

JDMonthName

(PHP 4, PHP 5, PHP 7)

JDMonthName — 返回月份的名称

说明

string jdmonthname ( int $julianday , int $mode )

返回一个月份名称的字符串，mode参数指定使用哪种历法和月份名称的形式。

Calendar modes
Mode | Meaning | Values
0 | Gregorian - abbreviated | Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
1 | Gregorian | January, February, March, April, May, June, July, August, September, October, November, December
2 | Julian - abbreviated | Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
3 | Julian | January, February, March, April, May, June, July, August, September, October, November, December
4 | Jewish | Tishri, Heshvan, Kislev, Tevet, Shevat, AdarI, AdarII, Nisan, Iyyar, Sivan, Tammuz, Av, Elul
5 | French Republican | Vendemiaire, Brumaire, Frimaire, Nivose, Pluviose, Ventose, Germinal, Floreal, Prairial, Messidor, Thermidor, Fructidor, Extra

参数

jday

用来计算的julian天数

calendar

历法的月份的名字

返回值

根据指定的julian天数和calendar历法参数而得到月份的名称。

JDDayOfWeek
JDToFrench
日历 函数


转变一个Julian Day计数到French Republican历法的日期

JDMonthName
JDToGregorian
日历 函数
PHP Manual

JDToFrench

(PHP 4, PHP 5, PHP 7)

JDToFrench — 转变一个Julian Day计数到French Republican历法的日期

说明

string jdtofrench ( int $juliandaycount )

转变一个Julian Day计数到French Republican历法的日期。

参数

julianday

一个julian天数

返回值

以"月/日/年"形式的french revolution日期

参见

  • frenchtojd() - 从一个French Republican历法的日期得到Julian Day计数。
  • cal_from_jd() - 转换Julian Day计数到一个支持的历法。

JDMonthName
JDToGregorian
日历 函数


转变一个Julian Day计数为Gregorian历法日期

JDToFrench
jdtojewish
日历 函数
PHP Manual

JDToGregorian

(PHP 4, PHP 5, PHP 7)

JDToGregorian — 转变一个Julian Day计数为Gregorian历法日期

说明

string jdtogregorian ( int $julianday )

转变一个julian天数为gregorian历法的"月/日/年"形式的日期

参数

julianday

一个julian天数

返回值

"月/日/年"形式的gregorian日期

参见

  • gregoriantojd() - 转变一个Gregorian历法日期到Julian Day计数
  • cal_from_jd() - 转换Julian Day计数到一个支持的历法。

JDToFrench
jdtojewish
日历 函数


转换一个julian天数为Jewish历法的日期

JDToGregorian
JDToJulian
日历 函数
PHP Manual

jdtojewish

(PHP 4, PHP 5, PHP 7)

jdtojewish — 转换一个julian天数为Jewish历法的日期

说明

string jdtojewish ( int $juliandaycount [, bool $hebrew = false [, int $fl = 0 ]] )

转换一个julian天数为Jewish历法的日期。

参数

julianday

一个julian天数

hebrew

如果参数 hebrew设置为 TRUE，参数fl可用于希伯莱语的格式。

fl

可用的格式有： CAL_JEWISH_ADD_ALAFIM_GERESH, CAL_JEWISH_ADD_ALAFIM, CAL_JEWISH_ADD_GERESHAYIM.

返回值

以"月/日/年"的格式显示jewish日期。

更新日志

版本 | 说明
5.0.0 | 增加了参数 fl。
4.3.0 | 增加了参数 hebrew 。

范例

Example #1 jdtojewish() Example

<?php
echo jdtojewish(gregoriantojd(10, 8, 2002), true,
       CAL_JEWISH_ADD_GERESHAYIM + CAL_JEWISH_ADD_ALAFIM + CAL_JEWISH_ADD_ALAFIM_GERESH);
?>

参见

  • jewishtojd() - 转变一个Jewish历法的日期为一个Julian Day计数
  • cal_from_jd() - 转换Julian Day计数到一个支持的历法。

JDToGregorian
JDToJulian
日历 函数


转变一个Julian Day计数到Julian历法的日期

jdtojewish
jdtounix
日历 函数
PHP Manual

JDToJulian

(PHP 4, PHP 5, PHP 7)

JDToJulian — 转变一个Julian Day计数到Julian历法的日期

说明

string jdtojulian ( int $julianday )

转变一个Julian Day计数到以"月/日/年"形式显示的Julian历法的日期。

参数

julianday

一个julian天数

返回值

以"月/日/年"形式显示的Julian历法的日期

参见

  • juliantojd() - 转变一个Julian历法的日期为Julian Day计数
  • cal_from_jd() - 转换Julian Day计数到一个支持的历法。

jdtojewish
jdtounix
日历 函数


转变Julian Day计数为一个Unix时间戳

JDToJulian
JewishToJD
日历 函数
PHP Manual

jdtounix

(PHP 4, PHP 5, PHP 7)

jdtounix — 转变Julian Day计数为一个Unix时间戳

说明

int jdtounix ( int $jday )

这个函数根据给定的julian天数返回一个Unix时间戳，或如果参数jday不在Unix时间（Gregorian历法的1970年至2037年，或2440588 <= jday <= 2465342）范围内返回 FALSE 。返回的时间是本地时间（不是GMT）。

参数

jday

一个在 2440588 到 2465342 之间的julian天数

返回值

指定的julian天数的开始时的时间戳。

参见

  • unixtojd() - 转变Unix时间戳为Julian Day计数

JDToJulian
JewishToJD
日历 函数


转变一个Jewish历法的日期为一个Julian Day计数

jdtounix
JulianToJD
日历 函数
PHP Manual

JewishToJD

(PHP 4, PHP 5, PHP 7)

JewishToJD — 转变一个Jewish历法的日期为一个Julian Day计数

说明

int jewishtojd ( int $month , int $day , int $year )

尽管这个函数可以处理1（3761 B.C.）以前的年份，但这是没有意义的。Jewish历法被用了几千年，但早期的时候一个月的开始没有固定的准则，通常是观察到一个新月后定为一个月份的开始。

参数

month

在1到13之间的月份

day

在1到30日之间的日子

year

在1到9999之间的年份

返回值

指定的jewish历法的日期的julian天数。

参见

  • jdtojewish() - 转换一个julian天数为Jewish历法的日期
  • cal_to_jd() - 从一个支持的历法转变为Julian Day计数。

jdtounix
JulianToJD
日历 函数


转变一个Julian历法的日期为Julian Day计数

JewishToJD
unixtojd
日历 函数
PHP Manual

JulianToJD

(PHP 4, PHP 5, PHP 7)

JulianToJD — 转变一个Julian历法的日期为Julian Day计数

说明

int juliantojd ( int $month , int $day , int $year )

Julian历法的合理年份为 4713 B.C. 到 9999 A.D.

尽管这个函数也可以处理4713 B.C.以前的日期，但是没有意义。这个历法是在46 B.C.创立，但是到了8 A.D.还没有稳定，可能直到第4世纪才最终完善。而且，每年的开始也不相同，不是所有的国家都认定January为第一个月份的。

Caution

记住，当今世界最广泛使用的历法是Gregorian历法，函数gregoriantojd()可以转变日期为Julian Day计数。

参数

month

月份的范围从 1 (January) 到 12 ( December)

day

日期的范围从 1 到 31

year

年份的范围从 -4713 到 9999

返回值

指定julian历法中的日期所对应的julian天数。

参见

  • jdtojulian() - 转变一个Julian Day计数到Julian历法的日期
  • cal_to_jd() - 从一个支持的历法转变为Julian Day计数。

JewishToJD
unixtojd
日历 函数


转变Unix时间戳为Julian Day计数

JulianToJD
日期/时间
日历 函数
PHP Manual

unixtojd

(PHP 4, PHP 5, PHP 7)

unixtojd — 转变Unix时间戳为Julian Day计数

说明

int unixtojd ([ int $timestamp = time() ] )

根据指定的Unix时间戳timestamp，返回Julian天数。如果没有指定时间戳则返回当前日期的天数。

参数

timestamp

一个用于转变的时间戳。

返回值

一个julian天数。

参见

  • jdtounix() - 转变Julian Day计数为一个Unix时间戳

JulianToJD
日期/时间
日历 函数


日期和时间

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • DateTime — The DateTime class
    • DateTime::add — Adds an amount of days, months, years, hours, minutes and seconds to a DateTime object
    • DateTime::__construct — Returns new DateTime object
    • DateTime::createFromFormat — Parses a time string according to a specified format
    • DateTime::getLastErrors — Returns the warnings and errors
    • DateTime::modify — Alters the timestamp
    • DateTime::__set_state — The __set_state handler
    • DateTime::setDate — Sets the date
    • DateTime::setISODate — Sets the ISO date
    • DateTime::setTime — Sets the time
    • DateTime::setTimestamp — Sets the date and time based on an Unix timestamp
    • DateTime::setTimezone — Sets the time zone for the DateTime object
    • DateTime::sub — Subtracts an amount of days, months, years, hours, minutes and seconds from a DateTime object
  • DateTimeImmutable — The DateTimeImmutable class
    • DateTimeImmutable::add — Adds an amount of days, months, years, hours, minutes and seconds
    • DateTimeImmutable::__construct — Returns new DateTimeImmutable object
    • DateTimeImmutable::createFromFormat — Returns new DateTimeImmutable object formatted according to the specified format
    • DateTimeImmutable::createFromMutable — Returns new DateTimeImmutable object encapsulating the given DateTime object
    • DateTimeImmutable::getLastErrors — Returns the warnings and errors
    • DateTimeImmutable::modify — Creates a new object with modified timestamp
    • DateTimeImmutable::__set_state — The __set_state handler
    • DateTimeImmutable::setDate — Sets the date
    • DateTimeImmutable::setISODate — Sets the ISO date
    • DateTimeImmutable::setTime — Sets the time
    • DateTimeImmutable::setTimestamp — Sets the date and time based on an Unix timestamp
    • DateTimeImmutable::setTimezone — Sets the time zone
    • DateTimeImmutable::sub — Subtracts an amount of days, months, years, hours, minutes and seconds
  • DateTimeInterface — The DateTimeInterface interface
    • DateTime::diff — Returns the difference between two DateTime objects
    • DateTime::format — Returns date formatted according to given format
    • DateTime::getOffset — Returns the timezone offset
    • DateTime::getTimestamp — Gets the Unix timestamp
    • DateTime::getTimezone — Return time zone relative to given DateTime
    • DateTime::__wakeup — The __wakeup handler
  • DateTimeZone — The DateTimeZone class
    • DateTimeZone::__construct — 创建新的DateTimeZone对象
    • DateTimeZone::getLocation — 返回与时区相关的定位信息。
    • DateTimeZone::getName — 返回时区名称。
    • DateTimeZone::getOffset — 返回相对于 GMT 的时差。
    • DateTimeZone::getTransitions — Returns all transitions for the timezone
    • DateTimeZone::listAbbreviations — 返回一个包含 dst (夏令时)，时差和时区信息的关联数组。
    • DateTimeZone::listIdentifiers — 返回一个包含了所有时区标示符的索引数组。
  • DateInterval — The DateInterval class
    • DateInterval::__construct — Creates a new DateInterval object
    • DateInterval::createFromDateString — Sets up a DateInterval from the relative parts of the string
    • DateInterval::format — Formats the interval
  • DatePeriod — The DatePeriod class
    • DatePeriod::__construct — Creates a new DatePeriod object
    • DatePeriod::getDateInterval — Gets the interval
    • DatePeriod::getEndDate — Gets the end date
    • DatePeriod::getStartDate — Gets the start date
  • Date/Time 函数
    • checkdate — 验证一个格里高里日期
    • date_add — 别名 DateTime::add
    • date_create_from_format — 别名 DateTime::createFromFormat
    • date_create_immutable_from_format — 别名 DateTimeImmutable::createFromFormat
    • date_create_immutable — 别名 DateTimeImmutable::__construct
    • date_create — 别名 DateTime::__construct
    • date_date_set — 别名 DateTime::setDate
    • date_default_timezone_get — 取得一个脚本中所有日期时间函数所使用的默认时区
    • date_default_timezone_set — 设定用于一个脚本中所有日期时间函数的默认时区
    • date_diff — 别名 DateTime::diff
    • date_format — 别名 DateTime::format
    • date_get_last_errors — 别名 DateTime::getLastErrors
    • date_interval_create_from_date_string — 别名 DateInterval::createFromDateString
    • date_interval_format — 别名 DateInterval::format
    • date_isodate_set — 别名 DateTime::setISODate
    • date_modify — 别名 DateTime::modify
    • date_offset_get — 别名 DateTime::getOffset
    • date_parse_from_format — Get info about given date formatted according to the specified format
    • date_parse — Returns associative array with detailed info about given date
    • date_sub — 别名 DateTime::sub
    • date_sun_info — Returns an array with information about sunset/sunrise and twilight begin/end
    • date_sunrise — 返回给定的日期与地点的日出时间
    • date_sunset — 返回给定的日期与地点的日落时间
    • date_time_set — 别名 DateTime::setTime
    • date_timestamp_get — 别名 DateTime::getTimestamp
    • date_timestamp_set — 别名 DateTime::setTimestamp
    • date_timezone_get — 别名 DateTime::getTimezone
    • date_timezone_set — 别名 DateTime::setTimezone
    • date — 格式化一个本地时间／日期
    • getdate — 取得日期／时间信息
    • gettimeofday — 取得当前时间
    • gmdate — 格式化一个 GMT/UTC 日期／时间
    • gmmktime — 取得 GMT 日期的 UNIX 时间戳
    • gmstrftime — 根据区域设置格式化 GMT/UTC 时间／日期
    • idate — 将本地时间日期格式化为整数
    • localtime — 取得本地时间
    • microtime — 返回当前 Unix 时间戳和微秒数
    • mktime — 取得一个日期的 Unix 时间戳
    • strftime — 根据区域设置格式化本地时间／日期
    • strptime — 解析由 strftime 生成的日期／时间
    • strtotime — 将任何字符串的日期时间描述解析为 Unix 时间戳
    • time — 返回当前的 Unix 时间戳
    • timezone_abbreviations_list — 别名 DateTimeZone::listAbbreviations
    • timezone_identifiers_list — 别名 DateTimeZone::listIdentifiers
    • timezone_location_get — 别名 DateTimeZone::getLocation
    • timezone_name_from_abbr — Returns the timezone name from abbreviation
    • timezone_name_get — 别名 DateTimeZone::getName
    • timezone_offset_get — 别名 DateTimeZone::getOffset
    • timezone_open — 别名 DateTimeZone::__construct
    • timezone_transitions_get — 别名 DateTimeZone::getTransitions
    • timezone_version_get — Gets the version of the timezonedb
  • Supported Date and Time Formats
    • Time Formats
    • Date Formats
    • Compound Formats
    • Relative Formats
  • 所支持的时区列表
    • 非洲
    • 美洲
    • 南极洲
    • 北极
    • 亚洲
    • 大西洋
    • 澳洲
    • 欧洲
    • 印度
    • 太平洋地区
    • 其他
unixtojd
简介
日期与时间相关扩展


简介

你可以使用这些函数获取运行 PHP 的服务器的日期和时间， 也可以使用这些函数把日期和时间 格式化成不同格式的字符串。

日期和时间信息在 PHP 内部是以 64 位数字存储的， 它可以覆盖当前时间前后 2920 亿年的时间，这个范围之广，足以满足现有应用的实际需求。

Note: 需要注意的是， 这些函数都是依赖服务器的区域设置的， 所以在使用它们的时候，要考虑夏令时 （例如：使用 $date = strtotime('+7 days', $date) 而不是 $date += 7*24*60*60） 和闰年的情况。

Note: 本节中用到的时区可以从 所支持的时区列表 获取。

日期/时间
安装／配置
日期/时间


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
日期/时间


安装

使用这些函数不需要安装，它们是 PHP 核心的一部分。

Note: 获取最新版的时区数据

可以通过安装 PECL 的 » timezonedb 模块来获取最新的时区数据。

Note: 在 PHP 5.1.x 中支持的试验性时区

虽然 DateTime 类及其相关函数自 PHP 5.2.0 版本开始 就是默认启用的，也可以通过设置 CFLAGS=-DEXPERIMENTAL_DATE_SUPPORT=1 参数来配置/编译 PHP 5.1.x 版本来实现试验性的支持。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

日期／时间配置选项
名字 | 默认 | 可修改范围 | 更新日志
date.default_latitude | "31.7667" | PHP_INI_ALL | 自 PHP 5.0.0 起可用
date.default_longitude | "35.2333" | PHP_INI_ALL | 自 PHP 5.0.0 起可用
date.sunrise_zenith | "90.83" | PHP_INI_ALL | 自 PHP 5.0.0 起可用
date.sunset_zenith | "90.83" | PHP_INI_ALL | 自 PHP 5.0.0 起可用
date.timezone | "" | PHP_INI_ALL | 自 PHP 5.0.0 起可用
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

date.default_latitude float

默认纬度。

date.default_longitude float

默认经度。

date.sunrise_zenith float

默认日出天顶。

date.sunset_zenith float

默认日落天顶。

date.timezone string

在未设定 TZ 环境变量时用于所有日期／时间函数的默认时区。优先顺序在 date_default_timezone_get() 页面中有说明。 支持的时区可参见 所支持的时区列表。

Note: 前四个配置选项目前仅用于 date_sunrise() 和 date_sunset()。

安装
资源类型
安装／配置


预定义常量

The DATE_ constants are defined since PHP 5.1.1 and they offer standard date representations, which can be used along with the date format functions (like date()).

Following constants exists since PHP 5.1.2 and specify a format returned by functions date_sunrise() and date_sunset().

SUNFUNCS_RET_TIMESTAMP (integer)
Timestamp
SUNFUNCS_RET_STRING (integer)
Hours:minutes (example: 08:02)
SUNFUNCS_RET_DOUBLE (integer)
Hours as floating point number (example 8.75)
资源类型
DateTime
日期/时间


预定义常量
DateTime::add
日期/时间
PHP Manual

The DateTime class

(PHP 5 >= 5.2.0, PHP 7)

简介

Representation of date and time.

类摘要

DateTime implements DateTimeInterface {
/* 常量 */
const string ATOM = "Y-m-d\TH:i:sP" ;
const string COOKIE = "l, d-M-Y H:i:s T" ;
const string ISO8601 = "Y-m-d\TH:i:sO" ;
const string RFC822 = "D, d M y H:i:s O" ;
const string RFC850 = "l, d-M-y H:i:s T" ;
const string RFC1036 = "D, d M y H:i:s O" ;
const string RFC1123 = "D, d M Y H:i:s O" ;
const string RFC2822 = "D, d M Y H:i:s O" ;
const string RFC3339 = "Y-m-d\TH:i:sP" ;
const string RSS = "D, d M Y H:i:s O" ;
const string W3C = "Y-m-d\TH:i:sP" ;
/* 方法 */
public __construct ([ string $time = "now" [, DateTimeZone $timezone = NULL ]] )
public DateTime add ( DateInterval $interval )
public static DateTime createFromFormat ( string $format , string $time [, DateTimeZone $timezone ] )
public static array getLastErrors ( void )
public DateTime modify ( string $modify )
public static DateTime __set_state ( array $array )
public DateTime setDate ( int $year , int $month , int $day )
public DateTime setISODate ( int $year , int $week [, int $day = 1 ] )
public DateTime setTime ( int $hour , int $minute [, int $second = 0 ] )
public DateTime setTimestamp ( int $unixtimestamp )
public DateTime setTimezone ( DateTimeZone $timezone )
public DateTime sub ( DateInterval $interval )
public DateInterval diff ( DateTimeInterface $datetime2 [, bool $absolute = false ] )
public string format ( string $format )
public int getOffset ( void )
public int getTimestamp ( void )
public DateTimeZone getTimezone ( void )
public __wakeup ( void )
}

预定义常量

DateTime::ATOM
DATE_ATOM
Atom (example: 2005-08-15T15:52:01+00:00)
DateTime::COOKIE
DATE_COOKIE
HTTP Cookies (example: Monday, 15-Aug-2005 15:52:01 UTC)
DateTime::ISO8601
DATE_ISO8601
ISO-8601 (example: 2005-08-15T15:52:01+0000)

Note: This format is not compatible with ISO-8601, but is left this way for backward compatibility reasons. Use DateTime::ATOM or DATE_ATOM for compatibility with ISO-8601 instead.

DateTime::RFC822
DATE_RFC822
RFC 822 (example: Mon, 15 Aug 05 15:52:01 +0000)
DateTime::RFC850
DATE_RFC850
RFC 850 (example: Monday, 15-Aug-05 15:52:01 UTC)
DateTime::RFC1036
DATE_RFC1036
RFC 1036 (example: Mon, 15 Aug 05 15:52:01 +0000)
DateTime::RFC1123
DATE_RFC1123
RFC 1123 (example: Mon, 15 Aug 2005 15:52:01 +0000)
DateTime::RFC2822
DATE_RFC2822
RFC 2822 (example: Mon, 15 Aug 2005 15:52:01 +0000)
DateTime::RFC3339
DATE_RFC3339
Same as DATE_ATOM (since PHP 5.1.3)
DateTime::RSS
DATE_RSS
RSS (example: Mon, 15 Aug 2005 15:52:01 +0000)
DateTime::W3C
DATE_W3C
World Wide Web Consortium (example: 2005-08-15T15:52:01+00:00)

更新日志

版本 | 说明
5.5.0 | The class now implements DateTimeInterface.
5.4.24 | The COOKIE constant was changed to reflect RFC 1036 using a four digit year rather than a two digit year (RFC 850) as prior versions.
5.2.2 | DateTime object comparison with the comparison operators changed to work as expected. Previously, all DateTime objects were considered equal (using ==).

Table of Contents

  • DateTime::add — Adds an amount of days, months, years, hours, minutes and seconds to a DateTime object
  • DateTime::__construct — Returns new DateTime object
  • DateTime::createFromFormat — Parses a time string according to a specified format
  • DateTime::getLastErrors — Returns the warnings and errors
  • DateTime::modify — Alters the timestamp
  • DateTime::__set_state — The __set_state handler
  • DateTime::setDate — Sets the date
  • DateTime::setISODate — Sets the ISO date
  • DateTime::setTime — Sets the time
  • DateTime::setTimestamp — Sets the date and time based on an Unix timestamp
  • DateTime::setTimezone — Sets the time zone for the DateTime object
  • DateTime::sub — Subtracts an amount of days, months, years, hours, minutes and seconds from a DateTime object
预定义常量
DateTime::add
日期/时间


Adds an amount of days, months, years, hours, minutes and seconds to a DateTime object

DateTime
DateTime::__construct
DateTime
PHP Manual

DateTime::add

date_add

(PHP 5 >= 5.3.0, PHP 7)

DateTime::add -- date_add — Adds an amount of days, months, years, hours, minutes and seconds to a DateTime object

说明

面向对象风格

public DateTime DateTime::add ( DateInterval $interval )

过程化风格

DateTime date_add ( DateTime $object , DateInterval $interval )

Adds the specified DateInterval object to the specified DateTime object.

参数

object

仅过程化风格：由 date_create() 返回的 DateTime 类型的对象。此函数会修改这个对象。

interval

A DateInterval object

返回值

返回被修改的 DateTime 对象， 或者在失败时返回 FALSE.

范例

Example #1 DateTime::add() example

面向对象风格

<?php
$date = new DateTime('2000-01-01');
$date->add(new DateInterval('P10D'));
echo $date->format('Y-m-d') . "\n";
?>

过程化风格

<?php
$date = date_create('2000-01-01');
date_add($date, date_interval_create_from_date_string('10 days'));
echo date_format($date, 'Y-m-d');
?>

以上例程会输出：

2000-01-11

Example #2 Further DateTime::add() examples

<?php
$date = new DateTime('2000-01-01');
$date->add(new DateInterval('PT10H30S'));
echo $date->format('Y-m-d H:i:s') . "\n";

$date = new DateTime('2000-01-01');
$date->add(new DateInterval('P7Y5M4DT4H3M2S'));
echo $date->format('Y-m-d H:i:s') . "\n";
?>

以上例程会输出：

2000-01-01 10:00:30
2007-06-05 04:03:02

Example #3 Beware when adding months

<?php
$date = new DateTime('2000-12-31');
$interval = new DateInterval('P1M');

$date->add($interval);
echo $date->format('Y-m-d') . "\n";

$date->add($interval);
echo $date->format('Y-m-d') . "\n";
?>

以上例程会输出：

2001-01-31
2001-03-03

注释

DateTime::modify() is an alternative when using PHP 5.2.

参见

  • DateTime::sub() - Subtracts an amount of days, months, years, hours, minutes and seconds from a DateTime object
  • DateTime::diff() - Returns the difference between two DateTime objects
  • DateTime::modify() - Alters the timestamp
DateTime
DateTime::__construct
DateTime


Returns new DateTime object

DateTime::add
DateTime::createFromFormat
DateTime
PHP Manual

DateTime::__construct

date_create

(PHP 5 >= 5.2.0, PHP 7)

DateTime::__construct -- date_create — Returns new DateTime object

说明

面向对象风格

public DateTime::__construct ([ string $time = "now" [, DateTimeZone $timezone = NULL ]] )

过程化风格

DateTime date_create ([ string $time = "now" [, DateTimeZone $timezone = NULL ]] )

Returns new DateTime object.

参数

time

日期/时间字符串。正确格式的说明详见 日期与时间格式。

Enter NULL here to obtain the current time when using the $timezone parameter.

timezone

A DateTimeZone object representing the timezone of $time.

If $timezone is omitted, the current timezone will be used.

Note:

The $timezone parameter and the current timezone are ignored when the $time parameter either is a UNIX timestamp (e.g. @946684800) or specifies a timezone (e.g. 2010-01-28T15:00:00+02:00).

返回值

Returns a new DateTime instance. 过程化风格在失败时返回 FALSE。

错误／异常

Emits Exception in case of an error.

更新日志

版本 | 说明
5.3.0 | If time contains an invalid date/time format, then an exception is now thrown. Previously an error was emitted.

范例

Example #1 DateTime::__construct() example

面向对象风格

<?php
try {
    $date = new DateTime('2000-01-01');
} catch (Exception $e) {
    echo $e->getMessage();
    exit(1);
}

echo $date->format('Y-m-d');
?>

过程化风格

<?php
$date = date_create('2000-01-01');
if (!$date) {
    $e = date_get_last_errors();
    foreach ($e['errors'] as $error) {
        echo "$error\n";
    }
    exit(1);
}

echo date_format($date, 'Y-m-d');
?>

以上例程会输出：

2000-01-01

Example #2 Intricacies of DateTime::__construct()

<?php
// Specified date/time in your computer's time zone.
$date = new DateTime('2000-01-01');
echo $date->format('Y-m-d H:i:sP') . "\n";

// Specified date/time in the specified time zone.
$date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";

// Current date/time in your computer's time zone.
$date = new DateTime();
echo $date->format('Y-m-d H:i:sP') . "\n";

// Current date/time in the specified time zone.
$date = new DateTime(null, new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";

// Using a UNIX timestamp.  Notice the result is in the UTC time zone.
$date = new DateTime('@946684800');
echo $date->format('Y-m-d H:i:sP') . "\n";

// Non-existent values roll over.
$date = new DateTime('2000-02-30');
echo $date->format('Y-m-d H:i:sP') . "\n";
?>

以上例程的输出类似于：

2000-01-01 00:00:00-05:00
2000-01-01 00:00:00+12:00
2010-04-24 10:24:16-04:00
2010-04-25 02:24:16+12:00
2000-01-01 00:00:00+00:00
2000-03-01 00:00:00-05:00

参见

  • DateTime::createFromFormat() - Parses a time string according to a specified format
  • DateTimeZone::__construct() - 创建新的DateTimeZone对象
  • Date and Time Formats
  • date.timezone ini setting
  • date_default_timezone_set() - 设定用于一个脚本中所有日期时间函数的默认时区
  • DateTime::getLastErrors() - Returns the warnings and errors
  • checkdate() - 验证一个格里高里日期
DateTime::add
DateTime::createFromFormat
DateTime


Parses a time string according to a specified format

DateTime::__construct
DateTime::getLastErrors
DateTime
PHP Manual

DateTime::createFromFormat

date_create_from_format

(PHP 5 >= 5.3.0, PHP 7)

DateTime::createFromFormat -- date_create_from_format — Parses a time string according to a specified format

说明

面向对象风格

public static DateTime DateTime::createFromFormat ( string $format , string $time [, DateTimeZone $timezone ] )

过程化风格

DateTime date_create_from_format ( string $format , string $time [, DateTimeZone $timezone ] )

Returns a new DateTime object representing the date and time specified by the time string, which was formatted in the given format.

参数

format

The format that the passed in string should be in. See the formatting options below. In most cases, the same letters as for the date() can be used.

The following characters are recognized in the format parameter string
format character | Description | Example parsable values
Day --- ---
d and j | Day of the month, 2 digits with or without leading zeros | 01 to 31 or 1 to 31
D and l | A textual representation of a day | Mon through Sun or Sunday through Saturday
S | English ordinal suffix for the day of the month, 2 characters. It's ignored while processing. | st, nd, rd or th.
z | The day of the year (starting from 0) | 0 through 365
Month --- ---
F and M | A textual representation of a month, such as January or Sept | January through December or Jan through Dec
m and n | Numeric representation of a month, with or without leading zeros | 01 through 12 or 1 through 12
Year --- ---
Y | A full numeric representation of a year, 4 digits | Examples: 1999 or 2003
y | A two digit representation of a year (which is assumed to be in the range 1970-2069, inclusive) | Examples: 99 or 03 (which will be interpreted as 1999 and 2003, respectively)
Time --- ---
a and A | Ante meridiem and Post meridiem | am or pm
g and h | 12-hour format of an hour with or without leading zero | 1 through 12 or 01 through 12
G and H | 24-hour format of an hour with or without leading zeros | 0 through 23 or 00 through 23
i | Minutes with leading zeros | 00 to 59
s | Seconds, with leading zeros | 00 through 59
u | Microseconds (up to six digits) | Example: 45, 654321
Timezone --- ---
e, O, P and T | Timezone identifier, or difference to UTC in hours, or difference to UTC with colon between hours and minutes, or timezone abbreviation | Examples: UTC, GMT, Atlantic/Azores or +0200 or +02:00 or EST, MDT
Full Date/Time --- ---
U | Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT) | Example: 1292177455
Whitespace and Separators --- ---
(space) | One space or one tab | Example:
# One of the following separation symbol: ;, :, /, ., ,, -, ( or ) Example: /
;, :, /, ., ,, -, ( or ) | The specified character. | Example: -
? A random byte Example: ^ (Be aware that for UTF-8 characters you might need more than one ?. In this case, using * is probably what you want instead)
* Random bytes until the next separator or digit Example: * in Y-*-d with the string 2009-aWord-08 will match aWord
! Resets all fields (year, month, day, hour, minute, second, fraction and timzone information) to the Unix Epoch Without !, all fields will be set to the current date and time.
| Resets all fields (year, month, day, hour, minute, second, fraction and timzone information) to the Unix Epoch if they have not been parsed yet Y-m-d| will set the year, month and day to the information found in the string to parse, and sets the hour, minute and second to 0.
+ If this format specifier is present, trailing data in the string will not cause an error, but a warning instead Use DateTime::getLastErrors() to find out whether trailing data was present.

Unrecognized characters in the format string will cause the parsing to fail and an error message is appended to the returned structure. You can query error messages with DateTime::getLastErrors().

To include literal characters in format, you have to escape them with a backslash (\).

If format does not contain the character ! then portions of the generated time which are not specified in format will be set to the current system time.

If format contains the character !, then portions of the generated time not provided in format, as well as values to the left-hand side of the !, will be set to corresponding values from the Unix epoch.

The Unix epoch is 1970-01-01 00:00:00 UTC.

time

String representing the time.

timezone

A DateTimeZone object representing the desired time zone.

If timezone is omitted and time contains no timezone, the current timezone will be used.

Note:

The timezone parameter and the current timezone are ignored when the time parameter either contains a UNIX timestamp (e.g. 946684800) or specifies a timezone (e.g. 2010-01-28T15:00:00+02:00).

返回值

Returns a new DateTime instance 或者在失败时返回 FALSE.

更新日志

版本 | 说明
5.3.9 | The + format specifier has been added.

范例

Example #1 DateTime::createFromFormat() example

面向对象风格

<?php
$date = DateTime::createFromFormat('j-M-Y', '15-Feb-2009');
echo $date->format('Y-m-d');
?>

过程化风格

<?php
$date = date_create_from_format('j-M-Y', '15-Feb-2009');
echo date_format($date, 'Y-m-d');
?>

以上例程会输出：

2009-02-15

Example #2 Intricacies of DateTime::createFromFormat()

<?php
echo 'Current time: ' . date('Y-m-d H:i:s') . "\n";

$format = 'Y-m-d';
$date = DateTime::createFromFormat($format, '2009-02-15');
echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";

$format = 'Y-m-d H:i:s';
$date = DateTime::createFromFormat($format, '2009-02-15 15:16:17');
echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";

$format = 'Y-m-!d H:i:s';
$date = DateTime::createFromFormat($format, '2009-02-15 15:16:17');
echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";

$format = '!d';
$date = DateTime::createFromFormat($format, '15');
echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n";
?>

以上例程的输出类似于：

Current time: 2010-04-23 10:29:35
Format: Y-m-d; 2009-02-15 10:29:35
Format: Y-m-d H:i:s; 2009-02-15 15:16:17
Format: Y-m-!d H:i:s; 1970-01-15 15:16:17
Format: !d; 1970-01-15 00:00:00

Example #3 Format string with literal characters

<?php
echo DateTime::createFromFormat('H\h i\m s\s','23h 15m 03s')->format('H:i:s');
?>

以上例程的输出类似于：

23:15:03

参见

  • DateTime::__construct() - Returns new DateTime object
  • DateTime::getLastErrors() - Returns the warnings and errors
  • checkdate() - 验证一个格里高里日期
  • strptime() - 解析由 strftime 生成的日期／时间
DateTime::__construct
DateTime::getLastErrors
DateTime


Returns the warnings and errors

DateTime::createFromFormat
DateTime::modify
DateTime
PHP Manual

DateTime::getLastErrors

date_get_last_errors

(PHP 5 >= 5.3.0, PHP 7)

DateTime::getLastErrors -- date_get_last_errors — Returns the warnings and errors

说明

面向对象风格

public static array DateTime::getLastErrors ( void )

过程化风格

array date_get_last_errors ( void )

Returns an array of warnings and errors found while parsing a date/time string.

参数

此函数没有参数。

返回值

Returns array containing info about warnings and errors.

范例

Example #1 DateTime::getLastErrors() example

面向对象风格

<?php
try {
    $date = new DateTime('asdfasdf');
} catch (Exception $e) {
    // For demonstration purposes only...
    print_r(DateTime::getLastErrors());

    // The real object oriented way to do this is
    // echo $e->getMessage();
}
?>

过程化风格

<?php
$date = date_create('asdfasdf');
print_r(date_get_last_errors());
?>

以上例程会输出：

Array
(
   [warning_count] => 1
   [warnings] => Array
       (
           [6] => Double timezone specification
       )

   [error_count] => 1
   [errors] => Array
       (
           [0] => The timezone could not be found in the database
       )

)

The indexes 6, and 0 in the example output refer to the character index in the string where the error occurred.

DateTime::createFromFormat
DateTime::modify
DateTime


Alters the timestamp

DateTime::getLastErrors
DateTime::__set_state
DateTime
PHP Manual

DateTime::modify

date_modify

(PHP 5 >= 5.2.0, PHP 7)

DateTime::modify -- date_modify — Alters the timestamp

说明

面向对象风格

public DateTime DateTime::modify ( string $modify )

过程化风格

DateTime date_modify ( DateTime $object , string $modify )

Alter the timestamp of a DateTime object by incrementing or decrementing in a format accepted by strtotime().

参数

object

仅过程化风格：由 date_create() 返回的 DateTime 类型的对象。此函数会修改这个对象。

modify

日期/时间字符串。正确格式的说明详见 日期与时间格式。

返回值

返回被修改的 DateTime 对象， 或者在失败时返回 FALSE.

更新日志

版本 | 说明
5.3.6 | Absolute date/time statements now take effect. Previously, only relative parts were used.
5.3.0 | 将返回值从NULL改为 DateTime 类型。

范例

Example #1 DateTime::modify() example

面向对象风格

<?php
$date = new DateTime('2006-12-12');
$date->modify('+1 day');
echo $date->format('Y-m-d');
?>

过程化风格

<?php
$date = date_create('2006-12-12');
date_modify($date, '+1 day');
echo date_format($date, 'Y-m-d');
?>

以上例程会输出：

2006-12-13

Example #2 Beware when adding or subtracting months

<?php
$date = new DateTime('2000-12-31');

$date->modify('+1 month');
echo $date->format('Y-m-d') . "\n";

$date->modify('+1 month');
echo $date->format('Y-m-d') . "\n";
?>

以上例程会输出：

2001-01-31
2001-03-03

参见

  • strtotime() - 将任何字符串的日期时间描述解析为 Unix 时间戳
  • DateTime::add() - Adds an amount of days, months, years, hours, minutes and seconds to a DateTime object
  • DateTime::sub() - Subtracts an amount of days, months, years, hours, minutes and seconds from a DateTime object
  • DateTime::setDate() - Sets the date
  • DateTime::setISODate() - Sets the ISO date
  • DateTime::setTime() - Sets the time
  • DateTime::setTimestamp() - Sets the date and time based on an Unix timestamp
DateTime::getLastErrors
DateTime::__set_state
DateTime


The __set_state handler

DateTime::modify
DateTime::setDate
DateTime
PHP Manual

DateTime::__set_state

(PHP 5 >= 5.2.0, PHP 7)

DateTime::__set_state — The __set_state handler

说明

public static DateTime DateTime::__set_state ( array $array )

The __set_state() handler.

参数

array

Initialization array.

返回值

Returns a new instance of a DateTime object.

DateTime::modify
DateTime::setDate
DateTime


Sets the date

DateTime::__set_state
DateTime::setISODate
DateTime
PHP Manual

DateTime::setDate

date_date_set

(PHP 5 >= 5.2.0, PHP 7)

DateTime::setDate -- date_date_set — Sets the date

说明

面向对象风格

public DateTime DateTime::setDate ( int $year , int $month , int $day )

过程化风格

DateTime date_date_set ( DateTime $object , int $year , int $month , int $day )

Resets the current date of the DateTime object to a different date.

参数

object

仅过程化风格：由 date_create() 返回的 DateTime 类型的对象。此函数会修改这个对象。

year

Year of the date.

month

Month of the date.

day

Day of the date.

返回值

返回被修改的 DateTime 对象， 或者在失败时返回 FALSE.

更新日志

版本 | 说明
5.3.0 | 将返回值从NULL改为 DateTime 类型。

范例

Example #1 DateTime::setDate() example

面向对象风格

<?php
$date = new DateTime();
$date->setDate(2001, 2, 3);
echo $date->format('Y-m-d');
?>

过程化风格

<?php
$date = date_create();
date_date_set($date, 2001, 2, 3);
echo date_format($date, 'Y-m-d');
?>

以上例程会输出：

2001-02-03

Example #2 Values exceeding ranges are added to their parent values

<?php
$date = new DateTime();

$date->setDate(2001, 2, 28);
echo $date->format('Y-m-d') . "\n";

$date->setDate(2001, 2, 29);
echo $date->format('Y-m-d') . "\n";

$date->setDate(2001, 14, 3);
echo $date->format('Y-m-d') . "\n";
?>

以上例程会输出：

2001-02-28
2001-03-01
2002-02-03

参见

  • DateTime::setISODate() - Sets the ISO date
  • DateTime::setTime() - Sets the time
DateTime::__set_state
DateTime::setISODate
DateTime


Sets the ISO date

DateTime::setDate
DateTime::setTime
DateTime
PHP Manual

DateTime::setISODate

date_isodate_set

(PHP 5 >= 5.2.0, PHP 7)

DateTime::setISODate -- date_isodate_set — Sets the ISO date

说明

面向对象风格

public DateTime DateTime::setISODate ( int $year , int $week [, int $day = 1 ] )

过程化风格

DateTime date_isodate_set ( DateTime $object , int $year , int $week [, int $day = 1 ] )

Set a date according to the ISO 8601 standard - using weeks and day offsets rather than specific dates.

参数

object

仅过程化风格：由 date_create() 返回的 DateTime 类型的对象。此函数会修改这个对象。

year

Year of the date.

week

Week of the date.

day

Offset from the first day of the week.

返回值

返回被修改的 DateTime 对象， 或者在失败时返回 FALSE.

更新日志

版本 | 说明
5.3.0 | 将返回值从NULL改为 DateTime 类型。

范例

Example #1 DateTime::setISODate() example

面向对象风格

<?php
$date = new DateTime();

$date->setISODate(2008, 2);
echo $date->format('Y-m-d') . "\n";

$date->setISODate(2008, 2, 7);
echo $date->format('Y-m-d') . "\n";
?>

过程化风格

<?php
$date = date_create();

date_isodate_set($date, 2008, 2);
echo date_format($date, 'Y-m-d') . "\n";

date_isodate_set($date, 2008, 2, 7);
echo date_format($date, 'Y-m-d') . "\n";
?>

以上例程会输出：

2008-01-07
2008-01-13

Example #2 Values exceeding ranges are added to their parent values

<?php
$date = new DateTime();

$date->setISODate(2008, 2, 7);
echo $date->format('Y-m-d') . "\n";

$date->setISODate(2008, 2, 8);
echo $date->format('Y-m-d') . "\n";

$date->setISODate(2008, 53, 7);
echo $date->format('Y-m-d') . "\n";
?>

以上例程会输出：

2008-01-13
2008-01-14
2009-01-04

Example #3 Finding the month a week is in

<?php
$date = new DateTime();
$date->setISODate(2008, 14);
echo $date->format('n');
?>

以上例程会输出：

3

参见

  • DateTime::setDate() - Sets the date
  • DateTime::setTime() - Sets the time
DateTime::setDate
DateTime::setTime
DateTime


Sets the time

DateTime::setISODate
DateTime::setTimestamp
DateTime
PHP Manual

DateTime::setTime

date_time_set

(PHP 5 >= 5.2.0, PHP 7)

DateTime::setTime -- date_time_set — Sets the time

说明

面向对象风格

public DateTime DateTime::setTime ( int $hour , int $minute [, int $second = 0 ] )

过程化风格

DateTime date_time_set ( DateTime $object , int $hour , int $minute [, int $second = 0 ] )

Resets the current time of the DateTime object to a different time.

参数

object

仅过程化风格：由 date_create() 返回的 DateTime 类型的对象。此函数会修改这个对象。

hour

Hour of the time.

minute

Minute of the time.

second

Second of the time.

返回值

返回被修改的 DateTime 对象， 或者在失败时返回 FALSE.

更新日志

版本 | 说明
5.3.0 | 将返回值从NULL改为 DateTime 类型。

范例

Example #1 DateTime::setTime() example

面向对象风格

<?php
$date = new DateTime('2001-01-01');

$date->setTime(14, 55);
echo $date->format('Y-m-d H:i:s') . "\n";

$date->setTime(14, 55, 24);
echo $date->format('Y-m-d H:i:s') . "\n";
?>

过程化风格

<?php
$date = date_create('2001-01-01');

date_time_set($date, 14, 55);
echo date_format($date, 'Y-m-d H:i:s') . "\n";

date_time_set($date, 14, 55, 24);
echo date_format($date, 'Y-m-d H:i:s') . "\n";
?>

以上例程的输出类似于：

2001-01-01 14:55:00
2001-01-01 14:55:24

Example #2 Values exceeding ranges are added to their parent values

<?php
$date = new DateTime('2001-01-01');

$date->setTime(14, 55, 24);
echo $date->format('Y-m-d H:i:s') . "\n";

$date->setTime(14, 55, 65);
echo $date->format('Y-m-d H:i:s') . "\n";

$date->setTime(14, 65, 24);
echo $date->format('Y-m-d H:i:s') . "\n";

$date->setTime(25, 55, 24);
echo $date->format('Y-m-d H:i:s') . "\n";
?>

以上例程会输出：

2001-01-01 14:55:24
2001-01-01 14:56:05
2001-01-01 15:05:24
2001-01-02 01:55:24

参见

  • DateTime::setDate() - Sets the date
  • DateTime::setISODate() - Sets the ISO date
DateTime::setISODate
DateTime::setTimestamp
DateTime


Sets the date and time based on an Unix timestamp

DateTime::setTime
DateTime::setTimezone
DateTime
PHP Manual

DateTime::setTimestamp

date_timestamp_set

(PHP 5 >= 5.3.0, PHP 7)

DateTime::setTimestamp -- date_timestamp_set — Sets the date and time based on an Unix timestamp

说明

面向对象风格

public DateTime DateTime::setTimestamp ( int $unixtimestamp )

过程化风格

DateTime date_timestamp_set ( DateTime $object , int $unixtimestamp )

Sets the date and time based on an Unix timestamp.

参数

object

仅过程化风格：由 date_create() 返回的 DateTime 类型的对象。此函数会修改这个对象。

unixtimestamp

Unix timestamp representing the date.

返回值

返回被修改的 DateTime 对象， 或者在失败时返回 FALSE.

范例

Example #1 DateTime::setTimestamp() example

面向对象风格

<?php
$date = new DateTime();
echo $date->format('U = Y-m-d H:i:s') . "\n";

$date->setTimestamp(1171502725);
echo $date->format('U = Y-m-d H:i:s') . "\n";
?>

过程化风格

<?php
$date = date_create();
echo date_format($date, 'U = Y-m-d H:i:s') . "\n";

date_timestamp_set($date, 1171502725);
echo date_format($date, 'U = Y-m-d H:i:s') . "\n";
?>

以上例程的输出类似于：

1272508903 = 2010-04-28 22:41:43
1171502725 = 2007-02-14 20:25:25

注释

Using the Unix timestamp format to construct a new DateTime object is an alternative when using PHP 5.2, as shown in the example below.

Example #2 DateTime::setTimestamp() alternative in PHP 5.2

<?php
$ts = 1171502725;
$date = new DateTime("@$ts");
echo $date->format('U = Y-m-d H:i:s') . "\n";
?>

以上例程的输出类似于：

1171502725 = 2007-02-14 20:25:25

参见

  • DateTime::getTimestamp() - Gets the Unix timestamp
DateTime::setTime
DateTime::setTimezone
DateTime


Sets the time zone for the DateTime object

DateTime::setTimestamp
DateTime::sub
DateTime
PHP Manual

DateTime::setTimezone

date_timezone_set

(PHP 5 >= 5.2.0, PHP 7)

DateTime::setTimezone -- date_timezone_set — Sets the time zone for the DateTime object

说明

面向对象风格

public DateTime DateTime::setTimezone ( DateTimeZone $timezone )

过程化风格

DateTime date_timezone_set ( DateTime $object , DateTimeZone $timezone )

Sets a new timezone for a DateTime object.

参数

object

仅过程化风格：由 date_create() 返回的 DateTime 类型的对象。此函数会修改这个对象。

timezone

A DateTimeZone object representing the desired time zone.

返回值

返回被修改的 DateTime 对象， 或者在失败时返回 FALSE.

更新日志

版本 | 说明
5.3.0 | 将返回值从NULL改为 DateTime 类型。

范例

Example #1 DateTime::setTimeZone() example

面向对象风格

<?php
$date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";

$date->setTimezone(new DateTimeZone('Pacific/Chatham'));
echo $date->format('Y-m-d H:i:sP') . "\n";
?>

过程化风格

<?php
$date = date_create('2000-01-01', timezone_open('Pacific/Nauru'));
echo date_format($date, 'Y-m-d H:i:sP') . "\n";

date_timezone_set($date, timezone_open('Pacific/Chatham'));
echo date_format($date, 'Y-m-d H:i:sP') . "\n";
?>

以上例程会输出：

2000-01-01 00:00:00+12:00
2000-01-01 01:45:00+13:45

参见

  • DateTime::getTimezone() - Return time zone relative to given DateTime
  • DateTimeZone::__construct() - 创建新的DateTimeZone对象
DateTime::setTimestamp
DateTime::sub
DateTime


Subtracts an amount of days, months, years, hours, minutes and seconds from a DateTime object

DateTime::setTimezone
DateTimeImmutable
DateTime
PHP Manual

DateTime::sub

date_sub

(PHP 5 >= 5.3.0, PHP 7)

DateTime::sub -- date_sub — Subtracts an amount of days, months, years, hours, minutes and seconds from a DateTime object

说明

面向对象风格

public DateTime DateTime::sub ( DateInterval $interval )

过程化风格

DateTime date_sub ( DateTime $object , DateInterval $interval )

Subtracts the specified DateInterval object from the specified DateTime object.

参数

object

仅过程化风格：由 date_create() 返回的 DateTime 类型的对象。此函数会修改这个对象。

interval

A DateInterval object

返回值

返回被修改的 DateTime 对象， 或者在失败时返回 FALSE.

范例

Example #1 DateTime::sub() example

面向对象风格

<?php
$date = new DateTime('2000-01-20');
$date->sub(new DateInterval('P10D'));
echo $date->format('Y-m-d') . "\n";
?>

过程化风格

<?php
$date = date_create('2000-01-20');
date_sub($date, date_interval_create_from_date_string('10 days'));
echo date_format($date, 'Y-m-d');
?>

以上例程会输出：

2000-01-10

Example #2 Further DateTime::sub() examples

<?php
$date = new DateTime('2000-01-20');
$date->sub(new DateInterval('PT10H30S'));
echo $date->format('Y-m-d H:i:s') . "\n";

$date = new DateTime('2000-01-20');
$date->sub(new DateInterval('P7Y5M4DT4H3M2S'));
echo $date->format('Y-m-d H:i:s') . "\n";
?>

以上例程会输出：

2000-01-19 13:59:30
1992-08-15 19:56:58

Example #3 Beware when subtracting months

<?php
$date = new DateTime('2001-04-30');
$interval = new DateInterval('P1M');

$date->sub($interval);
echo $date->format('Y-m-d') . "\n";

$date->sub($interval);
echo $date->format('Y-m-d') . "\n";
?>

以上例程会输出：

2001-03-30
2001-03-02

注释

DateTime::modify() is an alternative when using PHP 5.2.

参见

  • DateTime::add() - Adds an amount of days, months, years, hours, minutes and seconds to a DateTime object
  • DateTime::diff() - Returns the difference between two DateTime objects
  • DateTime::modify() - Alters the timestamp
DateTime::setTimezone
DateTimeImmutable
DateTime


The DateTimeImmutable class

(PHP 5 >= 5.5.0, PHP 7)

简介

This class behaves the same as DateTime except it never modifies itself but returns a new object instead.

类摘要

DateTimeImmutable implements DateTimeInterface {
/* 方法 */
public __construct ([ string $time = "now" [, DateTimeZone $timezone = NULL ]] )
public DateTimeImmutable add ( DateInterval $interval )
public static DateTimeImmutable createFromFormat ( string $format , string $time [, DateTimeZone $timezone ] )
public static DateTimeImmutable createFromMutable ( DateTime $datetime )
public static array getLastErrors ( void )
public DateTimeImmutable modify ( string $modify )
public static DateTimeImmutable __set_state ( array $array )
public DateTimeImmutable setDate ( int $year , int $month , int $day )
public DateTimeImmutable setISODate ( int $year , int $week [, int $day = 1 ] )
public DateTimeImmutable setTime ( int $hour , int $minute [, int $second = 0 ] )
public DateTimeImmutable setTimestamp ( int $unixtimestamp )
public DateTimeImmutable setTimezone ( DateTimeZone $timezone )
public DateTimeImmutable sub ( DateInterval $interval )
public DateInterval diff ( DateTimeInterface $datetime2 [, bool $absolute = false ] )
public string format ( string $format )
public int getOffset ( void )
public int getTimestamp ( void )
public DateTimeZone getTimezone ( void )
public __wakeup ( void )
}

Table of Contents

  • DateTimeImmutable::add — Adds an amount of days, months, years, hours, minutes and seconds
  • DateTimeImmutable::__construct — Returns new DateTimeImmutable object
  • DateTimeImmutable::createFromFormat — Returns new DateTimeImmutable object formatted according to the specified format
  • DateTimeImmutable::createFromMutable — Returns new DateTimeImmutable object encapsulating the given DateTime object
  • DateTimeImmutable::getLastErrors — Returns the warnings and errors
  • DateTimeImmutable::modify — Creates a new object with modified timestamp
  • DateTimeImmutable::__set_state — The __set_state handler
  • DateTimeImmutable::setDate — Sets the date
  • DateTimeImmutable::setISODate — Sets the ISO date
  • DateTimeImmutable::setTime — Sets the time
  • DateTimeImmutable::setTimestamp — Sets the date and time based on an Unix timestamp
  • DateTimeImmutable::setTimezone — Sets the time zone
  • DateTimeImmutable::sub — Subtracts an amount of days, months, years, hours, minutes and seconds
DateTime::sub
DateTimeImmutable::add
日期/时间


Adds an amount of days, months, years, hours, minutes and seconds

DateTimeImmutable
DateTimeImmutable::__construct
DateTimeImmutable
PHP Manual

DateTimeImmutable::add

(PHP 5 >= 5.5.0, PHP 7)

DateTimeImmutable::add — Adds an amount of days, months, years, hours, minutes and seconds

说明

public DateTimeImmutable DateTimeImmutable::add ( DateInterval $interval )

Like DateTime::add() but works with DateTimeImmutable.

DateTimeImmutable
DateTimeImmutable::__construct
DateTimeImmutable


Returns new DateTimeImmutable object

DateTimeImmutable::add
DateTimeImmutable::createFromFormat
DateTimeImmutable
PHP Manual

DateTimeImmutable::__construct

date_create_immutable

(PHP 5 >= 5.5.0, PHP 7)

DateTimeImmutable::__construct -- date_create_immutable — Returns new DateTimeImmutable object

说明

面向对象风格

public DateTimeImmutable::__construct ([ string $time = "now" [, DateTimeZone $timezone = NULL ]] )

过程化风格

DateTimeImmutable date_create_immutable ([ string $time = "now" [, DateTimeZone $timezone = NULL ]] )

Like DateTime::__construct() but works with DateTimeImmutable.

DateTimeImmutable::add
DateTimeImmutable::createFromFormat
DateTimeImmutable


Returns new DateTimeImmutable object formatted according to the specified format

DateTimeImmutable::__construct
DateTimeImmutable::createFromMutable
DateTimeImmutable
PHP Manual

DateTimeImmutable::createFromFormat

date_create_immutable_from_format

(PHP 5 >= 5.5.0, PHP 7)

DateTimeImmutable::createFromFormat -- date_create_immutable_from_format — Returns new DateTimeImmutable object formatted according to the specified format

说明

面向对象风格

public static DateTimeImmutable DateTimeImmutable::createFromFormat ( string $format , string $time [, DateTimeZone $timezone ] )

过程化风格

DateTimeImmutable date_create_immutable_from_format ( string $format , string $time [, DateTimeZone $timezone ] )

Like DateTime::createFromFormat() but works with DateTimeImmutable.

DateTimeImmutable::__construct
DateTimeImmutable::createFromMutable
DateTimeImmutable


Returns new DateTimeImmutable object encapsulating the given DateTime object

DateTimeImmutable::createFromFormat
DateTimeImmutable::getLastErrors
DateTimeImmutable
PHP Manual

DateTimeImmutable::createFromMutable

(PHP 5 >= 5.6.0, PHP 7)

DateTimeImmutable::createFromMutable — Returns new DateTimeImmutable object encapsulating the given DateTime object

说明

public static DateTimeImmutable DateTimeImmutable::createFromMutable ( DateTime $datetime )

参数

datetime

The mutable DateTime object that you want to convert to an immutable version. This object is not modified, but instead a new DateTimeImmutable object is created containing the same date time and timezone information.

范例

Example #1 Creating an immutable date time object

<?php
$date = new DateTime("2014-06-20 11:45 Europe/London");

$immutable = DateTimeImmutable::createFromMutable( $date );
?>

返回值

Returns a new DateTimeImmutable instance.

DateTimeImmutable::createFromFormat
DateTimeImmutable::getLastErrors
DateTimeImmutable


Returns the warnings and errors

DateTimeImmutable::createFromMutable
DateTimeImmutable::modify
DateTimeImmutable
PHP Manual

DateTimeImmutable::getLastErrors

(PHP 5 >= 5.5.0, PHP 7)

DateTimeImmutable::getLastErrors — Returns the warnings and errors

说明

public static array DateTimeImmutable::getLastErrors ( void )

Like DateTime::getLastErrors() but works with DateTimeImmutable.

DateTimeImmutable::createFromMutable
DateTimeImmutable::modify
DateTimeImmutable


Creates a new object with modified timestamp

DateTimeImmutable::getLastErrors
DateTimeImmutable::__set_state
DateTimeImmutable
PHP Manual

DateTimeImmutable::modify

(PHP 5 >= 5.5.0, PHP 7)

DateTimeImmutable::modify — Creates a new object with modified timestamp

说明

public DateTimeImmutable DateTimeImmutable::modify ( string $modify )

Creates a new DateTimeImmutable object with modified timestamp. The original object is not modified.

参数

object

仅过程化风格：由 date_create() 返回的 DateTime 类型的对象。此函数会修改这个对象。

modify

日期/时间字符串。正确格式的说明详见 日期与时间格式。

返回值

Returns the newly created object 或者在失败时返回 FALSE.

DateTimeImmutable::getLastErrors
DateTimeImmutable::__set_state
DateTimeImmutable


The __set_state handler

DateTimeImmutable::modify
DateTimeImmutable::setDate
DateTimeImmutable
PHP Manual

DateTimeImmutable::__set_state

(PHP 5 >= 5.5.0, PHP 7)

DateTimeImmutable::__set_state — The __set_state handler

说明

public static DateTimeImmutable DateTimeImmutable::__set_state ( array $array )

Like DateTime::__set_state() but works with DateTimeImmutable.

DateTimeImmutable::modify
DateTimeImmutable::setDate
DateTimeImmutable


Sets the date

DateTimeImmutable::__set_state
DateTimeImmutable::setISODate
DateTimeImmutable
PHP Manual

DateTimeImmutable::setDate

(PHP 5 >= 5.5.0, PHP 7)

DateTimeImmutable::setDate — Sets the date

说明

public DateTimeImmutable DateTimeImmutable::setDate ( int $year , int $month , int $day )

Like DateTime::setDate() but works with DateTimeImmutable.

DateTimeImmutable::__set_state
DateTimeImmutable::setISODate
DateTimeImmutable


Sets the ISO date

DateTimeImmutable::setDate
DateTimeImmutable::setTime
DateTimeImmutable
PHP Manual

DateTimeImmutable::setISODate

(PHP 5 >= 5.5.0, PHP 7)

DateTimeImmutable::setISODate — Sets the ISO date

说明

public DateTimeImmutable DateTimeImmutable::setISODate ( int $year , int $week [, int $day = 1 ] )

Like DateTime::setISODate() but works with DateTimeImmutable.

DateTimeImmutable::setDate
DateTimeImmutable::setTime
DateTimeImmutable


Sets the time

DateTimeImmutable::setISODate
DateTimeImmutable::setTimestamp
DateTimeImmutable
PHP Manual

DateTimeImmutable::setTime

(PHP 5 >= 5.5.0, PHP 7)

DateTimeImmutable::setTime — Sets the time

说明

public DateTimeImmutable DateTimeImmutable::setTime ( int $hour , int $minute [, int $second = 0 ] )

Like DateTime::setTime() but works with DateTimeImmutable.

DateTimeImmutable::setISODate
DateTimeImmutable::setTimestamp
DateTimeImmutable


Sets the date and time based on an Unix timestamp

DateTimeImmutable::setTime
DateTimeImmutable::setTimezone
DateTimeImmutable
PHP Manual

DateTimeImmutable::setTimestamp

(PHP 5 >= 5.5.0, PHP 7)

DateTimeImmutable::setTimestamp — Sets the date and time based on an Unix timestamp

说明

public DateTimeImmutable DateTimeImmutable::setTimestamp ( int $unixtimestamp )

Like DateTime::setTimestamp() but works with DateTimeImmutable.

DateTimeImmutable::setTime
DateTimeImmutable::setTimezone
DateTimeImmutable


Sets the time zone

DateTimeImmutable::setTimestamp
DateTimeImmutable::sub
DateTimeImmutable
PHP Manual

DateTimeImmutable::setTimezone

(PHP 5 >= 5.5.0, PHP 7)

DateTimeImmutable::setTimezone — Sets the time zone

说明

public DateTimeImmutable DateTimeImmutable::setTimezone ( DateTimeZone $timezone )

Like DateTime::setTimezone() but works with DateTimeImmutable.

DateTimeImmutable::setTimestamp
DateTimeImmutable::sub
DateTimeImmutable


Subtracts an amount of days, months, years, hours, minutes and seconds

DateTimeImmutable::setTimezone
DateTimeInterface
DateTimeImmutable
PHP Manual

DateTimeImmutable::sub

(PHP 5 >= 5.5.0, PHP 7)

DateTimeImmutable::sub — Subtracts an amount of days, months, years, hours, minutes and seconds

说明

public DateTimeImmutable DateTimeImmutable::sub ( DateInterval $interval )

Like DateTime::sub() but works with DateTimeImmutable.

DateTimeImmutable::setTimezone
DateTimeInterface
DateTimeImmutable


The DateTimeInterface interface

(PHP 5 >= 5.5.0, PHP 7)

简介

DateTimeInterface is meant so that both DateTime and DateTimeImmutable can be type hinted for. It is not possible to implement this interface with userland classes.

类摘要

DateTimeInterface {
/* 方法 */
public DateInterval diff ( DateTimeInterface $datetime2 [, bool $absolute = false ] )
public string format ( string $format )
public int getOffset ( void )
public int getTimestamp ( void )
public DateTimeZone getTimezone ( void )
public __wakeup ( void )
}

更新日志

版本 | 说明
5.5.8 | Trying to implement DateTimeInterface raises a fatal error now. Formerly implementing the interface didn't raise an error, but the behavior was erroneous.

Table of Contents

  • DateTime::diff — Returns the difference between two DateTime objects
  • DateTime::format — Returns date formatted according to given format
  • DateTime::getOffset — Returns the timezone offset
  • DateTime::getTimestamp — Gets the Unix timestamp
  • DateTime::getTimezone — Return time zone relative to given DateTime
  • DateTime::__wakeup — The __wakeup handler
DateTimeImmutable::sub
DateTime::diff
日期/时间


Returns the difference between two DateTime objects

DateTimeInterface
DateTime::format
DateTimeInterface
PHP Manual

DateTime::diff

DateTimeImmutable::diff

DateTimeInterface::diff

date_diff

(PHP 5 >= 5.3.0, PHP 7)

DateTime::diff -- DateTimeImmutable::diff -- DateTimeInterface::diff -- date_diff — Returns the difference between two DateTime objects

说明

面向对象风格

public DateInterval DateTime::diff ( DateTimeInterface $datetime2 [, bool $absolute = false ] )
public DateInterval DateTimeImmutable::diff ( DateTimeInterface $datetime2 [, bool $absolute = false ] )
public DateInterval DateTimeInterface::diff ( DateTimeInterface $datetime2 [, bool $absolute = false ] )

过程化风格

DateInterval date_diff ( DateTimeInterface $datetime1 , DateTimeInterface $datetime2 [, bool $absolute = false ] )

Returns the difference between two DateTimeInterface objects.

参数

datetime

The date to compare to.

absolute

Should the interval be forced to be positive?

返回值

The DateInterval object representing the difference between the two dates 或者在失败时返回 FALSE.

范例

Example #1 DateTime::diff() example

面向对象风格

<?php
$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');
?>

过程化风格

<?php
$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%a days');
?>

以上例程会输出：

+2 days

Example #2 DateTime object comparison

Note:

As of PHP 5.2.2, DateTime objects can be compared using comparison operators.

<?php
$date1 = new DateTime("now");
$date2 = new DateTime("tomorrow");

var_dump($date1 == $date2);
var_dump($date1 < $date2);
var_dump($date1 > $date2);
?>

以上例程会输出：

bool(false)
bool(true)
bool(false)

参见

  • DateInterval::format() - Formats the interval
  • DateTime::add() - Adds an amount of days, months, years, hours, minutes and seconds to a DateTime object
  • DateTime::sub() - Subtracts an amount of days, months, years, hours, minutes and seconds from a DateTime object
DateTimeInterface
DateTime::format
DateTimeInterface


Returns date formatted according to given format

DateTime::diff
DateTime::getOffset
DateTimeInterface
PHP Manual

DateTime::format

DateTimeImmutable::format

DateTimeInterface::format

date_format

(PHP 5 >= 5.2.0, PHP 7)

DateTime::format -- DateTimeImmutable::format -- DateTimeInterface::format -- date_format — Returns date formatted according to given format

说明

面向对象风格

public string DateTime::format ( string $format )
public string DateTimeImmutable::format ( string $format )
public string DateTimeInterface::format ( string $format )

过程化风格

string date_format ( DateTimeInterface $object , string $format )

Returns date formatted according to given format.

参数

object

仅为过程化风格：由 date_create() 返回的 DateTime 类型的对象。

format

Format accepted by date().

返回值

Returns the formatted date string on success 或者在失败时返回 FALSE.

范例

Example #1 DateTime::format() example

面向对象风格

<?php
$date = new DateTime('2000-01-01');
echo $date->format('Y-m-d H:i:s');
?>

过程化风格

<?php
$date = date_create('2000-01-01');
echo date_format($date, 'Y-m-d H:i:s');
?>

以上例程会输出：

2000-01-01 00:00:00

注释

This method does not use locales. All output is in English.

参见

  • date() - 格式化一个本地时间／日期
DateTime::diff
DateTime::getOffset
DateTimeInterface


Returns the timezone offset

DateTime::format
DateTime::getTimestamp
DateTimeInterface
PHP Manual

DateTime::getOffset

DateTimeImmutable::getOffset

DateTimeInterface::getOffset

date_offset_get

(PHP 5 >= 5.2.0, PHP 7)

DateTime::getOffset -- DateTimeImmutable::getOffset -- DateTimeInterface::getOffset -- date_offset_get — Returns the timezone offset

说明

面向对象风格

public int DateTime::getOffset ( void )
public int DateTimeImmutable::getOffset ( void )
public int DateTimeInterface::getOffset ( void )

过程化风格

int date_offset_get ( DateTimeInterface $object )

Returns the timezone offset.

参数

object

仅为过程化风格：由 date_create() 返回的 DateTime 类型的对象。

返回值

Returns the timezone offset in seconds from UTC on success 或者在失败时返回 FALSE.

范例

Example #1 DateTime::getOffset() example

面向对象风格

<?php
$winter = new DateTime('2010-12-21', new DateTimeZone('America/New_York'));
$summer = new DateTime('2008-06-21', new DateTimeZone('America/New_York'));

echo $winter->getOffset() . "\n";
echo $summer->getOffset() . "\n";
?>

过程化风格

<?php
$winter = date_create('2010-12-21', timezone_open('America/New_York'));
$summer = date_create('2008-06-21', timezone_open('America/New_York'));

echo date_offset_get($winter) . "\n";
echo date_offset_get($summer) . "\n";
?>

以上例程会输出：

-18000
-14400

Note: -18000 = -5 hours, -14400 = -4 hours.

DateTime::format
DateTime::getTimestamp
DateTimeInterface


Gets the Unix timestamp

DateTime::getOffset
DateTime::getTimezone
DateTimeInterface
PHP Manual

DateTime::getTimestamp

DateTimeImmutable::getTimestamp

DateTimeInterface::getTimestamp

date_timestamp_get

(PHP 5 >= 5.3.0, PHP 7)

DateTime::getTimestamp -- DateTimeImmutable::getTimestamp -- DateTimeInterface::getTimestamp -- date_timestamp_get — Gets the Unix timestamp

说明

面向对象风格

public int DateTime::getTimestamp ( void )
public int DateTimeImmutable::getTimestamp ( void )
public int DateTimeInterface::getTimestamp ( void )

过程化风格

int date_timestamp_get ( DateTimeInterface $object )

Gets the Unix timestamp.

参数

此函数没有参数。

返回值

Returns the Unix timestamp representing the date.

范例

Example #1 DateTime::getTimestamp() example

面向对象风格

<?php
$date = new DateTime();
echo $date->getTimestamp();
?>

过程化风格

<?php
$date = date_create();
echo date_timestamp_get($date);
?>

以上例程的输出类似于：

1272509157

注释

Using U as the parameter to DateTime::format() is an alternative when using PHP 5.2.

参见

  • DateTime::setTimestamp() - Sets the date and time based on an Unix timestamp
  • DateTime::format() - Returns date formatted according to given format
DateTime::getOffset
DateTime::getTimezone
DateTimeInterface


Return time zone relative to given DateTime

DateTime::getTimestamp
DateTime::__wakeup
DateTimeInterface
PHP Manual

DateTime::getTimezone

DateTimeImmutable::getTimezone

DateTimeInterface::getTimezone

date_timezone_get

(PHP 5 >= 5.2.0, PHP 7)

DateTime::getTimezone -- DateTimeImmutable::getTimezone -- DateTimeInterface::getTimezone -- date_timezone_get — Return time zone relative to given DateTime

说明

面向对象风格

public DateTimeZone DateTime::getTimezone ( void )
public DateTimeZone DateTimeImmutable::getTimezone ( void )
public DateTimeZone DateTimeInterface::getTimezone ( void )

过程化风格

DateTimeZone date_timezone_get ( DateTimeInterface $object )

Return time zone relative to given DateTime.

参数

object

仅为过程化风格：由 date_create() 返回的 DateTime 类型的对象。

返回值

Returns a DateTimeZone object on success 或者在失败时返回 FALSE.

范例

Example #1 DateTime::getTimezone() example

面向对象风格

<?php
$date = new DateTime(null, new DateTimeZone('Europe/London'));
$tz = $date->getTimezone();
echo $tz->getName();
?>

过程化风格

<?php
$date = date_create(null, timezone_open('Europe/London'));
$tz = date_timezone_get($date);
echo timezone_name_get($tz);
?>

以上例程会输出：

Europe/London

参见

  • DateTime::setTimezone() - Sets the time zone for the DateTime object
DateTime::getTimestamp
DateTime::__wakeup
DateTimeInterface


The __wakeup handler

DateTime::getTimezone
DateTimeZone
DateTimeInterface
PHP Manual

DateTime::__wakeup

DateTimeImmutable::__wakeup

DateTimeInterface::__wakeup

(PHP 5 >= 5.2.0, PHP 7)

DateTime::__wakeup -- DateTimeImmutable::__wakeup -- DateTimeInterface::__wakeup — The __wakeup handler

说明

public DateTime::__wakeup ( void )
public DateTimeImmutable::__wakeup ( void )
public DateTimeInterface::__wakeup ( void )

The __wakeup() handler.

参数

此函数没有参数。

返回值

Initializes a DateTime object.

DateTime::getTimezone
DateTimeZone
DateTimeInterface


The DateTimeZone class

(PHP 5 >= 5.2.0, PHP 7)

简介

Representation of time zone.

类摘要

DateTimeZone {
/* 常量 */
const integer AFRICA = 1 ;
const integer AMERICA = 2 ;
const integer ANTARCTICA = 4 ;
const integer ARCTIC = 8 ;
const integer ASIA = 16 ;
const integer ATLANTIC = 32 ;
const integer AUSTRALIA = 64 ;
const integer EUROPE = 128 ;
const integer INDIAN = 256 ;
const integer PACIFIC = 512 ;
const integer UTC = 1024 ;
const integer ALL = 2047 ;
const integer ALL_WITH_BC = 4095 ;
const integer PER_COUNTRY = 4096 ;
/* 方法 */
public __construct ( string $timezone )
public array getLocation ( void )
public string getName ( void )
public int getOffset ( DateTime $datetime )
public array getTransitions ([ int $timestamp_begin [, int $timestamp_end ]] )
public static array listAbbreviations ( void )
public static array listIdentifiers ([ int $what = DateTimeZone::ALL [, string $country = NULL ]] )
}

预定义常量

DateTimeZone::AFRICA

Africa time zones.

DateTimeZone::AMERICA

America time zones.

DateTimeZone::ANTARCTICA

Antarctica time zones.

DateTimeZone::ARCTIC

Arctic time zones.

DateTimeZone::ASIA

Asia time zones.

DateTimeZone::ATLANTIC

Atlantic time zones.

DateTimeZone::AUSTRALIA

Australia time zones.

DateTimeZone::EUROPE

Europe time zones.

DateTimeZone::INDIAN

Indian time zones.

DateTimeZone::PACIFIC

Pacific time zones.

DateTimeZone::UTC

UTC time zones.

DateTimeZone::ALL

All time zones.

DateTimeZone::ALL_WITH_BC

All time zones including backwards compatible.

DateTimeZone::PER_COUNTRY

Time zones per country.

Table of Contents

  • DateTimeZone::__construct — 创建新的DateTimeZone对象
  • DateTimeZone::getLocation — 返回与时区相关的定位信息。
  • DateTimeZone::getName — 返回时区名称。
  • DateTimeZone::getOffset — 返回相对于 GMT 的时差。
  • DateTimeZone::getTransitions — Returns all transitions for the timezone
  • DateTimeZone::listAbbreviations — 返回一个包含 dst (夏令时)，时差和时区信息的关联数组。
  • DateTimeZone::listIdentifiers — 返回一个包含了所有时区标示符的索引数组。
DateTime::__wakeup
DateTimeZone::__construct
日期/时间


创建新的DateTimeZone对象

DateTimeZone
DateTimeZone::getLocation
DateTimeZone
PHP Manual

DateTimeZone::__construct

timezone_open

(PHP 5 >= 5.2.0, PHP 7)

DateTimeZone::__construct -- timezone_open — 创建新的DateTimeZone对象

说明

面向对象风格

public DateTimeZone::__construct ( string $timezone )

过程化风格

DateTimeZone timezone_open ( string $timezone )

创建新的DateTimeZone对象.

参数

timezone

所支持的 timezone names之一.

返回值

成功时返回 DateTimeZone对象. 过程化风格在失败时返回 FALSE。

错误／异常

如果提供的时区无效，此方法将抛出 Exception异常.

范例

Example #1 Catching errors when instantiating DateTimeZone

<?php
// Error handling by catching exceptions
$timezones = array('Europe/London', 'Mars/Phobos', 'Jupiter/Europa');

foreach ($timezones as $tz) {
    try {
        $mars = new DateTimeZone($tz);
    } catch(Exception $e) {
        echo $e->getMessage() . '<br />';
    }
}
?>

以上例程会输出：

DateTimeZone::__construct() [datetimezone.--construct]: Unknown or bad timezone (Mars/Phobos)
DateTimeZone::__construct() [datetimezone.--construct]: Unknown or bad timezone (Jupiter/Europa)

DateTimeZone
DateTimeZone::getLocation
DateTimeZone


返回与时区相关的定位信息。

DateTimeZone::__construct
DateTimeZone::getName
DateTimeZone
PHP Manual

DateTimeZone::getLocation

timezone_location_get

(PHP 5 >= 5.3.0, PHP 7)

DateTimeZone::getLocation -- timezone_location_get — 返回与时区相关的定位信息。

说明

面向对象风格

public array DateTimeZone::getLocation ( void )

过程化风格

array timezone_location_get ( DateTimeZone $object )

返回与时区相关的定位信息，包括国家代码，纬度/经度和解释。

参数

object

仅过程化风格：由 timezone_open() 返回的 DateTimeZone 对象。

返回值

数组，包含与时区相关的定位信息。

范例

Example #1 DateTimeZone::getLocation() 函数的范例：

<?php
$tz = new DateTimeZone("Europe/Prague");
print_r($tz->getLocation());
print_r(timezone_location_get($tz));
?>

以上例程会输出：

Array
(
    [country_code] => CZ
    [latitude] => 50.08333
    [longitude] => 14.43333
    [comments] =>
)
Array
(
    [country_code] => CZ
    [latitude] => 50.08333
    [longitude] => 14.43333
    [comments] =>
)

DateTimeZone::__construct
DateTimeZone::getName
DateTimeZone


返回时区名称。

DateTimeZone::getLocation
DateTimeZone::getOffset
DateTimeZone
PHP Manual

DateTimeZone::getName

timezone_name_get

(PHP 5 >= 5.2.0, PHP 7)

DateTimeZone::getName -- timezone_name_get — 返回时区名称。

说明

面向对象风格

public string DateTimeZone::getName ( void )

过程化风格

string timezone_name_get ( DateTimeZone $object )

返回时区名称。

参数

object

DateTimeZone对象。

返回值

时区名称列表之一。

DateTimeZone::getLocation
DateTimeZone::getOffset
DateTimeZone


返回相对于 GMT 的时差。

DateTimeZone::getName
DateTimeZone::getTransitions
DateTimeZone
PHP Manual

DateTimeZone::getOffset

timezone_offset_get

(PHP 5 >= 5.2.0, PHP 7)

DateTimeZone::getOffset -- timezone_offset_get — 返回相对于 GMT 的时差。

说明

面向对象风格

public int DateTimeZone::getOffset ( DateTime $datetime )

过程化风格

int timezone_offset_get ( DateTimeZone $object , DateTime $datetime )

该函数返回 datetime日期 相对于 GMT 的时差。 GMT 时差是通过 DateTimeZone 对象的时区信息计算出来的。

参数

object

仅过程化风格：由 timezone_open() 返回的 DateTimeZone 对象。

datetime

用来计算时差的日期对象。

返回值

成功时返回精确到秒的时差， 或者在失败时返回 FALSE。

范例

Example #1 DateTimeZone::getOffset() 例子

<?php
// Create two timezone objects, one for Taipei (Taiwan) and one for
// Tokyo (Japan)
$dateTimeZoneTaipei = new DateTimeZone("Asia/Taipei");
$dateTimeZoneJapan = new DateTimeZone("Asia/Tokyo");

// Create two DateTime objects that will contain the same Unix timestamp, but
// have different timezones attached to them.
$dateTimeTaipei = new DateTime("now", $dateTimeZoneTaipei);
$dateTimeJapan = new DateTime("now", $dateTimeZoneJapan);

// Calculate the GMT offset for the date/time contained in the $dateTimeTaipei
// object, but using the timezone rules as defined for Tokyo
// ($dateTimeZoneJapan).
$timeOffset = $dateTimeZoneJapan->getOffset($dateTimeTaipei);

// Should show int(32400) (for dates after Sat Sep 8 01:00:00 1951 JST).
var_dump($timeOffset);
?>

DateTimeZone::getName
DateTimeZone::getTransitions
DateTimeZone


Returns all transitions for the timezone

DateTimeZone::getOffset
DateTimeZone::listAbbreviations
DateTimeZone
PHP Manual

DateTimeZone::getTransitions

timezone_transitions_get

(PHP 5 >= 5.2.0, PHP 7)

DateTimeZone::getTransitions -- timezone_transitions_get — Returns all transitions for the timezone

说明

面向对象风格

public array DateTimeZone::getTransitions ([ int $timestamp_begin [, int $timestamp_end ]] )

过程化风格

array timezone_transitions_get ( DateTimeZone $object [, int $timestamp_begin [, int $timestamp_end ]] )

参数

object

仅过程化风格：由 timezone_open() 返回的 DateTimeZone 对象。

timestamp_begin

Begin timestamp.

timestamp_end

End timestamp.

返回值

Returns numerically indexed array containing associative array with all transitions on success 或者在失败时返回 FALSE.

更新日志

版本 | 说明
5.3.0 | The optional timestamp_begin and timestamp_end were added.

范例

Example #1 A timezone_transitions_get() example

<?php
$timezone = new DateTimeZone("Europe/London");
$transitions = $timezone->getTransitions();
print_r(array_slice($transitions, 0, 3));
?>

以上例程的输出类似于：

Array
(
    [0] => Array
        (
            [ts] => -9223372036854775808
            [time] => -292277022657-01-27T08:29:52+0000
            [offset] => 3600
            [isdst] => 1
            [abbr] => BST
        )

    [1] => Array
        (
            [ts] => -1691964000
            [time] => 1916-05-21T02:00:00+0000
            [offset] => 3600
            [isdst] => 1
            [abbr] => BST
        )

    [2] => Array
        (
            [ts] => -1680472800
            [time] => 1916-10-01T02:00:00+0000
            [offset] => 0
            [isdst] =>
            [abbr] => GMT
        )

)

DateTimeZone::getOffset
DateTimeZone::listAbbreviations
DateTimeZone


返回一个包含 dst (夏令时)，时差和时区信息的关联数组。

DateTimeZone::getTransitions
DateTimeZone::listIdentifiers
DateTimeZone
PHP Manual

DateTimeZone::listAbbreviations

timezone_abbreviations_list

(PHP 5 >= 5.2.0, PHP 7)

DateTimeZone::listAbbreviations -- timezone_abbreviations_list — 返回一个包含 dst (夏令时)，时差和时区信息的关联数组。

说明

面向对象风格

public static array DateTimeZone::listAbbreviations ( void )

过程化风格

array timezone_abbreviations_list ( void )

返回值

成功，返回数组， 或者在失败时返回 FALSE。

范例

Example #1 timezone_abbreviations_list() 函数的范例：

<?php
$timezone_abbreviations = DateTimeZone::listAbbreviations();
print_r($timezone_abbreviations["acst"]);
?>

以上例程的输出类似于：

Array
(
    [0] => Array
        (
            [dst] => 1
            [offset] => -14400
            [timezone_id] => America/Porto_Acre
        )

    [1] => Array
        (
            [dst] => 1
            [offset] => -14400
            [timezone_id] => America/Eirunepe
        )

    [2] => Array
        (
            [dst] => 1
            [offset] => -14400
            [timezone_id] => America/Rio_Branco
        )

    [3] => Array
        (
            [dst] => 1
            [offset] => -14400
            [timezone_id] => Brazil/Acre
        )

)

参见

  • timezone_identifiers_list() - 别名 DateTimeZone::listIdentifiers

DateTimeZone::getTransitions
DateTimeZone::listIdentifiers
DateTimeZone


返回一个包含了所有时区标示符的索引数组。

DateTimeZone::listAbbreviations
DateInterval
DateTimeZone
PHP Manual

DateTimeZone::listIdentifiers

timezone_identifiers_list

(PHP 5 >= 5.2.0, PHP 7)

DateTimeZone::listIdentifiers -- timezone_identifiers_list — 返回一个包含了所有时区标示符的索引数组。

说明

面向对象风格

public static array DateTimeZone::listIdentifiers ([ int $what = DateTimeZone::ALL [, string $country = NULL ]] )

过程化风格

array timezone_identifiers_list ([ int $what = DateTimeZone::ALL [, string $country = NULL ]] )

参数

what

DateTimeZone 类中的常量之一。

country

由两个字母组成，ISO 3166-1 兼容的国家代码。

Note: 只有当 what 被设置为DateTimeZone::PER_COUNTRY时,该选项才会被使用。

返回值

成功，返回数组，失败则返回FALSE.

更新日志

版本 | 说明
5.3.0 | 添加可选的 what 和 country 参数。

范例

Example #1 timezone_identifiers_list() 函数的范例：

<?php
$timezone_identifiers = DateTimeZone::listIdentifiers();
for ($i=0; $i < 5; $i++) {
    echo "$timezone_identifiers[$i]\n";
}
?>

以上例程的输出类似于：

Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara

参见

  • timezone_abbreviations_list() - 别名 DateTimeZone::listAbbreviations

DateTimeZone::listAbbreviations
DateInterval
DateTimeZone


The DateInterval class

(PHP 5 >= 5.3.0, PHP 7)

简介

Represents a date interval.

A date interval stores either a fixed amount of time (in years, months, days, hours etc) or a relative time string in the format that DateTime's constructor supports.

类摘要

DateInterval {
/* 属性 */
public integer $y ;
public integer $m ;
public integer $d ;
public integer $h ;
public integer $i ;
public integer $s ;
public integer $invert ;
public mixed $days ;
/* 方法 */
public __construct ( string $interval_spec )
public static DateInterval createFromDateString ( string $time )
public string format ( string $format )
}

属性

y

Number of years.

m

Number of months.

d

Number of days.

h

Number of hours.

i

Number of minutes.

s

Number of seconds.

invert

Is 1 if the interval represents a negative time period and 0 otherwise. See DateInterval::format().

days

If the DateInterval object was created by DateTime::diff(), then this is the total number of days between the start and end dates. Otherwise, days will be FALSE.

Before PHP 5.4.20/5.5.4 instead of FALSE you will receive -99999 upon accessing the property.

Table of Contents

  • DateInterval::__construct — Creates a new DateInterval object
  • DateInterval::createFromDateString — Sets up a DateInterval from the relative parts of the string
  • DateInterval::format — Formats the interval
DateTimeZone::listIdentifiers
DateInterval::__construct
日期/时间


Creates a new DateInterval object

DateInterval
DateInterval::createFromDateString
DateInterval
PHP Manual

DateInterval::__construct

(PHP 5 >= 5.3.0, PHP 7)

DateInterval::__construct — Creates a new DateInterval object

说明

public DateInterval::__construct ( string $interval_spec )

Creates a new DateInterval object.

参数

interval_spec

An interval specification.

The format starts with the letter P, for "period." Each duration period is represented by an integer value followed by a period designator. If the duration contains time elements, that portion of the specification is preceded by the letter T.

interval_spec Period Designators
Period Designator | Description
Y | years
M | months
D | days
W | weeks. These get converted into days, so can not be combined with D.
H | hours
M | minutes
S | seconds

Here are some simple examples. Two days is P2D. Two seconds is PT2S. Six years and five minutes is P6YT5M.

Note:

The unit types must be entered from the largest scale unit on the left to the smallest scale unit on the right. So years before months, months before days, days before minutes, etc. Thus one year and four days must be represented as P1Y4D, not P4D1Y.

The specification can also be represented as a date time. A sample of one year and four days would be P0001-00-04T00:00:00. But the values in this format can not exceed a given period's roll-over-point (e.g. 25 hours is invalid).

These formats are based on the » ISO 8601 duration specification.

错误／异常

Throws an Exception when the interval_spec cannot be parsed as an interval.

范例

Example #1 DateInterval example

<?php

$interval = new DateInterval('P2Y4DT6H8M');
var_dump($interval);

?>

以上例程会输出：

object(DateInterval)#1 (8) {
  ["y"]=>
  int(2)
  ["m"]=>
  int(0)
  ["d"]=>
  int(4)
  ["h"]=>
  int(6)
  ["i"]=>
  int(8)
  ["s"]=>
  int(0)
  ["invert"]=>
  int(0)
  ["days"]=>
  bool(false)
}

参见

  • DateInterval::format() - Formats the interval
  • DateTime::add() - Adds an amount of days, months, years, hours, minutes and seconds to a DateTime object
  • DateTime::sub() - Subtracts an amount of days, months, years, hours, minutes and seconds from a DateTime object
  • DateTime::diff() - Returns the difference between two DateTime objects

DateInterval
DateInterval::createFromDateString
DateInterval


Sets up a DateInterval from the relative parts of the string

DateInterval::__construct
DateInterval::format
DateInterval
PHP Manual

DateInterval::createFromDateString

(PHP 5 >= 5.3.0, PHP 7)

DateInterval::createFromDateString — Sets up a DateInterval from the relative parts of the string

说明

public static DateInterval DateInterval::createFromDateString ( string $time )

Uses the normal date parsers and sets up a DateInterval from the relative parts of the parsed string.

参数

time

A date with relative parts. Specifically, the relative formats supported by the parser used for strtotime() and DateTime will be used to construct the DateInterval.

范例

Example #1 Parsing valid date intervals

<?php
// Each set of intervals is equal.
$i = new DateInterval('P1D');
$i = DateInterval::createFromDateString('1 day');

$i = new DateInterval('P2W');
$i = DateInterval::createFromDateString('2 weeks');

$i = new DateInterval('P3M');
$i = DateInterval::createFromDateString('3 months');

$i = new DateInterval('P4Y');
$i = DateInterval::createFromDateString('4 years');

$i = new DateInterval('P1Y1D');
$i = DateInterval::createFromDateString('1 year + 1 day');

$i = new DateInterval('P1DT12H');
$i = DateInterval::createFromDateString('1 day + 12 hours');

$i = new DateInterval('PT3600S');
$i = DateInterval::createFromDateString('3600 seconds');
?>

返回值

Returns a new DateInterval instance.

DateInterval::__construct
DateInterval::format
DateInterval


Formats the interval

DateInterval::createFromDateString
DatePeriod
DateInterval
PHP Manual

DateInterval::format

(PHP 5 >= 5.3.0, PHP 7)

DateInterval::format — Formats the interval

说明

public string DateInterval::format ( string $format )

Formats the interval.

参数

format

The following characters are recognized in the format parameter string. Each format character must be prefixed by a percent sign (%).
format character | Description | Example values
% Literal % %
Y | Years, numeric, at least 2 digits with leading 0 | 01, 03
y | Years, numeric | 1, 3
M | Months, numeric, at least 2 digits with leading 0 | 01, 03, 12
m | Months, numeric | 1, 3, 12
D | Days, numeric, at least 2 digits with leading 0 | 01, 03, 31
d | Days, numeric | 1, 3, 31
a | Total number of days as a result of a DateTime::diff() or (unknown) otherwise | 4, 18, 8123
H | Hours, numeric, at least 2 digits with leading 0 | 01, 03, 23
h | Hours, numeric | 1, 3, 23
I | Minutes, numeric, at least 2 digits with leading 0 | 01, 03, 59
i | Minutes, numeric | 1, 3, 59
S | Seconds, numeric, at least 2 digits with leading 0 | 01, 03, 57
s | Seconds, numeric | 1, 3, 57
R Sign "-" when negative, "+" when positive -, +
r Sign "-" when negative, empty when positive -,

返回值

Returns the formatted interval.

注释

Note:

The DateInterval::format() method does not recalculate carry over points in time strings nor in date segments. This is expected because it is not possible to overflow values like "32 days" which could be interpreted as anything from "1 month and 4 days" to "1 month and 1 day".

范例

Example #1 DateInterval example

<?php

$interval = new DateInterval('P2Y4DT6H8M');
echo $interval->format('%d days');

?>

以上例程会输出：

4 days

Example #2 DateInterval and carry over points

<?php

$interval = new DateInterval('P32D');
echo $interval->format('%d days');

?>

以上例程会输出：

32 days

Example #3 DateInterval and DateTime::diff() with the %a and %d modifiers

<?php

$january = new DateTime('2010-01-01');
$february = new DateTime('2010-02-01');
$interval = $february->diff($january);

// %a will output the total number of days.
echo $interval->format('%a total days')."\n";

// While %d will only output the number of days not already covered by the
// month.
echo $interval->format('%m month, %d days');

?>

以上例程会输出：

31 total days
1 month, 0 days

参见

  • DateTime::diff() - Returns the difference between two DateTime objects

DateInterval::createFromDateString
DatePeriod
DateInterval


The DatePeriod class

(PHP 5 >= 5.3.0, PHP 7)

简介

Represents a date period.

A date period allows iteration over a set of dates and times, recurring at regular intervals, over a given period.

类摘要

DatePeriod implements Traversable {
/* 常量 */
const integer EXCLUDE_START_DATE = 1 ;
/* 方法 */
public __construct ( DateTimeInterface $start , DateInterval $interval , int $recurrences [, int $options ] )
public __construct ( DateTimeInterface $start , DateInterval $interval , DateTimeInterface $end [, int $options ] )
public __construct ( string $isostr [, int $options ] )
public DateInterval getDateInterval ( void )
public DateTimeInterface getEndDate ( void )
public DateTimeInterface getStartDate ( void )
}

预定义常量

DatePeriod::EXCLUDE_START_DATE

Exclude start date, used in DatePeriod::__construct().

Table of Contents

  • DatePeriod::__construct — Creates a new DatePeriod object
  • DatePeriod::getDateInterval — Gets the interval
  • DatePeriod::getEndDate — Gets the end date
  • DatePeriod::getStartDate — Gets the start date
DateInterval::format
DatePeriod::__construct
日期/时间


Creates a new DatePeriod object

DatePeriod
DatePeriod::getDateInterval
DatePeriod
PHP Manual

DatePeriod::__construct

(PHP 5 >= 5.3.0, PHP 7)

DatePeriod::__construct — Creates a new DatePeriod object

说明

public DatePeriod::__construct ( DateTimeInterface $start , DateInterval $interval , int $recurrences [, int $options ] )
public DatePeriod::__construct ( DateTimeInterface $start , DateInterval $interval , DateTimeInterface $end [, int $options ] )
public DatePeriod::__construct ( string $isostr [, int $options ] )

Creates a new DatePeriod object.

参数

start

The start date of the period.

interval

The interval between recurrences within the period.

recurrences

The number of recurrences.

end

The end date of the period.

isostr

An ISO 8601 repeating interval specification.

options

Can be set to DatePeriod::EXCLUDE_START_DATE to exclude the start date from the set of recurring dates within the period.

更新日志

版本 | 说明
5.5.8 | end type changed to DateTimeInterface. Previously, DateTime.
5.5.0 | start type changed to DateTimeInterface. Previously, DateTime.

范例

Example #1 DatePeriod example

<?php
$start = new DateTime('2012-07-01');
$interval = new DateInterval('P7D');
$end = new DateTime('2012-07-31');
$recurrences = 4;
$iso = 'R4/2012-07-01T00:00:00Z/P7D';

// All of these periods are equivalent.
$period = new DatePeriod($start, $interval, $recurrences);
$period = new DatePeriod($start, $interval, $end);
$period = new DatePeriod($iso);

// By iterating over the DatePeriod object, all of the
// recurring dates within that period are printed.
foreach ($period as $date) {
    echo $date->format('Y-m-d')."\n";
}
?>

以上例程会输出：

2012-07-01
2012-07-08
2012-07-15
2012-07-22
2012-07-29

Example #2 DatePeriod example with DatePeriod::EXCLUDE_START_DATE

<?php
$start = new DateTime('2012-07-01');
$interval = new DateInterval('P7D');
$end = new DateTime('2012-07-31');

$period = new DatePeriod($start, $interval, $end,
                         DatePeriod::EXCLUDE_START_DATE);

// By iterating over the DatePeriod object, all of the
// recurring dates within that period are printed.
// Note that, in this case, 2012-07-01 is not printed.
foreach ($period as $date) {
    echo $date->format('Y-m-d')."\n";
}
?>

以上例程会输出：

2012-07-08
2012-07-15
2012-07-22
2012-07-29

注释

Unbound numbers of repetitions as specified by ISO 8601 section 4.5 "Recurring time interval" are not supported, i.e. neither passing "R/..." as isostr nor passing NULL as end would work.

DatePeriod
DatePeriod::getDateInterval
DatePeriod


Gets the interval

DatePeriod::__construct
DatePeriod::getEndDate
DatePeriod
PHP Manual

DatePeriod::getDateInterval

(PHP 5 >= 5.6.5, PHP 7)

DatePeriod::getDateInterval — Gets the interval

说明

面向对象风格

public DateInterval DatePeriod::getDateInterval ( void )

Gets a DateInterval object representing the interval used for the period.

参数

此函数没有参数。

返回值

Returns a DateInterval object

范例

Example #1 DatePeriod::getDateInterval() example

<?php
$period = new DatePeriod('R7/2016-05-16T00:00:00Z/P1D');
$interval = $period->getDateInterval();
echo $interval->format('%d day');
?>

以上例程会输出：

1 day

参见

  • DatePeriod::getStartDate() - Gets the start date
  • DatePeriod::getEndDate() - Gets the end date
DatePeriod::__construct
DatePeriod::getEndDate
DatePeriod


Gets the end date

DatePeriod::getDateInterval
DatePeriod::getStartDate
DatePeriod
PHP Manual

DatePeriod::getEndDate

(PHP 5 >= 5.6.5, PHP 7)

DatePeriod::getEndDate — Gets the end date

说明

面向对象风格

public DateTimeInterface DatePeriod::getEndDate ( void )

Gets the end date of the period.

参数

此函数没有参数。

返回值

Returns NULL if the DatePeriod does not have an end date. For example, when initialized with the recurrences parameter, or the isostr parameter without an end date.

Returns a DateTimeImmutable object when the DatePeriod is initialized with a DateTimeImmutable object as the end parameter.

Returns a DateTime object otherwise.

范例

Example #1 DatePeriod::getEndDate() example

<?php
$period = new DatePeriod(
    new DateTime('2016-05-16T00:00:00Z'),
    new DateInterval('P1D'),
    new DateTime('2016-05-20T00:00:00Z')
);
$start = $period->getEndDate();
echo $start->format(DateTime::ISO8601);
?>

以上例程会输出：

2016-05-20T00:00:00+0000

Example #2 DatePeriod::getEndDate() without an end date

<?php
$period = new DatePeriod(
    new DateTime('2016-05-16T00:00:00Z'),
    new DateInterval('P1D'),
    7
);
var_dump($period->getEndDate());
?>

以上例程会输出：

NULL

参见

  • DatePeriod::getStartDate() - Gets the start date
  • DatePeriod::getDateInterval() - Gets the interval
DatePeriod::getDateInterval
DatePeriod::getStartDate
DatePeriod


Gets the start date

DatePeriod::getEndDate
Date/Time 函数
DatePeriod
PHP Manual

DatePeriod::getStartDate

(PHP 5 >= 5.6.5, PHP 7)

DatePeriod::getStartDate — Gets the start date

说明

面向对象风格

public DateTimeInterface DatePeriod::getStartDate ( void )

Gets the start date of the period.

参数

此函数没有参数。

返回值

Returns a DateTimeImmutable object when the DatePeriod is initialized with a DateTimeImmutable object as the start parameter.

Returns a DateTime object otherwise.

范例

Example #1 DatePeriod::getStartDate() example

<?php
$period = new DatePeriod('R7/2016-05-16T00:00:00Z/P1D');
$start = $period->getStartDate();
echo $start->format(DateTime::ISO8601);
?>

以上例程会输出：

2016-05-16T00:00:00+0000

参见

  • DatePeriod::getEndDate() - Gets the end date
  • DatePeriod::getDateInterval() - Gets the interval
DatePeriod::getEndDate
Date/Time 函数
DatePeriod


Date/Time 函数

Table of Contents

  • checkdate — 验证一个格里高里日期
  • date_add — 别名 DateTime::add
  • date_create_from_format — 别名 DateTime::createFromFormat
  • date_create_immutable_from_format — 别名 DateTimeImmutable::createFromFormat
  • date_create_immutable — 别名 DateTimeImmutable::__construct
  • date_create — 别名 DateTime::__construct
  • date_date_set — 别名 DateTime::setDate
  • date_default_timezone_get — 取得一个脚本中所有日期时间函数所使用的默认时区
  • date_default_timezone_set — 设定用于一个脚本中所有日期时间函数的默认时区
  • date_diff — 别名 DateTime::diff
  • date_format — 别名 DateTime::format
  • date_get_last_errors — 别名 DateTime::getLastErrors
  • date_interval_create_from_date_string — 别名 DateInterval::createFromDateString
  • date_interval_format — 别名 DateInterval::format
  • date_isodate_set — 别名 DateTime::setISODate
  • date_modify — 别名 DateTime::modify
  • date_offset_get — 别名 DateTime::getOffset
  • date_parse_from_format — Get info about given date formatted according to the specified format
  • date_parse — Returns associative array with detailed info about given date
  • date_sub — 别名 DateTime::sub
  • date_sun_info — Returns an array with information about sunset/sunrise and twilight begin/end
  • date_sunrise — 返回给定的日期与地点的日出时间
  • date_sunset — 返回给定的日期与地点的日落时间
  • date_time_set — 别名 DateTime::setTime
  • date_timestamp_get — 别名 DateTime::getTimestamp
  • date_timestamp_set — 别名 DateTime::setTimestamp
  • date_timezone_get — 别名 DateTime::getTimezone
  • date_timezone_set — 别名 DateTime::setTimezone
  • date — 格式化一个本地时间／日期
  • getdate — 取得日期／时间信息
  • gettimeofday — 取得当前时间
  • gmdate — 格式化一个 GMT/UTC 日期／时间
  • gmmktime — 取得 GMT 日期的 UNIX 时间戳
  • gmstrftime — 根据区域设置格式化 GMT/UTC 时间／日期
  • idate — 将本地时间日期格式化为整数
  • localtime — 取得本地时间
  • microtime — 返回当前 Unix 时间戳和微秒数
  • mktime — 取得一个日期的 Unix 时间戳
  • strftime — 根据区域设置格式化本地时间／日期
  • strptime — 解析由 strftime 生成的日期／时间
  • strtotime — 将任何字符串的日期时间描述解析为 Unix 时间戳
  • time — 返回当前的 Unix 时间戳
  • timezone_abbreviations_list — 别名 DateTimeZone::listAbbreviations
  • timezone_identifiers_list — 别名 DateTimeZone::listIdentifiers
  • timezone_location_get — 别名 DateTimeZone::getLocation
  • timezone_name_from_abbr — Returns the timezone name from abbreviation
  • timezone_name_get — 别名 DateTimeZone::getName
  • timezone_offset_get — 别名 DateTimeZone::getOffset
  • timezone_open — 别名 DateTimeZone::__construct
  • timezone_transitions_get — 别名 DateTimeZone::getTransitions
  • timezone_version_get — Gets the version of the timezonedb
DatePeriod::getStartDate
checkdate
日期/时间


验证一个格里高里日期

Date/Time 函数
date_add
Date/Time 函数
PHP Manual

checkdate

(PHP 4, PHP 5, PHP 7)

checkdate — 验证一个格里高里日期

说明

bool checkdate ( int $month , int $day , int $year )

检查由参数构成的日期的合法性。如果每个参数都正确定义了则会被认为是有效的。

参数

month

month 的值是从 1 到 12。

day

Day 的值在给定的 month 所应该具有的天数范围之内，闰年已经考虑进去了。

year

year 的值是从 1 到 32767。

返回值

如果给出的日期有效则返回 TRUE，否则返回 FALSE。

范例

Example #1 checkdate() 例子

<?php
var_dump(checkdate(12, 31, 2000));
var_dump(checkdate(2, 29, 2001));
?>

以上例程会输出：

bool(true)
bool(false)

参见

  • mktime() - 取得一个日期的 Unix 时间戳
  • strtotime() - 将任何字符串的日期时间描述解析为 Unix 时间戳

Date/Time 函数
date_add
Date/Time 函数


别名 DateTime::add

checkdate
date_create_from_format
Date/Time 函数
PHP Manual

date_add

(PHP 5 >= 5.3.0, PHP 7)

date_add — 别名 DateTime::add()

说明

此函数是该函数的别名： DateTime::add()

checkdate
date_create_from_format
Date/Time 函数


别名 DateTime::createFromFormat

date_add
date_create_immutable_from_format
Date/Time 函数
PHP Manual

date_create_from_format

(PHP 5 >= 5.3.0, PHP 7)

date_create_from_format — 别名 DateTime::createFromFormat()

说明

此函数是该函数的别名： DateTime::createFromFormat()

date_add
date_create_immutable_from_format
Date/Time 函数


别名 DateTimeImmutable::createFromFormat

date_create_from_format
date_create_immutable
Date/Time 函数
PHP Manual

date_create_immutable_from_format

(PHP 5 >= 5.5.0, PHP 7)

date_create_immutable_from_format — 别名 DateTimeImmutable::createFromFormat()

说明

此函数是该函数的别名： DateTimeImmutable::createFromFormat()

date_create_from_format
date_create_immutable
Date/Time 函数


别名 DateTimeImmutable::__construct

date_create_immutable_from_format
date_create
Date/Time 函数
PHP Manual

date_create_immutable

(PHP 5 >= 5.5.0, PHP 7)

date_create_immutable — 别名 DateTimeImmutable::__construct()

说明

此函数是该函数的别名： DateTimeImmutable::__construct()

date_create_immutable_from_format
date_create
Date/Time 函数


别名 DateTime::__construct

date_create_immutable
date_date_set
Date/Time 函数
PHP Manual

date_create

(PHP 5 >= 5.2.0, PHP 7)

date_create — 别名 DateTime::__construct()

说明

此函数是该函数的别名： DateTime::__construct()

date_create_immutable
date_date_set
Date/Time 函数


别名 DateTime::setDate

date_create
date_default_timezone_get
Date/Time 函数
PHP Manual

date_date_set

(PHP 5 >= 5.2.0, PHP 7)

date_date_set — 别名 DateTime::setDate()

说明

此函数是该函数的别名： DateTime::setDate()

date_create
date_default_timezone_get
Date/Time 函数


取得一个脚本中所有日期时间函数所使用的默认时区

date_date_set
date_default_timezone_set
Date/Time 函数
PHP Manual

date_default_timezone_get

(PHP 5 >= 5.1.0, PHP 7)

date_default_timezone_get — 取得一个脚本中所有日期时间函数所使用的默认时区

说明

string date_default_timezone_get ( void )

本函数返回默认时区，使用如下"假定"的顺序：

  • 用 date_default_timezone_set() 函数设定的时区（如果设定了的话）

  • 仅仅在 PHP 5.4.0 之前： TZ 环境变量（如果非空）

  • date.timezone 配置选项（如果设定了的话）

  • 仅仅在 PHP 5.4.0 之前： 查询操作系统主机 (如果操作系统支持并允许)。 This uses an algorithm that has to guess the timezone. This is by no means going to work correctly for every situation. A warning is shown when this stage is reached. Do not rely on it to be guessed correctly, and set date.timezone to the correct timezone instead.

  • 如果以上选择都不成功，date_default_timezone_get() 会则返回 UTC 的默认时区。

返回值

返回一个 string。

更新日志

版本 | 说明
5.4.0 | 不再使用 TZ 来推测时区。
5.4.0 | 不再根据操作系统的信息来推测时区，因为这是不可靠的。

范例

Example #1 获取默认时区

<?php
date_default_timezone_set('Europe/London');

if (date_default_timezone_get()) {
    echo 'date_default_timezone_set: ' . date_default_timezone_get() . '<br />';
}

if (ini_get('date.timezone')) {
    echo 'date.timezone: ' . ini_get('date.timezone');
}

?>

以上例程的输出类似于：

date_default_timezone_set: Europe/London
date.timezone: Europe/London

Example #2 获取一个时区的简写

<?php
date_default_timezone_set('America/Los_Angeles');
echo date_default_timezone_get() . ' => ' . date('e') . ' => ' . date('T');
?>

以上例程会输出：

America/Los_Angeles => America/Los_Angeles => PST

参见

  • date_default_timezone_set() - 设定用于一个脚本中所有日期时间函数的默认时区
  • 所支持的时区列表

date_date_set
date_default_timezone_set
Date/Time 函数


设定用于一个脚本中所有日期时间函数的默认时区

date_default_timezone_get
date_diff
Date/Time 函数
PHP Manual

date_default_timezone_set

(PHP 5 >= 5.1.0, PHP 7)

date_default_timezone_set — 设定用于一个脚本中所有日期时间函数的默认时区

说明

bool date_default_timezone_set ( string $timezone_identifier )

date_default_timezone_set() 设定用于所有日期时间函数的默认时区。

Note:

自 PHP 5.1.0 起（此版本日期时间函数被重写了），如果时区不合法则每个对日期时间函数的调用都会产生一条 E_NOTICE 级别的错误信息，如果使用系统设定或 TZ 环境变量则还会产生 E_STRICT 级别的信息。

除了用此函数，你还可以通过 INI 设置 date.timezone 来设置默认时区。

参数

timezone_identifier

时区标识符，例如 UTC 或 Europe/Lisbon。合法标识符列表见所支持的时区列表。

返回值

如果 timezone_identifier 参数无效则返回 FALSE，否则返回 TRUE。

范例

Example #1 获取默认时区

<?php
date_default_timezone_set('America/Los_Angeles');

$script_tz = date_default_timezone_get();

if (strcmp($script_tz, ini_get('date.timezone'))){
    echo 'Script timezone differs from ini-set timezone.';
} else {
    echo 'Script timezone and ini-set timezone match.';
}
?>

更新日志

版本 | 说明
5.3.0 | 现在会抛出 E_WARNING 而不是 E_STRICT。
5.1.2 | 本版本开始验证 timezone_identifier 参数。

参见

  • date_default_timezone_get() - 取得一个脚本中所有日期时间函数所使用的默认时区
  • 所支持的时区列表

date_default_timezone_get
date_diff
Date/Time 函数


别名 DateTime::diff

date_default_timezone_set
date_format
Date/Time 函数
PHP Manual

date_diff

(PHP 5 >= 5.3.0, PHP 7)

date_diff — 别名 DateTime::diff()

说明

此函数是该函数的别名： DateTime::diff()

date_default_timezone_set
date_format
Date/Time 函数


别名 DateTime::format

date_diff
date_get_last_errors
Date/Time 函数
PHP Manual

date_format

(PHP 5 >= 5.2.0, PHP 7)

date_format — 别名 DateTime::format()

说明

此函数是该函数的别名： DateTime::format()

date_diff
date_get_last_errors
Date/Time 函数


别名 DateTime::getLastErrors

date_format
date_interval_create_from_date_string
Date/Time 函数
PHP Manual

date_get_last_errors

(PHP 5 >= 5.3.0, PHP 7)

date_get_last_errors — 别名 DateTime::getLastErrors()

说明

此函数是该函数的别名： DateTime::getLastErrors()

date_format
date_interval_create_from_date_string
Date/Time 函数


别名 DateInterval::createFromDateString

date_get_last_errors
date_interval_format
Date/Time 函数
PHP Manual

date_interval_create_from_date_string

(PHP 5 >= 5.3.0, PHP 7)

date_interval_create_from_date_string — 别名 DateInterval::createFromDateString()

说明

此函数是该函数的别名： DateInterval::createFromDateString()

date_get_last_errors
date_interval_format
Date/Time 函数


别名 DateInterval::format

date_interval_create_from_date_string
date_isodate_set
Date/Time 函数
PHP Manual

date_interval_format

(PHP 5 >= 5.3.0, PHP 7)

date_interval_format — 别名 DateInterval::format()

说明

此函数是该函数的别名： DateInterval::format()

date_interval_create_from_date_string
date_isodate_set
Date/Time 函数


别名 DateTime::setISODate

date_interval_format
date_modify
Date/Time 函数
PHP Manual

date_isodate_set

(PHP 5 >= 5.2.0, PHP 7)

date_isodate_set — 别名 DateTime::setISODate()

说明

此函数是该函数的别名： DateTime::setISODate()

date_interval_format
date_modify
Date/Time 函数


别名 DateTime::modify

date_isodate_set
date_offset_get
Date/Time 函数
PHP Manual

date_modify

(PHP 5 >= 5.2.0, PHP 7)

date_modify — 别名 DateTime::modify()

说明

此函数是该函数的别名： DateTime::modify()

date_isodate_set
date_offset_get
Date/Time 函数


别名 DateTime::getOffset

date_modify
date_parse_from_format
Date/Time 函数
PHP Manual

date_offset_get

(PHP 5 >= 5.2.0, PHP 7)

date_offset_get — 别名 DateTime::getOffset()

说明

此函数是该函数的别名： DateTime::getOffset()

date_modify
date_parse_from_format
Date/Time 函数


Get info about given date formatted according to the specified format

date_offset_get
date_parse
Date/Time 函数
PHP Manual

date_parse_from_format

(PHP 5 >= 5.3.0, PHP 7)

date_parse_from_format — Get info about given date formatted according to the specified format

说明

array date_parse_from_format ( string $format , string $date )

Returns associative array with detailed info about given date.

参数

format

Format accepted by DateTime::createFromFormat().

date

String representing the date.

返回值

Returns associative array with detailed info about given date.

范例

Example #1 date_parse_from_format() example

<?php
$date = "6.1.2009 13:00+01:00";
print_r(date_parse_from_format("j.n.Y H:iP", $date));
?>

以上例程会输出：

Array
(
    [year] => 2009
    [month] => 1
    [day] => 6
    [hour] => 13
    [minute] => 0
    [second] => 0
    [fraction] =>
    [warning_count] => 0
    [warnings] => Array
        (
        )

    [error_count] => 0
    [errors] => Array
        (
        )

    [is_localtime] => 1
    [zone_type] => 1
    [zone] => -60
    [is_dst] =>
)

参见

  • DateTime::createFromFormat() - Parses a time string according to a specified format
  • checkdate() - 验证一个格里高里日期

date_offset_get
date_parse
Date/Time 函数


Returns associative array with detailed info about given date

date_parse_from_format
date_sub
Date/Time 函数
PHP Manual

date_parse

(PHP 5 >= 5.2.0, PHP 7)

date_parse — Returns associative array with detailed info about given date

说明

array date_parse ( string $date )

参数

date

Date in format accepted by strtotime().

返回值

Returns array with information about the parsed date on success 或者在失败时返回 FALSE.

错误／异常

In case the date format has an error, the element 'errors' will contains the error messages.

范例

Example #1 A date_parse() example

<?php
print_r(date_parse("2006-12-12 10:00:00.5"));
?>

以上例程会输出：

Array
(
    [year] => 2006
    [month] => 12
    [day] => 12
    [hour] => 10
    [minute] => 0
    [second] => 0
    [fraction] => 0.5
    [warning_count] => 0
    [warnings] => Array()
    [error_count] => 0
    [errors] => Array()
    [is_localtime] =>
)

Relative formats do not influence the values parsed from absolute formats, but are parsed into the "relative" element.

Example #2 date_parse() with relative formats

<?php
print_r(date_parse("2006-12-12 10:00:00.5 +1 week +1 hour"));
?>

以上例程会输出：

Array
(
    [year] => 2006
    [month] => 12
    [day] => 12
    [hour] => 10
    [minute] => 0
    [second] => 0
    [fraction] => 0.5
    [warning_count] => 0
    [warnings] => Array
        (
        )

    [error_count] => 0
    [errors] => Array
        (
        )

    [is_localtime] =>
    [relative] => Array
        (
            [year] => 0
            [month] => 0
            [day] => 7
            [hour] => 1
            [minute] => 0
            [second] => 0
        )

)

参见

  • checkdate() - 验证一个格里高里日期
  • getdate() - 取得日期／时间信息

date_parse_from_format
date_sub
Date/Time 函数


别名 DateTime::sub

date_parse
date_sun_info
Date/Time 函数
PHP Manual

date_sub

(PHP 5 >= 5.3.0, PHP 7)

date_sub — 别名 DateTime::sub()

说明

此函数是该函数的别名： DateTime::sub()

date_parse
date_sun_info
Date/Time 函数


Returns an array with information about sunset/sunrise and twilight begin/end

date_sub
date_sunrise
Date/Time 函数
PHP Manual

date_sun_info

(PHP 5 >= 5.1.2, PHP 7)

date_sun_info — Returns an array with information about sunset/sunrise and twilight begin/end

说明

array date_sun_info ( int $time , float $latitude , float $longitude )

参数

time

Timestamp.

latitude

Latitude in degrees.

longitude

Longitude in degrees.

返回值

Returns array on success 或者在失败时返回 FALSE.

范例

Example #1 A date_sun_info() example

<?php
$sun_info = date_sun_info(strtotime("2006-12-12"), 31.7667, 35.2333);
foreach ($sun_info as $key => $val) {
    echo "$key: " . date("H:i:s", $val) . "\n";
}
?>

以上例程会输出：

sunrise: 05:52:11
sunset: 15:41:21
transit: 10:46:46
civil_twilight_begin: 05:24:08
civil_twilight_end: 16:09:24
nautical_twilight_begin: 04:52:25
nautical_twilight_end: 16:41:06
astronomical_twilight_begin: 04:21:32
astronomical_twilight_end: 17:12:00

参见

  • date_sunrise() - 返回给定的日期与地点的日出时间
  • date_sunset() - 返回给定的日期与地点的日落时间

date_sub
date_sunrise
Date/Time 函数


返回给定的日期与地点的日出时间

date_sun_info
date_sunset
Date/Time 函数
PHP Manual

date_sunrise

(PHP 5, PHP 7)

date_sunrise — 返回给定的日期与地点的日出时间

说明

mixed date_sunrise ( int $timestamp [, int $format = SUNFUNCS_RET_STRING [, float $latitude = ini_get("date.default_latitude") [, float $longitude = ini_get("date.default_longitude") [, float $zenith = ini_get("date.sunrise_zenith") [, float $gmt_offset = 0 ]]]]] )

date_sunrise() 返回给定的日期（以 timestamp 指定）与地点的日出时间。

参数

timestamp

取 timestamp所在日期的日出时间。

format

format 常量
常量 | 说明 | 取值举例
SUNFUNCS_RET_STRING | 以 string 格式返回结果 | 16:46
SUNFUNCS_RET_DOUBLE | 以 float 格式返回结果 | 16.78243132
SUNFUNCS_RET_TIMESTAMP | 以 integer 格式（时间戳）返回结果 | 1095034606

latitude

默认是指北纬。因此如果要指定南纬，必须传递一个负值。 参见 date.default_latitude。

longitude

默认是指东经。因此如果要指定西经，必须传递一个负值。 参见 date.default_longitude。

zenith

默认： date.sunrise_zenith。

gmtoffset

单位是小时。

返回值

按指定格式 format 返回的日出时间， 或者在失败时返回 FALSE。

错误／异常

在每 次调用日期/时间函数时，如果时区无效则会引发 E_NOTICE 错误，如果使用系统设定值或 TZ 环境变量，则会引发 E_STRICT 或 E_WARNING 消息。参见 date_default_timezone_set()。

更新日志

版本 | 说明
5.1.0 | 现在发布 E_STRICT 和 E_NOTICE 时区错误。

范例

Example #1 date_sunrise() 例子

<?php

/* 计算葡萄牙里斯本的日出时间
Latitude:  北纬 38.4 度
Longitude: 西经 9 度
Zenith ~= 90
offset: +1 GMT
*/

echo date("D M d Y"). ', sunrise time : ' .date_sunrise(time(), SUNFUNCS_RET_STRING, 38.4, -9, 90, 1);

?>

以上例程的输出类似于：

Mon Dec 20 2004, sunrise time : 08:54

参见

  • date_sunset() - 返回给定的日期与地点的日落时间

date_sun_info
date_sunset
Date/Time 函数


返回给定的日期与地点的日落时间

date_sunrise
date_time_set
Date/Time 函数
PHP Manual

date_sunset

(PHP 5, PHP 7)

date_sunset — 返回给定的日期与地点的日落时间

说明

mixed date_sunset ( int $timestamp [, int $format = SUNFUNCS_RET_STRING [, float $latitude = ini_get("date.default_latitude") [, float $longitude = ini_get("date.default_longitude") [, float $zenith = ini_get("date.sunset_zenith") [, float $gmt_offset = 0 ]]]]] )

date_sunset() 返回给定的日期（以 timestamp 指定）与地点的日落时间。

参数

timestamp

返回给定的日期（以 timestamp 指定）的日落时间。

format

format 常量
常量 | 说明 | 取值举例
SUNFUNCS_RET_STRING | 以 string 格式返回结果 | 16:46
SUNFUNCS_RET_DOUBLE | 以 float 格式返回结果 | 16.78243132
SUNFUNCS_RET_TIMESTAMP | 以 integer 格式（时间戳）返回结果 | 1095034606

latitude

默认是指北纬。因此如果要指定南纬，必须传递一个负值。参见： date.default_latitude。

longitude

默认是指东经。因此如果要指定西经，必须传递一个负值。参见： date.default_longitude

zenith

默认： date.sunset_zenith。

gmtoffset

单位是小时。

错误／异常

在每 次调用日期/时间函数时，如果时区无效则会引发 E_NOTICE 错误，如果使用系统设定值或 TZ 环境变量，则会引发 E_STRICT 或 E_WARNING 消息。参见 date_default_timezone_set()。

更新日志

版本 | 说明
5.1.0 | 现在发布 E_STRICT 和 E_NOTICE 时区错误。

返回值

用指定的格式 format 返回日落时间， 或者在失败时返回 FALSE。

范例

Example #1 date_sunset() 例子

<?php

/* calculate the sunset time for Lisbon, Portugal
Latitude: 38.4 North
Longitude: 9 West
Zenith ~= 90
offset: +1 GMT
*/

echo date("D M d Y"). ', sunset time : ' .date_sunset(time(), SUNFUNCS_RET_STRING, 38.4, -9, 90, 1);

?>

以上例程的输出类似于：

Mon Dec 20 2004, sunset time : 18:13

参见

  • date_sunrise() - 返回给定的日期与地点的日出时间

date_sunrise
date_time_set
Date/Time 函数


别名 DateTime::setTime

date_sunset
date_timestamp_get
Date/Time 函数
PHP Manual

date_time_set

(PHP 5 >= 5.2.0, PHP 7)

date_time_set — 别名 DateTime::setTime()

说明

此函数是该函数的别名： DateTime::setTime()

date_sunset
date_timestamp_get
Date/Time 函数


别名 DateTime::getTimestamp

date_time_set
date_timestamp_set
Date/Time 函数
PHP Manual

date_timestamp_get

(PHP 5 >= 5.3.0, PHP 7)

date_timestamp_get — 别名 DateTime::getTimestamp()

说明

此函数是该函数的别名： DateTime::getTimestamp()

date_time_set
date_timestamp_set
Date/Time 函数


别名 DateTime::setTimestamp

date_timestamp_get
date_timezone_get
Date/Time 函数
PHP Manual

date_timestamp_set

(PHP 5 >= 5.3.0, PHP 7)

date_timestamp_set — 别名 DateTime::setTimestamp()

说明

此函数是该函数的别名： DateTime::setTimestamp()

date_timestamp_get
date_timezone_get
Date/Time 函数


别名 DateTime::getTimezone

date_timestamp_set
date_timezone_set
Date/Time 函数
PHP Manual

date_timezone_get

(PHP 5 >= 5.2.0, PHP 7)

date_timezone_get — 别名 DateTime::getTimezone()

说明

此函数是该函数的别名： DateTime::getTimezone()

date_timestamp_set
date_timezone_set
Date/Time 函数


别名 DateTime::setTimezone

date_timezone_get
date
Date/Time 函数
PHP Manual

date_timezone_set

(PHP 5 >= 5.2.0, PHP 7)

date_timezone_set — 别名 DateTime::setTimezone()

说明

此函数是该函数的别名： DateTime::setTimezone()

date_timezone_get
date
Date/Time 函数


格式化一个本地时间／日期

date_timezone_set
getdate
Date/Time 函数
PHP Manual

date

(PHP 4, PHP 5, PHP 7)

date — 格式化一个本地时间／日期

说明

string date ( string $format [, int $timestamp ] )

返回将整数 timestamp 按照给定的格式字串而产生的字符串。如果没有给出时间戳则使用本地当前时间。换句话说，timestamp 是可选的，默认值为 time()。

Tip

自 PHP 5.1.1 起有几个有用的常量可用作标准的日期／时间格式来指定 format 参数。

Tip

自 PHP 5.1 起在 $_SERVER['REQUEST_TIME'] 中保存了发起该请求时刻的时间戳。

Note:

有效的时间戳典型范围是格林威治时间 1901 年 12 月 13 日 20:45:54 到 2038 年 1 月 19 日 03:14:07。（此范围符合 32 位有符号整数的最小值和最大值）。不过在 PHP 5.1 之前此范围在某些系统（如 Windows）中限制为从 1970 年 1 月 1 日到 2038 年 1 月 19 日。

Note:

要将字符串表达的时间转换成时间戳，应该使用 strtotime()。此外一些数据库有一些函数将其时间格式转换成时间戳（例如 MySQL 的 » UNIX_TIMESTAMP 函数）。

格式字串可以识别以下 format 参数的字符串
format 字符 | 说明 | 返回值例子
日 | --- | ---
d | 月份中的第几天，有前导零的 2 位数字 | 01 到 31
D | 星期中的第几天，文本表示，3 个字母 | Mon 到 Sun
j | 月份中的第几天，没有前导零 | 1 到 31
l（"L"的小写字母） | 星期几，完整的文本格式 | Sunday 到 Saturday
N | ISO-8601 格式数字表示的星期中的第几天（PHP 5.1.0 新加） | 1（表示星期一）到 7（表示星期天）
S | 每月天数后面的英文后缀，2 个字符 | st，nd，rd 或者 th。可以和 j 一起用
w | 星期中的第几天，数字表示 | 0（表示星期天）到 6（表示星期六）
z | 年份中的第几天 | 0 到 365
星期 | --- | ---
W | ISO-8601 格式年份中的第几周，每周从星期一开始（PHP 4.1.0 新加的） | 例如：42（当年的第 42 周）
月 | --- | ---
F | 月份，完整的文本格式，例如 January 或者 March | January 到 December
m | 数字表示的月份，有前导零 | 01 到 12
M | 三个字母缩写表示的月份 | Jan 到 Dec
n | 数字表示的月份，没有前导零 | 1 到 12
t | 给定月份所应有的天数 | 28 到 31
年 | --- | ---
L | 是否为闰年 | 如果是闰年为 1，否则为 0
o | ISO-8601 格式年份数字。这和 Y 的值相同，只除了如果 ISO 的星期数（W）属于前一年或下一年，则用那一年。（PHP 5.1.0 新加） | Examples: 1999 or 2003
Y | 4 位数字完整表示的年份 | 例如：1999 或 2003
y | 2 位数字表示的年份 | 例如：99 或 03
时间 | --- | ---
a | 小写的上午和下午值 | am 或 pm
A | 大写的上午和下午值 | AM 或 PM
B | Swatch Internet 标准时 | 000 到 999
g | 小时，12 小时格式，没有前导零 | 1 到 12
G | 小时，24 小时格式，没有前导零 | 0 到 23
h | 小时，12 小时格式，有前导零 | 01 到 12
H | 小时，24 小时格式，有前导零 | 00 到 23
i | 有前导零的分钟数 | 00 到 59>
s | 秒数，有前导零 | 00 到 59>
u | 毫秒 （PHP 5.2.2 新加）。需要注意的是 date() 函数总是返回 000000 因为它只接受 integer 参数， 而 DateTime::format() 才支持毫秒。 | 示例: 654321
时区 | --- | ---
e | 时区标识（PHP 5.1.0 新加） | 例如：UTC，GMT，Atlantic/Azores
I | 是否为夏令时 | 如果是夏令时为 1，否则为 0
O | 与格林威治时间相差的小时数 | 例如：+0200
P | 与格林威治时间（GMT）的差别，小时和分钟之间有冒号分隔（PHP 5.1.3 新加） | 例如：+02:00
T | 本机所在的时区 | 例如：EST，MDT（【译者注】在 Windows 下为完整文本格式，例如"Eastern Standard Time"，中文版会显示"中国标准时间"）。
Z | 时差偏移量的秒数。UTC 西边的时区偏移量总是负的，UTC 东边的时区偏移量总是正的。 | -43200 到 43200
完整的日期／时间 | --- | ---
c | ISO 8601 格式的日期（PHP 5 新加） | 2004-02-12T15:19:21+00:00
r | RFC 822 格式的日期 | 例如：Thu, 21 Dec 2000 16:01:07 +0200
U | 从 Unix 纪元（January 1 1970 00:00:00 GMT）开始至今的秒数 | 参见 time()

格式字串中不能被识别的字符将原样显示。Z 格式在使用 gmdate() 时总是返回 0。

Example #1 date() 例子

<?php
// 设定要用的默认时区。自 PHP 5.1 可用
date_default_timezone_set('UTC');

// 输出类似：Monday
echo date("l");

// 输出类似：Monday 15th of August 2005 03:12:46 PM
echo date('l dS \of F Y h:i:s A');

// 输出：July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));

/* 在格式参数中使用常量 */
// 输出类似：Wed, 25 Sep 2013 15:28:57 -0700
echo date(DATE_RFC2822);

// 输出类似：2000-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
?>

在格式字串中的字符前加上反斜线来转义可以避免它被按照上表解释。如果加上反斜线后的字符本身就是一个特殊序列，那还要转义反斜线。

Example #2 在 date() 中转义字符

<?php
// prints something like: Wednesday the 15th
echo date("l \\t\h\e jS");
?>

可以把 date() 和 mktime() 函数结合使用来得到未来或过去的日期。

Example #3 date() 和 mktime() 例子

<?php
$tomorrow  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));
$nextyear  = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1);
?>

Note:

由于夏令时的缘故，这种方法比简单地在时间戳上加减一天或者一个月的秒数更可靠。

一些使用 date() 格式化日期的例子。注意要转义所有其它的字符，因为目前有特殊含义的字符会产生不需要的结果，而其余字符在 PHP 将来的版本中可能会被用上。当转义时，注意用单引号以避免类似 \n 的字符变成了换行符。

Example #4 date() 格式举例

<?php
// 假定今天是：March 10th, 2001, 5:16:18 pm
$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day z ');  // 05-16-17, 10-03-01, 1631 1618 6 Fripm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // It is the 10th day.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 15:16:08 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:17 m is month
$today = date("H:i:s");                         // 17:16:17
$today = date("Y-m-d H:i:s");                   // 2001-03-10 17:16:18 （MySQL DATETIME 格式）
?>

要格式化其它语种的日期，应该用 setlocale() 和 strftime() 函数来代替 date()。

参见 getlastmod()，gmdate()，mktime()，strftime() 和 time()。

参数

format

输出的日期 string 格式。 参见下文中的 格式化选项。 同时，还可以使用 预定义日期常量 ，例如：常量 DATE_RSS 表示格式化字符串 'D, d M Y H:i:s'。

format 参数字符串中可识别下列字符
format 字符 | 描述 | 返回值示例
天 --- ---
d | 一个月中的第几天，有前导 0 的 2 位数字 | 从 01 到 31
D | 3 个字符表示的星期几 | 从 Mon 到 Sun
j | 一个月中的第几天，无前导 0 | 从 1 到 31
l (lowercase 'L') | 星期几，英文全称 | 从 Sunday 到 Saturday
N | ISO-8601 规定的数字表示的星期几（PHP 5.1.0 新加 ） | 从 1 （表示星期一）到 7 （表示星期日）
S | 一个月中的第几天，带有 2 个字符表示的英语序数词。 | st， nd， rd 或者 th。 可以和 j 联合使用。
w | 数字表示的星期几 | 从 0 （星期日） 到 6 （星期六）
z | 一年中的第几天，从 0 开始计数 | 从 0 到 365
周 --- ---
W | ISO-8601 规范的一年中的第几周，周一视为一周开始。（PHP 4.1.0 新加） | 示例： 42 （本年第42周）
月 --- ---
F | 月份英文全拼，例如：January 或 March | 从 January 到 December
m | 带有 0 前导的数字表示的月份 | 从 01 到 12
M | 3 个字符表示的月份的英文简拼 | 从 Jan 到 Dec
n | 月份的数字表示，无前导 0 | 1 through 12
t | 给定月份中包含多少天 | 从 28 到 31
年 --- ---
L | 是否为闰年 | 如果是闰年，则返回 1，反之返回 0。
o | ISO-8601 规范的年份，同 Y 格式。有一种情况除外：当 ISO 的周数（W）属于前一年或者后一年时，会返回前一年或者后一年的年份数字表达。 属于前一年或者后一年时，会返回前一年或者后一年的年份数字表达。 （PHP 5.1.0 新加） | 示例：1999 或 2003
Y | 4 位数字的年份 | 示例：1999 或 2003
y | 2 位数字的年份 | 示例： 99 或 03
时间 --- ---
a | 上午还是下午，2 位小写字符 | am 或 pm
A | 上午还是下午，2 位大写字符 | AM 或 PM
B | 斯沃琪因特网时间 | 从 000 到 999
g | 小时，12时制，无前导 0 | 从 1 到 12
G | 小时，24时制，无前导 0 | 从 0 到 23
h | 小时，12时制，有前导 0 的 2 位数字 | 从 01 到 12
H | 小时，24时制，有前导 0 的 2 位数字 | 00 through 23
i | 分钟，有前导 0 的 2 位数字 | 从 00 到 59
s | 秒，有前导 0 的 2 位数字 | 从 00 到 59
u | 毫秒 （PHP 5.2.2 新加） | 示例： 654321
时区 --- ---
e | 时区标识（PHP 5.1.0 新加） | 示例: UTC, GMT, Atlantic/Azores
I （大写字母 i） | 是否夏令时 | 如果是夏令时则返回 1，反之返回 0。
O | 和格林威治时间（GMT）的时差，以小时为单位 | 示例： +0200
P | 和格林威治时间（GMT）的时差，包括小时和分钟，小时和分钟之间使用冒号（:）分隔（PHP 5.1.3 新加） | 示例： +02:00
T | 时区缩写 | 示例：EST, MDT ...
Z | 以秒为单位的时区偏移量。UTC 以西的时区返回负数，UTC 以东的时区返回正数。 | 从 -43200 到 50400
完整的日期/时间 --- ---
c | ISO 8601 日期及时间（PHP 5 新加） | 2004-02-12T15:19:21+00:00
r | » RFC 2822 格式的日期和时间 | 示例：Thu, 21 Dec 2000 16:01:07 +0200
U | 自 1970 年 1 月 1 日 0 时 0 分 0 秒（GMT 时间）以来的时间，以秒为单位 | 参见time()

格式化字符串中的不可识别字符将原样输出。 当使用 gmdate() 函数时， Z 格式永远返回 0。

Note:

由于本函数仅接受 integer 类型的时间戳参数，所以 u 格式仅在使用 date_format() 函数并且使用 date_create() 函数创建时间戳时才是有用的。

timestamp

可选的 timestamp 参数是一个 integer 的 Unix 时间戳，如未指定，参数值默认为当前本地时间。也就是说，其值默认为 time() 的返回值。

返回值

返回格式化后的日期时间的字符串表达。 如果 timestamp 参数不是一个有效数值，则返回 FALSE 并引发 E_WARNING 级别的错误。

错误／异常

在每 次调用日期/时间函数时，如果时区无效则会引发 E_NOTICE 错误，如果使用系统设定值或 TZ 环境变量，则会引发 E_STRICT 或 E_WARNING 消息。参见 date_default_timezone_set()。

更新日志

版本 | 说明
5.1.0 | 时间戳的有效取值范围为 GMT 时间的 1901 年 12 月 13 日至 GMT 时间的 2038 年 1 月 19 日。 （32 位有符号整数的取值范围）。 但是，在 PHP 5.1.0 之前的版本，在某些系统（例如 Windows）上有效取值范围为 1970 年 1 月 1 日至 2038 年 1 月 19 日。
5.1.0 | 现在发布 E_STRICT 和 E_NOTICE 时区错误。
5.1.1 | format 参数标准的可用日期/时间格式常量见： 常量

范例

Example #5 date() 函数示例

<?php
// 设置默认时区。PHP 5.1 之后版本可用
date_default_timezone_set('UTC');

// 输出类似： Monday
echo date("l");

// 输出类似：Monday 8th of August 2005 03:12:46 PM
echo date('l jS \of F Y h:i:s A');

// 输出：July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));

/* 使用格式常量 */
// 输出类似： Mon, 15 Aug 2005 15:12:46 UTC
echo date(DATE_RFC822);

// 输出类似：2000-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
?>

可以使用反斜线进行转义来阻止函数解析格式字符串中的可识别字符。 如果反斜线和要转义的字符连在一起依然是一个有效的字符序列，那么需要对 反斜线再次进行转义。

Example #6 对 date() 函数中的格式字符串进行转义

<?php
// 输出类似： Wednesday the 15th
echo date('l \t\h\e jS');
?>

可以联合使用 date() 和 mktime() 函数 来构造之前或者之后的日期时间。

Example #7 date() 和 mktime() 联合使用示例

<?php
$tomorrow  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));
$nextyear  = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1);
?>

Note:

由于存在夏令时时间， 所以此方案相对于直接在时间戳上加/减秒数 要更加可靠。

date() 函数格式化的一些示例。 需要注意的是，即使是对于当前来说并不具有特殊含义的字符， 也要像对待具有特殊含义的字符那样进行转义，以避免函数返回非预期的值。 因为可能在将来的 PHP 版本中，这些字符会被赋予特殊的含义。 进行转义的时候，请确保使用单引号，以避免 \n 被解释为换行符号。

Example #8 date() 函数格式化

<?php
// 假设今天是 2001 年 3 月 10 日下午 5 点 16 分 18 秒，
// 并且位于山区标准时间（MST）时区

$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
$today = date("H:i:s");                         // 17:16:18
?>

如果需要将日期时间格式化为其他语言，你应该使用 setlocale() 和 strftime() 函数 来替代 date() 函数。

注释

Note:

使用 strtotime() 函数将一个字符串表达的日期时间转换为时间戳。 另外，一些数据库产品也提供了将日期时间格式转换为时间戳的函数。 （例如 MySQL 中的 » UNIX_TIMESTAMP 函数）。

Tip

从 PHP 5.1 版本开始，请求的开始时间可以从变量 $_SERVER['REQUEST_TIME'] 中获取。

参见

  • gmdate() - 格式化一个 GMT/UTC 日期／时间
  • idate() - 将本地时间日期格式化为整数
  • getdate() - 取得日期／时间信息
  • getlastmod() - 获取页面最后修改的时间
  • mktime() - 取得一个日期的 Unix 时间戳
  • strftime() - 根据区域设置格式化本地时间／日期
  • time() - 返回当前的 Unix 时间戳
  • strtotime() - 将任何字符串的日期时间描述解析为 Unix 时间戳
  • 预定义的日期时间常量

date_timezone_set
getdate
Date/Time 函数


取得日期／时间信息

date
gettimeofday
Date/Time 函数
PHP Manual

getdate

(PHP 4, PHP 5, PHP 7)

getdate — 取得日期／时间信息

说明

array getdate ([ int $timestamp = time() ] )

返回一个根据 timestamp 得出的包含有日期信息的关联数组 array。如果没有给出时间戳则认为是当前本地时间。

参数

timestamp

可选的 timestamp 参数是一个 integer 的 Unix 时间戳，如未指定，参数值默认为当前本地时间。也就是说，其值默认为 time() 的返回值。

返回值

返回一个根据 timestamp 得出的包含有日期信息的关联数组 array。 返回的关联数组中的键名单元有以下几个：

返回的关联数组中的键名单元
键名 | 说明 | 返回值例子
"seconds" | 秒的数字表示 | 0 到 59
"minutes" | 分钟的数字表示 | 0 到 59
"hours" | 小时的数字表示 | 0 到 23
"mday" | 月份中第几天的数字表示 | 1 到 31
"wday" | 星期中第几天的数字表示 | 0 (周日) 到 6 (周六)
"mon" | 月份的数字表示 | 1 到 12
"year" | 4 位数字表示的完整年份 | 比如： 1999 或 2003
"yday" | 一年中第几天的数字表示 | 0 到 365
"weekday" | 星期几的完整文本表示 | Sunday 到 Saturday
"month" | 月份的完整文本表示，比如 January 或 March | January 到 December
0 | 自从 Unix 纪元开始至今的秒数，和 time() 的返回值以及用于 date() 的值类似。 | 系统相关，典型值为从 -2147483648 到 2147483647。

范例

Example #1 getdate() 例子

<?php
$today = getdate();
print_r($today);
?>

以上例程的输出类似于：

Array
(
    [seconds] => 40
    [minutes] => 58
    [hours]   => 21
    [mday]    => 17
    [wday]    => 2
    [mon]     => 6
    [year]    => 2003
    [yday]    => 167
    [weekday] => Tuesday
    [month]   => June
    [0]       => 1055901520
)

参见

  • date() - 格式化一个本地时间／日期
  • idate() - 将本地时间日期格式化为整数
  • localtime() - 取得本地时间
  • time() - 返回当前的 Unix 时间戳
  • setlocale() - 设置地区信息

date
gettimeofday
Date/Time 函数


取得当前时间

getdate
gmdate
Date/Time 函数
PHP Manual

gettimeofday

(PHP 4, PHP 5, PHP 7)

gettimeofday — 取得当前时间

说明

mixed gettimeofday ([ bool $return_float = false ] )

本函数是 gettimeofday(2) 的接口。返回一个关联数组，包含有系统调用返回的数据。

参数

return_float

当其设为 TRUE 时，会返回一个浮点数而不是一个数组。

返回值

默认返回一个 array。如果 return_float 设置了则会返回一个 float。

数组中的键为：

  • "sec" - 自 Unix 纪元起的秒数
  • "usec" - 微秒数
  • "minuteswest" - 格林威治向西的分钟数
  • "dsttime" - 夏令时修正的类型

更新日志

版本 | 说明
5.1.0 | 增加了参数 return_float。

范例

Example #1 gettimeofday() 例子

<?php
print_r(gettimeofday());

echo gettimeofday(true);
?>

以上例程的输出类似于：

Array
(
    [sec] => 1073504408
    [usec] => 238215
    [minuteswest] => 0
    [dsttime] => 1
)

1073504408.23910

getdate
gmdate
Date/Time 函数


格式化一个 GMT/UTC 日期／时间

gettimeofday
gmmktime
Date/Time 函数
PHP Manual

gmdate

(PHP 4, PHP 5, PHP 7)

gmdate — 格式化一个 GMT/UTC 日期／时间

说明

string gmdate ( string $format [, int $timestamp ] )

同 date() 函数完全一样，只除了返回的时间是格林威治标准时（GMT）。例如当在中国（GMT +0800）运行以下程序时，第一行显示"Jan 01 2000 00:00:00"而第二行显示"Dec 31 1999 16:00:00"。

Example #1 gmdate() 例子

<?php
echo date("M d Y H:i:s", mktime (0,0,0,1,1,2000));
echo gmdate("M d Y H:i:s", mktime (0,0,0,1,1,2000));
?>

Note:

在 PHP 5.1.0 之前，负的时间戳（1970 年之前的日期）在某些系统下（例如 Windows）不能工作。

参见 date()，mktime()，gmmktime() 和 strftime()。

gettimeofday
gmmktime
Date/Time 函数


取得 GMT 日期的 UNIX 时间戳

gmdate
gmstrftime
Date/Time 函数
PHP Manual

gmmktime

(PHP 4, PHP 5, PHP 7)

gmmktime — 取得 GMT 日期的 UNIX 时间戳

说明

int gmmktime ([ int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst ]]]]]]] )

和 mktime() 完全一样，只除了返回值是格林威治标准时的时间戳。

参数总是表示 GMT 日期，因此 is_dst 对结果没有影响。

和 mktime() 一样，参数可以从右到左依次空着，空着的参数会被设为相应的当前 GMT 值。

Note:

自 5.1.0 起，is_dst 参数被废弃。因此应该用新的时区处理特性。

Note: gmmktime() 内部使用了 mktime()，因此只有转换成本地时间也合法的时间才能用在其中。 so only times valid in derived local time can be used.

Example #1 gmmktime() 在 Windows 中的边界

<?php
gmmktime(0, 0, 0, 1, 1, 1970); // 在 GMT 和西方合法，在东方不合法
?>

参见 mktime()，date() 和 time()。

gmdate
gmstrftime
Date/Time 函数


根据区域设置格式化 GMT/UTC 时间／日期

gmmktime
idate
Date/Time 函数
PHP Manual

gmstrftime

(PHP 4, PHP 5, PHP 7)

gmstrftime — 根据区域设置格式化 GMT/UTC 时间／日期

说明

string gmstrftime ( string $format [, int $timestamp ] )

和 strftime() 的行为相同，只除了返回时间是格林威治标准时（GMT）。例如，当在东部标准时（EST，GMT -500）运行时，下面第一行显示"Dec 31 1998 20:00:00"，而第二行显示"Jan 01 1999 01:00:00"。

Example #1 gmstrftime() 例子

<?php
setlocale(LC_TIME, 'en_US');
echo strftime("%b %d %Y %H:%M:%S", mktime (20,0,0,12,31,98))."\n";
echo gmstrftime("%b %d %Y %H:%M:%S", mktime (20,0,0,12,31,98))."\n";
?>

参见 strftime()。

gmmktime
idate
Date/Time 函数


将本地时间日期格式化为整数

gmstrftime
localtime
Date/Time 函数
PHP Manual

idate

(PHP 5, PHP 7)

idate — 将本地时间日期格式化为整数

说明

int idate ( string $format [, int $timestamp ] )

根据给定的格式字符对 timestamp 格式化并返回数字结果。timestamp 为可选项，默认值为本地当前时间，即 time() 的值。

和 date() 不同，idate() 只接受一个字符作为 format 参数。

format 参数可识别以下字符
format 字符 | 说明
B | Swatch Beat/Internet Time
d | 月份中的第几天
h | 小时（12 小时格式）
H | 小时（24 小时格式）
i | 分钟
I | 如果启用夏时制则返回 1，否则返回 0
L | 如果是闰年则返回 1，否则返回 0
m | 月份的数字
s | 秒数
t | 本月的总天数
U | 自 Unix 纪元（January 1 1970 00:00:00 GMT）起的秒数——这和 time() 作用相同
w | 星期中的第几天（星期天是 0）
W | ISO-8601 格式年份中的第几个星期，每星期从星期一开始
y | 年份（1 或 2 位数字——见下面说明）
Y | 年份（4 位数字）
z | 年份中的第几天
Z | 以秒为单位的时区偏移量

Note:

因为 idate() 总是返回 integer，不能以"0"开头，因此 idate() 可能会返回比用户期望中要少的数字。见下面例子：

<?php
$timestamp = strtotime('1st January 2004'); //1072915200

// 下面以两位数字格式显示年份，但是因为
// 以"0"打头，因此只会显示"4"
echo idate('y', $timestamp);
?>

参见 date() 和 time()。

gmstrftime
localtime
Date/Time 函数


取得本地时间

idate
microtime
Date/Time 函数
PHP Manual

localtime

(PHP 4, PHP 5, PHP 7)

localtime — 取得本地时间

说明

array localtime ([ int $timestamp = time() [, bool $is_associative = false ]] )

localtime() 函数返回一个数组，其结构和 C 函数调用返回的完全一样。

参数

timestamp

可选的 timestamp 参数是一个 integer 的 Unix 时间戳，如未指定，参数值默认为当前本地时间。也就是说，其值默认为 time() 的返回值。

is_associative

如果设为 FALSE 或未提供则返回的是普通的数字索引数组。如果该参数设为 TRUE 则 localtime() 函数返回包含有所有从 C 的 localtime 函数调用所返回的不同单元的关联数组。关联数组中不同的键名为：

  • "tm_sec" - 秒数， 0 到 59
  • "tm_min" - 分钟数， 0 到 59
  • "tm_hour" - 小时， 0 到 23
  • "tm_mday" - 月份中的第几日， 1 到 31
  • "tm_mon" - 年份中的第几个月， 0 (Jan) 到 11 (Dec)
  • "tm_year" - 年份，从 1900 开始
  • "tm_wday" - 星期中的第几天， 0 (Sun) 到 6 (Sat)
  • "tm_yday" - 一年中的第几天， 0 到 365
  • "tm_isdst" - 夏令时当前是否生效？ 如果是生效的是正数， 0 代表未生效，负数代表未知。

错误／异常

在每 次调用日期/时间函数时，如果时区无效则会引发 E_NOTICE 错误，如果使用系统设定值或 TZ 环境变量，则会引发 E_STRICT 或 E_WARNING 消息。参见 date_default_timezone_set()。

更新日志

版本 | 说明
5.1.0 | 现在发布 E_STRICT 和 E_NOTICE 时区错误。

范例

Example #1 localtime() 例子

<?php
$localtime = localtime();
$localtime_assoc = localtime(time(), true);
print_r($localtime);
print_r($localtime_assoc);
?>

以上例程的输出类似于：

Array
(
    [0] => 24
    [1] => 3
    [2] => 19
    [3] => 3
    [4] => 3
    [5] => 105
    [6] => 0
    [7] => 92
    [8] => 1
)

Array
(
    [tm_sec] => 24
    [tm_min] => 3
    [tm_hour] => 19
    [tm_mday] => 3
    [tm_mon] => 3
    [tm_year] => 105
    [tm_wday] => 0
    [tm_yday] => 92
    [tm_isdst] => 1
)

参见

  • getdate() - 取得日期／时间信息

idate
microtime
Date/Time 函数


返回当前 Unix 时间戳和微秒数

localtime
mktime
Date/Time 函数
PHP Manual

microtime

(PHP 4, PHP 5, PHP 7)

microtime — 返回当前 Unix 时间戳和微秒数

说明

mixed microtime ([ bool $get_as_float ] )

microtime() 当前 Unix 时间戳以及微秒数。本函数仅在支持 gettimeofday() 系统调用的操作系统下可用。

如果调用时不带可选参数，本函数以 "msec sec" 的格式返回一个字符串，其中 sec 是自 Unix 纪元（0:00:00 January 1, 1970 GMT）起到现在的秒数，msec 是微秒部分。字符串的两部分都是以秒为单位返回的。

如果给出了 get_as_float 参数并且其值等价于 TRUE，microtime() 将返回一个浮点数。

Note: get_as_float 参数是 PHP 5.0.0 新加的。

Example #1 用 microtime() 对脚本的运行计时

<?php
/**
 * Simple function to replicate PHP 5 behaviour
 */
function microtime_float()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}

$time_start = microtime_float();

// Sleep for a while
usleep(100);

$time_end = microtime_float();
$time = $time_end - $time_start;

echo "Did nothing in $time seconds\n";
?>

参见 time()。

localtime
mktime
Date/Time 函数


取得一个日期的 Unix 时间戳

microtime
strftime
Date/Time 函数
PHP Manual

mktime

(PHP 4, PHP 5, PHP 7)

mktime — 取得一个日期的 Unix 时间戳

说明

 int mktime
  ([ int $hour = date("H")
 [, int $minute = date("i")
 [, int $second = date("s")
 [, int $month = date("n")
 [, int $day = date("j")
 [, int $year = date("Y")
 [, int $is_dst = -1
]]]]]]] )

根据给出的参数返回 Unix 时间戳。时间戳是一个长整数，包含了从 Unix 纪元（January 1 1970 00:00:00 GMT）到给定时间的秒数。

参数可以从右向左省略，任何省略的参数会被设置成本地日期和时间的当前值。

注释

Note:

As of PHP 5.1, when called with no arguments, mktime() throws an E_STRICT notice: use the time() function instead.

参数

hour

小时数。 The number of the hour relative to the start of the day determined by month, day and year. Negative values reference the hour before midnight of the day in question. Values greater than 23 reference the appropriate hour in the following day(s).

minute

分钟数。 The number of the minute relative to the start of the hour. Negative values reference the minute in the previous hour. Values greater than 59 reference the appropriate minute in the following hour(s).

second

秒数（一分钟之内）。 The number of seconds relative to the start of the minute. Negative values reference the second in the previous minute. Values greater than 59 reference the appropriate second in the following minute(s).

month

月份数。 The number of the month relative to the end of the previous year. Values 1 to 12 reference the normal calendar months of the year in question. Values less than 1 (including negative values) reference the months in the previous year in reverse order, so 0 is December, -1 is November, etc. Values greater than 12 reference the appropriate month in the following year(s).

day

天数。 The number of the day relative to the end of the previous month. Values 1 to 28, 29, 30 or 31 (depending upon the month) reference the normal days in the relevant month. Values less than 1 (including negative values) reference the days in the previous month, so 0 is the last day of the previous month, -1 is the day before that, etc. Values greater than the number of days in the relevant month reference the appropriate day in the following month(s).

year

年份数，可以是两位或四位数字，0-69 对应于 2000-2069，70-100 对应于 1970-2000。在如今系统中普遍把 time_t 作为一个 32 位有符号整数的情况下，year 的合法范围是 1901 到 2038 之间，不过此限制自 PHP 5.1.0 起已被克服了。

is_dst

本参数可以设为 1，表示正处于夏时制时间（DST），0 表示不是夏时制，或者 -1（默认值）表示不知道是否是夏时制。如果未知，PHP 会尝试自己搞明白。这可能产生不可预知（但并非不正确）的结果。如果 PHP 运行的系统中启用了 DST 或者 is_dst 设为 1，某些时间是无效的。例如 DST 自 2:00 生效，则所有处于 2:00 到 3:00 之间的时间都无效，mktime() 会返回一个未定义（通常为负）的值。某些系统（例如 Solaris 8）的 DST 在午夜生效，则 DST 生效当天的 0:30 会被计算为前一天的 23:30。

Note:

自 PHP 5.1.0 起，本参数已被废弃。应该使用新的时区处理特性来替代。

Note:

PHP 7.0.0 起，此参数已经被移除。

返回值

mktime() 根据给出的参数返回 Unix 时间戳。如果参数非法，本函数返回 FALSE（在 PHP 5.1 之前返回 -1）。

错误／异常

在每 次调用日期/时间函数时，如果时区无效则会引发 E_NOTICE 错误，如果使用系统设定值或 TZ 环境变量，则会引发 E_STRICT 或 E_WARNING 消息。参见 date_default_timezone_set()。

更新日志

版本 | 说明
7.0.0 | is_dst参数已经被移除。
5.3.0 | mktime() now throws E_DEPRECATED notice if the is_dst parameter is used.
5.1.0 | is_dst 参数被废弃。出错时函数返回 FALSE 而不再是 -1。修正了本函数可以接受年月日参数全为零。
5.1.0 | When called with no arguments, mktime() throws E_STRICT notice. Use the time() function instead.
5.1.0 | 现在发布 E_STRICT 和 E_NOTICE 时区错误。

范例

Example #1 基本例子

<?php
// Set the default timezone to use. Available as of PHP 5.1
date_default_timezone_set('UTC');

// Prints: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));

// Prints something like: 2006-04-05T01:02:03+00:00
echo date('c', mktime(1, 2, 3, 4, 5, 2006));
?>

Example #2 mktime() 例子

mktime() 在做日期计算和验证方面很有用，它会自动计算超出范围的输入的正确值。例如下面例子中每一行都会产生字符串 "Jan-01-1998"。

<?php
echo date("M-d-Y", mktime(0, 0, 0, 12, 32, 1997));
echo date("M-d-Y", mktime(0, 0, 0, 13, 1, 1997));
echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 1998));
echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 98));
?>

Example #3 下个月的最后一天

任何给定月份的最后一天都可以被表示为下个月的第 "0" 天，而不是 -1 天。下面两个例子都会产生字符串 "The last day in Feb 2000 is: 29"。

<?php
$lastday = mktime(0, 0, 0, 3, 0, 2000);
echo strftime("Last day in Feb 2000 is: %d", $lastday);
$lastday = mktime(0, 0, 0, 4, -31, 2000);
echo strftime("Last day in Feb 2000 is: %d", $lastday);
?>

注释

Caution

在 PHP 5.1.0 之前，在任何已知 Windows 版本以及一些其它系统下不支持负的时间戳。因此年份的有效范围限制为 1970 到 2038。

参见

  • checkdate() - 验证一个格里高里日期
  • gmmktime() - 取得 GMT 日期的 UNIX 时间戳
  • date() - 格式化一个本地时间／日期
  • time() - 返回当前的 Unix 时间戳

microtime
strftime
Date/Time 函数


根据区域设置格式化本地时间／日期

mktime
strptime
Date/Time 函数
PHP Manual

strftime

(PHP 4, PHP 5, PHP 7)

strftime — 根据区域设置格式化本地时间／日期

说明

string strftime ( string $format [, int $timestamp = time() ] )

返回用给定的格式字串对给出的 timestamp 进行格式输出后的字符串。如果没有给出时间戳则用当前的本地时间。月份和星期几以及其它和语言有关的字符串写法和用 setlocale() 设定的当前的区域有关。

可能不是所有的转换标记都被 C 库文件支持，这种情况下 PHP 的 strftime() 也不支持。此外，不是所有的平台都支持负的时间戳，因此日期的范围可能限定在不早于 Unix 纪元。这意味着例如 %e, %T，%R 和 %D（可能更多）以及早于 Jan 1, 1970 的时间在 Windows，一些 Linux 发行版本，以及其它几个操作系统中无效。对于 Windows 系统，所支持的转换标记可在 » MSDN 网站找到。

参数

format

format 里能够识别的格式字串有以下标记：
格式 | 描述 | 返回值示例
日 --- ---
%a | 当前区域星期几的简写 | Sun 到 Sat
%A | 当前区域星期几的全称 | Sunday 到 Saturday
%d | 月份中的第几天，十进制数字（范围从 01 到 31） | 01 到 31
%e | 月份中的第几天，十进制数字，一位的数字前会加上一个空格（范围从 ' 1' 到 '31'） 在 Windows 上尚未按描述实现。更多信息见下方。 | 1 到 31
%j | 年份中的第几天，带前导零的三位十进制数（范围从 001 到 366） | 001 到 366
%u | 符合 ISO-8601 星期几的十进制数表达 [1,7]，1 表示星期一 | 1 (星期一) 到 7 (星期日)
%w | 星期中的第几天，星期天为 0 | 0 (星期天) 到 6 (星期六)
周 --- ---
%U | 本年的第几周，从第一周的第一个星期天作为第一天开始 | 13 (for the 13th full week of the year)
%V | %V - 本年第几周的 ISO-8601:1988 格式，范围从 01 到 53，第 1 周是本年第一个至少还有 4 天的星期，星期一作为每周的第一天。（用 %G 或者 %g 作为指定时间戳相应周数的年份组成。） | 01 到 53 (where 53 accounts for an overlapping week)
%W | 本年的第几周数，从第一周的第一个星期一作为第一天开始 | 46 (for the 46th week of the year beginning with a Monday)
月 --- ---
%b | 当前区域月份的简写 | Jan 到 Dec
%B | 当前区域月份的全称 | January 到 December
%h | 当前区域月份的简写（%b 的别名） | Jan 到 Dec
%m | 两位数的月份 | 01 (是一月份) 到 12 (是十二月份)
年 --- ---
%C | 两位数显示世纪（年份除以 100，截成整数） | 19 是 20 世纪
%g | 2 位数的年份，符合 ISO-8601:1988 星期数（参见 %V）。和 %V 的格式和值一样，只除了如果 ISO 星期数属于前一年或者后一年，则使用那一年。 | 比如：2009年1月6日那一周是 09。
%G | %g 的完整四位数版本 | 比如：2009年1月3日那一周是 2008.
%y | 两位数显示年份 | 比如： 09 是 2009，79 是 1979
%Y | 四位数显示年份 | 比如： 2038
时间 --- ---
%H | 以 24 小时格式显示两位小时数 | 00 到 23
%I | 以 12 小时格式显示两位小时数 | 01 到 12
%l（'L' 的小写） | 以 12 小时格式显示小时数，单个数字前含空格 | 1 到 12
%M | 两位的分钟数 | 00 到 59
%p | 指定时间的大写 "AM" 或 "PM" | 比如： 00:31 是 AM ，22:23 是PM
%P | 指定时间的小写 "am" 或 "pm" | 比如：00:31 是 am ，22:23 是pm
%r | 和 "%I:%M:%S %p" 一样 | 比如： 21:34:17 是 09:34:17 PM
%R | 和 "%H:%M" 一样 | 比如： 12:35 AM 是 00:35，4:44 PM 是 16:44
%S | 两位数字表示秒 | 00 到 59
%T | 和 "%H:%M:%S" 一样 | 比如： 09:34:17 PM 是 21:34:17
%X | 当前区域首选的时间表示法，不包括日期 | 例如： 03:59:16 或 15:59:16
%z | 从 UTC 的时区偏移 或 简写（由操作系统决定） | 比如： 东部时间是 -0500 或 EST
%Z | %z 没有给出的 UTC 的时区偏移 或 简写（由操作系统决定） | 比如： -0500 或 EST 是东部时间
时间和日期戳 --- ---
%c | 当前区域首选的日期时间表达 | 比如： 2009 年 2 月 5 日上午 12:45:10 是 Tue Feb 5 00:45:10 2009
%D | 和 "%m/%d/%y" 一样 | 比如： 2009 年 2 月 5 日是 02/05/09
%F | Same as "%Y-%m-%d" (commonly used in database datestamps) | 比如：2009 年 2 月 5 日是 2009-02-05
%s | Unix纪元的时间戳（和 time() 函数一样） | 比如： 1979 年 9 月 10 日上午 8 点 40 分 00 秒是 305815200
%x | 当前区域首选的时间表示法，不包括时间 | 比如： 2009 年 2 月 5 日是 02/05/09
其他 --- ---
%n 换行符("\n") ---
%t Tab 字符("\t") ---
%% 文字上的百分字符("%") ---

这个参数的最大长度是 1023 个字符。

Warning

尽管 ISO 9889:1999（当前的 C 标准）明确指出一周从星期一开始，但是 Sun Solaris 的一周似乎从星期天开始并作为 1。所以 %u 的结果也许不会和手册里描述得一样。

Warning

仅针对 Windows：这个函数里 %e 修饰符修饰符还不能支持 Windows。 为了得到这个值可以用 %#d 修饰符来代替。下例说明了如何写一个跨平台支持的函数。

Warning

仅针对 Mac OS X：这个函数里 %P 修饰符还不能支持 Mac OS X。

timestamp

可选的 timestamp 参数是一个 integer 的 Unix 时间戳，如未指定，参数值默认为当前本地时间。也就是说，其值默认为 time() 的返回值。

返回值

根据指定的 timestamp 或未给出 timestamp 是使用当前本地时间， 返回 format 格式化的字符。 月份、星期名和其他与语言相关的字符串遵守 setlocale() 设置的当前区域设置。

错误／异常

在每 次调用日期/时间函数时，如果时区无效则会引发 E_NOTICE 错误，如果使用系统设定值或 TZ 环境变量，则会引发 E_STRICT 或 E_WARNING 消息。参见 date_default_timezone_set()。

由于输出依赖于 C 库，所以一些转换标记并不被支持。 在 Windows 上，使用未知的转换标记将导致 5 E_WARNING 信息，并返回 FALSE。 在其他的操作系统上，你可能不能得到任何 E_WARNING 信息， 并且可能输出未经转换的转换标记。

更新日志

版本 | 说明
5.1.0 | 现在发布 E_STRICT 和 E_NOTICE 时区错误。

范例

如果你的系统里安装了各自的语言环境则下例能够正常运行。

Example #1 strftime() 区域的例子

<?php
setlocale(LC_TIME, "C");
echo strftime("%A");
setlocale(LC_TIME, "fi_FI");
echo strftime(" in Finnish is %A,");
setlocale(LC_TIME, "fr_FR");
echo strftime(" in French %A and");
setlocale(LC_TIME, "de_DE");
echo strftime(" in German %A.\n");
?>

Example #2 ISO 8601:1988 week number example

<?php
/*     December 2002 / January 2003
ISOWk  M   Tu  W   Thu F   Sa  Su
----- ----------------------------
51     16  17  18  19  20  21  22
52     23  24  25  26  27  28  29
1      30  31   1   2   3   4   5
2       6   7   8   9  10  11  12
3      13  14  15  16  17  18  19   */

// 输出： 12/28/2002 - %V,%G,%Y = 52,2002,2002
echo "12/28/2002 - %V,%G,%Y = " . strftime("%V,%G,%Y", strtotime("12/28/2002")) . "\n";

// 输出： 12/30/2002 - %V,%G,%Y = 1,2003,2002
echo "12/30/2002 - %V,%G,%Y = " . strftime("%V,%G,%Y", strtotime("12/30/2002")) . "\n";

// 输出： 1/3/2003 - %V,%G,%Y = 1,2003,2003
echo "1/3/2003 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/3/2003")) . "\n";

// 输出： 1/10/2003 - %V,%G,%Y = 2,2003,2003
echo "1/10/2003 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/10/2003")) . "\n";

/*     December 2004 / January 2005
ISOWk  M   Tu  W   Thu F   Sa  Su
----- ----------------------------
51     13  14  15  16  17  18  19
52     20  21  22  23  24  25  26
53     27  28  29  30  31   1   2
1       3   4   5   6   7   8   9
2      10  11  12  13  14  15  16   */

// 输出： 12/23/2004 - %V,%G,%Y = 52,2004,2004
echo "12/23/2004 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/23/2004")) . "\n";

// 输出： 12/31/2004 - %V,%G,%Y = 53,2004,2004
echo "12/31/2004 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/31/2004")) . "\n";

// 输出： 1/2/2005 - %V,%G,%Y = 53,2004,2005
echo "1/2/2005 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/2/2005")) . "\n";

// 输出： 1/3/2005 - %V,%G,%Y = 1,2005,2005
echo "1/3/2005 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/3/2005")) . "\n";

?>

Example #3 %e 修改器跨平台兼容的例子

<?php

// Jan 1: results in: '%e%1%' (%%, e, %%, %e, %%)
$format = '%%e%%%e%%';

// Check for Windows to find and replace the %e
// modifier correctly
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
    $format = preg_replace('#(?<!%)((?:%%)*)%e#', '</refsect1>%#d', $format);
}

echo strftime($format);
?>

Example #4 显示所有已知和未知的格式

<?php
// Describe the formats.
$strftimeFormats = array(
    'A' => 'A full textual representation of the day',
    'B' => 'Full month name, based on the locale',
    'C' => 'Two digit representation of the century (year divided by 100, truncated to an integer)',
    'D' => 'Same as "%m/%d/%y"',
    'E' => '',
    'F' => 'Same as "%Y-%m-%d"',
    'G' => 'The full four-digit version of %g',
    'H' => 'Two digit representation of the hour in 24-hour format',
    'I' => 'Two digit representation of the hour in 12-hour format',
    'J' => '',
    'K' => '',
    'L' => '',
    'M' => 'Two digit representation of the minute',
    'N' => '',
    'O' => '',
    'P' => 'lower-case "am" or "pm" based on the given time',
    'Q' => '',
    'R' => 'Same as "%H:%M"',
    'S' => 'Two digit representation of the second',
    'T' => 'Same as "%H:%M:%S"',
    'U' => 'Week number of the given year, starting with the first Sunday as the first week',
    'V' => 'ISO-8601:1988 week number of the given year, starting with the first week of the year with at least 4 weekdays, with Monday being the start of the week',
    'W' => 'A numeric representation of the week of the year, starting with the first Monday as the first week',
    'X' => 'Preferred time representation based on locale, without the date',
    'Y' => 'Four digit representation for the year',
    'Z' => 'The time zone offset/abbreviation option NOT given by %z (depends on operating system)',
    'a' => 'An abbreviated textual representation of the day',
    'b' => 'Abbreviated month name, based on the locale',
    'c' => 'Preferred date and time stamp based on local',
    'd' => 'Two-digit day of the month (with leading zeros)',
    'e' => 'Day of the month, with a space preceding single digits',
    'f' => '',
    'g' => 'Two digit representation of the year going by ISO-8601:1988 standards (see %V)',
    'h' => 'Abbreviated month name, based on the locale (an alias of %b)',
    'i' => '',
    'j' => 'Day of the year, 3 digits with leading zeros',
    'k' => '',
    'l' => 'Hour in 12-hour format, with a space preceeding single digits',
    'm' => 'Two digit representation of the month',
    'n' => 'A newline character ("\n")',
    'o' => '',
    'p' => 'UPPER-CASE "AM" or "PM" based on the given time',
    'q' => '',
    'r' => 'Same as "%I:%M:%S %p"',
    's' => 'Unix Epoch Time timestamp',
    't' => 'A Tab character ("\t")',
    'u' => 'ISO-8601 numeric representation of the day of the week',
    'v' => '',
    'w' => 'Numeric representation of the day of the week',
    'x' => 'Preferred date representation based on locale, without the time',
    'y' => 'Two digit representation of the year',
    'z' => 'Either the time zone offset from UTC or the abbreviation (depends on operating system)',
    '%' => 'A literal percentage character ("%")',
);

// Results.
$strftimeValues = array();

// Evaluate the formats whilst suppressing any errors.
foreach($strftimeFormats as $format => $description){
    if (False !== ($value = @strftime("%{$format}"))){
        $strftimeValues[$format] = $value;
    }
}

// Find the longest value.
$maxValueLength = 2 + max(array_map('strlen', $strftimeValues));

// Report known formats.
foreach($strftimeValues as $format => $value){
    echo "Known format   : '{$format}' = ", str_pad("'{$value}'", $maxValueLength), " ( {$strftimeFormats[$format]} )\n";
}

// Report unknown formats.
foreach(array_diff_key($strftimeFormats, $strftimeValues) as $format => $description){
    echo "Unknown format : '{$format}'   ", str_pad(' ', $maxValueLength), ($description ? " ( {$description} )" : ''), "\n";
}
?>

以上例程的输出类似于：

Known format   : 'A' = 'Friday'            ( A full textual representation of the day )
Known format   : 'B' = 'December'          ( Full month name, based on the locale )
Known format   : 'H' = '11'                ( Two digit representation of the hour in 24-hour format )
Known format   : 'I' = '11'                ( Two digit representation of the hour in 12-hour format )
Known format   : 'M' = '24'                ( Two digit representation of the minute )
Known format   : 'S' = '44'                ( Two digit representation of the second )
Known format   : 'U' = '48'                ( Week number of the given year, starting with the first Sunday as the first week )
Known format   : 'W' = '48'                ( A numeric representation of the week of the year, starting with the first Monday as the first week )
Known format   : 'X' = '11:24:44'          ( Preferred time representation based on locale, without the date )
Known format   : 'Y' = '2010'              ( Four digit representation for the year )
Known format   : 'Z' = 'GMT Standard Time' ( The time zone offset/abbreviation option NOT given by %z (depends on operating system) )
Known format   : 'a' = 'Fri'               ( An abbreviated textual representation of the day )
Known format   : 'b' = 'Dec'               ( Abbreviated month name, based on the locale )
Known format   : 'c' = '12/03/10 11:24:44' ( Preferred date and time stamp based on local )
Known format   : 'd' = '03'                ( Two-digit day of the month (with leading zeros) )
Known format   : 'j' = '337'               ( Day of the year, 3 digits with leading zeros )
Known format   : 'm' = '12'                ( Two digit representation of the month )
Known format   : 'p' = 'AM'                ( UPPER-CASE "AM" or "PM" based on the given time )
Known format   : 'w' = '5'                 ( Numeric representation of the day of the week )
Known format   : 'x' = '12/03/10'          ( Preferred date representation based on locale, without the time )
Known format   : 'y' = '10'                ( Two digit representation of the year )
Known format   : 'z' = 'GMT Standard Time' ( Either the time zone offset from UTC or the abbreviation (depends on operating system) )
Known format   : '%' = '%'                 ( A literal percentage character ("%") )
Unknown format : 'C'                       ( Two digit representation of the century (year divided by 100, truncated to an integer) )
Unknown format : 'D'                       ( Same as "%m/%d/%y" )
Unknown format : 'E'
Unknown format : 'F'                       ( Same as "%Y-%m-%d" )
Unknown format : 'G'                       ( The full four-digit version of %g )
Unknown format : 'J'
Unknown format : 'K'
Unknown format : 'L'
Unknown format : 'N'
Unknown format : 'O'
Unknown format : 'P'                       ( lower-case "am" or "pm" based on the given time )
Unknown format : 'Q'
Unknown format : 'R'                       ( Same as "%H:%M" )
Unknown format : 'T'                       ( Same as "%H:%M:%S" )
Unknown format : 'V'                       ( ISO-8601:1988 week number of the given year, starting with the first week of the year with at least 4 weekdays, with Monday being the start of the week )
Unknown format : 'e'                       ( Day of the month, with a space preceding single digits )
Unknown format : 'f'
Unknown format : 'g'                       ( Two digit representation of the year going by ISO-8601:1988 standards (see %V) )
Unknown format : 'h'                       ( Abbreviated month name, based on the locale (an alias of %b) )
Unknown format : 'i'
Unknown format : 'k'
Unknown format : 'l'                       ( Hour in 12-hour format, with a space preceeding single digits )
Unknown format : 'n'                       ( A newline character ("\n") )
Unknown format : 'o'
Unknown format : 'q'
Unknown format : 'r'                       ( Same as "%I:%M:%S %p" )
Unknown format : 's'                       ( Unix Epoch Time timestamp )
Unknown format : 't'                       ( A Tab character ("\t") )
Unknown format : 'u'                       ( ISO-8601 numeric representation of the day of the week )
Unknown format : 'v'

注释

Note: %G 和 %V，如果数字编号系统未能充分理解，基于 ISO 8601:1988 的星期数可能得出未预期的结果。见上面的 %V 和以下的例子。

参见

  • » 在线 strftime() 格式设计工具
  • setlocale() - 设置地区信息
  • mktime() - 取得一个日期的 Unix 时间戳
  • strptime() - 解析由 strftime 生成的日期／时间
  • gmstrftime() - 根据区域设置格式化 GMT/UTC 时间／日期
  • » Open Group specification of strftime()

mktime
strptime
Date/Time 函数


解析由 strftime 生成的日期／时间

strftime
strtotime
Date/Time 函数
PHP Manual

strptime

(PHP 5 >= 5.1.0, PHP 7)

strptime — 解析由 strftime() 生成的日期／时间

说明

array strptime ( string $date , string $format )

strptime() 返回一个将 date 解析后的数组，如果出错返回 FALSE。

月份和星期几的名字以及其它与语种有关的字符串对应于 setlocale()设定的当前区域（LC_TIME）。

参数

date（string）

被解析的字符串（例如从 strftime() 返回的）

format（string）

date 所使用的格式（例如同 strftime() 中所使用的相同）。

更多有关格式选项的信息见 strftime() 页面。

返回值

返回一个数组 或者在失败时返回 FALSE

数组中包含以下单元
键名 | 说明
tm_sec | 当前分钟内的秒数（0-61）
tm_min | 当前小时内的分钟数（0-59）
tm_hour | 午夜起的小时数（0-23）
tm_mday | 月份中的第几天（1-31）
tm_mon | 自一月起过了几个月（0-11）
tm_year | 自 1900 年起过了几年
tm_wday | 自星期天起过了几天（0-6）
tm_yday | 本年自一月一日起过了多少天（0-365）
unparsed | date 中未能通过指定的 format 识别的部分

范例

Example #1 strptime() 例子

<?php
$format = '%d/%m/%Y %H:%M:%S';
$strf = strftime($format);

echo "$strf\n";

print_r(strptime($strf, $format));
?>

以上例程的输出类似于：

03/10/2004 15:54:19

Array
(
    [tm_sec] => 19
    [tm_min] => 54
    [tm_hour] => 15
    [tm_mday] => 3
    [tm_mon] => 9
    [tm_year] => 104
    [tm_wday] => 0
    [tm_yday] => 276
    [unparsed] =>
)

注释

Note: 此函数未在 Windows 平台下实现。

Note:

Internally, this function calls the strptime() function provided by the system's C library. This function can exhibit noticeably different behaviour across different operating systems. The use of date_parse_from_format(), which does not suffer from these issues, is recommended on PHP 5.3.0 and later.

Note:

"tm_sec" includes any leap seconds (currently upto 2 a year). For more information on leap seconds, see the » Wikipedia article on leap seconds.

Note:

Prior to PHP 5.2.0, this function could return undefined behaviour. Notably, the "tm_sec", "tm_min" and "tm_hour" entries would return undefined values.

参见

  • checkdate() - 验证一个格里高里日期
  • strftime() - 根据区域设置格式化本地时间／日期
  • date_parse_from_format() - Get info about given date formatted according to the specified format
  • DateTime::createFromFormat() - Parses a time string according to a specified format

strftime
strtotime
Date/Time 函数


将任何字符串的日期时间描述解析为 Unix 时间戳

strptime
time
Date/Time 函数
PHP Manual

strtotime

(PHP 4, PHP 5, PHP 7)

strtotime — 将任何字符串的日期时间描述解析为 Unix 时间戳

说明

int strtotime ( string $time [, int $now = time() ] )

本函数预期接受一个包含美国英语日期格式的字符串并尝试将其解析为 Unix 时间戳（自 January 1 1970 00:00:00 GMT 起的秒数），其值相对于 now 参数给出的时间，如果没有提供此参数则用系统当前时间。

本函数将使用 TZ 环境变量（如果有的话）来计算时间戳。自 PHP 5.1.0 起有更容易的方法来定义时区用于所有的日期／时间函数。此过程在 date_default_timezone_get() 函数页面中有说明。

参数

time

日期/时间字符串。正确格式的说明详见 日期与时间格式。

now

用来计算返回值的时间戳。

返回值

成功则返回时间戳，否则返回 FALSE。在 PHP 5.1.0 之前本函数在失败时返回 -1。

错误／异常

在每 次调用日期/时间函数时，如果时区无效则会引发 E_NOTICE 错误，如果使用系统设定值或 TZ 环境变量，则会引发 E_STRICT 或 E_WARNING 消息。参见 date_default_timezone_set()。

更新日志

版本 | 说明
5.3.0 | Prior to PHP 5.3.0, relative time formats supplied to the time argument of strtotime() such as this week, previous week, last week, and next week were interpreted to mean a 7 day period relative to the current date/time, rather than a week period of Monday through Sunday.
5.3.0 | 在 PHP 5.3.0 之前， 24:00 不是一个有效的格式，并且 strtotime() 会返回 FALSE。
5.2.7 | In PHP 5 prior to 5.2.7, requesting a given occurrence of a given weekday in a month where that weekday was the first day of the month would incorrectly add one week to the returned timestamp. This has been corrected in 5.2.7 and later versions.
5.1.0 | 失败时返回 FALSE，不再是 -1。
5.1.0 | 现在发布 E_STRICT 和 E_NOTICE 时区错误。
5.0.2 | 在 PHP 5 中到 5.0.2 之前，"now" 和其它相对时间从今天午夜起错误计算了。这和正确从当前时间起计算的其它版本不同。
5.0.0 | Microseconds began to be allowed, but they are ignored.

范例

Example #1 strtotime() 例子

<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
?>

Example #2 失败检查

<?php
$str = 'Not Good';

// previous to PHP 5.1.0 you would compare with -1, instead of false
if (($timestamp = strtotime($str)) === false) {
    echo "The string ($str) is bogus";
} else {
    echo "$str == " . date('l dS of F Y h:i:s A', $timestamp);
}
?>

注释

Note:

如果给定的年份是两位数字的格式，则其值 0-69 表示 2000-2069，70-100 表示 1970-2000。 See the notes below for possible differences on 32bit systems (possible dates might end on 2038-01-19 03:14:07).

Note:

有效的时间戳通常从 Fri, 13 Dec 1901 20:45:54 GMT 到 Tue, 19 Jan 2038 03:14:07 GMT（对应于 32 位有符号整数的最小值和最大值）。

PHP 5.1.0 之前，不是所有的平台都支持负的时间戳，那么日记范围就被限制为不能早于 Unix 纪元。这意味着在 1970 年 1 月 1 日之前的日期将不能用在 Windows，一些 Linux 版本，以及几个其它的操作系统中。

For 64-bit versions of PHP, the valid range of a timestamp is effectively infinite, as 64 bits can represent approximately 293 billion years in either direction.

Note:

Dates in the m/d/y or d-m-y formats are disambiguated by looking at the separator between the various components: if the separator is a slash (/), then the American m/d/y is assumed; whereas if the separator is a dash (-) or a dot (.), then the European d-m-y format is assumed. If, however, the year is given in a two digit format and the separator is a dash (-, the date string is parsed as y-m-d.

To avoid potential ambiguity, it's best to use ISO 8601 (YYYY-MM-DD) dates or DateTime::createFromFormat() when possible.

Note:

Using this function for mathematical operations is not advisable. It is better to use DateTime::add() and DateTime::sub() in PHP 5.3 and later, or DateTime::modify() in PHP 5.2.

参见

  • Date and Time Formats
  • DateTime::createFromFormat() - Parses a time string according to a specified format
  • checkdate() - 验证一个格里高里日期
  • strptime() - 解析由 strftime 生成的日期／时间

strptime
time
Date/Time 函数


返回当前的 Unix 时间戳

strtotime
timezone_abbreviations_list
Date/Time 函数
PHP Manual

time

(PHP 4, PHP 5, PHP 7)

time — 返回当前的 Unix 时间戳

说明

int time ( void )

返回自从 Unix 纪元（格林威治时间 1970 年 1 月 1 日 00:00:00）到当前时间的秒数。

范例

Example #1 time() 例子

<?php
$nextWeek = time() + (7 * 24 * 60 * 60);
                   // 7 days; 24 hours; 60 mins; 60 secs
echo 'Now:       '. date('Y-m-d') ."\n";
echo 'Next Week: '. date('Y-m-d', $nextWeek) ."\n";
// or using strtotime():
echo 'Next Week: '. date('Y-m-d', strtotime('+1 week')) ."\n";
?>

以上例程的输出类似于：

Now:       2005-03-30
Next Week: 2005-04-06
Next Week: 2005-04-06

注释

Tip

自 PHP 5.1 起在 $_SERVER['REQUEST_TIME'] 中保存了发起该请求时刻的时间戳。

参见

  • date() - 格式化一个本地时间／日期
  • microtime() - 返回当前 Unix 时间戳和微秒数

strtotime
timezone_abbreviations_list
Date/Time 函数


别名 DateTimeZone::listAbbreviations

time
timezone_identifiers_list
Date/Time 函数
PHP Manual

timezone_abbreviations_list

(PHP 5 >= 5.2.0, PHP 7)

timezone_abbreviations_list — 别名 DateTimeZone::listAbbreviations()

说明

此函数是该函数的别名： DateTimeZone::listAbbreviations()

time
timezone_identifiers_list
Date/Time 函数


别名 DateTimeZone::listIdentifiers

timezone_abbreviations_list
timezone_location_get
Date/Time 函数
PHP Manual

timezone_identifiers_list

(PHP 5 >= 5.2.0, PHP 7)

timezone_identifiers_list — 别名 DateTimeZone::listIdentifiers()

说明

此函数是该函数的别名： DateTimeZone::listIdentifiers()

timezone_abbreviations_list
timezone_location_get
Date/Time 函数


别名 DateTimeZone::getLocation

timezone_identifiers_list
timezone_name_from_abbr
Date/Time 函数
PHP Manual

timezone_location_get

(PHP 5 >= 5.3.0, PHP 7)

timezone_location_get — 别名 DateTimeZone::getLocation()

说明

此函数是该函数的别名： DateTimeZone::getLocation()

timezone_identifiers_list
timezone_name_from_abbr
Date/Time 函数


Returns the timezone name from abbreviation

timezone_location_get
timezone_name_get
Date/Time 函数
PHP Manual

timezone_name_from_abbr

(PHP 5 >= 5.1.3, PHP 7)

timezone_name_from_abbr — Returns the timezone name from abbreviation

说明

string timezone_name_from_abbr ( string $abbr [, int $gmtOffset = -1 [, int $isdst = -1 ]] )

参数

abbr

Time zone abbreviation.

gmtOffset

Offset from GMT in seconds. Defaults to -1 which means that first found time zone corresponding to abbr is returned. Otherwise exact offset is searched and only if not found then the first time zone with any offset is returned.

isdst

Daylight saving time indicator. Defaults to -1, which means that whether the time zone has daylight saving or not is not taken into consideration when searching. If this is set to 1, then the gmtOffset is assumed to be an offset with daylight saving in effect; if 0, then gmtOffset is assumed to be an offset without daylight saving in effect. If abbr doesn't exist then the time zone is searched solely by the gmtOffset and isdst.

返回值

Returns time zone name on success 或者在失败时返回 FALSE.

范例

Example #1 A timezone_name_from_abbr() example

<?php
echo timezone_name_from_abbr("CET") . "\n";
echo timezone_name_from_abbr("", 3600, 0) . "\n";
?>

以上例程的输出类似于：

Europe/Berlin
Europe/Paris

参见

  • timezone_abbreviations_list() - 别名 DateTimeZone::listAbbreviations

timezone_location_get
timezone_name_get
Date/Time 函数


别名 DateTimeZone::getName

timezone_name_from_abbr
timezone_offset_get
Date/Time 函数
PHP Manual

timezone_name_get

(PHP 5 >= 5.2.0, PHP 7)

timezone_name_get — 别名 DateTimeZone::getName()

说明

此函数是该函数的别名： DateTimeZone::getName()

timezone_name_from_abbr
timezone_offset_get
Date/Time 函数


别名 DateTimeZone::getOffset

timezone_name_get
timezone_open
Date/Time 函数
PHP Manual

timezone_offset_get

(PHP 5 >= 5.2.0, PHP 7)

timezone_offset_get — 别名 DateTimeZone::getOffset()

说明

此函数是该函数的别名： DateTimeZone::getOffset()

timezone_name_get
timezone_open
Date/Time 函数


别名 DateTimeZone::__construct

timezone_offset_get
timezone_transitions_get
Date/Time 函数
PHP Manual

timezone_open

(PHP 5 >= 5.2.0, PHP 7)

timezone_open — 别名 DateTimeZone::__construct()

说明

此函数是该函数的别名： DateTimeZone::__construct()

timezone_offset_get
timezone_transitions_get
Date/Time 函数


别名 DateTimeZone::getTransitions

timezone_open
timezone_version_get
Date/Time 函数
PHP Manual

timezone_transitions_get

(PHP 5 >= 5.2.0, PHP 7)

timezone_transitions_get — 别名 DateTimeZone::getTransitions()

说明

此函数是该函数的别名： DateTimeZone::getTransitions()

timezone_open
timezone_version_get
Date/Time 函数


Gets the version of the timezonedb

timezone_transitions_get
Supported Date and Time Formats
Date/Time 函数
PHP Manual

timezone_version_get

(PHP 5 >= 5.3.0, PHP 7)

timezone_version_get — Gets the version of the timezonedb

说明

string timezone_version_get ( void )

Returns the current version of the timezonedb.

返回值

Returns a string.

范例

Example #1 Getting the timezonedb version

<?php
echo timezone_version_get();
?>

以上例程的输出类似于：

2009.7

参见

  • List of Supported Timezones

timezone_transitions_get
Supported Date and Time Formats
Date/Time 函数


Supported Date and Time Formats

Table of Contents

  • Time Formats
  • Date Formats
  • Compound Formats
  • Relative Formats

This section describes all the different formats that the strtotime(), DateTime and date_create() parser understands. The formats are grouped by section. In most cases formats from different sections can be used in the same date/time string. For each of the supported formats, one or more examples are given, as well as a description for the format. Characters in single quotes in the formats are case-insensitive ('t' could be t or T), characters in double quotes are case-sensitive ("T" is only T).

timezone_version_get
Time Formats
日期/时间


Time Formats

This page describes the different time formats that the strtotime(), DateTime and date_create() parser understands.

Used Symbols
Description | Formats | Examples
frac | . [0-9]+ | ".21342", ".85"
hh | "0"?[1-9] | "1"[0-2] | "04", "7", "12"
HH | [01][0-9] | "2"[0-4] | "04", "07", "19"
meridian | [AaPp] .? [Mm] .? [\0\t ] | "A.m.", "pM", "am."
MM | [0-5][0-9] | "00", "12", "59"
II | [0-5][0-9] | "00", "12", "59"
space | [ \t] |
tz | "("? [A-Za-z]{1,6} ")"? | [A-Z][a-z]+([_/][A-Z][a-z]+)+ | "CEST", "Europe/Amsterdam", "America/Indiana/Knox"
tzcorrection | "GMT"? [+-] hh ":"? MM? | "+0400", "GMT-07:00", "-07:00"
12 Hour Notation
Description | Format | Examples
Hour only, with meridian | hh space? meridian | "4 am", "5PM"
Hour and minutes, with meridian | hh [.:] MM space? meridian | "4:08 am", "7:19P.M."
Hour, minutes and seconds, with meridian | hh [.:] MM [.:] II space? meridian | "4:08:37 am", "7:19:19P.M."
MS SQL (Hour, minutes, seconds and fraction with meridian), PHP 5.3 and later only | hh ":" MM ":" II [.:] [0-9]+ meridian | "4:08:39:12313am"
24 Hour Notation
Description | Format | Examples
Hour and minutes | 't'? HH [.:] MM | "04:08", "19.19", "T23:43"
Hour and minutes, no colon | 't'? HH MM | "0408", "t1919", "T2343"
Hour, minutes and seconds | 't'? HH [.:] MM [.:] II | "04.08.37", "t19:19:19"
Hour, minutes and seconds, no colon | 't'? HH MM II | "040837", "T191919"
Hour, minutes, seconds and timezone | 't'? HH [.:] MM [.:] II space? ( tzcorrection | tz ) | "040837CEST", "T191919-0700"
Hour, minutes, seconds and fraction | 't'? HH [.:] MM [.:] II frac | "04.08.37.81412", "19:19:19.532453"
Time zone information | tz | tzcorrection | "CEST", "Europe/Amsterdam", "+0430", "GMT-06:00"
Supported Date and Time Formats
Date Formats
Supported Date and Time Formats


Date Formats

This page describes the different date formats that the strtotime(), DateTime and date_create() parser understands.

Used Symbols
Description | Format | Examples
daysuf | "st" | "nd" | "rd" | "th" |
dd | ([0-2]?[0-9] | "3"[01]) daysuf? | "7th", "22nd", "31"
DD | "0" [0-9] | [1-2][0-9] | "3" [01] | "07", "31"
m | 'january' | 'february' | 'march' | 'april' | 'may' | 'june' | 'july' | 'august' | 'september' | 'october' | 'november' | 'december' | 'jan' | 'feb' | 'mar' | 'apr' | 'may' | 'jun' | 'jul' | 'aug' | 'sep' | 'sept' | 'oct' | 'nov' | 'dec' | "I" | "II" | "III" | "IV" | "V" | "VI" | "VII" | "VIII" | "IX" | "X" | "XI" | "XII" |
M | 'jan' | 'feb' | 'mar' | 'apr' | 'may' | 'jun' | 'jul' | 'aug' | 'sep' | 'sept' | 'oct' | 'nov' | 'dec' |
mm | "0"? [0-9] | "1"[0-2] | "0", "04", "7", "12"
MM | "0" [0-9] | "1"[0-2] | "00", "04", "07", "12"
y | [0-9]{1,4} | "00", "78", "08", "8", "2008"
yy | [0-9]{2} | "00", "08", "78"
YY | [0-9]{4} | "2000", "2008", "1978"
Localized Notations
Description | Format | Examples
American month and day | mm "/" dd | "5/12", "10/27"
American month, day and year | mm "/" dd "/" y | "12/22/78", "1/17/2006", "1/17/6"
Four digit year, month and day with slashes | YY "/" mm "/" dd | "2008/6/30", "1978/12/22"
Four digit year and month (GNU) | YY "-" mm | "2008-6", "2008-06", "1978-12"
Year, month and day with dashes | y "-" mm "-" dd | "2008-6-30", "78-12-22", "8-6-21"
Day, month and four digit year, with dots, tabs or dashes | dd [.\t-] mm [.-] YY | "30-6-2008", "22.12.1978"
Day, month and two digit year, with dots or tabs | dd [.\t] mm "." yy | "30.6.08", "22\t12.78"
Day, textual month and year | dd ([ \t.-])* m ([ \t.-])* y | "30-June 2008", "22DEC78", "14 III 1879"
Textual month and four digit year (Day reset to 1) | m ([ \t.-])* YY | "June 2008", "DEC1978", "March 1879"
Four digit year and textual month (Day reset to 1) | YY ([ \t.-])* m | "2008 June", "1978-XII", "1879.MArCH"
Textual month, day and year | m ([ .\t-])* dd [,.stndrh\t ]+ y | "July 1st, 2008", "April 17, 1790", "May.9,78"
Textual month and day | m ([ .\t-])* dd [,.stndrh\t ]* | "July 1st,", "Apr 17", "May.9"
Day and textual month | d ([ .\t-])* m | "1 July", "17 Apr", "9.May"
Month abbreviation, day and year | M "-" DD "-" y | "May-09-78", "Apr-17-1790"
Year, month abbreviation and day | y "-" M "-" DD | "78-Dec-22", "1814-MAY-17"
Year (and just the year) | YY | "1978", "2008"
Textual month (and just the month) | m | "March", "jun", "DEC"
ISO8601 Notations
Description | Format | Examples
Eight digit year, month and day | YY MM DD | "15810726", "19780417", "18140517"
Four digit year, month and day with slashes | YY "/" MM "/" DD | "2008/06/30", "1978/12/22"
Two digit year, month and day with dashes | yy "-" MM "-" DD | "08-06-30", "78-12-22"
Four digit year with optional sign, month and day | [+-]? YY "-" MM "-" DD | "-0002-07-26", "+1978-04-17", "1814-05-17"

Note:

For the y and yy formats, years below 100 are handled in a special way when the y or yy symbol is used. If the year falls in the range 0 (inclusive) to 69 (inclusive), 2000 is added. If the year falls in the range 70 (inclusive) to 99 (inclusive) then 1900 is added. This means that "00-01-01" is interpreted as "2000-01-01".

Note:

The "Day, month and two digit year, with dots or tabs" format (dd [.\t] mm "." yy) only works for the year values 61 (inclusive) to 99 (inclusive) - outside those years the time format "HH [.:] MM [.:] SS" has precedence.

Note:

The "Year (and just the year)" format only works if a time string has already been found -- otherwise this format is recognised as HH MM.

Note:

It is possible to over- and underflow the dd and DD format. Day 0 means the last day of previous month, whereas overflows count into the next month. This makes "2008-08-00" equivalent to "2008-07-31" and "2008-06-31" equivalent to "2008-07-01" (June only has 30 days).

Note that as of PHP 5.1.0 the day range is restricted to 0-31 as indicated by the regular expression above. Thus "2008-06-32" is not a valid date string, for instance.

It is also possible to underflow the mm and MM formats with the value 0. A month value of 0 means December of the previous year. As example "2008-00-22" is equivalent to "2007-12-22".

If you combine the previous two facts and underflow both the day and the month, the following happens: "2008-00-00" first gets converted to "2007-12-00" which then gets converted to "2007-11-30". This also happens with the string "0000-00-00", which gets transformed into "-0001-11-30" (the year -1 in the ISO 8601 calendar, which is 2 BC in the proleptic Gregorian calendar).

Time Formats
Compound Formats
Supported Date and Time Formats


Compound Formats

This page describes the different compound date/time formats that the strtotime(), DateTime and date_create() parser understands.

Used Symbols
Description | Formats | Examples
DD | "0" [0-9] | [1-2][0-9] | "3" [01] | "02", "12", "31"
doy | "00"[1-9] | "0"[1-9][0-9] | [1-2][0-9][0-9] | "3"[0-5][0-9] | "36"[0-6] | "001", "012", "180", "350", "366"
frac | . [0-9]+ | ".21342", ".85"
hh | "0"?[1-9] | "1"[0-2] | "04", "7", "12"
HH | [01][0-9] | "2"[0-4] | "04", "7", "19"
meridian | [AaPp] .? [Mm] .? [\0\t ] | "A.m.", "pM", "am."
ii | [0-5][0-9] | "04", "8", "59"
II | [0-5][0-9] | "04", "08", "59"
M | 'jan' | 'feb' | 'mar' | 'apr' | 'may' | 'jun' | 'jul' | 'aug' | 'sep' | 'sept' | 'oct' | 'nov' | 'dec' |
MM | [0-1][0-9] | "00", "12"
space | [ \t] |
ss | [0-5][0-9] | "04", "8", "59"
SS | [0-5][0-9] | "04", "08", "59"
W | "0"[1-9] | [1-4][0-9] | "5"[0-3] | "05", "17", "53"
tzcorrection | "GMT"? [+-] hh ":"? II? | "+0400", "GMT-07:00", "-07:00"
YY | [0-9]{4} | "2000", "2008", "1978"
Localized Notations
Description | Format | Examples
Common Log Format | dd "/" M "/" YY : HH ":" II ":" SS space tzcorrection | "10/Oct/2000:13:55:36 -0700"
EXIF | YY ":" MM ":" DD " " HH ":" II ":" SS | "2008:08:07 18:11:31"
ISO year with ISO week | YY "-"? "W" W | "2008W27", "2008-W28"
ISO year with ISO week and day | YY "-"? "W" W "-"? [0-7] | "2008W273", "2008-W28-3"
MySQL | YY "-" MM "-" DD " " HH ":" II ":" SS | "2008-08-07 18:11:31"
PostgreSQL: Year with day-of-year | YY "."? doy | "2008.197", "2008197"
SOAP | YY "-" MM "-" DD "T" HH ":" II ":" SS frac tzcorrection? | "2008-07-01T22:35:17.02", "2008-07-01T22:35:17.03+08:00"
Unix Timestamp | "@" "-"? [0-9]+ | "@1215282385"
XMLRPC | YY MM DD "T" hh ":" II ":" SS | "20080701T22:38:07", "20080701T9:38:07"
XMLRPC (Compact) | YY MM DD 't' hh II SS | "20080701t223807", "20080701T093807"
WDDX | YY "-" mm "-" dd "T" hh ":" ii ":" ss | "2008-7-1T9:3:37"

Note:

The "W" in the "ISO year with ISO week" and "ISO year with ISO week and day" formats is case-sensitive, you can only use the upper case "W".

The "T" in the SOAP, XMRPC and WDDX formats is case-sensitive, you can only use the upper case "T".

The "Unix Timestamp" format sets the timezone to UTC.

Date Formats
Relative Formats
Supported Date and Time Formats


Relative Formats

This page describes the different relative date/time formats that the strtotime(), DateTime and date_create() parser understands.

Used Symbols
Description | Format
dayname | 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat'
daytext | 'weekday' | 'weekdays'
number | [+-]?[0-9]+
ordinal | 'first' | 'second' | 'third' | 'fourth' | 'fifth' | 'sixth' | 'seventh' | 'eighth' | 'ninth' | 'tenth' | 'eleventh' | 'twelfth' | 'next' | 'last' | 'previous' | 'this'
reltext | 'next' | 'last' | 'previous' | 'this'
space | [ \t]+
unit | (('sec' | 'second' | 'min' | 'minute' | 'hour' | 'day' | 'fortnight' | 'forthnight' | 'month' | 'year') 's'?) | 'weeks' | daytext
Day-based Notations
Format | Description | Examples
'yesterday' | Midnight of yesterday | "yesterday 14:00"
'midnight' | The time is set to 00:00:00 |
'today' | The time is set to 00:00:00 |
'now' | Now - this is simply ignored |
'noon' | The time is set to 12:00:00 | "yesterday noon"
'tomorrow' | Midnight of tomorrow |
'back of' hour | 15 minutes past the specified hour | "back of 7pm", "back of 15"
'front of' hour | 15 minutes before the specified hour | "front of 5am", "front of 23"
'first day of' | Sets the day of the first of the current month. This phrase is best used together with a month name following it. | "first day of January 2008"
'last day of' | Sets the day to the last day of the current month. This phrase is best used together with a month name following it. | "last day of next month"
ordinal space dayname space 'of' | Calculates the x-th week day of the current month. | "first sat of July 2008"
'last' space dayname space 'of' | Calculates the last week day of the current month. | "last sat of July 2008"
number space? (unit | 'week') | Handles relative time items where the value is a number. | "+5 weeks", "12 day", "-7 weekdays"
ordinal space unit | Handles relative time items where the value is text. | "fifth day", "second month"
'ago' | Negates all the values of previously found relative time items. | "2 days ago", "8 days ago 14:00", "2 months 5 days ago", "2 months ago 5 days", "2 days ago"
dayname | Moves to the next day of this name. | "Monday"
reltext space 'week' | Handles the special format "weekday + last/this/next week". | "Monday next week"

Note:

Relative statements are always processed after non-relative statements. This makes "+1 week july 2008" and "july 2008 +1 week" equivalent.

Exceptions to this rule are: "yesterday", "midnight", "today", "noon" and "tomorrow". Note that "tomorrow 11:00" and "11:00 tomorrow" are different. Considering today's date of "July 23rd, 2008" the first one produces "2008-07-24 11:00" where as the second one produces "2008-07-24 00:00". The reason for this is that those five statements directly influence the current time.

Note:

Observe the following remarks when the current day-of-week is the same as the day-of-week used in the date/time string. The current day-of-week could have been (re-)calculated by non-relative parts of the date/time string however.

  1. "dayname" does not advance to another day. (Example: "Wed July 23rd, 2008" means "2008-07-23").
  2. "number dayname" does not advance to another day. (Example: "1 wednesday july 23rd, 2008" means "2008-07-23").
  3. "number week dayname" will first add the number of weeks, but does not advance to another day. In this case "number week" and "dayname" are two distinct blocks. (Example: "+1 week wednesday july 23rd, 2008" means "2008-07-30").
  4. "ordinal dayname" does advance to another day. (Example "first wednesday july 23rd, 2008" means "2008-07-30").
  5. "number week ordinal dayname" will first add the number of weeks, and then advances to another day. In this case "number week" and "ordinal dayname" are two distinct blocks. (Example: "+1 week first wednesday july 23rd, 2008" means "2008-08-06").
  6. "ordinal dayname 'of' " does not advance to another day. (Example: "first wednesday of july 23rd, 2008" means "2008-07-02" because the specific phrase with 'of' resets the day-of-month to '1' and the '23rd' is ignored here).

Also observe that the "of" in "ordinal space dayname space 'of' " and "'last' space dayname space 'of' " does something special.

  1. It sets the day-of-month to 1.
  2. "ordinal dayname 'of' " does not advance to another day. (Example: "first tuesday of july 2008" means "2008-07-01").
  3. "ordinal dayname " does advance to another day. (Example: "first tuesday july 2008" means "2008-07-08", see also point 4 in the list above).
  4. "'last' dayname 'of' " takes the last dayname of the current month. (Example: "last wed of july 2008" means "2008-07-30")
  5. "'last' dayname" takes the last dayname from the current day. (Example: "last wed july 2008" means "2008-06-25"; "july 2008" first sets the current date to "2008-07-01" and then "last wed" moves to the previous Wednesday which is "2008-06-25").

Note:

Relative month values are calculated based on the length of months that they pass through. An example would be "+2 month 2011-11-30", which would produce "2012-01-30". This is due to November being 30 days in length, and December being 31 days in length, producing a total of 61 days.

更新日志

版本 | 说明
5.6.23, 7.0.8 | Weeks always start on monday. Formerly, sunday would also be considered to start a week.
5.3.3 | "first day" and "last day" changed to behave has "+1 day" and "-1 day", respectively. Previously, the behaviour was as "first day of" and "last day of".

Compound Formats
所支持的时区列表
Supported Date and Time Formats


所支持的时区列表

Table of Contents

  • 非洲
  • 美洲
  • 南极洲
  • 北极
  • 亚洲
  • 大西洋
  • 澳洲
  • 欧洲
  • 印度
  • 太平洋地区
  • 其他

在这你可找到 PHP 所支持的所有时区的列表，可用于诸如 date_default_timezone_set() 等函数。

Note: 最新版的时区数据库可从 PECL 的 » timezonedb 进行安装。

Note: 基于时区数据库版本的列表 2016.10.

Relative Formats
非洲
日期/时间


非洲

非洲
Africa/Abidjan | Africa/Accra | Africa/Addis_Ababa | Africa/Algiers
Africa/Asmara | Africa/Bamako | Africa/Bangui | Africa/Banjul
Africa/Bissau | Africa/Blantyre | Africa/Brazzaville | Africa/Bujumbura
Africa/Cairo | Africa/Casablanca | Africa/Ceuta | Africa/Conakry
Africa/Dakar | Africa/Dar_es_Salaam | Africa/Djibouti | Africa/Douala
Africa/El_Aaiun | Africa/Freetown | Africa/Gaborone | Africa/Harare
Africa/Johannesburg | Africa/Juba | Africa/Kampala | Africa/Khartoum
Africa/Kigali | Africa/Kinshasa | Africa/Lagos | Africa/Libreville
Africa/Lome | Africa/Luanda | Africa/Lubumbashi | Africa/Lusaka
Africa/Malabo | Africa/Maputo | Africa/Maseru | Africa/Mbabane
Africa/Mogadishu | Africa/Monrovia | Africa/Nairobi | Africa/Ndjamena
Africa/Niamey | Africa/Nouakchott | Africa/Ouagadougou | Africa/Porto-Novo
Africa/Sao_Tome | Africa/Tripoli | Africa/Tunis | Africa/Windhoek
所支持的时区列表
美洲
所支持的时区列表


美洲

美洲
America/Adak | America/Anchorage | America/Anguilla | America/Antigua
America/Araguaina | America/Argentina/Buenos_Aires | America/Argentina/Catamarca | America/Argentina/Cordoba
America/Argentina/Jujuy | America/Argentina/La_Rioja | America/Argentina/Mendoza | America/Argentina/Rio_Gallegos
America/Argentina/Salta | America/Argentina/San_Juan | America/Argentina/San_Luis | America/Argentina/Tucuman
America/Argentina/Ushuaia | America/Aruba | America/Asuncion | America/Atikokan
America/Bahia | America/Bahia_Banderas | America/Barbados | America/Belem
America/Belize | America/Blanc-Sablon | America/Boa_Vista | America/Bogota
America/Boise | America/Cambridge_Bay | America/Campo_Grande | America/Cancun
America/Caracas | America/Cayenne | America/Cayman | America/Chicago
America/Chihuahua | America/Costa_Rica | America/Creston | America/Cuiaba
America/Curacao | America/Danmarkshavn | America/Dawson | America/Dawson_Creek
America/Denver | America/Detroit | America/Dominica | America/Edmonton
America/Eirunepe | America/El_Salvador | America/Fort_Nelson | America/Fortaleza
America/Glace_Bay | America/Godthab | America/Goose_Bay | America/Grand_Turk
America/Grenada | America/Guadeloupe | America/Guatemala | America/Guayaquil
America/Guyana | America/Halifax | America/Havana | America/Hermosillo
America/Indiana/Indianapolis | America/Indiana/Knox | America/Indiana/Marengo | America/Indiana/Petersburg
America/Indiana/Tell_City | America/Indiana/Vevay | America/Indiana/Vincennes | America/Indiana/Winamac
America/Inuvik | America/Iqaluit | America/Jamaica | America/Juneau
America/Kentucky/Louisville | America/Kentucky/Monticello | America/Kralendijk | America/La_Paz
America/Lima | America/Los_Angeles | America/Lower_Princes | America/Maceio
America/Managua | America/Manaus | America/Marigot | America/Martinique
America/Matamoros | America/Mazatlan | America/Menominee | America/Merida
America/Metlakatla | America/Mexico_City | America/Miquelon | America/Moncton
America/Monterrey | America/Montevideo | America/Montserrat | America/Nassau
America/New_York | America/Nipigon | America/Nome | America/Noronha
America/North_Dakota/Beulah | America/North_Dakota/Center | America/North_Dakota/New_Salem | America/Ojinaga
America/Panama | America/Pangnirtung | America/Paramaribo | America/Phoenix
America/Port-au-Prince | America/Port_of_Spain | America/Porto_Velho | America/Puerto_Rico
America/Rainy_River | America/Rankin_Inlet | America/Recife | America/Regina
America/Resolute | America/Rio_Branco | America/Santarem | America/Santiago
America/Santo_Domingo | America/Sao_Paulo | America/Scoresbysund | America/Sitka
America/St_Barthelemy | America/St_Johns | America/St_Kitts | America/St_Lucia
America/St_Thomas | America/St_Vincent | America/Swift_Current | America/Tegucigalpa
America/Thule | America/Thunder_Bay | America/Tijuana | America/Toronto
America/Tortola | America/Vancouver | America/Whitehorse | America/Winnipeg
America/Yakutat | America/Yellowknife |  |
非洲
南极洲
所支持的时区列表


南极洲

南极洲
Antarctica/Casey | Antarctica/Davis | Antarctica/DumontDUrville | Antarctica/Macquarie
Antarctica/Mawson | Antarctica/McMurdo | Antarctica/Palmer | Antarctica/Rothera
Antarctica/Syowa | Antarctica/Troll | Antarctica/Vostok |
美洲
北极
所支持的时区列表


北极

北极
Arctic/Longyearbyen
南极洲
亚洲
所支持的时区列表


亚洲

亚洲
Asia/Aden | Asia/Almaty | Asia/Amman | Asia/Anadyr
Asia/Aqtau | Asia/Aqtobe | Asia/Ashgabat | Asia/Atyrau
Asia/Baghdad | Asia/Bahrain | Asia/Baku | Asia/Bangkok
Asia/Barnaul | Asia/Beirut | Asia/Bishkek | Asia/Brunei
Asia/Chita | Asia/Choibalsan | Asia/Colombo | Asia/Damascus
Asia/Dhaka | Asia/Dili | Asia/Dubai | Asia/Dushanbe
Asia/Famagusta | Asia/Gaza | Asia/Hebron | Asia/Ho_Chi_Minh
Asia/Hong_Kong | Asia/Hovd | Asia/Irkutsk | Asia/Jakarta
Asia/Jayapura | Asia/Jerusalem | Asia/Kabul | Asia/Kamchatka
Asia/Karachi | Asia/Kathmandu | Asia/Khandyga | Asia/Kolkata
Asia/Krasnoyarsk | Asia/Kuala_Lumpur | Asia/Kuching | Asia/Kuwait
Asia/Macau | Asia/Magadan | Asia/Makassar | Asia/Manila
Asia/Muscat | Asia/Nicosia | Asia/Novokuznetsk | Asia/Novosibirsk
Asia/Omsk | Asia/Oral | Asia/Phnom_Penh | Asia/Pontianak
Asia/Pyongyang | Asia/Qatar | Asia/Qyzylorda | Asia/Riyadh
Asia/Sakhalin | Asia/Samarkand | Asia/Seoul | Asia/Shanghai
Asia/Singapore | Asia/Srednekolymsk | Asia/Taipei | Asia/Tashkent
Asia/Tbilisi | Asia/Tehran | Asia/Thimphu | Asia/Tokyo
Asia/Tomsk | Asia/Ulaanbaatar | Asia/Urumqi | Asia/Ust-Nera
Asia/Vientiane | Asia/Vladivostok | Asia/Yakutsk | Asia/Yangon
Asia/Yekaterinburg | Asia/Yerevan |  |
北极
大西洋
所支持的时区列表


大西洋

大西洋
Atlantic/Azores | Atlantic/Bermuda | Atlantic/Canary | Atlantic/Cape_Verde
Atlantic/Faroe | Atlantic/Madeira | Atlantic/Reykjavik | Atlantic/South_Georgia
Atlantic/St_Helena | Atlantic/Stanley |  |
亚洲
澳洲
所支持的时区列表


澳洲

澳洲
Australia/Adelaide | Australia/Brisbane | Australia/Broken_Hill | Australia/Currie
Australia/Darwin | Australia/Eucla | Australia/Hobart | Australia/Lindeman
Australia/Lord_Howe | Australia/Melbourne | Australia/Perth | Australia/Sydney
大西洋
欧洲
所支持的时区列表


欧洲

欧洲
Europe/Amsterdam | Europe/Andorra | Europe/Astrakhan | Europe/Athens
Europe/Belgrade | Europe/Berlin | Europe/Bratislava | Europe/Brussels
Europe/Bucharest | Europe/Budapest | Europe/Busingen | Europe/Chisinau
Europe/Copenhagen | Europe/Dublin | Europe/Gibraltar | Europe/Guernsey
Europe/Helsinki | Europe/Isle_of_Man | Europe/Istanbul | Europe/Jersey
Europe/Kaliningrad | Europe/Kiev | Europe/Kirov | Europe/Lisbon
Europe/Ljubljana | Europe/London | Europe/Luxembourg | Europe/Madrid
Europe/Malta | Europe/Mariehamn | Europe/Minsk | Europe/Monaco
Europe/Moscow | Europe/Oslo | Europe/Paris | Europe/Podgorica
Europe/Prague | Europe/Riga | Europe/Rome | Europe/Samara
Europe/San_Marino | Europe/Sarajevo | Europe/Saratov | Europe/Simferopol
Europe/Skopje | Europe/Sofia | Europe/Stockholm | Europe/Tallinn
Europe/Tirane | Europe/Ulyanovsk | Europe/Uzhgorod | Europe/Vaduz
Europe/Vatican | Europe/Vienna | Europe/Vilnius | Europe/Volgograd
Europe/Warsaw | Europe/Zagreb | Europe/Zaporozhye | Europe/Zurich
澳洲
印度
所支持的时区列表


印度

印度
Indian/Antananarivo | Indian/Chagos | Indian/Christmas | Indian/Cocos
Indian/Comoro | Indian/Kerguelen | Indian/Mahe | Indian/Maldives
Indian/Mauritius | Indian/Mayotte | Indian/Reunion |
欧洲
太平洋地区
所支持的时区列表


太平洋地区

太平洋地区
Pacific/Apia | Pacific/Auckland | Pacific/Bougainville | Pacific/Chatham
Pacific/Chuuk | Pacific/Easter | Pacific/Efate | Pacific/Enderbury
Pacific/Fakaofo | Pacific/Fiji | Pacific/Funafuti | Pacific/Galapagos
Pacific/Gambier | Pacific/Guadalcanal | Pacific/Guam | Pacific/Honolulu
Pacific/Johnston | Pacific/Kiritimati | Pacific/Kosrae | Pacific/Kwajalein
Pacific/Majuro | Pacific/Marquesas | Pacific/Midway | Pacific/Nauru
Pacific/Niue | Pacific/Norfolk | Pacific/Noumea | Pacific/Pago_Pago
Pacific/Palau | Pacific/Pitcairn | Pacific/Pohnpei | Pacific/Port_Moresby
Pacific/Rarotonga | Pacific/Saipan | Pacific/Tahiti | Pacific/Tarawa
Pacific/Tongatapu | Pacific/Wake | Pacific/Wallis |
印度
其他
所支持的时区列表


其他

Warning

在此请不要使用任何时区列表（除 UTC 外），仅用于向后兼容。

Warning

If you disregard the above warning, please also note that the IANA timezone database that provides PHP's timezone support uses POSIX style signs, which results in the Etc/GMT+n and Etc/GMT-n time zones being reversed from common usage.

For example, the time zone 8 hours ahead of GMT that is used in China and Western Australia (among other places) is actually Etc/GMT-8 in this database, not Etc/GMT+8 as you would normally expect.

Once again, it is strongly recommended that you use the correct time zone for your location, such as Asia/Shanghai or Australia/Perth for the above examples.

其他
Africa/Asmera | Africa/Timbuktu | America/Argentina/ComodRivadavia | America/Atka
America/Buenos_Aires | America/Catamarca | America/Coral_Harbour | America/Cordoba
America/Ensenada | America/Fort_Wayne | America/Indianapolis | America/Jujuy
America/Knox_IN | America/Louisville | America/Mendoza | America/Montreal
America/Porto_Acre | America/Rosario | America/Santa_Isabel | America/Shiprock
America/Virgin | Antarctica/South_Pole | Asia/Ashkhabad | Asia/Calcutta
Asia/Chongqing | Asia/Chungking | Asia/Dacca | Asia/Harbin
Asia/Istanbul | Asia/Kashgar | Asia/Katmandu | Asia/Macao
Asia/Rangoon | Asia/Saigon | Asia/Tel_Aviv | Asia/Thimbu
Asia/Ujung_Pandang | Asia/Ulan_Bator | Atlantic/Faeroe | Atlantic/Jan_Mayen
Australia/ACT | Australia/Canberra | Australia/LHI | Australia/North
Australia/NSW | Australia/Queensland | Australia/South | Australia/Tasmania
Australia/Victoria | Australia/West | Australia/Yancowinna | Brazil/Acre
Brazil/DeNoronha | Brazil/East | Brazil/West | Canada/Atlantic
Canada/Central | Canada/East-Saskatchewan | Canada/Eastern | Canada/Mountain
Canada/Newfoundland | Canada/Pacific | Canada/Saskatchewan | Canada/Yukon
CET | Chile/Continental | Chile/EasterIsland | CST6CDT
Cuba | EET | Egypt | Eire
EST | EST5EDT | Etc/GMT | Etc/GMT+0
Etc/GMT+1 | Etc/GMT+10 | Etc/GMT+11 | Etc/GMT+12
Etc/GMT+2 | Etc/GMT+3 | Etc/GMT+4 | Etc/GMT+5
Etc/GMT+6 | Etc/GMT+7 | Etc/GMT+8 | Etc/GMT+9
Etc/GMT-0 | Etc/GMT-1 | Etc/GMT-10 | Etc/GMT-11
Etc/GMT-12 | Etc/GMT-13 | Etc/GMT-14 | Etc/GMT-2
Etc/GMT-3 | Etc/GMT-4 | Etc/GMT-5 | Etc/GMT-6
Etc/GMT-7 | Etc/GMT-8 | Etc/GMT-9 | Etc/GMT0
Etc/Greenwich | Etc/UCT | Etc/Universal | Etc/UTC
Etc/Zulu | Europe/Belfast | Europe/Nicosia | Europe/Tiraspol
Factory | GB | GB-Eire | GMT
GMT+0 | GMT-0 | GMT0 | Greenwich
Hongkong | HST | Iceland | Iran
Israel | Jamaica | Japan | Kwajalein
Libya | MET | Mexico/BajaNorte | Mexico/BajaSur
Mexico/General | MST | MST7MDT | Navajo
NZ | NZ-CHAT | Pacific/Ponape | Pacific/Samoa
Pacific/Truk | Pacific/Yap | Poland | Portugal
PRC | PST8PDT | ROC | ROK
Singapore | Turkey | UCT | Universal
US/Alaska | US/Aleutian | US/Arizona | US/Central
US/East-Indiana | US/Eastern | US/Hawaii | US/Indiana-Starke
US/Michigan | US/Mountain | US/Pacific | US/Pacific-New
US/Samoa | UTC | W-SU | WET
Zulu |  |  |
太平洋地区
HRTime
所支持的时区列表


High resolution timing

  • 简介
  • 安装／配置
    • 安装
  • 范例
    • Basic usage
  • HRTime\PerformanceCounter — The HRTime\PerformanceCounter class
    • HRTime\PerformanceCounter::getFrequency — Timer frequency in ticks per second
    • HRTime\PerformanceCounter::getTicks — Current ticks from the system
    • HRTime\PerformanceCounter::getTicksSince — Ticks elapsed since the given value
  • HRTime\StopWatch — The HRTime\StopWatch class
    • HRTime\StopWatch::getElapsedTicks — Get elapsed ticks for all intervals.
    • HRTime\StopWatch::getElapsedTime — Get elapsed time for all intervals.
    • HRTime\StopWatch::getLastElapsedTicks — Get elapsed ticks for the last interval.
    • HRTime\StopWatch::getLastElapsedTime — Get elapsed time for the last interval.
    • HRTime\StopWatch::isRunning — Whether the measurement is running.
    • HRTime\StopWatch::start — Start time measurement
    • HRTime\StopWatch::stop — Stop time measurement
  • HRTime\Unit — The HRTime\Unit class
其他
简介
日期与时间相关扩展


简介

The HRTime extension implements a high resolution StopWatch class. It uses the best possible APIs on different platforms which brings resolution up to nanoseconds. It also makes possible to implement a custom stopwatch using low level ticks delivered by the underlaying APIs.

HRTime
安装／配置
HRTime


安装／配置

Table of Contents

  • 安装
简介
安装
HRTime


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/hrtime.

A DLL for this PECL extension is available under » http://windows.php.net/downloads/pecl/releases/hrtime/.

安装／配置
范例
安装／配置


范例

Table of Contents

  • Basic usage
安装
Basic usage
HRTime


Basic usage

The example illustrates the basic StopWatch class usage

Example #1 Measure several code blocks execution and get the total

<?php

$c = new HRTime\StopWatch;

$c->start();
/* measure this code block execution */
for ($i = 0; $i < 1024*1024; $i++);
$c->stop();
$elapsed0 = $c->getLastElapsedTime(HRTime\Unit::NANOSECOND);

/* measurement is not running here*/
for ($i = 0; $i < 1024*1024; $i++);

$c->start();
/* measure this code block execution */
for ($i = 0; $i < 1024*1024; $i++);
$c->stop();
$elapsed1 = $c->getLastElapsedTime(HRTime\Unit::NANOSECOND);

$elapsed_total = $c->getElapsedTime(HRTime\Unit::NANOSECOND);

?>
范例
HRTime\PerformanceCounter
范例


The HRTime\PerformanceCounter class

(PECL hrtime >= 0.4.3)

简介

类摘要

HRTime\PerformanceCounter {
/* 方法 */
public static int getFrequency ( void )
public static int getTicks ( void )
public static int getTicksSince ( integer $start )
}

Table of Contents

  • HRTime\PerformanceCounter::getFrequency — Timer frequency in ticks per second
  • HRTime\PerformanceCounter::getTicks — Current ticks from the system
  • HRTime\PerformanceCounter::getTicksSince — Ticks elapsed since the given value
Basic usage
HRTime\PerformanceCounter::getFrequency
HRTime


Timer frequency in ticks per second

HRTime\PerformanceCounter
HRTime\PerformanceCounter::getTicks
HRTime\PerformanceCounter
PHP Manual

HRTime\PerformanceCounter::getFrequency

(PECL hrtime >= 0.4.3)

HRTime\PerformanceCounter::getFrequency — Timer frequency in ticks per second

说明

public static int HRTime\PerformanceCounter::getFrequency ( void )

Returns the timer frequency in ticks per second. This value is constant after the system start on almost any operating system.

参数

此函数没有参数。

返回值

Returns integer indicating the timer frequency.

HRTime\PerformanceCounter
HRTime\PerformanceCounter::getTicks
HRTime\PerformanceCounter


Current ticks from the system

HRTime\PerformanceCounter::getFrequency
HRTime\PerformanceCounter::getTicksSince
HRTime\PerformanceCounter
PHP Manual

HRTime\PerformanceCounter::getTicks

(PECL hrtime >= 0.6.0)

HRTime\PerformanceCounter::getTicks — Current ticks from the system

说明

public static int HRTime\PerformanceCounter::getTicks ( void )

Returns the ticks count.

参数

此函数没有参数。

返回值

Returns integer indicating the ticks count.

HRTime\PerformanceCounter::getFrequency
HRTime\PerformanceCounter::getTicksSince
HRTime\PerformanceCounter


Ticks elapsed since the given value

HRTime\PerformanceCounter::getTicks
HRTime\StopWatch
HRTime\PerformanceCounter
PHP Manual

HRTime\PerformanceCounter::getTicksSince

(PECL hrtime >= 0.6.0)

HRTime\PerformanceCounter::getTicksSince — Ticks elapsed since the given value

说明

public static int HRTime\PerformanceCounter::getTicksSince ( integer $start )

Returns the ticks count elapsed since the given start value.

参数

start

Starting ticks value.

返回值

Returns integer indicating the ticks count.

HRTime\PerformanceCounter::getTicks
HRTime\StopWatch
HRTime\PerformanceCounter


The HRTime\StopWatch class

(PECL hrtime >= 0.4.3)

简介

类摘要

HRTime\StopWatch extends HRTime\PerformanceCounter {
/* 方法 */
public int getElapsedTicks ( void )
public float getElapsedTime ([ integer $unit ] )
public int getLastElapsedTicks ( void )
public float getLastElapsedTime ([ integer $unit ] )
public bool isRunning ( void )
public void start ( void )
public void stop ( void )
/* 继承的方法 */
public static int HRTime\PerformanceCounter::getFrequency ( void )
public static int HRTime\PerformanceCounter::getTicks ( void )
public static int HRTime\PerformanceCounter::getTicksSince ( integer $start )
}

Table of Contents

  • HRTime\StopWatch::getElapsedTicks — Get elapsed ticks for all intervals.
  • HRTime\StopWatch::getElapsedTime — Get elapsed time for all intervals.
  • HRTime\StopWatch::getLastElapsedTicks — Get elapsed ticks for the last interval.
  • HRTime\StopWatch::getLastElapsedTime — Get elapsed time for the last interval.
  • HRTime\StopWatch::isRunning — Whether the measurement is running.
  • HRTime\StopWatch::start — Start time measurement
  • HRTime\StopWatch::stop — Stop time measurement
HRTime\PerformanceCounter::getTicksSince
HRTime\StopWatch::getElapsedTicks
HRTime


Get elapsed ticks for all intervals.

HRTime\StopWatch
HRTime\StopWatch::getElapsedTime
HRTime\StopWatch
PHP Manual

HRTime\StopWatch::getElapsedTicks

(PECL hrtime >= 0.4.3)

HRTime\StopWatch::getElapsedTicks — Get elapsed ticks for all intervals.

说明

public int HRTime\StopWatch::getElapsedTicks ( void )

Get elapsed ticks for all the previously closed intervals.

参数

此函数没有参数。

返回值

Returns integer indicating elapsed ticks.

HRTime\StopWatch
HRTime\StopWatch::getElapsedTime
HRTime\StopWatch


Get elapsed time for all intervals.

HRTime\StopWatch::getElapsedTicks
HRTime\StopWatch::getLastElapsedTicks
HRTime\StopWatch
PHP Manual

HRTime\StopWatch::getElapsedTime

(PECL hrtime >= 0.4.3)

HRTime\StopWatch::getElapsedTime — Get elapsed time for all intervals.

说明

public float HRTime\StopWatch::getElapsedTime ([ integer $unit ] )

Get elapsed time for all the previously closed intervals.

参数

unit

Time unit represented by a HRTime\Unit constant. Default is HRTime\Unit::SECOND.

返回值

Returns float indicating elapsed time.

HRTime\StopWatch::getElapsedTicks
HRTime\StopWatch::getLastElapsedTicks
HRTime\StopWatch


Get elapsed ticks for the last interval.

HRTime\StopWatch::getElapsedTime
HRTime\StopWatch::getLastElapsedTime
HRTime\StopWatch
PHP Manual

HRTime\StopWatch::getLastElapsedTicks

(PECL hrtime >= 0.4.3)

HRTime\StopWatch::getLastElapsedTicks — Get elapsed ticks for the last interval.

说明

public int HRTime\StopWatch::getLastElapsedTicks ( void )

Get elapsed ticks for the previously closed interval.

参数

此函数没有参数。

返回值

Returns integer indicating elapsed ticks.

HRTime\StopWatch::getElapsedTime
HRTime\StopWatch::getLastElapsedTime
HRTime\StopWatch


Get elapsed time for the last interval.

HRTime\StopWatch::getLastElapsedTicks
HRTime\StopWatch::isRunning
HRTime\StopWatch
PHP Manual

HRTime\StopWatch::getLastElapsedTime

(PECL hrtime >= 0.4.3)

HRTime\StopWatch::getLastElapsedTime — Get elapsed time for the last interval.

说明

public float HRTime\StopWatch::getLastElapsedTime ([ integer $unit ] )

Get elapsed time for the previously closed interval.

参数

unit

Time unit represented by a HRTime\Unit constant. Default is HRTime\Unit::SECOND.

返回值

Returns float indicating elapsed time.

HRTime\StopWatch::getLastElapsedTicks
HRTime\StopWatch::isRunning
HRTime\StopWatch


Whether the measurement is running.

HRTime\StopWatch::getLastElapsedTime
HRTime\StopWatch::start
HRTime\StopWatch
PHP Manual

HRTime\StopWatch::isRunning

(PECL hrtime >= 0.4.3)

HRTime\StopWatch::isRunning — Whether the measurement is running.

说明

public bool HRTime\StopWatch::isRunning ( void )

Reveals whether the measurement was started.

参数

此函数没有参数。

返回值

Returns boolean indicating whetehr the measurement is running.

HRTime\StopWatch::getLastElapsedTime
HRTime\StopWatch::start
HRTime\StopWatch


Start time measurement

HRTime\StopWatch::isRunning
HRTime\StopWatch::stop
HRTime\StopWatch
PHP Manual

HRTime\StopWatch::start

(PECL hrtime >= 0.4.3)

HRTime\StopWatch::start — Start time measurement

说明

public void HRTime\StopWatch::start ( void )

Starts the time measurement. It has no effect if the measurement was already started. The measurement will be continued if it was previously stopped.

参数

此函数没有参数。

返回值

Returns void.

HRTime\StopWatch::isRunning
HRTime\StopWatch::stop
HRTime\StopWatch


Stop time measurement

HRTime\StopWatch::start
HRTime\Unit
HRTime\StopWatch
PHP Manual

HRTime\StopWatch::stop

(PECL hrtime >= 0.4.3)

HRTime\StopWatch::stop — Stop time measurement

说明

public void HRTime\StopWatch::stop ( void )

Stop the time measurement for the previously started interval.

参数

此函数没有参数。

返回值

Returns void.

HRTime\StopWatch::start
HRTime\Unit
HRTime\StopWatch


The HRTime\Unit class

(PECL hrtime >= 0.4.3)

简介

类摘要

HRTime\Unit {
/* Constants */
const integer SECOND = 0 ;
const integer MILLISECOND = 1 ;
const integer MICROSECOND = 2 ;
const integer NANOSECOND = 3 ;
/* 方法 */
}

预定义常量

HRTime\Unit::SECOND

HRTime\Unit::MILLISECOND

HRTime\Unit::MICROSECOND

HRTime\Unit::NANOSECOND

HRTime\StopWatch::stop
文件系统相关扩展
HRTime


文件系统相关扩展

  • Direct IO
    • 简介
    • 安装／配置
    • 预定义常量
    • Direct IO 函数
  • 目录
    • 安装／配置
    • 预定义常量
    • Directory — Directory 类
    • Directory 函数
  • Fileinfo — 文件信息
    • 简介
    • 安装／配置
    • 预定义常量
    • Fileinfo 函数
    • finfo — The finfo class
  • Filesystem
    • 简介
    • 安装／配置
    • 预定义常量
    • Filesystem 函数
  • Inotify
    • 简介
    • 安装／配置
    • 预定义常量
    • Inotify 函数
  • Mimetype
    • 简介
    • 安装／配置
    • 预定义常量
  • Proctitle
    • 简介
    • 安装／配置
    • 预定义常量
    • Proctitle 函数
  • xattr
    • 简介
    • 安装／配置
    • 预定义常量
    • xattr 函数
  • xdiff
    • 简介
    • 安装／配置
    • 预定义常量
    • xdiff 函数
HRTime\Unit
Direct IO
函数参考


Direct IO

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Direct IO 函数
    • dio_close — Closes the file descriptor given by fd
    • dio_fcntl — Performs a c library fcntl on fd
    • dio_open — Opens a file (creating it if necessary) at a lower level than the C library input/ouput stream functions allow.
    • dio_read — Reads bytes from a file descriptor
    • dio_seek — Seeks to pos on fd from whence
    • dio_stat — Gets stat information about the file descriptor fd
    • dio_tcsetattr — Sets terminal attributes and baud rate for a serial port
    • dio_truncate — Truncates file descriptor fd to offset bytes
    • dio_write — Writes data to fd with optional truncation at length
文件系统相关扩展
简介
文件系统相关扩展


简介

PHP supports the direct io functions as described in the Posix Standard (Section 6) for performing I/O functions at a lower level than the C-Language stream I/O functions (fopen(), fread(),..). The use of the DIO functions should be considered only when direct control of a device is needed. In all other cases, the standard filesystem functions are more than adequate.

Note:

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.1.0.

This extension is only available on Windows Platforms as of PHP 5.0.0

Direct IO
安装／配置
Direct IO


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Direct IO


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/dio.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


资源类型

One resource type is defined by this extension: a file descriptor returned by dio_open().

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

F_DUPFD (integer)

F_GETFD (integer)

F_GETFL (integer)

F_GETLK (integer)

F_GETOWN (integer)

F_RDLCK (integer)

F_SETFL (integer)

F_SETLK (integer)

F_SETLKW (integer)

F_SETOWN (integer)

F_UNLCK (integer)

F_WRLCK (integer)

O_APPEND (integer)

O_ASYNC (integer)

O_CREAT (integer)

O_EXCL (integer)

O_NDELAY (integer)

O_NOCTTY (integer)

O_NONBLOCK (integer)

O_RDONLY (integer)

O_RDWR (integer)

O_SYNC (integer)

O_TRUNC (integer)

O_WRONLY (integer)

S_IRGRP (integer)

S_IROTH (integer)

S_IRUSR (integer)

S_IRWXG (integer)

S_IRWXO (integer)

S_IRWXU (integer)

S_IWGRP (integer)

S_IWOTH (integer)

S_IWUSR (integer)

S_IXGRP (integer)

S_IXOTH (integer)

S_IXUSR (integer)

资源类型
Direct IO 函数
Direct IO


Direct IO 函数

Table of Contents

  • dio_close — Closes the file descriptor given by fd
  • dio_fcntl — Performs a c library fcntl on fd
  • dio_open — Opens a file (creating it if necessary) at a lower level than the C library input/ouput stream functions allow.
  • dio_read — Reads bytes from a file descriptor
  • dio_seek — Seeks to pos on fd from whence
  • dio_stat — Gets stat information about the file descriptor fd
  • dio_tcsetattr — Sets terminal attributes and baud rate for a serial port
  • dio_truncate — Truncates file descriptor fd to offset bytes
  • dio_write — Writes data to fd with optional truncation at length
预定义常量
dio_close
Direct IO


Closes the file descriptor given by fd

Direct IO 函数
dio_fcntl
Direct IO 函数
PHP Manual

dio_close

(PHP 4 >= 4.2.0, PHP 5 <= 5.0.5, PHP 7)

dio_close — Closes the file descriptor given by fd

说明

void dio_close ( resource $fd )

The function dio_close() closes the file descriptor fd.

参数

fd

The file descriptor returned by dio_open().

返回值

没有返回值。

范例

Example #1 Closing an open file descriptor

<?php
$fd = dio_open('/dev/ttyS0', O_RDWR);

dio_close($fd);
?>

参见

  • dio_open() - Opens a file (creating it if necessary) at a lower level than the C library input/ouput stream functions allow.

Direct IO 函数
dio_fcntl
Direct IO 函数


Performs a c library fcntl on fd

dio_close
dio_open
Direct IO 函数
PHP Manual

dio_fcntl

(PHP 4 >= 4.2.0, PHP 5 <= 5.0.5, PHP 7)

dio_fcntl — Performs a c library fcntl on fd

说明

mixed dio_fcntl ( resource $fd , int $cmd [, mixed $args ] )

The dio_fcntl() function performs the operation specified by cmd on the file descriptor fd. Some commands require additional arguments args to be supplied.

参数

fd

The file descriptor returned by dio_open().

cmd

Can be one of the following operations:

  • F_SETLK - Lock is set or cleared. If the lock is held by someone else dio_fcntl() returns -1.

  • F_SETLKW - like F_SETLK, but in case the lock is held by someone else, dio_fcntl() waits until the lock is released.

  • F_GETLK - dio_fcntl() returns an associative array (as described below) if someone else prevents lock. If there is no obstruction key "type" will set to F_UNLCK.

  • F_DUPFD - finds the lowest numbered available file descriptor greater than or equal to args and returns them.

  • F_SETFL - Sets the file descriptors flags to the value specified by args, which can be O_APPEND, O_NONBLOCK or O_ASYNC. To use O_ASYNC you will need to use the PCNTL extension.

args

args is an associative array, when cmd is F_SETLK or F_SETLLW, with the following keys:

  • start - offset where lock begins

  • length - size of locked area. zero means to end of file

  • whence - Where l_start is relative to: can be SEEK_SET, SEEK_END and SEEK_CUR

  • type - type of lock: can be F_RDLCK (read lock), F_WRLCK (write lock) or F_UNLCK (unlock)

返回值

Returns the result of the C call.

范例

Example #1 Setting and clearing a lock

<?php

$fd = dio_open('/dev/ttyS0', O_RDWR);

if (dio_fcntl($fd, F_SETLK, Array("type"=>F_WRLCK)) == -1) {
   // the file descriptor appears locked
   echo "The lock can not be cleared. It is held by someone else.";
} else {
   echo "Lock successfully set/cleared";
}

dio_close($fd);
?>

注释

Note: 此函数未在 Windows 平台下实现。

dio_close
dio_open
Direct IO 函数


Opens a file (creating it if necessary) at a lower level than the C library input/ouput stream functions allow.

dio_fcntl
dio_read
Direct IO 函数
PHP Manual

dio_open

(PHP 4 >= 4.2.0, PHP 5 <= 5.0.5, PHP 7)

dio_open — Opens a file (creating it if necessary) at a lower level than the C library input/ouput stream functions allow.

说明

resource dio_open ( string $filename , int $flags [, int $mode = 0 ] )

dio_open() opens a file and returns a new file descriptor for it.

参数

filename

The pathname of the file to open.

flags

The flags parameter is a bitwise-ORed value comprising flags from the following list. This value must include one of O_RDONLY, O_WRONLY, or O_RDWR. Additionally, it may include any combination of the other flags from this list.

  • O_RDONLY - opens the file for read access.

  • O_WRONLY - opens the file for write access.

  • O_RDWR - opens the file for both reading and writing.

  • O_CREAT - creates the file, if it doesn't already exist.

  • O_EXCL - if both O_CREAT and O_EXCL are set and the file already exists, dio_open() will fail.

  • O_TRUNC - if the file exists and is opened for write access, the file will be truncated to zero length.

  • O_APPEND - write operations write data at the end of the file.

  • O_NONBLOCK - sets non blocking mode.

  • O_NOCTTY - prevent the OS from assigning the opened file as the process's controlling terminal when opening a TTY device file.

mode

If flags contains O_CREAT, mode will set the permissions of the file (creation permissions). mode is required for correct operation when O_CREAT is specified in flags and is ignored otherwise.

The actual permissions assigned to the created file will be affected by the process's umask setting as per usual.

返回值

A file descriptor or FALSE on error.

范例

Example #1 Opening a file descriptor

<?php

$fd = dio_open('/dev/ttyS0', O_RDWR | O_NOCTTY | O_NONBLOCK);

dio_close($fd);
?>

参见

  • dio_close() - Closes the file descriptor given by fd

dio_fcntl
dio_read
Direct IO 函数


Reads bytes from a file descriptor

dio_open
dio_seek
Direct IO 函数
PHP Manual

dio_read

(PHP 4 >= 4.2.0, PHP 5 <= 5.0.5, PHP 7)

dio_read — Reads bytes from a file descriptor

说明

string dio_read ( resource $fd [, int $len = 1024 ] )

The function dio_read() reads and returns len bytes from file with descriptor fd.

参数

fd

The file descriptor returned by dio_open().

len

The number of bytes to read. If not specified, dio_read() reads 1K sized block.

返回值

The bytes read from fd.

参见

  • dio_write() - Writes data to fd with optional truncation at length

dio_open
dio_seek
Direct IO 函数


Seeks to pos on fd from whence

dio_read
dio_stat
Direct IO 函数
PHP Manual

dio_seek

(PHP 4 >= 4.2.0, PHP 5 <= 5.0.5, PHP 7)

dio_seek — Seeks to pos on fd from whence

说明

int dio_seek ( resource $fd , int $pos [, int $whence = SEEK_SET ] )

The function dio_seek() is used to change the file position of the given file descriptor.

参数

fd

The file descriptor returned by dio_open().

pos

The new position.

whence

Specifies how the position pos should be interpreted:

  • SEEK_SET (default) - specifies that pos is specified from the beginning of the file.

  • SEEK_CUR - Specifies that pos is a count of characters from the current file position. This count may be positive or negative.

  • SEEK_END - Specifies that pos is a count of characters from the end of the file. A negative count specifies a position within the current extent of the file; a positive count specifies a position past the current end. If you set the position past the current end, and actually write data, you will extend the file with zeros up to that position.

返回值

范例

Example #1 Positioning in a file

<?php

$fd = dio_open('/dev/ttyS0', O_RDWR);

dio_seek($fd, 10, SEEK_SET);
// position is now at 10 characters from the start of the file

dio_seek($fd, -2, SEEK_CUR);
// position is now at 8 characters from the start of the file

dio_seek($fd, -5, SEEK_END);
// position is now at 5 characters from the end of the file

dio_seek($fd, 10, SEEK_END);
// position is now at 10 characters past the end of the file.
// The 10 characters between the end of the file and the current
// position are filled with zeros.

dio_close($fd);
?>

dio_read
dio_stat
Direct IO 函数


Gets stat information about the file descriptor fd

dio_seek
dio_tcsetattr
Direct IO 函数
PHP Manual

dio_stat

(PHP 4 >= 4.2.0, PHP 5 <= 5.0.5, PHP 7)

dio_stat — Gets stat information about the file descriptor fd

说明

array dio_stat ( resource $fd )

dio_stat() returns information about the given file descriptor.

参数

fd

The file descriptor returned by dio_open().

返回值

Returns an associative array with the following keys:

  • "device" - device

  • "inode" - inode

  • "mode" - mode

  • "nlink" - number of hard links

  • "uid" - user id

  • "gid" - group id

  • "device_type" - device type (if inode device)

  • "size" - total size in bytes

  • "blocksize" - blocksize

  • "blocks" - number of blocks allocated

  • "atime" - time of last access

  • "mtime" - time of last modification

  • "ctime" - time of last change

On error dio_stat() returns NULL.

dio_seek
dio_tcsetattr
Direct IO 函数


Sets terminal attributes and baud rate for a serial port

dio_stat
dio_truncate
Direct IO 函数
PHP Manual

dio_tcsetattr

(PHP 4 >= 4.3.0, PHP 5 <= 5.0.5, PHP 7)

dio_tcsetattr — Sets terminal attributes and baud rate for a serial port

说明

bool dio_tcsetattr ( resource $fd , array $options )

dio_tcsetattr() sets the terminal attributes and baud rate of the open fd.

参数

fd

The file descriptor returned by dio_open().

options

The currently available options are:

  • 'baud' - baud rate of the port - can be 38400,19200,9600,4800,2400,1800, 1200,600,300,200,150,134,110,75 or 50, default value is 9600.

  • 'bits' - data bits - can be 8,7,6 or 5. Default value is 8.

  • 'stop' - stop bits - can be 1 or 2. Default value is 1.

  • 'parity' - can be 0,1 or 2. Default value is 0.

返回值

没有返回值。

范例

Example #1 Setting the baud rate on a serial port

<?php

$fd = dio_open('/dev/ttyS0', O_RDWR | O_NOCTTY | O_NONBLOCK);

dio_fcntl($fd, F_SETFL, O_SYNC);

dio_tcsetattr($fd, array(
  'baud' => 9600,
  'bits' => 8,
  'stop'  => 1,
  'parity' => 0
));

while (1) {

  $data = dio_read($fd, 256);

  if ($data) {
      echo $data;
  }
}

?>

注释

Note: 此函数未在 Windows 平台下实现。

dio_stat
dio_truncate
Direct IO 函数


Truncates file descriptor fd to offset bytes

dio_tcsetattr
dio_write
Direct IO 函数
PHP Manual

dio_truncate

(PHP 4 >= 4.2.0, PHP 5 <= 5.0.5, PHP 7)

dio_truncate — Truncates file descriptor fd to offset bytes

说明

bool dio_truncate ( resource $fd , int $offset )

dio_truncate() truncates a file to at most offset bytes in size.

If the file previously was larger than this size, the extra data is lost. If the file previously was shorter, it is unspecified whether the file is left unchanged or is extended. In the latter case the extended part reads as zero bytes.

参数

fd

The file descriptor returned by dio_open().

offset

The offset in bytes.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note: 此函数未在 Windows 平台下实现。

dio_tcsetattr
dio_write
Direct IO 函数


Writes data to fd with optional truncation at length

dio_truncate
目录
Direct IO 函数
PHP Manual

dio_write

(PHP 4 >= 4.2.0, PHP 5 <= 5.0.5, PHP 7)

dio_write — Writes data to fd with optional truncation at length

说明

int dio_write ( resource $fd , string $data [, int $len = 0 ] )

dio_write() writes up to len bytes from data to file fd.

参数

fd

The file descriptor returned by dio_open().

data

The written data.

len

The length of data to write in bytes. If not specified, the function writes all the data to the specified file.

返回值

Returns the number of bytes written to fd.

参见

  • dio_read() - Reads bytes from a file descriptor

dio_truncate
目录
Direct IO 函数


目录

  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Directory — Directory 类
    • Directory::close — 释放目录句柄
    • Directory::read — 从目录句柄中读取条目
    • Directory::rewind — 倒回目录句柄
  • Directory 函数
    • chdir — 改变目录
    • chroot — 改变根目录
    • closedir — 关闭目录句柄
    • dir — 返回一个 Directory 类实例
    • getcwd — 取得当前工作目录
    • opendir — 打开目录句柄
    • readdir — 从目录句柄中读取条目
    • rewinddir — 倒回目录句柄
    • scandir — 列出指定路径中的文件和目录
dio_write
安装／配置
文件系统相关扩展


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
目录
需求
目录


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

DIRECTORY_SEPARATOR (string)
PATH_SEPARATOR (string)

Note: PATH_SEPARATOR 是在 PHP 4.3.0-RC2 中引入。

资源类型
Directory
目录


Directory 类

(PHP 4, PHP 5, PHP 7)

简介

Directory 实例是通过调用 dir() 函数创建的，而不是 new 操作符。

类摘要

Directory {
/* 属性 */
public string $path ;
public resource $handle ;
/* 方法 */
public void close ([ resource $dir_handle ] )
public string read ([ resource $dir_handle ] )
public void rewind ([ resource $dir_handle ] )
}

属性

path

被打开目录的地址

handle

目录句柄。可以被其他的目录操作函数使用，例如 readdir(), rewinddir() and closedir()。

Table of Contents

  • Directory::close — 释放目录句柄
  • Directory::read — 从目录句柄中读取条目
  • Directory::rewind — 倒回目录句柄
预定义常量
Directory::close
目录


释放目录句柄

Directory
Directory::read
Directory
PHP Manual

Directory::close

(PHP 4, PHP 5, PHP 7)

Directory::close — 释放目录句柄

说明

public void Directory::close ([ resource $dir_handle ] )

与 closedir() 函数功能一样，只是 dir_handle 默认为 $this 变量。

Directory
Directory::read
Directory


从目录句柄中读取条目

Directory::close
Directory::rewind
Directory
PHP Manual

Directory::read

(PHP 4, PHP 5, PHP 7)

Directory::read — 从目录句柄中读取条目

说明

public string Directory::read ([ resource $dir_handle ] )

与 readdir() 函数功能一样, 只是 dir_handle 默认为 $this 变量。

Directory::close
Directory::rewind
Directory


倒回目录句柄

Directory::read
Directory 函数
Directory
PHP Manual

Directory::rewind

(PHP 4, PHP 5, PHP 7)

Directory::rewind — 倒回目录句柄

说明

public void Directory::rewind ([ resource $dir_handle ] )

与 rewinddir() 函数功能一样, 只是 dir_handle 默认为 $this 变量。

Directory::read
Directory 函数
Directory


Directory 函数

参见

For related functions such as dirname(),
is_dir(), mkdir(), and
rmdir(), see the
Filesystem section.

Table of Contents

  • chdir — 改变目录
  • chroot — 改变根目录
  • closedir — 关闭目录句柄
  • dir — 返回一个 Directory 类实例
  • getcwd — 取得当前工作目录
  • opendir — 打开目录句柄
  • readdir — 从目录句柄中读取条目
  • rewinddir — 倒回目录句柄
  • scandir — 列出指定路径中的文件和目录
Directory::rewind
chdir
目录


改变目录

Directory 函数
chroot
Directory 函数
PHP Manual

chdir

(PHP 4, PHP 5, PHP 7)

chdir — 改变目录

说明

bool chdir ( string $directory )

将 PHP 的当前目录改为 directory。

参数

directory

新的当前目录

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Throws an error of level E_WARNING on failure.

范例

Example #1 chdir() 例子

<?php

// current directory
echo getcwd() . "\n";

chdir('public_html');

// current directory
echo getcwd() . "\n";

?>

以上例程的输出类似于：

/home/vincent
/home/vincent/public_html

注释

Note: 当启用 安全模式时， PHP 会在执行脚本时检查被脚本操作的目录是否与被执行的脚本有相同的 UID（所有者）。

参见

  • getcwd() - 取得当前工作目录

Directory 函数
chroot
Directory 函数


改变根目录

chdir
closedir
Directory 函数
PHP Manual

chroot

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

chroot — 改变根目录

说明

bool chroot ( string $directory )

将当前进程的根目录改变为 directory。

本函数仅在系统支持且运行于 CLI，CGI 或嵌入 SAPI 版本时才能正确工作。此外本函数还需要 root 权限。

参数

directory

新目录

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 chroot() example

<?php
chroot("/path/to/your/chroot/");
echo getcwd();
?>

以上例程会输出：

/

注释

Note: 此函数未在 Windows 平台下实现。

chdir
closedir
Directory 函数


关闭目录句柄

chroot
dir
Directory 函数
PHP Manual

closedir

(PHP 4, PHP 5, PHP 7)

closedir — 关闭目录句柄

说明

void closedir ([ resource $dir_handle ] )

关闭由 dir_handle 指定的目录流。流必须之前被 opendir() 所打开。

参数

dir_handle

目录句柄的 resource，之前由 opendir() 所打开的。如果目录句柄没有指定，那么会假定为是opendir()所打开的最后一个句柄。

范例

Example #1 closedir() 例子

<?php
$dir = "/etc/php5/";

// Open a known directory, read directory into variable and then close
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        $directory = readdir($dh);
        closedir($dh);
    }
}
?>

chroot
dir
Directory 函数


返回一个 Directory 类实例

closedir
getcwd
Directory 函数
PHP Manual

dir

(PHP 4, PHP 5, PHP 7)

dir — 返回一个 Directory 类实例

说明

Directory dir ( string $directory [, resource $context ] )

以面向对象的方式访问目录。打开 directory 参数指定的目录。

参数

directory

被打开的目录

context

Note: 在 PHP 5.0.0 中增加了对上下文（Context）的支持。有关上下文（Context）的说明参见 Streams。

返回值

成功的话，返回一个 Directory 类实例, 参数错误的情况下返回 NULL ， 其它错误情况返回 FALSE 。

范例

Example #1 dir() 示例

请特别注意下面示例中 Directory::read() 函数返回值的判断方式。 我们严格测试（值相等，并且类型相同，请参考 比较运算符 ）返回值等于 FALSE ，因为有些情况下，目录名可能"等于" FALSE ，导致 跳出循环。

<?php
$d = dir("/etc/php5");
echo "Handle: " . $d->handle . "\n";
echo "Path: " . $d->path . "\n";
while (false !== ($entry = $d->read())) {
   echo $entry."\n";
}
$d->close();
?>

以上例程的输出类似于：

Handle: Resource id #2
Path: /etc/php5
.
..
apache
cgi
cli

注释

Note:

目录条目返回的顺序依赖于系统。

closedir
getcwd
Directory 函数


取得当前工作目录

dir
opendir
Directory 函数
PHP Manual

getcwd

(PHP 4, PHP 5, PHP 7)

getcwd — 取得当前工作目录

说明

string getcwd ( void )

取得当前工作目录。

返回值

成功则返回当前工作目录，失败返回 FALSE。

在某些 Unix 的变种下，如果任何父目录没有设定可读或搜索模式，即使当前目录设定了，getcwd() 还是会返回 FALSE。有关模式与权限的更多信息见 chmod()。

范例

Example #1 getcwd() 例子

<?php

// current directory
echo getcwd() . "\n";

chdir('cvs');

// current directory
echo getcwd() . "\n";

?>

以上例程的输出类似于：

/home/didou
/home/didou/cvs

参见

  • chdir() - 改变目录
  • chmod() - 改变文件模式

dir
opendir
Directory 函数


打开目录句柄

getcwd
readdir
Directory 函数
PHP Manual

opendir

(PHP 4, PHP 5, PHP 7)

opendir — 打开目录句柄

说明

resource opendir ( string $path [, resource $context ] )

打开一个目录句柄，可用于之后的 closedir()，readdir() 和 rewinddir() 调用中。

参数

path

要打开的目录路径

context

context 参数的说明见手册中的 Streams API 一章。

返回值

如果成功则返回目录句柄的 resource，失败则返回 FALSE。

如果 path 不是一个合法的目录或者因为权限限制或文件系统错误而不能打开目录，opendir() 返回 FALSE 并产生一个 E_WARNING 级别的 PHP 错误信息。可以在 opendir() 前面加上"@"符号来抑制错误信息的输出。

更新日志

版本 | 说明
5.0.0 | path 支持 ftp:// URL wrapper
4.3.0 | path 可以是任何支持目录列表的 URL，不过在 PHP 4 中只有 file:// URL wrapper 支持此功能

范例

Example #1 opendir() 例子

<?php
$dir = "/etc/php5/";

// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
        }
        closedir($dh);
    }
}
?>

以上例程的输出类似于：

filename: . : filetype: dir
filename: .. : filetype: dir
filename: apache : filetype: dir
filename: cgi : filetype: dir
filename: cli : filetype: dir

参见

  • is_dir() - 判断给定文件名是否是一个目录
  • readdir() - 从目录句柄中读取条目
  • dir() - 返回一个 Directory 类实例

getcwd
readdir
Directory 函数


从目录句柄中读取条目

opendir
rewinddir
Directory 函数
PHP Manual

readdir

(PHP 4, PHP 5, PHP 7)

readdir — 从目录句柄中读取条目

说明

string readdir ([ resource $dir_handle ] )

返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。

参数

dir_handle

目录句柄的 resource，之前由 opendir() 打开

返回值

成功则返回文件名 或者在失败时返回 FALSE

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

范例

Example #1 列出目录中的所有文件

请留意下面例子中检查 readdir() 返回值的风格。这里明确地测试返回值是否全等于（值和类型都相同——更多信息参见比较运算符）FALSE，否则任何目录项的名称求值为 FALSE 的都会导致循环停止（例如一个目录名为"0"）。

<?php
// 注意在 4.0.0-RC2 之前不存在 !== 运算符

if ($handle = opendir('/path/to/files')) {
    echo "Directory handle: $handle\n";
    echo "Files:\n";

    /* 这是正确地遍历目录方法 */
    while (false !== ($file = readdir($handle))) {
        echo "$file\n";
    }

    /* 这是错误地遍历目录的方法 */
    while ($file = readdir($handle)) {
        echo "$file\n";
    }

    closedir($handle);
}
?>

Example #2 列出当前目录的所有文件并去掉 . 和 ..

<?php
if ($handle = opendir('.')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            echo "$file\n";
        }
    }
    closedir($handle);
}
?>

参见

  • is_dir() - 判断给定文件名是否是一个目录
  • glob() - 寻找与模式匹配的文件路径
  • opendir() - 打开目录句柄
  • scandir() - 列出指定路径中的文件和目录

opendir
rewinddir
Directory 函数


倒回目录句柄

readdir
scandir
Directory 函数
PHP Manual

rewinddir

(PHP 4, PHP 5, PHP 7)

rewinddir — 倒回目录句柄

说明

void rewinddir ( resource $dir_handle )

将 dir_handle 指定的目录流重置到目录的开头。

参数

dir_handle

目录句柄的 resource，之前由 opendir() 打开

readdir
scandir
Directory 函数


列出指定路径中的文件和目录

rewinddir
Fileinfo
Directory 函数
PHP Manual

scandir

(PHP 5, PHP 7)

scandir — 列出指定路径中的文件和目录

说明

array scandir ( string $directory [, int $sorting_order [, resource $context ]] )

返回一个 array，包含有 directory 中的文件和目录。

参数

directory

要被浏览的目录

sorting_order

默认的排序顺序是按字母升序排列。如果使用了可选参数 sorting_order（设为 1），则排序顺序是按字母降序排列。

context

context 参数的说明见手册中的 Streams API 一章。

返回值

成功则返回包含有文件名的 array，如果失败则返回 FALSE。如果 directory 不是个目录，则返回布尔值 FALSE 并生成一条 E_WARNING 级的错误。

更新日志

版本 | 说明
5.4.0 | sorting_order now accepts constants. Any nonzero value caused descending order in previous versions.

范例

Example #1 一个简单的 scandir() 例子

<?php
$dir    = '/tmp';
$files1 = scandir($dir);
$files2 = scandir($dir, 1);

print_r($files1);
print_r($files2);
?>

以上例程的输出类似于：

Array
(
    [0] => .
    [1] => ..
    [2] => bar.php
    [3] => foo.txt
    [4] => somedir
)
Array
(
    [0] => somedir
    [1] => foo.txt
    [2] => bar.php
    [3] => ..
    [4] => .
)

Example #2 scandir() 在 PHP 4 中的实现

<?php
$dir = "/tmp";
$dh  = opendir($dir);
while (false !== ($filename = readdir($dh))) {
    $files[] = $filename;
}

sort($files);

print_r($files);

rsort($files);

print_r($files);

?>

以上例程的输出类似于：

Array
(
    [0] => .
    [1] => ..
    [2] => bar.php
    [3] => foo.txt
    [4] => somedir
)
Array
(
    [0] => somedir
    [1] => foo.txt
    [2] => bar.php
    [3] => ..
    [4] => .
)

注释

Tip

如已启用fopen 包装器，在此函数中， URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议，注意其用法及其可提供的预定义变量。

参见

  • opendir() - 打开目录句柄
  • readdir() - 从目录句柄中读取条目
  • glob() - 寻找与模式匹配的文件路径
  • is_dir() - 判断给定文件名是否是一个目录
  • sort() - 对数组排序

rewinddir
Fileinfo
Directory 函数


文件信息

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Fileinfo 函数
    • finfo_buffer — 返回一个字符串缓冲区的信息
    • finfo_close — 关闭 fileinfo 资源
    • finfo_file — 返回一个文件的信息
    • finfo_open — 创建一个 fileinfo 资源
    • finfo_set_flags — 设置 libmagic 配置选项
    • mime_content_type — 检测文件的 MIME 类型（已废弃）
  • finfo — The finfo class
    • finfo::buffer — 别名 finfo_buffer()
    • finfo::__construct — 别名 finfo_open
    • finfo::file — 别名 finfo_file()
    • finfo::set_flags — 别名 finfo_set_flags()
scandir
简介
文件系统相关扩展


简介

本模块中的函数通过在文件的给定位置查找特定的 魔术 字节序列 来猜测文件的内容类型以及编码。 虽然不是百分百的精确， 但是通常情况下能够很好的工作。

Fileinfo
安装／配置
Fileinfo


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Fileinfo


需求

PHP 5.3.0 之前的版本，需要 magic_open 库来 构建此扩展。

安装／配置
安装
安装／配置


安装

从 PHP 5.3.0 开始，本扩展是默认开启的。 在之前的版本中，fileinfo 是一个 PECL 扩展，但是已经不再持续维护。 5.3+ 之前的版本， 可以使用 » 停止使用的 PECL 扩展。

Windows 用户需要在 php.ini 中开启绑定的 php_fileinfo.dll DLL 来启用本扩展。

PHP 中绑定了 libmagic 库，某些 PHP 版本变更中也可能包含此库。 在 PHP fileinfo 扩展的源代码中，有 libmagic.patch 文件， 这是 libmagic 库的补丁包文件。

绑定的 libmagic 库的更新历史
PHP 版本 | 更新的 libmagic 版本 | 说明
5.3.2 | 5.03 |
5.3.0 | 5.02 |

需求
运行时配置
安装／配置


资源类型

Fileinfo 扩展中用到了 1 个资源： finfo_open() 函数返回的魔数数据库文件描述符。

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

FILEINFO_NONE (integer)
无特殊处理。
FILEINFO_SYMLINK (integer)
跟随符号链接。
FILEINFO_MIME_TYPE (integer)
返回 mime 类型。 自 PHP 5.3.0 可用。
FILEINFO_MIME_ENCODING (integer)
返回文件的 mime 编码。 自 PHP 5.3.0 可用。
FILEINFO_MIME (integer)
按照 RFC 2045 定义的格式返回文件 mime 类型和编码。
FILEINFO_COMPRESS (integer)
解压缩压缩文件。 由于线程安全问题，自 PHP 5.3.0 禁用。
FILEINFO_DEVICES (integer)
查看设备的块内容或字符。
FILEINFO_CONTINUE (integer)
返回全部匹配的类型。
FILEINFO_PRESERVE_ATIME (integer)
如果可以的话，尽可能保持原始的访问时间。
FILEINFO_RAW (integer)
对于不可打印字符不转换成 \ooo 八进制表示格式。
资源类型
Fileinfo 函数
Fileinfo


Fileinfo 函数

Table of Contents

  • finfo_buffer — 返回一个字符串缓冲区的信息
  • finfo_close — 关闭 fileinfo 资源
  • finfo_file — 返回一个文件的信息
  • finfo_open — 创建一个 fileinfo 资源
  • finfo_set_flags — 设置 libmagic 配置选项
  • mime_content_type — 检测文件的 MIME 类型（已废弃）
预定义常量
finfo_buffer
Fileinfo


返回一个字符串缓冲区的信息

Fileinfo 函数
finfo_close
Fileinfo 函数
PHP Manual

finfo_buffer

finfo::buffer

(PHP 5 >= 5.3.0, PHP 7, PECL fileinfo >= 0.1.0)

finfo_buffer -- finfo::buffer — 返回一个字符串缓冲区的信息

说明

过程化风格

string finfo_buffer ( resource $finfo , string $string = NULL [, int $options = FILEINFO_NONE [, resource $context = NULL ]] )

面向对象风格

public string finfo::buffer ( string $string = NULL [, int $options = FILEINFO_NONE [, resource $context = NULL ]] )

本函数用来获取字符串中二进制数据的信息。

参数

finfo

finfo_open() 函数返回的 Fileinfo 资源。

string

要检查的文件内容。

options

一个 Fileinfo 常量 或多个 Fileinfo 常量 进行逻辑或运算。

context

返回值

返回 string 参数所指定内容的类型描述。 发生错误时返回 FALSE 。

范例

Example #1 finfo_buffer() 函数例程

<?php
$finfo = new finfo(FILEINFO_MIME);
echo $finfo->buffer($_POST["script"]) . "\n";
?>

以上例程的输出类似于：

application/x-sh; charset=us-ascii

参见

  • finfo_file() - 别名 finfo_file()

Fileinfo 函数
finfo_close
Fileinfo 函数


关闭 fileinfo 资源

finfo_buffer
finfo_file
Fileinfo 函数
PHP Manual

finfo_close

(PHP >= 5.3.0, PECL fileinfo >= 0.1.0)

finfo_close — 关闭 fileinfo 资源

说明

bool finfo_close ( resource $finfo )

关闭 finfo_open() 函数所返回的 fileinfo 资源。

参数

finfo

finfo_open() 函数所返回的 fileinfo 资源。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

finfo_buffer
finfo_file
Fileinfo 函数


返回一个文件的信息

finfo_close
finfo_open
Fileinfo 函数
PHP Manual

finfo_file

finfo::file

(PHP >= 5.3.0, PECL fileinfo >= 0.1.0)

finfo_file -- finfo::file — 返回一个文件的信息

说明

过程化风格

string finfo_file ( resource $finfo , string $file_name = NULL [, int $options = FILEINFO_NONE [, resource $context = NULL ]] )

面向对象风格

public string finfo::file ( string $file_name = NULL [, int $options = FILEINFO_NONE [, resource $context = NULL ]] )

本函数用来获取一个文件的信息。

参数

finfo

finfo_open() 函数所返回的 fileinfo 资源。

file_name

要检查的文件名。

options

一个 Fileinfo 常量 或多个 Fileinfo 常量 进行逻辑或运算。

context

关于 contexts 的更多描述，请参考 Stream 函数。

返回值

返回 file_name 参数指定的文件信息。 发生错误时返回 FALSE 。

范例

Example #1 finfo_file() 例程

<?php
$finfo = finfo_open(FILEINFO_MIME_TYPE); // 返回 mime 类型
foreach (glob("*") as $filename) {
    echo finfo_file($finfo, $filename) . "\n";
}
finfo_close($finfo);
?>

以上例程的输出类似于：

text/html
image/gif
application/vnd.ms-excel

参见

  • finfo_buffer() - 别名 finfo_buffer()

finfo_close
finfo_open
Fileinfo 函数


创建一个 fileinfo 资源

finfo_file
finfo_set_flags
Fileinfo 函数
PHP Manual

finfo_open

finfo::__construct

(PHP >= 5.3.0, PECL fileinfo >= 0.1.0)

finfo_open -- finfo::__construct — 创建一个 fileinfo 资源

说明

过程化风格

resource finfo_open ([ int $options = FILEINFO_NONE [, string $magic_file = NULL ]] )

面向对象风格 （构造器）：

public finfo::__construct ([ int $options = FILEINFO_NONE [, string $magic_file = NULL ]] )

本函数打开一个魔数数据库并且返回它的资源。

参数

options

一个 Fileinfo 常量 或多个 Fileinfo 常量 进行逻辑或运算。

magic_file

魔数数据库文件名称， 通常是 /path/to/magic.mime。 如果未指定，则使用 MAGIC 环境变量。 如果未指定此环境变量， 则使用 PHP 绑定的魔数数据库。

传入 NULL 或者空字符串，等同于使用默认值。

返回值

（仅适用于过程化风格） 如果成功则返回一个表示魔数数据库的资源， 或者在失败时返回 FALSE。

注释

Warning

在 PHP 5.3.11 和 5.4.1 中预期的魔数数据库格式发生了变动， 所以，内置的魔数数据库被更新。 如果使用了外部魔数数据库， 可能会由于格式不同导致读取失败。 同时，一些 mime 类型的文字表示也发生了变化， 例如，PHP 文件的 mime 类型由 ""PHP script text" 变为"PHP script, ASCII text"。

Note:

通常来说，使用 PHP 绑定的魔数数据库（设置 magic_file 参数为空， 不设置 MAGIC 环境变量）是最好的选择， 除非你确实需要一个自定义的魔数数据库。

范例

Example #1 面向对象风格

<?php
$finfo = new finfo(FILEINFO_MIME, "/usr/share/misc/magic"); // 返回 mime 类型

/* get mime-type for a specific file */
$filename = "/usr/local/something.txt";
echo $finfo->file($filename);

?>

Example #2 过程化风格

<?php
$finfo = finfo_open(FILEINFO_MIME, "/usr/share/misc/magic"); // 返回 mime 类型

if (!$finfo) {
    echo "Opening fileinfo database failed";
    exit();
}

/* 获取指定文件的 mime 类型 */
$filename = "/usr/local/something.txt";
echo finfo_file($finfo, $filename);

/* 关闭资源 */
finfo_close($finfo);
?>

以上例程会输出：

text/plain; charset=us-ascii

参见

  • finfo_close() - 关闭 fileinfo 资源

finfo_file
finfo_set_flags
Fileinfo 函数


设置 libmagic 配置选项

finfo_open
mime_content_type
Fileinfo 函数
PHP Manual

finfo_set_flags

finfo::set_flags

(PHP >= 5.3.0, PECL fileinfo >= 0.1.0)

finfo_set_flags -- finfo::set_flags — 设置 libmagic 配置选项

说明

过程化风格

bool finfo_set_flags ( resource $finfo , int $options )

面向对象风格

public bool finfo::set_flags ( int $options )

此函数用来设置 Fileinfo 选项。 这些选项也可以在调用 finfo_open() 或者其他 Fileinfo 函数时直接指定。

参数

finfo

finfo_open() 返回的资源。

options

一个 Fileinfo 常量 或多个 Fileinfo 常量 进行逻辑或运算。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

finfo_open
mime_content_type
Fileinfo 函数


检测文件的 MIME 类型（已废弃）

finfo_set_flags
finfo
Fileinfo 函数
PHP Manual

mime_content_type

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

mime_content_type — 检测文件的 MIME 类型（已废弃）

说明

string mime_content_type ( string $filename )

返回通过使用 magic.mime 检测到的文件 MIME 类型。

参数

filename

要检测的文件名。

返回值

返回文件的 MIME 内容类型，例如 text/plain 或 application/octet-stream。

注释

Warning

由于 PECL Fileinfo 扩展 以更清晰的方式提供了更多的功能， 所以本函数已被废弃。

范例

Example #1 mime_content_type() 示例

<?php
echo mime_content_type('php.gif') . "\n";
echo mime_content_type('test.php');
?>

以上例程会输出：

image/gif
text/plain

参见

  • 使用 Fileinfo 作为替代。

finfo_set_flags
finfo
Fileinfo 函数


The finfo class

(PHP 5 >= 5.3.0, PHP 7, PECL fileinfo >= 0.1.0)

简介

This class provides an object oriented interface into the fileinfo functions.

类摘要

finfo {
public __construct ([ int $options = FILEINFO_NONE [, string $magic_file = NULL ]] )
public string buffer ( string $string = NULL [, int $options = FILEINFO_NONE [, resource $context = NULL ]] )
public string file ( string $file_name = NULL [, int $options = FILEINFO_NONE [, resource $context = NULL ]] )
public bool set_flags ( int $options )
}

Table of Contents

  • finfo::buffer — 别名 finfo_buffer()
  • finfo::__construct — 别名 finfo_open
  • finfo::file — 别名 finfo_file()
  • finfo::set_flags — 别名 finfo_set_flags()
mime_content_type
finfo::buffer
Fileinfo


别名 finfo_buffer()

finfo
finfo::__construct
finfo
PHP Manual

finfo::buffer

(PHP 5 >= 5.3.0, PHP 7, PECL fileinfo >= 0.1.0)

finfo::buffer — 别名 finfo_buffer()

说明

public string finfo::buffer ( string $string = NULL [, int $options = FILEINFO_NONE [, resource $context = NULL ]] )

此函数是该函数的别名： finfo_buffer()

finfo
finfo::__construct
finfo


别名 finfo_open

finfo::buffer
finfo::file
finfo
PHP Manual

finfo::__construct

(PHP >= 5.3.0, PECL fileinfo >= 0.1.0)

finfo::__construct — 别名 finfo_open()

说明

public finfo::__construct ([ int $options = FILEINFO_NONE [, string $magic_file = NULL ]] )

此函数是该函数的别名： finfo_open()

finfo::buffer
finfo::file
finfo


别名 finfo_file()

finfo::__construct
finfo::set_flags
finfo
PHP Manual

finfo::file

(PHP >= 5.3.0, PECL fileinfo >= 0.1.0)

finfo::file — 别名 finfo_file()

说明

public string finfo::file ( string $file_name = NULL [, int $options = FILEINFO_NONE [, resource $context = NULL ]] )

此函数是该函数的别名： finfo_file()

finfo::__construct
finfo::set_flags
finfo


别名 finfo_set_flags()

finfo::file
Filesystem
finfo
PHP Manual

finfo::set_flags

(PHP >= 5.3.0, PECL fileinfo >= 0.1.0)

finfo::set_flags — 别名 finfo_set_flags()

说明

public bool finfo::set_flags ( int $options )

此函数是该函数的别名： finfo_set_flags()

finfo::file
Filesystem
finfo


Filesystem

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Filesystem 函数
    • basename — 返回路径中的文件名部分
    • chgrp — 改变文件所属的组
    • chmod — 改变文件模式
    • chown — 改变文件的所有者
    • clearstatcache — 清除文件状态缓存
    • copy — 拷贝文件
    • delete — 参见 unlink 或 unset
    • dirname — 返回路径中的目录部分
    • disk_free_space — 返回目录中的可用空间
    • disk_total_space — 返回一个目录的磁盘总大小
    • diskfreespace — disk_free_space 的别名
    • fclose — 关闭一个已打开的文件指针
    • feof — 测试文件指针是否到了文件结束的位置
    • fflush — 将缓冲内容输出到文件
    • fgetc — 从文件指针中读取字符
    • fgetcsv — 从文件指针中读入一行并解析 CSV 字段
    • fgets — 从文件指针中读取一行
    • fgetss — 从文件指针中读取一行并过滤掉 HTML 标记
    • file_exists — 检查文件或目录是否存在
    • file_get_contents — 将整个文件读入一个字符串
    • file_put_contents — 将一个字符串写入文件
    • file — 把整个文件读入一个数组中
    • fileatime — 取得文件的上次访问时间
    • filectime — 取得文件的 inode 修改时间
    • filegroup — 取得文件的组
    • fileinode — 取得文件的 inode
    • filemtime — 取得文件修改时间
    • fileowner — 取得文件的所有者
    • fileperms — 取得文件的权限
    • filesize — 取得文件大小
    • filetype — 取得文件类型
    • flock — 轻便的咨询文件锁定
    • fnmatch — 用模式匹配文件名
    • fopen — 打开文件或者 URL
    • fpassthru — 输出文件指针处的所有剩余数据
    • fputcsv — 将行格式化为 CSV 并写入文件指针
    • fputs — fwrite 的别名
    • fread — 读取文件（可安全用于二进制文件）
    • fscanf — 从文件中格式化输入
    • fseek — 在文件指针中定位
    • fstat — 通过已打开的文件指针取得文件信息
    • ftell — 返回文件指针读/写的位置
    • ftruncate — 将文件截断到给定的长度
    • fwrite — 写入文件（可安全用于二进制文件）
    • glob — 寻找与模式匹配的文件路径
    • is_dir — 判断给定文件名是否是一个目录
    • is_executable — 判断给定文件名是否可执行
    • is_file — 判断给定文件名是否为一个正常的文件
    • is_link — 判断给定文件名是否为一个符号连接
    • is_readable — 判断给定文件名是否可读
    • is_uploaded_file — 判断文件是否是通过 HTTP POST 上传的
    • is_writable — 判断给定的文件名是否可写
    • is_writeable — is_writable 的别名
    • lchgrp — 修改符号链接的所有组
    • lchown — 修改符号链接的所有者
    • link — 建立一个硬连接
    • linkinfo — 获取一个连接的信息
    • lstat — 给出一个文件或符号连接的信息
    • mkdir — 新建目录
    • move_uploaded_file — 将上传的文件移动到新位置
    • parse_ini_file — 解析一个配置文件
    • parse_ini_string — 解析配置字符串
    • pathinfo — 返回文件路径的信息
    • pclose — 关闭进程文件指针
    • popen — 打开进程文件指针
    • readfile — 输出文件
    • readlink — 返回符号连接指向的目标
    • realpath_cache_get — 获取真实目录缓存的详情
    • realpath_cache_size — 获取真实路径缓冲区的大小
    • realpath — 返回规范化的绝对路径名
    • rename — 重命名一个文件或目录
    • rewind — 倒回文件指针的位置
    • rmdir — 删除目录
    • set_file_buffer — stream_set_write_buffer 的别名
    • stat — 给出文件的信息
    • symlink — 建立符号连接
    • tempnam — 建立一个具有唯一文件名的文件
    • tmpfile — 建立一个临时文件
    • touch — 设定文件的访问和修改时间
    • umask — 改变当前的 umask
    • unlink — 删除文件
finfo::set_flags
简介
文件系统相关扩展


简介

No external libraries are needed to build this extension, but if you want PHP to support LFS (large files) on Linux, then you need to have a recent glibc and you need compile PHP with the following compiler flags: -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64.

Filesystem
安装／配置
Filesystem


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Filesystem


运行时配置

这些函数的行为受 php.ini 中的设置影响。

文件系统和流配置选项
名字 | 默认 | 可修改范围 | 更新日志
allow_url_fopen | "1" | PHP_INI_SYSTEM | 在 PHP <= 4.3.4 时是 PHP_INI_ALL。PHP 4.0.4 版以后可用。
user_agent | NULL | PHP_INI_ALL | PHP 4.3.0 版以后可用。
default_socket_timeout | "60" | PHP_INI_ALL | PHP 4.3.0 版以后可用。
from | "" | PHP_INI_ALL |
auto_detect_line_endings | "0" | PHP_INI_ALL | PHP 4.3.0 版以后可用。

这是配置指令的简短说明。

allow_url_fopen boolean

本选项激活了 URL 形式的 fopen 封装协议使得可以访问 URL 对象例如文件。默认的封装协议提供用 ftp 和 http 协议来访问远程文件，一些扩展库例如 zlib 可能会注册更多的封装协议。

Note:

出于安全性考虑，此选项只能在 php.ini 中设置。

Note:

此选项是紧接着版本 4.0.3 发布后引进的。版本 4.0.3 以及之前的版本只能在编译时通过配置项 --disable-url-fopen-wrapper 来取消此特性。

Warning

Windows 版在 PHP 4.3.0 之前，以下函数不支持远程文件访问：include，include_once, require，require_once 和GD 和图像处理 函数中的 imagecreatefromXXX 函数。

allow_url_include boolean

This option allows the use of URL-aware fopen wrappers with the following functions: include, include_once, require, require_once.

Note:

This setting requires allow_url_fopen to be on.

user_agent string

定义 PHP 发送的 User-Agent。

default_socket_timeout integer

基于 socket 的流的默认超时时间（秒）。

Note: 本配置参数是 PHP 4.3.0 引进的。

from string

定义匿名 ftp 的密码（email 地址）。

auto_detect_line_endings boolean

当设为 On 时，PHP 将检查通过 fgets() 和 file() 取得的数据中的行结束符号是符合 Unix，MS-DOS，还是 Macintosh 的习惯。

这使得 PHP 可以和 Macintosh 系统交互操作，但是默认值是 Off，因为在检测第一行的 EOL 习惯时会有很小的性能损失，而且在 Unix 系统下使用回车符号作为项目分隔符的人们会遭遇向下不兼容的行为。

Note: 本配置参数是 PHP 4.3.0 引进的。

安装
资源类型
安装／配置


资源类型

The file system uses streams as their resource type. Streams are documented in its own reference chapter, Streams.

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

SEEK_SET (integer)
SEEK_CUR (integer)
SEEK_END (integer)
LOCK_SH (integer)
LOCK_EX (integer)
LOCK_UN (integer)
LOCK_NB (integer)
GLOB_BRACE (integer)
GLOB_ONLYDIR (integer)
GLOB_MARK (integer)
GLOB_NOSORT (integer)
GLOB_NOCHECK (integer)
GLOB_NOESCAPE (integer)
GLOB_AVAILABLE_FLAGS (integer)
PATHINFO_DIRNAME (integer)
PATHINFO_BASENAME (integer)
PATHINFO_EXTENSION (integer)
PATHINFO_FILENAME (integer)
Since PHP 5.2.0.
FILE_USE_INCLUDE_PATH (integer)
Search for filename in include_path (since PHP 5).
FILE_NO_DEFAULT_CONTEXT (integer)
FILE_APPEND (integer)
Append content to existing file.
FILE_IGNORE_NEW_LINES (integer)
Strip EOL characters (since PHP 5).
FILE_SKIP_EMPTY_LINES (integer)
Skip empty lines (since PHP 5).
FILE_BINARY (integer)

Binary mode (since PHP 5.2.7).

Note:

This constant has no effect, and is only available for forward compatibility.

FILE_TEXT (integer)

Text mode (since PHP 5.2.7).

Note:

This constant has no effect, and is only available for forward compatibility.

INI_SCANNER_NORMAL (integer)
Normal INI scanner mode (since PHP 5.3).
INI_SCANNER_RAW (integer)
Raw INI scanner mode (since PHP 5.3).
INI_SCANNER_TYPED (integer)
Typed INI scanner mode (since PHP 5.6.1).
FNM_NOESCAPE (integer)
Disable backslash escaping.
FNM_PATHNAME (integer)
Slash in string only matches slash in the given pattern.
FNM_PERIOD (integer)
Leading period in string must be exactly matched by period in the given pattern.
FNM_CASEFOLD (integer)
Caseless match. Part of the GNU extension.
资源类型
Filesystem 函数
Filesystem


Filesystem 函数

参见

For related functions, see also the Directory and Program Execution sections.

For a list and explanation of the various URL wrappers that can be used as remote files, see also 支持的协议和封装协议.

Table of Contents

  • basename — 返回路径中的文件名部分
  • chgrp — 改变文件所属的组
  • chmod — 改变文件模式
  • chown — 改变文件的所有者
  • clearstatcache — 清除文件状态缓存
  • copy — 拷贝文件
  • delete — 参见 unlink 或 unset
  • dirname — 返回路径中的目录部分
  • disk_free_space — 返回目录中的可用空间
  • disk_total_space — 返回一个目录的磁盘总大小
  • diskfreespace — disk_free_space 的别名
  • fclose — 关闭一个已打开的文件指针
  • feof — 测试文件指针是否到了文件结束的位置
  • fflush — 将缓冲内容输出到文件
  • fgetc — 从文件指针中读取字符
  • fgetcsv — 从文件指针中读入一行并解析 CSV 字段
  • fgets — 从文件指针中读取一行
  • fgetss — 从文件指针中读取一行并过滤掉 HTML 标记
  • file_exists — 检查文件或目录是否存在
  • file_get_contents — 将整个文件读入一个字符串
  • file_put_contents — 将一个字符串写入文件
  • file — 把整个文件读入一个数组中
  • fileatime — 取得文件的上次访问时间
  • filectime — 取得文件的 inode 修改时间
  • filegroup — 取得文件的组
  • fileinode — 取得文件的 inode
  • filemtime — 取得文件修改时间
  • fileowner — 取得文件的所有者
  • fileperms — 取得文件的权限
  • filesize — 取得文件大小
  • filetype — 取得文件类型
  • flock — 轻便的咨询文件锁定
  • fnmatch — 用模式匹配文件名
  • fopen — 打开文件或者 URL
  • fpassthru — 输出文件指针处的所有剩余数据
  • fputcsv — 将行格式化为 CSV 并写入文件指针
  • fputs — fwrite 的别名
  • fread — 读取文件（可安全用于二进制文件）
  • fscanf — 从文件中格式化输入
  • fseek — 在文件指针中定位
  • fstat — 通过已打开的文件指针取得文件信息
  • ftell — 返回文件指针读/写的位置
  • ftruncate — 将文件截断到给定的长度
  • fwrite — 写入文件（可安全用于二进制文件）
  • glob — 寻找与模式匹配的文件路径
  • is_dir — 判断给定文件名是否是一个目录
  • is_executable — 判断给定文件名是否可执行
  • is_file — 判断给定文件名是否为一个正常的文件
  • is_link — 判断给定文件名是否为一个符号连接
  • is_readable — 判断给定文件名是否可读
  • is_uploaded_file — 判断文件是否是通过 HTTP POST 上传的
  • is_writable — 判断给定的文件名是否可写
  • is_writeable — is_writable 的别名
  • lchgrp — 修改符号链接的所有组
  • lchown — 修改符号链接的所有者
  • link — 建立一个硬连接
  • linkinfo — 获取一个连接的信息
  • lstat — 给出一个文件或符号连接的信息
  • mkdir — 新建目录
  • move_uploaded_file — 将上传的文件移动到新位置
  • parse_ini_file — 解析一个配置文件
  • parse_ini_string — 解析配置字符串
  • pathinfo — 返回文件路径的信息
  • pclose — 关闭进程文件指针
  • popen — 打开进程文件指针
  • readfile — 输出文件
  • readlink — 返回符号连接指向的目标
  • realpath_cache_get — 获取真实目录缓存的详情
  • realpath_cache_size — 获取真实路径缓冲区的大小
  • realpath — 返回规范化的绝对路径名
  • rename — 重命名一个文件或目录
  • rewind — 倒回文件指针的位置
  • rmdir — 删除目录
  • set_file_buffer — stream_set_write_buffer 的别名
  • stat — 给出文件的信息
  • symlink — 建立符号连接
  • tempnam — 建立一个具有唯一文件名的文件
  • tmpfile — 建立一个临时文件
  • touch — 设定文件的访问和修改时间
  • umask — 改变当前的 umask
  • unlink — 删除文件
预定义常量
basename
Filesystem


返回路径中的文件名部分

Filesystem 函数
chgrp
Filesystem 函数
PHP Manual

basename

(PHP 4, PHP 5, PHP 7)

basename — 返回路径中的文件名部分

说明

string basename ( string $path [, string $suffix ] )

给出一个包含有指向一个文件的全路径的字符串，本函数返回基本的文件名。

参数

path

一个路径。

在 Windows 中，斜线（/）和反斜线（\）都可以用作目录分隔符。在其它环境下是斜线（/）。

suffix

如果文件名是以 suffix 结束的，那这一部分也会被去掉。

返回值

Returns the base name of the given path. 返回 path 的基本的文件名。

更新日志

版本 | 说明
4.1.0 | 增加了参数 suffix

范例

Example #1 basename() 例子

<?php
echo "1) ".basename("/etc/sudoers.d", ".d").PHP_EOL;
echo "2) ".basename("/etc/passwd").PHP_EOL;
echo "3) ".basename("/etc/").PHP_EOL;
echo "4) ".basename(".").PHP_EOL;
echo "5) ".basename("/");
?>

以上例程会输出：

1) sudoers
2) passwd
3) etc
4) .
5)

注释

Note:

basename() operates naively on the input string, and is not aware of the actual filesystem, or path components such as "..".

Note:

basename() is locale aware, so for it to see the correct basename with multibyte character paths, the matching locale must be set using the setlocale() function.

参见

  • dirname() - 返回路径中的目录部分
  • pathinfo() - 返回文件路径的信息

Filesystem 函数
chgrp
Filesystem 函数


改变文件所属的组

basename
chmod
Filesystem 函数
PHP Manual

chgrp

(PHP 4, PHP 5, PHP 7)

chgrp — 改变文件所属的组

说明

bool chgrp ( string $filename , mixed $group )

尝试将文件 filename 所属的组改成 group（通过组名或组 ID 指定）。

只有超级用户可以任意修改文件的组，其它用户可能只能将文件的组改成该用户自己所在的组。

参数

filename

文件的路径。

group

组的名称或数字。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 改变文件所属的组

<?php
$filename = 'shared_file.txt';
$format = "%s's Group ID @ %s: %d\n";
printf($format, $filename, date('r'), filegroup($filename));
chgrp($filename, 8);
clearstatcache(); // do not cache filegroup() results
printf($format, $filename, date('r'), filegroup($filename));
?>

注释

Note: 此函数不能作用于远程文件，被检查的文件必须是可通过服务器的文件系统访问的。

Note: 当启用 安全模式时， PHP 会检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。

参见

  • chown() - 改变文件的所有者
  • chmod() - 改变文件模式

basename
chmod
Filesystem 函数


改变文件模式

chgrp
chown
Filesystem 函数
PHP Manual

chmod

(PHP 4, PHP 5, PHP 7)

chmod — 改变文件模式

说明

bool chmod ( string $filename , int $mode )

尝试将 filename 所指定文件的模式改成 mode 所给定的。

参数

filename

文件的路径。

mode

注意 mode 不会被自动当成八进制数值，而且也不能用字符串（例如 "g+w"）。要确保正确操作，需要给 mode 前面加上 0：

<?php
chmod("/somedir/somefile", 755);   // 十进制数，可能不对
chmod("/somedir/somefile", "u+rwx,go+rx"); // 字符串，不对
chmod("/somedir/somefile", 0755);  // 八进制数，正确的 mode 值
?>

mode 参数包含三个八进制数按顺序分别指定了所有者、所有者所在的组以及所有人的访问限制。每一部分都可以通过加入所需的权限来计算出所要的权限。数字 1 表示使文件可执行，数字 2 表示使文件可写，数字 4 表示使文件可读。加入这些数字来制定所需要的权限。有关 UNIX 系统的文件权限可以阅读手册"man 1 chmod"和"man 2 chmod"。

<?php
// Read and write for owner, nothing for everybody else
chmod("/somedir/somefile", 0600);

// Read and write for owner, read for everybody else
chmod("/somedir/somefile", 0644);

// Everything for owner, read and execute for others
chmod("/somedir/somefile", 0755);

// Everything for owner, read and execute for owner's group
chmod("/somedir/somefile", 0750);
?>

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note:

当前用户指的是执行 PHP 的用户。很可能和通常的 shell 或者 FTP 用户不是同一个。在大多数系统下文件模式只能被文件所有者的用户改变。

Note: 此函数不能作用于远程文件，被检查的文件必须是可通过服务器的文件系统访问的。

Note:

当安全模式打开的时候，PHP 会检查所操作的文件是否和正在执行的脚本具有相同的 UID （所有者）。要注意的是，不能修改 SUID，SGID 和 sticky bits。

参见

  • chown() - 改变文件的所有者
  • chgrp() - 改变文件所属的组
  • fileperms() - 取得文件的权限
  • stat() - 给出文件的信息

chgrp
chown
Filesystem 函数


改变文件的所有者

chmod
clearstatcache
Filesystem 函数
PHP Manual

chown

(PHP 4, PHP 5, PHP 7)

chown — 改变文件的所有者

说明

bool chown ( string $filename , mixed $user )

尝试将文件 filename 的所有者改成用户 user（由用户名或用户 ID 指定）。 只有超级用户可以改变文件的所有者。

参数

filename

文件路径。

user

用户名或数字。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 简单的 chown() 用法

<?php

// File name and username to use
$file_name= "foo.php";
$path = "/home/sites/php.net/public_html/sandbox/" . $file_name ;
$user_name = "root";

// Set the user
chown($path, $user_name);

// Check the result
$stat = stat($path);
print_r(posix_getpwuid($stat['uid']));

?>

以上例程的输出类似于：

Array
(
    [name] => root
    [passwd] => x
    [uid] => 0
    [gid] => 0
    [gecos] => root
    [dir] => /root
    [shell] => /bin/bash
)

注释

Note: 此函数不能作用于远程文件，被检查的文件必须是可通过服务器的文件系统访问的。

Note: 当启用 安全模式时， PHP 会检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。

参见

  • chmod() - 改变文件模式

chmod
clearstatcache
Filesystem 函数


清除文件状态缓存

chown
copy
Filesystem 函数
PHP Manual

clearstatcache

(PHP 4, PHP 5, PHP 7)

clearstatcache — 清除文件状态缓存

说明

void clearstatcache ([ bool $clear_realpath_cache = false [, string $filename ]] )

当使用 stat()，lstat() 或者任何列在受影响函数表（见下面）中的函数时，PHP 将缓存这些函数的返回信息以提供更快的性能。然而在某些情况下，你可能想清除被缓存的信息。例如如果在一个脚本中多次检查同一个文件，而该文件在此脚本执行期间有被删除或修改的危险时，你需要清除文件状态缓存。这种情况下，可以用 clearstatcache() 函数来清除被 PHP 缓存的该文件信息。

必须注意的是，对于不存在的文件，PHP 并不会缓存其信息。所以如果调用 file_exists() 来检查不存在的文件，在该文件没有被创建之前，它都会返回 FALSE。如果该文件被创建了，就算以后被删除，它都会返回 TRUE 函数 unlink() 会自动清除该缓存.

Note:

本函数缓存特定文件名的信息，因此只在对同一个文件名进行多次操作并且需要该文件信息不被缓存时才需要调用 clearstatcache()。

受影响的函数包括
stat()，
lstat()，
file_exists()，
is_writable()，
is_readable()，
is_executable()，
is_file()，
is_dir()，
is_link()，
filectime()，
fileatime()，
filemtime()，
fileinode()，
filegroup()，
fileowner()，
filesize()，
filetype()
和 fileperms()。

参数

clear_realpath_cache

是否清除真实路径缓存

filename

清除文件名指定的文件的真实路径缓存; 只在 clear_realpath_cache 为 TRUE 时启用

返回值

没有返回值。

更新日志

版本 | 说明
5.3.0 | 增加了可选的 clear_realpath_cache 和 filename 参数.

范例

Example #1 clearstatcache() 例子

<?php
$file = 'output_log.txt';

function get_owner($file)
{
    $stat = stat($file);
    $user = posix_getpwuid($stat['uid']);
    return $user['name'];
}

$format = "UID @ %s: %s\n";

printf($format, date('r'), get_owner($file));

chown($file, 'ross');
printf($format, date('r'), get_owner($file));

clearstatcache();
printf($format, date('r'), get_owner($file));
?>

以上例程的输出类似于：

UID @ Sun, 12 Oct 2008 20:48:28 +0100: root
UID @ Sun, 12 Oct 2008 20:48:28 +0100: root
UID @ Sun, 12 Oct 2008 20:48:28 +0100: ross

chown
copy
Filesystem 函数


拷贝文件

clearstatcache
delete
Filesystem 函数
PHP Manual

copy

(PHP 4, PHP 5, PHP 7)

copy — 拷贝文件

说明

bool copy ( string $source , string $dest [, resource $context ] )

将文件从 source 拷贝到 dest。

如果要移动文件的话，请使用 rename() 函数。

参数

source

源文件路径。

dest

目标路径。如果 dest 是一个 URL，则如果封装协议不支持覆盖已有的文件时拷贝操作会失败。

Warning

如果目标文件已存在，将会被覆盖。

context

A valid context resource created with stream_context_create().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.3.0 | 增加了对 context 的支持。
4.3.0 | 如果启用了"fopen wrappers"的话，source 和 dest 都可以是 URL。更多细节见 fopen()。

范例

Example #1 copy() 例子

<?php
$file = 'example.txt';
$newfile = 'example.txt.bak';

if (!copy($file, $newfile)) {
    echo "failed to copy $file...\n";
}
?>

参见

  • move_uploaded_file() - 将上传的文件移动到新位置
  • rename() - 重命名一个文件或目录
  • The section of the manual about handling file uploads

clearstatcache
delete
Filesystem 函数


参见 unlink 或 unset

copy
dirname
Filesystem 函数
PHP Manual

delete

(None)

delete — 参见 unlink() 或 unset()

说明

void delete ( void )

这是个虚构的手册条目来给那些本来是找 unlink() 或者 unset() 的人提供一些有用的信息。

返回值

没有返回值。

参见

  • unlink() - 删除文件
  • unset() - 释放给定的变量

copy
dirname
Filesystem 函数


返回路径中的目录部分

delete
disk_free_space
Filesystem 函数
PHP Manual

dirname

(PHP 4, PHP 5, PHP 7)

dirname — 返回路径中的目录部分

说明

string dirname ( string $path )

给出一个包含有指向一个文件的全路径的字符串，本函数返回去掉文件名后的目录名。

参数

path

一个路径。

在 Windows 中，斜线（/）和反斜线（\）都可以用作目录分隔符。在其它环境下是斜线（/）。

返回值

返回 path 的父目录。 如果在 path 中没有斜线，则返回一个点（'.'），表示当前目录。否则返回的是把 path 中结尾的 /component（最后一个斜线以及后面部分）去掉之后的字符串。

更新日志

版本 | 说明
5.0.0 | dirname() 的操作从 PHP 5.0.0 版开始是二进制安全的。
4.0.3 | 在这个版本中，dirname() 被修正为 POSIX 兼容。

范例

Example #1 dirname() 例子

<?php
echo "1) " . dirname("/etc/passwd") . PHP_EOL; // 1) /etc
echo "2) " . dirname("/etc/") . PHP_EOL; // 2) / (or \ on Windows)
echo "3) " . dirname("."); // 3) .
?>

注释

Note:

dirname() operates naively on the input string, and is not aware of the actual filesystem, or path components such as "..".

Note:

dirname() is locale aware, so for it to see the correct directory name with multibyte character paths, the matching locale must be set using the setlocale() function.

Note:

Since PHP 4.3.0, you will often get a slash or a dot back from dirname() in situations where the older functionality would have given you the empty string.

检查下面发生变化的例子：

<?php

// PHP 4.3.0 以前
dirname('c:/'); // 返回 '.'

// PHP 4.3.0 以后
dirname('c:/x'); // 返回 'c:'
dirname('c:/Temp/x'); // 返回 'c:/Temp'
dirname('/x'); // 返回 '\'

?>

参见

  • basename() - 返回路径中的文件名部分
  • pathinfo() - 返回文件路径的信息
  • realpath() - 返回规范化的绝对路径名

delete
disk_free_space
Filesystem 函数


返回目录中的可用空间

dirname
disk_total_space
Filesystem 函数
PHP Manual

disk_free_space

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

disk_free_space — 返回目录中的可用空间

说明

float disk_free_space ( string $directory )

给出一个包含有一个目录的字符串，本函数将根据相应的文件系统或磁盘分区返回可用的字节数。

参数

directory

文件系统目录或者磁盘分区。

Note:

如果指定了文件名而不是文件目录，这个函数的行为将并不统一，会因操作系统和 PHP 版本而异。

返回值

以浮点返回可用的字节数， 或者在失败时返回 FALSE。

范例

Example #1 disk_free_space() 例子

<?php
// $df 包含根目录下可用的字节数
$df = disk_free_space("/");

//在 Windows 下:
$df_c = disk_free_space("C:");
$df_d = disk_free_space("D:");
?>

注释

Note: 此函数不能作用于远程文件，被检查的文件必须是可通过服务器的文件系统访问的。

参见

  • disk_total_space() - 返回一个目录的磁盘总大小

dirname
disk_total_space
Filesystem 函数


返回一个目录的磁盘总大小

disk_free_space
diskfreespace
Filesystem 函数
PHP Manual

disk_total_space

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

disk_total_space — 返回一个目录的磁盘总大小

说明

float disk_total_space ( string $directory )

给出一个包含有一个目录的字符串，本函数将根据相应的文件系统或磁盘分区返回所有的字节数。 【译者注】本函数返回的是该目录所在的磁盘分区的总大小，因此在给出同一个磁盘分区的不同目录作为参数所得到的结果完全相同。 在 Unix 和 Windows 200x/XP 中都支持将一个磁盘分区加载为一个子目录，这时正确使用本函数就很有意义。

参数

directory

文件系统的目录或者磁盘分区。

返回值

以浮点返回一个目录的磁盘总大小字节数， 或者在失败时返回 FALSE。

范例

Example #1 disk_total_space() 例子

<?php
// $df 包含 "/" 目录的磁盘大小
$ds = disk_total_space("/");

//在 Windows 下:
$ds = disk_total_space("C:");
$ds = disk_total_space("D:");
?>

注释

Note: 此函数不能作用于远程文件，被检查的文件必须是可通过服务器的文件系统访问的。

参见

  • disk_free_space() - 返回目录中的可用空间

disk_free_space
diskfreespace
Filesystem 函数


disk_free_space 的别名

disk_total_space
fclose
Filesystem 函数
PHP Manual

diskfreespace

(PHP 4, PHP 5, PHP 7)

diskfreespace — disk_free_space() 的别名

说明

此函数是该函数的别名：disk_free_space()。

disk_total_space
fclose
Filesystem 函数


关闭一个已打开的文件指针

diskfreespace
feof
Filesystem 函数
PHP Manual

fclose

(PHP 4, PHP 5, PHP 7)

fclose — 关闭一个已打开的文件指针

说明

bool fclose ( resource $handle )

将 handle 指向的文件关闭。

参数

handle

文件指针必须有效，并且是通过 fopen() 或 fsockopen() 成功打开的。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 一个简单 fclose() 例子

<?php

$handle = fopen('somefile.txt', 'r');

fclose($handle);

?>

参见

  • fopen() - 打开文件或者 URL
  • fsockopen() - 打开一个网络连接或者一个Unix套接字连接

diskfreespace
feof
Filesystem 函数


测试文件指针是否到了文件结束的位置

fclose
fflush
Filesystem 函数
PHP Manual

feof

(PHP 4, PHP 5, PHP 7)

feof — 测试文件指针是否到了文件结束的位置

说明

bool feof ( resource $handle )

测试文件指针是否到了文件结束的位。

参数

handle

文件指针必须是有效的，必须指向由 fopen() 或 fsockopen() 成功打开的文件(并还未由 fclose() 关闭)。

返回值

如果文件指针到了 EOF 或者出错时则返回 TRUE，否则返回一个错误（包括 socket 超时），其它情况则返回 FALSE。

注释

Warning

如果服务器没有关闭由 fsockopen() 所打开的连接，feof() 会一直等待直到超时。要解决这个问题可参见以下范例：

Example #1 处理 feof() 的超时

<?php
function safe_feof($fp, &$start = NULL) {
 $start = microtime(true);

 return feof($fp);
}

/* $fp 的赋值是由之前 fsockopen() 打开  */

$start = NULL;
$timeout = ini_get('default_socket_timeout');

while(!safe_feof($fp, $start) && (microtime(true) - $start) < $timeout)
{
 /* Handle */
}
?>

Warning

如果传递的文件指针无效可能会陷入无限循环中，因为 feof() 不会返回 TRUE。

Example #2 使用无效文件指针的 feof() 例子

<?php
// 如果文件不可读取或者不存在，fopen 函数返回 FALSE
$file = @fopen("no_such_file", "r");

// 来自 fopen 的 FALSE 会发出一条警告信息并在这里陷入无限循环
while (!feof($file)) {
}

fclose($file);
?>

fclose
fflush
Filesystem 函数


将缓冲内容输出到文件

feof
fgetc
Filesystem 函数
PHP Manual

fflush

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

fflush — 将缓冲内容输出到文件

说明

bool fflush ( resource $handle )

本函数强制将所有缓冲的输出写入 handle 文件句柄所指向的资源。 成功时返回 TRUE， 或者在失败时返回 FALSE。

文件指针必须是有效的，必须指向由 fopen() 或 fsockopen() 成功打开的文件(并还未由 fclose() 关闭)。

参数

handle

文件指针必须是有效的，必须指向由 fopen() 或 fsockopen() 成功打开的文件(并还未由 fclose() 关闭)。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 File write example using fflush()

<?php
$filename = 'bar.txt';

$file = fopen($filename, 'r+');
rewind($file);
fwrite($file, 'Foo');
fflush($file);
ftruncate($file, ftell($file));
fclose($file);
?>

参见

  • clearstatcache() - 清除文件状态缓存
  • fwrite() - 写入文件（可安全用于二进制文件）

feof
fgetc
Filesystem 函数


从文件指针中读取字符

fflush
fgetcsv
Filesystem 函数
PHP Manual

fgetc

(PHP 4, PHP 5, PHP 7)

fgetc — 从文件指针中读取字符

说明

string fgetc ( resource $handle )

从文件句柄中获取一个字符。

参数

handle

文件指针必须是有效的，必须指向由 fopen() 或 fsockopen() 成功打开的文件(并还未由 fclose() 关闭)。

返回值

返回一个包含有一个字符的字符串，该字符从 handle 指向的文件中得到。 碰到 EOF 则返回 FALSE。

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

范例

Example #1 一个 fgetc() 例子

<?php
$fp = fopen('somefile.txt', 'r');
if (!$fp) {
    echo 'Could not open file somefile.txt';
}
while (false !== ($char = fgetc($fp))) {
    echo "$char\n";
}
?>

注释

Note: 此函数可安全用于二进制对象。

参见

  • fread() - 读取文件（可安全用于二进制文件）
  • fopen() - 打开文件或者 URL
  • popen() - 打开进程文件指针
  • fsockopen() - 打开一个网络连接或者一个Unix套接字连接
  • fgets() - 从文件指针中读取一行

fflush
fgetcsv
Filesystem 函数


从文件指针中读入一行并解析 CSV 字段

fgetc
fgets
Filesystem 函数
PHP Manual

fgetcsv

(PHP 4, PHP 5, PHP 7)

fgetcsv — 从文件指针中读入一行并解析 CSV 字段

说明

array fgetcsv ( resource $handle [, int $length = 0 [, string $delimiter = ',' [, string $enclosure = '"' [, string $escape = '\\' ]]]] )

和 fgets() 类似，只除了 fgetcsv() 解析读入的行并找出 CSV 格式的字段然后返回一个包含这些字段的数组。

参数

handle

一个由 fopen()、popen() 或 fsockopen() 产生的有效文件指针。

length

必须大于 CVS 文件内最长的一行。在 PHP 5 中该参数是可选的。如果忽略（在 PHP 5.0.4 以后的版本中设为 0）该参数的话，那么长度就没有限制，不过可能会影响执行效率。

delimiter

设置字段分界符（只允许一个字符）。

enclosure

设置字段环绕符（只允许一个字符）。

escape

设置转义字符（只允许一个字符），默认是一个反斜杠。

返回值

返回包含读取字段的索引数组。

Note:

CSV 文件中的空行将被返回为一个包含有单个 null 字段的数组，不会被当成错误。

Note: 在读取在 Macintosh 电脑中或由其创建的文件时， 如果 PHP 不能正确的识别行结束符，启用运行时配置可选项 auto_detect_line_endings 也许可以解决此问题。

如果提供了无效的文件指针，fgetcsv() 会返回 NULL。 其他错误，包括碰到文件结束时返回 FALSE，。

更新日志

版本 | 说明
5.3.0 | 增加了 escape 参数。
4.3.5 | 现在起 fgetcsv() 的操作是二进制安全的。
4.3.0 | 增加了 enclosure 参数。

范例

Example #1 读取并显示 CSV 文件的整个内容

<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
}
?>

注释

Note:

该函数对区域设置是敏感的。比如说 LANG 设为 en_US.UTF-8 的话，单字节编码的文件就会出现读取错误。

参见

  • str_getcsv() - 解析 CSV 字符串为一个数组
  • explode() - 使用一个字符串分割另一个字符串
  • file() - 把整个文件读入一个数组中
  • pack() - Pack data into binary string
  • fputcsv() - 将行格式化为 CSV 并写入文件指针

fgetc
fgets
Filesystem 函数


从文件指针中读取一行

fgetcsv
fgetss
Filesystem 函数
PHP Manual

fgets

(PHP 4, PHP 5, PHP 7)

fgets — 从文件指针中读取一行

说明

string fgets ( resource $handle [, int $length ] )

从文件指针中读取一行。

参数

handle

文件指针必须是有效的，必须指向由 fopen() 或 fsockopen() 成功打开的文件(并还未由 fclose() 关闭)。

length

从 handle 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符（包括在返回值中）、EOF 或者已经读取了 length - 1 字节后停止（看先碰到那一种情况）。如果没有指定 length，则默认为 1K，或者说 1024 字节。

Note:

从 PHP 4.3 开始，忽略掉 length 则行的长度被假定为 1024，将继续从流中读取数据直到行结束。如果文件中的大多数行都大于 8KB，则在脚本中指定最大行的长度在利用资源上更为有效。

返回值

从指针 handle 指向的文件中读取了 length - 1 字节后返回字符串。 如果文件指针中没有更多的数据了则返回 FALSE。

错误发生时返回 FALSE。

更新日志

版本 | 说明
4.3.0 | fgets() 开始二进制安全
4.2.0 | length 参数成为可选。

范例

Example #1 逐行读取文件

<?php
$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
    while (($buffer = fgets($handle, 4096)) !== false) {
        echo $buffer;
    }
    if (!feof($handle)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($handle);
}
?>

注释

Note: 在读取在 Macintosh 电脑中或由其创建的文件时， 如果 PHP 不能正确的识别行结束符，启用运行时配置可选项 auto_detect_line_endings 也许可以解决此问题。

Note:

习惯了 C 语言中 fgets() 语法的人应该注意到 EOF 是怎样被返回的。

参见

  • fgetss() - 从文件指针中读取一行并过滤掉 HTML 标记
  • fread() - 读取文件（可安全用于二进制文件）
  • fgetc() - 从文件指针中读取字符
  • stream_get_line() - 从资源流里读取一行直到给定的定界符
  • fopen() - 打开文件或者 URL
  • popen() - 打开进程文件指针
  • fsockopen() - 打开一个网络连接或者一个Unix套接字连接
  • stream_set_timeout() - Set timeout period on a stream

fgetcsv
fgetss
Filesystem 函数


从文件指针中读取一行并过滤掉 HTML 标记

fgets
file_exists
Filesystem 函数
PHP Manual

fgetss

(PHP 4, PHP 5, PHP 7)

fgetss — 从文件指针中读取一行并过滤掉 HTML 标记

说明

string fgetss ( resource $handle [, int $length [, string $allowable_tags ]] )

和 fgets() 相同，只除了 fgetss() 尝试从读取的文本中去掉任何 HTML 和 PHP 标记。

参数

handle

文件指针必须是有效的，必须指向由 fopen() 或 fsockopen() 成功打开的文件(并还未由 fclose() 关闭)。

length

取回该长度的数据。

allowable_tags

可以用可选的第三个参数指定哪些标记不被去掉。

返回值

从 handle 指向的文件中大读取 length - 1 个字节的字符，并过滤了所有的 HTML 和 PHP 代码。

错误发生时返回 FALSE。

更新日志

版本 | 说明
5.0.0 | 参数 length 从 此开始可选。

Example #1 一行行读取一个 PHP 文件

<?php
$str = <<<EOD
<html><body>
 <p>Welcome! Today is the <?php echo(date('jS')); ?> of <?= date('F'); ?>.</p>
</body></html>
Text outside of the HTML block.
EOD;
file_put_contents('sample.php', $str);

$handle = @fopen("sample.php", "r");
if ($handle) {
    while (!feof($handle)) {
        $buffer = fgetss($handle, 4096);
        echo $buffer;
    }
    fclose($handle);
}
?>

以上例程的输出类似于：

 Welcome! Today is the  of .

Text outside of the HTML block.

注释

Note: 在读取在 Macintosh 电脑中或由其创建的文件时， 如果 PHP 不能正确的识别行结束符，启用运行时配置可选项 auto_detect_line_endings 也许可以解决此问题。

参见

  • fgets() - 从文件指针中读取一行
  • fopen() - 打开文件或者 URL
  • popen() - 打开进程文件指针
  • fsockopen() - 打开一个网络连接或者一个Unix套接字连接
  • strip_tags() - 从字符串中去除 HTML 和 PHP 标记

fgets
file_exists
Filesystem 函数


检查文件或目录是否存在

fgetss
file_get_contents
Filesystem 函数
PHP Manual

file_exists

(PHP 4, PHP 5, PHP 7)

file_exists — 检查文件或目录是否存在

说明

bool file_exists ( string $filename )

检查文件或目录是否存在。

参数

filename

文件或目录的路径。

在 Windows 中要用 //computername/share/filename 或者 \\computername\share\filename 来检查网络中的共享文件。

返回值

如果由 filename 指定的文件或目录存在则返回 TRUE，否则返回 FALSE。

Note:

This function will return FALSE for symlinks pointing to non-existing files.

Warning

如果因为安全模式的限制而导致不能访问文件的话，该函数会返回 FALSE。然而，可以使用 include 来包含，如果文件在 safe_mode_include_dir 所指定的目录里。

Note:

The check is done using the real UID/GID instead of the effective one.

Note: 因为 PHP 的整数类型是有符号整型而且很多平台使用 32 位整型，对 2GB 以上的文件，一些文件系统函数可能返回无法预期的结果 。

范例

Example #1 测试一个文件是否存在

<?php
$filename = '/path/to/foo.txt';

if (file_exists($filename)) {
    echo "The file $filename exists";
} else {
    echo "The file $filename does not exist";
}
?>

错误／异常

失败时抛出E_WARNING警告。

注释

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

Tip

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

参见

  • is_readable() - 判断给定文件名是否可读
  • is_writable() - 判断给定的文件名是否可写
  • is_file() - 判断给定文件名是否为一个正常的文件
  • file() - 把整个文件读入一个数组中

fgetss
file_get_contents
Filesystem 函数


将整个文件读入一个字符串

file_exists
file_put_contents
Filesystem 函数
PHP Manual

file_get_contents

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

file_get_contents — 将整个文件读入一个字符串

说明

string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )

和 file() 一样，只除了 file_get_contents() 把文件读入一个字符串。将在参数 offset 所指定的位置开始读取长度为 maxlen 的内容。如果失败，file_get_contents() 将返回 FALSE。

file_get_contents() 函数是用来将文件的内容读入到一个字符串中的首选方法。如果操作系统支持还会使用内存映射技术来增强性能。

Note:

如果要打开有特殊字符的 URL （比如说有空格），就需要使用 urlencode() 进行 URL 编码。

参数

filename

要读取的文件的名称。

use_include_path

Note:

As of PHP 5 the FILE_USE_INCLUDE_PATH can be used to trigger include path search.

context

A valid context resource created with stream_context_create(). 如果你不需要自定义 context，可以用 NULL 来忽略。

offset

The offset where the reading starts on the original stream.

Seeking (offset) is not supported with remote files. Attempting to seek on non-local files may work with small offsets, but this is unpredictable because it works on the buffered stream.

maxlen

Maximum length of data read. The default is to read until end of file is reached. Note that this parameter is applied to the stream processed by the filters.

返回值

The function returns the read data 或者在失败时返回 FALSE.

错误／异常

An E_WARNING level error is generated if either maxlength is less than zero, or if seeking to the specified offset in the stream fails.

范例

Example #1 Get and output the source of the homepage of a website

<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>

Example #2 Searching within the include_path

<?php
// <= PHP 5
$file = file_get_contents('./people.txt', true);
// > PHP 5
$file = file_get_contents('./people.txt', FILE_USE_INCLUDE_PATH);
?>

Example #3 Reading a section of a file

<?php
// Read 14 characters starting from the 21st character
$section = file_get_contents('./people.txt', NULL, NULL, 20, 14);
var_dump($section);
?>

以上例程的输出类似于：

string(14) "lle Bjori Ro"

Example #4 Using stream contexts

<?php
// Create a stream
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);

// Open the file using the HTTP headers set above
$file = file_get_contents('http://www.example.com/', false, $context);
?>

更新日志

版本 | 说明
5.1.0 | Added the offset and maxlen parameters.
5.0.0 | Added context support.

注释

Note: 此函数可安全用于二进制对象。

Tip

如已启用fopen 包装器，在此函数中， URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议，注意其用法及其可提供的预定义变量。

Warning

使用 SSL 时，Microsoft IIS 会违反协议不发送close_notify标记就关闭连接。PHP 会在到达数据尾端时报告"SSL: Fatal Protocol Error"。 要解决此问题，error_reporting 应设定为降低级别至不包含警告。 PHP 4.3.7 及更高版本可以在使用 https:// 包装器打开流时检测出有问题的 IIS 服务器软件 并抑制警告。在使用 fsockopen() 创建 ssl:// 套接字时, 开发者需检测并抑制此警告。

参见

  • file() - 把整个文件读入一个数组中
  • fgets() - 从文件指针中读取一行
  • fread() - 读取文件（可安全用于二进制文件）
  • readfile() - 输出文件
  • file_put_contents() - 将一个字符串写入文件
  • stream_get_contents() - 读取资源流到一个字符串
  • stream_context_create() - 创建资源流上下文
  • $http_response_header

file_exists
file_put_contents
Filesystem 函数


将一个字符串写入文件

file_get_contents
file
Filesystem 函数
PHP Manual

file_put_contents

(PHP 5, PHP 7)

file_put_contents — 将一个字符串写入文件

说明

int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )

和依次调用 fopen()，fwrite() 以及 fclose() 功能一样。

If filename does not exist, the file is created. Otherwise, the existing file is overwritten, unless the FILE_APPEND flag is set.

参数

filename

要被写入数据的文件名。

data

要写入的数据。类型可以是 string，array 或者是 stream 资源（如上面所说的那样）。

如果 data 指定为 stream 资源，这里 stream 中所保存的缓存数据将被写入到指定文件中，这种用法就相似于使用 stream_copy_to_stream() 函数。

参数 data 可以是数组（但不能为多维数组），这就相当于 file_put_contents($filename, join('', $array))。

flags

flags 的值可以是 以下 flag 使用 OR (|) 运算符进行的组合。

Available flags
Flag | 描述
FILE_USE_INCLUDE_PATH | 在 include 目录里搜索 filename。 更多信息可参见 include_path。
FILE_APPEND | 如果文件 filename 已经存在，追加数据而不是覆盖。
LOCK_EX | 在写入时获得一个独占锁。

context

一个 context 资源。

返回值

该函数将返回写入到文件内数据的字节数，失败时返回FALSE

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

范例

Example #1 Simple usage example

<?php
$file = 'people.txt';
// Open the file to get existing content
$current = file_get_contents($file);
// Append a new person to the file
$current .= "John Smith\n";
// Write the contents back to the file
file_put_contents($file, $current);
?>

Example #2 Using flags

<?php
$file = 'people.txt';
// The new person to add to the file
$person = "John Smith\n";
// Write the contents to the file,
// using the FILE_APPEND flag to append the content to the end of the file
// and the LOCK_EX flag to prevent anyone else writing to the file at the same time
file_put_contents($file, $person, FILE_APPEND | LOCK_EX);
?>

更新日志

版本 | 说明
5.0.0 | Added context support
5.1.0 | 添加了对 LOCK_EX 的支持和 data 参数处理 stream 资源的功能。

注释

Note: 此函数可安全用于二进制对象。

Tip

如已启用fopen 包装器，在此函数中， URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议，注意其用法及其可提供的预定义变量。

参见

  • fopen() - 打开文件或者 URL
  • fwrite() - 写入文件（可安全用于二进制文件）
  • file_get_contents() - 将整个文件读入一个字符串
  • stream_context_create() - 创建资源流上下文

file_get_contents
file
Filesystem 函数


把整个文件读入一个数组中

file_put_contents
fileatime
Filesystem 函数
PHP Manual

file

(PHP 4, PHP 5, PHP 7)

file — 把整个文件读入一个数组中

说明

array file ( string $filename [, int $flags = 0 [, resource $context ]] )

把整个文件读入一个数组中。

Note:

你可以通过 file_get_contents() 以字符串形式获取文件的内容。

参数

filename

文件的路径。

Tip

如已启用fopen 包装器，在此函数中， URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议，注意其用法及其可提供的预定义变量。

flags

可选参数 flags 可以是以下一个或多个常量：

FILE_USE_INCLUDE_PATH
在 include_path 中查找文件。
FILE_IGNORE_NEW_LINES
在数组每个元素的末尾不要添加换行符
FILE_SKIP_EMPTY_LINES
跳过空行

context

A context resource created with the stream_context_create() function.

Note: 在 PHP 5.0.0 中增加了对上下文（Context）的支持。有关上下文（Context）的说明参见 Streams。

返回值

Returns the file in an array. Each element of the array corresponds to a line in the file, with the newline still attached. Upon failure, file() returns FALSE.

Note:

Each line in the resulting array will include the line ending, unless FILE_IGNORE_NEW_LINES is used, so you still need to use rtrim() if you do not want the line ending present.

Note: 在读取在 Macintosh 电脑中或由其创建的文件时， 如果 PHP 不能正确的识别行结束符，启用运行时配置可选项 auto_detect_line_endings 也许可以解决此问题。

更新日志

版本 | 说明
5.0.0 | 增加了参数 context
5.0.0 | Prior to PHP 5.0.0 the flags parameter only covered include_path and was enabled with 1
4.3.0 | file() 开始是二进制安全的

范例

Example #1 file() 例子

<?php
// 将一个文件读入数组。本例中通过 HTTP 从 URL 中取得 HTML 源文件。

$lines = file('http://www.example.com/');

// 在数组中循环，显示 HTML 的源文件并加上行号。

foreach ($lines as $line_num => $line) {
    echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}

// 另一个例子将 web 页面读入字符串。参见 file_get_contents()。

$html = implode('', file('http://www.example.com/'));

// 从 PHP 5 开始可以使用可选标记参数
$trimmed = file('somefile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
?>

注释

Warning

使用 SSL 时，Microsoft IIS 会违反协议不发送close_notify标记就关闭连接。PHP 会在到达数据尾端时报告"SSL: Fatal Protocol Error"。 要解决此问题，error_reporting 应设定为降低级别至不包含警告。 PHP 4.3.7 及更高版本可以在使用 https:// 包装器打开流时检测出有问题的 IIS 服务器软件 并抑制警告。在使用 fsockopen() 创建 ssl:// 套接字时, 开发者需检测并抑制此警告。

参见

  • readfile() - 输出文件
  • fopen() - 打开文件或者 URL
  • fsockopen() - 打开一个网络连接或者一个Unix套接字连接
  • popen() - 打开进程文件指针
  • file_get_contents() - 将整个文件读入一个字符串
  • include - include
  • stream_context_create() - 创建资源流上下文

file_put_contents
fileatime
Filesystem 函数


取得文件的上次访问时间

file
filectime
Filesystem 函数
PHP Manual

fileatime

(PHP 4, PHP 5, PHP 7)

fileatime — 取得文件的上次访问时间

说明

int fileatime ( string $filename )

取得文件的上次访问时间。

参数

filename

文件的路径。

返回值

返回文件上次被访问的时间， 或者在失败时返回 FALSE。时间以 Unix 时间戳的方式返回。

范例

Example #1 fileatime() 例子

<?php

// 输出类似：somefile.txt was last accessed: December 29 2002 22:16:23.

$filename = 'somefile.txt';
if (file_exists($filename)) {
    echo "$filename was last accessed: " . date("F d Y H:i:s.", fileatime($filename));
}

?>

错误／异常

失败时抛出E_WARNING警告。

注释

Note:

注意：一个文件的 atime 应该在不论何时读取了此文件中的数据块时被更改。当一个应用程序定期访问大量文件或目录时很影响性能。

有些 Unix 文件系统可以在加载时关闭 atime 的更新以提高这类程序的性能。USENET 新闻组假脱机是一个常见的例子。在这种文件系统下本函数没有用处。

Note:

注意：不同文件系统对时间的判断方法可能是不相同的。

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

Tip

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

参见

  • filemtime() - 取得文件修改时间
  • fileinode() - 取得文件的 inode
  • date() - 格式化一个本地时间／日期

file
filectime
Filesystem 函数


取得文件的 inode 修改时间

fileatime
filegroup
Filesystem 函数
PHP Manual

filectime

(PHP 4, PHP 5, PHP 7)

filectime — 取得文件的 inode 修改时间

说明

int filectime ( string $filename )

取得文件的 inode 修改时间。

参数

filename

文件的路径。

返回值

返回文件上次 inode 被修改的时间， 或者在失败时返回 FALSE。 时间以 Unix 时间戳的方式返回。

范例

Example #1 filectime() 例子

<?php

// 输出类似：  somefile.txt was last changed: December 29 2002 22:16:23.

$filename = 'somefile.txt';
if (file_exists($filename)) {
    echo "$filename was last changed: " . date("F d Y H:i:s.", filectime($filename));
}

?>

错误／异常

失败时抛出E_WARNING警告。

注释

Note:

注意：在大多数 Unix 文件系统中，当一个文件的 inode 数据被改变时则该文件被认为是修改了。也就是说，当文件的权限，所有者，所有组或其它 inode 中的元数据被更新时。参见 filemtime()（这才是你想用于在 Web 页面中建立"最后更新时间"脚注的函数）和 fileatime()。

Note:

注意某些 Unix 说明文本中把 ctime 说成是该文件建立的时间，这是错的。在大多数 Unix 文件系统中没有 Unix 文件的建立时间。

Note:

注意：不同文件系统对时间的判断方法可能是不相同的。

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

Tip

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

参见

  • filemtime() - 取得文件修改时间

fileatime
filegroup
Filesystem 函数


取得文件的组

filectime
fileinode
Filesystem 函数
PHP Manual

filegroup

(PHP 4, PHP 5, PHP 7)

filegroup — 取得文件的组

说明

int filegroup ( string $filename )

取得该文件所属组的 ID。组 ID 以数字格式返回，用 posix_getgrgid() 来将其解析为组名。

参数

filename

文件的路径。

返回值

返回该文件所属组的 ID。或在错误时返回 FALSE。 组 ID 以数字格式返回，用 posix_getgrgid() 来将其解析为组名。如果出错则返回 FALSE。

范例

Example #1 查找文件所在的组

<?php
$filename = 'index.php';
print_r(posix_getgrgid(filegroup($filename)));
?>

错误／异常

如果失败返回 FALSE 以及一个 E_WARNING 级别的错误。

注释

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

Tip

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

参见

  • fileowner() - 取得文件的所有者
  • posix_getgrgid() - Return info about a group by group id
  • safe_mode_gid

filectime
fileinode
Filesystem 函数


取得文件的 inode

filegroup
filemtime
Filesystem 函数
PHP Manual

fileinode

(PHP 4, PHP 5, PHP 7)

fileinode — 取得文件的 inode

说明

int fileinode ( string $filename )

取得文件的 inode。

参数

filename

文件的路径。

返回值

返回文件的 inode 节点号， 或者在失败时返回 FALSE。

范例

Example #1 将某个文件和当前文件的 inode 进行对比

<?php
$filename = 'index.php';
if (getmyinode() == fileinode($filename)) {
    echo 'You are checking the current file.';
}
?>

错误／异常

失败时抛出E_WARNING警告。

注释

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

Tip

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

参见

  • getmyinode() - 获取当前脚本的索引节点（inode）
  • stat() - 给出文件的信息

filegroup
filemtime
Filesystem 函数


取得文件修改时间

fileinode
fileowner
Filesystem 函数
PHP Manual

filemtime

(PHP 4, PHP 5, PHP 7)

filemtime — 取得文件修改时间

说明

int filemtime ( string $filename )

本函数返回文件中的数据块上次被写入的时间，也就是说，文件的内容上次被修改的时间。

参数

filename

文件的路径。

返回值

返回文件上次被修改的时间， 或者在失败时返回 FALSE。时间以 Unix 时间戳的方式返回，可用于 date()。

范例

Example #1 filemtime() 例子

<?php
// outputs e.g.  somefile.txt was last modified: December 29 2002 22:16:23.

$filename = 'somefile.txt';
if (file_exists($filename)) {
    echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
}
?>

错误／异常

失败时抛出E_WARNING警告。

注释

Note:

注意：不同文件系统对时间的判断方法可能是不相同的。

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

Tip

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

参见

  • filectime() - 取得文件的 inode 修改时间
  • stat() - 给出文件的信息
  • touch() - 设定文件的访问和修改时间
  • getlastmod() - 获取页面最后修改的时间

fileinode
fileowner
Filesystem 函数


取得文件的所有者

filemtime
fileperms
Filesystem 函数
PHP Manual

fileowner

(PHP 4, PHP 5, PHP 7)

fileowner — 取得文件的所有者

说明

int fileowner ( string $filename )

取得文件的所有者。

参数

filename

文件的路径。

返回值

返回文件所有的用户 ID，如果出错则返回 FALSE。用户 ID 以数字格式返回，用 posix_getpwuid() 来将其解析为用户名。

范例

Example #1 找到文件的所有者

<?php
$filename = 'index.php';
print_r(posix_getpwuid(fileowner($filename)));
?>

错误／异常

失败时抛出E_WARNING警告。

注释

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

Tip

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

参见

  • filegroup() - 取得文件的组
  • stat() - 给出文件的信息
  • posix_getpwuid() - Return info about a user by user id

filemtime
fileperms
Filesystem 函数


取得文件的权限

fileowner
filesize
Filesystem 函数
PHP Manual

fileperms

(PHP 4, PHP 5, PHP 7)

fileperms — 取得文件的权限

说明

int fileperms ( string $filename )

取得文件的权限。

参数

filename

文件的路径。

返回值

以数字模式返回文件的访问权限。 Returns the file's permissions as a numeric mode. Lower bits of this mode are the same as the permissions expected by chmod(), however on most platforms the return value will also include information on the type of file given as filename. The examples below demonstrate how to test the return value for specific permissions and file types on POSIX systems, including Linux and Mac OS X.

For local files, the specific return value is that of the st_mode member of the structure returned by the C library's stat() function. Exactly which bits are set can vary from platform to platform, and looking up your specific platform's documentation is recommended if parsing the non-permission bits of the return value is required.

范例

Example #1 以八进制的形式显示文件的权限

<?php
echo substr(sprintf('%o', fileperms('/tmp')), -4);
echo substr(sprintf('%o', fileperms('/etc/passwd')), -4);
?>

以上例程会输出：

1777
0644

Example #2 输出全部权限

<?php
$perms = fileperms('/etc/passwd');

if (($perms & 0xC000) == 0xC000) {
    // Socket
    $info = 's';
} elseif (($perms & 0xA000) == 0xA000) {
    // Symbolic Link
    $info = 'l';
} elseif (($perms & 0x8000) == 0x8000) {
    // Regular
    $info = '-';
} elseif (($perms & 0x6000) == 0x6000) {
    // Block special
    $info = 'b';
} elseif (($perms & 0x4000) == 0x4000) {
    // Directory
    $info = 'd';
} elseif (($perms & 0x2000) == 0x2000) {
    // Character special
    $info = 'c';
} elseif (($perms & 0x1000) == 0x1000) {
    // FIFO pipe
    $info = 'p';
} else {
    // Unknown
    $info = 'u';
}

// Owner
$info .= (($perms & 0x0100) ? 'r' : '-');
$info .= (($perms & 0x0080) ? 'w' : '-');
$info .= (($perms & 0x0040) ?
            (($perms & 0x0800) ? 's' : 'x' ) :
            (($perms & 0x0800) ? 'S' : '-'));

// Group
$info .= (($perms & 0x0020) ? 'r' : '-');
$info .= (($perms & 0x0010) ? 'w' : '-');
$info .= (($perms & 0x0008) ?
            (($perms & 0x0400) ? 's' : 'x' ) :
            (($perms & 0x0400) ? 'S' : '-'));

// World
$info .= (($perms & 0x0004) ? 'r' : '-');
$info .= (($perms & 0x0002) ? 'w' : '-');
$info .= (($perms & 0x0001) ?
            (($perms & 0x0200) ? 't' : 'x' ) :
            (($perms & 0x0200) ? 'T' : '-'));

echo $info;
?>

以上例程会输出：

-rw-r--r--

错误／异常

失败时抛出E_WARNING警告。

注释

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

Tip

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

参见

  • chmod() - 改变文件模式
  • is_readable() - 判断给定文件名是否可读
  • stat() - 给出文件的信息

fileowner
filesize
Filesystem 函数


取得文件大小

fileperms
filetype
Filesystem 函数
PHP Manual

filesize

(PHP 4, PHP 5, PHP 7)

filesize — 取得文件大小

说明

int filesize ( string $filename )

取得指定文件的大小。

参数

filename

文件的路径。

返回值

返回文件大小的字节数，如果出错返回 FALSE 并生成一条 E_WARNING 级的错误。

Note: 因为 PHP 的整数类型是有符号整型而且很多平台使用 32 位整型，对 2GB 以上的文件，一些文件系统函数可能返回无法预期的结果 。

范例

Example #1 filesize() 例子

<?php

// 输出类似：somefile.txt: 1024 bytes

$filename = 'somefile.txt';
echo $filename . ': ' . filesize($filename) . ' bytes';

?>

错误／异常

失败时抛出E_WARNING警告。

注释

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

Tip

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

参见

  • file_exists() - 检查文件或目录是否存在

fileperms
filetype
Filesystem 函数


取得文件类型

filesize
flock
Filesystem 函数
PHP Manual

filetype

(PHP 4, PHP 5, PHP 7)

filetype — 取得文件类型

说明

string filetype ( string $filename )

返回文件的类型。

参数

filename

文件的路径。

返回值

返回文件的类型。 可能的值有 fifo，char，dir，block，link，file 和 unknown。

如果出错则返回 FALSE。如果 stat 调用失败或者文件类型未知的话 filetype() 还会产生一个 E_NOTICE 消息。

范例

Example #1 filetype() 例子

<?php

echo filetype('/etc/passwd');  // file
echo filetype('/etc/');        // dir

?>

错误／异常

失败时抛出E_WARNING警告。

注释

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

Tip

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

参见

  • is_dir() - 判断给定文件名是否是一个目录
  • is_file() - 判断给定文件名是否为一个正常的文件
  • is_link() - 判断给定文件名是否为一个符号连接
  • file_exists() - 检查文件或目录是否存在
  • mime_content_type() - 检测文件的 MIME 类型（已废弃）
  • pathinfo() - 返回文件路径的信息
  • stat() - 给出文件的信息

filesize
flock
Filesystem 函数


轻便的咨询文件锁定

filetype
fnmatch
Filesystem 函数
PHP Manual

flock

(PHP 4, PHP 5, PHP 7)

flock — 轻便的咨询文件锁定

说明

bool flock ( resource $handle , int $operation [, int &$wouldblock ] )

flock() 允许执行一个简单的可以在任何平台中使用的读取/写入模型（包括大部分的 Unix 派生版和甚至是 Windows）。

在 PHP 5.3.2版本之前，锁也会被 fclose() 释放（在脚本结束后会自动调用）。

PHP 支持以咨询方式（也就是说所有访问程序必须使用同一方式锁定, 否则它不会工作）锁定全部文件的一种轻便方法。 默认情况下，这个函数会阻塞到获取锁；这可以通过下面文档中 LOCK_NB 选项来控制（在非 Windows 平台上）。

参数

handle

文件系统指针，是典型地由 fopen() 创建的 resource(资源)。

operation

operation 可以是以下值之一：

  • LOCK_SH取得共享锁定（读取的程序）。
  • LOCK_EX 取得独占锁定（写入的程序。
  • LOCK_UN 释放锁定（无论共享或独占）。

如果不希望 flock() 在锁定时堵塞，则是 LOCK_NB（Windows 上还不支持）。

wouldblock

如果锁定会堵塞的话（EWOULDBLOCK 错误码情况下），可选的第三个参数会被设置为 TRUE。（Windows 上不支持）

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.3.2 | 在文件资源句柄关闭时不再自动解锁。现在要解锁必须手动进行。
4.0.1 | 增加了常量 LOCK_XXX。 之前你必须使用 1 代表 LOCK_SH，2 代表 LOCK_EX，3 代表LOCK_UN，4 代表 LOCK_NB。

范例

Example #1 flock() 例子

<?php

$fp = fopen("/tmp/lock.txt", "r+");

if (flock($fp, LOCK_EX)) {  // 进行排它型锁定
    ftruncate($fp, 0);      // truncate file
    fwrite($fp, "Write something here\n");
    fflush($fp);            // flush output before releasing the lock
    flock($fp, LOCK_UN);    // 释放锁定
} else {
    echo "Couldn't get the lock!";
}

fclose($fp);

?>

Example #2 flock() 使用 LOCK_NB 选项

<?php
$fp = fopen('/tmp/lock.txt', 'r+');

/* Activate the LOCK_NB option on an LOCK_EX operation */
if(!flock($fp, LOCK_EX | LOCK_NB)) {
    echo 'Unable to obtain lock';
    exit(-1);
}

/* ... */

fclose($fp);
?>

注释

Note:

flock() uses mandatory locking instead of advisory locking on Windows. Mandatory locking is also supported on Linux and System V based operating systems via the usual mechanism supported by the fcntl() system call: that is, if the file in question has the setgid permission bit set and the group execution bit cleared. On Linux, the file system will also need to be mounted with the mand option for this to work.

Note:

由于 flock() 需要一个文件指针， 因此可能不得不用一个特殊的锁定文件来保护打算通过写模式打开的文件的访问（在 fopen() 函数中加入 "w" 或 "w+"）。

Note:

May only be used on file pointers returned by fopen() for local files, or file pointers pointing to userspace streams that implement the streamWrapper::stream_lock() method.

Warning

Assigning another value to handle argument in subsequent code will release the lock.

Warning

在部分操作系统中 flock() 以进程级实现。当用一个多线程服务器 API（比如 ISAPI）时，可能不可以依靠 flock() 来保护文件，因为运行于同一服务器实例中其它并行线程的 PHP 脚本可以对该文件进行处理。

flock() 不支持旧的文件系统，如 FAT 以及它的派生系统。因此，此环境下总是返回 FALSE（尤其是对 Windows 98 用户来说）。

filetype
fnmatch
Filesystem 函数


用模式匹配文件名

flock
fopen
Filesystem 函数
PHP Manual

fnmatch

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

fnmatch — 用模式匹配文件名

说明

bool fnmatch ( string $pattern , string $string [, int $flags = 0 ] )

fnmatch() 检查传入的 string 是否匹配给出的 shell 统配符 pattern。

参数

pattern

shell 统配符。

string

要检查的字符串。 此函数对于文件名尤其有用，但也可以用于普通的字符串。

普通用户可能习惯于 shell 模式或者至少其中最简单的形式 '?' 和 '*' 通配符，因此使用 fnmatch() 来代替 preg_match() 来进行前端搜索表达式输入对于非程序员用户更加方便。

flags

The value of flags can be any combination of the following flags, joined with the binary OR (|) operator.

A list of possible flags for fnmatch()
Flag | Description
FNM_NOESCAPE | Disable backslash escaping.
FNM_PATHNAME | Slash in string only matches slash in the given pattern.
FNM_PERIOD | Leading period in string must be exactly matched by period in the given pattern.
FNM_CASEFOLD | Caseless match. Part of the GNU extension.

返回值

匹配则返回 TRUE，否则返回 FALSE。

更新日志

版本 | 说明
5.3.0 | 此函数开始在 Windows 平台上生效。

范例

Example #1 用 shell 中的通配符模式匹配来检查颜色名称

<?php
if (fnmatch("*gr[ae]y", $color)) {
  echo "some form of gray ...";
}
?>

注释

Warning

目前该函数无法在 Windows 或其它非 POSIX 兼容的系统上使用。

参见

  • glob() - 寻找与模式匹配的文件路径
  • preg_match() - 执行一个正则表达式匹配
  • sscanf() - 根据指定格式解析输入的字符
  • printf() - 输出格式化字符串
  • sprintf() - Return a formatted string

flock
fopen
Filesystem 函数


打开文件或者 URL

fnmatch
fpassthru
Filesystem 函数
PHP Manual

fopen

(PHP 4, PHP 5, PHP 7)

fopen — 打开文件或者 URL

说明

resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] )

fopen() 将 filename 指定的名字资源绑定到一个流上。

参数

filename

如果 filename 是 "scheme://..." 的格式，则被当成一个 URL，PHP 将搜索协议处理器（也被称为封装协议）来处理此模式。如果该协议尚未注册封装协议，PHP 将发出一条消息来帮助检查脚本中潜在的问题并将 filename 当成一个普通的文件名继续执行下去。

如果 PHP 认为 filename 指定的是一个本地文件，将尝试在该文件上打开一个流。该文件必须是 PHP 可以访问的，因此需要确认文件访问权限允许该访问。如果激活了安全模式或者 open_basedir 则会应用进一步的限制。

如果 PHP 认为 filename 指定的是一个已注册的协议，而该协议被注册为一个网络 URL，PHP 将检查并确认 allow_url_fopen 已被激活。如果关闭了，PHP 将发出一个警告，而 fopen 的调用则失败。

Note:

所支持的协议列表见支持的协议和封装协议。某些协议（也被称为 wrappers）支持 context 和／或 php.ini 选项。参见相应的页面哪些选项可以被设定（例如 php.ini 中用于 http wrapper 的 user_agent 值）。

On the Windows platform, be careful to escape any backslashes used in the path to the file, or use forward slashes.

<?php
$handle = fopen("c:\\folder\\resource.txt", "r");
?>

mode

mode 参数指定了所要求到该流的访问类型。可以是以下：

fopen() 中 mode 的可能值列表
mode | 说明
'r' | 只读方式打开，将文件指针指向文件头。
'r+' | 读写方式打开，将文件指针指向文件头。
'w' | 写入方式打开，将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'w+' | 读写方式打开，将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'a' | 写入方式打开，将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'a+' | 读写方式打开，将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'x' | 创建并以写入方式打开，将文件指针指向文件头。如果文件已存在，则 fopen() 调用失败并返回 FALSE，并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。
'x+' | 创建并以读写方式打开，其他的行为和 'x' 一样。
'c' | Open the file for writing only. If the file does not exist, it is created. If it exists, it is neither truncated (as opposed to 'w'), nor the call to this function fails (as is the case with 'x'). The file pointer is positioned on the beginning of the file. This may be useful if it's desired to get an advisory lock (see flock()) before attempting to modify the file, as using 'w' could truncate the file before the lock was obtained (if truncation is desired, ftruncate() can be used after the lock is requested).
'c+' | Open the file for reading and writing; otherwise it has the same behavior as 'c'.

Note:

不同的操作系统家族具有不同的行结束习惯。当写入一个文本文件并想插入一个新行时，需要使用符合操作系统的行结束符号。基于 Unix 的系统使用 \n 作为行结束字符，基于 Windows 的系统使用 \r\n 作为行结束字符，基于 Macintosh 的系统使用 \r 作为行结束字符。

如果写入文件时使用了错误的行结束符号，则其它应用程序打开这些文件时可能会表现得很怪异。

Windows 下提供了一个文本转换标记（'t'）可以透明地将 \n 转换为 \r\n。与此对应还可以使用 'b' 来强制使用二进制模式，这样就不会转换数据。要使用这些标记，要么用 'b' 或者用 't' 作为 mode 参数的最后一个字符。

默认的转换模式依赖于 SAPI 和所使用的 PHP 版本，因此为了便于移植鼓励总是指定恰当的标记。如果是操作纯文本文件并在脚本中使用了 \n 作为行结束符，但还要期望这些文件可以被其它应用程序例如 Notepad 读取，则在 mode 中使用 't'。在所有其它情况下使用 'b'。

在操作二进制文件时如果没有指定 'b' 标记，可能会碰到一些奇怪的问题，包括坏掉的图片文件以及关于 \r\n 字符的奇怪问题。

Note:

为移植性考虑，强烈建议在用 fopen() 打开文件时总是使用 'b' 标记。

Note:

再一次，为移植性考虑，强烈建议你重写那些依赖于 't' 模式的代码使其使用正确的行结束符并改成 'b' 模式。

use_include_path

如果也需要在 include_path 中搜寻文件的话，可以将可选的第三个参数 use_include_path 设为 '1' 或 TRUE。

context

Note: 在 PHP 5.0.0 中增加了对上下文（Context）的支持。有关上下文（Context）的说明参见 Streams。

返回值

成功时返回文件指针资源，如果打开失败，本函数返回 FALSE。

错误／异常

如果打开失败，会产生一个 E_WARNING 错误。可以通过 @ 来屏蔽错误。

更新日志

版本 | 说明
4.3.2 | 自 PHP 4.3.2 起，对所有区别二进制和文本模式的平台默认模式都被设为二进制模式。如果在升级后脚本碰到问题，尝试暂时使用 't' 标记，直到所有的脚本都照以下所说的改为更具移植性以后。
4.3.2 | 增加了选项 'x' 和 'x+'
5.2.6 | 增加了选项 'c' 和 'c+'

范例

Example #1 fopen() 例子

<?php
$handle = fopen("/home/rasmus/file.txt", "r");
$handle = fopen("/home/rasmus/file.gif", "wb");
$handle = fopen("http://www.example.com/", "r");
$handle = fopen("ftp://user:password@example.com/somefile.txt", "w");
?>

注释

Warning

使用 SSL 时，Microsoft IIS 会违反协议不发送close_notify标记就关闭连接。PHP 会在到达数据尾端时报告"SSL: Fatal Protocol Error"。 要解决此问题，error_reporting 应设定为降低级别至不包含警告。 PHP 4.3.7 及更高版本可以在使用 https:// 包装器打开流时检测出有问题的 IIS 服务器软件 并抑制警告。在使用 fsockopen() 创建 ssl:// 套接字时, 开发者需检测并抑制此警告。

Note: 当启用 安全模式时， PHP 会在执行脚本时检查被脚本操作的目录是否与被执行的脚本有相同的 UID（所有者）。

Note:

如果在用服务器模块版本的 PHP 时在打开和写入文件上遇到问题，记住要确保所使用的文件和目录是服务器进程所能够访问的。

Note:

This function may also succeed when filename is a directory. If you are unsure whether filename is a file or a directory, you may need to use the is_dir() function before calling fopen().

参见

  • 支持的协议和封装协议
  • fclose() - 关闭一个已打开的文件指针
  • fgets() - 从文件指针中读取一行
  • fread() - 读取文件（可安全用于二进制文件）
  • fwrite() - 写入文件（可安全用于二进制文件）
  • fsockopen() - 打开一个网络连接或者一个Unix套接字连接
  • file() - 把整个文件读入一个数组中
  • file_exists() - 检查文件或目录是否存在
  • is_readable() - 判断给定文件名是否可读
  • stream_set_timeout() - Set timeout period on a stream
  • popen() - 打开进程文件指针
  • stream_context_create() - 创建资源流上下文
  • umask() - 改变当前的 umask
  • SplFileObject

fnmatch
fpassthru
Filesystem 函数


输出文件指针处的所有剩余数据

fopen
fputcsv
Filesystem 函数
PHP Manual

fpassthru

(PHP 4, PHP 5, PHP 7)

fpassthru — 输出文件指针处的所有剩余数据

说明

int fpassthru ( resource $handle )

将给定的文件指针从当前的位置读取到 EOF 并把结果写到输出缓冲区。

如果已经向文件写入数据，就必须调用 rewind() 来将文件指针指向文件头。

如果既不修改文件也不在特定位置检索，只想将文件的内容下载到输出缓冲区，应该使用 readfile()，这样可以省去 fopen() 调用。

参数

handle

文件指针必须是有效的，必须指向由 fopen() 或 fsockopen() 成功打开的文件(并还未由 fclose() 关闭)。

返回值

如果发生错误， fpassthru() 返回 FALSE。否则 fpassthru() 返回从 handle 读取并传递到输出的字符数目。

范例

Example #1 对二进制文件使用 fpassthru()

<?php

// 以二进制格式打开文件
$name = './img/ok.png';
$fp = fopen($name, 'rb');

// 发送合适的报头
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));

// 发送图片并终止脚本
fpassthru($fp);
exit;

?>

注释

Note:

当在 Windows 系统中将 fpassthru() 用于二进制文件，要确保在用 fopen() 打开文件时在 mode 中附加了 b 来将文件以二进制方式打开。

鼓励在处理二进制文件时使用 b 标志，即使系统并不需要，这样可以使脚本的移植性更好。

参见

  • readfile() - 输出文件
  • fopen() - 打开文件或者 URL
  • popen() - 打开进程文件指针
  • fsockopen() - 打开一个网络连接或者一个Unix套接字连接

fopen
fputcsv
Filesystem 函数


将行格式化为 CSV 并写入文件指针

fpassthru
fputs
Filesystem 函数
PHP Manual

fputcsv

(PHP 5 >= 5.1.0, PHP 7)

fputcsv — 将行格式化为 CSV 并写入文件指针

说明

int fputcsv ( resource $handle , array $fields [, string $delimiter = ',' [, string $enclosure = '"' ]] )

fputcsv() 将一行（用 fields 数组传递）格式化为 CSV 格式并写入由 handle 指定的文件。

参数

handle

文件指针必须是有效的，必须指向由 fopen() 或 fsockopen() 成功打开的文件(并还未由 fclose() 关闭)。

fields

值的一个数组。

delimiter

可选的 delimiter 参数设定字段分界符（只允许一个字符）。

enclosure

可选的 enclosure 参数设定字段字段环绕符（只允许一个字符）。

返回值

返回写入字符串的长度， 或者在失败时返回 FALSE。

范例

Example #1 fputcsv() 例子

<?php

$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('123', '456', '789'),
    array('"aaa"', '"bbb"')
);

$fp = fopen('file.csv', 'w');

foreach ($list as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);
?>

以上例子会写入以下的file.csv：

aaa,bbb,ccc,dddd
123,456,789
"""aaa""","""bbb"""

注释

Note: 在读取在 Macintosh 电脑中或由其创建的文件时， 如果 PHP 不能正确的识别行结束符，启用运行时配置可选项 auto_detect_line_endings 也许可以解决此问题。

参见

  • fgetcsv() - 从文件指针中读入一行并解析 CSV 字段

fpassthru
fputs
Filesystem 函数


fwrite 的别名

fputcsv
fread
Filesystem 函数
PHP Manual

fputs

(PHP 4, PHP 5, PHP 7)

fputs — fwrite() 的别名

说明

此函数是该函数的别名：fwrite()。

fputcsv
fread
Filesystem 函数


读取文件（可安全用于二进制文件）

fputs
fscanf
Filesystem 函数
PHP Manual

fread

(PHP 4, PHP 5, PHP 7)

fread — 读取文件（可安全用于二进制文件）

说明

string fread ( resource $handle , int $length )

fread() 从文件指针 handle 读取最多 length 个字节。 该函数在遇上以下几种情况时停止读取文件：

  • 读取了 length 个字节
  • 到达了文件末尾（EOF）
  • a packet becomes available or the socket timeout occurs (for network streams)
  • if the stream is read buffered and it does not represent a plain file, at most one read of up to a number of bytes equal to the chunk size (usually 8192) is made; depending on the previously buffered data, the size of the returned data may be larger than the chunk size.

参数

handle

文件系统指针，是典型地由 fopen() 创建的 resource(资源)。

length

最多读取 length 个字节。

返回值

返回所读取的字符串， 或者在失败时返回 FALSE。

范例

Example #1 一个简单的 fread() 例子

<?php
// get contents of a file into a string
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>

Example #2 Binary fread() example

Warning

在区分二进制文件和文本文件的系统上（如 Windows）打开文件时，fopen() 函数的 mode 参数要加上 'b'。

<?php
$filename = "c:\\files\\somepic.gif";
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>

Example #3 Remote fread() examples

Warning

当从任何不是普通本地文件读取时，例如在读取从远程文件或 popen() 以及 fsockopen() 返回的流时，读取会在一个包可用之后停止。这意味着应该如下例所示将数据收集起来合并成大块。

<?php
// 对 PHP 5 及更高版本
$handle = fopen("http://www.example.com/", "rb");
$contents = stream_get_contents($handle);
fclose($handle);
?>
<?php
$handle = fopen("http://www.example.com/", "rb");
$contents = '';
while (!feof($handle)) {
  $contents .= fread($handle, 8192);
}
fclose($handle);
?>

注释

Note:

如果只是想将一个文件的内容读入到一个字符串中，用 file_get_contents()，它的性能比上面的代码好得多。

Note:

Note that fread() reads from the current position of the file pointer. Use ftell() to find the current position of the pointer and rewind() to rewind the pointer position.

参见

  • fwrite() - 写入文件（可安全用于二进制文件）
  • fopen() - 打开文件或者 URL
  • fsockopen() - 打开一个网络连接或者一个Unix套接字连接
  • popen() - 打开进程文件指针
  • fgets() - 从文件指针中读取一行
  • fgetss() - 从文件指针中读取一行并过滤掉 HTML 标记
  • fscanf() - 从文件中格式化输入
  • file() - 把整个文件读入一个数组中
  • fpassthru() - 输出文件指针处的所有剩余数据
  • ftell() - 返回文件指针读/写的位置
  • rewind() - 倒回文件指针的位置

fputs
fscanf
Filesystem 函数


从文件中格式化输入

fread
fseek
Filesystem 函数
PHP Manual

fscanf

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

fscanf — 从文件中格式化输入

说明

mixed fscanf ( resource $handle , string $format [, mixed &$... ] )

fscanf() 函数和 sscanf() 相似，但是它从与 handle 关联的文件中接受输入并根据指定的 format（定义于 sprintf() 的文档中）来解释输入。

格式字符串中的任何空白会与输入流中的任何空白匹配。这意味着甚至格式字符串中的制表符 \t 也会与输入流中的一个空格字符匹配。

每次调用 fscanf() 都会从文件中读取一行。

参数

handle

文件系统指针，是典型地由 fopen() 创建的 resource(资源)。

format

参数格式是 sprintf() 文档中所描述的格式。

...

The optional assigned values.

返回值

如果只给此函数传递了两个参数，解析后的值会被作为数组返回。否则，如果提供了可选参数，此函数将返回被赋值的数目。 可选参数必须用引用传递。

更新日志

版本 | 说明
4.3.0 | 在 PHP 4.3.0 之前，从文件中读入的最大字符数是 512（或者第一个 \n，看先碰到哪种情况）。从 PHP 4.3.0 起可以读取任意长的行。

范例

Example #1 fscanf() 例子

<?php
$handle = fopen("users.txt", "r");
while ($userinfo = fscanf($handle, "%s\t%s\t%s\n")) {
    list ($name, $profession, $countrycode) = $userinfo;
    //... do something with the values
}
fclose($handle);
?>

Example #2 users.txt 的内容

javier  argonaut        pe
hiroshi sculptor        jp
robert  slacker us
luigi   florist it

参见

  • fread() - 读取文件（可安全用于二进制文件）
  • fgets() - 从文件指针中读取一行
  • fgetss() - 从文件指针中读取一行并过滤掉 HTML 标记
  • sscanf() - 根据指定格式解析输入的字符
  • printf() - 输出格式化字符串
  • sprintf() - Return a formatted string

fread
fseek
Filesystem 函数


在文件指针中定位

fscanf
fstat
Filesystem 函数
PHP Manual

fseek

(PHP 4, PHP 5, PHP 7)

fseek — 在文件指针中定位

说明

int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] )

在与 handle 关联的文件中设定文件指针位置。 新位置从文件头开始以字节数度量，是以 whence 指定的位置加上 offset。

In general, it is allowed to seek past the end-of-file; if data is then written, reads in any unwritten region between the end-of-file and the sought position will yield bytes with value 0. However, certain streams may not support this behavior, especially when they have an underlying fixed size storage.

参数

handle

文件系统指针，是典型地由 fopen() 创建的 resource(资源)。

offset

偏移量。

要移动到文件尾之前的位置，需要给 offset 传递一个负值，并设置 whence 为 SEEK_END。

whence

whence values are:

  • SEEK_SET - 设定位置等于 offset 字节。
  • SEEK_CUR - 设定位置为当前位置加上 offset。
  • SEEK_END - 设定位置为文件尾加上 offset。

返回值

成功则返回 0；否则返回 -1。注意移动到 EOF 之后的位置不算错误。

范例

Example #1 fseek() 例子

<?php

$fp = fopen('somefile.txt', 'r');

// read some data
$data = fgets($fp, 4096);

// move back to the beginning of the file
// same as rewind($fp);
fseek($fp, 0);

?>

注释

Note:

如果使用附加模试（a 或 a+），任何写入文件数据都会被附加上去，而文件的位置将会被忽略，调用 fseek() 的结果尚未定义。

Note:

Not all streams support seeking. For those that do not support seeking, forward seeking from the current position is accomplished by reading and discarding data; other forms of seeking will fail.

参见

  • ftell() - 返回文件指针读/写的位置
  • rewind() - 倒回文件指针的位置

fscanf
fstat
Filesystem 函数


通过已打开的文件指针取得文件信息

fseek
ftell
Filesystem 函数
PHP Manual

fstat

(PHP 4, PHP 5, PHP 7)

fstat — 通过已打开的文件指针取得文件信息

说明

array fstat ( resource $handle )

获取由文件指针 handle 所打开文件的统计信息。本函数和 stat() 函数相似，除了它是作用于已打开的文件指针而不是文件名。

参数

handle

文件系统指针，是典型地由 fopen() 创建的 resource(资源)。

返回值

返回一个数组具有该文件的统计信息，该数组的格式详细说明于手册中 stat() 页面里。

范例

Example #1 fstat() 例子

<?php

// 打开文件
$fp = fopen("/etc/passwd", "r");

// 取得统计信息
$fstat = fstat($fp);

// 关闭文件
fclose($fp);

// 只显示关联数组部分
print_r(array_slice($fstat, 13));
?>

以上例程的输出类似于：

Array
(
    [dev] => 771
    [ino] => 488704
    [mode] => 33188
    [nlink] => 1
    [uid] => 0
    [gid] => 0
    [rdev] => 0
    [size] => 1114
    [atime] => 1061067181
    [mtime] => 1056136526
    [ctime] => 1056136526
    [blksize] => 4096
    [blocks] => 8
)

注释

Note: 此函数不能作用于远程文件，被检查的文件必须是可通过服务器的文件系统访问的。

fseek
ftell
Filesystem 函数


返回文件指针读/写的位置

fstat
ftruncate
Filesystem 函数
PHP Manual

ftell

(PHP 4, PHP 5, PHP 7)

ftell — 返回文件指针读/写的位置

说明

int ftell ( resource $handle )

返回由 handle 指定的文件指针的位置，也就是文件流中的偏移量。

参数

handle

文件指针必须是有效的，且必须指向一个通过 fopen() 或 popen() 成功打开的文件。在附加模式（加参数 "a" 打开文件）中 ftell() 会返回未定义错误。

返回值

Returns the position of the file pointer referenced by handle as an integer; i.e., its offset into the file stream.

如果出错，返回 FALSE。

范例

Example #1 ftell() 例子

<?php

// opens a file and read some data
$fp = fopen("/etc/passwd", "r");
$data = fgets($fp, 12);

// where are we ?
echo ftell($fp); // 11

fclose($fp);

?>

参见

  • fopen() - 打开文件或者 URL
  • popen() - 打开进程文件指针
  • fseek() - 在文件指针中定位
  • rewind() - 倒回文件指针的位置

fstat
ftruncate
Filesystem 函数


将文件截断到给定的长度

ftell
fwrite
Filesystem 函数
PHP Manual

ftruncate

(PHP 4, PHP 5, PHP 7)

ftruncate — 将文件截断到给定的长度

说明

bool ftruncate ( resource $handle , int $size )

接受文件指针 handle 作为参数，并将文件大小截取为 size。

参数

handle

文件指针。

Note:

The handle must be open for writing.

size

The size to truncate to.

Note:

If size is larger than the file then the file is extended with null bytes.

If size is smaller than the file then the file is truncated to that size.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
4.3.3 | 在 PHP 4.3.3 之前，ftruncate() 在成功时返回一个 integer 值 1，而不是 boolean 的 TRUE。

范例

Example #1 File truncation example

<?php
$filename = 'lorem_ipsum.txt';

$handle = fopen($filename, 'r+');
ftruncate($handle, rand(1, filesize($filename)));
rewind($handle);
echo fread($handle, filesize($filename));
fclose($handle);
?>

注释

Note:

The file pointer is not changed.

参见

  • fopen() - 打开文件或者 URL
  • fseek() - 在文件指针中定位

ftell
fwrite
Filesystem 函数


写入文件（可安全用于二进制文件）

ftruncate
glob
Filesystem 函数
PHP Manual

fwrite

(PHP 4, PHP 5, PHP 7)

fwrite — 写入文件（可安全用于二进制文件）

说明

int fwrite ( resource $handle , string $string [, int $length ] )

fwrite() 把 string 的内容写入 文件指针 handle 处。

参数

handle

文件系统指针，是典型地由 fopen() 创建的 resource(资源)。

string

The string that is to be written.

length

如果指定了 length，当写入了 length 个字节或者写完了 string 以后，写入就会停止，视乎先碰到哪种情况。

注意如果给出了 length 参数，则 magic_quotes_runtime 配置选项将被忽略，而 string 中的斜线将不会被抽去。

返回值

fwrite() 返回写入的字符数，出现错误时则返回 FALSE 。

注释

Note:

Writing to a network stream may end before the whole string is written. Return value of fwrite() may be checked:

<?php
function fwrite_stream($fp, $string) {
    for ($written = 0; $written < strlen($string); $written += $fwrite) {
        $fwrite = fwrite($fp, substr($string, $written));
        if ($fwrite === false) {
            return $written;
        }
    }
    return $written;
}
?>

Note:

在区分二进制文件和文本文件的系统上（如 Windows） 打开文件时，fopen() 函数的 mode 参数要加上 'b'。

Note:

If handle was fopen()ed in append mode, fwrite()s are atomic (unless the size of string exceeds the filesystem's block size, on some platforms, and as long as the file is on a local filesystem). That is, there is no need to flock() a resource before calling fwrite(); all of the data will be written without interruption.

Note:

If writing twice to the file pointer, then the data will be appended to the end of the file content:

<?php
$fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);

// the content of 'data.txt' is now 123 and not 23!
?>

范例

Example #1 一个简单的 fwrite() 例子

<?php
$filename = 'test.txt';
$somecontent = "添加这些文字到文件\n";

// 首先我们要确定文件存在并且可写。
if (is_writable($filename)) {

    // 在这个例子里，我们将使用添加模式打开$filename，
    // 因此，文件指针将会在文件的末尾，
    // 那就是当我们使用fwrite()的时候，$somecontent将要写入的地方。
    if (!$handle = fopen($filename, 'a')) {
         echo "不能打开文件 $filename";
         exit;
    }

    // 将$somecontent写入到我们打开的文件中。
    if (fwrite($handle, $somecontent) === FALSE) {
        echo "不能写入到文件 $filename";
        exit;
    }

    echo "成功地将 $somecontent 写入到文件$filename";

    fclose($handle);

} else {
    echo "文件 $filename 不可写";
}
?>

参见

  • fread() - 读取文件（可安全用于二进制文件）
  • fopen() - 打开文件或者 URL
  • fsockopen() - 打开一个网络连接或者一个Unix套接字连接
  • popen() - 打开进程文件指针
  • file_get_contents() - 将整个文件读入一个字符串

ftruncate
glob
Filesystem 函数


寻找与模式匹配的文件路径

fwrite
is_dir
Filesystem 函数
PHP Manual

glob

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

glob — 寻找与模式匹配的文件路径

说明

array glob ( string $pattern [, int $flags = 0 ] )

glob() 函数依照 libc glob() 函数使用的规则寻找所有与 pattern 匹配的文件路径，类似于一般 shells 所用的规则一样。不进行缩写扩展或参数替代。

参数

pattern

The pattern. No tilde expansion or parameter substitution is done.

flags

有效标记有：

  • GLOB_MARK - 在每个返回的项目中加一个斜线
  • GLOB_NOSORT - 按照文件在目录中出现的原始顺序返回（不排序）
  • GLOB_NOCHECK - 如果没有文件匹配则返回用于搜索的模式
  • GLOB_NOESCAPE - 反斜线不转义元字符
  • GLOB_BRACE - 扩充 {a,b,c} 来匹配 'a'，'b' 或 'c'
  • GLOB_ONLYDIR - 仅返回与模式匹配的目录项
  • GLOB_ERR - 停止并读取错误信息（比如说不可读的目录），默认的情况下忽略所有错误

返回值

返回一个包含有匹配文件／目录的数组。如果出错返回 FALSE。

Note:

On some systems it is impossible to distinguish between empty match and an error.

更新日志

版本 | 说明
5.1.0 | GLOB_ERR was added
4.3.3 | GLOB_ONLYDIR 在 Windows 或者其它不使用 GNU C 库的系统上开始可用。

范例

Example #1 怎样用 glob() 方便地替代 opendir() 和相关函数

<?php
foreach (glob("*.txt") as $filename) {
    echo "$filename size " . filesize($filename) . "\n";
}
?>

以上例程的输出类似于：

funclist.txt size 44686
funcsummary.txt size 267625
quickref.txt size 137820

注释

Note: 此函数不能作用于远程文件，被检查的文件必须是可通过服务器的文件系统访问的。

Note: 此函数在一些系统上还不能工作（例如一些旧的 Sun OS）。

Note: GLOB_BRACE 在一些非 GNU 系统上无效，比如 Solaris。

参见

  • opendir() - 打开目录句柄
  • readdir() - 从目录句柄中读取条目
  • closedir() - 关闭目录句柄
  • fnmatch() - 用模式匹配文件名

fwrite
is_dir
Filesystem 函数


判断给定文件名是否是一个目录

glob
is_executable
Filesystem 函数
PHP Manual

is_dir

(PHP 4, PHP 5, PHP 7)

is_dir — 判断给定文件名是否是一个目录

说明

bool is_dir ( string $filename )

判断给定文件名是否是一个目录。

参数

filename

如果文件名存在并且为目录则返回 TRUE。如果 filename 是一个相对路径，则按照当前工作目录检查其相对路径。 If filename is a symbolic or hard link then the link will be resolved and checked. If you have enabled 安全模式, or open_basedir further restrictions may apply.

返回值

如果文件名存在，并且是个目录，返回 TRUE，否则返回FALSE。

范例

Example #1 is_dir() 例子

<?php
var_dump(is_dir('a_file.txt'));
var_dump(is_dir('bogus_dir/abc'));

var_dump(is_dir('..')); //one dir up
?>

以上例程会输出：

bool(false)
bool(false)
bool(true)

错误／异常

失败时抛出E_WARNING警告。

注释

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

Tip

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

参见

  • chdir() - 改变目录
  • dir() - 返回一个 Directory 类实例
  • opendir() - 打开目录句柄
  • is_file() - 判断给定文件名是否为一个正常的文件
  • is_link() - 判断给定文件名是否为一个符号连接

glob
is_executable
Filesystem 函数


判断给定文件名是否可执行

is_dir
is_file
Filesystem 函数
PHP Manual

is_executable

(PHP 4, PHP 5, PHP 7)

is_executable — 判断给定文件名是否可执行

说明

bool is_executable ( string $filename )

判断给定文件名是否可执行。

参数

filename

文件的路径。

返回值

如果文件存在且可执行则返回 TRUE，错误时返回FALSE。

更新日志

版本 | 说明
5.0.0 | is_executable() 开始可用以于 Windows。

范例

Example #1 is_executable() 例子

<?php

$file = '/home/vincent/somefile.sh';

if (is_executable($file)) {
    echo $file.' is executable';
} else {
    echo $file.' is not executable';
}

?>

错误／异常

失败时抛出E_WARNING警告。

注释

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

Tip

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

参见

  • is_file() - 判断给定文件名是否为一个正常的文件
  • is_link() - 判断给定文件名是否为一个符号连接

is_dir
is_file
Filesystem 函数


判断给定文件名是否为一个正常的文件

is_executable
is_link
Filesystem 函数
PHP Manual

is_file

(PHP 4, PHP 5, PHP 7)

is_file — 判断给定文件名是否为一个正常的文件

说明

bool is_file ( string $filename )

判断给定文件名是否为一个正常的文件。

参数

filename

文件的路径。

返回值

如果文件存在且为正常的文件则返回 TRUE，否则返回 FALSE。

Note: 因为 PHP 的整数类型是有符号整型而且很多平台使用 32 位整型，对 2GB 以上的文件，一些文件系统函数可能返回无法预期的结果 。

范例

Example #1 is_file() 例子

<?php
var_dump(is_file('a_file.txt')) . "\n";
var_dump(is_file('/usr/bin/')) . "\n";
?>

以上例程会输出：

bool(true)
bool(false)

错误／异常

失败时抛出E_WARNING警告。

注释

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

Tip

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

参见

  • is_dir() - 判断给定文件名是否是一个目录
  • is_link() - 判断给定文件名是否为一个符号连接

is_executable
is_link
Filesystem 函数


判断给定文件名是否为一个符号连接

is_file
is_readable
Filesystem 函数
PHP Manual

is_link

(PHP 4, PHP 5, PHP 7)

is_link — 判断给定文件名是否为一个符号连接

说明

bool is_link ( string $filename )

判断给定文件名是否为一个符号连接。

参数

filename

文件的路径。

返回值

如果文件存在并且是一个符号连接则返回 TRUE，否则返回 FALSE。

范例

Example #1 创建并确认一个文件是否为符号连接

<?php
$link = 'uploads';

if (is_link($link)) {
    echo(readlink($link));
} else {
    symlink('uploads.php', $link);
}
?>

错误／异常

失败时抛出E_WARNING警告。

注释

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

Tip

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

参见

  • is_dir() - 判断给定文件名是否是一个目录
  • is_file() - 判断给定文件名是否为一个正常的文件
  • readlink() - 返回符号连接指向的目标

is_file
is_readable
Filesystem 函数


判断给定文件名是否可读

is_link
is_uploaded_file
Filesystem 函数
PHP Manual

is_readable

(PHP 4, PHP 5, PHP 7)

is_readable — 判断给定文件名是否可读

说明

bool is_readable ( string $filename )

判断给定文件名是否存在并且可读。

参数

filename

文件的路径。

返回值

如果由 filename 指定的文件或目录存在并且可读则返回 TRUE，否则返回 FALSE。

范例

Example #1 is_readable() 例子

<?php
$filename = 'test.txt';
if (is_readable($filename)) {
    echo 'The file is readable';
} else {
    echo 'The file is not readable';
}
?>

错误／异常

失败时抛出E_WARNING警告。

注释

记住 PHP 也许只能以运行 webserver 的用户名（通常为 'nobody'）来访问文件。不计入安全模式的限制。 Safe mode limitations are not taken into account before PHP 5.1.5.

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

Tip

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

Note:

The check is done using the real UID/GID instead of the effective one.

对于目录这个函数可能会返回 TRUE。请使用 is_dir() 来区分文件和目录。

参见

  • is_writable() - 判断给定的文件名是否可写
  • file_exists() - 检查文件或目录是否存在
  • fgets() - 从文件指针中读取一行

is_link
is_uploaded_file
Filesystem 函数


判断文件是否是通过 HTTP POST 上传的

is_readable
is_writable
Filesystem 函数
PHP Manual

is_uploaded_file

(PHP 4 >= 4.0.3, PHP 5, PHP 7)

is_uploaded_file — 判断文件是否是通过 HTTP POST 上传的

说明

bool is_uploaded_file ( string $filename )

如果 filename 所给出的文件是通过 HTTP POST 上传的则返回 TRUE。这可以用来确保恶意的用户无法欺骗脚本去访问本不能访问的文件，例如 /etc/passwd。

这种检查显得格外重要，如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。

为了能使 is_uploaded_file() 函数正常工作，必段指定类似于 $_FILES['userfile']['tmp_name'] 的变量，而在从客户端上传的文件名 $_FILES['userfile']['name'] 不能正常运作。

参数

filename

要检查的文件名。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 is_uploaded_file() 例子

<?php

if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
   echo "File ". $_FILES['userfile']['name'] ." uploaded successfully.\n";
   echo "Displaying contents\n";
   readfile($_FILES['userfile']['tmp_name']);
} else {
   echo "Possible file upload attack: ";
   echo "filename '". $_FILES['userfile']['tmp_name'] . "'.";
}

?>

参见

  • move_uploaded_file() - 将上传的文件移动到新位置
  • $_FILES
  • 关于用法的简单例子 文件上传处理

is_readable
is_writable
Filesystem 函数


判断给定的文件名是否可写

is_uploaded_file
is_writeable
Filesystem 函数
PHP Manual

is_writable

(PHP 4, PHP 5, PHP 7)

is_writable — 判断给定的文件名是否可写

说明

bool is_writable ( string $filename )

如果文件存在并且可写则返回 TRUE。filename 参数可以是一个允许进行是否可写检查的目录名。

记住 PHP 也许只能以运行 webserver 的用户名（通常为 'nobody'）来访问文件。不计入安全模式的限制。

参数

filename

要检查的文件名称。

返回值

如果文件 filename 存在并且可写则返回 TRUE。

范例

Example #1 is_writable() 例子

<?php
$filename = 'test.txt';
if (is_writable($filename)) {
    echo 'The file is writable';
} else {
    echo 'The file is not writable';
}
?>

错误／异常

失败时抛出E_WARNING警告。

注释

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

Tip

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

参见

  • is_readable() - 判断给定文件名是否可读
  • file_exists() - 检查文件或目录是否存在
  • fwrite() - 写入文件（可安全用于二进制文件）

is_uploaded_file
is_writeable
Filesystem 函数


is_writable 的别名

is_writable
lchgrp
Filesystem 函数
PHP Manual

is_writeable

(PHP 4, PHP 5, PHP 7)

is_writeable — is_writable() 的别名

说明

此函数是该函数的别名：is_writable()。

is_writable
lchgrp
Filesystem 函数


修改符号链接的所有组

is_writeable
lchown
Filesystem 函数
PHP Manual

lchgrp

(PHP 5 >= 5.1.2, PHP 7)

lchgrp — 修改符号链接的所有组

说明

bool lchgrp ( string $filename , mixed $group )

尝试修改符号链接 filename 的所有组 group

只有超级用户可以任意修改符号链接的所有组;其他用户可能需要有修改目标组的权限才能修改至目标所有组。

参数

filename

符号链接路径

group

所有组的名字或者编号

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 更改符号链接的所有组

<?php
$target = 'output.php';
$link = 'output.html';
symlink($target, $link);

lchgrp($link, 8);
?>

注释

Note: 此函数不能作用于远程文件，被检查的文件必须是可通过服务器的文件系统访问的。

Note: 当启用 安全模式时， PHP 会检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。

Note: 此函数未在 Windows 平台下实现。

参见

  • chgrp() - 改变文件所属的组
  • lchown() - 修改符号链接的所有者
  • chown() - 改变文件的所有者
  • chmod() - 改变文件模式

is_writeable
lchown
Filesystem 函数


修改符号链接的所有者

lchgrp
link
Filesystem 函数
PHP Manual

lchown

(PHP 5 >= 5.1.2, PHP 7)

lchown — 修改符号链接的所有者

说明

bool lchown ( string $filename , mixed $user )

尝试修改符号链接 filename 的 所有者 user

只有超级用户任意修改符号链接的所有者。

参数

filename

文件路径。

user

所有者名称或编号

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Changing the owner of a symbolic link

<?php
$target = 'output.php';
$link = 'output.html';
symlink($target, $link);

lchown($link, 8);
?>

注释

Note: 此函数不能作用于远程文件，被检查的文件必须是可通过服务器的文件系统访问的。

Note: 当启用 安全模式时， PHP 会检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。

Note: 此函数未在 Windows 平台下实现。

参见

  • chown() - 改变文件的所有者
  • lchgrp() - 修改符号链接的所有组
  • chgrp() - 改变文件所属的组
  • chmod() - 改变文件模式

lchgrp
link
Filesystem 函数


建立一个硬连接

lchown
linkinfo
Filesystem 函数
PHP Manual

link

(PHP 4, PHP 5, PHP 7)

link — 建立一个硬连接

说明

bool link ( string $target , string $link )

link() 建立一个硬连接。

参数

target

要链接的目标。

link

链接的名称。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note: Windows下：该功能需要以 elevated 模式运行，或者关闭 UAC。

更新日志

版本 | 说明
5.3.0 | 该功能在 Windows 平台下开始有效（Vista、 Server 2008 或更高版本）。

范例

Example #1 Creating a simple hard link

<?php
$target = 'source.ext'; // This is the file that already exists
$link = 'newfile.ext'; // This the filename that you want to link it to

link($target, $link);
?>

注释

Note: 此函数不能作用于远程文件，被检查的文件必须是可通过服务器的文件系统访问的。

参见

  • symlink() - 建立符号连接
  • readlink() - 返回符号连接指向的目标
  • linkinfo() - 获取一个连接的信息

lchown
linkinfo
Filesystem 函数


获取一个连接的信息

link
lstat
Filesystem 函数
PHP Manual

linkinfo

(PHP 4, PHP 5, PHP 7)

linkinfo — 获取一个连接的信息

说明

int linkinfo ( string $path )

获取一个连接的信息。

本函数用来验证一个连接（由 path 所指向的）是否确实存在（使用 stat.h 中的 S_ISLNK 宏同样的方法）。

参数

path

连接的路径。

返回值

linkinfo() 返回 lstat 系统调用所返回的 UNIX C stat 结构中的 st_dev 字段。 如果出错则返回 0 或 FALSE。

更新日志

版本 | 说明
5.3.0 | Windows 平台上开始可用（Vista、Server 2008 或更高版本）。

范例

Example #1 linkinfo() 例子

<?php

echo linkinfo('/vmlinuz'); // 835

?>

参见

  • symlink() - 建立符号连接
  • link() - 建立一个硬连接
  • readlink() - 返回符号连接指向的目标

link
lstat
Filesystem 函数


给出一个文件或符号连接的信息

linkinfo
mkdir
Filesystem 函数
PHP Manual

lstat

(PHP 4, PHP 5, PHP 7)

lstat — 给出一个文件或符号连接的信息

说明

array lstat ( string $filename )

获取由 filename 指定的文件或符号连接的统计信息。

参数

filename

文件或符号连接的路径。

返回值

有关 lstat() 返回的数组结构见手册中 stat() 函数的页面。 本函数和 stat() 函数相同，只除了如果 filename 参数是符号连接的话，则该符号连接的状态被返回，而不是该符号连接所指向的文件的状态。

范例

Example #1 stat() 和 lstat() 的对照

<?php
symlink('uploads.php', 'uploads');

// Contrast information for uploads.php and uploads
array_diff(stat('uploads'), lstat('uploads'));
?>

以上例程的输出类似于：

Information that differs between the two files.

Array
(
    [ino] => 97236376
    [mode] => 33188
    [size] => 34
    [atime] => 1223580003
    [mtime] => 1223581848
    [ctime] => 1223581848
    [blocks] => 8
)

错误／异常

失败时抛出E_WARNING警告。

注释

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

Tip

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

参见

  • stat() - 给出文件的信息

linkinfo
mkdir
Filesystem 函数


新建目录

lstat
move_uploaded_file
Filesystem 函数
PHP Manual

mkdir

(PHP 4, PHP 5, PHP 7)

mkdir — 新建目录

说明

bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )

尝试新建一个由 pathname 指定的目录。

参数

pathname

目录的路径。

mode

默认的 mode 是 0777，意味着最大可能的访问权。有关 mode 的更多信息请阅读 chmod() 页面。

Note:

mode 在 Windows 下被忽略。

注意也许想用八进制数指定模式，也就是说该数应以零打头。模式也会被当前的 umask 修改，可以用 umask() 来改变。

recursive

Allows the creation of nested directories specified in the pathname.

context

Note: 在 PHP 5.0.0 中增加了对上下文（Context）的支持。有关上下文（Context）的说明参见 Streams。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.0.0 | 添加 recursive 参数。
5.0.0 | mkdir() 也可用于某些 URL 封装协议。参见支持的协议和封装协议 的列表看看 mkdir() 支持哪些 URL 封装协议。
4.2.0 | mode 成为可选项。

范例

Example #1 mkdir() 例子

<?php
mkdir("/path/to/my/dir", 0700);
?>

Example #2 通过 recursive 参数使用 mkdir()

<?php
// Desired folder structure
$structure = './depth1/depth2/depth3/';

// To create the nested structure, the $recursive parameter
// to mkdir() must be specified.

if (!mkdir($structure, 0, true)) {
    die('Failed to create folders...');
}

// ...
?>

注释

Note: 当启用 安全模式时， PHP 会在执行脚本时检查被脚本操作的目录是否与被执行的脚本有相同的 UID（所有者）。

参见

  • is_dir() - 判断给定文件名是否是一个目录
  • rmdir() - 删除目录

lstat
move_uploaded_file
Filesystem 函数


将上传的文件移动到新位置

mkdir
parse_ini_file
Filesystem 函数
PHP Manual

move_uploaded_file

(PHP 4 >= 4.0.3, PHP 5, PHP 7)

move_uploaded_file — 将上传的文件移动到新位置

说明

bool move_uploaded_file ( string $filename , string $destination )

本函数检查并确保由 filename 指定的文件是合法的上传文件（即通过 PHP 的 HTTP POST 上传机制所上传的）。如果文件合法，则将其移动为由 destination 指定的文件。

这种检查显得格外重要，如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。

参数

filename

上传的文件的文件名。

destination

移动文件到这个位置。

返回值

成功时返回 TRUE。

如果 filename 不是合法的上传文件，不会出现任何操作，move_uploaded_file() 将返回 FALSE。

如果 filename 是合法的上传文件，但出于某些原因无法移动，不会出现任何操作，move_uploaded_file() 将返回 FALSE。此外还会发出一条警告。

范例

Example #1 Uploading multiple files

<?php
$uploads_dir = '/uploads';
foreach ($_FILES["pictures"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
        $name = $_FILES["pictures"]["name"][$key];
        move_uploaded_file($tmp_name, "$uploads_dir/$name");
    }
}
?>

注释

Note:

move_uploaded_file() 对安全模式和 open_basedir 都是敏感的。不过，限制只针对 destination 路径，因为允许移动上传的文件名 filename 可能会与这些限制产生冲突。move_uploaded_file() 仅作用于通过 PHP 上传的文件以确保这个操作的安全性。

Warning

如果目标文件已经存在，将会被覆盖。

参见

  • is_uploaded_file() - 判断文件是否是通过 HTTP POST 上传的
  • rename() - 重命名一个文件或目录
  • 参见文件上传处理一章中的简单使用例子。

mkdir
parse_ini_file
Filesystem 函数


解析一个配置文件

move_uploaded_file
parse_ini_string
Filesystem 函数
PHP Manual

parse_ini_file

(PHP 4, PHP 5, PHP 7)

parse_ini_file — 解析一个配置文件

说明

array parse_ini_file ( string $filename [, bool $process_sections = false [, int $scanner_mode = INI_SCANNER_NORMAL ]] )

parse_ini_file() 载入一个由 filename 指定的 ini 文件，并将其中的设置作为一个联合数组返回。

ini 文件的结构和 php.ini 的相似。

参数

filename

要解析的 ini 文件的文件名。

process_sections

如果将最后的 process_sections 参数设为 TRUE，将得到一个多维数组，包括了配置文件中每一节的名称和设置。process_sections 的默认值是 FALSE。

scanner_mode

Can either be INI_SCANNER_NORMAL (default) or INI_SCANNER_RAW. If INI_SCANNER_RAW is supplied, then option values will not be parsed.

返回值

成功时以关联数组 array 返回设置，失败时返回 FALSE。

更新日志

版本 | 说明
5.3.0 | Added optional scanner_mode parameter. Single quotes may now be used around variable assignments. Hash marks (#) may no longer be used as comments and will throw a deprecation warning if used.
5.2.7 | On syntax error this function will return FALSE rather than an empty array.
5.2.4 | 由数字组成的键名和小节名会被 PHP 当作整数来处理，因此以 0 开头的数字会被当作八进制而以 0x 开头的会被当作十六进制。
5.0.0 | 该函数也开始处理选项值内的新行。
4.2.1 | 本函数也开始受到安全模式和 open_basedir 的影响。

范例

Example #1 sample.ini 的内容

; This is a sample configuration file
; Comments start with ';', as in php.ini

[first_section]
one = 1
five = 5
animal = BIRD

[second_section]
path = "/usr/local/bin"
URL = "http://www.example.com/~username"

[third_section]
phpversion[] = "5.0"
phpversion[] = "5.1"
phpversion[] = "5.2"
phpversion[] = "5.3"

Example #2 parse_ini_file() 例子

常量也可以在 ini 文件中被解析，因此如果在运行 parse_ini_file() 之前定义了常量作为 ini 的值，将会被集成到结果中去。只有 ini 的值会被求值。例如：

<?php

define('BIRD', 'Dodo bird');

// Parse without sections
$ini_array = parse_ini_file("sample.ini");
print_r($ini_array);

// Parse with sections
$ini_array = parse_ini_file("sample.ini", true);
print_r($ini_array);

?>

以上例程的输出类似于：

Array
(
    [one] => 1
    [five] => 5
    [animal] => Dodo bird
    [path] => /usr/local/bin
    [URL] => http://www.example.com/~username
    [phpversion] => Array
        (
            [0] => 5.0
            [1] => 5.1
            [2] => 5.2
            [3] => 5.3
        )

)
Array
(
    [first_section] => Array
        (
            [one] => 1
            [five] => 5
            [animal] => Dodo bird
        )

    [second_section] => Array
        (
            [path] => /usr/local/bin
            [URL] => http://www.example.com/~username
        )

    [third_section] => Array
        (
            [phpversion] => Array
                (
                    [0] => 5.0
                    [1] => 5.1
                    [2] => 5.2
                    [3] => 5.3
                )

        )

)

Example #3 parse_ini_file() parsing a php.ini file

<?php
// A simple function used for comparing the results below
function yesno($expression)
{
    return($expression ? 'Yes' : 'No');
}

// Get the path to php.ini using the php_ini_loaded_file()
// function available as of PHP 5.2.4
$ini_path = php_ini_loaded_file();

// Parse php.ini
$ini = parse_ini_file($ini_path);

// Print and compare the values, note that using get_cfg_var()
// will give the same results for parsed and loaded here
echo '(parsed) magic_quotes_gpc = ' . yesno($ini['magic_quotes_gpc']) . PHP_EOL;
echo '(loaded) magic_quotes_gpc = ' . yesno(get_cfg_var('magic_quotes_gpc')) . PHP_EOL;
?>

以上例程的输出类似于：

(parsed) magic_quotes_gpc = Yes
(loaded) magic_quotes_gpc = Yes

注释

Note:

本函数和 php.ini 文件没有关系，该文件在运行脚本时就已经处理过了。本函数可以用来读取你自己的应用程序的配置文件。

Note:

如果 ini 文件中的值包含任何非字母数字的字符，需要将其括在双引号中（"）。

Note: 有些保留字不能作为 ini 文件中的键名，包括：null，yes，no，true 和 false。值为 null，no 和 false 等效于 ""，值为 yes 和 true 等效于 "1"。字符 {}|&~![()" 也不能用在键名的任何地方，而且这些字符在选项值中有着特殊的意义。

参见

  • parse_ini_string() - 解析配置字符串

move_uploaded_file
parse_ini_string
Filesystem 函数


解析配置字符串

parse_ini_file
pathinfo
Filesystem 函数
PHP Manual

parse_ini_string

(PHP 5 >= 5.3.0, PHP 7)

parse_ini_string — 解析配置字符串

说明

array parse_ini_string ( string $ini [, bool $process_sections = false [, int $scanner_mode = INI_SCANNER_NORMAL ]] )

parse_ini_string() 返回 ini 字符串解析后的关联数组

ini 字符串的格式参考 php.ini

参数

ini

ini 字符串内容

process_sections

设置 process_sections 参数为 TRUE,得到一个多维数组,包含名称和设置。process_sections 默认为 FALSE

scanner_mode

可以是 INI_SCANNER_NORMAL (默认)或 INI_SCANNER_RAW 。如果是 INI_SCANNER_RAW,那么选项值不会被解析。

As of PHP 5.6.1 can also be specified as INI_SCANNER_TYPED. In this mode boolean, null and integer types are preserved when possible. String values "true", "on" and "yes" are converted to TRUE. "false", "off", "no" and "none" are considered FALSE. "null" is converted to NULL in typed mode. Also, all numeric strings are converted to integer type if it is possible.

返回值

执行成功返回一个关联数组,返回 FALSE 为失败

注释

Note: 保留关键字不能作为 ini 的键，包括 null, yes, no, true, false, on, off, none以及空值，off，no 和错误的结果集，值为 yes 和 正确的结果集。除非使用 INI_SCANNER_TYPED 模式。 字符 ?{}|&~![()^" 不能在任何地方使用作为键和有特殊意义的值。

参见

  • parse_ini_file() - 解析一个配置文件

parse_ini_file
pathinfo
Filesystem 函数


返回文件路径的信息

parse_ini_string
pclose
Filesystem 函数
PHP Manual

pathinfo

(PHP 4 >= 4.0.3, PHP 5, PHP 7)

pathinfo — 返回文件路径的信息

说明

mixed pathinfo ( string $path [, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ] )

pathinfo() 返回一个关联数组包含有 path 的信息。返回关联数组还是字符串取决于 options。

参数

path

要解析的路径。

options

如果指定了，将会返回指定元素；它们包括：PATHINFO_DIRNAME，PATHINFO_BASENAME 和 PATHINFO_EXTENSION 或 PATHINFO_FILENAME。

如果没有指定 options 默认是返回全部的单元。

返回值

如果没有传入 options ，将会返回包括以下单元的数组 array：dirname，basename 和 extension（如果有），以 及filename。

Note:

If the path does not have an extension, no extension element will be returned（以下第二个案例）。

If options is present, returns a string containing the requested element.

更新日志

版本 | 说明
5.2.0 | 添加了常量 PATHINFO_FILENAME。

范例

Example #1 pathinfo() 例子

<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');

echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n"; // since PHP 5.2.0
?>

以上例程会输出：

/www/htdocs/inc
lib.inc.php
php
lib.inc

Example #2 pathinfo() example showing difference between null and no extension

<?php
$path_parts = pathinfo('/path/emptyextension.');
var_dump($path_parts['extension']);

$path_parts = pathinfo('/path/noextension');
var_dump($path_parts['extension']);
?>

以上例程的输出类似于：

string(0) ""

Notice: Undefined index: extension in test.php on line 6
NULL

注释

Note:

有关取得当前路径信息的说明，请阅读预定义变量一节。

Note:

pathinfo() is locale aware, so for it to parse a path containing multibyte characters correctly, the matching locale must be set using the setlocale() function.

参见

  • dirname() - 返回路径中的目录部分
  • basename() - 返回路径中的文件名部分
  • parse_url() - 解析 URL，返回其组成部分
  • realpath() - 返回规范化的绝对路径名

parse_ini_string
pclose
Filesystem 函数


关闭进程文件指针

pathinfo
popen
Filesystem 函数
PHP Manual

pclose

(PHP 4, PHP 5, PHP 7)

pclose — 关闭进程文件指针

说明

int pclose ( resource $handle )

关闭用 popen() 打开的指向管道的文件指针。

参数

handle

文件指针必须有效，且必须是成功调用 popen() 所返回的。

返回值

返回运行的进程的终止状态。发生错误时会返回 -1。

范例

Example #1 pclose() 例子

<?php
$handle = popen('/bin/ls', 'r');
pclose($handle);
?>

注释

Note: Unix Only:

proc_close() is internally implemented using the waitpid(3) system call. To obtain the real exit status code the pcntl_wexitstatus() function should be used.

参见

  • popen() - 打开进程文件指针

pathinfo
popen
Filesystem 函数


打开进程文件指针

pclose
readfile
Filesystem 函数
PHP Manual

popen

(PHP 4, PHP 5, PHP 7)

popen — 打开进程文件指针

说明

resource popen ( string $command , string $mode )

打开一个指向进程的管道，该进程由派生给定的 command 命令执行而产生。

参数

command

命令。

mode

模式。

返回值

返回一个和 fopen()
所返回的相同的文件指针，只不过它是单向的（只能用于读或写）并且必须用
pclose() 来关闭。此指针可以用于
fgets()，fgetss() 和
fwrite()。
当模式为 'r'，返回的文件指针等于命令的 STDOUT，当模式为 'w'，返回的文件指针等于命令的 STDIN。

如果出错返回 FALSE。

范例

Example #1 popen() 例子

<?php
$handle = popen("/bin/ls", "r");
?>

如果未找到要执行的命令，会返回一个合法的资源。这看上去很怪，但有道理。它允许访问 shell 返回的任何错误信息：

Example #2 popen() 例子

<?php
error_reporting(E_ALL);

/* 加入重定向以得到标准错误输出 stderr。 */
$handle = popen('/path/to/executable 2>&1', 'r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);
?>

注释

Note:

如果需要双向支持，使用 proc_open()。

Note: 安全模式 启用时，可仅可用 safe_mode_exec_dir 执行文件。实际上，现在不允许在到可执行的路径中存在 .. 组件。

Warning

安全模式 启用时，命令字符串会被 escapeshellcmd() 转换。因此，echo y | echo x 会变成 echo y \| echo x。

参见

  • pclose() - 关闭进程文件指针
  • fopen() - 打开文件或者 URL
  • proc_open() - 执行一个命令，并且打开用来输入/输出的文件指针。

pclose
readfile
Filesystem 函数


输出文件

popen
readlink
Filesystem 函数
PHP Manual

readfile

(PHP 4, PHP 5, PHP 7)

readfile — 输出文件

说明

int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )

读取文件并写入到输出缓冲。

参数

filename

要读取的文件名。

use_include_path

想要在 include_path 中搜索文件，可使用这个可选的第二个参数，设为 TRUE。

context

Stream 上下文（context） resource。

返回值

返回从文件中读入的字节数。如果出错返回 FALSE 并且除非是以 @readfile() 形式调用，否则会显示错误信息。

范例

Example #1 使用 readfile() 强制下载

<?php
$file = 'monkey.gif';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($file).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}
?>

以上例程的输出类似于：

打开 / 保存对话框

注释

Note:

readfile() 自身不会导致任何内存问题。 如果出现内存不足的错误，使用 ob_get_level() 确保输出缓存已经关闭。

Tip

如已启用fopen 包装器，在此函数中， URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议，注意其用法及其可提供的预定义变量。

Note: 在 PHP 5.0.0 中增加了对上下文（Context）的支持。有关上下文（Context）的说明参见 Streams。

参见

  • fpassthru() - 输出文件指针处的所有剩余数据
  • file() - 把整个文件读入一个数组中
  • fopen() - 打开文件或者 URL
  • include - include
  • require - require
  • virtual() - 执行 Apache 子请求
  • file_get_contents() - 将整个文件读入一个字符串
  • 支持的协议和封装协议

popen
readlink
Filesystem 函数


返回符号连接指向的目标

readfile
realpath_cache_get
Filesystem 函数
PHP Manual

readlink

(PHP 4, PHP 5, PHP 7)

readlink — 返回符号连接指向的目标

说明

string readlink ( string $path )

readlink() 和同名的 C 函数做同样的事，返回符号连接的内容。

参数

path

链接符号的路径。

更新日志

版本 | 说明
5.3.0 | 此函数在 Windows 平台下可用（Vista、Server 2008 或更高版本）。

返回值

返回链接的路径内容，出错则返回 FALSE。

范例

Example #1 readlink() 例

<?php

// output e.g. /boot/vmlinux-2.4.20-xfs
echo readlink('/vmlinuz');

?>

参见

  • is_link() - 判断给定文件名是否为一个符号连接
  • symlink() - 建立符号连接
  • linkinfo() - 获取一个连接的信息

readfile
realpath_cache_get
Filesystem 函数


获取真实目录缓存的详情

readlink
realpath_cache_size
Filesystem 函数
PHP Manual

realpath_cache_get

(PHP 5 >= 5.3.2, PHP 7)

realpath_cache_get — 获取真实目录缓存的详情

说明

array realpath_cache_get ( void )

获得真实路径缓存的详情。

返回值

返回真实路径缓存详情的数组。键是原始路径以及值为具体信息数组，含有该解析的路径，过期时间以及其他的更多选项。

范例

Example #1 realpath_cache_get() example

<?php
var_dump(realpath_cache_get());
?>

以上例程的输出类似于：

array(2) {
  ["/test"]=>
  array(4) {
    ["key"]=>
    int(123456789)
    ["is_dir"]=>
    bool(true)
    ["realpath"]=>
    string(5) "/test"
    ["expires"]=>
    int(1260318939)
  }
  ["/test/test.php"]=>
  array(4) {
    ["key"]=>
    int(987654321)
    ["is_dir"]=>
    bool(false)
    ["realpath"]=>
    string(12) "/root/test.php"
    ["expires"]=>
    int(1260318939)
  }
}

参见

  • realpath_cache_size() - 获取真实路径缓冲区的大小

readlink
realpath_cache_size
Filesystem 函数


获取真实路径缓冲区的大小

realpath_cache_get
realpath
Filesystem 函数
PHP Manual

realpath_cache_size

(PHP 5 >= 5.3.2, PHP 7)

realpath_cache_size — 获取真实路径缓冲区的大小

说明

int realpath_cache_size ( void )

获取真实路径缓存区大小在内存中的使用量。

返回值

返回真实路径缓存区使用内存的用量。

范例

Example #1 realpath_cache_size() example

<?php
var_dump(realpath_cache_size());
?>

以上例程的输出类似于：

int(412)

参见

  • realpath_cache_get() - 获取真实目录缓存的详情
  • realpath_cache_size 方法的配置选项

realpath_cache_get
realpath
Filesystem 函数


返回规范化的绝对路径名

realpath_cache_size
rename
Filesystem 函数
PHP Manual

realpath

(PHP 4, PHP 5, PHP 7)

realpath — 返回规范化的绝对路径名

说明

string realpath ( string $path )

realpath() 扩展所有的符号连接并且处理输入的 path 中的 '/./', '/../' 以及多余的 '/' 并返回规范化后的绝对路径名。返回的路径中没有符号连接，'/./' 或 '/../' 成分。

参数

path

要检查的路径。

Note:

Whilst a path must be supplied, the value can be blank or NULL In these cases, the value is interpreted as the current directory.

返回值

Returns the canonicalized absolute pathname on success. The resulting path will have no symbolic link, '/./' or '/../' components.

realpath() 失败时返回 FALSE，比如说文件不存在的话。

Note:

The running script must have executable permissions on all directories in the hierarchy, otherwise realpath() will return FALSE.

Note: 因为 PHP 的整数类型是有符号整型而且很多平台使用 32 位整型，对 2GB 以上的文件，一些文件系统函数可能返回无法预期的结果 。

更新日志

版本 | 说明
5.3.0 | 在之前的版本中，在 *BSD 系统上，如果仅仅是 path 不存在的话，realpath() 并不会像其它系统那样返回 FALSE。
5.0.0 | 在此之前的版本中，如果 path 传入了空或者 NULL，将导致 realpath() 返回脚本当前的目录。

范例

Example #1 realpath() 例子

<?php
chdir('/var/www/');
echo realpath('./../../etc/passwd');
?>

以上例程会输出：

/etc/passwd

Example #2 Windows 上的 realpath()

在 Windows 上，realpath() 会将 unix 风格的路径改成 Windows 风格的。

<?php
echo realpath('/windows/system32');
?>

以上例程会输出：

C:\WINDOWS\System32

参见

  • basename() - 返回路径中的文件名部分
  • dirname() - 返回路径中的目录部分
  • pathinfo() - 返回文件路径的信息

realpath_cache_size
rename
Filesystem 函数


重命名一个文件或目录

realpath
rewind
Filesystem 函数
PHP Manual

rename

(PHP 4, PHP 5, PHP 7)

rename — 重命名一个文件或目录

说明

bool rename ( string $oldname , string $newname [, resource $context ] )

尝试把 oldname 重命名为 newname。

参数

oldname

Note:

用于 oldname 中的封装协议必须和用于 newname 中的相匹配。

newname

新的名字。

context

Note: 在 PHP 5.0.0 中增加了对上下文（Context）的支持。有关上下文（Context）的说明参见 Streams。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.3.1 | 可以在 Windows 上跨驱动器 rename() 文件。
5.0.0 | rename() 也可用于某些 URL 封装协议。参见支持的协议和封装协议 的列表看看 rename() 支持哪些 URL 封装协议。
4.3.3 | 在有适当权限的时候 rename() 已经能够在基于 *nix 的系统中跨磁盘分区重命名文件。Warnings may be generated if the destination filesystem doesn't permit chown() or chmod() system calls to be made on files — for example, if the destination filesystem is a FAT filesystem.

范例

Example #1 rename() 例子

<?php
rename("/tmp/tmp_file.txt", "/home/user/login/docs/my_file.txt");
?>

参见

  • copy() - 拷贝文件
  • unlink() - 删除文件
  • move_uploaded_file() - 将上传的文件移动到新位置

realpath
rewind
Filesystem 函数


倒回文件指针的位置

rename
rmdir
Filesystem 函数
PHP Manual

rewind

(PHP 4, PHP 5, PHP 7)

rewind — 倒回文件指针的位置

说明

bool rewind ( resource $handle )

将 handle 的文件位置指针设为文件流的开头。

Note:

如果将文件以附加（"a" 或者 "a+"）模式打开，写入文件的任何数据总是会被附加在后面，不管文件指针的位置。

参数

handle

文件指针必须合法，并且指向由 fopen() 成功打开的文件。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 rewind() overwriting example

<?php
$handle = fopen('output.txt', 'r+');

fwrite($handle, 'Really long sentence.');
rewind($handle);
fwrite($handle, 'Foo');
rewind($handle);

echo fread($handle, filesize('output.txt'));

fclose($handle);
?>

以上例程的输出类似于：

Foolly long sentence.

参见

  • fread() - 读取文件（可安全用于二进制文件）
  • fseek() - 在文件指针中定位
  • ftell() - 返回文件指针读/写的位置
  • fwrite() - 写入文件（可安全用于二进制文件）

rename
rmdir
Filesystem 函数


删除目录

rewind
set_file_buffer
Filesystem 函数
PHP Manual

rmdir

(PHP 4, PHP 5, PHP 7)

rmdir — 删除目录

说明

bool rmdir ( string $dirname [, resource $context ] )

尝试删除 dirname 所指定的目录。 该目录必须是空的，而且要有相应的权限。 失败时会产生一个 E_WARNING 级别的错误。

参数

dirname

目录的路径。

context

Note: 在 PHP 5.0.0 中增加了对上下文（Context）的支持。有关上下文（Context）的说明参见 Streams。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.0.0 | 自 PHP 5.0.0 起 rmdir() 也可用于某些 URL 封装协议。参见支持的协议和封装协议 的列表看看 rmdir() 支持哪些 URL 封装协议。

范例

Example #1 rmdir() 例子

<?php
if (!is_dir('examples')) {
    mkdir('examples');
}

rmdir('examples');
?>

注释

Note: 当启用 安全模式时， PHP 会在执行脚本时检查被脚本操作的目录是否与被执行的脚本有相同的 UID（所有者）。

参见

  • is_dir() - 判断给定文件名是否是一个目录
  • mkdir() - 新建目录
  • unlink() - 删除文件

rewind
set_file_buffer
Filesystem 函数


stream_set_write_buffer 的别名

rmdir
stat
Filesystem 函数
PHP Manual

set_file_buffer

(PHP 4, PHP 5, PHP 7)

set_file_buffer — stream_set_write_buffer() 的别名

说明

此函数是该函数的别名：stream_set_write_buffer()。

rmdir
stat
Filesystem 函数


给出文件的信息

set_file_buffer
symlink
Filesystem 函数
PHP Manual

stat

(PHP 4, PHP 5, PHP 7)

stat — 给出文件的信息

说明

array stat ( string $filename )

获取由 filename 指定的文件的统计信息。如果 filename 是符号连接，则统计信息是关于被连接文件本身的，而不是符号连接。

lstat() 和 stat() 相同，只除了它会返回符号连接的状态。

参数

filename

文件的路径。

返回值

stat() 和 fstat() 返回格式
数字下标 | 关联键名（自 PHP 4.0.6） | 说明
0 | dev | device number - 设备名
1 | ino | inode number - inode 号码
2 | mode | inode protection mode - inode 保护模式
3 | nlink | number of links - 被连接数目
4 | uid | userid of owner - 所有者的用户 id
5 | gid | groupid of owner- 所有者的组 id
6 | rdev | device type, if inode device * - 设备类型，如果是 inode 设备的话
7 | size | size in bytes - 文件大小的字节数
8 | atime | time of last access (unix timestamp) - 上次访问时间（Unix 时间戳）
9 | mtime | time of last modification (unix timestamp) - 上次修改时间（Unix 时间戳）
10 | ctime | time of last change (unix timestamp) - 上次改变时间（Unix 时间戳）
11 | blksize | blocksize of filesystem IO * - 文件系统 IO 的块大小
12 | blocks | number of blocks allocated - 所占据块的数目
* Windows 下总是 0。

* - 仅在支持 st_blksize 类型的系统下有效。其它系统（如 Windows）返回 -1。

如果出错，stat() 返回 FALSE。

Note: 因为 PHP 的整数类型是有符号整型而且很多平台使用 32 位整型，对 2GB 以上的文件，一些文件系统函数可能返回无法预期的结果 。

错误／异常

错误时会产生 E_WARNING 级别的错误。

更新日志

版本 | 说明
4.0.6 | 返回一个数组包含有文件的统计信息，该数组具有以下列出的单元，数组下标从零开始。除了数字索引之外自还可以通过关联索引来访问。

范例

Example #1 stat() 例子

<?php
/* Get file stat */
$stat = stat('C:\php\php.exe');

/*
 * Print file access time, this is the same
 * as calling fileatime()
 */
echo 'Access time: ' . $stat['atime'];

/*
 * Print file modification time, this is the
 * same as calling filemtime()
 */
echo 'Modification time: ' . $stat['mtime'];

/* Print the device number */
echo 'Device number: ' . $stat['dev'];
?>

Example #2 Using stat() information together with touch()

<?php
/* Get file stat */
$stat = stat('C:\php\php.exe');

/* Did we failed to get stat information? */
if (!$stat) {
    echo 'stat() call failed...';
} else {
    /*
     * We want the access time to be 1 week
     * after the current access time.
     */
    $atime = $stat['atime'] + 604800;

    /* Touch the file */
    if (!touch('some_file.txt', time(), $atime)) {
        echo 'Failed to touch file...';
    } else {
        echo 'touch() returned success...';
    }
}
?>

注释

Note:

注意：不同文件系统对时间的判断方法可能是不相同的。

Note: 此函数的结果会被缓存。参见 clearstatcache() 以获得更多细节。

Tip

自 PHP 5.0.0 起, 此函数也用于某些 URL 包装器。请参见 支持的协议和封装协议以获得支持 stat() 系列函数功能的包装器列表。

参见

  • lstat() - 给出一个文件或符号连接的信息
  • fstat() - 通过已打开的文件指针取得文件信息
  • filemtime() - 取得文件修改时间
  • filegroup() - 取得文件的组

set_file_buffer
symlink
Filesystem 函数


建立符号连接

stat
tempnam
Filesystem 函数
PHP Manual

symlink

(PHP 4, PHP 5, PHP 7)

symlink — 建立符号连接

说明

bool symlink ( string $target , string $link )

symlink() 对于已有的 target 建立一个名为 link 的符号连接。

参数

target

连接的目标。

link

连接的名称。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.3.0 | 此函数在 Windows 平台上可用（Vista、Server 2008 或更高版本）。

范例

Example #1 创建一个符号连接

<?php
$target = 'uploads.php';
$link = 'uploads';
symlink($target, $link);

echo readlink($link);
?>

注释

Note: 仅针对 Windows：运行 PHP 于Vista、Server 2008 或更高版本才能正常使用。 之前版本的 Windows 不支持符号连接。

参见

  • link() - 建立一个硬连接
  • readlink() - 返回符号连接指向的目标
  • linkinfo() - 获取一个连接的信息

stat
tempnam
Filesystem 函数


建立一个具有唯一文件名的文件

symlink
tmpfile
Filesystem 函数
PHP Manual

tempnam

(PHP 4, PHP 5, PHP 7)

tempnam — 建立一个具有唯一文件名的文件

说明

string tempnam ( string $dir , string $prefix )

在指定目录中建立一个具有唯一文件名的文件。如果该目录不存在，tempnam() 会在系统临时目录中生成一个文件，并返回其文件名。

参数

dir

The directory where the temporary filename will be created.

prefix

产生临时文件的前缀。

Note: Windows uses only the first three characters of prefix.

返回值

返回新的临时文件名，出错返回 FALSE。

更新日志

版本 | 说明
4.0.6 | 在 PHP 4.0.6 之前，tempnam() 函数的行为取决于系统。在 Windows 下 TMP 环境变量会越过 dir 参数，在 Linux 下 TMPDIR 环境变量优先，而在 SVR4 下总是使用 dir 参数，如果其指向的目录存在的话。如果有疑问请参考系统文档中的 tempnam(3) 函数。
4.0.3 | 本函数的行为在 4.0.3 版中改变了。也会建立一个临时文件以避免竞争情形，即有可能会在产生出作为文件名的字符串与脚本真正建立该文件之间会在文件系统中存在同名文件。注意，如果不再需要该文件则要删除此文件，不会自动删除的。

范例

Example #1 tempnam() 例子

<?php
$tmpfname = tempnam("/tmp", "FOO");

$handle = fopen($tmpfname, "w");
fwrite($handle, "writing to tempfile");
fclose($handle);

// do here something

unlink($tmpfname);
?>

注释

Note: 如果 PHP 不能在指定的 dir 参数中创建文件，则退回到系统默认值。 在 NTFS 文件系统中，同样的情况也发生在 dir 中文件数超过 65534 个的时候。

参见

  • tmpfile() - 建立一个临时文件
  • sys_get_temp_dir() - 返回用于临时文件的目录
  • unlink() - 删除文件

symlink
tmpfile
Filesystem 函数


建立一个临时文件

tempnam
touch
Filesystem 函数
PHP Manual

tmpfile

(PHP 4, PHP 5, PHP 7)

tmpfile — 建立一个临时文件

说明

resource tmpfile ( void )

以读写（w+）模式建立一个具有唯一文件名的临时文件，返回一个文件句柄。

文件会在关闭后（用 fclose()）自动被删除，或当脚本结束后。

详细信息请参考系统手册中的 tmpfile(3) 函数，以及 stdio.h 头文件。

返回值

返回一个与 fopen() 所打开返回类似的新文件句柄， 或者在失败时返回 FALSE.

范例

Example #1 tmpfile() 例子

<?php
$temp = tmpfile();
fwrite($temp, "writing to tempfile");
fseek($temp, 0);
echo fread($temp, 1024);
fclose($temp); // this removes the file
?>

以上例程会输出：

writing to tempfile

参见

  • tempnam() - 建立一个具有唯一文件名的文件
  • sys_get_temp_dir() - 返回用于临时文件的目录

tempnam
touch
Filesystem 函数


设定文件的访问和修改时间

tmpfile
umask
Filesystem 函数
PHP Manual

touch

(PHP 4, PHP 5, PHP 7)

touch — 设定文件的访问和修改时间

说明

bool touch ( string $filename [, int $time = time() [, int $atime ]] )

尝试将由 filename 给出的文件的访问和修改时间设定为给出的 time。 注意访问时间总是会被修改的，不论有几个参数。

如果文件不存在，则会被创建。

参数

filename

要设定的文件名。

time

要设定的时间。如果没有提供参数 time 则会使用当前系统的时间。

atime

如果给出了这个参数，则给定文件的访问时间会被设为 atime，否则会设置 为time。如果没有给出这两个参数，则使用当前系统时间。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.3.0 | 能够修改 Windows 下目录的最后修改时间。

范例

Example #1 touch() 例子

<?php
if (touch($filename)) {
    echo $filename . ' modification time has been changed to present time';
} else {
    echo 'Sorry, could not change modification time of ' . $filename;
}
?>

Example #2 使用 time 参数的 touch()

<?php
// This is the touch time, we'll set it to one hour in the past.
$time = time() - 3600;

// Touch the file
if (!touch('some_file.txt', $time)) {
    echo 'Whoops, something went wrong...';
} else {
    echo 'Touched file with success';
}
?>

注释

Note:

注意：不同文件系统对时间的判断方法可能是不相同的。

Warning

在 PHP 5.3.0 之前无法修改 Windows 下目录的最后修改时间。

tmpfile
umask
Filesystem 函数


改变当前的 umask

touch
unlink
Filesystem 函数
PHP Manual

umask

(PHP 4, PHP 5, PHP 7)

umask — 改变当前的 umask

说明

int umask ([ int $mask ] )

umask() 将 PHP 的 umask 设定为 mask & 0777 并返回原来的 umask。当 PHP 被作为服务器模块使用时，在每个请求结束后 umask 会被恢复。

参数

mask

The new umask.

返回值

无参数调用 umask() 会返回当前的 umask，有参数则返回原来的 umask。

范例

Example #1 umask() 例子

<?php
$old = umask(0);
chmod("/path/some_dir/some_file.txt", 0755);
umask($old);

// Checking
if ($old != umask()) {
    die('An error occured while changing back the umask');
}
?>

注释

Note:

在多线程的服务器上尽量避免使用这个函数。创建文件后要改变其权限最好还是使用 chmod()。使用 umask() 会导致并发程序和服务器发生不可预知的情况，因为它们是使用相同的 umask 的。

touch
unlink
Filesystem 函数


删除文件

umask
Inotify
Filesystem 函数
PHP Manual

unlink

(PHP 4, PHP 5, PHP 7)

unlink — 删除文件

说明

bool unlink ( string $filename [, resource $context ] )

删除 filename。和 Unix C 的 unlink() 函数相似。 发生错误时会产生一个 E_WARNING 级别的错误。

参数

filename

文件的路径。

context

Note: 在 PHP 5.0.0 中增加了对上下文（Context）的支持。有关上下文（Context）的说明参见 Streams。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.0.0 | 自 PHP 5.0.0 起 unlink() 也可以用于某些 URL 封装协议。参考支持的协议和封装协议 中的列表看哪些封装协议支持 unlink()。

范例

Example #1 基本的 unlink() 用法

<?php
$fh = fopen('test.html', 'a');
fwrite($fh, '<h1>Hello world!</h1>');
fclose($fh);

unlink('test.html');
?>

参见

  • rmdir() - 删除目录

umask
Inotify
Filesystem 函数


Inotify

  • 简介
  • 安装／配置
    • 需求
    • 安装／配置
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Inotify 函数
    • inotify_add_watch — Add a watch to an initialized inotify instance
    • inotify_init — Initialize an inotify instance
    • inotify_queue_len — Return a number upper than zero if there are pending events
    • inotify_read — Read events from an inotify instance
    • inotify_rm_watch — Remove an existing watch from an inotify instance
unlink
简介
文件系统相关扩展


简介

The inotify extension exposes the inotify functions inotify_init(), inotify_add_watch() and inotify_rm_watch().

As the C inotify_init() function returns a file descriptor, PHP's inotify_init() returns a stream resource, usable with standard stream functions, like stream_select(), stream_set_blocking() and fclose(). inotify_read() replaces the C way of reading inotify events.

Inotify
安装／配置
Inotify


安装／配置

Table of Contents

  • 需求
  • 安装／配置
  • 运行时配置
  • 资源类型
简介
需求
Inotify


需求

This extension requires Linux 2.6.13 or newer, and a recent libC.

安装／配置
安装／配置
安装／配置


安装／配置
PHP Manual

安装／配置

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/inotify.

需求
运行时配置
安装／配置
PHP Manual


运行时配置

此扩展没有在 php.ini 中定义配置指令。

安装／配置
资源类型
安装／配置


资源类型

This extension defines a stream resource returned by inotify_init().

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

Inotify constants usable with inotify_add_watch() and/or returned by inotify_read()
IN_ACCESS (integer)
File was accessed (read) (*)
IN_MODIFY (integer)
File was modified (*)
IN_ATTRIB (integer)
Metadata changed (e.g. permissions, mtime, etc.) (*)
IN_CLOSE_WRITE (integer)
File opened for writing was closed (*)
IN_CLOSE_NOWRITE (integer)
File not opened for writing was closed (*)
IN_OPEN (integer)
File was opened (*)
IN_MOVED_TO (integer)
File moved into watched directory (*)
IN_MOVED_FROM (integer)
File moved out of watched directory (*)
IN_CREATE (integer)
File or directory created in watched directory (*)
IN_DELETE (integer)
File or directory deleted in watched directory (*)
IN_DELETE_SELF (integer)
Watched file or directory was deleted
IN_MOVE_SELF (integer)
Watch file or directory was moved
IN_CLOSE (integer)
Equals to IN_CLOSE_WRITE | IN_CLOSE_NOWRITE
IN_MOVE (integer)
Equals to IN_MOVED_FROM | IN_MOVED_TO
IN_ALL_EVENTS (integer)
Bitmask of all the above constants
IN_UNMOUNT (integer)
File system containing watched object was unmounted
IN_Q_OVERFLOW (integer)
Event queue overflowed (wd is -1 for this event)
IN_IGNORED (integer)
Watch was removed (explicitly by inotify_rm_watch() or because file was removed or filesystem unmounted
IN_ISDIR (integer)
Subject of this event is a directory
IN_ONLYDIR (integer)
Only watch pathname if it is a directory (Since Linux 2.6.15)
IN_DONT_FOLLOW (integer)
Do not dereference pathname if it is a symlink (Since Linux 2.6.15)
IN_MASK_ADD (integer)
Add events to watch mask for this pathname if it already exists (instead of replacing mask).
IN_ONESHOT (integer)
Monitor pathname for one event, then remove from watch list.

Note: The events marked with an asterisk (*) above can occur for files in watched directories.

资源类型
Inotify 函数
Inotify


Inotify 函数

Table of Contents

  • inotify_add_watch — Add a watch to an initialized inotify instance
  • inotify_init — Initialize an inotify instance
  • inotify_queue_len — Return a number upper than zero if there are pending events
  • inotify_read — Read events from an inotify instance
  • inotify_rm_watch — Remove an existing watch from an inotify instance
预定义常量
inotify_add_watch
Inotify


Add a watch to an initialized inotify instance

Inotify 函数
inotify_init
Inotify 函数
PHP Manual

inotify_add_watch

(PECL inotify >= 0.1.2)

inotify_add_watch — Add a watch to an initialized inotify instance

说明

int inotify_add_watch ( resource $inotify_instance , string $pathname , int $mask )

inotify_add_watch() adds a new watch or modify an existing watch for the file or directory specified in pathname.

Using inotify_add_watch() on a watched object replaces the existing watch. Using the IN_MASK_ADD constant adds (OR) events to the existing watch.

参数

inotify_instance

inotify_init()返回的资源

pathname

File or directory to watch

mask

Events to watch for. See 预定义常量.

返回值

The return value is a unique (inotify instance wide) watch descriptor.

参见

  • inotify_init() - Initialize an inotify instance

Inotify 函数
inotify_init
Inotify 函数


Initialize an inotify instance

inotify_add_watch
inotify_queue_len
Inotify 函数
PHP Manual

inotify_init

(PECL inotify >= 0.1.2)

inotify_init — Initialize an inotify instance

说明

resource inotify_init ( void )

Initialize an inotify instance for use with inotify_add_watch()

返回值

A stream resource or FALSE on error.

范例

Example #1 Example usage of inotify

<?php
// Open an inotify instance
$fd = inotify_init();

// Watch __FILE__ for metadata changes (e.g. mtime)
$watch_descriptor = inotify_add_watch($fd, __FILE__, IN_ATTRIB);

// generate an event
touch(__FILE__);

// Read events
$events = inotify_read($fd);
print_r($events);

// The following methods allows to use inotify functions without blocking on inotify_read():

// - Using stream_select() on $fd:
$read = array($fd);
$write = null;
$except = null;
stream_select($read,$write,$except,0);

// - Using stream_set_blocking() on $fd
stream_set_blocking($fd, 0);
inotify_read($fd); // Does no block, and return false if no events are pending

// - Using inotify_queue_len() to check if event queue is not empty
$queue_len = inotify_queue_len($fd); // If > 0, inotify_read() will not block

// Stop watching __FILE__ for metadata changes
inotify_rm_watch($fd, $watch_descriptor);

// Close the inotify instance
// This may have closed all watches if this was not already done
fclose($fd);

?>

以上例程的输出类似于：

array(
  array(
    'wd' => 1,     // Equals $watch_descriptor
    'mask' => 4,   // IN_ATTRIB bit is set
    'cookie' => 0, // unique id to connect related events (e.g.
                   // IN_MOVE_FROM and IN_MOVE_TO events)
    'name' => '',  // the name of a file (e.g. if we monitored changes
                   // in a directory)
  ),
);

参见

  • inotify_add_watch() - Add a watch to an initialized inotify instance
  • inotify_rm_watch() - Remove an existing watch from an inotify instance
  • inotify_queue_len() - Return a number upper than zero if there are pending events
  • inotify_read() - Read events from an inotify instance
  • fclose() - 关闭一个已打开的文件指针

inotify_add_watch
inotify_queue_len
Inotify 函数


Return a number upper than zero if there are pending events

inotify_init
inotify_read
Inotify 函数
PHP Manual

inotify_queue_len

(PECL inotify >= 0.1.2)

inotify_queue_len — Return a number upper than zero if there are pending events

说明

int inotify_queue_len ( resource $inotify_instance )

This function allows to know if inotify_read() will block or not. If a number upper than zero is returned, there are pending events and inotify_read() will not block.

参数

inotify_instance

inotify_init()返回的资源

返回值

Returns a number upper than zero if there are pending events.

参见

  • inotify_init() - Initialize an inotify instance
  • stream_select() - Runs the equivalent of the select() system call on the given arrays of streams with a timeout specified by tv_sec and tv_usec
  • stream_set_blocking() - 为资源流设置阻塞或者阻塞模式

inotify_init
inotify_read
Inotify 函数


Read events from an inotify instance

inotify_queue_len
inotify_rm_watch
Inotify 函数
PHP Manual

inotify_read

(PECL inotify >= 0.1.2)

inotify_read — Read events from an inotify instance

说明

array inotify_read ( resource $inotify_instance )

Read inotify events from an inotify instance.

参数

inotify_instance

inotify_init()返回的资源

返回值

An array of inotify events or FALSE if no events was pending and inotify_instance is non-blocking. Each event is an array with the following keys:

  • wd is a watch descriptor returned by inotify_add_watch()
  • mask is a bit mask of events
  • cookie is a unique id to connect related events (e.g. IN_MOVE_FROM and IN_MOVE_TO)
  • name is the name of a file (e.g. if a file was modified in a watched directory)

参见

  • inotify_init() - Initialize an inotify instance
  • stream_select() - Runs the equivalent of the select() system call on the given arrays of streams with a timeout specified by tv_sec and tv_usec
  • stream_set_blocking() - 为资源流设置阻塞或者阻塞模式
  • inotify_queue_len() - Return a number upper than zero if there are pending events

inotify_queue_len
inotify_rm_watch
Inotify 函数


Remove an existing watch from an inotify instance

inotify_read
Mimetype
Inotify 函数
PHP Manual

inotify_rm_watch

(PECL inotify >= 0.1.2)

inotify_rm_watch — Remove an existing watch from an inotify instance

说明

bool inotify_rm_watch ( resource $inotify_instance , int $watch_descriptor )

inotify_rm_watch() removes the watch watch_descriptor from the inotify instance inotify_instance.

参数

inotify_instance

inotify_init()返回的资源

watch_descriptor

Watch to remove from the instance

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • inotify_init() - Initialize an inotify instance

inotify_read
Mimetype
Inotify 函数


Mimetype

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
inotify_rm_watch
简介
文件系统相关扩展


简介

Warning

This extension has been deprecated as the PECL extension Fileinfo provides the same functionality (and more) in a much cleaner way.

The functions in this module try to guess the content type and encoding of a file by looking for certain magic byte sequences at specific positions within the file. While this is not a bullet proof approach the heuristics used do a very good job.

This extension is derived from Apache mod_mime_magic, which is itself based on the file command maintained by Ian F. Darwin. See the source code for further historic and copyright information.

Mimetype
安装／配置
Mimetype


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Mimetype


安装

Warning

Mimetype extensions has been removed from PHP 5.3.0 in favor of Fileinfo.

You must compile PHP with the configure switch --with-mime-magic to get support for mime-type functions. The extension needs a copy of the simplified magic file that is distributed with the Apache httpd.

Note:

This extension is not capable of handling the fully decorated magic file that generally comes with standard Linux distro's and is supposed to be used with recent versions of file command.

Note: Note to Win32 Users

In order to use this module on a Windows environment, you must set the path to the bundled magic.mime file in your php.ini.

Example #1 Setting the path to magic.mime

mime_magic.magicfile = "$PHP_INSTALL_DIR\magic.mime"

Remember to substitute the $PHP_INSTALL_DIR for your actual path to PHP in the above example. e.g. c:\php

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Mimetype configuration options
名字 | 默认 | 可修改范围 | 更新日志
mime_magic.debug | "0" | PHP_INI_SYSTEM | Available since PHP 5.0.0.
mime_magic.magicfile | "/path/to/php/magic.mime" | PHP_INI_SYSTEM | Available since PHP 4.3.0.
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

mime_magic.debug bool

Enable/disable debugging.

mime_magic.magicfile string

The path to the magic.mime file.

安装
资源类型
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
Proctitle
Mimetype


Proctitle

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Proctitle 函数
    • setproctitle — Set the process title
    • setthreadtitle — Set the thread title
预定义常量
简介
文件系统相关扩展


简介

This extension allows changing the current process', and thread, name on Linux and *BSD systems. This is useful when using pcntl_fork() to identify running processes in process list

Proctitle
安装／配置
Proctitle


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Proctitle


需求

Nothing special.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/proctitle.

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
Proctitle 函数
Proctitle


Proctitle 函数

Table of Contents

  • setproctitle — Set the process title
  • setthreadtitle — Set the thread title
预定义常量
setproctitle
Proctitle


Set the process title

Proctitle 函数
setthreadtitle
Proctitle 函数
PHP Manual

setproctitle

(PECL proctitle >= 0.1.0)

setproctitle — Set the process title

说明

void setproctitle ( string $title )

Sets the process title of the current process.

参数

title

The title to use as the process title.

返回值

没有返回值。

范例

Example #1 setproctitle() example

Running the example below will change the process title (visible with ps a for example).

<?php
setproctitle("myscript");
?>

以上例程的输出类似于：

$ ps a
  PID TTY      STAT   TIME COMMAND
 1168 pts/3    S      0:00 myscript

参见

  • cli_set_process_title() - Sets the process title
  • pcntl_fork() - 在当前进程当前位置产生分支（子进程）。译注：fork是创建了一个子进程，父进程和子进程 都从fork的位置开始向下继续执行，不同的是父进程执行过程中，得到的fork返回值为子进程 号，而子进程得到的是0。
  • setthreadtitle() - Set the thread title
Proctitle 函数
setthreadtitle
Proctitle 函数


Set the thread title

setproctitle
xattr
Proctitle 函数
PHP Manual

setthreadtitle

(PECL proctitle >= 0.1.2)

setthreadtitle — Set the thread title

说明

bool setthreadtitle ( string $title )

Sets the thread title.

参数

title

The title to use as the thread title.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 setthreadtitle() example

Running the example below will change the thread title (visible with ps c for example).

<?php
setthreadtitle("myscript");
?>

以上例程的输出类似于：

$ ps c
  PID TTY      STAT   TIME COMMAND
 1178 pts/3    S      0:00 myscript

参见

  • pcntl_fork() - 在当前进程当前位置产生分支（子进程）。译注：fork是创建了一个子进程，父进程和子进程 都从fork的位置开始向下继续执行，不同的是父进程执行过程中，得到的fork返回值为子进程 号，而子进程得到的是0。
  • setproctitle() - Set the process title
setproctitle
xattr
Proctitle 函数


xattr

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • xattr 函数
    • xattr_get — Get an extended attribute
    • xattr_list — Get a list of extended attributes
    • xattr_remove — Remove an extended attribute
    • xattr_set — Set an extended attribute
    • xattr_supported — Check if filesystem supports extended attributes
setthreadtitle
简介
文件系统相关扩展


简介

The xattr extension allows for the manipulation of extended attributes on a filesystem.

xattr
安装／配置
xattr


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
xattr


需求

To use xattr, you will need libattr installed. It is available at » http://oss.sgi.com/projects/xfs/.

Note:

These functions only work on filesystems that support extended attributes, and have them enabled at mount time. Some common filesystems that support extended attributes are ext2, ext3, reiserfs, jfs, and xfs.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/xattr.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

XATTR_ROOT (integer)
Set attribute in root (trusted) namespace. Requires root privileges.
XATTR_DONTFOLLOW (integer)
Do not follow the symbolic link but operate on symbolic link itself.
XATTR_CREATE (integer)
Function will fail if extended attribute already exists.
XATTR_REPLACE (integer)
Function will fail if extended attribute doesn't exist.
资源类型
xattr 函数
xattr


xattr 函数

Table of Contents

  • xattr_get — Get an extended attribute
  • xattr_list — Get a list of extended attributes
  • xattr_remove — Remove an extended attribute
  • xattr_set — Set an extended attribute
  • xattr_supported — Check if filesystem supports extended attributes
预定义常量
xattr_get
xattr


Get an extended attribute

xattr 函数
xattr_list
xattr 函数
PHP Manual

xattr_get

(PECL xattr >= 0.9.0)

xattr_get — Get an extended attribute

说明

string xattr_get ( string $filename , string $name [, int $flags = 0 ] )

This function gets the value of an extended attribute of a file.

扩展的属性有两种 不同的命名空间：user 和 root。user 命名空间对所有用户均有效，而 root 命名空间仅对拥有 root 权限的用户有效。 xattr 默认在 user 命名空间上操作，但可使用 flags 参数进行更改。

参数

filename

The file from which we get the attribute.

name

The name of the attribute.

flags

Supported xattr flags
XATTR_DONTFOLLOW | Do not follow the symbolic link but operate on symbolic link itself.
XATTR_ROOT | Set attribute in root (trusted) namespace. Requires root privileges.

返回值

Returns a string containing the value or FALSE if the attribute doesn't exist.

范例

Example #1 Checks if system administrator has signed the file

<?php
$file = '/usr/local/sbin/some_binary';
$signature = xattr_get($file, 'Root signature', XATTR_ROOT);

/* ... check if $signature is valid ... */

?>

参见

  • xattr_list() - Get a list of extended attributes
  • xattr_set() - Set an extended attribute
  • xattr_remove() - Remove an extended attribute

xattr 函数
xattr_list
xattr 函数


Get a list of extended attributes

xattr_get
xattr_remove
xattr 函数
PHP Manual

xattr_list

(PECL xattr >= 0.9.0)

xattr_list — Get a list of extended attributes

说明

array xattr_list ( string $filename [, int $flags = 0 ] )

This functions gets a list of names of extended attributes of a file.

扩展的属性有两种 不同的命名空间：user 和 root。user 命名空间对所有用户均有效，而 root 命名空间仅对拥有 root 权限的用户有效。 xattr 默认在 user 命名空间上操作，但可使用 flags 参数进行更改。

参数

filename

The path of the file.

flags

Supported xattr flags
XATTR_DONTFOLLOW | Do not follow the symbolic link but operate on symbolic link itself.
XATTR_ROOT | Set attribute in root (trusted) namespace. Requires root privileges.

返回值

This function returns an array with names of extended attributes.

范例

Example #1 Prints names of all extended attributes of file

<?php
$file = 'some_file';
$root_attributes = xattr_list($file, XATTR_ROOT);
$user_attributes = xattr_list($file);

echo "Root attributes: \n";
foreach ($root_attributes as $attr_name) {
    printf("%s\n", $attr_name);
}

echo "\n User attributes: \n";
foreach ($attributes as $attr_name) {
    printf("%s\n", $attr_name);
}

?>

参见

  • xattr_get() - Get an extended attribute

xattr_get
xattr_remove
xattr 函数


Remove an extended attribute

xattr_list
xattr_set
xattr 函数
PHP Manual

xattr_remove

(PECL xattr >= 0.9.0)

xattr_remove — Remove an extended attribute

说明

bool xattr_remove ( string $filename , string $name [, int $flags = 0 ] )

This function removes an extended attribute of a file.

扩展的属性有两种 不同的命名空间：user 和 root。user 命名空间对所有用户均有效，而 root 命名空间仅对拥有 root 权限的用户有效。 xattr 默认在 user 命名空间上操作，但可使用 flags 参数进行更改。

参数

filename

The file from which we remove the attribute.

name

The name of the attribute to remove.

flags

Supported xattr flags
XATTR_DONTFOLLOW | Do not follow the symbolic link but operate on symbolic link itself.
XATTR_ROOT | Set attribute in root (trusted) namespace. Requires root privileges.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Removes all extended attributes of a file

<?php
$file = 'some_file';
$attributes = xattr_list($file);

foreach ($attributes as $attr_name) {
    xattr_remove($file, $attr_name);
}
?>

参见

  • xattr_list() - Get a list of extended attributes
  • xattr_set() - Set an extended attribute
  • xattr_get() - Get an extended attribute

xattr_list
xattr_set
xattr 函数


Set an extended attribute

xattr_remove
xattr_supported
xattr 函数
PHP Manual

xattr_set

(PECL xattr >= 0.9.0)

xattr_set — Set an extended attribute

说明

bool xattr_set ( string $filename , string $name , string $value [, int $flags = 0 ] )

This function sets the value of an extended attribute of a file.

扩展的属性有两种 不同的命名空间：user 和 root。user 命名空间对所有用户均有效，而 root 命名空间仅对拥有 root 权限的用户有效。 xattr 默认在 user 命名空间上操作，但可使用 flags 参数进行更改。

参数

filename

The file in which we set the attribute.

name

The name of the extended attribute. This attribute will be created if it doesn't exist or replaced otherwise. You can change this behaviour by using the flags parameter.

value

The value of the attribute.

flags

Supported xattr flags
XATTR_CREATE | Function will fail if extended attribute already exists.
XATTR_REPLACE | Function will fail if extended attribute doesn't exist.
XATTR_DONTFOLLOW | Do not follow the symbolic link but operate on symbolic link itself.
XATTR_ROOT | Set attribute in root (trusted) namespace. Requires root privileges.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Sets extended attributes on .wav file

<?php
$file = 'my_favourite_song.wav';
xattr_set($file, 'Artist', 'Someone');
xattr_set($file, 'My ranking', 'Good');
xattr_set($file, 'Listen count', '34');

/* ... other code ... */

printf("You've played this song %d times", xattr_get($file, 'Listen count'));
?>

参见

  • xattr_get() - Get an extended attribute
  • xattr_remove() - Remove an extended attribute

xattr_remove
xattr_supported
xattr 函数


Check if filesystem supports extended attributes

xattr_set
xdiff
xattr 函数
PHP Manual

xattr_supported

(PECL xattr >= 1.0.0)

xattr_supported — Check if filesystem supports extended attributes

说明

bool xattr_supported ( string $filename [, int $flags = 0 ] )

This functions checks if the filesystem holding the given file supports extended attributes. Read access to the file is required.

参数

filename

The path of the tested file.

flags

Supported xattr flags
XATTR_DONTFOLLOW Do not follow the symbolic link but operate on symbolic link itself.

返回值

This function returns TRUE if filesystem supports extended attributes, FALSE if it doesn't and NULL if it can't be determined (for example wrong path or lack of permissions to file).

范例

Example #1 xattr_supported() example

The following code checks if we can use extended attributes.

<?php
$file = 'some_file';

if (xattr_supported($file)) {
    /* ... make use of some xattr_* functions ... */
}

?>

参见

  • xattr_get() - Get an extended attribute
  • xattr_list() - Get a list of extended attributes

xattr_set
xdiff
xattr 函数


xdiff

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • xdiff 函数
    • xdiff_file_bdiff_size — Read a size of file created by applying a binary diff
    • xdiff_file_bdiff — Make binary diff of two files
    • xdiff_file_bpatch — Patch a file with a binary diff
    • xdiff_file_diff_binary — Alias of xdiff_file_bdiff
    • xdiff_file_diff — Make unified diff of two files
    • xdiff_file_merge3 — Merge 3 files into one
    • xdiff_file_patch_binary — Alias of xdiff_file_bpatch
    • xdiff_file_patch — Patch a file with an unified diff
    • xdiff_file_rabdiff — Make binary diff of two files using the Rabin's polynomial fingerprinting algorithm
    • xdiff_string_bdiff_size — Read a size of file created by applying a binary diff
    • xdiff_string_bdiff — Make binary diff of two strings
    • xdiff_string_bpatch — Patch a string with a binary diff
    • xdiff_string_diff_binary — Alias of xdiff_string_bdiff
    • xdiff_string_diff — Make unified diff of two strings
    • xdiff_string_merge3 — Merge 3 strings into one
    • xdiff_string_patch_binary — Alias of xdiff_string_bpatch
    • xdiff_string_patch — Patch a string with an unified diff
    • xdiff_string_rabdiff — Make binary diff of two strings using the Rabin's polynomial fingerprinting algorithm
xattr_supported
简介
文件系统相关扩展


简介

xdiff extension enables you to create and apply patch files containing differences between different revisions of files.

This extension supports two modes of operation - on strings and on files, as well as two different patch formats - unified and binary. Unified patches are excellent for text files as they are human-readable and easy to review. For binary files like archives or images, binary patches will be adequate choice as they are binary safe and handle non-printable characters well.

Starting from version 1.5.0 there are two different sets of functions for generating binary patches. New functions - xdiff_string_rabdiff() and xdiff_file_rabdiff() generate output compatible with older functions but are typically faster and generate smaller results. For more details about methods of generating binary patches and differences between them, please check » libxdiff website.

This extension uses libxdiff to implement these functions. Please see » http://www.xmailserver.org/xdiff-lib.html for more information.

xdiff
安装／配置
xdiff


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
xdiff


需求

To use xdiff, you will need libxdiff installed, available on the libxdiff homepage » http://www.xmailserver.org/xdiff-lib.html.

Note:

You'll need at least libxdiff 0.7 for these functions to be aware of memory_limit.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/xdiff.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

XDIFF_PATCH_NORMAL (integer)
This flag indicates that xdiff_string_patch() and xdiff_file_patch() functions should create result by applying patch to original content thus creating newer version of file. This is the default mode of operation.
XDIFF_PATCH_REVERSE (integer)
This flag indicated that xdiff_string_patch() and xdiff_file_patch() functions should create result by reversing patch changed from newer content thus creating original version.
资源类型
xdiff 函数
xdiff


xdiff 函数

Table of Contents

  • xdiff_file_bdiff_size — Read a size of file created by applying a binary diff
  • xdiff_file_bdiff — Make binary diff of two files
  • xdiff_file_bpatch — Patch a file with a binary diff
  • xdiff_file_diff_binary — Alias of xdiff_file_bdiff
  • xdiff_file_diff — Make unified diff of two files
  • xdiff_file_merge3 — Merge 3 files into one
  • xdiff_file_patch_binary — Alias of xdiff_file_bpatch
  • xdiff_file_patch — Patch a file with an unified diff
  • xdiff_file_rabdiff — Make binary diff of two files using the Rabin's polynomial fingerprinting algorithm
  • xdiff_string_bdiff_size — Read a size of file created by applying a binary diff
  • xdiff_string_bdiff — Make binary diff of two strings
  • xdiff_string_bpatch — Patch a string with a binary diff
  • xdiff_string_diff_binary — Alias of xdiff_string_bdiff
  • xdiff_string_diff — Make unified diff of two strings
  • xdiff_string_merge3 — Merge 3 strings into one
  • xdiff_string_patch_binary — Alias of xdiff_string_bpatch
  • xdiff_string_patch — Patch a string with an unified diff
  • xdiff_string_rabdiff — Make binary diff of two strings using the Rabin's polynomial fingerprinting algorithm
预定义常量
xdiff_file_bdiff_size
xdiff


Read a size of file created by applying a binary diff

xdiff 函数
xdiff_file_bdiff
xdiff 函数
PHP Manual

xdiff_file_bdiff_size

(PECL xdiff >= 1.5.0)

xdiff_file_bdiff_size — Read a size of file created by applying a binary diff

说明

int xdiff_file_bdiff_size ( string $file )

Returns a size of a result file that would be created after applying binary patch from file file to the original file.

参数

file

The path to the binary patch created by xdiff_string_bdiff() or xdiff_string_rabdiff() function.

返回值

Returns the size of file that would be created.

范例

Example #1 xdiff_file_bdiff_size() example

The following code applies reads a size of file that would be created after applying a binary diff.

<?php
$length = xdiff_string_bdiff_size('file.bdiff');
echo "Resulting file will be $length bytes long";
?>

参见

  • xdiff_file_bdiff() - Make binary diff of two files
  • xdiff_file_rabdiff() - Make binary diff of two files using the Rabin's polynomial fingerprinting algorithm
  • xdiff_file_bpatch() - Patch a file with a binary diff

xdiff 函数
xdiff_file_bdiff
xdiff 函数


Make binary diff of two files

xdiff_file_bdiff_size
xdiff_file_bpatch
xdiff 函数
PHP Manual

xdiff_file_bdiff

(PECL xdiff >= 1.5.0)

xdiff_file_bdiff — Make binary diff of two files

说明

bool xdiff_file_bdiff ( string $old_file , string $new_file , string $dest )

Makes a binary diff of two files and stores the result in a patch file. This function works with both text and binary files. Resulting patch file can be later applied using xdiff_file_bpatch()/xdiff_string_bpatch().

参数

old_file

Path to the first file. This file acts as "old" file.

new_file

Path to the second file. This file acts as "new" file.

dest

Path of the resulting patch file. Resulting file contains differences between "old" and "new" files. It is in binary format and is human-unreadable.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 xdiff_file_bdiff() example

The following code makes binary diff of two archives.

<?php
$old_version = 'my_script_1.0.tgz';
$new_version = 'my_script_1.1.tgz';

xdiff_file_bdiff($old_version, $new_version, 'my_script.bdiff');
?>

注释

Note:

Both files will be loaded into memory so ensure that your memory_limit is set high enough.

参见

  • xdiff_file_bpatch() - Patch a file with a binary diff

xdiff_file_bdiff_size
xdiff_file_bpatch
xdiff 函数


Patch a file with a binary diff

xdiff_file_bdiff
xdiff_file_diff_binary
xdiff 函数
PHP Manual

xdiff_file_bpatch

(PECL xdiff >= 1.5.0)

xdiff_file_bpatch — Patch a file with a binary diff

说明

bool xdiff_file_bpatch ( string $file , string $patch , string $dest )

Patches a file with a binary patch and stores the result in a file dest. This function accepts patches created both via xdiff_file_bdiff() and xdiff_file_rabdiff() functions or their string counterparts.

参数

file

The original file.

patch

The binary patch file.

dest

Path of the resulting file.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 xdiff_file_bpatch() example

The following code applies binary diff to a file.

<?php
$old_version = 'archive-1.0.tgz';
$patch = 'archive.bpatch';

$result = xdiff_file_bpatch($old_version, $patch, 'archive-1.1.tgz');
if ($result) {
   echo "File patched";
} else {
   echo "File couldn't be patched";
}

?>

注释

Note:

Both files (file and patch) will be loaded into memory so ensure that your memory_limit is set high enough.

参见

  • xdiff_file_bdiff() - Make binary diff of two files
  • xdiff_file_rabdiff() - Make binary diff of two files using the Rabin's polynomial fingerprinting algorithm

xdiff_file_bdiff
xdiff_file_diff_binary
xdiff 函数


Alias of xdiff_file_bdiff

xdiff_file_bpatch
xdiff_file_diff
xdiff 函数
PHP Manual

xdiff_file_diff_binary

(PECL xdiff >= 0.2.0)

xdiff_file_diff_binary — Alias of xdiff_file_bdiff

说明

bool xdiff_file_diff_binary ( string $old_file , string $new_file , string $dest )

Makes a binary diff of two files and stores the result in a patch file. This function works with both text and binary files. Resulting patch file can be later applied using xdiff_file_bpatch().

Starting with version 1.5.0 this function is an alias of xdiff_file_bdiff().

参数

old_file

Path to the first file. This file acts as "old" file.

new_file

Path to the second file. This file acts as "new" file.

dest

Path of the resulting patch file. Resulting file contains differences between "old" and "new" files. It is in binary format and is human-unreadable.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 xdiff_file_diff_binary() example

The following code makes binary diff of two archives.

<?php
$old_version = 'my_script_1.0.tgz';
$new_version = 'my_script_1.1.tgz';

xdiff_file_diff_binary($old_version, $new_version, 'my_script.bdiff');
?>

注释

Note:

Both files will be loaded into memory so ensure that your memory_limit is set high enough.

参见

  • xdiff_file_bdiff() - Make binary diff of two files
  • xdiff_file_bpatch() - Patch a file with a binary diff

xdiff_file_bpatch
xdiff_file_diff
xdiff 函数


Make unified diff of two files

xdiff_file_diff_binary
xdiff_file_merge3
xdiff 函数
PHP Manual

xdiff_file_diff

(PECL xdiff >= 0.2.0)

xdiff_file_diff — Make unified diff of two files

说明

bool xdiff_file_diff ( string $old_file , string $new_file , string $dest [, int $context = 3 [, bool $minimal = false ]] )

Makes an unified diff containing differences between old_file and new_file and stores it in dest file. The resulting file is human-readable. An optional context parameter specifies how many lines of context should be added around each change. Setting minimal parameter to true will result in outputting the shortest patch file possible (can take a long time).

参数

old_file

Path to the first file. This file acts as "old" file.

new_file

Path to the second file. This file acts as "new" file.

dest

Path of the resulting patch file.

context

Indicates how many lines of context you want to include in diff result.

minimal

Set this parameter to TRUE if you want to minimalize size of the result (can take a long time).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 xdiff_file_diff() example

The following code makes unified diff of two php files with context length of 2.

<?php
$old_version = 'my_script.php';
$new_version = 'my_new_script.php';

xdiff_file_diff($old_version, $new_version, 'my_script.diff', 2);
?>

注释

Note:

This function doesn't work well with binary files. To make diff of binary files use xdiff_file_bdiff()/xdiff_file_rabdiff() function.

参见

  • xdiff_file_patch() - Patch a file with an unified diff

xdiff_file_diff_binary
xdiff_file_merge3
xdiff 函数


Merge 3 files into one

xdiff_file_diff
xdiff_file_patch_binary
xdiff 函数
PHP Manual

xdiff_file_merge3

(PECL xdiff >= 0.2.0)

xdiff_file_merge3 — Merge 3 files into one

说明

mixed xdiff_file_merge3 ( string $old_file , string $new_file1 , string $new_file2 , string $dest )

Merges three files into one and stores the result in a file dest. The old_file is an original version while new_file1 and new_file2 are modified versions of an original.

参数

old_file

Path to the first file. It acts as "old" file.

new_file1

Path to the second file. It acts as modified version of old_file.

new_file2

Path to the third file. It acts as modified version of old_file.

dest

Path of the resulting file, containing merged changed from both new_file1 and new_file2.

返回值

Returns TRUE if merge was successful, string with rejected chunks if it was not or FALSE if an internal error happened.

范例

Example #1 xdiff_file_merge3() example

The following code merges three files into one.

<?php
$old_version = 'original_script.php';
$fix1 = 'script_with_fix1.php';
$fix2 = 'script_with_fix2.php';

$errors = xdiff_file_merge3($old_version, $fix1, $fix2, 'fixed_script.php');
if (is_string($errors)) {
    echo "Rejects:\n";
    echo $errors;
}
?>

参见

  • xdiff_string_merge3() - Merge 3 strings into one

xdiff_file_diff
xdiff_file_patch_binary
xdiff 函数


Alias of xdiff_file_bpatch

xdiff_file_merge3
xdiff_file_patch
xdiff 函数
PHP Manual

xdiff_file_patch_binary

(PECL xdiff >= 0.2.0)

xdiff_file_patch_binary — Alias of xdiff_file_bpatch

说明

bool xdiff_file_patch_binary ( string $file , string $patch , string $dest )

Patches a file with a binary patch and stores the result in a file dest. This function accepts patches created both via xdiff_file_bdiff() or xdiff_file_rabdiff() functions or their string counterparts.

Starting with version 1.5.0 this function is an alias of xdiff_file_bpatch().

参数

file

The original file.

patch

The binary patch file.

dest

Path of the resulting file.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 xdiff_file_patch_binary() example

The following code applies binary diff to a file.

<?php
$old_version = 'archive-1.0.tgz';
$patch = 'archive.bpatch';

$result = xdiff_file_patch_binary($old_version, $patch, 'archive-1.1.tgz');
if ($result) {
   echo "File patched";
} else {
   echo "File couldn't be patched";
}

?>

注释

Note:

Both files (file and patch) will be loaded into memory so ensure that your memory_limit is set high enough.

参见

  • xdiff_string_patch_binary() - Alias of xdiff_string_bpatch

xdiff_file_merge3
xdiff_file_patch
xdiff 函数


Patch a file with an unified diff

xdiff_file_patch_binary
xdiff_file_rabdiff
xdiff 函数
PHP Manual

xdiff_file_patch

(PECL xdiff >= 0.2.0)

xdiff_file_patch — Patch a file with an unified diff

说明

mixed xdiff_file_patch ( string $file , string $patch , string $dest [, int $flags = DIFF_PATCH_NORMAL ] )

Patches a file with a patch and stores the result in a file. patch has to be an unified diff created by xdiff_file_diff()/xdiff_string_diff() function. An optional flags parameter specifies mode of operation.

参数

file

The original file.

patch

The unified patch file. It has to be created using xdiff_string_diff(), xdiff_file_diff() functions or compatible tools.

dest

Path of the resulting file.

flags

Can be either XDIFF_PATCH_NORMAL (default mode, normal patch) or XDIFF_PATCH_REVERSE (reversed patch).

Starting from version 1.5.0, you can also use binary OR to enable XDIFF_PATCH_IGNORESPACE flag.

返回值

Returns FALSE if an internal error happened, string with rejected chunks if patch couldn't be applied or TRUE if patch has been successfully applied.

范例

Example #1 xdiff_file_patch() example

The following code applies unified diff to a file.

<?php
$old_version = 'my_script-1.0.php';
$patch = 'my_script.patch';

$errors = xdiff_file_patch($old_version, $patch, 'my_script-1.1.php');
if (is_string($errors)) {
   echo "Rejects:\n";
   echo $errors;
}

?>

Example #2 Patch reversing example

The following code reverses a patch.

<?php
$new_version = 'my_script-1.1.php';
$patch = 'my_script.patch';

$errors = xdiff_file_patch($new_version, $patch, 'my_script-1.0.php', XDIFF_PATCH_REVERSE);
if (is_string($errors)) {
   echo "Rejects:\n";
   echo $errors;
}

?>

参见

  • xdiff_file_diff() - Make unified diff of two files

xdiff_file_patch_binary
xdiff_file_rabdiff
xdiff 函数


Make binary diff of two files using the Rabin's polynomial fingerprinting algorithm

xdiff_file_patch
xdiff_string_bdiff_size
xdiff 函数
PHP Manual

xdiff_file_rabdiff

(PECL xdiff >= 1.5.0)

xdiff_file_rabdiff — Make binary diff of two files using the Rabin's polynomial fingerprinting algorithm

说明

bool xdiff_file_rabdiff ( string $old_file , string $new_file , string $dest )

Makes a binary diff of two files and stores the result in a patch file. The difference between this function and xdiff_file_bdiff() is different algorithm used which should result in faster execution and smaller diff produced. This function works with both text and binary files. Resulting patch file can be later applied using xdiff_file_bpatch()/xdiff_string_bpatch().

For more details about differences between algorithm used please check » libxdiff website.

参数

old_file

Path to the first file. This file acts as "old" file.

new_file

Path to the second file. This file acts as "new" file.

dest

Path of the resulting patch file. Resulting file contains differences between "old" and "new" files. It is in binary format and is human-unreadable.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 xdiff_file_rabdiff() example

The following code makes binary diff of two archives.

<?php
$old_version = 'my_script_1.0.tgz';
$new_version = 'my_script_1.1.tgz';

xdiff_file_rabdiff($old_version, $new_version, 'my_script.bdiff');
?>

注释

Note:

Both files will be loaded into memory so ensure that your memory_limit is set high enough.

参见

  • xdiff_file_bpatch() - Patch a file with a binary diff

xdiff_file_patch
xdiff_string_bdiff_size
xdiff 函数


Read a size of file created by applying a binary diff

xdiff_file_rabdiff
xdiff_string_bdiff
xdiff 函数
PHP Manual

xdiff_string_bdiff_size

(PECL xdiff >= 1.5.0)

xdiff_string_bdiff_size — Read a size of file created by applying a binary diff

说明

int xdiff_string_bdiff_size ( string $patch )

Returns a size of a result file that would be created after applying binary patch to the original file.

参数

patch

The binary patch created by xdiff_string_bdiff() or xdiff_string_rabdiff() function.

返回值

Returns the size of file that would be created.

范例

Example #1 xdiff_string_bdiff_size() example

The following code applies reads a size of file that would be created after applying a binary diff.

<?php
$binary_patch = file_get_contents('file.bdiff');
$length = xdiff_string_bdiff_size($binary_patch);
echo "Resulting file will be $length bytes long";
?>

参见

  • xdiff_string_bdiff() - Make binary diff of two strings
  • xdiff_string_rabdiff() - Make binary diff of two strings using the Rabin's polynomial fingerprinting algorithm
  • xdiff_string_bpatch() - Patch a string with a binary diff

xdiff_file_rabdiff
xdiff_string_bdiff
xdiff 函数


Make binary diff of two strings

xdiff_string_bdiff_size
xdiff_string_bpatch
xdiff 函数
PHP Manual

xdiff_string_bdiff

(PECL xdiff >= 1.5.0)

xdiff_string_bdiff — Make binary diff of two strings

说明

string xdiff_string_bdiff ( string $old_data , string $new_data )

Makes a binary diff of two strings and returns the result. This function works with both text and binary data. Resulting patch can be later applied using xdiff_string_bpatch()/xdiff_file_bpatch().

参数

old_data

First string with binary data. It acts as "old" data.

new_data

Second string with binary data. It acts as "new" data.

返回值

Returns string with binary diff containing differences between "old" and "new" data or FALSE if an internal error occurred.

参见

  • xdiff_string_bpatch() - Patch a string with a binary diff

xdiff_string_bdiff_size
xdiff_string_bpatch
xdiff 函数


Patch a string with a binary diff

xdiff_string_bdiff
xdiff_string_diff_binary
xdiff 函数
PHP Manual

xdiff_string_bpatch

(PECL xdiff >= 1.5.0)

xdiff_string_bpatch — Patch a string with a binary diff

说明

string xdiff_string_bpatch ( string $str , string $patch )

Patches a string str with a binary patch. This function accepts patches created both via xdiff_string_bdiff() and xdiff_string_rabdiff() functions or their file counterparts.

参数

str

The original binary string.

patch

The binary patch string.

返回值

Returns the patched string, or FALSE on error.

参见

  • xdiff_string_bdiff() - Make binary diff of two strings
  • xdiff_string_rabdiff() - Make binary diff of two strings using the Rabin's polynomial fingerprinting algorithm

xdiff_string_bdiff
xdiff_string_diff_binary
xdiff 函数


Alias of xdiff_string_bdiff

xdiff_string_bpatch
xdiff_string_diff
xdiff 函数
PHP Manual

xdiff_string_diff_binary

(PECL xdiff >= 0.2.0)

xdiff_string_diff_binary — Alias of xdiff_string_bdiff

说明

string xdiff_string_bdiff ( string $old_data , string $new_data )

Makes a binary diff of two strings and returns the result. This function works with both text and binary data. Resulting patch can be later applied using xdiff_string_bpatch()/xdiff_file_bpatch().

Starting with version 1.5.0 this function is an alias of xdiff_string_bdiff().

参数

old_data

First string with binary data. It acts as "old" data.

new_data

Second string with binary data. It acts as "new" data.

返回值

Returns string with result or FALSE if an internal error happened.

参见

  • xdiff_string_bdiff() - Make binary diff of two strings
  • xdiff_string_bpatch() - Patch a string with a binary diff

xdiff_string_bpatch
xdiff_string_diff
xdiff 函数


Make unified diff of two strings

xdiff_string_diff_binary
xdiff_string_merge3
xdiff 函数
PHP Manual

xdiff_string_diff

(PECL xdiff >= 0.2.0)

xdiff_string_diff — Make unified diff of two strings

说明

string xdiff_string_diff ( string $old_data , string $new_data [, int $context = 3 [, bool $minimal = false ]] )

Makes an unified diff containing differences between old_data string and new_data string and returns it. The resulting diff is human-readable. An optional context parameter specifies how many lines of context should be added around each change. Setting minimal parameter to true will result in outputting the shortest patch file possible (can take a long time).

参数

old_data

First string with data. It acts as "old" data.

new_data

Second string with data. It acts as "new" data.

context

Indicates how many lines of context you want to include in the diff result.

minimal

Set this parameter to TRUE if you want to minimalize the size of the result (can take a long time).

返回值

Returns string with resulting diff or FALSE if an internal error happened.

范例

Example #1 xdiff_string_diff() example

The following code makes unified diff of two articles.

<?php
$old_article = file_get_contents('./old_article.txt');
$new_article = $_REQUEST['article']; /* Let's say that someone pasted a new article to html form */

$diff = xdiff_string_diff($old_article, $new_article, 1);
if (is_string($diff)) {
    echo "Differences between two articles:\n";
    echo $diff;
}

?>

注释

Note:

This function doesn't work well with binary strings. To make diff of binary strings use xdiff_string_bdiff()/xdiff_string_rabdiff().

参见

  • xdiff_string_patch() - Patch a string with an unified diff

xdiff_string_diff_binary
xdiff_string_merge3
xdiff 函数


Merge 3 strings into one

xdiff_string_diff
xdiff_string_patch_binary
xdiff 函数
PHP Manual

xdiff_string_merge3

(PECL xdiff >= 0.2.0)

xdiff_string_merge3 — Merge 3 strings into one

说明

mixed xdiff_string_merge3 ( string $old_data , string $new_data1 , string $new_data2 [, string &$error ] )

Merges three strings into one and returns the result. The old_data is an original version of data while new_data1 and new_data2 are modified versions of an original. An optional error is used to pass any rejected parts during merging process.

参数

old_data

First string with data. It acts as "old" data.

new_data1

Second string with data. It acts as modified version of old_data.

new_data2

Third string with data. It acts as modified version of old_data.

error

If provided then rejected parts are stored inside this variable.

返回值

Returns the merged string, FALSE if an internal error happened, or TRUE if merged string is empty.

参见

  • xdiff_file_merge3() - Merge 3 files into one

xdiff_string_diff
xdiff_string_patch_binary
xdiff 函数


Alias of xdiff_string_bpatch

xdiff_string_merge3
xdiff_string_patch
xdiff 函数
PHP Manual

xdiff_string_patch_binary

(PECL xdiff >= 0.2.0)

xdiff_string_patch_binary — Alias of xdiff_string_bpatch

说明

string xdiff_string_patch_binary ( string $str , string $patch )

Patches a string str with a binary patch. This function accepts patches created both via xdiff_string_bdiff() and xdiff_string_rabdiff() functions or their file counterparts.

Starting with version 1.5.0 this function is an alias of xdiff_string_bpatch().

参数

str

The original binary string.

patch

The binary patch string.

返回值

Returns the patched string, or FALSE on error.

参见

  • xdiff_string_bpatch() - Patch a string with a binary diff
  • xdiff_string_bdiff() - Make binary diff of two strings
  • xdiff_string_rabdiff() - Make binary diff of two strings using the Rabin's polynomial fingerprinting algorithm

xdiff_string_merge3
xdiff_string_patch
xdiff 函数


Patch a string with an unified diff

xdiff_string_patch_binary
xdiff_string_rabdiff
xdiff 函数
PHP Manual

xdiff_string_patch

(PECL xdiff >= 0.2.0)

xdiff_string_patch — Patch a string with an unified diff

说明

string xdiff_string_patch ( string $str , string $patch [, int $flags [, string &$error ]] )

Patches a str string with an unified patch in patch parameter and returns the result. patch has to be an unified diff created by xdiff_file_diff()/xdiff_string_diff() function. An optional flags parameter specifies mode of operation. Any rejected parts of the patch will be stored inside error variable if it is provided.

参数

str

The original string.

patch

The unified patch string. It has to be created using xdiff_string_diff(), xdiff_file_diff() functions or compatible tools.

flags

flags can be either XDIFF_PATCH_NORMAL (default mode, normal patch) or XDIFF_PATCH_REVERSE (reversed patch).

Starting from version 1.5.0, you can also use binary OR to enable XDIFF_PATCH_IGNORESPACE flag.

error

If provided then rejected parts are stored inside this variable.

返回值

Returns the patched string, or FALSE on error.

范例

Example #1 xdiff_string_patch() example

The following code applies changes to some article.

<?php
$old_article = file_get_contents('./old_article.txt');
$diff = $_SERVER['patch']; /* Let's say that someone pasted a patch to html form */

$errors = '';

$new_article = xdiff_string_patch($old_article, $diff, XDIFF_PATCH_NORMAL, $errors);
if (is_string($new_article)) {
    echo "New article:\n";
    echo $new_article;
}

if (strlen($errors)) {
    echo "Rejects: \n";
    echo $errors;
}

?>

参见

  • xdiff_string_diff() - Make unified diff of two strings

xdiff_string_patch_binary
xdiff_string_rabdiff
xdiff 函数


Make binary diff of two strings using the Rabin's polynomial fingerprinting algorithm

xdiff_string_patch
国际化与字符编码支持
xdiff 函数
PHP Manual

xdiff_string_rabdiff

(PECL xdiff >= 1.5.0)

xdiff_string_rabdiff — Make binary diff of two strings using the Rabin's polynomial fingerprinting algorithm

说明

string xdiff_string_bdiff ( string $old_data , string $new_data )

Makes a binary diff of two strings and returns the result. The difference between this function and xdiff_string_bdiff() is different algorithm used which should result in faster execution and smaller diff produced. This function works with both text and binary data. Resulting patch can be later applied using xdiff_string_bpatch()/xdiff_file_bpatch().

For more details about differences between algorithm used please check » libxdiff website.

参数

old_data

First string with binary data. It acts as "old" data.

new_data

Second string with binary data. It acts as "new" data.

返回值

Returns string with binary diff containing differences between "old" and "new" data or FALSE if an internal error occurred.

参见

  • xdiff_string_bpatch() - Patch a string with a binary diff

xdiff_string_patch
国际化与字符编码支持
xdiff 函数


国际化与字符编码支持

  • Enchant — Enchant spelling library
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Enchant 函数
  • FriBiDi
    • 简介
    • 安装／配置
    • 预定义常量
    • FriBiDi 函数
  • Gender — Determine gender of firstnames
    • 简介
    • 安装／配置
    • 范例
    • Gender\Gender — The Gender\Gender class
  • Gettext
    • 简介
    • 安装／配置
    • 预定义常量
    • Gettext 函数
  • iconv
    • 简介
    • 安装／配置
    • 预定义常量
    • iconv 函数
  • intl — Internationalization Functions
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Collator — The Collator class
    • NumberFormatter — The NumberFormatter class
    • Locale — The Locale class
    • Normalizer — The Normalizer class
    • MessageFormatter — The MessageFormatter class
    • IntlCalendar — The IntlCalendar class
    • IntlTimeZone — The IntlTimeZone class
    • IntlDateFormatter — The IntlDateFormatter class
    • ResourceBundle — The ResourceBundle class
    • Spoofchecker — The Spoofchecker class
    • Transliterator — The Transliterator class
    • IntlBreakIterator — The IntlBreakIterator class
    • IntlRuleBasedBreakIterator — The IntlRuleBasedBreakIterator class
    • IntlCodePointBreakIterator — The IntlCodePointBreakIterator class
    • IntlPartsIterator — The IntlPartsIterator class
    • UConverter — The UConverter class
    • Grapheme 函数
    • IDN 函数
    • IntlChar
    • IntlException — Exception class for intl errors
    • IntlIterator — The IntlIterator class
    • intl 函数
  • 多字节字符串
    • 简介
    • 安装／配置
    • 预定义常量
    • 支持编码的摘要
    • 日文字符多字节编码基础
    • HTTP 输入和输出
    • 支持的字符编码
    • 函数重载功能
    • PHP字符编码的要求
    • 多字节字符串 函数
  • Pspell
    • 简介
    • 安装／配置
    • 预定义常量
    • Pspell 函数
  • Recode — GNU Recode
    • 简介
    • 安装／配置
    • 预定义常量
    • Recode 函数
xdiff_string_rabdiff
Enchant
函数参考


Enchant spelling library

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • Enchant 函数
    • enchant_broker_describe — Enumerates the Enchant providers
    • enchant_broker_dict_exists — Whether a dictionary exists or not. Using non-empty tag
    • enchant_broker_free_dict — Free a dictionary resource
    • enchant_broker_free — Free the broker resource and its dictionnaries
    • enchant_broker_get_dict_path — Get the directory path for a given backend
    • enchant_broker_get_error — Returns the last error of the broker
    • enchant_broker_init — create a new broker object capable of requesting
    • enchant_broker_list_dicts — Returns a list of available dictionaries
    • enchant_broker_request_dict — create a new dictionary using a tag
    • enchant_broker_request_pwl_dict — creates a dictionary using a PWL file
    • enchant_broker_set_dict_path — Set the directory path for a given backend
    • enchant_broker_set_ordering — Declares a preference of dictionaries to use for the language
    • enchant_dict_add_to_personal — add a word to personal word list
    • enchant_dict_add_to_session — add 'word' to this spell-checking session
    • enchant_dict_check — Check whether a word is correctly spelled or not
    • enchant_dict_describe — Describes an individual dictionary
    • enchant_dict_get_error — Returns the last error of the current spelling-session
    • enchant_dict_is_in_session — whether or not 'word' exists in this spelling-session
    • enchant_dict_quick_check — Check the word is correctly spelled and provide suggestions
    • enchant_dict_store_replacement — Add a correction for a word
    • enchant_dict_suggest — Will return a list of values if any of those pre-conditions are not met
国际化与字符编码支持
简介
国际化与字符编码支持


简介

Enchant is the PHP binding for the » Enchant library. Enchant steps in to provide uniformity and conformity on top of all spelling libraries, and implement certain features that may be lacking in any individual provider library. Everything should "just work" for any and every definition of "just working."

Enchant supports the following backends:

  • Aspell/Pspell (intends to replace Ispell)

  • Ispell (old as sin, could be interpreted as a defacto standard)

  • MySpell/Hunspell (an OOo projects, also used by Mozilla)

  • Uspell (primarily Yiddish, Hebrew, and Eastern European languages - hosted in AbiWord's CVS under the module "uspell")

  • Hspell (Hebrew)

  • AppleSpell (Mac OSX)

Enchant
安装／配置
Enchant


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Enchant


需求

This version uses the functions of the » Enchant library by Dom Lachowicz. You need Enchant 1.2.4 or later.

Enchant also requires » Glib 2.6 or greater. Pre-compiled Windows libraries are available from » http://ftp.gnome.org/pub/gnome/binaries/win32/glib/.

安装／配置
安装
安装／配置


安装

This extension is bundled with PHP as of PHP 5.3.0. Before this time, enchant was a PECL extension. Users of versions prior to 5.3.0 may use the » PECL extension.

Provided the required libraries are installed, users of PHP 5.3.0 or later may enable enchant by adding the --with-enchant[=dir] option when compiling PHP.

需求
运行时配置
安装／配置


资源类型

There are two types of resources in this extension. The first one is the broker (backends manager) and the second is for the dictionary.

运行时配置
预定义常量
安装／配置


预定义常量

ENCHANT_MYSPELL (integer)
Dictionary type for MySpell. Used with enchant_broker_get_dict_path() and enchant_broker_set_dict_path().
ENCHANT_ISPELL (integer)
Dictionary type for Ispell. Used with enchant_broker_get_dict_path() and enchant_broker_set_dict_path().

资源类型
范例
Enchant


范例

Example #1 Enchant Usage Example

<?php
$tag = 'en_US';
$r = enchant_broker_init();
$bprovides = enchant_broker_describe($r);
echo "Current broker provides the following backend(s):\n";
print_r($bprovides);

$dicts = enchant_broker_list_dicts($r);
print_r($dicts);
if (enchant_broker_dict_exists($r,$tag)) {
    $d = enchant_broker_request_dict($r, $tag);
    $dprovides = enchant_dict_describe($d);
    echo "dictionary $tag provides:\n";
    $wordcorrect = enchant_dict_check($d, "soong");
    print_r($dprovides);
    if (!$wordcorrect) {
        $suggs = enchant_dict_suggest($d, "soong");
        echo "Suggestions for 'soong':";
        print_r($suggs);
    }
    enchant_broker_free_dict($d);
} else {
}
enchant_broker_free($r);
?>
预定义常量
Enchant 函数
Enchant


Enchant 函数

Table of Contents

  • enchant_broker_describe — Enumerates the Enchant providers
  • enchant_broker_dict_exists — Whether a dictionary exists or not. Using non-empty tag
  • enchant_broker_free_dict — Free a dictionary resource
  • enchant_broker_free — Free the broker resource and its dictionnaries
  • enchant_broker_get_dict_path — Get the directory path for a given backend
  • enchant_broker_get_error — Returns the last error of the broker
  • enchant_broker_init — create a new broker object capable of requesting
  • enchant_broker_list_dicts — Returns a list of available dictionaries
  • enchant_broker_request_dict — create a new dictionary using a tag
  • enchant_broker_request_pwl_dict — creates a dictionary using a PWL file
  • enchant_broker_set_dict_path — Set the directory path for a given backend
  • enchant_broker_set_ordering — Declares a preference of dictionaries to use for the language
  • enchant_dict_add_to_personal — add a word to personal word list
  • enchant_dict_add_to_session — add 'word' to this spell-checking session
  • enchant_dict_check — Check whether a word is correctly spelled or not
  • enchant_dict_describe — Describes an individual dictionary
  • enchant_dict_get_error — Returns the last error of the current spelling-session
  • enchant_dict_is_in_session — whether or not 'word' exists in this spelling-session
  • enchant_dict_quick_check — Check the word is correctly spelled and provide suggestions
  • enchant_dict_store_replacement — Add a correction for a word
  • enchant_dict_suggest — Will return a list of values if any of those pre-conditions are not met
范例
enchant_broker_describe
Enchant


Enumerates the Enchant providers

Enchant 函数
enchant_broker_dict_exists
Enchant 函数
PHP Manual

enchant_broker_describe

(PHP 5 >= 5.3.0, PHP 7, PECL enchant >= 0.1.0)

enchant_broker_describe — Enumerates the Enchant providers

说明

array enchant_broker_describe ( resource $broker )

Enumerates the Enchant providers and tells you some rudimentary information about them. The same info is provided through phpinfo().

参数

broker

Broker resource

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 List the backends provided by the given broker

<?php
$r = enchant_broker_init();
$bprovides = enchant_broker_describe($r);
echo "Current broker provides the following backend(s):\n";
print_r($bprovides);

?>

以上例程的输出类似于：

Current broker provides the following backend(s):
Array
(
    [0] => Array
        (
            [name] => aspell
            [desc] => Aspell Provider
            [file] => /usr/lib/enchant/libenchant_aspell.so
        )

    [1] => Array
        (
            [name] => hspell
            [desc] => Hspell Provider
            [file] => /usr/lib/enchant/libenchant_hspell.so
        )

    [2] => Array
        (
            [name] => ispell
            [desc] => Ispell Provider
            [file] => /usr/lib/enchant/libenchant_ispell.so
        )

    [3] => Array
        (
            [name] => myspell
            [desc] => Myspell Provider
            [file] => /usr/lib/enchant/libenchant_myspell.so
        )

)

Enchant 函数
enchant_broker_dict_exists
Enchant 函数


Whether a dictionary exists or not. Using non-empty tag

enchant_broker_describe
enchant_broker_free_dict
Enchant 函数
PHP Manual

enchant_broker_dict_exists

(PHP 5 >= 5.3.0, PHP 7, PECL enchant >= 0.1.0 )

enchant_broker_dict_exists — Whether a dictionary exists or not. Using non-empty tag

说明

bool enchant_broker_dict_exists ( resource $broker , string $tag )

Tells if a dictionary exists or not, using a non-empty tags

参数

broker

Broker resource

tag

non-empty tag in the LOCALE format, ex: us_US, ch_DE, etc.

返回值

Returns TRUE when the tag exist or FALSE when not.

范例

Example #1 A enchant_broker_dict_exists() example

<?php
$tag = 'en_US';
$r = enchant_broker_init();
if (enchant_broker_dict_exists($r,$tag)) {
    echo $tag . " dictionary found.\n";
}
?>

参见

  • enchant_broker_describe() - Enumerates the Enchant providers

enchant_broker_describe
enchant_broker_free_dict
Enchant 函数


Free a dictionary resource

enchant_broker_dict_exists
enchant_broker_free
Enchant 函数
PHP Manual

enchant_broker_free_dict

(PHP 5 >= 5.3.0, PHP 7, PECL enchant >= 0.1.0 )

enchant_broker_free_dict — Free a dictionary resource

说明

bool enchant_broker_free_dict ( resource $dict )

Free a dictionary resource.

参数

dict

Dictionary resource.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • enchant_broker_request_dict() - create a new dictionary using a tag
  • enchant_broker_request_pwl_dict() - creates a dictionary using a PWL file

enchant_broker_dict_exists
enchant_broker_free
Enchant 函数


Free the broker resource and its dictionnaries

enchant_broker_free_dict
enchant_broker_get_dict_path
Enchant 函数
PHP Manual

enchant_broker_free

(PHP 5 >= 5.3.0, PHP 7, PECL enchant >= 0.1.0 )

enchant_broker_free — Free the broker resource and its dictionnaries

说明

bool enchant_broker_free ( resource $broker )

Free a broker resource with all its dictionaries.

参数

broker

Broker resource

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • enchant_broker_init() - create a new broker object capable of requesting

enchant_broker_free_dict
enchant_broker_get_dict_path
Enchant 函数


Get the directory path for a given backend

enchant_broker_free
enchant_broker_get_error
Enchant 函数
PHP Manual

enchant_broker_get_dict_path

(PHP 5 >= 5.3.1, PHP 7, PECL enchant >= 1.0.1)

enchant_broker_get_dict_path — Get the directory path for a given backend

说明

bool enchant_broker_get_dict_path ( resource $broker , int $dict_type )

Get the directory path for a given backend.

参数

broker

Broker resource.

dict_type

The type of the dictionaries, i.e. ENCHANT_MYSPELL or ENCHANT_ISPELL.

返回值

Returns the path of the dictionary directory on success 或者在失败时返回 FALSE.

参见

  • enchant_broker_set_dict_path() - Set the directory path for a given backend

enchant_broker_free
enchant_broker_get_error
Enchant 函数


Returns the last error of the broker

enchant_broker_get_dict_path
enchant_broker_init
Enchant 函数
PHP Manual

enchant_broker_get_error

(PHP 5 >= 5.3.0, PHP 7, PECL enchant >= 0.1.0 )

enchant_broker_get_error — Returns the last error of the broker

说明

string enchant_broker_get_error ( resource $broker )

Returns the last error which occurred in this broker.

参数

broker

Broker resource.

返回值

Return the msg string if an error was found or FALSE

enchant_broker_get_dict_path
enchant_broker_init
Enchant 函数


create a new broker object capable of requesting

enchant_broker_get_error
enchant_broker_list_dicts
Enchant 函数
PHP Manual

enchant_broker_init

(PHP 5 >= 5.3.0, PHP 7, PECL enchant >= 0.1.0 )

enchant_broker_init — create a new broker object capable of requesting

说明

resource enchant_broker_init ( void )

参数

返回值

Returns a broker resource on success or FALSE.

参见

  • enchant_broker_free() - Free the broker resource and its dictionnaries

enchant_broker_get_error
enchant_broker_list_dicts
Enchant 函数


Returns a list of available dictionaries

enchant_broker_init
enchant_broker_request_dict
Enchant 函数
PHP Manual

enchant_broker_list_dicts

(PHP 5 >= 5.3.0, PHP 7, PECL enchant >= 1.0.1)

enchant_broker_list_dicts — Returns a list of available dictionaries

说明

mixed enchant_broker_list_dicts ( resource $broker )

Returns a list of available dictionaries with their details.

参数

broker

Broker resource

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 List all available dictionaries for one broker

<?php
$r = enchant_broker_init();
$dicts = enchant_broker_list_dicts($r);
print_r($dicts);
?>

以上例程的输出类似于：

Array
(
    [0] => Array
        (
            [lang_tag] => de
            [provider_name] => aspell
            [provider_desc] => Aspell Provider
            [provider_file] => /usr/lib/enchant/libenchant_aspell.so
        )

    [1] => Array
        (
            [lang_tag] => de_DE
            [provider_name] => aspell
            [provider_desc] => Aspell Provider
            [provider_file] => /usr/lib/enchant/libenchant_aspell.so
        )

    [3] => Array
        (
            [lang_tag] => en
            [provider_name] => aspell
            [provider_desc] => Aspell Provider
            [provider_file] => /usr/lib/enchant/libenchant_aspell.so
        )

    [4] => Array
        (
            [lang_tag] => en_GB
            [provider_name] => aspell
            [provider_desc] => Aspell Provider
            [provider_file] => /usr/lib/enchant/libenchant_aspell.so
        )

    [5] => Array
        (
            [lang_tag] => en_US
            [provider_name] => aspell
            [provider_desc] => Aspell Provider
            [provider_file] => /usr/lib/enchant/libenchant_aspell.so
        )

    [6] => Array
        (
            [lang_tag] => hi_IN
            [provider_name] => myspell
            [provider_desc] => Myspell Provider
            [provider_file] => /usr/lib/enchant/libenchant_myspell.so
        )

)

参见

  • enchant_broker_describe() - Enumerates the Enchant providers

enchant_broker_init
enchant_broker_request_dict
Enchant 函数


create a new dictionary using a tag

enchant_broker_list_dicts
enchant_broker_request_pwl_dict
Enchant 函数
PHP Manual

enchant_broker_request_dict

(PHP 5 >= 5.3.0, PHP 7, PECL enchant >= 0.1.0 )

enchant_broker_request_dict — create a new dictionary using a tag

说明

resource enchant_broker_request_dict ( resource $broker , string $tag )

create a new dictionary using tag, the non-empty language tag you wish to request a dictionary for ("en_US", "de_DE", ...)

参数

broker

Broker resource

tag

A tag describing the locale, for example en_US, de_DE

返回值

Returns a dictionary resource on success 或者在失败时返回 FALSE.

范例

Example #1 A enchant_broker_request_dict() example

Check if a dictionary exists using enchant_broker_dict_exists() and request it.

<?php
$tag = 'en_US';
$broker = enchant_broker_init();
if (enchant_broker_dict_exists($broker,$tag)) {
    $dict = enchant_broker_request_dict($r, $tag);
}
?>

参见

  • enchant_dict_describe() - Describes an individual dictionary
  • enchant_broker_dict_exists() - Whether a dictionary exists or not. Using non-empty tag
  • enchant_broker_free_dict() - Free a dictionary resource

enchant_broker_list_dicts
enchant_broker_request_pwl_dict
Enchant 函数


creates a dictionary using a PWL file

enchant_broker_request_dict
enchant_broker_set_dict_path
Enchant 函数
PHP Manual

enchant_broker_request_pwl_dict

(PHP 5 >= 5.3.0, PHP 7, PECL enchant >= 0.1.0 )

enchant_broker_request_pwl_dict — creates a dictionary using a PWL file

说明

resource enchant_broker_request_pwl_dict ( resource $broker , string $filename )

Creates a dictionary using a PWL file. A PWL file is personal word file one word per line.

参数

broker

Broker resource

filename

Path to the PWL file. If there is no such file, a new one will be created if possible.

返回值

Returns a dictionary resource on success 或者在失败时返回 FALSE.

参见

  • enchant_dict_describe() - Describes an individual dictionary
  • enchant_broker_dict_exists() - Whether a dictionary exists or not. Using non-empty tag
  • enchant_broker_free_dict() - Free a dictionary resource

enchant_broker_request_dict
enchant_broker_set_dict_path
Enchant 函数


Set the directory path for a given backend

enchant_broker_request_pwl_dict
enchant_broker_set_ordering
Enchant 函数
PHP Manual

enchant_broker_set_dict_path

(PHP 5 >= 5.3.1, PHP 7, PECL enchant >= 1.0.1)

enchant_broker_set_dict_path — Set the directory path for a given backend

说明

bool enchant_broker_set_dict_path ( resource $broker , int $dict_type , string $value )

Set the directory path for a given backend.

参数

broker

Broker resource.

dict_type

The type of the dictionaries, i.e. ENCHANT_MYSPELL or ENCHANT_ISPELL.

value

The path of the dictionary directory.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • enchant_broker_get_dict_path() - Get the directory path for a given backend

enchant_broker_request_pwl_dict
enchant_broker_set_ordering
Enchant 函数


Declares a preference of dictionaries to use for the language

enchant_broker_set_dict_path
enchant_dict_add_to_personal
Enchant 函数
PHP Manual

enchant_broker_set_ordering

(PHP 5 >= 5.3.0, PHP 7, PECL enchant >= 0.1.0 )

enchant_broker_set_ordering — Declares a preference of dictionaries to use for the language

说明

bool enchant_broker_set_ordering ( resource $broker , string $tag , string $ordering )

Declares a preference of dictionaries to use for the language described/referred to by 'tag'. The ordering is a comma delimited list of provider names. As a special exception, the "*" tag can be used as a language tag to declare a default ordering for any language that does not explicitly declare an ordering.

参数

broker

Broker resource

tag

Language tag. The special "*" tag can be used as a language tag to declare a default ordering for any language that does not explicitly declare an ordering.

ordering

Comma delimited list of provider names

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

enchant_broker_set_dict_path
enchant_dict_add_to_personal
Enchant 函数


add a word to personal word list

enchant_broker_set_ordering
enchant_dict_add_to_session
Enchant 函数
PHP Manual

enchant_dict_add_to_personal

(PHP 5 >= 5.3.0, PHP 7, PECL enchant >= 0.1.0 )

enchant_dict_add_to_personal — add a word to personal word list

说明

void enchant_dict_add_to_personal ( resource $dict , string $word )

Add a word to personal word list of the given dictionary.

参数

dict

Dictionary resource

word

The word to add

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

Example #1 Adding a word to a PWL

<?php

$filename = './my_word_list.pwl';
$word = 'Supercalifragilisticexpialidocious';

$broker = enchant_broker_init();
$dict = enchant_broker_request_pwl_dict($broker, $filename);

enchant_dict_add_to_personal($dict, $word);

enchant_broker_free($broker);

?>

参见

  • enchant_broker_request_pwl_dict() - creates a dictionary using a PWL file
  • enchant_broker_request_dict() - create a new dictionary using a tag

enchant_broker_set_ordering
enchant_dict_add_to_session
Enchant 函数


add 'word' to this spell-checking session

enchant_dict_add_to_personal
enchant_dict_check
Enchant 函数
PHP Manual

enchant_dict_add_to_session

(PHP 5 >= 5.3.0, PHP 7, PECL enchant >= 0.1.0 )

enchant_dict_add_to_session — add 'word' to this spell-checking session

说明

void enchant_dict_add_to_session ( resource $dict , string $word )

Add a word to the given dictionary. It will be added only for the active spell-checking session.

参数

dict

Dictionary resource

word

The word to add

返回值

没有返回值。

参见

  • enchant_broker_request_dict() - create a new dictionary using a tag

enchant_dict_add_to_personal
enchant_dict_check
Enchant 函数


Check whether a word is correctly spelled or not

enchant_dict_add_to_session
enchant_dict_describe
Enchant 函数
PHP Manual

enchant_dict_check

(PHP 5 >= 5.3.0, PHP 7, PECL enchant >= 0.1.0 )

enchant_dict_check — Check whether a word is correctly spelled or not

说明

bool enchant_dict_check ( resource $dict , string $word )

If the word is correctly spelled return TRUE, otherwise return FALSE

参数

dict

Dictionary resource

word

The word to check

返回值

Returns TRUE if the word is spelled correctly, FALSE if not.

enchant_dict_add_to_session
enchant_dict_describe
Enchant 函数


Describes an individual dictionary

enchant_dict_check
enchant_dict_get_error
Enchant 函数
PHP Manual

enchant_dict_describe

(PHP 5 >= 5.3.0, PHP 7, PECL enchant >= 0.1.0 )

enchant_dict_describe — Describes an individual dictionary

说明

mixed enchant_dict_describe ( resource $dict )

Returns the details of the dictionary.

参数

dict

Dictionary resource

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 A enchant_dict_describe() example

Check if a dictionary exists using enchant_broker_dict_exists() and show the detail of it.

<?php
$tag = 'en_US';
$broker = enchant_broker_init();
if (enchant_broker_dict_exists($broker,$tag)) {
    $dict = enchant_broker_request_dict($r, $tag);
    $dict_details = enchant_dict_describe($dict);
    print_r($dict_details);
}
?>

以上例程的输出类似于：

Array
(
    [lang] => en_US
    [name] => aspell
    [desc] => Aspell Provider
    [file] => /usr/lib/enchant/libenchant_aspell.so
)

enchant_dict_check
enchant_dict_get_error
Enchant 函数


Returns the last error of the current spelling-session

enchant_dict_describe
enchant_dict_is_in_session
Enchant 函数
PHP Manual

enchant_dict_get_error

(PHP 5 >= 5.3.0, PHP 7, PECL enchant >= 0.1.0 )

enchant_dict_get_error — Returns the last error of the current spelling-session

说明

string enchant_dict_get_error ( resource $dict )

Returns the last error of the current spelling-session

参数

dict

Dictinaray resource

返回值

Returns the error message as string or FALSE if no error occurred.

enchant_dict_describe
enchant_dict_is_in_session
Enchant 函数


whether or not 'word' exists in this spelling-session

enchant_dict_get_error
enchant_dict_quick_check
Enchant 函数
PHP Manual

enchant_dict_is_in_session

(PHP 5 >= 5.3.0, PHP 7, PECL enchant >= 0.1.0 )

enchant_dict_is_in_session — whether or not 'word' exists in this spelling-session

说明

bool enchant_dict_is_in_session ( resource $dict , string $word )

Tells whether or not a word already exists in the current session.

参数

dict

Dictionary resource

word

The word to lookup

返回值

Returns TRUE if the word exists or FALSE

参见

  • enchant_dict_add_to_session() - add 'word' to this spell-checking session

enchant_dict_get_error
enchant_dict_quick_check
Enchant 函数


Check the word is correctly spelled and provide suggestions

enchant_dict_is_in_session
enchant_dict_store_replacement
Enchant 函数
PHP Manual

enchant_dict_quick_check

(PHP 5 >= 5.3.0, PHP 7, PECL enchant:0.2.0-1.0.1)

enchant_dict_quick_check — Check the word is correctly spelled and provide suggestions

说明

bool enchant_dict_quick_check ( resource $dict , string $word [, array &$suggestions ] )

If the word is correctly spelled return TRUE, otherwise return FALSE, if suggestions variable is provided, fill it with spelling alternatives.

参数

dict

Dictionary resource

word

The word to check

suggestions

If the word is not correctly spelled, this variable will contain an array of suggestions.

返回值

Returns TRUE if the word is correctly spelled or FALSE

范例

Example #1 A enchant_dict_quick_check() example

<?php
$tag = 'en_US';
$r = enchant_broker_init();

if (enchant_broker_dict_exists($r,$tag)) {
    $d = enchant_broker_request_dict($r, $tag);
    enchant_dict_quick_check($d, 'soong', $suggs);
    print_r($suggs);
}
?>

以上例程的输出类似于：

Array
(
    [0] => song
    [1] => snog
    [2] => soon
    [3] => Sang
    [4] => Sung
    [5] => sang
    [6] => sung
    [7] => sponge
    [8] => spongy
    [9] => snag
    [10] => snug
    [11] => sonic
    [12] => sing
    [13] => songs
    [14] => Son
    [15] => Sonja
    [16] => Synge
    [17] => son
    [18] => Sejong
    [19] => sarong
    [20] => sooner
    [21] => Sony
    [22] => sown
    [23] => scone
    [24] => song's
)

参见

  • enchant_dict_check() - Check whether a word is correctly spelled or not
  • enchant_dict_suggest() - Will return a list of values if any of those pre-conditions are not met

enchant_dict_is_in_session
enchant_dict_store_replacement
Enchant 函数


Add a correction for a word

enchant_dict_quick_check
enchant_dict_suggest
Enchant 函数
PHP Manual

enchant_dict_store_replacement

(PHP 5 >= 5.3.0, PHP 7, PECL enchant >= 0.1.0 )

enchant_dict_store_replacement — Add a correction for a word

说明

void enchant_dict_store_replacement ( resource $dict , string $mis , string $cor )

Add a correction for 'mis' using 'cor'. Notes that you replaced @mis with @cor, so it's possibly more likely that future occurrences of @mis will be replaced with @cor. So it might bump @cor up in the suggestion list.

参数

dict

Dictionary resource

mis

The work to fix

cor

The correct word

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

enchant_dict_quick_check
enchant_dict_suggest
Enchant 函数


Will return a list of values if any of those pre-conditions are not met

enchant_dict_store_replacement
FriBiDi
Enchant 函数
PHP Manual

enchant_dict_suggest

(PHP 5 >= 5.3.0, PHP 7, PECL enchant >= 0.1.0 )

enchant_dict_suggest — Will return a list of values if any of those pre-conditions are not met

说明

array enchant_dict_suggest ( resource $dict , string $word )

参数

dict

Dictionary resource

word

Word to use for the suggestions.

返回值

Will returns an array of suggestions if the word is bad spelled.

范例

Example #1 A enchant_dict_suggest() example

<?php
$tag = 'en_US';
$r = enchant_broker_init();
if (enchant_broker_dict_exists($r,$tag)) {
    $d = enchant_broker_request_dict($r, $tag);

    $wordcorrect = enchant_dict_check($d, "soong");
    if (!$wordcorrect) {
        $suggs = enchant_dict_suggest($d, "soong");
        echo "Suggestions for 'soong':";
        print_r($suggs);
    }
    enchant_broker_free_dict($d);
}
enchant_broker_free($r);
?>

参见

  • enchant_dict_check() - Check whether a word is correctly spelled or not
  • enchant_dict_quick_check() - Check the word is correctly spelled and provide suggestions

enchant_dict_store_replacement
FriBiDi
Enchant 函数


FriBiDi

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • FriBiDi 函数
    • fribidi_log2vis — Convert a logical string to a visual one
enchant_dict_suggest
简介
国际化与字符编码支持


简介

FriBiDi is a free implementation of the » Unicode Bidirectional Algorithm.

FriBiDi
安装／配置
FriBiDi


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
FriBiDi


需求

You must download and install the » FriBiDi package.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。 安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/fribidi.

In order to use these functions you must compile PHP with Fribidi support by using the --with-fribidi[=DIR] configure option.

Windows users will enable php_fribidi.dll inside of php.ini in order to use these functions. PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

FRIBIDI_CHARSET_UTF8 (integer)
Unicode
FRIBIDI_CHARSET_8859_6 (integer)
Arabic
FRIBIDI_CHARSET_8859_8 (integer)
Hebrew
FRIBIDI_CHARSET_CP1255 (integer)
Hebrew/Yiddish
FRIBIDI_CHARSET_CP1256 (integer)
Arabic
FRIBIDI_CHARSET_ISIRI_3342 (integer)
Persian
FRIBIDI_CHARSET_CAP_RTL (integer)
Used for test purposes, will treat CAPS as non-English letters
FRIBIDI_RTL (integer)
Right to left
FRIBIDI_LTR (integer)
Left to right
FRIBIDI_AUTO (integer)
Autodetect the base direction
资源类型
FriBiDi 函数
FriBiDi


FriBiDi 函数

Table of Contents

  • fribidi_log2vis — Convert a logical string to a visual one
预定义常量
fribidi_log2vis
FriBiDi


Convert a logical string to a visual one

FriBiDi 函数
Gender
FriBiDi 函数
PHP Manual

fribidi_log2vis

(PHP 4 >= 4.0.4 and PHP 4 <= 4.1.0, PECL fribidi >= 1.0)

fribidi_log2vis — Convert a logical string to a visual one

说明

string fribidi_log2vis ( string $str , string $direction , int $charset )

Converts a logical string to a visual one.

参数

str

The logical string.

direction

One of FRIBIDI_RTL, FRIBIDI_LTR or FRIBIDI_AUTO.

charset

One of the FRIBIDI_CHARSET_XXX constants.

返回值

Returns the visual string on success 或者在失败时返回 FALSE.

FriBiDi 函数
Gender
FriBiDi 函数


Determine gender of firstnames

  • 简介
  • 安装／配置
    • 安装
  • 范例
    • Usage example.
  • Gender\Gender — The Gender\Gender class
    • Gender\Gender::connect — Connect to an external name dictionary.
    • Gender\Gender::__construct — Construct the Gender object.
    • Gender\Gender::country — Get textual country representation
    • Gender\Gender::get — Get gender of a name.
    • Gender\Gender::isNick — Check if the name0 is an alias of the name1.
    • Gender\Gender::similarNames — Get similar names.
fribidi_log2vis
简介
国际化与字符编码支持


简介

Gender PHP extension is a port of the gender.c program originally written by Joerg Michael. The main purpose is to find out the gender of firstnames. The current database contains >40000 firstnames from 54 countries.

Gender
安装／配置
Gender


安装／配置

Table of Contents

  • 安装
简介
安装
Gender


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/gender.

A DLL for this PECL extension is available under » http://windows.php.net/downloads/pecl/releases/gender/.

安装／配置
范例
安装／配置


范例

Table of Contents

  • Usage example.
安装
Usage example.
Gender


Usage example.

Gender class usage example.

Example #1 Usage example.

<?php

namespace Gender;

$gender = new Gender;

$name = "Milene";
$country = Gender::FRANCE;

$result = $gender->get($name, $country);

$data = $gender->country($country);

switch($result) {
    case Gender::IS_FEMALE:
        printf("The name %s is female in %s\n", $name, $data['country']);
    break;

    case Gender::IS_MOSTLY_FEMALE:
        printf("The name %s is mostly female in %s\n", $name, $data['country']);
    break;

    case Gender::IS_MALE:
        printf("The name %s is male in %s\n", $name, $data['country']);
    break;

    case Gender::IS_MOSTLY_MALE:
        printf("The name %s is mostly male in %s\n", $name, $data['country']);
    break;

    case Gender::IS_UNISEX_NAME:
        printf("The name %s is unisex in %s\n", $name, $data['country']);
    break;

    case Gender::IS_A_COUPLE:
        printf("The name %s is both male and female in %s\n", $name, $data['country']);
    break;

    case Gender::NAME_NOT_FOUND:
        printf("The name %s was not found for %s\n", $name, $data['country']);
    break;

    case Gender::ERROR_IN_NAME:
        echo "There is an error in the given name!\n";
    break;

    default:
        echo "An error occurred!\n";
    break;

}
范例
Gender\Gender
范例


The Gender\Gender class

(PECL gender >= 0.6.0)

简介

类摘要

Gender\Gender {
/* Constants */
const integer IS_FEMALE = 70 ;
const integer IS_MOSTLY_FEMALE = 102 ;
const integer IS_MALE = 77 ;
const integer IS_MOSTLY_MALE = 109 ;
const integer IS_UNISEX_NAME = 63 ;
const integer IS_A_COUPLE = 67 ;
const integer NAME_NOT_FOUND = 32 ;
const integer ERROR_IN_NAME = 69 ;
const integer ANY_COUNTRY = 0 ;
const integer BRITAIN = 1 ;
const integer IRELAND = 2 ;
const integer USA = 3 ;
const integer SPAIN = 4 ;
const integer PORTUGAL = 5 ;
const integer ITALY = 6 ;
const integer MALTA = 7 ;
const integer FRANCE = 8 ;
const integer BELGIUM = 9 ;
const integer LUXEMBOURG = 10 ;
const integer NETHERLANDS = 11 ;
const integer GERMANY = 12 ;
const integer EAST_FRISIA = 13 ;
const integer AUSTRIA = 14 ;
const integer SWISS = 15 ;
const integer ICELAND = 16 ;
const integer DENMARK = 17 ;
const integer NORWAY = 18 ;
const integer SWEDEN = 19 ;
const integer FINLAND = 20 ;
const integer ESTONIA = 21 ;
const integer LATVIA = 22 ;
const integer LITHUANIA = 23 ;
const integer POLAND = 24 ;
const integer CZECH_REP = 25 ;
const integer SLOVAKIA = 26 ;
const integer HUNGARY = 27 ;
const integer ROMANIA = 28 ;
const integer BULGARIA = 29 ;
const integer BOSNIA = 30 ;
const integer CROATIA = 31 ;
const integer KOSOVO = 32 ;
const integer MACEDONIA = 33 ;
const integer MONTENEGRO = 34 ;
const integer SERBIA = 35 ;
const integer SLOVENIA = 36 ;
const integer ALBANIA = 37 ;
const integer GREECE = 38 ;
const integer RUSSIA = 39 ;
const integer BELARUS = 40 ;
const integer MOLDOVA = 41 ;
const integer UKRAINE = 42 ;
const integer ARMENIA = 43 ;
const integer AZERBAIJAN = 44 ;
const integer GEORGIA = 45 ;
const integer KAZAKH_UZBEK = 46 ;
const integer TURKEY = 47 ;
const integer ARABIA = 48 ;
const integer ISRAEL = 49 ;
const integer CHINA = 50 ;
const integer INDIA = 51 ;
const integer JAPAN = 52 ;
const integer KOREA = 53 ;
/* 方法 */
public boolean connect ( string $dsn )
public __construct ([ string $dsn ] )
public array country ( integer $country )
public integer get ( string $name [, integer $country ] )
public array isNick ( string $name0 , string $name1 [, integer $country ] )
public array similarNames ( string $name [, integer $country ] )
}

预定义常量

Gender\Gender::IS_FEMALE

Gender\Gender::IS_MOSTLY_FEMALE

Gender\Gender::IS_MALE

Gender\Gender::IS_MOSTLY_MALE

Gender\Gender::IS_UNISEX_NAME

Gender\Gender::IS_A_COUPLE

Gender\Gender::NAME_NOT_FOUND

Gender\Gender::ERROR_IN_NAME

Gender\Gender::ANY_COUNTRY

Gender\Gender::BRITAIN

Gender\Gender::IRELAND

Gender\Gender::USA

Gender\Gender::SPAIN

Gender\Gender::PORTUGAL

Gender\Gender::ITALY

Gender\Gender::MALTA

Gender\Gender::FRANCE

Gender\Gender::BELGIUM

Gender\Gender::LUXEMBOURG

Gender\Gender::NETHERLANDS

Gender\Gender::GERMANY

Gender\Gender::EAST_FRISIA

Gender\Gender::AUSTRIA

Gender\Gender::SWISS

Gender\Gender::ICELAND

Gender\Gender::DENMARK

Gender\Gender::NORWAY

Gender\Gender::SWEDEN

Gender\Gender::FINLAND

Gender\Gender::ESTONIA

Gender\Gender::LATVIA

Gender\Gender::LITHUANIA

Gender\Gender::POLAND

Gender\Gender::CZECH_REP

Gender\Gender::SLOVAKIA

Gender\Gender::HUNGARY

Gender\Gender::ROMANIA

Gender\Gender::BULGARIA

Gender\Gender::BOSNIA

Gender\Gender::CROATIA

Gender\Gender::KOSOVO

Gender\Gender::MACEDONIA

Gender\Gender::MONTENEGRO

Gender\Gender::SERBIA

Gender\Gender::SLOVENIA

Gender\Gender::ALBANIA

Gender\Gender::GREECE

Gender\Gender::RUSSIA

Gender\Gender::BELARUS

Gender\Gender::MOLDOVA

Gender\Gender::UKRAINE

Gender\Gender::ARMENIA

Gender\Gender::AZERBAIJAN

Gender\Gender::GEORGIA

Gender\Gender::KAZAKH_UZBEK

Gender\Gender::TURKEY

Gender\Gender::ARABIA

Gender\Gender::ISRAEL

Gender\Gender::CHINA

Gender\Gender::INDIA

Gender\Gender::JAPAN

Gender\Gender::KOREA

Table of Contents

  • Gender\Gender::connect — Connect to an external name dictionary.
  • Gender\Gender::__construct — Construct the Gender object.
  • Gender\Gender::country — Get textual country representation
  • Gender\Gender::get — Get gender of a name.
  • Gender\Gender::isNick — Check if the name0 is an alias of the name1.
  • Gender\Gender::similarNames — Get similar names.
Usage example.
Gender\Gender::connect
Gender


Connect to an external name dictionary.

Gender\Gender
Gender\Gender::__construct
Gender\Gender
PHP Manual

Gender\Gender::connect

(PECL gender >= 0.6.0)

Gender\Gender::connect — Connect to an external name dictionary.

说明

public boolean Gender\Gender::connect ( string $dsn )

Connect to an external name dictionary. Currently only streams are supported.

参数

dsn

DSN to open.

返回值

Boolean as success of failure.

Gender\Gender
Gender\Gender::__construct
Gender\Gender


Construct the Gender object.

Gender\Gender::connect
Gender\Gender::country
Gender\Gender
PHP Manual

Gender\Gender::__construct

(PECL gender >= 0.6.0)

Gender\Gender::__construct — Construct the Gender object.

说明

public Gender\Gender::__construct ([ string $dsn ] )

Create a Gender object optionally connecting to an external name dictionary. When no external database was given, compiled in data will be used.

参数

dsn

DSN to open.

返回值

Gender\Gender::connect
Gender\Gender::country
Gender\Gender


Get textual country representation

Gender\Gender::__construct
Gender\Gender::get
Gender\Gender
PHP Manual

Gender\Gender::country

(PECL gender >= 0.8.0)

Gender\Gender::country — Get textual country representation

说明

public array Gender\Gender::country ( integer $country )

Returns the textual representation of a country from a Gender class constant.

参数

country

A country ID specified by a Gender\Gender class constant.

返回值

Returns an array with the short and full names of the country on success 或者在失败时返回 FALSE.

范例

Example #1 Using Gender\Gender::country()

$gender = new Gender\Gender;
var_dump($gender->country(Gender\Gender::BRITAIN));

以上例程会输出：

array(2) {
  'country_short' =>
  string(2) "UK"
  'country' =>
  string(13) "Great Britain"
}

Gender\Gender::__construct
Gender\Gender::get
Gender\Gender


Get gender of a name.

Gender\Gender::country
Gender\Gender::isNick
Gender\Gender
PHP Manual

Gender\Gender::get

(PECL gender >= 0.6.0)

Gender\Gender::get — Get gender of a name.

说明

public integer Gender\Gender::get ( string $name [, integer $country ] )

Get the gender of the name in a particular country.

参数

name

Name to check.

country

Country id identified by Gender class constant.

返回值

Returns gender of the name.

Gender\Gender::country
Gender\Gender::isNick
Gender\Gender


Check if the name0 is an alias of the name1.

Gender\Gender::get
Gender\Gender::similarNames
Gender\Gender
PHP Manual

Gender\Gender::isNick

(PECL gender >= 0.9.0)

Gender\Gender::isNick — Check if the name0 is an alias of the name1.

说明

public array Gender\Gender::isNick ( string $name0 , string $name1 [, integer $country ] )

Check whether the name0 is a nick of the name1.

参数

name0

Name to check.

name1

Name to check.

country

Country id identified by Gender class constant. If ommited ANY_COUNTRY is used.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

Gender\Gender::get
Gender\Gender::similarNames
Gender\Gender


Get similar names.

Gender\Gender::isNick
Gettext
Gender\Gender
PHP Manual

Gender\Gender::similarNames

(PECL gender >= 0.9.0)

Gender\Gender::similarNames — Get similar names.

说明

public array Gender\Gender::similarNames ( string $name [, integer $country ] )

Get similar names for the given name and country.

参数

name

Name to check.

country

Country id identified by Gender class constant. If ommited ANY_COUNTRY is used.

返回值

Returns an array with the similar names found.

Gender\Gender::isNick
Gettext
Gender\Gender


Gettext

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Gettext 函数
    • bind_textdomain_codeset — Specify the character encoding in which the messages from the DOMAIN message catalog will be returned
    • bindtextdomain — Sets the path for a domain
    • dcgettext — Overrides the domain for a single lookup
    • dcngettext — Plural version of dcgettext
    • dgettext — Override the current domain
    • dngettext — Plural version of dgettext
    • gettext — Lookup a message in the current domain
    • ngettext — Plural version of gettext
    • textdomain — Sets the default domain
Gender\Gender::similarNames
简介
国际化与字符编码支持


简介

gettext函数实现了NLS (Native Language Support) API，他可以用来国际化您的PHP程序. 请参阅gettext的文档，为您的系统进行国际化功能的详尽的解释 或查看文档 » http://www.gnu.org/software/gettext/manual/gettext.html.

Gettext
安装／配置
Gettext


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Gettext


需求

To use these functions you must download and install the GNU gettext package from » http://www.gnu.org/software/gettext/gettext.html

安装／配置
安装
安装／配置


安装

To include GNU gettext support in your PHP build you must add the option --with-gettext[=DIR] where DIR is the gettext install directory, defaults to /usr/local.

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
Gettext 函数
Gettext


Gettext 函数

Table of Contents

  • bind_textdomain_codeset — Specify the character encoding in which the messages from the DOMAIN message catalog will be returned
  • bindtextdomain — Sets the path for a domain
  • dcgettext — Overrides the domain for a single lookup
  • dcngettext — Plural version of dcgettext
  • dgettext — Override the current domain
  • dngettext — Plural version of dgettext
  • gettext — Lookup a message in the current domain
  • ngettext — Plural version of gettext
  • textdomain — Sets the default domain
预定义常量
bind_textdomain_codeset
Gettext


Specify the character encoding in which the messages from the DOMAIN message catalog will be returned

Gettext 函数
bindtextdomain
Gettext 函数
PHP Manual

bind_textdomain_codeset

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

bind_textdomain_codeset — Specify the character encoding in which the messages from the DOMAIN message catalog will be returned

说明

string bind_textdomain_codeset ( string $domain , string $codeset )

With bind_textdomain_codeset(), you can set in which encoding will be messages from domain returned by gettext() and similar functions.

参数

domain

The domain

codeset

The code set

返回值

A string on success.

Gettext 函数
bindtextdomain
Gettext 函数


Sets the path for a domain

bind_textdomain_codeset
dcgettext
Gettext 函数
PHP Manual

bindtextdomain

(PHP 4, PHP 5, PHP 7)

bindtextdomain — Sets the path for a domain

说明

string bindtextdomain ( string $domain , string $directory )

The bindtextdomain() function sets the path for a domain.

参数

domain

The domain

directory

The directory path

返回值

The full pathname for the domain currently being set.

范例

Example #1 bindtextdomain() example

<?php

$domain = 'myapp';
echo bindtextdomain($domain, '/usr/share/myapp/locale');

?>

以上例程会输出：

/usr/share/myapp/locale

bind_textdomain_codeset
dcgettext
Gettext 函数


Overrides the domain for a single lookup

bindtextdomain
dcngettext
Gettext 函数
PHP Manual

dcgettext

(PHP 4, PHP 5, PHP 7)

dcgettext — Overrides the domain for a single lookup

说明

string dcgettext ( string $domain , string $message , int $category )

This function allows you to override the current domain for a single message lookup.

参数

domain

The domain

message

The message

category

The category

返回值

A string on success.

参见

  • gettext() - Lookup a message in the current domain

bindtextdomain
dcngettext
Gettext 函数


Plural version of dcgettext

dcgettext
dgettext
Gettext 函数
PHP Manual

dcngettext

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

dcngettext — Plural version of dcgettext

说明

string dcngettext ( string $domain , string $msgid1 , string $msgid2 , int $n , int $category )

This function allows you to override the current domain for a single plural message lookup.

参数

domain

The domain

msgid1

msgid2

n

category

返回值

A string on success.

参见

  • ngettext() - Plural version of gettext

dcgettext
dgettext
Gettext 函数


Override the current domain

dcngettext
dngettext
Gettext 函数
PHP Manual

dgettext

(PHP 4, PHP 5, PHP 7)

dgettext — Override the current domain

说明

string dgettext ( string $domain , string $message )

The dgettext() function allows you to override the current domain for a single message lookup.

参数

domain

The domain

message

The message

返回值

A string on success.

参见

  • gettext() - Lookup a message in the current domain

dcngettext
dngettext
Gettext 函数


Plural version of dgettext

dgettext
gettext
Gettext 函数
PHP Manual

dngettext

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

dngettext — Plural version of dgettext

说明

string dngettext ( string $domain , string $msgid1 , string $msgid2 , int $n )

The dngettext() function allows you to override the current domain for a single plural message lookup.

参数

domain

The domain

msgid1

msgid2

n

返回值

A string on success.

参见

  • ngettext() - Plural version of gettext

dgettext
gettext
Gettext 函数


Lookup a message in the current domain

dngettext
ngettext
Gettext 函数
PHP Manual

gettext

(PHP 4, PHP 5, PHP 7)

gettext — Lookup a message in the current domain

说明

string gettext ( string $message )

Looks up a message in the current domain.

参数

message

The message being translated.

返回值

Returns a translated string if one is found in the translation table, or the submitted message if not found.

范例

Example #1 gettext()-check

<?php
// Set language to German
putenv('LC_ALL=de_DE');
setlocale(LC_ALL, 'de_DE');

// Specify location of translation tables
bindtextdomain("myPHPApp", "./locale");

// Choose domain
textdomain("myPHPApp");

// Translation is looking for in ./locale/de_DE/LC_MESSAGES/myPHPApp.mo now

// Print a test message
echo gettext("Welcome to My PHP Application");

// Or use the alias _() for gettext()
echo _("Have a nice day");
?>

注释

Note:

You may use the underscore character '_' as an alias to this function.

Note:

Setting a language isn't enough for some systems and the putenv() should be used to define the current locale.

参见

  • setlocale() - 设置地区信息

dngettext
ngettext
Gettext 函数


Plural version of gettext

gettext
textdomain
Gettext 函数
PHP Manual

ngettext

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

ngettext — Plural version of gettext

说明

string ngettext ( string $msgid1 , string $msgid2 , int $n )

The plural version of gettext(). Some languages have more than one form for plural messages dependent on the count.

参数

msgid1

The singular message ID.

msgid2

The plural message ID.

n

The number (e.g. item count) to determine the translation for the respective grammatical number.

返回值

Returns correct plural form of message identified by msgid1 and msgid2 for count n.

范例

Example #1 ngettext() example

<?php

setlocale(LC_ALL, 'cs_CZ');
printf(ngettext("%d window", "%d windows", 1), 1); // 1 okno
printf(ngettext("%d window", "%d windows", 2), 2); // 2 okna
printf(ngettext("%d window", "%d windows", 5), 5); // 5 oken

?>

gettext
textdomain
Gettext 函数


Sets the default domain

ngettext
iconv
Gettext 函数
PHP Manual

textdomain

(PHP 4, PHP 5, PHP 7)

textdomain — Sets the default domain

说明

string textdomain ( string $text_domain = NULL )

This function sets the domain to search within when calls are made to gettext(), usually the named after an application.

参数

text_domain

The new message domain, or NULL to get the current setting without changing it

返回值

If successful, this function returns the current message domain, after possibly changing it.

ngettext
iconv
Gettext 函数


iconv

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • iconv 函数
    • iconv_get_encoding — 获取 iconv 扩展的内部配置变量
    • iconv_mime_decode_headers — 一次性解码多个 MIME 头字段
    • iconv_mime_decode — 解码一个MIME头字段
    • iconv_mime_encode — Composes a MIME header field
    • iconv_set_encoding — 为字符编码转换设定当前设置
    • iconv_strlen — 返回字符串的字符数统计
    • iconv_strpos — Finds position of first occurrence of a needle within a haystack
    • iconv_strrpos — Finds the last occurrence of a needle within a haystack
    • iconv_substr — 截取字符串的部分
    • iconv — 字符串按要求的字符编码来转换
    • ob_iconv_handler — 以输出缓冲处理程序转换字符编码
textdomain
简介
国际化与字符编码支持


简介

此模块包含了 iconv 字符集转换功能的接口。 使用此模块，你可以将一个本地字符集表达的字符串转换成另一种字符集，比如可以是 Unicode 字符集。 支持的字符集基于你系统上 iconv 的实现。 注意，在某些系统上 iconv 函数可能无法以你预期的那样工作。 在这种情况下，安装 » GNU libiconv 库将会是个不错的主意。 它最终将会产生更一致的结果。

自 PHP 5.0.0 起，配备了这个具有多种实用功能的扩展，来帮助您编写多语言脚本。 让我们看看以下章节，来探索新的功能。

iconv
安装／配置
iconv


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
iconv


需求

如果你使用了最新的 POSIX 兼容系统，则不需要安装其他程序，因为系统提供的 C 语言标准函数库肯定支持 iconv。否则，你必须在系统上安装 » libiconv 函数库。

安装／配置
安装
安装／配置


安装

默认已激活此扩展，但是它能够在编译时通过 --without-iconv 选项被禁用。

选项指令 --with-iconv-dir 用于 PHP 编译时指定 iconv 在系统里的路径，否则会扫描默认路径。

Note: PHP 4 用户的注意事项
要激活这个扩展必须在编译时使用 --with-iconv=[DIR] ，或者对于 Windows 用户，可以放置 iconv.dll 于系统 PATH 中，并在 php.ini 中激活 php_iconv.dll。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Iconv 配置选项
名字 | 默认 | 可修改范围 | 更新日志
iconv.input_encoding | "" | PHP_INI_ALL | 自 PHP 4.0.5 起有效。在 PHP 5.6.0 中废弃。
iconv.output_encoding | "" | PHP_INI_ALL | 自 PHP 4.0.5 起有效。在 PHP 5.6.0 中废弃。
iconv.internal_encoding | "" | PHP_INI_ALL | 自 PHP 4.0.5 起有效。在 PHP 5.6.0 中废弃。

这是配置指令的简短说明。

Warning

有些系统（比如 IBM AIX） 使用 "ISO8859-1" 来代替 "ISO-8859-1"，所以在配置选项和函数参数中必须使用这个值。

iconv.input_encoding string
Warning

This feature has been DEPRECATED as of PHP 5.6.0. Relying on this feature is highly discouraged.

PHP 5.6 及以上的用户应该留空并以 default_charset 取代。

iconv.output_encoding string
Warning

This feature has been DEPRECATED as of PHP 5.6.0. Relying on this feature is highly discouraged.

PHP 5.6 及以上的用户应该留空并以 default_charset 取代。

iconv.internal_encoding string
Warning

This feature has been DEPRECATED as of PHP 5.6.0. Relying on this feature is highly discouraged.

PHP 5.6 及以上的用户应该留空并以 default_charset 取代。

安装
资源类型
安装／配置


预定义常量

自 PHP 4.3.0 起，它能够在运行时识别此扩展使用了哪种实现（implementation）。

iconv 常量
名称 | 类型 | 描述
ICONV_IMPL | string | 实现（implementation）的名称
ICONV_VERSION | string | 实现（implementation）的版本

Note:

通过这些常量编写依赖于实现的脚本是极其不建议的。

自 PHP 5.0.0 起，以下常量同样有效：

自 PHP 5.0.0 起的 iconv 常量
名称 | 类型 | 描述
ICONV_MIME_DECODE_STRICT | integer | 使用于 iconv_mime_decode() 的位掩码
ICONV_MIME_DECODE_CONTINUE_ON_ERROR | integer | 使用于 iconv_mime_decode() 的位掩码

资源类型
iconv 函数
iconv


iconv 函数

参见

参见 GNU Recode functions。

Table of Contents

  • iconv_get_encoding — 获取 iconv 扩展的内部配置变量
  • iconv_mime_decode_headers — 一次性解码多个 MIME 头字段
  • iconv_mime_decode — 解码一个MIME头字段
  • iconv_mime_encode — Composes a MIME header field
  • iconv_set_encoding — 为字符编码转换设定当前设置
  • iconv_strlen — 返回字符串的字符数统计
  • iconv_strpos — Finds position of first occurrence of a needle within a haystack
  • iconv_strrpos — Finds the last occurrence of a needle within a haystack
  • iconv_substr — 截取字符串的部分
  • iconv — 字符串按要求的字符编码来转换
  • ob_iconv_handler — 以输出缓冲处理程序转换字符编码
预定义常量
iconv_get_encoding
iconv


获取 iconv 扩展的内部配置变量

iconv 函数
iconv_mime_decode_headers
iconv 函数
PHP Manual

iconv_get_encoding

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

iconv_get_encoding — 获取 iconv 扩展的内部配置变量

说明

mixed iconv_get_encoding ([ string $type = "all" ] )

获取 iconv 扩展的内部配置变量。

参数

type

选项 type 的值可以是：

  • all
  • input_encoding
  • output_encoding
  • internal_encoding

返回值

成功时返回当前内部配置变量的值， 或者在失败时返回 FALSE。

如果省略了 type，或者设置为 "all"，iconv_get_encoding() 返回包含所有这些变量的数组。

范例

Example #1 iconv_get_encoding() 例子

<pre>
<?php
iconv_set_encoding("internal_encoding", "UTF-8");
iconv_set_encoding("output_encoding", "ISO-8859-1");
var_dump(iconv_get_encoding('all'));
?>
</pre>

以上例程会输出：

Array
(
    [input_encoding] => ISO-8859-1
    [output_encoding] => ISO-8859-1
    [internal_encoding] => UTF-8
)

参见

  • iconv_set_encoding() - 为字符编码转换设定当前设置
  • ob_iconv_handler() - 以输出缓冲处理程序转换字符编码

iconv 函数
iconv_mime_decode_headers
iconv 函数


一次性解码多个 MIME 头字段

iconv_get_encoding
iconv_mime_decode
iconv 函数
PHP Manual

iconv_mime_decode_headers

(PHP 5, PHP 7)

iconv_mime_decode_headers — 一次性解码多个 MIME 头字段

说明

array iconv_mime_decode_headers ( string $encoded_headers [, int $mode = 0 [, string $charset = ini_get("iconv.internal_encoding") ]] )

一次性解码多个 MIME 头字段。

参数

encoded_headers

编码过的头，是一个字符串。

mode

mode 决定了 iconv_mime_decode_headers() 遇到畸形 MIME 头字段时的行为。 你可以指定为以下位掩码的任意组合。

iconv_mime_decode_headers() 接受的位掩码
值 | 常量 | 描述
1 | ICONV_MIME_DECODE_STRICT | 如果设置了，给定的头将会以 » RFC2047 定义的标准完全一致。 这个选项默认禁用，因为大量有问题的邮件用户代理不遵循标准并产生不正确的 MIME 头。
2 | ICONV_MIME_DECODE_CONTINUE_ON_ERROR | 如果设置了，iconv_mime_decode_headers() 尝试忽略任何语法错误并继续处理指定的头。

charset

可选参数 charset 指定了字符集结果的表现。 如果省略了，将使用 iconv.internal_encoding。

返回值

成功时返回 encoded_headers 指定的 MIME 头的整套关联数组，解码时出现错误则返回 FALSE。

返回元素的每个键代表独立字段名，相应的元素代表一个字段值。 如果有多个同一名称的字段， iconv_mime_decode_headers() 自动将他们按出现顺序结合成数字索引的数组。

范例

Example #1 iconv_mime_decode_headers() 例子

<?php
$headers_string = <<<EOF
Subject: =?UTF-8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?=
To: example@example.com
Date: Thu, 1 Jan 1970 00:00:00 +0000
Message-Id: <example@example.com>
Received: from localhost (localhost [127.0.0.1]) by localhost
    with SMTP id example for <example@example.com>;
    Thu, 1 Jan 1970 00:00:00 +0000 (UTC)
    (envelope-from example-return-0000-example=example.com@example.com)
Received: (qmail 0 invoked by uid 65534); 1 Thu 2003 00:00:00 +0000

EOF;

$headers =  iconv_mime_decode_headers($headers_string, 0, "ISO-8859-1");
print_r($headers);
?>

以上例程会输出：

Array
(
    [Subject] => Prüfung Prüfung
    [To] => example@example.com
    [Date] => Thu, 1 Jan 1970 00:00:00 +0000
    [Message-Id] => <example@example.com>
    [Received] => Array
        (
            [0] => from localhost (localhost [127.0.0.1]) by localhost with SMTP id example for <example@example.com>; Thu, 1 Jan 1970 00:00:00 +0000 (UTC) (envelope-from example-return-0000-example=example.com@example.com)
            [1] => (qmail 0 invoked by uid 65534); 1 Thu 2003 00:00:00 +0000
        )

)

参见

  • iconv_mime_decode() - 解码一个MIME头字段
  • mb_decode_mimeheader() - 解码 MIME 头字段中的字符串
  • imap_mime_header_decode() - Decode MIME header elements
  • imap_base64() - Decode BASE64 encoded text
  • imap_qprint() - Convert a quoted-printable string to an 8 bit string

iconv_get_encoding
iconv_mime_decode
iconv 函数


解码一个MIME头字段

iconv_mime_decode_headers
iconv_mime_encode
iconv 函数
PHP Manual

iconv_mime_decode

(PHP 5, PHP 7)

iconv_mime_decode — 解码一个MIME头字段

说明

string iconv_mime_decode ( string $encoded_header [, int $mode = 0 [, string $charset = ini_get("iconv.internal_encoding") ]] )

解码一个MIME头字段.

参数

encoded_header

编码头,是一个字符串.

mode

模式决定了当iconv_mime_decode()遇到一个不规则的 MIME头字段时,对这个事件作出的行为.你可以指定以下位掩码的任意组合.

可以在iconv_mime_decode()中使用的位掩码
值 | 常量 | 描述
1 | ICONV_MIME_DECODE_STRICT | 如果使用该位掩码,传入的头字段将会完全一致的按照» RFC2047的标准定义被解码. 这个选项默认是禁用的,因为有很多零散的邮件用户代理商不遵守标准规范并且不生成正确的MIME头.
2 | ICONV_MIME_DECODE_CONTINUE_ON_ERROR | 如果使用该位掩码,iconv_mime_decode_headers() 将会试图忽略任何错误语法,并继续处理传入的头字段.

charset

可选的字符集参数,用指定的字符集表示结果.如果省略, iconv.internal_encoding 将会被默认使用.

返回值

如果解码成功,返回一个被解码的MIME字段, 如果在解码过程中出现一个错误,将返回FALSE .

范例

Example #1 iconv_mime_decode()实例

<?php
//返回结果: "Subject: Prüfung Prüfung"
echo iconv_mime_decode("Subject: =?UTF-8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?=",
                       0, "ISO-8859-1");
?>

参见

  • iconv_mime_decode_headers() - 一次性解码多个 MIME 头字段
  • mb_decode_mimeheader() - 解码 MIME 头字段中的字符串
  • imap_mime_header_decode() - Decode MIME header elements
  • imap_base64() - Decode BASE64 encoded text
  • imap_qprint() - Convert a quoted-printable string to an 8 bit string

iconv_mime_decode_headers
iconv_mime_encode
iconv 函数


Composes a MIME header field

iconv_mime_decode
iconv_set_encoding
iconv 函数
PHP Manual

iconv_mime_encode

(PHP 5, PHP 7)

iconv_mime_encode — Composes a MIME header field

说明

string iconv_mime_encode ( string $field_name , string $field_value [, array $preferences = NULL ] )

Composes and returns a string that represents a valid MIME header field, which looks like the following:

Subject: =?ISO-8859-1?Q?Pr=FCfung_f=FCr?= Entwerfen von einer MIME kopfzeile
In the above example, "Subject" is the field name and the portion that begins with "=?ISO-8859-1?..." is the field value.

参数

field_name

The field name.

field_value

The field value.

preferences

You can control the behaviour of iconv_mime_encode() by specifying an associative array that contains configuration items to the optional third parameter preferences. The items supported by iconv_mime_encode() are listed below. Note that item names are treated case-sensitive.

Configuration items supported by iconv_mime_encode()
Item | Type | Description | Default value | Example
scheme | string | Specifies the method to encode a field value by. The value of this item may be either "B" or "Q", where "B" stands for base64 encoding scheme and "Q" stands for quoted-printable encoding scheme. | B | B
input-charset | string | Specifies the character set in which the first parameter field_name and the second parameter field_value are presented. If not given, iconv_mime_encode() assumes those parameters are presented to it in the iconv.internal_encoding ini setting. | iconv.internal_encoding | ISO-8859-1
output-charset | string | Specifies the character set to use to compose the MIME header. | iconv.internal_encoding | UTF-8
line-length | integer | Specifies the maximum length of the header lines. The resulting header is "folded" to a set of multiple lines in case the resulting header field would be longer than the value of this parameter, according to » RFC2822 - Internet Message Format. If not given, the length will be limited to 76 characters. | 76 | 996
line-break-chars | string | Specifies the sequence of characters to append to each line as an end-of-line sign when "folding" is performed on a long header field. If not given, this defaults to "\r\n" (CR LF). Note that this parameter is always treated as an ASCII string regardless of the value of input-charset. | \r\n | \n

返回值

Returns an encoded MIME field on success, or FALSE if an error occurs during the encoding.

范例

Example #1 iconv_mime_encode() example

<?php
$preferences = array(
    "input-charset" => "ISO-8859-1",
    "output-charset" => "UTF-8",
    "line-length" => 76,
    "line-break-chars" => "\n"
);
$preferences["scheme"] = "Q";
// This yields "Subject: =?UTF-8?Q?Pr=C3=BCfung=20Pr=C3=BCfung?="
echo iconv_mime_encode("Subject", "Prüfung Prüfung", $preferences);

$preferences["scheme"] = "B";
// This yields "Subject: =?UTF-8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?="
echo iconv_mime_encode("Subject", "Prüfung Prüfung", $preferences);
?>

参见

  • imap_binary() - Convert an 8bit string to a base64 string
  • mb_encode_mimeheader() - 为 MIME 头编码字符串
  • imap_8bit() - Convert an 8bit string to a quoted-printable string
  • quoted_printable_encode() - 将 8-bit 字符串转换成 quoted-printable 字符串

iconv_mime_decode
iconv_set_encoding
iconv 函数


为字符编码转换设定当前设置

iconv_mime_encode
iconv_strlen
iconv 函数
PHP Manual

iconv_set_encoding

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

iconv_set_encoding — 为字符编码转换设定当前设置

说明

bool iconv_set_encoding ( string $type , string $charset )

将 type 设置的值从内部配置变量更改为 charset。

参数

type

type 的值可以是以下其中任意一个：

  • input_encoding
  • output_encoding
  • internal_encoding

charset

字符集。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 iconv_set_encoding() 例子

<?php
iconv_set_encoding("internal_encoding", "UTF-8");
iconv_set_encoding("output_encoding", "ISO-8859-1");
?>

参见

  • iconv_get_encoding() - 获取 iconv 扩展的内部配置变量
  • ob_iconv_handler() - 以输出缓冲处理程序转换字符编码

iconv_mime_encode
iconv_strlen
iconv 函数


返回字符串的字符数统计

iconv_set_encoding
iconv_strpos
iconv 函数
PHP Manual

iconv_strlen

(PHP 5, PHP 7)

iconv_strlen — 返回字符串的字符数统计

说明

int iconv_strlen ( string $str [, string $charset = ini_get("iconv.internal_encoding") ] )

和 strlen() 不同的是，iconv_strlen() 统计了给定的字节序列 str 中出现字符数的统计，基于指定的字符集，其产生的结果不一定和字符字节数相等。

参数

str

该字符串。

charset

如果省略了 charset 参数，假设 str 的编码为 iconv.internal_encoding。

返回值

返回 str 字符数的统计，是整型。

参见

  • grapheme_strlen() - Get string length in grapheme units
  • mb_strlen() - 获取字符串的长度
  • strlen() - 获取字符串长度

iconv_set_encoding
iconv_strpos
iconv 函数


Finds position of first occurrence of a needle within a haystack

iconv_strlen
iconv_strrpos
iconv 函数
PHP Manual

iconv_strpos

(PHP 5, PHP 7)

iconv_strpos — Finds position of first occurrence of a needle within a haystack

说明

int iconv_strpos ( string $haystack , string $needle [, int $offset = 0 [, string $charset = ini_get("iconv.internal_encoding") ]] )

Finds position of first occurrence of a needle within a haystack.

In contrast to strpos(), the return value of iconv_strpos() is the number of characters that appear before the needle, rather than the offset in bytes to the position where the needle has been found. The characters are counted on the basis of the specified character set charset.

参数

haystack

The entire string.

needle

The searched substring.

offset

The optional offset parameter specifies the position from which the search should be performed. If the offset is negative, it is counted from the end of the string.

charset

If charset parameter is omitted, string are assumed to be encoded in iconv.internal_encoding.

If haystack or needle is not a string, it is converted to a string and applied as the ordinal value of a character.

返回值

Returns the numeric position of the first occurrence of needle in haystack.

If needle is not found, iconv_strpos() will return FALSE.

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

更新日志

版本 | 说明
7.1.0 | Support for negative offsets has been added.

参见

  • strpos() - 查找字符串首次出现的位置
  • iconv_strrpos() - Finds the last occurrence of a needle within a haystack
  • mb_strpos() - 查找字符串在另一个字符串中首次出现的位置

iconv_strlen
iconv_strrpos
iconv 函数


Finds the last occurrence of a needle within a haystack

iconv_strpos
iconv_substr
iconv 函数
PHP Manual

iconv_strrpos

(PHP 5, PHP 7)

iconv_strrpos — Finds the last occurrence of a needle within a haystack

说明

int iconv_strrpos ( string $haystack , string $needle [, string $charset = ini_get("iconv.internal_encoding") ] )

Finds the last occurrence of a needle within a haystack.

In contrast to strrpos(), the return value of iconv_strrpos() is the number of characters that appear before the needle, rather than the offset in bytes to the position where the needle has been found. The characters are counted on the basis of the specified character set charset.

参数

haystack

The entire string.

needle

The searched substring.

charset

If charset parameter is omitted, string are assumed to be encoded in iconv.internal_encoding.

If haystack or needle is not a string, it is converted to a string and applied as the ordinal value of a character.

返回值

Returns the numeric position of the last occurrence of needle in haystack.

If needle is not found, iconv_strrpos() will return FALSE.

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

参见

  • strrpos() - 计算指定字符串在目标字符串中最后一次出现的位置
  • iconv_strpos() - Finds position of first occurrence of a needle within a haystack
  • mb_strrpos() - 查找字符串在一个字符串中最后出现的位置

iconv_strpos
iconv_substr
iconv 函数


截取字符串的部分

iconv_strrpos
iconv
iconv 函数
PHP Manual

iconv_substr

(PHP 5, PHP 7)

iconv_substr — 截取字符串的部分

说明

string iconv_substr ( string $str , int $offset [, int $length = iconv_strlen($str, $charset) [, string $charset = ini_get("iconv.internal_encoding") ]] )

根据 offset 和 length 参数指定 str 截取的部分。

参数

str

原始字符串。

offset

如果 offset 是非负数，iconv_substr() 从 str 开头第 offset 个字符开始截出部分，从 0 开始计数。

如果 offset 是负数，iconv_substr() 从 str 末尾向前 offset 个字符开始截取。

length

如果指定了 length 并且是正数，返回的值从 offset 截取部分，最多包含 length 个字符（取决于 string 的长度）。

如果传入了负数的 length， iconv_substr() 将从第 offset 个字符到离末尾 length 个字符截出 str 的部分。 如果 offset 也是负数，则开始位置计算规则的解释见以上。

charset

如果省略了参数 charset，string 的编码被认定为 iconv.internal_encoding。

注意，offset 和 length 参数总是被认为字符表现的偏移，基于 charset 检测到的字符集进行统计计算，而相对应的 substr() 则是基于字节的位移来计算。

返回值

返回 offset 和 length 参数指定的 str 的部分。

如果 str 比 offset 字符数更短，将会返回 FALSE。

参见

  • substr() - 返回字符串的子串
  • mb_substr() - 获取部分字符串
  • mb_strcut() - 获取字符的一部分

iconv_strrpos
iconv
iconv 函数


字符串按要求的字符编码来转换

iconv_substr
ob_iconv_handler
iconv 函数
PHP Manual

iconv

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

iconv — 字符串按要求的字符编码来转换

说明

string iconv ( string $in_charset , string $out_charset , string $str )

将字符串 str 从 in_charset 转换编码到 out_charset。

参数

in_charset

输入的字符集。

out_charset

输出的字符集。

如果你在 out_charset 后添加了字符串 //TRANSLIT，将启用转写（transliteration）功能。这个意思是，当一个字符不能被目标字符集所表示时，它可以通过一个或多个形似的字符来近似表达。 如果你添加了字符串 //IGNORE，不能以目标字符集表达的字符将被默默丢弃。 否则，str 从第一个无效字符开始截断并导致一个 E_NOTICE。

str

要转换的字符串。

返回值

返回转换后的字符串， 或者在失败时返回 FALSE。

范例

Example #1 iconv() 例子

<?php
$text = "This is the Euro symbol '�'.";

echo 'Original : ', $text, PHP_EOL;
echo 'TRANSLIT : ', iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text), PHP_EOL;
echo 'IGNORE   : ', iconv("UTF-8", "ISO-8859-1//IGNORE", $text), PHP_EOL;
echo 'Plain    : ', iconv("UTF-8", "ISO-8859-1", $text), PHP_EOL;

?>

以上例程的输出类似于：

Original : This is the Euro symbol '�'.
TRANSLIT : This is the Euro symbol 'EUR'.
IGNORE   : This is the Euro symbol ''.
Plain    :
Notice: iconv(): Detected an illegal character in input string in .\iconv-example.php on line 7
This is the Euro symbol '

iconv_substr
ob_iconv_handler
iconv 函数


以输出缓冲处理程序转换字符编码

iconv
intl
iconv 函数
PHP Manual

ob_iconv_handler

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

ob_iconv_handler — 以输出缓冲处理程序转换字符编码

说明

string ob_iconv_handler ( string $contents , int $status )

将字符编码从 internal_encoding 转换到 output_encoding。

internal_encoding 和 output_encoding 应当在 php.ini 文件或 iconv_set_encoding() 中定义。

参数

关于处理程序参数的信息，参见 ob_start()。

返回值

关于处理程序返回值的信息，参见 ob_start()。

范例

Example #1 ob_iconv_handler() 例子：

<?php
iconv_set_encoding("internal_encoding", "UTF-8");
iconv_set_encoding("output_encoding", "ISO-8859-1");
ob_start("ob_iconv_handler"); // 开始输出缓冲
?>

参见

  • iconv_get_encoding() - 获取 iconv 扩展的内部配置变量
  • iconv_set_encoding() - 为字符编码转换设定当前设置
  • 输出控制函数

iconv
intl
iconv 函数


Internationalization Functions

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Basic usage of this extension
  • Collator — The Collator class
    • Collator::asort — Sort array maintaining index association
    • Collator::compare — Compare two Unicode strings
    • Collator::__construct — Create a collator
    • Collator::create — Create a collator
    • Collator::getAttribute — Get collation attribute value
    • Collator::getErrorCode — Get collator's last error code
    • Collator::getErrorMessage — Get text for collator's last error code
    • Collator::getLocale — Get the locale name of the collator
    • Collator::getSortKey — Get sorting key for a string
    • Collator::getStrength — Get current collation strength
    • Collator::setAttribute — Set collation attribute
    • Collator::setStrength — Set collation strength
    • Collator::sortWithSortKeys — Sort array using specified collator and sort keys
    • Collator::sort — Sort array using specified collator
  • NumberFormatter — The NumberFormatter class
    • NumberFormatter::create — Create a number formatter
    • NumberFormatter::formatCurrency — Format a currency value
    • NumberFormatter::format — Format a number
    • NumberFormatter::getAttribute — Get an attribute
    • NumberFormatter::getErrorCode — Get formatter's last error code.
    • NumberFormatter::getErrorMessage — Get formatter's last error message.
    • NumberFormatter::getLocale — Get formatter locale
    • NumberFormatter::getPattern — Get formatter pattern
    • NumberFormatter::getSymbol — Get a symbol value
    • NumberFormatter::getTextAttribute — Get a text attribute
    • NumberFormatter::parseCurrency — Parse a currency number
    • NumberFormatter::parse — Parse a number
    • NumberFormatter::setAttribute — Set an attribute
    • NumberFormatter::setPattern — Set formatter pattern
    • NumberFormatter::setSymbol — Set a symbol value
    • NumberFormatter::setTextAttribute — Set a text attribute
  • Locale — The Locale class
    • Locale::acceptFromHttp — Tries to find out best available locale based on HTTP "Accept-Language" header
    • Locale::canonicalize — Canonicalize the locale string
    • Locale::composeLocale — Returns a correctly ordered and delimited locale ID
    • Locale::filterMatches — Checks if a language tag filter matches with locale
    • Locale::getAllVariants — Gets the variants for the input locale
    • Locale::getDefault — Gets the default locale value from the INTL global 'default_locale'
    • Locale::getDisplayLanguage — Returns an appropriately localized display name for language of the inputlocale
    • Locale::getDisplayName — Returns an appropriately localized display name for the input locale
    • Locale::getDisplayRegion — Returns an appropriately localized display name for region of the input locale
    • Locale::getDisplayScript — Returns an appropriately localized display name for script of the input locale
    • Locale::getDisplayVariant — Returns an appropriately localized display name for variants of the input locale
    • Locale::getKeywords — Gets the keywords for the input locale
    • Locale::getPrimaryLanguage — Gets the primary language for the input locale
    • Locale::getRegion — Gets the region for the input locale
    • Locale::getScript — Gets the script for the input locale
    • Locale::lookup — Searches the language tag list for the best match to the language
    • Locale::parseLocale — Returns a key-value array of locale ID subtag elements.
    • Locale::setDefault — sets the default runtime locale
  • Normalizer — The Normalizer class
    • Normalizer::isNormalized — Checks if the provided string is already in the specified normalization form.
    • Normalizer::normalize — Normalizes the input provided and returns the normalized string
  • MessageFormatter — The MessageFormatter class
    • MessageFormatter::create — Constructs a new Message Formatter
    • MessageFormatter::formatMessage — Quick format message
    • MessageFormatter::format — Format the message
    • MessageFormatter::getErrorCode — Get the error code from last operation
    • MessageFormatter::getErrorMessage — Get the error text from the last operation
    • MessageFormatter::getLocale — Get the locale for which the formatter was created.
    • MessageFormatter::getPattern — Get the pattern used by the formatter
    • MessageFormatter::parseMessage — Quick parse input string
    • MessageFormatter::parse — Parse input string according to pattern
    • MessageFormatter::setPattern — Set the pattern used by the formatter
  • IntlCalendar — The IntlCalendar class
    • IntlCalendar::add — Add a (signed) amount of time to a field
    • IntlCalendar::after — Whether this object?s time is after that of the passed object
    • IntlCalendar::before — Whether this object?s time is before that of the passed object
    • IntlCalendar::clear — Clear a field or all fields
    • IntlCalendar::__construct — Private constructor for disallowing instantiation
    • IntlCalendar::createInstance — Create a new IntlCalendar
    • IntlCalendar::equals — Compare time of two IntlCalendar objects for equality
    • IntlCalendar::fieldDifference — Calculate difference between given time and this object?s time
    • IntlCalendar::fromDateTime — Create an IntlCalendar from a DateTime object or string
    • IntlCalendar::get — Get the value for a field
    • IntlCalendar::getActualMaximum — The maximum value for a field, considering the object?s current time
    • IntlCalendar::getActualMinimum — The minimum value for a field, considering the object?s current time
    • IntlCalendar::getAvailableLocales — Get array of locales for which there is data
    • IntlCalendar::getDayOfWeekType — Tell whether a day is a weekday, weekend or a day that has a transition between the two
    • IntlCalendar::getErrorCode — Get last error code on the object
    • IntlCalendar::getErrorMessage — Get last error message on the object
    • IntlCalendar::getFirstDayOfWeek — Get the first day of the week for the calendar?s locale
    • IntlCalendar::getGreatestMinimum — Get the largest local minimum value for a field
    • IntlCalendar::getKeywordValuesForLocale — Get set of locale keyword values
    • IntlCalendar::getLeastMaximum — Get the smallest local maximum for a field
    • IntlCalendar::getLocale — Get the locale associated with the object
    • IntlCalendar::getMaximum — Get the global maximum value for a field
    • IntlCalendar::getMinimalDaysInFirstWeek — Get minimal number of days the first week in a year or month can have
    • IntlCalendar::getMinimum — Get the global minimum value for a field
    • IntlCalendar::getNow — Get number representing the current time
    • IntlCalendar::getRepeatedWallTimeOption — Get behavior for handling repeating wall time
    • IntlCalendar::getSkippedWallTimeOption — Get behavior for handling skipped wall time
    • IntlCalendar::getTime — Get time currently represented by the object
    • IntlCalendar::getTimeZone — Get the object?s timezone
    • IntlCalendar::getType — Get the calendar type
    • IntlCalendar::getWeekendTransition — Get time of the day at which weekend begins or ends
    • IntlCalendar::inDaylightTime — Whether the object?s time is in Daylight Savings Time
    • IntlCalendar::isEquivalentTo — Whether another calendar is equal but for a different time
    • IntlCalendar::isLenient — Whether date/time interpretation is in lenient mode
    • IntlCalendar::isSet — Whether a field is set
    • IntlCalendar::isWeekend — Whether a certain date/time is in the weekend
    • IntlCalendar::roll — Add value to field without carrying into more significant fields
    • IntlCalendar::set — Set a time field or several common fields at once
    • IntlCalendar::setFirstDayOfWeek — Set the day on which the week is deemed to start
    • IntlCalendar::setLenient — Set whether date/time interpretation is to be lenient
    • IntlCalendar::setMinimalDaysInFirstWeek — Set minimal number of days the first week in a year or month can have
    • IntlCalendar::setRepeatedWallTimeOption — Set behavior for handling repeating wall times at negative timezone offset transitions
    • IntlCalendar::setSkippedWallTimeOption — Set behavior for handling skipped wall times at positive timezone offset transitions
    • IntlCalendar::setTime — Set the calendar time in milliseconds since the epoch
    • IntlCalendar::setTimeZone — Set the timezone used by this calendar
    • IntlCalendar::toDateTime — Convert an IntlCalendar into a DateTime object
  • IntlTimeZone — The IntlTimeZone class
    • IntlTimeZone::countEquivalentIDs — Get the number of IDs in the equivalency group that includes the given ID
    • IntlTimeZone::createDefault — Create a new copy of the default timezone for this host
    • IntlTimeZone::createEnumeration — Get an enumeration over time zone IDs associated with the given country or offset
    • IntlTimeZone::createTimeZone — Create a timezone object for the given ID
    • IntlTimeZone::fromDateTimeZone — Create a timezone object from DateTimeZone
    • IntlTimeZone::getCanonicalID — Get the canonical system timezone ID or the normalized custom time zone ID for the given time zone ID
    • IntlTimeZone::getDisplayName — Get a name of this time zone suitable for presentation to the user
    • IntlTimeZone::getDSTSavings — Get the amount of time to be added to local standard time to get local wall clock time
    • IntlTimeZone::getEquivalentID — Get an ID in the equivalency group that includes the given ID
    • IntlTimeZone::getErrorCode — Get last error code on the object
    • IntlTimeZone::getErrorMessage — Get last error message on the object
    • IntlTimeZone::getGMT — Create GMT (UTC) timezone
    • IntlTimeZone::getID — Get timezone ID
    • IntlTimeZone::getOffset — Get the time zone raw and GMT offset for the given moment in time
    • IntlTimeZone::getRawOffset — Get the raw GMT offset (before taking daylight savings time into account
    • IntlTimeZone::getTZDataVersion — Get the timezone data version currently used by ICU
    • IntlTimeZone::hasSameRules — Check if this zone has the same rules and offset as another zone
    • IntlTimeZone::toDateTimeZone — Convert to DateTimeZone object
    • IntlTimeZone::useDaylightTime — Check if this time zone uses daylight savings time
  • IntlDateFormatter — The IntlDateFormatter class
    • IntlDateFormatter::create — Create a date formatter
    • IntlDateFormatter::format — Format the date/time value as a string
    • IntlDateFormatter::formatObject — Formats an object
    • IntlDateFormatter::getCalendar — Get the calendar type used for the IntlDateFormatter
    • IntlDateFormatter::getDateType — Get the datetype used for the IntlDateFormatter
    • IntlDateFormatter::getErrorCode — Get the error code from last operation
    • IntlDateFormatter::getErrorMessage — Get the error text from the last operation.
    • IntlDateFormatter::getLocale — Get the locale used by formatter
    • IntlDateFormatter::getPattern — Get the pattern used for the IntlDateFormatter
    • IntlDateFormatter::getTimeType — Get the timetype used for the IntlDateFormatter
    • IntlDateFormatter::getTimeZoneId — Get the timezone-id used for the IntlDateFormatter
    • IntlDateFormatter::getCalendarObject — Get copy of formatter?s calendar object
    • IntlDateFormatter::getTimeZone — Get formatter?s timezone
    • IntlDateFormatter::isLenient — Get the lenient used for the IntlDateFormatter
    • IntlDateFormatter::localtime — Parse string to a field-based time value
    • IntlDateFormatter::parse — Parse string to a timestamp value
    • IntlDateFormatter::setCalendar — Sets the calendar type used by the formatter
    • IntlDateFormatter::setLenient — Set the leniency of the parser
    • IntlDateFormatter::setPattern — Set the pattern used for the IntlDateFormatter
    • IntlDateFormatter::setTimeZoneId — Sets the time zone to use
    • IntlDateFormatter::setTimeZone — Sets formatter?s timezone
  • ResourceBundle — The ResourceBundle class
    • ResourceBundle::count — Get number of elements in the bundle
    • ResourceBundle::create — Create a resource bundle
    • ResourceBundle::getErrorCode — Get bundle's last error code.
    • ResourceBundle::getErrorMessage — Get bundle's last error message.
    • ResourceBundle::get — Get data from the bundle
    • ResourceBundle::getLocales — Get supported locales
  • Spoofchecker — The Spoofchecker class
    • Spoofchecker::areConfusable — Checks if given strings can be confused
    • Spoofchecker::__construct — Constructor
    • Spoofchecker::isSuspicious — Checks if a given text contains any suspicious characters
    • Spoofchecker::setAllowedLocales — Locales to use when running checks
    • Spoofchecker::setChecks — Set the checks to run
  • Transliterator — The Transliterator class
    • Transliterator::__construct — Private constructor to deny instantiation
    • Transliterator::create — Create a transliterator
    • Transliterator::createFromRules — Create transliterator from rules
    • Transliterator::createInverse — Create an inverse transliterator
    • Transliterator::getErrorCode — Get last error code
    • Transliterator::getErrorMessage — Get last error message
    • Transliterator::listIDs — Get transliterator IDs
    • Transliterator::transliterate — Transliterate a string
  • IntlBreakIterator — The IntlBreakIterator class
    • IntlBreakIterator::__construct — Private constructor for disallowing instantiation
    • IntlBreakIterator::createCharacterInstance — Create break iterator for boundaries of combining character sequences
    • IntlBreakIterator::createCodePointInstance — Create break iterator for boundaries of code points
    • IntlBreakIterator::createLineInstance — Create break iterator for logically possible line breaks
    • IntlBreakIterator::createSentenceInstance — Create break iterator for sentence breaks
    • IntlBreakIterator::createTitleInstance — Create break iterator for title-casing breaks
    • IntlBreakIterator::createWordInstance — Create break iterator for word breaks
    • IntlBreakIterator::current — Get index of current position
    • IntlBreakIterator::first — Set position to the first character in the text
    • IntlBreakIterator::following — Advance the iterator to the first boundary following specified offset
    • IntlBreakIterator::getErrorCode — Get last error code on the object
    • IntlBreakIterator::getErrorMessage — Get last error message on the object
    • IntlBreakIterator::getLocale — Get the locale associated with the object
    • IntlBreakIterator::getPartsIterator — Create iterator for navigating fragments between boundaries
    • IntlBreakIterator::getText — Get the text being scanned
    • IntlBreakIterator::isBoundary — Tell whether an offset is a boundary?s offset
    • IntlBreakIterator::last — Set the iterator position to index beyond the last character
    • IntlBreakIterator::next — Advance the iterator the next boundary
    • IntlBreakIterator::preceding — Set the iterator position to the first boundary before an offset
    • IntlBreakIterator::previous — Set the iterator position to the boundary immediately before the current
    • IntlBreakIterator::setText — Set the text being scanned
  • IntlRuleBasedBreakIterator — The IntlRuleBasedBreakIterator class
    • IntlRuleBasedBreakIterator::__construct — Create iterator from ruleset
    • IntlRuleBasedBreakIterator::getBinaryRules — Get the binary form of compiled rules
    • IntlRuleBasedBreakIterator::getRules — Get the rule set used to create this object
    • IntlRuleBasedBreakIterator::getRuleStatus — Get the largest status value from the break rules that determined the current break position
    • IntlRuleBasedBreakIterator::getRuleStatusVec — Get the status values from the break rules that determined the current break position
  • IntlCodePointBreakIterator — The IntlCodePointBreakIterator class
    • IntlCodePointBreakIterator::getLastCodePoint — Get last code point passed over after advancing or receding the iterator
  • IntlPartsIterator — The IntlPartsIterator class
    • IntlPartsIterator::getBreakIterator — Get IntlBreakIterator backing this parts iterator
  • UConverter — The UConverter class
    • UConverter::__construct — Create UConverter object
    • UConverter::convert — Convert string from one charset to another
    • UConverter::fromUCallback — Default "from" callback function
    • UConverter::getAliases — Get the aliases of the given name
    • UConverter::getAvailable — Get the available canonical converter names
    • UConverter::getDestinationEncoding — Get the destination encoding
    • UConverter::getDestinationType — Get the destination converter type
    • UConverter::getErrorCode — Get last error code on the object
    • UConverter::getErrorMessage — Get last error message on the object
    • UConverter::getSourceEncoding — Get the source encoding
    • UConverter::getSourceType — Get the source convertor type
    • UConverter::getStandards — Get standards associated to converter names
    • UConverter::getSubstChars — Get substitution chars
    • UConverter::reasonText — Get string representation of the callback reason
    • UConverter::setDestinationEncoding — Set the destination encoding
    • UConverter::setSourceEncoding — Set the source encoding
    • UConverter::setSubstChars — Set the substitution chars
    • UConverter::toUCallback — Default "to" callback function
    • UConverter::transcode — Convert string from one charset to another
  • Grapheme 函数
    • grapheme_extract — Function to extract a sequence of default grapheme clusters from a text buffer, which must be encoded in UTF-8.
    • grapheme_stripos — Find position (in grapheme units) of first occurrence of a case-insensitive string
    • grapheme_stristr — Returns part of haystack string from the first occurrence of case-insensitive needle to the end of haystack.
    • grapheme_strlen — Get string length in grapheme units
    • grapheme_strpos — Find position (in grapheme units) of first occurrence of a string
    • grapheme_strripos — Find position (in grapheme units) of last occurrence of a case-insensitive string
    • grapheme_strrpos — Find position (in grapheme units) of last occurrence of a string
    • grapheme_strstr — Returns part of haystack string from the first occurrence of needle to the end of haystack.
    • grapheme_substr — Return part of a string
  • IDN 函数
    • idn_to_ascii — Convert domain name to IDNA ASCII form.
    • idn_to_utf8 — Convert domain name from IDNA ASCII to Unicode.
  • IntlChar
    • IntlChar::charAge — Get the "age" of the code point
    • IntlChar::charDigitValue — Get the decimal digit value of a decimal digit character
    • IntlChar::charDirection — Get bidirectional category value for a code point
    • IntlChar::charFromName — Find Unicode character by name and return its code point value
    • IntlChar::charMirror — Get the "mirror-image" character for a code point
    • IntlChar::charName — Retrieve the name of a Unicode character
    • IntlChar::charType — Get the general category value for a code point
    • IntlChar::chr — Return Unicode character by code point value
    • IntlChar::digit — Get the decimal digit value of a code point for a given radix
    • IntlChar::enumCharNames — Enumerate all assigned Unicode characters within a range
    • IntlChar::enumCharTypes — Enumerate all code points with their Unicode general categories
    • IntlChar::foldCase — Perform case folding on a code point
    • IntlChar::forDigit — Get character representation for a given digit and radix
    • IntlChar::getBidiPairedBracket — Get the paired bracket character for a code point
    • IntlChar::getBlockCode — Get the Unicode allocation block containing a code point
    • IntlChar::getCombiningClass — Get the combining class of a code point
    • IntlChar::getFC_NFKC_Closure — Get the FC_NFKC_Closure property for a code point
    • IntlChar::getIntPropertyMaxValue — Get the max value for a Unicode property
    • IntlChar::getIntPropertyMinValue — Get the min value for a Unicode property
    • IntlChar::getIntPropertyValue — Get the value for a Unicode property for a code point
    • IntlChar::getNumericValue — Get the numeric value for a Unicode code point
    • IntlChar::getPropertyEnum — Get the property constant value for a given property name
    • IntlChar::getPropertyName — Get the Unicode name for a property
    • IntlChar::getPropertyValueEnum — Get the property value for a given value name
    • IntlChar::getPropertyValueName — Get the Unicode name for a property value
    • IntlChar::getUnicodeVersion — Get the Unicode version
    • IntlChar::hasBinaryProperty — Check a binary Unicode property for a code point
    • IntlChar::isalnum — Check if code point is an alphanumeric character
    • IntlChar::isalpha — Check if code point is a letter character
    • IntlChar::isbase — Check if code point is a base character
    • IntlChar::isblank — Check if code point is a "blank" or "horizontal space" character
    • IntlChar::iscntrl — Check if code point is a control character
    • IntlChar::isdefined — Check whether the code point is defined
    • IntlChar::isdigit — Check if code point is a digit character
    • IntlChar::isgraph — Check if code point is a graphic character
    • IntlChar::isIDIgnorable — Check if code point is an ignorable character
    • IntlChar::isIDPart — Check if code point is permissible in an identifier
    • IntlChar::isIDStart — Check if code point is permissible as the first character in an identifier
    • IntlChar::isISOControl — Check if code point is an ISO control code
    • IntlChar::isJavaIDPart — Check if code point is permissible in a Java identifier
    • IntlChar::isJavaIDStart — Check if code point is permissible as the first character in a Java identifier
    • IntlChar::isJavaSpaceChar — Check if code point is a space character according to Java
    • IntlChar::islower — Check if code point is a lowercase letter
    • IntlChar::isMirrored — Check if code point has the Bidi_Mirrored property
    • IntlChar::isprint — Check if code point is a printable character
    • IntlChar::ispunct — Check if code point is punctuation character
    • IntlChar::isspace — Check if code point is a space character
    • IntlChar::istitle — Check if code point is a titlecase letter
    • IntlChar::isUAlphabetic — Check if code point has the Alphabetic Unicode property
    • IntlChar::isULowercase — Check if code point has the Lowercase Unicode property
    • IntlChar::isupper — Check if code point has the general category "Lu" (uppercase letter)
    • IntlChar::isUUppercase — Check if code point has the Uppercase Unicode property
    • IntlChar::isUWhiteSpace — Check if code point has the White_Space Unicode property
    • IntlChar::isWhitespace — Check if code point is a whitespace character according to ICU
    • IntlChar::isxdigit — Check if code point is a hexadecimal digit
    • IntlChar::ord — Return Unicode code point value of character
    • IntlChar::tolower — Make Unicode character lowercase
    • IntlChar::totitle — Make Unicode character titlecase
    • IntlChar::toupper — Make Unicode character uppercase
  • IntlException — Exception class for intl errors
  • IntlIterator — The IntlIterator class
    • IntlIterator::current — Get the current element
    • IntlIterator::key — Get the current key
    • IntlIterator::next — Move forward to the next element
    • IntlIterator::rewind — Rewind the iterator to the first element
    • IntlIterator::valid — Check if current position is valid
  • intl 函数
    • intl_error_name — Get symbolic name for a given error code
    • intl_get_error_code — Get the last error code
    • intl_get_error_message — Get description of the last error
    • intl_is_failure — Check whether the given error code indicates failure
ob_iconv_handler
简介
国际化与字符编码支持


简介

Internationalization extension (further is referred as Intl) is a wrapper for » ICU library, enabling PHP programmers to perform various locale-aware operations including but not limited to formatting, transliteration, encoding conversion, calendar operations, » UCA-conformant collation, locating text boundaries and working with locale identifiers, timezones and graphemes,

It tends to closely follow ICU APIs, so that people having experience working with ICU in either C/C++ or Java could easily use the PHP API. Also, this way ICU documentation would be useful to understand various ICU functions.

Intl consists of several modules, each of them exposes the corresponding ICU API:

  • Collator: provides string comparison capability with support for appropriate locale-sensitive sort orderings.
  • Number Formatter: allows to display number according to the localized format or given pattern or set of rules, and to parse strings into numbers.
  • Message Formatter: allows to create messages incorporating data (such as numbers or dates) formatted according to given pattern and locale rules, and parse messages extracting data from them. It can handle plurals, locale-aware numbers, currencies, conditions and much more.
  • Normalizer: provides a function to transform text into one of the Unicode normalization forms, and provides a routine to test if a given string is already normalized.
  • Locale: provides interaction with locale identifiers in the form of functions to get subtags from locale identifier; parse, compose, match(lookup and filter) locale identifiers.
  • Calendar: provides a class which could be used for locale-aware calendar operations and getting various information such as timezone for locale chosen, first day of week or if it's daylight saving time now.
  • Timezone: provides a wrapper around the » "Olson" database which has information about all the timezones around the world.
  • Date formatter: allows to display date and time according to the localized format or given pattern or set of rules, and to parse strings into date and time.
  • Transliterator: allows getting latin representation of strings in various languages.

Links

  • » Miscellaneous ICU docs

  • » ICU User Guide

  • » Unicode Collation Algorithm

intl
安装／配置
intl


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
intl


需求

To build the extension you need to install the » ICU library, version 4.0.0 or newer is required.

This extension is bundled with PHP as of PHP version 5.3.0. Alternatively, the PECL version of this extension may be used with all PHP versions greater than 5.2.0 (5.2.4+ recommended).

安装／配置
安装
安装／配置


安装

This extension may be installed using the bundled version as of PHP 5.3.0, or as a PECL extension as of PHP 5.2.0. In other words, there are two methods to install the intl extension.

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/intl.

Alternatively, --enable-intl will enable the bundled version while compiling PHP.

If your ICU is installed to a non-standard directory then you might want to specify its location in LD_LIBRARY_PATH environment variable so that dynamic linker can find it:

$ export LD_LIBRARY_PATH=/opt/icu/lib

Otherwise, if PHP and ICU are installed to their default locations, then the additional options to `configure' are not needed.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Intl 配置选项
名字 | 默认 | 可修改范围 | 更新日志
intl.default_locale |  | PHP_INI_ALL |
intl.error_level | 0 | PHP_INI_ALL |
intl.use_exceptions | 0 | PHP_INI_ALL | Available since PHP 5.5 and PECL 3.0.0a1

这是配置指令的简短说明。

intl.default_locale string

The locale that will be used in intl functions when none is specified (either by omitting the corresponding argument or by passing NULL). These are ICU locales, not system locales. The built-in ICU locales and their data can be explored at » http://demo.icu-project.org/icu-bin/locexp.

The default value is empty, which forces the usage of ICU's default locale. Once set, the ini setting cannot be reset to this default value. It is not recommended that this default be relied on, as its effective value depends on the server's environment.

intl.error_level integer

The level of the error messages generated when an error occurs in ICU functions. This is a PHP error level, such as E_WARNING. It can be set to 0 in order to inhibit the messages. This does not affect the return values indicating error or the values returned by intl_get_error_code() or by the class specific methods for retrieving error codes and messages. Choosing E_ERROR will terminate the script whenever an error condition is found on intl classes.

The default value is 0.

intl.use_exceptions integer

If set to true, an exception will be raised whenever an error occurs in an intl function. The exception will be of type IntlException. This is possibly in addition to the error message generated due to intl.error_level.

The default value is FALSE.

安装
资源类型
安装／配置


预定义常量

INTL_MAX_LOCALE_LEN (integer)
Limit on locale length, set to 80 in PHP code. Locale names longer than this limit will not be accepted.
IDNA_DEFAULT (integer)
Prohibit processing of unassigned codepoints in the input for IDN functions and do not check if the input conforms to domain name ASCII rules.
IDNA_ALLOW_UNASSIGNED (integer)
Allow processing of unassigned codepoints in the input for IDN functions.
IDNA_USE_STD3_RULES (integer)
Check if the input for IDN functions conforms to domain name ASCII rules.
IDNA_CHECK_BIDI (integer)
Check whether the input conforms to the BiDi rules. Ignored by the IDNA2003 implementation, which always performs this check.
IDNA_CHECK_CONTEXTJ (integer)
Check whether the input conforms to the CONTEXTJ rules. Ignored by the IDNA2003 implementation, as this check is new in IDNA2008.
IDNA_NONTRANSITIONAL_TO_ASCII (integer)
Option for nontransitional processing in idn_to_ascii(). Transitional processing is activated by default. This option is ignored by the IDNA2003 implementation.
IDNA_NONTRANSITIONAL_TO_UNICODE (integer)
Option for nontransitional processing in idn_to_utf8(). Transitional processing is activated by default. This option is ignored by the IDNA2003 implementation.
INTL_IDNA_VARIANT_2003 (integer)
Use IDNA 2003 algorithm in idn_to_utf8() and idn_to_ascii(). This is the default. This constant and using the default has been deprecated as of PHP 7.2.0.
INTL_IDNA_VARIANT_UTS46 (integer)
Use UTS #46 algorithm in idn_to_utf8() and idn_to_ascii().
IDNA_ERROR_EMPTY_LABEL (integer)
IDNA_ERROR_LABEL_TOO_LONG (integer)
IDNA_ERROR_DOMAIN_NAME_TOO_LONG (integer)
IDNA_ERROR_LEADING_HYPHEN (integer)
IDNA_ERROR_TRAILING_HYPHEN (integer)
IDNA_ERROR_HYPHEN_3_4 (integer)
IDNA_ERROR_LEADING_COMBINING_MARK (integer)
IDNA_ERROR_DISALLOWED (integer)
IDNA_ERROR_PUNYCODE (integer)
IDNA_ERROR_LABEL_HAS_DOT (integer)
IDNA_ERROR_INVALID_ACE_LABEL (integer)
IDNA_ERROR_BIDI (integer)
IDNA_ERROR_CONTEXTJ (integer)
Errors reported in a bitset returned by the UTS #46 algorithm in idn_to_utf8() and idn_to_ascii().

资源类型
范例
intl


范例

Table of Contents

  • Basic usage of this extension
预定义常量
Basic usage of this extension
intl


Basic usage of this extension

Each module provides two kind of APIs: a procedural one and an object oriented one. Both are actually identical and described in the corresponding document.

Note:

All input strings must be in UTF-8 encoding. All output strings are also in UTF-8.

Example #1 Example of using the procedural API

<?php
$coll  = collator_create('en_US');
$result = collator_compare($coll, "string#1", "string#2");
?>

Example #2 Example of using the object-oriented API

<?php
$coll = new Collator('en_US');
$al   = $coll->getLocale(Locale::ACTUAL_LOCALE);
echo "Actual locale: $al\n";

$formatter = new NumberFormatter('en_US', NumberFormatter::DECIMAL);
echo $formatter->format(1234567);
?>
范例
Collator
范例


The Collator class

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

简介

Provides string comparison capability with support for appropriate locale-sensitive sort orderings.

类摘要

Collator {
/* 方法 */
public __construct ( string $locale )
public bool asort ( array &$arr [, int $sort_flag ] )
public int compare ( string $str1 , string $str2 )
public static Collator create ( string $locale )
public int getAttribute ( int $attr )
public int getErrorCode ( void )
public string getErrorMessage ( void )
public string getLocale ( int $type )
public string getSortKey ( string $str )
public int getStrength ( void )
public bool setAttribute ( int $attr , int $val )
public bool setStrength ( int $strength )
public bool sortWithSortKeys ( array &$arr )
public bool sort ( array &$arr [, int $sort_flag ] )
}

预定义常量

Collator::FRENCH_COLLATION (integer)

Sort strings with different accents from the back of the string. This attribute is automatically set to On for the French locales and a few others. Users normally would not need to explicitly set this attribute. There is a string comparison performance cost when it is set On, but sort key length is unaffected. Possible values are:

  • Collator::ON
  • Collator::OFF(default)
  • Collator::DEFAULT_VALUE

Example #1 FRENCH_COLLATION rules

  • F=OFF cote < coté < c?te < c?té
  • F=ON cote < c?te < coté < c?té

Collator::ALTERNATE_HANDLING (integer)

The Alternate attribute is used to control the handling of the so called variable characters in the UCA: whitespace, punctuation and symbols. If Alternate is set to NonIgnorable (N), then differences among these characters are of the same importance as differences among letters. If Alternate is set to Shifted (S), then these characters are of only minor importance. The Shifted value is often used in combination with Strength set to Quaternary. In such a case, whitespace, punctuation, and symbols are considered when comparing strings, but only if all other aspects of the strings (base letters, accents, and case) are identical. If Alternate is not set to Shifted, then there is no difference between a Strength of 3 and a Strength of 4. For more information and examples, see Variable_Weighting in the » UCA. The reason the Alternate values are not simply On and Off is that additional Alternate values may be added in the future. The UCA option Blanked is expressed with Strength set to 3, and Alternate set to Shifted. The default for most locales is NonIgnorable. If Shifted is selected, it may be slower if there are many strings that are the same except for punctuation; sort key length will not be affected unless the strength level is also increased.

Possible values are:

  • Collator::NON_IGNORABLE(default)
  • Collator::SHIFTED
  • Collator::DEFAULT_VALUE

Example #2 ALTERNATE_HANDLING rules

  • S=3, A=N di Silva < Di Silva < diSilva < U.S.A. < USA
  • S=3, A=S di Silva = diSilva < Di Silva < U.S.A. = USA
  • S=4, A=S di Silva < diSilva < Di Silva < U.S.A. < USA

Collator::CASE_FIRST (integer)

The Case_First attribute is used to control whether uppercase letters come before lowercase letters or vice versa, in the absence of other differences in the strings. The possible values are Uppercase_First (U) and Lowercase_First (L), plus the standard Default and Off. There is almost no difference between the Off and Lowercase_First options in terms of results, so typically users will not use Lowercase_First: only Off or Uppercase_First. (People interested in the detailed differences between X and L should consult the Collation Customization). Specifying either L or U won't affect string comparison performance, but will affect the sort key length.

Possible values are:

  • Collator::OFF(default)
  • Collator::LOWER_FIRST
  • Collator::UPPER_FIRST
  • Collator:DEFAULT

Example #3 CASE_FIRST rules

  • C=X or C=L "china" < "China" < "denmark" < "Denmark"
  • C=U "China" < "china" < "Denmark" < "denmark"

Collator::CASE_LEVEL (integer)

The Case_Level attribute is used when ignoring accents but not case. In such a situation, set Strength to be Primary, and Case_Level to be On. In most locales, this setting is Off by default. There is a small string comparison performance and sort key impact if this attribute is set to be On.

Possible values are:

  • Collator::OFF(default)
  • Collator::ON
  • Collator::DEFAULT_VALUE

Example #4 CASE_LEVEL rules

  • S=1, E=X role = Role = r?le
  • S=1, E=O role = r?le < Role

Collator::NORMALIZATION_MODE (integer)

The Normalization setting determines whether text is thoroughly normalized or not in comparison. Even if the setting is off (which is the default for many locales), text as represented in common usage will compare correctly (for details, see UTN #5). Only if the accent marks are in noncanonical order will there be a problem. If the setting is On, then the best results are guaranteed for all possible text input. There is a medium string comparison performance cost if this attribute is On, depending on the frequency of sequences that require normalization. There is no significant effect on sort key length. If the input text is known to be in NFD or NFKD normalization forms, there is no need to enable this Normalization option.

Possible values are:

  • Collator::OFF(default)
  • Collator::ON
  • Collator::DEFAULT_VALUE

Collator::STRENGTH (integer)

The ICU Collation Service supports many levels of comparison (named "Levels", but also known as "Strengths"). Having these categories enables ICU to sort strings precisely according to local conventions. However, by allowing the levels to be selectively employed, searching for a string in text can be performed with various matching conditions. For more detailed information, see collator_set_strength() chapter.

Possible values are:

  • Collator::PRIMARY
  • Collator::SECONDARY
  • Collator::TERTIARY(default)
  • Collator::QUATERNARY
  • Collator::IDENTICAL
  • Collator::DEFAULT_VALUE

Collator::HIRAGANA_QUATERNARY_MODE (integer)

Compatibility with JIS x 4061 requires the introduction of an additional level to distinguish Hiragana and Katakana characters. If compatibility with that standard is required, then this attribute should be set On, and the strength set to Quaternary. This will affect sort key length and string comparison string comparison performance.

Possible values are:

  • Collator::OFF(default)
  • Collator::ON
  • Collator::DEFAULT_VALUE

Collator::NUMERIC_COLLATION (integer)

When turned on, this attribute generates a collation key for the numeric value of substrings of digits. This is a way to get '100' to sort AFTER '2'.

Possible values are:

  • Collator::OFF(default)
  • Collator::ON
  • Collator::DEFAULT_VALUE

Collator::DEFAULT_VALUE (integer)
Collator::PRIMARY (integer)
Collator::SECONDARY (integer)
Collator::TERTIARY (integer)
Collator::DEFAULT_STRENGTH (integer)
Collator::QUATERNARY (integer)
Collator::IDENTICAL (integer)
Collator::OFF (integer)
Collator::ON (integer)
Collator::SHIFTED (integer)
Collator::NON_IGNORABLE (integer)
Collator::LOWER_FIRST (integer)
Collator::UPPER_FIRST (integer)

Table of Contents

  • Collator::asort — Sort array maintaining index association
  • Collator::compare — Compare two Unicode strings
  • Collator::__construct — Create a collator
  • Collator::create — Create a collator
  • Collator::getAttribute — Get collation attribute value
  • Collator::getErrorCode — Get collator's last error code
  • Collator::getErrorMessage — Get text for collator's last error code
  • Collator::getLocale — Get the locale name of the collator
  • Collator::getSortKey — Get sorting key for a string
  • Collator::getStrength — Get current collation strength
  • Collator::setAttribute — Set collation attribute
  • Collator::setStrength — Set collation strength
  • Collator::sortWithSortKeys — Sort array using specified collator and sort keys
  • Collator::sort — Sort array using specified collator
Basic usage of this extension
Collator::asort
intl


Sort array maintaining index association

Collator
Collator::compare
Collator
PHP Manual

Collator::asort

collator_asort

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Collator::asort -- collator_asort — Sort array maintaining index association

说明

面向对象风格

public bool Collator::asort ( array &$arr [, int $sort_flag ] )

过程化风格

bool collator_asort ( Collator $coll , array &$arr [, int $sort_flag ] )

This function sorts an array such that array indices maintain their correlation with the array elements they are associated with. This is used mainly when sorting associative arrays where the actual element order is significant. Array elements will have sort order according to current locale rules.

Equivalent to standard PHP asort().

参数

coll

Collator object.

arr

Array of strings to sort.

sort_flag

Optional sorting type, one of the following:

  • Collator::SORT_REGULAR - compare items normally (don't change types)

  • Collator::SORT_NUMERIC - compare items numerically

  • Collator::SORT_STRING - compare items as strings

Default $sort_flag value is Collator::SORT_REGULAR. It is also used if an invalid $sort_flag value has been specified.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 collator_asort()example

<?php
$coll = collator_create( 'en_US' );
$arr = array(
     'a' => '100',
     'b' => '50',
     'c' => '7'
);
collator_asort( $coll, $arr, Collator::SORT_NUMERIC );
var_export( $arr );

collator_asort( $coll, $arr, Collator::SORT_STRING );
var_export( $arr );
?>

以上例程会输出：

array (
  'c' => '7',
  'b' => '50',
  'a' => '100',
)array (
  'a' => '100',
  'b' => '50',
  'c' => '7',
)

参见

  • Collator constants
  • collator_sort() - Sort array using specified collator
  • collator_sort_with_sort_keys() - Sort array using specified collator and sort keys

Collator
Collator::compare
Collator


Compare two Unicode strings

Collator::asort
Collator::__construct
Collator
PHP Manual

Collator::compare

collator_compare

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Collator::compare -- collator_compare — Compare two Unicode strings

说明

面向对象风格

public int Collator::compare ( string $str1 , string $str2 )

过程化风格

int collator_compare ( Collator $coll , string $str1 , string $str2 )

Compare two Unicode strings according to collation rules.

参数

coll

Collator object.

str1

The first string to compare.

str2

The second string to compare.

返回值

Return comparison result:

  • 1 if str1 is greater than str2 ;

  • 0 if str1 is equal to str2;

  • -1 if str1 is less than str2 .

On error boolean FALSE is returned.

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

范例

Example #1 collator_compare()example

<?php
$s1 = 'Hello';
$s2 = 'hello';

$coll = collator_create( 'en_US' );
$res  = collator_compare( $coll, $s1, $s2 );

if ($res === false) {
    echo collator_get_error_message( $coll );
} else if( $res > 0 ) {
    echo "s1 is greater than s2\n";
} else if( $res < 0 ) {
    echo "s1 is less than s2\n";
} else {
    echo "s1 is equal to s2\n";
}
?>

以上例程会输出：

s1 is greater than s2

参见

  • collator_sort() - Sort array using specified collator

Collator::asort
Collator::__construct
Collator


Create a collator

Collator::compare
Collator::create
Collator
PHP Manual

Collator::__construct

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Collator::__construct — Create a collator

说明

public Collator::__construct ( string $locale )

Creates a new instance of Collator.

参数

locale

The locale whose collation rules should be used. Special values for locales can be passed in - if null is passed for the locale, the default locale's collation rules will be used. If "root" is passed, UCA rules will be used.

The Locale attribute is typically the most important attribute for correct sorting and matching, according to the user expectations in different countries and regions. The default » UCA ordering will only sort a few languages such as Dutch and Portuguese correctly ("correctly" meaning according to the normal expectations for users of the languages). Otherwise, you need to supply the locale to UCA in order to properly collate text for a given language. Thus a locale needs to be supplied so as to choose a collator that is correctly tailored for that locale. The choice of a locale will automatically preset the values for all of the attributes to something that is reasonable for that locale. Thus most of the time the other attributes do not need to be explicitly set. In some cases, the choice of locale will make a difference in string comparison performance and/or sort key length.

返回值

Returns Collator instance.

错误／异常

Returns an "empty" object on error. You can use intl_get_error_code() and/or intl_get_error_message() to know what happened.

范例

Example #1 Collator::__construct() example

<?php
$coll = new Collator( 'en_CA' );
?>

参见

  • Collator::create() - Create a collator
  • collator_create() - Create a collator

Collator::compare
Collator::create
Collator


Create a collator

Collator::__construct
Collator::getAttribute
Collator
PHP Manual

Collator::create

collator_create

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Collator::create -- collator_create — Create a collator

说明

面向对象风格

public static Collator Collator::create ( string $locale )

过程化风格

Collator collator_create ( string $locale )

The strings will be compared using the options already specified.

参数

locale

The locale containing the required collation rules. Special values for locales can be passed in - if null is passed for the locale, the default locale collation rules will be used. If empty string ("") or "root" are passed, » UCA rules will be used.

返回值

Return new instance of Collator object, or NULL on error.

范例

Example #1 collator_create() example

<?php
$coll = collator_create( 'en_US' );

if( !isset( $coll ) ) {
    printf( "Collator creation failed: %s\n", intl_get_error_message() );
    exit( 1 );
}
?>

参见

  • Collator::__construct() - Create a collator

Collator::__construct
Collator::getAttribute
Collator


Get collation attribute value

Collator::create
Collator::getErrorCode
Collator
PHP Manual

Collator::getAttribute

collator_get_attribute

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Collator::getAttribute -- collator_get_attribute — Get collation attribute value

说明

面向对象风格

public int Collator::getAttribute ( int $attr )

过程化风格

int collator_get_attribute ( Collator $coll , int $attr )

Get a value of an integer collator attribute.

参数

coll

Collator object.

attr

Attribute to get value for.

返回值

Attribute value, or boolean FALSE on error.

范例

Example #1 collator_get_attribute() example

<?php
$coll = collator_create( 'en_CA' );
$val = collator_get_attribute( $coll, Collator::NUMERIC_COLLATION );
if( $val === false )
{
    // Handle error.
}
?>

参见

  • Collator constants
  • collator_set_attribute() - Set collation attribute
  • collator_get_strength() - Get current collation strength

Collator::create
Collator::getErrorCode
Collator


Get collator's last error code

Collator::getAttribute
Collator::getErrorMessage
Collator
PHP Manual

Collator::getErrorCode

collator_get_error_code

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Collator::getErrorCode -- collator_get_error_code — Get collator's last error code

说明

面向对象风格

public int Collator::getErrorCode ( void )

过程化风格

int collator_get_error_code ( Collator $coll )

参数

coll

Collator object.

返回值

Error code returned by the last Collator API function call.

范例

Example #1 collator_get_error_code() example

<?php
$coll = collator_create( 'en_US' );
if( collator_get_attribute( $coll, Collator::FRENCH_COLLATION ) === false )
        handle_error( collator_get_error_code() );
?>

参见

  • collator_get_error_message() - Get text for collator's last error code

Collator::getAttribute
Collator::getErrorMessage
Collator


Get text for collator's last error code

Collator::getErrorCode
Collator::getLocale
Collator
PHP Manual

Collator::getErrorMessage

collator_get_error_message

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Collator::getErrorMessage -- collator_get_error_message — Get text for collator's last error code

说明

面向对象风格

public string Collator::getErrorMessage ( void )

过程化风格

string collator_get_error_message ( Collator $coll )

Retrieves the message for the last error.

参数

coll

Collator object.

返回值

Description of an error occurred in the last Collator API function call.

范例

Example #1 collator_get_error_message() example

<?php
$coll = collator_create( 'lt' );
if( collator_compare( $coll, 'y', 'k' ) === false ) {
    echo collator_get_error_message( $coll );
}
?>

参见

  • collator_get_error_code() - Get collator's last error code

Collator::getErrorCode
Collator::getLocale
Collator


Get the locale name of the collator

Collator::getErrorMessage
Collator::getSortKey
Collator
PHP Manual

Collator::getLocale

collator_get_locale

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Collator::getLocale -- collator_get_locale — Get the locale name of the collator

说明

面向对象风格

public string Collator::getLocale ( int $type )

过程化风格

string collator_get_locale ( Collator $coll , int $type )

Get collector locale name.

参数

coll

Collator object.

type

You can choose between valid and actual locale ( Locale::VALID_LOCALE and Locale::ACTUAL_LOCALE, respectively).

返回值

Real locale name from which the collation data comes. If the collator was instantiated from rules or an error occurred, returns boolean FALSE.

范例

Example #1 collator_get_locale() example

<?php
$coll    = collator_create( 'en_US_California' );
$res_val = collator_get_locale( $coll, Locale::VALID_LOCALE );
$res_act = collator_get_locale( $coll, Locale::ACTUAL_LOCALE );
printf( "Valid locale name: %s\nActual locale name: %s\n",
         $res_val, $res_act );
?>

以上例程会输出：

Requested locale name: en_US_California
Valid locale name: en_US
Actual locale name: en

参见

  • collator_create() - Create a collator

Collator::getErrorMessage
Collator::getSortKey
Collator


Get sorting key for a string

Collator::getLocale
Collator::getStrength
Collator
PHP Manual

Collator::getSortKey

collator_get_sort_key

(PHP 5 >= 5.3.11, PHP 7, PECL intl >= 1.0.3)

Collator::getSortKey -- collator_get_sort_key — Get sorting key for a string

说明

面向对象风格

public string Collator::getSortKey ( string $str )

过程化风格

string collator_get_sort_key ( Collator $coll , string $str )

Return collation key for a string.

参数

coll

Collator object.

str

The string to produce the key from.

返回值

Returns the collation key for the string. Collation keys can be compared directly instead of strings.

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

范例

Example #1 collator_get_sort_key()example

<?php
$s1 = 'Hello';

$coll = collator_create( 'en_US' );
$res  = collator_get_sort_key( $coll, $s1);

echo urlencode($res);
?>

以上例程会输出：

71%3F%3FE%01%09%01%8F%08%00

参见

  • collator_sort() - Sort array using specified collator
  • collator_sort_with_sort_keys() - Sort array using specified collator and sort keys

Collator::getLocale
Collator::getStrength
Collator


Get current collation strength

Collator::getSortKey
Collator::setAttribute
Collator
PHP Manual

Collator::getStrength

collator_get_strength

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Collator::getStrength -- collator_get_strength — Get current collation strength

说明

面向对象风格

public int Collator::getStrength ( void )

过程化风格

int collator_get_strength ( Collator $coll )

参数

coll

Collator object.

返回值

Returns current collation strength, or boolean FALSE on error.

范例

Example #1 collator_get_strength() example

<?php
$coll     = collator_create( 'en_US' );
$strength = collator_get_strength( $coll );
?>

参见

  • Collator constants
  • collator_set_strength() - Set collation strength
  • collator_get_attribute() - Get collation attribute value

Collator::getSortKey
Collator::setAttribute
Collator


Set collation attribute

Collator::getStrength
Collator::setStrength
Collator
PHP Manual

Collator::setAttribute

collator_set_attribute

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Collator::setAttribute -- collator_set_attribute — Set collation attribute

说明

面向对象风格

public bool Collator::setAttribute ( int $attr , int $val )

过程化风格

bool collator_set_attribute ( Collator $coll , int $attr , int $val )

参数

coll

Collator object.

attr

Attribute.

val

Attribute value.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 collator_set_attribute() example

<?php
$coll = collator_create( 'en_CA' );
$val  = collator_get_attribute( $coll, Collator::NUMERIC_COLLATION );
if ($val === false) {
    // Handle error.
} elseif ($val === Collator::ON) {
    // Do something useful.
}
?>

参见

  • Collator constants
  • collator_get_attribute() - Get collation attribute value
  • collator_set_strength() - Set collation strength

Collator::getStrength
Collator::setStrength
Collator


Set collation strength

Collator::setAttribute
Collator::sortWithSortKeys
Collator
PHP Manual

Collator::setStrength

collator_set_strength

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Collator::setStrength -- collator_set_strength — Set collation strength

说明

面向对象风格

public bool Collator::setStrength ( int $strength )

过程化风格

bool collator_set_strength ( Collator $coll , int $strength )

The » ICU Collation Service supports many levels of comparison (named "Levels", but also known as "Strengths"). Having these categories enables ICU to sort strings precisely according to local conventions. However, by allowing the levels to be selectively employed, searching for a string in text can be performed with various matching conditions.

  1. Primary Level: Typically, this is used to denote differences between base characters (for example, "a" < "b"). It is the strongest difference. For example, dictionaries are divided into different sections by base character. This is also called the level1 strength.

  2. Secondary Level: Accents in the characters are considered secondary differences (for example, "as" < "às" < "at"). Other differences between letters can also be considered secondary differences, depending on the language. A secondary difference is ignored when there is a primary difference anywhere in the strings. This is also called the level2 strength.

    Note:

    Note: In some languages (such as Danish), certain accented letters are considered to be separate base characters. In most languages, however, an accented letter only has a secondary difference from the unaccented version of that letter.

  3. Tertiary Level: Upper and lower case differences in characters are distinguished at the tertiary level (for example, "ao" < "Ao" < "aò"). In addition, a variant of a letter differs from the base form on the tertiary level (such as "A" and " "). Another example is the difference between large and small Kana. A tertiary difference is ignored when there is a primary or secondary difference anywhere in the strings. This is also called the level3 strength.

  4. Quaternary Level: When punctuation is ignored (see Ignoring Punctuations ) at level 13, an additional level can be used to distinguish words with and without punctuation (for example, "ab" < "a-b" < "aB"). This difference is ignored when there is a primary, secondary or tertiary difference. This is also known as the level4 strength. The quaternary level should only be used if ignoring punctuation is required or when processing Japanese text (see Hiragana processing).

  5. Identical Level: When all other levels are equal, the identical level is used as a tiebreaker. The Unicode code point values of the NFD form of each string are compared at this level, just in case there is no difference at levels 14. For example, Hebrew cantillation marks are only distinguished at this level. This level should be used sparingly, as only code point values differences between two strings is an extremely rare occurrence. Using this level substantially decreases the performance for both incremental comparison and sort key generation (as well as increasing the sort key length). It is also known as level 5 strength.

For example, people may choose to ignore accents or ignore accents and case when searching for text. Almost all characters are distinguished by the first three levels, and in most locales the default value is thus Tertiary. However, if Alternate is set to be Shifted, then the Quaternary strength can be used to break ties among whitespace, punctuation, and symbols that would otherwise be ignored. If very fine distinctions among characters are required, then the Identical strength can be used (for example, Identical Strength distinguishes between the Mathematical Bold Small A and the Mathematical Italic Small A.). However, using levels higher than Tertiary the Identical strength result in significantly longer sort keys, and slower string comparison performance for equal strings.

参数

coll

Collator object.

strength

Strength to set.

Possible values are:

  • Collator::PRIMARY

  • Collator::SECONDARY

  • Collator::TERTIARY

  • Collator::QUATERNARY

  • Collator::IDENTICAL

  • Collator::DEFAULT_STRENGTH

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 collator_set_strength() example

<?php
$arr  = array( 'aò', 'Ao', 'ao' );
$coll = collator_create( 'en_US' );

// Sort array using default strength.
collator_sort( $coll, $arr );
var_export( $arr );

// Sort array using primary strength.
collator_set_strength( $coll, Collator::PRIMARY );
collator_sort( $coll, $arr );
var_export( $arr );
?>

以上例程会输出：

array (
  0 => 'ao',
  1 => 'Ao',
  2 => 'aò',
)
array (
  0 => 'aò',
  1 => 'Ao',
  2 => 'ao',
)

参见

  • Collator constants
  • collator_get_strength() - Get current collation strength

Collator::setAttribute
Collator::sortWithSortKeys
Collator


Sort array using specified collator and sort keys

Collator::setStrength
Collator::sort
Collator
PHP Manual

Collator::sortWithSortKeys

collator_sort_with_sort_keys

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Collator::sortWithSortKeys -- collator_sort_with_sort_keys — Sort array using specified collator and sort keys

说明

面向对象风格

public bool Collator::sortWithSortKeys ( array &$arr )

过程化风格

bool collator_sort_with_sort_keys ( Collator $coll , array &$arr )

Similar to collator_sort() but uses ICU sorting keys produced by ucol_getSortKey() to gain more speed on large arrays.

参数

coll

Collator object.

arr

Array of strings to sort

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 collator_sort_with_sort_keys() example

<?php
$arr  = array( 'K?pfe', 'Kypper', 'Kopfe' );
$coll = collator_create( 'sv' );

collator_sort_with_sort_keys( $coll, $arr );
var_export( $arr );
?>

以上例程会输出：

array (
  0 => 'Kopfe',
  1 => 'Kypper',
  2 => 'K?pfe',
)

参见

  • Collator constants
  • collator_sort() - Sort array using specified collator
  • collator_asort() - Sort array maintaining index association

Collator::setStrength
Collator::sort
Collator


Sort array using specified collator

Collator::sortWithSortKeys
NumberFormatter
Collator
PHP Manual

Collator::sort

collator_sort

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Collator::sort -- collator_sort — Sort array using specified collator

说明

面向对象风格

public bool Collator::sort ( array &$arr [, int $sort_flag ] )

过程化风格

bool collator_sort ( Collator $coll , array &$arr [, int $sort_flag ] )

This function sorts an array according to current locale rules.

Equivalent to standard PHP sort() .

参数

coll

Collator object.

arr

Array of strings to sort.

sort_flag

Optional sorting type, one of the following:

  • Collator::SORT_REGULAR - compare items normally (don't change types)

  • Collator::SORT_NUMERIC - compare items numerically

  • Collator::SORT_STRING - compare items as strings

Default sorting type is Collator::SORT_REGULAR. It is also used if an invalid sort_flag value has been specified.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 collator_sort() example

<?php
$coll = collator_create( 'en_US' );
$arr  = array( 'at', 'às', 'as' );

var_export( $arr );
collator_sort( $coll, $arr );
var_export( $arr );
?>

以上例程会输出：

array (
  0 => 'at',
  1 => 'às',
  2 => 'as',
)array (
  0 => 'as',
  1 => 'às',
  2 => 'at',
)

参见

  • Collator constants
  • collator_asort() - Sort array maintaining index association
  • collator_sort_with_sort_keys() - Sort array using specified collator and sort keys

Collator::sortWithSortKeys
NumberFormatter
Collator


The NumberFormatter class

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

简介

Programs store and operate on numbers using a locale-independent binary representation. When displaying or printing a number it is converted to a locale-specific string. For example, the number 12345.67 is "12,345.67" in the US, "12 345,67" in France and "12.345,67" in Germany.

By invoking the methods provided by the NumberFormatter class, you can format numbers, currencies, and percentages according to the specified or default locale. NumberFormatter is locale-sensitive so you need to create a new NumberFormatter for each locale. NumberFormatter methods format primitive-type numbers, such as double and output the number as a locale-specific string.

For currencies you can use currency format type to create a formatter that returns a string with the formatted number and the appropriate currency sign. Of course, the NumberFormatter class is unaware of exchange rates so, the number output is the same regardless of the specified currency. This means that the same number has different monetary values depending on the currency locale. If the number is 9988776.65 the results will be:

  • 9 988 776,65 � in France
  • 9.988.776,65 � in Germany
  • $9,988,776.65 in the United States

In order to format percentages, create a locale-specific formatter with percentage format type. With this formatter, a decimal fraction such as 0.75 is displayed as 75%.

For more complex formatting, like spelled-out numbers, the rule-based number formatters are used.

类摘要

NumberFormatter {
/* 方法 */
public __construct ( string $locale , int $style [, string $pattern ] )
public static NumberFormatter create ( string $locale , int $style [, string $pattern ] )
public string formatCurrency ( float $value , string $currency )
public string format ( number $value [, int $type ] )
public int getAttribute ( int $attr )
public int getErrorCode ( void )
public string getErrorMessage ( void )
public string getLocale ([ int $type ] )
public string getPattern ( void )
public string getSymbol ( int $attr )
public string getTextAttribute ( int $attr )
public float parseCurrency ( string $value , string &$currency [, int &$position ] )
public mixed parse ( string $value [, int $type [, int &$position ]] )
public bool setAttribute ( int $attr , int $value )
public bool setPattern ( string $pattern )
public bool setSymbol ( int $attr , string $value )
public bool setTextAttribute ( int $attr , string $value )
}

预定义常量

These styles are used by the numfmt_create() to define the type of the formatter.

NumberFormatter::PATTERN_DECIMAL (integer)
Decimal format defined by pattern
NumberFormatter::DECIMAL (integer)
Decimal format
NumberFormatter::CURRENCY (integer)
Currency format
NumberFormatter::PERCENT (integer)
Percent format
NumberFormatter::SCIENTIFIC (integer)
Scientific format
NumberFormatter::SPELLOUT (integer)
Spellout rule-based format
NumberFormatter::ORDINAL (integer)
Ordinal rule-based format
NumberFormatter::DURATION (integer)
Duration rule-based format
NumberFormatter::PATTERN_RULEBASED (integer)
Rule-based format defined by pattern
NumberFormatter::DEFAULT_STYLE (integer)
Default format for the locale
NumberFormatter::IGNORE (integer)
Alias for PATTERN_DECIMAL

These constants define how the numbers are parsed or formatted. They should be used as arguments to numfmt_format() and numfmt_parse().

NumberFormatter::TYPE_DEFAULT (integer)
Derive the type from variable type
NumberFormatter::TYPE_INT32 (integer)
Format/parse as 32-bit integer
NumberFormatter::TYPE_INT64 (integer)
Format/parse as 64-bit integer
NumberFormatter::TYPE_DOUBLE (integer)
Format/parse as floating point value
NumberFormatter::TYPE_CURRENCY (integer)
Format/parse as currency value

Number format attribute used by numfmt_get_attribute() and numfmt_set_attribute().

NumberFormatter::PARSE_INT_ONLY (integer)
Parse integers only.
NumberFormatter::GROUPING_USED (integer)
Use grouping separator.
NumberFormatter::DECIMAL_ALWAYS_SHOWN (integer)
Always show decimal point.
NumberFormatter::MAX_INTEGER_DIGITS (integer)
Maximum integer digits.
NumberFormatter::MIN_INTEGER_DIGITS (integer)
Minimum integer digits.
NumberFormatter::INTEGER_DIGITS (integer)
Integer digits.
NumberFormatter::MAX_FRACTION_DIGITS (integer)
Maximum fraction digits.
NumberFormatter::MIN_FRACTION_DIGITS (integer)
Minimum fraction digits.
NumberFormatter::FRACTION_DIGITS (integer)
Fraction digits.
NumberFormatter::MULTIPLIER (integer)
Multiplier.
NumberFormatter::GROUPING_SIZE (integer)
Grouping size.
NumberFormatter::ROUNDING_MODE (integer)
Rounding Mode.
NumberFormatter::ROUNDING_INCREMENT (integer)
Rounding increment.
NumberFormatter::FORMAT_WIDTH (integer)
The width to which the output of format() is padded.
NumberFormatter::PADDING_POSITION (integer)
The position at which padding will take place. See pad position constants for possible argument values.
NumberFormatter::SECONDARY_GROUPING_SIZE (integer)
Secondary grouping size.
NumberFormatter::SIGNIFICANT_DIGITS_USED (integer)
Use significant digits.
NumberFormatter::MIN_SIGNIFICANT_DIGITS (integer)
Minimum significant digits.
NumberFormatter::MAX_SIGNIFICANT_DIGITS (integer)
Maximum significant digits.
NumberFormatter::LENIENT_PARSE (integer)
Lenient parse mode used by rule-based formats.

Number format text attribute used by numfmt_get_text_attribute() and numfmt_set_text_attribute().

NumberFormatter::POSITIVE_PREFIX (integer)
Positive prefix.
NumberFormatter::POSITIVE_SUFFIX (integer)
Positive suffix.
NumberFormatter::NEGATIVE_PREFIX (integer)
Negative prefix.
NumberFormatter::NEGATIVE_SUFFIX (integer)
Negative suffix.
NumberFormatter::PADDING_CHARACTER (integer)
The character used to pad to the format width.
NumberFormatter::CURRENCY_CODE (integer)
The ISO currency code.
NumberFormatter::DEFAULT_RULESET (integer)
The default rule set. This is only available with rule-based formatters.
NumberFormatter::PUBLIC_RULESETS (integer)
The public rule sets. This is only available with rule-based formatters. This is a read-only attribute. The public rulesets are returned as a single string, with each ruleset name delimited by ';' (semicolon).

Number format symbols used by numfmt_get_symbol() and numfmt_set_symbol().

NumberFormatter::DECIMAL_SEPARATOR_SYMBOL (integer)
The decimal separator.
NumberFormatter::GROUPING_SEPARATOR_SYMBOL (integer)
The grouping separator.
NumberFormatter::PATTERN_SEPARATOR_SYMBOL (integer)
The pattern separator.
NumberFormatter::PERCENT_SYMBOL (integer)
The percent sign.
NumberFormatter::ZERO_DIGIT_SYMBOL (integer)
Zero.
NumberFormatter::DIGIT_SYMBOL (integer)
Character representing a digit in the pattern.
NumberFormatter::MINUS_SIGN_SYMBOL (integer)
The minus sign.
NumberFormatter::PLUS_SIGN_SYMBOL (integer)
The plus sign.
NumberFormatter::CURRENCY_SYMBOL (integer)
The currency symbol.
NumberFormatter::INTL_CURRENCY_SYMBOL (integer)
The international currency symbol.
NumberFormatter::MONETARY_SEPARATOR_SYMBOL (integer)
The monetary separator.
NumberFormatter::EXPONENTIAL_SYMBOL (integer)
The exponential symbol.
NumberFormatter::PERMILL_SYMBOL (integer)
Per mill symbol.
NumberFormatter::PAD_ESCAPE_SYMBOL (integer)
Escape padding character.
NumberFormatter::INFINITY_SYMBOL (integer)
Infinity symbol.
NumberFormatter::NAN_SYMBOL (integer)
Not-a-number symbol.
NumberFormatter::SIGNIFICANT_DIGIT_SYMBOL (integer)
Significant digit symbol.
NumberFormatter::MONETARY_GROUPING_SEPARATOR_SYMBOL (integer)
The monetary grouping separator.

Rounding mode values used by numfmt_get_attribute()
and numfmt_set_attribute() with
NumberFormatter::ROUNDING_MODE attribute.

NumberFormatter::ROUND_CEILING (integer)
Rounding mode to round towards positive infinity.
NumberFormatter::ROUND_DOWN (integer)
Rounding mode to round towards zero.
NumberFormatter::ROUND_FLOOR (integer)
Rounding mode to round towards negative infinity.
NumberFormatter::ROUND_HALFDOWN (integer)
Rounding mode to round towards "nearest neighbor" unless both neighbors are equidistant, in which case round down.
NumberFormatter::ROUND_HALFEVEN (integer)
Rounding mode to round towards the "nearest neighbor" unless both neighbors are equidistant, in which case, round towards the even neighbor.
NumberFormatter::ROUND_HALFUP (integer)
Rounding mode to round towards "nearest neighbor" unless both neighbors are equidistant, in which case round up.
NumberFormatter::ROUND_UP (integer)
Rounding mode to round away from zero.

Pad position values used by numfmt_get_attribute()
and numfmt_set_attribute() with
NumberFormatter::PADDING_POSITION attribute.

NumberFormatter::PAD_AFTER_PREFIX (integer)
Pad characters inserted after the prefix.
NumberFormatter::PAD_AFTER_SUFFIX (integer)
Pad characters inserted after the suffix.
NumberFormatter::PAD_BEFORE_PREFIX (integer)
Pad characters inserted before the prefix.
NumberFormatter::PAD_BEFORE_SUFFIX (integer)
Pad characters inserted before the suffix.

参见

  • » ICU formatting documentation
  • » ICU number formatters
  • » ICU decimal formatters
  • » ICU rule-based number formatters

Table of Contents

  • NumberFormatter::create — Create a number formatter
  • NumberFormatter::formatCurrency — Format a currency value
  • NumberFormatter::format — Format a number
  • NumberFormatter::getAttribute — Get an attribute
  • NumberFormatter::getErrorCode — Get formatter's last error code.
  • NumberFormatter::getErrorMessage — Get formatter's last error message.
  • NumberFormatter::getLocale — Get formatter locale
  • NumberFormatter::getPattern — Get formatter pattern
  • NumberFormatter::getSymbol — Get a symbol value
  • NumberFormatter::getTextAttribute — Get a text attribute
  • NumberFormatter::parseCurrency — Parse a currency number
  • NumberFormatter::parse — Parse a number
  • NumberFormatter::setAttribute — Set an attribute
  • NumberFormatter::setPattern — Set formatter pattern
  • NumberFormatter::setSymbol — Set a symbol value
  • NumberFormatter::setTextAttribute — Set a text attribute
Collator::sort
NumberFormatter::create
intl


Create a number formatter

NumberFormatter
NumberFormatter::formatCurrency
NumberFormatter
PHP Manual

NumberFormatter::create

numfmt_create

NumberFormatter::__construct

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

NumberFormatter::create -- numfmt_create -- NumberFormatter::__construct — Create a number formatter

说明

面向对象风格 (method)

public static NumberFormatter NumberFormatter::create ( string $locale , int $style [, string $pattern ] )

过程化风格

NumberFormatter numfmt_create ( string $locale , int $style [, string $pattern ] )

面向对象风格 (constructor):

public NumberFormatter::__construct ( string $locale , int $style [, string $pattern ] )

Creates a number formatter.

参数

locale

Locale in which the number would be formatted (locale name, e.g. en_CA).

style

Style of the formatting, one of the format style constants. If NumberFormatter::PATTERN_DECIMAL or NumberFormatter::PATTERN_RULEBASED is passed then the number format is opened using the given pattern, which must conform to the syntax described in » ICU DecimalFormat documentation or » ICU RuleBasedNumberFormat documentation, respectively.

pattern

Pattern string if the chosen style requires a pattern.

返回值

Returns NumberFormatter object or FALSE on error.

范例

Example #1 numfmt_create() example

<?php
$fmt = numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
echo numfmt_format($fmt, 1234567.891234567890000)."\n";
$fmt = numfmt_create( 'it', NumberFormatter::SPELLOUT );
echo numfmt_format($fmt, 1142)."\n";
?>

Example #2 NumberFormatter::create() example

<?php
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
echo $fmt->format(1234567.891234567890000)."\n";
$fmt = new NumberFormatter( 'it', NumberFormatter::SPELLOUT );
echo $fmt->format(1142)."\n";
?>

以上例程会输出：

1.234.567,891
millicentoquarantadue

参见

  • numfmt_format() - Format a number
  • numfmt_parse() - Parse a number

NumberFormatter
NumberFormatter::formatCurrency
NumberFormatter


Format a currency value

NumberFormatter::create
NumberFormatter::format
NumberFormatter
PHP Manual

NumberFormatter::formatCurrency

numfmt_format_currency

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

NumberFormatter::formatCurrency -- numfmt_format_currency — Format a currency value

说明

面向对象风格

public string NumberFormatter::formatCurrency ( float $value , string $currency )

过程化风格

string numfmt_format_currency ( NumberFormatter $fmt , float $value , string $currency )

Format the currency value according to the formatter rules.

参数

fmt

NumberFormatter object.

value

The numeric currency value.

currency

The 3-letter ISO 4217 currency code indicating the currency to use.

返回值

String representing the formatted currency value.

范例

Example #1 numfmt_format_currency() example

<?php
$fmt = numfmt_create( 'de_DE', NumberFormatter::CURRENCY );
echo numfmt_format_currency($fmt, 1234567.891234567890000, "EUR")."\n";
echo numfmt_format_currency($fmt, 1234567.891234567890000, "RUR")."\n";
$fmt = numfmt_create( 'ru_RU', NumberFormatter::CURRENCY );
echo numfmt_format_currency($fmt, 1234567.891234567890000, "EUR")."\n";
echo numfmt_format_currency($fmt, 1234567.891234567890000, "RUR")."\n";
?>

Example #2 OO example

<?php
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::CURRENCY );
echo $fmt->formatCurrency(1234567.891234567890000, "EUR")."\n";
echo $fmt->formatCurrency(1234567.891234567890000, "RUR")."\n";
$fmt = new NumberFormatter( 'ru_RU', NumberFormatter::CURRENCY );
echo $fmt->formatCurrency(1234567.891234567890000, "EUR")."\n";
echo $fmt->formatCurrency(1234567.891234567890000, "RUR")."\n";
?>

以上例程会输出：

1.234.567,89 �
1.234.567,89 RUR
1 234 567,89�
1 234 567,89р.

参见

  • numfmt_get_error_code() - Get formatter's last error code.
  • numfmt_format() - Format a number
  • numfmt_parse_currency() - Parse a currency number

NumberFormatter::create
NumberFormatter::format
NumberFormatter


Format a number

NumberFormatter::formatCurrency
NumberFormatter::getAttribute
NumberFormatter
PHP Manual

NumberFormatter::format

numfmt_format

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

NumberFormatter::format -- numfmt_format — Format a number

说明

面向对象风格

public string NumberFormatter::format ( number $value [, int $type ] )

过程化风格

string numfmt_format ( NumberFormatter $fmt , number $value [, int $type ] )

Format a numeric value according to the formatter rules.

参数

fmt

NumberFormatter object.

value

The value to format. Can be integer or float, other values will be converted to a numeric value.

type

The formatting type to use.

返回值

Returns the string containing formatted value, or FALSE on error.

范例

Example #1 numfmt_format() example

<?php
$fmt = numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
$data = numfmt_format($fmt, 1234567.891234567890000);
if(intl_is_failure(numfmt_format($fmt))) {
    report_error("Formatter error");
}
?>

Example #2 OO example

<?php
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
$fmt->format(1234567.891234567890000);
if(intl_is_failure($fmt->getErrorCode())) {
    report_error("Formatter error");
}
?>

以上例程会输出：

1.234.567,891

参见

  • numfmt_get_error_code() - Get formatter's last error code.
  • numfmt_format_currency() - Format a currency value
  • numfmt_parse() - Parse a number

NumberFormatter::formatCurrency
NumberFormatter::getAttribute
NumberFormatter


Get an attribute

NumberFormatter::format
NumberFormatter::getErrorCode
NumberFormatter
PHP Manual

NumberFormatter::getAttribute

numfmt_get_attribute

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

NumberFormatter::getAttribute -- numfmt_get_attribute — Get an attribute

说明

面向对象风格

public int NumberFormatter::getAttribute ( int $attr )

过程化风格

int numfmt_get_attribute ( NumberFormatter $fmt , int $attr )

Get a numeric attribute associated with the formatter. An example of a numeric attribute is the number of integer digits the formatter will produce.

参数

fmt

NumberFormatter object.

attr

Attribute specifier - one of the numeric attribute constants.

返回值

Return attribute value on success, or FALSE on error.

范例

Example #1 numfmt_get_attribute() example

<?php
$fmt = numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
echo "Digits: ".numfmt_get_attribute($fmt, NumberFormatter::MAX_FRACTION_DIGITS)."\n";
echo numfmt_format($fmt, 1234567.891234567890000)."\n";
numfmt_set_attribute($fmt, NumberFormatter::MAX_FRACTION_DIGITS, 2);
echo "Digits: ".numfmt_get_attribute($fmt, NumberFormatter::MAX_FRACTION_DIGITS)."\n";
echo numfmt_format($fmt, 1234567.891234567890000)."\n";
?>

Example #2 OO example

<?php
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
echo "Digits: ".$fmt->getAttribute(NumberFormatter::MAX_FRACTION_DIGITS)."\n";
echo $fmt->format(1234567.891234567890000)."\n";
$fmt->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 2);
echo "Digits: ".$fmt->getAttribute(NumberFormatter::MAX_FRACTION_DIGITS)."\n";
echo $fmt->format(1234567.891234567890000)."\n";
?>

以上例程会输出：

Digits: 3
1.234.567,891
Digits: 2
1.234.567,89

参见

  • numfmt_get_error_code() - Get formatter's last error code.
  • numfmt_get_text_attribute() - Get a text attribute
  • numfmt_set_attribute() - Set an attribute

NumberFormatter::format
NumberFormatter::getErrorCode
NumberFormatter


Get formatter's last error code.

NumberFormatter::getAttribute
NumberFormatter::getErrorMessage
NumberFormatter
PHP Manual

NumberFormatter::getErrorCode

numfmt_get_error_code

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

NumberFormatter::getErrorCode -- numfmt_get_error_code — Get formatter's last error code.

说明

面向对象风格

public int NumberFormatter::getErrorCode ( void )

过程化风格

int numfmt_get_error_code ( NumberFormatter $fmt )

Get error code from the last function performed by the formatter.

参数

fmt

NumberFormatter object.

返回值

Returns error code from last formatter call.

范例

Example #1 numfmt_get_error_code() example

<?php
$fmt  = numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
$data = numfmt_format($fmt, 1234567.891234567890000);
if(intl_is_failure(numfmt_get_error_code($fmt))) {
    report_error("Formatter error");
}
?>

Example #2 OO example

<?php
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
$fmt->format(1234567.891234567890000);
if(intl_is_failure($fmt->getErrorCode())) {
    report_error("Formatter error");
}
?>

参见

  • numfmt_get_error_message() - Get formatter's last error message.
  • intl_get_error_code() - Get the last error code
  • intl_is_failure() - Check whether the given error code indicates failure

NumberFormatter::getAttribute
NumberFormatter::getErrorMessage
NumberFormatter


Get formatter's last error message.

NumberFormatter::getErrorCode
NumberFormatter::getLocale
NumberFormatter
PHP Manual

NumberFormatter::getErrorMessage

numfmt_get_error_message

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

NumberFormatter::getErrorMessage -- numfmt_get_error_message — Get formatter's last error message.

说明

面向对象风格

public string NumberFormatter::getErrorMessage ( void )

过程化风格

string numfmt_get_error_message ( NumberFormatter $fmt )

Get error message from the last function performed by the formatter.

参数

fmt

NumberFormatter object.

返回值

Returns error message from last formatter call.

范例

Example #1 numfmt_get_error_message() example

<?php
$fmt = numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
$data = numfmt_format($fmt, 1234567.891234567890000);
var_dump(numfmt_get_error_message($fmt));
?>

Example #2 OO example

<?php
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
$fmt->format(1234567.891234567890000);
var_dump(numfmt_get_error_message($fmt));
?>

参见

  • numfmt_get_error_code() - Get formatter's last error code.
  • intl_get_error_code() - Get the last error code
  • intl_is_failure() - Check whether the given error code indicates failure

NumberFormatter::getErrorCode
NumberFormatter::getLocale
NumberFormatter


Get formatter locale

NumberFormatter::getErrorMessage
NumberFormatter::getPattern
NumberFormatter
PHP Manual

NumberFormatter::getLocale

numfmt_get_locale

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

NumberFormatter::getLocale -- numfmt_get_locale — Get formatter locale

说明

面向对象风格

public string NumberFormatter::getLocale ([ int $type ] )

过程化风格

string numfmt_get_locale ( NumberFormatter $fmt [, int $type ] )

Get formatter locale name.

参数

fmt

NumberFormatter object.

type

You can choose between valid and actual locale ( Locale::VALID_LOCALE, Locale::ACTUAL_LOCALE, respectively). The default is the actual locale.

返回值

The locale name used to create the formatter.

范例

Example #1 numfmt_get_locale() example

<?php
$req     = 'fr_FR_PARIS';
$fmt     = numfmt_create( $req,  NumberFormatter::DECIMAL);
$res_val = numfmt_get_locale( $fmt, Locale::VALID_LOCALE );
$res_act = numfmt_get_locale( $fmt, Locale::ACTUAL_LOCALE );
printf( "Requested locale name: %s\nValid locale name: %s\nActual locale name: %s\n",
         $req, $res_val, $res_act );
?>

以上例程会输出：

Requested locale name: fr_FR_PARIS
Valid locale name: fr_FR
Actual locale name: fr

参见

  • numfmt_create() - Create a number formatter
  • numfmt_get_error_code() - Get formatter's last error code.

NumberFormatter::getErrorMessage
NumberFormatter::getPattern
NumberFormatter


Get formatter pattern

NumberFormatter::getLocale
NumberFormatter::getSymbol
NumberFormatter
PHP Manual

NumberFormatter::getPattern

numfmt_get_pattern

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

NumberFormatter::getPattern -- numfmt_get_pattern — Get formatter pattern

说明

面向对象风格

public string NumberFormatter::getPattern ( void )

过程化风格

string numfmt_get_pattern ( NumberFormatter $fmt )

Extract pattern used by the formatter.

参数

fmt

NumberFormatter object.

返回值

Pattern string that is used by the formatter, or FALSE if an error happens.

范例

Example #1 numfmt_get_pattern() example

<?php
$fmt = numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
echo "Pattern: ".numfmt_get_pattern($fmt)."\n";
echo numfmt_format($fmt, 1234567.891234567890000)."\n";
numfmt_set_pattern($fmt, "#0.# kg");
echo "Pattern: ".numfmt_get_pattern($fmt)."\n";
echo numfmt_format($fmt, 1234567.891234567890000)."\n";
?>

Example #2 OO example

<?php
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
echo "Pattern: ".$fmt->getPattern()."\n";
echo $fmt->format(1234567.891234567890000)."\n";
$fmt->setPattern("#0.# kg");
echo "Pattern: ".$fmt->getPattern()."\n";
echo $fmt->format(1234567.891234567890000)."\n";
?>

以上例程会输出：

Pattern: #,##0.###
1.234.567,891
Pattern: #0.# kg
1234567,9 kg

参见

  • numfmt_get_error_code() - Get formatter's last error code.
  • numfmt_set_pattern() - Set formatter pattern
  • numfmt_create() - Create a number formatter

NumberFormatter::getLocale
NumberFormatter::getSymbol
NumberFormatter


Get a symbol value

NumberFormatter::getPattern
NumberFormatter::getTextAttribute
NumberFormatter
PHP Manual

NumberFormatter::getSymbol

numfmt_get_symbol

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

NumberFormatter::getSymbol -- numfmt_get_symbol — Get a symbol value

说明

面向对象风格

public string NumberFormatter::getSymbol ( int $attr )

过程化风格

string numfmt_get_symbol ( NumberFormatter $fmt , int $attr )

Get a symbol associated with the formatter. The formatter uses symbols to represent the special locale-dependent characters in a number, for example the percent sign. This API is not supported for rule-based formatters.

参数

fmt

NumberFormatter object.

attr

Symbol specifier, one of the format symbol constants.

返回值

The symbol string or FALSE on error.

范例

Example #1 numfmt_get_symbol() example

<?php
$fmt = numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
echo "Sep: ".numfmt_get_symbol($fmt, NumberFormatter::GROUPING_SEPARATOR_SYMBOL)."\n";
echo numfmt_format($fmt, 1234567.891234567890000)."\n";
numfmt_set_symbol($fmt, NumberFormatter::GROUPING_SEPARATOR_SYMBOL, "*");
echo "Sep: ".numfmt_get_symbol($fmt, NumberFormatter::GROUPING_SEPARATOR_SYMBOL)."\n";
echo numfmt_format($fmt, 1234567.891234567890000)."\n";
?>

Example #2 OO example

<?php
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
echo "Sep: ".$fmt->getSymbol(NumberFormatter::GROUPING_SEPARATOR_SYMBOL)."\n";
echo $fmt->format(1234567.891234567890000)."\n";
$fmt->setSymbol(NumberFormatter::GROUPING_SEPARATOR_SYMBOL, "*");
echo "Sep: ".$fmt->getSymbol(NumberFormatter::GROUPING_SEPARATOR_SYMBOL)."\n";
echo $fmt->format(1234567.891234567890000)."\n";
?>

以上例程会输出：

Sep: .
1.234.567,891
Sep: *
1*234*567,891

参见

  • numfmt_get_error_code() - Get formatter's last error code.
  • numfmt_set_symbol() - Set a symbol value

NumberFormatter::getPattern
NumberFormatter::getTextAttribute
NumberFormatter


Get a text attribute

NumberFormatter::getSymbol
NumberFormatter::parseCurrency
NumberFormatter
PHP Manual

NumberFormatter::getTextAttribute

numfmt_get_text_attribute

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

NumberFormatter::getTextAttribute -- numfmt_get_text_attribute — Get a text attribute

说明

面向对象风格

public string NumberFormatter::getTextAttribute ( int $attr )

过程化风格

string numfmt_get_text_attribute ( NumberFormatter $fmt , int $attr )

Get a text attribute associated with the formatter. An example of a text attribute is the suffix for positive numbers. If the formatter does not understand the attribute, U_UNSUPPORTED_ERROR error is produced. Rule-based formatters only understand NumberFormatter::DEFAULT_RULESET and NumberFormatter::PUBLIC_RULESETS.

参数

fmt

NumberFormatter object.

attr

Attribute specifier - one of the text attribute constants.

返回值

Return attribute value on success, or FALSE on error.

范例

Example #1 numfmt_get_text_attribute() example

<?php
$fmt = numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
echo "Prefix: ".numfmt_get_text_attribute($fmt, NumberFormatter::NEGATIVE_PREFIX)."\n";
echo numfmt_format($fmt, -1234567.891234567890000)."\n";
numfmt_set_text_attribute($fmt, NumberFormatter::NEGATIVE_PREFIX, "MINUS");
echo "Prefix: ".numfmt_get_text_attribute($fmt, NumberFormatter::NEGATIVE_PREFIX)."\n";
echo numfmt_format($fmt, -1234567.891234567890000)."\n";
?>

Example #2 OO example

<?php
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
echo "Prefix: ".$fmt->getTextAttribute(NumberFormatter::NEGATIVE_PREFIX)."\n";
echo $fmt->format(-1234567.891234567890000)."\n";
$fmt->setTextAttribute(NumberFormatter::NEGATIVE_PREFIX, "MINUS");
echo "Prefix: ".$fmt->getTextAttribute(NumberFormatter::NEGATIVE_PREFIX)."\n";
echo $fmt->format(-1234567.891234567890000)."\n";
?>

以上例程会输出：

Prefix: -
-1.234.567,891
Prefix: MINUS
MINUS1.234.567,891

参见

  • numfmt_get_error_code() - Get formatter's last error code.
  • numfmt_get_attribute() - Get an attribute
  • numfmt_set_text_attribute() - Set a text attribute

NumberFormatter::getSymbol
NumberFormatter::parseCurrency
NumberFormatter


Parse a currency number

NumberFormatter::getTextAttribute
NumberFormatter::parse
NumberFormatter
PHP Manual

NumberFormatter::parseCurrency

numfmt_parse_currency

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

NumberFormatter::parseCurrency -- numfmt_parse_currency — Parse a currency number

说明

面向对象风格

public float NumberFormatter::parseCurrency ( string $value , string &$currency [, int &$position ] )

过程化风格

float numfmt_parse_currency ( NumberFormatter $fmt , string $value , string &$currency [, int &$position ] )

Parse a string into a double and a currency using the current formatter.

参数

fmt

NumberFormatter object.

currency

Parameter to receive the currency name (3-letter ISO 4217 currency code).

position

Offset in the string at which to begin parsing. On return, this value will hold the offset at which parsing ended.

返回值

The parsed numeric value or FALSE on error.

范例

Example #1 numfmt_parse_currency() example

<?php
$fmt = numfmt_create( 'de_DE', NumberFormatter::CURRENCY );
$num = "1.234.567,89\xc2\xa0$";
echo "We have ".numfmt_parse_currency($fmt, $num, $curr)." in $curr\n";
?>

Example #2 OO example

<?php
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::CURRENCY );
$num = "1.234.567,89\xc2\xa0$";
echo "We have ".$fmt->parseCurrency($num, $curr)." in $curr\n";
?>

以上例程会输出：

We have 1234567.89 in USD

参见

  • numfmt_get_error_code() - Get formatter's last error code.
  • numfmt_parse() - Parse a number
  • numfmt_format_currency() - Format a currency value

NumberFormatter::getTextAttribute
NumberFormatter::parse
NumberFormatter


Parse a number

NumberFormatter::parseCurrency
NumberFormatter::setAttribute
NumberFormatter
PHP Manual

NumberFormatter::parse

numfmt_parse

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

NumberFormatter::parse -- numfmt_parse — Parse a number

说明

面向对象风格

public mixed NumberFormatter::parse ( string $value [, int $type [, int &$position ]] )

过程化风格

mixed numfmt_parse ( NumberFormatter $fmt , string $value [, int $type [, int &$position ]] )

Parse a string into a number using the current formatter rules.

参数

fmt

NumberFormatter object.

type

The formatting type to use. By default, NumberFormatter::TYPE_DOUBLE is used.

position

Offset in the string at which to begin parsing. On return, this value will hold the offset at which parsing ended.

返回值

The value of the parsed number or FALSE on error.

范例

Example #1 numfmt_parse() example

<?php
$fmt = numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
$num = "1.234.567,891";
echo numfmt_parse($fmt, $num)."\n";
echo numfmt_parse($fmt, $num, NumberFormatter::TYPE_INT32)."\n";
?>

Example #2 OO example

<?php
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
$num = "1.234.567,891";
echo $fmt->parse($num)."\n";
echo $fmt->parse($num, NumberFormatter::TYPE_INT32)."\n";
?>

以上例程会输出：

1234567.891
1234567

参见

  • numfmt_get_error_code() - Get formatter's last error code.
  • numfmt_format() - Format a number
  • numfmt_parse_currency() - Parse a currency number

NumberFormatter::parseCurrency
NumberFormatter::setAttribute
NumberFormatter


Set an attribute

NumberFormatter::parse
NumberFormatter::setPattern
NumberFormatter
PHP Manual

NumberFormatter::setAttribute

numfmt_set_attribute

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

NumberFormatter::setAttribute -- numfmt_set_attribute — Set an attribute

说明

面向对象风格

public bool NumberFormatter::setAttribute ( int $attr , int $value )

过程化风格

bool numfmt_set_attribute ( NumberFormatter $fmt , int $attr , int $value )

Set a numeric attribute associated with the formatter. An example of a numeric attribute is the number of integer digits the formatter will produce.

参数

fmt

NumberFormatter object.

attr

Attribute specifier - one of the numeric attribute constants.

value

The attribute value.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 numfmt_set_attribute() example

<?php
$fmt = numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
echo "Digits: ".numfmt_get_attribute($fmt, NumberFormatter::MAX_FRACTION_DIGITS)."\n";
echo numfmt_format($fmt, 1234567.891234567890000)."\n";
numfmt_set_attribute($fmt, NumberFormatter::MAX_FRACTION_DIGITS, 2);
echo "Digits: ".numfmt_get_attribute($fmt, NumberFormatter::MAX_FRACTION_DIGITS)."\n";
echo numfmt_format($fmt, 1234567.891234567890000)."\n";
?>

Example #2 OO example

<?php
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
echo "Digits: ".$fmt->getAttribute(NumberFormatter::MAX_FRACTION_DIGITS)."\n";
echo $fmt->format(1234567.891234567890000)."\n";
$fmt->setAttribute(NumberFormatter::MAX_FRACTION_DIGITS, 2);
echo "Digits: ".$fmt->getAttribute(NumberFormatter::MAX_FRACTION_DIGITS)."\n";
echo $fmt->format(1234567.891234567890000)."\n";
?>

以上例程会输出：

Digits: 3
1.234.567,891
Digits: 2
1.234.567,89

参见

  • numfmt_get_error_code() - Get formatter's last error code.
  • numfmt_get_attribute() - Get an attribute
  • numfmt_set_text_attribute() - Set a text attribute

NumberFormatter::parse
NumberFormatter::setPattern
NumberFormatter


Set formatter pattern

NumberFormatter::setAttribute
NumberFormatter::setSymbol
NumberFormatter
PHP Manual

NumberFormatter::setPattern

numfmt_set_pattern

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

NumberFormatter::setPattern -- numfmt_set_pattern — Set formatter pattern

说明

面向对象风格

public bool NumberFormatter::setPattern ( string $pattern )

过程化风格

bool numfmt_set_pattern ( NumberFormatter $fmt , string $pattern )

Set the pattern used by the formatter. Can not be used on a rule-based formatter.

参数

fmt

NumberFormatter object.

pattern

Pattern in syntax described in » ICU DecimalFormat documentation.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 numfmt_set_pattern() example

<?php
$fmt = numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
echo "Pattern: ".numfmt_get_pattern($fmt)."\n";
echo numfmt_format($fmt, 1234567.891234567890000)."\n";
numfmt_set_pattern($fmt, "#0.# kg");
echo "Pattern: ".numfmt_get_pattern($fmt)."\n";
echo numfmt_format($fmt, 1234567.891234567890000)."\n";
?>

Example #2 OO example

<?php
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
echo "Pattern: ".$fmt->getPattern()."\n";
echo $fmt->format(1234567.891234567890000)."\n";
$fmt->setPattern("#0.# kg");
echo "Pattern: ".$fmt->getPattern()."\n";
echo $fmt->format(1234567.891234567890000)."\n";
?>

以上例程会输出：

Pattern: #,##0.###
1.234.567,891
Pattern: #0.# kg
1234567,9 kg

参见

  • numfmt_get_error_code() - Get formatter's last error code.
  • numfmt_create() - Create a number formatter
  • numfmt_get_pattern() - Get formatter pattern

NumberFormatter::setAttribute
NumberFormatter::setSymbol
NumberFormatter


Set a symbol value

NumberFormatter::setPattern
NumberFormatter::setTextAttribute
NumberFormatter
PHP Manual

NumberFormatter::setSymbol

numfmt_set_symbol

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

NumberFormatter::setSymbol -- numfmt_set_symbol — Set a symbol value

说明

面向对象风格

public bool NumberFormatter::setSymbol ( int $attr , string $value )

过程化风格

bool numfmt_set_symbol ( NumberFormatter $fmt , int $attr , string $value )

Set a symbol associated with the formatter. The formatter uses symbols to represent the special locale-dependent characters in a number, for example the percent sign. This API is not supported for rule-based formatters.

参数

fmt

NumberFormatter object.

attr

Symbol specifier, one of the format symbol constants.

value

Text for the symbol.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 numfmt_set_symbol() example

<?php
$fmt = numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
echo "Sep: ".numfmt_get_symbol($fmt, NumberFormatter::GROUPING_SEPARATOR_SYMBOL)."\n";
echo numfmt_format($fmt, 1234567.891234567890000)."\n";
numfmt_set_symbol($fmt, NumberFormatter::GROUPING_SEPARATOR_SYMBOL, "*");
echo "Sep: ".numfmt_get_symbol($fmt, NumberFormatter::GROUPING_SEPARATOR_SYMBOL)."\n";
echo numfmt_format($fmt, 1234567.891234567890000)."\n";
?>

Example #2 OO example

<?php
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
echo "Sep: ".$fmt->getSymbol(NumberFormatter::GROUPING_SEPARATOR_SYMBOL)."\n";
echo $fmt->format(1234567.891234567890000)."\n";
$fmt->setSymbol(NumberFormatter::GROUPING_SEPARATOR_SYMBOL, "*");
echo "Sep: ".$fmt->getSymbol(NumberFormatter::GROUPING_SEPARATOR_SYMBOL)."\n";
echo $fmt->format(1234567.891234567890000)."\n";
?>

以上例程会输出：

Sep: .
1.234.567,891
Sep: *
1*234*567,891

参见

  • numfmt_get_error_code() - Get formatter's last error code.
  • numfmt_get_symbol() - Get a symbol value

NumberFormatter::setPattern
NumberFormatter::setTextAttribute
NumberFormatter


Set a text attribute

NumberFormatter::setSymbol
Locale
NumberFormatter
PHP Manual

NumberFormatter::setTextAttribute

numfmt_set_text_attribute

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

NumberFormatter::setTextAttribute -- numfmt_set_text_attribute — Set a text attribute

说明

面向对象风格

public bool NumberFormatter::setTextAttribute ( int $attr , string $value )

过程化风格

bool numfmt_set_text_attribute ( NumberFormatter $fmt , int $attr , string $value )

Set a text attribute associated with the formatter. An example of a text attribute is the suffix for positive numbers. If the formatter does not understand the attribute, U_UNSUPPORTED_ERROR error is produced. Rule-based formatters only understand NumberFormatter::DEFAULT_RULESET and NumberFormatter::PUBLIC_RULESETS.

参数

fmt

NumberFormatter object.

attr

Attribute specifier - one of the text attribute constants.

value

Text for the attribute value.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 numfmt_set_text_attribute() example

<?php
$fmt = numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
echo "Prefix: ".numfmt_get_text_attribute($fmt, NumberFormatter::NEGATIVE_PREFIX)."\n";
echo numfmt_format($fmt, -1234567.891234567890000)."\n";
numfmt_set_text_attribute($fmt, NumberFormatter::NEGATIVE_PREFIX, "MINUS");
echo "Prefix: ".numfmt_get_text_attribute($fmt, NumberFormatter::NEGATIVE_PREFIX)."\n";
echo numfmt_format($fmt, -1234567.891234567890000)."\n";
?>

Example #2 OO example

<?php
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
echo "Prefix: ".$fmt->getTextAttribute(NumberFormatter::NEGATIVE_PREFIX)."\n";
echo $fmt->format(-1234567.891234567890000)."\n";
$fmt->setTextAttribute(NumberFormatter::NEGATIVE_PREFIX, "MINUS");
echo "Prefix: ".$fmt->getTextAttribute(NumberFormatter::NEGATIVE_PREFIX)."\n";
echo $fmt->format(-1234567.891234567890000)."\n";
?>

以上例程会输出：

Prefix: -
-1.234.567,891
Prefix: MINUS
MINUS1.234.567,891

参见

  • numfmt_get_error_code() - Get formatter's last error code.
  • numfmt_get_text_attribute() - Get a text attribute
  • numfmt_set_attribute() - Set an attribute

NumberFormatter::setSymbol
Locale
NumberFormatter


The Locale class

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

简介

A "Locale" is an identifier used to get language, culture, or regionally-specific behavior from an API. PHP locales are organized and identified the same way that the CLDR locales used by ICU (and many vendors of Unix-like operating systems, the Mac, Java, and so forth) use. Locales are identified using RFC 4646 language tags (which use hyphen, not underscore) in addition to the more traditional underscore-using identifiers. Unless otherwise noted the functions in this class are tolerant of both formats.

Examples of identifiers include:

  • en-US (English, United States)
  • zh-Hant-TW (Chinese, Traditional Script, Taiwan)
  • fr-CA, fr-FR (French for Canada and France respectively)

The Locale class (and related procedural functions) are used to interact with locale identifiers--to verify that an ID is well-formed, valid, etc. The extensions used by CLDR in UAX #35 (and inherited by ICU) are valid and used wherever they would be in ICU normally.

Locales cannot be instantiated as objects. All of the functions/methods provided are static.

The null or empty string obtains the "root" locale. The "root" locale is equivalent to "en_US_POSIX" in CLDR. Language tags (and thus locale identifiers) are case insensitive. There exists a canonicalization function to make case match the specification.

类摘要

Locale {
/* 方法 */
public static string acceptFromHttp ( string $header )
public static string canonicalize ( string $locale )
public static string composeLocale ( array $subtags )
public static bool filterMatches ( string $langtag , string $locale [, bool $canonicalize = false ] )
public static array getAllVariants ( string $locale )
public static string getDefault ( void )
public static string getDisplayLanguage ( string $locale [, string $in_locale ] )
public static string getDisplayName ( string $locale [, string $in_locale ] )
public static string getDisplayRegion ( string $locale [, string $in_locale ] )
public static string getDisplayScript ( string $locale [, string $in_locale ] )
public static string getDisplayVariant ( string $locale [, string $in_locale ] )
public static array getKeywords ( string $locale )
public static string getPrimaryLanguage ( string $locale )
public static string getRegion ( string $locale )
public static string getScript ( string $locale )
public static string lookup ( array $langtag , string $locale [, bool $canonicalize = false [, string $default ]] )
public static array parseLocale ( string $locale )
public static bool setDefault ( string $locale )
}

预定义常量

Locale::DEFAULT_LOCALE (null)
Used as locale parameter with the methods of the various locale affected classes, such as NumberFormatter. This constant would make the methods to use default locale.

These constants describe the choice of the locale for getLocalte method of different classes.

Locale::ACTUAL_LOCALE (string)
This is locale the data actually comes from.
Locale::VALID_LOCALE (string)
This is the most specific locale supported by ICU.

These constants define how the Locales are parsed or composed. They should be used as keys in the argument array to locale_compose() and are returned from locale_parse() as keys of the returned associative array.

Locale::LANG_TAG (string)
Language subtag
Locale::EXTLANG_TAG (string)
Extended language subtag
Locale::SCRIPT_TAG (string)
Script subtag
Locale::REGION_TAG (string)
Region subtag
Locale::VARIANT_TAG (string)
Variant subtag
Locale::GRANDFATHERED_LANG_TAG (string)
Grandfathered Language subtag
Locale::PRIVATE_TAG (string)
Private subtag

参见

  • » RFC 4646 - Tags for Identifying Languages
  • » RFC 4647 - Matching of Language Tags
  • » Unicode CLDR Project:Common Locale Data Repository
  • » IANA Language Subtags Registry
  • » ICU User Guide - Locale
  • » ICU Locale api

Table of Contents

  • Locale::acceptFromHttp — Tries to find out best available locale based on HTTP "Accept-Language" header
  • Locale::canonicalize — Canonicalize the locale string
  • Locale::composeLocale — Returns a correctly ordered and delimited locale ID
  • Locale::filterMatches — Checks if a language tag filter matches with locale
  • Locale::getAllVariants — Gets the variants for the input locale
  • Locale::getDefault — Gets the default locale value from the INTL global 'default_locale'
  • Locale::getDisplayLanguage — Returns an appropriately localized display name for language of the inputlocale
  • Locale::getDisplayName — Returns an appropriately localized display name for the input locale
  • Locale::getDisplayRegion — Returns an appropriately localized display name for region of the input locale
  • Locale::getDisplayScript — Returns an appropriately localized display name for script of the input locale
  • Locale::getDisplayVariant — Returns an appropriately localized display name for variants of the input locale
  • Locale::getKeywords — Gets the keywords for the input locale
  • Locale::getPrimaryLanguage — Gets the primary language for the input locale
  • Locale::getRegion — Gets the region for the input locale
  • Locale::getScript — Gets the script for the input locale
  • Locale::lookup — Searches the language tag list for the best match to the language
  • Locale::parseLocale — Returns a key-value array of locale ID subtag elements.
  • Locale::setDefault — sets the default runtime locale
NumberFormatter::setTextAttribute
Locale::acceptFromHttp
intl


Tries to find out best available locale based on HTTP "Accept-Language" header

Locale
Locale::canonicalize
Locale
PHP Manual

Locale::acceptFromHttp

locale_accept_from_http

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Locale::acceptFromHttp -- locale_accept_from_http — Tries to find out best available locale based on HTTP "Accept-Language" header

说明

面向对象风格

public static string Locale::acceptFromHttp ( string $header )

过程化风格

string locale_accept_from_http ( string $header )

Tries to find locale that can satisfy the language list that is requested by the HTTP "Accept-Language" header.

参数

header

The string containing the "Accept-Language" header according to format in RFC 2616.

返回值

The corresponding locale identifier.

范例

Example #1 locale_accept_from_http() example

<?php
$locale = locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE']);
echo $locale;
?>

Example #2 OO example

<?php
$locale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
echo $locale;
?>

以上例程会输出：

en_US

参见

  • locale_lookup() - Searches the language tag list for the best match to the language

Locale
Locale::canonicalize
Locale


Canonicalize the locale string

Locale::acceptFromHttp
Locale::composeLocale
Locale
PHP Manual

Locale::canonicalize

locale_canonicalize

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Locale::canonicalize -- locale_canonicalize — Canonicalize the locale string

说明

public static string Locale::canonicalize ( string $locale )

Warning

本函数还未编写文档，仅有参数列表。

参数

locale

返回值

Locale::acceptFromHttp
Locale::composeLocale
Locale


Returns a correctly ordered and delimited locale ID

Locale::canonicalize
Locale::filterMatches
Locale
PHP Manual

Locale::composeLocale

locale_compose

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Locale::composeLocale -- locale_compose — Returns a correctly ordered and delimited locale ID

说明

面向对象风格

public static string Locale::composeLocale ( array $subtags )

过程化风格

string locale_compose ( array $subtags )

Returns a correctly ordered and delimited locale ID the keys identify the particular locale ID subtags, and the values are the associated subtag values.

参数

subtags

an array containing a list of key-value pairs, where the keys identify the particular locale ID subtags, and the values are the associated subtag values.

Note:

The 'variant' and 'private' subtags can take maximum 15 values whereas 'extlang' can take maximum 3 values.e.g. Variants are allowed with the suffix ranging from 0-14. Hence the keys for the input array can be variant0, variant1, ...,variant14. In the returned locale id, the subtag is ordered by suffix resulting in variant0 followed by variant1 followed by variant2 and so on.

The 'variant', 'private' and 'extlang' multiple values can be specified both as array under specific key (e.g. 'variant') and as multiple numbered keys (e.g. 'variant0', 'variant1', etc.).

返回值

The corresponding locale identifier.

范例

Example #1 locale_compose() example

<?php
$arr = array(
    'language'=>'en' ,
    'script'  =>'Hans' ,
    'region'  =>'CN',
    'variant2'=>'rozaj' ,
    'variant1'=>'nedis' ,
    'private1'=>'prv1' ,
    'private2'=>'prv2'
);
echo locale_compose( $arr );
?>

Example #2 OO example

<?php
$arr = array(
    'language'=>'en' ,
    'script'  =>'Hans' ,
    'region'  =>'CN',
    'variant2'=>'rozaj' ,
    'variant1'=>'nedis' ,
    'private1'=>'prv1' ,
    'private2'=>'prv2'
);
echo Locale::composeLocale( $arr );
?>

以上例程会输出：

Locale: en_Hans_CN_nedis_rozaj_x_prv1_prv2

参见

  • locale_parse() - Returns a key-value array of locale ID subtag elements.

Locale::canonicalize
Locale::filterMatches
Locale


Checks if a language tag filter matches with locale

Locale::composeLocale
Locale::getAllVariants
Locale
PHP Manual

Locale::filterMatches

locale_filter_matches

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Locale::filterMatches -- locale_filter_matches — Checks if a language tag filter matches with locale

说明

面向对象风格

public static bool Locale::filterMatches ( string $langtag , string $locale [, bool $canonicalize = false ] )

过程化风格

bool locale_filter_matches ( string $langtag , string $locale [, bool $canonicalize = false ] )

Checks if a $langtag filter matches with $locale according to RFC 4647's basic filtering algorithm

参数

langtag

The language tag to check

locale

The language range to check against

canonicalize

If true, the arguments will be converted to canonical form before matching.

返回值

TRUE if $locale matches $langtag FALSE otherwise.

范例

Example #1 locale_filter_matches() example

<?php
echo (locale_filter_matches('de-DEVA','de-DE', false)) ? "Matches" : "Does not match";
echo '; ';
echo (locale_filter_matches('de-DE_1996','de-DE', false)) ? "Matches" : "Does not match";
?>

Example #2 OO example

<?php
echo (Locale::filterMatches('de-DEVA','de-DE', false)) ? "Matches" : "Does not match";
echo '; ';
echo (Locale::filterMatches('de-DE-1996','de-DE', false)) ? "Matches" : "Does not match";
?>

以上例程会输出：

Does not match; Matches

参见

  • locale_lookup() - Searches the language tag list for the best match to the language

Locale::composeLocale
Locale::getAllVariants
Locale


Gets the variants for the input locale

Locale::filterMatches
Locale::getDefault
Locale
PHP Manual

Locale::getAllVariants

locale_get_all_variants

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Locale::getAllVariants -- locale_get_all_variants — Gets the variants for the input locale

说明

面向对象风格

public static array Locale::getAllVariants ( string $locale )

过程化风格

array locale_get_all_variants ( string $locale )

Gets the variants for the input locale

参数

locale

The locale to extract the variants from

返回值

The array containing the list of all variants subtag for the locale or NULL if not present

范例

Example #1 locale_get_all_variants() example

<?php
$arr = locale_get_all_variants('sl_IT_NEDIS_ROJAZ_1901');
var_export( $arr );
?>

Example #2 OO example

<?php
 $arr = Locale::getAllVariants('sl_IT_NEDIS_ROJAZ_1901');
 var_export( $arr );
?>

以上例程会输出：

array (
    0 => 'NEDIS',
    1 => 'ROJAZ',
    2 => '1901',
)

参见

  • locale_get_primary_language() - Gets the primary language for the input locale
  • locale_get_script() - Gets the script for the input locale
  • locale_get_region() - Gets the region for the input locale

Locale::filterMatches
Locale::getDefault
Locale


Gets the default locale value from the INTL global 'default_locale'

Locale::getAllVariants
Locale::getDisplayLanguage
Locale
PHP Manual

Locale::getDefault

locale_get_default

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Locale::getDefault -- locale_get_default — Gets the default locale value from the INTL global 'default_locale'

说明

面向对象风格

public static string Locale::getDefault ( void )

过程化风格

string locale_get_default ( void )

Gets the default locale value. At the PHP initialization this value is set to 'intl.default_locale' value from php.ini if that value exists or from ICU's function uloc_getDefault().

参数

返回值

The current runtime locale

范例

Example #1 locale_get_default() example

<?php
ini_set('intl.default_locale', 'de-DE');
echo locale_get_default();
echo '; ';
locale_set_default('fr');
echo locale_get_default();
?>

Example #2 OO example

<?php
ini_set('intl.default_locale', 'de-DE');
echo Locale::getDefault();
echo '; ';
Locale::setDefault('fr');
echo Locale::getDefault();
?>

以上例程会输出：

de-DE; fr

参见

  • locale_set_default() - sets the default runtime locale

Locale::getAllVariants
Locale::getDisplayLanguage
Locale


Returns an appropriately localized display name for language of the inputlocale

Locale::getDefault
Locale::getDisplayName
Locale
PHP Manual

Locale::getDisplayLanguage

locale_get_display_language

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Locale::getDisplayLanguage -- locale_get_display_language — Returns an appropriately localized display name for language of the inputlocale

说明

面向对象风格

public static string Locale::getDisplayLanguage ( string $locale [, string $in_locale ] )

过程化风格

string locale_get_display_language ( string $locale [, string $in_locale ] )

Returns an appropriately localized display name for language of the input locale. If is NULL then the default locale is used.

参数

locale

The locale to return a display language for

in_locale

Optional format locale to use to display the language name

返回值

display name of the language for the $locale in the format appropriate for $in_locale.

范例

Example #1 locale_get_display_language() example

<?php
echo locale_get_display_language('sl-Latn-IT-nedis', 'en');
echo ";\n";
echo locale_get_display_language('sl-Latn-IT-nedis', 'fr');
echo ";\n";
echo locale_get_display_language('sl-Latn-IT-nedis', 'de');
?>

Example #2 OO example

<?php
echo Locale::getDisplayLanguage('sl-Latn-IT-nedis', 'en');
echo ";\n";
echo Locale::getDisplayLanguage('sl-Latn-IT-nedis', 'fr');
echo ";\n";
echo Locale::getDisplayLanguage('sl-Latn-IT-nedis', 'de');
?>

以上例程会输出：

Slovenian;
slov\xc3\xa8ne;
Slowenisch

参见

  • locale_get_display_name() - Returns an appropriately localized display name for the input locale
  • locale_get_display_script() - Returns an appropriately localized display name for script of the input locale
  • locale_get_display_region() - Returns an appropriately localized display name for region of the input locale
  • locale_get_display_variant() - Returns an appropriately localized display name for variants of the input locale

Locale::getDefault
Locale::getDisplayName
Locale


Returns an appropriately localized display name for the input locale

Locale::getDisplayLanguage
Locale::getDisplayRegion
Locale
PHP Manual

Locale::getDisplayName

locale_get_display_name

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Locale::getDisplayName -- locale_get_display_name — Returns an appropriately localized display name for the input locale

说明

面向对象风格

public static string Locale::getDisplayName ( string $locale [, string $in_locale ] )

过程化风格

string locale_get_display_name ( string $locale [, string $in_locale ] )

Returns an appropriately localized display name for the input locale. If is NULL then the default locale is used.

参数

locale

The locale to return a display name for.

in_locale

optional format locale

返回值

Display name of the locale in the format appropriate for $in_locale.

范例

Example #1 locale_get_display_name() example

<?php
echo locale_get_display_name('sl-Latn-IT-nedis', 'en');
echo ";\n";
echo locale_get_display_name('sl-Latn-IT-nedis', 'fr');
echo ";\n";
echo locale_get_display_name('sl-Latn-IT-nedis', 'de');
?>

Example #2 OO example

<?php
echo Locale::getDisplayName('sl-Latn-IT-nedis', 'en');
echo ";\n";
echo Locale::getDisplayName('sl-Latn-IT-nedis', 'fr');
echo ";\n";
echo Locale::getDisplayName('sl-Latn-IT-nedis', 'de');
?>

以上例程会输出：

Slovenian (Latin, Italy, Natisone dialect);
slov\xc3\xa8ne (latin, Italie, dialecte de Natisone;
Slowenisch (Lateinisch, Italien, NEDIS)

参见

  • locale_get_display_language() - Returns an appropriately localized display name for language of the inputlocale
  • locale_get_display_script() - Returns an appropriately localized display name for script of the input locale
  • locale_get_display_region() - Returns an appropriately localized display name for region of the input locale
  • locale_get_display_variant() - Returns an appropriately localized display name for variants of the input locale

Locale::getDisplayLanguage
Locale::getDisplayRegion
Locale


Returns an appropriately localized display name for region of the input locale

Locale::getDisplayName
Locale::getDisplayScript
Locale
PHP Manual

Locale::getDisplayRegion

locale_get_display_region

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Locale::getDisplayRegion -- locale_get_display_region — Returns an appropriately localized display name for region of the input locale

说明

面向对象风格

public static string Locale::getDisplayRegion ( string $locale [, string $in_locale ] )

过程化风格

string locale_get_display_region ( string $locale [, string $in_locale ] )

Returns an appropriately localized display name for region of the input locale. If is NULL then the default locale is used.

参数

locale

The locale to return a display region for.

in_locale

Optional format locale to use to display the region name

返回值

display name of the region for the $locale in the format appropriate for $in_locale.

范例

Example #1 locale_get_display_region() example

<?php
echo locale_get_display_region('sl-Latn-IT-nedis', 'en');
echo ";\n";
echo locale_get_display_region('sl-Latn-IT-nedis', 'fr');
echo ";\n";
echo locale_get_display_region('sl-Latn-IT-nedis', 'de');
?>

Example #2 OO example

<?php
echo Locale::getDisplayRegion('sl-Latn-IT-nedis', 'en');
echo ";\n";
echo Locale::getDisplayRegion('sl-Latn-IT-nedis', 'fr');
echo ";\n";
echo Locale::getDisplayRegion('sl-Latn-IT-nedis', 'de');
?>

以上例程会输出：

Italy;
Italie;
Italien

参见

  • locale_get_display_name() - Returns an appropriately localized display name for the input locale
  • locale_get_display_language() - Returns an appropriately localized display name for language of the inputlocale
  • locale_get_display_script() - Returns an appropriately localized display name for script of the input locale
  • locale_get_display_variant() - Returns an appropriately localized display name for variants of the input locale

Locale::getDisplayName
Locale::getDisplayScript
Locale


Returns an appropriately localized display name for script of the input locale

Locale::getDisplayRegion
Locale::getDisplayVariant
Locale
PHP Manual

Locale::getDisplayScript

locale_get_display_script

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Locale::getDisplayScript -- locale_get_display_script — Returns an appropriately localized display name for script of the input locale

说明

面向对象风格

public static string Locale::getDisplayScript ( string $locale [, string $in_locale ] )

过程化风格

string locale_get_display_script ( string $locale [, string $in_locale ] )

Returns an appropriately localized display name for script of the input locale. If is NULL then the default locale is used.

参数

locale

The locale to return a display script for

in_locale

Optional format locale to use to display the script name

返回值

Display name of the script for the $locale in the format appropriate for $in_locale.

范例

Example #1 locale_get_display_script() example

<?php
echo locale_get_display_script('sl-Latn-IT-nedis', 'en');
echo ";\n";
echo locale_get_display_script('sl-Latn-IT-nedis', 'fr');
echo ";\n";
echo locale_get_display_script('sl-Latn-IT-nedis', 'de');
?>

Example #2 OO example

<?php
echo Locale::getDisplayScript('sl-Latn-IT-nedis', 'en');
echo ";\n";
echo Locale::getDisplayScript('sl-Latn-IT-nedis', 'fr');
echo ";\n";
echo Locale::getDisplayScript('sl-Latn-IT-nedis', 'de');
?>

以上例程会输出：

Latin;
latin;
Lateinisch

参见

  • locale_get_display_name() - Returns an appropriately localized display name for the input locale
  • locale_get_display_language() - Returns an appropriately localized display name for language of the inputlocale
  • locale_get_display_region() - Returns an appropriately localized display name for region of the input locale
  • locale_get_display_variant() - Returns an appropriately localized display name for variants of the input locale

Locale::getDisplayRegion
Locale::getDisplayVariant
Locale


Returns an appropriately localized display name for variants of the input locale

Locale::getDisplayScript
Locale::getKeywords
Locale
PHP Manual

Locale::getDisplayVariant

locale_get_display_variant

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Locale::getDisplayVariant -- locale_get_display_variant — Returns an appropriately localized display name for variants of the input locale

说明

面向对象风格

public static string Locale::getDisplayVariant ( string $locale [, string $in_locale ] )

过程化风格

string locale_get_display_variant ( string $locale [, string $in_locale ] )

Returns an appropriately localized display name for variants of the input locale. If is NULL then the default locale is used.

参数

locale

The locale to return a display variant for

in_locale

Optional format locale to use to display the variant name

返回值

Display name of the variant for the $locale in the format appropriate for $in_locale.

范例

Example #1 locale_get_display_variant() example

<?php
echo locale_get_display_variant('sl-Latn-IT-nedis', 'en');
echo ";\n";
echo locale_get_display_variant('sl-Latn-IT-nedis', 'fr');
echo ";\n";
echo locale_get_display_variant('sl-Latn-IT-nedis', 'de');
?>

Example #2 OO example

<?php
echo Locale::getDisplayVariant('sl-Latn-IT-nedis', 'en');
echo ";\n";
echo Locale::getDisplayVariant('sl-Latn-IT-nedis', 'fr');
echo ";\n";
echo Locale::getDisplayVariant('sl-Latn-IT-nedis', 'de');
?>

以上例程会输出：

Natisone dialect;
dialecte de Natisone;
NEDIS

参见

  • locale_get_display_name() - Returns an appropriately localized display name for the input locale
  • locale_get_display_language() - Returns an appropriately localized display name for language of the inputlocale
  • locale_get_display_script() - Returns an appropriately localized display name for script of the input locale
  • locale_get_display_region() - Returns an appropriately localized display name for region of the input locale

Locale::getDisplayScript
Locale::getKeywords
Locale


Gets the keywords for the input locale

Locale::getDisplayVariant
Locale::getPrimaryLanguage
Locale
PHP Manual

Locale::getKeywords

locale_get_keywords

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Locale::getKeywords -- locale_get_keywords — Gets the keywords for the input locale

说明

面向对象风格

public static array Locale::getKeywords ( string $locale )

过程化风格

array locale_get_keywords ( string $locale )

Gets the keywords for the input locale.

参数

locale

The locale to extract the keywords from

返回值

Associative array containing the keyword-value pairs for this locale

范例

Example #1 locale_get_keywords() example

<?php
$keywords_arr = locale_get_keywords( 'de_DE@currency=EUR;collation=PHONEBOOK' );
if ($keywords_arr) {
    foreach ($keywords_arr as $key => $value) {
        echo "$key = $value\n";
    }
}
?>

Example #2 OO example

<?php
$keywords_arr = Locale::getKeywords( 'de_DE@currency=EUR;collation=PHONEBOOK' );
if ($keywords_arr) {
    foreach( $keywords_arr as $key => $value){
        echo "$key = $value\n";
    }
}
?>

以上例程会输出：

collation = PHONEBOOK
currency = EUR

参见

  • locale_get_all_variants() - Gets the variants for the input locale

Locale::getDisplayVariant
Locale::getPrimaryLanguage
Locale


Gets the primary language for the input locale

Locale::getKeywords
Locale::getRegion
Locale
PHP Manual

Locale::getPrimaryLanguage

locale_get_primary_language

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Locale::getPrimaryLanguage -- locale_get_primary_language — Gets the primary language for the input locale

说明

面向对象风格

public static string Locale::getPrimaryLanguage ( string $locale )

过程化风格

string locale_get_primary_language ( string $locale )

Gets the primary language for the input locale

参数

locale

The locale to extract the primary language code from

返回值

The language code associated with the language or NULL in case of error.

范例

Example #1 locale_get_primary_language() example

<?php
echo locale_get_primary_language('zh-Hant');
?>

Example #2 OO example

<?php
echo Locale::getPrimaryLanguage('zh-Hant');
?>

以上例程会输出：

zh

参见

  • locale_get_script() - Gets the script for the input locale
  • locale_get_region() - Gets the region for the input locale
  • locale_get_all_variants() - Gets the variants for the input locale

Locale::getKeywords
Locale::getRegion
Locale


Gets the region for the input locale

Locale::getPrimaryLanguage
Locale::getScript
Locale
PHP Manual

Locale::getRegion

locale_get_region

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Locale::getRegion -- locale_get_region — Gets the region for the input locale

说明

面向对象风格

public static string Locale::getRegion ( string $locale )

过程化风格

string locale_get_region ( string $locale )

Gets the region for the input locale.

参数

locale

The locale to extract the region code from

返回值

The region subtag for the locale or NULL if not present

范例

Example #1 locale_get_region() example

<?php
echo locale_get_region('de-CH-1901');
?>

Example #2 OO example

<?php
echo Locale::getRegion('de-CH-1901');
?>

以上例程会输出：

CH

参见

  • locale_get_primary_language() - Gets the primary language for the input locale
  • locale_get_script() - Gets the script for the input locale
  • locale_get_all_variants() - Gets the variants for the input locale

Locale::getPrimaryLanguage
Locale::getScript
Locale


Gets the script for the input locale

Locale::getRegion
Locale::lookup
Locale
PHP Manual

Locale::getScript

locale_get_script

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Locale::getScript -- locale_get_script — Gets the script for the input locale

说明

面向对象风格

public static string Locale::getScript ( string $locale )

过程化风格

string locale_get_script ( string $locale )

Gets the script for the input locale.

参数

locale

The locale to extract the script code from

返回值

The script subtag for the locale or NULL if not present

范例

Example #1 locale_get_script() example

<?php
echo locale_get_script('sr-Cyrl');
?>

Example #2 OO example

<?php
echo Locale::getScript('sr-Cyrl');
?>

以上例程会输出：

Cyrl

参见

  • locale_get_primary_language() - Gets the primary language for the input locale
  • locale_get_region() - Gets the region for the input locale
  • locale_get_all_variants() - Gets the variants for the input locale

Locale::getRegion
Locale::lookup
Locale


Searches the language tag list for the best match to the language

Locale::getScript
Locale::parseLocale
Locale
PHP Manual

Locale::lookup

locale_lookup

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Locale::lookup -- locale_lookup — Searches the language tag list for the best match to the language

说明

面向对象风格

public static string Locale::lookup ( array $langtag , string $locale [, bool $canonicalize = false [, string $default ]] )

过程化风格

string locale_lookup ( array $langtag , string $locale [, bool $canonicalize = false [, string $default ]] )

Searches the items in langtag for the best match to the language range specified in locale according to RFC 4647's lookup algorithm.

参数

langtag

An array containing a list of language tags to compare to locale. Maximum 100 items allowed.

locale

The locale to use as the language range when matching.

canonicalize

If true, the arguments will be converted to canonical form before matching.

default

The locale to use if no match is found.

返回值

The closest matching language tag or default value.

范例

Example #1 locale_lookup() example

<?php
$arr = array(
    'de-DEVA',
    'de-DE-1996',
    'de',
    'de-De'
);
echo locale_lookup($arr, 'de-DE-1996-x-prv1-prv2', true, 'en_US');
?>

Example #2 OO example

<?php
$arr = array(
    'de-DEVA',
    'de-DE-1996',
    'de',
    'de-De'
);
echo Locale::lookup($arr, 'de-DE-1996-x-prv1-prv2', true, 'en_US');
?>

以上例程会输出：

de_de_1996

参见

  • locale_filter_matches() - Checks if a language tag filter matches with locale

Locale::getScript
Locale::parseLocale
Locale


Returns a key-value array of locale ID subtag elements.

Locale::lookup
Locale::setDefault
Locale
PHP Manual

Locale::parseLocale

locale_parse

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Locale::parseLocale -- locale_parse — Returns a key-value array of locale ID subtag elements.

说明

面向对象风格

public static array Locale::parseLocale ( string $locale )

过程化风格

array locale_parse ( string $locale )

Returns a key-value array of locale ID subtag elements.

参数

locale

The locale to extract the subtag array from. Note: The 'variant' and 'private' subtags can take maximum 15 values whereas 'extlang' can take maximum 3 values.

返回值

Returns an array containing a list of key-value pairs, where the keys identify the particular locale ID subtags, and the values are the associated subtag values. The array will be ordered as the locale id subtags e.g. in the locale id if variants are '-varX-varY-varZ' then the returned array will have variant0=>varX , variant1=>varY , variant2=>varZ

范例

Example #1 locale_parse() example

<?php
$arr = locale_parse('sl-Latn-IT-nedis');
if ($arr) {
    foreach ($arr as $key => $value) {
        echo "$key : $value , ";
    }
}
?>

Example #2 OO example

<?php
$arr = Locale::parseLocale('sl-Latn-IT-nedis');
if ($arr) {
    foreach ($arr as $key => $value) {
        echo "$key : $value , ";
    }
}
?>

以上例程会输出：

language : sl , script : Latn , region : IT , variant0 : NEDIS ,

参见

  • locale_compose() - Returns a correctly ordered and delimited locale ID

Locale::lookup
Locale::setDefault
Locale


sets the default runtime locale

Locale::parseLocale
Normalizer
Locale
PHP Manual

Locale::setDefault

locale_set_default

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Locale::setDefault -- locale_set_default — sets the default runtime locale

说明

面向对象风格

public static bool Locale::setDefault ( string $locale )

过程化风格

bool locale_set_default ( string $locale )

Sets the default runtime locale to $locale. This changes the value of INTL global 'default_locale' locale identifier. UAX #35 extensions are accepted.

参数

locale

Is a BCP 47 compliant language tag.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 locale_set_default() example

<?php
locale_set_default('de-DE');
echo locale_get_default();
?>

Example #2 OO example

<?php
Locale::setDefault('de-DE');
echo Locale::getDefault();
?>

以上例程会输出：

de-DE

参见

  • locale_get_default() - Gets the default locale value from the INTL global 'default_locale'

Locale::parseLocale
Normalizer
Locale


The Normalizer class

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

简介

Normalization is a process that involves transforming characters and sequences of characters into a formally-defined underlying representation. This process is most important when text needs to be compared for sorting and searching, but it is also used when storing text to ensure that the text is stored in a consistent representation.

The Unicode Consortium has defined a number of normalization forms reflecting the various needs of applications:

  • Normalization Form D (NFD) - Canonical Decomposition
  • Normalization Form C (NFC) - Canonical Decomposition followed by Canonical Composition
  • Normalization Form KD (NFKD) - Compatibility Decomposition
  • Normalization Form KC (NFKC) - Compatibility Decomposition followed by Canonical Composition
The different forms are defined in terms of a set of transformations on the text, transformations that are expressed by both an algorithm and a set of data files.

类摘要

Normalizer {
/* 方法 */
public static bool isNormalized ( string $input [, int $form = Normalizer::FORM_C ] )
public static string normalize ( string $input [, int $form = Normalizer::FORM_C ] )
}

预定义常量

The following constants define the normalization form used by the normalizer:

Normalizer::FORM_C (integer)
Normalization Form C (NFC) - Canonical Decomposition followed by Canonical Composition
Normalizer::FORM_D (integer)
Normalization Form D (NFD) - Canonical Decomposition
Normalizer::FORM_KC (integer)
Normalization Form KC (NFKC) - Compatibility Decomposition, followed by Canonical Composition
Normalizer::FORM_KD (integer)
Normalization Form KD (NFKD) - Compatibility Decomposition
Normalizer::NONE (integer)
No decomposition/composition
Normalizer::OPTION_DEFAULT (integer)
Default normalization options

参见

  • » Unicode Normalization
  • » Unicode Normalization FAQ
  • » ICU User Guide - Normalization
  • » ICU API Reference - Normalization

Table of Contents

  • Normalizer::isNormalized — Checks if the provided string is already in the specified normalization form.
  • Normalizer::normalize — Normalizes the input provided and returns the normalized string
Locale::setDefault
Normalizer::isNormalized
intl


Checks if the provided string is already in the specified normalization form.

Normalizer
Normalizer::normalize
Normalizer
PHP Manual

Normalizer::isNormalized

normalizer_is_normalized

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Normalizer::isNormalized -- normalizer_is_normalized — Checks if the provided string is already in the specified normalization form.

说明

面向对象风格

public static bool Normalizer::isNormalized ( string $input [, int $form = Normalizer::FORM_C ] )

过程化风格

bool normalizer_is_normalized ( string $input [, int $form = Normalizer::FORM_C ] )

Checks if the provided string is already in the specified normalization form.

参数

input

The input string to normalize

form

One of the normalization forms.

返回值

TRUE if normalized, FALSE otherwise or if there an error

范例

Example #1 normalizer_is_normalized() example

<?php
$char_A_ring = "\xC3\x85"; // 'LATIN CAPITAL LETTER A WITH RING ABOVE' (U+00C5)
$char_combining_ring_above = "\xCC\x8A";  // 'COMBINING RING ABOVE' (U+030A)

$char_orig = 'A' . $char_combining_ring_above;
$char_norm = normalizer_normalize( 'A' . $char_combining_ring_above, Normalizer::FORM_C );

echo ( normalizer_is_normalized($char_orig, Normalizer::FORM_C) ) ? "normalized" : "not normalized";
echo '; ';
echo ( normalizer_is_normalized($char_norm, Normalizer::FORM_C) ) ? "normalized" : "not normalized";
?>

Example #2 OO example

<?php
$char_A_ring = "\xC3\x85"; // 'LATIN CAPITAL LETTER A WITH RING ABOVE' (U+00C5)
$char_combining_ring_above = "\xCC\x8A";  // 'COMBINING RING ABOVE' (U+030A)

$char_orig = 'A' . $char_combining_ring_above;
$char_norm = Normalizer::normalize( 'A' . $char_combining_ring_above, Normalizer::FORM_C );

echo ( Normalizer::isNormalized($char_orig, Normalizer::FORM_C) ) ? "normalized" : "not normalized";
echo '; ';
echo ( Normalizer::isNormalized($char_norm, Normalizer::FORM_C) ) ? "normalized" : "not normalized";
?>

以上例程会输出：

not normalized; normalized

参见

  • normalizer_normalize() - Normalizes the input provided and returns the normalized string

Normalizer
Normalizer::normalize
Normalizer


Normalizes the input provided and returns the normalized string

Normalizer::isNormalized
MessageFormatter
Normalizer
PHP Manual

Normalizer::normalize

normalizer_normalize

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

Normalizer::normalize -- normalizer_normalize — Normalizes the input provided and returns the normalized string

说明

面向对象风格

public static string Normalizer::normalize ( string $input [, int $form = Normalizer::FORM_C ] )

过程化风格

string normalizer_normalize ( string $input [, int $form = Normalizer::FORM_C ] )

Normalizes the input provided and returns the normalized string

参数

input

The input string to normalize

form

One of the normalization forms.

返回值

The normalized string or FALSE if an error occurred.

范例

Example #1 normalizer_normalize() example

<?php
$char_A_ring = "\xC3\x85"; // 'LATIN CAPITAL LETTER A WITH RING ABOVE' (U+00C5)
$char_combining_ring_above = "\xCC\x8A";  // 'COMBINING RING ABOVE' (U+030A)

$char_1 = normalizer_normalize( $char_A_ring, Normalizer::FORM_C );
$char_2 = normalizer_normalize( 'A' . $char_combining_ring_above, Normalizer::FORM_C );

echo urlencode($char_1);
echo ' ';
echo urlencode($char_2);
?>

Example #2 OO example

<?php
$char_A_ring = "\xC3\x85"; // 'LATIN CAPITAL LETTER A WITH RING ABOVE' (U+00C5)
$char_combining_ring_above = "\xCC\x8A";  // 'COMBINING RING ABOVE' (U+030A)

$char_1 = Normalizer::normalize( $char_A_ring, Normalizer::FORM_C );
$char_2 = Normalizer::normalize( 'A' . $char_combining_ring_above, Normalizer::FORM_C );

echo urlencode($char_1);
echo ' ';
echo urlencode($char_2);
?>

以上例程会输出：

%C3%85 %C3%85

参见

  • normalizer_is_normalized() - Checks if the provided string is already in the specified normalization form.

Normalizer::isNormalized
MessageFormatter
Normalizer


The MessageFormatter class

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

简介

MessageFormatter is a concrete class that enables users to produce concatenated, language-neutral messages. The methods supplied in this class are used to build all the messages that are seen by end users.

The MessageFormatter class assembles messages from various fragments (such as text fragments, numbers, and dates) supplied by the program. Because of the MessageFormatter class, the program does not need to know the order of the fragments. The class uses the formatting specifications for the fragments to assemble them into a message that is contained in a single string within a resource bundle. For example, MessageFormatter enables you to print the phrase "Finished printing x out of y files..." in a manner that still allows for flexibility in translation.

Previously, an end user message was created as a sentence and handled as a string. This procedure created problems for localizers because the sentence structure, word order, number format and so on are very different from language to language. The language-neutral way to create messages keeps each part of the message separate and provides keys to the data. Using these keys, the MessageFormatter class can concatenate the parts of the message, localize them, and display a well-formed string to the end user.

MessageFormatter takes a set of objects, formats them, and then inserts the formatted strings into the pattern at the appropriate places. Choice formats can be used in conjunction with MessageFormatter to handle plurals, match numbers, and select from an array of items. Typically, the message format will come from resources and the arguments will be dynamically set at runtime.

类摘要

MessageFormatter {
/* 方法 */
public __construct ( string $locale , string $pattern )
public static MessageFormatter create ( string $locale , string $pattern )
public static string formatMessage ( string $locale , string $pattern , array $args )
public string format ( array $args )
public int getErrorCode ( void )
public string getErrorMessage ( void )
public string getLocale ( void )
public string getPattern ( void )
public static array parseMessage ( string $locale , string $pattern , string $source )
public array parse ( string $value )
public bool setPattern ( string $pattern )
}

参见

  • » ICU formatting documentation
  • » ICU message formatting description
  • » ICU message formatters
  • » ICU choice formatters

Table of Contents

  • MessageFormatter::create — Constructs a new Message Formatter
  • MessageFormatter::formatMessage — Quick format message
  • MessageFormatter::format — Format the message
  • MessageFormatter::getErrorCode — Get the error code from last operation
  • MessageFormatter::getErrorMessage — Get the error text from the last operation
  • MessageFormatter::getLocale — Get the locale for which the formatter was created.
  • MessageFormatter::getPattern — Get the pattern used by the formatter
  • MessageFormatter::parseMessage — Quick parse input string
  • MessageFormatter::parse — Parse input string according to pattern
  • MessageFormatter::setPattern — Set the pattern used by the formatter
Normalizer::normalize
MessageFormatter::create
intl


Constructs a new Message Formatter

MessageFormatter
MessageFormatter::formatMessage
MessageFormatter
PHP Manual

MessageFormatter::create

MessageFormatter::__construct

msgfmt_create

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

MessageFormatter::create -- MessageFormatter::__construct -- msgfmt_create — Constructs a new Message Formatter

说明

面向对象风格 (method)

public static MessageFormatter MessageFormatter::create ( string $locale , string $pattern )

面向对象风格 (constructor):

public MessageFormatter::__construct ( string $locale , string $pattern )

过程化风格

MessageFormatter msgfmt_create ( string $locale , string $pattern )

Constructs a new Message Formatter

参数

locale

The locale to use when formatting arguments

pattern

The pattern string to stick arguments into. The pattern uses an 'apostrophe-friendly' syntax; it is run through » umsg_autoQuoteApostrophe before being interpreted.

返回值

The formatter object

范例

Example #1 msgfmt_create() example

<?php
$fmt = msgfmt_create("en_US", "{0,number,integer} monkeys on {1,number,integer} trees make {2,number} monkeys per tree");
echo msgfmt_format($fmt, array(4560, 123, 4560/123));
$fmt = msgfmt_create("de", "{0,number,integer} Affen auf {1,number,integer} B?umen sind {2,number} Affen pro Baum");
echo msgfmt_format($fmt, array(4560, 123, 4560/123));
?>

Example #2 OO example

<?php
$fmt = new MessageFormatter("en_US", "{0,number,integer} monkeys on {1,number,integer} trees make {2,number} monkeys per tree");
echo $fmt->format(array(4560, 123, 4560/123));
$fmt = new MessageFormatter("de", "{0,number,integer} Affen auf {1,number,integer} B?umen sind {2,number} Affen pro Baum");
echo $fmt->format(array(4560, 123, 4560/123));
?>

以上例程会输出：

4,560 monkeys on 123 trees make 37.073 monkeys per tree
4.560 Affen auf 123 B?umen sind 37,073 Affen pro Baum

参见

  • msgfmt_format() - Format the message
  • msgfmt_parse() - Parse input string according to pattern
  • msgfmt_get_error_code() - Get the error code from last operation
  • msgfmt_get_error_message() - Get the error text from the last operation

MessageFormatter
MessageFormatter::formatMessage
MessageFormatter


Quick format message

MessageFormatter::create
MessageFormatter::format
MessageFormatter
PHP Manual

MessageFormatter::formatMessage

msgfmt_format_message

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

MessageFormatter::formatMessage -- msgfmt_format_message — Quick format message

说明

面向对象风格

public static string MessageFormatter::formatMessage ( string $locale , string $pattern , array $args )

过程化风格

string msgfmt_format_message ( string $locale , string $pattern , array $args )

Quick formatting function that formats the string without having to explicitly create the formatter object. Use this function when the format operation is done only once and does not need and parameters or state to be kept.

参数

locale

The locale to use for formatting locale-dependent parts

pattern

The pattern string to insert things into. The pattern uses an 'apostrophe-friendly' syntax; it is run through » umsg_autoQuoteApostrophe before being interpreted.

args

The array of values to insert into the format string

返回值

The formatted pattern string or FALSE if an error occurred

范例

Example #1 msgfmt_format_message() example

<?php
echo msgfmt_format_message("en_US", "{0,number,integer} monkeys on {1,number,integer} trees make {2,number} monkeys per tree\n", array(4560, 123, 4560/123));
echo msgfmt_format_message("de", "{0,number,integer} Affen auf {1,number,integer} B?umen sind {2,number} Affen pro Baum\n", array(4560, 123, 4560/123));
?>

Example #2 OO example

<?php
echo MessageFormatter::formatMessage("en_US", "{0,number,integer} monkeys on {1,number,integer} trees make {2,number} monkeys per tree\n", array(4560, 123, 4560/123));
echo MessageFormatter::formatMessage("de", "{0,number,integer} Affen auf {1,number,integer} B?umen sind {2,number} Affen pro Baum\n", array(4560, 123, 4560/123));
?>

以上例程会输出：

4,560 monkeys on 123 trees make 37.073 monkeys per tree
4.560 Affen auf 123 B?umen sind 37,073 Affen pro Baum

参见

  • msgfmt_create() - Constructs a new Message Formatter
  • msgfmt_parse() - Parse input string according to pattern
  • msgfmt_get_error_code() - Get the error code from last operation
  • msgfmt_get_error_message() - Get the error text from the last operation

MessageFormatter::create
MessageFormatter::format
MessageFormatter


Format the message

MessageFormatter::formatMessage
MessageFormatter::getErrorCode
MessageFormatter
PHP Manual

MessageFormatter::format

msgfmt_format

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

MessageFormatter::format -- msgfmt_format — Format the message

说明

面向对象风格

public string MessageFormatter::format ( array $args )

过程化风格

string msgfmt_format ( MessageFormatter $fmt , array $args )

Format the message by substituting the data into the format string according to the locale rules

参数

fmt

The message formatter

args

Arguments to insert into the format string

返回值

The formatted string, or FALSE if an error occurred

范例

Example #1 msgfmt_format() example

<?php
$fmt = msgfmt_create("en_US", "{0,number,integer} monkeys on {1,number,integer} trees make {2,number} monkeys per tree");
echo msgfmt_format($fmt, array(4560, 123, 4560/123));
$fmt = msgfmt_create("de", "{0,number,integer} Affen auf {1,number,integer} B?umen sind {2,number} Affen pro Baum");
echo msgfmt_format($fmt, array(4560, 123, 4560/123));
?>

Example #2 OO example

<?php
$fmt = new MessageFormatter("en_US", "{0,number,integer} monkeys on {1,number,integer} trees make {2,number} monkeys per tree");
echo $fmt->format(array(4560, 123, 4560/123));
$fmt = new MessageFormatter("de", "{0,number,integer} Affen auf {1,number,integer} B?umen sind {2,number} Affen pro Baum");
echo $fmt->format(array(4560, 123, 4560/123));
?>

以上例程会输出：

4,560 monkeys on 123 trees make 37.073 monkeys per tree
4.560 Affen auf 123 B?umen sind 37,073 Affen pro Baum

参见

  • msgfmt_create() - Constructs a new Message Formatter
  • msgfmt_parse() - Parse input string according to pattern
  • msgfmt_format_message() - Quick format message
  • msgfmt_get_error_code() - Get the error code from last operation
  • msgfmt_get_error_message() - Get the error text from the last operation

MessageFormatter::formatMessage
MessageFormatter::getErrorCode
MessageFormatter


Get the error code from last operation

MessageFormatter::format
MessageFormatter::getErrorMessage
MessageFormatter
PHP Manual

MessageFormatter::getErrorCode

msgfmt_get_error_code

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

MessageFormatter::getErrorCode -- msgfmt_get_error_code — Get the error code from last operation

说明

面向对象风格

public int MessageFormatter::getErrorCode ( void )

过程化风格

int msgfmt_get_error_code ( MessageFormatter $fmt )

Get the error code from last operation.

参数

fmt

The message formatter

返回值

The error code, one of UErrorCode values. Initial value is U_ZERO_ERROR.

范例

Example #1 msgfmt_get_error_code() example

<?php
$fmt = msgfmt_create("en_US", "{0, number} monkeys on {1, number} trees");
$str = msgfmt_format($fmt, array());
if(!$str) {
    echo "ERROR: ".msgfmt_get_error_message($fmt) . " (" . msgfmt_get_error_code($fmt) . ")\n";
}
?>

Example #2 OO example

<?php
$fmt = new MessageFormatter("en_US", "{0, number} monkeys on {1, number} trees");
$str = $fmt->format(array());
if(!$str) {
    echo "ERROR: ".$fmt->getErrorMessage() . " (" . $fmt->getErrorCode() . ")\n";
}
?>

以上例程会输出：

ERROR: msgfmt_format: not enough parameters: U_ILLEGAL_ARGUMENT_ERROR (1)

参见

  • msgfmt_get_error_message() - Get the error text from the last operation
  • intl_get_error_code() - Get the last error code
  • intl_is_failure() - Check whether the given error code indicates failure

MessageFormatter::format
MessageFormatter::getErrorMessage
MessageFormatter


Get the error text from the last operation

MessageFormatter::getErrorCode
MessageFormatter::getLocale
MessageFormatter
PHP Manual

MessageFormatter::getErrorMessage

msgfmt_get_error_message

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

MessageFormatter::getErrorMessage -- msgfmt_get_error_message — Get the error text from the last operation

说明

面向对象风格

public string MessageFormatter::getErrorMessage ( void )

过程化风格

string msgfmt_get_error_message ( MessageFormatter $fmt )

Get the error text from the last operation.

参数

fmt

The message formatter

返回值

Description of the last error.

范例

Example #1 msgfmt_get_error_message() example

<?php
$fmt = msgfmt_create("en_US", "{0, number} monkeys on {1, number} trees");
$str = msgfmt_format($fmt, array());
if(!$str) {
    echo "ERROR: ".msgfmt_get_error_message($fmt) . " (" . msgfmt_get_error_code($fmt) . ")\n";
}
?>

Example #2 OO example

<?php
$fmt = new MessageFormatter("en_US", "{0, number} monkeys on {1, number} trees");
$str = $fmt->format(array());
if(!$str) {
    echo "ERROR: ".$fmt->getErrorMessage() . " (" . $fmt->getErrorCode() . ")\n";
}
?>

以上例程会输出：

ERROR: msgfmt_format: not enough parameters: U_ILLEGAL_ARGUMENT_ERROR (1)

参见

  • msgfmt_get_error_code() - Get the error code from last operation
  • intl_get_error_code() - Get the last error code
  • intl_is_failure() - Check whether the given error code indicates failure

MessageFormatter::getErrorCode
MessageFormatter::getLocale
MessageFormatter


Get the locale for which the formatter was created.

MessageFormatter::getErrorMessage
MessageFormatter::getPattern
MessageFormatter
PHP Manual

MessageFormatter::getLocale

msgfmt_get_locale

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

MessageFormatter::getLocale -- msgfmt_get_locale — Get the locale for which the formatter was created.

说明

面向对象风格

public string MessageFormatter::getLocale ( void )

过程化风格

string msgfmt_get_locale ( NumberFormatter $formatter )

Get the locale for which the formatter was created.

参数

formatter

The formatter resource

返回值

The locale name

范例

Example #1 msgfmt_get_locale() example

<?php
$fmt = msgfmt_create('en_US', "Number {0,number}");
echo msgfmt_get_locale($fmt);
?>

Example #2 OO example

<?php
$fmt = new MessageFormatter('en_US', "Number {0,number}");
echo $fmt->getLocale();
?>

以上例程会输出：

en_US

参见

  • msgfmt_create() - Constructs a new Message Formatter

MessageFormatter::getErrorMessage
MessageFormatter::getPattern
MessageFormatter


Get the pattern used by the formatter

MessageFormatter::getLocale
MessageFormatter::parseMessage
MessageFormatter
PHP Manual

MessageFormatter::getPattern

msgfmt_get_pattern

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

MessageFormatter::getPattern -- msgfmt_get_pattern — Get the pattern used by the formatter

说明

面向对象风格

public string MessageFormatter::getPattern ( void )

过程化风格

string msgfmt_get_pattern ( MessageFormatter $fmt )

Get the pattern used by the formatter

参数

fmt

The message formatter

返回值

The pattern string for this message formatter

范例

Example #1 msgfmt_get_pattern() example

<?php
$fmt = msgfmt_create( "en_US", "{0, number} monkeys on {1, number} trees" );
echo "Default pattern: '" . msgfmt_get_pattern( $fmt ) . "'\n";
echo "Formatting result: " . msgfmt_format( $fmt, array(123, 456) ) . "\n";

msgfmt_set_pattern( $fmt, "{0, number} trees hosting {1, number} monkeys" );
echo "New pattern: '" . msgfmt_get_pattern( $fmt ) . "'\n";
echo "Formatted number: " . msgfmt_format( $fmt, array(123, 456) ) . "\n";
?>

Example #2 OO example

<?php
$fmt = new MessageFormatter( "en_US", "{0, number} monkeys on {1, number} trees" );
echo "Default pattern: '" . $fmt->getPattern() . "'\n";
echo "Formatting result: " . $fmt->format(array(123, 456)) . "\n";

$fmt->setPattern("{0, number} trees hosting {1, number} monkeys" );
echo "New pattern: '" . $fmt->getPattern() . "'\n";
echo "Formatted number: " . $fmt->format(array(123, 456)) . "\n";
?>

以上例程会输出：

Default pattern: '{0,number} monkeys on {1,number} trees'
Formatting result: 123 monkeys on 456 trees
New pattern: '{0,number} trees hosting {1,number} monkeys'
Formatted number: 123 trees hosting 456 monkeys

参见

  • msgfmt_create() - Constructs a new Message Formatter
  • msgfmt_set_pattern() - Set the pattern used by the formatter

MessageFormatter::getLocale
MessageFormatter::parseMessage
MessageFormatter


Quick parse input string

MessageFormatter::getPattern
MessageFormatter::parse
MessageFormatter
PHP Manual

MessageFormatter::parseMessage

msgfmt_parse_message

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

MessageFormatter::parseMessage -- msgfmt_parse_message — Quick parse input string

说明

面向对象风格

public static array MessageFormatter::parseMessage ( string $locale , string $pattern , string $source )

过程化风格

array msgfmt_parse_message ( string $locale , string $pattern , string $value )

Parses input string without explicitly creating the formatter object. Use this function when the format operation is done only once and does not need and parameters or state to be kept.

参数

locale

The locale to use for parsing locale-dependent parts

pattern

The pattern with which to parse the value.

source

The string to parse, conforming to the pattern.

返回值

An array containing items extracted, or FALSE on error

范例

Example #1 msgfmt_parse_message() example

<?php
$fmt = msgfmt_parse_message('en_US', "{0,number,integer} monkeys on {1,number,integer} trees make {2,number} monkeys per tree",
                            "4,560 monkeys on 123 trees make 37.073 monkeys per tree");
var_export($fmt);

$fmt = msgfmt_parse_message('de', "{0,number,integer} Affen auf {1,number,integer} B?umen sind {2,number} Affen pro Baum",
                            "4.560 Affen auf 123 B?umen sind 37,073 Affen pro Baum");
var_export($fmt);
?>

Example #2 OO example

<?php
$fmt = MessageFormatter::parseMessage('en_US', "{0,number,integer} monkeys on {1,number,integer} trees make {2,number} monkeys per tree",
                            "4,560 monkeys on 123 trees make 37.073 monkeys per tree");
var_export($fmt);

$fmt = MessageFormatter::parseMessage('de', "{0,number,integer} Affen auf {1,number,integer} B?umen sind {2,number} Affen pro Baum",
                            "4.560 Affen auf 123 B?umen sind 37,073 Affen pro Baum");
var_export($fmt);
?>

以上例程会输出：

array (
  0 => 4560,
  1 => 123,
  2 => 37.073,
)
array (
  0 => 4560,
  1 => 123,
  2 => 37.073,
)

参见

  • msgfmt_create() - Constructs a new Message Formatter
  • msgfmt_format_message() - Quick format message
  • msgfmt_parse() - Parse input string according to pattern

MessageFormatter::getPattern
MessageFormatter::parse
MessageFormatter


Parse input string according to pattern

MessageFormatter::parseMessage
MessageFormatter::setPattern
MessageFormatter
PHP Manual

MessageFormatter::parse

msgfmt_parse

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

MessageFormatter::parse -- msgfmt_parse — Parse input string according to pattern

说明

面向对象风格

public array MessageFormatter::parse ( string $value )

过程化风格

array msgfmt_parse ( MessageFormatter $fmt , string $value )

Parses input string and return any extracted items as an array.

参数

fmt

The message formatter

value

The string to parse

返回值

An array containing the items extracted, or FALSE on error

范例

Example #1 msgfmt_parse() example

<?php
$fmt = msgfmt_create('en_US', "{0,number,integer} monkeys on {1,number,integer} trees make {2,number} monkeys per tree");
$res = msgfmt_parse($fmt, "4,560 monkeys on 123 trees make 37.073 monkeys per tree");
var_export($res);

$fmt = msgfmt_create('de', "{0,number,integer} Affen auf {1,number,integer} B?umen sind {2,number} Affen pro Baum");
$res = msgfmt_parse($fmt, "4.560 Affen auf 123 B?umen sind 37,073 Affen pro Baum");
var_export($res);
?>

Example #2 OO example

<?php
$fmt = new MessageFormatter('en_US', "{0,number,integer} monkeys on {1,number,integer} trees make {2,number} monkeys per tree");
$res = $fmt->parse("4,560 monkeys on 123 trees make 37.073 monkeys per tree");
var_export($res);

$fmt = new MessageFormatter('de', "{0,number,integer} Affen auf {1,number,integer} B?umen sind {2,number} Affen pro Baum");
$res = $fmt->parse("4.560 Affen auf 123 B?umen sind 37,073 Affen pro Baum");
var_export($res);
?>

以上例程会输出：

array (
  0 => 4560,
  1 => 123,
  2 => 37.073,
)
array (
  0 => 4560,
  1 => 123,
  2 => 37.073,
)

参见

  • msgfmt_create() - Constructs a new Message Formatter
  • msgfmt_format() - Format the message
  • msgfmt_parse_message() - Quick parse input string

MessageFormatter::parseMessage
MessageFormatter::setPattern
MessageFormatter


Set the pattern used by the formatter

MessageFormatter::parse
IntlCalendar
MessageFormatter
PHP Manual

MessageFormatter::setPattern

msgfmt_set_pattern

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

MessageFormatter::setPattern -- msgfmt_set_pattern — Set the pattern used by the formatter

说明

面向对象风格

public bool MessageFormatter::setPattern ( string $pattern )

过程化风格

bool msgfmt_set_pattern ( MessageFormatter $fmt , string $pattern )

Set the pattern used by the formatter

参数

fmt

The message formatter

pattern

The pattern string to use in this message formatter. The pattern uses an 'apostrophe-friendly' syntax; it is run through » umsg_autoQuoteApostrophe before being interpreted.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 msgfmt_set_pattern() example

<?php
$fmt = msgfmt_create( "en_US", "{0, number} monkeys on {1, number} trees" );
echo "Default pattern: '" . msgfmt_get_pattern( $fmt ) . "'\n";
echo "Formatting result: " . msgfmt_format( $fmt, array(123, 456) ) . "\n";

msgfmt_set_pattern( $fmt, "{0, number} trees hosting {1, number} monkeys" );
echo "New pattern: '" . msgfmt_get_pattern( $fmt ) . "'\n";
echo "Formatted number: " . msgfmt_format( $fmt, array(123, 456) ) . "\n";
?>

Example #2 OO example

<?php
$fmt = new MessageFormatter( "en_US", "{0, number} monkeys on {1, number} trees" );
echo "Default pattern: '" . $fmt->getPattern() . "'\n";
echo "Formatting result: " . $fmt->format(array(123, 456)) . "\n";

$fmt->setPattern("{0, number} trees hosting {1, number} monkeys" );
echo "New pattern: '" . $fmt->getPattern() . "'\n";
echo "Formatted number: " . $fmt->format(array(123, 456)) . "\n";
?>

以上例程会输出：

Default pattern: '{0,number} monkeys on {1,number} trees'
Formatting result: 123 monkeys on 456 trees
New pattern: '{0,number} trees hosting {1,number} monkeys'
Formatted number: 123 trees hosting 456 monkeys

参见

  • msgfmt_create() - Constructs a new Message Formatter
  • msgfmt_get_pattern() - Get the pattern used by the formatter

MessageFormatter::parse
IntlCalendar
MessageFormatter


The IntlCalendar class

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

简介

类摘要

IntlCalendar {
/* Constants */
const integer FIELD_ERA = 0 ;
const integer FIELD_YEAR = 1 ;
const integer FIELD_MONTH = 2 ;
const integer FIELD_WEEK_OF_YEAR = 3 ;
const integer FIELD_WEEK_OF_MONTH = 4 ;
const integer FIELD_DATE = 5 ;
const integer FIELD_DAY_OF_YEAR = 6 ;
const integer FIELD_DAY_OF_WEEK = 7 ;
const integer FIELD_DAY_OF_WEEK_IN_MONTH = 8 ;
const integer FIELD_AM_PM = 9 ;
const integer FIELD_HOUR = 10 ;
const integer FIELD_HOUR_OF_DAY = 11 ;
const integer FIELD_MINUTE = 12 ;
const integer FIELD_SECOND = 13 ;
const integer FIELD_MILLISECOND = 14 ;
const integer FIELD_ZONE_OFFSET = 15 ;
const integer FIELD_DST_OFFSET = 16 ;
const integer FIELD_YEAR_WOY = 17 ;
const integer FIELD_DOW_LOCAL = 18 ;
const integer FIELD_EXTENDED_YEAR = 19 ;
const integer FIELD_JULIAN_DAY = 20 ;
const integer FIELD_MILLISECONDS_IN_DAY = 21 ;
const integer FIELD_IS_LEAP_MONTH = 22 ;
const integer FIELD_FIELD_COUNT = 23 ;
const integer FIELD_DAY_OF_MONTH = 5 ;
const integer DOW_SUNDAY = 1 ;
const integer DOW_MONDAY = 2 ;
const integer DOW_TUESDAY = 3 ;
const integer DOW_WEDNESDAY = 4 ;
const integer DOW_THURSDAY = 5 ;
const integer DOW_FRIDAY = 6 ;
const integer DOW_SATURDAY = 7 ;
const integer DOW_TYPE_WEEKDAY = 0 ;
const integer DOW_TYPE_WEEKEND = 1 ;
const integer DOW_TYPE_WEEKEND_OFFSET = 2 ;
const integer DOW_TYPE_WEEKEND_CEASE = 3 ;
const integer WALLTIME_FIRST = 1 ;
const integer WALLTIME_LAST = 0 ;
const integer WALLTIME_NEXT_VALID = 2 ;
/* 方法 */
public bool add ( int $field , int $amount )
bool intlcal_add ( IntlCalendar $cal , int $field , int $amount )
public bool after ( IntlCalendar $other )
bool intlcal_after ( IntlCalendar $cal , IntlCalendar $other )
public bool before ( IntlCalendar $other )
bool intlcal_before ( IntlCalendar $cal , IntlCalendar $other )
public bool clear ([ int $field = NULL ] )
bool intlcal_clear ( IntlCalendar $cal [, int $field = NULL ] )
private __construct ( void )
public static IntlCalendar createInstance ([ mixed $timeZone = NULL [, string $locale = "" ]] )
IntlCalendar intlcal_create_instance ([ mixed $timeZone = NULL [, string $locale = "" ]] )
public bool equals ( IntlCalendar $other )
bool intlcal_equals ( IntlCalendar $cal , IntlCalendar $other )
public int fieldDifference ( float $when , int $field )
int intlcal_field_difference ( IntlCalendar $cal , float $when , int $field )
public static IntlCalendar fromDateTime ( mixed $dateTime )
IntlCalendar intlcal_from_date_time ( mixed $dateTime )
public int get ( int $field )
int intlcal_get ( IntlCalendar> $cal , int $field )
public int getActualMaximum ( int $field )
int intlcal_get_actual_maximum ( IntlCalendar $cal , int $field )
public int getActualMinimum ( int $field )
int intlcal_get_actual_minimum ( IntlCalendar $cal , int $field )
public static array getAvailableLocales ( void )
array intlcal_get_available_locales ( void )
public int getDayOfWeekType ( int $dayOfWeek )
int intlcal_get_day_of_week_type ( IntlCalendar $cal , int $dayOfWeek )
public int getErrorCode ( void )
public string getErrorMessage ( void )
public int getFirstDayOfWeek ( void )
int intlcal_get_first_day_of_week ( IntlCalendar $cal )
public int getGreatestMinimum ( int $field )
int intlcal_get_greatest_minimum ( IntlCalendar $cal , int $field )
public static Iterator getKeywordValuesForLocale ( string $key , string $locale , boolean $commonlyUsed )
Iterator intlcal_get_keyword_values_for_locale ( string $key , string $locale , boolean $commonlyUsed )
public int getLeastMaximum ( int $field )
int intlcal_get_least_maximum ( IntlCalendar $cal , int $field )
public string getLocale ( int $localeType )
string intlcal_get_locale ( IntlCalendar $cal , int $localeType )
public int getMaximum ( int $field )
int intlcal_get_maximum ( IntlCalendar $cal , int $field )
public int getMinimalDaysInFirstWeek ( void )
int intlcal_get_minimal_days_in_first_week ( IntlCalendar $cal )
public int getMinimum ( int $field )
int intlcal_get_minimum ( IntlCalendar $cal , int $field )
public static float getNow ( void )
float intlcal_get_now ( void )
public int getRepeatedWallTimeOption ( void )
int intlcal_get_repeated_wall_time_option ( IntlCalendar $cal )
public int getSkippedWallTimeOption ( void )
int intlcal_get_skipped_wall_time_option ( IntlCalendar $cal )
public float getTime ( void )
float intlcal_get_time ( IntlCalendar $cal )
public IntlTimeZone getTimeZone ( void )
IntlTimeZone intlcal_get_time_zone ( IntlCalendar $cal )
public string getType ( void )
string intlcal_get_type ( IntlCalendar $cal )
public int getWeekendTransition ( string $dayOfWeek )
int intlcal_get_weekend_transition ( IntlCalendar $cal , string $dayOfWeek )
public bool inDaylightTime ( void )
bool intlcal_in_daylight_time ( IntlCalendar $cal )
public bool isEquivalentTo ( IntlCalendar $other )
bool intlcal_is_equivalent_to ( IntlCalendar $cal , IntlCalendar $other )
public bool isLenient ( void )
bool intlcal_is_lenient ( IntlCalendar $cal )
public bool isSet ( int $field )
bool intlcal_is_set ( IntlCalendar $cal , int $field )
public bool isWeekend ([ float $date = NULL ] )
bool intlcal_is_weekend ( IntlCalendar $cal [, float $date = NULL ] )
public bool roll ( int $field , mixed $amountOrUpOrDown )
bool intlcal_roll ( IntlCalendar $cal , int $field , mixed $amountOrUpOrDown )
public bool set ( int $field , int $value )
public bool set ( int $year , int $month [, int $dayOfMonth = NULL [, int $hour = NULL [, int $minute = NULL [, int $second = NULL ]]]] )
bool intlcal_set ( IntlCalendar $cal , int $field , int $value )
bool intlcal_set ( IntlCalendar $cal , int $year , int $month [, int $dayOfMonth = NULL [, int $hour = NULL [, int $minute = NULL [, int $second = NULL ]]]] )
public bool setFirstDayOfWeek ( int $dayOfWeek )
bool intlcal_set_first_day_of_week ( IntlCalendar $cal , int $dayOfWeek )
public ReturnType setLenient ( string $isLenient )
ReturnType intlcal_set_lenient ( IntlCalendar $cal , string $isLenient )
public bool setMinimalDaysInFirstWeek ( int $minimalDays )
bool intlcal_get_minimal_days_in_first_week ( IntlCalendar $cal , int $minimalDays )
public bool setRepeatedWallTimeOption ( int $wallTimeOption )
bool intlcal_set_repeated_wall_time_option ( IntlCalendar $cal , int $wallTimeOption )
public bool setSkippedWallTimeOption ( int $wallTimeOption )
bool intlcal_set_skipped_wall_time_option ( IntlCalendar $cal , int $wallTimeOption )
public bool setTime ( float $date )
bool intlcal_set_time ( IntlCalendar $cal , float $date )
public bool setTimeZone ( mixed $timeZone )
bool intlcal_set_time_zone ( IntlCalendar $cal , mixed $timeZone )
public DateTime toDateTime ( void )
DateTime intlcal_to_date_time ( IntlCalendar $cal )
}

预定义常量

IntlCalendar::FIELD_ERA

Calendar field numerically representing an era, for instance 1 for AD and 0 for BC in the Gregorian/Julian calendars and 235 for the Heisei (平成) era in the Japanese calendar. Not all calendars have more than one era.

IntlCalendar::FIELD_YEAR

Calendar field for the year. This is not unique across eras. If the calendar type has more than one era, generally the minimum value for this field will be 1.

IntlCalendar::FIELD_MONTH

Calendar field for the month. The month sequence is zero-based, so Janurary (here used to signify the first month of the calendar; this may be called another name, such as Muharram in the Islamic calendar) is represented by 0, February by 1, ..., December by 11 and, for calendars that have it, the 13th or leap month by 12.

IntlCalendar::FIELD_WEEK_OF_YEAR

Calendar field for the number of the week of the year. This depends on which day of the week is deemed to start the week and the minimal number of days in a week.

IntlCalendar::FIELD_WEEK_OF_MONTH

Calendar field for the number of the week of the month. This depends on which day of the week is deemed to start the week and the minimal number of days in a week.

IntlCalendar::FIELD_DATE

Calendar field for the day of the month. The same as IntlCalendar::FIELD_DAY_OF_MONTH, which has a clearer name.

IntlCalendar::FIELD_DAY_OF_YEAR

Calendar field for the day of the year. For the Gregorian calendar, starts with 1 and ends with 365 or 366.

IntlCalendar::FIELD_DAY_OF_WEEK

Calendar field for the day of the week. Its values start with 1 (Sunday, see IntlCalendar::DOW_SUNDAY and subsequent constants) and the last valid value is 7 (Saturday).

IntlCalendar::FIELD_DAY_OF_WEEK_IN_MONTH

Given a day of the week (Sunday, Monday, ...), this calendar field assigns an ordinal to such a day of the week in a specific month. Thus, if the value of this field is 1 and the value of the day of the week is 2 (Monday), then the set day of the month is the 1st Monday of the month; the maximum value is 5.

Additionally, the value 0 and negative values are also allowed. The value 0 encompasses the seven days that occur immediately before the first seven days of a month (which therefore have a 'day of week in month' with value 1). Negative values starts counting from the end of the month - -1 points to the last occurrence of a day of the week in a month, -2 to the second last, and so on.

Unlike IntlCalendar::FIELD_WEEK_OF_MONTH and IntlCalendar::FIELD_WEEK_OF_YEAR, this value does not depend on IntlCalendar::getFirstDayOfWeek() or on IntlCalendar::getMinimalDaysInFirstWeek(). The first Monday is the first Monday, even if it occurs in a week that belongs to the previous month.

IntlCalendar::FIELD_AM_PM

Calendar field indicating whether a time is before noon (value 0, AM) or after (1). Midnight is AM, noon is PM.

IntlCalendar::FIELD_HOUR

Calendar field for the hour, without specifying whether it?s in the morning or in the afternoon. Valid values are 0 to 11.

IntlCalendar::FIELD_HOUR_OF_DAY

Calendar field for the full (24h) hour of the day. Valid values are 0 to 23.

IntlCalendar::FIELD_MINUTE

Calendar field for the minutes component of the time.

IntlCalendar::FIELD_SECOND

Calendar field for the seconds component of the time.

IntlCalendar::FIELD_MILLISECOND

Calendar field the milliseconds component of the time.

IntlCalendar::FIELD_ZONE_OFFSET

Calendar field indicating the raw offset of the timezone, in milliseconds. The raw offset is the timezone offset, excluding any offset due to daylight saving time.

IntlCalendar::FIELD_DST_OFFSET

Calendar field for the daylight saving time offset of the calendar?s timezone, in milliseconds, if active for calendar?s time.

IntlCalendar::FIELD_YEAR_WOY

Calendar field representing the year for week of year purposes.

IntlCalendar::FIELD_DOW_LOCAL

Calendar field for the localized day of the week. This is a value betwen 1 and 7, 1 being used for the day of the week that matches the value returned by IntlCalendar::getFirstDayOfWeek().

IntlCalendar::FIELD_EXTENDED_YEAR

Calendar field for a year number representation that is continuous across eras. For the Gregorian calendar, the value of this field matches that of IntlCalendar::FIELD_YEAR for AD years; a BC year y is represented by -y + 1.

IntlCalendar::FIELD_JULIAN_DAY

Calendar field for a modified Julian day number. It is different from a conventional Julian day number in that its transitions occur at local zone midnight rather than at noon UTC. It uniquely identifies a date.

IntlCalendar::FIELD_MILLISECONDS_IN_DAY

Calendar field encompassing the information in IntlCalendar::FIELD_HOUR_OF_DAY, IntlCalendar::FIELD_MINUTE, IntlCalendar::FIELD_SECOND and IntlCalendar::FIELD_MILLISECOND. Range is from the 0 to 24 * 3600 * 1000 - 1. It is not the amount of milliseconds ellapsed in the day since on DST transitions it will have discontinuities analog to those of the wall time.

IntlCalendar::FIELD_IS_LEAP_MONTH

Calendar field whose value is 1 for indicating a leap month and 0 otherwise.

IntlCalendar::FIELD_FIELD_COUNT

The total number of fields.

IntlCalendar::FIELD_DAY_OF_MONTH

Alias for IntlCalendar::FIELD_DATE.

IntlCalendar::DOW_SUNDAY

Sunday.

IntlCalendar::DOW_MONDAY

Monday.

IntlCalendar::DOW_TUESDAY

Tuesday.

IntlCalendar::DOW_WEDNESDAY

Wednesday.

IntlCalendar::DOW_THURSDAY

Thursday.

IntlCalendar::DOW_FRIDAY

Friday.

IntlCalendar::DOW_SATURDAY

Saturday.

IntlCalendar::DOW_TYPE_WEEKDAY

Output of IntlCalendar::getDayOfWeekType() indicating a day of week is a weekday.

IntlCalendar::DOW_TYPE_WEEKEND

Output of IntlCalendar::getDayOfWeekType() indicating a day of week belongs to the weekend.

IntlCalendar::DOW_TYPE_WEEKEND_OFFSET

Output of IntlCalendar::getDayOfWeekType() indicating the weekend begins during the given day of week.

IntlCalendar::DOW_TYPE_WEEKEND_CEASE

Output of IntlCalendar::getDayOfWeekType() indicating the weekend ends during the given day of week.

IntlCalendar::WALLTIME_FIRST

Output of IntlCalendar::getSkippedWallTimeOption() indicating that wall times in the skipped range should refer to the same instant as wall times with one hour less and of IntlCalendar::getRepeatedWallTimeOption() indicating the wall times in the repeated range should refer to the instant of the first occurrence of such wall time.

IntlCalendar::WALLTIME_LAST

Output of IntlCalendar::getSkippedWallTimeOption() indicating that wall times in the skipped range should refer to the same instant as wall times with one hour after and of IntlCalendar::getRepeatedWallTimeOption() indicating the wall times in the repeated range should refer to the instant of the second occurrence of such wall time.

IntlCalendar::WALLTIME_NEXT_VALID

Output of IntlCalendar::getSkippedWallTimeOption() indicating that wall times in the skipped range should refer to the instant when the daylight saving time transition occurs (begins).

Table of Contents

  • IntlCalendar::add — Add a (signed) amount of time to a field
  • IntlCalendar::after — Whether this object?s time is after that of the passed object
  • IntlCalendar::before — Whether this object?s time is before that of the passed object
  • IntlCalendar::clear — Clear a field or all fields
  • IntlCalendar::__construct — Private constructor for disallowing instantiation
  • IntlCalendar::createInstance — Create a new IntlCalendar
  • IntlCalendar::equals — Compare time of two IntlCalendar objects for equality
  • IntlCalendar::fieldDifference — Calculate difference between given time and this object?s time
  • IntlCalendar::fromDateTime — Create an IntlCalendar from a DateTime object or string
  • IntlCalendar::get — Get the value for a field
  • IntlCalendar::getActualMaximum — The maximum value for a field, considering the object?s current time
  • IntlCalendar::getActualMinimum — The minimum value for a field, considering the object?s current time
  • IntlCalendar::getAvailableLocales — Get array of locales for which there is data
  • IntlCalendar::getDayOfWeekType — Tell whether a day is a weekday, weekend or a day that has a transition between the two
  • IntlCalendar::getErrorCode — Get last error code on the object
  • IntlCalendar::getErrorMessage — Get last error message on the object
  • IntlCalendar::getFirstDayOfWeek — Get the first day of the week for the calendar?s locale
  • IntlCalendar::getGreatestMinimum — Get the largest local minimum value for a field
  • IntlCalendar::getKeywordValuesForLocale — Get set of locale keyword values
  • IntlCalendar::getLeastMaximum — Get the smallest local maximum for a field
  • IntlCalendar::getLocale — Get the locale associated with the object
  • IntlCalendar::getMaximum — Get the global maximum value for a field
  • IntlCalendar::getMinimalDaysInFirstWeek — Get minimal number of days the first week in a year or month can have
  • IntlCalendar::getMinimum — Get the global minimum value for a field
  • IntlCalendar::getNow — Get number representing the current time
  • IntlCalendar::getRepeatedWallTimeOption — Get behavior for handling repeating wall time
  • IntlCalendar::getSkippedWallTimeOption — Get behavior for handling skipped wall time
  • IntlCalendar::getTime — Get time currently represented by the object
  • IntlCalendar::getTimeZone — Get the object?s timezone
  • IntlCalendar::getType — Get the calendar type
  • IntlCalendar::getWeekendTransition — Get time of the day at which weekend begins or ends
  • IntlCalendar::inDaylightTime — Whether the object?s time is in Daylight Savings Time
  • IntlCalendar::isEquivalentTo — Whether another calendar is equal but for a different time
  • IntlCalendar::isLenient — Whether date/time interpretation is in lenient mode
  • IntlCalendar::isSet — Whether a field is set
  • IntlCalendar::isWeekend — Whether a certain date/time is in the weekend
  • IntlCalendar::roll — Add value to field without carrying into more significant fields
  • IntlCalendar::set — Set a time field or several common fields at once
  • IntlCalendar::setFirstDayOfWeek — Set the day on which the week is deemed to start
  • IntlCalendar::setLenient — Set whether date/time interpretation is to be lenient
  • IntlCalendar::setMinimalDaysInFirstWeek — Set minimal number of days the first week in a year or month can have
  • IntlCalendar::setRepeatedWallTimeOption — Set behavior for handling repeating wall times at negative timezone offset transitions
  • IntlCalendar::setSkippedWallTimeOption — Set behavior for handling skipped wall times at positive timezone offset transitions
  • IntlCalendar::setTime — Set the calendar time in milliseconds since the epoch
  • IntlCalendar::setTimeZone — Set the timezone used by this calendar
  • IntlCalendar::toDateTime — Convert an IntlCalendar into a DateTime object
MessageFormatter::setPattern
IntlCalendar::add
intl


Add a (signed) amount of time to a field

IntlCalendar
IntlCalendar::after
IntlCalendar
PHP Manual

IntlCalendar::add

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::add — Add a (signed) amount of time to a field

说明

面向对象风格

public bool IntlCalendar::add ( int $field , int $amount )

过程化风格

bool intlcal_add ( IntlCalendar $cal , int $field , int $amount )

Add a signed amount to a field. Adding a positive amount allows advances in time, even if the numeric value of the field decreases (e.g. when working with years in BC dates).

Other fields may need to adjusted - for instance, adding a month to the 31st of January will result in the 28th (or 29th) of February. Contrary to IntlCalendar::roll(), when a value wraps around, more significant fields may change. For instance, adding a day to the 31st of January will result in the 1st of February, not the 1st of Janurary.

参数

cal

The IntlCalendar resource.

field

One of the IntlCalendar date/time field constants. These are integer values between 0 and IntlCalendar::FIELD_COUNT.

amount

The signed amount to add to the current field. If the amount is positive, the instant will be moved forward; if it is negative, the instant wil be moved into the past. The unit is implicit to the field type. For instance, hours for IntlCalendar::FIELD_HOUR_OF_DAY.

返回值

Returns TRUE on success 或者在失败时返回 FALSE.

范例

Example #1 IntlCalendar::add()

<?php
ini_set('intl.default_locale', 'fr_FR');
ini_set('date.timezone', 'UTC');

$cal = new IntlGregorianCalendar(2012, 0 /* January */, 31);
echo IntlDateFormatter::formatObject($cal), "\n";

$cal->add(IntlCalendar::FIELD_MONTH, 1);
echo IntlDateFormatter::formatObject($cal), "\n";

$cal->add(IntlCalendar::FIELD_DAY_OF_MONTH, 1);
echo IntlDateFormatter::formatObject($cal), "\n";

以上例程会输出：

31 janv. 2012 00:00:00
29 févr. 2012 00:00:00
1 mars 2012 00:00:00

IntlCalendar
IntlCalendar::after
IntlCalendar


Whether this object?s time is after that of the passed object

IntlCalendar::add
IntlCalendar::before
IntlCalendar
PHP Manual

IntlCalendar::after

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::after — Whether this object?s time is after that of the passed object

说明

面向对象风格

public bool IntlCalendar::after ( IntlCalendar $other )

过程化风格

bool intlcal_after ( IntlCalendar $cal , IntlCalendar $other )

Returns whether this object?s time succeeds the argument?s time.

参数

cal

The IntlCalendar resource.

other

The calendar whose time will be checked against the primary object?s time.

返回值

Returns TRUE if this object?s current time is after that of the calendar argument?s time. Returns FALSE otherwise. Also returns FALSE on failure. You can use exceptions or intl_get_error_code() to detect error conditions.

范例

Example #1 IntlCalendar::after()

<?php
$cal1 = IntlCalendar::createInstance();
$cal2 = clone $cal1;

var_dump($cal1->after($cal2), //false
        $cal2->after($cal1)); //false

$cal1->roll(IntlCalendar::FIELD_MILLISECOND, true);

var_dump($cal1->after($cal2), //true
        $cal2->after($cal1)); //false

IntlCalendar::add
IntlCalendar::before
IntlCalendar


Whether this object?s time is before that of the passed object

IntlCalendar::after
IntlCalendar::clear
IntlCalendar
PHP Manual

IntlCalendar::before

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::before — Whether this object?s time is before that of the passed object

说明

面向对象风格

public bool IntlCalendar::before ( IntlCalendar $other )

过程化风格

bool intlcal_before ( IntlCalendar $cal , IntlCalendar $other )

Returns whether this object?s time precedes the argument?s time.

参数

cal

The IntlCalendar resource.

other

The calendar whose time will be checked against the primary object?s time.

返回值

Returns TRUE if this object?s current time is before that of the calendar argument?s time. Returns FALSE otherwise. Also returns FALSE on failure. You can use exceptions or intl_get_error_code() to detect error conditions.

IntlCalendar::after
IntlCalendar::clear
IntlCalendar


Clear a field or all fields

IntlCalendar::before
IntlCalendar::__construct
IntlCalendar
PHP Manual

IntlCalendar::clear

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::clear — Clear a field or all fields

说明

面向对象风格

public bool IntlCalendar::clear ([ int $field = NULL ] )

过程化风格

bool intlcal_clear ( IntlCalendar $cal [, int $field = NULL ] )

Clears either all of the fields or a specific field. A cleared field is marked as unset, giving it the lowest priority against overlapping fields or even default values when calculating the time. Additionally, its value is set to 0, though given the field?s low priority, its value may have been internally set to another value by the time the field has finished been queried.

参数

cal

The IntlCalendar resource.

field

One of the IntlCalendar date/time field constants. These are integer values between 0 and IntlCalendar::FIELD_COUNT.

返回值

Returns TRUE on success 或者在失败时返回 FALSE. Failure can only occur is invalid arguments are provided.

范例

Example #1 IntlCalendar::clear() examples

<?php
ini_set('intl.default_locale', 'es_ES');
ini_set('date.timezone', 'UTC');

$fields = array(
    'FIELD_ERA'                  => 0,
    'FIELD_YEAR'                 => 1,
    'FIELD_MONTH'                => 2,
    'FIELD_WEEK_OF_YEAR'         => 3,
    'FIELD_WEEK_OF_MONTH'        => 4,
    'FIELD_DATE'                 => 5,
    'FIELD_DAY_OF_YEAR'          => 6,
    'FIELD_DAY_OF_WEEK'          => 7,
    'FIELD_DAY_OF_WEEK_IN_MONTH' => 8,
    'FIELD_AM_PM'                => 9,
    'FIELD_HOUR'                 => 10,
    'FIELD_HOUR_OF_DAY'          => 11,
    'FIELD_MINUTE'               => 12,
    'FIELD_SECOND'               => 13,
    'FIELD_MILLISECOND'          => 14,
    'FIELD_ZONE_OFFSET'          => 15,
    'FIELD_DST_OFFSET'           => 16,
    'FIELD_YEAR_WOY'             => 17,
    'FIELD_DOW_LOCAL'            => 18,
    'FIELD_EXTENDED_YEAR'        => 19,
    'FIELD_JULIAN_DAY'           => 20,
    'FIELD_MILLISECONDS_IN_DAY'  => 21,
    'FIELD_IS_LEAP_MONTH'        => 22,
    'FIELD_FIELD_COUNT'          => 23,
);
function getSetFields(IntlCalendar $cal) {
    global $fields;
    $ret = array();
    foreach ($fields as $name => $value) {
        if ($cal->isSet($value)) {
            $ret[] = $name;
        }
    }
    return $ret;
}

$cal = new IntlGregorianCalendar(2013, 2 /* March */, 15);
echo "After GregorianCalendar creation\n";
print_r(getSetFields($cal));
echo "\n";

echo IntlDateFormatter::formatObject($cal), "\n";
echo "After the formatter requested the extended year\n";
print_r(getSetFields($cal));
echo "\n";

$cal->clear(IntlCalendar::FIELD_YEAR);
echo "After the year has been cleared, the date stays the same\n";
echo IntlDateFormatter::formatObject($cal), "\n";
echo "because FIELD_EXTENDED_YEAR is still set\n";
print_r(getSetFields($cal));
echo "\n";

var_dump($cal->clear(IntlCalendar::FIELD_EXTENDED_YEAR));
echo "After the extended year has been cleared\n";
print_r(getSetFields($cal));
echo IntlDateFormatter::formatObject($cal), "\n";
echo "\n";

echo "After the fields are recalculated,\n"
        . " extended year is set again (to 1970)\n";
print_r(getSetFields($cal));
echo "\n";

$cal->clear();
echo "After calling variant with no arguments\n";
print_r(getSetFields($cal));
echo IntlDateFormatter::formatObject($cal), "\n";

以上例程会输出：

After GregorianCalendar creation
Array
(
    [0] => FIELD_ERA
    [1] => FIELD_YEAR
    [2] => FIELD_MONTH
    [3] => FIELD_DATE
)

15/03/2013 00:00:00
After the formatter requested the extended year
Array
(
    [0] => FIELD_ERA
    [1] => FIELD_YEAR
    [2] => FIELD_MONTH
    [3] => FIELD_DATE
    [4] => FIELD_EXTENDED_YEAR
)

After the year has been cleared, the date stays the same
15/03/2013 00:00:00
because FIELD_EXTENDED_YEAR is still set
Array
(
    [0] => FIELD_ERA
    [1] => FIELD_MONTH
    [2] => FIELD_DATE
    [3] => FIELD_EXTENDED_YEAR
)

bool(true)
After the extended year has been cleared
Array
(
    [0] => FIELD_ERA
    [1] => FIELD_MONTH
    [2] => FIELD_DATE
)
15/03/1970 00:00:00

After the fields are recalculated,
 extended year is set again (to 1970)
Array
(
    [0] => FIELD_ERA
    [1] => FIELD_MONTH
    [2] => FIELD_DATE
    [3] => FIELD_EXTENDED_YEAR
)

After calling variant with no arguments
Array
(
)
01/01/1970 00:00:00

IntlCalendar::before
IntlCalendar::__construct
IntlCalendar


Private constructor for disallowing instantiation

IntlCalendar::clear
IntlCalendar::createInstance
IntlCalendar
PHP Manual

IntlCalendar::__construct

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::__construct — Private constructor for disallowing instantiation

说明

private IntlCalendar::__construct ( void )

A private constructor for disallowing instantiation with the new operator.

Call IntlCalendar::createInstance() instead.

参数

此函数没有参数。

返回值

没有返回值。

IntlCalendar::clear
IntlCalendar::createInstance
IntlCalendar


Create a new IntlCalendar

IntlCalendar::__construct
IntlCalendar::equals
IntlCalendar
PHP Manual

IntlCalendar::createInstance

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::createInstance — Create a new IntlCalendar

说明

面向对象风格

public static IntlCalendar IntlCalendar::createInstance ([ mixed $timeZone = NULL [, string $locale = "" ]] )

过程化风格

IntlCalendar intlcal_create_instance ([ mixed $timeZone = NULL [, string $locale = "" ]] )

Given a timezone and locale, this method creates an IntlCalendar object. This factory method may return a subclass of IntlCalendar.

The calendar created will represent the time instance at which it was created, based on the system time. The fields can all be cleared by calling IntCalendar::clear() with no arguments. See also IntlGregorianCalendar::__construct().

参数

timeZone

The timezone to use.

  • NULL, in which case the default timezone will be used, as specified in the ini setting date.timezone or through the function date_default_timezone_set() and as returned by date_default_timezone_get().

  • An IntlTimeZone, which will be used directly.

  • A DateTimeZone. Its identifier will be extracted and an ICU timezone object will be created; the timezone will be backed by ICU?s database, not PHP?s.

  • A string, which should be a valid ICU timezone identifier. See IntlTimeZone::createTimeZoneIDEnumeration(). Raw offsets such as "GMT+08:30" are also accepted.

locale

A locale to use or NULL to use the default locale.

返回值

The created IntlCalendar instance or NULL on failure.

范例

Example #1 IntlCalendar::createInstance()

<?php
ini_set('intl.default_locale', 'es_ES');
ini_set('date.timezone', 'Europe/Madrid');

$cal = IntlCalendar::createInstance();
echo "No arguments\n";
var_dump(get_class($cal),
        IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL));
echo "\n";

echo "Explicit timezone\n";
$cal = IntlCalendar::createInstance(IntlTimeZone::getGMT());
var_dump(get_class($cal),
        IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL));
echo "\n";

echo "Explicit locale (with calendar)\n";
$cal = IntlCalendar::createInstance(NULL, 'es_ES@calendar=persian');
var_dump(get_class($cal),
        IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL));

以上例程会输出：

No arguments
string(21) "IntlGregorianCalendar"
string(68) "martes 18 de junio de 2013 14:11:02 Hora de verano de Europa Central"

Explicit timezone
string(21) "IntlGregorianCalendar"
string(45) "martes 18 de junio de 2013 12:11:02 GMT+00:00"

Explicit locale (with calendar)
string(12) "IntlCalendar"
string(70) "martes 28 de Khordad de 1392 14:11:02 Hora de verano de Europa Central"

参见

  • IntlGregorianCalendar::__construct()

IntlCalendar::__construct
IntlCalendar::equals
IntlCalendar


Compare time of two IntlCalendar objects for equality

IntlCalendar::createInstance
IntlCalendar::fieldDifference
IntlCalendar
PHP Manual

IntlCalendar::equals

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::equals — Compare time of two IntlCalendar objects for equality

说明

面向对象风格

public bool IntlCalendar::equals ( IntlCalendar $other )

过程化风格

bool intlcal_equals ( IntlCalendar $cal , IntlCalendar $other )

Returns true if this calendar and the given calendar have the same time. The settings, calendar types and field states do not have to be the same.

参数

cal

The IntlCalendar resource.

other

The calendar to compare with the primary object.

返回值

Returns TRUE if the current time of both this and the passed in IntlCalendar object are the same, or FALSE otherwise. The value FALSE can also be returned on failure. This can only happen if bad arguments are passed in. In any case, the two cases can be distinguished by calling intl_get_error_code().

范例

Example #1 IntlCalendar::equals()

<?php
ini_set('date.timezone', 'UTC');

$cal1 = IntlCalendar::createInstance(NULL, 'es_ES');
$cal2 = clone $cal1;

var_dump($cal1->equals($cal2)); //TRUE

//The locale is not included in the comparison
$cal2 = IntlCalendar::createInstance(NULL, 'pt_PT');
$cal2->setTime($cal1->getTime());
var_dump($cal1->equals($cal2)); //TRUE

//And set fields state is not included as well
$cal2->clear(IntlCalendar::FIELD_YEAR);
var_dump($cal1->isSet(IntlCalendar::FIELD_YEAR) ==
        $cal2->isSet(IntlCalendar::FIELD_YEAR)); //FALSE
var_dump($cal1->equals($cal2)); //TRUE

//Neither is the calendar type
$cal2 = IntlCalendar::createInstance(NULL, 'es_ES@calendar=islamic');
$cal2->setTime($cal1->getTime());
var_dump($cal1->equals($cal2)); //TRUE

//Only the time is
$cal2 = clone $cal1;
$cal2->setTime($cal1->getTime() + 1.);
var_dump($cal1->equals($cal2)); //FALSE

IntlCalendar::createInstance
IntlCalendar::fieldDifference
IntlCalendar


Calculate difference between given time and this object?s time

IntlCalendar::equals
IntlCalendar::fromDateTime
IntlCalendar
PHP Manual

IntlCalendar::fieldDifference

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::fieldDifference — Calculate difference between given time and this object?s time

说明

面向对象风格

public int IntlCalendar::fieldDifference ( float $when , int $field )

过程化风格

int intlcal_field_difference ( IntlCalendar $cal , float $when , int $field )

Return the difference between the given time and the time this object is set to, with respect to the quantity specified the field parameter.

This method is meant to be called successively, first with the most significant field of interest down to the least significant field. To this end, as a side effect, this calendar?s value for the field specified is advanced by the amount returned.

参数

cal

The IntlCalendar resource.

when

The time against which to compare the quantity represented by the field. For the result to be positive, the time given for this parameter must be ahead of the time of the object the method is being invoked on.

field

The field that represents the quantity being compared.

One of the IntlCalendar date/time field constants. These are integer values between 0 and IntlCalendar::FIELD_COUNT.

返回值

Returns a (signed) difference of time in the unit associated with the specified field 或者在失败时返回 FALSE.

范例

Example #1 IntlCalendar::fieldDifference()

<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'fr_FR');

$cal1 = IntlCalendar::fromDateTime('2012-02-29 09:00:11');
$cal2 = IntlCalendar::fromDateTime('2013-03-01 09:19:29');
$time = $cal2->getTime();

echo "Time before: ", IntlDateFormatter::formatObject($cal1), "\n";

printf(
    "The difference in time is %d year(s), %d month(s), "
  . "%d day(s), %d hour(s) and %d minute(s)\n",
    $cal1->fieldDifference($time, IntlCalendar::FIELD_YEAR),
    $cal1->fieldDifference($time, IntlCalendar::FIELD_MONTH),
    $cal1->fieldDifference($time, IntlCalendar::FIELD_DAY_OF_MONTH),
    $cal1->fieldDifference($time, IntlCalendar::FIELD_HOUR_OF_DAY),
    $cal1->fieldDifference($time, IntlCalendar::FIELD_MINUTE)
);

//now it was advanced to the target time, exception for the seconds,
//for which we did not measure the difference
echo "Time after: ", IntlDateFormatter::formatObject($cal1), "\n";

以上例程会输出：

Time before: 29 févr. 2012 09:00:11
The difference in time is 1 year(s), 0 month(s), 1 day(s), 0 hour(s) and 19 minute(s)
Time after: 1 mars 2013 09:19:11

IntlCalendar::equals
IntlCalendar::fromDateTime
IntlCalendar


Create an IntlCalendar from a DateTime object or string

IntlCalendar::fieldDifference
IntlCalendar::get
IntlCalendar
PHP Manual

IntlCalendar::fromDateTime

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a2)

IntlCalendar::fromDateTime — Create an IntlCalendar from a DateTime object or string

说明

面向对象风格

public static IntlCalendar IntlCalendar::fromDateTime ( mixed $dateTime )

过程化风格

IntlCalendar intlcal_from_date_time ( mixed $dateTime )

Creates an IntlCalendar object either from a DateTime object or from a string from which a DateTime object can be built.

The new calendar will represent not only the same instant as the given DateTime (subject to precision loss for dates very far into the past or future), but also the same timezone (subject to the caveat that different timezone databases will be used, and therefore the results may differ).

参数

dateTime

A DateTime object or a string that can be passed to DateTime::__construct().

返回值

The created IntlCalendar object or NULL in case of failure. If a string is passed, any exception that occurs inside the DateTime constructor is propagated.

范例

Example #1 IntlCalendar::fromDateTime()

<?php
ini_set('date.timezone', 'Europe/Lisbon');

//same as IntlCalendar::fromDateTime(new DateTime(...))
$cal1 = IntlCalendar::fromDateTime('2013-02-28 00:01:02 Europe/Berlin');

//Note the timezone is Europe/Berlin, not the default Europe/Lisbon
echo IntlDateFormatter::formatObject($cal1, 'yyyy MMMM d HH:mm:ss VVVV', 'de_DE'), "\n";

以上例程会输出：

2013 Februar 28 00:01:02 Deutschland Zeit

IntlCalendar::fieldDifference
IntlCalendar::get
IntlCalendar


Get the value for a field

IntlCalendar::fromDateTime
IntlCalendar::getActualMaximum
IntlCalendar
PHP Manual

IntlCalendar::get

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::get — Get the value for a field

说明

面向对象风格

public int IntlCalendar::get ( int $field )

过程化风格

int intlcal_get ( IntlCalendar> $cal , int $field )

Gets the value for a specific field.

参数

cal

The IntlCalendar resource.

field

One of the IntlCalendar date/time field constants. These are integer values between 0 and IntlCalendar::FIELD_COUNT.

返回值

An integer with the value of the time field.

范例

Example #1 IntlCalendar::get()

<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'en_US');

$class = new ReflectionClass('IntlCalendar');
$fields = array();
foreach ($class->getConstants() as $name => $val) {
    if (strpos($name, 'FIELD_') !== 0 || $val > 22)
        continue;
    $fields[$val] = $name;
}

$cal = IntlCalendar::createInstance(); // current time
var_dump(IntlDateFormatter::formatObject($cal));
foreach ($fields as $val => $name) {
    echo "$val ($name)", "\n    ", $cal->get($val), "\n";
}

以上例程会输出：

string(23) "Jul 1, 2013, 4:44:44 AM"
0 (FIELD_ERA)
    1
1 (FIELD_YEAR)
    2013
2 (FIELD_MONTH)
    6
3 (FIELD_WEEK_OF_YEAR)
    27
4 (FIELD_WEEK_OF_MONTH)
    1
5 (FIELD_DAY_OF_MONTH)
    1
6 (FIELD_DAY_OF_YEAR)
    182
7 (FIELD_DAY_OF_WEEK)
    2
8 (FIELD_DAY_OF_WEEK_IN_MONTH)
    1
9 (FIELD_AM_PM)
    0
10 (FIELD_HOUR)
    4
11 (FIELD_HOUR_OF_DAY)
    4
12 (FIELD_MINUTE)
    44
13 (FIELD_SECOND)
    44
14 (FIELD_MILLISECOND)
    551
15 (FIELD_ZONE_OFFSET)
    0
16 (FIELD_DST_OFFSET)
    3600000
17 (FIELD_YEAR_WOY)
    2013
18 (FIELD_DOW_LOCAL)
    2
19 (FIELD_EXTENDED_YEAR)
    2013
20 (FIELD_JULIAN_DAY)
    2456475
21 (FIELD_MILLISECONDS_IN_DAY)
    17084551
22 (FIELD_IS_LEAP_MONTH)
    0

IntlCalendar::fromDateTime
IntlCalendar::getActualMaximum
IntlCalendar


The maximum value for a field, considering the object?s current time

IntlCalendar::get
IntlCalendar::getActualMinimum
IntlCalendar
PHP Manual

IntlCalendar::getActualMaximum

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::getActualMaximum — The maximum value for a field, considering the object?s current time

说明

面向对象风格

public int IntlCalendar::getActualMaximum ( int $field )

过程化风格

int intlcal_get_actual_maximum ( IntlCalendar $cal , int $field )

Returns a field?s relative maximum value around the current time. The exact semantics vary by field, but in the general case this is the value that would be obtained if one would set the field value into the smallest relative maximum for the field and would increment it until reaching the global maximum or the field value wraps around, in which the value returned would be the global maximum or the value before the wrapping, respectively.

For instance, in the gregorian calendar, the actual maximum value for the day of month would vary between 28 and 31, depending on the month and year of the current time.

参数

cal

The IntlCalendar resource.

field

One of the IntlCalendar date/time field constants. These are integer values between 0 and IntlCalendar::FIELD_COUNT.

返回值

An int representing the maximum value in the units associated with the given field 或者在失败时返回 FALSE.

范例

Example #1 IntlCalendar::getActualMaximum()

<?php
ini_set('date.timezone', 'Europe/Lisbon');

$cal = IntlCalendar::fromDateTime('2013-02-15');
var_dump($cal->getActualMaximum(IntlCalendar::FIELD_DAY_OF_MONTH)); //28

$cal->add(IntlCalendar::FIELD_EXTENDED_YEAR, -1);
var_dump($cal->getActualMaximum(IntlCalendar::FIELD_DAY_OF_MONTH)); //29

以上例程会输出：

int(28)
int(29)

参见

  • IntlCalendar::getMaximum() - Get the global maximum value for a field
  • IntlCalendar::getLeastMaximum() - Get the smallest local maximum for a field
  • IntlCalendar::getActualMinimum() - The minimum value for a field, considering the object?s current time

IntlCalendar::get
IntlCalendar::getActualMinimum
IntlCalendar


The minimum value for a field, considering the object?s current time

IntlCalendar::getActualMaximum
IntlCalendar::getAvailableLocales
IntlCalendar
PHP Manual

IntlCalendar::getActualMinimum

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::getActualMinimum — The minimum value for a field, considering the object?s current time

说明

面向对象风格

public int IntlCalendar::getActualMinimum ( int $field )

过程化风格

int intlcal_get_actual_minimum ( IntlCalendar $cal , int $field )

Returns a field?s relative minimum value around the current time. The exact semantics vary by field, but in the general case this is the value that would be obtained if one would set the field value into the greatest relative minimum for the field and would decrement it until reaching the global minimum or the field value wraps around, in which the value returned would be the global minimum or the value before the wrapping, respectively.

For the Gregorian calendar, this is always the same as IntlCalendar::getMinimum().

参数

cal

The IntlCalendar resource.

field

One of the IntlCalendar date/time field constants. These are integer values between 0 and IntlCalendar::FIELD_COUNT.

返回值

An int representing the minimum value in the field?s unit 或者在失败时返回 FALSE.

参见

  • IntlCalendar::getMinimum() - Get the global minimum value for a field
  • IntlCalendar::getGreatestMinimum() - Get the largest local minimum value for a field
  • IntlCalendar::getActualMaximum() - The maximum value for a field, considering the object?s current time

IntlCalendar::getActualMaximum
IntlCalendar::getAvailableLocales
IntlCalendar


Get array of locales for which there is data

IntlCalendar::getActualMinimum
IntlCalendar::getDayOfWeekType
IntlCalendar
PHP Manual

IntlCalendar::getAvailableLocales

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::getAvailableLocales — Get array of locales for which there is data

说明

面向对象风格

public static array IntlCalendar::getAvailableLocales ( void )

过程化风格

array intlcal_get_available_locales ( void )

Gives the list of locales for which calendars are installed. As of ICU 51, this is the list of all installed ICU locales.

参数

此函数没有参数。

返回值

An array of strings, one for which locale.

范例

Example #1 IntlCalendar::getAvailableLocales()()

<?php
print_r(IntlCalendar::getAvailableLocales());

以上例程会输出：

Array
(
    [0] => af
    [1] => af_NA
    [2] => af_ZA
    [3] => agq
    [4] => agq_CM
    [5] => ak
    [6] => ak_GH
    [7] => am
    [8] => am_ET
    [9] => ar
    [10] => ar_001
    [11] => ar_AE
    [12] => ar_BH
    [13] => ar_DJ
    ... output abbreviated ...
    [595] => zh_Hant_HK
    [596] => zh_Hant_MO
    [597] => zh_Hant_TW
    [598] => zu
    [599] => zu_ZA
)

IntlCalendar::getActualMinimum
IntlCalendar::getDayOfWeekType
IntlCalendar


Tell whether a day is a weekday, weekend or a day that has a transition between the two

IntlCalendar::getAvailableLocales
IntlCalendar::getErrorCode
IntlCalendar
PHP Manual

IntlCalendar::getDayOfWeekType

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::getDayOfWeekType — Tell whether a day is a weekday, weekend or a day that has a transition between the two

说明

面向对象风格

public int IntlCalendar::getDayOfWeekType ( int $dayOfWeek )

过程化风格

int intlcal_get_day_of_week_type ( IntlCalendar $cal , int $dayOfWeek )

Returns whether the passed day is a weekday (IntlCalendar::DOW_TYPE_WEEKDAY), a weekend day (IntlCalendar::DOW_TYPE_WEEKEND), a day during which a transition occurs into the weekend (IntlCalendar::DOW_TYPE_WEEKEND_OFFSET) or a day during which the weekend ceases (IntlCalendar::DOW_TYPE_WEEKEND_CEASE).

If the return is either
IntlCalendar::DOW_TYPE_WEEKEND_OFFSET or
IntlCalendar::DOW_TYPE_WEEKEND_CEASE, then
IntlCalendar::getWeekendTransition() can be called to
obtain the time of the transition.

This function requires ICU 4.4 or later.

参数

cal

The IntlCalendar resource.

dayOfWeek

One of the constants IntlCalendar::DOW_SUNDAY,
IntlCalendar::DOW_MONDAY, ...,
IntlCalendar::DOW_SATURDAY.

返回值

Returns one of the constants
IntlCalendar::DOW_TYPE_WEEKDAY,
IntlCalendar::DOW_TYPE_WEEKEND,
IntlCalendar::DOW_TYPE_WEEKEND_OFFSET or
IntlCalendar::DOW_TYPE_WEEKEND_CEASE 或者在失败时返回 FALSE.

范例

Example #1 IntlCalendar::getDayOfWeekType()

<?php

foreach (array('en_US', 'ar_SA') as $locale) {
    echo "Locale: ", Locale::getDisplayName($locale, "en_US"), "\n";

    $cal = IntlCalendar::createInstance('UTC', $locale);

    for ($i = IntlCalendar::DOW_SUNDAY; $i <= IntlCalendar::DOW_SATURDAY; $i++) {
        echo $i, " ", $cal->getDayOfWeekType($i), " ",
                $cal->getDayOfWeekType($i) >= IntlCalendar::DOW_TYPE_WEEKEND_OFFSET
                        ? $cal->getWeekendTransition($i)
                        : '',
                "\n";
    }
    echo "\n";
}

以上例程会输出：

Locale: English (United States)
1 3 86400000
2 0
3 0
4 0
5 0
6 0
7 1

Locale: Arabic (Saudi Arabia)
1 0
2 0
3 0
4 0
5 1
6 3 86400000
7 0

IntlCalendar::getAvailableLocales
IntlCalendar::getErrorCode
IntlCalendar


Get last error code on the object

IntlCalendar::getDayOfWeekType
IntlCalendar::getErrorMessage
IntlCalendar
PHP Manual

IntlCalendar::getErrorCode

intlcal_get_error_code

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::getErrorCode -- intlcal_get_error_code — Get last error code on the object

说明

面向对象风格 (method):

public int IntlCalendar::getErrorCode ( void )

过程化风格:

int intlcal_get_error_code ( IntlCalendar $calendar )

Returns the numeric ICU error code for the last call on this object (including cloning) or the IntlCalendar given for the calendar parameter (in the procedural?style version). This may indicate only a warning (negative error code) or no error at all (U_ZERO_ERROR). The actual presence of an error can be tested with intl_is_failure().

Invalid arguments detected on the PHP side (before invoking functions of the ICU library) are not recorded for the purposes of this function.

The last error that occurred in any call to a function of the intl extension, including early argument errors, can be obtained with intl_get_error_code(). This function resets the global error code, but not the object?s error code.

参数

calendar

The calendar object, on the procedural style interface.

返回值

An ICU error code indicating either success, failure or a warning.

范例

Example #1 IntlCalendar::getErrorCode() and IntlCalendar::getErrorMessage()

<?php
ini_set("intl.error_level", E_WARNING);
ini_set("intl.default_locale", "nl");

$intlcal = new IntlGregorianCalendar(2012, 1, 29);
var_dump(
    $intlcal->getErrorCode(),
    $intlcal->getErrorMessage()
);
$intlcal->fieldDifference(-1e100, IntlCalendar::FIELD_SECOND);

var_dump(
    $intlcal->getErrorCode(),
    $intlcal->getErrorMessage()
);

以上例程会输出：

int(0)
string(12) "U_ZERO_ERROR"

Warning: IntlCalendar::fieldDifference(): intlcal_field_difference: Call to ICU method has failed in /home/glopes/php/ws/example.php on line 10
int(1)
string(81) "intlcal_field_difference: Call to ICU method has failed: U_ILLEGAL_ARGUMENT_ERROR"

参见

  • IntlCalendar::getErrorMessage() - Get last error message on the object
  • intl_is_failure() - Check whether the given error code indicates failure
  • intl_error_name() - Get symbolic name for a given error code
  • intl_get_error_code() - Get the last error code
  • intl_get_error_message() - Get description of the last error

IntlCalendar::getDayOfWeekType
IntlCalendar::getErrorMessage
IntlCalendar


Get last error message on the object

IntlCalendar::getErrorCode
IntlCalendar::getFirstDayOfWeek
IntlCalendar
PHP Manual

IntlCalendar::getErrorMessage

intlcal_get_error_message

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::getErrorMessage -- intlcal_get_error_message — Get last error message on the object

说明

面向对象风格 (method):

public string IntlCalendar::getErrorMessage ( void )

过程化风格:

string intlcal_get_error_message ( IntlCalendar $calendar )

Returns the error message (if any) associated with the error reported by IntlCalendar::getErrorCode() or intlcal_get_error_code(). If there is no associated error message, only the string representation of the name of the error constant will be returned. Otherwise, the message also includes a message set on the side of the PHP binding.

参数

calendar

The calendar object, on the procedural style interface.

返回值

The error message associated with last error that occurred in a function call on this object, or a string indicating the non-existance of an error.

范例

Example #1 IntlCalendar::getErrorMessage()

<?php
$cal = IntlCalendar::createInstance('UTC', 'en_US');
var_dump($cal->getErrorMessage());

$cal->getWeekendTransition(IntlCalendar::DOW_WEDNESDAY);
var_dump($cal->getErrorMessage());

以上例程会输出：

string(12) "U_ZERO_ERROR"
string(82) "intlcal_get_weekend_transition: Error calling ICU method: U_ILLEGAL_ARGUMENT_ERROR"

IntlCalendar::getErrorCode
IntlCalendar::getFirstDayOfWeek
IntlCalendar


Get the first day of the week for the calendar?s locale

IntlCalendar::getErrorMessage
IntlCalendar::getGreatestMinimum
IntlCalendar
PHP Manual

IntlCalendar::getFirstDayOfWeek

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::getFirstDayOfWeek — Get the first day of the week for the calendar?s locale

说明

面向对象风格

public int IntlCalendar::getFirstDayOfWeek ( void )

过程化风格

int intlcal_get_first_day_of_week ( IntlCalendar $cal )

The week day deemed to start a week, either the default value for this locale or the value set with IntlCalendar::setFirstDayOfWeek().

参数

cal

The IntlCalendar resource.

返回值

One of the constants IntlCalendar::DOW_SUNDAY,
IntlCalendar::DOW_MONDAY, ...,
IntlCalendar::DOW_SATURDAY 或者在失败时返回 FALSE.

范例

Example #1 IntlCalendar::getFirstDayOfWeek()

<?php
ini_set('date.timezone', 'UTC');

$cal1 = IntlCalendar::createInstance(NULL, 'es_ES');
var_dump($cal1->getFirstDayOfWeek()); // Monday
$cal1->set(2013, 1 /* February */, 3); // a Sunday
var_dump($cal1->get(IntlCalendar::FIELD_WEEK_OF_YEAR)); // 5

$cal2 = IntlCalendar::createInstance(NULL, 'en_US');
var_dump($cal2->getFirstDayOfWeek()); // Sunday
$cal2->set(2013, 1 /* February */, 3); // a Sunday
var_dump($cal2->get(IntlCalendar::FIELD_WEEK_OF_YEAR)); // 6

以上例程会输出：

int(2)
int(5)
int(1)
int(6)

参见

  • IntlCalendar::setFirstDayOfWeek() - Set the day on which the week is deemed to start

IntlCalendar::getErrorMessage
IntlCalendar::getGreatestMinimum
IntlCalendar


Get the largest local minimum value for a field

IntlCalendar::getFirstDayOfWeek
IntlCalendar::getKeywordValuesForLocale
IntlCalendar
PHP Manual

IntlCalendar::getGreatestMinimum

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::getGreatestMinimum — Get the largest local minimum value for a field

说明

面向对象风格

public int IntlCalendar::getGreatestMinimum ( int $field )

过程化风格

int intlcal_get_greatest_minimum ( IntlCalendar $cal , int $field )

Returns the largest local minimum for a field. This should be a value larger or equal to that returned by IntlCalendar::getActualMinimum(), which is in its turn larger or equal to that returned by IntlCalendar::getMinimum(). All these three functions return the same value for the Gregorian calendar.

参数

cal

The IntlCalendar resource.

field

One of the IntlCalendar date/time field constants. These are integer values between 0 and IntlCalendar::FIELD_COUNT.

返回值

An int representing a field value, in the field?s unit, 或者在失败时返回 FALSE.

IntlCalendar::getFirstDayOfWeek
IntlCalendar::getKeywordValuesForLocale
IntlCalendar


Get set of locale keyword values

IntlCalendar::getGreatestMinimum
IntlCalendar::getLeastMaximum
IntlCalendar
PHP Manual

IntlCalendar::getKeywordValuesForLocale

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::getKeywordValuesForLocale — Get set of locale keyword values

说明

面向对象风格

public static Iterator IntlCalendar::getKeywordValuesForLocale ( string $key , string $locale , boolean $commonlyUsed )

过程化风格

Iterator intlcal_get_keyword_values_for_locale ( string $key , string $locale , boolean $commonlyUsed )

For a given locale key, get the set of values for that key that would result in a different behavior. For now, only the 'calendar' keyword is supported.

This function requires ICU 4.2 or later.

参数

key

The locale keyword for which relevant values are to be queried. Only 'calendar' is supported.

locale

The locale onto which the keyword/value pair are to be appended.

commonlyUsed

Whether to show only the values commonly used for the specified locale.

返回值

An iterator that yields strings with the locale keyword values 或者在失败时返回 FALSE.

范例

Example #1 IntlCalendar::getKeyworkValuesForLocale()

<?php
print_r(
        iterator_to_array(
                IntlCalendar::getKeywordValuesForLocale(
                        'calendar', 'fa_IR', true)));
print_r(
        iterator_to_array(
                IntlCalendar::getKeywordValuesForLocale(
                        'calendar', 'fa_IR', false)));

以上例程会输出：

Array
(
    [0] => persian
    [1] => gregorian
    [2] => islamic
    [3] => islamic-civil
)
Array
(
    [0] => persian
    [1] => gregorian
    [2] => islamic
    [3] => islamic-civil
    [4] => japanese
    [5] => buddhist
    [6] => roc
    [7] => hebrew
    [8] => chinese
    [9] => indian
    [10] => coptic
    [11] => ethiopic
    [12] => ethiopic-amete-alem
)

IntlCalendar::getGreatestMinimum
IntlCalendar::getLeastMaximum
IntlCalendar


Get the smallest local maximum for a field

IntlCalendar::getKeywordValuesForLocale
IntlCalendar::getLocale
IntlCalendar
PHP Manual

IntlCalendar::getLeastMaximum

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::getLeastMaximum — Get the smallest local maximum for a field

说明

面向对象风格

public int IntlCalendar::getLeastMaximum ( int $field )

过程化风格

int intlcal_get_least_maximum ( IntlCalendar $cal , int $field )

Returns the smallest local maximumw for a field. This should be a value smaller or equal to that returned by IntlCalendar::getActualMaxmimum(), which is in its turn smaller or equal to that returned by IntlCalendar::getMaximum().

参数

cal

The IntlCalendar resource.

field

One of the IntlCalendar date/time field constants. These are integer values between 0 and IntlCalendar::FIELD_COUNT.

返回值

An int representing a field value in the field?s unit 或者在失败时返回 FALSE.

范例

Example #1 Maxima examples

<?php
ini_set('date.timezone', 'UTC');
ini_set('intl.default_locale', 'it_IT');

$cal = new IntlGregorianCalendar(2013, 3 /* April */, 6);
var_dump(
    $cal->getLeastMaximum(IntlCalendar::FIELD_DAY_OF_MONTH),  // 28
    $cal->getActualMaximum(IntlCalendar::FIELD_DAY_OF_MONTH), // 30
    $cal->getMaximum(IntlCalendar::FIELD_DAY_OF_MONTH)        // 31
);

以上例程会输出：

int(28)
int(30)
int(31)

参见

  • IntlCalendar::getActualMaximum() - The maximum value for a field, considering the object?s current time
  • IntlCalendar::getMaximum() - Get the global maximum value for a field
  • IntlCalendar::getGreatestMinimum() - Get the largest local minimum value for a field

IntlCalendar::getKeywordValuesForLocale
IntlCalendar::getLocale
IntlCalendar


Get the locale associated with the object

IntlCalendar::getLeastMaximum
IntlCalendar::getMaximum
IntlCalendar
PHP Manual

IntlCalendar::getLocale

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::getLocale — Get the locale associated with the object

说明

面向对象风格

public string IntlCalendar::getLocale ( int $localeType )

过程化风格

string intlcal_get_locale ( IntlCalendar $cal , int $localeType )

Returns the locale used by this calendar object.

参数

cal

The IntlCalendar resource.

localeType

Whether to fetch the actual locale (the locale from which the calendar data originates, with Locale::ACTUAL_LOCALE) or the valid locale, i.e., the most specific locale supported by ICU relatively to the requested locale - see Locale::VALID_LOCALE. From the most general to the most specific, the locales are ordered in this fashion - actual locale, valid locale, requested locale.

返回值

A locale string 或者在失败时返回 FALSE.

范例

Example #1 IntlCalendar::getLocale()

<?php
$cal = IntlCalendar::createInstance(IntlTimeZone::getGMT(), 'en_US_CALIFORNIA');
var_dump(
    $cal->getLocale(Locale::ACTUAL_LOCALE),
    $cal->getLocale(Locale::VALID_LOCALE)
);

以上例程会输出：

string(2) "en"
string(5) "en_US"

IntlCalendar::getLeastMaximum
IntlCalendar::getMaximum
IntlCalendar


Get the global maximum value for a field

IntlCalendar::getLocale
IntlCalendar::getMinimalDaysInFirstWeek
IntlCalendar
PHP Manual

IntlCalendar::getMaximum

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::getMaximum — Get the global maximum value for a field

说明

面向对象风格

public int IntlCalendar::getMaximum ( int $field )

过程化风格

int intlcal_get_maximum ( IntlCalendar $cal , int $field )

Gets the global maximum for a field, in this specific calendar. This value is larger or equal to that returned by IntlCalendar::getActualMaximum(), which is in its turn larger or equal to that returned by IntlCalendar::getLeastMaximum().

参数

cal

The IntlCalendar resource.

field

One of the IntlCalendar date/time field constants. These are integer values between 0 and IntlCalendar::FIELD_COUNT.

返回值

An int representing a field value in the field?s unit 或者在失败时返回 FALSE.

参见

  • IntlCalendar::getActualMaximum() - The maximum value for a field, considering the object?s current time
  • IntlCalendar::getLeastMaximum() - Get the smallest local maximum for a field
  • IntlCalendar::getMinimum() - Get the global minimum value for a field

IntlCalendar::getLocale
IntlCalendar::getMinimalDaysInFirstWeek
IntlCalendar


Get minimal number of days the first week in a year or month can have

IntlCalendar::getMaximum
IntlCalendar::getMinimum
IntlCalendar
PHP Manual

IntlCalendar::getMinimalDaysInFirstWeek

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::getMinimalDaysInFirstWeek — Get minimal number of days the first week in a year or month can have

说明

面向对象风格

public int IntlCalendar::getMinimalDaysInFirstWeek ( void )

过程化风格

int intlcal_get_minimal_days_in_first_week ( IntlCalendar $cal )

Returns the smallest number of days the first week of a year or month must have in the new year or month. For instance, in the Gregorian calendar, if this value is 1, then the first week of the year will necessarily include January 1st, while if this value is 7, then the week with January 1st will be the first week of the year only if the day of the week for January 1st matches the day of the week returned by IntlCalendar::getFirstDayOfWeek(); otherwise it will be the previous year?s last week.

参数

cal

The IntlCalendar resource.

返回值

An int representing a number of days 或者在失败时返回 FALSE.

范例

Example #1 IntlCalendar::getMinimalDaysInFirstWeek()

<?php
ini_set('date.timezone', 'UTC');
ini_set('intl.default_locale', 'en_US');

$cal = new IntlGregorianCalendar(2013, 0 /* January */, 2);
var_dump(IntlDateFormatter::formatObject($cal, 'cccc')); // Wednesday

var_dump($cal->getMinimalDaysInFirstWeek(), // 1
$cal->getFirstDayofWeek()); // 1 (Sunday)

// Week 1 of 2013
var_dump(IntlDateFormatter::formatObject($cal, "'Week 'w' of 'Y"));

$cal->setMinimalDaysInFirstWeek(4);
// Still Week 1 of 2013 (1st week has 5 days in the new year)
var_dump(IntlDateFormatter::formatObject($cal, "'Week 'w' of 'Y"));

$cal->setMinimalDaysInFirstWeek(6);
// Week 53 of 2012
var_dump(IntlDateFormatter::formatObject($cal, "'Week 'w' of 'Y"));

以上例程会输出：

string(9) "Wednesday"
int(1)
int(1)
string(14) "Week 1 of 2013"
string(14) "Week 1 of 2013"
string(15) "Week 53 of 2012"

IntlCalendar::getMaximum
IntlCalendar::getMinimum
IntlCalendar


Get the global minimum value for a field

IntlCalendar::getMinimalDaysInFirstWeek
IntlCalendar::getNow
IntlCalendar
PHP Manual

IntlCalendar::getMinimum

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::getMinimum — Get the global minimum value for a field

说明

面向对象风格

public int IntlCalendar::getMinimum ( int $field )

过程化风格

int intlcal_get_minimum ( IntlCalendar $cal , int $field )

Gets the global minimum for a field, in this specific calendar. This value is smaller or equal to that returned by IntlCalendar::getActualMinimum(), which is in its turn smaller or equal to that returned by IntlCalendar::getGreatestMinimum(). For the Gregorian calendar, these three functions always return the same value (for each field).

参数

cal

The IntlCalendar resource.

field

One of the IntlCalendar date/time field constants. These are integer values between 0 and IntlCalendar::FIELD_COUNT.

返回值

An int representing a value for the given field in the field?s unit 或者在失败时返回 FALSE.

IntlCalendar::getMinimalDaysInFirstWeek
IntlCalendar::getNow
IntlCalendar


Get number representing the current time

IntlCalendar::getMinimum
IntlCalendar::getRepeatedWallTimeOption
IntlCalendar
PHP Manual

IntlCalendar::getNow

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::getNow — Get number representing the current time

说明

面向对象风格

public static float IntlCalendar::getNow ( void )

过程化风格

float intlcal_get_now ( void )

The number of milliseconds that have passed since the reference date. This number is derived from the system time.

参数

此函数没有参数。

返回值

A float representing a number of milliseconds since the epoch, not counting leap seconds.

范例

Example #1 IntlCalendar::getNow()

<?php
$formatter = IntlDateFormatter::create('es_ES',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'Europe/Madrid');

$val = IntlCalendar::getNow();

var_dump($val);
echo $formatter->format(IntlCalendar::getNow() / 1000.), "\n";

以上例程会输出：

float(1371425814666)
lunes, 17 de junio de 2013 01:36:54 Hora de verano de Europa central

IntlCalendar::getMinimum
IntlCalendar::getRepeatedWallTimeOption
IntlCalendar


Get behavior for handling repeating wall time

IntlCalendar::getNow
IntlCalendar::getSkippedWallTimeOption
IntlCalendar
PHP Manual

IntlCalendar::getRepeatedWallTimeOption

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::getRepeatedWallTimeOption — Get behavior for handling repeating wall time

说明

面向对象风格

public int IntlCalendar::getRepeatedWallTimeOption ( void )

过程化风格

int intlcal_get_repeated_wall_time_option ( IntlCalendar $cal )

Gets the current strategy for dealing with wall times that are repeated whenever the clock is set back during dailight saving time end transitions. The default value is IntlCalendar::WALLTIME_LAST.

This function requires ICU 4.9 or later.

参数

cal

The IntlCalendar resource.

返回值

One of the constants IntlCalendar::WALLTIME_FIRST or IntlCalendar::WALLTIME_LAST.

范例

Example #1 IntlCalendar::getRepeatedWallTimeOption()

<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'en_US');
ini_set('intl.error_level', E_WARNING);

//On October 27th at 0200, the clock goes back 1 hour and from GMT+01 to GMT+00
$cal = new IntlGregorianCalendar(2013, 9 /* October */, 27, 1, 30);

var_dump($cal->getRepeatedWalltimeOption()); // 0 WALLTIME_LAST

$formatter = IntlDateFormatter::create(
    NULL,
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'UTC'
);
var_dump($formatter->format($cal->getTime() / 1000.));

$cal->setRepeatedWalltimeOption(IntlCalendar::WALLTIME_FIRST);
var_dump($cal->getRepeatedWalltimeOption()); // 1 WALLTIME_FIRST
$cal->set(IntlCalendar::FIELD_HOUR_OF_DAY, 1);

var_dump($formatter->format($cal->getTime() / 1000.));

以上例程会输出：

int(0)
string(42) "Sunday, October 27, 2013 at 1:30:00 AM GMT"
int(1)
string(43) "Sunday, October 27, 2013 at 12:30:00 AM GMT"

参见

  • IntlCalendar::getSkippedWallTimeOption() - Get behavior for handling skipped wall time
  • IntlCalendar::setSkippedWallTimeOption() - Set behavior for handling skipped wall times at positive timezone offset transitions
  • IntlCalendar::setRepeatedWallTimeOption() - Set behavior for handling repeating wall times at negative timezone offset transitions

IntlCalendar::getNow
IntlCalendar::getSkippedWallTimeOption
IntlCalendar


Get behavior for handling skipped wall time

IntlCalendar::getRepeatedWallTimeOption
IntlCalendar::getTime
IntlCalendar
PHP Manual

IntlCalendar::getSkippedWallTimeOption

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::getSkippedWallTimeOption — Get behavior for handling skipped wall time

说明

面向对象风格

public int IntlCalendar::getSkippedWallTimeOption ( void )

过程化风格

int intlcal_get_skipped_wall_time_option ( IntlCalendar $cal )

Gets the current strategy for dealing with wall times that are skipped whenever the clock is forwarded during dailight saving time start transitions. The default value is IntlCalendar::WALLTIME_LAST.

The calendar must be lenient for this option to have any effect, otherwise attempting to set a non-existing time will cause an error.

This function requires ICU 4.9 or later.

参数

cal

The IntlCalendar resource.

返回值

One of the constants IntlCalendar::WALLTIME_FIRST,
IntlCalendar::WALLTIME_LAST or
IntlCalendar::WALLTIME_NEXT_VALID.

范例

Example #1 IntlCalendar::getSkippedWallTimeOption()

<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'en_US');
ini_set('intl.error_level', E_WARNING);

//On March 31st at 0100, the clock goes forward 1 hour and from GMT+00 to GMT+01
$cal = new IntlGregorianCalendar(2013, 2 /* March */, 31, 1, 30);

var_dump(
    $cal->isLenient(),               // true
    $cal->getSkippedWalltimeOption() // 0 WALLTIME_LAST
);

$formatter = IntlDateFormatter::create(
    NULL,
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'UTC'
);
var_dump($formatter->format($cal->getTime() / 1000));

$cal->setSkippedWallTimeOption(IntlCalendar::WALLTIME_FIRST);
var_dump($cal->getSkippedWalltimeOption()); // 1 WALLTIME_FIRST
$cal->set(IntlCalendar::FIELD_HOUR_OF_DAY, 1);

var_dump($formatter->format($cal->getTime() / 1000));

$cal->setSkippedWallTimeOption(IntlCalendar::WALLTIME_NEXT_VALID);
var_dump($cal->getSkippedWalltimeOption()); // 2 WALLTIME_NEXT_VALID
$cal->set(IntlCalendar::FIELD_HOUR_OF_DAY, 1);

var_dump($formatter->format($cal->getTime() / 1000));

以上例程会输出：

bool(true)
int(0)
string(40) "Sunday, March 31, 2013 at 1:30:00 AM GMT"
int(1)
string(41) "Sunday, March 31, 2013 at 12:30:00 AM GMT"
int(2)
string(40) "Sunday, March 31, 2013 at 1:00:00 AM GMT"

参见

  • IntlCalendar::getRepeatedWallTimeOption() - Get behavior for handling repeating wall time
  • IntlCalendar::setSkippedWallTimeOption() - Set behavior for handling skipped wall times at positive timezone offset transitions
  • IntlCalendar::setRepeatedWallTimeOption() - Set behavior for handling repeating wall times at negative timezone offset transitions

IntlCalendar::getRepeatedWallTimeOption
IntlCalendar::getTime
IntlCalendar


Get time currently represented by the object

IntlCalendar::getSkippedWallTimeOption
IntlCalendar::getTimeZone
IntlCalendar
PHP Manual

IntlCalendar::getTime

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::getTime — Get time currently represented by the object

说明

面向对象风格

public float IntlCalendar::getTime ( void )

过程化风格

float intlcal_get_time ( IntlCalendar $cal )

Returns the time associated with this object, expressed as the number of milliseconds since the epoch.

参数

cal

The IntlCalendar resource.

返回值

A float representing the number of milliseconds elapsed since the reference time (1 Jan 1970 00:00:00 UTC).

范例

Example #1 IntlCalendar::getTime()

<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'en_US');

$cal = new IntlGregorianCalendar(2013, 4 /* May */, 1, 0, 0, 0);
$time = $cal->getTime();
var_dump($time, $time / 1000 == strtotime('2013-05-01 00:00:00')); //true

以上例程会输出：

float(1367362800000)
bool(true)

参见

  • IntlCalendar::getNow() - Get number representing the current time

IntlCalendar::getSkippedWallTimeOption
IntlCalendar::getTimeZone
IntlCalendar


Get the object?s timezone

IntlCalendar::getTime
IntlCalendar::getType
IntlCalendar
PHP Manual

IntlCalendar::getTimeZone

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::getTimeZone — Get the object?s timezone

说明

面向对象风格

public IntlTimeZone IntlCalendar::getTimeZone ( void )

过程化风格

IntlTimeZone intlcal_get_time_zone ( IntlCalendar $cal )

Returns the IntlTimeZone object associated with this calendar.

参数

cal

The IntlCalendar resource.

返回值

An IntlTimeZone object corresponding to the one used internally in this object.

范例

Example #1 IntlCalendar::getTimeZone()

<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'en_US');

$cal = IntlCalendar::createInstance();
print_r($cal->getTimeZone());

$cal->setTimeZone('UTC');
print_r($cal->getTimeZone());

$cal = IntlCalendar::fromDateTime('2012-01-01 00:00:00 GMT+03:33');
print_r($cal->getTimeZone());

以上例程会输出：

IntlTimeZone Object
(
    [valid] => 1
    [id] => Europe/Lisbon
    [rawOffset] => 0
    [currentOffset] => 3600000
)
IntlTimeZone Object
(
    [valid] => 1
    [id] => UTC
    [rawOffset] => 0
    [currentOffset] => 0
)
IntlTimeZone Object
(
    [valid] => 1
    [id] => GMT+03:33
    [rawOffset] => 12780000
    [currentOffset] => 12780000
)

参见

  • IntlCalendar::setTimeZone() - Set the timezone used by this calendar
  • IntlCalendar::createInstance() - Create a new IntlCalendar
  • IntlGregorianCalendar::__construct()

IntlCalendar::getTime
IntlCalendar::getType
IntlCalendar


Get the calendar type

IntlCalendar::getTimeZone
IntlCalendar::getWeekendTransition
IntlCalendar
PHP Manual

IntlCalendar::getType

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::getType — Get the calendar type

说明

面向对象风格

public string IntlCalendar::getType ( void )

过程化风格

string intlcal_get_type ( IntlCalendar $cal )

A string describing the type of this calendar. This is one of the valid values for the calendar keyword value 'calendar'.

参数

cal

The IntlCalendar resource.

返回值

A string representing the calendar type, such as 'gregorian', 'islamic', etc.

范例

Example #1 IntlCalendar::getType()

<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'en_US');

$cal = IntlCalendar::createInstance(NULL, '@calendar=ethiopic-amete-alem');
var_dump($cal->getType());

$cal = new IntlGregorianCalendar();
var_dump($cal->getType());

以上例程会输出：

string(19) "ethiopic-amete-alem"
string(9) "gregorian"

IntlCalendar::getTimeZone
IntlCalendar::getWeekendTransition
IntlCalendar


Get time of the day at which weekend begins or ends

IntlCalendar::getType
IntlCalendar::inDaylightTime
IntlCalendar
PHP Manual

IntlCalendar::getWeekendTransition

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::getWeekendTransition — Get time of the day at which weekend begins or ends

说明

面向对象风格

public int IntlCalendar::getWeekendTransition ( string $dayOfWeek )

过程化风格

int intlcal_get_weekend_transition ( IntlCalendar $cal , string $dayOfWeek )

Returns the number of milliseconds after midnight at which the weekend begins or ends.

This is only applicable for days of the week for which
IntlCalendar::getDayOfWeekType() returns either
IntlCalendar::DOW_TYPE_WEEKEND_OFFSET or
IntlCalendar::DOW_TYPE_WEEKEND_CEASE. Calling this
function for other days of the week is an error condition.

This function requires ICU 4.4 or later.

参数

cal

The IntlCalendar resource.

dayOfWeek

One of the constants IntlCalendar::DOW_SUNDAY,
IntlCalendar::DOW_MONDAY, ...,
IntlCalendar::DOW_SATURDAY.

返回值

The number of milliseconds into the day at which the weekend begins or ends 或者在失败时返回 FALSE.

范例

See example on IntlCalendar::getDayOfWeekType().

IntlCalendar::getType
IntlCalendar::inDaylightTime
IntlCalendar


Whether the object?s time is in Daylight Savings Time

IntlCalendar::getWeekendTransition
IntlCalendar::isEquivalentTo
IntlCalendar
PHP Manual

IntlCalendar::inDaylightTime

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::inDaylightTime — Whether the object?s time is in Daylight Savings Time

说明

面向对象风格

public bool IntlCalendar::inDaylightTime ( void )

过程化风格

bool intlcal_in_daylight_time ( IntlCalendar $cal )

Whether, for the instant represented by this object and for this object?s timezone, daylight saving time is in place.

参数

cal

The IntlCalendar resource.

返回值

Returns TRUE if the date is in Daylight Savings Time, FALSE otherwise. The value FALSE may also be returned on failure, for instance after specifying invalid field values on non-lenient mode; use exceptions or query intl_get_error_code() to disambiguate.

范例

Example #1 IntlCalendar::inDaylightTime()

<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'pt_PT');

$cal = new IntlGregorianCalendar(2013, 6 /* July */, 1, 4, 56, 31);
var_dump($cal->inDaylightTime()); // true
$cal->set(IntlCalendar::FIELD_MONTH, 11 /* December */);
var_dump($cal->inDaylightTime()); // false

//DST end transition on 2013-10-27 at 0200 (wall time back 1 hour)
$cal = new IntlGregorianCalendar(2013, 9 /* October */, 27, 1, 30, 0);

var_dump($cal->inDaylightTime()); // false (default WALLTIME_LAST)

$cal->setRepeatedWallTimeOption(IntlCalendar::WALLTIME_FIRST);
$cal->set(IntlCalendar::FIELD_HOUR_OF_DAY, 1); // force time recalculation
var_dump($cal->inDaylightTime()); // true

IntlCalendar::getWeekendTransition
IntlCalendar::isEquivalentTo
IntlCalendar


Whether another calendar is equal but for a different time

IntlCalendar::inDaylightTime
IntlCalendar::isLenient
IntlCalendar
PHP Manual

IntlCalendar::isEquivalentTo

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::isEquivalentTo — Whether another calendar is equal but for a different time

说明

面向对象风格

public bool IntlCalendar::isEquivalentTo ( IntlCalendar $other )

过程化风格

bool intlcal_is_equivalent_to ( IntlCalendar $cal , IntlCalendar $other )

Returns whether this and the given object are equivalent for all purposes except as to the time they have set. The locales do not have to match, as long as no change in behavior results from such mismatch. This includes the timezone, whether the lenient mode is set, the repeated and skipped wall time settings, the days of the week when the weekend starts and ceases and the times where such transitions occur. It may also include other calendar specific settings, such as the Gregorian/Julian transition instant.

参数

cal

The IntlCalendar resource.

other

The other calendar against which the comparison is to be made.

返回值

Assuming there are no argument errors, returns TRUE iif the calendars are equivalent except possibly for their set time.

范例

Example #1 IntlCalendar::isEquivalentTo()

<?php
$cal1 = IntlCalendar::createInstance('Europe/Lisbon', 'pt_PT');
$cal2 = IntlCalendar::createInstance('Europe/Lisbon', 'es_ES');
$cal2->clear();

var_dump($cal1->isEquivalentTo($cal2)); // true

$cal3 = IntlCalendar::createInstance('Europe/Lisbon', 'en_US');
var_dump($cal1->isEquivalentTo($cal3)); // false
var_dump($cal1->getFirstDayOfWeek(),    // 2 (Monday)
$cal3->getFirstDayOfWeek());            // 1 (Sunday)

以上例程会输出：

bool(true)
bool(false)
int(2)
int(1)

参见

  • IntlCalendar::equals() - Compare time of two IntlCalendar objects for equality

IntlCalendar::inDaylightTime
IntlCalendar::isLenient
IntlCalendar


Whether date/time interpretation is in lenient mode

IntlCalendar::isEquivalentTo
IntlCalendar::isSet
IntlCalendar
PHP Manual

IntlCalendar::isLenient

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::isLenient — Whether date/time interpretation is in lenient mode

说明

面向对象风格

public bool IntlCalendar::isLenient ( void )

过程化风格

bool intlcal_is_lenient ( IntlCalendar $cal )

Returns whether the current date/time interpretations is lenient (the default). If that is case, some out of range values for fields will be accepted instead of raising an error.

参数

cal

The IntlCalendar resource.

返回值

A bool representing whether the calendar is set to lenient mode.

范例

Example #1 IntlCalendar::isLenient()

<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'pt_PT');
ini_set('intl.use_exceptions', '1');

$cal = new IntlGregorianCalendar(2013, 6 /* July */, 1);
var_dump(IntlDateFormatter::formatObject($cal), // 01/07/2013, 00:00:00
$cal->isLenient()); // true

$cal->set(IntlCalendar::FIELD_DAY_OF_MONTH, 33);
var_dump(IntlDateFormatter::formatObject($cal)); // 02/08/2013, 00:00:00

$cal->setLenient(false);
var_dump($cal->isLenient()); // false
$cal->set(IntlCalendar::FIELD_DAY_OF_MONTH, 33);
var_dump(IntlDateFormatter::formatObject($cal)); // error

以上例程会输出：

string(20) "01/07/2013, 00:00:00"
bool(true)
string(20) "02/08/2013, 00:00:00"
bool(false)

Fatal error: Uncaught exception 'IntlException' with message 'datefmt_format_object: error obtaining instant from IntlCalendar' in /home/foobar/example.php:16
Stack trace:
#0 /home/foobar/example.php(16): IntlDateFormatter::formatObject(Object(IntlGregorianCalendar))
#1 {main}
  thrown in /home/foobar/example.php on line 16

IntlCalendar::isEquivalentTo
IntlCalendar::isSet
IntlCalendar


Whether a field is set

IntlCalendar::isLenient
IntlCalendar::isWeekend
IntlCalendar
PHP Manual

IntlCalendar::isSet

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::isSet — Whether a field is set

说明

面向对象风格

public bool IntlCalendar::isSet ( int $field )

过程化风格

bool intlcal_is_set ( IntlCalendar $cal , int $field )

Returns whether a field is set (as opposed to clear). Set fields take priority over unset fields and their default values when the date/time is being calculated. Fields set later take priority over fields set earlier.

参数

cal

The IntlCalendar resource.

field

One of the IntlCalendar date/time field constants. These are integer values between 0 and IntlCalendar::FIELD_COUNT.

返回值

Assuming there are no argument errors, returns TRUE iif the field is set.

范例

See the example on IntlCalendar::clear().

参见

  • IntlCalendar::clear() - Clear a field or all fields
  • IntlCalendar::set() - Set a time field or several common fields at once

IntlCalendar::isLenient
IntlCalendar::isWeekend
IntlCalendar


Whether a certain date/time is in the weekend

IntlCalendar::isSet
IntlCalendar::roll
IntlCalendar
PHP Manual

IntlCalendar::isWeekend

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::isWeekend — Whether a certain date/time is in the weekend

说明

面向对象风格

public bool IntlCalendar::isWeekend ([ float $date = NULL ] )

过程化风格

bool intlcal_is_weekend ( IntlCalendar $cal [, float $date = NULL ] )

Returns whether either the obejct?s current time or the provided timestamp occur during a weekend in this object?s calendar system.

This function requires ICU 4.4 or later.

参数

cal

The IntlCalendar resource.

date

An optional timestamp representing the number of milliseconds since the epoch, excluding leap seconds. If NULL, this object?s current time is used instead.

返回值

A bool indicating whether the given or this object?s time occurs in a weekend.

The value FALSE may also be returned on failure, for instance after giving a date out of bounds on non-lenient mode; use exceptions or query intl_get_error_code() to disambiguate.

范例

Example #1 IntlCalendar::isWeekend()

<?php
ini_set('date.timezone', 'Europe/Lisbon');

$cal = new IntlGregorianCalendar(NULL, 'en_US');
$cal->set(2013, 6 /* July */, 7); // a Sunday

var_dump($cal->isWeekend()); // true
var_dump($cal->isWeekend(strtotime('2013-07-01 00:00:00'))); // false, Monday

$cal = new IntlGregorianCalendar(NULL, 'ar_SA');
$cal->set(2013, 6 /* July */, 7); // a Sunday
var_dump($cal->isWeekend()); // false, Sunday not in weekend in this calendar

参见

  • IntlCalendar::getDayOfWeekType() - Tell whether a day is a weekday, weekend or a day that has a transition between the two
  • IntlCalendar::getWeekendTransition() - Get time of the day at which weekend begins or ends

IntlCalendar::isSet
IntlCalendar::roll
IntlCalendar


Add value to field without carrying into more significant fields

IntlCalendar::isWeekend
IntlCalendar::set
IntlCalendar
PHP Manual

IntlCalendar::roll

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::roll — Add value to field without carrying into more significant fields

说明

面向对象风格

public bool IntlCalendar::roll ( int $field , mixed $amountOrUpOrDown )

过程化风格

bool intlcal_roll ( IntlCalendar $cal , int $field , mixed $amountOrUpOrDown )

Adds a (signed) amount to a field. The difference with respect to IntlCalendar::add() is that when the field value overflows, it does not carry into more significant fields.

参数

cal

The IntlCalendar resource.

field

One of the IntlCalendar date/time field constants. These are integer values between 0 and IntlCalendar::FIELD_COUNT.

amountOrUpOrDown

The (signed) amount to add to the field, TRUE for rolling up (adding 1), or FALSE for rolling down (subtracting 1).

返回值

Returns TRUE on success or FALSE on failure.

范例

Example #1 IntlCalendar::roll()

<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'pt_PT');

$cal = new IntlGregorianCalendar(2013, 5 /* June */, 30);

$cal->add(IntlCalendar::FIELD_DAY_OF_MONTH, 1);
var_dump(IntlDateFormatter::formatObject($cal)); // "01/07/2013, 00:00:00"

$cal->set(2013, 5 /* June */, 30);
$cal->roll(IntlCalendar::FIELD_DAY_OF_MONTH, true); // roll up, same as rolling +1
var_dump(IntlDateFormatter::formatObject($cal)); // "01/06/2013, 00:00:00"

以上例程会输出：

string(20) "01/07/2013, 00:00:00"
string(20) "01/06/2013, 00:00:00"

参见

  • IntlCalendar::add() - Add a (signed) amount of time to a field
  • IntlCalendar::set() - Set a time field or several common fields at once

IntlCalendar::isWeekend
IntlCalendar::set
IntlCalendar


Set a time field or several common fields at once

IntlCalendar::roll
IntlCalendar::setFirstDayOfWeek
IntlCalendar
PHP Manual

IntlCalendar::set

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::set — Set a time field or several common fields at once

说明

面向对象风格

public bool IntlCalendar::set ( int $field , int $value )
public bool IntlCalendar::set ( int $year , int $month [, int $dayOfMonth = NULL [, int $hour = NULL [, int $minute = NULL [, int $second = NULL ]]]] )

过程化风格

bool intlcal_set ( IntlCalendar $cal , int $field , int $value )
bool intlcal_set ( IntlCalendar $cal , int $year , int $month [, int $dayOfMonth = NULL [, int $hour = NULL [, int $minute = NULL [, int $second = NULL ]]]] )

Sets either a specific field to the given value, or sets at once several common fields. The range of values that are accepted depend on whether the calendar is using the lenient mode.

For fields that conflict, the fields that are set later have priority.

This method cannot be called with exactly four arguments.

参数

cal

The IntlCalendar resource.

field

One of the IntlCalendar date/time field constants. These are integer values between 0 and IntlCalendar::FIELD_COUNT.

value

The new value of the given field.

year

The new value for IntlCalendar::FIELD_YEAR.

month

The new value for IntlCalendar::FIELD_MONTH.

dayOfMonth

The new value for IntlCalendar::FIELD_DAY_OF_MONTH. The month sequence is zero-based, i.e., January is represented by 0, February by 1, ..., December is 11 and Undecember (if the calendar has it) is 12.

hour

The new value for IntlCalendar::FIELD_HOUR_OF_DAY.

minute

The new value for IntlCalendar::FIELD_MINUTE.

second

The new value for IntlCalendar::FIELD_SECOND.

返回值

Returns TRUE on success and FALSE on failure.

范例

Example #1 IntlCalendar::set()

<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'pt_PT');

//Calls made later have priority
$cal = new IntlGregorianCalendar(2013, 6 /* July */, 1);
$cal->set(IntlCalendar::FIELD_YEAR, 2012);
$cal->set(IntlCalendar::FIELD_EXTENDED_YEAR, 2011);
var_dump(IntlDateFormatter::formatObject($cal));

$cal = new IntlGregorianCalendar(2013, 6 /* July */, 1);
$cal->set(IntlCalendar::FIELD_YEAR, 2012);
$cal->set(IntlCalendar::FIELD_EXTENDED_YEAR, 2011);
//the time has not been recalculated yet. If we clear the extended year,
//the year set before will be used
$cal->clear(IntlCalendar::FIELD_EXTENDED_YEAR);
var_dump(IntlDateFormatter::formatObject($cal));

以上例程会输出：

string(20) "01/07/2011, 00:00:00"
string(20) "01/07/2012, 00:00:00"

参见

  • IntlCalendar::get() - Get the value for a field
  • IntlCalendar::add() - Add a (signed) amount of time to a field
  • IntlCalendar::roll() - Add value to field without carrying into more significant fields

IntlCalendar::roll
IntlCalendar::setFirstDayOfWeek
IntlCalendar


Set the day on which the week is deemed to start

IntlCalendar::set
IntlCalendar::setLenient
IntlCalendar
PHP Manual

IntlCalendar::setFirstDayOfWeek

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::setFirstDayOfWeek — Set the day on which the week is deemed to start

说明

面向对象风格

public bool IntlCalendar::setFirstDayOfWeek ( int $dayOfWeek )

过程化风格

bool intlcal_set_first_day_of_week ( IntlCalendar $cal , int $dayOfWeek )

Defines the day of week deemed to start the week. This affects the behavior of fields that depend on the concept of week start and end such as IntlCalendar::FIELD_WEEK_OF_YEAR and IntlCalendar::FIELD_YEAR_WOY.

参数

cal

The IntlCalendar resource.

dayOfWeek

One of the constants IntlCalendar::DOW_SUNDAY,
IntlCalendar::DOW_MONDAY, ...,
IntlCalendar::DOW_SATURDAY.

返回值

Returns TRUE on success. Failure can only happen due to invalid parameters.

范例

Example #1 IntlCalendar::setFirstDayOfWeek()

<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'es_ES');

$cal = IntlCalendar::createInstance();
$cal->set(2013, 5 /* June */, 30); // A Sunday

var_dump($cal->getFirstDayOfWeek()); // 2 (Monday)

echo IntlDateFormatter::formatObject($cal, <<<EOD
'local day of week: 'cc'
week of month    : 'W'
week of year     : 'ww
EOD
), "\n";

$cal->setFirstDayOfWeek(IntlCalendar::DOW_SUNDAY);

echo IntlDateFormatter::formatObject($cal, <<<EOD
'local day of week: 'cc'
week of month    : 'W'
week of year     : 'ww
EOD
), "\n";

以上例程会输出：

int(2)
local day of week: 7
week of month    : 4
week of year     : 26
local day of week: 1
week of month    : 5
week of year     : 27

IntlCalendar::set
IntlCalendar::setLenient
IntlCalendar


Set whether date/time interpretation is to be lenient

IntlCalendar::setFirstDayOfWeek
IntlCalendar::setMinimalDaysInFirstWeek
IntlCalendar
PHP Manual

IntlCalendar::setLenient

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::setLenient — Set whether date/time interpretation is to be lenient

说明

面向对象风格

public ReturnType IntlCalendar::setLenient ( string $isLenient )

过程化风格

ReturnType intlcal_set_lenient ( IntlCalendar $cal , string $isLenient )

Defines whether the calendar is 'lenient mode'. In such a mode, some of out-of-bounds values for some fields are accepted, the behavior being similar to that of IntlCalendar::add() (i.e., the value wraps around, carrying into more significant fields each time). If the lenient mode is off, then such values will generate an error.

参数

cal

The IntlCalendar resource.

isLenient

Use TRUE to activate the lenient mode; FALSE otherwise.

返回值

Returns TRUE on success. Failure can only happen due to invalid parameters.

范例

See the example in IntlCalendar::isLenient().

IntlCalendar::setFirstDayOfWeek
IntlCalendar::setMinimalDaysInFirstWeek
IntlCalendar


Set minimal number of days the first week in a year or month can have

IntlCalendar::setLenient
IntlCalendar::setRepeatedWallTimeOption
IntlCalendar
PHP Manual

IntlCalendar::setMinimalDaysInFirstWeek

(No version information available, might only be in Git)

IntlCalendar::setMinimalDaysInFirstWeek — Set minimal number of days the first week in a year or month can have

说明

面向对象风格

public bool IntlCalendar::setMinimalDaysInFirstWeek ( int $minimalDays )

过程化风格

bool intlcal_get_minimal_days_in_first_week ( IntlCalendar $cal , int $minimalDays )

Sets the smallest number of days the first week of a year or month must have in the new year or month. For instance, in the Gregorian calendar, if this value is 1, then the first week of the year will necessarily include January 1st, while if this value is 7, then the week with January 1st will be the first week of the year only if the day of the week for January 1st matches the day of the week returned by IntlCalendar::getFirstDayOfWeek(); otherwise it will be the previous year?s last week.

参数

cal

The IntlCalendar resource.

minimalDays

The number of minimal days to set.

返回值

TRUE on success, FALSE on failure.

IntlCalendar::setLenient
IntlCalendar::setRepeatedWallTimeOption
IntlCalendar


Set behavior for handling repeating wall times at negative timezone offset transitions

IntlCalendar::setMinimalDaysInFirstWeek
IntlCalendar::setSkippedWallTimeOption
IntlCalendar
PHP Manual

IntlCalendar::setRepeatedWallTimeOption

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::setRepeatedWallTimeOption — Set behavior for handling repeating wall times at negative timezone offset transitions

说明

面向对象风格

public bool IntlCalendar::setRepeatedWallTimeOption ( int $wallTimeOption )

过程化风格

bool intlcal_set_repeated_wall_time_option ( IntlCalendar $cal , int $wallTimeOption )

Sets the current strategy for dealing with wall times that are repeated whenever the clock is set back during dailight saving time end transitions. The default value is IntlCalendar::WALLTIME_LAST (take the post-DST instant). The other possible value is IntlCalendar::WALLTIME_FIRST (take the instant that occurs during DST).

This function requires ICU 4.9 or later.

参数

cal

The IntlCalendar resource.

wallTimeOption

One of the constants IntlCalendar::WALLTIME_FIRST or IntlCalendar::WALLTIME_LAST.

返回值

Returns TRUE on success. Failure can only happen due to invalid parameters.

范例

See the example on IntlCalendar::getRepeatedWallTimeOption().

参见

  • intlCalendar::getRepeatedWallTimeOption() - Get behavior for handling repeating wall time
  • intlCalendar::setSkippedWallTimeOption() - Set behavior for handling skipped wall times at positive timezone offset transitions
  • intlCalendar::getSkippedWallTimeOption() - Get behavior for handling skipped wall time

IntlCalendar::setMinimalDaysInFirstWeek
IntlCalendar::setSkippedWallTimeOption
IntlCalendar


Set behavior for handling skipped wall times at positive timezone offset transitions

IntlCalendar::setRepeatedWallTimeOption
IntlCalendar::setTime
IntlCalendar
PHP Manual

IntlCalendar::setSkippedWallTimeOption

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::setSkippedWallTimeOption — Set behavior for handling skipped wall times at positive timezone offset transitions

说明

面向对象风格

public bool IntlCalendar::setSkippedWallTimeOption ( int $wallTimeOption )

过程化风格

bool intlcal_set_skipped_wall_time_option ( IntlCalendar $cal , int $wallTimeOption )

Sets the current strategy for dealing with wall times that are skipped whenever the clock is forwarded during dailight saving time start transitions. The default value is IntlCalendar::WALLTIME_LAST (take it as being the same instant as the one when the wall time is one hour more). Alternative values are IntlCalendar::WALLTIME_FIRST (same instant as the one with a wall time of one hour less) and IntlCalendar::WALLTIME_NEXT_VALID (same instant as when DST begins).

This affects only the instant represented by the calendar (as reported by IntlCalendar::getTime()), the field values will not be rewritten accordingly.

The calendar must be lenient for this option to have any effect, otherwise attempting to set a non-existing time will cause an error.

This function requires ICU 4.9 or later.

参数

cal

The IntlCalendar resource.

wallTimeOption

One of the constants IntlCalendar::WALLTIME_FIRST,
IntlCalendar::WALLTIME_LAST or
IntlCalendar::WALLTIME_NEXT_VALID.

返回值

Returns TRUE on success. Failure can only happen due to invalid parameters.

范例

See the example on IntlCalendar::getSkippedWallTimeOption().

参见

  • intlCalendar::getSkippedWallTimeOption() - Get behavior for handling skipped wall time
  • intlCalendar::setRepeatedWallTimeOption() - Set behavior for handling repeating wall times at negative timezone offset transitions
  • intlCalendar::getRepeatedWallTimeOption() - Get behavior for handling repeating wall time

IntlCalendar::setRepeatedWallTimeOption
IntlCalendar::setTime
IntlCalendar


Set the calendar time in milliseconds since the epoch

IntlCalendar::setSkippedWallTimeOption
IntlCalendar::setTimeZone
IntlCalendar
PHP Manual

IntlCalendar::setTime

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::setTime — Set the calendar time in milliseconds since the epoch

说明

面向对象风格

public bool IntlCalendar::setTime ( float $date )

过程化风格

bool intlcal_set_time ( IntlCalendar $cal , float $date )

Sets the instant represented by this object. The instant is represented by a float whose value should be an integer number of milliseconds since the epoch (1 Jan 1970 00:00:00.000 UTC), ignoring leap seconds. All the field values will be recalculated accordingly.

参数

cal

The IntlCalendar resource.

date

An instant represented by the number of number of milliseconds between such instant and the epoch, ignoring leap seconds.

返回值

Returns TRUE on success and FALSE on failure.

范例

Example #1 IntlCalendar::setTime()

<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'fr_FR');

$cal = new IntlGregorianCalendar(2013, 5 /* May */, 1, 12, 0, 0);

echo IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL), "\n";

/* In Europe/Lisbon, on 2013-10-27 at 0200, the clock goes back one hour and
   the timezone from UTC+01 to UTC+00 */

$cal->setTime(strtotime('2013-10-27 00:30:00 UTC') * 1000.);

echo IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL), "\n";

$cal->setTime(strtotime('2013-10-27 01:30:00 UTC') * 1000.);

echo IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL), "\n";

以上例程会输出：

samedi 1 juin 2013 12:00:00 heure avancée d'Europe de l'Ouest
dimanche 27 octobre 2013 01:30:00 heure avancée d'Europe de l'Ouest
dimanche 27 octobre 2013 01:30:00 heure normale d'Europe de l'Ouest

IntlCalendar::setSkippedWallTimeOption
IntlCalendar::setTimeZone
IntlCalendar


Set the timezone used by this calendar

IntlCalendar::setTime
IntlCalendar::toDateTime
IntlCalendar
PHP Manual

IntlCalendar::setTimeZone

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlCalendar::setTimeZone — Set the timezone used by this calendar

说明

面向对象风格

public bool IntlCalendar::setTimeZone ( mixed $timeZone )

过程化风格

bool intlcal_set_time_zone ( IntlCalendar $cal , mixed $timeZone )

Defines a new timezone for this calendar. The time represented by the object is preserved to the detriment of the field values.

参数

cal

The IntlCalendar resource.

timeZone

The new timezone to be used by this calendar. It can be specified in the following ways:

  • NULL, in which case the default timezone will be used, as specified in the ini setting date.timezone or through the function date_default_timezone_set() and as returned by date_default_timezone_get().

  • An IntlTimeZone, which will be used directly.

  • A DateTimeZone. Its identifier will be extracted and an ICU timezone object will be created; the timezone will be backed by ICU?s database, not PHP?s.

  • A string, which should be a valid ICU timezone identifier. See IntlTimeZone::createTimeZoneIDEnumeration(). Raw offsets such as "GMT+08:30" are also accepted.

返回值

Returns TRUE on success and FALSE on failure.

范例

Example #1 IntlCalendar::setTimeZone()

<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'es_ES');

$cal = new IntlGregorianCalendar(2013, 5 /* May */, 1, 12, 0, 0);

echo IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL), "\n";
echo "(instant {$cal->getTime()})\n";

$cal->setTimeZone(IntlTimeZone::getGMT());
echo IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL), "\n";
echo "(instant {$cal->getTime()})\n";

$cal->setTimeZone('GMT+03:33');
echo IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL), "\n";
echo "(instant {$cal->getTime()})\n";

以上例程会输出：

sábado, 1 de junio de 2013 12:00:00 Hora de verano de Europa occidental
(instant 1370084400000)
sábado, 1 de junio de 2013 11:00:00 GMT
(instant 1370084400000)
sábado, 1 de junio de 2013 14:33:00 GMT+03:33
(instant 1370084400000)

IntlCalendar::setTime
IntlCalendar::toDateTime
IntlCalendar


Convert an IntlCalendar into a DateTime object

IntlCalendar::setTimeZone
IntlTimeZone
IntlCalendar
PHP Manual

IntlCalendar::toDateTime

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a2)

IntlCalendar::toDateTime — Convert an IntlCalendar into a DateTime object

说明

面向对象风格

public DateTime IntlCalendar::toDateTime ( void )

过程化风格

DateTime intlcal_to_date_time ( IntlCalendar $cal )

Create a DateTime object that represents the same instant (up to second precision, with a rounding error of less than 1 second) and has an analog timezone to this object (the difference being DateTime?s timezone will be backed by PHP?s timezone while IntlCalendar?s timezone is backed by ICU?s).

参数

cal

The IntlCalendar resource.

返回值

A DateTime object with the same timezone as this object (though using PHP?s database instead of ICU?s) and the same time, except for the smaller precision (second precision instead of millisecond). Returns FALSE on failure.

范例

Example #1 IntlCalendar::toDateTime()

<?php
ini_set('date.timezone', 'UTC');
ini_set('intl.default_locale', 'pt_PT');

$cal = IntlCalendar::createInstance('Europe/Lisbon'); //current time

$dt = $cal->toDateTime();
print_r($dt);

以上例程会输出：

DateTime Object
(
    [date] => 2013-07-02 00:29:13
    [timezone_type] => 3
    [timezone] => Europe/Lisbon
)

参见

  • IntlCalendar::fromDateTime() - Create an IntlCalendar from a DateTime object or string
  • IntlCalendar::getTime() - Get time currently represented by the object
  • IntlCalendar::createInstance() - Create a new IntlCalendar
  • DateTime:__construct()

IntlCalendar::setTimeZone
IntlTimeZone
IntlCalendar


The IntlTimeZone class

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

简介

类摘要

IntlTimeZone {
/* Constants */
const integer DISPLAY_SHORT = 1 ;
const integer DISPLAY_LONG = 2 ;
/* 方法 */
public static integer countEquivalentIDs ( string $zoneId )
public static IntlTimeZone createDefault ( void )
public static IntlIterator createEnumeration ([ mixed $countryOrRawOffset ] )
public static IntlTimeZone createTimeZone ( string $zoneId )
public static IntlTimeZone fromDateTimeZone ( DateTimeZone $zoneId )
public static string getCanonicalID ( string $zoneId [, bool &$isSystemID ] )
public string getDisplayName ([ bool $isDaylight [, integer $style [, string $locale ]]] )
public integer getDSTSavings ( void )
public static string getEquivalentID ( string $zoneId , integer $index )
public integer getErrorCode ( void )
public string getErrorMessage ( void )
public static IntlTimeZone getGMT ( void )
public string getID ( void )
public integer getOffset ( float $date , bool $local , integer &$rawOffset , integer &$dstOffset )
public integer getRawOffset ( void )
public static string getTZDataVersion ( void )
public bool hasSameRules ( IntlTimeZone $otherTimeZone )
public DateTimeZone toDateTimeZone ( void )
public bool useDaylightTime ( void )
}

预定义常量

IntlTimeZone::DISPLAY_SHORT

IntlTimeZone::DISPLAY_LONG

Table of Contents

  • IntlTimeZone::countEquivalentIDs — Get the number of IDs in the equivalency group that includes the given ID
  • IntlTimeZone::createDefault — Create a new copy of the default timezone for this host
  • IntlTimeZone::createEnumeration — Get an enumeration over time zone IDs associated with the given country or offset
  • IntlTimeZone::createTimeZone — Create a timezone object for the given ID
  • IntlTimeZone::fromDateTimeZone — Create a timezone object from DateTimeZone
  • IntlTimeZone::getCanonicalID — Get the canonical system timezone ID or the normalized custom time zone ID for the given time zone ID
  • IntlTimeZone::getDisplayName — Get a name of this time zone suitable for presentation to the user
  • IntlTimeZone::getDSTSavings — Get the amount of time to be added to local standard time to get local wall clock time
  • IntlTimeZone::getEquivalentID — Get an ID in the equivalency group that includes the given ID
  • IntlTimeZone::getErrorCode — Get last error code on the object
  • IntlTimeZone::getErrorMessage — Get last error message on the object
  • IntlTimeZone::getGMT — Create GMT (UTC) timezone
  • IntlTimeZone::getID — Get timezone ID
  • IntlTimeZone::getOffset — Get the time zone raw and GMT offset for the given moment in time
  • IntlTimeZone::getRawOffset — Get the raw GMT offset (before taking daylight savings time into account
  • IntlTimeZone::getTZDataVersion — Get the timezone data version currently used by ICU
  • IntlTimeZone::hasSameRules — Check if this zone has the same rules and offset as another zone
  • IntlTimeZone::toDateTimeZone — Convert to DateTimeZone object
  • IntlTimeZone::useDaylightTime — Check if this time zone uses daylight savings time
IntlCalendar::toDateTime
IntlTimeZone::countEquivalentIDs
intl


Get the number of IDs in the equivalency group that includes the given ID

IntlTimeZone
IntlTimeZone::createDefault
IntlTimeZone
PHP Manual

IntlTimeZone::countEquivalentIDs

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlTimeZone::countEquivalentIDs — Get the number of IDs in the equivalency group that includes the given ID

说明

public static integer IntlTimeZone::countEquivalentIDs ( string $zoneId )

Warning

本函数还未编写文档，仅有参数列表。

参数

zoneId

返回值

IntlTimeZone
IntlTimeZone::createDefault
IntlTimeZone


Create a new copy of the default timezone for this host

IntlTimeZone::countEquivalentIDs
IntlTimeZone::createEnumeration
IntlTimeZone
PHP Manual

IntlTimeZone::createDefault

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlTimeZone::createDefault — Create a new copy of the default timezone for this host

说明

public static IntlTimeZone IntlTimeZone::createDefault ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlTimeZone::countEquivalentIDs
IntlTimeZone::createEnumeration
IntlTimeZone


Get an enumeration over time zone IDs associated with the given country or offset

IntlTimeZone::createDefault
IntlTimeZone::createTimeZone
IntlTimeZone
PHP Manual

IntlTimeZone::createEnumeration

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlTimeZone::createEnumeration — Get an enumeration over time zone IDs associated with the given country or offset

说明

public static IntlIterator IntlTimeZone::createEnumeration ([ mixed $countryOrRawOffset ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

countryOrRawOffset

返回值

IntlTimeZone::createDefault
IntlTimeZone::createTimeZone
IntlTimeZone


Create a timezone object for the given ID

IntlTimeZone::createEnumeration
IntlTimeZone::fromDateTimeZone
IntlTimeZone
PHP Manual

IntlTimeZone::createTimeZone

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlTimeZone::createTimeZone — Create a timezone object for the given ID

说明

public static IntlTimeZone IntlTimeZone::createTimeZone ( string $zoneId )

Warning

本函数还未编写文档，仅有参数列表。

参数

zoneId

返回值

IntlTimeZone::createEnumeration
IntlTimeZone::fromDateTimeZone
IntlTimeZone


Create a timezone object from DateTimeZone

IntlTimeZone::createTimeZone
IntlTimeZone::getCanonicalID
IntlTimeZone
PHP Manual

IntlTimeZone::fromDateTimeZone

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlTimeZone::fromDateTimeZone — Create a timezone object from DateTimeZone

说明

public static IntlTimeZone IntlTimeZone::fromDateTimeZone ( DateTimeZone $zoneId )

Warning

本函数还未编写文档，仅有参数列表。

参数

zoneId

返回值

IntlTimeZone::createTimeZone
IntlTimeZone::getCanonicalID
IntlTimeZone


Get the canonical system timezone ID or the normalized custom time zone ID for the given time zone ID

IntlTimeZone::fromDateTimeZone
IntlTimeZone::getDisplayName
IntlTimeZone
PHP Manual

IntlTimeZone::getCanonicalID

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlTimeZone::getCanonicalID — Get the canonical system timezone ID or the normalized custom time zone ID for the given time zone ID

说明

public static string IntlTimeZone::getCanonicalID ( string $zoneId [, bool &$isSystemID ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

zoneId

isSystemID

返回值

IntlTimeZone::fromDateTimeZone
IntlTimeZone::getDisplayName
IntlTimeZone


Get a name of this time zone suitable for presentation to the user

IntlTimeZone::getCanonicalID
IntlTimeZone::getDSTSavings
IntlTimeZone
PHP Manual

IntlTimeZone::getDisplayName

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlTimeZone::getDisplayName — Get a name of this time zone suitable for presentation to the user

说明

public string IntlTimeZone::getDisplayName ([ bool $isDaylight [, integer $style [, string $locale ]]] )

Warning

本函数还未编写文档，仅有参数列表。

参数

isDaylight

style

locale

返回值

IntlTimeZone::getCanonicalID
IntlTimeZone::getDSTSavings
IntlTimeZone


Get the amount of time to be added to local standard time to get local wall clock time

IntlTimeZone::getDisplayName
IntlTimeZone::getEquivalentID
IntlTimeZone
PHP Manual

IntlTimeZone::getDSTSavings

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlTimeZone::getDSTSavings — Get the amount of time to be added to local standard time to get local wall clock time

说明

public integer IntlTimeZone::getDSTSavings ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlTimeZone::getDisplayName
IntlTimeZone::getEquivalentID
IntlTimeZone


Get an ID in the equivalency group that includes the given ID

IntlTimeZone::getDSTSavings
IntlTimeZone::getErrorCode
IntlTimeZone
PHP Manual

IntlTimeZone::getEquivalentID

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlTimeZone::getEquivalentID — Get an ID in the equivalency group that includes the given ID

说明

public static string IntlTimeZone::getEquivalentID ( string $zoneId , integer $index )

Warning

本函数还未编写文档，仅有参数列表。

参数

zoneId

index

返回值

IntlTimeZone::getDSTSavings
IntlTimeZone::getErrorCode
IntlTimeZone


Get last error code on the object

IntlTimeZone::getEquivalentID
IntlTimeZone::getErrorMessage
IntlTimeZone
PHP Manual

IntlTimeZone::getErrorCode

intltz_get_error_code

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlTimeZone::getErrorCode -- intltz_get_error_code — Get last error code on the object

说明

面向对象风格 (method):

public integer IntlTimeZone::getErrorCode ( void )

过程化风格:

integer intltz_get_error_code ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlTimeZone::getEquivalentID
IntlTimeZone::getErrorMessage
IntlTimeZone


Get last error message on the object

IntlTimeZone::getErrorCode
IntlTimeZone::getGMT
IntlTimeZone
PHP Manual

IntlTimeZone::getErrorMessage

intltz_get_error_message

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlTimeZone::getErrorMessage -- intltz_get_error_message — Get last error message on the object

说明

面向对象风格 (method):

public string IntlTimeZone::getErrorMessage ( void )

过程化风格:

string intltz_get_error_message ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlTimeZone::getErrorCode
IntlTimeZone::getGMT
IntlTimeZone


Create GMT (UTC) timezone

IntlTimeZone::getErrorMessage
IntlTimeZone::getID
IntlTimeZone
PHP Manual

IntlTimeZone::getGMT

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlTimeZone::getGMT — Create GMT (UTC) timezone

说明

public static IntlTimeZone IntlTimeZone::getGMT ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlTimeZone::getErrorMessage
IntlTimeZone::getID
IntlTimeZone


Get timezone ID

IntlTimeZone::getGMT
IntlTimeZone::getOffset
IntlTimeZone
PHP Manual

IntlTimeZone::getID

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlTimeZone::getID — Get timezone ID

说明

public string IntlTimeZone::getID ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlTimeZone::getGMT
IntlTimeZone::getOffset
IntlTimeZone


Get the time zone raw and GMT offset for the given moment in time

IntlTimeZone::getID
IntlTimeZone::getRawOffset
IntlTimeZone
PHP Manual

IntlTimeZone::getOffset

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlTimeZone::getOffset — Get the time zone raw and GMT offset for the given moment in time

说明

public integer IntlTimeZone::getOffset ( float $date , bool $local , integer &$rawOffset , integer &$dstOffset )

Warning

本函数还未编写文档，仅有参数列表。

参数

date

local

rawOffset

dstOffset

返回值

IntlTimeZone::getID
IntlTimeZone::getRawOffset
IntlTimeZone


Get the raw GMT offset (before taking daylight savings time into account

IntlTimeZone::getOffset
IntlTimeZone::getTZDataVersion
IntlTimeZone
PHP Manual

IntlTimeZone::getRawOffset

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlTimeZone::getRawOffset — Get the raw GMT offset (before taking daylight savings time into account

说明

public integer IntlTimeZone::getRawOffset ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlTimeZone::getOffset
IntlTimeZone::getTZDataVersion
IntlTimeZone


Get the timezone data version currently used by ICU

IntlTimeZone::getRawOffset
IntlTimeZone::hasSameRules
IntlTimeZone
PHP Manual

IntlTimeZone::getTZDataVersion

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlTimeZone::getTZDataVersion — Get the timezone data version currently used by ICU

说明

public static string IntlTimeZone::getTZDataVersion ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlTimeZone::getRawOffset
IntlTimeZone::hasSameRules
IntlTimeZone


Check if this zone has the same rules and offset as another zone

IntlTimeZone::getTZDataVersion
IntlTimeZone::toDateTimeZone
IntlTimeZone
PHP Manual

IntlTimeZone::hasSameRules

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlTimeZone::hasSameRules — Check if this zone has the same rules and offset as another zone

说明

public bool IntlTimeZone::hasSameRules ( IntlTimeZone $otherTimeZone )

Warning

本函数还未编写文档，仅有参数列表。

参数

otherTimeZone

返回值

IntlTimeZone::getTZDataVersion
IntlTimeZone::toDateTimeZone
IntlTimeZone


Convert to DateTimeZone object

IntlTimeZone::hasSameRules
IntlTimeZone::useDaylightTime
IntlTimeZone
PHP Manual

IntlTimeZone::toDateTimeZone

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlTimeZone::toDateTimeZone — Convert to DateTimeZone object

说明

public DateTimeZone IntlTimeZone::toDateTimeZone ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlTimeZone::hasSameRules
IntlTimeZone::useDaylightTime
IntlTimeZone


Check if this time zone uses daylight savings time

IntlTimeZone::toDateTimeZone
IntlDateFormatter
IntlTimeZone
PHP Manual

IntlTimeZone::useDaylightTime

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

IntlTimeZone::useDaylightTime — Check if this time zone uses daylight savings time

说明

public bool IntlTimeZone::useDaylightTime ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlTimeZone::toDateTimeZone
IntlDateFormatter
IntlTimeZone


The IntlDateFormatter class

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

简介

Date Formatter is a concrete class that enables locale-dependent formatting/parsing of dates using pattern strings and/or canned patterns.

This class represents the ICU date formatting functionality. It allows users to display dates in a localized format or to parse strings into PHP date values using pattern strings and/or canned patterns.

Class synopsis

IntlDateFormatter {
/* 方法 */
public __construct ( string $locale , int $datetype , int $timetype [, mixed $timezone = NULL [, mixed $calendar = NULL [, string $pattern = "" ]]] )
public static IntlDateFormatter create ( string $locale , int $datetype , int $timetype [, mixed $timezone = NULL [, mixed $calendar = NULL [, string $pattern = "" ]]] )
public string format ( mixed $value )
public static string formatObject ( object $object [, mixed $format = NULL [, string $locale = NULL ]] )
int getCalendar ( void )
public int getDateType ( void )
public int getErrorCode ( void )
public string getErrorMessage ( void )
public string getLocale ([ int $which ] )
public string getPattern ( void )
public int getTimeType ( void )
public string getTimeZoneId ( void )
public IntlCalendar getCalendarObject ( void )
public IntlTimeZone getTimeZone ( void )
public bool isLenient ( void )
public array localtime ( string $value [, int &$position ] )
public int parse ( string $value [, int &$position ] )
bool setCalendar ( mixed $which )
public bool setLenient ( bool $lenient )
public bool setPattern ( string $pattern )
public bool setTimeZoneId ( string $zone )
public boolean setTimeZone ( mixed $zone )
}

参见

  • » ICU Date formatter
  • » ICU Date formats

预定义常量

These constants are used to specify different formats in the constructor for DateType and TimeType.

IntlDateFormatter::NONE (integer)
Do not include this element
IntlDateFormatter::FULL (integer)
Completely specified style (Tuesday, April 12, 1952 AD or 3:30:42pm PST)
IntlDateFormatter::LONG (integer)
Long style (January 12, 1952 or 3:30:32pm)
IntlDateFormatter::MEDIUM (integer)
Medium style (Jan 12, 1952)
IntlDateFormatter::SHORT (integer)
Most abbreviated style, only essential data (12/13/52 or 3:30pm)

The following int constants are used to specify the calendar. These calendars are all based directly on the Gregorian calendar. Non-Gregorian calendars need to be specified in locale. Examples might include locale="hi@calendar=BUDDHIST".

IntlDateFormatter::TRADITIONAL (integer)
Non-Gregorian Calendar
IntlDateFormatter::GREGORIAN (integer)
Gregorian Calendar

Table of Contents

  • IntlDateFormatter::create — Create a date formatter
  • IntlDateFormatter::format — Format the date/time value as a string
  • IntlDateFormatter::formatObject — Formats an object
  • IntlDateFormatter::getCalendar — Get the calendar type used for the IntlDateFormatter
  • IntlDateFormatter::getDateType — Get the datetype used for the IntlDateFormatter
  • IntlDateFormatter::getErrorCode — Get the error code from last operation
  • IntlDateFormatter::getErrorMessage — Get the error text from the last operation.
  • IntlDateFormatter::getLocale — Get the locale used by formatter
  • IntlDateFormatter::getPattern — Get the pattern used for the IntlDateFormatter
  • IntlDateFormatter::getTimeType — Get the timetype used for the IntlDateFormatter
  • IntlDateFormatter::getTimeZoneId — Get the timezone-id used for the IntlDateFormatter
  • IntlDateFormatter::getCalendarObject — Get copy of formatter?s calendar object
  • IntlDateFormatter::getTimeZone — Get formatter?s timezone
  • IntlDateFormatter::isLenient — Get the lenient used for the IntlDateFormatter
  • IntlDateFormatter::localtime — Parse string to a field-based time value
  • IntlDateFormatter::parse — Parse string to a timestamp value
  • IntlDateFormatter::setCalendar — Sets the calendar type used by the formatter
  • IntlDateFormatter::setLenient — Set the leniency of the parser
  • IntlDateFormatter::setPattern — Set the pattern used for the IntlDateFormatter
  • IntlDateFormatter::setTimeZoneId — Sets the time zone to use
  • IntlDateFormatter::setTimeZone — Sets formatter?s timezone
IntlTimeZone::useDaylightTime
IntlDateFormatter::create
intl


Create a date formatter

IntlDateFormatter
IntlDateFormatter::format
IntlDateFormatter
PHP Manual

IntlDateFormatter::create

datefmt_create

IntlDateFormatter::__construct

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

IntlDateFormatter::create -- datefmt_create -- IntlDateFormatter::__construct — Create a date formatter

说明

面向对象风格

public static IntlDateFormatter IntlDateFormatter::create ( string $locale , int $datetype , int $timetype [, mixed $timezone = NULL [, mixed $calendar = NULL [, string $pattern = "" ]]] )

面向对象风格 (constructor)

public IntlDateFormatter::__construct ( string $locale , int $datetype , int $timetype [, mixed $timezone = NULL [, mixed $calendar = NULL [, string $pattern = "" ]]] )

过程化风格

IntlDateFormatter datefmt_create ( string $locale , int $datetype , int $timetype [, mixed $timezone = NULL [, mixed $calendar = NULL [, string $pattern = "" ]]] )

Create a date formatter.

参数

locale

Locale to use when formatting or parsing or NULL to use the value specified in the ini setting intl.default_locale.

datetype

Date type to use (none, short, medium, long, full). This is one of the IntlDateFormatter constants. It can also be NULL, in which case ICU?s default date type will be used.

timetype

Time type to use (none, short, medium, long, full). This is one of the IntlDateFormatter constants. It can also be NULL, in which case ICU?s default time type will be used.

timezone

Time zone ID. The default (and the one used if NULL is given) is the one returned by date_default_timezone_get() or, if applicable, that of the IntlCalendar object passed for the calendar parameter. This ID must be a valid identifier on ICU?s database or an ID representing an explicit offset, such as GMT-05:30.

This can also be an IntlTimeZone or a DateTimeZone object.

calendar

Calendar to use for formatting or parsing. The default value is NULL, which corresponds to IntlDateFormatter::GREGORIAN. This can either be one of the IntlDateFormatter calendar constants or an IntlCalendar. Any IntlCalendar object passed will be clone; it will not be changed by the IntlDateFormatter. This will determine the calendar type used (gregorian, islamic, persian, etc.) and, if NULL is given for the timezone parameter, also the timezone used.

pattern

Optional pattern to use when formatting or parsing. Possible patterns are documented at » http://userguide.icu-project.org/formatparse/datetime.

返回值

The created IntlDateFormatter or FALSE in case of failure.

更新日志

版本 | 说明
5.5.0/PECL 3.0.0 | An IntlCalendar object is allowed for calendar. Objects of type IntlTimeZone and DateTimeZone are allowed for timezone. Invalid timezone identifiers (including empty strings) are no longer allowed for timezone. If NULL is given for timezone, the timezone identifier given by date_default_timezone_get() will be used instead of ICU?s default.

范例

Example #1 datefmt_create() example

<?php
$fmt = datefmt_create( "en_US" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,
    'America/Los_Angeles', IntlDateFormatter::GREGORIAN  );
echo "First Formatted output is ".datefmt_format( $fmt , 0);
$fmt = datefmt_create( "de-DE" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,
    'America/Los_Angeles',IntlDateFormatter::GREGORIAN  );
echo "Second Formatted output is ".datefmt_format( $fmt , 0);

$fmt = datefmt_create( "en_US" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,
     'America/Los_Angeles',IntlDateFormatter::GREGORIAN  ,"MM/dd/yyyy");
echo "First Formatted output with pattern is ".datefmt_format( $fmt , 0);
$fmt = datefmt_create( "de-DE" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,
     'America/Los_Angeles',IntlDateFormatter::GREGORIAN  ,"MM/dd/yyyy");
echo "Second Formatted output with pattern is ".datefmt_format( $fmt , 0);
?>

Example #2 OO example

<?php
$fmt = new IntlDateFormatter( "en_US" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,
    'America/Los_Angeles',IntlDateFormatter::GREGORIAN  );
echo "First Formatted output is ".$fmt->format(0);
$fmt = new IntlDateFormatter( "de-DE" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,
    'America/Los_Angeles',IntlDateFormatter::GREGORIAN  );
echo "Second Formatted output is ".$fmt->format(0);

$fmt = new IntlDateFormatter( "en_US" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,
     'America/Los_Angeles',IntlDateFormatter::GREGORIAN  ,"MM/dd/yyyy");
echo "First Formatted output with pattern is ".$fmt->format(0);
$fmt = new IntlDateFormatter( "de-DE" ,IntlDateFormatter::FULL, IntlDateFormatter::FULL,
      'America/Los_Angeles',IntlDateFormatter::GREGORIAN , "MM/dd/yyyy");
echo "Second Formatted output with pattern is ".$fmt->format(0);
?>

以上例程会输出：

First Formatted output is Wednesday, December 31, 1969 4:00:00 PM PT
Second Formatted output is Mittwoch, 31. Dezember 1969 16:00 Uhr GMT-08:00
First Formatted output with pattern is 12/31/1969
Second Formatted output with pattern is 12/31/1969

参见

  • datefmt_format() - Format the date/time value as a string
  • datefmt_parse() - Parse string to a timestamp value
  • datefmt_get_error_code() - Get the error code from last operation
  • datefmt_get_error_message() - Get the error text from the last operation.

IntlDateFormatter
IntlDateFormatter::format
IntlDateFormatter


Format the date/time value as a string

IntlDateFormatter::create
IntlDateFormatter::formatObject
IntlDateFormatter
PHP Manual

IntlDateFormatter::format

datefmt_format

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

IntlDateFormatter::format -- datefmt_format — Format the date/time value as a string

说明

面向对象风格

public string IntlDateFormatter::format ( mixed $value )

过程化风格

string datefmt_format ( IntlDateFormatter $fmt , mixed $value )

Formats the time value as a string.

参数

fmt

The date formatter resource.

value

Value to format. This may be a DateTime object, an IntlCalendar object, a numeric type representing a (possibly fractional) number of seconds since epoch or an array in the format output by localtime().

If a DateTime or an IntlCalendar object is passed, its timezone is not considered. The object will be formatted using the formater?s configured timezone. If one wants to use the timezone of the object to be formatted, IntlDateFormatter::setTimeZone() must be called before with the object?s timezone. Alternatively, the static function IntlDateFormatter::formatObject() may be used instead.

返回值

The formatted string or, if an error occurred, FALSE.

更新日志

版本 | 说明
5.5.0/PECL 3.0.0 | Support for providing IntlCalendar objects to the value parameter was added.
5.3.4 | Support for providing DateTime objects to the value parameter was added.

范例

Example #1 datefmt_format() example

<?php
$fmt = datefmt_create(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'First Formatted output is ' . datefmt_format($fmt, 0);

$fmt = datefmt_create(
    'de-DE',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'Second Formatted output is ' . datefmt_format($fmt, 0);

$fmt = datefmt_create(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN,
    'MM/dd/yyyy'
);
echo 'First Formatted output with pattern is ' . datefmt_format($fmt, 0);

$fmt = datefmt_create(
    'de-DE',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN,
    'MM/dd/yyyy'
);
echo "Second Formatted output with pattern is " . datefmt_format($fmt, 0);
?>

Example #2 OO example

<?php
$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'First Formatted output is ' . $fmt->format(0);

$fmt = new IntlDateFormatter(
    'de-DE',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'Second Formatted output is ' . $fmt->format(0);

$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN,
    'MM/dd/yyyy'
);
echo 'First Formatted output with pattern is ' . $fmt->format(0);

$fmt = new IntlDateFormatter(
    'de-DE',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN,
    'MM/dd/yyyy'
);
echo 'Second Formatted output with pattern is ' . $fmt->format(0);
?>

以上例程会输出：

First Formatted output is Wednesday, December 31, 1969 4:00:00 PM PT
Second Formatted output is Mittwoch, 31. Dezember 1969 16:00 Uhr GMT-08:00
First Formatted output with pattern is 12/31/1969
Second Formatted output with pattern is 12/31/1969

Example #3 With IntlCalendar object

<?php
$tz = reset(iterator_to_array(IntlTimeZone::createEnumeration('FR')));
$formatter = IntlDateFormatter::create(
    'fr_FR',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    $tz,
    IntlDateFormatter::GREGORIAN
);

$cal = IntlCalendar::createInstance($tz, '@calendar=islamic-civil');
$cal->set(IntlCalendar::FIELD_MONTH, 8); //9th month, Ramadan
$cal->set(IntlCalendar::FIELD_DAY_OF_MONTH, 1); //1st day
$cal->clear(IntlCalendar::FIELD_HOUR_OF_DAY);
$cal->clear(IntlCalendar::FIELD_MINUTE);
$cal->clear(IntlCalendar::FIELD_SECOND);
$cal->clear(IntlCalendar::FIELD_MILLISECOND);

echo "In this islamic year, Ramadan started/will start on:\n\t",
        $formatter->format($cal), "\n";

//It?s the formatter?s timezone that is used:
$formatter->setTimeZone('Asia/Tokyo');
echo "After changing timezone:\n\t",
        $formatter->format($cal), "\n";

以上例程会输出：

In this islamic year, Ramadan started/will start on:
    mardi 9 juillet 2013 19:00:00 heure avancée d'Europe centrale
After changing timezone:
    mercredi 10 juillet 2013 02:00:00 heure normale du Japon

参见

  • datefmt_create() - Create a date formatter
  • datefmt_parse() - Parse string to a timestamp value
  • datefmt_get_error_code() - Get the error code from last operation
  • datefmt_get_error_message() - Get the error text from the last operation.
  • datefmt_format_object() - Formats an object

IntlDateFormatter::create
IntlDateFormatter::formatObject
IntlDateFormatter


Formats an object

IntlDateFormatter::format
IntlDateFormatter::getCalendar
IntlDateFormatter
PHP Manual

IntlDateFormatter::formatObject

datefmt_format_object

(PHP 5 >= 5.5.0, PHP 7, PECL intl >= 3.0.0)

IntlDateFormatter::formatObject -- datefmt_format_object — Formats an object

说明

面向对象风格

public static string IntlDateFormatter::formatObject ( object $object [, mixed $format = NULL [, string $locale = NULL ]] )

过程化风格

public static string datefmt_format_object ( object $object [, mixed $format = NULL [, string $locale = NULL ]] )

This function allows formatting an IntlCalendar or DateTime object without first explicitly creating a IntlDateFormatter object.

The temporary IntlDateFormatter that will be created will take the timezone from the passed in object. The timezone database bundled with PHP will not be used - ICU's will be used instead. The timezone identifier used in DateTime objects must therefore also exist in ICU's database.

参数

object

An object of type IntlCalendar or DateTime. The timezone information in the object will be used.

format

How to format the date/time. This can either be an array with two elements (first the date style, then the time style, these being one of the constants IntlDateFormatter::NONE, IntlDateFormatter::SHORT, IntlDateFormatter::MEDIUM, IntlDateFormatter::LONG, IntlDateFormatter::FULL), a long with the value of one of these constants (in which case it will be used both for the time and the date) or a string with the format described in » the ICU documentation. If NULL, the default style will be used.

locale

The locale to use, or NULL to use the default one.

返回值

A string with result 或者在失败时返回 FALSE.

范例

Example #1 IntlDateFormatter::formatObject() examples

<?php
/* default timezone is irrelevant; timezone taken from the object */
ini_set('date.timezone', 'UTC');
/* default locale is taken from this ini setting */
ini_set('intl.default_locale', 'fr_FR');

$cal = IntlCalendar::fromDateTime("2013-06-06 17:05:06 Europe/Dublin");
echo "default:\n\t",
        IntlDateFormatter::formatObject($cal),
        "\n";

echo "long \$format (full):\n\t",
        IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL),
        "\n";

echo "array \$format (none, full):\n\t",
        IntlDateFormatter::formatObject($cal, array(
                IntlDateFormatter::NONE,
                IntlDateFormatter::FULL)),
        "\n";

echo "string \$format (d 'of' MMMM y):\n\t",
        IntlDateFormatter::formatObject($cal, "d 'of' MMMM y", 'en_US'),
        "\n";

echo "with DateTime:\n\t",
        IntlDateFormatter::formatObject(
                new DateTime("2013-09-09 09:09:09 Europe/Madrid"),
                IntlDateFormatter::FULL,
                'es_ES'),
        "\n";

以上例程会输出：

default:
    6 juin 2013 17:05:06
long $format (full):
    jeudi 6 juin 2013 17:05:06 heure d'été irlandaise
array $format (none, full):
    17:05:06 heure d'été irlandaise
string $format (d 'of' MMMM y):
    6 of June 2013
with DateTime:
    lunes, 9 de septiembre de 2013 09:09:09 Hora de verano de Europa central

IntlDateFormatter::format
IntlDateFormatter::getCalendar
IntlDateFormatter


Get the calendar type used for the IntlDateFormatter

IntlDateFormatter::formatObject
IntlDateFormatter::getDateType
IntlDateFormatter
PHP Manual

IntlDateFormatter::getCalendar

datefmt_get_calendar

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

IntlDateFormatter::getCalendar -- datefmt_get_calendar — Get the calendar type used for the IntlDateFormatter

说明

面向对象风格

int IntlDateFormatter::getCalendar ( void )

过程化风格

int datefmt_get_calendar ( IntlDateFormatter $fmt )

参数

fmt

The formatter resource

返回值

The calendar type being used by the formatter. Either IntlDateFormatter::TRADITIONAL or IntlDateFormatter::GREGORIAN.

范例

Example #1 datefmt_get_calendar() example

<?php
$fmt = datefmt_create(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'calendar of the formatter is : ' . datefmt_get_calendar($fmt);
datefmt_set_calendar($fmt, IntlDateFormatter::TRADITIONAL);
echo 'Now calendar of the formatter is : ' . datefmt_get_calendar($fmt);
?>

Example #2 OO example

<?php
$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'calendar of the formatter is : ' . $fmt->getCalendar();
$fmt->setCalendar(IntlDateFormatter::TRADITIONAL);
echo 'Now calendar of the formatter is : ' . $fmt->getCalendar();

?>

以上例程会输出：

calendar of the formatter is : 1
Now calendar of the formatter is : 0

参见

  • datefmt_get_calendar_object() - Get copy of formatter?s calendar object
  • datefmt_set_calendar() - Sets the calendar type used by the formatter
  • datefmt_create() - Create a date formatter

IntlDateFormatter::formatObject
IntlDateFormatter::getDateType
IntlDateFormatter


Get the datetype used for the IntlDateFormatter

IntlDateFormatter::getCalendar
IntlDateFormatter::getErrorCode
IntlDateFormatter
PHP Manual

IntlDateFormatter::getDateType

datefmt_get_datetype

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

IntlDateFormatter::getDateType -- datefmt_get_datetype — Get the datetype used for the IntlDateFormatter

说明

面向对象风格

public int IntlDateFormatter::getDateType ( void )

过程化风格

int datefmt_get_datetype ( IntlDateFormatter $fmt )

Returns date type used by the formatter.

参数

fmt

The formatter resource.

返回值

The current date type value of the formatter.

范例

Example #1 datefmt_get_datetype() example

<?php
$fmt = datefmt_create(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'datetype of the formatter is : ' . datefmt_get_datetype($fmt);
echo 'First Formatted output with datetype is ' . datefmt_format($fmt, 0);

$fmt = datefmt_create(
    'en_US',
    IntlDateFormatter::SHORT,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'Now datetype of the formatter is : ' . datefmt_get_datetype($fmt);
echo 'Second Formatted output with datetype is ' . datefmt_format($fmt, 0);

?>

Example #2 OO example

<?php
$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'datetype of the formatter is : ' . $fmt->getDateType();
echo 'First Formatted output is ' . $fmt->format(0);
$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::SHORT,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'Now datetype of the formatter is : ' . $fmt->getDateType();
echo 'Second Formatted output is ' . $fmt->format(0);

?>

以上例程会输出：

datetype of the formatter is : 0
First Formatted output is Wednesday, December 31, 1969 4:00:00 PM PT
Now datetype of the formatter is : 2
Second Formatted output is 12/31/69 4:00:00 PM PT

参见

  • datefmt_get_timetype() - Get the timetype used for the IntlDateFormatter
  • datefmt_create() - Create a date formatter

IntlDateFormatter::getCalendar
IntlDateFormatter::getErrorCode
IntlDateFormatter


Get the error code from last operation

IntlDateFormatter::getDateType
IntlDateFormatter::getErrorMessage
IntlDateFormatter
PHP Manual

IntlDateFormatter::getErrorCode

datefmt_get_error_code

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

IntlDateFormatter::getErrorCode -- datefmt_get_error_code — Get the error code from last operation

说明

面向对象风格

public int IntlDateFormatter::getErrorCode ( void )

过程化风格

int datefmt_get_error_code ( IntlDateFormatter $fmt )

Get the error code from last operation. Returns error code from the last number formatting operation.

参数

fmt

The formatter resource.

返回值

The error code, one of UErrorCode values. Initial value is U_ZERO_ERROR.

范例

Example #1 datefmt_get_error_code() example

<?php
$fmt = datefmt_create(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
$str = datefmt_format($fmt);
if (!$str) {
    printf(
        "ERROR: %s (%d)\n",
        datefmt_get_error_message($fmt),
        datefmt_get_error_code($fmt)
    );
}
?>

Example #2 OO example

<?php
$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
$str = $fmt->format();
if (!$str) {
    printf(
        "ERROR: %s (%d)\n",
        $fmt->getErrorMessage(),
        $fmt->getErrorCode()
    );
}
?>

以上例程会输出：

ERROR: U_ZERO_ERROR (0)

参见

  • datefmt_get_error_message() - Get the error text from the last operation.
  • intl_get_error_code() - Get the last error code
  • intl_is_failure() - Check whether the given error code indicates failure

IntlDateFormatter::getDateType
IntlDateFormatter::getErrorMessage
IntlDateFormatter


Get the error text from the last operation.

IntlDateFormatter::getErrorCode
IntlDateFormatter::getLocale
IntlDateFormatter
PHP Manual

IntlDateFormatter::getErrorMessage

datefmt_get_error_message

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

IntlDateFormatter::getErrorMessage -- datefmt_get_error_message — Get the error text from the last operation.

说明

面向对象风格

public string IntlDateFormatter::getErrorMessage ( void )

过程化风格

string datefmt_get_error_message ( IntlDateFormatter $fmt )

Get the error text from the last operation.

参数

fmt

The formatter resource.

返回值

Description of the last error.

范例

Example #1 datefmt_get_error_message() example

<?php
$fmt = datefmt_create(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
$str = datefmt_format($fmt);
if (!$str) {
    prtinf(
        "ERROR: %s (%d)\n",
        datefmt_get_error_message($fmt),
        datefmt_get_error_code($fmt)
    );
}
?>

Example #2 OO example

<?php
$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
$str = $fmt->format();
if(!$str) {
    prtinf(
        "ERROR: %s (%d)\n",
        $fmt->getErrorMessage(),
        $fmt->getErrorCode()
    );
}

?>

以上例程会输出：

ERROR: U_ZERO_ERROR (0)

参见

  • datefmt_get_error_code() - Get the error code from last operation
  • intl_get_error_code() - Get the last error code
  • intl_is_failure() - Check whether the given error code indicates failure

IntlDateFormatter::getErrorCode
IntlDateFormatter::getLocale
IntlDateFormatter


Get the locale used by formatter

IntlDateFormatter::getErrorMessage
IntlDateFormatter::getPattern
IntlDateFormatter
PHP Manual

IntlDateFormatter::getLocale

datefmt_get_locale

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

IntlDateFormatter::getLocale -- datefmt_get_locale — Get the locale used by formatter

说明

面向对象风格

public string IntlDateFormatter::getLocale ([ int $which ] )

过程化风格

string datefmt_get_locale ( IntlDateFormatter $fmt [, int $which ] )

Get locale used by the formatter.

参数

fmt

The formatter resource

hich

You can choose between valid and actual locale ( Locale::VALID_LOCALE, Locale::ACTUAL_LOCALE, respectively). The default is the actual locale.

返回值

the locale of this formatter or 'false' if error

范例

Example #1 datefmt_get_locale() example

<?php
$fmt = datefmt_create(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'locale of the formatter is : " . datefmt_get_locale($fmt);
echo 'First Formatted output is " . datefmt_format($fmt, 0);

$fmt = datefmt_create(
    'de-DE',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'locale of the formatter is : ' . datefmt_get_locale($fmt);
echo 'Second Formatted output is ' . datefmt_format($fmt, 0);

?>

Example #2 OO example

<?php
$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'locale of the formatter is : ' . $fmt->getLocale();
echo 'First Formatted output is ' . $fmt->format(0);

$fmt = new IntlDateFormatter(
    'de-DE',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'locale of the formatter is : ' . $fmt->getLocale();
echo 'Second Formatted output is ' . $fmt->format(0);

?>

以上例程会输出：

locale of the formatter is : en
First Formatted output is Wednesday, December 31, 1969 4:00:00 PM PT
locale of the formatter is : de
Second Formatted output is Mittwoch, 31. Dezember 1969 16:00 Uhr GMT-08:00

参见

  • datefmt_create() - Create a date formatter

IntlDateFormatter::getErrorMessage
IntlDateFormatter::getPattern
IntlDateFormatter


Get the pattern used for the IntlDateFormatter

IntlDateFormatter::getLocale
IntlDateFormatter::getTimeType
IntlDateFormatter
PHP Manual

IntlDateFormatter::getPattern

datefmt_get_pattern

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

IntlDateFormatter::getPattern -- datefmt_get_pattern — Get the pattern used for the IntlDateFormatter

说明

面向对象风格

public string IntlDateFormatter::getPattern ( void )

过程化风格

string datefmt_get_pattern ( IntlDateFormatter $fmt )

Get pattern used by the formatter.

参数

fmt

The formatter resource.

返回值

The pattern string being used to format/parse.

范例

Example #1 datefmt_get_pattern() example

<?php
$fmt = datefmt_create(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN,
    'MM/dd/yyyy'
);
echo 'pattern of the formatter is : ' . datefmt_get_pattern($fmt);
echo 'First Formatted output with pattern is ' . datefmt_format($fmt, 0);
datefmt_set_pattern($fmt,'yyyymmdd hh:mm:ss z');
echo 'Now pattern of the formatter is : ' . datefmt_get_pattern($fmt);
echo 'Second Formatted output with pattern is ' . datefmt_format($fmt, 0);

?>

Example #2 OO example

<?php
$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN,
    'MM/dd/yyyy'
);
echo 'pattern of the formatter is : ' . $fmt->getPattern();
echo 'First Formatted output is ' . $fmt->format(0);
$fmt->setPattern('yyyymmdd hh:mm:ss z');
echo 'Now pattern of the formatter is : ' . $fmt->getPattern();
echo 'Second Formatted output is ' . $fmt->format(0);
?>

以上例程会输出：

pattern of the formatter is : MM/dd/yyyy
First Formatted output is 12/31/1969
Now pattern of the formatter is : yyyymmdd hh:mm:ss z
Second Formatted output is 19690031 04:00:00 PST

参见

  • datefmt_set_pattern() - Set the pattern used for the IntlDateFormatter
  • datefmt_create() - Create a date formatter

IntlDateFormatter::getLocale
IntlDateFormatter::getTimeType
IntlDateFormatter


Get the timetype used for the IntlDateFormatter

IntlDateFormatter::getPattern
IntlDateFormatter::getTimeZoneId
IntlDateFormatter
PHP Manual

IntlDateFormatter::getTimeType

datefmt_get_timetype

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

IntlDateFormatter::getTimeType -- datefmt_get_timetype — Get the timetype used for the IntlDateFormatter

说明

面向对象风格

public int IntlDateFormatter::getTimeType ( void )

过程化风格

int datefmt_get_timetype ( IntlDateFormatter $fmt )

Return time type used by the formatter.

参数

fmt

The formatter resource.

返回值

The current date type value of the formatter.

范例

Example #1 datefmt_get_timetype() example

<?php
$fmt = datefmt_create(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'timetype of the formatter is : ' . datefmt_get_timetype($fmt);
echo 'First Formatted output with timetype is ' . datefmt_format($fmt, 0);

$fmt = datefmt_create(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::SHORT,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'Now timetype of the formatter is : ' . datefmt_get_timetype($fmt);
echo 'Second Formatted output with timetype is ' . datefmt_format($fmt, 0);

?>

Example #2 OO example

<?php
$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'timetype of the formatter is : ' . $fmt->getTimeType();
echo 'First Formatted output is ' . $fmt->format(0);

$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::SHORT,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'Now timetype of the formatter is : ' . $fmt->getTimeType();
echo 'Second Formatted output is ' . $fmt->format(0);

?>

以上例程会输出：

timetype of the formatter is : 0
First Formatted output is Wednesday, December 31, 1969 4:00:00 PM PT
Now timetype of the formatter is : 3
Second Formatted output is Wednesday, December 31, 1969 4:00 PM

参见

  • datefmt_get_datetype() - Get the datetype used for the IntlDateFormatter
  • datefmt_create() - Create a date formatter

IntlDateFormatter::getPattern
IntlDateFormatter::getTimeZoneId
IntlDateFormatter


Get the timezone-id used for the IntlDateFormatter

IntlDateFormatter::getTimeType
IntlDateFormatter::getCalendarObject
IntlDateFormatter
PHP Manual

IntlDateFormatter::getTimeZoneId

datefmt_get_timezone_id

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

IntlDateFormatter::getTimeZoneId -- datefmt_get_timezone_id — Get the timezone-id used for the IntlDateFormatter

说明

面向对象风格

public string IntlDateFormatter::getTimeZoneId ( void )

过程化风格

string datefmt_get_timezone_id ( IntlDateFormatter $fmt )

Get the timezone-id used for the IntlDateFormatter.

参数

fmt

The formatter resource.

返回值

ID string for the time zone used by this formatter.

范例

Example #1 datefmt_get_timezone_id() example

<?php
$fmt = datefmt_create(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'timezone_id of the formatter is : ' . datefmt_get_timezone_id($fmt);
datefmt_set_timezone_id($fmt, 'CN');
echo 'Now timezone_id of the formatter is : ' . datefmt_get_timezone_id($fmt);

?>

Example #2 OO example

<?php
$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'timezone_id of the formatter is : ' . $fmt->getTimezoneId();
$fmt->setTimezoneId('CN');
echo 'Now timezone_id of the formatter is : ' . $fmt->getTimezoneId();

?>

以上例程会输出：

timezone_id of the formatter is : America/Los_Angeles
Now timezone_id of the formatter is : CN

参见

  • datefmt_set_timezone_id() - Sets the time zone to use
  • datefmt_create() - Create a date formatter

IntlDateFormatter::getTimeType
IntlDateFormatter::getCalendarObject
IntlDateFormatter


Get copy of formatter?s calendar object

IntlDateFormatter::getTimeZoneId
IntlDateFormatter::getTimeZone
IntlDateFormatter
PHP Manual

IntlDateFormatter::getCalendarObject

datefmt_get_calendar_object

(PHP 5 >= 5.5.0, PHP 7, PECL intl >= 3.0.0)

IntlDateFormatter::getCalendarObject -- datefmt_get_calendar_object — Get copy of formatter?s calendar object

说明

面向对象风格

public IntlCalendar IntlDateFormatter::getCalendarObject ( void )

过程化风格

IntlCalendar datefmt_get_calendar_object ( void )

Obtain a copy of the calendar object used internally by this formatter. This calendar will have a type (as in gregorian, japanese, buddhist, roc, persian, islamic, etc.) and a timezone that match the type and timezone used by the formatter. The date/time of the object is unspecified.

参数

此函数没有参数。

返回值

A copy of the internal calendar object used by this formatter.

范例

Example #1 IntlDateFormatter::getCalendarObject() example

<?php
$formatter = IntlDateFormatter::create(
    "fr_FR@calendar=islamic",
    NULL,
    NULL,
    "GMT-01:00",
    IntlDateFormatter::TRADITIONAL
);

$cal = $formatter->getCalendarObject();

var_dump(
    $cal->getType(),
    $cal->getTimeZone(),
    $cal->getLocale(Locale::VALID_LOCALE)
);

以上例程会输出：

string(7) "islamic"
object(IntlTimeZone)#3 (4) {
  ["valid"]=>
  bool(true)
  ["id"]=>
  string(9) "GMT-01:00"
  ["rawOffset"]=>
  int(-3600000)
  ["currentOffset"]=>
  int(-3600000)
}
string(5) "fr_FR"

参见

  • IntlDateFormatter::getCalendar() - Get the calendar type used for the IntlDateFormatter
  • IntlDateFormatter::setCalendar() - Sets the calendar type used by the formatter
  • IntlCalendar

IntlDateFormatter::getTimeZoneId
IntlDateFormatter::getTimeZone
IntlDateFormatter


Get formatter?s timezone

IntlDateFormatter::getCalendarObject
IntlDateFormatter::isLenient
IntlDateFormatter
PHP Manual

IntlDateFormatter::getTimeZone

datefmt_get_timezone

(PHP 5 >= 5.5.0, PHP 7, PECL intl >= 3.0.0)

IntlDateFormatter::getTimeZone -- datefmt_get_timezone — Get formatter?s timezone

说明

面向对象风格

public IntlTimeZone IntlDateFormatter::getTimeZone ( void )

过程化风格

IntlTimeZone datefmt_get_timezone ( void )

Returns an IntlTimeZone object representing the timezone that will be used by this object to format dates and times. When formatting IntlCalendar and DateTime objects with this IntlDateFormatter, the timezone used will be the one returned by this method, not the one associated with the objects being formatted.

参数

此函数没有参数。

返回值

The associated IntlTimeZone object 或者在失败时返回 FALSE.

范例

Example #1 IntlDateFormatter::getTimeZone() examples

<?php

$madrid = IntlDateFormatter::create(NULL, NULL, NULL, 'Europe/Madrid');
$lisbon = IntlDateFormatter::create(NULL, NULL, NULL, 'Europe/Lisbon');

var_dump($madrid->getTimezone());
echo $madrid->getTimezone()->getDisplayName(
        false, IntlTimeZone::DISPLAY_GENERIC_LOCATION, "en_US"), "\n";
echo $lisbon->getTimeZone()->getId(), "\n";
//The id can also be retrieved with ->getTimezoneId()
echo $lisbon->getTimeZoneId(), "\n";

以上例程会输出：

object(IntlTimeZone)#4 (4) {
  ["valid"]=>
  bool(true)
  ["id"]=>
  string(13) "Europe/Madrid"
  ["rawOffset"]=>
  int(3600000)
  ["currentOffset"]=>
  int(7200000)
}
Spain Time
Europe/Lisbon
Europe/Lisbon

参见

  • IntlDateFormatter::getTimeZoneId() - Get the timezone-id used for the IntlDateFormatter
  • IntlDateFormatter::setTimeZone() - Sets formatter?s timezone
  • IntlTimeZone

IntlDateFormatter::getCalendarObject
IntlDateFormatter::isLenient
IntlDateFormatter


Get the lenient used for the IntlDateFormatter

IntlDateFormatter::getTimeZone
IntlDateFormatter::localtime
IntlDateFormatter
PHP Manual

IntlDateFormatter::isLenient

datefmt_is_lenient

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

IntlDateFormatter::isLenient -- datefmt_is_lenient — Get the lenient used for the IntlDateFormatter

说明

面向对象风格

public bool IntlDateFormatter::isLenient ( void )

过程化风格

bool datefmt_is_lenient ( IntlDateFormatter $fmt )

Check if the parser is strict or lenient in interpreting inputs that do not match the pattern exactly.

参数

fmt

The formatter resource.

返回值

TRUE if parser is lenient, FALSE if parser is strict. By default the parser is lenient.

范例

Example #1 datefmt_is_lenient() example

<?php
$fmt = datefmt_create(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN,
    'dd/mm/yyyy'
);
echo 'lenient of the formatter is : ';
if ($fmt->isLenient()) {
    echo 'TRUE';
} else {
    echo 'FALSE';
}
datefmt_parse($fmt, '35/13/1971');
echo "\n Trying to do parse('35/13/1971').\nResult is : " . datefmt_parse($fmt, '35/13/1971');
if (intl_get_error_code() != 0) {
    echo "\nError_msg is : " . intl_get_error_message();
    echo "\nError_code is : " . intl_get_error_code();
}
datefmt_set_lenient($fmt,false);
echo 'Now lenient of the formatter is : ';
if ($fmt->isLenient()) {
    echo 'TRUE';
} else {
    echo 'FALSE';
}
datefmt_parse($fmt, '35/13/1971');
echo "\n Trying to do parse('35/13/1971').Result is : " . datefmt_parse($fmt, '35/13/1971');
if (intl_get_error_code() != 0) {
    echo "\nError_msg is : " . intl_get_error_message();
    echo "\nError_code is : " . intl_get_error_code();
}

?>

Example #2 OO example

<?php
$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN,
    "dd/mm/yyyy"
);
echo "lenient of the formatter is : ";
if ($fmt->isLenient()) {
    echo 'TRUE';
} else {
    echo 'FALSE';
}
$fmt->parse('35/13/1971');
echo "\n Trying to do parse('35/13/1971').\nResult is : " . $fmt->parse('35/13/1971');
if (intl_get_error_code() != 0){
    echo "\nError_msg is : " . intl_get_error_message();
    echo "\nError_code is : " . intl_get_error_code();
}

$fmt->setLenient(FALSE);
echo 'Now lenient of the formatter is : ';
if ($fmt->isLenient()) {
    echo 'TRUE';
} else {
    echo 'FALSE';
}
$fmt->parse('35/13/1971');
echo "\n Trying to do parse('35/13/1971').\nResult is : " . $fmt->parse('35/13/1971');
if (intl_get_error_code() != 0) {
    echo "\nError_msg is : " . intl_get_error_message();
    echo "\nError_code is : " . intl_get_error_code();
}

?>

以上例程会输出：

lenient of the formatter is : TRUE
Trying to do parse('35/13/1971').
Result is : -2147483
Now lenient of the formatter is : FALSE
Trying to do parse('35/13/1971').
Result is :
Error_msg is : Date parsing failed: U_PARSE_ERROR
Error_code is : 9

参见

  • datefmt_set_lenient() - Set the leniency of the parser
  • datefmt_create() - Create a date formatter

IntlDateFormatter::getTimeZone
IntlDateFormatter::localtime
IntlDateFormatter


Parse string to a field-based time value

IntlDateFormatter::isLenient
IntlDateFormatter::parse
IntlDateFormatter
PHP Manual

IntlDateFormatter::localtime

datefmt_localtime

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

IntlDateFormatter::localtime -- datefmt_localtime — Parse string to a field-based time value

说明

面向对象风格

public array IntlDateFormatter::localtime ( string $value [, int &$position ] )

过程化风格

array datefmt_localtime ( IntlDateFormatter $fmt , string $value [, int &$position ] )

Converts string $value to a field-based time value ( an array of various fields), starting at $parse_pos and consuming as much of the input value as possible.

参数

fmt

The formatter resource

value

string to convert to a time

position

Position at which to start the parsing in $value (zero-based). If no error occurs before $value is consumed, $parse_pos will contain -1 otherwise it will contain the position at which parsing ended . If $parse_pos > strlen($value), the parse fails immediately.

返回值

Localtime compatible array of integers : contains 24 hour clock value in tm_hour field

范例

Example #1 datefmt_localtime() example

<?php

$fmt = datefmt_create(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
$arr = datefmt_localtime($fmt, 'Wednesday, December 31, 1969 4:00:00 PM PT', 0);
echo 'First parsed output is ';
if ($arr) {
    foreach ($arr as $key => $value) {
        echo "$key : $value , ";
    }
}

?>

Example #2 OO example

<?php
$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
$arr = $fmt->localtime('Wednesday, December 31, 1969 4:00:00 PM PT', 0);
echo 'First parsed output is ';
if ($arr) {
    foreach ($arr as $key => $value) {
        echo "$key : $value , ";
    }
}

?>

以上例程会输出：

First parsed output is tm_sec : 0 , tm_min : 0 , tm_hour : 16 , tm_year : 1969 ,
tm_mday : 31 , tm_wday : 4 , tm_yday : 365 , tm_mon : 11 , tm_isdst : 0 ,

参见

  • datefmt_create() - Create a date formatter
  • datefmt_format() - Format the date/time value as a string
  • datefmt_parse() - Parse string to a timestamp value
  • datefmt_get_error_code() - Get the error code from last operation
  • datefmt_get_error_message() - Get the error text from the last operation.

IntlDateFormatter::isLenient
IntlDateFormatter::parse
IntlDateFormatter


Parse string to a timestamp value

IntlDateFormatter::localtime
IntlDateFormatter::setCalendar
IntlDateFormatter
PHP Manual

IntlDateFormatter::parse

datefmt_parse

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

IntlDateFormatter::parse -- datefmt_parse — Parse string to a timestamp value

说明

面向对象风格

public int IntlDateFormatter::parse ( string $value [, int &$position ] )

过程化风格

int datefmt_parse ( IntlDateFormatter $fmt , string $value [, int &$position ] )

Converts string $value to an incremental time value, starting at $parse_pos and consuming as much of the input value as possible.

参数

fmt

The formatter resource

value

string to convert to a time

position

Position at which to start the parsing in $value (zero-based). If no error occurs before $value is consumed, $parse_pos will contain -1 otherwise it will contain the position at which parsing ended (and the error occurred). This variable will contain the end position if the parse fails. If $parse_pos > strlen($value), the parse fails immediately.

返回值

timestamp parsed value, or FALSE if value can't be parsed.

范例

Example #1 OO example

<?php
$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'First parsed output is ' . $fmt->parse('Wednesday, December 20, 1989 4:00:00 PM PT');
$fmt = new IntlDateFormatter(
    'de-DE',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
?>

Example #2 datefmt_parse() example

<?php
$fmt = datefmt_create(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'First parsed output is ' . datefmt_parse($fmt, 'Wednesday, December 20, 1989 4:00:00 PM PT');
$fmt = datefmt_create(
    'de-DE',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'Second parsed output is ' . datefmt_parse($fmt, 'Mittwoch, 20. Dezember 1989 16:00 Uhr GMT-08:00');
?

以上例程会输出：

First parsed output is 630201600
Second parsed output is 630201600

参见

  • datefmt_create() - Create a date formatter
  • datefmt_format() - Format the date/time value as a string
  • datefmt_localtime() - Parse string to a field-based time value
  • datefmt_get_error_code() - Get the error code from last operation
  • datefmt_get_error_message() - Get the error text from the last operation.

IntlDateFormatter::localtime
IntlDateFormatter::setCalendar
IntlDateFormatter


Sets the calendar type used by the formatter

IntlDateFormatter::parse
IntlDateFormatter::setLenient
IntlDateFormatter
PHP Manual

IntlDateFormatter::setCalendar

datefmt_set_calendar

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

IntlDateFormatter::setCalendar -- datefmt_set_calendar — Sets the calendar type used by the formatter

说明

面向对象风格

bool IntlDateFormatter::setCalendar ( mixed $which )

过程化风格

bool datefmt_set_calendar ( IntlDateFormatter $fmt , mixed $which )

Sets the calendar or calendar type used by the formatter.

参数

fmt

The formatter resource.

which

This can either be: the calendar type to use (default is IntlDateFormatter::GREGORIAN, which is also used if NULL is specified) or an IntlCalendar object.

Any IntlCalendar object passed in will be cloned; no modifications will be made to the argument object.

The timezone of the formatter will only be kept if an IntlCalendar object is not passed, otherwise the new timezone will be that of the passed object.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.5.0/PECL 3.0.0 | It became possible to pass an IntlCalendar object.

范例

Example #1 datefmt_set_calendar() example

<?php
$fmt = datefmt_create(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'calendar of the formatter is : ' . datefmt_get_calendar($fmt);
datefmt_set_calendar($fmt, IntlDateFormatter::TRADITIONAL);
echo 'Now calendar of the formatter is : ' . datefmt_get_calendar($fmt);
?>

Example #2 OO example

<?php
$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'calendar of the formatter is : ' . $fmt->getCalendar();
$fmt->setCalendar(IntlDateFormatter::TRADITIONAL);
echo 'Now calendar of the formatter is : ' . $fmt->getCalendar();
?>

以上例程会输出：

calendar of the formatter is : 1
Now calendar of the formatter is : 0

Example #3 Example with IntlCalendar argument

<?php
$time = strtotime("2013-03-03 00:00:00 UTC");
$formatter = IntlDateFormatter::create("en_US", NULL, NULL, "Europe/Amsterdam");

echo "before: ", $formatter->format($time), "\n";

/* note that the calendar's locale is not used! */
$formatter->setCalendar(IntlCalendar::createInstance(
               "America/New_York", "pt_PT@calendar=islamic"));

echo "after:  ", $formatter->format($time), "\n";

以上例程会输出：

before: Sunday, March 3, 2013 at 1:00:00 AM Central European Standard Time
after:  Saturday, Rabi? II 20, 1434 at 7:00:00 PM Eastern Standard Time

参见

  • datefmt_get_calendar() - Get the calendar type used for the IntlDateFormatter
  • datefmt_get_calendar_object() - Get copy of formatter?s calendar object
  • datefmt_create() - Create a date formatter

IntlDateFormatter::parse
IntlDateFormatter::setLenient
IntlDateFormatter


Set the leniency of the parser

IntlDateFormatter::setCalendar
IntlDateFormatter::setPattern
IntlDateFormatter
PHP Manual

IntlDateFormatter::setLenient

datefmt_set_lenient

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

IntlDateFormatter::setLenient -- datefmt_set_lenient — Set the leniency of the parser

说明

面向对象风格

public bool IntlDateFormatter::setLenient ( bool $lenient )

过程化风格

bool datefmt_set_lenient ( IntlDateFormatter $fmt , bool $lenient )

Define if the parser is strict or lenient in interpreting inputs that do not match the pattern exactly. Enabling lenient parsing allows the parser to accept otherwise flawed date or time patterns, parsing as much as possible to obtain a value. Extra space, unrecognized tokens, or invalid values ("February 30th") are not accepted.

参数

fmt

The formatter resource

lenient

Sets whether the parser is lenient or not, default is TRUE (lenient).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 datefmt_set_lenient() example

<?php
$fmt = datefmt_create(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN,
    'dd/MM/yyyy'
);
echo 'lenient of the formatter is : ';
if ($fmt->isLenient()) {
    echo 'TRUE';
} else {
    echo 'FALSE';
}
datefmt_parse($fmt, '35/13/1971');
echo "\n Trying to do parse('35/13/1971').\nResult is : " . datefmt_parse($fmt, '35/13/1971');
if (intl_get_error_code() != 0) {
    echo "\nError_msg is : " . intl_get_error_message();
    echo "\nError_code is : " . intl_get_error_code();
}
datefmt_set_lenient($fmt, false);
echo "\nNow lenient of the formatter is : ";
if ($fmt->isLenient()) {
    echo 'TRUE';
} else {
    echo 'FALSE';
}
datefmt_parse($fmt, '35/13/1971');
echo "\nTrying to do parse('35/13/1971').\nResult is : " . datefmt_parse($fmt, '35/13/1971');
if (intl_get_error_code() != 0) {
    echo "\nError_msg is : ".intl_get_error_message();
    echo "\nError_code is : ".intl_get_error_code();
}

?>

Example #2 OO example

<?php
$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN,
    'dd/MM/yyyy'
);
echo 'lenient of the formatter is : ';
if ($fmt->isLenient()) {
    echo 'TRUE';
} else {
    echo 'FALSE';
}
$fmt->parse('35/13/1971');
echo "\n Trying to do parse('35/13/1971').\nResult is : " . $fmt->parse('35/13/1971');
if (intl_get_error_code() != 0) {
    echo "\nError_msg is : " . intl_get_error_message();
    echo "\nError_code is : " . intl_get_error_code();
}

$fmt->setLenient(FALSE);
echo "\nNow lenient of the formatter is : ";
if ($fmt->isLenient()) {
    echo 'TRUE';
} else {
    echo 'FALSE';
}
$fmt->parse('35/13/1971');
echo "\n Trying to do parse('35/13/1971').\nResult is : " . $fmt->parse('35/13/1971');
if (intl_get_error_code() != 0) {
    echo "\nError_msg is : " . intl_get_error_message();
    echo "\nError_code is : " . intl_get_error_code();
}

?>

以上例程会输出：

lenient of the formatter is : TRUE
Trying to do parse('35/13/1971').
Result is : 66038400
Now lenient of the formatter is : FALSE
Trying to do parse('35/13/1971').
Result is :
Error_msg is : Date parsing failed: U_PARSE_ERROR
Error_code is : 9

参见

  • datefmt_is_lenient() - Get the lenient used for the IntlDateFormatter
  • datefmt_create() - Create a date formatter

IntlDateFormatter::setCalendar
IntlDateFormatter::setPattern
IntlDateFormatter


Set the pattern used for the IntlDateFormatter

IntlDateFormatter::setLenient
IntlDateFormatter::setTimeZoneId
IntlDateFormatter
PHP Manual

IntlDateFormatter::setPattern

datefmt_set_pattern

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

IntlDateFormatter::setPattern -- datefmt_set_pattern — Set the pattern used for the IntlDateFormatter

说明

面向对象风格

public bool IntlDateFormatter::setPattern ( string $pattern )

过程化风格

bool datefmt_set_pattern ( IntlDateFormatter $fmt , string $pattern )

Set the pattern used for the IntlDateFormatter.

参数

fmt

The formatter resource.

pattern

New pattern string to use. Possible patterns are documented at » http://userguide.icu-project.org/formatparse/datetime.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 Bad formatstrings are usually the cause of the failure.

范例

Example #1 datefmt_set_pattern() example

<?php
$fmt = datefmt_create(
    'en_US',
    IntlDateFormatter::FULL,IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN,
    'MM/dd/yyyy'
);
echo 'pattern of the formatter is : ' . datefmt_get_pattern($fmt);
echo 'First Formatted output with pattern is ' . datefmt_format($fmt, 0);
datefmt_set_pattern($fmt, 'yyyymmdd hh:mm:ss z');
echo 'Now pattern of the formatter is : ' . datefmt_get_pattern($fmt);
echo 'Second Formatted output with pattern is ' . datefmt_format($fmt, 0);

?>

Example #2 OO example

<?php
$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN,
    'MM/dd/yyyy'
);
echo 'pattern of the formatter is : ' . $fmt->getPattern();
echo 'First Formatted output is ' . $fmt->format(0);
$fmt->setPattern('yyyymmdd hh:mm:ss z');
echo 'Now pattern of the formatter is : ' . $fmt->getPattern();
echo 'Second Formatted output is ' . $fmt->format(0);

?>

以上例程会输出：

pattern of the formatter is : MM/dd/yyyy
First Formatted output with pattern is 12/31/1969
Now pattern of the formatter is : yyyymmdd hh:mm:ss z
Second Formatted output with pattern is 19690031 04:00:00 PST

参见

  • datefmt_get_pattern() - Get the pattern used for the IntlDateFormatter
  • datefmt_create() - Create a date formatter

IntlDateFormatter::setLenient
IntlDateFormatter::setTimeZoneId
IntlDateFormatter


Sets the time zone to use

IntlDateFormatter::setPattern
IntlDateFormatter::setTimeZone
IntlDateFormatter
PHP Manual

IntlDateFormatter::setTimeZoneId

datefmt_set_timezone_id

(PHP 5 >= 5.3.0, PECL intl >= 1.0.0)

IntlDateFormatter::setTimeZoneId -- datefmt_set_timezone_id — Sets the time zone to use

Warning

This function was DEPRECATED in PHP 5.5.0, and REMOVED in PHP 7.0.0.

Alternatives to this function include:

  • IntlDateFormatter::setTimeZone()

说明

面向对象风格

public bool IntlDateFormatter::setTimeZoneId ( string $zone )

过程化风格

bool datefmt_set_timezone_id ( IntlDateFormatter $fmt , string $zone )

Sets the time zone to use.

参数

fmt

The formatter resource.

zone

The time zone ID string of the time zone to use. If NULL or the empty string, the default time zone for the runtime is used.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
7.0.0 | This function has been removed.
5.5.0 | This function has been deprecated.

范例

Example #1 datefmt_set_timezone_id() example

<?php
$fmt = datefmt_create(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'timezone_id of the formatter is : ' . datefmt_get_timezone_id($fmt);
datefmt_set_timezone_id($fmt, 'CN');
echo 'Now timezone_id of the formatter is : ' . datefmt_get_timezone_id($fmt);
?>

Example #2 OO example

<?php
$fmt = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'America/Los_Angeles',
    IntlDateFormatter::GREGORIAN
);
echo 'timezone_id of the formatter is : ' . $fmt->getTimezoneId();
$fmt->setTimezoneId('CN');
echo 'Now timezone_id of the formatter is : ' . $fmt->getTimezoneId();

?>

以上例程会输出：

timezone_id of the formatter is : America/Los_Angeles
Now timezone_id of the formatter is : CN

参见

  • datefmt_get_timezone_id() - Get the timezone-id used for the IntlDateFormatter
  • datefmt_create() - Create a date formatter

IntlDateFormatter::setPattern
IntlDateFormatter::setTimeZone
IntlDateFormatter


Sets formatter?s timezone

IntlDateFormatter::setTimeZoneId
ResourceBundle
IntlDateFormatter
PHP Manual

IntlDateFormatter::setTimeZone

datefmt_set_timezone

(PHP 5 >= 5.5.0, PHP 7, PECL intl >= 3.0.0)

IntlDateFormatter::setTimeZone -- datefmt_set_timezone — Sets formatter?s timezone

说明

面向对象风格

public boolean IntlDateFormatter::setTimeZone ( mixed $zone )

过程化风格

boolean datefmt_set_timezone ( mixed $zone )

Sets the timezone that will be used when formatting dates or times with this object.

参数

zone

The timezone to use for this formatter. This can be specified in the following forms:

  • NULL, in which case the default timezone will be used, as specified in the ini setting date.timezone or through the function date_default_timezone_set() and as returned by date_default_timezone_get().

  • An IntlTimeZone, which will be used directly.

  • A DateTimeZone. Its identifier will be extracted and an ICU timezone object will be created; the timezone will be backed by ICU?s database, not PHP?s.

  • A string, which should be a valid ICU timezone identifier. See IntlTimeZone::createTimeZoneIDEnumeration(). Raw offsets such as "GMT+08:30" are also accepted.

返回值

Returns TRUE on success and FALSE on failure.

范例

Example #1 IntlDateFormatter::setTimeZone() examples

<?php
ini_set('date.timezone', 'Europe/Amsterdam');

$formatter = IntlDateFormatter::create(NULL, NULL, NULL, "UTC");

$formatter->setTimeZone(NULL);
echo "NULL\n    ", $formatter->getTimeZone()->getId(), "\n";

$formatter->setTimeZone(IntlTimeZone::createTimeZone('Europe/Lisbon'));
echo "IntlTimeZone\n    ", $formatter->getTimeZone()->getId(), "\n";

$formatter->setTimeZone(new DateTimeZone('Europe/Paris'));
echo "DateTimeZone\n    ", $formatter->getTimeZone()->getId(), "\n";

$formatter->setTimeZone('Europe/Rome');
echo "String\n    ", $formatter->getTimeZone()->getId(), "\n";

$formatter->setTimeZone('GMT+00:30');
print_r($formatter->getTimeZone());

以上例程会输出：

NULL
    Europe/Amsterdam
IntlTimeZone
    Europe/Lisbon
DateTimeZone
    Europe/Paris
String
    Europe/Rome
IntlTimeZone Object
(
    [valid] => 1
    [id] => GMT+00:30
    [rawOffset] => 1800000
    [currentOffset] => 1800000
)

参见

  • IntlDateFormatter::getTimeZone() - Get formatter?s timezone

IntlDateFormatter::setTimeZoneId
ResourceBundle
IntlDateFormatter


The ResourceBundle class

(PHP >= 5.3.2, PECL intl >= 2.0.0)

简介

Localized software products often require sets of data that are to be customized depending on current locale, e.g.: messages, labels, formatting patterns. ICU resource mechanism allows to define sets of resources that the application can load on locale basis, while accessing them in unified locale-independent fashion.

This class implements access to ICU resource data files. These files are binary data arrays which ICU uses to store the localized data.

ICU resource bundle can hold simple resources and complex resources. Complex resources are containers which can be either integer-indexed or string-indexed (just like PHP arrays). Simple resources can be of the following types: string, integer, binary data field or integer array.

ResourceBundle supports direct access to the data through array access pattern and iteration via foreach, as well as access via class methods. The result will be PHP value for simple resources and ResourceBundle object for complex ones. All resources are read-only.

类摘要

ResourceBundle {
/* Methods */
public __construct ( string $locale , string $bundlename [, bool $fallback ] )
public int count ( void )
public static ResourceBundle create ( string $locale , string $bundlename [, bool $fallback ] )
public int getErrorCode ( void )
public string getErrorMessage ( void )
public mixed get ( string|int $index )
public array getLocales ( string $bundlename )
}

参见

  • » ICU Resource Management
  • » ICU Data

Table of Contents

  • ResourceBundle::count — Get number of elements in the bundle
  • ResourceBundle::create — Create a resource bundle
  • ResourceBundle::getErrorCode — Get bundle's last error code.
  • ResourceBundle::getErrorMessage — Get bundle's last error message.
  • ResourceBundle::get — Get data from the bundle
  • ResourceBundle::getLocales — Get supported locales
IntlDateFormatter::setTimeZone
ResourceBundle::count
intl


Get number of elements in the bundle

ResourceBundle
ResourceBundle::create
ResourceBundle
PHP Manual

ResourceBundle::count

resourcebundle_count

(PHP >= 5.3.2, PECL intl >= 2.0.0)

ResourceBundle::count -- resourcebundle_count — Get number of elements in the bundle

说明

面向对象风格

public int ResourceBundle::count ( void )

过程化风格

int resourcebundle_count ( ResourceBundle $r )

Get the number of elements in the bundle.

参数

r

ResourceBundle object.

返回值

Returns number of elements in the bundle.

范例

Example #1 resourcebundle_count() example

<?php
$r = resourcebundle_create( 'es', "/usr/share/data/myapp");
echo resourcebundle_count($r);
?>

Example #2 OO example

<?php
$r = new ResourceBundle( 'es', "/usr/share/data/myapp");
echo $r->count();
?>

以上例程会输出：

42

参见

  • resourcebundle_get() - Get data from the bundle

ResourceBundle
ResourceBundle::create
ResourceBundle


Create a resource bundle

ResourceBundle::count
ResourceBundle::getErrorCode
ResourceBundle
PHP Manual

ResourceBundle::create

resourcebundle_create

ResourceBundle::__construct

(PHP >= 5.3.2, PECL intl >= 2.0.0)

ResourceBundle::create -- resourcebundle_create -- ResourceBundle::__construct — Create a resource bundle

说明

面向对象风格 (method)

public static ResourceBundle ResourceBundle::create ( string $locale , string $bundlename [, bool $fallback ] )

过程化风格

ResourceBundle resourcebundle_create ( string $locale , string $bundlename [, bool $fallback ] )

面向对象风格 (constructor):

public ResourceBundle::__construct ( string $locale , string $bundlename [, bool $fallback ] )

Creates a resource bundle.

参数

locale

Locale for which the resources should be loaded (locale name, e.g. en_CA).

bundlename

The directory where the data is stored or the name of the .dat file.

fallback

Whether locale should match exactly or fallback to parent locale is allowed.

返回值

Returns ResourceBundle object or NULL on error.

范例

Example #1 resourcebundle_create() example

<?php
$r = resourcebundle_create( 'es', "/usr/share/data/myapp");
echo $r['teststring'];
?>

Example #2 ResourceBundle::create() example

<?php
$r = ResourceBundle::create( 'es', "/usr/share/data/myapp");
echo $r['teststring'];
?>

以上例程会输出：

?Hola, mundo!

参见

  • resourcebundle_get() - Get data from the bundle

ResourceBundle::count
ResourceBundle::getErrorCode
ResourceBundle


Get bundle's last error code.

ResourceBundle::create
ResourceBundle::getErrorMessage
ResourceBundle
PHP Manual

ResourceBundle::getErrorCode

resourcebundle_get_error_code

(PHP >= 5.3.2, PECL intl >= 2.0.0)

ResourceBundle::getErrorCode -- resourcebundle_get_error_code — Get bundle's last error code.

说明

面向对象风格

public int ResourceBundle::getErrorCode ( void )

过程化风格

int resourcebundle_get_error_code ( ResourceBundle $r )

Get error code from the last function performed by the bundle object.

参数

r

ResourceBundle object.

返回值

Returns error code from last bundle object call.

范例

Example #1 resourcebundle_get_error_code() example

<?php
$r = resourcebundle_create( 'es', "/usr/share/data/myapp");
echo $r['somestring'];
if(intl_is_failure(resourcebundle_get_error_code($r))) {
    report_error("Bundle error");
}
?>

Example #2 OO example

<?php
$r = new ResourceBundle( 'es', "/usr/share/data/myapp");
echo $r['somestring'];
if(intl_is_failure(ResourceBundle::getErrorCode($r))) {
    report_error("Bundle error");
}
?>

参见

  • resourcebundle_get_error_message() - Get bundle's last error message.
  • intl_get_error_code() - Get the last error code
  • intl_is_failure() - Check whether the given error code indicates failure

ResourceBundle::create
ResourceBundle::getErrorMessage
ResourceBundle


Get bundle's last error message.

ResourceBundle::getErrorCode
ResourceBundle::get
ResourceBundle
PHP Manual

ResourceBundle::getErrorMessage

resourcebundle_get_error_message

(PHP >= 5.3.2, PECL intl >= 2.0.0)

ResourceBundle::getErrorMessage -- resourcebundle_get_error_message — Get bundle's last error message.

说明

面向对象风格

public string ResourceBundle::getErrorMessage ( void )

过程化风格

string resourcebundle_get_error_message ( ResourceBundle $r )

Get error message from the last function performed by the bundle object.

参数

r

ResourceBundle object.

返回值

Returns error message from last bundle object's call.

范例

Example #1 resourcebundle_get_error_message() example

<?php
$r = resourcebundle_create( 'es', "/usr/share/data/myapp");
echo $r['somestring'];
if(intl_is_failure(resourcebundle_get_error_code($r))) {
    report_error("Bundle error: ".resourcebundle_get_error_message($r));
}
?>

Example #2 OO example

<?php
$r = new ResourceBundle( 'es', "/usr/share/data/myapp");
echo $r['somestring'];
if(intl_is_failure(ResourceBundle::getErrorCode($r))) {
    report_error("Bundle error: ".ResourceBundle::getErrorMessage($r));
}
?>

参见

  • resourcebundle_get_error_code() - Get bundle's last error code.
  • intl_get_error_code() - Get the last error code
  • intl_is_failure() - Check whether the given error code indicates failure

ResourceBundle::getErrorCode
ResourceBundle::get
ResourceBundle


Get data from the bundle

ResourceBundle::getErrorMessage
ResourceBundle::getLocales
ResourceBundle
PHP Manual

ResourceBundle::get

resourcebundle_get

(PHP >= 5.3.2, PECL intl >= 2.0.0)

ResourceBundle::get -- resourcebundle_get — Get data from the bundle

说明

面向对象风格

public mixed ResourceBundle::get ( string|int $index )

过程化风格

mixed resourcebundle_get ( ResourceBundle $r , string|int $index )

Get the data from the bundle by index or string key.

参数

r

ResourceBundle object.

index

Data index, must be string or integer.

返回值

Returns the data located at the index or NULL on error. Strings, integers and binary data strings are returned as corresponding PHP types, integer array is returned as PHP array. Complex types are returned as ResourceBundle object.

范例

Example #1 resourcebundle_get() example

<?php
$r = resourcebundle_create( 'es', "/usr/share/data/myapp");
echo resourcebundle_get($r, 'somestring');
?>

Example #2 OO example

<?php
$r = new ResourceBundle( 'es', "/usr/share/data/myapp");
echo $r->get('somestring');
?>

以上例程会输出：

?Hola, mundo!

参见

  • resourcebundle_count() - Get number of elements in the bundle

ResourceBundle::getErrorMessage
ResourceBundle::getLocales
ResourceBundle


Get supported locales

ResourceBundle::get
Spoofchecker
ResourceBundle
PHP Manual

ResourceBundle::getLocales

resourcebundle_locales

(PHP >= 5.3.2, PECL intl >= 2.0.0)

ResourceBundle::getLocales -- resourcebundle_locales — Get supported locales

说明

面向对象风格

public array ResourceBundle::getLocales ( string $bundlename )

过程化风格

array resourcebundle_locales ( string $bundlename )

Get available locales from ResourceBundle name.

参数

bundlename

Path of ResourceBundle for which to get available locales, or empty string for default locales list.

返回值

Returns the list of locales supported by the bundle.

范例

Example #1 resourcebundle_locales() example

<?php
$bundle = "/user/share/data/myapp";
echo join(PHP_EOL, resourcebundle_locales($bundle));
?>

以上例程的输出类似于：

es
root

Example #2 OO example

<?php
$bundle = "/usr/share/data/myapp";
$r = new ResourceBundle( 'es', $bundle);
echo join("\n", $r->getLocales($bundle));
?>

以上例程的输出类似于：

es
root

参见

  • resourcebundle_get() - Get data from the bundle

ResourceBundle::get
Spoofchecker
ResourceBundle


The Spoofchecker class

(PHP >= 5.4.0, PECL intl >= 2.0.0)

简介

This class is provided because Unicode contains large number of characters and incorporates the varied writing systems of the world and their incorrect usage can expose programs or systems to possible security attacks using characters similarity.

Provided methods alllow to check whether an individual string is likely an attempt at confusing the reader (spoof detection), such as "pаypаl" spelled with Cyrillic 'а' characters.

类摘要

Spoofchecker {
/* Constants */
const integer SINGLE_SCRIPT_CONFUSABLE = 1 ;
const integer MIXED_SCRIPT_CONFUSABLE = 2 ;
const integer WHOLE_SCRIPT_CONFUSABLE = 4 ;
const integer ANY_CASE = 8 ;
const integer SINGLE_SCRIPT = 16 ;
const integer INVISIBLE = 32 ;
const integer CHAR_LIMIT = 64 ;
/* 方法 */
public bool areConfusable ( string $str1 , string $str2 [, string &$error ] )
public __construct ( void )
public bool isSuspicious ( string $text [, string &$error ] )
public void setAllowedLocales ( string $locale_list )
public void setChecks ( long $checks )
}

预定义常量

Spoofchecker::SINGLE_SCRIPT_CONFUSABLE

Spoofchecker::MIXED_SCRIPT_CONFUSABLE

Spoofchecker::WHOLE_SCRIPT_CONFUSABLE

Spoofchecker::ANY_CASE

Spoofchecker::SINGLE_SCRIPT

Spoofchecker::INVISIBLE

Spoofchecker::CHAR_LIMIT

Table of Contents

  • Spoofchecker::areConfusable — Checks if given strings can be confused
  • Spoofchecker::__construct — Constructor
  • Spoofchecker::isSuspicious — Checks if a given text contains any suspicious characters
  • Spoofchecker::setAllowedLocales — Locales to use when running checks
  • Spoofchecker::setChecks — Set the checks to run
ResourceBundle::getLocales
Spoofchecker::areConfusable
intl


Checks if given strings can be confused

Spoofchecker
Spoofchecker::__construct
Spoofchecker
PHP Manual

Spoofchecker::areConfusable

(PHP >= 5.4.0, PECL intl >= 2.0.0)

Spoofchecker::areConfusable — Checks if given strings can be confused

说明

public bool Spoofchecker::areConfusable ( string $str1 , string $str2 [, string &$error ] )

Checks whether two given strings can easily be mistaken.

参数

str1

First string to check.

str2

Second string to check.

error

This variable is set by-reference to string containing an error, if there were any.

返回值

Returns TRUE if two given strings can be confused, FALSE otherwise.

范例

Example #1 Spoofchecker::areConfusable() example

<?php
$checker = new Spoofchecker();

$checker->areConfusable('google.com', 'goog1e.com'); // true
// Lower l can be confused with digit one

$checker->areConfusable('google.com', 'g00g1e.com'); // false
// Zero (0) cannot be easily confused with "o" letter

Spoofchecker
Spoofchecker::__construct
Spoofchecker


Constructor

Spoofchecker::areConfusable
Spoofchecker::isSuspicious
Spoofchecker
PHP Manual

Spoofchecker::__construct

(PHP >= 5.4.0, PECL intl >= 2.0.0)

Spoofchecker::__construct — Constructor

说明

public Spoofchecker::__construct ( void )

Creates new instance of Spoofchecker.

参数

此函数没有参数。

返回值

Returns Spoofchecker instance.

Spoofchecker::areConfusable
Spoofchecker::isSuspicious
Spoofchecker


Checks if a given text contains any suspicious characters

Spoofchecker::__construct
Spoofchecker::setAllowedLocales
Spoofchecker
PHP Manual

Spoofchecker::isSuspicious

(PHP >= 5.4.0, PECL intl >= 2.0.0)

Spoofchecker::isSuspicious — Checks if a given text contains any suspicious characters

说明

public bool Spoofchecker::isSuspicious ( string $text [, string &$error ] )

Checks if given string contains any suspicious characters like letters which are almost identical visually, but are Unicode characters from different sets.

参数

text

String to test.

error

This variable is set by-reference to string containing an error, if there were any.

返回值

Returns TRUE if there are suspicious characters, FALSE otherwise.

范例

Example #1 Spoofchecker::isSuspicious() example

<?php
$checker = new Spoofchecker();

$checker->isSuspicious('google.com'); // FALSE: only ASCII characters

$checker->isSuspicious('Рaypal.com'); // TRUE
// The first letter is from Cyrylic, not a regular latin "P"

Spoofchecker::__construct
Spoofchecker::setAllowedLocales
Spoofchecker


Locales to use when running checks

Spoofchecker::isSuspicious
Spoofchecker::setChecks
Spoofchecker
PHP Manual

Spoofchecker::setAllowedLocales

(PHP >= 5.4.0, PECL intl >= 2.0.0)

Spoofchecker::setAllowedLocales — Locales to use when running checks

说明

public void Spoofchecker::setAllowedLocales ( string $locale_list )

Warning

本函数还未编写文档，仅有参数列表。

参数

locale_list

返回值

Spoofchecker::isSuspicious
Spoofchecker::setChecks
Spoofchecker


Set the checks to run

Spoofchecker::setAllowedLocales
Transliterator
Spoofchecker
PHP Manual

Spoofchecker::setChecks

(PHP >= 5.4.0, PECL intl >= 2.0.0)

Spoofchecker::setChecks — Set the checks to run

说明

public void Spoofchecker::setChecks ( long $checks )

Warning

本函数还未编写文档，仅有参数列表。

参数

checks

返回值

Spoofchecker::setAllowedLocales
Transliterator
Spoofchecker


The Transliterator class

(PHP >= 5.4.0, PECL intl >= 2.0.0)

简介

Transliterator provides transliteration of strings.

类摘要

Transliterator {
/* 常量 */
const integer FORWARD = 0 ;
const integer REVERSE = 1 ;
/* 属性 */
public $id ;
/* 方法 */
__construct ( void )
public static Transliterator create ( string $id [, int $direction ] )
public static Transliterator createFromRules ( string $rules [, string $direction ] )
public Transliterator createInverse ( void )
public int getErrorCode ( void )
public string getErrorMessage ( void )
public static array listIDs ( void )
public string transliterate ( string $subject [, int $start [, int $end ]] )
}

属性

id

预定义常量

Transliterator::FORWARD

Transliterator::REVERSE

Table of Contents

  • Transliterator::__construct — Private constructor to deny instantiation
  • Transliterator::create — Create a transliterator
  • Transliterator::createFromRules — Create transliterator from rules
  • Transliterator::createInverse — Create an inverse transliterator
  • Transliterator::getErrorCode — Get last error code
  • Transliterator::getErrorMessage — Get last error message
  • Transliterator::listIDs — Get transliterator IDs
  • Transliterator::transliterate — Transliterate a string
Spoofchecker::setChecks
Transliterator::__construct
intl


Private constructor to deny instantiation

Transliterator
Transliterator::create
Transliterator
PHP Manual

Transliterator::__construct

(PHP >= 5.4.0, PECL intl >= 2.0.0)

Transliterator::__construct — Private constructor to deny instantiation

说明

Transliterator::__construct ( void )

This method should not be called. Its only purpose is to deny instantiation with the new operator.

Use the factory methods Transliterator::create() or Transliterator::createFromRules() instead.

参数

此函数没有参数。

返回值

This method should not be executed. If it is (e.g. through reflection), then its return value is unspecified.

参见

  • Transliterator::create() - Create a transliterator
  • Transliterator::createFromRules() - Create transliterator from rules

Transliterator
Transliterator::create
Transliterator


Create a transliterator

Transliterator::__construct
Transliterator::createFromRules
Transliterator
PHP Manual

Transliterator::create

transliterator_create

(PHP >= 5.4.0, PECL intl >= 2.0.0)

Transliterator::create -- transliterator_create — Create a transliterator

说明

面向对象风格

public static Transliterator Transliterator::create ( string $id [, int $direction ] )

过程化风格

Transliterator transliterator_create ( string $id [, int $direction ] )

Opens a Transliterator by id.

Warning

本函数还未编写文档，仅有参数列表。

参数

id

The id.

direction

The direction, defaults to >Transliterator::FORWARD. May also be set to Transliterator::REVERSE.

返回值

Returns a Transliterator object on success, or NULL on failure.

参见

  • Transliterator::getErrorMessage() - Get last error message
  • Transliterator::__construct() - Private constructor to deny instantiation

Transliterator::__construct
Transliterator::createFromRules
Transliterator


Create transliterator from rules

Transliterator::create
Transliterator::createInverse
Transliterator
PHP Manual

Transliterator::createFromRules

transliterator_create_from_rules

(PHP >= 5.4.0, PECL intl >= 2.0.0)

Transliterator::createFromRules -- transliterator_create_from_rules — Create transliterator from rules

说明

面向对象风格

public static Transliterator Transliterator::createFromRules ( string $rules [, string $direction ] )

过程化风格

Transliterator transliterator_create_from_rules ( string $id [, int $direction ] )

Creates a Transliterator from rules.

Warning

本函数还未编写文档，仅有参数列表。

参数

rules

The rules.

direction

The direction, defaults to >Transliterator::FORWARD. May also be set to Transliterator::REVERSE.

返回值

Returns a Transliterator object on success, or NULL on failure.

参见

  • Transliterator::getErrorMessage() - Get last error message
  • Transliterator::create() - Create a transliterator

Transliterator::create
Transliterator::createInverse
Transliterator


Create an inverse transliterator

Transliterator::createFromRules
Transliterator::getErrorCode
Transliterator
PHP Manual

Transliterator::createInverse

transliterator_create_inverse

(PHP >= 5.4.0, PECL intl >= 2.0.0)

Transliterator::createInverse -- transliterator_create_inverse — Create an inverse transliterator

说明

面向对象风格

public Transliterator Transliterator::createInverse ( void )

过程化风格

Transliterator transliterator_create_inverse ( void )

Opens the inverse transliterator.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Returns a Transliterator object on success, or NULL on failure

参见

  • Transliterator::getErrorMessage() - Get last error message
  • Transliterator::create() - Create a transliterator

Transliterator::createFromRules
Transliterator::getErrorCode
Transliterator


Get last error code

Transliterator::createInverse
Transliterator::getErrorMessage
Transliterator
PHP Manual

Transliterator::getErrorCode

transliterator_get_error_code

(PHP >= 5.4.0, PECL intl >= 2.0.0)

Transliterator::getErrorCode -- transliterator_get_error_code — Get last error code

说明

面向对象风格

public int Transliterator::getErrorCode ( void )

过程化风格

int transliterator_get_error_code ( void )

Gets the last error code for this transliterator.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The error code on success, or FALSE if none exists, or on failure.

参见

  • Transliterator::getErrorMessage() - Get last error message
  • Transliterator::listIDs() - Get transliterator IDs

Transliterator::createInverse
Transliterator::getErrorMessage
Transliterator


Get last error message

Transliterator::getErrorCode
Transliterator::listIDs
Transliterator
PHP Manual

Transliterator::getErrorMessage

transliterator_get_error_message

(PHP >= 5.4.0, PECL intl >= 2.0.0)

Transliterator::getErrorMessage -- transliterator_get_error_message — Get last error message

说明

面向对象风格

public string Transliterator::getErrorMessage ( void )

过程化风格

string transliterator_get_error_message ( void )

Gets the last error message for this transliterator.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The error message on success, or FALSE if none exists, or on failure.

参见

  • Transliterator::getErrorCode() - Get last error code
  • Transliterator::listIDs() - Get transliterator IDs

Transliterator::getErrorCode
Transliterator::listIDs
Transliterator


Get transliterator IDs

Transliterator::getErrorMessage
Transliterator::transliterate
Transliterator
PHP Manual

Transliterator::listIDs

transliterator_list_ids

(PHP >= 5.4.0, PECL intl >= 2.0.0)

Transliterator::listIDs -- transliterator_list_ids — Get transliterator IDs

说明

面向对象风格

public static array Transliterator::listIDs ( void )

过程化风格

array transliterator_list_ids ( void )

Returns an array with the registered transliterator IDs.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

An array of registered transliterator IDs on success, 或者在失败时返回 FALSE.

参见

  • Transliterator::getErrorMessage() - Get last error message
  • Transliterator::transliterate() - Transliterate a string

Transliterator::getErrorMessage
Transliterator::transliterate
Transliterator


Transliterate a string

Transliterator::listIDs
IntlBreakIterator
Transliterator
PHP Manual

Transliterator::transliterate

transliterator_transliterate

(PHP >= 5.4.0, PECL intl >= 2.0.0)

Transliterator::transliterate -- transliterator_transliterate — Transliterate a string

说明

面向对象风格

public string Transliterator::transliterate ( string $subject [, int $start [, int $end ]] )

过程化风格

transliterator_transliterate ( mixed $transliterator , string $subject [, int $start [, int $end ]] )

Transforms a string or part thereof using an ICU transliterator.

参数

transliterator

In the procedural version, either a Transliterator or a string from which a Transliterator can be built.

subject

The string to be transformed.

start

The start index (in UTF-16 code units) from which the string will start to be transformed, inclusive. Indexing starts at 0. The text before will be left as is.

end

The end index (in UTF-16 code units) until which the string will be transformed, exclusive. Indexing starts at 0. The text after will be left as is.

返回值

The transfomed string on success, 或者在失败时返回 FALSE.

范例

Example #1 Converting escaped UTF-16 code units

<?php
$s = "\u304A\u65E9\u3046\u3054\u3056\u3044\u307E\u3059";
echo transliterator_transliterate("Hex-Any/Java", $s), "\n";

//now the reverse operation with a supplementary character
$supplChar = html_entity_decode('&#x1D11E;');
echo mb_strlen($supplChar, "UTF-8"), "\n";
$encSupplChar = transliterator_transliterate("Any-Hex/Java", $supplChar);
//echoes two encoded UTF-16 code units
echo $encSupplChar, "\n";
//and back
echo transliterator_transliterate("Hex-Any/Java", $encSupplChar), "\n";
?>

以上例程的输出类似于：

お早うございます
1
\uD834\uDD1E
??

参见

  • Transliterator::getErrorMessage() - Get last error message
  • Transliterator::__construct() - Private constructor to deny instantiation

Transliterator::listIDs
IntlBreakIterator
Transliterator


The IntlBreakIterator class

(No version information available, might only be in Git)

简介

A "break iterator" is an ICU object that exposes methods for locating boundaries in text (e.g. word or sentence boundaries). The PHP IntlBreakIterator serves as the base class for all types of ICU break iterators. Where extra functionality is available, the intl extension may expose the ICU break iterator with suitable subclasses, such as IntlRuleBasedBreakIterator or IntlCodePointBreaIterator.

This class implements Traversable. Traversing an IntlBreakIterator yields non-negative integer values representing the successive locations of the text boundaries, expressed as UTF-8 code units (byte) counts, taken from the beggining of the text (which has the location 0). The keys yielded by the iterator simply form the sequence of natural numbers {0, 1, 2, ...}.

类摘要

IntlBreakIterator implements Traversable {
/* Constants */
const integer DONE = -1 ;
const integer WORD_NONE = 0 ;
const integer WORD_NONE_LIMIT = 100 ;
const integer WORD_NUMBER = 100 ;
const integer WORD_NUMBER_LIMIT = 200 ;
const integer WORD_LETTER = 200 ;
const integer WORD_LETTER_LIMIT = 300 ;
const integer WORD_KANA = 300 ;
const integer WORD_KANA_LIMIT = 400 ;
const integer WORD_IDEO = 400 ;
const integer WORD_IDEO_LIMIT = 500 ;
const integer LINE_SOFT = 0 ;
const integer LINE_SOFT_LIMIT = 100 ;
const integer LINE_HARD = 100 ;
const integer LINE_HARD_LIMIT = 200 ;
const integer SENTENCE_TERM = 0 ;
const integer SENTENCE_TERM_LIMIT = 100 ;
const integer SENTENCE_SEP = 100 ;
const integer SENTENCE_SEP_LIMIT = 200 ;
/* 方法 */
private __construct ( void )
public static ReturnType createCharacterInstance ([ string $"locale" ] )
public static ReturnType createCodePointInstance ( void )
public static ReturnType createLineInstance ([ string $"locale" ] )
public static ReturnType createSentenceInstance ([ string $"locale" ] )
public static ReturnType createTitleInstance ([ string $"locale" ] )
public static ReturnType createWordInstance ([ string $"locale" ] )
public ReturnType current ( void )
public ReturnType first ( void )
public ReturnType following ( string $"offset" )
public ReturnType getErrorCode ( void )
ReturnType intl_get_error_code ( void )
public ReturnType getErrorMessage ( void )
ReturnType intl_get_error_message ( void )
public ReturnType getLocale ( string $"locale_type" )
public ReturnType getPartsIterator ([ string $"key_type" ] )
public ReturnType getText ( void )
public ReturnType isBoundary ( string $"offset" )
public ReturnType last ( void )
public ReturnType next ([ string $"offset" ] )
public ReturnType preceding ( string $"offset" )
public ReturnType previous ( void )
public ReturnType setText ( string $"text" )
}

预定义常量

IntlBreakIterator::DONE

IntlBreakIterator::WORD_NONE

IntlBreakIterator::WORD_NONE_LIMIT

IntlBreakIterator::WORD_NUMBER

IntlBreakIterator::WORD_NUMBER_LIMIT

IntlBreakIterator::WORD_LETTER

IntlBreakIterator::WORD_LETTER_LIMIT

IntlBreakIterator::WORD_KANA

IntlBreakIterator::WORD_KANA_LIMIT

IntlBreakIterator::WORD_IDEO

IntlBreakIterator::WORD_IDEO_LIMIT

IntlBreakIterator::LINE_SOFT

IntlBreakIterator::LINE_SOFT_LIMIT

IntlBreakIterator::LINE_HARD

IntlBreakIterator::LINE_HARD_LIMIT

IntlBreakIterator::SENTENCE_TERM

IntlBreakIterator::SENTENCE_TERM_LIMIT

IntlBreakIterator::SENTENCE_SEP

IntlBreakIterator::SENTENCE_SEP_LIMIT

Table of Contents

  • IntlBreakIterator::__construct — Private constructor for disallowing instantiation
  • IntlBreakIterator::createCharacterInstance — Create break iterator for boundaries of combining character sequences
  • IntlBreakIterator::createCodePointInstance — Create break iterator for boundaries of code points
  • IntlBreakIterator::createLineInstance — Create break iterator for logically possible line breaks
  • IntlBreakIterator::createSentenceInstance — Create break iterator for sentence breaks
  • IntlBreakIterator::createTitleInstance — Create break iterator for title-casing breaks
  • IntlBreakIterator::createWordInstance — Create break iterator for word breaks
  • IntlBreakIterator::current — Get index of current position
  • IntlBreakIterator::first — Set position to the first character in the text
  • IntlBreakIterator::following — Advance the iterator to the first boundary following specified offset
  • IntlBreakIterator::getErrorCode — Get last error code on the object
  • IntlBreakIterator::getErrorMessage — Get last error message on the object
  • IntlBreakIterator::getLocale — Get the locale associated with the object
  • IntlBreakIterator::getPartsIterator — Create iterator for navigating fragments between boundaries
  • IntlBreakIterator::getText — Get the text being scanned
  • IntlBreakIterator::isBoundary — Tell whether an offset is a boundary?s offset
  • IntlBreakIterator::last — Set the iterator position to index beyond the last character
  • IntlBreakIterator::next — Advance the iterator the next boundary
  • IntlBreakIterator::preceding — Set the iterator position to the first boundary before an offset
  • IntlBreakIterator::previous — Set the iterator position to the boundary immediately before the current
  • IntlBreakIterator::setText — Set the text being scanned
Transliterator::transliterate
IntlBreakIterator::__construct
intl


Private constructor for disallowing instantiation

IntlBreakIterator
IntlBreakIterator::createCharacterInstance
IntlBreakIterator
PHP Manual

IntlBreakIterator::__construct

(No version information available, might only be in Git)

IntlBreakIterator::__construct — Private constructor for disallowing instantiation

说明

private IntlBreakIterator::__construct ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlBreakIterator
IntlBreakIterator::createCharacterInstance
IntlBreakIterator


Create break iterator for boundaries of combining character sequences

IntlBreakIterator::__construct
IntlBreakIterator::createCodePointInstance
IntlBreakIterator
PHP Manual

IntlBreakIterator::createCharacterInstance

(No version information available, might only be in Git)

IntlBreakIterator::createCharacterInstance — Create break iterator for boundaries of combining character sequences

说明

public static ReturnType IntlBreakIterator::createCharacterInstance ([ string $"locale" ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

"locale"

返回值

IntlBreakIterator::__construct
IntlBreakIterator::createCodePointInstance
IntlBreakIterator


Create break iterator for boundaries of code points

IntlBreakIterator::createCharacterInstance
IntlBreakIterator::createLineInstance
IntlBreakIterator
PHP Manual

IntlBreakIterator::createCodePointInstance

(No version information available, might only be in Git)

IntlBreakIterator::createCodePointInstance — Create break iterator for boundaries of code points

说明

public static ReturnType IntlBreakIterator::createCodePointInstance ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlBreakIterator::createCharacterInstance
IntlBreakIterator::createLineInstance
IntlBreakIterator


Create break iterator for logically possible line breaks

IntlBreakIterator::createCodePointInstance
IntlBreakIterator::createSentenceInstance
IntlBreakIterator
PHP Manual

IntlBreakIterator::createLineInstance

(No version information available, might only be in Git)

IntlBreakIterator::createLineInstance — Create break iterator for logically possible line breaks

说明

public static ReturnType IntlBreakIterator::createLineInstance ([ string $"locale" ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

"locale"

返回值

IntlBreakIterator::createCodePointInstance
IntlBreakIterator::createSentenceInstance
IntlBreakIterator


Create break iterator for sentence breaks

IntlBreakIterator::createLineInstance
IntlBreakIterator::createTitleInstance
IntlBreakIterator
PHP Manual

IntlBreakIterator::createSentenceInstance

(No version information available, might only be in Git)

IntlBreakIterator::createSentenceInstance — Create break iterator for sentence breaks

说明

public static ReturnType IntlBreakIterator::createSentenceInstance ([ string $"locale" ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

"locale"

返回值

IntlBreakIterator::createLineInstance
IntlBreakIterator::createTitleInstance
IntlBreakIterator


Create break iterator for title-casing breaks

IntlBreakIterator::createSentenceInstance
IntlBreakIterator::createWordInstance
IntlBreakIterator
PHP Manual

IntlBreakIterator::createTitleInstance

(No version information available, might only be in Git)

IntlBreakIterator::createTitleInstance — Create break iterator for title-casing breaks

说明

public static ReturnType IntlBreakIterator::createTitleInstance ([ string $"locale" ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

"locale"

返回值

IntlBreakIterator::createSentenceInstance
IntlBreakIterator::createWordInstance
IntlBreakIterator


Create break iterator for word breaks

IntlBreakIterator::createTitleInstance
IntlBreakIterator::current
IntlBreakIterator
PHP Manual

IntlBreakIterator::createWordInstance

(No version information available, might only be in Git)

IntlBreakIterator::createWordInstance — Create break iterator for word breaks

说明

public static ReturnType IntlBreakIterator::createWordInstance ([ string $"locale" ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

"locale"

返回值

IntlBreakIterator::createTitleInstance
IntlBreakIterator::current
IntlBreakIterator


Get index of current position

IntlBreakIterator::createWordInstance
IntlBreakIterator::first
IntlBreakIterator
PHP Manual

IntlBreakIterator::current

(No version information available, might only be in Git)

IntlBreakIterator::current — Get index of current position

说明

public ReturnType IntlBreakIterator::current ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlBreakIterator::createWordInstance
IntlBreakIterator::first
IntlBreakIterator


Set position to the first character in the text

IntlBreakIterator::current
IntlBreakIterator::following
IntlBreakIterator
PHP Manual

IntlBreakIterator::first

(No version information available, might only be in Git)

IntlBreakIterator::first — Set position to the first character in the text

说明

public ReturnType IntlBreakIterator::first ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlBreakIterator::current
IntlBreakIterator::following
IntlBreakIterator


Advance the iterator to the first boundary following specified offset

IntlBreakIterator::first
IntlBreakIterator::getErrorCode
IntlBreakIterator
PHP Manual

IntlBreakIterator::following

(No version information available, might only be in Git)

IntlBreakIterator::following — Advance the iterator to the first boundary following specified offset

说明

public ReturnType IntlBreakIterator::following ( string $"offset" )

Warning

本函数还未编写文档，仅有参数列表。

参数

"offset"

返回值

IntlBreakIterator::first
IntlBreakIterator::getErrorCode
IntlBreakIterator


Get last error code on the object

IntlBreakIterator::following
IntlBreakIterator::getErrorMessage
IntlBreakIterator
PHP Manual

IntlBreakIterator::getErrorCode

intl_get_error_code

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

IntlBreakIterator::getErrorCode -- intl_get_error_code — Get last error code on the object

说明

面向对象风格 (method):

public ReturnType IntlBreakIterator::getErrorCode ( void )

过程化风格:

ReturnType intl_get_error_code ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlBreakIterator::following
IntlBreakIterator::getErrorMessage
IntlBreakIterator


Get last error message on the object

IntlBreakIterator::getErrorCode
IntlBreakIterator::getLocale
IntlBreakIterator
PHP Manual

IntlBreakIterator::getErrorMessage

intl_get_error_message

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

IntlBreakIterator::getErrorMessage -- intl_get_error_message — Get last error message on the object

说明

面向对象风格 (method):

public ReturnType IntlBreakIterator::getErrorMessage ( void )

过程化风格:

ReturnType intl_get_error_message ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlBreakIterator::getErrorCode
IntlBreakIterator::getLocale
IntlBreakIterator


Get the locale associated with the object

IntlBreakIterator::getErrorMessage
IntlBreakIterator::getPartsIterator
IntlBreakIterator
PHP Manual

IntlBreakIterator::getLocale

(No version information available, might only be in Git)

IntlBreakIterator::getLocale — Get the locale associated with the object

说明

public ReturnType IntlBreakIterator::getLocale ( string $"locale_type" )

Warning

本函数还未编写文档，仅有参数列表。

参数

"locale_type"

返回值

IntlBreakIterator::getErrorMessage
IntlBreakIterator::getPartsIterator
IntlBreakIterator


Create iterator for navigating fragments between boundaries

IntlBreakIterator::getLocale
IntlBreakIterator::getText
IntlBreakIterator
PHP Manual

IntlBreakIterator::getPartsIterator

(No version information available, might only be in Git)

IntlBreakIterator::getPartsIterator — Create iterator for navigating fragments between boundaries

说明

public ReturnType IntlBreakIterator::getPartsIterator ([ string $"key_type" ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

"key_type"

返回值

IntlBreakIterator::getLocale
IntlBreakIterator::getText
IntlBreakIterator


Get the text being scanned

IntlBreakIterator::getPartsIterator
IntlBreakIterator::isBoundary
IntlBreakIterator
PHP Manual

IntlBreakIterator::getText

(No version information available, might only be in Git)

IntlBreakIterator::getText — Get the text being scanned

说明

public ReturnType IntlBreakIterator::getText ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlBreakIterator::getPartsIterator
IntlBreakIterator::isBoundary
IntlBreakIterator


Tell whether an offset is a boundary?s offset

IntlBreakIterator::getText
IntlBreakIterator::last
IntlBreakIterator
PHP Manual

IntlBreakIterator::isBoundary

(No version information available, might only be in Git)

IntlBreakIterator::isBoundary — Tell whether an offset is a boundary?s offset

说明

public ReturnType IntlBreakIterator::isBoundary ( string $"offset" )

Warning

本函数还未编写文档，仅有参数列表。

参数

"offset"

返回值

IntlBreakIterator::getText
IntlBreakIterator::last
IntlBreakIterator


Set the iterator position to index beyond the last character

IntlBreakIterator::isBoundary
IntlBreakIterator::next
IntlBreakIterator
PHP Manual

IntlBreakIterator::last

(No version information available, might only be in Git)

IntlBreakIterator::last — Set the iterator position to index beyond the last character

说明

public ReturnType IntlBreakIterator::last ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlBreakIterator::isBoundary
IntlBreakIterator::next
IntlBreakIterator


Advance the iterator the next boundary

IntlBreakIterator::last
IntlBreakIterator::preceding
IntlBreakIterator
PHP Manual

IntlBreakIterator::next

(No version information available, might only be in Git)

IntlBreakIterator::next — Advance the iterator the next boundary

说明

public ReturnType IntlBreakIterator::next ([ string $"offset" ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

"offset"

返回值

IntlBreakIterator::last
IntlBreakIterator::preceding
IntlBreakIterator


Set the iterator position to the first boundary before an offset

IntlBreakIterator::next
IntlBreakIterator::previous
IntlBreakIterator
PHP Manual

IntlBreakIterator::preceding

(No version information available, might only be in Git)

IntlBreakIterator::preceding — Set the iterator position to the first boundary before an offset

说明

public ReturnType IntlBreakIterator::preceding ( string $"offset" )

Warning

本函数还未编写文档，仅有参数列表。

参数

"offset"

返回值

IntlBreakIterator::next
IntlBreakIterator::previous
IntlBreakIterator


Set the iterator position to the boundary immediately before the current

IntlBreakIterator::preceding
IntlBreakIterator::setText
IntlBreakIterator
PHP Manual

IntlBreakIterator::previous

(No version information available, might only be in Git)

IntlBreakIterator::previous — Set the iterator position to the boundary immediately before the current

说明

public ReturnType IntlBreakIterator::previous ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlBreakIterator::preceding
IntlBreakIterator::setText
IntlBreakIterator


Set the text being scanned

IntlBreakIterator::previous
IntlRuleBasedBreakIterator
IntlBreakIterator
PHP Manual

IntlBreakIterator::setText

(No version information available, might only be in Git)

IntlBreakIterator::setText — Set the text being scanned

说明

public ReturnType IntlBreakIterator::setText ( string $"text" )

Warning

本函数还未编写文档，仅有参数列表。

参数

"text"

返回值

IntlBreakIterator::previous
IntlRuleBasedBreakIterator
IntlBreakIterator


The IntlRuleBasedBreakIterator class

(No version information available, might only be in Git)

简介

A subclass of IntlBreakIterator that encapsulates ICU break iterators whose behavior is specified using a set of rules. This is the most common kind of break iterators.

These rules are described in the » ICU Boundary Analysis User Guide.

类摘要

IntlRuleBasedBreakIterator extends IntlBreakIterator implements Traversable {
/* Constants */
const integer DONE = -1 ;
const integer WORD_NONE = 0 ;
const integer WORD_NONE_LIMIT = 100 ;
const integer WORD_NUMBER = 100 ;
const integer WORD_NUMBER_LIMIT = 200 ;
const integer WORD_LETTER = 200 ;
const integer WORD_LETTER_LIMIT = 300 ;
const integer WORD_KANA = 300 ;
const integer WORD_KANA_LIMIT = 400 ;
const integer WORD_IDEO = 400 ;
const integer WORD_IDEO_LIMIT = 500 ;
const integer LINE_SOFT = 0 ;
const integer LINE_SOFT_LIMIT = 100 ;
const integer LINE_HARD = 100 ;
const integer LINE_HARD_LIMIT = 200 ;
const integer SENTENCE_TERM = 0 ;
const integer SENTENCE_TERM_LIMIT = 100 ;
const integer SENTENCE_SEP = 100 ;
const integer SENTENCE_SEP_LIMIT = 200 ;
/* 方法 */
public __construct ( string $rules [, string $areCompiled ] )
public ReturnType getBinaryRules ( void )
public ReturnType getRules ( void )
public ReturnType getRuleStatus ( void )
public ReturnType getRuleStatusVec ( void )
/* 继承的方法 */
private IntlBreakIterator::__construct ( void )
public static ReturnType IntlBreakIterator::createCharacterInstance ([ string $"locale" ] )
public static ReturnType IntlBreakIterator::createCodePointInstance ( void )
public static ReturnType IntlBreakIterator::createLineInstance ([ string $"locale" ] )
public static ReturnType IntlBreakIterator::createSentenceInstance ([ string $"locale" ] )
public static ReturnType IntlBreakIterator::createTitleInstance ([ string $"locale" ] )
public static ReturnType IntlBreakIterator::createWordInstance ([ string $"locale" ] )
public ReturnType IntlBreakIterator::current ( void )
public ReturnType IntlBreakIterator::first ( void )
public ReturnType IntlBreakIterator::following ( string $"offset" )
public ReturnType IntlBreakIterator::getErrorCode ( void )
ReturnType intl_get_error_code ( void )
public ReturnType IntlBreakIterator::getErrorMessage ( void )
ReturnType intl_get_error_message ( void )
public ReturnType IntlBreakIterator::getLocale ( string $"locale_type" )
public ReturnType IntlBreakIterator::getPartsIterator ([ string $"key_type" ] )
public ReturnType IntlBreakIterator::getText ( void )
public ReturnType IntlBreakIterator::isBoundary ( string $"offset" )
public ReturnType IntlBreakIterator::last ( void )
public ReturnType IntlBreakIterator::next ([ string $"offset" ] )
public ReturnType IntlBreakIterator::preceding ( string $"offset" )
public ReturnType IntlBreakIterator::previous ( void )
public ReturnType IntlBreakIterator::setText ( string $"text" )
}

预定义常量

IntlRuleBasedBreakIterator::DONE

IntlRuleBasedBreakIterator::WORD_NONE

IntlRuleBasedBreakIterator::WORD_NONE_LIMIT

IntlRuleBasedBreakIterator::WORD_NUMBER

IntlRuleBasedBreakIterator::WORD_NUMBER_LIMIT

IntlRuleBasedBreakIterator::WORD_LETTER

IntlRuleBasedBreakIterator::WORD_LETTER_LIMIT

IntlRuleBasedBreakIterator::WORD_KANA

IntlRuleBasedBreakIterator::WORD_KANA_LIMIT

IntlRuleBasedBreakIterator::WORD_IDEO

IntlRuleBasedBreakIterator::WORD_IDEO_LIMIT

IntlRuleBasedBreakIterator::LINE_SOFT

IntlRuleBasedBreakIterator::LINE_SOFT_LIMIT

IntlRuleBasedBreakIterator::LINE_HARD

IntlRuleBasedBreakIterator::LINE_HARD_LIMIT

IntlRuleBasedBreakIterator::SENTENCE_TERM

IntlRuleBasedBreakIterator::SENTENCE_TERM_LIMIT

IntlRuleBasedBreakIterator::SENTENCE_SEP

IntlRuleBasedBreakIterator::SENTENCE_SEP_LIMIT

Table of Contents

  • IntlRuleBasedBreakIterator::__construct — Create iterator from ruleset
  • IntlRuleBasedBreakIterator::getBinaryRules — Get the binary form of compiled rules
  • IntlRuleBasedBreakIterator::getRules — Get the rule set used to create this object
  • IntlRuleBasedBreakIterator::getRuleStatus — Get the largest status value from the break rules that determined the current break position
  • IntlRuleBasedBreakIterator::getRuleStatusVec — Get the status values from the break rules that determined the current break position
IntlBreakIterator::setText
IntlRuleBasedBreakIterator::__construct
intl


Create iterator from ruleset

IntlRuleBasedBreakIterator
IntlRuleBasedBreakIterator::getBinaryRules
IntlRuleBasedBreakIterator
PHP Manual

IntlRuleBasedBreakIterator::__construct

(No version information available, might only be in Git)

IntlRuleBasedBreakIterator::__construct — Create iterator from ruleset

说明

public IntlRuleBasedBreakIterator::__construct ( string $rules [, string $areCompiled ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

"rules"

"areCompiled"

返回值

IntlRuleBasedBreakIterator
IntlRuleBasedBreakIterator::getBinaryRules
IntlRuleBasedBreakIterator


Get the binary form of compiled rules

IntlRuleBasedBreakIterator::__construct
IntlRuleBasedBreakIterator::getRules
IntlRuleBasedBreakIterator
PHP Manual

IntlRuleBasedBreakIterator::getBinaryRules

(No version information available, might only be in Git)

IntlRuleBasedBreakIterator::getBinaryRules — Get the binary form of compiled rules

说明

public ReturnType IntlRuleBasedBreakIterator::getBinaryRules ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlRuleBasedBreakIterator::__construct
IntlRuleBasedBreakIterator::getRules
IntlRuleBasedBreakIterator


Get the rule set used to create this object

IntlRuleBasedBreakIterator::getBinaryRules
IntlRuleBasedBreakIterator::getRuleStatus
IntlRuleBasedBreakIterator
PHP Manual

IntlRuleBasedBreakIterator::getRules

(No version information available, might only be in Git)

IntlRuleBasedBreakIterator::getRules — Get the rule set used to create this object

说明

public ReturnType IntlRuleBasedBreakIterator::getRules ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlRuleBasedBreakIterator::getBinaryRules
IntlRuleBasedBreakIterator::getRuleStatus
IntlRuleBasedBreakIterator


Get the largest status value from the break rules that determined the current break position

IntlRuleBasedBreakIterator::getRules
IntlRuleBasedBreakIterator::getRuleStatusVec
IntlRuleBasedBreakIterator
PHP Manual

IntlRuleBasedBreakIterator::getRuleStatus

(No version information available, might only be in Git)

IntlRuleBasedBreakIterator::getRuleStatus — Get the largest status value from the break rules that determined the current break position

说明

public ReturnType IntlRuleBasedBreakIterator::getRuleStatus ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlRuleBasedBreakIterator::getRules
IntlRuleBasedBreakIterator::getRuleStatusVec
IntlRuleBasedBreakIterator


Get the status values from the break rules that determined the current break position

IntlRuleBasedBreakIterator::getRuleStatus
IntlCodePointBreakIterator
IntlRuleBasedBreakIterator
PHP Manual

IntlRuleBasedBreakIterator::getRuleStatusVec

(No version information available, might only be in Git)

IntlRuleBasedBreakIterator::getRuleStatusVec — Get the status values from the break rules that determined the current break position

说明

public ReturnType IntlRuleBasedBreakIterator::getRuleStatusVec ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlRuleBasedBreakIterator::getRuleStatus
IntlCodePointBreakIterator
IntlRuleBasedBreakIterator


The IntlCodePointBreakIterator class

(No version information available, might only be in Git)

简介

This break iterator identifies the boundaries between UTF-8 code points.

类摘要

IntlCodePointBreakIterator extends IntlBreakIterator implements Traversable {
/* Constants */
const integer DONE = -1 ;
const integer WORD_NONE = 0 ;
const integer WORD_NONE_LIMIT = 100 ;
const integer WORD_NUMBER = 100 ;
const integer WORD_NUMBER_LIMIT = 200 ;
const integer WORD_LETTER = 200 ;
const integer WORD_LETTER_LIMIT = 300 ;
const integer WORD_KANA = 300 ;
const integer WORD_KANA_LIMIT = 400 ;
const integer WORD_IDEO = 400 ;
const integer WORD_IDEO_LIMIT = 500 ;
const integer LINE_SOFT = 0 ;
const integer LINE_SOFT_LIMIT = 100 ;
const integer LINE_HARD = 100 ;
const integer LINE_HARD_LIMIT = 200 ;
const integer SENTENCE_TERM = 0 ;
const integer SENTENCE_TERM_LIMIT = 100 ;
const integer SENTENCE_SEP = 100 ;
const integer SENTENCE_SEP_LIMIT = 200 ;
/* 方法 */
public ReturnType getLastCodePoint ( void )
/* 继承的方法 */
private IntlBreakIterator::__construct ( void )
public static ReturnType IntlBreakIterator::createCharacterInstance ([ string $"locale" ] )
public static ReturnType IntlBreakIterator::createCodePointInstance ( void )
public static ReturnType IntlBreakIterator::createLineInstance ([ string $"locale" ] )
public static ReturnType IntlBreakIterator::createSentenceInstance ([ string $"locale" ] )
public static ReturnType IntlBreakIterator::createTitleInstance ([ string $"locale" ] )
public static ReturnType IntlBreakIterator::createWordInstance ([ string $"locale" ] )
public ReturnType IntlBreakIterator::current ( void )
public ReturnType IntlBreakIterator::first ( void )
public ReturnType IntlBreakIterator::following ( string $"offset" )
public ReturnType IntlBreakIterator::getErrorCode ( void )
ReturnType intl_get_error_code ( void )
public ReturnType IntlBreakIterator::getErrorMessage ( void )
ReturnType intl_get_error_message ( void )
public ReturnType IntlBreakIterator::getLocale ( string $"locale_type" )
public ReturnType IntlBreakIterator::getPartsIterator ([ string $"key_type" ] )
public ReturnType IntlBreakIterator::getText ( void )
public ReturnType IntlBreakIterator::isBoundary ( string $"offset" )
public ReturnType IntlBreakIterator::last ( void )
public ReturnType IntlBreakIterator::next ([ string $"offset" ] )
public ReturnType IntlBreakIterator::preceding ( string $"offset" )
public ReturnType IntlBreakIterator::previous ( void )
public ReturnType IntlBreakIterator::setText ( string $"text" )
}

预定义常量

IntlCodePointBreakIterator::DONE

IntlCodePointBreakIterator::WORD_NONE

IntlCodePointBreakIterator::WORD_NONE_LIMIT

IntlCodePointBreakIterator::WORD_NUMBER

IntlCodePointBreakIterator::WORD_NUMBER_LIMIT

IntlCodePointBreakIterator::WORD_LETTER

IntlCodePointBreakIterator::WORD_LETTER_LIMIT

IntlCodePointBreakIterator::WORD_KANA

IntlCodePointBreakIterator::WORD_KANA_LIMIT

IntlCodePointBreakIterator::WORD_IDEO

IntlCodePointBreakIterator::WORD_IDEO_LIMIT

IntlCodePointBreakIterator::LINE_SOFT

IntlCodePointBreakIterator::LINE_SOFT_LIMIT

IntlCodePointBreakIterator::LINE_HARD

IntlCodePointBreakIterator::LINE_HARD_LIMIT

IntlCodePointBreakIterator::SENTENCE_TERM

IntlCodePointBreakIterator::SENTENCE_TERM_LIMIT

IntlCodePointBreakIterator::SENTENCE_SEP

IntlCodePointBreakIterator::SENTENCE_SEP_LIMIT

Table of Contents

  • IntlCodePointBreakIterator::getLastCodePoint — Get last code point passed over after advancing or receding the iterator
IntlRuleBasedBreakIterator::getRuleStatusVec
IntlCodePointBreakIterator::getLastCodePoint
intl


Get last code point passed over after advancing or receding the iterator

IntlCodePointBreakIterator
IntlPartsIterator
IntlCodePointBreakIterator
PHP Manual

IntlCodePointBreakIterator::getLastCodePoint

(No version information available, might only be in Git)

IntlCodePointBreakIterator::getLastCodePoint — Get last code point passed over after advancing or receding the iterator

说明

public ReturnType IntlCodePointBreakIterator::getLastCodePoint ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlCodePointBreakIterator
IntlPartsIterator
IntlCodePointBreakIterator


The IntlPartsIterator class

(No version information available, might only be in Git)

简介

Objects of this class can be obtained from IntlBreakIterator objects. While the break iterators provide a sequence of boundary positions when iterated, IntlPartsIterator objects provide, as a convenience, the text fragments comprehended between two successive boundaries.

The keys may represent the offset of the left boundary, right boundary, or they may just the sequence of non-negative integers. See IntlBreakIterator::getPartsIterator().

类摘要

IntlPartsIterator extends IntlIterator implements Iterator {
/* Constants */
const integer KEY_SEQUENTIAL = 0 ;
const integer KEY_LEFT = 1 ;
const integer KEY_RIGHT = 2 ;
/* 方法 */
public ReturnType getBreakIterator ( void )
/* 继承的方法 */
public ReturnType IntlIterator::current ( void )
public ReturnType IntlIterator::key ( void )
public ReturnType IntlIterator::next ( void )
public ReturnType IntlIterator::rewind ( void )
public ReturnType IntlIterator::valid ( void )
}

预定义常量

IntlPartsIterator::KEY_SEQUENTIAL

IntlPartsIterator::KEY_LEFT

IntlPartsIterator::KEY_RIGHT

Table of Contents

  • IntlPartsIterator::getBreakIterator — Get IntlBreakIterator backing this parts iterator
IntlCodePointBreakIterator::getLastCodePoint
IntlPartsIterator::getBreakIterator
intl


Get IntlBreakIterator backing this parts iterator

IntlPartsIterator
UConverter
IntlPartsIterator
PHP Manual

IntlPartsIterator::getBreakIterator

(No version information available, might only be in Git)

IntlPartsIterator::getBreakIterator — Get IntlBreakIterator backing this parts iterator

说明

public ReturnType IntlPartsIterator::getBreakIterator ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlPartsIterator
UConverter
IntlPartsIterator


The UConverter class

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

简介

类摘要

UConverter {
/* Constants */
const integer REASON_UNASSIGNED = 0 ;
const integer REASON_ILLEGAL = 1 ;
const integer REASON_IRREGULAR = 2 ;
const integer REASON_RESET = 3 ;
const integer REASON_CLOSE = 4 ;
const integer REASON_CLONE = 5 ;
const integer UNSUPPORTED_CONVERTER = -1 ;
const integer SBCS = 0 ;
const integer DBCS = 1 ;
const integer MBCS = 2 ;
const integer LATIN_1 = 3 ;
const integer UTF8 = 4 ;
const integer UTF16_BigEndian = 5 ;
const integer UTF16_LittleEndian = 6 ;
const integer UTF32_BigEndian = 7 ;
const integer UTF32_LittleEndian = 8 ;
const integer EBCDIC_STATEFUL = 9 ;
const integer ISO_2022 = 10 ;
const integer LMBCS_1 = 11 ;
const integer LMBCS_2 = 12 ;
const integer LMBCS_3 = 13 ;
const integer LMBCS_4 = 14 ;
const integer LMBCS_5 = 15 ;
const integer LMBCS_6 = 16 ;
const integer LMBCS_8 = 17 ;
const integer LMBCS_11 = 18 ;
const integer LMBCS_16 = 19 ;
const integer LMBCS_17 = 20 ;
const integer LMBCS_18 = 21 ;
const integer LMBCS_19 = 22 ;
const integer LMBCS_LAST = 22 ;
const integer HZ = 23 ;
const integer SCSU = 24 ;
const integer ISCII = 25 ;
const integer US_ASCII = 26 ;
const integer UTF7 = 27 ;
const integer BOCU1 = 28 ;
const integer UTF16 = 29 ;
const integer UTF32 = 30 ;
const integer CESU8 = 31 ;
const integer IMAP_MAILBOX = 32 ;
/* 方法 */
public __construct ([ string $destination_encoding [, string $source_encoding ]] )
public string convert ( string $str [, bool $reverse ] )
public mixed fromUCallback ( integer $reason , string $source , string $codePoint , integer &$error )
public static array getAliases ([ string $name ] )
public static array getAvailable ( void )
public string getDestinationEncoding ( void )
public integer getDestinationType ( void )
public integer getErrorCode ( void )
public string getErrorMessage ( void )
public string getSourceEncoding ( void )
public integer getSourceType ( void )
public static array getStandards ( void )
public string getSubstChars ( void )
public static string reasonText ([ integer $reason ] )
public void setDestinationEncoding ( string $encoding )
public void setSourceEncoding ( string $encoding )
public void setSubstChars ( string $chars )
public mixed toUCallback ( integer $reason , string $source , string $codeUnits , integer &$error )
public static string transcode ( string $str , string $toEncoding , string $fromEncoding [, array $options ] )
}

预定义常量

UConverter::REASON_UNASSIGNED

UConverter::REASON_ILLEGAL

UConverter::REASON_IRREGULAR

UConverter::REASON_RESET

UConverter::REASON_CLOSE

UConverter::REASON_CLONE

UConverter::UNSUPPORTED_CONVERTER

UConverter::SBCS

UConverter::DBCS

UConverter::MBCS

UConverter::LATIN_1

UConverter::UTF8

UConverter::UTF16_BigEndian

UConverter::UTF16_LittleEndian

UConverter::UTF32_BigEndian

UConverter::UTF32_LittleEndian

UConverter::EBCDIC_STATEFUL

UConverter::ISO_2022

UConverter::LMBCS_1

UConverter::LMBCS_2

UConverter::LMBCS_3

UConverter::LMBCS_4

UConverter::LMBCS_5

UConverter::LMBCS_6

UConverter::LMBCS_8

UConverter::LMBCS_11

UConverter::LMBCS_16

UConverter::LMBCS_17

UConverter::LMBCS_18

UConverter::LMBCS_19

UConverter::LMBCS_LAST

UConverter::HZ

UConverter::SCSU

UConverter::ISCII

UConverter::US_ASCII

UConverter::UTF7

UConverter::BOCU1

UConverter::UTF16

UConverter::UTF32

UConverter::CESU8

UConverter::IMAP_MAILBOX

Table of Contents

  • UConverter::__construct — Create UConverter object
  • UConverter::convert — Convert string from one charset to another
  • UConverter::fromUCallback — Default "from" callback function
  • UConverter::getAliases — Get the aliases of the given name
  • UConverter::getAvailable — Get the available canonical converter names
  • UConverter::getDestinationEncoding — Get the destination encoding
  • UConverter::getDestinationType — Get the destination converter type
  • UConverter::getErrorCode — Get last error code on the object
  • UConverter::getErrorMessage — Get last error message on the object
  • UConverter::getSourceEncoding — Get the source encoding
  • UConverter::getSourceType — Get the source convertor type
  • UConverter::getStandards — Get standards associated to converter names
  • UConverter::getSubstChars — Get substitution chars
  • UConverter::reasonText — Get string representation of the callback reason
  • UConverter::setDestinationEncoding — Set the destination encoding
  • UConverter::setSourceEncoding — Set the source encoding
  • UConverter::setSubstChars — Set the substitution chars
  • UConverter::toUCallback — Default "to" callback function
  • UConverter::transcode — Convert string from one charset to another
IntlPartsIterator::getBreakIterator
UConverter::__construct
intl


Create UConverter object

UConverter
UConverter::convert
UConverter
PHP Manual

UConverter::__construct

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

UConverter::__construct — Create UConverter object

说明

public UConverter::__construct ([ string $destination_encoding [, string $source_encoding ]] )

Warning

本函数还未编写文档，仅有参数列表。

参数

destination_encoding

source_encoding

返回值

UConverter
UConverter::convert
UConverter


Convert string from one charset to another

UConverter::__construct
UConverter::fromUCallback
UConverter
PHP Manual

UConverter::convert

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

UConverter::convert — Convert string from one charset to another

说明

public string UConverter::convert ( string $str [, bool $reverse ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

str

reverse

返回值

UConverter::__construct
UConverter::fromUCallback
UConverter


Default "from" callback function

UConverter::convert
UConverter::getAliases
UConverter
PHP Manual

UConverter::fromUCallback

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

UConverter::fromUCallback — Default "from" callback function

说明

public mixed UConverter::fromUCallback ( integer $reason , string $source , string $codePoint , integer &$error )

Warning

本函数还未编写文档，仅有参数列表。

参数

reason

source

codePoint

error

返回值

UConverter::convert
UConverter::getAliases
UConverter


Get the aliases of the given name

UConverter::fromUCallback
UConverter::getAvailable
UConverter
PHP Manual

UConverter::getAliases

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

UConverter::getAliases — Get the aliases of the given name

说明

public static array UConverter::getAliases ([ string $name ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

返回值

UConverter::fromUCallback
UConverter::getAvailable
UConverter


Get the available canonical converter names

UConverter::getAliases
UConverter::getDestinationEncoding
UConverter
PHP Manual

UConverter::getAvailable

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

UConverter::getAvailable — Get the available canonical converter names

说明

public static array UConverter::getAvailable ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

UConverter::getAliases
UConverter::getDestinationEncoding
UConverter


Get the destination encoding

UConverter::getAvailable
UConverter::getDestinationType
UConverter
PHP Manual

UConverter::getDestinationEncoding

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

UConverter::getDestinationEncoding — Get the destination encoding

说明

public string UConverter::getDestinationEncoding ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

UConverter::getAvailable
UConverter::getDestinationType
UConverter


Get the destination converter type

UConverter::getDestinationEncoding
UConverter::getErrorCode
UConverter
PHP Manual

UConverter::getDestinationType

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

UConverter::getDestinationType — Get the destination converter type

说明

public integer UConverter::getDestinationType ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

UConverter::getDestinationEncoding
UConverter::getErrorCode
UConverter


Get last error code on the object

UConverter::getDestinationType
UConverter::getErrorMessage
UConverter
PHP Manual

UConverter::getErrorCode

intl_get_error_code

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

UConverter::getErrorCode -- intl_get_error_code — Get last error code on the object

说明

public integer UConverter::getErrorCode ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

UConverter::getDestinationType
UConverter::getErrorMessage
UConverter


Get last error message on the object

UConverter::getErrorCode
UConverter::getSourceEncoding
UConverter
PHP Manual

UConverter::getErrorMessage

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

UConverter::getErrorMessage — Get last error message on the object

说明

public string UConverter::getErrorMessage ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

UConverter::getErrorCode
UConverter::getSourceEncoding
UConverter


Get the source encoding

UConverter::getErrorMessage
UConverter::getSourceType
UConverter
PHP Manual

UConverter::getSourceEncoding

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

UConverter::getSourceEncoding — Get the source encoding

说明

public string UConverter::getSourceEncoding ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

UConverter::getErrorMessage
UConverter::getSourceType
UConverter


Get the source convertor type

UConverter::getSourceEncoding
UConverter::getStandards
UConverter
PHP Manual

UConverter::getSourceType

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

UConverter::getSourceType — Get the source convertor type

说明

public integer UConverter::getSourceType ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

UConverter::getSourceEncoding
UConverter::getStandards
UConverter


Get standards associated to converter names

UConverter::getSourceType
UConverter::getSubstChars
UConverter
PHP Manual

UConverter::getStandards

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

UConverter::getStandards — Get standards associated to converter names

说明

public static array UConverter::getStandards ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

UConverter::getSourceType
UConverter::getSubstChars
UConverter


Get substitution chars

UConverter::getStandards
UConverter::reasonText
UConverter
PHP Manual

UConverter::getSubstChars

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

UConverter::getSubstChars — Get substitution chars

说明

public string UConverter::getSubstChars ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

UConverter::getStandards
UConverter::reasonText
UConverter


Get string representation of the callback reason

UConverter::getSubstChars
UConverter::setDestinationEncoding
UConverter
PHP Manual

UConverter::reasonText

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

UConverter::reasonText — Get string representation of the callback reason

说明

public static string UConverter::reasonText ([ integer $reason ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

reason

返回值

UConverter::getSubstChars
UConverter::setDestinationEncoding
UConverter


Set the destination encoding

UConverter::reasonText
UConverter::setSourceEncoding
UConverter
PHP Manual

UConverter::setDestinationEncoding

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

UConverter::setDestinationEncoding — Set the destination encoding

说明

public void UConverter::setDestinationEncoding ( string $encoding )

Warning

本函数还未编写文档，仅有参数列表。

参数

encoding

返回值

UConverter::reasonText
UConverter::setSourceEncoding
UConverter


Set the source encoding

UConverter::setDestinationEncoding
UConverter::setSubstChars
UConverter
PHP Manual

UConverter::setSourceEncoding

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

UConverter::setSourceEncoding — Set the source encoding

说明

public void UConverter::setSourceEncoding ( string $encoding )

Warning

本函数还未编写文档，仅有参数列表。

参数

encoding

返回值

UConverter::setDestinationEncoding
UConverter::setSubstChars
UConverter


Set the substitution chars

UConverter::setSourceEncoding
UConverter::toUCallback
UConverter
PHP Manual

UConverter::setSubstChars

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

UConverter::setSubstChars — Set the substitution chars

说明

public void UConverter::setSubstChars ( string $chars )

Warning

本函数还未编写文档，仅有参数列表。

参数

chars

返回值

UConverter::setSourceEncoding
UConverter::toUCallback
UConverter


Default "to" callback function

UConverter::setSubstChars
UConverter::transcode
UConverter
PHP Manual

UConverter::toUCallback

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

UConverter::toUCallback — Default "to" callback function

说明

public mixed UConverter::toUCallback ( integer $reason , string $source , string $codeUnits , integer &$error )

Warning

本函数还未编写文档，仅有参数列表。

参数

reason

source

codeUnits

error

返回值

UConverter::setSubstChars
UConverter::transcode
UConverter


Convert string from one charset to another

UConverter::toUCallback
Grapheme 函数
UConverter
PHP Manual

UConverter::transcode

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)

UConverter::transcode — Convert string from one charset to another

说明

public static string UConverter::transcode ( string $str , string $toEncoding , string $fromEncoding [, array $options ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

str

toEncoding

fromEncoding

options

返回值

UConverter::toUCallback
Grapheme 函数
UConverter


Grapheme 函数

Table of Contents

  • grapheme_extract — Function to extract a sequence of default grapheme clusters from a text buffer, which must be encoded in UTF-8.
  • grapheme_stripos — Find position (in grapheme units) of first occurrence of a case-insensitive string
  • grapheme_stristr — Returns part of haystack string from the first occurrence of case-insensitive needle to the end of haystack.
  • grapheme_strlen — Get string length in grapheme units
  • grapheme_strpos — Find position (in grapheme units) of first occurrence of a string
  • grapheme_strripos — Find position (in grapheme units) of last occurrence of a case-insensitive string
  • grapheme_strrpos — Find position (in grapheme units) of last occurrence of a string
  • grapheme_strstr — Returns part of haystack string from the first occurrence of needle to the end of haystack.
  • grapheme_substr — Return part of a string
UConverter::transcode
grapheme_extract
intl


Function to extract a sequence of default grapheme clusters from a text buffer, which must be encoded in UTF-8.

Grapheme 函数
grapheme_stripos
Grapheme 函数
PHP Manual

grapheme_extract

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

grapheme_extract — Function to extract a sequence of default grapheme clusters from a text buffer, which must be encoded in UTF-8.

说明

过程化风格

string grapheme_extract ( string $haystack , int $size [, int $extract_type [, int $start = 0 [, int &$next ]]] )

Function to extract a sequence of default grapheme clusters from a text buffer, which must be encoded in UTF-8.

参数

haystack

String to search.

size

Maximum number items - based on the $extract_type - to return.

extract_type

Defines the type of units referred to by the $size parameter:

  • GRAPHEME_EXTR_COUNT (default) - $size is the number of default grapheme clusters to extract.
  • GRAPHEME_EXTR_MAXBYTES - $size is the maximum number of bytes returned.
  • GRAPHEME_EXTR_MAXCHARS - $size is the maximum number of UTF-8 characters returned.

start

Starting position in $haystack in bytes - if given, it must be zero or a positive value that is less than or equal to the length of $haystack in bytes, or a negative value that counts from the end of $haystack. If $start does not point to the first byte of a UTF-8 character, the start position is moved to the next character boundary.

next

Reference to a value that will be set to the next starting position. When the call returns, this may point to the first byte position past the end of the string.

返回值

A string starting at offset $start and ending on a default grapheme cluster boundary that conforms to the $size and $extract_type specified.

更新日志

版本 | 说明
7.1.0 | Support for negative starts has been added.

范例

Example #1 grapheme_extract() example

<?php

$char_a_ring_nfd = "a\xCC\x8A";  // 'LATIN SMALL LETTER A WITH RING ABOVE' (U+00E5) normalization form "D"
$char_o_diaeresis_nfd = "o\xCC\x88"; // 'LATIN SMALL LETTER O WITH DIAERESIS' (U+00F6) normalization form "D"

print urlencode(grapheme_extract( $char_a_ring_nfd . $char_o_diaeresis_nfd, 1, GRAPHEME_EXTR_COUNT, 2));

?>

以上例程会输出：

o%CC%88

参见

  • grapheme_substr() - Return part of a string
  • » Unicode Text Segmentation: Grapheme Cluster Boundaries

Grapheme 函数
grapheme_stripos
Grapheme 函数


Find position (in grapheme units) of first occurrence of a case-insensitive string

grapheme_extract
grapheme_stristr
Grapheme 函数
PHP Manual

grapheme_stripos

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

grapheme_stripos — Find position (in grapheme units) of first occurrence of a case-insensitive string

说明

过程化风格

int grapheme_stripos ( string $haystack , string $needle [, int $offset = 0 ] )

Find position (in grapheme units) of first occurrence of a case-insensitive string

参数

haystack

The string to look in. Must be valid UTF-8.

needle

The string to look for. Must be valid UTF-8.

offset

The optional $offset parameter allows you to specify where in haystack to start searching as an offset in grapheme units (not bytes or characters). If the offset is negative, it is treated relative to the end of the string. The position returned is still relative to the beginning of haystack regardless of the value of $offset.

返回值

Returns the position as an integer. If needle is not found, grapheme_stripos() will return boolean FALSE.

更新日志

版本 | 说明
7.1.0 | Support for negative offsets has been added.

范例

Example #1 grapheme_stripos() example

<?php

$char_a_ring_nfd = "a\xCC\x8A";  // 'LATIN SMALL LETTER A WITH RING ABOVE' (U+00E5) normalization form "D"
$char_o_diaeresis_nfd = "o\xCC\x88"; // 'LATIN SMALL LETTER O WITH DIAERESIS' (U+00F6) normalization form "D"
$char_O_diaeresis_nfd = "O\xCC\x88"; // 'LATIN CAPITAL LETTER O WITH DIAERESIS' (U+00D6) normalization form "D"

print grapheme_stripos( $char_a_ring_nfd . $char_a_ring_nfd . $char_o_diaeresis_nfd, $char_O_diaeresis_nfd);

?>

以上例程会输出：

2

参见

  • grapheme_stristr() - Returns part of haystack string from the first occurrence of case-insensitive needle to the end of haystack.
  • grapheme_strpos() - Find position (in grapheme units) of first occurrence of a string
  • grapheme_strripos() - Find position (in grapheme units) of last occurrence of a case-insensitive string
  • grapheme_strrpos() - Find position (in grapheme units) of last occurrence of a string
  • grapheme_strstr() - Returns part of haystack string from the first occurrence of needle to the end of haystack.
  • » Unicode Text Segmentation: Grapheme Cluster Boundaries

grapheme_extract
grapheme_stristr
Grapheme 函数


Returns part of haystack string from the first occurrence of case-insensitive needle to the end of haystack.

grapheme_stripos
grapheme_strlen
Grapheme 函数
PHP Manual

grapheme_stristr

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

grapheme_stristr — Returns part of haystack string from the first occurrence of case-insensitive needle to the end of haystack.

说明

过程化风格

string grapheme_stristr ( string $haystack , string $needle [, bool $before_needle = false ] )

Returns part of haystack string starting from and including the first occurrence of case-insensitive needle to the end of haystack.

参数

haystack

The input string. Must be valid UTF-8.

needle

The string to look for. Must be valid UTF-8.

before_needle

If TRUE, grapheme_strstr() returns the part of the haystack before the first occurrence of the needle (excluding needle).

返回值

Returns the portion of $haystack, or FALSE if $needle is not found.

范例

Example #1 grapheme_stristr() example

<?php

$char_a_ring_nfd = "a\xCC\x8A";  // 'LATIN SMALL LETTER A WITH RING ABOVE' (U+00E5) normalization form "D"
$char_o_diaeresis_nfd = "o\xCC\x88"; // 'LATIN SMALL LETTER O WITH DIAERESIS' (U+00F6) normalization form "D"
$char_O_diaeresis_nfd = "O\xCC\x88"; // 'LATIN CAPITAL LETTER O WITH DIAERESIS' (U+00D6) normalization form "D"

print urlencode(grapheme_stristr( $char_a_ring_nfd . $char_o_diaeresis_nfd . $char_a_ring_nfd, $char_O_diaeresis_nfd));

?>

以上例程会输出：

o%CC%88a%CC%8A

参见

  • grapheme_stripos() - Find position (in grapheme units) of first occurrence of a case-insensitive string
  • grapheme_strpos() - Find position (in grapheme units) of first occurrence of a string
  • grapheme_strripos() - Find position (in grapheme units) of last occurrence of a case-insensitive string
  • grapheme_strrpos() - Find position (in grapheme units) of last occurrence of a string
  • grapheme_strstr() - Returns part of haystack string from the first occurrence of needle to the end of haystack.
  • » Unicode Text Segmentation: Grapheme Cluster Boundaries

grapheme_stripos
grapheme_strlen
Grapheme 函数


Get string length in grapheme units

grapheme_stristr
grapheme_strpos
Grapheme 函数
PHP Manual

grapheme_strlen

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

grapheme_strlen — Get string length in grapheme units

说明

过程化风格

int grapheme_strlen ( string $input )

Get string length in grapheme units (not bytes or characters)

参数

input

The string being measured for length. It must be a valid UTF-8 string.

返回值

The length of the string on success, and 0 if the string is empty.

范例

Example #1 grapheme_strlen() example

<?php

$char_a_ring_nfd = "a\xCC\x8A";  // 'LATIN SMALL LETTER A WITH RING ABOVE' (U+00E5) normalization form "D"
$char_o_diaeresis_nfd = "o\xCC\x88"; // 'LATIN SMALL LETTER O WITH DIAERESIS' (U+00F6) normalization form "D"

print grapheme_strlen( 'abc' . $char_a_ring_nfd . $char_o_diaeresis_nfd . $char_a_ring_nfd);

?>

以上例程会输出：

6

参见

  • » Unicode Text Segmentation: Grapheme Cluster Boundaries
  • iconv_strlen() - 返回字符串的字符数统计
  • mb_strlen() - 获取字符串的长度
  • strlen() - 获取字符串长度

grapheme_stristr
grapheme_strpos
Grapheme 函数


Find position (in grapheme units) of first occurrence of a string

grapheme_strlen
grapheme_strripos
Grapheme 函数
PHP Manual

grapheme_strpos

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

grapheme_strpos — Find position (in grapheme units) of first occurrence of a string

说明

过程化风格

int grapheme_strpos ( string $haystack , string $needle [, int $offset = 0 ] )

Find position (in grapheme units) of first occurrence of a string

参数

haystack

The string to look in. Must be valid UTF-8.

needle

The string to look for. Must be valid UTF-8.

offset

The optional $offset parameter allows you to specify where in $haystack to start searching as an offset in grapheme units (not bytes or characters). If the offset is negative, it is treated relative to the end of the string. The position returned is still relative to the beginning of haystack regardless of the value of $offset.

返回值

Returns the position as an integer. If needle is not found, grapheme_strpos() will return boolean FALSE.

更新日志

版本 | 说明
7.1.0 | Support for negative offsets has been added.

范例

Example #1 grapheme_strpos() example

<?php

$char_a_ring_nfd = "a\xCC\x8A";  // 'LATIN SMALL LETTER A WITH RING ABOVE' (U+00E5) normalization form "D"
$char_o_diaeresis_nfd = "o\xCC\x88"; // 'LATIN SMALL LETTER O WITH DIAERESIS' (U+00F6) normalization form "D"

print grapheme_strpos( $char_a_ring_nfd . $char_a_ring_nfd . $char_o_diaeresis_nfd, $char_o_diaeresis_nfd);

?>

以上例程会输出：

2

参见

  • grapheme_stripos() - Find position (in grapheme units) of first occurrence of a case-insensitive string
  • grapheme_stristr() - Returns part of haystack string from the first occurrence of case-insensitive needle to the end of haystack.
  • grapheme_strripos() - Find position (in grapheme units) of last occurrence of a case-insensitive string
  • grapheme_strrpos() - Find position (in grapheme units) of last occurrence of a string
  • grapheme_strstr() - Returns part of haystack string from the first occurrence of needle to the end of haystack.
  • » Unicode Text Segmentation: Grapheme Cluster Boundaries

grapheme_strlen
grapheme_strripos
Grapheme 函数


Find position (in grapheme units) of last occurrence of a case-insensitive string

grapheme_strpos
grapheme_strrpos
Grapheme 函数
PHP Manual

grapheme_strripos

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

grapheme_strripos — Find position (in grapheme units) of last occurrence of a case-insensitive string

说明

过程化风格

int grapheme_strripos ( string $haystack , string $needle [, int $offset = 0 ] )

Find position (in grapheme units) of last occurrence of a case-insensitive string

参数

haystack

The string to look in. Must be valid UTF-8.

needle

The string to look for. Must be valid UTF-8.

offset

The optional $offset parameter allows you to specify where in $haystack to start searching as an offset in grapheme units (not bytes or characters). The position returned is still relative to the beginning of haystack regardless of the value of $offset.

返回值

Returns the position as an integer. If needle is not found, grapheme_strripos() will return boolean FALSE.

范例

Example #1 grapheme_strripos() example

<?php

$char_a_ring_nfd = "a\xCC\x8A";  // 'LATIN SMALL LETTER A WITH RING ABOVE' (U+00E5) normalization form "D"
$char_o_diaeresis_nfd = "o\xCC\x88"; // 'LATIN SMALL LETTER O WITH DIAERESIS' (U+00F6) normalization form "D"
$char_O_diaeresis_nfd = "O\xCC\x88"; // 'LATIN CAPITAL LETTER O WITH DIAERESIS' (U+00D6) normalization form "D"

print grapheme_strripos( $char_a_ring_nfd . $char_o_diaeresis_nfd . $char_o_diaeresis_nfd, $char_O_diaeresis_nfd);

?>

以上例程会输出：

2

参见

  • grapheme_stripos() - Find position (in grapheme units) of first occurrence of a case-insensitive string
  • grapheme_stristr() - Returns part of haystack string from the first occurrence of case-insensitive needle to the end of haystack.
  • grapheme_strpos() - Find position (in grapheme units) of first occurrence of a string
  • grapheme_strrpos() - Find position (in grapheme units) of last occurrence of a string
  • grapheme_strstr() - Returns part of haystack string from the first occurrence of needle to the end of haystack.
  • » Unicode Text Segmentation: Grapheme Cluster Boundaries

grapheme_strpos
grapheme_strrpos
Grapheme 函数


Find position (in grapheme units) of last occurrence of a string

grapheme_strripos
grapheme_strstr
Grapheme 函数
PHP Manual

grapheme_strrpos

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

grapheme_strrpos — Find position (in grapheme units) of last occurrence of a string

说明

过程化风格

int grapheme_strrpos ( string $haystack , string $needle [, int $offset = 0 ] )

Find position (in grapheme units) of last occurrence of a string

参数

haystack

The string to look in. Must be valid UTF-8.

needle

The string to look for. Must be valid UTF-8.

offset

The optional $offset parameter allows you to specify where in $haystack to start searching as an offset in grapheme units (not bytes or characters). The position returned is still relative to the beginning of haystack regardless of the value of $offset.

返回值

Returns the position as an integer. If needle is not found, grapheme_strrpos() will return boolean FALSE.

范例

Example #1 grapheme_strrpos() example

<?php
$char_a_ring_nfd = "a\xCC\x8A";  // 'LATIN SMALL LETTER A WITH RING ABOVE' (U+00E5) normalization form "D"
$char_o_diaeresis_nfd = "o\xCC\x88"; // 'LATIN SMALL LETTER O WITH DIAERESIS' (U+00F6) normalization form "D"

print grapheme_strrpos( $char_a_ring_nfd . $char_o_diaeresis_nfd . $char_o_diaeresis_nfd, $char_o_diaeresis_nfd);
?>

以上例程会输出：

2

参见

  • grapheme_stripos() - Find position (in grapheme units) of first occurrence of a case-insensitive string
  • grapheme_stristr() - Returns part of haystack string from the first occurrence of case-insensitive needle to the end of haystack.
  • grapheme_strpos() - Find position (in grapheme units) of first occurrence of a string
  • grapheme_strripos() - Find position (in grapheme units) of last occurrence of a case-insensitive string
  • grapheme_strstr() - Returns part of haystack string from the first occurrence of needle to the end of haystack.
  • » Unicode Text Segmentation: Grapheme Cluster Boundaries

grapheme_strripos
grapheme_strstr
Grapheme 函数


Returns part of haystack string from the first occurrence of needle to the end of haystack.

grapheme_strrpos
grapheme_substr
Grapheme 函数
PHP Manual

grapheme_strstr

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

grapheme_strstr — Returns part of haystack string from the first occurrence of needle to the end of haystack.

说明

过程化风格

string grapheme_strstr ( string $haystack , string $needle [, bool $before_needle = false ] )

Returns part of haystack string from the first occurrence of needle to the end of haystack (including the needle).

参数

haystack

The input string. Must be valid UTF-8.

needle

The string to look for. Must be valid UTF-8.

before_needle

If TRUE, grapheme_strstr() returns the part of the haystack before the first occurrence of the needle (excluding the needle).

返回值

Returns the portion of string, or FALSE if needle is not found.

范例

Example #1 grapheme_strstr() example

<?php

$char_a_ring_nfd = "a\xCC\x8A";  // 'LATIN SMALL LETTER A WITH RING ABOVE' (U+00E5) normalization form "D"
$char_o_diaeresis_nfd = "o\xCC\x88"; // 'LATIN SMALL LETTER O WITH DIAERESIS' (U+00F6) normalization form "D"

print urlencode(grapheme_stristr( $char_a_ring_nfd . $char_o_diaeresis_nfd . $char_a_ring_nfd, $char_o_diaeresis_nfd));

?>

以上例程会输出：

o%CC%88a%CC%8A

参见

  • grapheme_stristr() - Returns part of haystack string from the first occurrence of case-insensitive needle to the end of haystack.
  • grapheme_stripos() - Find position (in grapheme units) of first occurrence of a case-insensitive string
  • grapheme_strpos() - Find position (in grapheme units) of first occurrence of a string
  • grapheme_strripos() - Find position (in grapheme units) of last occurrence of a case-insensitive string
  • grapheme_strrpos() - Find position (in grapheme units) of last occurrence of a string
  • » Unicode Text Segmentation: Grapheme Cluster Boundaries

grapheme_strrpos
grapheme_substr
Grapheme 函数


Return part of a string

grapheme_strstr
IDN 函数
Grapheme 函数
PHP Manual

grapheme_substr

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

grapheme_substr — Return part of a string

说明

过程化风格

int grapheme_substr ( string $string , int $start [, int $length ] )

Return part of a string

参数

string

The input string. Must be valid UTF-8.

start

Start position in default grapheme units. If $start is non-negative, the returned string will start at the $start'th position in $string, counting from zero. If $start is negative, the returned string will start at the $start'th grapheme unit from the end of string.

length

Length in grapheme units. If $length is given and is positive, the string returned will contain at most $length grapheme units beginning from $start (depending on the length of string). If $length is given and is negative, then that many grapheme units will be omitted from the end of string (after the start position has been calculated when a start is negative). If $start denotes a position beyond this truncation, FALSE will be returned.

返回值

Returns the extracted part of $string.

更新日志

版本 | 说明
5.4 | If length is given and positive and the argument string is shorter than the specified length, all the rest of the string according to start parameter is returned. Previously, FALSE was returned.

范例

Example #1 grapheme_substr() example

<?php

$char_a_ring_nfd = "a\xCC\x8A";  // 'LATIN SMALL LETTER A WITH RING ABOVE' (U+00E5) normalization form "D"
$char_o_diaeresis_nfd = "o\xCC\x88"; // 'LATIN SMALL LETTER O WITH DIAERESIS' (U+00F6) normalization form "D"

print urlencode(grapheme_substr( "ao" . $char_a_ring_nfd . "bc" . $char_o_diaeresis_nfd . "O", 2, -1 ));
?>

以上例程会输出：

a%CC%8Abco%CC%88

参见

  • grapheme_extract() - Function to extract a sequence of default grapheme clusters from a text buffer, which must be encoded in UTF-8.
  • » Unicode Text Segmentation: Grapheme Cluster Boundaries

grapheme_strstr
IDN 函数
Grapheme 函数


IDN 函数

Table of Contents

  • idn_to_ascii — Convert domain name to IDNA ASCII form.
  • idn_to_utf8 — Convert domain name from IDNA ASCII to Unicode.
grapheme_substr
idn_to_ascii
intl


Convert domain name to IDNA ASCII form.

IDN 函数
idn_to_utf8
IDN 函数
PHP Manual

idn_to_ascii

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.2, PHP 7, PECL idn >= 0.1)

idn_to_ascii — Convert domain name to IDNA ASCII form.

说明

过程化风格

string idn_to_ascii ( string $domain [, int $options = 0 [, int $variant = INTL_IDNA_VARIANT_2003 [, array &$idna_info ]]] )

This function converts a Unicode domain name to an IDNA ASCII-compatible format.

参数

domain

The domain to convert, which must be UTF-8 encoded.

options

Conversion options - combination of IDNA_* constants (except IDNA_ERROR_* constants).

variant

Either INTL_IDNA_VARIANT_2003 for IDNA 2003 or INTL_IDNA_VARIANT_UTS46 for UTS #46.

idna_info

This parameter can be used only if INTL_IDNA_VARIANT_UTS46 was used for variant. In that case, it will be filled with an array with the keys 'result', the possibly illegal result of the transformation, 'isTransitionalDifferent', a boolean indicating whether the usage of the transitional mechanisms of UTS #46 either has or would have changed the result and 'errors', which is an int representing a bitset of the error constants IDNA_ERROR_*.

返回值

The domain name encoded in ASCII-compatible form, 或者在失败时返回 FALSE

更新日志

版本 | 说明
7.2.0 | INTL_IDNA_VARIANT_2003 has been deprecated; use INTL_IDNA_VARIANT_UTS46 instead.
5.4.0/PECL 2.0.0b1 | Added the parameters variant and idna_info; UTS #46 support.

范例

Example #1 idn_to_ascii() example

<?php

echo idn_to_ascii('t?st.de');

?>

以上例程会输出：

xn--tst-qla.de

参见

  • idn_to_utf8() - Convert domain name from IDNA ASCII to Unicode.

IDN 函数
idn_to_utf8
IDN 函数


Convert domain name from IDNA ASCII to Unicode.

idn_to_ascii
IntlChar
IDN 函数
PHP Manual

idn_to_utf8

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.2, PHP 7, PECL idn >= 0.1)

idn_to_utf8 — Convert domain name from IDNA ASCII to Unicode.

说明

过程化风格

string idn_to_utf8 ( string $domain [, int $options = 0 [, int $variant = INTL_IDNA_VARIANT_2003 [, array &$idna_info ]]] )

This function converts a Unicode domain name from an IDNA ASCII-compatible format to plain Unicode, encoded in UTF-8.

参数

domain

Domain to convert in an IDNA ASCII-compatible format.

options

Conversion options - combination of IDNA_* constants (except IDNA_ERROR_* constants).

variant

Either INTL_IDNA_VARIANT_2003 for IDNA 2003 or INTL_IDNA_VARIANT_UTS46 for UTS #46.

idna_info

This parameter can be used only if INTL_IDNA_VARIANT_UTS46 was used for variant. In that case, it will be filled with an array with the keys 'result', the possibly illegal result of the transformation, 'isTransitionalDifferent', a boolean indicating whether the usage of the transitional mechanisms of UTS #46 either has or would have changed the result and 'errors', which is an int representing a bitset of the error constants IDNA_ERROR_*.

返回值

The domain name in Unicode, encoded in UTF-8, 或者在失败时返回 FALSE

更新日志

版本 | 说明
7.2.0 | INTL_IDNA_VARIANT_2003 has been deprecated; use INTL_IDNA_VARIANT_UTS46 instead.
5.4.0/PECL 2.0.0b1 | Added the parameters variant and idna_info; UTS #46 support.

范例

Example #1 idn_to_utf8() example

<?php

echo idn_to_utf8('xn--tst-qla.de');

?>

以上例程会输出：

t?st.de

参见

  • idn_to_ascii() - Convert domain name to IDNA ASCII form.

idn_to_ascii
IntlChar
IDN 函数


IntlChar

(PHP 7)

简介

IntlChar provides access to a number of utility methods that can be used to access information about Unicode characters.

The methods and constants adhere closely to the names and behavior used by the underlying ICU library.

类摘要

IntlChar {
/* Constants */
const string UNICODE_VERSION = 6.3 ;
const integer CODEPOINT_MIN = 0 ;
const integer CODEPOINT_MAX = 1114111 ;
const float NO_NUMERIC_VALUE = -123456789 ;
const integer PROPERTY_ALPHABETIC = 0 ;
const integer PROPERTY_BINARY_START = 0 ;
const integer PROPERTY_ASCII_HEX_DIGIT = 1 ;
const integer PROPERTY_BIDI_CONTROL = 2 ;
const integer PROPERTY_BIDI_MIRRORED = 3 ;
const integer PROPERTY_DASH = 4 ;
const integer PROPERTY_DEFAULT_IGNORABLE_CODE_POINT = 5 ;
const integer PROPERTY_DEPRECATED = 6 ;
const integer PROPERTY_DIACRITIC = 7 ;
const integer PROPERTY_EXTENDER = 8 ;
const integer PROPERTY_FULL_COMPOSITION_EXCLUSION = 9 ;
const integer PROPERTY_GRAPHEME_BASE = 10 ;
const integer PROPERTY_GRAPHEME_EXTEND = 11 ;
const integer PROPERTY_GRAPHEME_LINK = 12 ;
const integer PROPERTY_HEX_DIGIT = 13 ;
const integer PROPERTY_HYPHEN = 14 ;
const integer PROPERTY_ID_CONTINUE = 15 ;
const integer PROPERTY_ID_START = 16 ;
const integer PROPERTY_IDEOGRAPHIC = 17 ;
const integer PROPERTY_IDS_BINARY_OPERATOR = 18 ;
const integer PROPERTY_IDS_TRINARY_OPERATOR = 19 ;
const integer PROPERTY_JOIN_CONTROL = 20 ;
const integer PROPERTY_LOGICAL_ORDER_EXCEPTION = 21 ;
const integer PROPERTY_LOWERCASE = 22 ;
const integer PROPERTY_MATH = 23 ;
const integer PROPERTY_NONCHARACTER_CODE_POINT = 24 ;
const integer PROPERTY_QUOTATION_MARK = 25 ;
const integer PROPERTY_RADICAL = 26 ;
const integer PROPERTY_SOFT_DOTTED = 27 ;
const integer PROPERTY_TERMINAL_PUNCTUATION = 28 ;
const integer PROPERTY_UNIFIED_IDEOGRAPH = 29 ;
const integer PROPERTY_UPPERCASE = 30 ;
const integer PROPERTY_WHITE_SPACE = 31 ;
const integer PROPERTY_XID_CONTINUE = 32 ;
const integer PROPERTY_XID_START = 33 ;
const integer PROPERTY_CASE_SENSITIVE = 34 ;
const integer PROPERTY_S_TERM = 35 ;
const integer PROPERTY_VARIATION_SELECTOR = 36 ;
const integer PROPERTY_NFD_INERT = 37 ;
const integer PROPERTY_NFKD_INERT = 38 ;
const integer PROPERTY_NFC_INERT = 39 ;
const integer PROPERTY_NFKC_INERT = 40 ;
const integer PROPERTY_SEGMENT_STARTER = 41 ;
const integer PROPERTY_PATTERN_SYNTAX = 42 ;
const integer PROPERTY_PATTERN_WHITE_SPACE = 43 ;
const integer PROPERTY_POSIX_ALNUM = 44 ;
const integer PROPERTY_POSIX_BLANK = 45 ;
const integer PROPERTY_POSIX_GRAPH = 46 ;
const integer PROPERTY_POSIX_PRINT = 47 ;
const integer PROPERTY_POSIX_XDIGIT = 48 ;
const integer PROPERTY_CASED = 49 ;
const integer PROPERTY_CASE_IGNORABLE = 50 ;
const integer PROPERTY_CHANGES_WHEN_LOWERCASED = 51 ;
const integer PROPERTY_CHANGES_WHEN_UPPERCASED = 52 ;
const integer PROPERTY_CHANGES_WHEN_TITLECASED = 53 ;
const integer PROPERTY_CHANGES_WHEN_CASEFOLDED = 54 ;
const integer PROPERTY_CHANGES_WHEN_CASEMAPPED = 55 ;
const integer PROPERTY_CHANGES_WHEN_NFKC_CASEFOLDED = 56 ;
const integer PROPERTY_BINARY_LIMIT = 57 ;
const integer PROPERTY_BIDI_CLASS = 4096 ;
const integer PROPERTY_INT_START = 4096 ;
const integer PROPERTY_BLOCK = 4097 ;
const integer PROPERTY_CANONICAL_COMBINING_CLASS = 4098 ;
const integer PROPERTY_DECOMPOSITION_TYPE = 4099 ;
const integer PROPERTY_EAST_ASIAN_WIDTH = 4100 ;
const integer PROPERTY_GENERAL_CATEGORY = 4101 ;
const integer PROPERTY_JOINING_GROUP = 4102 ;
const integer PROPERTY_JOINING_TYPE = 4103 ;
const integer PROPERTY_LINE_BREAK = 4104 ;
const integer PROPERTY_NUMERIC_TYPE = 4105 ;
const integer PROPERTY_SCRIPT = 4106 ;
const integer PROPERTY_HANGUL_SYLLABLE_TYPE = 4107 ;
const integer PROPERTY_NFD_QUICK_CHECK = 4108 ;
const integer PROPERTY_NFKD_QUICK_CHECK = 4109 ;
const integer PROPERTY_NFC_QUICK_CHECK = 4110 ;
const integer PROPERTY_NFKC_QUICK_CHECK = 4111 ;
const integer PROPERTY_LEAD_CANONICAL_COMBINING_CLASS = 4112 ;
const integer PROPERTY_TRAIL_CANONICAL_COMBINING_CLASS = 4113 ;
const integer PROPERTY_GRAPHEME_CLUSTER_BREAK = 4114 ;
const integer PROPERTY_SENTENCE_BREAK = 4115 ;
const integer PROPERTY_WORD_BREAK = 4116 ;
const integer PROPERTY_BIDI_PAIRED_BRACKET_TYPE = 4117 ;
const integer PROPERTY_INT_LIMIT = 4118 ;
const integer PROPERTY_GENERAL_CATEGORY_MASK = 8192 ;
const integer PROPERTY_MASK_START = 8192 ;
const integer PROPERTY_MASK_LIMIT = 8193 ;
const integer PROPERTY_NUMERIC_VALUE = 12288 ;
const integer PROPERTY_DOUBLE_START = 12288 ;
const integer PROPERTY_DOUBLE_LIMIT = 12289 ;
const integer PROPERTY_AGE = 16384 ;
const integer PROPERTY_STRING_START = 16384 ;
const integer PROPERTY_BIDI_MIRRORING_GLYPH = 16385 ;
const integer PROPERTY_CASE_FOLDING = 16386 ;
const integer PROPERTY_ISO_COMMENT = 16387 ;
const integer PROPERTY_LOWERCASE_MAPPING = 16388 ;
const integer PROPERTY_NAME = 16389 ;
const integer PROPERTY_SIMPLE_CASE_FOLDING = 16390 ;
const integer PROPERTY_SIMPLE_LOWERCASE_MAPPING = 16391 ;
const integer PROPERTY_SIMPLE_TITLECASE_MAPPING = 16392 ;
const integer PROPERTY_SIMPLE_UPPERCASE_MAPPING = 16393 ;
const integer PROPERTY_TITLECASE_MAPPING = 16394 ;
const integer PROPERTY_UNICODE_1_NAME = 16395 ;
const integer PROPERTY_UPPERCASE_MAPPING = 16396 ;
const integer PROPERTY_BIDI_PAIRED_BRACKET = 16397 ;
const integer PROPERTY_STRING_LIMIT = 16398 ;
const integer PROPERTY_SCRIPT_EXTENSIONS = 28672 ;
const integer PROPERTY_OTHER_PROPERTY_START = 28672 ;
const integer PROPERTY_OTHER_PROPERTY_LIMIT = 28673 ;
const integer PROPERTY_INVALID_CODE = -1 ;
const integer CHAR_CATEGORY_UNASSIGNED = 0 ;
const integer CHAR_CATEGORY_GENERAL_OTHER_TYPES = 0 ;
const integer CHAR_CATEGORY_UPPERCASE_LETTER = 1 ;
const integer CHAR_CATEGORY_LOWERCASE_LETTER = 2 ;
const integer CHAR_CATEGORY_TITLECASE_LETTER = 3 ;
const integer CHAR_CATEGORY_MODIFIER_LETTER = 4 ;
const integer CHAR_CATEGORY_OTHER_LETTER = 5 ;
const integer CHAR_CATEGORY_NON_SPACING_MARK = 6 ;
const integer CHAR_CATEGORY_ENCLOSING_MARK = 7 ;
const integer CHAR_CATEGORY_COMBINING_SPACING_MARK = 8 ;
const integer CHAR_CATEGORY_DECIMAL_DIGIT_NUMBER = 9 ;
const integer CHAR_CATEGORY_LETTER_NUMBER = 10 ;
const integer CHAR_CATEGORY_OTHER_NUMBER = 11 ;
const integer CHAR_CATEGORY_SPACE_SEPARATOR = 12 ;
const integer CHAR_CATEGORY_LINE_SEPARATOR = 13 ;
const integer CHAR_CATEGORY_PARAGRAPH_SEPARATOR = 14 ;
const integer CHAR_CATEGORY_CONTROL_CHAR = 15 ;
const integer CHAR_CATEGORY_FORMAT_CHAR = 16 ;
const integer CHAR_CATEGORY_PRIVATE_USE_CHAR = 17 ;
const integer CHAR_CATEGORY_SURROGATE = 18 ;
const integer CHAR_CATEGORY_DASH_PUNCTUATION = 19 ;
const integer CHAR_CATEGORY_START_PUNCTUATION = 20 ;
const integer CHAR_CATEGORY_END_PUNCTUATION = 21 ;
const integer CHAR_CATEGORY_CONNECTOR_PUNCTUATION = 22 ;
const integer CHAR_CATEGORY_OTHER_PUNCTUATION = 23 ;
const integer CHAR_CATEGORY_MATH_SYMBOL = 24 ;
const integer CHAR_CATEGORY_CURRENCY_SYMBOL = 25 ;
const integer CHAR_CATEGORY_MODIFIER_SYMBOL = 26 ;
const integer CHAR_CATEGORY_OTHER_SYMBOL = 27 ;
const integer CHAR_CATEGORY_INITIAL_PUNCTUATION = 28 ;
const integer CHAR_CATEGORY_FINAL_PUNCTUATION = 29 ;
const integer CHAR_CATEGORY_CHAR_CATEGORY_COUNT = 30 ;
const integer CHAR_DIRECTION_LEFT_TO_RIGHT = 0 ;
const integer CHAR_DIRECTION_RIGHT_TO_LEFT = 1 ;
const integer CHAR_DIRECTION_EUROPEAN_NUMBER = 2 ;
const integer CHAR_DIRECTION_EUROPEAN_NUMBER_SEPARATOR = 3 ;
const integer CHAR_DIRECTION_EUROPEAN_NUMBER_TERMINATOR = 4 ;
const integer CHAR_DIRECTION_ARABIC_NUMBER = 5 ;
const integer CHAR_DIRECTION_COMMON_NUMBER_SEPARATOR = 6 ;
const integer CHAR_DIRECTION_BLOCK_SEPARATOR = 7 ;
const integer CHAR_DIRECTION_SEGMENT_SEPARATOR = 8 ;
const integer CHAR_DIRECTION_WHITE_SPACE_NEUTRAL = 9 ;
const integer CHAR_DIRECTION_OTHER_NEUTRAL = 10 ;
const integer CHAR_DIRECTION_LEFT_TO_RIGHT_EMBEDDING = 11 ;
const integer CHAR_DIRECTION_LEFT_TO_RIGHT_OVERRIDE = 12 ;
const integer CHAR_DIRECTION_RIGHT_TO_LEFT_ARABIC = 13 ;
const integer CHAR_DIRECTION_RIGHT_TO_LEFT_EMBEDDING = 14 ;
const integer CHAR_DIRECTION_RIGHT_TO_LEFT_OVERRIDE = 15 ;
const integer CHAR_DIRECTION_POP_DIRECTIONAL_FORMAT = 16 ;
const integer CHAR_DIRECTION_DIR_NON_SPACING_MARK = 17 ;
const integer CHAR_DIRECTION_BOUNDARY_NEUTRAL = 18 ;
const integer CHAR_DIRECTION_FIRST_STRONG_ISOLATE = 19 ;
const integer CHAR_DIRECTION_LEFT_TO_RIGHT_ISOLATE = 20 ;
const integer CHAR_DIRECTION_RIGHT_TO_LEFT_ISOLATE = 21 ;
const integer CHAR_DIRECTION_POP_DIRECTIONAL_ISOLATE = 22 ;
const integer CHAR_DIRECTION_CHAR_DIRECTION_COUNT = 23 ;
const integer BLOCK_CODE_NO_BLOCK = 0 ;
const integer BLOCK_CODE_BASIC_LATIN = 1 ;
const integer BLOCK_CODE_LATIN_1_SUPPLEMENT = 2 ;
const integer BLOCK_CODE_LATIN_EXTENDED_A = 3 ;
const integer BLOCK_CODE_LATIN_EXTENDED_B = 4 ;
const integer BLOCK_CODE_IPA_EXTENSIONS = 5 ;
const integer BLOCK_CODE_SPACING_MODIFIER_LETTERS = 6 ;
const integer BLOCK_CODE_COMBINING_DIACRITICAL_MARKS = 7 ;
const integer BLOCK_CODE_GREEK = 8 ;
const integer BLOCK_CODE_CYRILLIC = 9 ;
const integer BLOCK_CODE_ARMENIAN = 10 ;
const integer BLOCK_CODE_HEBREW = 11 ;
const integer BLOCK_CODE_ARABIC = 12 ;
const integer BLOCK_CODE_SYRIAC = 13 ;
const integer BLOCK_CODE_THAANA = 14 ;
const integer BLOCK_CODE_DEVANAGARI = 15 ;
const integer BLOCK_CODE_BENGALI = 16 ;
const integer BLOCK_CODE_GURMUKHI = 17 ;
const integer BLOCK_CODE_GUJARATI = 18 ;
const integer BLOCK_CODE_ORIYA = 19 ;
const integer BLOCK_CODE_TAMIL = 20 ;
const integer BLOCK_CODE_TELUGU = 21 ;
const integer BLOCK_CODE_KANNADA = 22 ;
const integer BLOCK_CODE_MALAYALAM = 23 ;
const integer BLOCK_CODE_SINHALA = 24 ;
const integer BLOCK_CODE_THAI = 25 ;
const integer BLOCK_CODE_LAO = 26 ;
const integer BLOCK_CODE_TIBETAN = 27 ;
const integer BLOCK_CODE_MYANMAR = 28 ;
const integer BLOCK_CODE_GEORGIAN = 29 ;
const integer BLOCK_CODE_HANGUL_JAMO = 30 ;
const integer BLOCK_CODE_ETHIOPIC = 31 ;
const integer BLOCK_CODE_CHEROKEE = 32 ;
const integer BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS = 33 ;
const integer BLOCK_CODE_OGHAM = 34 ;
const integer BLOCK_CODE_RUNIC = 35 ;
const integer BLOCK_CODE_KHMER = 36 ;
const integer BLOCK_CODE_MONGOLIAN = 37 ;
const integer BLOCK_CODE_LATIN_EXTENDED_ADDITIONAL = 38 ;
const integer BLOCK_CODE_GREEK_EXTENDED = 39 ;
const integer BLOCK_CODE_GENERAL_PUNCTUATION = 40 ;
const integer BLOCK_CODE_SUPERSCRIPTS_AND_SUBSCRIPTS = 41 ;
const integer BLOCK_CODE_CURRENCY_SYMBOLS = 42 ;
const integer BLOCK_CODE_COMBINING_MARKS_FOR_SYMBOLS = 43 ;
const integer BLOCK_CODE_LETTERLIKE_SYMBOLS = 44 ;
const integer BLOCK_CODE_NUMBER_FORMS = 45 ;
const integer BLOCK_CODE_ARROWS = 46 ;
const integer BLOCK_CODE_MATHEMATICAL_OPERATORS = 47 ;
const integer BLOCK_CODE_MISCELLANEOUS_TECHNICAL = 48 ;
const integer BLOCK_CODE_CONTROL_PICTURES = 49 ;
const integer BLOCK_CODE_OPTICAL_CHARACTER_RECOGNITION = 50 ;
const integer BLOCK_CODE_ENCLOSED_ALPHANUMERICS = 51 ;
const integer BLOCK_CODE_BOX_DRAWING = 52 ;
const integer BLOCK_CODE_BLOCK_ELEMENTS = 53 ;
const integer BLOCK_CODE_GEOMETRIC_SHAPES = 54 ;
const integer BLOCK_CODE_MISCELLANEOUS_SYMBOLS = 55 ;
const integer BLOCK_CODE_DINGBATS = 56 ;
const integer BLOCK_CODE_BRAILLE_PATTERNS = 57 ;
const integer BLOCK_CODE_CJK_RADICALS_SUPPLEMENT = 58 ;
const integer BLOCK_CODE_KANGXI_RADICALS = 59 ;
const integer BLOCK_CODE_IDEOGRAPHIC_DESCRIPTION_CHARACTERS = 60 ;
const integer BLOCK_CODE_CJK_SYMBOLS_AND_PUNCTUATION = 61 ;
const integer BLOCK_CODE_HIRAGANA = 62 ;
const integer BLOCK_CODE_KATAKANA = 63 ;
const integer BLOCK_CODE_BOPOMOFO = 64 ;
const integer BLOCK_CODE_HANGUL_COMPATIBILITY_JAMO = 65 ;
const integer BLOCK_CODE_KANBUN = 66 ;
const integer BLOCK_CODE_BOPOMOFO_EXTENDED = 67 ;
const integer BLOCK_CODE_ENCLOSED_CJK_LETTERS_AND_MONTHS = 68 ;
const integer BLOCK_CODE_CJK_COMPATIBILITY = 69 ;
const integer BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A = 70 ;
const integer BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS = 71 ;
const integer BLOCK_CODE_YI_SYLLABLES = 72 ;
const integer BLOCK_CODE_YI_RADICALS = 73 ;
const integer BLOCK_CODE_HANGUL_SYLLABLES = 74 ;
const integer BLOCK_CODE_HIGH_SURROGATES = 75 ;
const integer BLOCK_CODE_HIGH_PRIVATE_USE_SURROGATES = 76 ;
const integer BLOCK_CODE_LOW_SURROGATES = 77 ;
const integer BLOCK_CODE_PRIVATE_USE_AREA = 78 ;
const integer BLOCK_CODE_PRIVATE_USE = 78 ;
const integer BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS = 79 ;
const integer BLOCK_CODE_ALPHABETIC_PRESENTATION_FORMS = 80 ;
const integer BLOCK_CODE_ARABIC_PRESENTATION_FORMS_A = 81 ;
const integer BLOCK_CODE_COMBINING_HALF_MARKS = 82 ;
const integer BLOCK_CODE_CJK_COMPATIBILITY_FORMS = 83 ;
const integer BLOCK_CODE_SMALL_FORM_VARIANTS = 84 ;
const integer BLOCK_CODE_ARABIC_PRESENTATION_FORMS_B = 85 ;
const integer BLOCK_CODE_SPECIALS = 86 ;
const integer BLOCK_CODE_HALFWIDTH_AND_FULLWIDTH_FORMS = 87 ;
const integer BLOCK_CODE_OLD_ITALIC = 88 ;
const integer BLOCK_CODE_GOTHIC = 89 ;
const integer BLOCK_CODE_DESERET = 90 ;
const integer BLOCK_CODE_BYZANTINE_MUSICAL_SYMBOLS = 91 ;
const integer BLOCK_CODE_MUSICAL_SYMBOLS = 92 ;
const integer BLOCK_CODE_MATHEMATICAL_ALPHANUMERIC_SYMBOLS = 93 ;
const integer BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B = 94 ;
const integer BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT = 95 ;
const integer BLOCK_CODE_TAGS = 96 ;
const integer BLOCK_CODE_CYRILLIC_SUPPLEMENT = 97 ;
const integer BLOCK_CODE_CYRILLIC_SUPPLEMENTARY = 97 ;
const integer BLOCK_CODE_TAGALOG = 98 ;
const integer BLOCK_CODE_HANUNOO = 99 ;
const integer BLOCK_CODE_BUHID = 100 ;
const integer BLOCK_CODE_TAGBANWA = 101 ;
const integer BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A = 102 ;
const integer BLOCK_CODE_SUPPLEMENTAL_ARROWS_A = 103 ;
const integer BLOCK_CODE_SUPPLEMENTAL_ARROWS_B = 104 ;
const integer BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B = 105 ;
const integer BLOCK_CODE_SUPPLEMENTAL_MATHEMATICAL_OPERATORS = 106 ;
const integer BLOCK_CODE_KATAKANA_PHONETIC_EXTENSIONS = 107 ;
const integer BLOCK_CODE_VARIATION_SELECTORS = 108 ;
const integer BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_A = 109 ;
const integer BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_B = 110 ;
const integer BLOCK_CODE_LIMBU = 111 ;
const integer BLOCK_CODE_TAI_LE = 112 ;
const integer BLOCK_CODE_KHMER_SYMBOLS = 113 ;
const integer BLOCK_CODE_PHONETIC_EXTENSIONS = 114 ;
const integer BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_ARROWS = 115 ;
const integer BLOCK_CODE_YIJING_HEXAGRAM_SYMBOLS = 116 ;
const integer BLOCK_CODE_LINEAR_B_SYLLABARY = 117 ;
const integer BLOCK_CODE_LINEAR_B_IDEOGRAMS = 118 ;
const integer BLOCK_CODE_AEGEAN_NUMBERS = 119 ;
const integer BLOCK_CODE_UGARITIC = 120 ;
const integer BLOCK_CODE_SHAVIAN = 121 ;
const integer BLOCK_CODE_OSMANYA = 122 ;
const integer BLOCK_CODE_CYPRIOT_SYLLABARY = 123 ;
const integer BLOCK_CODE_TAI_XUAN_JING_SYMBOLS = 124 ;
const integer BLOCK_CODE_VARIATION_SELECTORS_SUPPLEMENT = 125 ;
const integer BLOCK_CODE_ANCIENT_GREEK_MUSICAL_NOTATION = 126 ;
const integer BLOCK_CODE_ANCIENT_GREEK_NUMBERS = 127 ;
const integer BLOCK_CODE_ARABIC_SUPPLEMENT = 128 ;
const integer BLOCK_CODE_BUGINESE = 129 ;
const integer BLOCK_CODE_CJK_STROKES = 130 ;
const integer BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT = 131 ;
const integer BLOCK_CODE_COPTIC = 132 ;
const integer BLOCK_CODE_ETHIOPIC_EXTENDED = 133 ;
const integer BLOCK_CODE_ETHIOPIC_SUPPLEMENT = 134 ;
const integer BLOCK_CODE_GEORGIAN_SUPPLEMENT = 135 ;
const integer BLOCK_CODE_GLAGOLITIC = 136 ;
const integer BLOCK_CODE_KHAROSHTHI = 137 ;
const integer BLOCK_CODE_MODIFIER_TONE_LETTERS = 138 ;
const integer BLOCK_CODE_NEW_TAI_LUE = 139 ;
const integer BLOCK_CODE_OLD_PERSIAN = 140 ;
const integer BLOCK_CODE_PHONETIC_EXTENSIONS_SUPPLEMENT = 141 ;
const integer BLOCK_CODE_SUPPLEMENTAL_PUNCTUATION = 142 ;
const integer BLOCK_CODE_SYLOTI_NAGRI = 143 ;
const integer BLOCK_CODE_TIFINAGH = 144 ;
const integer BLOCK_CODE_VERTICAL_FORMS = 145 ;
const integer BLOCK_CODE_NKO = 146 ;
const integer BLOCK_CODE_BALINESE = 147 ;
const integer BLOCK_CODE_LATIN_EXTENDED_C = 148 ;
const integer BLOCK_CODE_LATIN_EXTENDED_D = 149 ;
const integer BLOCK_CODE_PHAGS_PA = 150 ;
const integer BLOCK_CODE_PHOENICIAN = 151 ;
const integer BLOCK_CODE_CUNEIFORM = 152 ;
const integer BLOCK_CODE_CUNEIFORM_NUMBERS_AND_PUNCTUATION = 153 ;
const integer BLOCK_CODE_COUNTING_ROD_NUMERALS = 154 ;
const integer BLOCK_CODE_SUNDANESE = 155 ;
const integer BLOCK_CODE_LEPCHA = 156 ;
const integer BLOCK_CODE_OL_CHIKI = 157 ;
const integer BLOCK_CODE_CYRILLIC_EXTENDED_A = 158 ;
const integer BLOCK_CODE_VAI = 159 ;
const integer BLOCK_CODE_CYRILLIC_EXTENDED_B = 160 ;
const integer BLOCK_CODE_SAURASHTRA = 161 ;
const integer BLOCK_CODE_KAYAH_LI = 162 ;
const integer BLOCK_CODE_REJANG = 163 ;
const integer BLOCK_CODE_CHAM = 164 ;
const integer BLOCK_CODE_ANCIENT_SYMBOLS = 165 ;
const integer BLOCK_CODE_PHAISTOS_DISC = 166 ;
const integer BLOCK_CODE_LYCIAN = 167 ;
const integer BLOCK_CODE_CARIAN = 168 ;
const integer BLOCK_CODE_LYDIAN = 169 ;
const integer BLOCK_CODE_MAHJONG_TILES = 170 ;
const integer BLOCK_CODE_DOMINO_TILES = 171 ;
const integer BLOCK_CODE_SAMARITAN = 172 ;
const integer BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED = 173 ;
const integer BLOCK_CODE_TAI_THAM = 174 ;
const integer BLOCK_CODE_VEDIC_EXTENSIONS = 175 ;
const integer BLOCK_CODE_LISU = 176 ;
const integer BLOCK_CODE_BAMUM = 177 ;
const integer BLOCK_CODE_COMMON_INDIC_NUMBER_FORMS = 178 ;
const integer BLOCK_CODE_DEVANAGARI_EXTENDED = 179 ;
const integer BLOCK_CODE_HANGUL_JAMO_EXTENDED_A = 180 ;
const integer BLOCK_CODE_JAVANESE = 181 ;
const integer BLOCK_CODE_MYANMAR_EXTENDED_A = 182 ;
const integer BLOCK_CODE_TAI_VIET = 183 ;
const integer BLOCK_CODE_MEETEI_MAYEK = 184 ;
const integer BLOCK_CODE_HANGUL_JAMO_EXTENDED_B = 185 ;
const integer BLOCK_CODE_IMPERIAL_ARAMAIC = 186 ;
const integer BLOCK_CODE_OLD_SOUTH_ARABIAN = 187 ;
const integer BLOCK_CODE_AVESTAN = 188 ;
const integer BLOCK_CODE_INSCRIPTIONAL_PARTHIAN = 189 ;
const integer BLOCK_CODE_INSCRIPTIONAL_PAHLAVI = 190 ;
const integer BLOCK_CODE_OLD_TURKIC = 191 ;
const integer BLOCK_CODE_RUMI_NUMERAL_SYMBOLS = 192 ;
const integer BLOCK_CODE_KAITHI = 193 ;
const integer BLOCK_CODE_EGYPTIAN_HIEROGLYPHS = 194 ;
const integer BLOCK_CODE_ENCLOSED_ALPHANUMERIC_SUPPLEMENT = 195 ;
const integer BLOCK_CODE_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT = 196 ;
const integer BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C = 197 ;
const integer BLOCK_CODE_MANDAIC = 198 ;
const integer BLOCK_CODE_BATAK = 199 ;
const integer BLOCK_CODE_ETHIOPIC_EXTENDED_A = 200 ;
const integer BLOCK_CODE_BRAHMI = 201 ;
const integer BLOCK_CODE_BAMUM_SUPPLEMENT = 202 ;
const integer BLOCK_CODE_KANA_SUPPLEMENT = 203 ;
const integer BLOCK_CODE_PLAYING_CARDS = 204 ;
const integer BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS = 205 ;
const integer BLOCK_CODE_EMOTICONS = 206 ;
const integer BLOCK_CODE_TRANSPORT_AND_MAP_SYMBOLS = 207 ;
const integer BLOCK_CODE_ALCHEMICAL_SYMBOLS = 208 ;
const integer BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D = 209 ;
const integer BLOCK_CODE_ARABIC_EXTENDED_A = 210 ;
const integer BLOCK_CODE_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS = 211 ;
const integer BLOCK_CODE_CHAKMA = 212 ;
const integer BLOCK_CODE_MEETEI_MAYEK_EXTENSIONS = 213 ;
const integer BLOCK_CODE_MEROITIC_CURSIVE = 214 ;
const integer BLOCK_CODE_MEROITIC_HIEROGLYPHS = 215 ;
const integer BLOCK_CODE_MIAO = 216 ;
const integer BLOCK_CODE_SHARADA = 217 ;
const integer BLOCK_CODE_SORA_SOMPENG = 218 ;
const integer BLOCK_CODE_SUNDANESE_SUPPLEMENT = 219 ;
const integer BLOCK_CODE_TAKRI = 220 ;
const integer BLOCK_CODE_COUNT = 221 ;
const integer BLOCK_CODE_INVALID_CODE = -1 ;
const integer BPT_NONE = 0 ;
const integer BPT_OPEN = 1 ;
const integer BPT_CLOSE = 2 ;
const integer BPT_COUNT = 3 ;
const integer EA_NEUTRAL = 0 ;
const integer EA_AMBIGUOUS = 1 ;
const integer EA_HALFWIDTH = 2 ;
const integer EA_FULLWIDTH = 3 ;
const integer EA_NARROW = 4 ;
const integer EA_WIDE = 5 ;
const integer EA_COUNT = 6 ;
const integer UNICODE_CHAR_NAME = 0 ;
const integer UNICODE_10_CHAR_NAME = 1 ;
const integer EXTENDED_CHAR_NAME = 2 ;
const integer CHAR_NAME_ALIAS = 3 ;
const integer CHAR_NAME_CHOICE_COUNT = 4 ;
const integer SHORT_PROPERTY_NAME = 0 ;
const integer LONG_PROPERTY_NAME = 1 ;
const integer PROPERTY_NAME_CHOICE_COUNT = 2 ;
const integer DT_NONE = 0 ;
const integer DT_CANONICAL = 1 ;
const integer DT_COMPAT = 2 ;
const integer DT_CIRCLE = 3 ;
const integer DT_FINAL = 4 ;
const integer DT_FONT = 5 ;
const integer DT_FRACTION = 6 ;
const integer DT_INITIAL = 7 ;
const integer DT_ISOLATED = 8 ;
const integer DT_MEDIAL = 9 ;
const integer DT_NARROW = 10 ;
const integer DT_NOBREAK = 11 ;
const integer DT_SMALL = 12 ;
const integer DT_SQUARE = 13 ;
const integer DT_SUB = 14 ;
const integer DT_SUPER = 15 ;
const integer DT_VERTICAL = 16 ;
const integer DT_WIDE = 17 ;
const integer DT_COUNT = 18 ;
const integer JT_NON_JOINING = 0 ;
const integer JT_JOIN_CAUSING = 1 ;
const integer JT_DUAL_JOINING = 2 ;
const integer JT_LEFT_JOINING = 3 ;
const integer JT_RIGHT_JOINING = 4 ;
const integer JT_TRANSPARENT = 5 ;
const integer JT_COUNT = 6 ;
const integer JG_NO_JOINING_GROUP = 0 ;
const integer JG_AIN = 1 ;
const integer JG_ALAPH = 2 ;
const integer JG_ALEF = 3 ;
const integer JG_BEH = 4 ;
const integer JG_BETH = 5 ;
const integer JG_DAL = 6 ;
const integer JG_DALATH_RISH = 7 ;
const integer JG_E = 8 ;
const integer JG_FEH = 9 ;
const integer JG_FINAL_SEMKATH = 10 ;
const integer JG_GAF = 11 ;
const integer JG_GAMAL = 12 ;
const integer JG_HAH = 13 ;
const integer JG_TEH_MARBUTA_GOAL = 14 ;
const integer JG_HAMZA_ON_HEH_GOAL = 14 ;
const integer JG_HE = 15 ;
const integer JG_HEH = 16 ;
const integer JG_HEH_GOAL = 17 ;
const integer JG_HETH = 18 ;
const integer JG_KAF = 19 ;
const integer JG_KAPH = 20 ;
const integer JG_KNOTTED_HEH = 21 ;
const integer JG_LAM = 22 ;
const integer JG_LAMADH = 23 ;
const integer JG_MEEM = 24 ;
const integer JG_MIM = 25 ;
const integer JG_NOON = 26 ;
const integer JG_NUN = 27 ;
const integer JG_PE = 28 ;
const integer JG_QAF = 29 ;
const integer JG_QAPH = 30 ;
const integer JG_REH = 31 ;
const integer JG_REVERSED_PE = 32 ;
const integer JG_SAD = 33 ;
const integer JG_SADHE = 34 ;
const integer JG_SEEN = 35 ;
const integer JG_SEMKATH = 36 ;
const integer JG_SHIN = 37 ;
const integer JG_SWASH_KAF = 38 ;
const integer JG_SYRIAC_WAW = 39 ;
const integer JG_TAH = 40 ;
const integer JG_TAW = 41 ;
const integer JG_TEH_MARBUTA = 42 ;
const integer JG_TETH = 43 ;
const integer JG_WAW = 44 ;
const integer JG_YEH = 45 ;
const integer JG_YEH_BARREE = 46 ;
const integer JG_YEH_WITH_TAIL = 47 ;
const integer JG_YUDH = 48 ;
const integer JG_YUDH_HE = 49 ;
const integer JG_ZAIN = 50 ;
const integer JG_FE = 51 ;
const integer JG_KHAPH = 52 ;
const integer JG_ZHAIN = 53 ;
const integer JG_BURUSHASKI_YEH_BARREE = 54 ;
const integer JG_FARSI_YEH = 55 ;
const integer JG_NYA = 56 ;
const integer JG_ROHINGYA_YEH = 57 ;
const integer JG_COUNT = 58 ;
const integer GCB_OTHER = 0 ;
const integer GCB_CONTROL = 1 ;
const integer GCB_CR = 2 ;
const integer GCB_EXTEND = 3 ;
const integer GCB_L = 4 ;
const integer GCB_LF = 5 ;
const integer GCB_LV = 6 ;
const integer GCB_LVT = 7 ;
const integer GCB_T = 8 ;
const integer GCB_V = 9 ;
const integer GCB_SPACING_MARK = 10 ;
const integer GCB_PREPEND = 11 ;
const integer GCB_REGIONAL_INDICATOR = 12 ;
const integer GCB_COUNT = 13 ;
const integer WB_OTHER = 0 ;
const integer WB_ALETTER = 1 ;
const integer WB_FORMAT = 2 ;
const integer WB_KATAKANA = 3 ;
const integer WB_MIDLETTER = 4 ;
const integer WB_MIDNUM = 5 ;
const integer WB_NUMERIC = 6 ;
const integer WB_EXTENDNUMLET = 7 ;
const integer WB_CR = 8 ;
const integer WB_EXTEND = 9 ;
const integer WB_LF = 10 ;
const integer WB_MIDNUMLET = 11 ;
const integer WB_NEWLINE = 12 ;
const integer WB_REGIONAL_INDICATOR = 13 ;
const integer WB_HEBREW_LETTER = 14 ;
const integer WB_SINGLE_QUOTE = 15 ;
const integer WB_DOUBLE_QUOTE = 16 ;
const integer WB_COUNT = 17 ;
const integer SB_OTHER = 0 ;
const integer SB_ATERM = 1 ;
const integer SB_CLOSE = 2 ;
const integer SB_FORMAT = 3 ;
const integer SB_LOWER = 4 ;
const integer SB_NUMERIC = 5 ;
const integer SB_OLETTER = 6 ;
const integer SB_SEP = 7 ;
const integer SB_SP = 8 ;
const integer SB_STERM = 9 ;
const integer SB_UPPER = 10 ;
const integer SB_CR = 11 ;
const integer SB_EXTEND = 12 ;
const integer SB_LF = 13 ;
const integer SB_SCONTINUE = 14 ;
const integer SB_COUNT = 15 ;
const integer LB_UNKNOWN = 0 ;
const integer LB_AMBIGUOUS = 1 ;
const integer LB_ALPHABETIC = 2 ;
const integer LB_BREAK_BOTH = 3 ;
const integer LB_BREAK_AFTER = 4 ;
const integer LB_BREAK_BEFORE = 5 ;
const integer LB_MANDATORY_BREAK = 6 ;
const integer LB_CONTINGENT_BREAK = 7 ;
const integer LB_CLOSE_PUNCTUATION = 8 ;
const integer LB_COMBINING_MARK = 9 ;
const integer LB_CARRIAGE_RETURN = 10 ;
const integer LB_EXCLAMATION = 11 ;
const integer LB_GLUE = 12 ;
const integer LB_HYPHEN = 13 ;
const integer LB_IDEOGRAPHIC = 14 ;
const integer LB_INSEPARABLE = 15 ;
const integer LB_INSEPERABLE = 15 ;
const integer LB_INFIX_NUMERIC = 16 ;
const integer LB_LINE_FEED = 17 ;
const integer LB_NONSTARTER = 18 ;
const integer LB_NUMERIC = 19 ;
const integer LB_OPEN_PUNCTUATION = 20 ;
const integer LB_POSTFIX_NUMERIC = 21 ;
const integer LB_PREFIX_NUMERIC = 22 ;
const integer LB_QUOTATION = 23 ;
const integer LB_COMPLEX_CONTEXT = 24 ;
const integer LB_SURROGATE = 25 ;
const integer LB_SPACE = 26 ;
const integer LB_BREAK_SYMBOLS = 27 ;
const integer LB_ZWSPACE = 28 ;
const integer LB_NEXT_LINE = 29 ;
const integer LB_WORD_JOINER = 30 ;
const integer LB_H2 = 31 ;
const integer LB_H3 = 32 ;
const integer LB_JL = 33 ;
const integer LB_JT = 34 ;
const integer LB_JV = 35 ;
const integer LB_CLOSE_PARENTHESIS = 36 ;
const integer LB_CONDITIONAL_JAPANESE_STARTER = 37 ;
const integer LB_HEBREW_LETTER = 38 ;
const integer LB_REGIONAL_INDICATOR = 39 ;
const integer LB_COUNT = 40 ;
const integer NT_NONE = 0 ;
const integer NT_DECIMAL = 1 ;
const integer NT_DIGIT = 2 ;
const integer NT_NUMERIC = 3 ;
const integer NT_COUNT = 4 ;
const integer HST_NOT_APPLICABLE = 0 ;
const integer HST_LEADING_JAMO = 1 ;
const integer HST_VOWEL_JAMO = 2 ;
const integer HST_TRAILING_JAMO = 3 ;
const integer HST_LV_SYLLABLE = 4 ;
const integer HST_LVT_SYLLABLE = 5 ;
const integer HST_COUNT = 6 ;
/* 方法 */
public static array charAge ( mixed $codepoint )
public static int charDigitValue ( mixed $codepoint )
public static int charDirection ( mixed $codepoint )
public static int charFromName ( string $characterName [, int $nameChoice = IntlChar::UNICODE_CHAR_NAME ] )
public static mixed charMirror ( mixed $codepoint )
public static string charName ( mixed $codepoint [, int $nameChoice = IntlChar::UNICODE_CHAR_NAME ] )
public static int charType ( mixed $codepoint )
public static string chr ( mixed $codepoint )
public static int digit ( string $codepoint [, int $radix = 10 ] )
public static void enumCharNames ( mixed $start , mixed $limit , callable $callback [, int $nameChoice = IntlChar::UNICODE_CHAR_NAME ] )
public static void enumCharTypes ( callable $callback )
public static mixed foldCase ( mixed $codepoint [, int $options = IntlChar::FOLD_CASE_DEFAULT ] )
public static int forDigit ( int $digit [, int $radix = 10 ] )
public static mixed getBidiPairedBracket ( mixed $codepoint )
public static int getBlockCode ( mixed $codepoint )
public static int getCombiningClass ( mixed $codepoint )
public static string getFC_NFKC_Closure ( mixed $codepoint )
public static int getIntPropertyMaxValue ( int $property )
public static int getIntPropertyMinValue ( int $property )
public static int getIntPropertyValue ( mixed $codepoint , int $property )
public static float getNumericValue ( mixed $codepoint )
public static int getPropertyEnum ( string $alias )
public static string getPropertyName ( int $property [, int $nameChoice = IntlChar::LONG_PROPERTY_NAME ] )
public static int getPropertyValueEnum ( int $property , string $name )
public static string getPropertyValueName ( int $property , int $value [, int $nameChoice = IntlChar::LONG_PROPERTY_NAME ] )
public static array getUnicodeVersion ( void )
public static bool hasBinaryProperty ( mixed $codepoint , int $property )
public static bool isalnum ( mixed $codepoint )
public static bool isalpha ( mixed $codepoint )
public static bool isbase ( mixed $codepoint )
public static bool isblank ( mixed $codepoint )
public static bool iscntrl ( mixed $codepoint )
public static bool isdefined ( mixed $codepoint )
public static bool isdigit ( mixed $codepoint )
public static bool isgraph ( mixed $codepoint )
public static bool isIDIgnorable ( mixed $codepoint )
public static bool isIDPart ( mixed $codepoint )
public static bool isIDStart ( mixed $codepoint )
public static bool isISOControl ( mixed $codepoint )
public static bool isJavaIDPart ( mixed $codepoint )
public static bool isJavaIDStart ( mixed $codepoint )
public static bool isJavaSpaceChar ( mixed $codepoint )
public static bool islower ( mixed $codepoint )
public static bool isMirrored ( mixed $codepoint )
public static bool isprint ( mixed $codepoint )
public static bool ispunct ( mixed $codepoint )
public static bool isspace ( mixed $codepoint )
public static bool istitle ( mixed $codepoint )
public static bool isUAlphabetic ( mixed $codepoint )
public static bool isULowercase ( mixed $codepoint )
public static bool isupper ( mixed $codepoint )
public static bool isUUppercase ( mixed $codepoint )
public static bool isUWhiteSpace ( mixed $codepoint )
public static bool isWhitespace ( mixed $codepoint )
public static bool isxdigit ( mixed $codepoint )
public static int ord ( mixed $character )
public static mixed tolower ( mixed $codepoint )
public static mixed totitle ( mixed $codepoint )
public static mixed toupper ( mixed $codepoint )
}

预定义常量

IntlChar::UNICODE_VERSION

IntlChar::CODEPOINT_MIN

IntlChar::CODEPOINT_MAX

IntlChar::NO_NUMERIC_VALUE

Special value that is returned by IntlChar::getNumericValue() when no numeric value is defined for a code point.

IntlChar::PROPERTY_ALPHABETIC

IntlChar::PROPERTY_BINARY_START

IntlChar::PROPERTY_ASCII_HEX_DIGIT

IntlChar::PROPERTY_BIDI_CONTROL

IntlChar::PROPERTY_BIDI_MIRRORED

IntlChar::PROPERTY_DASH

IntlChar::PROPERTY_DEFAULT_IGNORABLE_CODE_POINT

IntlChar::PROPERTY_DEPRECATED

IntlChar::PROPERTY_DIACRITIC

IntlChar::PROPERTY_EXTENDER

IntlChar::PROPERTY_FULL_COMPOSITION_EXCLUSION

IntlChar::PROPERTY_GRAPHEME_BASE

IntlChar::PROPERTY_GRAPHEME_EXTEND

IntlChar::PROPERTY_GRAPHEME_LINK

IntlChar::PROPERTY_HEX_DIGIT

IntlChar::PROPERTY_HYPHEN

IntlChar::PROPERTY_ID_CONTINUE

IntlChar::PROPERTY_ID_START

IntlChar::PROPERTY_IDEOGRAPHIC

IntlChar::PROPERTY_IDS_BINARY_OPERATOR

IntlChar::PROPERTY_IDS_TRINARY_OPERATOR

IntlChar::PROPERTY_JOIN_CONTROL

IntlChar::PROPERTY_LOGICAL_ORDER_EXCEPTION

IntlChar::PROPERTY_LOWERCASE

IntlChar::PROPERTY_MATH

IntlChar::PROPERTY_NONCHARACTER_CODE_POINT

IntlChar::PROPERTY_QUOTATION_MARK

IntlChar::PROPERTY_RADICAL

IntlChar::PROPERTY_SOFT_DOTTED

IntlChar::PROPERTY_TERMINAL_PUNCTUATION

IntlChar::PROPERTY_UNIFIED_IDEOGRAPH

IntlChar::PROPERTY_UPPERCASE

IntlChar::PROPERTY_WHITE_SPACE

IntlChar::PROPERTY_XID_CONTINUE

IntlChar::PROPERTY_XID_START

IntlChar::PROPERTY_CASE_SENSITIVE

IntlChar::PROPERTY_S_TERM

IntlChar::PROPERTY_VARIATION_SELECTOR

IntlChar::PROPERTY_NFD_INERT

IntlChar::PROPERTY_NFKD_INERT

IntlChar::PROPERTY_NFC_INERT

IntlChar::PROPERTY_NFKC_INERT

IntlChar::PROPERTY_SEGMENT_STARTER

IntlChar::PROPERTY_PATTERN_SYNTAX

IntlChar::PROPERTY_PATTERN_WHITE_SPACE

IntlChar::PROPERTY_POSIX_ALNUM

IntlChar::PROPERTY_POSIX_BLANK

IntlChar::PROPERTY_POSIX_GRAPH

IntlChar::PROPERTY_POSIX_PRINT

IntlChar::PROPERTY_POSIX_XDIGIT

IntlChar::PROPERTY_CASED

IntlChar::PROPERTY_CASE_IGNORABLE

IntlChar::PROPERTY_CHANGES_WHEN_LOWERCASED

IntlChar::PROPERTY_CHANGES_WHEN_UPPERCASED

IntlChar::PROPERTY_CHANGES_WHEN_TITLECASED

IntlChar::PROPERTY_CHANGES_WHEN_CASEFOLDED

IntlChar::PROPERTY_CHANGES_WHEN_CASEMAPPED

IntlChar::PROPERTY_CHANGES_WHEN_NFKC_CASEFOLDED

IntlChar::PROPERTY_BINARY_LIMIT

IntlChar::PROPERTY_BIDI_CLASS

IntlChar::PROPERTY_INT_START

IntlChar::PROPERTY_BLOCK

IntlChar::PROPERTY_CANONICAL_COMBINING_CLASS

IntlChar::PROPERTY_DECOMPOSITION_TYPE

IntlChar::PROPERTY_EAST_ASIAN_WIDTH

IntlChar::PROPERTY_GENERAL_CATEGORY

IntlChar::PROPERTY_JOINING_GROUP

IntlChar::PROPERTY_JOINING_TYPE

IntlChar::PROPERTY_LINE_BREAK

IntlChar::PROPERTY_NUMERIC_TYPE

IntlChar::PROPERTY_SCRIPT

IntlChar::PROPERTY_HANGUL_SYLLABLE_TYPE

IntlChar::PROPERTY_NFD_QUICK_CHECK

IntlChar::PROPERTY_NFKD_QUICK_CHECK

IntlChar::PROPERTY_NFC_QUICK_CHECK

IntlChar::PROPERTY_NFKC_QUICK_CHECK

IntlChar::PROPERTY_LEAD_CANONICAL_COMBINING_CLASS

IntlChar::PROPERTY_TRAIL_CANONICAL_COMBINING_CLASS

IntlChar::PROPERTY_GRAPHEME_CLUSTER_BREAK

IntlChar::PROPERTY_SENTENCE_BREAK

IntlChar::PROPERTY_WORD_BREAK

IntlChar::PROPERTY_BIDI_PAIRED_BRACKET_TYPE

IntlChar::PROPERTY_INT_LIMIT

IntlChar::PROPERTY_GENERAL_CATEGORY_MASK

IntlChar::PROPERTY_MASK_START

IntlChar::PROPERTY_MASK_LIMIT

IntlChar::PROPERTY_NUMERIC_VALUE

IntlChar::PROPERTY_DOUBLE_START

IntlChar::PROPERTY_DOUBLE_LIMIT

IntlChar::PROPERTY_AGE

IntlChar::PROPERTY_STRING_START

IntlChar::PROPERTY_BIDI_MIRRORING_GLYPH

IntlChar::PROPERTY_CASE_FOLDING

IntlChar::PROPERTY_ISO_COMMENT

IntlChar::PROPERTY_LOWERCASE_MAPPING

IntlChar::PROPERTY_NAME

IntlChar::PROPERTY_SIMPLE_CASE_FOLDING

IntlChar::PROPERTY_SIMPLE_LOWERCASE_MAPPING

IntlChar::PROPERTY_SIMPLE_TITLECASE_MAPPING

IntlChar::PROPERTY_SIMPLE_UPPERCASE_MAPPING

IntlChar::PROPERTY_TITLECASE_MAPPING

IntlChar::PROPERTY_UNICODE_1_NAME

IntlChar::PROPERTY_UPPERCASE_MAPPING

IntlChar::PROPERTY_BIDI_PAIRED_BRACKET

IntlChar::PROPERTY_STRING_LIMIT

IntlChar::PROPERTY_SCRIPT_EXTENSIONS

IntlChar::PROPERTY_OTHER_PROPERTY_START

IntlChar::PROPERTY_OTHER_PROPERTY_LIMIT

IntlChar::PROPERTY_INVALID_CODE

IntlChar::CHAR_CATEGORY_UNASSIGNED

IntlChar::CHAR_CATEGORY_GENERAL_OTHER_TYPES

IntlChar::CHAR_CATEGORY_UPPERCASE_LETTER

IntlChar::CHAR_CATEGORY_LOWERCASE_LETTER

IntlChar::CHAR_CATEGORY_TITLECASE_LETTER

IntlChar::CHAR_CATEGORY_MODIFIER_LETTER

IntlChar::CHAR_CATEGORY_OTHER_LETTER

IntlChar::CHAR_CATEGORY_NON_SPACING_MARK

IntlChar::CHAR_CATEGORY_ENCLOSING_MARK

IntlChar::CHAR_CATEGORY_COMBINING_SPACING_MARK

IntlChar::CHAR_CATEGORY_DECIMAL_DIGIT_NUMBER

IntlChar::CHAR_CATEGORY_LETTER_NUMBER

IntlChar::CHAR_CATEGORY_OTHER_NUMBER

IntlChar::CHAR_CATEGORY_SPACE_SEPARATOR

IntlChar::CHAR_CATEGORY_LINE_SEPARATOR

IntlChar::CHAR_CATEGORY_PARAGRAPH_SEPARATOR

IntlChar::CHAR_CATEGORY_CONTROL_CHAR

IntlChar::CHAR_CATEGORY_FORMAT_CHAR

IntlChar::CHAR_CATEGORY_PRIVATE_USE_CHAR

IntlChar::CHAR_CATEGORY_SURROGATE

IntlChar::CHAR_CATEGORY_DASH_PUNCTUATION

IntlChar::CHAR_CATEGORY_START_PUNCTUATION

IntlChar::CHAR_CATEGORY_END_PUNCTUATION

IntlChar::CHAR_CATEGORY_CONNECTOR_PUNCTUATION

IntlChar::CHAR_CATEGORY_OTHER_PUNCTUATION

IntlChar::CHAR_CATEGORY_MATH_SYMBOL

IntlChar::CHAR_CATEGORY_CURRENCY_SYMBOL

IntlChar::CHAR_CATEGORY_MODIFIER_SYMBOL

IntlChar::CHAR_CATEGORY_OTHER_SYMBOL

IntlChar::CHAR_CATEGORY_INITIAL_PUNCTUATION

IntlChar::CHAR_CATEGORY_FINAL_PUNCTUATION

IntlChar::CHAR_CATEGORY_CHAR_CATEGORY_COUNT

IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT

IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT

IntlChar::CHAR_DIRECTION_EUROPEAN_NUMBER

IntlChar::CHAR_DIRECTION_EUROPEAN_NUMBER_SEPARATOR

IntlChar::CHAR_DIRECTION_EUROPEAN_NUMBER_TERMINATOR

IntlChar::CHAR_DIRECTION_ARABIC_NUMBER

IntlChar::CHAR_DIRECTION_COMMON_NUMBER_SEPARATOR

IntlChar::CHAR_DIRECTION_BLOCK_SEPARATOR

IntlChar::CHAR_DIRECTION_SEGMENT_SEPARATOR

IntlChar::CHAR_DIRECTION_WHITE_SPACE_NEUTRAL

IntlChar::CHAR_DIRECTION_OTHER_NEUTRAL

IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT_EMBEDDING

IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT_OVERRIDE

IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_ARABIC

IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_EMBEDDING

IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_OVERRIDE

IntlChar::CHAR_DIRECTION_POP_DIRECTIONAL_FORMAT

IntlChar::CHAR_DIRECTION_DIR_NON_SPACING_MARK

IntlChar::CHAR_DIRECTION_BOUNDARY_NEUTRAL

IntlChar::CHAR_DIRECTION_FIRST_STRONG_ISOLATE

IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT_ISOLATE

IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_ISOLATE

IntlChar::CHAR_DIRECTION_POP_DIRECTIONAL_ISOLATE

IntlChar::CHAR_DIRECTION_CHAR_DIRECTION_COUNT

IntlChar::BLOCK_CODE_NO_BLOCK

IntlChar::BLOCK_CODE_BASIC_LATIN

IntlChar::BLOCK_CODE_LATIN_1_SUPPLEMENT

IntlChar::BLOCK_CODE_LATIN_EXTENDED_A

IntlChar::BLOCK_CODE_LATIN_EXTENDED_B

IntlChar::BLOCK_CODE_IPA_EXTENSIONS

IntlChar::BLOCK_CODE_SPACING_MODIFIER_LETTERS

IntlChar::BLOCK_CODE_COMBINING_DIACRITICAL_MARKS

IntlChar::BLOCK_CODE_GREEK

IntlChar::BLOCK_CODE_CYRILLIC

IntlChar::BLOCK_CODE_ARMENIAN

IntlChar::BLOCK_CODE_HEBREW

IntlChar::BLOCK_CODE_ARABIC

IntlChar::BLOCK_CODE_SYRIAC

IntlChar::BLOCK_CODE_THAANA

IntlChar::BLOCK_CODE_DEVANAGARI

IntlChar::BLOCK_CODE_BENGALI

IntlChar::BLOCK_CODE_GURMUKHI

IntlChar::BLOCK_CODE_GUJARATI

IntlChar::BLOCK_CODE_ORIYA

IntlChar::BLOCK_CODE_TAMIL

IntlChar::BLOCK_CODE_TELUGU

IntlChar::BLOCK_CODE_KANNADA

IntlChar::BLOCK_CODE_MALAYALAM

IntlChar::BLOCK_CODE_SINHALA

IntlChar::BLOCK_CODE_THAI

IntlChar::BLOCK_CODE_LAO

IntlChar::BLOCK_CODE_TIBETAN

IntlChar::BLOCK_CODE_MYANMAR

IntlChar::BLOCK_CODE_GEORGIAN

IntlChar::BLOCK_CODE_HANGUL_JAMO

IntlChar::BLOCK_CODE_ETHIOPIC

IntlChar::BLOCK_CODE_CHEROKEE

IntlChar::BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS

IntlChar::BLOCK_CODE_OGHAM

IntlChar::BLOCK_CODE_RUNIC

IntlChar::BLOCK_CODE_KHMER

IntlChar::BLOCK_CODE_MONGOLIAN

IntlChar::BLOCK_CODE_LATIN_EXTENDED_ADDITIONAL

IntlChar::BLOCK_CODE_GREEK_EXTENDED

IntlChar::BLOCK_CODE_GENERAL_PUNCTUATION

IntlChar::BLOCK_CODE_SUPERSCRIPTS_AND_SUBSCRIPTS

IntlChar::BLOCK_CODE_CURRENCY_SYMBOLS

IntlChar::BLOCK_CODE_COMBINING_MARKS_FOR_SYMBOLS

IntlChar::BLOCK_CODE_LETTERLIKE_SYMBOLS

IntlChar::BLOCK_CODE_NUMBER_FORMS

IntlChar::BLOCK_CODE_ARROWS

IntlChar::BLOCK_CODE_MATHEMATICAL_OPERATORS

IntlChar::BLOCK_CODE_MISCELLANEOUS_TECHNICAL

IntlChar::BLOCK_CODE_CONTROL_PICTURES

IntlChar::BLOCK_CODE_OPTICAL_CHARACTER_RECOGNITION

IntlChar::BLOCK_CODE_ENCLOSED_ALPHANUMERICS

IntlChar::BLOCK_CODE_BOX_DRAWING

IntlChar::BLOCK_CODE_BLOCK_ELEMENTS

IntlChar::BLOCK_CODE_GEOMETRIC_SHAPES

IntlChar::BLOCK_CODE_MISCELLANEOUS_SYMBOLS

IntlChar::BLOCK_CODE_DINGBATS

IntlChar::BLOCK_CODE_BRAILLE_PATTERNS

IntlChar::BLOCK_CODE_CJK_RADICALS_SUPPLEMENT

IntlChar::BLOCK_CODE_KANGXI_RADICALS

IntlChar::BLOCK_CODE_IDEOGRAPHIC_DESCRIPTION_CHARACTERS

IntlChar::BLOCK_CODE_CJK_SYMBOLS_AND_PUNCTUATION

IntlChar::BLOCK_CODE_HIRAGANA

IntlChar::BLOCK_CODE_KATAKANA

IntlChar::BLOCK_CODE_BOPOMOFO

IntlChar::BLOCK_CODE_HANGUL_COMPATIBILITY_JAMO

IntlChar::BLOCK_CODE_KANBUN

IntlChar::BLOCK_CODE_BOPOMOFO_EXTENDED

IntlChar::BLOCK_CODE_ENCLOSED_CJK_LETTERS_AND_MONTHS

IntlChar::BLOCK_CODE_CJK_COMPATIBILITY

IntlChar::BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A

IntlChar::BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS

IntlChar::BLOCK_CODE_YI_SYLLABLES

IntlChar::BLOCK_CODE_YI_RADICALS

IntlChar::BLOCK_CODE_HANGUL_SYLLABLES

IntlChar::BLOCK_CODE_HIGH_SURROGATES

IntlChar::BLOCK_CODE_HIGH_PRIVATE_USE_SURROGATES

IntlChar::BLOCK_CODE_LOW_SURROGATES

IntlChar::BLOCK_CODE_PRIVATE_USE_AREA

IntlChar::BLOCK_CODE_PRIVATE_USE

IntlChar::BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS

IntlChar::BLOCK_CODE_ALPHABETIC_PRESENTATION_FORMS

IntlChar::BLOCK_CODE_ARABIC_PRESENTATION_FORMS_A

IntlChar::BLOCK_CODE_COMBINING_HALF_MARKS

IntlChar::BLOCK_CODE_CJK_COMPATIBILITY_FORMS

IntlChar::BLOCK_CODE_SMALL_FORM_VARIANTS

IntlChar::BLOCK_CODE_ARABIC_PRESENTATION_FORMS_B

IntlChar::BLOCK_CODE_SPECIALS

IntlChar::BLOCK_CODE_HALFWIDTH_AND_FULLWIDTH_FORMS

IntlChar::BLOCK_CODE_OLD_ITALIC

IntlChar::BLOCK_CODE_GOTHIC

IntlChar::BLOCK_CODE_DESERET

IntlChar::BLOCK_CODE_BYZANTINE_MUSICAL_SYMBOLS

IntlChar::BLOCK_CODE_MUSICAL_SYMBOLS

IntlChar::BLOCK_CODE_MATHEMATICAL_ALPHANUMERIC_SYMBOLS

IntlChar::BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B

IntlChar::BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT

IntlChar::BLOCK_CODE_TAGS

IntlChar::BLOCK_CODE_CYRILLIC_SUPPLEMENT

IntlChar::BLOCK_CODE_CYRILLIC_SUPPLEMENTARY

IntlChar::BLOCK_CODE_TAGALOG

IntlChar::BLOCK_CODE_HANUNOO

IntlChar::BLOCK_CODE_BUHID

IntlChar::BLOCK_CODE_TAGBANWA

IntlChar::BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A

IntlChar::BLOCK_CODE_SUPPLEMENTAL_ARROWS_A

IntlChar::BLOCK_CODE_SUPPLEMENTAL_ARROWS_B

IntlChar::BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B

IntlChar::BLOCK_CODE_SUPPLEMENTAL_MATHEMATICAL_OPERATORS

IntlChar::BLOCK_CODE_KATAKANA_PHONETIC_EXTENSIONS

IntlChar::BLOCK_CODE_VARIATION_SELECTORS

IntlChar::BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_A

IntlChar::BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_B

IntlChar::BLOCK_CODE_LIMBU

IntlChar::BLOCK_CODE_TAI_LE

IntlChar::BLOCK_CODE_KHMER_SYMBOLS

IntlChar::BLOCK_CODE_PHONETIC_EXTENSIONS

IntlChar::BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_ARROWS

IntlChar::BLOCK_CODE_YIJING_HEXAGRAM_SYMBOLS

IntlChar::BLOCK_CODE_LINEAR_B_SYLLABARY

IntlChar::BLOCK_CODE_LINEAR_B_IDEOGRAMS

IntlChar::BLOCK_CODE_AEGEAN_NUMBERS

IntlChar::BLOCK_CODE_UGARITIC

IntlChar::BLOCK_CODE_SHAVIAN

IntlChar::BLOCK_CODE_OSMANYA

IntlChar::BLOCK_CODE_CYPRIOT_SYLLABARY

IntlChar::BLOCK_CODE_TAI_XUAN_JING_SYMBOLS

IntlChar::BLOCK_CODE_VARIATION_SELECTORS_SUPPLEMENT

IntlChar::BLOCK_CODE_ANCIENT_GREEK_MUSICAL_NOTATION

IntlChar::BLOCK_CODE_ANCIENT_GREEK_NUMBERS

IntlChar::BLOCK_CODE_ARABIC_SUPPLEMENT

IntlChar::BLOCK_CODE_BUGINESE

IntlChar::BLOCK_CODE_CJK_STROKES

IntlChar::BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT

IntlChar::BLOCK_CODE_COPTIC

IntlChar::BLOCK_CODE_ETHIOPIC_EXTENDED

IntlChar::BLOCK_CODE_ETHIOPIC_SUPPLEMENT

IntlChar::BLOCK_CODE_GEORGIAN_SUPPLEMENT

IntlChar::BLOCK_CODE_GLAGOLITIC

IntlChar::BLOCK_CODE_KHAROSHTHI

IntlChar::BLOCK_CODE_MODIFIER_TONE_LETTERS

IntlChar::BLOCK_CODE_NEW_TAI_LUE

IntlChar::BLOCK_CODE_OLD_PERSIAN

IntlChar::BLOCK_CODE_PHONETIC_EXTENSIONS_SUPPLEMENT

IntlChar::BLOCK_CODE_SUPPLEMENTAL_PUNCTUATION

IntlChar::BLOCK_CODE_SYLOTI_NAGRI

IntlChar::BLOCK_CODE_TIFINAGH

IntlChar::BLOCK_CODE_VERTICAL_FORMS

IntlChar::BLOCK_CODE_NKO

IntlChar::BLOCK_CODE_BALINESE

IntlChar::BLOCK_CODE_LATIN_EXTENDED_C

IntlChar::BLOCK_CODE_LATIN_EXTENDED_D

IntlChar::BLOCK_CODE_PHAGS_PA

IntlChar::BLOCK_CODE_PHOENICIAN

IntlChar::BLOCK_CODE_CUNEIFORM

IntlChar::BLOCK_CODE_CUNEIFORM_NUMBERS_AND_PUNCTUATION

IntlChar::BLOCK_CODE_COUNTING_ROD_NUMERALS

IntlChar::BLOCK_CODE_SUNDANESE

IntlChar::BLOCK_CODE_LEPCHA

IntlChar::BLOCK_CODE_OL_CHIKI

IntlChar::BLOCK_CODE_CYRILLIC_EXTENDED_A

IntlChar::BLOCK_CODE_VAI

IntlChar::BLOCK_CODE_CYRILLIC_EXTENDED_B

IntlChar::BLOCK_CODE_SAURASHTRA

IntlChar::BLOCK_CODE_KAYAH_LI

IntlChar::BLOCK_CODE_REJANG

IntlChar::BLOCK_CODE_CHAM

IntlChar::BLOCK_CODE_ANCIENT_SYMBOLS

IntlChar::BLOCK_CODE_PHAISTOS_DISC

IntlChar::BLOCK_CODE_LYCIAN

IntlChar::BLOCK_CODE_CARIAN

IntlChar::BLOCK_CODE_LYDIAN

IntlChar::BLOCK_CODE_MAHJONG_TILES

IntlChar::BLOCK_CODE_DOMINO_TILES

IntlChar::BLOCK_CODE_SAMARITAN

IntlChar::BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED

IntlChar::BLOCK_CODE_TAI_THAM

IntlChar::BLOCK_CODE_VEDIC_EXTENSIONS

IntlChar::BLOCK_CODE_LISU

IntlChar::BLOCK_CODE_BAMUM

IntlChar::BLOCK_CODE_COMMON_INDIC_NUMBER_FORMS

IntlChar::BLOCK_CODE_DEVANAGARI_EXTENDED

IntlChar::BLOCK_CODE_HANGUL_JAMO_EXTENDED_A

IntlChar::BLOCK_CODE_JAVANESE

IntlChar::BLOCK_CODE_MYANMAR_EXTENDED_A

IntlChar::BLOCK_CODE_TAI_VIET

IntlChar::BLOCK_CODE_MEETEI_MAYEK

IntlChar::BLOCK_CODE_HANGUL_JAMO_EXTENDED_B

IntlChar::BLOCK_CODE_IMPERIAL_ARAMAIC

IntlChar::BLOCK_CODE_OLD_SOUTH_ARABIAN

IntlChar::BLOCK_CODE_AVESTAN

IntlChar::BLOCK_CODE_INSCRIPTIONAL_PARTHIAN

IntlChar::BLOCK_CODE_INSCRIPTIONAL_PAHLAVI

IntlChar::BLOCK_CODE_OLD_TURKIC

IntlChar::BLOCK_CODE_RUMI_NUMERAL_SYMBOLS

IntlChar::BLOCK_CODE_KAITHI

IntlChar::BLOCK_CODE_EGYPTIAN_HIEROGLYPHS

IntlChar::BLOCK_CODE_ENCLOSED_ALPHANUMERIC_SUPPLEMENT

IntlChar::BLOCK_CODE_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT

IntlChar::BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C

IntlChar::BLOCK_CODE_MANDAIC

IntlChar::BLOCK_CODE_BATAK

IntlChar::BLOCK_CODE_ETHIOPIC_EXTENDED_A

IntlChar::BLOCK_CODE_BRAHMI

IntlChar::BLOCK_CODE_BAMUM_SUPPLEMENT

IntlChar::BLOCK_CODE_KANA_SUPPLEMENT

IntlChar::BLOCK_CODE_PLAYING_CARDS

IntlChar::BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS

IntlChar::BLOCK_CODE_EMOTICONS

IntlChar::BLOCK_CODE_TRANSPORT_AND_MAP_SYMBOLS

IntlChar::BLOCK_CODE_ALCHEMICAL_SYMBOLS

IntlChar::BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D

IntlChar::BLOCK_CODE_ARABIC_EXTENDED_A

IntlChar::BLOCK_CODE_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS

IntlChar::BLOCK_CODE_CHAKMA

IntlChar::BLOCK_CODE_MEETEI_MAYEK_EXTENSIONS

IntlChar::BLOCK_CODE_MEROITIC_CURSIVE

IntlChar::BLOCK_CODE_MEROITIC_HIEROGLYPHS

IntlChar::BLOCK_CODE_MIAO

IntlChar::BLOCK_CODE_SHARADA

IntlChar::BLOCK_CODE_SORA_SOMPENG

IntlChar::BLOCK_CODE_SUNDANESE_SUPPLEMENT

IntlChar::BLOCK_CODE_TAKRI

IntlChar::BLOCK_CODE_COUNT

IntlChar::BLOCK_CODE_INVALID_CODE

IntlChar::BPT_NONE

IntlChar::BPT_OPEN

IntlChar::BPT_CLOSE

IntlChar::BPT_COUNT

IntlChar::EA_NEUTRAL

IntlChar::EA_AMBIGUOUS

IntlChar::EA_HALFWIDTH

IntlChar::EA_FULLWIDTH

IntlChar::EA_NARROW

IntlChar::EA_WIDE

IntlChar::EA_COUNT

IntlChar::UNICODE_CHAR_NAME

IntlChar::UNICODE_10_CHAR_NAME

IntlChar::EXTENDED_CHAR_NAME

IntlChar::CHAR_NAME_ALIAS

IntlChar::CHAR_NAME_CHOICE_COUNT

IntlChar::SHORT_PROPERTY_NAME

IntlChar::LONG_PROPERTY_NAME

IntlChar::PROPERTY_NAME_CHOICE_COUNT

IntlChar::DT_NONE

IntlChar::DT_CANONICAL

IntlChar::DT_COMPAT

IntlChar::DT_CIRCLE

IntlChar::DT_FINAL

IntlChar::DT_FONT

IntlChar::DT_FRACTION

IntlChar::DT_INITIAL

IntlChar::DT_ISOLATED

IntlChar::DT_MEDIAL

IntlChar::DT_NARROW

IntlChar::DT_NOBREAK

IntlChar::DT_SMALL

IntlChar::DT_SQUARE

IntlChar::DT_SUB

IntlChar::DT_SUPER

IntlChar::DT_VERTICAL

IntlChar::DT_WIDE

IntlChar::DT_COUNT

IntlChar::JT_NON_JOINING

IntlChar::JT_JOIN_CAUSING

IntlChar::JT_DUAL_JOINING

IntlChar::JT_LEFT_JOINING

IntlChar::JT_RIGHT_JOINING

IntlChar::JT_TRANSPARENT

IntlChar::JT_COUNT

IntlChar::JG_NO_JOINING_GROUP

IntlChar::JG_AIN

IntlChar::JG_ALAPH

IntlChar::JG_ALEF

IntlChar::JG_BEH

IntlChar::JG_BETH

IntlChar::JG_DAL

IntlChar::JG_DALATH_RISH

IntlChar::JG_E

IntlChar::JG_FEH

IntlChar::JG_FINAL_SEMKATH

IntlChar::JG_GAF

IntlChar::JG_GAMAL

IntlChar::JG_HAH

IntlChar::JG_TEH_MARBUTA_GOAL

IntlChar::JG_HAMZA_ON_HEH_GOAL

IntlChar::JG_HE

IntlChar::JG_HEH

IntlChar::JG_HEH_GOAL

IntlChar::JG_HETH

IntlChar::JG_KAF

IntlChar::JG_KAPH

IntlChar::JG_KNOTTED_HEH

IntlChar::JG_LAM

IntlChar::JG_LAMADH

IntlChar::JG_MEEM

IntlChar::JG_MIM

IntlChar::JG_NOON

IntlChar::JG_NUN

IntlChar::JG_PE

IntlChar::JG_QAF

IntlChar::JG_QAPH

IntlChar::JG_REH

IntlChar::JG_REVERSED_PE

IntlChar::JG_SAD

IntlChar::JG_SADHE

IntlChar::JG_SEEN

IntlChar::JG_SEMKATH

IntlChar::JG_SHIN

IntlChar::JG_SWASH_KAF

IntlChar::JG_SYRIAC_WAW

IntlChar::JG_TAH

IntlChar::JG_TAW

IntlChar::JG_TEH_MARBUTA

IntlChar::JG_TETH

IntlChar::JG_WAW

IntlChar::JG_YEH

IntlChar::JG_YEH_BARREE

IntlChar::JG_YEH_WITH_TAIL

IntlChar::JG_YUDH

IntlChar::JG_YUDH_HE

IntlChar::JG_ZAIN

IntlChar::JG_FE

IntlChar::JG_KHAPH

IntlChar::JG_ZHAIN

IntlChar::JG_BURUSHASKI_YEH_BARREE

IntlChar::JG_FARSI_YEH

IntlChar::JG_NYA

IntlChar::JG_ROHINGYA_YEH

IntlChar::JG_COUNT

IntlChar::GCB_OTHER

IntlChar::GCB_CONTROL

IntlChar::GCB_CR

IntlChar::GCB_EXTEND

IntlChar::GCB_L

IntlChar::GCB_LF

IntlChar::GCB_LV

IntlChar::GCB_LVT

IntlChar::GCB_T

IntlChar::GCB_V

IntlChar::GCB_SPACING_MARK

IntlChar::GCB_PREPEND

IntlChar::GCB_REGIONAL_INDICATOR

IntlChar::GCB_COUNT

IntlChar::WB_OTHER

IntlChar::WB_ALETTER

IntlChar::WB_FORMAT

IntlChar::WB_KATAKANA

IntlChar::WB_MIDLETTER

IntlChar::WB_MIDNUM

IntlChar::WB_NUMERIC

IntlChar::WB_EXTENDNUMLET

IntlChar::WB_CR

IntlChar::WB_EXTEND

IntlChar::WB_LF

IntlChar::WB_MIDNUMLET

IntlChar::WB_NEWLINE

IntlChar::WB_REGIONAL_INDICATOR

IntlChar::WB_HEBREW_LETTER

IntlChar::WB_SINGLE_QUOTE

IntlChar::WB_DOUBLE_QUOTE

IntlChar::WB_COUNT

IntlChar::SB_OTHER

IntlChar::SB_ATERM

IntlChar::SB_CLOSE

IntlChar::SB_FORMAT

IntlChar::SB_LOWER

IntlChar::SB_NUMERIC

IntlChar::SB_OLETTER

IntlChar::SB_SEP

IntlChar::SB_SP

IntlChar::SB_STERM

IntlChar::SB_UPPER

IntlChar::SB_CR

IntlChar::SB_EXTEND

IntlChar::SB_LF

IntlChar::SB_SCONTINUE

IntlChar::SB_COUNT

IntlChar::LB_UNKNOWN

IntlChar::LB_AMBIGUOUS

IntlChar::LB_ALPHABETIC

IntlChar::LB_BREAK_BOTH

IntlChar::LB_BREAK_AFTER

IntlChar::LB_BREAK_BEFORE

IntlChar::LB_MANDATORY_BREAK

IntlChar::LB_CONTINGENT_BREAK

IntlChar::LB_CLOSE_PUNCTUATION

IntlChar::LB_COMBINING_MARK

IntlChar::LB_CARRIAGE_RETURN

IntlChar::LB_EXCLAMATION

IntlChar::LB_GLUE

IntlChar::LB_HYPHEN

IntlChar::LB_IDEOGRAPHIC

IntlChar::LB_INSEPARABLE

IntlChar::LB_INSEPERABLE

IntlChar::LB_INFIX_NUMERIC

IntlChar::LB_LINE_FEED

IntlChar::LB_NONSTARTER

IntlChar::LB_NUMERIC

IntlChar::LB_OPEN_PUNCTUATION

IntlChar::LB_POSTFIX_NUMERIC

IntlChar::LB_PREFIX_NUMERIC

IntlChar::LB_QUOTATION

IntlChar::LB_COMPLEX_CONTEXT

IntlChar::LB_SURROGATE

IntlChar::LB_SPACE

IntlChar::LB_BREAK_SYMBOLS

IntlChar::LB_ZWSPACE

IntlChar::LB_NEXT_LINE

IntlChar::LB_WORD_JOINER

IntlChar::LB_H2

IntlChar::LB_H3

IntlChar::LB_JL

IntlChar::LB_JT

IntlChar::LB_JV

IntlChar::LB_CLOSE_PARENTHESIS

IntlChar::LB_CONDITIONAL_JAPANESE_STARTER

IntlChar::LB_HEBREW_LETTER

IntlChar::LB_REGIONAL_INDICATOR

IntlChar::LB_COUNT

IntlChar::NT_NONE

IntlChar::NT_DECIMAL

IntlChar::NT_DIGIT

IntlChar::NT_NUMERIC

IntlChar::NT_COUNT

IntlChar::HST_NOT_APPLICABLE

IntlChar::HST_LEADING_JAMO

IntlChar::HST_VOWEL_JAMO

IntlChar::HST_TRAILING_JAMO

IntlChar::HST_LV_SYLLABLE

IntlChar::HST_LVT_SYLLABLE

IntlChar::HST_COUNT

IntlChar::FOLD_CASE_DEFAULT

IntlChar::FOLD_CASE_EXCLUDE_SPECIAL_I

更新日志

版本 | 说明
7.0.6 | The IntlChar::NO_NUMERIC_VALUE constant was added.

Table of Contents

  • IntlChar::charAge — Get the "age" of the code point
  • IntlChar::charDigitValue — Get the decimal digit value of a decimal digit character
  • IntlChar::charDirection — Get bidirectional category value for a code point
  • IntlChar::charFromName — Find Unicode character by name and return its code point value
  • IntlChar::charMirror — Get the "mirror-image" character for a code point
  • IntlChar::charName — Retrieve the name of a Unicode character
  • IntlChar::charType — Get the general category value for a code point
  • IntlChar::chr — Return Unicode character by code point value
  • IntlChar::digit — Get the decimal digit value of a code point for a given radix
  • IntlChar::enumCharNames — Enumerate all assigned Unicode characters within a range
  • IntlChar::enumCharTypes — Enumerate all code points with their Unicode general categories
  • IntlChar::foldCase — Perform case folding on a code point
  • IntlChar::forDigit — Get character representation for a given digit and radix
  • IntlChar::getBidiPairedBracket — Get the paired bracket character for a code point
  • IntlChar::getBlockCode — Get the Unicode allocation block containing a code point
  • IntlChar::getCombiningClass — Get the combining class of a code point
  • IntlChar::getFC_NFKC_Closure — Get the FC_NFKC_Closure property for a code point
  • IntlChar::getIntPropertyMaxValue — Get the max value for a Unicode property
  • IntlChar::getIntPropertyMinValue — Get the min value for a Unicode property
  • IntlChar::getIntPropertyValue — Get the value for a Unicode property for a code point
  • IntlChar::getNumericValue — Get the numeric value for a Unicode code point
  • IntlChar::getPropertyEnum — Get the property constant value for a given property name
  • IntlChar::getPropertyName — Get the Unicode name for a property
  • IntlChar::getPropertyValueEnum — Get the property value for a given value name
  • IntlChar::getPropertyValueName — Get the Unicode name for a property value
  • IntlChar::getUnicodeVersion — Get the Unicode version
  • IntlChar::hasBinaryProperty — Check a binary Unicode property for a code point
  • IntlChar::isalnum — Check if code point is an alphanumeric character
  • IntlChar::isalpha — Check if code point is a letter character
  • IntlChar::isbase — Check if code point is a base character
  • IntlChar::isblank — Check if code point is a "blank" or "horizontal space" character
  • IntlChar::iscntrl — Check if code point is a control character
  • IntlChar::isdefined — Check whether the code point is defined
  • IntlChar::isdigit — Check if code point is a digit character
  • IntlChar::isgraph — Check if code point is a graphic character
  • IntlChar::isIDIgnorable — Check if code point is an ignorable character
  • IntlChar::isIDPart — Check if code point is permissible in an identifier
  • IntlChar::isIDStart — Check if code point is permissible as the first character in an identifier
  • IntlChar::isISOControl — Check if code point is an ISO control code
  • IntlChar::isJavaIDPart — Check if code point is permissible in a Java identifier
  • IntlChar::isJavaIDStart — Check if code point is permissible as the first character in a Java identifier
  • IntlChar::isJavaSpaceChar — Check if code point is a space character according to Java
  • IntlChar::islower — Check if code point is a lowercase letter
  • IntlChar::isMirrored — Check if code point has the Bidi_Mirrored property
  • IntlChar::isprint — Check if code point is a printable character
  • IntlChar::ispunct — Check if code point is punctuation character
  • IntlChar::isspace — Check if code point is a space character
  • IntlChar::istitle — Check if code point is a titlecase letter
  • IntlChar::isUAlphabetic — Check if code point has the Alphabetic Unicode property
  • IntlChar::isULowercase — Check if code point has the Lowercase Unicode property
  • IntlChar::isupper — Check if code point has the general category "Lu" (uppercase letter)
  • IntlChar::isUUppercase — Check if code point has the Uppercase Unicode property
  • IntlChar::isUWhiteSpace — Check if code point has the White_Space Unicode property
  • IntlChar::isWhitespace — Check if code point is a whitespace character according to ICU
  • IntlChar::isxdigit — Check if code point is a hexadecimal digit
  • IntlChar::ord — Return Unicode code point value of character
  • IntlChar::tolower — Make Unicode character lowercase
  • IntlChar::totitle — Make Unicode character titlecase
  • IntlChar::toupper — Make Unicode character uppercase
idn_to_utf8
IntlChar::charAge
intl


Get the "age" of the code point

IntlChar
IntlChar::charDigitValue
IntlChar
PHP Manual

IntlChar::charAge

(PHP 7)

IntlChar::charAge — Get the "age" of the code point

说明

public static array IntlChar::charAge ( mixed $codepoint )

Gets the "age" of the code point.

The "age" is the Unicode version when the code point was first designated (as a non-character or for Private Use) or assigned a character. This can be useful to avoid emitting code points to receiving processes that do not accept newer characters.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

The Unicode version number, as an array. For example, version 1.3.31.2 would be represented as [1, 3, 31, 2].

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::charage("\u{2603}"));
var_dump(IntlChar::charage("\u{1F576}"));
?>

以上例程会输出：

array(4) {
  [0]=>
  int(1)
  [1]=>
  int(1)
  [2]=>
  int(0)
  [3]=>
  int(0)
}
array(4) {
  [0]=>
  int(7)
  [1]=>
  int(0)
  [2]=>
  int(0)
  [3]=>
  int(0)
}

参见

  • IntlChar::getUnicodeVersion() - Get the Unicode version
  • IntlChar::getIntPropertyMinValue() - Get the min value for a Unicode property
  • IntlChar::getIntPropertyValue() - Get the value for a Unicode property for a code point

IntlChar
IntlChar::charDigitValue
IntlChar


Get the decimal digit value of a decimal digit character

IntlChar::charAge
IntlChar::charDirection
IntlChar
PHP Manual

IntlChar::charDigitValue

(PHP 7)

IntlChar::charDigitValue — Get the decimal digit value of a decimal digit character

说明

public static int IntlChar::charDigitValue ( mixed $codepoint )

Returns the decimal digit value of a decimal digit character.

Such characters have the general category "Nd" (decimal digit numbers) and a Numeric_Type of Decimal.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

The decimal digit value of codepoint, or -1 if it is not a decimal digit character.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::charDigitValue("1"));
var_dump(IntlChar::charDigitValue("\u{0662}"));
var_dump(IntlChar::charDigitValue("\u{0E53}"));
?>

以上例程会输出：

int(1)
int(2)
int(3)

参见

  • IntlChar::getNumericValue() - Get the numeric value for a Unicode code point

IntlChar::charAge
IntlChar::charDirection
IntlChar


Get bidirectional category value for a code point

IntlChar::charDigitValue
IntlChar::charFromName
IntlChar
PHP Manual

IntlChar::charDirection

(PHP 7)

IntlChar::charDirection — Get bidirectional category value for a code point

说明

public static int IntlChar::charDirection ( mixed $codepoint )

Returns the bidirectional category value for the code point, which is used in the » Unicode bidirectional algorithm (UAX #9).

Note:

Some unassigned code points have bidi values of R or AL because they are in blocks that are reserved for Right-To-Left scripts.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

The bidirectional category value; one of the following constants:

  • IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT
  • IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT
  • IntlChar::CHAR_DIRECTION_EUROPEAN_NUMBER
  • IntlChar::CHAR_DIRECTION_EUROPEAN_NUMBER_SEPARATOR
  • IntlChar::CHAR_DIRECTION_EUROPEAN_NUMBER_TERMINATOR
  • IntlChar::CHAR_DIRECTION_ARABIC_NUMBER
  • IntlChar::CHAR_DIRECTION_COMMON_NUMBER_SEPARATOR
  • IntlChar::CHAR_DIRECTION_BLOCK_SEPARATOR
  • IntlChar::CHAR_DIRECTION_SEGMENT_SEPARATOR
  • IntlChar::CHAR_DIRECTION_WHITE_SPACE_NEUTRAL
  • IntlChar::CHAR_DIRECTION_OTHER_NEUTRAL
  • IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT_EMBEDDING
  • IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT_OVERRIDE
  • IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_ARABIC
  • IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_EMBEDDING
  • IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_OVERRIDE
  • IntlChar::CHAR_DIRECTION_POP_DIRECTIONAL_FORMAT
  • IntlChar::CHAR_DIRECTION_DIR_NON_SPACING_MARK
  • IntlChar::CHAR_DIRECTION_BOUNDARY_NEUTRAL
  • IntlChar::CHAR_DIRECTION_FIRST_STRONG_ISOLATE
  • IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT_ISOLATE
  • IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT_ISOLATE
  • IntlChar::CHAR_DIRECTION_POP_DIRECTIONAL_ISOLATE
  • IntlChar::CHAR_DIRECTION_CHAR_DIRECTION_COUNT

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::charDirection("A") === IntlChar::CHAR_DIRECTION_LEFT_TO_RIGHT);
var_dump(IntlChar::charDirection("\u{05E9}") === IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT);
var_dump(IntlChar::charDirection("+") === IntlChar::CHAR_DIRECTION_EUROPEAN_NUMBER_SEPARATOR);
var_dump(IntlChar::charDirection(".") === IntlChar::CHAR_DIRECTION_COMMON_NUMBER_SEPARATOR);
?>

以上例程会输出：

bool(true)
bool(true)
bool(true)
bool(true)
IntlChar::charDigitValue
IntlChar::charFromName
IntlChar


Find Unicode character by name and return its code point value

IntlChar::charDirection
IntlChar::charMirror
IntlChar
PHP Manual

IntlChar::charFromName

(PHP 7)

IntlChar::charFromName — Find Unicode character by name and return its code point value

说明

public static int IntlChar::charFromName ( string $characterName [, int $nameChoice = IntlChar::UNICODE_CHAR_NAME ] )

Finds a Unicode character by its name and returns its code point value.

The name is matched exactly and completely. If the name does not correspond to a code point, FALSE is returned.

A Unicode 1.0 name is matched only if it differs from the modern name. Unicode names are all uppercase. Extended names are lowercase followed by an uppercase hexadecimal number, and within angle brackets.

参数

characterName

Full name of the Unicode character.

nameChoice

Which set of names to use for the lookup. Can be any of these constants:

  • IntlChar::UNICODE_CHAR_NAME (default)
  • IntlChar::UNICODE_10_CHAR_NAME
  • IntlChar::EXTENDED_CHAR_NAME
  • IntlChar::CHAR_NAME_ALIAS
  • IntlChar::CHAR_NAME_CHOICE_COUNT

返回值

The Unicode value of the code point with the given name (as an integer), or FALSE if there is no such code point.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::charFromName("LATIN CAPITAL LETTER A"));
var_dump(IntlChar::charFromName("SNOWMAN"));
var_dump(IntlChar::charFromName("RECYCLING SYMBOL FOR TYPE-1 PLASTICS"));
var_dump(IntlChar::charFromName("A RANDOM STRING WHICH DOESN'T CORRESPOND TO ANY UNICODE CHARACTER"));
?>

以上例程会输出：

int(65)
int(9731)
int(9843)
bool(false)

参见

  • IntlChar::charName() - Retrieve the name of a Unicode character
  • IntlChar::enumCharNames() - Enumerate all assigned Unicode characters within a range

IntlChar::charDirection
IntlChar::charMirror
IntlChar


Get the "mirror-image" character for a code point

IntlChar::charFromName
IntlChar::charName
IntlChar
PHP Manual

IntlChar::charMirror

(PHP 7)

IntlChar::charMirror — Get the "mirror-image" character for a code point

说明

public static mixed IntlChar::charMirror ( mixed $codepoint )

Maps the specified character to a "mirror-image" character.

For characters with the Bidi_Mirrored property, implementations sometimes need a "poor man's" mapping to another Unicode character (code point) such that the default glyph may serve as the mirror-image of the default glyph of the specified character. This is useful for text conversion to and from codepages with visual order, and for displays without glyph selection capabilities.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns another Unicode code point that may serve as a mirror-image substitute, or codepoint itself if there is no such mapping or codepoint does not have the Bidi_Mirrored property.

The return type will be integer unless the code point was passed as a UTF-8 string, in which case a string will be returned.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::charMirror("A"));
var_dump(IntlChar::charMirror("<"));
var_dump(IntlChar::charMirror("("));
?>

以上例程会输出：

string(1) "A"
string(1) ">"
string(2) ")"

参见

  • IntlChar::isMirrored() - Check if code point has the Bidi_Mirrored property
  • IntlChar::PROPERTY_BIDI_MIRRORED

IntlChar::charFromName
IntlChar::charName
IntlChar


Retrieve the name of a Unicode character

IntlChar::charMirror
IntlChar::charType
IntlChar
PHP Manual

IntlChar::charName

(PHP 7)

IntlChar::charName — Retrieve the name of a Unicode character

说明

public static string IntlChar::charName ( mixed $codepoint [, int $nameChoice = IntlChar::UNICODE_CHAR_NAME ] )

Retrieves the name of a Unicode character.

Depending on nameChoice, the resulting character name is the "modern" name or the name that was defined in Unicode version 1.0. The name contains only "invariant" characters like A-Z, 0-9, space, and '-'. Unicode 1.0 names are only retrieved if they are different from the modern names and if ICU contains the data for them.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

nameChoice

Which set of names to use for the lookup. Can be any of these constants:

  • IntlChar::UNICODE_CHAR_NAME (default)
  • IntlChar::UNICODE_10_CHAR_NAME
  • IntlChar::EXTENDED_CHAR_NAME
  • IntlChar::CHAR_NAME_ALIAS
  • IntlChar::CHAR_NAME_CHOICE_COUNT

返回值

The corresponding name, or an empty string if there is no name for this character.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::charName("."));
var_dump(IntlChar::charName(".", IntlChar::UNICODE_CHAR_NAME));
var_dump(IntlChar::charName("\u{2603}"));
var_dump(IntlChar::charName("\u{0000}"));
?>

以上例程会输出：

string(9) "FULL STOP"
string(9) "FULL STOP"
string(7) "SNOWMAN"
string(0) ""

参见

  • IntlChar::charFromName() - Find Unicode character by name and return its code point value
  • IntlChar::enumCharNames() - Enumerate all assigned Unicode characters within a range

IntlChar::charMirror
IntlChar::charType
IntlChar


Get the general category value for a code point

IntlChar::charName
IntlChar::chr
IntlChar
PHP Manual

IntlChar::charType

(PHP 7)

IntlChar::charType — Get the general category value for a code point

说明

public static int IntlChar::charType ( mixed $codepoint )

Returns the general category value for the code point.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns the general category type, which may be one of the following constants:

  • IntlChar::CHAR_CATEGORY_UNASSIGNED
  • IntlChar::CHAR_CATEGORY_GENERAL_OTHER_TYPES
  • IntlChar::CHAR_CATEGORY_UPPERCASE_LETTER
  • IntlChar::CHAR_CATEGORY_LOWERCASE_LETTER
  • IntlChar::CHAR_CATEGORY_TITLECASE_LETTER
  • IntlChar::CHAR_CATEGORY_MODIFIER_LETTER
  • IntlChar::CHAR_CATEGORY_OTHER_LETTER
  • IntlChar::CHAR_CATEGORY_NON_SPACING_MARK
  • IntlChar::CHAR_CATEGORY_ENCLOSING_MARK
  • IntlChar::CHAR_CATEGORY_COMBINING_SPACING_MARK
  • IntlChar::CHAR_CATEGORY_DECIMAL_DIGIT_NUMBER
  • IntlChar::CHAR_CATEGORY_LETTER_NUMBER
  • IntlChar::CHAR_CATEGORY_OTHER_NUMBER
  • IntlChar::CHAR_CATEGORY_SPACE_SEPARATOR
  • IntlChar::CHAR_CATEGORY_LINE_SEPARATOR
  • IntlChar::CHAR_CATEGORY_PARAGRAPH_SEPARATOR
  • IntlChar::CHAR_CATEGORY_CONTROL_CHAR
  • IntlChar::CHAR_CATEGORY_FORMAT_CHAR
  • IntlChar::CHAR_CATEGORY_PRIVATE_USE_CHAR
  • IntlChar::CHAR_CATEGORY_SURROGATE
  • IntlChar::CHAR_CATEGORY_DASH_PUNCTUATION
  • IntlChar::CHAR_CATEGORY_START_PUNCTUATION
  • IntlChar::CHAR_CATEGORY_END_PUNCTUATION
  • IntlChar::CHAR_CATEGORY_CONNECTOR_PUNCTUATION
  • IntlChar::CHAR_CATEGORY_OTHER_PUNCTUATION
  • IntlChar::CHAR_CATEGORY_MATH_SYMBOL
  • IntlChar::CHAR_CATEGORY_CURRENCY_SYMBOL
  • IntlChar::CHAR_CATEGORY_MODIFIER_SYMBOL
  • IntlChar::CHAR_CATEGORY_OTHER_SYMBOL
  • IntlChar::CHAR_CATEGORY_INITIAL_PUNCTUATION
  • IntlChar::CHAR_CATEGORY_FINAL_PUNCTUATION
  • IntlChar::CHAR_CATEGORY_CHAR_CATEGORY_COUNT

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::charType("A") === IntlChar::CHAR_CATEGORY_UPPERCASE_LETTER);
var_dump(IntlChar::charType(".") === IntlChar::CHAR_CATEGORY_OTHER_PUNCTUATION);
var_dump(IntlChar::charType("\t") === IntlChar::CHAR_CATEGORY_CONTROL_CHAR);
var_dump(IntlChar::charType("\u{2603}") === IntlChar::CHAR_CATEGORY_OTHER_SYMBOL);
?>

以上例程会输出：

bool(true)
bool(true)
bool(true)
bool(true)
IntlChar::charName
IntlChar::chr
IntlChar


Return Unicode character by code point value

IntlChar::charType
IntlChar::digit
IntlChar
PHP Manual

IntlChar::chr

(PHP 7)

IntlChar::chr — Return Unicode character by code point value

说明

public static string IntlChar::chr ( mixed $codepoint )

Returns a string containing the character specified by the Unicode code point value.

This function compliments IntlChar::ord().

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

A string containing the single character specified by the Unicode code point value.

范例

Example #1 Testing different code points

<?php
$values = ["A", 63, 123, 9731];
foreach ($values as $value) {
    var_dump(IntlChar::chr($value));
}
?>

以上例程会输出：

string(1) "A"
string(1) "A"
string(1) "{"
string(3) "?"

参见

  • IntlChar::ord() - Return Unicode code point value of character
  • chr() - 返回指定的字符

IntlChar::charType
IntlChar::digit
IntlChar


Get the decimal digit value of a code point for a given radix

IntlChar::chr
IntlChar::enumCharNames
IntlChar
PHP Manual

IntlChar::digit

(PHP 7)

IntlChar::digit — Get the decimal digit value of a code point for a given radix

说明

public static int IntlChar::digit ( string $codepoint [, int $radix = 10 ] )

Returns the decimal digit value of the code point in the specified radix.

If the radix is not in the range 2<=radix<=36 or if the value of codepoint is not a valid digit in the specified radix, FALSE is returned. A character is a valid digit if at least one of the following is true:

  • The character has a decimal digit value. Such characters have the general category "Nd" (decimal digit numbers) and a Numeric_Type of Decimal. In this case the value is the character's decimal digit value.
  • The character is one of the uppercase Latin letters 'A' through 'Z'. In this case the value is c-'A'+10.
  • The character is one of the lowercase Latin letters 'a' through 'z'. In this case the value is ch-'a'+10.
  • Latin letters from both the ASCII range (0061..007A, 0041..005A) as well as from the Fullwidth ASCII range (FF41..FF5A, FF21..FF3A) are recognized.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

radix

The radix (defaults to 10).

返回值

Returns the numeric value represented by the character in the specified radix, or FALSE if there is no value or if the value exceeds the radix.

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::digit("0"));
var_dump(IntlChar::digit("3"));
var_dump(IntlChar::digit("A"));
var_dump(IntlChar::digit("A", 16));
?>

以上例程会输出：

int(0)
int(3)
bool(false)
int(10)

参见

  • IntlChar::forDigit() - Get character representation for a given digit and radix
  • IntlChar::charDigitValue() - Get the decimal digit value of a decimal digit character
  • IntlChar::isdigit() - Check if code point is a digit character
  • IntlChar::PROPERTY_NUMERIC_TYPE

IntlChar::chr
IntlChar::enumCharNames
IntlChar


Enumerate all assigned Unicode characters within a range

IntlChar::digit
IntlChar::enumCharTypes
IntlChar
PHP Manual

IntlChar::enumCharNames

(PHP 7)

IntlChar::enumCharNames — Enumerate all assigned Unicode characters within a range

说明

public static void IntlChar::enumCharNames ( mixed $start , mixed $limit , callable $callback [, int $nameChoice = IntlChar::UNICODE_CHAR_NAME ] )

Enumerate all assigned Unicode characters between the start and limit code points (start inclusive, limit exclusive) and call a function for each, passing the code point value and the character name.

For Unicode 1.0 names, only those are enumerated that differ from the modern names.

参数

start

The first code point in the enumeration range.

limit

One more than the last code point in the enumeration range (the first one after the range).

callback

The function that is to be called for each character name. The following three arguments will be passed into it:

  • integer $codepoint - The numeric code point value
  • integer $nameChoice - The same value as the nameChoice parameter below
  • string $name - The name of the character

nameChoice

Selector for which kind of names to enumerate. Can be any of these constants:

  • IntlChar::UNICODE_CHAR_NAME (default)
  • IntlChar::UNICODE_10_CHAR_NAME
  • IntlChar::EXTENDED_CHAR_NAME
  • IntlChar::CHAR_NAME_ALIAS
  • IntlChar::CHAR_NAME_CHOICE_COUNT

返回值

没有返回值。

范例

Example #1 Enumerating over a sample range of code points

<?php
IntlChar::enumCharNames(0x2600, 0x2610, function($codepoint, $nameChoice, $name) {
    printf("U+%04x %s\n", $codepoint, $name);
});
?>

以上例程会输出：

U+2600 BLACK SUN WITH RAYS
U+2601 CLOUD
U+2602 UMBRELLA
U+2603 SNOWMAN
U+2604 COMET
U+2605 BLACK STAR
U+2606 WHITE STAR
U+2607 LIGHTNING
U+2608 THUNDERSTORM
U+2609 SUN
U+260a ASCENDING NODE
U+260b DESCENDING NODE
U+260c CONJUNCTION
U+260d OPPOSITION
U+260e BLACK TELEPHONE
U+260f WHITE TELEPHONE

参见

  • IntlChar::charName() - Retrieve the name of a Unicode character
  • IntlChar::charFromName() - Find Unicode character by name and return its code point value

IntlChar::digit
IntlChar::enumCharTypes
IntlChar


Enumerate all code points with their Unicode general categories

IntlChar::enumCharNames
IntlChar::foldCase
IntlChar
PHP Manual

IntlChar::enumCharTypes

(PHP 7)

IntlChar::enumCharTypes — Enumerate all code points with their Unicode general categories

说明

public static void IntlChar::enumCharTypes ( callable $callback )

Enumerates efficiently all code points with their Unicode general categories. This is useful for building data structures, for enumerating all assigned code points, etc.

For each contiguous range of code points with a given general category ("character type"), the callback function is called. Adjacent ranges have different types. The Unicode Standard guarantees that the numeric value of the type is 0..31.

参数

callback

The function that is to be called for each contiguous range of code points with the same general category. The following three arguments will be passed into it:

  • integer $start - The starting code point of the range
  • integer $end - The ending code point of the range
  • integer $name - The category type (one of the IntlChar::CHAR_CATEGORY_* constants)

返回值

没有返回值。

范例

Example #1 Enumerating over a sample range of code points

<?php
IntlChar::enumCharTypes(function($start, $end, $type) {
    printf("U+%04x through U+%04x are in category %d\n", $start, $end, $type);
});
?>

以上例程会输出：

U+0000 through U+0020 are in category 15
U+0020 through U+0021 are in category 12
U+0021 through U+0024 are in category 23
U+0024 through U+0025 are in category 25
U+0025 through U+0028 are in category 23
U+0028 through U+0029 are in category 20
U+0029 through U+002a are in category 21
U+002a through U+002b are in category 23
U+002b through U+002c are in category 24
U+002c through U+002d are in category 23
U+002d through U+002e are in category 19
U+002e through U+0030 are in category 23
U+0030 through U+003a are in category 9
...
IntlChar::enumCharNames
IntlChar::foldCase
IntlChar


Perform case folding on a code point

IntlChar::enumCharTypes
IntlChar::forDigit
IntlChar
PHP Manual

IntlChar::foldCase

(PHP 7)

IntlChar::foldCase — Perform case folding on a code point

说明

public static mixed IntlChar::foldCase ( mixed $codepoint [, int $options = IntlChar::FOLD_CASE_DEFAULT ] )

The given character is mapped to its case folding equivalent; if the character has no case folding equivalent, the character itself is returned.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

options

Either IntlChar::FOLD_CASE_DEFAULT (default) or IntlChar::FOLD_CASE_EXCLUDE_SPECIAL_I.

返回值

Returns the Simple_Case_Folding of the code point, if any; otherwise the code point itself.

IntlChar::enumCharTypes
IntlChar::forDigit
IntlChar


Get character representation for a given digit and radix

IntlChar::foldCase
IntlChar::getBidiPairedBracket
IntlChar
PHP Manual

IntlChar::forDigit

(PHP 7)

IntlChar::forDigit — Get character representation for a given digit and radix

说明

public static int IntlChar::forDigit ( int $digit [, int $radix = 10 ] )

Determines the character representation for a specific digit in the specified radix.

If the value of radix is not a valid radix, or the value of digit is not a valid digit in the specified radix, the null character (U+0000) is returned.

The radix argument is valid if it is greater than or equal to 2 and less than or equal to 36. The digit argument is valid if 0 <= digit < radix.

If the digit is less than 10, then '0' + digit is returned. Otherwise, the value 'a' + digit - 10 is returned.

参数

digit

The number to convert to a character.

radix

The radix (defaults to 10).

返回值

The character representation (as a string) of the specified digit in the specified radix.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::forDigit(0));
var_dump(IntlChar::forDigit(3));
var_dump(IntlChar::forDigit(3, 10));
var_dump(IntlChar::forDigit(10));
var_dump(IntlChar::forDigit(10, 16));
?>

以上例程会输出：

int(48)
int(51)
int(51)
int(0)
int(97)

参见

  • IntlChar::digit() - Get the decimal digit value of a code point for a given radix
  • IntlChar::charDigitValue() - Get the decimal digit value of a decimal digit character
  • IntlChar::isdigit() - Check if code point is a digit character
  • IntlChar::PROPERTY_NUMERIC_TYPE

IntlChar::foldCase
IntlChar::getBidiPairedBracket
IntlChar


Get the paired bracket character for a code point

IntlChar::forDigit
IntlChar::getBlockCode
IntlChar
PHP Manual

IntlChar::getBidiPairedBracket

(PHP 7)

IntlChar::getBidiPairedBracket — Get the paired bracket character for a code point

说明

public static mixed IntlChar::getBidiPairedBracket ( mixed $codepoint )

Maps the specified character to its paired bracket character.

For Bidi_Paired_Bracket_Type!=None, this is the same as IntlChar::charMirror(). Otherwise codepoint itself is returned.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns the paired bracket code point, or codepoint itself if there is no such mapping.

The return type will be integer unless the code point was passed as a UTF-8 string, in which case a string will be returned.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::getBidiPairedBracket(91));
var_dump(IntlChar::getBidiPairedBracket('['));
?>

以上例程会输出：

int(93)
string(1) "]"

参见

  • IntlChar::charMirror() - Get the "mirror-image" character for a code point
  • IntlChar::PROPERTY_BIDI_PAIRED_BRACKET
  • IntlChar::PROPERTY_BIDI_PAIRED_BRACKET_TYPE

IntlChar::forDigit
IntlChar::getBlockCode
IntlChar


Get the Unicode allocation block containing a code point

IntlChar::getBidiPairedBracket
IntlChar::getCombiningClass
IntlChar
PHP Manual

IntlChar::getBlockCode

(PHP 7)

IntlChar::getBlockCode — Get the Unicode allocation block containing a code point

说明

public static int IntlChar::getBlockCode ( mixed $codepoint )

Returns the Unicode allocation block that contains the character.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns the block value for codepoint. See the IntlChar::BLOCK_CODE_* constants for possible return values.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::getBlockCode("A") === IntlChar::BLOCK_CODE_BASIC_LATIN);
var_dump(IntlChar::getBlockCode("Φ") === IntlChar::BLOCK_CODE_GREEK);
var_dump(IntlChar::getBlockCode("\u{2603}") === IntlChar::BLOCK_CODE_MISCELLANEOUS_SYMBOLS);
?>

以上例程会输出：

bool(true)
bool(true)
bool(true)
IntlChar::getBidiPairedBracket
IntlChar::getCombiningClass
IntlChar


Get the combining class of a code point

IntlChar::getBlockCode
IntlChar::getFC_NFKC_Closure
IntlChar
PHP Manual

IntlChar::getCombiningClass

(PHP 7)

IntlChar::getCombiningClass — Get the combining class of a code point

说明

public static int IntlChar::getCombiningClass ( mixed $codepoint )

Returns the combining class of the code point.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns the combining class of the character.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::getCombiningClass("A"));
var_dump(IntlChar::getCombiningClass("\u{0334}"));
var_dump(IntlChar::getCombiningClass("\u{0358}"));
?>

以上例程会输出：

int(0)
int(1)
int(232)
IntlChar::getBlockCode
IntlChar::getFC_NFKC_Closure
IntlChar


Get the FC_NFKC_Closure property for a code point

IntlChar::getCombiningClass
IntlChar::getIntPropertyMaxValue
IntlChar
PHP Manual

IntlChar::getFC_NFKC_Closure

(PHP 7)

IntlChar::getFC_NFKC_Closure — Get the FC_NFKC_Closure property for a code point

说明

public static string IntlChar::getFC_NFKC_Closure ( mixed $codepoint )

Gets the FC_NFKC_Closure property string for a character.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns the FC_NFKC_Closure property string for the codepoint, or an empty string if there is none.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::getFC_NFKC_Closure("\u{2121}"));
var_dump(IntlChar::getFC_NFKC_Closure("\u{1D2D}"));
?>

以上例程会输出：

string(3) "tel"
string(2) "?"
IntlChar::getCombiningClass
IntlChar::getIntPropertyMaxValue
IntlChar


Get the max value for a Unicode property

IntlChar::getFC_NFKC_Closure
IntlChar::getIntPropertyMinValue
IntlChar
PHP Manual

IntlChar::getIntPropertyMaxValue

(PHP 7)

IntlChar::getIntPropertyMaxValue — Get the max value for a Unicode property

说明

public static int IntlChar::getIntPropertyMaxValue ( int $property )

Gets the maximum value for an enumerated/integer/binary Unicode property.

参数

property

The Unicode property to lookup (see the IntlChar::PROPERTY_* constants).

返回值

The maximum value returned by IntlChar::getIntPropertyValue() for a Unicode property. <=0 if the property selector is out of range.

范例

Example #1 Testing different properties

<?php
var_dump(IntlChar::getIntPropertyMaxValue(IntlChar::PROPERTY_BIDI_CLASS));
var_dump(IntlChar::getIntPropertyMaxValue(IntlChar::PROPERTY_SCRIPT));
var_dump(IntlChar::getIntPropertyMaxValue(IntlChar::PROPERTY_IDEOGRAPHIC));
var_dump(IntlChar::getIntPropertyMaxValue(999999999)); // Some made-up value
?>

以上例程会输出：

int(22)
int(166)
int(1)
int(-1)

参见

  • IntlChar::hasBinaryProperty() - Check a binary Unicode property for a code point
  • IntlChar::getIntPropertyMinValue() - Get the min value for a Unicode property
  • IntlChar::getIntPropertyValue() - Get the value for a Unicode property for a code point
  • IntlChar::getUnicodeVersion() - Get the Unicode version

IntlChar::getFC_NFKC_Closure
IntlChar::getIntPropertyMinValue
IntlChar


Get the min value for a Unicode property

IntlChar::getIntPropertyMaxValue
IntlChar::getIntPropertyValue
IntlChar
PHP Manual

IntlChar::getIntPropertyMinValue

(PHP 7)

IntlChar::getIntPropertyMinValue — Get the min value for a Unicode property

说明

public static int IntlChar::getIntPropertyMinValue ( int $property )

Gets the minimum value for an enumerated/integer/binary Unicode property.

参数

property

The Unicode property to lookup (see the IntlChar::PROPERTY_* constants).

返回值

The minimum value returned by IntlChar::getIntPropertyValue() for a Unicode property. 0 if the property selector is out of range.

范例

Example #1 Testing different properties

<?php
var_dump(IntlChar::getIntPropertyMinValue(IntlChar::PROPERTY_BIDI_CLASS));
var_dump(IntlChar::getIntPropertyMinValue(IntlChar::PROPERTY_SCRIPT));
var_dump(IntlChar::getIntPropertyMinValue(IntlChar::PROPERTY_IDEOGRAPHIC));
var_dump(IntlChar::getIntPropertyMinValue(999999999)); // Some made-up value
?>

以上例程会输出：

int(0)
int(0)
int(0)
int(0)

参见

  • IntlChar::hasBinaryProperty() - Check a binary Unicode property for a code point
  • IntlChar::getIntPropertyMaxValue() - Get the max value for a Unicode property
  • IntlChar::getIntPropertyValue() - Get the value for a Unicode property for a code point
  • IntlChar::getUnicodeVersion() - Get the Unicode version

IntlChar::getIntPropertyMaxValue
IntlChar::getIntPropertyValue
IntlChar


Get the value for a Unicode property for a code point

IntlChar::getIntPropertyMinValue
IntlChar::getNumericValue
IntlChar
PHP Manual

IntlChar::getIntPropertyValue

(PHP 7)

IntlChar::getIntPropertyValue — Get the value for a Unicode property for a code point

说明

public static int IntlChar::getIntPropertyValue ( mixed $codepoint , int $property )

Gets the property value for an enumerated or integer Unicode property for a code point. Also returns binary and mask property values.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

property

The Unicode property to lookup (see the IntlChar::PROPERTY_* constants).

返回值

Returns the numeric value that is directly the property value or, for enumerated properties, corresponds to the numeric value of the enumerated constant of the respective property value enumeration type.

Returns 0 or 1 (for FALSE/TRUE) for binary Unicode properties.

Returns a bit-mask for mask properties.

Returns 0 if property is out of bounds or if the Unicode version does not have data for the property at all, or not for this code point.

范例

Example #1 Testing different properties

<?php
var_dump(IntlChar::getIntPropertyValue("A", IntlChar::PROPERTY_ALPHABETIC) === 1);
var_dump(IntlChar::getIntPropertyValue("[", IntlChar::PROPERTY_BIDI_MIRRORED) === 1);
var_dump(IntlChar::getIntPropertyValue("Φ", IntlChar::PROPERTY_BLOCK) === IntlChar::BLOCK_CODE_GREEK);
?>

以上例程会输出：

bool(true)
bool(true)
bool(true)

参见

  • IntlChar::hasBinaryProperty() - Check a binary Unicode property for a code point
  • IntlChar::getIntPropertyMinValue() - Get the min value for a Unicode property
  • IntlChar::getIntPropertyMaxValue() - Get the max value for a Unicode property
  • IntlChar::getUnicodeVersion() - Get the Unicode version

IntlChar::getIntPropertyMinValue
IntlChar::getNumericValue
IntlChar


Get the numeric value for a Unicode code point

IntlChar::getIntPropertyValue
IntlChar::getPropertyEnum
IntlChar
PHP Manual

IntlChar::getNumericValue

(PHP 7)

IntlChar::getNumericValue — Get the numeric value for a Unicode code point

说明

public static float IntlChar::getNumericValue ( mixed $codepoint )

Gets the numeric value for a Unicode code point as defined in the Unicode Character Database.

For characters without any numeric values in the Unicode Character Database, this function will return IntlChar::NO_NUMERIC_VALUE.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Numeric value of codepoint, or IntlChar::NO_NUMERIC_VALUE if none is defined. This constant was added in PHP 7.0.6, prior to this version the literal value (float)-123456789 may be used instead.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::getNumericValue("4"));
var_dump(IntlChar::getNumericValue("x"));
var_dump(IntlChar::getNumericValue("\u{216C}"));
?>

以上例程会输出：

float(4)
float(-123456789)
float(50)
IntlChar::getIntPropertyValue
IntlChar::getPropertyEnum
IntlChar


Get the property constant value for a given property name

IntlChar::getNumericValue
IntlChar::getPropertyName
IntlChar
PHP Manual

IntlChar::getPropertyEnum

(PHP 7)

IntlChar::getPropertyEnum — Get the property constant value for a given property name

说明

public static int IntlChar::getPropertyEnum ( string $alias )

Returns the property constant value for a given property name, as specified in the Unicode database file PropertyAliases.txt. Short, long, and any other variants are recognized.

In addition, this function maps the synthetic names "gcm" / "General_Category_Mask" to the property IntlChar::PROPERTY_GENERAL_CATEGORY_MASK. These names are not in PropertyAliases.txt.

This function compliments IntlChar::getPropertyName().

参数

alias

The property name to be matched. The name is compared using "loose matching" as described in PropertyAliases.txt.

返回值

Returns an IntlChar::PROPERTY_ constant value, or IntlChar::PROPERTY_INVALID_CODE if the given name does not match any property.

范例

Example #1 Testing different properties

<?php
var_dump(IntlChar::getPropertyEnum('Bidi_Class') === IntlChar::PROPERTY_BIDI_CLASS);
var_dump(IntlChar::getPropertyEnum('script') === IntlChar::PROPERTY_SCRIPT);
var_dump(IntlChar::getPropertyEnum('IDEOGRAPHIC') === IntlChar::PROPERTY_IDEOGRAPHIC);
var_dump(IntlChar::getPropertyEnum('Some made-up string') === IntlChar::PROPERTY_INVALID_CODE);
?>

以上例程会输出：

bool(true)
bool(true)
bool(true)
bool(true)

参见

  • IntlChar::getPropertyName() - Get the Unicode name for a property

IntlChar::getNumericValue
IntlChar::getPropertyName
IntlChar


Get the Unicode name for a property

IntlChar::getPropertyEnum
IntlChar::getPropertyValueEnum
IntlChar
PHP Manual

IntlChar::getPropertyName

(PHP 7)

IntlChar::getPropertyName — Get the Unicode name for a property

说明

public static string IntlChar::getPropertyName ( int $property [, int $nameChoice = IntlChar::LONG_PROPERTY_NAME ] )

Returns the Unicode name for a given property, as given in the Unicode database file PropertyAliases.txt.

In addition, this function maps the property IntlChar::PROPERTY_GENERAL_CATEGORY_MASK to the synthetic names "gcm" / "General_Category_Mask". These names are not in PropertyAliases.txt.

This function compliments IntlChar::getPropertyEnum().

参数

property

The Unicode property to lookup (see the IntlChar::PROPERTY_* constants).

IntlChar::PROPERTY_INVALID_CODE should not be used. Also, if property is out of range, FALSE is returned.

nameChoice

Selector for which name to get. If out of range, FALSE is returned.

All properties have a long name. Most have a short name, but some do not. Unicode allows for additional names; if present these will be returned by adding 1, 2, etc. to IntlChar::LONG_PROPERTY_NAME.

返回值

Returns the name, or FALSE if either the property or the nameChoice is out of range.

If a given nameChoice returns FALSE, then all larger values of nameChoice will return FALSE, with one exception: if FALSE is returned for IntlChar::SHORT_PROPERTY_NAME, then IntlChar::LONG_PROPERTY_NAME (and higher) may still return a non-FALSE value.

范例

Example #1 Testing different properties

<?php
var_dump(IntlChar::getPropertyName(IntlChar::PROPERTY_BIDI_CLASS));
var_dump(IntlChar::getPropertyName(IntlChar::PROPERTY_BIDI_CLASS, IntlChar::SHORT_PROPERTY_NAME));
var_dump(IntlChar::getPropertyName(IntlChar::PROPERTY_BIDI_CLASS, IntlChar::LONG_PROPERTY_NAME));
var_dump(IntlChar::getPropertyName(IntlChar::PROPERTY_BIDI_CLASS, IntlChar::LONG_PROPERTY_NAME + 1));
?>

以上例程会输出：

string(10) "Bidi_Class"
string(2) "bc"
string(10) "Bidi_Class"
bool(false)

参见

  • IntlChar::getPropertyEnum() - Get the property constant value for a given property name

IntlChar::getPropertyEnum
IntlChar::getPropertyValueEnum
IntlChar


Get the property value for a given value name

IntlChar::getPropertyName
IntlChar::getPropertyValueName
IntlChar
PHP Manual

IntlChar::getPropertyValueEnum

(PHP 7)

IntlChar::getPropertyValueEnum — Get the property value for a given value name

说明

public static int IntlChar::getPropertyValueEnum ( int $property , string $name )

Returns the property value integer for a given value name, as specified in the Unicode database file PropertyValueAliases.txt. Short, long, and any other variants are recognized.

Note:

Some of the names in PropertyValueAliases.txt will only be recognized with IntlChar::PROPERTY_GENERAL_CATEGORY_MASK, not IntlChar::PROPERTY_GENERAL_CATEGORY. These include:

  • "C" / "Other"
  • "L" / "Letter"
  • "LC" / "Cased_Letter"
  • "M" / "Mark"
  • "N" / "Number"
  • "P" / "Punctuation"
  • "S" / "Symbol"
  • "Z" / "Separator"

参数

property

The Unicode property to lookup (see the IntlChar::PROPERTY_* constants).

If out of range, or this method doesn't work with the given value, IntlChar::PROPERTY_INVALID_CODE is returned.

name

The value name to be matched. The name is compared using "loose matching" as described in PropertyValueAliases.txt.

返回值

Returns the corresponding value integer, or IntlChar::PROPERTY_INVALID_CODE if the given name does not match any value of the given property, or if the property is invalid.

范例

Example #1 Testing different properties

<?php
var_dump(IntlChar::getPropertyValueEnum(IntlChar::PROPERTY_BLOCK, 'greek') === IntlChar::BLOCK_CODE_GREEK);
var_dump(IntlChar::getPropertyValueEnum(IntlChar::PROPERTY_BIDI_CLASS, 'RIGHT_TO_LEFT') === IntlChar::CHAR_DIRECTION_RIGHT_TO_LEFT);
var_dump(IntlChar::getPropertyValueEnum(IntlChar::PROPERTY_BIDI_CLASS, 'some made-up string') === IntlChar::PROPERTY_INVALID_CODE);
var_dump(IntlChar::getPropertyValueEnum(123456789, 'RIGHT_TO_LEFT') === IntlChar::PROPERTY_INVALID_CODE);
?>

以上例程会输出：

bool(true)
bool(true)
bool(true)
bool(true)
IntlChar::getPropertyName
IntlChar::getPropertyValueName
IntlChar


Get the Unicode name for a property value

IntlChar::getPropertyValueEnum
IntlChar::getUnicodeVersion
IntlChar
PHP Manual

IntlChar::getPropertyValueName

(PHP 7)

IntlChar::getPropertyValueName — Get the Unicode name for a property value

说明

public static string IntlChar::getPropertyValueName ( int $property , int $value [, int $nameChoice = IntlChar::LONG_PROPERTY_NAME ] )

Returns the Unicode name for a given property value, as given in the Unicode database file PropertyValueAliases.txt.

Note:

Some of the names in PropertyValueAliases.txt can only be retrieved using IntlChar::PROPERTY_GENERAL_CATEGORY_MASK, not IntlChar::PROPERTY_GENERAL_CATEGORY. These include:

  • "C" / "Other"
  • "L" / "Letter"
  • "LC" / "Cased_Letter"
  • "M" / "Mark"
  • "N" / "Number"
  • "P" / "Punctuation"
  • "S" / "Symbol"
  • "Z" / "Separator"

参数

property

The Unicode property to lookup (see the IntlChar::PROPERTY_* constants).

If out of range, or this method doesn't work with the given value, FALSE is returned.

value

Selector for a value for the given property. If out of range, FALSE is returned.

In general, valid values range from 0 up to some maximum. There are a couple exceptions:

  • IntlChar::PROPERTY_BLOCK values begin at the non-zero value IntlChar::BLOCK_CODE_BASIC_LATIN
  • IntlChar::PROPERTY_CANONICAL_COMBINING_CLASS values are not contiguous and range from 0..240.

nameChoice

Selector for which name to get. If out of range, FALSE is returned.

All values have a long name. Most have a short name, but some do not. Unicode allows for additional names; if present these will be returned by adding 1, 2, etc. to IntlChar::LONG_PROPERTY_NAME.

返回值

Returns the name, or FALSE if either the property or the nameChoice is out of range.

If a given nameChoice returns FALSE, then all larger values of nameChoice will return FALSE, with one exception: if FALSE is returned for IntlChar::SHORT_PROPERTY_NAME, then IntlChar::LONG_PROPERTY_NAME (and higher) may still return a non-FALSE value.

范例

Example #1 Testing different properties

<?php
var_dump(IntlChar::getPropertyValueName(IntlChar::PROPERTY_BLOCK, IntlChar::BLOCK_CODE_GREEK));
var_dump(IntlChar::getPropertyValueName(IntlChar::PROPERTY_BLOCK, IntlChar::BLOCK_CODE_GREEK, IntlChar::SHORT_PROPERTY_NAME));
var_dump(IntlChar::getPropertyValueName(IntlChar::PROPERTY_BLOCK, IntlChar::BLOCK_CODE_GREEK, IntlChar::LONG_PROPERTY_NAME));
var_dump(IntlChar::getPropertyValueName(IntlChar::PROPERTY_BLOCK, IntlChar::BLOCK_CODE_GREEK, IntlChar::LONG_PROPERTY_NAME + 1));
?>

以上例程会输出：

string(16) "Greek_And_Coptic"
string(5) "Greek"
string(16) "Greek_And_Coptic"
bool(false)
IntlChar::getPropertyValueEnum
IntlChar::getUnicodeVersion
IntlChar


Get the Unicode version

IntlChar::getPropertyValueName
IntlChar::hasBinaryProperty
IntlChar
PHP Manual

IntlChar::getUnicodeVersion

(PHP 7)

IntlChar::getUnicodeVersion — Get the Unicode version

说明

public static array IntlChar::getUnicodeVersion ( void )

Gets the Unicode version information.

The version array is filled in with the version information for the Unicode standard that is currently used by ICU. For example, Unicode version 3.1.1 is represented as an array with the values [3, 1, 1, 0].

参数

此函数没有参数。

返回值

An array containing the Unicode version number.

范例

Example #1 Testing different properties

<?php
var_dump(IntlChar::getUnicodeVersion());
?>

以上例程会输出：

array(4) {
  [0]=>
  int(7)
  [1]=>
  int(0)
  [2]=>
  int(0)
  [3]=>
  int(0)
}

参见

  • IntlChar::charAge() - Get the "age" of the code point

IntlChar::getPropertyValueName
IntlChar::hasBinaryProperty
IntlChar


Check a binary Unicode property for a code point

IntlChar::getUnicodeVersion
IntlChar::isalnum
IntlChar
PHP Manual

IntlChar::hasBinaryProperty

(PHP 7)

IntlChar::hasBinaryProperty — Check a binary Unicode property for a code point

说明

public static bool IntlChar::hasBinaryProperty ( mixed $codepoint , int $property )

Checks a binary Unicode property for a code point.

Unicode, especially in version 3.2, defines many more properties than the original set in UnicodeData.txt.

The properties APIs are intended to reflect Unicode properties as defined in the Unicode Character Database (UCD) and Unicode Technical Reports (UTR). For details about the properties see » http://www.unicode.org/ucd/. For names of Unicode properties see the UCD file PropertyAliases.txt.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

property

The Unicode property to lookup (see the IntlChar::PROPERTY_* constants).

返回值

Returns TRUE or FALSE according to the binary Unicode property value for codepoint. Also FALSE if property is out of bounds or if the Unicode version does not have data for the property at all, or not for this code point.

范例

Example #1 Testing different properties

<?php
var_dump(IntlChar::hasBinaryProperty("A", IntlChar::PROPERTY_ALPHABETIC));
var_dump(IntlChar::hasBinaryProperty("A", IntlChar::PROPERTY_CASE_SENSITIVE));
var_dump(IntlChar::hasBinaryProperty("A", IntlChar::PROPERTY_BIDI_MIRRORED));
var_dump(IntlChar::hasBinaryProperty("[", IntlChar::PROPERTY_ALPHABETIC));
var_dump(IntlChar::hasBinaryProperty("[", IntlChar::PROPERTY_CASE_SENSITIVE));
var_dump(IntlChar::hasBinaryProperty("[", IntlChar::PROPERTY_BIDI_MIRRORED));
?>

以上例程会输出：

bool(true)
bool(true)
bool(false)
bool(false)
bool(false)
bool(true)

参见

  • IntlChar::getIntPropertyValue() - Get the value for a Unicode property for a code point
  • IntlChar::getUnicodeVersion() - Get the Unicode version

IntlChar::getUnicodeVersion
IntlChar::isalnum
IntlChar


Check if code point is an alphanumeric character

IntlChar::hasBinaryProperty
IntlChar::isalpha
IntlChar
PHP Manual

IntlChar::isalnum

(PHP 7)

IntlChar::isalnum — Check if code point is an alphanumeric character

说明

public static bool IntlChar::isalnum ( mixed $codepoint )

Determines whether the specified code point is an alphanumeric character (letter or digit). TRUE for characters with general categories "L" (letters) and "Nd" (decimal digit numbers).

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint is an alphanumeric character, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isalnum("A"));
var_dump(IntlChar::isalnum("1"));
var_dump(IntlChar::isalnum("\u{2603}"));
?>

以上例程会输出：

bool(true)
bool(true)
bool(false)

参见

  • IntlChar::isalpha() - Check if code point is a letter character
  • IntlChar::isdigit() - Check if code point is a digit character

IntlChar::hasBinaryProperty
IntlChar::isalpha
IntlChar


Check if code point is a letter character

IntlChar::isalnum
IntlChar::isbase
IntlChar
PHP Manual

IntlChar::isalpha

(PHP 7)

IntlChar::isalpha — Check if code point is a letter character

说明

public static bool IntlChar::isalpha ( mixed $codepoint )

Determines whether the specified code point is a letter character. TRUE for general categories "L" (letters).

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint is a letter character, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isalpha("A"));
var_dump(IntlChar::isalpha("1"));
var_dump(IntlChar::isalpha("\u{2603}"));
?>

以上例程会输出：

bool(true)
bool(false)
bool(false)

参见

  • IntlChar::isalnum() - Check if code point is an alphanumeric character
  • IntlChar::isdigit() - Check if code point is a digit character

IntlChar::isalnum
IntlChar::isbase
IntlChar


Check if code point is a base character

IntlChar::isalpha
IntlChar::isblank
IntlChar
PHP Manual

IntlChar::isbase

(PHP 7)

IntlChar::isbase — Check if code point is a base character

说明

public static bool IntlChar::isbase ( mixed $codepoint )

Determines whether the specified code point is a base character. TRUE for general categories "L" (letters), "N" (numbers), "Mc" (spacing combining marks), and "Me" (enclosing marks).

Note:

This is different from the Unicode definition in chapter 3.5, conformance clause D13, which defines base characters to be all characters (not Cn) that do not graphically combine with preceding characters (M) and that are neither control (Cc) or format (Cf) characters.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint is a base character, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isbase("A"));
var_dump(IntlChar::isbase("1"));
var_dump(IntlChar::isbase("\u{2603}"));
?>

以上例程会输出：

bool(true)
bool(true)
bool(false)

参见

  • IntlChar::isalpha() - Check if code point is a letter character
  • IntlChar::isdigit() - Check if code point is a digit character

IntlChar::isalpha
IntlChar::isblank
IntlChar


Check if code point is a "blank" or "horizontal space" character

IntlChar::isbase
IntlChar::iscntrl
IntlChar
PHP Manual

IntlChar::isblank

(PHP 7)

IntlChar::isblank — Check if code point is a "blank" or "horizontal space" character

说明

public static bool IntlChar::isblank ( mixed $codepoint )

Determines whether the specified code point is a "blank" or "horizontal space", a character that visibly separates words on a line.

The following are equivalent definitions:

  • TRUE for Unicode White_Space characters except for "vertical space controls" where "vertical space controls" are the following characters: U+000A (LF) U+000B (VT) U+000C (FF) U+000D (CR) U+0085 (NEL) U+2028 (LS) U+2029 (PS)
  • TRUE for U+0009 (TAB) and characters with general category "Zs" (space separators) except Zero Width Space (ZWSP, U+200B).

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint is either a "blank" or "horizontal space" character, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isblank("A"));
var_dump(IntlChar::isblank(" "));
var_dump(IntlChar::isblank("\t"));
?>

以上例程会输出：

bool(false)
bool(true)
bool(true)

参见

  • IntlChar::isspace() - Check if code point is a space character
  • IntlChar::isJavaSpaceChar() - Check if code point is a space character according to Java
  • IntlChar::isUWhiteSpace() - Check if code point has the White_Space Unicode property
  • IntlChar::isWhitespace() - Check if code point is a whitespace character according to ICU

IntlChar::isbase
IntlChar::iscntrl
IntlChar


Check if code point is a control character

IntlChar::isblank
IntlChar::isdefined
IntlChar
PHP Manual

IntlChar::iscntrl

(PHP 7)

IntlChar::iscntrl — Check if code point is a control character

说明

public static bool IntlChar::iscntrl ( mixed $codepoint )

Determines whether the specified code point is a control character.

A control character is one of the following:

  • ISO 8-bit control character (U+0000..U+001f and U+007f..U+009f)
  • IntlChar::CHAR_CATEGORY_CONTROL_CHAR (Cc)
  • IntlChar::CHAR_CATEGORY_FORMAT_CHAR (Cf)
  • IntlChar::CHAR_CATEGORY_LINE_SEPARATOR (Zl)
  • IntlChar::CHAR_CATEGORY_PARAGRAPH_SEPARATOR (Zp)

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint is a control character, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::iscntrl("A"));
var_dump(IntlChar::iscntrl(" "));
var_dump(IntlChar::iscntrl("\n"));
var_dump(IntlChar::iscntrl("\u{200e}"));
?>

以上例程会输出：

bool(false)
bool(false)
bool(true)
bool(true)

参见

  • IntlChar::isprint() - Check if code point is a printable character
  • IntlChar::PROPERTY_DEFAULT_IGNORABLE_CODE_POINT

IntlChar::isblank
IntlChar::isdefined
IntlChar


Check whether the code point is defined

IntlChar::iscntrl
IntlChar::isdigit
IntlChar
PHP Manual

IntlChar::isdefined

(PHP 7)

IntlChar::isdefined — Check whether the code point is defined

说明

public static bool IntlChar::isdefined ( mixed $codepoint )

Determines whether the specified code point is "defined", which usually means that it is assigned a character.

TRUE for general categories other than "Cn" (other, not assigned).

Note:

Note that non-character code points (e.g., U+FDD0) are not "defined" (they are Cn), but surrogate code points are "defined" (Cs).

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint is a defined character, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isdefined("A"));
var_dump(IntlChar::isdefined(" "));
var_dump(IntlChar::isdefined("\u{FDD0}"));
?>

以上例程会输出：

bool(true)
bool(true)
bool(false)

参见

  • IntlChar::isdigit() - Check if code point is a digit character
  • IntlChar::isalpha() - Check if code point is a letter character
  • IntlChar::isalnum() - Check if code point is an alphanumeric character
  • IntlChar::isupper() - Check if code point has the general category "Lu" (uppercase letter)
  • IntlChar::islower() - Check if code point is a lowercase letter
  • IntlChar::istitle() - Check if code point is a titlecase letter

IntlChar::iscntrl
IntlChar::isdigit
IntlChar


Check if code point is a digit character

IntlChar::isdefined
IntlChar::isgraph
IntlChar
PHP Manual

IntlChar::isdigit

(PHP 7)

IntlChar::isdigit — Check if code point is a digit character

说明

public static bool IntlChar::isdigit ( mixed $codepoint )

Determines whether the specified code point is a digit character.

TRUE for characters with general category "Nd" (decimal digit numbers). Beginning with Unicode 4, this is the same as testing for the Numeric_Type of Decimal.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint is a digit character, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isdigit("A"));
var_dump(IntlChar::isdigit("1"));
var_dump(IntlChar::isdigit("\t"));
?>

以上例程会输出：

bool(false)
bool(true)
bool(false)

参见

  • IntlChar::isalpha() - Check if code point is a letter character
  • IntlChar::isalnum() - Check if code point is an alphanumeric character
  • IntlChar::isxdigit() - Check if code point is a hexadecimal digit

IntlChar::isdefined
IntlChar::isgraph
IntlChar


Check if code point is a graphic character

IntlChar::isdigit
IntlChar::isIDIgnorable
IntlChar
PHP Manual

IntlChar::isgraph

(PHP 7)

IntlChar::isgraph — Check if code point is a graphic character

说明

public static bool IntlChar::isgraph ( mixed $codepoint )

Determines whether the specified code point is a "graphic" character (printable, excluding spaces).

TRUE for all characters except those with general categories "Cc" (control codes), "Cf" (format controls), "Cs" (surrogates), "Cn" (unassigned), and "Z" (separators).

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint is a "graphic" character, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isgraph("A"));
var_dump(IntlChar::isgraph("1"));
var_dump(IntlChar::isgraph("\u{2603}"));
var_dump(IntlChar::isgraph("\n"));
?>

以上例程会输出：

bool(true)
bool(true)
bool(true)
bool(false)
IntlChar::isdigit
IntlChar::isIDIgnorable
IntlChar


Check if code point is an ignorable character

IntlChar::isgraph
IntlChar::isIDPart
IntlChar
PHP Manual

IntlChar::isIDIgnorable

(PHP 7)

IntlChar::isIDIgnorable — Check if code point is an ignorable character

说明

public static bool IntlChar::isIDIgnorable ( mixed $codepoint )

Determines if the specified character should be regarded as an ignorable character in an identifier.

TRUE for characters with general category "Cf" (format controls) as well as non-whitespace ISO controls (U+0000..U+0008, U+000E..U+001B, U+007F..U+009F).

Note:

Note that Unicode just recommends to ignore Cf (format controls).

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint is ignorable in identifiers, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isIDIgnorable("A"));
var_dump(IntlChar::isIDIgnorable(" "));
var_dump(IntlChar::isIDIgnorable("\u{007F}"));
?>

以上例程会输出：

bool(false)
bool(false)
bool(true)

参见

  • IntlChar::isIDStart() - Check if code point is permissible as the first character in an identifier
  • IntlChar::isIDPart() - Check if code point is permissible in an identifier
  • IntlChar::PROPERTY_DEFAULT_IGNORABLE_CODE_POINT

IntlChar::isgraph
IntlChar::isIDPart
IntlChar


Check if code point is permissible in an identifier

IntlChar::isIDIgnorable
IntlChar::isIDStart
IntlChar
PHP Manual

IntlChar::isIDPart

(PHP 7)

IntlChar::isIDPart — Check if code point is permissible in an identifier

说明

public static bool IntlChar::isIDPart ( mixed $codepoint )

Determines if the specified character is permissible in an identifier.

TRUE for characters with general categories "L" (letters), "Nl" (letter numbers), "Nd" (decimal digits), "Mc" and "Mn" (combining marks), "Pc" (connecting punctuation), and u_isIDIgnorable(c).

Note:

This is almost the same as Unicode's ID_Continue (IntlChar::PROPERTY_ID_CONTINUE) except that Unicode recommends to ignore Cf which is less than IntlChar::isIDIgnorable().

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint is the code point may occur in an identifier, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isIDPart("A"));
var_dump(IntlChar::isIDPart("$"));
var_dump(IntlChar::isIDPart("\n"));
var_dump(IntlChar::isIDPart("\u{2603}"));
?>

以上例程会输出：

bool(true)
bool(false)
bool(false)
bool(false)

参见

  • IntlChar::isIDIgnorable() - Check if code point is an ignorable character
  • IntlChar::isIDStart() - Check if code point is permissible as the first character in an identifier
  • IntlChar::PROPERTY_ID_CONTINUE

IntlChar::isIDIgnorable
IntlChar::isIDStart
IntlChar


Check if code point is permissible as the first character in an identifier

IntlChar::isIDPart
IntlChar::isISOControl
IntlChar
PHP Manual

IntlChar::isIDStart

(PHP 7)

IntlChar::isIDStart — Check if code point is permissible as the first character in an identifier

说明

public static bool IntlChar::isIDStart ( mixed $codepoint )

Determines if the specified character is permissible as the first character in an identifier according to Unicode (The Unicode Standard, Version 3.0, chapter 5.16 Identifiers).

TRUE for characters with general categories "L" (letters) and "Nl" (letter numbers).

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint may start an identifier, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isIDStart("A"));
var_dump(IntlChar::isIDStart("$"));
var_dump(IntlChar::isIDStart("\n"));
var_dump(IntlChar::isIDStart("\u{2603}"));
?>

以上例程会输出：

bool(true)
bool(false)
bool(false)
bool(false)

参见

  • IntlChar::isalpha() - Check if code point is a letter character
  • IntlChar::isIDPart() - Check if code point is permissible in an identifier
  • IntlChar::PROPERTY_ID_START

IntlChar::isIDPart
IntlChar::isISOControl
IntlChar


Check if code point is an ISO control code

IntlChar::isIDStart
IntlChar::isJavaIDPart
IntlChar
PHP Manual

IntlChar::isISOControl

(PHP 7)

IntlChar::isISOControl — Check if code point is an ISO control code

说明

public static bool IntlChar::isISOControl ( mixed $codepoint )

Determines whether the specified code point is an ISO control code.

TRUE for U+0000..U+001f and U+007f..U+009f (general category "Cc").

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint is an ISO control code, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isISOControl(" "));
var_dump(IntlChar::isISOControl("\n"));
var_dump(IntlChar::isISOControl("\u{200e}"));
?>

以上例程会输出：

bool(false)
bool(true)
bool(false)

参见

  • IntlChar::iscntrl() - Check if code point is a control character

IntlChar::isIDStart
IntlChar::isJavaIDPart
IntlChar


Check if code point is permissible in a Java identifier

IntlChar::isISOControl
IntlChar::isJavaIDStart
IntlChar
PHP Manual

IntlChar::isJavaIDPart

(PHP 7)

IntlChar::isJavaIDPart — Check if code point is permissible in a Java identifier

说明

public static bool IntlChar::isJavaIDPart ( mixed $codepoint )

Determines if the specified character is permissible in a Java identifier.

In addition to IntlChar::isIDPart(), TRUE for characters with general category "Sc" (currency symbols).

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint may occur in a Java identifier, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isJavaIDPart("A"));
var_dump(IntlChar::isJavaIDPart("$"));
var_dump(IntlChar::isJavaIDPart("\n"));
var_dump(IntlChar::isJavaIDPart("\u{2603}"));
?>

以上例程会输出：

bool(true)
bool(true)
bool(false)
bool(false)

参见

  • IntlChar::isIDIgnorable() - Check if code point is an ignorable character
  • IntlChar::isIDPart() - Check if code point is permissible in an identifier
  • IntlChar::isJavaIDStart() - Check if code point is permissible as the first character in a Java identifier
  • IntlChar::isalpha() - Check if code point is a letter character
  • IntlChar::isdigit() - Check if code point is a digit character

IntlChar::isISOControl
IntlChar::isJavaIDStart
IntlChar


Check if code point is permissible as the first character in a Java identifier

IntlChar::isJavaIDPart
IntlChar::isJavaSpaceChar
IntlChar
PHP Manual

IntlChar::isJavaIDStart

(PHP 7)

IntlChar::isJavaIDStart — Check if code point is permissible as the first character in a Java identifier

说明

public static bool IntlChar::isJavaIDStart ( mixed $codepoint )

Determines if the specified character is permissible as the start of a Java identifier.

In addition to IntlChar::isIDStart(), TRUE for characters with general categories "Sc" (currency symbols) and "Pc" (connecting punctuation).

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint may start a Java identifier, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isJavaIDStart("A"));
var_dump(IntlChar::isJavaIDStart("$"));
var_dump(IntlChar::isJavaIDStart("\n"));
var_dump(IntlChar::isJavaIDStart("\u{2603}"));
?>

以上例程会输出：

bool(true)
bool(true)
bool(false)
bool(false)

参见

  • IntlChar::isIDStart() - Check if code point is permissible as the first character in an identifier
  • IntlChar::isJavaIDPart() - Check if code point is permissible in a Java identifier
  • IntlChar::isalpha() - Check if code point is a letter character

IntlChar::isJavaIDPart
IntlChar::isJavaSpaceChar
IntlChar


Check if code point is a space character according to Java

IntlChar::isJavaIDStart
IntlChar::islower
IntlChar
PHP Manual

IntlChar::isJavaSpaceChar

(PHP 7)

IntlChar::isJavaSpaceChar — Check if code point is a space character according to Java

说明

public static bool IntlChar::isJavaSpaceChar ( mixed $codepoint )

Determine if the specified code point is a space character according to Java.

TRUE for characters with general categories "Z" (separators), which does not include control codes (e.g., TAB or Line Feed).

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint is a space character according to Java, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isJavaSpaceChar("A"));
var_dump(IntlChar::isJavaSpaceChar(" "));
var_dump(IntlChar::isJavaSpaceChar("\n"));
var_dump(IntlChar::isJavaSpaceChar("\t"));
var_dump(IntlChar::isJavaSpaceChar("\u{00A0}"));
?>

以上例程会输出：

bool(false)
bool(true)
bool(false)
bool(false)
bool(true)

参见

  • IntlChar::isspace() - Check if code point is a space character
  • IntlChar::isWhitespace() - Check if code point is a whitespace character according to ICU
  • IntlChar::isUWhiteSpace() - Check if code point has the White_Space Unicode property

IntlChar::isJavaIDStart
IntlChar::islower
IntlChar


Check if code point is a lowercase letter

IntlChar::isJavaSpaceChar
IntlChar::isMirrored
IntlChar
PHP Manual

IntlChar::islower

(PHP 7)

IntlChar::islower — Check if code point is a lowercase letter

说明

public static bool IntlChar::islower ( mixed $codepoint )

Determines whether the specified code point has the general category "Ll" (lowercase letter).

Note:

This misses some characters that are also lowercase but have a different general category value. In order to include those, use IntlChar::isULowercase().

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint is an Ll lowercase letter, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::islower("A"));
var_dump(IntlChar::islower("a"));
var_dump(IntlChar::islower("Φ"));
var_dump(IntlChar::islower("φ"));
var_dump(IntlChar::islower("1"));
?>

以上例程会输出：

bool(false)
bool(true)
bool(false)
bool(true)
bool(false)

参见

  • IntlChar::isupper() - Check if code point has the general category "Lu" (uppercase letter)
  • IntlChar::istitle() - Check if code point is a titlecase letter
  • IntlChar::tolower() - Make Unicode character lowercase
  • IntlChar::toupper() - Make Unicode character uppercase
  • IntlChar::PROPERTY_LOWERCASE

IntlChar::isJavaSpaceChar
IntlChar::isMirrored
IntlChar


Check if code point has the Bidi_Mirrored property

IntlChar::islower
IntlChar::isprint
IntlChar
PHP Manual

IntlChar::isMirrored

(PHP 7)

IntlChar::isMirrored — Check if code point has the Bidi_Mirrored property

说明

public static bool IntlChar::isMirrored ( mixed $codepoint )

Determines whether the code point has the Bidi_Mirrored property.

This property is set for characters that are commonly used in Right-To-Left contexts and need to be displayed with a "mirrored" glyph.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint has the Bidi_Mirrored property, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isMirrored("A"));
var_dump(IntlChar::isMirrored("<"));
var_dump(IntlChar::isMirrored("("));
?>

以上例程会输出：

bool(false)
bool(true)
bool(true)

参见

  • IntlChar::charMirror() - Get the "mirror-image" character for a code point
  • IntlChar::PROPERTY_BIDI_MIRRORED

IntlChar::islower
IntlChar::isprint
IntlChar


Check if code point is a printable character

IntlChar::isMirrored
IntlChar::ispunct
IntlChar
PHP Manual

IntlChar::isprint

(PHP 7)

IntlChar::isprint — Check if code point is a printable character

说明

public static bool IntlChar::isprint ( mixed $codepoint )

Determines whether the specified code point is a printable character.

TRUE for general categories other than "C" (controls).

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint is a printable character, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isprint("A"));
var_dump(IntlChar::isprint(" "));
var_dump(IntlChar::isprint("\n"));
var_dump(IntlChar::isprint("\u{200e}"));
?>

以上例程会输出：

bool(true)
bool(true)
bool(false)
bool(false)

参见

  • IntlChar::iscntrl() - Check if code point is a control character
  • IntlChar::PROPERTY_DEFAULT_IGNORABLE_CODE_POINT

IntlChar::isMirrored
IntlChar::ispunct
IntlChar


Check if code point is punctuation character

IntlChar::isprint
IntlChar::isspace
IntlChar
PHP Manual

IntlChar::ispunct

(PHP 7)

IntlChar::ispunct — Check if code point is punctuation character

说明

public static bool IntlChar::ispunct ( mixed $codepoint )

Determines whether the specified code point is a punctuation character.

TRUE for characters with general categories "P" (punctuation).

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint is a punctuation character, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::ispunct("."));
var_dump(IntlChar::ispunct(","));
var_dump(IntlChar::ispunct("\n"));
var_dump(IntlChar::ispunct("$"));

以上例程会输出：

bool(true)
bool(true)
bool(false)
bool(false)
IntlChar::isprint
IntlChar::isspace
IntlChar


Check if code point is a space character

IntlChar::ispunct
IntlChar::istitle
IntlChar
PHP Manual

IntlChar::isspace

(PHP 7)

IntlChar::isspace — Check if code point is a space character

说明

public static bool IntlChar::isspace ( mixed $codepoint )

Determines if the specified character is a space character or not.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint is a space character, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isspace("A"));
var_dump(IntlChar::isspace(" "));
var_dump(IntlChar::isspace("\n"));
var_dump(IntlChar::isspace("\t"));
var_dump(IntlChar::isspace("\u{00A0}"));
?>

以上例程会输出：

bool(false)
bool(true)
bool(true)
bool(true)
bool(true)

参见

  • IntlChar::isJavaSpaceChar() - Check if code point is a space character according to Java
  • IntlChar::isWhitespace() - Check if code point is a whitespace character according to ICU
  • IntlChar::isUWhiteSpace() - Check if code point has the White_Space Unicode property

IntlChar::ispunct
IntlChar::istitle
IntlChar


Check if code point is a titlecase letter

IntlChar::isspace
IntlChar::isUAlphabetic
IntlChar
PHP Manual

IntlChar::istitle

(PHP 7)

IntlChar::istitle — Check if code point is a titlecase letter

说明

public static bool IntlChar::istitle ( mixed $codepoint )

Determines whether the specified code point is a titlecase letter.

TRUE for general category "Lt" (titlecase letter).

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint is a titlecase letter, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::istitle("A"));
var_dump(IntlChar::istitle("a"));
var_dump(IntlChar::istitle("Φ"));
var_dump(IntlChar::istitle("φ"));
var_dump(IntlChar::istitle("1"));
?>

以上例程会输出：

bool(false)
bool(true)
bool(false)
bool(true)
bool(false)

参见

  • IntlChar::isupper() - Check if code point has the general category "Lu" (uppercase letter)
  • IntlChar::islower() - Check if code point is a lowercase letter
  • IntlChar::totitle() - Make Unicode character titlecase

IntlChar::isspace
IntlChar::isUAlphabetic
IntlChar


Check if code point has the Alphabetic Unicode property

IntlChar::istitle
IntlChar::isULowercase
IntlChar
PHP Manual

IntlChar::isUAlphabetic

(PHP 7)

IntlChar::isUAlphabetic — Check if code point has the Alphabetic Unicode property

说明

public static bool IntlChar::isUAlphabetic ( mixed $codepoint )

Check if a code point has the Alphabetic Unicode property.

This is the same as IntlChar::hasBinaryProperty($codepoint, IntlChar::PROPERTY_ALPHABETIC)

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint has the Alphabetic Unicode property, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isUAlphabetic("A"));
var_dump(IntlChar::isUAlphabetic("1"));
var_dump(IntlChar::isUAlphabetic("\u{2603}"));
?>

以上例程会输出：

bool(true)
bool(false)
bool(false)

参见

  • IntlChar::isalpha() - Check if code point is a letter character
  • IntlChar::hasBinaryProperty() - Check a binary Unicode property for a code point
  • IntlChar::PROPERTY_ALPHABETIC

IntlChar::istitle
IntlChar::isULowercase
IntlChar


Check if code point has the Lowercase Unicode property

IntlChar::isUAlphabetic
IntlChar::isupper
IntlChar
PHP Manual

IntlChar::isULowercase

(PHP 7)

IntlChar::isULowercase — Check if code point has the Lowercase Unicode property

说明

public static bool IntlChar::isULowercase ( mixed $codepoint )

Check if a code point has the Lowercase Unicode property.

This is the same as IntlChar::hasBinaryProperty($codepoint, IntlChar::PROPERTY_LOWERCASE)

Note:

This is different than IntlChar::islower() and will return TRUE for more characters.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint has the Lowercase Unicode property, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isULowercase("A"));
var_dump(IntlChar::isULowercase("a"));
var_dump(IntlChar::isULowercase("Φ"));
var_dump(IntlChar::isULowercase("φ"));
var_dump(IntlChar::isULowercase("1"));
?>

以上例程会输出：

bool(false)
bool(true)
bool(false)
bool(true)
bool(false)

参见

  • IntlChar::islower() - Check if code point is a lowercase letter
  • IntlChar::hasBinaryProperty() - Check a binary Unicode property for a code point
  • IntlChar::PROPERTY_LOWERCASE

IntlChar::isUAlphabetic
IntlChar::isupper
IntlChar


Check if code point has the general category "Lu" (uppercase letter)

IntlChar::isULowercase
IntlChar::isUUppercase
IntlChar
PHP Manual

IntlChar::isupper

(PHP 7)

IntlChar::isupper — Check if code point has the general category "Lu" (uppercase letter)

说明

public static bool IntlChar::isupper ( mixed $codepoint )

Determines whether the specified code point has the general category "Lu" (uppercase letter).

Note:

This misses some characters that are also uppercase but have a different general category value. In order to include those, use IntlChar::isUUppercase().

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint is an Lu uppercase letter, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isupper("A"));
var_dump(IntlChar::isupper("a"));
var_dump(IntlChar::isupper("Φ"));
var_dump(IntlChar::isupper("φ"));
var_dump(IntlChar::isupper("1"));
?>

以上例程会输出：

bool(true)
bool(false)
bool(true)
bool(false)
bool(false)

参见

  • IntlChar::islower() - Check if code point is a lowercase letter
  • IntlChar::istitle() - Check if code point is a titlecase letter
  • IntlChar::tolower() - Make Unicode character lowercase
  • IntlChar::toupper() - Make Unicode character uppercase
  • IntlChar::PROPERTY_UPPERCASE

IntlChar::isULowercase
IntlChar::isUUppercase
IntlChar


Check if code point has the Uppercase Unicode property

IntlChar::isupper
IntlChar::isUWhiteSpace
IntlChar
PHP Manual

IntlChar::isUUppercase

(PHP 7)

IntlChar::isUUppercase — Check if code point has the Uppercase Unicode property

说明

public static bool IntlChar::isUUppercase ( mixed $codepoint )

Check if a code point has the Uppercase Unicode property.

This is the same as IntlChar::hasBinaryProperty($codepoint, IntlChar::PROPERTY_UPPERCASE)

Note:

This is different than IntlChar::isupper() and will return TRUE for more characters.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint has the Uppercase Unicode property, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isUUppercase("A"));
var_dump(IntlChar::isUUppercase("a"));
var_dump(IntlChar::isUUppercase("Φ"));
var_dump(IntlChar::isUUppercase("φ"));
var_dump(IntlChar::isUUppercase("1"));
?>

以上例程会输出：

bool(true)
bool(false)
bool(true)
bool(false)
bool(false)

参见

  • IntlChar::isupper() - Check if code point has the general category "Lu" (uppercase letter)
  • IntlChar::hasBinaryProperty() - Check a binary Unicode property for a code point
  • IntlChar::PROPERTY_UPPERCASE

IntlChar::isupper
IntlChar::isUWhiteSpace
IntlChar


Check if code point has the White_Space Unicode property

IntlChar::isUUppercase
IntlChar::isWhitespace
IntlChar
PHP Manual

IntlChar::isUWhiteSpace

(PHP 7)

IntlChar::isUWhiteSpace — Check if code point has the White_Space Unicode property

说明

public static bool IntlChar::isUWhiteSpace ( mixed $codepoint )

Check if a code point has the White_Space Unicode property.

This is the same as IntlChar::hasBinaryProperty($codepoint, IntlChar::PROPERTY_WHITE_SPACE)

Note:

This is different from both IntlChar::isspace() and IntlChar::isWhitespace().

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint has the White_Space Unicode property, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isUWhiteSpace("A"));
var_dump(IntlChar::isUWhiteSpace(" "));
var_dump(IntlChar::isUWhiteSpace("\n"));
var_dump(IntlChar::isUWhiteSpace("\t"));
var_dump(IntlChar::isUWhiteSpace("\u{00A0}"));
?>

以上例程会输出：

bool(false)
bool(true)
bool(true)
bool(true)
bool(true)

参见

  • IntlChar::isspace() - Check if code point is a space character
  • IntlChar::isWhitespace() - Check if code point is a whitespace character according to ICU
  • IntlChar::isJavaSpaceChar() - Check if code point is a space character according to Java
  • IntlChar::hasBinaryProperty() - Check a binary Unicode property for a code point
  • IntlChar::PROPERTY_WHITE_SPACE

IntlChar::isUUppercase
IntlChar::isWhitespace
IntlChar


Check if code point is a whitespace character according to ICU

IntlChar::isUWhiteSpace
IntlChar::isxdigit
IntlChar
PHP Manual

IntlChar::isWhitespace

(PHP 7)

IntlChar::isWhitespace — Check if code point is a whitespace character according to ICU

说明

public static bool IntlChar::isWhitespace ( mixed $codepoint )

Determines if the specified code point is a whitespace character according to ICU.

A character is considered to be a ICU whitespace character if and only if it satisfies one of the following criteria:

  • It is a Unicode Separator character (categories "Z" = "Zs" or "Zl" or "Zp"), but is not also a non-breaking space (U+00A0 NBSP or U+2007 Figure Space or U+202F Narrow NBSP).
  • It is U+0009 HORIZONTAL TABULATION.
  • It is U+000A LINE FEED.
  • It is U+000B VERTICAL TABULATION.
  • It is U+000C FORM FEED.
  • It is U+000D CARRIAGE RETURN.
  • It is U+001C FILE SEPARATOR.
  • It is U+001D GROUP SEPARATOR.
  • It is U+001E RECORD SEPARATOR.
  • It is U+001F UNIT SEPARATOR.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint is a whitespace character according to ICU, FALSE if not.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::iswhitespace("A"));
var_dump(IntlChar::iswhitespace(" "));
var_dump(IntlChar::iswhitespace("\n"));
var_dump(IntlChar::iswhitespace("\t"));
var_dump(IntlChar::iswhitespace("\u{00A0}"));
?>

以上例程会输出：

bool(false)
bool(true)
bool(true)
bool(true)
bool(false)

参见

  • IntlChar::isspace() - Check if code point is a space character
  • IntlChar::isJavaSpaceChar() - Check if code point is a space character according to Java
  • IntlChar::isUWhiteSpace() - Check if code point has the White_Space Unicode property

IntlChar::isUWhiteSpace
IntlChar::isxdigit
IntlChar


Check if code point is a hexadecimal digit

IntlChar::isWhitespace
IntlChar::ord
IntlChar
PHP Manual

IntlChar::isxdigit

(PHP 7)

IntlChar::isxdigit — Check if code point is a hexadecimal digit

说明

public static bool IntlChar::isxdigit ( mixed $codepoint )

Determines whether the specified code point is a hexadecimal digit.

TRUE for characters with general category "Nd" (decimal digit numbers) as well as Latin letters a-f and A-F in both ASCII and Fullwidth ASCII. (That is, for letters with code points 0041..0046, 0061..0066, FF21..FF26, FF41..FF46.)

This is equivalent to IntlChar::digit($codepoint, 16) >= 0.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns TRUE if codepoint is a hexadecimal character, FALSE if not.

注释

Note:

In order to narrow the definition of hexadecimal digits to only ASCII characters use:

<?php
$isASCIIHexadecimal = IntlChar::ord($codepoint) <= 0x7F && IntlChar::isxdigit($codepoint);
?>

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::isxdigit("A"));
var_dump(IntlChar::isxdigit("1"));
var_dump(IntlChar::isxdigit("\u{2603}"));
?>

以上例程会输出：

bool(true)
bool(true)
bool(false)

参见

  • IntlChar::isdigit() - Check if code point is a digit character

IntlChar::isWhitespace
IntlChar::ord
IntlChar


Return Unicode code point value of character

IntlChar::isxdigit
IntlChar::tolower
IntlChar
PHP Manual

IntlChar::ord

(PHP 7)

IntlChar::ord — Return Unicode code point value of character

说明

public static int IntlChar::ord ( mixed $character )

Returns the Unicode code point value of the given character.

This function compliments IntlChar::chr().

参数

character

A Unicode character.

返回值

Returns the Unicode code point value as an integer.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::ord("A"));
var_dump(IntlChar::ord(" "));
var_dump(IntlChar::ord("\u{2603}"));
?>

以上例程会输出：

int(65)
int(32)
int(9731)

参见

  • IntlChar::isalnum() - Check if code point is an alphanumeric character
  • IntlChar::isdigit() - Check if code point is a digit character
  • IntlChar::chr() - Return Unicode character by code point value
  • ord() - 返回字符的 ASCII 码值

IntlChar::isxdigit
IntlChar::tolower
IntlChar


Make Unicode character lowercase

IntlChar::ord
IntlChar::totitle
IntlChar
PHP Manual

IntlChar::tolower

(PHP 7)

IntlChar::tolower — Make Unicode character lowercase

说明

public static mixed IntlChar::tolower ( mixed $codepoint )

The given character is mapped to its lowercase equivalent. If the character has no lowercase equivalent, the original character itself is returned.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns the Simple_Lowercase_Mapping of the code point, if any; otherwise the code point itself.

The return type will be integer unless the code point was passed as a UTF-8 string, in which case a string will be returned.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::tolower("A"));
var_dump(IntlChar::tolower("a"));
var_dump(IntlChar::tolower("Φ"));
var_dump(IntlChar::tolower("φ"));
var_dump(IntlChar::tolower("1"));
var_dump(IntlChar::tolower(ord("A")));
var_dump(IntlChar::tolower(ord("a")));
?>

以上例程会输出：

string(1) "a"
string(1) "a"
string(2) "φ"
string(2) "φ"
string(1) "1"
int(97)
int(97)

参见

  • IntlChar::totitle() - Make Unicode character titlecase
  • IntlChar::toupper() - Make Unicode character uppercase
  • mb_strtolower() - 使字符串小写

IntlChar::ord
IntlChar::totitle
IntlChar


Make Unicode character titlecase

IntlChar::tolower
IntlChar::toupper
IntlChar
PHP Manual

IntlChar::totitle

(PHP 7)

IntlChar::totitle — Make Unicode character titlecase

说明

public static mixed IntlChar::totitle ( mixed $codepoint )

The given character is mapped to its titlecase equivalent. If the character has no titlecase equivalent, the original character itself is returned.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns the Simple_Titlecase_Mapping of the code point, if any; otherwise the code point itself.

The return type will be integer unless the code point was passed as a UTF-8 string, in which case a string will be returned.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::totitle("A"));
var_dump(IntlChar::totitle("a"));
var_dump(IntlChar::totitle("Φ"));
var_dump(IntlChar::totitle("φ"));
var_dump(IntlChar::totitle("1"));
var_dump(IntlChar::totitle(ord("A")));
var_dump(IntlChar::totitle(ord("a")));
?>

以上例程会输出：

string(1) "A"
string(1) "A"
string(2) "Φ"
string(2) "Φ"
string(1) "1"
int(65)
int(65)

参见

  • IntlChar::tolower() - Make Unicode character lowercase
  • IntlChar::toupper() - Make Unicode character uppercase
  • mb_convert_case() - 对字符串进行大小写转换

IntlChar::tolower
IntlChar::toupper
IntlChar


Make Unicode character uppercase

IntlChar::totitle
IntlException
IntlChar
PHP Manual

IntlChar::toupper

(PHP 7)

IntlChar::toupper — Make Unicode character uppercase

说明

public static mixed IntlChar::toupper ( mixed $codepoint )

The given character is mapped to its uppercase equivalent. If the character has no uppercase equivalent, the character itself is returned.

参数

codepoint

The integer codepoint value (e.g. 0x2603 for U+2603 SNOWMAN), or the character encoded as a UTF-8 string (e.g. "\u{2603}")

返回值

Returns the Simple_Uppercase_Mapping of the code point, if any; otherwise the code point itself.

The return type will be integer unless the code point was passed as a UTF-8 string, in which case a string will be returned.

范例

Example #1 Testing different code points

<?php
var_dump(IntlChar::toupper("A"));
var_dump(IntlChar::toupper("a"));
var_dump(IntlChar::toupper("Φ"));
var_dump(IntlChar::toupper("φ"));
var_dump(IntlChar::toupper("1"));
var_dump(IntlChar::toupper(ord("A")));
var_dump(IntlChar::toupper(ord("a")));
?>

以上例程会输出：

string(1) "A"
string(1) "A"
string(2) "Φ"
string(2) "Φ"
string(1) "1"
int(65)
int(65)

参见

  • IntlChar::tolower() - Make Unicode character lowercase
  • IntlChar::totitle() - Make Unicode character titlecase
  • mb_strtoupper() - 使字符串大写

IntlChar::totitle
IntlException
IntlChar


Exception class for intl errors

(PHP 5 > 5.5.0, PHP 7, PECL intl > 3.0.0a1)

简介

This class is used for generating exceptions when errors occur inside intl functions. Such exceptions are only generated when intl.use_exceptions is enabled.

类摘要

IntlException extends Exception {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
IntlChar::toupper
IntlIterator
intl


The IntlIterator class

(No version information available, might only be in Git)

简介

This class represents iterator objects throughout the intl extension whenever the iterator cannot be identified with any other object provided by the extension. The distinct iterator object used internally by the foreach construct can only be obtained (in the relevant part here) from objects, so objects of this class serve the purpose of providing the hook through which this internal object can be obtained. As a convenience, this class also implements the Iterator interface, allowing the collection of values to be navigated using the methods defined in that interface. Both these methods and the internal iterator objects provided to foreach are backed by the same state (e.g. the position of the iterator and its current value).

Subclasses may provide richer functionality.

类摘要

IntlIterator implements Iterator {
/* 方法 */
public ReturnType current ( void )
public ReturnType key ( void )
public ReturnType next ( void )
public ReturnType rewind ( void )
public ReturnType valid ( void )
}

Table of Contents

  • IntlIterator::current — Get the current element
  • IntlIterator::key — Get the current key
  • IntlIterator::next — Move forward to the next element
  • IntlIterator::rewind — Rewind the iterator to the first element
  • IntlIterator::valid — Check if current position is valid
IntlException
IntlIterator::current
intl


Get the current element

IntlIterator
IntlIterator::key
IntlIterator
PHP Manual

IntlIterator::current

(No version information available, might only be in Git)

IntlIterator::current — Get the current element

说明

public ReturnType IntlIterator::current ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlIterator
IntlIterator::key
IntlIterator


Get the current key

IntlIterator::current
IntlIterator::next
IntlIterator
PHP Manual

IntlIterator::key

(No version information available, might only be in Git)

IntlIterator::key — Get the current key

说明

public ReturnType IntlIterator::key ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlIterator::current
IntlIterator::next
IntlIterator


Move forward to the next element

IntlIterator::key
IntlIterator::rewind
IntlIterator
PHP Manual

IntlIterator::next

(No version information available, might only be in Git)

IntlIterator::next — Move forward to the next element

说明

public ReturnType IntlIterator::next ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlIterator::key
IntlIterator::rewind
IntlIterator


Rewind the iterator to the first element

IntlIterator::next
IntlIterator::valid
IntlIterator
PHP Manual

IntlIterator::rewind

(No version information available, might only be in Git)

IntlIterator::rewind — Rewind the iterator to the first element

说明

public ReturnType IntlIterator::rewind ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlIterator::next
IntlIterator::valid
IntlIterator


Check if current position is valid

IntlIterator::rewind
intl 函数
IntlIterator
PHP Manual

IntlIterator::valid

(No version information available, might only be in Git)

IntlIterator::valid — Check if current position is valid

说明

public ReturnType IntlIterator::valid ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

IntlIterator::rewind
intl 函数
IntlIterator


intl 函数

Table of Contents

  • intl_error_name — Get symbolic name for a given error code
  • intl_get_error_code — Get the last error code
  • intl_get_error_message — Get description of the last error
  • intl_is_failure — Check whether the given error code indicates failure
IntlIterator::valid
intl_error_name
intl


Get symbolic name for a given error code

intl 函数
intl_get_error_code
intl 函数
PHP Manual

intl_error_name

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

intl_error_name — Get symbolic name for a given error code

说明

string intl_error_name ( int $error_code )

Return ICU error code name.

参数

error_code

ICU error code.

返回值

The returned string will be the same as the name of the error code constant.

范例

Example #1 intl_error_name() example

<?php
$coll     = collator_create( 'en_RU' );
$err_code = collator_get_error_code( $coll );

printf( "Symbolic name for %d is %s\n.", $err_code, intl_error_name( $err_code ) );
?>

以上例程的输出类似于：

Symbolic name for -128 is U_USING_FALLBACK_WARNING.

参见

  • intl_is_failure() - Check whether the given error code indicates failure
  • intl_get_error_code() - Get the last error code
  • intl_get_error_message() - Get description of the last error

intl 函数
intl_get_error_code
intl 函数


Get the last error code

intl_error_name
intl_get_error_message
intl 函数
PHP Manual

intl_get_error_code

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

intl_get_error_code — Get the last error code

说明

int intl_get_error_code ( void )

Useful to handle errors occurred in static methods when there's no object to get error code from.

返回值

Error code returned by the last API function call.

范例

Example #1 intl_get_error_code() example

<?php
$coll = collator_create( '<bad_param>' );
if( !$coll ) {
    handle_error( intl_get_error_code() );
}
?>

参见

  • intl_is_failure() - Check whether the given error code indicates failure
  • intl_error_name() - Get symbolic name for a given error code
  • intl_get_error_message() - Get description of the last error
  • collator_get_error_code() - Get collator's last error code
  • numfmt_get_error_code() - Get formatter's last error code.

intl_error_name
intl_get_error_message
intl 函数


Get description of the last error

intl_get_error_code
intl_is_failure
intl 函数
PHP Manual

intl_get_error_message

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

intl_get_error_message — Get description of the last error

说明

string intl_get_error_message ( void )

Get error message from last internationalization function called.

返回值

Description of an error occurred in the last API function call.

范例

Example #1 intl_get_error_message() example

<?php
if( Collator::getAvailableLocales() === false ) {
    show_error( intl_get_error_message() );
}
?>

参见

  • intl_error_name() - Get symbolic name for a given error code
  • intl_get_error_code() - Get the last error code
  • intl_is_failure() - Check whether the given error code indicates failure
  • collator_get_error_message() - Get text for collator's last error code
  • numfmt_get_error_message() - Get formatter's last error message.

intl_get_error_code
intl_is_failure
intl 函数


Check whether the given error code indicates failure

intl_get_error_message
多字节字符串
intl 函数
PHP Manual

intl_is_failure

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

intl_is_failure — Check whether the given error code indicates failure

说明

bool intl_is_failure ( int $error_code )

参数

error_code

is a value that returned by functions: intl_get_error_code(), collator_get_error_code() .

返回值

TRUE if it the code indicates some failure, and FALSE in case of success or a warning.

范例

Example #1 intl_is_failure() example

<?php
function check( $err_code )
{
    var_export( intl_is_failure( $err_code ) );
    echo "\n";
}

check( U_ZERO_ERROR );
check( U_USING_FALLBACK_WARNING );
check( U_ILLEGAL_ARGUMENT_ERROR );
?>

以上例程的输出类似于：

false
false
true

参见

  • intl_get_error_code() - Get the last error code
  • collator_get_error_code() - Get collator's last error code
  • Collator-getErrorCode() - Get collator's last error code

intl_get_error_message
多字节字符串
intl 函数


多字节字符串

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 支持编码的摘要
  • 日文字符多字节编码基础
  • HTTP 输入和输出
  • 支持的字符编码
  • 函数重载功能
  • PHP字符编码的要求
  • 多字节字符串 函数
    • mb_check_encoding — 检查字符串在指定的编码里是否有效
    • mb_convert_case — 对字符串进行大小写转换
    • mb_convert_encoding — 转换字符的编码
    • mb_convert_kana — Convert "kana" one from another ("zen-kaku", "han-kaku" and more)
    • mb_convert_variables — 转换一个或多个变量的字符编码
    • mb_decode_mimeheader — 解码 MIME 头字段中的字符串
    • mb_decode_numericentity — 根据 HTML 数字字符串解码成字符
    • mb_detect_encoding — 检测字符的编码
    • mb_detect_order — 设置/获取 字符编码的检测顺序
    • mb_encode_mimeheader — 为 MIME 头编码字符串
    • mb_encode_numericentity — Encode character to HTML numeric string reference
    • mb_encoding_aliases — Get aliases of a known encoding type
    • mb_ereg_match — Regular expression match for multibyte string
    • mb_ereg_replace_callback — Perform a regular expresssion seach and replace with multibyte support using a callback
    • mb_ereg_replace — Replace regular expression with multibyte support
    • mb_ereg_search_getpos — Returns start point for next regular expression match
    • mb_ereg_search_getregs — Retrieve the result from the last multibyte regular expression match
    • mb_ereg_search_init — Setup string and regular expression for a multibyte regular expression match
    • mb_ereg_search_pos — Returns position and length of a matched part of the multibyte regular expression for a predefined multibyte string
    • mb_ereg_search_regs — Returns the matched part of a multibyte regular expression
    • mb_ereg_search_setpos — Set start point of next regular expression match
    • mb_ereg_search — Multibyte regular expression match for predefined multibyte string
    • mb_ereg — Regular expression match with multibyte support
    • mb_eregi_replace — Replace regular expression with multibyte support ignoring case
    • mb_eregi — Regular expression match ignoring case with multibyte support
    • mb_get_info — 获取 mbstring 的内部设置
    • mb_http_input — 检测 HTTP 输入字符编码
    • mb_http_output — 设置/获取 HTTP 输出字符编码
    • mb_internal_encoding — 设置/获取内部字符编码
    • mb_language — 设置/获取当前的语言
    • mb_list_encodings — 返回所有支持编码的数组
    • mb_output_handler — 在输出缓冲中转换字符编码的回调函数
    • mb_parse_str — 解析 GET/POST/COOKIE 数据并设置全局变量
    • mb_preferred_mime_name — 获取 MIME 字符串
    • mb_regex_encoding — Set/Get character encoding for multibyte regex
    • mb_regex_set_options — Set/Get the default options for mbregex functions
    • mb_send_mail — 发送编码过的邮件
    • mb_split — 使用正则表达式分割多字节字符串
    • mb_strcut — 获取字符的一部分
    • mb_strimwidth — 获取按指定宽度截断的字符串
    • mb_stripos — 大小写不敏感地查找字符串在另一个字符串中首次出现的位置
    • mb_stristr — 大小写不敏感地查找字符串在另一个字符串里的首次出现
    • mb_strlen — 获取字符串的长度
    • mb_strpos — 查找字符串在另一个字符串中首次出现的位置
    • mb_strrchr — 查找指定字符在另一个字符串中最后一次的出现
    • mb_strrichr — 大小写不敏感地查找指定字符在另一个字符串中最后一次的出现
    • mb_strripos — 大小写不敏感地在字符串中查找一个字符串最后出现的位置
    • mb_strrpos — 查找字符串在一个字符串中最后出现的位置
    • mb_strstr — 查找字符串在另一个字符串里的首次出现
    • mb_strtolower — 使字符串小写
    • mb_strtoupper — 使字符串大写
    • mb_strwidth — 返回字符串的宽度
    • mb_substitute_character — 设置/获取替代字符
    • mb_substr_count — 统计字符串出现的次数
    • mb_substr — 获取部分字符串
intl_is_failure
简介
国际化与字符编码支持


简介

虽然许多语言每个必要字符都能一对一映射到 8 比特（bit）的值，但也有好几种语言需要非常多的字符来书面通讯，以至于它们的编码范围不能仅仅包含在一个字节里（一个字节 Byte 由 8 比特 bit 构成。每一比特仅能包含两种不同的值： 1 或 0。所以，一字节仅能够表示 256 种不同的值，即 2 的八次方）。 开发多字节字符编码方案是为了在基于字节的常规编码系统中表达超过 256 个字符。

在你操作（trim、split、splice 等等）多字节编码的字符串的时候，由于在这种编码方案下，两个或多个连续字节可能只表达了一个字符，所以你需要使用专门的函数。 否则，当你将不能检测多字节字符串的函数应用到这个字符串的时候，它可能无法检测多字节字符的起始位置，并以乱码字符串结尾，基本丢失了它原来的意思。

mbstring 提供了针对多字节字符串的函数，能够帮你处理 PHP 中的多字节编码。 除此以外，mbstring 还能在可能的字符编码之间相互进行编码转换。 为了方便起见，mbstring 设计成了处理基于 Unicode 的编码，类似 UTF-8、UCS-2 及诸多单字节的编码（在以下列出了）。

多字节字符串
安装／配置
多字节字符串


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
多字节字符串


安装

mbstring 不是一个默认扩展。这意味着它默认没有被激活。 你必须在 configure 选项中显式激活该模块。 详情参见安装这一节。

以下是涉及到 mbstring 的相关配置选项。

  • --enable-mbstring ：激活 mbstring 函数。 要使用 mbstring 函数必须启用这个选项。

    libmbfl 对 mbstring 是必要的。 libmbfl 被捆绑到了 mbstring。 如果系统已安装 libmbfl，--with-libmbfl[=DIR] 可以指定使用已安装的库。

  • --disable-mbregex ：禁用正则表达式函数中多字节字符的支持。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

mbstring 配置选项
名字 | 默认 | 可修改范围 | 更新日志
mbstring.language | "neutral" | PHP_INI_ALL | 自 PHP 4.3.0 起有效。 PHP_INI_PERDIR 位于 PHP <= 5.2.6
mbstring.detect_order | NULL | PHP_INI_ALL | 自 PHP 4.0.6 起有效。
mbstring.http_input | "pass" | PHP_INI_ALL | 自 PHP 4.0.6 起有效。
mbstring.http_output | "pass" | PHP_INI_ALL | 自 PHP 4.0.6 起有效。
mbstring.internal_encoding | NULL | PHP_INI_ALL | 自 PHP 4.0.6 起有效。
mbstring.script_encoding | NULL | PHP_INI_ALL | 自 PHP 4.3.0 起有效。 在 PHP 5.4.0. 中移除， 使用 zend.script_encoding 代替。
mbstring.substitute_character | NULL | PHP_INI_ALL | 自 PHP 4.0.6 起有效。
mbstring.func_overload | "0" | PHP_INI_SYSTEM | PHP 4.3 到 5.2.6 是 PHP_INI_PERDIR，否则是 PHP_INI_SYSTEM。 自 PHP 4.2.0 起有效。
mbstring.encoding_translation | "0" | PHP_INI_PERDIR | 自 PHP 4.3.0 起有效。
mbstring.strict_detection | "0" | PHP_INI_ALL | 自 PHP 5.1.2 起有效。
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

mbstring.language string

mbstring 使用了国家默认语言设置（NLS）。 注意，该选项自动地定义了 mbstring.internal_encoding 和 mbstring.internal_encoding，在 php.ini 里应当放置在 mbstring.language 之后。

mbstring.encoding_translation boolean

为传入的 HTTP 查询启用透明字符编码过滤器，将检测和转换输入的编码为内部字符编码（internal character encoding）。

mbstring.internal_encoding string
Warning

This feature has been DEPRECATED as of PHP 5.6.0. Relying on this feature is highly discouraged.

定义内部字符的默认编码。

PHP 5.6 及更新版的用户应该将此选项留空，并设置 default_charset 作为代替。

mbstring.http_input string
Warning

This feature has been DEPRECATED as of PHP 5.6.0. Relying on this feature is highly discouraged.

定义 HTTP 输入字符的默认编码。

PHP 5.6 及更新版的用户应该将此选项留空，并设置 default_charset 作为代替。

mbstring.http_output string
Warning

This feature has been DEPRECATED as of PHP 5.6.0. Relying on this feature is highly discouraged.

定义 HTTP 输出字符的默认编码。

PHP 5.6 及更新版的用户应该将此选项留空，并设置 default_charset 作为代替。

mbstring.detect_order string

定义字符编码的默认检测顺序。参见 mb_detect_order()。

mbstring.substitute_character string

为无效编码的字符定义替代字符。

mbstring.func_overload string

用 mbstring 对应的函数覆盖单字节版本的函数集。更多信息参见函数的覆盖。

该设置仅能通过 php.ini 文件来修改。

mbstring.strict_detection boolean

使用严格的编码检测。

根据 » HTML4.01 规范，允许 Web 浏览器以页面不同的字符编码来提交表单。 参见用 mb_http_input() 来检测浏览器使用的字符编码。

尽管流行的浏览器能够根据给出的 HTML 文档合理猜测正确的编码，但如果能通过 header() 函数在 HTTP 的 Content-Type 头内或 ini 的 default_charset 里设置适当的 charset 参数则会更佳。

Example #1 php.ini 设置例子

; 设置默认语言
mbstring.language        = Neutral; 设置默认语言 Neutral(UTF-8) (默认的值)
mbstring.language        = English; 设置默认语言为 English
mbstring.language        = Japanese; 设置默认语言为 Japanese

;; 设置内部的默认编码
;; 注意：请确保这个编码能被 PHP 所处理
mbstring.internal_encoding    = UTF-8  ; 设置内部的默认编码为 UTF-8

;; 启用 HTTP 输入编码的转换
mbstring.encoding_translation = On

;; 设置 HTTP 输入的默认编码
;; 注意：脚本不能修改 http_input 的设置
mbstring.http_input           = pass    ; 不转换
mbstring.http_input           = auto    ; 设置 HTTP 输入为 auto
                                ; "auto" 会根据 mbstring.language 自动扩展
mbstring.http_input           = SJIS    ; 设置 HTTP 输入编码为 SJIS
mbstring.http_input           = UTF-8,SJIS,EUC-JP ; 指定顺序

;; 设置 HTTP 输出的默认编码
mbstring.http_output          = pass    ; 不转换
mbstring.http_output          = UTF-8   ; 设置 HTTP 输出编码为 UTF-8

;; 设置字符编码的默认检测顺序
mbstring.detect_order         = auto    ; Set detect order to auto
mbstring.detect_order         = ASCII,JIS,UTF-8,SJIS,EUC-JP ; Specify order

;; 设置默认的替代字符
mbstring.substitute_character = 12307   ; 指定 Unicode 值
mbstring.substitute_character = none    ; 不打印字符
mbstring.substitute_character = long    ; Long 的例子： U+3000,JIS+7E7E

Example #2 php.ini 里 EUC-JP 用户的设置

;; 禁用输出缓冲
output_buffering      = Off

;; 设置 HTTP header 字符编码
default_charset       = EUC-JP

;; 设置默认语言为 Japanese
mbstring.language = Japanese

;; 启用 HTTP 输入编码的转换
mbstring.encoding_translation = On

;; 启用 HTTP 输入转换的编码为 auto
mbstring.http_input   = auto

;; 转换 HTTP 输出的编码为 EUC-JP
mbstring.http_output  = EUC-JP

;; 设置内部编码为 EUC-JP
mbstring.internal_encoding = EUC-JP

;; 不要打印无效的字符
mbstring.substitute_character = none

Example #3 php.ini 里 SJIS 用户的设置

;; 启用输出缓冲
output_buffering     = On

;; 设置 mb_output_handler 来启用输出编码的转换
output_handler       = mb_output_handler

;; 设置 HTTP header 的字符编码
default_charset      = Shift_JIS

;; 设置默认语言为 Japanese
mbstring.language = Japanese

;; 设置 http 输入转换的编码为 auto
mbstring.http_input  = auto

;; 转换成 SJIS
mbstring.http_output = SJIS

;; 设置内部变量为 EUC-JP
mbstring.internal_encoding = EUC-JP

;; 不要打印无效的字符
mbstring.substitute_character = none

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

MB_OVERLOAD_MAIL (integer)
MB_OVERLOAD_STRING (integer)
MB_OVERLOAD_REGEX (integer)
MB_CASE_UPPER (integer)
MB_CASE_LOWER (integer)
MB_CASE_TITLE (integer)
资源类型
支持编码的摘要
多字节字符串


支持编码的摘要

支持编码的摘要
IANA 字符集注册表内的名称 | 相关字符集 | 描述 | 额外的说明
ISO-10646-UCS-4 | ISO 10646 | 31位编码空间的通用字符集，以 ISO/IEC 10646 标准化为 UCS-4。 它和最新的 Unicode 代码映射表保持同步。 | 如果在编码转化程序中使用了这个名字，转换器将尝试识别前缀的 BOM头（字节顺序标记），即表示后续字节的字节序。
ISO-10646-UCS-4 | UCS-4 | 参见以上。 | 和 UCS-4 相比较，字符串总是设为大端序（big endian）的形式。
ISO-10646-UCS-4 | UCS-4 | 参见以上。 | 和 UCS-4 相比较，字符串总是设为小端序（little endian）的形式。
ISO-10646-UCS-2 | UCS-2 | 16位编码空间的通用字符集，以 ISO/IEC 10646 标准化为 UCS-2。它和最新的 Unicode 代码映射表保持同步。 | 如果在编码转化程序中使用了这个名字，转换器将尝试识别前缀的 BOM头（字节顺序标记），即表示后续字节的字节序。
ISO-10646-UCS-2 | UCS-2 | 参见以上。 | 和 UCS-2 相比较，字符串总是设为大端序（big endian）的形式。
ISO-10646-UCS-2 | UCS-2 | 参见以上。 | 和 UCS-2 相比较，字符串总是设为小端序（little endian）的形式。
UTF-32 | Unicode | 32 位单位宽度的 Unicode 转换格式，涉及到了 Unicode 字符集标准。该编码方案和 UCS-4 没有完全相同，因为 Unicode 编码空间限制为 21 位的值。 | 如果在编码转化程序中使用了这个名字，转换器将尝试识别前缀的 BOM头（字节顺序标记），即表示后续字节的字节序。
UTF-32BE | Unicode | 参见以上 | 和 UTF-32 相比较，字符串总是设为大端序（big endian）的形式。
UTF-32LE | Unicode | 参见以上 | 和 UTF-32 相比较，字符串总是设为小端序（little endian）的形式。
UTF-16 | Unicode | 16 位单位宽度的 Unicode 转换格式。值得一记的是，UTF-16 的规格不再和 UCS-2 一样， 因为 Unicode 2.0 引入了代理机制（surrogate mechanism），UTF-16 现在指向了 21 位的编码空间。 | 如果在编码转化程序中使用了这个名字，转换器将尝试识别前缀的 BOM头（字节顺序标记），即表示后续字节的字节序。
UTF-16BE | Unicode | 参见以上。 | 和 UTF-16 相比较，字符串总是设为大端序（big endian）的形式。
UTF-16LE | Unicode | 参见以上。 | 和 UTF-16 相比较，字符串总是设为小端序（little endian）的形式。
UTF-8 | Unicode / UCS | 8 位单位宽度的 Unicode 转换格式。 | none
UTF-7 | Unicode | 一种邮件安全的 Unicode 转换格式，规格是 » RFC2152。 | none
(none) | Unicode | UTF-7 的一种变体，其规格在 » IMAP 协议 中用到了。 | none
US-ASCII (首选 MIME 名称) / iso-ir-6 / ANSI_X3.4-1986 / ISO_646.irv:1991 / ASCII / ISO646-US / us / IBM367 / CP367 / csASCII | ASCII / ISO 646 | 美国标准代码（American Standard Code）是一种常用的 7-bit 信息交换编码。同样，标准化为 ISO 646 国际标准。 | (none)
EUC-JP (首选 MIME 名称) / Extended_UNIX_Code_Packed_Format_for_Japanese / csEUCPkdFmtJapanese | US-ASCII / JIS X0201:1997 (半角假名部分) / JIS X0208:1990 / JIS X0212:1990 的复合 | 就像你所看到的，名字来源于扩展 Extended UNIX Code Packed Format for Japanese 的缩写，该编码常用于 UNIX 或类似平台。原始编码方案 Extended UNIX Code 基于 ISO 2022 而设计。 | EUC-JP 涉及的字符集和 IBM932 / CP932 是不一样的，后者使用于 OS/2® 和 Microsoft® Windows®。 这些平台上的信息交换，使用 EUCJP-WIN 来代替。
Shift_JIS (首选 MIME 名称) / MS_Kanji / csShift_JIS | JIS X0201:1997 / JIS X0208:1997 的复合 | 80 年代初，个人日文文字处理软件进入了市场之时，为了兼容传统编码方案 JIS X 0201:1976，开发了 Shift_JIS。 根据 IANA 对 Shift_JIS 编码集的定义，和 IBM932 / CP932 稍有不同。但 "SJIS"、"Shift_JIS" 的名称常被错误得指向这些编码集。 | 要使用 CP932，使用 SJIS-WIN 作为替代。
(none) | JIS X0201:1997 / JIS X0208:1997 / IBM extensions / NEC extensions 的复合 | 虽然此 "encoding" 使用了 EUC-JP 同样的方案，一些字符集有所不同。 也就是说，一些编码映射到了和 EUC-JP 不同的字符。 | none
Windows-31J / csWindows31J | JIS X0201:1997 / JIS X0208:1997 / IBM extensions / NEC extensions 的符合 | 虽然此 "encoding" 使用了 Shift_JIS 同样的方案，一些字符集有所不同。 也就是说，一些编码映射到了和 Shift_JIS 不同的字符。 | (none)
ISO-2022-JP (首选 MIME 名称) / csISO2022JP | US-ASCII / JIS X0201:1976 / JIS X0208:1978 / JIS X0208:1983 | » RFC1468 | (none)
JIS |  |  |
ISO-8859-1 |  |  |
ISO-8859-2 |  |  |
ISO-8859-3 |  |  |
ISO-8859-4 |  |  |
ISO-8859-5 |  |  |
ISO-8859-6 |  |  |
ISO-8859-7 |  |  |
ISO-8859-8 |  |  |
ISO-8859-9 |  |  |
ISO-8859-10 |  |  |
ISO-8859-13 |  |  |
ISO-8859-14 |  |  |
ISO-8859-15 |  |  |
ISO-8859-16 |  |  |
byte2be |  |  |
byte2le |  |  |
byte4be |  |  |
byte4le |  |  |
BASE64 |  |  |
HTML-ENTITIES |  |  |
7bit |  |  |
8bit |  |  |
EUC-CN |  |  |
CP936 |  |  |
HZ |  |  |
EUC-TW |  |  |
CP950 |  |  |
BIG-5 |  |  |
EUC-KR |  |  |
UHC (CP949) |  |  |
ISO-2022-KR |  |  |
Windows-1251 (CP1251) |  |  |
Windows-1252 (CP1252) |  |  |
CP866 (IBM866) |  |  |
KOI8-R |  |  |
KOI8-U |  |  |
预定义常量
日文字符多字节编码基础
多字节字符串


日文字符多字节编码基础

日文字符只能使用多字节编码，而且，编码规范取决于平台和字符的使用 目的（text purpose)。跟糟糕的是，编码规范之间还稍有差异。为了开发 出适应日文环境的Web应用，开发人员必须对编码规范有个清晰的认识，确保 使用了合适的编码规范。

  • 存储一个日文字符最大需要6个字节空间
  • 多数日文多字节字符是单字节字符出现频率的两倍。这些字符被称为 "zen-kaku"，在日文中代表的意思是"full width"。 其它窄一些的字符被称作"han-kaku"，意思是"half width"。 字符实际显示的宽度，取决于显示时使用的字体。
  • 有些字符编码采用ISO-2022定义的转码序列（shift sequences) 来转换特殊的编码 空间(00h to 7fh)。
  • 在SMTP/NNTP协议应用中 建议 采用ISO-2022-JP编码，并且头部和实体部分，应该按照 RFC要求重新编码。虽然这些并不是强制性要求，但最好还是按这个建议做，因为几款 流行的客户端不支持其他的编码方式。
  • 手机服务页面，例如» i-mode或者» EZweb 应该 使用Shift_JIS编码。
  • 从PHP 5.4.0开始，象形字符（pictogram characters ）已经可以支持像 » i-mode 或者 » EZweb 这样的手机服务。

支持编码的摘要
HTTP 输入和输出
多字节字符串


HTTP 输入和输出

HTTP 输入/输出字符编码转换同样也适用于二进制数据。 如果 HTTP 输入/输出用到了二进制数据，用户应当控制字符的编码转换。

Note:

如果 HTML 表单的 enctype 属性设置为 multipart/form-data，并且 php.ini 里的 mbstring.encoding_translation 设置为 On， POST 的变量以及上传文件的名称也将会被转换到内部字符编码。 不过，转换不会应用于查询（query）的键。

  • HTTP 输入

    在 PHP 脚本里无法控制 HTTP 输入字符的转换。 要禁用 HTTP 输入字符的转换，必须要在 php.ini 里设置。

    Example #1 在 php.ini 中禁用 HTTP 输入转换

    ;; 禁用 HTTP 输入转换
mbstring.http_input = pass
;;禁用 HTTP 输入转换
mbstring.encoding_translation = Off

    当 PHP 以 Apache 模块运行。这些设置还可以通过 httpd.conf 内每个虚拟主机（Virtual Host）指令或每个目录下的 .htaccess 来覆盖（override）。 详情参见配置这一节，以及 Apache 手册。

  • HTTP 输出

    输出字符编码转换的使用有几种方式。 一种是使用 php.ini，另一种是使用 ob_start()，以 mb_output_handler() 作为 ob_start 的回调函数。

Example #2 php.ini 设置例子

;; 为所有 PHP 页面启用输出字符编码的转换

;; 启用输出缓冲
output_buffering    = On

;; 设置 mb_output_handler 来进行输出的转换
output_handler      = mb_output_handler

Example #3 脚本例子

<?php

// 仅为此页面启用输出字符编码的转换

// 设置 HTTP 输出字符编码为 SJIS
mb_http_output('SJIS');

// 开始缓冲并指定 "mb_output_handler" 为回调函数
ob_start('mb_output_handler');

?>

日文字符多字节编码基础
支持的字符编码
多字节字符串


支持的字符编码

当前 mbstring 模块支持以下的字符编码。这些字符编码中的任意一个都能指定到 mbstring 函数中的 encoding 参数。

该 PHP 扩展支持的字符编码有以下几种：

  • UCS-4*
  • UCS-4BE
  • UCS-4LE*
  • UCS-2
  • UCS-2BE
  • UCS-2LE
  • UTF-32*
  • UTF-32BE*
  • UTF-32LE*
  • UTF-16*
  • UTF-16BE*
  • UTF-16LE*
  • UTF-7
  • UTF7-IMAP
  • UTF-8*
  • ASCII*
  • EUC-JP*
  • SJIS*
  • eucJP-win*
  • SJIS-win*
  • ISO-2022-JP
  • ISO-2022-JP-MS
  • CP932
  • CP51932
  • SJIS-mac** (别名： MacJapanese)
  • SJIS-Mobile#DOCOMO** (别名： SJIS-DOCOMO)
  • SJIS-Mobile#KDDI** (别名： SJIS-KDDI)
  • SJIS-Mobile#SOFTBANK** (别名： SJIS-SOFTBANK)
  • UTF-8-Mobile#DOCOMO** (别名： UTF-8-DOCOMO)
  • UTF-8-Mobile#KDDI-A**
  • UTF-8-Mobile#KDDI-B** (别名： UTF-8-KDDI)
  • UTF-8-Mobile#SOFTBANK** (别名： UTF-8-SOFTBANK)
  • ISO-2022-JP-MOBILE#KDDI** (别名： ISO-2022-JP-KDDI)
  • JIS
  • JIS-ms
  • CP50220
  • CP50220raw
  • CP50221
  • CP50222
  • ISO-8859-1*
  • ISO-8859-2*
  • ISO-8859-3*
  • ISO-8859-4*
  • ISO-8859-5*
  • ISO-8859-6*
  • ISO-8859-7*
  • ISO-8859-8*
  • ISO-8859-9*
  • ISO-8859-10*
  • ISO-8859-13*
  • ISO-8859-14*
  • ISO-8859-15*
  • ISO-8859-16*
  • byte2be
  • byte2le
  • byte4be
  • byte4le
  • BASE64
  • HTML-ENTITIES
  • 7bit
  • 8bit
  • EUC-CN*
  • CP936
  • GB18030**
  • HZ
  • EUC-TW*
  • CP950
  • BIG-5*
  • EUC-KR*
  • UHC (CP949)
  • ISO-2022-KR
  • Windows-1251 (CP1251)
  • Windows-1252 (CP1252)
  • CP866 (IBM866)
  • KOI8-R*
  • KOI8-U*
  • ArmSCII-8 (ArmSCII8)

* 表示该编码也可以在正则表达式中使用。

** 表示该编码自 PHP 5.4.0 始可用。

任何接受编码名称的 php.ini 条目同样也可以使用 "auto" 和 "pass" 的值。 接受编码名的 mbstring 函数同样也可以使用值 "auto"。

如果设置了 "pass"，将不会对字符的编码进行转化。

如果设置了 "auto"，它将扩展成 NLS 中定义的每个字符编码列表。 比如，假设 NLS 设置为 Japanese，值将会认为是 "ASCII,JIS,UTF-8,EUC-JP,SJIS"。

参见 mb_detect_order()

HTTP 输入和输出
函数重载功能
多字节字符串


函数重载功能

你也许常常会发现现存的 PHP 应用很难运行在多字节环境下。 发生这种情况的原因是大多数那种 PHP 应用使用了标准的字符串函数，类似 substr()，已知无法处理多字节编码的字符串。

mbstring 支持一个"函数重载"功能，将对应的多字节版本重载到标准字符处理函数上，例如你能够让这类应用在不修改代码的前提下添加多字节的处理能力。 比如，启用函数重载后，mb_substr() 将会代替 substr() 被调用。 在很多情况下这个功能允许让仅支持单字节编码的应用简单地和多字节环境对接。

要使用函数重载功能，设置 php.ini 里的 mbstring.func_overload 为正值，就是表示为重载函数分类的位掩码组合。 要重载 mail() 函数需要设置它为 1。字符串函数设置为 2，正则表达式函数为 4。 例如，当它设置为 7， mail、strings 和 正则表达式函数将都会被重载。 以下列表显示了重载的函数。

被重载的函数
mbstring.func_overload 的值 | 原始函数 | 重载后的函数
1 | mail() | mb_send_mail()
2 | strlen() | mb_strlen()
2 | strpos() | mb_strpos()
2 | strrpos() | mb_strrpos()
2 | substr() | mb_substr()
2 | strtolower() | mb_strtolower()
2 | strtoupper() | mb_strtoupper()
2 | stripos() | mb_stripos()
2 | strripos() | mb_strripos()
2 | strstr() | mb_strstr()
2 | stristr() | mb_stristr()
2 | strrchr() | mb_strrchr()
2 | substr_count() | mb_substr_count()
4 | ereg() | mb_ereg()
4 | eregi() | mb_eregi()
4 | ereg_replace() | mb_ereg_replace()
4 | eregi_replace() | mb_eregi_replace()
4 | split() | mb_split()

Note:

不推荐每个目录的范围（context）内使用函数重载选项，因为还无法确定在生产环境中是否稳定，也许会导致不确定的行为。

支持的字符编码
PHP字符编码的要求
多字节字符串


PHP字符编码的要求

以下类型的编码能够被 PHP 安全地使用。

  • 单字节编码

    • ASCII兼容（ISO646 兼容），在 00h 到 7fh 的范围内映射字符集。

  • 多字节编码，

    • ASCII兼容，在 00h 到 7fh 的范围内映射字符集。
    • 不使用 ISO2022 转义序列（escape sequences）。
    • 单个字符以任意复合字节表达、不使用 00h 到 7fh 的值。

有几个不太可能用 PHP 运行的字符编码例子。

JIS, SJIS, ISO-2022-JP, BIG-5

虽然用任何其中一个编码来编写 PHP 脚本可能无法工作，尤其是这些编码的字符串以标识符（identifier）和字符（literal）出现， 但通过设置 mbstring 透明地过滤编码的函数，你几乎可以避免传入的 HTTP 查询使用这些编码。

Note:

我们极度不赞成在内部编码中使用 SJIS、BIG5、CP936、CP949 和 GB18030，除非你熟悉解析器（parser）、扫描器（scanner）和该字符编码。

Note:

当你用 PHP 连接到一个数据库，为了易用性和性能，推荐在数据库和内部编码使用一致的字符编码。

如果你使用的是 PostgreSQL，数据库里使用的编码和 PHP 里使用的编码可以是不同的，因为它支持字符集在前端和后端之间进行自动转换。

函数重载功能
多字节字符串 函数
多字节字符串


多字节字符串 函数

参考资料

多字节字符编码方案和他们相关的问题相当复杂，超越了本文档的范围。 关于这些话题的更多信息请参考以下 URL 和其他资源。

  • Unicode materials

    » http://www.unicode.org/

  • Japanese/Korean/Chinese 字符信息

    » http://examples.oreilly.com/cjkvinfo/doc/cjk.inf

Table of Contents

  • mb_check_encoding — 检查字符串在指定的编码里是否有效
  • mb_convert_case — 对字符串进行大小写转换
  • mb_convert_encoding — 转换字符的编码
  • mb_convert_kana — Convert "kana" one from another ("zen-kaku", "han-kaku" and more)
  • mb_convert_variables — 转换一个或多个变量的字符编码
  • mb_decode_mimeheader — 解码 MIME 头字段中的字符串
  • mb_decode_numericentity — 根据 HTML 数字字符串解码成字符
  • mb_detect_encoding — 检测字符的编码
  • mb_detect_order — 设置/获取 字符编码的检测顺序
  • mb_encode_mimeheader — 为 MIME 头编码字符串
  • mb_encode_numericentity — Encode character to HTML numeric string reference
  • mb_encoding_aliases — Get aliases of a known encoding type
  • mb_ereg_match — Regular expression match for multibyte string
  • mb_ereg_replace_callback — Perform a regular expresssion seach and replace with multibyte support using a callback
  • mb_ereg_replace — Replace regular expression with multibyte support
  • mb_ereg_search_getpos — Returns start point for next regular expression match
  • mb_ereg_search_getregs — Retrieve the result from the last multibyte regular expression match
  • mb_ereg_search_init — Setup string and regular expression for a multibyte regular expression match
  • mb_ereg_search_pos — Returns position and length of a matched part of the multibyte regular expression for a predefined multibyte string
  • mb_ereg_search_regs — Returns the matched part of a multibyte regular expression
  • mb_ereg_search_setpos — Set start point of next regular expression match
  • mb_ereg_search — Multibyte regular expression match for predefined multibyte string
  • mb_ereg — Regular expression match with multibyte support
  • mb_eregi_replace — Replace regular expression with multibyte support ignoring case
  • mb_eregi — Regular expression match ignoring case with multibyte support
  • mb_get_info — 获取 mbstring 的内部设置
  • mb_http_input — 检测 HTTP 输入字符编码
  • mb_http_output — 设置/获取 HTTP 输出字符编码
  • mb_internal_encoding — 设置/获取内部字符编码
  • mb_language — 设置/获取当前的语言
  • mb_list_encodings — 返回所有支持编码的数组
  • mb_output_handler — 在输出缓冲中转换字符编码的回调函数
  • mb_parse_str — 解析 GET/POST/COOKIE 数据并设置全局变量
  • mb_preferred_mime_name — 获取 MIME 字符串
  • mb_regex_encoding — Set/Get character encoding for multibyte regex
  • mb_regex_set_options — Set/Get the default options for mbregex functions
  • mb_send_mail — 发送编码过的邮件
  • mb_split — 使用正则表达式分割多字节字符串
  • mb_strcut — 获取字符的一部分
  • mb_strimwidth — 获取按指定宽度截断的字符串
  • mb_stripos — 大小写不敏感地查找字符串在另一个字符串中首次出现的位置
  • mb_stristr — 大小写不敏感地查找字符串在另一个字符串里的首次出现
  • mb_strlen — 获取字符串的长度
  • mb_strpos — 查找字符串在另一个字符串中首次出现的位置
  • mb_strrchr — 查找指定字符在另一个字符串中最后一次的出现
  • mb_strrichr — 大小写不敏感地查找指定字符在另一个字符串中最后一次的出现
  • mb_strripos — 大小写不敏感地在字符串中查找一个字符串最后出现的位置
  • mb_strrpos — 查找字符串在一个字符串中最后出现的位置
  • mb_strstr — 查找字符串在另一个字符串里的首次出现
  • mb_strtolower — 使字符串小写
  • mb_strtoupper — 使字符串大写
  • mb_strwidth — 返回字符串的宽度
  • mb_substitute_character — 设置/获取替代字符
  • mb_substr_count — 统计字符串出现的次数
  • mb_substr — 获取部分字符串
PHP字符编码的要求
mb_check_encoding
多字节字符串


检查字符串在指定的编码里是否有效

多字节字符串 函数
mb_convert_case
多字节字符串 函数
PHP Manual

mb_check_encoding

(PHP 4 >= 4.4.3, PHP 5 >= 5.1.3, PHP 7)

mb_check_encoding — 检查字符串在指定的编码里是否有效

说明

bool mb_check_encoding ([ string $var = NULL [, string $encoding = mb_internal_encoding() ]] )

检查指定的字节流在指定的编码里是否有效。它能有效避免所谓的"无效编码攻击（Invalid Encoding Attack）"。

参数

var

要检查的字节流。如果省略了这个参数，此函数会检查所有来自最初请求所有的输入。

encoding

期望的编码。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

多字节字符串 函数
mb_convert_case
多字节字符串 函数


对字符串进行大小写转换

mb_check_encoding
mb_convert_encoding
多字节字符串 函数
PHP Manual

mb_convert_case

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

mb_convert_case — 对字符串进行大小写转换

说明

string mb_convert_case ( string $str , int $mode [, string $encoding = mb_internal_encoding() ] )

对一个 string 进行大小写转换，转换模式由 mode 指定。

参数

str

要被转换的 string。

mode

转换的模式。它可以是 MB_CASE_UPPER、 MB_CASE_LOWER 和 MB_CASE_TITLE 的其中一个。

encoding

encoding 参数为字符编码。如果省略，则使用内部字符编码。

返回值

按 mode 指定的模式转换 string 大小写后的版本。

Unicode

和类似 strtolower()、strtoupper() 的标准大小写转换函数相比， 大小写转换的执行根据 Unicode 字符属性的基础。 因此此函数的行为不受语言环境（locale）设置的影响，能够转换任意具有"字母"属性的字符，例如元音变音A（?）。

更多关于 Unicode 属性的信息，请查看 » http://www.unicode.org/unicode/reports/tr21/。

范例

Example #1 mb_convert_case() 例子

<?php
$str = "mary had a Little lamb and she loved it so";
$str = mb_convert_case($str, MB_CASE_UPPER, "UTF-8");
echo $str; // 输出 MARY HAD A LITTLE LAMB AND SHE LOVED IT SO
$str = mb_convert_case($str, MB_CASE_TITLE, "UTF-8");
echo $str; // 输出 Mary Had A Little Lamb And She Loved It So
?>

Example #2 非拉丁 UTF-8 文本的mb_convert_case() 例子

<?php
$str = "Τ?χιστη αλ?πηξ βαφ?? ψημ?νη γη, δρασκελ?ζει υπ?ρ νωθρο? κυν??";
$str = mb_convert_case($str, MB_CASE_UPPER, "UTF-8");
echo $str; // 输出 Τ?ΧΙΣΤΗ ΑΛ?ΠΗΞ ΒΑΦ?Σ ΨΗΜ?ΝΗ ΓΗ, ΔΡΑΣΚΕΛ?ΖΕΙ ΥΠ?Ρ ΝΩΘΡΟ? ΚΥΝ?Σ
$str = mb_convert_case($str, MB_CASE_TITLE, "UTF-8");
echo $str; // 输出 Τ?χιστη Αλ?πηξ Βαφ?σ Ψημ?νη Γη, Δρασκελ?ζει Υπ?ρ Νωθρο? Κυν?σ
?>

参见

  • mb_strtolower() - 使字符串小写
  • mb_strtoupper() - 使字符串大写
  • strtolower() - 将字符串转化为小写
  • strtoupper() - 将字符串转化为大写
  • ucfirst() - 将字符串的首字母转换为大写
  • ucwords() - 将字符串中每个单词的首字母转换为大写

mb_check_encoding
mb_convert_encoding
多字节字符串 函数


转换字符的编码

mb_convert_case
mb_convert_kana
多字节字符串 函数
PHP Manual

mb_convert_encoding

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_convert_encoding — 转换字符的编码

说明

string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding = mb_internal_encoding() ] )

将 string 类型 str 的字符编码从可选的 from_encoding 转换到 to_encoding。

参数

str

要编码的 string。

to_encoding

str 要转换成的编码类型。

from_encoding

在转换前通过字符代码名称来指定。它可以是一个 array 也可以是逗号分隔的枚举列表。 如果没有提供 from_encoding，则会使用内部（internal）编码。

参见支持的编码。

返回值

编码后的 string。

范例

Example #1 mb_convert_encoding() 例子

<?php
/* 转换内部编码为 SJIS */
$str = mb_convert_encoding($str, "SJIS");

/* 将 EUC-JP 转换成 UTF-7 */
$str = mb_convert_encoding($str, "UTF-7", "EUC-JP");

/* 从 JIS, eucjp-win, sjis-win 中自动检测编码，并转换 str 到 UCS-2LE */
$str = mb_convert_encoding($str, "UCS-2LE", "JIS, eucjp-win, sjis-win");

/* "auto" 扩展成 "ASCII,JIS,UTF-8,EUC-JP,SJIS" */
$str = mb_convert_encoding($str, "EUC-JP", "auto");
?>

参见

  • mb_detect_order() - 设置/获取 字符编码的检测顺序

mb_convert_case
mb_convert_kana
多字节字符串 函数


Convert "kana" one from another ("zen-kaku", "han-kaku" and more)

mb_convert_encoding
mb_convert_variables
多字节字符串 函数
PHP Manual

mb_convert_kana

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_convert_kana — Convert "kana" one from another ("zen-kaku", "han-kaku" and more)

说明

string mb_convert_kana ( string $str [, string $option = "KV" [, string $encoding = mb_internal_encoding() ]] )

Performs a "han-kaku" - "zen-kaku" conversion for string str. This function is only useful for Japanese.

参数

str

The string being converted.

option

The conversion option.

Specify with a combination of following options.

Applicable Conversion Options
Option | Meaning
r | Convert "zen-kaku" alphabets to "han-kaku"
R | Convert "han-kaku" alphabets to "zen-kaku"
n | Convert "zen-kaku" numbers to "han-kaku"
N | Convert "han-kaku" numbers to "zen-kaku"
a | Convert "zen-kaku" alphabets and numbers to "han-kaku"
A | Convert "han-kaku" alphabets and numbers to "zen-kaku" (Characters included in "a", "A" options are U+0021 - U+007E excluding U+0022, U+0027, U+005C, U+007E)
s | Convert "zen-kaku" space to "han-kaku" (U+3000 -> U+0020)
S | Convert "han-kaku" space to "zen-kaku" (U+0020 -> U+3000)
k | Convert "zen-kaku kata-kana" to "han-kaku kata-kana"
K | Convert "han-kaku kata-kana" to "zen-kaku kata-kana"
h | Convert "zen-kaku hira-gana" to "han-kaku kata-kana"
H | Convert "han-kaku kata-kana" to "zen-kaku hira-gana"
c | Convert "zen-kaku kata-kana" to "zen-kaku hira-gana"
C | Convert "zen-kaku hira-gana" to "zen-kaku kata-kana"
V | Collapse voiced sound notation and convert them into a character. Use with "K","H"

encoding

encoding 参数为字符编码。如果省略，则使用内部字符编码。

返回值

The converted string.

范例

Example #1 mb_convert_kana() example

<?php
/* Convert all "kana" to "zen-kaku" "kata-kana" */
$str = mb_convert_kana($str, "KVC");

/* Convert "han-kaku" "kata-kana" to "zen-kaku" "kata-kana"
   and "zen-kaku" alpha-numeric to "han-kaku" */
$str = mb_convert_kana($str, "KVa");
?>

mb_convert_encoding
mb_convert_variables
多字节字符串 函数


转换一个或多个变量的字符编码

mb_convert_kana
mb_decode_mimeheader
多字节字符串 函数
PHP Manual

mb_convert_variables

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_convert_variables — 转换一个或多个变量的字符编码

说明

string mb_convert_variables ( string $to_encoding , mixed $from_encoding , mixed &$vars [, mixed &$... ] )

将变量 vars 的编码从 from_encoding 转换成编码 to_encoding。

mb_convert_variables() 会拼接变量数组或对象中的字符串来检测编码，因为短字符串的检测往往会失败。因此，不能在一个数组或对象中混合使用编码。

参数

to_encoding

将 string 转换成这个编码。

from_encoding

from_encoding 可以指定为一个 array 或者逗号分隔的 string，它将尝试根据 from-coding 来检测编码。 当省略了 from_encoding，将使用 detect_order。

vars

vars 是要转换的变量的引用。 参数可以接受 String、Array 和 Object 的类型。 mb_convert_variables() 假设所有的参数都具有同样的编码。

...

额外的 vars。

返回值

成功时返回转换前的字符编码，失败时返回 FALSE。

范例

Example #1 mb_convert_variables() 例子

<?php
/* 转换变量 $post1、$post2 编码为内部（internal）编码 */
$interenc = mb_internal_encoding();
$inputenc = mb_convert_variables($interenc, "ASCII,UTF-8,SJIS-win", $post1, $post2);
?>

mb_convert_kana
mb_decode_mimeheader
多字节字符串 函数


解码 MIME 头字段中的字符串

mb_convert_variables
mb_decode_numericentity
多字节字符串 函数
PHP Manual

mb_decode_mimeheader

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_decode_mimeheader — 解码 MIME 头字段中的字符串

说明

string mb_decode_mimeheader ( string $str )

解码 MIME 头中编码过的字符串 str。

参数

str

要解码的 string。

返回值

以内部（internal）字符编码解码的 string。

参见

  • mb_encode_mimeheader() - 为 MIME 头编码字符串

mb_convert_variables
mb_decode_numericentity
多字节字符串 函数


根据 HTML 数字字符串解码成字符

mb_decode_mimeheader
mb_detect_encoding
多字节字符串 函数
PHP Manual

mb_decode_numericentity

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_decode_numericentity — 根据 HTML 数字字符串解码成字符

说明

string mb_decode_numericentity ( string $str , array $convmap [, string $encoding = mb_internal_encoding() ] )

将数字字符串的引用str 按指定的字符块转换成字符串。

参数

str

要解码的 string。

convmap

convmap 是一个 array，指定了要转换的代码区域。

encoding

encoding 参数为字符编码。如果省略，则使用内部字符编码。

返回值

转换后的字符串。

范例

Example #1 convmap 例子

<?php
$convmap = array (
   int start_code1, int end_code1, int offset1, int mask1,
   int start_code2, int end_code2, int offset2, int mask2,
   ........
   int start_codeN, int end_codeN, int offsetN, int maskN );
// Specify Unicode value for start_codeN and end_codeN
// Add offsetN to value and take bit-wise 'AND' with maskN,
// then convert value to numeric string reference.
?>

参见

  • mb_encode_numericentity() - Encode character to HTML numeric string reference

Example #2 convmap 的例子： 编码(escape) JavaScript 字符串

<?php
function escape_javascript_string($str) {
  $map = [
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,0,0, // 49
          0,0,0,0,0,0,0,0,1,1,
          1,1,1,1,1,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,
          0,1,1,1,1,1,1,0,0,0, // 99
          0,0,0,0,0,0,0,0,0,0,
          0,0,0,0,0,0,0,0,0,0,
          0,0,0,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1, // 149
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1, // 199
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1,
          1,1,1,1,1,1,1,1,1,1, // 249
          1,1,1,1,1,1,1, // 255
          ];
  // Char encoding is UTF-8
  $mblen = mb_strlen($str, 'UTF-8');
  $utf32 = bin2hex(mb_convert_encoding($str, 'UTF-32', 'UTF-8'));
  for ($i=0, $encoded=''; $i < $mblen; $i++) {
      $u = substr($utf32, $i*8, 8);
      $v = base_convert($u, 16, 10);
      if ($v < 256 && $map[$v]) {
        $encoded .= '\\x'.substr($u, 6,2);
      } else if ($v == 2028) {
        $encoded .= '\\u2028';
      } else if ($v == 2029) {
        $encoded .= '\\u2029';
      } else {
        $encoded .= mb_convert_encoding(hex2bin($u), 'UTF-8', 'UTF-32');
      }
   }
   return $encoded;
}

// Test data
$convmap = [ 0x0, 0xffff, 0, 0xffff ];
$msg = '';
for ($i=0; $i < 1000; $i++) {
  // chr() cannot generate correct UTF-8 data larger value than 128, use mb_decode_numericentity().
  $msg .= mb_decode_numericentity('&#'.$i.';', $convmap, 'UTF-8');
}

// var_dump($msg);
var_dump(escape_javascript_string($msg));

mb_decode_mimeheader
mb_detect_encoding
多字节字符串 函数


检测字符的编码

mb_decode_numericentity
mb_detect_order
多字节字符串 函数
PHP Manual

mb_detect_encoding

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_detect_encoding — 检测字符的编码

说明

string mb_detect_encoding ( string $str [, mixed $encoding_list = mb_detect_order() [, bool $strict = false ]] )

检测字符串 str 的编码。

参数

str

待检查的字符串。

encoding_list

encoding_list 是一个字符编码列表。 编码顺序可以由数组或者逗号分隔的列表字符串指定。

如果省略了 encoding_list 将会使用 detect_order。

strict

strict 指定了是否严格地检测编码。 默认是 FALSE。

返回值

检测到的字符编码，或者无法检测指定字符串的编码时返回 FALSE。

范例

Example #1 mb_detect_encoding() 例子

<?php
/* 使用当前的 detect_order 来检测字符编码 */
echo mb_detect_encoding($str);

/* "auto" 将根据 mbstring.language 来扩展 */
echo mb_detect_encoding($str, "auto");

/* 通过逗号分隔的列表来指定编码列表 encoding_list */
echo mb_detect_encoding($str, "JIS, eucjp-win, sjis-win");

/* 使用数组来指定编码列表 encoding_list  */
$ary[] = "ASCII";
$ary[] = "JIS";
$ary[] = "EUC-JP";
echo mb_detect_encoding($str, $ary);
?>

参见

  • mb_detect_order() - 设置/获取 字符编码的检测顺序

mb_decode_numericentity
mb_detect_order
多字节字符串 函数


设置/获取 字符编码的检测顺序

mb_detect_encoding
mb_encode_mimeheader
多字节字符串 函数
PHP Manual

mb_detect_order

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_detect_order — 设置/获取 字符编码的检测顺序

说明

mixed mb_detect_order ([ mixed $encoding_list = mb_detect_order() ] )

为编码列表 encoding_list 设置自动检测字符编码的顺序。

参数

encoding_list

encoding_list 是一个 array 或者逗号分隔的字符编码列表。 参见支持的编码。

如果省略了 encoding_list 参数，它将返回当前字符编码检测顺序的数组。

该设置会影响 mb_detect_encoding() 和 mb_send_mail()。

mbstring 当前实现了以下编码检测筛选器。 如有以下编码列表的无效字节序列，编码的检测将会失败。

UTF-8, UTF-7, ASCII, EUC-JP,SJIS, eucJP-win, SJIS-win, JIS, ISO-2022-JP

对于 ISO-8859-*，mbstring 总是检测为 ISO-8859-*。

对于 UTF-16、UTF-32、 UCS2 和 UCS4，编码检测总是会失败。

返回值

设置编码检测顺序时候，成功时返回 TRUE，识别时候返回 FALSE。

在获取编码检测顺序的时候，会返回排序过的编码数组。

范例

Example #1 mb_detect_order() 例子

<?php
/* 为检测顺序设置枚举列表 */
mb_detect_order("eucjp-win,sjis-win,UTF-8");

/* 通过数组设置检测顺序 */
$ary[] = "ASCII";
$ary[] = "JIS";
$ary[] = "EUC-JP";
mb_detect_order($ary);

/* 显示当前的检测顺序 */
echo implode(", ", mb_detect_order());
?>

Example #2 案例展示了无效的检测顺序

; 总是检测为 ISO-8859-1
detect_order = ISO-8859-1, UTF-8

; 总是检测为 UTF-8，由于 ASCII/UTF-7 的值对  UTF-8 是有效的
detect_order = UTF-8, ASCII, UTF-7

参见

  • mb_internal_encoding() - 设置/获取内部字符编码
  • mb_http_input() - 检测 HTTP 输入字符编码
  • mb_http_output() - 设置/获取 HTTP 输出字符编码
  • mb_send_mail() - 发送编码过的邮件

mb_detect_encoding
mb_encode_mimeheader
多字节字符串 函数


为 MIME 头编码字符串

mb_detect_order
mb_encode_numericentity
多字节字符串 函数
PHP Manual

mb_encode_mimeheader

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_encode_mimeheader — 为 MIME 头编码字符串

说明

string mb_encode_mimeheader ( string $str [, string $charset = determined by mb_language() [, string $transfer_encoding = "B" [, string $linefeed = "\r\n" [, int $indent = 0 ]]]] )

按 MIME 头编码方案将指定的字符串 str 进行编码。

参数

str

要编码的 string。 它的编码应该和 mb_internal_encoding() 一样。

charset

charset 指定了 str 的字符集名。 其默认值由当前的 NLS 设置（mbstring.language）来确定。

transfer_encoding

transfer_encoding 指定了 MIME 的编码方案。 它可以是 "B"（Base64）也可以是 "Q"（Quoted-Printable）。 如果未设置，将回退为 "B"。

linefeed

linefeed 指定了 EOL（行尾）标记，使 mb_encode_mimeheader() 执行了一个换行（» RFC 文档中规定，超过长度的一行将换成多行，当前该长度硬式编码为 74 个字符）。 如果没有设定，则回退为 "\r\n" (CRLF)。

indent

首行缩进（header 里 str 前的字符数目）。

返回值

转换后的字符串版本以 ASCII 形式表达。

范例

Example #1 mb_encode_mimeheader() 例子

<?php
$name = ""; // kanji
$mbox = "kru";
$doma = "gtinn.mon";
$addr = mb_encode_mimeheader($name, "UTF-7", "Q") . " <" . $mbox . "@" . $doma . ">";
echo $addr;
?>

注释

Note:

这个函数没有设计成据更高级上下文的中断点来换行（单词边界等）。 这个特性将导致意外的空格可能会让原始字符串看上去很乱。

参见

  • mb_decode_mimeheader() - 解码 MIME 头字段中的字符串

mb_detect_order
mb_encode_numericentity
多字节字符串 函数


Encode character to HTML numeric string reference

mb_encode_mimeheader
mb_encoding_aliases
多字节字符串 函数
PHP Manual

mb_encode_numericentity

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_encode_numericentity — Encode character to HTML numeric string reference

说明

string mb_encode_numericentity ( string $str , array $convmap [, string $encoding = mb_internal_encoding() [, bool $is_hex = FALSE ]] )

Converts specified character codes in string str from character code to HTML numeric character reference.

参数

str

The string being encoded.

convmap

convmap is array specifies code area to convert.

encoding

encoding 参数为字符编码。如果省略，则使用内部字符编码。

is_hex

返回值

The converted string.

更新日志

版本 | 说明
5.4.0 | Added is_hex parameter.

范例

Example #1 convmap example

<?php
$convmap = array (
 int start_code1, int end_code1, int offset1, int mask1,
 int start_code2, int end_code2, int offset2, int mask2,
 ........
 int start_codeN, int end_codeN, int offsetN, int maskN );
// Specify Unicode value for start_codeN and end_codeN
// Add offsetN to value and take bit-wise 'AND' with maskN, then
// it converts value to numeric string reference.
?>

范例

Example #2 mb_encode_numericentity() example

<?php
/* Convert Left side of ISO-8859-1 to HTML numeric character reference */
$convmap = array(0x80, 0xff, 0, 0xff);
$str = mb_encode_numericentity($str, $convmap, "ISO-8859-1");

/* Convert user defined SJIS-win code in block 95-104 to numeric
   string reference */
$convmap = array(
       0xe000, 0xe03e, 0x1040, 0xffff,
       0xe03f, 0xe0bb, 0x1041, 0xffff,
       0xe0bc, 0xe0fa, 0x1084, 0xffff,
       0xe0fb, 0xe177, 0x1085, 0xffff,
       0xe178, 0xe1b6, 0x10c8, 0xffff,
       0xe1b7, 0xe233, 0x10c9, 0xffff,
       0xe234, 0xe272, 0x110c, 0xffff,
       0xe273, 0xe2ef, 0x110d, 0xffff,
       0xe2f0, 0xe32e, 0x1150, 0xffff,
       0xe32f, 0xe3ab, 0x1151, 0xffff );
$str = mb_encode_numericentity($str, $convmap, "sjis-win");
?>

参见

  • mb_decode_numericentity() - 根据 HTML 数字字符串解码成字符

mb_encode_mimeheader
mb_encoding_aliases
多字节字符串 函数


Get aliases of a known encoding type

mb_encode_numericentity
mb_ereg_match
多字节字符串 函数
PHP Manual

mb_encoding_aliases

(PHP 5 >= 5.3.0, PHP 7)

mb_encoding_aliases — Get aliases of a known encoding type

说明

array mb_encoding_aliases ( string $encoding )

Returns an array of aliases for a known encoding type.

参数

encoding

The encoding type being checked, for aliases.

返回值

Returns a numerically indexed array of encoding aliases on success, 或者在失败时返回 FALSE

错误／异常

Emits an E_WARNING level error if encoding is unknown.

范例

Example #1 mb_encoding_aliases() example

<?php
$encoding        = 'ASCII';
$known_encodings = mb_list_encodings();

if (in_array($encoding, $known_encodings)) {

    $aliases = mb_encoding_aliases($encoding);
    print_r($aliases);

} else {

    echo "Unknown ($encoding) encoding.\n";

}
?>

以上例程的输出类似于：

Array
(
    [0] => ANSI_X3.4-1968
    [1] => iso-ir-6
    [2] => ANSI_X3.4-1986
    [3] => ISO_646.irv:1991
    [4] => US-ASCII
    [5] => ISO646-US
    [6] => us
    [7] => IBM367
    [8] => cp367
    [9] => csASCII
)

参见

  • mb_list_encodings() - 返回所有支持编码的数组

mb_encode_numericentity
mb_ereg_match
多字节字符串 函数


Regular expression match for multibyte string

mb_encoding_aliases
mb_ereg_replace_callback
多字节字符串 函数
PHP Manual

mb_ereg_match

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

mb_ereg_match — Regular expression match for multibyte string

说明

bool mb_ereg_match ( string $pattern , string $string [, string $option = "msr" ] )

A regular expression match for a multibyte string

参数

pattern

The regular expression pattern.

string

The string being evaluated.

option

返回值

Returns TRUE if string matches the regular expression pattern, FALSE if not.

注释

Note:

mb_regex_encoding() 指定的内部编码或字符编码将会当作此函数用的字符编码。

参见

  • mb_regex_encoding() - Set/Get character encoding for multibyte regex
  • mb_ereg() - Regular expression match with multibyte support

mb_encoding_aliases
mb_ereg_replace_callback
多字节字符串 函数


Perform a regular expresssion seach and replace with multibyte support using a callback

mb_ereg_match
mb_ereg_replace
多字节字符串 函数
PHP Manual

mb_ereg_replace_callback

(PHP 5 >= 5.4.1, PHP 7)

mb_ereg_replace_callback — Perform a regular expresssion seach and replace with multibyte support using a callback

说明

string mb_ereg_replace_callback ( string $pattern , callable $callback , string $string [, string $option = "msr" ] )

Scans string for matches to pattern, then replaces the matched text with the output of callback function.

The behavior of this function is almost identical to mb_ereg_replace(), except for the fact that instead of replacement parameter, one should specify a callback.

参数

pattern

The regular expression pattern.

Multibyte characters may be used in pattern.

callback

A callback that will be called and passed an array of matched elements in the subject string. The callback should return the replacement string.

You'll often need the callback function for a mb_ereg_replace_callback() in just one place. In this case you can use an anonymous function to declare the callback within the call to mb_ereg_replace_callback(). By doing it this way you have all information for the call in one place and do not clutter the function namespace with a callback function's name not used anywhere else.

string

The string being checked.

option

Matching condition can be set by option parameter. If i is specified for this parameter, the case will be ignored. If x is specified, white space will be ignored. If m is specified, match will be executed in multiline mode and line break will be included in '.'. If p is specified, match will be executed in POSIX mode, line break will be considered as normal character. Note that e cannot be used for mb_ereg_replace_callback().

返回值

The resultant string on success, or FALSE on error.

注释

Note:

mb_regex_encoding() 指定的内部编码或字符编码将会当作此函数用的字符编码。

范例

Example #1 mb_ereg_replace_callback() example

<?php
// this text was used in 2002
// we want to get this up to date for 2003
$text = "April fools day is 04/01/2002\n";
$text.= "Last christmas was 12/24/2001\n";
// the callback function
function next_year($matches)
{
  // as usual: $matches[0] is the complete match
  // $matches[1] the match for the first subpattern
  // enclosed in '(...)' and so on
  return $matches[1].($matches[2]+1);
}
echo mb_ereg_replace_callback(
            "(\d{2}/\d{2}/)(\d{4})",
            "next_year",
            $text);

?>

以上例程会输出：

April fools day is 04/01/2003
Last christmas was 12/24/2002

Example #2 mb_ereg_replace_callback() using anonymous function supported in PHP 5.3.0 or later

<?php
// this text was used in 2002
// we want to get this up to date for 2003
$text = "April fools day is 04/01/2002\n";
$text.= "Last christmas was 12/24/2001\n";

echo mb_ereg_replace_callback(
            "(\d{2}/\d{2}/)(\d{4})",
            function ($matches) {
               return $matches[1].($matches[2]+1);
            },
            $text);
?>

参见

  • mb_regex_encoding() - Set/Get character encoding for multibyte regex
  • mb_ereg_replace() - Replace regular expression with multibyte support
  • Anonymous functions
  • callback 类型的信息

mb_ereg_match
mb_ereg_replace
多字节字符串 函数


Replace regular expression with multibyte support

mb_ereg_replace_callback
mb_ereg_search_getpos
多字节字符串 函数
PHP Manual

mb_ereg_replace

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

mb_ereg_replace — Replace regular expression with multibyte support

说明

string mb_ereg_replace ( string $pattern , string $replacement , string $string [, string $option = "msr" ] )

Scans string for matches to pattern, then replaces the matched text with replacement

参数

pattern

The regular expression pattern.

Multibyte characters may be used in pattern.

replacement

The replacement text.

string

The string being checked.

option
Matching condition can be set by option parameter. If i is specified for this parameter, the case will be ignored. If x is specified, white space will be ignored. If m is specified, match will be executed in multiline mode and line break will be included in '.'. If p is specified, match will be executed in POSIX mode, line break will be considered as normal character. If e is specified, replacement string will be evaluated as PHP expression.

返回值

The resultant string on success, or FALSE on error.

更新日志

版本 | 说明
7.1.0 | The e modifier has been deprecated.

注释

Note:

mb_regex_encoding() 指定的内部编码或字符编码将会当作此函数用的字符编码。

Warning

处理非信任的输入时从不使用 e 修饰符，就不会转码（即调用 preg_replace()）。不注意这些会很可能会导致应用程序引发远程代码执行的漏洞。

参见

  • mb_regex_encoding() - Set/Get character encoding for multibyte regex
  • mb_eregi_replace() - Replace regular expression with multibyte support ignoring case

mb_ereg_replace_callback
mb_ereg_search_getpos
多字节字符串 函数


Returns start point for next regular expression match

mb_ereg_replace
mb_ereg_search_getregs
多字节字符串 函数
PHP Manual

mb_ereg_search_getpos

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

mb_ereg_search_getpos — Returns start point for next regular expression match

说明

int mb_ereg_search_getpos ( void )

Returns the start point for the next regular expression match.

参数

此函数没有参数。

返回值

mb_ereg_search_getpos() returns
the point to start regular expression match for
mb_ereg_search(),
mb_ereg_search_pos(),
mb_ereg_search_regs(). The position is
represented by bytes from the head of string.

注释

Note:

mb_regex_encoding() 指定的内部编码或字符编码将会当作此函数用的字符编码。

参见

  • mb_regex_encoding() - Set/Get character encoding for multibyte regex
  • mb_ereg_search_setpos() - Set start point of next regular expression match

mb_ereg_replace
mb_ereg_search_getregs
多字节字符串 函数


Retrieve the result from the last multibyte regular expression match

mb_ereg_search_getpos
mb_ereg_search_init
多字节字符串 函数
PHP Manual

mb_ereg_search_getregs

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

mb_ereg_search_getregs — Retrieve the result from the last multibyte regular expression match

说明

array mb_ereg_search_getregs ( void )

Retrieve the result from the last multibyte regular expression match

参数

此函数没有参数。

返回值

An array including the sub-string of matched part by last mb_ereg_search(), mb_ereg_search_pos(), mb_ereg_search_regs(). If there are some matches, the first element will have the matched sub-string, the second element will have the first part grouped with brackets, the third element will have the second part grouped with brackets, and so on. It returns FALSE on error;

注释

Note:

mb_regex_encoding() 指定的内部编码或字符编码将会当作此函数用的字符编码。

参见

  • mb_regex_encoding() - Set/Get character encoding for multibyte regex
  • mb_ereg_search_init() - Setup string and regular expression for a multibyte regular expression match

mb_ereg_search_getpos
mb_ereg_search_init
多字节字符串 函数


Setup string and regular expression for a multibyte regular expression match

mb_ereg_search_getregs
mb_ereg_search_pos
多字节字符串 函数
PHP Manual

mb_ereg_search_init

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

mb_ereg_search_init — Setup string and regular expression for a multibyte regular expression match

说明

bool mb_ereg_search_init ( string $string [, string $pattern [, string $option = "msr" ]] )

mb_ereg_search_init() sets
string and pattern
for a multibyte regular expression. These values are used for
mb_ereg_search(),
mb_ereg_search_pos(), and
mb_ereg_search_regs().

参数

string

The search string.

pattern

The search pattern.

option

The search option.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note:

mb_regex_encoding() 指定的内部编码或字符编码将会当作此函数用的字符编码。

参见

  • mb_regex_encoding() - Set/Get character encoding for multibyte regex
  • mb_ereg_search_regs() - Returns the matched part of a multibyte regular expression

mb_ereg_search_getregs
mb_ereg_search_pos
多字节字符串 函数


Returns position and length of a matched part of the multibyte regular expression for a predefined multibyte string

mb_ereg_search_init
mb_ereg_search_regs
多字节字符串 函数
PHP Manual

mb_ereg_search_pos

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

mb_ereg_search_pos — Returns position and length of a matched part of the multibyte regular expression for a predefined multibyte string

说明

array mb_ereg_search_pos ([ string $pattern [, string $option = "ms" ]] )

Returns position and length of a matched part of the multibyte regular expression for a predefined multibyte string

The string for match is specified by mb_ereg_search_init(). If it is not specified, the previous one will be used.

参数

pattern

The search pattern.

option

The search option.

返回值

An array containing two elements. The first element is the offset, in bytes, where the match begins relative to the start of the search string, and the second element is the length in bytes of the match.

If an error occurs, FALSE is returned.

注释

Note:

mb_regex_encoding() 指定的内部编码或字符编码将会当作此函数用的字符编码。

参见

  • mb_regex_encoding() - Set/Get character encoding for multibyte regex
  • mb_ereg_search_init() - Setup string and regular expression for a multibyte regular expression match

mb_ereg_search_init
mb_ereg_search_regs
多字节字符串 函数


Returns the matched part of a multibyte regular expression

mb_ereg_search_pos
mb_ereg_search_setpos
多字节字符串 函数
PHP Manual

mb_ereg_search_regs

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

mb_ereg_search_regs — Returns the matched part of a multibyte regular expression

说明

array mb_ereg_search_regs ([ string $pattern [, string $option = "ms" ]] )

Returns the matched part of a multibyte regular expression.

参数

pattern

The search pattern.

option

The search option.

返回值

mb_ereg_search_regs() executes the multibyte regular expression match, and if there are some matched part, it returns an array including substring of matched part as first element, the first grouped part with brackets as second element, the second grouped part as third element, and so on. It returns FALSE on error.

注释

Note:

mb_regex_encoding() 指定的内部编码或字符编码将会当作此函数用的字符编码。

参见

  • mb_regex_encoding() - Set/Get character encoding for multibyte regex
  • mb_ereg_search_init() - Setup string and regular expression for a multibyte regular expression match

mb_ereg_search_pos
mb_ereg_search_setpos
多字节字符串 函数


Set start point of next regular expression match

mb_ereg_search_regs
mb_ereg_search
多字节字符串 函数
PHP Manual

mb_ereg_search_setpos

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

mb_ereg_search_setpos — Set start point of next regular expression match

说明

bool mb_ereg_search_setpos ( int $position )

mb_ereg_search_setpos() sets the starting point of a match for mb_ereg_search().

参数

position

The position to set. If it is negative, it counts from the end of the string.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
7.1.0 | Support for negative positions has been added.

注释

Note:

mb_regex_encoding() 指定的内部编码或字符编码将会当作此函数用的字符编码。

参见

  • mb_regex_encoding() - Set/Get character encoding for multibyte regex
  • mb_ereg_search_init() - Setup string and regular expression for a multibyte regular expression match

mb_ereg_search_regs
mb_ereg_search
多字节字符串 函数


Multibyte regular expression match for predefined multibyte string

mb_ereg_search_setpos
mb_ereg
多字节字符串 函数
PHP Manual

mb_ereg_search

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

mb_ereg_search — Multibyte regular expression match for predefined multibyte string

说明

bool mb_ereg_search ([ string $pattern [, string $option = "ms" ]] )

Performs a multibyte regular expression match for a predefined multibyte string.

参数

pattern

The search pattern.

option

The search option.

返回值

mb_ereg_search() returns TRUE if the multibyte string matches with the regular expression, or FALSE otherwise. The string for matching is set by mb_ereg_search_init(). If pattern is not specified, the previous one is used.

注释

Note:

mb_regex_encoding() 指定的内部编码或字符编码将会当作此函数用的字符编码。

参见

  • mb_regex_encoding() - Set/Get character encoding for multibyte regex
  • mb_ereg_search_init() - Setup string and regular expression for a multibyte regular expression match

mb_ereg_search_setpos
mb_ereg
多字节字符串 函数


Regular expression match with multibyte support

mb_ereg_search
mb_eregi_replace
多字节字符串 函数
PHP Manual

mb_ereg

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

mb_ereg — Regular expression match with multibyte support

说明

int mb_ereg ( string $pattern , string $string [, array &$regs ] )

Executes the regular expression match with multibyte support.

参数

pattern

The search pattern.

string

The search string.

regs

If matches are found for parenthesized substrings of pattern and the function is called with the third argument regs, the matches will be stored in the elements of the array regs. If no matches are found, regs is set to an empty array.

$regs[1] will contain the substring which starts at the first left parenthesis; $regs[2] will contain the substring starting at the second, and so on. $regs[0] will contain a copy of the complete string matched.

返回值

Returns the byte length of the matched string if a match for pattern was found in string, or FALSE if no matches were found or an error occurred.

If the optional parameter regs was not passed or the length of the matched string is 0, this function returns 1.

更新日志

版本 | 说明
7.1.0 | mb_ereg() will now set regs to an empty array, if nothing matched. Formerly, regs was not modified in that case.

注释

Note:

mb_regex_encoding() 指定的内部编码或字符编码将会当作此函数用的字符编码。

参见

  • mb_regex_encoding() - Set/Get character encoding for multibyte regex
  • mb_eregi() - Regular expression match ignoring case with multibyte support

mb_ereg_search
mb_eregi_replace
多字节字符串 函数


Replace regular expression with multibyte support ignoring case

mb_ereg
mb_eregi
多字节字符串 函数
PHP Manual

mb_eregi_replace

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

mb_eregi_replace — Replace regular expression with multibyte support ignoring case

说明

string mb_eregi_replace ( string $pattern , string $replace , string $string [, string $option = "msri" ] )

Scans string for matches to pattern, then replaces the matched text with replacement.

参数

pattern

The regular expression pattern. Multibyte characters may be used. The case will be ignored.

replace

The replacement text.

string

The searched string.

option
option has the same meaning as in mb_ereg_replace().

返回值

The resultant string or FALSE on error.

更新日志

版本 | 说明
7.1.0 | The e modifier has been deprecated.

注释

Note:

mb_regex_encoding() 指定的内部编码或字符编码将会当作此函数用的字符编码。

Warning

处理非信任的输入时从不使用 e 修饰符，就不会转码（即调用 preg_replace()）。不注意这些会很可能会导致应用程序引发远程代码执行的漏洞。

参见

  • mb_regex_encoding() - Set/Get character encoding for multibyte regex
  • mb_ereg_replace() - Replace regular expression with multibyte support

mb_ereg
mb_eregi
多字节字符串 函数


Regular expression match ignoring case with multibyte support

mb_eregi_replace
mb_get_info
多字节字符串 函数
PHP Manual

mb_eregi

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

mb_eregi — Regular expression match ignoring case with multibyte support

说明

int mb_eregi ( string $pattern , string $string [, array &$regs ] )

Executes the case insensitive regular expression match with multibyte support.

参数

pattern

The regular expression pattern.

string

The string being searched.

regs

If matches are found for parenthesized substrings of pattern and the function is called with the third argument regs, the matches will be stored in the elements of the array regs. If no matches are found, regs is set to an empty array.

$regs[1] will contain the substring which starts at the first left parenthesis; $regs[2] will contain the substring starting at the second, and so on. $regs[0] will contain a copy of the complete string matched.

返回值

Returns the byte length of the matched string if a match for pattern was found in string, or FALSE if no matches were found or an error occurred.

If the optional parameter regs was not passed or the length of the matched string is 0, this function returns 1.

更新日志

版本 | 说明
7.1.0 | mb_eregi() will now set regs to an empty array, if nothing matched. Formerly, regs was not modified in that case.

注释

Note:

mb_regex_encoding() 指定的内部编码或字符编码将会当作此函数用的字符编码。

参见

  • mb_regex_encoding() - Set/Get character encoding for multibyte regex
  • mb_ereg() - Regular expression match with multibyte support

mb_eregi_replace
mb_get_info
多字节字符串 函数


获取 mbstring 的内部设置

mb_eregi
mb_http_input
多字节字符串 函数
PHP Manual

mb_get_info

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

mb_get_info — 获取 mbstring 的内部设置

说明

mixed mb_get_info ([ string $type = "all" ] )

mb_get_info() 返回 mbstring 参数的内部设定。

参数

type

如果没有设定 type，或者将其设定为 "all"，将会返回一个 array，并且包含了以下所有元素："internal_encoding", "http_output", "http_input", "func_overload", "mail_charset", "mail_header_encoding", "mail_body_encoding"。

如果 type 设定为类似 "http_output", "http_input", "internal_encoding", "func_overload"，将返回该参数的设置。

返回值

如果没有指定 type 将返回类型信息的数组，否则将返回指定 type 的信息。

更新日志

版本 | 说明
5.1.3 | 实体 "mail_charset"、"mail_header_encoding" 和 "mail_body_encoding" 开始有效。
5.3.0 | 条目 "http_output_conv_mimetypes" 开始有效。

参见

  • mb_regex_encoding() - Set/Get character encoding for multibyte regex
  • mb_http_output() - 设置/获取 HTTP 输出字符编码

mb_eregi
mb_http_input
多字节字符串 函数


检测 HTTP 输入字符编码

mb_get_info
mb_http_output
多字节字符串 函数
PHP Manual

mb_http_input

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_http_input — 检测 HTTP 输入字符编码

说明

mixed mb_http_input ([ string $type = "" ] )

检测 HTTP 输入字符的编码。

参数

type

设置的字符串指定了输入类型。 "G" 是 GET，"P" 是 POST，"C" 是 COOKIE，"S" 是 string，"L" 是 list，以及 "I" 是整个列表（将会返回 array）。 如果省略了 type，它将返回最后处理的一种输入类型。

返回值

每个 type 的字符编码名称。 如果 mb_http_input() 没有处理过任何指定的 HTTP 输入，它将返回 FALSE。

参见

  • mb_internal_encoding() - 设置/获取内部字符编码
  • mb_http_output() - 设置/获取 HTTP 输出字符编码
  • mb_detect_order() - 设置/获取 字符编码的检测顺序

mb_get_info
mb_http_output
多字节字符串 函数


设置/获取 HTTP 输出字符编码

mb_http_input
mb_internal_encoding
多字节字符串 函数
PHP Manual

mb_http_output

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_http_output — 设置/获取 HTTP 输出字符编码

说明

mixed mb_http_output ([ string $encoding = mb_http_output() ] )

设置/获取 HTTP 输出字符编码。此函数被调用之后输出的内容会被转换成 encoding。

参数

encoding

如果设置了 encoding，mb_http_output() 设置 HTTP 输出字符编码为 encoding。

如果省略了 encoding，mb_http_output() 返回当前的 HTTP 输出字符编码。

返回值

如果省略了 encoding，mb_http_output() 返回当前的 HTTP 输出字符编码。 否则成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • mb_internal_encoding() - 设置/获取内部字符编码
  • mb_http_input() - 检测 HTTP 输入字符编码
  • mb_detect_order() - 设置/获取 字符编码的检测顺序

mb_http_input
mb_internal_encoding
多字节字符串 函数


设置/获取内部字符编码

mb_http_output
mb_language
多字节字符串 函数
PHP Manual

mb_internal_encoding

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_internal_encoding — 设置/获取内部字符编码

说明

mixed mb_internal_encoding ([ string $encoding = mb_internal_encoding() ] )

设置/获取内部字符编码

参数

encoding

encoding 字符编码名称使用于 HTTP 输入字符编码转换、HTTP 输出字符编码转换、mbstring 模块系列函数字符编码转换的默认编码。 You should notice that the internal encoding is totally different from the one for multibyte regex.

返回值

如果设置了 encoding，则成功时返回 TRUE， 或者在失败时返回 FALSE。 In this case, the character encoding for multibyte regex is NOT changed. 如果省略了 encoding，则返回当前的字符编码名称。

范例

Example #1 mb_internal_encoding() 例子

<?php
/* 设置内部字符编码为 UTF-8 */
mb_internal_encoding("UTF-8");

/* 显示当前的内部字符编码*/
echo mb_internal_encoding();
?>

参见

  • mb_http_input() - 检测 HTTP 输入字符编码
  • mb_http_output() - 设置/获取 HTTP 输出字符编码
  • mb_detect_order() - 设置/获取 字符编码的检测顺序
  • mb_regex_encoding() - Set/Get character encoding for multibyte regex

mb_http_output
mb_language
多字节字符串 函数


设置/获取当前的语言

mb_internal_encoding
mb_list_encodings
多字节字符串 函数
PHP Manual

mb_language

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_language — 设置/获取当前的语言

说明

mixed mb_language ([ string $language = mb_language() ] )

设置/获取当前的语言。

参数

language

用于编码邮件信息。有效的语言有："Japanese","ja","English","en" 和 "uni"（UTF-8）。 mb_send_mail() 使用了该设置来对邮件进行编码。

语言和它的设置，日文是 ISO-2022-JP/Base64，uni 是 UTF-8/Base64，英文是 ISO-8859-1/quoted。

返回值

如果设置了 language，并且 language 是有效的，它将返回 TRUE。否则将返回 FALSE。 当省略了 language 参数，它将返回语言名称的 string。如果之前没有设置过语言，则将返回 FALSE。

参见

  • mb_send_mail() - 发送编码过的邮件

mb_internal_encoding
mb_list_encodings
多字节字符串 函数


返回所有支持编码的数组

mb_language
mb_output_handler
多字节字符串 函数
PHP Manual

mb_list_encodings

(PHP 5, PHP 7)

mb_list_encodings — 返回所有支持编码的数组

说明

array mb_list_encodings ( void )

返回所有支持编码的数组。

参数

此函数没有参数。

返回值

返回一个数字索引数组。

错误／异常

该函数不会触发任何错误。

范例

Example #1 mb_list_encodings() 例子

<?php

print_r(mb_list_encodings());

?>

以上例程的输出类似于：

Array
(
    [0] => pass
    [1] => auto
    [2] => wchar
    [3] => byte2be
    [4] => byte2le
    [5] => byte4be
    [6] => byte4le
    [7] => BASE64
    [8] => UUENCODE
    [9] => HTML-ENTITIES
    [10] => Quoted-Printable
    [11] => 7bit
    [12] => 8bit
    [13] => UCS-4
    [14] => UCS-4BE
    [15] => UCS-4LE
    [16] => UCS-2
    [17] => UCS-2BE
    [18] => UCS-2LE
    [19] => UTF-32
    [20] => UTF-32BE
    [21] => UTF-32LE
    [22] => UTF-16
    [23] => UTF-16BE
    [24] => UTF-16LE
    [25] => UTF-8
    [26] => UTF-7
    [27] => UTF7-IMAP
    [28] => ASCII
    [29] => EUC-JP
    [30] => SJIS
    [31] => eucJP-win
    [32] => SJIS-win
    [33] => JIS
    [34] => ISO-2022-JP
    [35] => Windows-1252
    [36] => ISO-8859-1
    [37] => ISO-8859-2
    [38] => ISO-8859-3
    [39] => ISO-8859-4
    [40] => ISO-8859-5
    [41] => ISO-8859-6
    [42] => ISO-8859-7
    [43] => ISO-8859-8
    [44] => ISO-8859-9
    [45] => ISO-8859-10
    [46] => ISO-8859-13
    [47] => ISO-8859-14
    [48] => ISO-8859-15
    [49] => EUC-CN
    [50] => CP936
    [51] => HZ
    [52] => EUC-TW
    [53] => BIG-5
    [54] => EUC-KR
    [55] => UHC
    [56] => ISO-2022-KR
    [57] => Windows-1251
    [58] => CP866
    [59] => KOI8-R
)

mb_language
mb_output_handler
多字节字符串 函数


在输出缓冲中转换字符编码的回调函数

mb_list_encodings
mb_parse_str
多字节字符串 函数
PHP Manual

mb_output_handler

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_output_handler — 在输出缓冲中转换字符编码的回调函数

说明

string mb_output_handler ( string $contents , int $status )

mb_output_handler() 是一个
ob_start() 回调函数。
mb_output_handler() 将输出缓冲中的字符从内部字符编码转换为 HTTP 输出的字符编码。

参数

contents

输出缓冲的内容。

status

输出缓冲的状态。

返回值

转换后的 string。

更新日志

版本 说明
4.1.0

当遇到以下条件的时候，该函数将添加 HTTP 字符编码头：

  • 未使用 header() 设置 Content-Type。
  • 默认 MIME 类型以 text/ 开始。
  • mbstring.http_input 是除 pass 外的任意设置。

范例

Example #1 mb_output_handler() 例子

<?php
mb_http_output("UTF-8");
ob_start("mb_output_handler");
?>

注释

Note:

如果你想要输出二进制数据，比如图片，必须在任何二进制数据发送到客户端之前使用 header() 来设置 Content-Type: 头。（例如 header("Content-Type: image/png")）。 如果 Content-Type: 头已发送，输出字符编码的转换将不会执行。

注意，如果发送了 'Content-Type: text/*'，则内容被认为是文本，将发生转换。

参见

  • ob_start() - 打开输出控制缓冲

mb_list_encodings
mb_parse_str
多字节字符串 函数


解析 GET/POST/COOKIE 数据并设置全局变量

mb_output_handler
mb_preferred_mime_name
多字节字符串 函数
PHP Manual

mb_parse_str

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_parse_str — 解析 GET/POST/COOKIE 数据并设置全局变量

说明

bool mb_parse_str ( string $encoded_string [, array &$result ] )

解析 GET/POST/COOKIE 数据并设置全局变量。 由于 PHP 不提供原始 POST/COOKIE 数据，目前它仅能够用于 GET 数据。 它解析了 URL 编码过的数据，检测其编码，并转换编码为内部编码，然后设置其值为 array 的 result 或者全局变量。

参数

encoded_string

URL 编码过的数据。

result

一个 array，包含解码过的、编码转换后的值。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • mb_detect_order() - 设置/获取 字符编码的检测顺序
  • mb_internal_encoding() - 设置/获取内部字符编码

mb_output_handler
mb_preferred_mime_name
多字节字符串 函数


获取 MIME 字符串

mb_parse_str
mb_regex_encoding
多字节字符串 函数
PHP Manual

mb_preferred_mime_name

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_preferred_mime_name — 获取 MIME 字符串

说明

string mb_preferred_mime_name ( string $encoding )

获取指定编码的 MIME 字符 string。

参数

encoding

要检查的字符串。

返回值

字符编码 encoding 的 MIME charset string。

范例

Example #1 mb_preferred_mime_name() 例子

<?php
$outputenc = "sjis-win";
mb_http_output($outputenc);
ob_start("mb_output_handler");
header("Content-Type: text/html; charset=" . mb_preferred_mime_name($outputenc));
?>

mb_parse_str
mb_regex_encoding
多字节字符串 函数


Set/Get character encoding for multibyte regex

mb_preferred_mime_name
mb_regex_set_options
多字节字符串 函数
PHP Manual

mb_regex_encoding

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

mb_regex_encoding — Set/Get character encoding for multibyte regex

说明

mixed mb_regex_encoding ([ string $encoding = mb_regex_encoding() ] )

Set/Get character encoding for a multibyte regex.

参数

encoding

encoding 参数为字符编码。如果省略，则使用内部字符编码。

返回值

If encoding is set, then 成功时返回 TRUE， 或者在失败时返回 FALSE。 In this case, the internal character encoding is NOT changed. If encoding is omitted, then the current character encoding name for a multibyte regex is returned.

更新日志

版本 | 说明
5.6.0 | Default encoding is changed to UTF-8. It was EUC-JP Previously.

参见

  • mb_internal_encoding() - 设置/获取内部字符编码
  • mb_ereg() - Regular expression match with multibyte support

mb_preferred_mime_name
mb_regex_set_options
多字节字符串 函数


Set/Get the default options for mbregex functions

mb_regex_encoding
mb_send_mail
多字节字符串 函数
PHP Manual

mb_regex_set_options

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

mb_regex_set_options — Set/Get the default options for mbregex functions

说明

string mb_regex_set_options ([ string $options = mb_regex_set_options() ] )

Sets the default options described by options for multibyte regex functions.

参数

options

The options to set. This is a string where each character is an option. To set a mode, the mode character must be the last one set, however there can only be set one mode but multiple options.

Regex options
Option | Meaning
i | Ambiguity match on
x | Enables extended pattern form
m | '.' matches with newlines
s | '^' -> '\A', '$' -> '\Z'
p | Same as both the m and s options
l | Finds longest matches
n | Ignores empty matches
e | eval() resulting code
Regex syntax modes
Mode | Meaning
j | Java (Sun java.util.regex)
u | GNU regex
g | grep
c | Emacs
r | Ruby
z | Perl
b | POSIX Basic regex
d | POSIX Extended regex

返回值

The previous options. If options is omitted, it returns the string that describes the current options.

参见

  • mb_split() - 使用正则表达式分割多字节字符串
  • mb_ereg() - Regular expression match with multibyte support
  • mb_eregi() - Regular expression match ignoring case with multibyte support

mb_regex_encoding
mb_send_mail
多字节字符串 函数


发送编码过的邮件

mb_regex_set_options
mb_split
多字节字符串 函数
PHP Manual

mb_send_mail

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_send_mail — 发送编码过的邮件

说明

bool mb_send_mail ( string $to , string $subject , string $message [, string $additional_headers = NULL [, string $additional_parameter = NULL ]] )

发送邮件。邮件头和内容根据 mb_language() 设置来转换编码。 这是 mail() 的一个包装器函数，所以详情参见 mail()。

参数

to

被发送到该邮件地址。可通过逗号分隔地址的 to 来指定多个收件人。 该参数不会被自动编码。

subject

邮件标题。

message

邮件消息。

additional_headers(可选)

String to be inserted at the end of the email header.

This is typically used to add extra headers (From, Cc, and Bcc). Multiple extra headers should be separated with a CRLF (\r\n). Validate parameter not to be injected unwanted headers by attackers.

Note:

When sending mail, the mail must contain a From header. This can be set with the additional_headers parameter, or a default can be set in php.ini.

Failing to do this will result in an error message similar to Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing. The From header sets also Return-Path under Windows.

Note:

If messages are not received, try using a LF (\n) only. Some Unix mail transfer agents (most notably » qmail) replace LF by CRLF automatically (which leads to doubling CR if CRLF is used). This should be a last resort, as it does not comply with » RFC 2822.

additional_parameter

additional_parameter 是一个 MTA 命令行参数。 在使用 sendmail 时对设置正确的返回路径头很有帮助。

This parameter is escaped by escapeshellcmd() internally to prevent command execution. escapeshellcmd() prevents command execution, but allows to add addtional parameters. For security reason, this parameter should be validated.

Since escapeshellcmd() is applied automatically, some characters that are allowed as email addresses by internet RFCs cannot be used. Programs that are required to use these characters mail() cannot be used.

The user that the webserver runs as should be added as a trusted user to the sendmail configuration to prevent a 'X-Warning' header from being added to the message when the envelope sender (-f) is set using this method. For sendmail users, this file is /etc/mail/trusted-users.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • mail() - 发送邮件
  • mb_encode_mimeheader() - 为 MIME 头编码字符串
  • mb_language() - 设置/获取当前的语言

mb_regex_set_options
mb_split
多字节字符串 函数


使用正则表达式分割多字节字符串

mb_send_mail
mb_strcut
多字节字符串 函数
PHP Manual

mb_split

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

mb_split — 使用正则表达式分割多字节字符串

说明

array mb_split ( string $pattern , string $string [, int $limit = -1 ] )

使用正则表达式 pattern 分割多字节 string 并返回结果 array。

参数

pattern

正则表达式。

string

待分割的 string。

limit
如果指定了可选参数 limit，将最多分割为 limit 个元素。

返回值

array 的结果。

注释

Note:

The character encoding specified by mb_regex_encoding() will be used as the character encoding for this function by default.

参见

  • mb_regex_encoding() - Set/Get character encoding for multibyte regex
  • mb_ereg() - Regular expression match with multibyte support

mb_send_mail
mb_strcut
多字节字符串 函数


获取字符的一部分

mb_split
mb_strimwidth
多字节字符串 函数
PHP Manual

mb_strcut

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_strcut — 获取字符的一部分

说明

string mb_strcut ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )

mb_strcut() 和 mb_substr() 类似，都是从字符串中提取子字符串，但是按字节数来执行，而不是字符个数。 如果截断位置位于多字节字符两个字节的中间，将于该字符的第一个字节开始执行。 这也是和 substr() 函数的不同之处，后者简单地将字符串在字节之间截断，这将导致一个畸形的字节序列。

参数

str

要截断的 string。

start

如果 start 不是负数，返回的字符串会从 str 的第 start 字节位置开始，从 0 开始计数。举个例子，字符串 'abcdef'，字节位置 0 的字符是 'a'，字节位置 2 的字符是 'c'，以此类推。

如果 start 是负数，返回的字符串是从 str 末尾处第 start 个字节开始的。

length

字节长度。If omitted or NULL is passed, extract all bytes to the end of the string.

encoding

encoding 参数为字符编码。如果省略，则使用内部字符编码。

返回值

mb_strcut() 根据 start 和 length 参数返回 str 的一部分。

更新日志

版本 | 说明
5.4.8 | Passing NULL as length extracts all bytes to the end of the string. Prior to this version NULL was treated the same as 0.

参见

  • mb_substr() - 获取部分字符串
  • mb_internal_encoding() - 设置/获取内部字符编码

mb_split
mb_strimwidth
多字节字符串 函数


获取按指定宽度截断的字符串

mb_strcut
mb_stripos
多字节字符串 函数
PHP Manual

mb_strimwidth

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_strimwidth — 获取按指定宽度截断的字符串

说明

string mb_strimwidth ( string $str , int $start , int $width [, string $trimmarker = "" [, string $encoding = mb_internal_encoding() ]] )

按 width 将字符串 str 截短。

参数

str

要截短的 string。

start

开始位置的偏移。从这些字符数开始的截取字符串。（默认是 0 个字符） 如果 start 是负数，就是字符串结尾处的字符数。

width

所需修剪的宽度。负数的宽度是从字符串结尾处统计的。

trimmarker

当字符串被截短的时候，将此字符串添加到截短后的末尾。

encoding

encoding 参数为字符编码。如果省略，则使用内部字符编码。

返回值

截短后的 string。 如果设置了 trimmarker，还将结尾处的字符替换为 trimmarker ，并符合 width 的宽度。

更新日志

版本 | 说明
7.1.0 | 支持负数的 start 和 width。

范例

Example #1 mb_strimwidth() 例子

<?php
echo mb_strimwidth("Hello World", 0, 10, "...");
// 输出 Hello W...
?>

参见

  • mb_strwidth() - 返回字符串的宽度
  • mb_internal_encoding() - 设置/获取内部字符编码

mb_strcut
mb_stripos
多字节字符串 函数


大小写不敏感地查找字符串在另一个字符串中首次出现的位置

mb_strimwidth
mb_stristr
多字节字符串 函数
PHP Manual

mb_stripos

(PHP 5 >= 5.2.0, PHP 7)

mb_stripos — 大小写不敏感地查找字符串在另一个字符串中首次出现的位置

说明

int mb_stripos ( string $haystack , string $needle [, int $offset = 0 [, string $encoding = mb_internal_encoding() ]] )

mb_stripos() 返回 needle 在字符串 haystack 中首次出现位置的数值。 和 mb_strpos() 不同的是，mb_stripos() 是大小写不敏感的。 如果 needle 没找到，它将返回 FALSE。

参数

haystack

在这个字符串中查找获取 needle 首次出现的位置

needle

在 haystack 中查找这个字符串

offset

haystack 里开始搜索的位置。如果是负数，就从字符串的尾部开始统计。

encoding

使用的字符编码名称。 如果省略了它，将使用内部字符编码。

返回值

返回字符串 haystack 中 needle 首次出现位置的数值。 如果没有找到 needle，它将返回 FALSE。

更新日志

版本 | 说明
7.1.0 | 支持 offset 使用负数。

参见

  • stripos() - 查找字符串首次出现的位置（不区分大小写）
  • strpos() - 查找字符串首次出现的位置
  • mb_strpos() - 查找字符串在另一个字符串中首次出现的位置

mb_strimwidth
mb_stristr
多字节字符串 函数


大小写不敏感地查找字符串在另一个字符串里的首次出现

mb_stripos
mb_strlen
多字节字符串 函数
PHP Manual

mb_stristr

(PHP 5 >= 5.2.0, PHP 7)

mb_stristr — 大小写不敏感地查找字符串在另一个字符串里的首次出现

说明

string mb_stristr ( string $haystack , string $needle [, bool $before_needle = false [, string $encoding = mb_internal_encoding() ]] )

mb_strstr() 查找了 needle 在 haystack 中首次的出现并返回 haystack 的一部分。 和 mb_strstr() 不同的是，mb_stristr() 是大小写不敏感的。 如果 needle 没有找到，它将返回 FALSE。

参数

haystack

要获取 needle 首次出现的字符串。

needle

在 haystack 中查找这个字符串。

before_needle

决定这个函数返回 haystack 的哪一部分。 如果设置为 TRUE，它返回 haystack 中从开始到 needle 出现位置的所有字符（不包括 needle）。 如果设置为 FALSE，它返回 haystack 中 needle 出现位置到最后的所有字符（包括了 needle）。

encoding

要使用的字符编码名称。 如果省略该参数，将使用内部字符编码。

返回值

返回 haystack 的一部分，或者 needle 没找到则返回 FALSE。

参见

  • stristr() - strstr 函数的忽略大小写版本
  • strstr() - 查找字符串的首次出现
  • mb_strstr() - 查找字符串在另一个字符串里的首次出现

mb_stripos
mb_strlen
多字节字符串 函数


获取字符串的长度

mb_stristr
mb_strpos
多字节字符串 函数
PHP Manual

mb_strlen

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_strlen — 获取字符串的长度

说明

mixed mb_strlen ( string $str [, string $encoding = mb_internal_encoding() ] )

获取一个 string 的长度。

参数

str

要检查长度的字符串。

encoding

encoding 参数为字符编码。如果省略，则使用内部字符编码。

返回值

返回具有 encoding 编码的字符串 str 包含的字符数。 多字节的字符被计为 1。

如果给定的 encoding 无效则返回 FALSE。

参见

  • mb_internal_encoding() - 设置/获取内部字符编码
  • grapheme_strlen() - Get string length in grapheme units
  • iconv_strlen() - 返回字符串的字符数统计
  • strlen() - 获取字符串长度

mb_stristr
mb_strpos
多字节字符串 函数


查找字符串在另一个字符串中首次出现的位置

mb_strlen
mb_strrchr
多字节字符串 函数
PHP Manual

mb_strpos

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_strpos — 查找字符串在另一个字符串中首次出现的位置

说明

int mb_strpos ( string $haystack , string $needle [, int $offset = 0 [, string $encoding = mb_internal_encoding() ]] )

查找 string 在一个 string 中首次出现的位置。

基于字符数执行一个多字节安全的 strpos() 操作。 第一个字符的位置是 0，第二个字符的位置是 1，以此类推。

参数

haystack

要被检查的 string。

needle

在 haystack 中查找这个字符串。 和 strpos() 不同的是，数字的值不会被当做字符的顺序值。

offset

搜索位置的偏移。如果没有提供该参数，将会使用 0。负数的 offset 会从字符串尾部开始统计。

encoding

encoding 参数为字符编码。如果省略，则使用内部字符编码。

返回值

返回 string 的 haystack 中 needle 首次出现位置的数值。 如果没有找到 needle，它将返回 FALSE。

更新日志

版本 | 说明
7.1.0 | 支持负数的 offset。

参见

  • mb_internal_encoding() - 设置/获取内部字符编码
  • strpos() - 查找字符串首次出现的位置

mb_strlen
mb_strrchr
多字节字符串 函数


查找指定字符在另一个字符串中最后一次的出现

mb_strpos
mb_strrichr
多字节字符串 函数
PHP Manual

mb_strrchr

(PHP 5 >= 5.2.0, PHP 7)

mb_strrchr — 查找指定字符在另一个字符串中最后一次的出现

说明

string mb_strrchr ( string $haystack , string $needle [, bool $part = false [, string $encoding = mb_internal_encoding() ]] )

mb_strrchr() 查找了 needle 在 haystack 中最后一次出现的位置，并返回 haystack 的部分。 如果没有找到 needle，它将返回 FALSE。

参数

haystack

在该字符串中查找 needle 最后出现的位置

needle

在 haystack 中查找这个字符串

part

决定这个函数返回 haystack 的哪一部分。 如果设置为 TRUE，它将返回的字符是从 haystack 的开始到 needle 最后出现的位置。 如果设置为 FALSE，它将返回的字符是从 needle 最后出现的位置到 haystack 的末尾。

encoding

使用的字符编码名称。如果省略了，则将使用内部编码。

返回值

返回 haystack 的一部分。 或者在没有找到 needle 时返回 FALSE。

参见

  • strrchr() - 查找指定字符在字符串中的最后一次出现
  • mb_strstr() - 查找字符串在另一个字符串里的首次出现
  • mb_strrichr() - 大小写不敏感地查找指定字符在另一个字符串中最后一次的出现

mb_strpos
mb_strrichr
多字节字符串 函数


大小写不敏感地查找指定字符在另一个字符串中最后一次的出现

mb_strrchr
mb_strripos
多字节字符串 函数
PHP Manual

mb_strrichr

(PHP 5 >= 5.2.0, PHP 7)

mb_strrichr — 大小写不敏感地查找指定字符在另一个字符串中最后一次的出现

说明

string mb_strrichr ( string $haystack , string $needle [, bool $part = false [, string $encoding = mb_internal_encoding() ]] )

mb_strrichr() 大小写不敏感地查找指定 needle 在 haystack 中最后一次的出现，并返回 haystack 的一部分。 和 mb_strrchr() 不同的是，mb_strrichr() 是大小写不敏感的。 如果 needle 没有找到，它将返回 FALSE。

参数

haystack

在该字符串中查找 needle 的最后出现位置

needle

在 needle 中查找该字符串

part

决定这个函数返回 haystack 的哪一部分。 如果设置为 TRUE，它将返回的字符是从 haystack 的开始到 needle 最后出现的位置。 如果设置为 FALSE，它将返回的字符是从 needle 最后出现的位置到 haystack 的末尾。

encoding

使用的字符编码名称。如果省略了，则将使用内部编码。

返回值

返回 haystack 的一部分。 或者在没有找到 needle 时返回 FALSE。

参见

  • mb_stristr() - 大小写不敏感地查找字符串在另一个字符串里的首次出现
  • mb_strrchr() - 查找指定字符在另一个字符串中最后一次的出现

mb_strrchr
mb_strripos
多字节字符串 函数


大小写不敏感地在字符串中查找一个字符串最后出现的位置

mb_strrichr
mb_strrpos
多字节字符串 函数
PHP Manual

mb_strripos

(PHP 5 >= 5.2.0, PHP 7)

mb_strripos — 大小写不敏感地在字符串中查找一个字符串最后出现的位置

说明

int mb_strripos ( string $haystack , string $needle [, int $offset = 0 [, string $encoding = mb_internal_encoding() ]] )

mb_strripos() 基于字符数执行一个多字节安全的 strripos() 操作。 needle 的位置是从 haystack 的开始进行统计的。 第一个字符的位置是 0，第二个字符的位置是 1。 和 mb_strrpos() 不同的是，mb_strripos() 是大小写不敏感的。

参数

haystack

查找 needle 在这个字符串中最后出现的位置。

needle

在 haystack 中查找这个字符串。

offset

在 haystack 中开始搜索的位置。

encoding

使用的字符编码名称。如果省略了，则将使用内部编码。

返回值

返回字符串 haystack 中 needle 最后出现位置的数值。 如果没有找到 needle，它将返回 FALSE。

参见

  • strripos() - 计算指定字符串在目标字符串中最后一次出现的位置（不区分大小写）
  • strrpos() - 计算指定字符串在目标字符串中最后一次出现的位置
  • mb_strrpos() - 查找字符串在一个字符串中最后出现的位置

mb_strrichr
mb_strrpos
多字节字符串 函数


查找字符串在一个字符串中最后出现的位置

mb_strripos
mb_strstr
多字节字符串 函数
PHP Manual

mb_strrpos

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_strrpos — 查找字符串在一个字符串中最后出现的位置

说明

int mb_strrpos ( string $haystack , string $needle [, int $offset = 0 [, string $encoding = mb_internal_encoding() ]] )

基于字符数执行一个多字节安全的 strrpos() 操作。 needle 的位置是从 haystack 的开始进行统计的。 第一个字符的位置是 0，第二个字符的位置是 1。

参数

haystack

查找 needle 在这个 string 中最后出现的位置。

needle

在 haystack 中查找这个 string。

offset
可以用于指定 string 里从任意字符数开始进行搜索。 负数的值将导致搜索会终止于指向 string 末尾的任意点。
encoding

encoding 参数为字符编码。如果省略，则使用内部字符编码。

返回值

返回 string 的 haystack 中，needle 最后出现位置的数值。 如果没有找到 needle，它将返回 FALSE。

更新日志

版本 | 说明
5.2.0 | 增加了可选参数 offset。

注释

Note: 从 PHP 5.2.0 开始，encoding 参数从第三个位置移到了第四个位置。 为实现向后兼容，可以将第三个参数指定为 encoding，但不建议这么做，在将来会移除这个特性。

参见

  • mb_strpos() - 查找字符串在另一个字符串中首次出现的位置
  • mb_internal_encoding() - 设置/获取内部字符编码
  • strrpos() - 计算指定字符串在目标字符串中最后一次出现的位置

mb_strripos
mb_strstr
多字节字符串 函数


查找字符串在另一个字符串里的首次出现

mb_strrpos
mb_strtolower
多字节字符串 函数
PHP Manual

mb_strstr

(PHP 5 >= 5.2.0, PHP 7)

mb_strstr — 查找字符串在另一个字符串里的首次出现

说明

string mb_strstr ( string $haystack , string $needle [, bool $before_needle = false [, string $encoding = mb_internal_encoding() ]] )

mb_strstr() 查找了 needle 在 haystack 中首次的出现并返回 haystack 的一部分。 如果 needle 没有找到，它将返回 FALSE。

参数

haystack

要获取 needle 首次出现的字符串。

needle

在 haystack 中查找这个字符串。

before_needle

决定这个函数返回 haystack 的哪一部分。 如果设置为 TRUE，它返回 haystack 中从开始到 needle 出现位置的所有字符（不包括 needle）。 如果设置为 FALSE，它返回 haystack 中 needle 出现位置到最后的所有字符（包括了 needle）。

encoding

要使用的字符编码名称。 如果省略该参数，将使用内部字符编码。

返回值

返回 haystack 的一部分，或者 needle 没找到则返回 FALSE。

参见

  • stristr() - strstr 函数的忽略大小写版本
  • strstr() - 查找字符串的首次出现
  • mb_stristr() - 大小写不敏感地查找字符串在另一个字符串里的首次出现

mb_strrpos
mb_strtolower
多字节字符串 函数


使字符串小写

mb_strstr
mb_strtoupper
多字节字符串 函数
PHP Manual

mb_strtolower

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

mb_strtolower — 使字符串小写

说明

string mb_strtolower ( string $str [, string $encoding = mb_internal_encoding() ] )

返回所有字母字符转换成小写的 str。

参数

str

要被小写的字符串。

encoding

encoding 参数为字符编码。如果省略，则使用内部字符编码。

返回值

所有字母字符已被转换成小写的 str。

Unicode

更多关于 Unicode 属性的信息，请参见 » http://www.unicode.org/unicode/reports/tr21/。

和 strtolower() 不同的是，"字母"字符的检测是根据字符的 Unicode 属性。 因此函数的行为不会受语言设置的影响，能偶转换任意具有"字母"属性的字符，例如元音变音 A（?）。

范例

Example #1 mb_strtolower() 例子

<?php
$str = "Mary Had A Little Lamb and She LOVED It So";
$str = mb_strtolower($str);
echo $str; // 输出： mary had a little lamb and she loved it so
?>

Example #2 非拉丁 UTF-8 文本的 mb_strtolower() 例子

<?php
$str = "Τ?χιστη αλ?πηξ βαφ?? ψημ?νη γη, δρασκελ?ζει υπ?ρ νωθρο? κυν??";
$str = mb_strtolower($str, 'UTF-8');
echo $str; // 输出 τ?χιστη αλ?πηξ βαφ?? ψημ?νη γη, δρασκελ?ζει υπ?ρ νωθρο? κυν??
?>

参见

  • mb_strtoupper() - 使字符串大写
  • mb_convert_case() - 对字符串进行大小写转换
  • strtolower() - 将字符串转化为小写

mb_strstr
mb_strtoupper
多字节字符串 函数


使字符串大写

mb_strtolower
mb_strwidth
多字节字符串 函数
PHP Manual

mb_strtoupper

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

mb_strtoupper — 使字符串大写

说明

string mb_strtoupper ( string $str [, string $encoding = mb_internal_encoding() ] )

将所有的字母字符转化成大写并返回 str。

参数

str

要大写的 string。

encoding

encoding 参数为字符编码。如果省略，则使用内部字符编码。

返回值

str 里所有的字母都转换成大写的。

Unicode

更多 Unicode 属性的信息，请参见 » http://www.unicode.org/unicode/reports/tr21/。

和 strtoupper() 不同的是，"字母"是通过 Unicode 字符属性来确定的。 因此这个函数不会受语言环境（locale）设置影响，能够转化任何具有"字母"属性的字符，例如 a 变音符号（?）。

范例

Example #1 mb_strtoupper() 例子

<?php
$str = "Mary Had A Little Lamb and She LOVED It So";
$str = mb_strtoupper($str);
echo $str; // Prints MARY HAD A LITTLE LAMB AND SHE LOVED IT SO
?>

Example #2 非拉丁 UTF-8 文本的 mb_strtoupper() 例子

<?php
$str = "Τ?χιστη αλ?πηξ βαφ?? ψημ?νη γη, δρασκελ?ζει υπ?ρ νωθρο? κυν??";
$str = mb_strtoupper($str, 'UTF-8');
echo $str; // 打印了 Τ?ΧΙΣΤΗ ΑΛ?ΠΗΞ ΒΑΦ?Σ ΨΗΜ?ΝΗ ΓΗ, ΔΡΑΣΚΕΛ?ΖΕΙ ΥΠ?Ρ ΝΩΘΡΟ? ΚΥΝ?Σ
?>

参见

  • mb_strtolower() - 使字符串小写
  • mb_convert_case() - 对字符串进行大小写转换
  • strtoupper() - 将字符串转化为大写

mb_strtolower
mb_strwidth
多字节字符串 函数


返回字符串的宽度

mb_strtoupper
mb_substitute_character
多字节字符串 函数
PHP Manual

mb_strwidth

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_strwidth — 返回字符串的宽度

说明

int mb_strwidth ( string $str [, string $encoding = mb_internal_encoding() ] )

返回 string 类型 str 的宽度。

多字节字符通常是单字节字符的两倍宽度。

字符宽度
字符 | 宽度
U+0000 - U+0019 | 0
U+0020 - U+1FFF | 1
U+2000 - U+FF60 | 2
U+FF61 - U+FF9F | 1
U+FFA0 - | 2

参数

str

待解码的 string。

encoding

encoding 参数为字符编码。如果省略，则使用内部字符编码。

返回值

string str 的宽度。

参见

  • mb_strimwidth() - 获取按指定宽度截断的字符串
  • mb_internal_encoding() - 设置/获取内部字符编码

mb_strtoupper
mb_substitute_character
多字节字符串 函数


设置/获取替代字符

mb_strwidth
mb_substr_count
多字节字符串 函数
PHP Manual

mb_substitute_character

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_substitute_character — 设置/获取替代字符

说明

mixed mb_substitute_character ([ mixed $substrchar = mb_substitute_character() ] )

当输入字符的编码是无效的，或者字符代码不存在于输出的字符编码中时，可以为其指定一个替代字符。 无效字符可以被替换为 NULL（不输出）、string 或者 integer 值（Unicode 字符代码的值）。

该设置会影响 mb_convert_encoding()、
mb_convert_variables()、
mb_output_handler()
和 mb_send_mail()。

参数

substrchar

指定 Unicode 值为一个 integer，或者是以下字符串中的一个：

  • "none":：不输出
  • "long"：输出字符代码的值（比如：U+3000、JIS+7E7E）
  • "entity"：输出字符的实体（比如：?）

返回值

如果设置了 substchar，在成功时返回 TRUE，失败时返回 FALSE。 如果没有设置 substchar，它将返回当前设置。

范例

Example #1 mb_substitute_character() 例子

<?php
/* 设置为 Unicode U+3013 (GETA MARK) */
mb_substitute_character(0x3013);

/* 设置十六进制格式 */
mb_substitute_character("long");

/* 显示当前设置 */
echo mb_substitute_character();
?>

mb_strwidth
mb_substr_count
多字节字符串 函数


统计字符串出现的次数

mb_substitute_character
mb_substr
多字节字符串 函数
PHP Manual

mb_substr_count

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

mb_substr_count — 统计字符串出现的次数

说明

int mb_substr_count ( string $haystack , string $needle [, string $encoding = mb_internal_encoding() ] )

统计子字符串 needle 出现在字符串 haystack 中的次数。

参数

haystack

要检查的字符串。

needle

待查找的字符串。

encoding

encoding 参数为字符编码。如果省略，则使用内部字符编码。

返回值

子字符串 needle 出现在字符串 haystack 中的次数。

范例

Example #1 mb_substr_count() 例子

<?php
echo mb_substr_count("This is a test", "is"); // 输出 2
?>

参见

  • mb_strpos() - 查找字符串在另一个字符串中首次出现的位置
  • mb_substr() - 获取部分字符串
  • substr_count() - 计算字串出现的次数

mb_substitute_character
mb_substr
多字节字符串 函数


获取部分字符串

mb_substr_count
Pspell
多字节字符串 函数
PHP Manual

mb_substr

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_substr — 获取部分字符串

说明

string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )

根据字符数执行一个多字节安全的 substr() 操作。 位置是从 str 的开始位置进行计数。 第一个字符的位置是 0。第二个字符的位置是 1，以此类推。

参数

str

从该 string 中提取子字符串。

start

如果 start 不是负数，返回的字符串会从 str 第 start 的位置开始，从 0 开始计数。举个例子，字符串 'abcdef'，位置 0 的字符是 'a'，位置 2 的字符是 'c'，以此类推。

如果 start 是负数，返回的字符串是从 str 末尾处第 start 个字符开始的。

length

str 中要使用的最大字符数。如果省略了此参数或者传入了 NULL，则会提取到字符串的尾部。

encoding

encoding 参数为字符编码。如果省略，则使用内部字符编码。

返回值

mb_substr() 函数根据 start 和 length 参数返回 str 中指定的部分。

更新日志

版本 | 说明
5.4.8 | length 传入 NULL，则从 start 提取到字符串的结尾处。 在之前的版本里， NULL 会被当作 0 来处理。

参见

  • mb_strcut() - 获取字符的一部分
  • mb_internal_encoding() - 设置/获取内部字符编码

mb_substr_count
Pspell
多字节字符串 函数


Pspell

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Pspell 函数
    • pspell_add_to_personal — Add the word to a personal wordlist
    • pspell_add_to_session — Add the word to the wordlist in the current session
    • pspell_check — Check a word
    • pspell_clear_session — Clear the current session
    • pspell_config_create — Create a config used to open a dictionary
    • pspell_config_data_dir — location of language data files
    • pspell_config_dict_dir — Location of the main word list
    • pspell_config_ignore — Ignore words less than N characters long
    • pspell_config_mode — Change the mode number of suggestions returned
    • pspell_config_personal — Set a file that contains personal wordlist
    • pspell_config_repl — Set a file that contains replacement pairs
    • pspell_config_runtogether — Consider run-together words as valid compounds
    • pspell_config_save_repl — Determine whether to save a replacement pairs list along with the wordlist
    • pspell_new_config — Load a new dictionary with settings based on a given config
    • pspell_new_personal — Load a new dictionary with personal wordlist
    • pspell_new — Load a new dictionary
    • pspell_save_wordlist — Save the personal wordlist to a file
    • pspell_store_replacement — Store a replacement pair for a word
    • pspell_suggest — Suggest spellings of a word
mb_substr
简介
国际化与字符编码支持


简介

These functions allow you to check the spelling of a word and offer suggestions.

Pspell
安装／配置
Pspell


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Pspell


需求

To compile PHP with pspell support, you need the aspell library, available from » http://aspell.net/.

安装／配置
安装
安装／配置


安装

If you have the libraries needed add the --with-pspell[=dir] option when compiling PHP.

Note: Note to Win32 Users

为了使此扩展生效， DLL 文件必须能在 Windows 系统的 PATH 指示的路径下找到。如何操作的信息，请参见题为"如何在 Windows 中将 PHP 目录加到 PATH 中"的FAQ。虽然将 DLL 文件从 PHP 文件夹复制到 Windows 系统目录也行，但不建议这样做。 此扩展需要下列文件在 PATH 路径中： aspell-15.dll from the bin folder of the aspell installation.

Win32 support is available only in PHP 4.3.3 and later versions. Also, at least aspell version 0.50 is required.

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

PSPELL_FAST (integer)
PSPELL_NORMAL (integer)
PSPELL_BAD_SPELLERS (integer)
PSPELL_RUN_TOGETHER (integer)
资源类型
Pspell 函数
Pspell


Pspell 函数

Table of Contents

  • pspell_add_to_personal — Add the word to a personal wordlist
  • pspell_add_to_session — Add the word to the wordlist in the current session
  • pspell_check — Check a word
  • pspell_clear_session — Clear the current session
  • pspell_config_create — Create a config used to open a dictionary
  • pspell_config_data_dir — location of language data files
  • pspell_config_dict_dir — Location of the main word list
  • pspell_config_ignore — Ignore words less than N characters long
  • pspell_config_mode — Change the mode number of suggestions returned
  • pspell_config_personal — Set a file that contains personal wordlist
  • pspell_config_repl — Set a file that contains replacement pairs
  • pspell_config_runtogether — Consider run-together words as valid compounds
  • pspell_config_save_repl — Determine whether to save a replacement pairs list along with the wordlist
  • pspell_new_config — Load a new dictionary with settings based on a given config
  • pspell_new_personal — Load a new dictionary with personal wordlist
  • pspell_new — Load a new dictionary
  • pspell_save_wordlist — Save the personal wordlist to a file
  • pspell_store_replacement — Store a replacement pair for a word
  • pspell_suggest — Suggest spellings of a word
预定义常量
pspell_add_to_personal
Pspell


Add the word to a personal wordlist

Pspell 函数
pspell_add_to_session
Pspell 函数
PHP Manual

pspell_add_to_personal

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

pspell_add_to_personal — Add the word to a personal wordlist

说明

bool pspell_add_to_personal ( int $dictionary_link , string $word )

pspell_add_to_personal() adds a word to the personal wordlist. If you used pspell_new_config() with pspell_config_personal() to open the dictionary, you can save the wordlist later with pspell_save_wordlist().

参数

dictionary_link

word

The added word.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 pspell_add_to_personal()

<?php
$pspell_config = pspell_config_create("en");
pspell_config_personal($pspell_config, "/var/dictionaries/custom.pws");
$pspell_link = pspell_new_config($pspell_config);

pspell_add_to_personal($pspell_link, "Vlad");
pspell_save_wordlist($pspell_link);
?>

注释

Note:

This function will not work unless you have pspell .11.2 and aspell .32.5 or later.

Pspell 函数
pspell_add_to_session
Pspell 函数


Add the word to the wordlist in the current session

pspell_add_to_personal
pspell_check
Pspell 函数
PHP Manual

pspell_add_to_session

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

pspell_add_to_session — Add the word to the wordlist in the current session

说明

bool pspell_add_to_session ( int $dictionary_link , string $word )

pspell_add_to_session() adds a word to the wordlist associated with the current session. It is very similar to pspell_add_to_personal()

参数

dictionary_link

word

The added word.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

pspell_add_to_personal
pspell_check
Pspell 函数


Check a word

pspell_add_to_session
pspell_clear_session
Pspell 函数
PHP Manual

pspell_check

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

pspell_check — Check a word

说明

bool pspell_check ( int $dictionary_link , string $word )

pspell_check() checks the spelling of a word.

参数

dictionary_link

word

The tested word.

返回值

Returns TRUE if the spelling is correct, FALSE if not.

范例

Example #1 pspell_check() Example

<?php
$pspell_link = pspell_new("en");

if (pspell_check($pspell_link, "testt")) {
    echo "This is a valid spelling";
} else {
    echo "Sorry, wrong spelling";
}
?>

pspell_add_to_session
pspell_clear_session
Pspell 函数


Clear the current session

pspell_check
pspell_config_create
Pspell 函数
PHP Manual

pspell_clear_session

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

pspell_clear_session — Clear the current session

说明

bool pspell_clear_session ( int $dictionary_link )

pspell_clear_session() clears the current session. The current wordlist becomes blank, and, for example, if you try to save it with pspell_save_wordlist(), nothing happens.

参数

dictionary_link

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 pspell_add_to_personal() Example

<?php
$pspell_config = pspell_config_create("en");
pspell_config_personal($pspell_config, "/var/dictionaries/custom.pws");
$pspell_link = pspell_new_config($pspell_config);

pspell_add_to_personal($pspell_link, "Vlad");
pspell_clear_session($pspell_link);
pspell_save_wordlist($pspell_link);    //"Vlad" will not be saved
?>

pspell_check
pspell_config_create
Pspell 函数


Create a config used to open a dictionary

pspell_clear_session
pspell_config_data_dir
Pspell 函数
PHP Manual

pspell_config_create

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

pspell_config_create — Create a config used to open a dictionary

说明

int pspell_config_create ( string $language [, string $spelling [, string $jargon [, string $encoding ]]] )

Create a config used to open a dictionary.

pspell_config_create() has a very similar syntax to pspell_new(). In fact, using pspell_config_create() immediately followed by pspell_new_config() will produce the exact same result. However, after creating a new config, you can also use pspell_config_*() functions before calling pspell_new_config() to take advantage of some advanced functionality.

For more information and examples, check out inline manual pspell website:» http://aspell.net/.

参数

language

The language parameter is the language code which consists of the two letter ISO 639 language code and an optional two letter ISO 3166 country code after a dash or underscore.

spelling

The spelling parameter is the requested spelling for languages with more than one spelling such as English. Known values are 'american', 'british', and 'canadian'.

jargon

The jargon parameter contains extra information to distinguish two different words lists that have the same language and spelling parameters.

encoding

The encoding parameter is the encoding that words are expected to be in. Valid values are 'utf-8', 'iso8859-*', 'koi8-r', 'viscii', 'cp1252', 'machine unsigned 16', 'machine unsigned 32'. This parameter is largely untested, so be careful when using.

返回值

Retuns a pspell config identifier, or FALSE on error.

范例

Example #1 pspell_config_create()

<?php
$pspell_config = pspell_config_create("en");
pspell_config_personal($pspell_config, "/var/dictionaries/custom.pws");
pspell_config_repl($pspell_config, "/var/dictionaries/custom.repl");
$pspell_link = pspell_new_personal($pspell_config, "en");
?>

pspell_clear_session
pspell_config_data_dir
Pspell 函数


location of language data files

pspell_config_create
pspell_config_dict_dir
Pspell 函数
PHP Manual

pspell_config_data_dir

(PHP 5, PHP 7)

pspell_config_data_dir — location of language data files

说明

bool pspell_config_data_dir ( int $conf , string $directory )

Warning

本函数还未编写文档，仅有参数列表。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

pspell_config_create
pspell_config_dict_dir
Pspell 函数


Location of the main word list

pspell_config_data_dir
pspell_config_ignore
Pspell 函数
PHP Manual

pspell_config_dict_dir

(PHP 5, PHP 7)

pspell_config_dict_dir — Location of the main word list

说明

bool pspell_config_dict_dir ( int $conf , string $directory )

Warning

本函数还未编写文档，仅有参数列表。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

pspell_config_data_dir
pspell_config_ignore
Pspell 函数


Ignore words less than N characters long

pspell_config_dict_dir
pspell_config_mode
Pspell 函数
PHP Manual

pspell_config_ignore

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

pspell_config_ignore — Ignore words less than N characters long

说明

bool pspell_config_ignore ( int $dictionary_link , int $n )

pspell_config_ignore() should be used on a config before calling pspell_new_config(). This function allows short words to be skipped by the spell checker.

参数

dictionary_link

n

Words less than n characters will be skipped.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 pspell_config_ignore()

<?php
$pspell_config = pspell_config_create("en");
pspell_config_ignore($pspell_config, 5);
$pspell_link = pspell_new_config($pspell_config);
pspell_check($pspell_link, "abcd");    //will not result in an error
?>

pspell_config_dict_dir
pspell_config_mode
Pspell 函数


Change the mode number of suggestions returned

pspell_config_ignore
pspell_config_personal
Pspell 函数
PHP Manual

pspell_config_mode

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

pspell_config_mode — Change the mode number of suggestions returned

说明

bool pspell_config_mode ( int $dictionary_link , int $mode )

pspell_config_mode() should be used on a config before calling pspell_new_config(). This function determines how many suggestions will be returned by pspell_suggest().

参数

dictionary_link

mode

The mode parameter is the mode in which spellchecker will work. There are several modes available:

  • PSPELL_FAST - Fast mode (least number of suggestions)
  • PSPELL_NORMAL - Normal mode (more suggestions)
  • PSPELL_BAD_SPELLERS - Slow mode (a lot of suggestions)

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 pspell_config_mode() Example

<?php
$pspell_config = pspell_config_create("en");
pspell_config_mode($pspell_config, PSPELL_FAST);
$pspell_link = pspell_new_config($pspell_config);
pspell_check($pspell_link, "thecat");
?>

pspell_config_ignore
pspell_config_personal
Pspell 函数


Set a file that contains personal wordlist

pspell_config_mode
pspell_config_repl
Pspell 函数
PHP Manual

pspell_config_personal

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

pspell_config_personal — Set a file that contains personal wordlist

说明

bool pspell_config_personal ( int $dictionary_link , string $file )

Set a file that contains personal wordlist. The personal wordlist will be loaded and used in addition to the standard one after you call pspell_new_config(). The file is also the file where pspell_save_wordlist() will save personal wordlist to.

pspell_config_personal() should be used on a config before calling pspell_new_config().

参数

dictionary_link

file

The personal wordlist. If the file does not exist, it will be created. The file should be writable by whoever PHP runs as (e.g. nobody).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 pspell_config_personal()

<?php
$pspell_config = pspell_config_create("en");
pspell_config_personal($pspell_config, "/var/dictionaries/custom.pws");
$pspell_link = pspell_new_config($pspell_config);
pspell_check($pspell_link, "thecat");
?>

注释

Note:

This function will not work unless you have pspell .11.2 and aspell .32.5 or later.

pspell_config_mode
pspell_config_repl
Pspell 函数


Set a file that contains replacement pairs

pspell_config_personal
pspell_config_runtogether
Pspell 函数
PHP Manual

pspell_config_repl

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

pspell_config_repl — Set a file that contains replacement pairs

说明

bool pspell_config_repl ( int $dictionary_link , string $file )

Set a file that contains replacement pairs.

The replacement pairs improve the quality of the spellchecker. When a word is misspelled, and a proper suggestion was not found in the list, pspell_store_replacement() can be used to store a replacement pair and then pspell_save_wordlist() to save the wordlist along with the replacement pairs.

pspell_config_repl() should be used on a config before calling pspell_new_config().

参数

dictionary_link

file

The file should be writable by whoever PHP runs as (e.g. nobody).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 pspell_config_repl()

<?php
$pspell_config = pspell_config_create("en");
pspell_config_personal($pspell_config, "/var/dictionaries/custom.pws");
pspell_config_repl($pspell_config, "/var/dictionaries/custom.repl");
$pspell_link = pspell_new_config($pspell_config);
pspell_check($pspell_link, "thecat");
?>

注释

Note:

This function will not work unless you have pspell .11.2 and aspell .32.5 or later.

pspell_config_personal
pspell_config_runtogether
Pspell 函数


Consider run-together words as valid compounds

pspell_config_repl
pspell_config_save_repl
Pspell 函数
PHP Manual

pspell_config_runtogether

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

pspell_config_runtogether — Consider run-together words as valid compounds

说明

bool pspell_config_runtogether ( int $dictionary_link , bool $flag )

This function determines whether run-together words will be treated as legal compounds. That is, "thecat" will be a legal compound, although there should be a space between the two words. Changing this setting only affects the results returned by pspell_check(); pspell_suggest() will still return suggestions.

pspell_config_runtogether() should be used on a config before calling pspell_new_config().

参数

dictionary_link

flag

TRUE if run-together words should be treated as legal compounds, FALSE otherwise.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 pspell_config_runtogether()

<?php
$pspell_config = pspell_config_create("en");
pspell_config_runtogether($pspell_config, true);
$pspell_link = pspell_new_config($pspell_config);
pspell_check($pspell_link, "thecat");
?>

pspell_config_repl
pspell_config_save_repl
Pspell 函数


Determine whether to save a replacement pairs list along with the wordlist

pspell_config_runtogether
pspell_new_config
Pspell 函数
PHP Manual

pspell_config_save_repl

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

pspell_config_save_repl — Determine whether to save a replacement pairs list along with the wordlist

说明

bool pspell_config_save_repl ( int $dictionary_link , bool $flag )

pspell_config_save_repl() determines whether pspell_save_wordlist() will save the replacement pairs along with the wordlist. Usually there is no need to use this function because if pspell_config_repl() is used, the replacement pairs will be saved by pspell_save_wordlist() anyway, and if it is not, the replacement pairs will not be saved.

pspell_config_save_repl() should be used on a config before calling pspell_new_config().

参数

dictionary_link

flag

TRUE if replacement pairs should be saved, FALSE otherwise.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note:

This function will not work unless you have pspell .11.2 and aspell .32.5 or later.

pspell_config_runtogether
pspell_new_config
Pspell 函数


Load a new dictionary with settings based on a given config

pspell_config_save_repl
pspell_new_personal
Pspell 函数
PHP Manual

pspell_new_config

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

pspell_new_config — Load a new dictionary with settings based on a given config

说明

int pspell_new_config ( int $config )

pspell_new_config() opens up a new dictionary with settings specified in a config, created with pspell_config_create() and modified with pspell_config_*() functions. This method provides you with the most flexibility and has all the functionality provided by pspell_new() and pspell_new_personal().

参数

config

The config parameter is the one returned by pspell_config_create() when the config was created.

返回值

Returns a dictionary link identifier on success.

范例

Example #1 pspell_new_config()

<?php
$pspell_config = pspell_config_create("en");
pspell_config_personal($pspell_config, "/var/dictionaries/custom.pws");
pspell_config_repl($pspell_config, "/var/dictionaries/custom.repl");
$pspell_link = pspell_new_config($pspell_config);
?>

pspell_config_save_repl
pspell_new_personal
Pspell 函数


Load a new dictionary with personal wordlist

pspell_new_config
pspell_new
Pspell 函数
PHP Manual

pspell_new_personal

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

pspell_new_personal — Load a new dictionary with personal wordlist

说明

int pspell_new_personal ( string $personal , string $language [, string $spelling [, string $jargon [, string $encoding [, int $mode = 0 ]]]] )

pspell_new_personal() opens up a new dictionary with a personal wordlist. The wordlist can be modified and saved with pspell_save_wordlist(), if desired. However, the replacement pairs are not saved. In order to save replacement pairs, you should create a config using pspell_config_create(), set the personal wordlist file with pspell_config_personal(), set the file for replacement pairs with pspell_config_repl(), and open a new dictionary with pspell_new_config().

For more information and examples, check out inline manual pspell website:» http://aspell.net/.

参数

personal

The file where words added to the personal list will be stored. It should be an absolute filename beginning with '/' because otherwise it will be relative to $HOME, which is "/root" for most systems, and is probably not what you want.

language

The language code which consists of the two letter ISO 639 language code and an optional two letter ISO 3166 country code after a dash or underscore.

spelling

The requested spelling for languages with more than one spelling such as English. Known values are 'american', 'british', and 'canadian'.

jargon

Extra information to distinguish two different words lists that have the same language and spelling parameters.

encoding

The encoding that words are expected to be in. Valid values are utf-8, iso8859-*, koi8-r, viscii, cp1252, machine unsigned 16, machine unsigned 32.

mode

The mode in which spellchecker will work. There are several modes available:

  • PSPELL_FAST - Fast mode (least number of suggestions)
  • PSPELL_NORMAL - Normal mode (more suggestions)
  • PSPELL_BAD_SPELLERS - Slow mode (a lot of suggestions)
  • PSPELL_RUN_TOGETHER - Consider run-together words as legal compounds. That is, "thecat" will be a legal compound, although there should be a space between the two words. Changing this setting only affects the results returned by pspell_check(); pspell_suggest() will still return suggestions.
Mode is a bitmask constructed from different constants listed above. However, PSPELL_FAST, PSPELL_NORMAL and PSPELL_BAD_SPELLERS are mutually exclusive, so you should select only one of them.

返回值

Returns the dictionary link identifier for use in other pspell functions.

范例

Example #1 pspell_new_personal()

<?php
$pspell_link = pspell_new_personal ("/var/dictionaries/custom.pws",
        "en", "", "", "", PSPELL_FAST|PSPELL_RUN_TOGETHER);
?>

pspell_new_config
pspell_new
Pspell 函数


Load a new dictionary

pspell_new_personal
pspell_save_wordlist
Pspell 函数
PHP Manual

pspell_new

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

pspell_new — Load a new dictionary

说明

int pspell_new ( string $language [, string $spelling [, string $jargon [, string $encoding [, int $mode = 0 ]]]] )

pspell_new() opens up a new dictionary and returns the dictionary link identifier for use in other pspell functions.

For more information and examples, check out inline manual pspell website:» http://aspell.net/.

参数

language

The language parameter is the language code which consists of the two letter ISO 639 language code and an optional two letter ISO 3166 country code after a dash or underscore.

spelling

The spelling parameter is the requested spelling for languages with more than one spelling such as English. Known values are 'american', 'british', and 'canadian'.

jargon

The jargon parameter contains extra information to distinguish two different words lists that have the same language and spelling parameters.

encoding

The encoding parameter is the encoding that words are expected to be in. Valid values are 'utf-8', 'iso8859-*', 'koi8-r', 'viscii', 'cp1252', 'machine unsigned 16', 'machine unsigned 32'. This parameter is largely untested, so be careful when using.

mode

The mode parameter is the mode in which spellchecker will work. There are several modes available:

  • PSPELL_FAST - Fast mode (least number of suggestions)
  • PSPELL_NORMAL - Normal mode (more suggestions)
  • PSPELL_BAD_SPELLERS - Slow mode (a lot of suggestions)
  • PSPELL_RUN_TOGETHER - Consider run-together words as legal compounds. That is, "thecat" will be a legal compound, although there should be a space between the two words. Changing this setting only affects the results returned by pspell_check(); pspell_suggest() will still return suggestions.
Mode is a bitmask constructed from different constants listed above. However, PSPELL_FAST, PSPELL_NORMAL and PSPELL_BAD_SPELLERS are mutually exclusive, so you should select only one of them.

返回值

Returns the dictionary link identifier on success 或者在失败时返回 FALSE.

范例

Example #1 pspell_new()

<?php
$pspell_link = pspell_new("en", "", "", "",
                           (PSPELL_FAST|PSPELL_RUN_TOGETHER));
?>

pspell_new_personal
pspell_save_wordlist
Pspell 函数


Save the personal wordlist to a file

pspell_new
pspell_store_replacement
Pspell 函数
PHP Manual

pspell_save_wordlist

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

pspell_save_wordlist — Save the personal wordlist to a file

说明

bool pspell_save_wordlist ( int $dictionary_link )

pspell_save_wordlist() saves the personal wordlist from the current session. The location of files to be saved specified with pspell_config_personal() and (optionally) pspell_config_repl().

参数

dictionary_link

A dictionary link identifier opened with pspell_new_personal().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 pspell_add_to_personal()

<?php
$pspell_config = pspell_config_create("en");
pspell_config_personal($pspell_config, "/tmp/dicts/newdict");
$pspell_link = pspell_new_config($pspell_config);

pspell_add_to_personal($pspell_link, "Vlad");
pspell_save_wordlist($pspell_link);
?>

注释

Note:

This function will not work unless you have pspell .11.2 and aspell .32.5 or later.

pspell_new
pspell_store_replacement
Pspell 函数


Store a replacement pair for a word

pspell_save_wordlist
pspell_suggest
Pspell 函数
PHP Manual

pspell_store_replacement

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

pspell_store_replacement — Store a replacement pair for a word

说明

bool pspell_store_replacement ( int $dictionary_link , string $misspelled , string $correct )

pspell_store_replacement() stores a replacement pair for a word, so that replacement can be returned by pspell_suggest() later. In order to be able to take advantage of this function, you have to use pspell_new_personal() to open the dictionary. In order to permanently save the replacement pair, you have to use pspell_config_personal() and pspell_config_repl() to set the path where to save your custom wordlists, and then use pspell_save_wordlist() for the changes to be written to disk.

参数

dictionary_link

A dictionary link identifier, opened with pspell_new_personal()

misspelled

The misspelled word.

correct

The fixed spelling for the misspelled word.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 pspell_store_replacement()

<?php
$pspell_config = pspell_config_create("en");
pspell_config_personal($pspell_config, "/var/dictionaries/custom.pws");
pspell_config_repl($pspell_config, "/var/dictionaries/custom.repl");
$pspell_link = pspell_new_config($pspell_config);

pspell_store_replacement($pspell_link, $misspelled, $correct);
pspell_save_wordlist($pspell_link);
?>

注释

Note:

This function will not work unless you have pspell .11.2 and aspell .32.5 or later.

pspell_save_wordlist
pspell_suggest
Pspell 函数


Suggest spellings of a word

pspell_store_replacement
Recode
Pspell 函数
PHP Manual

pspell_suggest

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

pspell_suggest — Suggest spellings of a word

说明

array pspell_suggest ( int $dictionary_link , string $word )

pspell_suggest() returns an array of possible spellings for the given word.

参数

dictionary_link

word

The tested word.

返回值

Returns an array of possible spellings.

范例

Example #1 pspell_suggest() example

<?php
$pspell_link = pspell_new("en");

if (!pspell_check($pspell_link, "testt")) {
    $suggestions = pspell_suggest($pspell_link, "testt");

    foreach ($suggestions as $suggestion) {
        echo "Possible spelling: $suggestion<br />";
    }
}
?>

pspell_store_replacement
Recode
Pspell 函数


GNU Recode

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Recode 函数
    • recode_file — Recode from file to file according to recode request
    • recode_string — Recode a string according to a recode request
    • recode — 别名 recode_string
pspell_suggest
简介
国际化与字符编码支持


简介

This module contains an interface to the GNU Recode library. The GNU Recode library converts files between various coded character sets and surface encodings. When this cannot be achieved exactly, it may get rid of the offending characters or fall back on approximations. The library recognises or produces nearly 150 different character sets and is able to convert files between almost any pair. Most » RFC 1345 character sets are supported.

Note: 此扩展在 Windows 平台上不可用。

Recode
安装／配置
Recode


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Recode


需求

You must have GNU Recode 3.5 or higher installed on your system. You can download the package from » http://directory.fsf.org/All_GNU_Packages/recode.html.

Warning

The Recode library version 3.6 adds weird characters behind converted strings under certain circumstances. Thus it's safer to use Recode v3.5 or one of the available alternatives like the iconv or mbstring extension.

安装／配置
安装
安装／配置


安装

To be able to use the functions defined in this module you must compile your PHP interpreter using the --with-recode[=DIR] option.

Warning

Crashes and startup problems of PHP may be encountered when loading the recode as extension after loading any extension of mysql or imap. Loading the recode before those extension has proved to fix the problem. This is due a technical problem that both the c-client library used by imap and recode have their own hash_lookup() function and both mysql and recode have their own hash_insert function.

Warning

IMAP，recode，YAZ 和 Cyrus 扩展不能同时使用，因为它们共享了相同 的内部符号。注意：Yaz 2.0 及以上版本不存在此问题。

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
Recode 函数
Recode


Recode 函数

Table of Contents

  • recode_file — Recode from file to file according to recode request
  • recode_string — Recode a string according to a recode request
  • recode — 别名 recode_string
预定义常量
recode_file
Recode


Recode from file to file according to recode request

Recode 函数
recode_string
Recode 函数
PHP Manual

recode_file

(PHP 4, PHP 5, PHP 7)

recode_file — Recode from file to file according to recode request

说明

bool recode_file ( string $request , resource $input , resource $output )

Recode the file referenced by file handle input into the file referenced by file handle output according to the recode request.

参数

request

The desired recode request type

input

A local file handle resource for the input

output

A local file handle resource for the output

返回值

Returns FALSE, if unable to comply, TRUE otherwise.

范例

Example #1 Basic recode_file() example

<?php
$input = fopen('input.txt', 'r');
$output = fopen('output.txt', 'w');
recode_file("us..flat", $input, $output);
?>

注释

This function does not currently process file handles referencing remote files (URLs). Both file handles must refer to local files.

参见

  • fopen() - 打开文件或者 URL

Recode 函数
recode_string
Recode 函数


Recode a string according to a recode request

recode_file
recode
Recode 函数
PHP Manual

recode_string

(PHP 4, PHP 5, PHP 7)

recode_string — Recode a string according to a recode request

说明

string recode_string ( string $request , string $string )

Recode the string string according to the recode request request.

参数

request

The desired recode request type

string

The string to be recoded

返回值

Returns the recoded string or FALSE, if unable to perform the recode request.

范例

Example #1 Basic recode_string() example

<?php
echo recode_string("us..flat", "The following character has a diacritical mark: á");
?>

注释

A simple recode request may be "lat1..iso646-de".

参见

  • The GNU Recode documentation of your installation for detailed instructions about recode requests.

recode_file
recode
Recode 函数


别名 recode_string

recode_string
图像生成和处理
Recode 函数
PHP Manual

recode

(PHP 4, PHP 5, PHP 7)

recode — 别名 recode_string()

说明

此函数是该函数的别名： recode_string().

recode_string
图像生成和处理
Recode 函数


图像生成和处理

  • Cairo
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Cairo 函数
    • Cairo — The Cairo class
    • CairoContext — The CairoContext class
    • CairoException — The CairoException class
    • CairoStatus — The CairoStatus class
    • CairoSurface — The CairoSurface class
    • CairoSvgSurface — Svg Surface Backend
    • CairoImageSurface — The CairoImageSurface class
    • CairoPdfSurface — The CairoPdfSurface class
    • CairoPsSurface — The CairoPsSurface class
    • CairoSurfaceType — The CairoSurfaceType class
    • CairoFontFace — The CairoFontFace class
    • CairoFontOptions — The CairoFontOptions class
    • CairoFontSlant — The CairoFontSlant class
    • CairoFontType — The CairoFontType class
    • CairoFontWeight — The CairoFontWeight class
    • CairoScaledFont — The CairoScaledFont class
    • CairoToyFontFace — The CairoToyFontFace class
    • CairoPatternType — The CairoPatternType class
    • CairoPattern — The CairoPattern class
    • CairoGradientPattern — The CairoGradientPattern class
    • CairoSolidPattern — The CairoSolidPattern class
    • CairoSurfacePattern — The CairoSurfacePattern class
    • CairoLinearGradient — The CairoLinearGradient class
    • CairoRadialGradient — The CairoRadialGradient class
    • CairoAntialias — The CairoAntialias class
    • CairoContent — The CairoContent class
    • CairoExtend — The CairoExtend class
    • CairoFormat — The CairoFormat class
    • CairoFillRule — The CairoFillRule class
    • CairoFilter — The CairoFilter class
    • CairoHintMetrics — The CairoHintMetrics class
    • CairoHintStyle — The CairoHintStyle class
    • CairoLineCap — The CairoLineCap class
    • CairoLineJoin — The CairoLineJoin class
    • CairoMatrix — The CairoMatrix class
    • CairoOperator — The CairoOperator class
    • CairoPath — The CairoPath class
    • CairoPsLevel — The CairoPsLevel class
    • CairoSubpixelOrder — The CairoSubpixelOrder class
    • CairoSvgVersion — The CairoSvgVersion class
  • Exif — 可交换图像信息
    • 简介
    • 安装／配置
    • 预定义常量
    • Exif 函数
  • GD — 图像处理和 GD
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • GD 和图像处理 函数
  • Gmagick
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Gmagick — The Gmagick class
    • GmagickDraw — The GmagickDraw class
    • GmagickPixel — The GmagickPixel class
  • ImageMagick — 图像处理(ImageMagick)
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Imagick — The Imagick class
    • ImagickDraw — The ImagickDraw class
    • ImagickPixel — The ImagickPixel class
    • ImagickPixelIterator — The ImagickPixelIterator class
recode
Cairo
函数参考


Cairo

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • Cairo 函数
    • cairo_create — Returns a new CairoContext object on the requested surface.
    • cairo_font_face_get_type — Description
    • cairo_font_face_status — Description
    • cairo_font_options_create — Description
    • cairo_font_options_equal — Description
    • cairo_font_options_get_antialias — Description
    • cairo_font_options_get_hint_metrics — Description
    • cairo_font_options_get_hint_style — Description
    • cairo_font_options_get_subpixel_order — Description
    • cairo_font_options_hash — Description
    • cairo_font_options_merge — Description
    • cairo_font_options_set_antialias — Description
    • cairo_font_options_set_hint_metrics — Description
    • cairo_font_options_set_hint_style — Description
    • cairo_font_options_set_subpixel_order — Description
    • cairo_font_options_status — Description
    • cairo_format_stride_for_width — Description
    • cairo_image_surface_create_for_data — Description
    • cairo_image_surface_create_from_png — Description
    • cairo_image_surface_create — Description
    • cairo_image_surface_get_data — Description
    • cairo_image_surface_get_format — Description
    • cairo_image_surface_get_height — Description
    • cairo_image_surface_get_stride — Description
    • cairo_image_surface_get_width — Description
    • cairo_matrix_create_scale — 别名 CairoMatrix::initScale
    • cairo_matrix_create_translate — 别名 CairoMatrix::initTranslate
    • cairo_matrix_invert — Description
    • cairo_matrix_multiply — Description
    • cairo_matrix_rotate — Description
    • cairo_matrix_transform_distance — Description
    • cairo_matrix_transform_point — Description
    • cairo_matrix_translate — Description
    • cairo_pattern_add_color_stop_rgb — Description
    • cairo_pattern_add_color_stop_rgba — Description
    • cairo_pattern_create_for_surface — Description
    • cairo_pattern_create_linear — Description
    • cairo_pattern_create_radial — Description
    • cairo_pattern_create_rgb — Description
    • cairo_pattern_create_rgba — Description
    • cairo_pattern_get_color_stop_count — Description
    • cairo_pattern_get_color_stop_rgba — Description
    • cairo_pattern_get_extend — Description
    • cairo_pattern_get_filter — Description
    • cairo_pattern_get_linear_points — Description
    • cairo_pattern_get_matrix — Description
    • cairo_pattern_get_radial_circles — Description
    • cairo_pattern_get_rgba — Description
    • cairo_pattern_get_surface — Description
    • cairo_pattern_get_type — Description
    • cairo_pattern_set_extend — Description
    • cairo_pattern_set_filter — Description
    • cairo_pattern_set_matrix — Description
    • cairo_pattern_status — Description
    • cairo_pdf_surface_create — Description
    • cairo_pdf_surface_set_size — Description
    • cairo_ps_get_levels — Description
    • cairo_ps_level_to_string — Description
    • cairo_ps_surface_create — Description
    • cairo_ps_surface_dsc_begin_page_setup — Description
    • cairo_ps_surface_dsc_begin_setup — Description
    • cairo_ps_surface_dsc_comment — Description
    • cairo_ps_surface_get_eps — Description
    • cairo_ps_surface_restrict_to_level — Description
    • cairo_ps_surface_set_eps — Description
    • cairo_ps_surface_set_size — Description
    • cairo_scaled_font_create — Description
    • cairo_scaled_font_extents — Description
    • cairo_scaled_font_get_ctm — Description
    • cairo_scaled_font_get_font_face — Description
    • cairo_scaled_font_get_font_matrix — Description
    • cairo_scaled_font_get_font_options — Description
    • cairo_scaled_font_get_scale_matrix — Description
    • cairo_scaled_font_get_type — Description
    • cairo_scaled_font_glyph_extents — Description
    • cairo_scaled_font_status — Description
    • cairo_scaled_font_text_extents — Description
    • cairo_surface_copy_page — Description
    • cairo_surface_create_similar — Description
    • cairo_surface_finish — Description
    • cairo_surface_flush — Description
    • cairo_surface_get_content — Description
    • cairo_surface_get_device_offset — Description
    • cairo_surface_get_font_options — Description
    • cairo_surface_get_type — Description
    • cairo_surface_mark_dirty_rectangle — Description
    • cairo_surface_mark_dirty — Description
    • cairo_surface_set_device_offset — Description
    • cairo_surface_set_fallback_resolution — Description
    • cairo_surface_show_page — Description
    • cairo_surface_status — Description
    • cairo_surface_write_to_png — Description
    • cairo_svg_surface_create — Description
    • cairo_svg_surface_restrict_to_version — Description
    • cairo_svg_version_to_string — Description
  • Cairo — The Cairo class
    • Cairo::availableFonts — Retrieves the availables font types
    • Cairo::availableSurfaces — Retrieves all available surfaces
    • Cairo::statusToString — Retrieves the current status as string
    • Cairo::version — Retrives cairo's library version
    • Cairo::versionString — Retrieves cairo version as string
  • CairoContext — The CairoContext class
    • CairoContext::appendPath — Appends a path to current path
    • CairoContext::arc — Adds a circular arc
    • CairoContext::arcNegative — Adds a negative arc
    • CairoContext::clip — Establishes a new clip region
    • CairoContext::clipExtents — Computes the area inside the current clip
    • CairoContext::clipPreserve — Establishes a new clip region from the current clip
    • CairoContext::clipRectangleList — Retrieves the current clip as a list of rectangles
    • CairoContext::closePath — Closes the current path
    • CairoContext::__construct — Creates a new CairoContext
    • CairoContext::copyPage — Emits the current page
    • CairoContext::copyPath — Creates a copy of the current path
    • CairoContext::copyPathFlat — Gets a flattened copy of the current path
    • CairoContext::curveTo — Adds a curve
    • CairoContext::deviceToUser — Transform a coordinate
    • CairoContext::deviceToUserDistance — Transform a distance
    • CairoContext::fill — Fills the current path
    • CairoContext::fillExtents — Computes the filled area
    • CairoContext::fillPreserve — Fills and preserve the current path
    • CairoContext::fontExtents — Get the font extents
    • CairoContext::getAntialias — Retrives the current antialias mode
    • CairoContext::getCurrentPoint — The getCurrentPoint purpose
    • CairoContext::getDash — The getDash purpose
    • CairoContext::getDashCount — The getDashCount purpose
    • CairoContext::getFillRule — The getFillRule purpose
    • CairoContext::getFontFace — The getFontFace purpose
    • CairoContext::getFontMatrix — The getFontMatrix purpose
    • CairoContext::getFontOptions — The getFontOptions purpose
    • CairoContext::getGroupTarget — The getGroupTarget purpose
    • CairoContext::getLineCap — The getLineCap purpose
    • CairoContext::getLineJoin — The getLineJoin purpose
    • CairoContext::getLineWidth — The getLineWidth purpose
    • CairoContext::getMatrix — The getMatrix purpose
    • CairoContext::getMiterLimit — The getMiterLimit purpose
    • CairoContext::getOperator — The getOperator purpose
    • CairoContext::getScaledFont — The getScaledFont purpose
    • CairoContext::getSource — The getSource purpose
    • CairoContext::getTarget — The getTarget purpose
    • CairoContext::getTolerance — The getTolerance purpose
    • CairoContext::glyphPath — The glyphPath purpose
    • CairoContext::hasCurrentPoint — The hasCurrentPoint purpose
    • CairoContext::identityMatrix — The identityMatrix purpose
    • CairoContext::inFill — The inFill purpose
    • CairoContext::inStroke — The inStroke purpose
    • CairoContext::lineTo — The lineTo purpose
    • CairoContext::mask — The mask purpose
    • CairoContext::maskSurface — The maskSurface purpose
    • CairoContext::moveTo — The moveTo purpose
    • CairoContext::newPath — The newPath purpose
    • CairoContext::newSubPath — The newSubPath purpose
    • CairoContext::paint — The paint purpose
    • CairoContext::paintWithAlpha — The paintWithAlpha purpose
    • CairoContext::pathExtents — The pathExtents purpose
    • CairoContext::popGroup — The popGroup purpose
    • CairoContext::popGroupToSource — The popGroupToSource purpose
    • CairoContext::pushGroup — The pushGroup purpose
    • CairoContext::pushGroupWithContent — The pushGroupWithContent purpose
    • CairoContext::rectangle — The rectangle purpose
    • CairoContext::relCurveTo — The relCurveTo purpose
    • CairoContext::relLineTo — The relLineTo purpose
    • CairoContext::relMoveTo — The relMoveTo purpose
    • CairoContext::resetClip — The resetClip purpose
    • CairoContext::restore — The restore purpose
    • CairoContext::rotate — The rotate purpose
    • CairoContext::save — The save purpose
    • CairoContext::scale — The scale purpose
    • CairoContext::selectFontFace — The selectFontFace purpose
    • CairoContext::setAntialias — The setAntialias purpose
    • CairoContext::setDash — The setDash purpose
    • CairoContext::setFillRule — The setFillRule purpose
    • CairoContext::setFontFace — The setFontFace purpose
    • CairoContext::setFontMatrix — The setFontMatrix purpose
    • CairoContext::setFontOptions — The setFontOptions purpose
    • CairoContext::setFontSize — The setFontSize purpose
    • CairoContext::setLineCap — The setLineCap purpose
    • CairoContext::setLineJoin — The setLineJoin purpose
    • CairoContext::setLineWidth — The setLineWidth purpose
    • CairoContext::setMatrix — The setMatrix purpose
    • CairoContext::setMiterLimit — The setMiterLimit purpose
    • CairoContext::setOperator — The setOperator purpose
    • CairoContext::setScaledFont — The setScaledFont purpose
    • CairoContext::setSource — The setSource purpose
    • CairoContext::setSourceRGB — The setSourceRGB purpose
    • CairoContext::setSourceRGBA — The setSourceRGBA purpose
    • CairoContext::setSourceSurface — The setSourceSurface purpose
    • CairoContext::setTolerance — The setTolerance purpose
    • CairoContext::showPage — The showPage purpose
    • CairoContext::showText — The showText purpose
    • CairoContext::status — The status purpose
    • CairoContext::stroke — The stroke purpose
    • CairoContext::strokeExtents — The strokeExtents purpose
    • CairoContext::strokePreserve — The strokePreserve purpose
    • CairoContext::textExtents — The textExtents purpose
    • CairoContext::textPath — The textPath purpose
    • CairoContext::transform — The transform purpose
    • CairoContext::translate — The translate purpose
    • CairoContext::userToDevice — The userToDevice purpose
    • CairoContext::userToDeviceDistance — The userToDeviceDistance purpose
  • CairoException — The CairoException class
  • CairoStatus — The CairoStatus class
  • CairoSurface — The CairoSurface class
    • CairoSurface::__construct — The __construct purpose
    • CairoSurface::copyPage — The copyPage purpose
    • CairoSurface::createSimilar — The createSimilar purpose
    • CairoSurface::finish — The finish purpose
    • CairoSurface::flush — The flush purpose
    • CairoSurface::getContent — The getContent purpose
    • CairoSurface::getDeviceOffset — The getDeviceOffset purpose
    • CairoSurface::getFontOptions — The getFontOptions purpose
    • CairoSurface::getType — The getType purpose
    • CairoSurface::markDirty — The markDirty purpose
    • CairoSurface::markDirtyRectangle — The markDirtyRectangle purpose
    • CairoSurface::setDeviceOffset — The setDeviceOffset purpose
    • CairoSurface::setFallbackResolution — The setFallbackResolution purpose
    • CairoSurface::showPage — The showPage purpose
    • CairoSurface::status — The status purpose
    • CairoSurface::writeToPng — The writeToPng purpose
  • CairoSvgSurface — Svg Surface Backend
    • CairoSvgSurface::__construct — The __construct purpose
    • CairoSvgSurface::getVersions — Used to retrieve a list of supported SVG versions
    • CairoSvgSurface::restrictToVersion — The restrictToVersion purpose
    • CairoSvgSurface::versionToString — The versionToString purpose
  • CairoImageSurface — The CairoImageSurface class
    • CairoImageSurface::__construct — Creates a new CairoImageSurface
    • CairoImageSurface::createForData — The createForData purpose
    • CairoImageSurface::createFromPng — Creates a new CairoImageSurface form a png image file
    • CairoImageSurface::getData — Gets the image data as string
    • CairoImageSurface::getFormat — Get the image format
    • CairoImageSurface::getHeight — Retrieves the height of the CairoImageSurface
    • CairoImageSurface::getStride — The getStride purpose
    • CairoImageSurface::getWidth — Retrieves the width of the CairoImageSurface
  • CairoPdfSurface — The CairoPdfSurface class
    • CairoPdfSurface::__construct — The __construct purpose
    • CairoPdfSurface::setSize — The setSize purpose
  • CairoPsSurface — The CairoPsSurface class
    • CairoPsSurface::__construct — The __construct purpose
    • CairoPsSurface::dscBeginPageSetup — The dscBeginPageSetup purpose
    • CairoPsSurface::dscBeginSetup — The dscBeginSetup purpose
    • CairoPsSurface::dscComment — The dscComment purpose
    • CairoPsSurface::getEps — The getEps purpose
    • CairoPsSurface::getLevels — The getLevels purpose
    • CairoPsSurface::levelToString — The levelToString purpose
    • CairoPsSurface::restrictToLevel — The restrictToLevel purpose
    • CairoPsSurface::setEps — The setEps purpose
    • CairoPsSurface::setSize — The setSize purpose
  • CairoSurfaceType — The CairoSurfaceType class
  • CairoFontFace — The CairoFontFace class
    • CairoFontFace::__construct — Creates a new CairoFontFace object
    • CairoFontFace::getType — Retrieves the font face type
    • CairoFontFace::status — Check for CairoFontFace errors
  • CairoFontOptions — The CairoFontOptions class
    • CairoFontOptions::__construct — The __construct purpose
    • CairoFontOptions::equal — The equal purpose
    • CairoFontOptions::getAntialias — The getAntialias purpose
    • CairoFontOptions::getHintMetrics — The getHintMetrics purpose
    • CairoFontOptions::getHintStyle — The getHintStyle purpose
    • CairoFontOptions::getSubpixelOrder — The getSubpixelOrder purpose
    • CairoFontOptions::hash — The hash purpose
    • CairoFontOptions::merge — The merge purpose
    • CairoFontOptions::setAntialias — The setAntialias purpose
    • CairoFontOptions::setHintMetrics — The setHintMetrics purpose
    • CairoFontOptions::setHintStyle — The setHintStyle purpose
    • CairoFontOptions::setSubpixelOrder — The setSubpixelOrder purpose
    • CairoFontOptions::status — The status purpose
  • CairoFontSlant — The CairoFontSlant class
  • CairoFontType — The CairoFontType class
  • CairoFontWeight — The CairoFontWeight class
  • CairoScaledFont — The CairoScaledFont class
    • CairoScaledFont::__construct — The __construct purpose
    • CairoScaledFont::extents — The extents purpose
    • CairoScaledFont::getCtm — The getCtm purpose
    • CairoScaledFont::getFontFace — The getFontFace purpose
    • CairoScaledFont::getFontMatrix — The getFontMatrix purpose
    • CairoScaledFont::getFontOptions — The getFontOptions purpose
    • CairoScaledFont::getScaleMatrix — The getScaleMatrix purpose
    • CairoScaledFont::getType — The getType purpose
    • CairoScaledFont::glyphExtents — The glyphExtents purpose
    • CairoScaledFont::status — The status purpose
    • CairoScaledFont::textExtents — The textExtents purpose
  • CairoToyFontFace — The CairoToyFontFace class
  • CairoPatternType — The CairoPatternType class
  • CairoPattern — The CairoPattern class
    • CairoPattern::__construct — The __construct purpose
    • CairoPattern::getMatrix — The getMatrix purpose
    • CairoPattern::getType — The getType purpose
    • CairoPattern::setMatrix — The setMatrix purpose
    • CairoPattern::status — The status purpose
  • CairoGradientPattern — The CairoGradientPattern class
    • CairoGradientPattern::addColorStopRgb — The addColorStopRgb purpose
    • CairoGradientPattern::addColorStopRgba — The addColorStopRgba purpose
    • CairoGradientPattern::getColorStopCount — The getColorStopCount purpose
    • CairoGradientPattern::getColorStopRgba — The getColorStopRgba purpose
    • CairoGradientPattern::getExtend — The getExtend purpose
    • CairoGradientPattern::setExtend — The setExtend purpose
  • CairoSolidPattern — The CairoSolidPattern class
    • CairoSolidPattern::__construct — The __construct purpose
    • CairoSolidPattern::getRgba — The getRgba purpose
  • CairoSurfacePattern — The CairoSurfacePattern class
    • CairoSurfacePattern::__construct — The __construct purpose
    • CairoSurfacePattern::getExtend — The getExtend purpose
    • CairoSurfacePattern::getFilter — The getFilter purpose
    • CairoSurfacePattern::getSurface — The getSurface purpose
    • CairoSurfacePattern::setExtend — The setExtend purpose
    • CairoSurfacePattern::setFilter — The setFilter purpose
  • CairoLinearGradient — The CairoLinearGradient class
    • CairoLinearGradient::__construct — The __construct purpose
    • CairoLinearGradient::getPoints — The getPoints purpose
  • CairoRadialGradient — The CairoRadialGradient class
    • CairoRadialGradient::__construct — The __construct purpose
    • CairoRadialGradient::getCircles — The getCircles purpose
  • CairoAntialias — The CairoAntialias class
  • CairoContent — The CairoContent class
  • CairoExtend — The CairoExtend class
  • CairoFormat — The CairoFormat class
    • CairoFormat::strideForWidth — Provides an appropiate stride to use
  • CairoFillRule — The CairoFillRule class
  • CairoFilter — The CairoFilter class
  • CairoHintMetrics — The CairoHintMetrics class
  • CairoHintStyle — The CairoHintStyle class
  • CairoLineCap — The CairoLineCap class
  • CairoLineJoin — The CairoLineJoin class
  • CairoMatrix — The CairoMatrix class
    • CairoMatrix::__construct — Creates a new CairoMatrix object
    • CairoMatrix::initIdentity — Creates a new identity matrix
    • CairoMatrix::initRotate — Creates a new rotated matrix
    • CairoMatrix::initScale — Creates a new scaling matrix
    • CairoMatrix::initTranslate — Creates a new translation matrix
    • CairoMatrix::invert — The invert purpose
    • CairoMatrix::multiply — The multiply purpose
    • CairoMatrix::rotate — The rotate purpose
    • CairoMatrix::scale — Applies scaling to a matrix
    • CairoMatrix::transformDistance — The transformDistance purpose
    • CairoMatrix::transformPoint — The transformPoint purpose
    • CairoMatrix::translate — The translate purpose
  • CairoOperator — The CairoOperator class
  • CairoPath — The CairoPath class
  • CairoPsLevel — The CairoPsLevel class
  • CairoSubpixelOrder — The CairoSubpixelOrder class
  • CairoSvgVersion — The CairoSvgVersion class
图像生成和处理
简介
图像生成和处理


简介

Cairo is a native PHP extension to create and modify graphics using the Cairo Graphics Library.

The Cairo Graphics Library is a 2D library written in C with support for multiple output devices. Currently supported output targets include the X Window System, Quartz, Win32, image buffers, PostScript, PDF, and SVG file output. Experimental backends include OpenGL (through glitz), XCB, BeOS, OS/2, and DirectFB. The library also has support for two types of text manipulation and layout. The "toy" API provides demo quality support, and the glyphs API, although full-featured, works best with a helper library such as pango. Font backend support includes FreeType, Quartz, Win32, and User fonts.

There are two types of computer graphics, vector and raster. Raster graphics are the representation of images as an array of pixels. Vector graphics use geometrical primitives such as points, lines, curves or polygons to represent images. The primitives are created using mathematical equations. The Cairo Graphics Library takes a vector approach to graphics, allowing smaller size, infinite zooming, and moving, scaling and rotating without degrading image quality.

Operations in the cairo graphics library including stroking and filling cubic Bézier splines, transforming and compositing translucent images, and antialiased text rendering. All drawing operations can be transformed by any affine transformation (scale, rotation, shear, and others) This is very similiar to drawing operations for PostScript and PDF drawing.

The Cairo PHP Extension aims to provide support for all officially supported font backends and surface backends, as well as expose all available functionality in cairo to PHP users.

Cairo
安装／配置
Cairo


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Cairo


需求

Cairo is only available for PHP 5.2+ and PHP 5.3+ The extension also requires the cairo graphics library version 1.4 or higher. The cairo graphics library uses an even and odd numbering scheme to denote stable and unstable library versions. Both unstable and stable versions can be used with the extension, but conditional support for new features is determined by the stable version below the unstable version in use. The latest cairo release can be found at » http://cairographics.org/.

The binary files used for the windows compiles can be found at » http://cairographics.org/download/ along with the project files used to create them.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/cairo.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

Notes specific to installation on Windows

Binary builds of the extension can be found at » http://cairographics.org/download/. Download the correct zip file, place php_cairo.dll in the extensions directory, and enable it via the php.ini file in use. Please be sure the PHP minor version (5.2, 5.3) match, the thread safety (Thread Safe TS or Non-Thread Safe NTS), the architecture (x86 or x64), and the compiler version (VC6 or VC9) match or the extension will not load.

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

CAIRO_STATUS_SUCCESS (integer)
CAIRO_STATUS_NO_MEMORY (integer)
CAIRO_STATUS_INVALID_RESTORE (integer)
CAIRO_STATUS_INVALID_POP_GROUP (integer)
CAIRO_STATUS_NO_CURRENT_POINT (integer)
CAIRO_STATUS_INVALID_MATRIX (integer)
CAIRO_STATUS_INVALID_STATUS (integer)
CAIRO_STATUS_NULL_POINTER (integer)
CAIRO_STATUS_INVALID_STRING (integer)
CAIRO_STATUS_INVALID_PATH_DATA (integer)
CAIRO_STATUS_READ_ERROR (integer)
CAIRO_STATUS_WRITE_ERROR (integer)
CAIRO_STATUS_SURFACE_FINISHED (integer)
CAIRO_STATUS_SURFACE_TYPE_MISMATCH (integer)
CAIRO_STATUS_PATTERN_TYPE_MISMATCH (integer)
CAIRO_STATUS_INVALID_CONTENT (integer)
CAIRO_STATUS_INVALID_FORMAT (integer)
CAIRO_STATUS_INVALID_VISUAL (integer)
CAIRO_STATUS_FILE_NOT_FOUND (integer)
CAIRO_STATUS_INVALID_DASH (integer)
CAIRO_STATUS_INVALID_DSC_COMMENT (integer)
CAIRO_STATUS_INVALID_INDEX (integer)
CAIRO_STATUS_CLIP_NOT_REPRESENTABLE (integer)
CAIRO_STATUS_TEMP_FILE_ERROR (integer)
CAIRO_STATUS_INVALID_STRIDE (integer)
CAIRO_ANTIALIAS_DEFAULT (integer)
CAIRO_ANTIALIAS_NONE (integer)
CAIRO_ANTIALIAS_GRAY (integer)
CAIRO_ANTIALIAS_SUBPIXEL (integer)
CAIRO_SUBPIXEL_ORDER_DEFAULT (integer)
CAIRO_SUBPIXEL_ORDER_RGB (integer)
CAIRO_SUBPIXEL_ORDER_BGR (integer)
CAIRO_SUBPIXEL_ORDER_VRGB (integer)
CAIRO_SUBPIXEL_ORDER_VBGR (integer)
CAIRO_FILL_RULE_WINDING (integer)
CAIRO_FILL_RULE_EVEN_ODD (integer)
CAIRO_LINE_CAP_BUTT (integer)
CAIRO_LINE_CAP_ROUND (integer)
CAIRO_LINE_CAP_SQUARE (integer)
CAIRO_LINE_JOIN_MITER (integer)
CAIRO_LINE_JOIN_ROUND (integer)
CAIRO_LINE_JOIN_BEVEL (integer)
CAIRO_OPERATOR_CLEAR (integer)
CAIRO_OPERATOR_SOURCE (integer)
CAIRO_OPERATOR_OVER (integer)
CAIRO_OPERATOR_IN (integer)
CAIRO_OPERATOR_OUT (integer)
CAIRO_OPERATOR_ATOP (integer)
CAIRO_OPERATOR_DEST (integer)
CAIRO_OPERATOR_DEST_OVER (integer)
CAIRO_OPERATOR_DEST_IN (integer)
CAIRO_OPERATOR_DEST_OUT (integer)
CAIRO_OPERATOR_DEST_ATOP (integer)
CAIRO_OPERATOR_XOR (integer)
CAIRO_OPERATOR_ADD (integer)
CAIRO_OPERATOR_SATURATE (integer)
CAIRO_PATTERN_TYPE_SOLID (integer)
CAIRO_PATTERN_TYPE_SURFACE (integer)
CAIRO_PATTERN_TYPE_LINEAR (integer)
CAIRO_PATTERN_TYPE_RADIAL (integer)
CAIRO_EXTEND_NONE (integer)
CAIRO_EXTEND_REPEAT (integer)
CAIRO_EXTEND_REFLECT (integer)
CAIRO_EXTEND_PAD (integer)
CAIRO_FILTER_FAST (integer)
CAIRO_FILTER_GOOD (integer)
CAIRO_FILTER_BEST (integer)
CAIRO_FILTER_NEAREST (integer)
CAIRO_FILTER_BILINEAR (integer)
CAIRO_FILTER_GAUSSIAN (integer)
CAIRO_HINT_STYLE_DEFAULT (integer)
CAIRO_HINT_STYLE_NONE (integer)
CAIRO_HINT_STYLE_SLIGHT (integer)
CAIRO_HINT_STYLE_MEDIUM (integer)
CAIRO_HINT_STYLE_FULL (integer)
CAIRO_HINT_METRICS_DEFAULT (integer)
CAIRO_HINT_METRICS_OFF (integer)
CAIRO_HINT_METRICS_ON (integer)
CAIRO_FONT_TYPE_TOY (integer)
CAIRO_FONT_TYPE_FT (integer)
CAIRO_FONT_TYPE_WIN32 (integer)
CAIRO_FONT_TYPE_QUARTZ (integer)
CAIRO_FONT_SLANT_NORMAL (integer)
CAIRO_FONT_SLANT_ITALIC (integer)
CAIRO_FONT_SLANT_OBLIQUE (integer)
CAIRO_FONT_WEIGHT_NORMAL (integer)
CAIRO_FONT_WEIGHT_BOLD (integer)
CAIRO_CONTENT_COLOR (integer)
CAIRO_CONTENT_ALPHA (integer)
CAIRO_CONTENT_COLOR_ALPHA (integer)
CAIRO_SURFACE_TYPE_IMAGE (integer)
CAIRO_SURFACE_TYPE_PDF (integer)
CAIRO_SURFACE_TYPE_PS (integer)
CAIRO_SURFACE_TYPE_XLIB (integer)
CAIRO_SURFACE_TYPE_XCB (integer)
CAIRO_SURFACE_TYPE_GLITZ (integer)
CAIRO_SURFACE_TYPE_QUARTZ (integer)
CAIRO_SURFACE_TYPE_WIN32 (integer)
CAIRO_SURFACE_TYPE_BEOS (integer)
CAIRO_SURFACE_TYPE_DIRECTFB (integer)
CAIRO_SURFACE_TYPE_SVG (integer)
CAIRO_SURFACE_TYPE_OS2 (integer)
CAIRO_SURFACE_TYPE_WIN32_PRINTING (integer)
CAIRO_SURFACE_TYPE_QUARTZ_IMAGE (integer)
CAIRO_FORMAT_ARGB32 (integer)
CAIRO_FORMAT_RGB24 (integer)
CAIRO_FORMAT_A8 (integer)
CAIRO_FORMAT_A1 (integer)
CAIRO_PS_LEVEL_2 (integer)
CAIRO_PS_LEVEL_3 (integer)
CAIRO_SVG_VERSION_1_1 (integer)
CAIRO_SVG_VERSION_1_2 (integer)

资源类型
范例
Cairo


范例

Description here...

Example #1 Cairo Example

<?php

/* ... */

?>

以上例程的输出类似于：

...
预定义常量
Cairo 函数
Cairo


Cairo 函数

Table of Contents

  • cairo_create — Returns a new CairoContext object on the requested surface.
  • cairo_font_face_get_type — Description
  • cairo_font_face_status — Description
  • cairo_font_options_create — Description
  • cairo_font_options_equal — Description
  • cairo_font_options_get_antialias — Description
  • cairo_font_options_get_hint_metrics — Description
  • cairo_font_options_get_hint_style — Description
  • cairo_font_options_get_subpixel_order — Description
  • cairo_font_options_hash — Description
  • cairo_font_options_merge — Description
  • cairo_font_options_set_antialias — Description
  • cairo_font_options_set_hint_metrics — Description
  • cairo_font_options_set_hint_style — Description
  • cairo_font_options_set_subpixel_order — Description
  • cairo_font_options_status — Description
  • cairo_format_stride_for_width — Description
  • cairo_image_surface_create_for_data — Description
  • cairo_image_surface_create_from_png — Description
  • cairo_image_surface_create — Description
  • cairo_image_surface_get_data — Description
  • cairo_image_surface_get_format — Description
  • cairo_image_surface_get_height — Description
  • cairo_image_surface_get_stride — Description
  • cairo_image_surface_get_width — Description
  • cairo_matrix_create_scale — 别名 CairoMatrix::initScale
  • cairo_matrix_create_translate — 别名 CairoMatrix::initTranslate
  • cairo_matrix_invert — Description
  • cairo_matrix_multiply — Description
  • cairo_matrix_rotate — Description
  • cairo_matrix_transform_distance — Description
  • cairo_matrix_transform_point — Description
  • cairo_matrix_translate — Description
  • cairo_pattern_add_color_stop_rgb — Description
  • cairo_pattern_add_color_stop_rgba — Description
  • cairo_pattern_create_for_surface — Description
  • cairo_pattern_create_linear — Description
  • cairo_pattern_create_radial — Description
  • cairo_pattern_create_rgb — Description
  • cairo_pattern_create_rgba — Description
  • cairo_pattern_get_color_stop_count — Description
  • cairo_pattern_get_color_stop_rgba — Description
  • cairo_pattern_get_extend — Description
  • cairo_pattern_get_filter — Description
  • cairo_pattern_get_linear_points — Description
  • cairo_pattern_get_matrix — Description
  • cairo_pattern_get_radial_circles — Description
  • cairo_pattern_get_rgba — Description
  • cairo_pattern_get_surface — Description
  • cairo_pattern_get_type — Description
  • cairo_pattern_set_extend — Description
  • cairo_pattern_set_filter — Description
  • cairo_pattern_set_matrix — Description
  • cairo_pattern_status — Description
  • cairo_pdf_surface_create — Description
  • cairo_pdf_surface_set_size — Description
  • cairo_ps_get_levels — Description
  • cairo_ps_level_to_string — Description
  • cairo_ps_surface_create — Description
  • cairo_ps_surface_dsc_begin_page_setup — Description
  • cairo_ps_surface_dsc_begin_setup — Description
  • cairo_ps_surface_dsc_comment — Description
  • cairo_ps_surface_get_eps — Description
  • cairo_ps_surface_restrict_to_level — Description
  • cairo_ps_surface_set_eps — Description
  • cairo_ps_surface_set_size — Description
  • cairo_scaled_font_create — Description
  • cairo_scaled_font_extents — Description
  • cairo_scaled_font_get_ctm — Description
  • cairo_scaled_font_get_font_face — Description
  • cairo_scaled_font_get_font_matrix — Description
  • cairo_scaled_font_get_font_options — Description
  • cairo_scaled_font_get_scale_matrix — Description
  • cairo_scaled_font_get_type — Description
  • cairo_scaled_font_glyph_extents — Description
  • cairo_scaled_font_status — Description
  • cairo_scaled_font_text_extents — Description
  • cairo_surface_copy_page — Description
  • cairo_surface_create_similar — Description
  • cairo_surface_finish — Description
  • cairo_surface_flush — Description
  • cairo_surface_get_content — Description
  • cairo_surface_get_device_offset — Description
  • cairo_surface_get_font_options — Description
  • cairo_surface_get_type — Description
  • cairo_surface_mark_dirty_rectangle — Description
  • cairo_surface_mark_dirty — Description
  • cairo_surface_set_device_offset — Description
  • cairo_surface_set_fallback_resolution — Description
  • cairo_surface_show_page — Description
  • cairo_surface_status — Description
  • cairo_surface_write_to_png — Description
  • cairo_svg_surface_create — Description
  • cairo_svg_surface_restrict_to_version — Description
  • cairo_svg_version_to_string — Description
范例
cairo_create
Cairo


Returns a new CairoContext object on the requested surface.

Cairo 函数
cairo_font_face_get_type
Cairo 函数
PHP Manual

cairo_create

(PECL cairo >= 0.1.0)

cairo_create — Returns a new CairoContext object on the requested surface.

说明

CairoContext cairo_create ( CairoSurface $surface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_create() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

Cairo 函数
cairo_font_face_get_type
Cairo 函数


Description

cairo_create
cairo_font_face_status
Cairo 函数
PHP Manual

cairo_font_face_get_type

(PECL cairo >= 0.1.0)

cairo_font_face_get_type — Description

说明

int cairo_font_face_get_type ( CairoFontFace $fontface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

fontface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_font_face_get_type() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_create
cairo_font_face_status
Cairo 函数


Description

cairo_font_face_get_type
cairo_font_options_create
Cairo 函数
PHP Manual

cairo_font_face_status

(PECL cairo >= 0.1.0)

cairo_font_face_status — Description

说明

int cairo_font_face_status ( CairoFontFace $fontface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

fontface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_font_face_status() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_font_face_get_type
cairo_font_options_create
Cairo 函数


Description

cairo_font_face_status
cairo_font_options_equal
Cairo 函数
PHP Manual

cairo_font_options_create

(PECL cairo >= 0.1.0)

cairo_font_options_create — Description

说明

CairoFontOptions cairo_font_options_create ( void )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_font_options_create() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_font_face_status
cairo_font_options_equal
Cairo 函数


Description

cairo_font_options_create
cairo_font_options_get_antialias
Cairo 函数
PHP Manual

cairo_font_options_equal

(PECL cairo >= 0.1.0)

cairo_font_options_equal — Description

说明

bool cairo_font_options_equal ( CairoFontOptions $options , CairoFontOptions $other )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

options

Description...

other

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_font_options_equal() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_font_options_create
cairo_font_options_get_antialias
Cairo 函数


Description

cairo_font_options_equal
cairo_font_options_get_hint_metrics
Cairo 函数
PHP Manual

cairo_font_options_get_antialias

(PECL cairo >= 0.1.0)

cairo_font_options_get_antialias — Description

说明

int cairo_font_options_get_antialias ( CairoFontOptions $options )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

options

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_font_options_get_antialias() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_font_options_equal
cairo_font_options_get_hint_metrics
Cairo 函数


Description

cairo_font_options_get_antialias
cairo_font_options_get_hint_style
Cairo 函数
PHP Manual

cairo_font_options_get_hint_metrics

(PECL cairo >= 0.1.0)

cairo_font_options_get_hint_metrics — Description

说明

int cairo_font_options_get_hint_metrics ( CairoFontOptions $options )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

options

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_font_options_get_hint_metrics() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_font_options_get_antialias
cairo_font_options_get_hint_style
Cairo 函数


Description

cairo_font_options_get_hint_metrics
cairo_font_options_get_subpixel_order
Cairo 函数
PHP Manual

cairo_font_options_get_hint_style

(PECL cairo >= 0.1.0)

cairo_font_options_get_hint_style — Description

说明

int cairo_font_options_get_hint_style ( CairoFontOptions $options )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

options

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_font_options_get_hint_style() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_font_options_get_hint_metrics
cairo_font_options_get_subpixel_order
Cairo 函数


Description

cairo_font_options_get_hint_style
cairo_font_options_hash
Cairo 函数
PHP Manual

cairo_font_options_get_subpixel_order

(PECL cairo >= 0.1.0)

cairo_font_options_get_subpixel_order — Description

说明

int cairo_font_options_get_subpixel_order ( CairoFontOptions $options )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

options

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_font_options_get_subpixel_order() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_font_options_get_hint_style
cairo_font_options_hash
Cairo 函数


Description

cairo_font_options_get_subpixel_order
cairo_font_options_merge
Cairo 函数
PHP Manual

cairo_font_options_hash

(PECL cairo >= 0.1.0)

cairo_font_options_hash — Description

说明

int cairo_font_options_hash ( CairoFontOptions $options )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

options

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_font_options_hash() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_font_options_get_subpixel_order
cairo_font_options_merge
Cairo 函数


Description

cairo_font_options_hash
cairo_font_options_set_antialias
Cairo 函数
PHP Manual

cairo_font_options_merge

(PECL cairo >= 0.1.0)

cairo_font_options_merge — Description

说明

void cairo_font_options_merge ( CairoFontOptions $options , CairoFontOptions $other )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

options

Description...

other

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_font_options_merge() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_font_options_hash
cairo_font_options_set_antialias
Cairo 函数


Description

cairo_font_options_merge
cairo_font_options_set_hint_metrics
Cairo 函数
PHP Manual

cairo_font_options_set_antialias

(PECL cairo >= 0.1.0)

cairo_font_options_set_antialias — Description

说明

void cairo_font_options_set_antialias ( CairoFontOptions $options , int $antialias )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

options

Description...

antialias

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_font_options_set_antialias() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_font_options_merge
cairo_font_options_set_hint_metrics
Cairo 函数


Description

cairo_font_options_set_antialias
cairo_font_options_set_hint_style
Cairo 函数
PHP Manual

cairo_font_options_set_hint_metrics

(PECL cairo >= 0.1.0)

cairo_font_options_set_hint_metrics — Description

说明

void cairo_font_options_set_hint_metrics ( CairoFontOptions $options , int $hint_metrics )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

options

Description...

hint_metrics

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_font_options_set_hint_metrics() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_font_options_set_antialias
cairo_font_options_set_hint_style
Cairo 函数


Description

cairo_font_options_set_hint_metrics
cairo_font_options_set_subpixel_order
Cairo 函数
PHP Manual

cairo_font_options_set_hint_style

(PECL cairo >= 0.1.0)

cairo_font_options_set_hint_style — Description

说明

void cairo_font_options_set_hint_style ( CairoFontOptions $options , int $hint_style )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

options

Description...

hint_style

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_font_options_set_hint_style() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_font_options_set_hint_metrics
cairo_font_options_set_subpixel_order
Cairo 函数


Description

cairo_font_options_set_hint_style
cairo_font_options_status
Cairo 函数
PHP Manual

cairo_font_options_set_subpixel_order

(PECL cairo >= 0.1.0)

cairo_font_options_set_subpixel_order — Description

说明

void cairo_font_options_set_subpixel_order ( CairoFontOptions $options , int $subpixel_order )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

options

Description...

subpixel_order

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_font_options_set_subpixel_order() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_font_options_set_hint_style
cairo_font_options_status
Cairo 函数


Description

cairo_font_options_set_subpixel_order
cairo_format_stride_for_width
Cairo 函数
PHP Manual

cairo_font_options_status

(PECL cairo >= 0.1.0)

cairo_font_options_status — Description

说明

int cairo_font_options_status ( CairoFontOptions $options )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

options

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_font_options_status() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_font_options_set_subpixel_order
cairo_format_stride_for_width
Cairo 函数


Description

cairo_font_options_status
cairo_image_surface_create_for_data
Cairo 函数
PHP Manual

cairo_format_stride_for_width

(PECL cairo >= 0.1.0)

cairo_format_stride_for_width — Description

说明

int cairo_format_stride_for_width ( int $format , int $width )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

format

Description...

width

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_format_stride_for_width() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_font_options_status
cairo_image_surface_create_for_data
Cairo 函数


Description

cairo_format_stride_for_width
cairo_image_surface_create_from_png
Cairo 函数
PHP Manual

cairo_image_surface_create_for_data

(PECL cairo >= 0.1.0)

cairo_image_surface_create_for_data — Description

说明

CairoImageSurface cairo_image_surface_create_for_data ( string $data , int $format , int $width , int $height [, int $stride = -1 ] )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

data

Description...

format

Description...

width

Description...

height

Description...

stride

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_image_surface_create_for_data() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_format_stride_for_width
cairo_image_surface_create_from_png
Cairo 函数


Description

cairo_image_surface_create_for_data
cairo_image_surface_create
Cairo 函数
PHP Manual

cairo_image_surface_create_from_png

(PECL cairo >= 0.1.0)

cairo_image_surface_create_from_png — Description

说明

CairoImageSurface cairo_image_surface_create_from_png ( string $file )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

file

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_image_surface_create_from_png() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_image_surface_create_for_data
cairo_image_surface_create
Cairo 函数


Description

cairo_image_surface_create_from_png
cairo_image_surface_get_data
Cairo 函数
PHP Manual

cairo_image_surface_create

(PECL cairo >= 0.1.0)

cairo_image_surface_create — Description

说明

CairoImageSurface cairo_image_surface_create ( int $format , int $width , int $height )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

format

Description...

width

Description...

height

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_image_surface_create() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_image_surface_create_from_png
cairo_image_surface_get_data
Cairo 函数


Description

cairo_image_surface_create
cairo_image_surface_get_format
Cairo 函数
PHP Manual

cairo_image_surface_get_data

(PECL cairo >= 0.1.0)

cairo_image_surface_get_data — Description

说明

string cairo_image_surface_get_data ( CairoImageSurface $surface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_image_surface_get_data() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_image_surface_create
cairo_image_surface_get_format
Cairo 函数


Description

cairo_image_surface_get_data
cairo_image_surface_get_height
Cairo 函数
PHP Manual

cairo_image_surface_get_format

(PECL cairo >= 0.1.0)

cairo_image_surface_get_format — Description

说明

int cairo_image_surface_get_format ( CairoImageSurface $surface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_image_surface_get_format() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_image_surface_get_data
cairo_image_surface_get_height
Cairo 函数


Description

cairo_image_surface_get_format
cairo_image_surface_get_stride
Cairo 函数
PHP Manual

cairo_image_surface_get_height

(PECL cairo >= 0.1.0)

cairo_image_surface_get_height — Description

说明

int cairo_image_surface_get_height ( CairoImageSurface $surface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_image_surface_get_height() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_image_surface_get_format
cairo_image_surface_get_stride
Cairo 函数


Description

cairo_image_surface_get_height
cairo_image_surface_get_width
Cairo 函数
PHP Manual

cairo_image_surface_get_stride

(PECL cairo >= 0.1.0)

cairo_image_surface_get_stride — Description

说明

int cairo_image_surface_get_stride ( CairoImageSurface $surface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_image_surface_get_stride() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_image_surface_get_height
cairo_image_surface_get_width
Cairo 函数


Description

cairo_image_surface_get_stride
cairo_matrix_create_scale
Cairo 函数
PHP Manual

cairo_image_surface_get_width

(PECL cairo >= 0.1.0)

cairo_image_surface_get_width — Description

说明

int cairo_image_surface_get_width ( CairoImageSurface $surface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_image_surface_get_width() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_image_surface_get_stride
cairo_matrix_create_scale
Cairo 函数


别名 CairoMatrix::initScale

cairo_image_surface_get_width
cairo_matrix_create_translate
Cairo 函数
PHP Manual

cairo_matrix_create_scale

(PECL cairo >= 0.1.0)

cairo_matrix_create_scale — 别名 CairoMatrix::initScale()

说明

此函数是该函数的别名： CairoMatrix::initScale().

此函数别名已废弃，仅为了向后兼容而保留。不建议使用此函数，因为将来会从 PHP 中移除。

cairo_image_surface_get_width
cairo_matrix_create_translate
Cairo 函数


别名 CairoMatrix::initTranslate

cairo_matrix_create_scale
cairo_matrix_invert
Cairo 函数
PHP Manual

cairo_matrix_create_translate

(PECL cairo >= 0.1.0)

cairo_matrix_create_translate — 别名 CairoMatrix::initTranslate()

说明

此函数是该函数的别名： CairoMatrix::initTranslate().

此函数别名已废弃，仅为了向后兼容而保留。不建议使用此函数，因为将来会从 PHP 中移除。

cairo_matrix_create_scale
cairo_matrix_invert
Cairo 函数


Description

cairo_matrix_create_translate
cairo_matrix_multiply
Cairo 函数
PHP Manual

cairo_matrix_invert

(PECL cairo >= 0.1.0)

cairo_matrix_invert — Description

说明

void cairo_matrix_invert ( CairoMatrix $matrix )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

matrix

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_matrix_invert() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_matrix_create_translate
cairo_matrix_multiply
Cairo 函数


Description

cairo_matrix_invert
cairo_matrix_rotate
Cairo 函数
PHP Manual

cairo_matrix_multiply

(PECL cairo >= 0.1.0)

cairo_matrix_multiply — Description

说明

CairoMatrix cairo_matrix_multiply ( CairoMatrix $matrix1 , CairoMatrix $matrix2 )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

matrix1

Description...

matrix2

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_matrix_multiply() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_matrix_invert
cairo_matrix_rotate
Cairo 函数


Description

cairo_matrix_multiply
cairo_matrix_transform_distance
Cairo 函数
PHP Manual

cairo_matrix_rotate

(PECL cairo >= 0.1.0)

cairo_matrix_rotate — Description

说明

void cairo_matrix_rotate ( CairoMatrix $matrix , float $radians )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

matrix

Description...

radians

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_matrix_rotate() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_matrix_multiply
cairo_matrix_transform_distance
Cairo 函数


Description

cairo_matrix_rotate
cairo_matrix_transform_point
Cairo 函数
PHP Manual

cairo_matrix_transform_distance

(PECL cairo >= 0.1.0)

cairo_matrix_transform_distance — Description

说明

array cairo_matrix_transform_distance ( CairoMatrix $matrix , float $dx , float $dy )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

matrix

Description...

dx

Description...

dy

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_matrix_transform_distance() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_matrix_rotate
cairo_matrix_transform_point
Cairo 函数


Description

cairo_matrix_transform_distance
cairo_matrix_translate
Cairo 函数
PHP Manual

cairo_matrix_transform_point

(PECL cairo >= 0.1.0)

cairo_matrix_transform_point — Description

说明

array cairo_matrix_transform_point ( CairoMatrix $matrix , float $dx , float $dy )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

matrix

Description...

dx

Description...

dy

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_matrix_transform_point() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_matrix_transform_distance
cairo_matrix_translate
Cairo 函数


Description

cairo_matrix_transform_point
cairo_pattern_add_color_stop_rgb
Cairo 函数
PHP Manual

cairo_matrix_translate

(PECL cairo >= 0.1.0)

cairo_matrix_translate — Description

说明

void cairo_matrix_translate ( CairoMatrix $matrix , float $tx , float $ty )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

matrix

Description...

tx

Description...

ty

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_matrix_translate() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_matrix_transform_point
cairo_pattern_add_color_stop_rgb
Cairo 函数


Description

cairo_matrix_translate
cairo_pattern_add_color_stop_rgba
Cairo 函数
PHP Manual

cairo_pattern_add_color_stop_rgb

(PECL cairo >= 0.1.0)

cairo_pattern_add_color_stop_rgb — Description

说明

void cairo_pattern_add_color_stop_rgb ( CairoGradientPattern $pattern , float $offset , float $red , float $green , float $blue )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

pattern

Description...

offset

Description...

red

Description...

green

Description...

blue

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pattern_add_color_stop_rgb() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_matrix_translate
cairo_pattern_add_color_stop_rgba
Cairo 函数


Description

cairo_pattern_add_color_stop_rgb
cairo_pattern_create_for_surface
Cairo 函数
PHP Manual

cairo_pattern_add_color_stop_rgba

(PECL cairo >= 0.1.0)

cairo_pattern_add_color_stop_rgba — Description

说明

void cairo_pattern_add_color_stop_rgba ( CairoGradientPattern $pattern , float $offset , float $red , float $green , float $blue , float $alpha )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

pattern

Description...

offset

Description...

red

Description...

green

Description...

blue

Description...

alpha

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pattern_add_color_stop_rgba() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pattern_add_color_stop_rgb
cairo_pattern_create_for_surface
Cairo 函数


Description

cairo_pattern_add_color_stop_rgba
cairo_pattern_create_linear
Cairo 函数
PHP Manual

cairo_pattern_create_for_surface

(PECL cairo >= 0.1.0)

cairo_pattern_create_for_surface — Description

说明

CairoPattern cairo_pattern_create_for_surface ( CairoSurface $surface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pattern_create_for_surface() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pattern_add_color_stop_rgba
cairo_pattern_create_linear
Cairo 函数


Description

cairo_pattern_create_for_surface
cairo_pattern_create_radial
Cairo 函数
PHP Manual

cairo_pattern_create_linear

(PECL cairo >= 0.1.0)

cairo_pattern_create_linear — Description

说明

CairoPattern cairo_pattern_create_linear ( float $x0 , float $y0 , float $x1 , float $y1 )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

x0

Description...

y0

Description...

x1

Description...

y1

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pattern_create_linear() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pattern_create_for_surface
cairo_pattern_create_radial
Cairo 函数


Description

cairo_pattern_create_linear
cairo_pattern_create_rgb
Cairo 函数
PHP Manual

cairo_pattern_create_radial

(PECL cairo >= 0.1.0)

cairo_pattern_create_radial — Description

说明

CairoPattern cairo_pattern_create_radial ( float $x0 , float $y0 , float $r0 , float $x1 , float $y1 , float $r1 )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

x0

Description...

y0

Description...

r0

Description...

x1

Description...

y1

Description...

r1

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pattern_create_radial() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pattern_create_linear
cairo_pattern_create_rgb
Cairo 函数


Description

cairo_pattern_create_radial
cairo_pattern_create_rgba
Cairo 函数
PHP Manual

cairo_pattern_create_rgb

(PECL cairo >= 0.1.0)

cairo_pattern_create_rgb — Description

说明

CairoPattern cairo_pattern_create_rgb ( float $red , float $green , float $blue )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

red

Description...

green

Description...

blue

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pattern_create_rgb() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pattern_create_radial
cairo_pattern_create_rgba
Cairo 函数


Description

cairo_pattern_create_rgb
cairo_pattern_get_color_stop_count
Cairo 函数
PHP Manual

cairo_pattern_create_rgba

(PECL cairo >= 0.1.0)

cairo_pattern_create_rgba — Description

说明

CairoPattern cairo_pattern_create_rgba ( float $red , float $green , float $blue , float $alpha )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

red

Description...

green

Description...

blue

Description...

alpha

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pattern_create_rgba() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pattern_create_rgb
cairo_pattern_get_color_stop_count
Cairo 函数


Description

cairo_pattern_create_rgba
cairo_pattern_get_color_stop_rgba
Cairo 函数
PHP Manual

cairo_pattern_get_color_stop_count

(PECL cairo >= 0.1.0)

cairo_pattern_get_color_stop_count — Description

说明

int cairo_pattern_get_color_stop_count ( CairoGradientPattern $pattern )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

pattern

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pattern_get_color_stop_count() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pattern_create_rgba
cairo_pattern_get_color_stop_rgba
Cairo 函数


Description

cairo_pattern_get_color_stop_count
cairo_pattern_get_extend
Cairo 函数
PHP Manual

cairo_pattern_get_color_stop_rgba

(PECL cairo >= 0.1.0)

cairo_pattern_get_color_stop_rgba — Description

说明

array cairo_pattern_get_color_stop_rgba ( CairoGradientPattern $pattern , int $index )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

pattern

Description...

index

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pattern_get_color_stop_rgba() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pattern_get_color_stop_count
cairo_pattern_get_extend
Cairo 函数


Description

cairo_pattern_get_color_stop_rgba
cairo_pattern_get_filter
Cairo 函数
PHP Manual

cairo_pattern_get_extend

(PECL cairo >= 0.1.0)

cairo_pattern_get_extend — Description

说明

int cairo_pattern_get_extend ( string $pattern )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

pattern

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pattern_get_extend() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pattern_get_color_stop_rgba
cairo_pattern_get_filter
Cairo 函数


Description

cairo_pattern_get_extend
cairo_pattern_get_linear_points
Cairo 函数
PHP Manual

cairo_pattern_get_filter

(PECL cairo >= 0.1.0)

cairo_pattern_get_filter — Description

说明

int cairo_pattern_get_filter ( CairoSurfacePattern $pattern )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

pattern

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pattern_get_filter() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pattern_get_extend
cairo_pattern_get_linear_points
Cairo 函数


Description

cairo_pattern_get_filter
cairo_pattern_get_matrix
Cairo 函数
PHP Manual

cairo_pattern_get_linear_points

(PECL cairo >= 0.1.0)

cairo_pattern_get_linear_points — Description

说明

array cairo_pattern_get_linear_points ( CairoLinearGradient $pattern )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

pattern

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pattern_get_linear_points() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pattern_get_filter
cairo_pattern_get_matrix
Cairo 函数


Description

cairo_pattern_get_linear_points
cairo_pattern_get_radial_circles
Cairo 函数
PHP Manual

cairo_pattern_get_matrix

(PECL cairo >= 0.1.0)

cairo_pattern_get_matrix — Description

说明

CairoMatrix cairo_pattern_get_matrix ( CairoPattern $pattern )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

pattern

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pattern_get_matrix() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pattern_get_linear_points
cairo_pattern_get_radial_circles
Cairo 函数


Description

cairo_pattern_get_matrix
cairo_pattern_get_rgba
Cairo 函数
PHP Manual

cairo_pattern_get_radial_circles

(PECL cairo >= 0.1.0)

cairo_pattern_get_radial_circles — Description

说明

array cairo_pattern_get_radial_circles ( CairoRadialGradient $pattern )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

pattern

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pattern_get_radial_circles() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pattern_get_matrix
cairo_pattern_get_rgba
Cairo 函数


Description

cairo_pattern_get_radial_circles
cairo_pattern_get_surface
Cairo 函数
PHP Manual

cairo_pattern_get_rgba

(PECL cairo >= 0.1.0)

cairo_pattern_get_rgba — Description

说明

array cairo_pattern_get_rgba ( CairoSolidPattern $pattern )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

pattern

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pattern_get_rgba() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pattern_get_radial_circles
cairo_pattern_get_surface
Cairo 函数


Description

cairo_pattern_get_rgba
cairo_pattern_get_type
Cairo 函数
PHP Manual

cairo_pattern_get_surface

(PECL cairo >= 0.1.0)

cairo_pattern_get_surface — Description

说明

CairoSurface cairo_pattern_get_surface ( CairoSurfacePattern $pattern )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

pattern

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pattern_get_surface() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pattern_get_rgba
cairo_pattern_get_type
Cairo 函数


Description

cairo_pattern_get_surface
cairo_pattern_set_extend
Cairo 函数
PHP Manual

cairo_pattern_get_type

(PECL cairo >= 0.1.0)

cairo_pattern_get_type — Description

说明

int cairo_pattern_get_type ( CairoPattern $pattern )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

pattern

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pattern_get_type() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pattern_get_surface
cairo_pattern_set_extend
Cairo 函数


Description

cairo_pattern_get_type
cairo_pattern_set_filter
Cairo 函数
PHP Manual

cairo_pattern_set_extend

(PECL cairo >= 0.1.0)

cairo_pattern_set_extend — Description

说明

void cairo_pattern_set_extend ( string $pattern , string $extend )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

pattern

Description...

extend

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pattern_set_extend() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pattern_get_type
cairo_pattern_set_filter
Cairo 函数


Description

cairo_pattern_set_extend
cairo_pattern_set_matrix
Cairo 函数
PHP Manual

cairo_pattern_set_filter

(PECL cairo >= 0.1.0)

cairo_pattern_set_filter — Description

说明

void cairo_pattern_set_filter ( CairoSurfacePattern $pattern , int $filter )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

pattern

Description...

filter

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pattern_set_filter() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pattern_set_extend
cairo_pattern_set_matrix
Cairo 函数


Description

cairo_pattern_set_filter
cairo_pattern_status
Cairo 函数
PHP Manual

cairo_pattern_set_matrix

(PECL cairo >= 0.1.0)

cairo_pattern_set_matrix — Description

说明

void cairo_pattern_set_matrix ( CairoPattern $pattern , CairoMatrix $matrix )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

pattern

Description...

matrix

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pattern_set_matrix() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pattern_set_filter
cairo_pattern_status
Cairo 函数


Description

cairo_pattern_set_matrix
cairo_pdf_surface_create
Cairo 函数
PHP Manual

cairo_pattern_status

(PECL cairo >= 0.1.0)

cairo_pattern_status — Description

说明

int cairo_pattern_status ( CairoPattern $pattern )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

pattern

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pattern_status() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pattern_set_matrix
cairo_pdf_surface_create
Cairo 函数


Description

cairo_pattern_status
cairo_pdf_surface_set_size
Cairo 函数
PHP Manual

cairo_pdf_surface_create

(PECL cairo >= 0.1.0)

cairo_pdf_surface_create — Description

说明

CairoPdfSurface cairo_pdf_surface_create ( string $file , float $width , float $height )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

file

Description...

width

Description...

height

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pdf_surface_create() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pattern_status
cairo_pdf_surface_set_size
Cairo 函数


Description

cairo_pdf_surface_create
cairo_ps_get_levels
Cairo 函数
PHP Manual

cairo_pdf_surface_set_size

(PECL cairo >= 0.1.0)

cairo_pdf_surface_set_size — Description

说明

void cairo_pdf_surface_set_size ( CairoPdfSurface $surface , float $width , float $height )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

width

Description...

height

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_pdf_surface_set_size() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pdf_surface_create
cairo_ps_get_levels
Cairo 函数


Description

cairo_pdf_surface_set_size
cairo_ps_level_to_string
Cairo 函数
PHP Manual

cairo_ps_get_levels

(PECL cairo >= 0.1.0)

cairo_ps_get_levels — Description

说明

array cairo_ps_get_levels ( void )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_ps_get_levels() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_pdf_surface_set_size
cairo_ps_level_to_string
Cairo 函数


Description

cairo_ps_get_levels
cairo_ps_surface_create
Cairo 函数
PHP Manual

cairo_ps_level_to_string

(PECL cairo >= 0.1.0)

cairo_ps_level_to_string — Description

说明

string cairo_ps_level_to_string ( int $level )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

level

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_ps_level_to_string() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_ps_get_levels
cairo_ps_surface_create
Cairo 函数


Description

cairo_ps_level_to_string
cairo_ps_surface_dsc_begin_page_setup
Cairo 函数
PHP Manual

cairo_ps_surface_create

(PECL cairo >= 0.1.0)

cairo_ps_surface_create — Description

说明

CairoPsSurface cairo_ps_surface_create ( string $file , float $width , float $height )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

file

Description...

width

Description...

height

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_ps_surface_create() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_ps_level_to_string
cairo_ps_surface_dsc_begin_page_setup
Cairo 函数


Description

cairo_ps_surface_create
cairo_ps_surface_dsc_begin_setup
Cairo 函数
PHP Manual

cairo_ps_surface_dsc_begin_page_setup

(PECL cairo >= 0.1.0)

cairo_ps_surface_dsc_begin_page_setup — Description

说明

void cairo_ps_surface_dsc_begin_page_setup ( CairoPsSurface $surface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_ps_surface_dsc_begin_page_setup() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_ps_surface_create
cairo_ps_surface_dsc_begin_setup
Cairo 函数


Description

cairo_ps_surface_dsc_begin_page_setup
cairo_ps_surface_dsc_comment
Cairo 函数
PHP Manual

cairo_ps_surface_dsc_begin_setup

(PECL cairo >= 0.1.0)

cairo_ps_surface_dsc_begin_setup — Description

说明

void cairo_ps_surface_dsc_begin_setup ( CairoPsSurface $surface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_ps_surface_dsc_begin_setup() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_ps_surface_dsc_begin_page_setup
cairo_ps_surface_dsc_comment
Cairo 函数


Description

cairo_ps_surface_dsc_begin_setup
cairo_ps_surface_get_eps
Cairo 函数
PHP Manual

cairo_ps_surface_dsc_comment

(PECL cairo >= 0.1.0)

cairo_ps_surface_dsc_comment — Description

说明

void cairo_ps_surface_dsc_comment ( CairoPsSurface $surface , string $comment )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

comment

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_ps_surface_dsc_comment() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_ps_surface_dsc_begin_setup
cairo_ps_surface_get_eps
Cairo 函数


Description

cairo_ps_surface_dsc_comment
cairo_ps_surface_restrict_to_level
Cairo 函数
PHP Manual

cairo_ps_surface_get_eps

(PECL cairo >= 0.1.0)

cairo_ps_surface_get_eps — Description

说明

bool cairo_ps_surface_get_eps ( CairoPsSurface $surface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_ps_surface_get_eps() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_ps_surface_dsc_comment
cairo_ps_surface_restrict_to_level
Cairo 函数


Description

cairo_ps_surface_get_eps
cairo_ps_surface_set_eps
Cairo 函数
PHP Manual

cairo_ps_surface_restrict_to_level

(PECL cairo >= 0.1.0)

cairo_ps_surface_restrict_to_level — Description

说明

void cairo_ps_surface_restrict_to_level ( CairoPsSurface $surface , int $level )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

level

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_ps_surface_restrict_to_level() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_ps_surface_get_eps
cairo_ps_surface_set_eps
Cairo 函数


Description

cairo_ps_surface_restrict_to_level
cairo_ps_surface_set_size
Cairo 函数
PHP Manual

cairo_ps_surface_set_eps

(PECL cairo >= 0.1.0)

cairo_ps_surface_set_eps — Description

说明

void cairo_ps_surface_set_eps ( CairoPsSurface $surface , bool $level )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

level

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_ps_surface_set_eps() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_ps_surface_restrict_to_level
cairo_ps_surface_set_size
Cairo 函数


Description

cairo_ps_surface_set_eps
cairo_scaled_font_create
Cairo 函数
PHP Manual

cairo_ps_surface_set_size

(PECL cairo >= 0.1.0)

cairo_ps_surface_set_size — Description

说明

void cairo_ps_surface_set_size ( CairoPsSurface $surface , float $width , float $height )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

width

Description...

height

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_ps_surface_set_size() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_ps_surface_set_eps
cairo_scaled_font_create
Cairo 函数


Description

cairo_ps_surface_set_size
cairo_scaled_font_extents
Cairo 函数
PHP Manual

cairo_scaled_font_create

(PECL cairo >= 0.1.0)

cairo_scaled_font_create — Description

说明

CairoScaledFont cairo_scaled_font_create ( CairoFontFace $fontface , CairoMatrix $matrix , CairoMatrix $ctm , CairoFontOptions $fontoptions )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

fontface

Description...

matrix

Description...

ctm

Description...

fontoptions

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_scaled_font_create() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_ps_surface_set_size
cairo_scaled_font_extents
Cairo 函数


Description

cairo_scaled_font_create
cairo_scaled_font_get_ctm
Cairo 函数
PHP Manual

cairo_scaled_font_extents

(PECL cairo >= 0.1.0)

cairo_scaled_font_extents — Description

说明

array cairo_scaled_font_extents ( CairoScaledFont $scaledfont )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

scaledfont

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_scaled_font_extents() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_scaled_font_create
cairo_scaled_font_get_ctm
Cairo 函数


Description

cairo_scaled_font_extents
cairo_scaled_font_get_font_face
Cairo 函数
PHP Manual

cairo_scaled_font_get_ctm

(PECL cairo >= 0.1.0)

cairo_scaled_font_get_ctm — Description

说明

CairoMatrix cairo_scaled_font_get_ctm ( CairoScaledFont $scaledfont )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

scaledfont

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_scaled_font_get_ctm() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_scaled_font_extents
cairo_scaled_font_get_font_face
Cairo 函数


Description

cairo_scaled_font_get_ctm
cairo_scaled_font_get_font_matrix
Cairo 函数
PHP Manual

cairo_scaled_font_get_font_face

(PECL cairo >= 0.1.0)

cairo_scaled_font_get_font_face — Description

说明

CairoFontFace cairo_scaled_font_get_font_face ( CairoScaledFont $scaledfont )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

scaledfont

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_scaled_font_get_font_face() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_scaled_font_get_ctm
cairo_scaled_font_get_font_matrix
Cairo 函数


Description

cairo_scaled_font_get_font_face
cairo_scaled_font_get_font_options
Cairo 函数
PHP Manual

cairo_scaled_font_get_font_matrix

(PECL cairo >= 0.1.0)

cairo_scaled_font_get_font_matrix — Description

说明

CairoFontOptions cairo_scaled_font_get_font_matrix ( CairoScaledFont $scaledfont )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

scaledfont

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_scaled_font_get_font_matrix() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_scaled_font_get_font_face
cairo_scaled_font_get_font_options
Cairo 函数


Description

cairo_scaled_font_get_font_matrix
cairo_scaled_font_get_scale_matrix
Cairo 函数
PHP Manual

cairo_scaled_font_get_font_options

(PECL cairo >= 0.1.0)

cairo_scaled_font_get_font_options — Description

说明

CairoFontOptions cairo_scaled_font_get_font_options ( CairoScaledFont $scaledfont )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

scaledfont

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_scaled_font_get_font_options() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_scaled_font_get_font_matrix
cairo_scaled_font_get_scale_matrix
Cairo 函数


Description

cairo_scaled_font_get_font_options
cairo_scaled_font_get_type
Cairo 函数
PHP Manual

cairo_scaled_font_get_scale_matrix

(PECL cairo >= 0.1.0)

cairo_scaled_font_get_scale_matrix — Description

说明

CairoMatrix cairo_scaled_font_get_scale_matrix ( CairoScaledFont $scaledfont )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

scaledfont

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_scaled_font_get_scale_matrix() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_scaled_font_get_font_options
cairo_scaled_font_get_type
Cairo 函数


Description

cairo_scaled_font_get_scale_matrix
cairo_scaled_font_glyph_extents
Cairo 函数
PHP Manual

cairo_scaled_font_get_type

(PECL cairo >= 0.1.0)

cairo_scaled_font_get_type — Description

说明

int cairo_scaled_font_get_type ( CairoScaledFont $scaledfont )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

scaledfont

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_scaled_font_get_type() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_scaled_font_get_scale_matrix
cairo_scaled_font_glyph_extents
Cairo 函数


Description

cairo_scaled_font_get_type
cairo_scaled_font_status
Cairo 函数
PHP Manual

cairo_scaled_font_glyph_extents

(PECL cairo >= 0.1.0)

cairo_scaled_font_glyph_extents — Description

说明

array cairo_scaled_font_glyph_extents ( CairoScaledFont $scaledfont , array $glyphs )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

scaledfont

Description...

glyphs

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_scaled_font_glyph_extents() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_scaled_font_get_type
cairo_scaled_font_status
Cairo 函数


Description

cairo_scaled_font_glyph_extents
cairo_scaled_font_text_extents
Cairo 函数
PHP Manual

cairo_scaled_font_status

(PECL cairo >= 0.1.0)

cairo_scaled_font_status — Description

说明

int cairo_scaled_font_status ( CairoScaledFont $scaledfont )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

scaledfont

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_scaled_font_status() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_scaled_font_glyph_extents
cairo_scaled_font_text_extents
Cairo 函数


Description

cairo_scaled_font_status
cairo_surface_copy_page
Cairo 函数
PHP Manual

cairo_scaled_font_text_extents

(PECL cairo >= 0.1.0)

cairo_scaled_font_text_extents — Description

说明

array cairo_scaled_font_text_extents ( CairoScaledFont $scaledfont , string $text )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

scaledfont

Description...

text

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_scaled_font_text_extents() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_scaled_font_status
cairo_surface_copy_page
Cairo 函数


Description

cairo_scaled_font_text_extents
cairo_surface_create_similar
Cairo 函数
PHP Manual

cairo_surface_copy_page

(PECL cairo >= 0.1.0)

cairo_surface_copy_page — Description

说明

void cairo_surface_copy_page ( CairoSurface $surface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_surface_copy_page() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_scaled_font_text_extents
cairo_surface_create_similar
Cairo 函数


Description

cairo_surface_copy_page
cairo_surface_finish
Cairo 函数
PHP Manual

cairo_surface_create_similar

(PECL cairo >= 0.1.0)

cairo_surface_create_similar — Description

说明

CairoSurface cairo_surface_create_similar ( CairoSurface $surface , int $content , float $width , float $height )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

content

Description...

width

Description...

height

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_surface_create_similar() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_surface_copy_page
cairo_surface_finish
Cairo 函数


Description

cairo_surface_create_similar
cairo_surface_flush
Cairo 函数
PHP Manual

cairo_surface_finish

(PECL cairo >= 0.1.0)

cairo_surface_finish — Description

说明

void cairo_surface_finish ( CairoSurface $surface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_surface_finish() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_surface_create_similar
cairo_surface_flush
Cairo 函数


Description

cairo_surface_finish
cairo_surface_get_content
Cairo 函数
PHP Manual

cairo_surface_flush

(PECL cairo >= 0.1.0)

cairo_surface_flush — Description

说明

void cairo_surface_flush ( CairoSurface $surface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_surface_flush() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_surface_finish
cairo_surface_get_content
Cairo 函数


Description

cairo_surface_flush
cairo_surface_get_device_offset
Cairo 函数
PHP Manual

cairo_surface_get_content

(PECL cairo >= 0.1.0)

cairo_surface_get_content — Description

说明

int cairo_surface_get_content ( CairoSurface $surface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_surface_get_content() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_surface_flush
cairo_surface_get_device_offset
Cairo 函数


Description

cairo_surface_get_content
cairo_surface_get_font_options
Cairo 函数
PHP Manual

cairo_surface_get_device_offset

(PECL cairo >= 0.1.0)

cairo_surface_get_device_offset — Description

说明

array cairo_surface_get_device_offset ( CairoSurface $surface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_surface_get_device_offset() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_surface_get_content
cairo_surface_get_font_options
Cairo 函数


Description

cairo_surface_get_device_offset
cairo_surface_get_type
Cairo 函数
PHP Manual

cairo_surface_get_font_options

(PECL cairo >= 0.1.0)

cairo_surface_get_font_options — Description

说明

CairoFontOptions cairo_surface_get_font_options ( CairoSurface $surface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_surface_get_font_options() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_surface_get_device_offset
cairo_surface_get_type
Cairo 函数


Description

cairo_surface_get_font_options
cairo_surface_mark_dirty_rectangle
Cairo 函数
PHP Manual

cairo_surface_get_type

(PECL cairo >= 0.1.0)

cairo_surface_get_type — Description

说明

int cairo_surface_get_type ( CairoSurface $surface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_surface_get_type() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_surface_get_font_options
cairo_surface_mark_dirty_rectangle
Cairo 函数


Description

cairo_surface_get_type
cairo_surface_mark_dirty
Cairo 函数
PHP Manual

cairo_surface_mark_dirty_rectangle

(PECL cairo >= 0.1.0)

cairo_surface_mark_dirty_rectangle — Description

说明

void cairo_surface_mark_dirty_rectangle ( CairoSurface $surface , float $x , float $y , float $width , float $height )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

x

Description...

y

Description...

width

Description...

height

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_surface_mark_dirty_rectangle() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_surface_get_type
cairo_surface_mark_dirty
Cairo 函数


Description

cairo_surface_mark_dirty_rectangle
cairo_surface_set_device_offset
Cairo 函数
PHP Manual

cairo_surface_mark_dirty

(PECL cairo >= 0.1.0)

cairo_surface_mark_dirty — Description

说明

void cairo_surface_mark_dirty ( CairoSurface $surface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_surface_mark_dirty() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_surface_mark_dirty_rectangle
cairo_surface_set_device_offset
Cairo 函数


Description

cairo_surface_mark_dirty
cairo_surface_set_fallback_resolution
Cairo 函数
PHP Manual

cairo_surface_set_device_offset

(PECL cairo >= 0.1.0)

cairo_surface_set_device_offset — Description

说明

void cairo_surface_set_device_offset ( CairoSurface $surface , float $x , float $y )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

x

Description...

y

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_surface_set_device_offset() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_surface_mark_dirty
cairo_surface_set_fallback_resolution
Cairo 函数


Description

cairo_surface_set_device_offset
cairo_surface_show_page
Cairo 函数
PHP Manual

cairo_surface_set_fallback_resolution

(PECL cairo >= 0.1.0)

cairo_surface_set_fallback_resolution — Description

说明

void cairo_surface_set_fallback_resolution ( CairoSurface $surface , float $x , float $y )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

x

Description...

y

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_surface_set_fallback_resolution() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_surface_set_device_offset
cairo_surface_show_page
Cairo 函数


Description

cairo_surface_set_fallback_resolution
cairo_surface_status
Cairo 函数
PHP Manual

cairo_surface_show_page

(PECL cairo >= 0.1.0)

cairo_surface_show_page — Description

说明

void cairo_surface_show_page ( CairoSurface $surface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_surface_show_page() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_surface_set_fallback_resolution
cairo_surface_status
Cairo 函数


Description

cairo_surface_show_page
cairo_surface_write_to_png
Cairo 函数
PHP Manual

cairo_surface_status

(PECL cairo >= 0.1.0)

cairo_surface_status — Description

说明

int cairo_surface_status ( CairoSurface $surface )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_surface_status() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_surface_show_page
cairo_surface_write_to_png
Cairo 函数


Description

cairo_surface_status
cairo_svg_surface_create
Cairo 函数
PHP Manual

cairo_surface_write_to_png

(PECL cairo >= 0.1.0)

cairo_surface_write_to_png — Description

说明

void cairo_surface_write_to_png ( CairoSurface $surface , resource $stream )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

stream

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_surface_write_to_png() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_surface_status
cairo_svg_surface_create
Cairo 函数


Description

cairo_surface_write_to_png
cairo_svg_surface_restrict_to_version
Cairo 函数
PHP Manual

cairo_svg_surface_create

(PECL cairo >= 0.1.0)

cairo_svg_surface_create — Description

说明

CairoSvgSurface cairo_svg_surface_create ( string $file , float $width , float $height )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

file

Description...

width

Description...

height

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_svg_surface_create() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_surface_write_to_png
cairo_svg_surface_restrict_to_version
Cairo 函数


Description

cairo_svg_surface_create
cairo_svg_version_to_string
Cairo 函数
PHP Manual

cairo_svg_surface_restrict_to_version

(PECL cairo >= 0.1.0)

cairo_svg_surface_restrict_to_version — Description

说明

void cairo_svg_surface_restrict_to_version ( CairoSvgSurface $surface , int $version )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

version

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_svg_surface_restrict_to_version() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_svg_surface_create
cairo_svg_version_to_string
Cairo 函数


Description

cairo_svg_surface_restrict_to_version
Cairo
Cairo 函数
PHP Manual

cairo_svg_version_to_string

(PECL cairo >= 0.1.0)

cairo_svg_version_to_string — Description

说明

string cairo_svg_version_to_string ( int $version )

The function description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

version

Description...

返回值

What is returned on success and failure

错误／异常

When does this function issue E_* level errors, and/or throw exceptions.

范例

Example #1 cairo_svg_version_to_string() example

Any text that describes the purpose of the example, or what goes on in the example should be here.

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

  • related function name here()

cairo_svg_surface_restrict_to_version
Cairo
Cairo 函数


The Cairo class

(PECL cairo >= 0.1.0)

简介

Simple class with some static helper methods.

类摘要

Cairo {
/* 方法 */
public static array availableFonts ( void )
public static array availableSurfaces ( void )
public static string statusToString ( int $status )
public static int version ( void )
public static string versionString ( void )
}

Table of Contents

  • Cairo::availableFonts — Retrieves the availables font types
  • Cairo::availableSurfaces — Retrieves all available surfaces
  • Cairo::statusToString — Retrieves the current status as string
  • Cairo::version — Retrives cairo's library version
  • Cairo::versionString — Retrieves cairo version as string
cairo_svg_version_to_string
Cairo::availableFonts
Cairo


Retrieves the availables font types

Cairo
Cairo::availableSurfaces
Cairo
PHP Manual

Cairo::availableFonts

cairo_available_fonts

(PECL cairo >= 0.1.0)

Cairo::availableFonts -- cairo_available_fonts — Retrieves the availables font types

说明

面向对象风格:

public static array Cairo::availableFonts ( void )

过程化风格:

array cairo_available_fonts ( void )

Returns an array with the available font backends

参数

此函数没有参数。

返回值

A list-type array with all available font backends.

范例

Example #1 面向对象风格

<?php

/* Object Oriented Style */
var_dump(Cairo::availableFonts());

?>

以上例程的输出类似于：

array(2) {
  [0]=>
  string(5) "WIN32"
  [1]=>
  string(4) "USER"
}

Example #2 过程化风格

<?php

/* Procedural style */
var_dump(cairo_available_fonts());

?>

以上例程的输出类似于：

array(2) {
  [0]=>
  string(5) "WIN32"
  [1]=>
  string(4) "USER"
}

参见

  • Cairo::availableSurfaces() - Retrieves all available surfaces

Cairo
Cairo::availableSurfaces
Cairo


Retrieves all available surfaces

Cairo::availableFonts
Cairo::statusToString
Cairo
PHP Manual

Cairo::availableSurfaces

cairo_available_surfaces

(PECL cairo >= 0.1.0)

Cairo::availableSurfaces -- cairo_available_surfaces — Retrieves all available surfaces

说明

面向对象风格 (method):

public static array Cairo::availableSurfaces ( void )

过程化风格:

array cairo_available_surfaces ( void )

Returns an array with the available surface backends

参数

此函数没有参数。

返回值

A list-type array with all available surface backends.

范例

Example #1 面向对象风格

<?php

/* Object Oriented style */
var_dump(Cairo::availableSurfaces());

?>

以上例程的输出类似于：

array(6) {
  [0]=>
  string(5) "IMAGE"
  [1]=>
  string(3) "PNG"
  [2]=>
  string(3) "PDF"
  [3]=>
  string(2) "PS"
  [4]=>
  string(3) "SVG"
  [5]=>
  string(5) "WIN32"
}

Example #2 过程化风格

<?php

/* Procedural style */
var_dump(cairo_available_surfaces());

?>

以上例程的输出类似于：

array(6) {
  [0]=>
  string(5) "IMAGE"
  [1]=>
  string(3) "PNG"
  [2]=>
  string(3) "PDF"
  [3]=>
  string(2) "PS"
  [4]=>
  string(3) "SVG"
  [5]=>
  string(5) "WIN32"
}

参见

  • Cairo::availableFonts() - Retrieves the availables font types

Cairo::availableFonts
Cairo::statusToString
Cairo


Retrieves the current status as string

Cairo::availableSurfaces
Cairo::version
Cairo
PHP Manual

Cairo::statusToString

cairo_status_to_string

(PECL cairo >= 0.1.0)

Cairo::statusToString -- cairo_status_to_string — Retrieves the current status as string

说明

面向对象风格 (method):

public static string Cairo::statusToString ( int $status )

过程化风格:

string cairo_status_to_string ( int $status )

Retrieves the current status as a readable string

参数

status

A valid status code given by cairo_status() or CairoContext::status()

返回值

A string containing the current status of a CairoContext object

范例

Example #1 面向对象风格

<?php
$surface = new CairoImageSurface(CairoFormat::ARGB32, 50, 50);
$context = new CairoContext($surface);

var_dump(Cairo::statusToString($context->status()));
?>

以上例程的输出类似于：

string(7) "success"

Example #2 过程化风格

<?php
$surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 50, 50);
$context = cairo_create($surface);

var_dump(cairo_status_to_string(cairo_status($context)));
?>

以上例程的输出类似于：

string(7) "success"

参见

  • CairoContext::status() - The status purpose

Cairo::availableSurfaces
Cairo::version
Cairo


Retrives cairo's library version

Cairo::statusToString
Cairo::versionString
Cairo
PHP Manual

Cairo::version

cairo_version

(PECL cairo >= 0.1.0)

Cairo::version -- cairo_version — Retrives cairo's library version

说明

面向对象风格 (method):

public static int Cairo::version ( void )

过程化风格:

int cairo_version ( void )

Retrieves the current version of the cairo library as an integer value

参数

此函数没有参数。

返回值

Current Cairo library version integer

范例

Example #1 面向对象风格

<?php
var_dump(Cairo::version());
?>

以上例程的输出类似于：

int(10808)

Example #2 过程化风格

<?php
var_dump(cairo_version());
?>

以上例程的输出类似于：

int(10808)

参见

  • Cairo::versionString() - Retrieves cairo version as string

Cairo::statusToString
Cairo::versionString
Cairo


Retrieves cairo version as string

Cairo::version
CairoContext
Cairo
PHP Manual

Cairo::versionString

cairo_version_string

(PECL cairo >= 0.1.0)

Cairo::versionString -- cairo_version_string — Retrieves cairo version as string

说明

面向对象风格 (method):

public static string Cairo::versionString ( void )

过程化风格:

string cairo_version_string ( void )

Retrieves the current cairo library version as a string.

参数

此函数没有参数。

返回值

Current Cairo library version string

范例

Example #1 面向对象风格

<?php

var_dump(Cairo::versionString());

?>

以上例程的输出类似于：

string(5) "1.8.8"

Example #2 过程化风格

<?php

var_dump(cairo_version_string());

?>

以上例程的输出类似于：

string(5) "1.8.8"

参见

  • Cairo::version() - Retrives cairo's library version

Cairo::version
CairoContext
Cairo


The CairoContext class

(PECL cairo >= 0.1.0)

简介

Context is the main object used when drawing with cairo. To draw with cairo, you create a CairoContext, set the target CairoSurface, and drawing options for the CairoContext, create shapes with functions . like CairoContext::moveTo() and CairoContext::lineTo(), and then draw shapes with CairoContext::stroke() or CairoContext::fill(). Contexts can be pushed to a stack via CairoContext::save(). They may then safely be changed, without loosing the current state. Use CairoContext::restore() to restore to the saved state.

类摘要

CairoContext {
/* 方法 */
public void appendPath ( CairoPath $path )
public void arc ( float $x , float $y , float $radius , float $angle1 , float $angle2 )
public void arcNegative ( float $x , float $y , float $radius , float $angle1 , float $angle2 )
public void clip ( void )
public array clipExtents ( void )
public void clipPreserve ( void )
public array clipRectangleList ( void )
public void closePath ( void )
public __construct ( CairoSurface $surface )
public void copyPage ( void )
public CairoPath copyPath ( void )
public CairoPath copyPathFlat ( void )
public void curveTo ( float $x1 , float $y1 , float $x2 , float $y2 , float $x3 , float $y3 )
public array deviceToUser ( float $x , float $y )
public array deviceToUserDistance ( float $x , float $y )
public void fill ( void )
public array fillExtents ( void )
public void fillPreserve ( void )
public array fontExtents ( void )
public int getAntialias ( void )
public array getCurrentPoint ( void )
public array getDash ( void )
public int getDashCount ( void )
public int getFillRule ( void )
public void getFontFace ( void )
public void getFontMatrix ( void )
public void getFontOptions ( void )
public void getGroupTarget ( void )
public int getLineCap ( void )
public int getLineJoin ( void )
public float getLineWidth ( void )
public void getMatrix ( void )
public float getMiterLimit ( void )
public int getOperator ( void )
public void getScaledFont ( void )
public void getSource ( void )
public void getTarget ( void )
public float getTolerance ( void )
public void glyphPath ( array $glyphs )
public bool hasCurrentPoint ( void )
public void identityMatrix ( void )
public bool inFill ( string $x , string $y )
public bool inStroke ( string $x , string $y )
public void lineTo ( string $x , string $y )
public void mask ( string $pattern )
public void maskSurface ( string $surface [, string $x [, string $y ]] )
public void moveTo ( string $x , string $y )
public void newPath ( void )
public void newSubPath ( void )
public void paint ( void )
public void paintWithAlpha ( string $alpha )
public array pathExtents ( void )
public void popGroup ( void )
public void popGroupToSource ( void )
public void pushGroup ( void )
public void pushGroupWithContent ( string $content )
public void rectangle ( string $x , string $y , string $width , string $height )
public void relCurveTo ( string $x1 , string $y1 , string $x2 , string $y2 , string $x3 , string $y3 )
public void relLineTo ( string $x , string $y )
public void relMoveTo ( string $x , string $y )
public void resetClip ( void )
public void restore ( void )
public void rotate ( string $angle )
public void save ( void )
public void scale ( string $x , string $y )
public void selectFontFace ( string $family [, string $slant [, string $weight ]] )
public void setAntialias ([ string $antialias ] )
public void setDash ( string $dashes [, string $offset ] )
public void setFillRule ( string $setting )
public void setFontFace ( CairoFontFace $fontface )
public void setFontMatrix ( string $matrix )
public void setFontOptions ( string $fontoptions )
public void setFontSize ( string $size )
public void setLineCap ( string $setting )
public void setLineJoin ( string $setting )
public void setLineWidth ( string $width )
public void setMatrix ( string $matrix )
public void setMiterLimit ( string $limit )
public void setOperator ( string $setting )
public void setScaledFont ( string $scaledfont )
public void setSource ( string $pattern )
public void setSourceRGB ( string $red , string $green , string $blue )
public void setSourceRGBA ( string $red , string $green , string $blue , string $alpha )
public void setSourceSurface ( string $surface [, string $x [, string $y ]] )
public void setTolerance ( string $tolerance )
public void showPage ( void )
public void showText ( string $text )
public int status ( void )
public void stroke ( void )
public array strokeExtents ( void )
public void strokePreserve ( void )
public array textExtents ( string $text )
public void textPath ( string $string )
public void transform ( string $matrix )
public void translate ( string $x , string $y )
public array userToDevice ( string $x , string $y )
public array userToDeviceDistance ( string $x , string $y )
}

Table of Contents

  • CairoContext::appendPath — Appends a path to current path
  • CairoContext::arc — Adds a circular arc
  • CairoContext::arcNegative — Adds a negative arc
  • CairoContext::clip — Establishes a new clip region
  • CairoContext::clipExtents — Computes the area inside the current clip
  • CairoContext::clipPreserve — Establishes a new clip region from the current clip
  • CairoContext::clipRectangleList — Retrieves the current clip as a list of rectangles
  • CairoContext::closePath — Closes the current path
  • CairoContext::__construct — Creates a new CairoContext
  • CairoContext::copyPage — Emits the current page
  • CairoContext::copyPath — Creates a copy of the current path
  • CairoContext::copyPathFlat — Gets a flattened copy of the current path
  • CairoContext::curveTo — Adds a curve
  • CairoContext::deviceToUser — Transform a coordinate
  • CairoContext::deviceToUserDistance — Transform a distance
  • CairoContext::fill — Fills the current path
  • CairoContext::fillExtents — Computes the filled area
  • CairoContext::fillPreserve — Fills and preserve the current path
  • CairoContext::fontExtents — Get the font extents
  • CairoContext::getAntialias — Retrives the current antialias mode
  • CairoContext::getCurrentPoint — The getCurrentPoint purpose
  • CairoContext::getDash — The getDash purpose
  • CairoContext::getDashCount — The getDashCount purpose
  • CairoContext::getFillRule — The getFillRule purpose
  • CairoContext::getFontFace — The getFontFace purpose
  • CairoContext::getFontMatrix — The getFontMatrix purpose
  • CairoContext::getFontOptions — The getFontOptions purpose
  • CairoContext::getGroupTarget — The getGroupTarget purpose
  • CairoContext::getLineCap — The getLineCap purpose
  • CairoContext::getLineJoin — The getLineJoin purpose
  • CairoContext::getLineWidth — The getLineWidth purpose
  • CairoContext::getMatrix — The getMatrix purpose
  • CairoContext::getMiterLimit — The getMiterLimit purpose
  • CairoContext::getOperator — The getOperator purpose
  • CairoContext::getScaledFont — The getScaledFont purpose
  • CairoContext::getSource — The getSource purpose
  • CairoContext::getTarget — The getTarget purpose
  • CairoContext::getTolerance — The getTolerance purpose
  • CairoContext::glyphPath — The glyphPath purpose
  • CairoContext::hasCurrentPoint — The hasCurrentPoint purpose
  • CairoContext::identityMatrix — The identityMatrix purpose
  • CairoContext::inFill — The inFill purpose
  • CairoContext::inStroke — The inStroke purpose
  • CairoContext::lineTo — The lineTo purpose
  • CairoContext::mask — The mask purpose
  • CairoContext::maskSurface — The maskSurface purpose
  • CairoContext::moveTo — The moveTo purpose
  • CairoContext::newPath — The newPath purpose
  • CairoContext::newSubPath — The newSubPath purpose
  • CairoContext::paint — The paint purpose
  • CairoContext::paintWithAlpha — The paintWithAlpha purpose
  • CairoContext::pathExtents — The pathExtents purpose
  • CairoContext::popGroup — The popGroup purpose
  • CairoContext::popGroupToSource — The popGroupToSource purpose
  • CairoContext::pushGroup — The pushGroup purpose
  • CairoContext::pushGroupWithContent — The pushGroupWithContent purpose
  • CairoContext::rectangle — The rectangle purpose
  • CairoContext::relCurveTo — The relCurveTo purpose
  • CairoContext::relLineTo — The relLineTo purpose
  • CairoContext::relMoveTo — The relMoveTo purpose
  • CairoContext::resetClip — The resetClip purpose
  • CairoContext::restore — The restore purpose
  • CairoContext::rotate — The rotate purpose
  • CairoContext::save — The save purpose
  • CairoContext::scale — The scale purpose
  • CairoContext::selectFontFace — The selectFontFace purpose
  • CairoContext::setAntialias — The setAntialias purpose
  • CairoContext::setDash — The setDash purpose
  • CairoContext::setFillRule — The setFillRule purpose
  • CairoContext::setFontFace — The setFontFace purpose
  • CairoContext::setFontMatrix — The setFontMatrix purpose
  • CairoContext::setFontOptions — The setFontOptions purpose
  • CairoContext::setFontSize — The setFontSize purpose
  • CairoContext::setLineCap — The setLineCap purpose
  • CairoContext::setLineJoin — The setLineJoin purpose
  • CairoContext::setLineWidth — The setLineWidth purpose
  • CairoContext::setMatrix — The setMatrix purpose
  • CairoContext::setMiterLimit — The setMiterLimit purpose
  • CairoContext::setOperator — The setOperator purpose
  • CairoContext::setScaledFont — The setScaledFont purpose
  • CairoContext::setSource — The setSource purpose
  • CairoContext::setSourceRGB — The setSourceRGB purpose
  • CairoContext::setSourceRGBA — The setSourceRGBA purpose
  • CairoContext::setSourceSurface — The setSourceSurface purpose
  • CairoContext::setTolerance — The setTolerance purpose
  • CairoContext::showPage — The showPage purpose
  • CairoContext::showText — The showText purpose
  • CairoContext::status — The status purpose
  • CairoContext::stroke — The stroke purpose
  • CairoContext::strokeExtents — The strokeExtents purpose
  • CairoContext::strokePreserve — The strokePreserve purpose
  • CairoContext::textExtents — The textExtents purpose
  • CairoContext::textPath — The textPath purpose
  • CairoContext::transform — The transform purpose
  • CairoContext::translate — The translate purpose
  • CairoContext::userToDevice — The userToDevice purpose
  • CairoContext::userToDeviceDistance — The userToDeviceDistance purpose
Cairo::versionString
CairoContext::appendPath
Cairo


Appends a path to current path

CairoContext
CairoContext::arc
CairoContext
PHP Manual

CairoContext::appendPath

cairo_append_path

(PECL cairo >= 0.1.0)

CairoContext::appendPath -- cairo_append_path — Appends a path to current path

说明

面向对象风格 (method):

public void CairoContext::appendPath ( CairoPath $path )

过程化风格:

void cairo_append_path ( CairoContext $context , CairoPath $path )

Appends the path onto the current path. The path may be either the return value from one of CairoContext::copyPath() or CairoContext::copyPathFlat();

if path is not a valid CairoPath instance a CairoException will be thrown

参数

context

CairoContext object

path

CairoPath object

返回值

没有返回值。

范例

Example #1 面向对象风格

<?php

$surface = new CairoImageSurface(CairoFormat::ARGB32, 50, 50);

$context = new CairoContext($surface);

$path = $context->copyPath();

$context->appendPath($path);

?>

Example #2 过程化风格

<?php

$surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 50, 50);

$context = cairo_create($surface);

$path = cairo_copy_path($context);

cairo_append_path($context, $path);

?>

参见

  • CairoPath
  • CairoContext::copyPath() - Creates a copy of the current path
  • CairoContext::copyPathFlat() - Gets a flattened copy of the current path

CairoContext
CairoContext::arc
CairoContext


Adds a circular arc

CairoContext::appendPath
CairoContext::arcNegative
CairoContext
PHP Manual

CairoContext::arc

cairo_arc

(PECL cairo >= 0.1.0)

CairoContext::arc -- cairo_arc — Adds a circular arc

说明

面向对象风格 (method):

public void CairoContext::arc ( float $x , float $y , float $radius , float $angle1 , float $angle2 )

过程化风格:

void cairo_arc ( CairoContext $context , float $x , float $y , float $radius , float $angle1 , float $angle2 )

Adds a circular arc of the given radius to the current path. The arc is centered at (x, y), begins at angle1 and proceeds in the direction of increasing angles to end at angle2. If angle2 is less than angle1 it will be progressively increased by 2*M_PI until it is greater than angle1. If there is a current point, an initial line segment will be added to the path to connect the current point to the beginning of the arc. If this initial line is undesired, it can be avoided by calling CairoContext::newSubPath() or procedural cairo_new_sub_path() before calling CairoContext::arc() or cairo_arc(). Angles are measured in radians. An angle of 0.0 is in the direction of the positive X axis (in user space). An angle of M_PI/2.0 radians (90 degrees) is in the direction of the positive Y axis (in user space). Angles increase in the direction from the positive X axis toward the positive Y axis. So with the default transformation matrix, angles increase in a clockwise direction. (To convert from degrees to radians, use degrees * (M_PI / 180.).) This function gives the arc in the direction of increasing angles; see CairoContext::arcNegative() or cairo_arc_negative() to get the arc in the direction of decreasing angles.

参数

context

A valid CairoContext object

x

x position

y

y position

radius

Radius of the arc

angle1

start angle

angle2

end angle

返回值

没有返回值。

范例

Example #1 面向对象风格

<?php

$s = new CairoImageSurface(CairoFormat::ARGB32, 100, 100);
$c = new CairoContext($s);

$c->setSourceRgb(0, 0, 0);
$c->paint();

$c->setLineWidth(1);
$c->setSourceRgb(1, 1, 1);

for ($r = 50; $r > 0; $r -= 10) {
 $c->arc(50, 50, $r, 0, 2 * M_PI);
 $c->stroke();
 $c->fill();
}

$s->writeToPng(dirname(__FILE__) . '/CairoContext__arc.png');
?>

Example #2 过程化风格

<?php

$s = cairo_image_surface_create(CAIRO_SURFACE_TYPE_IMAGE, 100, 100);
$c = cairo_create($s);

cairo_set_source_rgb($c, 0, 0, 0);
cairo_paint($c);

cairo_set_source_rgb($c, 1, 1, 1);
cairo_set_line_width($c, 1);

for ($r = 50; $r > 0; $r -= 10) {
 cairo_arc($c, 50, 50, $r, 0, 2 * M_PI);
 cairo_stroke($c);
 cairo_fill($c);
}

cairo_surface_write_to_png($s, dirname(__FILE__) . '/cairo_arc.png');
?>

参见

  • CairoContext::arcNegative() - Adds a negative arc

CairoContext::appendPath
CairoContext::arcNegative
CairoContext


Adds a negative arc

CairoContext::arc
CairoContext::clip
CairoContext
PHP Manual

CairoContext::arcNegative

cairo_arc_negative

(PECL cairo >= 0.1.0)

CairoContext::arcNegative -- cairo_arc_negative — Adds a negative arc

说明

面向对象风格 (method):

public void CairoContext::arcNegative ( float $x , float $y , float $radius , float $angle1 , float $angle2 )

过程化风格:

void cairo_arc_negative ( CairoContext $context , float $x , float $y , float $radius , float $angle1 , float $angle2 )

Adds a circular arc of the given radius to the current path. The arc is centered at (x, y), begins at angle1 and proceeds in the direction of decreasing angles to end at angle2. If angle2 is greater than angle1 it will be progressively decreased by 2*M_PI until it is less than angle1. See CairoContext::arc() or cairo_arc() for more details. This function differs only in the direction of the arc between the two angles.

参数

context

A valid CairoContext object

x

double x position

y

double y position

radius

The radius of the desired negative arc

angle1

Start angle of the arc

angle2

End angle of the arc

返回值

没有返回值。

范例

Example #1 面向对象风格

<?php

$s = new CairoImageSurface(CairoFormat::ARGB32, 100, 100);
$c = new CairoContext($s);

$c->setSourceRgb(0, 0, 0);
$c->paint();

$c->setLineWidth(1);
$c->setSourceRgb(1, 1, 1);

for ($r = 50; $r > 0; $r -= 10) {
 $c->arcNegative(50, 50, $r, 2 * M_PI, 0);
 $c->stroke();
 $c->fill();
}

$s->writeToPng(dirname(__FILE__) . '/CairoContext__arcNegative.png');
?>

Example #2 过程化风格

<?php

$s = cairo_image_surface_create(CAIRO_SURFACE_TYPE_IMAGE, 100, 100);
$c = cairo_create($s);

cairo_set_source_rgb($c, 0, 0, 0);
cairo_paint($c);

cairo_set_source_rgb($c, 1, 1, 1);
cairo_set_line_width($c, 1);

for ($r = 50; $r > 0; $r -= 10) {
 cairo_arc_negative($c, 50, 50, $r, 2 * M_PI, 0);
 cairo_stroke($c);
 cairo_fill($c);
}

cairo_surface_write_to_png($s, dirname(__FILE__) . '/cairo_arc_negative.png');
?>

参见

  • CairoContext::arc() - Adds a circular arc

CairoContext::arc
CairoContext::clip
CairoContext


Establishes a new clip region

CairoContext::arcNegative
CairoContext::clipExtents
CairoContext
PHP Manual

CairoContext::clip

cairo_clip

(PECL cairo >= 0.1.0)

CairoContext::clip -- cairo_clip — Establishes a new clip region

说明

面向对象风格 (method):

public void CairoContext::clip ( void )

过程化风格:

void cairo_clip ( CairoContext $context )

Establishes a new clip region by intersecting the current clip region with the current path as it would be filled by CairoContext::fill() or cairo_fill() and according to the current fill rule (see CairoContext::setFillRule() or cairo_set_fill_rule()).

After CairoContext::clip() or cairo_clip(), the current path will be cleared from the cairo context.

The current clip region affects all drawing operations by effectively masking out any changes to the surface that are outside the current clip region.

Calling CairoContext::clip() or cairo_clip()
can only make the clip region smaller, never larger. But the current clip is part of the
graphics state, so a temporary restriction of the clip region can be achieved by calling
CairoContext::clip() or cairo_clip() within a
CairoContext::save()/CairoContext::restore() or
cairo_save()/cairo_restore() pair.
The only other means of increasing the size of the clip region is
CairoContext::resetClip() or procedural cairo_reset_clip().

参数

context

A valid CairoContext object

返回值

没有返回值。

范例

Example #1 面向对象风格

<?php

$surface = new CairoImageSurface(CairoFormat::ARGB32, 50, 50);

$context = new CairoContext($surface);

$context->clip();

?>

Example #2 过程化风格

<?php

$surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 50, 50);

$context = cairo_create($surface);

cairo_clip($context);

?>

参见

  • CairoContext::resetClip() - The resetClip purpose
  • cairo_reset_clip() - The resetClip purpose

CairoContext::arcNegative
CairoContext::clipExtents
CairoContext


Computes the area inside the current clip

CairoContext::clip
CairoContext::clipPreserve
CairoContext
PHP Manual

CairoContext::clipExtents

cairo_clip_extents

(PECL cairo >= 0.1.0)

CairoContext::clipExtents -- cairo_clip_extents — Computes the area inside the current clip

说明

面向对象风格 (method):

public array CairoContext::clipExtents ( void )

过程化风格:

array cairo_clip_extents ( CairoContext $context )

Computes a bounding box in user coordinates covering the area inside the current clip.

参数

context

A valid CairoContext object

返回值

An array containing the (float)x1, (float)y1, (float)x2, (float)y2, coordinates covering the area inside the current clip

范例

Example #1 面向对象风格

<?php

$surface = new CairoImageSurface(CairoFormat::ARGB32, 50, 50);

$context = new CairoContext($surface);

var_dump($context->clipExtents());
?>

以上例程的输出类似于：

array(4) {
  [0]=>
  float(0)
  [1]=>
  float(0)
  [2]=>
  float(50)
  [3]=>
  float(50)
}

Example #2 过程化风格

<?php

$surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 50, 50);

$context = cairo_create($surface);

var_dump(cairo_clip_extents($context));

?>

以上例程的输出类似于：

array(4) {
  [0]=>
  float(0)
  [1]=>
  float(0)
  [2]=>
  float(50)
  [3]=>
  float(50)
}

参见

  • CairoContext::clip() - Establishes a new clip region

CairoContext::clip
CairoContext::clipPreserve
CairoContext


Establishes a new clip region from the current clip

CairoContext::clipExtents
CairoContext::clipRectangleList
CairoContext
PHP Manual

CairoContext::clipPreserve

cairo_clip_preserve

(PECL cairo >= 0.1.0)

CairoContext::clipPreserve -- cairo_clip_preserve — Establishes a new clip region from the current clip

说明

面向对象风格 (method):

public void CairoContext::clipPreserve ( void )

过程化风格:

void cairo_clip_preserve ( CairoContext $context )

Establishes a new clip region by intersecting the current clip region with the current path as it would be filled by Context.fill() and according to the current FILL RULE (see CairoContext::setFillRule() or cairo_set_fill_rule()).

Unlike CairoContext::clip(), CairoContext::clipPreserve() preserves the path within the Context. The current clip region affects all drawing operations by effectively masking out any changes to the surface that are outside the current clip region.

Calling CairoContext::clipPreserve() can only make the clip region smaller, never larger. But the current clip is part of the graphics state, so a temporary restriction of the clip region can be achieved by calling CairoContext::clipPreserve() within a CairoContext::save()/CairoContext::restore() pair. The only other means of increasing the size of the clip region is CairoContext::resetClip().

参数

context

A valid CairoContext object

返回值

没有返回值。

范例

Example #1 面向对象风格

<?php

$surface = new CairoImageSurface(CairoFormat::ARGB32, 50, 50);

$context = new CairoContext($surface);

$context->clipPreserve();

?>

Example #2 过程化风格

<?php

$surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 50, 50);

$context = cairo_create($surface);

cairo_clip_preserve($context);

?>

参见

  • CairoContext::save() - The save purpose
  • CairoContext::restore() - The restore purpose
  • CairoContext::resetClip() - The resetClip purpose

CairoContext::clipExtents
CairoContext::clipRectangleList
CairoContext


Retrieves the current clip as a list of rectangles

CairoContext::clipPreserve
CairoContext::closePath
CairoContext
PHP Manual

CairoContext::clipRectangleList

cairo_clip_rectangle_list

(PECL cairo >= 0.1.0)

CairoContext::clipRectangleList -- cairo_clip_rectangle_list — Retrieves the current clip as a list of rectangles

说明

面向对象风格 (method):

public array CairoContext::clipRectangleList ( void )

过程化风格:

array cairo_clip_rectangle_list ( CairoContext $context )

Returns a list-type array with the current clip region as a list of rectangles in user coordinates

参数

context

A valid CairoContext object created with CairoContext::__construct() or cairo_create()

返回值

An array of user-space represented rectangles for the current clip

(The status in the list may be CAIRO_STATUS_CLIP_NOT_REPRESENTABLE to indicate that the clip region cannot be represented as a list of user-space rectangles. The status may have other values to indicate other errors.)

范例

Example #1 面向对象风格

<?php

$surface = new CairoImageSurface(CairoFormat::ARGB32, 50, 50);

$context = new CairoContext($surface);

var_dump($context->clipRectangleList());

?>

以上例程的输出类似于：

array(1) {
  [0]=>
  array(4) {
    ["x"]=>
    float(0)
    ["y"]=>
    float(0)
    ["width"]=>
    float(50)
    ["height"]=>
    float(50)
  }
}

Example #2 过程化风格

<?php

$surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 50, 50);

$context = cairo_create($surface);

var_dump(cairo_clip_rectangle_list($context));

?>

以上例程的输出类似于：

array(1) {
  [0]=>
  array(4) {
    ["x"]=>
    float(0)
    ["y"]=>
    float(0)
    ["width"]=>
    float(50)
    ["height"]=>
    float(50)
  }
}

参见

  • Classname::Method()

CairoContext::clipPreserve
CairoContext::closePath
CairoContext


Closes the current path

CairoContext::clipRectangleList
CairoContext::__construct
CairoContext
PHP Manual

CairoContext::closePath

cairo_close_path

(PECL cairo >= 0.1.0)

CairoContext::closePath -- cairo_close_path — Closes the current path

说明

面向对象风格 (method):

public void CairoContext::closePath ( void )

过程化风格:

void cairo_close_path ( CairoContext $context )

Adds a line segment to the path from the current point to the beginning of the current sub-path, (the most recent point passed to CairoContext::moveTo()), and closes this sub-path. After this call the current point will be at the joined endpoint of the sub-path.

The behavior of close_path() is distinct from simply calling CairoContext::lineTo() with the equivalent coordinate in the case of stroking. When a closed sub-path is stroked, there are no caps on the ends of the sub-path. Instead, there is a line join connecting the final and initial segments of the sub-path.

If there is no current point before the call to CairoContext::closePath(), this function will have no effect.

参数

context

A valid CairoContext object created with CairoContext::__construct() or cairo_create()

返回值

没有返回值。

范例

Example #1 面向对象风格

<?php

$surface = new CairoImageSurface(CairoFormat::ARGB32, 50, 50);

$context = new CairoContext($surface);

$context->closePath();

?>

Example #2 过程化风格

<?php

$surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 50, 50);

$context = cairo_create($surface);

cairo_close_path($context);

?>

参见

  • CairoContext::copyPath() - Creates a copy of the current path

CairoContext::clipRectangleList
CairoContext::__construct
CairoContext


Creates a new CairoContext

CairoContext::closePath
CairoContext::copyPage
CairoContext
PHP Manual

CairoContext::__construct

(PECL cairo >= 0.1.0)

CairoContext::__construct — Creates a new CairoContext

说明

public CairoContext::__construct ( CairoSurface $surface )

Creates a new CairoContext object to draw

参数

surface

A valid CairoSurface like CairoImageSurface or CairoPdfSurface

返回值

A CairoContext

范例

Example #1 CairoContext::__construct() example

<?php
// The surface to work on
$surface = new CairoImageSurface(CairoFormat::ARGB32, 50, 50);

// Create a new CairoContext for the CairoSurface
$context = new CairoContext($surface);

?>

参见

  • Cairo::Method()

CairoContext::closePath
CairoContext::copyPage
CairoContext


Emits the current page

CairoContext::__construct
CairoContext::copyPath
CairoContext
PHP Manual

CairoContext::copyPage

cairo_copy_page

(PECL cairo >= 0.1.0)

CairoContext::copyPage -- cairo_copy_page — Emits the current page

说明

面向对象风格 (method):

public void CairoContext::copyPage ( void )

过程化风格:

void cairo_copy_page ( CairoContext $context )

Emits the current page for backends that support multiple pages, but doesn't clear it, so, the contents of the current page will be retained for the next page too. Use CairoContext::showPage() if you want to get an empty page after the emission.

This is a convenience function that simply calls CairoSurface::copyPage() on CairoContext's target.

参数

context

A valid CairoContext object created with CairoContext::__construct() or cairo_create()

返回值

没有返回值。

范例

Example #1 面向对象风格

<?php

$surface = new CairoImageSurface(CairoFormat::ARGB32, 50, 50);

$context = new CairoContext($surface);

$context->copyPage();

?>

Example #2 过程化风格

<?php

$surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 50, 50);

$context = cairo_create($surface);

cairo_copy_page($context);

?>

参见

  • CairoContext::showPage() - The showPage purpose
  • CairoSurface::copyPage() - The copyPage purpose

CairoContext::__construct
CairoContext::copyPath
CairoContext


Creates a copy of the current path

CairoContext::copyPage
CairoContext::copyPathFlat
CairoContext
PHP Manual

CairoContext::copyPath

cairo_copy_path

(PECL cairo >= 0.1.0)

CairoContext::copyPath -- cairo_copy_path — Creates a copy of the current path

说明

面向对象风格 (method):

public CairoPath CairoContext::copyPath ( void )

过程化风格:

CairoPath cairo_copy_path ( CairoContext $context )

Creates a copy of the current path and returns it to the user as a CairoPath. See CairoPath for hints on how to iterate over the returned data structure.

This function will always return a valid CairoPath object, but the result will have no data, if either of the following conditions hold:

  • 1. If there is insufficient memory to copy the path. In this case CairoPath->status will be set to CAIRO_STATUS_NO_MEMORY.
  • 2. If context is already in an error state. In this case CairoPath->status will contain the same status that would be returned by cairo_status().
In either case, CairoPath->status will be set to CAIRO_STATUS_NO_MEMORY (regardless of what the error status in cr might have been).

参数

context

A valid CairoContext object created with CairoContext::__construct() or cairo_create()

返回值

A copy of the current CairoPath in the context

范例

Example #1 面向对象风格

<?php

$surface = new CairoImageSurface(CairoFormat::ARGB32, 50, 50);

$context = new CairoContext($surface);

var_dump($context->copyPath())

?>

以上例程的输出类似于：

object(CairoPath)#3 (0) {
}

Example #2 过程化风格

<?php

$surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 50, 50);

$context = cairo_create($surface);

var_dump(cairo_copy_path($context));

?>

以上例程的输出类似于：

object(CairoPath)#3 (0) {
}

参见

  • CairoContext::closePath() - Closes the current path

CairoContext::copyPage
CairoContext::copyPathFlat
CairoContext


Gets a flattened copy of the current path

CairoContext::copyPath
CairoContext::curveTo
CairoContext
PHP Manual

CairoContext::copyPathFlat

cairo_copy_path_flat

(PECL cairo >= 0.1.0)

CairoContext::copyPathFlat -- cairo_copy_path_flat — Gets a flattened copy of the current path

说明

面向对象风格 (method):

public CairoPath CairoContext::copyPathFlat ( void )

过程化风格:

CairoPath cairo_copy_path_flat ( CairoContext $context )

Gets a flattened copy of the current path and returns it to the user as a CairoPath.

This function is like CairoContext::copyPath() except that any curves in the path will be approximated with piecewise-linear approximations, (accurate to within the current tolerance value). That is, the result is guaranteed to not have any elements of type CAIRO_PATH_CURVE_TO which will instead be replaced by a series of CAIRO_PATH_LINE_TO elements.

参数

context

A CairoContext object

返回值

A copy of the current path

范例

Example #1 面向对象风格

<?php

$surface = new CairoImageSurface(CairoFormat::ARGB32, 50, 50);

$context = new CairoContext($surface);

var_dump($context->copyPathFlat());

?>

以上例程的输出类似于：

object(CairoPath)#3 (0) {
}

Example #2 过程化风格

<?php

$surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 50, 50);

$context = cairo_create($surface);

var_dump(cairo_copy_path_flat($context));

?>

以上例程的输出类似于：

object(CairoPath)#3 (0) {
}

参见

  • CairoContext::copyPath() - Creates a copy of the current path
  • CairoContext::closePath() - Closes the current path

CairoContext::copyPath
CairoContext::curveTo
CairoContext


Adds a curve

CairoContext::copyPathFlat
CairoContext::deviceToUser
CairoContext
PHP Manual

CairoContext::curveTo

cairo_curve_to

(PECL cairo >= 0.1.0)

CairoContext::curveTo -- cairo_curve_to — Adds a curve

说明

面向对象风格 (method):

public void CairoContext::curveTo ( float $x1 , float $y1 , float $x2 , float $y2 , float $x3 , float $y3 )

过程化风格:

void cairo_curve_to ( CairoContext $context , float $x1 , float $y1 , float $x2 , float $y2 , float $x3 , float $y3 )

Adds a cubic Bezier spline to the path from the current point to position x3 ,y3 in user-space coordinates, using x1, y1 and x2, y2 as the control points. After this call the current point will be x3, y3.

If there is no current point before the call to CairoContext::curveTo() this function will behave as if preceded by a call to CairoContext::moveTo() (x1, y1).

参数

context

A valid CairoContext object created with CairoContext::__construct() or cairo_create()

x1

First control point in the x axis for the curve

y1

First control point in the y axis for the curve

x2

Second control point in x axis for the curve

y2

Second control point in y axis for the curve

x3

Final point in the x axis for the curve

y3

Final point in the y axis for the curve

返回值

没有返回值。

范例

Example #1 面向对象风格

<?php
$s = new CairoImageSurface(CairoFormat::ARGB32, 100, 100);
$c = new CairoContext($s);

$c->setSourceRgb(0, 0, 0);

$c->paint();

$c->moveTo(10, 50);
$c->setLineWidth(5);
$c->setSourceRgb(.1, 0, 1);
$c->curveTo(20, 80, 80, 20, 90, 50);
$c->stroke();

$s->writeToPng(dirname(__FILE__) . '/curveTo.png');
?>

Example #2 过程化风格

<?php

$s = cairo_image_surface_create(CAIRO_SURFACE_TYPE_IMAGE, 100, 100);
$c = cairo_create($s);

cairo_set_source_rgb($c, 0, 0, 0);

cairo_paint($c);

cairo_move_to($c, 10, 50);
cairo_set_line_width($c, 5);
cairo_set_source_rgb($c, .1, 0, 1);
cairo_curve_to($c, 20, 80, 80, 20, 90, 50);
cairo_stroke($c);

cairo_surface_write_to_png($s, dirname(__FILE__) . '/curve_to.png');
?>

参见

  • CairoContext::moveTo() - The moveTo purpose

CairoContext::copyPathFlat
CairoContext::deviceToUser
CairoContext


Transform a coordinate

CairoContext::curveTo
CairoContext::deviceToUserDistance
CairoContext
PHP Manual

CairoContext::deviceToUser

cairo_device_to_user

(PECL cairo >= 0.1.0)

CairoContext::deviceToUser -- cairo_device_to_user — Transform a coordinate

说明

面向对象风格 (method):

public array CairoContext::deviceToUser ( float $x , float $y )

过程化风格:

array cairo_device_to_user ( CairoContext $context , float $x , float $y )

Transform a coordinate from device space to user space by multiplying the given point by the inverse of the current transformation matrix (CTM).

参数

context

A valid CairoContext object created with CairoContext::__construct() or cairo_create()

x

x value of the coordinate

y

y value of the coordinate

返回值

An array containing the x and y coordinates in the user-space

参见

  • CairoContext::deviceToUserDistance() - Transform a distance

CairoContext::curveTo
CairoContext::deviceToUserDistance
CairoContext


Transform a distance

CairoContext::deviceToUser
CairoContext::fill
CairoContext
PHP Manual

CairoContext::deviceToUserDistance

cairo_device_to_user_distance

(PECL cairo >= 0.1.0)

CairoContext::deviceToUserDistance -- cairo_device_to_user_distance — Transform a distance

说明

面向对象风格 (method):

public array CairoContext::deviceToUserDistance ( float $x , float $y )

过程化风格:

array cairo_device_to_user_distance ( CairoContext $context , float $x , float $y )

Transform a distance vector from device space to user space. This function is similar to CairoContext::deviceToUser() or cairo_device_to_user() except that the translation components of the inverse Cairo Transformation Matrix will be ignored when transforming (x,y).

参数

context

A valid CairoContext object created with CairoContext::__construct() or cairo_create()

x

X component of a distance vector

y

Y component of a distance vector

返回值

Returns an array with the x and y values of a distance vector in the user-space

参见

  • CairoContext::deviceToUser() - Transform a coordinate

CairoContext::deviceToUser
CairoContext::fill
CairoContext


Fills the current path

CairoContext::deviceToUserDistance
CairoContext::fillExtents
CairoContext
PHP Manual

CairoContext::fill

cairo_fill

(PECL cairo >= 0.1.0)

CairoContext::fill -- cairo_fill — Fills the current path

说明

面向对象风格 (method):

public void CairoContext::fill ( void )

过程化风格:

void cairo_fill ( CairoContext $context )

A drawing operator that fills the current path according to the current CairoFillRule, (each sub-path is implicitly closed before being filled). After CairoContext::fill() or cairo_fill(), the current path will be cleared from the CairoContext.

参数

context

A valid CairoContext object created with CairoContext::__construct() or cairo_create()

返回值

没有返回值。

范例

Example #1 面向对象风格

<?php

$s = new CairoImageSurface(CairoFormat::ARGB32, 100, 100);
$c = new CairoContext($s);

$c->setSourceRgb(0, 0, 0);
$c->paint();

$c->setSourceRgb(1, 1, 1);
$c->rectangle(0, 0, 50, 50);
$c->fill();
$c->setSourceRgb(0, 1, 0);
$c->rectangle(50, 50, 50, 50);
$c->fill();

$s->writeToPng(dirname(__FILE__) . '/CairoContext_fill.png');

?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php

$s = cairo_image_surface_create(CAIRO_SURFACE_TYPE_IMAGE, 100, 100);
$c = cairo_create($s);

cairo_set_source_rgb($c, 0, 0, 0);
cairo_paint($c);

cairo_set_source_rgb($c, 1, 1, 1);
cairo_rectangle($c, 0, 0, 50, 50);
cairo_fill($c);
cairo_set_source_rgb($c, 0, 1, 0);
cairo_rectangle($c, 50, 50, 50, 50);
cairo_fill($c);

cairo_surface_write_to_png($s, dirname(__FILE__) . '/cairo_fill.png');

?>

以上例程的输出类似于：

...

参见

  • CairoContext::setFillRule() - The setFillRule purpose
  • ContextContext::fillPreserve()
  • CairoFillRule

CairoContext::deviceToUserDistance
CairoContext::fillExtents
CairoContext


Computes the filled area

CairoContext::fill
CairoContext::fillPreserve
CairoContext
PHP Manual

CairoContext::fillExtents

cairo_fill_extents

(PECL cairo >= 0.1.0)

CairoContext::fillExtents -- cairo_fill_extents — Computes the filled area

说明

面向对象风格 (method):

public array CairoContext::fillExtents ( void )

过程化风格:

array cairo_fill_extents ( CairoContext $context )

Computes a bounding box in user coordinates covering the area that would be affected, (the "inked" area), by a CairoContext::fill() operation given the current path and fill parameters. If the current path is empty, returns an empty rectangle (0,0,0,0). Surface dimensions and clipping are not taken into account.

Contrast with CairoContext::pathExtents(), which is similar, but returns non-zero extents for some paths with no inked area, (such as a simple line segment).

Note that CairoContext::fillExtents() must necessarily do more work to compute the precise inked areas in light of the fill rule, so CairoContext::pathExtents() may be more desirable for sake of performance if the non-inked path extents are desired.

参数

context

A valid CairoContext object created with CairoContext::__construct() or cairo_create()

返回值

An array with the coordinates of the afected area

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • CairoContext::fill() - Fills the current path
  • CairoContext::setFillRule() - The setFillRule purpose
  • CairoContext::fillPreserve() - Fills and preserve the current path

CairoContext::fill
CairoContext::fillPreserve
CairoContext


Fills and preserve the current path

CairoContext::fillExtents
CairoContext::fontExtents
CairoContext
PHP Manual

CairoContext::fillPreserve

cairo_fill_preserve

(PECL cairo >= 0.1.0)

CairoContext::fillPreserve -- cairo_fill_preserve — Fills and preserve the current path

说明

面向对象风格 (method):

public void CairoContext::fillPreserve ( void )

过程化风格:

void cairo_fill_preserve ( CairoContext $context )

A drawing operator that fills the current path according to the current CairoFillRule, (each sub-path is implicitly closed before being filled). Unlike CairoContext::fill(), CairoContext::fillPreserve() (Procedural cairo_fill(), cairo_fill_preserve(), respectively) preserves the path within the Context.

参数

context

A valid CairoContext object created with CairoContext::__construct() or cairo_create()

返回值

没有返回值。

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • CairoContext::setFillRule() - The setFillRule purpose
  • CairoContext::fill() - Fills the current path

CairoContext::fillExtents
CairoContext::fontExtents
CairoContext


Get the font extents

CairoContext::fillPreserve
CairoContext::getAntialias
CairoContext
PHP Manual

CairoContext::fontExtents

cairo_font_extents

(PECL cairo >= 0.1.0)

CairoContext::fontExtents -- cairo_font_extents — Get the font extents

说明

面向对象风格 (method):

public array CairoContext::fontExtents ( void )

过程化风格:

array cairo_font_extents ( CairoContext $context )

Gets the font extents for the currently selected font.

参数

context

Description...

返回值

An array containing the font extents for the current font.

范例

Example #1 面向对象风格

<?php

$sur = new CairoImageSurface(CairoFormat::ARGB32, 50, 50);
$con = new CairoContext($sur);

var_dump($con->fontExtents());

?>

以上例程的输出类似于：

array(5) {
  ["ascent"]=>
  float(10)
  ["descent"]=>
  float(3)
  ["height"]=>
  float(13.3125)
  ["max_x_advance"]=>
  float(26.65625)
  ["max_y_advance"]=>
  float(0)
}

Example #2 过程化风格

<?php

$sur = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 50, 50);
$con = cairo_create($sur);

var_dump(cairo_font_extents($con));

?>

以上例程的输出类似于：

array(5) {
  ["ascent"]=>
  float(10)
  ["descent"]=>
  float(3)
  ["height"]=>
  float(13.3125)
  ["max_x_advance"]=>
  float(26.65625)
  ["max_y_advance"]=>
  float(0)
}

参见

  • Classname::Method()

CairoContext::fillPreserve
CairoContext::getAntialias
CairoContext


Retrives the current antialias mode

CairoContext::fontExtents
CairoContext::getCurrentPoint
CairoContext
PHP Manual

CairoContext::getAntialias

cairo_get_antialias

(PECL cairo >= 0.1.0)

CairoContext::getAntialias -- cairo_get_antialias — Retrives the current antialias mode

说明

面向对象风格 (method):

public int CairoContext::getAntialias ( void )

过程化风格:

int cairo_get_antialias ( CairoContext $context )

Returns the current CairoAntialias mode, as set by CairoContext::setAntialias().

参数

context

A valid CairoContext object created with CairoContext::__construct() or cairo_create()

返回值

The current CairoAntialias mode.

范例

Example #1 面向对象风格

<?php

$surface = new CairoImageSurface(CairoFormat::ARGB32, 50, 50);
$context = new CairoContext($surface);

$context->setAntialias(CairoAntialias::MODE_SUBPIXEL);

var_dump($context->getAntialias());

?>

以上例程的输出类似于：

int(3)

Example #2 过程化风格

<?php

$sur = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 50, 50);
$con = cairo_create($sur);

cairo_set_antialias($con, CAIRO_ANTIALIAS_SUBPIXEL);

var_dump(cairo_get_antialias($con));

?>

以上例程的输出类似于：

int(3)

参见

  • CairoContext::setAntialias() - The setAntialias purpose
  • CairoAntialias

CairoContext::fontExtents
CairoContext::getCurrentPoint
CairoContext


The getCurrentPoint purpose

CairoContext::getAntialias
CairoContext::getDash
CairoContext
PHP Manual

CairoContext::getCurrentPoint

cairo_get_current_point

(PECL cairo >= 0.1.0)

CairoContext::getCurrentPoint -- cairo_get_current_point — The getCurrentPoint purpose

说明

面向对象风格

public array CairoContext::getCurrentPoint ( void )

过程化风格

array cairo_get_current_point ( CairoContext $context )

Gets the current point of the current path, which is conceptually the final point reached by the path so far.

The current point is returned in the user-space coordinate system. If there is no defined current point or if cr is in an error status, x and y will both be set to 0.0. It is possible to check this in advance with CairoContext::hasCurrentPoint().

Most path construction functions alter the current point. See the following for details on how they affect the current point: CairoContext::newPath(),
CairoContext::newSubPath(), CairoContext::appendPath(), CairoContext::closePath(), CairoContext::moveTo(),
CairoContext::lineTo(), CairoContext::curveTo(), CairoContext::relMoveTo(),
CairoContext::relLineTo(), CairoContext::relCurveTo(),
CairoContext::arc(), CairoContext::arcNegative(), CairoContext::rectangle(),
CairoContext::textPath(), CairoContext::glyphPath().

Some functions use and alter the current point but do not otherwise change current path: CairoContext::showText().

Some functions unset the current path and as a result, current point: CairoContext::fill(), CairoContext::stroke().

参数

context

A valid CairoContext object.

返回值

An array containing the x (index 0) and y (index 1) coordinates of the current point.

范例

Example #1 面向对象风格

<?php

$s = new CairoImageSurface(CairoFormat::ARGB32, 100, 100);
$c = new CairoContext($s);

$c->moveTo(10, 10);

var_dump($c->getCurrentPoint());

?>

以上例程的输出类似于：

array(2) {
  [0]=>
  float(10)
  [1]=>
  float(10)
}

Example #2 过程化风格

<?php

$s = cairo_image_surface_create(CAIRO_SURFACE_TYPE_IMAGE, 100, 100);
$c = cairo_create($s);

cairo_move_to($c, 10, 10);

var_dump(cairo_get_current_point($c));

?>

以上例程的输出类似于：

array(2) {
  [0]=>
  float(10)
  [1]=>
  float(10)
}

参见

  • CairoContext::moveTo() - The moveTo purpose
  • CairoContext::hasCurrentPoint() - The hasCurrentPoint purpose

CairoContext::getAntialias
CairoContext::getDash
CairoContext


The getDash purpose

CairoContext::getCurrentPoint
CairoContext::getDashCount
CairoContext
PHP Manual

CairoContext::getDash

cairo_get_dash

(PECL cairo >= 0.1.0)

CairoContext::getDash -- cairo_get_dash — The getDash purpose

说明

面向对象风格 (method):

public array CairoContext::getDash ( void )

过程化风格:

array cairo_get_dash ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::getCurrentPoint
CairoContext::getDashCount
CairoContext


The getDashCount purpose

CairoContext::getDash
CairoContext::getFillRule
CairoContext
PHP Manual

CairoContext::getDashCount

cairo_get_dash_count

(PECL cairo >= 0.1.0)

CairoContext::getDashCount -- cairo_get_dash_count — The getDashCount purpose

说明

面向对象风格 (method):

public int CairoContext::getDashCount ( void )

过程化风格:

int cairo_get_dash_count ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::getDash
CairoContext::getFillRule
CairoContext


The getFillRule purpose

CairoContext::getDashCount
CairoContext::getFontFace
CairoContext
PHP Manual

CairoContext::getFillRule

cairo_get_fill_rule

(PECL cairo >= 0.1.0)

CairoContext::getFillRule -- cairo_get_fill_rule — The getFillRule purpose

说明

面向对象风格 (method):

public int CairoContext::getFillRule ( void )

过程化风格:

int cairo_get_fill_rule ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::getDashCount
CairoContext::getFontFace
CairoContext


The getFontFace purpose

CairoContext::getFillRule
CairoContext::getFontMatrix
CairoContext
PHP Manual

CairoContext::getFontFace

cairo_get_font_face

(PECL cairo >= 0.1.0)

CairoContext::getFontFace -- cairo_get_font_face — The getFontFace purpose

说明

面向对象风格 (method):

public void CairoContext::getFontFace ( void )

过程化风格:

void cairo_get_font_face ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::getFillRule
CairoContext::getFontMatrix
CairoContext


The getFontMatrix purpose

CairoContext::getFontFace
CairoContext::getFontOptions
CairoContext
PHP Manual

CairoContext::getFontMatrix

cairo_get_font_matrix

(PECL cairo >= 0.1.0)

CairoContext::getFontMatrix -- cairo_get_font_matrix — The getFontMatrix purpose

说明

面向对象风格 (method):

public void CairoContext::getFontMatrix ( void )

过程化风格:

void cairo_get_font_matrix ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::getFontFace
CairoContext::getFontOptions
CairoContext


The getFontOptions purpose

CairoContext::getFontMatrix
CairoContext::getGroupTarget
CairoContext
PHP Manual

CairoContext::getFontOptions

cairo_get_font_options

(PECL cairo >= 0.1.0)

CairoContext::getFontOptions -- cairo_get_font_options — The getFontOptions purpose

说明

面向对象风格 (method):

public void CairoContext::getFontOptions ( void )

过程化风格:

void cairo_get_font_options ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::getFontMatrix
CairoContext::getGroupTarget
CairoContext


The getGroupTarget purpose

CairoContext::getFontOptions
CairoContext::getLineCap
CairoContext
PHP Manual

CairoContext::getGroupTarget

cairo_get_group_target

(PECL cairo >= 0.1.0)

CairoContext::getGroupTarget -- cairo_get_group_target — The getGroupTarget purpose

说明

面向对象风格 (method):

public void CairoContext::getGroupTarget ( void )

过程化风格:

void cairo_get_group_target ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::getFontOptions
CairoContext::getLineCap
CairoContext


The getLineCap purpose

CairoContext::getGroupTarget
CairoContext::getLineJoin
CairoContext
PHP Manual

CairoContext::getLineCap

cairo_get_line_cap

(PECL cairo >= 0.1.0)

CairoContext::getLineCap -- cairo_get_line_cap — The getLineCap purpose

说明

面向对象风格 (method):

public int CairoContext::getLineCap ( void )

过程化风格:

int cairo_get_line_cap ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::getGroupTarget
CairoContext::getLineJoin
CairoContext


The getLineJoin purpose

CairoContext::getLineCap
CairoContext::getLineWidth
CairoContext
PHP Manual

CairoContext::getLineJoin

cairo_get_line_join

(PECL cairo >= 0.1.0)

CairoContext::getLineJoin -- cairo_get_line_join — The getLineJoin purpose

说明

面向对象风格 (method):

public int CairoContext::getLineJoin ( void )

过程化风格:

int cairo_get_line_join ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::getLineCap
CairoContext::getLineWidth
CairoContext


The getLineWidth purpose

CairoContext::getLineJoin
CairoContext::getMatrix
CairoContext
PHP Manual

CairoContext::getLineWidth

cairo_get_line_width

(PECL cairo >= 0.1.0)

CairoContext::getLineWidth -- cairo_get_line_width — The getLineWidth purpose

说明

面向对象风格 (method):

public float CairoContext::getLineWidth ( void )

过程化风格:

float cairo_get_line_width ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::getLineJoin
CairoContext::getMatrix
CairoContext


The getMatrix purpose

CairoContext::getLineWidth
CairoContext::getMiterLimit
CairoContext
PHP Manual

CairoContext::getMatrix

cairo_get_matrix

(PECL cairo >= 0.1.0)

CairoContext::getMatrix -- cairo_get_matrix — The getMatrix purpose

说明

面向对象风格 (method):

public void CairoContext::getMatrix ( void )

过程化风格:

void cairo_get_matrix ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::getLineWidth
CairoContext::getMiterLimit
CairoContext


The getMiterLimit purpose

CairoContext::getMatrix
CairoContext::getOperator
CairoContext
PHP Manual

CairoContext::getMiterLimit

cairo_get_miter_limit

(PECL cairo >= 0.1.0)

CairoContext::getMiterLimit -- cairo_get_miter_limit — The getMiterLimit purpose

说明

面向对象风格 (method):

public float CairoContext::getMiterLimit ( void )

过程化风格:

float cairo_get_miter_limit ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::getMatrix
CairoContext::getOperator
CairoContext


The getOperator purpose

CairoContext::getMiterLimit
CairoContext::getScaledFont
CairoContext
PHP Manual

CairoContext::getOperator

cairo_get_operator

(PECL cairo >= 0.1.0)

CairoContext::getOperator -- cairo_get_operator — The getOperator purpose

说明

面向对象风格 (method):

public int CairoContext::getOperator ( void )

过程化风格:

int cairo_get_operator ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::getMiterLimit
CairoContext::getScaledFont
CairoContext


The getScaledFont purpose

CairoContext::getOperator
CairoContext::getSource
CairoContext
PHP Manual

CairoContext::getScaledFont

cairo_get_scaled_font

(PECL cairo >= 0.1.0)

CairoContext::getScaledFont -- cairo_get_scaled_font — The getScaledFont purpose

说明

面向对象风格 (method):

public void CairoContext::getScaledFont ( void )

过程化风格:

void cairo_get_scaled_font ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::getOperator
CairoContext::getSource
CairoContext


The getSource purpose

CairoContext::getScaledFont
CairoContext::getTarget
CairoContext
PHP Manual

CairoContext::getSource

cairo_get_source

(PECL cairo >= 0.1.0)

CairoContext::getSource -- cairo_get_source — The getSource purpose

说明

面向对象风格 (method):

public void CairoContext::getSource ( void )

过程化风格:

void cairo_get_source ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::getScaledFont
CairoContext::getTarget
CairoContext


The getTarget purpose

CairoContext::getSource
CairoContext::getTolerance
CairoContext
PHP Manual

CairoContext::getTarget

cairo_get_target

(PECL cairo >= 0.1.0)

CairoContext::getTarget -- cairo_get_target — The getTarget purpose

说明

面向对象风格 (method):

public void CairoContext::getTarget ( void )

过程化风格:

void cairo_get_target ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::getSource
CairoContext::getTolerance
CairoContext


The getTolerance purpose

CairoContext::getTarget
CairoContext::glyphPath
CairoContext
PHP Manual

CairoContext::getTolerance

cairo_get_tolerance

(PECL cairo >= 0.1.0)

CairoContext::getTolerance -- cairo_get_tolerance — The getTolerance purpose

说明

面向对象风格 (method):

public float CairoContext::getTolerance ( void )

过程化风格:

float cairo_get_tolerance ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::getTarget
CairoContext::glyphPath
CairoContext


The glyphPath purpose

CairoContext::getTolerance
CairoContext::hasCurrentPoint
CairoContext
PHP Manual

CairoContext::glyphPath

cairo_glyph_path

(PECL cairo >= 0.1.0)

CairoContext::glyphPath -- cairo_glyph_path — The glyphPath purpose

说明

面向对象风格

public void CairoContext::glyphPath ( array $glyphs )

过程化风格

void cairo_glyph_path ( CairoContext $context , array $glyphs )

Adds closed paths for the glyphs to the current path. The generated path if filled, achieves an effect similar to that of CairoContext::showGlyphs().

参数

context

A CairoContext object

glyphs

Array of glyphs

返回值

没有返回值。

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

CairoContext::getTolerance
CairoContext::hasCurrentPoint
CairoContext


The hasCurrentPoint purpose

CairoContext::glyphPath
CairoContext::identityMatrix
CairoContext
PHP Manual

CairoContext::hasCurrentPoint

cairo_has_current_point

(PECL cairo >= 0.1.0)

CairoContext::hasCurrentPoint -- cairo_has_current_point — The hasCurrentPoint purpose

说明

面向对象风格 (method):

public bool CairoContext::hasCurrentPoint ( void )

过程化风格:

bool cairo_has_current_point ( CairoContext $context )

Returns whether a current point is defined on the current path. See CairoContext::getCurrentPoint() for details on the current point.

参数

context

A valid CairoContext object.

返回值

Whether a current point is defined

范例

Example #1 面向对象风格

<?php

$s = new CairoImageSurface(CairoFormat::ARGB32, 100, 100);
$c = new CairoContext($s);

var_dump($c->hasCurrentPoint());

$c->moveTo(10, 10);

var_dump($c->hasCurrentPoint());

?>

以上例程会输出：

bool(false)
bool(true)

Example #2 过程化风格

<?php

$s = cairo_image_surface_create(CAIRO_SURFACE_TYPE_IMAGE, 100, 100);
$c = cairo_create($s);

var_dump(cairo_has_current_point($c));

cairo_move_to($c, 10, 10);

var_dump(cairo_has_current_point($c));

?>

以上例程会输出：

bool(false)
bool(true)

参见

  • CairoContext::getCurrentPoint() - The getCurrentPoint purpose

CairoContext::glyphPath
CairoContext::identityMatrix
CairoContext


The identityMatrix purpose

CairoContext::hasCurrentPoint
CairoContext::inFill
CairoContext
PHP Manual

CairoContext::identityMatrix

cairo_identity_matrix

(PECL cairo >= 0.1.0)

CairoContext::identityMatrix -- cairo_identity_matrix — The identityMatrix purpose

说明

面向对象风格 (method):

public void CairoContext::identityMatrix ( void )

过程化风格:

void cairo_identity_matrix ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::hasCurrentPoint
CairoContext::inFill
CairoContext


The inFill purpose

CairoContext::identityMatrix
CairoContext::inStroke
CairoContext
PHP Manual

CairoContext::inFill

cairo_in_fill

(PECL cairo >= 0.1.0)

CairoContext::inFill -- cairo_in_fill — The inFill purpose

说明

面向对象风格 (method):

public bool CairoContext::inFill ( string $x , string $y )

过程化风格:

bool cairo_in_fill ( CairoContext $context , string $x , string $y )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

x

Description...

y

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::identityMatrix
CairoContext::inStroke
CairoContext


The inStroke purpose

CairoContext::inFill
CairoContext::lineTo
CairoContext
PHP Manual

CairoContext::inStroke

cairo_in_stroke

(PECL cairo >= 0.1.0)

CairoContext::inStroke -- cairo_in_stroke — The inStroke purpose

说明

面向对象风格 (method):

public bool CairoContext::inStroke ( string $x , string $y )

过程化风格:

bool cairo_in_stroke ( CairoContext $context , string $x , string $y )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

x

Description...

y

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::inFill
CairoContext::lineTo
CairoContext


The lineTo purpose

CairoContext::inStroke
CairoContext::mask
CairoContext
PHP Manual

CairoContext::lineTo

cairo_line_to

(PECL cairo >= 0.1.0)

CairoContext::lineTo -- cairo_line_to — The lineTo purpose

说明

面向对象风格 (method):

public void CairoContext::lineTo ( string $x , string $y )

过程化风格:

void cairo_line_to ( CairoContext $context , string $x , string $y )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

x

Description...

y

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::inStroke
CairoContext::mask
CairoContext


The mask purpose

CairoContext::lineTo
CairoContext::maskSurface
CairoContext
PHP Manual

CairoContext::mask

cairo_mask

(PECL cairo >= 0.1.0)

CairoContext::mask -- cairo_mask — The mask purpose

说明

面向对象风格 (method):

public void CairoContext::mask ( string $pattern )

过程化风格:

void cairo_mask ( CairoContext $context , CairoPattern $pattern )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

pattern

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::lineTo
CairoContext::maskSurface
CairoContext


The maskSurface purpose

CairoContext::mask
CairoContext::moveTo
CairoContext
PHP Manual

CairoContext::maskSurface

cairo_mask_surface

(PECL cairo >= 0.1.0)

CairoContext::maskSurface -- cairo_mask_surface — The maskSurface purpose

说明

面向对象风格 (method):

public void CairoContext::maskSurface ( string $surface [, string $x [, string $y ]] )

过程化风格:

void cairo_mask_surface ( CairoContext $context , CairoSurface $surface [, string $x [, string $y ]] )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

surface

Description...

x

Description...

y

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::mask
CairoContext::moveTo
CairoContext


The moveTo purpose

CairoContext::maskSurface
CairoContext::newPath
CairoContext
PHP Manual

CairoContext::moveTo

cairo_move_to

(PECL cairo >= 0.1.0)

CairoContext::moveTo -- cairo_move_to — The moveTo purpose

说明

面向对象风格 (method):

public void CairoContext::moveTo ( string $x , string $y )

过程化风格:

void cairo_move_to ( CairoContext $context , string $x , string $y )

Begin a new sub-path. After this call the current point will be (x, y).

参数

context

A valid CairoContext object.

x

The x coordinate of the new position.

y

The y coordinate of the new position

返回值

没有返回值。

范例

Example #1 面向对象风格

<?php

$s = new CairoImageSurface(CairoFormat::ARGB32, 100, 100);
$c = new CairoContext($s);

$c->setSourceRgb(0, 0, 0);
$c->paint();

// Move 10 pixels across, and 10 pixels down
$c->moveTo(10, 10);
$c->lineTo(90, 90);
$c->setLineWidth(2);
$c->setSourceRgb(1, 1, 1);
$c->stroke();

// Move 90 pixels across, and 10 pixels down
$c->moveTo(90, 10);
$c->lineTo(10, 90);
$c->setLineWidth(2);
$c->setSourceRgb(1, 1, 1);
$c->stroke();

$s->writeToPng(dirname(__FILE__) . '/CairoContext_moveTo.png');
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php

$s = cairo_image_surface_create(CAIRO_SURFACE_TYPE_IMAGE, 100, 100);
$c = cairo_create($s);

cairo_set_source_rgb($c, 0, 0, 0);
cairo_paint($c);

// Move 10 pixels across, and 10 pixels down
cairo_move_to($c, 10, 10);
cairo_line_to($c, 90, 90);
cairo_set_line_width($c, 2);
cairo_set_source_rgb($c, 1, 1, 1);
cairo_stroke($c);

// Move 90 pixels across, and 10 pixels down
cairo_move_to($c, 90, 10);
cairo_line_to($c, 10, 90);
cairo_set_line_width($c, 2);
cairo_set_source_rgb($c, 1, 1, 1);
cairo_stroke($c);

cairo_surface_write_to_png($s, dirname(__FILE__) . '/cairo_move_to.png');
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::maskSurface
CairoContext::newPath
CairoContext


The newPath purpose

CairoContext::moveTo
CairoContext::newSubPath
CairoContext
PHP Manual

CairoContext::newPath

cairo_new_path

(PECL cairo >= 0.1.0)

CairoContext::newPath -- cairo_new_path — The newPath purpose

说明

面向对象风格 (method):

public void CairoContext::newPath ( void )

过程化风格:

void cairo_new_path ( CairoContext $context )

Clears the current path. After this call there will be no path and no current point.

参数

context

A valid CairoContext object.

返回值

没有返回值。

范例

Example #1 面向对象风格

<?php
// [...]
CairoContext::newPath();
?>

Example #2 过程化风格

<?php
// [...]
cairo_new_path($context);
?>

参见

  • CairoContext::appendPath() - Appends a path to current path
  • CairoContext::closePath() - Closes the current path

CairoContext::moveTo
CairoContext::newSubPath
CairoContext


The newSubPath purpose

CairoContext::newPath
CairoContext::paint
CairoContext
PHP Manual

CairoContext::newSubPath

cairo_new_sub_path

(PECL cairo >= 0.1.0)

CairoContext::newSubPath -- cairo_new_sub_path — The newSubPath purpose

说明

面向对象风格 (method):

public void CairoContext::newSubPath ( void )

过程化风格:

void cairo_new_sub_path ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::newPath
CairoContext::paint
CairoContext


The paint purpose

CairoContext::newSubPath
CairoContext::paintWithAlpha
CairoContext
PHP Manual

CairoContext::paint

cairo_paint

(PECL cairo >= 0.1.0)

CairoContext::paint -- cairo_paint — The paint purpose

说明

面向对象风格 (method):

public void CairoContext::paint ( void )

过程化风格:

void cairo_paint ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::newSubPath
CairoContext::paintWithAlpha
CairoContext


The paintWithAlpha purpose

CairoContext::paint
CairoContext::pathExtents
CairoContext
PHP Manual

CairoContext::paintWithAlpha

cairo_paint_with_alpha

(PECL cairo >= 0.1.0)

CairoContext::paintWithAlpha -- cairo_paint_with_alpha — The paintWithAlpha purpose

说明

面向对象风格 (method):

public void CairoContext::paintWithAlpha ( string $alpha )

过程化风格:

void cairo_paint_with_alpha ( CairoContext $context , string $alpha )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

alpha

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::paint
CairoContext::pathExtents
CairoContext


The pathExtents purpose

CairoContext::paintWithAlpha
CairoContext::popGroup
CairoContext
PHP Manual

CairoContext::pathExtents

cairo_path_extents

(PECL cairo >= 0.1.0)

CairoContext::pathExtents -- cairo_path_extents — The pathExtents purpose

说明

面向对象风格 (method):

public array CairoContext::pathExtents ( void )

过程化风格:

array cairo_path_extents ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::paintWithAlpha
CairoContext::popGroup
CairoContext


The popGroup purpose

CairoContext::pathExtents
CairoContext::popGroupToSource
CairoContext
PHP Manual

CairoContext::popGroup

cairo_pop_group

(PECL cairo >= 0.1.0)

CairoContext::popGroup -- cairo_pop_group — The popGroup purpose

说明

面向对象风格 (method):

public void CairoContext::popGroup ( void )

过程化风格:

void cairo_pop_group ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::pathExtents
CairoContext::popGroupToSource
CairoContext


The popGroupToSource purpose

CairoContext::popGroup
CairoContext::pushGroup
CairoContext
PHP Manual

CairoContext::popGroupToSource

cairo_pop_group_to_source

(PECL cairo >= 0.1.0)

CairoContext::popGroupToSource -- cairo_pop_group_to_source — The popGroupToSource purpose

说明

面向对象风格 (method):

public void CairoContext::popGroupToSource ( void )

过程化风格:

void cairo_pop_group_to_source ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::popGroup
CairoContext::pushGroup
CairoContext


The pushGroup purpose

CairoContext::popGroupToSource
CairoContext::pushGroupWithContent
CairoContext
PHP Manual

CairoContext::pushGroup

cairo_push_group

(PECL cairo >= 0.1.0)

CairoContext::pushGroup -- cairo_push_group — The pushGroup purpose

说明

面向对象风格 (method):

public void CairoContext::pushGroup ( void )

过程化风格:

void cairo_push_group ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::popGroupToSource
CairoContext::pushGroupWithContent
CairoContext


The pushGroupWithContent purpose

CairoContext::pushGroup
CairoContext::rectangle
CairoContext
PHP Manual

CairoContext::pushGroupWithContent

cairo_push_group_with_content

(PECL cairo >= 0.1.0)

CairoContext::pushGroupWithContent -- cairo_push_group_with_content — The pushGroupWithContent purpose

说明

面向对象风格 (method):

public void CairoContext::pushGroupWithContent ( string $content )

过程化风格:

void cairo_push_group_with_content ( CairoContext $context , string $content )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

content

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::pushGroup
CairoContext::rectangle
CairoContext


The rectangle purpose

CairoContext::pushGroupWithContent
CairoContext::relCurveTo
CairoContext
PHP Manual

CairoContext::rectangle

cairo_rectangle

(PECL cairo >= 0.1.0)

CairoContext::rectangle -- cairo_rectangle — The rectangle purpose

说明

面向对象风格 (method):

public void CairoContext::rectangle ( string $x , string $y , string $width , string $height )

过程化风格:

void cairo_rectangle ( CairoContext $context , string $x , string $y , string $width , string $height )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

x

Description...

y

Description...

width

Description...

height

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::pushGroupWithContent
CairoContext::relCurveTo
CairoContext


The relCurveTo purpose

CairoContext::rectangle
CairoContext::relLineTo
CairoContext
PHP Manual

CairoContext::relCurveTo

cairo_rel_curve_to

(PECL cairo >= 0.1.0)

CairoContext::relCurveTo -- cairo_rel_curve_to — The relCurveTo purpose

说明

面向对象风格 (method):

public void CairoContext::relCurveTo ( string $x1 , string $y1 , string $x2 , string $y2 , string $x3 , string $y3 )

过程化风格:

void cairo_rel_curve_to ( CairoContext $context , string $x1 , string $y1 , string $x2 , string $y2 , string $x3 , string $y3 )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

x1

Description...

y1

Description...

x2

Description...

y2

Description...

x3

Description...

y3

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::rectangle
CairoContext::relLineTo
CairoContext


The relLineTo purpose

CairoContext::relCurveTo
CairoContext::relMoveTo
CairoContext
PHP Manual

CairoContext::relLineTo

cairo_rel_line_to

(PECL cairo >= 0.1.0)

CairoContext::relLineTo -- cairo_rel_line_to — The relLineTo purpose

说明

面向对象风格 (method):

public void CairoContext::relLineTo ( string $x , string $y )

过程化风格:

void cairo_rel_line_to ( CairoContext $context , string $x , string $y )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

x

Description...

y

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::relCurveTo
CairoContext::relMoveTo
CairoContext


The relMoveTo purpose

CairoContext::relLineTo
CairoContext::resetClip
CairoContext
PHP Manual

CairoContext::relMoveTo

cairo_rel_move_to

(PECL cairo >= 0.1.0)

CairoContext::relMoveTo -- cairo_rel_move_to — The relMoveTo purpose

说明

面向对象风格 (method):

public void CairoContext::relMoveTo ( string $x , string $y )

过程化风格:

void cairo_rel_move_to ( CairoContext $context , string $x , string $y )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

x

Description...

y

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::relLineTo
CairoContext::resetClip
CairoContext


The resetClip purpose

CairoContext::relMoveTo
CairoContext::restore
CairoContext
PHP Manual

CairoContext::resetClip

cairo_reset_clip

(PECL cairo >= 0.1.0)

CairoContext::resetClip -- cairo_reset_clip — The resetClip purpose

说明

面向对象风格 (method):

public void CairoContext::resetClip ( void )

过程化风格:

void cairo_reset_clip ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::relMoveTo
CairoContext::restore
CairoContext


The restore purpose

CairoContext::resetClip
CairoContext::rotate
CairoContext
PHP Manual

CairoContext::restore

cairo_restore

(PECL cairo >= 0.1.0)

CairoContext::restore -- cairo_restore — The restore purpose

说明

面向对象风格 (method):

public void CairoContext::restore ( void )

过程化风格:

void cairo_restore ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::resetClip
CairoContext::rotate
CairoContext


The rotate purpose

CairoContext::restore
CairoContext::save
CairoContext
PHP Manual

CairoContext::rotate

cairo_rotate

(PECL cairo >= 0.1.0)

CairoContext::rotate -- cairo_rotate — The rotate purpose

说明

面向对象风格 (method):

public void CairoContext::rotate ( string $angle )

过程化风格:

void cairo_rotate ( CairoContext $context , string $angle )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

angle

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::restore
CairoContext::save
CairoContext


The save purpose

CairoContext::rotate
CairoContext::scale
CairoContext
PHP Manual

CairoContext::save

cairo_save

(PECL cairo >= 0.1.0)

CairoContext::save -- cairo_save — The save purpose

说明

面向对象风格 (method):

public void CairoContext::save ( void )

过程化风格:

void cairo_save ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::rotate
CairoContext::scale
CairoContext


The scale purpose

CairoContext::save
CairoContext::selectFontFace
CairoContext
PHP Manual

CairoContext::scale

cairo_scale

(PECL cairo >= 0.1.0)

CairoContext::scale -- cairo_scale — The scale purpose

说明

面向对象风格 (method):

public void CairoContext::scale ( string $x , string $y )

过程化风格:

void cairo_scale ( CairoContext $context , string $x , string $y )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

x

Description...

y

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::save
CairoContext::selectFontFace
CairoContext


The selectFontFace purpose

CairoContext::scale
CairoContext::setAntialias
CairoContext
PHP Manual

CairoContext::selectFontFace

cairo_select_font_face

(PECL cairo >= 0.1.0)

CairoContext::selectFontFace -- cairo_select_font_face — The selectFontFace purpose

说明

面向对象风格 (method):

public void CairoContext::selectFontFace ( string $family [, string $slant [, string $weight ]] )

过程化风格:

void cairo_select_font_face ( CairoContext $context , string $family [, string $slant [, string $weight ]] )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

family

Description...

slant

Description...

weight

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::scale
CairoContext::setAntialias
CairoContext


The setAntialias purpose

CairoContext::selectFontFace
CairoContext::setDash
CairoContext
PHP Manual

CairoContext::setAntialias

cairo_set_antialias

(PECL cairo >= 0.1.0)

CairoContext::setAntialias -- cairo_set_antialias — The setAntialias purpose

说明

面向对象风格 (method):

public void CairoContext::setAntialias ([ string $antialias ] )

过程化风格:

void cairo_set_antialias ( CairoContext $context [, string $antialias ] )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

antialias

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::selectFontFace
CairoContext::setDash
CairoContext


The setDash purpose

CairoContext::setAntialias
CairoContext::setFillRule
CairoContext
PHP Manual

CairoContext::setDash

cairo_set_dash

(PECL cairo >= 0.1.0)

CairoContext::setDash -- cairo_set_dash — The setDash purpose

说明

面向对象风格 (method):

public void CairoContext::setDash ( string $dashes [, string $offset ] )

过程化风格:

void cairo_set_dash ( CairoContext $context , array $dashes [, string $offset ] )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

dashes

Description...

offset

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::setAntialias
CairoContext::setFillRule
CairoContext


The setFillRule purpose

CairoContext::setDash
CairoContext::setFontFace
CairoContext
PHP Manual

CairoContext::setFillRule

cairo_set_fill_rule

(PECL cairo >= 0.1.0)

CairoContext::setFillRule -- cairo_set_fill_rule — The setFillRule purpose

说明

面向对象风格 (method):

public void CairoContext::setFillRule ( string $setting )

过程化风格:

void cairo_set_fill_rule ( CairoContext $context , string $setting )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

setting

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::setDash
CairoContext::setFontFace
CairoContext


The setFontFace purpose

CairoContext::setFillRule
CairoContext::setFontMatrix
CairoContext
PHP Manual

CairoContext::setFontFace

cairo_set_font_face

(PECL cairo >= 0.1.0)

CairoContext::setFontFace -- cairo_set_font_face — The setFontFace purpose

说明

面向对象风格 (method):

public void CairoContext::setFontFace ( CairoFontFace $fontface )

过程化风格:

void cairo_set_font_face ( CairoContext $context , CairoFontFace $fontface )

Sets the font-face for a given context.

参数

context

A CairoContext object to change the font-face for.

fontface

A CairoFontFace object

返回值

No value is returned

范例

Example #1 面向对象风格

<?php
// New surface with white background
$s = new CairoImageSurface(CairoFormat::ARGB32, 300, 100);
$c = new CairoContext($s);
$c->setSourceRgb(1, 1, 1);
$c->paint();

// Draw some text
$c->setSourceRgb(0, 0, 0);
$c->moveTo(10, 60);
// Create a new font face
$f = new CairoToyFontFace("sans-serif", CairoFontSlant::NORMAL, CairoFontWeight::NORMAL);
$c->setFontFace($f);
$c->setFontSize(30);
$c->showText('Hello, World!');
$s->writeToPng(dirname(__FILE__) . '/setFontFace.png');
?>

Example #2 过程化风格

<?php
/* ... */
?>

参见

  • CairoContext::setFontSize() - The setFontSize purpose
  • CairoContext::showText() - The showText purpose

CairoContext::setFillRule
CairoContext::setFontMatrix
CairoContext


The setFontMatrix purpose

CairoContext::setFontFace
CairoContext::setFontOptions
CairoContext
PHP Manual

CairoContext::setFontMatrix

cairo_set_font_matrix

(PECL cairo >= 0.1.0)

CairoContext::setFontMatrix -- cairo_set_font_matrix — The setFontMatrix purpose

说明

面向对象风格 (method):

public void CairoContext::setFontMatrix ( string $matrix )

过程化风格:

void cairo_set_font_matrix ( CairoContext $context , CairoMatrix $matrix )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

matrix

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::setFontFace
CairoContext::setFontOptions
CairoContext


The setFontOptions purpose

CairoContext::setFontMatrix
CairoContext::setFontSize
CairoContext
PHP Manual

CairoContext::setFontOptions

cairo_set_font_options

(PECL cairo >= 0.1.0)

CairoContext::setFontOptions -- cairo_set_font_options — The setFontOptions purpose

说明

面向对象风格 (method):

public void CairoContext::setFontOptions ( string $fontoptions )

过程化风格:

void cairo_set_font_options ( CairoContext $context , CairoFontOptions $fontoptions )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

fontoptions

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::setFontMatrix
CairoContext::setFontSize
CairoContext


The setFontSize purpose

CairoContext::setFontOptions
CairoContext::setLineCap
CairoContext
PHP Manual

CairoContext::setFontSize

cairo_set_font_size

(PECL cairo >= 0.1.0)

CairoContext::setFontSize -- cairo_set_font_size — The setFontSize purpose

说明

面向对象风格 (method):

public void CairoContext::setFontSize ( string $size )

过程化风格:

void cairo_set_font_size ( CairoContext $context , string $size )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

size

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::setFontOptions
CairoContext::setLineCap
CairoContext


The setLineCap purpose

CairoContext::setFontSize
CairoContext::setLineJoin
CairoContext
PHP Manual

CairoContext::setLineCap

cairo_set_line_cap

(PECL cairo >= 0.1.0)

CairoContext::setLineCap -- cairo_set_line_cap — The setLineCap purpose

说明

面向对象风格 (method):

public void CairoContext::setLineCap ( string $setting )

过程化风格:

void cairo_set_line_cap ( CairoContext $context , string $setting )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

setting

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::setFontSize
CairoContext::setLineJoin
CairoContext


The setLineJoin purpose

CairoContext::setLineCap
CairoContext::setLineWidth
CairoContext
PHP Manual

CairoContext::setLineJoin

cairo_set_line_join

(PECL cairo >= 0.1.0)

CairoContext::setLineJoin -- cairo_set_line_join — The setLineJoin purpose

说明

面向对象风格 (method):

public void CairoContext::setLineJoin ( string $setting )

过程化风格:

void cairo_set_line_join ( CairoContext $context , string $setting )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

setting

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::setLineCap
CairoContext::setLineWidth
CairoContext


The setLineWidth purpose

CairoContext::setLineJoin
CairoContext::setMatrix
CairoContext
PHP Manual

CairoContext::setLineWidth

cairo_set_line_width

(PECL cairo >= 0.1.0)

CairoContext::setLineWidth -- cairo_set_line_width — The setLineWidth purpose

说明

面向对象风格 (method):

public void CairoContext::setLineWidth ( string $width )

过程化风格:

void cairo_set_line_width ( CairoContext $context , string $width )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

width

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::setLineJoin
CairoContext::setMatrix
CairoContext


The setMatrix purpose

CairoContext::setLineWidth
CairoContext::setMiterLimit
CairoContext
PHP Manual

CairoContext::setMatrix

cairo_set_matrix

(PECL cairo >= 0.1.0)

CairoContext::setMatrix -- cairo_set_matrix — The setMatrix purpose

说明

面向对象风格 (method):

public void CairoContext::setMatrix ( string $matrix )

过程化风格:

void cairo_set_matrix ( CairoContext $context , CairoMatrix $matrix )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

matrix

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::setLineWidth
CairoContext::setMiterLimit
CairoContext


The setMiterLimit purpose

CairoContext::setMatrix
CairoContext::setOperator
CairoContext
PHP Manual

CairoContext::setMiterLimit

cairo_set_miter_limit

(PECL cairo >= 0.1.0)

CairoContext::setMiterLimit -- cairo_set_miter_limit — The setMiterLimit purpose

说明

面向对象风格 (method):

public void CairoContext::setMiterLimit ( string $limit )

过程化风格:

void cairo_set_miter_limit ( CairoContext $context , string $limit )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

limit

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::setMatrix
CairoContext::setOperator
CairoContext


The setOperator purpose

CairoContext::setMiterLimit
CairoContext::setScaledFont
CairoContext
PHP Manual

CairoContext::setOperator

cairo_set_operator

(PECL cairo >= 0.1.0)

CairoContext::setOperator -- cairo_set_operator — The setOperator purpose

说明

面向对象风格 (method):

public void CairoContext::setOperator ( string $setting )

过程化风格:

void cairo_set_operator ( CairoContext $context , string $setting )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

setting

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::setMiterLimit
CairoContext::setScaledFont
CairoContext


The setScaledFont purpose

CairoContext::setOperator
CairoContext::setSource
CairoContext
PHP Manual

CairoContext::setScaledFont

cairo_set_scaled_font

(PECL cairo >= 0.1.0)

CairoContext::setScaledFont -- cairo_set_scaled_font — The setScaledFont purpose

说明

面向对象风格 (method):

public void CairoContext::setScaledFont ( string $scaledfont )

过程化风格:

void cairo_set_scaled_font ( CairoContext $context , CairoScaledFont $scaledfont )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

scaledfont

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::setOperator
CairoContext::setSource
CairoContext


The setSource purpose

CairoContext::setScaledFont
CairoContext::setSourceRGB
CairoContext
PHP Manual

CairoContext::setSource

cairo_set_source

(PECL cairo >= 0.1.0)

CairoContext::setSource -- cairo_set_source — The setSource purpose

说明

面向对象风格 (method):

public void CairoContext::setSource ( string $pattern )

过程化风格:

void cairo_set_source ( CairoContext $context , CairoPattern $pattern )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

pattern

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::setScaledFont
CairoContext::setSourceRGB
CairoContext


The setSourceRGB purpose

CairoContext::setSource
CairoContext::setSourceRGBA
CairoContext
PHP Manual

CairoContext::setSourceRGB

cairo_set_source

(PECL cairo >= 0.1.0)

CairoContext::setSourceRGB -- cairo_set_source — The setSourceRGB purpose

说明

面向对象风格 (method):

public void CairoContext::setSourceRGB ( string $red , string $green , string $blue )

过程化风格:

void cairo_set_source ( CairoContext $context , CairoPattern $pattern )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

pattern

Description...

red

Description...

green

Description...

blue

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::setSource
CairoContext::setSourceRGBA
CairoContext


The setSourceRGBA purpose

CairoContext::setSourceRGB
CairoContext::setSourceSurface
CairoContext
PHP Manual

CairoContext::setSourceRGBA

cairo_set_source

(PECL cairo >= 0.1.0)

CairoContext::setSourceRGBA -- cairo_set_source — The setSourceRGBA purpose

说明

面向对象风格 (method):

public void CairoContext::setSourceRGBA ( string $red , string $green , string $blue , string $alpha )

过程化风格:

void cairo_set_source ( CairoContext $context , CairoPattern $pattern )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

pattern

Description...

red

Description...

green

Description...

blue

Description...

alpha

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::setSourceRGB
CairoContext::setSourceSurface
CairoContext


The setSourceSurface purpose

CairoContext::setSourceRGBA
CairoContext::setTolerance
CairoContext
PHP Manual

CairoContext::setSourceSurface

cairo_set_source_surface

(PECL cairo >= 0.1.0)

CairoContext::setSourceSurface -- cairo_set_source_surface — The setSourceSurface purpose

说明

面向对象风格 (method):

public void CairoContext::setSourceSurface ( string $surface [, string $x [, string $y ]] )

过程化风格:

void cairo_set_source_surface ( CairoContext $context , CairoSurface $surface [, string $x [, string $y ]] )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

surface

Description...

x

Description...

y

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::setSourceRGBA
CairoContext::setTolerance
CairoContext


The setTolerance purpose

CairoContext::setSourceSurface
CairoContext::showPage
CairoContext
PHP Manual

CairoContext::setTolerance

cairo_set_tolerance

(PECL cairo >= 0.1.0)

CairoContext::setTolerance -- cairo_set_tolerance — The setTolerance purpose

说明

面向对象风格 (method):

public void CairoContext::setTolerance ( string $tolerance )

过程化风格:

void cairo_set_tolerance ( CairoContext $context , string $tolerance )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

tolerance

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::setSourceSurface
CairoContext::showPage
CairoContext


The showPage purpose

CairoContext::setTolerance
CairoContext::showText
CairoContext
PHP Manual

CairoContext::showPage

cairo_show_page

(PECL cairo >= 0.1.0)

CairoContext::showPage -- cairo_show_page — The showPage purpose

说明

面向对象风格 (method):

public void CairoContext::showPage ( void )

过程化风格:

void cairo_show_page ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::setTolerance
CairoContext::showText
CairoContext


The showText purpose

CairoContext::showPage
CairoContext::status
CairoContext
PHP Manual

CairoContext::showText

cairo_show_text

(PECL cairo >= 0.1.0)

CairoContext::showText -- cairo_show_text — The showText purpose

说明

面向对象风格 (method):

public void CairoContext::showText ( string $text )

过程化风格:

void cairo_show_text ( CairoContext $context , string $text )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

text

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::showPage
CairoContext::status
CairoContext


The status purpose

CairoContext::showText
CairoContext::stroke
CairoContext
PHP Manual

CairoContext::status

cairo_status

(PECL cairo >= 0.1.0)

CairoContext::status -- cairo_status — The status purpose

说明

面向对象风格 (method):

public int CairoContext::status ( void )

过程化风格:

int cairo_status ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::showText
CairoContext::stroke
CairoContext


The stroke purpose

CairoContext::status
CairoContext::strokeExtents
CairoContext
PHP Manual

CairoContext::stroke

cairo_stroke

(PECL cairo >= 0.1.0)

CairoContext::stroke -- cairo_stroke — The stroke purpose

说明

面向对象风格 (method):

public void CairoContext::stroke ( void )

过程化风格:

void cairo_stroke ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::status
CairoContext::strokeExtents
CairoContext


The strokeExtents purpose

CairoContext::stroke
CairoContext::strokePreserve
CairoContext
PHP Manual

CairoContext::strokeExtents

cairo_stroke_extents

(PECL cairo >= 0.1.0)

CairoContext::strokeExtents -- cairo_stroke_extents — The strokeExtents purpose

说明

面向对象风格 (method):

public array CairoContext::strokeExtents ( void )

过程化风格:

array cairo_stroke_extents ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::stroke
CairoContext::strokePreserve
CairoContext


The strokePreserve purpose

CairoContext::strokeExtents
CairoContext::textExtents
CairoContext
PHP Manual

CairoContext::strokePreserve

cairo_stroke_preserve

(PECL cairo >= 0.1.0)

CairoContext::strokePreserve -- cairo_stroke_preserve — The strokePreserve purpose

说明

面向对象风格 (method):

public void CairoContext::strokePreserve ( void )

过程化风格:

void cairo_stroke_preserve ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::strokeExtents
CairoContext::textExtents
CairoContext


The textExtents purpose

CairoContext::strokePreserve
CairoContext::textPath
CairoContext
PHP Manual

CairoContext::textExtents

cairo_text_extents

(PECL cairo >= 0.1.0)

CairoContext::textExtents -- cairo_text_extents — The textExtents purpose

说明

面向对象风格 (method):

public array CairoContext::textExtents ( string $text )

过程化风格:

array cairo_text_extents ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

text

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::strokePreserve
CairoContext::textPath
CairoContext


The textPath purpose

CairoContext::textExtents
CairoContext::transform
CairoContext
PHP Manual

CairoContext::textPath

cairo_text_path

(PECL cairo >= 0.1.0)

CairoContext::textPath -- cairo_text_path — The textPath purpose

说明

面向对象风格

public void CairoContext::textPath ( string $string )

过程化风格

void cairo_text_path ( CairoContext $context , string $text )

Adds closed paths for text to the current path. The generated path, if filled, achieves an effect similar to that of CairoContext::showText().

Text conversion and positioning is done similar to CairoContext::showText().

Like CairoContext::showText(), after this call the current point is moved to the origin of where the next glyph would be placed in this same progression. That is, the current point will be at the origin of the final glyph offset by its advance values. This allows for chaining multiple calls to CairoContext::showText() without having to set current point in between.

Note: The CairoContext::textPath() function call is part of what the cairo designers call the "toy" text API. It is convenient for short demos and simple programs, but it is not expected to be adequate for serious text-using applications. See CairoContext::glyphPath() for the "real" text path API in cairo.

参数

context

A CairoContext object

text

Description...

string

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::textExtents
CairoContext::transform
CairoContext


The transform purpose

CairoContext::textPath
CairoContext::translate
CairoContext
PHP Manual

CairoContext::transform

cairo_transform

(PECL cairo >= 0.1.0)

CairoContext::transform -- cairo_transform — The transform purpose

说明

面向对象风格 (method):

public void CairoContext::transform ( string $matrix )

过程化风格:

void cairo_transform ( CairoContext $context , CairoMatrix $matrix )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

matrix

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::textPath
CairoContext::translate
CairoContext


The translate purpose

CairoContext::transform
CairoContext::userToDevice
CairoContext
PHP Manual

CairoContext::translate

cairo_translate

(PECL cairo >= 0.1.0)

CairoContext::translate -- cairo_translate — The translate purpose

说明

面向对象风格 (method):

public void CairoContext::translate ( string $x , string $y )

过程化风格:

void cairo_translate ( CairoContext $context , string $x , string $y )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

x

Description...

y

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::transform
CairoContext::userToDevice
CairoContext


The userToDevice purpose

CairoContext::translate
CairoContext::userToDeviceDistance
CairoContext
PHP Manual

CairoContext::userToDevice

cairo_user_to_device

(PECL cairo >= 0.1.0)

CairoContext::userToDevice -- cairo_user_to_device — The userToDevice purpose

说明

面向对象风格 (method):

public array CairoContext::userToDevice ( string $x , string $y )

过程化风格:

array cairo_user_to_device ( CairoContext $context , string $x , string $y )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

x

Description...

y

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::translate
CairoContext::userToDeviceDistance
CairoContext


The userToDeviceDistance purpose

CairoContext::userToDevice
CairoException
CairoContext
PHP Manual

CairoContext::userToDeviceDistance

cairo_user_to_device_distance

(PECL cairo >= 0.1.0)

CairoContext::userToDeviceDistance -- cairo_user_to_device_distance — The userToDeviceDistance purpose

说明

面向对象风格 (method):

public array CairoContext::userToDeviceDistance ( string $x , string $y )

过程化风格:

array cairo_user_to_device_distance ( CairoContext $context , string $x , string $y )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

x

Description...

y

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoContext::userToDevice
CairoException
CairoContext


The CairoException class

(PECL cairo >= 0.1.0)

简介

Exception class throwed by Cairo functions and methods

类摘要

CairoException extends Exception {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
CairoContext::userToDeviceDistance
CairoStatus
Cairo


The CairoStatus class

(No version information available, might only be in Git)

简介

CairoStatus is used to indicate errors that can occur when using Cairo. In some cases it is returned directly by functions. but when using CairoContext, the last error, if any, is stored in the object and can be retrieved with CairoContext::status() or cairo_status(). New entries may be added in future versions.

Use Cairo::statusToString() or cairo_status_to_string() to get a human-readable representation of an error message.

类摘要

CairoStatus {
/* 常量 */
const integer SUCCESS = 0 ;
const integer NO_MEMORY = 1 ;
const integer INVALID_RESTORE = 2 ;
const integer INVALID_POP_GROUP = 3 ;
const integer NO_CURRENT_POINT = 4 ;
const integer INVALID_MATRIX = 5 ;
const integer INVALID_STATUS = 6 ;
const integer NULL_POINTER = 7 ;
const integer INVALID_STRING = 8 ;
const integer INVALID_PATH_DATA = 9 ;
const integer READ_ERROR = 10 ;
const integer WRITE_ERROR = 11 ;
const integer SURFACE_FINISHED = 12 ;
const integer SURFACE_TYPE_MISMATCH = 13 ;
const integer PATTERN_TYPE_MISMATCH = 14 ;
const integer INVALID_CONTENT = 15 ;
const integer INVALID_FORMAT = 16 ;
const integer INVALID_VISUAL = 17 ;
const integer FILE_NOT_FOUND = 18 ;
const integer INVALID_DASH = 19 ;
const integer INVALID_DSC_COMMENT = 20 ;
const integer INVALID_INDEX = 21 ;
const integer CLIP_NOT_REPRESENTABLE = 22 ;
const integer TEMP_FILE_ERROR = 23 ;
const integer INVALID_STRIDE = 24 ;
}

预定义常量

CairoStatus::SUCCESS

No error has occurred

CairoStatus::NO_MEMORY

Out of memory

CairoStatus::INVALID_RESTORE

cairo_restore() called without matching cairo_save()

CairoStatus::INVALID_POP_GROUP

No saved group to pop

CairoStatus::NO_CURRENT_POINT

No current point defined

CairoStatus::INVALID_MATRIX

Invalid matrix (not invertible)

CairoStatus::INVALID_STATUS

Invalid value for an input CairoStatus>

CairoStatus::NULL_POINTER

Null pointer

CairoStatus::INVALID_STRING

Input string not valid UTF-8 string

CairoStatus::INVALID_PATH_DATA

Input path data not valid

CairoStatus::READ_ERROR

Error while reading from input stream

CairoStatus::WRITE_ERROR

Error while writing to output stream

CairoStatus::SURFACE_FINISHED

Target surface has been finished

CairoStatus::SURFACE_TYPE_MISMATCH

The surface type is not appropriate for the operation

CairoStatus::PATTERN_TYPE_MISMATCH

The pattern type is not appropriate for the operation

CairoStatus::INVALID_CONTENT

Invalid value for an input CairoContent

CairoStatus::INVALID_FORMAT

Invalid value for an input CairoFormat

CairoStatus::INVALID_VISUAL

Invalid value for an input Visual

CairoStatus::FILE_NOT_FOUND

File not found

CairoStatus::INVALID_DASH

Invalid value for a dash setting

CairoStatus::INVALID_DSC_COMMENT

Invalid value for a DSC comment

CairoStatus::INVALID_INDEX

Invalid index passed to getter

CairoStatus::CLIP_NOT_REPRESENTABLE

Clip region not representable in desired format

CairoStatus::TEMP_FILE_ERROR

Error creating or writing to a temporary file

CairoStatus::INVALID_STRIDE

Invalid value for CairoStride

CairoException
CairoSurface
Cairo


The CairoSurface class

(PECL cairo >= 0.1.0)

简介

This is the base-class for all other Surface types. CairoSurface is the abstract type representing all different drawing targets that cairo can render to. The actual drawings are performed using a CairoContext.

类摘要

CairoSurface {
/* 方法 */
public __construct ( void )
public void copyPage ( void )
public void createSimilar ( CairoSurface $other , int $content , string $width , string $height )
public void finish ( void )
public void flush ( void )
public int getContent ( void )
public array getDeviceOffset ( void )
public void getFontOptions ( void )
public int getType ( void )
public void markDirty ( void )
public void markDirtyRectangle ( string $x , string $y , string $width , string $height )
public void setDeviceOffset ( string $x , string $y )
public void setFallbackResolution ( string $x , string $y )
public void showPage ( void )
public int status ( void )
public void writeToPng ( string $file )
}

Table of Contents

  • CairoSurface::__construct — The __construct purpose
  • CairoSurface::copyPage — The copyPage purpose
  • CairoSurface::createSimilar — The createSimilar purpose
  • CairoSurface::finish — The finish purpose
  • CairoSurface::flush — The flush purpose
  • CairoSurface::getContent — The getContent purpose
  • CairoSurface::getDeviceOffset — The getDeviceOffset purpose
  • CairoSurface::getFontOptions — The getFontOptions purpose
  • CairoSurface::getType — The getType purpose
  • CairoSurface::markDirty — The markDirty purpose
  • CairoSurface::markDirtyRectangle — The markDirtyRectangle purpose
  • CairoSurface::setDeviceOffset — The setDeviceOffset purpose
  • CairoSurface::setFallbackResolution — The setFallbackResolution purpose
  • CairoSurface::showPage — The showPage purpose
  • CairoSurface::status — The status purpose
  • CairoSurface::writeToPng — The writeToPng purpose
CairoStatus
CairoSurface::__construct
Cairo


The __construct purpose

CairoSurface
CairoSurface::copyPage
CairoSurface
PHP Manual

CairoSurface::__construct

(PECL cairo >= 0.1.0)

CairoSurface::__construct — The __construct purpose

说明

public CairoSurface::__construct ( void )

CairoSurface is an abstract type and, as such, should not be instantiated in your PHP scripts.

参数

此函数没有参数。

返回值

No return value

注释

Note:

If you're using a PHP version before 5.3, you must destroy the CairoContext associated with a CairoSurface after you destroy the CairoSurface. Otherwise, you're left with a Circular-reference memory leak.

参见

  • CairoImageSurface::__construct() - Creates a new CairoImageSurface

CairoSurface
CairoSurface::copyPage
CairoSurface


The copyPage purpose

CairoSurface::__construct
CairoSurface::createSimilar
CairoSurface
PHP Manual

CairoSurface::copyPage

cairo_copy_page

(PECL cairo >= 0.1.0)

CairoSurface::copyPage -- cairo_copy_page — The copyPage purpose

说明

面向对象风格 (method):

public void CairoSurface::copyPage ( void )

过程化风格:

void cairo_copy_page ( CairoContext $context )

Emits the current page for backends that support multiple pages, but doesn't clear it, so that the contents of the current page will be retained for the next page. Use CairoSurface::showPage() if you want to get an empty page after the emission.

参数

context

A CairoContext object

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSurface::__construct
CairoSurface::createSimilar
CairoSurface


The createSimilar purpose

CairoSurface::copyPage
CairoSurface::finish
CairoSurface
PHP Manual

CairoSurface::createSimilar

(PECL cairo >= 0.1.0)

CairoSurface::createSimilar — The createSimilar purpose

说明

public void CairoSurface::createSimilar ( CairoSurface $other , int $content , string $width , string $height )

Create a new surface that is as compatible as possible with an existing surface. For example the new surface will have the same fallback resolution and font options as other. Generally, the new surface will also use the same backend as other, unless that is not possible for some reason. The type of the returned surface may be examined with CairoSurface::getType(). Initially the surface contents are all 0 (transparent if contents have transparency, black otherwise.)

参数

other

An existing surface used to select the backend of the new surface

content

The content for the new surface. See the CairoContent class for possible values.

width

Width of the new surface, (in device-space units).

height

Height of the new surface, (in device-space units).

返回值

A new CairoSurface

范例

Example #1 CairoSurface::createSimilar() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • CairoContent()

CairoSurface::copyPage
CairoSurface::finish
CairoSurface


The finish purpose

CairoSurface::createSimilar
CairoSurface::flush
CairoSurface
PHP Manual

CairoSurface::finish

(PECL cairo >= 0.1.0)

CairoSurface::finish — The finish purpose

说明

public void CairoSurface::finish ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoSurface::finish() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSurface::createSimilar
CairoSurface::flush
CairoSurface


The flush purpose

CairoSurface::finish
CairoSurface::getContent
CairoSurface
PHP Manual

CairoSurface::flush

(PECL cairo >= 0.1.0)

CairoSurface::flush — The flush purpose

说明

public void CairoSurface::flush ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoSurface::flush() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSurface::finish
CairoSurface::getContent
CairoSurface


The getContent purpose

CairoSurface::flush
CairoSurface::getDeviceOffset
CairoSurface
PHP Manual

CairoSurface::getContent

(PECL cairo >= 0.1.0)

CairoSurface::getContent — The getContent purpose

说明

public int CairoSurface::getContent ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoSurface::getContent() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSurface::flush
CairoSurface::getDeviceOffset
CairoSurface


The getDeviceOffset purpose

CairoSurface::getContent
CairoSurface::getFontOptions
CairoSurface
PHP Manual

CairoSurface::getDeviceOffset

(PECL cairo >= 0.1.0)

CairoSurface::getDeviceOffset — The getDeviceOffset purpose

说明

public array CairoSurface::getDeviceOffset ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoSurface::getDeviceOffset() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSurface::getContent
CairoSurface::getFontOptions
CairoSurface


The getFontOptions purpose

CairoSurface::getDeviceOffset
CairoSurface::getType
CairoSurface
PHP Manual

CairoSurface::getFontOptions

cairo_get_font_options

(PECL cairo >= 0.1.0)

CairoSurface::getFontOptions -- cairo_get_font_options — The getFontOptions purpose

说明

面向对象风格 (method):

public void CairoSurface::getFontOptions ( void )

过程化风格:

void cairo_get_font_options ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSurface::getDeviceOffset
CairoSurface::getType
CairoSurface


The getType purpose

CairoSurface::getFontOptions
CairoSurface::markDirty
CairoSurface
PHP Manual

CairoSurface::getType

(PECL cairo >= 0.1.0)

CairoSurface::getType — The getType purpose

说明

public int CairoSurface::getType ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoSurface::getType() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSurface::getFontOptions
CairoSurface::markDirty
CairoSurface


The markDirty purpose

CairoSurface::getType
CairoSurface::markDirtyRectangle
CairoSurface
PHP Manual

CairoSurface::markDirty

(PECL cairo >= 0.1.0)

CairoSurface::markDirty — The markDirty purpose

说明

public void CairoSurface::markDirty ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoSurface::markDirty() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSurface::getType
CairoSurface::markDirtyRectangle
CairoSurface


The markDirtyRectangle purpose

CairoSurface::markDirty
CairoSurface::setDeviceOffset
CairoSurface
PHP Manual

CairoSurface::markDirtyRectangle

(PECL cairo >= 0.1.0)

CairoSurface::markDirtyRectangle — The markDirtyRectangle purpose

说明

public void CairoSurface::markDirtyRectangle ( string $x , string $y , string $width , string $height )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

x

Description...

y

Description...

width

Description...

height

Description...

返回值

Description...

范例

Example #1 CairoSurface::markDirtyRectangle() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSurface::markDirty
CairoSurface::setDeviceOffset
CairoSurface


The setDeviceOffset purpose

CairoSurface::markDirtyRectangle
CairoSurface::setFallbackResolution
CairoSurface
PHP Manual

CairoSurface::setDeviceOffset

(PECL cairo >= 0.1.0)

CairoSurface::setDeviceOffset — The setDeviceOffset purpose

说明

public void CairoSurface::setDeviceOffset ( string $x , string $y )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

x

Description...

y

Description...

返回值

Description...

范例

Example #1 CairoSurface::setDeviceOffset() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSurface::markDirtyRectangle
CairoSurface::setFallbackResolution
CairoSurface


The setFallbackResolution purpose

CairoSurface::setDeviceOffset
CairoSurface::showPage
CairoSurface
PHP Manual

CairoSurface::setFallbackResolution

(PECL cairo >= 0.1.0)

CairoSurface::setFallbackResolution — The setFallbackResolution purpose

说明

public void CairoSurface::setFallbackResolution ( string $x , string $y )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

x

Description...

y

Description...

返回值

Description...

范例

Example #1 CairoSurface::setFallbackResolution() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSurface::setDeviceOffset
CairoSurface::showPage
CairoSurface


The showPage purpose

CairoSurface::setFallbackResolution
CairoSurface::status
CairoSurface
PHP Manual

CairoSurface::showPage

cairo_show_page

(PECL cairo >= 0.1.0)

CairoSurface::showPage -- cairo_show_page — The showPage purpose

说明

面向对象风格 (method):

public void CairoSurface::showPage ( void )

过程化风格:

void cairo_show_page ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSurface::setFallbackResolution
CairoSurface::status
CairoSurface


The status purpose

CairoSurface::showPage
CairoSurface::writeToPng
CairoSurface
PHP Manual

CairoSurface::status

cairo_status

(PECL cairo >= 0.1.0)

CairoSurface::status -- cairo_status — The status purpose

说明

面向对象风格 (method):

public int CairoSurface::status ( void )

过程化风格:

int cairo_status ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSurface::showPage
CairoSurface::writeToPng
CairoSurface


The writeToPng purpose

CairoSurface::status
CairoSvgSurface
CairoSurface
PHP Manual

CairoSurface::writeToPng

(PECL cairo >= 0.1.0)

CairoSurface::writeToPng — The writeToPng purpose

说明

public void CairoSurface::writeToPng ( string $file )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

file

Description...

返回值

Description...

范例

Example #1 CairoSurface::writeToPng() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSurface::status
CairoSvgSurface
CairoSurface


Svg Surface Backend

(PECL cairo >= 0.1.0)

简介

Svg specific surface class, uses the SVG (standard vector graphics) surface backend.

类摘要

CairoSvgSurface extends CairoSurface {
/* 方法 */
public __construct ( string $file , float $width , float $height )
public static array getVersions ( void )
public void restrictToVersion ( string $version )
public static string versionToString ( int $version )
/* 继承的方法 */
public CairoSurface::__construct ( void )
public void CairoSurface::copyPage ( void )
public void CairoSurface::createSimilar ( CairoSurface $other , int $content , string $width , string $height )
public void CairoSurface::finish ( void )
public void CairoSurface::flush ( void )
public int CairoSurface::getContent ( void )
public array CairoSurface::getDeviceOffset ( void )
public void CairoSurface::getFontOptions ( void )
public int CairoSurface::getType ( void )
public void CairoSurface::markDirty ( void )
public void CairoSurface::markDirtyRectangle ( string $x , string $y , string $width , string $height )
public void CairoSurface::setDeviceOffset ( string $x , string $y )
public void CairoSurface::setFallbackResolution ( string $x , string $y )
public void CairoSurface::showPage ( void )
public int CairoSurface::status ( void )
public void CairoSurface::writeToPng ( string $file )
}

Table of Contents

  • CairoSvgSurface::__construct — The __construct purpose
  • CairoSvgSurface::getVersions — Used to retrieve a list of supported SVG versions
  • CairoSvgSurface::restrictToVersion — The restrictToVersion purpose
  • CairoSvgSurface::versionToString — The versionToString purpose
CairoSurface::writeToPng
CairoSvgSurface::__construct
Cairo


The __construct purpose

CairoSvgSurface
CairoSvgSurface::getVersions
CairoSvgSurface
PHP Manual

CairoSvgSurface::__construct

(PECL cairo >= 0.1.0)

CairoSvgSurface::__construct — The __construct purpose

说明

public CairoSvgSurface::__construct ( string $file , float $width , float $height )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

file

Description...

width

Description...

height

Description...

返回值

Description...

范例

Example #1 CairoSvgSurface::__construct() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSvgSurface
CairoSvgSurface::getVersions
CairoSvgSurface


Used to retrieve a list of supported SVG versions

CairoSvgSurface::__construct
CairoSvgSurface::restrictToVersion
CairoSvgSurface
PHP Manual

CairoSvgSurface::getVersions

cairo_svg_surface_get_versions

(PECL cairo >= 0.1.0)

CairoSvgSurface::getVersions -- cairo_svg_surface_get_versions — Used to retrieve a list of supported SVG versions

说明

面向对象风格 (method):

public static array CairoSvgSurface::getVersions ( void )

过程化风格:

array cairo_svg_get_versions ( void )

Returns a numerically indexed array of currently available CairoSvgVersion constants. In order to retreive the string values for each item, use CairoSvgSurface::versionToString().

参数

此函数没有参数。

返回值

Returns a numerically indexed array of integer values.

范例

Example #1 CairoSvgSurface::getVersions() example

<?php
/* Grab our list of versions */
$versions = CairoSvgSurface::getVersions();
var_dump($versions);

/* echo the string name of each version */
foreach($versions as $id) {
    echo CairoSvgSurface::versionToString($id), PHP_EOL;
}
?>

以上例程的输出类似于：

array(2) {
  [0]=>
  int(0)
  [1]=>
  int(1)
}
SVG 1.1
SVG 1.2

Example #2 过程化风格

<?php
/* Grab our list of versions */
$versions = cairo_svg_surface_get_versions();
var_dump($versions);

/* echo the string name of each version */
foreach($versions as $id) {
    echo cairo_svg_surface_version_to_string($id), PHP_EOL;
}
?>

以上例程的输出类似于：

array(2) {
  [0]=>
  int(0)
  [1]=>
  int(1)
}
SVG 1.1
SVG 1.2

参见

  • CairoSvgSurface::versionToString() - The versionToString purpose

CairoSvgSurface::__construct
CairoSvgSurface::restrictToVersion
CairoSvgSurface


The restrictToVersion purpose

CairoSvgSurface::getVersions
CairoSvgSurface::versionToString
CairoSvgSurface
PHP Manual

CairoSvgSurface::restrictToVersion

(PECL cairo >= 0.1.0)

CairoSvgSurface::restrictToVersion — The restrictToVersion purpose

说明

public void CairoSvgSurface::restrictToVersion ( string $version )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

version

Description...

返回值

Description...

范例

Example #1 CairoSvgSurface::restrictToVersion() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSvgSurface::getVersions
CairoSvgSurface::versionToString
CairoSvgSurface


The versionToString purpose

CairoSvgSurface::restrictToVersion
CairoImageSurface
CairoSvgSurface
PHP Manual

CairoSvgSurface::versionToString

(PECL cairo >= 0.1.0)

CairoSvgSurface::versionToString — The versionToString purpose

说明

public static string CairoSvgSurface::versionToString ( int $version )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

version

Description...

返回值

Description...

范例

Example #1 CairoSvgSurface::versionToString() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSvgSurface::restrictToVersion
CairoImageSurface
CairoSvgSurface


The CairoImageSurface class

(PECL cairo >= 0.1.0)

简介

CairoImageSurface provide the ability to render to memory buffers either allocated by cairo or by the calling code. The supported image formats are those defined in CairoFormat.

类摘要

CairoImageSurface extends CairoSurface {
/* 方法 */
public __construct ( int $format , int $width , int $height )
public static void createForData ( string $data , int $format , int $width , int $height [, int $stride = -1 ] )
public static CairoImageSurface createFromPng ( string $file )
public string getData ( void )
public int getFormat ( void )
public int getHeight ( void )
public int getStride ( void )
public int getWidth ( void )
/* 继承的方法 */
public CairoSurface::__construct ( void )
public void CairoSurface::copyPage ( void )
public void CairoSurface::createSimilar ( CairoSurface $other , int $content , string $width , string $height )
public void CairoSurface::finish ( void )
public void CairoSurface::flush ( void )
public int CairoSurface::getContent ( void )
public array CairoSurface::getDeviceOffset ( void )
public void CairoSurface::getFontOptions ( void )
public int CairoSurface::getType ( void )
public void CairoSurface::markDirty ( void )
public void CairoSurface::markDirtyRectangle ( string $x , string $y , string $width , string $height )
public void CairoSurface::setDeviceOffset ( string $x , string $y )
public void CairoSurface::setFallbackResolution ( string $x , string $y )
public void CairoSurface::showPage ( void )
public int CairoSurface::status ( void )
public void CairoSurface::writeToPng ( string $file )
}

Table of Contents

  • CairoImageSurface::__construct — Creates a new CairoImageSurface
  • CairoImageSurface::createForData — The createForData purpose
  • CairoImageSurface::createFromPng — Creates a new CairoImageSurface form a png image file
  • CairoImageSurface::getData — Gets the image data as string
  • CairoImageSurface::getFormat — Get the image format
  • CairoImageSurface::getHeight — Retrieves the height of the CairoImageSurface
  • CairoImageSurface::getStride — The getStride purpose
  • CairoImageSurface::getWidth — Retrieves the width of the CairoImageSurface
CairoSvgSurface::versionToString
CairoImageSurface::__construct
Cairo


Creates a new CairoImageSurface

CairoImageSurface
CairoImageSurface::createForData
CairoImageSurface
PHP Manual

CairoImageSurface::__construct

(PECL cairo >= 0.1.0)

CairoImageSurface::__construct — Creates a new CairoImageSurface

说明

public CairoImageSurface::__construct ( int $format , int $width , int $height )

Creates a new CairoImageSuface object of type format

参数

format

Can be any defined in CairoFormat

width

The width of the image surface

height

The height of the image surface

返回值

A new CairoImageSurface

范例

Example #1 CairoImageSurface::__construct() example

<?php

// Creates a image with ARGB32 format of 50 width and 50 height
$surface = new CairoImageSurface(CairoFormat::ARGB32, 50,50);

?>

参见

  • CairoContext::__construct() - Creates a new CairoContext

CairoImageSurface
CairoImageSurface::createForData
CairoImageSurface


The createForData purpose

CairoImageSurface::__construct
CairoImageSurface::createFromPng
CairoImageSurface
PHP Manual

CairoImageSurface::createForData

(PECL cairo >= 0.1.0)

CairoImageSurface::createForData — The createForData purpose

说明

public static void CairoImageSurface::createForData ( string $data , int $format , int $width , int $height [, int $stride = -1 ] )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

data

Description...

format

Description...

width

Description...

height

Description...

stride

Description...

返回值

Description...

范例

Example #1 CairoImageSurface::createForData() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoImageSurface::__construct
CairoImageSurface::createFromPng
CairoImageSurface


Creates a new CairoImageSurface form a png image file

CairoImageSurface::createForData
CairoImageSurface::getData
CairoImageSurface
PHP Manual

CairoImageSurface::createFromPng

(PECL cairo >= 0.1.0)

CairoImageSurface::createFromPng — Creates a new CairoImageSurface form a png image file

说明

public static CairoImageSurface CairoImageSurface::createFromPng ( string $file )

Creates a new CairoImageSurface form a png image file

This method should be called static

参数

file

Path to PNG image file

返回值

CairoImageSurface object

范例

Example #1 CairoImageSurface::createFromPng() example

<?php

$surface = CairoImageSurface::createFromPng('/path/to/image/file.png');

?>

以上例程的输出类似于：

...

参见

  • CairoImageSurface::__construct() - Creates a new CairoImageSurface

CairoImageSurface::createForData
CairoImageSurface::getData
CairoImageSurface


Gets the image data as string

CairoImageSurface::createFromPng
CairoImageSurface::getFormat
CairoImageSurface
PHP Manual

CairoImageSurface::getData

(PECL cairo >= 0.1.0)

CairoImageSurface::getData — Gets the image data as string

说明

public string CairoImageSurface::getData ( void )

Returns the image data of this surface or NULL if surface is not an image surface, or if CairoContext::finish(), procedural : cairo_surface_finish(), has been called.

参数

此函数没有参数。

返回值

The image data as string

范例

Example #1 CairoImageSurface::getData() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • CairoImageSurface::getStride() - The getStride purpose

CairoImageSurface::createFromPng
CairoImageSurface::getFormat
CairoImageSurface


Get the image format

CairoImageSurface::getData
CairoImageSurface::getHeight
CairoImageSurface
PHP Manual

CairoImageSurface::getFormat

(PECL cairo >= 0.1.0)

CairoImageSurface::getFormat — Get the image format

说明

public int CairoImageSurface::getFormat ( void )

Retrieves the image format, as one of the CairoFormat defined

参数

此函数没有参数。

返回值

One of the CairoFormat enums

范例

Example #1 CairoImageSurface::getFormat() example

<?php

$surface = new CairoImageSurface(CairoFormat::ARGB32, 50, 50);

var_dump($surface->getFormat()); // 0

$surface2 = new CairoImageSurface(CairoFormat::A8, 50, 50);

var_dump($surface2->getFormat()); // 2

?>

以上例程的输出类似于：

int(0)
int(2)

参见

  • CairoImageSurface::getHeight() - Retrieves the height of the CairoImageSurface
  • CairoImageSurface::getWidth() - Retrieves the width of the CairoImageSurface

CairoImageSurface::getData
CairoImageSurface::getHeight
CairoImageSurface


Retrieves the height of the CairoImageSurface

CairoImageSurface::getFormat
CairoImageSurface::getStride
CairoImageSurface
PHP Manual

CairoImageSurface::getHeight

(PECL cairo >= 0.1.0)

CairoImageSurface::getHeight — Retrieves the height of the CairoImageSurface

说明

public int CairoImageSurface::getHeight ( void )

This methods returns the CairoImageSurface height.

参数

此函数没有参数。

返回值

CairoImageSurface object height

范例

Example #1 CairoImageSurface::getHeight() example

<?php
// creates a new image surface
$surface = new CairoImageSurface(CairoFormat::ARGB32, 80, 50);

//gets the height
var_dump($surface->getHeight());

?>

以上例程的输出类似于：

int(50)

参见

  • CairoImageSurface::getWidth() - Retrieves the width of the CairoImageSurface

CairoImageSurface::getFormat
CairoImageSurface::getStride
CairoImageSurface


The getStride purpose

CairoImageSurface::getHeight
CairoImageSurface::getWidth
CairoImageSurface
PHP Manual

CairoImageSurface::getStride

(PECL cairo >= 0.1.0)

CairoImageSurface::getStride — The getStride purpose

说明

public int CairoImageSurface::getStride ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoImageSurface::getStride() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoImageSurface::getHeight
CairoImageSurface::getWidth
CairoImageSurface


Retrieves the width of the CairoImageSurface

CairoImageSurface::getStride
CairoPdfSurface
CairoImageSurface
PHP Manual

CairoImageSurface::getWidth

(PECL cairo >= 0.1.0)

CairoImageSurface::getWidth — Retrieves the width of the CairoImageSurface

说明

public int CairoImageSurface::getWidth ( void )

Gets the width of the CairoImageSurface

参数

此函数没有参数。

返回值

Returns the width of the CairoImageSurface object

范例

Example #1 CairoImageSurface::getWidth() example

<?php
// creates a new image surface
$surface = new CairoImageSurface(CairoFormat::ARGB32, 80, 50);

//gets the width
var_dump($surface->getWidth());

?>

以上例程的输出类似于：

int(80)

参见

  • CairoImageSurface::getHeight() - Retrieves the height of the CairoImageSurface

CairoImageSurface::getStride
CairoPdfSurface
CairoImageSurface


The CairoPdfSurface class

(PECL cairo >= 0.1.0)

简介

类摘要

CairoPdfSurface extends CairoSurface {
/* 方法 */
public __construct ( string $file , float $width , float $height )
public void setSize ( string $width , string $height )
/* 继承的方法 */
public CairoSurface::__construct ( void )
public void CairoSurface::copyPage ( void )
public void CairoSurface::createSimilar ( CairoSurface $other , int $content , string $width , string $height )
public void CairoSurface::finish ( void )
public void CairoSurface::flush ( void )
public int CairoSurface::getContent ( void )
public array CairoSurface::getDeviceOffset ( void )
public void CairoSurface::getFontOptions ( void )
public int CairoSurface::getType ( void )
public void CairoSurface::markDirty ( void )
public void CairoSurface::markDirtyRectangle ( string $x , string $y , string $width , string $height )
public void CairoSurface::setDeviceOffset ( string $x , string $y )
public void CairoSurface::setFallbackResolution ( string $x , string $y )
public void CairoSurface::showPage ( void )
public int CairoSurface::status ( void )
public void CairoSurface::writeToPng ( string $file )
}

Table of Contents

  • CairoPdfSurface::__construct — The __construct purpose
  • CairoPdfSurface::setSize — The setSize purpose
CairoImageSurface::getWidth
CairoPdfSurface::__construct
Cairo


The __construct purpose

CairoPdfSurface
CairoPdfSurface::setSize
CairoPdfSurface
PHP Manual

CairoPdfSurface::__construct

(PECL cairo >= 0.1.0)

CairoPdfSurface::__construct — The __construct purpose

说明

public CairoPdfSurface::__construct ( string $file , float $width , float $height )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

file

Description...

width

Description...

height

Description...

返回值

Description...

范例

Example #1 CairoPdfSurface::__construct() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoPdfSurface
CairoPdfSurface::setSize
CairoPdfSurface


The setSize purpose

CairoPdfSurface::__construct
CairoPsSurface
CairoPdfSurface
PHP Manual

CairoPdfSurface::setSize

(PECL cairo >= 0.1.0)

CairoPdfSurface::setSize — The setSize purpose

说明

public void CairoPdfSurface::setSize ( string $width , string $height )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

width

Description...

height

Description...

返回值

Description...

范例

Example #1 CairoPdfSurface::setSize() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoPdfSurface::__construct
CairoPsSurface
CairoPdfSurface


The CairoPsSurface class

(PECL cairo >= 0.1.0)

简介

类摘要

CairoPsSurface extends CairoSurface {
/* 方法 */
public __construct ( string $file , float $width , float $height )
public void dscBeginPageSetup ( void )
public void dscBeginSetup ( void )
public void dscComment ( string $comment )
public bool getEps ( void )
public static array getLevels ( void )
public static string levelToString ( int $level )
public void restrictToLevel ( string $level )
public void setEps ( string $level )
public void setSize ( string $width , string $height )
/* 继承的方法 */
public CairoSurface::__construct ( void )
public void CairoSurface::copyPage ( void )
public void CairoSurface::createSimilar ( CairoSurface $other , int $content , string $width , string $height )
public void CairoSurface::finish ( void )
public void CairoSurface::flush ( void )
public int CairoSurface::getContent ( void )
public array CairoSurface::getDeviceOffset ( void )
public void CairoSurface::getFontOptions ( void )
public int CairoSurface::getType ( void )
public void CairoSurface::markDirty ( void )
public void CairoSurface::markDirtyRectangle ( string $x , string $y , string $width , string $height )
public void CairoSurface::setDeviceOffset ( string $x , string $y )
public void CairoSurface::setFallbackResolution ( string $x , string $y )
public void CairoSurface::showPage ( void )
public int CairoSurface::status ( void )
public void CairoSurface::writeToPng ( string $file )
}

Table of Contents

  • CairoPsSurface::__construct — The __construct purpose
  • CairoPsSurface::dscBeginPageSetup — The dscBeginPageSetup purpose
  • CairoPsSurface::dscBeginSetup — The dscBeginSetup purpose
  • CairoPsSurface::dscComment — The dscComment purpose
  • CairoPsSurface::getEps — The getEps purpose
  • CairoPsSurface::getLevels — The getLevels purpose
  • CairoPsSurface::levelToString — The levelToString purpose
  • CairoPsSurface::restrictToLevel — The restrictToLevel purpose
  • CairoPsSurface::setEps — The setEps purpose
  • CairoPsSurface::setSize — The setSize purpose
CairoPdfSurface::setSize
CairoPsSurface::__construct
Cairo


The __construct purpose

CairoPsSurface
CairoPsSurface::dscBeginPageSetup
CairoPsSurface
PHP Manual

CairoPsSurface::__construct

(PECL cairo >= 0.1.0)

CairoPsSurface::__construct — The __construct purpose

说明

public CairoPsSurface::__construct ( string $file , float $width , float $height )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

file

Description...

width

Description...

height

Description...

返回值

Description...

范例

Example #1 CairoPsSurface::__construct() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoPsSurface
CairoPsSurface::dscBeginPageSetup
CairoPsSurface


The dscBeginPageSetup purpose

CairoPsSurface::__construct
CairoPsSurface::dscBeginSetup
CairoPsSurface
PHP Manual

CairoPsSurface::dscBeginPageSetup

(PECL cairo >= 0.1.0)

CairoPsSurface::dscBeginPageSetup — The dscBeginPageSetup purpose

说明

public void CairoPsSurface::dscBeginPageSetup ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoPsSurface::dscBeginPageSetup() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoPsSurface::__construct
CairoPsSurface::dscBeginSetup
CairoPsSurface


The dscBeginSetup purpose

CairoPsSurface::dscBeginPageSetup
CairoPsSurface::dscComment
CairoPsSurface
PHP Manual

CairoPsSurface::dscBeginSetup

(PECL cairo >= 0.1.0)

CairoPsSurface::dscBeginSetup — The dscBeginSetup purpose

说明

public void CairoPsSurface::dscBeginSetup ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoPsSurface::dscBeginSetup() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoPsSurface::dscBeginPageSetup
CairoPsSurface::dscComment
CairoPsSurface


The dscComment purpose

CairoPsSurface::dscBeginSetup
CairoPsSurface::getEps
CairoPsSurface
PHP Manual

CairoPsSurface::dscComment

(PECL cairo >= 0.1.0)

CairoPsSurface::dscComment — The dscComment purpose

说明

public void CairoPsSurface::dscComment ( string $comment )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

comment

Description...

返回值

Description...

范例

Example #1 CairoPsSurface::dscComment() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoPsSurface::dscBeginSetup
CairoPsSurface::getEps
CairoPsSurface


The getEps purpose

CairoPsSurface::dscComment
CairoPsSurface::getLevels
CairoPsSurface
PHP Manual

CairoPsSurface::getEps

(PECL cairo >= 0.1.0)

CairoPsSurface::getEps — The getEps purpose

说明

public bool CairoPsSurface::getEps ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoPsSurface::getEps() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoPsSurface::dscComment
CairoPsSurface::getLevels
CairoPsSurface


The getLevels purpose

CairoPsSurface::getEps
CairoPsSurface::levelToString
CairoPsSurface
PHP Manual

CairoPsSurface::getLevels

(PECL cairo >= 0.1.0)

CairoPsSurface::getLevels — The getLevels purpose

说明

public static array CairoPsSurface::getLevels ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoPsSurface::getLevels() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoPsSurface::getEps
CairoPsSurface::levelToString
CairoPsSurface


The levelToString purpose

CairoPsSurface::getLevels
CairoPsSurface::restrictToLevel
CairoPsSurface
PHP Manual

CairoPsSurface::levelToString

(PECL cairo >= 0.1.0)

CairoPsSurface::levelToString — The levelToString purpose

说明

public static string CairoPsSurface::levelToString ( int $level )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

level

Description...

返回值

Description...

范例

Example #1 CairoPsSurface::levelToString() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoPsSurface::getLevels
CairoPsSurface::restrictToLevel
CairoPsSurface


The restrictToLevel purpose

CairoPsSurface::levelToString
CairoPsSurface::setEps
CairoPsSurface
PHP Manual

CairoPsSurface::restrictToLevel

(PECL cairo >= 0.1.0)

CairoPsSurface::restrictToLevel — The restrictToLevel purpose

说明

public void CairoPsSurface::restrictToLevel ( string $level )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

level

Description...

返回值

Description...

范例

Example #1 CairoPsSurface::restrictToLevel() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoPsSurface::levelToString
CairoPsSurface::setEps
CairoPsSurface


The setEps purpose

CairoPsSurface::restrictToLevel
CairoPsSurface::setSize
CairoPsSurface
PHP Manual

CairoPsSurface::setEps

(PECL cairo >= 0.1.0)

CairoPsSurface::setEps — The setEps purpose

说明

public void CairoPsSurface::setEps ( string $level )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

level

Description...

返回值

Description...

范例

Example #1 CairoPsSurface::setEps() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoPsSurface::restrictToLevel
CairoPsSurface::setSize
CairoPsSurface


The setSize purpose

CairoPsSurface::setEps
CairoSurfaceType
CairoPsSurface
PHP Manual

CairoPsSurface::setSize

(PECL cairo >= 0.1.0)

CairoPsSurface::setSize — The setSize purpose

说明

public void CairoPsSurface::setSize ( string $width , string $height )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

width

Description...

height

Description...

返回值

Description...

范例

Example #1 CairoPsSurface::setSize() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoPsSurface::setEps
CairoSurfaceType
CairoPsSurface


The CairoSurfaceType class

(No version information available, might only be in Git)

简介

类摘要

CairoSurfaceType {
/* 常量 */
const integer IMAGE = 0 ;
const integer PDF = 1 ;
const integer PS = 2 ;
const integer XLIB = 3 ;
const integer XCB = 4 ;
const integer GLITZ = 5 ;
const integer QUARTZ = 6 ;
const integer WIN32 = 7 ;
const integer BEOS = 8 ;
const integer DIRECTFB = 9 ;
const integer SVG = 10 ;
const integer OS2 = 11 ;
const integer WIN32_PRINTING = 12 ;
const integer QUARTZ_IMAGE = 13 ;
}

预定义常量

CairoSurfaceType::IMAGE

Description here...

CairoSurfaceType::PDF

Description here...

CairoSurfaceType::PS

Description here...

CairoSurfaceType::XLIB

Description here...

CairoSurfaceType::XCB

Description here...

CairoSurfaceType::GLITZ

Description here...

CairoSurfaceType::QUARTZ

Description here...

CairoSurfaceType::WIN32

Description here...

CairoSurfaceType::BEOS

Description here...

CairoSurfaceType::DIRECTFB

Description here...

CairoSurfaceType::SVG

Description here...

CairoSurfaceType::OS2

Description here...

CairoSurfaceType::WIN32_PRINTING

Description here...

CairoSurfaceType::QUARTZ_IMAGE

Description here...

CairoPsSurface::setSize
CairoFontFace
Cairo


The CairoFontFace class

(PECL cairo >= 0.1.0)

简介

CairoFontFace abstract class represents a particular font at a particular weight, slant, and other characteristic but no transformation or size.

Note: This class can not be instantiated directly, it is created by CairoContext::getFontFace() or cairo_scaled_font_get_font_face().

类摘要

CairoFontFace {
/* 方法 */
public __construct ( void )
public int getType ( void )
public int status ( void )
}

Table of Contents

  • CairoFontFace::__construct — Creates a new CairoFontFace object
  • CairoFontFace::getType — Retrieves the font face type
  • CairoFontFace::status — Check for CairoFontFace errors
CairoSurfaceType
CairoFontFace::__construct
Cairo


Creates a new CairoFontFace object

CairoFontFace
CairoFontFace::getType
CairoFontFace
PHP Manual

CairoFontFace::__construct

(PECL cairo >= 0.1.0)

CairoFontFace::__construct — Creates a new CairoFontFace object

说明

public CairoFontFace::__construct ( void )

CairoFontFace class represents a particular font at a particular weight, slant, and other characteristic but no transformation or size.

Note: This class can't be instantiated directly it is created by CairoContext::getFontFace() or cairo_scaled_font_get_font_face()

参数

此函数没有参数。

返回值

CairoFontFace

范例

Example #1 CairoFontFace::__construct() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Class::Method()

CairoFontFace
CairoFontFace::getType
CairoFontFace


Retrieves the font face type

CairoFontFace::__construct
CairoFontFace::status
CairoFontFace
PHP Manual

CairoFontFace::getType

(PECL cairo >= 0.1.0)

CairoFontFace::getType — Retrieves the font face type

说明

public int CairoFontFace::getType ( void )

This function returns the type of the backend used to create a font face. See CairoFontType class constants for available types.

参数

此函数没有参数。

返回值

A font type that can be any one defined in CairoFontType

范例

Example #1 CairoFontFace::getType() example

<?php

// Creates the font face
$fontface = new CairoToyFontFace('sans-serif');

// Get the font face type
var_dump($fontface->getType());

?>

以上例程的输出类似于：

int(0)

参见

  • Classname::Method()

CairoFontFace::__construct
CairoFontFace::status
CairoFontFace


Check for CairoFontFace errors

CairoFontFace::getType
CairoFontOptions
CairoFontFace
PHP Manual

CairoFontFace::status

cairo_font_face_status

(PECL cairo >= 0.1.0)

CairoFontFace::status -- cairo_font_face_status — Check for CairoFontFace errors

说明

面向对象风格 (method):

public int CairoFontFace::status ( void )

过程化风格:

int cairo_font_face_status ( CairoFontFace $fontface )

Checks whether an error has previously occurred for this font face

参数

fontface

A valid CairoFontFace object

返回值

CAIRO_STATUS_SUCCESS or another error such as CAIRO_STATUS_NO_MEMORY.

范例

Example #1 面向对象风格

<?php

// Creates the font face
$fontface = new CairoToyFontFace('sans-serif');

// Get the font face status
var_dump($fontface->status()); // should be the value of CAIRO_STATUS_SUCCESS

?>

以上例程的输出类似于：

int(0)

Example #2 过程化风格

<?php

// Creates the font face
$fontface = new CairoToyFontFace('sans-serif');

// Get the font face status
var_dump(cairo_font_face_status($fontface)); // should be the value of CAIRO_STATUS_SUCCESS

?>

以上例程的输出类似于：

int(0)

参见

  • Classname::Method()

CairoFontFace::getType
CairoFontOptions
CairoFontFace


The CairoFontOptions class

(PECL cairo >= 0.1.0)

简介

An opaque structure holding all options that are used when rendering fonts.

Individual features of a cairo_font_options_t can be set or accessed using functions named cairo_font_options_set_feature_name and cairo_font_options_get_feature_name, like cairo_font_options_set_antialias() and cairo_font_options_get_antialias().

New features may be added to CairoFontOptions in the future. For this reason CairoFontOptions::copy(), CairoFontOptions::equal(), CairoFontOptions::merge(), CairoFontOptions::hash() (cairo_font_options_copy(), cairo_font_options_equal(), cairo_font_options_merge(), and cairo_font_options_hash() in procedural way) should be used to copy, check for equality, merge, or compute a hash value of CairoFontOptions objects.

类摘要

CairoFontOptions {
/* 方法 */
public __construct ( void )
public bool equal ( string $other )
public int getAntialias ( void )
public int getHintMetrics ( void )
public int getHintStyle ( void )
public int getSubpixelOrder ( void )
public int hash ( void )
public void merge ( string $other )
public void setAntialias ( string $antialias )
public void setHintMetrics ( string $hint_metrics )
public void setHintStyle ( string $hint_style )
public void setSubpixelOrder ( string $subpixel_order )
public int status ( void )
}

Table of Contents

  • CairoFontOptions::__construct — The __construct purpose
  • CairoFontOptions::equal — The equal purpose
  • CairoFontOptions::getAntialias — The getAntialias purpose
  • CairoFontOptions::getHintMetrics — The getHintMetrics purpose
  • CairoFontOptions::getHintStyle — The getHintStyle purpose
  • CairoFontOptions::getSubpixelOrder — The getSubpixelOrder purpose
  • CairoFontOptions::hash — The hash purpose
  • CairoFontOptions::merge — The merge purpose
  • CairoFontOptions::setAntialias — The setAntialias purpose
  • CairoFontOptions::setHintMetrics — The setHintMetrics purpose
  • CairoFontOptions::setHintStyle — The setHintStyle purpose
  • CairoFontOptions::setSubpixelOrder — The setSubpixelOrder purpose
  • CairoFontOptions::status — The status purpose
CairoFontFace::status
CairoFontOptions::__construct
Cairo


The __construct purpose

CairoFontOptions
CairoFontOptions::equal
CairoFontOptions
PHP Manual

CairoFontOptions::__construct

(PECL cairo >= 0.1.0)

CairoFontOptions::__construct — The __construct purpose

说明

public CairoFontOptions::__construct ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoFontOptions::__construct() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoFontOptions
CairoFontOptions::equal
CairoFontOptions


The equal purpose

CairoFontOptions::__construct
CairoFontOptions::getAntialias
CairoFontOptions
PHP Manual

CairoFontOptions::equal

(PECL cairo >= 0.1.0)

CairoFontOptions::equal — The equal purpose

说明

public bool CairoFontOptions::equal ( string $other )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

other

Description...

返回值

Description...

范例

Example #1 CairoFontOptions::equal() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoFontOptions::__construct
CairoFontOptions::getAntialias
CairoFontOptions


The getAntialias purpose

CairoFontOptions::equal
CairoFontOptions::getHintMetrics
CairoFontOptions
PHP Manual

CairoFontOptions::getAntialias

cairo_get_antialias

(PECL cairo >= 0.1.0)

CairoFontOptions::getAntialias -- cairo_get_antialias — The getAntialias purpose

说明

面向对象风格 (method):

public int CairoFontOptions::getAntialias ( void )

过程化风格:

int cairo_get_antialias ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoFontOptions::equal
CairoFontOptions::getHintMetrics
CairoFontOptions


The getHintMetrics purpose

CairoFontOptions::getAntialias
CairoFontOptions::getHintStyle
CairoFontOptions
PHP Manual

CairoFontOptions::getHintMetrics

(PECL cairo >= 0.1.0)

CairoFontOptions::getHintMetrics — The getHintMetrics purpose

说明

public int CairoFontOptions::getHintMetrics ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoFontOptions::getHintMetrics() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoFontOptions::getAntialias
CairoFontOptions::getHintStyle
CairoFontOptions


The getHintStyle purpose

CairoFontOptions::getHintMetrics
CairoFontOptions::getSubpixelOrder
CairoFontOptions
PHP Manual

CairoFontOptions::getHintStyle

(PECL cairo >= 0.1.0)

CairoFontOptions::getHintStyle — The getHintStyle purpose

说明

public int CairoFontOptions::getHintStyle ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoFontOptions::getHintStyle() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoFontOptions::getHintMetrics
CairoFontOptions::getSubpixelOrder
CairoFontOptions


The getSubpixelOrder purpose

CairoFontOptions::getHintStyle
CairoFontOptions::hash
CairoFontOptions
PHP Manual

CairoFontOptions::getSubpixelOrder

(PECL cairo >= 0.1.0)

CairoFontOptions::getSubpixelOrder — The getSubpixelOrder purpose

说明

public int CairoFontOptions::getSubpixelOrder ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoFontOptions::getSubpixelOrder() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoFontOptions::getHintStyle
CairoFontOptions::hash
CairoFontOptions


The hash purpose

CairoFontOptions::getSubpixelOrder
CairoFontOptions::merge
CairoFontOptions
PHP Manual

CairoFontOptions::hash

(PECL cairo >= 0.1.0)

CairoFontOptions::hash — The hash purpose

说明

public int CairoFontOptions::hash ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoFontOptions::hash() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoFontOptions::getSubpixelOrder
CairoFontOptions::merge
CairoFontOptions


The merge purpose

CairoFontOptions::hash
CairoFontOptions::setAntialias
CairoFontOptions
PHP Manual

CairoFontOptions::merge

(PECL cairo >= 0.1.0)

CairoFontOptions::merge — The merge purpose

说明

public void CairoFontOptions::merge ( string $other )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

other

Description...

返回值

Description...

范例

Example #1 CairoFontOptions::merge() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoFontOptions::hash
CairoFontOptions::setAntialias
CairoFontOptions


The setAntialias purpose

CairoFontOptions::merge
CairoFontOptions::setHintMetrics
CairoFontOptions
PHP Manual

CairoFontOptions::setAntialias

cairo_set_antialias

(PECL cairo >= 0.1.0)

CairoFontOptions::setAntialias -- cairo_set_antialias — The setAntialias purpose

说明

面向对象风格 (method):

public void CairoFontOptions::setAntialias ( string $antialias )

过程化风格:

void cairo_set_antialias ( CairoContext $context [, string $antialias ] )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

antialias

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoFontOptions::merge
CairoFontOptions::setHintMetrics
CairoFontOptions


The setHintMetrics purpose

CairoFontOptions::setAntialias
CairoFontOptions::setHintStyle
CairoFontOptions
PHP Manual

CairoFontOptions::setHintMetrics

(PECL cairo >= 0.1.0)

CairoFontOptions::setHintMetrics — The setHintMetrics purpose

说明

public void CairoFontOptions::setHintMetrics ( string $hint_metrics )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

hint_metrics

Description...

返回值

Description...

范例

Example #1 CairoFontOptions::setHintMetrics() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoFontOptions::setAntialias
CairoFontOptions::setHintStyle
CairoFontOptions


The setHintStyle purpose

CairoFontOptions::setHintMetrics
CairoFontOptions::setSubpixelOrder
CairoFontOptions
PHP Manual

CairoFontOptions::setHintStyle

(PECL cairo >= 0.1.0)

CairoFontOptions::setHintStyle — The setHintStyle purpose

说明

public void CairoFontOptions::setHintStyle ( string $hint_style )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

hint_style

Description...

返回值

Description...

范例

Example #1 CairoFontOptions::setHintStyle() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoFontOptions::setHintMetrics
CairoFontOptions::setSubpixelOrder
CairoFontOptions


The setSubpixelOrder purpose

CairoFontOptions::setHintStyle
CairoFontOptions::status
CairoFontOptions
PHP Manual

CairoFontOptions::setSubpixelOrder

(PECL cairo >= 0.1.0)

CairoFontOptions::setSubpixelOrder — The setSubpixelOrder purpose

说明

public void CairoFontOptions::setSubpixelOrder ( string $subpixel_order )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

subpixel_order

Description...

返回值

Description...

范例

Example #1 CairoFontOptions::setSubpixelOrder() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoFontOptions::setHintStyle
CairoFontOptions::status
CairoFontOptions


The status purpose

CairoFontOptions::setSubpixelOrder
CairoFontSlant
CairoFontOptions
PHP Manual

CairoFontOptions::status

cairo_status

(PECL cairo >= 0.1.0)

CairoFontOptions::status -- cairo_status — The status purpose

说明

面向对象风格 (method):

public int CairoFontOptions::status ( void )

过程化风格:

int cairo_status ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoFontOptions::setSubpixelOrder
CairoFontSlant
CairoFontOptions


The CairoFontSlant class

(No version information available, might only be in Git)

简介

Specifies variants of a font face based on their slant.

类摘要

CairoFontSlant {
/* 常量 */
const integer NORMAL = 0 ;
const integer ITALIC = 1 ;
const integer OBLIQUE = 2 ;
}

预定义常量

CairoFontSlant::NORMAL

Upright font style

CairoFontSlant::ITALIC

Italic font style

CairoFontSlant::OBLIQUE

Oblique font style

CairoFontOptions::status
CairoFontType
Cairo


The CairoFontType class

(No version information available, might only be in Git)

简介

CairoFontType class is an abstract final class that contains constants used to describe the type of a given CairoFontFace or CairoScaledFont. The font types are also known as "font backends" within cairo.

The type of a CairoFontFace is determined by the how it is created, an example would be the CairoToyFontFace::__construct(). The CairoFontFace type can be queried with CairoFontFace::getType() or cairo_font_face_get_type()

The various CairoFontFace functions can be used with a font face of any type.

The type of a CairoScaledFont is determined by the type of the CairoFontFace passed to CairoScaledFont::__construct() or cairo_scaled_font_create(). The scaled font type can be queried with CairoScaledFont::getType() or cairo_scaled_font_get_type().

类摘要

CairoFontType {
/* 常量 */
const integer TOY = 0 ;
const integer FT = 1 ;
const integer WIN32 = 2 ;
const integer QUARTZ = 3 ;
}

预定义常量

CairoFontType::TOY

The font was created using CairoToyFont api

CairoFontType::FT

The font is of type CairoFreeType

CairoFontType::WIN32

The font is of type Win32

CairoFontType::QUARTZ

The font is of type Quartz

CairoFontType::USER

The font was create using cairo's user font api

CairoFontSlant
CairoFontWeight
Cairo


The CairoFontWeight class

(No version information available, might only be in Git)

简介

Specifies variants of a font face based on their weight.

类摘要

CairoFontWeight {
/* 常量 */
const integer NORMAL = 0 ;
const integer BOLD = 1 ;
}

预定义常量

CairoFontWeight::NORMAL

Normal font weight

CairoFontWeight::BOLD

Bold font weight

CairoFontType
CairoScaledFont
Cairo


The CairoScaledFont class

(PECL cairo >= 0.1.0)

简介

类摘要

CairoScaledFont {
/* 方法 */
public __construct ( CairoFontFace $font_face , CairoMatrix $matrix , CairoMatrix $ctm , CairoFontOptions $options )
public array extents ( void )
public CairoMatrix getCtm ( void )
public void getFontFace ( void )
public void getFontMatrix ( void )
public void getFontOptions ( void )
public void getScaleMatrix ( void )
public int getType ( void )
public array glyphExtents ( string $glyphs )
public int status ( void )
public array textExtents ( string $text )
}

Table of Contents

  • CairoScaledFont::__construct — The __construct purpose
  • CairoScaledFont::extents — The extents purpose
  • CairoScaledFont::getCtm — The getCtm purpose
  • CairoScaledFont::getFontFace — The getFontFace purpose
  • CairoScaledFont::getFontMatrix — The getFontMatrix purpose
  • CairoScaledFont::getFontOptions — The getFontOptions purpose
  • CairoScaledFont::getScaleMatrix — The getScaleMatrix purpose
  • CairoScaledFont::getType — The getType purpose
  • CairoScaledFont::glyphExtents — The glyphExtents purpose
  • CairoScaledFont::status — The status purpose
  • CairoScaledFont::textExtents — The textExtents purpose
CairoFontWeight
CairoScaledFont::__construct
Cairo


The __construct purpose

CairoScaledFont
CairoScaledFont::extents
CairoScaledFont
PHP Manual

CairoScaledFont::__construct

(PECL cairo >= 0.1.0)

CairoScaledFont::__construct — The __construct purpose

说明

public CairoScaledFont::__construct ( CairoFontFace $font_face , CairoMatrix $matrix , CairoMatrix $ctm , CairoFontOptions $options )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

font_face

Description...

matrix

Description...

ctm

Description...

options

Description...

返回值

Description...

范例

Example #1 CairoScaledFont::__construct() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoScaledFont
CairoScaledFont::extents
CairoScaledFont


The extents purpose

CairoScaledFont::__construct
CairoScaledFont::getCtm
CairoScaledFont
PHP Manual

CairoScaledFont::extents

(PECL cairo >= 0.1.0)

CairoScaledFont::extents — The extents purpose

说明

public array CairoScaledFont::extents ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoScaledFont::extents() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoScaledFont::__construct
CairoScaledFont::getCtm
CairoScaledFont


The getCtm purpose

CairoScaledFont::extents
CairoScaledFont::getFontFace
CairoScaledFont
PHP Manual

CairoScaledFont::getCtm

(PECL cairo >= 0.1.0)

CairoScaledFont::getCtm — The getCtm purpose

说明

public CairoMatrix CairoScaledFont::getCtm ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoScaledFont::getCtm() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoScaledFont::extents
CairoScaledFont::getFontFace
CairoScaledFont


The getFontFace purpose

CairoScaledFont::getCtm
CairoScaledFont::getFontMatrix
CairoScaledFont
PHP Manual

CairoScaledFont::getFontFace

cairo_get_font_face

(PECL cairo >= 0.1.0)

CairoScaledFont::getFontFace -- cairo_get_font_face — The getFontFace purpose

说明

面向对象风格 (method):

public void CairoScaledFont::getFontFace ( void )

过程化风格:

void cairo_get_font_face ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoScaledFont::getCtm
CairoScaledFont::getFontMatrix
CairoScaledFont


The getFontMatrix purpose

CairoScaledFont::getFontFace
CairoScaledFont::getFontOptions
CairoScaledFont
PHP Manual

CairoScaledFont::getFontMatrix

cairo_get_font_matrix

(PECL cairo >= 0.1.0)

CairoScaledFont::getFontMatrix -- cairo_get_font_matrix — The getFontMatrix purpose

说明

面向对象风格 (method):

public void CairoScaledFont::getFontMatrix ( void )

过程化风格:

void cairo_get_font_matrix ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoScaledFont::getFontFace
CairoScaledFont::getFontOptions
CairoScaledFont


The getFontOptions purpose

CairoScaledFont::getFontMatrix
CairoScaledFont::getScaleMatrix
CairoScaledFont
PHP Manual

CairoScaledFont::getFontOptions

cairo_get_font_options

(PECL cairo >= 0.1.0)

CairoScaledFont::getFontOptions -- cairo_get_font_options — The getFontOptions purpose

说明

面向对象风格 (method):

public void CairoScaledFont::getFontOptions ( void )

过程化风格:

void cairo_get_font_options ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoScaledFont::getFontMatrix
CairoScaledFont::getScaleMatrix
CairoScaledFont


The getScaleMatrix purpose

CairoScaledFont::getFontOptions
CairoScaledFont::getType
CairoScaledFont
PHP Manual

CairoScaledFont::getScaleMatrix

(PECL cairo >= 0.1.0)

CairoScaledFont::getScaleMatrix — The getScaleMatrix purpose

说明

public void CairoScaledFont::getScaleMatrix ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoScaledFont::getScaleMatrix() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoScaledFont::getFontOptions
CairoScaledFont::getType
CairoScaledFont


The getType purpose

CairoScaledFont::getScaleMatrix
CairoScaledFont::glyphExtents
CairoScaledFont
PHP Manual

CairoScaledFont::getType

(PECL cairo >= 0.1.0)

CairoScaledFont::getType — The getType purpose

说明

public int CairoScaledFont::getType ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoScaledFont::getType() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoScaledFont::getScaleMatrix
CairoScaledFont::glyphExtents
CairoScaledFont


The glyphExtents purpose

CairoScaledFont::getType
CairoScaledFont::status
CairoScaledFont
PHP Manual

CairoScaledFont::glyphExtents

(PECL cairo >= 0.1.0)

CairoScaledFont::glyphExtents — The glyphExtents purpose

说明

public array CairoScaledFont::glyphExtents ( string $glyphs )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

glyphs

Description...

返回值

Description...

范例

Example #1 CairoScaledFont::glyphExtents() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoScaledFont::getType
CairoScaledFont::status
CairoScaledFont


The status purpose

CairoScaledFont::glyphExtents
CairoScaledFont::textExtents
CairoScaledFont
PHP Manual

CairoScaledFont::status

cairo_status

(PECL cairo >= 0.1.0)

CairoScaledFont::status -- cairo_status — The status purpose

说明

面向对象风格 (method):

public int CairoScaledFont::status ( void )

过程化风格:

int cairo_status ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoScaledFont::glyphExtents
CairoScaledFont::textExtents
CairoScaledFont


The textExtents purpose

CairoScaledFont::status
CairoToyFontFace
CairoScaledFont
PHP Manual

CairoScaledFont::textExtents

cairo_text_extents

(PECL cairo >= 0.1.0)

CairoScaledFont::textExtents -- cairo_text_extents — The textExtents purpose

说明

面向对象风格 (method):

public array CairoScaledFont::textExtents ( string $text )

过程化风格:

array cairo_text_extents ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

text

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoScaledFont::status
CairoToyFontFace
CairoScaledFont


The CairoToyFontFace class

(PECL cairo >= 0.1.0)

简介

The CairoToyFontFace class can be used instead of CairoContext::selectFontFace() to create a toy font independently of a context.

类摘要

CairoToyFontFace extends CairoFontFace {
/* 继承的方法 */
}
CairoScaledFont::textExtents
CairoPatternType
Cairo


The CairoPatternType class

(No version information available, might only be in Git)

简介

CairoPatternType is used to describe the type of a given pattern.

The type of a pattern is determined by the function used to create it. The cairo_pattern_create_rgb() and cairo_pattern_create_rgba() functions create CairoPatternType::SOLID patterns. The remaining cairo_pattern_create_* functions map to pattern types in obvious ways.

类摘要

CairoPatternType {
/* 常量 */
const integer SOLID = 0 ;
const integer SURFACE = 1 ;
const integer LINEAR = 2 ;
const integer RADIAL = 3 ;
}

预定义常量

CairoPatternType::SOLID

The pattern is a solid (uniform) color. It may be opaque or translucent.

CairoPatternType::SURFACE

The pattern is a based on a surface (an image).

CairoPatternType::LINEAR

The pattern is a linear gradient.

CairoPatternType::RADIAL

The pattern is a radial gradient.

CairoToyFontFace
CairoPattern
Cairo


The CairoPattern class

(PECL cairo >= 0.1.0)

简介

CairoPattern is the abstract base class from which all the other pattern classes derive. It cannot be instantiated directly

类摘要

CairoPattern {
/* 方法 */
public __construct ( void )
public void getMatrix ( void )
public int getType ( void )
public void setMatrix ( string $matrix )
public int status ( void )
}

Table of Contents

  • CairoPattern::__construct — The __construct purpose
  • CairoPattern::getMatrix — The getMatrix purpose
  • CairoPattern::getType — The getType purpose
  • CairoPattern::setMatrix — The setMatrix purpose
  • CairoPattern::status — The status purpose
CairoPatternType
CairoPattern::__construct
Cairo


The __construct purpose

CairoPattern
CairoPattern::getMatrix
CairoPattern
PHP Manual

CairoPattern::__construct

(PECL cairo >= 0.1.0)

CairoPattern::__construct — The __construct purpose

说明

public CairoPattern::__construct ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoPattern::__construct() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoPattern
CairoPattern::getMatrix
CairoPattern


The getMatrix purpose

CairoPattern::__construct
CairoPattern::getType
CairoPattern
PHP Manual

CairoPattern::getMatrix

cairo_get_matrix

(PECL cairo >= 0.1.0)

CairoPattern::getMatrix -- cairo_get_matrix — The getMatrix purpose

说明

面向对象风格 (method):

public void CairoPattern::getMatrix ( void )

过程化风格:

void cairo_get_matrix ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoPattern::__construct
CairoPattern::getType
CairoPattern


The getType purpose

CairoPattern::getMatrix
CairoPattern::setMatrix
CairoPattern
PHP Manual

CairoPattern::getType

(PECL cairo >= 0.1.0)

CairoPattern::getType — The getType purpose

说明

public int CairoPattern::getType ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoPattern::getType() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoPattern::getMatrix
CairoPattern::setMatrix
CairoPattern


The setMatrix purpose

CairoPattern::getType
CairoPattern::status
CairoPattern
PHP Manual

CairoPattern::setMatrix

cairo_set_matrix

(PECL cairo >= 0.1.0)

CairoPattern::setMatrix -- cairo_set_matrix — The setMatrix purpose

说明

面向对象风格 (method):

public void CairoPattern::setMatrix ( string $matrix )

过程化风格:

void cairo_set_matrix ( CairoContext $context , CairoMatrix $matrix )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

matrix

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoPattern::getType
CairoPattern::status
CairoPattern


The status purpose

CairoPattern::setMatrix
CairoGradientPattern
CairoPattern
PHP Manual

CairoPattern::status

cairo_status

(PECL cairo >= 0.1.0)

CairoPattern::status -- cairo_status — The status purpose

说明

面向对象风格 (method):

public int CairoPattern::status ( void )

过程化风格:

int cairo_status ( CairoContext $context )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoPattern::setMatrix
CairoGradientPattern
CairoPattern


The CairoGradientPattern class

(PECL cairo >= 0.1.0)

简介

CairoGradientPattern is an abstract base class from which other Pattern classes derive. It cannot be instantiated directly.

类摘要

CairoGradientPattern extends CairoPattern {
/* 方法 */
public void addColorStopRgb ( string $offset , string $red , string $green , string $blue )
public void addColorStopRgba ( string $offset , string $red , string $green , string $blue , string $alpha )
public int getColorStopCount ( void )
public array getColorStopRgba ( string $index )
public int getExtend ( void )
public void setExtend ( int $extend )
/* 继承的方法 */
public CairoPattern::__construct ( void )
public void CairoPattern::getMatrix ( void )
public int CairoPattern::getType ( void )
public void CairoPattern::setMatrix ( string $matrix )
public int CairoPattern::status ( void )
}

Table of Contents

  • CairoGradientPattern::addColorStopRgb — The addColorStopRgb purpose
  • CairoGradientPattern::addColorStopRgba — The addColorStopRgba purpose
  • CairoGradientPattern::getColorStopCount — The getColorStopCount purpose
  • CairoGradientPattern::getColorStopRgba — The getColorStopRgba purpose
  • CairoGradientPattern::getExtend — The getExtend purpose
  • CairoGradientPattern::setExtend — The setExtend purpose
CairoPattern::status
CairoGradientPattern::addColorStopRgb
Cairo


The addColorStopRgb purpose

CairoGradientPattern
CairoGradientPattern::addColorStopRgba
CairoGradientPattern
PHP Manual

CairoGradientPattern::addColorStopRgb

(PECL cairo >= 0.1.0)

CairoGradientPattern::addColorStopRgb — The addColorStopRgb purpose

说明

public void CairoGradientPattern::addColorStopRgb ( string $offset , string $red , string $green , string $blue )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

offset

Description...

red

Description...

green

Description...

blue

Description...

返回值

Description...

范例

Example #1 CairoGradientPattern::addColorStopRgb() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoGradientPattern
CairoGradientPattern::addColorStopRgba
CairoGradientPattern


The addColorStopRgba purpose

CairoGradientPattern::addColorStopRgb
CairoGradientPattern::getColorStopCount
CairoGradientPattern
PHP Manual

CairoGradientPattern::addColorStopRgba

(PECL cairo >= 0.1.0)

CairoGradientPattern::addColorStopRgba — The addColorStopRgba purpose

说明

public void CairoGradientPattern::addColorStopRgba ( string $offset , string $red , string $green , string $blue , string $alpha )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

offset

Description...

red

Description...

green

Description...

blue

Description...

alpha

Description...

返回值

Description...

范例

Example #1 CairoGradientPattern::addColorStopRgba() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoGradientPattern::addColorStopRgb
CairoGradientPattern::getColorStopCount
CairoGradientPattern


The getColorStopCount purpose

CairoGradientPattern::addColorStopRgba
CairoGradientPattern::getColorStopRgba
CairoGradientPattern
PHP Manual

CairoGradientPattern::getColorStopCount

(PECL cairo >= 0.1.0)

CairoGradientPattern::getColorStopCount — The getColorStopCount purpose

说明

public int CairoGradientPattern::getColorStopCount ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoGradientPattern::getColorStopCount() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoGradientPattern::addColorStopRgba
CairoGradientPattern::getColorStopRgba
CairoGradientPattern


The getColorStopRgba purpose

CairoGradientPattern::getColorStopCount
CairoGradientPattern::getExtend
CairoGradientPattern
PHP Manual

CairoGradientPattern::getColorStopRgba

(PECL cairo >= 0.1.0)

CairoGradientPattern::getColorStopRgba — The getColorStopRgba purpose

说明

public array CairoGradientPattern::getColorStopRgba ( string $index )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

index

Description...

返回值

Description...

范例

Example #1 CairoGradientPattern::getColorStopRgba() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoGradientPattern::getColorStopCount
CairoGradientPattern::getExtend
CairoGradientPattern


The getExtend purpose

CairoGradientPattern::getColorStopRgba
CairoGradientPattern::setExtend
CairoGradientPattern
PHP Manual

CairoGradientPattern::getExtend

(PECL cairo >= 0.1.0)

CairoGradientPattern::getExtend — The getExtend purpose

说明

public int CairoGradientPattern::getExtend ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoGradientPattern::getExtend() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoGradientPattern::getColorStopRgba
CairoGradientPattern::setExtend
CairoGradientPattern


The setExtend purpose

CairoGradientPattern::getExtend
CairoSolidPattern
CairoGradientPattern
PHP Manual

CairoGradientPattern::setExtend

(PECL cairo >= 0.1.0)

CairoGradientPattern::setExtend — The setExtend purpose

说明

public void CairoGradientPattern::setExtend ( int $extend )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

extend

Description...

返回值

Description...

范例

Example #1 CairoGradientPattern::setExtend() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoGradientPattern::getExtend
CairoSolidPattern
CairoGradientPattern


The CairoSolidPattern class

(PECL cairo >= 0.1.0)

简介

类摘要

CairoSolidPattern extends CairoPattern {
/* 方法 */
public __construct ( float $red , float $green , float $blue [, float $alpha = 0 ] )
public array getRgba ( void )
/* 继承的方法 */
public CairoPattern::__construct ( void )
public void CairoPattern::getMatrix ( void )
public int CairoPattern::getType ( void )
public void CairoPattern::setMatrix ( string $matrix )
public int CairoPattern::status ( void )
}

Table of Contents

  • CairoSolidPattern::__construct — The __construct purpose
  • CairoSolidPattern::getRgba — The getRgba purpose
CairoGradientPattern::setExtend
CairoSolidPattern::__construct
Cairo


The __construct purpose

CairoSolidPattern
CairoSolidPattern::getRgba
CairoSolidPattern
PHP Manual

CairoSolidPattern::__construct

(PECL cairo >= 0.1.0)

CairoSolidPattern::__construct — The __construct purpose

说明

public CairoSolidPattern::__construct ( float $red , float $green , float $blue [, float $alpha = 0 ] )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

red

Description...

green

Description...

blue

Description...

alpha

Description...

返回值

Description...

范例

Example #1 CairoSolidPattern::__construct() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSolidPattern
CairoSolidPattern::getRgba
CairoSolidPattern


The getRgba purpose

CairoSolidPattern::__construct
CairoSurfacePattern
CairoSolidPattern
PHP Manual

CairoSolidPattern::getRgba

(PECL cairo >= 0.1.0)

CairoSolidPattern::getRgba — The getRgba purpose

说明

public array CairoSolidPattern::getRgba ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoSolidPattern::getRgba() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSolidPattern::__construct
CairoSurfacePattern
CairoSolidPattern


The CairoSurfacePattern class

(PECL cairo >= 0.1.0)

简介

类摘要

CairoSurfacePattern extends CairoPattern {
/* 方法 */
public __construct ( CairoSurface $surface )
public int getExtend ( void )
public int getFilter ( void )
public void getSurface ( void )
public void setExtend ( int $extend )
public void setFilter ( string $filter )
/* 继承的方法 */
public CairoPattern::__construct ( void )
public void CairoPattern::getMatrix ( void )
public int CairoPattern::getType ( void )
public void CairoPattern::setMatrix ( string $matrix )
public int CairoPattern::status ( void )
}

Table of Contents

  • CairoSurfacePattern::__construct — The __construct purpose
  • CairoSurfacePattern::getExtend — The getExtend purpose
  • CairoSurfacePattern::getFilter — The getFilter purpose
  • CairoSurfacePattern::getSurface — The getSurface purpose
  • CairoSurfacePattern::setExtend — The setExtend purpose
  • CairoSurfacePattern::setFilter — The setFilter purpose
CairoSolidPattern::getRgba
CairoSurfacePattern::__construct
Cairo


The __construct purpose

CairoSurfacePattern
CairoSurfacePattern::getExtend
CairoSurfacePattern
PHP Manual

CairoSurfacePattern::__construct

(PECL cairo >= 0.1.0)

CairoSurfacePattern::__construct — The __construct purpose

说明

public CairoSurfacePattern::__construct ( CairoSurface $surface )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

surface

Description...

返回值

Description...

范例

Example #1 CairoSurfacePattern::__construct() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSurfacePattern
CairoSurfacePattern::getExtend
CairoSurfacePattern


The getExtend purpose

CairoSurfacePattern::__construct
CairoSurfacePattern::getFilter
CairoSurfacePattern
PHP Manual

CairoSurfacePattern::getExtend

(PECL cairo >= 0.1.0)

CairoSurfacePattern::getExtend — The getExtend purpose

说明

public int CairoSurfacePattern::getExtend ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoSurfacePattern::getExtend() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSurfacePattern::__construct
CairoSurfacePattern::getFilter
CairoSurfacePattern


The getFilter purpose

CairoSurfacePattern::getExtend
CairoSurfacePattern::getSurface
CairoSurfacePattern
PHP Manual

CairoSurfacePattern::getFilter

(PECL cairo >= 0.1.0)

CairoSurfacePattern::getFilter — The getFilter purpose

说明

public int CairoSurfacePattern::getFilter ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoSurfacePattern::getFilter() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSurfacePattern::getExtend
CairoSurfacePattern::getSurface
CairoSurfacePattern


The getSurface purpose

CairoSurfacePattern::getFilter
CairoSurfacePattern::setExtend
CairoSurfacePattern
PHP Manual

CairoSurfacePattern::getSurface

(PECL cairo >= 0.1.0)

CairoSurfacePattern::getSurface — The getSurface purpose

说明

public void CairoSurfacePattern::getSurface ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoSurfacePattern::getSurface() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSurfacePattern::getFilter
CairoSurfacePattern::setExtend
CairoSurfacePattern


The setExtend purpose

CairoSurfacePattern::getSurface
CairoSurfacePattern::setFilter
CairoSurfacePattern
PHP Manual

CairoSurfacePattern::setExtend

(PECL cairo >= 0.1.0)

CairoSurfacePattern::setExtend — The setExtend purpose

说明

public void CairoSurfacePattern::setExtend ( int $extend )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

extend

Description...

返回值

Description...

范例

Example #1 CairoSurfacePattern::setExtend() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSurfacePattern::getSurface
CairoSurfacePattern::setFilter
CairoSurfacePattern


The setFilter purpose

CairoSurfacePattern::setExtend
CairoLinearGradient
CairoSurfacePattern
PHP Manual

CairoSurfacePattern::setFilter

(PECL cairo >= 0.1.0)

CairoSurfacePattern::setFilter — The setFilter purpose

说明

public void CairoSurfacePattern::setFilter ( string $filter )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

filter

Description...

返回值

Description...

范例

Example #1 CairoSurfacePattern::setFilter() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoSurfacePattern::setExtend
CairoLinearGradient
CairoSurfacePattern


The CairoLinearGradient class

(PECL cairo >= 0.1.0)

简介

Create a new CairoLinearGradient along the line defined

类摘要

CairoLinearGradient extends CairoGradientPattern {
/* 方法 */
public __construct ( float $x0 , float $y0 , float $x1 , float $y1 )
public array getPoints ( void )
/* 继承的方法 */
public void CairoGradientPattern::addColorStopRgb ( string $offset , string $red , string $green , string $blue )
public void CairoGradientPattern::addColorStopRgba ( string $offset , string $red , string $green , string $blue , string $alpha )
public int CairoGradientPattern::getColorStopCount ( void )
public array CairoGradientPattern::getColorStopRgba ( string $index )
public int CairoGradientPattern::getExtend ( void )
public void CairoGradientPattern::setExtend ( int $extend )
}

Table of Contents

  • CairoLinearGradient::__construct — The __construct purpose
  • CairoLinearGradient::getPoints — The getPoints purpose
CairoSurfacePattern::setFilter
CairoLinearGradient::__construct
Cairo


The __construct purpose

CairoLinearGradient
CairoLinearGradient::getPoints
CairoLinearGradient
PHP Manual

CairoLinearGradient::__construct

(PECL cairo >= 0.1.0)

CairoLinearGradient::__construct — The __construct purpose

说明

public CairoLinearGradient::__construct ( float $x0 , float $y0 , float $x1 , float $y1 )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

x0

Description...

y0

Description...

x1

Description...

y1

Description...

返回值

Description...

范例

Example #1 CairoLinearGradient::__construct() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoLinearGradient
CairoLinearGradient::getPoints
CairoLinearGradient


The getPoints purpose

CairoLinearGradient::__construct
CairoRadialGradient
CairoLinearGradient
PHP Manual

CairoLinearGradient::getPoints

(PECL cairo >= 0.1.0)

CairoLinearGradient::getPoints — The getPoints purpose

说明

public array CairoLinearGradient::getPoints ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoLinearGradient::getPoints() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoLinearGradient::__construct
CairoRadialGradient
CairoLinearGradient


The CairoRadialGradient class

(PECL cairo >= 0.1.0)

简介

类摘要

CairoRadialGradient extends CairoGradientPattern {
/* 方法 */
public __construct ( float $x0 , float $y0 , float $r0 , float $x1 , float $y1 , float $r1 )
public array getCircles ( void )
/* 继承的方法 */
public void CairoGradientPattern::addColorStopRgb ( string $offset , string $red , string $green , string $blue )
public void CairoGradientPattern::addColorStopRgba ( string $offset , string $red , string $green , string $blue , string $alpha )
public int CairoGradientPattern::getColorStopCount ( void )
public array CairoGradientPattern::getColorStopRgba ( string $index )
public int CairoGradientPattern::getExtend ( void )
public void CairoGradientPattern::setExtend ( int $extend )
}

Table of Contents

  • CairoRadialGradient::__construct — The __construct purpose
  • CairoRadialGradient::getCircles — The getCircles purpose
CairoLinearGradient::getPoints
CairoRadialGradient::__construct
Cairo


The __construct purpose

CairoRadialGradient
CairoRadialGradient::getCircles
CairoRadialGradient
PHP Manual

CairoRadialGradient::__construct

(PECL cairo >= 0.1.0)

CairoRadialGradient::__construct — The __construct purpose

说明

面向对象风格:

public CairoRadialGradient::__construct ( float $x0 , float $y0 , float $r0 , float $x1 , float $y1 , float $r1 )

过程化风格:

Creates a new radial gradient CairoPattern between the two circles defined by (x0, y0, r0) and (x1, y1, r1). Before using the gradient pattern, a number of color stops should be defined using CairoRadialGradient::addColorStopRgb() or CairoRadialGradient::addColorStopRgba().

Note: The coordinates here are in pattern space. For a new pattern, pattern space is identical to user space, but the relationship between the spaces can be changed with CairoRadialGradient::setMatrix().

参数

x0

x coordinate for the center of the start circle.

y0

y coordinate for the center of the start circle.

r0

radius of the start circle.

x1

x coordinate for the center of the end circle.

y1

y coordinate for the center of the end circle.

r1

radius of the end circle.

返回值

Description...

范例

Example #1 CairoRadialGradient::__construct() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoRadialGradient
CairoRadialGradient::getCircles
CairoRadialGradient


The getCircles purpose

CairoRadialGradient::__construct
CairoAntialias
CairoRadialGradient
PHP Manual

CairoRadialGradient::getCircles

(PECL cairo >= 0.1.0)

CairoRadialGradient::getCircles — The getCircles purpose

说明

public array CairoRadialGradient::getCircles ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoRadialGradient::getCircles() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoRadialGradient::__construct
CairoAntialias
CairoRadialGradient


The CairoAntialias class

(No version information available, might only be in Git)

简介

Enum class that specifies the type of antialiasing to do when rendering text or shapes.

类摘要

CairoAntialias {
/* 常量 */
const integer MODE_DEFAULT = 0 ;
const integer MODE_NONE = 1 ;
const integer MODE_GRAY = 2 ;
const integer MODE_SUBPIXEL = 3 ;
}

预定义常量

CairoAntialias::MODE_DEFAULT

Use the default antialiasing for the subsystem and target device

CairoAntialias::MODE_NONE

Use a bilevel alpha mask

CairoAntialias::MODE_GRAY

Perform single-color antialiasing (using shades of gray for black text on a white background, for example).

CairoAntialias::MODE_SUBPIXEL

Perform antialiasing by taking advantage of the order of subpixel elements on devices such as LCD panels.

CairoRadialGradient::getCircles
CairoContent
Cairo


The CairoContent class

(No version information available, might only be in Git)

简介

CairoContent is used to describe the content that a surface will contain, whether color information, alpha information (translucence vs. opacity), or both.

Note: The large values here are designed to keep CairoContent values distinct from CairoContent values so that the implementation can detect the error if users confuse the two types.

类摘要

CairoContent {
/* 常量 */
const integer COLOR = 4096 ;
const integer ALPHA = 8192 ;
const integer COLOR_ALPHA = 12288 ;
}

预定义常量

CairoContent::COLOR

The surface will hold color content only.

CairoContent::ALPHA

The surface will hold alpha content only.

CairoContent::COLOR_ALPHA

The surface will hold color and alpha content.

CairoAntialias
CairoExtend
Cairo


The CairoExtend class

(No version information available, might only be in Git)

简介

类摘要

CairoExtend {
/* 常量 */
const integer NONE = 0 ;
const integer REPEAT = 1 ;
const integer REFLECT = 2 ;
const integer PAD = 3 ;
}

预定义常量

CairoExtend::NONE

Description here...

CairoExtend::REPEAT

Description here...

CairoExtend::REFLECT

Description here...

CairoExtend::PAD

Description here...

CairoContent
CairoFormat
Cairo


The CairoFormat class

(PECL cairo >= 0.1.0)

简介

CairoFormat enums are used to identify the memory format of the image data.

类摘要

CairoFormat {
/* 常量 */
const integer ARGB32 = 0 ;
const integer RGB24 = 1 ;
const integer A8 = 2 ;
const integer A1 = 3 ;
/* 方法 */
public static int strideForWidth ( int $format , int $width )
}

预定义常量

CairoFormat::ARGB32

Each pixel is a 32-bit quantity, with alpha in the upper 8 bits, then red, then green, then blue. The 32-bit quantities are stored native-endian. Pre-multiplied alpha is used. (That is, 50% transparent red is 0x80800000, not 0x80ff0000.)

CairoFormat::RGB24

Each pixel is a 32-bit quantity, with the upper 8 bits unused. Red, Green, and Blue are stored in the remaining 24 bits in that order.

CairoFormat::A8

Each pixel is a 8-bit quantity holding an alpha value.

CairoFormat::A1

Each pixel is a 1-bit quantity holding an alpha value. Pixels are packed together into 32-bit quantities. The ordering of the bits matches the endianess of the platform. On a big-endian machine, the first pixel is in the uppermost bit, on a little-endian machine the first pixel is in the least-significant bit.

Table of Contents

  • CairoFormat::strideForWidth — Provides an appropiate stride to use
CairoExtend
CairoFormat::strideForWidth
Cairo


Provides an appropiate stride to use

CairoFormat
CairoFillRule
CairoFormat
PHP Manual

CairoFormat::strideForWidth

(PECL cairo >= 0.1.0)

CairoFormat::strideForWidth — Provides an appropiate stride to use

说明

public static int CairoFormat::strideForWidth ( int $format , int $width )

This method provides a stride value that will respect all alignment requirements of the accelerated image-rendering code within cairo.

参数

format

The desired CairoFormat to use

width

The width of the image

返回值

The appropriate stride to use given the desired format and width, or -1 if either the format is invalid or the width too large.

范例

Example #1 CairoFormat::strideForWidth() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoFormat
CairoFillRule
CairoFormat


The CairoFillRule class

(No version information available, might only be in Git)

简介

A CairoFillRule is used to select how paths are filled. For both fill rules, whether or not a point is included in the fill is determined by taking a ray from that point to infinity and looking at intersections with the path. The ray can be in any direction, as long as it doesn't pass through the end point of a segment or have a tricky intersection such as intersecting tangent to the path. (Note that filling is not actually implemented in this way. This is just a description of the rule that is applied.)

The default fill rule is CairoFillRule::WINDING.

类摘要

CairoFillRule {
/* 常量 */
const integer WINDING = 0 ;
const integer EVEN_ODD = 1 ;
}

预定义常量

CairoFillRule::WINDING

If the path crosses the ray from left-to-right, counts +1. If the path crosses the ray from right to left, counts -1. (Left and right are determined from the perspective of looking along the ray from the starting point.) If the total count is non-zero, the point will be filled.

CairoFillRule::EVEN_ODD

Counts the total number of intersections, without regard to the orientation of the contour. If the total number of intersections is odd, the point will be filled.

CairoFormat::strideForWidth
CairoFilter
Cairo


The CairoFilter class

(No version information available, might only be in Git)

简介

A CairoFilter is used to indicate what filtering should be applied when reading pixel values from patterns. See CairoPattern::setSource() or cairo_pattern_set_source() for indicating the desired filter to be used with a particular pattern.

类摘要

CairoFilter {
/* 常量 */
const integer FAST = 0 ;
const integer GOOD = 1 ;
const integer BEST = 2 ;
const integer NEAREST = 3 ;
const integer BILINEAR = 4 ;
const integer GAUSSIAN = 5 ;
}

预定义常量

CairoFilter::FAST

A high-performance filter, with quality similar to CairoFilter::NEAREST

CairoFilter::GOOD

A reasonable-performance filter, with quality similar to CairoFilter::BILINEAR

CairoFilter::BEST

The highest-quality available, performance may not be suitable for interactive use.

CairoFilter::NEAREST

Nearest-neighbor filtering

CairoFilter::BILINEAR

Linear interpolation in two dimensions

CairoFilter::GAUSSIAN

This filter value is currently unimplemented, and should not be used in current code.

CairoFillRule
CairoHintMetrics
Cairo


The CairoHintMetrics class

(No version information available, might only be in Git)

简介

Specifies whether to hint font metrics; hinting font metrics means quantizing them so that they are integer values in device space. Doing this improves the consistency of letter and line spacing, however it also means that text will be laid out differently at different zoom factors.

类摘要

CairoHintMetrics {
/* 常量 */
const integer METRICS_DEFAULT = 0 ;
const integer METRICS_OFF = 1 ;
const integer METRICS_ON = 2 ;
}

预定义常量

CairoHintMetrics::METRICS_DEFAULT

Hint metrics in the default manner for the font backend and target device

CairoHintMetrics::METRICS_OFF

Do not hint font metrics

CairoHintMetrics::METRICS_ON

Hint font metrics

CairoFilter
CairoHintStyle
Cairo


The CairoHintStyle class

(No version information available, might only be in Git)

简介

Specifies the type of hinting to do on font outlines. Hinting is the process of fitting outlines to the pixel grid in order to improve the appearance of the result. Since hinting outlines involves distorting them, it also reduces the faithfulness to the original outline shapes. Not all of the outline hinting styles are supported by all font backends.

类摘要

CairoHintStyle {
/* 常量 */
const integer STYLE_DEFAULT = 0 ;
const integer STYLE_NONE = 1 ;
const integer STYLE_SLIGHT = 2 ;
const integer STYLE_MEDIUM = 3 ;
const integer STYLE_FULL = 4 ;
}

预定义常量

CairoHintStyle::STYLE_DEFAULT

Use the default hint style for font backend and target device

CairoHintStyle::STYLE_NONE

Do not hint outlines

CairoHintStyle::STYLE_SLIGHT

Hint outlines slightly to improve contrast while retaining good fidelity to the original shapes.

CairoHintStyle::STYLE_MEDIUM

Hint outlines with medium strength giving a compromise between fidelity to the original shapes and contrast

CairoHintStyle::STYLE_FULL

Hint outlines to maximize contrast

CairoHintMetrics
CairoLineCap
Cairo


The CairoLineCap class

(No version information available, might only be in Git)

简介

Specifies how to render the endpoints of the path when stroking.

The default line cap style is CairoLineCap::BUTT.

类摘要

CairoLineCap {
/* 常量 */
const integer BUTT = 0 ;
const integer ROUND = 1 ;
const integer SQUARE = 2 ;
}

预定义常量

CairoLineCap::BUTT

Start(stop) the line exactly at the start(end) point

CairoLineCap::ROUND

Use a round ending, the center of the circle is the end point

CairoLineCap::SQUARE

Use squared ending, the center of the square is the end point

CairoHintStyle
CairoLineJoin
Cairo


The CairoLineJoin class

(No version information available, might only be in Git)

简介

类摘要

CairoLineJoin {
/* 常量 */
const integer MITER = 0 ;
const integer ROUND = 1 ;
const integer BEVEL = 2 ;
}

预定义常量

CairoLineJoin::MITER

Description here...

CairoLineJoin::ROUND

Description here...

CairoLineJoin::BEVEL

Description here...

CairoLineCap
CairoMatrix
Cairo


The CairoMatrix class

(PECL cairo >= 0.1.0)

简介

Matrices are used throughout cairo to convert between different coordinate spaces.

类摘要

CairoMatrix {
/* 方法 */
public __construct ([ float $xx = 1.0 [, float $yx = 0.0 [, float $xy = 0.0 [, float $yy = 1.0 [, float $x0 = 0.0 [, float $y0 = 0.0 ]]]]]] )
public static void initIdentity ( void )
public static void initRotate ( float $radians )
public static void initScale ( float $sx , float $sy )
public static void initTranslate ( float $tx , float $ty )
public void invert ( void )
public static CairoMatrix multiply ( CairoMatrix $matrix1 , CairoMatrix $matrix2 )
public void rotate ( string $sx , string $sy )
public void scale ( float $sx , float $sy )
public array transformDistance ( string $dx , string $dy )
public array transformPoint ( string $dx , string $dy )
public void translate ( string $tx , string $ty )
}

Table of Contents

  • CairoMatrix::__construct — Creates a new CairoMatrix object
  • CairoMatrix::initIdentity — Creates a new identity matrix
  • CairoMatrix::initRotate — Creates a new rotated matrix
  • CairoMatrix::initScale — Creates a new scaling matrix
  • CairoMatrix::initTranslate — Creates a new translation matrix
  • CairoMatrix::invert — The invert purpose
  • CairoMatrix::multiply — The multiply purpose
  • CairoMatrix::rotate — The rotate purpose
  • CairoMatrix::scale — Applies scaling to a matrix
  • CairoMatrix::transformDistance — The transformDistance purpose
  • CairoMatrix::transformPoint — The transformPoint purpose
  • CairoMatrix::translate — The translate purpose
CairoLineJoin
CairoMatrix::__construct
Cairo


Creates a new CairoMatrix object

CairoMatrix
CairoMatrix::initIdentity
CairoMatrix
PHP Manual

CairoMatrix::__construct

cairo_matrix_init

(PECL cairo >= 0.1.0)

CairoMatrix::__construct -- cairo_matrix_init — Creates a new CairoMatrix object

说明

面向对象风格 (method):

public CairoMatrix::__construct ([ float $xx = 1.0 [, float $yx = 0.0 [, float $xy = 0.0 [, float $yy = 1.0 [, float $x0 = 0.0 [, float $y0 = 0.0 ]]]]]] )

过程化风格:

object cairo_matrix_init ([ float $xx = 1.0 [, float $yx = 0.0 [, float $xy = 0.0 [, float $yy = 1.0 [, float $x0 = 0.0 [, float $y0 = 0.0 ]]]]]] )

Returns new CairoMatrix object. Matrices are used throughout cairo to convert between different coordinate spaces. Sets matrix to be the affine transformation given by xx, yx, xy, yy, x0, y0. The transformation is given by: x_new = xx * x + xy * y + x0; and y_new = yx * x + yy * y + y0;

参数

xx

xx component of the affine transformation

yx

yx component of the affine transformation

xy

xy component of the affine transformation

yy

yy component of the affine transformation

x0

X translation component of the affine transformation

y0

Y translation component of the affine transformation

返回值

Returns a new CairoMatrix object that can be used with surfaces, contexts, and patterns.

范例

Example #1 面向对象风格

<?php
/* Create a new Matrix */
$matrix = new CairoMatrix(1.0, 0.5, 0.0, 1.0, 0.0, 0.0);
?>

Example #2 过程化风格

<?php
/* Create a new Matrix */
$matrix = cairo_matrix_init(1.0, 0.5, 0.0, 1.0, 0.0, 0.0);
?>

参见

  • CairoMatrix::initIdentity() - Creates a new identity matrix
  • CairoMatrix::initRotate() - Creates a new rotated matrix
  • CairoMatrix::initScale() - Creates a new scaling matrix
  • CairoMatrix::initTranslate() - Creates a new translation matrix

CairoMatrix
CairoMatrix::initIdentity
CairoMatrix


Creates a new identity matrix

CairoMatrix::__construct
CairoMatrix::initRotate
CairoMatrix
PHP Manual

CairoMatrix::initIdentity

cairo_matrix_init_identity

(PECL cairo >= 0.1.0)

CairoMatrix::initIdentity -- cairo_matrix_init_identity — Creates a new identity matrix

说明

面向对象风格 (method):

public static void CairoMatrix::initIdentity ( void )

过程化风格:

object cairo_matrix_init_identity ( void )

Creates a new matrix that is an identity transformation. An identity transformation means the source data is copied into the destination data without change

参数

此函数没有参数。

返回值

Returns a new CairoMatrix object that can be used with surfaces, contexts, and patterns.

范例

Example #1 面向对象风格

<?php
/* Create a new Matrix */
$matrix = CairoMatrix::initIdentity();
?>

Example #2 过程化风格

<?php
/* Create a new Matrix */
$matrix = cairo_matrix_init_identity();
?>

参见

  • CairoMatrix::__construct() - Creates a new CairoMatrix object
  • CairoMatrix::initRotate() - Creates a new rotated matrix
  • CairoMatrix::initScale() - Creates a new scaling matrix
  • CairoMatrix::initTranslate() - Creates a new translation matrix

CairoMatrix::__construct
CairoMatrix::initRotate
CairoMatrix


Creates a new rotated matrix

CairoMatrix::initIdentity
CairoMatrix::initScale
CairoMatrix
PHP Manual

CairoMatrix::initRotate

cairo_matrix_init_rotate

(PECL cairo >= 0.1.0)

CairoMatrix::initRotate -- cairo_matrix_init_rotate — Creates a new rotated matrix

说明

面向对象风格 (method):

public static void CairoMatrix::initRotate ( float $radians )

过程化风格:

object cairo_matrix_init_rotate ( float $radians )

Creats a new matrix to a transformation that rotates by radians provided

参数

radians

angle of rotation, in radians. The direction of rotation is defined such that positive angles rotate in the direction from the positive X axis toward the positive Y axis. With the default axis orientation of cairo, positive angles rotate in a clockwise direction.

返回值

Returns a new CairoMatrix object that can be used with surfaces, contexts, and patterns.

范例

Example #1 面向对象风格

<?php
/* Create a new Matrix */
$matrix = CairoMatrix::initRotate(0.3);
?>

Example #2 过程化风格

<?php
/* Create a new Matrix */
$matrix = cairo_matrix_init_rotate(0.3);
?>

参见

  • CairoMatrix::__construct() - Creates a new CairoMatrix object
  • CairoMatrix::initIdentity() - Creates a new identity matrix
  • CairoMatrix::initScale() - Creates a new scaling matrix
  • CairoMatrix::initTranslate() - Creates a new translation matrix

CairoMatrix::initIdentity
CairoMatrix::initScale
CairoMatrix


Creates a new scaling matrix

CairoMatrix::initRotate
CairoMatrix::initTranslate
CairoMatrix
PHP Manual

CairoMatrix::initScale

cairo_matrix_init_scale

cairo_matrix_create_scale

(PECL cairo >= 0.1.0)

CairoMatrix::initScale -- cairo_matrix_init_scale -- cairo_matrix_create_scale — Creates a new scaling matrix

说明

面向对象风格 (method):

public static void CairoMatrix::initScale ( float $sx , float $sy )

过程化风格:

object cairo_matrix_init_scale ( float $sx , float $sy )

Creates a new matrix to a transformation that scales by sx and sy in the X and Y dimensions, respectively.

参数

sx

scale factor in the X direction

sy

scale factor in the Y direction

返回值

Returns a new CairoMatrix object that can be used with surfaces, contexts, and patterns.

范例

Example #1 面向对象风格

<?php
/* Create a new Matrix */
$matrix = CairoMatrix::initScale(1.0, 2.0);
?>

Example #2 过程化风格

<?php
/* Create a new Matrix */
$matrix = cairo_matrix_init_scale(1.0, 2.0);
?>

参见

  • CairoMatrix::__construct() - Creates a new CairoMatrix object
  • CairoMatrix::initIdentity() - Creates a new identity matrix
  • CairoMatrix::initRotate() - Creates a new rotated matrix
  • CairoMatrix::initTranslate() - Creates a new translation matrix

CairoMatrix::initRotate
CairoMatrix::initTranslate
CairoMatrix


Creates a new translation matrix

CairoMatrix::initScale
CairoMatrix::invert
CairoMatrix
PHP Manual

CairoMatrix::initTranslate

cairo_matrix_init_translate

(PECL cairo >= 0.1.0)

CairoMatrix::initTranslate -- cairo_matrix_init_translate — Creates a new translation matrix

说明

面向对象风格 (method):

public static void CairoMatrix::initTranslate ( float $tx , float $ty )

过程化风格:

object cairo_matrix_init_translate ( float $tx , float $ty )

Creates a new matrix to a transformation that translates by tx and ty in the X and Y dimensions, respectively.

参数

tx

amount to translate in the X direction

ty

amount to translate in the Y direction

返回值

Returns a new CairoMatrix object that can be used with surfaces, contexts, and patterns.

范例

Example #1 面向对象风格

<?php
/* Create a new Matrix */
$matrix = CairoMatrix::initTranslate(1.0, 2.0);
?>

Example #2 过程化风格

<?php
/* Create a new Matrix */
$matrix = cairo_matrix_init_translate(1.0, 2.0);
?>

参见

  • CairoMatrix::__construct() - Creates a new CairoMatrix object
  • CairoMatrix::initIdentity() - Creates a new identity matrix
  • CairoMatrix::initRotate() - Creates a new rotated matrix
  • CairoMatrix::initScale() - Creates a new scaling matrix

CairoMatrix::initScale
CairoMatrix::invert
CairoMatrix


The invert purpose

CairoMatrix::initTranslate
CairoMatrix::multiply
CairoMatrix
PHP Manual

CairoMatrix::invert

(PECL cairo >= 0.1.0)

CairoMatrix::invert — The invert purpose

说明

public void CairoMatrix::invert ( void )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Description...

范例

Example #1 CairoMatrix::invert() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoMatrix::initTranslate
CairoMatrix::multiply
CairoMatrix


The multiply purpose

CairoMatrix::invert
CairoMatrix::rotate
CairoMatrix
PHP Manual

CairoMatrix::multiply

(PECL cairo >= 0.1.0)

CairoMatrix::multiply — The multiply purpose

说明

public static CairoMatrix CairoMatrix::multiply ( CairoMatrix $matrix1 , CairoMatrix $matrix2 )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

matrix1

Description...

matrix2

Description...

返回值

Description...

范例

Example #1 CairoMatrix::multiply() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoMatrix::invert
CairoMatrix::rotate
CairoMatrix


The rotate purpose

CairoMatrix::multiply
CairoMatrix::scale
CairoMatrix
PHP Manual

CairoMatrix::rotate

cairo_rotate

(PECL cairo >= 0.1.0)

CairoMatrix::rotate -- cairo_rotate — The rotate purpose

说明

面向对象风格 (method):

public void CairoMatrix::rotate ( string $sx , string $sy )

过程化风格:

void cairo_rotate ( CairoContext $context , string $angle )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

angle

Description...

sx

Description...

sy

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoMatrix::multiply
CairoMatrix::scale
CairoMatrix


Applies scaling to a matrix

CairoMatrix::rotate
CairoMatrix::transformDistance
CairoMatrix
PHP Manual

CairoMatrix::scale

cairo_matrix_scale

(PECL cairo >= 0.1.0)

CairoMatrix::scale -- cairo_matrix_scale — Applies scaling to a matrix

说明

面向对象风格 (method):

public void CairoMatrix::scale ( float $sx , float $sy )

过程化风格:

void cairo_matrix_scale ( CairoContext $context , float $sx , float $sy )

Applies scaling by sx, sy to the transformation in the matrix. The effect of the new transformation is to first scale the coordinates by sx and sy, then apply the original transformation to the coordinates.

参数

matrix

Procedural only - CairoMatrix instance

sx

scale factor in the X direction

sy

scale factor in the Y direction

范例

Example #1 面向对象风格

<?php
/* Apply scaling to a matrix */
$matrix = new CairoMatrix(1.0, 0.5, 0.0, 1.0, 0.0, 0.0);
$matrix->scale(0.2, 2.0);
?>

Example #2 过程化风格

<?php
/* Apply scaling to a matrix */
$matrix = cairo_matrix_init(1.0, 0.5, 0.0, 1.0, 0.0, 0.0);
cairo_matrix_scale($matrix, 0.2, 2.0);
?>

参见

  • CairoMatrix::initScale() - Creates a new scaling matrix

CairoMatrix::rotate
CairoMatrix::transformDistance
CairoMatrix


The transformDistance purpose

CairoMatrix::scale
CairoMatrix::transformPoint
CairoMatrix
PHP Manual

CairoMatrix::transformDistance

(PECL cairo >= 0.1.0)

CairoMatrix::transformDistance — The transformDistance purpose

说明

public array CairoMatrix::transformDistance ( string $dx , string $dy )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

dx

Description...

dy

Description...

返回值

Description...

范例

Example #1 CairoMatrix::transformDistance() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoMatrix::scale
CairoMatrix::transformPoint
CairoMatrix


The transformPoint purpose

CairoMatrix::transformDistance
CairoMatrix::translate
CairoMatrix
PHP Manual

CairoMatrix::transformPoint

(PECL cairo >= 0.1.0)

CairoMatrix::transformPoint — The transformPoint purpose

说明

public array CairoMatrix::transformPoint ( string $dx , string $dy )

The method description goes here.

Warning

本函数还未编写文档，仅有参数列表。

参数

dx

Description...

dy

Description...

返回值

Description...

范例

Example #1 CairoMatrix::transformPoint() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoMatrix::transformDistance
CairoMatrix::translate
CairoMatrix


The translate purpose

CairoMatrix::transformPoint
CairoOperator
CairoMatrix
PHP Manual

CairoMatrix::translate

cairo_translate

(PECL cairo >= 0.1.0)

CairoMatrix::translate -- cairo_translate — The translate purpose

说明

面向对象风格 (method):

public void CairoMatrix::translate ( string $tx , string $ty )

过程化风格:

void cairo_translate ( CairoContext $context , string $x , string $y )

Description here.

Warning

本函数还未编写文档，仅有参数列表。

参数

context

Description...

x

Description...

y

Description...

tx

Description...

ty

Description...

返回值

Description...

范例

Example #1 面向对象风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

Example #2 过程化风格

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

CairoMatrix::transformPoint
CairoOperator
CairoMatrix


The CairoOperator class

(No version information available, might only be in Git)

简介

This is used to set the compositing operator for all cairo drawing operations.

The default operator is CairoOperator::OVER

The operators marked as unbounded modify their destination even outside of the mask layer (that is, their effect is not bound by the mask layer). However, their effect can still be limited by way of clipping.

To keep things simple, the operator descriptions here document the behavior for when both source and destination are either fully transparent or fully opaque. The actual implementation works for translucent layers too. For a more detailed explanation of the effects of each operator, including the mathematical definitions, see http://cairographics.org/operators/.

类摘要

CairoOperator {
/* 常量 */
const integer CLEAR = 0 ;
const integer SOURCE = 1 ;
const integer OVER = 2 ;
const integer IN = 3 ;
const integer OUT = 4 ;
const integer ATOP = 5 ;
const integer DEST = 6 ;
const integer DEST_OVER = 7 ;
const integer DEST_IN = 8 ;
const integer DEST_OUT = 9 ;
const integer DEST_ATOP = 10 ;
const integer XOR = 11 ;
const integer ADD = 12 ;
const integer SATURATE = 13 ;
}

预定义常量

CairoOperator::CLEAR

Clear destination layer (bounded)

CairoOperator::SOURCE

Replace destination layer (bounded)

CairoOperator::OVER

Draw source layer on top of destination layer (bounded)

CairoOperator::IN

Draw source where there was destination content (unbounded)

CairoOperator::OUT

Draw source where there was no destination content (unbounded)

CairoOperator::ATOP

Draw source on top of destination content and only there

CairoOperator::DEST

Ignore the source

CairoOperator::DEST_OVER

Draw destination on top of source

CairoOperator::DEST_IN

Leave destination only where there was source content (unbounded)

CairoOperator::DEST_OUT

Leave destination only where there was no source content

CairoOperator::DEST_ATOP

Leave destination on top of source content and only there (unbounded)

CairoOperator::XOR

Source and destination are shown where there is only one of them

CairoOperator::ADD

Source and destination layers are accumulated

CairoOperator::SATURATE

Like CairoOperator::OVER, but assuming source and dest are disjoint geometries

CairoMatrix::translate
CairoPath
Cairo


The CairoPath class

(No version information available, might only be in Git)

简介

Note: CairoPath class cannot be instantiated directly, doing so will result in Fatal Error if used or passed

类摘要

CairoPath {
}
CairoOperator
CairoPsLevel
Cairo


The CairoPsLevel class

(No version information available, might only be in Git)

简介

类摘要

CairoPsLevel {
/* 常量 */
const integer LEVEL_2 = 0 ;
const integer LEVEL_3 = 1 ;
}

预定义常量

CairoPsLevel::LEVEL_2

Description here...

CairoPsLevel::LEVEL_3

Description here...

CairoPath
CairoSubpixelOrder
Cairo


The CairoSubpixelOrder class

(No version information available, might only be in Git)

简介

类摘要

CairoSubpixelOrder {
/* 常量 */
const integer ORDER_DEFAULT = 0 ;
const integer ORDER_RGB = 1 ;
const integer ORDER_BGR = 2 ;
const integer ORDER_VRGB = 3 ;
const integer ORDER_VBGR = 4 ;
}

预定义常量

CairoSubpixelOrder::ORDER_DEFAULT

Description here...

CairoSubpixelOrder::ORDER_RGB

Description here...

CairoSubpixelOrder::ORDER_BGR

Description here...

CairoSubpixelOrder::ORDER_VRGB

Description here...

CairoSubpixelOrder::ORDER_VBGR

Description here...

CairoPsLevel
CairoSvgVersion
Cairo


The CairoSvgVersion class

(No version information available, might only be in Git)

简介

类摘要

CairoSvgVersion {
/* 常量 */
const integer VERSION_1_1 = 0 ;
const integer VERSION_1_2 = 1 ;
}

预定义常量

CairoSvgVersion::VERSION_1_1

Description here...

CairoSvgVersion::VERSION_1_2

Description here...

CairoSubpixelOrder
Exif
Cairo


可交换图像信息

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Exif 函数
    • exif_imagetype — 判断一个图像的类型
    • exif_read_data — 从 JPEG 或 TIFF 文件中读取 EXIF 头信息
    • exif_tagname — 获取指定索引的头名称
    • exif_thumbnail — 取得嵌入在 TIFF 或 JPEG 图像中的缩略图
    • read_exif_data — 别名 exif_read_data
CairoSvgVersion
简介
图像生成和处理


简介

通过使用 exif 扩展，你可以操作图像元数据。 例如：你可以使用 exif 相关的函数从文件头读取 数码相机拍摄的 JPEG 和 TIFF 格式的图像文件元数据。

Exif
安装／配置
Exif


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Exif


需求

必须使用 --enable-exif 选项编译 PHP。 exif 模块不需要其他额外的库。 Windows 用户必须启用 mbstring 扩展。

安装／配置
安装
安装／配置


安装

使用 --enable-exif 选项 配置 PHP 来启用 exif 支持。

Windows 用户必须在 php.ini 中启用 php_mbstring.dll 和 php_exif.dll 扩展。 请确保在 php.ini 中保持正确的顺序： php_mbstring.dll 必须在 php_exif.dll 之前 加载。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

当 mbstring 模块可用时，exif 支持用户注释中的 Unicode 和 JIS 字符编码的自动转换。这是通过先用指定字符集将注释解码，把结果再用另一个符合你的 HTTP 输出的字符集编码来实现的。

Exif configuration options
名字 | 默认 | 可修改范围 | 更新日志
exif.encode_unicode | "ISO-8859-15" | PHP_INI_ALL | 自 PHP 4.3.0 起可用。
exif.decode_unicode_motorola | "UCS-2BE" | PHP_INI_ALL | 自 PHP 4.3.0 起可用。
exif.decode_unicode_intel | "UCS-2LE" | PHP_INI_ALL | 自 PHP 4.3.0 起可用。
exif.encode_jis | "" | PHP_INI_ALL | 自 PHP 4.3.0 起可用。
exif.decode_jis_motorola | "JIS" | PHP_INI_ALL | 自 PHP 4.3.0 起可用。
exif.decode_jis_intel | "JIS" | PHP_INI_ALL | 自 PHP 4.3.0 起可用。
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

exif.encode_unicode string

exif.encode_unicode 定义了 UNICODE 用户注释被处理的字符集。默认为 ISO-8859-15，可用于大多数非亚洲国家。本设置可以为空或者必须为一个 mbstring 所支持的编码。如果为空，则使用当前 mbstring 内部使用的编码。

exif.decode_unicode_motorola string

exif.decode_unicode_motorola 定义了 Unicode 编码的用户注释的图像内部字符集，如果图像是摩托罗拉字节顺序（big-endian）的话。本设置不能为空但可以指定一个 mbstring 支持的编码列表。默认为 UCS-2BE。

exif.decode_unicode_intel string

exif.decode_unicode_intel 定义了 Unicode 编码的用户注释的图像内部字符集，如果图像是英特尔字节顺序（little-endian）的话。本设置不能为空但可以指定一个 mbstring 支持的编码列表。默认为 UCS-2LE。

exif.encode_jis string

exif.encode_jis 定义了 JIS 用户注释被处理的字符集。默认为空值，迫使函数使用当前 mbstring 使用的内部编码。

exif.decode_jis_motorola string

exif.decode_jis_motorola 定义了 JIS 编码的用户注释的图像内部字符集，如果图像是摩托罗拉字节顺序（big-endian）的话。本设置不能为空但可以指定一个 mbstring 支持的编码列表。默认为 JIS。

exif.decode_jis_intel string

exif.decode_jis_intel 定义了 JIS 编码的用户注释的图像内部字符集，如果图像是英特尔字节顺序（litle-endian）的话。本设置不能为空但可以指定一个 mbstring 支持的编码列表。默认为 JIS。

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

EXIF_USE_MBSTRING (integer)

exif_imagetype() 列出几个相关的内建变量。

资源类型
Exif 函数
Exif


Exif 函数

Table of Contents

  • exif_imagetype — 判断一个图像的类型
  • exif_read_data — 从 JPEG 或 TIFF 文件中读取 EXIF 头信息
  • exif_tagname — 获取指定索引的头名称
  • exif_thumbnail — 取得嵌入在 TIFF 或 JPEG 图像中的缩略图
  • read_exif_data — 别名 exif_read_data
预定义常量
exif_imagetype
Exif


判断一个图像的类型

Exif 函数
exif_read_data
Exif 函数
PHP Manual

exif_imagetype

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

exif_imagetype — 判断一个图像的类型

说明

int exif_imagetype ( string $filename )

exif_imagetype() 读取一个图像的第一个字节并检查其签名。

本函数可用来避免调用其它 exif 函数用到了不支持的文件类型上或和 $_SERVER['HTTP_ACCEPT'] 结合使用来检查浏览器是否可以显示某个指定的图像。

参数

filename
被检查的图像文件名。

返回值

如果发现了恰当的签名则返回一个对应的常量，否则返回 FALSE。返回值和 getimagesize() 返回的数组中的索引 2 的值是一样的，但本函数快得多。

更新日志

版本 | 说明
4.3.2 | 支持 JPC，JP2，JPX，JB2，XBM 以及 WBMP
4.3.0 | 支持 SWC

预定义常量

定义有以下常量，并代表了 exif_imagetype() 可能的返回值：

图像类型常量
值 | 常量
1 | IMAGETYPE_GIF
2 | IMAGETYPE_JPEG
3 | IMAGETYPE_PNG
4 | IMAGETYPE_SWF
5 | IMAGETYPE_PSD
6 | IMAGETYPE_BMP
7 | IMAGETYPE_TIFF_II（Intel 字节顺序）
8 | IMAGETYPE_TIFF_MM（Motorola 字节顺序）
9 | IMAGETYPE_JPC
10 | IMAGETYPE_JP2
11 | IMAGETYPE_JPX
12 | IMAGETYPE_JB2
13 | IMAGETYPE_SWC
14 | IMAGETYPE_IFF
15 | IMAGETYPE_WBMP
16 | IMAGETYPE_XBM

范例

Example #1 exif_imagetype() 例子

<?php

if (exif_imagetype("image.gif") != IMAGETYPE_GIF) {
    echo "The picture is not a gif";
}

?>

参见

  • getimagesize() - 取得图像大小

Exif 函数
exif_read_data
Exif 函数


从 JPEG 或 TIFF 文件中读取 EXIF 头信息

exif_imagetype
exif_tagname
Exif 函数
PHP Manual

exif_read_data

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

exif_read_data — 从 JPEG 或 TIFF 文件中读取 EXIF 头信息

说明

array exif_read_data ( string $filename [, string $sections = NULL [, bool $arrays = false [, bool $thumbnail = false ]]] )

exif_read_data() 函数从 JPEG 或 TIFF 图像文件中读取 EXIF 头信息。这样就可以读取数码相机产生的元数据。

EXIF 头信息往往存在于数码相机生成的 JPEG/TIFF 图像中，但不幸的是每个数码相机制造商的标记都不同，因此（编写代码时）不能依赖于某个特定的 Exif 头信息。

Height 和 Width 是用和 getimagesize() 一样的方法计算的，因此它们的值不能是任何返回的头信息的部分。此外 html 是一个 height/width 的文本字符串可以用于普通的 HTML 中。

当一个 Exif 头信息包含有一个 Copyright 时注意它本身可以包含两个值。解决方案和 Exif 2.10 标准不一致，COMPUTED 区段会同时返回 Copyright.Photographer 和 Copyright.Editor，但是 IFD0 区段则包含有一个字节数组用 NULL 字符分隔开两个项目。或者只有第一项如果数据类型错误的话（Exif 的正常行为）。COMPUTED 也会包含 Copyright，要么是原始的版权字符串，要么是逗号分隔的摄像与编辑的版权信息。

UserComment 标记和 Copyright 有同样的问题。它也可以存储两个值，第一个是使用的编码方式，第二个是其值本身。如果这样则 IFD0 区段仅包含编码方式或者一个字节数组。COMPUTED 区段将存储两个值到 UserCommentEncoding 和 UserComment。UserComment 在两种情况下都可用因此应该优先使用它而不是 IFD0 区段中的该值。

exif_read_data() 还会根据 EXIF 规范（» http://exif.org/Exif2-2.PDF，第 20 页）来验证 EXIF 数据。

Note:

Windows ME/XP 在连接到数码相机时能清除掉 Exif 头信息。

参数

filename

被读取的图像文件名。不能是 URL。

sections

是需要存在于文件中的逗号分隔的区段列表用来产生结果数组。如果未找到所请求的区段则返回值为 FALSE。

FILE | FileName, FileSize, FileDateTime, SectionsFound
COMPUTED | html，Width，Height，IsColor，可能有更多其它的。Height 和 Width 是用和 getimagesize() 一样的方法计算的，因此它们的值不能是任何返回的头信息的部分。此外 html 是一个 height/width 的文本字符串可以用于普通的 HTML 中。
ANY_TAG | 任何包含有标记的信息，例如 IFD0，EXIF，...
IFD0 | 所有 IFD0 的标记数据。在标准的图像文件中这包含了图像大小及其它。
THUMBNAIL | 如果有第二个 IFD，文件应该包含有缩略图。所有有关嵌入缩略图的标记信息都存储在本区。
COMMENT | JPEG 图像的注释头信息。
EXIF | EXIF 区段是 IFDO 的子区，包含有图像的更多详细信息。大多数内容都是数码相机相关的。

arrays

指定了是否每个区段都成为一个数组。sections COMPUTED，THUMBNAIL 和COMMENT 区段总是成为数组，因为它们里面包含的名字和其它区段冲突。

thumbnail

当设定为 TRUE 时，读取缩略图本身。否则只读取标记数据。

返回值

返回一个关联数组，键名是头信息名，值为与其相应的值。如果没有可供返回的数据，exif_read_data() 将返回 FALSE。

更新日志

版本 | 说明
4.3.0 | 可以读取所有嵌入的 IFD 数据，包括数组（也返回数组）。此外嵌入的缩略图的大小包括在 THUMBNAIL 子数组中并且 exif_read_data() 可以将缩略图按照 TIFF 格式返回。最后，不再有返回值最大长度的限制了（直到达到内存限定）。
4.3.0 | 如果 PHP 有 mbstring 支持，则用户注释可以自动改变编码。此外，如果用户注释使用 Unicode 或 JIS 编码，将会根据 EXIF 在 php.ini 中的 设置被自动改变。
4.3.0 | 如果图像包含任何 IFD0 数据，则 COMPUTED 会包含有一项 ByteOrderMotorola，对于 little-endian (intel) 字节顺序，其值为 0，对于 big-endian (motorola) 字节顺序，其值为 1。此外，COMPUTED 和 UserComment 在数据类型出错时也不再仅包含第一个版权条目。

范例

Example #1 exif_read_data() 例子

<?php
echo "test1.jpg:<br />\n";
$exif = exif_read_data('tests/test1.jpg', 'IFD0');
echo $exif===false ? "No header data found.<br />\n" : "Image contains headers<br />\n";

$exif = exif_read_data('tests/test2.jpg', 0, true);
echo "test2.jpg:<br />\n";
foreach ($exif as $key => $section) {
    foreach ($section as $name => $val) {
        echo "$key.$name: $val<br />\n";
    }
}
?>

第一个调用失败了，因为图像没有头信息。

以上例程的输出类似于：

test1.jpg:
No header data found.
test2.jpg:
FILE.FileName: test2.jpg
FILE.FileDateTime: 1017666176
FILE.FileSize: 1240
FILE.FileType: 2
FILE.SectionsFound: ANY_TAG, IFD0, THUMBNAIL, COMMENT
COMPUTED.html: width="1" height="1"
COMPUTED.Height: 1
COMPUTED.Width: 1
COMPUTED.IsColor: 1
COMPUTED.ByteOrderMotorola: 1
COMPUTED.UserComment: Exif test image.
COMPUTED.UserCommentEncoding: ASCII
COMPUTED.Copyright: Photo (c) M.Boerger, Edited by M.Boerger.
COMPUTED.Copyright.Photographer: Photo (c) M.Boerger
COMPUTED.Copyright.Editor: Edited by M.Boerger.
IFD0.Copyright: Photo (c) M.Boerger
IFD0.UserComment: ASCII
THUMBNAIL.JPEGInterchangeFormat: 134
THUMBNAIL.JPEGInterchangeFormatLength: 523
COMMENT.0: Comment #1.
COMMENT.1: Comment #2.
COMMENT.2: Comment #3end
THUMBNAIL.JPEGInterchangeFormat: 134
THUMBNAIL.Thumbnail.Height: 1
THUMBNAIL.Thumbnail.Height: 1

参见

  • exif_thumbnail() - 取得嵌入在 TIFF 或 JPEG 图像中的缩略图
  • getimagesize() - 取得图像大小

exif_imagetype
exif_tagname
Exif 函数


获取指定索引的头名称

exif_read_data
exif_thumbnail
Exif 函数
PHP Manual

exif_tagname

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

exif_tagname — 获取指定索引的头名称

说明

string exif_tagname ( int $index )

参数

index

要查找的标签名称的 ID。

返回值

返回头名称。 如果 index 参数不是预定义的 EXIF 标签 id，则返回 FALSE

范例

Example #1 exif_tagname() 函数例程

<?php
echo "256: ".exif_tagname(256).PHP_EOL;
echo "257: ".exif_tagname(257).PHP_EOL;
?>

以上例程会输出：

256: ImageWidth
257: ImageLength

参见

  • exif_imagetype() - 判断一个图像的类型
  • » EXIF 规范
  • » EXIF 标签

exif_read_data
exif_thumbnail
Exif 函数


取得嵌入在 TIFF 或 JPEG 图像中的缩略图

exif_tagname
read_exif_data
Exif 函数
PHP Manual

exif_thumbnail

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

exif_thumbnail — 取得嵌入在 TIFF 或 JPEG 图像中的缩略图

说明

string exif_thumbnail ( string $filename [, int &$width [, int &$height [, int &$imagetype ]]] )

exif_thumbnail() 读取 TIFF 或 JPEG 图像中的嵌入缩略图。如果图像不包含缩略图则返回 FALSE。

If you want to deliver thumbnails through this function, you should send the mimetype information using the header() function.

It is possible that exif_thumbnail() cannot create an image but can determine its size. In this case, the return value is FALSE but width and height are set.

参数

filename

The name of the image file being read. This image contains an embedded thumbnail.

width

The return width of the returned thumbnail.

height

The returned height of the returned thumbnail.

imagetype

The returned image type of the returned thumbnail. This is either TIFF or JPEG.

返回值

Returns the embedded thumbnail, or FALSE if the image contains no thumbnail.

更新日志

版本 | 说明
4.3.0 | The optional parameters width, height, and imagetype all became available.
4.3.0 | May return thumbnails in the TIFF format.

范例

Example #1 exif_thumbnail() 例子

<?php
if (array_key_exists('file',$_REQUEST)) {
    $image = exif_thumbnail($_REQUEST['file'], $width, $height, $type);
} else {
    $image = false;
}
if ($image!==false) {
    header("Content-type: ".image_type_to_mime_type($type));
    echo $image;
    exit;
} else {
    // no thumbnail available, handle the error here
    echo "No thumbnail available";
}
?>

参见

  • exif_read_data() - 从 JPEG 或 TIFF 文件中读取 EXIF 头信息
  • image_type_to_mime_type() - 取得 getimagesize，exif_read_data，exif_thumbnail，exif_imagetype 所返回的图像类型的 MIME 类型

exif_tagname
read_exif_data
Exif 函数


别名 exif_read_data

exif_thumbnail
GD
Exif 函数
PHP Manual

read_exif_data

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

read_exif_data — 别名 exif_read_data()

说明

此函数是该函数的别名： exif_read_data().

exif_thumbnail
GD
Exif 函数


图像处理和 GD

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • 使用 PHP 创建 PNG 图像
    • 使用 Alpha 通道为图像加水印
    • 使用 imagecopymerge 函数创建半透明水印
  • GD 和图像处理 函数
    • gd_info — 取得当前安装的 GD 库的信息
    • getimagesize — 取得图像大小
    • getimagesizefromstring — 从字符串中获取图像尺寸信息
    • image_type_to_extension — 取得图像类型的文件后缀
    • image_type_to_mime_type — 取得 getimagesize，exif_read_data，exif_thumbnail，exif_imagetype 所返回的图像类型的 MIME 类型
    • image2wbmp — 以 WBMP 格式将图像输出到浏览器或文件
    • imageaffine — 返回经过仿射变换后的图像，剪切区域可选
    • imageaffinematrixconcat — Concatenate two affine transformation matrices
    • imageaffinematrixget — Get an affine transformation matrix
    • imagealphablending — 设定图像的混色模式
    • imageantialias — 是否使用抗锯齿（antialias）功能
    • imagearc — 画椭圆弧
    • imagebmp — Output a BMP image to browser or file
    • imagechar — 水平地画一个字符
    • imagecharup — 垂直地画一个字符
    • imagecolorallocate — 为一幅图像分配颜色
    • imagecolorallocatealpha — 为一幅图像分配颜色 + alpha
    • imagecolorat — 取得某像素的颜色索引值
    • imagecolorclosest — 取得与指定的颜色最接近的颜色的索引值
    • imagecolorclosestalpha — 取得与指定的颜色加透明度最接近的颜色
    • imagecolorclosesthwb — 取得与给定颜色最接近的色度的黑白色的索引
    • imagecolordeallocate — 取消图像颜色的分配
    • imagecolorexact — 取得指定颜色的索引值
    • imagecolorexactalpha — 取得指定的颜色加透明度的索引值
    • imagecolormatch — 使一个图像中调色板版本的颜色与真彩色版本更能匹配
    • imagecolorresolve — 取得指定颜色的索引值或有可能得到的最接近的替代值
    • imagecolorresolvealpha — 取得指定颜色 + alpha 的索引值或有可能得到的最接近的替代值
    • imagecolorset — 给指定调色板索引设定颜色
    • imagecolorsforindex — 取得某索引的颜色
    • imagecolorstotal — 取得一幅图像的调色板中颜色的数目
    • imagecolortransparent — 将某个颜色定义为透明色
    • imageconvolution — 用系数 div 和 offset 申请一个 3x3 的卷积矩阵
    • imagecopy — 拷贝图像的一部分
    • imagecopymerge — 拷贝并合并图像的一部分
    • imagecopymergegray — 用灰度拷贝并合并图像的一部分
    • imagecopyresampled — 重采样拷贝部分图像并调整大小
    • imagecopyresized — 拷贝部分图像并调整大小
    • imagecreate — 新建一个基于调色板的图像
    • imagecreatefrombmp — 由文件或 URL 创建一个新图象。
    • imagecreatefromgd2 — 从 GD2 文件或 URL 新建一图像
    • imagecreatefromgd2part — 从给定的 GD2 文件或 URL 中的部分新建一图像
    • imagecreatefromgd — 从 GD 文件或 URL 新建一图像
    • imagecreatefromgif — 由文件或 URL 创建一个新图象。
    • imagecreatefromjpeg — 由文件或 URL 创建一个新图象。
    • imagecreatefrompng — 由文件或 URL 创建一个新图象。
    • imagecreatefromstring — 从字符串中的图像流新建一图像
    • imagecreatefromwbmp — 由文件或 URL 创建一个新图象。
    • imagecreatefromwebp — 由文件或 URL 创建一个新图象。
    • imagecreatefromxbm — 由文件或 URL 创建一个新图象。
    • imagecreatefromxpm — 由文件或 URL 创建一个新图象。
    • imagecreatetruecolor — 新建一个真彩色图像
    • imagecrop — Crop an image to the given rectangle
    • imagecropauto — Crop an image automatically using one of the available modes
    • imagedashedline — 画一虚线
    • imagedestroy — 销毁一图像
    • imageellipse — 画一个椭圆
    • imagefill — 区域填充
    • imagefilledarc — 画一椭圆弧且填充
    • imagefilledellipse — 画一椭圆并填充
    • imagefilledpolygon — 画一多边形并填充
    • imagefilledrectangle — 画一矩形并填充
    • imagefilltoborder — 区域填充到指定颜色的边界为止
    • imagefilter — 对图像使用过滤器
    • imageflip — Flips an image using a given mode
    • imagefontheight — 取得字体高度
    • imagefontwidth — 取得字体宽度
    • imageftbbox — 给出一个使用 FreeType 2 字体的文本框
    • imagefttext — 使用 FreeType 2 字体将文本写入图像
    • imagegammacorrect — 对 GD 图像应用 gamma 修正
    • imagegd2 — 将 GD2 图像输出到浏览器或文件
    • imagegd — 将 GD 图像输出到浏览器或文件
    • imagegetclip — Get the clipping rectangle
    • imagegif — 输出图象到浏览器或文件。
    • imagegrabscreen — Captures the whole screen
    • imagegrabwindow — Captures a window
    • imageinterlace — 激活或禁止隔行扫描
    • imageistruecolor — 检查图像是否为真彩色图像
    • imagejpeg — 输出图象到浏览器或文件。
    • imagelayereffect — 设定 alpha 混色标志以使用绑定的 libgd 分层效果
    • imageline — 画一条线段
    • imageloadfont — 载入一新字体
    • imageopenpolygon — Draws an open polygon
    • imagepalettecopy — 将调色板从一幅图像拷贝到另一幅
    • imagepalettetotruecolor — Converts a palette based image to true color
    • imagepng — 以 PNG 格式将图像输出到浏览器或文件
    • imagepolygon — 画一个多边形
    • imagepsbbox — 给出一个使用 PostScript Type1 字体的文本方框
    • imagepsencodefont — 改变字体中的字符编码矢量
    • imagepsextendfont — 扩充或精简字体
    • imagepsfreefont — 释放一个 PostScript Type 1 字体所占用的内存
    • imagepsloadfont — 从文件中加载一个 PostScript Type 1 字体
    • imagepsslantfont — 倾斜某字体
    • imagepstext — 用 PostScript Type1 字体把文本字符串画在图像上
    • imagerectangle — 画一个矩形
    • imageresolution — Get or set the resolution of the image
    • imagerotate — 用给定角度旋转图像
    • imagesavealpha — 设置标记以在保存 PNG 图像时保存完整的 alpha 通道信息（与单一透明色相反）
    • imagescale — Scale an image using the given new width and height
    • imagesetbrush — 设定画线用的画笔图像
    • imagesetclip — Set the clipping rectangle
    • imagesetinterpolation — Set the interpolation method
    • imagesetpixel — 画一个单一像素
    • imagesetstyle — 设定画线的风格
    • imagesetthickness — 设定画线的宽度
    • imagesettile — 设定用于填充的贴图
    • imagestring — 水平地画一行字符串
    • imagestringup — 垂直地画一行字符串
    • imagesx — 取得图像宽度
    • imagesy — 取得图像高度
    • imagetruecolortopalette — 将真彩色图像转换为调色板图像
    • imagettfbbox — 取得使用 TrueType 字体的文本的范围
    • imagettftext — 用 TrueType 字体向图像写入文本
    • imagetypes — 返回当前 PHP 版本所支持的图像类型
    • imagewbmp — 以 WBMP 格式将图像输出到浏览器或文件
    • imagewebp — 将 WebP 格式的图像输出到浏览器或文件
    • imagexbm — 将 XBM 图像输出到浏览器或文件
    • iptcembed — 将二进制 IPTC 数据嵌入到一幅 JPEG 图像中
    • iptcparse — 将二进制 IPTC 块解析为单个标记
    • jpeg2wbmp — 将 JPEG 图像文件转换为 WBMP 图像文件
    • png2wbmp — 将 PNG 图像文件转换为 WBMP 图像文件
read_exif_data
简介
图像生成和处理


简介

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 库亦可使用。

Note: 关于如何扩展图像处理能力，例如读取、写入以及修改， 请参考"需求"一节。 要想读取数码相机拍摄的图片的元数据， 你需要上面提到的 exif 扩展。

Note: getimagesize() 函数不需要 GD 扩展库。

GD 库支持多种图像格式， 下标所列的是 GD 所支持的格式，请注意备图像格式对应的读取/写入支持的可用性。

GD 所支持的格式
格式 | 支持读取 | 支持写入 | 备注
JPEG | TRUE | TRUE | GD 1.8+
PNG | TRUE | TRUE |
GIF | TRUE | TRUE | GD 1.6 和 GD 2.0.28 之间的版本不支持
XBM | TRUE | TRUE | PHP 4.0.1 开始支持读取，PHP 5.0.0 开始支持写入
XPM | TRUE | FALSE | PHP 4.0.1 开始支持读取。Windows 平台上不可用。需要 PHP 绑定的 GD 库
WBMP | TRUE | TRUE | GD 1.8+
WebP | TRUE | TRUE | GD 2.1+, PHP 5.5+

很遗憾的是，虽然上表中显示大部分图像格式都是支持读取和写入的， 但是不代表你的 PHP 环境在编译的时候是支持这些操作的。 要想检测 GD 库所支持的格式，请使用 gd_info() 函数， 更多信息请参考 "安装" 一章。

GD
安装／配置
GD


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
GD


需求

如果你有 GD 库（可从 » http://www.libgd.org/ 获得）， 你就可以创建 和处理图像。

可以处理的图像格式由你所使用的 GD 库版本 以及 GD 库可能需要的其他库决定。 GD gd-1.6 之前的版本支持 GIF 格式， 但是不支持 PNG 格式。 gd-1.6 以上、gd-2.0.28 以下的版本支持 PNG， 但是不支持 GIF 格式。 在 gd-2.0.28 中，又重新启用了对于 GIF 格式的支持。

Note: 从 PHP 4.3 开始就绑定了 GD 库。 这个版本的库中还提供了一些额外增加的功能，例如透明混合处理。 这个版本的代码被很好的维护着，并且运行稳定， 所以建议优先选择绑定版本。

你可能希望增强 GD 库以处理更多的图像格式。

支持的图像格式
图像格式 | 需要下载的库 | 备注
gif |  | 仅在 GD 库 gd-1.6 之前或者 gd-2.0.28 之后的版本中支持。 PHP 4.3.0 以及绑定的 GD 库可以支持对 GIF 格式的 只读 操作， 从 PHP 4.3.9 和 PHP 5.0.1 开始支持 写入 操作。
jpeg | » http://www.ijg.org/ | 在构建 PHP 之前， 需要在配置步骤使用 --enable-shared 选项来构建 jpeg 库。 如果不使用此选项，那么在构建 PHP 时的配置环节， 会产生 libjpeg.(a|so) not found 的错误。
png | » http://www.libpng.org/pub/png/libpng.html | 仅在 GD 库 gd-1.6 及更高版本支持。
xpm | » ftp://metalab.unc.edu/pub/Linux/libs/X/!INDEX.html | 如果你的系统中已经安装了 X 环境， 就已经包含这个库了。

你可能希望增强 GD 库来使用不同的字体。 下列字体库是受支持的：

支持的字体库
字体库 | 下载 | 备注
FreeType 1.x | » http://www.freetype.org/ | 本过时特性将肯定会在未来被移除。
FreeType 2 | » http://www.freetype.org/ |
T1lib | » ftp://sunsite.unc.edu/pub/Linux/libs/graphics/) | 支持 Postscript Type 1 字体（在 PHP 7.0.0 中移除）。

安装／配置
安装
安装／配置


安装

要激活 GD 支持，配置 PHP 时加上 --with-gd[=DIR] ，DIR 是 GD 的基本安装目录。要使用推荐的绑定的 GD 库版本（首次绑定于 PHP 4.3.0），使用 --with-gd 。要编译 GD 库，需要libpng 和 libjpeg。

在 Windows 中，需要将 GD2 的 DLL 文件 php_gd2.dll 作为一个扩展包含在 php.ini 中。GD1 的 DLL 文件 php_gd.dll 在 PHP 4.3.2 中被删除了。此外要注意首选的真彩色图像函数，例如 imagecreatetruecolor()，需要 GD2。

Note:

要在 Windows 下启用 exif，在 php.ini 中 php_mbstring.dll 必须在 php_exif.dll 之前加载。

要在 PHP 3 中禁止 GD 支持，在配置时加上 --without-gd 。

要增强 GD 的能力以处理更多的图像格式，在配置 PHP 时指定 --with-XXXX 的配置开关。

所支持的图像格式
图像格式 | 配置开关
jpeg-6b | 要激活 jpeg-6b 的支持，加上 --with-jpeg-dir=DIR .
png | 要激活 png 的支持，加上 --with-png-dir=DIR 。注意，libpng 需要 zlib library，因此配置中还要加上 --with-zlib-dir[=DIR] 。
xpm | 要激活 xpm 的支持，加上 --with-xpm-dir=DIR 。如果配置时提示找不到所需要的库，可以加上到 X11 库的路径。

Note: 当把 PHP 和 libpng 一起编译时，必须使用和 GD 库连接的同一个版本。

要增强 GD 的能力以处理更多的字体，在配置 PHP 时指定 --with-XXXX 的配置开关。

所支持的字库
字库 | 配置开关
FreeType 1.x | 要激活 FreeType 1.x 的支持，加上 --with-ttf[=DIR] 。
FreeType 2 | 要激活 FreeType 2 的支持，加上 --with-freetype-dir=DIR 。
T1lib | 要激活 T1lib（Type 1 字体），加上 --with-t1lib[=DIR] 。
本地 TrueType 字符串函数 | 要激活本地 TrueType 字符串函数的支持，加上 --enable-gd-native-ttf 。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Image 配置选项
名字 | 默认 | 可修改范围 | Changelog
gd.jpeg_ignore_warning | "0" | PHP_INI_ALL | Available since PHP 5.1.3.
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

gd.jpeg_ignore_warning bool

Ignore warnings created by jpeg2wbmp() and imagecreatefromjpeg()

See also the exif configuration directives.

Warning

Image functions are very memory intensive. Be sure to set memory_limit high enough.

安装
资源类型
安装／配置


资源类型

本扩展定义了 2 个资源类型：

GD 库中定义的资源类型
名称 | 描述 | 说明
gd | 图像资源，由 imagecreatefrompng() 等函数使用 |
gd font | 由 imageloadfont() 函数返回的字体资源 |
gd PS font | PostScript Type 1 字体资源，由 imagepsloadfont() 函数返回 | 在 PHP 7.0.0 中被移除。
gd PS encoding | PostScript Type 1 编码资源，由 imagepsencodefont() 函数返回 | 在 PHP 7.0.0 中被移除。

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

GD_VERSION (string)
PHP 编译所依据的 GD 版本。 （PHP 5.2.4 可用）
GD_MAJOR_VERSION (integer)
PHP 编译所依据的 GD 大版本。 （PHP 5.2.4 可用）
GD_MINOR_VERSION (integer)
PHP 编译所依据的 GD 小版本。 （PHP 5.2.4 可用）
GD_RELEASE_VERSION (integer)
PHP 编译所依据的 GD 发布版本。 （PHP 5.2.4 可用）
GD_EXTRA_VERSION (string)
PHP 编译所依据的 GD 扩展版本（beta/rc..）。 （PHP 5.2.4 可用）
GD_BUNDLED (integer)
当使用绑定版本的 GD 时，此值为 1， 反之为 0。
IMG_GIF (integer)
被 imagetypes() 函数作为返回值使用。
IMG_JPG (integer)
被 imagetypes() 函数作为返回值使用。
IMG_JPEG (integer)
被 imagetypes() 函数作为返回值使用。

Note:

本常量值同 IMG_JPG

IMG_PNG (integer)
被 imagetypes() 函数作为返回值使用。
IMG_WBMP (integer)
被 imagetypes() 函数作为返回值使用。
IMG_XPM (integer)
被 imagetypes() 函数作为返回值使用。
IMG_COLOR_TILED (integer)
特殊的颜色选项，可以用来替代 imagecolorallocate() 或 imagecolorallocatealpha() 函数所分配的颜色
IMG_COLOR_STYLED (integer)
特殊的颜色选项，可以用来替代 imagecolorallocate() 或 imagecolorallocatealpha() 函数所分配的颜色
IMG_COLOR_BRUSHED (integer)
特殊的颜色选项，可以用来替代 imagecolorallocate() 或 imagecolorallocatealpha() 函数所分配的颜色
IMG_COLOR_STYLEDBRUSHED (integer)
特殊的颜色选项，可以用来替代 imagecolorallocate() 或 imagecolorallocatealpha() 函数所分配的颜色
IMG_COLOR_TRANSPARENT (integer)
特殊的颜色选项，可以用来替代 imagecolorallocate() 或 imagecolorallocatealpha() 函数所分配的颜色
IMG_ARC_ROUNDED (integer)
imagefilledarc() 函数所用的样式常量。

Note:

此常量值同 IMG_ARC_PIE

IMG_ARC_PIE (integer)
imagefilledarc() 函数所用的样式常量。
IMG_ARC_CHORD (integer)
imagefilledarc() 函数所用的样式常量。
IMG_ARC_NOFILL (integer)
imagefilledarc() 函数所用的样式常量。
IMG_ARC_EDGED (integer)
imagefilledarc() 函数所用的样式常量。
IMG_GD2_RAW (integer)
imagegd2() 函数所用的类型常量。
IMG_GD2_COMPRESSED (integer)
imagegd2() 函数所用的类型常量。
IMG_EFFECT_REPLACE (integer)
imagelayereffect() 函数所用的透明混合效果常量。
IMG_EFFECT_ALPHABLEND (integer)
imagelayereffect() 函数所用的透明混合效果常量。
IMG_EFFECT_NORMAL (integer)
imagelayereffect() 函数所用的透明混合效果常量。
IMG_EFFECT_OVERLAY (integer)
imagelayereffect() 函数所用的透明混合效果常量。
IMG_FILTER_NEGATE (integer)
imagefilter() 函数所用的 GD 滤镜。
IMG_FILTER_GRAYSCALE (integer)
imagefilter() 函数所用的 GD 滤镜。
IMG_FILTER_BRIGHTNESS (integer)
imagefilter() 函数所用的 GD 滤镜。
IMG_FILTER_CONTRAST (integer)
imagefilter() 函数所用的 GD 滤镜。
IMG_FILTER_COLORIZE (integer)
imagefilter() 函数所用的 GD 滤镜。
IMG_FILTER_EDGEDETECT (integer)
imagefilter() 函数所用的 GD 滤镜。
IMG_FILTER_GAUSSIAN_BLUR (integer)
imagefilter() 函数所用的 GD 滤镜。
IMG_FILTER_SELECTIVE_BLUR (integer)
imagefilter() 函数所用的 GD 滤镜。
IMG_FILTER_EMBOSS (integer)
imagefilter() 函数所用的 GD 滤镜。
IMG_FILTER_MEAN_REMOVAL (integer)
imagefilter() 函数所用的 GD 滤镜。
IMG_FILTER_SMOOTH (integer)
imagefilter() 函数所用的 GD 滤镜。
IMG_FILTER_PIXELATE (integer)
imagefilter() 函数所用的 GD 滤镜。 （PHP 5.3.0 可用）
IMAGETYPE_GIF (integer)
image_type_to_mime_type() 和 image_type_to_extension() 函数所用的图像类型常量。
IMAGETYPE_JPEG (integer)
image_type_to_mime_type() 和 image_type_to_extension() 函数所用的图像类型常量。
IMAGETYPE_JPEG2000 (integer)
image_type_to_mime_type() 和 image_type_to_extension() 函数所用的图像类型常量。
IMAGETYPE_PNG (integer)
image_type_to_mime_type() 和 image_type_to_extension() 函数所用的图像类型常量。
IMAGETYPE_SWF (integer)
image_type_to_mime_type() 和 image_type_to_extension() 函数所用的图像类型常量。
IMAGETYPE_PSD (integer)
image_type_to_mime_type() 和 image_type_to_extension() 函数所用的图像类型常量。
IMAGETYPE_BMP (integer)
image_type_to_mime_type() 和 image_type_to_extension() 函数所用的图像类型常量。
IMAGETYPE_WBMP (integer)
image_type_to_mime_type() 和 image_type_to_extension() 函数所用的图像类型常量。
IMAGETYPE_XBM (integer)
image_type_to_mime_type() 和 image_type_to_extension() 函数所用的图像类型常量。
IMAGETYPE_TIFF_II (integer)
image_type_to_mime_type() 和 image_type_to_extension() 函数所用的图像类型常量。
IMAGETYPE_TIFF_MM (integer)
image_type_to_mime_type() 和 image_type_to_extension() 函数所用的图像类型常量。
IMAGETYPE_IFF (integer)
image_type_to_mime_type() 和 image_type_to_extension() 函数所用的图像类型常量。
IMAGETYPE_JB2 (integer)
image_type_to_mime_type() 和 image_type_to_extension() 函数所用的图像类型常量。
IMAGETYPE_JPC (integer)
image_type_to_mime_type() 和 image_type_to_extension() 函数所用的图像类型常量。
IMAGETYPE_JP2 (integer)
image_type_to_mime_type() 和 image_type_to_extension() 函数所用的图像类型常量。
IMAGETYPE_JPX (integer)
image_type_to_mime_type() 和 image_type_to_extension() 函数所用的图像类型常量。
IMAGETYPE_SWC (integer)
image_type_to_mime_type() 和 image_type_to_extension() 函数所用的图像类型常量。
IMAGETYPE_ICO (integer)
image_type_to_mime_type() 和 image_type_to_extension() 函数所用的图像类型常量。 （PHP 5.3.0 可用）
PNG_NO_FILTER (integer)
imagepng() 函数所用的 PNG 滤镜。
PNG_FILTER_NONE (integer)
imagepng() 函数所用的 PNG 滤镜。
PNG_FILTER_SUB (integer)
imagepng() 函数所用的 PNG 滤镜。
PNG_FILTER_UP (integer)
imagepng() 函数所用的 PNG 滤镜。
PNG_FILTER_AVG (integer)
imagepng() 函数所用的 PNG 滤镜。
PNG_FILTER_PAETH (integer)
imagepng() 函数所用的 PNG 滤镜。
PNG_ALL_FILTERS (integer)
imagepng() 函数所用的 PNG 滤镜。
IMG_FLIP_VERTICAL (int)
和 imageflip() 函数联合使用，自 PHP 5.5.0 可用。
IMG_FLIP_HORIZONTAL (int)
和 imageflip() 函数联合使用，自 PHP 5.5.0 可用。
IMG_FLIP_BOTH (int)
和 imageflip() 函数联合使用，自 PHP 5.5.0 可用。
IMG_BELL (int)
和 imagesetinterpolation() 函数联合使用，自 PHP 5.5.0 可用。
IMG_BESSEL (int)
和 imagesetinterpolation() 函数联合使用，自 PHP 5.5.0 可用。
IMG_BILINEAR_FIXED (int)
和 imagesetinterpolation() 函数联合使用，自 PHP 5.5.0 可用。
IMG_BICUBIC (int)
和 imagesetinterpolation() 函数联合使用，自 PHP 5.5.0 可用。
IMG_BICUBIC (int)
和 imagesetinterpolation() 函数联合使用，自 PHP 5.5.0 可用。
IMG_BLACKMAN (int)
和 imagesetinterpolation() 函数联合使用，自 PHP 5.5.0 可用。
IMG_BOX (int)
和 imagesetinterpolation() 函数联合使用，自 PHP 5.5.0 可用。
IMG_BSPLINE (int)
和 imagesetinterpolation() 函数联合使用，自 PHP 5.5.0 可用。
IMG_CATMULLROM (int)
和 imagesetinterpolation() 函数联合使用，自 PHP 5.5.0 可用。
IMG_GAUSSIAN (int)
和 imagesetinterpolation() 函数联合使用，自 PHP 5.5.0 可用。
IMG_GENERALIZED_CUBIC (int)
和 imagesetinterpolation() 函数联合使用，自 PHP 5.5.0 可用。
IMG_HERMITE (int)
和 imagesetinterpolation() 函数联合使用，自 PHP 5.5.0 可用。
IMG_HAMMING (int)
和 imagesetinterpolation() 函数联合使用，自 PHP 5.5.0 可用。
IMG_HANNING (int)
和 imagesetinterpolation() 函数联合使用，自 PHP 5.5.0 可用。
IMG_MITCHELL (int)
和 imagesetinterpolation() 函数联合使用，自 PHP 5.5.0 可用。
IMG_POWER (int)
和 imagesetinterpolation() 函数联合使用，自 PHP 5.5.0 可用。
IMG_QUADRATIC (int)
和 imagesetinterpolation() 函数联合使用，自 PHP 5.5.0 可用。
IMG_SINC (int)
和 imagesetinterpolation() 函数联合使用，自 PHP 5.5.0 可用。
IMG_NEAREST_NEIGHBOUR (int)
和 imagesetinterpolation() 函数联合使用，自 PHP 5.5.0 可用。
IMG_WEIGHTED4 (int)
和 imagesetinterpolation() 函数联合使用，自 PHP 5.5.0 可用。
IMG_TRIANGLE (int)
和 imagesetinterpolation() 函数联合使用，自 PHP 5.5.0 可用。
资源类型
范例
GD


范例

Table of Contents

  • 使用 PHP 创建 PNG 图像
  • 使用 Alpha 通道为图像加水印
  • 使用 imagecopymerge 函数创建半透明水印
预定义常量
使用 PHP 创建 PNG 图像
GD


使用 PHP 创建 PNG 图像

Example #1 使用 PHP 创建 PNG 图像

<?php

header("Content-type: image/png");
$string = $_GET['text'];
$im     = imagecreatefrompng("images/button1.png");
$orange = imagecolorallocate($im, 220, 210, 60);
$px     = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 3, $px, 9, $string, $orange);
imagepng($im);
imagedestroy($im);

?>
本例程需要从带有 <img src="button.php?text=text"> 标签的页面调用。 上述 button.php 脚本将 "text" 字符串绘制到一个图像上， 在本例中图像文件为 "images/button1.png"， 然后输出绘制后的图像。 当你需要经常修改图像上的文字时， 动态生成图像就可以省去了每次都重新制作图像的麻烦。

范例
使用 Alpha 通道为图像加水印
范例


使用 Alpha 通道为图像加水印

Example #1 使用 Alpha 通道为图像加水印

<?php
// 加载水印以及要加水印的图像
$stamp = imagecreatefrompng('stamp.png');
$im = imagecreatefromjpeg('photo.jpeg');

// 设置水印图像的外边距，并且获取水印图像的尺寸
$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

// 利用图像的宽度和水印的外边距计算位置，并且将水印复制到图像上

imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));

// 输出图像并释放内存
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
使用 Alpha 通道为图像加水印
本示例是为图像加水印以及版权信息的常见方式。 请注意，水印图像中所包含的 alpha 通道信息以及文本的抗锯齿效果， 都会在复制过程中保留。

使用 PHP 创建 PNG 图像
使用 imagecopymerge 函数创建半透明水印
范例


使用 imagecopymerge 函数创建半透明水印

使用 Alpha 通道为图像加水印
GD 和图像处理 函数
范例
PHP Manual

使用 imagecopymerge() 函数创建半透明水印

Example #1 使用 imagecopymerge() 函数创建半透明水印

<?php
// 加载要加水印的图像
$im = imagecreatefromjpeg('photo.jpeg');

// 首先我们从 GD 手动创建水印图像
$stamp = imagecreatetruecolor(100, 70);
imagefilledrectangle($stamp, 0, 0, 99, 69, 0x0000FF);
imagefilledrectangle($stamp, 9, 9, 90, 60, 0xFFFFFF);
$im = imagecreatefromjpeg('photo.jpeg');
imagestring($stamp, 5, 20, 20, 'libGD', 0x0000FF);
imagestring($stamp, 3, 20, 40, '(c) 2007-9', 0x0000FF);

// 设置水印图像的位置和大小
$marge_right = 10;
$marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

// 以 50% 的透明度合并水印和图像
imagecopymerge($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp), 50);

// 将图像保存到文件，并释放内存
imagepng($im, 'photo_stamp.png');
imagedestroy($im);

?>
使用 imagecopymerge() 函数创建半透明水印
本示例使用 imagecopymerge() 函数 来合并水印图像和原始图像。 我们可以控制水印的透明度，在本例中是 50% 的透明度。 在实际使用中， 使用半透明水印可以在不影响用户观看图像的前提下进行版权保护。

使用 Alpha 通道为图像加水印
GD 和图像处理 函数
范例


GD 和图像处理 函数

Table of Contents

  • gd_info — 取得当前安装的 GD 库的信息
  • getimagesize — 取得图像大小
  • getimagesizefromstring — 从字符串中获取图像尺寸信息
  • image_type_to_extension — 取得图像类型的文件后缀
  • image_type_to_mime_type — 取得 getimagesize，exif_read_data，exif_thumbnail，exif_imagetype 所返回的图像类型的 MIME 类型
  • image2wbmp — 以 WBMP 格式将图像输出到浏览器或文件
  • imageaffine — 返回经过仿射变换后的图像，剪切区域可选
  • imageaffinematrixconcat — Concatenate two affine transformation matrices
  • imageaffinematrixget — Get an affine transformation matrix
  • imagealphablending — 设定图像的混色模式
  • imageantialias — 是否使用抗锯齿（antialias）功能
  • imagearc — 画椭圆弧
  • imagebmp — Output a BMP image to browser or file
  • imagechar — 水平地画一个字符
  • imagecharup — 垂直地画一个字符
  • imagecolorallocate — 为一幅图像分配颜色
  • imagecolorallocatealpha — 为一幅图像分配颜色 + alpha
  • imagecolorat — 取得某像素的颜色索引值
  • imagecolorclosest — 取得与指定的颜色最接近的颜色的索引值
  • imagecolorclosestalpha — 取得与指定的颜色加透明度最接近的颜色
  • imagecolorclosesthwb — 取得与给定颜色最接近的色度的黑白色的索引
  • imagecolordeallocate — 取消图像颜色的分配
  • imagecolorexact — 取得指定颜色的索引值
  • imagecolorexactalpha — 取得指定的颜色加透明度的索引值
  • imagecolormatch — 使一个图像中调色板版本的颜色与真彩色版本更能匹配
  • imagecolorresolve — 取得指定颜色的索引值或有可能得到的最接近的替代值
  • imagecolorresolvealpha — 取得指定颜色 + alpha 的索引值或有可能得到的最接近的替代值
  • imagecolorset — 给指定调色板索引设定颜色
  • imagecolorsforindex — 取得某索引的颜色
  • imagecolorstotal — 取得一幅图像的调色板中颜色的数目
  • imagecolortransparent — 将某个颜色定义为透明色
  • imageconvolution — 用系数 div 和 offset 申请一个 3x3 的卷积矩阵
  • imagecopy — 拷贝图像的一部分
  • imagecopymerge — 拷贝并合并图像的一部分
  • imagecopymergegray — 用灰度拷贝并合并图像的一部分
  • imagecopyresampled — 重采样拷贝部分图像并调整大小
  • imagecopyresized — 拷贝部分图像并调整大小
  • imagecreate — 新建一个基于调色板的图像
  • imagecreatefrombmp — 由文件或 URL 创建一个新图象。
  • imagecreatefromgd2 — 从 GD2 文件或 URL 新建一图像
  • imagecreatefromgd2part — 从给定的 GD2 文件或 URL 中的部分新建一图像
  • imagecreatefromgd — 从 GD 文件或 URL 新建一图像
  • imagecreatefromgif — 由文件或 URL 创建一个新图象。
  • imagecreatefromjpeg — 由文件或 URL 创建一个新图象。
  • imagecreatefrompng — 由文件或 URL 创建一个新图象。
  • imagecreatefromstring — 从字符串中的图像流新建一图像
  • imagecreatefromwbmp — 由文件或 URL 创建一个新图象。
  • imagecreatefromwebp — 由文件或 URL 创建一个新图象。
  • imagecreatefromxbm — 由文件或 URL 创建一个新图象。
  • imagecreatefromxpm — 由文件或 URL 创建一个新图象。
  • imagecreatetruecolor — 新建一个真彩色图像
  • imagecrop — Crop an image to the given rectangle
  • imagecropauto — Crop an image automatically using one of the available modes
  • imagedashedline — 画一虚线
  • imagedestroy — 销毁一图像
  • imageellipse — 画一个椭圆
  • imagefill — 区域填充
  • imagefilledarc — 画一椭圆弧且填充
  • imagefilledellipse — 画一椭圆并填充
  • imagefilledpolygon — 画一多边形并填充
  • imagefilledrectangle — 画一矩形并填充
  • imagefilltoborder — 区域填充到指定颜色的边界为止
  • imagefilter — 对图像使用过滤器
  • imageflip — Flips an image using a given mode
  • imagefontheight — 取得字体高度
  • imagefontwidth — 取得字体宽度
  • imageftbbox — 给出一个使用 FreeType 2 字体的文本框
  • imagefttext — 使用 FreeType 2 字体将文本写入图像
  • imagegammacorrect — 对 GD 图像应用 gamma 修正
  • imagegd2 — 将 GD2 图像输出到浏览器或文件
  • imagegd — 将 GD 图像输出到浏览器或文件
  • imagegetclip — Get the clipping rectangle
  • imagegif — 输出图象到浏览器或文件。
  • imagegrabscreen — Captures the whole screen
  • imagegrabwindow — Captures a window
  • imageinterlace — 激活或禁止隔行扫描
  • imageistruecolor — 检查图像是否为真彩色图像
  • imagejpeg — 输出图象到浏览器或文件。
  • imagelayereffect — 设定 alpha 混色标志以使用绑定的 libgd 分层效果
  • imageline — 画一条线段
  • imageloadfont — 载入一新字体
  • imageopenpolygon — Draws an open polygon
  • imagepalettecopy — 将调色板从一幅图像拷贝到另一幅
  • imagepalettetotruecolor — Converts a palette based image to true color
  • imagepng — 以 PNG 格式将图像输出到浏览器或文件
  • imagepolygon — 画一个多边形
  • imagepsbbox — 给出一个使用 PostScript Type1 字体的文本方框
  • imagepsencodefont — 改变字体中的字符编码矢量
  • imagepsextendfont — 扩充或精简字体
  • imagepsfreefont — 释放一个 PostScript Type 1 字体所占用的内存
  • imagepsloadfont — 从文件中加载一个 PostScript Type 1 字体
  • imagepsslantfont — 倾斜某字体
  • imagepstext — 用 PostScript Type1 字体把文本字符串画在图像上
  • imagerectangle — 画一个矩形
  • imageresolution — Get or set the resolution of the image
  • imagerotate — 用给定角度旋转图像
  • imagesavealpha — 设置标记以在保存 PNG 图像时保存完整的 alpha 通道信息（与单一透明色相反）
  • imagescale — Scale an image using the given new width and height
  • imagesetbrush — 设定画线用的画笔图像
  • imagesetclip — Set the clipping rectangle
  • imagesetinterpolation — Set the interpolation method
  • imagesetpixel — 画一个单一像素
  • imagesetstyle — 设定画线的风格
  • imagesetthickness — 设定画线的宽度
  • imagesettile — 设定用于填充的贴图
  • imagestring — 水平地画一行字符串
  • imagestringup — 垂直地画一行字符串
  • imagesx — 取得图像宽度
  • imagesy — 取得图像高度
  • imagetruecolortopalette — 将真彩色图像转换为调色板图像
  • imagettfbbox — 取得使用 TrueType 字体的文本的范围
  • imagettftext — 用 TrueType 字体向图像写入文本
  • imagetypes — 返回当前 PHP 版本所支持的图像类型
  • imagewbmp — 以 WBMP 格式将图像输出到浏览器或文件
  • imagewebp — 将 WebP 格式的图像输出到浏览器或文件
  • imagexbm — 将 XBM 图像输出到浏览器或文件
  • iptcembed — 将二进制 IPTC 数据嵌入到一幅 JPEG 图像中
  • iptcparse — 将二进制 IPTC 块解析为单个标记
  • jpeg2wbmp — 将 JPEG 图像文件转换为 WBMP 图像文件
  • png2wbmp — 将 PNG 图像文件转换为 WBMP 图像文件
使用 imagecopymerge 函数创建半透明水印
gd_info
GD


取得当前安装的 GD 库的信息

GD 和图像处理 函数
getimagesize
GD 和图像处理 函数
PHP Manual

gd_info

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

gd_info — 取得当前安装的 GD 库的信息

说明

array gd_info ( void )

返回一个关联数组描述了安装的 GD 库的版本和性能。

gd_info() 返回的数组的单元
属性 | 含义
GD Version | string 值描述了安装的 libgd 的版本。
Freetype Support | boolean 值。如果安装了 Freetype 支持则为 TRUE。
Freetype Linkage | string 值描述了 Freetype 连接的方法。取值可能为：'with freetype', 'with TTF library' 和 'with unknown library'。本单元仅在 Freetype Support 的值为 TRUE 时有定义。
T1Lib Support | boolean 值。如果包含有 T1Lib 支持则为 TRUE。
GIF Read Support | boolean 值。如果包含有读取 GIF 图像的支持则为 TRUE。
GIF Create Support | boolean 值。如果包含有创建 GIF 图像的支持则为 TRUE。
JPG Support | boolean 值。如果包含有 JPG 支持则为 TRUE。
PNG Support | boolean 值。如果包含有 PNG 支持则为 TRUE。
WBMP Support | boolean 值。如果包含有 WBMP 支持则为 TRUE。
XBM Support | boolean 值。如果包含有 XBM 支持则为 TRUE。

Example #1 使用 gd_info()

<?php
var_dump(gd_info());
?>

典型输出为：

array(9) {
  ["GD Version"]=>
  string(24) "bundled (2.0 compatible)"
  ["FreeType Support"]=>
  bool(false)
  ["T1Lib Support"]=>
  bool(false)
  ["GIF Read Support"]=>
  bool(true)
  ["GIF Create Support"]=>
  bool(false)
  ["JPG Support"]=>
  bool(false)
  ["PNG Support"]=>
  bool(true)
  ["WBMP Support"]=>
  bool(true)
  ["XBM Support"]=>
  bool(false)
}

参见 imagepng()，imagejpeg()，imagegif()，imagewbmp() 和 imagetypes()。

GD 和图像处理 函数
getimagesize
GD 和图像处理 函数


取得图像大小

gd_info
getimagesizefromstring
GD 和图像处理 函数
PHP Manual

getimagesize

(PHP 4, PHP 5, PHP 7)

getimagesize — 取得图像大小

说明

array getimagesize ( string $filename [, array &$imageinfo ] )

getimagesize() 函数将测定任何 GIF，JPG，PNG，SWF，SWC，PSD，TIFF，BMP，IFF，JP2，JPX，JB2，JPC，XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型和一个可以用于普通 HTML 文件中 IMG 标记中的 height/width 文本字符串。

如果不能访问 filename 指定的图像或者其不是有效的图像，getimagesize() 将返回 FALSE 并产生一条 E_WARNING 级的错误。

Note:

对 JPC，JP2，JPX，JB2，XBM 和 WBMP 的支持自 PHP 4.3.2 起可用。对 SWC 的支持自 PHP 4.3.0 起可用。对 TIFF 的支持是 PHP 4.2.0 添加的。

Note: JPEG 2000 支持是 PHP 4.3.2 添加的。注意 JPC 和 JP2 可以有不同的色彩深度的成分。此情况下，"bits"的值是碰到的最高的位深度。此外，JP2 文件可能包含有多个 JPEG 2000 代码流，此情况下，getimagesize() 返回此文件顶层中碰到的第一个代码流的值。

Note: 本函数不需要 GD 图像库。

返回一个具有四个单元的数组。索引 0 包含图像宽度的像素值，索引 1 包含图像高度的像素值。索引 2 是图像类型的标记：1 = GIF，2 = JPG，3 = PNG，4 = SWF，5 = PSD，6 = BMP，7 = TIFF(intel byte order)，8 = TIFF(motorola byte order)，9 = JPC，10 = JP2，11 = JPX，12 = JB2，13 = SWC，14 = IFF，15 = WBMP，16 = XBM。这些标记与 PHP 4.3.0 新加的 IMAGETYPE 常量对应。索引 3 是文本字符串，内容为"height="yyy" width="xxx""，可直接用于 IMG 标记。

Example #1 getimagesize（文件）

<?php
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo "<img src=\"img/flag.jpg\" $attr>";
?>

URL 支持是 PHP 4.0.5 添加的。

Example #2 getimagesize（URL）

<?php
$size = getimagesize("http://www.example.com/gifs/logo.gif");

// if the file name has space in it, encode it properly
$size = getimagesize("http://www.example.com/gifs/lo%20go.gif");

?>

对于 JPG 图像，还会多返回两个索引：channels 和 bits。channels 对于 RGB 图像其值为 3，对于 CMYK 图像其值为 4。bits 是每种颜色的位数。

自 PHP 4.3.0 起，bits 和 channels 对于其它图像类型也存在。但是这些值可能会把人搞糊涂。例如，GIF 总是对每个像素使用 3 个 channel，但是对于动画 GIF 来说每个像素的位数无法通过全局颜色表计算出来。

某些格式可能不包含图像或者包含多个图像。此种情况下，getimagesize() 可能不能用来准确测定图像的大小。此时 getimagesize() 将返回零作为宽度和高度。

自 PHP 4.3.0 起，getimagesize() 还会返回额外的参数 mime，符合该图像的 MIME 类型。此信息可以用来在 HTTP Content-type 头信息中发送正确的信息：

Example #3 getimagesize() 和 MIME 类型

<?php
$size = getimagesize($filename);
$fp=fopen($filename, "rb");
if ($size && $fp) {
  header("Content-type: {$size['mime']}");
  fpassthru($fp);
  exit;
} else {
  // error
}
?>

可选的 imageinfo 参数允许从图像文件中提取一些扩展信息。目前，这将以一个关联数组返回不同的 JPG APP 标识。某些程序用这些 APP 标识来在图像中嵌入文本信息。一个非常常见的是 APP13 标识中嵌入的 IPTC » http://www.iptc.org/ 信息。可以用 iptcparse() 函数来将二进制的 APP13 标识解析为可读的信息。

Example #4 getimagesize() 返回 IPTC

<?php
$size = getimagesize("testimg.jpg", &$info);
if (isset($info["APP13"])) {
    $iptc = iptcparse($info["APP13"]);
    var_dump($iptc);
}
?>

参见 image_type_to_mime_type()，exif_imagetype()，exif_read_data() 和 exif_thumbnail()。

参数

filename

This parameter specifies the file you wish to retrieve information about. It can reference a local file or (configuration permitting) a remote file using one of the supported streams.

imageinfo

This optional parameter allows you to extract some extended information from the image file. Currently, this will return the different JPG APP markers as an associative array. Some programs use these APP markers to embed text information in images. A very common one is to embed » IPTC information in the APP13 marker. You can use the iptcparse() function to parse the binary APP13 marker into something readable.

返回值

Returns an array with 7 elements.

Index 0 and 1 contains respectively the width and the height of the image.

Note:

Some formats may contain no image or may contain multiple images. In these cases, getimagesize() might not be able to properly determine the image size. getimagesize() will return zero for width and height in these cases.

Index 2 is one of the IMAGETYPE_XXX constants indicating the type of the image.

Index 3 is a text string with the correct height="yyy" width="xxx" string that can be used directly in an IMG tag.

mime is the correspondant MIME type of the image. This information can be used to deliver images with the correct HTTP Content-type header:

Example #5 getimagesize() and MIME types

<?php
$size = getimagesize($filename);
$fp = fopen($filename, "rb");
if ($size && $fp) {
    header("Content-type: {$size['mime']}");
    fpassthru($fp);
    exit;
} else {
    // error
}
?>

channels will be 3 for RGB pictures and 4 for CMYK pictures.

bits is the number of bits for each color.

For some image types, the presence of channels and bits values can be a bit confusing. As an example, GIF always uses 3 channels per pixel, but the number of bits per pixel cannot be calculated for an animated GIF with a global color table.

On failure, FALSE is returned.

错误／异常

If accessing the filename image is impossible, or if it isn't a valid picture, getimagesize() will generate an error of level E_WARNING. On read error, getimagesize() will generate an error of level E_NOTICE.

更新日志

版本 | 说明
5.3.0 | Added icon support.
5.2.3 | Read errors generated by this function downgraded to E_NOTICE from E_WARNING.
4.3.2 | Support for JPC, JP2, JPX, JB2, XBM, and WBMP became available.
4.3.2 | JPEG 2000 support was added for the imageinfo parameter.
4.3.0 | bits and channels are present for other image types, too.
4.3.0 | mime was added.
4.3.0 | Support for SWC and IFF was added.
4.2.0 | Support for TIFF was added.
4.0.6 | Support for BMP and PSD was added.
4.0.5 | URL support was added.

范例

Example #6 getimagesize() example

<?php
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo "<img src=\"img/flag.jpg\" $attr alt=\"getimagesize() example\" />";
?>

Example #7 getimagesize (URL)

<?php
$size = getimagesize("http://www.example.com/gifs/logo.gif");

// if the file name has space in it, encode it properly
$size = getimagesize("http://www.example.com/gifs/lo%20go.gif");

?>

Example #8 getimagesize() returning IPTC

<?php
$size = getimagesize("testimg.jpg", $info);
if (isset($info["APP13"])) {
    $iptc = iptcparse($info["APP13"]);
    var_dump($iptc);
}
?>

注释

Note:

此函数不需要 GD 图象库。

参见

  • image_type_to_mime_type() - 取得 getimagesize，exif_read_data，exif_thumbnail，exif_imagetype 所返回的图像类型的 MIME 类型
  • exif_imagetype() - 判断一个图像的类型
  • exif_read_data() - 从 JPEG 或 TIFF 文件中读取 EXIF 头信息
  • exif_thumbnail() - 取得嵌入在 TIFF 或 JPEG 图像中的缩略图

gd_info
getimagesizefromstring
GD 和图像处理 函数


从字符串中获取图像尺寸信息

getimagesize
image_type_to_extension
GD 和图像处理 函数
PHP Manual

getimagesizefromstring

(PHP 5 >= 5.4.0, PHP 7)

getimagesizefromstring — 从字符串中获取图像尺寸信息

说明

array getimagesizefromstring ( string $imagedata [, array &$imageinfo ] )

同 getimagesize() 函数。 区别是 getimagesizefromstring() 第一个参数是图像数据的字符串表达，而不是文件名。

关于本函数如何工作的更多信息请参见 getimagesize() 函数。

参数

imagedata

图像数据的字符串表示。

imageinfo

参见 getimagesize() 函数。

返回值

参见 getimagesize() 函数。

范例

Example #1 getimagesizefromstring() 函数例程

<?php
$img = '/path/to/test.png';

// 以文件方式打开
$size_info1 = getimagesize($img);

// 以字符串格式打开
$data       = file_get_contents($img);
$size_info2 = getimagesizefromstring($data);
?>

参见

  • getimagesize() - 取得图像大小

getimagesize
image_type_to_extension
GD 和图像处理 函数


取得图像类型的文件后缀

getimagesizefromstring
image_type_to_mime_type
GD 和图像处理 函数
PHP Manual

image_type_to_extension

(PHP 5 >= 5.2.0, PHP 7)

image_type_to_extension — 取得图像类型的文件后缀

说明

string image_type_to_extension ( int $imagetype [, bool $include_dot = TRUE ] )

根据给定的常量 IMAGETYPE_XXX 返回后缀名。

参数

imagetype

IMAGETYPE_XXX 系列常量之一。

include_dot

是否在后缀名前加一个点。默认是 TRUE。

返回值

根据指定的图像类型返回对应的后缀名。

范例

Example #1 image_type_to_extension() 例子

<?php
// 创建图像实例
$im = imagecreatetruecolor(100, 100);

// 保存图像
imagepng($im, './test' . image_type_to_extension(IMAGETYPE_PNG));
imagedestroy($im);
?>

注释

Note:

此函数不需要 GD 图象库。

getimagesizefromstring
image_type_to_mime_type
GD 和图像处理 函数


取得 getimagesize，exif_read_data，exif_thumbnail，exif_imagetype 所返回的图像类型的 MIME 类型

image_type_to_extension
image2wbmp
GD 和图像处理 函数
PHP Manual

image_type_to_mime_type

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

image_type_to_mime_type — 取得 getimagesize，exif_read_data，exif_thumbnail，exif_imagetype 所返回的图像类型的 MIME 类型

说明

string image_type_to_mime_type ( int $imagetype )

image_type_to_mime_type() 函数可以判断一个 IMAGETYPE 常量的 MIME 类型。

Example #1 image_type_to_mime_type (file)

<?php
header("Content-type: " . image_type_to_mime_type(IMAGETYPE_PNG));
?>

返回值如下：

返回值常量
图像类型（imagetype） | 返回值
IMAGETYPE_GIF | image/gif
IMAGETYPE_JPEG | image/jpeg
IMAGETYPE_PNG | image/png
IMAGETYPE_SWF | application/x-shockwave-flash
IMAGETYPE_PSD | image/psd
IMAGETYPE_BMP | image/bmp
IMAGETYPE_TIFF_II (intel byte order) | image/tiff
IMAGETYPE_TIFF_MM (motorola byte order) | image/tiff
IMAGETYPE_JPC | application/octet-stream
IMAGETYPE_JP2 | image/jp2
IMAGETYPE_JPX | application/octet-stream
IMAGETYPE_JB2 | application/octet-stream
IMAGETYPE_SWC | application/x-shockwave-flash
IMAGETYPE_IFF | image/iff
IMAGETYPE_WBMP | image/vnd.wap.wbmp
IMAGETYPE_XBM | image/xbm

Note: 本函数不需要 GD 库。

参见 getimagesize()，exif_imagetype()，exif_read_data() 和 exif_thumbnail()。

image_type_to_extension
image2wbmp
GD 和图像处理 函数


以 WBMP 格式将图像输出到浏览器或文件

image_type_to_mime_type
imageaffine
GD 和图像处理 函数
PHP Manual

image2wbmp

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

image2wbmp — 以 WBMP 格式将图像输出到浏览器或文件

说明

int image2wbmp ( resource $image [, string $filename [, int $threshold ]] )

image2wbmp() 从 image 图像创建一个名为 filename 的 WBMP 文件。image 参数是某个图像创建函数的返回值，例如 imagecreatetruecolor()。

filename 参数是可选项，如果省略，则直接将原图像流输出。通过用 header() 发送 image/vnd.wap.wbmp 的 Content-type，可以创建直接输出 WBMP 图像的 PHP 脚本。

Example #1 image2wbmp() 例子

<?php
$file = 'php.jpg';
$image = imagecreatefrompng($file);
header('Content-type: ' . image_type_to_mime(IMAGETYPE_WBMP));
image2wbmp($file); // output the stream directly
?>

Note:

WBMP 支持仅在 PHP 编译时加入了 GD-1.8 或更高版本时可用。

参见 imagewbmp()。

image_type_to_mime_type
imageaffine
GD 和图像处理 函数


返回经过仿射变换后的图像，剪切区域可选

image2wbmp
imageaffinematrixconcat
GD 和图像处理 函数
PHP Manual

imageaffine

(PHP 5 >= 5.5.0, PHP 7)

imageaffine — 返回经过仿射变换后的图像，剪切区域可选

说明

resource imageaffine ( resource $image , array $affine [, array $clip ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

affine

数组，其中键为 0 至 5 的数字。

clip

数组，其中键为 "x"，"y"，"width" 和 "height"。

返回值

成功则返回仿射变换后的图像， 或者在失败时返回 FALSE.

image2wbmp
imageaffinematrixconcat
GD 和图像处理 函数


Concatenate two affine transformation matrices

imageaffine
imageaffinematrixget
GD 和图像处理 函数
PHP Manual

imageaffinematrixconcat

(PHP 5 >= 5.5.0, PHP 7)

imageaffinematrixconcat — Concatenate two affine transformation matrices

说明

array imageaffinematrixconcat ( array $m1 , array $m2 )

Returns the concatenation of two affine transformation matrices, what is useful if multiple transformations should be applied to the same image in one go.

参数

m1

An affine transformation matrix (an array with keys 0 to 5 and float values).

m2

An affine transformation matrix (an array with keys 0 to 5 and float values).

返回值

An affine transformation matrix (an array with keys 0 to 5 and float values) 或者在失败时返回 FALSE.

范例

Example #1 imageaffinematrixconcat() example

<?php
$m1 = imageaffinematrixget(IMG_AFFINE_TRANSLATE, array('x' = 2, 'y' => 3));
$m2 = imageaffinematrixget(IMG_AFFINE_SCALE, array('x' = 4, 'y' => 5));
$matrix = imageaffinematrixconcat($m1, $m2);
print_r($matrix);
?>

以上例程会输出：

Array
(
    [0] => 4
    [1] => 0
    [2] => 0
    [3] => 5
    [4] => 8
    [5] => 15
)

参见

  • imageaffine() - 返回经过仿射变换后的图像，剪切区域可选
  • imageaffinematrixget() - Get an affine transformation matrix

imageaffine
imageaffinematrixget
GD 和图像处理 函数


Get an affine transformation matrix

imageaffinematrixconcat
imagealphablending
GD 和图像处理 函数
PHP Manual

imageaffinematrixget

(PHP 5 >= 5.5.0, PHP 7)

imageaffinematrixget — Get an affine transformation matrix

说明

array imageaffinematrixget ( int $type , mixed $options )

Returns an affine transformation matrix.

参数

type

One of the IMG_AFFINE_* constants.

options

If type is IMG_AFFINE_TRANSLATE or IMG_AFFINE_SCALE, options has to be an array with keys x and y, both having float values.

If type is IMG_AFFINE_ROTATE, IMG_AFFINE_SHEAR_HORIZONTAL or IMG_AFFINE_SHEAR_VERTICAL, options has to be a float specifying the angle.

返回值

An affine transformation matrix (an array with keys 0 to 5 and float values) 或者在失败时返回 FALSE.

范例

Example #1 imageaffinematrixget() example

<?php
$matrix = imageaffinematrixget(IMG_AFFINE_TRANSLATE, array('x' = 2, 'y' => 3));
print_r($matrix);
?>

以上例程会输出：

Array
(
    [0] => 1
    [1] => 0
    [2] => 0
    [3] => 1
    [4] => 2
    [5] => 3
)

参见

  • imageaffine() - 返回经过仿射变换后的图像，剪切区域可选
  • imageaffinematrixconcat() - Concatenate two affine transformation matrices

imageaffinematrixconcat
imagealphablending
GD 和图像处理 函数


设定图像的混色模式

imageaffinematrixget
imageantialias
GD 和图像处理 函数
PHP Manual

imagealphablending

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

imagealphablending — 设定图像的混色模式

说明

bool imagealphablending ( resource $image , bool $blendmode )

imagealphablending() 允许在真彩色图像上使用两种不同的绘画模式。在混色（blending）模式下，alpha 通道色彩成分提供给所有的绘画函数，例如 imagesetpixel() 决定底层的颜色应在何种程度上被允许照射透过。作为结果，GD 自动将该点现有的颜色和画笔颜色混合，并将结果储存在图像中。结果的像素是不透明的。在非混色模式下，画笔颜色连同其 alpha 通道信息一起被拷贝，替换掉目标像素。混色模式在画调色板图像时不可用。如果 blendmode 为 TRUE，则启用混色模式，否则关闭。成功时返回 TRUE， 或者在失败时返回 FALSE。

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

blendmode

Whether to enable the blending mode or not. On true color images the default value is TRUE otherwise the default value is FALSE

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 imagealphablending() usage example

<?php
// Create image
$im = imagecreatetruecolor(100, 100);

// Set alphablending to on
imagealphablending($im, true);

// Draw a square
imagefilledrectangle($im, 30, 30, 70, 70, imagecolorallocate($im, 255, 0, 0));

// Output
header('Content-type: image/png');

imagepng($im);
imagedestroy($im);
?>

注释

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

imageaffinematrixget
imageantialias
GD 和图像处理 函数


是否使用抗锯齿（antialias）功能

imagealphablending
imagearc
GD 和图像处理 函数
PHP Manual

imageantialias

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

imageantialias — 是否使用抗锯齿（antialias）功能

说明

bool imageantialias ( resource $image , bool $enabled )

对线段和多边形启用快速画图抗锯齿方法。不支持 alpha 部分。使用直接混色操作。仅用于真彩色图像。

不支持线宽和风格。

使用抗锯齿和透明背景色可能出现未预期的结果。混色方法把背景色当成任何其它颜色使用。缺乏 alpha 部分的支持导致不允许基于 alpha 抗锯齿方法。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

enabled

是否启用抗锯齿。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 A comparison of two lines, one with anti-aliasing switched on

<?php
// Setup an anti-aliased image and a normal image
$aa = imagecreatetruecolor(400, 100);
$normal = imagecreatetruecolor(200, 100);

// Switch antialiasing on for one image
imageantialias($aa, true);

// Allocate colors
$red = imagecolorallocate($normal, 255, 0, 0);
$red_aa = imagecolorallocate($aa, 255, 0, 0);

// Draw two lines, one with AA enabled
imageline($normal, 0, 0, 200, 100, $red);
imageline($aa, 0, 0, 200, 100, $red_aa);

// Merge the two images side by side for output (AA: left, Normal: Right)
imagecopymerge($aa, $normal, 200, 0, 0, 0, 200, 100, 100);

// Output image
header('Content-type: image/png');

imagepng($aa);
imagedestroy($aa);
imagedestroy($normal);
?>

以上例程的输出类似于：

Output of example : A comparison of two lines, one with anti-aliasing switched on

注释

Note: 此函数仅在与 GD 库捆绑编译的 PHP 版本中可用。

参见

  • imagecreatetruecolor() - 新建一个真彩色图像

imagealphablending
imagearc
GD 和图像处理 函数


画椭圆弧

imageantialias
imagebmp
GD 和图像处理 函数
PHP Manual

imagearc

(PHP 4, PHP 5, PHP 7)

imagearc — 画椭圆弧

说明

bool imagearc ( resource $image , int $cx , int $cy , int $w , int $h , int $s , int $e , int $color )

imagearc() 以 cx，cy（图像左上角为 0, 0）为中心在 image 所代表的图像中画一个椭圆弧。w 和 h 分别指定了椭圆的宽度和高度，起始和结束点以 s 和 e 参数以角度指定。0°位于三点钟位置，以顺时针方向绘画。

Example #1 用 imagearc() 画一个圆

<?php
// 创建一个 200X200 的图像
$img = imagecreatetruecolor(200, 200);
// 分配颜色
$white = imagecolorallocate($img, 255, 255, 255);
$black = imagecolorallocate($img, 0, 0, 0);
// 画一个黑色的圆
imagearc($img, 100, 100, 150, 150, 0, 360, $black);
// 将图像输出到浏览器
header("Content-type: image/png");
imagepng($img);
// 释放内存
imagedestroy($img);
?>

参见 imageellipse()，imagefilledellipse() 和 imagefilledarc()。

imageantialias
imagebmp
GD 和图像处理 函数


Output a BMP image to browser or file

imagearc
imagechar
GD 和图像处理 函数
PHP Manual

imagebmp

(PHP 7 >= 7.2.0)

imagebmp — Output a BMP image to browser or file

说明

bool imagebmp ( resource $image , mixed $to [, bool $compressed = TRUE ] )

Outputs or saves a BMP version of the given image.

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

to

文件保存的路径，如果未设置或为 NULL，将会直接输出原始图象流。

compressed

Whether the BMP should be compressed with run-length encoding (RLE), or not.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Saving a BMP file

<?php
// Create a blank image and add some text
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);

imagestring($im, 1, 5, 5,  'BMP with PHP', $text_color);

// Save the image
imagebmp($im, 'php.bmp');

// Free up memory
imagedestroy($im);
?>

imagearc
imagechar
GD 和图像处理 函数


水平地画一个字符

imagebmp
imagecharup
GD 和图像处理 函数
PHP Manual

imagechar

(PHP 4, PHP 5, PHP 7)

imagechar — 水平地画一个字符

说明

bool imagechar ( resource $image , int $font , int $x , int $y , string $c , int $color )

imagechar() 将字符串 c 的第一个字符画在 image 指定的图像中，其左上角位于 x，y（图像左上角为 0, 0），颜色为 color。如果 font 是 1，2，3，4 或 5，则使用内置的字体（更大的数字对应于更大的字体）。

Example #1 imagechar() 例子

<?php

$im = imagecreate(100,100);

$string = 'PHP';

$bg = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);

// prints a black "P" in the top left corner
imagechar($im, 1, 0, 0, $string, $black);

header('Content-type: image/png');
imagepng($im);

?>

参见 imagecharup() 和 imageloadfont()。

imagebmp
imagecharup
GD 和图像处理 函数


垂直地画一个字符

imagechar
imagecolorallocate
GD 和图像处理 函数
PHP Manual

imagecharup

(PHP 4, PHP 5, PHP 7)

imagecharup — 垂直地画一个字符

说明

bool imagecharup ( resource $image , int $font , int $x , int $y , string $c , int $color )

imagecharup() 将字符 c 垂直地画在 image 指定的图像上，位于 x，y（图像左上角为 0, 0），颜色为 color。如果 font 为 1，2，3，4 或 5，则使用内置的字体。

Example #1 imagecharup() 例子

<?php

$im = imagecreate(100,100);

$string = 'Note that the first letter is a N';

$bg = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);

// prints a black "Z" on a white background
imagecharup($im, 3, 10, 10, $string, $black);

header('Content-type: image/png');
imagepng($im);

?>

参见 imagechar() 和 imageloadfont()。

imagechar
imagecolorallocate
GD 和图像处理 函数


为一幅图像分配颜色

imagecharup
imagecolorallocatealpha
GD 和图像处理 函数
PHP Manual

imagecolorallocate

(PHP 4, PHP 5, PHP 7)

imagecolorallocate — 为一幅图像分配颜色

说明

int imagecolorallocate ( resource $image , int $red , int $green , int $blue )

imagecolorallocate() 返回一个标识符，代表了由给定的 RGB 成分组成的颜色。red，green 和 blue 分别是所需要的颜色的红，绿，蓝成分。这些参数是 0 到 255 的整数或者十六进制的 0x00 到 0xFF。imagecolorallocate() 必须被调用以创建每一种用在 image 所代表的图像中的颜色。

Note:

第一次对 imagecolorallocate() 的调用会给基于调色板的图像填充背景色，即用 imagecreate() 建立的图像。

Example #1 imagecolorallocate() 例子

<?php
$im = imagecreate('example.jpg', 100, 100);
// 背景设为红色
$background = imagecolorallocate($im, 255, 0, 0);
// 设定一些颜色
$white = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);
// 十六进制方式
$white = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);
$black = imagecolorallocate($im, 0x00, 0x00, 0x00);
?>

如果分配失败则返回 -1。

参见 imagecolorallocatealpha() 和 imagecolordeallocate()。

imagecharup
imagecolorallocatealpha
GD 和图像处理 函数


为一幅图像分配颜色 + alpha

imagecolorallocate
imagecolorat
GD 和图像处理 函数
PHP Manual

imagecolorallocatealpha

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

imagecolorallocatealpha — 为一幅图像分配颜色 + alpha

说明

int imagecolorallocatealpha ( resource $image , int $red , int $green , int $blue , int $alpha )

imagecolorallocatealpha() 的行为和 imagecolorallocate() 相同，但多了一个额外的透明度参数 alpha，其值从 0 到 127。0 表示完全不透明，127 表示完全透明。

如果分配失败则返回 FALSE。

Example #1 使用 imagecolorallocatealpha() 的例子

<?php
$size = 300;
$image=imagecreatetruecolor($size, $size);

// 用白色背景加黑色边框画个方框
$back = imagecolorallocate($image, 255, 255, 255);
$border = imagecolorallocate($image, 0, 0, 0);
imagefilledrectangle($image, 0, 0, $size - 1, $size - 1, $back);
imagerectangle($image, 0, 0, $size - 1, $size - 1, $border);

$yellow_x = 100;
$yellow_y = 75;
$red_x    = 120;
$red_y    = 165;
$blue_x   = 187;
$blue_y   = 125;
$radius   = 150;

// 用 alpha 值分配一些颜色
$yellow = imagecolorallocatealpha($image, 255, 255, 0, 75);
$red    = imagecolorallocatealpha($image, 255, 0, 0, 75);
$blue   = imagecolorallocatealpha($image, 0, 0, 255, 75);

// 画三个交迭的圆
imagefilledellipse($image, $yellow_x, $yellow_y, $radius, $radius, $yellow);
imagefilledellipse($image, $red_x, $red_y, $radius, $radius, $red);
imagefilledellipse($image, $blue_x, $blue_y, $radius, $radius, $blue);

// 不要忘记输出正确的 header！
header('Content-type: image/png');

// 最后输出结果
imagepng($image);
imagedestroy($image);
?>

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

参见 imagecolorallocate() 和 imagecolordeallocate()。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

red

红色成分的值。

green

绿色成分的值。

blue

蓝色成分的值。

alpha

A value between 0 and 127. 0 indicates completely opaque while 127 indicates completely transparent.

The colors parameters are integers between 0 and 255 or hexadecimals between 0x00 and 0xFF.

返回值

A color identifier or FALSE if the allocation failed.

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

更新日志

版本 | 说明
Prior to 5.1.3 | Returns -1 if the allocation failed.

范例

Example #2 Example of using imagecolorallocatealpha()

<?php
$size = 300;
$image=imagecreatetruecolor($size, $size);

// something to get a white background with black border
$back = imagecolorallocate($image, 255, 255, 255);
$border = imagecolorallocate($image, 0, 0, 0);
imagefilledrectangle($image, 0, 0, $size - 1, $size - 1, $back);
imagerectangle($image, 0, 0, $size - 1, $size - 1, $border);

$yellow_x = 100;
$yellow_y = 75;
$red_x    = 120;
$red_y    = 165;
$blue_x   = 187;
$blue_y   = 125;
$radius   = 150;

// allocate colors with alpha values
$yellow = imagecolorallocatealpha($image, 255, 255, 0, 75);
$red    = imagecolorallocatealpha($image, 255, 0, 0, 75);
$blue   = imagecolorallocatealpha($image, 0, 0, 255, 75);

// drawing 3 overlapped circle
imagefilledellipse($image, $yellow_x, $yellow_y, $radius, $radius, $yellow);
imagefilledellipse($image, $red_x, $red_y, $radius, $radius, $red);
imagefilledellipse($image, $blue_x, $blue_y, $radius, $radius, $blue);

// don't forget to output a correct header!
header('Content-Type: image/png');

// and finally, output the result
imagepng($image);
imagedestroy($image);
?>

以上例程的输出类似于：

Output of example : Example of using imagecolorallocatealpha()

注释

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

参见

  • imagecolorallocate() - 为一幅图像分配颜色
  • imagecolordeallocate() - 取消图像颜色的分配

imagecolorallocate
imagecolorat
GD 和图像处理 函数


取得某像素的颜色索引值

imagecolorallocatealpha
imagecolorclosest
GD 和图像处理 函数
PHP Manual

imagecolorat

(PHP 4, PHP 5, PHP 7)

imagecolorat — 取得某像素的颜色索引值

说明

int imagecolorat ( resource $image , int $x , int $y )

返回 image 所指定的图形中指定位置像素的颜色索引值。

如果 PHP 编译时加上了 GD 库 2.0 或更高的版本并且图像是真彩色图像，则本函数以整数返回该点的 RGB 值。用移位加掩码来取得红，绿，蓝各自成分的值：

Example #1 取得各自的 RGB 值

<?php
$im = ImageCreateFromPng("rockym.png");
$rgb = ImageColorAt($im, 100, 100);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
?>

参见 imagecolorset() 和 imagecolorsforindex()。

imagecolorallocatealpha
imagecolorclosest
GD 和图像处理 函数


取得与指定的颜色最接近的颜色的索引值

imagecolorat
imagecolorclosestalpha
GD 和图像处理 函数
PHP Manual

imagecolorclosest

(PHP 4, PHP 5, PHP 7)

imagecolorclosest — 取得与指定的颜色最接近的颜色的索引值

说明

int imagecolorclosest ( resource $image , int $red , int $green , int $blue )

返回图像调色板中与指定的 RGB 值最"接近"的颜色。

指定的颜色与调色板中的每个颜色的"距离"的计算方法是把 RGB 值当成三维空间中点的坐标。

如果从文件创建了图像，只有图像中使用了的颜色会被辨析。仅出现在调色板中的颜色不会被辨析。

参见 imagecolorexact()。

imagecolorat
imagecolorclosestalpha
GD 和图像处理 函数


取得与指定的颜色加透明度最接近的颜色

imagecolorclosest
imagecolorclosesthwb
GD 和图像处理 函数
PHP Manual

imagecolorclosestalpha

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

imagecolorclosestalpha — 取得与指定的颜色加透明度最接近的颜色

说明

int imagecolorclosestalpha ( resource $image , int $red , int $green , int $blue , int $alpha )

返回图像调色板中与指定的 RGB 值以及 alpha 深度最"接近"的颜色。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

red

红色成分的值。

green

绿色成分的值。

blue

蓝色成分的值。

alpha

A value between 0 and 127. 0 indicates completely opaque while 127 indicates completely transparent.

The colors parameters are integers between 0 and 255 or hexadecimals between 0x00 and 0xFF.

返回值

Returns the index of the closest color in the palette.

范例

Example #1 Search for a set of colors in an image

<?php
// Start with an image and convert it to a palette-based image
$im = imagecreatefrompng('figures/imagecolorclosest.png');
imagetruecolortopalette($im, false, 255);

// Search colors (RGB)
$colors = array(
    array(254, 145, 154, 50),
    array(153, 145, 188, 127),
    array(153, 90, 145, 0),
    array(255, 137, 92, 84)
);

// Loop through each search and find the closest color in the palette.
// Return the search number, the search RGB and the converted RGB match
foreach($colors as $id => $rgb)
{
    $result = imagecolorclosestalpha($im, $rgb[0], $rgb[1], $rgb[2], $rgb[3]);
    $result = imagecolorsforindex($im, $result);
    $result = "({$result['red']}, {$result['green']}, {$result['blue']}, {$result['alpha']})";

    echo "#$id: Search ($rgb[0], $rgb[1], $rgb[2], $rgb[3]); Closest match: $result.\n";
}

imagedestroy($im);
?>

以上例程的输出类似于：

#0: Search (254, 145, 154, 50); Closest match: (252, 150, 148, 0).
#1: Search (153, 145, 188, 127); Closest match: (148, 150, 196, 0).
#2: Search (153, 90, 145, 0); Closest match: (148, 90, 156, 0).
#3: Search (255, 137, 92, 84); Closest match: (252, 150, 92, 0).

注释

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

参见

  • imagecolorexactalpha() - 取得指定的颜色加透明度的索引值
  • imagecolorclosest() - 取得与指定的颜色最接近的颜色的索引值
  • imagecolorclosesthwb() - 取得与给定颜色最接近的色度的黑白色的索引

imagecolorclosest
imagecolorclosesthwb
GD 和图像处理 函数


取得与给定颜色最接近的色度的黑白色的索引

imagecolorclosestalpha
imagecolordeallocate
GD 和图像处理 函数
PHP Manual

imagecolorclosesthwb

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

imagecolorclosesthwb — 取得与给定颜色最接近的色度的黑白色的索引

说明

int imagecolorclosesthwb ( resource $image , int $red , int $green , int $blue )

取得与给定颜色最接近的色度的黑白色的索引。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

red

红色成分的值。

green

绿色成分的值。

blue

蓝色成分的值。

返回值

返回一个整数，是给定颜色最接近的色度的黑白色的索引。

范例

Example #1 使用 imagecolorclosesthwb() 的例子

<?php
$im = imagecreatefromgif('php.gif');

echo 'HWB: ' . imagecolorclosesthwb($im, 116, 115, 152);

imagedestroy($im);
?>

以上例程的输出类似于：

HWB: 33

更新日志

版本 | 说明
5.3.0 | 在 Windows 平台上可用

参见

  • imagecolorclosest() - 取得与指定的颜色最接近的颜色的索引值

imagecolorclosestalpha
imagecolordeallocate
GD 和图像处理 函数


取消图像颜色的分配

imagecolorclosesthwb
imagecolorexact
GD 和图像处理 函数
PHP Manual

imagecolordeallocate

(PHP 4, PHP 5, PHP 7)

imagecolordeallocate — 取消图像颜色的分配

说明

bool imagecolordeallocate ( resource $image , int $color )

imagecolordeallocate() 函数取消先前由
imagecolorallocate() 或
imagecolorallocatealpha() 分配的颜色。

<?php
$white = imagecolorallocate($im, 255, 255, 255);
imagecolordeallocate($im, $white);
?>

参见 imagecolorallocate() 和 imagecolorallocatealpha()。

imagecolorclosesthwb
imagecolorexact
GD 和图像处理 函数


取得指定颜色的索引值

imagecolordeallocate
imagecolorexactalpha
GD 和图像处理 函数
PHP Manual

imagecolorexact

(PHP 4, PHP 5, PHP 7)

imagecolorexact — 取得指定颜色的索引值

说明

int imagecolorexact ( resource $image , int $red , int $green , int $blue )

返回图像调色板中指定颜色的索引值。

如果颜色不在图像的调色板中，返回 -1。

如果从文件创建了图像，只有图像中使用了的颜色会被辨析。仅出现在调色板中的颜色不会被辨析。

参见 imagecolorclosest()。

imagecolordeallocate
imagecolorexactalpha
GD 和图像处理 函数


取得指定的颜色加透明度的索引值

imagecolorexact
imagecolormatch
GD 和图像处理 函数
PHP Manual

imagecolorexactalpha

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

imagecolorexactalpha — 取得指定的颜色加透明度的索引值

说明

int imagecolorexactalpha ( resource $image , int $red , int $green , int $blue , int $alpha )

返回图像调色板中指定颜色加透明度的索引值。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

red

红色成分的值。

green

绿色成分的值。

blue

蓝色成分的值。

alpha

A value between 0 and 127. 0 indicates completely opaque while 127 indicates completely transparent.

The colors parameters are integers between 0 and 255 or hexadecimals between 0x00 and 0xFF.

返回值

返回图像调色板中指定颜色加透明度的索引值。 如果颜色不在图像的调色板中，返回 -1。

范例

Example #1 Get colors from the GD logo

<?php

// Setup an image
$im = imagecreatefrompng('./gdlogo.png');

$colors   = Array();
$colors[] = imagecolorexactalpha($im, 255, 0, 0, 0);
$colors[] = imagecolorexactalpha($im, 0, 0, 0, 127);
$colors[] = imagecolorexactalpha($im, 255, 255, 255, 55);
$colors[] = imagecolorexactalpha($im, 100, 255, 52, 20);

print_r($colors);

// Free from memory
imagedestroy($im);
?>

以上例程的输出类似于：

Array
(
    [0] => 16711680
    [1] => 2130706432
    [2] => 939524095
    [3] => 342163252
)

注释

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

参见

  • imagecolorclosestalpha() - 取得与指定的颜色加透明度最接近的颜色

imagecolorexact
imagecolormatch
GD 和图像处理 函数


使一个图像中调色板版本的颜色与真彩色版本更能匹配

imagecolorexactalpha
imagecolorresolve
GD 和图像处理 函数
PHP Manual

imagecolormatch

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

imagecolormatch — 使一个图像中调色板版本的颜色与真彩色版本更能匹配

说明

bool imagecolormatch ( resource $image1 , resource $image2 )

使一个图像中调色板版本的颜色与真彩色版本更能匹配。

参数

image1

真彩色图像连接资源。

image2

必须是调色板图像，而且和 image1 的大小必须相同。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 imagecolormatch() 例子

<?php
// Setup the true color and palette images
$im1 = imagecreatefrompng('./gdlogo.png');
$im2 = imagecreate(imagesx($im1), imagesy($im1));

// Add some colors to $im2
$colors   = Array();
$colors[] = imagecolorallocate($im2, 255, 36, 74);
$colors[] = imagecolorallocate($im2, 40, 0, 240);
$colors[] = imagecolorallocate($im2, 82, 100, 255);
$colors[] = imagecolorallocate($im2, 84, 63, 44);

// Match these colors with the true color image
imagecolormatch($im1, $im2);

// Free from memory
imagedestroy($im1);
imagedestroy($im2);
?>

注释

Note: 此函数仅在与 GD 库捆绑编译的 PHP 版本中可用。

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

参见

  • imagecreatetruecolor() - 新建一个真彩色图像

imagecolorexactalpha
imagecolorresolve
GD 和图像处理 函数


取得指定颜色的索引值或有可能得到的最接近的替代值

imagecolormatch
imagecolorresolvealpha
GD 和图像处理 函数
PHP Manual

imagecolorresolve

(PHP 4, PHP 5, PHP 7)

imagecolorresolve — 取得指定颜色的索引值或有可能得到的最接近的替代值

说明

int imagecolorresolve ( resource $image , int $red , int $green , int $blue )

本函数可以保证对所请求的颜色返回一个颜色索引，要么是确切值要么是所能得到最接近的替代值。

如果从文件创建了图像，只有图像中使用了的颜色会被辨析。仅出现在调色板中的颜色不会被辨析。

参见 imagecolorclosest()。

imagecolormatch
imagecolorresolvealpha
GD 和图像处理 函数


取得指定颜色 + alpha 的索引值或有可能得到的最接近的替代值

imagecolorresolve
imagecolorset
GD 和图像处理 函数
PHP Manual

imagecolorresolvealpha

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

imagecolorresolvealpha — 取得指定颜色 + alpha 的索引值或有可能得到的最接近的替代值

说明

int imagecolorresolvealpha ( resource $image , int $red , int $green , int $blue , int $alpha )

本函数可以保证对所请求的颜色返回一个颜色索引，要么是确切值要么是所能得到最接近的替代值。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

red

红色成分的值。

green

绿色成分的值。

blue

蓝色成分的值。

alpha

A value between 0 and 127. 0 indicates completely opaque while 127 indicates completely transparent.

The colors parameters are integers between 0 and 255 or hexadecimals between 0x00 and 0xFF.

返回值

Returns a color index.

范例

Example #1 Using imagecoloresolvealpha() to get colors from an image

<?php
// Load an image
$im = imagecreatefromgif('phplogo.gif');

// Get closest colors from the image
$colors = array();
$colors[] = imagecolorresolvealpha($im, 255, 255, 255, 0);
$colors[] = imagecolorresolvealpha($im, 0, 0, 200, 127);

// Output
print_r($colors);

imagedestroy($im);
?>

以上例程的输出类似于：

Array
(
    [0] => 89
    [1] => 85
)

注释

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

参见

  • imagecolorclosestalpha() - 取得与指定的颜色加透明度最接近的颜色

imagecolorresolve
imagecolorset
GD 和图像处理 函数


给指定调色板索引设定颜色

imagecolorresolvealpha
imagecolorsforindex
GD 和图像处理 函数
PHP Manual

imagecolorset

(PHP 4, PHP 5, PHP 7)

imagecolorset — 给指定调色板索引设定颜色

说明

void imagecolorset ( resource $image , int $index , int $red , int $green , int $blue )

本函数将调色板中指定的索引设定为指定的颜色。对于在调色板图像中创建类似区域填充（flood-fill）的效果很有用，免去了真的去填充的开销。

参见 imagecolorat()。

imagecolorresolvealpha
imagecolorsforindex
GD 和图像处理 函数


取得某索引的颜色

imagecolorset
imagecolorstotal
GD 和图像处理 函数
PHP Manual

imagecolorsforindex

(PHP 4, PHP 5, PHP 7)

imagecolorsforindex — 取得某索引的颜色

说明

array imagecolorsforindex ( resource $image , int $index )

本函数返回一个具有 red，green，blue 和 alpha 的键名的关联数组，包含了指定颜色索引的相应的值。

Example #1 imagecolorsforindex() 例子

<?php

// 打开一幅图像
$im = imagecreatefrompng('nexen.png');

// 取得一点的颜色
$start_x = 40;
$start_y = 50;
$color_index = imagecolorat($im, $start_x, $start_y);

// 使其可读
$color_tran = imagecolorsforindex($im, $color_index);

// 显示该颜色的值
echo '<pre>';
print_r($color_tran);
echo '</pre>';

?>

本例将输出：

Array
(
    [red] => 226
    [green] => 222
    [blue] => 252
    [alpha] => 0
)

参见 imagecolorat() 和 imagecolorexact()。

imagecolorset
imagecolorstotal
GD 和图像处理 函数


取得一幅图像的调色板中颜色的数目

imagecolorsforindex
imagecolortransparent
GD 和图像处理 函数
PHP Manual

imagecolorstotal

(PHP 4, PHP 5, PHP 7)

imagecolorstotal — 取得一幅图像的调色板中颜色的数目

说明

int imagecolorstotal ( resource $image )

本函数返回指定图像的调色板中的颜色数目。

参见 imagecolorat() 和 imagecolorsforindex()。

imagecolorsforindex
imagecolortransparent
GD 和图像处理 函数


将某个颜色定义为透明色

imagecolorstotal
imageconvolution
GD 和图像处理 函数
PHP Manual

imagecolortransparent

(PHP 4, PHP 5, PHP 7)

imagecolortransparent — 将某个颜色定义为透明色

说明

int imagecolortransparent ( resource $image [, int $color ] )

imagecolortransparent() 将 image 图像中的透明色设定为 color。image 是 imagecreatetruecolor() 返回的图像标识符，color 是 imagecolorallocate() 返回的颜色标识符。

Note:

透明色是图像的一种属性，透明度不是颜色的属性。一旦设定了某个颜色为透明色，图像中之前画为该色的任何区域都成为透明的。

返回新透明色的标识符，如果省略 color 则返回当前透明色的标识符。

Note:

透明度仅能通过 imagecopymerge() 和真彩色图像拷贝，不能用 imagecopy() 或调色板图像。

imagecolorstotal
imageconvolution
GD 和图像处理 函数


用系数 div 和 offset 申请一个 3x3 的卷积矩阵

imagecolortransparent
imagecopy
GD 和图像处理 函数
PHP Manual

imageconvolution

(PHP 5 >= 5.1.0, PHP 7)

imageconvolution — 用系数 div 和 offset 申请一个 3x3 的卷积矩阵

说明

bool imageconvolution ( resource $image , array $matrix , float $div , float $offset )

Applies a convolution matrix on the image, using the given coefficient and offset.

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

matrix

A 3x3 matrix: an array of three arrays of three floats.

div

The divisor of the result of the convolution, used for normalization.

offset

Color offset.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Embossing the PHP.net logo

<?php
$image = imagecreatefromgif('http://www.php.net/images/php.gif');

$emboss = array(array(2, 0, 0), array(0, -1, 0), array(0, 0, -1));
imageconvolution($image, $emboss, 1, 127);

header('Content-Type: image/png');
imagepng($image, null, 9);
?>

以上例程会输出：

Output of example : Embossing the PHP.net logo

Example #2 Gaussian blur

<?php
$image = imagecreatetruecolor(180,40);

// Writes the text and apply a gaussian blur on the image
imagestring($image, 5, 10, 8, 'Gaussian Blur Text', 0x00ff00);
$gaussian = array(array(1.0, 2.0, 1.0), array(2.0, 4.0, 2.0), array(1.0, 2.0, 1.0));
imageconvolution($image, $gaussian, 16, 0);

// Rewrites the text for comparison
imagestring($image, 5, 10, 18, 'Gaussian Blur Text', 0x00ff00);

header('Content-Type: image/png');
imagepng($image, null, 9);
?>

以上例程会输出：

Output of example : Gaussian blur

注释

Note: 此函数仅在与 GD 库捆绑编译的 PHP 版本中可用。

参见

  • imagefilter() - 对图像使用过滤器

imagecolortransparent
imagecopy
GD 和图像处理 函数


拷贝图像的一部分

imageconvolution
imagecopymerge
GD 和图像处理 函数
PHP Manual

imagecopy

(PHP 4, PHP 5, PHP 7)

imagecopy — 拷贝图像的一部分

说明

bool imagecopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )

将 src_im 图像中坐标从 src_x，src_y 开始，宽度为 src_w，高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。

imageconvolution
imagecopymerge
GD 和图像处理 函数


拷贝并合并图像的一部分

imagecopy
imagecopymergegray
GD 和图像处理 函数
PHP Manual

imagecopymerge

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

imagecopymerge — 拷贝并合并图像的一部分

说明

bool imagecopymerge ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h , int $pct )

将 src_im 图像中坐标从 src_x，src_y 开始，宽度为 src_w，高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。两图像将根据 pct 来决定合并程度，其值范围从 0 到 100。当 pct = 0 时，实际上什么也没做，当为 100 时对于调色板图像本函数和 imagecopy() 完全一样，它对真彩色图像实现了 alpha 透明。

Note:

本函数是 PHP 4.0.6 新加的。

imagecopy
imagecopymergegray
GD 和图像处理 函数


用灰度拷贝并合并图像的一部分

imagecopymerge
imagecopyresampled
GD 和图像处理 函数
PHP Manual

imagecopymergegray

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

imagecopymergegray — 用灰度拷贝并合并图像的一部分

说明

bool imagecopymergegray ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h , int $pct )

将 src_im 图像中坐标从 src_x，src_y 开始，宽度为 src_w，高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。两图像将根据 pct 来决定合并程度，其值范围从 0 到 100。当 pct = 0 时，实际上什么也没做，当为 100 时本函数和 imagecopy() 完全一样。

本函数和 imagecopymerge() 完全一样只除了合并时通过在拷贝操作前将目标像素转换为灰度级来保留了原色度。

Note:

本函数添加于 PHP 4.0.6。

imagecopymerge
imagecopyresampled
GD 和图像处理 函数


重采样拷贝部分图像并调整大小

imagecopymergegray
imagecopyresized
GD 和图像处理 函数
PHP Manual

imagecopyresampled

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

imagecopyresampled — 重采样拷贝部分图像并调整大小

说明

bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )

imagecopyresampled() 将一幅图像中的一块正方形区域拷贝到另一个图像中，平滑地插入像素值，因此，尤其是，减小了图像的大小而仍然保持了极大的清晰度。

In other words, imagecopyresampled() will take a rectangular area from src_image of width src_w and height src_h at position (src_x,src_y) and place it in a rectangular area of dst_image of width dst_w and height dst_h at position (dst_x,dst_y).

如果源和目标的宽度和高度不同，则会进行相应的图像收缩和拉伸。坐标指的是左上角。本函数可用来在同一幅图内部拷贝（如果 dst_image 和 src_image 相同的话）区域，但如果区域交迭的话则结果不可预知。

参数

dst_image

目标图象连接资源。

src_image

源图象连接资源。

dst_x

目标 X 坐标点。

dst_y

目标 Y 坐标点。

src_x

源的 X 坐标点。

src_y

源的 Y 坐标点。

dst_w

目标宽度。

dst_h

目标高度。

src_w

源图象的宽度。

src_h

源图象的高度。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 简单的例子

这个例子会将图像调整为原有尺寸的一半。

<?php
// 这个文件
$filename = 'test.jpg';
$percent = 0.5;

// 内容类型
header('Content-Type: image/jpeg');

// 获取新的尺寸
list($width, $height) = getimagesize($filename);
$new_width = $width * $percent;
$new_height = $height * $percent;

// 重新取样
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

// 输出
imagejpeg($image_p, null, 100);
?>

以上例程的输出类似于：

Example #2 按比例对图像重新采样

这个例子会以最大宽度高度为 200 像素显示一个图像。

<?php
// 源文件
$filename = 'test.jpg';

// 设置最大宽高
$width = 200;
$height = 200;

// Content type
header('Content-Type: image/jpeg');

// 获取新尺寸
list($width_orig, $height_orig) = getimagesize($filename);

$ratio_orig = $width_orig/$height_orig;

if ($width/$height > $ratio_orig) {
   $width = $height*$ratio_orig;
} else {
   $height = $width/$ratio_orig;
}

// 重新取样
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

// 输出
imagejpeg($image_p, null, 100);
?>

以上例程的输出类似于：

注释

Note:

因为调色板图像限制（255+1 种颜色）有个问题。重采样或过滤图像通常需要多于 255 种颜色，计算新的被重采样的像素及其颜色时采用了一种近似值。对调色板图像尝试分配一个新颜色时，如果失败我们选择了计算结果最接近（理论上）的颜色。这并不总是视觉上最接近的颜色。这可能会产生怪异的结果，例如空白（或者视觉上是空白）的图像。要跳过这个问题，请使用真彩色图像作为目标图像，例如用 imagecreatetruecolor() 创建的。

参见

imagecopyresized() - 拷贝部分图像并调整大小

imagecopymergegray
imagecopyresized
GD 和图像处理 函数


拷贝部分图像并调整大小

imagecopyresampled
imagecreate
GD 和图像处理 函数
PHP Manual

imagecopyresized

(PHP 4, PHP 5, PHP 7)

imagecopyresized — 拷贝部分图像并调整大小

说明

bool imagecopyresized ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )

imagecopyresized() 将一幅图像中的一块矩形区域拷贝到另一个图像中。dst_image 和 src_image 分别是目标图像和源图像的标识符。

In other words, imagecopyresized() will take an rectangular area from src_image of width src_w and height src_h at position (src_x,src_y) and place it in a rectangular area of dst_image of width dst_w and height dst_h at position (dst_x,dst_y).

如果源和目标的宽度和高度不同，则会进行相应的图像收缩和拉伸。坐标指的是左上角。本函数可用来在同一幅图内部拷贝（如果 dst_image 和 src_image 相同的话）区域，但如果区域交迭的话则结果不可预知。

参数

dst_image

目标图象连接资源。

src_image

源图象连接资源。

dst_x

x-coordinate of destination point.

dst_y

y-coordinate of destination point.

src_x

x-coordinate of source point.

src_y

y-coordinate of source point.

dst_w

Destination width.

dst_h

Destination height.

src_w

源图象的宽度。

src_h

源图象的高度。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Resizing an image

这个例子会以一半的尺寸显示图片

<?php
// File and new size
$filename = 'test.jpg';
$percent = 0.5;

// Content type
header('Content-Type: image/jpeg');

// Get new sizes
list($width, $height) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;

// Load
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);

// Resize
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

// Output
imagejpeg($thumb);
?>

以上例程的输出类似于：

Output of example : Resizing an image

The image will be output at half size, though better quality could be obtained using imagecopyresampled().

注释

Note:

因为调色板图像限制（255+1 种颜色）有个问题。重采样或过滤图像通常需要多于 255 种颜色，计算新的被重采样的像素及其颜色时采用了一种近似值。对调色板图像尝试分配一个新颜色时，如果失败我们选择了计算结果最接近（理论上）的颜色。这并不总是视觉上最接近的颜色。这可能会产生怪异的结果，例如空白（或者视觉上是空白）的图像。要跳过这个问题，请使用真彩色图像作为目标图像，例如用 imagecreatetruecolor() 创建的。

参见

imagecopyresampled() - 重采样拷贝部分图像并调整大小

imagecopyresampled
imagecreate
GD 和图像处理 函数


新建一个基于调色板的图像

imagecopyresized
imagecreatefrombmp
GD 和图像处理 函数
PHP Manual

imagecreate

(PHP 4, PHP 5, PHP 7)

imagecreate — 新建一个基于调色板的图像

说明

resource imagecreate ( int $x_size , int $y_size )

imagecreate() 返回一个图像标识符，代表了一幅大小为 x_size 和 y_size 的空白图像。

推荐使用 imagecreatetruecolor()。

Example #1 新建一个新的 GD 图像流并输出图像

<?php
header("Content-type: image/png");
$im = @imagecreate(100, 50)
    or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 255, 255, 255);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  "A Simple Text String", $text_color);
imagepng($im);
imagedestroy($im);
?>

参见 imagedestroy() 和 imagecreatetruecolor()。

imagecopyresized
imagecreatefrombmp
GD 和图像处理 函数


由文件或 URL 创建一个新图象。

imagecreate
imagecreatefromgd2
GD 和图像处理 函数
PHP Manual

imagecreatefrombmp

(PHP 7 >= 7.2.0)

imagecreatefrombmp — 由文件或 URL 创建一个新图象。

说明

resource imagecreatefrombmp ( string $filename )

imagecreatefrombmp() returns an image identifier representing the image obtained from the given filename.

Tip

如已启用fopen 包装器，在此函数中， URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议，注意其用法及其可提供的预定义变量。

参数

filename

Path to the BMP image.

返回值

成功后返回图象资源,失败后返回 FALSE 。

范例

Example #1 Convert an BMP image to a PNG image using imagecreatefrombmp()

<?php
// Load the BMP file
$im = imagecreatefrombmp('./example.bmp');

// Convert it to a PNG file with default settings
imagepng($im, './example.png');
imagedestroy($im);
?>

imagecreate
imagecreatefromgd2
GD 和图像处理 函数


从 GD2 文件或 URL 新建一图像

imagecreatefrombmp
imagecreatefromgd2part
GD 和图像处理 函数
PHP Manual

imagecreatefromgd2

(PHP 4 >= 4.0.7, PHP 5, PHP 7)

imagecreatefromgd2 — 从 GD2 文件或 URL 新建一图像

说明

resource imagecreatefromgd2 ( string $filename )

从 GD2 文件或 URL 新建一图像。

Tip

如已启用fopen 包装器，在此函数中， URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议，注意其用法及其可提供的预定义变量。

参数

filename

GD2 图像的路径。

返回值

成功后返回图象资源,失败后返回 FALSE 。

范例

Example #1 imagecreatefromgd2() 例子

<?php
// 加载 gd2 图像
$im = imagecreatefromgd2('./test.gd2');

// 在图像上应用效果。
// 在这个例子中，如果版本为 PHP5+ 则反转图像颜色
if(function_exists('imagefilter'))
{
    imagefilter($im, IMG_FILTER_NEGATE);
}

// 保存图像
imagegd2($im, './test_updated.gd2');
imagedestroy($im);
?>

注释

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

Warning

Windows 版本的 PHP 在 4.3.0 版之前不支持通过此函数访问远程文件，即使已经启用 allow_url_fopen.

imagecreatefrombmp
imagecreatefromgd2part
GD 和图像处理 函数


从给定的 GD2 文件或 URL 中的部分新建一图像

imagecreatefromgd2
imagecreatefromgd
GD 和图像处理 函数
PHP Manual

imagecreatefromgd2part

(PHP 4 >= 4.0.7, PHP 5, PHP 7)

imagecreatefromgd2part — 从给定的 GD2 文件或 URL 中的部分新建一图像

说明

resource imagecreatefromgd2part ( string $filename , int $srcX , int $srcY , int $width , int $height )

Create a new image from a given part of GD2 file or URL.

Tip

如已启用fopen 包装器，在此函数中， URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议，注意其用法及其可提供的预定义变量。

参数

filename

Path to the GD2 image.

srcX

x-coordinate of source point.

srcY

y-coordinate of source point.

width

源图象的宽度。

height

源图象的高度。

返回值

成功后返回图象资源,失败后返回 FALSE 。

范例

Example #1 imagecreatefromgd2part() example

<?php
// For this example we need the image size before
$image = getimagesize('./test.gd2');

// Create the image instance now we got the image
// sizes
$im = imagecreatefromgd2part('./test.gd2', 4, 4, ($image[0] / 2) - 6, ($image[1] / 2) - 6);

// Do an image operation, in this case we emboss the
// image if PHP 5+
if(function_exists('imagefilter'))
{
    imagefilter($im, IMG_FILTER_EMBOSS);
}

// Save optimized image
imagegd2($im, './test_emboss.gd2');
imagedestroy($im);
?>

注释

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

Warning

Windows 版本的 PHP 在 4.3.0 版之前不支持通过此函数访问远程文件，即使已经启用 allow_url_fopen.

imagecreatefromgd2
imagecreatefromgd
GD 和图像处理 函数


从 GD 文件或 URL 新建一图像

imagecreatefromgd2part
imagecreatefromgif
GD 和图像处理 函数
PHP Manual

imagecreatefromgd

(PHP 4 >= 4.0.7, PHP 5, PHP 7)

imagecreatefromgd — 从 GD 文件或 URL 新建一图像

说明

resource imagecreatefromgd ( string $filename )

从 GD 文件或 URL 新建一图像。

Tip

如已启用fopen 包装器，在此函数中， URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议，注意其用法及其可提供的预定义变量。

参数

filename

GD 文件的路径。

返回值

成功后返回图象资源,失败后返回 FALSE 。

范例

Example #1 imagecreatefromgd() 例子

<?php
// Load the gd image
$im = @imagecreatefromgd('./test.gd');

// Test if the image was loaded
if(!is_resource($im))
{
     die('Unable to load gd image!');
}

// Do image operations here

// Save the image
imagegd($im, './test_updated.gd');
imagedestroy($im);
?>

注释

Warning

Windows 版本的 PHP 在 4.3.0 版之前不支持通过此函数访问远程文件，即使已经启用 allow_url_fopen.

imagecreatefromgd2part
imagecreatefromgif
GD 和图像处理 函数


由文件或 URL 创建一个新图象。

imagecreatefromgd
imagecreatefromjpeg
GD 和图像处理 函数
PHP Manual

imagecreatefromgif

(PHP 4, PHP 5, PHP 7)

imagecreatefromgif — 由文件或 URL 创建一个新图象。

说明

resource imagecreatefromgif ( string $filename )

imagecreatefromgif() 返回一图像标识符，代表了从给定的文件名取得的图像。

Tip

如已启用fopen 包装器，在此函数中， URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议，注意其用法及其可提供的预定义变量。

参数

filename

GIF 图像的路径。

返回值

成功后返回图象资源,失败后返回 FALSE 。

范例

Example #1 处理创建过程中的错误

<?php
function LoadGif($imgname)
{
    /* Attempt to open */
    $im = @imagecreatefromgif($imgname);

    /* See if it failed */
    if(!$im)
    {
        /* Create a blank image */
        $im = imagecreatetruecolor (150, 30);
        $bgc = imagecolorallocate ($im, 255, 255, 255);
        $tc = imagecolorallocate ($im, 0, 0, 0);

        imagefilledrectangle ($im, 0, 0, 150, 30, $bgc);

        /* Output an error message */
        imagestring ($im, 1, 5, 5, 'Error loading ' . $imgname, $tc);
    }

    return $im;
}

header('Content-Type: image/gif');

$img = LoadGif('bogus.image');

imagegif($img);
imagedestroy($img);
?>

以上例程的输出类似于：

例子的输出： 处理创建 GIF 过程中的错误

注释

Note:

自 GD 库 1.6 版起所有的 GIF 支持都移除了，又在 GD 库 2.0.28 版起又加了回来。如果使用二者之间版本的 GD 库时本函数不可用。

Warning

Windows 版本的 PHP 在 4.3.0 版之前不支持通过此函数访问远程文件，即使已经启用 allow_url_fopen.

imagecreatefromgd
imagecreatefromjpeg
GD 和图像处理 函数


由文件或 URL 创建一个新图象。

imagecreatefromgif
imagecreatefrompng
GD 和图像处理 函数
PHP Manual

imagecreatefromjpeg

(PHP 4, PHP 5, PHP 7)

imagecreatefromjpeg — 由文件或 URL 创建一个新图象。

说明

resource imagecreatefromjpeg ( string $filename )

imagecreatefromjpeg() 返回一图像标识符，代表了从给定的文件名取得的图像。

Tip

如已启用fopen 包装器，在此函数中， URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议，注意其用法及其可提供的预定义变量。

参数

filename

JPEG 图像的路径。

返回值

成功后返回图象资源,失败后返回 FALSE 。

范例

Example #1 处理创建过程中的错误

<?php
function LoadJpeg($imgname)
{
    /* 尝试打开 */
    $im = @imagecreatefromjpeg($imgname);

    /* See if it failed */
    if(!$im)
    {
        /* Create a black image */
        $im  = imagecreatetruecolor(150, 30);
        $bgc = imagecolorallocate($im, 255, 255, 255);
        $tc  = imagecolorallocate($im, 0, 0, 0);

        imagefilledrectangle($im, 0, 0, 150, 30, $bgc);

        /* Output an error message */
        imagestring($im, 1, 5, 5, 'Error loading ' . $imgname, $tc);
    }

    return $im;
}

header('Content-Type: image/jpeg');

$img = LoadJpeg('bogus.image');

imagejpeg($img);
imagedestroy($img);
?>

以上例程的输出类似于：

注释

Note: JPEG 支持仅在 PHP 与 GD-1.8 或更高版本一起编译时可用。

Warning

Windows 版本的 PHP 在 4.3.0 版之前不支持通过此函数访问远程文件，即使已经启用 allow_url_fopen.

imagecreatefromgif
imagecreatefrompng
GD 和图像处理 函数


由文件或 URL 创建一个新图象。

imagecreatefromjpeg
imagecreatefromstring
GD 和图像处理 函数
PHP Manual

imagecreatefrompng

(PHP 4, PHP 5, PHP 7)

imagecreatefrompng — 由文件或 URL 创建一个新图象。

说明

resource imagecreatefrompng ( string $filename )

imagecreatefrompng() 返回一图像标识符，代表了从给定的文件名取得的图像。

Tip

如已启用fopen 包装器，在此函数中， URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议，注意其用法及其可提供的预定义变量。

参数

filename

PNG 图像的路径。

返回值

成功后返回图象资源,失败后返回 FALSE 。

范例

Example #1 处理创建 PNG 过程中的错误

<?php
function LoadPNG($imgname)
{
    /* Attempt to open */
    $im = @imagecreatefrompng($imgname);

    /* See if it failed */
    if(!$im)
    {
        /* Create a blank image */
        $im  = imagecreatetruecolor(150, 30);
        $bgc = imagecolorallocate($im, 255, 255, 255);
        $tc  = imagecolorallocate($im, 0, 0, 0);

        imagefilledrectangle($im, 0, 0, 150, 30, $bgc);

        /* Output an error message */
        imagestring($im, 1, 5, 5, 'Error loading ' . $imgname, $tc);
    }

    return $im;
}

header('Content-Type: image/png');

$img = LoadPNG('bogus.image');

imagepng($img);
imagedestroy($img);
?>

以上例程的输出类似于：

注释

Warning

Windows 版本的 PHP 在 4.3.0 版之前不支持通过此函数访问远程文件，即使已经启用 allow_url_fopen.

imagecreatefromjpeg
imagecreatefromstring
GD 和图像处理 函数


从字符串中的图像流新建一图像

imagecreatefrompng
imagecreatefromwbmp
GD 和图像处理 函数
PHP Manual

imagecreatefromstring

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

imagecreatefromstring — 从字符串中的图像流新建一图像

说明

resource imagecreatefromstring ( string $image )

imagecreatefromstring() 返回一个图像标识符，其表达了从给定字符串得来的图像。图像格式将自动检测，只要 PHP 支持：JPEG，PNG，GIF，WBMP 和 GD2。

参数

image

A string containing the image data.

返回值

An image resource will be returned on success. FALSE is returned if the image type is unsupported, the data is not in a recognised format, or the image is corrupt and cannot be loaded.

范例

Example #1 imagecreatefromstring() example

<?php
$data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
       . 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
       . 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
       . '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';
$data = base64_decode($data);

$im = imagecreatefromstring($data);
if ($im !== false) {
    header('Content-Type: image/png');
    imagepng($im);
    imagedestroy($im);
}
else {
    echo 'An error occurred.';
}
?>

以上例程的输出类似于：

Output of example : imagecreatefromstring()

参见

  • imagecreatefromjpeg() - 由文件或 URL 创建一个新图象。
  • imagecreatefrompng() - 由文件或 URL 创建一个新图象。
  • imagecreatefromgif() - 由文件或 URL 创建一个新图象。
  • imagecreatetruecolor() - 新建一个真彩色图像

imagecreatefrompng
imagecreatefromwbmp
GD 和图像处理 函数


由文件或 URL 创建一个新图象。

imagecreatefromstring
imagecreatefromwebp
GD 和图像处理 函数
PHP Manual

imagecreatefromwbmp

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

imagecreatefromwbmp — 由文件或 URL 创建一个新图象。

说明

resource imagecreatefromwbmp ( string $filename )

imagecreatefromwbmp() 返回一图像标识符，代表了从给定的文件名取得的图像。

Tip

如已启用fopen 包装器，在此函数中， URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议，注意其用法及其可提供的预定义变量。

参数

filename

WBMP 图像的路径。

返回值

成功后返回图象资源,失败后返回 FALSE 。

范例

Example #1 处理创建 WBMP 过程中的错误

<?php
function LoadWBMP($imgname)
{
    /* Attempt to open */
    $im = @imagecreatefromwbmp($imgname);

    /* See if it failed */
    if(!$im)
    {
        /* Create a blank image */
        $im  = imagecreatetruecolor(150, 30);
        $bgc = imagecolorallocate($im, 255, 255, 255);
        $tc  = imagecolorallocate($im, 0, 0, 0);

        imagefilledrectangle($im, 0, 0, 150, 30, $bgc);

        /* Output an error message */
        imagestring($im, 1, 5, 5, 'Error loading ' . $imgname, $tc);
    }

    return $im;
}

header('Content-Type: image/vnd.wap.wbmp');

$img = LoadWBMP('bogus.image');

imagewbmp($img);
imagedestroy($img);
?>

注释

Note: WBMP 支持仅在 PHP 与 GD-1.8 或更高版本一起编译时可用。

Warning

Windows 版本的 PHP 在 4.3.0 版之前不支持通过此函数访问远程文件，即使已经启用 allow_url_fopen.

imagecreatefromstring
imagecreatefromwebp
GD 和图像处理 函数


由文件或 URL 创建一个新图象。

imagecreatefromwbmp
imagecreatefromxbm
GD 和图像处理 函数
PHP Manual

imagecreatefromwebp

(PHP 5 >= 5.5.0, PHP 7)

imagecreatefromwebp — 由文件或 URL 创建一个新图象。

说明

resource imagecreatefromwebp ( string $filename )

imagecreatefromwebp() 返回从给定文件名创建的图像标示符。

Tip

如已启用fopen 包装器，在此函数中， URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议，注意其用法及其可提供的预定义变量。

参数

filename

WebP 图像文件路径。

返回值

成功后返回图象资源,失败后返回 FALSE 。

范例

Example #1 Convert an WebP image to a jpeg image using imagecreatefromwebp()

<?php
// 加载 WebP 文件
$im = imagecreatefromwebp('./example.webp');

// 以 100% 的质量转换成 jpeg 格式
imagejpeg($im, './example.jpeg', 100);
imagedestroy($im);
?>

imagecreatefromwbmp
imagecreatefromxbm
GD 和图像处理 函数


由文件或 URL 创建一个新图象。

imagecreatefromwebp
imagecreatefromxpm
GD 和图像处理 函数
PHP Manual

imagecreatefromxbm

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

imagecreatefromxbm — 由文件或 URL 创建一个新图象。

说明

resource imagecreatefromxbm ( string $filename )

imagecreatefromxbm() 返回一图像标识符，代表了从给定的文件名取得的图像。

Tip

如已启用fopen 包装器，在此函数中， URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议，注意其用法及其可提供的预定义变量。

Warning

Windows 版本的 PHP 在 4.3.0 版之前不支持通过此函数访问远程文件，即使已经启用 allow_url_fopen.

参数

filename

Path to the XBM image.

返回值

成功后返回图象资源,失败后返回 FALSE 。

范例

Example #1 Convert an XBM image to a png image using imagecreatefromxbm()

<?php
// Load the xbm file
$xbm = imagecreatefromxbm('./example.xbm');

// Convert it to a png file
imagepng($xbm, './example.png');
imagedestroy($xbm);
?>

注释

Warning

Windows 版本的 PHP 在 4.3.0 版之前不支持通过此函数访问远程文件，即使已经启用 allow_url_fopen.

imagecreatefromwebp
imagecreatefromxpm
GD 和图像处理 函数


由文件或 URL 创建一个新图象。

imagecreatefromxbm
imagecreatetruecolor
GD 和图像处理 函数
PHP Manual

imagecreatefromxpm

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

imagecreatefromxpm — 由文件或 URL 创建一个新图象。

说明

resource imagecreatefromxpm ( string $filename )

imagecreatefromxpm() 返回一图像标识符，代表了从给定的文件名取得的图像。

Note: 此函数仅在与 GD 库捆绑编译的 PHP 版本中可用。

Tip

如已启用fopen 包装器，在此函数中， URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议，注意其用法及其可提供的预定义变量。

Note: 此函数未在 Windows 平台下实现。

参数

filename

Path to the XPM image.

返回值

成功后返回图象资源,失败后返回 FALSE 。

范例

Example #1 Creating an image instance using imagecreatefromxpm()

<?php
// Check for XPM support
if(!(imagetypes() & IMG_XPM))
{
    die('Support for xpm was not found!');
}

// Create the image instance
$xpm = imagecreatefromxpm('./example.xpm');

// Do image operations here

// PHP has no support for writing xpm images
// so in this case we save the image as a
// jpeg file with 100% quality
imagejpeg($xpm, './example.jpg', 100);
imagedestroy($xpm);
?>

返回值

Note: 此函数仅在与 GD 库捆绑编译的 PHP 版本中可用。

Note: 此函数未在 Windows 平台下实现。

imagecreatefromxbm
imagecreatetruecolor
GD 和图像处理 函数


新建一个真彩色图像

imagecreatefromxpm
imagecrop
GD 和图像处理 函数
PHP Manual

imagecreatetruecolor

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

imagecreatetruecolor — 新建一个真彩色图像

说明

resource imagecreatetruecolor ( int $width , int $height )

imagecreatetruecolor() 返回一个图像标识符，代表了一幅大小为 x_size 和 y_size 的黑色图像。

是否定义了本函数取决于 PHP 和 GD 的版本。从 PHP 4.0.6 到 4.1.x 只要加载了 GD 模块本函数一直存在，但是在没有安装 GD2 的时候调用，PHP 将发出致命错误并退出。在 PHP 4.2.x 中此行为改为发出警告而不是错误。其它版本只在安装了正确的 GD 版本时定义了本函数。

参数

width

图像宽度。

height

图像高度。

返回值

成功后返回图象资源,失败后返回 FALSE 。

范例

Example #1 新建一个新的 GD 图像流并输出图像

<?php
header ('Content-Type: image/png');
$im = @imagecreatetruecolor(120, 20)
      or die('Cannot Initialize new GD image stream');
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  'A Simple Text String', $text_color);
imagepng($im);
imagedestroy($im);
?>

以上例程的输出类似于：

例子的输出： 新建一个新的 GD 图像流并输出图像

注释

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

参见

  • imagedestroy() - 销毁一图像
  • imagecreate() - 新建一个基于调色板的图像

imagecreatefromxpm
imagecrop
GD 和图像处理 函数


Crop an image to the given rectangle

imagecreatetruecolor
imagecropauto
GD 和图像处理 函数
PHP Manual

imagecrop

(PHP 5 >= 5.5.0, PHP 7)

imagecrop — Crop an image to the given rectangle

说明

resource imagecrop ( resource $image , array $rect )

Crops an image to the given rectangular area and returns the resulting image. The given image is not modified.

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

rect

The cropping rectangle as array with keys x, y, width and height.

返回值

Return cropped image resource on success 或者在失败时返回 FALSE.

范例

Example #1 imagecrop() example

This example shows how to crop an image to a square area.

<?php
$im = imagecreatefrompng('example.png');
$size = min(imagesx($im), imagesy($im));
$im2 = imagecrop($im, ['x' => 0, 'y' => 0, 'width' => $size, 'height' => $size]);
if ($im2 !== FALSE) {
    imagepng($im2, 'example-cropped.png');
}
?>

参见

  • imagecropauto() - Crop an image automatically using one of the available modes
imagecreatetruecolor
imagecropauto
GD 和图像处理 函数


Crop an image automatically using one of the available modes

imagecrop
imagedashedline
GD 和图像处理 函数
PHP Manual

imagecropauto

(PHP 5 >= 5.5.0, PHP 7)

imagecropauto — Crop an image automatically using one of the available modes

说明

resource imagecropauto ( resource $image [, int $mode = -1 [, float $threshold = .5 [, int $color = -1 ]]] )

Automatically crops an image according to the given mode.

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

mode

One of the following constants:

IMG_CROP_DEFAULT
Attempts to use IMG_CROP_TRANSPARENT and if it fails it falls back to IMG_CROP_SIDES.
IMG_CROP_TRANSPARENT
Crops out a transparent background.
IMG_CROP_BLACK
Crops out a black background.
IMG_CROP_WHITE
Crops out a white background.
IMG_CROP_SIDES
Uses the 4 corners of the image to attempt to detect the background to crop.
IMG_CROP_THRESHOLD
Crops an image using the given threshold and color.
threshold

Specifies the tolerance in percent to be used while comparing the image color and the color to crop. The method used to calculate the color difference is based on the color distance in the RGB(a) cube.

Used only in IMG_CROP_THRESHOLD mode.

color

Either an RGB color value or a palette index.

Used only in IMG_CROP_THRESHOLD mode.

返回值

Returns a cropped image resource on success 或者在失败时返回 FALSE. If no cropping would occur, or the complete image would be cropped, that is treated as failure, i.e. imagecrop() returns FALSE.

范例

Example #1 Proper handling of auto-cropping

As noted in the return value section, imagecropauto() returns FALSE when there is either nothing to crop or the whole image would be cropped. In this example we have an image resource $im which should be automatically cropped only if there is something to crop; otherwise we want to proceed with the original image.

<?php
$cropped = imagecropauto($im, IMG_CROP_DEFAULT);
if ($cropped !== false) { // in case a new image resource was returned
    imagedestroy($im);    // we destroy the original image
    $im = $cropped;       // and assign the cropped image to $im
}
?>

参见

  • imagecrop() - Crop an image to the given rectangle
imagecrop
imagedashedline
GD 和图像处理 函数


画一虚线

imagecropauto
imagedestroy
GD 和图像处理 函数
PHP Manual

imagedashedline

(PHP 4, PHP 5, PHP 7)

imagedashedline — 画一虚线

说明

bool imagedashedline ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color )

反对使用本函数。应该用 imagesetstyle() 和 imageline() 的组合替代之。

imagecropauto
imagedestroy
GD 和图像处理 函数


销毁一图像

imagedashedline
imageellipse
GD 和图像处理 函数
PHP Manual

imagedestroy

(PHP 4, PHP 5, PHP 7)

imagedestroy — 销毁一图像

说明

bool imagedestroy ( resource $image )

imagedestroy() 释放与 image 关联的内存。image 是由图像创建函数返回的图像标识符，例如 imagecreatetruecolor()。

imagedashedline
imageellipse
GD 和图像处理 函数


画一个椭圆

imagedestroy
imagefill
GD 和图像处理 函数
PHP Manual

imageellipse

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

imageellipse — 画一个椭圆

说明

bool imageellipse ( resource $image , int $cx , int $cy , int $width , int $height , int $color )

在指定的坐标上画一个椭圆。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

cx

中间的 X 坐标。

cy

中间的 Y 坐标。

width

椭圆的宽度。

height

椭圆的高度。

color

椭圆的颜色。颜色标识符由 imagecolorallocate() 创建。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 imageellipse() 例子

<?php

// 新建一个空白图像
$image = imagecreatetruecolor(400, 300);

// 填充背景色
$bg = imagecolorallocate($image, 0, 0, 0);

// 选择椭圆的颜色
$col_ellipse = imagecolorallocate($image, 255, 255, 255);

// 画一个椭圆
imageellipse($image, 200, 150, 300, 200, $col_ellipse);

// 输出图像
header("Content-type: image/png");
imagepng($image);

?>

以上例程的输出类似于：

注释

Note:

本函数需要 GD 2.0.2 或更高版本。

参见

  • imagefilledellipse() - 画一椭圆并填充
  • imagearc() - 画椭圆弧

imagedestroy
imagefill
GD 和图像处理 函数


区域填充

imageellipse
imagefilledarc
GD 和图像处理 函数
PHP Manual

imagefill

(PHP 4, PHP 5, PHP 7)

imagefill — 区域填充

说明

bool imagefill ( resource $image , int $x , int $y , int $color )

imagefill() 在 image 图像的坐标 x，y（图像左上角为 0, 0）处用 color 颜色执行区域填充（即与 x, y 点颜色相同且相邻的点都会被填充）。

Example #1 imagefill() 例子

<?php

$im = imagecreatetruecolor(100, 100);

// 将背景设为红色
$red = imagecolorallocate($im, 255, 0, 0);
imagefill($im, 0, 0, $red);

header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>

参见 imagecolorallocate()。

imageellipse
imagefilledarc
GD 和图像处理 函数


画一椭圆弧且填充

imagefill
imagefilledellipse
GD 和图像处理 函数
PHP Manual

imagefilledarc

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

imagefilledarc — 画一椭圆弧且填充

说明

bool imagefilledarc ( resource $image , int $cx , int $cy , int $width , int $height , int $start , int $end , int $color , int $style )

在指定的 image 上画一椭圆弧且填充。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

cx

中间的 x 坐标。

cy

中间的 y 坐标。

width

椭圆弧的宽度。

height

椭圆弧的高度。

start

起点角度。

end

终点角度。 0° is located at the three-o'clock position, and the arc is drawn clockwise.

color

imagecolorallocate() 创建的颜色标识符。

style

值可以是下列值的按位或（OR）：

  1. IMG_ARC_PIE
  2. IMG_ARC_CHORD
  3. IMG_ARC_NOFILL
  4. IMG_ARC_EDGED
IMG_ARC_PIE 和 IMG_ARC_CHORD 是互斥的；IMG_ARC_CHORD 只是用直线连接了起始和结束点，IMG_ARC_PIE 则产生圆形边界。IMG_ARC_NOFILL 指明弧或弦只有轮廓，不填充。IMG_ARC_EDGED 指明用直线将起始和结束点与中心点相连，和 IMG_ARC_NOFILL 一起使用是画饼状图轮廓的好方法（而不用填充）。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 创建一 3D 效果的饼状图

<?php

// 创建图像
$image = imagecreatetruecolor(100, 100);

// 分配一些颜色
$white    = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
$gray     = imagecolorallocate($image, 0xC0, 0xC0, 0xC0);
$darkgray = imagecolorallocate($image, 0x90, 0x90, 0x90);
$navy     = imagecolorallocate($image, 0x00, 0x00, 0x80);
$darknavy = imagecolorallocate($image, 0x00, 0x00, 0x50);
$red      = imagecolorallocate($image, 0xFF, 0x00, 0x00);
$darkred  = imagecolorallocate($image, 0x90, 0x00, 0x00);

// 创建 3D 效果
for ($i = 60; $i > 50; $i--) {
   imagefilledarc($image, 50, $i, 100, 50, 0, 45, $darknavy, IMG_ARC_PIE);
   imagefilledarc($image, 50, $i, 100, 50, 45, 75 , $darkgray, IMG_ARC_PIE);
   imagefilledarc($image, 50, $i, 100, 50, 75, 360 , $darkred, IMG_ARC_PIE);
}

imagefilledarc($image, 50, 50, 100, 50, 0, 45, $navy, IMG_ARC_PIE);
imagefilledarc($image, 50, 50, 100, 50, 45, 75 , $gray, IMG_ARC_PIE);
imagefilledarc($image, 50, 50, 100, 50, 75, 360 , $red, IMG_ARC_PIE);

// 输出图像
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>

以上例程的输出类似于：

例子输出：创建一 3D 效果的饼状图

注释

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

imagefill
imagefilledellipse
GD 和图像处理 函数


画一椭圆并填充

imagefilledarc
imagefilledpolygon
GD 和图像处理 函数
PHP Manual

imagefilledellipse

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

imagefilledellipse — 画一椭圆并填充

说明

bool imagefilledellipse ( resource $image , int $cx , int $cy , int $width , int $height , int $color )

画一椭圆并填充到指定的 image。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

cx

中央的 x 坐标。

cy

中央的 y 坐标。

width

椭圆的宽度。

height

椭圆的高度。

color

要填充的颜色。颜色标识由函数 imagecolorallocate() 创建。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 imagefilledellipse() 例子

<?php

// create a blank image
$image = imagecreatetruecolor(400, 300);

// fill the background color
$bg = imagecolorallocate($image, 0, 0, 0);

// choose a color for the ellipse
$col_ellipse = imagecolorallocate($image, 255, 255, 255);

// draw the white ellipse
imagefilledellipse($image, 200, 150, 300, 200, $col_ellipse);

// output the picture
header("Content-type: image/png");
imagepng($image);

?>

以上例程的输出类似于：

注释

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

参见

  • imageellipse() - 画一个椭圆
  • imagefilledarc() - 画一椭圆弧且填充

imagefilledarc
imagefilledpolygon
GD 和图像处理 函数


画一多边形并填充

imagefilledellipse
imagefilledrectangle
GD 和图像处理 函数
PHP Manual

imagefilledpolygon

(PHP 4, PHP 5, PHP 7)

imagefilledpolygon — 画一多边形并填充

说明

bool imagefilledpolygon ( resource $image , array $points , int $num_points , int $color )

imagefilledpolygon() 在 image 图像中画一个填充了的多边形。

points 参数是一个按顺序包含有多边形各顶点的 x 和 y 坐标的数组。

num_points 参数是顶点的总数，必须大于 3。

Example #1 imagefilledpolygon() 例子

<?php
// 建立多边形各顶点坐标的数组
$values = array(
            40,  50,  // Point 1 (x, y)
            20,  240, // Point 2 (x, y)
            60,  60,  // Point 3 (x, y)
            240, 20,  // Point 4 (x, y)
            50,  40,  // Point 5 (x, y)
            10,  10   // Point 6 (x, y)
            );

// 创建图像
$image = imagecreatetruecolor(250, 250);

// 设定颜色
$bg   = imagecolorallocate($image, 200, 200, 200);
$blue = imagecolorallocate($image, 0, 0, 255);

// 画一个多边形
imagefilledpolygon($image, $values, 6, $blue);

// 输出图像
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>

imagefilledellipse
imagefilledrectangle
GD 和图像处理 函数


画一矩形并填充

imagefilledpolygon
imagefilltoborder
GD 和图像处理 函数
PHP Manual

imagefilledrectangle

(PHP 4, PHP 5, PHP 7)

imagefilledrectangle — 画一矩形并填充

说明

bool imagefilledrectangle ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color )

imagefilledrectangle() 在 image 图像中画一个用 color 颜色填充了的矩形，其左上角坐标为 x1，y1，右下角坐标为 x2，y2。0, 0 是图像的最左上角。

imagefilledpolygon
imagefilltoborder
GD 和图像处理 函数


区域填充到指定颜色的边界为止

imagefilledrectangle
imagefilter
GD 和图像处理 函数
PHP Manual

imagefilltoborder

(PHP 4, PHP 5, PHP 7)

imagefilltoborder — 区域填充到指定颜色的边界为止

说明

bool imagefilltoborder ( resource $image , int $x , int $y , int $border , int $color )

imagefilltoborder() 从 x，y（图像左上角为 0, 0）点开始用 color 颜色执行区域填充，直到碰到颜色为 border 的边界为止。【注：边界内的所有颜色都会被填充。如果指定的边界色和该点颜色相同，则没有填充。如果图像中没有该边界色，则整幅图像都会被填充。】

imagefilledrectangle
imagefilter
GD 和图像处理 函数


对图像使用过滤器

imagefilltoborder
imageflip
GD 和图像处理 函数
PHP Manual

imagefilter

(PHP 5, PHP 7)

imagefilter — 对图像使用过滤器

说明

bool imagefilter ( resource $src_im , int $filtertype [, int $arg1 [, int $arg2 [, int $arg3 ]]] )

imagefilter() 把过滤器 filtertype 应用到图像上，在需要时使用 arg1，arg2 和 arg3。

filtertype 可以是下列中的一个：

  • IMG_FILTER_NEGATE：将图像中所有颜色反转。
  • IMG_FILTER_GRAYSCALE：将图像转换为灰度的。
  • IMG_FILTER_BRIGHTNESS：改变图像的亮度。用 arg1 设定亮度级别。
  • IMG_FILTER_CONTRAST：改变图像的对比度。用 arg1 设定对比度级别。
  • IMG_FILTER_COLORIZE：与 IMG_FILTER_GRAYSCALE 类似，不过可以指定颜色。用 arg1，arg2 和 arg3 分别指定 red，blue 和 green。每种颜色范围是 0 到 255。
  • IMG_FILTER_EDGEDETECT：用边缘检测来突出图像的边缘。
  • IMG_FILTER_EMBOSS：使图像浮雕化。
  • IMG_FILTER_GAUSSIAN_BLUR：用高斯算法模糊图像。
  • IMG_FILTER_SELECTIVE_BLUR：模糊图像。
  • IMG_FILTER_MEAN_REMOVAL：用平均移除法来达到轮廓效果。
  • IMG_FILTER_SMOOTH：使图像更柔滑。用 arg1 设定柔滑级别。

Note: 此函数仅在与 GD 库捆绑编译的 PHP 版本中可用。

成功时返回 TRUE， 或者在失败时返回 FALSE。

Example #1 imagefilter() 灰度例子

<?php
$im = imagecreatefrompng('dave.png');
if ($im && imagefilter($im, IMG_FILTER_GRAYSCALE)) {
    echo 'Image converted to grayscale.';
    imagepng($im, 'dave.png');
} else {
    echo 'Conversion to grayscale failed.';
}

imagedestroy($im);
?>

Example #2 imagefilter() 亮度例子

<?php
$im = imagecreatefrompng('sean.png');
if ($im && imagefilter($im, IMG_FILTER_BRIGHTNESS, 20)) {
    echo 'Image brightness changed.';
    imagepng($im, 'sean.png');
} else {
    echo 'Image brightness change failed.';
}

imagedestroy($im);
?>

Example #3 imagefilter() 上彩例子

<?php
$im = imagecreatefrompng('philip.png');

/* R, G, B, so 0, 255, 0 is green */
if ($im && imagefilter($im, IMG_FILTER_COLORIZE, 0, 255, 0)) {
    echo 'Image successfully shaded green.';
    imagepng($im, 'philip.png');
} else {
    echo 'Green shading failed.';
}

imagedestroy($im);
?>

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

filtertype

filtertype can be one of the following:

  • IMG_FILTER_NEGATE: Reverses all colors of the image.
  • IMG_FILTER_GRAYSCALE: Converts the image into grayscale.
  • IMG_FILTER_BRIGHTNESS: Changes the brightness of the image. Use arg1 to set the level of brightness.
  • IMG_FILTER_CONTRAST: Changes the contrast of the image. Use arg1 to set the level of contrast.
  • IMG_FILTER_COLORIZE: Like IMG_FILTER_GRAYSCALE, except you can specify the color. Use arg1, arg2 and arg3 in the form of red, blue, green and arg4 for the alpha channel. The range for each color is 0 to 255.
  • IMG_FILTER_EDGEDETECT: Uses edge detection to highlight the edges in the image.
  • IMG_FILTER_EMBOSS: Embosses the image.
  • IMG_FILTER_GAUSSIAN_BLUR: Blurs the image using the Gaussian method.
  • IMG_FILTER_SELECTIVE_BLUR: Blurs the image.
  • IMG_FILTER_MEAN_REMOVAL: Uses mean removal to achieve a "sketchy" effect.
  • IMG_FILTER_SMOOTH: Makes the image smoother. Use arg1 to set the level of smoothness.
  • IMG_FILTER_PIXELATE: Applies pixelation effect to the image, use arg1 to set the block size and arg2 to set the pixelation effect mode.

arg1

  • IMG_FILTER_BRIGHTNESS: Brightness level.
  • IMG_FILTER_CONTRAST: Contrast level.
  • IMG_FILTER_COLORIZE: 红色成分的值。
  • IMG_FILTER_SMOOTH: Smoothness level.
  • IMG_FILTER_PIXELATE: Block size in pixels.

arg2

  • IMG_FILTER_COLORIZE: 绿色成分的值。
  • IMG_FILTER_PIXELATE: Whether to use advanced pixelation effect or not (defaults to FALSE).

arg3

  • IMG_FILTER_COLORIZE: 蓝色成分的值。

arg4

  • IMG_FILTER_COLORIZE: Alpha channel, A value between 0 and 127. 0 indicates completely opaque while 127 indicates completely transparent.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.3.0 | Pixelation support (IMG_FILTER_PIXELATE) was added.
5.2.5 | Alpha support for IMG_FILTER_COLORIZE was added.

范例

Example #4 imagefilter() grayscale example

<?php
$im = imagecreatefrompng('dave.png');

if($im && imagefilter($im, IMG_FILTER_GRAYSCALE))
{
    echo 'Image converted to grayscale.';

    imagepng($im, 'dave.png');
}
else
{
    echo 'Conversion to grayscale failed.';
}

imagedestroy($im);
?>

Example #5 imagefilter() brightness example

<?php
$im = imagecreatefrompng('sean.png');

if($im && imagefilter($im, IMG_FILTER_BRIGHTNESS, 20))
{
    echo 'Image brightness changed.';

    imagepng($im, 'sean.png');
    imagedestroy($im);
}
else
{
    echo 'Image brightness change failed.';
}
?>

Example #6 imagefilter() colorize example

<?php
$im = imagecreatefrompng('philip.png');

/* R, G, B, so 0, 255, 0 is green */
if($im && imagefilter($im, IMG_FILTER_COLORIZE, 0, 255, 0))
{
    echo 'Image successfully shaded green.';

    imagepng($im, 'philip.png');
    imagedestroy($im);
}
else
{
    echo 'Green shading failed.';
}
?>

Example #7 imagefilter() negate example

<?php
// Define our negate function so its portable for
// php versions without imagefilter()
function negate($im)
{
    if(function_exists('imagefilter'))
    {
        return imagefilter($im, IMG_FILTER_NEGATE);
    }

    for($x = 0; $x < imagesx($im); ++$x)
    {
        for($y = 0; $y < imagesy($im); ++$y)
        {
            $index = imagecolorat($im, $x, $y);
            $rgb = imagecolorsforindex($index);
            $color = imagecolorallocate($im, 255 - $rgb['red'], 255 - $rgb['green'], 255 - $rgb['blue']);

            imagesetpixel($im, $x, $y, $color);
        }
    }

    return(true);
}

$im = imagecreatefromjpeg('kalle.jpg');

if($im && negate($im))
{
    echo 'Image successfully converted to negative colors.';

    imagejpeg($im, 'kalle.jpg', 100);
    imagedestroy($im);
}
else
{
    echo 'Converting to negative colors failed.';
}
?>

Example #8 imagefilter() pixelate example

<?php
// Load the PHP logo, we need to create two instances
// to show the differences
$logo1 = imagecreatefrompng('./php.png');
$logo2 = imagecreatefrompng('./php.png');

// Create the image instance we want to show the
// differences on
$output = imagecreatetruecolor(imagesx($logo1) * 2, imagesy($logo1));

// Apply pixelation to each instance, with a block
// size of 3
imagefilter($logo1, IMG_FILTER_PIXELATE, 3);
imagefilter($logo2, IMG_FILTER_PIXELATE, 3, true);

// Merge the differences onto the output image
imagecopy($output, $logo1, 0, 0, 0, 0, imagesx($logo1) - 1, imagesy($logo1) - 1);
imagecopy($output, $logo2, imagesx($logo2), 0, 0, 0, imagesx($logo2) - 1, imagesy($logo2) - 1);
imagedestroy($logo1);
imagedestroy($logo2);

// Output the differences
header('Content-Type: image/png');
imagepng($output);
imagedestroy($output);
?>

以上例程的输出类似于：

Output of example : imagefilter() pixelate

注释

Note: 此函数仅在与 GD 库捆绑编译的 PHP 版本中可用。

参见

  • imageconvolution() - 用系数 div 和 offset 申请一个 3x3 的卷积矩阵

imagefilltoborder
imageflip
GD 和图像处理 函数


Flips an image using a given mode

imagefilter
imagefontheight
GD 和图像处理 函数
PHP Manual

imageflip

(PHP 5 >= 5.5.0, PHP 7)

imageflip — Flips an image using a given mode

说明

bool imageflip ( resource $image , int $mode )

Flips the image image using the given mode.

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

mode

Flip mode, this can be one of the IMG_FLIP_* constants:

Constant | Meaning
IMG_FLIP_HORIZONTAL | Flips the image horizontally.
IMG_FLIP_VERTICAL | Flips the image vertically.
IMG_FLIP_BOTH | Flips the image both horizontally and vertically.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Flips an image vertically

This example uses the IMG_FLIP_VERTICAL constant.

<?php
// File
$filename = 'phplogo.png';

// Content type
header('Content-type: image/png');

// Load
$im = imagecreatefrompng($filename);

// Flip it vertically
imageflip($im, IMG_FLIP_VERTICAL);

// Output
imagejpeg($im);
imagedestroy($im);
?>

以上例程的输出类似于：

Output of example: Vertically flipped image

Example #2 Flips the image horizontally

This example uses the IMG_FLIP_HORIZONTAL constant.

<?php
// File
$filename = 'phplogo.png';

// Content type
header('Content-type: image/png');

// Load
$im = imagecreatefrompng($filename);

// Flip it horizontally
imageflip($im, IMG_FLIP_HORIZONTAL);

// Output
imagejpeg($im);
imagedestroy($im);
?>

以上例程的输出类似于：

Output of example: Horizontally flipped image

imagefilter
imagefontheight
GD 和图像处理 函数


取得字体高度

imageflip
imagefontwidth
GD 和图像处理 函数
PHP Manual

imagefontheight

(PHP 4, PHP 5, PHP 7)

imagefontheight — 取得字体高度

说明

int imagefontheight ( int $font )

返回指定字体一个字符高度的像素值。

参见 imagefontwidth() 和 imageloadfont()。

imageflip
imagefontwidth
GD 和图像处理 函数


取得字体宽度

imagefontheight
imageftbbox
GD 和图像处理 函数
PHP Manual

imagefontwidth

(PHP 4, PHP 5, PHP 7)

imagefontwidth — 取得字体宽度

说明

int imagefontwidth ( int $font )

返回指定字体一个字符宽度的像素值。

参见 imagefontheight() 和 imageloadfont()。

imagefontheight
imageftbbox
GD 和图像处理 函数


给出一个使用 FreeType 2 字体的文本框

imagefontwidth
imagefttext
GD 和图像处理 函数
PHP Manual

imageftbbox

(PHP 4 >= 4.0.7, PHP 5, PHP 7)

imageftbbox — 给出一个使用 FreeType 2 字体的文本框

说明

array imageftbbox ( float $size , float $angle , string $fontfile , string $text [, array $extrainfo ] )

This function calculates and returns the bounding box in pixels for a FreeType text.

参数

size

字体的尺寸。根据 GD 的版本，为像素尺寸（GD1）或点（磅）尺寸（GD2）。

angle

Angle in degrees in which text will be measured.

fontfile

The name of the TrueType font file (can be a URL). Depending on which version of the GD library that PHP is using, it may attempt to search for files that do not begin with a leading '/' by appending '.ttf' to the filename and searching along a library-defined font path.

text

The string to be measured.

extrainfo

Possible array indexes for extrainfo
Key | Type | Meaning
linespacing | float | Defines drawing linespacing

返回值

imageftbbox() returns an array with 8 elements representing four points making the bounding box of the text:

0 | lower left corner, X position
1 | lower left corner, Y position
2 | lower right corner, X position
3 | lower right corner, Y position
4 | upper right corner, X position
5 | upper right corner, Y position
6 | upper left corner, X position
7 | upper left corner, Y position

The points are relative to the text regardless of the angle, so "upper left" means in the top left-hand corner seeing the text horizontally.

范例

Example #1 imageftbbox() example

<?php
// Create a 300x150 image
$im = imagecreatetruecolor(300, 150);
$black = imagecolorallocate($im, 0, 0, 0);
$white = imagecolorallocate($im, 255, 255, 255);

// Set the background to be white
imagefilledrectangle($im, 0, 0, 299, 299, $white);

// Path to our font file
$font = './arial.ttf';

// First we create our bounding box
$bbox = imageftbbox(10, 0, $font, 'The PHP Documentation Group');

// This is our cordinates for X and Y
$x = $bbox[0] + (imagesx($im) / 2) - ($bbox[4] / 2) - 5;
$y = $bbox[1] + (imagesy($im) / 2) - ($bbox[5] / 2) - 5;

imagefttext($im, 10, 0, $x, $y, $black, $font, 'The PHP Documentation Group');

// Output to browser
header('Content-Type: image/png');

imagepng($im);
imagedestroy($im);
?>

注释

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

Note: 此函数仅在 PHP 编译时加入 freetype 支持时有效（--with-freetype-dir=DIR ）。

更新日志

版本 | 说明
4.3.5 | extrainfo was made optional.

imagefontwidth
imagefttext
GD 和图像处理 函数


使用 FreeType 2 字体将文本写入图像

imageftbbox
imagegammacorrect
GD 和图像处理 函数
PHP Manual

imagefttext

(PHP 4 >= 4.0.7, PHP 5, PHP 7)

imagefttext — 使用 FreeType 2 字体将文本写入图像

说明

array imagefttext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text [, array $extrainfo ] )

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

size

The font size to use in points.

angle

The angle in degrees, with 0 degrees being left-to-right reading text. Higher values represent a counter-clockwise rotation. For example, a value of 90 would result in bottom-to-top reading text.

x

The coordinates given by x and y will define the basepoint of the first character (roughly the lower-left corner of the character). This is different from the imagestring(), where x and y define the upper-left corner of the first character. For example, "top left" is 0, 0.

y

The y-ordinate. This sets the position of the fonts baseline, not the very bottom of the character.

color

The index of the desired color for the text, see imagecolorexact().

fontfile

The path to the TrueType font you wish to use.

Depending on which version of the GD library PHP is using, when fontfile does not begin with a leading / then .ttf will be appended to the filename and the library will attempt to search for that filename along a library-defined font path.

When using versions of the GD library lower than 2.0.18, a space character, rather than a semicolon, was used as the 'path separator' for different font files. Unintentional use of this feature will result in the warning message: Warning: Could not find/open font. For these affected versions, the only solution is moving the font to a path which does not contain spaces.

In many cases where a font resides in the same directory as the script using it the following trick will alleviate any include problems.

<?php
// Set the enviroment variable for GD
putenv('GDFONTPATH=' . realpath('.'));

// Name the font to be used (note the lack of the .ttf extension)
$font = 'SomeFont';
?>

text

Text to be inserted into image.

extrainfo

Possible array indexes for extrainfo
Key | Type | Meaning
linespacing | float | Defines drawing linespacing

返回值

This function returns an array defining the four points of the box, starting in the lower left and moving counter-clockwise:

0 | lower left x-coordinate
1 | lower left y-coordinate
2 | lower right x-coordinate
3 | lower right y-coordinate
4 | upper right x-coordinate
5 | upper right y-coordinate
6 | upper left x-coordinate
7 | upper left y-coordinate

范例

Example #1 imagefttext() example

<?php
// Create a 300x100 image
$im = imagecreatetruecolor(300, 100);
$red = imagecolorallocate($im, 0xFF, 0x00, 0x00);
$black = imagecolorallocate($im, 0x00, 0x00, 0x00);

// Make the background red
imagefilledrectangle($im, 0, 0, 299, 99, $red);

// Path to our ttf font file
$font_file = './arial.ttf';

// Draw the text 'PHP Manual' using font size 13
imagefttext($im, 13, 0, 105, 55, $black, $font_file, 'PHP Manual');

// Output image to the browser
header('Content-Type: image/png');

imagepng($im);
imagedestroy($im);
?>

注释

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

Note: 此函数仅在 PHP 编译时加入 freetype 支持时有效（--with-freetype-dir=DIR ）。

更新日志

版本 | 说明
4.3.5 | extrainfo was made optional.

imageftbbox
imagegammacorrect
GD 和图像处理 函数


对 GD 图像应用 gamma 修正

imagefttext
imagegd2
GD 和图像处理 函数
PHP Manual

imagegammacorrect

(PHP 4, PHP 5, PHP 7)

imagegammacorrect — 对 GD 图像应用 gamma 修正

说明

bool imagegammacorrect ( resource $image , float $inputgamma , float $outputgamma )

imagegammacorrect() 函数用给定的输入 gamma 值 inputgamma 和输出 gamma 值 outputgamma 对一幅 GD 图像流（image）应用 gamma 修正。

imagefttext
imagegd2
GD 和图像处理 函数


将 GD2 图像输出到浏览器或文件

imagegammacorrect
imagegd
GD 和图像处理 函数
PHP Manual

imagegd2

(PHP 4 >= 4.0.7, PHP 5, PHP 7)

imagegd2 — 将 GD2 图像输出到浏览器或文件

说明

bool imagegd2 ( resource $image [, string $filename [, int $chunk_size [, int $type = IMG_GD2_RAW ]]] )

imagegd2() 将一个 GD 图像输出到 filename。image

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

filename

文件保存的路径，如果未设置或为 NULL，将会直接输出原始图象流。

chunk_size

Chunk size.

type

可以是 IMG_GD2_RAW 或 IMG_GD2_COMPRESSED。默认为 IMG_GD2_RAW。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 输出一个 GD2 图像

<?php
// Create a blank image and add some text
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  "A Simple Text String", $text_color);

// Output the image
imagegd2($im);

// Free up memory
imagedestroy($im);
?>

Example #2 保存 GD2 图像

<?php
// Create a blank image and add some text
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  "A Simple Text String", $text_color);

// Save the gd2 image
// The file format for GD2 images is .gd2, see http://www.libgd.org/GdFileFormats
imagegd2($im, 'simple.gd2');

// Free up memory
imagedestroy($im);
?>

注释

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

Note:

GD2 格式一般是用来加载图像中的一部分时更快。注意 GD2 格式只能用于兼容于 GD2 的应用程序。

更新日志

版本 | 说明
4.3.2 | 添加了参数 chunk_size 和 type。

参见

  • imagegd() - 将 GD 图像输出到浏览器或文件

imagegammacorrect
imagegd
GD 和图像处理 函数


将 GD 图像输出到浏览器或文件

imagegd2
imagegetclip
GD 和图像处理 函数
PHP Manual

imagegd

(PHP 4 >= 4.0.7, PHP 5, PHP 7)

imagegd — 将 GD 图像输出到浏览器或文件

说明

bool imagegd ( resource $image [, string $filename ] )

imagegd() 将一个 GD 图像输出到 filename。image 参数是由 imagecreatetruecolor() 函数返回的。

filename 参数为可选项，如果为空，则原始图像流会被直接输出。

Note:

GD 格式一般是用来加载图像中的一部分时更快。注意 GD 格式只能用于兼容于 GD 的应用程序。

参见 imagegd2()。

imagegd2
imagegetclip
GD 和图像处理 函数


Get the clipping rectangle

imagegd
imagegif
GD 和图像处理 函数
PHP Manual

imagegetclip

(PHP 7.2)

imagegetclip — Get the clipping rectangle

说明

array imagegetclip ( resource $im )

imagegetclip() retrieves the current clipping rectangle, i.e. the area beyond which no pixels will be drawn.

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

返回值

The function returns an indexed array with the coordinates of the clipping rectangle which has the following entries:

  • x-coordinate of the upper left corner
  • y-coordinate of the upper left corner
  • x-coordinate of the lower right corner
  • y-coordinate of the lower right corner

范例

Example #1 imagegetclip() example

Setting and retrieving the clipping rectangle.

<?php
$im = imagecreate(100, 100);
imagesetclip($im, 10,10, 89,89);
print_r(imagegetclip($im));

以上例程会输出：

Array
(
    [0] => 10
    [1] => 10
    [2] => 89
    [3] => 89
)

参见

  • imagesetclip() - Set the clipping rectangle
imagegd
imagegif
GD 和图像处理 函数


输出图象到浏览器或文件。

imagegetclip
imagegrabscreen
GD 和图像处理 函数
PHP Manual

imagegif

(PHP 4, PHP 5, PHP 7)

imagegif — 输出图象到浏览器或文件。

说明

bool imagegif ( resource $image [, string $filename ] )

imagegif() 从 image 图像以 filename 为文件名创建一个 GIF 图像。image 参数是 imagecreate() 或 imagecreatefrom* 函数的返回值。

图像格式为 GIF87a。如果用了 imagecolortransparent() 使图像为透明，则其格式为 GIF89a。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

filename

文件保存的路径，如果未设置或为 NULL，将会直接输出原始图象流。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 使用 imagegif() 输出一个图像

<?php
// 创建新的图像实例
$im = imagecreatetruecolor(100, 100);

// 设置背景为白色
imagefilledrectangle($im, 0, 0, 99, 99, 0xFFFFFF);

//在图像上写字
imagestring($im, 3, 40, 20, 'GD Library', 0xFFBA00);

// 输出图像到浏览器
header('Content-Type: image/gif');

imagegif($im);
imagedestroy($im);
?>

Example #2 使用 imagegif() 将一个 PNG 转换成 GIF

<?php

// 载入 PNG
$png = imagecreatefrompng('./php.png');

// 以 GIF 保存图像
imagegif($png, './php.gif');

// 释放内存
imagedestroy($png);

// 完工
echo 'Converted PNG image to GIF with success!';
?>

注释

Note:

不过从 GD 库 1.6 起所有的 GIF 支持都移除了，并在版本 2.0.28 中加了回来。如果使用这些 版本之间的 GD 库时本函数不可用。 更多信息见 » GD Project 站点。

以下代码段通过自动检测 GD 支持的图像类型来写出移植性更好的 PHP 程序。用更灵活的代码替代了原来的 header("Content-type: image/gif"); imagegif($im);：

<?php
// 创建新的图像实例
$im = imagecreatetruecolor(100, 100);

// 在这里对图像进行一些操作

// 处理输出
if(function_exists('imagegif'))
{
    // 针对 GIF
    header('Content-Type: image/gif');

    imagegif($im);
}
elseif(function_exists('imagejpeg'))
{
    // 针对 JPEG
    header('Content-Type: image/jpeg');

    imagejpeg($im, NULL, 100);
}
elseif(function_exists('imagepng'))
{
    // 针对 PNG
    header('Content-Type: image/png');

    imagepng($im);
}
elseif(function_exists('imagewbmp'))
{
    // 针对 WBMP
    header('Content-Type: image/vnd.wap.wbmp');

    imagewbmp($im);
}
else
{
    imagedestroy($im);

    die('No image support in this PHP server');
}

// 如果发现图像是以上的格式之一，就从内存中释放
if($im)
{
    imagedestroy($im);
}
?>

Note:

自 PHP 3.0.18 和 4.0.2 起可以用 imagetypes() 函数代替 function_exists() 来检查是否支持某种图像格式：

<?php
if(imagetypes() & IMG_GIF)
{
    header('Content-Type: image/gif');
    imagegif($im);
}
elseif(imagetypes() & IMG_JPG)
{
    /* ... etc. */
}
?>

参见

  • imagepng() - 以 PNG 格式将图像输出到浏览器或文件
  • imagewbmp() - 以 WBMP 格式将图像输出到浏览器或文件
  • imagejpeg() - 输出图象到浏览器或文件。
  • imagetypes() - 返回当前 PHP 版本所支持的图像类型

imagegetclip
imagegrabscreen
GD 和图像处理 函数


Captures the whole screen

imagegif
imagegrabwindow
GD 和图像处理 函数
PHP Manual

imagegrabscreen

(PHP 5 >= 5.2.2, PHP 7)

imagegrabscreen — Captures the whole screen

说明

resource imagegrabscreen ( void )

Grabs a screenshot of the whole screen.

返回值

Returns an image resource identifier on success, FALSE on failure.

范例

Example #1 imagegrabscreen() example

This example demonstrates how to take a screenshot of the current screen and save it as a png image.

<?php
$im = imagegrabscreen();
imagepng($im, "myscreenshot.png");
imagedestroy($im);
?>

注释

Note:

This function is only available on Windows.

参见

  • imagegrabwindow() - Captures a window

imagegif
imagegrabwindow
GD 和图像处理 函数


Captures a window

imagegrabscreen
imageinterlace
GD 和图像处理 函数
PHP Manual

imagegrabwindow

(PHP 5 >= 5.2.2, PHP 7)

imagegrabwindow — Captures a window

说明

resource imagegrabwindow ( int $window_handle [, int $client_area = 0 ] )

Grabs a window or its client area using a windows handle (HWND property in COM instance)

参数

window_handle

The HWND window ID.

client_area

Include the client area of the application window.

返回值

Returns an image resource identifier on success, FALSE on failure.

错误／异常

E_NOTICE is issued if window_handle is invalid window handle. E_WARNING is issued if the Windows API is too old.

范例

Example #1 imagegrabwindow() example

Capture a window (IE for example)

<?php
$browser = new COM("InternetExplorer.Application");
$handle = $browser->HWND;
$browser->Visible = true;
$im = imagegrabwindow($handle);
$browser->Quit();
imagepng($im, "iesnap.png");
imagedestroy($im);
?>

Capture a window (IE for example) but with its content

<?php
$browser = new COM("InternetExplorer.Application");
$handle = $browser->HWND;
$browser->Visible = true;
$browser->Navigate("http://www.libgd.org");

/* Still working? */
while ($browser->Busy) {
    com_message_pump(4000);
}
$im = imagegrabwindow($handle, 0);
$browser->Quit();
imagepng($im, "iesnap.png");
imagedestroy($im);
?>

注释

Note:

This function is only available on Windows.

参见

  • imagegrabscreen() - Captures the whole screen

imagegrabscreen
imageinterlace
GD 和图像处理 函数


激活或禁止隔行扫描

imagegrabwindow
imageistruecolor
GD 和图像处理 函数
PHP Manual

imageinterlace

(PHP 4, PHP 5, PHP 7)

imageinterlace — 激活或禁止隔行扫描

说明

int imageinterlace ( resource $image [, int $interlace ] )

imageinterlace() 打开或关闭隔行扫描的比特标记。如果 interlace 为 1 则图像为隔行扫描的，如果 interlace 为 0 则图像为非隔行扫描的。

如果设定了隔行扫描比特标记而图像使用 JPEG 格式，则图像被创建为渐进式 JPEG。

本函数返回图像中是否设定了隔行扫描比特标记。

imagegrabwindow
imageistruecolor
GD 和图像处理 函数


检查图像是否为真彩色图像

imageinterlace
imagejpeg
GD 和图像处理 函数
PHP Manual

imageistruecolor

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

imageistruecolor — 检查图像是否为真彩色图像

说明

bool imageistruecolor ( resource $image )

imageistruecolor() 检查 image 图像是否为真彩色图像。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

返回值

如果 image 是真彩色图像返回 TRUE，否则返回 FALSE。

范例

Example #1 Simple detection of true color image instances using imageistruecolor()

<?php
// $im is an image instance

// Check if image is a true color image or not
if(!imageistruecolor($im))
{
    // Create a new true color image instance
    $tc = imagecreatetruecolor(imagesx($im), imagesy($im));

    imagecopy($tc, $im, 0, 0, 0, 0, imagesx($im), imagesy($im));
    imagedestroy($im);

    $im = $tc;
    $tc = NULL;
}

// Continue working with image instance
?>

注释

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

参见

  • imagecreatetruecolor() - 新建一个真彩色图像

imageinterlace
imagejpeg
GD 和图像处理 函数


输出图象到浏览器或文件。

imageistruecolor
imagelayereffect
GD 和图像处理 函数
PHP Manual

imagejpeg

(PHP 4, PHP 5, PHP 7)

imagejpeg — 输出图象到浏览器或文件。

说明

bool imagejpeg ( resource $image [, string $filename [, int $quality ]] )

imagejpeg() 从 image 图像以 filename 为文件名创建一个 JPEG 图像。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

filename

文件保存的路径，如果未设置或为 NULL，将会直接输出原始图象流。

如果要省略这个参数而提供 quality 参数，使用NULL。

quality

quality 为可选项，范围从 0（最差质量，文件更小）到 100（最佳质量，文件最大）。默认为 IJG 默认的质量值（大约 75）。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 输出 JPEG 图像

<?php
// 创键空白图像并添加一些文本
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  'A Simple Text String', $text_color);

// 设置内容类型标头 —— 这个例子里是 image/jpeg
header('Content-Type: image/jpeg');

// 输出图像
imagejpeg($im);

// 释放内存
imagedestroy($im);
?>

以上例程的输出类似于：

例子的输出：输出 JPEG 图像

Example #2 保存一副 JPEG 图像

<?php
// 创键空白图像并添加一些文本
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  'A Simple Text String', $text_color);

// 保存图像为 'simpletext.jpg'
imagejpeg($im, 'simpletext.jpg');

// 释放内存
imagedestroy($im);
?>

Example #3 以 75% 的图像质量输出图像

<?php
// 创键空白图像并添加一些文本
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  'A Simple Text String', $text_color);

// 设置内容类型标头 —— 这个例子里是 image/jpeg
header('Content-Type: image/jpeg');

// 使用 NULL 跳过 filename 参数，并设置图像质量为 75%
imagejpeg($im, NULL, 75);

// 释放内存
imagedestroy($im);
?>

注释

Note: JPEG 支持仅在 PHP 与 GD-1.8 或更高版本一起编译时可用。

Note:

如果想输出渐进式 JPEG，需要用 imageinterlace() 函数将隔行扫描比特置位。

参见

  • imagepng() - 以 PNG 格式将图像输出到浏览器或文件
  • imagegif() - 输出图象到浏览器或文件。
  • imagewbmp() - 以 WBMP 格式将图像输出到浏览器或文件
  • imageinterlace() - 激活或禁止隔行扫描
  • imagetypes() - 返回当前 PHP 版本所支持的图像类型

imageistruecolor
imagelayereffect
GD 和图像处理 函数


设定 alpha 混色标志以使用绑定的 libgd 分层效果

imagejpeg
imageline
GD 和图像处理 函数
PHP Manual

imagelayereffect

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

imagelayereffect — 设定 alpha 混色标志以使用绑定的 libgd 分层效果

说明

bool imagelayereffect ( resource $image , int $effect )

设定 alpha 混色标志以使用绑定的 libgd 分层效果。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

effect

One of the following constants:

IMG_EFFECT_REPLACE
Use pixel replacement (equivalent of passing TRUE to imagealphablending())
IMG_EFFECT_ALPHABLEND
Use normal pixel blending (equivalent of passing FALSE to imagealphablending())
IMG_EFFECT_NORMAL
Same as IMG_EFFECT_ALPHABLEND.
IMG_EFFECT_OVERLAY
Overlay has the effect that black background pixels will remain black, white background pixels will remain white, but grey background pixels will take the colour of the foreground pixel.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 imagelayereffect() example

<?php
// Setup an image
$im = imagecreatetruecolor(100, 100);

// Set a background
imagefilledrectangle($im, 0, 0, 100, 100, imagecolorallocate($im, 220, 220, 220));

// Apply the overlay alpha blending flag
imagelayereffect($im, IMG_EFFECT_OVERLAY);

// Draw two grey ellipses
imagefilledellipse($im, 50, 50, 40, 40, imagecolorallocate($im, 100, 255, 100));
imagefilledellipse($im, 50, 50, 50, 80, imagecolorallocate($im, 100, 100, 255));
imagefilledellipse($im, 50, 50, 80, 50, imagecolorallocate($im, 255, 100, 100));

// Output
header('Content-type: image/png');

imagepng($im);
imagedestroy($im);
?>

以上例程的输出类似于：

Output of example : imagelayereffect()

注释

Note: 此函数仅在与 GD 库捆绑编译的 PHP 版本中可用。

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

imagejpeg
imageline
GD 和图像处理 函数


画一条线段

imagelayereffect
imageloadfont
GD 和图像处理 函数
PHP Manual

imageline

(PHP 4, PHP 5, PHP 7)

imageline — 画一条线段

说明

bool imageline ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color )

imageline() 用 color 颜色在图像 image 中从坐标 x1，y1 到 x2，y2（图像左上角为 0, 0）画一条线段。

Example #1 画一条粗线

<?php

function imagelinethick($image, $x1, $y1, $x2, $y2, $color, $thick = 1)
{
    /* 下面两行只在线段直角相交时好使
    imagesetthickness($image, $thick);
    return imageline($image, $x1, $y1, $x2, $y2, $color);
    */
    if ($thick == 1) {
        return imageline($image, $x1, $y1, $x2, $y2, $color);
    }
    $t = $thick / 2 - 0.5;
    if ($x1 == $x2 || $y1 == $y2) {
        return imagefilledrectangle($image, round(min($x1, $x2) - $t), round(min($y1, $y2) - $t), round(max($x1, $x2) + $t), round(max($y1, $y2) + $t), $color);
    }
    $k = ($y2 - $y1) / ($x2 - $x1); //y = kx + q
    $a = $t / sqrt(1 + pow($k, 2));
    $points = array(
        round($x1 - (1+$k)*$a), round($y1 + (1-$k)*$a),
        round($x1 - (1-$k)*$a), round($y1 - (1+$k)*$a),
        round($x2 + (1+$k)*$a), round($y2 - (1-$k)*$a),
        round($x2 + (1-$k)*$a), round($y2 + (1+$k)*$a),
    );
    imagefilledpolygon($image, $points, 4, $color);
    return imagepolygon($image, $points, 4, $color);
}

?>

参见 imagecreatetruecolor() 和 imagecolorallocate()。

imagelayereffect
imageloadfont
GD 和图像处理 函数


载入一新字体

imageline
imageopenpolygon
GD 和图像处理 函数
PHP Manual

imageloadfont

(PHP 4, PHP 5, PHP 7)

imageloadfont — 载入一新字体

说明

int imageloadfont ( string $file )

imageloadfont() 加载一个用户定义的位图字体并返回该字体的标识符（其值总是大于 5，因此不会和内置字体冲突）。 在产生错误的情况下，该函数返回 FALSE 。

字体文件格式目前是二进制的且和平台有关。这意味着应该用和你运行 PHP 的机器相同类型 CPU 的机器生成字体。

字体文件格式
字节位置 | C 数据类型 | 说明
byte 0-3 | int | 字体中的字符数目
byte 4-7 | int | 字体中第一个字符的值（通常是 32 代表空格）
byte 8-11 | int | 每个字符宽度的像素值
byte 12-15 | int | 每个字符高度的像素值
byte 16- | char | 字符数据的数组，每字符中每像素一字节，一共 (nchars*width*height) 字节。

Example #1 使用 imageloadfont

<?php
header("Content-type: image/png");
$im = imagecreatetruecolor(50, 20);
$black = imagecolorallocate($im, 0, 0, 0);
$white = imagecolorallocate($im, 255, 255, 255);
imagefilledrectangle($im, 0, 0, 49, 19, $white);
$font = imageloadfont("04b.gdf");
imagestring($im, $font, 0, 0, "Hello", $black);
imagepng($im);
?>

参见 imagefontwidth() 和 imagefontheight()。

imageline
imageopenpolygon
GD 和图像处理 函数


Draws an open polygon

imageloadfont
imagepalettecopy
GD 和图像处理 函数
PHP Manual

imageopenpolygon

(PHP 7 >= 7.2.0)

imageopenpolygon — Draws an open polygon

说明

bool imageopenpolygon ( resource $image , array $points , int $num_points , int $color )

imageopenpolygon() draws an open polygon on the given image. Contrary to imagepolygon(), no line is drawn between the last and the first point.

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

points

An array containing the polygon's vertices, e.g.:

points[0] | = x0
points[1] | = y0
points[2] | = x1
points[3] | = y1

num_points

Total number of points (vertices).

color

A color identifier created with imagecolorallocate().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 imageopenpolygon() example

<?php
// Create a blank image
$image = imagecreatetruecolor(400, 300);

// Allocate a color for the polygon
$col_poly = imagecolorallocate($image, 255, 255, 255);

// Draw the polygon
imageopenpolygon($image, array(
        0,   0,
        100, 200,
        300, 200
    ),
    3,
    $col_poly);

// Output the picture to the browser
header('Content-type: image/png');

imagepng($image);
imagedestroy($image);
?>

以上例程的输出类似于：

Output of example : imageopenpolygon()

参见

  • imagepolygon() - 画一个多边形

imageloadfont
imagepalettecopy
GD 和图像处理 函数


将调色板从一幅图像拷贝到另一幅

imageopenpolygon
imagepalettetotruecolor
GD 和图像处理 函数
PHP Manual

imagepalettecopy

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

imagepalettecopy — 将调色板从一幅图像拷贝到另一幅

说明

void imagepalettecopy ( resource $destination , resource $source )

imagepalettecopy() 从 source 图像把调色板拷贝到 destination 图像。

imageopenpolygon
imagepalettetotruecolor
GD 和图像处理 函数


Converts a palette based image to true color

imagepalettecopy
imagepng
GD 和图像处理 函数
PHP Manual

imagepalettetotruecolor

(PHP 5 >= 5.5.0, PHP 7)

imagepalettetotruecolor — Converts a palette based image to true color

说明

bool imagepalettetotruecolor ( resource $src )

Converts a palette based image, created by functions like imagecreate() to a true color image, like imagecreatetruecolor().

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

返回值

Returns TRUE if the convertion was complete, or if the source image already is a true color image, otherwise FALSE is returned.

范例

Example #1 Converts any image resource to true color

<?php
// Backwards compatiblity
if(!function_exists('imagepalettetotruecolor'))
{
    function imagepalettetotruecolor(&$src)
    {
        if(imageistruecolor($src))
        {
            return(true);
        }

        $dst = imagecreatetruecolor(imagesx($src), imagesy($src));

        imagecopy($dst, $src, 0, 0, 0, 0, imagesx($src), imagesy($src));
        imagedestroy($src);

        $src = $dst;

        return(true);
    }
}

// Helper closure
$typeof = function() use($im)
{
    echo 'typeof($im) = ' . (imageistruecolor($im) ? 'true color' : 'palette'), PHP_EOL;
};

// Create a palette based image
$im = imagecreate(100, 100);
$typeof();

// Convert it to true color
imagepalettetotruecolor($im);
$typeof();

// Free the memory
imagedestroy($im);
?>

以上例程会输出：

typeof($im) = palette
typeof($im) = true color

参见

  • imagecreatetruecolor() - 新建一个真彩色图像
  • imageistruecolor() - 检查图像是否为真彩色图像

imagepalettecopy
imagepng
GD 和图像处理 函数


以 PNG 格式将图像输出到浏览器或文件

imagepalettetotruecolor
imagepolygon
GD 和图像处理 函数
PHP Manual

imagepng

(PHP 4, PHP 5, PHP 7)

imagepng — 以 PNG 格式将图像输出到浏览器或文件

说明

bool imagepng ( resource $image [, string $filename ] )

imagepng() 将 GD 图像流（image）以 PNG 格式输出到标准输出（通常为浏览器），或者如果用 filename 给出了文件名则将其输出到该文件。

<?php
$im = imagecreatefrompng("test.png");
imagepng($im);
?>

参见 imagegif()，imagewbmp()，imagejpeg() 和 imagetypes()。

imagepalettetotruecolor
imagepolygon
GD 和图像处理 函数


画一个多边形

imagepng
imagepsbbox
GD 和图像处理 函数
PHP Manual

imagepolygon

(PHP 4, PHP 5, PHP 7)

imagepolygon — 画一个多边形

说明

bool imagepolygon ( resource $image , array $points , int $num_points , int $color )

imagepolygon() 在图像中创建一个多边形。points 是一个 PHP 数组，包含了多边形的各个顶点坐标，即 points[0] = x0，points[1] = y0，points[2] = x1，points[3] = y1，以此类推。num_points 是顶点的总数。

Example #1 imagepolygon() 例子

<?php
// create a blank image
$image = imagecreatetruecolor(400, 300);

// fill the background color
$bg = imagecolorallocate($image, 0, 0, 0);

// choose a color for the polygon
$col_poly = imagecolorallocate($image, 255, 255, 255);

// draw the polygon
imagepolygon($image,
             array (
                    0, 0,
                    100, 200,
                    300, 200
             ),
             3,
             $col_poly);

// output the picture
header("Content-type: image/png");
imagepng($image);

?>

参见 imagecreate() 和 imagecreatetruecolor()。

imagepng
imagepsbbox
GD 和图像处理 函数


给出一个使用 PostScript Type1 字体的文本方框

imagepolygon
imagepsencodefont
GD 和图像处理 函数
PHP Manual

imagepsbbox

(PHP 4, PHP 5)

imagepsbbox — 给出一个使用 PostScript Type1 字体的文本方框

说明

array imagepsbbox ( string $text , resource $font , int $size )
array imagepsbbox ( string $text , resource $font , int $size , int $space , int $tightness , float $angle )

给出一个使用 PostScript Type1 字体的文本方框。

围绕文本范围的虚拟方框是用从字符度量学中的可用信息来计算的，不幸的是往往和实际上光栅生成的文本的结果有少许不同。如果角度为 0 度，（根据经验）文本在每个方向上都需要多 1 个像素。

参数

text

要写入的文本。

font_index

imagepsloadfont() 所返回的字体资源。

size

size 以像素表示。

space

可以用来改变字体中默认间距的值。此值将被加到通常的值上，可以为负值。 以字符间距单元表示，1 个单元为 1 em-square 的一千分之一。

tightness

tightness 可以控制字符之间的间距。此值将被加到通常字符宽度上，可以为负值。 以字符间距单元表示，1 个单元为 1 em-square 的一千分之一。

angle

angle 以角度表示。

返回值

本函数返回包含有下列单元的数组：

0 | 左下角的 X 坐标
1 | 左下角的 Y 坐标
2 | 右上角的 X 坐标
3 | 右上角的 Y 坐标

范例

Example #1 imagepsbbox() 用法

<?php
// 创建图像的句柄
$im = imagecreatetruecolor(200, 200);

// 分配颜色
$black = imagecolorallocate($im, 0, 0, 0);
$white = imagecolorallocate($im, 255, 255, 255);

// 载入 PostScript 字体
$font = imagepsloadfont('font.pfm');

// 设置文本方框
$bbox = imagepsbbox('Sample text is simple', $font, 12);

// 定义 X 和 Y
$x = ($bbox[2] / 2) - 10;
$y = ($bbox[3] / 2) - 10;

// 字体写入图像
imagepstext($im, 'Sample text is simple', $font, 12, $black, $white, $x, $y);

// 输出并释放内存
header('Content-type: image/png');

imagepng($im);
imagedestroy($im);
?>

注释

Note: 此函数仅在 PHP 编译时指定了 --with-t1lib[=DIR] 时可用。

参见

  • imagepstext() - 用 PostScript Type1 字体把文本字符串画在图像上

imagepolygon
imagepsencodefont
GD 和图像处理 函数


改变字体中的字符编码矢量

imagepsbbox
imagepsextendfont
GD 和图像处理 函数
PHP Manual

imagepsencodefont

(PHP 4, PHP 5)

imagepsencodefont — 改变字体中的字符编码矢量

说明

bool imagepsencodefont ( resource $font_index , string $encodingfile )

从文件中加载字符编码矢量并用其替换给定字体的编码矢量。由于 PostScript 字体的默认矢量缺少大多数超过 127 的字符位置，因此如果使用其它非英语的语言的话肯定需要改变它。编码文件的确切格式定义在 T1lib 文档中。T1lib 包含有两个可马上使用的文件，IsoLatin1.enc 和 IsoLatin2.enc。

如果发现自己总是要用本函数，更好的定义编码的做法是在配置文件中将 ps.default_encoding 设定为指向正确的编码文件，这样加载的所有字体就会自动具有正确编码了。

Note: 此函数仅在 PHP 编译时指定了 --with-t1lib[=DIR] 时可用。

参数

font_index

A font resource, returned by imagepsloadfont().

encodingfile

The exact format of this file is described in T1libs documentation. T1lib comes with two ready-to-use files, IsoLatin1.enc and IsoLatin2.enc.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 imagepsencodefont() example

<?php
// Load a .pfb font file
$font = imagepsloadfont('./px3l.pfb');

// Tell T1lib to use ISO Latin 1 encoding
imagepsencode($font, './IsoLatin1.enc');

// Do any operations with the font here

// Free the font from memory
imagepsfreefont($font);
?>

注释

Note: 此函数仅在 PHP 编译时指定了 --with-t1lib[=DIR] 时可用。

imagepsbbox
imagepsextendfont
GD 和图像处理 函数


扩充或精简字体

imagepsencodefont
imagepsfreefont
GD 和图像处理 函数
PHP Manual

imagepsextendfont

(PHP 4, PHP 5)

imagepsextendfont — 扩充或精简字体

说明

bool imagepsextendfont ( resource $font_index , float $extend )

扩充或精简某字体（font_index）。如果 extend 参数的值小于一则是精简该字体。

参数

font_index

由 imagepsloadfont() 返回的字体资源。

extend

扩展的值，必须大于 0。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 imagepsextendfont() 例子

<?php
// Load a .pfb font file
$font = imagepsloadfont('./px3l.pfb');

// Extend the font by 2.5
imagepsextendfont($font, 2.5);

// Do any operations with the font here

// Free the font from memory
imagepsfreefont($font);
?>

注释

Note: 此函数仅在 PHP 编译时指定了 --with-t1lib[=DIR] 时可用。

imagepsencodefont
imagepsfreefont
GD 和图像处理 函数


释放一个 PostScript Type 1 字体所占用的内存

imagepsextendfont
imagepsloadfont
GD 和图像处理 函数
PHP Manual

imagepsfreefont

(PHP 4, PHP 5)

imagepsfreefont — 释放一个 PostScript Type 1 字体所占用的内存

说明

bool imagepsfreefont ( resource $font_index )

imagepsfreefont() 释放一个 PostScript Type 1 字体所占用的内存。

参数

font_index

imagepsloadfont() 返回的字体资源。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 imagepsfreefont() 例子

<?php
// Load a .pfb font file
$font = imagepsloadfont('./bchbi.pfb');

// Do any operations with the font here

// Free the font from memory
imagepsfreefont($font);
?>

注释

Note: 此函数仅在 PHP 编译时指定了 --with-t1lib[=DIR] 时可用。

参见

  • imagepsloadfont() - 从文件中加载一个 PostScript Type 1 字体

imagepsextendfont
imagepsloadfont
GD 和图像处理 函数


从文件中加载一个 PostScript Type 1 字体

imagepsfreefont
imagepsslantfont
GD 和图像处理 函数
PHP Manual

imagepsloadfont

(PHP 4, PHP 5)

imagepsloadfont — 从文件中加载一个 PostScript Type 1 字体

说明

resource imagepsloadfont ( string $filename )

从文件 filename 中加载一个 PostScript Type 1 字体。

参数

filename

Postscript 字体文件的路径。

返回值

如果一切正常，将返回一个合法的字体索引以备使用。否则返回 FALSE 并显示一条信息说明哪里错了，但不能直接读取此信息，因为输出格式是图像。

范例

Example #1 imagepsloadfont() 例子

<?php
// Create a new image instance
$im = imagecreatetruecolor(350, 45);

// Allocate colors and fill the background
$black = imagecolorallocate($im, 0, 0, 0);
$white = imagecolorallocate($im, 255, 255, 255);
imagefilledrectangle($im, 0, 0, 349, 44, $white);

// Load a font, write to the image and free the font from memory
$font = imagepsloadfont("bchbi.pfb");
imagepstext($im, "Testing... It worked!", $font, 32, $white, $black, 32, 32);
imagepsfreefont($font);

// Output the image
header('Content-type: image/png');

imagepng($im);
imagedestroy($im);
?>

注释

Note: 此函数仅在 PHP 编译时指定了 --with-t1lib[=DIR] 时可用。

参见

  • imagepsfreefont() - 释放一个 PostScript Type 1 字体所占用的内存

imagepsfreefont
imagepsslantfont
GD 和图像处理 函数


倾斜某字体

imagepsloadfont
imagepstext
GD 和图像处理 函数
PHP Manual

imagepsslantfont

(PHP 4, PHP 5)

imagepsslantfont — 倾斜某字体

说明

bool imagepsslantfont ( resource $font_index , float $slant )

用 slant 参数指定的倾斜值来倾斜 font_index 参数指定的字体。

Note: 此函数仅在 PHP 编译时指定了 --with-t1lib[=DIR] 时可用。

参数

font_index

A font resource, returned by imagepsloadfont().

slant

Slant level.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 imagepsslantfont() example

<?php
// Load a .pfb font file
$font = imagepsloadfont('./px3l.pfb');

// Slant the font by 22.5
imagepsslantfont($font, 22.5);

// Do any operations with the font here

// Free the font from memory
imagepsfreefont($font);
?>

注释

Note: 此函数仅在 PHP 编译时指定了 --with-t1lib[=DIR] 时可用。

imagepsloadfont
imagepstext
GD 和图像处理 函数


用 PostScript Type1 字体把文本字符串画在图像上

imagepsslantfont
imagerectangle
GD 和图像处理 函数
PHP Manual

imagepstext

(PHP 4, PHP 5)

imagepstext — 用 PostScript Type1 字体把文本字符串画在图像上

说明

array imagepstext ( resource $image , string $text , resource $font_index , int $size , int $foreground , int $background , int $x , int $y [, int $space = 0 [, int $tightness = 0 [, float $angle = 0.0 [, int $antialias_steps = 4 ]]]] )

用 PostScript Type1 字体把文本字符串画在图像上。

如果不很理解请参考 PostScript 文档中关于字体及其度量系统的部分。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

text

要写入的文本。

font_index

imagepsloadfont() 返回的字体资源。

size

size 以像素来表达。

foreground

写入的字体的颜色。

background

文本以防锯齿（antialiasing）方式尝试淡入的颜色。以 background 为颜色的像素实际上不会被画上去，所以背景图像不需要是实心的颜色。

x

第一个字符的左下角起点 x 坐标。

y

第一个字符的左下角 y 坐标 。

space

space 可以用来改变字体中默认间距的值。此值将被加到通常的值上，可以为负值。 以字符间距单元表示，1 个单元为 1 em-square 的一千分之一。

tightness

tightness 可以控制字符之间的间距。此值将被加到通常字符宽度上Z，可以为负值。 以字符间距单元表示，1 个单元为 1 em-square 的一千分之一。

angle

angle 以角度表示。

antialias_steps

可以控制防混色文本使用的颜色的数目。允许值为 4 和 16。大的数值推荐用于大小小于 20 的文本，对文本质量的效果相当明显。对更大的大小，用 4，计算强度小一些。

返回值

本函数返回一个包含下列单元的数组：

0 | 左下角的 X 坐标
1 | 左下角的 Y 坐标
2 | 右上角的 X 坐标
3 | 右上角的 Y 坐标

范例

Example #1 imagepstext() 用法

<?php
// 创建图像句柄
$im = imagecreatetruecolor(200, 200);

// 分配颜色
$black = imagecolorallocate($im, 0, 0, 0);
$white = imagecolorallocate($im, 255, 255, 255);

// 载入 PostScript 字体
$font = imagepsloadfont('font.pfm');

// 将字体写入图像
imagepstext($im, 'Sample text is simple', $font, 12, $black, $white, 50, 50);

// 输出图像并释放内存
header('Content-type: image/png');

imagepng($im);
imagedestroy($im);
?>

注释

Note: 此函数仅在 PHP 编译时指定了 --with-t1lib[=DIR] 时可用。

参见

  • imagepsbbox() - 给出一个使用 PostScript Type1 字体的文本方框

imagepsslantfont
imagerectangle
GD 和图像处理 函数


画一个矩形

imagepstext
imageresolution
GD 和图像处理 函数
PHP Manual

imagerectangle

(PHP 4, PHP 5, PHP 7)

imagerectangle — 画一个矩形

说明

bool imagerectangle ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $col )

imagerectangle() 用 col 颜色在 image 图像中画一个矩形，其左上角坐标为 x1, y1，右下角坐标为 x2, y2。图像的左上角坐标为 0, 0。

imagepstext
imageresolution
GD 和图像处理 函数


Get or set the resolution of the image

imagerectangle
imagerotate
GD 和图像处理 函数
PHP Manual

imageresolution

(PHP 7 >= 7.2.0)

imageresolution — Get or set the resolution of the image

说明

mixed imageresolution ( resource $image [, int $res_x [, int $res_y ]] )

imageresolution() allows to set and get the resolution of an image in DPI (dots per inch). If none of the optional parameters is given, the current resolution is returned as indexed array. If only res_x is given, the horizontal and vertical resolution are set to this value. If both optional parameters are given, the horizontal and vertical resolution are set to these values, respectively.

The resolution is only used as meta information when images are read from and written to formats supporting this kind of information (curently PNG and JPEG). It does not affect any drawing operations. The default resolution for new images is 96 DPI.

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

res_x

The horizontal resolution in DPI.

res_y

The vertical resolution in DPI.

返回值

When used as getter (that is without the optional parameters), it returns TRUE on success, 或者在失败时返回 FALSE. When used as setter (that is with one or both optional parameters given), it returns an indexed array of the horizontal and vertical resolution on success, 或者在失败时返回 FALSE.

范例

Example #1 Setting and getting the resolution of an image

<?php
$im = imagecreatetruecolor(100, 100);
imageresolution($im, 200);
print_r(imageresolution($im));
imageresolution($im, 300, 72);
print_r(imageresolution($im));
?>

以上例程会输出：

Array
(
    [0] => 200
    [1] => 200
)
Array
(
    [0] => 300
    [1] => 72
)
imagerectangle
imagerotate
GD 和图像处理 函数


用给定角度旋转图像

imageresolution
imagesavealpha
GD 和图像处理 函数
PHP Manual

imagerotate

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

imagerotate — 用给定角度旋转图像

说明

resource imagerotate ( resource $image , float $angle , int $bgd_color [, int $ignore_transparent = 0 ] )

将 src_im 图像用给定的 angle 角度旋转。bgd_color 指定了旋转后没有覆盖到的部分的颜色。

旋转的中心是图像的中心，旋转后的图像会按比例缩小以适合目标图像的大小——边缘不会被剪去。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

angle

Rotation angle, in degrees. The rotation angle is interpreted as the number of degrees to rotate the image anticlockwise.

bgd_color

Specifies the color of the uncovered zone after the rotation

ignore_transparent

如果被设为非零值，则透明色会被忽略（否则会被保留）。

返回值

返回旋转后的图像资源， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.1.0 | 新增： ignore_transparent 。

范例

Example #1 将图像旋转 180 度

本例将把一幅图像旋转 180 度——上下颠倒。

<?php
// File and rotation
$filename = 'test.jpg';
$degrees = 180;

// Content type
header('Content-type: image/jpeg');

// Load
$source = imagecreatefromjpeg($filename);

// Rotate
$rotate = imagerotate($source, $degrees, 0);

// Output
imagejpeg($rotate);
?>

以上例程的输出类似于：

例子的输出：将图像旋转 180 度

注释

Note: 此函数仅在与 GD 库捆绑编译的 PHP 版本中可用。

imageresolution
imagesavealpha
GD 和图像处理 函数


设置标记以在保存 PNG 图像时保存完整的 alpha 通道信息（与单一透明色相反）

imagerotate
imagescale
GD 和图像处理 函数
PHP Manual

imagesavealpha

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

imagesavealpha — 设置标记以在保存 PNG 图像时保存完整的 alpha 通道信息（与单一透明色相反）

说明

bool imagesavealpha ( resource $image , bool $saveflag )

imagesavealpha() 设置标记以在保存 PNG 图像时保存完整的 alpha 通道信息（与单一透明色相反）。

要使用本函数，必须将 alphablending 清位（imagealphablending($im, false)）。

不是所有的浏览器都支持 alpha 通道，如果在你的浏览器上碰到问题，试着用兼容 alpha 通道的浏览器（例如最新版的 Mozilla）重新加载脚本。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

saveflag

是否保存透明（alpha）通道。 默认 FALSE。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 imagesavealpha() 例子

<?php
// 载入带 alpha 通道的 png 图像
$png = imagecreatefrompng('./alphachannel_example.png');

// 做些必须的操作

// 关闭 alpha 渲染并设置 alpha 标志
imagealphablending($png, false);
imagesavealpha($png, true);

// 输出图像到浏览器
header('Content-Type: image/png');

imagepng($png);
imagedestroy($png);
?>

注释

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

参见

  • imagealphablending() - 设定图像的混色模式

imagerotate
imagescale
GD 和图像处理 函数


Scale an image using the given new width and height

imagesavealpha
imagesetbrush
GD 和图像处理 函数
PHP Manual

imagescale

(PHP 5 >= 5.5.0, PHP 7)

imagescale — Scale an image using the given new width and height

说明

resource imagescale ( resource $image , int $new_width [, int $new_height = -1 [, int $mode = IMG_BILINEAR_FIXED ]] )

imagescale() scales an image using the given interpolation algorithm.

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

new_width

The width to scale the image to.

new_height

The height to scale the image to. If omitted or negative, the aspect ratio will be preserved.

Caution

You should always provide the height if using PHP 5.5.18 or earlier, or PHP 5.6.2 or earlier, as the aspect ratio calculation was incorrect.

mode

One of IMG_NEAREST_NEIGHBOUR, IMG_BILINEAR_FIXED, IMG_BICUBIC, IMG_BICUBIC_FIXED or anything else (will use two pass).

Note: IMG_WEIGHTED4 is not yet supported.

返回值

Return the scaled image resource on success 或者在失败时返回 FALSE.

更新日志

版本 | 说明
5.5.19/5.6.3 | The calculation of the height if new_height was negative or omitted was fixed; prior to these versions, the aspect ratio was not maintained correctly.

imagesavealpha
imagesetbrush
GD 和图像处理 函数


设定画线用的画笔图像

imagescale
imagesetclip
GD 和图像处理 函数
PHP Manual

imagesetbrush

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

imagesetbrush — 设定画线用的画笔图像

说明

bool imagesetbrush ( resource $image , resource $brush )

当用特殊的颜色 IMG_COLOR_BRUSHED 或 IMG_COLOR_STYLEDBRUSHED 绘画时，imagesetbrush() 设定了所有画线的函数（例如 imageline() 和 imagepolygon()）所使用的画笔图像。【注：使用画笔图像，所画的线是由 brush 所代表的图像构成的。请参考并尝试运行 imagesetstyle() 中的例子以帮助理解。】

Note:

使用完画笔图像后不需要采取什么特殊动作。但如果销毁了画笔图像，在设定一个新的画笔图像之前不能使用 IMG_COLOR_BRUSHED 或 IMG_COLOR_STYLEDBRUSHED！

Note:

本函数是 PHP 4.0.6 添加的。

imagescale
imagesetclip
GD 和图像处理 函数


Set the clipping rectangle

imagesetbrush
imagesetinterpolation
GD 和图像处理 函数
PHP Manual

imagesetclip

(PHP 7.2)

imagesetclip — Set the clipping rectangle

说明

bool imagesetclip ( resource $im , int $x1 , int $y1 , int $x2 , int $y2 )

imagesetclip() sets the current clipping rectangle, i.e. the area beyond which no pixels will be drawn.

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

x1

The x-coordinate of the upper left corner.

y1

The y-coordinate of the upper left corner.

x2

The x-coordinate of the lower right corner.

y2

The y-coordinate of the lower right corner.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • imagegetclip() - Get the clipping rectangle
imagesetbrush
imagesetinterpolation
GD 和图像处理 函数


Set the interpolation method

imagesetclip
imagesetpixel
GD 和图像处理 函数
PHP Manual

imagesetinterpolation

(PHP 5 >= 5.5.0, PHP 7)

imagesetinterpolation — Set the interpolation method

说明

bool imagesetinterpolation ( resource $image [, int $method = IMG_BILINEAR_FIXED ] )

Sets the interpolation method, setting an interpolation method affects the rendering of various functions in GD, such as the imagerotate() function.

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

method

The interpolation method, which can be one of the following:

  • IMG_BELL: Bell filter.
  • IMG_BESSEL: Bessel filter.
  • IMG_BICUBIC: Bicubic interpolation.
  • IMG_BICUBIC_FIXED: Fixed point implementation of the bicubic interpolation.
  • IMG_BILINEAR_FIXED: Fixed point implementation of the bilinear interpolation (default (also on image creation)).
  • IMG_BLACKMAN: Blackman window function.
  • IMG_BOX: Box blur filter.
  • IMG_BSPLINE: Spline interpolation.
  • IMG_CATMULLROM: Cubic Hermite spline interpolation.
  • IMG_GAUSSIAN: Gaussian function.
  • IMG_GENERALIZED_CUBIC: Generalized cubic spline fractal interpolation.
  • IMG_HERMITE: Hermite interpolation.
  • IMG_HAMMING: Hamming filter.
  • IMG_HANNING: Hanning filter.
  • IMG_MITCHELL: Mitchell filter.
  • IMG_POWER: Power interpolation.
  • IMG_QUADRATIC: Inverse quadratic interpolation.
  • IMG_SINC: Sinc function.
  • IMG_NEAREST_NEIGHBOUR: Nearest neighbour interpolation.
  • IMG_WEIGHTED4: Weighting filter.
  • IMG_TRIANGLE: Triangle interpolation.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 imagesetinterpolation() example

<?php
// Load an image
$im = imagecreate(500, 500);

// By default interpolation is IMG_BILINEAR_FIXED, switch
// to use the 'Mitchell' filter:
imagesetinterpolation($im, IMG_MITCHELL);

// Continue to work with $im ...
?>

注释

Changing the interpolation method affects the following functions when rendering:

  • imageaffine()
  • imagerotate()

imagesetclip
imagesetpixel
GD 和图像处理 函数


画一个单一像素

imagesetinterpolation
imagesetstyle
GD 和图像处理 函数
PHP Manual

imagesetpixel

(PHP 4, PHP 5, PHP 7)

imagesetpixel — 画一个单一像素

说明

bool imagesetpixel ( resource $image , int $x , int $y , int $color )

imagesetpixel() 在 image 图像中用 color 颜色在 x，y 坐标（图像左上角为 0，0）上画一个点。

参见 imagecreatetruecolor() 和 imagecolorallocate()。

imagesetinterpolation
imagesetstyle
GD 和图像处理 函数


设定画线的风格

imagesetpixel
imagesetthickness
GD 和图像处理 函数
PHP Manual

imagesetstyle

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

imagesetstyle — 设定画线的风格

说明

bool imagesetstyle ( resource $image , array $style )

imagesetstyle() 设定所有画线的函数（例如
imageline()
和 imagepolygon()）在使用特殊颜色
IMG_COLOR_STYLED 或者用
IMG_COLOR_STYLEDBRUSHED 画一行图像时所使用的风格。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

style

像素组成的数组。你可以通过常量 IMG_COLOR_TRANSPARENT 来添加一个透明像素。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

下面的示例脚本在画布上从左上角到右下角画一行虚线：

Example #1 imagesetstyle() 例子

<?php
header("Content-type: image/jpeg");
$im  = imagecreatetruecolor(100, 100);
$w   = imagecolorallocate($im, 255, 255, 255);
$red = imagecolorallocate($im, 255, 0, 0);

/* 画一条虚线，5 个红色像素，5 个白色像素 */
$style = array($red, $red, $red, $red, $red, $w, $w, $w, $w, $w);
imagesetstyle($im, $style);
imageline($im, 0, 0, 100, 100, IMG_COLOR_STYLED);

/* 用 imagesetbrush() 和 imagesetstyle 画一行笑脸 */
$style = array($w, $w, $w, $w, $w, $w, $w, $w, $w, $w, $w, $w, $red);
imagesetstyle($im, $style);

$brush = imagecreatefrompng("http://www.libpng.org/pub/png/images/smile.happy.png");
$w2 = imagecolorallocate($brush, 255, 255, 255);
imagecolortransparent($brush, $w2);
imagesetbrush($im, $brush);
imageline($im, 100, 0, 0, 100, IMG_COLOR_STYLEDBRUSHED);

imagejpeg($im);
imagedestroy($im);
?>

以上例程的输出类似于：

Output of example : imagesetstyle()

参见

  • imagesetbrush() - 设定画线用的画笔图像
  • imageline() - 画一条线段

imagesetpixel
imagesetthickness
GD 和图像处理 函数


设定画线的宽度

imagesetstyle
imagesettile
GD 和图像处理 函数
PHP Manual

imagesetthickness

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

imagesetthickness — 设定画线的宽度

说明

bool imagesetthickness ( resource $image , int $thickness )

imagesetthickness() 把画矩形，多边形，椭圆等等时所用的线宽设为 thickness 个像素。成功时返回 TRUE， 或者在失败时返回 FALSE。

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

thickness

Thickness, in pixels.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 imagesetthickness() example

<?php
// Create a 200x100 image
$im = imagecreatetruecolor(200, 100);
$white = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);
$black = imagecolorallocate($im, 0x00, 0x00, 0x00);

// Set the background to be white
imagefilledrectangle($im, 0, 0, 299, 99, $white);

// Set the line thickness to 5
imagesetthickness($im, 5);

// Draw the rectangle
imagerectangle($im, 14, 14, 185, 85, $black);

// Output image to the browser
header('Content-Type: image/png');

imagepng($im);
imagedestroy($im);
?>

以上例程的输出类似于：

Output of example : imagesetthickness()

注释

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

imagesetstyle
imagesettile
GD 和图像处理 函数


设定用于填充的贴图

imagesetthickness
imagestring
GD 和图像处理 函数
PHP Manual

imagesettile

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

imagesettile — 设定用于填充的贴图

说明

bool imagesettile ( resource $image , resource $tile )

imagesettile() 设定所有区域填充函数（例如
imagefill()
和 imagefilledpolygon()）在使用特殊颜色
IMG_COLOR_TILED 填充时所使用的贴图。

贴图是指用重复的样式来填充一块区域所使用的图像。任何 GD 图像都能用作贴图，并且通过使用 imagecolortransparent() 来设定贴图的透明色，贴图可以使底层的特定区域透上来。

Note:

使用完贴图后不需要采取什么特殊动作。但如果销毁了贴图，在设定一个新的贴图之前不能使用 IMG_COLOR_TILED！

imagesetthickness
imagestring
GD 和图像处理 函数


水平地画一行字符串

imagesettile
imagestringup
GD 和图像处理 函数
PHP Manual

imagestring

(PHP 4, PHP 5, PHP 7)

imagestring — 水平地画一行字符串

说明

bool imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col )

imagestring() 用 col 颜色将字符串 s 画到 image 所代表的图像的 x，y 坐标处（这是字符串左上角坐标，整幅图像的左上角为 0，0）。如果 font 是 1，2，3，4 或 5，则使用内置字体。

Example #1 imagestring() 例子

<?php
// 建立一幅 100X30 的图像
$im = imagecreate(100, 30);

// 白色背景和蓝色文本
$bg = imagecolorallocate($im, 255, 255, 255);
$textcolor = imagecolorallocate($im, 0, 0, 255);

// 把字符串写在图像左上角
imagestring($im, 5, 0, 0, "Hello world!", $textcolor);

// 输出图像
header("Content-type: image/png");
imagepng($im);
?>

参见 imageloadfont() 和 imagettftext()。

imagesettile
imagestringup
GD 和图像处理 函数


垂直地画一行字符串

imagestring
imagesx
GD 和图像处理 函数
PHP Manual

imagestringup

(PHP 4, PHP 5, PHP 7)

imagestringup — 垂直地画一行字符串

说明

bool imagestringup ( resource $image , int $font , int $x , int $y , string $s , int $col )

imagestring() 用 col 颜色将字符串 s 垂直地画到 image 所代表的图像的 x, y 座标处（图像的左上角为 0, 0）。如果 font 是 1，2，3，4 或 5，则使用内置字体。

参见 imageloadfont()。

imagestring
imagesx
GD 和图像处理 函数


取得图像宽度

imagestringup
imagesy
GD 和图像处理 函数
PHP Manual

imagesx

(PHP 4, PHP 5, PHP 7)

imagesx — 取得图像宽度

说明

int imagesx ( resource $image )

imagesx() 返回 image 所代表的图像的宽度。

Example #1 使用 imagesx()

<?php

// create a 300*200 image
$img = imagecreatetruecolor(300, 200);

echo imagesx($img); // 300

?>

参见 imagecreatetruecolor()，getimagesize() 和 imagesy()。

imagestringup
imagesy
GD 和图像处理 函数


取得图像高度

imagesx
imagetruecolortopalette
GD 和图像处理 函数
PHP Manual

imagesy

(PHP 4, PHP 5, PHP 7)

imagesy — 取得图像高度

说明

int imagesy ( resource $image )

imagesy() 返回 image 所代表的图像的高度。

Example #1 使用 imagesy()

<?php

// create a 300*200 image
$img = imagecreatetruecolor(300, 200);

echo imagesy($img); // 200

?>

参见 imagecreatetruecolor()，getimagesize() 和 imagesx()。

imagesx
imagetruecolortopalette
GD 和图像处理 函数


将真彩色图像转换为调色板图像

imagesy
imagettfbbox
GD 和图像处理 函数
PHP Manual

imagetruecolortopalette

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

imagetruecolortopalette — 将真彩色图像转换为调色板图像

说明

bool imagetruecolortopalette ( resource $image , bool $dither , int $ncolors )

imagetruecolortopalette() 将一幅真彩色图像转换为调色板图像。本函数的代码原本是从独立的 JPEG 小组库代码中提取出来的，非常出色。此代码被修改以在结果调色板中保留尽可能多的 alpha 通道信息以及尽可能多的颜色。但并没有达到期望的效果。通常最好生成真彩色图像输出，这样可以保证得到最高的输出质量。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

dither

指明图像是否被抖动（dithered），如果为 TRUE 则图像将被抖动使图像中的斑点更多但是颜色更接近。

ncolors

设定调色板中被保留的颜色的最大数目。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Converting a true color image to a palette-based image

<?php
// Create a new true color image
$im = imagecreatetruecolor(100, 100);

// Convert to palette-based with no dithering and 255 colors
imagetruecolortopalette($im, false, 255);

// Save the image
imagepng($im, './paletteimage.png');
imagedestroy($im);
?>

注释

Note: 此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。

imagesy
imagettfbbox
GD 和图像处理 函数


取得使用 TrueType 字体的文本的范围

imagetruecolortopalette
imagettftext
GD 和图像处理 函数
PHP Manual

imagettfbbox

(PHP 4, PHP 5, PHP 7)

imagettfbbox — 取得使用 TrueType 字体的文本的范围

说明

array imagettfbbox ( float $size , float $angle , string $fontfile , string $text )

本函数计算并返回一个包围着 TrueType 文本范围的虚拟方框的像素大小。

size
像素单位的字体大小。
angle
text 将被度量的角度大小。
fontfile
TrueType 字体文件的文件名（可以是 URL）。根据 PHP 所使用的 GD 库版本，可能尝试搜索那些不是以 '/' 开头的文件名并加上 '.ttf' 的后缀并搜索库定义的字体路径。
text
要度量的字符串。
imagettfbbox() 返回一个含有 8 个单元的数组表示了文本外框的四个角：
0 | 左下角 X 位置
1 | 左下角 Y 位置
2 | 右下角 X 位置
3 | 右下角 Y 位置
4 | 右上角 X 位置
5 | 右上角 Y 位置
6 | 左上角 X 位置
7 | 左上角 Y 位置
这些点是相对于文本的而和角度无关，因此"左上角"指的是以水平方向看文字时其左上角。

本函数同时需要 GD 库和 FreeType 库。

参见 imagettftext()。

imagetruecolortopalette
imagettftext
GD 和图像处理 函数


用 TrueType 字体向图像写入文本

imagettfbbox
imagetypes
GD 和图像处理 函数
PHP Manual

imagettftext

(PHP 4, PHP 5, PHP 7)

imagettftext — 用 TrueType 字体向图像写入文本

说明

array imagettftext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )

使用 TrueType 字体将 指定的 text 写入图像。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

size

字体的尺寸。根据 GD 的版本，为像素尺寸（GD1）或点（磅）尺寸（GD2）。

angle

角度制表示的角度，0 度为从左向右读的文本。更高数值表示逆时针旋转。例如 90 度表示从下向上读的文本。

x

由 x，y 所表示的坐标定义了第一个字符的基本点（大概是字符的左下角）。这和 imagestring() 不同，其 x，y 定义了第一个字符的左上角。例如 "top left" 为 0, 0。

y

Y 坐标。它设定了字体基线的位置，不是字符的最底端。

color

颜色索引。使用负的颜色索引值具有关闭防锯齿的效果。见 imagecolorallocate()。

fontfile

是想要使用的 TrueType 字体的路径。

根据 PHP 所使用的 GD 库的不同，当 fontfile 没有以 / 开头时则 .ttf 将被加到文件名之后并且会在库定义字体路径中尝试搜索该文件名。

当使用的 GD 库版本低于 2.0.18 时，一个空格字符 而不是分号将被用来作为不同字体文件的"路径分隔符"。不小心使用了此特性将会导致一条警告信息：Warning: Could not find/open font。对受影响的版本来说唯一解决方案就是将字体移动到不包含空格的路径中去。

很多情况下字体都放在脚本的同一个目录下。下面的小技巧可以减轻包含的问题。

<?php
// Set the enviroment variable for GD
putenv('GDFONTPATH=' . realpath('.'));

// Name the font to be used (note the lack of the .ttf extension)
$font = 'SomeFont';
?>

text

UTF-8 编码的文本字符串。

可以包含十进制数字化字符表示（形式为：&#8364;）来访问字体中超过位置 127 的字符。UTF-8 编码的字符串可以直接传递。

命名实体，比如 &copy; 是不支持的。可以考虑使用 html_entity_decode() 来解码命名实体为 UTF-8 字符。 （自 PHP 5.0.0 开始 html_entity_decode() 开始支持）

如果字符串中使用的某个字符不被字体支持，一个空心矩形将替换该字符。

返回值

返回一个含有 8 个单元的数组表示了文本外框的四个角，顺序为坐下角，右下角，右上角，左上角。这些点是相对于文本的而和角度无关，因此"左上角"指的是以水平方向看文字时其左上角。

更新日志

版本 | 说明
5.2.0 | It is now possible to specify an hexadecimal entity in text.

范例

Example #1 imagettftext() 例子

本例中的脚本将生成一个白色的 400x30 像素 PNG 图像，其中有黑色（带灰色阴影）Arial 字体写的"Testing..."。

<?php
// Set the content-type
header('Content-Type: image/png');

// Create the image
$im = imagecreatetruecolor(400, 30);

// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

// The text to draw
$text = 'Testing...';
// Replace path by your own font path
$font = 'arial.ttf';

// Add some shadow to the text
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

// Add the text
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im);
imagedestroy($im);
?>

以上例程的输出类似于：

注释

Note:

本函数同时需要 GD 库和 » FreeType 库。.

参见

  • imagettfbbox() - 取得使用 TrueType 字体的文本的范围

imagettfbbox
imagetypes
GD 和图像处理 函数


返回当前 PHP 版本所支持的图像类型

imagettftext
imagewbmp
GD 和图像处理 函数
PHP Manual

imagetypes

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

imagetypes — 返回当前 PHP 版本所支持的图像类型

说明

int imagetypes ( void )

本函数以比特字段方式返回与当前 PHP 版本关联的 GD 库所支持的图像格式。将返回以下结果，IMG_GIF | IMG_JPG | IMG_PNG | IMG_WBMP| IMG_XPM。 例如要检查是否支持 PNG，这样做：

Example #1 imagetypes() 例子

<?php
if (imagetypes() & IMG_PNG) {
    echo "PNG Support is enabled";
}
?>

imagettftext
imagewbmp
GD 和图像处理 函数


以 WBMP 格式将图像输出到浏览器或文件

imagetypes
imagewebp
GD 和图像处理 函数
PHP Manual

imagewbmp

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

imagewbmp — 以 WBMP 格式将图像输出到浏览器或文件

说明

bool imagewbmp ( resource $image [, string $filename [, int $foreground ]] )

imagewbmp() 从 image 图像创建一个名为 filename 的 WBMP 文件。image 参数是 imagecreatetruecolor() 的返回值。

filename 参数是可选项，如果省略，则直接将原图像流输出。通过用 header() 发送 image/vnd.wap.wbmp 的 Content-type，可以创建直接输出 WBMP 图像的 PHP 脚本。

Note:

WBMP 支持仅能用于 PHP 编译时加入了 GD-1.8 或更高版本时。

用可选的 foreground 参数可以设定前景色，用 imagecolorallocate() 函数返回的颜色标识符。默认前景色是黑色。

参见 image2wbmp()，imagepng()，imagegif()，imagejpeg() 和 imagetypes()。

imagetypes
imagewebp
GD 和图像处理 函数


将 WebP 格式的图像输出到浏览器或文件

imagewbmp
imagexbm
GD 和图像处理 函数
PHP Manual

imagewebp

(PHP 5 >= 5.5.0, PHP 7)

imagewebp — 将 WebP 格式的图像输出到浏览器或文件

说明

bool imagewebp ( resource $image , string $filename [, int $quality = 80 ] )

将 image 参数指定的图像以 WebP 格式输出到浏览器或者保存到文件。

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

filename

文件保存的路径，如果未设置或为 NULL，将会直接输出原始图象流。

quality

quality 范围从0(最低质量，最小文件提交)到100 (最好质量, 最大文件体积.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 保存为 WebP 图像文件

<?php
// 创建一个空图像并在其上加入一些文字
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);

imagestring($im, 1, 5, 5,  'WebP with PHP', $text_color);

// 保存图像
imagewebp($im, 'php.webp');

// 释放内存
imagedestroy($im);
?>

imagewbmp
imagexbm
GD 和图像处理 函数


将 XBM 图像输出到浏览器或文件

imagewebp
iptcembed
GD 和图像处理 函数
PHP Manual

imagexbm

(PHP 5, PHP 7)

imagexbm — 将 XBM 图像输出到浏览器或文件

说明

bool imagexbm ( resource $image , string $filename [, int $foreground ] )

将 XBM 图像 image 输出到浏览器或文件

参数

image

由图象创建函数(例如imagecreatetruecolor())返回的图象资源。

filename

文件保存的路径，如果未设置或为 NULL，将会直接输出原始图象流。

foreground

你可以从 imagecolorallocate() 分配一个颜色，并设置为该前景色参数。 默认颜色是黑色。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 保存一个 XBM 文件

<?php
// 创建空白图像并添加文字
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  'A Simple Text String', $text_color);

// 保存图像
imagexbm($im, 'simpletext.xbm');

// 释放内存
imagedestroy($im);
?>

Example #2 以不同前景色保存一个 XBM 文件

<?php
// 创建空白图像并添加文字
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  'A Simple Text String', $text_color);

// 设置替换的前景色
$foreground_color = imagecolorallocate($im, 255, 0, 0);

// 保存图像
imagexbm($im, NULL, $foreground_color);

// 释放内存
imagedestroy($im);
?>

注释

Note: 此函数仅在与 GD 库捆绑编译的 PHP 版本中可用。

imagewebp
iptcembed
GD 和图像处理 函数


将二进制 IPTC 数据嵌入到一幅 JPEG 图像中

imagexbm
iptcparse
GD 和图像处理 函数
PHP Manual

iptcembed

(PHP 4, PHP 5, PHP 7)

iptcembed — 将二进制 IPTC 数据嵌入到一幅 JPEG 图像中

说明

mixed iptcembed ( string $iptcdata , string $jpeg_file_name [, int $spool ] )

Embeds binary IPTC data into a JPEG image.

参数

iptcdata

The data to be written.

jpeg_file_name

Path to the JPEG image.

spool

Spool flag. If the spool flag is over 2 then the JPEG will be returned as a string.

返回值

If success and spool flag is lower than 2 then the JPEG will not be returned as a string, FALSE on errors.

范例

Example #1 Embedding IPTC data into a JPEG

<?php

// iptc_make_tag() function by Thies C. Arntzen
function iptc_make_tag($rec, $data, $value)
{
    $length = strlen($value);
    $retval = chr(0x1C) . chr($rec) . chr($data);

    if($length < 0x8000)
    {
        $retval .= chr($length >> 8) .  chr($length & 0xFF);
    }
    else
    {
        $retval .= chr(0x80) .
                   chr(0x04) .
                   chr(($length >> 24) & 0xFF) .
                   chr(($length >> 16) & 0xFF) .
                   chr(($length >> 8) & 0xFF) .
                   chr($length & 0xFF);
    }

    return $retval . $value;
}

// Path to jpeg file
$path = './phplogo.jpg';

// We need to check if theres any IPTC data in the jpeg image. If there is then
// bail out because we cannot embed any image that already has some IPTC data!
$image = getimagesize($path, $info);

if(isset($info['APP13']))
{
    die('Error: IPTC data found in source image, cannot continue');
}

// Set the IPTC tags
$iptc = array(
    '2#120' => 'Test image',
    '2#116' => 'Copyright 2008-2009, The PHP Group'
);

// Convert the IPTC tags into binary code
$data = '';

foreach($iptc as $tag => $string)
{
    $tag = substr($tag, 2);
    $data .= iptc_make_tag(2, $tag, $string);
}

// Embed the IPTC data
$content = iptcembed($data, $path);

// Write the new image data out to the file.
$fp = fopen($path, "wb");
fwrite($fp, $content);
fclose($fp);
?>

注释

Note:

此函数不需要 GD 图象库。

imagexbm
iptcparse
GD 和图像处理 函数


将二进制 IPTC 块解析为单个标记

iptcembed
jpeg2wbmp
GD 和图像处理 函数
PHP Manual

iptcparse

(PHP 4, PHP 5, PHP 7)

iptcparse — 将二进制 IPTC 块解析为单个标记

说明

array iptcparse ( string $iptcblock )

本函数将一个二进制的 » IPTC 块解析为单个的标记。

参数

iptcblock

二进制的 IPTC 块。

返回值

返回一个数组，用 tagmarker 作为索引，以其值为值。如果出错或未发现 IPTC 数据则返回 FALSE。

范例

Example #1 iptcparse() used together with getimagesize()

<?php
$size = getimagesize('./test.jpg', $info);
if(isset($info['APP13']))
{
    $iptc = iptcparse($info['APP13']);
    var_dump($iptc);
}
?>

注释

Note:

此函数不需要 GD 图象库。

iptcembed
jpeg2wbmp
GD 和图像处理 函数


将 JPEG 图像文件转换为 WBMP 图像文件

iptcparse
png2wbmp
GD 和图像处理 函数
PHP Manual

jpeg2wbmp

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

jpeg2wbmp — 将 JPEG 图像文件转换为 WBMP 图像文件

说明

bool jpeg2wbmp ( string $jpegname , string $wbmpname , int $dest_height , int $dest_width , int $threshold )

将 JPEG 图像文件转换为 WBMP 图像文件。

参数

jpegname

JPEG 文件的路径。

wbmpname

目标 WBMP 文件的路径。

dest_height

目标图像高度。

dest_width

目标图像宽度。

threshold

阈值，在 0 和 8 之间（含）。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 jpeg2wbmp() 例子

<?php
// 目标 jpeg 的路径
$path = './test.jpg';

// 获取图像尺寸
$image = getimagesize($path);

// 转换图像
jpeg2wbmp($path, './test.wbmp', $image[1], $image[0], 5);
?>

注释

Note: WBMP 支持仅在 PHP 与 GD-1.8 或更高版本一起编译时可用。

Note: JPEG 支持仅在 PHP 与 GD-1.8 或更高版本一起编译时可用。

参见

  • png2wbmp() - 将 PNG 图像文件转换为 WBMP 图像文件

iptcparse
png2wbmp
GD 和图像处理 函数


将 PNG 图像文件转换为 WBMP 图像文件

jpeg2wbmp
Gmagick
GD 和图像处理 函数
PHP Manual

png2wbmp

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

png2wbmp — 将 PNG 图像文件转换为 WBMP 图像文件

说明

bool png2wbmp ( string $pngname , string $wbmpname , int $dest_height , int $dest_width , int $threshold )

将名为 pngname 的 PNG 文件转换为 WBMP 格式，并存为 wbmpname。用 d_height 和 d_width 指定目标图像的高度和宽度。

参数

pngname

PNG 文件的路径。

wbmpname

目标 WBMP 文件的路径。

dest_height

目标图像的高度。

dest_width

目标图像的宽度。

threshold

阈值，在 0 到 8 之间（含）。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 png2wbmp() 例子

<?php
// Path to the target png
$path = './test.png';

// Get the image sizes
$image = getimagesize($path);

// Convert image
png2wbmp($path, './test.wbmp', $image[1], $image[0], 7);
?>

注释

Note: WBMP 支持仅在 PHP 与 GD-1.8 或更高版本一起编译时可用。

参见

  • jpeg2wbmp() - 将 JPEG 图像文件转换为 WBMP 图像文件

jpeg2wbmp
Gmagick
GD 和图像处理 函数


Gmagick

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
  • 预定义常量
  • 范例
  • Gmagick — The Gmagick class
    • Gmagick::addimage — Adds new image to Gmagick object image list
    • Gmagick::addnoiseimage — Adds random noise to the image
    • Gmagick::annotateimage — Annotates an image with text
    • Gmagick::blurimage — Adds blur filter to image
    • Gmagick::borderimage — Surrounds the image with a border
    • Gmagick::charcoalimage — Simulates a charcoal drawing
    • Gmagick::chopimage — Removes a region of an image and trims
    • Gmagick::clear — Clears all resources associated to Gmagick object
    • Gmagick::commentimage — Adds a comment to your image
    • Gmagick::compositeimage — Composite one image onto another
    • Gmagick::__construct — The Gmagick constructor
    • Gmagick::cropimage — Extracts a region of the image
    • Gmagick::cropthumbnailimage — Creates a crop thumbnail
    • Gmagick::current — The current purpose
    • Gmagick::cyclecolormapimage — Displaces an image's colormap
    • Gmagick::deconstructimages — Returns certain pixel differences between images
    • Gmagick::despeckleimage — The despeckleimage purpose
    • Gmagick::destroy — The destroy purpose
    • Gmagick::drawimage — Renders the GmagickDraw object on the current image
    • Gmagick::edgeimage — Enhance edges within the image
    • Gmagick::embossimage — Returns a grayscale image with a three-dimensional effect
    • Gmagick::enhanceimage — Improves the quality of a noisy image
    • Gmagick::equalizeimage — Equalizes the image histogram
    • Gmagick::flipimage — Creates a vertical mirror image
    • Gmagick::flopimage — The flopimage purpose
    • Gmagick::frameimage — Adds a simulated three-dimensional border
    • Gmagick::gammaimage — Gamma-corrects an image
    • Gmagick::getcopyright — Returns the GraphicsMagick API copyright as a string
    • Gmagick::getfilename — The filename associated with an image sequence
    • Gmagick::getimagebackgroundcolor — Returns the image background color
    • Gmagick::getimageblueprimary — Returns the chromaticy blue primary point
    • Gmagick::getimagebordercolor — Returns the image border color
    • Gmagick::getimagechanneldepth — Gets the depth for a particular image channel
    • Gmagick::getimagecolors — Returns the color of the specified colormap index
    • Gmagick::getimagecolorspace — Gets the image colorspace
    • Gmagick::getimagecompose — Returns the composite operator associated with the image
    • Gmagick::getimagedelay — Gets the image delay
    • Gmagick::getimagedepth — Gets the depth of the image
    • Gmagick::getimagedispose — Gets the image disposal method
    • Gmagick::getimageextrema — Gets the extrema for the image
    • Gmagick::getimagefilename — Returns the filename of a particular image in a sequence
    • Gmagick::getimageformat — Returns the format of a particular image in a sequence
    • Gmagick::getimagegamma — Gets the image gamma
    • Gmagick::getimagegreenprimary — Returns the chromaticy green primary point
    • Gmagick::getimageheight — Returns the image height
    • Gmagick::getimagehistogram — Gets the image histogram
    • Gmagick::getimageindex — Gets the index of the current active image
    • Gmagick::getimageinterlacescheme — Gets the image interlace scheme
    • Gmagick::getimageiterations — Gets the image iterations
    • Gmagick::getimagematte — Check if the image has a matte channel
    • Gmagick::getimagemattecolor — Returns the image matte color
    • Gmagick::getimageprofile — Returns the named image profile.
    • Gmagick::getimageredprimary — Returns the chromaticity red primary point
    • Gmagick::getimagerenderingintent — Gets the image rendering intent
    • Gmagick::getimageresolution — Gets the image X and Y resolution
    • Gmagick::getimagescene — Gets the image scene
    • Gmagick::getimagesignature — Generates an SHA-256 message digest
    • Gmagick::getimagetype — Gets the potential image type.
    • Gmagick::getimageunits — Gets the image units of resolution
    • Gmagick::getimagewhitepoint — Returns the chromaticity white point
    • Gmagick::getimagewidth — Returns the width of the image
    • Gmagick::getpackagename — Returns the GraphicsMagick package name.
    • Gmagick::getquantumdepth — Returns the Gmagick quantum depth as a string.
    • Gmagick::getreleasedate — Returns the GraphicsMagick release date as a string.
    • Gmagick::getsamplingfactors — Gets the horizontal and vertical sampling factor.
    • Gmagick::getsize — Returns the size associated with the Gmagick object
    • Gmagick::getversion — Returns the GraphicsMagick API version
    • Gmagick::hasnextimage — Checks if the object has more images
    • Gmagick::haspreviousimage — Checks if the object has a previous image
    • Gmagick::implodeimage — Creates a new image as a copy
    • Gmagick::labelimage — Adds a label to an image.
    • Gmagick::levelimage — Adjusts the levels of an image
    • Gmagick::magnifyimage — Scales an image proportionally 2x
    • Gmagick::mapimage — Replaces the colors of an image with the closest color from a reference image.
    • Gmagick::medianfilterimage — Applies a digital filter
    • Gmagick::minifyimage — Scales an image proportionally to half its size
    • Gmagick::modulateimage — Control the brightness, saturation, and hue
    • Gmagick::motionblurimage — Simulates motion blur
    • Gmagick::newimage — Creates a new image
    • Gmagick::nextimage — Moves to the next image
    • Gmagick::normalizeimage — Enhances the contrast of a color image
    • Gmagick::oilpaintimage — Simulates an oil painting
    • Gmagick::previousimage — Move to the previous image in the object
    • Gmagick::profileimage — Adds or removes a profile from an image
    • Gmagick::quantizeimage — Analyzes the colors within a reference image
    • Gmagick::quantizeimages — The quantizeimages purpose
    • Gmagick::queryfontmetrics — Returns an array representing the font metrics
    • Gmagick::queryfonts — Returns the configured fonts
    • Gmagick::queryformats — Returns formats supported by Gmagick.
    • Gmagick::radialblurimage — Radial blurs an image
    • Gmagick::raiseimage — Creates a simulated 3d button-like effect
    • Gmagick::read — Reads image from filename
    • Gmagick::readimage — Reads image from filename
    • Gmagick::readimageblob — Reads image from a binary string
    • Gmagick::readimagefile — The readimagefile purpose
    • Gmagick::reducenoiseimage — Smooths the contours of an image
    • Gmagick::removeimage — Removes an image from the image list
    • Gmagick::removeimageprofile — Removes the named image profile and returns it
    • Gmagick::resampleimage — Resample image to desired resolution
    • Gmagick::resizeimage — Scales an image
    • Gmagick::rollimage — Offsets an image
    • Gmagick::rotateimage — Rotates an image
    • Gmagick::scaleimage — Scales the size of an image
    • Gmagick::separateimagechannel — Separates a channel from the image
    • Gmagick::setCompressionQuality — Sets the object's default compression quality
    • Gmagick::setfilename — Sets the filename before you read or write the image
    • Gmagick::setimagebackgroundcolor — Sets the image background color.
    • Gmagick::setimageblueprimary — Sets the image chromaticity blue primary point.
    • Gmagick::setimagebordercolor — Sets the image border color.
    • Gmagick::setimagechanneldepth — Sets the depth of a particular image channel
    • Gmagick::setimagecolorspace — Sets the image colorspace
    • Gmagick::setimagecompose — Sets the image composite operator
    • Gmagick::setimagedelay — Sets the image delay
    • Gmagick::setimagedepth — Sets the image depth
    • Gmagick::setimagedispose — Sets the image disposal method
    • Gmagick::setimagefilename — Sets the filename of a particular image in a sequence
    • Gmagick::setimageformat — Sets the format of a particular image
    • Gmagick::setimagegamma — Sets the image gamma
    • Gmagick::setimagegreenprimary — Sets the image chromaticity green primary point.
    • Gmagick::setimageindex — Set the iterator to the position in the image list specified with the index parameter
    • Gmagick::setimageinterlacescheme — Sets the interlace scheme of the image.
    • Gmagick::setimageiterations — Sets the image iterations.
    • Gmagick::setimageprofile — Adds a named profile to the Gmagick object
    • Gmagick::setimageredprimary — Sets the image chromaticity red primary point.
    • Gmagick::setimagerenderingintent — Sets the image rendering intent
    • Gmagick::setimageresolution — Sets the image resolution
    • Gmagick::setimagescene — Sets the image scene
    • Gmagick::setimagetype — Sets the image type
    • Gmagick::setimageunits — Sets the image units of resolution.
    • Gmagick::setimagewhitepoint — Sets the image chromaticity white point.
    • Gmagick::setsamplingfactors — Sets the image sampling factors.
    • Gmagick::setsize — Sets the size of the Gmagick object
    • Gmagick::shearimage — Creating a parallelogram
    • Gmagick::solarizeimage — Applies a solarizing effect to the image
    • Gmagick::spreadimage — Randomly displaces each pixel in a block
    • Gmagick::stripimage — Strips an image of all profiles and comments
    • Gmagick::swirlimage — Swirls the pixels about the center of the image
    • Gmagick::thumbnailimage — Changes the size of an image
    • Gmagick::trimimage — Remove edges from the image
    • Gmagick::write — 别名 Gmagick::writeimage
    • Gmagick::writeimage — Writes an image to the specified filename
  • GmagickDraw — The GmagickDraw class
    • GmagickDraw::annotate — Draws text on the image
    • GmagickDraw::arc — Draws an arc
    • GmagickDraw::bezier — Draws a bezier curve
    • GmagickDraw::ellipse — Draws an ellipse on the image
    • GmagickDraw::getfillcolor — Returns the fill color
    • GmagickDraw::getfillopacity — Returns the opacity used when drawing
    • GmagickDraw::getfont — Returns the font
    • GmagickDraw::getfontsize — Returns the font pointsize
    • GmagickDraw::getfontstyle — Returns the font style
    • GmagickDraw::getfontweight — Returns the font weight
    • GmagickDraw::getstrokecolor — Returns the color used for stroking object outlines
    • GmagickDraw::getstrokeopacity — Returns the opacity of stroked object outlines
    • GmagickDraw::getstrokewidth — Returns the width of the stroke used to draw object outlines
    • GmagickDraw::gettextdecoration — Returns the text decoration
    • GmagickDraw::gettextencoding — Returns the code set used for text annotations
    • GmagickDraw::line — The line purpose
    • GmagickDraw::point — Draws a point
    • GmagickDraw::polygon — Draws a polygon
    • GmagickDraw::polyline — Draws a polyline
    • GmagickDraw::rectangle — Draws a rectangle
    • GmagickDraw::rotate — Applies the specified rotation to the current coordinate space
    • GmagickDraw::roundrectangle — Draws a rounded rectangle
    • GmagickDraw::scale — Adjusts the scaling factor
    • GmagickDraw::setfillcolor — Sets the fill color to be used for drawing filled objects.
    • GmagickDraw::setfillopacity — The setfillopacity purpose
    • GmagickDraw::setfont — Sets the fully-specified font to use when annotating with text.
    • GmagickDraw::setfontsize — Sets the font pointsize to use when annotating with text.
    • GmagickDraw::setfontstyle — Sets the font style to use when annotating with text
    • GmagickDraw::setfontweight — Sets the font weight
    • GmagickDraw::setstrokecolor — Sets the color used for stroking object outlines.
    • GmagickDraw::setstrokeopacity — Specifies the opacity of stroked object outlines.
    • GmagickDraw::setstrokewidth — Sets the width of the stroke used to draw object outlines.
    • GmagickDraw::settextdecoration — Specifies a decoration
    • GmagickDraw::settextencoding — Specifies the text code set
  • GmagickPixel — The GmagickPixel class
    • GmagickPixel::__construct — The GmagickPixel constructor
    • GmagickPixel::getcolor — Returns the color
    • GmagickPixel::getcolorcount — Returns the color count associated with this color
    • GmagickPixel::getcolorvalue — Gets the normalized value of the provided color channel
    • GmagickPixel::setcolor — Sets the color
    • GmagickPixel::setcolorvalue — Sets the normalized value of one of the channels
png2wbmp
简介
图像生成和处理


简介

Gmagick is a php extension to create, modify and obtain meta information of images using the GraphicsMagick API.

GraphicsMagick prides itself as the swiss army knife of image processing. It works with over 88 major formats including important formats like DPX, GIF, JPEG, JPEG-2000, PNG, PDF, PNM, and TIFF.

Gmagick consists of a main Gmagick class, a GmagickDraw class which is in effect a drawing wand and a GmagickPixel class of which instances represent a single pixel of an image (color, opacity).

Gmagick
安装／配置
Gmagick


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
简介
需求
Gmagick


需求

This extension works best with GraphicsMagick version 1.4+ and PHP 5.1.3+. Gmagick should work with earlier versions up to GraphicsMagick 1.2.6 but some features and formats are not supported for these versions. Windows version of GraphicsMagick is available from the GraphicsMagick website. To read about the difference between ImageMagick and GraphicsMagick, check this out: » FAQ .

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/gmagick.

Note: The official name of this extension is gmagick.

For Windows, the build of the Gmagick extension is available » here

需求
运行时配置
安装／配置


运行时配置

此扩展没有在 php.ini 中定义配置指令。

安装
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

Colortype constants
Gmagick::COLOR_BLACK (integer)
Black
Gmagick::COLOR_BLUE (integer)
Blue
Gmagick::COLOR_CYAN (integer)
Cyan
Gmagick::COLOR_GREEN (integer)
Green
Gmagick::COLOR_RED (integer)
Red
Gmagick::COLOR_YELLOW (integer)
Yellow
Gmagick::COLOR_MAGENTA (integer)
Magenta
Gmagick::COLOR_OPACITY (integer)
Opacity
Gmagick::COLOR_ALPHA (integer)
Alpha
Gmagick::COLOR_FUZZ (integer)
Fuzz
Composite Operator Constants
Gmagick::COMPOSITE_DEFAULT (integer)
The default composite operator
Gmagick::COMPOSITE_UNDEFINED (integer)
Undefined composite operator
Gmagick::COMPOSITE_NO (integer)
No composite operator defined
Gmagick::COMPOSITE_ADD (integer)
The result of image + image
Gmagick::COMPOSITE_ATOP (integer)
The result is the same shape as image, with composite image obscuring image where the image shapes overlap
Gmagick::COMPOSITE_BLEND (integer)
Blends the image
Gmagick::COMPOSITE_BUMPMAP (integer)
The same as COMPOSITE_MULTIPLY, except the source is converted to grayscale first.
Gmagick::COMPOSITE_CLEAR (integer)
Makes the target image transparent
Gmagick::COMPOSITE_COLORBURN (integer)
Darkens the destination image to reflect the source image
Gmagick::COMPOSITE_COLORDODGE (integer)
Brightens the destination image to reflect the source image
Gmagick::COMPOSITE_COLORIZE (integer)
Colorizes the target image using the composite image
Gmagick::COMPOSITE_COPYBLACK (integer)
Copies black from the source to target
Gmagick::COMPOSITE_COPYBLUE (integer)
Copies blue from the source to target
Gmagick::COMPOSITE_COPY (integer)
Copies the source image on the target image
Gmagick::COMPOSITE_COPYCYAN (integer)
Copies cyan from the source to target
Gmagick::COMPOSITE_COPYGREEN (integer)
Copies green from the source to target
Gmagick::COMPOSITE_COPYMAGENTA (integer)
Copies magenta from the source to target
Gmagick::COMPOSITE_COPYOPACITY (integer)
Copies opacity from the source to target
Gmagick::COMPOSITE_COPYRED (integer)
Copies red from the source to target
Gmagick::COMPOSITE_COPYYELLOW (integer)
Copies yellow from the source to target
Gmagick::COMPOSITE_DARKEN (integer)
Darkens the target image
Gmagick::COMPOSITE_DSTATOP (integer)
The part of the destination lying inside of the source is composited over the source and replaces the destination
Gmagick::COMPOSITE_DST (integer)
The target is left untouched
Gmagick::COMPOSITE_DSTIN (integer)
The parts inside the source replace the target
Gmagick::COMPOSITE_DSTOUT (integer)
The parts outside the source replace the target
Gmagick::COMPOSITE_DSTOVER (integer)
Target replaces the source
Gmagick::COMPOSITE_DIFFERENCE (integer)
Subtracts the darker of the two constituent colors from the lighter
Gmagick::COMPOSITE_DISPLACE (integer)
Shifts target image pixels as defined by the source
Gmagick::COMPOSITE_DISSOLVE (integer)
Dissolves the source in to the target
Gmagick::COMPOSITE_EXCLUSION (integer)
Produces an effect similar to that of Gmagick::COMPOSITE_DIFFERENCE, but appears as lower contrast
Gmagick::COMPOSITE_HARDLIGHT (integer)
Multiplies or screens the colors, dependent on the source color value
Gmagick::COMPOSITE_HUE (integer)
Modifies the hue of the target as defined by source
Gmagick::COMPOSITE_IN (integer)
Composites source into the target
Gmagick::COMPOSITE_LIGHTEN (integer)
Lightens the target as defined by source
Gmagick::COMPOSITE_LUMINIZE (integer)
Luminizes the target as defined by source
Gmagick::COMPOSITE_MINUS (integer)
Subtracts the source from the target
Gmagick::COMPOSITE_MODULATE (integer)
Modulates the target brightness, saturation and hue as defined by source
Gmagick::COMPOSITE_MULTIPLY (integer)
Multiplies the target to the source
Gmagick::COMPOSITE_OUT (integer)
Composites outer parts of the source on the target
Gmagick::COMPOSITE_OVER (integer)
Composites source over the target
Gmagick::COMPOSITE_OVERLAY (integer)
Overlays the source on the target
Gmagick::COMPOSITE_PLUS (integer)
Adds the source to the target
Gmagick::COMPOSITE_REPLACE (integer)
Replaces the target with the source
Gmagick::COMPOSITE_SATURATE (integer)
Saturates the target as defined by the source
Gmagick::COMPOSITE_SCREEN (integer)
The source and destination are complemented and then multiplied and then replace the destination
Gmagick::COMPOSITE_SOFTLIGHT (integer)
Darkens or lightens the colors, dependent on the source
Gmagick::COMPOSITE_SRCATOP (integer)
The part of the source lying inside of the destination is composited onto the destination
Gmagick::COMPOSITE_SRC (integer)
The source is copied to the destination
Gmagick::COMPOSITE_SRCIN (integer)
The part of the source lying inside of the destination replaces the destination
Gmagick::COMPOSITE_SRCOUT (integer)
The part of the source lying outside of the destination replaces the destination
Gmagick::COMPOSITE_SRCOVER (integer)
The source replaces the destination
Gmagick::COMPOSITE_SUBTRACT (integer)
Subtract the colors in the source image from the destination image
Gmagick::COMPOSITE_THRESHOLD (integer)
The source is composited on the target as defined by source threshold
Gmagick::COMPOSITE_XOR (integer)
The part of the source that lies outside of the destination is combined with the part of the destination that lies outside of the source
Montage Mode constants
Gmagick::MONTAGEMODE_FRAME (integer)
Gmagick::MONTAGEMODE_UNFRAME (integer)
Gmagick::MONTAGEMODE_CONCATENATE (integer)
Style constants
Gmagick::STYLE_NORMAL (integer)
Gmagick::STYLE_ITALIC (integer)
Gmagick::STYLE_OBLIQUE (integer)
Gmagick::STYLE_ANY (integer)
Filter constants
Gmagick::FILTER_UNDEFINED (integer)
Gmagick::FILTER_POINT (integer)
Gmagick::FILTER_BOX (integer)
Gmagick::FILTER_TRIANGLE (integer)
Gmagick::FILTER_HERMITE (integer)
Gmagick::FILTER_HANNING (integer)
Gmagick::FILTER_HAMMING (integer)
Gmagick::FILTER_BLACKMAN (integer)
Gmagick::FILTER_GAUSSIAN (integer)
Gmagick::FILTER_QUADRATIC (integer)
Gmagick::FILTER_CUBIC (integer)
Gmagick::FILTER_CATROM (integer)
Gmagick::FILTER_MITCHELL (integer)
Gmagick::FILTER_LANCZOS (integer)
Gmagick::FILTER_BESSEL (integer)
Gmagick::FILTER_SINC (integer)
Image type constants
Gmagick::IMGTYPE_UNDEFINED (integer)
Gmagick::IMGTYPE_BILEVEL (integer)
Gmagick::IMGTYPE_GRAYSCALE (integer)
Gmagick::IMGTYPE_GRAYSCALEMATTE (integer)
Gmagick::IMGTYPE_PALETTE (integer)
Gmagick::IMGTYPE_PALETTEMATTE (integer)
Gmagick::IMGTYPE_TRUECOLOR (integer)
Gmagick::IMGTYPE_TRUECOLORMATTE (integer)
Gmagick::IMGTYPE_COLORSEPARATION (integer)
Gmagick::IMGTYPE_COLORSEPARATIONMATTE (integer)
Gmagick::IMGTYPE_OPTIMIZE (integer)
Resolution constants
Gmagick::RESOLUTION_UNDEFINED (integer)
Gmagick::RESOLUTION_PIXELSPERINCH (integer)
Gmagick::RESOLUTION_PIXELSPERCENTIMETER (integer)
Compression constants
Gmagick::COMPRESSION_UNDEFINED (integer)
Gmagick::COMPRESSION_NO (integer)
Gmagick::COMPRESSION_BZIP (integer)
Gmagick::COMPRESSION_FAX (integer)
Gmagick::COMPRESSION_GROUP4 (integer)
Gmagick::COMPRESSION_JPEG (integer)
Gmagick::COMPRESSION_JPEG2000 (integer)
Gmagick::COMPRESSION_LOSSLESSJPEG (integer)
Gmagick::COMPRESSION_LZW (integer)
Gmagick::COMPRESSION_RLE (integer)
Gmagick::COMPRESSION_ZIP (integer)
Paint constants
Gmagick::PAINT_POINT (integer)
Gmagick::PAINT_REPLACE (integer)
Gmagick::PAINT_FLOODFILL (integer)
Gmagick::PAINT_FILLTOBORDER (integer)
Gmagick::PAINT_RESET (integer)
Gravity constants
Gmagick::GRAVITY_NORTHWEST (integer)
Gmagick::GRAVITY_NORTH (integer)
Gmagick::GRAVITY_NORTHEAST (integer)
Gmagick::GRAVITY_WEST (integer)
Gmagick::GRAVITY_CENTER (integer)
Gmagick::GRAVITY_EAST (integer)
Gmagick::GRAVITY_SOUTHWEST (integer)
Gmagick::GRAVITY_SOUTH (integer)
Gmagick::GRAVITY_SOUTHEAST (integer)
Stretch constants
Gmagick::STRETCH_NORMAL (integer)
Gmagick::STRETCH_ULTRACONDENSED (integer)
Gmagick::STRETCH_CONDENSED (integer)
Gmagick::STRETCH_SEMICONDENSED (integer)
Gmagick::STRETCH_SEMIEXPANDED (integer)
Gmagick::STRETCH_EXPANDED (integer)
Gmagick::STRETCH_EXTRAEXPANDED (integer)
Gmagick::STRETCH_ULTRAEXPANDED (integer)
Gmagick::STRETCH_ANY (integer)
Align constants
Gmagick::ALIGN_UNDEFINED (integer)
Gmagick::ALIGN_LEFT (integer)
Gmagick::ALIGN_CENTER (integer)
Gmagick::ALIGN_RIGHT (integer)
Decoration constants
Gmagick::DECORATION_NO (integer)
Gmagick::DECORATION_UNDERLINE (integer)
Gmagick::DECORATION_OVERLINE (integer)
Gmagick::DECORATION_LINETROUGH (integer)
Noise constants
Gmagick::NOISE_UNIFORM (integer)
Gmagick::NOISE_GAUSSIAN (integer)
Gmagick::NOISE_MULTIPLICATIVEGAUSSIAN (integer)
Gmagick::NOISE_IMPULSE (integer)
Gmagick::NOISE_LAPLACIAN (integer)
Gmagick::NOISE_POISSON (integer)
Channel constants
Gmagick::CHANNEL_UNDEFINED (integer)
Gmagick::CHANNEL_RED (integer)
Gmagick::CHANNEL_GRAY (integer)
Gmagick::CHANNEL_CYAN (integer)
Gmagick::CHANNEL_GREEN (integer)
Gmagick::CHANNEL_MAGENTA (integer)
Gmagick::CHANNEL_BLUE (integer)
Gmagick::CHANNEL_YELLOW (integer)
Gmagick::CHANNEL_ALPHA (integer)
Gmagick::CHANNEL_OPACITY (integer)
Gmagick::CHANNEL_MATTE (integer)
Gmagick::CHANNEL_BLACK (integer)
Gmagick::CHANNEL_INDEX (integer)
Gmagick::CHANNEL_ALL (integer)
Metric constants
Gmagick::METRIC_UNDEFINED (integer)
Gmagick::METRIC_MEANABSOLUTEERROR (integer)
Gmagick::METRIC_MEANSQUAREERROR (integer)
Gmagick::METRIC_PEAKABSOLUTEERROR (integer)
Gmagick::METRIC_PEAKSIGNALTONOISERATIO (integer)
Gmagick::METRIC_ROOTMEANSQUAREDERROR (integer)
Pixel constants
Gmagick::PIXEL_CHAR (integer)
Gmagick::PIXEL_DOUBLE (integer)
Gmagick::PIXEL_FLOAT (integer)
Gmagick::PIXEL_INTEGER (integer)
Gmagick::PIXEL_LONG (integer)
Gmagick::PIXEL_QUANTUM (integer)
Gmagick::PIXEL_SHORT (integer)
Colorspace constants
Gmagick::COLORSPACE_UNDEFINED (integer)
Gmagick::COLORSPACE_RGB (integer)
Gmagick::COLORSPACE_GRAY (integer)
Gmagick::COLORSPACE_TRANSPARENT (integer)
Gmagick::COLORSPACE_OHTA (integer)
Gmagick::COLORSPACE_LAB (integer)
Gmagick::COLORSPACE_XYZ (integer)
Gmagick::COLORSPACE_YCBCR (integer)
Gmagick::COLORSPACE_YCC (integer)
Gmagick::COLORSPACE_YIQ (integer)
Gmagick::COLORSPACE_YPBPR (integer)
Gmagick::COLORSPACE_YUV (integer)
Gmagick::COLORSPACE_CMYK (integer)
Gmagick::COLORSPACE_SRGB (integer)
Gmagick::COLORSPACE_HSB (integer)
Gmagick::COLORSPACE_HSL (integer)
Gmagick::COLORSPACE_HWB (integer)
Gmagick::COLORSPACE_REC601LUMA (integer)
Gmagick::COLORSPACE_REC709LUMA (integer)
Gmagick::COLORSPACE_LOG (integer)
Virtual Pixel Method constants
Gmagick::VIRTUALPIXELMETHOD_UNDEFINED (integer)
Gmagick::VIRTUALPIXELMETHOD_BACKGROUND (integer)
Gmagick::VIRTUALPIXELMETHOD_CONSTANT (integer)
Gmagick::VIRTUALPIXELMETHOD_EDGE (integer)
Gmagick::VIRTUALPIXELMETHOD_MIRROR (integer)
Gmagick::VIRTUALPIXELMETHOD_TILE (integer)
Gmagick::VIRTUALPIXELMETHOD_TRANSPARENT (integer)
Preview constants
Gmagick::PREVIEW_UNDEFINED (integer)
Gmagick::PREVIEW_ROTATE (integer)
Gmagick::PREVIEW_SHEAR (integer)
Gmagick::PREVIEW_ROLL (integer)
Gmagick::PREVIEW_HUE (integer)
Gmagick::PREVIEW_SATURATION (integer)
Gmagick::PREVIEW_BRIGHTNESS (integer)
Gmagick::PREVIEW_GAMMA (integer)
Gmagick::PREVIEW_SPIFF (integer)
Gmagick::PREVIEW_DULL (integer)
Gmagick::PREVIEW_GRAYSCALE (integer)
Gmagick::PREVIEW_QUANTIZE (integer)
Gmagick::PREVIEW_DESPECKLE (integer)
Gmagick::PREVIEW_REDUCENOISE (integer)
Gmagick::PREVIEW_ADDNOISE (integer)
Gmagick::PREVIEW_SHARPEN (integer)
Gmagick::PREVIEW_BLUR (integer)
Gmagick::PREVIEW_THRESHOLD (integer)
Gmagick::PREVIEW_EDGEDETECT (integer)
Gmagick::PREVIEW_SPREAD (integer)
Gmagick::PREVIEW_SOLARIZE (integer)
Gmagick::PREVIEW_SHADE (integer)
Gmagick::PREVIEW_RAISE (integer)
Gmagick::PREVIEW_SEGMENT (integer)
Gmagick::PREVIEW_SWIRL (integer)
Gmagick::PREVIEW_IMPLODE (integer)
Gmagick::PREVIEW_WAVE (integer)
Gmagick::PREVIEW_OILPAINT (integer)
Gmagick::PREVIEW_CHARCOALDRAWING (integer)
Gmagick::PREVIEW_JPEG (integer)
Rendering Intent constants
Gmagick::RENDERINGINTENT_UNDEFINED (integer)
Gmagick::RENDERINGINTENT_SATURATION (integer)
Gmagick::RENDERINGINTENT_PERCEPTUAL (integer)
Gmagick::RENDERINGINTENT_ABSOLUTE (integer)
Gmagick::RENDERINGINTENT_RELATIVE (integer)
Fillrule constants
Gmagick::FILLRULE_UNDEFINED (integer)
Gmagick::FILLRULE_EVENODD (integer)
Gmagick::FILLRULE_NONZERO (integer)
Pathunit constants
Gmagick::PATHUNITS_UNDEFINED (integer)
Gmagick::PATHUNITS_USERSPACE (integer)
Gmagick::PATHUNITS_USERSPACEONUSE (integer)
Gmagick::PATHUNITS_OBJECTBOUNDINGBOX (integer)
Linecap constants
Gmagick::LINECAP_UNDEFINED (integer)
Gmagick::LINECAP_BUTT (integer)
Gmagick::LINECAP_ROUND (integer)
Gmagick::LINECAP_SQUARE (integer)
Line Join constants
Gmagick::LINEJOIN_UNDEFINED (integer)
Gmagick::LINEJOIN_MITER (integer)
Gmagick::LINEJOIN_ROUND (integer)
Gmagick::LINEJOIN_BEVEL (integer)
Resourcetype constants
Gmagick::RESOURCETYPE_UNDEFINED (integer)
Gmagick::RESOURCETYPE_AREA (integer)
Gmagick::RESOURCETYPE_DISK (integer)
Gmagick::RESOURCETYPE_FILE (integer)
Gmagick::RESOURCETYPE_MAP (integer)
Gmagick::RESOURCETYPE_MEMORY (integer)
Orientation constants
Gmagick::ORIENTATION_UNDEFINED (integer)
Gmagick::ORIENTATION_TOPLEFT (integer)
Gmagick::ORIENTATION_TOPRIGHT (integer)
Gmagick::ORIENTATION_BOTTOMRIGHT (integer)
Gmagick::ORIENTATION_BOTTOMLEFT (integer)
Gmagick::ORIENTATION_LEFTTOP (integer)
Gmagick::ORIENTATION_RIGHTTOP (integer)
Gmagick::ORIENTATION_RIGHTBOTTOM (integer)
Gmagick::ORIENTATION_LEFTBOTTOM (integer)
运行时配置
范例
Gmagick


范例

The following shows some common Gmagick image operations.

Example #1 Gmagick Example

<?php
//Instantiate a new Gmagick object
$image = new Gmagick('example.jpg');

//Make thumbnail from image loaded. 0 for either axes preserves aspect ratio
$image->thumbnailImage(100, 0);

//Create a border around the image, then simulate how the image will look like as an oil painting
//Notice the chaining of mutator methods which is supported in gmagick
$image->borderImage("yellow", 8, 8)->oilPaintImage(0.3);

//Write the current image at the current state to a file
$image->write('example_thumbnail.jpg');
?>
预定义常量
Gmagick
Gmagick


The Gmagick class

(PECL gmagick >= Unknown)

简介

类摘要

Gmagick {
/* 方法 */
public Gmagick addimage ( Gmagick $Gmagick )
public Gmagick addnoiseimage ( int $NOISE )
public Gmagick annotateimage ( GmagickDraw $GmagickDraw , float $x , float $y , float $angle , string $text )
public Gmagick blurimage ( float $radius , float $sigma [, int $channel ] )
public Gmagick borderimage ( GmagickPixel $color , int $width , int $height )
public Gmagick charcoalimage ( float $radius , float $sigma )
public Gmagick chopimage ( int $width , int $height , int $x , int $y )
public Gmagick clear ( void )
public Gmagick commentimage ( string $comment )
public Gmagick compositeimage ( Gmagick $source , int $COMPOSE , int $x , int $y )
public __construct ([ string $filename ] )
public Gmagick cropimage ( int $width , int $height , int $x , int $y )
public Gmagick cropthumbnailimage ( int $width , int $height )
public Gmagick current ( void )
public Gmagick cyclecolormapimage ( int $displace )
public Gmagick deconstructimages ( void )
public Gmagick despeckleimage ( void )
public bool destroy ( void )
public Gmagick drawimage ( GmagickDraw $GmagickDraw )
public Gmagick edgeimage ( float $radius )
public Gmagick embossimage ( float $radius , float $sigma )
public Gmagick enhanceimage ( void )
public Gmagick equalizeimage ( void )
public Gmagick flipimage ( void )
public Gmagick flopimage ( void )
public Gmagick frameimage ( GmagickPixel $color , int $width , int $height , int $inner_bevel , int $outer_bevel )
public Gmagick gammaimage ( float $gamma )
public string getcopyright ( void )
public string getfilename ( void )
public GmagickPixel getimagebackgroundcolor ( void )
public array getimageblueprimary ( void )
public GmagickPixel getimagebordercolor ( void )
public int getimagechanneldepth ( int $channel_type )
public int getimagecolors ( void )
public int getimagecolorspace ( void )
public int getimagecompose ( void )
public int getimagedelay ( void )
public int getimagedepth ( void )
public int getimagedispose ( void )
public array getimageextrema ( void )
public string getimagefilename ( void )
public string getimageformat ( void )
public float getimagegamma ( void )
public array getimagegreenprimary ( void )
public int getimageheight ( void )
public array getimagehistogram ( void )
public int getimageindex ( void )
public int getimageinterlacescheme ( void )
public int getimageiterations ( void )
public int getimagematte ( void )
public GmagickPixel getimagemattecolor ( void )
public string getimageprofile ( string $name )
public array getimageredprimary ( void )
public int getimagerenderingintent ( void )
public array getimageresolution ( void )
public int getimagescene ( void )
public string getimagesignature ( void )
public int getimagetype ( void )
public int getimageunits ( void )
public array getimagewhitepoint ( void )
public int getimagewidth ( void )
public string getpackagename ( void )
public array getquantumdepth ( void )
public string getreleasedate ( void )
public array getsamplingfactors ( void )
public array getsize ( void )
public array getversion ( void )
public mixed hasnextimage ( void )
public mixed haspreviousimage ( void )
public mixed implodeimage ( float $radius )
public mixed labelimage ( string $label )
public mixed levelimage ( float $blackPoint , float $gamma , float $whitePoint [, int $channel = Gmagick::CHANNEL_DEFAULT ] )
public mixed magnifyimage ( void )
public Gmagick mapimage ( gmagick $gmagick , bool $dither )
public void medianfilterimage ( float $radius )
public Gmagick minifyimage ( void )
public Gmagick modulateimage ( float $brightness , float $saturation , float $hue )
public Gmagick motionblurimage ( float $radius , float $sigma , float $angle )
public Gmagick newimage ( int $width , int $height , string $background [, string $format ] )
public bool nextimage ( void )
public Gmagick normalizeimage ([ int $channel ] )
public Gmagick oilpaintimage ( float $radius )
public bool previousimage ( void )
public Gmagick profileimage ( string $name , string $profile )
public Gmagick quantizeimage ( int $numColors , int $colorspace , int $treeDepth , bool $dither , bool $measureError )
public Gmagick quantizeimages ( int $numColors , int $colorspace , int $treeDepth , bool $dither , bool $measureError )
public array queryfontmetrics ( GmagickDraw $draw , string $text )
public array queryfonts ([ string $pattern = "*" ] )
public array queryformats ([ string $pattern = "*" ] )
public Gmagick radialblurimage ( float $angle [, int $channel = Gmagick::CHANNEL_DEFAULT ] )
public Gmagick raiseimage ( int $width , int $height , int $x , int $y , bool $raise )
public Gmagick read ( string $filename )
public Gmagick readimage ( string $filename )
public Gmagick readimageblob ( string $imageContents [, string $filename ] )
public Gmagick readimagefile ( resource $fp [, string $filename ] )
public Gmagick reducenoiseimage ( float $radius )
public Gmagick removeimage ( void )
public string removeimageprofile ( string $name )
public Gmagick resampleimage ( float $xResolution , float $yResolution , int $filter , float $blur )
public Gmagick resizeimage ( int $width , int $height , int $filter , float $blur [, bool $fit = false ] )
public Gmagick rollimage ( int $x , int $y )
public Gmagick rotateimage ( mixed $color , float $degrees )
public Gmagick scaleimage ( int $width , int $height [, bool $fit = false ] )
public Gmagick separateimagechannel ( int $channel )
Gmagick setCompressionQuality ( int $quality = 75 )
public Gmagick setfilename ( string $filename )
public Gmagick setimagebackgroundcolor ( GmagickPixel $color )
public Gmagick setimageblueprimary ( float $x , float $y )
public Gmagick setimagebordercolor ( GmagickPixel $color )
public Gmagick setimagechanneldepth ( int $channel , int $depth )
public Gmagick setimagecolorspace ( int $colorspace )
public Gmagick setimagecompose ( int $composite )
public Gmagick setimagedelay ( int $delay )
public Gmagick setimagedepth ( int $depth )
public Gmagick setimagedispose ( int $disposeType )
public Gmagick setimagefilename ( string $filename )
public Gmagick setimageformat ( string $imageFormat )
public Gmagick setimagegamma ( float $gamma )
public Gmagick setimagegreenprimary ( float $x , float $y )
public Gmagick setimageindex ( int $index )
public Gmagick setimageinterlacescheme ( int $interlace )
public Gmagick setimageiterations ( int $iterations )
public Gmagick setimageprofile ( string $name , string $profile )
public Gmagick setimageredprimary ( float $x , float $y )
public Gmagick setimagerenderingintent ( int $rendering_intent )
public Gmagick setimageresolution ( float $xResolution , float $yResolution )
public Gmagick setimagescene ( int $scene )
public Gmagick setimagetype ( int $imgType )
public Gmagick setimageunits ( int $resolution )
public Gmagick setimagewhitepoint ( float $x , float $y )
public Gmagick setsamplingfactors ( array $factors )
public Gmagick setsize ( int $columns , int $rows )
public Gmagick shearimage ( mixed $color , float $xShear , float $yShear )
public Gmagick solarizeimage ( int $threshold )
public Gmagick spreadimage ( float $radius )
public Gmagick stripimage ( void )
public Gmagick swirlimage ( float $degrees )
public Gmagick thumbnailimage ( int $width , int $height [, bool $fit = false ] )
public Gmagick trimimage ( float $fuzz )
public Gmagick writeimage ( string $filename [, bool $all_frames = false ] )
}

Table of Contents

  • Gmagick::addimage — Adds new image to Gmagick object image list
  • Gmagick::addnoiseimage — Adds random noise to the image
  • Gmagick::annotateimage — Annotates an image with text
  • Gmagick::blurimage — Adds blur filter to image
  • Gmagick::borderimage — Surrounds the image with a border
  • Gmagick::charcoalimage — Simulates a charcoal drawing
  • Gmagick::chopimage — Removes a region of an image and trims
  • Gmagick::clear — Clears all resources associated to Gmagick object
  • Gmagick::commentimage — Adds a comment to your image
  • Gmagick::compositeimage — Composite one image onto another
  • Gmagick::__construct — The Gmagick constructor
  • Gmagick::cropimage — Extracts a region of the image
  • Gmagick::cropthumbnailimage — Creates a crop thumbnail
  • Gmagick::current — The current purpose
  • Gmagick::cyclecolormapimage — Displaces an image's colormap
  • Gmagick::deconstructimages — Returns certain pixel differences between images
  • Gmagick::despeckleimage — The despeckleimage purpose
  • Gmagick::destroy — The destroy purpose
  • Gmagick::drawimage — Renders the GmagickDraw object on the current image
  • Gmagick::edgeimage — Enhance edges within the image
  • Gmagick::embossimage — Returns a grayscale image with a three-dimensional effect
  • Gmagick::enhanceimage — Improves the quality of a noisy image
  • Gmagick::equalizeimage — Equalizes the image histogram
  • Gmagick::flipimage — Creates a vertical mirror image
  • Gmagick::flopimage — The flopimage purpose
  • Gmagick::frameimage — Adds a simulated three-dimensional border
  • Gmagick::gammaimage — Gamma-corrects an image
  • Gmagick::getcopyright — Returns the GraphicsMagick API copyright as a string
  • Gmagick::getfilename — The filename associated with an image sequence
  • Gmagick::getimagebackgroundcolor — Returns the image background color
  • Gmagick::getimageblueprimary — Returns the chromaticy blue primary point
  • Gmagick::getimagebordercolor — Returns the image border color
  • Gmagick::getimagechanneldepth — Gets the depth for a particular image channel
  • Gmagick::getimagecolors — Returns the color of the specified colormap index
  • Gmagick::getimagecolorspace — Gets the image colorspace
  • Gmagick::getimagecompose — Returns the composite operator associated with the image
  • Gmagick::getimagedelay — Gets the image delay
  • Gmagick::getimagedepth — Gets the depth of the image
  • Gmagick::getimagedispose — Gets the image disposal method
  • Gmagick::getimageextrema — Gets the extrema for the image
  • Gmagick::getimagefilename — Returns the filename of a particular image in a sequence
  • Gmagick::getimageformat — Returns the format of a particular image in a sequence
  • Gmagick::getimagegamma — Gets the image gamma
  • Gmagick::getimagegreenprimary — Returns the chromaticy green primary point
  • Gmagick::getimageheight — Returns the image height
  • Gmagick::getimagehistogram — Gets the image histogram
  • Gmagick::getimageindex — Gets the index of the current active image
  • Gmagick::getimageinterlacescheme — Gets the image interlace scheme
  • Gmagick::getimageiterations — Gets the image iterations
  • Gmagick::getimagematte — Check if the image has a matte channel
  • Gmagick::getimagemattecolor — Returns the image matte color
  • Gmagick::getimageprofile — Returns the named image profile.
  • Gmagick::getimageredprimary — Returns the chromaticity red primary point
  • Gmagick::getimagerenderingintent — Gets the image rendering intent
  • Gmagick::getimageresolution — Gets the image X and Y resolution
  • Gmagick::getimagescene — Gets the image scene
  • Gmagick::getimagesignature — Generates an SHA-256 message digest
  • Gmagick::getimagetype — Gets the potential image type.
  • Gmagick::getimageunits — Gets the image units of resolution
  • Gmagick::getimagewhitepoint — Returns the chromaticity white point
  • Gmagick::getimagewidth — Returns the width of the image
  • Gmagick::getpackagename — Returns the GraphicsMagick package name.
  • Gmagick::getquantumdepth — Returns the Gmagick quantum depth as a string.
  • Gmagick::getreleasedate — Returns the GraphicsMagick release date as a string.
  • Gmagick::getsamplingfactors — Gets the horizontal and vertical sampling factor.
  • Gmagick::getsize — Returns the size associated with the Gmagick object
  • Gmagick::getversion — Returns the GraphicsMagick API version
  • Gmagick::hasnextimage — Checks if the object has more images
  • Gmagick::haspreviousimage — Checks if the object has a previous image
  • Gmagick::implodeimage — Creates a new image as a copy
  • Gmagick::labelimage — Adds a label to an image.
  • Gmagick::levelimage — Adjusts the levels of an image
  • Gmagick::magnifyimage — Scales an image proportionally 2x
  • Gmagick::mapimage — Replaces the colors of an image with the closest color from a reference image.
  • Gmagick::medianfilterimage — Applies a digital filter
  • Gmagick::minifyimage — Scales an image proportionally to half its size
  • Gmagick::modulateimage — Control the brightness, saturation, and hue
  • Gmagick::motionblurimage — Simulates motion blur
  • Gmagick::newimage — Creates a new image
  • Gmagick::nextimage — Moves to the next image
  • Gmagick::normalizeimage — Enhances the contrast of a color image
  • Gmagick::oilpaintimage — Simulates an oil painting
  • Gmagick::previousimage — Move to the previous image in the object
  • Gmagick::profileimage — Adds or removes a profile from an image
  • Gmagick::quantizeimage — Analyzes the colors within a reference image
  • Gmagick::quantizeimages — The quantizeimages purpose
  • Gmagick::queryfontmetrics — Returns an array representing the font metrics
  • Gmagick::queryfonts — Returns the configured fonts
  • Gmagick::queryformats — Returns formats supported by Gmagick.
  • Gmagick::radialblurimage — Radial blurs an image
  • Gmagick::raiseimage — Creates a simulated 3d button-like effect
  • Gmagick::read — Reads image from filename
  • Gmagick::readimage — Reads image from filename
  • Gmagick::readimageblob — Reads image from a binary string
  • Gmagick::readimagefile — The readimagefile purpose
  • Gmagick::reducenoiseimage — Smooths the contours of an image
  • Gmagick::removeimage — Removes an image from the image list
  • Gmagick::removeimageprofile — Removes the named image profile and returns it
  • Gmagick::resampleimage — Resample image to desired resolution
  • Gmagick::resizeimage — Scales an image
  • Gmagick::rollimage — Offsets an image
  • Gmagick::rotateimage — Rotates an image
  • Gmagick::scaleimage — Scales the size of an image
  • Gmagick::separateimagechannel — Separates a channel from the image
  • Gmagick::setCompressionQuality — Sets the object's default compression quality
  • Gmagick::setfilename — Sets the filename before you read or write the image
  • Gmagick::setimagebackgroundcolor — Sets the image background color.
  • Gmagick::setimageblueprimary — Sets the image chromaticity blue primary point.
  • Gmagick::setimagebordercolor — Sets the image border color.
  • Gmagick::setimagechanneldepth — Sets the depth of a particular image channel
  • Gmagick::setimagecolorspace — Sets the image colorspace
  • Gmagick::setimagecompose — Sets the image composite operator
  • Gmagick::setimagedelay — Sets the image delay
  • Gmagick::setimagedepth — Sets the image depth
  • Gmagick::setimagedispose — Sets the image disposal method
  • Gmagick::setimagefilename — Sets the filename of a particular image in a sequence
  • Gmagick::setimageformat — Sets the format of a particular image
  • Gmagick::setimagegamma — Sets the image gamma
  • Gmagick::setimagegreenprimary — Sets the image chromaticity green primary point.
  • Gmagick::setimageindex — Set the iterator to the position in the image list specified with the index parameter
  • Gmagick::setimageinterlacescheme — Sets the interlace scheme of the image.
  • Gmagick::setimageiterations — Sets the image iterations.
  • Gmagick::setimageprofile — Adds a named profile to the Gmagick object
  • Gmagick::setimageredprimary — Sets the image chromaticity red primary point.
  • Gmagick::setimagerenderingintent — Sets the image rendering intent
  • Gmagick::setimageresolution — Sets the image resolution
  • Gmagick::setimagescene — Sets the image scene
  • Gmagick::setimagetype — Sets the image type
  • Gmagick::setimageunits — Sets the image units of resolution.
  • Gmagick::setimagewhitepoint — Sets the image chromaticity white point.
  • Gmagick::setsamplingfactors — Sets the image sampling factors.
  • Gmagick::setsize — Sets the size of the Gmagick object
  • Gmagick::shearimage — Creating a parallelogram
  • Gmagick::solarizeimage — Applies a solarizing effect to the image
  • Gmagick::spreadimage — Randomly displaces each pixel in a block
  • Gmagick::stripimage — Strips an image of all profiles and comments
  • Gmagick::swirlimage — Swirls the pixels about the center of the image
  • Gmagick::thumbnailimage — Changes the size of an image
  • Gmagick::trimimage — Remove edges from the image
  • Gmagick::write — 别名 Gmagick::writeimage
  • Gmagick::writeimage — Writes an image to the specified filename
范例
Gmagick::addimage
Gmagick


Adds new image to Gmagick object image list

Gmagick
Gmagick::addnoiseimage
Gmagick
PHP Manual

Gmagick::addimage

(PECL gmagick >= Unknown)

Gmagick::addimage — Adds new image to Gmagick object image list

说明

public Gmagick Gmagick::addimage ( Gmagick $Gmagick )

Adds new image to Gmagick object from the current position of the source object. After the operation iterator position is moved at the end of the list.

参数

source

The source Gmagick object

返回值

The Gmagick object with image added

错误／异常

错误时抛出 GmagickException。

Gmagick
Gmagick::addnoiseimage
Gmagick


Adds random noise to the image

Gmagick::addimage
Gmagick::annotateimage
Gmagick
PHP Manual

Gmagick::addnoiseimage

(PECL gmagick >= Unknown)

Gmagick::addnoiseimage — Adds random noise to the image

说明

public Gmagick Gmagick::addnoiseimage ( int $NOISE )

Adds random noise to the image.

参数

noise_type

The type of the noise. Refer to this list of noise constants.

返回值

The Gmagick object with noise added.

错误／异常

错误时抛出 GmagickException。

Gmagick::addimage
Gmagick::annotateimage
Gmagick


Annotates an image with text

Gmagick::addnoiseimage
Gmagick::blurimage
Gmagick
PHP Manual

Gmagick::annotateimage

(PECL gmagick >= Unknown)

Gmagick::annotateimage — Annotates an image with text

说明

public Gmagick Gmagick::annotateimage ( GmagickDraw $GmagickDraw , float $x , float $y , float $angle , string $text )

Annotates an image with text.

参数

GmagickDraw

The GmagickDraw object that contains settings for drawing the text

x

Horizontal offset in pixels to the left of text

y

Vertical offset in pixels to the baseline of text

angle

The angle at which to write the text

text

The string to draw

返回值

The Gmagick object with annotation made.

错误／异常

错误时抛出 GmagickException。

Gmagick::addnoiseimage
Gmagick::blurimage
Gmagick


Adds blur filter to image

Gmagick::annotateimage
Gmagick::borderimage
Gmagick
PHP Manual

Gmagick::blurimage

(PECL gmagick >= Unknown)

Gmagick::blurimage — Adds blur filter to image

说明

public Gmagick Gmagick::blurimage ( float $radius , float $sigma [, int $channel ] )

Adds blur filter to image.

参数

radius

Blur radius

sigma

Standard deviation

返回值

The blurred Gmagick object

错误／异常

错误时抛出 GmagickException。

Gmagick::annotateimage
Gmagick::borderimage
Gmagick


Surrounds the image with a border

Gmagick::blurimage
Gmagick::charcoalimage
Gmagick
PHP Manual

Gmagick::borderimage

(PECL gmagick >= Unknown)

Gmagick::borderimage — Surrounds the image with a border

说明

public Gmagick Gmagick::borderimage ( GmagickPixel $color , int $width , int $height )

Surrounds the image with a border of the color defined by the bordercolor GmagickPixel object or a color string.

参数

color

GmagickPixel object or a string containing the border color

width

Border width

height

Border height

返回值

The Gmagick object with border defined

错误／异常

错误时抛出 GmagickException。

Gmagick::blurimage
Gmagick::charcoalimage
Gmagick


Simulates a charcoal drawing

Gmagick::borderimage
Gmagick::chopimage
Gmagick
PHP Manual

Gmagick::charcoalimage

(PECL gmagick >= Unknown)

Gmagick::charcoalimage — Simulates a charcoal drawing

说明

public Gmagick Gmagick::charcoalimage ( float $radius , float $sigma )

Simulates a charcoal drawing.

参数

radius

The radius of the Gaussian, in pixels, not counting the center pixel

sigma

The standard deviation of the Gaussian, in pixels

返回值

The Gmagick object with charcoal simulation

错误／异常

错误时抛出 GmagickException。

Gmagick::borderimage
Gmagick::chopimage
Gmagick


Removes a region of an image and trims

Gmagick::charcoalimage
Gmagick::clear
Gmagick
PHP Manual

Gmagick::chopimage

(PECL gmagick >= Unknown)

Gmagick::chopimage — Removes a region of an image and trims

说明

public Gmagick Gmagick::chopimage ( int $width , int $height , int $x , int $y )

Removes a region of an image and collapses the image to occupy the removed portion.

参数

width

Width of the chopped area

height

Height of the chopped area

x

X origo of the chopped area

y

Y origo of the chopped area

返回值

The chopped Gmagick object

错误／异常

错误时抛出 GmagickException。

Gmagick::charcoalimage
Gmagick::clear
Gmagick


Clears all resources associated to Gmagick object

Gmagick::chopimage
Gmagick::commentimage
Gmagick
PHP Manual

Gmagick::clear

(PECL gmagick >= Unknown)

Gmagick::clear — Clears all resources associated to Gmagick object

说明

public Gmagick Gmagick::clear ( void )

Clears all resources associated to Gmagick object

参数

此函数没有参数。

返回值

The cleared Gmagick object

错误／异常

错误时抛出 GmagickException。

Gmagick::chopimage
Gmagick::commentimage
Gmagick


Adds a comment to your image

Gmagick::clear
Gmagick::compositeimage
Gmagick
PHP Manual

Gmagick::commentimage

(PECL gmagick >= Unknown)

Gmagick::commentimage — Adds a comment to your image

说明

public Gmagick Gmagick::commentimage ( string $comment )

Adds a comment to your image.

参数

comment

The comment to add

返回值

The Gmagick object with comment added.

错误／异常

错误时抛出 GmagickException。

Gmagick::clear
Gmagick::compositeimage
Gmagick


Composite one image onto another

Gmagick::commentimage
Gmagick::__construct
Gmagick
PHP Manual

Gmagick::compositeimage

(PECL gmagick >= Unknown)

Gmagick::compositeimage — Composite one image onto another

说明

public Gmagick Gmagick::compositeimage ( Gmagick $source , int $COMPOSE , int $x , int $y )

Composite one image onto another at the specified offset.

参数

source

Gmagick object which holds the composite image

compose

Composite operator.

x

The column offset of the composited image

y

The row offset of the composited image

返回值

The Gmagick object with compositions.

错误／异常

错误时抛出 GmagickException。

Gmagick::commentimage
Gmagick::__construct
Gmagick


The Gmagick constructor

Gmagick::compositeimage
Gmagick::cropimage
Gmagick
PHP Manual

Gmagick::__construct

(PECL gmagick >= Unknown)

Gmagick::__construct — The Gmagick constructor

说明

public Gmagick::__construct ([ string $filename ] )

The Gmagick constructor.

参数

filename

The path to an image to load or array of paths

返回值

Returns a new Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::compositeimage
Gmagick::cropimage
Gmagick


Extracts a region of the image

Gmagick::__construct
Gmagick::cropthumbnailimage
Gmagick
PHP Manual

Gmagick::cropimage

(PECL gmagick >= Unknown)

Gmagick::cropimage — Extracts a region of the image

说明

public Gmagick Gmagick::cropimage ( int $width , int $height , int $x , int $y )

Extracts a region of the image.

参数

width

The width of the crop

height

The height of the crop

x

The X coordinate of the cropped region's top left corner

y

The Y coordinate of the cropped region's top left corner

返回值

The cropped Gmagick object

错误／异常

错误时抛出 GmagickException。

Gmagick::__construct
Gmagick::cropthumbnailimage
Gmagick


Creates a crop thumbnail

Gmagick::cropimage
Gmagick::current
Gmagick
PHP Manual

Gmagick::cropthumbnailimage

(PECL gmagick >= Unknown)

Gmagick::cropthumbnailimage — Creates a crop thumbnail

说明

public Gmagick Gmagick::cropthumbnailimage ( int $width , int $height )

Creates a fixed size thumbnail by first scaling the image down and cropping a specified area from the center.

参数

width

The width of the thumbnail

height

The Height of the thumbnail

返回值

The cropped Gmagick object

错误／异常

错误时抛出 GmagickException。

Gmagick::cropimage
Gmagick::current
Gmagick


The current purpose

Gmagick::cropthumbnailimage
Gmagick::cyclecolormapimage
Gmagick
PHP Manual

Gmagick::current

(PECL gmagick >= Unknown)

Gmagick::current — The current purpose

说明

public Gmagick Gmagick::current ( void )

Returns reference to the current gmagick object with image pointer at the correct sequence.

参数

此函数没有参数。

返回值

Returns self on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::cropthumbnailimage
Gmagick::cyclecolormapimage
Gmagick


Displaces an image's colormap

Gmagick::current
Gmagick::deconstructimages
Gmagick
PHP Manual

Gmagick::cyclecolormapimage

(PECL gmagick >= Unknown)

Gmagick::cyclecolormapimage — Displaces an image's colormap

说明

public Gmagick Gmagick::cyclecolormapimage ( int $displace )

Displaces an image's colormap by a given number of positions. If you cycle the colormap a number of times you can produce a psychedelic effect.

参数

displace

The amount to displace the colormap.

返回值

Returns self on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::current
Gmagick::deconstructimages
Gmagick


Returns certain pixel differences between images

Gmagick::cyclecolormapimage
Gmagick::despeckleimage
Gmagick
PHP Manual

Gmagick::deconstructimages

(PECL gmagick >= Unknown)

Gmagick::deconstructimages — Returns certain pixel differences between images

说明

public Gmagick Gmagick::deconstructimages ( void )

Compares each image with the next in a sequence and returns the maximum bounding region of any pixel differences it discovers.

参数

此函数没有参数。

返回值

Returns a new Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::cyclecolormapimage
Gmagick::despeckleimage
Gmagick


The despeckleimage purpose

Gmagick::deconstructimages
Gmagick::destroy
Gmagick
PHP Manual

Gmagick::despeckleimage

(PECL gmagick >= Unknown)

Gmagick::despeckleimage — The despeckleimage purpose

说明

public Gmagick Gmagick::despeckleimage ( void )

Reduces the speckle noise in an image while preserving the edges of the original image.

参数

此函数没有参数。

返回值

The despeckled Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

范例

Example #1 Gmagick::despeckleimage() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

Gmagick::deconstructimages
Gmagick::destroy
Gmagick


The destroy purpose

Gmagick::despeckleimage
Gmagick::drawimage
Gmagick
PHP Manual

Gmagick::destroy

(PECL gmagick >= Unknown)

Gmagick::destroy — The destroy purpose

说明

public bool Gmagick::destroy ( void )

Destroys the Gmagick object and frees all resources associated with it

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

错误时抛出 GmagickException。

Gmagick::despeckleimage
Gmagick::drawimage
Gmagick


Renders the GmagickDraw object on the current image

Gmagick::destroy
Gmagick::edgeimage
Gmagick
PHP Manual

Gmagick::drawimage

(PECL gmagick >= Unknown)

Gmagick::drawimage — Renders the GmagickDraw object on the current image

说明

public Gmagick Gmagick::drawimage ( GmagickDraw $GmagickDraw )

Renders the GmagickDraw object on the current image

参数

GmagickDraw

The drawing operations to render on the image.

返回值

The drawn Gmagick object

错误／异常

错误时抛出 GmagickException。

Gmagick::destroy
Gmagick::edgeimage
Gmagick


Enhance edges within the image

Gmagick::drawimage
Gmagick::embossimage
Gmagick
PHP Manual

Gmagick::edgeimage

(PECL gmagick >= Unknown)

Gmagick::edgeimage — Enhance edges within the image

说明

public Gmagick Gmagick::edgeimage ( float $radius )

Enhance edges within the image with a convolution filter of the given radius. Use radius 0 and it will be auto-selected.

参数

radius

The radius of the operation.

返回值

The Gmagick object with edges enhanced.

错误／异常

错误时抛出 GmagickException。

Gmagick::drawimage
Gmagick::embossimage
Gmagick


Returns a grayscale image with a three-dimensional effect

Gmagick::edgeimage
Gmagick::enhanceimage
Gmagick
PHP Manual

Gmagick::embossimage

(PECL gmagick >= Unknown)

Gmagick::embossimage — Returns a grayscale image with a three-dimensional effect

说明

public Gmagick Gmagick::embossimage ( float $radius , float $sigma )

Returns a grayscale image with a three-dimensional effect. We convolve the image with a Gaussian operator of the given radius and standard deviation (sigma). For reasonable results, radius should be larger than sigma. Use a radius of 0 and it will choose a suitable radius for you.

参数

radius

The radius of the effect

sigma

The sigma of the effect

返回值

The embossed Gmagick object.

错误／异常

错误时抛出 GmagickException。

Gmagick::edgeimage
Gmagick::enhanceimage
Gmagick


Improves the quality of a noisy image

Gmagick::embossimage
Gmagick::equalizeimage
Gmagick
PHP Manual

Gmagick::enhanceimage

(PECL gmagick >= Unknown)

Gmagick::enhanceimage — Improves the quality of a noisy image

说明

public Gmagick Gmagick::enhanceimage ( void )

Applies a digital filter that improves the quality of a noisy image.

返回值

The enhanced Gmagick object.

错误／异常

错误时抛出 GmagickException。

Gmagick::embossimage
Gmagick::equalizeimage
Gmagick


Equalizes the image histogram

Gmagick::enhanceimage
Gmagick::flipimage
Gmagick
PHP Manual

Gmagick::equalizeimage

(PECL gmagick >= Unknown)

Gmagick::equalizeimage — Equalizes the image histogram

说明

public Gmagick Gmagick::equalizeimage ( void )

Equalizes the image histogram.

返回值

The equalized Gmagick object.

错误／异常

错误时抛出 GmagickException。

Gmagick::enhanceimage
Gmagick::flipimage
Gmagick


Creates a vertical mirror image

Gmagick::equalizeimage
Gmagick::flopimage
Gmagick
PHP Manual

Gmagick::flipimage

(PECL gmagick >= Unknown)

Gmagick::flipimage — Creates a vertical mirror image

说明

public Gmagick Gmagick::flipimage ( void )

Creates a vertical mirror image by reflecting the pixels around the central x-axis.

返回值

The flipped Gmagick object.

错误／异常

错误时抛出 GmagickException。

Gmagick::equalizeimage
Gmagick::flopimage
Gmagick


The flopimage purpose

Gmagick::flipimage
Gmagick::frameimage
Gmagick
PHP Manual

Gmagick::flopimage

(PECL gmagick >= Unknown)

Gmagick::flopimage — The flopimage purpose

说明

public Gmagick Gmagick::flopimage ( void )

Creates a horizontal mirror image by reflecting the pixels around the central y-axis.

返回值

The flopped Gmagick object.

错误／异常

错误时抛出 GmagickException。

Gmagick::flipimage
Gmagick::frameimage
Gmagick


Adds a simulated three-dimensional border

Gmagick::flopimage
Gmagick::gammaimage
Gmagick
PHP Manual

Gmagick::frameimage

(PECL gmagick >= Unknown)

Gmagick::frameimage — Adds a simulated three-dimensional border

说明

public Gmagick Gmagick::frameimage ( GmagickPixel $color , int $width , int $height , int $inner_bevel , int $outer_bevel )

Adds a simulated three-dimensional border around the image. The width and height specify the border width of the vertical and horizontal sides of the frame. The inner and outer bevels indicate the width of the inner and outer shadows of the frame.

参数

color

GmagickPixel object or a float representing the matte color

width

The width of the border

height

The height of the border

inner_bevel

The inner bevel width

outer_bevel

The outer bevel width

返回值

The framed Gmagick object.

错误／异常

错误时抛出 GmagickException。

Gmagick::flopimage
Gmagick::gammaimage
Gmagick


Gamma-corrects an image

Gmagick::frameimage
Gmagick::getcopyright
Gmagick
PHP Manual

Gmagick::gammaimage

(PECL gmagick >= Unknown)

Gmagick::gammaimage — Gamma-corrects an image

说明

public Gmagick Gmagick::gammaimage ( float $gamma )

Gamma-corrects an image. The same image viewed on different devices will have perceptual differences in the way the image's intensities are represented on the screen. Specify individual gamma levels for the red, green, and blue channels, or adjust all three with the gamma parameter. Values typically range from 0.8 to 2.3.

参数

gamma

The amount of gamma-correction.

返回值

The gamma corrected Gmagick object.

错误／异常

错误时抛出 GmagickException。

Gmagick::frameimage
Gmagick::getcopyright
Gmagick


Returns the GraphicsMagick API copyright as a string

Gmagick::gammaimage
Gmagick::getfilename
Gmagick
PHP Manual

Gmagick::getcopyright

(PECL gmagick >= Unknown)

Gmagick::getcopyright — Returns the GraphicsMagick API copyright as a string

说明

public string Gmagick::getcopyright ( void )

Returns the GraphicsMagick API copyright as a string.

返回值

Returns a string containing the copyright notice of GraphicsMagick and Magickwand C API.

错误／异常

错误时抛出 GmagickException。

Gmagick::gammaimage
Gmagick::getfilename
Gmagick


The filename associated with an image sequence

Gmagick::getcopyright
Gmagick::getimagebackgroundcolor
Gmagick
PHP Manual

Gmagick::getfilename

(PECL gmagick >= Unknown)

Gmagick::getfilename — The filename associated with an image sequence

说明

public string Gmagick::getfilename ( void )

Returns the filename associated with an image sequence.

返回值

Returns a string on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::getcopyright
Gmagick::getimagebackgroundcolor
Gmagick


Returns the image background color

Gmagick::getfilename
Gmagick::getimageblueprimary
Gmagick
PHP Manual

Gmagick::getimagebackgroundcolor

(PECL gmagick >= Unknown)

Gmagick::getimagebackgroundcolor — Returns the image background color

说明

public GmagickPixel Gmagick::getimagebackgroundcolor ( void )

Returns the image background color.

参数

此函数没有参数。

返回值

Returns an GmagickPixel set to the background color of the image.

错误／异常

错误时抛出 GmagickException。

Gmagick::getfilename
Gmagick::getimageblueprimary
Gmagick


Returns the chromaticy blue primary point

Gmagick::getimagebackgroundcolor
Gmagick::getimagebordercolor
Gmagick
PHP Manual

Gmagick::getimageblueprimary

(PECL gmagick >= Unknown)

Gmagick::getimageblueprimary — Returns the chromaticy blue primary point

说明

public array Gmagick::getimageblueprimary ( void )

Returns the chromaticity blue primary point for the image.

参数

x

The chromaticity blue primary x-point.

y

The chromaticity blue primary y-point.

返回值

Array consisting of "x" and "y" coordinates of point.

错误／异常

错误时抛出 GmagickException。

Gmagick::getimagebackgroundcolor
Gmagick::getimagebordercolor
Gmagick


Returns the image border color

Gmagick::getimageblueprimary
Gmagick::getimagechanneldepth
Gmagick
PHP Manual

Gmagick::getimagebordercolor

(PECL gmagick >= Unknown)

Gmagick::getimagebordercolor — Returns the image border color

说明

public GmagickPixel Gmagick::getimagebordercolor ( void )

Returns the image border color.

参数

此函数没有参数。

返回值

GmagickPixel object representing the color of the border

错误／异常

错误时抛出 GmagickException。

Gmagick::getimageblueprimary
Gmagick::getimagechanneldepth
Gmagick


Gets the depth for a particular image channel

Gmagick::getimagebordercolor
Gmagick::getimagecolors
Gmagick
PHP Manual

Gmagick::getimagechanneldepth

(PECL gmagick >= Unknown)

Gmagick::getimagechanneldepth — Gets the depth for a particular image channel

说明

public int Gmagick::getimagechanneldepth ( int $channel_type )

Gets the depth for a particular image channel.

参数

此函数没有参数。

返回值

Depth of image channel

错误／异常

错误时抛出 GmagickException。

Gmagick::getimagebordercolor
Gmagick::getimagecolors
Gmagick


Returns the color of the specified colormap index

Gmagick::getimagechanneldepth
Gmagick::getimagecolorspace
Gmagick
PHP Manual

Gmagick::getimagecolors

(PECL gmagick >= Unknown)

Gmagick::getimagecolors — Returns the color of the specified colormap index

说明

public int Gmagick::getimagecolors ( void )

Returns the color of the specified colormap index.

参数

此函数没有参数。

返回值

The number of colors in image.

错误／异常

错误时抛出 GmagickException。

Gmagick::getimagechanneldepth
Gmagick::getimagecolorspace
Gmagick


Gets the image colorspace

Gmagick::getimagecolors
Gmagick::getimagecompose
Gmagick
PHP Manual

Gmagick::getimagecolorspace

(PECL gmagick >= Unknown)

Gmagick::getimagecolorspace — Gets the image colorspace

说明

public int Gmagick::getimagecolorspace ( void )

Gets the image colorspace.

参数

此函数没有参数。

返回值

Colorspace

错误／异常

错误时抛出 GmagickException。

Gmagick::getimagecolors
Gmagick::getimagecompose
Gmagick


Returns the composite operator associated with the image

Gmagick::getimagecolorspace
Gmagick::getimagedelay
Gmagick
PHP Manual

Gmagick::getimagecompose

(PECL gmagick >= Unknown)

Gmagick::getimagecompose — Returns the composite operator associated with the image

说明

public int Gmagick::getimagecompose ( void )

Returns the composite operator associated with the image.

参数

此函数没有参数。

返回值

Returns the composite operator associated with the image.

错误／异常

错误时抛出 GmagickException。

Gmagick::getimagecolorspace
Gmagick::getimagedelay
Gmagick


Gets the image delay

Gmagick::getimagecompose
Gmagick::getimagedepth
Gmagick
PHP Manual

Gmagick::getimagedelay

(PECL gmagick >= Unknown)

Gmagick::getimagedelay — Gets the image delay

说明

public int Gmagick::getimagedelay ( void )

Gets the image delay

参数

此函数没有参数。

返回值

Returns the composite operator associated with the image.

错误／异常

错误时抛出 GmagickException。

Gmagick::getimagecompose
Gmagick::getimagedepth
Gmagick


Gets the depth of the image

Gmagick::getimagedelay
Gmagick::getimagedispose
Gmagick
PHP Manual

Gmagick::getimagedepth

(PECL gmagick >= Unknown)

Gmagick::getimagedepth — Gets the depth of the image

说明

public int Gmagick::getimagedepth ( void )

Gets the depth of the image.

参数

此函数没有参数。

返回值

Image depth

错误／异常

错误时抛出 GmagickException。

Gmagick::getimagedelay
Gmagick::getimagedispose
Gmagick


Gets the image disposal method

Gmagick::getimagedepth
Gmagick::getimageextrema
Gmagick
PHP Manual

Gmagick::getimagedispose

(PECL gmagick >= Unknown)

Gmagick::getimagedispose — Gets the image disposal method

说明

public int Gmagick::getimagedispose ( void )

Gets the image disposal method

参数

此函数没有参数。

返回值

Returns the dispose method on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::getimagedepth
Gmagick::getimageextrema
Gmagick


Gets the extrema for the image

Gmagick::getimagedispose
Gmagick::getimagefilename
Gmagick
PHP Manual

Gmagick::getimageextrema

(PECL gmagick >= Unknown)

Gmagick::getimageextrema — Gets the extrema for the image

说明

public array Gmagick::getimageextrema ( void )

Returns an associative array with the keys "min" and "max". 错误时抛出 GmagickException。

参数

此函数没有参数。

返回值

Returns an associative array with the keys "min" and "max".

错误／异常

错误时抛出 GmagickException。

Gmagick::getimagedispose
Gmagick::getimagefilename
Gmagick


Returns the filename of a particular image in a sequence

Gmagick::getimageextrema
Gmagick::getimageformat
Gmagick
PHP Manual

Gmagick::getimagefilename

(PECL gmagick >= Unknown)

Gmagick::getimagefilename — Returns the filename of a particular image in a sequence

说明

public string Gmagick::getimagefilename ( void )

Returns the filename of a particular image in a sequence

参数

此函数没有参数。

返回值

Returns a string with the filename of the image

错误／异常

错误时抛出 GmagickException。

Gmagick::getimageextrema
Gmagick::getimageformat
Gmagick


Returns the format of a particular image in a sequence

Gmagick::getimagefilename
Gmagick::getimagegamma
Gmagick
PHP Manual

Gmagick::getimageformat

(PECL gmagick >= Unknown)

Gmagick::getimageformat — Returns the format of a particular image in a sequence

说明

public string Gmagick::getimageformat ( void )

Returns the format of a particular image in a sequence.

参数

此函数没有参数。

返回值

Returns a string containing the image format on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::getimagefilename
Gmagick::getimagegamma
Gmagick


Gets the image gamma

Gmagick::getimageformat
Gmagick::getimagegreenprimary
Gmagick
PHP Manual

Gmagick::getimagegamma

(PECL gmagick >= Unknown)

Gmagick::getimagegamma — Gets the image gamma

说明

public float Gmagick::getimagegamma ( void )

Gets the image gamma

参数

此函数没有参数。

返回值

Returns the image gamma on success

错误／异常

错误时抛出 GmagickException。

Gmagick::getimageformat
Gmagick::getimagegreenprimary
Gmagick


Returns the chromaticy green primary point

Gmagick::getimagegamma
Gmagick::getimageheight
Gmagick
PHP Manual

Gmagick::getimagegreenprimary

(PECL gmagick >= Unknown)

Gmagick::getimagegreenprimary — Returns the chromaticy green primary point

说明

public array Gmagick::getimagegreenprimary ( void )

Returns the chromaticity green primary point. Returns an array with the keys "x" and "y".

参数

此函数没有参数。

返回值

Returns an array with the keys "x" and "y" on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::getimagegamma
Gmagick::getimageheight
Gmagick


Returns the image height

Gmagick::getimagegreenprimary
Gmagick::getimagehistogram
Gmagick
PHP Manual

Gmagick::getimageheight

(PECL gmagick >= Unknown)

Gmagick::getimageheight — Returns the image height

说明

public int Gmagick::getimageheight ( void )

Returns the image height

参数

此函数没有参数。

返回值

Returns the image height in pixels.

错误／异常

错误时抛出 GmagickException。

Gmagick::getimagegreenprimary
Gmagick::getimagehistogram
Gmagick


Gets the image histogram

Gmagick::getimageheight
Gmagick::getimageindex
Gmagick
PHP Manual

Gmagick::getimagehistogram

(PECL gmagick >= Unknown)

Gmagick::getimagehistogram — Gets the image histogram

说明

public array Gmagick::getimagehistogram ( void )

Returns the image histogram as an array of GmagickPixel objects. Throw an GmagickException on error.

参数

此函数没有参数。

返回值

Returns the image histogram as an array of GmagickPixel objects.

错误／异常

错误时抛出 GmagickException。

Gmagick::getimageheight
Gmagick::getimageindex
Gmagick


Gets the index of the current active image

Gmagick::getimagehistogram
Gmagick::getimageinterlacescheme
Gmagick
PHP Manual

Gmagick::getimageindex

(PECL gmagick >= Unknown)

Gmagick::getimageindex — Gets the index of the current active image

说明

public int Gmagick::getimageindex ( void )

Returns the index of the current active image within the Gmagick object.

参数

此函数没有参数。

返回值

Index of current active image

错误／异常

错误时抛出 GmagickException。

Gmagick::getimagehistogram
Gmagick::getimageinterlacescheme
Gmagick


Gets the image interlace scheme

Gmagick::getimageindex
Gmagick::getimageiterations
Gmagick
PHP Manual

Gmagick::getimageinterlacescheme

(PECL gmagick >= Unknown)

Gmagick::getimageinterlacescheme — Gets the image interlace scheme

说明

public int Gmagick::getimageinterlacescheme ( void )

Gets the image interlace scheme.

参数

此函数没有参数。

返回值

Returns the interlace scheme as an integer on success

错误／异常

错误时抛出 GmagickException。

Gmagick::getimageindex
Gmagick::getimageiterations
Gmagick


Gets the image iterations

Gmagick::getimageinterlacescheme
Gmagick::getimagematte
Gmagick
PHP Manual

Gmagick::getimageiterations

(PECL gmagick >= Unknown)

Gmagick::getimageiterations — Gets the image iterations

说明

public int Gmagick::getimageiterations ( void )

Gets the image iterations.

参数

此函数没有参数。

返回值

Returns the image iterations as an integer.

错误／异常

错误时抛出 GmagickException。

Gmagick::getimageinterlacescheme
Gmagick::getimagematte
Gmagick


Check if the image has a matte channel

Gmagick::getimageiterations
Gmagick::getimagemattecolor
Gmagick
PHP Manual

Gmagick::getimagematte

(PECL gmagick >= Unknown)

Gmagick::getimagematte — Check if the image has a matte channel

说明

public int Gmagick::getimagematte ( void )

Returns TRUE if the image has a matte channel, otherwise FALSE.

参数

此函数没有参数。

返回值

Returns TRUE if the image has a matte channel, otherwise FALSE.

错误／异常

错误时抛出 GmagickException。

Gmagick::getimageiterations
Gmagick::getimagemattecolor
Gmagick


Returns the image matte color

Gmagick::getimagematte
Gmagick::getimageprofile
Gmagick
PHP Manual

Gmagick::getimagemattecolor

(PECL gmagick >= Unknown)

Gmagick::getimagemattecolor — Returns the image matte color

说明

public GmagickPixel Gmagick::getimagemattecolor ( void )

Returns GmagickPixel object on success. Throw an GmagickException on error.

参数

此函数没有参数。

返回值

Returns GmagickPixel object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::getimagematte
Gmagick::getimageprofile
Gmagick


Returns the named image profile.

Gmagick::getimagemattecolor
Gmagick::getimageredprimary
Gmagick
PHP Manual

Gmagick::getimageprofile

(PECL gmagick >= Unknown)

Gmagick::getimageprofile — Returns the named image profile.

说明

public string Gmagick::getimageprofile ( string $name )

Returns the named image profile.

参数

此函数没有参数。

返回值

Returns a string containing the image profile.

错误／异常

错误时抛出 GmagickException。

Gmagick::getimagemattecolor
Gmagick::getimageredprimary
Gmagick


Returns the chromaticity red primary point

Gmagick::getimageprofile
Gmagick::getimagerenderingintent
Gmagick
PHP Manual

Gmagick::getimageredprimary

(PECL gmagick >= Unknown)

Gmagick::getimageredprimary — Returns the chromaticity red primary point

说明

public array Gmagick::getimageredprimary ( void )

Returns the chromaticity red primary point as an array with the keys "x" and "y".

参数

此函数没有参数。

返回值

Returns the chromaticity red primary point as an array with the keys "x" and "y".

错误／异常

错误时抛出 GmagickException。

Gmagick::getimageprofile
Gmagick::getimagerenderingintent
Gmagick


Gets the image rendering intent

Gmagick::getimageredprimary
Gmagick::getimageresolution
Gmagick
PHP Manual

Gmagick::getimagerenderingintent

(PECL gmagick >= Unknown)

Gmagick::getimagerenderingintent — Gets the image rendering intent

说明

public int Gmagick::getimagerenderingintent ( void )

Gets the image rendering intent

参数

此函数没有参数。

返回值

Extracts a region of the image and returns it as a a new wand

错误／异常

错误时抛出 GmagickException。

Gmagick::getimageredprimary
Gmagick::getimageresolution
Gmagick


Gets the image X and Y resolution

Gmagick::getimagerenderingintent
Gmagick::getimagescene
Gmagick
PHP Manual

Gmagick::getimageresolution

(PECL gmagick >= Unknown)

Gmagick::getimageresolution — Gets the image X and Y resolution

说明

public array Gmagick::getimageresolution ( void )

Returns the resolution as an array.

参数

此函数没有参数。

返回值

Returns the resolution as an array.

错误／异常

错误时抛出 GmagickException。

Gmagick::getimagerenderingintent
Gmagick::getimagescene
Gmagick


Gets the image scene

Gmagick::getimageresolution
Gmagick::getimagesignature
Gmagick
PHP Manual

Gmagick::getimagescene

(PECL gmagick >= Unknown)

Gmagick::getimagescene — Gets the image scene

说明

public int Gmagick::getimagescene ( void )

Gets the image scene.

参数

此函数没有参数。

返回值

Returns the image scene.

错误／异常

错误时抛出 GmagickException。

Gmagick::getimageresolution
Gmagick::getimagesignature
Gmagick


Generates an SHA-256 message digest

Gmagick::getimagescene
Gmagick::getimagetype
Gmagick
PHP Manual

Gmagick::getimagesignature

(PECL gmagick >= Unknown)

Gmagick::getimagesignature — Generates an SHA-256 message digest

说明

public string Gmagick::getimagesignature ( void )

Generates an SHA-256 message digest for the image pixel stream.

参数

此函数没有参数。

返回值

Returns a string containing the SHA-256 hash of the file.

错误／异常

错误时抛出 GmagickException。

Gmagick::getimagescene
Gmagick::getimagetype
Gmagick


Gets the potential image type.

Gmagick::getimagesignature
Gmagick::getimageunits
Gmagick
PHP Manual

Gmagick::getimagetype

(PECL gmagick >= Unknown)

Gmagick::getimagetype — Gets the potential image type.

说明

public int Gmagick::getimagetype ( void )

Gets the potential image type.

参数

此函数没有参数。

返回值

Returns the potential image type.

错误／异常

错误时抛出 GmagickException。

Gmagick::getimagesignature
Gmagick::getimageunits
Gmagick


Gets the image units of resolution

Gmagick::getimagetype
Gmagick::getimagewhitepoint
Gmagick
PHP Manual

Gmagick::getimageunits

(PECL gmagick >= Unknown)

Gmagick::getimageunits — Gets the image units of resolution

说明

public int Gmagick::getimageunits ( void )

Gets the image units of resolution.

参数

此函数没有参数。

返回值

Returns the image units of resolution.

Gmagick::getimagetype
Gmagick::getimagewhitepoint
Gmagick


Returns the chromaticity white point

Gmagick::getimageunits
Gmagick::getimagewidth
Gmagick
PHP Manual

Gmagick::getimagewhitepoint

(PECL gmagick >= Unknown)

Gmagick::getimagewhitepoint — Returns the chromaticity white point

说明

public array Gmagick::getimagewhitepoint ( void )

Returns the chromaticity white point as an associative array with the keys "x" and "y".

参数

此函数没有参数。

返回值

Returns the chromaticity white point as an associative array with the keys "x" and "y".

错误／异常

错误时抛出 GmagickException。

Gmagick::getimageunits
Gmagick::getimagewidth
Gmagick


Returns the width of the image

Gmagick::getimagewhitepoint
Gmagick::getpackagename
Gmagick
PHP Manual

Gmagick::getimagewidth

(PECL gmagick >= Unknown)

Gmagick::getimagewidth — Returns the width of the image

说明

public int Gmagick::getimagewidth ( void )

Returns the width of the image.

参数

此函数没有参数。

返回值

Returns the image width.

错误／异常

错误时抛出 GmagickException。

Gmagick::getimagewhitepoint
Gmagick::getpackagename
Gmagick


Returns the GraphicsMagick package name.

Gmagick::getimagewidth
Gmagick::getquantumdepth
Gmagick
PHP Manual

Gmagick::getpackagename

(PECL gmagick >= Unknown)

Gmagick::getpackagename — Returns the GraphicsMagick package name.

说明

public string Gmagick::getpackagename ( void )

Returns the GraphicsMagick package name.

参数

此函数没有参数。

返回值

Returns the GraphicsMagick package name as a string.

错误／异常

错误时抛出 GmagickException。

Gmagick::getimagewidth
Gmagick::getquantumdepth
Gmagick


Returns the Gmagick quantum depth as a string.

Gmagick::getpackagename
Gmagick::getreleasedate
Gmagick
PHP Manual

Gmagick::getquantumdepth

(PECL gmagick >= Unknown)

Gmagick::getquantumdepth — Returns the Gmagick quantum depth as a string.

说明

public array Gmagick::getquantumdepth ( void )

Returns the Gmagick quantum depth as a string.

参数

此函数没有参数。

返回值

Returns the Gmagick quantum depth as a string.

错误／异常

错误时抛出 GmagickException。

Gmagick::getpackagename
Gmagick::getreleasedate
Gmagick


Returns the GraphicsMagick release date as a string.

Gmagick::getquantumdepth
Gmagick::getsamplingfactors
Gmagick
PHP Manual

Gmagick::getreleasedate

(PECL gmagick >= Unknown)

Gmagick::getreleasedate — Returns the GraphicsMagick release date as a string.

说明

public string Gmagick::getreleasedate ( void )

Returns the GraphicsMagick release date as a string.

参数

此函数没有参数。

返回值

Returns the GraphicsMagick release date as a string.

错误／异常

错误时抛出 GmagickException。

Gmagick::getquantumdepth
Gmagick::getsamplingfactors
Gmagick


Gets the horizontal and vertical sampling factor.

Gmagick::getreleasedate
Gmagick::getsize
Gmagick
PHP Manual

Gmagick::getsamplingfactors

(PECL gmagick >= Unknown)

Gmagick::getsamplingfactors — Gets the horizontal and vertical sampling factor.

说明

public array Gmagick::getsamplingfactors ( void )

Gets the horizontal and vertical sampling factor.

参数

此函数没有参数。

返回值

Returns an associative array with the horizontal and vertical sampling factors of the image.

错误／异常

错误时抛出 GmagickException。

Gmagick::getreleasedate
Gmagick::getsize
Gmagick


Returns the size associated with the Gmagick object

Gmagick::getsamplingfactors
Gmagick::getversion
Gmagick
PHP Manual

Gmagick::getsize

(PECL gmagick >= Unknown)

Gmagick::getsize — Returns the size associated with the Gmagick object

说明

public array Gmagick::getsize ( void )

Returns the size associated with the Gmagick object as an array with the keys "columns" and "rows".

参数

此函数没有参数。

返回值

Returns the size associated with the Gmagick object as an array with the keys "columns" and "rows".

错误／异常

错误时抛出 GmagickException。

Gmagick::getsamplingfactors
Gmagick::getversion
Gmagick


Returns the GraphicsMagick API version

Gmagick::getsize
Gmagick::hasnextimage
Gmagick
PHP Manual

Gmagick::getversion

(PECL gmagick >= Unknown)

Gmagick::getversion — Returns the GraphicsMagick API version

说明

public array Gmagick::getversion ( void )

Returns the GraphicsMagick API version as a string and as a number.

参数

此函数没有参数。

返回值

Returns the GraphicsMagick API version as a string and as a number.

错误／异常

错误时抛出 GmagickException。

Gmagick::getsize
Gmagick::hasnextimage
Gmagick


Checks if the object has more images

Gmagick::getversion
Gmagick::haspreviousimage
Gmagick
PHP Manual

Gmagick::hasnextimage

(PECL gmagick >= Unknown)

Gmagick::hasnextimage — Checks if the object has more images

说明

public mixed Gmagick::hasnextimage ( void )

Returns TRUE if the object has more images when traversing the list in the forward direction.

参数

此函数没有参数。

返回值

Returns TRUE if the object has more images when traversing the list in the forward direction, returns FALSE if there are none.

错误／异常

错误时抛出 GmagickException。

Gmagick::getversion
Gmagick::haspreviousimage
Gmagick


Checks if the object has a previous image

Gmagick::hasnextimage
Gmagick::implodeimage
Gmagick
PHP Manual

Gmagick::haspreviousimage

(PECL gmagick >= Unknown)

Gmagick::haspreviousimage — Checks if the object has a previous image

说明

public mixed Gmagick::haspreviousimage ( void )

Returns TRUE if the object has more images when traversing the list in the reverse direction

参数

此函数没有参数。

返回值

Returns TRUE if the object has more images when traversing the list in the reverse direction, returns FALSE if there are none.

错误／异常

错误时抛出 GmagickException。

Gmagick::hasnextimage
Gmagick::implodeimage
Gmagick


Creates a new image as a copy

Gmagick::haspreviousimage
Gmagick::labelimage
Gmagick
PHP Manual

Gmagick::implodeimage

(PECL gmagick >= Unknown)

Gmagick::implodeimage — Creates a new image as a copy

说明

public mixed Gmagick::implodeimage ( float $radius )

Creates a new image that is a copy of an existing one with the image pixels "imploded" by the specified percentage.

参数

radius

The radius of the implode

返回值

Returns imploded Gmagick object.

错误／异常

错误时抛出 GmagickException。

Gmagick::haspreviousimage
Gmagick::labelimage
Gmagick


Adds a label to an image.

Gmagick::implodeimage
Gmagick::levelimage
Gmagick
PHP Manual

Gmagick::labelimage

(PECL gmagick >= Unknown)

Gmagick::labelimage — Adds a label to an image.

说明

public mixed Gmagick::labelimage ( string $label )

Adds a label to an image.

参数

label

The label to add

返回值

Gmagick with label.

错误／异常

错误时抛出 GmagickException。

Gmagick::implodeimage
Gmagick::levelimage
Gmagick


Adjusts the levels of an image

Gmagick::labelimage
Gmagick::magnifyimage
Gmagick
PHP Manual

Gmagick::levelimage

(PECL gmagick >= Unknown)

Gmagick::levelimage — Adjusts the levels of an image

说明

public mixed Gmagick::levelimage ( float $blackPoint , float $gamma , float $whitePoint [, int $channel = Gmagick::CHANNEL_DEFAULT ] )

Adjusts the levels of an image by scaling the colors falling between specified white and black points to the full available quantum range. The parameters provided represent the black, mid, and white points. The black point specifies the darkest color in the image. Colors darker than the black point are set to zero. Mid point specifies a gamma correction to apply to the image. White point specifies the lightest color in the image. Colors brighter than the white point are set to the maximum quantum value.

参数

blackPoint

The image black point

gamma

The gamma value

whitePoint

The image white point

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators. Refer to this list of channel constants.

返回值

Gmagick object with image levelled.

错误／异常

错误时抛出 GmagickException。

Gmagick::labelimage
Gmagick::magnifyimage
Gmagick


Scales an image proportionally 2x

Gmagick::levelimage
Gmagick::mapimage
Gmagick
PHP Manual

Gmagick::magnifyimage

(PECL gmagick >= Unknown)

Gmagick::magnifyimage — Scales an image proportionally 2x

说明

public mixed Gmagick::magnifyimage ( void )

Conveniently scales an image proportionally to twice its original size.

参数

此函数没有参数。

返回值

Magnified Gmagick object.

错误／异常

错误时抛出 GmagickException。

Gmagick::levelimage
Gmagick::mapimage
Gmagick


Replaces the colors of an image with the closest color from a reference image.

Gmagick::magnifyimage
Gmagick::medianfilterimage
Gmagick
PHP Manual

Gmagick::mapimage

(PECL gmagick >= Unknown)

Gmagick::mapimage — Replaces the colors of an image with the closest color from a reference image.

说明

public Gmagick Gmagick::mapimage ( gmagick $gmagick , bool $dither )

Replaces the colors of an image with the closest color from a reference image.

参数

gmagick

The reference image

dither

Set this integer value to something other than zero to dither the mapped image

返回值

Gmagick object

错误／异常

错误时抛出 GmagickException。

Gmagick::magnifyimage
Gmagick::medianfilterimage
Gmagick


Applies a digital filter

Gmagick::mapimage
Gmagick::minifyimage
Gmagick
PHP Manual

Gmagick::medianfilterimage

(PECL gmagick >= Unknown)

Gmagick::medianfilterimage — Applies a digital filter

说明

public void Gmagick::medianfilterimage ( float $radius )

Applies a digital filter that improves the quality of a noisy image. Each pixel is replaced by the median in a set of neighboring pixels as defined by radius.

参数

radius

The radius of the pixel neighborhood.

返回值

Gmagick object with median filter applied.

错误／异常

错误时抛出 GmagickException。

Gmagick::mapimage
Gmagick::minifyimage
Gmagick


Scales an image proportionally to half its size

Gmagick::medianfilterimage
Gmagick::modulateimage
Gmagick
PHP Manual

Gmagick::minifyimage

(PECL gmagick >= Unknown)

Gmagick::minifyimage — Scales an image proportionally to half its size

说明

public Gmagick Gmagick::minifyimage ( void )

A convenient method that scales an image proportionally to one-half its original size

参数

此函数没有参数。

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::medianfilterimage
Gmagick::modulateimage
Gmagick


Control the brightness, saturation, and hue

Gmagick::minifyimage
Gmagick::motionblurimage
Gmagick
PHP Manual

Gmagick::modulateimage

(PECL gmagick >= Unknown)

Gmagick::modulateimage — Control the brightness, saturation, and hue

说明

public Gmagick Gmagick::modulateimage ( float $brightness , float $saturation , float $hue )

Lets you control the brightness, saturation, and hue of an image. Hue is the percentage of absolute rotation from the current position. For example 50 results in a counter-clockwise rotation of 90 degrees, 150 results in a clockwise rotation of 90 degrees, with 0 and 200 both resulting in a rotation of 180 degrees.

参数

brightness

The percent change in brighness (-100 thru +100).

saturation

The percent change in saturation (-100 thru +100)

hue

The percent change in hue (-100 thru +100)

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::minifyimage
Gmagick::motionblurimage
Gmagick


Simulates motion blur

Gmagick::modulateimage
Gmagick::newimage
Gmagick
PHP Manual

Gmagick::motionblurimage

(PECL gmagick >= Unknown)

Gmagick::motionblurimage — Simulates motion blur

说明

public Gmagick Gmagick::motionblurimage ( float $radius , float $sigma , float $angle )

Simulates motion blur. We convolve the image with a Gaussian operator of the given radius and standard deviation (sigma). For reasonable results, radius should be larger than sigma. Use a radius of 0 and MotionBlurImage() selects a suitable radius for you. Angle gives the angle of the blurring motion.

参数

radius

The radius of the Gaussian, in pixels, not counting the center pixel.

sigma

The standard deviation of the Gaussian, in pixels.

angle

Apply the effect along this angle.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::modulateimage
Gmagick::newimage
Gmagick


Creates a new image

Gmagick::motionblurimage
Gmagick::nextimage
Gmagick
PHP Manual

Gmagick::newimage

(PECL gmagick >= Unknown)

Gmagick::newimage — Creates a new image

说明

public Gmagick Gmagick::newimage ( int $width , int $height , string $background [, string $format ] )

Creates a new image with the specified background color

参数

width

Width of the new image

height

Height of the new image

background

The background color used for this image (as float)

format

Image format.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::motionblurimage
Gmagick::nextimage
Gmagick


Moves to the next image

Gmagick::newimage
Gmagick::normalizeimage
Gmagick
PHP Manual

Gmagick::nextimage

(PECL gmagick >= Unknown)

Gmagick::nextimage — Moves to the next image

说明

public bool Gmagick::nextimage ( void )

Associates the next image in the image list with an Gmagick object.

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

错误时抛出 GmagickException。

Gmagick::newimage
Gmagick::normalizeimage
Gmagick


Enhances the contrast of a color image

Gmagick::nextimage
Gmagick::oilpaintimage
Gmagick
PHP Manual

Gmagick::normalizeimage

(PECL gmagick >= Unknown)

Gmagick::normalizeimage — Enhances the contrast of a color image

说明

public Gmagick Gmagick::normalizeimage ([ int $channel ] )

Enhances the contrast of a color image by adjusting the pixels color to span the entire range of colors available.

参数

channel

Identify which channel to normalize

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::nextimage
Gmagick::oilpaintimage
Gmagick


Simulates an oil painting

Gmagick::normalizeimage
Gmagick::previousimage
Gmagick
PHP Manual

Gmagick::oilpaintimage

(PECL gmagick >= Unknown)

Gmagick::oilpaintimage — Simulates an oil painting

说明

public Gmagick Gmagick::oilpaintimage ( float $radius )

Applies a special effect filter that simulates an oil painting. Each pixel is replaced by the most frequent color occurring in a circular region defined by radius.

参数

radius

The radius of the circular neighborhood.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::normalizeimage
Gmagick::previousimage
Gmagick


Move to the previous image in the object

Gmagick::oilpaintimage
Gmagick::profileimage
Gmagick
PHP Manual

Gmagick::previousimage

(PECL gmagick >= Unknown)

Gmagick::previousimage — Move to the previous image in the object

说明

public bool Gmagick::previousimage ( void )

Associates the previous image in an image list with the Gmagick object.

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

错误时抛出 GmagickException。

Gmagick::oilpaintimage
Gmagick::profileimage
Gmagick


Adds or removes a profile from an image

Gmagick::previousimage
Gmagick::quantizeimage
Gmagick
PHP Manual

Gmagick::profileimage

(PECL gmagick >= Unknown)

Gmagick::profileimage — Adds or removes a profile from an image

说明

public Gmagick Gmagick::profileimage ( string $name , string $profile )

Adds or removes a ICC, IPTC, or generic profile from an image. If the profile is NULL, it is removed from the image otherwise added. Use a name of '*' and a profile of NULL to remove all profiles from the image.

参数

name

Name of profile to add or remove: ICC, IPTC, or generic profile.

profile

The profile.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::previousimage
Gmagick::quantizeimage
Gmagick


Analyzes the colors within a reference image

Gmagick::profileimage
Gmagick::quantizeimages
Gmagick
PHP Manual

Gmagick::quantizeimage

(PECL gmagick >= Unknown)

Gmagick::quantizeimage — Analyzes the colors within a reference image

说明

public Gmagick Gmagick::quantizeimage ( int $numColors , int $colorspace , int $treeDepth , bool $dither , bool $measureError )

Analyzes the colors within a reference image and chooses a fixed number of colors to represent the image. The goal of the algorithm is to minimize the color difference between the input and output image while minimizing the processing time.

参数

numColors

The number of colors.

colorspace

Perform color reduction in this colorspace, typically RGBColorspace.

treeDepth

Normally, this integer value is zero or one. A zero or one tells Quantize to choose a optimal tree depth of Log4(number_colors).% A tree of this depth generally allows the best representation of the reference image with the least amount of memory and the fastest computational speed. In some cases, such as an image with low color dispersion (a few number of colors), a value other than Log4(number_colors) is required. To expand the color tree completely, use a value of 8.

dither

A value other than zero distributes the difference between an original image and the corresponding color reduced algorithm to neighboring pixels along a Hilbert curve.

measureError

A value other than zero measures the difference between the original and quantized images. This difference is the total quantization error. The error is computed by summing over all pixels in an image the distance squared in RGB space between each reference pixel value and its quantized value.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::profileimage
Gmagick::quantizeimages
Gmagick


The quantizeimages purpose

Gmagick::quantizeimage
Gmagick::queryfontmetrics
Gmagick
PHP Manual

Gmagick::quantizeimages

(PECL gmagick >= Unknown)

Gmagick::quantizeimages — The quantizeimages purpose

说明

public Gmagick Gmagick::quantizeimages ( int $numColors , int $colorspace , int $treeDepth , bool $dither , bool $measureError )

Analyzes the colors within a sequence of images and chooses a fixed number of colors to represent the image. The goal of the algorithm is to minimize the color difference between the input and output image while minimizing the processing time.

参数

numColors

The number of colors.

colorspace

Perform color reduction in this colorspace, typically RGBColorspace.

treeDepth

Normally, this integer value is zero or one. A zero or one tells Quantize to choose a optimal tree depth of Log4(number_colors).% A tree of this depth generally allows the best representation of the reference image with the least amount of memory and the fastest computational speed. In some cases, such as an image with low color dispersion (a few number of colors), a value other than Log4(number_colors) is required. To expand the color tree completely, use a value of 8.

dither

A value other than zero distributes the difference between an original image and the corresponding color reduced algorithm to neighboring pixels along a Hilbert curve.

measureError

A value other than zero measures the difference between the original and quantized images. This difference is the total quantization error. The error is computed by summing over all pixels in an image the distance squared in RGB space between each reference pixel value and its quantized value.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::quantizeimage
Gmagick::queryfontmetrics
Gmagick


Returns an array representing the font metrics

Gmagick::quantizeimages
Gmagick::queryfonts
Gmagick
PHP Manual

Gmagick::queryfontmetrics

(PECL gmagick >= Unknown)

Gmagick::queryfontmetrics — Returns an array representing the font metrics

说明

public array Gmagick::queryfontmetrics ( GmagickDraw $draw , string $text )

MagickQueryFontMetrics() returns an array representing the font metrics.

参数

此函数没有参数。

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::quantizeimages
Gmagick::queryfonts
Gmagick


Returns the configured fonts

Gmagick::queryfontmetrics
Gmagick::queryformats
Gmagick
PHP Manual

Gmagick::queryfonts

(PECL gmagick >= Unknown)

Gmagick::queryfonts — Returns the configured fonts

说明

public array Gmagick::queryfonts ([ string $pattern = "*" ] )

Returns fonts supported by Gmagick.

参数

此函数没有参数。

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::queryfontmetrics
Gmagick::queryformats
Gmagick


Returns formats supported by Gmagick.

Gmagick::queryfonts
Gmagick::radialblurimage
Gmagick
PHP Manual

Gmagick::queryformats

(PECL gmagick >= Unknown)

Gmagick::queryformats — Returns formats supported by Gmagick.

说明

public array Gmagick::queryformats ([ string $pattern = "*" ] )

Returns formats supported by Gmagick.

参数

pattern

Specifies a string containing a pattern.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::queryfonts
Gmagick::radialblurimage
Gmagick


Radial blurs an image

Gmagick::queryformats
Gmagick::raiseimage
Gmagick
PHP Manual

Gmagick::radialblurimage

(PECL gmagick >= Unknown)

Gmagick::radialblurimage — Radial blurs an image

说明

public Gmagick Gmagick::radialblurimage ( float $angle [, int $channel = Gmagick::CHANNEL_DEFAULT ] )

Radial blurs an image.

参数

angle

The angle of the blur in degrees.

channel

Related channel

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::queryformats
Gmagick::raiseimage
Gmagick


Creates a simulated 3d button-like effect

Gmagick::radialblurimage
Gmagick::read
Gmagick
PHP Manual

Gmagick::raiseimage

(PECL gmagick >= Unknown)

Gmagick::raiseimage — Creates a simulated 3d button-like effect

说明

public Gmagick Gmagick::raiseimage ( int $width , int $height , int $x , int $y , bool $raise )

Creates a simulated three-dimensional button-like effect by lightening and darkening the edges of the image. Members width and height of raise_info define the width of the vertical and horizontal edge of the effect.

参数

width

Width of the area to raise.

height

Height of the area to raise.

x

X coordinate

y

Y coordinate

raise

A value other than zero creates a 3-D raise effect, otherwise it has a lowered effect.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::radialblurimage
Gmagick::read
Gmagick


Reads image from filename

Gmagick::raiseimage
Gmagick::readimage
Gmagick
PHP Manual

Gmagick::read

(PECL gmagick >= Unknown)

Gmagick::read — Reads image from filename

说明

public Gmagick Gmagick::read ( string $filename )

Reads image from filename.

参数

filename

The image filename.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::raiseimage
Gmagick::readimage
Gmagick


Reads image from filename

Gmagick::read
Gmagick::readimageblob
Gmagick
PHP Manual

Gmagick::readimage

(PECL gmagick >= Unknown)

Gmagick::readimage — Reads image from filename

说明

public Gmagick Gmagick::readimage ( string $filename )

Reads image from filename.

参数

filename

The image filename.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::read
Gmagick::readimageblob
Gmagick


Reads image from a binary string

Gmagick::readimage
Gmagick::readimagefile
Gmagick
PHP Manual

Gmagick::readimageblob

(PECL gmagick >= Unknown)

Gmagick::readimageblob — Reads image from a binary string

说明

public Gmagick Gmagick::readimageblob ( string $imageContents [, string $filename ] )

Reads image from a binary string.

参数

imageContents

Content of image

filename

The image filename.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::readimage
Gmagick::readimagefile
Gmagick


The readimagefile purpose

Gmagick::readimageblob
Gmagick::reducenoiseimage
Gmagick
PHP Manual

Gmagick::readimagefile

(PECL gmagick >= Unknown)

Gmagick::readimagefile — The readimagefile purpose

说明

public Gmagick Gmagick::readimagefile ( resource $fp [, string $filename ] )

Reads an image or image sequence from an open file descriptor.

参数

fp

The file descriptor.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::readimageblob
Gmagick::reducenoiseimage
Gmagick


Smooths the contours of an image

Gmagick::readimagefile
Gmagick::removeimage
Gmagick
PHP Manual

Gmagick::reducenoiseimage

(PECL gmagick >= Unknown)

Gmagick::reducenoiseimage — Smooths the contours of an image

说明

public Gmagick Gmagick::reducenoiseimage ( float $radius )

Smooths the contours of an image while still preserving edge information. The algorithm works by replacing each pixel with its neighbor closest in value. A neighbor is defined by radius. Use a radius of 0 and Gmagick::reduceNoiseImage() selects a suitable radius for you.

参数

radius

The radius of the pixel neighborhood.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::readimagefile
Gmagick::removeimage
Gmagick


Removes an image from the image list

Gmagick::reducenoiseimage
Gmagick::removeimageprofile
Gmagick
PHP Manual

Gmagick::removeimage

(PECL gmagick >= Unknown)

Gmagick::removeimage — Removes an image from the image list

说明

public Gmagick Gmagick::removeimage ( void )

Removes an image from the image list.

参数

此函数没有参数。

返回值

The Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::reducenoiseimage
Gmagick::removeimageprofile
Gmagick


Removes the named image profile and returns it

Gmagick::removeimage
Gmagick::resampleimage
Gmagick
PHP Manual

Gmagick::removeimageprofile

(PECL gmagick >= Unknown)

Gmagick::removeimageprofile — Removes the named image profile and returns it

说明

public string Gmagick::removeimageprofile ( string $name )

Removes the named image profile and returns it.

参数

name

Name of profile to return: ICC, IPTC, or generic profile.

返回值

The named profile.

错误／异常

错误时抛出 GmagickException。

Gmagick::removeimage
Gmagick::resampleimage
Gmagick


Resample image to desired resolution

Gmagick::removeimageprofile
Gmagick::resizeimage
Gmagick
PHP Manual

Gmagick::resampleimage

(PECL gmagick >= Unknown)

Gmagick::resampleimage — Resample image to desired resolution

说明

public Gmagick Gmagick::resampleimage ( float $xResolution , float $yResolution , int $filter , float $blur )

Resample image to desired resolution.

参数

xResolution

The new image x resolution.

yResolution

The new image y resolution.

filter

Image filter to use.

blur

The blur factor where larger than 1 is blurry, smaller than 1 is sharp.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::removeimageprofile
Gmagick::resizeimage
Gmagick


Scales an image

Gmagick::resampleimage
Gmagick::rollimage
Gmagick
PHP Manual

Gmagick::resizeimage

(PECL gmagick >= Unknown)

Gmagick::resizeimage — Scales an image

说明

public Gmagick Gmagick::resizeimage ( int $width , int $height , int $filter , float $blur [, bool $fit = false ] )

Scales an image to the desired dimensions with a filter.

参数

width

The number of columns in the scaled image.

height

The number of rows in the scaled image.

filter

Image filter to use.

blur

The blur factor where larger than 1 is blurry, lesser than 1 is sharp.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::resampleimage
Gmagick::rollimage
Gmagick


Offsets an image

Gmagick::resizeimage
Gmagick::rotateimage
Gmagick
PHP Manual

Gmagick::rollimage

(PECL gmagick >= Unknown)

Gmagick::rollimage — Offsets an image

说明

public Gmagick Gmagick::rollimage ( int $x , int $y )

Offsets an image as defined by x and y.

参数

x

The x offset.

y

The y offset.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::resizeimage
Gmagick::rotateimage
Gmagick


Rotates an image

Gmagick::rollimage
Gmagick::scaleimage
Gmagick
PHP Manual

Gmagick::rotateimage

(PECL gmagick >= Unknown)

Gmagick::rotateimage — Rotates an image

说明

public Gmagick Gmagick::rotateimage ( mixed $color , float $degrees )

Rotates an image the specified number of degrees. Empty triangles left over from rotating the image are filled with the background color.

参数

color

The background pixel.

degrees

The number of degrees to rotate the image.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::rollimage
Gmagick::scaleimage
Gmagick


Scales the size of an image

Gmagick::rotateimage
Gmagick::separateimagechannel
Gmagick
PHP Manual

Gmagick::scaleimage

(PECL gmagick >= Unknown)

Gmagick::scaleimage — Scales the size of an image

说明

public Gmagick Gmagick::scaleimage ( int $width , int $height [, bool $fit = false ] )

Scales the size of an image to the given dimensions. The other parameter will be calculated if 0 is passed as either param.

参数

width

The number of columns in the scaled image.

height

The number of rows in the scaled image.

返回值

The Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::rotateimage
Gmagick::separateimagechannel
Gmagick


Separates a channel from the image

Gmagick::scaleimage
Gmagick::setCompressionQuality
Gmagick
PHP Manual

Gmagick::separateimagechannel

(PECL gmagick >= Unknown)

Gmagick::separateimagechannel — Separates a channel from the image

说明

public Gmagick Gmagick::separateimagechannel ( int $channel )

Separates a channel from the image and returns a grayscale image. A channel is a particular color component of each pixel in the image.

参数

channel

Identify which channel to extract: RedChannel, GreenChannel, BlueChannel, OpacityChannel, CyanChannel, MagentaChannel, YellowChannel, BlackChannel.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::scaleimage
Gmagick::setCompressionQuality
Gmagick


Sets the object's default compression quality

Gmagick::separateimagechannel
Gmagick::setfilename
Gmagick
PHP Manual

Gmagick::setCompressionQuality

(No version information available, might only be in Git)

Gmagick::setCompressionQuality — Sets the object's default compression quality

说明

Gmagick Gmagick::setCompressionQuality ( int $quality = 75 )

Sets the object's default compression quality.

参数

quality

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

范例

Example #1 Gmagick::setCompressionQuality()

<?php
$gm = new Gmagick();
$gm->read("magick:rose");
$gm->setCompressionQuality(2);
?>

Gmagick::separateimagechannel
Gmagick::setfilename
Gmagick


Sets the filename before you read or write the image

Gmagick::setCompressionQuality
Gmagick::setimagebackgroundcolor
Gmagick
PHP Manual

Gmagick::setfilename

(PECL gmagick >= Unknown)

Gmagick::setfilename — Sets the filename before you read or write the image

说明

public Gmagick Gmagick::setfilename ( string $filename )

Sets the filename before you read or write an image file.

参数

filename

The image filename.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::setCompressionQuality
Gmagick::setimagebackgroundcolor
Gmagick


Sets the image background color.

Gmagick::setfilename
Gmagick::setimageblueprimary
Gmagick
PHP Manual

Gmagick::setimagebackgroundcolor

(PECL gmagick >= Unknown)

Gmagick::setimagebackgroundcolor — Sets the image background color.

说明

public Gmagick Gmagick::setimagebackgroundcolor ( GmagickPixel $color )

Sets the image background color.

参数

color

The background pixel wand.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::setfilename
Gmagick::setimageblueprimary
Gmagick


Sets the image chromaticity blue primary point.

Gmagick::setimagebackgroundcolor
Gmagick::setimagebordercolor
Gmagick
PHP Manual

Gmagick::setimageblueprimary

(PECL gmagick >= Unknown)

Gmagick::setimageblueprimary — Sets the image chromaticity blue primary point.

说明

public Gmagick Gmagick::setimageblueprimary ( float $x , float $y )

Sets the image chromaticity blue primary point.

参数

x

The blue primary x-point.

y

The blue primary y-point.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::setimagebackgroundcolor
Gmagick::setimagebordercolor
Gmagick


Sets the image border color.

Gmagick::setimageblueprimary
Gmagick::setimagechanneldepth
Gmagick
PHP Manual

Gmagick::setimagebordercolor

(PECL gmagick >= Unknown)

Gmagick::setimagebordercolor — Sets the image border color.

说明

public Gmagick Gmagick::setimagebordercolor ( GmagickPixel $color )

Sets the image border color.

参数

color

The border pixel wand.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::setimageblueprimary
Gmagick::setimagechanneldepth
Gmagick


Sets the depth of a particular image channel

Gmagick::setimagebordercolor
Gmagick::setimagecolorspace
Gmagick
PHP Manual

Gmagick::setimagechanneldepth

(PECL gmagick >= Unknown)

Gmagick::setimagechanneldepth — Sets the depth of a particular image channel

说明

public Gmagick Gmagick::setimagechanneldepth ( int $channel , int $depth )

Sets the depth of a particular image channel.

参数

channel

Identify which channel to extract: RedChannel, GreenChannel, BlueChannel, OpacityChannel, CyanChannel, MagentaChannel, YellowChannel, BlackChannel.

depth

The image depth in bits.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::setimagebordercolor
Gmagick::setimagecolorspace
Gmagick


Sets the image colorspace

Gmagick::setimagechanneldepth
Gmagick::setimagecompose
Gmagick
PHP Manual

Gmagick::setimagecolorspace

(PECL gmagick >= Unknown)

Gmagick::setimagecolorspace — Sets the image colorspace

说明

public Gmagick Gmagick::setimagecolorspace ( int $colorspace )

Sets the image colorspace.

参数

colorspace

The image colorspace: UndefinedColorspace, RGBColorspace, GRAYColorspace, TransparentColorspace, OHTAColorspace, XYZColorspace, YCbCrColorspace, YCCColorspace, YIQColorspace, YPbPrColorspace, YPbPrColorspace, YUVColorspace, CMYKColorspace, sRGBColorspace, HSLColorspace, or HWBColorspace.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::setimagechanneldepth
Gmagick::setimagecompose
Gmagick


Sets the image composite operator

Gmagick::setimagecolorspace
Gmagick::setimagedelay
Gmagick
PHP Manual

Gmagick::setimagecompose

(PECL gmagick >= Unknown)

Gmagick::setimagecompose — Sets the image composite operator

说明

public Gmagick Gmagick::setimagecompose ( int $composite )

Sets the image composite operator.

参数

composite

The image composite operator.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::setimagecolorspace
Gmagick::setimagedelay
Gmagick


Sets the image delay

Gmagick::setimagecompose
Gmagick::setimagedepth
Gmagick
PHP Manual

Gmagick::setimagedelay

(PECL gmagick >= Unknown)

Gmagick::setimagedelay — Sets the image delay

说明

public Gmagick Gmagick::setimagedelay ( int $delay )

Sets the image delay

参数

delay

The image delay in 1/100th of a second.

返回值

The Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::setimagecompose
Gmagick::setimagedepth
Gmagick


Sets the image depth

Gmagick::setimagedelay
Gmagick::setimagedispose
Gmagick
PHP Manual

Gmagick::setimagedepth

(PECL gmagick >= Unknown)

Gmagick::setimagedepth — Sets the image depth

说明

public Gmagick Gmagick::setimagedepth ( int $depth )

Sets the image depth

参数

depth

The image depth in bits: 8, 16, or 32.

返回值

The Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::setimagedelay
Gmagick::setimagedispose
Gmagick


Sets the image disposal method

Gmagick::setimagedepth
Gmagick::setimagefilename
Gmagick
PHP Manual

Gmagick::setimagedispose

(PECL gmagick >= Unknown)

Gmagick::setimagedispose — Sets the image disposal method

说明

public Gmagick Gmagick::setimagedispose ( int $disposeType )

Sets the image disposal method.

参数

disposeType

The image disposal type.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::setimagedepth
Gmagick::setimagefilename
Gmagick


Sets the filename of a particular image in a sequence

Gmagick::setimagedispose
Gmagick::setimageformat
Gmagick
PHP Manual

Gmagick::setimagefilename

(PECL gmagick >= Unknown)

Gmagick::setimagefilename — Sets the filename of a particular image in a sequence

说明

public Gmagick Gmagick::setimagefilename ( string $filename )

Sets the filename of a particular image in a sequence.

参数

filename

The image filename.

返回值

The Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::setimagedispose
Gmagick::setimageformat
Gmagick


Sets the format of a particular image

Gmagick::setimagefilename
Gmagick::setimagegamma
Gmagick
PHP Manual

Gmagick::setimageformat

(PECL gmagick >= Unknown)

Gmagick::setimageformat — Sets the format of a particular image

说明

public Gmagick Gmagick::setimageformat ( string $imageFormat )

Sets the format of a particular image in a sequence.

参数

imageFormat

The image format.

返回值

The Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::setimagefilename
Gmagick::setimagegamma
Gmagick


Sets the image gamma

Gmagick::setimageformat
Gmagick::setimagegreenprimary
Gmagick
PHP Manual

Gmagick::setimagegamma

(PECL gmagick >= Unknown)

Gmagick::setimagegamma — Sets the image gamma

说明

public Gmagick Gmagick::setimagegamma ( float $gamma )

Sets the image gamma.

参数

gamma

The image gamma.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::setimageformat
Gmagick::setimagegreenprimary
Gmagick


Sets the image chromaticity green primary point.

Gmagick::setimagegamma
Gmagick::setimageindex
Gmagick
PHP Manual

Gmagick::setimagegreenprimary

(PECL gmagick >= Unknown)

Gmagick::setimagegreenprimary — Sets the image chromaticity green primary point.

说明

public Gmagick Gmagick::setimagegreenprimary ( float $x , float $y )

Sets the image chromaticity green primary point.

参数

x

The chromaticity green primary x-point.

y

The chromaticity green primary y-point.

返回值

The Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::setimagegamma
Gmagick::setimageindex
Gmagick


Set the iterator to the position in the image list specified with the index parameter

Gmagick::setimagegreenprimary
Gmagick::setimageinterlacescheme
Gmagick
PHP Manual

Gmagick::setimageindex

(PECL gmagick >= Unknown)

Gmagick::setimageindex — Set the iterator to the position in the image list specified with the index parameter

说明

public Gmagick Gmagick::setimageindex ( int $index )

Set the iterator to the position in the image list specified with the index parameter.

参数

index

The scene number.

返回值

The Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::setimagegreenprimary
Gmagick::setimageinterlacescheme
Gmagick


Sets the interlace scheme of the image.

Gmagick::setimageindex
Gmagick::setimageiterations
Gmagick
PHP Manual

Gmagick::setimageinterlacescheme

(PECL gmagick >= Unknown)

Gmagick::setimageinterlacescheme — Sets the interlace scheme of the image.

说明

public Gmagick Gmagick::setimageinterlacescheme ( int $interlace )

Sets the interlace scheme of the image.

参数

interlace

The image interlace scheme: NoInterlace, LineInterlace, PlaneInterlace, PartitionInterlace.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::setimageindex
Gmagick::setimageiterations
Gmagick


Sets the image iterations.

Gmagick::setimageinterlacescheme
Gmagick::setimageprofile
Gmagick
PHP Manual

Gmagick::setimageiterations

(PECL gmagick >= Unknown)

Gmagick::setimageiterations — Sets the image iterations.

说明

public Gmagick Gmagick::setimageiterations ( int $iterations )

Sets the image iterations.

参数

iterations

The image delay in 1/100th of a second.

返回值

The Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::setimageinterlacescheme
Gmagick::setimageprofile
Gmagick


Adds a named profile to the Gmagick object

Gmagick::setimageiterations
Gmagick::setimageredprimary
Gmagick
PHP Manual

Gmagick::setimageprofile

(PECL gmagick >= Unknown)

Gmagick::setimageprofile — Adds a named profile to the Gmagick object

说明

public Gmagick Gmagick::setimageprofile ( string $name , string $profile )

Adds a named profile to the Gmagick object. If a profile with the same name already exists, it is replaced. This method differs from the Gmagick::profileimage() method in that it does not apply any CMS color profiles.

参数

name

Name of profile to add or remove: ICC, IPTC, or generic profile.

profile

The profile.

返回值

The Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::setimageiterations
Gmagick::setimageredprimary
Gmagick


Sets the image chromaticity red primary point.

Gmagick::setimageprofile
Gmagick::setimagerenderingintent
Gmagick
PHP Manual

Gmagick::setimageredprimary

(PECL gmagick >= Unknown)

Gmagick::setimageredprimary — Sets the image chromaticity red primary point.

说明

public Gmagick Gmagick::setimageredprimary ( float $x , float $y )

Sets the image chromaticity red primary point.

参数

x

The red primary x-point.

y

The red primary y-point.

返回值

The Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::setimageprofile
Gmagick::setimagerenderingintent
Gmagick


Sets the image rendering intent

Gmagick::setimageredprimary
Gmagick::setimageresolution
Gmagick
PHP Manual

Gmagick::setimagerenderingintent

(PECL gmagick >= Unknown)

Gmagick::setimagerenderingintent — Sets the image rendering intent

说明

public Gmagick Gmagick::setimagerenderingintent ( int $rendering_intent )

Sets the image rendering intent.

参数

rendering_intent

The image rendering intent: UndefinedIntent, SaturationIntent, PerceptualIntent, AbsoluteIntent, or RelativeIntent.

返回值

The Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::setimageredprimary
Gmagick::setimageresolution
Gmagick


Sets the image resolution

Gmagick::setimagerenderingintent
Gmagick::setimagescene
Gmagick
PHP Manual

Gmagick::setimageresolution

(PECL gmagick >= Unknown)

Gmagick::setimageresolution — Sets the image resolution

说明

public Gmagick Gmagick::setimageresolution ( float $xResolution , float $yResolution )

Sets the image resolution.

参数

xResolution

The image x resolution.

yResolution

The image y resolution.

返回值

The Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::setimagerenderingintent
Gmagick::setimagescene
Gmagick


Sets the image scene

Gmagick::setimageresolution
Gmagick::setimagetype
Gmagick
PHP Manual

Gmagick::setimagescene

(PECL gmagick >= Unknown)

Gmagick::setimagescene — Sets the image scene

说明

public Gmagick Gmagick::setimagescene ( int $scene )

Sets the image scene.

参数

scene

The image scene number.

返回值

The Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::setimageresolution
Gmagick::setimagetype
Gmagick


Sets the image type

Gmagick::setimagescene
Gmagick::setimageunits
Gmagick
PHP Manual

Gmagick::setimagetype

(PECL gmagick >= Unknown)

Gmagick::setimagetype — Sets the image type

说明

public Gmagick Gmagick::setimagetype ( int $imgType )

Sets the image type.

参数

imgType

The image type: UndefinedType, BilevelType, GrayscaleType, GrayscaleMatteType, PaletteType, PaletteMatteType, TrueColorType, TrueColorMatteType, ColorSeparationType, ColorSeparationMatteType, or OptimizeType.

返回值

The Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::setimagescene
Gmagick::setimageunits
Gmagick


Sets the image units of resolution.

Gmagick::setimagetype
Gmagick::setimagewhitepoint
Gmagick
PHP Manual

Gmagick::setimageunits

(PECL gmagick >= Unknown)

Gmagick::setimageunits — Sets the image units of resolution.

说明

public Gmagick Gmagick::setimageunits ( int $resolution )

Sets the image units of resolution.

参数

resolution

The image units of resolution : Undefinedresolution, PixelsPerInchResolution, or PixelsPerCentimeterResolution.

返回值

The Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::setimagetype
Gmagick::setimagewhitepoint
Gmagick


Sets the image chromaticity white point.

Gmagick::setimageunits
Gmagick::setsamplingfactors
Gmagick
PHP Manual

Gmagick::setimagewhitepoint

(PECL gmagick >= Unknown)

Gmagick::setimagewhitepoint — Sets the image chromaticity white point.

说明

public Gmagick Gmagick::setimagewhitepoint ( float $x , float $y )

Sets the image chromaticity white point.

参数

x

The white x-point.

y

The white y-point.

返回值

The Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::setimageunits
Gmagick::setsamplingfactors
Gmagick


Sets the image sampling factors.

Gmagick::setimagewhitepoint
Gmagick::setsize
Gmagick
PHP Manual

Gmagick::setsamplingfactors

(PECL gmagick >= Unknown)

Gmagick::setsamplingfactors — Sets the image sampling factors.

说明

public Gmagick Gmagick::setsamplingfactors ( array $factors )

Sets the image sampling factors.

参数

factors

An array of doubles representing the sampling factor for each color component (in RGB order).

返回值

The Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::setimagewhitepoint
Gmagick::setsize
Gmagick


Sets the size of the Gmagick object

Gmagick::setsamplingfactors
Gmagick::shearimage
Gmagick
PHP Manual

Gmagick::setsize

(PECL gmagick >= Unknown)

Gmagick::setsize — Sets the size of the Gmagick object

说明

public Gmagick Gmagick::setsize ( int $columns , int $rows )

Sets the size of the Gmagick object. Set it before you read a raw image format such as RGB, GRAY, or CMYK.

参数

columns

The width in pixels.

rows

The height in pixels.

返回值

The Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::setsamplingfactors
Gmagick::shearimage
Gmagick


Creating a parallelogram

Gmagick::setsize
Gmagick::solarizeimage
Gmagick
PHP Manual

Gmagick::shearimage

(PECL gmagick >= Unknown)

Gmagick::shearimage — Creating a parallelogram

说明

public Gmagick Gmagick::shearimage ( mixed $color , float $xShear , float $yShear )

Slides one edge of an image along the X or Y axis, creating a parallelogram. An X direction shear slides an edge along the X axis, while a Y direction shear slides an edge along the Y axis. The amount of the shear is controlled by a shear angle. For X direction shears, x_shear is measured relative to the Y axis, and similarly, for Y direction shears y_shear is measured relative to the X axis. Empty triangles left over from shearing the image are filled with the background color.

参数

color

The background pixel wand.

xShear

The number of degrees to shear the image.

yShear

The number of degrees to shear the image.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::setsize
Gmagick::solarizeimage
Gmagick


Applies a solarizing effect to the image

Gmagick::shearimage
Gmagick::spreadimage
Gmagick
PHP Manual

Gmagick::solarizeimage

(PECL gmagick >= Unknown)

Gmagick::solarizeimage — Applies a solarizing effect to the image

说明

public Gmagick Gmagick::solarizeimage ( int $threshold )

Applies a special effect to the image, similar to the effect achieved in a photo darkroom by selectively exposing areas of photo sensitive paper to light. Threshold ranges from 0 to QuantumRange and is a measure of the extent of the solarization.

参数

threshold

Define the extent of the solarization.

返回值

The Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::shearimage
Gmagick::spreadimage
Gmagick


Randomly displaces each pixel in a block

Gmagick::solarizeimage
Gmagick::stripimage
Gmagick
PHP Manual

Gmagick::spreadimage

(PECL gmagick >= Unknown)

Gmagick::spreadimage — Randomly displaces each pixel in a block

说明

public Gmagick Gmagick::spreadimage ( float $radius )

Special effects method that randomly displaces each pixel in a block defined by the radius parameter.

参数

radius

Choose a random pixel in a neighborhood of this extent.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::solarizeimage
Gmagick::stripimage
Gmagick


Strips an image of all profiles and comments

Gmagick::spreadimage
Gmagick::swirlimage
Gmagick
PHP Manual

Gmagick::stripimage

(PECL gmagick >= Unknown)

Gmagick::stripimage — Strips an image of all profiles and comments

说明

public Gmagick Gmagick::stripimage ( void )

Strips an image of all profiles and comments.

参数

此函数没有参数。

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::spreadimage
Gmagick::swirlimage
Gmagick


Swirls the pixels about the center of the image

Gmagick::stripimage
Gmagick::thumbnailimage
Gmagick
PHP Manual

Gmagick::swirlimage

(PECL gmagick >= Unknown)

Gmagick::swirlimage — Swirls the pixels about the center of the image

说明

public Gmagick Gmagick::swirlimage ( float $degrees )

Swirls the pixels about the center of the image, where degrees indicates the sweep of the arc through which each pixel is moved. You get a more dramatic effect as the degrees move from 1 to 360.

参数

degrees

Define the tightness of the swirling effect.

返回值

The Gmagick object on success

错误／异常

错误时抛出 GmagickException。

Gmagick::stripimage
Gmagick::thumbnailimage
Gmagick


Changes the size of an image

Gmagick::swirlimage
Gmagick::trimimage
Gmagick
PHP Manual

Gmagick::thumbnailimage

(PECL gmagick >= Unknown)

Gmagick::thumbnailimage — Changes the size of an image

说明

public Gmagick Gmagick::thumbnailimage ( int $width , int $height [, bool $fit = false ] )

Changes the size of an image to the given dimensions and removes any associated profiles. The goal is to produce small low cost thumbnail images suited for display on the Web. If TRUE is given as a third parameter then columns and rows parameters are used as maximums for each side. Both sides will be scaled down until the match or are smaller than the parameter given for the side.

参数

width

Image width

height

Image height

返回值

The Gmagick object on success.

错误／异常

错误时抛出 GmagickException。

Gmagick::swirlimage
Gmagick::trimimage
Gmagick


Remove edges from the image

Gmagick::thumbnailimage
Gmagick::write
Gmagick
PHP Manual

Gmagick::trimimage

(PECL gmagick >= Unknown)

Gmagick::trimimage — Remove edges from the image

说明

public Gmagick Gmagick::trimimage ( float $fuzz )

Remove edges that are the background color from the image.

参数

fuzz

By default target must match a particular pixel color exactly. However, in many cases two colors may differ by a small amount. The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same. This parameter represents the variation on the quantum range.

返回值

The Gmagick object

错误／异常

错误时抛出 GmagickException。

Gmagick::thumbnailimage
Gmagick::write
Gmagick


别名 Gmagick::writeimage

Gmagick::trimimage
Gmagick::writeimage
Gmagick
PHP Manual

Gmagick::write

(PECL gmagick >= Unknown)

Gmagick::write — 别名 Gmagick::writeimage()

说明

This method is an alias of Gmagick::writeimage().

Gmagick::trimimage
Gmagick::writeimage
Gmagick


Writes an image to the specified filename

Gmagick::write
GmagickDraw
Gmagick
PHP Manual

Gmagick::writeimage

(PECL gmagick >= Unknown)

Gmagick::writeimage — Writes an image to the specified filename

说明

public Gmagick Gmagick::writeimage ( string $filename [, bool $all_frames = false ] )

Writes an image to the specified filename. If the filename parameter is NULL, the image is written to the filename set by Gmagick::ReadImage() or Gmagick::SetImageFilename().

参数

filename

The image filename.

返回值

The Gmagick object

错误／异常

错误时抛出 GmagickException。

Gmagick::write
GmagickDraw
Gmagick


The GmagickDraw class

(PECL gmagick >= Unknown)

简介

类摘要

GmagickDraw {
/* 方法 */
public GmagickDraw annotate ( float $x , float $y , string $text )
public GmagickDraw arc ( float $sx , float $sy , float $ex , float $ey , float $sd , float $ed )
public GmagickDraw bezier ( array $coordinate_array )
public GmagickDraw ellipse ( float $ox , float $oy , float $rx , float $ry , float $start , float $end )
public GmagickPixel getfillcolor ( void )
public float getfillopacity ( void )
public mixed getfont ( void )
public float getfontsize ( void )
public int getfontstyle ( void )
public int getfontweight ( void )
public GmagickPixel getstrokecolor ( void )
public float getstrokeopacity ( void )
public float getstrokewidth ( void )
public int gettextdecoration ( void )
public mixed gettextencoding ( void )
public GmagickDraw line ( float $sx , float $sy , float $ex , float $ey )
public GmagickDraw point ( float $x , float $y )
public GmagickDraw polygon ( array $coordinates )
public GmagickDraw polyline ( array $coordinate_array )
public GmagickDraw rectangle ( float $x1 , float $y1 , float $x2 , float $y2 )
public GmagickDraw rotate ( float $degrees )
public GmagickDraw roundrectangle ( float $x1 , float $y1 , float $x2 , float $y2 , float $rx , float $ry )
public GmagickDraw scale ( float $x , float $y )
public GmagickDraw setfillcolor ( mixed $color )
public GmagickDraw setfillopacity ( float $fill_opacity )
public GmagickDraw setfont ( string $font )
public GmagickDraw setfontsize ( float $pointsize )
public GmagickDraw setfontstyle ( int $style )
public GmagickDraw setfontweight ( int $weight )
public GmagickDraw setstrokecolor ( mixed $color )
public GmagickDraw setstrokeopacity ( float $stroke_opacity )
public GmagickDraw setstrokewidth ( float $width )
public GmagickDraw settextdecoration ( int $decoration )
public GmagickDraw settextencoding ( string $encoding )
}

Table of Contents

  • GmagickDraw::annotate — Draws text on the image
  • GmagickDraw::arc — Draws an arc
  • GmagickDraw::bezier — Draws a bezier curve
  • GmagickDraw::ellipse — Draws an ellipse on the image
  • GmagickDraw::getfillcolor — Returns the fill color
  • GmagickDraw::getfillopacity — Returns the opacity used when drawing
  • GmagickDraw::getfont — Returns the font
  • GmagickDraw::getfontsize — Returns the font pointsize
  • GmagickDraw::getfontstyle — Returns the font style
  • GmagickDraw::getfontweight — Returns the font weight
  • GmagickDraw::getstrokecolor — Returns the color used for stroking object outlines
  • GmagickDraw::getstrokeopacity — Returns the opacity of stroked object outlines
  • GmagickDraw::getstrokewidth — Returns the width of the stroke used to draw object outlines
  • GmagickDraw::gettextdecoration — Returns the text decoration
  • GmagickDraw::gettextencoding — Returns the code set used for text annotations
  • GmagickDraw::line — The line purpose
  • GmagickDraw::point — Draws a point
  • GmagickDraw::polygon — Draws a polygon
  • GmagickDraw::polyline — Draws a polyline
  • GmagickDraw::rectangle — Draws a rectangle
  • GmagickDraw::rotate — Applies the specified rotation to the current coordinate space
  • GmagickDraw::roundrectangle — Draws a rounded rectangle
  • GmagickDraw::scale — Adjusts the scaling factor
  • GmagickDraw::setfillcolor — Sets the fill color to be used for drawing filled objects.
  • GmagickDraw::setfillopacity — The setfillopacity purpose
  • GmagickDraw::setfont — Sets the fully-specified font to use when annotating with text.
  • GmagickDraw::setfontsize — Sets the font pointsize to use when annotating with text.
  • GmagickDraw::setfontstyle — Sets the font style to use when annotating with text
  • GmagickDraw::setfontweight — Sets the font weight
  • GmagickDraw::setstrokecolor — Sets the color used for stroking object outlines.
  • GmagickDraw::setstrokeopacity — Specifies the opacity of stroked object outlines.
  • GmagickDraw::setstrokewidth — Sets the width of the stroke used to draw object outlines.
  • GmagickDraw::settextdecoration — Specifies a decoration
  • GmagickDraw::settextencoding — Specifies the text code set
Gmagick::writeimage
GmagickDraw::annotate
Gmagick


Draws text on the image

GmagickDraw
GmagickDraw::arc
GmagickDraw
PHP Manual

GmagickDraw::annotate

(PECL gmagick >= Unknown)

GmagickDraw::annotate — Draws text on the image

说明

public GmagickDraw GmagickDraw::annotate ( float $x , float $y , string $text )

Draws text on the image.

参数

x

x ordinate to left of text

y

y ordinate to text baseline

text

text to draw

返回值

The GmagickDraw object on success.

GmagickDraw
GmagickDraw::arc
GmagickDraw


Draws an arc

GmagickDraw::annotate
GmagickDraw::bezier
GmagickDraw
PHP Manual

GmagickDraw::arc

(PECL gmagick >= Unknown)

GmagickDraw::arc — Draws an arc

说明

public GmagickDraw GmagickDraw::arc ( float $sx , float $sy , float $ex , float $ey , float $sd , float $ed )

Draws an arc falling within a specified bounding rectangle on the image.

参数

sx

starting x ordinate of bounding rectangle

sy

starting y ordinate of bounding rectangle

ex

ending x ordinate of bounding rectangle

ey

ending y ordinate of bounding rectangle

sd

starting degrees of rotation

ed

ending degrees of rotation

返回值

The GmagickDraw object on success.

GmagickDraw::annotate
GmagickDraw::bezier
GmagickDraw


Draws a bezier curve

GmagickDraw::arc
GmagickDraw::ellipse
GmagickDraw
PHP Manual

GmagickDraw::bezier

(PECL gmagick >= Unknown)

GmagickDraw::bezier — Draws a bezier curve

说明

public GmagickDraw GmagickDraw::bezier ( array $coordinate_array )

Draws a bezier curve through a set of points on the image.

参数

coordinate_array

Coordinates array

返回值

The GmagickDraw object on success

GmagickDraw::arc
GmagickDraw::ellipse
GmagickDraw


Draws an ellipse on the image

GmagickDraw::bezier
GmagickDraw::getfillcolor
GmagickDraw
PHP Manual

GmagickDraw::ellipse

(PECL gmagick >= Unknown)

GmagickDraw::ellipse — Draws an ellipse on the image

说明

public GmagickDraw GmagickDraw::ellipse ( float $ox , float $oy , float $rx , float $ry , float $start , float $end )

Draws an ellipse on the image.

参数

ox

origin x ordinate

oy

origin y ordinate

rx

radius in x

ry

radius in y

start

starting rotation in degrees

end

ending rotation in degrees

返回值

The GmagickDraw object on success

GmagickDraw::bezier
GmagickDraw::getfillcolor
GmagickDraw


Returns the fill color

GmagickDraw::ellipse
GmagickDraw::getfillopacity
GmagickDraw
PHP Manual

GmagickDraw::getfillcolor

(PECL gmagick >= Unknown)

GmagickDraw::getfillcolor — Returns the fill color

说明

public GmagickPixel GmagickDraw::getfillcolor ( void )

Returns the fill color used for drawing filled objects.

参数

此函数没有参数。

返回值

The GmagickPixel fill color used for drawing filled objects.

GmagickDraw::ellipse
GmagickDraw::getfillopacity
GmagickDraw


Returns the opacity used when drawing

GmagickDraw::getfillcolor
GmagickDraw::getfont
GmagickDraw
PHP Manual

GmagickDraw::getfillopacity

(PECL gmagick >= Unknown)

GmagickDraw::getfillopacity — Returns the opacity used when drawing

说明

public float GmagickDraw::getfillopacity ( void )

Returns the opacity used when drawing

参数

此函数没有参数。

返回值

Returns the opacity used when drawing using the fill color or fill texture. Fully opaque is 1.0.

GmagickDraw::getfillcolor
GmagickDraw::getfont
GmagickDraw


Returns the font

GmagickDraw::getfillopacity
GmagickDraw::getfontsize
GmagickDraw
PHP Manual

GmagickDraw::getfont

(PECL gmagick >= Unknown)

GmagickDraw::getfont — Returns the font

说明

public mixed GmagickDraw::getfont ( void )

Returns a string specifying the font used when annotating with text.

参数

此函数没有参数。

返回值

Returns a string on success and FALSE if no font is set.

GmagickDraw::getfillopacity
GmagickDraw::getfontsize
GmagickDraw


Returns the font pointsize

GmagickDraw::getfont
GmagickDraw::getfontstyle
GmagickDraw
PHP Manual

GmagickDraw::getfontsize

(PECL gmagick >= Unknown)

GmagickDraw::getfontsize — Returns the font pointsize

说明

public float GmagickDraw::getfontsize ( void )

Returns the font pointsize used when annotating with text.

参数

此函数没有参数。

返回值

Returns the font size associated with the current GmagickDraw object.

GmagickDraw::getfont
GmagickDraw::getfontstyle
GmagickDraw


Returns the font style

GmagickDraw::getfontsize
GmagickDraw::getfontweight
GmagickDraw
PHP Manual

GmagickDraw::getfontstyle

(PECL gmagick >= Unknown)

GmagickDraw::getfontstyle — Returns the font style

说明

public int GmagickDraw::getfontstyle ( void )

Returns the font style used when annotating with text.

参数

此函数没有参数。

返回值

Returns the font style constant (STYLE_) associated with the GmagickDraw object or 0 if no style is set.

GmagickDraw::getfontsize
GmagickDraw::getfontweight
GmagickDraw


Returns the font weight

GmagickDraw::getfontstyle
GmagickDraw::getstrokecolor
GmagickDraw
PHP Manual

GmagickDraw::getfontweight

(PECL gmagick >= Unknown)

GmagickDraw::getfontweight — Returns the font weight

说明

public int GmagickDraw::getfontweight ( void )

Returns the font weight used when annotating with text.

参数

此函数没有参数。

返回值

Returns an int on success and 0 if no weight is set.

GmagickDraw::getfontstyle
GmagickDraw::getstrokecolor
GmagickDraw


Returns the color used for stroking object outlines

GmagickDraw::getfontweight
GmagickDraw::getstrokeopacity
GmagickDraw
PHP Manual

GmagickDraw::getstrokecolor

(PECL gmagick >= Unknown)

GmagickDraw::getstrokecolor — Returns the color used for stroking object outlines

说明

public GmagickPixel GmagickDraw::getstrokecolor ( void )

Returns the color used for stroking object outlines.

参数

此函数没有参数。

返回值

Returns an GmagickPixel object which describes the color.

GmagickDraw::getfontweight
GmagickDraw::getstrokeopacity
GmagickDraw


Returns the opacity of stroked object outlines

GmagickDraw::getstrokecolor
GmagickDraw::getstrokewidth
GmagickDraw
PHP Manual

GmagickDraw::getstrokeopacity

(PECL gmagick >= Unknown)

GmagickDraw::getstrokeopacity — Returns the opacity of stroked object outlines

说明

public float GmagickDraw::getstrokeopacity ( void )

Returns the opacity of stroked object outlines.

参数

此函数没有参数。

返回值

Returns a double describing the opacity.

GmagickDraw::getstrokecolor
GmagickDraw::getstrokewidth
GmagickDraw


Returns the width of the stroke used to draw object outlines

GmagickDraw::getstrokeopacity
GmagickDraw::gettextdecoration
GmagickDraw
PHP Manual

GmagickDraw::getstrokewidth

(PECL gmagick >= Unknown)

GmagickDraw::getstrokewidth — Returns the width of the stroke used to draw object outlines

说明

public float GmagickDraw::getstrokewidth ( void )

Returns the width of the stroke used to draw object outlines.

参数

此函数没有参数。

返回值

Returns a double describing the stroke width.

GmagickDraw::getstrokeopacity
GmagickDraw::gettextdecoration
GmagickDraw


Returns the text decoration

GmagickDraw::getstrokewidth
GmagickDraw::gettextencoding
GmagickDraw
PHP Manual

GmagickDraw::gettextdecoration

(PECL gmagick >= Unknown)

GmagickDraw::gettextdecoration — Returns the text decoration

说明

public int GmagickDraw::gettextdecoration ( void )

Returns the decoration applied when annotating with text.

参数

此函数没有参数。

返回值

Returns one of the DECORATION_ constants and 0 if no decoration is set.

GmagickDraw::getstrokewidth
GmagickDraw::gettextencoding
GmagickDraw


Returns the code set used for text annotations

GmagickDraw::gettextdecoration
GmagickDraw::line
GmagickDraw
PHP Manual

GmagickDraw::gettextencoding

(PECL gmagick >= Unknown)

GmagickDraw::gettextencoding — Returns the code set used for text annotations

说明

public mixed GmagickDraw::gettextencoding ( void )

Returns a string which specifies the code set used for text annotations.

参数

此函数没有参数。

返回值

Returns a string specifying the code set or FALSE if text encoding is not set.

GmagickDraw::gettextdecoration
GmagickDraw::line
GmagickDraw


The line purpose

GmagickDraw::gettextencoding
GmagickDraw::point
GmagickDraw
PHP Manual

GmagickDraw::line

(PECL gmagick >= Unknown)

GmagickDraw::line — The line purpose

说明

public GmagickDraw GmagickDraw::line ( float $sx , float $sy , float $ex , float $ey )

Draws a line on the image using the current stroke color, stroke opacity, and stroke width.

参数

sx

starting x ordinate

sy

starting y ordinate

ex

ending x ordinate

ey

ending y ordinate

返回值

The GmagickDraw object on success

GmagickDraw::gettextencoding
GmagickDraw::point
GmagickDraw


Draws a point

GmagickDraw::line
GmagickDraw::polygon
GmagickDraw
PHP Manual

GmagickDraw::point

(PECL gmagick >= Unknown)

GmagickDraw::point — Draws a point

说明

public GmagickDraw GmagickDraw::point ( float $x , float $y )

Draws a point using the current stroke color and stroke thickness at the specified coordinates.

参数

x

target x coordinate

y

target y coordinate

返回值

The GmagickDraw object on success

GmagickDraw::line
GmagickDraw::polygon
GmagickDraw


Draws a polygon

GmagickDraw::point
GmagickDraw::polyline
GmagickDraw
PHP Manual

GmagickDraw::polygon

(PECL gmagick >= Unknown)

GmagickDraw::polygon — Draws a polygon

说明

public GmagickDraw GmagickDraw::polygon ( array $coordinates )

Draws a polygon using the current stroke, stroke width, and fill color or texture, using the specified array of coordinates.

参数

coordinates

coordinate array

返回值

The GmagickDraw object on success

GmagickDraw::point
GmagickDraw::polyline
GmagickDraw


Draws a polyline

GmagickDraw::polygon
GmagickDraw::rectangle
GmagickDraw
PHP Manual

GmagickDraw::polyline

(PECL gmagick >= Unknown)

GmagickDraw::polyline — Draws a polyline

说明

public GmagickDraw GmagickDraw::polyline ( array $coordinate_array )

Draws a polyline using the current stroke, stroke width, and fill color or texture, using the specified array of coordinates.

参数

coordinate_array

The array of coordinates

返回值

The GmagickDraw object on success

GmagickDraw::polygon
GmagickDraw::rectangle
GmagickDraw


Draws a rectangle

GmagickDraw::polyline
GmagickDraw::rotate
GmagickDraw
PHP Manual

GmagickDraw::rectangle

(PECL gmagick >= Unknown)

GmagickDraw::rectangle — Draws a rectangle

说明

public GmagickDraw GmagickDraw::rectangle ( float $x1 , float $y1 , float $x2 , float $y2 )

Draws a rectangle given two coordinates and using the current stroke, stroke width, and fill settings.

参数

x1

x ordinate of first coordinate

y1

y ordinate of first coordinate

x2

x ordinate of second coordinate

y2

y ordinate of second coordinate

返回值

The GmagickDraw object on success

GmagickDraw::polyline
GmagickDraw::rotate
GmagickDraw


Applies the specified rotation to the current coordinate space

GmagickDraw::rectangle
GmagickDraw::roundrectangle
GmagickDraw
PHP Manual

GmagickDraw::rotate

(PECL gmagick >= Unknown)

GmagickDraw::rotate — Applies the specified rotation to the current coordinate space

说明

public GmagickDraw GmagickDraw::rotate ( float $degrees )

Applies the specified rotation to the current coordinate space.

参数

degrees

degrees of rotation

返回值

The GmagickDraw object on success

GmagickDraw::rectangle
GmagickDraw::roundrectangle
GmagickDraw


Draws a rounded rectangle

GmagickDraw::rotate
GmagickDraw::scale
GmagickDraw
PHP Manual

GmagickDraw::roundrectangle

(PECL gmagick >= Unknown)

GmagickDraw::roundrectangle — Draws a rounded rectangle

说明

public GmagickDraw GmagickDraw::roundrectangle ( float $x1 , float $y1 , float $x2 , float $y2 , float $rx , float $ry )

Draws a rounded rectangle given two coordinates, x and y corner radiuses and using the current stroke, stroke width, and fill settings.

参数

x1

x ordinate of first coordinate

y1

y ordinate of first coordinate

x2

x ordinate of second coordinate

y2

y ordinate of second coordinate

rx

radius of corner in horizontal direction

ry

radius of corner in vertical direction

返回值

The GmagickDraw object on success

GmagickDraw::rotate
GmagickDraw::scale
GmagickDraw


Adjusts the scaling factor

GmagickDraw::roundrectangle
GmagickDraw::setfillcolor
GmagickDraw
PHP Manual

GmagickDraw::scale

(PECL gmagick >= Unknown)

GmagickDraw::scale — Adjusts the scaling factor

说明

public GmagickDraw GmagickDraw::scale ( float $x , float $y )

Adjusts the scaling factor to apply in the horizontal and vertical directions to the current coordinate space.

参数

x

horizontal scale factor

y

vertical scale factor

返回值

The GmagickDraw object on success

GmagickDraw::roundrectangle
GmagickDraw::setfillcolor
GmagickDraw


Sets the fill color to be used for drawing filled objects.

GmagickDraw::scale
GmagickDraw::setfillopacity
GmagickDraw
PHP Manual

GmagickDraw::setfillcolor

(PECL gmagick >= Unknown)

GmagickDraw::setfillcolor — Sets the fill color to be used for drawing filled objects.

说明

public GmagickDraw GmagickDraw::setfillcolor ( mixed $color )

Sets the fill color to be used for drawing filled objects.

参数

color

GmagickPixel or string indicating color to use for filling.

返回值

The GmagickDraw object on success.

GmagickDraw::scale
GmagickDraw::setfillopacity
GmagickDraw


The setfillopacity purpose

GmagickDraw::setfillcolor
GmagickDraw::setfont
GmagickDraw
PHP Manual

GmagickDraw::setfillopacity

(PECL gmagick >= Unknown)

GmagickDraw::setfillopacity — The setfillopacity purpose

说明

public GmagickDraw GmagickDraw::setfillopacity ( float $fill_opacity )

Sets the opacity to use when drawing using the fill color or fill texture. Setting it to 1.0 will make fill full opaque.

参数

fill_opacity

Fill opacity

返回值

The GmagickDraw object on success

GmagickDraw::setfillcolor
GmagickDraw::setfont
GmagickDraw


Sets the fully-specified font to use when annotating with text.

GmagickDraw::setfillopacity
GmagickDraw::setfontsize
GmagickDraw
PHP Manual

GmagickDraw::setfont

(PECL gmagick >= Unknown)

GmagickDraw::setfont — Sets the fully-specified font to use when annotating with text.

说明

public GmagickDraw GmagickDraw::setfont ( string $font )

Sets the fully-specified font to use when annotating with text

参数

font

font name

返回值

The GmagickDraw object on success

GmagickDraw::setfillopacity
GmagickDraw::setfontsize
GmagickDraw


Sets the font pointsize to use when annotating with text.

GmagickDraw::setfont
GmagickDraw::setfontstyle
GmagickDraw
PHP Manual

GmagickDraw::setfontsize

(PECL gmagick >= Unknown)

GmagickDraw::setfontsize — Sets the font pointsize to use when annotating with text.

说明

public GmagickDraw GmagickDraw::setfontsize ( float $pointsize )

Sets the font pointsize to use when annotating with text.

参数

pointsize

Text pointsize

返回值

The GmagickDraw object on success

GmagickDraw::setfont
GmagickDraw::setfontstyle
GmagickDraw


Sets the font style to use when annotating with text

GmagickDraw::setfontsize
GmagickDraw::setfontweight
GmagickDraw
PHP Manual

GmagickDraw::setfontstyle

(PECL gmagick >= Unknown)

GmagickDraw::setfontstyle — Sets the font style to use when annotating with text

说明

public GmagickDraw GmagickDraw::setfontstyle ( int $style )

Sets the font style to use when annotating with text. The AnyStyle enumeration acts as a wild-card "don't care" option.

参数

style

Font style (NormalStyle, ItalicStyle, ObliqueStyle, AnyStyle)

返回值

The GmagickDraw object on success

GmagickDraw::setfontsize
GmagickDraw::setfontweight
GmagickDraw


Sets the font weight

GmagickDraw::setfontstyle
GmagickDraw::setstrokecolor
GmagickDraw
PHP Manual

GmagickDraw::setfontweight

(PECL gmagick >= Unknown)

GmagickDraw::setfontweight — Sets the font weight

说明

public GmagickDraw GmagickDraw::setfontweight ( int $weight )

Sets the font weight to use when annotating with text.

参数

weight

Font weight (valid range 100-900)

返回值

The GmagickDraw object on success

GmagickDraw::setfontstyle
GmagickDraw::setstrokecolor
GmagickDraw


Sets the color used for stroking object outlines.

GmagickDraw::setfontweight
GmagickDraw::setstrokeopacity
GmagickDraw
PHP Manual

GmagickDraw::setstrokecolor

(PECL gmagick >= Unknown)

GmagickDraw::setstrokecolor — Sets the color used for stroking object outlines.

说明

public GmagickDraw GmagickDraw::setstrokecolor ( mixed $color )

Sets the color used for stroking object outlines.

参数

color

GmagickPixel or string representing the color for the stroke.

返回值

The GmagickDraw object on success.

GmagickDraw::setfontweight
GmagickDraw::setstrokeopacity
GmagickDraw


Specifies the opacity of stroked object outlines.

GmagickDraw::setstrokecolor
GmagickDraw::setstrokewidth
GmagickDraw
PHP Manual

GmagickDraw::setstrokeopacity

(PECL gmagick >= Unknown)

GmagickDraw::setstrokeopacity — Specifies the opacity of stroked object outlines.

说明

public GmagickDraw GmagickDraw::setstrokeopacity ( float $stroke_opacity )

Specifies the opacity of stroked object outlines.

参数

stroke_opacity

Stroke opacity. The value 1.0 is opaque.

返回值

The GmagickDraw object on success

GmagickDraw::setstrokecolor
GmagickDraw::setstrokewidth
GmagickDraw


Sets the width of the stroke used to draw object outlines.

GmagickDraw::setstrokeopacity
GmagickDraw::settextdecoration
GmagickDraw
PHP Manual

GmagickDraw::setstrokewidth

(PECL gmagick >= Unknown)

GmagickDraw::setstrokewidth — Sets the width of the stroke used to draw object outlines.

说明

public GmagickDraw GmagickDraw::setstrokewidth ( float $width )

Sets the width of the stroke used to draw object outlines

参数

width

Stroke width

返回值

The GmagickDraw object on success

GmagickDraw::setstrokeopacity
GmagickDraw::settextdecoration
GmagickDraw


Specifies a decoration

GmagickDraw::setstrokewidth
GmagickDraw::settextencoding
GmagickDraw
PHP Manual

GmagickDraw::settextdecoration

(PECL gmagick >= Unknown)

GmagickDraw::settextdecoration — Specifies a decoration

说明

public GmagickDraw GmagickDraw::settextdecoration ( int $decoration )

Specifies a decoration to be applied when annotating with text.

参数

int

Text decoration. One of NoDecoration, UnderlineDecoration, OverlineDecoration, or LineThroughDecoration

返回值

The GmagickDraw object on success

GmagickDraw::setstrokewidth
GmagickDraw::settextencoding
GmagickDraw


Specifies the text code set

GmagickDraw::settextdecoration
GmagickPixel
GmagickDraw
PHP Manual

GmagickDraw::settextencoding

(PECL gmagick >= Unknown)

GmagickDraw::settextencoding — Specifies the text code set

说明

public GmagickDraw GmagickDraw::settextencoding ( string $encoding )

Specifies the code set to use for text annotations. The only character encoding which may be specified at this time is "UTF-8" for representing Unicode as a sequence of bytes. Specify an empty string to set text encoding to the system's default. Successful text annotation using Unicode may require fonts designed to support Unicode.

参数

encoding

Character string specifying text encoding

返回值

The GmagickDraw object on success

GmagickDraw::settextdecoration
GmagickPixel
GmagickDraw


The GmagickPixel class

(PECL gmagick >= Unknown)

简介

类摘要

GmagickPixel {
/* 方法 */
public __construct ([ string $color ] )
public mixed getcolor ([ bool $as_array = false [, bool $normalize_array = false ]] )
public int getcolorcount ( void )
public float getcolorvalue ( int $color )
public GmagickPixel setcolor ( string $color )
public GmagickPixel setcolorvalue ( int $color , float $value )
}

Table of Contents

  • GmagickPixel::__construct — The GmagickPixel constructor
  • GmagickPixel::getcolor — Returns the color
  • GmagickPixel::getcolorcount — Returns the color count associated with this color
  • GmagickPixel::getcolorvalue — Gets the normalized value of the provided color channel
  • GmagickPixel::setcolor — Sets the color
  • GmagickPixel::setcolorvalue — Sets the normalized value of one of the channels
GmagickDraw::settextencoding
GmagickPixel::__construct
Gmagick


The GmagickPixel constructor

GmagickPixel
GmagickPixel::getcolor
GmagickPixel
PHP Manual

GmagickPixel::__construct

(PECL gmagick >= Unknown)

GmagickPixel::__construct — The GmagickPixel constructor

说明

public GmagickPixel::__construct ([ string $color ] )

Constructs an GmagickPixel object. If a color is specified, the object is constructed and then initialised with that color before being returned.

参数

color

The optional color string to use as the initial value of this object.

返回值

The GmagickPixel object on success.

GmagickPixel
GmagickPixel::getcolor
GmagickPixel


Returns the color

GmagickPixel::__construct
GmagickPixel::getcolorcount
GmagickPixel
PHP Manual

GmagickPixel::getcolor

(PECL gmagick >= Unknown)

GmagickPixel::getcolor — Returns the color

说明

public mixed GmagickPixel::getcolor ([ bool $as_array = false [, bool $normalize_array = false ]] )

Returns the color described by the GmagickPixel object, as a string or an array. If the color has an opacity channel set, this is provided as a fourth value in the list.

参数

as_array

TRUE to indicate return of array instead of string.

normalize_array

TRUE to normalize the color values.

返回值

A string or an array of channel values, each normalized if TRUE is given as normalize_array. Throws GmagickPixelException on error.

GmagickPixel::__construct
GmagickPixel::getcolorcount
GmagickPixel


Returns the color count associated with this color

GmagickPixel::getcolor
GmagickPixel::getcolorvalue
GmagickPixel
PHP Manual

GmagickPixel::getcolorcount

(PECL gmagick >= Unknown)

GmagickPixel::getcolorcount — Returns the color count associated with this color

说明

public int GmagickPixel::getcolorcount ( void )

Returns the color count associated with this color

参数

此函数没有参数。

返回值

Returns the color count as an integer on success, throws GmagickPixelException on failure.

GmagickPixel::getcolor
GmagickPixel::getcolorvalue
GmagickPixel


Gets the normalized value of the provided color channel

GmagickPixel::getcolorcount
GmagickPixel::setcolor
GmagickPixel
PHP Manual

GmagickPixel::getcolorvalue

(PECL gmagick >= Unknown)

GmagickPixel::getcolorvalue — Gets the normalized value of the provided color channel

说明

public float GmagickPixel::getcolorvalue ( int $color )

Retrieves the value of the color channel specified, as a floating-point number between 0 and 1.

参数

color

The channel to check, specified as one of the Gmagick channel constants.

返回值

The value of the channel, as a normalized floating-point number, throwing GmagickPixelException on error.

GmagickPixel::getcolorcount
GmagickPixel::setcolor
GmagickPixel


Sets the color

GmagickPixel::getcolorvalue
GmagickPixel::setcolorvalue
GmagickPixel
PHP Manual

GmagickPixel::setcolor

(PECL gmagick >= Unknown)

GmagickPixel::setcolor — Sets the color

说明

public GmagickPixel GmagickPixel::setcolor ( string $color )

Sets the color described by the GmagickPixel object, with a string (e.g. "blue", "#0000ff", "rgb(0,0,255)", "cmyk(100,100,100,10)", etc.).

参数

color

The color definition to use in order to initialise the GmagickPixel object.

返回值

The GmagickPixel object on success.

GmagickPixel::getcolorvalue
GmagickPixel::setcolorvalue
GmagickPixel


Sets the normalized value of one of the channels

GmagickPixel::setcolor
ImageMagick
GmagickPixel
PHP Manual

GmagickPixel::setcolorvalue

(PECL gmagick >= Unknown)

GmagickPixel::setcolorvalue — Sets the normalized value of one of the channels

说明

public GmagickPixel GmagickPixel::setcolorvalue ( int $color , float $value )

Sets the value of the specified channel of this object to the provided value, which should be between 0 and 1. This function can be used to provide an opacity channel to a GmagickPixel object.

参数

color

One of the Gmagick channel color constants.

value

The value to set this channel to, ranging from 0 to 1.

返回值

The GmagickPixel object on success.

GmagickPixel::setcolor
ImageMagick
GmagickPixel


图像处理(ImageMagick)

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Basic usage
  • Imagick — The Imagick class
    • Imagick::adaptiveBlurImage — Adds adaptive blur filter to image
    • Imagick::adaptiveResizeImage — Adaptively resize image with data dependent triangulation
    • Imagick::adaptiveSharpenImage — Adaptively sharpen the image
    • Imagick::adaptiveThresholdImage — Selects a threshold for each pixel based on a range of intensity
    • Imagick::addImage — Adds new image to Imagick object image list
    • Imagick::addNoiseImage — Adds random noise to the image
    • Imagick::affineTransformImage — Transforms an image
    • Imagick::animateImages — Animates an image or images
    • Imagick::annotateImage — Annotates an image with text
    • Imagick::appendImages — Append a set of images
    • Imagick::autoLevelImage — Description
    • Imagick::averageImages — Average a set of images
    • Imagick::blackThresholdImage — Forces all pixels below the threshold into black
    • Imagick::blueShiftImage — Description
    • Imagick::blurImage — Adds blur filter to image
    • Imagick::borderImage — Surrounds the image with a border
    • Imagick::brightnessContrastImage — Description
    • Imagick::charcoalImage — Simulates a charcoal drawing
    • Imagick::chopImage — Removes a region of an image and trims
    • Imagick::clampImage — Description
    • Imagick::clear — Clears all resources associated to Imagick object
    • Imagick::clipImage — Clips along the first path from the 8BIM profile
    • Imagick::clipImagePath — Description
    • Imagick::clipPathImage — Clips along the named paths from the 8BIM profile
    • Imagick::clone — Makes an exact copy of the Imagick object
    • Imagick::clutImage — Replaces colors in the image
    • Imagick::coalesceImages — Composites a set of images
    • Imagick::colorFloodfillImage — Changes the color value of any pixel that matches target
    • Imagick::colorizeImage — Blends the fill color with the image
    • Imagick::colorMatrixImage — Description
    • Imagick::combineImages — Combines one or more images into a single image
    • Imagick::commentImage — Adds a comment to your image
    • Imagick::compareImageChannels — Returns the difference in one or more images
    • Imagick::compareImageLayers — Returns the maximum bounding region between images
    • Imagick::compareImages — Compares an image to a reconstructed image
    • Imagick::compositeImage — 把一张图合并到一张图
    • Imagick::__construct — The Imagick constructor
    • Imagick::contrastImage — Change the contrast of the image
    • Imagick::contrastStretchImage — Enhances the contrast of a color image
    • Imagick::convolveImage — Applies a custom convolution kernel to the image
    • Imagick::count — Description
    • Imagick::cropImage — 截图图片的一块区域
    • Imagick::cropThumbnailImage — 创建缩略图
    • Imagick::current — Returns a reference to the current Imagick object
    • Imagick::cycleColormapImage — Displaces an image's colormap
    • Imagick::decipherImage — Deciphers an image
    • Imagick::deconstructImages — Returns certain pixel differences between images
    • Imagick::deleteImageArtifact — Delete image artifact
    • Imagick::deleteImageProperty — Description
    • Imagick::deskewImage — Removes skew from the image
    • Imagick::despeckleImage — Reduces the speckle noise in an image
    • Imagick::destroy — Destroys the Imagick object
    • Imagick::displayImage — Displays an image
    • Imagick::displayImages — Displays an image or image sequence
    • Imagick::distortImage — Distorts an image using various distortion methods
    • Imagick::drawImage — 把 ImagickDraw 对象渲染到当前图片上
    • Imagick::edgeImage — Enhance edges within the image
    • Imagick::embossImage — Returns a grayscale image with a three-dimensional effect
    • Imagick::encipherImage — Enciphers an image
    • Imagick::enhanceImage — Improves the quality of a noisy image
    • Imagick::equalizeImage — Equalizes the image histogram
    • Imagick::evaluateImage — Applies an expression to an image
    • Imagick::exportImagePixels — Exports raw image pixels
    • Imagick::extentImage — Set image size
    • Imagick::filter — Description
    • Imagick::flattenImages — Merges a sequence of images
    • Imagick::flipImage — Creates a vertical mirror image
    • Imagick::floodFillPaintImage — Changes the color value of any pixel that matches target
    • Imagick::flopImage — Creates a horizontal mirror image
    • Imagick::forwardFourierTransformImage — Description
    • Imagick::frameImage — Adds a simulated three-dimensional border
    • Imagick::functionImage — Applies a function on the image
    • Imagick::fxImage — Evaluate expression for each pixel in the image
    • Imagick::gammaImage — Gamma-corrects an image
    • Imagick::gaussianBlurImage — Blurs an image
    • Imagick::getColorspace — Gets the colorspace
    • Imagick::getCompression — Gets the object compression type
    • Imagick::getCompressionQuality — Gets the object compression quality
    • Imagick::getCopyright — Returns the ImageMagick API copyright as a string
    • Imagick::getFilename — The filename associated with an image sequence
    • Imagick::getFont — Gets font
    • Imagick::getFormat — Returns the format of the Imagick object
    • Imagick::getGravity — Gets the gravity
    • Imagick::getHomeURL — Returns the ImageMagick home URL
    • Imagick::getImage — Returns a new Imagick object
    • Imagick::getImageAlphaChannel — 获取图像的 alpha 通道
    • Imagick::getImageArtifact — Get image artifact
    • Imagick::getImageAttribute — Description
    • Imagick::getImageBackgroundColor — Returns the image background color
    • Imagick::getImageBlob — Returns the image sequence as a blob
    • Imagick::getImageBluePrimary — Returns the chromaticy blue primary point
    • Imagick::getImageBorderColor — Returns the image border color
    • Imagick::getImageChannelDepth — Gets the depth for a particular image channel
    • Imagick::getImageChannelDistortion — Compares image channels of an image to a reconstructed image
    • Imagick::getImageChannelDistortions — Gets channel distortions
    • Imagick::getImageChannelExtrema — Gets the extrema for one or more image channels
    • Imagick::getImageChannelKurtosis — The getImageChannelKurtosis purpose
    • Imagick::getImageChannelMean — Gets the mean and standard deviation
    • Imagick::getImageChannelRange — Gets channel range
    • Imagick::getImageChannelStatistics — Returns statistics for each channel in the image
    • Imagick::getImageClipMask — Gets image clip mask
    • Imagick::getImageColormapColor — Returns the color of the specified colormap index
    • Imagick::getImageColors — Gets the number of unique colors in the image
    • Imagick::getImageColorspace — Gets the image colorspace
    • Imagick::getImageCompose — Returns the composite operator associated with the image
    • Imagick::getImageCompression — Gets the current image's compression type
    • Imagick::getImageCompressionQuality — Gets the current image's compression quality
    • Imagick::getImageDelay — Gets the image delay
    • Imagick::getImageDepth — Gets the image depth
    • Imagick::getImageDispose — Gets the image disposal method
    • Imagick::getImageDistortion — Compares an image to a reconstructed image
    • Imagick::getImageExtrema — Gets the extrema for the image
    • Imagick::getImageFilename — Returns the filename of a particular image in a sequence
    • Imagick::getImageFormat — Returns the format of a particular image in a sequence
    • Imagick::getImageGamma — Gets the image gamma
    • Imagick::getImageGeometry — Gets the width and height as an associative array
    • Imagick::getImageGravity — Gets the image gravity
    • Imagick::getImageGreenPrimary — Returns the chromaticy green primary point
    • Imagick::getImageHeight — Returns the image height
    • Imagick::getImageHistogram — Gets the image histogram
    • Imagick::getImageIndex — Gets the index of the current active image
    • Imagick::getImageInterlaceScheme — Gets the image interlace scheme
    • Imagick::getImageInterpolateMethod — Returns the interpolation method
    • Imagick::getImageIterations — Gets the image iterations
    • Imagick::getImageLength — Returns the image length in bytes
    • Imagick::getImageMagickLicense — Returns a string containing the ImageMagick license
    • Imagick::getImageMatte — Return if the image has a matte channel
    • Imagick::getImageMatteColor — Returns the image matte color
    • Imagick::getImageMimeType — Description
    • Imagick::getImageOrientation — Gets the image orientation
    • Imagick::getImagePage — Returns the page geometry
    • Imagick::getImagePixelColor — Returns the color of the specified pixel
    • Imagick::getImageProfile — Returns the named image profile
    • Imagick::getImageProfiles — Returns the image profiles
    • Imagick::getImageProperties — Returns the image properties
    • Imagick::getImageProperty — Returns the named image property
    • Imagick::getImageRedPrimary — Returns the chromaticity red primary point
    • Imagick::getImageRegion — Extracts a region of the image
    • Imagick::getImageRenderingIntent — Gets the image rendering intent
    • Imagick::getImageResolution — 获取图像的x,y轴分辨率
    • Imagick::getImagesBlob — Returns all image sequences as a blob
    • Imagick::getImageScene — Gets the image scene
    • Imagick::getImageSignature — Generates an SHA-256 message digest
    • Imagick::getImageSize — Returns the image length in bytes
    • Imagick::getImageTicksPerSecond — Gets the image ticks-per-second
    • Imagick::getImageTotalInkDensity — Gets the image total ink density
    • Imagick::getImageType — Gets the potential image type
    • Imagick::getImageUnits — 获取图像的分辨率单位
    • Imagick::getImageVirtualPixelMethod — Returns the virtual pixel method
    • Imagick::getImageWhitePoint — Returns the chromaticity white point
    • Imagick::getImageWidth — Returns the image width
    • Imagick::getInterlaceScheme — Gets the object interlace scheme
    • Imagick::getIteratorIndex — Gets the index of the current active image
    • Imagick::getNumberImages — Returns the number of images in the object
    • Imagick::getOption — Returns a value associated with the specified key
    • Imagick::getPackageName — Returns the ImageMagick package name
    • Imagick::getPage — Returns the page geometry
    • Imagick::getPixelIterator — Returns a MagickPixelIterator
    • Imagick::getPixelRegionIterator — Get an ImagickPixelIterator for an image section
    • Imagick::getPointSize — Gets point size
    • Imagick::getQuantum — Description
    • Imagick::getQuantumDepth — Gets the quantum depth
    • Imagick::getQuantumRange — Returns the Imagick quantum range
    • Imagick::getRegistry — Description
    • Imagick::getReleaseDate — Returns the ImageMagick release date
    • Imagick::getResource — Returns the specified resource's memory usage
    • Imagick::getResourceLimit — Returns the specified resource limit
    • Imagick::getSamplingFactors — Gets the horizontal and vertical sampling factor
    • Imagick::getSize — Returns the size associated with the Imagick object
    • Imagick::getSizeOffset — Returns the size offset
    • Imagick::getVersion — Returns the ImageMagick API version
    • Imagick::haldClutImage — Replaces colors in the image
    • Imagick::hasNextImage — Checks if the object has more images
    • Imagick::hasPreviousImage — Checks if the object has a previous image
    • Imagick::identifyFormat — Description
    • Imagick::identifyImage — Identifies an image and fetches attributes
    • Imagick::implodeImage — Creates a new image as a copy
    • Imagick::importImagePixels — Imports image pixels
    • Imagick::inverseFourierTransformImage — Description
    • Imagick::labelImage — Adds a label to an image
    • Imagick::levelImage — Adjusts the levels of an image
    • Imagick::linearStretchImage — Stretches with saturation the image intensity
    • Imagick::liquidRescaleImage — Animates an image or images
    • Imagick::listRegistry — Description
    • Imagick::magnifyImage — Scales an image proportionally 2x
    • Imagick::mapImage — Replaces the colors of an image with the closest color from a reference image.
    • Imagick::matteFloodfillImage — Changes the transparency value of a color
    • Imagick::medianFilterImage — Applies a digital filter
    • Imagick::mergeImageLayers — Merges image layers
    • Imagick::minifyImage — Scales an image proportionally to half its size
    • Imagick::modulateImage — Control the brightness, saturation, and hue
    • Imagick::montageImage — Creates a composite image
    • Imagick::morphImages — Method morphs a set of images
    • Imagick::morphology — Description
    • Imagick::mosaicImages — Forms a mosaic from images
    • Imagick::motionBlurImage — Simulates motion blur
    • Imagick::negateImage — Negates the colors in the reference image
    • Imagick::newImage — 创建一张图片
    • Imagick::newPseudoImage — Creates a new image
    • Imagick::nextImage — Moves to the next image
    • Imagick::normalizeImage — Enhances the contrast of a color image
    • Imagick::oilPaintImage — Simulates an oil painting
    • Imagick::opaquePaintImage — Changes the color value of any pixel that matches target
    • Imagick::optimizeImageLayers — Removes repeated portions of images to optimize
    • Imagick::orderedPosterizeImage — Performs an ordered dither
    • Imagick::paintFloodfillImage — Changes the color value of any pixel that matches target
    • Imagick::paintOpaqueImage — Change any pixel that matches color
    • Imagick::paintTransparentImage — Changes any pixel that matches color with the color defined by fill
    • Imagick::pingImage — Fetch basic attributes about the image
    • Imagick::pingImageBlob — Quickly fetch attributes
    • Imagick::pingImageFile — Get basic image attributes in a lightweight manner
    • Imagick::polaroidImage — Simulates a Polaroid picture
    • Imagick::posterizeImage — Reduces the image to a limited number of color level
    • Imagick::previewImages — Quickly pin-point appropriate parameters for image processing
    • Imagick::previousImage — Move to the previous image in the object
    • Imagick::profileImage — Adds or removes a profile from an image
    • Imagick::quantizeImage — Analyzes the colors within a reference image
    • Imagick::quantizeImages — Analyzes the colors within a sequence of images
    • Imagick::queryFontMetrics — Returns an array representing the font metrics
    • Imagick::queryFonts — Returns the configured fonts
    • Imagick::queryFormats — Returns formats supported by Imagick
    • Imagick::radialBlurImage — Radial blurs an image
    • Imagick::raiseImage — Creates a simulated 3d button-like effect
    • Imagick::randomThresholdImage — Creates a high-contrast, two-color image
    • Imagick::readImage — Reads image from filename
    • Imagick::readImageBlob — 从二进制字符串里读取图片
    • Imagick::readImageFile — Reads image from open filehandle
    • Imagick::readimages — Description
    • Imagick::recolorImage — Recolors image
    • Imagick::reduceNoiseImage — Smooths the contours of an image
    • Imagick::remapImage — Remaps image colors
    • Imagick::removeImage — Removes an image from the image list
    • Imagick::removeImageProfile — Removes the named image profile and returns it
    • Imagick::render — Renders all preceding drawing commands
    • Imagick::resampleImage — Resample image to desired resolution
    • Imagick::resetImagePage — Reset image page
    • Imagick::resizeImage — Scales an image
    • Imagick::rollImage — Offsets an image
    • Imagick::rotateImage — Rotates an image
    • Imagick::rotationalBlurImage — Description
    • Imagick::roundCorners — Rounds image corners
    • Imagick::sampleImage — Scales an image with pixel sampling
    • Imagick::scaleImage — Scales the size of an image
    • Imagick::segmentImage — Segments an image
    • Imagick::selectiveBlurImage — Description
    • Imagick::separateImageChannel — Separates a channel from the image
    • Imagick::sepiaToneImage — Sepia tones an image
    • Imagick::setBackgroundColor — Sets the object's default background color
    • Imagick::setColorspace — Set colorspace
    • Imagick::setCompression — Sets the object's default compression type
    • Imagick::setCompressionQuality — Sets the object's default compression quality
    • Imagick::setFilename — Sets the filename before you read or write the image
    • Imagick::setFirstIterator — Sets the Imagick iterator to the first image
    • Imagick::setFont — Sets font
    • Imagick::setFormat — Sets the format of the Imagick object
    • Imagick::setGravity — Sets the gravity
    • Imagick::setImage — Replaces image in the object
    • Imagick::setImageAlphaChannel — Sets image alpha channel
    • Imagick::setImageArtifact — Set image artifact
    • Imagick::setImageAttribute — Description
    • Imagick::setImageBackgroundColor — Sets the image background color
    • Imagick::setImageBias — Sets the image bias for any method that convolves an image
    • Imagick::setImageBiasQuantum — Description
    • Imagick::setImageBluePrimary — Sets the image chromaticity blue primary point
    • Imagick::setImageBorderColor — Sets the image border color
    • Imagick::setImageChannelDepth — Sets the depth of a particular image channel
    • Imagick::setImageClipMask — Sets image clip mask
    • Imagick::setImageColormapColor — Sets the color of the specified colormap index
    • Imagick::setImageColorspace — Sets the image colorspace
    • Imagick::setImageCompose — Sets the image composite operator
    • Imagick::setImageCompression — 设置图片压缩的类型
    • Imagick::setImageCompressionQuality — 设置图片压缩的质量
    • Imagick::setImageDelay — Sets the image delay
    • Imagick::setImageDepth — Sets the image depth
    • Imagick::setImageDispose — Sets the image disposal method
    • Imagick::setImageExtent — Sets the image size
    • Imagick::setImageFilename — Sets the filename of a particular image
    • Imagick::setImageFormat — 为图片设置指定的格式
    • Imagick::setImageGamma — Sets the image gamma
    • Imagick::setImageGravity — Sets the image gravity
    • Imagick::setImageGreenPrimary — Sets the image chromaticity green primary point
    • Imagick::setImageIndex — Set the iterator position
    • Imagick::setImageInterlaceScheme — Sets the image compression
    • Imagick::setImageInterpolateMethod — Sets the image interpolate pixel method
    • Imagick::setImageIterations — Sets the image iterations
    • Imagick::setImageMatte — Sets the image matte channel
    • Imagick::setImageMatteColor — Sets the image matte color
    • Imagick::setImageOpacity — Sets the image opacity level
    • Imagick::setImageOrientation — Sets the image orientation
    • Imagick::setImagePage — Sets the page geometry of the image
    • Imagick::setImageProfile — Adds a named profile to the Imagick object
    • Imagick::setImageProperty — Sets an image property
    • Imagick::setImageRedPrimary — Sets the image chromaticity red primary point
    • Imagick::setImageRenderingIntent — Sets the image rendering intent
    • Imagick::setImageResolution — Sets the image resolution
    • Imagick::setImageScene — Sets the image scene
    • Imagick::setImageTicksPerSecond — Sets the image ticks-per-second
    • Imagick::setImageType — Sets the image type
    • Imagick::setImageUnits — Sets the image units of resolution
    • Imagick::setImageVirtualPixelMethod — Sets the image virtual pixel method
    • Imagick::setImageWhitePoint — Sets the image chromaticity white point
    • Imagick::setInterlaceScheme — Sets the image compression
    • Imagick::setIteratorIndex — Set the iterator position
    • Imagick::setLastIterator — Sets the Imagick iterator to the last image
    • Imagick::setOption — Set an option
    • Imagick::setPage — Sets the page geometry of the Imagick object
    • Imagick::setPointSize — Sets point size
    • Imagick::setProgressMonitor — Description
    • Imagick::setRegistry — Description
    • Imagick::setResolution — Sets the image resolution
    • Imagick::setResourceLimit — Sets the limit for a particular resource in megabytes
    • Imagick::setSamplingFactors — Sets the image sampling factors
    • Imagick::setSize — Sets the size of the Imagick object
    • Imagick::setSizeOffset — Sets the size and offset of the Imagick object
    • Imagick::setType — Sets the image type attribute
    • Imagick::shadeImage — Creates a 3D effect
    • Imagick::shadowImage — Simulates an image shadow
    • Imagick::sharpenImage — Sharpens an image
    • Imagick::shaveImage — Shaves pixels from the image edges
    • Imagick::shearImage — Creating a parallelogram
    • Imagick::sigmoidalContrastImage — Adjusts the contrast of an image
    • Imagick::sketchImage — Simulates a pencil sketch
    • Imagick::smushImages — Description
    • Imagick::solarizeImage — Applies a solarizing effect to the image
    • Imagick::sparseColorImage — Interpolates colors
    • Imagick::spliceImage — Splices a solid color into the image
    • Imagick::spreadImage — Randomly displaces each pixel in a block
    • Imagick::statisticImage — Description
    • Imagick::steganoImage — Hides a digital watermark within the image
    • Imagick::stereoImage — Composites two images
    • Imagick::stripImage — 去掉图片的所有配置和设置
    • Imagick::subImageMatch — Description
    • Imagick::swirlImage — Swirls the pixels about the center of the image
    • Imagick::textureImage — Repeatedly tiles the texture image
    • Imagick::thresholdImage — Changes the value of individual pixels based on a threshold
    • Imagick::thumbnailImage — Changes the size of an image
    • Imagick::tintImage — Applies a color vector to each pixel in the image
    • Imagick::__toString — Returns the image as a string.
    • Imagick::transformImage — Convenience method for setting crop size and the image geometry
    • Imagick::transformImageColorspace — Transforms an image to a new colorspace.
    • Imagick::transparentPaintImage — Paints pixels transparent
    • Imagick::transposeImage — Creates a vertical mirror image
    • Imagick::transverseImage — Creates a horizontal mirror image
    • Imagick::trimImage — Remove edges from the image
    • Imagick::uniqueImageColors — Discards all but one of any pixel color
    • Imagick::unsharpMaskImage — Sharpens an image
    • Imagick::valid — Checks if the current item is valid
    • Imagick::vignetteImage — Adds vignette filter to the image
    • Imagick::waveImage — Applies wave filter to the image
    • Imagick::whiteThresholdImage — Force all pixels above the threshold into white
    • Imagick::writeImage — 把图片写入指定的文件
    • Imagick::writeImageFile — Writes an image to a filehandle
    • Imagick::writeImages — Writes an image or image sequence
    • Imagick::writeImagesFile — Writes frames to a filehandle
  • ImagickDraw — The ImagickDraw class
    • ImagickDraw::affine — Adjusts the current affine transformation matrix
    • ImagickDraw::annotation — Draws text on the image
    • ImagickDraw::arc — Draws an arc
    • ImagickDraw::bezier — Draws a bezier curve
    • ImagickDraw::circle — Draws a circle
    • ImagickDraw::clear — Clears the ImagickDraw
    • ImagickDraw::clone — Makes an exact copy of the specified ImagickDraw object
    • ImagickDraw::color — Draws color on image
    • ImagickDraw::comment — Adds a comment
    • ImagickDraw::composite — Composites an image onto the current image
    • ImagickDraw::__construct — The ImagickDraw constructor
    • ImagickDraw::destroy — Frees all associated resources
    • ImagickDraw::ellipse — Draws an ellipse on the image
    • ImagickDraw::getClipPath — Obtains the current clipping path ID
    • ImagickDraw::getClipRule — Returns the current polygon fill rule
    • ImagickDraw::getClipUnits — Returns the interpretation of clip path units
    • ImagickDraw::getFillColor — Returns the fill color
    • ImagickDraw::getFillOpacity — Returns the opacity used when drawing
    • ImagickDraw::getFillRule — Returns the fill rule
    • ImagickDraw::getFont — Returns the font
    • ImagickDraw::getFontFamily — Returns the font family
    • ImagickDraw::getFontSize — Returns the font pointsize
    • ImagickDraw::getFontStretch — Description
    • ImagickDraw::getFontStyle — Returns the font style
    • ImagickDraw::getFontWeight — Returns the font weight
    • ImagickDraw::getGravity — Returns the text placement gravity
    • ImagickDraw::getStrokeAntialias — Returns the current stroke antialias setting
    • ImagickDraw::getStrokeColor — Returns the color used for stroking object outlines
    • ImagickDraw::getStrokeDashArray — Returns an array representing the pattern of dashes and gaps used to stroke paths
    • ImagickDraw::getStrokeDashOffset — Returns the offset into the dash pattern to start the dash
    • ImagickDraw::getStrokeLineCap — Returns the shape to be used at the end of open subpaths when they are stroked
    • ImagickDraw::getStrokeLineJoin — Returns the shape to be used at the corners of paths when they are stroked
    • ImagickDraw::getStrokeMiterLimit — Returns the stroke miter limit
    • ImagickDraw::getStrokeOpacity — Returns the opacity of stroked object outlines
    • ImagickDraw::getStrokeWidth — Returns the width of the stroke used to draw object outlines
    • ImagickDraw::getTextAlignment — Returns the text alignment
    • ImagickDraw::getTextAntialias — Returns the current text antialias setting
    • ImagickDraw::getTextDecoration — Returns the text decoration
    • ImagickDraw::getTextEncoding — Returns the code set used for text annotations
    • ImagickDraw::getTextInterlineSpacing — Description
    • ImagickDraw::getTextInterwordSpacing — Description
    • ImagickDraw::getTextKerning — Description
    • ImagickDraw::getTextUnderColor — Returns the text under color
    • ImagickDraw::getVectorGraphics — Returns a string containing vector graphics
    • ImagickDraw::line — Draws a line
    • ImagickDraw::matte — Paints on the image's opacity channel
    • ImagickDraw::pathClose — Adds a path element to the current path
    • ImagickDraw::pathCurveToAbsolute — Draws a cubic Bezier curve
    • ImagickDraw::pathCurveToQuadraticBezierAbsolute — Draws a quadratic Bezier curve
    • ImagickDraw::pathCurveToQuadraticBezierRelative — Draws a quadratic Bezier curve
    • ImagickDraw::pathCurveToQuadraticBezierSmoothAbsolute — Draws a quadratic Bezier curve
    • ImagickDraw::pathCurveToQuadraticBezierSmoothRelative — Draws a quadratic Bezier curve
    • ImagickDraw::pathCurveToRelative — Draws a cubic Bezier curve
    • ImagickDraw::pathCurveToSmoothAbsolute — Draws a cubic Bezier curve
    • ImagickDraw::pathCurveToSmoothRelative — Draws a cubic Bezier curve
    • ImagickDraw::pathEllipticArcAbsolute — Draws an elliptical arc
    • ImagickDraw::pathEllipticArcRelative — Draws an elliptical arc
    • ImagickDraw::pathFinish — Terminates the current path
    • ImagickDraw::pathLineToAbsolute — Draws a line path
    • ImagickDraw::pathLineToHorizontalAbsolute — Draws a horizontal line path
    • ImagickDraw::pathLineToHorizontalRelative — Draws a horizontal line
    • ImagickDraw::pathLineToRelative — Draws a line path
    • ImagickDraw::pathLineToVerticalAbsolute — Draws a vertical line
    • ImagickDraw::pathLineToVerticalRelative — Draws a vertical line path
    • ImagickDraw::pathMoveToAbsolute — Starts a new sub-path
    • ImagickDraw::pathMoveToRelative — Starts a new sub-path
    • ImagickDraw::pathStart — Declares the start of a path drawing list
    • ImagickDraw::point — Draws a point
    • ImagickDraw::polygon — Draws a polygon
    • ImagickDraw::polyline — Draws a polyline
    • ImagickDraw::pop — Destroys the current ImagickDraw in the stack, and returns to the previously pushed ImagickDraw
    • ImagickDraw::popClipPath — Terminates a clip path definition
    • ImagickDraw::popDefs — Terminates a definition list
    • ImagickDraw::popPattern — Terminates a pattern definition
    • ImagickDraw::push — Clones the current ImagickDraw and pushes it to the stack
    • ImagickDraw::pushClipPath — Starts a clip path definition
    • ImagickDraw::pushDefs — Indicates that following commands create named elements for early processing
    • ImagickDraw::pushPattern — Indicates that subsequent commands up to a ImagickDraw::opPattern() command comprise the definition of a named pattern
    • ImagickDraw::rectangle — Draws a rectangle
    • ImagickDraw::render — Renders all preceding drawing commands onto the image
    • ImagickDraw::resetVectorGraphics — Description
    • ImagickDraw::rotate — Applies the specified rotation to the current coordinate space
    • ImagickDraw::roundRectangle — Draws a rounded rectangle
    • ImagickDraw::scale — Adjusts the scaling factor
    • ImagickDraw::setClipPath — Associates a named clipping path with the image
    • ImagickDraw::setClipRule — Set the polygon fill rule to be used by the clipping path
    • ImagickDraw::setClipUnits — Sets the interpretation of clip path units
    • ImagickDraw::setFillAlpha — Sets the opacity to use when drawing using the fill color or fill texture
    • ImagickDraw::setFillColor — Sets the fill color to be used for drawing filled objects
    • ImagickDraw::setFillOpacity — Sets the opacity to use when drawing using the fill color or fill texture
    • ImagickDraw::setFillPatternURL — Sets the URL to use as a fill pattern for filling objects
    • ImagickDraw::setFillRule — Sets the fill rule to use while drawing polygons
    • ImagickDraw::setFont — Sets the fully-specified font to use when annotating with text
    • ImagickDraw::setFontFamily — Sets the font family to use when annotating with text
    • ImagickDraw::setFontSize — Sets the font pointsize to use when annotating with text
    • ImagickDraw::setFontStretch — Sets the font stretch to use when annotating with text
    • ImagickDraw::setFontStyle — Sets the font style to use when annotating with text
    • ImagickDraw::setFontWeight — Sets the font weight
    • ImagickDraw::setGravity — Sets the text placement gravity
    • ImagickDraw::setResolution — Description
    • ImagickDraw::setStrokeAlpha — Specifies the opacity of stroked object outlines
    • ImagickDraw::setStrokeAntialias — Controls whether stroked outlines are antialiased
    • ImagickDraw::setStrokeColor — Sets the color used for stroking object outlines
    • ImagickDraw::setStrokeDashArray — Specifies the pattern of dashes and gaps used to stroke paths
    • ImagickDraw::setStrokeDashOffset — Specifies the offset into the dash pattern to start the dash
    • ImagickDraw::setStrokeLineCap — Specifies the shape to be used at the end of open subpaths when they are stroked
    • ImagickDraw::setStrokeLineJoin — Specifies the shape to be used at the corners of paths when they are stroked
    • ImagickDraw::setStrokeMiterLimit — Specifies the miter limit
    • ImagickDraw::setStrokeOpacity — Specifies the opacity of stroked object outlines
    • ImagickDraw::setStrokePatternURL — Sets the pattern used for stroking object outlines
    • ImagickDraw::setStrokeWidth — Sets the width of the stroke used to draw object outlines
    • ImagickDraw::setTextAlignment — Specifies a text alignment
    • ImagickDraw::setTextAntialias — Controls whether text is antialiased
    • ImagickDraw::setTextDecoration — Specifies a decoration
    • ImagickDraw::setTextEncoding — Specifies the text code set
    • ImagickDraw::setTextInterlineSpacing — Description
    • ImagickDraw::setTextInterwordSpacing — Description
    • ImagickDraw::setTextKerning — Description
    • ImagickDraw::setTextUnderColor — Specifies the color of a background rectangle
    • ImagickDraw::setVectorGraphics — Sets the vector graphics
    • ImagickDraw::setViewbox — Sets the overall canvas size
    • ImagickDraw::skewX — Skews the current coordinate system in the horizontal direction
    • ImagickDraw::skewY — Skews the current coordinate system in the vertical direction
    • ImagickDraw::translate — Applies a translation to the current coordinate system
  • ImagickPixel — The ImagickPixel class
    • ImagickPixel::clear — Clears resources associated with this object
    • ImagickPixel::__construct — The ImagickPixel constructor
    • ImagickPixel::destroy — Deallocates resources associated with this object
    • ImagickPixel::getColor — Returns the color
    • ImagickPixel::getColorAsString — Returns the color as a string
    • ImagickPixel::getColorCount — Returns the color count associated with this color
    • ImagickPixel::getColorQuantum — Description
    • ImagickPixel::getColorValue — Gets the normalized value of the provided color channel
    • ImagickPixel::getColorValueQuantum — Description
    • ImagickPixel::getHSL — Returns the normalized HSL color of the ImagickPixel object
    • ImagickPixel::getIndex — Description
    • ImagickPixel::isPixelSimilar — Check the distance between this color and another
    • ImagickPixel::isPixelSimilarQuantum — Description
    • ImagickPixel::isSimilar — Check the distance between this color and another
    • ImagickPixel::setColor — Sets the color
    • ImagickPixel::setColorCount — Description
    • ImagickPixel::setColorValue — Sets the normalized value of one of the channels
    • ImagickPixel::setColorValueQuantum — Description
    • ImagickPixel::setHSL — Sets the normalized HSL color
    • ImagickPixel::setIndex — Description
  • ImagickPixelIterator — The ImagickPixelIterator class
    • ImagickPixelIterator::clear — Clear resources associated with a PixelIterator
    • ImagickPixelIterator::__construct — The ImagickPixelIterator constructor
    • ImagickPixelIterator::destroy — Deallocates resources associated with a PixelIterator
    • ImagickPixelIterator::getCurrentIteratorRow — Returns the current row of ImagickPixel objects
    • ImagickPixelIterator::getIteratorRow — Returns the current pixel iterator row
    • ImagickPixelIterator::getNextIteratorRow — Returns the next row of the pixel iterator
    • ImagickPixelIterator::getPreviousIteratorRow — Returns the previous row
    • ImagickPixelIterator::newPixelIterator — Returns a new pixel iterator
    • ImagickPixelIterator::newPixelRegionIterator — Returns a new pixel iterator
    • ImagickPixelIterator::resetIterator — Resets the pixel iterator
    • ImagickPixelIterator::setIteratorFirstRow — Sets the pixel iterator to the first pixel row
    • ImagickPixelIterator::setIteratorLastRow — Sets the pixel iterator to the last pixel row
    • ImagickPixelIterator::setIteratorRow — Set the pixel iterator row
    • ImagickPixelIterator::syncIterator — Syncs the pixel iterator
GmagickPixel::setcolorvalue
简介
图像生成和处理


简介

Imagick 是用 ImageMagic API 来创建和修改图像的PHP官方扩展。

ImageMagick® 是用来创建，编辑，合并位图图像的一套组件。 它能够用于读取，转换，写入多种不同格式的图像。 包含 DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, 和 TIFF。

Copyright 1999-2007 ImageMagick Studio LLC, a non-profit organization dedicated to making software imaging solutions freely available.

ImageMagick
安装／配置
ImageMagick


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
ImageMagick


需求

Installation requirements on Windows

Version information does not differ from that above. There are binaries available from http://www.imagemagick.org/ so that you can load this extension on Windows without need for a compiler.

Installation requirements on other platforms

PHP >= 5.1.3 and ImageMagick >= 6.2.4 is required. The amount of formats supported is by Imagick is entirely dependent upon the amount of formats supported by your ImageMagick installation. For example, Imagemagick requires ghostscript to conduct PDF operations.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/imagick.

Note: The official name of this extension is imagick.

Windows users can download prebuilt DLL from the » PECL website.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Imagick configuration options
名字 | 默认 | 可修改范围 | 更新日志
imagick.locale_fix | FALSE | PHP_INI_ALL | Available since Imagick 2.1.0
imagick.progress_monitor | FALSE | PHP_INI_SYSTEM | Available since Imagick 2.2.2
imagick.skip_version_check | FALSE | PHP_INI_SYSTEM | Available since Imagick 3.3.0
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

imagick.locale_fix boolean

Fixes a drawing bug with locales that use ',' as float separators.

imagick.progress_monitor boolean

Used to enable the image progress monitor.

imagick.skip_version_check boolean

When Imagick is loaded, it checks the version number of ImageMagick that it was compiled against, with the version number that is currently being used and will give a warning if they don't match. This warning can be suppressed by enabling this ini setting.

Using a version of Imagick that was compiled against a different version of ImageMagick than the one being used is not recommended. Although it may appear to work, it can lead to random crashes or other undefined behaviour.

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

COLOR_* constants

Colortype constants. These constants are mainly used with ImagickPixel.

imagick::COLOR_BLACK (integer)
Black color
imagick::COLOR_BLUE (integer)
Blue color
imagick::COLOR_CYAN (integer)
Cyan color
imagick::COLOR_GREEN (integer)
Green color
imagick::COLOR_RED (integer)
Red color
imagick::COLOR_YELLOW (integer)
Yellow color
imagick::COLOR_MAGENTA (integer)
Magenta color
imagick::COLOR_OPACITY (integer)
Color's opacity
imagick::COLOR_ALPHA (integer)
Color's alpha
imagick::COLOR_FUZZ (integer)
Color's fuzz
DISPOSE constants

Dispose type constants

imagick::DISPOSE_UNRECOGNIZED (integer)
Unrecognized dispose type
imagick::DISPOSE_UNDEFINED (integer)
Undefined dispose type
imagick::DISPOSE_NONE (integer)
No dispose type defined
imagick::DISPOSE_BACKGROUND (integer)
Dispose background
imagick::DISPOSE_PREVIOUS (integer)
Dispose previous
Composite Operator Constants
imagick::COMPOSITE_DEFAULT (integer)
The default composite operator
imagick::COMPOSITE_UNDEFINED (integer)
Undefined composite operator
imagick::COMPOSITE_NO (integer)
No composite operator defined
imagick::COMPOSITE_ADD (integer)
The result of image + image
imagick::COMPOSITE_ATOP (integer)
The result is the same shape as image, with composite image obscuring image where the image shapes overlap
imagick::COMPOSITE_BLEND (integer)
Blends the image
imagick::COMPOSITE_BUMPMAP (integer)
The same as COMPOSITE_MULTIPLY, except the source is converted to grayscale first.
imagick::COMPOSITE_CLEAR (integer)
Makes the target image transparent
imagick::COMPOSITE_COLORBURN (integer)
Darkens the destination image to reflect the source image
imagick::COMPOSITE_COLORDODGE (integer)
Brightens the destination image to reflect the source image
imagick::COMPOSITE_COLORIZE (integer)
Colorizes the target image using the composite image
imagick::COMPOSITE_COPYBLACK (integer)
Copies black from the source to target
imagick::COMPOSITE_COPYBLUE (integer)
Copies blue from the source to target
imagick::COMPOSITE_COPY (integer)
Copies the source image on the target image
imagick::COMPOSITE_COPYCYAN (integer)
Copies cyan from the source to target
imagick::COMPOSITE_COPYGREEN (integer)
Copies green from the source to target
imagick::COMPOSITE_COPYMAGENTA (integer)
Copies magenta from the source to target
imagick::COMPOSITE_COPYOPACITY (integer)
Copies opacity from the source to target
imagick::COMPOSITE_COPYRED (integer)
Copies red from the source to target
imagick::COMPOSITE_COPYYELLOW (integer)
Copies yellow from the source to target
imagick::COMPOSITE_DARKEN (integer)
Darkens the target image
imagick::COMPOSITE_DSTATOP (integer)
The part of the destination lying inside of the source is composited over the source and replaces the destination
imagick::COMPOSITE_DST (integer)
The target is left untouched
imagick::COMPOSITE_DSTIN (integer)
The parts inside the source replace the target
imagick::COMPOSITE_DSTOUT (integer)
The parts outside the source replace the target
imagick::COMPOSITE_DSTOVER (integer)
Target replaces the source
imagick::COMPOSITE_DIFFERENCE (integer)
Subtracts the darker of the two constituent colors from the lighter
imagick::COMPOSITE_DISPLACE (integer)
Shifts target image pixels as defined by the source
imagick::COMPOSITE_DISSOLVE (integer)
Dissolves the source in to the target
imagick::COMPOSITE_EXCLUSION (integer)
Produces an effect similar to that of imagick::COMPOSITE_DIFFERENCE, but appears as lower contrast
imagick::COMPOSITE_HARDLIGHT (integer)
Multiplies or screens the colors, dependent on the source color value
imagick::COMPOSITE_HUE (integer)
Modifies the hue of the target as defined by source
imagick::COMPOSITE_IN (integer)
Composites source into the target
imagick::COMPOSITE_LIGHTEN (integer)
Lightens the target as defined by source
imagick::COMPOSITE_LUMINIZE (integer)
Luminizes the target as defined by source
imagick::COMPOSITE_MINUS (integer)
Subtracts the source from the target
imagick::COMPOSITE_MODULATE (integer)
Modulates the target brightness, saturation and hue as defined by source
imagick::COMPOSITE_MULTIPLY (integer)
Multiplies the target to the source
imagick::COMPOSITE_OUT (integer)
Composites outer parts of the source on the target
imagick::COMPOSITE_OVER (integer)
Composites source over the target
imagick::COMPOSITE_OVERLAY (integer)
Overlays the source on the target
imagick::COMPOSITE_PLUS (integer)
Adds the source to the target
imagick::COMPOSITE_REPLACE (integer)
Replaces the target with the source
imagick::COMPOSITE_SATURATE (integer)
Saturates the target as defined by the source
imagick::COMPOSITE_SCREEN (integer)
The source and destination are complemented and then multiplied and then replace the destination
imagick::COMPOSITE_SOFTLIGHT (integer)
Darkens or lightens the colors, dependent on the source
imagick::COMPOSITE_SRCATOP (integer)
The part of the source lying inside of the destination is composited onto the destination
imagick::COMPOSITE_SRC (integer)
The source is copied to the destination
imagick::COMPOSITE_SRCIN (integer)
The part of the source lying inside of the destination replaces the destination
imagick::COMPOSITE_SRCOUT (integer)
The part of the source lying outside of the destination replaces the destination
imagick::COMPOSITE_SRCOVER (integer)
The source replaces the destination
imagick::COMPOSITE_SUBTRACT (integer)
Subtract the colors in the source image from the destination image
imagick::COMPOSITE_THRESHOLD (integer)
The source is composited on the target as defined by source threshold
imagick::COMPOSITE_XOR (integer)
The part of the source that lies outside of the destination is combined with the part of the destination that lies outside of the source
MONTAGEMODE constants

imagick::MONTAGEMODE_FRAME (integer)
imagick::MONTAGEMODE_UNFRAME (integer)
imagick::MONTAGEMODE_CONCATENATE (integer)
STYLE constants

imagick::STYLE_NORMAL (integer)
imagick::STYLE_ITALIC (integer)
imagick::STYLE_OBLIQUE (integer)
imagick::STYLE_ANY (integer)
FILTER constants

imagick::FILTER_UNDEFINED (integer)
imagick::FILTER_POINT (integer)
imagick::FILTER_BOX (integer)
imagick::FILTER_TRIANGLE (integer)
imagick::FILTER_HERMITE (integer)
imagick::FILTER_HANNING (integer)
imagick::FILTER_HAMMING (integer)
imagick::FILTER_BLACKMAN (integer)
imagick::FILTER_GAUSSIAN (integer)
imagick::FILTER_QUADRATIC (integer)
imagick::FILTER_CUBIC (integer)
imagick::FILTER_CATROM (integer)
imagick::FILTER_MITCHELL (integer)
imagick::FILTER_LANCZOS (integer)
imagick::FILTER_BESSEL (integer)
imagick::FILTER_SINC (integer)
IMGTYPE constants

imagick::IMGTYPE_UNDEFINED (integer)
imagick::IMGTYPE_BILEVEL (integer)
imagick::IMGTYPE_GRAYSCALE (integer)
imagick::IMGTYPE_GRAYSCALEMATTE (integer)
imagick::IMGTYPE_PALETTE (integer)
imagick::IMGTYPE_PALETTEMATTE (integer)
imagick::IMGTYPE_TRUECOLOR (integer)
imagick::IMGTYPE_TRUECOLORMATTE (integer)
imagick::IMGTYPE_COLORSEPARATION (integer)
imagick::IMGTYPE_COLORSEPARATIONMATTE (integer)
imagick::IMGTYPE_OPTIMIZE (integer)
RESOLUTION constants

imagick::RESOLUTION_UNDEFINED (integer)
imagick::RESOLUTION_PIXELSPERINCH (integer)
imagick::RESOLUTION_PIXELSPERCENTIMETER (integer)
COMPRESSION constants

imagick::COMPRESSION_UNDEFINED (integer)
imagick::COMPRESSION_NO (integer)
imagick::COMPRESSION_BZIP (integer)
imagick::COMPRESSION_FAX (integer)
imagick::COMPRESSION_GROUP4 (integer)
imagick::COMPRESSION_JPEG (integer)
imagick::COMPRESSION_JPEG2000 (integer)
imagick::COMPRESSION_LOSSLESSJPEG (integer)
imagick::COMPRESSION_LZW (integer)
imagick::COMPRESSION_RLE (integer)
imagick::COMPRESSION_ZIP (integer)
imagick::COMPRESSION_DXT1 (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.0 or higher.
imagick::COMPRESSION_DXT3 (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.0 or higher.
imagick::COMPRESSION_DXT5 (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.0 or higher.
PAINT constants

imagick::PAINT_POINT (integer)
imagick::PAINT_REPLACE (integer)
imagick::PAINT_FLOODFILL (integer)
imagick::PAINT_FILLTOBORDER (integer)
imagick::PAINT_RESET (integer)
GRAVITY constants

imagick::GRAVITY_NORTHWEST (integer)
imagick::GRAVITY_NORTH (integer)
imagick::GRAVITY_NORTHEAST (integer)
imagick::GRAVITY_WEST (integer)
imagick::GRAVITY_CENTER (integer)
imagick::GRAVITY_EAST (integer)
imagick::GRAVITY_SOUTHWEST (integer)
imagick::GRAVITY_SOUTH (integer)
imagick::GRAVITY_SOUTHEAST (integer)
STRETCH constants

imagick::STRETCH_NORMAL (integer)
imagick::STRETCH_ULTRACONDENSED (integer)
imagick::STRETCH_CONDENSED (integer)
imagick::STRETCH_SEMICONDENSED (integer)
imagick::STRETCH_SEMIEXPANDED (integer)
imagick::STRETCH_EXPANDED (integer)
imagick::STRETCH_EXTRAEXPANDED (integer)
imagick::STRETCH_ULTRAEXPANDED (integer)
imagick::STRETCH_ANY (integer)
ALIGN constants

imagick::ALIGN_UNDEFINED (integer)
imagick::ALIGN_LEFT (integer)
imagick::ALIGN_CENTER (integer)
imagick::ALIGN_RIGHT (integer)
DECORATION constants

imagick::DECORATION_NO (integer)
imagick::DECORATION_UNDERLINE (integer)
imagick::DECORATION_OVERLINE (integer)
imagick::DECORATION_LINETROUGH (integer)
NOISE constants

imagick::NOISE_UNIFORM (integer)
imagick::NOISE_GAUSSIAN (integer)
imagick::NOISE_MULTIPLICATIVEGAUSSIAN (integer)
imagick::NOISE_IMPULSE (integer)
imagick::NOISE_LAPLACIAN (integer)
imagick::NOISE_POISSON (integer)
imagick::NOISE_RANDOM (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.6 or higher.
CHANNEL constants

imagick::CHANNEL_UNDEFINED (integer)
imagick::CHANNEL_RED (integer)
imagick::CHANNEL_GRAY (integer)
imagick::CHANNEL_CYAN (integer)
imagick::CHANNEL_GREEN (integer)
imagick::CHANNEL_MAGENTA (integer)
imagick::CHANNEL_BLUE (integer)
imagick::CHANNEL_YELLOW (integer)
imagick::CHANNEL_ALPHA (integer)
imagick::CHANNEL_OPACITY (integer)
imagick::CHANNEL_MATTE (integer)
imagick::CHANNEL_BLACK (integer)
imagick::CHANNEL_INDEX (integer)
imagick::CHANNEL_ALL (integer)
imagick::CHANNEL_DEFAULT (integer)
METRIC constants

imagick::METRIC_UNDEFINED (integer)
imagick::METRIC_MEANABSOLUTEERROR (integer)
imagick::METRIC_MEANSQUAREERROR (integer)
imagick::METRIC_PEAKABSOLUTEERROR (integer)
imagick::METRIC_PEAKSIGNALTONOISERATIO (integer)
imagick::METRIC_ROOTMEANSQUAREDERROR (integer)
PIXEL constants

imagick::PIXEL_CHAR (integer)
imagick::PIXEL_DOUBLE (integer)
imagick::PIXEL_FLOAT (integer)
imagick::PIXEL_INTEGER (integer)
imagick::PIXEL_LONG (integer)
imagick::PIXEL_QUANTUM (integer)
imagick::PIXEL_SHORT (integer)
EVALUATE constants

imagick::EVALUATE_UNDEFINED (integer)
imagick::EVALUATE_ADD (integer)
imagick::EVALUATE_AND (integer)
imagick::EVALUATE_DIVIDE (integer)
imagick::EVALUATE_LEFTSHIFT (integer)
imagick::EVALUATE_MAX (integer)
imagick::EVALUATE_MIN (integer)
imagick::EVALUATE_MULTIPLY (integer)
imagick::EVALUATE_OR (integer)
imagick::EVALUATE_RIGHTSHIFT (integer)
imagick::EVALUATE_SET (integer)
imagick::EVALUATE_SUBTRACT (integer)
imagick::EVALUATE_XOR (integer)
imagick::EVALUATE_POW (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.4 or higher.
imagick::EVALUATE_LOG (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.4 or higher.
imagick::EVALUATE_THRESHOLD (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.4 or higher.
imagick::EVALUATE_THRESHOLDBLACK (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.4 or higher.
imagick::EVALUATE_THRESHOLDWHITE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.4 or higher.
imagick::EVALUATE_GAUSSIANNOISE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.4 or higher.
imagick::EVALUATE_IMPULSENOISE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.4 or higher.
imagick::EVALUATE_LAPLACIANNOISE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.4 or higher.
imagick::EVALUATE_MULTIPLICATIVENOISE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.4 or higher.
imagick::EVALUATE_POISSONNOISE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.4 or higher.
imagick::EVALUATE_UNIFORMNOISE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.4 or higher.
imagick::EVALUATE_COSINE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.4 or higher.
imagick::EVALUATE_SINE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.4 or higher.
imagick::EVALUATE_ADDMODULUS (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.4 or higher.
COLORSPACE constants

imagick::COLORSPACE_UNDEFINED (integer)
imagick::COLORSPACE_RGB (integer)
imagick::COLORSPACE_GRAY (integer)
imagick::COLORSPACE_TRANSPARENT (integer)
imagick::COLORSPACE_OHTA (integer)
imagick::COLORSPACE_LAB (integer)
imagick::COLORSPACE_XYZ (integer)
imagick::COLORSPACE_YCBCR (integer)
imagick::COLORSPACE_YCC (integer)
imagick::COLORSPACE_YIQ (integer)
imagick::COLORSPACE_YPBPR (integer)
imagick::COLORSPACE_YUV (integer)
imagick::COLORSPACE_CMYK (integer)
imagick::COLORSPACE_SRGB (integer)
imagick::COLORSPACE_HSB (integer)
imagick::COLORSPACE_HSL (integer)
imagick::COLORSPACE_HWB (integer)
imagick::COLORSPACE_REC601LUMA (integer)
imagick::COLORSPACE_REC709LUMA (integer)
imagick::COLORSPACE_LOG (integer)
imagick::COLORSPACE_CMY (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.2 or higher.
VIRTUALPIXELMETHOD constants

imagick::VIRTUALPIXELMETHOD_UNDEFINED (integer)
imagick::VIRTUALPIXELMETHOD_BACKGROUND (integer)
imagick::VIRTUALPIXELMETHOD_CONSTANT (integer)
imagick::VIRTUALPIXELMETHOD_EDGE (integer)
imagick::VIRTUALPIXELMETHOD_MIRROR (integer)
imagick::VIRTUALPIXELMETHOD_TILE (integer)
imagick::VIRTUALPIXELMETHOD_TRANSPARENT (integer)
imagick::VIRTUALPIXELMETHOD_MASK (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.2 or higher.
imagick::VIRTUALPIXELMETHOD_BLACK (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.2 or higher.
imagick::VIRTUALPIXELMETHOD_GRAY (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.2 or higher.
imagick::VIRTUALPIXELMETHOD_WHITE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.2 or higher.
imagick::VIRTUALPIXELMETHOD_HORIZONTALTILE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.3 or higher.
imagick::VIRTUALPIXELMETHOD_VERTICALTILE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.3 or higher.
PREVIEW constants

imagick::PREVIEW_UNDEFINED (integer)
imagick::PREVIEW_ROTATE (integer)
imagick::PREVIEW_SHEAR (integer)
imagick::PREVIEW_ROLL (integer)
imagick::PREVIEW_HUE (integer)
imagick::PREVIEW_SATURATION (integer)
imagick::PREVIEW_BRIGHTNESS (integer)
imagick::PREVIEW_GAMMA (integer)
imagick::PREVIEW_SPIFF (integer)
imagick::PREVIEW_DULL (integer)
imagick::PREVIEW_GRAYSCALE (integer)
imagick::PREVIEW_QUANTIZE (integer)
imagick::PREVIEW_DESPECKLE (integer)
imagick::PREVIEW_REDUCENOISE (integer)
imagick::PREVIEW_ADDNOISE (integer)
imagick::PREVIEW_SHARPEN (integer)
imagick::PREVIEW_BLUR (integer)
imagick::PREVIEW_THRESHOLD (integer)
imagick::PREVIEW_EDGEDETECT (integer)
imagick::PREVIEW_SPREAD (integer)
imagick::PREVIEW_SOLARIZE (integer)
imagick::PREVIEW_SHADE (integer)
imagick::PREVIEW_RAISE (integer)
imagick::PREVIEW_SEGMENT (integer)
imagick::PREVIEW_SWIRL (integer)
imagick::PREVIEW_IMPLODE (integer)
imagick::PREVIEW_WAVE (integer)
imagick::PREVIEW_OILPAINT (integer)
imagick::PREVIEW_CHARCOALDRAWING (integer)
imagick::PREVIEW_JPEG (integer)
RENDERINGINTENT constants

imagick::RENDERINGINTENT_UNDEFINED (integer)
imagick::RENDERINGINTENT_SATURATION (integer)
imagick::RENDERINGINTENT_PERCEPTUAL (integer)
imagick::RENDERINGINTENT_ABSOLUTE (integer)
imagick::RENDERINGINTENT_RELATIVE (integer)
INTERLACE constants

imagick::INTERLACE_UNDEFINED (integer)
imagick::INTERLACE_NO (integer)
imagick::INTERLACE_LINE (integer)
imagick::INTERLACE_PLANE (integer)
imagick::INTERLACE_PARTITION (integer)
imagick::INTERLACE_GIF (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.4 or higher.
imagick::INTERLACE_JPEG (integer)
imagick::INTERLACE_PNG (integer)
FILLRULE constants

imagick::FILLRULE_UNDEFINED (integer)
imagick::FILLRULE_EVENODD (integer)
imagick::FILLRULE_NONZERO (integer)
PATHUNITS constants

imagick::PATHUNITS_UNDEFINED (integer)
imagick::PATHUNITS_USERSPACE (integer)
imagick::PATHUNITS_USERSPACEONUSE (integer)
imagick::PATHUNITS_OBJECTBOUNDINGBOX (integer)
LINECAP constants

imagick::LINECAP_UNDEFINED (integer)
imagick::LINECAP_BUTT (integer)
imagick::LINECAP_ROUND (integer)
imagick::LINECAP_SQUARE (integer)
LINEJOIN constants

imagick::LINEJOIN_UNDEFINED (integer)
imagick::LINEJOIN_MITER (integer)
imagick::LINEJOIN_ROUND (integer)
imagick::LINEJOIN_BEVEL (integer)
RESOURCETYPE constants

imagick::RESOURCETYPE_UNDEFINED (integer)
imagick::RESOURCETYPE_AREA (integer)
Set the maximum width * height of an image that can reside in the pixel cache memory.
imagick::RESOURCETYPE_DISK (integer)
Set maximum amount of disk space in bytes permitted for use by the pixel cache.
imagick::RESOURCETYPE_FILE (integer)
Set maximum number of open pixel cache files.
imagick::RESOURCETYPE_MAP (integer)
Set maximum amount of memory map in bytes to allocate for the pixel cache.
imagick::RESOURCETYPE_MEMORY (integer)
Set maximum amount of memory in bytes to allocate for the pixel cache from the heap.
imagick::RESOURCETYPE_THREAD (integer)
Set maximum parallel threads. 此常量可用仅当Imagick编译于ImageMagick版本 6.7.8 or higher.
LAYERMETHOD constants

imagick::LAYERMETHOD_UNDEFINED (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.2.9 or higher.
imagick::LAYERMETHOD_COALESCE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.2.9 or higher.
imagick::LAYERMETHOD_COMPAREANY (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.2.9 or higher.
imagick::LAYERMETHOD_COMPARECLEAR (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.2.9 or higher.
imagick::LAYERMETHOD_COMPAREOVERLAY (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.2.9 or higher.
imagick::LAYERMETHOD_DISPOSE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.2.9 or higher.
imagick::LAYERMETHOD_OPTIMIZE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.2.9 or higher.
imagick::LAYERMETHOD_OPTIMIZEPLUS (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.2.9 or higher.
imagick::LAYERMETHOD_OPTIMIZEIMAGE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.0 or higher.
imagick::LAYERMETHOD_OPTIMIZETRANS (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.0 or higher.
imagick::LAYERMETHOD_REMOVEDUPS (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.0 or higher.
imagick::LAYERMETHOD_REMOVEZERO (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.0 or higher.
imagick::LAYERMETHOD_COMPOSITE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.0 or higher.
imagick::LAYERMETHOD_MERGE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.7 or higher.
imagick::LAYERMETHOD_FLATTEN (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.7 or higher.
imagick::LAYERMETHOD_MOSAIC (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.7 or higher.
ORIENTATION constants

imagick::ORIENTATION_UNDEFINED (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.0 or higher.
imagick::ORIENTATION_TOPLEFT (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.0 or higher.
imagick::ORIENTATION_TOPRIGHT (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.0 or higher.
imagick::ORIENTATION_BOTTOMRIGHT (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.0 or higher.
imagick::ORIENTATION_BOTTOMLEFT (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.0 or higher.
imagick::ORIENTATION_LEFTTOP (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.0 or higher.
imagick::ORIENTATION_RIGHTTOP (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.0 or higher.
imagick::ORIENTATION_RIGHTBOTTOM (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.0 or higher.
imagick::ORIENTATION_LEFTBOTTOM (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.0 or higher.
DISTORTION constants

imagick::DISTORTION_UNDEFINED (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.6 or higher.
imagick::DISTORTION_AFFINE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.6 or higher.
imagick::DISTORTION_AFFINEPROJECTION (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.6 or higher.
imagick::DISTORTION_ARC (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.6 or higher.
imagick::DISTORTION_BILINEAR (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.6 or higher.
imagick::DISTORTION_PERSPECTIVE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.6 or higher.
imagick::DISTORTION_PERSPECTIVEPROJECTION (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.6 or higher.
imagick::DISTORTION_SCALEROTATETRANSLATE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.6 or higher.
imagick::DISTORTION_POLYNOMIAL (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
imagick::DISTORTION_POLAR (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
imagick::DISTORTION_DEPOLAR (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
imagick::DISTORTION_BARREL (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
imagick::DISTORTION_BARRELINVERSE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
imagick::DISTORTION_SHEPARDS (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
imagick::DISTORTION_SENTINEL (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
ALPHACHANNEL constants

imagick::ALPHACHANNEL_ACTIVATE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.8 or higher.
imagick::ALPHACHANNEL_DEACTIVATE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.8 or higher.
imagick::ALPHACHANNEL_RESET (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.8 or higher.
imagick::ALPHACHANNEL_SET (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.8 or higher.
imagick::ALPHACHANNEL_UNDEFINED (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
imagick::ALPHACHANNEL_COPY (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
imagick::ALPHACHANNEL_EXTRACT (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
imagick::ALPHACHANNEL_OPAQUE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
imagick::ALPHACHANNEL_SHAPE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
imagick::ALPHACHANNEL_TRANSPARENT (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
SPARSECOLORMETHOD constants

imagick::SPARSECOLORMETHOD_UNDEFINED (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
imagick::SPARSECOLORMETHOD_BARYCENTRIC (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
imagick::SPARSECOLORMETHOD_BILINEAR (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
imagick::SPARSECOLORMETHOD_POLYNOMIAL (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
imagick::SPARSECOLORMETHOD_SPEPARDS (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
imagick::SPARSECOLORMETHOD_VORONOI (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
FUNCTION constants

imagick::FUNCTION_UNDEFINED (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.9 or higher.
imagick::FUNCTION_POLYNOMIAL (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.9 or higher.
imagick::FUNCTION_SINUSOID (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.9 or higher.
INTERPOLATE constants

imagick::INTERPOLATE_UNDEFINED (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.2 or higher.
imagick::INTERPOLATE_AVERAGE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.2 or higher.
imagick::INTERPOLATE_BICUBIC (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.2 or higher.
imagick::INTERPOLATE_BILINEAR (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.2 or higher.
imagick::INTERPOLATE_FILTER (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.2 or higher.
imagick::INTERPOLATE_INTEGER (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.2 or higher.
imagick::INTERPOLATE_MESH (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.2 or higher.
imagick::INTERPOLATE_NEARESTNEIGHBOR (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.2 or higher.
imagick::INTERPOLATE_SPLINE (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.3.4 or higher.
DITHERMETHOD constants

imagick::DITHERMETHOD_UNDEFINED (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
imagick::DITHERMETHOD_NO (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
imagick::DITHERMETHOD_RIEMERSMA (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
imagick::DITHERMETHOD_FLOYDSTEINBERG (integer)
此常量可用仅当Imagick编译于ImageMagick版本 6.4.6 or higher.
资源类型
范例
ImageMagick


范例

Table of Contents

  • Basic usage
预定义常量
Basic usage
ImageMagick


Basic usage

Imagick makes image manipulation in PHP extremely easy through an OO interface. Here is a quick example on how to make a thumbnail:

Example #1 Creating a thumbnail in Imagick

<?php

header('Content-type: image/jpeg');

$image = new Imagick('image.jpg');

// If 0 is provided as a width or height parameter,
// aspect ratio is maintained
$image->thumbnailImage(100, 0);

echo $image;

?>

Using SPL and other OO features supported in Imagick, it can be simple to resize all files in a directory (useful for batch resizing large digital camera images to be web viewable). Here we use resize, as we might want to retain certain meta-data:

Example #2 Make a thumbnail of all JPG files in a directory

<?php

$images = new Imagick(glob('images/*.JPG'));

foreach($images as $image) {

    // Providing 0 forces thumbnailImage to maintain aspect ratio
    $image->thumbnailImage(1024,0);

}

$images->writeImages();

?>

This is an example of creating a reflection of an image. The reflection is created by flipping the image and overlaying a gradient on it. Then both, the original image and the reflection is overlayed on a canvas.

Example #3 Creating a reflection of an image

<?php
/* Read the image */
$im = new Imagick("test.png");

/* Thumbnail the image */
$im->thumbnailImage(200, null);

/* Create a border for the image */
$im->borderImage(new ImagickPixel("white"), 5, 5);

/* Clone the image and flip it */
$reflection = $im->clone();
$reflection->flipImage();

/* Create gradient. It will be overlayed on the reflection */
$gradient = new Imagick();

/* Gradient needs to be large enough for the image and the borders */
$gradient->newPseudoImage($reflection->getImageWidth() + 10, $reflection->getImageHeight() + 10, "gradient:transparent-black");

/* Composite the gradient on the reflection */
$reflection->compositeImage($gradient, imagick::COMPOSITE_OVER, 0, 0);

/* Add some opacity. Requires ImageMagick 6.2.9 or later */
$reflection->setImageOpacity( 0.3 );

/* Create an empty canvas */
$canvas = new Imagick();

/* Canvas needs to be large enough to hold the both images */
$width = $im->getImageWidth() + 40;
$height = ($im->getImageHeight() * 2) + 30;
$canvas->newImage($width, $height, new ImagickPixel("black"));
$canvas->setImageFormat("png");

/* Composite the original image and the reflection on the canvas */
$canvas->compositeImage($im, imagick::COMPOSITE_OVER, 20, 10);
$canvas->compositeImage($reflection, imagick::COMPOSITE_OVER, 20, $im->getImageHeight() + 10);

/* Output the image*/
header("Content-Type: image/png");
echo $canvas;
?>

以上例程的输出类似于：

Output of example : Creating a reflection of an image

This example illustrates how to use fill patterns during drawing.

Example #4 Filling text with gradient

<?php

/* Create a new imagick object */
$im = new Imagick();

/* Create new image. This will be used as fill pattern */
$im->newPseudoImage(50, 50, "gradient:red-black");

/* Create imagickdraw object */
$draw = new ImagickDraw();

/* Start a new pattern called "gradient" */
$draw->pushPattern('gradient', 0, 0, 50, 50);

/* Composite the gradient on the pattern */
$draw->composite(Imagick::COMPOSITE_OVER, 0, 0, 50, 50, $im);

/* Close the pattern */
$draw->popPattern();

/* Use the pattern called "gradient" as the fill */
$draw->setFillPatternURL('#gradient');

/* Set font size to 52 */
$draw->setFontSize(52);

/* Annotate some text */
$draw->annotation(20, 50, "Hello World!");

/* Create a new canvas object and a white image */
$canvas = new Imagick();
$canvas->newImage(350, 70, "white");

/* Draw the ImagickDraw on to the canvas */
$canvas->drawImage($draw);

/* 1px black border around the image */
$canvas->borderImage('black', 1, 1);

/* Set the format to PNG */
$canvas->setImageFormat('png');

/* Output the image */
header("Content-Type: image/png");
echo $canvas;
?>

以上例程的输出类似于：

Output of example : Filling text with gradient

Working with animated GIF images

Example #5 Read in GIF image and resize all frames

<?php

/* Create a new imagick object and read in GIF */
$im = new Imagick("example.gif");

/* Resize all frames */
foreach ($im as $frame) {
    /* 50x50 frames */
    $frame->thumbnailImage(50, 50);

    /* Set the virtual canvas to correct size */
    $frame->setImagePage(50, 50, 0, 0);
}

/* Notice writeImages instead of writeImage */
$im->writeImages("example_small.gif", true);
?>

Working with ellipse primitive and custom fonts

Example #6 Create a PHP logo

<?php
/* Set width and height in proportion of genuine PHP logo */
$width = 400;
$height = 210;

/* Create an Imagick object with transparent canvas */
$img = new Imagick();
$img->newImage($width, $height, new ImagickPixel('transparent'));

/* New ImagickDraw instance for ellipse draw */
$draw = new ImagickDraw();
/* Set purple fill color for ellipse */
$draw->setFillColor('#777bb4');
/* Set ellipse dimensions */
$draw->ellipse($width / 2, $height / 2, $width / 2, $height / 2, 0, 360);
/* Draw ellipse onto the canvas */
$img->drawImage($draw);

/* Reset fill color from purple to black for text (note: we are reusing ImagickDraw object) */
$draw->setFillColor('black');
/* Set stroke border to white color */
$draw->setStrokeColor('white');
/* Set stroke border thickness */
$draw->setStrokeWidth(2);
/* Set font kerning (negative value means that letters are closer to each other) */
$draw->setTextKerning(-8);
/* Set font and font size used in PHP logo */
$draw->setFont('Handel Gothic.ttf');
$draw->setFontSize(150);
/* Center text horizontally and vertically */
$draw->setGravity(Imagick::GRAVITY_CENTER);

/* Add center "php" with Y offset of -10 to canvas (inside ellipse) */
$img->annotateImage($draw, 0, -10, 0, 'php');
$img->setImageFormat('png');

/* Set appropriate header for PNG and output the image */
header('Content-Type: image/png');
echo $img;
?>

以上例程的输出类似于：

Output of example : Creating PHP logo with Imagick

范例
Imagick
范例


The Imagick class

(PECL imagick 2.0.0)

类摘要

Imagick implements Iterator {
bool adaptiveBlurImage ( float $radius , float $sigma [, int $channel = Imagick::CHANNEL_DEFAULT ] )
bool adaptiveResizeImage ( int $columns , int $rows [, bool $bestfit = false ] )
bool adaptiveSharpenImage ( float $radius , float $sigma [, int $channel = Imagick::CHANNEL_DEFAULT ] )
bool adaptiveThresholdImage ( int $width , int $height , int $offset )
bool addImage ( Imagick $source )
bool addNoiseImage ( int $noise_type [, int $channel = Imagick::CHANNEL_DEFAULT ] )
bool affineTransformImage ( ImagickDraw $matrix )
bool animateImages ( string $x_server )
bool annotateImage ( ImagickDraw $draw_settings , float $x , float $y , float $angle , string $text )
Imagick appendImages ( bool $stack = false )
public void autoLevelImage ([ string $CHANNEL = Imagick::CHANNEL_DEFAULT ] )
Imagick averageImages ( void )
bool blackThresholdImage ( mixed $threshold )
public void blueShiftImage ([ float $factor = 1.5 ] )
bool blurImage ( float $radius , float $sigma [, int $channel ] )
bool borderImage ( mixed $bordercolor , int $width , int $height )
public void brightnessContrastImage ( string $brightness , string $contrast [, string $CHANNEL = Imagick::CHANNEL_DEFAULT ] )
bool charcoalImage ( float $radius , float $sigma )
bool chopImage ( int $width , int $height , int $x , int $y )
public void clampImage ([ string $CHANNEL = Imagick::CHANNEL_DEFAULT ] )
bool clear ( void )
bool clipImage ( void )
public void clipImagePath ( string $pathname , string $inside )
bool clipPathImage ( string $pathname , bool $inside )
Imagick clone ( void )
bool clutImage ( Imagick $lookup_table [, float $channel = Imagick::CHANNEL_DEFAULT ] )
Imagick coalesceImages ( void )
bool colorFloodfillImage ( mixed $fill , float $fuzz , mixed $bordercolor , int $x , int $y )
bool colorizeImage ( mixed $colorize , mixed $opacity )
public void colorMatrixImage ( string $color_matrix = Imagick::CHANNEL_DEFAULT )
Imagick combineImages ( int $channelType )
bool commentImage ( string $comment )
array compareImageChannels ( Imagick $image , int $channelType , int $metricType )
Imagick compareImageLayers ( int $method )
array compareImages ( Imagick $compare , int $metric )
bool compositeImage ( Imagick $composite_object , int $composite , int $x , int $y [, int $channel = Imagick::CHANNEL_ALL ] )
__construct ( mixed $files )
bool contrastImage ( bool $sharpen )
bool contrastStretchImage ( float $black_point , float $white_point [, int $channel = Imagick::CHANNEL_ALL ] )
bool convolveImage ( array $kernel [, int $channel = Imagick::CHANNEL_ALL ] )
public void count ([ string $mode ] )
bool cropImage ( int $width , int $height , int $x , int $y )
bool cropThumbnailImage ( int $width , int $height )
Imagick current ( void )
bool cycleColormapImage ( int $displace )
bool decipherImage ( string $passphrase )
Imagick deconstructImages ( void )
bool deleteImageArtifact ( string $artifact )
public void deleteImageProperty ( string $name )
public bool deskewImage ( float $threshold )
bool despeckleImage ( void )
bool destroy ( void )
bool displayImage ( string $servername )
bool displayImages ( string $servername )
bool distortImage ( int $method , array $arguments , bool $bestfit )
bool drawImage ( ImagickDraw $draw )
bool edgeImage ( float $radius )
bool embossImage ( float $radius , float $sigma )
bool encipherImage ( string $passphrase )
bool enhanceImage ( void )
bool equalizeImage ( void )
bool evaluateImage ( int $op , float $constant [, int $channel = Imagick::CHANNEL_ALL ] )
public array exportImagePixels ( int $x , int $y , int $width , int $height , string $map , int $STORAGE )
bool extentImage ( int $width , int $height , int $x , int $y )
public void filter ( ImagickKernel $ImagickKernel [, int $CHANNEL = Imagick::CHANNEL_DEFAULT ] )
Imagick flattenImages ( void )
bool flipImage ( void )
bool floodFillPaintImage ( mixed $fill , float $fuzz , mixed $target , int $x , int $y , bool $invert [, int $channel = Imagick::CHANNEL_DEFAULT ] )
bool flopImage ( void )
public void forwardFourierTransformimage ( bool $magnitude )
bool frameImage ( mixed $matte_color , int $width , int $height , int $inner_bevel , int $outer_bevel )
public bool functionImage ( int $function , array $arguments [, int $channel = Imagick::CHANNEL_DEFAULT ] )
Imagick fxImage ( string $expression [, int $channel = Imagick::CHANNEL_ALL ] )
bool gammaImage ( float $gamma [, int $channel = Imagick::CHANNEL_ALL ] )
bool gaussianBlurImage ( float $radius , float $sigma [, int $channel = Imagick::CHANNEL_ALL ] )
int getColorspace ( void )
int getCompression ( void )
int getCompressionQuality ( void )
string getCopyright ( void )
string getFilename ( void )
string getFont ( void )
string getFormat ( void )
int getGravity ( void )
string getHomeURL ( void )
Imagick getImage ( void )
int getImageAlphaChannel ( void )
string getImageArtifact ( string $artifact )
public string getImageAttribute ( string $key )
ImagickPixel getImageBackgroundColor ( void )
string getImageBlob ( void )
array getImageBluePrimary ( void )
ImagickPixel getImageBorderColor ( void )
int getImageChannelDepth ( int $channel )
float getImageChannelDistortion ( Imagick $reference , int $channel , int $metric )
float getImageChannelDistortions ( Imagick $reference , int $metric [, int $channel = Imagick::CHANNEL_DEFAULT ] )
array getImageChannelExtrema ( int $channel )
public array getImageChannelKurtosis ([ int $channel = Imagick::CHANNEL_DEFAULT ] )
array getImageChannelMean ( int $channel )
array getImageChannelRange ( int $channel )
array getImageChannelStatistics ( void )
Imagick getImageClipMask ( void )
ImagickPixel getImageColormapColor ( int $index )
int getImageColors ( void )
int getImageColorspace ( void )
int getImageCompose ( void )
int getImageCompression ( void )
int getImageCompressionQuality ( void )
int getImageDelay ( void )
int getImageDepth ( void )
int getImageDispose ( void )
float getImageDistortion ( MagickWand $reference , int $metric )
array getImageExtrema ( void )
string getImageFilename ( void )
string getImageFormat ( void )
float getImageGamma ( void )
array getImageGeometry ( void )
int getImageGravity ( void )
array getImageGreenPrimary ( void )
int getImageHeight ( void )
array getImageHistogram ( void )
int getImageIndex ( void )
int getImageInterlaceScheme ( void )
int getImageInterpolateMethod ( void )
int getImageIterations ( void )
int getImageLength ( void )
string getImageMagickLicense ( void )
bool getImageMatte ( void )
ImagickPixel getImageMatteColor ( void )
public string getImageMimeType ( void )
int getImageOrientation ( void )
array getImagePage ( void )
ImagickPixel getImagePixelColor ( int $x , int $y )
string getImageProfile ( string $name )
array getImageProfiles ([ string $pattern = "*" [, bool $include_values = true ]] )
array getImageProperties ([ string $pattern = "*" [, bool $include_values = true ]] )
string getImageProperty ( string $name )
array getImageRedPrimary ( void )
Imagick getImageRegion ( int $width , int $height , int $x , int $y )
int getImageRenderingIntent ( void )
array getImageResolution ( void )
string getImagesBlob ( void )
int getImageScene ( void )
string getImageSignature ( void )
int getImageSize ( void )
int getImageTicksPerSecond ( void )
float getImageTotalInkDensity ( void )
int getImageType ( void )
int getImageUnits ( void )
int getImageVirtualPixelMethod ( void )
array getImageWhitePoint ( void )
int getImageWidth ( void )
int getInterlaceScheme ( void )
int getIteratorIndex ( void )
int getNumberImages ( void )
string getOption ( string $key )
string getPackageName ( void )
array getPage ( void )
ImagickPixelIterator getPixelIterator ( void )
ImagickPixelIterator getPixelRegionIterator ( int $x , int $y , int $columns , int $rows )
float getPointSize ( void )
public static int getQuantum ( void )
array getQuantumDepth ( void )
array getQuantumRange ( void )
public static string getRegistry ( string $key )
string getReleaseDate ( void )
int getResource ( int $type )
int getResourceLimit ( int $type )
array getSamplingFactors ( void )
array getSize ( void )
int getSizeOffset ( void )
array getVersion ( void )
public bool haldClutImage ( Imagick $clut [, int $channel = Imagick::CHANNEL_DEFAULT ] )
bool hasNextImage ( void )
bool hasPreviousImage ( void )
public string|false identifyFormat ( string $embedText )
array identifyImage ([ bool $appendRawOutput = false ] )
bool implodeImage ( float $radius )
public bool importImagePixels ( int $x , int $y , int $width , int $height , string $map , int $storage , array $pixels )
public void inverseFourierTransformImage ( string $complement , string $magnitude )
bool labelImage ( string $label )
bool levelImage ( float $blackPoint , float $gamma , float $whitePoint [, int $channel = Imagick::CHANNEL_ALL ] )
bool linearStretchImage ( float $blackPoint , float $whitePoint )
bool liquidRescaleImage ( int $width , int $height , float $delta_x , float $rigidity )
public static array listRegistry ( void )
bool magnifyImage ( void )
bool mapImage ( Imagick $map , bool $dither )
bool matteFloodfillImage ( float $alpha , float $fuzz , mixed $bordercolor , int $x , int $y )
bool medianFilterImage ( float $radius )
Imagick mergeImageLayers ( int $layer_method )
bool minifyImage ( void )
bool modulateImage ( float $brightness , float $saturation , float $hue )
Imagick montageImage ( ImagickDraw $draw , string $tile_geometry , string $thumbnail_geometry , int $mode , string $frame )
Imagick morphImages ( int $number_frames )
public void morphology ( int $morphologyMethod , int $iterations , ImagickKernel $ImagickKernel [, string $CHANNEL ] )
Imagick mosaicImages ( void )
bool motionBlurImage ( float $radius , float $sigma , float $angle [, int $channel = Imagick::CHANNEL_DEFAULT ] )
bool negateImage ( bool $gray [, int $channel = Imagick::CHANNEL_ALL ] )
bool newImage ( int $cols , int $rows , mixed $background [, string $format ] )
bool newPseudoImage ( int $columns , int $rows , string $pseudoString )
bool nextImage ( void )
bool normalizeImage ([ int $channel = Imagick::CHANNEL_ALL ] )
bool oilPaintImage ( float $radius )
bool opaquePaintImage ( mixed $target , mixed $fill , float $fuzz , bool $invert [, int $channel = Imagick::CHANNEL_DEFAULT ] )
bool optimizeImageLayers ( void )
bool orderedPosterizeImage ( string $threshold_map [, int $channel = Imagick::CHANNEL_ALL ] )
bool paintFloodfillImage ( mixed $fill , float $fuzz , mixed $bordercolor , int $x , int $y [, int $channel = Imagick::CHANNEL_ALL ] )
bool paintOpaqueImage ( mixed $target , mixed $fill , float $fuzz [, int $channel = Imagick::CHANNEL_ALL ] )
bool paintTransparentImage ( mixed $target , float $alpha , float $fuzz )
bool pingImage ( string $filename )
bool pingImageBlob ( string $image )
bool pingImageFile ( resource $filehandle [, string $fileName ] )
bool polaroidImage ( ImagickDraw $properties , float $angle )
bool posterizeImage ( int $levels , bool $dither )
bool previewImages ( int $preview )
bool previousImage ( void )
bool profileImage ( string $name , string $profile )
bool quantizeImage ( int $numberColors , int $colorspace , int $treedepth , bool $dither , bool $measureError )
bool quantizeImages ( int $numberColors , int $colorspace , int $treedepth , bool $dither , bool $measureError )
array queryFontMetrics ( ImagickDraw $properties , string $text [, bool $multiline ] )
array queryFonts ([ string $pattern = "*" ] )
array queryFormats ([ string $pattern = "*" ] )
bool radialBlurImage ( float $angle [, int $channel = Imagick::CHANNEL_ALL ] )
bool raiseImage ( int $width , int $height , int $x , int $y , bool $raise )
bool randomThresholdImage ( float $low , float $high [, int $channel = Imagick::CHANNEL_ALL ] )
bool readImage ( string $filename )
bool readImageBlob ( string $image [, string $filename ] )
bool readImageFile ( resource $filehandle [, string $fileName = null ] )
public Imagick readImages ( string $filenames )
bool recolorImage ( array $matrix )
bool reduceNoiseImage ( float $radius )
public bool remapImage ( Imagick $replacement , int $DITHER )
bool removeImage ( void )
string removeImageProfile ( string $name )
bool render ( void )
bool resampleImage ( float $x_resolution , float $y_resolution , int $filter , float $blur )
bool resetImagePage ( string $page )
bool resizeImage ( int $columns , int $rows , int $filter , float $blur [, bool $bestfit = false ] )
bool rollImage ( int $x , int $y )
bool rotateImage ( mixed $background , float $degrees )
public void rotationalBlurImage ( string $angle [, string $CHANNEL = Imagick::CHANNEL_DEFAULT ] )
bool roundCorners ( float $x_rounding , float $y_rounding [, float $stroke_width = 10 [, float $displace = 5 [, float $size_correction = -6 ]]] )
bool sampleImage ( int $columns , int $rows )
bool scaleImage ( int $cols , int $rows [, bool $bestfit = false ] )
public bool segmentImage ( int $COLORSPACE , float $cluster_threshold , float $smooth_threshold [, bool $verbose = false ] )
public void selectiveBlurImage ( float $radius , float $sigma , float $threshold , int $CHANNEL )
bool separateImageChannel ( int $channel )
bool sepiaToneImage ( float $threshold )
bool setBackgroundColor ( mixed $background )
bool setColorspace ( int $COLORSPACE )
bool setCompression ( int $compression )
bool setCompressionQuality ( int $quality )
bool setFilename ( string $filename )
bool setFirstIterator ( void )
bool setFont ( string $font )
bool setFormat ( string $format )
bool setGravity ( int $gravity )
bool setImage ( Imagick $replace )
bool setImageAlphaChannel ( int $mode )
bool setImageArtifact ( string $artifact , string $value )
public void setImageAttribute ( string $key , string $value )
bool setImageBackgroundColor ( mixed $background )
bool setImageBias ( float $bias )
public void setImageBiasQuantum ( string $bias )
bool setImageBluePrimary ( float $x , float $y )
bool setImageBorderColor ( mixed $border )
bool setImageChannelDepth ( int $channel , int $depth )
bool setImageClipMask ( Imagick $clip_mask )
bool setImageColormapColor ( int $index , ImagickPixel $color )
bool setImageColorspace ( int $colorspace )
bool setImageCompose ( int $compose )
bool setImageCompression ( int $compression )
bool setImageCompressionQuality ( int $quality )
bool setImageDelay ( int $delay )
bool setImageDepth ( int $depth )
bool setImageDispose ( int $dispose )
bool setImageExtent ( int $columns , int $rows )
bool setImageFilename ( string $filename )
bool setImageFormat ( string $format )
bool setImageGamma ( float $gamma )
bool setImageGravity ( int $gravity )
bool setImageGreenPrimary ( float $x , float $y )
bool setImageIndex ( int $index )
bool setImageInterlaceScheme ( int $interlace_scheme )
bool setImageInterpolateMethod ( int $method )
bool setImageIterations ( int $iterations )
bool setImageMatte ( bool $matte )
bool setImageMatteColor ( mixed $matte )
bool setImageOpacity ( float $opacity )
bool setImageOrientation ( int $orientation )
bool setImagePage ( int $width , int $height , int $x , int $y )
bool setImageProfile ( string $name , string $profile )
bool setImageProperty ( string $name , string $value )
bool setImageRedPrimary ( float $x , float $y )
bool setImageRenderingIntent ( int $rendering_intent )
bool setImageResolution ( float $x_resolution , float $y_resolution )
bool setImageScene ( int $scene )
bool setImageTicksPerSecond ( int $ticks_per_second )
bool setImageType ( int $image_type )
bool setImageUnits ( int $units )
bool setImageVirtualPixelMethod ( int $method )
bool setImageWhitePoint ( float $x , float $y )
bool setInterlaceScheme ( int $interlace_scheme )
bool setIteratorIndex ( int $index )
bool setLastIterator ( void )
bool setOption ( string $key , string $value )
bool setPage ( int $width , int $height , int $x , int $y )
bool setPointSize ( float $point_size )
public void setProgressMonitor ( callable $callback )
public static void setRegistry ( string $key , string $value )
bool setResolution ( float $x_resolution , float $y_resolution )
bool setResourceLimit ( int $type , int $limit )
bool setSamplingFactors ( array $factors )
bool setSize ( int $columns , int $rows )
bool setSizeOffset ( int $columns , int $rows , int $offset )
bool setType ( int $image_type )
bool shadeImage ( bool $gray , float $azimuth , float $elevation )
bool shadowImage ( float $opacity , float $sigma , int $x , int $y )
bool sharpenImage ( float $radius , float $sigma [, int $channel = Imagick::CHANNEL_ALL ] )
bool shaveImage ( int $columns , int $rows )
bool shearImage ( mixed $background , float $x_shear , float $y_shear )
bool sigmoidalContrastImage ( bool $sharpen , float $alpha , float $beta [, int $channel = Imagick::CHANNEL_ALL ] )
bool sketchImage ( float $radius , float $sigma , float $angle )
public Imagick smushImages ( string $stack , string $offset )
bool solarizeImage ( int $threshold )
public bool sparseColorImage ( int $SPARSE_METHOD , array $arguments [, int $channel = Imagick::CHANNEL_DEFAULT ] )
bool spliceImage ( int $width , int $height , int $x , int $y )
bool spreadImage ( float $radius )
public void statisticImage ( int $type , int $width , int $height [, string $CHANNEL = Imagick::CHANNEL_DEFAULT ] )
Imagick steganoImage ( Imagick $watermark_wand , int $offset )
bool stereoImage ( Imagick $offset_wand )
bool stripImage ( void )
public Imagick subImageMatch ( Imagick $Imagick [, array &$offset [, float &$similarity ]] )
bool swirlImage ( float $degrees )
Imagick textureImage ( Imagick $texture_wand )
bool thresholdImage ( float $threshold [, int $channel = Imagick::CHANNEL_ALL ] )
bool thumbnailImage ( int $columns , int $rows [, bool $bestfit = false [, bool $fill = false ]] )
bool tintImage ( mixed $tint , mixed $opacity )
string __toString ( void )
Imagick transformImage ( string $crop , string $geometry )
bool transformImageColorspace ( int $colorspace )
bool transparentPaintImage ( mixed $target , float $alpha , float $fuzz , bool $invert )
bool transposeImage ( void )
bool transverseImage ( void )
bool trimImage ( float $fuzz )
bool uniqueImageColors ( void )
bool unsharpMaskImage ( float $radius , float $sigma , float $amount , float $threshold [, int $channel = Imagick::CHANNEL_ALL ] )
bool valid ( void )
bool vignetteImage ( float $blackPoint , float $whitePoint , int $x , int $y )
bool waveImage ( float $amplitude , float $length )
bool whiteThresholdImage ( mixed $threshold )
bool writeImage ([ string $filename = NULL ] )
bool writeImageFile ( resource $filehandle )
bool writeImages ( string $filename , bool $adjoin )
bool writeImagesFile ( resource $filehandle )
}

Image methods and global methods

The Imagick class has the ability to hold and operate on multiple images simultaneously. This is achieved through an internal stack. There is always an internal pointer that points at the current image. Some functions operate on all images in the Imagick class, but most operate only on the current image in the internal stack. As a convention, method names can contain the word Image to denote they affect only the current image in the stack.

Class Methods

Because there are so many methods, here is a handy list of methods, somewhat reduced to their general purpose:

Class methods by purpose
Image effects | Get methods | Set methods | Read/write images | Other
Imagick::adaptiveBlurImage() | Imagick::getCompression() | Imagick::setBackgroundColor() | Imagick::__construct() | Imagick::clear()
Imagick::adaptiveResizeImage() | Imagick::getFilename() | Imagick::setCompressionQuality() | Imagick::addImage() | Imagick::clone()
Imagick::adaptiveSharpenImage() | Imagick::getFormat() | Imagick::setCompression() | Imagick::appendImages() | Imagick::current()
Imagick::adaptiveThresholdImage() | Imagick::getImageBackgroundColor() | Imagick::setFilename() | Imagick::getFilename() | Imagick::destroy()
Imagick::addNoiseImage() | Imagick::getImageBlob() | Imagick::getImagesBlob() | Imagick::setFormat() | Imagick::getFormat()
Imagick::affinetransformimage() | Imagick::getImageBluePrimary() | Imagick::setImageBackgroundColor() | Imagick::getImageFilename() | Imagick::getHomeURL()
Imagick::annotateImage() | Imagick::getImageBorderColor() | Imagick::setFirstIterator() | Imagick::getImageFormat() | Imagick::commentImage()
Imagick::averageImages() | Imagick::getImageChannelDepth() | Imagick::setImageBias() | Imagick::getImage() | Imagick::getNumberImages()
Imagick::blackThresholdImage() | Imagick::getImageChannelDistortion() | Imagick::setImageBluePrimary() | Imagick::setImageFilename() | Imagick::getReleaseDate()
Imagick::blurImage() | Imagick::getImageChannelExtrema() | Imagick::setImageBorderColor() | Imagick::setImageFormat() | Imagick::getVersion()
Imagick::borderImage() | Imagick::getImageChannelMean() | Imagick::setImageChannelDepth() | Imagick::readImageFile() | Imagick::hasNextImage()
Imagick::charcoalImage() | Imagick::getImageChannelStatistics() | Imagick::setImageColormapColor() | Imagick::readImage() | Imagick::hasPreviousImage()
Imagick::chopImage() | Imagick::getImageColormapColor() | Imagick::setImageColorSpace() | Imagick::writeImages() | Imagick::labelImage()
Imagick::clipImage() | Imagick::getImageColorspace() | Imagick::setImageCompose() | Imagick::writeImage() | Imagick::newImage()
Imagick::clipPathImage() | Imagick::getImageColors() | Imagick::setImageCompression() |  | Imagick::newPseudoImage()
Imagick::coalesceImages() | Imagick::getImageCompose() | Imagick::setImageDelay() |  | Imagick::nextImage()
Imagick::colorFloodFillImage() | Imagick::getImageDelay() | Imagick::setImageDepth() |  | Imagick::pingImageBlob()
Imagick::colorizeImage() | Imagick::getImageDepth() | Imagick::setImageDispose() |  | Imagick::pingImageFile()
Imagick::combineImages() | Imagick::getImageDispose() | Imagick::setImageDispose() |  | Imagick::pingImage()
Imagick::compareImageChannels() | Imagick::getImageDistortion() | Imagick::setImageExtent() |  | Imagick::previousImage()
Imagick::compareImageLayers() | Imagick::getImageExtrema() | Imagick::setImageFilename() |  | Imagick::profileImage()
Imagick::compositeImage() | Imagick::getImageFilename() | Imagick::setImageFormat() |  | Imagick::queryFormats()
Imagick::contrastImage() | Imagick::getImageFormat() | Imagick::setImageGamma() |  | Imagick::removeImageProfile()
Imagick::contrastStretchImage() | Imagick::getImageGamma() | Imagick::setImageGreenPrimary() |  | Imagick::removeImage()
Imagick::convolveImage() | Imagick::getImageGeometry() | Imagick::setImageIndex() |  | Imagick::setFirstIterator()
Imagick::cropImage() | Imagick::getImageGreenPrimary() | Imagick::setImageInterpolateMethod() |  | Imagick::setImageIndex()
Imagick::cycleColormapImage() | Imagick::getImageHeight() | Imagick::setImageIterations() |  | Imagick::valid()
Imagick::deconstructImages() | Imagick::getImageHistogram() | Imagick::setImageMatteColor() |  | Imagick::getCopyright()
Imagick::drawImage() | Imagick::getImageIndex() | Imagick::setImageMatte() |  |
Imagick::edgeImage() | Imagick::getImageInterlaceScheme() | Imagick::setImagePage() |  |
Imagick::embossImage() | Imagick::getImageInterpolateMethod() | Imagick::setImageProfile() |  |
Imagick::enhanceImage() | Imagick::getImageIterations() | Imagick::setImageProperty() |  |
Imagick::equalizeImage() | Imagick::getImageMatteColor() | Imagick::setImageRedPrimary() |  |
Imagick::evaluateImage() | Imagick::getImageMatte() | Imagick::setImageRenderingIntent() |  |
Imagick::flattenImages() | Imagick::getImagePage() | Imagick::setImageResolution() |  |
Imagick::flipImage() | Imagick::getImagePixelColor() | Imagick::setImageScene() |  |
Imagick::flopImage() | Imagick::getImageProfile() | Imagick::setImageTicksPerSecond() |  |
 | Imagick::getImageProperty() | Imagick::setImageType() |  |
Imagick::fxImage() | Imagick::getImageRedPrimary() | Imagick::setImageUnits() |  |
Imagick::gammaImage() | Imagick::getImageRegion() | Imagick::setImageVirtualPixelMethod() |  |
Imagick::gaussianBlurImage() | Imagick::getImageRenderingIntent() | Imagick::setImageWhitepoint() |  |
Imagick::implodeImage() | Imagick::getImageResolution() | Imagick::setInterlaceScheme() |  |
Imagick::levelImage() | Imagick::getImageScene() | Imagick::setOption() |  |
Imagick::linearStretchImage() | Imagick::getImageSignature() | Imagick::setPage() |  |
Imagick::magnifyImage() | Imagick::getImageTicksPerSecond() | Imagick::setResolution() |  |
Imagick::matteFloodFillImage() | Imagick::getImageTotalInkDensity() | Imagick::setResourceLimit() |  |
Imagick::medianFilterImage() | Imagick::getImageType() | Imagick::setSamplingFactors() |  |
Imagick::minifyImage() | Imagick::getImageUnits() | Imagick::setSizeOffset() |  |
Imagick::modulateImage() | Imagick::getImageVirtualPixelMethod() | Imagick::setSize() |  |
Imagick::montageImage() | Imagick::getImageWhitepoint() | Imagick::setType() |  |
Imagick::morphImages() | Imagick::getImageWidth() |  |  |
Imagick::mosaicImages() | Imagick::getImage() |  |  |
Imagick::motionBlurImage() | Imagick::getInterlaceScheme() |  |  |
Imagick::negateImage() | Imagick::getNumberImages() |  |  |
Imagick::normalizeImage() | Imagick::getOption() |  |  |
Imagick::oilPaintImage() | Imagick::getPackageName() |  |  |
Imagick::optimizeImageLayers() | Imagick::getPage() |  |  |
Imagick::paintOpaqueImage() | Imagick::getPixelIterator() |  |  |
Imagick::paintTransparentImage() | Imagick::getPixelRegionIterator() |  |  |
Imagick::posterizeImage() | Imagick::getQuantumDepth() |  |  |
Imagick::radialBlurImage() | Imagick::getQuantumRange() |  |  |
Imagick::raiseImage() | Imagick::getResourceLimit() |  |  |
Imagick::randomThresholdImage() | Imagick::getResource() |  |  |
Imagick::reduceNoiseImage() | Imagick::getSamplingFactors() |  |  |
Imagick::render() | Imagick::getSizeOffset() |  |  |
Imagick::resampleImage() | Imagick::getSize() |  |  |
Imagick::resizeImage() | Imagick::identifyImage() |  |  |
Imagick::rollImage() | Imagick::getImageSize() |  |  |
Imagick::rotateImage() |  |  |  |
Imagick::sampleImage() |  |  |  |
Imagick::scaleImage() |  |  |  |
Imagick::separateImageChannel() |  |  |  |
Imagick::sepiaToneImage() |  |  |  |
Imagick::shadeImage() |  |  |  |
Imagick::shadowImage() |  |  |  |
Imagick::sharpenImage() |  |  |  |
Imagick::shaveImage() |  |  |  |
Imagick::shearImage() |  |  |  |
Imagick::sigmoidalContrastImage() |  |  |  |
Imagick::sketchImage() |  |  |  |
Imagick::solarizeImage() |  |  |  |
Imagick::spliceImage() |  |  |  |
Imagick::spreadImage() |  |  |  |
Imagick::steganoImage() |  |  |  |
Imagick::stereoImage() |  |  |  |
Imagick::stripImage() |  |  |  |
Imagick::swirlImage() |  |  |  |
Imagick::textureImage() |  |  |  |
Imagick::thresholdImage() |  |  |  |
Imagick::thumbnailImage() |  |  |  |
Imagick::tintImage() |  |  |  |
Imagick::transverseImage() |  |  |  |
Imagick::trimImage() |  |  |  |
Imagick::uniqueImageColors() |  |  |  |
Imagick::unsharpMaskImage() |  |  |  |
Imagick::vignetteImage() |  |  |  |
Imagick::waveImage() |  |  |  |
Imagick::whiteThresholdImage() |  |  |  |

Table of Contents

  • Imagick::adaptiveBlurImage — Adds adaptive blur filter to image
  • Imagick::adaptiveResizeImage — Adaptively resize image with data dependent triangulation
  • Imagick::adaptiveSharpenImage — Adaptively sharpen the image
  • Imagick::adaptiveThresholdImage — Selects a threshold for each pixel based on a range of intensity
  • Imagick::addImage — Adds new image to Imagick object image list
  • Imagick::addNoiseImage — Adds random noise to the image
  • Imagick::affineTransformImage — Transforms an image
  • Imagick::animateImages — Animates an image or images
  • Imagick::annotateImage — Annotates an image with text
  • Imagick::appendImages — Append a set of images
  • Imagick::autoLevelImage — Description
  • Imagick::averageImages — Average a set of images
  • Imagick::blackThresholdImage — Forces all pixels below the threshold into black
  • Imagick::blueShiftImage — Description
  • Imagick::blurImage — Adds blur filter to image
  • Imagick::borderImage — Surrounds the image with a border
  • Imagick::brightnessContrastImage — Description
  • Imagick::charcoalImage — Simulates a charcoal drawing
  • Imagick::chopImage — Removes a region of an image and trims
  • Imagick::clampImage — Description
  • Imagick::clear — Clears all resources associated to Imagick object
  • Imagick::clipImage — Clips along the first path from the 8BIM profile
  • Imagick::clipImagePath — Description
  • Imagick::clipPathImage — Clips along the named paths from the 8BIM profile
  • Imagick::clone — Makes an exact copy of the Imagick object
  • Imagick::clutImage — Replaces colors in the image
  • Imagick::coalesceImages — Composites a set of images
  • Imagick::colorFloodfillImage — Changes the color value of any pixel that matches target
  • Imagick::colorizeImage — Blends the fill color with the image
  • Imagick::colorMatrixImage — Description
  • Imagick::combineImages — Combines one or more images into a single image
  • Imagick::commentImage — Adds a comment to your image
  • Imagick::compareImageChannels — Returns the difference in one or more images
  • Imagick::compareImageLayers — Returns the maximum bounding region between images
  • Imagick::compareImages — Compares an image to a reconstructed image
  • Imagick::compositeImage — 把一张图合并到一张图
  • Imagick::__construct — The Imagick constructor
  • Imagick::contrastImage — Change the contrast of the image
  • Imagick::contrastStretchImage — Enhances the contrast of a color image
  • Imagick::convolveImage — Applies a custom convolution kernel to the image
  • Imagick::count — Description
  • Imagick::cropImage — 截图图片的一块区域
  • Imagick::cropThumbnailImage — 创建缩略图
  • Imagick::current — Returns a reference to the current Imagick object
  • Imagick::cycleColormapImage — Displaces an image's colormap
  • Imagick::decipherImage — Deciphers an image
  • Imagick::deconstructImages — Returns certain pixel differences between images
  • Imagick::deleteImageArtifact — Delete image artifact
  • Imagick::deleteImageProperty — Description
  • Imagick::deskewImage — Removes skew from the image
  • Imagick::despeckleImage — Reduces the speckle noise in an image
  • Imagick::destroy — Destroys the Imagick object
  • Imagick::displayImage — Displays an image
  • Imagick::displayImages — Displays an image or image sequence
  • Imagick::distortImage — Distorts an image using various distortion methods
  • Imagick::drawImage — 把 ImagickDraw 对象渲染到当前图片上
  • Imagick::edgeImage — Enhance edges within the image
  • Imagick::embossImage — Returns a grayscale image with a three-dimensional effect
  • Imagick::encipherImage — Enciphers an image
  • Imagick::enhanceImage — Improves the quality of a noisy image
  • Imagick::equalizeImage — Equalizes the image histogram
  • Imagick::evaluateImage — Applies an expression to an image
  • Imagick::exportImagePixels — Exports raw image pixels
  • Imagick::extentImage — Set image size
  • Imagick::filter — Description
  • Imagick::flattenImages — Merges a sequence of images
  • Imagick::flipImage — Creates a vertical mirror image
  • Imagick::floodFillPaintImage — Changes the color value of any pixel that matches target
  • Imagick::flopImage — Creates a horizontal mirror image
  • Imagick::forwardFourierTransformImage — Description
  • Imagick::frameImage — Adds a simulated three-dimensional border
  • Imagick::functionImage — Applies a function on the image
  • Imagick::fxImage — Evaluate expression for each pixel in the image
  • Imagick::gammaImage — Gamma-corrects an image
  • Imagick::gaussianBlurImage — Blurs an image
  • Imagick::getColorspace — Gets the colorspace
  • Imagick::getCompression — Gets the object compression type
  • Imagick::getCompressionQuality — Gets the object compression quality
  • Imagick::getCopyright — Returns the ImageMagick API copyright as a string
  • Imagick::getFilename — The filename associated with an image sequence
  • Imagick::getFont — Gets font
  • Imagick::getFormat — Returns the format of the Imagick object
  • Imagick::getGravity — Gets the gravity
  • Imagick::getHomeURL — Returns the ImageMagick home URL
  • Imagick::getImage — Returns a new Imagick object
  • Imagick::getImageAlphaChannel — 获取图像的 alpha 通道
  • Imagick::getImageArtifact — Get image artifact
  • Imagick::getImageAttribute — Description
  • Imagick::getImageBackgroundColor — Returns the image background color
  • Imagick::getImageBlob — Returns the image sequence as a blob
  • Imagick::getImageBluePrimary — Returns the chromaticy blue primary point
  • Imagick::getImageBorderColor — Returns the image border color
  • Imagick::getImageChannelDepth — Gets the depth for a particular image channel
  • Imagick::getImageChannelDistortion — Compares image channels of an image to a reconstructed image
  • Imagick::getImageChannelDistortions — Gets channel distortions
  • Imagick::getImageChannelExtrema — Gets the extrema for one or more image channels
  • Imagick::getImageChannelKurtosis — The getImageChannelKurtosis purpose
  • Imagick::getImageChannelMean — Gets the mean and standard deviation
  • Imagick::getImageChannelRange — Gets channel range
  • Imagick::getImageChannelStatistics — Returns statistics for each channel in the image
  • Imagick::getImageClipMask — Gets image clip mask
  • Imagick::getImageColormapColor — Returns the color of the specified colormap index
  • Imagick::getImageColors — Gets the number of unique colors in the image
  • Imagick::getImageColorspace — Gets the image colorspace
  • Imagick::getImageCompose — Returns the composite operator associated with the image
  • Imagick::getImageCompression — Gets the current image's compression type
  • Imagick::getImageCompressionQuality — Gets the current image's compression quality
  • Imagick::getImageDelay — Gets the image delay
  • Imagick::getImageDepth — Gets the image depth
  • Imagick::getImageDispose — Gets the image disposal method
  • Imagick::getImageDistortion — Compares an image to a reconstructed image
  • Imagick::getImageExtrema — Gets the extrema for the image
  • Imagick::getImageFilename — Returns the filename of a particular image in a sequence
  • Imagick::getImageFormat — Returns the format of a particular image in a sequence
  • Imagick::getImageGamma — Gets the image gamma
  • Imagick::getImageGeometry — Gets the width and height as an associative array
  • Imagick::getImageGravity — Gets the image gravity
  • Imagick::getImageGreenPrimary — Returns the chromaticy green primary point
  • Imagick::getImageHeight — Returns the image height
  • Imagick::getImageHistogram — Gets the image histogram
  • Imagick::getImageIndex — Gets the index of the current active image
  • Imagick::getImageInterlaceScheme — Gets the image interlace scheme
  • Imagick::getImageInterpolateMethod — Returns the interpolation method
  • Imagick::getImageIterations — Gets the image iterations
  • Imagick::getImageLength — Returns the image length in bytes
  • Imagick::getImageMagickLicense — Returns a string containing the ImageMagick license
  • Imagick::getImageMatte — Return if the image has a matte channel
  • Imagick::getImageMatteColor — Returns the image matte color
  • Imagick::getImageMimeType — Description
  • Imagick::getImageOrientation — Gets the image orientation
  • Imagick::getImagePage — Returns the page geometry
  • Imagick::getImagePixelColor — Returns the color of the specified pixel
  • Imagick::getImageProfile — Returns the named image profile
  • Imagick::getImageProfiles — Returns the image profiles
  • Imagick::getImageProperties — Returns the image properties
  • Imagick::getImageProperty — Returns the named image property
  • Imagick::getImageRedPrimary — Returns the chromaticity red primary point
  • Imagick::getImageRegion — Extracts a region of the image
  • Imagick::getImageRenderingIntent — Gets the image rendering intent
  • Imagick::getImageResolution — 获取图像的x,y轴分辨率
  • Imagick::getImagesBlob — Returns all image sequences as a blob
  • Imagick::getImageScene — Gets the image scene
  • Imagick::getImageSignature — Generates an SHA-256 message digest
  • Imagick::getImageSize — Returns the image length in bytes
  • Imagick::getImageTicksPerSecond — Gets the image ticks-per-second
  • Imagick::getImageTotalInkDensity — Gets the image total ink density
  • Imagick::getImageType — Gets the potential image type
  • Imagick::getImageUnits — 获取图像的分辨率单位
  • Imagick::getImageVirtualPixelMethod — Returns the virtual pixel method
  • Imagick::getImageWhitePoint — Returns the chromaticity white point
  • Imagick::getImageWidth — Returns the image width
  • Imagick::getInterlaceScheme — Gets the object interlace scheme
  • Imagick::getIteratorIndex — Gets the index of the current active image
  • Imagick::getNumberImages — Returns the number of images in the object
  • Imagick::getOption — Returns a value associated with the specified key
  • Imagick::getPackageName — Returns the ImageMagick package name
  • Imagick::getPage — Returns the page geometry
  • Imagick::getPixelIterator — Returns a MagickPixelIterator
  • Imagick::getPixelRegionIterator — Get an ImagickPixelIterator for an image section
  • Imagick::getPointSize — Gets point size
  • Imagick::getQuantum — Description
  • Imagick::getQuantumDepth — Gets the quantum depth
  • Imagick::getQuantumRange — Returns the Imagick quantum range
  • Imagick::getRegistry — Description
  • Imagick::getReleaseDate — Returns the ImageMagick release date
  • Imagick::getResource — Returns the specified resource's memory usage
  • Imagick::getResourceLimit — Returns the specified resource limit
  • Imagick::getSamplingFactors — Gets the horizontal and vertical sampling factor
  • Imagick::getSize — Returns the size associated with the Imagick object
  • Imagick::getSizeOffset — Returns the size offset
  • Imagick::getVersion — Returns the ImageMagick API version
  • Imagick::haldClutImage — Replaces colors in the image
  • Imagick::hasNextImage — Checks if the object has more images
  • Imagick::hasPreviousImage — Checks if the object has a previous image
  • Imagick::identifyFormat — Description
  • Imagick::identifyImage — Identifies an image and fetches attributes
  • Imagick::implodeImage — Creates a new image as a copy
  • Imagick::importImagePixels — Imports image pixels
  • Imagick::inverseFourierTransformImage — Description
  • Imagick::labelImage — Adds a label to an image
  • Imagick::levelImage — Adjusts the levels of an image
  • Imagick::linearStretchImage — Stretches with saturation the image intensity
  • Imagick::liquidRescaleImage — Animates an image or images
  • Imagick::listRegistry — Description
  • Imagick::magnifyImage — Scales an image proportionally 2x
  • Imagick::mapImage — Replaces the colors of an image with the closest color from a reference image.
  • Imagick::matteFloodfillImage — Changes the transparency value of a color
  • Imagick::medianFilterImage — Applies a digital filter
  • Imagick::mergeImageLayers — Merges image layers
  • Imagick::minifyImage — Scales an image proportionally to half its size
  • Imagick::modulateImage — Control the brightness, saturation, and hue
  • Imagick::montageImage — Creates a composite image
  • Imagick::morphImages — Method morphs a set of images
  • Imagick::morphology — Description
  • Imagick::mosaicImages — Forms a mosaic from images
  • Imagick::motionBlurImage — Simulates motion blur
  • Imagick::negateImage — Negates the colors in the reference image
  • Imagick::newImage — 创建一张图片
  • Imagick::newPseudoImage — Creates a new image
  • Imagick::nextImage — Moves to the next image
  • Imagick::normalizeImage — Enhances the contrast of a color image
  • Imagick::oilPaintImage — Simulates an oil painting
  • Imagick::opaquePaintImage — Changes the color value of any pixel that matches target
  • Imagick::optimizeImageLayers — Removes repeated portions of images to optimize
  • Imagick::orderedPosterizeImage — Performs an ordered dither
  • Imagick::paintFloodfillImage — Changes the color value of any pixel that matches target
  • Imagick::paintOpaqueImage — Change any pixel that matches color
  • Imagick::paintTransparentImage — Changes any pixel that matches color with the color defined by fill
  • Imagick::pingImage — Fetch basic attributes about the image
  • Imagick::pingImageBlob — Quickly fetch attributes
  • Imagick::pingImageFile — Get basic image attributes in a lightweight manner
  • Imagick::polaroidImage — Simulates a Polaroid picture
  • Imagick::posterizeImage — Reduces the image to a limited number of color level
  • Imagick::previewImages — Quickly pin-point appropriate parameters for image processing
  • Imagick::previousImage — Move to the previous image in the object
  • Imagick::profileImage — Adds or removes a profile from an image
  • Imagick::quantizeImage — Analyzes the colors within a reference image
  • Imagick::quantizeImages — Analyzes the colors within a sequence of images
  • Imagick::queryFontMetrics — Returns an array representing the font metrics
  • Imagick::queryFonts — Returns the configured fonts
  • Imagick::queryFormats — Returns formats supported by Imagick
  • Imagick::radialBlurImage — Radial blurs an image
  • Imagick::raiseImage — Creates a simulated 3d button-like effect
  • Imagick::randomThresholdImage — Creates a high-contrast, two-color image
  • Imagick::readImage — Reads image from filename
  • Imagick::readImageBlob — 从二进制字符串里读取图片
  • Imagick::readImageFile — Reads image from open filehandle
  • Imagick::readimages — Description
  • Imagick::recolorImage — Recolors image
  • Imagick::reduceNoiseImage — Smooths the contours of an image
  • Imagick::remapImage — Remaps image colors
  • Imagick::removeImage — Removes an image from the image list
  • Imagick::removeImageProfile — Removes the named image profile and returns it
  • Imagick::render — Renders all preceding drawing commands
  • Imagick::resampleImage — Resample image to desired resolution
  • Imagick::resetImagePage — Reset image page
  • Imagick::resizeImage — Scales an image
  • Imagick::rollImage — Offsets an image
  • Imagick::rotateImage — Rotates an image
  • Imagick::rotationalBlurImage — Description
  • Imagick::roundCorners — Rounds image corners
  • Imagick::sampleImage — Scales an image with pixel sampling
  • Imagick::scaleImage — Scales the size of an image
  • Imagick::segmentImage — Segments an image
  • Imagick::selectiveBlurImage — Description
  • Imagick::separateImageChannel — Separates a channel from the image
  • Imagick::sepiaToneImage — Sepia tones an image
  • Imagick::setBackgroundColor — Sets the object's default background color
  • Imagick::setColorspace — Set colorspace
  • Imagick::setCompression — Sets the object's default compression type
  • Imagick::setCompressionQuality — Sets the object's default compression quality
  • Imagick::setFilename — Sets the filename before you read or write the image
  • Imagick::setFirstIterator — Sets the Imagick iterator to the first image
  • Imagick::setFont — Sets font
  • Imagick::setFormat — Sets the format of the Imagick object
  • Imagick::setGravity — Sets the gravity
  • Imagick::setImage — Replaces image in the object
  • Imagick::setImageAlphaChannel — Sets image alpha channel
  • Imagick::setImageArtifact — Set image artifact
  • Imagick::setImageAttribute — Description
  • Imagick::setImageBackgroundColor — Sets the image background color
  • Imagick::setImageBias — Sets the image bias for any method that convolves an image
  • Imagick::setImageBiasQuantum — Description
  • Imagick::setImageBluePrimary — Sets the image chromaticity blue primary point
  • Imagick::setImageBorderColor — Sets the image border color
  • Imagick::setImageChannelDepth — Sets the depth of a particular image channel
  • Imagick::setImageClipMask — Sets image clip mask
  • Imagick::setImageColormapColor — Sets the color of the specified colormap index
  • Imagick::setImageColorspace — Sets the image colorspace
  • Imagick::setImageCompose — Sets the image composite operator
  • Imagick::setImageCompression — 设置图片压缩的类型
  • Imagick::setImageCompressionQuality — 设置图片压缩的质量
  • Imagick::setImageDelay — Sets the image delay
  • Imagick::setImageDepth — Sets the image depth
  • Imagick::setImageDispose — Sets the image disposal method
  • Imagick::setImageExtent — Sets the image size
  • Imagick::setImageFilename — Sets the filename of a particular image
  • Imagick::setImageFormat — 为图片设置指定的格式
  • Imagick::setImageGamma — Sets the image gamma
  • Imagick::setImageGravity — Sets the image gravity
  • Imagick::setImageGreenPrimary — Sets the image chromaticity green primary point
  • Imagick::setImageIndex — Set the iterator position
  • Imagick::setImageInterlaceScheme — Sets the image compression
  • Imagick::setImageInterpolateMethod — Sets the image interpolate pixel method
  • Imagick::setImageIterations — Sets the image iterations
  • Imagick::setImageMatte — Sets the image matte channel
  • Imagick::setImageMatteColor — Sets the image matte color
  • Imagick::setImageOpacity — Sets the image opacity level
  • Imagick::setImageOrientation — Sets the image orientation
  • Imagick::setImagePage — Sets the page geometry of the image
  • Imagick::setImageProfile — Adds a named profile to the Imagick object
  • Imagick::setImageProperty — Sets an image property
  • Imagick::setImageRedPrimary — Sets the image chromaticity red primary point
  • Imagick::setImageRenderingIntent — Sets the image rendering intent
  • Imagick::setImageResolution — Sets the image resolution
  • Imagick::setImageScene — Sets the image scene
  • Imagick::setImageTicksPerSecond — Sets the image ticks-per-second
  • Imagick::setImageType — Sets the image type
  • Imagick::setImageUnits — Sets the image units of resolution
  • Imagick::setImageVirtualPixelMethod — Sets the image virtual pixel method
  • Imagick::setImageWhitePoint — Sets the image chromaticity white point
  • Imagick::setInterlaceScheme — Sets the image compression
  • Imagick::setIteratorIndex — Set the iterator position
  • Imagick::setLastIterator — Sets the Imagick iterator to the last image
  • Imagick::setOption — Set an option
  • Imagick::setPage — Sets the page geometry of the Imagick object
  • Imagick::setPointSize — Sets point size
  • Imagick::setProgressMonitor — Description
  • Imagick::setRegistry — Description
  • Imagick::setResolution — Sets the image resolution
  • Imagick::setResourceLimit — Sets the limit for a particular resource in megabytes
  • Imagick::setSamplingFactors — Sets the image sampling factors
  • Imagick::setSize — Sets the size of the Imagick object
  • Imagick::setSizeOffset — Sets the size and offset of the Imagick object
  • Imagick::setType — Sets the image type attribute
  • Imagick::shadeImage — Creates a 3D effect
  • Imagick::shadowImage — Simulates an image shadow
  • Imagick::sharpenImage — Sharpens an image
  • Imagick::shaveImage — Shaves pixels from the image edges
  • Imagick::shearImage — Creating a parallelogram
  • Imagick::sigmoidalContrastImage — Adjusts the contrast of an image
  • Imagick::sketchImage — Simulates a pencil sketch
  • Imagick::smushImages — Description
  • Imagick::solarizeImage — Applies a solarizing effect to the image
  • Imagick::sparseColorImage — Interpolates colors
  • Imagick::spliceImage — Splices a solid color into the image
  • Imagick::spreadImage — Randomly displaces each pixel in a block
  • Imagick::statisticImage — Description
  • Imagick::steganoImage — Hides a digital watermark within the image
  • Imagick::stereoImage — Composites two images
  • Imagick::stripImage — 去掉图片的所有配置和设置
  • Imagick::subImageMatch — Description
  • Imagick::swirlImage — Swirls the pixels about the center of the image
  • Imagick::textureImage — Repeatedly tiles the texture image
  • Imagick::thresholdImage — Changes the value of individual pixels based on a threshold
  • Imagick::thumbnailImage — Changes the size of an image
  • Imagick::tintImage — Applies a color vector to each pixel in the image
  • Imagick::__toString — Returns the image as a string.
  • Imagick::transformImage — Convenience method for setting crop size and the image geometry
  • Imagick::transformImageColorspace — Transforms an image to a new colorspace.
  • Imagick::transparentPaintImage — Paints pixels transparent
  • Imagick::transposeImage — Creates a vertical mirror image
  • Imagick::transverseImage — Creates a horizontal mirror image
  • Imagick::trimImage — Remove edges from the image
  • Imagick::uniqueImageColors — Discards all but one of any pixel color
  • Imagick::unsharpMaskImage — Sharpens an image
  • Imagick::valid — Checks if the current item is valid
  • Imagick::vignetteImage — Adds vignette filter to the image
  • Imagick::waveImage — Applies wave filter to the image
  • Imagick::whiteThresholdImage — Force all pixels above the threshold into white
  • Imagick::writeImage — 把图片写入指定的文件
  • Imagick::writeImageFile — Writes an image to a filehandle
  • Imagick::writeImages — Writes an image or image sequence
  • Imagick::writeImagesFile — Writes frames to a filehandle
Basic usage
Imagick::adaptiveBlurImage
ImageMagick


Adds adaptive blur filter to image

Imagick
Imagick::adaptiveResizeImage
Imagick
PHP Manual

Imagick::adaptiveBlurImage

(PECL imagick 2.0.0)

Imagick::adaptiveBlurImage — Adds adaptive blur filter to image

说明

bool Imagick::adaptiveBlurImage ( float $radius , float $sigma [, int $channel = Imagick::CHANNEL_DEFAULT ] )

Adds an adaptive blur filter to image. The intensity of an adaptive blur depends is dramatically decreased at edge of the image, whereas a standard blur is uniform across the image. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

参数

radius

The radius of the Gaussian, in pixels, not counting the center pixel. Provide a value of 0 and the radius will be chosen automagically.

sigma

The standard deviation of the Gaussian, in pixels.

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. 缺省为Imagick::CHANNEL_DEFAULT. 参考此 通道常数列表

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Using Imagick::adaptiveBlurImage():

Adaptively blur an image, then display to the browser.

<?php

header('Content-type: image/jpeg');

$image = new Imagick('test.jpg');

$image->adaptiveBlurImage(5,3);
echo $image;

?>

以上例程的输出类似于：

Output of example : Using Imagick::adaptiveBlurImage()

参见

  • Imagick::blurImage() - Adds blur filter to image
  • Imagick::motionBlurImage() - Simulates motion blur
  • Imagick::radialBlurImage() - Radial blurs an image

Imagick
Imagick::adaptiveResizeImage
Imagick


Adaptively resize image with data dependent triangulation

Imagick::adaptiveBlurImage
Imagick::adaptiveSharpenImage
Imagick
PHP Manual

Imagick::adaptiveResizeImage

(PECL imagick 2.0.0)

Imagick::adaptiveResizeImage — Adaptively resize image with data dependent triangulation

说明

bool Imagick::adaptiveResizeImage ( int $columns , int $rows [, bool $bestfit = false ] )

Adaptively resize image with data-dependent triangulation. Avoids blurring across sharp color changes. Most useful when used to shrink images slightly to a slightly smaller "web size"; may not look good when a full-sized image is adaptively resized to a thumbnail. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

Note: 参数 bestfit 的特性在 Imagick 3.0.0 中已改变。在此版本以前，当目标尺寸设为 400x400 时，原尺寸为 200x150 的图像将不会被改变。自 Imagick 3.0.0 起，源图像将会被放大到 400x300 因为这将更好的适合目标尺寸。当使用参数 bestfit 时，必须同时给出宽度和高度。

参数

columns

The number of columns in the scaled image.

rows

The number of rows in the scaled image.

bestfit

Whether to fit the image inside a bounding box.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

更新日志

版本 | 说明
2.1.0 | Added optional fit parameter.
2.1.0 | This method now supports proportional scaling. Pass zero as either parameter for proportional scaling.

范例

Example #1 Using Imagick::adaptiveResizeImage()

Resize an image to a standard size for the web. This method works best when resizing to a size only slightly smaller than the previous image size.

<?php
header('Content-type: image/jpeg');

$image = new Imagick('image.jpg');
$image->adaptiveResizeImage(1024,768);

echo $image;
?>

参见

  • Imagick::chopImage() - Removes a region of an image and trims
  • Imagick::cropImage() - 截图图片的一块区域
  • Imagick::magnifyImage() - Scales an image proportionally 2x
  • Imagick::minifyImage() - Scales an image proportionally to half its size
  • Imagick::resizeImage() - Scales an image
  • Imagick::scaleImage() - Scales the size of an image
  • Imagick::shaveImage() - Shaves pixels from the image edges
  • Imagick::thumbnailImage() - Changes the size of an image
  • Imagick::trimImage() - Remove edges from the image

Imagick::adaptiveBlurImage
Imagick::adaptiveSharpenImage
Imagick


Adaptively sharpen the image

Imagick::adaptiveResizeImage
Imagick::adaptiveThresholdImage
Imagick
PHP Manual

Imagick::adaptiveSharpenImage

(PECL imagick 2.0.0)

Imagick::adaptiveSharpenImage — Adaptively sharpen the image

说明

bool Imagick::adaptiveSharpenImage ( float $radius , float $sigma [, int $channel = Imagick::CHANNEL_DEFAULT ] )

Adaptively sharpen the image by sharpening more intensely near image edges and less intensely far from edges. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

参数

radius

The radius of the Gaussian, in pixels, not counting the center pixel. Use 0 for auto-select.

sigma

The standard deviation of the Gaussian, in pixels.

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. 缺省为Imagick::CHANNEL_DEFAULT. 参考此 通道常数列表

返回值

成功时返回 TRUE。

范例

Example #1 A Imagick::adaptiveSharpenImage() example

Adaptively sharpen the image with radius 2 and sigma 1.

<?php
try {
    $image = new Imagick('image.png');
    $image->adaptiveSharpenImage(2,1);
} catch(ImagickException $e) {
    echo 'Error: ' , $e->getMessage();
    die();
}
header('Content-type: image/png');
echo $image;
?>

参见

  • Imagick::sharpenImage() - Sharpens an image

Imagick::adaptiveResizeImage
Imagick::adaptiveThresholdImage
Imagick


Selects a threshold for each pixel based on a range of intensity

Imagick::adaptiveSharpenImage
Imagick::addImage
Imagick
PHP Manual

Imagick::adaptiveThresholdImage

(PECL imagick 2.0.0)

Imagick::adaptiveThresholdImage — Selects a threshold for each pixel based on a range of intensity

说明

bool Imagick::adaptiveThresholdImage ( int $width , int $height , int $offset )

Selects an individual threshold for each pixel based on the range of intensity values in its local neighborhood. This allows for thresholding of an image whose global intensity histogram doesn't contain distinctive peaks.

参数

width

Width of the local neighborhood.

height

Height of the local neighborhood.

offset

The mean offset

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::adaptiveThresholdImage()

<?php
function adaptiveThresholdImage($imagePath, $width, $height, $adaptiveOffset) {
    $imagick = new \Imagick(realpath($imagePath));
    $adaptiveOffsetQuantum = intval($adaptiveOffset * \Imagick::getQuantum());
    $imagick->adaptiveThresholdImage($width, $height, $adaptiveOffsetQuantum);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::adaptiveSharpenImage
Imagick::addImage
Imagick


Adds new image to Imagick object image list

Imagick::adaptiveThresholdImage
Imagick::addNoiseImage
Imagick
PHP Manual

Imagick::addImage

(PECL imagick 2.0.0)

Imagick::addImage — Adds new image to Imagick object image list

说明

bool Imagick::addImage ( Imagick $source )

Adds new image to Imagick object from the current position of the source object. After the operation iterator position is moved at the end of the list.

参数

source

The source Imagick object

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::adaptiveThresholdImage
Imagick::addNoiseImage
Imagick


Adds random noise to the image

Imagick::addImage
Imagick::affineTransformImage
Imagick
PHP Manual

Imagick::addNoiseImage

(PECL imagick 2.0.0)

Imagick::addNoiseImage — Adds random noise to the image

说明

bool Imagick::addNoiseImage ( int $noise_type [, int $channel = Imagick::CHANNEL_DEFAULT ] )

Adds random noise to the image.

参数

noise_type

The type of the noise. Refer to this list of noise constants.

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. 缺省为Imagick::CHANNEL_DEFAULT. 参考此 通道常数列表

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::addNoiseImage()

<?php
function addNoiseImage($noiseType, $imagePath, $channel) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->addNoiseImage($noiseType, $channel);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::addImage
Imagick::affineTransformImage
Imagick


Transforms an image

Imagick::addNoiseImage
Imagick::animateImages
Imagick
PHP Manual

Imagick::affineTransformImage

(PECL imagick 2.0.0)

Imagick::affineTransformImage — Transforms an image

说明

bool Imagick::affineTransformImage ( ImagickDraw $matrix )

Transforms an image as dictated by the affine matrix.

参数

matrix

The affine matrix

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::affineTransformImage()

<?php
function affineTransformImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $draw = new \ImagickDraw();

    $angle = 40 ;

    $affineRotate = array(
        "sx" => cos($angle), "sy" => cos($angle),
        "rx" => sin($angle), "ry" => -sin($angle),
        "tx" => 0, "ty" => 0,
    );

    $draw->affine($affineRotate);

    $imagick->affineTransformImage($draw);

    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::addNoiseImage
Imagick::animateImages
Imagick


Animates an image or images

Imagick::affineTransformImage
Imagick::annotateImage
Imagick
PHP Manual

Imagick::animateImages

(No version information available, might only be in Git)

Imagick::animateImages — Animates an image or images

说明

bool Imagick::animateImages ( string $x_server )

This method animates the image onto a local or remote X server. This method is not available on Windows. 此方法在Imagick基于ImageMagick 6.3.6以上版本编译时可用。

参数

x_server

X server address

返回值

成功时返回 TRUE。

参见

  • Imagick::displayImage() - Displays an image

Imagick::affineTransformImage
Imagick::annotateImage
Imagick


Annotates an image with text

Imagick::animateImages
Imagick::appendImages
Imagick
PHP Manual

Imagick::annotateImage

(PECL imagick 2.0.0)

Imagick::annotateImage — Annotates an image with text

说明

bool Imagick::annotateImage ( ImagickDraw $draw_settings , float $x , float $y , float $angle , string $text )

Annotates an image with text.

参数

draw_settings

The ImagickDraw object that contains settings for drawing the text

x

Horizontal offset in pixels to the left of text

y

Vertical offset in pixels to the baseline of text

angle

The angle at which to write the text

text

The string to draw

返回值

成功时返回 TRUE。

范例

Example #1 Using Imagick::annotateImage():

Annotate text on an empty image

<?php
/* Create some objects */
$image = new Imagick();
$draw = new ImagickDraw();
$pixel = new ImagickPixel( 'gray' );

/* New image */
$image->newImage(800, 75, $pixel);

/* Black text */
$draw->setFillColor('black');

/* Font properties */
$draw->setFont('Bookman-DemiItalic');
$draw->setFontSize( 30 );

/* Create text */
$image->annotateImage($draw, 10, 45, 0, 'The quick brown fox jumps over the lazy dog');

/* Give image a format */
$image->setImageFormat('png');

/* Output the image with headers */
header('Content-type: image/png');
echo $image;

?>

参见

  • ImagickDraw::annotation() - Draws text on the image
  • ImagickDraw::setFont() - Sets the fully-specified font to use when annotating with text

Imagick::animateImages
Imagick::appendImages
Imagick


Append a set of images

Imagick::annotateImage
Imagick::autoLevelImage
Imagick
PHP Manual

Imagick::appendImages

(PECL imagick 2.0.0)

Imagick::appendImages — Append a set of images

说明

Imagick Imagick::appendImages ( bool $stack = false )

Append a set of images into one larger image.

参数

stack

Whether to stack the images vertically. By default (or if FALSE is specified) images are stacked left-to-right. If stack is TRUE, images are stacked top-to-bottom.

返回值

Returns Imagick instance on success.

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::appendImages() example

<?php

/* Create new imagick object */
$im = new Imagick();

/* create red, green and blue images */
$im->newImage(100, 50, "red");
$im->newImage(100, 50, "green");
$im->newImage(100, 50, "blue");

/* Append the images into one */
$im->resetIterator();
$combined = $im->appendImages(true);

/* Output the image */
$combined->setImageFormat("png");
header("Content-Type: image/png");
echo $combined;
?>

以上例程的输出类似于：

Output of example : Imagick::appendImages()

Imagick::annotateImage
Imagick::autoLevelImage
Imagick


Description

Imagick::appendImages
Imagick::averageImages
Imagick
PHP Manual

Imagick::autoLevelImage

(No version information available, might only be in Git)

Imagick::autoLevelImage — Description

说明

public void Imagick::autoLevelImage ([ string $CHANNEL = Imagick::CHANNEL_DEFAULT ] )

Adjusts the levels of a particular image channel by scaling the minimum and maximum values to the full quantum range.

参数

CHANNEL

Which channel should the auto-levelling should be done on.

返回值

范例

Example #1 Imagick::autoLevelImage()

<?php
function autoLevelImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->autoLevelImage();
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::appendImages
Imagick::averageImages
Imagick


Average a set of images

Imagick::autoLevelImage
Imagick::blackThresholdImage
Imagick
PHP Manual

Imagick::averageImages

(PECL imagick 2.0.0)

Imagick::averageImages — Average a set of images

说明

Imagick Imagick::averageImages ( void )

Average a set of images.

返回值

Returns a new Imagick object on success.

错误／异常

错误时抛出 ImagickException。

Imagick::autoLevelImage
Imagick::blackThresholdImage
Imagick


Forces all pixels below the threshold into black

Imagick::averageImages
Imagick::blueShiftImage
Imagick
PHP Manual

Imagick::blackThresholdImage

(PECL imagick 2.0.0)

Imagick::blackThresholdImage — Forces all pixels below the threshold into black

说明

bool Imagick::blackThresholdImage ( mixed $threshold )

Is like Imagick::thresholdImage() but forces all pixels below the threshold into black while leaving all pixels above the threshold unchanged.

参数

threshold

The threshold below which everything turns black

返回值

成功时返回 TRUE。

更新日志

版本 | 说明
2.1.0 | Now allows a string representing the color as a parameter. Previous versions allow only an ImagickPixel object.

范例

Example #1 Imagick::blackThresholdImage()

<?php
function blackThresholdImage($imagePath, $thresholdColor) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->blackthresholdimage($thresholdColor);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::averageImages
Imagick::blueShiftImage
Imagick


Description

Imagick::blackThresholdImage
Imagick::blurImage
Imagick
PHP Manual

Imagick::blueShiftImage

(No version information available, might only be in Git)

Imagick::blueShiftImage — Description

说明

public void Imagick::blueShiftImage ([ float $factor = 1.5 ] )

Mutes the colors of the image to simulate a scene at nighttime in the moonlight.

参数

factor

返回值

范例

Example #1 Imagick::blueShiftImage()

<?php
function blueShiftImage($imagePath, $blueShift) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->blueShiftImage($blueShift);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::blackThresholdImage
Imagick::blurImage
Imagick


Adds blur filter to image

Imagick::blueShiftImage
Imagick::borderImage
Imagick
PHP Manual

Imagick::blurImage

(PECL imagick 2.0.0)

Imagick::blurImage — Adds blur filter to image

说明

bool Imagick::blurImage ( float $radius , float $sigma [, int $channel ] )

Adds blur filter to image. Optional third parameter to blur a specific channel.

参数

radius

Blur radius

sigma

Standard deviation

channel

The Channeltype constant. When not supplied, all channels are blurred.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Using Imagick::blurImage():

Blur an image, then display to the browser.

<?php

header('Content-type: image/jpeg');

$image = new Imagick('test.jpg');

$image->blurImage(5,3);
echo $image;

?>

参见

  • Imagick::adaptiveBlurImage() - Adds adaptive blur filter to image
  • Imagick::motionBlurImage() - Simulates motion blur
  • Imagick::radialBlurImage() - Radial blurs an image

Imagick::blueShiftImage
Imagick::borderImage
Imagick


Surrounds the image with a border

Imagick::blurImage
Imagick::brightnessContrastImage
Imagick
PHP Manual

Imagick::borderImage

(PECL imagick 2.0.0)

Imagick::borderImage — Surrounds the image with a border

说明

bool Imagick::borderImage ( mixed $bordercolor , int $width , int $height )

Surrounds the image with a border of the color defined by the bordercolor ImagickPixel object.

参数

bordercolor

ImagickPixel object or a string containing the border color

width

Border width

height

Border height

返回值

成功时返回 TRUE。

更新日志

版本 | 说明
2.1.0 | Now allows a string representing the color as the first parameter. Previous versions allow only an ImagickPixel object.

范例

Example #1 Imagick::borderImage()

<?php
function borderImage($imagePath, $color, $width, $height) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->borderImage($color, $width, $height);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::blurImage
Imagick::brightnessContrastImage
Imagick


Description

Imagick::borderImage
Imagick::charcoalImage
Imagick
PHP Manual

Imagick::brightnessContrastImage

(No version information available, might only be in Git)

Imagick::brightnessContrastImage — Description

说明

public void Imagick::brightnessContrastImage ( string $brightness , string $contrast [, string $CHANNEL = Imagick::CHANNEL_DEFAULT ] )

Change the brightness and/or contrast of an image. It converts the brightness and contrast parameters into slope and intercept and calls a polynomical function to apply to the image.

参数

brightness

contrast

CHANNEL

返回值

范例

Example #1 Imagick::brightnessContrastImage()

<?php
function brightnessContrastImage($imagePath, $brightness, $contrast, $channel) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->brightnessContrastImage($brightness, $contrast, $channel);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::borderImage
Imagick::charcoalImage
Imagick


Simulates a charcoal drawing

Imagick::brightnessContrastImage
Imagick::chopImage
Imagick
PHP Manual

Imagick::charcoalImage

(PECL imagick 2.0.0)

Imagick::charcoalImage — Simulates a charcoal drawing

说明

bool Imagick::charcoalImage ( float $radius , float $sigma )

Simulates a charcoal drawing.

参数

radius

The radius of the Gaussian, in pixels, not counting the center pixel

sigma

The standard deviation of the Gaussian, in pixels

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::charcoalImage()

<?php
function charcoalImage($imagePath, $radius, $sigma) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->charcoalImage($radius, $sigma);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::brightnessContrastImage
Imagick::chopImage
Imagick


Removes a region of an image and trims

Imagick::charcoalImage
Imagick::clampImage
Imagick
PHP Manual

Imagick::chopImage

(PECL imagick 2.0.0)

Imagick::chopImage — Removes a region of an image and trims

说明

bool Imagick::chopImage ( int $width , int $height , int $x , int $y )

Removes a region of an image and collapses the image to occupy the removed portion.

参数

width

Width of the chopped area

height

Height of the chopped area

x

X origo of the chopped area

y

Y origo of the chopped area

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Using Imagick::chopImage():

Example of using Imagick::chopImage

<?php
/* Create some objects */
$image = new Imagick();
$pixel = new ImagickPixel( 'gray' );

/* New image */
$image->newImage(400, 200, $pixel);

/* Chop image */
$image->chopImage(200, 200, 0, 0);

/* Give image a format */
$image->setImageFormat('png');

/* Output the image with headers */
header('Content-type: image/png');
echo $image;

?>

参见

  • Imagick::cropImage() - 截图图片的一块区域

Imagick::charcoalImage
Imagick::clampImage
Imagick


Description

Imagick::chopImage
Imagick::clear
Imagick
PHP Manual

Imagick::clampImage

(No version information available, might only be in Git)

Imagick::clampImage — Description

说明

public void Imagick::clampImage ([ string $CHANNEL = Imagick::CHANNEL_DEFAULT ] )

Restricts the color range from 0 to the quantum depth.

参数

CHANNEL

返回值

Imagick::chopImage
Imagick::clear
Imagick


Clears all resources associated to Imagick object

Imagick::clampImage
Imagick::clipImage
Imagick
PHP Manual

Imagick::clear

(PECL imagick 2.0.0)

Imagick::clear — Clears all resources associated to Imagick object

说明

bool Imagick::clear ( void )

Clears all resources associated to Imagick object

返回值

成功时返回 TRUE。

Imagick::clampImage
Imagick::clipImage
Imagick


Clips along the first path from the 8BIM profile

Imagick::clear
Imagick::clipImagePath
Imagick
PHP Manual

Imagick::clipImage

(PECL imagick 2.0.0)

Imagick::clipImage — Clips along the first path from the 8BIM profile

说明

bool Imagick::clipImage ( void )

Clips along the first path from the 8BIM profile, if present.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::clear
Imagick::clipImagePath
Imagick


Description

Imagick::clipImage
Imagick::clipPathImage
Imagick
PHP Manual

Imagick::clipImagePath

(No version information available, might only be in Git)

Imagick::clipImagePath — Description

说明

public void Imagick::clipImagePath ( string $pathname , string $inside )

Clips along the named paths from the 8BIM profile, if present. Later operations take effect inside the path. Id may be a number if preceded with #, to work on a numbered path, e.g., "#1" to use the first path.

Warning

本函数还未编写文档，仅有参数列表。

参数

pathname

inside

返回值

Imagick::clipImage
Imagick::clipPathImage
Imagick


Clips along the named paths from the 8BIM profile

Imagick::clipImagePath
Imagick::clone
Imagick
PHP Manual

Imagick::clipPathImage

(PECL imagick 2.0.0)

Imagick::clipPathImage — Clips along the named paths from the 8BIM profile

说明

bool Imagick::clipPathImage ( string $pathname , bool $inside )

Clips along the named paths from the 8BIM profile, if present. Later operations take effect inside the path. It may be a number if preceded with #, to work on a numbered path, e.g., "#1" to use the first path.

参数

pathname

The name of the path

inside

If TRUE later operations take effect inside clipping path. Otherwise later operations take effect outside clipping path.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::clipImagePath
Imagick::clone
Imagick


Makes an exact copy of the Imagick object

Imagick::clipPathImage
Imagick::clutImage
Imagick
PHP Manual

Imagick::clone

(PECL imagick 2.0.0)

Imagick::clone — Makes an exact copy of the Imagick object

说明

Imagick Imagick::clone ( void )

Makes an exact copy of the Imagick object.

Warning

This function has been DEPRECATED as of imagick 3.1.0 in favour of using the clone keyword.

范例

Example #1 Imagick object cloning in different versions of imagick

<?php
// Cloning an Imagick object in imagick 2.x and 3.0:
$newImage = $image->clone();

// Cloning an Imagick object from 3.1.0 on:
$newImage = clone $image;
?>

返回值

A copy of the Imagick object is returned.

更新日志

版本 | 说明
3.1.0 | The method was deprecated in favour of the clone keyword.

Imagick::clipPathImage
Imagick::clutImage
Imagick


Replaces colors in the image

Imagick::clone
Imagick::coalesceImages
Imagick
PHP Manual

Imagick::clutImage

(PECL imagick 2.0.0)

Imagick::clutImage — Replaces colors in the image

说明

bool Imagick::clutImage ( Imagick $lookup_table [, float $channel = Imagick::CHANNEL_DEFAULT ] )

Replaces colors in the image from a color lookup table. Optional second parameter to replace colors in a specific channel. 此方法在Imagick基于ImageMagick 6.3.6以上版本编译时可用。

参数

lookup_table

Imagick object containing the color lookup table

channel

The Channeltype constant. When not supplied, default channels are replaced.

返回值

成功时返回 TRUE。

范例

Example #1 Using Imagick::clutImage():

Replace colors in the image from a color lookup table.

<?php
$image = new Imagick('test.jpg');
$clut = new Imagick();
$clut->newImage(1, 1, new ImagickPixel('black'));
$image->clutImage($clut);
$image->writeImage('test_out.jpg');
?>

参见

  • Imagick::adaptiveBlurImage() - Adds adaptive blur filter to image
  • Imagick::motionBlurImage() - Simulates motion blur
  • Imagick::radialBlurImage() - Radial blurs an image

Imagick::clone
Imagick::coalesceImages
Imagick


Composites a set of images

Imagick::clutImage
Imagick::colorFloodfillImage
Imagick
PHP Manual

Imagick::coalesceImages

(PECL imagick 2.0.0)

Imagick::coalesceImages — Composites a set of images

说明

Imagick Imagick::coalesceImages ( void )

Composites a set of images while respecting any page offsets and disposal methods. GIF, MIFF, and MNG animation sequences typically start with an image background and each subsequent image varies in size and offset. Returns a new Imagick object where each image in the sequence is the same size as the first and composited with the next image in the sequence.

返回值

Returns a new Imagick object on success.

错误／异常

错误时抛出 ImagickException。

Imagick::clutImage
Imagick::colorFloodfillImage
Imagick


Changes the color value of any pixel that matches target

Imagick::coalesceImages
Imagick::colorizeImage
Imagick
PHP Manual

Imagick::colorFloodfillImage

(PECL imagick 2.0.0)

Imagick::colorFloodfillImage — Changes the color value of any pixel that matches target

说明

bool Imagick::colorFloodfillImage ( mixed $fill , float $fuzz , mixed $bordercolor , int $x , int $y )

Changes the color value of any pixel that matches target and is an immediate neighbor.

参数

fill

ImagickPixel object containing the fill color

fuzz

The amount of fuzz. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color for the purposes of the floodfill.

bordercolor

ImagickPixel object containing the border color

x

X start position of the floodfill

y

Y start position of the floodfill

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

更新日志

版本 | 说明
2.1.0 | Now allows a string representing the color as first and third parameter. Previous versions allow only an ImagickPixel object.

Imagick::coalesceImages
Imagick::colorizeImage
Imagick


Blends the fill color with the image

Imagick::colorFloodfillImage
Imagick::colorMatrixImage
Imagick
PHP Manual

Imagick::colorizeImage

(PECL imagick 2.0.0)

Imagick::colorizeImage — Blends the fill color with the image

说明

bool Imagick::colorizeImage ( mixed $colorize , mixed $opacity )

Blends the fill color with each pixel in the image.

参数

colorize

ImagickPixel object or a string containing the colorize color

opacity

ImagickPixel object or an float containing the opacity value. 1.0 is fully opaque and 0.0 is fully transparent.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

更新日志

版本 | 说明
2.1.0 | Now allows a string representing the color as the first parameter and a float representing the opacity value as the second parameter. Previous versions allow only an ImagickPixel objects.

范例

Example #1 Imagick::colorizeImage()

<?php
function colorizeImage($imagePath, $color, $opacity) {
    $imagick = new \Imagick(realpath($imagePath));
    $opacity = $opacity / 255.0;
    $opacityColor = new \ImagickPixel("rgba(0, 0, 0, $opacity)");
    $imagick->colorizeImage($color, $opacityColor);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::colorFloodfillImage
Imagick::colorMatrixImage
Imagick


Description

Imagick::colorizeImage
Imagick::combineImages
Imagick
PHP Manual

Imagick::colorMatrixImage

(No version information available, might only be in Git)

Imagick::colorMatrixImage — Description

说明

public void Imagick::colorMatrixImage ( string $color_matrix = Imagick::CHANNEL_DEFAULT )

Apply color transformation to an image. The method permits saturation changes, hue rotation, luminance to alpha, and various other effects. Although variable-sized transformation matrices can be used, typically one uses a 5x5 matrix for an RGBA image and a 6x6 for CMYKA (or RGBA with offsets). The matrix is similar to those used by Adobe Flash except offsets are in column 6 rather than 5 (in support of CMYKA images) and offsets are normalized (divide Flash offset by 255)

参数

color_matrix

返回值

范例

Example #1 Imagick::colorMatrixImage()

<?php
function colorMatrixImage($imagePath, $colorMatrix) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->setImageOpacity(1);

    //A color matrix should look like:
    //    $colorMatrix = [
    //        1.5, 0.0, 0.0, 0.0, 0.0, -0.157,
    //        0.0, 1.0, 0.5, 0.0, 0.0, -0.157,
    //        0.0, 0.0, 1.5, 0.0, 0.0, -0.157,
    //        0.0, 0.0, 0.0, 1.0, 0.0,  0.0,
    //        0.0, 0.0, 0.0, 0.0, 1.0,  0.0,
    //        0.0, 0.0, 0.0, 0.0, 0.0,  1.0
    //    ];

    $background = new \Imagick();
    $background->newPseudoImage($imagick->getImageWidth(), $imagick->getImageHeight(),  "pattern:checkerboard");

    $background->setImageFormat('png');

    $imagick->setImageFormat('png');
    $imagick->colorMatrixImage($colorMatrix);

    $background->compositeImage($imagick, \Imagick::COMPOSITE_ATOP, 0, 0);

    header("Content-Type: image/png");
    echo $background->getImageBlob();
}

?>

Imagick::colorizeImage
Imagick::combineImages
Imagick


Combines one or more images into a single image

Imagick::colorMatrixImage
Imagick::commentImage
Imagick
PHP Manual

Imagick::combineImages

(PECL imagick 2.0.0)

Imagick::combineImages — Combines one or more images into a single image

说明

Imagick Imagick::combineImages ( int $channelType )

Combines one or more images into a single image. The grayscale value of the pixels of each image in the sequence is assigned in order to the specified channels of the combined image. The typical ordering would be image 1 => Red, 2 => Green, 3 => Blue, etc.

参数

channelType

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators. Refer to this list of channel constants.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::colorMatrixImage
Imagick::commentImage
Imagick


Adds a comment to your image

Imagick::combineImages
Imagick::compareImageChannels
Imagick
PHP Manual

Imagick::commentImage

(PECL imagick 2.0.0)

Imagick::commentImage — Adds a comment to your image

说明

bool Imagick::commentImage ( string $comment )

Adds a comment to your image.

参数

comment

The comment to add

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Using Imagick::commentImage():

Commenting an image and retrieving the comment:

<?php

/* Create new Imagick object */
$im = new imagick();

/* Create an empty image */
$im->newImage(100, 100, new ImagickPixel("red"));

/* Add comment to the image */
$im->commentImage("Hello World!");

/* Display the comment */
echo $im->getImageProperty("comment");

?>

Imagick::combineImages
Imagick::compareImageChannels
Imagick


Returns the difference in one or more images

Imagick::commentImage
Imagick::compareImageLayers
Imagick
PHP Manual

Imagick::compareImageChannels

(PECL imagick 2.0.0)

Imagick::compareImageChannels — Returns the difference in one or more images

说明

array Imagick::compareImageChannels ( Imagick $image , int $channelType , int $metricType )

Compares one or more images and returns the difference image.

参数

image

Imagick object containing the image to compare.

channelType

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators. Refer to this list of channel constants.

metricType

One of the metric type constants.

返回值

Array consisting of new_wand and distortion.

错误／异常

错误时抛出 ImagickException。

Imagick::commentImage
Imagick::compareImageLayers
Imagick


Returns the maximum bounding region between images

Imagick::compareImageChannels
Imagick::compareImages
Imagick
PHP Manual

Imagick::compareImageLayers

(PECL imagick 2.0.0)

Imagick::compareImageLayers — Returns the maximum bounding region between images

说明

Imagick Imagick::compareImageLayers ( int $method )

Compares each image with the next in a sequence and returns the maximum bounding region of any pixel differences it discovers. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

参数

method

One of the layer method constants.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Using Imagick::compareImageLayers()

Comparing image layers

<?php
/* create new imagick object */
$im = new Imagick("test.gif");

/* optimize the image layers */
$result = $im->compareImageLayers(imagick::LAYERMETHOD_COALESCE);

/* work on the $result */
?>

参见

  • Imagick::optimizeImageLayers() - Removes repeated portions of images to optimize
  • Imagick::writeImages() - Writes an image or image sequence
  • Imagick::writeImage() - 把图片写入指定的文件

Imagick::compareImageChannels
Imagick::compareImages
Imagick


Compares an image to a reconstructed image

Imagick::compareImageLayers
Imagick::compositeImage
Imagick
PHP Manual

Imagick::compareImages

(PECL imagick 2.0.0)

Imagick::compareImages — Compares an image to a reconstructed image

说明

array Imagick::compareImages ( Imagick $compare , int $metric )

Returns an array containing a reconstructed image and the difference between images.

参数

compare

An image to compare to.

metric

Provide a valid metric type constant. Refer to this list of metric constants.

返回值

Returns an array containing a reconstructed image and the difference between images.

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Using Imagick::compareImages():

Compare images and display the reconstructed image

<?php

$image1 = new imagick("image1.png");
$image2 = new imagick("image2.png");

$result = $image1->compareImages($image2, Imagick::METRIC_MEANSQUAREERROR);
$result[0]->setImageFormat("png");

header("Content-Type: image/png");
echo $result[0];

?>

Imagick::compareImageLayers
Imagick::compositeImage
Imagick


把一张图合并到一张图

Imagick::compareImages
Imagick::__construct
Imagick
PHP Manual

Imagick::compositeImage

(PECL imagick 2.0.0)

Imagick::compositeImage — 把一张图合并到一张图

说明

bool Imagick::compositeImage ( Imagick $composite_object , int $composite , int $x , int $y [, int $channel = Imagick::CHANNEL_ALL ] )

把一张图合并到另一张图的指定位置

参数

composite_object

用于合并的图片的Imagick对象

composite

合并操作，定义操作常量。 具体请查看 合并操作常量列表

x

相对图像顶点左上位置（0,0）的横坐标

y

相对图像顶点左上位置（0,0）的纵坐标

channel

通过传入一个通道常量，来开启通道模式。为了支持多个通道，可以通过二进制运算的操作来合并多个通道常量。（Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators）可以参考这个列表 通道常量列表.

返回值

成功时返回 TRUE。

Imagick::compareImages
Imagick::__construct
Imagick


The Imagick constructor

Imagick::compositeImage
Imagick::contrastImage
Imagick
PHP Manual

Imagick::__construct

(PECL imagick 2.0.0)

Imagick::__construct — The Imagick constructor

说明

Imagick::__construct ( mixed $files )

Creates an Imagick instance for a specified image or set of images.

参数

files

The path to an image to load or an array of paths. Paths can include wildcards for file names, or can be URLs.

返回值

Returns a new Imagick object on success.

错误／异常

错误时抛出 ImagickException。

Imagick::compositeImage
Imagick::contrastImage
Imagick


Change the contrast of the image

Imagick::__construct
Imagick::contrastStretchImage
Imagick
PHP Manual

Imagick::contrastImage

(PECL imagick 2.0.0)

Imagick::contrastImage — Change the contrast of the image

说明

bool Imagick::contrastImage ( bool $sharpen )

Enhances the intensity differences between the lighter and darker elements of the image. Set sharpen to a value other than 0 to increase the image contrast otherwise the contrast is reduced.

参数

sharpen

The sharpen value

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::contrastImage()

<?php
function contrastImage($imagePath, $contrastType) {
    $imagick = new \Imagick(realpath($imagePath));
    if ($contrastType != 2) {
        $imagick->contrastImage($contrastType);
    }

    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::__construct
Imagick::contrastStretchImage
Imagick


Enhances the contrast of a color image

Imagick::contrastImage
Imagick::convolveImage
Imagick
PHP Manual

Imagick::contrastStretchImage

(PECL imagick 2.0.0)

Imagick::contrastStretchImage — Enhances the contrast of a color image

说明

bool Imagick::contrastStretchImage ( float $black_point , float $white_point [, int $channel = Imagick::CHANNEL_ALL ] )

Enhances the contrast of a color image by adjusting the pixels color to span the entire range of colors available. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

参数

black_point

The black point.

white_point

The white point.

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators. Imagick::CHANNEL_ALL. Refer to this list of channel constants.

返回值

成功时返回 TRUE。

Imagick::contrastImage
Imagick::convolveImage
Imagick


Applies a custom convolution kernel to the image

Imagick::contrastStretchImage
Imagick::count
Imagick
PHP Manual

Imagick::convolveImage

(PECL imagick 2.0.0)

Imagick::convolveImage — Applies a custom convolution kernel to the image

说明

bool Imagick::convolveImage ( array $kernel [, int $channel = Imagick::CHANNEL_ALL ] )

Applies a custom convolution kernel to the image.

参数

kernel

The convolution kernel

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators. Refer to this list of channel constants.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::convolveImage()

<?php
function convolveImage($imagePath, $bias, $kernelMatrix) {
    $imagick = new \Imagick(realpath($imagePath));
    //$edgeFindingKernel = [-1, -1, -1, -1, 8, -1, -1, -1, -1,];
    $imagick->setImageBias($bias * \Imagick::getQuantum());
    $imagick->convolveImage($kernelMatrix);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::contrastStretchImage
Imagick::count
Imagick


Description

Imagick::convolveImage
Imagick::cropImage
Imagick
PHP Manual

Imagick::count

(No version information available, might only be in Git)

Imagick::count — Description

说明

public void Imagick::count ([ string $mode ] )

Returns the number of images.

参数

mode

An unused argument. Currently there is a non-particularly well defined feature in PHP where calling count() on a countable object might (or might not) require this method to accept a parameter. This parameter is here to be conformant with the interface of countable, even though the param is not used.

返回值

Imagick::convolveImage
Imagick::cropImage
Imagick


截图图片的一块区域

Imagick::count
Imagick::cropThumbnailImage
Imagick
PHP Manual

Imagick::cropImage

(PECL imagick 2.0.0)

Imagick::cropImage — 截图图片的一块区域

说明

bool Imagick::cropImage ( int $width , int $height , int $x , int $y )

截图图片的一块区域

参数

width

截图的宽度

height

截图的高度

x

裁剪区域左上角的 X 轴坐标（以原图的左上角为原点）

y

裁剪区域左上角的 X 轴坐标（以原图的左上角为原点）

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::cropImage()

<?php
function cropImage($imagePath, $startX, $startY, $width, $height) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->cropImage($width, $height, $startX, $startY);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::count
Imagick::cropThumbnailImage
Imagick


创建缩略图

Imagick::cropImage
Imagick::current
Imagick
PHP Manual

Imagick::cropThumbnailImage

(PECL imagick 2.0.0)

Imagick::cropThumbnailImage — 创建缩略图

说明

bool Imagick::cropThumbnailImage ( int $width , int $height )

首先将图片放大或者缩小，然后从图片的中间裁剪到指定的的大小。

参数

width

缩略图的宽

height

缩略图的高

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::cropImage
Imagick::current
Imagick


Returns a reference to the current Imagick object

Imagick::cropThumbnailImage
Imagick::cycleColormapImage
Imagick
PHP Manual

Imagick::current

(PECL imagick 2.0.0)

Imagick::current — Returns a reference to the current Imagick object

说明

Imagick Imagick::current ( void )

Returns reference to the current imagick object with image pointer at the correct sequence.

返回值

Returns self on success.

错误／异常

错误时抛出 ImagickException。

Imagick::cropThumbnailImage
Imagick::cycleColormapImage
Imagick


Displaces an image's colormap

Imagick::current
Imagick::decipherImage
Imagick
PHP Manual

Imagick::cycleColormapImage

(PECL imagick 2.0.0)

Imagick::cycleColormapImage — Displaces an image's colormap

说明

bool Imagick::cycleColormapImage ( int $displace )

Displaces an image's colormap by a given number of positions. If you cycle the colormap a number of times you can produce a psychedelic effect.

参数

displace

The amount to displace the colormap.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::current
Imagick::decipherImage
Imagick


Deciphers an image

Imagick::cycleColormapImage
Imagick::deconstructImages
Imagick
PHP Manual

Imagick::decipherImage

(No version information available, might only be in Git)

Imagick::decipherImage — Deciphers an image

说明

bool Imagick::decipherImage ( string $passphrase )

Deciphers image that has been enciphered before. The image must be enciphered using Imagick::encipherImage(). 此方法在Imagick基于ImageMagick 6.3.9以上版本编译时可用。

参数

passphrase

The passphrase

返回值

成功时返回 TRUE。

参见

  • Imagick::encipherImage() - Enciphers an image

Imagick::cycleColormapImage
Imagick::deconstructImages
Imagick


Returns certain pixel differences between images

Imagick::decipherImage
Imagick::deleteImageArtifact
Imagick
PHP Manual

Imagick::deconstructImages

(PECL imagick 2.0.0)

Imagick::deconstructImages — Returns certain pixel differences between images

说明

Imagick Imagick::deconstructImages ( void )

Compares each image with the next in a sequence and returns the maximum bounding region of any pixel differences it discovers.

返回值

Returns a new Imagick object on success.

错误／异常

错误时抛出 ImagickException。

Imagick::decipherImage
Imagick::deleteImageArtifact
Imagick


Delete image artifact

Imagick::deconstructImages
Imagick::deleteImageProperty
Imagick
PHP Manual

Imagick::deleteImageArtifact

(No version information available, might only be in Git)

Imagick::deleteImageArtifact — Delete image artifact

说明

bool Imagick::deleteImageArtifact ( string $artifact )

Deletes an artifact associated with the image. The difference between image properties and image artifacts is that properties are public and artifacts are private. 此方法在Imagick基于ImageMagick 6.5.7以上版本编译时可用。

参数

artifact

The name of the artifact to delete

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

参见

  • Imagick::setImageArtifact() - Set image artifact
  • Imagick::getImageArtifact() - Get image artifact

Imagick::deconstructImages
Imagick::deleteImageProperty
Imagick


Description

Imagick::deleteImageArtifact
Imagick::deskewImage
Imagick
PHP Manual

Imagick::deleteImageProperty

(No version information available, might only be in Git)

Imagick::deleteImageProperty — Description

说明

public void Imagick::deleteImageProperty ( string $name )

Deletes an image property.

参数

name

The name of the property to delete.

返回值

Imagick::deleteImageArtifact
Imagick::deskewImage
Imagick


Removes skew from the image

Imagick::deleteImageProperty
Imagick::despeckleImage
Imagick
PHP Manual

Imagick::deskewImage

(No version information available, might only be in Git)

Imagick::deskewImage — Removes skew from the image

说明

public bool Imagick::deskewImage ( float $threshold )

This method can be used to remove skew from for example scanned images where the paper was not properly placed on the scanning surface. 此方法在Imagick基于ImageMagick 6.4.5以上版本编译时可用。

参数

threshold

Deskew threshold

返回值

范例

Example #1 Imagick::deskewImage()

<?php
function deskewImage($threshold) {
    $imagick = new \Imagick(realpath("images/NYTimes-Page1-11-11-1918.jpg"));
    $deskewImagick = clone $imagick;

    //This is the only thing required for deskewing.
    $deskewImagick->deskewImage($threshold);

    //The rest of this example is to make the result obvious - because
    //otherwise the result is not obvious.
    $trim = 9;

    $deskewImagick->cropImage($deskewImagick->getImageWidth() - $trim, $deskewImagick->getImageHeight(), $trim, 0);
    $imagick->cropImage($imagick->getImageWidth() - $trim, $imagick->getImageHeight(), $trim, 0);
    $deskewImagick->resizeimage($deskewImagick->getImageWidth() / 2, $deskewImagick->getImageHeight() / 2, \Imagick::FILTER_LANCZOS, 1);
    $imagick->resizeimage($imagick->getImageWidth() / 2, $imagick->getImageHeight() / 2, \Imagick::FILTER_LANCZOS, 1);
    $newCanvas = new \Imagick();
    $newCanvas->newimage($imagick->getImageWidth() + $deskewImagick->getImageWidth() + 20, $imagick->getImageHeight(), 'red', 'jpg');
    $newCanvas->compositeimage($imagick, \Imagick::COMPOSITE_COPY, 5, 0);
    $newCanvas->compositeimage($deskewImagick, \Imagick::COMPOSITE_COPY, $imagick->getImageWidth() + 10, 0);

    header("Content-Type: image/jpg");
    echo $newCanvas->getImageBlob();
}

?>

Imagick::deleteImageProperty
Imagick::despeckleImage
Imagick


Reduces the speckle noise in an image

Imagick::deskewImage
Imagick::destroy
Imagick
PHP Manual

Imagick::despeckleImage

(PECL imagick 2.0.0)

Imagick::despeckleImage — Reduces the speckle noise in an image

说明

bool Imagick::despeckleImage ( void )

Reduces the speckle noise in an image while preserving the edges of the original image.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::despeckleImage()

<?php
function despeckleImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->despeckleImage();
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::deskewImage
Imagick::destroy
Imagick


Destroys the Imagick object

Imagick::despeckleImage
Imagick::displayImage
Imagick
PHP Manual

Imagick::destroy

(PECL imagick 2.0.0)

Imagick::destroy — Destroys the Imagick object

说明

bool Imagick::destroy ( void )

Destroys the Imagick object and frees all resources associated with it. This method is deprecated in favour of Imagick::clear.

返回值

成功时返回 TRUE。

Imagick::despeckleImage
Imagick::displayImage
Imagick


Displays an image

Imagick::destroy
Imagick::displayImages
Imagick
PHP Manual

Imagick::displayImage

(PECL imagick 2.0.0)

Imagick::displayImage — Displays an image

说明

bool Imagick::displayImage ( string $servername )

This method displays an image on a X server.

参数

servername

The X server name

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::destroy
Imagick::displayImages
Imagick


Displays an image or image sequence

Imagick::displayImage
Imagick::distortImage
Imagick
PHP Manual

Imagick::displayImages

(PECL imagick 2.0.0)

Imagick::displayImages — Displays an image or image sequence

说明

bool Imagick::displayImages ( string $servername )

Displays an image or image sequence on a X server.

参数

servername

The X server name

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::displayImage
Imagick::distortImage
Imagick


Distorts an image using various distortion methods

Imagick::displayImages
Imagick::drawImage
Imagick
PHP Manual

Imagick::distortImage

(PECL imagick 2.0.1)

Imagick::distortImage — Distorts an image using various distortion methods

说明

bool Imagick::distortImage ( int $method , array $arguments , bool $bestfit )

Distorts an image using various distortion methods, by mapping color lookups of the source image to a new destination image usually of the same size as the source image, unless 'bestfit' is set to TRUE.

If 'bestfit' is enabled, and distortion allows it, the destination image is adjusted to ensure the whole source 'image' will just fit within the final destination image, which will be sized and offset accordingly. Also in many cases the virtual offset of the source image will be taken into account in the mapping.

此方法在Imagick基于ImageMagick 6.3.6以上版本编译时可用。

参数

method

The method of image distortion. See distortion constants

arguments

The arguments for this distortion method

bestfit

Attempt to resize destination to fit distorted source

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Using Imagick::distortImage():

Distort an image and display to the browser.

<?php
/* Create new object */
$im = new Imagick();

/* Create new checkerboard pattern */
$im->newPseudoImage(100, 100, "pattern:checkerboard");

/* Set the image format to png */
$im->setImageFormat('png');

/* Fill new visible areas with transparent */
$im->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);

/* Activate matte */
$im->setImageMatte(true);

/* Control points for the distortion */
$controlPoints = array( 10, 10,
                        10, 5,

                        10, $im->getImageHeight() - 20,
                        10, $im->getImageHeight() - 5,

                        $im->getImageWidth() - 10, 10,
                        $im->getImageWidth() - 10, 20,

                        $im->getImageWidth() - 10, $im->getImageHeight() - 10,
                        $im->getImageWidth() - 10, $im->getImageHeight() - 30);

/* Perform the distortion */
$im->distortImage(Imagick::DISTORTION_PERSPECTIVE, $controlPoints, true);

/* Ouput the image */
header("Content-Type: image/png");
echo $im;
?>

以上例程的输出类似于：

Output of example : Using Imagick::distortImage()

参见

  • Imagick::blurImage() - Adds blur filter to image
  • Imagick::motionBlurImage() - Simulates motion blur
  • Imagick::radialBlurImage() - Radial blurs an image

Imagick::displayImages
Imagick::drawImage
Imagick


把 ImagickDraw 对象渲染到当前图片上

Imagick::distortImage
Imagick::edgeImage
Imagick
PHP Manual

Imagick::drawImage

(PECL imagick 2.0.0)

Imagick::drawImage — 把 ImagickDraw 对象渲染到当前图片上

说明

bool Imagick::drawImage ( ImagickDraw $draw )

把 ImagickDraw 对象渲染到当前图片上。

参数

draw

被渲染到图片上的 ImagickDraw 对象（在经过各种绘画操作之后的 ImagickDraw 对象）

返回值

成功时返回 TRUE。

Imagick::distortImage
Imagick::edgeImage
Imagick


Enhance edges within the image

Imagick::drawImage
Imagick::embossImage
Imagick
PHP Manual

Imagick::edgeImage

(PECL imagick 2.0.0)

Imagick::edgeImage — Enhance edges within the image

说明

bool Imagick::edgeImage ( float $radius )

Enhance edges within the image with a convolution filter of the given radius. Use radius 0 and it will be auto-selected.

参数

radius

The radius of the operation.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::edgeImage()

<?php
function edgeImage($imagePath, $radius) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->edgeImage($radius);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::drawImage
Imagick::embossImage
Imagick


Returns a grayscale image with a three-dimensional effect

Imagick::edgeImage
Imagick::encipherImage
Imagick
PHP Manual

Imagick::embossImage

(PECL imagick 2.0.0)

Imagick::embossImage — Returns a grayscale image with a three-dimensional effect

说明

bool Imagick::embossImage ( float $radius , float $sigma )

Returns a grayscale image with a three-dimensional effect. We convolve the image with a Gaussian operator of the given radius and standard deviation (sigma). For reasonable results, radius should be larger than sigma. Use a radius of 0 and it will choose a suitable radius for you.

参数

radius

The radius of the effect

sigma

The sigma of the effect

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::embossImage()

<?php
function embossImage($imagePath, $radius, $sigma) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->embossImage($radius, $sigma);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::edgeImage
Imagick::encipherImage
Imagick


Enciphers an image

Imagick::embossImage
Imagick::enhanceImage
Imagick
PHP Manual

Imagick::encipherImage

(No version information available, might only be in Git)

Imagick::encipherImage — Enciphers an image

说明

bool Imagick::encipherImage ( string $passphrase )

Converts plain pixels to enciphered pixels. The image is not readable until it has been deciphered using Imagick::decipherImage() 此方法在Imagick基于ImageMagick 6.3.9以上版本编译时可用。

参数

passphrase

The passphrase

返回值

成功时返回 TRUE。

参见

  • Imagick::decipherImage() - Deciphers an image

Imagick::embossImage
Imagick::enhanceImage
Imagick


Improves the quality of a noisy image

Imagick::encipherImage
Imagick::equalizeImage
Imagick
PHP Manual

Imagick::enhanceImage

(PECL imagick 2.0.0)

Imagick::enhanceImage — Improves the quality of a noisy image

说明

bool Imagick::enhanceImage ( void )

Applies a digital filter that improves the quality of a noisy image.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::enhanceImage()

<?php
function enhanceImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->enhanceImage();
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::encipherImage
Imagick::equalizeImage
Imagick


Equalizes the image histogram

Imagick::enhanceImage
Imagick::evaluateImage
Imagick
PHP Manual

Imagick::equalizeImage

(PECL imagick 2.0.0)

Imagick::equalizeImage — Equalizes the image histogram

说明

bool Imagick::equalizeImage ( void )

Equalizes the image histogram.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::equalizeImage()

<?php
function equalizeImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->equalizeImage();
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::enhanceImage
Imagick::evaluateImage
Imagick


Applies an expression to an image

Imagick::equalizeImage
Imagick::exportImagePixels
Imagick
PHP Manual

Imagick::evaluateImage

(PECL imagick 2.0.0)

Imagick::evaluateImage — Applies an expression to an image

说明

bool Imagick::evaluateImage ( int $op , float $constant [, int $channel = Imagick::CHANNEL_ALL ] )

Applys an arithmetic, relational, or logical expression to an image. Use these operators to lighten or darken an image, to increase or decrease contrast in an image, or to produce the "negative" of an image.

参数

op

The evaluation operator

constant

The value of the operator

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators. Refer to this list of channel constants.

范例

Example #1 Using Imagick::evaluateImage()

Using evaluateImage to reduce opacity in an image.

<?php
// Create new object with the image
$im = new Imagick('example-alpha.png');

// Reduce the alpha by 50%
$im->evaluateImage(Imagick::EVALUATE_DIVIDE, 2, Imagick::CHANNEL_ALPHA);

// Output the image
header("Content-Type: image/png");
echo $im;
?>

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::equalizeImage
Imagick::exportImagePixels
Imagick


Exports raw image pixels

Imagick::evaluateImage
Imagick::extentImage
Imagick
PHP Manual

Imagick::exportImagePixels

(No version information available, might only be in Git)

Imagick::exportImagePixels — Exports raw image pixels

说明

public array Imagick::exportImagePixels ( int $x , int $y , int $width , int $height , string $map , int $STORAGE )

Exports image pixels into an array. The map defines the ordering of the exported pixels. The size of the returned array is width * height * strlen(map). 此方法在Imagick基于ImageMagick 6.4.7以上版本编译时可用。

参数

x

X-coordinate of the exported area

y

Y-coordinate of the exported area

width

Width of the exported aread

height

Height of the exported area

map

Ordering of the exported pixels. For example "RGB". Valid characters for the map are R, G, B, A, O, C, Y, M, K, I and P.

STORAGE

Refer to this list of pixel type constants

范例

Example #1 Using Imagick::exportImagePixels()

Export image pixels into an array

<?php

/* Create new object */
$im = new Imagick();

/* Create new image */
$im->newPseudoImage(0, 0, "magick:rose");

/* Export the image pixels */
$pixels = $im->exportImagePixels(10, 10, 2, 2, "RGB", Imagick::PIXEL_CHAR);

/* Output */
var_dump($pixels);
?>

以上例程会输出：

array(12) {
  [0]=>
  int(72)
  [1]=>
  int(64)
  [2]=>
  int(57)
  [3]=>
  int(69)
  [4]=>
  int(59)
  [5]=>
  int(43)
  [6]=>
  int(124)
  [7]=>
  int(120)
  [8]=>
  int(-96)
  [9]=>
  int(91)
  [10]=>
  int(84)
  [11]=>
  int(111)
}

返回值

Returns an array containing the pixels values.

错误／异常

错误时抛出 ImagickException。

Imagick::evaluateImage
Imagick::extentImage
Imagick


Set image size

Imagick::exportImagePixels
Imagick::filter
Imagick
PHP Manual

Imagick::extentImage

(No version information available, might only be in Git)

Imagick::extentImage — Set image size

说明

bool Imagick::extentImage ( int $width , int $height , int $x , int $y )

Comfortability method for setting image size. The method sets the image size and allows setting x,y coordinates where the new area begins. 此方法在Imagick基于ImageMagick 6.3.1以上版本编译时可用。

Caution

Prior to ImageMagick 6.5.7-8 (1623), $x was positive when shifting to the left and negative when shifting to the right, and $y was positive when shifting an image up and negative when shifting an image down. Somewhere betwen ImageMagick 6.3.7 (1591) and ImageMagick 6.5.7-8 (1623), the axes of $x and $y were flipped, so that $x was negative when shifting to the left and positive when shifting to the right, and $y was negative when shifting an image up and positive when shifting an image down. Somewhere between ImageMagick 6.5.7-8 (1623) and ImageMagick 6.6.9-7 (1641), the axes of $x and $y were flipped back to pre-ImageMagick 6.5.7-8 (1623) functionality.

参数

width

The new width

height

The new height

x

X position for the new size

y

Y position for the new size

返回值

成功时返回 TRUE。

参见

  • Imagick::resizeImage() - Scales an image
  • Imagick::thumbnailImage() - Changes the size of an image
  • Imagick::cropImage() - 截图图片的一块区域

Imagick::exportImagePixels
Imagick::filter
Imagick


Description

Imagick::extentImage
Imagick::flattenImages
Imagick
PHP Manual

Imagick::filter

(No version information available, might only be in Git)

Imagick::filter — Description

说明

public void Imagick::filter ( ImagickKernel $ImagickKernel [, int $CHANNEL = Imagick::CHANNEL_DEFAULT ] )

Applies a custom convolution kernel to the image.

参数

ImagickKernel

An instance of ImagickKernel that represents either a single kernel or a linked series of kernels.

CHANNEL

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. 缺省为Imagick::CHANNEL_DEFAULT. 参考此 通道常数列表

返回值

范例

Example #1 Imagick::filter()

<?php
function filter($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $matrix = [
        [-1, 0, -1],
        [0,  5,  0],
        [-1, 0, -1],
    ];

    $kernel = \ImagickKernel::fromMatrix($matrix);
    $strength = 0.5;
    $kernel->scale($strength, \Imagick::NORMALIZE_KERNEL_VALUE);
    $kernel->addUnityKernel(1 - $strength);

    $imagick->filter($kernel);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::extentImage
Imagick::flattenImages
Imagick


Merges a sequence of images

Imagick::filter
Imagick::flipImage
Imagick
PHP Manual

Imagick::flattenImages

(PECL imagick 2.0.0)

Imagick::flattenImages — Merges a sequence of images

说明

Imagick Imagick::flattenImages ( void )

Merges a sequence of images. This is useful for combining Photoshop layers into a single image.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::filter
Imagick::flipImage
Imagick


Creates a vertical mirror image

Imagick::flattenImages
Imagick::floodFillPaintImage
Imagick
PHP Manual

Imagick::flipImage

(PECL imagick 2.0.0)

Imagick::flipImage — Creates a vertical mirror image

说明

bool Imagick::flipImage ( void )

Creates a vertical mirror image by reflecting the pixels around the central x-axis.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::flipImage()

<?php
function flipImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->flipImage();
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::flattenImages
Imagick::floodFillPaintImage
Imagick


Changes the color value of any pixel that matches target

Imagick::flipImage
Imagick::flopImage
Imagick
PHP Manual

Imagick::floodFillPaintImage

(No version information available, might only be in Git)

Imagick::floodFillPaintImage — Changes the color value of any pixel that matches target

说明

bool Imagick::floodFillPaintImage ( mixed $fill , float $fuzz , mixed $target , int $x , int $y , bool $invert [, int $channel = Imagick::CHANNEL_DEFAULT ] )

Changes the color value of any pixel that matches target and is an immediate neighbor. This method is a replacement for deprecated Imagick::paintFloodFillImage(). 此方法在Imagick基于ImageMagick 6.3.8以上版本编译时可用。

参数

fill

ImagickPixel object or a string containing the fill color

fuzz

The amount of fuzz. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color.

target

ImagickPixel object or a string containing the target color to paint

x

X start position of the floodfill

y

Y start position of the floodfill

invert

If TRUE paints any pixel that does not match the target color.

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. 缺省为Imagick::CHANNEL_DEFAULT. 参考此 通道常数列表

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::floodfillPaintImage() example

<?php

/* Create new imagick object */
$im = new Imagick();

/* create red, green and blue images */
$im->newImage(100, 50, "red");
$im->newImage(100, 50, "green");
$im->newImage(100, 50, "blue");

/* Append the images into one */
$im->resetIterator();
$combined = $im->appendImages(true);

/* Save the intermediate image for comparison */
$combined->writeImage("floodfillpaint_intermediate.png");

/* The target pixel to paint */
$x = 1;
$y = 1;

/* Get the color we are painting */
$target = $combined->getImagePixelColor($x, $y);

/* Paints pixel in position 1,1 black and all neighboring
   pixels that match the target color */
$combined->floodfillPaintImage("black", 1, $target, $x, $y, false);

/* Save the result */
$combined->writeImage("floodfillpaint_result.png");
?>

以上例程的输出类似于：

Output of example : Imagick::floodfillPaintImage()
Output of example : Imagick::floodfillPaintImage()

Imagick::flipImage
Imagick::flopImage
Imagick


Creates a horizontal mirror image

Imagick::floodFillPaintImage
Imagick::forwardFourierTransformImage
Imagick
PHP Manual

Imagick::flopImage

(PECL imagick 2.0.0)

Imagick::flopImage — Creates a horizontal mirror image

说明

bool Imagick::flopImage ( void )

Creates a horizontal mirror image by reflecting the pixels around the central y-axis.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::flopImage()

<?php
function flopImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->flopImage();
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::floodFillPaintImage
Imagick::forwardFourierTransformImage
Imagick


Description

Imagick::flopImage
Imagick::frameImage
Imagick
PHP Manual

Imagick::forwardFourierTransformImage

(No version information available, might only be in Git)

Imagick::forwardFourierTransformImage — Description

说明

public void Imagick::forwardFourierTransformimage ( bool $magnitude )

Implements the discrete Fourier transform (DFT) of the image either as a magnitude / phase or real / imaginary image pair.

参数

magnitude

If true, return as magnitude / phase pair otherwise a real / imaginary image pair.

返回值

范例

Example #1 Imagick::forwardFourierTransformImage()

<?php
//Utility function for forwardTransformImage
function createMask() {
    $draw = new \ImagickDraw();

    $draw->setStrokeOpacity(0);
    $draw->setStrokeColor('rgb(255, 255, 255)');
    $draw->setFillColor('rgb(255, 255, 255)');

    //Draw a circle on the y-axis, with it's centre
    //at x, y that touches the origin
    $draw->circle(250, 250, 220, 250);

    $imagick = new \Imagick();
    $imagick->newImage(512, 512, "black");
    $imagick->drawImage($draw);
    $imagick->gaussianBlurImage(20, 20);
    $imagick->autoLevelImage();

    return $imagick;
}

function forwardFourierTransformImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->resizeimage(512, 512, \Imagick::FILTER_LANCZOS, 1);

    $mask = createMask();
    $imagick->forwardFourierTransformImage(true);

    @$imagick->setimageindex(0);
    $magnitude = $imagick->getimage();

    @$imagick->setimageindex(1);
    $imagickPhase = $imagick->getimage();

    if (true) {
        $imagickPhase->compositeImage($mask, \Imagick::COMPOSITE_MULTIPLY, 0, 0);
    }

    if (false) {
        $output = clone $imagickPhase;
        $output->setimageformat('png');
        header("Content-Type: image/png");
        echo $output->getImageBlob();
    }

    $magnitude->inverseFourierTransformImage($imagickPhase, true);

    $magnitude->setimageformat('png');
    header("Content-Type: image/png");
    echo $magnitude->getImageBlob();
}

?>

Imagick::flopImage
Imagick::frameImage
Imagick


Adds a simulated three-dimensional border

Imagick::forwardFourierTransformImage
Imagick::functionImage
Imagick
PHP Manual

Imagick::frameImage

(PECL imagick 2.0.0)

Imagick::frameImage — Adds a simulated three-dimensional border

说明

bool Imagick::frameImage ( mixed $matte_color , int $width , int $height , int $inner_bevel , int $outer_bevel )

Adds a simulated three-dimensional border around the image. The width and height specify the border width of the vertical and horizontal sides of the frame. The inner and outer bevels indicate the width of the inner and outer shadows of the frame.

参数

matte_color

ImagickPixel object or a string representing the matte color

width

The width of the border

height

The height of the border

inner_bevel

The inner bevel width

outer_bevel

The outer bevel width

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

更新日志

版本 | 说明
2.1.0 | Now allows a string representing the color as the first parameter. Previous versions allow only an ImagickPixel object.

范例

Example #1 Imagick::frameImage()

<?php
function frameImage($imagePath, $color, $width, $height, $innerBevel, $outerBevel) {
    $imagick = new \Imagick(realpath($imagePath));

    $width = $width + $innerBevel + $outerBevel;
    $height = $height + $innerBevel + $outerBevel;

    $imagick->frameimage(
        $color,
        $width,
        $height,
        $innerBevel,
        $outerBevel
    );
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::forwardFourierTransformImage
Imagick::functionImage
Imagick


Applies a function on the image

Imagick::frameImage
Imagick::fxImage
Imagick
PHP Manual

Imagick::functionImage

(No version information available, might only be in Git)

Imagick::functionImage — Applies a function on the image

说明

public bool Imagick::functionImage ( int $function , array $arguments [, int $channel = Imagick::CHANNEL_DEFAULT ] )

Applies an arithmetic, relational, or logical expression to a pseudo image.

See also » ImageMagick v6 Examples - Image Transformations — Function, Multi-Argument Evaluate

此方法在Imagick基于ImageMagick 6.4.9以上版本编译时可用。

参数

function

Refer to this list of function constants

arguments

Array of arguments to pass to this function.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Create a sinusoidal gradient

<?php
$imagick = new Imagick();
$imagick->newPseudoImage(200, 200, 'gradient:black-white');
$arguments = array(3, -90);
$imagick->functionImage(Imagick::FUNCTION_SINUSOID, $arguments);

header("Content-Type: image/png");
$imagick->setImageFormat("png");
echo $imagick->getImageBlob();
?>

以上例程的输出类似于：

Output of create a sinusoidal gradient

Example #2 Create a gradient from the polynomial (4x^2 - 4x + 1)

<?php
$imagick = new Imagick();
$imagick->newPseudoImage(200, 200, 'gradient:black-white');
$arguments = array(4, -4, 1);
$imagick->functionImage(Imagick::FUNCTION_POLYNOMIAL, $arguments);

header("Content-Type: image/png");
$imagick->setimageformat("png");
echo $imagick->getImageBlob();
?>

以上例程的输出类似于：

Output of create a polynomial gradient

Example #3 Create a complex gradient from the polynomial (4x^2 - 4x^2 + 1) modulated by a sinusoidal gradient

<?php
$imagick1 = new Imagick();
$imagick1->newPseudoImage(200, 200, 'gradient:black-white');
$arguments = array(9, -90);
$imagick1->functionImage(Imagick::FUNCTION_SINUSOID, $arguments);

$imagick2 = new Imagick();
$imagick2->newPseudoImage(200, 200, 'gradient:black-white');
$arguments = array(0.5, 0);
$imagick2->functionImage(Imagick::FUNCTION_SINUSOID, $arguments);
$imagick1->compositeimage($imagick2, Imagick::COMPOSITE_MULTIPLY, 0, 0);

header("Content-Type: image/png");
$imagick1->setImageFormat("png");
echo $imagick1->getImageBlob();
?>

以上例程的输出类似于：

Output of create complex gradient

Imagick::frameImage
Imagick::fxImage
Imagick


Evaluate expression for each pixel in the image

Imagick::functionImage
Imagick::gammaImage
Imagick
PHP Manual

Imagick::fxImage

(PECL imagick 2.0.0)

Imagick::fxImage — Evaluate expression for each pixel in the image

说明

Imagick Imagick::fxImage ( string $expression [, int $channel = Imagick::CHANNEL_ALL ] )

Evaluate expression for each pixel in the image. Consult » The Fx Special Effects Image Operator for more information.

参数

expression

The expression.

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators. Refer to this list of channel constants.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::fxImage()

<?php
function fxImage() {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(200, 200, "xc:white");

    $fx = 'xx=i-w/2; yy=j-h/2; rr=hypot(xx,yy); (.5-rr/140)*1.2+.5';
    $fxImage = $imagick->fxImage($fx);

    header("Content-Type: image/png");
    $fxImage->setimageformat('png');
    echo $fxImage->getImageBlob();
}

?>

Imagick::functionImage
Imagick::gammaImage
Imagick


Gamma-corrects an image

Imagick::fxImage
Imagick::gaussianBlurImage
Imagick
PHP Manual

Imagick::gammaImage

(PECL imagick 2.0.0)

Imagick::gammaImage — Gamma-corrects an image

说明

bool Imagick::gammaImage ( float $gamma [, int $channel = Imagick::CHANNEL_ALL ] )

Gamma-corrects an image. The same image viewed on different devices will have perceptual differences in the way the image's intensities are represented on the screen. Specify individual gamma levels for the red, green, and blue channels, or adjust all three with the gamma parameter. Values typically range from 0.8 to 2.3.

参数

gamma

The amount of gamma-correction.

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators. Refer to this list of channel constants.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::gammaImage()

<?php
function gammaImage($imagePath, $gamma, $channel) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->gammaImage($gamma, $channel);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::fxImage
Imagick::gaussianBlurImage
Imagick


Blurs an image

Imagick::gammaImage
Imagick::getColorspace
Imagick
PHP Manual

Imagick::gaussianBlurImage

(PECL imagick 2.0.0)

Imagick::gaussianBlurImage — Blurs an image

说明

bool Imagick::gaussianBlurImage ( float $radius , float $sigma [, int $channel = Imagick::CHANNEL_ALL ] )

Blurs an image. We convolve the image with a Gaussian operator of the given radius and standard deviation (sigma). For reasonable results, the radius should be larger than sigma. Use a radius of 0 and selects a suitable radius for you.

参数

radius

The radius of the Gaussian, in pixels, not counting the center pixel.

sigma

The standard deviation of the Gaussian, in pixels.

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators. Refer to this list of channel constants.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::gaussianBlurImage()

<?php
function gaussianBlurImage($imagePath, $radius, $sigma, $channel) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->gaussianBlurImage($radius, $sigma, $channel);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::gammaImage
Imagick::getColorspace
Imagick


Gets the colorspace

Imagick::gaussianBlurImage
Imagick::getCompression
Imagick
PHP Manual

Imagick::getColorspace

(PECL imagick 0.9.10-0.9.9)

Imagick::getColorspace — Gets the colorspace

说明

int Imagick::getColorspace ( void )

Gets the global colorspace value. 此方法在Imagick基于ImageMagick 6.5.7以上版本编译时可用。

返回值

Returns an integer which can be compared against COLORSPACE constants.

Imagick::gaussianBlurImage
Imagick::getCompression
Imagick


Gets the object compression type

Imagick::getColorspace
Imagick::getCompressionQuality
Imagick
PHP Manual

Imagick::getCompression

(PECL imagick 2.0.0)

Imagick::getCompression — Gets the object compression type

说明

int Imagick::getCompression ( void )

Gets the object compression type.

返回值

Returns the compression constant

Imagick::getColorspace
Imagick::getCompressionQuality
Imagick


Gets the object compression quality

Imagick::getCompression
Imagick::getCopyright
Imagick
PHP Manual

Imagick::getCompressionQuality

(PECL imagick 2.0.0)

Imagick::getCompressionQuality — Gets the object compression quality

说明

int Imagick::getCompressionQuality ( void )

Gets the object compression quality.

返回值

Returns integer describing the compression quality

Imagick::getCompression
Imagick::getCopyright
Imagick


Returns the ImageMagick API copyright as a string

Imagick::getCompressionQuality
Imagick::getFilename
Imagick
PHP Manual

Imagick::getCopyright

(PECL imagick 2.0.0)

Imagick::getCopyright — Returns the ImageMagick API copyright as a string

说明

string Imagick::getCopyright ( void )

Returns the ImageMagick API copyright as a string.

返回值

Returns a string containing the copyright notice of Imagemagick and Magickwand C API.

Imagick::getCompressionQuality
Imagick::getFilename
Imagick


The filename associated with an image sequence

Imagick::getCopyright
Imagick::getFont
Imagick
PHP Manual

Imagick::getFilename

(PECL imagick 2.0.0)

Imagick::getFilename — The filename associated with an image sequence

说明

string Imagick::getFilename ( void )

Returns the filename associated with an image sequence.

返回值

Returns a string on success.

错误／异常

错误时抛出 ImagickException。

Imagick::getCopyright
Imagick::getFont
Imagick


Gets font

Imagick::getFilename
Imagick::getFormat
Imagick
PHP Manual

Imagick::getFont

(PECL imagick 2.1.0)

Imagick::getFont — Gets font

说明

string Imagick::getFont ( void )

Returns the objects font property. 此方法在Imagick基于ImageMagick 6.3.7以上版本编译时可用。

返回值

Returns the string containing the font name or FALSE if not font is set.

参见

  • Imagick::setFont() - Sets font
  • ImagickDraw::setFont() - Sets the fully-specified font to use when annotating with text
  • ImagickDraw::getFont() - Returns the font

Imagick::getFilename
Imagick::getFormat
Imagick


Returns the format of the Imagick object

Imagick::getFont
Imagick::getGravity
Imagick
PHP Manual

Imagick::getFormat

(PECL imagick 2.0.0)

Imagick::getFormat — Returns the format of the Imagick object

说明

string Imagick::getFormat ( void )

Returns the format of the Imagick object.

返回值

Returns the format of the image.

错误／异常

错误时抛出 ImagickException。

Imagick::getFont
Imagick::getGravity
Imagick


Gets the gravity

Imagick::getFormat
Imagick::getHomeURL
Imagick
PHP Manual

Imagick::getGravity

(No version information available, might only be in Git)

Imagick::getGravity — Gets the gravity

说明

int Imagick::getGravity ( void )

Gets the global gravity property for the Imagick object. 此方法在Imagick基于ImageMagick 6.4.0以上版本编译时可用。

返回值

Returns the gravity property. Refer to the list of gravity constants.

Imagick::getFormat
Imagick::getHomeURL
Imagick


Returns the ImageMagick home URL

Imagick::getGravity
Imagick::getImage
Imagick
PHP Manual

Imagick::getHomeURL

(PECL imagick 2.0.0)

Imagick::getHomeURL — Returns the ImageMagick home URL

说明

string Imagick::getHomeURL ( void )

Returns the ImageMagick home URL.

返回值

Returns a link to the imagemagick homepage.

Imagick::getGravity
Imagick::getImage
Imagick


Returns a new Imagick object

Imagick::getHomeURL
Imagick::getImageAlphaChannel
Imagick
PHP Manual

Imagick::getImage

(PECL imagick 2.0.0)

Imagick::getImage — Returns a new Imagick object

说明

Imagick Imagick::getImage ( void )

Returns a new Imagick object with the current image sequence.

返回值

Returns a new Imagick object with the current image sequence.

错误／异常

错误时抛出 ImagickException。

Imagick::getHomeURL
Imagick::getImageAlphaChannel
Imagick


获取图像的 alpha 通道

Imagick::getImage
Imagick::getImageArtifact
Imagick
PHP Manual

Imagick::getImageAlphaChannel

(No version information available, might only be in Git)

Imagick::getImageAlphaChannel — 获取图像的 alpha 通道

说明

int Imagick::getImageAlphaChannel ( void )

获取图像的alpha通道值，为以下常量之一 alpha channel constants. 此方法在Imagick基于ImageMagick 6.4.0以上版本编译时可用。

返回值

返回当前图像的alpha通道值，该值是一个常量。该参考常量列表 alpha channel constants.

错误／异常

错误时抛出 ImagickException。

Imagick::getImage
Imagick::getImageArtifact
Imagick


Get image artifact

Imagick::getImageAlphaChannel
Imagick::getImageAttribute
Imagick
PHP Manual

Imagick::getImageArtifact

(No version information available, might only be in Git)

Imagick::getImageArtifact — Get image artifact

说明

string Imagick::getImageArtifact ( string $artifact )

Gets an artifact associated with the image. The difference between image properties and image artifacts is that properties are public and artifacts are private. 此方法在Imagick基于ImageMagick 6.5.7以上版本编译时可用。

参数

artifact

The name of the artifact

返回值

Returns the artifact value on success.

错误／异常

错误时抛出 ImagickException。

参见

  • Imagick::setImageArtifact() - Set image artifact
  • Imagick::deleteImageArtifact() - Delete image artifact

Imagick::getImageAlphaChannel
Imagick::getImageAttribute
Imagick


Description

Imagick::getImageArtifact
Imagick::getImageBackgroundColor
Imagick
PHP Manual

Imagick::getImageAttribute

(No version information available, might only be in Git)

Imagick::getImageAttribute — Description

说明

public string Imagick::getImageAttribute ( string $key )

Returns a named attribute.

参数

key

The key of the attribute to get.

返回值

Imagick::getImageArtifact
Imagick::getImageBackgroundColor
Imagick


Returns the image background color

Imagick::getImageAttribute
Imagick::getImageBlob
Imagick
PHP Manual

Imagick::getImageBackgroundColor

(PECL imagick 2.0.0)

Imagick::getImageBackgroundColor — Returns the image background color

说明

ImagickPixel Imagick::getImageBackgroundColor ( void )

Returns the image background color.

返回值

Returns an ImagickPixel set to the background color of the image.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageAttribute
Imagick::getImageBlob
Imagick


Returns the image sequence as a blob

Imagick::getImageBackgroundColor
Imagick::getImageBluePrimary
Imagick
PHP Manual

Imagick::getImageBlob

(PECL imagick 2.0.0)

Imagick::getImageBlob — Returns the image sequence as a blob

说明

string Imagick::getImageBlob ( void )

Implements direct to memory image formats. It returns the image sequence as a string. The format of the image determines the format of the returned blob (GIF, JPEG, PNG, etc.). To return a different image format, use Imagick::setImageFormat().

返回值

Returns a string containing the image.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageBackgroundColor
Imagick::getImageBluePrimary
Imagick


Returns the chromaticy blue primary point

Imagick::getImageBlob
Imagick::getImageBorderColor
Imagick
PHP Manual

Imagick::getImageBluePrimary

(PECL imagick 2.0.0)

Imagick::getImageBluePrimary — Returns the chromaticy blue primary point

说明

array Imagick::getImageBluePrimary ( void )

Returns the chromaticity blue primary point for the image.

参数

x

The chromaticity blue primary x-point.

y

The chromaticity blue primary y-point.

返回值

Array consisting of "x" and "y" coordinates of point.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageBlob
Imagick::getImageBorderColor
Imagick


Returns the image border color

Imagick::getImageBluePrimary
Imagick::getImageChannelDepth
Imagick
PHP Manual

Imagick::getImageBorderColor

(PECL imagick 2.0.0)

Imagick::getImageBorderColor — Returns the image border color

说明

ImagickPixel Imagick::getImageBorderColor ( void )

Returns the image border color.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::getImageBluePrimary
Imagick::getImageChannelDepth
Imagick


Gets the depth for a particular image channel

Imagick::getImageBorderColor
Imagick::getImageChannelDistortion
Imagick
PHP Manual

Imagick::getImageChannelDepth

(PECL imagick 2.0.0)

Imagick::getImageChannelDepth — Gets the depth for a particular image channel

说明

int Imagick::getImageChannelDepth ( int $channel )

Gets the depth for a particular image channel.

参数

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. 缺省为Imagick::CHANNEL_DEFAULT. 参考此 通道常数列表

返回值

成功时返回 TRUE。

Imagick::getImageBorderColor
Imagick::getImageChannelDistortion
Imagick


Compares image channels of an image to a reconstructed image

Imagick::getImageChannelDepth
Imagick::getImageChannelDistortions
Imagick
PHP Manual

Imagick::getImageChannelDistortion

(PECL imagick 2.0.0)

Imagick::getImageChannelDistortion — Compares image channels of an image to a reconstructed image

说明

float Imagick::getImageChannelDistortion ( Imagick $reference , int $channel , int $metric )

Compares one or more image channels of an image to a reconstructed image and returns the specified distortion metric.

参数

reference

Imagick object to compare to.

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators. Refer to this list of channel constants.

metric

One of the metric type constants.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::getImageChannelDepth
Imagick::getImageChannelDistortions
Imagick


Gets channel distortions

Imagick::getImageChannelDistortion
Imagick::getImageChannelExtrema
Imagick
PHP Manual

Imagick::getImageChannelDistortions

(No version information available, might only be in Git)

Imagick::getImageChannelDistortions — Gets channel distortions

说明

float Imagick::getImageChannelDistortions ( Imagick $reference , int $metric [, int $channel = Imagick::CHANNEL_DEFAULT ] )

Compares one or more image channels of an image to a reconstructed image and returns the specified distortion metrics 此方法在Imagick基于ImageMagick 6.4.4以上版本编译时可用。

参数

reference

Imagick object containing the reference image

metric

Refer to this list of metric type constants.

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. 缺省为Imagick::CHANNEL_DEFAULT. 参考此 通道常数列表

返回值

Returns a double describing the channel distortion.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageChannelDistortion
Imagick::getImageChannelExtrema
Imagick


Gets the extrema for one or more image channels

Imagick::getImageChannelDistortions
Imagick::getImageChannelKurtosis
Imagick
PHP Manual

Imagick::getImageChannelExtrema

(PECL imagick 2.0.0)

Imagick::getImageChannelExtrema — Gets the extrema for one or more image channels

说明

array Imagick::getImageChannelExtrema ( int $channel )

Gets the extrema for one or more image channels. Return value is an associative array with the keys "minima" and "maxima".

参数

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators. Refer to this list of channel constants.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::getImageChannelDistortions
Imagick::getImageChannelKurtosis
Imagick


The getImageChannelKurtosis purpose

Imagick::getImageChannelExtrema
Imagick::getImageChannelMean
Imagick
PHP Manual

Imagick::getImageChannelKurtosis

(No version information available, might only be in Git)

Imagick::getImageChannelKurtosis — The getImageChannelKurtosis purpose

说明

public array Imagick::getImageChannelKurtosis ([ int $channel = Imagick::CHANNEL_DEFAULT ] )

Get the kurtosis and skewness of a specific channel. 此方法在Imagick基于ImageMagick 6.4.9以上版本编译时可用。

参数

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. 缺省为Imagick::CHANNEL_DEFAULT. 参考此 通道常数列表

返回值

Returns an array with kurtosis and skewness members.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageChannelExtrema
Imagick::getImageChannelMean
Imagick


Gets the mean and standard deviation

Imagick::getImageChannelKurtosis
Imagick::getImageChannelRange
Imagick
PHP Manual

Imagick::getImageChannelMean

(PECL imagick 2.0.0)

Imagick::getImageChannelMean — Gets the mean and standard deviation

说明

array Imagick::getImageChannelMean ( int $channel )

Gets the mean and standard deviation of one or more image channels. Return value is an associative array with the keys "mean" and "standardDeviation".

参数

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators. Refer to this list of channel constants.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::getImageChannelKurtosis
Imagick::getImageChannelRange
Imagick


Gets channel range

Imagick::getImageChannelMean
Imagick::getImageChannelStatistics
Imagick
PHP Manual

Imagick::getImageChannelRange

(PECL imagick 2.2.1)

Imagick::getImageChannelRange — Gets channel range

说明

array Imagick::getImageChannelRange ( int $channel )

Gets the range for one or more image channels. 此方法在Imagick基于ImageMagick 6.4.0以上版本编译时可用。

参数

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. 缺省为Imagick::CHANNEL_DEFAULT. 参考此 通道常数列表

返回值

Returns an array containing minima and maxima values of the channel(s).

错误／异常

错误时抛出 ImagickException。

Imagick::getImageChannelMean
Imagick::getImageChannelStatistics
Imagick


Returns statistics for each channel in the image

Imagick::getImageChannelRange
Imagick::getImageClipMask
Imagick
PHP Manual

Imagick::getImageChannelStatistics

(PECL imagick 2.0.0)

Imagick::getImageChannelStatistics — Returns statistics for each channel in the image

说明

array Imagick::getImageChannelStatistics ( void )

Returns statistics for each channel in the image. The statistics include the channel depth, its minima and maxima, the mean, and the standard deviation. You can access the red channel mean, for example, like this:

返回值

成功时返回 TRUE。

Imagick::getImageChannelRange
Imagick::getImageClipMask
Imagick


Gets image clip mask

Imagick::getImageChannelStatistics
Imagick::getImageColormapColor
Imagick
PHP Manual

Imagick::getImageClipMask

(No version information available, might only be in Git)

Imagick::getImageClipMask — Gets image clip mask

说明

Imagick Imagick::getImageClipMask ( void )

Returns the image clip mask. The clip mask is an Imagick object containing the clip mask. 此方法在Imagick基于ImageMagick 6.3.6以上版本编译时可用。

返回值

Returns an Imagick object containing the clip mask.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageChannelStatistics
Imagick::getImageColormapColor
Imagick


Returns the color of the specified colormap index

Imagick::getImageClipMask
Imagick::getImageColors
Imagick
PHP Manual

Imagick::getImageColormapColor

(PECL imagick 2.0.0)

Imagick::getImageColormapColor — Returns the color of the specified colormap index

说明

ImagickPixel Imagick::getImageColormapColor ( int $index )

Returns the color of the specified colormap index.

参数

index

The offset into the image colormap.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::getImageClipMask
Imagick::getImageColors
Imagick


Gets the number of unique colors in the image

Imagick::getImageColormapColor
Imagick::getImageColorspace
Imagick
PHP Manual

Imagick::getImageColors

(PECL imagick 2.0.0)

Imagick::getImageColors — Gets the number of unique colors in the image

说明

int Imagick::getImageColors ( void )

Gets the number of unique colors in the image.

返回值

成功时返回 TRUE。

Imagick::getImageColormapColor
Imagick::getImageColorspace
Imagick


Gets the image colorspace

Imagick::getImageColors
Imagick::getImageCompose
Imagick
PHP Manual

Imagick::getImageColorspace

(PECL imagick 2.0.0)

Imagick::getImageColorspace — Gets the image colorspace

说明

int Imagick::getImageColorspace ( void )

Gets the image colorspace.

返回值

Returns an integer which can be compared against COLORSPACE constants.

Imagick::getImageColors
Imagick::getImageCompose
Imagick


Returns the composite operator associated with the image

Imagick::getImageColorspace
Imagick::getImageCompression
Imagick
PHP Manual

Imagick::getImageCompose

(PECL imagick 2.0.0)

Imagick::getImageCompose — Returns the composite operator associated with the image

说明

int Imagick::getImageCompose ( void )

Returns the composite operator associated with the image.

返回值

成功时返回 TRUE。

Imagick::getImageColorspace
Imagick::getImageCompression
Imagick


Gets the current image's compression type

Imagick::getImageCompose
Imagick::getImageCompressionQuality
Imagick
PHP Manual

Imagick::getImageCompression

(PECL imagick 2.2.2)

Imagick::getImageCompression — Gets the current image's compression type

说明

int Imagick::getImageCompression ( void )

Gets the current image's compression type.

返回值

Returns the compression constant

Imagick::getImageCompose
Imagick::getImageCompressionQuality
Imagick


Gets the current image's compression quality

Imagick::getImageCompression
Imagick::getImageDelay
Imagick
PHP Manual

Imagick::getImageCompressionQuality

(PECL imagick 2.2.2)

Imagick::getImageCompressionQuality — Gets the current image's compression quality

说明

int Imagick::getImageCompressionQuality ( void )

Gets the current image's compression quality

返回值

Returns integer describing the images compression quality

Imagick::getImageCompression
Imagick::getImageDelay
Imagick


Gets the image delay

Imagick::getImageCompressionQuality
Imagick::getImageDepth
Imagick
PHP Manual

Imagick::getImageDelay

(PECL imagick 2.0.0)

Imagick::getImageDelay — Gets the image delay

说明

int Imagick::getImageDelay ( void )

Gets the image delay.

返回值

Returns the image delay.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageCompressionQuality
Imagick::getImageDepth
Imagick


Gets the image depth

Imagick::getImageDelay
Imagick::getImageDispose
Imagick
PHP Manual

Imagick::getImageDepth

(PECL imagick 0.9.1-0.9.9)

Imagick::getImageDepth — Gets the image depth

说明

int Imagick::getImageDepth ( void )

Gets the image depth.

返回值

The image depth.

Imagick::getImageDelay
Imagick::getImageDispose
Imagick


Gets the image disposal method

Imagick::getImageDepth
Imagick::getImageDistortion
Imagick
PHP Manual

Imagick::getImageDispose

(PECL imagick 2.0.0)

Imagick::getImageDispose — Gets the image disposal method

说明

int Imagick::getImageDispose ( void )

Gets the image disposal method.

返回值

Returns the dispose method on success.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageDepth
Imagick::getImageDistortion
Imagick


Compares an image to a reconstructed image

Imagick::getImageDispose
Imagick::getImageExtrema
Imagick
PHP Manual

Imagick::getImageDistortion

(PECL imagick 2.0.0)

Imagick::getImageDistortion — Compares an image to a reconstructed image

说明

float Imagick::getImageDistortion ( MagickWand $reference , int $metric )

Compares an image to a reconstructed image and returns the specified distortion metric.

参数

reference

Imagick object to compare to.

metric

One of the metric type constants.

返回值

Returns the distortion metric used on the image (or the best guess thereof).

错误／异常

错误时抛出 ImagickException。

Imagick::getImageDispose
Imagick::getImageExtrema
Imagick


Gets the extrema for the image

Imagick::getImageDistortion
Imagick::getImageFilename
Imagick
PHP Manual

Imagick::getImageExtrema

(PECL imagick 2.0.0)

Imagick::getImageExtrema — Gets the extrema for the image

说明

array Imagick::getImageExtrema ( void )

Gets the extrema for the image. Returns an associative array with the keys "min" and "max".

返回值

Returns an associative array with the keys "min" and "max".

错误／异常

错误时抛出 ImagickException。

Imagick::getImageDistortion
Imagick::getImageFilename
Imagick


Returns the filename of a particular image in a sequence

Imagick::getImageExtrema
Imagick::getImageFormat
Imagick
PHP Manual

Imagick::getImageFilename

(PECL imagick 2.0.0)

Imagick::getImageFilename — Returns the filename of a particular image in a sequence

说明

string Imagick::getImageFilename ( void )

Returns the filename of a particular image in a sequence.

返回值

Returns a string with the filename of the image.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageExtrema
Imagick::getImageFormat
Imagick


Returns the format of a particular image in a sequence

Imagick::getImageFilename
Imagick::getImageGamma
Imagick
PHP Manual

Imagick::getImageFormat

(PECL imagick 2.0.0)

Imagick::getImageFormat — Returns the format of a particular image in a sequence

说明

string Imagick::getImageFormat ( void )

Returns the format of a particular image in a sequence.

返回值

Returns a string containing the image format on success.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageFilename
Imagick::getImageGamma
Imagick


Gets the image gamma

Imagick::getImageFormat
Imagick::getImageGeometry
Imagick
PHP Manual

Imagick::getImageGamma

(PECL imagick 2.0.0)

Imagick::getImageGamma — Gets the image gamma

说明

float Imagick::getImageGamma ( void )

Gets the image gamma.

返回值

Returns the image gamma on success.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageFormat
Imagick::getImageGeometry
Imagick


Gets the width and height as an associative array

Imagick::getImageGamma
Imagick::getImageGravity
Imagick
PHP Manual

Imagick::getImageGeometry

(PECL imagick 2.0.0)

Imagick::getImageGeometry — Gets the width and height as an associative array

说明

array Imagick::getImageGeometry ( void )

Returns the width and height as an associative array.

返回值

Returns an array with the width/height of the image.

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::getImageGeometry()

<?php
function getImageGeometry($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::getImageGamma
Imagick::getImageGravity
Imagick


Gets the image gravity

Imagick::getImageGeometry
Imagick::getImageGreenPrimary
Imagick
PHP Manual

Imagick::getImageGravity

(No version information available, might only be in Git)

Imagick::getImageGravity — Gets the image gravity

说明

int Imagick::getImageGravity ( void )

Gets the current gravity value of the image. Unlike Imagick::getGravity(), this method returns the gravity defined for the current image sequence. 此方法在Imagick基于ImageMagick 6.4.4以上版本编译时可用。

返回值

Returns the images gravity property. Refer to the list of gravity constants.

Imagick::getImageGeometry
Imagick::getImageGreenPrimary
Imagick


Returns the chromaticy green primary point

Imagick::getImageGravity
Imagick::getImageHeight
Imagick
PHP Manual

Imagick::getImageGreenPrimary

(PECL imagick 2.0.0)

Imagick::getImageGreenPrimary — Returns the chromaticy green primary point

说明

array Imagick::getImageGreenPrimary ( void )

Returns the chromaticity green primary point. Returns an array with the keys "x" and "y".

返回值

Returns an array with the keys "x" and "y" on success, throws an ImagickException on failure.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageGravity
Imagick::getImageHeight
Imagick


Returns the image height

Imagick::getImageGreenPrimary
Imagick::getImageHistogram
Imagick
PHP Manual

Imagick::getImageHeight

(PECL imagick 2.0.0)

Imagick::getImageHeight — Returns the image height

说明

int Imagick::getImageHeight ( void )

Returns the image height.

返回值

Returns the image height in pixels.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageGreenPrimary
Imagick::getImageHistogram
Imagick


Gets the image histogram

Imagick::getImageHeight
Imagick::getImageIndex
Imagick
PHP Manual

Imagick::getImageHistogram

(PECL imagick 2.0.0)

Imagick::getImageHistogram — Gets the image histogram

说明

array Imagick::getImageHistogram ( void )

Returns the image histogram as an array of ImagickPixel objects.

返回值

Returns the image histogram as an array of ImagickPixel objects.

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Generates Imagick::getImageHistogram()

<?php
function getColorStatistics($histogramElements, $colorChannel) {
    $colorStatistics = [];

    foreach ($histogramElements as $histogramElement) {
        $color = $histogramElement->getColorValue($colorChannel);
        $color = intval($color * 255);
        $count = $histogramElement->getColorCount();

        if (array_key_exists($color, $colorStatistics)) {
            $colorStatistics[$color] += $count;
        }
        else {
            $colorStatistics[$color] = $count;
        }
    }

    ksort($colorStatistics);

    return $colorStatistics;
}

function getImageHistogram($imagePath) {

    $backgroundColor = 'black';

    $draw = new \ImagickDraw();
    $draw->setStrokeWidth(0); //make the lines be as thin as possible

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    $histogramWidth = 256;
    $histogramHeight = 100; // the height for each RGB segment

    $imagick = new \Imagick(realpath($imagePath));
    //Resize the image to be small, otherwise PHP tends to run out of memory
    //This might lead to bad results for images that are pathologically 'pixelly'
    $imagick->adaptiveResizeImage(200, 200, true);
    $histogramElements = $imagick->getImageHistogram();

    $histogram = new \Imagick();
    $histogram->newpseudoimage($histogramWidth, $histogramHeight * 3, 'xc:black');
    $histogram->setImageFormat('png');

    $getMax = function ($carry, $item)  {
        if ($item > $carry) {
            return $item;
        }
        return $carry;
    };

    $colorValues = [
        'red' => getColorStatistics($histogramElements, \Imagick::COLOR_RED),
        'lime' => getColorStatistics($histogramElements, \Imagick::COLOR_GREEN),
        'blue' => getColorStatistics($histogramElements, \Imagick::COLOR_BLUE),
    ];

    $max = array_reduce($colorValues['red'] , $getMax, 0);
    $max = array_reduce($colorValues['lime'] , $getMax, $max);
    $max = array_reduce($colorValues['blue'] , $getMax, $max);

    $scale =  $histogramHeight / $max;

    $count = 0;
    foreach ($colorValues as $color => $values) {
        $draw->setstrokecolor($color);

        $offset = ($count + 1) * $histogramHeight;

        foreach ($values as $index => $value) {
            $draw->line($index, $offset, $index, $offset - ($value * $scale));
        }
        $count++;
    }

    $histogram->drawImage($draw);

    header( "Content-Type: image/png" );
    echo $histogram;
}

?>

Imagick::getImageHeight
Imagick::getImageIndex
Imagick


Gets the index of the current active image

Imagick::getImageHistogram
Imagick::getImageInterlaceScheme
Imagick
PHP Manual

Imagick::getImageIndex

(PECL imagick 2.0.0)

Imagick::getImageIndex — Gets the index of the current active image

说明

int Imagick::getImageIndex ( void )

Returns the index of the current active image within the Imagick object. This method has been deprecated. See Imagick::getIteratorIndex().

返回值

Returns an integer containing the index of the image in the stack.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageHistogram
Imagick::getImageInterlaceScheme
Imagick


Gets the image interlace scheme

Imagick::getImageIndex
Imagick::getImageInterpolateMethod
Imagick
PHP Manual

Imagick::getImageInterlaceScheme

(PECL imagick 2.0.0)

Imagick::getImageInterlaceScheme — Gets the image interlace scheme

说明

int Imagick::getImageInterlaceScheme ( void )

Gets the image interlace scheme.

返回值

Returns the interlace scheme as an integer on success. 错误时抛出 ImagickException。

Imagick::getImageIndex
Imagick::getImageInterpolateMethod
Imagick


Returns the interpolation method

Imagick::getImageInterlaceScheme
Imagick::getImageIterations
Imagick
PHP Manual

Imagick::getImageInterpolateMethod

(PECL imagick 2.0.0)

Imagick::getImageInterpolateMethod — Returns the interpolation method

说明

int Imagick::getImageInterpolateMethod ( void )

Returns the interpolation method for the specified image. The method is one of the Imagick::INTERPOLATE_* constants.

返回值

Returns the interpolate method on success.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageInterlaceScheme
Imagick::getImageIterations
Imagick


Gets the image iterations

Imagick::getImageInterpolateMethod
Imagick::getImageLength
Imagick
PHP Manual

Imagick::getImageIterations

(PECL imagick 2.0.0)

Imagick::getImageIterations — Gets the image iterations

说明

int Imagick::getImageIterations ( void )

Gets the image iterations.

返回值

Returns the image iterations as an integer.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageInterpolateMethod
Imagick::getImageLength
Imagick


Returns the image length in bytes

Imagick::getImageIterations
Imagick::getImageMagickLicense
Imagick
PHP Manual

Imagick::getImageLength

(PECL imagick 2.0.0)

Imagick::getImageLength — Returns the image length in bytes

说明

int Imagick::getImageLength ( void )

Returns the image length in bytes

返回值

Returns an int containing the current image size.

范例

Example #1 Using Imagick::getImageLength():

Getting image length in bytes

<?php
$image = new Imagick('test.jpg');
echo $image->getImageLength() . ' bytes';
?>

Imagick::getImageIterations
Imagick::getImageMagickLicense
Imagick


Returns a string containing the ImageMagick license

Imagick::getImageLength
Imagick::getImageMatte
Imagick
PHP Manual

Imagick::getImageMagickLicense

(PECL imagick 2.0.0)

Imagick::getImageMagickLicense — Returns a string containing the ImageMagick license

说明

string Imagick::getImageMagickLicense ( void )

Returns a string containing the ImageMagick license

返回值

Returns a string containing the ImageMagick license.

Imagick::getImageLength
Imagick::getImageMatte
Imagick


Return if the image has a matte channel

Imagick::getImageMagickLicense
Imagick::getImageMatteColor
Imagick
PHP Manual

Imagick::getImageMatte

(PECL imagick 2.0.0)

Imagick::getImageMatte — Return if the image has a matte channel

说明

bool Imagick::getImageMatte ( void )

Returns TRUE if the image has a matte channel otherwise false. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

Imagick::getImageMagickLicense
Imagick::getImageMatteColor
Imagick


Returns the image matte color

Imagick::getImageMatte
Imagick::getImageMimeType
Imagick
PHP Manual

Imagick::getImageMatteColor

(PECL imagick 2.0.0)

Imagick::getImageMatteColor — Returns the image matte color

说明

ImagickPixel Imagick::getImageMatteColor ( void )

Returns the image matte color.

返回值

Returns ImagickPixel object on success.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageMatte
Imagick::getImageMimeType
Imagick


Description

Imagick::getImageMatteColor
Imagick::getImageOrientation
Imagick
PHP Manual

Imagick::getImageMimeType

(No version information available, might only be in Git)

Imagick::getImageMimeType — Description

说明

public string Imagick::getImageMimeType ( void )

Returns the image mime-type.

参数

此函数没有参数。

返回值

Imagick::getImageMatteColor
Imagick::getImageOrientation
Imagick


Gets the image orientation

Imagick::getImageMimeType
Imagick::getImagePage
Imagick
PHP Manual

Imagick::getImageOrientation

(PECL imagick 2.0.0)

Imagick::getImageOrientation — Gets the image orientation

说明

int Imagick::getImageOrientation ( void )

Gets the image orientation. The return value is one of the orientation constants.

返回值

Returns an int on success.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageMimeType
Imagick::getImagePage
Imagick


Returns the page geometry

Imagick::getImageOrientation
Imagick::getImagePixelColor
Imagick
PHP Manual

Imagick::getImagePage

(PECL imagick 2.0.0)

Imagick::getImagePage — Returns the page geometry

说明

array Imagick::getImagePage ( void )

Returns the page geometry associated with the image in an array with the keys "width", "height", "x", and "y".

返回值

Returns the page geometry associated with the image in an array with the keys "width", "height", "x", and "y".

错误／异常

错误时抛出 ImagickException。

Imagick::getImageOrientation
Imagick::getImagePixelColor
Imagick


Returns the color of the specified pixel

Imagick::getImagePage
Imagick::getImageProfile
Imagick
PHP Manual

Imagick::getImagePixelColor

(PECL imagick 2.0.0)

Imagick::getImagePixelColor — Returns the color of the specified pixel

说明

ImagickPixel Imagick::getImagePixelColor ( int $x , int $y )

Returns the color of the specified pixel.

参数

x

The x-coordinate of the pixel

y

The y-coordinate of the pixel

返回值

Returns an ImagickPixel instance for the color at the coordinates given.

错误／异常

错误时抛出 ImagickException。

Imagick::getImagePage
Imagick::getImageProfile
Imagick


Returns the named image profile

Imagick::getImagePixelColor
Imagick::getImageProfiles
Imagick
PHP Manual

Imagick::getImageProfile

(PECL imagick 2.0.0)

Imagick::getImageProfile — Returns the named image profile

说明

string Imagick::getImageProfile ( string $name )

Returns the named image profile.

参数

name

The name of the profile to return.

返回值

Returns a string containing the image profile.

错误／异常

错误时抛出 ImagickException。

Imagick::getImagePixelColor
Imagick::getImageProfiles
Imagick


Returns the image profiles

Imagick::getImageProfile
Imagick::getImageProperties
Imagick
PHP Manual

Imagick::getImageProfiles

(PECL imagick 2.0.0)

Imagick::getImageProfiles — Returns the image profiles

说明

array Imagick::getImageProfiles ([ string $pattern = "*" [, bool $include_values = true ]] )

Returns all associated profiles that match the pattern. If FALSE is passed as second parameter only the profile names are returned. 此方法在Imagick基于ImageMagick 6.3.6以上版本编译时可用。

参数

pattern

The pattern for profile names.

include_values

Whether to return only profile names. If FALSE then only profile names will be returned.

返回值

Returns an array containing the image profiles or profile names.

Imagick::getImageProfile
Imagick::getImageProperties
Imagick


Returns the image properties

Imagick::getImageProfiles
Imagick::getImageProperty
Imagick
PHP Manual

Imagick::getImageProperties

(PECL imagick 2.0.0)

Imagick::getImageProperties — Returns the image properties

说明

array Imagick::getImageProperties ([ string $pattern = "*" [, bool $include_values = true ]] )

Returns all associated properties that match the pattern. If FALSE is passed as second parameter only the property names are returned. 此方法在Imagick基于ImageMagick 6.3.6以上版本编译时可用。

参数

pattern

The pattern for property names.

include_values

Whether to return only property names. If FALSE then only property names will be returned.

返回值

Returns an array containing the image properties or property names.

范例

Example #1 Using Imagick::getImageProperties():

An example of extracting EXIF information.

<?php

/* Create the object */
$im = new imagick("/path/to/example.jpg");

/* Get the EXIF information */
$exifArray = $im->getImageProperties("exif:*");

/* Loop trough the EXIF properties */
foreach ($exifArray as $name => $property)
{
    echo "{$name} => {$property}<br />\n";
}

?>

Imagick::getImageProfiles
Imagick::getImageProperty
Imagick


Returns the named image property

Imagick::getImageProperties
Imagick::getImageRedPrimary
Imagick
PHP Manual

Imagick::getImageProperty

(PECL imagick 2.0.0)

Imagick::getImageProperty — Returns the named image property

说明

string Imagick::getImageProperty ( string $name )

Returns the named image property. 此方法在Imagick基于ImageMagick 6.3.2以上版本编译时可用。

参数

name

name of the property (for example Exif:DateTime)

范例

Example #1 Using Imagick::getImageProperty():

Setting and getting image property

<?php
$image = new Imagick();
$image->newImage(300, 200, "black");

$image->setImageProperty('Exif:Make', 'Imagick');
echo $image->getImageProperty('Exif:Make');
?>

参见

  • Imagick::setImageProperty() - Sets an image property

返回值

Returns a string containing the image property, false if a property with the given name does not exist.

Imagick::getImageProperties
Imagick::getImageRedPrimary
Imagick


Returns the chromaticity red primary point

Imagick::getImageProperty
Imagick::getImageRegion
Imagick
PHP Manual

Imagick::getImageRedPrimary

(PECL imagick 2.0.0)

Imagick::getImageRedPrimary — Returns the chromaticity red primary point

说明

array Imagick::getImageRedPrimary ( void )

Returns the chromaticity red primary point as an array with the keys "x" and "y".

返回值

Returns the chromaticity red primary point as an array with the keys "x" and "y". 错误时抛出 ImagickException。

错误／异常

错误时抛出 ImagickException。

Imagick::getImageProperty
Imagick::getImageRegion
Imagick


Extracts a region of the image

Imagick::getImageRedPrimary
Imagick::getImageRenderingIntent
Imagick
PHP Manual

Imagick::getImageRegion

(PECL imagick 2.0.0)

Imagick::getImageRegion — Extracts a region of the image

说明

Imagick Imagick::getImageRegion ( int $width , int $height , int $x , int $y )

Extracts a region of the image and returns it as a new Imagick object.

参数

width

The width of the extracted region.

height

The height of the extracted region.

x

X-coordinate of the top-left corner of the extracted region.

y

Y-coordinate of the top-left corner of the extracted region.

返回值

Extracts a region of the image and returns it as a new wand.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageRedPrimary
Imagick::getImageRenderingIntent
Imagick


Gets the image rendering intent

Imagick::getImageRegion
Imagick::getImageResolution
Imagick
PHP Manual

Imagick::getImageRenderingIntent

(PECL imagick 2.0.0)

Imagick::getImageRenderingIntent — Gets the image rendering intent

说明

int Imagick::getImageRenderingIntent ( void )

Gets the image rendering intent.

返回值

Returns the image rendering intent.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageRegion
Imagick::getImageResolution
Imagick


获取图像的x,y轴分辨率

Imagick::getImageRenderingIntent
Imagick::getImagesBlob
Imagick
PHP Manual

Imagick::getImageResolution

(PECL imagick 2.0.0)

Imagick::getImageResolution — 获取图像的x,y轴分辨率

说明

array Imagick::getImageResolution ( void )

获取图像的x,y轴分辨率

返回值

返回分辨率值的数组

错误／异常

错误时抛出 ImagickException。

Imagick::getImageRenderingIntent
Imagick::getImagesBlob
Imagick


Returns all image sequences as a blob

Imagick::getImageResolution
Imagick::getImageScene
Imagick
PHP Manual

Imagick::getImagesBlob

(PECL imagick 2.0.0)

Imagick::getImagesBlob — Returns all image sequences as a blob

说明

string Imagick::getImagesBlob ( void )

Implements direct to memory image formats. It returns all image sequences as a string. The format of the image determines the format of the returned blob (GIF, JPEG, PNG, etc.). To return a different image format, use Imagick::setImageFormat().

返回值

Returns a string containing the images. On failure, throws ImagickException.

Imagick::getImageResolution
Imagick::getImageScene
Imagick


Gets the image scene

Imagick::getImagesBlob
Imagick::getImageSignature
Imagick
PHP Manual

Imagick::getImageScene

(PECL imagick 2.0.0)

Imagick::getImageScene — Gets the image scene

说明

int Imagick::getImageScene ( void )

Gets the image scene.

返回值

Returns the image scene.

错误／异常

错误时抛出 ImagickException。

Imagick::getImagesBlob
Imagick::getImageSignature
Imagick


Generates an SHA-256 message digest

Imagick::getImageScene
Imagick::getImageSize
Imagick
PHP Manual

Imagick::getImageSignature

(PECL imagick 2.0.0)

Imagick::getImageSignature — Generates an SHA-256 message digest

说明

string Imagick::getImageSignature ( void )

Generates an SHA-256 message digest for the image pixel stream.

返回值

Returns a string containing the SHA-256 hash of the file.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageScene
Imagick::getImageSize
Imagick


Returns the image length in bytes

Imagick::getImageSignature
Imagick::getImageTicksPerSecond
Imagick
PHP Manual

Imagick::getImageSize

(PECL imagick 2.0.0)

Imagick::getImageSize — Returns the image length in bytes

说明

int Imagick::getImageSize ( void )

Returns the image length in bytes. Deprecated in favour of Imagick::getImageLength()

返回值

Returns an int containing the current image size.

Imagick::getImageSignature
Imagick::getImageTicksPerSecond
Imagick


Gets the image ticks-per-second

Imagick::getImageSize
Imagick::getImageTotalInkDensity
Imagick
PHP Manual

Imagick::getImageTicksPerSecond

(PECL imagick 2.0.0)

Imagick::getImageTicksPerSecond — Gets the image ticks-per-second

说明

int Imagick::getImageTicksPerSecond ( void )

Gets the image ticks-per-second.

返回值

Returns the image ticks-per-second.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageSize
Imagick::getImageTotalInkDensity
Imagick


Gets the image total ink density

Imagick::getImageTicksPerSecond
Imagick::getImageType
Imagick
PHP Manual

Imagick::getImageTotalInkDensity

(PECL imagick 2.0.0)

Imagick::getImageTotalInkDensity — Gets the image total ink density

说明

float Imagick::getImageTotalInkDensity ( void )

Gets the image total ink density.

返回值

Returns the image total ink density of the image. 错误时抛出 ImagickException。

Imagick::getImageTicksPerSecond
Imagick::getImageType
Imagick


Gets the potential image type

Imagick::getImageTotalInkDensity
Imagick::getImageUnits
Imagick
PHP Manual

Imagick::getImageType

(PECL imagick 0.9.10-0.9.9)

Imagick::getImageType — Gets the potential image type

说明

int Imagick::getImageType ( void )

Gets the potential image type.

返回值

Returns the potential image type.

  • imagick::IMGTYPE_UNDEFINED
  • imagick::IMGTYPE_BILEVEL
  • imagick::IMGTYPE_GRAYSCALE
  • imagick::IMGTYPE_GRAYSCALEMATTE
  • imagick::IMGTYPE_PALETTE
  • imagick::IMGTYPE_PALETTEMATTE
  • imagick::IMGTYPE_TRUECOLOR
  • imagick::IMGTYPE_TRUECOLORMATTE
  • imagick::IMGTYPE_COLORSEPARATION
  • imagick::IMGTYPE_COLORSEPARATIONMATTE
  • imagick::IMGTYPE_OPTIMIZE

错误／异常

错误时抛出 ImagickException。

Imagick::getImageTotalInkDensity
Imagick::getImageUnits
Imagick


获取图像的分辨率单位

Imagick::getImageType
Imagick::getImageVirtualPixelMethod
Imagick
PHP Manual

Imagick::getImageUnits

(PECL imagick 2.0.0)

Imagick::getImageUnits — 获取图像的分辨率单位

说明

int Imagick::getImageUnits ( void )

获取图像的分辨率单位。

返回值

返回分辨率的单位

错误／异常

错误时抛出 ImagickException。

Imagick::getImageType
Imagick::getImageVirtualPixelMethod
Imagick


Returns the virtual pixel method

Imagick::getImageUnits
Imagick::getImageWhitePoint
Imagick
PHP Manual

Imagick::getImageVirtualPixelMethod

(PECL imagick 2.0.0)

Imagick::getImageVirtualPixelMethod — Returns the virtual pixel method

说明

int Imagick::getImageVirtualPixelMethod ( void )

Returns the virtual pixel method for the specified image.

返回值

Returns the virtual pixel method on success.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageUnits
Imagick::getImageWhitePoint
Imagick


Returns the chromaticity white point

Imagick::getImageVirtualPixelMethod
Imagick::getImageWidth
Imagick
PHP Manual

Imagick::getImageWhitePoint

(PECL imagick 2.0.0)

Imagick::getImageWhitePoint — Returns the chromaticity white point

说明

array Imagick::getImageWhitePoint ( void )

Returns the chromaticity white point as an associative array with the keys "x" and "y".

返回值

Returns the chromaticity white point as an associative array with the keys "x" and "y".

错误／异常

错误时抛出 ImagickException。

Imagick::getImageVirtualPixelMethod
Imagick::getImageWidth
Imagick


Returns the image width

Imagick::getImageWhitePoint
Imagick::getInterlaceScheme
Imagick
PHP Manual

Imagick::getImageWidth

(PECL imagick 2.0.0)

Imagick::getImageWidth — Returns the image width

说明

int Imagick::getImageWidth ( void )

Returns the image width.

返回值

Returns the image width.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageWhitePoint
Imagick::getInterlaceScheme
Imagick


Gets the object interlace scheme

Imagick::getImageWidth
Imagick::getIteratorIndex
Imagick
PHP Manual

Imagick::getInterlaceScheme

(PECL imagick 2.0.0)

Imagick::getInterlaceScheme — Gets the object interlace scheme

说明

int Imagick::getInterlaceScheme ( void )

Gets the object interlace scheme.

返回值

Gets the wand interlace scheme.

错误／异常

错误时抛出 ImagickException。

Imagick::getImageWidth
Imagick::getIteratorIndex
Imagick


Gets the index of the current active image

Imagick::getInterlaceScheme
Imagick::getNumberImages
Imagick
PHP Manual

Imagick::getIteratorIndex

(PECL imagick 2.0.0)

Imagick::getIteratorIndex — Gets the index of the current active image

说明

int Imagick::getIteratorIndex ( void )

Returns the index of the current active image within the Imagick object. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

返回值

Returns an integer containing the index of the image in the stack.

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Using Imagick::getIteratorIndex():

Create images, set and get the iterator index

<?php
$im = new Imagick();
$im->newImage(100, 100, new ImagickPixel("red"));
$im->newImage(100, 100, new ImagickPixel("green"));
$im->newImage(100, 100, new ImagickPixel("blue"));

$im->setIteratorIndex(1);
echo $im->getIteratorIndex();
?>

参见

  • Imagick::setIteratorIndex() - Set the iterator position
  • Imagick::getImageIndex() - Gets the index of the current active image
  • Imagick::setImageIndex() - Set the iterator position

Imagick::getInterlaceScheme
Imagick::getNumberImages
Imagick


Returns the number of images in the object

Imagick::getIteratorIndex
Imagick::getOption
Imagick
PHP Manual

Imagick::getNumberImages

(PECL imagick 2.0.0)

Imagick::getNumberImages — Returns the number of images in the object

说明

int Imagick::getNumberImages ( void )

Returns the number of images associated with Imagick object.

返回值

Returns the number of images associated with Imagick object.

错误／异常

错误时抛出 ImagickException。

Imagick::getIteratorIndex
Imagick::getOption
Imagick


Returns a value associated with the specified key

Imagick::getNumberImages
Imagick::getPackageName
Imagick
PHP Manual

Imagick::getOption

(PECL imagick 2.0.0)

Imagick::getOption — Returns a value associated with the specified key

说明

string Imagick::getOption ( string $key )

Returns a value associated within the object for the specified key.

参数

key

The name of the option

返回值

Returns a value associated with a wand and the specified key.

错误／异常

错误时抛出 ImagickException。

Imagick::getNumberImages
Imagick::getPackageName
Imagick


Returns the ImageMagick package name

Imagick::getOption
Imagick::getPage
Imagick
PHP Manual

Imagick::getPackageName

(PECL imagick 2.0.0)

Imagick::getPackageName — Returns the ImageMagick package name

说明

string Imagick::getPackageName ( void )

Returns the ImageMagick package name.

返回值

Returns the ImageMagick package name as a string.

错误／异常

错误时抛出 ImagickException。

Imagick::getOption
Imagick::getPage
Imagick


Returns the page geometry

Imagick::getPackageName
Imagick::getPixelIterator
Imagick
PHP Manual

Imagick::getPage

(PECL imagick 2.0.0)

Imagick::getPage — Returns the page geometry

说明

array Imagick::getPage ( void )

Returns the page geometry associated with the Imagick object in an associative array with the keys "width", "height", "x", and "y".

返回值

Returns the page geometry associated with the Imagick object in an associative array with the keys "width", "height", "x", and "y", throwing ImagickException on error.

Imagick::getPackageName
Imagick::getPixelIterator
Imagick


Returns a MagickPixelIterator

Imagick::getPage
Imagick::getPixelRegionIterator
Imagick
PHP Manual

Imagick::getPixelIterator

(PECL imagick 2.0.0)

Imagick::getPixelIterator — Returns a MagickPixelIterator

说明

ImagickPixelIterator Imagick::getPixelIterator ( void )

Returns a MagickPixelIterator.

返回值

Returns an ImagickPixelIterator on success.

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::getPixelIterator()

<?php
function getPixelIterator($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imageIterator = $imagick->getPixelIterator();

    foreach ($imageIterator as $row => $pixels) { /* Loop through pixel rows */
        foreach ($pixels as $column => $pixel) { /* Loop through the pixels in the row (columns) */
            /** @var $pixel \ImagickPixel */
            if ($column % 2) {
                $pixel->setColor("rgba(0, 0, 0, 0)"); /* Paint every second pixel black*/
            }
        }
        $imageIterator->syncIterator(); /* Sync the iterator, this is important to do on each iteration */
    }

    header("Content-Type: image/jpg");
    echo $imagick;
}

?>

Imagick::getPage
Imagick::getPixelRegionIterator
Imagick


Get an ImagickPixelIterator for an image section

Imagick::getPixelIterator
Imagick::getPointSize
Imagick
PHP Manual

Imagick::getPixelRegionIterator

(PECL imagick 2.0.0)

Imagick::getPixelRegionIterator — Get an ImagickPixelIterator for an image section

说明

ImagickPixelIterator Imagick::getPixelRegionIterator ( int $x , int $y , int $columns , int $rows )

Get an ImagickPixelIterator for an image section.

参数

x

The x-coordinate of the region.

y

The y-coordinate of the region.

columns

The width of the region.

rows

The height of the region.

返回值

Returns an ImagickPixelIterator for an image section.

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::getPixelRegionIterator() example

Iterate over the pixels in the top left of the image, changing them to be black.

<?php
$im = new Imagick(realpath("./testImage.png"));
$areaIterator = $im->getPixelRegionIterator(0, 0, 10, 10);

foreach ($areaIterator as $rowIterator) {
    foreach ($rowIterator as $pixel) {
        // Paint every pixel black
        $pixel->setColor("rgba(0, 0, 0, 0)");
    }
    $areaIterator->syncIterator();
}
$im->writeImage("./output.png");
?>

Imagick::getPixelIterator
Imagick::getPointSize
Imagick


Gets point size

Imagick::getPixelRegionIterator
Imagick::getQuantum
Imagick
PHP Manual

Imagick::getPointSize

(No version information available, might only be in Git)

Imagick::getPointSize — Gets point size

说明

float Imagick::getPointSize ( void )

Returns the objects point size property. 此方法在Imagick基于ImageMagick 6.3.7以上版本编译时可用。

返回值

Returns a float containing the point size.

参见

  • Imagick::setPointSize() - Sets point size

Imagick::getPixelRegionIterator
Imagick::getQuantum
Imagick


Description

Imagick::getPointSize
Imagick::getQuantumDepth
Imagick
PHP Manual

Imagick::getQuantum

(No version information available, might only be in Git)

Imagick::getQuantum — Description

说明

public static int Imagick::getQuantum ( void )

Returns the ImageMagick quantum range as an integer.

参数

此函数没有参数。

返回值

Imagick::getPointSize
Imagick::getQuantumDepth
Imagick


Gets the quantum depth

Imagick::getQuantum
Imagick::getQuantumRange
Imagick
PHP Manual

Imagick::getQuantumDepth

(PECL imagick 2.0.0)

Imagick::getQuantumDepth — Gets the quantum depth

说明

array Imagick::getQuantumDepth ( void )

Returns the Imagick quantum depth as a string.

返回值

Returns the Imagick quantum depth as a string.

错误／异常

错误时抛出 ImagickException。

Imagick::getQuantum
Imagick::getQuantumRange
Imagick


Returns the Imagick quantum range

Imagick::getQuantumDepth
Imagick::getRegistry
Imagick
PHP Manual

Imagick::getQuantumRange

(PECL imagick 2.0.0)

Imagick::getQuantumRange — Returns the Imagick quantum range

说明

array Imagick::getQuantumRange ( void )

Returns the quantum range for the Imagick instance.

返回值

Returns an associative array containing the quantum range as an integer ("quantumRangeLong") and as a string ("quantumRangeString").

错误／异常

错误时抛出 ImagickException。

Imagick::getQuantumDepth
Imagick::getRegistry
Imagick


Description

Imagick::getQuantumRange
Imagick::getReleaseDate
Imagick
PHP Manual

Imagick::getRegistry

(No version information available, might only be in Git)

Imagick::getRegistry — Description

说明

public static string Imagick::getRegistry ( string $key )

Get the StringRegistry entry for the named key or false if not set.

参数

key

The entry to get.

返回值

Imagick::getQuantumRange
Imagick::getReleaseDate
Imagick


Returns the ImageMagick release date

Imagick::getRegistry
Imagick::getResource
Imagick
PHP Manual

Imagick::getReleaseDate

(PECL imagick 2.0.0)

Imagick::getReleaseDate — Returns the ImageMagick release date

说明

string Imagick::getReleaseDate ( void )

Returns the ImageMagick release date as a string.

返回值

Returns the ImageMagick release date as a string.

错误／异常

错误时抛出 ImagickException。

Imagick::getRegistry
Imagick::getResource
Imagick


Returns the specified resource's memory usage

Imagick::getReleaseDate
Imagick::getResourceLimit
Imagick
PHP Manual

Imagick::getResource

(PECL imagick 2.0.0)

Imagick::getResource — Returns the specified resource's memory usage

说明

int Imagick::getResource ( int $type )

Returns the specified resource's memory usage in megabytes.

参数

type

Refer to the list of resourcetype constants.

返回值

Returns the specified resource's memory usage in megabytes.

错误／异常

错误时抛出 ImagickException。

Imagick::getReleaseDate
Imagick::getResourceLimit
Imagick


Returns the specified resource limit

Imagick::getResource
Imagick::getSamplingFactors
Imagick
PHP Manual

Imagick::getResourceLimit

(PECL imagick 2.0.0)

Imagick::getResourceLimit — Returns the specified resource limit

说明

int Imagick::getResourceLimit ( int $type )

Returns the specified resource limit.

参数

type

Refer to the list of resourcetype constants.

返回值

Returns the specified resource limit in megabytes.

错误／异常

错误时抛出 ImagickException。

Imagick::getResource
Imagick::getSamplingFactors
Imagick


Gets the horizontal and vertical sampling factor

Imagick::getResourceLimit
Imagick::getSize
Imagick
PHP Manual

Imagick::getSamplingFactors

(PECL imagick 2.0.0)

Imagick::getSamplingFactors — Gets the horizontal and vertical sampling factor

说明

array Imagick::getSamplingFactors ( void )

Gets the horizontal and vertical sampling factor.

返回值

Returns an associative array with the horizontal and vertical sampling factors of the image.

错误／异常

错误时抛出 ImagickException。

Imagick::getResourceLimit
Imagick::getSize
Imagick


Returns the size associated with the Imagick object

Imagick::getSamplingFactors
Imagick::getSizeOffset
Imagick
PHP Manual

Imagick::getSize

(PECL imagick 2.0.0)

Imagick::getSize — Returns the size associated with the Imagick object

说明

array Imagick::getSize ( void )

Returns the size associated with the Imagick object as an array with the keys "columns" and "rows".

返回值

Returns the size associated with the Imagick object as an array with the keys "columns" and "rows".

Imagick::getSamplingFactors
Imagick::getSizeOffset
Imagick


Returns the size offset

Imagick::getSize
Imagick::getVersion
Imagick
PHP Manual

Imagick::getSizeOffset

(PECL imagick 2.0.0)

Imagick::getSizeOffset — Returns the size offset

说明

int Imagick::getSizeOffset ( void )

Returns the size offset associated with the Imagick object. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

返回值

Returns the size offset associated with the Imagick object.

错误／异常

错误时抛出 ImagickException。

Imagick::getSize
Imagick::getVersion
Imagick


Returns the ImageMagick API version

Imagick::getSizeOffset
Imagick::haldClutImage
Imagick
PHP Manual

Imagick::getVersion

(PECL imagick 2.0.0)

Imagick::getVersion — Returns the ImageMagick API version

说明

array Imagick::getVersion ( void )

Returns the ImageMagick API version as a string and as a number.

返回值

Returns the ImageMagick API version as a string and as a number.

错误／异常

错误时抛出 ImagickException。

Imagick::getSizeOffset
Imagick::haldClutImage
Imagick


Replaces colors in the image

Imagick::getVersion
Imagick::hasNextImage
Imagick
PHP Manual

Imagick::haldClutImage

(No version information available, might only be in Git)

Imagick::haldClutImage — Replaces colors in the image

说明

public bool Imagick::haldClutImage ( Imagick $clut [, int $channel = Imagick::CHANNEL_DEFAULT ] )

Replaces colors in the image using a Hald lookup table. Hald images can be created using HALD color coder.

参数

clut

Imagick object containing the Hald lookup image.

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. 缺省为Imagick::CHANNEL_DEFAULT. 参考此 通道常数列表

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::haldClutImage()

<?php
function haldClutImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagickPalette = new \Imagick(realpath("images/hald/hald_8.png"));
    $imagickPalette->sepiatoneImage(55);
    $imagick->haldClutImage($imagickPalette);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::getVersion
Imagick::hasNextImage
Imagick


Checks if the object has more images

Imagick::haldClutImage
Imagick::hasPreviousImage
Imagick
PHP Manual

Imagick::hasNextImage

(PECL imagick 2.0.0)

Imagick::hasNextImage — Checks if the object has more images

说明

bool Imagick::hasNextImage ( void )

Returns TRUE if the object has more images when traversing the list in the forward direction.

返回值

Returns TRUE if the object has more images when traversing the list in the forward direction, returns FALSE if there are none.

Imagick::haldClutImage
Imagick::hasPreviousImage
Imagick


Checks if the object has a previous image

Imagick::hasNextImage
Imagick::identifyFormat
Imagick
PHP Manual

Imagick::hasPreviousImage

(PECL imagick 2.0.0)

Imagick::hasPreviousImage — Checks if the object has a previous image

说明

bool Imagick::hasPreviousImage ( void )

Returns TRUE if the object has more images when traversing the list in the reverse direction

返回值

Returns TRUE if the object has more images when traversing the list in the reverse direction, returns FALSE if there are none.

Imagick::hasNextImage
Imagick::identifyFormat
Imagick


Description

Imagick::hasPreviousImage
Imagick::identifyImage
Imagick
PHP Manual

Imagick::identifyFormat

(No version information available, might only be in Git)

Imagick::identifyFormat — Description

说明

public string|false Imagick::identifyFormat ( string $embedText )

Replaces any embedded formatting characters with the appropriate image property and returns the interpreted text. See http://www.imagemagick.org/script/escape.php for escape sequences.

参数

embedText

A string containing formatting sequences e.g. "Trim box: %@ number of unique colors: %k".

返回值

范例

Example #1 Imagick::identifyFormat()

<?php
        $output = "Output of 'Trim box: %@ number of unique colors: %k' is: <br/>";
        $imagick = new \Imagick(realpath("./images/artifact/mask.png"));
        $output .= $imagick->identifyFormat("Trim box: %@ number of unique colors: %k");

?>

Imagick::hasPreviousImage
Imagick::identifyImage
Imagick


Identifies an image and fetches attributes

Imagick::identifyFormat
Imagick::implodeImage
Imagick
PHP Manual

Imagick::identifyImage

(PECL imagick 2.0.0)

Imagick::identifyImage — Identifies an image and fetches attributes

说明

array Imagick::identifyImage ([ bool $appendRawOutput = false ] )

Identifies an image and returns the attributes. Attributes include the image width, height, size, and others.

参数

appendRawOutput

返回值

Identifies an image and returns the attributes. Attributes include the image width, height, size, and others.

Example #1 Example Result Format

Array
(
    [imageName] => /some/path/image.jpg
    [format] => JPEG (Joint Photographic Experts Group JFIF format)
    [geometry] => Array
        (
            [width] => 90
            [height] => 90
        )

    [type] => TrueColor
    [colorSpace] => RGB
    [resolution] => Array
        (
            [x] => 300
            [y] => 300
        )

    [units] => PixelsPerInch
    [fileSize] => 1.88672kb
    [compression] => JPEG
    [signature] => 9a6dc8f604f97d0d691c0286176ddf992e188f0bebba98494b2146ee2d7118da
)

错误／异常

错误时抛出 ImagickException。

Imagick::identifyFormat
Imagick::implodeImage
Imagick


Creates a new image as a copy

Imagick::identifyImage
Imagick::importImagePixels
Imagick
PHP Manual

Imagick::implodeImage

(PECL imagick 2.0.0)

Imagick::implodeImage — Creates a new image as a copy

说明

bool Imagick::implodeImage ( float $radius )

Creates a new image that is a copy of an existing one with the image pixels "imploded" by the specified percentage.

参数

radius

The radius of the implode

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::implodeImage()

<?php
function implodeImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->implodeImage(0.0001);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();

}

?>

Imagick::identifyImage
Imagick::importImagePixels
Imagick


Imports image pixels

Imagick::implodeImage
Imagick::inverseFourierTransformImage
Imagick
PHP Manual

Imagick::importImagePixels

(No version information available, might only be in Git)

Imagick::importImagePixels — Imports image pixels

说明

public bool Imagick::importImagePixels ( int $x , int $y , int $width , int $height , string $map , int $storage , array $pixels )

Imports pixels from an array into an image. The map is usually 'RGB'. This method imposes the following constraints for the parameters: amount of pixels in the array must match width x height x length of the map. 此方法在Imagick基于ImageMagick 6.4.5以上版本编译时可用。

参数

x

The image x position

y

The image y position

width

The image width

height

The image height

map

Map of pixel ordering as a string. This can be for example RGB. The value can be any combination or order of R = red, G = green, B = blue, A = alpha (0 is transparent), O = opacity (0 is opaque), C = cyan, Y = yellow, M = magenta, K = black, I = intensity (for grayscale), P = pad.

storage

The pixel storage method. Refer to this list of pixel constants.

pixels

The array of pixels

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::importImagePixels() example

<?php

/* Generate array of pixels. 2000 pixels per color stripe */
$count = 2000 * 3;

$pixels =
   array_merge(array_pad(array(), $count, 0),
               array_pad(array(), $count, 255),
               array_pad(array(), $count, 0),
               array_pad(array(), $count, 255),
               array_pad(array(), $count, 0));

/* Width and height. The area is amount of pixels divided
   by three. Three comes from 'RGB', three values per pixel */
$width = $height = pow((count($pixels) / 3), 0.5);

/* Create empty image */
$im = new Imagick();
$im->newImage($width, $height, 'gray');

/* Import the pixels into image.
   width * height * strlen("RGB") must match count($pixels) */
$im->importImagePixels(0, 0, $width, $height, "RGB", Imagick::PIXEL_CHAR, $pixels);

/* output as jpeg image */
$im->setImageFormat('jpg');
header("Content-Type: image/jpg");
echo $im;

?>

以上例程的输出类似于：

Output of example : Imagick::importImagePixels()

Imagick::implodeImage
Imagick::inverseFourierTransformImage
Imagick


Description

Imagick::importImagePixels
Imagick::labelImage
Imagick
PHP Manual

Imagick::inverseFourierTransformImage

(No version information available, might only be in Git)

Imagick::inverseFourierTransformImage — Description

说明

public void Imagick::inverseFourierTransformImage ( string $complement , string $magnitude )

Implements the inverse discrete Fourier transform (DFT) of the image either as a magnitude / phase or real / imaginary image pair.

Warning

本函数还未编写文档，仅有参数列表。

参数

complement

The second image to combine with this one to form either the magnitude / phase or real / imaginary image pair.

magnitude

If true, combine as magnitude / phase pair otherwise a real / imaginary image pair.

返回值

Imagick::importImagePixels
Imagick::labelImage
Imagick


Adds a label to an image

Imagick::inverseFourierTransformImage
Imagick::levelImage
Imagick
PHP Manual

Imagick::labelImage

(PECL imagick 2.0.0)

Imagick::labelImage — Adds a label to an image

说明

bool Imagick::labelImage ( string $label )

Adds a label to an image.

参数

label

The label to add

返回值

成功时返回 TRUE。

Imagick::inverseFourierTransformImage
Imagick::levelImage
Imagick


Adjusts the levels of an image

Imagick::labelImage
Imagick::linearStretchImage
Imagick
PHP Manual

Imagick::levelImage

(PECL imagick 2.0.0)

Imagick::levelImage — Adjusts the levels of an image

说明

bool Imagick::levelImage ( float $blackPoint , float $gamma , float $whitePoint [, int $channel = Imagick::CHANNEL_ALL ] )

Adjusts the levels of an image by scaling the colors falling between specified white and black points to the full available quantum range. The parameters provided represent the black, mid, and white points. The black point specifies the darkest color in the image. Colors darker than the black point are set to zero. Mid point specifies a gamma correction to apply to the image. White point specifies the lightest color in the image. Colors brighter than the white point are set to the maximum quantum value.

参数

blackPoint

The image black point

gamma

The gamma value

whitePoint

The image white point

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators. Refer to this list of channel constants.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::levelImage()

<?php
function levelImage($blackPoint, $gamma, $whitePoint) {
    $imagick = new \Imagick();
    $imagick->newPseudoimage(500, 500, 'gradient:black-white');

    $imagick->setFormat('png');
    $quantum = $imagick->getQuantum();
    $imagick->levelImage($blackPoint / 100 , $gamma, $quantum * $whitePoint / 100);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

Imagick::labelImage
Imagick::linearStretchImage
Imagick


Stretches with saturation the image intensity

Imagick::levelImage
Imagick::liquidRescaleImage
Imagick
PHP Manual

Imagick::linearStretchImage

(PECL imagick 2.0.0)

Imagick::linearStretchImage — Stretches with saturation the image intensity

说明

bool Imagick::linearStretchImage ( float $blackPoint , float $whitePoint )

Stretches with saturation the image intensity.

参数

blackPoint

The image black point

whitePoint

The image white point

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::linearStretchImage()

<?php
function linearStretchImage($imagePath, $blackThreshold, $whiteThreshold) {
    $imagick = new \Imagick(realpath($imagePath));
    $pixels = $imagick->getImageWidth() * $imagick->getImageHeight();
    $imagick->linearStretchImage($blackThreshold * $pixels, $whiteThreshold * $pixels);

    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::levelImage
Imagick::liquidRescaleImage
Imagick


Animates an image or images

Imagick::linearStretchImage
Imagick::listRegistry
Imagick
PHP Manual

Imagick::liquidRescaleImage

(No version information available, might only be in Git)

Imagick::liquidRescaleImage — Animates an image or images

说明

bool Imagick::liquidRescaleImage ( int $width , int $height , float $delta_x , float $rigidity )

This method scales the images using liquid rescaling method. This method is an implementation of a technique called seam carving. In order for this method to work as expected ImageMagick must be compiled with liblqr support. 此方法在Imagick基于ImageMagick 6.3.9以上版本编译时可用。

参数

width

The width of the target size

height

The height of the target size

delta_x

How much the seam can traverse on x-axis. Passing 0 causes the seams to be straight.

rigidity

Introduces a bias for non-straight seams. This parameter is typically 0.

返回值

成功时返回 TRUE。

参见

  • Imagick::resizeImage() - Scales an image

Imagick::linearStretchImage
Imagick::listRegistry
Imagick


Description

Imagick::liquidRescaleImage
Imagick::magnifyImage
Imagick
PHP Manual

Imagick::listRegistry

(No version information available, might only be in Git)

Imagick::listRegistry — Description

说明

public static array Imagick::listRegistry ( void )

List all the registry settings. Returns an array of all the key/value pairs in the registry

参数

此函数没有参数。

返回值

An array containing the key/values from the registry.

Imagick::liquidRescaleImage
Imagick::magnifyImage
Imagick


Scales an image proportionally 2x

Imagick::listRegistry
Imagick::mapImage
Imagick
PHP Manual

Imagick::magnifyImage

(PECL imagick 2.0.0)

Imagick::magnifyImage — Scales an image proportionally 2x

说明

bool Imagick::magnifyImage ( void )

Is a convenience method that scales an image proportionally to twice its original size.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::magnifyImage()

<?php
function magnifyImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->magnifyImage();
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::listRegistry
Imagick::mapImage
Imagick


Replaces the colors of an image with the closest color from a reference image.

Imagick::magnifyImage
Imagick::matteFloodfillImage
Imagick
PHP Manual

Imagick::mapImage

(PECL imagick 2.0.0)

Imagick::mapImage — Replaces the colors of an image with the closest color from a reference image.

说明

bool Imagick::mapImage ( Imagick $map , bool $dither )

参数

map

dither

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::magnifyImage
Imagick::matteFloodfillImage
Imagick


Changes the transparency value of a color

Imagick::mapImage
Imagick::medianFilterImage
Imagick
PHP Manual

Imagick::matteFloodfillImage

(PECL imagick 2.0.0)

Imagick::matteFloodfillImage — Changes the transparency value of a color

说明

bool Imagick::matteFloodfillImage ( float $alpha , float $fuzz , mixed $bordercolor , int $x , int $y )

Changes the transparency value of any pixel that matches target and is an immediate neighbor. If the method FillToBorderMethod is specified, the transparency value is changed for any neighbor pixel that does not match the bordercolor member of image.

参数

alpha

The level of transparency: 1.0 is fully opaque and 0.0 is fully transparent.

fuzz

The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same.

bordercolor

An ImagickPixel object or string representing the border color.

x

The starting x coordinate of the operation.

y

The starting y coordinate of the operation.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

更新日志

版本 | 说明
2.1.0 | Now allows a string representing the color as the third parameter. Previous versions allow only an ImagickPixel object.

Imagick::mapImage
Imagick::medianFilterImage
Imagick


Applies a digital filter

Imagick::matteFloodfillImage
Imagick::mergeImageLayers
Imagick
PHP Manual

Imagick::medianFilterImage

(PECL imagick 2.0.0)

Imagick::medianFilterImage — Applies a digital filter

说明

bool Imagick::medianFilterImage ( float $radius )

Applies a digital filter that improves the quality of a noisy image. Each pixel is replaced by the median in a set of neighboring pixels as defined by radius.

参数

radius

The radius of the pixel neighborhood.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::medianFilterImage()

<?php
function medianFilterImage($radius, $imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    @$imagick->medianFilterImage($radius);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::matteFloodfillImage
Imagick::mergeImageLayers
Imagick


Merges image layers

Imagick::medianFilterImage
Imagick::minifyImage
Imagick
PHP Manual

Imagick::mergeImageLayers

(PECL imagick 2.1.0)

Imagick::mergeImageLayers — Merges image layers

说明

Imagick Imagick::mergeImageLayers ( int $layer_method )

Merges image layers into one. This method is useful when working with image formats that use multiple layers such as PSD. The merging is controlled using the layer_method which defines how the layers are merged. 此方法在Imagick基于ImageMagick 6.3.7以上版本编译时可用。

参数

layer_method

One of the Imagick::LAYERMETHOD_* constants

返回值

Returns an Imagick object containing the merged image.

错误／异常

错误时抛出 ImagickException。

参见

  • Imagick::flattenImages() - Merges a sequence of images

范例

Example #1 Imagick::mergeImageLayers()

<?php
function mergeImageLayers($layerMethodType, $imagePath1, $imagePath2) {

    $imagick = new \Imagick(realpath($imagePath));

    $imagick2 = new \Imagick(realpath($imagePath2));
    $imagick->addImage($imagick2);
    $imagick->setImageFormat('png');

    $result = $imagick->mergeImageLayers($layerMethodType);
    header("Content-Type: image/png");
    echo $result->getImageBlob();
}

?>

Imagick::medianFilterImage
Imagick::minifyImage
Imagick


Scales an image proportionally to half its size

Imagick::mergeImageLayers
Imagick::modulateImage
Imagick
PHP Manual

Imagick::minifyImage

(PECL imagick 2.0.0)

Imagick::minifyImage — Scales an image proportionally to half its size

说明

bool Imagick::minifyImage ( void )

Is a convenience method that scales an image proportionally to one-half its original size

返回值

成功时返回 TRUE。

Imagick::mergeImageLayers
Imagick::modulateImage
Imagick


Control the brightness, saturation, and hue

Imagick::minifyImage
Imagick::montageImage
Imagick
PHP Manual

Imagick::modulateImage

(PECL imagick 2.0.0)

Imagick::modulateImage — Control the brightness, saturation, and hue

说明

bool Imagick::modulateImage ( float $brightness , float $saturation , float $hue )

Lets you control the brightness, saturation, and hue of an image. Hue is the percentage of absolute rotation from the current position. For example 50 results in a counter-clockwise rotation of 90 degrees, 150 results in a clockwise rotation of 90 degrees, with 0 and 200 both resulting in a rotation of 180 degrees.

参数

brightness

saturation

hue

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::modulateImage()

<?php
function modulateImage($imagePath, $hue, $brightness, $saturation) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->modulateImage($brightness, $saturation, $hue);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::minifyImage
Imagick::montageImage
Imagick


Creates a composite image

Imagick::modulateImage
Imagick::morphImages
Imagick
PHP Manual

Imagick::montageImage

(PECL imagick 2.0.0)

Imagick::montageImage — Creates a composite image

说明

Imagick Imagick::montageImage ( ImagickDraw $draw , string $tile_geometry , string $thumbnail_geometry , int $mode , string $frame )

Creates a composite image by combining several separate images. The images are tiled on the composite image with the name of the image optionally appearing just below the individual tile.

参数

draw

The font name, size, and color are obtained from this object.

tile_geometry

The number of tiles per row and page (e.g. 6x4+0+0).

thumbnail_geometry

Preferred image size and border size of each thumbnail (e.g. 120x120+4+3>).

mode

Thumbnail framing mode, see Montage Mode constants.

frame

Surround the image with an ornamental border (e.g. 15x15+3+3). The frame color is that of the thumbnail's matte color.

返回值

成功时返回 TRUE。

Imagick::modulateImage
Imagick::morphImages
Imagick


Method morphs a set of images

Imagick::montageImage
Imagick::morphology
Imagick
PHP Manual

Imagick::morphImages

(PECL imagick 2.0.0)

Imagick::morphImages — Method morphs a set of images

说明

Imagick Imagick::morphImages ( int $number_frames )

Method morphs a set of images. Both the image pixels and size are linearly interpolated to give the appearance of a meta-morphosis from one image to the next.

参数

number_frames

The number of in-between images to generate.

返回值

This method returns a new Imagick object on success. 错误时抛出 ImagickException。

Imagick::montageImage
Imagick::morphology
Imagick


Description

Imagick::morphImages
Imagick::mosaicImages
Imagick
PHP Manual

Imagick::morphology

(No version information available, might only be in Git)

Imagick::morphology — Description

说明

public void Imagick::morphology ( int $morphologyMethod , int $iterations , ImagickKernel $ImagickKernel [, string $CHANNEL ] )

Applies a user supplied kernel to the image according to the given morphology method.

参数

morphologyMethod

Which morphology method to use one of the \Imagick::MORPHOLOGY_* constants.

iterations

The number of iteration to apply the morphology function. A value of -1 means loop until no change found. How this is applied may depend on the morphology method. Typically this is a value of 1.

ImagickKernel

CHANNEL

返回值

范例

Example #1 Convolve Imagick::morphology()

<?php
        $imagick = $this->getCharacter();
        $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_GAUSSIAN, "5,1");
        $imagick->morphology(\Imagick::MORPHOLOGY_CONVOLVE, 2, $kernel);
        header("Content-Type: image/png");
        echo $imagick->getImageBlob();

?>

Example #2 Correlate Imagick::morphology()

<?php

        // Top-left pixel must be black
        // Bottom right pixel must be white
        // We don't care about the rest.

        $imagick = $this->getCharacterOutline();
        $kernel = \ImagickKernel::fromMatrix(self::$correlateMatrix, [2, 2]);
        $imagick->morphology(\Imagick::MORPHOLOGY_CORRELATE, 1, $kernel);
        header("Content-Type: image/png");
        echo $imagick->getImageBlob();

?>

Example #3 Erode Imagick::morphology()

<?php
        $canvas = $this->getCharacterOutline();
        $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3");
        $canvas->morphology(\Imagick::MORPHOLOGY_ERODE, 2, $kernel);
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #4 Erode Intensity Imagick::morphology()

<?php
        $canvas = $this->getCharacter();
        $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "1");
        $canvas->morphology(\Imagick::MORPHOLOGY_ERODE_INTENSITY, 2, $kernel);
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #5 Dilate Imagick::morphology()

<?php
        $canvas = $this->getCharacterOutline();
        $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3");
        $canvas->morphology(\Imagick::MORPHOLOGY_DILATE, 4, $kernel);
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #6 Dilate intensity Imagick::morphology()

<?php
        $canvas = $this->getCharacter();
        $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "1");
        $canvas->morphology(\Imagick::MORPHOLOGY_DILATE_INTENSITY, 4, $kernel);
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #7 Distance with Chebyshev kernel Imagick::morphology()

<?php
        $canvas = $this->getCharacterOutline();
        $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_CHEBYSHEV, "3");
        $canvas->morphology(\Imagick::MORPHOLOGY_DISTANCE, 3, $kernel);
        $canvas->autoLevelImage();
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #8 Distance with Manhattan kernel Imagick::morphology()

<?php
        $canvas = $this->getCharacterOutline();
        $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_MANHATTAN, "5");
        $canvas->morphology(\Imagick::MORPHOLOGY_DISTANCE, 3, $kernel);
        $canvas->autoLevelImage();
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #9 Distance with ocatagonal kernel Imagick::morphology()

<?php
        $canvas = $this->getCharacterOutline();
        $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGONAL, "5");
        $canvas->morphology(\Imagick::MORPHOLOGY_DISTANCE, 3, $kernel);
        $canvas->autoLevelImage();
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #10 Distance with Euclidean kernel Imagick::morphology()

<?php
        $canvas = $this->getCharacterOutline();
        $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_EUCLIDEAN, "4");
        $canvas->morphology(\Imagick::MORPHOLOGY_DISTANCE, 3, $kernel);
        $canvas->autoLevelImage();
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #11 Edge Imagick::morphology()

<?php
        $canvas = $this->getCharacterOutline();
        $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3");
        $canvas->morphology(\Imagick::MORPHOLOGY_EDGE, 1, $kernel);
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #12 Open Imagick::morphology()

<?php
        // As a result you will see that 'Open' smoothed the outline, by rounding off any sharp points, and remove any parts that is smaller than the shape used. It will also disconnect or 'open' any thin bridges.
        $canvas = $this->getCharacterOutline();
        $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6");
        $canvas->morphology(\Imagick::MORPHOLOGY_OPEN, 1, $kernel);
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #13 Open intensity Imagick::morphology()

<?php
        // As a result you will see that 'Open' smoothed the outline, by rounding off any sharp points, and remove any parts that is smaller than the shape used. It will also disconnect or 'open' any thin bridges.

        $canvas = $this->getCharacter();
        $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6");
        $canvas->morphology(\Imagick::MORPHOLOGY_OPEN_INTENSITY, 1, $kernel);
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #14 Close Imagick::morphology()

<?php
        //The basic use of the 'Close' method is to reduce or remove any 'holes' or 'gaps' about the size of the kernel 'Structure Element'. That is 'close' parts of the background that are about that size.
        $canvas = $this->getCharacterOutline();
        $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6");
        $canvas->morphology(\Imagick::MORPHOLOGY_CLOSE, 1, $kernel);
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #15 Close Intensity Imagick::morphology()

<?php
        //The basic use of the 'Close' method is to reduce or remove any 'holes' or 'gaps' about the size of the kernel 'Structure Element'. That is 'close' parts of the background that are about that size.
        $canvas = $this->getCharacter();
        $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6");
        $canvas->morphology(\Imagick::MORPHOLOGY_CLOSE_INTENSITY, 1, $kernel);
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #16 Smooth Imagick::morphology()

<?php
        $canvas = $this->getCharacterOutline();
        $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3");
        $canvas->morphology(\Imagick::MORPHOLOGY_SMOOTH, 1, $kernel);
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #17 Edge in Imagick::morphology()

<?php
        $canvas = $this->getCharacterOutline();
        $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3");
        $canvas->morphology(\Imagick::MORPHOLOGY_EDGE_IN, 1, $kernel);
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #18 Edge out Imagick::morphology()

<?php
        $canvas = $this->getCharacterOutline();
        $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3");
        $canvas->morphology(\Imagick::MORPHOLOGY_EDGE_OUT, 1, $kernel);
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #19 The 'TopHat' method, or more specifically 'White Top Hat', returns the pixels that were removed by a Opening of the shape, that is the pixels that were removed to round off the points, and the connecting bridged between shapes. Imagick::morphology()

<?php
        $canvas = $this->getCharacterOutline();
        $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "5");
        $canvas->morphology(\Imagick::MORPHOLOGY_TOP_HAT, 1, $kernel);
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #20 The 'BottomHat' method, also known as 'Black TopHat' is the pixels that a Closing of the shape adds to the image. That is the the pixels that were used to fill in the 'holes', 'gaps', and 'bridges'. Imagick::morphology()

<?php

        $canvas = $this->getCharacterOutline();
        $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "5");
        $canvas->morphology(\Imagick::MORPHOLOGY_BOTTOM_HAT, 1, $kernel);
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #21 Hit and Miss Imagick::morphology()

<?php
        $canvas = $this->getCharacterOutline();
        //This finds all the pixels with 3 pixels of the right edge
        $matrix = [[1, false, false, 0]];
        $kernel = \ImagickKernel::fromMatrix(
            $matrix,
            [0, 0]
        );
        $canvas->morphology(\Imagick::MORPHOLOGY_HIT_AND_MISS, 1, $kernel);
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #22 Thinning Imagick::morphology()

<?php
        $canvas = $this->getCharacterOutline();
        $leftEdgeKernel = \ImagickKernel::fromMatrix([[0, 1]], [1, 0]);
        $rightEdgeKernel = \ImagickKernel::fromMatrix([[1, 0]], [0, 0]);
        $leftEdgeKernel->addKernel($rightEdgeKernel);

        $canvas->morphology(\Imagick::MORPHOLOGY_THINNING, 3, $leftEdgeKernel);
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #23 Thicken Imagick::morphology()

<?php
        $canvas = $this->getCharacterOutline();
        $leftEdgeKernel = \ImagickKernel::fromMatrix([[0, 1]], [1, 0]);
        $rightEdgeKernel = \ImagickKernel::fromMatrix([[1, 0]], [0, 0]);
        $leftEdgeKernel->addKernel($rightEdgeKernel);

        $canvas->morphology(\Imagick::MORPHOLOGY_THICKEN, 3, $leftEdgeKernel);
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #24 Thick to generate a convex hull Imagick::morphology()

<?php
        $canvas = $this->getCharacterOutline();
        $diamondKernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DIAMOND, "1");
        $convexKernel =  \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_CONVEX_HULL, "");

        // The thicken morphology doesn't handle small gaps. We close them
        // with the close morphology.
        $canvas->morphology(\Imagick::MORPHOLOGY_CLOSE, 1, $diamondKernel);
        $canvas->morphology(\Imagick::MORPHOLOGY_THICKEN, -1, $convexKernel);
        $canvas->morphology(\Imagick::MORPHOLOGY_CLOSE, 1, $diamondKernel);

        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #25 Iterative morphology Imagick::morphology()

<?php
        $canvas = $this->getCharacterOutline();
        $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "2");
        $canvas->morphology(\Imagick::MORPHOLOGY_ITERATIVE, 3, $kernel);
        $canvas->autoLevelImage();
        header("Content-Type: image/png");
        echo $canvas->getImageBlob();

?>

Example #26 Helper functon to get an image silhouette Imagick::morphology()

<?php
    private function getCharacterOutline() {

        $imagick = new \Imagick(realpath("./images/character.png"));
        $character = new \Imagick();
        $character->newPseudoImage(
            $imagick->getImageWidth(),
            $imagick->getImageHeight(),
            "canvas:white"
        );
        $canvas = new \Imagick();
        $canvas->newPseudoImage(
            $imagick->getImageWidth(),
            $imagick->getImageHeight(),
            "canvas:black"
        );

        $character->compositeimage(
            $imagick,
            \Imagick::COMPOSITE_COPYOPACITY,
            0, 0
        );
        $canvas->compositeimage(
            $character,
            \Imagick::COMPOSITE_ATOP,
            0, 0
        );
        $canvas->setFormat('png');

        return $canvas;
    }

?>

Imagick::morphImages
Imagick::mosaicImages
Imagick


Forms a mosaic from images

Imagick::morphology
Imagick::motionBlurImage
Imagick
PHP Manual

Imagick::mosaicImages

(PECL imagick 2.0.0)

Imagick::mosaicImages — Forms a mosaic from images

说明

Imagick Imagick::mosaicImages ( void )

Inlays an image sequence to form a single coherent picture. It returns a wand with each image in the sequence composited at the location defined by the page offset of the image.

返回值

成功时返回 TRUE。

Imagick::morphology
Imagick::motionBlurImage
Imagick


Simulates motion blur

Imagick::mosaicImages
Imagick::negateImage
Imagick
PHP Manual

Imagick::motionBlurImage

(PECL imagick 2.0.0)

Imagick::motionBlurImage — Simulates motion blur

说明

bool Imagick::motionBlurImage ( float $radius , float $sigma , float $angle [, int $channel = Imagick::CHANNEL_DEFAULT ] )

Simulates motion blur. We convolve the image with a Gaussian operator of the given radius and standard deviation (sigma). For reasonable results, radius should be larger than sigma. Use a radius of 0 and MotionBlurImage() selects a suitable radius for you. Angle gives the angle of the blurring motion.

参数

radius

The radius of the Gaussian, in pixels, not counting the center pixel.

sigma

The standard deviation of the Gaussian, in pixels.

angle

Apply the effect along this angle.

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators. Refer to this list of channel constants. The channel argument affects only if Imagick is compiled against ImageMagick version 6.4.4 or greater.

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::motionBlurImage()

<?php
function motionBlurImage($imagePath, $radius, $sigma, $angle, $channel) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->motionBlurImage($radius, $sigma, $angle, $channel);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::mosaicImages
Imagick::negateImage
Imagick


Negates the colors in the reference image

Imagick::motionBlurImage
Imagick::newImage
Imagick
PHP Manual

Imagick::negateImage

(PECL imagick 2.0.0)

Imagick::negateImage — Negates the colors in the reference image

说明

bool Imagick::negateImage ( bool $gray [, int $channel = Imagick::CHANNEL_ALL ] )

Negates the colors in the reference image. The Grayscale option means that only grayscale values within the image are negated.

参数

gray

Whether to only negate grayscale pixels within the image.

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators. Refer to this list of channel constants.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::negateImage()

<?php
function negateImage($imagePath, $grayOnly, $channel) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->negateImage($grayOnly, $channel);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::motionBlurImage
Imagick::newImage
Imagick


创建一张图片

Imagick::negateImage
Imagick::newPseudoImage
Imagick
PHP Manual

Imagick::newImage

(PECL imagick 2.0.0)

Imagick::newImage — 创建一张图片

说明

bool Imagick::newImage ( int $cols , int $rows , mixed $background [, string $format ] )

创建一个 Imagick 图片对象，同时可以附带设置一个 ImagickPixel 值作为其背景色。

参数

cols

新建图片对象列的值（宽多少像素）

rows

新建图片对象行的值（高多少像素）

background

新建图片独享的背景色

format

图片格式。这个参数是在 Imagick 2.0.1 版本添加的。

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

更新日志

版本 | 说明
2.1.0 | 现在可以似乎用了一个字符串作为颜色传入第三个参数。在此之前的版本只允许以一个 ImagickPixel 对象的形式传入。

范例

Example #1 Using Imagick::newImage():

Create a new image and display it.

<?php

$image = new Imagick();
$image->newImage(100, 100, new ImagickPixel('red'));
$image->setImageFormat('png');

header('Content-type: image/png');
echo $image;

?>

Imagick::negateImage
Imagick::newPseudoImage
Imagick


Creates a new image

Imagick::newImage
Imagick::nextImage
Imagick
PHP Manual

Imagick::newPseudoImage

(PECL imagick 2.0.0)

Imagick::newPseudoImage — Creates a new image

说明

bool Imagick::newPseudoImage ( int $columns , int $rows , string $pseudoString )

Creates a new image using ImageMagick pseudo-formats.

参数

columns

columns in the new image

rows

rows in the new image

pseudoString

string containing pseudo image definition.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::newPseudoImage()

<?php
function newPseudoImage($canvasType) {
    $imagick = new \Imagick();
    $imagick->newPseudoImage(300, 300, $canvasType);
    $imagick->setImageFormat("png");
    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

//newPseudoImage('gradient:red-rgba(64, 255, 255, 0.5)');
//newPseudoImage("radial-gradient:red-blue");
newPseudoImage("plasma:fractal");

?>

Imagick::newImage
Imagick::nextImage
Imagick


Moves to the next image

Imagick::newPseudoImage
Imagick::normalizeImage
Imagick
PHP Manual

Imagick::nextImage

(PECL imagick 2.0.0)

Imagick::nextImage — Moves to the next image

说明

bool Imagick::nextImage ( void )

Associates the next image in the image list with an Imagick object.

返回值

成功时返回 TRUE。

Imagick::newPseudoImage
Imagick::normalizeImage
Imagick


Enhances the contrast of a color image

Imagick::nextImage
Imagick::oilPaintImage
Imagick
PHP Manual

Imagick::normalizeImage

(PECL imagick 2.0.0)

Imagick::normalizeImage — Enhances the contrast of a color image

说明

bool Imagick::normalizeImage ([ int $channel = Imagick::CHANNEL_ALL ] )

Enhances the contrast of a color image by adjusting the pixels color to span the entire range of colors available.

参数

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators. Refer to this list of channel constants.

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::normalizeImage()

<?php
function normalizeImage($imagePath, $channel) {
    $imagick = new \Imagick(realpath($imagePath));
    $original = clone $imagick;
    $original->cropimage($original->getImageWidth() / 2, $original->getImageHeight(), 0, 0);
    $imagick->normalizeImage($channel);
    $imagick->compositeimage($original, \Imagick::COMPOSITE_ATOP, 0, 0);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::nextImage
Imagick::oilPaintImage
Imagick


Simulates an oil painting

Imagick::normalizeImage
Imagick::opaquePaintImage
Imagick
PHP Manual

Imagick::oilPaintImage

(PECL imagick 2.0.0)

Imagick::oilPaintImage — Simulates an oil painting

说明

bool Imagick::oilPaintImage ( float $radius )

Applies a special effect filter that simulates an oil painting. Each pixel is replaced by the most frequent color occurring in a circular region defined by radius.

参数

radius

The radius of the circular neighborhood.

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::oilPaintImage()

<?php
function oilPaintImage($imagePath, $radius) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->oilPaintImage($radius);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::normalizeImage
Imagick::opaquePaintImage
Imagick


Changes the color value of any pixel that matches target

Imagick::oilPaintImage
Imagick::optimizeImageLayers
Imagick
PHP Manual

Imagick::opaquePaintImage

(No version information available, might only be in Git)

Imagick::opaquePaintImage — Changes the color value of any pixel that matches target

说明

bool Imagick::opaquePaintImage ( mixed $target , mixed $fill , float $fuzz , bool $invert [, int $channel = Imagick::CHANNEL_DEFAULT ] )

Changes any pixel that matches color with the color defined by fill. 此方法在Imagick基于ImageMagick 6.3.8以上版本编译时可用。

参数

target

ImagickPixel object or a string containing the color to change

fill

The replacement color

fuzz

The amount of fuzz. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color.

invert

If TRUE paints any pixel that does not match the target color.

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. 缺省为Imagick::CHANNEL_DEFAULT. 参考此 通道常数列表

返回值

成功时返回 TRUE。

Imagick::oilPaintImage
Imagick::optimizeImageLayers
Imagick


Removes repeated portions of images to optimize

Imagick::opaquePaintImage
Imagick::orderedPosterizeImage
Imagick
PHP Manual

Imagick::optimizeImageLayers

(PECL imagick 2.0.0)

Imagick::optimizeImageLayers — Removes repeated portions of images to optimize

说明

bool Imagick::optimizeImageLayers ( void )

Compares each image the GIF disposed forms of the previous image in the sequence. From this it attempts to select the smallest cropped image to replace each frame, while preserving the results of the animation. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Using Imagick::optimizeImageLayers()

Reading, optimizing and writing a GIF image

<?php
/* create new imagick object */
$im = new Imagick("test.gif");

/* optimize the image layers */
$im->optimizeImageLayers();

/* write the image back */
$im->writeImages("test_optimized.gif", true);
?>

参见

  • Imagick::compareImageLayers() - Returns the maximum bounding region between images
  • Imagick::writeImages() - Writes an image or image sequence
  • Imagick::writeImage() - 把图片写入指定的文件

Imagick::opaquePaintImage
Imagick::orderedPosterizeImage
Imagick


Performs an ordered dither

Imagick::optimizeImageLayers
Imagick::paintFloodfillImage
Imagick
PHP Manual

Imagick::orderedPosterizeImage

(PECL imagick 2.2.2)

Imagick::orderedPosterizeImage — Performs an ordered dither

说明

bool Imagick::orderedPosterizeImage ( string $threshold_map [, int $channel = Imagick::CHANNEL_ALL ] )

Performs an ordered dither based on a number of pre-defined dithering threshold maps, but over multiple intensity levels, which can be different for different channels, according to the input arguments. 此方法在Imagick基于ImageMagick 6.3.1以上版本编译时可用。

参数

threshold_map

A string containing the name of the threshold dither map to use

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators. Refer to this list of channel constants.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::orderedPosterizeImage()

<?php
function orderedPosterizeImage($imagePath, $orderedPosterizeType) {
    $imagick = new \Imagick(realpath($imagePath));

    $imagick->orderedPosterizeImage($orderedPosterizeType);
    $imagick->setImageFormat('png');

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

//orderedPosterizeImage($imagePath, 'o4x4,3,3');
//orderedPosterizeImage($imagePath, 'o8x8,6,6');
orderedPosterizeImage($imagePath, 'h8x8a');

?>

Imagick::optimizeImageLayers
Imagick::paintFloodfillImage
Imagick


Changes the color value of any pixel that matches target

Imagick::orderedPosterizeImage
Imagick::paintOpaqueImage
Imagick
PHP Manual

Imagick::paintFloodfillImage

(PECL imagick 2.1.0)

Imagick::paintFloodfillImage — Changes the color value of any pixel that matches target

说明

bool Imagick::paintFloodfillImage ( mixed $fill , float $fuzz , mixed $bordercolor , int $x , int $y [, int $channel = Imagick::CHANNEL_ALL ] )

Changes the color value of any pixel that matches target and is an immediate neighbor. As of ImageMagick 6.3.8 this method has been deprecated and Imagick::floodfillPaintImage() should be used instead.

参数

fill

ImagickPixel object or a string containing the fill color

fuzz

The amount of fuzz. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color for the purposes of the floodfill.

bordercolor

ImagickPixel object or a string containing the border color

x

X start position of the floodfill

y

Y start position of the floodfill

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. 缺省为Imagick::CHANNEL_DEFAULT. 参考此 通道常数列表

返回值

成功时返回 TRUE。

Imagick::orderedPosterizeImage
Imagick::paintOpaqueImage
Imagick


Change any pixel that matches color

Imagick::paintFloodfillImage
Imagick::paintTransparentImage
Imagick
PHP Manual

Imagick::paintOpaqueImage

(PECL imagick 2.0.0)

Imagick::paintOpaqueImage — Change any pixel that matches color

说明

bool Imagick::paintOpaqueImage ( mixed $target , mixed $fill , float $fuzz [, int $channel = Imagick::CHANNEL_ALL ] )

Changes any pixel that matches color with the color defined by fill.

参数

target

Change this target color to the fill color within the image. An ImagickPixel object or a string representing the target color.

fill

An ImagickPixel object or a string representing the fill color.

fuzz

The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same.

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators. Refer to this list of channel constants.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

更新日志

版本 | 说明
2.1.0 | Now allows a string representing the color as first and second parameter. Previous versions allow only an ImagickPixel object.

Imagick::paintFloodfillImage
Imagick::paintTransparentImage
Imagick


Changes any pixel that matches color with the color defined by fill

Imagick::paintOpaqueImage
Imagick::pingImage
Imagick
PHP Manual

Imagick::paintTransparentImage

(PECL imagick 2.0.0)

Imagick::paintTransparentImage — Changes any pixel that matches color with the color defined by fill

说明

bool Imagick::paintTransparentImage ( mixed $target , float $alpha , float $fuzz )

Changes any pixel that matches color with the color defined by fill.

参数

target

Change this target color to specified opacity value within the image.

alpha

The level of transparency: 1.0 is fully opaque and 0.0 is fully transparent.

fuzz

The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

更新日志

版本 | 说明
2.1.0 | Now allows a string representing the color as the first parameter. Previous versions allow only an ImagickPixel object.

Imagick::paintOpaqueImage
Imagick::pingImage
Imagick


Fetch basic attributes about the image

Imagick::paintTransparentImage
Imagick::pingImageBlob
Imagick
PHP Manual

Imagick::pingImage

(PECL imagick 2.0.0)

Imagick::pingImage — Fetch basic attributes about the image

说明

bool Imagick::pingImage ( string $filename )

This method can be used to query image width, height, size, and format without reading the whole image in to memory.

参数

filename

The filename to read the information from.

返回值

成功时返回 TRUE。

Imagick::paintTransparentImage
Imagick::pingImageBlob
Imagick


Quickly fetch attributes

Imagick::pingImage
Imagick::pingImageFile
Imagick
PHP Manual

Imagick::pingImageBlob

(PECL imagick 2.0.0)

Imagick::pingImageBlob — Quickly fetch attributes

说明

bool Imagick::pingImageBlob ( string $image )

This method can be used to query image width, height, size, and format without reading the whole image to memory. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

参数

image

A string containing the image.

返回值

成功时返回 TRUE。

范例

Example #1 Using Imagick::pingImageBlob()

Pinging an image from a string

<?php
/* read image contents */
$image = file_get_contents("test.jpg");

/* create new imagick object */
$im = new Imagick();

/* pass the string to the imagick object */
$im->pingImageBlob($image);

/* output image width and height */
echo $im->getImageWidth() . 'x' . $im->getImageHeight();
?>

参见

  • Imagick::pingImage() - Fetch basic attributes about the image
  • Imagick::pingImageFile() - Get basic image attributes in a lightweight manner
  • Imagick::readImage() - Reads image from filename
  • Imagick::readImageBlob() - 从二进制字符串里读取图片
  • Imagick::readImageFile() - Reads image from open filehandle

Imagick::pingImage
Imagick::pingImageFile
Imagick


Get basic image attributes in a lightweight manner

Imagick::pingImageBlob
Imagick::polaroidImage
Imagick
PHP Manual

Imagick::pingImageFile

(PECL imagick 2.0.0)

Imagick::pingImageFile — Get basic image attributes in a lightweight manner

说明

bool Imagick::pingImageFile ( resource $filehandle [, string $fileName ] )

This method can be used to query image width, height, size, and format without reading the whole image to memory. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

参数

filehandle

An open filehandle to the image.

fileName

Optional filename for this image.

返回值

成功时返回 TRUE。

范例

Example #1 Using Imagick::pingImageFile()

Opening a remote location

<?php
/* fopen a remote location */
$fp = fopen("http://example.com/test.jpg");

/* create new imagick object */
$im = new Imagick();

/* pass the handle to imagick */
$im->pingImageFile($fp);
?>

参见

  • Imagick::pingImage() - Fetch basic attributes about the image
  • Imagick::pingImageBlob() - Quickly fetch attributes
  • Imagick::readImage() - Reads image from filename
  • Imagick::readImageBlob() - 从二进制字符串里读取图片
  • Imagick::readImageFile() - Reads image from open filehandle

Imagick::pingImageBlob
Imagick::polaroidImage
Imagick


Simulates a Polaroid picture

Imagick::pingImageFile
Imagick::posterizeImage
Imagick
PHP Manual

Imagick::polaroidImage

(PECL imagick 2.0.0)

Imagick::polaroidImage — Simulates a Polaroid picture

说明

bool Imagick::polaroidImage ( ImagickDraw $properties , float $angle )

Simulates a Polaroid picture. 此方法在Imagick基于ImageMagick 6.3.2以上版本编译时可用。

参数

properties

The polaroid properties

angle

The polaroid angle

返回值

成功时返回 TRUE。

范例

Example #1 A Imagick::polaroidImage() example

An example of using Imagick::polaroidImage()

<?php
/* Create the object */
$image = new Imagick('source.png');

/* Set the opacity */
$image->polaroidImage(new ImagickDraw(), 25);

/* output the image */
header('Content-type: image/png');
echo $image;

?>

Imagick::pingImageFile
Imagick::posterizeImage
Imagick


Reduces the image to a limited number of color level

Imagick::polaroidImage
Imagick::previewImages
Imagick
PHP Manual

Imagick::posterizeImage

(PECL imagick 2.0.0)

Imagick::posterizeImage — Reduces the image to a limited number of color level

说明

bool Imagick::posterizeImage ( int $levels , bool $dither )

Reduces the image to a limited number of color level.

参数

levels

dither

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::posterizeImage()

<?php
function posterizeImage($imagePath, $posterizeType, $numberLevels) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->posterizeImage($numberLevels, $posterizeType);
    $imagick->setImageFormat('png');
    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

posterizeImage($imagePath, \Imagick::DITHERMETHOD_RIEMERSMA, 8);

?>

Imagick::polaroidImage
Imagick::previewImages
Imagick


Quickly pin-point appropriate parameters for image processing

Imagick::posterizeImage
Imagick::previousImage
Imagick
PHP Manual

Imagick::previewImages

(PECL imagick 2.0.0)

Imagick::previewImages — Quickly pin-point appropriate parameters for image processing

说明

bool Imagick::previewImages ( int $preview )

Tiles 9 thumbnails of the specified image with an image processing operation applied at varying strengths. This is helpful to quickly pin-point an appropriate parameter for an image processing operation.

参数

preview

Preview type. See Preview type constants

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::posterizeImage
Imagick::previousImage
Imagick


Move to the previous image in the object

Imagick::previewImages
Imagick::profileImage
Imagick
PHP Manual

Imagick::previousImage

(PECL imagick 2.0.0)

Imagick::previousImage — Move to the previous image in the object

说明

bool Imagick::previousImage ( void )

Assocates the previous image in an image list with the Imagick object.

返回值

成功时返回 TRUE。

Imagick::previewImages
Imagick::profileImage
Imagick


Adds or removes a profile from an image

Imagick::previousImage
Imagick::quantizeImage
Imagick
PHP Manual

Imagick::profileImage

(PECL imagick 2.0.0)

Imagick::profileImage — Adds or removes a profile from an image

说明

bool Imagick::profileImage ( string $name , string $profile )

Adds or removes a ICC, IPTC, or generic profile from an image. If the profile is NULL, it is removed from the image otherwise added. Use a name of '*' and a profile of NULL to remove all profiles from the image.

参数

name

profile

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::previousImage
Imagick::quantizeImage
Imagick


Analyzes the colors within a reference image

Imagick::profileImage
Imagick::quantizeImages
Imagick
PHP Manual

Imagick::quantizeImage

(PECL imagick 2.0.0)

Imagick::quantizeImage — Analyzes the colors within a reference image

说明

bool Imagick::quantizeImage ( int $numberColors , int $colorspace , int $treedepth , bool $dither , bool $measureError )

参数

numberColors

colorspace

treedepth

dither

measureError

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::quantizeImage()

<?php
function quantizeImage($imagePath, $numberColors, $colorSpace, $treeDepth, $dither) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->quantizeImage($numberColors, $colorSpace, $treeDepth, $dither, false);
    $imagick->setImageFormat('png');
    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

Imagick::profileImage
Imagick::quantizeImages
Imagick


Analyzes the colors within a sequence of images

Imagick::quantizeImage
Imagick::queryFontMetrics
Imagick
PHP Manual

Imagick::quantizeImages

(PECL imagick 2.0.0)

Imagick::quantizeImages — Analyzes the colors within a sequence of images

说明

bool Imagick::quantizeImages ( int $numberColors , int $colorspace , int $treedepth , bool $dither , bool $measureError )

参数

numberColors

colorspace

treedepth

dither

measureError

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::quantizeImage
Imagick::queryFontMetrics
Imagick


Returns an array representing the font metrics

Imagick::quantizeImages
Imagick::queryFonts
Imagick
PHP Manual

Imagick::queryFontMetrics

(PECL imagick 2.0.0)

Imagick::queryFontMetrics — Returns an array representing the font metrics

说明

array Imagick::queryFontMetrics ( ImagickDraw $properties , string $text [, bool $multiline ] )

Returns a multi-dimensional array representing the font metrics.

参数

properties

ImagickDraw object containing font properties

text

The text

multiline

Multiline parameter. If left empty it is autodetected

返回值

Returns a multi-dimensional array representing the font metrics.

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Using Imagick::queryFontMetrics():

Query the metrics for the text and dump the results on the screen.

<?php
/* Create a new Imagick object */
$im = new Imagick();

/* Create an ImagickDraw object */
$draw = new ImagickDraw();

/* Set the font */
$draw->setFont('/path/to/font.ttf');

/* Dump the font metrics, autodetect multiline */
var_dump($im->queryFontMetrics($draw, "Hello World!"));
?>

Imagick::quantizeImages
Imagick::queryFonts
Imagick


Returns the configured fonts

Imagick::queryFontMetrics
Imagick::queryFormats
Imagick
PHP Manual

Imagick::queryFonts

(PECL imagick 2.0.0)

Imagick::queryFonts — Returns the configured fonts

说明

array Imagick::queryFonts ([ string $pattern = "*" ] )

Returns the configured fonts.

参数

pattern

The query pattern

返回值

Returns an array containing the configured fonts.

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::queryFonts()

<?php
        $output = '';
        $output .= "Fonts that match 'Helvetica*' are:<br/>";

        $fontList = \Imagick::queryFonts("Helvetica*");

        foreach ($fontList as $fontName) {
            $output .= '<li>'. $fontName."</li>";
        }

        return $output;

?>

Imagick::queryFontMetrics
Imagick::queryFormats
Imagick


Returns formats supported by Imagick

Imagick::queryFonts
Imagick::radialBlurImage
Imagick
PHP Manual

Imagick::queryFormats

(PECL imagick 2.0.0)

Imagick::queryFormats — Returns formats supported by Imagick

说明

array Imagick::queryFormats ([ string $pattern = "*" ] )

Returns formats supported by Imagick.

参数

pattern

返回值

Returns an array containing the formats supported by Imagick.

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::queryFormats()

<?php
    function render() {
        $output = "";
        $input = \Imagick::queryformats();
        $columns = 6;

        $output .= "<table border='2'>";

        for ($i=0; $i < count($input); $i += $columns) {
            $output .= "<tr>";
            for ($c=0; $c<$columns; $c++) {
                $output .= "<td>";
                if (($i + $c) <  count($input)) {
                    $output .= $input[$i + $c];
                }
                $output .= "</td>";
            }
            $output .= "</tr>";
        }

        $output .= "</table>";

        return $output;
    }

?>

Imagick::queryFonts
Imagick::radialBlurImage
Imagick


Radial blurs an image

Imagick::queryFormats
Imagick::raiseImage
Imagick
PHP Manual

Imagick::radialBlurImage

(PECL imagick 2.0.0)

Imagick::radialBlurImage — Radial blurs an image

说明

bool Imagick::radialBlurImage ( float $angle [, int $channel = Imagick::CHANNEL_ALL ] )

Radial blurs an image.

参数

angle

channel

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::radialBlurImage()

<?php
function radialBlurImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    //Blur 3 times with different radii
    $imagick->radialBlurImage(3);
    $imagick->radialBlurImage(5);
    $imagick->radialBlurImage(7);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::queryFormats
Imagick::raiseImage
Imagick


Creates a simulated 3d button-like effect

Imagick::radialBlurImage
Imagick::randomThresholdImage
Imagick
PHP Manual

Imagick::raiseImage

(PECL imagick 2.0.0)

Imagick::raiseImage — Creates a simulated 3d button-like effect

说明

bool Imagick::raiseImage ( int $width , int $height , int $x , int $y , bool $raise )

Creates a simulated three-dimensional button-like effect by lightening and darkening the edges of the image. Members width and height of raise_info define the width of the vertical and horizontal edge of the effect.

参数

width

height

x

y

raise

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::raiseImage()

<?php
function raiseImage($imagePath, $width, $height, $x, $y, $raise) {
    $imagick = new \Imagick(realpath($imagePath));

    //x and y do nothing?
    $imagick->raiseImage($width, $height, $x, $y, $raise);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::radialBlurImage
Imagick::randomThresholdImage
Imagick


Creates a high-contrast, two-color image

Imagick::raiseImage
Imagick::readImage
Imagick
PHP Manual

Imagick::randomThresholdImage

(PECL imagick 2.0.0)

Imagick::randomThresholdImage — Creates a high-contrast, two-color image

说明

bool Imagick::randomThresholdImage ( float $low , float $high [, int $channel = Imagick::CHANNEL_ALL ] )

Changes the value of individual pixels based on the intensity of each pixel compared to threshold. The result is a high-contrast, two color image. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

参数

low

The low point

high

The high point

channel

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channeltype constants using bitwise operators. Refer to this list of channel constants.

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::randomThresholdImage()

<?php
function randomThresholdimage($imagePath, $lowThreshold, $highThreshold, $channel) {
    $imagick = new \Imagick(realpath($imagePath));

    $imagick->randomThresholdimage(
        $lowThreshold * \Imagick::getQuantum(),
        $highThreshold * \Imagick::getQuantum(),
        $channel
    );
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::raiseImage
Imagick::readImage
Imagick


Reads image from filename

Imagick::randomThresholdImage
Imagick::readImageBlob
Imagick
PHP Manual

Imagick::readImage

(PECL imagick 0.9.0-0.9.9)

Imagick::readImage — Reads image from filename

说明

bool Imagick::readImage ( string $filename )

Reads image from filename

参数

filename

返回值

成功时返回 TRUE。

Imagick::randomThresholdImage
Imagick::readImageBlob
Imagick


从二进制字符串里读取图片

Imagick::readImage
Imagick::readImageFile
Imagick
PHP Manual

Imagick::readImageBlob

(PECL imagick 2.0.0)

Imagick::readImageBlob — 从二进制字符串里读取图片

说明

bool Imagick::readImageBlob ( string $image [, string $filename ] )

从二进制字符串里读取图片

参数

image

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::readImageBlob()

<?php
function readImageBlob() {
    $base64 = "iVBORw0KGgoAAAANSUhEUgAAAM0AAAD
 NCAMAAAAsYgRbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5c
 cllPAAAABJQTFRF3NSmzMewPxIG//ncJEJsldTou1jHgAAAARBJREFUeNrs2EEK
 gCAQBVDLuv+V20dENbMY831wKz4Y/VHb/5RGQ0NDQ0NDQ0NDQ0NDQ0NDQ
 0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0PzMWtyaGhoaGhoaGhoaGhoaGhoxtb0QGho
 aGhoaGhoaGhoaGhoaMbRLEvv50VTQ9OTQ5OpyZ01GpM2g0bfmDQaL7S+ofFC6x
 v3ZpxJiywakzbvd9r3RWPS9I2+MWk0+kbf0Hih9Y17U0nTHibrDDQ0NDQ0NDQ0
 NDQ0NDQ0NTXbRSL/AK72o6GhoaGhoRlL8951vwsNDQ0NDQ1NDc0WyHtDTEhD
 Q0NDQ0NTS5MdGhoaGhoaGhoaGhoaGhoaGhoaGhoaGposzSHAAErMwwQ2HwRQ
 AAAAAElFTkSuQmCC";

    $imageBlob = base64_decode($base64);

    $imagick = new Imagick();
    $imagick->readImageBlob($imageBlob);

    header("Content-Type: image/png");
    echo $imageBlob;
}

?>

Imagick::readImage
Imagick::readImageFile
Imagick


Reads image from open filehandle

Imagick::readImageBlob
Imagick::readimages
Imagick
PHP Manual

Imagick::readImageFile

(PECL imagick 2.0.0)

Imagick::readImageFile — Reads image from open filehandle

说明

bool Imagick::readImageFile ( resource $filehandle [, string $fileName = null ] )

Reads image from open filehandle

参数

filehandle

fileName

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::readImageBlob
Imagick::readimages
Imagick


Description

Imagick::readImageFile
Imagick::recolorImage
Imagick
PHP Manual

Imagick::readimages

(No version information available, might only be in Git)

Imagick::readimages — Description

说明

public Imagick Imagick::readImages ( string $filenames )

Reads image from an array of filenames. All the images are held in a single Imagick object.

参数

filenames

返回值

The Imagick object that contains all the images.

Imagick::readImageFile
Imagick::recolorImage
Imagick


Recolors image

Imagick::readimages
Imagick::reduceNoiseImage
Imagick
PHP Manual

Imagick::recolorImage

(No version information available, might only be in Git)

Imagick::recolorImage — Recolors image

说明

bool Imagick::recolorImage ( array $matrix )

Translate, scale, shear, or rotate image colors. This method supports variable sized matrices but normally 5x5 matrix is used for RGBA and 6x6 is used for CMYK. The last row should contain the normalized values. 此方法在Imagick基于ImageMagick 6.3.6以上版本编译时可用。

参数

matrix

The matrix containing the color values

返回值

成功时返回 TRUE。

参见

  • Imagick::displayImage() - Displays an image

范例

Example #1 Imagick::recolorImage()

<?php
function recolorImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $remapColor = [ 1, 0, 0,
        0, 0, 1,
        0, 1, 0,];

//$remapColor = [
//    1.438, -0.122, -0.016,  0, 0, -0.03,
//    -0.062,  1.378, -0.016,  0, 0,  0.05,
//    -0.062, -0.122, 1.483,   0, 0, -0.02,
//];

    @$imagick->recolorImage($remapColor);

    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::readimages
Imagick::reduceNoiseImage
Imagick


Smooths the contours of an image

Imagick::recolorImage
Imagick::remapImage
Imagick
PHP Manual

Imagick::reduceNoiseImage

(PECL imagick 2.0.0)

Imagick::reduceNoiseImage — Smooths the contours of an image

说明

bool Imagick::reduceNoiseImage ( float $radius )

Smooths the contours of an image while still preserving edge information. The algorithm works by replacing each pixel with its neighbor closest in value. A neighbor is defined by radius. Use a radius of 0 and Imagick::reduceNoiseImage() selects a suitable radius for you.

参数

radius

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::reduceNoiseImage()

<?php
function reduceNoiseImage($imagePath, $reduceNoise) {
    $imagick = new \Imagick(realpath($imagePath));
    @$imagick->reduceNoiseImage($reduceNoise);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::recolorImage
Imagick::remapImage
Imagick


Remaps image colors

Imagick::reduceNoiseImage
Imagick::removeImage
Imagick
PHP Manual

Imagick::remapImage

(No version information available, might only be in Git)

Imagick::remapImage — Remaps image colors

说明

public bool Imagick::remapImage ( Imagick $replacement , int $DITHER )

Replaces colors an image with those defined by replacement. The colors are replaced with the closest possible color. 此方法在Imagick基于ImageMagick 6.4.5以上版本编译时可用。

参数

replacement

An Imagick object containing the replacement colors

DITHER

Refer to this list of dither method constants

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::reduceNoiseImage
Imagick::removeImage
Imagick


Removes an image from the image list

Imagick::remapImage
Imagick::removeImageProfile
Imagick
PHP Manual

Imagick::removeImage

(PECL imagick 2.0.0)

Imagick::removeImage — Removes an image from the image list

说明

bool Imagick::removeImage ( void )

Removes an image from the image list.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::remapImage
Imagick::removeImageProfile
Imagick


Removes the named image profile and returns it

Imagick::removeImage
Imagick::render
Imagick
PHP Manual

Imagick::removeImageProfile

(PECL imagick 2.0.0)

Imagick::removeImageProfile — Removes the named image profile and returns it

说明

string Imagick::removeImageProfile ( string $name )

Removes the named image profile and returns it.

参数

name

返回值

Returns a string containing the profile of the image.

错误／异常

错误时抛出 ImagickException。

Imagick::removeImage
Imagick::render
Imagick


Renders all preceding drawing commands

Imagick::removeImageProfile
Imagick::resampleImage
Imagick
PHP Manual

Imagick::render

(PECL imagick 2.0.0)

Imagick::render — Renders all preceding drawing commands

说明

bool Imagick::render ( void )

Renders all preceding drawing commands.

返回值

成功时返回 TRUE。

Imagick::removeImageProfile
Imagick::resampleImage
Imagick


Resample image to desired resolution

Imagick::render
Imagick::resetImagePage
Imagick
PHP Manual

Imagick::resampleImage

(PECL imagick 2.0.0)

Imagick::resampleImage — Resample image to desired resolution

说明

bool Imagick::resampleImage ( float $x_resolution , float $y_resolution , int $filter , float $blur )

Resample image to desired resolution.

参数

x_resolution

y_resolution

filter

blur

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::resampleImage()

<?php
function resampleImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));

    $imagick->resampleImage(200, 200, \Imagick::FILTER_LANCZOS, 1);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::render
Imagick::resetImagePage
Imagick


Reset image page

Imagick::resampleImage
Imagick::resizeImage
Imagick
PHP Manual

Imagick::resetImagePage

(No version information available, might only be in Git)

Imagick::resetImagePage — Reset image page

说明

bool Imagick::resetImagePage ( string $page )

The page definition as a string. The string is in format WxH+x+y. 此方法在Imagick基于ImageMagick 6.3.6以上版本编译时可用。

参数

page

The page definition. For example 7168x5147+0+0

返回值

成功时返回 TRUE。

Imagick::resampleImage
Imagick::resizeImage
Imagick


Scales an image

Imagick::resetImagePage
Imagick::rollImage
Imagick
PHP Manual

Imagick::resizeImage

(PECL imagick 2.0.0)

Imagick::resizeImage — Scales an image

说明

bool Imagick::resizeImage ( int $columns , int $rows , int $filter , float $blur [, bool $bestfit = false ] )

Scales an image to the desired dimensions with a filter.

Note: 参数 bestfit 的特性在 Imagick 3.0.0 中已改变。在此版本以前，当目标尺寸设为 400x400 时，原尺寸为 200x150 的图像将不会被改变。自 Imagick 3.0.0 起，源图像将会被放大到 400x300 因为这将更好的适合目标尺寸。当使用参数 bestfit 时，必须同时给出宽度和高度。

参数

columns

Width of the image

rows

Height of the image

filter

Refer to the list of filter constants.

blur

The blur factor where > 1 is blurry, < 1 is sharp.

bestfit

Optional fit parameter.

返回值

成功时返回 TRUE。

更新日志

版本 | 说明
2.1.0 | Added optional fit parameter. This method now supports proportional scaling. Pass zero as either parameter for proportional scaling.

范例

Example #1 Imagick::resizeImage()

<?php
function resizeImage($imagePath, $width, $height, $filterType, $blur, $bestFit, $cropZoom) {
    //The blur factor where &gt; 1 is blurry, &lt; 1 is sharp.
    $imagick = new \Imagick(realpath($imagePath));

    $imagick->resizeImage($width, $height, $filterType, $blur, $bestFit);

    $cropWidth = $imagick->getImageWidth();
    $cropHeight = $imagick->getImageHeight();

    if ($cropZoom) {
        $newWidth = $cropWidth / 2;
        $newHeight = $cropHeight / 2;

        $imagick->cropimage(
            $newWidth,
            $newHeight,
            ($cropWidth - $newWidth) / 2,
            ($cropHeight - $newHeight) / 2
        );

        $imagick->scaleimage(
            $imagick->getImageWidth() * 4,
            $imagick->getImageHeight() * 4
        );
    }

    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::resetImagePage
Imagick::rollImage
Imagick


Offsets an image

Imagick::resizeImage
Imagick::rotateImage
Imagick
PHP Manual

Imagick::rollImage

(PECL imagick 2.0.0)

Imagick::rollImage — Offsets an image

说明

bool Imagick::rollImage ( int $x , int $y )

Offsets an image as defined by x and y.

参数

x

The X offset.

y

The Y offset.

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::rollImage()

<?php
function rollImage($imagePath, $rollX, $rollY) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->rollimage($rollX, $rollY);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::resizeImage
Imagick::rotateImage
Imagick


Rotates an image

Imagick::rollImage
Imagick::rotationalBlurImage
Imagick
PHP Manual

Imagick::rotateImage

(PECL imagick 2.0.0)

Imagick::rotateImage — Rotates an image

说明

bool Imagick::rotateImage ( mixed $background , float $degrees )

Rotates an image the specified number of degrees. Empty triangles left over from rotating the image are filled with the background color.

参数

background

The background color

degrees

Rotation angle, in degrees. The rotation angle is interpreted as the number of degrees to rotate the image clockwise.

返回值

成功时返回 TRUE。

更新日志

版本 | 说明
2.1.0 | Now allows a string representing the color as the first parameter. Previous versions allow only an ImagickPixel object.

范例

Example #1 Imagick::rotateImage()

<?php
function rotateImage($imagePath, $angle, $color) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->rotateimage($color, $angle);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::rollImage
Imagick::rotationalBlurImage
Imagick


Description

Imagick::rotateImage
Imagick::roundCorners
Imagick
PHP Manual

Imagick::rotationalBlurImage

(No version information available, might only be in Git)

Imagick::rotationalBlurImage — Description

说明

public void Imagick::rotationalBlurImage ( string $angle [, string $CHANNEL = Imagick::CHANNEL_DEFAULT ] )

Rotational blurs an image.

参数

angle

The angle to apply the blur over.

CHANNEL

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. 缺省为Imagick::CHANNEL_DEFAULT. 参考此 通道常数列表

返回值

范例

Example #1 Imagick::rotationalBlurImage()

<?php
function rotationalBlurImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->rotationalBlurImage(3);
    $imagick->rotationalBlurImage(5);
    $imagick->rotationalBlurImage(7);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::rotateImage
Imagick::roundCorners
Imagick


Rounds image corners

Imagick::rotationalBlurImage
Imagick::sampleImage
Imagick
PHP Manual

Imagick::roundCorners

(PECL imagick 2.0.0)

Imagick::roundCorners — Rounds image corners

说明

bool Imagick::roundCorners ( float $x_rounding , float $y_rounding [, float $stroke_width = 10 [, float $displace = 5 [, float $size_correction = -6 ]]] )

Rounds image corners. The first two parameters control the amount of rounding and the three last parameters can be used to fine-tune the rounding process. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

参数

x_rounding

x rounding

y_rounding

y rounding

stroke_width

stroke width

displace

image displace

size_correction

size correction

范例

Example #1 Using Imagick::roundCorners():

Rounds the image corners

<?php

$image = new Imagick();
$image->newPseudoImage(100, 100, "magick:rose");
$image->setImageFormat("png");

$image->roundCorners(5,3);
$image->writeImage("rounded.png");
?>

返回值

成功时返回 TRUE。

Imagick::rotationalBlurImage
Imagick::sampleImage
Imagick


Scales an image with pixel sampling

Imagick::roundCorners
Imagick::scaleImage
Imagick
PHP Manual

Imagick::sampleImage

(PECL imagick 2.0.0)

Imagick::sampleImage — Scales an image with pixel sampling

说明

bool Imagick::sampleImage ( int $columns , int $rows )

Scales an image to the desired dimensions with pixel sampling. Unlike other scaling methods, this method does not introduce any additional color into the scaled image.

参数

columns

rows

返回值

成功时返回 TRUE。

Imagick::roundCorners
Imagick::scaleImage
Imagick


Scales the size of an image

Imagick::sampleImage
Imagick::segmentImage
Imagick
PHP Manual

Imagick::scaleImage

(PECL imagick 2.0.0)

Imagick::scaleImage — Scales the size of an image

说明

bool Imagick::scaleImage ( int $cols , int $rows [, bool $bestfit = false ] )

Scales the size of an image to the given dimensions. The other parameter will be calculated if 0 is passed as either param.

Note: 参数 bestfit 的特性在 Imagick 3.0.0 中已改变。在此版本以前，当目标尺寸设为 400x400 时，原尺寸为 200x150 的图像将不会被改变。自 Imagick 3.0.0 起，源图像将会被放大到 400x300 因为这将更好的适合目标尺寸。当使用参数 bestfit 时，必须同时给出宽度和高度。

参数

cols

rows

bestfit

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

更新日志

版本 | 说明
2.1.0 | Added optional fit parameter. This method now supports proportional scaling. Pass zero as either parameter for proportional scaling.

范例

Example #1 Imagick::scaleImage()

<?php
function scaleImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->scaleImage(150, 150, true);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::sampleImage
Imagick::segmentImage
Imagick


Segments an image

Imagick::scaleImage
Imagick::selectiveBlurImage
Imagick
PHP Manual

Imagick::segmentImage

(No version information available, might only be in Git)

Imagick::segmentImage — Segments an image

说明

public bool Imagick::segmentImage ( int $COLORSPACE , float $cluster_threshold , float $smooth_threshold [, bool $verbose = false ] )

Analyses the image and identifies units that are similar. 此方法在Imagick基于ImageMagick 6.4.5以上版本编译时可用。

参数

COLORSPACE

One of the COLORSPACE constants.

cluster_threshold

A percentage describing minimum number of pixels contained in hexedra before it is considered valid.

smooth_threshold

Eliminates noise from the histogram.

verbose

Whether to output detailed information about recognised classes.

返回值

范例

Example #1 Imagick::segmentImage()

<?php
function segmentImage($imagePath, $colorSpace, $clusterThreshold, $smoothThreshold) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->segmentImage($colorSpace, $clusterThreshold, $smoothThreshold);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

segmentImage($imagePath, \Imagick::COLORSPACE_RGB, 5, 5);

?>

Imagick::scaleImage
Imagick::selectiveBlurImage
Imagick


Description

Imagick::segmentImage
Imagick::separateImageChannel
Imagick
PHP Manual

Imagick::selectiveBlurImage

(No version information available, might only be in Git)

Imagick::selectiveBlurImage — Description

说明

public void Imagick::selectiveBlurImage ( float $radius , float $sigma , float $threshold , int $CHANNEL )

Selectively blur an image within a contrast threshold. It is similar to the unsharpen mask that sharpens everything with contrast above a certain threshold.

参数

radius

sigma

threshold

CHANNEL

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. 缺省为Imagick::CHANNEL_DEFAULT. 参考此 通道常数列表

返回值

范例

Example #1 Imagick::selectiveBlurImage()

<?php
function selectiveBlurImage($imagePath, $radius, $sigma, $threshold, $channel) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->selectiveBlurImage($radius, $sigma, $threshold, $channel);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::segmentImage
Imagick::separateImageChannel
Imagick


Separates a channel from the image

Imagick::selectiveBlurImage
Imagick::sepiaToneImage
Imagick
PHP Manual

Imagick::separateImageChannel

(PECL imagick 2.0.0)

Imagick::separateImageChannel — Separates a channel from the image

说明

bool Imagick::separateImageChannel ( int $channel )

Separates a channel from the image and returns a grayscale image. A channel is a particular color component of each pixel in the image.

参数

channel

Which 'channel' to return. For colorspaces other than RGB, you can still use the CHANNEL_RED, CHANNEL_GREEN, CHANNEL_BLUE constants to indicate the 1st, 2nd and 3rd channels.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::separateImageChannel()

<?php
function separateImageChannel($imagePath, $channel) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->separateimagechannel($channel);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

separateImageChannel($imagePath, \Imagick::CHANNEL_GREEN);

?>

Imagick::selectiveBlurImage
Imagick::sepiaToneImage
Imagick


Sepia tones an image

Imagick::separateImageChannel
Imagick::setBackgroundColor
Imagick
PHP Manual

Imagick::sepiaToneImage

(PECL imagick 2.0.0)

Imagick::sepiaToneImage — Sepia tones an image

说明

bool Imagick::sepiaToneImage ( float $threshold )

Applies a special effect to the image, similar to the effect achieved in a photo darkroom by sepia toning. Threshold ranges from 0 to QuantumRange and is a measure of the extent of the sepia toning. A threshold of 80 is a good starting point for a reasonable tone.

参数

threshold

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::sepiaToneImage()

<?php
function sepiaToneImage($imagePath, $sepia) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->sepiaToneImage($sepia);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::separateImageChannel
Imagick::setBackgroundColor
Imagick


Sets the object's default background color

Imagick::sepiaToneImage
Imagick::setColorspace
Imagick
PHP Manual

Imagick::setBackgroundColor

(PECL imagick 2.0.0)

Imagick::setBackgroundColor — Sets the object's default background color

说明

bool Imagick::setBackgroundColor ( mixed $background )

Sets the object's default background color.

参数

background

返回值

成功时返回 TRUE。

更新日志

版本 | 说明
2.1.0 | Now allows a string representing the color as a parameter. Previous versions allow only an ImagickPixel object.

Imagick::sepiaToneImage
Imagick::setColorspace
Imagick


Set colorspace

Imagick::setBackgroundColor
Imagick::setCompression
Imagick
PHP Manual

Imagick::setColorspace

(No version information available, might only be in Git)

Imagick::setColorspace — Set colorspace

说明

bool Imagick::setColorspace ( int $COLORSPACE )

Sets the global colorspace value for the object. 此方法在Imagick基于ImageMagick 6.5.7以上版本编译时可用。

参数

COLORSPACE

One of the COLORSPACE constants

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setBackgroundColor
Imagick::setCompression
Imagick


Sets the object's default compression type

Imagick::setColorspace
Imagick::setCompressionQuality
Imagick
PHP Manual

Imagick::setCompression

(PECL imagick 2.0.0)

Imagick::setCompression — Sets the object's default compression type

说明

bool Imagick::setCompression ( int $compression )

Sets the object's default compression type

参数

compression

返回值

成功时返回 TRUE。

Imagick::setColorspace
Imagick::setCompressionQuality
Imagick


Sets the object's default compression quality

Imagick::setCompression
Imagick::setFilename
Imagick
PHP Manual

Imagick::setCompressionQuality

(PECL imagick 0.9.10-0.9.9)

Imagick::setCompressionQuality — Sets the object's default compression quality

说明

bool Imagick::setCompressionQuality ( int $quality )

Sets the object's default compression quality.

Caution

This method only works for new images e.g. those created through Imagick::newPseudoImage. For existing images you should use Imagick::setImageCompressionQuality().

参数

quality

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::setCompressionQuality()

<?php
function setCompressionQuality($imagePath, $quality) {

    $backgroundImagick = new \Imagick(realpath($imagePath));
    $imagick = new \Imagick();
    $imagick->setCompressionQuality($quality);
    $imagick->newPseudoImage(
        $backgroundImagick->getImageWidth(),
        $backgroundImagick->getImageHeight(),
        'canvas:white'
    );

    $imagick->compositeImage(
        $backgroundImagick,
        \Imagick::COMPOSITE_ATOP,
        0,
        0
    );

    $imagick->setFormat("jpg");
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::setCompression
Imagick::setFilename
Imagick


Sets the filename before you read or write the image

Imagick::setCompressionQuality
Imagick::setFirstIterator
Imagick
PHP Manual

Imagick::setFilename

(PECL imagick 2.0.0)

Imagick::setFilename — Sets the filename before you read or write the image

说明

bool Imagick::setFilename ( string $filename )

Sets the filename before you read or write an image file.

参数

filename

返回值

成功时返回 TRUE。

Imagick::setCompressionQuality
Imagick::setFirstIterator
Imagick


Sets the Imagick iterator to the first image

Imagick::setFilename
Imagick::setFont
Imagick
PHP Manual

Imagick::setFirstIterator

(PECL imagick 2.0.0)

Imagick::setFirstIterator — Sets the Imagick iterator to the first image

说明

bool Imagick::setFirstIterator ( void )

Sets the Imagick iterator to the first image.

返回值

成功时返回 TRUE。

Imagick::setFilename
Imagick::setFont
Imagick


Sets font

Imagick::setFirstIterator
Imagick::setFormat
Imagick
PHP Manual

Imagick::setFont

(PECL imagick 2.1.0)

Imagick::setFont — Sets font

说明

bool Imagick::setFont ( string $font )

Sets object's font property. This method can be used for example to set font for caption: pseudo-format. The font needs to be configured in ImageMagick configuration or a file by the name of font must exist. This method should not be confused with ImagickDraw::setFont() which sets the font for a specific ImagickDraw object. 此方法在Imagick基于ImageMagick 6.3.7以上版本编译时可用。

参数

font

Font name or a filename

返回值

成功时返回 TRUE。

参见

  • Imagick::getFont() - Gets font
  • ImagickDraw::setFont() - Sets the fully-specified font to use when annotating with text
  • ImagickDraw::getFont() - Returns the font

范例

Example #1 A Imagick::setFont() example

Example of using Imagick::setFont

<?php
/* Create new imagick object */
$im = new Imagick();

/* Set the font for the object */
$im->setFont("example.ttf");

/* Create new caption */
$im->newPseudoImage(100, 100, "caption:Hello");

/* Do something with the image */
?>

Imagick::setFirstIterator
Imagick::setFormat
Imagick


Sets the format of the Imagick object

Imagick::setFont
Imagick::setGravity
Imagick
PHP Manual

Imagick::setFormat

(PECL imagick 2.0.0)

Imagick::setFormat — Sets the format of the Imagick object

说明

bool Imagick::setFormat ( string $format )

Sets the format of the Imagick object.

参数

format

返回值

成功时返回 TRUE。

Imagick::setFont
Imagick::setGravity
Imagick


Sets the gravity

Imagick::setFormat
Imagick::setImage
Imagick
PHP Manual

Imagick::setGravity

(No version information available, might only be in Git)

Imagick::setGravity — Sets the gravity

说明

bool Imagick::setGravity ( int $gravity )

Sets the global gravity property for the Imagick object. 此方法在Imagick基于ImageMagick 6.4.0以上版本编译时可用。

参数

gravity

The gravity property. Refer to the list of gravity constants.

返回值

没有返回值。

Imagick::setFormat
Imagick::setImage
Imagick


Replaces image in the object

Imagick::setGravity
Imagick::setImageAlphaChannel
Imagick
PHP Manual

Imagick::setImage

(PECL imagick 2.0.0)

Imagick::setImage — Replaces image in the object

说明

bool Imagick::setImage ( Imagick $replace )

Replaces the current image sequence with the image from replace object.

参数

replace

The replace Imagick object

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 A Imagick::setImage() example

An example of using Imagick::setImage()

<?php
/* Create the objects */
$image = new Imagick('source.jpg');
$replace = new Imagick('replace.jpg');

/* source.jpg is replaced with replace.jpg */
$image->setImage($replace);

/* output the image */
header('Content-type: image/jpeg');
echo $image;

?>

Imagick::setGravity
Imagick::setImageAlphaChannel
Imagick


Sets image alpha channel

Imagick::setImage
Imagick::setImageArtifact
Imagick
PHP Manual

Imagick::setImageAlphaChannel

(No version information available, might only be in Git)

Imagick::setImageAlphaChannel — Sets image alpha channel

说明

bool Imagick::setImageAlphaChannel ( int $mode )

Activate or deactivate image alpha channel. The mode is one of the Imagick::ALPHACHANNEL_* constants. 此方法在Imagick基于ImageMagick 6.3.8以上版本编译时可用。

参数

mode

One of the Imagick::ALPHACHANNEL_* constants

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

参见

  • Imagick::setImageMatte() - Sets the image matte channel
  • Imagick Alpha Channel Constants

Imagick::setImage
Imagick::setImageArtifact
Imagick


Set image artifact

Imagick::setImageAlphaChannel
Imagick::setImageAttribute
Imagick
PHP Manual

Imagick::setImageArtifact

(No version information available, might only be in Git)

Imagick::setImageArtifact — Set image artifact

说明

bool Imagick::setImageArtifact ( string $artifact , string $value )

Associates an artifact with the image. The difference between image properties and image artifacts is that properties are public and artifacts are private. 此方法在Imagick基于ImageMagick 6.5.7以上版本编译时可用。

参数

artifact

The name of the artifact

value

The value of the artifact

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

参见

  • Imagick::getImageArtifact() - Get image artifact
  • Imagick::deleteImageArtifact() - Delete image artifact

范例

Example #1 Imagick::setImageArtifact()

<?php
function setImageArtifact() {

    $src1 = new \Imagick(realpath("./images/artifact/source1.png"));
    $src2 = new \Imagick(realpath("./images/artifact/source2.png"));

    $src2->setImageVirtualPixelMethod(\Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
    $src2->setImageArtifact('compose:args', "1,0,-0.5,0.5");
    $src1->compositeImage($src2, Imagick::COMPOSITE_MATHEMATICS, 0, 0);

    $src1->setImageFormat('png');
    header("Content-Type: image/png");
    echo $src1->getImagesBlob();
}

?>

Imagick::setImageAlphaChannel
Imagick::setImageAttribute
Imagick


Description

Imagick::setImageArtifact
Imagick::setImageBackgroundColor
Imagick
PHP Manual

Imagick::setImageAttribute

(No version information available, might only be in Git)

Imagick::setImageAttribute — Description

说明

public void Imagick::setImageAttribute ( string $key , string $value )

Warning

本函数还未编写文档，仅有参数列表。

参数

key

value

返回值

Imagick::setImageArtifact
Imagick::setImageBackgroundColor
Imagick


Sets the image background color

Imagick::setImageAttribute
Imagick::setImageBias
Imagick
PHP Manual

Imagick::setImageBackgroundColor

(PECL imagick 2.0.0)

Imagick::setImageBackgroundColor — Sets the image background color

说明

bool Imagick::setImageBackgroundColor ( mixed $background )

Sets the image background color.

参数

background

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

更新日志

版本 | 说明
2.1.0 | Now allows a string representing the color as the parameter. Previous versions allow only an ImagickPixel object.

Imagick::setImageAttribute
Imagick::setImageBias
Imagick


Sets the image bias for any method that convolves an image

Imagick::setImageBackgroundColor
Imagick::setImageBiasQuantum
Imagick
PHP Manual

Imagick::setImageBias

(PECL imagick 2.0.0)

Imagick::setImageBias — Sets the image bias for any method that convolves an image

说明

bool Imagick::setImageBias ( float $bias )

Sets the image bias for any method that convolves an image (e.g. Imagick::ConvolveImage()).

参数

bias

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::setImageBias()

<?php
//requires ImageMagick version 6.9.0-1 to have an effect on convolveImage
function setImageBias($bias) {
    $imagick = new \Imagick(realpath("images/stack.jpg"));

    $xKernel = array(
        -0.70, 0, 0.70,
        -0.70, 0, 0.70,
        -0.70, 0, 0.70
    );

    $imagick->setImageBias($bias * \Imagick::getQuantum());
    $imagick->convolveImage($xKernel, \Imagick::CHANNEL_ALL);

    $imagick->setImageFormat('png');

    header('Content-type: image/png');
    echo $imagick->getImageBlob();
}

?>

Imagick::setImageBackgroundColor
Imagick::setImageBiasQuantum
Imagick


Description

Imagick::setImageBias
Imagick::setImageBluePrimary
Imagick
PHP Manual

Imagick::setImageBiasQuantum

(No version information available, might only be in Git)

Imagick::setImageBiasQuantum — Description

说明

public void Imagick::setImageBiasQuantum ( string $bias )

Warning

本函数还未编写文档，仅有参数列表。

参数

bias

返回值

Imagick::setImageBias
Imagick::setImageBluePrimary
Imagick


Sets the image chromaticity blue primary point

Imagick::setImageBiasQuantum
Imagick::setImageBorderColor
Imagick
PHP Manual

Imagick::setImageBluePrimary

(PECL imagick 2.0.0)

Imagick::setImageBluePrimary — Sets the image chromaticity blue primary point

说明

bool Imagick::setImageBluePrimary ( float $x , float $y )

Sets the image chromaticity blue primary point.

参数

x

y

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setImageBiasQuantum
Imagick::setImageBorderColor
Imagick


Sets the image border color

Imagick::setImageBluePrimary
Imagick::setImageChannelDepth
Imagick
PHP Manual

Imagick::setImageBorderColor

(PECL imagick 2.0.0)

Imagick::setImageBorderColor — Sets the image border color

说明

bool Imagick::setImageBorderColor ( mixed $border )

Sets the image border color.

参数

border

The border color

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

更新日志

版本 | 说明
2.1.0 | Now allows a string representing the color as a parameter. Previous versions allow only an ImagickPixel object.

Imagick::setImageBluePrimary
Imagick::setImageChannelDepth
Imagick


Sets the depth of a particular image channel

Imagick::setImageBorderColor
Imagick::setImageClipMask
Imagick
PHP Manual

Imagick::setImageChannelDepth

(PECL imagick 2.0.0)

Imagick::setImageChannelDepth — Sets the depth of a particular image channel

说明

bool Imagick::setImageChannelDepth ( int $channel , int $depth )

Sets the depth of a particular image channel.

参数

channel

depth

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setImageBorderColor
Imagick::setImageClipMask
Imagick


Sets image clip mask

Imagick::setImageChannelDepth
Imagick::setImageColormapColor
Imagick
PHP Manual

Imagick::setImageClipMask

(No version information available, might only be in Git)

Imagick::setImageClipMask — Sets image clip mask

说明

bool Imagick::setImageClipMask ( Imagick $clip_mask )

Sets image clip mask from another Imagick object. 此方法在Imagick基于ImageMagick 6.3.6以上版本编译时可用。

参数

clip_mask

The Imagick object containing the clip mask

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::setImageClipMask()

<?php
function setImageClipMask($imagePath) {
    $imagick = new \Imagick();
    $imagick->readImage(realpath($imagePath));

    $width = $imagick->getImageWidth();
    $height = $imagick->getImageHeight();

    $clipMask = new \Imagick();
    $clipMask->newPseudoImage(
        $width,
        $height,
        "canvas:transparent"
    );

    $draw = new \ImagickDraw();
    $draw->setFillColor('white');
    $draw->circle(
        $width / 2,
        $height / 2,
        ($width / 2) + ($width / 4),
        $height / 2
    );
    $clipMask->drawImage($draw);
    $imagick->setImageClipMask($clipMask);

    $imagick->negateImage(false);
    $imagick->setFormat("png");

    header("Content-Type: image/png");
    echo $imagick->getImagesBlob();

}

?>

Imagick::setImageChannelDepth
Imagick::setImageColormapColor
Imagick


Sets the color of the specified colormap index

Imagick::setImageClipMask
Imagick::setImageColorspace
Imagick
PHP Manual

Imagick::setImageColormapColor

(PECL imagick 2.0.0)

Imagick::setImageColormapColor — Sets the color of the specified colormap index

说明

bool Imagick::setImageColormapColor ( int $index , ImagickPixel $color )

Sets the color of the specified colormap index.

参数

index

color

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setImageClipMask
Imagick::setImageColorspace
Imagick


Sets the image colorspace

Imagick::setImageColormapColor
Imagick::setImageCompose
Imagick
PHP Manual

Imagick::setImageColorspace

(PECL imagick 2.0.0)

Imagick::setImageColorspace — Sets the image colorspace

说明

bool Imagick::setImageColorspace ( int $colorspace )

Sets the image colorspace. This method should be used when creating new images. To change the colorspace of an existing image, you should use Imagick::transformImageColorspace().

参数

colorspace

One of the COLORSPACE constants

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setImageColormapColor
Imagick::setImageCompose
Imagick


Sets the image composite operator

Imagick::setImageColorspace
Imagick::setImageCompression
Imagick
PHP Manual

Imagick::setImageCompose

(PECL imagick 2.0.0)

Imagick::setImageCompose — Sets the image composite operator

说明

bool Imagick::setImageCompose ( int $compose )

Sets the image composite operator, useful for specifying how to composite the image thumbnail when using the Imagick::montageImage() method.

参数

compose

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setImageColorspace
Imagick::setImageCompression
Imagick


设置图片压缩的类型

Imagick::setImageCompose
Imagick::setImageCompressionQuality
Imagick
PHP Manual

Imagick::setImageCompression

(PECL imagick 2.0.0)

Imagick::setImageCompression — 设置图片压缩的类型

说明

bool Imagick::setImageCompression ( int $compression )

参数

compression

COMPRESSION 常量里的一种

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setImageCompose
Imagick::setImageCompressionQuality
Imagick


设置图片压缩的质量

Imagick::setImageCompression
Imagick::setImageDelay
Imagick
PHP Manual

Imagick::setImageCompressionQuality

(No version information available, might only be in Git)

Imagick::setImageCompressionQuality — 设置图片压缩的质量

说明

bool Imagick::setImageCompressionQuality ( int $quality )

设置图片压缩的质量

参数

quality

配置压缩质量的整数

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setImageCompression
Imagick::setImageDelay
Imagick


Sets the image delay

Imagick::setImageCompressionQuality
Imagick::setImageDepth
Imagick
PHP Manual

Imagick::setImageDelay

(PECL imagick 2.0.0)

Imagick::setImageDelay — Sets the image delay

说明

bool Imagick::setImageDelay ( int $delay )

Sets the image delay. For an animated image this is the amount of time that this frame of the image should be displayed for, before displaying the next frame.

The delay can be set individually for each frame in an image.

参数

delay

The amount of time expressed in 'ticks' that the image should be displayed for. For animated GIFs there are 100 ticks per second, so a value of 20 would be 20/100 of a second aka 1/5th of a second.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Modify animated Gif with Imagick::setImageDelay()

<?php

// Modify an animated Gif so that it's frames are played at a variable speed,
// varying between being shown for 50ms down to 0ms, which will cause the frame
// to be skipped in most browsers.
$imagick = new Imagick(realpath("Test.gif"));
$imagick = $imagick->coalesceImages();

$frameCount = 0;

foreach ($imagick as $frame) {
    $imagick->setImageDelay((($frameCount % 11) * 5));
    $frameCount++;
}

$imagick = $imagick->deconstructImages();

$imagick->writeImages("/path/to/save/output.gif", true);

?>

Imagick::setImageCompressionQuality
Imagick::setImageDepth
Imagick


Sets the image depth

Imagick::setImageDelay
Imagick::setImageDispose
Imagick
PHP Manual

Imagick::setImageDepth

(PECL imagick 2.0.0)

Imagick::setImageDepth — Sets the image depth

说明

bool Imagick::setImageDepth ( int $depth )

Sets the image depth.

参数

depth

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setImageDelay
Imagick::setImageDispose
Imagick


Sets the image disposal method

Imagick::setImageDepth
Imagick::setImageExtent
Imagick
PHP Manual

Imagick::setImageDispose

(PECL imagick 2.0.0)

Imagick::setImageDispose — Sets the image disposal method

说明

bool Imagick::setImageDispose ( int $dispose )

Sets the image disposal method.

参数

dispose

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setImageDepth
Imagick::setImageExtent
Imagick


Sets the image size

Imagick::setImageDispose
Imagick::setImageFilename
Imagick
PHP Manual

Imagick::setImageExtent

(PECL imagick 2.0.0)

Imagick::setImageExtent — Sets the image size

说明

bool Imagick::setImageExtent ( int $columns , int $rows )

Sets the image size (i.e. columns & rows).

参数

columns

rows

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setImageDispose
Imagick::setImageFilename
Imagick


Sets the filename of a particular image

Imagick::setImageExtent
Imagick::setImageFormat
Imagick
PHP Manual

Imagick::setImageFilename

(PECL imagick 2.0.0)

Imagick::setImageFilename — Sets the filename of a particular image

说明

bool Imagick::setImageFilename ( string $filename )

Sets the filename of a particular image in a sequence.

参数

filename

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setImageExtent
Imagick::setImageFormat
Imagick


为图片设置指定的格式

Imagick::setImageFilename
Imagick::setImageGamma
Imagick
PHP Manual

Imagick::setImageFormat

(PECL imagick 2.0.0)

Imagick::setImageFormat — 为图片设置指定的格式

说明

bool Imagick::setImageFormat ( string $format )

为图片设置指定的格式

参数

format

表示图片格式的一个字符串。支持的格式依赖于 ImageMagick 的安装。

返回值

成功时返回 TRUE。

Imagick::setImageFilename
Imagick::setImageGamma
Imagick


Sets the image gamma

Imagick::setImageFormat
Imagick::setImageGravity
Imagick
PHP Manual

Imagick::setImageGamma

(PECL imagick 2.0.0)

Imagick::setImageGamma — Sets the image gamma

说明

bool Imagick::setImageGamma ( float $gamma )

Sets the image gamma.

参数

gamma

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setImageFormat
Imagick::setImageGravity
Imagick


Sets the image gravity

Imagick::setImageGamma
Imagick::setImageGreenPrimary
Imagick
PHP Manual

Imagick::setImageGravity

(No version information available, might only be in Git)

Imagick::setImageGravity — Sets the image gravity

说明

bool Imagick::setImageGravity ( int $gravity )

Sets the gravity property for the current image. This method can be used to set the gravity property for a single image sequence. 此方法在Imagick基于ImageMagick 6.4.4以上版本编译时可用。

参数

gravity

The gravity property. Refer to the list of gravity constants.

返回值

没有返回值。

Imagick::setImageGamma
Imagick::setImageGreenPrimary
Imagick


Sets the image chromaticity green primary point

Imagick::setImageGravity
Imagick::setImageIndex
Imagick
PHP Manual

Imagick::setImageGreenPrimary

(PECL imagick 2.0.0)

Imagick::setImageGreenPrimary — Sets the image chromaticity green primary point

说明

bool Imagick::setImageGreenPrimary ( float $x , float $y )

Sets the image chromaticity green primary point.

参数

x

y

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setImageGravity
Imagick::setImageIndex
Imagick


Set the iterator position

Imagick::setImageGreenPrimary
Imagick::setImageInterlaceScheme
Imagick
PHP Manual

Imagick::setImageIndex

(PECL imagick 2.0.0)

Imagick::setImageIndex — Set the iterator position

说明

bool Imagick::setImageIndex ( int $index )

Set the iterator to the position in the image list specified with the index parameter.

This method has been deprecated. See Imagick::setIteratorIndex().

参数

index

The position to set the iterator to

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setImageGreenPrimary
Imagick::setImageInterlaceScheme
Imagick


Sets the image compression

Imagick::setImageIndex
Imagick::setImageInterpolateMethod
Imagick
PHP Manual

Imagick::setImageInterlaceScheme

(PECL imagick 2.0.0)

Imagick::setImageInterlaceScheme — Sets the image compression

说明

bool Imagick::setImageInterlaceScheme ( int $interlace_scheme )

Sets the image compression.

参数

interlace_scheme

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setImageIndex
Imagick::setImageInterpolateMethod
Imagick


Sets the image interpolate pixel method

Imagick::setImageInterlaceScheme
Imagick::setImageIterations
Imagick
PHP Manual

Imagick::setImageInterpolateMethod

(PECL imagick 2.0.0)

Imagick::setImageInterpolateMethod — Sets the image interpolate pixel method

说明

bool Imagick::setImageInterpolateMethod ( int $method )

Sets the image interpolate pixel method.

参数

method

The method is one of the Imagick::INTERPOLATE_* constants

返回值

成功时返回 TRUE。

Imagick::setImageInterlaceScheme
Imagick::setImageIterations
Imagick


Sets the image iterations

Imagick::setImageInterpolateMethod
Imagick::setImageMatte
Imagick
PHP Manual

Imagick::setImageIterations

(PECL imagick 2.0.0)

Imagick::setImageIterations — Sets the image iterations

说明

bool Imagick::setImageIterations ( int $iterations )

Sets the number of iterations an animated image is repeated.

参数

iterations

The number of iterations the image should loop over. Set to '0' to loop continuously.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Basic Imagick::setImageIterations() usage

<?php

$imagick = new Imagick(realpath("Test.gif"));

$imagick = $imagick->coalesceImages();
$imagick->setImageIterations(1);
$imagick = $imagick->deconstructImages();

$imagick->writeImages('/path/to/save/OnceOnly.gif', true);

?>

Imagick::setImageInterpolateMethod
Imagick::setImageMatte
Imagick


Sets the image matte channel

Imagick::setImageIterations
Imagick::setImageMatteColor
Imagick
PHP Manual

Imagick::setImageMatte

(PECL imagick 2.0.0)

Imagick::setImageMatte — Sets the image matte channel

说明

bool Imagick::setImageMatte ( bool $matte )

Sets the image matte channel. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

参数

matte

True activates the matte channel and false disables it.

返回值

成功时返回 TRUE。

Imagick::setImageIterations
Imagick::setImageMatteColor
Imagick


Sets the image matte color

Imagick::setImageMatte
Imagick::setImageOpacity
Imagick
PHP Manual

Imagick::setImageMatteColor

(PECL imagick 2.0.0)

Imagick::setImageMatteColor — Sets the image matte color

说明

bool Imagick::setImageMatteColor ( mixed $matte )

Sets the image matte color.

参数

matte

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

更新日志

版本 | 说明
2.1.0 | Now allows a string representing the color as the parameter. Previous versions allow only an ImagickPixel object.

Imagick::setImageMatte
Imagick::setImageOpacity
Imagick


Sets the image opacity level

Imagick::setImageMatteColor
Imagick::setImageOrientation
Imagick
PHP Manual

Imagick::setImageOpacity

(PECL imagick 2.0.0)

Imagick::setImageOpacity — Sets the image opacity level

说明

bool Imagick::setImageOpacity ( float $opacity )

Sets the image to the specified opacity level. 此方法在Imagick基于ImageMagick 6.3.1以上版本编译时可用。 This method operates on all channels, which means that for example opacity value of 0.5 will set all transparent areas to partially opaque. To add transparency to areas that are not already transparent use Imagick::evaluateImage()

参数

opacity

The level of transparency: 1.0 is fully opaque and 0.0 is fully transparent.

返回值

成功时返回 TRUE。

范例

Example #1 A Imagick::setImageOpacity() example

An example of using Imagick::setImageOpacity()

<?php
/* Create the object */
$image = new Imagick('source.png');

/* Set the opacity */
$image->setImageOpacity(0.7);

/* output the image */
header('Content-type: image/png');
echo $image;

?>

Imagick::setImageMatteColor
Imagick::setImageOrientation
Imagick


Sets the image orientation

Imagick::setImageOpacity
Imagick::setImagePage
Imagick
PHP Manual

Imagick::setImageOrientation

(PECL imagick 2.0.0)

Imagick::setImageOrientation — Sets the image orientation

说明

bool Imagick::setImageOrientation ( int $orientation )

Sets the image orientation.

参数

orientation

One of the orientation constants

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::setImageOrientation()

<?php
//Doesn't appear to do anything
function setImageOrientation($imagePath, $orientationType) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->setImageOrientation($orientationType);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::setImageOpacity
Imagick::setImagePage
Imagick


Sets the page geometry of the image

Imagick::setImageOrientation
Imagick::setImageProfile
Imagick
PHP Manual

Imagick::setImagePage

(PECL imagick 2.0.0)

Imagick::setImagePage — Sets the page geometry of the image

说明

bool Imagick::setImagePage ( int $width , int $height , int $x , int $y )

Sets the page geometry of the image.

参数

width

height

x

y

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setImageOrientation
Imagick::setImageProfile
Imagick


Adds a named profile to the Imagick object

Imagick::setImagePage
Imagick::setImageProperty
Imagick
PHP Manual

Imagick::setImageProfile

(PECL imagick 2.0.0)

Imagick::setImageProfile — Adds a named profile to the Imagick object

说明

bool Imagick::setImageProfile ( string $name , string $profile )

Adds a named profile to the Imagick object. If a profile with the same name already exists, it is replaced. This method differs from the Imagick::ProfileImage() method in that it does not apply any CMS color profiles.

参数

name

profile

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setImagePage
Imagick::setImageProperty
Imagick


Sets an image property

Imagick::setImageProfile
Imagick::setImageRedPrimary
Imagick
PHP Manual

Imagick::setImageProperty

(PECL imagick 2.0.0)

Imagick::setImageProperty — Sets an image property

说明

bool Imagick::setImageProperty ( string $name , string $value )

Sets a named property to the image. 此方法在Imagick基于ImageMagick 6.3.2以上版本编译时可用。

参数

name

value

范例

Example #1 Using Imagick::setImageProperty():

Setting and getting image properties

<?php
$image = new Imagick();
$image->newImage(300, 200, "black");

$image->setImageProperty('Exif:Make', 'Imagick');
echo $image->getImageProperty('Exif:Make');
?>

参见

  • Imagick::getImageProperty() - Returns the named image property

返回值

成功时返回 TRUE。

Imagick::setImageProfile
Imagick::setImageRedPrimary
Imagick


Sets the image chromaticity red primary point

Imagick::setImageProperty
Imagick::setImageRenderingIntent
Imagick
PHP Manual

Imagick::setImageRedPrimary

(PECL imagick 2.0.0)

Imagick::setImageRedPrimary — Sets the image chromaticity red primary point

说明

bool Imagick::setImageRedPrimary ( float $x , float $y )

Sets the image chromaticity red primary point.

参数

x

y

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setImageProperty
Imagick::setImageRenderingIntent
Imagick


Sets the image rendering intent

Imagick::setImageRedPrimary
Imagick::setImageResolution
Imagick
PHP Manual

Imagick::setImageRenderingIntent

(PECL imagick 2.0.0)

Imagick::setImageRenderingIntent — Sets the image rendering intent

说明

bool Imagick::setImageRenderingIntent ( int $rendering_intent )

Sets the image rendering intent.

参数

rendering_intent

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setImageRedPrimary
Imagick::setImageResolution
Imagick


Sets the image resolution

Imagick::setImageRenderingIntent
Imagick::setImageScene
Imagick
PHP Manual

Imagick::setImageResolution

(PECL imagick 2.0.0)

Imagick::setImageResolution — Sets the image resolution

说明

bool Imagick::setImageResolution ( float $x_resolution , float $y_resolution )

Sets the image resolution.

参数

x_resolution

y_resolution

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::setImageResolution()

<?php
function setImageResolution($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->setImageResolution(50, 50);

    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::setImageRenderingIntent
Imagick::setImageScene
Imagick


Sets the image scene

Imagick::setImageResolution
Imagick::setImageTicksPerSecond
Imagick
PHP Manual

Imagick::setImageScene

(PECL imagick 2.0.0)

Imagick::setImageScene — Sets the image scene

说明

bool Imagick::setImageScene ( int $scene )

Sets the image scene.

参数

scene

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setImageResolution
Imagick::setImageTicksPerSecond
Imagick


Sets the image ticks-per-second

Imagick::setImageScene
Imagick::setImageType
Imagick
PHP Manual

Imagick::setImageTicksPerSecond

(PECL imagick 2.0.0)

Imagick::setImageTicksPerSecond — Sets the image ticks-per-second

说明

bool Imagick::setImageTicksPerSecond ( int $ticks_per_second )

Adjust the amount of time that a frame of an animated image is displayed for.

Note:

For animated GIFs, this function does not change the number of 'image ticks' per second, which is always defined as 100. Instead it adjusts the amount of time that the frame is displayed for to simulate the change in 'ticks per second'.

For example, for an animated GIF where each frame is displayed for 20 ticks (1/5 of a second) when this method is called on each frame of that image with an argument of 50 the frames are adjusted to be displayed for 40 ticks (2/5 of a second) and the animation will play at half the original speed.

参数

ticks_per_second

The duration for which an image should be displayed expressed in ticks per second.

返回值

成功时返回 TRUE。

范例

Example #1 Modify animated Gif with Imagick::setImageTicksPerSecond()

<?php

// Modify an animated gif so the first half of the gif is played at half the
// speed it currently is, and the second half to be played at double the speed
// it currently is

$imagick = new Imagick(realpath("Test.gif"));
$imagick = $imagick->coalesceImages();

$totalFrames = $imagick->getNumberImages();

$frameCount = 0;

foreach ($imagick as $frame) {
    $imagick->setImageTicksPerSecond(50);

    if ($frameCount < ($totalFrames / 2)) {
        // Modify the frame to be displayed for twice as long as it currently is
        $imagick->setImageTicksPerSecond(50);
    } else {
        // Modify the frame to be displayed for half as long as it currently is
        $imagick->setImageTicksPerSecond(200);
    }

    $frameCount++;
}

$imagick = $imagick->deconstructImages();

$imagick->writeImages("/path/to/save/output.gif", true);

?>

Imagick::setImageScene
Imagick::setImageType
Imagick


Sets the image type

Imagick::setImageTicksPerSecond
Imagick::setImageUnits
Imagick
PHP Manual

Imagick::setImageType

(PECL imagick 2.0.0)

Imagick::setImageType — Sets the image type

说明

bool Imagick::setImageType ( int $image_type )

Sets the image type.

参数

image_type

返回值

成功时返回 TRUE。

Imagick::setImageTicksPerSecond
Imagick::setImageUnits
Imagick


Sets the image units of resolution

Imagick::setImageType
Imagick::setImageVirtualPixelMethod
Imagick
PHP Manual

Imagick::setImageUnits

(PECL imagick 2.0.0)

Imagick::setImageUnits — Sets the image units of resolution

说明

bool Imagick::setImageUnits ( int $units )

Sets the image units of resolution.

参数

units

返回值

成功时返回 TRUE。

Imagick::setImageType
Imagick::setImageVirtualPixelMethod
Imagick


Sets the image virtual pixel method

Imagick::setImageUnits
Imagick::setImageWhitePoint
Imagick
PHP Manual

Imagick::setImageVirtualPixelMethod

(PECL imagick 2.0.0)

Imagick::setImageVirtualPixelMethod — Sets the image virtual pixel method

说明

bool Imagick::setImageVirtualPixelMethod ( int $method )

Sets the image virtual pixel method.

参数

method

返回值

成功时返回 TRUE。

Imagick::setImageUnits
Imagick::setImageWhitePoint
Imagick


Sets the image chromaticity white point

Imagick::setImageVirtualPixelMethod
Imagick::setInterlaceScheme
Imagick
PHP Manual

Imagick::setImageWhitePoint

(PECL imagick 2.0.0)

Imagick::setImageWhitePoint — Sets the image chromaticity white point

说明

bool Imagick::setImageWhitePoint ( float $x , float $y )

Sets the image chromaticity white point.

参数

x

y

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::setImageVirtualPixelMethod
Imagick::setInterlaceScheme
Imagick


Sets the image compression

Imagick::setImageWhitePoint
Imagick::setIteratorIndex
Imagick
PHP Manual

Imagick::setInterlaceScheme

(PECL imagick 2.0.0)

Imagick::setInterlaceScheme — Sets the image compression

说明

bool Imagick::setInterlaceScheme ( int $interlace_scheme )

Sets the image compression.

参数

interlace_scheme

返回值

成功时返回 TRUE。

Imagick::setImageWhitePoint
Imagick::setIteratorIndex
Imagick


Set the iterator position

Imagick::setInterlaceScheme
Imagick::setLastIterator
Imagick
PHP Manual

Imagick::setIteratorIndex

(PECL imagick 2.0.0)

Imagick::setIteratorIndex — Set the iterator position

说明

bool Imagick::setIteratorIndex ( int $index )

Set the iterator to the position in the image list specified with the index parameter. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

参数

index

The position to set the iterator to

返回值

成功时返回 TRUE。

范例

Example #1 Using Imagick::setIteratorIndex():

Create images, set and get the iterator index

<?php
$im = new Imagick();
$im->newImage(100, 100, new ImagickPixel("red"));
$im->newImage(100, 100, new ImagickPixel("green"));
$im->newImage(100, 100, new ImagickPixel("blue"));

$im->setIteratorIndex(1);
echo $im->getIteratorIndex();
?>

参见

  • Imagick::getIteratorIndex() - Gets the index of the current active image
  • Imagick::getImageIndex() - Gets the index of the current active image
  • Imagick::setImageIndex() - Set the iterator position

Imagick::setInterlaceScheme
Imagick::setLastIterator
Imagick


Sets the Imagick iterator to the last image

Imagick::setIteratorIndex
Imagick::setOption
Imagick
PHP Manual

Imagick::setLastIterator

(PECL imagick 2.0.1)

Imagick::setLastIterator — Sets the Imagick iterator to the last image

说明

bool Imagick::setLastIterator ( void )

Sets the Imagick iterator to the last image.

返回值

成功时返回 TRUE。

Imagick::setIteratorIndex
Imagick::setOption
Imagick


Set an option

Imagick::setLastIterator
Imagick::setPage
Imagick
PHP Manual

Imagick::setOption

(PECL imagick 2.0.0)

Imagick::setOption — Set an option

说明

bool Imagick::setOption ( string $key , string $value )

Associates one or more options with the wand.

参数

key

value

返回值

成功时返回 TRUE。

范例

Example #1 Attempt to reach '$extent' sizeImagick::setOption()

<?php
    function renderJPG($extent) {
        $imagePath = $this->control->getImagePath();
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->setImageFormat('jpg');
        $imagick->setOption('jpeg:extent', $extent);
        header("Content-Type: image/jpg");
        echo $imagick->getImageBlob();
    }

?>

Example #2 Imagick::setOption()

<?php
    function renderPNG($imagePath, $format) {

        $imagick = new \Imagick(realpath($imagePath));
        $imagick->setImageFormat('png');
        $imagick->setOption('png:format', $format);
        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

    //Save as 64bit PNG.
    renderPNG($imagePath, 'png64');

?>

Example #3 Imagick::setOption()

<?php
    function renderCustomBitDepthPNG() {
        $imagePath = $this->control->getImagePath();
        $imagick = new \Imagick(realpath($imagePath));
        $imagick->setImageFormat('png');

        $imagick->setOption('png:bit-depth', '16');
        $imagick->setOption('png:color-type', 6);
        header("Content-Type: image/png");
        $crash = true;
        if ($crash) {
            echo $imagick->getImageBlob();
        }
        else {
            $tempFilename = tempnam('./', 'imagick');
            $imagick->writeimage(realpath($tempFilename));
            echo file_get_contents($tempFilename);
        }
    }

?>

Imagick::setLastIterator
Imagick::setPage
Imagick


Sets the page geometry of the Imagick object

Imagick::setOption
Imagick::setPointSize
Imagick
PHP Manual

Imagick::setPage

(PECL imagick 2.0.0)

Imagick::setPage — Sets the page geometry of the Imagick object

说明

bool Imagick::setPage ( int $width , int $height , int $x , int $y )

Sets the page geometry of the Imagick object.

参数

width

height

x

y

返回值

成功时返回 TRUE。

Imagick::setOption
Imagick::setPointSize
Imagick


Sets point size

Imagick::setPage
Imagick::setProgressMonitor
Imagick
PHP Manual

Imagick::setPointSize

(PECL imagick 2.1.0)

Imagick::setPointSize — Sets point size

说明

bool Imagick::setPointSize ( float $point_size )

Sets object's point size property. This method can be used for example to set font size for caption: pseudo-format. 此方法在Imagick基于ImageMagick 6.3.7以上版本编译时可用。

参数

point_size

Point size

返回值

成功时返回 TRUE。

参见

  • Imagick::getPointSize() - Gets point size

范例

Example #1 A Imagick::setPointSize() example

Example of using Imagick::setPointSize

<?php
/* Create new imagick object */
$im = new Imagick();

/* Set the font for the object */
$im->setFont("example.ttf");

/* Set the point size */
$im->setPointSize(12);

/* Create new caption */
$im->newPseudoImage(100, 100, "caption:Hello");

/* Do something with the image */
?>

Imagick::setPage
Imagick::setProgressMonitor
Imagick


Description

Imagick::setPointSize
Imagick::setRegistry
Imagick
PHP Manual

Imagick::setProgressMonitor

(No version information available, might only be in Git)

Imagick::setProgressMonitor — Description

说明

public void Imagick::setProgressMonitor ( callable $callback )

Set a callback that will be called during the processing of the Imagick image.

参数

callback

The progress function to call. It should return true if image processing should continue, or false if it should be cancelled. The offset parameter indicates the progress and the span parameter indicates the total amount of work needed to be done.

bool callback ( mixed $offset , mixed $span )
Caution

The values passed to the callback function are not consistent. In particular the span parameter can increase during image processing. Because of this calculating the percentage complete of an image operation is not trivial.

返回值

范例

Example #1 Imagick::setProgressMonitor()

<?php
        $abortReason = null;

        try {
            $imagick = new \Imagick(realpath($this->control->getImagePath()));
            $startTime = time();

            $callback = function ($offset, $span)  use ($startTime, &$abortReason) {
                if (((100 * $offset) / $span)  > 20) {
                    $abortReason = "Processing reached 20%";
                    return false;
                }

                $nowTime = time();

                if ($nowTime - $startTime > 5) {
                    $abortReason = "Image processing took more than 5 seconds";
                    return false;
                }
                if (($offset % 5) == 0) {
                    echo "Progress: $offset / $span <br/>";
                }
                return true;
            };

            $imagick->setProgressMonitor($callback);

            $imagick->waveImage(2, 15);

            echo "Data len is: ".strlen($imagick->getImageBlob());
        }
        catch(\ImagickException $e) {
            if ($abortReason != null) {
                echo "Image processing was aborted: ".$abortReason."<br/>";
            }
            else {
                echo "ImagickException caught: ".$e->getMessage()." Exception type is ".get_class($e);
            }
        }

?>

Imagick::setPointSize
Imagick::setRegistry
Imagick


Description

Imagick::setProgressMonitor
Imagick::setResolution
Imagick
PHP Manual

Imagick::setRegistry

(No version information available, might only be in Git)

Imagick::setRegistry — Description

说明

public static void Imagick::setRegistry ( string $key , string $value )

Sets the ImageMagick registry entry named key to value. This is most useful for setting "temporary-path" which controls where ImageMagick creates temporary images e.g. while processing PDFs.

参数

key

value

返回值

Imagick::setProgressMonitor
Imagick::setResolution
Imagick


Sets the image resolution

Imagick::setRegistry
Imagick::setResourceLimit
Imagick
PHP Manual

Imagick::setResolution

(PECL imagick 2.0.0)

Imagick::setResolution — Sets the image resolution

说明

bool Imagick::setResolution ( float $x_resolution , float $y_resolution )

Sets the image resolution.

参数

x_resolution

The horizontal resolution.

y_resolution

The vertical resolution.

返回值

成功时返回 TRUE。

注释

Imagick::setResolution() must be called before loading or creating an image.

参见

  • Imagick::setImageResolution() - Sets the image resolution
  • Imagick::getImageResolution() - 获取图像的x,y轴分辨率
Imagick::setRegistry
Imagick::setResourceLimit
Imagick


Sets the limit for a particular resource in megabytes

Imagick::setResolution
Imagick::setSamplingFactors
Imagick
PHP Manual

Imagick::setResourceLimit

(PECL imagick 2.0.0)

Imagick::setResourceLimit — Sets the limit for a particular resource in megabytes

说明

bool Imagick::setResourceLimit ( int $type , int $limit )

This method is used to modify the resource limits of the underlying ImageMagick library.

参数

type

Refer to the list of resourcetype constants.

limit

The resource limit. The unit depends on the type of the resource being limited.

返回值

成功时返回 TRUE。

Imagick::setResolution
Imagick::setSamplingFactors
Imagick


Sets the image sampling factors

Imagick::setResourceLimit
Imagick::setSize
Imagick
PHP Manual

Imagick::setSamplingFactors

(PECL imagick 2.0.0)

Imagick::setSamplingFactors — Sets the image sampling factors

说明

bool Imagick::setSamplingFactors ( array $factors )

Sets the image sampling factors.

参数

factors

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::setSamplingFactors()

<?php
function setSamplingFactors($imagePath) {

    $imagePath = "../imagick/images/FineDetail.png";
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->setImageFormat('jpg');
    $imagick->setSamplingFactors(array('2x2', '1x1', '1x1'));

    $compressed = $imagick->getImageBlob();

    $reopen = new \Imagick();
    $reopen->readImageBlob($compressed);

    $reopen->resizeImage(
        $reopen->getImageWidth() * 4,
        $reopen->getImageHeight() * 4,
        \Imagick::FILTER_POINT,
        1
    );

    header("Content-Type: image/jpg");
    echo $reopen->getImageBlob();
}

?>

Imagick::setResourceLimit
Imagick::setSize
Imagick


Sets the size of the Imagick object

Imagick::setSamplingFactors
Imagick::setSizeOffset
Imagick
PHP Manual

Imagick::setSize

(PECL imagick 2.0.0)

Imagick::setSize — Sets the size of the Imagick object

说明

bool Imagick::setSize ( int $columns , int $rows )

Sets the size of the Imagick object. Set it before you read a raw image format such as RGB, GRAY, or CMYK.

参数

columns

rows

返回值

成功时返回 TRUE。

Imagick::setSamplingFactors
Imagick::setSizeOffset
Imagick


Sets the size and offset of the Imagick object

Imagick::setSize
Imagick::setType
Imagick
PHP Manual

Imagick::setSizeOffset

(PECL imagick 2.0.0)

Imagick::setSizeOffset — Sets the size and offset of the Imagick object

说明

bool Imagick::setSizeOffset ( int $columns , int $rows , int $offset )

Sets the size and offset of the Imagick object. Set it before you read a raw image format such as RGB, GRAY, or CMYK. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

参数

columns

The width in pixels.

rows

The height in pixels.

offset

The image offset.

返回值

成功时返回 TRUE。

Imagick::setSize
Imagick::setType
Imagick


Sets the image type attribute

Imagick::setSizeOffset
Imagick::shadeImage
Imagick
PHP Manual

Imagick::setType

(PECL imagick 2.0.0)

Imagick::setType — Sets the image type attribute

说明

bool Imagick::setType ( int $image_type )

Sets the image type attribute.

参数

image_type

返回值

成功时返回 TRUE。

Imagick::setSizeOffset
Imagick::shadeImage
Imagick


Creates a 3D effect

Imagick::setType
Imagick::shadowImage
Imagick
PHP Manual

Imagick::shadeImage

(PECL imagick 2.0.0)

Imagick::shadeImage — Creates a 3D effect

说明

bool Imagick::shadeImage ( bool $gray , float $azimuth , float $elevation )

Shines a distant light on an image to create a three-dimensional effect. You control the positioning of the light with azimuth and elevation; azimuth is measured in degrees off the x axis and elevation is measured in pixels above the Z axis. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

参数

gray

A value other than zero shades the intensity of each pixel.

azimuth

Defines the light source direction.

elevation

Defines the light source direction.

返回值

成功时返回 TRUE。

错误／异常

Throws ImagickException on failure.

范例

Example #1 Imagick::shadeImage()

<?php
function shadeImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->shadeImage(true, 45, 20);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::setType
Imagick::shadowImage
Imagick


Simulates an image shadow

Imagick::shadeImage
Imagick::sharpenImage
Imagick
PHP Manual

Imagick::shadowImage

(PECL imagick 2.0.0)

Imagick::shadowImage — Simulates an image shadow

说明

bool Imagick::shadowImage ( float $opacity , float $sigma , int $x , int $y )

Simulates an image shadow.

参数

opacity

sigma

x

y

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::shadowImage()

<?php
function shadowImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->shadowImage(0.4, 10, 50, 5);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::shadeImage
Imagick::sharpenImage
Imagick


Sharpens an image

Imagick::shadowImage
Imagick::shaveImage
Imagick
PHP Manual

Imagick::sharpenImage

(PECL imagick 2.0.0)

Imagick::sharpenImage — Sharpens an image

说明

bool Imagick::sharpenImage ( float $radius , float $sigma [, int $channel = Imagick::CHANNEL_ALL ] )

Sharpens an image. We convolve the image with a Gaussian operator of the given radius and standard deviation (sigma). For reasonable results, the radius should be larger than sigma. Use a radius of 0 and Imagick::sharpenImage() selects a suitable radius for you.

参数

radius

sigma

channel

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::sharpenImage()

<?php
function sharpenImage($imagePath, $radius, $sigma, $channel) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->sharpenimage($radius, $sigma, $channel);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::shadowImage
Imagick::shaveImage
Imagick


Shaves pixels from the image edges

Imagick::sharpenImage
Imagick::shearImage
Imagick
PHP Manual

Imagick::shaveImage

(PECL imagick 2.0.0)

Imagick::shaveImage — Shaves pixels from the image edges

说明

bool Imagick::shaveImage ( int $columns , int $rows )

Shaves pixels from the image edges. It allocates the memory necessary for the new Image structure and returns a pointer to the new image.

参数

columns

rows

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::shaveImage()

<?php
function shaveImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->shaveImage(100, 50);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::sharpenImage
Imagick::shearImage
Imagick


Creating a parallelogram

Imagick::shaveImage
Imagick::sigmoidalContrastImage
Imagick
PHP Manual

Imagick::shearImage

(PECL imagick 2.0.0)

Imagick::shearImage — Creating a parallelogram

说明

bool Imagick::shearImage ( mixed $background , float $x_shear , float $y_shear )

Slides one edge of an image along the X or Y axis, creating a parallelogram. An X direction shear slides an edge along the X axis, while a Y direction shear slides an edge along the Y axis. The amount of the shear is controlled by a shear angle. For X direction shears, x_shear is measured relative to the Y axis, and similarly, for Y direction shears y_shear is measured relative to the X axis. Empty triangles left over from shearing the image are filled with the background color.

参数

background

The background color

x_shear

The number of degrees to shear on the x axis

y_shear

The number of degrees to shear on the y axis

返回值

成功时返回 TRUE。

更新日志

版本 | 说明
2.1.0 | Now allows a string representing the color as the first parameter. Previous versions allow only an ImagickPixel object.

范例

Example #1 Imagick::shearImage()

<?php
function shearImage($imagePath, $color, $shearX, $shearY) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->shearimage($color, $shearX, $shearY);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::shaveImage
Imagick::sigmoidalContrastImage
Imagick


Adjusts the contrast of an image

Imagick::shearImage
Imagick::sketchImage
Imagick
PHP Manual

Imagick::sigmoidalContrastImage

(PECL imagick 2.0.0)

Imagick::sigmoidalContrastImage — Adjusts the contrast of an image

说明

bool Imagick::sigmoidalContrastImage ( bool $sharpen , float $alpha , float $beta [, int $channel = Imagick::CHANNEL_ALL ] )

Adjusts the contrast of an image with a non-linear sigmoidal contrast algorithm. Increase the contrast of the image using a sigmoidal transfer function without saturating highlights or shadows. Contrast indicates how much to increase the contrast (0 is none; 3 is typical; 20 is pushing it); mid-point indicates where midtones fall in the resultant image (0 is white; 50 is middle-gray; 100 is black). Set sharpen to TRUE to increase the image contrast otherwise the contrast is reduced.

See also » ImageMagick v6 Examples - Image Transformations — Sigmoidal Non-linearity Contrast

参数

sharpen

If true increase the contrast, if false decrease the contrast.

alpha

The amount of contrast to apply. 1 is very little, 5 is a significant amount, 20 is extreme.

beta

Where the midpoint of the gradient will be. This value should be in the range 0 to 1 - mutliplied by the quantum value for ImageMagick.

channel

Which color channels the contrast will be applied to.

返回值

成功时返回 TRUE。

范例

Example #1 Create a gradient image using Imagick::sigmoidalContrastImage() suitable for blending two images together smoothly, with the blending defined by $contrast and $the midpoint

<?php

function generateBlendImage($width, $height, $contrast = 10, $midpoint = 0.5) {
    $imagick = new Imagick();
    $imagick->newPseudoImage($width, $height, 'gradient:black-white');
    $quanta = $imagick->getQuantumRange();
    $imagick->sigmoidalContrastImage(true, $contrast, $midpoint * $quanta["quantumRangeLong"]);

    return $imagick;
}

?>

错误／异常

错误时抛出 ImagickException。

Imagick::shearImage
Imagick::sketchImage
Imagick


Simulates a pencil sketch

Imagick::sigmoidalContrastImage
Imagick::smushImages
Imagick
PHP Manual

Imagick::sketchImage

(PECL imagick 2.0.0)

Imagick::sketchImage — Simulates a pencil sketch

说明

bool Imagick::sketchImage ( float $radius , float $sigma , float $angle )

Simulates a pencil sketch. We convolve the image with a Gaussian operator of the given radius and standard deviation (sigma). For reasonable results, radius should be larger than sigma. Use a radius of 0 and Imagick::sketchImage() selects a suitable radius for you. Angle gives the angle of the blurring motion. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

参数

radius

The radius of the Gaussian, in pixels, not counting the center pixel

sigma

The standard deviation of the Gaussian, in pixels.

angle

Apply the effect along this angle.

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::sketchImage()

<?php
function sketchImage($imagePath, $radius, $sigma, $angle) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->sketchimage($radius, $sigma, $angle);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::sigmoidalContrastImage
Imagick::smushImages
Imagick


Description

Imagick::sketchImage
Imagick::solarizeImage
Imagick
PHP Manual

Imagick::smushImages

(No version information available, might only be in Git)

Imagick::smushImages — Description

说明

public Imagick Imagick::smushImages ( string $stack , string $offset )

Takes all images from the current image pointer to the end of the image list and smushs them to each other top-to-bottom if the stack parameter is true, otherwise left-to-right.

参数

stack

offset

返回值

The new smushed image.

范例

Example #1 Imagick::smushImages()

<?php
function smushImages($imagePath, $imagePath2) {

    $imagick = new \Imagick(realpath($imagePath));
    $imagick2 = new \Imagick(realpath($imagePath2));

    $imagick->addimage($imagick2);
    $smushed = $imagick->smushImages(false, 50);
    $smushed->setImageFormat('jpg');
    header("Content-Type: image/jpg");
    echo $smushed->getImageBlob();
}

?>

Imagick::sketchImage
Imagick::solarizeImage
Imagick


Applies a solarizing effect to the image

Imagick::smushImages
Imagick::sparseColorImage
Imagick
PHP Manual

Imagick::solarizeImage

(PECL imagick 2.0.0)

Imagick::solarizeImage — Applies a solarizing effect to the image

说明

bool Imagick::solarizeImage ( int $threshold )

Applies a special effect to the image, similar to the effect achieved in a photo darkroom by selectively exposing areas of photo sensitive paper to light. Threshold ranges from 0 to QuantumRange and is a measure of the extent of the solarization.

参数

threshold

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::solarizeImage()

<?php
function solarizeImage($imagePath, $solarizeThreshold) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->solarizeImage($solarizeThreshold * \Imagick::getQuantum());
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::smushImages
Imagick::sparseColorImage
Imagick


Interpolates colors

Imagick::solarizeImage
Imagick::spliceImage
Imagick
PHP Manual

Imagick::sparseColorImage

(No version information available, might only be in Git)

Imagick::sparseColorImage — Interpolates colors

说明

public bool Imagick::sparseColorImage ( int $SPARSE_METHOD , array $arguments [, int $channel = Imagick::CHANNEL_DEFAULT ] )

Given the arguments array containing numeric values this method interpolates the colors found at those coordinates across the whole image using sparse_method. 此方法在Imagick基于ImageMagick 6.4.5以上版本编译时可用。

参数

SPARSE_METHOD

Refer to this list of sparse method constants

arguments

An array containing the coordinates. The array is in format array(1,1, 2,45)

CHANNEL

Provide any channel constant that is valid for your channel mode. To apply to more than one channel, combine channel constants using bitwise operators. 缺省为Imagick::CHANNEL_DEFAULT. 参考此 通道常数列表

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 SPARSECOLORMETHOD_BARYCENTRIC Imagick::sparseColorImage()

<?php
    function renderImageBarycentric2() {
        $points = [
            [0.30, 0.10, 'red'],
            [0.10, 0.80, 'blue'],
            [0.70, 0.60, 'lime'],
            [0.80, 0.20, 'yellow'],
        ];
        $imagick = createGradientImage(
            400, 400,
            $points,
            \Imagick::SPARSECOLORMETHOD_BARYCENTRIC
        );
        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

?>

Example #2 SPARSECOLORMETHOD_BILINEAR Imagick::sparseColorImage()

<?php
    function renderImageBilinear() {
        $points = [[0.30, 0.10, 'red'], [0.10, 0.80, 'blue'], [0.70, 0.60, 'lime'], [0.80, 0.20, 'yellow'],];
        $imagick = createGradientImage(500, 500, $points, \Imagick::SPARSECOLORMETHOD_BILINEAR);
        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

?>

Example #3 SPARSECOLORMETHOD_SPEPARDS Imagick::sparseColorImage()

<?php
    function renderImageShepards() {
        $points = [
            [0.30, 0.10, 'red'],
            [0.10, 0.80, 'blue'],
            [0.70, 0.60, 'lime'],
            [0.80, 0.20, 'yellow'],
        ];
        $imagick = createGradientImage(600, 600, $points, \Imagick::SPARSECOLORMETHOD_SPEPARDS);
        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

?>

Example #4 SPARSECOLORMETHOD_VORONOI Imagick::sparseColorImage()

<?php
    function renderImageVoronoi() {
        $points = [
            [0.30, 0.10, 'red'],
            [0.10, 0.80, 'blue'],
            [0.70, 0.60, 'lime'],
            [0.80, 0.20, 'yellow'],
        ];
        $imagick = createGradientImage(500, 500, $points, \Imagick::SPARSECOLORMETHOD_VORONOI);
        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

?>

Example #5 SPARSECOLORMETHOD_BARYCENTRIC Imagick::sparseColorImage()

<?php
    function renderImageBarycentric() {
        $points = [
            [0, 0, 'skyblue'],
            [-1, 1, 'skyblue'],
            [1, 1, 'black'],
        ];
        $imagick = createGradientImage(600, 200, $points, \Imagick::SPARSECOLORMETHOD_BARYCENTRIC);
        header("Content-Type: image/png");
        echo $imagick->getImageBlob();
    }

?>

Example #6 createGradientImage is used by other examples. Imagick::sparseColorImage()

<?php
function createGradientImage($width, $height, $colorPoints, $sparseMethod, $absolute = false) {

    $imagick = new \Imagick();
    $imagick->newImage($width, $height, "white");
    $imagick->setImageFormat("png");

    $barycentricPoints = array();

    foreach ($colorPoints as $colorPoint) {

        if ($absolute == true) {
            $barycentricPoints[] = $colorPoint[0];
            $barycentricPoints[] = $colorPoint[1];
        }
        else {
            $barycentricPoints[] = $colorPoint[0] * $width;
            $barycentricPoints[] = $colorPoint[1] * $height;
        }

        if (is_string($colorPoint[2])) {
            $imagickPixel = new \ImagickPixel($colorPoint[2]);
        }
        else if ($colorPoint[2] instanceof \ImagickPixel) {
            $imagickPixel = $colorPoint[2];
        }
        else{
            $errorMessage = sprintf(
                "Value %s is neither a string nor an ImagickPixel class. Cannot use as a color.",
                $colorPoint[2]
            );

            throw new \InvalidArgumentException(
                $errorMessage
            );
        }

        $red = $imagickPixel->getColorValue(\Imagick::COLOR_RED);
        $green = $imagickPixel->getColorValue(\Imagick::COLOR_GREEN);
        $blue = $imagickPixel->getColorValue(\Imagick::COLOR_BLUE);
        $alpha = $imagickPixel->getColorValue(\Imagick::COLOR_ALPHA);

        $barycentricPoints[] = $red;
        $barycentricPoints[] = $green;
        $barycentricPoints[] = $blue;
        $barycentricPoints[] = $alpha;
    }

    $imagick->sparseColorImage($sparseMethod, $barycentricPoints);

    return $imagick;
}

?>

Imagick::solarizeImage
Imagick::spliceImage
Imagick


Splices a solid color into the image

Imagick::sparseColorImage
Imagick::spreadImage
Imagick
PHP Manual

Imagick::spliceImage

(PECL imagick 2.0.0)

Imagick::spliceImage — Splices a solid color into the image

说明

bool Imagick::spliceImage ( int $width , int $height , int $x , int $y )

Splices a solid color into the image.

参数

width

height

x

y

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::spliceImage()

<?php
function spliceImage($imagePath, $startX, $startY, $width, $height) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->spliceImage($width, $height, $startX, $startY);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::sparseColorImage
Imagick::spreadImage
Imagick


Randomly displaces each pixel in a block

Imagick::spliceImage
Imagick::statisticImage
Imagick
PHP Manual

Imagick::spreadImage

(PECL imagick 2.0.0)

Imagick::spreadImage — Randomly displaces each pixel in a block

说明

bool Imagick::spreadImage ( float $radius )

Special effects method that randomly displaces each pixel in a block defined by the radius parameter.

参数

radius

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::spreadImage()

<?php
function spreadImage($imagePath, $radius) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->spreadImage($radius);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::spliceImage
Imagick::statisticImage
Imagick


Description

Imagick::spreadImage
Imagick::steganoImage
Imagick
PHP Manual

Imagick::statisticImage

(No version information available, might only be in Git)

Imagick::statisticImage — Description

说明

public void Imagick::statisticImage ( int $type , int $width , int $height [, string $CHANNEL = Imagick::CHANNEL_DEFAULT ] )

Replace each pixel with corresponding statistic from the neighborhood of the specified width and height.

参数

type

width

height

CHANNEL

返回值

范例

Example #1 Imagick::statisticImage()

<?php
function statisticImage($imagePath, $statisticType, $width, $height, $channel) {
    $imagick = new \Imagick(realpath($imagePath));

    $imagick->statisticImage(
        $statisticType,
        $width,
        $height,
        $channel
    );

    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

statisticImage($imagePath, \Imagick::STATISTIC_MEDIAN, 5, 5, \Imagick::CHANNEL_DEFAULT);

?>

Imagick::spreadImage
Imagick::steganoImage
Imagick


Hides a digital watermark within the image

Imagick::statisticImage
Imagick::stereoImage
Imagick
PHP Manual

Imagick::steganoImage

(PECL imagick 2.0.0)

Imagick::steganoImage — Hides a digital watermark within the image

说明

Imagick Imagick::steganoImage ( Imagick $watermark_wand , int $offset )

Hides a digital watermark within the image. Recover the hidden watermark later to prove that the authenticity of an image. Offset defines the start position within the image to hide the watermark.

参数

watermark_wand

offset

返回值

成功时返回 TRUE。

Imagick::statisticImage
Imagick::stereoImage
Imagick


Composites two images

Imagick::steganoImage
Imagick::stripImage
Imagick
PHP Manual

Imagick::stereoImage

(PECL imagick 2.0.0)

Imagick::stereoImage — Composites two images

说明

bool Imagick::stereoImage ( Imagick $offset_wand )

Composites two images and produces a single image that is the composite of a left and right image of a stereo pair.

参数

offset_wand

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::steganoImage
Imagick::stripImage
Imagick


去掉图片的所有配置和设置

Imagick::stereoImage
Imagick::subImageMatch
Imagick
PHP Manual

Imagick::stripImage

(PECL imagick 2.0.0)

Imagick::stripImage — 去掉图片的所有配置和设置

说明

bool Imagick::stripImage ( void )

去掉图片的所有配置和设置

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

Imagick::stereoImage
Imagick::subImageMatch
Imagick


Description

Imagick::stripImage
Imagick::swirlImage
Imagick
PHP Manual

Imagick::subImageMatch

(No version information available, might only be in Git)

Imagick::subImageMatch — Description

说明

public Imagick Imagick::subImageMatch ( Imagick $Imagick [, array &$offset [, float &$similarity ]] )

Searches for a subimage in the current image and returns a similarity image such that an exact match location is completely white and if none of the pixels match, black, otherwise some gray level in-between. You can also pass in the optional parameters bestMatch and similarity. After calling the function similarity will be set to the 'score' of the similarity between the subimage and the matching position in the larger image, bestMatch will contain an associative array with elements x, y, width, height that describe the matching region.

参数

Imagick

offset

similarity

A new image that displays the amount of similarity at each pixel.

返回值

范例

Example #1 Imagick::subImageMatch()

<?php
function subImageMatch($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick2 = clone $imagick;
    $imagick2->cropimage(40, 40, 250, 110);
    $imagick2->vignetteimage(0, 1, 3, 3);

    $similarity = null;
    $bestMatch = null;
    $comparison = $imagick->subImageMatch($imagick2, $bestMatch, $similarity);

    $comparison->setImageFormat('png');
    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

Imagick::stripImage
Imagick::swirlImage
Imagick


Swirls the pixels about the center of the image

Imagick::subImageMatch
Imagick::textureImage
Imagick
PHP Manual

Imagick::swirlImage

(PECL imagick 2.0.0)

Imagick::swirlImage — Swirls the pixels about the center of the image

说明

bool Imagick::swirlImage ( float $degrees )

Swirls the pixels about the center of the image, where degrees indicates the sweep of the arc through which each pixel is moved. You get a more dramatic effect as the degrees move from 1 to 360.

参数

degrees

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::swirlImage()

<?php
function swirlImage($imagePath, $swirl) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->swirlImage($swirl);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::subImageMatch
Imagick::textureImage
Imagick


Repeatedly tiles the texture image

Imagick::swirlImage
Imagick::thresholdImage
Imagick
PHP Manual

Imagick::textureImage

(PECL imagick 2.0.0)

Imagick::textureImage — Repeatedly tiles the texture image

说明

Imagick Imagick::textureImage ( Imagick $texture_wand )

Repeatedly tiles the texture image across and down the image canvas.

参数

texture_wand

Imagick object to use as texture image

返回值

Returns a new Imagick object that has the repeated texture applied.

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::textureImage()

<?php
function textureImage($imagePath) {
    $image = new \Imagick();
    $image->newImage(640, 480, new \ImagickPixel('pink'));
    $image->setImageFormat("jpg");
    $texture = new \Imagick(realpath($imagePath));
    $texture->scaleimage($image->getimagewidth() / 4, $image->getimageheight() / 4);
    $image = $image->textureImage($texture);
    header("Content-Type: image/jpg");
    echo $image;
}

?>

Imagick::swirlImage
Imagick::thresholdImage
Imagick


Changes the value of individual pixels based on a threshold

Imagick::textureImage
Imagick::thumbnailImage
Imagick
PHP Manual

Imagick::thresholdImage

(PECL imagick 2.0.0)

Imagick::thresholdImage — Changes the value of individual pixels based on a threshold

说明

bool Imagick::thresholdImage ( float $threshold [, int $channel = Imagick::CHANNEL_ALL ] )

Changes the value of individual pixels based on the intensity of each pixel compared to threshold. The result is a high-contrast, two color image.

参数

threshold

channel

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::thresholdImage()

<?php
function thresholdimage($imagePath, $threshold, $channel) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->thresholdimage($threshold * \Imagick::getQuantum(), $channel);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::textureImage
Imagick::thumbnailImage
Imagick


Changes the size of an image

Imagick::thresholdImage
Imagick::tintImage
Imagick
PHP Manual

Imagick::thumbnailImage

(PECL imagick 2.0.0)

Imagick::thumbnailImage — Changes the size of an image

说明

bool Imagick::thumbnailImage ( int $columns , int $rows [, bool $bestfit = false [, bool $fill = false ]] )

Changes the size of an image to the given dimensions and removes any associated profiles. The goal is to produce small, low cost thumbnail images suited for display on the Web. If TRUE is given as a third parameter then columns and rows parameters are used as maximums for each side. Both sides will be scaled down until they match or are smaller than the parameter given for the side.

Note: 参数 bestfit 的特性在 Imagick 3.0.0 中已改变。在此版本以前，当目标尺寸设为 400x400 时，原尺寸为 200x150 的图像将不会被改变。自 Imagick 3.0.0 起，源图像将会被放大到 400x300 因为这将更好的适合目标尺寸。当使用参数 bestfit 时，必须同时给出宽度和高度。

参数

columns

Image width

rows

Image height

bestfit

Whether to force maximum values

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::thumbnailImage()

<?php
function thumbnailImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->setbackgroundcolor('rgb(64, 64, 64)');
    $imagick->thumbnailImage(100, 100, true, true);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::thresholdImage
Imagick::tintImage
Imagick


Applies a color vector to each pixel in the image

Imagick::thumbnailImage
Imagick::__toString
Imagick
PHP Manual

Imagick::tintImage

(PECL imagick 2.0.0)

Imagick::tintImage — Applies a color vector to each pixel in the image

说明

bool Imagick::tintImage ( mixed $tint , mixed $opacity )

Applies a color vector to each pixel in the image. The length of the vector is 0 for black and white and at its maximum for the midtones. The vector weighing function is f(x)=(1-(4.0*((x-0.5)*(x-0.5)))).

参数

tint

opacity

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

更新日志

版本 | 说明
2.1.0 | Now allows a string representing the color as the first parameter and a float representing the opacity value as the second parameter. Previous versions allow only an ImagickPixel objects.

范例

Example #1 Imagick::tintImage()

<?php
function tintImage($r, $g, $b, $a) {
    $a = $a / 100;

    $imagick = new \Imagick();
    $imagick->newPseudoImage(400, 400, 'gradient:black-white');

    $tint = new \ImagickPixel("rgb($r, $g, $b)");
    $opacity = new \ImagickPixel("rgb(128, 128, 128, $a)");
    $imagick->tintImage($tint, $opacity);
    $imagick->setImageFormat('png');
    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

Imagick::thumbnailImage
Imagick::__toString
Imagick


Returns the image as a string.

Imagick::tintImage
Imagick::transformImage
Imagick
PHP Manual

Imagick::__toString

(No version information available, might only be in Git)

Imagick::__toString — Returns the image as a string.

说明

string Imagick::__toString ( void )

Returns the current image as string. This will only return a single image; it should not be used for Imagick objects that contain multiple images e.g. an animated GIF or PDF with multiple pages.

参数

此函数没有参数。

返回值

Returns the string content on success or an empty string on failure.

参见

  • Imagick::getImageBlob() - Returns the image sequence as a blob
  • Imagick::getImagesBlob() - Returns all image sequences as a blob
Imagick::tintImage
Imagick::transformImage
Imagick


Convenience method for setting crop size and the image geometry

Imagick::__toString
Imagick::transformImageColorspace
Imagick
PHP Manual

Imagick::transformImage

(PECL imagick 2.0.0)

Imagick::transformImage — Convenience method for setting crop size and the image geometry

说明

Imagick Imagick::transformImage ( string $crop , string $geometry )

A convenience method for setting crop size and the image geometry from strings. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

参数

crop

A crop geometry string. This geometry defines a subregion of the image to crop.

geometry

An image geometry string. This geometry defines the final size of the image.

返回值

Returns an Imagick object containing the transformed image.

范例

Example #1 Using Imagick::transformImage():

The example creates a 100x100 black image.

<?php
$image = new Imagick();
$image->newImage(300, 200, "black");
$new_image = $image->transformImage("100x100", "100x100");
$new_image->writeImage('test_out.jpg');
?>

参见

  • Imagick::cropImage() - 截图图片的一块区域
  • Imagick::resizeImage() - Scales an image
  • Imagick::thumbnailImage() - Changes the size of an image

Imagick::__toString
Imagick::transformImageColorspace
Imagick


Transforms an image to a new colorspace.

Imagick::transformImage
Imagick::transparentPaintImage
Imagick
PHP Manual

Imagick::transformImageColorspace

(No version information available, might only be in Git)

Imagick::transformImageColorspace — Transforms an image to a new colorspace.

说明

bool Imagick::transformImageColorspace ( int $colorspace )

Transforms an image to a new colorspace.

参数

colorspace

The colorspace the image should be transformed to, one of the COLORSPACE constants e.g. Imagick::COLORSPACE_CMYK.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Imagick::transformImageColorspace() example

Transforms an image to a new colorspace, and then extracts a single channel so that the individual channel values can be viewed.

<?php
function transformImageColorspace($imagePath, $colorSpace, $channel) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->transformimagecolorspace($colorSpace);
    //channel should be one of the channel constants e.g. \Imagick::CHANNEL_BLUE
    $imagick->separateImageChannel($channel);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}
?>

参见

  • Imagick::setColorSpace() - Set colorspace

范例

Example #2 Imagick::transformImageColorspace()

<?php
function transformImageColorspace($imagePath, $colorSpace, $channel) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->transformimagecolorspace($colorSpace);
    $imagick->separateImageChannel($channel);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::transformImage
Imagick::transparentPaintImage
Imagick


Paints pixels transparent

Imagick::transformImageColorspace
Imagick::transposeImage
Imagick
PHP Manual

Imagick::transparentPaintImage

(No version information available, might only be in Git)

Imagick::transparentPaintImage — Paints pixels transparent

说明

bool Imagick::transparentPaintImage ( mixed $target , float $alpha , float $fuzz , bool $invert )

Paints pixels matching the target color transparent. 此方法在Imagick基于ImageMagick 6.3.8以上版本编译时可用。

参数

target

The target color to paint

alpha

透明级别：1.0 是完全不透明，0.0 是完全透明。

fuzz

The amount of fuzz. For example, set fuzz to 10 and the color red at intensities of 100 and 102 respectively are now interpreted as the same color.

invert

If TRUE paints any pixel that does not match the target color.

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::transparentPaintImage()

<?php
function transparentPaintImage($color, $alpha, $fuzz) {
    $imagick = new \Imagick(realpath("images/BlueScreen.jpg"));

    //Need to be in a format that supports transparency
    $imagick->setimageformat('png');

    $imagick->transparentPaintImage(
        $color, $alpha, $fuzz * \Imagick::getQuantum(), false
    );

    //Not required, but helps tidy up left over pixels
    $imagick->despeckleimage();

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

Imagick::transformImageColorspace
Imagick::transposeImage
Imagick


Creates a vertical mirror image

Imagick::transparentPaintImage
Imagick::transverseImage
Imagick
PHP Manual

Imagick::transposeImage

(PECL imagick 2.0.0)

Imagick::transposeImage — Creates a vertical mirror image

说明

bool Imagick::transposeImage ( void )

Creates a vertical mirror image by reflecting the pixels around the central x-axis while rotating them 90-degrees. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

返回值

成功时返回 TRUE。

参见

  • Imagick::transverseImage() - Creates a horizontal mirror image

范例

Example #1 Imagick::transposeImage()

<?php
function transposeImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->transposeImage();
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::transparentPaintImage
Imagick::transverseImage
Imagick


Creates a horizontal mirror image

Imagick::transposeImage
Imagick::trimImage
Imagick
PHP Manual

Imagick::transverseImage

(PECL imagick 2.0.0)

Imagick::transverseImage — Creates a horizontal mirror image

说明

bool Imagick::transverseImage ( void )

Creates a horizontal mirror image by reflecting the pixels around the central y-axis while rotating them 270-degrees. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

返回值

成功时返回 TRUE。

参见

  • Imagick::transposeImage() - Creates a vertical mirror image

范例

Example #1 Imagick::transverseImage()

<?php
function transverseImage($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->transverseImage();
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::transposeImage
Imagick::trimImage
Imagick


Remove edges from the image

Imagick::transverseImage
Imagick::uniqueImageColors
Imagick
PHP Manual

Imagick::trimImage

(PECL imagick 2.0.0)

Imagick::trimImage — Remove edges from the image

说明

bool Imagick::trimImage ( float $fuzz )

Remove edges that are the background color from the image. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

参数

fuzz

By default target must match a particular pixel color exactly. However, in many cases two colors may differ by a small amount. The fuzz member of image defines how much tolerance is acceptable to consider two colors as the same. This parameter represents the variation on the quantum range.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Using Imagick::trimImage():

Trim an image, then display to the browser.

<?php
/* Create the object and read the image in */
$im = new Imagick("image.jpg");

/* Trim the image. */
$im->trimImage(0);

/* Ouput the image */
header("Content-Type: image/" . $im->getImageFormat());
echo $im;
?>

参见

  • Imagick::getQuantumDepth() - Gets the quantum depth
  • Imagick::getQuantumRange() - Returns the Imagick quantum range

Imagick::transverseImage
Imagick::uniqueImageColors
Imagick


Discards all but one of any pixel color

Imagick::trimImage
Imagick::unsharpMaskImage
Imagick
PHP Manual

Imagick::uniqueImageColors

(PECL imagick 2.0.0)

Imagick::uniqueImageColors — Discards all but one of any pixel color

说明

bool Imagick::uniqueImageColors ( void )

Discards all but one of any pixel color. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

返回值

成功时返回 TRUE。

范例

Example #1 Imagick::uniqueImageColors()

<?php
function uniqueImageColors($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    //Reduce the image to 256 colours nicely.
    $imagick->quantizeImage(256, \Imagick::COLORSPACE_YIQ, 0, false, false);
    $imagick->uniqueImageColors();
    $imagick->scaleimage($imagick->getImageWidth(), $imagick->getImageHeight() * 20);
    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

Imagick::trimImage
Imagick::unsharpMaskImage
Imagick


Sharpens an image

Imagick::uniqueImageColors
Imagick::valid
Imagick
PHP Manual

Imagick::unsharpMaskImage

(PECL imagick 2.0.0)

Imagick::unsharpMaskImage — Sharpens an image

说明

bool Imagick::unsharpMaskImage ( float $radius , float $sigma , float $amount , float $threshold [, int $channel = Imagick::CHANNEL_ALL ] )

Sharpens an image. We convolve the image with a Gaussian operator of the given radius and standard deviation (sigma). For reasonable results, radius should be larger than sigma. Use a radius of 0 and Imagick::UnsharpMaskImage() selects a suitable radius for you.

参数

radius

sigma

amount

threshold

channel

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

范例

Example #1 Imagick::unsharpMaskImage()

<?php
function unsharpMaskImage($imagePath, $radius, $sigma, $amount, $unsharpThreshold) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->unsharpMaskImage($radius, $sigma, $amount, $unsharpThreshold);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::uniqueImageColors
Imagick::valid
Imagick


Checks if the current item is valid

Imagick::unsharpMaskImage
Imagick::vignetteImage
Imagick
PHP Manual

Imagick::valid

(PECL imagick 2.0.0)

Imagick::valid — Checks if the current item is valid

说明

bool Imagick::valid ( void )

Checks if the current item is valid.

返回值

成功时返回 TRUE。

Imagick::unsharpMaskImage
Imagick::vignetteImage
Imagick


Adds vignette filter to the image

Imagick::valid
Imagick::waveImage
Imagick
PHP Manual

Imagick::vignetteImage

(PECL imagick 2.0.0)

Imagick::vignetteImage — Adds vignette filter to the image

说明

bool Imagick::vignetteImage ( float $blackPoint , float $whitePoint , int $x , int $y )

Softens the edges of the image in vignette style. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

参数

blackPoint

The black point.

whitePoint

The white point

x

X offset of the ellipse

y

Y offset of the ellipse

返回值

成功时返回 TRUE。

参见

  • Imagick::waveImage() - Applies wave filter to the image
  • Imagick::swirlImage() - Swirls the pixels about the center of the image

范例

Example #1 Imagick::vignetteImage()

<?php
function vignetteImage($imagePath, $blackPoint, $whitePoint, $x, $y) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->vignetteImage($blackPoint, $whitePoint, $x, $y);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::valid
Imagick::waveImage
Imagick


Applies wave filter to the image

Imagick::vignetteImage
Imagick::whiteThresholdImage
Imagick
PHP Manual

Imagick::waveImage

(PECL imagick 2.0.0)

Imagick::waveImage — Applies wave filter to the image

说明

bool Imagick::waveImage ( float $amplitude , float $length )

Applies a wave filter to the image. 此方法在Imagick基于ImageMagick 6.2.9以上版本编译时可用。

参数

amplitude

The amplitude of the wave.

length

The length of the wave.

返回值

成功时返回 TRUE。

错误／异常

错误时抛出 ImagickException。

参见

  • Imagick::solarizeImage() - Applies a solarizing effect to the image
  • Imagick::oilpaintImage() - Simulates an oil painting
  • Imagick::embossImage() - Returns a grayscale image with a three-dimensional effect
  • Imagick::addNoiseImage() - Adds random noise to the image
  • Imagick::swirlImage() - Swirls the pixels about the center of the image

范例

Example #1 WaveImage can be quite slow Imagick::waveImage()

<?php
function waveImage($imagePath, $amplitude, $length) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->waveImage($amplitude, $length);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::vignetteImage
Imagick::whiteThresholdImage
Imagick


Force all pixels above the threshold into white

Imagick::waveImage
Imagick::writeImage
Imagick
PHP Manual

Imagick::whiteThresholdImage

(PECL imagick 2.0.0)

Imagick::whiteThresholdImage — Force all pixels above the threshold into white

说明

bool Imagick::whiteThresholdImage ( mixed $threshold )

Is like Imagick::ThresholdImage() but force all pixels above the threshold into white while leaving all pixels below the threshold unchanged.

参数

threshold

返回值

成功时返回 TRUE。

更新日志

版本 | 说明
2.1.0 | Now allows a string representing the color as a parameter. Previous versions allow only an ImagickPixel object.

范例

Example #1 Imagick::whiteThresholdImage()

<?php
function whiteThresholdImage($imagePath, $color) {
    $imagick = new \Imagick(realpath($imagePath));
    $imagick->whiteThresholdImage($color);
    header("Content-Type: image/jpg");
    echo $imagick->getImageBlob();
}

?>

Imagick::waveImage
Imagick::writeImage
Imagick


把图片写入指定的文件

Imagick::whiteThresholdImage
Imagick::writeImageFile
Imagick
PHP Manual

Imagick::writeImage

(PECL imagick 0.9.0-0.9.9)

Imagick::writeImage — 把图片写入指定的文件

说明

bool Imagick::writeImage ([ string $filename = NULL ] )

把图片写入指定的文件。如果指定文件参数的值是 NULL ，图片将会写入通过 Imagick::readImage() 或者 Imagick::setImageFilename() 设定的文件。

参数

filename

图片将被写入的文件名。文件的后缀指定了文件的类型。 可以强制指定图片的格式而不管文件的后缀名。在文件名前面加上一个前缀，例如 "jpg:test.png"。

返回值

成功时返回 TRUE。

Imagick::whiteThresholdImage
Imagick::writeImageFile
Imagick


Writes an image to a filehandle

Imagick::writeImage
Imagick::writeImages
Imagick
PHP Manual

Imagick::writeImageFile

(No version information available, might only be in Git)

Imagick::writeImageFile — Writes an image to a filehandle

说明

bool Imagick::writeImageFile ( resource $filehandle )

Writes the image sequence to an open filehandle. The handle must be opened with for example fopen. 此方法在Imagick基于ImageMagick 6.3.6以上版本编译时可用。

参数

filehandle

Filehandle where to write the image

返回值

成功时返回 TRUE。

Imagick::writeImage
Imagick::writeImages
Imagick


Writes an image or image sequence

Imagick::writeImageFile
Imagick::writeImagesFile
Imagick
PHP Manual

Imagick::writeImages

(PECL imagick 0.9.0-0.9.9)

Imagick::writeImages — Writes an image or image sequence

说明

bool Imagick::writeImages ( string $filename , bool $adjoin )

Writes an image or image sequence.

参数

filename

adjoin

返回值

成功时返回 TRUE。

Imagick::writeImageFile
Imagick::writeImagesFile
Imagick


Writes frames to a filehandle

Imagick::writeImages
ImagickDraw
Imagick
PHP Manual

Imagick::writeImagesFile

(No version information available, might only be in Git)

Imagick::writeImagesFile — Writes frames to a filehandle

说明

bool Imagick::writeImagesFile ( resource $filehandle )

Writes all image frames into an open filehandle. This method can be used to write animated gifs or other multiframe images into open filehandle. 此方法在Imagick基于ImageMagick 6.3.6以上版本编译时可用。

参数

filehandle

Filehandle where to write the images

返回值

成功时返回 TRUE。

Imagick::writeImages
ImagickDraw
Imagick


The ImagickDraw class

(PECL imagick 2.0.0)

类摘要

ImagickDraw {
bool affine ( array $affine )
bool annotation ( float $x , float $y , string $text )
bool arc ( float $sx , float $sy , float $ex , float $ey , float $sd , float $ed )
bool bezier ( array $coordinates )
bool circle ( float $ox , float $oy , float $px , float $py )
bool clear ( void )
ImagickDraw clone ( void )
bool color ( float $x , float $y , int $paintMethod )
bool comment ( string $comment )
bool composite ( int $compose , float $x , float $y , float $width , float $height , Imagick $compositeWand )
__construct ( void )
bool destroy ( void )
bool ellipse ( float $ox , float $oy , float $rx , float $ry , float $start , float $end )
string getClipPath ( void )
int getClipRule ( void )
int getClipUnits ( void )
ImagickPixel getFillColor ( void )
float getFillOpacity ( void )
int getFillRule ( void )
string getFont ( void )
string getFontFamily ( void )
float getFontSize ( void )
public int getFontStretch ( void )
int getFontStyle ( void )
int getFontWeight ( void )
int getGravity ( void )
bool getStrokeAntialias ( void )
ImagickPixel getStrokeColor ( void )
array getStrokeDashArray ( void )
float getStrokeDashOffset ( void )
int getStrokeLineCap ( void )
int getStrokeLineJoin ( void )
int getStrokeMiterLimit ( void )
float getStrokeOpacity ( void )
float getStrokeWidth ( void )
int getTextAlignment ( void )
bool getTextAntialias ( void )
int getTextDecoration ( void )
string getTextEncoding ( void )
public float getTextInterlineSpacing ( void )
public float getTextInterwordSpacing ( void )
public float getTextKerning ( void )
ImagickPixel getTextUnderColor ( void )
string getVectorGraphics ( void )
bool line ( float $sx , float $sy , float $ex , float $ey )
bool matte ( float $x , float $y , int $paintMethod )
bool pathClose ( void )
bool pathCurveToAbsolute ( float $x1 , float $y1 , float $x2 , float $y2 , float $x , float $y )
bool pathCurveToQuadraticBezierAbsolute ( float $x1 , float $y1 , float $x , float $y )
bool pathCurveToQuadraticBezierRelative ( float $x1 , float $y1 , float $x , float $y )
bool pathCurveToQuadraticBezierSmoothAbsolute ( float $x , float $y )
bool pathCurveToQuadraticBezierSmoothRelative ( float $x , float $y )
bool pathCurveToRelative ( float $x1 , float $y1 , float $x2 , float $y2 , float $x , float $y )
bool pathCurveToSmoothAbsolute ( float $x2 , float $y2 , float $x , float $y )
bool pathCurveToSmoothRelative ( float $x2 , float $y2 , float $x , float $y )
bool pathEllipticArcAbsolute ( float $rx , float $ry , float $x_axis_rotation , bool $large_arc_flag , bool $sweep_flag , float $x , float $y )
bool pathEllipticArcRelative ( float $rx , float $ry , float $x_axis_rotation , bool $large_arc_flag , bool $sweep_flag , float $x , float $y )
bool pathFinish ( void )
bool pathLineToAbsolute ( float $x , float $y )
bool pathLineToHorizontalAbsolute ( float $x )
bool pathLineToHorizontalRelative ( float $x )
bool pathLineToRelative ( float $x , float $y )
bool pathLineToVerticalAbsolute ( float $y )
bool pathLineToVerticalRelative ( float $y )
bool pathMoveToAbsolute ( float $x , float $y )
bool pathMoveToRelative ( float $x , float $y )
bool pathStart ( void )
bool point ( float $x , float $y )
bool polygon ( array $coordinates )
bool polyline ( array $coordinates )
bool pop ( void )
bool popClipPath ( void )
bool popDefs ( void )
bool popPattern ( void )
bool push ( void )
bool pushClipPath ( string $clip_mask_id )
bool pushDefs ( void )
bool pushPattern ( string $pattern_id , float $x , float $y , float $width , float $height )
bool rectangle ( float $x1 , float $y1 , float $x2 , float $y2 )
bool render ( void )
public void resetVectorGraphics ( void )
bool rotate ( float $degrees )
bool roundRectangle ( float $x1 , float $y1 , float $x2 , float $y2 , float $rx , float $ry )
bool scale ( float $x , float $y )
bool setClipPath ( string $clip_mask )
bool setClipRule ( int $fill_rule )
bool setClipUnits ( int $clip_units )
bool setFillAlpha ( float $opacity )
bool setFillColor ( ImagickPixel $fill_pixel )
bool setFillOpacity ( float $fillOpacity )
bool setFillPatternURL ( string $fill_url )
bool setFillRule ( int $fill_rule )
bool setFont ( string $font_name )
bool setFontFamily ( string $font_family )
bool setFontSize ( float $pointsize )
bool setFontStretch ( int $fontStretch )
bool setFontStyle ( int $style )
bool setFontWeight ( int $font_weight )
bool setGravity ( int $gravity )
public void setResolution ( string $x_resolution , string $y_resolution )
bool setStrokeAlpha ( float $opacity )
bool setStrokeAntialias ( bool $stroke_antialias )
bool setStrokeColor ( ImagickPixel $stroke_pixel )
bool setStrokeDashArray ( array $dashArray )
bool setStrokeDashOffset ( float $dash_offset )
bool setStrokeLineCap ( int $linecap )
bool setStrokeLineJoin ( int $linejoin )
bool setStrokeMiterLimit ( int $miterlimit )
bool setStrokeOpacity ( float $stroke_opacity )
bool setStrokePatternURL ( string $stroke_url )
bool setStrokeWidth ( float $stroke_width )
bool setTextAlignment ( int $alignment )
bool setTextAntialias ( bool $antiAlias )
bool setTextDecoration ( int $decoration )
bool setTextEncoding ( string $encoding )
public void setTextInterlineSpacing ( float $spacing )
public void setTextInterwordSpacing ( float $spacing )
public void setTextKerning ( float $kerning )
bool setTextUnderColor ( ImagickPixel $under_color )
bool setVectorGraphics ( string $xml )
bool setViewbox ( int $x1 , int $y1 , int $x2 , int $y2 )
bool skewX ( float $degrees )
bool skewY ( float $degrees )
bool translate ( float $x , float $y )
}

Table of Contents

  • ImagickDraw::affine — Adjusts the current affine transformation matrix
  • ImagickDraw::annotation — Draws text on the image
  • ImagickDraw::arc — Draws an arc
  • ImagickDraw::bezier — Draws a bezier curve
  • ImagickDraw::circle — Draws a circle
  • ImagickDraw::clear — Clears the ImagickDraw
  • ImagickDraw::clone — Makes an exact copy of the specified ImagickDraw object
  • ImagickDraw::color — Draws color on image
  • ImagickDraw::comment — Adds a comment
  • ImagickDraw::composite — Composites an image onto the current image
  • ImagickDraw::__construct — The ImagickDraw constructor
  • ImagickDraw::destroy — Frees all associated resources
  • ImagickDraw::ellipse — Draws an ellipse on the image
  • ImagickDraw::getClipPath — Obtains the current clipping path ID
  • ImagickDraw::getClipRule — Returns the current polygon fill rule
  • ImagickDraw::getClipUnits — Returns the interpretation of clip path units
  • ImagickDraw::getFillColor — Returns the fill color
  • ImagickDraw::getFillOpacity — Returns the opacity used when drawing
  • ImagickDraw::getFillRule — Returns the fill rule
  • ImagickDraw::getFont — Returns the font
  • ImagickDraw::getFontFamily — Returns the font family
  • ImagickDraw::getFontSize — Returns the font pointsize
  • ImagickDraw::getFontStretch — Description
  • ImagickDraw::getFontStyle — Returns the font style
  • ImagickDraw::getFontWeight — Returns the font weight
  • ImagickDraw::getGravity — Returns the text placement gravity
  • ImagickDraw::getStrokeAntialias — Returns the current stroke antialias setting
  • ImagickDraw::getStrokeColor — Returns the color used for stroking object outlines
  • ImagickDraw::getStrokeDashArray — Returns an array representing the pattern of dashes and gaps used to stroke paths
  • ImagickDraw::getStrokeDashOffset — Returns the offset into the dash pattern to start the dash
  • ImagickDraw::getStrokeLineCap — Returns the shape to be used at the end of open subpaths when they are stroked
  • ImagickDraw::getStrokeLineJoin — Returns the shape to be used at the corners of paths when they are stroked
  • ImagickDraw::getStrokeMiterLimit — Returns the stroke miter limit
  • ImagickDraw::getStrokeOpacity — Returns the opacity of stroked object outlines
  • ImagickDraw::getStrokeWidth — Returns the width of the stroke used to draw object outlines
  • ImagickDraw::getTextAlignment — Returns the text alignment
  • ImagickDraw::getTextAntialias — Returns the current text antialias setting
  • ImagickDraw::getTextDecoration — Returns the text decoration
  • ImagickDraw::getTextEncoding — Returns the code set used for text annotations
  • ImagickDraw::getTextInterlineSpacing — Description
  • ImagickDraw::getTextInterwordSpacing — Description
  • ImagickDraw::getTextKerning — Description
  • ImagickDraw::getTextUnderColor — Returns the text under color
  • ImagickDraw::getVectorGraphics — Returns a string containing vector graphics
  • ImagickDraw::line — Draws a line
  • ImagickDraw::matte — Paints on the image's opacity channel
  • ImagickDraw::pathClose — Adds a path element to the current path
  • ImagickDraw::pathCurveToAbsolute — Draws a cubic Bezier curve
  • ImagickDraw::pathCurveToQuadraticBezierAbsolute — Draws a quadratic Bezier curve
  • ImagickDraw::pathCurveToQuadraticBezierRelative — Draws a quadratic Bezier curve
  • ImagickDraw::pathCurveToQuadraticBezierSmoothAbsolute — Draws a quadratic Bezier curve
  • ImagickDraw::pathCurveToQuadraticBezierSmoothRelative — Draws a quadratic Bezier curve
  • ImagickDraw::pathCurveToRelative — Draws a cubic Bezier curve
  • ImagickDraw::pathCurveToSmoothAbsolute — Draws a cubic Bezier curve
  • ImagickDraw::pathCurveToSmoothRelative — Draws a cubic Bezier curve
  • ImagickDraw::pathEllipticArcAbsolute — Draws an elliptical arc
  • ImagickDraw::pathEllipticArcRelative — Draws an elliptical arc
  • ImagickDraw::pathFinish — Terminates the current path
  • ImagickDraw::pathLineToAbsolute — Draws a line path
  • ImagickDraw::pathLineToHorizontalAbsolute — Draws a horizontal line path
  • ImagickDraw::pathLineToHorizontalRelative — Draws a horizontal line
  • ImagickDraw::pathLineToRelative — Draws a line path
  • ImagickDraw::pathLineToVerticalAbsolute — Draws a vertical line
  • ImagickDraw::pathLineToVerticalRelative — Draws a vertical line path
  • ImagickDraw::pathMoveToAbsolute — Starts a new sub-path
  • ImagickDraw::pathMoveToRelative — Starts a new sub-path
  • ImagickDraw::pathStart — Declares the start of a path drawing list
  • ImagickDraw::point — Draws a point
  • ImagickDraw::polygon — Draws a polygon
  • ImagickDraw::polyline — Draws a polyline
  • ImagickDraw::pop — Destroys the current ImagickDraw in the stack, and returns to the previously pushed ImagickDraw
  • ImagickDraw::popClipPath — Terminates a clip path definition
  • ImagickDraw::popDefs — Terminates a definition list
  • ImagickDraw::popPattern — Terminates a pattern definition
  • ImagickDraw::push — Clones the current ImagickDraw and pushes it to the stack
  • ImagickDraw::pushClipPath — Starts a clip path definition
  • ImagickDraw::pushDefs — Indicates that following commands create named elements for early processing
  • ImagickDraw::pushPattern — Indicates that subsequent commands up to a ImagickDraw::opPattern() command comprise the definition of a named pattern
  • ImagickDraw::rectangle — Draws a rectangle
  • ImagickDraw::render — Renders all preceding drawing commands onto the image
  • ImagickDraw::resetVectorGraphics — Description
  • ImagickDraw::rotate — Applies the specified rotation to the current coordinate space
  • ImagickDraw::roundRectangle — Draws a rounded rectangle
  • ImagickDraw::scale — Adjusts the scaling factor
  • ImagickDraw::setClipPath — Associates a named clipping path with the image
  • ImagickDraw::setClipRule — Set the polygon fill rule to be used by the clipping path
  • ImagickDraw::setClipUnits — Sets the interpretation of clip path units
  • ImagickDraw::setFillAlpha — Sets the opacity to use when drawing using the fill color or fill texture
  • ImagickDraw::setFillColor — Sets the fill color to be used for drawing filled objects
  • ImagickDraw::setFillOpacity — Sets the opacity to use when drawing using the fill color or fill texture
  • ImagickDraw::setFillPatternURL — Sets the URL to use as a fill pattern for filling objects
  • ImagickDraw::setFillRule — Sets the fill rule to use while drawing polygons
  • ImagickDraw::setFont — Sets the fully-specified font to use when annotating with text
  • ImagickDraw::setFontFamily — Sets the font family to use when annotating with text
  • ImagickDraw::setFontSize — Sets the font pointsize to use when annotating with text
  • ImagickDraw::setFontStretch — Sets the font stretch to use when annotating with text
  • ImagickDraw::setFontStyle — Sets the font style to use when annotating with text
  • ImagickDraw::setFontWeight — Sets the font weight
  • ImagickDraw::setGravity — Sets the text placement gravity
  • ImagickDraw::setResolution — Description
  • ImagickDraw::setStrokeAlpha — Specifies the opacity of stroked object outlines
  • ImagickDraw::setStrokeAntialias — Controls whether stroked outlines are antialiased
  • ImagickDraw::setStrokeColor — Sets the color used for stroking object outlines
  • ImagickDraw::setStrokeDashArray — Specifies the pattern of dashes and gaps used to stroke paths
  • ImagickDraw::setStrokeDashOffset — Specifies the offset into the dash pattern to start the dash
  • ImagickDraw::setStrokeLineCap — Specifies the shape to be used at the end of open subpaths when they are stroked
  • ImagickDraw::setStrokeLineJoin — Specifies the shape to be used at the corners of paths when they are stroked
  • ImagickDraw::setStrokeMiterLimit — Specifies the miter limit
  • ImagickDraw::setStrokeOpacity — Specifies the opacity of stroked object outlines
  • ImagickDraw::setStrokePatternURL — Sets the pattern used for stroking object outlines
  • ImagickDraw::setStrokeWidth — Sets the width of the stroke used to draw object outlines
  • ImagickDraw::setTextAlignment — Specifies a text alignment
  • ImagickDraw::setTextAntialias — Controls whether text is antialiased
  • ImagickDraw::setTextDecoration — Specifies a decoration
  • ImagickDraw::setTextEncoding — Specifies the text code set
  • ImagickDraw::setTextInterlineSpacing — Description
  • ImagickDraw::setTextInterwordSpacing — Description
  • ImagickDraw::setTextKerning — Description
  • ImagickDraw::setTextUnderColor — Specifies the color of a background rectangle
  • ImagickDraw::setVectorGraphics — Sets the vector graphics
  • ImagickDraw::setViewbox — Sets the overall canvas size
  • ImagickDraw::skewX — Skews the current coordinate system in the horizontal direction
  • ImagickDraw::skewY — Skews the current coordinate system in the vertical direction
  • ImagickDraw::translate — Applies a translation to the current coordinate system
Imagick::writeImagesFile
ImagickDraw::affine
ImageMagick


Adjusts the current affine transformation matrix

ImagickDraw
ImagickDraw::annotation
ImagickDraw
PHP Manual

ImagickDraw::affine

(PECL imagick 2.0.0)

ImagickDraw::affine — Adjusts the current affine transformation matrix

说明

bool ImagickDraw::affine ( array $affine )
Warning

本函数还未编写文档，仅有参数列表。

Adjusts the current affine transformation matrix with the specified affine transformation matrix.

参数

affine

Affine matrix parameters

返回值

没有返回值。

范例

Example #1 ImagickDraw::affine()

<?php
function affine($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeWidth(1);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(2);

    $PI = 3.141592653589794;
    $angle = 60 * $PI / 360;

    //Scale the drawing co-ordinates.
    $affineScale = array("sx" => 1.75, "sy" => 1.75, "rx" => 0, "ry" => 0, "tx" => 0, "ty" => 0);

    //Shear the drawing co-ordinates.
    $affineShear = array("sx" => 1, "sy" => 1, "rx" => sin($angle), "ry" => -sin($angle), "tx" => 0, "ty" => 0);

    //Rotate the drawing co-ordinates. The shear affine matrix
    //produces incorrectly scaled drawings.
    $affineRotate = array("sx" => cos($angle), "sy" => cos($angle), "rx" => sin($angle), "ry" => -sin($angle), "tx" => 0, "ty" => 0,);

    //Translate (offset) the drawing
    $affineTranslate = array("sx" => 1, "sy" => 1, "rx" => 0, "ry" => 0, "tx" => 30, "ty" => 30);

    //The identiy affine matrix
    $affineIdentity = array("sx" => 1, "sy" => 1, "rx" => 0, "ry" => 0, "tx" => 0, "ty" => 0);

    $examples = [$affineScale, $affineShear, $affineRotate, $affineTranslate, $affineIdentity,];

    $count = 0;

    foreach ($examples as $example) {
        $draw->push();
        $draw->translate(($count % 2) * 250, intval($count / 2) * 250);
        $draw->translate(100, 100);
        $draw->affine($example);
        $draw->rectangle(-50, -50, 50, 50);
        $draw->pop();
        $count++;
    }

    //Create an image object which the draw commands can be rendered into
    $image = new \Imagick();
    $image->newImage(500, 750, $backgroundColor);
    $image->setImageFormat("png");

    //Render the draw commands in the ImagickDraw object
    //into the image.
    $image->drawImage($draw);

    //Send the image to the browser
    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickDraw
ImagickDraw::annotation
ImagickDraw


Draws text on the image

ImagickDraw::affine
ImagickDraw::arc
ImagickDraw
PHP Manual

ImagickDraw::annotation

(PECL imagick 2.0.0)

ImagickDraw::annotation — Draws text on the image

说明

bool ImagickDraw::annotation ( float $x , float $y , string $text )
Warning

本函数还未编写文档，仅有参数列表。

Draws text on the image.

参数

x

The x coordinate where text is drawn

y

The y coordinate where text is drawn

text

The text to draw on the image

返回值

没有返回值。

ImagickDraw::affine
ImagickDraw::arc
ImagickDraw


Draws an arc

ImagickDraw::annotation
ImagickDraw::bezier
ImagickDraw
PHP Manual

ImagickDraw::arc

(PECL imagick 2.0.0)

ImagickDraw::arc — Draws an arc

说明

bool ImagickDraw::arc ( float $sx , float $sy , float $ex , float $ey , float $sd , float $ed )
Warning

本函数还未编写文档，仅有参数列表。

Draws an arc falling within a specified bounding rectangle on the image.

参数

sx

Starting x ordinate of bounding rectangle

sy

starting y ordinate of bounding rectangle

ex

ending x ordinate of bounding rectangle

ey

ending y ordinate of bounding rectangle

sd

starting degrees of rotation

ed

ending degrees of rotation

返回值

没有返回值。

范例

Example #1 ImagickDraw::arc()

<?php
function arc($strokeColor, $fillColor, $backgroundColor, $startX, $startY, $endX, $endY, $startAngle, $endAngle) {

    //Create a ImagickDraw object to draw into.
    $draw = new \ImagickDraw();
    $draw->setStrokeWidth(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(2);

    $draw->arc($startX, $startY, $endX, $endY, $startAngle, $endAngle);

    //Create an image object which the draw commands can be rendered into
    $image = new \Imagick();
    $image->newImage(IMAGE_WIDTH, IMAGE_HEIGHT, $backgroundColor);
    $image->setImageFormat("png");

    //Render the draw commands in the ImagickDraw object
    //into the image.
    $image->drawImage($draw);

    //Send the image to the browser
    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickDraw::annotation
ImagickDraw::bezier
ImagickDraw


Draws a bezier curve

ImagickDraw::arc
ImagickDraw::circle
ImagickDraw
PHP Manual

ImagickDraw::bezier

(PECL imagick 2.0.0)

ImagickDraw::bezier — Draws a bezier curve

说明

bool ImagickDraw::bezier ( array $coordinates )
Warning

本函数还未编写文档，仅有参数列表。

Draws a bezier curve through a set of points on the image.

参数

coordinates

Multidimensional array like array( array( 'x' => 1, 'y' => 2 ), array( 'x' => 3, 'y' => 4 ) )

返回值

没有返回值。

范例

Example #1 ImagickDraw::bezier()

<?php
function bezier($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $strokeColor = new \ImagickPixel($strokeColor);
    $fillColor = new \ImagickPixel($fillColor);

    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(2);

    $smoothPointsSet = [
        [
            ['x' => 10.0 * 5, 'y' => 10.0 * 5],
            ['x' => 30.0 * 5, 'y' => 90.0 * 5],
            ['x' => 25.0 * 5, 'y' => 10.0 * 5],
            ['x' => 50.0 * 5, 'y' => 50.0 * 5],
        ],
        [
            ['x' => 50.0 * 5, 'y' => 50.0 * 5],
            ['x' => 75.0 * 5, 'y' => 90.0 * 5],
            ['x' => 70.0 * 5, 'y' => 10.0 * 5],
            ['x' => 90.0 * 5, 'y' => 40.0 * 5],
        ],
    ];

    foreach ($smoothPointsSet as $points) {
        $draw->bezier($points);
    }

    $disjointPoints = [
        [
            ['x' => 10 * 5, 'y' => 10 * 5],
            ['x' => 30 * 5, 'y' => 90 * 5],
            ['x' => 25 * 5, 'y' => 10 * 5],
            ['x' => 50 * 5, 'y' => 50 * 5],
        ],
        [
            ['x' => 50 * 5, 'y' => 50 * 5],
            ['x' => 80 * 5, 'y' => 50 * 5],
            ['x' => 70 * 5, 'y' => 10 * 5],
            ['x' => 90 * 5, 'y' => 40 * 5],
         ]
    ];
    $draw->translate(0, 200);

    foreach ($disjointPoints as $points) {
        $draw->bezier($points);
    }

    //Create an image object which the draw commands can be rendered into
    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    //Render the draw commands in the ImagickDraw object
    //into the image.
    $imagick->drawImage($draw);

    //Send the image to the browser
    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::arc
ImagickDraw::circle
ImagickDraw


Draws a circle

ImagickDraw::bezier
ImagickDraw::clear
ImagickDraw
PHP Manual

ImagickDraw::circle

(PECL imagick 2.0.0)

ImagickDraw::circle — Draws a circle

说明

bool ImagickDraw::circle ( float $ox , float $oy , float $px , float $py )
Warning

本函数还未编写文档，仅有参数列表。

Draws a circle on the image.

参数

ox

origin x coordinate

oy

origin y coordinate

px

perimeter x coordinate

py

perimeter y coordinate

返回值

没有返回值。

范例

Example #1 ImagickDraw::circle()

<?php
function circle($strokeColor, $fillColor, $backgroundColor, $originX, $originY, $endX, $endY) {

    //Create a ImagickDraw object to draw into.
    $draw = new \ImagickDraw();

    $strokeColor = new \ImagickPixel($strokeColor);
    $fillColor = new \ImagickPixel($fillColor);

    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);

    $draw->circle($originX, $originY, $endX, $endY);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::bezier
ImagickDraw::clear
ImagickDraw


Clears the ImagickDraw

ImagickDraw::circle
ImagickDraw::clone
ImagickDraw
PHP Manual

ImagickDraw::clear

(PECL imagick 2.0.0)

ImagickDraw::clear — Clears the ImagickDraw

说明

bool ImagickDraw::clear ( void )
Warning

本函数还未编写文档，仅有参数列表。

Clears the ImagickDraw object of any accumulated commands, and resets the settings it contains to their defaults.

返回值

Returns an ImagickDraw object.

ImagickDraw::circle
ImagickDraw::clone
ImagickDraw


Makes an exact copy of the specified ImagickDraw object

ImagickDraw::clear
ImagickDraw::color
ImagickDraw
PHP Manual

ImagickDraw::clone

(PECL imagick 2.0.0)

ImagickDraw::clone — Makes an exact copy of the specified ImagickDraw object

说明

ImagickDraw ImagickDraw::clone ( void )
Warning

本函数还未编写文档，仅有参数列表。

Makes an exact copy of the specified ImagickDraw object.

返回值

What the function returns, first on success, then on failure. See also the &return.success; entity

ImagickDraw::clear
ImagickDraw::color
ImagickDraw


Draws color on image

ImagickDraw::clone
ImagickDraw::comment
ImagickDraw
PHP Manual

ImagickDraw::color

(PECL imagick 2.0.0)

ImagickDraw::color — Draws color on image

说明

bool ImagickDraw::color ( float $x , float $y , int $paintMethod )
Warning

本函数还未编写文档，仅有参数列表。

Draws color on image using the current fill color, starting at specified position, and using specified paint method.

参数

x

x coordinate of the paint

y

y coordinate of the paint

paintMethod

one of the PAINT_ constants

返回值

没有返回值。

ImagickDraw::clone
ImagickDraw::comment
ImagickDraw


Adds a comment

ImagickDraw::color
ImagickDraw::composite
ImagickDraw
PHP Manual

ImagickDraw::comment

(PECL imagick 2.0.0)

ImagickDraw::comment — Adds a comment

说明

bool ImagickDraw::comment ( string $comment )
Warning

本函数还未编写文档，仅有参数列表。

Adds a comment to a vector output stream.

参数

comment

The comment string to add to vector output stream

返回值

没有返回值。

ImagickDraw::color
ImagickDraw::composite
ImagickDraw


Composites an image onto the current image

ImagickDraw::comment
ImagickDraw::__construct
ImagickDraw
PHP Manual

ImagickDraw::composite

(PECL imagick 2.0.0)

ImagickDraw::composite — Composites an image onto the current image

说明

bool ImagickDraw::composite ( int $compose , float $x , float $y , float $width , float $height , Imagick $compositeWand )
Warning

本函数还未编写文档，仅有参数列表。

Composites an image onto the current image, using the specified composition operator, specified position, and at the specified size.

参数

compose

composition operator. One of COMPOSITE_ constants

x

x coordinate of the top left corner

y

y coordinate of the top left corner

width

width of the composition image

height

height of the composition image

compositeWand

the Imagick object where composition image is taken from

返回值

成功时返回 TRUE。

范例

Example #1 ImagickDraw::composite()

<?php
function composite($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setFillOpacity(1);
    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setStrokeWidth(2);
    $draw->setFont("../fonts/CANDY.TTF");
    $draw->setFontSize(140);
    $draw->rectangle(0, 0, 1000, 300);
    $draw->setFillColor('white');
    $draw->setfillopacity(1);
    $draw->annotation(50, 180, "Lorem Ipsum!");

    //Create an image object which the draw commands can be rendered into
    $imagick = new \Imagick();
    $imagick->newImage(1000, 302, $backgroundColor);
    $imagick->setImageFormat("png");

    //Render the draw commands in the ImagickDraw object
    //into the image.
    $imagick->drawImage($draw);

    //Send the image to the browser
    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::comment
ImagickDraw::__construct
ImagickDraw


The ImagickDraw constructor

ImagickDraw::composite
ImagickDraw::destroy
ImagickDraw
PHP Manual

ImagickDraw::__construct

(PECL imagick 2.0.0)

ImagickDraw::__construct — The ImagickDraw constructor

说明

ImagickDraw::__construct ( void )
Warning

本函数还未编写文档，仅有参数列表。

The ImagickDraw constructor

返回值

没有返回值。

ImagickDraw::composite
ImagickDraw::destroy
ImagickDraw


Frees all associated resources

ImagickDraw::__construct
ImagickDraw::ellipse
ImagickDraw
PHP Manual

ImagickDraw::destroy

(PECL imagick 2.0.0)

ImagickDraw::destroy — Frees all associated resources

说明

bool ImagickDraw::destroy ( void )
Warning

本函数还未编写文档，仅有参数列表。

Frees all resources associated with the ImagickDraw object.

返回值

没有返回值。

ImagickDraw::__construct
ImagickDraw::ellipse
ImagickDraw


Draws an ellipse on the image

ImagickDraw::destroy
ImagickDraw::getClipPath
ImagickDraw
PHP Manual

ImagickDraw::ellipse

(PECL imagick 2.0.0)

ImagickDraw::ellipse — Draws an ellipse on the image

说明

bool ImagickDraw::ellipse ( float $ox , float $oy , float $rx , float $ry , float $start , float $end )
Warning

本函数还未编写文档，仅有参数列表。

Draws an ellipse on the image.

参数

ox

oy

rx

ry

start

end

返回值

没有返回值。

范例

Example #1 ImagickDraw::ellipse()

<?php
function ellipse($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);

    $draw->ellipse(125, 70, 100, 50, 0, 360);
    $draw->ellipse(350, 70, 100, 50, 0, 315);

    $draw->push();
    $draw->translate(125, 250);
    $draw->rotate(30);
    $draw->ellipse(0, 0, 100, 50, 0, 360);
    $draw->pop();

    $draw->push();
    $draw->translate(350, 250);
    $draw->rotate(30);
    $draw->ellipse(0, 0, 100, 50, 0, 315);
    $draw->pop();

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::destroy
ImagickDraw::getClipPath
ImagickDraw


Obtains the current clipping path ID

ImagickDraw::ellipse
ImagickDraw::getClipRule
ImagickDraw
PHP Manual

ImagickDraw::getClipPath

(PECL imagick 2.0.0)

ImagickDraw::getClipPath — Obtains the current clipping path ID

说明

string ImagickDraw::getClipPath ( void )
Warning

本函数还未编写文档，仅有参数列表。

Obtains the current clipping path ID.

返回值

Returns a string containing the clip path ID or false if no clip path exists.

ImagickDraw::ellipse
ImagickDraw::getClipRule
ImagickDraw


Returns the current polygon fill rule

ImagickDraw::getClipPath
ImagickDraw::getClipUnits
ImagickDraw
PHP Manual

ImagickDraw::getClipRule

(PECL imagick 2.0.0)

ImagickDraw::getClipRule — Returns the current polygon fill rule

说明

int ImagickDraw::getClipRule ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the current polygon fill rule to be used by the clipping path.

返回值

Returns one of the FILLRULE_ constants.

ImagickDraw::getClipPath
ImagickDraw::getClipUnits
ImagickDraw


Returns the interpretation of clip path units

ImagickDraw::getClipRule
ImagickDraw::getFillColor
ImagickDraw
PHP Manual

ImagickDraw::getClipUnits

(PECL imagick 2.0.0)

ImagickDraw::getClipUnits — Returns the interpretation of clip path units

说明

int ImagickDraw::getClipUnits ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the interpretation of clip path units.

返回值

Returns an int on success.

ImagickDraw::getClipRule
ImagickDraw::getFillColor
ImagickDraw


Returns the fill color

ImagickDraw::getClipUnits
ImagickDraw::getFillOpacity
ImagickDraw
PHP Manual

ImagickDraw::getFillColor

(PECL imagick 2.0.0)

ImagickDraw::getFillColor — Returns the fill color

说明

ImagickPixel ImagickDraw::getFillColor ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the fill color used for drawing filled objects.

返回值

Returns an ImagickPixel object.

ImagickDraw::getClipUnits
ImagickDraw::getFillOpacity
ImagickDraw


Returns the opacity used when drawing

ImagickDraw::getFillColor
ImagickDraw::getFillRule
ImagickDraw
PHP Manual

ImagickDraw::getFillOpacity

(PECL imagick 2.0.0)

ImagickDraw::getFillOpacity — Returns the opacity used when drawing

说明

float ImagickDraw::getFillOpacity ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the opacity used when drawing using the fill color or fill texture. Fully opaque is 1.0.

返回值

The opacity.

ImagickDraw::getFillColor
ImagickDraw::getFillRule
ImagickDraw


Returns the fill rule

ImagickDraw::getFillOpacity
ImagickDraw::getFont
ImagickDraw
PHP Manual

ImagickDraw::getFillRule

(PECL imagick 2.0.0)

ImagickDraw::getFillRule — Returns the fill rule

说明

int ImagickDraw::getFillRule ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the fill rule used while drawing polygons.

返回值

Returns a FILLRULE_ constant

ImagickDraw::getFillOpacity
ImagickDraw::getFont
ImagickDraw


Returns the font

ImagickDraw::getFillRule
ImagickDraw::getFontFamily
ImagickDraw
PHP Manual

ImagickDraw::getFont

(PECL imagick 2.0.0)

ImagickDraw::getFont — Returns the font

说明

string ImagickDraw::getFont ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns a string specifying the font used when annotating with text.

返回值

Returns a string on success and false if no font is set.

ImagickDraw::getFillRule
ImagickDraw::getFontFamily
ImagickDraw


Returns the font family

ImagickDraw::getFont
ImagickDraw::getFontSize
ImagickDraw
PHP Manual

ImagickDraw::getFontFamily

(PECL imagick 2.0.0)

ImagickDraw::getFontFamily — Returns the font family

说明

string ImagickDraw::getFontFamily ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the font family to use when annotating with text.

返回值

Returns the font family currently selected or false if font family is not set.

ImagickDraw::getFont
ImagickDraw::getFontSize
ImagickDraw


Returns the font pointsize

ImagickDraw::getFontFamily
ImagickDraw::getFontStretch
ImagickDraw
PHP Manual

ImagickDraw::getFontSize

(PECL imagick 2.0.0)

ImagickDraw::getFontSize — Returns the font pointsize

说明

float ImagickDraw::getFontSize ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the font pointsize used when annotating with text.

返回值

Returns the font size associated with the current ImagickDraw object.

ImagickDraw::getFontFamily
ImagickDraw::getFontStretch
ImagickDraw


Description

ImagickDraw::getFontSize
ImagickDraw::getFontStyle
ImagickDraw
PHP Manual

ImagickDraw::getFontStretch

(No version information available, might only be in Git)

ImagickDraw::getFontStretch — Description

说明

public int ImagickDraw::getFontStretch ( void )

Gets the font stretch to use when annotating with text. Returns a StretchType.

参数

此函数没有参数。

返回值

ImagickDraw::getFontSize
ImagickDraw::getFontStyle
ImagickDraw


Returns the font style

ImagickDraw::getFontStretch
ImagickDraw::getFontWeight
ImagickDraw
PHP Manual

ImagickDraw::getFontStyle

(PECL imagick 2.0.0)

ImagickDraw::getFontStyle — Returns the font style

说明

int ImagickDraw::getFontStyle ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the font style used when annotating with text.

返回值

Returns the font style constant (STYLE_) associated with the ImagickDraw object or 0 if no style is set.

ImagickDraw::getFontStretch
ImagickDraw::getFontWeight
ImagickDraw


Returns the font weight

ImagickDraw::getFontStyle
ImagickDraw::getGravity
ImagickDraw
PHP Manual

ImagickDraw::getFontWeight

(PECL imagick 2.0.0)

ImagickDraw::getFontWeight — Returns the font weight

说明

int ImagickDraw::getFontWeight ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the font weight used when annotating with text.

返回值

Returns an int on success and 0 if no weight is set.

ImagickDraw::getFontStyle
ImagickDraw::getGravity
ImagickDraw


Returns the text placement gravity

ImagickDraw::getFontWeight
ImagickDraw::getStrokeAntialias
ImagickDraw
PHP Manual

ImagickDraw::getGravity

(PECL imagick 2.0.0)

ImagickDraw::getGravity — Returns the text placement gravity

说明

int ImagickDraw::getGravity ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the text placement gravity used when annotating with text.

返回值

Returns a GRAVITY_ constant on success and 0 if no gravity is set.

ImagickDraw::getFontWeight
ImagickDraw::getStrokeAntialias
ImagickDraw


Returns the current stroke antialias setting

ImagickDraw::getGravity
ImagickDraw::getStrokeColor
ImagickDraw
PHP Manual

ImagickDraw::getStrokeAntialias

(PECL imagick 2.0.0)

ImagickDraw::getStrokeAntialias — Returns the current stroke antialias setting

说明

bool ImagickDraw::getStrokeAntialias ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the current stroke antialias setting. Stroked outlines are antialiased by default. When antialiasing is disabled stroked pixels are thresholded to determine if the stroke color or underlying canvas color should be used.

返回值

Returns TRUE if antialiasing is on and false if it is off.

ImagickDraw::getGravity
ImagickDraw::getStrokeColor
ImagickDraw


Returns the color used for stroking object outlines

ImagickDraw::getStrokeAntialias
ImagickDraw::getStrokeDashArray
ImagickDraw
PHP Manual

ImagickDraw::getStrokeColor

(PECL imagick 2.0.0)

ImagickDraw::getStrokeColor — Returns the color used for stroking object outlines

说明

ImagickPixel ImagickDraw::getStrokeColor ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the color used for stroking object outlines.

参数

stroke_color

返回值

Returns an ImagickPixel object which describes the color.

ImagickDraw::getStrokeAntialias
ImagickDraw::getStrokeDashArray
ImagickDraw


Returns an array representing the pattern of dashes and gaps used to stroke paths

ImagickDraw::getStrokeColor
ImagickDraw::getStrokeDashOffset
ImagickDraw
PHP Manual

ImagickDraw::getStrokeDashArray

(PECL imagick 2.0.0)

ImagickDraw::getStrokeDashArray — Returns an array representing the pattern of dashes and gaps used to stroke paths

说明

array ImagickDraw::getStrokeDashArray ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns an array representing the pattern of dashes and gaps used to stroke paths.

返回值

Returns an array on success and empty array if not set.

ImagickDraw::getStrokeColor
ImagickDraw::getStrokeDashOffset
ImagickDraw


Returns the offset into the dash pattern to start the dash

ImagickDraw::getStrokeDashArray
ImagickDraw::getStrokeLineCap
ImagickDraw
PHP Manual

ImagickDraw::getStrokeDashOffset

(PECL imagick 2.0.0)

ImagickDraw::getStrokeDashOffset — Returns the offset into the dash pattern to start the dash

说明

float ImagickDraw::getStrokeDashOffset ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the offset into the dash pattern to start the dash.

返回值

Returns a float representing the offset and 0 if it's not set.

ImagickDraw::getStrokeDashArray
ImagickDraw::getStrokeLineCap
ImagickDraw


Returns the shape to be used at the end of open subpaths when they are stroked

ImagickDraw::getStrokeDashOffset
ImagickDraw::getStrokeLineJoin
ImagickDraw
PHP Manual

ImagickDraw::getStrokeLineCap

(PECL imagick 2.0.0)

ImagickDraw::getStrokeLineCap — Returns the shape to be used at the end of open subpaths when they are stroked

说明

int ImagickDraw::getStrokeLineCap ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the shape to be used at the end of open subpaths when they are stroked.

返回值

Returns one of the LINECAP_ constants or 0 if stroke linecap is not set.

ImagickDraw::getStrokeDashOffset
ImagickDraw::getStrokeLineJoin
ImagickDraw


Returns the shape to be used at the corners of paths when they are stroked

ImagickDraw::getStrokeLineCap
ImagickDraw::getStrokeMiterLimit
ImagickDraw
PHP Manual

ImagickDraw::getStrokeLineJoin

(PECL imagick 2.0.0)

ImagickDraw::getStrokeLineJoin — Returns the shape to be used at the corners of paths when they are stroked

说明

int ImagickDraw::getStrokeLineJoin ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the shape to be used at the corners of paths (or other vector shapes) when they are stroked.

返回值

Returns one of the LINEJOIN_ constants or 0 if stroke line join is not set.

ImagickDraw::getStrokeLineCap
ImagickDraw::getStrokeMiterLimit
ImagickDraw


Returns the stroke miter limit

ImagickDraw::getStrokeLineJoin
ImagickDraw::getStrokeOpacity
ImagickDraw
PHP Manual

ImagickDraw::getStrokeMiterLimit

(PECL imagick 2.0.0)

ImagickDraw::getStrokeMiterLimit — Returns the stroke miter limit

说明

int ImagickDraw::getStrokeMiterLimit ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the miter limit. When two line segments meet at a sharp angle and miter joins have been specified for 'lineJoin', it is possible for the miter to extend far beyond the thickness of the line stroking the path. The 'miterLimit' imposes a limit on the ratio of the miter length to the 'lineWidth'.

返回值

Returns an int describing the miter limit and 0 if no miter limit is set.

ImagickDraw::getStrokeLineJoin
ImagickDraw::getStrokeOpacity
ImagickDraw


Returns the opacity of stroked object outlines

ImagickDraw::getStrokeMiterLimit
ImagickDraw::getStrokeWidth
ImagickDraw
PHP Manual

ImagickDraw::getStrokeOpacity

(PECL imagick 2.0.0)

ImagickDraw::getStrokeOpacity — Returns the opacity of stroked object outlines

说明

float ImagickDraw::getStrokeOpacity ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the opacity of stroked object outlines.

返回值

Returns a double describing the opacity.

ImagickDraw::getStrokeMiterLimit
ImagickDraw::getStrokeWidth
ImagickDraw


Returns the width of the stroke used to draw object outlines

ImagickDraw::getStrokeOpacity
ImagickDraw::getTextAlignment
ImagickDraw
PHP Manual

ImagickDraw::getStrokeWidth

(PECL imagick 2.0.0)

ImagickDraw::getStrokeWidth — Returns the width of the stroke used to draw object outlines

说明

float ImagickDraw::getStrokeWidth ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the width of the stroke used to draw object outlines.

返回值

Returns a double describing the stroke width.

ImagickDraw::getStrokeOpacity
ImagickDraw::getTextAlignment
ImagickDraw


Returns the text alignment

ImagickDraw::getStrokeWidth
ImagickDraw::getTextAntialias
ImagickDraw
PHP Manual

ImagickDraw::getTextAlignment

(PECL imagick 2.0.0)

ImagickDraw::getTextAlignment — Returns the text alignment

说明

int ImagickDraw::getTextAlignment ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the alignment applied when annotating with text.

返回值

Returns one of the ALIGN_ constants and 0 if no align is set.

ImagickDraw::getStrokeWidth
ImagickDraw::getTextAntialias
ImagickDraw


Returns the current text antialias setting

ImagickDraw::getTextAlignment
ImagickDraw::getTextDecoration
ImagickDraw
PHP Manual

ImagickDraw::getTextAntialias

(PECL imagick 2.0.0)

ImagickDraw::getTextAntialias — Returns the current text antialias setting

说明

bool ImagickDraw::getTextAntialias ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the current text antialias setting, which determines whether text is antialiased. Text is antialiased by default.

返回值

Returns TRUE if text is antialiased and false if not.

ImagickDraw::getTextAlignment
ImagickDraw::getTextDecoration
ImagickDraw


Returns the text decoration

ImagickDraw::getTextAntialias
ImagickDraw::getTextEncoding
ImagickDraw
PHP Manual

ImagickDraw::getTextDecoration

(PECL imagick 2.0.0)

ImagickDraw::getTextDecoration — Returns the text decoration

说明

int ImagickDraw::getTextDecoration ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the decoration applied when annotating with text.

返回值

Returns one of the DECORATION_ constants and 0 if no decoration is set.

ImagickDraw::getTextAntialias
ImagickDraw::getTextEncoding
ImagickDraw


Returns the code set used for text annotations

ImagickDraw::getTextDecoration
ImagickDraw::getTextInterlineSpacing
ImagickDraw
PHP Manual

ImagickDraw::getTextEncoding

(PECL imagick 2.0.0)

ImagickDraw::getTextEncoding — Returns the code set used for text annotations

说明

string ImagickDraw::getTextEncoding ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns a string which specifies the code set used for text annotations.

返回值

Returns a string specifying the code set or false if text encoding is not set.

ImagickDraw::getTextDecoration
ImagickDraw::getTextInterlineSpacing
ImagickDraw


Description

ImagickDraw::getTextEncoding
ImagickDraw::getTextInterwordSpacing
ImagickDraw
PHP Manual

ImagickDraw::getTextInterlineSpacing

(No version information available, might only be in Git)

ImagickDraw::getTextInterlineSpacing — Description

说明

public float ImagickDraw::getTextInterlineSpacing ( void )

Gets the text interword spacing.

参数

此函数没有参数。

返回值

ImagickDraw::getTextEncoding
ImagickDraw::getTextInterwordSpacing
ImagickDraw


Description

ImagickDraw::getTextInterlineSpacing
ImagickDraw::getTextKerning
ImagickDraw
PHP Manual

ImagickDraw::getTextInterwordSpacing

(No version information available, might only be in Git)

ImagickDraw::getTextInterwordSpacing — Description

说明

public float ImagickDraw::getTextInterwordSpacing ( void )

Gets the text interword spacing.

参数

此函数没有参数。

返回值

ImagickDraw::getTextInterlineSpacing
ImagickDraw::getTextKerning
ImagickDraw


Description

ImagickDraw::getTextInterwordSpacing
ImagickDraw::getTextUnderColor
ImagickDraw
PHP Manual

ImagickDraw::getTextKerning

(No version information available, might only be in Git)

ImagickDraw::getTextKerning — Description

说明

public float ImagickDraw::getTextKerning ( void )

Gets the text kerning.

参数

此函数没有参数。

返回值

ImagickDraw::getTextInterwordSpacing
ImagickDraw::getTextUnderColor
ImagickDraw


Returns the text under color

ImagickDraw::getTextKerning
ImagickDraw::getVectorGraphics
ImagickDraw
PHP Manual

ImagickDraw::getTextUnderColor

(PECL imagick 2.0.0)

ImagickDraw::getTextUnderColor — Returns the text under color

说明

ImagickPixel ImagickDraw::getTextUnderColor ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the color of a background rectangle to place under text annotations.

返回值

Returns an ImagickPixel object describing the color.

ImagickDraw::getTextKerning
ImagickDraw::getVectorGraphics
ImagickDraw


Returns a string containing vector graphics

ImagickDraw::getTextUnderColor
ImagickDraw::line
ImagickDraw
PHP Manual

ImagickDraw::getVectorGraphics

(PECL imagick 2.0.0)

ImagickDraw::getVectorGraphics — Returns a string containing vector graphics

说明

string ImagickDraw::getVectorGraphics ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns a string which specifies the vector graphics generated by any graphics calls made since the ImagickDraw object was instantiated.

返回值

Returns a string containing the vector graphics.

ImagickDraw::getTextUnderColor
ImagickDraw::line
ImagickDraw


Draws a line

ImagickDraw::getVectorGraphics
ImagickDraw::matte
ImagickDraw
PHP Manual

ImagickDraw::line

(PECL imagick 2.0.0)

ImagickDraw::line — Draws a line

说明

bool ImagickDraw::line ( float $sx , float $sy , float $ex , float $ey )
Warning

本函数还未编写文档，仅有参数列表。

Draws a line on the image using the current stroke color, stroke opacity, and stroke width.

参数

sx

starting x coordinate

sy

starting y coordinate

ex

ending x coordinate

ey

ending y coordinate

返回值

没有返回值。

范例

Example #1 ImagickDraw::line()

<?php
function line($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);

    $draw->line(125, 70, 100, 50);
    $draw->line(350, 170, 100, 150);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::getVectorGraphics
ImagickDraw::matte
ImagickDraw


Paints on the image's opacity channel

ImagickDraw::line
ImagickDraw::pathClose
ImagickDraw
PHP Manual

ImagickDraw::matte

(PECL imagick 2.0.0)

ImagickDraw::matte — Paints on the image's opacity channel

说明

bool ImagickDraw::matte ( float $x , float $y , int $paintMethod )
Warning

本函数还未编写文档，仅有参数列表。

Paints on the image's opacity channel in order to set effected pixels to transparent, to influence the opacity of pixels.

参数

x

x coordinate of the matte

y

y coordinate of the matte

paintMethod

PAINT_ constant

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ImagickDraw::matte()

<?php
function matte($strokeColor, $fillColor, $backgroundColor, $paintType) {
    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);

    $draw->matte(120, 120, $paintType);
    $draw->rectangle(100, 100, 300, 200);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::line
ImagickDraw::pathClose
ImagickDraw


Adds a path element to the current path

ImagickDraw::matte
ImagickDraw::pathCurveToAbsolute
ImagickDraw
PHP Manual

ImagickDraw::pathClose

(PECL imagick 2.0.0)

ImagickDraw::pathClose — Adds a path element to the current path

说明

bool ImagickDraw::pathClose ( void )
Warning

本函数还未编写文档，仅有参数列表。

Adds a path element to the current path which closes the current subpath by drawing a straight line from the current point to the current subpath's most recent starting point (usually, the most recent moveto point).

返回值

没有返回值。

ImagickDraw::matte
ImagickDraw::pathCurveToAbsolute
ImagickDraw


Draws a cubic Bezier curve

ImagickDraw::pathClose
ImagickDraw::pathCurveToQuadraticBezierAbsolute
ImagickDraw
PHP Manual

ImagickDraw::pathCurveToAbsolute

(PECL imagick 2.0.0)

ImagickDraw::pathCurveToAbsolute — Draws a cubic Bezier curve

说明

bool ImagickDraw::pathCurveToAbsolute ( float $x1 , float $y1 , float $x2 , float $y2 , float $x , float $y )
Warning

本函数还未编写文档，仅有参数列表。

Draws a cubic Bezier curve from the current point to (x,y) using (x1,y1) as the control point at the beginning of the curve and (x2,y2) as the control point at the end of the curve using absolute coordinates. At the end of the command, the new current point becomes the final (x,y) coordinate pair used in the polybezier.

参数

x1

x coordinate of the first control point

y1

y coordinate of the first control point

x2

x coordinate of the second control point

y2

y coordinate of the first control point

x

x coordinate of the curve end

y

y coordinate of the curve end

返回值

没有返回值。

ImagickDraw::pathClose
ImagickDraw::pathCurveToQuadraticBezierAbsolute
ImagickDraw


Draws a quadratic Bezier curve

ImagickDraw::pathCurveToAbsolute
ImagickDraw::pathCurveToQuadraticBezierRelative
ImagickDraw
PHP Manual

ImagickDraw::pathCurveToQuadraticBezierAbsolute

(PECL imagick 2.0.0)

ImagickDraw::pathCurveToQuadraticBezierAbsolute — Draws a quadratic Bezier curve

说明

bool ImagickDraw::pathCurveToQuadraticBezierAbsolute ( float $x1 , float $y1 , float $x , float $y )
Warning

本函数还未编写文档，仅有参数列表。

Draws a quadratic Bezier curve from the current point to (x,y) using (x1,y1) as the control point using absolute coordinates. At the end of the command, the new current point becomes the final (x,y) coordinate pair used in the polybezier.

参数

x1

x coordinate of the control point

y1

y coordinate of the control point

x

x coordinate of the end point

y

y coordinate of the end point

返回值

没有返回值。

范例

Example #1 ImagickDraw::pathCurveToQuadraticBezierAbsolute()

<?php
function pathCurveToQuadraticBezierAbsolute($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);

    $draw->pathStart();
    $draw->pathMoveToAbsolute(50,250);

    // This specifies a quadratic bezier curve with the current position as the start
    // point, the control point is the first two params, and the end point is the last two params.
    $draw->pathCurveToQuadraticBezierAbsolute(
        150,50,
        250,250
    );

    // This specifies a quadratic bezier curve with the current position as the start
    // point, the control point is mirrored from the previous curves control point
    // and the end point is defined by the x, y values.
    $draw->pathCurveToQuadraticBezierSmoothAbsolute(
        450,250
    );

    // This specifies a quadratic bezier curve with the current position as the start
    // point, the control point is mirrored from the previous curves control point
    // and the end point is defined relative from the current position by the x, y values.
    $draw->pathCurveToQuadraticBezierSmoothRelative(
        200,-100
    );

    $draw->pathFinish();

    $imagick = new \Imagick();
    $imagick->newImage(700, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();

}

?>

ImagickDraw::pathCurveToAbsolute
ImagickDraw::pathCurveToQuadraticBezierRelative
ImagickDraw


Draws a quadratic Bezier curve

ImagickDraw::pathCurveToQuadraticBezierAbsolute
ImagickDraw::pathCurveToQuadraticBezierSmoothAbsolute
ImagickDraw
PHP Manual

ImagickDraw::pathCurveToQuadraticBezierRelative

(PECL imagick 2.0.0)

ImagickDraw::pathCurveToQuadraticBezierRelative — Draws a quadratic Bezier curve

说明

bool ImagickDraw::pathCurveToQuadraticBezierRelative ( float $x1 , float $y1 , float $x , float $y )
Warning

本函数还未编写文档，仅有参数列表。

Draws a quadratic Bezier curve from the current point to (x,y) using (x1,y1) as the control point using relative coordinates. At the end of the command, the new current point becomes the final (x,y) coordinate pair used in the polybezier.

参数

x1

starting x coordinate

y1

starting y coordinate

x

ending x coordinate

y

ending y coordinate

返回值

没有返回值。

ImagickDraw::pathCurveToQuadraticBezierAbsolute
ImagickDraw::pathCurveToQuadraticBezierSmoothAbsolute
ImagickDraw


Draws a quadratic Bezier curve

ImagickDraw::pathCurveToQuadraticBezierRelative
ImagickDraw::pathCurveToQuadraticBezierSmoothRelative
ImagickDraw
PHP Manual

ImagickDraw::pathCurveToQuadraticBezierSmoothAbsolute

(PECL imagick 2.0.0)

ImagickDraw::pathCurveToQuadraticBezierSmoothAbsolute — Draws a quadratic Bezier curve

说明

bool ImagickDraw::pathCurveToQuadraticBezierSmoothAbsolute ( float $x , float $y )

Draws a quadratic Bezier curve (using absolute coordinates) from the current point to (x,y). The control point is assumed to be the reflection of the control point on the previous command relative to the current point. (If there is no previous command or if the previous command was not a DrawPathCurveToQuadraticBezierAbsolute, DrawPathCurveToQuadraticBezierRelative, DrawPathCurveToQuadraticBezierSmoothAbsolut or DrawPathCurveToQuadraticBezierSmoothRelative, assume the control point is coincident with the current point.). At the end of the command, the new current point becomes the final (x,y) coordinate pair used in the polybezier.

This function cannot be used to continue a cubic Bezier curve smoothly. It can only continue from a quadratic curve smoothly.

参数

x

ending x coordinate

y

ending y coordinate

返回值

没有返回值。

范例

Example #1 ImagickDraw::pathCurveToQuadraticBezierSmoothAbsolute()

<?php
$draw = new \ImagickDraw();

$draw->setStrokeOpacity(1);
$draw->setStrokeColor("black");
$draw->setFillColor("blue");

$draw->setStrokeWidth(2);
$draw->setFontSize(72);

$draw->pathStart();
$draw->pathMoveToAbsolute(50,250);

// This specifies a quadratic bezier curve with the current position as the start
// point, the control point is the first two params, and the end point is the last two params.
$draw->pathCurveToQuadraticBezierAbsolute(
    150,50,
    250,250
);

// This specifies a quadratic bezier curve with the current position as the start
// point, the control point is mirrored from the previous curves control point
// and the end point is defined by the x, y values.
$draw->pathCurveToQuadraticBezierSmoothAbsolute(
    450,250
);

// This specifies a quadratic bezier curve with the current position as the start
// point, the control point is mirrored from the previous curves control point
// and the end point is defined relative from the current position by the x, y values.
$draw->pathCurveToQuadraticBezierSmoothRelative(
    200,-100
);

$draw->pathFinish();

$imagick = new \Imagick();
$imagick->newImage(700, 500, $backgroundColor);
$imagick->setImageFormat("png");

$imagick->drawImage($draw);

header("Content-Type: image/png");
echo $imagick->getImageBlob();
?>

ImagickDraw::pathCurveToQuadraticBezierRelative
ImagickDraw::pathCurveToQuadraticBezierSmoothRelative
ImagickDraw


Draws a quadratic Bezier curve

ImagickDraw::pathCurveToQuadraticBezierSmoothAbsolute
ImagickDraw::pathCurveToRelative
ImagickDraw
PHP Manual

ImagickDraw::pathCurveToQuadraticBezierSmoothRelative

(PECL imagick 2.0.0)

ImagickDraw::pathCurveToQuadraticBezierSmoothRelative — Draws a quadratic Bezier curve

说明

bool ImagickDraw::pathCurveToQuadraticBezierSmoothRelative ( float $x , float $y )
Warning

本函数还未编写文档，仅有参数列表。

Draws a quadratic Bezier curve (using relative coordinates) from the current point to (x, y). The control point is assumed to be the reflection of the control point on the previous command relative to the current point. (If there is no previous command or if the previous command was not a DrawPathCurveToQuadraticBezierAbsolute, DrawPathCurveToQuadraticBezierRelative, DrawPathCurveToQuadraticBezierSmoothAbsolut or DrawPathCurveToQuadraticBezierSmoothRelative, assume the control point is coincident with the current point). At the end of the command, the new current point becomes the final (x, y) coordinate pair used in the polybezier.

This function cannot be used to continue a cubic Bezier curve smoothly. It can only continue from a quadratic curve smoothly.

参数

x

ending x coordinate

y

ending y coordinate

返回值

没有返回值。

范例

Example #1 ImagickDraw::pathCurveToQuadraticBezierSmoothRelative()

<?php
$draw = new \ImagickDraw();

$draw->setStrokeOpacity(1);
$draw->setStrokeColor("black");
$draw->setFillColor("blue");

$draw->setStrokeWidth(2);
$draw->setFontSize(72);

$draw->pathStart();
$draw->pathMoveToAbsolute(50,250);

// This specifies a quadratic bezier curve with the current position as the start
// point, the control point is the first two params, and the end point is the last two params.
$draw->pathCurveToQuadraticBezierAbsolute(
    150,50,
    250,250
);

// This specifies a quadratic bezier curve with the current position as the start
// point, the control point is mirrored from the previous curves control point
// and the end point is defined by the x, y values.
$draw->pathCurveToQuadraticBezierSmoothAbsolute(
    450,250
);

// This specifies a quadratic bezier curve with the current position as the start
// point, the control point is mirrored from the previous curves control point
// and the end point is defined relative from the current position by the x, y values.
$draw->pathCurveToQuadraticBezierSmoothRelative(
    200,-100
);

$draw->pathFinish();

$imagick = new \Imagick();
$imagick->newImage(700, 500, $backgroundColor);
$imagick->setImageFormat("png");

$imagick->drawImage($draw);

header("Content-Type: image/png");
echo $imagick->getImageBlob();
?>

ImagickDraw::pathCurveToQuadraticBezierSmoothAbsolute
ImagickDraw::pathCurveToRelative
ImagickDraw


Draws a cubic Bezier curve

ImagickDraw::pathCurveToQuadraticBezierSmoothRelative
ImagickDraw::pathCurveToSmoothAbsolute
ImagickDraw
PHP Manual

ImagickDraw::pathCurveToRelative

(PECL imagick 2.0.0)

ImagickDraw::pathCurveToRelative — Draws a cubic Bezier curve

说明

bool ImagickDraw::pathCurveToRelative ( float $x1 , float $y1 , float $x2 , float $y2 , float $x , float $y )
Warning

本函数还未编写文档，仅有参数列表。

Draws a cubic Bezier curve from the current point to (x,y) using (x1,y1) as the control point at the beginning of the curve and (x2,y2) as the control point at the end of the curve using relative coordinates. At the end of the command, the new current point becomes the final (x,y) coordinate pair used in the polybezier.

参数

x1

x coordinate of starting control point

y1

y coordinate of starting control point

x2

x coordinate of ending control point

y2

y coordinate of ending control point

x

ending x coordinate

y

ending y coordinate

返回值

没有返回值。

ImagickDraw::pathCurveToQuadraticBezierSmoothRelative
ImagickDraw::pathCurveToSmoothAbsolute
ImagickDraw


Draws a cubic Bezier curve

ImagickDraw::pathCurveToRelative
ImagickDraw::pathCurveToSmoothRelative
ImagickDraw
PHP Manual

ImagickDraw::pathCurveToSmoothAbsolute

(PECL imagick 2.0.0)

ImagickDraw::pathCurveToSmoothAbsolute — Draws a cubic Bezier curve

说明

bool ImagickDraw::pathCurveToSmoothAbsolute ( float $x2 , float $y2 , float $x , float $y )
Warning

本函数还未编写文档，仅有参数列表。

Draws a cubic Bezier curve from the current point to (x,y) using absolute coordinates. The first control point is assumed to be the reflection of the second control point on the previous command relative to the current point. (If there is no previous command or if the previous command was not an DrawPathCurveToAbsolute, DrawPathCurveToRelative, DrawPathCurveToSmoothAbsolute or DrawPathCurveToSmoothRelative, assume the first control point is coincident with the current point.) (x2,y2) is the second control point (i.e., the control point at the end of the curve). At the end of the command, the new current point becomes the final (x,y) coordinate pair used in the polybezier.

参数

x2

x coordinate of the second control point

y2

y coordinate of the second control point

x

x coordinate of the ending point

y

y coordinate of the ending point

返回值

没有返回值。

ImagickDraw::pathCurveToRelative
ImagickDraw::pathCurveToSmoothRelative
ImagickDraw


Draws a cubic Bezier curve

ImagickDraw::pathCurveToSmoothAbsolute
ImagickDraw::pathEllipticArcAbsolute
ImagickDraw
PHP Manual

ImagickDraw::pathCurveToSmoothRelative

(PECL imagick 2.0.0)

ImagickDraw::pathCurveToSmoothRelative — Draws a cubic Bezier curve

说明

bool ImagickDraw::pathCurveToSmoothRelative ( float $x2 , float $y2 , float $x , float $y )
Warning

本函数还未编写文档，仅有参数列表。

Draws a cubic Bezier curve from the current point to (x,y) using relative coordinates. The first control point is assumed to be the reflection of the second control point on the previous command relative to the current point. (If there is no previous command or if the previous command was not an DrawPathCurveToAbsolute, DrawPathCurveToRelative, DrawPathCurveToSmoothAbsolute or DrawPathCurveToSmoothRelative, assume the first control point is coincident with the current point.) (x2,y2) is the second control point (i.e., the control point at the end of the curve). At the end of the command, the new current point becomes the final (x,y) coordinate pair used in the polybezier.

参数

x2

x coordinate of the second control point

y2

y coordinate of the second control point

x

x coordinate of the ending point

y

y coordinate of the ending point

返回值

没有返回值。

ImagickDraw::pathCurveToSmoothAbsolute
ImagickDraw::pathEllipticArcAbsolute
ImagickDraw


Draws an elliptical arc

ImagickDraw::pathCurveToSmoothRelative
ImagickDraw::pathEllipticArcRelative
ImagickDraw
PHP Manual

ImagickDraw::pathEllipticArcAbsolute

(PECL imagick 2.0.0)

ImagickDraw::pathEllipticArcAbsolute — Draws an elliptical arc

说明

bool ImagickDraw::pathEllipticArcAbsolute ( float $rx , float $ry , float $x_axis_rotation , bool $large_arc_flag , bool $sweep_flag , float $x , float $y )
Warning

本函数还未编写文档，仅有参数列表。

Draws an elliptical arc from the current point to (x, y) using absolute coordinates. The size and orientation of the ellipse are defined by two radii (rx, ry) and an xAxisRotation, which indicates how the ellipse as a whole is rotated relative to the current coordinate system. The center (cx, cy) of the ellipse is calculated automatically to satisfy the constraints imposed by the other parameters. largeArcFlag and sweepFlag contribute to the automatic calculations and help determine how the arc is drawn. If largeArcFlag is TRUE then draw the larger of the available arcs. If sweepFlag is true, then draw the arc matching a clock-wise rotation.

参数

rx

x radius

ry

y radius

x_axis_rotation

x axis rotation

large_arc_flag

large arc flag

sweep_flag

sweep flag

x

x coordinate

y

y coordinate

返回值

没有返回值。

ImagickDraw::pathCurveToSmoothRelative
ImagickDraw::pathEllipticArcRelative
ImagickDraw


Draws an elliptical arc

ImagickDraw::pathEllipticArcAbsolute
ImagickDraw::pathFinish
ImagickDraw
PHP Manual

ImagickDraw::pathEllipticArcRelative

(PECL imagick 2.0.0)

ImagickDraw::pathEllipticArcRelative — Draws an elliptical arc

说明

bool ImagickDraw::pathEllipticArcRelative ( float $rx , float $ry , float $x_axis_rotation , bool $large_arc_flag , bool $sweep_flag , float $x , float $y )
Warning

本函数还未编写文档，仅有参数列表。

Draws an elliptical arc from the current point to (x, y) using relative coordinates. The size and orientation of the ellipse are defined by two radii (rx, ry) and an xAxisRotation, which indicates how the ellipse as a whole is rotated relative to the current coordinate system. The center (cx, cy) of the ellipse is calculated automatically to satisfy the constraints imposed by the other parameters. largeArcFlag and sweepFlag contribute to the automatic calculations and help determine how the arc is drawn. If largeArcFlag is TRUE then draw the larger of the available arcs. If sweepFlag is true, then draw the arc matching a clock-wise rotation.

参数

rx

x radius

ry

y radius

x_axis_rotation

x axis rotation

large_arc_flag

large arc flag

sweep_flag

sweep flag

x

x coordinate

y

y coordinate

返回值

没有返回值。

ImagickDraw::pathEllipticArcAbsolute
ImagickDraw::pathFinish
ImagickDraw


Terminates the current path

ImagickDraw::pathEllipticArcRelative
ImagickDraw::pathLineToAbsolute
ImagickDraw
PHP Manual

ImagickDraw::pathFinish

(PECL imagick 2.0.0)

ImagickDraw::pathFinish — Terminates the current path

说明

bool ImagickDraw::pathFinish ( void )
Warning

本函数还未编写文档，仅有参数列表。

Terminates the current path.

返回值

没有返回值。

ImagickDraw::pathEllipticArcRelative
ImagickDraw::pathLineToAbsolute
ImagickDraw


Draws a line path

ImagickDraw::pathFinish
ImagickDraw::pathLineToHorizontalAbsolute
ImagickDraw
PHP Manual

ImagickDraw::pathLineToAbsolute

(PECL imagick 2.0.0)

ImagickDraw::pathLineToAbsolute — Draws a line path

说明

bool ImagickDraw::pathLineToAbsolute ( float $x , float $y )
Warning

本函数还未编写文档，仅有参数列表。

Draws a line path from the current point to the given coordinate using absolute coordinates. The coordinate then becomes the new current point.

参数

x

starting x coordinate

y

ending x coordinate

返回值

没有返回值。

ImagickDraw::pathFinish
ImagickDraw::pathLineToHorizontalAbsolute
ImagickDraw


Draws a horizontal line path

ImagickDraw::pathLineToAbsolute
ImagickDraw::pathLineToHorizontalRelative
ImagickDraw
PHP Manual

ImagickDraw::pathLineToHorizontalAbsolute

(PECL imagick 2.0.0)

ImagickDraw::pathLineToHorizontalAbsolute — Draws a horizontal line path

说明

bool ImagickDraw::pathLineToHorizontalAbsolute ( float $x )
Warning

本函数还未编写文档，仅有参数列表。

Draws a horizontal line path from the current point to the target point using absolute coordinates. The target point then becomes the new current point.

参数

x

x coordinate

返回值

没有返回值。

ImagickDraw::pathLineToAbsolute
ImagickDraw::pathLineToHorizontalRelative
ImagickDraw


Draws a horizontal line

ImagickDraw::pathLineToHorizontalAbsolute
ImagickDraw::pathLineToRelative
ImagickDraw
PHP Manual

ImagickDraw::pathLineToHorizontalRelative

(PECL imagick 2.0.0)

ImagickDraw::pathLineToHorizontalRelative — Draws a horizontal line

说明

bool ImagickDraw::pathLineToHorizontalRelative ( float $x )
Warning

本函数还未编写文档，仅有参数列表。

Draws a horizontal line path from the current point to the target point using relative coordinates. The target point then becomes the new current point.

参数

x

x coordinate

返回值

没有返回值。

ImagickDraw::pathLineToHorizontalAbsolute
ImagickDraw::pathLineToRelative
ImagickDraw


Draws a line path

ImagickDraw::pathLineToHorizontalRelative
ImagickDraw::pathLineToVerticalAbsolute
ImagickDraw
PHP Manual

ImagickDraw::pathLineToRelative

(PECL imagick 2.0.0)

ImagickDraw::pathLineToRelative — Draws a line path

说明

bool ImagickDraw::pathLineToRelative ( float $x , float $y )
Warning

本函数还未编写文档，仅有参数列表。

Draws a line path from the current point to the given coordinate using relative coordinates. The coordinate then becomes the new current point.

参数

x

starting x coordinate

y

starting y coordinate

返回值

没有返回值。

ImagickDraw::pathLineToHorizontalRelative
ImagickDraw::pathLineToVerticalAbsolute
ImagickDraw


Draws a vertical line

ImagickDraw::pathLineToRelative
ImagickDraw::pathLineToVerticalRelative
ImagickDraw
PHP Manual

ImagickDraw::pathLineToVerticalAbsolute

(PECL imagick 2.0.0)

ImagickDraw::pathLineToVerticalAbsolute — Draws a vertical line

说明

bool ImagickDraw::pathLineToVerticalAbsolute ( float $y )
Warning

本函数还未编写文档，仅有参数列表。

Draws a vertical line path from the current point to the target point using absolute coordinates. The target point then becomes the new current point.

参数

y

y coordinate

返回值

没有返回值。

ImagickDraw::pathLineToRelative
ImagickDraw::pathLineToVerticalRelative
ImagickDraw


Draws a vertical line path

ImagickDraw::pathLineToVerticalAbsolute
ImagickDraw::pathMoveToAbsolute
ImagickDraw
PHP Manual

ImagickDraw::pathLineToVerticalRelative

(PECL imagick 2.0.0)

ImagickDraw::pathLineToVerticalRelative — Draws a vertical line path

说明

bool ImagickDraw::pathLineToVerticalRelative ( float $y )
Warning

本函数还未编写文档，仅有参数列表。

Draws a vertical line path from the current point to the target point using relative coordinates. The target point then becomes the new current point.

参数

y

y coordinate

返回值

没有返回值。

ImagickDraw::pathLineToVerticalAbsolute
ImagickDraw::pathMoveToAbsolute
ImagickDraw


Starts a new sub-path

ImagickDraw::pathLineToVerticalRelative
ImagickDraw::pathMoveToRelative
ImagickDraw
PHP Manual

ImagickDraw::pathMoveToAbsolute

(PECL imagick 2.0.0)

ImagickDraw::pathMoveToAbsolute — Starts a new sub-path

说明

bool ImagickDraw::pathMoveToAbsolute ( float $x , float $y )
Warning

本函数还未编写文档，仅有参数列表。

Starts a new sub-path at the given coordinate using absolute coordinates. The current point then becomes the specified coordinate.

参数

x

x coordinate of the starting point

y

y coordinate of the starting point

返回值

没有返回值。

ImagickDraw::pathLineToVerticalRelative
ImagickDraw::pathMoveToRelative
ImagickDraw


Starts a new sub-path

ImagickDraw::pathMoveToAbsolute
ImagickDraw::pathStart
ImagickDraw
PHP Manual

ImagickDraw::pathMoveToRelative

(PECL imagick 2.0.0)

ImagickDraw::pathMoveToRelative — Starts a new sub-path

说明

bool ImagickDraw::pathMoveToRelative ( float $x , float $y )
Warning

本函数还未编写文档，仅有参数列表。

Starts a new sub-path at the given coordinate using relative coordinates. The current point then becomes the specified coordinate.

参数

x

target x coordinate

y

target y coordinate

返回值

没有返回值。

ImagickDraw::pathMoveToAbsolute
ImagickDraw::pathStart
ImagickDraw


Declares the start of a path drawing list

ImagickDraw::pathMoveToRelative
ImagickDraw::point
ImagickDraw
PHP Manual

ImagickDraw::pathStart

(PECL imagick 2.0.0)

ImagickDraw::pathStart — Declares the start of a path drawing list

说明

bool ImagickDraw::pathStart ( void )
Warning

本函数还未编写文档，仅有参数列表。

Declares the start of a path drawing list which is terminated by a matching DrawPathFinish() command. All other DrawPath commands must be enclosed between a and a DrawPathFinish() command. This is because path drawing commands are subordinate commands and they do not function by themselves.

返回值

没有返回值。

范例

Example #1 ImagickDraw::pathStart()

<?php
function pathStart($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);

    $draw->pathStart();
    $draw->pathMoveToAbsolute(50, 50);
    $draw->pathLineToAbsolute(100, 50);
    $draw->pathLineToRelative(0, 50);
    $draw->pathLineToHorizontalRelative(-50);
    $draw->pathFinish();

    $draw->pathStart();
    $draw->pathMoveToAbsolute(50, 50);
    $draw->pathMoveToRelative(300, 0);
    $draw->pathLineToRelative(50, 0);
    $draw->pathLineToVerticalRelative(50);
    $draw->pathLineToHorizontalAbsolute(350);
    $draw->pathclose();
    $draw->pathFinish();

    $draw->pathStart();
    $draw->pathMoveToAbsolute(50, 300);
    $draw->pathCurveToAbsolute(50, 300, 100, 200, 300, 300);
    $draw->pathLineToVerticalAbsolute(350);
    $draw->pathFinish();

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::pathMoveToRelative
ImagickDraw::point
ImagickDraw


Draws a point

ImagickDraw::pathStart
ImagickDraw::polygon
ImagickDraw
PHP Manual

ImagickDraw::point

(PECL imagick 2.0.0)

ImagickDraw::point — Draws a point

说明

bool ImagickDraw::point ( float $x , float $y )
Warning

本函数还未编写文档，仅有参数列表。

Draws a point using the current stroke color and stroke thickness at the specified coordinates.

参数

x

point's x coordinate

y

point's y coordinate

返回值

没有返回值。

范例

Example #1 ImagickDraw::point()

<?php
function point($fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setFillColor($fillColor);

    for ($x = 0; $x < 10000; $x++) {
        $draw->point(rand(0, 500), rand(0, 500));
    }

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::pathStart
ImagickDraw::polygon
ImagickDraw


Draws a polygon

ImagickDraw::point
ImagickDraw::polyline
ImagickDraw
PHP Manual

ImagickDraw::polygon

(PECL imagick 2.0.0)

ImagickDraw::polygon — Draws a polygon

说明

bool ImagickDraw::polygon ( array $coordinates )
Warning

本函数还未编写文档，仅有参数列表。

Draws a polygon using the current stroke, stroke width, and fill color or texture, using the specified array of coordinates.

参数

coordinates

multidimensional array like array( array( 'x' => 3, 'y' => 4 ), array( 'x' => 2, 'y' => 6 ) );

返回值

成功时返回 TRUE。

范例

Example #1 ImagickDraw::polygon()

<?php
function polygon($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setStrokeWidth(4);

    $draw->setFillColor($fillColor);

    $points = [
        ['x' => 40 * 5, 'y' => 10 * 5],
        ['x' => 20 * 5, 'y' => 20 * 5],
        ['x' => 70 * 5, 'y' => 50 * 5],
        ['x' => 60 * 5, 'y' => 15 * 5],
    ];

    $draw->polygon($points);

    $image = new \Imagick();
    $image->newImage(500, 300, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickDraw::point
ImagickDraw::polyline
ImagickDraw


Draws a polyline

ImagickDraw::polygon
ImagickDraw::pop
ImagickDraw
PHP Manual

ImagickDraw::polyline

(PECL imagick 2.0.0)

ImagickDraw::polyline — Draws a polyline

说明

bool ImagickDraw::polyline ( array $coordinates )
Warning

本函数还未编写文档，仅有参数列表。

Draws a polyline using the current stroke, stroke width, and fill color or texture, using the specified array of coordinates.

参数

coordinates

array of x and y coordinates: array( array( 'x' => 4, 'y' => 6 ), array( 'x' => 8, 'y' => 10 ) )

返回值

成功时返回 TRUE。

范例

Example #1 ImagickDraw::polyline()

<?php
function polyline($strokeColor, $fillColor, $backgroundColor) {
    $draw = new \ImagickDraw();

    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(5);

    $points = [
        ['x' => 40 * 5, 'y' => 10 * 5],
        ['x' => 20 * 5, 'y' => 20 * 5],
        ['x' => 70 * 5, 'y' => 50 * 5],
        ['x' => 60 * 5, 'y' => 15 * 5]
    ];

    $draw->polyline($points);

    $image = new \Imagick();
    $image->newImage(500, 300, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickDraw::polygon
ImagickDraw::pop
ImagickDraw


Destroys the current ImagickDraw in the stack, and returns to the previously pushed ImagickDraw

ImagickDraw::polyline
ImagickDraw::popClipPath
ImagickDraw
PHP Manual

ImagickDraw::pop

(PECL imagick 2.0.0)

ImagickDraw::pop — Destroys the current ImagickDraw in the stack, and returns to the previously pushed ImagickDraw

说明

bool ImagickDraw::pop ( void )
Warning

本函数还未编写文档，仅有参数列表。

Destroys the current ImagickDraw in the stack, and returns to the previously pushed ImagickDraw. Multiple ImagickDraws may exist. It is an error to attempt to pop more ImagickDraws than have been pushed, and it is proper form to pop all ImagickDraws which have been pushed.

返回值

Returns TRUE on success and false on failure.

ImagickDraw::polyline
ImagickDraw::popClipPath
ImagickDraw


Terminates a clip path definition

ImagickDraw::pop
ImagickDraw::popDefs
ImagickDraw
PHP Manual

ImagickDraw::popClipPath

(PECL imagick 2.0.0)

ImagickDraw::popClipPath — Terminates a clip path definition

说明

bool ImagickDraw::popClipPath ( void )
Warning

本函数还未编写文档，仅有参数列表。

Terminates a clip path definition.

返回值

没有返回值。

ImagickDraw::pop
ImagickDraw::popDefs
ImagickDraw


Terminates a definition list

ImagickDraw::popClipPath
ImagickDraw::popPattern
ImagickDraw
PHP Manual

ImagickDraw::popDefs

(PECL imagick 2.0.0)

ImagickDraw::popDefs — Terminates a definition list

说明

bool ImagickDraw::popDefs ( void )
Warning

本函数还未编写文档，仅有参数列表。

Terminates a definition list.

返回值

没有返回值。

范例

Example #1 ImagickDraw::popDefs()

<?php
function popDefs($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setstrokeOpacity(1);
    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);
    $draw->pushDefs();
    $draw->setStrokeColor('white');
    $draw->rectangle(50, 50, 200, 200);
    $draw->popDefs();

    $draw->rectangle(300, 50, 450, 200);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::popClipPath
ImagickDraw::popPattern
ImagickDraw


Terminates a pattern definition

ImagickDraw::popDefs
ImagickDraw::push
ImagickDraw
PHP Manual

ImagickDraw::popPattern

(PECL imagick 2.0.0)

ImagickDraw::popPattern — Terminates a pattern definition

说明

bool ImagickDraw::popPattern ( void )
Warning

本函数还未编写文档，仅有参数列表。

Terminates a pattern definition.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ImagickDraw::popDefs
ImagickDraw::push
ImagickDraw


Clones the current ImagickDraw and pushes it to the stack

ImagickDraw::popPattern
ImagickDraw::pushClipPath
ImagickDraw
PHP Manual

ImagickDraw::push

(PECL imagick 2.0.0)

ImagickDraw::push — Clones the current ImagickDraw and pushes it to the stack

说明

bool ImagickDraw::push ( void )
Warning

本函数还未编写文档，仅有参数列表。

Clones the current ImagickDraw to create a new ImagickDraw, which is then added to the ImagickDraw stack. The original drawing ImagickDraw(s) may be returned to by invoking pop(). The ImagickDraws are stored on a ImagickDraw stack. For every Pop there must have already been an equivalent Push.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ImagickDraw::push()

<?php
function push($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor) {

    $draw = new \ImagickDraw();
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillModifiedColor);
    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);
    $draw->push();
    $draw->translate(50, 50);
    $draw->rectangle(200, 200, 300, 300);
    $draw->pop();
    $draw->setFillColor($fillColor);
    $draw->rectangle(200, 200, 300, 300);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::popPattern
ImagickDraw::pushClipPath
ImagickDraw


Starts a clip path definition

ImagickDraw::push
ImagickDraw::pushDefs
ImagickDraw
PHP Manual

ImagickDraw::pushClipPath

(PECL imagick 2.0.0)

ImagickDraw::pushClipPath — Starts a clip path definition

说明

bool ImagickDraw::pushClipPath ( string $clip_mask_id )
Warning

本函数还未编写文档，仅有参数列表。

Starts a clip path definition which is comprised of any number of drawing commands and terminated by a ImagickDraw::popClipPath() command.

参数

clip_mask_id

Clip mask Id

返回值

没有返回值。

ImagickDraw::push
ImagickDraw::pushDefs
ImagickDraw


Indicates that following commands create named elements for early processing

ImagickDraw::pushClipPath
ImagickDraw::pushPattern
ImagickDraw
PHP Manual

ImagickDraw::pushDefs

(PECL imagick 2.0.0)

ImagickDraw::pushDefs — Indicates that following commands create named elements for early processing

说明

bool ImagickDraw::pushDefs ( void )
Warning

本函数还未编写文档，仅有参数列表。

Indicates that commands up to a terminating ImagickDraw::popDefs() command create named elements (e.g. clip-paths, textures, etc.) which may safely be processed earlier for the sake of efficiency.

返回值

没有返回值。

ImagickDraw::pushClipPath
ImagickDraw::pushPattern
ImagickDraw


Indicates that subsequent commands up to a ImagickDraw::opPattern() command comprise the definition of a named pattern

ImagickDraw::pushDefs
ImagickDraw::rectangle
ImagickDraw
PHP Manual

ImagickDraw::pushPattern

(PECL imagick 2.0.0)

ImagickDraw::pushPattern — Indicates that subsequent commands up to a ImagickDraw::opPattern() command comprise the definition of a named pattern

说明

bool ImagickDraw::pushPattern ( string $pattern_id , float $x , float $y , float $width , float $height )
Warning

本函数还未编写文档，仅有参数列表。

Indicates that subsequent commands up to a DrawPopPattern() command comprise the definition of a named pattern. The pattern space is assigned top left corner coordinates, a width and height, and becomes its own drawing space. Anything which can be drawn may be used in a pattern definition. Named patterns may be used as stroke or brush definitions.

参数

pattern_id

the pattern Id

x

x coordinate of the top-left corner

y

y coordinate of the top-left corner

width

width of the pattern

height

height of the pattern

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ImagickDraw::pushPattern()

<?php
function pushPattern($strokeColor, $fillColor, $backgroundColor) {
    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(1);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(1);

    $draw->pushPattern("MyFirstPattern", 0, 0, 50, 50);
    for ($x = 0; $x < 50; $x += 10) {
        for ($y = 0; $y < 50; $y += 5) {
            $positionX = $x + (($y / 5) % 5);
            $draw->rectangle($positionX, $y, $positionX + 5, $y + 5);
        }
    }
    $draw->popPattern();

    $draw->setFillOpacity(0);
    $draw->rectangle(100, 100, 400, 400);
    $draw->setFillOpacity(1);

    $draw->setFillOpacity(1);

    $draw->push();
    $draw->setFillPatternURL('#MyFirstPattern');
    $draw->setFillColor('yellow');
    $draw->rectangle(100, 100, 400, 400);
    $draw->pop();

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::pushDefs
ImagickDraw::rectangle
ImagickDraw


Draws a rectangle

ImagickDraw::pushPattern
ImagickDraw::render
ImagickDraw
PHP Manual

ImagickDraw::rectangle

(PECL imagick 2.0.0)

ImagickDraw::rectangle — Draws a rectangle

说明

bool ImagickDraw::rectangle ( float $x1 , float $y1 , float $x2 , float $y2 )
Warning

本函数还未编写文档，仅有参数列表。

Draws a rectangle given two coordinates and using the current stroke, stroke width, and fill settings.

参数

x1

x coordinate of the top left corner

y1

y coordinate of the top left corner

x2

x coordinate of the bottom right corner

y2

y coordinate of the bottom right corner

返回值

没有返回值。

范例

Example #1 ImagickDraw::rectangle()

<?php
function rectangle($strokeColor, $fillColor, $backgroundColor) {
    $draw = new \ImagickDraw();
    $strokeColor = new \ImagickPixel($strokeColor);
    $fillColor = new \ImagickPixel($fillColor);

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeWidth(2);

    $draw->rectangle(200, 200, 300, 300);
    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::pushPattern
ImagickDraw::render
ImagickDraw


Renders all preceding drawing commands onto the image

ImagickDraw::rectangle
ImagickDraw::resetVectorGraphics
ImagickDraw
PHP Manual

ImagickDraw::render

(PECL imagick 2.0.0)

ImagickDraw::render — Renders all preceding drawing commands onto the image

说明

bool ImagickDraw::render ( void )
Warning

本函数还未编写文档，仅有参数列表。

Renders all preceding drawing commands onto the image.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ImagickDraw::rectangle
ImagickDraw::resetVectorGraphics
ImagickDraw


Description

ImagickDraw::render
ImagickDraw::rotate
ImagickDraw
PHP Manual

ImagickDraw::resetVectorGraphics

(No version information available, might only be in Git)

ImagickDraw::resetVectorGraphics — Description

说明

public void ImagickDraw::resetVectorGraphics ( void )

Resets the vector graphics.

参数

此函数没有参数。

返回值

ImagickDraw::render
ImagickDraw::rotate
ImagickDraw


Applies the specified rotation to the current coordinate space

ImagickDraw::resetVectorGraphics
ImagickDraw::roundRectangle
ImagickDraw
PHP Manual

ImagickDraw::rotate

(PECL imagick 2.0.0)

ImagickDraw::rotate — Applies the specified rotation to the current coordinate space

说明

bool ImagickDraw::rotate ( float $degrees )
Warning

本函数还未编写文档，仅有参数列表。

Applies the specified rotation to the current coordinate space.

参数

degrees

degrees to rotate

返回值

没有返回值。

范例

Example #1 ImagickDraw::rotate()

<?php
function rotate($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor) {
    $draw = new \ImagickDraw();
    $draw->setStrokeColor($strokeColor);
    $draw->setStrokeOpacity(1);
    $draw->setFillColor($fillColor);
    $draw->rectangle(200, 200, 300, 300);
    $draw->setFillColor($fillModifiedColor);
    $draw->rotate(15);
    $draw->rectangle(200, 200, 300, 300);

    $image = new \Imagick();
    $image->newImage(500, 500, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickDraw::resetVectorGraphics
ImagickDraw::roundRectangle
ImagickDraw


Draws a rounded rectangle

ImagickDraw::rotate
ImagickDraw::scale
ImagickDraw
PHP Manual

ImagickDraw::roundRectangle

(PECL imagick 2.0.0)

ImagickDraw::roundRectangle — Draws a rounded rectangle

说明

bool ImagickDraw::roundRectangle ( float $x1 , float $y1 , float $x2 , float $y2 , float $rx , float $ry )
Warning

本函数还未编写文档，仅有参数列表。

Draws a rounded rectangle given two coordinates, x & y corner radiuses and using the current stroke, stroke width, and fill settings.

参数

x1

x coordinate of the top left corner

y1

y coordinate of the top left corner

x2

x coordinate of the bottom right

y2

y coordinate of the bottom right

rx

x rounding

ry

y rounding

返回值

没有返回值。

范例

Example #1 ImagickDraw::roundRectangle()

<?php
function roundRectangle($strokeColor, $fillColor, $backgroundColor, $startX, $startY, $endX, $endY, $roundX, $roundY) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeWidth(2);

    $draw->roundRectangle($startX, $startY, $endX, $endY, $roundX, $roundY);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::rotate
ImagickDraw::scale
ImagickDraw


Adjusts the scaling factor

ImagickDraw::roundRectangle
ImagickDraw::setClipPath
ImagickDraw
PHP Manual

ImagickDraw::scale

(PECL imagick 2.0.0)

ImagickDraw::scale — Adjusts the scaling factor

说明

bool ImagickDraw::scale ( float $x , float $y )
Warning

本函数还未编写文档，仅有参数列表。

Adjusts the scaling factor to apply in the horizontal and vertical directions to the current coordinate space.

参数

x

horizontal factor

y

vertical factor

返回值

没有返回值。

范例

Example #1 ImagickDraw::scale()

<?php
function scale($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor) {

    $draw = new \ImagickDraw();
    $draw->setStrokeColor($strokeColor);
    $draw->setStrokeWidth(4);
    $draw->setFillColor($fillColor);
    $draw->rectangle(200, 200, 300, 300);
    $draw->setFillColor($fillModifiedColor);
    $draw->scale(1.4, 1.4);
    $draw->rectangle(200, 200, 300, 300);

    $image = new \Imagick();
    $image->newImage(500, 500, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickDraw::roundRectangle
ImagickDraw::setClipPath
ImagickDraw


Associates a named clipping path with the image

ImagickDraw::scale
ImagickDraw::setClipRule
ImagickDraw
PHP Manual

ImagickDraw::setClipPath

(PECL imagick 2.0.0)

ImagickDraw::setClipPath — Associates a named clipping path with the image

说明

bool ImagickDraw::setClipPath ( string $clip_mask )
Warning

本函数还未编写文档，仅有参数列表。

Associates a named clipping path with the image. Only the areas drawn on by the clipping path will be modified as long as it remains in effect.

参数

clip_mask

the clipping path name

返回值

没有返回值。

范例

Example #1 ImagickDraw::setClipPath()

<?php
function setClipPath($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeWidth(2);

    $clipPathName = 'testClipPath';

    $draw->pushClipPath($clipPathName);
    $draw->rectangle(0, 0, 250, 250);
    $draw->popClipPath();
    $draw->setClipPath($clipPathName);
    $draw->rectangle(100, 100, 400, 400);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::scale
ImagickDraw::setClipRule
ImagickDraw


Set the polygon fill rule to be used by the clipping path

ImagickDraw::setClipPath
ImagickDraw::setClipUnits
ImagickDraw
PHP Manual

ImagickDraw::setClipRule

(PECL imagick 2.0.0)

ImagickDraw::setClipRule — Set the polygon fill rule to be used by the clipping path

说明

bool ImagickDraw::setClipRule ( int $fill_rule )
Warning

本函数还未编写文档，仅有参数列表。

Set the polygon fill rule to be used by the clipping path.

参数

fill_rule

FILLRULE_ constant

返回值

没有返回值。

范例

Example #1 ImagickDraw::setClipRule()

<?php
function setClipRule($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeWidth(2);
    //\Imagick::FILLRULE_EVENODD
    //\Imagick::FILLRULE_NONZERO

    $clipPathName = 'testClipPath';
    $draw->pushClipPath($clipPathName);
    $draw->setClipRule(\Imagick::FILLRULE_EVENODD);
    $draw->rectangle(0, 0, 300, 500);
    $draw->rectangle(200, 0, 500, 500);
    $draw->popClipPath();
    $draw->setClipPath($clipPathName);
    $draw->rectangle(200, 200, 300, 300);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::setClipPath
ImagickDraw::setClipUnits
ImagickDraw


Sets the interpretation of clip path units

ImagickDraw::setClipRule
ImagickDraw::setFillAlpha
ImagickDraw
PHP Manual

ImagickDraw::setClipUnits

(PECL imagick 2.0.0)

ImagickDraw::setClipUnits — Sets the interpretation of clip path units

说明

bool ImagickDraw::setClipUnits ( int $clip_units )
Warning

本函数还未编写文档，仅有参数列表。

Sets the interpretation of clip path units.

参数

clip_units

the number of clip units

返回值

没有返回值。

范例

Example #1 ImagickDraw::setClipUnits()

<?php
function setClipUnits($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeWidth(2);
    $clipPathName = 'testClipPath';
    $draw->setClipUnits(\Imagick::RESOLUTION_PIXELSPERINCH);
    $draw->pushClipPath($clipPathName);
    $draw->rectangle(0, 0, 250, 250);
    $draw->popClipPath();
    $draw->setClipPath($clipPathName);

    //RESOLUTION_PIXELSPERINCH
    //RESOLUTION_PIXELSPERCENTIMETER

    $draw->rectangle(200, 200, 300, 300);
    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::setClipRule
ImagickDraw::setFillAlpha
ImagickDraw


Sets the opacity to use when drawing using the fill color or fill texture

ImagickDraw::setClipUnits
ImagickDraw::setFillColor
ImagickDraw
PHP Manual

ImagickDraw::setFillAlpha

(PECL imagick 2.0.0)

ImagickDraw::setFillAlpha — Sets the opacity to use when drawing using the fill color or fill texture

说明

bool ImagickDraw::setFillAlpha ( float $opacity )
Warning

本函数还未编写文档，仅有参数列表。

Sets the opacity to use when drawing using the fill color or fill texture. Fully opaque is 1.0.

参数

opacity

fill alpha

返回值

没有返回值。

范例

Example #1 ImagickDraw::setFillAlpha()

<?php
function setFillAlpha($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeWidth(2);
    $draw->rectangle(100, 200, 200, 300);
    @$draw->setFillAlpha(0.4);
    $draw->rectangle(300, 200, 400, 300);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::setClipUnits
ImagickDraw::setFillColor
ImagickDraw


Sets the fill color to be used for drawing filled objects

ImagickDraw::setFillAlpha
ImagickDraw::setFillOpacity
ImagickDraw
PHP Manual

ImagickDraw::setFillColor

(PECL imagick 2.0.0)

ImagickDraw::setFillColor — Sets the fill color to be used for drawing filled objects

说明

bool ImagickDraw::setFillColor ( ImagickPixel $fill_pixel )
Warning

本函数还未编写文档，仅有参数列表。

Sets the fill color to be used for drawing filled objects.

参数

fill_pixel

ImagickPixel to use to set the color

返回值

没有返回值。

范例

Example #1 ImagickDraw::setFillColor()

<?php
function setFillColor($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeOpacity(1);
    $draw->setStrokeWidth(1.5);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->rectangle(50, 50, 150, 150);

    $draw->setFillColor("rgb(200, 32, 32)");
    $draw->rectangle(200, 50, 300, 150);

    $image = new \Imagick();
    $image->newImage(500, 500, $backgroundColor);
    $image->setImageFormat("png");

    $image->drawImage($draw);

    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickDraw::setFillAlpha
ImagickDraw::setFillOpacity
ImagickDraw


Sets the opacity to use when drawing using the fill color or fill texture

ImagickDraw::setFillColor
ImagickDraw::setFillPatternURL
ImagickDraw
PHP Manual

ImagickDraw::setFillOpacity

(PECL imagick 2.0.0)

ImagickDraw::setFillOpacity — Sets the opacity to use when drawing using the fill color or fill texture

说明

bool ImagickDraw::setFillOpacity ( float $fillOpacity )
Warning

本函数还未编写文档，仅有参数列表。

Sets the opacity to use when drawing using the fill color or fill texture. Fully opaque is 1.0.

参数

fillOpacity

the fill opacity

返回值

没有返回值。

范例

Example #1 ImagickDraw::setFillOpacity()

<?php
function setFillOpacity($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeOpacity(1);
    $draw->setStrokeWidth(2);

    $draw->rectangle(100, 200, 200, 300);

    $draw->setFillOpacity(0.4);
    $draw->rectangle(300, 200, 400, 300);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::setFillColor
ImagickDraw::setFillPatternURL
ImagickDraw


Sets the URL to use as a fill pattern for filling objects

ImagickDraw::setFillOpacity
ImagickDraw::setFillRule
ImagickDraw
PHP Manual

ImagickDraw::setFillPatternURL

(PECL imagick 2.0.0)

ImagickDraw::setFillPatternURL — Sets the URL to use as a fill pattern for filling objects

说明

bool ImagickDraw::setFillPatternURL ( string $fill_url )
Warning

本函数还未编写文档，仅有参数列表。

Sets the URL to use as a fill pattern for filling objects. Only local URLs ("#identifier") are supported at this time. These local URLs are normally created by defining a named fill pattern with DrawPushPattern/DrawPopPattern.

参数

fill_url

URL to use to obtain fill pattern.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ImagickDraw::setFillOpacity
ImagickDraw::setFillRule
ImagickDraw


Sets the fill rule to use while drawing polygons

ImagickDraw::setFillPatternURL
ImagickDraw::setFont
ImagickDraw
PHP Manual

ImagickDraw::setFillRule

(PECL imagick 2.0.0)

ImagickDraw::setFillRule — Sets the fill rule to use while drawing polygons

说明

bool ImagickDraw::setFillRule ( int $fill_rule )
Warning

本函数还未编写文档，仅有参数列表。

Sets the fill rule to use while drawing polygons.

参数

fill_rule

FILLRULE_ constant

返回值

没有返回值。

范例

Example #1 ImagickDraw::setFillRule()

<?php
function setFillRule($fillColor, $strokeColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeWidth(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $fillRules = [\Imagick::FILLRULE_NONZERO, \Imagick::FILLRULE_EVENODD];

    $points = 11;
    $size = 150;

    $draw->translate(175, 160);

    for ($x = 0; $x < 2; $x++) {
        $draw->setFillRule($fillRules[$x]);
        $draw->pathStart();
        for ($n = 0; $n < $points * 2; $n++) {

            if ($n >= $points) {
                $angle = fmod($n * 360 * 4 / $points, 360) * pi() / 180;
            }
            else {
                $angle = fmod($n * 360 * 3 / $points, 360) * pi() / 180;
            }

            $positionX = $size * sin($angle);
            $positionY = $size * cos($angle);

            if ($n == 0) {
                $draw->pathMoveToAbsolute($positionX, $positionY);
            }
            else {
                $draw->pathLineToAbsolute($positionX, $positionY);
            }
        }

        $draw->pathClose();
        $draw->pathFinish();

        $draw->translate(325, 0);
    }

    $image = new \Imagick();
    $image->newImage(700, 320, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickDraw::setFillPatternURL
ImagickDraw::setFont
ImagickDraw


Sets the fully-specified font to use when annotating with text

ImagickDraw::setFillRule
ImagickDraw::setFontFamily
ImagickDraw
PHP Manual

ImagickDraw::setFont

(PECL imagick 2.0.0)

ImagickDraw::setFont — Sets the fully-specified font to use when annotating with text

说明

bool ImagickDraw::setFont ( string $font_name )
Warning

本函数还未编写文档，仅有参数列表。

Sets the fully-specified font to use when annotating with text.

参数

font_name

返回值

成功时返回 TRUE。

范例

Example #1 ImagickDraw::setFont()

<?php
function setFont($fillColor, $strokeColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(2);
    $draw->setFontSize(36);

    $draw->setFont("../fonts/Arial.ttf");
    $draw->annotation(50, 50, "Lorem Ipsum!");

    $draw->setFont("../fonts/Consolas.ttf");
    $draw->annotation(50, 100, "Lorem Ipsum!");

    $draw->setFont("../fonts/CANDY.TTF");
    $draw->annotation(50, 150, "Lorem Ipsum!");

    $draw->setFont("../fonts/Inconsolata-dz.otf");
    $draw->annotation(50, 200, "Lorem Ipsum!");

    $imagick = new \Imagick();
    $imagick->newImage(500, 300, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::setFillRule
ImagickDraw::setFontFamily
ImagickDraw


Sets the font family to use when annotating with text

ImagickDraw::setFont
ImagickDraw::setFontSize
ImagickDraw
PHP Manual

ImagickDraw::setFontFamily

(PECL imagick 2.0.0)

ImagickDraw::setFontFamily — Sets the font family to use when annotating with text

说明

bool ImagickDraw::setFontFamily ( string $font_family )
Warning

本函数还未编写文档，仅有参数列表。

Sets the font family to use when annotating with text.

参数

font_family

the font family

返回值

成功时返回 TRUE。

范例

Example #1 ImagickDraw::setFontFamily()

<?php
function setFontFamily($fillColor, $strokeColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $strokeColor = new \ImagickPixel($strokeColor);
    $fillColor = new \ImagickPixel($fillColor);

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(2);

    $draw->setFontSize(48);

    $draw->setFontFamily("Times");
    $draw->annotation(50, 50, "Lorem Ipsum!");

    $draw->setFontFamily("AvantGarde");
    $draw->annotation(50, 100, "Lorem Ipsum!");

    $draw->setFontFamily("NewCenturySchlbk");
    $draw->annotation(50, 150, "Lorem Ipsum!");

    $draw->setFontFamily("Palatino");
    $draw->annotation(50, 200, "Lorem Ipsum!");

    $imagick = new \Imagick();
    $imagick->newImage(450, 250, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::setFont
ImagickDraw::setFontSize
ImagickDraw


Sets the font pointsize to use when annotating with text

ImagickDraw::setFontFamily
ImagickDraw::setFontStretch
ImagickDraw
PHP Manual

ImagickDraw::setFontSize

(PECL imagick 2.0.0)

ImagickDraw::setFontSize — Sets the font pointsize to use when annotating with text

说明

bool ImagickDraw::setFontSize ( float $pointsize )
Warning

本函数还未编写文档，仅有参数列表。

Sets the font pointsize to use when annotating with text.

参数

pointsize

the point size

返回值

没有返回值。

范例

Example #1 ImagickDraw::setFontSize()

<?php
function setFontSize($fillColor, $strokeColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeOpacity(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(2);
    $draw->setFont("../fonts/Arial.ttf");

    $sizes = [24, 36, 48, 60, 72];

    foreach ($sizes as $size) {
        $draw->setFontSize($size);
        $draw->annotation(50, ($size * $size / 16), "Lorem Ipsum!");
    }

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::setFontFamily
ImagickDraw::setFontStretch
ImagickDraw


Sets the font stretch to use when annotating with text

ImagickDraw::setFontSize
ImagickDraw::setFontStyle
ImagickDraw
PHP Manual

ImagickDraw::setFontStretch

(PECL imagick 2.0.0)

ImagickDraw::setFontStretch — Sets the font stretch to use when annotating with text

说明

bool ImagickDraw::setFontStretch ( int $fontStretch )
Warning

本函数还未编写文档，仅有参数列表。

Sets the font stretch to use when annotating with text. The AnyStretch enumeration acts as a wild-card "don't care" option.

参数

fontStretch

STRETCH_ constant

返回值

没有返回值。

范例

Example #1 ImagickDraw::setFontStretch()

<?php
function setFontStretch($fillColor, $strokeColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(2);
    $draw->setFontSize(36);

    $fontStretchTypes = [
        \Imagick::STRETCH_ULTRACONDENSED,
        \Imagick::STRETCH_CONDENSED,
        \Imagick::STRETCH_SEMICONDENSED,
        \Imagick::STRETCH_SEMIEXPANDED,
        \Imagick::STRETCH_EXPANDED,
        \Imagick::STRETCH_EXTRAEXPANDED,
        \Imagick::STRETCH_ULTRAEXPANDED,
        \Imagick::STRETCH_ANY
    ];

    $offset = 0;
    foreach ($fontStretchTypes as $fontStretch) {
        $draw->setFontStretch($fontStretch);
        $draw->annotation(50, 75 + $offset, "Lorem Ipsum!");
        $offset += 50;
    }

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::setFontSize
ImagickDraw::setFontStyle
ImagickDraw


Sets the font style to use when annotating with text

ImagickDraw::setFontStretch
ImagickDraw::setFontWeight
ImagickDraw
PHP Manual

ImagickDraw::setFontStyle

(PECL imagick 2.0.0)

ImagickDraw::setFontStyle — Sets the font style to use when annotating with text

说明

bool ImagickDraw::setFontStyle ( int $style )
Warning

本函数还未编写文档，仅有参数列表。

Sets the font style to use when annotating with text. The AnyStyle enumeration acts as a wild-card "don't care" option.

参数

style

STYLETYPE_ constant

返回值

没有返回值。

范例

Example #1 ImagickDraw::setFontStyle()

<?php
function setFontStyle($fillColor, $strokeColor, $backgroundColor) {
    $draw = new \ImagickDraw();
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(1);
    $draw->setFontSize(36);
    $draw->setFontStyle(\Imagick::STYLE_NORMAL);
    $draw->annotation(50, 50, "Lorem Ipsum!");

    $draw->setFontStyle(\Imagick::STYLE_ITALIC);
    $draw->annotation(50, 100, "Lorem Ipsum!");

    $draw->setFontStyle(\Imagick::STYLE_OBLIQUE);
    $draw->annotation(50, 150, "Lorem Ipsum!");

    $imagick = new \Imagick();
    $imagick->newImage(350, 300, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::setFontStretch
ImagickDraw::setFontWeight
ImagickDraw


Sets the font weight

ImagickDraw::setFontStyle
ImagickDraw::setGravity
ImagickDraw
PHP Manual

ImagickDraw::setFontWeight

(PECL imagick 2.0.0)

ImagickDraw::setFontWeight — Sets the font weight

说明

bool ImagickDraw::setFontWeight ( int $font_weight )
Warning

本函数还未编写文档，仅有参数列表。

Sets the font weight to use when annotating with text.

参数

font_weight

返回值

范例

Example #1 ImagickDraw::setFontWeight()

<?php
function setFontWeight($fillColor, $strokeColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(1);

    $draw->setFontSize(36);

    $draw->setFontWeight(100);
    $draw->annotation(50, 50, "Lorem Ipsum!");

    $draw->setFontWeight(200);
    $draw->annotation(50, 100, "Lorem Ipsum!");

    $draw->setFontWeight(400);
    $draw->annotation(50, 150, "Lorem Ipsum!");

    $draw->setFontWeight(800);
    $draw->annotation(50, 200, "Lorem Ipsum!");

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::setFontStyle
ImagickDraw::setGravity
ImagickDraw


Sets the text placement gravity

ImagickDraw::setFontWeight
ImagickDraw::setResolution
ImagickDraw
PHP Manual

ImagickDraw::setGravity

(PECL imagick 2.0.0)

ImagickDraw::setGravity — Sets the text placement gravity

说明

bool ImagickDraw::setGravity ( int $gravity )
Warning

本函数还未编写文档，仅有参数列表。

Sets the text placement gravity to use when annotating with text.

参数

gravity

GRAVITY_ constant

返回值

没有返回值。

范例

Example #1 ImagickDraw::setGravity()

<?php
function setGravity($fillColor, $strokeColor, $backgroundColor) {

    $draw = new \ImagickDraw();
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(1);
    $draw->setFontSize(24);

    $gravitySettings = array(
        \Imagick::GRAVITY_NORTHWEST => 'NorthWest',
        \Imagick::GRAVITY_NORTH => 'North',
        \Imagick::GRAVITY_NORTHEAST => 'NorthEast',
        \Imagick::GRAVITY_WEST => 'West',
        \Imagick::GRAVITY_CENTER => 'Centre',
        \Imagick::GRAVITY_SOUTHWEST => 'SouthWest',
        \Imagick::GRAVITY_SOUTH => 'South',
        \Imagick::GRAVITY_SOUTHEAST => 'SouthEast',
        \Imagick::GRAVITY_EAST => 'East'
    );

    $draw->setFont("../fonts/Arial.ttf");

    foreach ($gravitySettings as $type => $description) {
        $draw->setGravity($type);
        $draw->annotation(50, 50, '"' . $description . '"');
    }

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::setFontWeight
ImagickDraw::setResolution
ImagickDraw


Description

ImagickDraw::setGravity
ImagickDraw::setStrokeAlpha
ImagickDraw
PHP Manual

ImagickDraw::setResolution

(No version information available, might only be in Git)

ImagickDraw::setResolution — Description

说明

public void ImagickDraw::setResolution ( string $x_resolution , string $y_resolution )

Sets the resolution.

参数

x_resolution

y_resolution

返回值

ImagickDraw::setGravity
ImagickDraw::setStrokeAlpha
ImagickDraw


Specifies the opacity of stroked object outlines

ImagickDraw::setResolution
ImagickDraw::setStrokeAntialias
ImagickDraw
PHP Manual

ImagickDraw::setStrokeAlpha

(PECL imagick 2.0.0)

ImagickDraw::setStrokeAlpha — Specifies the opacity of stroked object outlines

说明

bool ImagickDraw::setStrokeAlpha ( float $opacity )
Warning

本函数还未编写文档，仅有参数列表。

Specifies the opacity of stroked object outlines.

参数

opacity

opacity

返回值

没有返回值。

范例

Example #1 ImagickDraw::setStrokeAlpha()

<?php
function setStrokeAlpha($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(4);
    $draw->line(100, 100, 400, 145);
    $draw->rectangle(100, 200, 225, 350);
    $draw->setStrokeOpacity(0.1);
    $draw->line(100, 120, 400, 165);
    $draw->rectangle(275, 200, 400, 350);

    $image = new \Imagick();
    $image->newImage(500, 400, $backgroundColor);
    $image->setImageFormat("png");

    $image->drawImage($draw);

    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickDraw::setResolution
ImagickDraw::setStrokeAntialias
ImagickDraw


Controls whether stroked outlines are antialiased

ImagickDraw::setStrokeAlpha
ImagickDraw::setStrokeColor
ImagickDraw
PHP Manual

ImagickDraw::setStrokeAntialias

(PECL imagick 2.0.0)

ImagickDraw::setStrokeAntialias — Controls whether stroked outlines are antialiased

说明

bool ImagickDraw::setStrokeAntialias ( bool $stroke_antialias )
Warning

本函数还未编写文档，仅有参数列表。

Controls whether stroked outlines are antialiased. Stroked outlines are antialiased by default. When antialiasing is disabled stroked pixels are thresholded to determine if the stroke color or underlying canvas color should be used.

参数

stroke_antialias

the antialias setting

返回值

没有返回值。

范例

Example #1 ImagickDraw::setStrokeAntialias()

<?php
function setStrokeAntialias($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(1);
    $draw->setStrokeAntialias(false);
    $draw->line(100, 100, 400, 105);

    $draw->line(100, 140, 400, 185);

    $draw->setStrokeAntialias(true);
    $draw->line(100, 110, 400, 115);
    $draw->line(100, 150, 400, 195);

    $image = new \Imagick();
    $image->newImage(500, 250, $backgroundColor);
    $image->setImageFormat("png");

    $image->drawImage($draw);

    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickDraw::setStrokeAlpha
ImagickDraw::setStrokeColor
ImagickDraw


Sets the color used for stroking object outlines

ImagickDraw::setStrokeAntialias
ImagickDraw::setStrokeDashArray
ImagickDraw
PHP Manual

ImagickDraw::setStrokeColor

(PECL imagick 2.0.0)

ImagickDraw::setStrokeColor — Sets the color used for stroking object outlines

说明

bool ImagickDraw::setStrokeColor ( ImagickPixel $stroke_pixel )
Warning

本函数还未编写文档，仅有参数列表。

Sets the color used for stroking object outlines.

参数

stroke_pixel

the stroke color

返回值

没有返回值。

范例

Example #1 ImagickDraw::setStrokeColor()

<?php
function setStrokeColor($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(5);

    $draw->line(100, 100, 400, 145);
    $draw->rectangle(100, 200, 225, 350);

    $draw->setStrokeOpacity(0.1);
    $draw->line(100, 120, 400, 165);
    $draw->rectangle(275, 200, 400, 350);

    $image = new \Imagick();
    $image->newImage(500, 400, $backgroundColor);
    $image->setImageFormat("png");

    $image->drawImage($draw);

    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickDraw::setStrokeAntialias
ImagickDraw::setStrokeDashArray
ImagickDraw


Specifies the pattern of dashes and gaps used to stroke paths

ImagickDraw::setStrokeColor
ImagickDraw::setStrokeDashOffset
ImagickDraw
PHP Manual

ImagickDraw::setStrokeDashArray

(PECL imagick 2.0.0)

ImagickDraw::setStrokeDashArray — Specifies the pattern of dashes and gaps used to stroke paths

说明

bool ImagickDraw::setStrokeDashArray ( array $dashArray )
Warning

本函数还未编写文档，仅有参数列表。

Specifies the pattern of dashes and gaps used to stroke paths. The strokeDashArray represents an array of numbers that specify the lengths of alternating dashes and gaps in pixels. If an odd number of values is provided, then the list of values is repeated to yield an even number of values. To remove an existing dash array, pass a zero number_elements argument and null dash_array. A typical strokeDashArray_ array might contain the members 5 3 2.

参数

dashArray

array of floats

返回值

成功时返回 TRUE。

范例

Example #1 ImagickDraw::setStrokeDashArray()

<?php
function setStrokeDashArray($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(4);

    $draw->setStrokeDashArray([10, 10]);
    $draw->rectangle(100, 50, 225, 175);

    $draw->setStrokeDashArray([20, 5, 20, 5, 5, 5,]);
    $draw->rectangle(275, 50, 400, 175);

    $draw->setStrokeDashArray([20, 5, 20, 5, 5]);
    $draw->rectangle(100, 200, 225, 350);

    $draw->setStrokeDashArray([1, 1, 1, 1, 2, 2, 3, 3, 5, 5, 8, 8, 13, 13, 21, 21, 34, 34, 55, 55, 89, 89, 144, 144, 233, 233, 377, 377, 610, 610, 987, 987, 1597, 1597, 2584, 2584, 4181, 4181,]);

    $draw->rectangle(275, 200, 400, 350);

    $image = new \Imagick();
    $image->newImage(500, 400, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickDraw::setStrokeColor
ImagickDraw::setStrokeDashOffset
ImagickDraw


Specifies the offset into the dash pattern to start the dash

ImagickDraw::setStrokeDashArray
ImagickDraw::setStrokeLineCap
ImagickDraw
PHP Manual

ImagickDraw::setStrokeDashOffset

(PECL imagick 2.0.0)

ImagickDraw::setStrokeDashOffset — Specifies the offset into the dash pattern to start the dash

说明

bool ImagickDraw::setStrokeDashOffset ( float $dash_offset )
Warning

本函数还未编写文档，仅有参数列表。

Specifies the offset into the dash pattern to start the dash.

参数

dash_offset

dash offset

返回值

没有返回值。

范例

Example #1 ImagickDraw::setStrokeDashOffset()

<?php
function setStrokeDashOffset($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(4);
    $draw->setStrokeDashArray([20, 20]);
    $draw->setStrokeDashOffset(0);
    $draw->rectangle(100, 50, 225, 175);

    //Start the dash effect halfway through the solid portion
    $draw->setStrokeDashOffset(10);
    $draw->rectangle(275, 50, 400, 175);

    //Start the dash effect on the space portion
    $draw->setStrokeDashOffset(20);
    $draw->rectangle(100, 200, 225, 350);
    $draw->setStrokeDashOffset(5);
    $draw->rectangle(275, 200, 400, 350);

    $image = new \Imagick();
    $image->newImage(500, 400, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickDraw::setStrokeDashArray
ImagickDraw::setStrokeLineCap
ImagickDraw


Specifies the shape to be used at the end of open subpaths when they are stroked

ImagickDraw::setStrokeDashOffset
ImagickDraw::setStrokeLineJoin
ImagickDraw
PHP Manual

ImagickDraw::setStrokeLineCap

(PECL imagick 2.0.0)

ImagickDraw::setStrokeLineCap — Specifies the shape to be used at the end of open subpaths when they are stroked

说明

bool ImagickDraw::setStrokeLineCap ( int $linecap )
Warning

本函数还未编写文档，仅有参数列表。

Specifies the shape to be used at the end of open subpaths when they are stroked.

参数

linecap

LINECAP_ constant

返回值

没有返回值。

范例

Example #1 ImagickDraw::setStrokeLineCap()

<?php
function setStrokeLineCap($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(25);

    $lineTypes = [\Imagick::LINECAP_BUTT, \Imagick::LINECAP_ROUND, \Imagick::LINECAP_SQUARE,];

    $offset = 0;

    foreach ($lineTypes as $lineType) {
        $draw->setStrokeLineCap($lineType);
        $draw->line(50 + $offset, 50, 50 + $offset, 250);
        $offset += 50;
    }

    $imagick = new \Imagick();
    $imagick->newImage(300, 300, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::setStrokeDashOffset
ImagickDraw::setStrokeLineJoin
ImagickDraw


Specifies the shape to be used at the corners of paths when they are stroked

ImagickDraw::setStrokeLineCap
ImagickDraw::setStrokeMiterLimit
ImagickDraw
PHP Manual

ImagickDraw::setStrokeLineJoin

(PECL imagick 2.0.0)

ImagickDraw::setStrokeLineJoin — Specifies the shape to be used at the corners of paths when they are stroked

说明

bool ImagickDraw::setStrokeLineJoin ( int $linejoin )
Warning

本函数还未编写文档，仅有参数列表。

Specifies the shape to be used at the corners of paths (or other vector shapes) when they are stroked.

参数

linejoin

LINEJOIN_ constant

返回值

没有返回值。

范例

Example #1 ImagickDraw::setStrokeLineJoin()

<?php
function setStrokeLineJoin($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();
    $draw->setStrokeWidth(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);

    $draw->setStrokeWidth(20);

    $offset = 220;

    $lineJoinStyle = [
        \Imagick::LINEJOIN_MITER,
        \Imagick::LINEJOIN_ROUND,
        \Imagick::LINEJOIN_BEVEL,
        ];

    for ($x = 0; $x < count($lineJoinStyle); $x++) {
        $draw->setStrokeLineJoin($lineJoinStyle[$x]);
        $points = [
            ['x' => 40 * 5, 'y' => 10 * 5 + $x * $offset],
            ['x' => 20 * 5, 'y' => 20 * 5 + $x * $offset],
            ['x' => 70 * 5, 'y' => 50 * 5 + $x * $offset],
            ['x' => 40 * 5, 'y' => 10 * 5 + $x * $offset],
        ];

        $draw->polyline($points);
    }

    $image = new \Imagick();
    $image->newImage(500, 700, $backgroundColor);
    $image->setImageFormat("png");

    $image->drawImage($draw);

    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickDraw::setStrokeLineCap
ImagickDraw::setStrokeMiterLimit
ImagickDraw


Specifies the miter limit

ImagickDraw::setStrokeLineJoin
ImagickDraw::setStrokeOpacity
ImagickDraw
PHP Manual

ImagickDraw::setStrokeMiterLimit

(PECL imagick 2.0.0)

ImagickDraw::setStrokeMiterLimit — Specifies the miter limit

说明

bool ImagickDraw::setStrokeMiterLimit ( int $miterlimit )
Warning

本函数还未编写文档，仅有参数列表。

Specifies the miter limit. When two line segments meet at a sharp angle and miter joins have been specified for 'lineJoin', it is possible for the miter to extend far beyond the thickness of the line stroking the path. The miterLimit' imposes a limit on the ratio of the miter length to the 'lineWidth'.

参数

miterlimit

the miter limit

返回值

没有返回值。

范例

Example #1 ImagickDraw::setStrokeMiterLimit()

<?php
function setStrokeMiterLimit($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setStrokeOpacity(0.6);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(10);

    $yOffset = 100;

    $draw->setStrokeLineJoin(\Imagick::LINEJOIN_MITER);

    for ($y = 0; $y < 3; $y++) {

        $draw->setStrokeMiterLimit(40 * $y);

        $points = [
            ['x' => 22 * 3, 'y' => 15 * 4 + $y * $yOffset],
            ['x' => 20 * 3, 'y' => 20 * 4 + $y * $yOffset],
            ['x' => 70 * 5, 'y' => 45 * 4 + $y * $yOffset],
        ];

        $draw->polygon($points);
    }

    $image = new \Imagick();
    $image->newImage(500, 500, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    $image->setImageType(\Imagick::IMGTYPE_PALETTE);
    $image->setImageCompressionQuality(100);
    $image->stripImage();

    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickDraw::setStrokeLineJoin
ImagickDraw::setStrokeOpacity
ImagickDraw


Specifies the opacity of stroked object outlines

ImagickDraw::setStrokeMiterLimit
ImagickDraw::setStrokePatternURL
ImagickDraw
PHP Manual

ImagickDraw::setStrokeOpacity

(PECL imagick 2.0.0)

ImagickDraw::setStrokeOpacity — Specifies the opacity of stroked object outlines

说明

bool ImagickDraw::setStrokeOpacity ( float $stroke_opacity )
Warning

本函数还未编写文档，仅有参数列表。

Specifies the opacity of stroked object outlines.

参数

stroke_opacity

stroke opacity. 1.0 is fully opaque

返回值

没有返回值。

范例

Example #1 ImagickDraw::setStrokeOpacity()

<?php
function setStrokeOpacity($strokeColor, $fillColor, $backgroundColor) {
    $draw = new \ImagickDraw();

    $draw->setStrokeWidth(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(10);
    $draw->setStrokeOpacity(1);
    $draw->line(100, 80, 400, 125);
    $draw->rectangle(25, 200, 150, 350);
    $draw->setStrokeOpacity(0.5);
    $draw->line(100, 100, 400, 145);
    $draw->rectangle(200, 200, 325, 350);
    $draw->setStrokeOpacity(0.2);
    $draw->line(100, 120, 400, 165);
    $draw->rectangle(375, 200, 500, 350);

    $image = new \Imagick();
    $image->newImage(550, 400, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickDraw::setStrokeMiterLimit
ImagickDraw::setStrokePatternURL
ImagickDraw


Sets the pattern used for stroking object outlines

ImagickDraw::setStrokeOpacity
ImagickDraw::setStrokeWidth
ImagickDraw
PHP Manual

ImagickDraw::setStrokePatternURL

(PECL imagick 2.0.0)

ImagickDraw::setStrokePatternURL — Sets the pattern used for stroking object outlines

说明

bool ImagickDraw::setStrokePatternURL ( string $stroke_url )
Warning

本函数还未编写文档，仅有参数列表。

Sets the pattern used for stroking object outlines.

参数

stroke_url

stroke URL

返回值

imagick.imagickdraw.return.success;

ImagickDraw::setStrokeOpacity
ImagickDraw::setStrokeWidth
ImagickDraw


Sets the width of the stroke used to draw object outlines

ImagickDraw::setStrokePatternURL
ImagickDraw::setTextAlignment
ImagickDraw
PHP Manual

ImagickDraw::setStrokeWidth

(PECL imagick 2.0.0)

ImagickDraw::setStrokeWidth — Sets the width of the stroke used to draw object outlines

说明

bool ImagickDraw::setStrokeWidth ( float $stroke_width )
Warning

本函数还未编写文档，仅有参数列表。

Sets the width of the stroke used to draw object outlines.

参数

stroke_width

stroke width

返回值

没有返回值。

范例

Example #1 ImagickDraw::setStrokeWidth()

<?php
function setStrokeWidth($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeWidth(1);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->line(100, 100, 400, 145);
    $draw->rectangle(100, 200, 225, 350);
    $draw->setStrokeWidth(5);
    $draw->line(100, 120, 400, 165);
    $draw->rectangle(275, 200, 400, 350);

    $image = new \Imagick();
    $image->newImage(500, 400, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickDraw::setStrokePatternURL
ImagickDraw::setTextAlignment
ImagickDraw


Specifies a text alignment

ImagickDraw::setStrokeWidth
ImagickDraw::setTextAntialias
ImagickDraw
PHP Manual

ImagickDraw::setTextAlignment

(PECL imagick 2.0.0)

ImagickDraw::setTextAlignment — Specifies a text alignment

说明

bool ImagickDraw::setTextAlignment ( int $alignment )
Warning

本函数还未编写文档，仅有参数列表。

Specifies a text alignment to be applied when annotating with text.

参数

alignment

ALIGN_ constant

返回值

没有返回值。

范例

Example #1 ImagickDraw::setTextAlignment()

<?php
function setTextAlignment($strokeColor, $fillColor, $backgroundColor) {
    $draw = new \ImagickDraw();
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(1);
    $draw->setFontSize(36);

    $draw->setTextAlignment(\Imagick::ALIGN_LEFT);
    $draw->annotation(250, 75, "Lorem Ipsum!");
    $draw->setTextAlignment(\Imagick::ALIGN_CENTER);
    $draw->annotation(250, 150, "Lorem Ipsum!");
    $draw->setTextAlignment(\Imagick::ALIGN_RIGHT);
    $draw->annotation(250, 225, "Lorem Ipsum!");
    $draw->line(250, 0, 250, 500);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::setStrokeWidth
ImagickDraw::setTextAntialias
ImagickDraw


Controls whether text is antialiased

ImagickDraw::setTextAlignment
ImagickDraw::setTextDecoration
ImagickDraw
PHP Manual

ImagickDraw::setTextAntialias

(PECL imagick 2.0.0)

ImagickDraw::setTextAntialias — Controls whether text is antialiased

说明

bool ImagickDraw::setTextAntialias ( bool $antiAlias )
Warning

本函数还未编写文档，仅有参数列表。

Controls whether text is antialiased. Text is antialiased by default.

参数

antiAlias

返回值

没有返回值。

范例

Example #1 ImagickDraw::setTextAntialias()

<?php
function setTextAntialias($fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();
    $draw->setStrokeColor('none');
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(1);
    $draw->setFontSize(32);
    $draw->setTextAntialias(false);
    $draw->annotation(5, 30, "Lorem Ipsum!");
    $draw->setTextAntialias(true);
    $draw->annotation(5, 65, "Lorem Ipsum!");

    $imagick = new \Imagick();
    $imagick->newImage(220, 80, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    //Scale the image so that people can see the aliasing.
    $imagick->scaleImage(220 * 6, 80 * 6);
    $imagick->cropImage(640, 480, 0, 0);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::setTextAlignment
ImagickDraw::setTextDecoration
ImagickDraw


Specifies a decoration

ImagickDraw::setTextAntialias
ImagickDraw::setTextEncoding
ImagickDraw
PHP Manual

ImagickDraw::setTextDecoration

(PECL imagick 2.0.0)

ImagickDraw::setTextDecoration — Specifies a decoration

说明

bool ImagickDraw::setTextDecoration ( int $decoration )
Warning

本函数还未编写文档，仅有参数列表。

Specifies a decoration to be applied when annotating with text.

参数

decoration

DECORATION_ constant

返回值

没有返回值。

范例

Example #1 ImagickDraw::setTextDecoration()

<?php
function setTextDecoration($strokeColor, $fillColor, $backgroundColor, $textDecoration) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);
    $draw->setTextDecoration($textDecoration);
    $draw->annotation(50, 75, "Lorem Ipsum!");

    $imagick = new \Imagick();
    $imagick->newImage(500, 200, $backgroundColor);
    $imagick->setImageFormat("png");
    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::setTextAntialias
ImagickDraw::setTextEncoding
ImagickDraw


Specifies the text code set

ImagickDraw::setTextDecoration
ImagickDraw::setTextInterlineSpacing
ImagickDraw
PHP Manual

ImagickDraw::setTextEncoding

(PECL imagick 2.0.0)

ImagickDraw::setTextEncoding — Specifies the text code set

说明

bool ImagickDraw::setTextEncoding ( string $encoding )
Warning

本函数还未编写文档，仅有参数列表。

Specifies the code set to use for text annotations. The only character encoding which may be specified at this time is "UTF-8" for representing Unicode as a sequence of bytes. Specify an empty string to set text encoding to the system's default. Successful text annotation using Unicode may require fonts designed to support Unicode.

参数

encoding

the encoding name

返回值

没有返回值。

ImagickDraw::setTextDecoration
ImagickDraw::setTextInterlineSpacing
ImagickDraw


Description

ImagickDraw::setTextEncoding
ImagickDraw::setTextInterwordSpacing
ImagickDraw
PHP Manual

ImagickDraw::setTextInterlineSpacing

(No version information available, might only be in Git)

ImagickDraw::setTextInterlineSpacing — Description

说明

public void ImagickDraw::setTextInterlineSpacing ( float $spacing )

Sets the text interline spacing.

Warning

本函数还未编写文档，仅有参数列表。

参数

spacing

返回值

ImagickDraw::setTextEncoding
ImagickDraw::setTextInterwordSpacing
ImagickDraw


Description

ImagickDraw::setTextInterlineSpacing
ImagickDraw::setTextKerning
ImagickDraw
PHP Manual

ImagickDraw::setTextInterwordSpacing

(No version information available, might only be in Git)

ImagickDraw::setTextInterwordSpacing — Description

说明

public void ImagickDraw::setTextInterwordSpacing ( float $spacing )

Sets the text interword spacing.

参数

spacing

返回值

ImagickDraw::setTextInterlineSpacing
ImagickDraw::setTextKerning
ImagickDraw


Description

ImagickDraw::setTextInterwordSpacing
ImagickDraw::setTextUnderColor
ImagickDraw
PHP Manual

ImagickDraw::setTextKerning

(No version information available, might only be in Git)

ImagickDraw::setTextKerning — Description

说明

public void ImagickDraw::setTextKerning ( float $kerning )

Sets the text kerning

Warning

本函数还未编写文档，仅有参数列表。

参数

kerning

返回值

ImagickDraw::setTextInterwordSpacing
ImagickDraw::setTextUnderColor
ImagickDraw


Specifies the color of a background rectangle

ImagickDraw::setTextKerning
ImagickDraw::setVectorGraphics
ImagickDraw
PHP Manual

ImagickDraw::setTextUnderColor

(PECL imagick 2.0.0)

ImagickDraw::setTextUnderColor — Specifies the color of a background rectangle

说明

bool ImagickDraw::setTextUnderColor ( ImagickPixel $under_color )
Warning

本函数还未编写文档，仅有参数列表。

Specifies the color of a background rectangle to place under text annotations.

参数

under_color

the under color

返回值

没有返回值。

范例

Example #1 ImagickDraw::setTextUnderColor()

<?php
function setTextUnderColor($strokeColor, $fillColor, $backgroundColor, $textUnderColor) {
    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);
    $draw->annotation(50, 75, "Lorem Ipsum!");
    $draw->setTextUnderColor($textUnderColor);
    $draw->annotation(50, 175, "Lorem Ipsum!");

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::setTextKerning
ImagickDraw::setVectorGraphics
ImagickDraw


Sets the vector graphics

ImagickDraw::setTextUnderColor
ImagickDraw::setViewbox
ImagickDraw
PHP Manual

ImagickDraw::setVectorGraphics

(PECL imagick 2.0.0)

ImagickDraw::setVectorGraphics — Sets the vector graphics

说明

bool ImagickDraw::setVectorGraphics ( string $xml )
Warning

本函数还未编写文档，仅有参数列表。

Sets the vector graphics associated with the specified ImagickDraw object. Use this method with ImagickDraw::getVectorGraphics() as a method to persist the vector graphics state.

参数

xml

xml containing the vector graphics

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ImagickDraw::setVectorGraphics()

<?php
function setVectorGraphics() {
    //Setup a draw object with some drawing in it.
    $draw = new \ImagickDraw();
    $draw->setFillColor("red");
    $draw->circle(20, 20, 50, 50);
    $draw->setFillColor("blue");
    $draw->circle(50, 70, 50, 50);
    $draw->rectangle(50, 120, 80, 150);

    //Get the drawing as a string
    $SVG = $draw->getVectorGraphics();

    //$svg is a string, and could be saved anywhere a string can be saved

    //Use the saved drawing to generate a new draw object
    $draw2 = new \ImagickDraw();
    //Apparently the SVG text is missing the root element.
    $draw2->setVectorGraphics("<root>".$SVG."</root>");

    $imagick = new \Imagick();
    $imagick->newImage(200, 200, 'white');
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw2);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::setTextUnderColor
ImagickDraw::setViewbox
ImagickDraw


Sets the overall canvas size

ImagickDraw::setVectorGraphics
ImagickDraw::skewX
ImagickDraw
PHP Manual

ImagickDraw::setViewbox

(PECL imagick 2.0.0)

ImagickDraw::setViewbox — Sets the overall canvas size

说明

bool ImagickDraw::setViewbox ( int $x1 , int $y1 , int $x2 , int $y2 )
Warning

本函数还未编写文档，仅有参数列表。

Sets the overall canvas size to be recorded with the drawing vector data. Usually this will be specified using the same size as the canvas image. When the vector data is saved to SVG or MVG formats, the viewbox is use to specify the size of the canvas image that a viewer will render the vector data on.

参数

x1

left x coordinate

y1

left y coordinate

x2

right x coordinate

y2

right y coordinate

返回值

没有返回值。

范例

Example #1 ImagickDraw::setViewBox()

<?php
function setViewBox($strokeColor, $fillColor, $backgroundColor) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->setStrokeWidth(2);
    $draw->setFontSize(72);

    /*

    Sets the overall canvas size to be recorded with the drawing vector data. Usually this will be specified using the same size as the canvas image. When the vector data is saved to SVG or MVG formats, the viewbox is use to specify the size of the canvas image that a viewer will render the vector data on.

     */

    $draw->circle(250, 250, 250, 0);
    $draw->setviewbox(0, 0, 200, 200);
    $draw->circle(125, 250, 250, 250);
    $draw->translate(250, 125);
    $draw->circle(0, 0, 125, 0);

    $imagick = new \Imagick();
    $imagick->newImage(500, 500, $backgroundColor);
    $imagick->setImageFormat("png");

    $imagick->drawImage($draw);

    header("Content-Type: image/png");
    echo $imagick->getImageBlob();
}

?>

ImagickDraw::setVectorGraphics
ImagickDraw::skewX
ImagickDraw


Skews the current coordinate system in the horizontal direction

ImagickDraw::setViewbox
ImagickDraw::skewY
ImagickDraw
PHP Manual

ImagickDraw::skewX

(PECL imagick 2.0.0)

ImagickDraw::skewX — Skews the current coordinate system in the horizontal direction

说明

bool ImagickDraw::skewX ( float $degrees )
Warning

本函数还未编写文档，仅有参数列表。

Skews the current coordinate system in the horizontal direction.

参数

degrees

degrees to skew

返回值

没有返回值。

范例

Example #1 ImagickDraw::skewX()

<?php
function skewX($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor,
               $startX, $startY, $endX, $endY, $skew) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setStrokeWidth(2);
    $draw->setFillColor($fillColor);
    $draw->rectangle($startX, $startY, $endX, $endY);
    $draw->setFillColor($fillModifiedColor);
    $draw->skewX($skew);
    $draw->rectangle($startX, $startY, $endX, $endY);

    $image = new \Imagick();
    $image->newImage(500, 500, $backgroundColor);
    $image->setImageFormat("png");

    $image->drawImage($draw);

    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickDraw::setViewbox
ImagickDraw::skewY
ImagickDraw


Skews the current coordinate system in the vertical direction

ImagickDraw::skewX
ImagickDraw::translate
ImagickDraw
PHP Manual

ImagickDraw::skewY

(PECL imagick 2.0.0)

ImagickDraw::skewY — Skews the current coordinate system in the vertical direction

说明

bool ImagickDraw::skewY ( float $degrees )
Warning

本函数还未编写文档，仅有参数列表。

Skews the current coordinate system in the vertical direction.

参数

degrees

degrees to skew

返回值

没有返回值。

范例

Example #1 ImagickDraw::skewY()

<?php
function skewY($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor,
               $startX, $startY, $endX, $endY, $skew) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setStrokeWidth(2);
    $draw->setFillColor($fillColor);
    $draw->rectangle($startX, $startY, $endX, $endY);
    $draw->setFillColor($fillModifiedColor);
    $draw->skewY($skew);
    $draw->rectangle($startX, $startY, $endX, $endY);

    $image = new \Imagick();
    $image->newImage(500, 500, $backgroundColor);
    $image->setImageFormat("png");
    $image->drawImage($draw);

    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickDraw::skewX
ImagickDraw::translate
ImagickDraw


Applies a translation to the current coordinate system

ImagickDraw::skewY
ImagickPixel
ImagickDraw
PHP Manual

ImagickDraw::translate

(PECL imagick 2.0.0)

ImagickDraw::translate — Applies a translation to the current coordinate system

说明

bool ImagickDraw::translate ( float $x , float $y )
Warning

本函数还未编写文档，仅有参数列表。

Applies a translation to the current coordinate system which moves the coordinate system origin to the specified coordinate.

参数

x

horizontal translation

y

vertical translation

返回值

没有返回值。

范例

Example #1 ImagickDraw::translate()

<?php
function translate($strokeColor, $fillColor, $backgroundColor, $fillModifiedColor,
                   $startX, $startY, $endX, $endY, $translateX, $translateY) {

    $draw = new \ImagickDraw();

    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->rectangle($startX, $startY, $endX, $endY);

    $draw->setFillColor($fillModifiedColor);
    $draw->translate($translateX, $translateY);
    $draw->rectangle($startX, $startY, $endX, $endY);

    $image = new \Imagick();
    $image->newImage(500, 500, $backgroundColor);
    $image->setImageFormat("png");

    $image->drawImage($draw);

    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickDraw::skewY
ImagickPixel
ImagickDraw


The ImagickPixel class

(PECL imagick 2.0.0)

类摘要

ImagickPixel {
bool clear ( void )
__construct ([ string $color ] )
bool destroy ( void )
array getColor ([ bool $normalized = false ] )
string getColorAsString ( void )
int getColorCount ( void )
public mixed getColorQuantum ( void )
float getColorValue ( int $color )
public mixed getColorValueQuantum ( void )
array getHSL ( void )
public int getIndex ( void )
bool isPixelSimilar ( ImagickPixel $color , float $fuzz )
public bool isPixelSimilarQuantum ( string $color [, string $fuzz ] )
bool isSimilar ( ImagickPixel $color , float $fuzz )
bool setColor ( string $color )
public void setcolorcount ( string $colorCount )
bool setColorValue ( int $color , float $value )
public void setColorValueQuantum ( int $color , mixed $value )
bool setHSL ( float $hue , float $saturation , float $luminosity )
public void setIndex ( int $index )
}

Table of Contents

  • ImagickPixel::clear — Clears resources associated with this object
  • ImagickPixel::__construct — The ImagickPixel constructor
  • ImagickPixel::destroy — Deallocates resources associated with this object
  • ImagickPixel::getColor — Returns the color
  • ImagickPixel::getColorAsString — Returns the color as a string
  • ImagickPixel::getColorCount — Returns the color count associated with this color
  • ImagickPixel::getColorQuantum — Description
  • ImagickPixel::getColorValue — Gets the normalized value of the provided color channel
  • ImagickPixel::getColorValueQuantum — Description
  • ImagickPixel::getHSL — Returns the normalized HSL color of the ImagickPixel object
  • ImagickPixel::getIndex — Description
  • ImagickPixel::isPixelSimilar — Check the distance between this color and another
  • ImagickPixel::isPixelSimilarQuantum — Description
  • ImagickPixel::isSimilar — Check the distance between this color and another
  • ImagickPixel::setColor — Sets the color
  • ImagickPixel::setColorCount — Description
  • ImagickPixel::setColorValue — Sets the normalized value of one of the channels
  • ImagickPixel::setColorValueQuantum — Description
  • ImagickPixel::setHSL — Sets the normalized HSL color
  • ImagickPixel::setIndex — Description
ImagickDraw::translate
ImagickPixel::clear
ImageMagick


Clears resources associated with this object

ImagickPixel
ImagickPixel::__construct
ImagickPixel
PHP Manual

ImagickPixel::clear

(PECL imagick 2.0.0)

ImagickPixel::clear — Clears resources associated with this object

说明

bool ImagickPixel::clear ( void )
Warning

本函数还未编写文档，仅有参数列表。

Clears the ImagickPixel object, leaving it in a fresh state. This also unsets any color associated with the object.

返回值

成功时返回 TRUE。

ImagickPixel
ImagickPixel::__construct
ImagickPixel


The ImagickPixel constructor

ImagickPixel::clear
ImagickPixel::destroy
ImagickPixel
PHP Manual

ImagickPixel::__construct

(PECL imagick 2.0.0)

ImagickPixel::__construct — The ImagickPixel constructor

说明

ImagickPixel::__construct ([ string $color ] )
Warning

本函数还未编写文档，仅有参数列表。

Constructs an ImagickPixel object. If a color is specified, the object is constructed and then initialised with that color before being returned.

参数

color

The optional color string to use as the initial value of this object.

返回值

Returns an ImagickPixel object on success, throwing ImagickPixelException on failure.

范例

Example #1 ImagickPixel::construct()

<?php
function construct() {

    $columns = 4;

    $exampleColors = array(
        "rgba(100%, 0%, 0%, 0.5)",
        "hsb(33.3333%, 100%,  75%)", // medium green
        "hsl(120, 255,   191.25)", //medium green
        "graya(50%, 0.5)", //  semi-transparent mid gray
        "LightCoral", "none", //"cmyk(0.9, 0.48, 0.83, 0.50)",
        "#f00", //  #rgb
        "#ff0000", //  #rrggbb
        "#ff0000ff", //  #rrggbbaa
        "#ffff00000000", //  #rrrrggggbbbb
        "#ffff00000000ffff", //  #rrrrggggbbbbaaaa
        "rgb(255, 0, 0)", //  an integer in the range 0—255 for each component
        "rgb(100.0%, 0.0%, 0.0%)", //  a float in the range 0—100% for each component
        "rgb(255, 0, 0)", //  range 0 - 255
        "rgba(255, 0, 0, 1.0)", //  the same, with an explicit alpha value
        "rgb(100%, 0%, 0%)", //  range 0.0% - 100.0%
        "rgba(100%, 0%, 0%, 1.0)", //  the same, with an explicit alpha value
    );

    $draw = new \ImagickDraw();
    $count = 0;
    $black = new \ImagickPixel('rgb(0, 0, 0)');

    foreach ($exampleColors as $exampleColor) {
        $color = new \ImagickPixel($exampleColor);

        $draw->setstrokewidth(1.0);
        $draw->setStrokeColor($black);
        $draw->setFillColor($color);
        $offsetX = ($count % $columns) * 50 + 5;
        $offsetY = intval($count / $columns) * 50 + 5;
        $draw->rectangle(0 + $offsetX, 0 + $offsetY, 40 + $offsetX, 40 + $offsetY);
        $count++;
    }

    $image = new \Imagick();
    $image->newImage(350, 350, "blue");
    $image->setImageFormat("png");
    $image->drawImage($draw);
    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickPixel::clear
ImagickPixel::destroy
ImagickPixel


Deallocates resources associated with this object

ImagickPixel::__construct
ImagickPixel::getColor
ImagickPixel
PHP Manual

ImagickPixel::destroy

(PECL imagick 2.0.0)

ImagickPixel::destroy — Deallocates resources associated with this object

说明

bool ImagickPixel::destroy ( void )
Warning

本函数还未编写文档，仅有参数列表。

Deallocates any resources used by the ImagickPixel object, and unsets any associated color. The object should not be used after the destroy function has been called.

返回值

成功时返回 TRUE。

ImagickPixel::__construct
ImagickPixel::getColor
ImagickPixel


Returns the color

ImagickPixel::destroy
ImagickPixel::getColorAsString
ImagickPixel
PHP Manual

ImagickPixel::getColor

(PECL imagick 2.0.0)

ImagickPixel::getColor — Returns the color

说明

array ImagickPixel::getColor ([ bool $normalized = false ] )

Returns the color described by the ImagickPixel object, as an array. If the color has an opacity channel set, this is provided as a fourth value in the list.

参数

normalized

Normalize the color values

返回值

An array of channel values, each normalized if TRUE is given as param. Throws ImagickPixelException on error.

范例

Example #1 Basic Imagick::getColor() usage

<?php

//Create an ImagickPixel with the predefined color 'brown'
$color = new ImagickPixel('brown');

//Set the color to have an alpha of 25%
$color->setColorValue(Imagick::COLOR_ALPHA, 64 / 256.0);

$colorInfo = $color->getColor();

echo "Standard values".PHP_EOL;
print_r($colorInfo);

$colorInfo = $color->getColor(true);

echo "Normalized values:".PHP_EOL;
print_r($colorInfo);

?>

以上例程会输出：

Standard values
Array
(
    [r] => 165
    [g] => 42
    [b] => 42
    [a] => 0
)
Normalized values:
Array
(
    [r] => 0.64705882352941
    [g] => 0.16470588235294
    [b] => 0.16470588235294
    [a] => 0.25000381475547
)

ImagickPixel::destroy
ImagickPixel::getColorAsString
ImagickPixel


Returns the color as a string

ImagickPixel::getColor
ImagickPixel::getColorCount
ImagickPixel
PHP Manual

ImagickPixel::getColorAsString

(PECL imagick 2.1.0)

ImagickPixel::getColorAsString — Returns the color as a string

说明

string ImagickPixel::getColorAsString ( void )

Returns the color of the ImagickPixel object as a string.

参数

此函数没有参数。

返回值

Returns the color of the ImagickPixel object as a string.

范例

Example #1 Basic Imagick::getColorAsString() usage

<?php

//Create an ImagickPixel with the predefined color 'brown'
$color = new ImagickPixel('brown');

$color->setColorValue(Imagick::COLOR_ALPHA, 64 / 256.0);

$colorInfo = $color->getColorAsString();

print_r($colorInfo);
?>

以上例程会输出：

rgb(165,42,42)

注释

Note: Alpha not returned

This function does not return the alpha value of the color in the string.

ImagickPixel::getColor
ImagickPixel::getColorCount
ImagickPixel


Returns the color count associated with this color

ImagickPixel::getColorAsString
ImagickPixel::getColorQuantum
ImagickPixel
PHP Manual

ImagickPixel::getColorCount

(PECL imagick 2.0.0)

ImagickPixel::getColorCount — Returns the color count associated with this color

说明

int ImagickPixel::getColorCount ( void )

Returns the color count associated with this color.

The color count is the number of pixels in the image that have the same color as this ImagickPixel.

ImagickPixel::getColorCount appears to only work for ImagickPixel objects created through Imagick::getImageHistogram()

返回值

Returns the color count as an integer on success, throws ImagickPixelException on failure.

范例

Example #1 ImagickPixel getColorCount()

<?php
    $imagick = new \Imagick();
    $imagick->newPseudoImage(640, 480, "magick:logo");
    $histogramElements = $imagick->getImageHistogram();
    $lastColor = array_pop($histogramElements);
    echo "Last pixel color count is: ".$lastColor->getColorCount();
?>

The output for this will be similar to:

Last pixel color count is: 256244

ImagickPixel::getColorAsString
ImagickPixel::getColorQuantum
ImagickPixel


Description

ImagickPixel::getColorCount
ImagickPixel::getColorValue
ImagickPixel
PHP Manual

ImagickPixel::getColorQuantum

(No version information available, might only be in Git)

ImagickPixel::getColorQuantum — Description

说明

public mixed ImagickPixel::getColorQuantum ( void )

Returns the color of the pixel in an array as Quantum values. If ImageMagick was compiled as HDRI these will be floats, otherwise they will be integers.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The quantum value of the color element. Float if ImageMagick was compiled with HDRI, otherwise an int.

ImagickPixel::getColorCount
ImagickPixel::getColorValue
ImagickPixel


Gets the normalized value of the provided color channel

ImagickPixel::getColorQuantum
ImagickPixel::getColorValueQuantum
ImagickPixel
PHP Manual

ImagickPixel::getColorValue

(PECL imagick 2.0.0)

ImagickPixel::getColorValue — Gets the normalized value of the provided color channel

说明

float ImagickPixel::getColorValue ( int $color )

Retrieves the value of the color channel specified, as a floating-point number between 0 and 1.

参数

color

The color to get the value of, specified as one of the Imagick color constants. This can be one of the RGB colors, CMYK colors, alpha and opacity e.g (Imagick::COLOR_BLUE, Imagick::COLOR_MAGENTA).

返回值

The value of the channel, as a normalized floating-point number, throwing ImagickPixelException on error.

范例

Example #1 Basic Imagick::getColorValue() usage

<?php

$color = new ImagickPixel('rgba(90%, 20%, 20%, 0.75)');

echo "Alpha value is ".$color->getColorValue(Imagick::COLOR_ALPHA).PHP_EOL;
echo "".PHP_EOL;
echo "Red value is ".$color->getColorValue(Imagick::COLOR_RED).PHP_EOL;
echo "Green value is ".$color->getColorValue(Imagick::COLOR_GREEN).PHP_EOL;
echo "Blue value is ".$color->getColorValue(Imagick::COLOR_BLUE).PHP_EOL;
echo "".PHP_EOL;
echo "Cyan value is ".$color->getColorValue(Imagick::COLOR_CYAN).PHP_EOL;
echo "Magenta value is ".$color->getColorValue(Imagick::COLOR_MAGENTA).PHP_EOL;
echo "Yellow value is ".$color->getColorValue(Imagick::COLOR_YELLOW).PHP_EOL;
echo "Black value is ".$color->getColorValue(Imagick::COLOR_BLACK).PHP_EOL;

?>

以上例程会输出：

Alpha value is 0.74999618524453

Red value is 0.90000762951095
Green value is 0.2
Blue value is 0.2

Cyan value is 0.90000762951095
Magenta value is 0.2
Yellow value is 0.2
Black value is 0

ImagickPixel::getColorQuantum
ImagickPixel::getColorValueQuantum
ImagickPixel


Description

ImagickPixel::getColorValue
ImagickPixel::getHSL
ImagickPixel
PHP Manual

ImagickPixel::getColorValueQuantum

(No version information available, might only be in Git)

ImagickPixel::getColorValueQuantum — Description

说明

public mixed ImagickPixel::getColorValueQuantum ( void )

Gets the quantum value of a color in the ImagickPixel. Return value is a float if ImageMagick was compiled with HDRI, otherwise an integer.

参数

此函数没有参数。

返回值

The quantum value of the color element. Float if ImageMagick was compiled with HDRI, otherwise an int.

范例

Example #1 ImagickPixel::getColorValueQuantum()

<?php
        $color = new \ImagickPixel('rgb(128, 5, 255)');
        $colorRed = $color->getColorValueQuantum(\Imagick::COLOR_RED);
        $colorGreen = $color->getColorValueQuantum(\Imagick::COLOR_GREEN);
        $colorBlue = $color->getColorValueQuantum(\Imagick::COLOR_BLUE);
        $colorAlpha = $color->getColorValueQuantum(\Imagick::COLOR_ALPHA);

        printf(
            "Red: %s Green: %s  Blue %s Alpha: %s",
            $colorRed,
            $colorGreen,
            $colorBlue,
            $colorAlpha
        );

?>

ImagickPixel::getColorValue
ImagickPixel::getHSL
ImagickPixel


Returns the normalized HSL color of the ImagickPixel object

ImagickPixel::getColorValueQuantum
ImagickPixel::getIndex
ImagickPixel
PHP Manual

ImagickPixel::getHSL

(PECL imagick 2.0.0)

ImagickPixel::getHSL — Returns the normalized HSL color of the ImagickPixel object

说明

array ImagickPixel::getHSL ( void )

Returns the normalized HSL color described by the ImagickPixel object, with each of the three values as floating point numbers between 0.0 and 1.0.

返回值

Returns the HSL value in an array with the keys "hue", "saturation", and "luminosity". Throws ImagickPixelException on failure.

范例

Example #1 Basic Imagick::getHSL() example

<?php

$color = new ImagickPixel('rgb(90%, 10%, 10%)');

$colorInfo = $color->getHSL();

print_r($colorInfo);

?>

以上例程会输出：

Array
(
    [hue] => 0
    [saturation] => 0.80001220740379
    [luminosity] => 0.50000762951095
)

注释

Note:

Available with ImageMagick library version 6.2.9 and higher.

ImagickPixel::getColorValueQuantum
ImagickPixel::getIndex
ImagickPixel


Description

ImagickPixel::getHSL
ImagickPixel::isPixelSimilar
ImagickPixel
PHP Manual

ImagickPixel::getIndex

(No version information available, might only be in Git)

ImagickPixel::getIndex — Description

说明

public int ImagickPixel::getIndex ( void )

Gets the colormap index of the pixel wand.

参数

此函数没有参数。

返回值

ImagickPixel::getHSL
ImagickPixel::isPixelSimilar
ImagickPixel


Check the distance between this color and another

ImagickPixel::getIndex
ImagickPixel::isPixelSimilarQuantum
ImagickPixel
PHP Manual

ImagickPixel::isPixelSimilar

(No version information available, might only be in Git)

ImagickPixel::isPixelSimilar — Check the distance between this color and another

说明

bool ImagickPixel::isPixelSimilar ( ImagickPixel $color , float $fuzz )

Checks the distance between the color described by this ImagickPixel object and that of the provided object, by plotting their RGB values on the color cube. If the distance between the two points is less than the fuzz value given, the colors are similar. This method replaces ImagickPixel::isSimilar() and correctly normalises the fuzz value to ImageMagick QuantumRange.

参数

color

The ImagickPixel object to compare this object against.

fuzz

The maximum distance within which to consider these colors as similar. The theoretical maximum for this value is the square root of three (1.732).

返回值

成功时返回 TRUE。

ImagickPixel::getIndex
ImagickPixel::isPixelSimilarQuantum
ImagickPixel


Description

ImagickPixel::isPixelSimilar
ImagickPixel::isSimilar
ImagickPixel
PHP Manual

ImagickPixel::isPixelSimilarQuantum

(No version information available, might only be in Git)

ImagickPixel::isPixelSimilarQuantum — Description

说明

public bool ImagickPixel::isPixelSimilarQuantum ( string $color [, string $fuzz ] )

Returns true if the distance between two colors is less than the specified distance. The fuzz value should be in the range 0-QuantumRange. The maximum value represents the longest possible distance in the colorspace. e.g. from RGB(0, 0, 0) to RGB(255, 255, 255) for the RGB colorspace

参数

color

fuzz

返回值

ImagickPixel::isPixelSimilar
ImagickPixel::isSimilar
ImagickPixel


Check the distance between this color and another

ImagickPixel::isPixelSimilarQuantum
ImagickPixel::setColor
ImagickPixel
PHP Manual

ImagickPixel::isSimilar

(PECL imagick 2.0.0)

ImagickPixel::isSimilar — Check the distance between this color and another

说明

bool ImagickPixel::isSimilar ( ImagickPixel $color , float $fuzz )
Warning

本函数还未编写文档，仅有参数列表。

Checks the distance between the color described by this ImagickPixel object and that of the provided object, by plotting their RGB values on the color cube. If the distance between the two points is less than the fuzz value given, the colors are similar. Deprecated in favour of ImagickPixel::isPixelSimilar().

参数

color

The ImagickPixel object to compare this object against.

fuzz

The maximum distance within which to consider these colors as similar. The theoretical maximum for this value is the square root of three (1.732).

返回值

成功时返回 TRUE。

范例

Example #1 ImagickPixel::isSimilar()

<?php
        // The tests below are written with the maximum distance expressed as 255
        // so we need to scale them by the square root of 3 - the diagonal length
        // of a unit cube.
        $root3 = 1.732050807568877;

        $tests = array(
            ['rgb(245, 0, 0)',      'rgb(255, 0, 0)',   9 / $root3,         false,],
            ['rgb(245, 0, 0)',      'rgb(255, 0, 0)',  10 / $root3,         true,],
            ['rgb(0, 0, 0)',        'rgb(7, 7, 0)',     9 / $root3,         false,],
            ['rgb(0, 0, 0)',        'rgb(7, 7, 0)',    10 / $root3,         true,],
            ['rgba(0, 0, 0, 1)',    'rgba(7, 7, 0, 1)', 9 / $root3,         false,],
            ['rgba(0, 0, 0, 1)',    'rgba(7, 7, 0, 1)',    10 / $root3,     true,],
            ['rgb(128, 128, 128)',  'rgb(128, 128, 120)',   7 / $root3,     false,],
            ['rgb(128, 128, 128)',  'rgb(128, 128, 120)',   8 / $root3,     true,],
            ['rgb(0, 0, 0)',        'rgb(255, 255, 255)',   254.9,          false,],
            ['rgb(0, 0, 0)',        'rgb(255, 255, 255)',   255,            true,],
            ['rgb(255, 0, 0)',      'rgb(0, 255, 255)',     254.9,          false,],
            ['rgb(255, 0, 0)',      'rgb(0, 255, 255)',     255,            true,],
            ['black',               'rgba(0, 0, 0)',        0.0,            true],
            ['black',               'rgba(10, 0, 0, 1.0)',  10.0 / $root3,  true],);

        $output = "<table width='100%' class='infoTable'><thead>
                <tr>
                <th>
                Color 1
                </th>
                <th>
                Color 2
                </th>
                <th>
                    Test distance * 255
                </th>
                <th>
                    Is within distance
                </th>
                </tr>
        </thead>";

        $output .= "<tbody>";

        foreach ($tests as $testInfo) {
            $color1 = $testInfo[0];
            $color2 = $testInfo[1];
            $distance = $testInfo[2];
            $expectation = $testInfo[3];
            $testDistance = ($distance / 255.0);

            $color1Pixel = new \ImagickPixel($color1);
            $color2Pixel = new \ImagickPixel($color2);

            $isSimilar = $color1Pixel->isPixelSimilar($color2Pixel, $testDistance);

            if ($isSimilar !== $expectation) {
                echo "Test distance failed. Color [$color1] compared to color [$color2] is not within distance $testDistance FAILED.".NL;
            }

            $layout = "<tr>
                <td>%s</td>
                <td>%s</td>
                <td>%s</td>
                <td style='text-align: center;'>%s</td>
            </tr>";

            $output .= sprintf(
                $layout,
                $color1,
                $color2,
                $distance,
                $isSimilar ? 'yes' : 'no'
            );
        }

        $output .= "</tbody></table>";

        return $output;

?>

ImagickPixel::isPixelSimilarQuantum
ImagickPixel::setColor
ImagickPixel


Sets the color

ImagickPixel::isSimilar
ImagickPixel::setColorCount
ImagickPixel
PHP Manual

ImagickPixel::setColor

(PECL imagick 2.0.0)

ImagickPixel::setColor — Sets the color

说明

bool ImagickPixel::setColor ( string $color )
Warning

本函数还未编写文档，仅有参数列表。

Sets the color described by the ImagickPixel object, with a string (e.g. "blue", "#0000ff", "rgb(0,0,255)", "cmyk(100,100,100,10)", etc.).

参数

color

The color definition to use in order to initialise the ImagickPixel object.

返回值

Returns TRUE if the specified color was set, FALSE otherwise.

范例

Example #1 ImagickPixel::setColor()

<?php
function setColor() {
    $draw = new \ImagickDraw();

    $strokeColor = new \ImagickPixel('green');
    $fillColor = new \ImagickPixel();
    $fillColor->setColor('rgba(100%, 75%, 0%, 1.0)');

    $draw->setstrokewidth(3.0);
    $draw->setStrokeColor($strokeColor);
    $draw->setFillColor($fillColor);
    $draw->rectangle(200, 200, 300, 300);

    $image = new \Imagick();
    $image->newImage(500, 500, "SteelBlue2");
    $image->setImageFormat("png");

    $image->drawImage($draw);

    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickPixel::isSimilar
ImagickPixel::setColorCount
ImagickPixel


Description

ImagickPixel::setColor
ImagickPixel::setColorValue
ImagickPixel
PHP Manual

ImagickPixel::setColorCount

(No version information available, might only be in Git)

ImagickPixel::setColorCount — Description

说明

public void ImagickPixel::setcolorcount ( string $colorCount )

Sets the color count associated with this color.

参数

colorCount

返回值

ImagickPixel::setColor
ImagickPixel::setColorValue
ImagickPixel


Sets the normalized value of one of the channels

ImagickPixel::setColorCount
ImagickPixel::setColorValueQuantum
ImagickPixel
PHP Manual

ImagickPixel::setColorValue

(PECL imagick 2.0.0)

ImagickPixel::setColorValue — Sets the normalized value of one of the channels

说明

bool ImagickPixel::setColorValue ( int $color , float $value )

Sets the value of the specified channel of this object to the provided value, which should be between 0 and 1. This function can be used to provide an opacity channel to an ImagickPixel object.

参数

color

One of the Imagick color constants e.g. \Imagick::COLOR_GREEN or \Imagick::COLOR_ALPHA.

value

The value to set this channel to, ranging from 0 to 1.

返回值

成功时返回 TRUE。

范例

Example #1 Basic Imagick::setColorValue() usage

<?php

$color  = new \ImagickPixel('firebrick');

$color->setColorValue(Imagick::COLOR_ALPHA, 0.5);

print_r($color->getcolor(true));
?>

以上例程会输出：

Array
(
    [r] => 0.69803921568627
    [g] => 0.13333333333333
    [b] => 0.13333333333333
    [a] => 0.50000762951095
)

ImagickPixel::setColorCount
ImagickPixel::setColorValueQuantum
ImagickPixel


Description

ImagickPixel::setColorValue
ImagickPixel::setHSL
ImagickPixel
PHP Manual

ImagickPixel::setColorValueQuantum

(No version information available, might only be in Git)

ImagickPixel::setColorValueQuantum — Description

说明

public void ImagickPixel::setColorValueQuantum ( int $color , mixed $value )

Sets the quantum value of a color element of the ImagickPixel.

Warning

本函数还未编写文档，仅有参数列表。

参数

color

Which color element to set e.g. \Imagick::COLOR_GREEN.

value

The quantum value to set the color element to. This should be a float if ImageMagick was compiled with HDRI otherwise an int in the range 0 to Imagick::getQuantum().

返回值

范例

Example #1 ImagickPixel::setColorValueQuantum()

<?php
function setColorValueQuantum() {
    $image = new \Imagick();

    $quantumRange = $image->getQuantumRange();

    $draw = new \ImagickDraw();
    $color = new \ImagickPixel('blue');
    $color->setcolorValueQuantum(\Imagick::COLOR_RED, 128 * $quantumRange['quantumRangeLong'] / 256);

    $draw->setstrokewidth(1.0);
    $draw->setStrokeColor($color);
    $draw->setFillColor($color);
    $draw->rectangle(200, 200, 300, 300);

    $image->newImage(500, 500, "SteelBlue2");
    $image->setImageFormat("png");

    $image->drawImage($draw);

    header("Content-Type: image/png");
    echo $image->getImageBlob();
}

?>

ImagickPixel::setColorValue
ImagickPixel::setHSL
ImagickPixel


Sets the normalized HSL color

ImagickPixel::setColorValueQuantum
ImagickPixel::setIndex
ImagickPixel
PHP Manual

ImagickPixel::setHSL

(PECL imagick 2.0.0)

ImagickPixel::setHSL — Sets the normalized HSL color

说明

bool ImagickPixel::setHSL ( float $hue , float $saturation , float $luminosity )

Sets the color described by the ImagickPixel object using normalized values for hue, saturation and luminosity.

参数

hue

The normalized value for hue, described as a fractional arc (between 0 and 1) of the hue circle, where the zero value is red.

saturation

The normalized value for saturation, with 1 as full saturation.

luminosity

The normalized value for luminosity, on a scale from black at 0 to white at 1, with the full HS value at 0.5 luminosity.

返回值

成功时返回 TRUE。

范例

Example #1 Use ImagickPixel::setHSL() to modify a color

<?php

//Create an almost pure red color
$color = new ImagickPixel('rgb(90%, 10%, 10%)');

//Get it's HSL values
$colorInfo = $color->getHSL();

//Rotate the hue by 180 degrees
$newHue = $colorInfo['hue'] + 0.5;
if ($newHue > 1) {
    $newHue = $newHue - 1;
}

//Set the ImagickPixel to the new color
$colorInfo = $color->setHSL($newHue, $colorInfo['saturation'], $colorInfo['luminosity']);

//Check that the new color is blue/green
$colorInfo = $color->getcolor();
print_r($colorInfo);

?>

以上例程会输出：

Array
(
    [r] => 26
    [g] => 230
    [b] => 230
    [a] => 255
)

注释

Note:

Available with ImageMagick library version 6.2.9 and higher.

ImagickPixel::setColorValueQuantum
ImagickPixel::setIndex
ImagickPixel


Description

ImagickPixel::setHSL
ImagickPixelIterator
ImagickPixel
PHP Manual

ImagickPixel::setIndex

(No version information available, might only be in Git)

ImagickPixel::setIndex — Description

说明

public void ImagickPixel::setIndex ( int $index )

Sets the colormap index of the pixel wand.

参数

index

返回值

ImagickPixel::setHSL
ImagickPixelIterator
ImagickPixel


The ImagickPixelIterator class

(PECL imagick 2.0.0)

类摘要

ImagickPixelIterator {
bool clear ( void )
__construct ( Imagick $wand )
bool destroy ( void )
array getCurrentIteratorRow ( void )
int getIteratorRow ( void )
array getNextIteratorRow ( void )
array getPreviousIteratorRow ( void )
bool newPixelIterator ( Imagick $wand )
bool newPixelRegionIterator ( Imagick $wand , int $x , int $y , int $columns , int $rows )
bool resetIterator ( void )
bool setIteratorFirstRow ( void )
bool setIteratorLastRow ( void )
bool setIteratorRow ( int $row )
bool syncIterator ( void )
}

Table of Contents

  • ImagickPixelIterator::clear — Clear resources associated with a PixelIterator
  • ImagickPixelIterator::__construct — The ImagickPixelIterator constructor
  • ImagickPixelIterator::destroy — Deallocates resources associated with a PixelIterator
  • ImagickPixelIterator::getCurrentIteratorRow — Returns the current row of ImagickPixel objects
  • ImagickPixelIterator::getIteratorRow — Returns the current pixel iterator row
  • ImagickPixelIterator::getNextIteratorRow — Returns the next row of the pixel iterator
  • ImagickPixelIterator::getPreviousIteratorRow — Returns the previous row
  • ImagickPixelIterator::newPixelIterator — Returns a new pixel iterator
  • ImagickPixelIterator::newPixelRegionIterator — Returns a new pixel iterator
  • ImagickPixelIterator::resetIterator — Resets the pixel iterator
  • ImagickPixelIterator::setIteratorFirstRow — Sets the pixel iterator to the first pixel row
  • ImagickPixelIterator::setIteratorLastRow — Sets the pixel iterator to the last pixel row
  • ImagickPixelIterator::setIteratorRow — Set the pixel iterator row
  • ImagickPixelIterator::syncIterator — Syncs the pixel iterator
ImagickPixel::setIndex
ImagickPixelIterator::clear
ImageMagick


Clear resources associated with a PixelIterator

ImagickPixelIterator
ImagickPixelIterator::__construct
ImagickPixelIterator
PHP Manual

ImagickPixelIterator::clear

(PECL imagick 2.0.0)

ImagickPixelIterator::clear — Clear resources associated with a PixelIterator

说明

bool ImagickPixelIterator::clear ( void )
Warning

本函数还未编写文档，仅有参数列表。

Clear resources associated with a PixelIterator.

返回值

成功时返回 TRUE。

范例

Example #1 ImagickPixelIterator::clear()

<?php
function clear($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));

    $imageIterator = $imagick->getPixelRegionIterator(100, 100, 250, 200);

    /* Loop through pixel rows */
    foreach ($imageIterator as $pixels) {
        /** @var $pixel \ImagickPixel */
        /* Loop through the pixels in the row (columns) */
        foreach ($pixels as $column => $pixel) {
            if ($column % 2) {
                /* Paint every second pixel black*/
                $pixel->setColor("rgba(0, 0, 0, 0)");
            }
        }
        /* Sync the iterator, this is important to do on each iteration */
        $imageIterator->syncIterator();
    }

    $imageIterator->clear();

    header("Content-Type: image/jpg");
    echo $imagick;
}

?>

ImagickPixelIterator
ImagickPixelIterator::__construct
ImagickPixelIterator


The ImagickPixelIterator constructor

ImagickPixelIterator::clear
ImagickPixelIterator::destroy
ImagickPixelIterator
PHP Manual

ImagickPixelIterator::__construct

(PECL imagick 2.0.0)

ImagickPixelIterator::__construct — The ImagickPixelIterator constructor

说明

ImagickPixelIterator::__construct ( Imagick $wand )
Warning

本函数还未编写文档，仅有参数列表。

The ImagickPixelIterator constructor

返回值

成功时返回 TRUE。

范例

Example #1 ImagickPixelIterator::construct()

<?php
function construct($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imageIterator = new \ImagickPixelIterator($imagick);

    /* Loop through pixel rows */
    foreach ($imageIterator as $pixels) {
        /* Loop through the pixels in the row (columns) */
        foreach ($pixels as $column => $pixel) {
            /** @var $pixel \ImagickPixel */
            if ($column % 2) {
                /* Paint every second pixel black*/
                $pixel->setColor("rgba(0, 0, 0, 0)");
            }
        }
        /* Sync the iterator, this is important to do on each iteration */
        $imageIterator->syncIterator();
    }

    header("Content-Type: image/jpg");
    echo $imagick;
}

?>

ImagickPixelIterator::clear
ImagickPixelIterator::destroy
ImagickPixelIterator


Deallocates resources associated with a PixelIterator

ImagickPixelIterator::__construct
ImagickPixelIterator::getCurrentIteratorRow
ImagickPixelIterator
PHP Manual

ImagickPixelIterator::destroy

(PECL imagick 2.0.0)

ImagickPixelIterator::destroy — Deallocates resources associated with a PixelIterator

说明

bool ImagickPixelIterator::destroy ( void )
Warning

本函数还未编写文档，仅有参数列表。

Deallocates resources associated with a PixelIterator.

返回值

成功时返回 TRUE。

ImagickPixelIterator::__construct
ImagickPixelIterator::getCurrentIteratorRow
ImagickPixelIterator


Returns the current row of ImagickPixel objects

ImagickPixelIterator::destroy
ImagickPixelIterator::getIteratorRow
ImagickPixelIterator
PHP Manual

ImagickPixelIterator::getCurrentIteratorRow

(PECL imagick 2.0.0)

ImagickPixelIterator::getCurrentIteratorRow — Returns the current row of ImagickPixel objects

说明

array ImagickPixelIterator::getCurrentIteratorRow ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the current row as an array of ImagickPixel objects from the pixel iterator.

返回值

Returns a row as an array of ImagickPixel objects that can themselves be iterated.

ImagickPixelIterator::destroy
ImagickPixelIterator::getIteratorRow
ImagickPixelIterator


Returns the current pixel iterator row

ImagickPixelIterator::getCurrentIteratorRow
ImagickPixelIterator::getNextIteratorRow
ImagickPixelIterator
PHP Manual

ImagickPixelIterator::getIteratorRow

(PECL imagick 2.0.0)

ImagickPixelIterator::getIteratorRow — Returns the current pixel iterator row

说明

int ImagickPixelIterator::getIteratorRow ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the current pixel iterator row.

返回值

Returns the integer offset of the row, throwing ImagickPixelIteratorException on error.

ImagickPixelIterator::getCurrentIteratorRow
ImagickPixelIterator::getNextIteratorRow
ImagickPixelIterator


Returns the next row of the pixel iterator

ImagickPixelIterator::getIteratorRow
ImagickPixelIterator::getPreviousIteratorRow
ImagickPixelIterator
PHP Manual

ImagickPixelIterator::getNextIteratorRow

(PECL imagick 2.0.0)

ImagickPixelIterator::getNextIteratorRow — Returns the next row of the pixel iterator

说明

array ImagickPixelIterator::getNextIteratorRow ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the next row as an array of pixel wands from the pixel iterator.

返回值

Returns the next row as an array of ImagickPixel objects, throwing ImagickPixelIteratorException on error.

范例

Example #1 ImagickPixelIterator::getNextIteratorRow()

<?php
function getNextIteratorRow($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imageIterator = $imagick->getPixelIterator();

    $count = 0;
    while ($pixels = $imageIterator->getNextIteratorRow()) {
        if (($count % 3) == 0) {
            /* Loop through the pixels in the row (columns) */
            foreach ($pixels as $column => $pixel) {
                /** @var $pixel \ImagickPixel */
                if ($column % 2) {
                    /* Paint every second pixel black*/
                    $pixel->setColor("rgba(0, 0, 0, 0)");
                }
            }
            /* Sync the iterator, this is important to do on each iteration */
            $imageIterator->syncIterator();
        }

        $count += 1;
    }

    header("Content-Type: image/jpg");
    echo $imagick;
}

?>

ImagickPixelIterator::getIteratorRow
ImagickPixelIterator::getPreviousIteratorRow
ImagickPixelIterator


Returns the previous row

ImagickPixelIterator::getNextIteratorRow
ImagickPixelIterator::newPixelIterator
ImagickPixelIterator
PHP Manual

ImagickPixelIterator::getPreviousIteratorRow

(PECL imagick 2.0.0)

ImagickPixelIterator::getPreviousIteratorRow — Returns the previous row

说明

array ImagickPixelIterator::getPreviousIteratorRow ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the previous row as an array of pixel wands from the pixel iterator.

返回值

Returns the previous row as an array of ImagickPixelWand objects from the ImagickPixelIterator, throwing ImagickPixelIteratorException on error.

ImagickPixelIterator::getNextIteratorRow
ImagickPixelIterator::newPixelIterator
ImagickPixelIterator


Returns a new pixel iterator

ImagickPixelIterator::getPreviousIteratorRow
ImagickPixelIterator::newPixelRegionIterator
ImagickPixelIterator
PHP Manual

ImagickPixelIterator::newPixelIterator

(PECL imagick 2.0.0)

ImagickPixelIterator::newPixelIterator — Returns a new pixel iterator

说明

bool ImagickPixelIterator::newPixelIterator ( Imagick $wand )
Warning

本函数还未编写文档，仅有参数列表。

Returns a new pixel iterator.

返回值

成功时返回 TRUE。 Throwing ImagickPixelIteratorException.

ImagickPixelIterator::getPreviousIteratorRow
ImagickPixelIterator::newPixelRegionIterator
ImagickPixelIterator


Returns a new pixel iterator

ImagickPixelIterator::newPixelIterator
ImagickPixelIterator::resetIterator
ImagickPixelIterator
PHP Manual

ImagickPixelIterator::newPixelRegionIterator

(PECL imagick 2.0.0)

ImagickPixelIterator::newPixelRegionIterator — Returns a new pixel iterator

说明

bool ImagickPixelIterator::newPixelRegionIterator ( Imagick $wand , int $x , int $y , int $columns , int $rows )
Warning

本函数还未编写文档，仅有参数列表。

Returns a new pixel iterator.

参数

wand

x

y

columns

rows

返回值

Returns a new ImagickPixelIterator on success; on failure, throws ImagickPixelIteratorException.

ImagickPixelIterator::newPixelIterator
ImagickPixelIterator::resetIterator
ImagickPixelIterator


Resets the pixel iterator

ImagickPixelIterator::newPixelRegionIterator
ImagickPixelIterator::setIteratorFirstRow
ImagickPixelIterator
PHP Manual

ImagickPixelIterator::resetIterator

(PECL imagick 2.0.0)

ImagickPixelIterator::resetIterator — Resets the pixel iterator

说明

bool ImagickPixelIterator::resetIterator ( void )
Warning

本函数还未编写文档，仅有参数列表。

Resets the pixel iterator. Use it in conjunction with ImagickPixelIterator::getNextIteratorRow() to iterate over all the pixels in a pixel container.

返回值

成功时返回 TRUE。

范例

Example #1 ImagickPixelIterator::resetIterator()

<?php
function resetIterator($imagePath) {

    $imagick = new \Imagick(realpath($imagePath));

    $imageIterator = $imagick->getPixelIterator();

    /* Loop trough pixel rows */
    foreach ($imageIterator as $pixels) {
        /* Loop through the pixels in the row (columns) */
        foreach ($pixels as $column => $pixel) {
            /** @var $pixel \ImagickPixel */
            if ($column % 2) {

                /* Make every second pixel 25% red*/
                $pixel->setColorValue(\Imagick::COLOR_RED, 64);
            }
        }
        /* Sync the iterator, this is important to do on each iteration */
        $imageIterator->syncIterator();
    }

    $imageIterator->resetiterator();

    /* Loop trough pixel rows */
    foreach ($imageIterator as $pixels) {
        /* Loop through the pixels in the row (columns) */
        foreach ($pixels as $column => $pixel) {
            /** @var $pixel \ImagickPixel */
            if ($column % 3) {
                $pixel->setColorValue(\Imagick::COLOR_BLUE, 64); /* Make every second pixel a little blue*/
                //$pixel->setColor("rgba(0, 0, 128, 0)"); /* Paint every second pixel black*/
            }
        }
        $imageIterator->syncIterator(); /* Sync the iterator, this is important to do on each iteration */
    }

    $imageIterator->clear();

    header("Content-Type: image/jpg");
    echo $imagick;
}

?>

ImagickPixelIterator::newPixelRegionIterator
ImagickPixelIterator::setIteratorFirstRow
ImagickPixelIterator


Sets the pixel iterator to the first pixel row

ImagickPixelIterator::resetIterator
ImagickPixelIterator::setIteratorLastRow
ImagickPixelIterator
PHP Manual

ImagickPixelIterator::setIteratorFirstRow

(PECL imagick 2.0.0)

ImagickPixelIterator::setIteratorFirstRow — Sets the pixel iterator to the first pixel row

说明

bool ImagickPixelIterator::setIteratorFirstRow ( void )
Warning

本函数还未编写文档，仅有参数列表。

Sets the pixel iterator to the first pixel row.

返回值

成功时返回 TRUE。

ImagickPixelIterator::resetIterator
ImagickPixelIterator::setIteratorLastRow
ImagickPixelIterator


Sets the pixel iterator to the last pixel row

ImagickPixelIterator::setIteratorFirstRow
ImagickPixelIterator::setIteratorRow
ImagickPixelIterator
PHP Manual

ImagickPixelIterator::setIteratorLastRow

(PECL imagick 2.0.0)

ImagickPixelIterator::setIteratorLastRow — Sets the pixel iterator to the last pixel row

说明

bool ImagickPixelIterator::setIteratorLastRow ( void )
Warning

本函数还未编写文档，仅有参数列表。

Sets the pixel iterator to the last pixel row.

返回值

成功时返回 TRUE。

ImagickPixelIterator::setIteratorFirstRow
ImagickPixelIterator::setIteratorRow
ImagickPixelIterator


Set the pixel iterator row

ImagickPixelIterator::setIteratorLastRow
ImagickPixelIterator::syncIterator
ImagickPixelIterator
PHP Manual

ImagickPixelIterator::setIteratorRow

(PECL imagick 2.0.0)

ImagickPixelIterator::setIteratorRow — Set the pixel iterator row

说明

bool ImagickPixelIterator::setIteratorRow ( int $row )
Warning

本函数还未编写文档，仅有参数列表。

Set the pixel iterator row.

参数

row

返回值

成功时返回 TRUE。

范例

Example #1 ImagickPixelIterator::setIteratorRow()

<?php
function setIteratorRow($imagePath) {
    $imagick = new \Imagick(realpath($imagePath));
    $imageIterator = $imagick->getPixelRegionIterator(200, 100, 200, 200);

    for ($x = 0; $x < 20; $x++) {
        $imageIterator->setIteratorRow($x * 5);
        $pixels = $imageIterator->getCurrentIteratorRow();
        /* Loop through the pixels in the row (columns) */
        foreach ($pixels as $pixel) {
            /** @var $pixel \ImagickPixel */
            /* Paint every second pixel black*/
            $pixel->setColor("rgba(0, 0, 0, 0)");
        }

        /* Sync the iterator, this is important to do on each iteration */
        $imageIterator->syncIterator();
    }

    header("Content-Type: image/jpg");
    echo $imagick;
}

?>

ImagickPixelIterator::setIteratorLastRow
ImagickPixelIterator::syncIterator
ImagickPixelIterator


Syncs the pixel iterator

ImagickPixelIterator::setIteratorRow
邮件相关扩展
ImagickPixelIterator
PHP Manual

ImagickPixelIterator::syncIterator

(PECL imagick 2.0.0)

ImagickPixelIterator::syncIterator — Syncs the pixel iterator

说明

bool ImagickPixelIterator::syncIterator ( void )
Warning

本函数还未编写文档，仅有参数列表。

Syncs the pixel iterator.

返回值

成功时返回 TRUE。

ImagickPixelIterator::setIteratorRow
邮件相关扩展
ImagickPixelIterator


邮件相关扩展

  • Cyrus — Cyrus IMAP administration
    • 简介
    • 安装／配置
    • 预定义常量
    • Cyrus 函数
  • IMAP — IMAP, POP3 和 NNTP
    • 简介
    • 安装／配置
    • 预定义常量
    • IMAP 函数
  • Mail
    • 简介
    • 安装／配置
    • 预定义常量
    • Mail 函数
  • Mailparse
    • 简介
    • 安装／配置
    • 预定义常量
    • Mailparse 函数
  • vpopmail
    • 简介
    • 安装／配置
    • 预定义常量
    • vpopmail 函数
ImagickPixelIterator::syncIterator
Cyrus
函数参考


Cyrus IMAP administration

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Cyrus 函数
    • cyrus_authenticate — Authenticate against a Cyrus IMAP server
    • cyrus_bind — Bind callbacks to a Cyrus IMAP connection
    • cyrus_close — Close connection to a Cyrus IMAP server
    • cyrus_connect — Connect to a Cyrus IMAP server
    • cyrus_query — Send a query to a Cyrus IMAP server
    • cyrus_unbind — Unbind ...
邮件相关扩展
简介
邮件相关扩展


简介

Note: 此扩展在 Windows 平台上不可用。

Note:

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.0.0.

Cyrus
安装／配置
Cyrus


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Cyrus


安装

To enable Cyrus IMAP support and to use these functions you have to compile PHP with the --with-cyrus option.

Warning

IMAP，recode，YAZ 和 Cyrus 扩展不能同时使用，因为它们共享了相同 的内部符号。注意：Yaz 2.0 及以上版本不存在此问题。

需求
运行时配置
安装／配置


资源类型

This extension defines a Cyrus IMAP connection identifier returned by cyrus_connect().

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

CYRUS_CONN_NONSYNCLITERAL (integer)
CYRUS_CONN_INITIALRESPONSE (integer)
CYRUS_CALLBACK_NUMBERED (integer)
CYRUS_CALLBACK_NOLITERAL (integer)
资源类型
Cyrus 函数
Cyrus


Cyrus 函数

Table of Contents

  • cyrus_authenticate — Authenticate against a Cyrus IMAP server
  • cyrus_bind — Bind callbacks to a Cyrus IMAP connection
  • cyrus_close — Close connection to a Cyrus IMAP server
  • cyrus_connect — Connect to a Cyrus IMAP server
  • cyrus_query — Send a query to a Cyrus IMAP server
  • cyrus_unbind — Unbind ...
预定义常量
cyrus_authenticate
Cyrus


Authenticate against a Cyrus IMAP server

Cyrus 函数
cyrus_bind
Cyrus 函数
PHP Manual

cyrus_authenticate

(PHP 4 >= 4.1.0, PECL cyrus 1.0)

cyrus_authenticate — Authenticate against a Cyrus IMAP server

说明

void cyrus_authenticate ( resource $connection [, string $mechlist [, string $service [, string $user [, int $minssf [, int $maxssf [, string $authname [, string $password ]]]]]]] )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

Cyrus 函数
cyrus_bind
Cyrus 函数


Bind callbacks to a Cyrus IMAP connection

cyrus_authenticate
cyrus_close
Cyrus 函数
PHP Manual

cyrus_bind

(PHP 4 >= 4.1.0, PECL cyrus 1.0)

cyrus_bind — Bind callbacks to a Cyrus IMAP connection

说明

bool cyrus_bind ( resource $connection , array $callbacks )

Binds callbacks to a Cyrus IMAP connection.

参数

connection

The connection handle.

callbacks

An array of callbacks.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

cyrus_authenticate
cyrus_close
Cyrus 函数


Close connection to a Cyrus IMAP server

cyrus_bind
cyrus_connect
Cyrus 函数
PHP Manual

cyrus_close

(PHP 4 >= 4.1.0, PECL cyrus 1.0)

cyrus_close — Close connection to a Cyrus IMAP server

说明

bool cyrus_close ( resource $connection )

Closes the connection to a Cyrus IMAP server.

参数

connection

The connection handle.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

cyrus_bind
cyrus_connect
Cyrus 函数


Connect to a Cyrus IMAP server

cyrus_close
cyrus_query
Cyrus 函数
PHP Manual

cyrus_connect

(PHP 4 >= 4.1.0, PECL cyrus 1.0)

cyrus_connect — Connect to a Cyrus IMAP server

说明

resource cyrus_connect ([ string $host [, string $port [, int $flags ]]] )

Connects to a Cyrus IMAP server.

参数

host

The Cyrus IMAP host name.

port

The port number.

flags

返回值

Returns a connection handler on success 或者在失败时返回 FALSE.

cyrus_close
cyrus_query
Cyrus 函数


Send a query to a Cyrus IMAP server

cyrus_connect
cyrus_unbind
Cyrus 函数
PHP Manual

cyrus_query

(PHP 4 >= 4.1.0, PECL cyrus 1.0)

cyrus_query — Send a query to a Cyrus IMAP server

说明

array cyrus_query ( resource $connection , string $query )

Sends a query to a Cyrus IMAP server.

参数

connection

The connection handle.

query

The query string.

返回值

Returns an associative array with the following keys: text, msgno, and keyword.

cyrus_connect
cyrus_unbind
Cyrus 函数


Unbind ...

cyrus_query
IMAP
Cyrus 函数
PHP Manual

cyrus_unbind

(PHP 4 >= 4.1.0, PECL cyrus 1.0)

cyrus_unbind — Unbind ...

说明

bool cyrus_unbind ( resource $connection , string $trigger_name )
Warning

本函数还未编写文档，仅有参数列表。

参数

connection

The connection handle.

trigger_name

The trigger name.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

cyrus_query
IMAP
Cyrus 函数


IMAP, POP3 和 NNTP

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • IMAP 函数
    • imap_8bit — Convert an 8bit string to a quoted-printable string
    • imap_alerts — Returns all IMAP alert messages that have occurred
    • imap_append — Append a string message to a specified mailbox
    • imap_base64 — Decode BASE64 encoded text
    • imap_binary — Convert an 8bit string to a base64 string
    • imap_body — Read the message body
    • imap_bodystruct — Read the structure of a specified body section of a specific message
    • imap_check — Check current mailbox
    • imap_clearflag_full — Clears flags on messages
    • imap_close — Close an IMAP stream
    • imap_create — 别名 imap_createmailbox
    • imap_createmailbox — Create a new mailbox
    • imap_delete — Mark a message for deletion from current mailbox
    • imap_deletemailbox — Delete a mailbox
    • imap_errors — Returns all of the IMAP errors that have occurred
    • imap_expunge — Delete all messages marked for deletion
    • imap_fetch_overview — Read an overview of the information in the headers of the given message
    • imap_fetchbody — Fetch a particular section of the body of the message
    • imap_fetchheader — Returns header for a message
    • imap_fetchmime — Fetch MIME headers for a particular section of the message
    • imap_fetchstructure — Read the structure of a particular message
    • imap_fetchtext — 别名 imap_body
    • imap_gc — Clears IMAP cache
    • imap_get_quota — Retrieve the quota level settings, and usage statics per mailbox
    • imap_get_quotaroot — Retrieve the quota settings per user
    • imap_getacl — Gets the ACL for a given mailbox
    • imap_getmailboxes — Read the list of mailboxes, returning detailed information on each one
    • imap_getsubscribed — List all the subscribed mailboxes
    • imap_header — 别名 imap_headerinfo
    • imap_headerinfo — Read the header of the message
    • imap_headers — Returns headers for all messages in a mailbox
    • imap_last_error — Gets the last IMAP error that occurred during this page request
    • imap_list — Read the list of mailboxes
    • imap_listmailbox — 别名 imap_list
    • imap_listscan — Returns the list of mailboxes that matches the given text
    • imap_listsubscribed — 别名 imap_lsub
    • imap_lsub — List all the subscribed mailboxes
    • imap_mail_compose — Create a MIME message based on given envelope and body sections
    • imap_mail_copy — Copy specified messages to a mailbox
    • imap_mail_move — Move specified messages to a mailbox
    • imap_mail — Send an email message
    • imap_mailboxmsginfo — Get information about the current mailbox
    • imap_mime_header_decode — Decode MIME header elements
    • imap_msgno — Gets the message sequence number for the given UID
    • imap_num_msg — Gets the number of messages in the current mailbox
    • imap_num_recent — Gets the number of recent messages in current mailbox
    • imap_open — Open an IMAP stream to a mailbox
    • imap_ping — Check if the IMAP stream is still active
    • imap_qprint — Convert a quoted-printable string to an 8 bit string
    • imap_rename — 别名 imap_renamemailbox
    • imap_renamemailbox — Rename an old mailbox to new mailbox
    • imap_reopen — Reopen IMAP stream to new mailbox
    • imap_rfc822_parse_adrlist — Parses an address string
    • imap_rfc822_parse_headers — Parse mail headers from a string
    • imap_rfc822_write_address — Returns a properly formatted email address given the mailbox, host, and personal info
    • imap_savebody — Save a specific body section to a file
    • imap_scan — 别名 imap_listscan
    • imap_scanmailbox — 别名 imap_listscan
    • imap_search — This function returns an array of messages matching the given search criteria
    • imap_set_quota — Sets a quota for a given mailbox
    • imap_setacl — Sets the ACL for a given mailbox
    • imap_setflag_full — Sets flags on messages
    • imap_sort — Gets and sort messages
    • imap_status — Returns status information on a mailbox
    • imap_subscribe — Subscribe to a mailbox
    • imap_thread — Returns a tree of threaded message
    • imap_timeout — Set or fetch imap timeout
    • imap_uid — This function returns the UID for the given message sequence number
    • imap_undelete — Unmark the message which is marked deleted
    • imap_unsubscribe — Unsubscribe from a mailbox
    • imap_utf7_decode — Decodes a modified UTF-7 encoded string
    • imap_utf7_encode — Converts ISO-8859-1 string to modified UTF-7 text
    • imap_utf8 — Converts MIME-encoded text to UTF-8
cyrus_unbind
简介
邮件相关扩展


简介

这些函数提供了可以操作 IMAP 以及 NNTP，POP3 和本地邮箱的方法。

注意，有些 IMAP 函数在 POP3 协议下将不能正常的工作。

IMAP
安装／配置
IMAP


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
IMAP


需求

This extension requires the c-client library to be installed. Grab the latest version from » ftp://ftp.cac.washington.edu/imap/ and compile it.

It's important that you do not copy the IMAP source files directly into the system include directory as there may be conflicts. Instead, create a new directory inside the system include directory, such as /usr/local/imap-2000b/ (location and name depend on your setup and IMAP version), and inside this new directory create additional directories named lib/ and include/. From the c-client directory from your IMAP source tree, copy all the *.h files into include/ and all the *.c files into lib/. Additionally when you compiled IMAP, a file named c-client.a was created. Also put this in the lib/ directory but rename it as libc-client.a.

Note:

To build the c-client library with SSL or/and Kerberos support read the docs supplied with the package.

Note: In Mandrake Linux, the IMAP library (libc-client.a) is compiled without Kerberos support. A separate version with SSL (client-PHP4.a) is installed. The library must be recompiled in order to add Kerberos support.

安装／配置
安装
安装／配置


安装

To get these functions to work, you have to compile PHP with --with-imap[=DIR] , where DIR is the c-client install prefix. From our example above, you would use --with-imap=/usr/local/imap-2000b . This location depends on where you created this directory according to the description above. Windows users may include the php_imap.dll DLL in php.ini.

IMAP is not supported on systems earlier than Windows 2000. This is because it uses encryption functions in order to enable SSL connections to the mail servers.

Note: Depending on how the c-client was configured, you might also need to add --with-imap-ssl=/path/to/openssl/ and/or --with-kerberos=/path/to/kerberos to the PHP configure line.

Warning

IMAP，recode，YAZ 和 Cyrus 扩展不能同时使用，因为它们共享了相同 的内部符号。注意：Yaz 2.0 及以上版本不存在此问题。

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

NIL (integer)
OP_DEBUG (integer)
OP_READONLY (integer)
Open mailbox read-only
OP_ANONYMOUS (integer)
Don't use or update a .newsrc for news (NNTP only)
OP_SHORTCACHE (integer)
OP_SILENT (integer)
OP_PROTOTYPE (integer)
OP_HALFOPEN (integer)
For IMAP and NNTP names, open a connection but don't open a mailbox.
OP_EXPUNGE (integer)
OP_SECURE (integer)
CL_EXPUNGE (integer)
silently expunge the mailbox before closing when calling imap_close()
FT_UID (integer)
The parameter is a UID
FT_PEEK (integer)
Do not set the \Seen flag if not already set
FT_NOT (integer)
FT_INTERNAL (integer)
The return string is in internal format, will not canonicalize to CRLF.
FT_PREFETCHTEXT (integer)
ST_UID (integer)
The sequence argument contains UIDs instead of sequence numbers
ST_SILENT (integer)
ST_SET (integer)
CP_UID (integer)
the sequence numbers contain UIDS
CP_MOVE (integer)
Delete the messages from the current mailbox after copying with imap_mail_copy()
SE_UID (integer)
Return UIDs instead of sequence numbers
SE_FREE (integer)
SE_NOPREFETCH (integer)
Don't prefetch searched messages
SO_FREE (integer)
SO_NOSERVER (integer)
SA_MESSAGES (integer)
SA_RECENT (integer)
SA_UNSEEN (integer)
SA_UIDNEXT (integer)
SA_UIDVALIDITY (integer)
SA_ALL (integer)
LATT_NOINFERIORS (integer)
This mailbox has no "children" (there are no mailboxes below this one).
LATT_NOSELECT (integer)
This is only a container, not a mailbox - you cannot open it.
LATT_MARKED (integer)
This mailbox is marked. Only used by UW-IMAPD.
LATT_UNMARKED (integer)
This mailbox is not marked. Only used by UW-IMAPD.
SORTDATE (integer)
Sort criteria for imap_sort(): message Date
SORTARRIVAL (integer)
Sort criteria for imap_sort(): arrival date
SORTFROM (integer)
Sort criteria for imap_sort(): mailbox in first From address
SORTSUBJECT (integer)
Sort criteria for imap_sort(): message subject
SORTTO (integer)
Sort criteria for imap_sort(): mailbox in first To address
SORTCC (integer)
Sort criteria for imap_sort(): mailbox in first cc address
SORTSIZE (integer)
Sort criteria for imap_sort(): size of message in octets
TYPETEXT (integer)
Primary body type: unformatted text
TYPEMULTIPART (integer)
Primary body type: multiple part
TYPEMESSAGE (integer)
Primary body type: encapsulated message
TYPEAPPLICATION (integer)
Primary body type: application data
TYPEAUDIO (integer)
Primary body type: audio
TYPEIMAGE (integer)
Primary body type: static image
TYPEVIDEO (integer)
Primary body type: video
TYPEMODEL (integer)
Primary body type: model
TYPEOTHER (integer)
Primary body type: unknown
ENC7BIT (integer)
Body encoding: 7 bit SMTP semantic data
ENC8BIT (integer)
Body encoding: 8 bit SMTP semantic data
ENCBINARY (integer)
Body encoding: 8 bit binary data
ENCBASE64 (integer)
Body encoding: base-64 encoded data
ENCQUOTEDPRINTABLE (integer)
Body encoding: human-readable 8-as-7 bit data
ENCOTHER (integer)
Body encoding: unknown
IMAP_OPENTIMEOUT (integer)
IMAP_READTIMEOUT (integer)
IMAP_WRITETIMEOUT (integer)
IMAP_CLOSETIMEOUT (integer)
LATT_REFERRAL (integer)
LATT_HASCHILDREN (integer)
LATT_HASNOCHILDREN (integer)
IMAP_GC_ELT (integer)
Garbage collector, clear message cache elements.
IMAP_GC_ENV (integer)
Garbage collector, clear envelopes and bodies.
IMAP_GC_TEXTS (integer)
Garbage collector, clear texts.
资源类型
IMAP 函数
IMAP


IMAP 函数

参见

This document can't go into detail on all the topics touched by the provided functions. Further information is provided by the documentation of the c-client library source (docs/internal.txt). and the following RFC documents:

  • » RFC2821: Simple Mail Transfer Protocol (SMTP).
  • » RFC2822: Standard for ARPA internet text messages.
  • » RFC2060: Internet Message Access Protocol (IMAP) Version 4rev1.
  • » RFC1939: Post Office Protocol Version 3 (POP3).
  • » RFC977: Network News Transfer Protocol (NNTP).
  • » RFC2076: Common Internet Message Headers.
  • » RFC2045 , » RFC2046 , » RFC2047 , » RFC2048 & » RFC2049: Multipurpose Internet Mail Extensions (MIME).
A detailed overview is also available in the books » Programming Internet Email by David Wood and » Managing IMAP by Dianna Mullet & Kevin Mullet.

Table of Contents

  • imap_8bit — Convert an 8bit string to a quoted-printable string
  • imap_alerts — Returns all IMAP alert messages that have occurred
  • imap_append — Append a string message to a specified mailbox
  • imap_base64 — Decode BASE64 encoded text
  • imap_binary — Convert an 8bit string to a base64 string
  • imap_body — Read the message body
  • imap_bodystruct — Read the structure of a specified body section of a specific message
  • imap_check — Check current mailbox
  • imap_clearflag_full — Clears flags on messages
  • imap_close — Close an IMAP stream
  • imap_create — 别名 imap_createmailbox
  • imap_createmailbox — Create a new mailbox
  • imap_delete — Mark a message for deletion from current mailbox
  • imap_deletemailbox — Delete a mailbox
  • imap_errors — Returns all of the IMAP errors that have occurred
  • imap_expunge — Delete all messages marked for deletion
  • imap_fetch_overview — Read an overview of the information in the headers of the given message
  • imap_fetchbody — Fetch a particular section of the body of the message
  • imap_fetchheader — Returns header for a message
  • imap_fetchmime — Fetch MIME headers for a particular section of the message
  • imap_fetchstructure — Read the structure of a particular message
  • imap_fetchtext — 别名 imap_body
  • imap_gc — Clears IMAP cache
  • imap_get_quota — Retrieve the quota level settings, and usage statics per mailbox
  • imap_get_quotaroot — Retrieve the quota settings per user
  • imap_getacl — Gets the ACL for a given mailbox
  • imap_getmailboxes — Read the list of mailboxes, returning detailed information on each one
  • imap_getsubscribed — List all the subscribed mailboxes
  • imap_header — 别名 imap_headerinfo
  • imap_headerinfo — Read the header of the message
  • imap_headers — Returns headers for all messages in a mailbox
  • imap_last_error — Gets the last IMAP error that occurred during this page request
  • imap_list — Read the list of mailboxes
  • imap_listmailbox — 别名 imap_list
  • imap_listscan — Returns the list of mailboxes that matches the given text
  • imap_listsubscribed — 别名 imap_lsub
  • imap_lsub — List all the subscribed mailboxes
  • imap_mail_compose — Create a MIME message based on given envelope and body sections
  • imap_mail_copy — Copy specified messages to a mailbox
  • imap_mail_move — Move specified messages to a mailbox
  • imap_mail — Send an email message
  • imap_mailboxmsginfo — Get information about the current mailbox
  • imap_mime_header_decode — Decode MIME header elements
  • imap_msgno — Gets the message sequence number for the given UID
  • imap_num_msg — Gets the number of messages in the current mailbox
  • imap_num_recent — Gets the number of recent messages in current mailbox
  • imap_open — Open an IMAP stream to a mailbox
  • imap_ping — Check if the IMAP stream is still active
  • imap_qprint — Convert a quoted-printable string to an 8 bit string
  • imap_rename — 别名 imap_renamemailbox
  • imap_renamemailbox — Rename an old mailbox to new mailbox
  • imap_reopen — Reopen IMAP stream to new mailbox
  • imap_rfc822_parse_adrlist — Parses an address string
  • imap_rfc822_parse_headers — Parse mail headers from a string
  • imap_rfc822_write_address — Returns a properly formatted email address given the mailbox, host, and personal info
  • imap_savebody — Save a specific body section to a file
  • imap_scan — 别名 imap_listscan
  • imap_scanmailbox — 别名 imap_listscan
  • imap_search — This function returns an array of messages matching the given search criteria
  • imap_set_quota — Sets a quota for a given mailbox
  • imap_setacl — Sets the ACL for a given mailbox
  • imap_setflag_full — Sets flags on messages
  • imap_sort — Gets and sort messages
  • imap_status — Returns status information on a mailbox
  • imap_subscribe — Subscribe to a mailbox
  • imap_thread — Returns a tree of threaded message
  • imap_timeout — Set or fetch imap timeout
  • imap_uid — This function returns the UID for the given message sequence number
  • imap_undelete — Unmark the message which is marked deleted
  • imap_unsubscribe — Unsubscribe from a mailbox
  • imap_utf7_decode — Decodes a modified UTF-7 encoded string
  • imap_utf7_encode — Converts ISO-8859-1 string to modified UTF-7 text
  • imap_utf8 — Converts MIME-encoded text to UTF-8
预定义常量
imap_8bit
IMAP


Convert an 8bit string to a quoted-printable string

IMAP 函数
imap_alerts
IMAP 函数
PHP Manual

imap_8bit

(PHP 4, PHP 5, PHP 7)

imap_8bit — Convert an 8bit string to a quoted-printable string

说明

string imap_8bit ( string $string )

Convert an 8bit string to a quoted-printable string (according to » RFC2045, section 6.7).

参数

string

The 8bit string to convert

返回值

Returns a quoted-printable string.

参见

  • imap_qprint() - Convert a quoted-printable string to an 8 bit string

IMAP 函数
imap_alerts
IMAP 函数


Returns all IMAP alert messages that have occurred

imap_8bit
imap_append
IMAP 函数
PHP Manual

imap_alerts

(PHP 4, PHP 5, PHP 7)

imap_alerts — Returns all IMAP alert messages that have occurred

说明

array imap_alerts ( void )

Returns all of the IMAP alert messages generated since the last imap_alerts() call, or the beginning of the page.

When imap_alerts() is called, the alert stack is subsequently cleared. The IMAP specification requires that these messages be passed to the user.

返回值

Returns an array of all of the IMAP alert messages generated or FALSE if no alert messages are available.

参见

  • imap_errors() - Returns all of the IMAP errors that have occurred

imap_8bit
imap_append
IMAP 函数


Append a string message to a specified mailbox

imap_alerts
imap_base64
IMAP 函数
PHP Manual

imap_append

(PHP 4, PHP 5, PHP 7)

imap_append — Append a string message to a specified mailbox

说明

bool imap_append ( resource $imap_stream , string $mailbox , string $message [, string $options = NULL [, string $internal_date = NULL ]] )

Appends a string message to the specified mailbox.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

mailbox

The mailbox name, see imap_open() for more information

message

The message to be append, as a string

When talking to the Cyrus IMAP server, you must use "\r\n" as your end-of-line terminator instead of "\n" or the operation will fail

options

If provided, the options will also be written to the mailbox

internal_date

If this parameter is set, it will set the INTERNALDATE on the appended message. The parameter should be a date string that conforms to the rfc2060 specifications for a date_time value.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.3.2 | Added INTERNALDATE support to imap_append.

范例

Example #1 imap_append() example

<?php
$stream = imap_open("{imap.example.org}INBOX.Drafts", "username", "password");

$check = imap_check($stream);
echo "Msg Count before append: ". $check->Nmsgs . "\n";

imap_append($stream, "{imap.example.org}INBOX.Drafts"
                   , "From: me@example.com\r\n"
                   . "To: you@example.com\r\n"
                   . "Subject: test\r\n"
                   . "\r\n"
                   . "this is a test message, please ignore\r\n"
                   );

$check = imap_check($stream);
echo "Msg Count after append : ". $check->Nmsgs . "\n";

imap_close($stream);
?>

imap_alerts
imap_base64
IMAP 函数


Decode BASE64 encoded text

imap_append
imap_binary
IMAP 函数
PHP Manual

imap_base64

(PHP 4, PHP 5, PHP 7)

imap_base64 — Decode BASE64 encoded text

说明

string imap_base64 ( string $text )

Decodes the given BASE-64 encoded text.

参数

text

The encoded text

返回值

Returns the decoded message as a string.

参见

  • imap_binary() - Convert an 8bit string to a base64 string
  • base64_encode() - 使用 MIME base64 对数据进行编码
  • base64_decode() - 对使用 MIME base64 编码的数据进行解码
  • » RFC2045, Section 6.8

imap_append
imap_binary
IMAP 函数


Convert an 8bit string to a base64 string

imap_base64
imap_body
IMAP 函数
PHP Manual

imap_binary

(PHP 4, PHP 5, PHP 7)

imap_binary — Convert an 8bit string to a base64 string

说明

string imap_binary ( string $string )

Convert an 8bit string to a base64 string according to » RFC2045, Section 6.8.

参数

string

The 8bit string

返回值

Returns a base64 encoded string.

参见

  • imap_base64() - Decode BASE64 encoded text

imap_base64
imap_body
IMAP 函数


Read the message body

imap_binary
imap_bodystruct
IMAP 函数
PHP Manual

imap_body

(PHP 4, PHP 5, PHP 7)

imap_body — Read the message body

说明

string imap_body ( resource $imap_stream , int $msg_number [, int $options = 0 ] )

imap_body() returns the body of the message, numbered msg_number in the current mailbox.

imap_body() will only return a verbatim copy of the message body. To extract single parts of a multipart MIME-encoded message you have to use imap_fetchstructure() to analyze its structure and imap_fetchbody() to extract a copy of a single body component.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

msg_number

The message number

options

The optional options are a bit mask with one or more of the following:

  • FT_UID - The msg_number is a UID
  • FT_PEEK - Do not set the \Seen flag if not already set
  • FT_INTERNAL - The return string is in internal format, will not canonicalize to CRLF.

返回值

Returns the body of the specified message, as a string.

imap_binary
imap_bodystruct
IMAP 函数


Read the structure of a specified body section of a specific message

imap_body
imap_check
IMAP 函数
PHP Manual

imap_bodystruct

(PHP 4, PHP 5, PHP 7)

imap_bodystruct — Read the structure of a specified body section of a specific message

说明

object imap_bodystruct ( resource $imap_stream , int $msg_number , string $section )

Read the structure of a specified body section of a specific message.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

msg_number

The message number

section

The body section to read

返回值

Returns the information in an object, for a detailed description of the object structure and properties see imap_fetchstructure().

参见

  • imap_fetchstructure() - Read the structure of a particular message

imap_body
imap_check
IMAP 函数


Check current mailbox

imap_bodystruct
imap_clearflag_full
IMAP 函数
PHP Manual

imap_check

(PHP 4, PHP 5, PHP 7)

imap_check — Check current mailbox

说明

object imap_check ( resource $imap_stream )

Checks information about the current mailbox.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

返回值

Returns the information in an object with following properties:

  • Date - current system time formatted according to » RFC2822
  • Driver - protocol used to access this mailbox: POP3, IMAP, NNTP
  • Mailbox - the mailbox name
  • Nmsgs - number of messages in the mailbox
  • Recent - number of recent messages in the mailbox

Returns FALSE on failure.

范例

Example #1 imap_check() example

<?php

$imap_obj = imap_check($imap_stream);
var_dump($imap_obj);

?>

以上例程的输出类似于：

object(stdClass)(5) {
  ["Date"]=>
  string(37) "Wed, 10 Dec 2003 17:56:54 +0100 (CET)"
  ["Driver"]=>
  string(4) "imap"
  ["Mailbox"]=>
  string(54)
  "{www.example.com:143/imap/user="foo@example.com"}INBOX"
  ["Nmsgs"]=>
  int(1)
  ["Recent"]=>
  int(0)
}

imap_bodystruct
imap_clearflag_full
IMAP 函数


Clears flags on messages

imap_check
imap_close
IMAP 函数
PHP Manual

imap_clearflag_full

(PHP 4, PHP 5, PHP 7)

imap_clearflag_full — Clears flags on messages

说明

bool imap_clearflag_full ( resource $imap_stream , string $sequence , string $flag [, int $options = 0 ] )

This function causes a store to delete the specified flag to the flags set for the messages in the specified sequence.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

sequence

A sequence of message numbers. You can enumerate desired messages with the X,Y syntax, or retrieve all messages within an interval with the X:Y syntax

flag

The flags which you can unset are "\\Seen", "\\Answered", "\\Flagged", "\\Deleted", and "\\Draft" (as defined by » RFC2060)

options

options are a bit mask and may contain the single option:

  • ST_UID - The sequence argument contains UIDs instead of sequence numbers

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • imap_setflag_full() - Sets flags on messages

imap_check
imap_close
IMAP 函数


Close an IMAP stream

imap_clearflag_full
imap_create
IMAP 函数
PHP Manual

imap_close

(PHP 4, PHP 5, PHP 7)

imap_close — Close an IMAP stream

说明

bool imap_close ( resource $imap_stream [, int $flag = 0 ] )

Closes the imap stream.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

flag

If set to CL_EXPUNGE, the function will silently expunge the mailbox before closing, removing all messages marked for deletion. You can achieve the same thing by using imap_expunge()

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • imap_open() - Open an IMAP stream to a mailbox

imap_clearflag_full
imap_create
IMAP 函数


别名 imap_createmailbox

imap_close
imap_createmailbox
IMAP 函数
PHP Manual

imap_create

(PHP 4, PHP 5, PHP 7)

imap_create — 别名 imap_createmailbox()

说明

此函数是该函数的别名： imap_createmailbox().

imap_close
imap_createmailbox
IMAP 函数


Create a new mailbox

imap_create
imap_delete
IMAP 函数
PHP Manual

imap_createmailbox

(PHP 4, PHP 5, PHP 7)

imap_createmailbox — Create a new mailbox

说明

bool imap_createmailbox ( resource $imap_stream , string $mailbox )

Creates a new mailbox specified by mailbox.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

mailbox

The mailbox name, see imap_open() for more information. Names containing international characters should be encoded by imap_utf7_encode()

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 imap_createmailbox() example

<?php
$mbox = imap_open("{imap.example.org}", "username", "password", OP_HALFOPEN)
     or die("can't connect: " . imap_last_error());

$name1 = "phpnewbox";
$name2 = imap_utf7_encode("phpnewb?x"); // phpnewb&w7Y-x

$newname = $name1;

echo "Newname will be '$name1'<br />\n";

// we will now create a new mailbox "phptestbox" in your inbox folder,
// check its status after creation and finally remove it to restore
// your inbox to its initial state

if (@imap_createmailbox($mbox, imap_utf7_encode("{imap.example.org}INBOX.$newname"))) {
    $status = @imap_status($mbox, "{imap.example.org}INBOX.$newname", SA_ALL);
    if ($status) {
        echo "your new mailbox '$name1' has the following status:<br />\n";
        echo "Messages:   " . $status->messages    . "<br />\n";
        echo "Recent:     " . $status->recent      . "<br />\n";
        echo "Unseen:     " . $status->unseen      . "<br />\n";
        echo "UIDnext:    " . $status->uidnext     . "<br />\n";
        echo "UIDvalidity:" . $status->uidvalidity . "<br />\n";

        if (imap_renamemailbox($mbox, "{imap.example.org}INBOX.$newname", "{imap.example.org}INBOX.$name2")) {
            echo "renamed new mailbox from '$name1' to '$name2'<br />\n";
            $newname = $name2;
        } else {
            echo "imap_renamemailbox on new mailbox failed: " . imap_last_error() . "<br />\n";
        }
    } else {
        echo "imap_status on new mailbox failed: " . imap_last_error() . "<br />\n";
    }

    if (@imap_deletemailbox($mbox, "{imap.example.org}INBOX.$newname")) {
        echo "new mailbox removed to restore initial state<br />\n";
    } else {
        echo "imap_deletemailbox on new mailbox failed: " . implode("<br />\n", imap_errors()) . "<br />\n";
    }

} else {
    echo "could not create new mailbox: " . implode("<br />\n", imap_errors()) . "<br />\n";
}

imap_close($mbox);
?>

参见

  • imap_renamemailbox() - Rename an old mailbox to new mailbox
  • imap_deletemailbox() - Delete a mailbox

imap_create
imap_delete
IMAP 函数


Mark a message for deletion from current mailbox

imap_createmailbox
imap_deletemailbox
IMAP 函数
PHP Manual

imap_delete

(PHP 4, PHP 5, PHP 7)

imap_delete — Mark a message for deletion from current mailbox

说明

bool imap_delete ( resource $imap_stream , int $msg_number [, int $options = 0 ] )

Marks messages listed in msg_number for deletion. Messages marked for deletion will stay in the mailbox until either imap_expunge() is called or imap_close() is called with the optional parameter CL_EXPUNGE.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

msg_number

The message number

options

You can set the FT_UID which tells the function to treat the msg_number argument as an UID.

返回值

Returns TRUE.

范例

Example #1 imap_delete() example

<?php

$mbox = imap_open("{imap.example.org}INBOX", "username", "password")
    or die("Can't connect: " . imap_last_error());

$check = imap_mailboxmsginfo($mbox);
echo "Messages before delete: " . $check->Nmsgs . "<br />\n";

imap_delete($mbox, 1);

$check = imap_mailboxmsginfo($mbox);
echo "Messages after  delete: " . $check->Nmsgs . "<br />\n";

imap_expunge($mbox);

$check = imap_mailboxmsginfo($mbox);
echo "Messages after expunge: " . $check->Nmsgs . "<br />\n";

imap_close($mbox);
?>

注释

Note:

IMAP mailboxes may not have their message flags saved between connections, so imap_expunge() should be called during the same connection in order to guarantee that messages marked for deletion will actually be purged.

参见

  • imap_undelete() - Unmark the message which is marked deleted
  • imap_expunge() - Delete all messages marked for deletion
  • imap_close() - Close an IMAP stream

imap_createmailbox
imap_deletemailbox
IMAP 函数


Delete a mailbox

imap_delete
imap_errors
IMAP 函数
PHP Manual

imap_deletemailbox

(PHP 4, PHP 5, PHP 7)

imap_deletemailbox — Delete a mailbox

说明

bool imap_deletemailbox ( resource $imap_stream , string $mailbox )

Deletes the specified mailbox.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

mailbox

The mailbox name, see imap_open() for more information

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • imap_createmailbox() - Create a new mailbox
  • imap_renamemailbox() - Rename an old mailbox to new mailbox
  • imap_open() - Open an IMAP stream to a mailbox for the format of mbox

imap_delete
imap_errors
IMAP 函数


Returns all of the IMAP errors that have occurred

imap_deletemailbox
imap_expunge
IMAP 函数
PHP Manual

imap_errors

(PHP 4, PHP 5, PHP 7)

imap_errors — Returns all of the IMAP errors that have occurred

说明

array imap_errors ( void )

Gets all of the IMAP errors (if any) that have occurred during this page request or since the error stack was reset.

When imap_errors() is called, the error stack is subsequently cleared.

返回值

This function returns an array of all of the IMAP error messages generated since the last imap_errors() call, or the beginning of the page. Returns FALSE if no error messages are available.

参见

  • imap_last_error() - Gets the last IMAP error that occurred during this page request
  • imap_alerts() - Returns all IMAP alert messages that have occurred

imap_deletemailbox
imap_expunge
IMAP 函数


Delete all messages marked for deletion

imap_errors
imap_fetch_overview
IMAP 函数
PHP Manual

imap_expunge

(PHP 4, PHP 5, PHP 7)

imap_expunge — Delete all messages marked for deletion

说明

bool imap_expunge ( resource $imap_stream )

Deletes all the messages marked for deletion by imap_delete(), imap_mail_move(), or imap_setflag_full().

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

返回值

Returns TRUE.

imap_errors
imap_fetch_overview
IMAP 函数


Read an overview of the information in the headers of the given message

imap_expunge
imap_fetchbody
IMAP 函数
PHP Manual

imap_fetch_overview

(PHP 4, PHP 5, PHP 7)

imap_fetch_overview — Read an overview of the information in the headers of the given message

说明

array imap_fetch_overview ( resource $imap_stream , string $sequence [, int $options = 0 ] )

This function fetches mail headers for the given sequence and returns an overview of their contents.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

sequence

A message sequence description. You can enumerate desired messages with the X,Y syntax, or retrieve all messages within an interval with the X:Y syntax

options

sequence will contain a sequence of message indices or UIDs, if this parameter is set to FT_UID.

返回值

Returns an array of objects describing one message header each. The object will only define a property if it exists. The possible properties are:

  • subject - the messages subject
  • from - who sent it
  • to - recipient
  • date - when was it sent
  • message_id - Message-ID
  • references - is a reference to this message id
  • in_reply_to - is a reply to this message id
  • size - size in bytes
  • uid - UID the message has in the mailbox
  • msgno - message sequence number in the mailbox
  • recent - this message is flagged as recent
  • flagged - this message is flagged
  • answered - this message is flagged as answered
  • deleted - this message is flagged for deletion
  • seen - this message is flagged as already read
  • draft - this message is flagged as being a draft
  • update - the UNIX timestamp of the arrival date

更新日志

版本 | 说明
5.3.3 | Add the update property.

范例

Example #1 imap_fetch_overview() example

<?php
$mbox = imap_open("{imap.example.org:143}INBOX", "username", "password")
     or die("can't connect: " . imap_last_error());

$MC = imap_check($mbox);

// Fetch an overview for all messages in INBOX
$result = imap_fetch_overview($mbox,"1:{$MC->Nmsgs}",0);
foreach ($result as $overview) {
    echo "#{$overview->msgno} ({$overview->date}) - From: {$overview->from}
    {$overview->subject}\n";
}
imap_close($mbox);
?>

参见

  • imap_fetchheader() - Returns header for a message

imap_expunge
imap_fetchbody
IMAP 函数


Fetch a particular section of the body of the message

imap_fetch_overview
imap_fetchheader
IMAP 函数
PHP Manual

imap_fetchbody

(PHP 4, PHP 5, PHP 7)

imap_fetchbody — Fetch a particular section of the body of the message

说明

string imap_fetchbody ( resource $imap_stream , int $msg_number , string $section [, int $options = 0 ] )

Fetch of a particular section of the body of the specified messages. Body parts are not decoded by this function.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

msg_number

The message number

section

The part number. It is a string of integers delimited by period which index into a body part list as per the IMAP4 specification

options

A bitmask with one or more of the following:

  • FT_UID - The msg_number is a UID
  • FT_PEEK - Do not set the \Seen flag if not already set
  • FT_INTERNAL - The return string is in internal format, will not canonicalize to CRLF.

返回值

Returns a particular section of the body of the specified messages as a text string.

参见

  • imap_savebody() - Save a specific body section to a file
  • imap_fetchstructure() - Read the structure of a particular message

imap_fetch_overview
imap_fetchheader
IMAP 函数


Returns header for a message

imap_fetchbody
imap_fetchmime
IMAP 函数
PHP Manual

imap_fetchheader

(PHP 4, PHP 5, PHP 7)

imap_fetchheader — Returns header for a message

说明

string imap_fetchheader ( resource $imap_stream , int $msg_number [, int $options = 0 ] )

This function causes a fetch of the complete, unfiltered » RFC2822 format header of the specified message.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

msg_number

The message number

options

The possible options are:

  • FT_UID - The msgno argument is a UID
  • FT_INTERNAL - The return string is in "internal" format, without any attempt to canonicalize to CRLF newlines
  • FT_PREFETCHTEXT - The RFC822.TEXT should be pre-fetched at the same time. This avoids an extra RTT on an IMAP connection if a full message text is desired (e.g. in a "save to local file" operation)

返回值

Returns the header of the specified message as a text string.

参见

  • imap_fetch_overview() - Read an overview of the information in the headers of the given message

imap_fetchbody
imap_fetchmime
IMAP 函数


Fetch MIME headers for a particular section of the message

imap_fetchheader
imap_fetchstructure
IMAP 函数
PHP Manual

imap_fetchmime

(PHP 5 >= 5.3.6, PHP 7)

imap_fetchmime — Fetch MIME headers for a particular section of the message

说明

string imap_fetchmime ( resource $imap_stream , int $msg_number , string $section [, int $options = 0 ] )

Fetch the MIME headers of a particular section of the body of the specified messages.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

msg_number

The message number

section

The part number. It is a string of integers delimited by period which index into a body part list as per the IMAP4 specification

options

A bitmask with one or more of the following:

  • FT_UID - The msg_number is a UID
  • FT_PEEK - Do not set the \Seen flag if not already set
  • FT_INTERNAL - The return string is in internal format, will not canonicalize to CRLF.

返回值

Returns the MIME headers of a particular section of the body of the specified messages as a text string.

参见

  • imap_fetchbody() - Fetch a particular section of the body of the message
  • imap_fetchstructure() - Read the structure of a particular message
  • imap_fetchheader() - Returns header for a message

imap_fetchheader
imap_fetchstructure
IMAP 函数


Read the structure of a particular message

imap_fetchmime
imap_fetchtext
IMAP 函数
PHP Manual

imap_fetchstructure

(PHP 4, PHP 5, PHP 7)

imap_fetchstructure — Read the structure of a particular message

说明

object imap_fetchstructure ( resource $imap_stream , int $msg_number [, int $options = 0 ] )

Fetches all the structured information for a given message.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

msg_number

The message number

options

This optional parameter only has a single option, FT_UID, which tells the function to treat the msg_number argument as a UID.

返回值

Returns an object includes the envelope, internal date, size, flags and body structure along with a similar object for each mime attachment. The structure of the returned objects is as follows:

Returned Objects for imap_fetchstructure()
type | Primary body type
encoding | Body transfer encoding
ifsubtype | TRUE if there is a subtype string
subtype | MIME subtype
ifdescription | TRUE if there is a description string
description | Content description string
ifid | TRUE if there is an identification string
id | Identification string
lines | Number of lines
bytes | Number of bytes
ifdisposition | TRUE if there is a disposition string
disposition | Disposition string
ifdparameters | TRUE if the dparameters array exists
dparameters | An array of objects where each object has an "attribute" and a "value" property corresponding to the parameters on the Content-disposition MIME header.
ifparameters | TRUE if the parameters array exists
parameters | An array of objects where each object has an "attribute" and a "value" property.
parts | An array of objects identical in structure to the top-level object, each of which corresponds to a MIME body part.

Primary body type (value may vary with used library, use of constants is recommended)
Value | Type | Constant
0 | text | TYPETEXT
1 | multipart | TYPEMULTIPART
2 | message | TYPEMESSAGE
3 | application | TYPEAPPLICATION
4 | audio | TYPEAUDIO
5 | image | TYPEIMAGE
6 | video | TYPEVIDEO
7 | model | TYPEMODEL
8 | other | TYPEOTHER

Transfer encodings (value may vary with used library, use of constants is recommended)
Value | Type | Constant
0 | 7bit | ENC7BIT
1 | 8bit | ENC8BIT
2 | Binary | ENCBINARY
3 | Base64 | ENCBASE64
4 | Quoted-Printable | ENCQUOTEDPRINTABLE
5 | other | ENCOTHER

参见

  • imap_fetchbody() - Fetch a particular section of the body of the message
  • imap_bodystruct() - Read the structure of a specified body section of a specific message

imap_fetchmime
imap_fetchtext
IMAP 函数


别名 imap_body

imap_fetchstructure
imap_gc
IMAP 函数
PHP Manual

imap_fetchtext

(PHP 4, PHP 5, PHP 7)

imap_fetchtext — 别名 imap_body()

说明

此函数是该函数的别名： imap_body().

imap_fetchstructure
imap_gc
IMAP 函数


Clears IMAP cache

imap_fetchtext
imap_get_quota
IMAP 函数
PHP Manual

imap_gc

(PHP 5 >= 5.3.0, PHP 7)

imap_gc — Clears IMAP cache

说明

bool imap_gc ( resource $imap_stream , int $caches )

Purges the cache of entries of a specific type.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

caches

Specifies the cache to purge. It may one or a combination of the following constants: IMAP_GC_ELT (message cache elements), IMAP_GC_ENV (envelope and bodies), IMAP_GC_TEXTS (texts).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 imap_gc() example

<?php

$mbox = imap_open("{imap.example.org:143}", "username", "password");

imap_gc($mbox, IMAP_GC_ELT);

?>

imap_fetchtext
imap_get_quota
IMAP 函数


Retrieve the quota level settings, and usage statics per mailbox

imap_gc
imap_get_quotaroot
IMAP 函数
PHP Manual

imap_get_quota

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

imap_get_quota — Retrieve the quota level settings, and usage statics per mailbox

说明

array imap_get_quota ( resource $imap_stream , string $quota_root )

Retrieve the quota level settings, and usage statics per mailbox.

For a non-admin user version of this function, please see the imap_get_quotaroot() function of PHP.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

quota_root

quota_root should normally be in the form of user.name where name is the mailbox you wish to retrieve information about.

返回值

Returns an array with integer values limit and usage for the given mailbox. The value of limit represents the total amount of space allowed for this mailbox. The usage value represents the mailboxes current level of capacity. Will return FALSE in the case of failure.

As of PHP 4.3, the function more properly reflects the functionality as dictated by the » RFC2087. The array return value has changed to support an unlimited number of returned resources (i.e. messages, or sub-folders) with each named resource receiving an individual array key. Each key value then contains an another array with the usage and limit values within it.

For backwards compatibility reasons, the original access methods are still available for use, although it is suggested to update.

范例

Example #1 imap_get_quota() example

<?php
$mbox = imap_open("{imap.example.org}", "mailadmin", "password", OP_HALFOPEN)
      or die("can't connect: " . imap_last_error());

$quota_value = imap_get_quota($mbox, "user.kalowsky");
if (is_array($quota_value)) {
    echo "Usage level is: " . $quota_value['usage'];
    echo "Limit level is: " . $quota_value['limit'];
}

imap_close($mbox);
?>

Example #2 imap_get_quota() 4.3 or greater example

<?php
$mbox = imap_open("{imap.example.org}", "mailadmin", "password", OP_HALFOPEN)
      or die("can't connect: " . imap_last_error());

$quota_values = imap_get_quota($mbox, "user.kalowsky");
if (is_array($quota_values)) {
   $storage = $quota_values['STORAGE'];
   echo "STORAGE usage level is: " .  $storage['usage'];
   echo "STORAGE limit level is: " .  $storage['limit'];

   $message = $quota_values['MESSAGE'];
   echo "MESSAGE usage level is: " .  $message['usage'];
   echo "MESSAGE limit is: " .  $message['limit'];

   /* ...  */
}

imap_close($mbox);
?>

注释

This function is currently only available to users of the c-client2000 or greater library.

The given imap_stream must be opened as the mail administrator, otherwise this function will fail.

参见

  • imap_open() - Open an IMAP stream to a mailbox
  • imap_set_quota() - Sets a quota for a given mailbox
  • imap_get_quotaroot() - Retrieve the quota settings per user

imap_gc
imap_get_quotaroot
IMAP 函数


Retrieve the quota settings per user

imap_get_quota
imap_getacl
IMAP 函数
PHP Manual

imap_get_quotaroot

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

imap_get_quotaroot — Retrieve the quota settings per user

说明

array imap_get_quotaroot ( resource $imap_stream , string $quota_root )

Retrieve the quota settings per user. The limit value represents the total amount of space allowed for this user's total mailbox usage. The usage value represents the user's current total mailbox capacity.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

quota_root

quota_root should normally be in the form of which mailbox (i.e. INBOX).

返回值

Returns an array of integer values pertaining to the specified user mailbox. All values contain a key based upon the resource name, and a corresponding array with the usage and limit values within.

This function will return FALSE in the case of call failure, and an array of information about the connection upon an un-parsable response from the server.

范例

Example #1 imap_get_quotaroot() example

<?php
$mbox = imap_open("{imap.example.org}", "kalowsky", "password", OP_HALFOPEN)
      or die("can't connect: " . imap_last_error());

$quota = imap_get_quotaroot($mbox, "INBOX");
if (is_array($quota)) {
   $storage = $quota['STORAGE'];
   echo "STORAGE usage level is: " .  $storage['usage'];
   echo "STORAGE limit level is: " .  $storage['limit'];

   $message = $quota['MESSAGE'];
   echo "MESSAGE usage level is: " .  $message['usage'];
   echo "MESSAGE limit level is: " .  $message['limit'];

   /* ...  */

}

imap_close($mbox);
?>

注释

This function is currently only available to users of the c-client2000 or greater library.

The imap_stream should be opened as the user whose mailbox you wish to check.

参见

  • imap_open() - Open an IMAP stream to a mailbox
  • imap_set_quota() - Sets a quota for a given mailbox
  • imap_get_quota() - Retrieve the quota level settings, and usage statics per mailbox

imap_get_quota
imap_getacl
IMAP 函数


Gets the ACL for a given mailbox

imap_get_quotaroot
imap_getmailboxes
IMAP 函数
PHP Manual

imap_getacl

(PHP 5, PHP 7)

imap_getacl — Gets the ACL for a given mailbox

说明

array imap_getacl ( resource $imap_stream , string $mailbox )

Gets the ACL for a given mailbox.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

mailbox

The mailbox name, see imap_open() for more information

返回值

Returns an associative array of "folder" => "acl" pairs.

范例

Example #1 imap_getacl() example

<?php

print_r(imap_getacl($conn_id, 'user.joecool'));

?>

以上例程的输出类似于：

Array
(
    [asubfolder] => lrswipcda
    [anothersubfolder] => lrswipcda
)

注释

This function is currently only available to users of the c-client2000 or greater library.

参见

  • imap_setacl() - Sets the ACL for a given mailbox

imap_get_quotaroot
imap_getmailboxes
IMAP 函数


Read the list of mailboxes, returning detailed information on each one

imap_getacl
imap_getsubscribed
IMAP 函数
PHP Manual

imap_getmailboxes

(PHP 4, PHP 5, PHP 7)

imap_getmailboxes — Read the list of mailboxes, returning detailed information on each one

说明

array imap_getmailboxes ( resource $imap_stream , string $ref , string $pattern )

Gets information on the mailboxes.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

ref

ref should normally be just the server specification as described in imap_open()

pattern

指定在邮箱层级的何处开始查找。

在组成 pattern 的字符中可使用两个特殊字符： '*' 和 '%'。 '*' 是指返回所有邮箱目录. 如果将 '*' 作为 pattern 参数时, 则会返回整个邮箱层级结构。 '%' 是指只返回当前级次。 '%' 作为 pattern 参数则只会返回顶层邮箱； '~/mail/%' 用于 UW_IMAPD 则会返回名为 ~/mail 的目录, 但不包含其子目录。

返回值

Returns an array of objects containing mailbox information. Each object has the attributes name, specifying the full name of the mailbox; delimiter, which is the hierarchy delimiter for the part of the hierarchy this mailbox is in; and attributes. Attributes is a bitmask that can be tested against:

  • LATT_NOINFERIORS - This mailbox not contains, and may not contain any "children" (there are no mailboxes below this one). Calling imap_createmailbox() will not work on this mailbox.

  • LATT_NOSELECT - This is only a container, not a mailbox - you cannot open it.

  • LATT_MARKED - This mailbox is marked. This means that it may contain new messages since the last time it was checked. Not provided by all IMAP servers.

  • LATT_UNMARKED - This mailbox is not marked, does not contain new messages. If either MARKED or UNMARKED is provided, you can assume the IMAP server supports this feature for this mailbox.

范例

Example #1 imap_getmailboxes() example

<?php
$mbox = imap_open("{imap.example.org}", "username", "password", OP_HALFOPEN)
      or die("can't connect: " . imap_last_error());

$list = imap_getmailboxes($mbox, "{imap.example.org}", "*");
if (is_array($list)) {
    foreach ($list as $key => $val) {
        echo "($key) ";
        echo imap_utf7_decode($val->name) . ",";
        echo "'" . $val->delimiter . "',";
        echo $val->attributes . "<br />\n";
    }
} else {
    echo "imap_getmailboxes failed: " . imap_last_error() . "\n";
}

imap_close($mbox);
?>

参见

  • imap_getsubscribed() - List all the subscribed mailboxes

imap_getacl
imap_getsubscribed
IMAP 函数


List all the subscribed mailboxes

imap_getmailboxes
imap_header
IMAP 函数
PHP Manual

imap_getsubscribed

(PHP 4, PHP 5, PHP 7)

imap_getsubscribed — List all the subscribed mailboxes

说明

array imap_getsubscribed ( resource $imap_stream , string $ref , string $pattern )

Gets information about the subscribed mailboxes.

Identical to imap_getmailboxes(), except that it only returns mailboxes that the user is subscribed to.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

ref

ref should normally be just the server specification as described in imap_open()

pattern

指定在邮箱层级的何处开始查找。

在组成 pattern 的字符中可使用两个特殊字符： '*' 和 '%'。 '*' 是指返回所有邮箱目录. 如果将 '*' 作为 pattern 参数时, 则会返回整个邮箱层级结构。 '%' 是指只返回当前级次。 '%' 作为 pattern 参数则只会返回顶层邮箱； '~/mail/%' 用于 UW_IMAPD 则会返回名为 ~/mail 的目录, 但不包含其子目录。

返回值

Returns an array of objects containing mailbox information. Each object has the attributes name, specifying the full name of the mailbox; delimiter, which is the hierarchy delimiter for the part of the hierarchy this mailbox is in; and attributes. Attributes is a bitmask that can be tested against:

  • LATT_NOINFERIORS - This mailbox has no "children" (there are no mailboxes below this one).
  • LATT_NOSELECT - This is only a container, not a mailbox - you cannot open it.
  • LATT_MARKED - This mailbox is marked. Only used by UW-IMAPD.
  • LATT_UNMARKED - This mailbox is not marked. Only used by UW-IMAPD.

imap_getmailboxes
imap_header
IMAP 函数


别名 imap_headerinfo

imap_getsubscribed
imap_headerinfo
IMAP 函数
PHP Manual

imap_header

(PHP 4, PHP 5, PHP 7)

imap_header — 别名 imap_headerinfo()

说明

此函数是该函数的别名： imap_headerinfo().

imap_getsubscribed
imap_headerinfo
IMAP 函数


Read the header of the message

imap_header
imap_headers
IMAP 函数
PHP Manual

imap_headerinfo

(PHP 4, PHP 5, PHP 7)

imap_headerinfo — Read the header of the message

说明

object imap_headerinfo ( resource $imap_stream , int $msg_number [, int $fromlength = 0 [, int $subjectlength = 0 [, string $defaulthost = NULL ]]] )

Gets information about the given message number by reading its headers.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

msg_number

The message number

fromlength

Number of characters for the fetchfrom property. Must be greater than or equal to zero.

subjectlength

Number of characters for the fetchsubject property Must be greater than or equal to zero.

defaulthost

返回值

Returns the information in an object with following properties:

  • toaddress - full to: line, up to 1024 characters
  • to - an array of objects from the To: line, with the following properties: personal, adl, mailbox, and host
  • fromaddress - full from: line, up to 1024 characters
  • from - an array of objects from the From: line, with the following properties: personal, adl, mailbox, and host
  • ccaddress - full cc: line, up to 1024 characters
  • cc - an array of objects from the Cc: line, with the following properties: personal, adl, mailbox, and host
  • bccaddress - full bcc: line, up to 1024 characters
  • bcc - an array of objects from the Bcc: line, with the following properties: personal, adl, mailbox, and host
  • reply_toaddress - full Reply-To: line, up to 1024 characters
  • reply_to - an array of objects from the Reply-To: line, with the following properties: personal, adl, mailbox, and host
  • senderaddress - full sender: line, up to 1024 characters
  • sender - an array of objects from the Sender: line, with the following properties: personal, adl, mailbox, and host
  • return_pathaddress - full Return-Path: line, up to 1024 characters
  • return_path - an array of objects from the Return-Path: line, with the following properties: personal, adl, mailbox, and host
  • remail -
  • date - The message date as found in its headers
  • Date - Same as date
  • subject - The message subject
  • Subject - Same as subject
  • in_reply_to -
  • message_id -
  • newsgroups -
  • followup_to -
  • references -
  • Recent - R if recent and seen, N if recent and not seen, ' ' if not recent.
  • Unseen - U if not seen AND not recent, ' ' if seen OR not seen and recent
  • Flagged - F if flagged, ' ' if not flagged
  • Answered - A if answered, ' ' if unanswered
  • Deleted - D if deleted, ' ' if not deleted
  • Draft - X if draft, ' ' if not draft
  • Msgno - The message number
  • MailDate -
  • Size - The message size
  • udate - mail message date in Unix time
  • fetchfrom - from line formatted to fit fromlength characters
  • fetchsubject - subject line formatted to fit subjectlength characters

参见

  • imap_fetch_overview() - Read an overview of the information in the headers of the given message

imap_header
imap_headers
IMAP 函数


Returns headers for all messages in a mailbox

imap_headerinfo
imap_last_error
IMAP 函数
PHP Manual

imap_headers

(PHP 4, PHP 5, PHP 7)

imap_headers — Returns headers for all messages in a mailbox

说明

array imap_headers ( resource $imap_stream )

Returns headers for all messages in a mailbox.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

返回值

Returns an array of string formatted with header info. One element per mail message.

imap_headerinfo
imap_last_error
IMAP 函数


Gets the last IMAP error that occurred during this page request

imap_headers
imap_list
IMAP 函数
PHP Manual

imap_last_error

(PHP 4, PHP 5, PHP 7)

imap_last_error — Gets the last IMAP error that occurred during this page request

说明

string imap_last_error ( void )

Gets the full text of the last IMAP error message that occurred on the current page. The error stack is untouched; calling imap_last_error() subsequently, with no intervening errors, will return the same error.

返回值

Returns the full text of the last IMAP error message that occurred on the current page. Returns FALSE if no error messages are available.

参见

  • imap_errors() - Returns all of the IMAP errors that have occurred

imap_headers
imap_list
IMAP 函数


Read the list of mailboxes

imap_last_error
imap_listmailbox
IMAP 函数
PHP Manual

imap_list

(PHP 4, PHP 5, PHP 7)

imap_list — Read the list of mailboxes

说明

array imap_list ( resource $imap_stream , string $ref , string $pattern )

Read the list of mailboxes.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

ref

ref should normally be just the server specification as described in imap_open().

pattern

指定在邮箱层级的何处开始查找。

在组成 pattern 的字符中可使用两个特殊字符： '*' 和 '%'。 '*' 是指返回所有邮箱目录. 如果将 '*' 作为 pattern 参数时, 则会返回整个邮箱层级结构。 '%' 是指只返回当前级次。 '%' 作为 pattern 参数则只会返回顶层邮箱； '~/mail/%' 用于 UW_IMAPD 则会返回名为 ~/mail 的目录, 但不包含其子目录。

返回值

Returns an array containing the names of the mailboxes.

范例

Example #1 imap_list() example

<?php
$mbox = imap_open("{imap.example.org}", "username", "password", OP_HALFOPEN)
      or die("can't connect: " . imap_last_error());

$list = imap_list($mbox, "{imap.example.org}", "*");
if (is_array($list)) {
    foreach ($list as $val) {
        echo imap_utf7_decode($val) . "\n";
    }
} else {
    echo "imap_list failed: " . imap_last_error() . "\n";
}

imap_close($mbox);
?>

参见

  • imap_getmailboxes() - Read the list of mailboxes, returning detailed information on each one
  • imap_lsub() - List all the subscribed mailboxes

imap_last_error
imap_listmailbox
IMAP 函数


别名 imap_list

imap_list
imap_listscan
IMAP 函数
PHP Manual

imap_listmailbox

(PHP 4, PHP 5, PHP 7)

imap_listmailbox — 别名 imap_list()

说明

此函数是该函数的别名： imap_list().

imap_list
imap_listscan
IMAP 函数


Returns the list of mailboxes that matches the given text

imap_listmailbox
imap_listsubscribed
IMAP 函数
PHP Manual

imap_listscan

(PHP 4, PHP 5, PHP 7)

imap_listscan — Returns the list of mailboxes that matches the given text

说明

array imap_listscan ( resource $imap_stream , string $ref , string $pattern , string $content )

Returns an array containing the names of the mailboxes that have content in the text of the mailbox.

This function is similar to imap_listmailbox(), but it will additionally check for the presence of the string content inside the mailbox data.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

ref

ref should normally be just the server specification as described in imap_open()

pattern

指定在邮箱层级的何处开始查找。

在组成 pattern 的字符中可使用两个特殊字符： '*' 和 '%'。 '*' 是指返回所有邮箱目录. 如果将 '*' 作为 pattern 参数时, 则会返回整个邮箱层级结构。 '%' 是指只返回当前级次。 '%' 作为 pattern 参数则只会返回顶层邮箱； '~/mail/%' 用于 UW_IMAPD 则会返回名为 ~/mail 的目录, 但不包含其子目录。

content

The searched string

返回值

Returns an array containing the names of the mailboxes that have content in the text of the mailbox.

参见

  • imap_listmailbox() - 别名 imap_list
  • imap_search() - This function returns an array of messages matching the given search criteria

imap_listmailbox
imap_listsubscribed
IMAP 函数


别名 imap_lsub

imap_listscan
imap_lsub
IMAP 函数
PHP Manual

imap_listsubscribed

(PHP 4, PHP 5, PHP 7)

imap_listsubscribed — 别名 imap_lsub()

说明

此函数是该函数的别名： imap_lsub().

imap_listscan
imap_lsub
IMAP 函数


List all the subscribed mailboxes

imap_listsubscribed
imap_mail_compose
IMAP 函数
PHP Manual

imap_lsub

(PHP 4, PHP 5, PHP 7)

imap_lsub — List all the subscribed mailboxes

说明

array imap_lsub ( resource $imap_stream , string $ref , string $pattern )

Gets an array of all the mailboxes that you have subscribed.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

ref

ref should normally be just the server specification as described in imap_open()

pattern

指定在邮箱层级的何处开始查找。

在组成 pattern 的字符中可使用两个特殊字符： '*' 和 '%'。 '*' 是指返回所有邮箱目录. 如果将 '*' 作为 pattern 参数时, 则会返回整个邮箱层级结构。 '%' 是指只返回当前级次。 '%' 作为 pattern 参数则只会返回顶层邮箱； '~/mail/%' 用于 UW_IMAPD 则会返回名为 ~/mail 的目录, 但不包含其子目录。

返回值

Returns an array of all the subscribed mailboxes.

参见

  • imap_list() - Read the list of mailboxes
  • imap_getmailboxes() - Read the list of mailboxes, returning detailed information on each one

imap_listsubscribed
imap_mail_compose
IMAP 函数


Create a MIME message based on given envelope and body sections

imap_lsub
imap_mail_copy
IMAP 函数
PHP Manual

imap_mail_compose

(PHP 4, PHP 5, PHP 7)

imap_mail_compose — Create a MIME message based on given envelope and body sections

说明

string imap_mail_compose ( array $envelope , array $body )

Create a MIME message based on the given envelope and body sections.

参数

envelope

An associative array of headers fields. Valid keys are: "remail", "return_path", "date", "from", "reply_to", "in_reply_to", "subject", "to", "cc", "bcc", "message_id" and "custom_headers" (which contains associative array of other headers).

body

An indexed array of bodies

A body is an associative array which can consist of the following keys: "type", "encoding", "charset", "type.parameters", "subtype", "id", "description", "disposition.type", "disposition", "contents.data", "lines", "bytes" and "md5".

返回值

Returns the MIME message.

范例

Example #1 imap_mail_compose() example

<?php

$envelope["from"]= "joe@example.com";
$envelope["to"]  = "foo@example.com";
$envelope["cc"]  = "bar@example.com";

$part1["type"] = TYPEMULTIPART;
$part1["subtype"] = "mixed";

$filename = "/tmp/imap.c.gz";
$fp = fopen($filename, "r");
$contents = fread($fp, filesize($filename));
fclose($fp);

$part2["type"] = TYPEAPPLICATION;
$part2["encoding"] = ENCBINARY;
$part2["subtype"] = "octet-stream";
$part2["description"] = basename($filename);
$part2["contents.data"] = $contents;

$part3["type"] = TYPETEXT;
$part3["subtype"] = "plain";
$part3["description"] = "description3";
$part3["contents.data"] = "contents.data3\n\n\n\t";

$body[1] = $part1;
$body[2] = $part2;
$body[3] = $part3;

echo nl2br(imap_mail_compose($envelope, $body));

?>

imap_lsub
imap_mail_copy
IMAP 函数


Copy specified messages to a mailbox

imap_mail_compose
imap_mail_move
IMAP 函数
PHP Manual

imap_mail_copy

(PHP 4, PHP 5, PHP 7)

imap_mail_copy — Copy specified messages to a mailbox

说明

bool imap_mail_copy ( resource $imap_stream , string $msglist , string $mailbox [, int $options = 0 ] )

Copies mail messages specified by msglist to specified mailbox.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

msglist

msglist is a range not just message numbers (as described in » RFC2060).

mailbox

The mailbox name, see imap_open() for more information

options

options is a bitmask of one or more of

  • CP_UID - the sequence numbers contain UIDS
  • CP_MOVE - Delete the messages from the current mailbox after copying

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • imap_mail_move() - Move specified messages to a mailbox

imap_mail_compose
imap_mail_move
IMAP 函数


Move specified messages to a mailbox

imap_mail_copy
imap_mail
IMAP 函数
PHP Manual

imap_mail_move

(PHP 4, PHP 5, PHP 7)

imap_mail_move — Move specified messages to a mailbox

说明

bool imap_mail_move ( resource $imap_stream , string $msglist , string $mailbox [, int $options = 0 ] )

Moves mail messages specified by msglist to the specified mailbox.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

msglist

msglist is a range not just message numbers (as described in » RFC2060).

mailbox

The mailbox name, see imap_open() for more information

options

options is a bitmask and may contain the single option:

  • CP_UID - the sequence numbers contain UIDS

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note:

imap_mail_move() will flag the original mail with a delete flag, to successfully delete it a call to the imap_expunge() function must be made.

参见

  • imap_mail_copy() - Copy specified messages to a mailbox

imap_mail_copy
imap_mail
IMAP 函数


Send an email message

imap_mail_move
imap_mailboxmsginfo
IMAP 函数
PHP Manual

imap_mail

(PHP 4, PHP 5, PHP 7)

imap_mail — Send an email message

说明

bool imap_mail ( string $to , string $subject , string $message [, string $additional_headers = NULL [, string $cc = NULL [, string $bcc = NULL [, string $rpath = NULL ]]]] )

This function allows sending of emails with correct handling of Cc and Bcc receivers.

The parameters to, cc and bcc are all strings and are all parsed as » RFC822 address lists.

参数

to

The receiver

subject

The mail subject

message

The mail body, see imap_mail_compose()

additional_headers

As string with additional headers to be set on the mail

cc

bcc

The receivers specified in bcc will get the mail, but are excluded from the headers.

rpath

Use this parameter to specify return path upon mail delivery failure. This is useful when using PHP as a mail client for multiple users.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • mail() - 发送邮件
  • imap_mail_compose() - Create a MIME message based on given envelope and body sections

imap_mail_move
imap_mailboxmsginfo
IMAP 函数


Get information about the current mailbox

imap_mail
imap_mime_header_decode
IMAP 函数
PHP Manual

imap_mailboxmsginfo

(PHP 4, PHP 5, PHP 7)

imap_mailboxmsginfo — Get information about the current mailbox

说明

object imap_mailboxmsginfo ( resource $imap_stream )

Checks the current mailbox status on the server. It is similar to imap_status(), but will additionally sum up the size of all messages in the mailbox, which will take some additional time to execute.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

返回值

Returns the information in an object with following properties:

Mailbox properties
Date | date of last change (current datetime)
Driver | driver
Mailbox | name of the mailbox
Nmsgs | number of messages
Recent | number of recent messages
Unread | number of unread messages
Deleted | number of deleted messages
Size | mailbox size

Returns FALSE on failure.

范例

Example #1 imap_mailboxmsginfo() example

<?php

$mbox = imap_open("{imap.example.org}INBOX", "username", "password")
      or die("can't connect: " . imap_last_error());

$check = imap_mailboxmsginfo($mbox);

if ($check) {
    echo "Date: "     . $check->Date    . "<br />\n" ;
    echo "Driver: "   . $check->Driver  . "<br />\n" ;
    echo "Mailbox: "  . $check->Mailbox . "<br />\n" ;
    echo "Messages: " . $check->Nmsgs   . "<br />\n" ;
    echo "Recent: "   . $check->Recent  . "<br />\n" ;
    echo "Unread: "   . $check->Unread  . "<br />\n" ;
    echo "Deleted: "  . $check->Deleted . "<br />\n" ;
    echo "Size: "     . $check->Size    . "<br />\n" ;
} else {
    echo "imap_mailboxmsginfo() failed: " . imap_last_error() . "<br />\n";
}

imap_close($mbox);

?>

imap_mail
imap_mime_header_decode
IMAP 函数


Decode MIME header elements

imap_mailboxmsginfo
imap_msgno
IMAP 函数
PHP Manual

imap_mime_header_decode

(PHP 4, PHP 5, PHP 7)

imap_mime_header_decode — Decode MIME header elements

说明

array imap_mime_header_decode ( string $text )

Decodes MIME message header extensions that are non ASCII text (see » RFC2047).

参数

text

The MIME text

返回值

The decoded elements are returned in an array of objects, where each object has two properties, charset and text.

If the element hasn't been encoded, and in other words is in plain US-ASCII, the charset property of that element is set to default.

范例

Example #1 imap_mime_header_decode() example

<?php
$text = "=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@example.com>";

$elements = imap_mime_header_decode($text);
for ($i=0; $i<count($elements); $i++) {
    echo "Charset: {$elements[$i]->charset}\n";
    echo "Text: {$elements[$i]->text}\n\n";
}
?>

以上例程会输出：

Charset: ISO-8859-1
Text: Keld J?rn Simonsen

Charset: default
Text:  <keld@example.com>

In the above example we would have two elements, whereas the first element had previously been encoded with ISO-8859-1, and the second element would be plain US-ASCII.

参见

  • imap_utf8() - Converts MIME-encoded text to UTF-8

imap_mailboxmsginfo
imap_msgno
IMAP 函数


Gets the message sequence number for the given UID

imap_mime_header_decode
imap_num_msg
IMAP 函数
PHP Manual

imap_msgno

(PHP 4, PHP 5, PHP 7)

imap_msgno — Gets the message sequence number for the given UID

说明

int imap_msgno ( resource $imap_stream , int $uid )

Returns the message sequence number for the given uid.

This function is the inverse of imap_uid().

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

uid

The message UID

返回值

Returns the message sequence number for the given uid.

参见

  • imap_uid() - This function returns the UID for the given message sequence number

imap_mime_header_decode
imap_num_msg
IMAP 函数


Gets the number of messages in the current mailbox

imap_msgno
imap_num_recent
IMAP 函数
PHP Manual

imap_num_msg

(PHP 4, PHP 5, PHP 7)

imap_num_msg — Gets the number of messages in the current mailbox

说明

int imap_num_msg ( resource $imap_stream )

Gets the number of messages in the current mailbox.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

返回值

Return the number of messages in the current mailbox, as an integer, or FALSE on error.

参见

  • imap_num_recent() - Gets the number of recent messages in current mailbox
  • imap_status() - Returns status information on a mailbox

imap_msgno
imap_num_recent
IMAP 函数


Gets the number of recent messages in current mailbox

imap_num_msg
imap_open
IMAP 函数
PHP Manual

imap_num_recent

(PHP 4, PHP 5, PHP 7)

imap_num_recent — Gets the number of recent messages in current mailbox

说明

int imap_num_recent ( resource $imap_stream )

Gets the number of recent messages in the current mailbox.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

返回值

Returns the number of recent messages in the current mailbox, as an integer.

参见

  • imap_num_msg() - Gets the number of messages in the current mailbox
  • imap_status() - Returns status information on a mailbox

imap_num_msg
imap_open
IMAP 函数


Open an IMAP stream to a mailbox

imap_num_recent
imap_ping
IMAP 函数
PHP Manual

imap_open

(PHP 4, PHP 5, PHP 7)

imap_open — Open an IMAP stream to a mailbox

说明

resource imap_open ( string $mailbox , string $username , string $password [, int $options = 0 [, int $n_retries = 0 [, array $params = NULL ]]] )

Opens an IMAP stream to a mailbox.

This function can also be used to open streams to POP3 and NNTP servers, but some functions and features are only available on IMAP servers.

参数

mailbox

A mailbox name consists of a server and a mailbox path on this server. The special name INBOX stands for the current users personal mailbox. Mailbox names that contain international characters besides those in the printable ASCII space have to be encoded width imap_utf7_encode().

The server part, which is enclosed in '{' and '}', consists of the servers name or ip address, an optional port (prefixed by ':'), and an optional protocol specification (prefixed by '/').

The server part is mandatory in all mailbox parameters.

All names which start with { are remote names, and are in the form "{" remote_system_name [":" port] [flags] "}" [mailbox_name] where:

  • remote_system_name - Internet domain name or bracketed IP address of server.
  • port - optional TCP port number, default is the default port for that service
  • flags - optional flags, see following table.
  • mailbox_name - remote mailbox name, default is INBOX

Optional flags for names
Flag | Description
/service=service | mailbox access service, default is "imap"
/user=user | remote user name for login on the server
/authuser=user | remote authentication user; if specified this is the user name whose password is used (e.g. administrator)
/anonymous | remote access as anonymous user
/debug | record protocol telemetry in application's debug log
/secure | do not transmit a plaintext password over the network
/imap, /imap2, /imap2bis, /imap4, /imap4rev1 | equivalent to /service=imap
/pop3 | equivalent to /service=pop3
/nntp | equivalent to /service=nntp
/norsh | do not use rsh or ssh to establish a preauthenticated IMAP session
/ssl | use the Secure Socket Layer to encrypt the session
/validate-cert | validate certificates from TLS/SSL server (this is the default behavior)
/novalidate-cert | do not validate certificates from TLS/SSL server, needed if server uses self-signed certificates
/tls | force use of start-TLS to encrypt the session, and reject connection to servers that do not support it
/notls | do not do start-TLS to encrypt the session, even with servers that support it
/readonly | request read-only mailbox open (IMAP only; ignored on NNTP, and an error with SMTP and POP3)

username

The user name

password

The password associated with the username

options

The options are a bit mask with one or more of the following:

  • OP_READONLY - Open mailbox read-only
  • OP_ANONYMOUS - Don't use or update a .newsrc for news (NNTP only)
  • OP_HALFOPEN - For IMAP and NNTP names, open a connection but don't open a mailbox.
  • CL_EXPUNGE - Expunge mailbox automatically upon mailbox close (see also imap_delete() and imap_expunge())
  • OP_DEBUG - Debug protocol negotiations
  • OP_SHORTCACHE - Short (elt-only) caching
  • OP_SILENT - Don't pass up events (internal use)
  • OP_PROTOTYPE - Return driver prototype
  • OP_SECURE - Don't do non-secure authentication

n_retries

Number of maximum connect attempts

params

Connection parameters, the following (string) keys maybe used to set one or more connection parameters:

  • DISABLE_AUTHENTICATOR - Disable authentication properties

返回值

Returns an IMAP stream on success or FALSE on error.

更新日志

版本 | 说明
5.3.2 | params added
5.2.0 | n_retries added

范例

Example #1 Different use of imap_open()

<?php
// To connect to an IMAP server running on port 143 on the local machine,
// do the following:
$mbox = imap_open("{localhost:143}INBOX", "user_id", "password");

// To connect to a POP3 server on port 110 on the local server, use:
$mbox = imap_open ("{localhost:110/pop3}INBOX", "user_id", "password");

// To connect to an SSL IMAP or POP3 server, add /ssl after the protocol
// specification:
$mbox = imap_open ("{localhost:993/imap/ssl}INBOX", "user_id", "password");

// To connect to an SSL IMAP or POP3 server with a self-signed certificate,
// add /ssl/novalidate-cert after the protocol specification:
$mbox = imap_open ("{localhost:995/pop3/ssl/novalidate-cert}", "user_id", "password");

// To connect to an NNTP server on port 119 on the local server, use:
$nntp = imap_open ("{localhost:119/nntp}comp.test", "", "");
// To connect to a remote server replace "localhost" with the name or the
// IP address of the server you want to connect to.
?>

Example #2 imap_open() example

<?php
$mbox = imap_open("{imap.example.org:143}", "username", "password");

echo "<h1>Mailboxes</h1>\n";
$folders = imap_listmailbox($mbox, "{imap.example.org:143}", "*");

if ($folders == false) {
    echo "Call failed<br />\n";
} else {
    foreach ($folders as $val) {
        echo $val . "<br />\n";
    }
}

echo "<h1>Headers in INBOX</h1>\n";
$headers = imap_headers($mbox);

if ($headers == false) {
    echo "Call failed<br />\n";
} else {
    foreach ($headers as $val) {
        echo $val . "<br />\n";
    }
}

imap_close($mbox);
?>

参见

  • imap_close() - Close an IMAP stream

imap_num_recent
imap_ping
IMAP 函数


Check if the IMAP stream is still active

imap_open
imap_qprint
IMAP 函数
PHP Manual

imap_ping

(PHP 4, PHP 5, PHP 7)

imap_ping — Check if the IMAP stream is still active

说明

bool imap_ping ( resource $imap_stream )

imap_ping() pings the stream to see if it's still active. It may discover new mail; this is the preferred method for a periodic "new mail check" as well as a "keep alive" for servers which have inactivity timeout.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

返回值

Returns TRUE if the stream is still alive, FALSE otherwise.

范例

Example #1 imap_ping() Example

<?php

$imap = imap_open("{imap.example.org}", "mailadmin", "password");

// after some sleeping
if (!imap_ping($imap)) {
    // do some stuff to reconnect
}

?>

imap_open
imap_qprint
IMAP 函数


Convert a quoted-printable string to an 8 bit string

imap_ping
imap_rename
IMAP 函数
PHP Manual

imap_qprint

(PHP 4, PHP 5, PHP 7)

imap_qprint — Convert a quoted-printable string to an 8 bit string

说明

string imap_qprint ( string $string )

Convert a quoted-printable string to an 8 bit string according to » RFC2045, section 6.7.

参数

string

A quoted-printable string

返回值

Returns an 8 bits string.

参见

  • imap_8bit() - Convert an 8bit string to a quoted-printable string

imap_ping
imap_rename
IMAP 函数


别名 imap_renamemailbox

imap_qprint
imap_renamemailbox
IMAP 函数
PHP Manual

imap_rename

(PHP 4, PHP 5, PHP 7)

imap_rename — 别名 imap_renamemailbox()

说明

此函数是该函数的别名： imap_renamemailbox().

imap_qprint
imap_renamemailbox
IMAP 函数


Rename an old mailbox to new mailbox

imap_rename
imap_reopen
IMAP 函数
PHP Manual

imap_renamemailbox

(PHP 4, PHP 5, PHP 7)

imap_renamemailbox — Rename an old mailbox to new mailbox

说明

bool imap_renamemailbox ( resource $imap_stream , string $old_mbox , string $new_mbox )

This function renames on old mailbox to new mailbox (see imap_open() for the format of mbox names).

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

old_mbox

The old mailbox name, see imap_open() for more information

new_mbox

The new mailbox name, see imap_open() for more information

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • imap_createmailbox() - Create a new mailbox
  • imap_deletemailbox() - Delete a mailbox

imap_rename
imap_reopen
IMAP 函数


Reopen IMAP stream to new mailbox

imap_renamemailbox
imap_rfc822_parse_adrlist
IMAP 函数
PHP Manual

imap_reopen

(PHP 4, PHP 5, PHP 7)

imap_reopen — Reopen IMAP stream to new mailbox

说明

bool imap_reopen ( resource $imap_stream , string $mailbox [, int $options = 0 [, int $n_retries = 0 ]] )

Reopens the specified stream to a new mailbox on an IMAP or NNTP server.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

mailbox

The mailbox name, see imap_open() for more information

options

The options are a bit mask with one or more of the following:

  • OP_READONLY - Open mailbox read-only
  • OP_ANONYMOUS - Don't use or update a .newsrc for news (NNTP only)
  • OP_HALFOPEN - For IMAP and NNTP names, open a connection but don't open a mailbox.
  • OP_EXPUNGE - Silently expunge recycle stream
  • CL_EXPUNGE - Expunge mailbox automatically upon mailbox close (see also imap_delete() and imap_expunge())

n_retries

Number of maximum connect attempts

返回值

Returns TRUE if the stream is reopened, FALSE otherwise.

更新日志

版本 | 说明
5.2.0 | n_retries added

范例

Example #1 imap_reopen() example

<?php
$mbox = imap_open("{imap.example.org:143}INBOX", "username", "password") or die(implode(", ", imap_errors()));
// ...
imap_reopen($mbox, "{imap.example.org:143}INBOX.Sent") or die(implode(", ", imap_errors()));
// ..
?>

imap_renamemailbox
imap_rfc822_parse_adrlist
IMAP 函数


Parses an address string

imap_reopen
imap_rfc822_parse_headers
IMAP 函数
PHP Manual

imap_rfc822_parse_adrlist

(PHP 4, PHP 5, PHP 7)

imap_rfc822_parse_adrlist — Parses an address string

说明

array imap_rfc822_parse_adrlist ( string $address , string $default_host )

Parses the address string as defined in » RFC2822 and for each address.

参数

address

A string containing addresses

default_host

The default host name

返回值

Returns an array of objects. The objects properties are:

  • mailbox - the mailbox name (username)
  • host - the host name
  • personal - the personal name
  • adl - at domain source route

范例

Example #1 imap_rfc822_parse_adrlist() example

<?php

$address_string = "Joe Doe <doe@example.com>, postmaster@example.com, root";
$address_array  = imap_rfc822_parse_adrlist($address_string, "example.com");
if (!is_array($address_array) || count($address_array) < 1) {
    die("something is wrong\n");
}

foreach ($address_array as $id => $val) {
    echo "# $id\n";
    echo "  mailbox : " . $val->mailbox . "\n";
    echo "  host    : " . $val->host . "\n";
    echo "  personal: " . $val->personal . "\n";
    echo "  adl     : " . $val->adl . "\n";
}
?>

以上例程会输出：

# 0
  mailbox : doe
  host    : example.com
  personal: Joe Doe
  adl     :
# 1
  mailbox : postmaster
  host    : example.com
  personal:
  adl     :
# 2
  mailbox : root
  host    : example.com
  personal:
  adl     :

参见

  • imap_rfc822_parse_headers() - Parse mail headers from a string

imap_reopen
imap_rfc822_parse_headers
IMAP 函数


Parse mail headers from a string

imap_rfc822_parse_adrlist
imap_rfc822_write_address
IMAP 函数
PHP Manual

imap_rfc822_parse_headers

(PHP 4, PHP 5, PHP 7)

imap_rfc822_parse_headers — Parse mail headers from a string

说明

object imap_rfc822_parse_headers ( string $headers [, string $defaulthost = "UNKNOWN" ] )

Gets an object of various header elements, similar to imap_header().

参数

headers

The parsed headers data

defaulthost

The default host name

返回值

Returns an object similar to the one returned by imap_header(), except for the flags and other properties that come from the IMAP server.

参见

  • imap_rfc822_parse_adrlist() - Parses an address string

imap_rfc822_parse_adrlist
imap_rfc822_write_address
IMAP 函数


Returns a properly formatted email address given the mailbox, host, and personal info

imap_rfc822_parse_headers
imap_savebody
IMAP 函数
PHP Manual

imap_rfc822_write_address

(PHP 4, PHP 5, PHP 7)

imap_rfc822_write_address — Returns a properly formatted email address given the mailbox, host, and personal info

说明

string imap_rfc822_write_address ( string $mailbox , string $host , string $personal )

Returns a properly formatted email address as defined in » RFC2822 given the needed information.

参数

mailbox

The mailbox name, see imap_open() for more information

host

The email host part

personal

The name of the account owner

返回值

Returns a string properly formatted email address as defined in » RFC2822.

范例

Example #1 imap_rfc822_write_address() example

<?php
echo imap_rfc822_write_address("hartmut", "example.com", "Hartmut Holzgraefe");
?>

以上例程会输出：

Hartmut Holzgraefe <hartmut@example.com>

imap_rfc822_parse_headers
imap_savebody
IMAP 函数


Save a specific body section to a file

imap_rfc822_write_address
imap_scan
IMAP 函数
PHP Manual

imap_savebody

(PHP 5 >= 5.1.3, PHP 7)

imap_savebody — Save a specific body section to a file

说明

bool imap_savebody ( resource $imap_stream , mixed $file , int $msg_number [, string $part_number = "" [, int $options = 0 ]] )

Saves a part or the whole body of the specified message.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

file

The path to the saved file as a string, or a valid file descriptor returned by fopen().

msg_number

The message number

part_number

The part number. It is a string of integers delimited by period which index into a body part list as per the IMAP4 specification

options

A bitmask with one or more of the following:

  • FT_UID - The msg_number is a UID
  • FT_PEEK - Do not set the \Seen flag if not already set
  • FT_INTERNAL - The return string is in internal format, will not canonicalize to CRLF.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • imap_fetchbody() - Fetch a particular section of the body of the message

imap_rfc822_write_address
imap_scan
IMAP 函数


别名 imap_listscan

imap_savebody
imap_scanmailbox
IMAP 函数
PHP Manual

imap_scan

(PHP 4, PHP 5, PHP 7)

imap_scan — 别名 imap_listscan()

说明

此函数是该函数的别名： imap_listscan().

imap_savebody
imap_scanmailbox
IMAP 函数


别名 imap_listscan

imap_scan
imap_search
IMAP 函数
PHP Manual

imap_scanmailbox

(PHP 4, PHP 5, PHP 7)

imap_scanmailbox — 别名 imap_listscan()

说明

此函数是该函数的别名： imap_listscan().

imap_scan
imap_search
IMAP 函数


This function returns an array of messages matching the given search criteria

imap_scanmailbox
imap_set_quota
IMAP 函数
PHP Manual

imap_search

(PHP 4, PHP 5, PHP 7)

imap_search — This function returns an array of messages matching the given search criteria

说明

array imap_search ( resource $imap_stream , string $criteria [, int $options = SE_FREE [, string $charset = NULL ]] )

This function performs a search on the mailbox currently opened in the given IMAP stream.

For example, to match all unanswered messages sent by Mom, you'd use: "UNANSWERED FROM mom". Searches appear to be case insensitive. This list of criteria is from a reading of the UW c-client source code and may be incomplete or inaccurate (see also » RFC2060, section 6.4.4).

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

criteria

A string, delimited by spaces, in which the following keywords are allowed. Any multi-word arguments (e.g. FROM "joey smith") must be quoted. Results will match all criteria entries.

  • ALL - return all messages matching the rest of the criteria
  • ANSWERED - match messages with the \\ANSWERED flag set
  • BCC "string" - match messages with "string" in the Bcc: field
  • BEFORE "date" - match messages with Date: before "date"
  • BODY "string" - match messages with "string" in the body of the message
  • CC "string" - match messages with "string" in the Cc: field
  • DELETED - match deleted messages
  • FLAGGED - match messages with the \\FLAGGED (sometimes referred to as Important or Urgent) flag set
  • FROM "string" - match messages with "string" in the From: field
  • KEYWORD "string" - match messages with "string" as a keyword
  • NEW - match new messages
  • OLD - match old messages
  • ON "date" - match messages with Date: matching "date"
  • RECENT - match messages with the \\RECENT flag set
  • SEEN - match messages that have been read (the \\SEEN flag is set)
  • SINCE "date" - match messages with Date: after "date"
  • SUBJECT "string" - match messages with "string" in the Subject:
  • TEXT "string" - match messages with text "string"
  • TO "string" - match messages with "string" in the To:
  • UNANSWERED - match messages that have not been answered
  • UNDELETED - match messages that are not deleted
  • UNFLAGGED - match messages that are not flagged
  • UNKEYWORD "string" - match messages that do not have the keyword "string"
  • UNSEEN - match messages which have not been read yet

options

Valid values for options are SE_UID, which causes the returned array to contain UIDs instead of messages sequence numbers.

charset

MIME character set to use when searching strings.

返回值

Returns an array of message numbers or UIDs.

Return FALSE if it does not understand the search criteria or no messages have been found.

范例

Example #1 imap_search() example

<?php
$conn   = imap_open('{imap.example.com:993/imap/ssl}INBOX', 'foo@example.com', 'pass123', OP_READONLY);

$some   = imap_search($conn, 'SUBJECT "HOWTO be Awesome" SINCE "8 August 2008"', SE_UID);
$msgnos = imap_search($conn, 'ALL');
$uids   = imap_search($conn, 'ALL', SE_UID);

print_r($some);
print_r($msgnos);
print_r($uids);
?>

以上例程的输出类似于：

Array
(
    [0] => 4
    [1] => 6
    [2] => 11
)
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
)
Array
(
    [0] => 1
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 11
    [5] => 12
)

参见

  • imap_listscan() - Returns the list of mailboxes that matches the given text

imap_scanmailbox
imap_set_quota
IMAP 函数


Sets a quota for a given mailbox

imap_search
imap_setacl
IMAP 函数
PHP Manual

imap_set_quota

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

imap_set_quota — Sets a quota for a given mailbox

说明

bool imap_set_quota ( resource $imap_stream , string $quota_root , int $quota_limit )

Sets an upper limit quota on a per mailbox basis.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

quota_root

The mailbox to have a quota set. This should follow the IMAP standard format for a mailbox: user.name.

quota_limit

The maximum size (in KB) for the quota_root

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 imap_set_quota() example

<?php
$mbox = imap_open("{imap.example.org:143}", "mailadmin", "password");

if (!imap_set_quota($mbox, "user.kalowsky", 3000)) {
    echo "Error in setting quota\n";
    return;
}

imap_close($mbox);
?>

注释

This function is currently only available to users of the c-client2000 or greater library.

The given imap_stream must be opened as the mail administrator, other wise this function will fail.

参见

  • imap_open() - Open an IMAP stream to a mailbox
  • imap_get_quota() - Retrieve the quota level settings, and usage statics per mailbox

imap_search
imap_setacl
IMAP 函数


Sets the ACL for a given mailbox

imap_set_quota
imap_setflag_full
IMAP 函数
PHP Manual

imap_setacl

(PHP 4 >= 4.0.7, PHP 5, PHP 7)

imap_setacl — Sets the ACL for a given mailbox

说明

bool imap_setacl ( resource $imap_stream , string $mailbox , string $id , string $rights )

Sets the ACL for a giving mailbox.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

mailbox

The mailbox name, see imap_open() for more information

id

The user to give the rights to.

rights

The rights to give to the user. Passing an empty string will delete acl.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

This function is currently only available to users of the c-client2000 or greater library.

参见

  • imap_getacl() - Gets the ACL for a given mailbox

imap_set_quota
imap_setflag_full
IMAP 函数


Sets flags on messages

imap_setacl
imap_sort
IMAP 函数
PHP Manual

imap_setflag_full

(PHP 4, PHP 5, PHP 7)

imap_setflag_full — Sets flags on messages

说明

bool imap_setflag_full ( resource $imap_stream , string $sequence , string $flag [, int $options = NIL ] )

Causes a store to add the specified flag to the flags set for the messages in the specified sequence.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

sequence

A sequence of message numbers. You can enumerate desired messages with the X,Y syntax, or retrieve all messages within an interval with the X:Y syntax

flag

The flags which you can set are \Seen, \Answered, \Flagged, \Deleted, and \Draft as defined by » RFC2060.

options

A bit mask that may contain the single option:

  • ST_UID - The sequence argument contains UIDs instead of sequence numbers

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 imap_setflag_full() example

<?php
$mbox = imap_open("{imap.example.org:143}", "username", "password")
     or die("can't connect: " . imap_last_error());

$status = imap_setflag_full($mbox, "2,5", "\\Seen \\Flagged");

echo gettype($status) . "\n";
echo $status . "\n";

imap_close($mbox);
?>

参见

  • imap_clearflag_full() - Clears flags on messages

imap_setacl
imap_sort
IMAP 函数


Gets and sort messages

imap_setflag_full
imap_status
IMAP 函数
PHP Manual

imap_sort

(PHP 4, PHP 5, PHP 7)

imap_sort — Gets and sort messages

说明

array imap_sort ( resource $imap_stream , int $criteria , int $reverse [, int $options = 0 [, string $search_criteria = NULL [, string $charset = NULL ]]] )

Gets and sorts message numbers by the given parameters.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

criteria

Criteria can be one (and only one) of the following:

  • SORTDATE - message Date
  • SORTARRIVAL - arrival date
  • SORTFROM - mailbox in first From address
  • SORTSUBJECT - message subject
  • SORTTO - mailbox in first To address
  • SORTCC - mailbox in first cc address
  • SORTSIZE - size of message in octets

reverse

Set this to 1 for reverse sorting

options

The options are a bitmask of one or more of the following:

  • SE_UID - Return UIDs instead of sequence numbers
  • SE_NOPREFETCH - Don't prefetch searched messages

search_criteria

IMAP2-format search criteria string. For details see imap_search().

charset

MIME character set to use when sorting strings.

返回值

Returns an array of message numbers sorted by the given parameters.

imap_setflag_full
imap_status
IMAP 函数


Returns status information on a mailbox

imap_sort
imap_subscribe
IMAP 函数
PHP Manual

imap_status

(PHP 4, PHP 5, PHP 7)

imap_status — Returns status information on a mailbox

说明

object imap_status ( resource $imap_stream , string $mailbox , int $options )

Gets status information about the given mailbox.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

mailbox

The mailbox name, see imap_open() for more information

options

Valid flags are:

  • SA_MESSAGES - set $status->messages to the number of messages in the mailbox
  • SA_RECENT - set $status->recent to the number of recent messages in the mailbox
  • SA_UNSEEN - set $status->unseen to the number of unseen (new) messages in the mailbox
  • SA_UIDNEXT - set $status->uidnext to the next uid to be used in the mailbox
  • SA_UIDVALIDITY - set $status->uidvalidity to a constant that changes when uids for the mailbox may no longer be valid
  • SA_ALL - set all of the above

返回值

This function returns an object containing status information. The object has the following properties: messages, recent, unseen, uidnext, and uidvalidity.

flags is also set, which contains a bitmask which can be checked against any of the above constants.

范例

Example #1 imap_status() example

<?php
$mbox = imap_open("{imap.example.com}", "username", "password", OP_HALFOPEN)
      or die("can't connect: " . imap_last_error());

$status = imap_status($mbox, "{imap.example.org}INBOX", SA_ALL);
if ($status) {
  echo "Messages:   " . $status->messages    . "<br />\n";
  echo "Recent:     " . $status->recent      . "<br />\n";
  echo "Unseen:     " . $status->unseen      . "<br />\n";
  echo "UIDnext:    " . $status->uidnext     . "<br />\n";
  echo "UIDvalidity:" . $status->uidvalidity . "<br />\n";
} else {
  echo "imap_status failed: " . imap_last_error() . "\n";
}

imap_close($mbox);
?>

imap_sort
imap_subscribe
IMAP 函数


Subscribe to a mailbox

imap_status
imap_thread
IMAP 函数
PHP Manual

imap_subscribe

(PHP 4, PHP 5, PHP 7)

imap_subscribe — Subscribe to a mailbox

说明

bool imap_subscribe ( resource $imap_stream , string $mailbox )

Subscribe to a new mailbox.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

mailbox

The mailbox name, see imap_open() for more information

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • imap_unsubscribe() - Unsubscribe from a mailbox

imap_status
imap_thread
IMAP 函数


Returns a tree of threaded message

imap_subscribe
imap_timeout
IMAP 函数
PHP Manual

imap_thread

(PHP 4 >= 4.0.7, PHP 5, PHP 7)

imap_thread — Returns a tree of threaded message

说明

array imap_thread ( resource $imap_stream [, int $options = SE_FREE ] )

Gets a tree of a threaded message.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

options

返回值

imap_thread() returns an associative array containing a tree of messages threaded by REFERENCES, or FALSE on error.

Every message in the current mailbox will be represented by three entries in the resulting array:

  • $thread["XX.num"] - current message number

  • $thread["XX.next"]

  • $thread["XX.branch"]

范例

Example #1 imap_thread() Example

<?php

// Here we're outputting the threads of a newsgroup, in HTML

$nntp = imap_open('{news.example.com:119/nntp}some.newsgroup', '', '');
$threads = imap_thread($nntp);

foreach ($threads as $key => $val) {
  $tree = explode('.', $key);
  if ($tree[1] == 'num') {
    $header = imap_headerinfo($nntp, $val);
    echo "<ul>\n\t<li>" . $header->fromaddress . "\n";
  } elseif ($tree[1] == 'branch') {
    echo "\t</li>\n</ul>\n";
  }
}

imap_close($nntp);

?>

imap_subscribe
imap_timeout
IMAP 函数


Set or fetch imap timeout

imap_thread
imap_uid
IMAP 函数
PHP Manual

imap_timeout

(PHP 4 >= 4.3.3, PHP 5, PHP 7)

imap_timeout — Set or fetch imap timeout

说明

mixed imap_timeout ( int $timeout_type [, int $timeout = -1 ] )

Sets or fetches the imap timeout.

参数

timeout_type

One of the following: IMAP_OPENTIMEOUT, IMAP_READTIMEOUT, IMAP_WRITETIMEOUT, or IMAP_CLOSETIMEOUT.

timeout

The timeout, in seconds.

返回值

If the timeout parameter is set, this function returns TRUE on success and FALSE on failure.

If timeout is not provided or evaluates to -1, the current timeout value of timeout_type is returned as an integer.

范例

Example #1 imap_timeout() example

<?php

echo "The current read timeout is " . imap_timeout(IMAP_READTIMEOUT) . "\n";

?>

imap_thread
imap_uid
IMAP 函数


This function returns the UID for the given message sequence number

imap_timeout
imap_undelete
IMAP 函数
PHP Manual

imap_uid

(PHP 4, PHP 5, PHP 7)

imap_uid — This function returns the UID for the given message sequence number

说明

int imap_uid ( resource $imap_stream , int $msg_number )

This function returns the UID for the given message sequence number. An UID is a unique identifier that will not change over time while a message sequence number may change whenever the content of the mailbox changes.

This function is the inverse of imap_msgno().

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

msg_number

The message number.

返回值

The UID of the given message.

注释

Note:

This function is not supported by POP3 mailboxes.

参见

  • imap_msgno() - Gets the message sequence number for the given UID

imap_timeout
imap_undelete
IMAP 函数


Unmark the message which is marked deleted

imap_uid
imap_unsubscribe
IMAP 函数
PHP Manual

imap_undelete

(PHP 4, PHP 5, PHP 7)

imap_undelete — Unmark the message which is marked deleted

说明

bool imap_undelete ( resource $imap_stream , int $msg_number [, int $flags = 0 ] )

Removes the deletion flag for a specified message, which is set by imap_delete() or imap_mail_move().

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

msg_number

The message number

flags

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • imap_delete() - Mark a message for deletion from current mailbox
  • imap_mail_move() - Move specified messages to a mailbox

imap_uid
imap_unsubscribe
IMAP 函数


Unsubscribe from a mailbox

imap_undelete
imap_utf7_decode
IMAP 函数
PHP Manual

imap_unsubscribe

(PHP 4, PHP 5, PHP 7)

imap_unsubscribe — Unsubscribe from a mailbox

说明

bool imap_unsubscribe ( resource $imap_stream , string $mailbox )

Unsubscribe from the specified mailbox.

参数

imap_stream

由 imap_open() 返回的 IMAP 流。

mailbox

The mailbox name, see imap_open() for more information

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • imap_subscribe() - Subscribe to a mailbox

imap_undelete
imap_utf7_decode
IMAP 函数


Decodes a modified UTF-7 encoded string

imap_unsubscribe
imap_utf7_encode
IMAP 函数
PHP Manual

imap_utf7_decode

(PHP 4, PHP 5, PHP 7)

imap_utf7_decode — Decodes a modified UTF-7 encoded string

说明

string imap_utf7_decode ( string $text )

Decodes modified UTF-7 text into ISO-8859-1 string.

This function is needed to decode mailbox names that contain certain characters which are not in range of printable ASCII characters.

参数

text

A modified UTF-7 encoding string, as defined in » RFC 2060, section 5.1.3 (original UTF-7 was defined in » RFC1642).

返回值

Returns a string that is encoded in ISO-8859-1 and consists of the same sequence of characters in text, or FALSE if text contains invalid modified UTF-7 sequence or text contains a character that is not part of ISO-8859-1 character set.

参见

  • imap_utf7_encode() - Converts ISO-8859-1 string to modified UTF-7 text

imap_unsubscribe
imap_utf7_encode
IMAP 函数


Converts ISO-8859-1 string to modified UTF-7 text

imap_utf7_decode
imap_utf8
IMAP 函数
PHP Manual

imap_utf7_encode

(PHP 4, PHP 5, PHP 7)

imap_utf7_encode — Converts ISO-8859-1 string to modified UTF-7 text

说明

string imap_utf7_encode ( string $data )

Converts data to modified UTF-7 text.

This is needed to encode mailbox names that contain certain characters which are not in range of printable ASCII characters.

参数

data

An ISO-8859-1 string.

返回值

Returns data encoded with the modified UTF-7 encoding as defined in » RFC 2060, section 5.1.3 (original UTF-7 was defined in » RFC1642).

参见

  • imap_utf7_decode() - Decodes a modified UTF-7 encoded string

imap_utf7_decode
imap_utf8
IMAP 函数


Converts MIME-encoded text to UTF-8

imap_utf7_encode
Mail
IMAP 函数
PHP Manual

imap_utf8

(PHP 4, PHP 5, PHP 7)

imap_utf8 — Converts MIME-encoded text to UTF-8

说明

string imap_utf8 ( string $mime_encoded_text )

Converts the given mime_encoded_text to UTF-8.

参数

mime_encoded_text

A MIME encoded string. MIME encoding method and the UTF-8 specification are described in » RFC2047 and » RFC2044 respectively.

返回值

Returns an UTF-8 encoded string.

参见

  • imap_mime_header_decode() - Decode MIME header elements

imap_utf7_encode
Mail
IMAP 函数


Mail

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Mail 函数
    • ezmlm_hash — 计算 EZMLM 所需的散列值
    • mail — 发送邮件
imap_utf8
简介
邮件相关扩展


简介

mail() 函数可以让你发送邮件。

Mail
安装／配置
Mail


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Mail


需求

为了使右键函数正常运行，PHP 必须在编译时访问你系统里的 sendmail 可执行文件。 如果你使用了其他邮件程序，例如 qmail 或者 postfix，请确保它们使用了与 sendmail 适配的包装器。 PHP 首先会在你的 PATH 变量里查找 sendmail，然后在下面的路径里查找： /usr/bin:/usr/sbin:/usr/etc:/etc:/usr/ucblib:/usr/lib。 强烈建议 sendmail 在您的 PATH 变量里。并且，运行编译后PHP程序的用户也必须有执行 sendmail 的权限。

安装／配置
安装
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Mail 配置选项
名字 | 默认 | 可修改范围 | 更新日志
mail.add_x_header | "0" | PHP_INI_PERDIR | 自 PHP 5.3.0 起生效
mail.log | NULL | PHP_INI_PERDIR | 自 PHP 5.3.0 起生效
SMTP | "localhost" | PHP_INI_ALL |
smtp_port | "25" | PHP_INI_ALL | 自 PHP 4.3.0 起可用
sendmail_from | NULL | PHP_INI_ALL |
sendmail_path | NULL | PHP_INI_SYSTEM |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

mail.add_x_header bool

Add X-PHP-Originating-Script that will include UID of the script followed by the filename.

mail.log string

The path to a log file that will log all mail() calls. Log entries include the full path of the script, line number, To address and headers.

SMTP string

仅用于 Windows：PHP 在 mail() 函数中用来发送邮件的 SMTP 服务器的主机名称或者 IP 地址。

smtp_port int

仅用于 Windows：SMTP 服务器的端口号，默认为 25。自 PHP 4.3.0 起可用。

sendmail_from string

在 Windows 下用 PHP 发送邮件时的"From:"邮件地址的值。该选项同时设置了 "Return-Path:"头。

sendmail_path string

sendmail 程序的路径，通常为 /usr/sbin/sendmail 或 /usr/lib/sendmail。configure 脚本会尝试找到该程序并设定为默认值，但是如果失败的话，可以在这里设定。

不使用 sendmail 的系统应将此指令设定为其邮件系统提供的 sendmail 替代程序，如果有的话。例如，» Qmail 用户通常可以设为 /var/qmail/bin/sendmail 或 /var/qmail/bin/qmail-inject。

qmail-inject 不需要任何选项就能正确处理邮件。

此指令也可用于 Windows。如果设定，smtp，smtp_port 和 sendmail_from 都被忽略并运行指定的命令。

安装
资源类型
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
Mail 函数
Mail


Mail 函数

Table of Contents

  • ezmlm_hash — 计算 EZMLM 所需的散列值
  • mail — 发送邮件
预定义常量
ezmlm_hash
Mail


计算 EZMLM 所需的散列值

Mail 函数
mail
Mail 函数
PHP Manual

ezmlm_hash

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

ezmlm_hash — 计算 EZMLM 所需的散列值

说明

int ezmlm_hash ( string $addr )

ezmlm_hash() 计算用于在 MySQL 数据库中保存 EZMLM 邮件列表的散列值。

参数

addr

要进行散列算法的电子邮件地址。

返回值

addr 的散列值。

范例

Example #1 计算散列值并订阅一个用户

<?php

$user = "joecool@example.com";
$hash = ezmlm_hash($user);
$query = sprintf("INSERT INTO sample VALUES (%s, '%s')", $hash, $user);
$db->query($query); // using PHPLIB db interface

?>

Mail 函数
mail
Mail 函数


发送邮件

ezmlm_hash
Mailparse
Mail 函数
PHP Manual

mail

(PHP 4, PHP 5, PHP 7)

mail — 发送邮件

说明

bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

发送一封电子邮件。

参数

to

电子邮件收件人，或收件人列表。

本字符串的格式必须符合 » RFC 2822。例如：

  • user@example.com
  • user@example.com, anotheruser@example.com
  • User <user@example.com>
  • User <user@example.com>, Another User <anotheruser@example.com>

subject

电子邮件的主题。

Caution

本项不能包含任何换行符，否则邮件可能无法正确发送。

message

所要发送的消息。

行之间必须以一个 LF（\n）分隔。每行不能超过 70 个字符。

Caution

（Windows 下）当 PHP 直接连接到 SMTP 服务器时，如果在一行开头发现一个句号，则会被删掉。要避免此问题，将单个句号替换成两个句号。

<?php
$text = str_replace("\n.", "\n..", $text);
?>

additional_headers（可选项）

String to be inserted at the end of the email header.

This is typically used to add extra headers (From, Cc, and Bcc). Multiple extra headers should be separated with a CRLF (\r\n).

Note:

When sending mail, the mail must contain a From header. This can be set with the additional_headers parameter, or a default can be set in php.ini.

Failing to do this will result in an error message similar to Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing.

Note:

If messages are not received, try using a LF (\n) only. Some poor quality Unix mail transfer agents replace LF by CRLF automatically (which leads to doubling CR if CRLF is used). This should be a last resort, as it does not comply with » RFC 2822.

additional_parameters (optional)

The additional_parameters parameter can be used to pass an additional parameter to the program configured to use when sending mail using the sendmail_path configuration setting. For example, this can be used to set the envelope sender address when using sendmail with the -f sendmail option.

The user that the webserver runs as should be added as a trusted user to the sendmail configuration to prevent a 'X-Warning' header from being added to the message when the envelope sender (-f) is set using this method. For sendmail users, this file is /etc/mail/trusted-users.

返回值

Returns TRUE if the mail was successfully accepted for delivery, FALSE otherwise.

It is important to note that just because the mail was accepted for delivery, it does NOT mean the mail will actually reach the intended destination.

更新日志

版本 | 说明
4.3.0 (Windows only) | All custom headers (like From, Cc, Bcc and Date) are supported, and are not case-sensitive. (As custom headers are not interpreted by the MTA in the first place, but are parsed by PHP, PHP < 4.3 only supported the Cc header element and was case-sensitive).
4.2.3 | The additional_parameters parameter is disabled in safe_mode and the mail() function will expose a warning message and return FALSE when used.
4.0.5 | The additional_parameters parameter was added.

范例

Example #1 Sending mail.

Using mail() to send a simple email:

<?php
// The message
$message = "Line 1\nLine 2\nLine 3";

// In case any of our lines are larger than 70 characters, we should use wordwrap()
$message = wordwrap($message, 70);

// Send
mail('caffinated@example.com', 'My Subject', $message);
?>

Example #2 Sending mail with extra headers.

The addition of basic headers, telling the MUA the From and Reply-To addresses:

<?php
$to      = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?>

Example #3 Sending mail with an additional command line parameter.

The additional_parameters parameter can be used to pass an additional parameter to the program configured to use when sending mail using the sendmail_path.

<?php
mail('nobody@example.com', 'the subject', 'the message', null,
   '-fwebmaster@example.com');
?>

Example #4 Sending HTML email

It is also possible to send HTML email with mail().

<?php
// multiple recipients
$to  = 'aidan@example.com' . ', '; // note the comma
$to .= 'wez@example.com';

// subject
$subject = 'Birthday Reminders for August';

// message
$message = '
<html>
<head>
  <title>Birthday Reminders for August</title>
</head>
<body>
  <p>Here are the birthdays upcoming in August!</p>
  <table>
    <tr>
      <th>Person</th><th>Day</th><th>Month</th><th>Year</th>
    </tr>
    <tr>
      <td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
    </tr>
    <tr>
      <td>Sally</td><td>17th</td><td>August</td><td>1973</td>
    </tr>
  </table>
</body>
</html>
';

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'To: Mary <mary@example.com>, Kelly <kelly@example.com>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";

// Mail it
mail($to, $subject, $message, $headers);
?>

Note:

If intending to send HTML or otherwise Complex mails, it is recommended to use the PEAR package » PEAR::Mail.

注释

Note:

The Windows implementation of mail() differs in many ways from the Unix implementation. First, it doesn't use a local binary for composing messages but only operates on direct sockets which means a MTA is needed listening on a network socket (which can either on the localhost or a remote machine).

Second, the custom headers like From:, Cc:, Bcc: and Date: are not interpreted by the MTA in the first place, but are parsed by PHP.

As such, the to parameter should not be an address in the form of "Something <someone@example.com>". The mail command may not parse this properly while talking with the MTA.

Note:

It is worth noting that the mail() function is not suitable for larger volumes of email in a loop. This function opens and closes an SMTP socket for each email, which is not very efficient.

For the sending of large amounts of email, see the » PEAR::Mail, and » PEAR::Mail_Queue packages.

Note:

The following RFCs may be useful: » RFC 1896, » RFC 2045, » RFC 2046, » RFC 2047, » RFC 2048, » RFC 2049, and » RFC 2822.

参见

  • imap_mail() - Send an email message
  • » PEAR::Mail
  • » PEAR::Mail_Mime

ezmlm_hash
Mailparse
Mail 函数


Mailparse

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Mailparse 函数
    • mailparse_determine_best_xfer_encoding — Gets the best way of encoding
    • mailparse_msg_create — Create a mime mail resource
    • mailparse_msg_extract_part_file — Extracts/decodes a message section
    • mailparse_msg_extract_part — Extracts/decodes a message section
    • mailparse_msg_extract_whole_part_file — Extracts a message section including headers without decoding the transfer encoding
    • mailparse_msg_free — Frees a MIME resource
    • mailparse_msg_get_part_data — Returns an associative array of info about the message
    • mailparse_msg_get_part — Returns a handle on a given section in a mimemessage
    • mailparse_msg_get_structure — Returns an array of mime section names in the supplied message
    • mailparse_msg_parse_file — Parses a file
    • mailparse_msg_parse — Incrementally parse data into buffer
    • mailparse_rfc822_parse_addresses — Parse RFC 822 compliant addresses
    • mailparse_stream_encode — Streams data from source file pointer, apply encoding and write to destfp
    • mailparse_uudecode_all — Scans the data from fp and extract each embedded uuencoded file
mail
简介
邮件相关扩展


简介

Mailparse is an extension for parsing and working with email messages. It can deal with » RFC 822 and » RFC 2045 (MIME) compliant messages.

Mailparse is stream based, which means that it does not keep in-memory copies of the files it processes - so it is very resource efficient when dealing with large messages.

Note:

Mailparse requires the mbstring extension, and mbstring must be loaded before mailparse.

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。4.2.0.

Mailparse
安装／配置
Mailparse


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Mailparse


安装

此 » PECL 扩展未与 PHP 捆绑。 安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/mailparse.

In order to use these functions you must compile PHP with mailparse support by using the --enable-mailparse configure option.

Windows users will enable php_mailparse.dll inside of php.ini in order to use these functions. PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

It is necessary that the mbstring extension is loaded before mailparse.

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

MAILPARSE_EXTRACT_OUTPUT (integer)
MAILPARSE_EXTRACT_STREAM (integer)
MAILPARSE_EXTRACT_RETURN (integer)
资源类型
Mailparse 函数
Mailparse


Mailparse 函数

Table of Contents

  • mailparse_determine_best_xfer_encoding — Gets the best way of encoding
  • mailparse_msg_create — Create a mime mail resource
  • mailparse_msg_extract_part_file — Extracts/decodes a message section
  • mailparse_msg_extract_part — Extracts/decodes a message section
  • mailparse_msg_extract_whole_part_file — Extracts a message section including headers without decoding the transfer encoding
  • mailparse_msg_free — Frees a MIME resource
  • mailparse_msg_get_part_data — Returns an associative array of info about the message
  • mailparse_msg_get_part — Returns a handle on a given section in a mimemessage
  • mailparse_msg_get_structure — Returns an array of mime section names in the supplied message
  • mailparse_msg_parse_file — Parses a file
  • mailparse_msg_parse — Incrementally parse data into buffer
  • mailparse_rfc822_parse_addresses — Parse RFC 822 compliant addresses
  • mailparse_stream_encode — Streams data from source file pointer, apply encoding and write to destfp
  • mailparse_uudecode_all — Scans the data from fp and extract each embedded uuencoded file
预定义常量
mailparse_determine_best_xfer_encoding
Mailparse


Gets the best way of encoding

Mailparse 函数
mailparse_msg_create
Mailparse 函数
PHP Manual

mailparse_determine_best_xfer_encoding

(PECL mailparse >= 0.9.0)

mailparse_determine_best_xfer_encoding — Gets the best way of encoding

说明

string mailparse_determine_best_xfer_encoding ( resource $fp )

Figures out the best way of encoding the content read from the given file pointer.

参数

fp

A valid file pointer, which must be seek-able.

返回值

Returns one of the character encodings supported by the mbstring module.

范例

Example #1 mailparse_determine_best_xfer_encoding() example

<?php

$fp = fopen('somemail.eml', 'r');
echo 'Best encoding: ' . mailparse_determine_best_xfer_encoding($fp);

?>

以上例程的输出类似于：

Best encoding: 7bit

Mailparse 函数
mailparse_msg_create
Mailparse 函数


Create a mime mail resource

mailparse_determine_best_xfer_encoding
mailparse_msg_extract_part_file
Mailparse 函数
PHP Manual

mailparse_msg_create

(PECL mailparse >= 0.9.0)

mailparse_msg_create — Create a mime mail resource

说明

resource mailparse_msg_create ( void )

Create a MIME mail resource.

返回值

Returns a handle that can be used to parse a message.

参见

  • mailparse_msg_free() - Frees a MIME resource
  • mailparse_msg_parse_file() - Parses a file

mailparse_determine_best_xfer_encoding
mailparse_msg_extract_part_file
Mailparse 函数


Extracts/decodes a message section

mailparse_msg_create
mailparse_msg_extract_part
Mailparse 函数
PHP Manual

mailparse_msg_extract_part_file

(PECL mailparse >= 0.9.0)

mailparse_msg_extract_part_file — Extracts/decodes a message section

说明

string mailparse_msg_extract_part_file ( resource $mimemail , mixed $filename [, callable $callbackfunc ] )

Extracts/decodes a message section from the supplied filename.

The contents of the section will be decoded according to their transfer encoding - base64, quoted-printable and uuencoded text are supported.

参数

mimemail

A valid MIME resource, created with mailparse_msg_create().

filename

Can be a file name or a valid stream resource.

callbackfunc

If set, this must be either a valid callback that will be passed the extracted section, or NULL to make this function return the extracted section.

If not specified, the contents will be sent to "stdout".

返回值

If callbackfunc is not NULL returns TRUE on success.

If callbackfunc is set to NULL, returns the extracted section as a string.

Returns FALSE on error.

参见

  • mailparse_msg_extract_part() - Extracts/decodes a message section
  • mailparse_msg_extract_whole_part_file() - Extracts a message section including headers without decoding the transfer encoding

mailparse_msg_create
mailparse_msg_extract_part
Mailparse 函数


Extracts/decodes a message section

mailparse_msg_extract_part_file
mailparse_msg_extract_whole_part_file
Mailparse 函数
PHP Manual

mailparse_msg_extract_part

(PECL mailparse >= 0.9.0)

mailparse_msg_extract_part — Extracts/decodes a message section

说明

void mailparse_msg_extract_part ( resource $mimemail , string $msgbody [, callable $callbackfunc ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

mimemail

A valid MIME resource.

msgbody

callbackfunc

返回值

没有返回值。

参见

  • mailparse_msg_extract_part_file() - Extracts/decodes a message section
  • mailparse_msg_extract_whole_part_file() - Extracts a message section including headers without decoding the transfer encoding

mailparse_msg_extract_part_file
mailparse_msg_extract_whole_part_file
Mailparse 函数


Extracts a message section including headers without decoding the transfer encoding

mailparse_msg_extract_part
mailparse_msg_free
Mailparse 函数
PHP Manual

mailparse_msg_extract_whole_part_file

(PECL mailparse >= 0.9.0)

mailparse_msg_extract_whole_part_file — Extracts a message section including headers without decoding the transfer encoding

说明

string mailparse_msg_extract_whole_part_file ( resource $mimemail , string $filename [, callable $callbackfunc ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

mimemail

A valid MIME resource.

filename

callbackfunc

返回值

参见

  • mailparse_msg_extract_part() - Extracts/decodes a message section
  • mailparse_msg_extract_part_file() - Extracts/decodes a message section

mailparse_msg_extract_part
mailparse_msg_free
Mailparse 函数


Frees a MIME resource

mailparse_msg_extract_whole_part_file
mailparse_msg_get_part_data
Mailparse 函数
PHP Manual

mailparse_msg_free

(PECL mailparse >= 0.9.0)

mailparse_msg_free — Frees a MIME resource

说明

bool mailparse_msg_free ( resource $mimemail )

Frees a MIME resource.

参数

mimemail

A valid MIME resource allocated by mailparse_msg_create() or mailparse_msg_parse_file().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • mailparse_msg_create() - Create a mime mail resource
  • mailparse_msg_parse_file() - Parses a file

mailparse_msg_extract_whole_part_file
mailparse_msg_get_part_data
Mailparse 函数


Returns an associative array of info about the message

mailparse_msg_free
mailparse_msg_get_part
Mailparse 函数
PHP Manual

mailparse_msg_get_part_data

(PECL mailparse >= 0.9.0)

mailparse_msg_get_part_data — Returns an associative array of info about the message

说明

array mailparse_msg_get_part_data ( resource $mimemail )
Warning

本函数还未编写文档，仅有参数列表。

参数

mimemail

A valid MIME resource.

mailparse_msg_free
mailparse_msg_get_part
Mailparse 函数


Returns a handle on a given section in a mimemessage

mailparse_msg_get_part_data
mailparse_msg_get_structure
Mailparse 函数
PHP Manual

mailparse_msg_get_part

(PECL mailparse >= 0.9.0)

mailparse_msg_get_part — Returns a handle on a given section in a mimemessage

说明

resource mailparse_msg_get_part ( resource $mimemail , string $mimesection )
Warning

本函数还未编写文档，仅有参数列表。

参数

mimemail

A valid MIME resource.

mimesection

mailparse_msg_get_part_data
mailparse_msg_get_structure
Mailparse 函数


Returns an array of mime section names in the supplied message

mailparse_msg_get_part
mailparse_msg_parse_file
Mailparse 函数
PHP Manual

mailparse_msg_get_structure

(PECL mailparse >= 0.9.0)

mailparse_msg_get_structure — Returns an array of mime section names in the supplied message

说明

array mailparse_msg_get_structure ( resource $mimemail )
Warning

本函数还未编写文档，仅有参数列表。

参数

mimemail

A valid MIME resource.

mailparse_msg_get_part
mailparse_msg_parse_file
Mailparse 函数


Parses a file

mailparse_msg_get_structure
mailparse_msg_parse
Mailparse 函数
PHP Manual

mailparse_msg_parse_file

(PECL mailparse >= 0.9.0)

mailparse_msg_parse_file — Parses a file

说明

resource mailparse_msg_parse_file ( string $filename )

Parses a file. This is the optimal way of parsing a mail file that you have on disk.

参数

filename

Path to the file holding the message. The file is opened and streamed through the parser.

返回值

Returns a MIME resource representing the structure, or FALSE on error.

参见

  • mailparse_msg_free() - Frees a MIME resource
  • mailparse_msg_create() - Create a mime mail resource

mailparse_msg_get_structure
mailparse_msg_parse
Mailparse 函数


Incrementally parse data into buffer

mailparse_msg_parse_file
mailparse_rfc822_parse_addresses
Mailparse 函数
PHP Manual

mailparse_msg_parse

(PECL mailparse >= 0.9.0)

mailparse_msg_parse — Incrementally parse data into buffer

说明

bool mailparse_msg_parse ( resource $mimemail , string $data )

Incrementally parse data into the supplied mime mail resource.

This function allow you to stream portions of a file at a time, rather than read and parse the whole thing.

参数

mimemail

A valid MIME resource.

data

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

mailparse_msg_parse_file
mailparse_rfc822_parse_addresses
Mailparse 函数


Parse RFC 822 compliant addresses

mailparse_msg_parse
mailparse_stream_encode
Mailparse 函数
PHP Manual

mailparse_rfc822_parse_addresses

(PECL mailparse >= 0.9.0)

mailparse_rfc822_parse_addresses — Parse RFC 822 compliant addresses

说明

array mailparse_rfc822_parse_addresses ( string $addresses )

Parses a » RFC 822 compliant recipient list, such as that found in the To: header.

参数

addresses

A string containing addresses, like in: Wez Furlong <wez@example.com>, doe@example.com

Note:

This string must not include the header name.

返回值

Returns an array of associative arrays with the following keys for each recipient:

display | The recipient name, for display purpose. If this part is not set for a recipient, this key will hold the same value as address.
address | The email address
is_group | TRUE if the recipient is a newsgroup, FALSE otherwise.

范例

Example #1 mailparse_rfc822_parse_addresses() example

<?php

$to = 'Wez Furlong <wez@example.com>, doe@example.com';
var_dump(mailparse_rfc822_parse_addresses($to));

?>

以上例程会输出：

array(2) {
  [0]=>
  array(3) {
    ["display"]=>
    string(11) "Wez Furlong"
    ["address"]=>
    string(15) "wez@example.com"
    ["is_group"]=>
    bool(false)
  }
  [1]=>
  array(3) {
    ["display"]=>
    string(15) "doe@example.com"
    ["address"]=>
    string(15) "doe@example.com"
    ["is_group"]=>
    bool(false)
  }
}

mailparse_msg_parse
mailparse_stream_encode
Mailparse 函数


Streams data from source file pointer, apply encoding and write to destfp

mailparse_rfc822_parse_addresses
mailparse_uudecode_all
Mailparse 函数
PHP Manual

mailparse_stream_encode

(PECL mailparse >= 0.9.0)

mailparse_stream_encode — Streams data from source file pointer, apply encoding and write to destfp

说明

bool mailparse_stream_encode ( resource $sourcefp , resource $destfp , string $encoding )

Streams data from the source file pointer, apply encoding and write to the destination file pointer.

参数

sourcefp

A valid file handle. The file is streamed through the parser.

destfp

The destination file handle in which the encoded data will be written.

encoding

One of the character encodings supported by the mbstring module.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 mailparse_stream_encode() example

<?php

// email.eml contents: hello, this is some text=hello.
$fp = fopen('email.eml', 'r');

$dest = tmpfile();

mailparse_stream_encode($fp, $dest, "quoted-printable");

rewind($dest);

// Display new file contents
fpassthru($dest);

?>

以上例程会输出：

hello, this is some text=3Dhello.

mailparse_rfc822_parse_addresses
mailparse_uudecode_all
Mailparse 函数


Scans the data from fp and extract each embedded uuencoded file

mailparse_stream_encode
vpopmail
Mailparse 函数
PHP Manual

mailparse_uudecode_all

(PECL mailparse >= 0.9.0)

mailparse_uudecode_all — Scans the data from fp and extract each embedded uuencoded file

说明

array mailparse_uudecode_all ( resource $fp )

Scans the data from the given file pointer and extract each embedded uuencoded file into a temporary file.

参数

fp

A valid file pointer.

返回值

Returns an array of associative arrays listing filename information.

filename | Path to the temporary file name created
origfilename | The original filename, for uuencoded parts only
The first filename entry is the message body. The next entries are the decoded uuencoded files.

范例

Example #1 mailparse_uudecode_all() example

<?php

$text = <<<EOD
To: fred@example.com

hello, this is some text hello.
blah blah blah.

begin 644 test.txt
/=&AI<R!I<R!A('1E<W0*
`
end

EOD;

$fp = tmpfile();
fwrite($fp, $text);

$data = mailparse_uudecode_all($fp);

echo "BODY\n";
readfile($data[0]["filename"]);
echo "UUE ({$data[1]['origfilename']})\n";
readfile($data[1]["filename"]);

// Clean up
unlink($data[0]["filename"]);
unlink($data[1]["filename"]);

?>

以上例程会输出：

BODY
To: fred@example.com

hello, this is some text hello.
blah blah blah.

UUE (test.txt)
this is a test

mailparse_stream_encode
vpopmail
Mailparse 函数


vpopmail

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • vpopmail 函数
    • vpopmail_add_alias_domain_ex — Add alias to an existing virtual domain
    • vpopmail_add_alias_domain — Add an alias for a virtual domain
    • vpopmail_add_domain_ex — Add a new virtual domain
    • vpopmail_add_domain — Add a new virtual domain
    • vpopmail_add_user — Add a new user to the specified virtual domain
    • vpopmail_alias_add — Insert a virtual alias
    • vpopmail_alias_del_domain — Deletes all virtual aliases of a domain
    • vpopmail_alias_del — Deletes all virtual aliases of a user
    • vpopmail_alias_get_all — Get all lines of an alias for a domain
    • vpopmail_alias_get — Get all lines of an alias for a domain
    • vpopmail_auth_user — Attempt to validate a username/domain/password
    • vpopmail_del_domain_ex — Delete a virtual domain
    • vpopmail_del_domain — Delete a virtual domain
    • vpopmail_del_user — Delete a user from a virtual domain
    • vpopmail_error — Get text message for last vpopmail error
    • vpopmail_passwd — Change a virtual user's password
    • vpopmail_set_user_quota — Sets a virtual user's quota
mailparse_uudecode_all
简介
邮件相关扩展


简介

Warning

此扩展是实验性 的。 此扩展的表象，包括其函数名称以及其他此扩展的相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本扩展风险自担 。

本扩展已经从php4.3.0版迁移到现在的» PECL.

vpopmail
安装／配置
vpopmail


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
vpopmail


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/vpopmail.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
vpopmail 函数
vpopmail


vpopmail 函数

Table of Contents

  • vpopmail_add_alias_domain_ex — Add alias to an existing virtual domain
  • vpopmail_add_alias_domain — Add an alias for a virtual domain
  • vpopmail_add_domain_ex — Add a new virtual domain
  • vpopmail_add_domain — Add a new virtual domain
  • vpopmail_add_user — Add a new user to the specified virtual domain
  • vpopmail_alias_add — Insert a virtual alias
  • vpopmail_alias_del_domain — Deletes all virtual aliases of a domain
  • vpopmail_alias_del — Deletes all virtual aliases of a user
  • vpopmail_alias_get_all — Get all lines of an alias for a domain
  • vpopmail_alias_get — Get all lines of an alias for a domain
  • vpopmail_auth_user — Attempt to validate a username/domain/password
  • vpopmail_del_domain_ex — Delete a virtual domain
  • vpopmail_del_domain — Delete a virtual domain
  • vpopmail_del_user — Delete a user from a virtual domain
  • vpopmail_error — Get text message for last vpopmail error
  • vpopmail_passwd — Change a virtual user's password
  • vpopmail_set_user_quota — Sets a virtual user's quota
预定义常量
vpopmail_add_alias_domain_ex
vpopmail


Add alias to an existing virtual domain

vpopmail 函数
vpopmail_add_alias_domain
vpopmail 函数
PHP Manual

vpopmail_add_alias_domain_ex

(PHP 4 >= 4.0.5, PECL vpopmail >= 0.2)

vpopmail_add_alias_domain_ex — Add alias to an existing virtual domain

说明

bool vpopmail_add_alias_domain_ex ( string $olddomain , string $newdomain )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

vpopmail 函数
vpopmail_add_alias_domain
vpopmail 函数


Add an alias for a virtual domain

vpopmail_add_alias_domain_ex
vpopmail_add_domain_ex
vpopmail 函数
PHP Manual

vpopmail_add_alias_domain

(PHP 4 >= 4.0.5, PECL vpopmail >= 0.2)

vpopmail_add_alias_domain — Add an alias for a virtual domain

说明

bool vpopmail_add_alias_domain ( string $domain , string $aliasdomain )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

vpopmail_add_alias_domain_ex
vpopmail_add_domain_ex
vpopmail 函数


Add a new virtual domain

vpopmail_add_alias_domain
vpopmail_add_domain
vpopmail 函数
PHP Manual

vpopmail_add_domain_ex

(PHP 4 >= 4.0.5, PECL vpopmail >= 0.2)

vpopmail_add_domain_ex — Add a new virtual domain

说明

bool vpopmail_add_domain_ex ( string $domain , string $passwd [, string $quota [, string $bounce [, bool $apop ]]] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

vpopmail_add_alias_domain
vpopmail_add_domain
vpopmail 函数


Add a new virtual domain

vpopmail_add_domain_ex
vpopmail_add_user
vpopmail 函数
PHP Manual

vpopmail_add_domain

(PHP 4 >= 4.0.5, PECL vpopmail >= 0.2)

vpopmail_add_domain — Add a new virtual domain

说明

bool vpopmail_add_domain ( string $domain , string $dir , int $uid , int $gid )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

vpopmail_add_domain_ex
vpopmail_add_user
vpopmail 函数


Add a new user to the specified virtual domain

vpopmail_add_domain
vpopmail_alias_add
vpopmail 函数
PHP Manual

vpopmail_add_user

(PHP 4 >= 4.0.5, PECL vpopmail >= 0.2)

vpopmail_add_user — Add a new user to the specified virtual domain

说明

bool vpopmail_add_user ( string $user , string $domain , string $password [, string $gecos [, bool $apop ]] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

vpopmail_add_domain
vpopmail_alias_add
vpopmail 函数


Insert a virtual alias

vpopmail_add_user
vpopmail_alias_del_domain
vpopmail 函数
PHP Manual

vpopmail_alias_add

(PHP 4 >= 4.0.7, PECL vpopmail >= 0.2)

vpopmail_alias_add — Insert a virtual alias

说明

bool vpopmail_alias_add ( string $user , string $domain , string $alias )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

vpopmail_add_user
vpopmail_alias_del_domain
vpopmail 函数


Deletes all virtual aliases of a domain

vpopmail_alias_add
vpopmail_alias_del
vpopmail 函数
PHP Manual

vpopmail_alias_del_domain

(PHP 4 >= 4.0.7, PECL vpopmail >= 0.2)

vpopmail_alias_del_domain — Deletes all virtual aliases of a domain

说明

bool vpopmail_alias_del_domain ( string $domain )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

vpopmail_alias_add
vpopmail_alias_del
vpopmail 函数


Deletes all virtual aliases of a user

vpopmail_alias_del_domain
vpopmail_alias_get_all
vpopmail 函数
PHP Manual

vpopmail_alias_del

(PHP 4 >= 4.0.7, PECL vpopmail >= 0.2)

vpopmail_alias_del — Deletes all virtual aliases of a user

说明

bool vpopmail_alias_del ( string $user , string $domain )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

vpopmail_alias_del_domain
vpopmail_alias_get_all
vpopmail 函数


Get all lines of an alias for a domain

vpopmail_alias_del
vpopmail_alias_get
vpopmail 函数
PHP Manual

vpopmail_alias_get_all

(PHP 4 >= 4.0.7, PECL vpopmail >= 0.2)

vpopmail_alias_get_all — Get all lines of an alias for a domain

说明

array vpopmail_alias_get_all ( string $domain )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

vpopmail_alias_del
vpopmail_alias_get
vpopmail 函数


Get all lines of an alias for a domain

vpopmail_alias_get_all
vpopmail_auth_user
vpopmail 函数
PHP Manual

vpopmail_alias_get

(PHP 4 >= 4.0.7, PECL vpopmail >= 0.2)

vpopmail_alias_get — Get all lines of an alias for a domain

说明

array vpopmail_alias_get ( string $alias , string $domain )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

vpopmail_alias_get_all
vpopmail_auth_user
vpopmail 函数


Attempt to validate a username/domain/password

vpopmail_alias_get
vpopmail_del_domain_ex
vpopmail 函数
PHP Manual

vpopmail_auth_user

(PHP 4 >= 4.0.5, PECL vpopmail >= 0.2)

vpopmail_auth_user — Attempt to validate a username/domain/password

说明

bool vpopmail_auth_user ( string $user , string $domain , string $password [, string $apop ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

vpopmail_alias_get
vpopmail_del_domain_ex
vpopmail 函数


Delete a virtual domain

vpopmail_auth_user
vpopmail_del_domain
vpopmail 函数
PHP Manual

vpopmail_del_domain_ex

(PHP 4 >= 4.0.5, PECL vpopmail >= 0.2)

vpopmail_del_domain_ex — Delete a virtual domain

说明

bool vpopmail_del_domain_ex ( string $domain )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

vpopmail_auth_user
vpopmail_del_domain
vpopmail 函数


Delete a virtual domain

vpopmail_del_domain_ex
vpopmail_del_user
vpopmail 函数
PHP Manual

vpopmail_del_domain

(PHP 4 >= 4.0.5, PECL vpopmail >= 0.2)

vpopmail_del_domain — Delete a virtual domain

说明

bool vpopmail_del_domain ( string $domain )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

vpopmail_del_domain_ex
vpopmail_del_user
vpopmail 函数


Delete a user from a virtual domain

vpopmail_del_domain
vpopmail_error
vpopmail 函数
PHP Manual

vpopmail_del_user

(PHP 4 >= 4.0.5, PECL vpopmail >= 0.2)

vpopmail_del_user — Delete a user from a virtual domain

说明

bool vpopmail_del_user ( string $user , string $domain )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

vpopmail_del_domain
vpopmail_error
vpopmail 函数


Get text message for last vpopmail error

vpopmail_del_user
vpopmail_passwd
vpopmail 函数
PHP Manual

vpopmail_error

(PHP 4 >= 4.0.5, PECL vpopmail >= 0.2)

vpopmail_error — Get text message for last vpopmail error

说明

string vpopmail_error ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

vpopmail_del_user
vpopmail_passwd
vpopmail 函数


Change a virtual user's password

vpopmail_error
vpopmail_set_user_quota
vpopmail 函数
PHP Manual

vpopmail_passwd

(PHP 4 >= 4.0.5, PECL vpopmail >= 0.2)

vpopmail_passwd — Change a virtual user's password

说明

bool vpopmail_passwd ( string $user , string $domain , string $password [, bool $apop ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

vpopmail_error
vpopmail_set_user_quota
vpopmail 函数


Sets a virtual user's quota

vpopmail_passwd
数学扩展
vpopmail 函数
PHP Manual

vpopmail_set_user_quota

(PHP 4 >= 4.0.5, PECL vpopmail >= 0.2)

vpopmail_set_user_quota — Sets a virtual user's quota

说明

bool vpopmail_set_user_quota ( string $user , string $domain , string $quota )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

vpopmail_passwd
数学扩展
vpopmail 函数


数学扩展

  • BC Math — BCMath 任意精度数学
    • 简介
    • 安装／配置
    • 预定义常量
    • BC 数学 函数
  • GMP — GNU Multiple Precision
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • GMP 函数
    • GMP — The GMP class
  • Lapack
    • 简介
    • 安装／配置
    • 预定义常量
    • Lapack — The Lapack class
    • LapackException — The LapackException class
  • Math — Mathematical Functions
    • 简介
    • 安装／配置
    • 预定义常量
    • Math 函数
  • Statistics
    • 简介
    • 安装／配置
    • 预定义常量
    • Statistic 函数
  • Trader — Technical Analysis for Traders
    • 简介
    • 安装／配置
    • 预定义常量
    • Trader 函数
vpopmail_set_user_quota
BC Math
函数参考


BCMath 任意精度数学

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • BC 数学 函数
    • bcadd — 2个任意精度数字的加法计算
    • bccomp — 比较两个任意精度的数字
    • bcdiv — 2个任意精度的数字除法计算
    • bcmod — 对一个任意精度数字取模
    • bcmul — 2个任意精度数字乘法计算
    • bcpow — 任意精度数字的乘方
    • bcpowmod — Raise an arbitrary precision number to another, reduced by a specified modulus
    • bcscale — 设置所有bc数学函数的默认小数点保留位数
    • bcsqrt — 任意精度数字的二次方根
    • bcsub — 2个任意精度数字的减法
数学扩展
简介
数学扩展


简介

对于任意精度的数学，PHP提供了支持用字符串表示的任意大小和精度的数字的二进制计算，最多为2147483647-1（或0x7FFFFFFF-1）。

BC Math
安装／配置
BC Math


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
BC Math


需求

自 PHP 4.0.4，libbcmath 随同 PHP 一起发布。该扩展不需要任何外部的库。

安装／配置
安装
安装／配置


安装

本类函数仅在 PHP 编译时配置了 --enable-bcmath 时可用。

PHP 的 Windows 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

BC 数学库配置选项
名字 | 默认 | 可修改范围 | 更新日志
bcmath.scale | "0" | PHP_INI_ALL |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

bcmath.scale integer

所有 bcmath 函数中十进制数字的数目。参见 bcscale()。

安装
资源类型
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
BC 数学 函数
BC Math


BC 数学 函数

Table of Contents

  • bcadd — 2个任意精度数字的加法计算
  • bccomp — 比较两个任意精度的数字
  • bcdiv — 2个任意精度的数字除法计算
  • bcmod — 对一个任意精度数字取模
  • bcmul — 2个任意精度数字乘法计算
  • bcpow — 任意精度数字的乘方
  • bcpowmod — Raise an arbitrary precision number to another, reduced by a specified modulus
  • bcscale — 设置所有bc数学函数的默认小数点保留位数
  • bcsqrt — 任意精度数字的二次方根
  • bcsub — 2个任意精度数字的减法
预定义常量
bcadd
BC Math


2个任意精度数字的加法计算

BC 数学 函数
bccomp
BC 数学 函数
PHP Manual

bcadd

(PHP 4, PHP 5, PHP 7)

bcadd — 2个任意精度数字的加法计算

说明

string bcadd ( string $left_operand , string $right_operand [, int $scale ] )

左操作数和右操作数求和

参数

left_operand

左操作数，字符串类型

right_operand

右操作数，字符串类型

scale

此可选参数用于设置结果中小数点后的小数位数。也可通过使用 bcscale() 来设置全局默认的小数位数，用于所有函数。

返回值

2个操作数求和之后的结果以字符串返回

范例

Example #1 bcadd() 示例

<?php

$a = '1.234';
$b = '5';

echo bcadd($a, $b);     // 6
echo bcadd($a, $b, 4);  // 6.2340

?>

参见

  • bcsub() - 2个任意精度数字的减法

BC 数学 函数
bccomp
BC 数学 函数


比较两个任意精度的数字

bcadd
bcdiv
BC 数学 函数
PHP Manual

bccomp

(PHP 4, PHP 5, PHP 7)

bccomp — 比较两个任意精度的数字

说明

int bccomp ( string $left_operand , string $right_operand [, int $scale = int ] )

把right_operand和left_operand作比较, 并且返回一个整数的结果.

参数

left_operand

左边的运算数, 是一个字符串.

right_operand

右边的运算数, 是一个字符串.

scale

可选的scale参数被用作设置指示数字， 在使用来作比较的小数点部分.

返回值

如果两个数相等返回0, 左边的数left_operand比较右边的数right_operand大返回1, 否则返回-1.

范例

Example #1 bccomp() example

<?php

echo bccomp('1', '2') . "\n";   // -1
echo bccomp('1.00001', '1', 3); // 0
echo bccomp('1.00001', '1', 5); // 1

?>
bcadd
bcdiv
BC 数学 函数


2个任意精度的数字除法计算

bccomp
bcmod
BC 数学 函数
PHP Manual

bcdiv

(PHP 4, PHP 5, PHP 7)

bcdiv — 2个任意精度的数字除法计算

说明

string bcdiv ( string $left_operand , string $right_operand [, int $scale = int ] )

左操作数除以右操作数

参数

left_operand

左操作数，字符串类型

right_operand

右操作数，字符串类型

scale

此可选参数用于设置结果中小数点后的小数位数。也可通过使用 bcscale() 来设置全局默认的小数位数，用于所有函数。

返回值

返回结果为字符串类型的结果，如果右操作数是0结果为null

范例

Example #1 bcdiv() 示例

<?php

echo bcdiv('105', '6.55957', 3);  // 16.007

?>

参见

  • bcmul() - 2个任意精度数字乘法计算

bccomp
bcmod
BC 数学 函数


对一个任意精度数字取模

bcdiv
bcmul
BC 数学 函数
PHP Manual

bcmod

(PHP 4, PHP 5, PHP 7)

bcmod — 对一个任意精度数字取模

说明

string bcmod ( string $left_operand , string $modulus )

对左操作数使用系数取模

参数

left_operand

字符串类型的左操作数

modulus

字符串类型系数

返回值

返回字符串类型取模后结果，如果系数为0则返回null

范例

Example #1 bcmod() example

<?php
echo bcmod('4', '2'); // 0
echo bcmod('2', '4'); // 2
?>

参见

  • bcdiv() - 2个任意精度的数字除法计算

bcdiv
bcmul
BC 数学 函数


2个任意精度数字乘法计算

bcmod
bcpow
BC 数学 函数
PHP Manual

bcmul

(PHP 4, PHP 5, PHP 7)

bcmul — 2个任意精度数字乘法计算

说明

string bcmul ( string $left_operand , string $right_operand [, int $scale = int ] )

左操作数乘以右操作数

参数

left_operand

字符串类型的左操作数.

right_operand

字符串类型的右操作数.

scale

此可选参数用于设置结果中小数点后的小数位数。也可通过使用 bcscale() 来设置全局默认的小数位数，用于所有函数。

返回值

返回结果为字符串类型.

范例

Example #1 bcmul() 示例

<?php
echo bcmul('1.34747474747', '35', 3); // 47.161
echo bcmul('2', '4'); // 8
?>

参见

  • bcdiv() - 2个任意精度的数字除法计算

bcmod
bcpow
BC 数学 函数


任意精度数字的乘方

bcmul
bcpowmod
BC 数学 函数
PHP Manual

bcpow

(PHP 4, PHP 5, PHP 7)

bcpow — 任意精度数字的乘方

说明

string bcpow ( string $left_operand , string $right_operand [, int $scale ] )

左操作数的右操作数次方运算.

参数

left_operand

字符串类型的左操作数.

right_operand

字符串类型的右操作数.

scale

此可选参数用于设置结果中小数点后的小数位数。也可通过使用 bcscale() 来设置全局默认的小数位数，用于所有函数。

返回值

返回结果为字符串类型.

范例

Example #1 bcpow() 示例

<?php

echo bcpow('4.2', '3', 2); // 74.08

?>

注释

Note:

bcpow() may return a result with fewer digits after the decimal point than the scale parameter would indicate. This only occurs when the result doesn't require all of the precision allowed by the scale. For example:

Example #2 bcpow() scale example

<?php
echo bcpow('5', '2', 2);     // prints "25", not "25.00"
?>

参见

  • bcpowmod() - Raise an arbitrary precision number to another, reduced by a specified modulus
  • bcsqrt() - 任意精度数字的二次方根

bcmul
bcpowmod
BC 数学 函数


Raise an arbitrary precision number to another, reduced by a specified modulus

bcpow
bcscale
BC 数学 函数
PHP Manual

bcpowmod

(PHP 5, PHP 7)

bcpowmod — Raise an arbitrary precision number to another, reduced by a specified modulus

说明

string bcpowmod ( string $left_operand , string $right_operand , string $modulus [, int $scale = 0 ] )

Use the fast-exponentiation method to raise left_operand to the power right_operand with respect to the modulus modulus.

参数

left_operand

The left operand, as a string.

right_operand

The right operand, as a string.

modulus

The modulus, as a string.

scale

此可选参数用于设置结果中小数点后的小数位数。也可通过使用 bcscale() 来设置全局默认的小数位数，用于所有函数。

返回值

Returns the result as a string, or NULL if modulus is 0.

注释

Note:

Because this method uses the modulus operation, numbers which are not positive integers may give unexpected results.

范例

The following two statements are functionally identical. The bcpowmod() version however, executes in less time and can accept larger parameters.

<?php
$a = bcpowmod($x, $y, $mod);

$b = bcmod(bcpow($x, $y), $mod);

// $a and $b are equal to each other.

?>

参见

  • bcpow() - 任意精度数字的乘方
  • bcmod() - 对一个任意精度数字取模

bcpow
bcscale
BC 数学 函数


设置所有bc数学函数的默认小数点保留位数

bcpowmod
bcsqrt
BC 数学 函数
PHP Manual

bcscale

(PHP 4, PHP 5, PHP 7)

bcscale — 设置所有bc数学函数的默认小数点保留位数

说明

bool bcscale ( int $scale )

设置所有bc数学函数的未设定情况下得小数点保留位数.

参数

scale

小数点保留位数.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 bcscale() example

<?php

// default scale : 3
bcscale(3);
echo bcdiv('105', '6.55957'); // 16.007

// this is the same without bcscale()
echo bcdiv('105', '6.55957', 3); // 16.007

?>

bcpowmod
bcsqrt
BC 数学 函数


任意精度数字的二次方根

bcscale
bcsub
BC 数学 函数
PHP Manual

bcsqrt

(PHP 4, PHP 5, PHP 7)

bcsqrt — 任意精度数字的二次方根

说明

string bcsqrt ( string $operand [, int $scale ] )

返回操作数的二次方根.

参数

operand

字符串类型的操作数.

scale

此可选参数用于设置结果中小数点后的小数位数。也可通过使用 bcscale() 来设置全局默认的小数位数，用于所有函数。

返回值

返回二次方根的结果为字符串类型，如果操作数是负数则返回null.

范例

Example #1 bcsqrt() 示例

<?php

echo bcsqrt('2', 3); // 1.414

?>

参见

  • bcpow() - 任意精度数字的乘方

bcscale
bcsub
BC 数学 函数


2个任意精度数字的减法

bcsqrt
GMP
BC 数学 函数
PHP Manual

bcsub

(PHP 4, PHP 5, PHP 7)

bcsub — 2个任意精度数字的减法

说明

string bcsub ( string $left_operand , string $right_operand [, int $scale = int ] )

左操作数减去右操作数.

参数

left_operand

字符串类型的左操作数.

right_operand

字符串类型的右操作数.

scale

此可选参数用于设置结果中小数点后的小数位数。也可通过使用 bcscale() 来设置全局默认的小数位数，用于所有函数。

返回值

返回减法之后结果为字符串类型.

范例

Example #1 bcsub() example

<?php

$a = '1.234';
$b = '5';

echo bcsub($a, $b);     // -3
echo bcsub($a, $b, 4);  // -3.7660

?>

参见

  • bcadd() - 2个任意精度数字的加法计算

bcsqrt
GMP
BC 数学 函数


GNU Multiple Precision

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • GMP 函数
    • gmp_abs — Absolute value
    • gmp_add — Add numbers
    • gmp_and — Bitwise AND
    • gmp_clrbit — Clear bit
    • gmp_cmp — Compare numbers
    • gmp_com — Calculates one's complement
    • gmp_div_q — Divide numbers
    • gmp_div_qr — Divide numbers and get quotient and remainder
    • gmp_div_r — Remainder of the division of numbers
    • gmp_div — 别名 gmp_div_q
    • gmp_divexact — Exact division of numbers
    • gmp_export — Export to a binary string
    • gmp_fact — Factorial
    • gmp_gcd — Calculate GCD
    • gmp_gcdext — Calculate GCD and multipliers
    • gmp_hamdist — Hamming distance
    • gmp_import — Import from a binary string
    • gmp_init — Create GMP number
    • gmp_intval — Convert GMP number to integer
    • gmp_invert — Inverse by modulo
    • gmp_jacobi — Jacobi symbol
    • gmp_legendre — Legendre symbol
    • gmp_mod — Modulo operation
    • gmp_mul — Multiply numbers
    • gmp_neg — Negate number
    • gmp_nextprime — Find next prime number
    • gmp_or — Bitwise OR
    • gmp_perfect_square — Perfect square check
    • gmp_popcount — Population count
    • gmp_pow — Raise number into power
    • gmp_powm — Raise number into power with modulo
    • gmp_prob_prime — Check if number is "probably prime"
    • gmp_random_bits — Random number
    • gmp_random_range — Random number
    • gmp_random_seed — Sets the RNG seed
    • gmp_random — Random number
    • gmp_root — Take the integer part of nth root
    • gmp_rootrem — Take the integer part and remainder of nth root
    • gmp_scan0 — Scan for 0
    • gmp_scan1 — Scan for 1
    • gmp_setbit — Set bit
    • gmp_sign — Sign of number
    • gmp_sqrt — Calculate square root
    • gmp_sqrtrem — Square root with remainder
    • gmp_strval — Convert GMP number to string
    • gmp_sub — Subtract numbers
    • gmp_testbit — Tests if a bit is set
    • gmp_xor — Bitwise XOR
  • GMP — The GMP class
bcsub
简介
数学扩展


简介

These functions allow for arbitrary-length integers to be worked with using the GNU MP library.

Note:

Most GMP functions accept GMP number arguments. These are shown in this documentation as GMP objects. However, note that PHP 5.5 and earlier represented GMP numbers as resources. Most of these functions will also accept numeric and string arguments, so long as it is possible to convert the latter to a number. Also, if there is a more performant function that can operate on the arguments (integers only), then it will be used instead (this is done transparently). See also the gmp_init() function.

Note:

From PHP 5.6 onwards, the arithmetic, bitwise, and comparison operators may be used with the GMP objects returned from gmp_init() and other GMP functions.

Warning

Large integers must be specified as strings - otherwise, PHP will coerce them to floats, resulting in a loss of precision.

Note: This extension is available on Windows platforms since PHP 5.1.0.

GMP
安装／配置
GMP


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
GMP


需求

The GMP library can be downloaded from » http://gmplib.org/#DOWNLOAD. This site also has the GMP manual available.

At least GMP version 2 is required, with some functions requiring a more recent version of the GMP library.

安装／配置
安装
安装／配置


安装

In order to have these functions available, PHP must be compiled with GMP support by using the --with-gmp option.

需求
运行时配置
安装／配置


资源类型

Prior to PHP 5.6, most GMP functions operate on or return GMP number resources. PHP 5.6 onwards uses GMP objects in place of GMP number resources.

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

GMP_ROUND_ZERO (integer)
GMP_ROUND_PLUSINF (integer)
GMP_ROUND_MINUSINF (integer)
GMP_MSW_FIRST (integer)
GMP_LSW_FIRST (integer)
GMP_LITTLE_ENDIAN (integer)
GMP_BIG_ENDIAN (integer)
GMP_NATIVE_ENDIAN (integer)
GMP_VERSION (string)
The GMP library version
资源类型
范例
GMP


范例

Example #1 Factorial function using GMP

<?php
function fact($x)
{
    $return = 1;
    for ($i=2; $i <= $x; $i++) {
        $return = gmp_mul($return, $i);
    }
    return $return;
}

echo gmp_strval(fact(1000)) . "\n";
?>

This will calculate factorial of 1000 (pretty big number) very fast.

预定义常量
GMP 函数
GMP


GMP 函数

参见

More mathematical functions can be found in the 数学扩展 section

Table of Contents

  • gmp_abs — Absolute value
  • gmp_add — Add numbers
  • gmp_and — Bitwise AND
  • gmp_clrbit — Clear bit
  • gmp_cmp — Compare numbers
  • gmp_com — Calculates one's complement
  • gmp_div_q — Divide numbers
  • gmp_div_qr — Divide numbers and get quotient and remainder
  • gmp_div_r — Remainder of the division of numbers
  • gmp_div — 别名 gmp_div_q
  • gmp_divexact — Exact division of numbers
  • gmp_export — Export to a binary string
  • gmp_fact — Factorial
  • gmp_gcd — Calculate GCD
  • gmp_gcdext — Calculate GCD and multipliers
  • gmp_hamdist — Hamming distance
  • gmp_import — Import from a binary string
  • gmp_init — Create GMP number
  • gmp_intval — Convert GMP number to integer
  • gmp_invert — Inverse by modulo
  • gmp_jacobi — Jacobi symbol
  • gmp_legendre — Legendre symbol
  • gmp_mod — Modulo operation
  • gmp_mul — Multiply numbers
  • gmp_neg — Negate number
  • gmp_nextprime — Find next prime number
  • gmp_or — Bitwise OR
  • gmp_perfect_square — Perfect square check
  • gmp_popcount — Population count
  • gmp_pow — Raise number into power
  • gmp_powm — Raise number into power with modulo
  • gmp_prob_prime — Check if number is "probably prime"
  • gmp_random_bits — Random number
  • gmp_random_range — Random number
  • gmp_random_seed — Sets the RNG seed
  • gmp_random — Random number
  • gmp_root — Take the integer part of nth root
  • gmp_rootrem — Take the integer part and remainder of nth root
  • gmp_scan0 — Scan for 0
  • gmp_scan1 — Scan for 1
  • gmp_setbit — Set bit
  • gmp_sign — Sign of number
  • gmp_sqrt — Calculate square root
  • gmp_sqrtrem — Square root with remainder
  • gmp_strval — Convert GMP number to string
  • gmp_sub — Subtract numbers
  • gmp_testbit — Tests if a bit is set
  • gmp_xor — Bitwise XOR
范例
gmp_abs
GMP


Absolute value

GMP 函数
gmp_add
GMP 函数
PHP Manual

gmp_abs

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_abs — Absolute value

说明

GMP gmp_abs ( GMP $a )

Get the absolute value of a number.

参数

a

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

Returns the absolute value of a, as a GMP number.

范例

Example #1 gmp_abs() example

<?php
$abs1 = gmp_abs("274982683358");
$abs2 = gmp_abs("-274982683358");

echo gmp_strval($abs1) . "\n";
echo gmp_strval($abs2) . "\n";
?>

以上例程会输出：

274982683358
274982683358

GMP 函数
gmp_add
GMP 函数


Add numbers

gmp_abs
gmp_and
GMP 函数
PHP Manual

gmp_add

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_add — Add numbers

说明

GMP gmp_add ( GMP $a , GMP $b )

Add two numbers.

参数

a

The first summand (augent).

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

b

The second summand (addend).

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

A GMP number representing the sum of the arguments.

范例

Example #1 gmp_add() example

<?php
$sum = gmp_add("123456789012345", "76543210987655");
echo gmp_strval($sum) . "\n";
?>

以上例程会输出：

200000000000000

gmp_abs
gmp_and
GMP 函数


Bitwise AND

gmp_add
gmp_clrbit
GMP 函数
PHP Manual

gmp_and

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_and — Bitwise AND

说明

GMP gmp_and ( GMP $a , GMP $b )

Calculates bitwise AND of two GMP numbers.

参数

a

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

b

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

A GMP number representing the bitwise AND comparison.

范例

Example #1 gmp_and() example

<?php
$and1 = gmp_and("0xfffffffff4", "0x4");
$and2 = gmp_and("0xfffffffff4", "0x8");
echo gmp_strval($and1) . "\n";
echo gmp_strval($and2) . "\n";
?>

以上例程会输出：

4
0
gmp_add
gmp_clrbit
GMP 函数


Clear bit

gmp_and
gmp_cmp
GMP 函数
PHP Manual

gmp_clrbit

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_clrbit — Clear bit

说明

void gmp_clrbit ( GMP $a , int $index )

Clears (sets to 0) bit index in a. The index starts at 0.

参数

a

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

index

The index of the bit to clear. Index 0 represents the least significant bit.

返回值

GMP 数值资源.

范例

Example #1 gmp_clrbit() example

<?php
$a = gmp_init("0xff");
gmp_clrbit($a, 0); // index starts at 0, least significant bit
echo gmp_strval($a) . "\n";
?>

以上例程会输出：

254

注释

Note:

Unlike most of the other GMP functions, gmp_clrbit() must be called with a GMP resource that already exists (using gmp_init() for example). One will not be automatically created.

参见

  • gmp_setbit() - Set bit
  • gmp_testbit() - Tests if a bit is set

gmp_and
gmp_cmp
GMP 函数


Compare numbers

gmp_clrbit
gmp_com
GMP 函数
PHP Manual

gmp_cmp

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_cmp — Compare numbers

说明

int gmp_cmp ( GMP $a , GMP $b )

Compares two numbers.

参数

a

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

b

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

Returns a positive value if a > b, zero if a = b and a negative value if a < b.

范例

Example #1 gmp_cmp() example

<?php
$cmp1 = gmp_cmp("1234", "1000"); // greater than
$cmp2 = gmp_cmp("1000", "1234"); // less than
$cmp3 = gmp_cmp("1234", "1234"); // equal to

echo "$cmp1 $cmp2 $cmp3\n";
?>

以上例程会输出：

1 -1 0
gmp_clrbit
gmp_com
GMP 函数


Calculates one's complement

gmp_cmp
gmp_div_q
GMP 函数
PHP Manual

gmp_com

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_com — Calculates one's complement

说明

GMP gmp_com ( GMP $a )

Returns the one's complement of a.

参数

a

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

Returns the one's complement of a, as a GMP number.

范例

Example #1 gmp_com() example

<?php
$com = gmp_com("1234");
echo gmp_strval($com) . "\n";
?>

以上例程会输出：

-1235
gmp_cmp
gmp_div_q
GMP 函数


Divide numbers

gmp_com
gmp_div_qr
GMP 函数
PHP Manual

gmp_div_q

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_div_q — Divide numbers

说明

GMP gmp_div_q ( GMP $a , GMP $b [, int $round = GMP_ROUND_ZERO ] )

Divides a by b and returns the integer result.

参数

a

The number being divided.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

b

The number that a is being divided by.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

round

The result rounding is defined by the round, which can have the following values:

  • GMP_ROUND_ZERO: The result is truncated towards 0.
  • GMP_ROUND_PLUSINF: The result is rounded towards +infinity.
  • GMP_ROUND_MINUSINF: The result is rounded towards -infinity.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

GMP 数值资源.

范例

Example #1 gmp_div_q() example

<?php
$div1 = gmp_div_q("100", "5");
echo gmp_strval($div1) . "\n";

$div2 = gmp_div_q("1", "3");
echo gmp_strval($div2) . "\n";

$div3 = gmp_div_q("1", "3", GMP_ROUND_PLUSINF);
echo gmp_strval($div3) . "\n";

$div4 = gmp_div_q("-1", "4", GMP_ROUND_PLUSINF);
echo gmp_strval($div4) . "\n";

$div5 = gmp_div_q("-1", "4", GMP_ROUND_MINUSINF);
echo gmp_strval($div5) . "\n";
?>

以上例程会输出：

20
0
1
0
-1

注释

Note:

This function can also be called as gmp_div().

参见

  • gmp_div_r() - Remainder of the division of numbers
  • gmp_div_qr() - Divide numbers and get quotient and remainder

gmp_com
gmp_div_qr
GMP 函数


Divide numbers and get quotient and remainder

gmp_div_q
gmp_div_r
GMP 函数
PHP Manual

gmp_div_qr

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_div_qr — Divide numbers and get quotient and remainder

说明

array gmp_div_qr ( GMP $n , GMP $d [, int $round = GMP_ROUND_ZERO ] )

The function divides n by d.

参数

n

The number being divided.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

d

The number that n is being divided by.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

round

See the gmp_div_q() function for description of the round argument.

返回值

Returns an array, with the first element being [n/d] (the integer result of the division) and the second being (n - [n/d] * d) (the remainder of the division).

范例

Example #1 Division of GMP numbers

<?php
$a = gmp_init("0x41682179fbf5");
$res = gmp_div_qr($a, "0xDEFE75");
printf("Result is: q - %s, r - %s",
       gmp_strval($res[0]), gmp_strval($res[1]));
?>

参见

  • gmp_div_q() - Divide numbers
  • gmp_div_r() - Remainder of the division of numbers

gmp_div_q
gmp_div_r
GMP 函数


Remainder of the division of numbers

gmp_div_qr
gmp_div
GMP 函数
PHP Manual

gmp_div_r

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_div_r — Remainder of the division of numbers

说明

GMP gmp_div_r ( GMP $n , GMP $d [, int $round = GMP_ROUND_ZERO ] )

Calculates remainder of the integer division of n by d. The remainder has the sign of the n argument, if not zero.

参数

n

The number being divided.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

d

The number that n is being divided by.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

round

See the gmp_div_q() function for description of the round argument.

返回值

The remainder, as a GMP number.

范例

Example #1 gmp_div_r() example

<?php
$div = gmp_div_r("105", "20");
echo gmp_strval($div) . "\n";
?>

以上例程会输出：

5

参见

  • gmp_div_q() - Divide numbers
  • gmp_div_qr() - Divide numbers and get quotient and remainder

gmp_div_qr
gmp_div
GMP 函数


别名 gmp_div_q

gmp_div_r
gmp_divexact
GMP 函数
PHP Manual

gmp_div

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_div — 别名 gmp_div_q()

说明

此函数是该函数的别名： gmp_div_q().

gmp_div_r
gmp_divexact
GMP 函数


Exact division of numbers

gmp_div
gmp_export
GMP 函数
PHP Manual

gmp_divexact

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_divexact — Exact division of numbers

说明

GMP gmp_divexact ( GMP $n , GMP $d )

Divides n by d, using fast "exact division" algorithm. This function produces correct results only when it is known in advance that d divides n.

参数

n

The number being divided.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

d

The number that a is being divided by.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

GMP 数值资源.

范例

Example #1 gmp_divexact() example

<?php
$div1 = gmp_divexact("10", "2");
echo gmp_strval($div1) . "\n";

$div2 = gmp_divexact("10", "3"); // bogus result
echo gmp_strval($div2) . "\n";
?>

以上例程会输出：

5
2863311534

gmp_div
gmp_export
GMP 函数


Export to a binary string

gmp_divexact
gmp_fact
GMP 函数
PHP Manual

gmp_export

(PHP 5 >= 5.6.1, PHP 7)

gmp_export — Export to a binary string

说明

string gmp_export ( GMP $gmpnumber , integer $word_size , integer $options )

Export a GMP number to a binary string

参数

gmpnumber

The GMP number being exported

word_size

Default value is 1. The number of bytes in each chunk of binary data. This is mainly used in conjunction with the options parameter.

options

Default value is GMP_MSW_FIRST | GMP_NATIVE_ENDIAN.

返回值

Returns a string 或者在失败时返回 FALSE.

范例

Example #1 gmp_export() example

<?php
$number = gmp_init(16705);
echo gmp_export($number) . "\n";
?>

以上例程会输出：

AA

gmp_divexact
gmp_fact
GMP 函数


Factorial

gmp_export
gmp_gcd
GMP 函数
PHP Manual

gmp_fact

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_fact — Factorial

说明

GMP gmp_fact ( mixed $a )

Calculates factorial (a!) of a.

参数

a

The factorial number.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

GMP 数值资源.

范例

Example #1 gmp_fact() example

<?php
$fact1 = gmp_fact(5); // 5 * 4 * 3 * 2 * 1
echo gmp_strval($fact1) . "\n";

$fact2 = gmp_fact(50); // 50 * 49 * 48, ... etc
echo gmp_strval($fact2) . "\n";
?>

以上例程会输出：

120
30414093201713378043612608166064768844377641568960512000000000000

gmp_export
gmp_gcd
GMP 函数


Calculate GCD

gmp_fact
gmp_gcdext
GMP 函数
PHP Manual

gmp_gcd

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_gcd — Calculate GCD

说明

GMP gmp_gcd ( GMP $a , GMP $b )

Calculate greatest common divisor of a and b. The result is always positive even if either of, or both, input operands are negative.

参数

a

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

b

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

A positive GMP number that divides into both a and b.

范例

Example #1 gmp_gcd() example

<?php
$gcd = gmp_gcd("12", "21");
echo gmp_strval($gcd) . "\n";
?>

以上例程会输出：

3

gmp_fact
gmp_gcdext
GMP 函数


Calculate GCD and multipliers

gmp_gcd
gmp_hamdist
GMP 函数
PHP Manual

gmp_gcdext

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_gcdext — Calculate GCD and multipliers

说明

array gmp_gcdext ( GMP $a , GMP $b )

Calculates g, s, and t, such that a*s + b*t = g = gcd(a,b), where gcd is the greatest common divisor. Returns an array with respective elements g, s and t.

This function can be used to solve linear Diophantine equations in two variables. These are equations that allow only integer solutions and have the form: a*x + b*y = c. For more information, go to the » "Diophantine Equation" page at MathWorld

参数

a

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

b

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

An array of GMP numbers.

范例

Example #1 Solving a linear Diophantine equation

<?php
// Solve the equation a*s + b*t = g
// where a = 12, b = 21, g = gcd(12, 21) = 3
$a = gmp_init(12);
$b = gmp_init(21);
$g = gmp_gcd($a, $b);
$r = gmp_gcdext($a, $b);

$check_gcd = (gmp_strval($g) == gmp_strval($r['g']));
$eq_res = gmp_add(gmp_mul($a, $r['s']), gmp_mul($b, $r['t']));
$check_res = (gmp_strval($g) == gmp_strval($eq_res));

if ($check_gcd && $check_res) {
    $fmt = "Solution: %d*%d + %d*%d = %d\n";
    printf($fmt, gmp_strval($a), gmp_strval($r['s']), gmp_strval($b),
    gmp_strval($r['t']), gmp_strval($r['g']));
} else {
    echo "Error while solving the equation\n";
}

// output: Solution: 12*2 + 21*-1 = 3
?>

gmp_gcd
gmp_hamdist
GMP 函数


Hamming distance

gmp_gcdext
gmp_import
GMP 函数
PHP Manual

gmp_hamdist

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_hamdist — Hamming distance

说明

int gmp_hamdist ( GMP $a , GMP $b )

Returns the hamming distance between a and b. Both operands should be non-negative.

参数

a

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

It should be positive.

b

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

It should be positive.

返回值

GMP 数值资源.

范例

Example #1 gmp_hamdist() example

<?php
$ham1 = gmp_init("1001010011", 2);
$ham2 = gmp_init("1011111100", 2);
echo gmp_hamdist($ham1, $ham2) . "\n";

/* hamdist is equivalent to: */
echo gmp_popcount(gmp_xor($ham1, $ham2)) . "\n";
?>

以上例程会输出：

6
6

参见

  • gmp_popcount() - Population count
  • gmp_xor() - Bitwise XOR

gmp_gcdext
gmp_import
GMP 函数


Import from a binary string

gmp_hamdist
gmp_init
GMP 函数
PHP Manual

gmp_import

(PHP 5 >= 5.6.1, PHP 7)

gmp_import — Import from a binary string

说明

GMP gmp_import ( string $data , integer $word_size , integer $options )

Import a GMP number from a binary string

参数

data

The binary string being imported

word_size

Default value is 1. The number of bytes in each chunk of binary data. This is mainly used in conjunction with the options parameter.

options

Default value is GMP_MSW_FIRST | GMP_NATIVE_ENDIAN.

返回值

Returns a GMP number 或者在失败时返回 FALSE.

范例

Example #1 gmp_import() example

<?php
$number = gmp_import("\0");
echo gmp_strval($number) . "\n";

$number = gmp_import("\0\1\2");
echo gmp_strval($number) . "\n";
?>

以上例程会输出：

0
258

gmp_hamdist
gmp_init
GMP 函数


Create GMP number

gmp_import
gmp_intval
GMP 函数
PHP Manual

gmp_init

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_init — Create GMP number

说明

GMP gmp_init ( mixed $number [, int $base = 0 ] )

Creates a GMP number from an integer or string.

参数

number

An integer or a string. The string representation can be decimal, hexadecimal or octal.

base

The base.

The base may vary from 2 to 36. If base is 0 (default value), the actual base is determined from the leading characters: if the first two characters are 0x or 0X, hexadecimal is assumed, otherwise if the first character is "0", octal is assumed, otherwise decimal is assumed.

返回值

GMP 数值资源.

更新日志

版本 | 说明
5.3.2 | The base was extended from 2 to 36, to 2 to 62 and -2 to -36.

注释

Note:

To use the extended base introduced in PHP 5.3.2, then PHP must be compiled against GMP 4.2.0 or greater.

范例

Example #1 Creating GMP number

<?php
$a = gmp_init(123456);
$b = gmp_init("0xFFFFDEBACDFEDF7200");
?>

注释

Note:

It is not necessary to call this function in order to use integers or strings in place of GMP numbers in GMP functions (such as with gmp_add()). Function arguments are automatically converted to GMP numbers, if such conversion is possible and needed, using the same rules as gmp_init().

gmp_import
gmp_intval
GMP 函数


Convert GMP number to integer

gmp_init
gmp_invert
GMP 函数
PHP Manual

gmp_intval

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_intval — Convert GMP number to integer

说明

int gmp_intval ( GMP $gmpnumber )

This function converts GMP number into native PHP integers.

参数

gmpnumber

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

The integer value of gmpnumber.

范例

Example #1 gmp_intval() example

<?php
// displays correct result
echo gmp_intval("2147483647") . "\n";

// displays wrong result, above PHP integer limit
echo gmp_intval("2147483648") . "\n";

// displays correct result
echo gmp_strval("2147483648") . "\n";
?>

以上例程会输出：

2147483647
2147483647
2147483648

注释

Warning

This function returns a useful result only if the number actually fits the PHP integer (i.e., signed long type). To simply print the GMP number, use gmp_strval().

gmp_init
gmp_invert
GMP 函数


Inverse by modulo

gmp_intval
gmp_jacobi
GMP 函数
PHP Manual

gmp_invert

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_invert — Inverse by modulo

说明

GMP gmp_invert ( GMP $a , GMP $b )

Computes the inverse of a modulo b.

参数

a

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

b

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

A GMP number on success or FALSE if an inverse does not exist.

范例

Example #1 gmp_invert() example

<?php
echo gmp_invert("5", "10"); // no inverse, outputs nothing, result is FALSE
$invert = gmp_invert("5", "11");
echo gmp_strval($invert) . "\n";
?>

以上例程会输出：

9

gmp_intval
gmp_jacobi
GMP 函数


Jacobi symbol

gmp_invert
gmp_legendre
GMP 函数
PHP Manual

gmp_jacobi

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_jacobi — Jacobi symbol

说明

int gmp_jacobi ( GMP $a , GMP $p )

Computes » Jacobi symbol of a and p. p should be odd and must be positive.

参数

a

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

p

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

Should be odd and must be positive.

返回值

GMP 数值资源.

范例

Example #1 gmp_jacobi() example

<?php
echo gmp_jacobi("1", "3") . "\n";
echo gmp_jacobi("2", "3") . "\n";
?>

以上例程会输出：

1
0

gmp_invert
gmp_legendre
GMP 函数


Legendre symbol

gmp_jacobi
gmp_mod
GMP 函数
PHP Manual

gmp_legendre

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_legendre — Legendre symbol

说明

int gmp_legendre ( GMP $a , GMP $p )

Compute the » Legendre symbol of a and p. p should be odd and must be positive.

参数

a

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

p

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

Should be odd and must be positive.

返回值

GMP 数值资源.

范例

Example #1 gmp_legendre() example

<?php
echo gmp_legendre("1", "3") . "\n";
echo gmp_legendre("2", "3") . "\n";
?>

以上例程会输出：

1
0

gmp_jacobi
gmp_mod
GMP 函数


Modulo operation

gmp_legendre
gmp_mul
GMP 函数
PHP Manual

gmp_mod

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_mod — Modulo operation

说明

GMP gmp_mod ( GMP $n , GMP $d )

Calculates n modulo d. The result is always non-negative, the sign of d is ignored.

参数

n

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

d

The modulo that is being evaluated.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

GMP 数值资源.

范例

Example #1 gmp_mod() example

<?php
$mod = gmp_mod("8", "3");
echo gmp_strval($mod) . "\n";
?>

以上例程会输出：

2

gmp_legendre
gmp_mul
GMP 函数


Multiply numbers

gmp_mod
gmp_neg
GMP 函数
PHP Manual

gmp_mul

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_mul — Multiply numbers

说明

GMP gmp_mul ( GMP $a , GMP $b )

Multiplies a by b and returns the result.

参数

a

A number that will be multiplied by b.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

b

A number that will be multiplied by a.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

GMP 数值资源.

范例

Example #1 gmp_mul() example

<?php
$mul = gmp_mul("12345678", "2000");
echo gmp_strval($mul) . "\n";
?>

以上例程会输出：

24691356000

gmp_mod
gmp_neg
GMP 函数


Negate number

gmp_mul
gmp_nextprime
GMP 函数
PHP Manual

gmp_neg

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_neg — Negate number

说明

GMP gmp_neg ( GMP $a )

Returns the negative value of a number.

参数

a

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

Returns -a, as a GMP number.

范例

Example #1 gmp_neg() example

<?php
$neg1 = gmp_neg("1");
echo gmp_strval($neg1) . "\n";
$neg2 = gmp_neg("-1");
echo gmp_strval($neg2) . "\n";
?>

以上例程会输出：

-1
1

gmp_mul
gmp_nextprime
GMP 函数


Find next prime number

gmp_neg
gmp_or
GMP 函数
PHP Manual

gmp_nextprime

(PHP 5 >= 5.2.0, PHP 7)

gmp_nextprime — Find next prime number

说明

GMP gmp_nextprime ( int $a )

Find next prime number

参数

a

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

Return the next prime number greater than a, as a GMP number.

范例

Example #1 gmp_nextprime() example

<?php
$prime1 = gmp_nextprime(10); // next prime number greater than 10
$prime2 = gmp_nextprime(-1000); // next prime number greater than -1000

echo gmp_strval($prime1) . "\n";
echo gmp_strval($prime2) . "\n";
?>

以上例程会输出：

11
-997

注释

Note:

This function uses a probabilistic algorithm to identify primes and chances to get a composite number are extremely small.

gmp_neg
gmp_or
GMP 函数


Bitwise OR

gmp_nextprime
gmp_perfect_square
GMP 函数
PHP Manual

gmp_or

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_or — Bitwise OR

说明

GMP gmp_or ( GMP $a , GMP $b )

Calculates bitwise inclusive OR of two GMP numbers.

参数

a

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

b

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

GMP 数值资源.

范例

Example #1 gmp_or() example

<?php
$or1 = gmp_or("0xfffffff2", "4");
echo gmp_strval($or1, 16) . "\n";
$or2 = gmp_or("0xfffffff2", "2");
echo gmp_strval($or2, 16) . "\n";
?>

以上例程会输出：

fffffff6
fffffff2

gmp_nextprime
gmp_perfect_square
GMP 函数


Perfect square check

gmp_or
gmp_popcount
GMP 函数
PHP Manual

gmp_perfect_square

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_perfect_square — Perfect square check

说明

bool gmp_perfect_square ( GMP $a )

Check if a number is a perfect square.

参数

a

The number being checked as a perfect square.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

Returns TRUE if a is a perfect square, FALSE otherwise.

范例

Example #1 gmp_perfect_square() example

<?php
// 3 * 3, perfect square
var_dump(gmp_perfect_square("9"));

// not a perfect square
var_dump(gmp_perfect_square("7"));

// 1234567890 * 1234567890, perfect square
var_dump(gmp_perfect_square("1524157875019052100"));
?>

以上例程会输出：

bool(true)
bool(false)
bool(true)

参见

  • gmp_sqrt() - Calculate square root
  • gmp_sqrtrem() - Square root with remainder

gmp_or
gmp_popcount
GMP 函数


Population count

gmp_perfect_square
gmp_pow
GMP 函数
PHP Manual

gmp_popcount

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_popcount — Population count

说明

int gmp_popcount ( GMP $a )

Get the population count.

参数

a

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

The population count of a, as an integer.

范例

Example #1 gmp_popcount() example

<?php
$pop1 = gmp_init("10000101", 2); // 3 1's
echo gmp_popcount($pop1) . "\n";
$pop2 = gmp_init("11111110", 2); // 7 1's
echo gmp_popcount($pop2) . "\n";
?>

以上例程会输出：

3
7

gmp_perfect_square
gmp_pow
GMP 函数


Raise number into power

gmp_popcount
gmp_powm
GMP 函数
PHP Manual

gmp_pow

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_pow — Raise number into power

说明

GMP gmp_pow ( GMP $base , int $exp )

Raise base into power exp.

参数

base

The base number.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

exp

The positive power to raise the base.

返回值

The new (raised) number, as a GMP number. The case of 0^0 yields 1.

范例

Example #1 gmp_pow() example

<?php
$pow1 = gmp_pow("2", 31);
echo gmp_strval($pow1) . "\n";
$pow2 = gmp_pow("0", 0);
echo gmp_strval($pow2) . "\n";
$pow3 = gmp_pow("2", -1); // Negative exp, generates warning
echo gmp_strval($pow3) . "\n";
?>

以上例程会输出：

2147483648
1

gmp_popcount
gmp_powm
GMP 函数


Raise number into power with modulo

gmp_pow
gmp_prob_prime
GMP 函数
PHP Manual

gmp_powm

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_powm — Raise number into power with modulo

说明

GMP gmp_powm ( GMP $base , GMP $exp , GMP $mod )

Calculate (base raised into power exp) modulo mod. If exp is negative, result is undefined.

参数

base

The base number.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

exp

The positive power to raise the base.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

mod

The modulo.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

The new (raised) number, as a GMP number.

范例

Example #1 gmp_powm() example

<?php
$pow1 = gmp_powm("2", "31", "2147483649");
echo gmp_strval($pow1) . "\n";
?>

以上例程会输出：

2147483648

gmp_pow
gmp_prob_prime
GMP 函数


Check if number is "probably prime"

gmp_powm
gmp_random_bits
GMP 函数
PHP Manual

gmp_prob_prime

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_prob_prime — Check if number is "probably prime"

说明

int gmp_prob_prime ( GMP $a [, int $reps = 10 ] )

The function uses Miller-Rabin's probabilistic test to check if a number is a prime.

参数

a

The number being checked as a prime.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

reps

Reasonable values of reps vary from 5 to 10 (default being 10); a higher value lowers the probability for a non-prime to pass as a "probable" prime.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

If this function returns 0, a is definitely not prime. If it returns 1, then a is "probably" prime. If it returns 2, then a is surely prime.

范例

Example #1 gmp_prob_prime() example

<?php
// definitely not a prime
echo gmp_prob_prime("6") . "\n";

// probably a prime
echo gmp_prob_prime("1111111111111111111") . "\n";

// definitely a prime
echo gmp_prob_prime("11") . "\n";
?>

以上例程会输出：

0
1
2

gmp_powm
gmp_random_bits
GMP 函数


Random number

gmp_prob_prime
gmp_random_range
GMP 函数
PHP Manual

gmp_random_bits

(PHP 5 >= 5.6.3, PHP 7)

gmp_random_bits — Random number

说明

GMP gmp_random_bits ( integer $bits )

Generate a random number. The number will be between 0 and (2 ** bits) - 1.

bits must greater than 0, and the maximum value is restricted by available memory.

参数

bits

The number of bits.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

A random GMP number.

范例

Example #1 gmp_random_bits() example

<?php
$rand1 = gmp_random_bits(3); // random number from 0 to 7
$rand2 = gmp_random_bits(5); // random number from 0 to 31

echo gmp_strval($rand1) . "\n";
echo gmp_strval($rand2) . "\n";
?>

以上例程会输出：

3
15

gmp_prob_prime
gmp_random_range
GMP 函数


Random number

gmp_random_bits
gmp_random_seed
GMP 函数
PHP Manual

gmp_random_range

(PHP 5 >= 5.6.3, PHP 7)

gmp_random_range — Random number

说明

GMP gmp_random_range ( GMP $min , GMP $max )

Generate a random number. The number will be between min and max.

min and max can both be negative but min must always be less than max.

参数

min

A GMP number representing the lower bound for the random number

max

A GMP number representing the upper bound for the random number

返回值

A random GMP number.

范例

Example #1 gmp_random_range() example

<?php
$rand1 = gmp_random_range(0, 100);    // random number between 0 and 100
$rand2 = gmp_random_range(-100, -10); // random number between -100 and -10

echo gmp_strval($rand1) . "\n";
echo gmp_strval($rand2) . "\n";
?>

以上例程会输出：

42
-67

gmp_random_bits
gmp_random_seed
GMP 函数


Sets the RNG seed

gmp_random_range
gmp_random
GMP 函数
PHP Manual

gmp_random_seed

(PHP 7)

gmp_random_seed — Sets the RNG seed

说明

mixed gmp_random_seed ( mixed $seed )

参数

seed

The seed to be set for the gmp_random(), gmp_random_bits(), and gmp_random_range() functions.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

Returns NULL on success.

错误／异常

Issues an E_WARNING and returns FALSE if seed is not valid.

范例

Example #1 gmp_random_seed() example

<?php
// set the seed
gmp_random_seed(100);

var_dump(gmp_strval(gmp_random(1)));

// set the seed to something else
gmp_random_seed(gmp_init(-100));

var_dump(gmp_strval(gmp_random_bits(10)));

// set the seed to something invalid
var_dump(gmp_random_seed('not a number'));

以上例程会输出：

string(20) "15370156633245019617"
string(3) "683"

Warning: gmp_random_seed(): Unable to convert variable to GMP - string is not an integer in %s on line %d
bool(false)

参见

  • gmp_init() - Create GMP number
  • gmp_random() - Random number
  • gmp_random_bits() - Random number
  • gmp_random_range() - Random number
gmp_random_range
gmp_random
GMP 函数


Random number

gmp_random_seed
gmp_root
GMP 函数
PHP Manual

gmp_random

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_random — Random number

说明

GMP gmp_random ([ int $limiter = 20 ] )

Generate a random number. The number will be between zero and the number of bits per limb multiplied by limiter. If limiter is negative, negative numbers are generated.

A limb is an internal GMP mechanism. The number of bits in a limb is not static, and can vary from system to system. Generally, the number of bits in a limb is either 16 or 32, but this is not guaranteed.

参数

limiter

The limiter.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

A random GMP number.

范例

Example #1 gmp_random() example

<?php
$rand1 = gmp_random(1); // random number from 0 to 1 * bits per limb
$rand2 = gmp_random(2); // random number from 0 to 2 * bits per limb

echo gmp_strval($rand1) . "\n";
echo gmp_strval($rand2) . "\n";
?>

以上例程会输出：

1915834968
8642564075890328087

gmp_random_seed
gmp_root
GMP 函数


Take the integer part of nth root

gmp_random
gmp_rootrem
GMP 函数
PHP Manual

gmp_root

(PHP 5 >= 5.6.0, PHP 7)

gmp_root — Take the integer part of nth root

说明

GMP gmp_root ( GMP $a , int $nth )

Takes the nth root of a and returns the integer component of the result.

参数

a

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

nth

The positive root to take of a.

返回值

The integer component of the resultant root, as a GMP number.

gmp_random
gmp_rootrem
GMP 函数


Take the integer part and remainder of nth root

gmp_root
gmp_scan0
GMP 函数
PHP Manual

gmp_rootrem

(PHP 5 >= 5.6.0, PHP 7)

gmp_rootrem — Take the integer part and remainder of nth root

说明

array gmp_rootrem ( GMP $a , int $nth )

Takes the nth root of a and returns the integer component and remainder of the result.

参数

a

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

nth

The positive root to take of a.

返回值

A two element array, where the first element is the integer component of the root, and the second element is the remainder, both represented as GMP numbers.

gmp_root
gmp_scan0
GMP 函数


Scan for 0

gmp_rootrem
gmp_scan1
GMP 函数
PHP Manual

gmp_scan0

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_scan0 — Scan for 0

说明

int gmp_scan0 ( GMP $a , int $start )

Scans a, starting with bit start, towards more significant bits, until the first clear bit is found.

参数

a

The number to scan.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

start

The starting bit.

返回值

Returns the index of the found bit, as an integer. The index starts from 0.

范例

Example #1 gmp_scan0() example

<?php
// "0" bit is found at position 3. index starts at 0
$s1 = gmp_init("10111", 2);
echo gmp_scan0($s1, 0) . "\n";

// "0" bit is found at position 7. index starts at 5
$s2 = gmp_init("101110000", 2);
echo gmp_scan0($s2, 5) . "\n";
?>

以上例程会输出：

3
7

gmp_rootrem
gmp_scan1
GMP 函数


Scan for 1

gmp_scan0
gmp_setbit
GMP 函数
PHP Manual

gmp_scan1

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_scan1 — Scan for 1

说明

int gmp_scan1 ( GMP $a , int $start )

Scans a, starting with bit start, towards more significant bits, until the first set bit is found.

参数

a

The number to scan.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

start

The starting bit.

返回值

Returns the index of the found bit, as an integer. If no set bit is found, -1 is returned.

范例

Example #1 gmp_scan1() example

<?php
// "1" bit is found at position 3. index starts at 0
$s1 = gmp_init("01000", 2);
echo gmp_scan1($s1, 0) . "\n";

// "1" bit is found at position 9. index starts at 5
$s2 = gmp_init("01000001111", 2);
echo gmp_scan1($s2, 5) . "\n";
?>

以上例程会输出：

3
9

gmp_scan0
gmp_setbit
GMP 函数


Set bit

gmp_scan1
gmp_sign
GMP 函数
PHP Manual

gmp_setbit

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_setbit — Set bit

说明

void gmp_setbit ( GMP &$a , int $index [, bool $bit_on = true ] )

Sets bit index in a.

参数

a

The value to modify.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

index

The index of the bit to set. Index 0 represents the least significant bit.

bit_on

True to set the bit (set it to 1/on); false to clear the bit (set it to 0/off).

返回值

GMP 数值资源.

范例

Example #1 gmp_setbit() example - 0 index

<?php
$a = gmp_init("2"); //
echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
gmp_setbit($a, 0); // 0b10 now becomes 0b11
echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
?>

以上例程会输出：

2 -> 0b10
3 -> 0b11

Example #2 gmp_setbit() example - 1 index

<?php
$a = gmp_init("0xfd");
echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
gmp_setbit($a, 1); // index starts at 0
echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
?>

以上例程会输出：

253 -> 0b11111101
255 -> 0b11111111

Example #3 gmp_setbit() example - clearing a bit

<?php
$a = gmp_init("0xff");
echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
gmp_setbit($a, 0, false); // clear bit at index 0
echo gmp_strval($a), ' -> 0b', gmp_strval($a, 2), "\n";
?>

以上例程会输出：

255 -> 0b11111111
254 -> 0b11111110

注释

Note:

Unlike most of the other GMP functions, gmp_setbit() must be called with a GMP resource that already exists (using gmp_init() for example). One will not be automatically created.

参见

  • gmp_clrbit() - Clear bit
  • gmp_testbit() - Tests if a bit is set

gmp_scan1
gmp_sign
GMP 函数


Sign of number

gmp_setbit
gmp_sqrt
GMP 函数
PHP Manual

gmp_sign

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_sign — Sign of number

说明

int gmp_sign ( GMP $a )

Checks the sign of a number.

参数

a

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

Returns 1 if a is positive, -1 if a is negative, and 0 if a is zero.

范例

Example #1 gmp_sign() example

<?php
// positive
echo gmp_sign("500") . "\n";

// negative
echo gmp_sign("-500") . "\n";

// zero
echo gmp_sign("0") . "\n";
?>

以上例程会输出：

1
-1
0

参见

  • gmp_abs() - Absolute value
  • abs() - 绝对值

gmp_setbit
gmp_sqrt
GMP 函数


Calculate square root

gmp_sign
gmp_sqrtrem
GMP 函数
PHP Manual

gmp_sqrt

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_sqrt — Calculate square root

说明

GMP gmp_sqrt ( GMP $a )

Calculates square root of a.

参数

a

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

The integer portion of the square root, as a GMP number.

范例

Example #1 gmp_sqrt() example

<?php
$sqrt1 = gmp_sqrt("9");
$sqrt2 = gmp_sqrt("7");
$sqrt3 = gmp_sqrt("1524157875019052100");

echo gmp_strval($sqrt1) . "\n";
echo gmp_strval($sqrt2) . "\n";
echo gmp_strval($sqrt3) . "\n";
?>

以上例程会输出：

3
2
1234567890

gmp_sign
gmp_sqrtrem
GMP 函数


Square root with remainder

gmp_sqrt
gmp_strval
GMP 函数
PHP Manual

gmp_sqrtrem

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_sqrtrem — Square root with remainder

说明

array gmp_sqrtrem ( GMP $a )

Calculate the square root of a number, with remainder.

参数

a

The number being square rooted.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

Returns array where first element is the integer square root of a and the second is the remainder (i.e., the difference between a and the first element squared).

范例

Example #1 gmp_sqrtrem() example

<?php
list($sqrt1, $sqrt1rem) = gmp_sqrtrem("9");
list($sqrt2, $sqrt2rem) = gmp_sqrtrem("7");
list($sqrt3, $sqrt3rem) = gmp_sqrtrem("1048576");

echo gmp_strval($sqrt1) . ", " . gmp_strval($sqrt1rem) . "\n";
echo gmp_strval($sqrt2) . ", " . gmp_strval($sqrt2rem) . "\n";
echo gmp_strval($sqrt3) . ", " . gmp_strval($sqrt3rem) . "\n";
?>

以上例程会输出：

3, 0
2, 3
1024, 0

gmp_sqrt
gmp_strval
GMP 函数


Convert GMP number to string

gmp_sqrtrem
gmp_sub
GMP 函数
PHP Manual

gmp_strval

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_strval — Convert GMP number to string

说明

string gmp_strval ( GMP $gmpnumber [, int $base = 10 ] )

Convert GMP number to string representation in base base. The default base is 10.

参数

gmpnumber

The GMP number that will be converted to a string.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

base

The base of the returned number. The default base is 10. Allowed values for the base are from 2 to 62 and -2 to -36.

返回值

The number, as a string.

更新日志

版本 | 说明
5.3.2 | The base was extended from 2 to 36, to 2 to 62 and -2 to -36.

注释

Note:

To use the extended base introduced in PHP 5.3.2, then PHP must be compiled against GMP 4.2.0 or greater.

范例

Example #1 Converting a GMP number to a string

<?php
$a = gmp_init("0x41682179fbf5");
printf("Decimal: %s, 36-based: %s", gmp_strval($a), gmp_strval($a,36));
?>

gmp_sqrtrem
gmp_sub
GMP 函数


Subtract numbers

gmp_strval
gmp_testbit
GMP 函数
PHP Manual

gmp_sub

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_sub — Subtract numbers

说明

GMP gmp_sub ( GMP $a , GMP $b )

Subtracts b from a and returns the result.

参数

a

The number being subtracted from.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

b

The number subtracted from a.

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

GMP 数值资源.

范例

Example #1 gmp_sub() example

<?php
$sub = gmp_sub("281474976710656", "4294967296"); // 2^48 - 2^32
echo gmp_strval($sub) . "\n";
?>

以上例程会输出：

281470681743360

gmp_strval
gmp_testbit
GMP 函数


Tests if a bit is set

gmp_sub
gmp_xor
GMP 函数
PHP Manual

gmp_testbit

(PHP 5 >= 5.3.0, PHP 7)

gmp_testbit — Tests if a bit is set

说明

bool gmp_testbit ( GMP $a , int $index )

Tests if the specified bit is set.

参数

a

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

index

The bit to test

返回值

Returns TRUE if the bit is set in resource $a, otherwise FALSE.

错误／异常

An E_WARNING level error is issued when index is less than zero, and FALSE is returned.

范例

Example #1 gmp_testbit() example

<?php
$n = gmp_init("1000000");
var_dump(gmp_testbit($n, 1));
gmp_setbit($n, 1);
var_dump(gmp_testbit($n, 1));
?>

以上例程会输出：

bool(false)
bool(true)

参见

  • gmp_setbit() - Set bit
  • gmp_clrbit() - Clear bit

gmp_sub
gmp_xor
GMP 函数


Bitwise XOR

gmp_testbit
GMP
GMP 函数
PHP Manual

gmp_xor

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gmp_xor — Bitwise XOR

说明

GMP gmp_xor ( GMP $a , GMP $b )

Calculates bitwise exclusive OR (XOR) of two GMP numbers.

参数

a

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

b

可以是一个 GMP 数据 resouce，或一个可以转换为数值的字符串。

返回值

GMP 数值资源.

范例

Example #1 gmp_xor() example

<?php
$xor1 = gmp_init("1101101110011101", 2);
$xor2 = gmp_init("0110011001011001", 2);

$xor3 = gmp_xor($xor1, $xor2);

echo gmp_strval($xor3, 2) . "\n";
?>

以上例程会输出：

1011110111000100

gmp_testbit
GMP
GMP 函数


The GMP class

(PHP 5 >= 5.6.0, PHP 7)

简介

A GMP number. These objects support overloaded arithmetic, bitwise and comparison operators.

Note:

No object oriented interface is provided to manipulate GMP objects. Please use the procedural GMP API.

GMP implements Serializable {
}
gmp_xor
Lapack
GMP


Lapack

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Lapack — The Lapack class
    • Lapack::eigenValues — This function returns the eigenvalues for a given square matrix
    • Lapack::identity — Return an identity matrix
    • Lapack::leastSquaresByFactorisation — Calculate the linear least squares solution of a matrix using QR factorisation
    • Lapack::leastSquaresBySVD — Solve the linear least squares problem, using SVD
    • Lapack::pseudoInverse — Calculate the inverse of a matrix
    • Lapack::singularValues — Calculated the singular values of a matrix
    • Lapack::solveLinearEquation — Solve a system of linear equations
  • LapackException — The LapackException class
GMP
简介
数学扩展


简介

LAPACK is written in Fortran 90 and provides routines for solving systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular value problems. This extension wraps the LAPACKE C bindings to allow access to several processes exposed by the library. Most functions work with arrays of arrays, representing rectangular matrices in row major order - so a two by two matrix [1 2; 3 4] would be array(array(1, 2), array(3, 4))

Lapack
安装／配置
Lapack


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Lapack


需求

Lapack requires the LAPACK and LAPACKE libraries.

安装／配置
安装
安装／配置


安装

Most distribution LAPACK packages do not include lapacke, so the easiest method is to build from source:

  svn co https://icl.cs.utk.edu/svn/lapack-dev/lapack/trunk lapack
  cd lapack
  mkdir build
  cd build
  cmake -D BUILD_SHARED_LIBS=ON -D LAPACKE=ON ../
  make
  sudo make install
需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
Lapack
Lapack


The Lapack class

(PECL lapack >= 0.1.0)

简介

LAPACK is written in Fortran 90 and provides routines for solving systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular value problems. This extension wraps the LAPACKE C bindings to allow access to several processes exposed by the library. Most functions work with arrays of arrays, representing rectangular matrices in row major order - so a two by two matrix [1 2; 3 4] would be array(array(1, 2), array(3, 4)).

All of the functions are called statically, for example $eig = Lapack::eigenvalues($a);

类摘要

Lapack {
/* 方法 */
public static array eigenValues ( array $a [, array $left [, array $right ]] )
public static array identity ( int $n )
public static array leastSquaresByFactorisation ( array $a , array $b )
public static array leastSquaresBySVD ( array $a , array $b )
public static array pseudoInverse ( array $a )
public static array singularValues ( array $a )
public static array solveLinearEquation ( array $a , array $b )
}

Table of Contents

  • Lapack::eigenValues — This function returns the eigenvalues for a given square matrix
  • Lapack::identity — Return an identity matrix
  • Lapack::leastSquaresByFactorisation — Calculate the linear least squares solution of a matrix using QR factorisation
  • Lapack::leastSquaresBySVD — Solve the linear least squares problem, using SVD
  • Lapack::pseudoInverse — Calculate the inverse of a matrix
  • Lapack::singularValues — Calculated the singular values of a matrix
  • Lapack::solveLinearEquation — Solve a system of linear equations
预定义常量
Lapack::eigenValues
Lapack


This function returns the eigenvalues for a given square matrix

Lapack
Lapack::identity
Lapack
PHP Manual

Lapack::eigenValues

(PECL lapack >= 0.1.0)

Lapack::eigenValues — This function returns the eigenvalues for a given square matrix

说明

public static array Lapack::eigenValues ( array $a [, array $left [, array $right ]] )

Calculate the eigenvalues for a square matrix, and optionally calculate the left and right eigenvectors.

参数

a

The matrix to calculate the eigenvalues for.

left

Optional parameter - if an array is passed here, it will be filled with the left eigenvectors

right

Optional parameter - if an array is passed here, it will be filled with the right eigenvectors

返回值

Returns an array of arrays representing the eigenvalues for the array.

范例

Example #1 Using Lapack::eigenValues():

<?php

 $a = array(
     array(-1.01,   0.86,  -4.60,  3.31,  -4.81  ),
     array( 3.98,   0.53,  -7.04,  5.29,   3.55  ),
     array( 3.30,   8.26,  -3.89,  8.20,  -1.51  ),
     array( 4.43,   4.96,  -7.66, -7.33,   6.18  ),
     array( 7.31,  -6.43,  -6.16,  2.47,   5.58  ),
 );

 $result = Lapack::eigenValues($a);

 ?>

Lapack
Lapack::identity
Lapack


Return an identity matrix

Lapack::eigenValues
Lapack::leastSquaresByFactorisation
Lapack
PHP Manual

Lapack::identity

(PECL lapack >= 0.1.0)

Lapack::identity — Return an identity matrix

说明

public static array Lapack::identity ( int $n )

Return a size n identity matrix

参数

n

The height and width of the identity matrix.

返回值

Will return a an array of n arrays, each containing n entries. The diagonals of the matrix will be 1s, the other positions 0.

Lapack::eigenValues
Lapack::leastSquaresByFactorisation
Lapack


Calculate the linear least squares solution of a matrix using QR factorisation

Lapack::identity
Lapack::leastSquaresBySVD
Lapack
PHP Manual

Lapack::leastSquaresByFactorisation

(PECL lapack >= 0.1.0)

Lapack::leastSquaresByFactorisation — Calculate the linear least squares solution of a matrix using QR factorisation

说明

public static array Lapack::leastSquaresByFactorisation ( array $a , array $b )

Solve the linear least squares problem, find min x in || B - Ax || Returns an array representing x. Expects arrays of arrays, and will return an array of arrays in the dimension B num cols x A num cols. Uses QR or LQ factorisation on matrix A.

参数

a

Matrix A

b

Matrix B

返回值

Array of the solution matrix

范例

Example #1 Using Lapack::leastSquaresByFactorisation():

<?php

 $a = array(
     array( 1.44,  -7.84,  -4.39,   4.53),
     array(-9.96,  -0.28,  -3.24,   3.83),
     array(-7.55,   3.24,   6.27,  -6.64),
     array( 8.34,   8.09,   5.28,   2.06),
     array( 7.08,   2.52,   0.74,  -2.47),
     array(-5.45,  -5.70,  -1.19,   4.70),
 );

 $b = array(
     array( 8.58,   9.35),
     array( 8.26,  -4.43),
     array( 8.48,  -0.70),
     array(-5.28,  -0.26),
     array( 5.72,  -7.36),
     array( 8.93,  -2.52),
 );

 $result = Lapack::leastSquaresByFactorisation($a, $b);
 ?>

Lapack::identity
Lapack::leastSquaresBySVD
Lapack


Solve the linear least squares problem, using SVD

Lapack::leastSquaresByFactorisation
Lapack::pseudoInverse
Lapack
PHP Manual

Lapack::leastSquaresBySVD

(PECL lapack >= 0.1.0)

Lapack::leastSquaresBySVD — Solve the linear least squares problem, using SVD

说明

public static array Lapack::leastSquaresBySVD ( array $a , array $b )

Solve the linear least squares problem, find min x in || B - Ax || Returns an array representing x. Expects arrays of arrays, and will return an array of arrays in the dimension B num cols x A num cols. Uses SVD with a divide and conquer algorithm.

参数

a

Matrix A

b

Matrix B

返回值

Returns the solution as an array of arrays.

范例

Example #1 Using Lapack::leastSquaresBySVD():

<?php

  $a = array(
      array( 1.44,  -7.84,  -4.39,   4.53),
      array(-9.96,  -0.28,  -3.24,   3.83),
      array(-7.55,   3.24,   6.27,  -6.64),
      array( 8.34,   8.09,   5.28,   2.06),
      array( 7.08,   2.52,   0.74,  -2.47),
      array(-5.45,  -5.70,  -1.19,   4.70),
  );

  $b = array(
      array( 8.58,   9.35),
      array( 8.26,  -4.43),
      array( 8.48,  -0.70),
      array(-5.28,  -0.26),
      array( 5.72,  -7.36),
      array( 8.93,  -2.52),
  );

  $result = Lapack::leastSquaresBySVD($a, $b);

  ?>

Lapack::leastSquaresByFactorisation
Lapack::pseudoInverse
Lapack


Calculate the inverse of a matrix

Lapack::leastSquaresBySVD
Lapack::singularValues
Lapack
PHP Manual

Lapack::pseudoInverse

(PECL lapack >= 0.1.0)

Lapack::pseudoInverse — Calculate the inverse of a matrix

说明

public static array Lapack::pseudoInverse ( array $a )

Find the pseudoinverse of a matrix A.

参数

a

Matrix to invert

返回值

Inverted matrix (array of arrays).

范例

Example #1 Using Lapack::pseudoInverse():

<?php

   $a = array(
       array( 8, 1, 6 ),
       array( 3, 5, 7 ),
       array( 4, 9, 2 ),
   );

   $result = Lapack::pseudoInverse($a);

   ?>

Lapack::leastSquaresBySVD
Lapack::singularValues
Lapack


Calculated the singular values of a matrix

Lapack::pseudoInverse
Lapack::solveLinearEquation
Lapack
PHP Manual

Lapack::singularValues

(PECL lapack >= 0.1.0)

Lapack::singularValues — Calculated the singular values of a matrix

说明

public static array Lapack::singularValues ( array $a )

Calculate the singular values of the matrix A.

参数

a

The matrix to calculate the singular values for

返回值

The singular values

范例

Example #1 Using Lapack::singularValues():

<?php

    $a = array(
        array( 7.52,  -1.10,  -7.95,  1.08  ),
        array(-0.76,   0.62,   9.34, -7.10  ),
        array( 5.13,   6.62,  -5.66,  0.87  ),
        array(-4.75,   8.52,   5.75,  5.30  ),
        array( 1.33,   4.91,  -5.49, -3.52  ),
        array(-2.40,  -6.77,   2.34,  3.95  ),
    );

    $result = Lapack::singularValues($a);

    ?>

Lapack::pseudoInverse
Lapack::solveLinearEquation
Lapack


Solve a system of linear equations

Lapack::singularValues
LapackException
Lapack
PHP Manual

Lapack::solveLinearEquation

(PECL lapack >= 0.1.0)

Lapack::solveLinearEquation — Solve a system of linear equations

说明

public static array Lapack::solveLinearEquation ( array $a , array $b )

This function computes the solution to the system of linear equations with a square matrix A and multiple right-hand sides B. Solves A * X = B for multiple B.

参数

a

Square matrix of linear equations

b

Right hand side to be solved for

返回值

Matrix X

范例

Example #1 Using Lapack::singularValues():

<?php

    $a = array(
        array( 6.80,  -6.05,  -0.45,   8.32,  -9.67   ),
        array(-2.11,  -3.30,   2.58,   2.71,  -5.14   ),
        array( 5.66,   5.36,  -2.70,   4.35,  -7.26   ),
        array( 5.97,  -4.44,   0.27,  -7.17,   6.08   ),
        array( 8.23,   1.08,   9.04,   2.14,  -6.87   ),
    );

    $b = array(
       array(  4.02,  -1.56,   9.81   ),
       array(  6.19,   4.00,  -4.09   ),
       array( -8.22,  -8.67,  -4.57   ),
       array( -7.57,   1.75,  -8.61   ),
       array( -3.03,   2.86,   8.99   ),
    );

    $result = Lapack::solveLinearEquation($a, $b);

    ?>

Lapack::singularValues
LapackException
Lapack


The LapackException class

(PECL lapack >= 0.1.0)

简介

Exception thrown when an error is caught in the LAPACK functions

类摘要

lapackexception extends Exception {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
Lapack::solveLinearEquation
Math
Lapack


Mathematical Functions

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Math 函数
    • abs — 绝对值
    • acos — 反余弦
    • acosh — 反双曲余弦
    • asin — 反正弦
    • asinh — 反双曲正弦
    • atan2 — 两个参数的反正切
    • atan — 反正切
    • atanh — 反双曲正切
    • base_convert — 在任意进制之间转换数字
    • bindec — 二进制转换为十进制
    • ceil — 进一法取整
    • cos — 余弦
    • cosh — 双曲余弦
    • decbin — 十进制转换为二进制
    • dechex — 十进制转换为十六进制
    • decoct — 十进制转换为八进制
    • deg2rad — 将角度转换为弧度
    • exp — 计算 e 的指数
    • expm1 — 返回 exp(number) - 1，甚至当 number 的值接近零也能计算出准确结果
    • floor — 舍去法取整
    • fmod — 返回除法的浮点数余数
    • getrandmax — 显示随机数最大的可能值
    • hexdec — 十六进制转换为十进制
    • hypot — 计算一直角三角形的斜边长度
    • intdiv — 对除法结果取整
    • is_finite — 判断是否为有限值
    • is_infinite — 判断是否为无限值
    • is_nan — 判断是否为合法数值
    • lcg_value — 组合线性同余发生器
    • log10 — 以 10 为底的对数
    • log1p — 返回 log(1 + number)，甚至当 number 的值接近零也能计算出准确结果
    • log — 自然对数
    • max — 找出最大值
    • min — 找出最小值
    • mt_getrandmax — 显示随机数的最大可能值
    • mt_rand — 生成更好的随机数
    • mt_srand — 播下一个更好的随机数发生器种子
    • octdec — 八进制转换为十进制
    • pi — 得到圆周率值
    • pow — 指数表达式
    • rad2deg — 将弧度数转换为相应的角度数
    • rand — 产生一个随机整数
    • round — 对浮点数进行四舍五入
    • sin — 正弦
    • sinh — 双曲正弦
    • sqrt — 平方根
    • srand — 播下随机数发生器种子
    • tan — 正切
    • tanh — 双曲正切
LapackException
简介
数学扩展


简介

These math functions will only handle values within the range of the integer and float types on your computer (this corresponds currently to the C types long resp. double). If you need to handle bigger numbers, take a look at the arbitrary precision math functions.

See also the manual page on arithmetic operators.

Math
安装／配置
Math


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Math


预定义常量

下列常量作为 PHP 核心的一部分总是可用的。

数学常量
常量名 | 常量值 | 描述
M_PI | 3.14159265358979323846 | Pi
M_E | 2.7182818284590452354 | e
M_LOG2E | 1.4426950408889634074 | log_2 e
M_LOG10E | 0.43429448190325182765 | log_10 e
M_LN2 | 0.69314718055994530942 | log_e 2
M_LN10 | 2.30258509299404568402 | log_e 10
M_PI_2 | 1.57079632679489661923 | pi/2
M_PI_4 | 0.78539816339744830962 | pi/4
M_1_PI | 0.31830988618379067154 | 1/pi
M_2_PI | 0.63661977236758134308 | 2/pi
M_SQRTPI | 1.77245385090551602729 | sqrt(pi) [5.2.0]
M_2_SQRTPI | 1.12837916709551257390 | 2/sqrt(pi)
M_SQRT2 | 1.41421356237309504880 | sqrt(2)
M_SQRT3 | 1.73205080756887729352 | sqrt(3) [5.2.0]
M_SQRT1_2 | 0.70710678118654752440 | 1/sqrt(2)
M_LNPI | 1.14472988584940017414 | log_e(pi) [5.2.0]
M_EULER | 0.57721566490153286061 | Euler constant [5.2.0]
只有常量 M_PI 在 PHP 4.0.0 之前就存在，其它所有常量从 PHP 4.0.0 起开始存在。用 [5.2.0] 标记的常量是在 PHP 5.2.0 中增加的。

资源类型
Math 函数
Math


Math 函数

Table of Contents

  • abs — 绝对值
  • acos — 反余弦
  • acosh — 反双曲余弦
  • asin — 反正弦
  • asinh — 反双曲正弦
  • atan2 — 两个参数的反正切
  • atan — 反正切
  • atanh — 反双曲正切
  • base_convert — 在任意进制之间转换数字
  • bindec — 二进制转换为十进制
  • ceil — 进一法取整
  • cos — 余弦
  • cosh — 双曲余弦
  • decbin — 十进制转换为二进制
  • dechex — 十进制转换为十六进制
  • decoct — 十进制转换为八进制
  • deg2rad — 将角度转换为弧度
  • exp — 计算 e 的指数
  • expm1 — 返回 exp(number) - 1，甚至当 number 的值接近零也能计算出准确结果
  • floor — 舍去法取整
  • fmod — 返回除法的浮点数余数
  • getrandmax — 显示随机数最大的可能值
  • hexdec — 十六进制转换为十进制
  • hypot — 计算一直角三角形的斜边长度
  • intdiv — 对除法结果取整
  • is_finite — 判断是否为有限值
  • is_infinite — 判断是否为无限值
  • is_nan — 判断是否为合法数值
  • lcg_value — 组合线性同余发生器
  • log10 — 以 10 为底的对数
  • log1p — 返回 log(1 + number)，甚至当 number 的值接近零也能计算出准确结果
  • log — 自然对数
  • max — 找出最大值
  • min — 找出最小值
  • mt_getrandmax — 显示随机数的最大可能值
  • mt_rand — 生成更好的随机数
  • mt_srand — 播下一个更好的随机数发生器种子
  • octdec — 八进制转换为十进制
  • pi — 得到圆周率值
  • pow — 指数表达式
  • rad2deg — 将弧度数转换为相应的角度数
  • rand — 产生一个随机整数
  • round — 对浮点数进行四舍五入
  • sin — 正弦
  • sinh — 双曲正弦
  • sqrt — 平方根
  • srand — 播下随机数发生器种子
  • tan — 正切
  • tanh — 双曲正切
预定义常量
abs
Math


绝对值

Math 函数
acos
Math 函数
PHP Manual

abs

(PHP 4, PHP 5, PHP 7)

abs — 绝对值

说明

number abs ( mixed $number )

返回参数 number 的绝对值。

参数

number

要处理的数字值

返回值

number 的绝对值。 如果参数 number 是 float，则返回的类型也是 float，否则返回 integer（因为 float 通常比 integer 有更大的取值范围）。

范例

Example #1 abs() 例子

<?php
$abs = abs(-4.2); // $abs = 4.2; (double/float)
$abs2 = abs(5);   // $abs2 = 5; (integer)
$abs3 = abs(-5);  // $abs3 = 5; (integer)
?>

参见

  • gmp_abs() - Absolute value
  • gmp_sign() - Sign of number

Math 函数
acos
Math 函数


反余弦

abs
acosh
Math 函数
PHP Manual

acos

(PHP 4, PHP 5, PHP 7)

acos — 反余弦

说明

float acos ( float $arg )

返回 arg 的反余弦值，单位是弧度。acos()
是 cos() 的反函数，它的意思是在
acos() 范围里的每个值都是
a==cos(acos(a)) 。

参数

arg

要处理的参数

返回值

arg 的反余弦弧度。

参见

  • cos() - 余弦
  • acosh() - 反双曲余弦
  • asin() - 反正弦
  • atan() - 反正切

abs
acosh
Math 函数


反双曲余弦

acos
asin
Math 函数
PHP Manual

acosh

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

acosh — 反双曲余弦

说明

float acosh ( float $arg )

返回 arg 的反双曲余弦值，即，其双曲余弦为 arg 的那个值。

参数

arg

要处理的值

返回值

The inverse hyperbolic cosine of arg

更新日志

版本 | 说明
5.3.0 | This function is now available on all platforms

参见

  • cosh() - 双曲余弦
  • acos() - 反余弦
  • asinh() - 反双曲正弦
  • atanh() - 反双曲正切

acos
asin
Math 函数


反正弦

acosh
asinh
Math 函数
PHP Manual

asin

(PHP 4, PHP 5, PHP 7)

asin — 反正弦

说明

float asin ( float $arg )

返回 arg 的反正弦值，单位是弧度。asin()
是 sin() 的反函数，它的意思是在
asin() 范围里的每个值都是
a==sin(asin(a)) 。

参数

arg

待处理的参数

返回值

arg 的反正弦弧度。

参见

  • sin() - 正弦
  • asinh() - 反双曲正弦
  • acos() - 反余弦
  • atan() - 反正切

acosh
asinh
Math 函数


反双曲正弦

asin
atan2
Math 函数
PHP Manual

asinh

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

asinh — 反双曲正弦

说明

float asinh ( float $arg )

返回 arg 的反双曲正弦值，即，其双曲正弦为 arg 的那个值。

参数

arg

要处理的参数

返回值

返回 arg 的反双曲正弦值

更新日志

版本 | 说明
5.3.0 | 此函数在所有平台上均可用

参见

  • sinh() - 双曲正弦
  • asin() - 反正弦
  • acosh() - 反双曲余弦
  • atanh() - 反双曲正切

asin
atan2
Math 函数


两个参数的反正切

asinh
atan
Math 函数
PHP Manual

atan2

(PHP 4, PHP 5, PHP 7)

atan2 — 两个参数的反正切

说明

float atan2 ( float $y , float $x )

本函数计算两个变量 x 和 y 的反正切值。和计算 y / x 的反正切相似，只除了两个参数的符号是用来确定结果的象限之外。

本函数的结果为弧度，其值在 -PI 和 PI 之间（包括 -PI 和 PI）。

参数

y

Dividend parameter

x

Divisor parameter

返回值

x 和 y 的反正切弧度值。

参见

  • atan() - 反正切

asinh
atan
Math 函数


反正切

atan2
atanh
Math 函数
PHP Manual

atan

(PHP 4, PHP 5, PHP 7)

atan — 反正切

说明

float atan ( float $arg )

返回 arg 的反正切值，单位是弧度。atan() 是
tan() 的反函数，它的意思是在
atan() 范围里的每个值都是
a==tan(atan(a))。

参数

arg

要处理的参数

返回值

arg 的反正切弧度。

参见

  • tan() - 正切
  • atanh() - 反双曲正切
  • asin() - 反正弦
  • acos() - 反余弦

atan2
atanh
Math 函数


反双曲正切

atan
base_convert
Math 函数
PHP Manual

atanh

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

atanh — 反双曲正切

说明

float atanh ( float $arg )

返回 arg 的反双曲正切值，即，其双曲正切为 arg 的那个值。

参数

arg

要处理的参数

返回值

Inverse hyperbolic tangent of arg

更新日志

版本 | 说明
5.3.0 | 此函数在所有平台上都可以用了

参见

  • tanh() - 双曲正切
  • atan() - 反正切
  • asinh() - 反双曲正弦
  • acosh() - 反双曲余弦

atan
base_convert
Math 函数


在任意进制之间转换数字

atanh
bindec
Math 函数
PHP Manual

base_convert

(PHP 4, PHP 5, PHP 7)

base_convert — 在任意进制之间转换数字

说明

string base_convert ( string $number , int $frombase , int $tobase )

返回一字符串，包含 number 以 tobase 进制的表示。number 本身的进制由 frombase 指定。frombase 和 tobase 都只能在 2 和 36 之间（包括 2 和 36）。高于十进制的数字用字母 a-z 表示，例如 a 表示 10，b 表示 11 以及 z 表示 35。

Warning

由于使用内部的 "double" 或 "float" 类型，base_convert() 的操作可能会导致大数值中的精度丢失。请参见本手册的 浮点数 章节以便获得更多详细信息。

参数

number

要转换的数字

frombase

The base number is in

tobase

The base to convert number to

返回值

number converted to base tobase

范例

Example #1 base_convert() 例子

<?php
$hexadecimal = 'A37334';
echo base_convert($hexadecimal, 16, 2);
?>

以上例程会输出：

101000110111001100110100

参见

  • intval() - 获取变量的整数值

atanh
bindec
Math 函数


二进制转换为十进制

base_convert
ceil
Math 函数
PHP Manual

bindec

(PHP 4, PHP 5, PHP 7)

bindec — 二进制转换为十进制

说明

number bindec ( string $binary_string )

返回 binary_string 参数所表示的二进制数的十进制等价值。

bindec() 将一个二进制数转换成 integer，或者出于大小的需要，转换为 float 类型。

bindec() 将所有的 binary_string 值解释为无符号整数。这是由于 bindec() 函数将其最高有效位视为数量级而非符号位。

参数

binary_string

要转换的二进制字符串

Warning

参数必须为字符串。使用其他数据类型会导致不可预知的结果。

返回值

binary_string 的十进制数值

更新日志

版本 | 说明
4.1.0 | 本函数如今可以转换超过程序运行平台中 integer 类型最大值的数，此时其值会返回为 float 类型。

范例

Example #1 bindec() 例子

<?php
echo bindec('110011') . "\n";
echo bindec('000110011') . "\n";

echo bindec('111');
?>

以上例程会输出：

51
51
7

Example #2 bindec() 将输入解读为无符号整数

<?php
/*
 * The lesson from this example is in the output
 * rather than the PHP code itself.
 */

$magnitude_lower = pow(2, (PHP_INT_SIZE * 8) - 2);
p($magnitude_lower - 1);
p($magnitude_lower, 'See the rollover?  Watch it next time around...');

p(PHP_INT_MAX, 'PHP_INT_MAX');
p(~PHP_INT_MAX, 'interpreted to be one more than PHP_INT_MAX');

if (PHP_INT_SIZE == 4) {
    $note = 'interpreted to be the largest unsigned integer';
} else {
    $note = 'interpreted to be the largest unsigned integer
              (18446744073709551615) but skewed by float precision';
}
p(-1, $note);

function p($input, $note = '') {
    echo "input:        $input\n";

    $format = '%0' . (PHP_INT_SIZE * 8) . 'b';
    $bin = sprintf($format, $input);
    echo "binary:       $bin\n";

    ini_set('precision', 20);  // For readability on 64 bit boxes.
    $dec = bindec($bin);
    echo 'bindec():     ' . $dec . "\n";

    if ($note) {
        echo "NOTE:         $note\n";
    }

    echo "\n";
}
?>

以上例程在 32 位机器上的输出:

input:        1073741823
binary:       00111111111111111111111111111111
bindec():     1073741823

input:        1073741824
binary:       01000000000000000000000000000000
bindec():     1073741824
NOTE:         See the rollover?  Watch it next time around...

input:        2147483647
binary:       01111111111111111111111111111111
bindec():     2147483647
NOTE:         PHP_INT_MAX

input:        -2147483648
binary:       10000000000000000000000000000000
bindec():     2147483648
NOTE:         interpreted to be one more than PHP_INT_MAX

input:        -1
binary:       11111111111111111111111111111111
bindec():     4294967295
NOTE:         interpreted to be the largest unsigned integer

以上例程在 64 位机器上的输出:

input:        4611686018427387903
binary:       0011111111111111111111111111111111111111111111111111111111111111
bindec():     4611686018427387903

input:        4611686018427387904
binary:       0100000000000000000000000000000000000000000000000000000000000000
bindec():     4611686018427387904
NOTE:         See the rollover?  Watch it next time around...

input:        9223372036854775807
binary:       0111111111111111111111111111111111111111111111111111111111111111
bindec():     9223372036854775807
NOTE:         PHP_INT_MAX

input:        -9223372036854775808
binary:       1000000000000000000000000000000000000000000000000000000000000000
bindec():     9223372036854775808
NOTE:         interpreted to be one more than PHP_INT_MAX

input:        -1
binary:       1111111111111111111111111111111111111111111111111111111111111111
bindec():     18446744073709551616
NOTE:         interpreted to be the largest unsigned integer
              (18446744073709551615) but skewed by float precision

参见

  • decbin() - 十进制转换为二进制
  • octdec() - 八进制转换为十进制
  • hexdec() - 十六进制转换为十进制
  • base_convert() - 在任意进制之间转换数字

base_convert
ceil
Math 函数


进一法取整

bindec
cos
Math 函数
PHP Manual

ceil

(PHP 4, PHP 5, PHP 7)

ceil — 进一法取整

说明

float ceil ( float $value )

返回不小于 value 的下一个整数，value 如果有小数部分则进一位。

参数

value

要进一法取整的值

返回值

返回不小于 value 的下一个整数。 ceil() 返回的类型仍然是 float，因为 float 值的范围通常比 integer 要大。

范例

Example #1 ceil() 例子

<?php
echo ceil(4.3);    // 5
echo ceil(9.999);  // 10
echo ceil(-3.14);  // -3
?>

参见

  • floor() - 舍去法取整
  • round() - 对浮点数进行四舍五入

bindec
cos
Math 函数


余弦

ceil
cosh
Math 函数
PHP Manual

cos

(PHP 4, PHP 5, PHP 7)

cos — 余弦

说明

float cos ( float $arg )

cos() 返回参数 arg 的余弦值。参数 arg 的单位为弧度。

参数

arg

以弧度表示的角度

返回值

arg的余弦值

范例

Example #1 cos() 例子

<?php

echo cos(M_PI); // -1

?>

参见

  • acos() - 反余弦
  • sin() - 正弦
  • tan() - 正切
  • deg2rad() - 将角度转换为弧度

ceil
cosh
Math 函数


双曲余弦

cos
decbin
Math 函数
PHP Manual

cosh

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

cosh — 双曲余弦

说明

float cosh ( float $arg )

返回 arg 的双曲余弦值，定义为 (exp(arg) + exp(-arg))/2。

参数

arg

要处理的参数

返回值

arg 的双曲余弦值。

参见

  • cos() - 余弦
  • acosh() - 反双曲余弦
  • sinh() - 双曲正弦
  • cosh()

cos
decbin
Math 函数


十进制转换为二进制

cosh
dechex
Math 函数
PHP Manual

decbin

(PHP 4, PHP 5, PHP 7)

decbin — 十进制转换为二进制

说明

string decbin ( int $number )

返回一字符串，包含有给定 number 参数的二进制表示。所能转换的最大数值为十进制的 4294967295，其结果为 32 个 1 的字符串。

参数

number

Decimal value to convert

Range of inputs on 32-bit machines
positive number | negative number | return value
0 | 0
1 | 1
2 | 10
... normal progression ...
2147483646 | 1111111111111111111111111111110
2147483647 (largest signed integer) | 1111111111111111111111111111111 (31 1's)
2147483648 | -2147483648 | 10000000000000000000000000000000
... normal progression ...
4294967294 | -2 | 11111111111111111111111111111110
4294967295 (largest unsigned integer) | -1 | 11111111111111111111111111111111 (32 1's)
Range of inputs on 64-bit machines
positive number | negative number | return value
0 | 0
1 | 1
2 | 10
... normal progression ...
9223372036854775806 | 111111111111111111111111111111111111111111111111111111111111110
9223372036854775807 (largest signed integer) | 111111111111111111111111111111111111111111111111111111111111111 (63 1's)
-9223372036854775808 | 1000000000000000000000000000000000000000000000000000000000000000
... normal progression ...
-2 | 1111111111111111111111111111111111111111111111111111111111111110
-1 | 1111111111111111111111111111111111111111111111111111111111111111 (64 1's)

返回值

Binary string representation of number

范例

Example #1 decbin() 例子

<?php
echo decbin(12) . "\n";
echo decbin(26);
?>

以上例程会输出：

1100
11010

参见

  • bindec() - 二进制转换为十进制
  • decoct() - 十进制转换为八进制
  • dechex() - 十进制转换为十六进制
  • base_convert() - 在任意进制之间转换数字
  • printf() - 输出格式化字符串, using %b, %032b or %064b as the format
  • sprintf(), using %b, %032b or %064b as the format

cosh
dechex
Math 函数


十进制转换为十六进制

decbin
decoct
Math 函数
PHP Manual

dechex

(PHP 4, PHP 5, PHP 7)

dechex — 十进制转换为十六进制

说明

string dechex ( int $number )

返回一字符串，包含有给定 number 参数的十六进制表示。

所能转换的最大数值为十进制的 PHP_INT_MAX * 2 + 1 (或 -1)：在 32 位平台上是十进制的 4294967295，其 dechex() 的结果为 ffffffff。

参数

number

要转换的十进制值

PHP 的 integer 类型是有符号的，但 dechex() 处理无符号整数，负正数会以无符号处理。

返回值

number 的16进制表示

范例

Example #1 dechex() 例子

<?php
echo dechex(10) . "\n";
echo dechex(47);
?>

以上例程会输出：

a
2f

Example #2 大整数的 dechex() 例子

<?php
// The output below assumes a 32-bit platform.
// Note that the output is the same for all values.
echo dechex(-1)."\n";
echo dechex(PHP_INT_MAX * 2 + 1)."\n";
echo dechex(pow(2, 32) - 1)."\n";
?>

以上例程会输出：

ffffffff
ffffffff
ffffffff

参见

  • hexdec() - 十六进制转换为十进制
  • decbin() - 十进制转换为二进制
  • decoct() - 十进制转换为八进制
  • base_convert() - 在任意进制之间转换数字

decbin
decoct
Math 函数


十进制转换为八进制

dechex
deg2rad
Math 函数
PHP Manual

decoct

(PHP 4, PHP 5, PHP 7)

decoct — 十进制转换为八进制

说明

string decoct ( int $number )

返回一字符串，包含有给定 number 参数的八进制表示。所能转换的最大数值为十进制的 4294967295，其结果为 "37777777777"。

参数

number

待转换的十进制值

返回值

number 参数八进制表示的字符串。

范例

Example #1 decoct() 范例

<?php
echo decoct(15) . "\n";
echo decoct(264);
?>

以上例程会输出：

17
410

参见

  • octdec() - 八进制转换为十进制
  • decbin() - 十进制转换为二进制
  • dechex() - 十进制转换为十六进制
  • base_convert() - 在任意进制之间转换数字

dechex
deg2rad
Math 函数


将角度转换为弧度

decoct
exp
Math 函数
PHP Manual

deg2rad

(PHP 4, PHP 5, PHP 7)

deg2rad — 将角度转换为弧度

说明

float deg2rad ( float $number )

本函数把 number 从角度转换成弧度。

参数

number

以角度为单位的值

返回值

number 等量的弧度值

范例

Example #1 deg2rad() 例子

<?php

echo deg2rad(45); // 0.785398163397
var_dump(deg2rad(45) === M_PI_4); // bool(true)

?>

参见

  • rad2deg() - 将弧度数转换为相应的角度数

decoct
exp
Math 函数


计算 e 的指数

deg2rad
expm1
Math 函数
PHP Manual

exp

(PHP 4, PHP 5, PHP 7)

exp — 计算 e 的指数

说明

float exp ( float $arg )

返回 e 的 arg 次方值。

Note:

用 'e' 作为自然对数的底 2.718282.

参数

arg

要处理的参数

返回值

'e' raised to the power of arg

范例

Example #1 exp() 例子

<?php
echo exp(12) . "\n";
echo exp(5.7);
?>

以上例程会输出：

1.6275E+005
298.87

参见

  • log() - 自然对数
  • pow() - 指数表达式

deg2rad
expm1
Math 函数


返回 exp(number) - 1，甚至当 number 的值接近零也能计算出准确结果

exp
floor
Math 函数
PHP Manual

expm1

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

expm1 — 返回 exp(number) - 1，甚至当 number 的值接近零也能计算出准确结果

说明

float expm1 ( float $arg )

expm1() 返回 'exp(number) - 1'，甚至当 number 的值接近零也能计算出准确结果。但是当两个数值趋近于相等的时候， 'exp (number) - 1' 就会变得不太准确。

参数

arg

要处理的参数

返回值

'e' to the power of arg minus one

更新日志

版本 | 说明
5.3.0 | 此函数在所有平台上均可用

参见

  • log1p() - 返回 log(1 + number)，甚至当 number 的值接近零也能计算出准确结果
  • exp() - 计算 e 的指数

exp
floor
Math 函数


舍去法取整

expm1
fmod
Math 函数
PHP Manual

floor

(PHP 4, PHP 5, PHP 7)

floor — 舍去法取整

说明

float floor ( float $value )

返回不大于 value 的最接近的整数，舍去小数部分取整。

参数

value

要取整的数字

返回值

返回不大于 value 的最接近的整数，将 value 的小数部分舍去取整。floor() 返回的类型仍然是 float，因为 float 值的范围通常比 integer 要大。

范例

Example #1 floor() 例子

<?php
echo floor(4.3);   // 4
echo floor(9.999); // 9
echo floor(-3.14); // -4
?>

参见

  • ceil() - 进一法取整
  • round() - 对浮点数进行四舍五入

expm1
fmod
Math 函数


返回除法的浮点数余数

floor
getrandmax
Math 函数
PHP Manual

fmod

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

fmod — 返回除法的浮点数余数

说明

float fmod ( float $x , float $y )

返回被除数（x）除以除数（y）所得的浮点数余数。余数（r）的定义是：x = i * y + r，其中 i 是整数。如果 y 是非零值，则 r 和 x 的符号相同并且其数量值小于 y。

参数

x

被除数

y

除数

返回值

x/y的浮点数余数。

范例

Example #1 fmod() 的使用

<?php
$x = 5.7;
$y = 1.3;
$r = fmod($x, $y);
// $r equals 0.5, because 4 * 1.3 + 0.5 = 5.7
?>

floor
getrandmax
Math 函数


显示随机数最大的可能值

fmod
hexdec
Math 函数
PHP Manual

getrandmax

(PHP 4, PHP 5, PHP 7)

getrandmax — 显示随机数最大的可能值

说明

int getrandmax ( void )

返回调用 rand() 可能返回的最大值。

返回值

rand() 返回 随机数可能返回的最大值

参见

  • rand() - 产生一个随机整数
  • srand() - 播下随机数发生器种子
  • mt_getrandmax() - 显示随机数的最大可能值

fmod
hexdec
Math 函数


十六进制转换为十进制

getrandmax
hypot
Math 函数
PHP Manual

hexdec

(PHP 4, PHP 5, PHP 7)

hexdec — 十六进制转换为十进制

说明

number hexdec ( string $hex_string )

返回与 hex_string 参数所表示的十六进制数等值的的十进制数。hexdec() 将一个十六进制字符串转换为十进制数。

hexdec() 会忽略它遇到的任意非十六进制的字符。

参数

hex_string

要转换的十六进制的字符串

返回值

hex_string 十进制的表示

更新日志

版本 | 说明
4.1.0 | PHP 4.1.0 开始，该函数可以处理 integer 大数字，这种情况下，它会返回 float 类型。

范例

Example #1 hexdec() 例子

<?php
var_dump(hexdec("See"));
var_dump(hexdec("ee"));
// both print "int(238)"

var_dump(hexdec("that")); // print "int(10)"
var_dump(hexdec("a0")); // print "int(160)"
?>

参见

  • dechex() - 十进制转换为十六进制
  • bindec() - 二进制转换为十进制
  • octdec() - 八进制转换为十进制
  • base_convert() - 在任意进制之间转换数字

getrandmax
hypot
Math 函数


计算一直角三角形的斜边长度

hexdec
intdiv
Math 函数
PHP Manual

hypot

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

hypot — 计算一直角三角形的斜边长度

说明

float hypot ( float $x , float $y )

hypot() 函数将会跟据直角三角形的两直解边长度 x 和 y 计算其斜边的长度。或者是从标点 (x, y) 到原点的距离。该函数的算法等同于 sqrt(x*x + y*y)。

参数

x

第一条边的长度

y

第二条边的长度

返回值

计算斜边的长度

hexdec
intdiv
Math 函数


对除法结果取整

hypot
is_finite
Math 函数
PHP Manual

intdiv

(PHP 7)

intdiv — 对除法结果取整

说明

int intdiv ( int $dividend , int $divisor )

返回 dividend 除以 divisor 商数的整数部分。

参数

dividend

被除数。

divisor

除数。

返回值

dividend 除以 divisor 的商，对该商取整。

错误／异常

如果 divisor 是 0，将抛出 DivisionByZeroError 异常。 如果 dividend 是 PHP_INT_MIN 并且 divisor 是 -1，将抛出 ArithmeticError 异常.

范例

Example #1 intdiv() 的一些例子

<?php
var_dump(intdiv(3, 2));
var_dump(intdiv(-3, 2));
var_dump(intdiv(3, -2));
var_dump(intdiv(-3, -2));
var_dump(intdiv(PHP_INT_MAX, PHP_INT_MAX));
var_dump(intdiv(PHP_INT_MIN, PHP_INT_MIN));
var_dump(intdiv(PHP_INT_MIN, -1));
var_dump(intdiv(1, 0));
?>
int(1)
int(-1)
int(-1)
int(1)
int(1)
int(1)

Fatal error: Uncaught ArithmeticError: Division of PHP_INT_MIN by -1 is not an integer in %s on line 8
Fatal error: Uncaught DivisionByZeroError: Division by zero in %s on line 9

hypot
is_finite
Math 函数


判断是否为有限值

intdiv
is_infinite
Math 函数
PHP Manual

is_finite

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

is_finite — 判断是否为有限值

说明

bool is_finite ( float $val )

检查 val 是否是是本机平台上浮点数所允许范围中的一个合法的有限值。

参数

val

要检查的值

返回值

如果 val 是本机平台上 PHP 浮点数所允许范围中的一个合法的有限值，则返回 TRUE。

参见

  • is_infinite() - 判断是否为无限值
  • is_nan() - 判断是否为合法数值

intdiv
is_infinite
Math 函数


判断是否为无限值

is_finite
is_nan
Math 函数
PHP Manual

is_infinite

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

is_infinite — 判断是否为无限值

说明

bool is_infinite ( float $val )

如果 val 为无穷大（正的或负的），例如 log(0) 的结果或者任何超出本平台的浮点数范围的值，则返回 TRUE。

参数

val

要检查的值

返回值

如果 val 为无穷大返回 TRUE，否则返回 FALSE。

参见

  • is_finite() - 判断是否为有限值
  • is_nan() - 判断是否为合法数值

is_finite
is_nan
Math 函数


判断是否为合法数值

is_infinite
lcg_value
Math 函数
PHP Manual

is_nan

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

is_nan — 判断是否为合法数值

说明

bool is_nan ( float $val )

如果 val 为"非数值"，例如 acos(1.01) 的结果，则返回 TRUE。

参数

val

要检查的值

返回值

如果 val 不是一个数字（not a number）返回 TRUE，否则返回 FALSE。

范例

Example #1 is_nan() 例子

<?php
// Invalid calculation, will return a
// NaN value
$nan = acos(8);

var_dump($nan, is_nan($nan));
?>

以上例程会输出：

float(NAN)
bool(true)

参见

  • is_finite() - 判断是否为有限值
  • is_infinite() - 判断是否为无限值

is_infinite
lcg_value
Math 函数


组合线性同余发生器

is_nan
log10
Math 函数
PHP Manual

lcg_value

(PHP 4, PHP 5, PHP 7)

lcg_value — 组合线性同余发生器

说明

float lcg_value ( void )

lcg_value() 返回范围为 (0, 1) 的一个伪随机数。本函数组合了周期为 2^31 - 85 和 2^31 - 249 的两个同余发生器。本函数的周期等于这两个素数的乘积。

返回值

范围为 (0, 1) 的伪随机数。

参见

  • rand() - 产生一个随机整数
  • mt_rand() - 生成更好的随机数

is_nan
log10
Math 函数


以 10 为底的对数

lcg_value
log1p
Math 函数
PHP Manual

log10

(PHP 4, PHP 5, PHP 7)

log10 — 以 10 为底的对数

说明

float log10 ( float $arg )

返回参数 arg 以 10 为底的对数。

参数

arg

要处理的参数

返回值

arg 以 10 为底的对数。

参见

  • log() - 自然对数

lcg_value
log1p
Math 函数


返回 log(1 + number)，甚至当 number 的值接近零也能计算出准确结果

log10
log
Math 函数
PHP Manual

log1p

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

log1p — 返回 log(1 + number)，甚至当 number 的值接近零也能计算出准确结果

说明

float log1p ( float $number )

log1p() 返回 log(1 + number)，甚至当 number 的值接近零也能计算出准确结果。 log() might only return log(1) in this case due to lack of precision.

参数

number

要处理的参数

返回值

log(1 + number)

更新日志

版本 | 说明
5.3.0 | 此函数在所有平台上均可用

参见

  • expm1() - 返回 exp(number) - 1，甚至当 number 的值接近零也能计算出准确结果
  • log() - 自然对数
  • log10() - 以 10 为底的对数

log10
log
Math 函数


自然对数

log1p
max
Math 函数
PHP Manual

log

(PHP 4, PHP 5, PHP 7)

log — 自然对数

说明

float log ( float $arg [, float $base = M_E ] )

如果指定了可选的参数 base，log() 返回 logbase arg，否则 log() 返回参数 arg 的自然对数。

参数

arg

要计算对数的值

base

The optional logarithmic base to use (defaults to 'e' and so to the natural logarithm).

返回值

返回 logbase arg，或者它的自然对数。

更新日志

版本 | 说明
4.3.0 | 可选参数 base可用。 你可以计算任意以 b 为底 n 的对数，但其实使用的是数学等式：logb(n) = log(n)/log(b)，其中 log 是自然对数。

参见

  • log10() - 以 10 为底的对数
  • exp() - 计算 e 的指数
  • pow() - 指数表达式

log1p
max
Math 函数


找出最大值

log
min
Math 函数
PHP Manual

max

(PHP 4, PHP 5, PHP 7)

max — 找出最大值

说明

mixed max ( array $values )
mixed max ( mixed $value1 , mixed $value2 [, mixed $... ] )

如果仅有一个参数且为数组，max() 返回该数组中最大的值。如果第一个参数是整数、字符串或浮点数，则至少需要两个参数而 max() 会返回这些值中最大的一个。可以比较无限多个值。

Note:

PHP 会将非数值的 string 当成 0，但如果这个正是最大的数值则仍然会返回一个字符串。如果多个参数都求值为 0 且是最大值，max() 会返回其中数值的 0，如果参数中没有数值的 0，则返回按字母表顺序最大的字符串。

参数

values

包含了多个值的数组。

value1

Any comparable value.

value2

Any comparable value.

...

Any comparable value.

返回值

max() 返回参数中数值最大的值。 If multiple values can be considered of the same size, the one that is listed first will be returned.

When max() is given multiple arrays, the longest array is returned. If all the arrays have the same length, max() will use lexicographic ordering to find the return value.

When given a string it will be cast as an integer when comparing.

范例

Example #1 使用 max() 的例子

<?php
echo max(1, 3, 5, 6, 7);  // 7
echo max(array(2, 4, 5)); // 5

// When 'hello' is cast as integer it will be 0. Both the parameters are equally
// long, so the order they are given in determines the result
echo max(0, 'hello');     // 0
echo max('hello', 0);     // hello

echo max('42', 3); // '42'

// Here 0 > -1, so 'hello' is the return value.
echo max(-1, 'hello');    // hello

// With multiple arrays of different lengths, max returns the longest
$val = max(array(2, 2, 2), array(1, 1, 1, 1)); // array(1, 1, 1, 1)

// 对多个数组，max 从左向右比较。
   // 因此在本例中：2 == 2，但 4 < 5
$val = max(array(2, 4, 8), array(2, 5, 7)); // array(2, 5, 7)

// 如果同时给出数组和非数组作为参数，则总是将数组视为
   // 最大值返回
$val = max('string', array(2, 5, 7), 42);   // array(2, 5, 7)
?>

参见

  • min() - 找出最小值
  • count() - 计算数组中的单元数目或对象中的属性个数

log
min
Math 函数


找出最小值

max
mt_getrandmax
Math 函数
PHP Manual

min

(PHP 4, PHP 5, PHP 7)

min — 找出最小值

说明

mixed min ( array $values )
mixed min ( mixed $value1 , mixed $value2 [, mixed $... ] )

如果仅有一个参数且为数组，min() 返回该数组中最小的值。如果给出了两个或更多参数, min() 会返回这些值中最小的一个。

Note:

PHP 会将非数值的 string 当成 0，但如果这个正是最小的数值则仍然会返回一个字符串。如果多个参数都求值为 0 且是最小值，min() 会返回按字母表顺序最小的字符串，如果其中没有字符串的话，则返回数值的 0。

参数

values

包含值的数组。

value1

Any comparable value.

value2

Any comparable value.

...

Any comparable value.

返回值

min() 返回参数中数值最小的。

范例

Example #1 min() 用法的例子

<?php
echo min(2, 3, 1, 6, 7);  // 1
echo min(array(2, 4, 5)); // 2

echo min(0, 'hello');     // 0
echo min('hello', 0);     // hello
echo min('hello', -1);    // -1

// 对多个数组，min 从左向右比较。
// 因此在本例中：2 == 2，但 4 < 5
$val = min(array(2, 4, 8), array(2, 5, 1)); // array(2, 4, 8)

// 如果同时给出数组和非数组作为参数，则不可能返回数组，因为
// 数组被视为最大的
$val = min('string', array(2, 5, 7), 42);   // string
?>

参见

  • max() - 找出最大值
  • count() - 计算数组中的单元数目或对象中的属性个数

max
mt_getrandmax
Math 函数


显示随机数的最大可能值

min
mt_rand
Math 函数
PHP Manual

mt_getrandmax

(PHP 4, PHP 5, PHP 7)

mt_getrandmax — 显示随机数的最大可能值

说明

int mt_getrandmax ( void )

返回调用 mt_rand() 所能返回的最大的随机数。

返回值

返回调用 mt_rand() 所能返回的最大的随机数。

范例

Example #1 计算一个随机浮点数

<?php
function randomFloat($min = 0, $max = 1) {
    return $min + mt_rand() / mt_getrandmax() * ($max - $min);
}

var_dump(randomFloat());
var_dump(randomFloat(2, 20));
?>

以上例程的输出类似于：

float(0.91601131712832)
float(16.511210331931)

参见

  • mt_rand() - 生成更好的随机数
  • mt_srand() - 播下一个更好的随机数发生器种子
  • getrandmax() - 显示随机数最大的可能值

min
mt_rand
Math 函数


生成更好的随机数

mt_getrandmax
mt_srand
Math 函数
PHP Manual

mt_rand

(PHP 4, PHP 5, PHP 7)

mt_rand — 生成更好的随机数

说明

int mt_rand ( void )
int mt_rand ( int $min , int $max )

很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。PHP 的 rand() 函数默认使用 libc 随机数发生器。mt_rand() 函数是非正式用来替换它的。该函数用了 » Mersenne Twister 中已知的特性作为随机数发生器，它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。

如果没有提供可选参数 min 和 max，mt_rand() 返回 0 到 mt_getrandmax() 之间的伪随机数。例如想要 5 到 15（包括 5 和 15）之间的随机数，用 mt_rand(5, 15)。

参数

min

可选的、返回的最小值（默认：0）

max

可选的、返回的最大值（默认：mt_getrandmax()）

返回值

返回 min （或者 0） 到 max （或者是到 mt_getrandmax() ，包含这个值）之间的随机整数。

更新日志

版本 | 说明
4.2.0 | 随机数发生器自动进行播种。

范例

Example #1 mt_rand() 例子

<?php
echo mt_rand() . "\n";
echo mt_rand() . "\n";

echo mt_rand(5, 15);
?>

以上例程的输出类似于：

1604716014
1478613278
6

注释

Caution

The distribution of mt_rand() return values is biased towards even numbers on 64-bit builds of PHP when max is beyond 2^32.

参见

  • mt_srand() - 播下一个更好的随机数发生器种子
  • mt_getrandmax() - 显示随机数的最大可能值
  • rand() - 产生一个随机整数

mt_getrandmax
mt_srand
Math 函数


播下一个更好的随机数发生器种子

mt_rand
octdec
Math 函数
PHP Manual

mt_srand

(PHP 4, PHP 5, PHP 7)

mt_srand — 播下一个更好的随机数发生器种子

说明

void mt_srand ([ int $seed ] )

用 seed 来给随机数发生器播种。 没有设定 seed 参数时，会被设为随时数。

Note: 自 PHP 4.2.0 起，不再需要用 srand() 或 mt_srand() 给随机数发生器播种 ，因为现在是由系统自动完成的。

参数

seed

可选的种子值

返回值

没有返回值。

更新日志

版本 | 说明
4.2.0 | The seed becomes optional and defaults to a random value if omitted.
5.2.1 | The Mersenne Twister implementation in PHP now uses a new seeding algorithm by Richard Wagner. Identical seeds no longer produce the same sequence of values they did in previous versions. This behavior is not expected to change again, but it is considered unsafe to rely upon it nonetheless.

范例

Example #1 mt_srand() 例子

<?php
// seed with microseconds
function make_seed()
{
  list($usec, $sec) = explode(' ', microtime());
  return (float) $sec + ((float) $usec * 100000);
}
mt_srand(make_seed());
$randval = mt_rand();
?>

参见

  • mt_rand() - 生成更好的随机数
  • mt_getrandmax() - 显示随机数的最大可能值
  • srand() - 播下随机数发生器种子

mt_rand
octdec
Math 函数


八进制转换为十进制

mt_srand
pi
Math 函数
PHP Manual

octdec

(PHP 4, PHP 5, PHP 7)

octdec — 八进制转换为十进制

说明

number octdec ( string $octal_string )

返回 octal_string 参数所表示的八进制数的十进制等值。

参数

octal_string

要转换的八进制的字符串

返回值

octal_string 的十进制的表示

更新日志

版本 | 说明
4.1.0 | 该函数可以处理 integer 大数字，这种情况下，它会返回 float 类型。

范例

Example #1 octdec() 例子

<?php
echo octdec('77') . "\n";
echo octdec(decoct(45));
?>

以上例程会输出：

63
45

参见

  • decoct() - 十进制转换为八进制
  • bindec() - 二进制转换为十进制
  • hexdec() - 十六进制转换为十进制
  • base_convert() - 在任意进制之间转换数字

mt_srand
pi
Math 函数


得到圆周率值

octdec
pow
Math 函数
PHP Manual

pi

(PHP 4, PHP 5, PHP 7)

pi — 得到圆周率值

说明

float pi ( void )

返回圆周率的近似值。返回值的 float 精度是由 php.ini 中的 precision 指令确定。默认值是 14。你也可以使用 M_PI 常量，该常量产生与 pi() 完全相同的结果。

返回值

圆周率（pi）的浮点近似值。

范例

Example #1 pi() 例子

<?php
echo pi(); // 3.1415926535898
echo M_PI; // 3.1415926535898
?>

octdec
pow
Math 函数


指数表达式

pi
rad2deg
Math 函数
PHP Manual

pow

(PHP 4, PHP 5, PHP 7)

pow — 指数表达式

说明

number pow ( number $base , number $exp )

返回 base 的 exp 次方的幂。如果可能，本函数会返回 integer。

参数

base

The base to use

exp

指数

返回值

base 的 exp 次方的幂。 If both arguments are non-negative integers and the result can be represented as an integer, the result will be returned with integer type, otherwise it will be returned as a float.

更新日志

版本 | 说明
4.2.0 | 如果不能计算幂，将发出一条警告，pow() 将返回 FALSE。pow() 开始不产生任何的警告。
4.0.6 | 如果可能函数现在会返回 integer 的结果，之前 总是返回 float，For older versions, you may receive a bogus result for complex numbers.

范例

Example #1 pow() 的一些例子

<?php

var_dump(pow(2, 8)); // int(256)
echo pow(-1, 20); // 1
echo pow(0, 0); // 1

echo pow(-1, 5.5); // PHP >4.0.6  NAN
echo pow(-1, 5.5); // PHP <=4.0.6 1.#IND
?>

注释

Note:

本函数会转换所有输入为数字，即使是非标量值，会导致怪异的（weird）结果。

参见

  • exp() - 计算 e 的指数
  • sqrt() - 平方根
  • bcpow() - 任意精度数字的乘方
  • gmp_pow() - Raise number into power

pi
rad2deg
Math 函数


将弧度数转换为相应的角度数

pow
rand
Math 函数
PHP Manual

rad2deg

(PHP 4, PHP 5, PHP 7)

rad2deg — 将弧度数转换为相应的角度数

说明

float rad2deg ( float $number )

本函数将 number 从弧度转换为角度。

参数

number

一个弧度值

返回值

number 相应的角度数

范例

Example #1 rad2deg() 例子

<?php

echo rad2deg(M_PI_4); // 45

?>

参见

  • deg2rad() - 将角度转换为弧度

pow
rand
Math 函数


产生一个随机整数

rad2deg
round
Math 函数
PHP Manual

rand

(PHP 4, PHP 5, PHP 7)

rand — 产生一个随机整数

说明

int rand ( void )
int rand ( int $min , int $max )

如果没有提供可选参数 min 和 max，rand() 返回 0 到 getrandmax() 之间的伪随机整数。例如想要 5 到 15（包括 5 和 15）之间的随机数，用 rand(5, 15)。

Note: 在某些平台下（例如 Windows）getrandmax() 只有 32767。如果需要的范围大于 32767，那么指定 min 和 max 参数就可以生成更大的数了，或者考虑用 mt_rand() 来替代之。

参数

min

返回的最低值（默认：0）

max

返回的最高值（默认：getrandmax()）

返回值

A pseudo random value between min (or 0) and max (or getrandmax(), inclusive).

更新日志

版本 | 说明
4.2.0 | 随机数发生器自动进行播种。

范例

Example #1 rand() 例子

<?php
echo rand() . "\n";
echo rand() . "\n";

echo rand(5, 15);
?>

以上例程的输出类似于：

7771
22264
11

参见

  • srand() - 播下随机数发生器种子
  • getrandmax() - 显示随机数最大的可能值
  • mt_rand() - 生成更好的随机数

rad2deg
round
Math 函数


对浮点数进行四舍五入

rand
sin
Math 函数
PHP Manual

round

(PHP 4, PHP 5, PHP 7)

round — 对浮点数进行四舍五入

说明

float round ( float $val [, int $precision = 0 [, int $mode = PHP_ROUND_HALF_UP ]] )

返回将 val 根据指定精度 precision（十进制小数点后数字的数目）进行四舍五入的结果。precision 也可以是负数或零（默认值）。

Note: PHP 默认不能正确处理类似 "12,300.2" 的字符串。见字符串转换为数值。

参数

val

要处理的值

precision

可选的十进制小数点后数字的数目。

mode

以下之一： PHP_ROUND_HALF_UP、 PHP_ROUND_HALF_DOWN PHP_ROUND_HALF_EVEN 或 PHP_ROUND_HALF_ODD

返回值

四舍五入后的值

范例

Example #1 round() 例子

<?php
echo round(3.4);         // 3
echo round(3.5);         // 4
echo round(3.6);         // 4
echo round(3.6, 0);      // 4
echo round(1.95583, 2);  // 1.96
echo round(1241757, -3); // 1242000
echo round(5.045, 2);    // 5.05
echo round(5.055, 2);    // 5.06
?>

Example #2 mode 例子

<?php
echo round(9.5, 0, PHP_ROUND_HALF_UP);   // 10
echo round(9.5, 0, PHP_ROUND_HALF_DOWN); // 9
echo round(9.5, 0, PHP_ROUND_HALF_EVEN); // 10
echo round(9.5, 0, PHP_ROUND_HALF_ODD);  // 9

echo round(8.5, 0, PHP_ROUND_HALF_UP);   // 9
echo round(8.5, 0, PHP_ROUND_HALF_DOWN); // 8
echo round(8.5, 0, PHP_ROUND_HALF_EVEN); // 8
echo round(8.5, 0, PHP_ROUND_HALF_ODD);  // 9
?>

更新日志

版本 | 说明
5.3.0 | 引入了 mode 参数
5.2.7 | round() 的内部运作修改符合 C99 的标准。

参见

  • ceil() - 进一法取整
  • floor() - 舍去法取整
  • number_format() - 以千位分隔符方式格式化一个数字

rand
sin
Math 函数


正弦

round
sinh
Math 函数
PHP Manual

sin

(PHP 4, PHP 5, PHP 7)

sin — 正弦

说明

float sin ( float $arg )

sin() 返回参数 arg 的正弦值。参数 arg 的单位为弧度。

参数

arg

单位是弧度的值。

返回值

arg 的正弦值

范例

Example #1 sin() 例子

<?php

// 返回值的精度由配置中的 precision 指示确定
echo sin(deg2rad(60));  //  0.866025403 ...
echo sin(60);           // -0.304810621 ...

?>

参见

  • asin() - 反正弦
  • sinh() - 双曲正弦
  • cos() - 余弦
  • tan() - 正切
  • deg2rad() - 将角度转换为弧度

round
sinh
Math 函数


双曲正弦

sin
sqrt
Math 函数
PHP Manual

sinh

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

sinh — 双曲正弦

说明

float sinh ( float $arg )

返回 arg 的双曲正弦值，定义为 (exp(arg) - exp(-arg))/2。

参数

arg

要处理的参数

返回值

arg 的双曲正弦值

参见

  • sin() - 正弦
  • asinh() - 反双曲正弦
  • cosh() - 双曲余弦
  • tanh() - 双曲正切

sin
sqrt
Math 函数


平方根

sinh
srand
Math 函数
PHP Manual

sqrt

(PHP 4, PHP 5, PHP 7)

sqrt — 平方根

说明

float sqrt ( float $arg )

返回 arg 的平方根。

参数

arg

要处理的参数

返回值

返回 arg 的平方根，负数时返回 NAN。

范例

Example #1 sqrt() 例子

<?php
// Precision depends on your precision directive
echo sqrt(9); // 3
echo sqrt(10); // 3.16227766 ...
?>

参见

  • pow() - 指数表达式

sinh
srand
Math 函数


播下随机数发生器种子

sqrt
tan
Math 函数
PHP Manual

srand

(PHP 4, PHP 5, PHP 7)

srand — 播下随机数发生器种子

说明

void srand ([ int $seed ] )

用 seed 播下随机数发生器种子。seed 参数没有给出时，会被设为随时数。

Note: 自 PHP 4.2.0 起，不再需要用 srand() 或 mt_srand() 给随机数发生器播种 ，因为现在是由系统自动完成的。

参数

seed

可选的种子值

返回值

没有返回值。

更新日志

版本 | 说明
Since 4.2.0 | seed 成为可选，省略时会默认使用随机值。

范例

Example #1 srand() 例子

<?php
// seed with microseconds
function make_seed()
{
  list($usec, $sec) = explode(' ', microtime());
  return (float) $sec + ((float) $usec * 100000);
}
srand(make_seed());
$randval = rand();
?>

参见

  • rand() - 产生一个随机整数
  • getrandmax() - 显示随机数最大的可能值
  • mt_srand() - 播下一个更好的随机数发生器种子

sqrt
tan
Math 函数


正切

srand
tanh
Math 函数
PHP Manual

tan

(PHP 4, PHP 5, PHP 7)

tan — 正切

说明

float tan ( float $arg )

tan() 返回参数 arg 的正切值。参数 arg 的单位为弧度。

参数

arg

要处理的以弧度为单位的参数

返回值

arg 的正切值

范例

Example #1 tan() 例子

<?php

echo tan(M_PI_4); // 1

?>

参见

  • atan() - 反正切
  • atan2() - 两个参数的反正切
  • sin() - 正弦
  • cos() - 余弦
  • tanh() - 双曲正切
  • deg2rad() - 将角度转换为弧度

srand
tanh
Math 函数


双曲正切

tan
Statistics
Math 函数
PHP Manual

tanh

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

tanh — 双曲正切

说明

float tanh ( float $arg )

返回 arg 的双曲正切值，定义为 sinh(arg)/cosh(arg)。

参数

arg

要处理的参数

返回值

arg 的双曲正切值

参见

  • tan() - 正切
  • atanh() - 反双曲正切
  • sinh() - 双曲正弦
  • cosh() - 双曲余弦

tan
Statistics
Math 函数


Statistics

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Statistic 函数
    • stats_absolute_deviation — Returns the absolute deviation of an array of values
    • stats_cdf_beta — CDF function for BETA Distribution. Calculates any one parameter of the beta distribution given values for the others.
    • stats_cdf_binomial — Calculates any one parameter of the binomial distribution given values for the others.
    • stats_cdf_cauchy — Not documented
    • stats_cdf_chisquare — Calculates any one parameter of the chi-square distribution given values for the others.
    • stats_cdf_exponential — Not documented
    • stats_cdf_f — Calculates any one parameter of the F distribution given values for the others.
    • stats_cdf_gamma — Calculates any one parameter of the gamma distribution given values for the others.
    • stats_cdf_laplace — Not documented
    • stats_cdf_logistic — Not documented
    • stats_cdf_negative_binomial — Calculates any one parameter of the negative binomial distribution given values for the others.
    • stats_cdf_noncentral_chisquare — Calculates any one parameter of the non-central chi-square distribution given values for the others.
    • stats_cdf_noncentral_f — Calculates any one parameter of the Non-central F distribution given values for the others.
    • stats_cdf_poisson — Calculates any one parameter of the Poisson distribution given values for the others.
    • stats_cdf_t — Calculates any one parameter of the T distribution given values for the others.
    • stats_cdf_uniform — Not documented
    • stats_cdf_weibull — Not documented
    • stats_covariance — Computes the covariance of two data sets
    • stats_den_uniform — Not documented
    • stats_dens_beta — Not documented
    • stats_dens_cauchy — Not documented
    • stats_dens_chisquare — Not documented
    • stats_dens_exponential — Not documented
    • stats_dens_f — 说明
    • stats_dens_gamma — Not documented
    • stats_dens_laplace — Not documented
    • stats_dens_logistic — Not documented
    • stats_dens_negative_binomial — Not documented
    • stats_dens_normal — Not documented
    • stats_dens_pmf_binomial — Not documented
    • stats_dens_pmf_hypergeometric — 说明
    • stats_dens_pmf_poisson — Not documented
    • stats_dens_t — Not documented
    • stats_dens_weibull — Not documented
    • stats_harmonic_mean — Returns the harmonic mean of an array of values
    • stats_kurtosis — Computes the kurtosis of the data in the array
    • stats_rand_gen_beta — Generates beta random deviate
    • stats_rand_gen_chisquare — Generates random deviate from the distribution of a chisquare with "df" degrees of freedom random variable.
    • stats_rand_gen_exponential — Generates a single random deviate from an exponential distribution with mean "av"
    • stats_rand_gen_f — Generates a random deviate
    • stats_rand_gen_funiform — Generates uniform float between low (exclusive) and high (exclusive)
    • stats_rand_gen_gamma — Generates random deviates from a gamma distribution
    • stats_rand_gen_ibinomial_negative — Generates a single random deviate from a negative binomial distribution. Arguments : n - the number of trials in the negative binomial distribution from which a random deviate is to be generated (n > 0), p - the probability of an event (0 < p < 1)).
    • stats_rand_gen_ibinomial — Generates a single random deviate from a binomial distribution whose number of trials is "n" (n >= 0) and whose probability of an event in each trial is "pp" ([0;1]). Method : algorithm BTPE
    • stats_rand_gen_int — Generates random integer between 1 and 2147483562
    • stats_rand_gen_ipoisson — Generates a single random deviate from a Poisson distribution with mean "mu" (mu >= 0.0).
    • stats_rand_gen_iuniform — Generates integer uniformly distributed between LOW (inclusive) and HIGH (inclusive)
    • stats_rand_gen_noncenral_chisquare — Generates random deviate from the distribution of a noncentral chisquare with "df" degrees of freedom and noncentrality parameter "xnonc". d must be >= 1.0, xnonc must >= 0.0
    • stats_rand_gen_noncentral_f — Generates a random deviate from the noncentral F (variance ratio) distribution with "dfn" degrees of freedom in the numerator, and "dfd" degrees of freedom in the denominator, and noncentrality parameter "xnonc". Method : directly generates ratio of noncentral numerator chisquare variate to central denominator chisquare variate.
    • stats_rand_gen_noncentral_t — Generates a single random deviate from a noncentral T distribution
    • stats_rand_gen_normal — Generates a single random deviate from a normal distribution with mean, av, and standard deviation, sd (sd >= 0). Method : Renames SNORM from TOMS as slightly modified by BWB to use RANF instead of SUNIF.
    • stats_rand_gen_t — Generates a single random deviate from a T distribution
    • stats_rand_get_seeds — Not documented
    • stats_rand_phrase_to_seeds — generate two seeds for the RGN random number generator
    • stats_rand_ranf — Returns a random floating point number from a uniform distribution over 0 - 1 (endpoints of this interval are not returned) using the current generator
    • stats_rand_setall — Not documented
    • stats_skew — Computes the skewness of the data in the array
    • stats_standard_deviation — Returns the standard deviation
    • stats_stat_binomial_coef — Not documented
    • stats_stat_correlation — Not documented
    • stats_stat_gennch — Not documented
    • stats_stat_independent_t — Not documented
    • stats_stat_innerproduct — 说明
    • stats_stat_noncentral_t — Calculates any one parameter of the noncentral t distribution give values for the others.
    • stats_stat_paired_t — Not documented
    • stats_stat_percentile — Not documented
    • stats_stat_powersum — Not documented
    • stats_variance — Returns the population variance
tanh
简介
数学扩展


简介

This is the statistics extension. It contains few dozens of functions useful for statistical computations. It is a wrapper around 2 scientific libraries, namely DCDFLIB (Library of C routines for Cumulative Distributions Functions, Inverses, and Other parameters) by B. Brown & J. Lavato and RANDLIB by Barry Brown, James Lavato & Kathy Russell. Includes CD and PD functions.

Statistics
安装／配置
Statistics


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Statistics


需求

No external libraries are needed. The extension comes bundled with the libraries used.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/stats.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
Statistic 函数
Statistics


Statistic 函数

Table of Contents

  • stats_absolute_deviation — Returns the absolute deviation of an array of values
  • stats_cdf_beta — CDF function for BETA Distribution. Calculates any one parameter of the beta distribution given values for the others.
  • stats_cdf_binomial — Calculates any one parameter of the binomial distribution given values for the others.
  • stats_cdf_cauchy — Not documented
  • stats_cdf_chisquare — Calculates any one parameter of the chi-square distribution given values for the others.
  • stats_cdf_exponential — Not documented
  • stats_cdf_f — Calculates any one parameter of the F distribution given values for the others.
  • stats_cdf_gamma — Calculates any one parameter of the gamma distribution given values for the others.
  • stats_cdf_laplace — Not documented
  • stats_cdf_logistic — Not documented
  • stats_cdf_negative_binomial — Calculates any one parameter of the negative binomial distribution given values for the others.
  • stats_cdf_noncentral_chisquare — Calculates any one parameter of the non-central chi-square distribution given values for the others.
  • stats_cdf_noncentral_f — Calculates any one parameter of the Non-central F distribution given values for the others.
  • stats_cdf_poisson — Calculates any one parameter of the Poisson distribution given values for the others.
  • stats_cdf_t — Calculates any one parameter of the T distribution given values for the others.
  • stats_cdf_uniform — Not documented
  • stats_cdf_weibull — Not documented
  • stats_covariance — Computes the covariance of two data sets
  • stats_den_uniform — Not documented
  • stats_dens_beta — Not documented
  • stats_dens_cauchy — Not documented
  • stats_dens_chisquare — Not documented
  • stats_dens_exponential — Not documented
  • stats_dens_f — 说明
  • stats_dens_gamma — Not documented
  • stats_dens_laplace — Not documented
  • stats_dens_logistic — Not documented
  • stats_dens_negative_binomial — Not documented
  • stats_dens_normal — Not documented
  • stats_dens_pmf_binomial — Not documented
  • stats_dens_pmf_hypergeometric — 说明
  • stats_dens_pmf_poisson — Not documented
  • stats_dens_t — Not documented
  • stats_dens_weibull — Not documented
  • stats_harmonic_mean — Returns the harmonic mean of an array of values
  • stats_kurtosis — Computes the kurtosis of the data in the array
  • stats_rand_gen_beta — Generates beta random deviate
  • stats_rand_gen_chisquare — Generates random deviate from the distribution of a chisquare with "df" degrees of freedom random variable.
  • stats_rand_gen_exponential — Generates a single random deviate from an exponential distribution with mean "av"
  • stats_rand_gen_f — Generates a random deviate
  • stats_rand_gen_funiform — Generates uniform float between low (exclusive) and high (exclusive)
  • stats_rand_gen_gamma — Generates random deviates from a gamma distribution
  • stats_rand_gen_ibinomial_negative — Generates a single random deviate from a negative binomial distribution. Arguments : n - the number of trials in the negative binomial distribution from which a random deviate is to be generated (n > 0), p - the probability of an event (0 < p < 1)).
  • stats_rand_gen_ibinomial — Generates a single random deviate from a binomial distribution whose number of trials is "n" (n >= 0) and whose probability of an event in each trial is "pp" ([0;1]). Method : algorithm BTPE
  • stats_rand_gen_int — Generates random integer between 1 and 2147483562
  • stats_rand_gen_ipoisson — Generates a single random deviate from a Poisson distribution with mean "mu" (mu >= 0.0).
  • stats_rand_gen_iuniform — Generates integer uniformly distributed between LOW (inclusive) and HIGH (inclusive)
  • stats_rand_gen_noncenral_chisquare — Generates random deviate from the distribution of a noncentral chisquare with "df" degrees of freedom and noncentrality parameter "xnonc". d must be >= 1.0, xnonc must >= 0.0
  • stats_rand_gen_noncentral_f — Generates a random deviate from the noncentral F (variance ratio) distribution with "dfn" degrees of freedom in the numerator, and "dfd" degrees of freedom in the denominator, and noncentrality parameter "xnonc". Method : directly generates ratio of noncentral numerator chisquare variate to central denominator chisquare variate.
  • stats_rand_gen_noncentral_t — Generates a single random deviate from a noncentral T distribution
  • stats_rand_gen_normal — Generates a single random deviate from a normal distribution with mean, av, and standard deviation, sd (sd >= 0). Method : Renames SNORM from TOMS as slightly modified by BWB to use RANF instead of SUNIF.
  • stats_rand_gen_t — Generates a single random deviate from a T distribution
  • stats_rand_get_seeds — Not documented
  • stats_rand_phrase_to_seeds — generate two seeds for the RGN random number generator
  • stats_rand_ranf — Returns a random floating point number from a uniform distribution over 0 - 1 (endpoints of this interval are not returned) using the current generator
  • stats_rand_setall — Not documented
  • stats_skew — Computes the skewness of the data in the array
  • stats_standard_deviation — Returns the standard deviation
  • stats_stat_binomial_coef — Not documented
  • stats_stat_correlation — Not documented
  • stats_stat_gennch — Not documented
  • stats_stat_independent_t — Not documented
  • stats_stat_innerproduct — 说明
  • stats_stat_noncentral_t — Calculates any one parameter of the noncentral t distribution give values for the others.
  • stats_stat_paired_t — Not documented
  • stats_stat_percentile — Not documented
  • stats_stat_powersum — Not documented
  • stats_variance — Returns the population variance
预定义常量
stats_absolute_deviation
Statistics


Returns the absolute deviation of an array of values

Statistic 函数
stats_cdf_beta
Statistic 函数
PHP Manual

stats_absolute_deviation

(PECL stats >= 1.0.0)

stats_absolute_deviation — Returns the absolute deviation of an array of values

说明

float stats_absolute_deviation ( array $a )
Warning

本函数还未编写文档，仅有参数列表。

参数

a

返回值

Statistic 函数
stats_cdf_beta
Statistic 函数


CDF function for BETA Distribution. Calculates any one parameter of the beta distribution given values for the others.

stats_absolute_deviation
stats_cdf_binomial
Statistic 函数
PHP Manual

stats_cdf_beta

(PECL stats >= 1.0.0)

stats_cdf_beta — CDF function for BETA Distribution. Calculates any one parameter of the beta distribution given values for the others.

说明

float stats_cdf_beta ( float $par1 , float $par2 , float $par3 , int $which )

Method Cumulative distribution function (P) is calculated directly by code associated with the following reference. DiDinato, A. R. and Morris, A. H. Algorithm 708: Significant Digit Computation of the Incomplete Beta Function Ratios. ACM Trans. Math. Softw. 18 (1993), 360-373. Computation of other parameters involve a search for a value that produces the desired value of P. The search relies on the monotonicity of P with the other parameter. Note The beta density is proportional to t^(A-1) * (1-t)^(B-1) Arguments P -- The integral from 0 to X of the chi-square distribution. Input range: [0, 1]. Q -- 1-P. Input range: [0, 1]. P + Q = 1.0. X -- Upper limit of integration of beta density. Input range: [0,1]. Search range: [0,1] Y -- 1-X. Input range: [0,1]. Search range: [0,1] X + Y = 1.0. A -- The first parameter of the beta density. Input range: (0, +infinity). Search range: [1D-100,1D100] B -- The second parameter of the beta density. Input range: (0, +infinity). Search range: [1D-100,1D100] STATUS -- 0 if calculation completed correctly -I if input parameter number I is out of range 1 if answer appears to be lower than lowest search bound 2 if answer appears to be higher than greatest search bound 3 if P + Q .ne. 1 4 if X + Y .ne. 1 BOUND -- Undefined if STATUS is 0 Bound exceeded by parameter number I if STATUS is negative. Lower search bound if STATUS is 1. Upper search bound if STATUS is 2.

参数

par1

par2

par3

which

Integer indicating which of the next four argument values is to be calculated from the others. Legal range: 1..4 which = 1 : Calculate P and Q from X,Y,A and B which = 2 : Calculate X and Y from P,Q,A and B which = 3 : Calculate A from P,Q,X,Y and B which = 4 : Calculate B from P,Q,X,Y and A

返回值

STATUS -- 0 if calculation completed correctly -I if input parameter number I is out of range 1 if answer appears to be lower than lowest search bound 2 if answer appears to be higher than greatest search bound 3 if P + Q .ne. 1 4 if X + Y .ne. 1

stats_absolute_deviation
stats_cdf_binomial
Statistic 函数


Calculates any one parameter of the binomial distribution given values for the others.

stats_cdf_beta
stats_cdf_cauchy
Statistic 函数
PHP Manual

stats_cdf_binomial

(PECL stats >= 1.0.0)

stats_cdf_binomial — Calculates any one parameter of the binomial distribution given values for the others.

说明

float stats_cdf_binomial ( float $par1 , float $par2 , float $par3 , int $which )
Warning

本函数还未编写文档，仅有参数列表。

参数

par1

par2

par3

which

返回值

stats_cdf_beta
stats_cdf_cauchy
Statistic 函数


Not documented

stats_cdf_binomial
stats_cdf_chisquare
Statistic 函数
PHP Manual

stats_cdf_cauchy

(PECL stats >= 1.0.0)

stats_cdf_cauchy — Not documented

说明

float stats_cdf_cauchy ( float $par1 , float $par2 , float $par3 , int $which )
Warning

本函数还未编写文档，仅有参数列表。

参数

par1

par2

par3

which

返回值

stats_cdf_binomial
stats_cdf_chisquare
Statistic 函数


Calculates any one parameter of the chi-square distribution given values for the others.

stats_cdf_cauchy
stats_cdf_exponential
Statistic 函数
PHP Manual

stats_cdf_chisquare

(PECL stats >= 1.0.0)

stats_cdf_chisquare — Calculates any one parameter of the chi-square distribution given values for the others.

说明

float stats_cdf_chisquare ( float $par1 , float $par2 , int $which )
Warning

本函数还未编写文档，仅有参数列表。

参数

par1

par2

which

返回值

stats_cdf_cauchy
stats_cdf_exponential
Statistic 函数


Not documented

stats_cdf_chisquare
stats_cdf_f
Statistic 函数
PHP Manual

stats_cdf_exponential

(PECL stats >= 1.0.0)

stats_cdf_exponential — Not documented

说明

float stats_cdf_exponential ( float $par1 , float $par2 , int $which )
Warning

本函数还未编写文档，仅有参数列表。

参数

par1

par2

which

返回值

stats_cdf_chisquare
stats_cdf_f
Statistic 函数


Calculates any one parameter of the F distribution given values for the others.

stats_cdf_exponential
stats_cdf_gamma
Statistic 函数
PHP Manual

stats_cdf_f

(PECL stats >= 1.0.0)

stats_cdf_f — Calculates any one parameter of the F distribution given values for the others.

说明

float stats_cdf_f ( float $par1 , float $par2 , float $par3 , int $which )
Warning

本函数还未编写文档，仅有参数列表。

参数

par1

par2

par3

which

返回值

stats_cdf_exponential
stats_cdf_gamma
Statistic 函数


Calculates any one parameter of the gamma distribution given values for the others.

stats_cdf_f
stats_cdf_laplace
Statistic 函数
PHP Manual

stats_cdf_gamma

(PECL stats >= 1.0.0)

stats_cdf_gamma — Calculates any one parameter of the gamma distribution given values for the others.

说明

float stats_cdf_gamma ( float $par1 , float $par2 , float $par3 , int $which )
Warning

本函数还未编写文档，仅有参数列表。

参数

par1

par2

par3

which

返回值

stats_cdf_f
stats_cdf_laplace
Statistic 函数


Not documented

stats_cdf_gamma
stats_cdf_logistic
Statistic 函数
PHP Manual

stats_cdf_laplace

(PECL stats >= 1.0.0)

stats_cdf_laplace — Not documented

说明

float stats_cdf_laplace ( float $par1 , float $par2 , float $par3 , int $which )
Warning

本函数还未编写文档，仅有参数列表。

参数

par1

par2

par3

which

返回值

stats_cdf_gamma
stats_cdf_logistic
Statistic 函数


Not documented

stats_cdf_laplace
stats_cdf_negative_binomial
Statistic 函数
PHP Manual

stats_cdf_logistic

(PECL stats >= 1.0.0)

stats_cdf_logistic — Not documented

说明

float stats_cdf_logistic ( float $par1 , float $par2 , float $par3 , int $which )
Warning

本函数还未编写文档，仅有参数列表。

参数

par1

par2

par3

which

返回值

stats_cdf_laplace
stats_cdf_negative_binomial
Statistic 函数


Calculates any one parameter of the negative binomial distribution given values for the others.

stats_cdf_logistic
stats_cdf_noncentral_chisquare
Statistic 函数
PHP Manual

stats_cdf_negative_binomial

(PECL stats >= 1.0.0)

stats_cdf_negative_binomial — Calculates any one parameter of the negative binomial distribution given values for the others.

说明

float stats_cdf_negative_binomial ( float $par1 , float $par2 , float $par3 , int $which )
Warning

本函数还未编写文档，仅有参数列表。

参数

par1

par2

par3

which

返回值

stats_cdf_logistic
stats_cdf_noncentral_chisquare
Statistic 函数


Calculates any one parameter of the non-central chi-square distribution given values for the others.

stats_cdf_negative_binomial
stats_cdf_noncentral_f
Statistic 函数
PHP Manual

stats_cdf_noncentral_chisquare

(PECL stats >= 1.0.0)

stats_cdf_noncentral_chisquare — Calculates any one parameter of the non-central chi-square distribution given values for the others.

说明

float stats_cdf_noncentral_chisquare ( float $par1 , float $par2 , float $par3 , int $which )
Warning

本函数还未编写文档，仅有参数列表。

参数

par1

par2

par3

which

返回值

stats_cdf_negative_binomial
stats_cdf_noncentral_f
Statistic 函数


Calculates any one parameter of the Non-central F distribution given values for the others.

stats_cdf_noncentral_chisquare
stats_cdf_poisson
Statistic 函数
PHP Manual

stats_cdf_noncentral_f

(PECL stats >= 1.0.0)

stats_cdf_noncentral_f — Calculates any one parameter of the Non-central F distribution given values for the others.

说明

float stats_cdf_noncentral_f ( float $par1 , float $par2 , float $par3 , float $par4 , int $which )
Warning

本函数还未编写文档，仅有参数列表。

参数

par1

par2

par3

par4

which

返回值

stats_cdf_noncentral_chisquare
stats_cdf_poisson
Statistic 函数


Calculates any one parameter of the Poisson distribution given values for the others.

stats_cdf_noncentral_f
stats_cdf_t
Statistic 函数
PHP Manual

stats_cdf_poisson

(PECL stats >= 1.0.0)

stats_cdf_poisson — Calculates any one parameter of the Poisson distribution given values for the others.

说明

float stats_cdf_poisson ( float $par1 , float $par2 , int $which )
Warning

本函数还未编写文档，仅有参数列表。

参数

par1

par2

which

返回值

stats_cdf_noncentral_f
stats_cdf_t
Statistic 函数


Calculates any one parameter of the T distribution given values for the others.

stats_cdf_poisson
stats_cdf_uniform
Statistic 函数
PHP Manual

stats_cdf_t

(PECL stats >= 1.0.0)

stats_cdf_t — Calculates any one parameter of the T distribution given values for the others.

说明

float stats_cdf_t ( float $par1 , float $par2 , int $which )
Warning

本函数还未编写文档，仅有参数列表。

参数

par1

par2

which

返回值

stats_cdf_poisson
stats_cdf_uniform
Statistic 函数


Not documented

stats_cdf_t
stats_cdf_weibull
Statistic 函数
PHP Manual

stats_cdf_uniform

(PECL stats >= 1.0.0)

stats_cdf_uniform — Not documented

说明

float stats_cdf_uniform ( float $par1 , float $par2 , float $par3 , int $which )
Warning

本函数还未编写文档，仅有参数列表。

参数

par1

par2

par3

which

返回值

stats_cdf_t
stats_cdf_weibull
Statistic 函数


Not documented

stats_cdf_uniform
stats_covariance
Statistic 函数
PHP Manual

stats_cdf_weibull

(PECL stats >= 1.0.0)

stats_cdf_weibull — Not documented

说明

float stats_cdf_weibull ( float $par1 , float $par2 , float $par3 , int $which )
Warning

本函数还未编写文档，仅有参数列表。

参数

par1

par2

par3

which

返回值

stats_cdf_uniform
stats_covariance
Statistic 函数


Computes the covariance of two data sets

stats_cdf_weibull
stats_den_uniform
Statistic 函数
PHP Manual

stats_covariance

(PECL stats >= 1.0.0)

stats_covariance — Computes the covariance of two data sets

说明

float stats_covariance ( array $a , array $b )
Warning

本函数还未编写文档，仅有参数列表。

参数

a

b

返回值

stats_cdf_weibull
stats_den_uniform
Statistic 函数


Not documented

stats_covariance
stats_dens_beta
Statistic 函数
PHP Manual

stats_den_uniform

(PECL stats >= 1.0.0)

stats_den_uniform — Not documented

说明

float stats_den_uniform ( float $x , float $a , float $b )
Warning

本函数还未编写文档，仅有参数列表。

参数

x

a

b

返回值

stats_covariance
stats_dens_beta
Statistic 函数


Not documented

stats_den_uniform
stats_dens_cauchy
Statistic 函数
PHP Manual

stats_dens_beta

(PECL stats >= 1.0.0)

stats_dens_beta — Not documented

说明

float stats_dens_beta ( float $x , float $a , float $b )
Warning

本函数还未编写文档，仅有参数列表。

参数

x

a

b

返回值

stats_den_uniform
stats_dens_cauchy
Statistic 函数


Not documented

stats_dens_beta
stats_dens_chisquare
Statistic 函数
PHP Manual

stats_dens_cauchy

(PECL stats >= 1.0.0)

stats_dens_cauchy — Not documented

说明

float stats_dens_cauchy ( float $x , float $ave , float $stdev )
Warning

本函数还未编写文档，仅有参数列表。

参数

x

ave

stdev

返回值

stats_dens_beta
stats_dens_chisquare
Statistic 函数


Not documented

stats_dens_cauchy
stats_dens_exponential
Statistic 函数
PHP Manual

stats_dens_chisquare

(PECL stats >= 1.0.0)

stats_dens_chisquare — Not documented

说明

float stats_dens_chisquare ( float $x , float $dfr )
Warning

本函数还未编写文档，仅有参数列表。

参数

x

dfr

返回值

stats_dens_cauchy
stats_dens_exponential
Statistic 函数


Not documented

stats_dens_chisquare
stats_dens_f
Statistic 函数
PHP Manual

stats_dens_exponential

(PECL stats >= 1.0.0)

stats_dens_exponential — Not documented

说明

float stats_dens_exponential ( float $x , float $scale )
Warning

本函数还未编写文档，仅有参数列表。

参数

x

scale

返回值

stats_dens_chisquare
stats_dens_f
Statistic 函数


stats_dens_exponential
stats_dens_gamma
Statistic 函数
PHP Manual

stats_dens_f

(PECL stats >= 1.0.0)

stats_dens_f —

说明

float stats_dens_f ( float $x , float $dfr1 , float $dfr2 )
Warning

本函数还未编写文档，仅有参数列表。

参数

x

dfr1

dfr2

返回值

stats_dens_exponential
stats_dens_gamma
Statistic 函数


Not documented

stats_dens_f
stats_dens_laplace
Statistic 函数
PHP Manual

stats_dens_gamma

(PECL stats >= 1.0.0)

stats_dens_gamma — Not documented

说明

float stats_dens_gamma ( float $x , float $shape , float $scale )
Warning

本函数还未编写文档，仅有参数列表。

参数

x

shape

scale

返回值

stats_dens_f
stats_dens_laplace
Statistic 函数


Not documented

stats_dens_gamma
stats_dens_logistic
Statistic 函数
PHP Manual

stats_dens_laplace

(PECL stats >= 1.0.0)

stats_dens_laplace — Not documented

说明

float stats_dens_laplace ( float $x , float $ave , float $stdev )
Warning

本函数还未编写文档，仅有参数列表。

参数

x

ave

stdev

返回值

stats_dens_gamma
stats_dens_logistic
Statistic 函数


Not documented

stats_dens_laplace
stats_dens_negative_binomial
Statistic 函数
PHP Manual

stats_dens_logistic

(PECL stats >= 1.0.0)

stats_dens_logistic — Not documented

说明

float stats_dens_logistic ( float $x , float $ave , float $stdev )
Warning

本函数还未编写文档，仅有参数列表。

参数

x

ave

stdev

返回值

stats_dens_laplace
stats_dens_negative_binomial
Statistic 函数


Not documented

stats_dens_logistic
stats_dens_normal
Statistic 函数
PHP Manual

stats_dens_negative_binomial

(PECL stats >= 1.0.0)

stats_dens_negative_binomial — Not documented

说明

float stats_dens_negative_binomial ( float $x , float $n , float $pi )
Warning

本函数还未编写文档，仅有参数列表。

参数

x

n

pi

返回值

stats_dens_logistic
stats_dens_normal
Statistic 函数


Not documented

stats_dens_negative_binomial
stats_dens_pmf_binomial
Statistic 函数
PHP Manual

stats_dens_normal

(PECL stats >= 1.0.0)

stats_dens_normal — Not documented

说明

float stats_dens_normal ( float $x , float $ave , float $stdev )
Warning

本函数还未编写文档，仅有参数列表。

参数

x

ave

stdev

返回值

stats_dens_negative_binomial
stats_dens_pmf_binomial
Statistic 函数


Not documented

stats_dens_normal
stats_dens_pmf_hypergeometric
Statistic 函数
PHP Manual

stats_dens_pmf_binomial

(PECL stats >= 1.0.0)

stats_dens_pmf_binomial — Not documented

说明

float stats_dens_pmf_binomial ( float $x , float $n , float $pi )
Warning

本函数还未编写文档，仅有参数列表。

参数

x

n

pi

返回值

stats_dens_normal
stats_dens_pmf_hypergeometric
Statistic 函数


stats_dens_pmf_binomial
stats_dens_pmf_poisson
Statistic 函数
PHP Manual

stats_dens_pmf_hypergeometric

(PECL stats >= 1.0.0)

stats_dens_pmf_hypergeometric —

说明

float stats_dens_pmf_hypergeometric ( float $n1 , float $n2 , float $N1 , float $N2 )
Warning

本函数还未编写文档，仅有参数列表。

参数

n1

n2

N1

N2

返回值

stats_dens_pmf_binomial
stats_dens_pmf_poisson
Statistic 函数


Not documented

stats_dens_pmf_hypergeometric
stats_dens_t
Statistic 函数
PHP Manual

stats_dens_pmf_poisson

(PECL stats >= 1.0.0)

stats_dens_pmf_poisson — Not documented

说明

float stats_dens_pmf_poisson ( float $x , float $lb )
Warning

本函数还未编写文档，仅有参数列表。

参数

x

lb

返回值

stats_dens_pmf_hypergeometric
stats_dens_t
Statistic 函数


Not documented

stats_dens_pmf_poisson
stats_dens_weibull
Statistic 函数
PHP Manual

stats_dens_t

(PECL stats >= 1.0.0)

stats_dens_t — Not documented

说明

float stats_dens_t ( float $x , float $dfr )
Warning

本函数还未编写文档，仅有参数列表。

参数

x

dfr

返回值

stats_dens_pmf_poisson
stats_dens_weibull
Statistic 函数


Not documented

stats_dens_t
stats_harmonic_mean
Statistic 函数
PHP Manual

stats_dens_weibull

(PECL stats >= 1.0.0)

stats_dens_weibull — Not documented

说明

float stats_dens_weibull ( float $x , float $a , float $b )
Warning

本函数还未编写文档，仅有参数列表。

参数

x

a

b

返回值

stats_dens_t
stats_harmonic_mean
Statistic 函数


Returns the harmonic mean of an array of values

stats_dens_weibull
stats_kurtosis
Statistic 函数
PHP Manual

stats_harmonic_mean

(PECL stats >= 1.0.0)

stats_harmonic_mean — Returns the harmonic mean of an array of values

说明

number stats_harmonic_mean ( array $a )
Warning

本函数还未编写文档，仅有参数列表。

参数

a

返回值

stats_dens_weibull
stats_kurtosis
Statistic 函数


Computes the kurtosis of the data in the array

stats_harmonic_mean
stats_rand_gen_beta
Statistic 函数
PHP Manual

stats_kurtosis

(PECL stats >= 1.0.0)

stats_kurtosis — Computes the kurtosis of the data in the array

说明

float stats_kurtosis ( array $a )
Warning

本函数还未编写文档，仅有参数列表。

参数

a

返回值

stats_harmonic_mean
stats_rand_gen_beta
Statistic 函数


Generates beta random deviate

stats_kurtosis
stats_rand_gen_chisquare
Statistic 函数
PHP Manual

stats_rand_gen_beta

(PECL stats >= 1.0.0)

stats_rand_gen_beta — Generates beta random deviate

说明

float stats_rand_gen_beta ( float $a , float $b )

Returns a random deviate from the beta distribution with parameters A and B. The density of the beta is x^(a-1) * (1-x)^(b-1) / B(a,b) for 0 < x <. Method R. C. H. Cheng.

参数

a

b

返回值

stats_kurtosis
stats_rand_gen_chisquare
Statistic 函数


Generates random deviate from the distribution of a chisquare with "df" degrees of freedom random variable.

stats_rand_gen_beta
stats_rand_gen_exponential
Statistic 函数
PHP Manual

stats_rand_gen_chisquare

(PECL stats >= 1.0.0)

stats_rand_gen_chisquare — Generates random deviate from the distribution of a chisquare with "df" degrees of freedom random variable.

说明

float stats_rand_gen_chisquare ( float $df )
Warning

本函数还未编写文档，仅有参数列表。

参数

df

返回值

stats_rand_gen_beta
stats_rand_gen_exponential
Statistic 函数


Generates a single random deviate from an exponential distribution with mean "av"

stats_rand_gen_chisquare
stats_rand_gen_f
Statistic 函数
PHP Manual

stats_rand_gen_exponential

(PECL stats >= 1.0.0)

stats_rand_gen_exponential — Generates a single random deviate from an exponential distribution with mean "av"

说明

float stats_rand_gen_exponential ( float $av )
Warning

本函数还未编写文档，仅有参数列表。

参数

av

返回值

stats_rand_gen_chisquare
stats_rand_gen_f
Statistic 函数


Generates a random deviate

stats_rand_gen_exponential
stats_rand_gen_funiform
Statistic 函数
PHP Manual

stats_rand_gen_f

(PECL stats >= 1.0.0)

stats_rand_gen_f — Generates a random deviate

说明

float stats_rand_gen_f ( float $dfn , float $dfd )

Generates a random deviate from the F (variance ratio) distribution with "dfn" degrees of freedom in the numerator and "dfd" degrees of freedom in the denominator. Method : directly generates ratio of chisquare variates.

参数

dfn

dfd

返回值

stats_rand_gen_exponential
stats_rand_gen_funiform
Statistic 函数


Generates uniform float between low (exclusive) and high (exclusive)

stats_rand_gen_f
stats_rand_gen_gamma
Statistic 函数
PHP Manual

stats_rand_gen_funiform

(PECL stats >= 1.0.0)

stats_rand_gen_funiform — Generates uniform float between low (exclusive) and high (exclusive)

说明

float stats_rand_gen_funiform ( float $low , float $high )
Warning

本函数还未编写文档，仅有参数列表。

参数

low

high

返回值

stats_rand_gen_f
stats_rand_gen_gamma
Statistic 函数


Generates random deviates from a gamma distribution

stats_rand_gen_funiform
stats_rand_gen_ibinomial_negative
Statistic 函数
PHP Manual

stats_rand_gen_gamma

(PECL stats >= 1.0.0)

stats_rand_gen_gamma — Generates random deviates from a gamma distribution

说明

float stats_rand_gen_gamma ( float $a , float $r )

Generates random deviates from the gamma distribution whose density is (A**R)/Gamma(R) * X**(R-1) * Exp(-A*X).

参数

a

location parameter of Gamma distribution (a > 0).

r

shape parameter of Gamma distribution (r > 0).

返回值

stats_rand_gen_funiform
stats_rand_gen_ibinomial_negative
Statistic 函数


Generates a single random deviate from a negative binomial distribution. Arguments : n - the number of trials in the negative binomial distribution from which a random deviate is to be generated (n > 0), p - the probability of an event (0 < p < 1)).

stats_rand_gen_gamma
stats_rand_gen_ibinomial
Statistic 函数
PHP Manual

stats_rand_gen_ibinomial_negative

(PECL stats >= 1.0.0)

stats_rand_gen_ibinomial_negative — Generates a single random deviate from a negative binomial distribution. Arguments : n - the number of trials in the negative binomial distribution from which a random deviate is to be generated (n > 0), p - the probability of an event (0 < p < 1)).

说明

int stats_rand_gen_ibinomial_negative ( int $n , float $p )
Warning

本函数还未编写文档，仅有参数列表。

参数

n

p

返回值

stats_rand_gen_gamma
stats_rand_gen_ibinomial
Statistic 函数


Generates a single random deviate from a binomial distribution whose number of trials is "n" (n >= 0) and whose probability of an event in each trial is "pp" ([0;1]). Method : algorithm BTPE

stats_rand_gen_ibinomial_negative
stats_rand_gen_int
Statistic 函数
PHP Manual

stats_rand_gen_ibinomial

(PECL stats >= 1.0.0)

stats_rand_gen_ibinomial — Generates a single random deviate from a binomial distribution whose number of trials is "n" (n >= 0) and whose probability of an event in each trial is "pp" ([0;1]). Method : algorithm BTPE

说明

int stats_rand_gen_ibinomial ( int $n , float $pp )
Warning

本函数还未编写文档，仅有参数列表。

参数

n

pp

返回值

stats_rand_gen_ibinomial_negative
stats_rand_gen_int
Statistic 函数


Generates random integer between 1 and 2147483562

stats_rand_gen_ibinomial
stats_rand_gen_ipoisson
Statistic 函数
PHP Manual

stats_rand_gen_int

(PECL stats >= 1.0.0)

stats_rand_gen_int — Generates random integer between 1 and 2147483562

说明

int stats_rand_gen_int ( void )
Warning

本函数还未编写文档，仅有参数列表。

参数

返回值

stats_rand_gen_ibinomial
stats_rand_gen_ipoisson
Statistic 函数


Generates a single random deviate from a Poisson distribution with mean "mu" (mu >= 0.0).

stats_rand_gen_int
stats_rand_gen_iuniform
Statistic 函数
PHP Manual

stats_rand_gen_ipoisson

(PECL stats >= 1.0.0)

stats_rand_gen_ipoisson — Generates a single random deviate from a Poisson distribution with mean "mu" (mu >= 0.0).

说明

int stats_rand_gen_ipoisson ( float $mu )
Warning

本函数还未编写文档，仅有参数列表。

参数

mu

返回值

stats_rand_gen_int
stats_rand_gen_iuniform
Statistic 函数


Generates integer uniformly distributed between LOW (inclusive) and HIGH (inclusive)

stats_rand_gen_ipoisson
stats_rand_gen_noncenral_chisquare
Statistic 函数
PHP Manual

stats_rand_gen_iuniform

(PECL stats >= 1.0.0)

stats_rand_gen_iuniform — Generates integer uniformly distributed between LOW (inclusive) and HIGH (inclusive)

说明

int stats_rand_gen_iuniform ( int $low , int $high )
Warning

本函数还未编写文档，仅有参数列表。

参数

low

high

返回值

stats_rand_gen_ipoisson
stats_rand_gen_noncenral_chisquare
Statistic 函数


Generates random deviate from the distribution of a noncentral chisquare with "df" degrees of freedom and noncentrality parameter "xnonc". d must be >= 1.0, xnonc must >= 0.0

stats_rand_gen_iuniform
stats_rand_gen_noncentral_f
Statistic 函数
PHP Manual

stats_rand_gen_noncenral_chisquare

(PECL stats >= 1.0.0)

stats_rand_gen_noncenral_chisquare — Generates random deviate from the distribution of a noncentral chisquare with "df" degrees of freedom and noncentrality parameter "xnonc". d must be >= 1.0, xnonc must >= 0.0

说明

float stats_rand_gen_noncenral_chisquare ( float $df , float $xnonc )
Warning

本函数还未编写文档，仅有参数列表。

参数

df

xnonc

返回值

stats_rand_gen_iuniform
stats_rand_gen_noncentral_f
Statistic 函数


Generates a random deviate from the noncentral F (variance ratio) distribution with "dfn" degrees of freedom in the numerator, and "dfd" degrees of freedom in the denominator, and noncentrality parameter "xnonc". Method : directly generates ratio of noncentral numerator chisquare variate to central 

stats_rand_gen_noncenral_chisquare
stats_rand_gen_noncentral_t
Statistic 函数
PHP Manual

stats_rand_gen_noncentral_f

(PECL stats >= 1.0.0)

stats_rand_gen_noncentral_f — Generates a random deviate from the noncentral F (variance ratio) distribution with "dfn" degrees of freedom in the numerator, and "dfd" degrees of freedom in the denominator, and noncentrality parameter "xnonc". Method : directly generates ratio of noncentral numerator chisquare variate to central denominator chisquare variate.

说明

float stats_rand_gen_noncentral_f ( float $dfn , float $dfd , float $xnonc )
Warning

本函数还未编写文档，仅有参数列表。

参数

dfn

dfd

xnonc

返回值

stats_rand_gen_noncenral_chisquare
stats_rand_gen_noncentral_t
Statistic 函数


Generates a single random deviate from a noncentral T distribution

stats_rand_gen_noncentral_f
stats_rand_gen_normal
Statistic 函数
PHP Manual

stats_rand_gen_noncentral_t

(PECL stats >= 1.0.0)

stats_rand_gen_noncentral_t — Generates a single random deviate from a noncentral T distribution

说明

float stats_rand_gen_noncentral_t ( float $df , float $xnonc )
Warning

本函数还未编写文档，仅有参数列表。

参数

df

xnonc

返回值

stats_rand_gen_noncentral_f
stats_rand_gen_normal
Statistic 函数


Generates a single random deviate from a normal distribution with mean, av, and standard deviation, sd (sd >= 0). Method : Renames SNORM from TOMS as slightly modified by BWB to use RANF instead of SUNIF.

stats_rand_gen_noncentral_t
stats_rand_gen_t
Statistic 函数
PHP Manual

stats_rand_gen_normal

(PECL stats >= 1.0.0)

stats_rand_gen_normal — Generates a single random deviate from a normal distribution with mean, av, and standard deviation, sd (sd >= 0). Method : Renames SNORM from TOMS as slightly modified by BWB to use RANF instead of SUNIF.

说明

float stats_rand_gen_normal ( float $av , float $sd )
Warning

本函数还未编写文档，仅有参数列表。

参数

av

sd

返回值

stats_rand_gen_noncentral_t
stats_rand_gen_t
Statistic 函数


Generates a single random deviate from a T distribution

stats_rand_gen_normal
stats_rand_get_seeds
Statistic 函数
PHP Manual

stats_rand_gen_t

(PECL stats >= 1.0.0)

stats_rand_gen_t — Generates a single random deviate from a T distribution

说明

float stats_rand_gen_t ( float $df )
Warning

本函数还未编写文档，仅有参数列表。

参数

df

返回值

stats_rand_gen_normal
stats_rand_get_seeds
Statistic 函数


Not documented

stats_rand_gen_t
stats_rand_phrase_to_seeds
Statistic 函数
PHP Manual

stats_rand_get_seeds

(PECL stats >= 1.0.0)

stats_rand_get_seeds — Not documented

说明

array stats_rand_get_seeds ( void )
Warning

本函数还未编写文档，仅有参数列表。

参数

返回值

stats_rand_gen_t
stats_rand_phrase_to_seeds
Statistic 函数


generate two seeds for the RGN random number generator

stats_rand_get_seeds
stats_rand_ranf
Statistic 函数
PHP Manual

stats_rand_phrase_to_seeds

(PECL stats >= 1.0.0)

stats_rand_phrase_to_seeds — generate two seeds for the RGN random number generator

说明

array stats_rand_phrase_to_seeds ( string $phrase )
Warning

本函数还未编写文档，仅有参数列表。

参数

phrase

返回值

stats_rand_get_seeds
stats_rand_ranf
Statistic 函数


Returns a random floating point number from a uniform distribution over 0 - 1 (endpoints of this interval are not returned) using the current generator

stats_rand_phrase_to_seeds
stats_rand_setall
Statistic 函数
PHP Manual

stats_rand_ranf

(PECL stats >= 1.0.0)

stats_rand_ranf — Returns a random floating point number from a uniform distribution over 0 - 1 (endpoints of this interval are not returned) using the current generator

说明

float stats_rand_ranf ( void )
Warning

本函数还未编写文档，仅有参数列表。

参数

返回值

stats_rand_phrase_to_seeds
stats_rand_setall
Statistic 函数


Not documented

stats_rand_ranf
stats_skew
Statistic 函数
PHP Manual

stats_rand_setall

(PECL stats >= 1.0.0)

stats_rand_setall — Not documented

说明

void stats_rand_setall ( int $iseed1 , int $iseed2 )
Warning

本函数还未编写文档，仅有参数列表。

参数

iseed1

iseed2

返回值

stats_rand_ranf
stats_skew
Statistic 函数


Computes the skewness of the data in the array

stats_rand_setall
stats_standard_deviation
Statistic 函数
PHP Manual

stats_skew

(PECL stats >= 1.0.0)

stats_skew — Computes the skewness of the data in the array

说明

float stats_skew ( array $a )
Warning

本函数还未编写文档，仅有参数列表。

参数

a

返回值

stats_rand_setall
stats_standard_deviation
Statistic 函数


Returns the standard deviation

stats_skew
stats_stat_binomial_coef
Statistic 函数
PHP Manual

stats_standard_deviation

(PECL stats >= 1.0.0)

stats_standard_deviation — Returns the standard deviation

说明

float stats_standard_deviation ( array $a [, bool $sample = false ] )

参数

a

The array of data to find the standard deviation for. Note that all values of the array will be cast to float.

sample

Indicates if a represents a sample of the population; defaults to FALSE.

返回值

Returns the standard deviation on success; FALSE on failure.

错误／异常

Raises an E_WARNING when there are fewer than 2 values in a.

stats_skew
stats_stat_binomial_coef
Statistic 函数


Not documented

stats_standard_deviation
stats_stat_correlation
Statistic 函数
PHP Manual

stats_stat_binomial_coef

(PECL stats >= 1.0.0)

stats_stat_binomial_coef — Not documented

说明

float stats_stat_binomial_coef ( int $x , int $n )
Warning

本函数还未编写文档，仅有参数列表。

参数

x

n

返回值

stats_standard_deviation
stats_stat_correlation
Statistic 函数


Not documented

stats_stat_binomial_coef
stats_stat_gennch
Statistic 函数
PHP Manual

stats_stat_correlation

(PECL stats >= 1.0.0)

stats_stat_correlation — Not documented

说明

float stats_stat_correlation ( array $arr1 , array $arr2 )
Warning

本函数还未编写文档，仅有参数列表。

参数

arr1

arr2

返回值

stats_stat_binomial_coef
stats_stat_gennch
Statistic 函数


Not documented

stats_stat_correlation
stats_stat_independent_t
Statistic 函数
PHP Manual

stats_stat_gennch

(PECL stats >= 1.0.0)

stats_stat_gennch — Not documented

说明

float stats_stat_gennch ( int $n )
Warning

本函数还未编写文档，仅有参数列表。

参数

n

返回值

stats_stat_correlation
stats_stat_independent_t
Statistic 函数


Not documented

stats_stat_gennch
stats_stat_innerproduct
Statistic 函数
PHP Manual

stats_stat_independent_t

(PECL stats >= 1.0.0)

stats_stat_independent_t — Not documented

说明

float stats_stat_independent_t ( array $arr1 , array $arr2 )
Warning

本函数还未编写文档，仅有参数列表。

参数

arr1

arr2

返回值

stats_stat_gennch
stats_stat_innerproduct
Statistic 函数


stats_stat_independent_t
stats_stat_noncentral_t
Statistic 函数
PHP Manual

stats_stat_innerproduct

(PECL stats >= 1.0.0)

stats_stat_innerproduct —

说明

float stats_stat_innerproduct ( array $arr1 , array $arr2 )
Warning

本函数还未编写文档，仅有参数列表。

参数

arr1

arr2

返回值

stats_stat_independent_t
stats_stat_noncentral_t
Statistic 函数


Calculates any one parameter of the noncentral t distribution give values for the others.

stats_stat_innerproduct
stats_stat_paired_t
Statistic 函数
PHP Manual

stats_stat_noncentral_t

(PECL stats >= 1.0.0)

stats_stat_noncentral_t — Calculates any one parameter of the noncentral t distribution give values for the others.

说明

float stats_stat_noncentral_t ( float $par1 , float $par2 , float $par3 , int $which )
Warning

本函数还未编写文档，仅有参数列表。

参数

par1

par2

par3

which

返回值

stats_stat_innerproduct
stats_stat_paired_t
Statistic 函数


Not documented

stats_stat_noncentral_t
stats_stat_percentile
Statistic 函数
PHP Manual

stats_stat_paired_t

(PECL stats >= 1.0.0)

stats_stat_paired_t — Not documented

说明

float stats_stat_paired_t ( array $arr1 , array $arr2 )
Warning

本函数还未编写文档，仅有参数列表。

参数

arr1

arr2

返回值

stats_stat_noncentral_t
stats_stat_percentile
Statistic 函数


Not documented

stats_stat_paired_t
stats_stat_powersum
Statistic 函数
PHP Manual

stats_stat_percentile

(PECL stats >= 1.0.0)

stats_stat_percentile — Not documented

说明

float stats_stat_percentile ( float $df , float $xnonc )
Warning

本函数还未编写文档，仅有参数列表。

参数

df

xnonc

返回值

stats_stat_paired_t
stats_stat_powersum
Statistic 函数


Not documented

stats_stat_percentile
stats_variance
Statistic 函数
PHP Manual

stats_stat_powersum

(PECL stats >= 1.0.0)

stats_stat_powersum — Not documented

说明

float stats_stat_powersum ( array $arr , float $power )
Warning

本函数还未编写文档，仅有参数列表。

参数

arr

power

返回值

stats_stat_percentile
stats_variance
Statistic 函数


Returns the population variance

stats_stat_powersum
Trader
Statistic 函数
PHP Manual

stats_variance

(PECL stats >= 1.0.0)

stats_variance — Returns the population variance

说明

float stats_variance ( array $a [, bool $sample = false ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

a

sample

返回值

stats_stat_powersum
Trader
Statistic 函数


Technical Analysis for Traders

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
  • 预定义常量
  • Trader 函数
    • trader_acos — Vector Trigonometric ACos
    • trader_ad — Chaikin A/D Line
    • trader_add — Vector Arithmetic Add
    • trader_adosc — Chaikin A/D Oscillator
    • trader_adx — Average Directional Movement Index
    • trader_adxr — Average Directional Movement Index Rating
    • trader_apo — Absolute Price Oscillator
    • trader_aroon — Aroon
    • trader_aroonosc — Aroon Oscillator
    • trader_asin — Vector Trigonometric ASin
    • trader_atan — Vector Trigonometric ATan
    • trader_atr — Average True Range
    • trader_avgprice — Average Price
    • trader_bbands — Bollinger Bands
    • trader_beta — Beta
    • trader_bop — Balance Of Power
    • trader_cci — Commodity Channel Index
    • trader_cdl2crows — Two Crows
    • trader_cdl3blackcrows — Three Black Crows
    • trader_cdl3inside — Three Inside Up/Down
    • trader_cdl3linestrike — Three-Line Strike
    • trader_cdl3outside — Three Outside Up/Down
    • trader_cdl3starsinsouth — Three Stars In The South
    • trader_cdl3whitesoldiers — Three Advancing White Soldiers
    • trader_cdlabandonedbaby — Abandoned Baby
    • trader_cdladvanceblock — Advance Block
    • trader_cdlbelthold — Belt-hold
    • trader_cdlbreakaway — Breakaway
    • trader_cdlclosingmarubozu — Closing Marubozu
    • trader_cdlconcealbabyswall — Concealing Baby Swallow
    • trader_cdlcounterattack — Counterattack
    • trader_cdldarkcloudcover — Dark Cloud Cover
    • trader_cdldoji — Doji
    • trader_cdldojistar — Doji Star
    • trader_cdldragonflydoji — Dragonfly Doji
    • trader_cdlengulfing — Engulfing Pattern
    • trader_cdleveningdojistar — Evening Doji Star
    • trader_cdleveningstar — Evening Star
    • trader_cdlgapsidesidewhite — Up/Down-gap side-by-side white lines
    • trader_cdlgravestonedoji — Gravestone Doji
    • trader_cdlhammer — Hammer
    • trader_cdlhangingman — Hanging Man
    • trader_cdlharami — Harami Pattern
    • trader_cdlharamicross — Harami Cross Pattern
    • trader_cdlhighwave — High-Wave Candle
    • trader_cdlhikkake — Hikkake Pattern
    • trader_cdlhikkakemod — Modified Hikkake Pattern
    • trader_cdlhomingpigeon — Homing Pigeon
    • trader_cdlidentical3crows — Identical Three Crows
    • trader_cdlinneck — In-Neck Pattern
    • trader_cdlinvertedhammer — Inverted Hammer
    • trader_cdlkicking — Kicking
    • trader_cdlkickingbylength — Kicking - bull/bear determined by the longer marubozu
    • trader_cdlladderbottom — Ladder Bottom
    • trader_cdllongleggeddoji — Long Legged Doji
    • trader_cdllongline — Long Line Candle
    • trader_cdlmarubozu — Marubozu
    • trader_cdlmatchinglow — Matching Low
    • trader_cdlmathold — Mat Hold
    • trader_cdlmorningdojistar — Morning Doji Star
    • trader_cdlmorningstar — Morning Star
    • trader_cdlonneck — On-Neck Pattern
    • trader_cdlpiercing — Piercing Pattern
    • trader_cdlrickshawman — Rickshaw Man
    • trader_cdlrisefall3methods — Rising/Falling Three Methods
    • trader_cdlseparatinglines — Separating Lines
    • trader_cdlshootingstar — Shooting Star
    • trader_cdlshortline — Short Line Candle
    • trader_cdlspinningtop — Spinning Top
    • trader_cdlstalledpattern — Stalled Pattern
    • trader_cdlsticksandwich — Stick Sandwich
    • trader_cdltakuri — Takuri (Dragonfly Doji with very long lower shadow)
    • trader_cdltasukigap — Tasuki Gap
    • trader_cdlthrusting — Thrusting Pattern
    • trader_cdltristar — Tristar Pattern
    • trader_cdlunique3river — Unique 3 River
    • trader_cdlupsidegap2crows — Upside Gap Two Crows
    • trader_cdlxsidegap3methods — Upside/Downside Gap Three Methods
    • trader_ceil — Vector Ceil
    • trader_cmo — Chande Momentum Oscillator
    • trader_correl — Pearson's Correlation Coefficient (r)
    • trader_cos — Vector Trigonometric Cos
    • trader_cosh — Vector Trigonometric Cosh
    • trader_dema — Double Exponential Moving Average
    • trader_div — Vector Arithmetic Div
    • trader_dx — Directional Movement Index
    • trader_ema — Exponential Moving Average
    • trader_errno — Get error code
    • trader_exp — Vector Arithmetic Exp
    • trader_floor — Vector Floor
    • trader_get_compat — Get compatibility mode
    • trader_get_unstable_period — Get unstable period
    • trader_ht_dcperiod — Hilbert Transform - Dominant Cycle Period
    • trader_ht_dcphase — Hilbert Transform - Dominant Cycle Phase
    • trader_ht_phasor — Hilbert Transform - Phasor Components
    • trader_ht_sine — Hilbert Transform - SineWave
    • trader_ht_trendline — Hilbert Transform - Instantaneous Trendline
    • trader_ht_trendmode — Hilbert Transform - Trend vs Cycle Mode
    • trader_kama — Kaufman Adaptive Moving Average
    • trader_linearreg_angle — Linear Regression Angle
    • trader_linearreg_intercept — Linear Regression Intercept
    • trader_linearreg_slope — Linear Regression Slope
    • trader_linearreg — Linear Regression
    • trader_ln — Vector Log Natural
    • trader_log10 — Vector Log10
    • trader_ma — Moving average
    • trader_macd — Moving Average Convergence/Divergence
    • trader_macdext — MACD with controllable MA type
    • trader_macdfix — Moving Average Convergence/Divergence Fix 12/26
    • trader_mama — MESA Adaptive Moving Average
    • trader_mavp — Moving average with variable period
    • trader_max — Highest value over a specified period
    • trader_maxindex — Index of highest value over a specified period
    • trader_medprice — Median Price
    • trader_mfi — Money Flow Index
    • trader_midpoint — MidPoint over period
    • trader_midprice — Midpoint Price over period
    • trader_min — Lowest value over a specified period
    • trader_minindex — Index of lowest value over a specified period
    • trader_minmax — Lowest and highest values over a specified period
    • trader_minmaxindex — Indexes of lowest and highest values over a specified period
    • trader_minus_di — Minus Directional Indicator
    • trader_minus_dm — Minus Directional Movement
    • trader_mom — Momentum
    • trader_mult — Vector Arithmetic Mult
    • trader_natr — Normalized Average True Range
    • trader_obv — On Balance Volume
    • trader_plus_di — Plus Directional Indicator
    • trader_plus_dm — Plus Directional Movement
    • trader_ppo — Percentage Price Oscillator
    • trader_roc — Rate of change : ((price/prevPrice)-1)*100
    • trader_rocp — Rate of change Percentage: (price-prevPrice)/prevPrice
    • trader_rocr100 — Rate of change ratio 100 scale: (price/prevPrice)*100
    • trader_rocr — Rate of change ratio: (price/prevPrice)
    • trader_rsi — Relative Strength Index
    • trader_sar — Parabolic SAR
    • trader_sarext — Parabolic SAR - Extended
    • trader_set_compat — Set compatibility mode
    • trader_set_unstable_period — Set unstable period
    • trader_sin — Vector Trigonometric Sin
    • trader_sinh — Vector Trigonometric Sinh
    • trader_sma — Simple Moving Average
    • trader_sqrt — Vector Square Root
    • trader_stddev — Standard Deviation
    • trader_stoch — Stochastic
    • trader_stochf — Stochastic Fast
    • trader_stochrsi — Stochastic Relative Strength Index
    • trader_sub — Vector Arithmetic Subtraction
    • trader_sum — Summation
    • trader_t3 — Triple Exponential Moving Average (T3)
    • trader_tan — Vector Trigonometric Tan
    • trader_tanh — Vector Trigonometric Tanh
    • trader_tema — Triple Exponential Moving Average
    • trader_trange — True Range
    • trader_trima — Triangular Moving Average
    • trader_trix — 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA
    • trader_tsf — Time Series Forecast
    • trader_typprice — Typical Price
    • trader_ultosc — Ultimate Oscillator
    • trader_var — Variance
    • trader_wclprice — Weighted Close Price
    • trader_willr — Williams' %R
    • trader_wma — Weighted Moving Average
stats_variance
简介
数学扩展


简介

The trader extension is a free open source stock library based on TA-Lib. It's dedicated to trading software developers requiring to perform technical analysis of financial market data. Alongside many indicators like ADX, MACD, RSI, Stochastic, TRIX the candlestick pattern recognition and several vector arithmetic and algebraic functions are present.

Calculations can be done in two modes - TA-Lib and Metastock. Changing it using trader_set_compat() will affect the way some trader functions work.

Some trader functions provide different results depending of the "starting point" of the data being involved. This is often referred as a function having memories. An example of such function is the Exponential Moving Average. It is possible to control the unstable period (the amount of data to strip off) using trader_set_unstable_period() function.

Extended documentation about indicators, formulas and implementations in other programming languages can be found under » tadoc.org.

Trader
安装／配置
Trader


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
简介
需求
Trader


需求

The trader extension is based on » TA-Lib. TA-Lib is fully integrated into the extension, therefore no external libraries are needed.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/trader.

A DLL for this PECL extension is available under » http://windows.php.net/downloads/pecl/releases/trader/.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Trader 配置选项
名字 | 默认 | 可修改范围 | 更新日志
trader.real_precision | 3 | PHP_INI_ALL | Since trader 0.2.1
trader.real_round_mode | HALF_DOWN | PHP_INI_ALL | Since trader 0.3.0

这是配置指令的简短说明。

trader.real_precision integer

All the values in the returned arrays will be rounded to this precision. However the calculations inside TA-Lib happen with unrounded values.

trader.real_round_mode string

Controls the trader real rounding policy. Valid values are HALF_UP, HALF_DOWN, HALF_EVEN and HALF_ODD. The behaviour is identical to the round() function used with the mode argument.

安装
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

TRADER_MA_TYPE_SMA (integer)
TRADER_MA_TYPE_EMA (integer)
TRADER_MA_TYPE_WMA (integer)
TRADER_MA_TYPE_DEMA (integer)
TRADER_MA_TYPE_TEMA (integer)
TRADER_MA_TYPE_TRIMA (integer)
TRADER_MA_TYPE_KAMA (integer)
TRADER_MA_TYPE_MAMA (integer)
TRADER_MA_TYPE_T3 (integer)
TRADER_REAL_MIN (double)
TRADER_REAL_MAX (double)
TRADER_FUNC_UNST_ADX (integer)
TRADER_FUNC_UNST_ADXR (integer)
TRADER_FUNC_UNST_ATR (integer)
TRADER_FUNC_UNST_CMO (integer)
TRADER_FUNC_UNST_DX (integer)
TRADER_FUNC_UNST_EMA (integer)
TRADER_FUNC_UNST_HT_DCPERIOD (integer)
TRADER_FUNC_UNST_HT_DCPHASE (integer)
TRADER_FUNC_UNST_HT_PHASOR (integer)
TRADER_FUNC_UNST_HT_SINE (integer)
TRADER_FUNC_UNST_HT_TRENDLINE (integer)
TRADER_FUNC_UNST_HT_TRENDMODE (integer)
TRADER_FUNC_UNST_KAMA (integer)
TRADER_FUNC_UNST_MAMA (integer)
TRADER_FUNC_UNST_MFI (integer)
TRADER_FUNC_UNST_MINUS_DI (integer)
TRADER_FUNC_UNST_MINUS_DM (integer)
TRADER_FUNC_UNST_NATR (integer)
TRADER_FUNC_UNST_PLUS_DI (integer)
TRADER_FUNC_UNST_PLUS_DM (integer)
TRADER_FUNC_UNST_RSI (integer)
TRADER_FUNC_UNST_STOCHRSI (integer)
TRADER_FUNC_UNST_T3 (integer)
TRADER_FUNC_UNST_ALL (integer)
TRADER_FUNC_UNST_NONE (integer)
TRADER_COMPATIBILITY_DEFAULT (integer)
TRADER_COMPATIBILITY_METASTOCK (integer)
TRADER_ERR_SUCCESS (integer)
TRADER_ERR_LIB_NOT_INITIALIZE (integer)
TRADER_ERR_BAD_PARAM (integer)
TRADER_ERR_ALLOC_ERR (integer)
TRADER_ERR_GROUP_NOT_FOUND (integer)
TRADER_ERR_FUNC_NOT_FOUND (integer)
TRADER_ERR_INVALID_HANDLE (integer)
TRADER_ERR_INVALID_PARAM_HOLDER (integer)
TRADER_ERR_INVALID_PARAM_HOLDER_TYPE (integer)
TRADER_ERR_INVALID_PARAM_FUNCTION (integer)
TRADER_ERR_INPUT_NOT_ALL_INITIALIZE (integer)
TRADER_ERR_OUTPUT_NOT_ALL_INITIALIZE (integer)
TRADER_ERR_OUT_OF_RANGE_START_INDEX (integer)
TRADER_ERR_OUT_OF_RANGE_END_INDEX (integer)
TRADER_ERR_INVALID_LIST_TYPE (integer)
TRADER_ERR_BAD_OBJECT (integer)
TRADER_ERR_NOT_SUPPORTED (integer)
TRADER_ERR_INTERNAL_ERROR (integer)
TRADER_ERR_UNKNOWN_ERROR (integer)

运行时配置
Trader 函数
Trader


Trader 函数

Table of Contents

  • trader_acos — Vector Trigonometric ACos
  • trader_ad — Chaikin A/D Line
  • trader_add — Vector Arithmetic Add
  • trader_adosc — Chaikin A/D Oscillator
  • trader_adx — Average Directional Movement Index
  • trader_adxr — Average Directional Movement Index Rating
  • trader_apo — Absolute Price Oscillator
  • trader_aroon — Aroon
  • trader_aroonosc — Aroon Oscillator
  • trader_asin — Vector Trigonometric ASin
  • trader_atan — Vector Trigonometric ATan
  • trader_atr — Average True Range
  • trader_avgprice — Average Price
  • trader_bbands — Bollinger Bands
  • trader_beta — Beta
  • trader_bop — Balance Of Power
  • trader_cci — Commodity Channel Index
  • trader_cdl2crows — Two Crows
  • trader_cdl3blackcrows — Three Black Crows
  • trader_cdl3inside — Three Inside Up/Down
  • trader_cdl3linestrike — Three-Line Strike
  • trader_cdl3outside — Three Outside Up/Down
  • trader_cdl3starsinsouth — Three Stars In The South
  • trader_cdl3whitesoldiers — Three Advancing White Soldiers
  • trader_cdlabandonedbaby — Abandoned Baby
  • trader_cdladvanceblock — Advance Block
  • trader_cdlbelthold — Belt-hold
  • trader_cdlbreakaway — Breakaway
  • trader_cdlclosingmarubozu — Closing Marubozu
  • trader_cdlconcealbabyswall — Concealing Baby Swallow
  • trader_cdlcounterattack — Counterattack
  • trader_cdldarkcloudcover — Dark Cloud Cover
  • trader_cdldoji — Doji
  • trader_cdldojistar — Doji Star
  • trader_cdldragonflydoji — Dragonfly Doji
  • trader_cdlengulfing — Engulfing Pattern
  • trader_cdleveningdojistar — Evening Doji Star
  • trader_cdleveningstar — Evening Star
  • trader_cdlgapsidesidewhite — Up/Down-gap side-by-side white lines
  • trader_cdlgravestonedoji — Gravestone Doji
  • trader_cdlhammer — Hammer
  • trader_cdlhangingman — Hanging Man
  • trader_cdlharami — Harami Pattern
  • trader_cdlharamicross — Harami Cross Pattern
  • trader_cdlhighwave — High-Wave Candle
  • trader_cdlhikkake — Hikkake Pattern
  • trader_cdlhikkakemod — Modified Hikkake Pattern
  • trader_cdlhomingpigeon — Homing Pigeon
  • trader_cdlidentical3crows — Identical Three Crows
  • trader_cdlinneck — In-Neck Pattern
  • trader_cdlinvertedhammer — Inverted Hammer
  • trader_cdlkicking — Kicking
  • trader_cdlkickingbylength — Kicking - bull/bear determined by the longer marubozu
  • trader_cdlladderbottom — Ladder Bottom
  • trader_cdllongleggeddoji — Long Legged Doji
  • trader_cdllongline — Long Line Candle
  • trader_cdlmarubozu — Marubozu
  • trader_cdlmatchinglow — Matching Low
  • trader_cdlmathold — Mat Hold
  • trader_cdlmorningdojistar — Morning Doji Star
  • trader_cdlmorningstar — Morning Star
  • trader_cdlonneck — On-Neck Pattern
  • trader_cdlpiercing — Piercing Pattern
  • trader_cdlrickshawman — Rickshaw Man
  • trader_cdlrisefall3methods — Rising/Falling Three Methods
  • trader_cdlseparatinglines — Separating Lines
  • trader_cdlshootingstar — Shooting Star
  • trader_cdlshortline — Short Line Candle
  • trader_cdlspinningtop — Spinning Top
  • trader_cdlstalledpattern — Stalled Pattern
  • trader_cdlsticksandwich — Stick Sandwich
  • trader_cdltakuri — Takuri (Dragonfly Doji with very long lower shadow)
  • trader_cdltasukigap — Tasuki Gap
  • trader_cdlthrusting — Thrusting Pattern
  • trader_cdltristar — Tristar Pattern
  • trader_cdlunique3river — Unique 3 River
  • trader_cdlupsidegap2crows — Upside Gap Two Crows
  • trader_cdlxsidegap3methods — Upside/Downside Gap Three Methods
  • trader_ceil — Vector Ceil
  • trader_cmo — Chande Momentum Oscillator
  • trader_correl — Pearson's Correlation Coefficient (r)
  • trader_cos — Vector Trigonometric Cos
  • trader_cosh — Vector Trigonometric Cosh
  • trader_dema — Double Exponential Moving Average
  • trader_div — Vector Arithmetic Div
  • trader_dx — Directional Movement Index
  • trader_ema — Exponential Moving Average
  • trader_errno — Get error code
  • trader_exp — Vector Arithmetic Exp
  • trader_floor — Vector Floor
  • trader_get_compat — Get compatibility mode
  • trader_get_unstable_period — Get unstable period
  • trader_ht_dcperiod — Hilbert Transform - Dominant Cycle Period
  • trader_ht_dcphase — Hilbert Transform - Dominant Cycle Phase
  • trader_ht_phasor — Hilbert Transform - Phasor Components
  • trader_ht_sine — Hilbert Transform - SineWave
  • trader_ht_trendline — Hilbert Transform - Instantaneous Trendline
  • trader_ht_trendmode — Hilbert Transform - Trend vs Cycle Mode
  • trader_kama — Kaufman Adaptive Moving Average
  • trader_linearreg_angle — Linear Regression Angle
  • trader_linearreg_intercept — Linear Regression Intercept
  • trader_linearreg_slope — Linear Regression Slope
  • trader_linearreg — Linear Regression
  • trader_ln — Vector Log Natural
  • trader_log10 — Vector Log10
  • trader_ma — Moving average
  • trader_macd — Moving Average Convergence/Divergence
  • trader_macdext — MACD with controllable MA type
  • trader_macdfix — Moving Average Convergence/Divergence Fix 12/26
  • trader_mama — MESA Adaptive Moving Average
  • trader_mavp — Moving average with variable period
  • trader_max — Highest value over a specified period
  • trader_maxindex — Index of highest value over a specified period
  • trader_medprice — Median Price
  • trader_mfi — Money Flow Index
  • trader_midpoint — MidPoint over period
  • trader_midprice — Midpoint Price over period
  • trader_min — Lowest value over a specified period
  • trader_minindex — Index of lowest value over a specified period
  • trader_minmax — Lowest and highest values over a specified period
  • trader_minmaxindex — Indexes of lowest and highest values over a specified period
  • trader_minus_di — Minus Directional Indicator
  • trader_minus_dm — Minus Directional Movement
  • trader_mom — Momentum
  • trader_mult — Vector Arithmetic Mult
  • trader_natr — Normalized Average True Range
  • trader_obv — On Balance Volume
  • trader_plus_di — Plus Directional Indicator
  • trader_plus_dm — Plus Directional Movement
  • trader_ppo — Percentage Price Oscillator
  • trader_roc — Rate of change : ((price/prevPrice)-1)*100
  • trader_rocp — Rate of change Percentage: (price-prevPrice)/prevPrice
  • trader_rocr100 — Rate of change ratio 100 scale: (price/prevPrice)*100
  • trader_rocr — Rate of change ratio: (price/prevPrice)
  • trader_rsi — Relative Strength Index
  • trader_sar — Parabolic SAR
  • trader_sarext — Parabolic SAR - Extended
  • trader_set_compat — Set compatibility mode
  • trader_set_unstable_period — Set unstable period
  • trader_sin — Vector Trigonometric Sin
  • trader_sinh — Vector Trigonometric Sinh
  • trader_sma — Simple Moving Average
  • trader_sqrt — Vector Square Root
  • trader_stddev — Standard Deviation
  • trader_stoch — Stochastic
  • trader_stochf — Stochastic Fast
  • trader_stochrsi — Stochastic Relative Strength Index
  • trader_sub — Vector Arithmetic Subtraction
  • trader_sum — Summation
  • trader_t3 — Triple Exponential Moving Average (T3)
  • trader_tan — Vector Trigonometric Tan
  • trader_tanh — Vector Trigonometric Tanh
  • trader_tema — Triple Exponential Moving Average
  • trader_trange — True Range
  • trader_trima — Triangular Moving Average
  • trader_trix — 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA
  • trader_tsf — Time Series Forecast
  • trader_typprice — Typical Price
  • trader_ultosc — Ultimate Oscillator
  • trader_var — Variance
  • trader_wclprice — Weighted Close Price
  • trader_willr — Williams' %R
  • trader_wma — Weighted Moving Average
预定义常量
trader_acos
Trader


Vector Trigonometric ACos

Trader 函数
trader_ad
Trader 函数
PHP Manual

trader_acos

(PECL trader >= 0.2.0)

trader_acos — Vector Trigonometric ACos

说明

array trader_acos ( array $real )

Calculates the arc cosine for each value in real and returns the resulting array.

参数

real

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

Trader 函数
trader_ad
Trader 函数


Chaikin A/D Line

trader_acos
trader_add
Trader 函数
PHP Manual

trader_ad

(PECL trader >= 0.2.0)

trader_ad — Chaikin A/D Line

说明

array trader_ad ( array $high , array $low , array $close , array $volume )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

volume

成交量，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_acos
trader_add
Trader 函数


Vector Arithmetic Add

trader_ad
trader_adosc
Trader 函数
PHP Manual

trader_add

(PECL trader >= 0.2.0)

trader_add — Vector Arithmetic Add

说明

array trader_add ( array $real0 , array $real1 )

Calculates the vector addition of real0 to real1 and returns the resulting vector.

参数

real0

浮点数数组。

real1

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_ad
trader_adosc
Trader 函数


Chaikin A/D Oscillator

trader_add
trader_adx
Trader 函数
PHP Manual

trader_adosc

(PECL trader >= 0.2.0)

trader_adosc — Chaikin A/D Oscillator

说明

array trader_adosc ( array $high , array $low , array $close , array $volume [, integer $fastPeriod [, integer $slowPeriod ]] )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

volume

成交量，浮点数数组。

fastPeriod

Number of period for the fast MA. Valid range from 2 to 100000.

slowPeriod

Number of period for the slow MA. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_add
trader_adx
Trader 函数


Average Directional Movement Index

trader_adosc
trader_adxr
Trader 函数
PHP Manual

trader_adx

(PECL trader >= 0.2.0)

trader_adx — Average Directional Movement Index

说明

array trader_adx ( array $high , array $low , array $close [, integer $timePeriod ] )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_adosc
trader_adxr
Trader 函数


Average Directional Movement Index Rating

trader_adx
trader_apo
Trader 函数
PHP Manual

trader_adxr

(PECL trader >= 0.2.0)

trader_adxr — Average Directional Movement Index Rating

说明

array trader_adxr ( array $high , array $low , array $close [, integer $timePeriod ] )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_adx
trader_apo
Trader 函数


Absolute Price Oscillator

trader_adxr
trader_aroon
Trader 函数
PHP Manual

trader_apo

(PECL trader >= 0.2.0)

trader_apo — Absolute Price Oscillator

说明

array trader_apo ( array $real [, integer $fastPeriod [, integer $slowPeriod [, integer $mAType ]]] )

参数

real

浮点数数组。

fastPeriod

Number of period for the fast MA. Valid range from 2 to 100000.

slowPeriod

Number of period for the slow MA. Valid range from 2 to 100000.

mAType

Type of Moving Average. TRADER_MA_TYPE_* series of constants should be used.

返回值

Returns an array with calculated data or false on failure.

trader_adxr
trader_aroon
Trader 函数


Aroon

trader_apo
trader_aroonosc
Trader 函数
PHP Manual

trader_aroon

(PECL trader >= 0.2.0)

trader_aroon — Aroon

说明

array trader_aroon ( array $high , array $low [, integer $timePeriod ] )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_apo
trader_aroonosc
Trader 函数


Aroon Oscillator

trader_aroon
trader_asin
Trader 函数
PHP Manual

trader_aroonosc

(PECL trader >= 0.2.0)

trader_aroonosc — Aroon Oscillator

说明

array trader_aroonosc ( array $high , array $low [, integer $timePeriod ] )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_aroon
trader_asin
Trader 函数


Vector Trigonometric ASin

trader_aroonosc
trader_atan
Trader 函数
PHP Manual

trader_asin

(PECL trader >= 0.2.0)

trader_asin — Vector Trigonometric ASin

说明

array trader_asin ( array $real )

Calculates the arc sine for each value in real and returns the resulting array.

参数

real

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_aroonosc
trader_atan
Trader 函数


Vector Trigonometric ATan

trader_asin
trader_atr
Trader 函数
PHP Manual

trader_atan

(PECL trader >= 0.2.0)

trader_atan — Vector Trigonometric ATan

说明

array trader_atan ( array $real )

Calculates the arc tangent for each value in real and returns the resulting array.

参数

real

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_asin
trader_atr
Trader 函数


Average True Range

trader_atan
trader_avgprice
Trader 函数
PHP Manual

trader_atr

(PECL trader >= 0.2.0)

trader_atr — Average True Range

说明

array trader_atr ( array $high , array $low , array $close [, integer $timePeriod ] )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_atan
trader_avgprice
Trader 函数


Average Price

trader_atr
trader_bbands
Trader 函数
PHP Manual

trader_avgprice

(PECL trader >= 0.2.0)

trader_avgprice — Average Price

说明

array trader_avgprice ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_atr
trader_bbands
Trader 函数


Bollinger Bands

trader_avgprice
trader_beta
Trader 函数
PHP Manual

trader_bbands

(PECL trader >= 0.2.0)

trader_bbands — Bollinger Bands

说明

array trader_bbands ( array $real [, integer $timePeriod [, float $nbDevUp [, float $nbDevDn [, integer $mAType ]]]] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

nbDevUp

Deviation multiplier for upper band. Valid range from TRADER_REAL_MIN to TRADER_REAL_MAX.

nbDevDn

Deviation multiplier for lower band. Valid range from TRADER_REAL_MIN to TRADER_REAL_MAX.

mAType

Type of Moving Average. TRADER_MA_TYPE_* series of constants should be used.

返回值

Returns an array with calculated data or false on failure.

trader_avgprice
trader_beta
Trader 函数


Beta

trader_bbands
trader_bop
Trader 函数
PHP Manual

trader_beta

(PECL trader >= 0.2.0)

trader_beta — Beta

说明

array trader_beta ( array $real0 , array $real1 [, integer $timePeriod ] )

参数

real0

浮点数数组。

real1

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_bbands
trader_bop
Trader 函数


Balance Of Power

trader_beta
trader_cci
Trader 函数
PHP Manual

trader_bop

(PECL trader >= 0.2.0)

trader_bop — Balance Of Power

说明

array trader_bop ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_beta
trader_cci
Trader 函数


Commodity Channel Index

trader_bop
trader_cdl2crows
Trader 函数
PHP Manual

trader_cci

(PECL trader >= 0.2.0)

trader_cci — Commodity Channel Index

说明

array trader_cci ( array $high , array $low , array $close [, integer $timePeriod ] )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_bop
trader_cdl2crows
Trader 函数


Two Crows

trader_cci
trader_cdl3blackcrows
Trader 函数
PHP Manual

trader_cdl2crows

(PECL trader >= 0.2.0)

trader_cdl2crows — Two Crows

说明

array trader_cdl2crows ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cci
trader_cdl3blackcrows
Trader 函数


Three Black Crows

trader_cdl2crows
trader_cdl3inside
Trader 函数
PHP Manual

trader_cdl3blackcrows

(PECL trader >= 0.2.0)

trader_cdl3blackcrows — Three Black Crows

说明

array trader_cdl3blackcrows ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdl2crows
trader_cdl3inside
Trader 函数


Three Inside Up/Down

trader_cdl3blackcrows
trader_cdl3linestrike
Trader 函数
PHP Manual

trader_cdl3inside

(PECL trader >= 0.2.0)

trader_cdl3inside — Three Inside Up/Down

说明

array trader_cdl3inside ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdl3blackcrows
trader_cdl3linestrike
Trader 函数


Three-Line Strike

trader_cdl3inside
trader_cdl3outside
Trader 函数
PHP Manual

trader_cdl3linestrike

(PECL trader >= 0.2.0)

trader_cdl3linestrike — Three-Line Strike

说明

array trader_cdl3linestrike ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdl3inside
trader_cdl3outside
Trader 函数


Three Outside Up/Down

trader_cdl3linestrike
trader_cdl3starsinsouth
Trader 函数
PHP Manual

trader_cdl3outside

(PECL trader >= 0.2.0)

trader_cdl3outside — Three Outside Up/Down

说明

array trader_cdl3outside ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdl3linestrike
trader_cdl3starsinsouth
Trader 函数


Three Stars In The South

trader_cdl3outside
trader_cdl3whitesoldiers
Trader 函数
PHP Manual

trader_cdl3starsinsouth

(PECL trader >= 0.2.0)

trader_cdl3starsinsouth — Three Stars In The South

说明

array trader_cdl3starsinsouth ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdl3outside
trader_cdl3whitesoldiers
Trader 函数


Three Advancing White Soldiers

trader_cdl3starsinsouth
trader_cdlabandonedbaby
Trader 函数
PHP Manual

trader_cdl3whitesoldiers

(PECL trader >= 0.2.0)

trader_cdl3whitesoldiers — Three Advancing White Soldiers

说明

array trader_cdl3whitesoldiers ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdl3starsinsouth
trader_cdlabandonedbaby
Trader 函数


Abandoned Baby

trader_cdl3whitesoldiers
trader_cdladvanceblock
Trader 函数
PHP Manual

trader_cdlabandonedbaby

(PECL trader >= 0.2.0)

trader_cdlabandonedbaby — Abandoned Baby

说明

array trader_cdlabandonedbaby ( array $open , array $high , array $low , array $close [, float $penetration ] )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

penetration

一个烛台渗入到另一个烛台的百分比。

返回值

Returns an array with calculated data or false on failure.

trader_cdl3whitesoldiers
trader_cdladvanceblock
Trader 函数


Advance Block

trader_cdlabandonedbaby
trader_cdlbelthold
Trader 函数
PHP Manual

trader_cdladvanceblock

(PECL trader >= 0.2.0)

trader_cdladvanceblock — Advance Block

说明

array trader_cdladvanceblock ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlabandonedbaby
trader_cdlbelthold
Trader 函数


Belt-hold

trader_cdladvanceblock
trader_cdlbreakaway
Trader 函数
PHP Manual

trader_cdlbelthold

(PECL trader >= 0.2.0)

trader_cdlbelthold — Belt-hold

说明

array trader_cdlbelthold ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdladvanceblock
trader_cdlbreakaway
Trader 函数


Breakaway

trader_cdlbelthold
trader_cdlclosingmarubozu
Trader 函数
PHP Manual

trader_cdlbreakaway

(PECL trader >= 0.2.0)

trader_cdlbreakaway — Breakaway

说明

array trader_cdlbreakaway ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlbelthold
trader_cdlclosingmarubozu
Trader 函数


Closing Marubozu

trader_cdlbreakaway
trader_cdlconcealbabyswall
Trader 函数
PHP Manual

trader_cdlclosingmarubozu

(PECL trader >= 0.2.0)

trader_cdlclosingmarubozu — Closing Marubozu

说明

array trader_cdlclosingmarubozu ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlbreakaway
trader_cdlconcealbabyswall
Trader 函数


Concealing Baby Swallow

trader_cdlclosingmarubozu
trader_cdlcounterattack
Trader 函数
PHP Manual

trader_cdlconcealbabyswall

(PECL trader >= 0.2.0)

trader_cdlconcealbabyswall — Concealing Baby Swallow

说明

array trader_cdlconcealbabyswall ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlclosingmarubozu
trader_cdlcounterattack
Trader 函数


Counterattack

trader_cdlconcealbabyswall
trader_cdldarkcloudcover
Trader 函数
PHP Manual

trader_cdlcounterattack

(PECL trader >= 0.2.0)

trader_cdlcounterattack — Counterattack

说明

array trader_cdlcounterattack ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlconcealbabyswall
trader_cdldarkcloudcover
Trader 函数


Dark Cloud Cover

trader_cdlcounterattack
trader_cdldoji
Trader 函数
PHP Manual

trader_cdldarkcloudcover

(PECL trader >= 0.2.0)

trader_cdldarkcloudcover — Dark Cloud Cover

说明

array trader_cdldarkcloudcover ( array $open , array $high , array $low , array $close [, float $penetration ] )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

penetration

一个烛台渗入到另一个烛台的百分比。

返回值

Returns an array with calculated data or false on failure.

trader_cdlcounterattack
trader_cdldoji
Trader 函数


Doji

trader_cdldarkcloudcover
trader_cdldojistar
Trader 函数
PHP Manual

trader_cdldoji

(PECL trader >= 0.2.0)

trader_cdldoji — Doji

说明

array trader_cdldoji ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdldarkcloudcover
trader_cdldojistar
Trader 函数


Doji Star

trader_cdldoji
trader_cdldragonflydoji
Trader 函数
PHP Manual

trader_cdldojistar

(PECL trader >= 0.2.0)

trader_cdldojistar — Doji Star

说明

array trader_cdldojistar ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdldoji
trader_cdldragonflydoji
Trader 函数


Dragonfly Doji

trader_cdldojistar
trader_cdlengulfing
Trader 函数
PHP Manual

trader_cdldragonflydoji

(PECL trader >= 0.2.0)

trader_cdldragonflydoji — Dragonfly Doji

说明

array trader_cdldragonflydoji ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdldojistar
trader_cdlengulfing
Trader 函数


Engulfing Pattern

trader_cdldragonflydoji
trader_cdleveningdojistar
Trader 函数
PHP Manual

trader_cdlengulfing

(PECL trader >= 0.2.0)

trader_cdlengulfing — Engulfing Pattern

说明

array trader_cdlengulfing ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdldragonflydoji
trader_cdleveningdojistar
Trader 函数


Evening Doji Star

trader_cdlengulfing
trader_cdleveningstar
Trader 函数
PHP Manual

trader_cdleveningdojistar

(PECL trader >= 0.2.0)

trader_cdleveningdojistar — Evening Doji Star

说明

array trader_cdleveningdojistar ( array $open , array $high , array $low , array $close [, float $penetration ] )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

penetration

一个烛台渗入到另一个烛台的百分比。

返回值

Returns an array with calculated data or false on failure.

trader_cdlengulfing
trader_cdleveningstar
Trader 函数


Evening Star

trader_cdleveningdojistar
trader_cdlgapsidesidewhite
Trader 函数
PHP Manual

trader_cdleveningstar

(PECL trader >= 0.2.0)

trader_cdleveningstar — Evening Star

说明

array trader_cdleveningstar ( array $open , array $high , array $low , array $close [, float $penetration ] )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

penetration

一个烛台渗入到另一个烛台的百分比。

返回值

Returns an array with calculated data or false on failure.

trader_cdleveningdojistar
trader_cdlgapsidesidewhite
Trader 函数


Up/Down-gap side-by-side white lines

trader_cdleveningstar
trader_cdlgravestonedoji
Trader 函数
PHP Manual

trader_cdlgapsidesidewhite

(PECL trader >= 0.2.0)

trader_cdlgapsidesidewhite — Up/Down-gap side-by-side white lines

说明

array trader_cdlgapsidesidewhite ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdleveningstar
trader_cdlgravestonedoji
Trader 函数


Gravestone Doji

trader_cdlgapsidesidewhite
trader_cdlhammer
Trader 函数
PHP Manual

trader_cdlgravestonedoji

(PECL trader >= 0.2.0)

trader_cdlgravestonedoji — Gravestone Doji

说明

array trader_cdlgravestonedoji ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlgapsidesidewhite
trader_cdlhammer
Trader 函数


Hammer

trader_cdlgravestonedoji
trader_cdlhangingman
Trader 函数
PHP Manual

trader_cdlhammer

(PECL trader >= 0.2.0)

trader_cdlhammer — Hammer

说明

array trader_cdlhammer ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlgravestonedoji
trader_cdlhangingman
Trader 函数


Hanging Man

trader_cdlhammer
trader_cdlharami
Trader 函数
PHP Manual

trader_cdlhangingman

(PECL trader >= 0.2.0)

trader_cdlhangingman — Hanging Man

说明

array trader_cdlhangingman ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlhammer
trader_cdlharami
Trader 函数


Harami Pattern

trader_cdlhangingman
trader_cdlharamicross
Trader 函数
PHP Manual

trader_cdlharami

(PECL trader >= 0.2.0)

trader_cdlharami — Harami Pattern

说明

array trader_cdlharami ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlhangingman
trader_cdlharamicross
Trader 函数


Harami Cross Pattern

trader_cdlharami
trader_cdlhighwave
Trader 函数
PHP Manual

trader_cdlharamicross

(PECL trader >= 0.2.0)

trader_cdlharamicross — Harami Cross Pattern

说明

array trader_cdlharamicross ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlharami
trader_cdlhighwave
Trader 函数


High-Wave Candle

trader_cdlharamicross
trader_cdlhikkake
Trader 函数
PHP Manual

trader_cdlhighwave

(PECL trader >= 0.2.0)

trader_cdlhighwave — High-Wave Candle

说明

array trader_cdlhighwave ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlharamicross
trader_cdlhikkake
Trader 函数


Hikkake Pattern

trader_cdlhighwave
trader_cdlhikkakemod
Trader 函数
PHP Manual

trader_cdlhikkake

(PECL trader >= 0.2.0)

trader_cdlhikkake — Hikkake Pattern

说明

array trader_cdlhikkake ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlhighwave
trader_cdlhikkakemod
Trader 函数


Modified Hikkake Pattern

trader_cdlhikkake
trader_cdlhomingpigeon
Trader 函数
PHP Manual

trader_cdlhikkakemod

(PECL trader >= 0.2.0)

trader_cdlhikkakemod — Modified Hikkake Pattern

说明

array trader_cdlhikkakemod ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlhikkake
trader_cdlhomingpigeon
Trader 函数


Homing Pigeon

trader_cdlhikkakemod
trader_cdlidentical3crows
Trader 函数
PHP Manual

trader_cdlhomingpigeon

(PECL trader >= 0.2.0)

trader_cdlhomingpigeon — Homing Pigeon

说明

array trader_cdlhomingpigeon ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlhikkakemod
trader_cdlidentical3crows
Trader 函数


Identical Three Crows

trader_cdlhomingpigeon
trader_cdlinneck
Trader 函数
PHP Manual

trader_cdlidentical3crows

(PECL trader >= 0.2.0)

trader_cdlidentical3crows — Identical Three Crows

说明

array trader_cdlidentical3crows ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlhomingpigeon
trader_cdlinneck
Trader 函数


In-Neck Pattern

trader_cdlidentical3crows
trader_cdlinvertedhammer
Trader 函数
PHP Manual

trader_cdlinneck

(PECL trader >= 0.2.0)

trader_cdlinneck — In-Neck Pattern

说明

array trader_cdlinneck ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlidentical3crows
trader_cdlinvertedhammer
Trader 函数


Inverted Hammer

trader_cdlinneck
trader_cdlkicking
Trader 函数
PHP Manual

trader_cdlinvertedhammer

(PECL trader >= 0.2.0)

trader_cdlinvertedhammer — Inverted Hammer

说明

array trader_cdlinvertedhammer ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlinneck
trader_cdlkicking
Trader 函数


Kicking

trader_cdlinvertedhammer
trader_cdlkickingbylength
Trader 函数
PHP Manual

trader_cdlkicking

(PECL trader >= 0.2.0)

trader_cdlkicking — Kicking

说明

array trader_cdlkicking ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlinvertedhammer
trader_cdlkickingbylength
Trader 函数


Kicking - bull/bear determined by the longer marubozu

trader_cdlkicking
trader_cdlladderbottom
Trader 函数
PHP Manual

trader_cdlkickingbylength

(PECL trader >= 0.2.0)

trader_cdlkickingbylength — Kicking - bull/bear determined by the longer marubozu

说明

array trader_cdlkickingbylength ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlkicking
trader_cdlladderbottom
Trader 函数


Ladder Bottom

trader_cdlkickingbylength
trader_cdllongleggeddoji
Trader 函数
PHP Manual

trader_cdlladderbottom

(PECL trader >= 0.2.0)

trader_cdlladderbottom — Ladder Bottom

说明

array trader_cdlladderbottom ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlkickingbylength
trader_cdllongleggeddoji
Trader 函数


Long Legged Doji

trader_cdlladderbottom
trader_cdllongline
Trader 函数
PHP Manual

trader_cdllongleggeddoji

(PECL trader >= 0.2.0)

trader_cdllongleggeddoji — Long Legged Doji

说明

array trader_cdllongleggeddoji ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlladderbottom
trader_cdllongline
Trader 函数


Long Line Candle

trader_cdllongleggeddoji
trader_cdlmarubozu
Trader 函数
PHP Manual

trader_cdllongline

(PECL trader >= 0.2.0)

trader_cdllongline — Long Line Candle

说明

array trader_cdllongline ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdllongleggeddoji
trader_cdlmarubozu
Trader 函数


Marubozu

trader_cdllongline
trader_cdlmatchinglow
Trader 函数
PHP Manual

trader_cdlmarubozu

(PECL trader >= 0.2.0)

trader_cdlmarubozu — Marubozu

说明

array trader_cdlmarubozu ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdllongline
trader_cdlmatchinglow
Trader 函数


Matching Low

trader_cdlmarubozu
trader_cdlmathold
Trader 函数
PHP Manual

trader_cdlmatchinglow

(PECL trader >= 0.2.0)

trader_cdlmatchinglow — Matching Low

说明

array trader_cdlmatchinglow ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlmarubozu
trader_cdlmathold
Trader 函数


Mat Hold

trader_cdlmatchinglow
trader_cdlmorningdojistar
Trader 函数
PHP Manual

trader_cdlmathold

(PECL trader >= 0.2.0)

trader_cdlmathold — Mat Hold

说明

array trader_cdlmathold ( array $open , array $high , array $low , array $close [, float $penetration ] )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

penetration

一个烛台渗入到另一个烛台的百分比。

返回值

Returns an array with calculated data or false on failure.

trader_cdlmatchinglow
trader_cdlmorningdojistar
Trader 函数


Morning Doji Star

trader_cdlmathold
trader_cdlmorningstar
Trader 函数
PHP Manual

trader_cdlmorningdojistar

(PECL trader >= 0.2.0)

trader_cdlmorningdojistar — Morning Doji Star

说明

array trader_cdlmorningdojistar ( array $open , array $high , array $low , array $close [, float $penetration ] )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

penetration

一个烛台渗入到另一个烛台的百分比。

返回值

Returns an array with calculated data or false on failure.

trader_cdlmathold
trader_cdlmorningstar
Trader 函数


Morning Star

trader_cdlmorningdojistar
trader_cdlonneck
Trader 函数
PHP Manual

trader_cdlmorningstar

(PECL trader >= 0.2.0)

trader_cdlmorningstar — Morning Star

说明

array trader_cdlmorningstar ( array $open , array $high , array $low , array $close [, float $penetration ] )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

penetration

一个烛台渗入到另一个烛台的百分比。

返回值

Returns an array with calculated data or false on failure.

trader_cdlmorningdojistar
trader_cdlonneck
Trader 函数


On-Neck Pattern

trader_cdlmorningstar
trader_cdlpiercing
Trader 函数
PHP Manual

trader_cdlonneck

(PECL trader >= 0.2.0)

trader_cdlonneck — On-Neck Pattern

说明

array trader_cdlonneck ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlmorningstar
trader_cdlpiercing
Trader 函数


Piercing Pattern

trader_cdlonneck
trader_cdlrickshawman
Trader 函数
PHP Manual

trader_cdlpiercing

(PECL trader >= 0.2.0)

trader_cdlpiercing — Piercing Pattern

说明

array trader_cdlpiercing ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlonneck
trader_cdlrickshawman
Trader 函数


Rickshaw Man

trader_cdlpiercing
trader_cdlrisefall3methods
Trader 函数
PHP Manual

trader_cdlrickshawman

(PECL trader >= 0.2.0)

trader_cdlrickshawman — Rickshaw Man

说明

array trader_cdlrickshawman ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlpiercing
trader_cdlrisefall3methods
Trader 函数


Rising/Falling Three Methods

trader_cdlrickshawman
trader_cdlseparatinglines
Trader 函数
PHP Manual

trader_cdlrisefall3methods

(PECL trader >= 0.2.0)

trader_cdlrisefall3methods — Rising/Falling Three Methods

说明

array trader_cdlrisefall3methods ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlrickshawman
trader_cdlseparatinglines
Trader 函数


Separating Lines

trader_cdlrisefall3methods
trader_cdlshootingstar
Trader 函数
PHP Manual

trader_cdlseparatinglines

(PECL trader >= 0.2.0)

trader_cdlseparatinglines — Separating Lines

说明

array trader_cdlseparatinglines ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlrisefall3methods
trader_cdlshootingstar
Trader 函数


Shooting Star

trader_cdlseparatinglines
trader_cdlshortline
Trader 函数
PHP Manual

trader_cdlshootingstar

(PECL trader >= 0.2.0)

trader_cdlshootingstar — Shooting Star

说明

array trader_cdlshootingstar ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlseparatinglines
trader_cdlshortline
Trader 函数


Short Line Candle

trader_cdlshootingstar
trader_cdlspinningtop
Trader 函数
PHP Manual

trader_cdlshortline

(PECL trader >= 0.2.0)

trader_cdlshortline — Short Line Candle

说明

array trader_cdlshortline ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlshootingstar
trader_cdlspinningtop
Trader 函数


Spinning Top

trader_cdlshortline
trader_cdlstalledpattern
Trader 函数
PHP Manual

trader_cdlspinningtop

(PECL trader >= 0.2.0)

trader_cdlspinningtop — Spinning Top

说明

array trader_cdlspinningtop ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlshortline
trader_cdlstalledpattern
Trader 函数


Stalled Pattern

trader_cdlspinningtop
trader_cdlsticksandwich
Trader 函数
PHP Manual

trader_cdlstalledpattern

(PECL trader >= 0.2.0)

trader_cdlstalledpattern — Stalled Pattern

说明

array trader_cdlstalledpattern ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlspinningtop
trader_cdlsticksandwich
Trader 函数


Stick Sandwich

trader_cdlstalledpattern
trader_cdltakuri
Trader 函数
PHP Manual

trader_cdlsticksandwich

(PECL trader >= 0.2.0)

trader_cdlsticksandwich — Stick Sandwich

说明

array trader_cdlsticksandwich ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlstalledpattern
trader_cdltakuri
Trader 函数


Takuri (Dragonfly Doji with very long lower shadow)

trader_cdlsticksandwich
trader_cdltasukigap
Trader 函数
PHP Manual

trader_cdltakuri

(PECL trader >= 0.2.0)

trader_cdltakuri — Takuri (Dragonfly Doji with very long lower shadow)

说明

array trader_cdltakuri ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlsticksandwich
trader_cdltasukigap
Trader 函数


Tasuki Gap

trader_cdltakuri
trader_cdlthrusting
Trader 函数
PHP Manual

trader_cdltasukigap

(PECL trader >= 0.2.0)

trader_cdltasukigap — Tasuki Gap

说明

array trader_cdltasukigap ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdltakuri
trader_cdlthrusting
Trader 函数


Thrusting Pattern

trader_cdltasukigap
trader_cdltristar
Trader 函数
PHP Manual

trader_cdlthrusting

(PECL trader >= 0.2.0)

trader_cdlthrusting — Thrusting Pattern

说明

array trader_cdlthrusting ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdltasukigap
trader_cdltristar
Trader 函数


Tristar Pattern

trader_cdlthrusting
trader_cdlunique3river
Trader 函数
PHP Manual

trader_cdltristar

(PECL trader >= 0.2.0)

trader_cdltristar — Tristar Pattern

说明

array trader_cdltristar ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlthrusting
trader_cdlunique3river
Trader 函数


Unique 3 River

trader_cdltristar
trader_cdlupsidegap2crows
Trader 函数
PHP Manual

trader_cdlunique3river

(PECL trader >= 0.2.0)

trader_cdlunique3river — Unique 3 River

说明

array trader_cdlunique3river ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdltristar
trader_cdlupsidegap2crows
Trader 函数


Upside Gap Two Crows

trader_cdlunique3river
trader_cdlxsidegap3methods
Trader 函数
PHP Manual

trader_cdlupsidegap2crows

(PECL trader >= 0.2.0)

trader_cdlupsidegap2crows — Upside Gap Two Crows

说明

array trader_cdlupsidegap2crows ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlunique3river
trader_cdlxsidegap3methods
Trader 函数


Upside/Downside Gap Three Methods

trader_cdlupsidegap2crows
trader_ceil
Trader 函数
PHP Manual

trader_cdlxsidegap3methods

(PECL trader >= 0.2.0)

trader_cdlxsidegap3methods — Upside/Downside Gap Three Methods

说明

array trader_cdlxsidegap3methods ( array $open , array $high , array $low , array $close )

参数

open

开盘价，浮点数数组。

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlupsidegap2crows
trader_ceil
Trader 函数


Vector Ceil

trader_cdlxsidegap3methods
trader_cmo
Trader 函数
PHP Manual

trader_ceil

(PECL trader >= 0.2.0)

trader_ceil — Vector Ceil

说明

array trader_ceil ( array $real )

Calculates the next higest integer for each value in real and returns the resulting array.

参数

real

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cdlxsidegap3methods
trader_cmo
Trader 函数


Chande Momentum Oscillator

trader_ceil
trader_correl
Trader 函数
PHP Manual

trader_cmo

(PECL trader >= 0.2.0)

trader_cmo — Chande Momentum Oscillator

说明

array trader_cmo ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_ceil
trader_correl
Trader 函数


Pearson's Correlation Coefficient (r)

trader_cmo
trader_cos
Trader 函数
PHP Manual

trader_correl

(PECL trader >= 0.2.0)

trader_correl — Pearson's Correlation Coefficient (r)

说明

array trader_correl ( array $real0 , array $real1 [, integer $timePeriod ] )

参数

real0

浮点数数组。

real1

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_cmo
trader_cos
Trader 函数


Vector Trigonometric Cos

trader_correl
trader_cosh
Trader 函数
PHP Manual

trader_cos

(PECL trader >= 0.2.0)

trader_cos — Vector Trigonometric Cos

说明

array trader_cos ( array $real )

Calculates the cosine for each value in real and returns the resulting array.

参数

real

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_correl
trader_cosh
Trader 函数


Vector Trigonometric Cosh

trader_cos
trader_dema
Trader 函数
PHP Manual

trader_cosh

(PECL trader >= 0.2.0)

trader_cosh — Vector Trigonometric Cosh

说明

array trader_cosh ( array $real )

Calculates the hyperbolic cosine for each value in real and returns the resulting array.

参数

real

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_cos
trader_dema
Trader 函数


Double Exponential Moving Average

trader_cosh
trader_div
Trader 函数
PHP Manual

trader_dema

(PECL trader >= 0.2.0)

trader_dema — Double Exponential Moving Average

说明

array trader_dema ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_cosh
trader_div
Trader 函数


Vector Arithmetic Div

trader_dema
trader_dx
Trader 函数
PHP Manual

trader_div

(PECL trader >= 0.2.0)

trader_div — Vector Arithmetic Div

说明

array trader_div ( array $real0 , array $real1 )

Divides each value from real0 by the corresponding value from real1 and returns the resulting array.

参数

real0

浮点数数组。

real1

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_dema
trader_dx
Trader 函数


Directional Movement Index

trader_div
trader_ema
Trader 函数
PHP Manual

trader_dx

(PECL trader >= 0.2.0)

trader_dx — Directional Movement Index

说明

array trader_dx ( array $high , array $low , array $close [, integer $timePeriod ] )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_div
trader_ema
Trader 函数


Exponential Moving Average

trader_dx
trader_errno
Trader 函数
PHP Manual

trader_ema

(PECL trader >= 0.2.0)

trader_ema — Exponential Moving Average

说明

array trader_ema ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_dx
trader_errno
Trader 函数


Get error code

trader_ema
trader_exp
Trader 函数
PHP Manual

trader_errno

(PECL trader >= 0.3.0)

trader_errno — Get error code

说明

integer trader_errno ( void )

Get error code of the last operation.

返回值

Returns the error code identified by one of the TRADER_ERR_* constants.

trader_ema
trader_exp
Trader 函数


Vector Arithmetic Exp

trader_errno
trader_floor
Trader 函数
PHP Manual

trader_exp

(PECL trader >= 0.2.0)

trader_exp — Vector Arithmetic Exp

说明

array trader_exp ( array $real )

Calculates e raised to the power of each value in real. Returns an array with the calculated data.

参数

real

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_errno
trader_floor
Trader 函数


Vector Floor

trader_exp
trader_get_compat
Trader 函数
PHP Manual

trader_floor

(PECL trader >= 0.2.0)

trader_floor — Vector Floor

说明

array trader_floor ( array $real )

Calculates the next lowest integer for each value in real and returns the resulting array.

参数

real

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_exp
trader_get_compat
Trader 函数


Get compatibility mode

trader_floor
trader_get_unstable_period
Trader 函数
PHP Manual

trader_get_compat

(PECL trader >= 0.2.2)

trader_get_compat — Get compatibility mode

说明

integer trader_get_compat ( void )

Get compatibility mode which affects the way calculations are done by all the extension functions.

返回值

Returns the compatibility mode id which can be identified by TRADER_COMPATIBILITY_* series of constants.

trader_floor
trader_get_unstable_period
Trader 函数


Get unstable period

trader_get_compat
trader_ht_dcperiod
Trader 函数
PHP Manual

trader_get_unstable_period

(PECL trader >= 0.2.2)

trader_get_unstable_period — Get unstable period

说明

integer trader_get_unstable_period ( integer $functionId )

Get unstable period factor for a particular function.

参数

functionId

Function ID the factor to be read for. TRADER_FUNC_UNST_* series of constants should be used.

返回值

Returns the unstable period factor for the corresponding function.

trader_get_compat
trader_ht_dcperiod
Trader 函数


Hilbert Transform - Dominant Cycle Period

trader_get_unstable_period
trader_ht_dcphase
Trader 函数
PHP Manual

trader_ht_dcperiod

(PECL trader >= 0.2.0)

trader_ht_dcperiod — Hilbert Transform - Dominant Cycle Period

说明

array trader_ht_dcperiod ( array $real )

参数

real

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_get_unstable_period
trader_ht_dcphase
Trader 函数


Hilbert Transform - Dominant Cycle Phase

trader_ht_dcperiod
trader_ht_phasor
Trader 函数
PHP Manual

trader_ht_dcphase

(PECL trader >= 0.2.0)

trader_ht_dcphase — Hilbert Transform - Dominant Cycle Phase

说明

array trader_ht_dcphase ( array $real )

参数

real

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_ht_dcperiod
trader_ht_phasor
Trader 函数


Hilbert Transform - Phasor Components

trader_ht_dcphase
trader_ht_sine
Trader 函数
PHP Manual

trader_ht_phasor

(PECL trader >= 0.2.0)

trader_ht_phasor — Hilbert Transform - Phasor Components

说明

array trader_ht_phasor ( array $real )

参数

real

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_ht_dcphase
trader_ht_sine
Trader 函数


Hilbert Transform - SineWave

trader_ht_phasor
trader_ht_trendline
Trader 函数
PHP Manual

trader_ht_sine

(PECL trader >= 0.2.0)

trader_ht_sine — Hilbert Transform - SineWave

说明

array trader_ht_sine ( array $real )

参数

real

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_ht_phasor
trader_ht_trendline
Trader 函数


Hilbert Transform - Instantaneous Trendline

trader_ht_sine
trader_ht_trendmode
Trader 函数
PHP Manual

trader_ht_trendline

(PECL trader >= 0.2.0)

trader_ht_trendline — Hilbert Transform - Instantaneous Trendline

说明

array trader_ht_trendline ( array $real )

参数

real

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_ht_sine
trader_ht_trendmode
Trader 函数


Hilbert Transform - Trend vs Cycle Mode

trader_ht_trendline
trader_kama
Trader 函数
PHP Manual

trader_ht_trendmode

(PECL trader >= 0.2.0)

trader_ht_trendmode — Hilbert Transform - Trend vs Cycle Mode

说明

array trader_ht_trendmode ( array $real )

参数

real

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_ht_trendline
trader_kama
Trader 函数


Kaufman Adaptive Moving Average

trader_ht_trendmode
trader_linearreg_angle
Trader 函数
PHP Manual

trader_kama

(PECL trader >= 0.2.0)

trader_kama — Kaufman Adaptive Moving Average

说明

array trader_kama ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_ht_trendmode
trader_linearreg_angle
Trader 函数


Linear Regression Angle

trader_kama
trader_linearreg_intercept
Trader 函数
PHP Manual

trader_linearreg_angle

(PECL trader >= 0.2.0)

trader_linearreg_angle — Linear Regression Angle

说明

array trader_linearreg_angle ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_kama
trader_linearreg_intercept
Trader 函数


Linear Regression Intercept

trader_linearreg_angle
trader_linearreg_slope
Trader 函数
PHP Manual

trader_linearreg_intercept

(PECL trader >= 0.2.0)

trader_linearreg_intercept — Linear Regression Intercept

说明

array trader_linearreg_intercept ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_linearreg_angle
trader_linearreg_slope
Trader 函数


Linear Regression Slope

trader_linearreg_intercept
trader_linearreg
Trader 函数
PHP Manual

trader_linearreg_slope

(PECL trader >= 0.2.0)

trader_linearreg_slope — Linear Regression Slope

说明

array trader_linearreg_slope ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_linearreg_intercept
trader_linearreg
Trader 函数


Linear Regression

trader_linearreg_slope
trader_ln
Trader 函数
PHP Manual

trader_linearreg

(PECL trader >= 0.2.0)

trader_linearreg — Linear Regression

说明

array trader_linearreg ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_linearreg_slope
trader_ln
Trader 函数


Vector Log Natural

trader_linearreg
trader_log10
Trader 函数
PHP Manual

trader_ln

(PECL trader >= 0.2.0)

trader_ln — Vector Log Natural

说明

array trader_ln ( array $real )

Calculates the natural logarithm for each value in real and returns the resulting array.

参数

real

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_linearreg
trader_log10
Trader 函数


Vector Log10

trader_ln
trader_ma
Trader 函数
PHP Manual

trader_log10

(PECL trader >= 0.2.0)

trader_log10 — Vector Log10

说明

array trader_log10 ( array $real )

Calculates the base-10 logarithm for each value in real and returns the resulting array.

参数

real

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_ln
trader_ma
Trader 函数


Moving average

trader_log10
trader_macd
Trader 函数
PHP Manual

trader_ma

(PECL trader >= 0.2.0)

trader_ma — Moving average

说明

array trader_ma ( array $real [, integer $timePeriod [, integer $mAType ]] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

mAType

Type of Moving Average. TRADER_MA_TYPE_* series of constants should be used.

返回值

Returns an array with calculated data or false on failure.

trader_log10
trader_macd
Trader 函数


Moving Average Convergence/Divergence

trader_ma
trader_macdext
Trader 函数
PHP Manual

trader_macd

(PECL trader >= 0.2.0)

trader_macd — Moving Average Convergence/Divergence

说明

array trader_macd ( array $real [, integer $fastPeriod [, integer $slowPeriod [, integer $signalPeriod ]]] )

参数

real

浮点数数组。

fastPeriod

Number of period for the fast MA. Valid range from 2 to 100000.

slowPeriod

Number of period for the slow MA. Valid range from 2 to 100000.

signalPeriod

Smoothing for the signal line (nb of period). Valid range from 1 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_ma
trader_macdext
Trader 函数


MACD with controllable MA type

trader_macd
trader_macdfix
Trader 函数
PHP Manual

trader_macdext

(PECL trader >= 0.2.0)

trader_macdext — MACD with controllable MA type

说明

array trader_macdext ( array $real [, integer $fastPeriod [, integer $fastMAType [, integer $slowPeriod [, integer $slowMAType [, integer $signalPeriod [, integer $signalMAType ]]]]]] )

参数

real

浮点数数组。

fastPeriod

Number of period for the fast MA. Valid range from 2 to 100000.

fastMAType

Type of Moving Average for fast MA. TRADER_MA_TYPE_* series of constants should be used.

slowPeriod

Number of period for the slow MA. Valid range from 2 to 100000.

slowMAType

Type of Moving Average for slow MA. TRADER_MA_TYPE_* series of constants should be used.

signalPeriod

Smoothing for the signal line (nb of period). Valid range from 1 to 100000.

signalMAType

Type of Moving Average for signal line. TRADER_MA_TYPE_* series of constants should be used.

返回值

Returns an array with calculated data or false on failure.

trader_macd
trader_macdfix
Trader 函数


Moving Average Convergence/Divergence Fix 12/26

trader_macdext
trader_mama
Trader 函数
PHP Manual

trader_macdfix

(PECL trader >= 0.2.0)

trader_macdfix — Moving Average Convergence/Divergence Fix 12/26

说明

array trader_macdfix ( array $real [, integer $signalPeriod ] )

参数

real

浮点数数组。

signalPeriod

Smoothing for the signal line (nb of period). Valid range from 1 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_macdext
trader_mama
Trader 函数


MESA Adaptive Moving Average

trader_macdfix
trader_mavp
Trader 函数
PHP Manual

trader_mama

(PECL trader >= 0.2.0)

trader_mama — MESA Adaptive Moving Average

说明

array trader_mama ( array $real [, float $fastLimit [, float $slowLimit ]] )

参数

real

浮点数数组。

fastLimit

Upper limit use in the adaptive algorithm. Valid range from 0.01 to 0.99.

slowLimit

Lower limit use in the adaptive algorithm. Valid range from 0.01 to 0.99.

返回值

Returns an array with calculated data or false on failure.

trader_macdfix
trader_mavp
Trader 函数


Moving average with variable period

trader_mama
trader_max
Trader 函数
PHP Manual

trader_mavp

(PECL trader >= 0.2.0)

trader_mavp — Moving average with variable period

说明

array trader_mavp ( array $real , array $periods [, integer $minPeriod [, integer $maxPeriod [, integer $mAType ]]] )

参数

real

浮点数数组。

periods

浮点数数组。

minPeriod

Value less than minimum will be changed to Minimum period. Valid range from 2 to 100000

maxPeriod

Value higher than minimum will be changed to Maximum period. Valid range from 2 to 100000

mAType

Type of Moving Average. TRADER_MA_TYPE_* series of constants should be used.

返回值

Returns an array with calculated data or false on failure.

trader_mama
trader_max
Trader 函数


Highest value over a specified period

trader_mavp
trader_maxindex
Trader 函数
PHP Manual

trader_max

(PECL trader >= 0.2.0)

trader_max — Highest value over a specified period

说明

array trader_max ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_mavp
trader_maxindex
Trader 函数


Index of highest value over a specified period

trader_max
trader_medprice
Trader 函数
PHP Manual

trader_maxindex

(PECL trader >= 0.2.0)

trader_maxindex — Index of highest value over a specified period

说明

array trader_maxindex ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_max
trader_medprice
Trader 函数


Median Price

trader_maxindex
trader_mfi
Trader 函数
PHP Manual

trader_medprice

(PECL trader >= 0.2.0)

trader_medprice — Median Price

说明

array trader_medprice ( array $high , array $low )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_maxindex
trader_mfi
Trader 函数


Money Flow Index

trader_medprice
trader_midpoint
Trader 函数
PHP Manual

trader_mfi

(PECL trader >= 0.2.0)

trader_mfi — Money Flow Index

说明

array trader_mfi ( array $high , array $low , array $close , array $volume [, integer $timePeriod ] )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

volume

成交量，浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_medprice
trader_midpoint
Trader 函数


MidPoint over period

trader_mfi
trader_midprice
Trader 函数
PHP Manual

trader_midpoint

(PECL trader >= 0.2.0)

trader_midpoint — MidPoint over period

说明

array trader_midpoint ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_mfi
trader_midprice
Trader 函数


Midpoint Price over period

trader_midpoint
trader_min
Trader 函数
PHP Manual

trader_midprice

(PECL trader >= 0.2.0)

trader_midprice — Midpoint Price over period

说明

array trader_midprice ( array $high , array $low [, integer $timePeriod ] )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_midpoint
trader_min
Trader 函数


Lowest value over a specified period

trader_midprice
trader_minindex
Trader 函数
PHP Manual

trader_min

(PECL trader >= 0.2.0)

trader_min — Lowest value over a specified period

说明

array trader_min ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_midprice
trader_minindex
Trader 函数


Index of lowest value over a specified period

trader_min
trader_minmax
Trader 函数
PHP Manual

trader_minindex

(PECL trader >= 0.2.0)

trader_minindex — Index of lowest value over a specified period

说明

array trader_minindex ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_min
trader_minmax
Trader 函数


Lowest and highest values over a specified period

trader_minindex
trader_minmaxindex
Trader 函数
PHP Manual

trader_minmax

(PECL trader >= 0.2.0)

trader_minmax — Lowest and highest values over a specified period

说明

array trader_minmax ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_minindex
trader_minmaxindex
Trader 函数


Indexes of lowest and highest values over a specified period

trader_minmax
trader_minus_di
Trader 函数
PHP Manual

trader_minmaxindex

(PECL trader >= 0.2.0)

trader_minmaxindex — Indexes of lowest and highest values over a specified period

说明

array trader_minmaxindex ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_minmax
trader_minus_di
Trader 函数


Minus Directional Indicator

trader_minmaxindex
trader_minus_dm
Trader 函数
PHP Manual

trader_minus_di

(PECL trader >= 0.2.0)

trader_minus_di — Minus Directional Indicator

说明

array trader_minus_di ( array $high , array $low , array $close [, integer $timePeriod ] )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_minmaxindex
trader_minus_dm
Trader 函数


Minus Directional Movement

trader_minus_di
trader_mom
Trader 函数
PHP Manual

trader_minus_dm

(PECL trader >= 0.2.0)

trader_minus_dm — Minus Directional Movement

说明

array trader_minus_dm ( array $high , array $low [, integer $timePeriod ] )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_minus_di
trader_mom
Trader 函数


Momentum

trader_minus_dm
trader_mult
Trader 函数
PHP Manual

trader_mom

(PECL trader >= 0.2.0)

trader_mom — Momentum

说明

array trader_mom ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_minus_dm
trader_mult
Trader 函数


Vector Arithmetic Mult

trader_mom
trader_natr
Trader 函数
PHP Manual

trader_mult

(PECL trader >= 0.2.0)

trader_mult — Vector Arithmetic Mult

说明

array trader_mult ( array $real0 , array $real1 )

Calculates the vector dot product of real0 with real1 and returns the resulting vector.

参数

real0

浮点数数组。

real1

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_mom
trader_natr
Trader 函数


Normalized Average True Range

trader_mult
trader_obv
Trader 函数
PHP Manual

trader_natr

(PECL trader >= 0.2.0)

trader_natr — Normalized Average True Range

说明

array trader_natr ( array $high , array $low , array $close [, integer $timePeriod ] )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_mult
trader_obv
Trader 函数


On Balance Volume

trader_natr
trader_plus_di
Trader 函数
PHP Manual

trader_obv

(PECL trader >= 0.2.0)

trader_obv — On Balance Volume

说明

array trader_obv ( array $real , array $volume )

参数

real

浮点数数组。

volume

成交量，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_natr
trader_plus_di
Trader 函数


Plus Directional Indicator

trader_obv
trader_plus_dm
Trader 函数
PHP Manual

trader_plus_di

(PECL trader >= 0.2.0)

trader_plus_di — Plus Directional Indicator

说明

array trader_plus_di ( array $high , array $low , array $close [, integer $timePeriod ] )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_obv
trader_plus_dm
Trader 函数


Plus Directional Movement

trader_plus_di
trader_ppo
Trader 函数
PHP Manual

trader_plus_dm

(PECL trader >= 0.2.0)

trader_plus_dm — Plus Directional Movement

说明

array trader_plus_dm ( array $high , array $low [, integer $timePeriod ] )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_plus_di
trader_ppo
Trader 函数


Percentage Price Oscillator

trader_plus_dm
trader_roc
Trader 函数
PHP Manual

trader_ppo

(PECL trader >= 0.2.0)

trader_ppo — Percentage Price Oscillator

说明

array trader_ppo ( array $real [, integer $fastPeriod [, integer $slowPeriod [, integer $mAType ]]] )

参数

real

浮点数数组。

fastPeriod

Number of period for the fast MA. Valid range from 2 to 100000.

slowPeriod

Number of period for the slow MA. Valid range from 2 to 100000.

mAType

Type of Moving Average. TRADER_MA_TYPE_* series of constants should be used.

返回值

Returns an array with calculated data or false on failure.

trader_plus_dm
trader_roc
Trader 函数


Rate of change : ((price/prevPrice)-1)*100

trader_ppo
trader_rocp
Trader 函数
PHP Manual

trader_roc

(PECL trader >= 0.2.0)

trader_roc — Rate of change : ((price/prevPrice)-1)*100

说明

array trader_roc ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_ppo
trader_rocp
Trader 函数


Rate of change Percentage: (price-prevPrice)/prevPrice

trader_roc
trader_rocr100
Trader 函数
PHP Manual

trader_rocp

(PECL trader >= 0.2.0)

trader_rocp — Rate of change Percentage: (price-prevPrice)/prevPrice

说明

array trader_rocp ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_roc
trader_rocr100
Trader 函数


Rate of change ratio 100 scale: (price/prevPrice)*100

trader_rocp
trader_rocr
Trader 函数
PHP Manual

trader_rocr100

(PECL trader >= 0.2.0)

trader_rocr100 — Rate of change ratio 100 scale: (price/prevPrice)*100

说明

array trader_rocr100 ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_rocp
trader_rocr
Trader 函数


Rate of change ratio: (price/prevPrice)

trader_rocr100
trader_rsi
Trader 函数
PHP Manual

trader_rocr

(PECL trader >= 0.2.0)

trader_rocr — Rate of change ratio: (price/prevPrice)

说明

array trader_rocr ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_rocr100
trader_rsi
Trader 函数


Relative Strength Index

trader_rocr
trader_sar
Trader 函数
PHP Manual

trader_rsi

(PECL trader >= 0.2.0)

trader_rsi — Relative Strength Index

说明

array trader_rsi ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_rocr
trader_sar
Trader 函数


Parabolic SAR

trader_rsi
trader_sarext
Trader 函数
PHP Manual

trader_sar

(PECL trader >= 0.2.0)

trader_sar — Parabolic SAR

说明

array trader_sar ( array $high , array $low [, float $acceleration [, float $maximum ]] )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

acceleration

Acceleration Factor used up to the Maximum value. Valid range from 0 to TRADER_REAL_MAX.

maximum

Acceleration Factor Maximum value. Valid range from 0 to TRADER_REAL_MAX.

返回值

Returns an array with calculated data or false on failure.

trader_rsi
trader_sarext
Trader 函数


Parabolic SAR - Extended

trader_sar
trader_set_compat
Trader 函数
PHP Manual

trader_sarext

(PECL trader >= 0.2.0)

trader_sarext — Parabolic SAR - Extended

说明

array trader_sarext ( array $high , array $low [, float $startValue [, float $offsetOnReverse [, float $accelerationInitLong [, float $accelerationLong [, float $accelerationMaxLong [, float $accelerationInitShort [, float $accelerationShort [, float $accelerationMaxShort ]]]]]]]] )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

startValue

Start value and direction. 0 for Auto, >0 for Long, <0 for Short. Valid range from TRADER_REAL_MIN to TRADER_REAL_MAX.

offsetOnReverse

Percent offset added/removed to initial stop on short/long reversal. Valid range from 0 to TRADER_REAL_MAX.

accelerationInitLong

Acceleration Factor initial value for the Long direction. Valid range from 0 to TRADER_REAL_MAX.

accelerationLong

Acceleration Factor for the Long direction. Valid range from 0 to TRADER_REAL_MAX.

accelerationMaxLong

Acceleration Factor maximum value for the Long direction. Valid range from 0 to TRADER_REAL_MAX.

accelerationInitShort

Acceleration Factor initial value for the Short direction. Valid range from 0 to TRADER_REAL_MAX.

accelerationShort

Acceleration Factor for the Short direction. Valid range from 0 to TRADER_REAL_MAX.

accelerationMaxShort

Acceleration Factor maximum value for the Short direction. Valid range from 0 to TRADER_REAL_MAX.

返回值

Returns an array with calculated data or false on failure.

trader_sar
trader_set_compat
Trader 函数


Set compatibility mode

trader_sarext
trader_set_unstable_period
Trader 函数
PHP Manual

trader_set_compat

(PECL trader >= 0.2.2)

trader_set_compat — Set compatibility mode

说明

void trader_set_compat ( integer $compatId )

Set compatibility mode which will affect the way calculations are done by all the extension functions.

参数

compatId

Compatibility Id. TRADER_COMPATIBILITY_* series of constants should be used.

返回值

没有返回值。

trader_sarext
trader_set_unstable_period
Trader 函数


Set unstable period

trader_set_compat
trader_sin
Trader 函数
PHP Manual

trader_set_unstable_period

(PECL trader >= 0.2.2)

trader_set_unstable_period — Set unstable period

说明

void trader_set_unstable_period ( integer $functionId , integer $timePeriod )

Influences unstable period factor for functions, which are sensible to it. More information about unstable periods can be found on the » TA-Lib API documentation page.

参数

functionId

Function ID the factor should be set for. TRADER_FUNC_UNST_* constant series can be used to affect the corresponding function.

timePeriod

Unstable period value.

返回值

没有返回值。

trader_set_compat
trader_sin
Trader 函数


Vector Trigonometric Sin

trader_set_unstable_period
trader_sinh
Trader 函数
PHP Manual

trader_sin

(PECL trader >= 0.2.0)

trader_sin — Vector Trigonometric Sin

说明

array trader_sin ( array $real )

Calculates the sine for each value in real and returns the resulting array.

参数

real

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_set_unstable_period
trader_sinh
Trader 函数


Vector Trigonometric Sinh

trader_sin
trader_sma
Trader 函数
PHP Manual

trader_sinh

(PECL trader >= 0.2.0)

trader_sinh — Vector Trigonometric Sinh

说明

array trader_sinh ( array $real )

Calculates the hyperbolic sine for each value in real and returns the resulting array.

参数

real

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_sin
trader_sma
Trader 函数


Simple Moving Average

trader_sinh
trader_sqrt
Trader 函数
PHP Manual

trader_sma

(PECL trader >= 0.2.0)

trader_sma — Simple Moving Average

说明

array trader_sma ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_sinh
trader_sqrt
Trader 函数


Vector Square Root

trader_sma
trader_stddev
Trader 函数
PHP Manual

trader_sqrt

(PECL trader >= 0.2.0)

trader_sqrt — Vector Square Root

说明

array trader_sqrt ( array $real )

Calculates the square root of each value in real and returns the resulting array.

参数

real

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_sma
trader_stddev
Trader 函数


Standard Deviation

trader_sqrt
trader_stoch
Trader 函数
PHP Manual

trader_stddev

(PECL trader >= 0.2.0)

trader_stddev — Standard Deviation

说明

array trader_stddev ( array $real [, integer $timePeriod [, float $nbDev ]] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

nbDev

返回值

Returns an array with calculated data or false on failure.

trader_sqrt
trader_stoch
Trader 函数


Stochastic

trader_stddev
trader_stochf
Trader 函数
PHP Manual

trader_stoch

(PECL trader >= 0.2.0)

trader_stoch — Stochastic

说明

array trader_stoch ( array $high , array $low , array $close [, integer $fastK_Period [, integer $slowK_Period [, integer $slowK_MAType [, integer $slowD_Period [, integer $slowD_MAType ]]]]] )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

fastK_Period

Time period for building the Fast-K line. Valid range from 1 to 100000.

slowK_Period

Smoothing for making the Slow-K line. Valid range from 1 to 100000, usually set to 3.

slowK_MAType

Type of Moving Average for Slow-K. TRADER_MA_TYPE_* series of constants should be used.

slowD_Period

Smoothing for making the Slow-D line. Valid range from 1 to 100000.

slowD_MAType

Type of Moving Average for Slow-D. TRADER_MA_TYPE_* series of constants should be used.

返回值

Returns an array with calculated data or false on failure.

trader_stddev
trader_stochf
Trader 函数


Stochastic Fast

trader_stoch
trader_stochrsi
Trader 函数
PHP Manual

trader_stochf

(PECL trader >= 0.2.0)

trader_stochf — Stochastic Fast

说明

array trader_stochf ( array $high , array $low , array $close [, integer $fastK_Period [, integer $fastD_Period [, integer $fastD_MAType ]]] )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

fastK_Period

Time period for building the Fast-K line. Valid range from 1 to 100000.

fastD_Period

Smoothing for making the Fast-D line. Valid range from 1 to 100000, usually set to 3.

fastD_MAType

Type of Moving Average for Fast-D. TRADER_MA_TYPE_* series of constants should be used.

返回值

Returns an array with calculated data or false on failure.

trader_stoch
trader_stochrsi
Trader 函数


Stochastic Relative Strength Index

trader_stochf
trader_sub
Trader 函数
PHP Manual

trader_stochrsi

(PECL trader >= 0.2.0)

trader_stochrsi — Stochastic Relative Strength Index

说明

array trader_stochrsi ( array $real [, integer $timePeriod [, integer $fastK_Period [, integer $fastD_Period [, integer $fastD_MAType ]]]] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

fastK_Period

Time period for building the Fast-K line. Valid range from 1 to 100000.

fastD_Period

Smoothing for making the Fast-D line. Valid range from 1 to 100000, usually set to 3.

fastD_MAType

Type of Moving Average for Fast-D. TRADER_MA_TYPE_* series of constants should be used.

返回值

Returns an array with calculated data or false on failure.

trader_stochf
trader_sub
Trader 函数


Vector Arithmetic Subtraction

trader_stochrsi
trader_sum
Trader 函数
PHP Manual

trader_sub

(PECL trader >= 0.2.0)

trader_sub — Vector Arithmetic Subtraction

说明

array trader_sub ( array $real0 , array $real1 )

Calculates the vector subtraction of real1 from real0 and returns the resulting vector.

参数

real0

浮点数数组。

real1

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_stochrsi
trader_sum
Trader 函数


Summation

trader_sub
trader_t3
Trader 函数
PHP Manual

trader_sum

(PECL trader >= 0.2.0)

trader_sum — Summation

说明

array trader_sum ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_sub
trader_t3
Trader 函数


Triple Exponential Moving Average (T3)

trader_sum
trader_tan
Trader 函数
PHP Manual

trader_t3

(PECL trader >= 0.2.0)

trader_t3 — Triple Exponential Moving Average (T3)

说明

array trader_t3 ( array $real [, integer $timePeriod [, float $vFactor ]] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

vFactor

成交量因子。有效值从 0 到 1。

返回值

Returns an array with calculated data or false on failure.

trader_sum
trader_tan
Trader 函数


Vector Trigonometric Tan

trader_t3
trader_tanh
Trader 函数
PHP Manual

trader_tan

(PECL trader >= 0.2.0)

trader_tan — Vector Trigonometric Tan

说明

array trader_tan ( array $real )

Calculates the tangent for each value in real and returns the resulting array.

参数

real

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_t3
trader_tanh
Trader 函数


Vector Trigonometric Tanh

trader_tan
trader_tema
Trader 函数
PHP Manual

trader_tanh

(PECL trader >= 0.2.0)

trader_tanh — Vector Trigonometric Tanh

说明

array trader_tanh ( array $real )

Calculates the hyperbolic tangent for each value in real and returns the resulting array.

参数

real

浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_tan
trader_tema
Trader 函数


Triple Exponential Moving Average

trader_tanh
trader_trange
Trader 函数
PHP Manual

trader_tema

(PECL trader >= 0.2.0)

trader_tema — Triple Exponential Moving Average

说明

array trader_tema ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_tanh
trader_trange
Trader 函数


True Range

trader_tema
trader_trima
Trader 函数
PHP Manual

trader_trange

(PECL trader >= 0.2.0)

trader_trange — True Range

说明

array trader_trange ( array $high , array $low , array $close )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_tema
trader_trima
Trader 函数


Triangular Moving Average

trader_trange
trader_trix
Trader 函数
PHP Manual

trader_trima

(PECL trader >= 0.2.0)

trader_trima — Triangular Moving Average

说明

array trader_trima ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_trange
trader_trix
Trader 函数


1-day Rate-Of-Change (ROC) of a Triple Smooth EMA

trader_trima
trader_tsf
Trader 函数
PHP Manual

trader_trix

(PECL trader >= 0.2.0)

trader_trix — 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA

说明

array trader_trix ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_trima
trader_tsf
Trader 函数


Time Series Forecast

trader_trix
trader_typprice
Trader 函数
PHP Manual

trader_tsf

(PECL trader >= 0.2.0)

trader_tsf — Time Series Forecast

说明

array trader_tsf ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_trix
trader_typprice
Trader 函数


Typical Price

trader_tsf
trader_ultosc
Trader 函数
PHP Manual

trader_typprice

(PECL trader >= 0.2.0)

trader_typprice — Typical Price

说明

array trader_typprice ( array $high , array $low , array $close )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_tsf
trader_ultosc
Trader 函数


Ultimate Oscillator

trader_typprice
trader_var
Trader 函数
PHP Manual

trader_ultosc

(PECL trader >= 0.2.0)

trader_ultosc — Ultimate Oscillator

说明

array trader_ultosc ( array $high , array $low , array $close [, integer $timePeriod1 [, integer $timePeriod2 [, integer $timePeriod3 ]]] )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

timePeriod1

Number of bars for 1st period. Valid range from 1 to 100000.

timePeriod2

Number of bars for 2nd period. Valid range from 1 to 100000.

timePeriod3

Number of bars for 3rd period. Valid range from 1 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_typprice
trader_var
Trader 函数


Variance

trader_ultosc
trader_wclprice
Trader 函数
PHP Manual

trader_var

(PECL trader >= 0.2.0)

trader_var — Variance

说明

array trader_var ( array $real [, integer $timePeriod [, float $nbDev ]] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

nbDev

返回值

Returns an array with calculated data or false on failure.

trader_ultosc
trader_wclprice
Trader 函数


Weighted Close Price

trader_var
trader_willr
Trader 函数
PHP Manual

trader_wclprice

(PECL trader >= 0.2.0)

trader_wclprice — Weighted Close Price

说明

array trader_wclprice ( array $high , array $low , array $close )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

返回值

Returns an array with calculated data or false on failure.

trader_var
trader_willr
Trader 函数


Williams' %R

trader_wclprice
trader_wma
Trader 函数
PHP Manual

trader_willr

(PECL trader >= 0.2.0)

trader_willr — Williams' %R

说明

array trader_willr ( array $high , array $low , array $close [, integer $timePeriod ] )

参数

high

高价，浮点数数组。

low

低价，浮点数数组。

close

收盘价，浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_wclprice
trader_wma
Trader 函数


Weighted Moving Average

trader_willr
非文本内容的 MIME 输出
Trader 函数
PHP Manual

trader_wma

(PECL trader >= 0.2.0)

trader_wma — Weighted Moving Average

说明

array trader_wma ( array $real [, integer $timePeriod ] )

参数

real

浮点数数组。

timePeriod

Number of period. Valid range from 2 to 100000.

返回值

Returns an array with calculated data or false on failure.

trader_willr
非文本内容的 MIME 输出
Trader 函数


非文本内容的 MIME 输出

  • FDF — Forms Data Format
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • FDF 函数
  • GnuPG — GNU Privacy Guard
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • GnuPG 函数
  • haru — Haru PDF
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Builtin Fonts And Encodings
    • HaruException — The HaruException class
    • HaruDoc — The HaruDoc class
    • HaruPage — The HaruPage class
    • HaruFont — The HaruFont class
    • HaruImage — The HaruImage class
    • HaruEncoder — The HaruEncoder class
    • HaruOutline — The HaruOutline class
    • HaruAnnotation — The HaruAnnotation class
    • HaruDestination — The HaruDestination class
  • Ming — Ming (flash)
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Ming 函数
    • SWFAction — The SWFAction class
    • SWFBitmap — The SWFBitmap class
    • SWFButton — The SWFButton class
    • SWFDisplayItem — The SWFDisplayItem class
    • SWFFill — The SWFFill class
    • SWFFont — The SWFFont class
    • SWFFontChar — The SWFFontChar class
    • SWFGradient — The SWFGradient class
    • SWFMorph — The SWFMorph class
    • SWFMovie — The SWFMovie class
    • SWFPrebuiltClip — The SWFPrebuiltClip class
    • SWFShape — The SWFShape class
    • SWFSound — The SWFSound class
    • SWFSoundInstance — The SWFSoundInstance class
    • SWFSprite — The SWFSprite class
    • SWFText — The SWFText class
    • SWFTextField — The SWFTextField class
    • SWFVideoStream — The SWFVideoStream class
  • PDF
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • PDF 函数
  • PS — PostScript document creation
    • 简介
    • 安装／配置
    • 预定义常量
    • PS 函数
  • RPM Reader — RPM Header Reading
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • RPM Reader 函数
trader_wma
FDF
函数参考


Forms Data Format

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • FDF 函数
    • fdf_add_doc_javascript — Adds javascript code to the FDF document
    • fdf_add_template — Adds a template into the FDF document
    • fdf_close — Close an FDF document
    • fdf_create — Create a new FDF document
    • fdf_enum_values — Call a user defined function for each document value
    • fdf_errno — Return error code for last fdf operation
    • fdf_error — Return error description for FDF error code
    • fdf_get_ap — Get the appearance of a field
    • fdf_get_attachment — Extracts uploaded file embedded in the FDF
    • fdf_get_encoding — Get the value of the /Encoding key
    • fdf_get_file — Get the value of the /F key
    • fdf_get_flags — Gets the flags of a field
    • fdf_get_opt — Gets a value from the opt array of a field
    • fdf_get_status — Get the value of the /STATUS key
    • fdf_get_value — Get the value of a field
    • fdf_get_version — Gets version number for FDF API or file
    • fdf_header — Sets FDF-specific output headers
    • fdf_next_field_name — Get the next field name
    • fdf_open_string — Read a FDF document from a string
    • fdf_open — Open a FDF document
    • fdf_remove_item — Sets target frame for form
    • fdf_save_string — Returns the FDF document as a string
    • fdf_save — Save a FDF document
    • fdf_set_ap — Set the appearance of a field
    • fdf_set_encoding — Sets FDF character encoding
    • fdf_set_file — Set PDF document to display FDF data in
    • fdf_set_flags — Sets a flag of a field
    • fdf_set_javascript_action — Sets an javascript action of a field
    • fdf_set_on_import_javascript — Adds javascript code to be executed when Acrobat opens the FDF
    • fdf_set_opt — Sets an option of a field
    • fdf_set_status — Set the value of the /STATUS key
    • fdf_set_submit_form_action — Sets a submit form action of a field
    • fdf_set_target_frame — Set target frame for form display
    • fdf_set_value — Set the value of a field
    • fdf_set_version — Sets version number for a FDF file
非文本内容的 MIME 输出
简介
非文本内容的 MIME 输出


简介

Forms Data Format (FDF) is a format for handling forms within PDF documents. You should read the documentation at » http://www.adobe.com/devnet/acrobat/fdftoolkit.html for more information on what FDF is and how it is used in general.

The general idea of FDF is similar to HTML forms. The difference is basically the format how data is transmitted to the server when the submit button is pressed (this is actually the Form Data Format) and the format of the form itself (which is the Portable Document Format, PDF). Processing the FDF data is one of the features provided by the fdf functions. But there is more. One may as well take an existing PDF form and populated the input fields with data without modifying the form itself. In such a case one would create a FDF document (fdf_create()) set the values of each input field (fdf_set_value()) and associate it with a PDF form (fdf_set_file()). Finally it has to be sent to the browser with MimeType application/vnd.fdf. The Acrobat reader plugin of your browser recognizes the MimeType, reads the associated PDF form and fills in the data from the FDF document.

If you look at an FDF-document with a text editor you will find a catalogue object with the name FDF. Such an object may contain a number of entries like Fields, F, Status etc.. The most commonly used entries are Fields which points to a list of input fields, and F which contains the filename of the PDF-document this data belongs to. Those entries are referred to in the FDF documentation as /F-Key or /Status-Key. Modifying this entries is done by functions like fdf_set_file() and fdf_set_status(). Fields are modified with fdf_set_value(), fdf_set_opt() etc..

FDF
安装／配置
FDF


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
FDF


需求

You need the FDF toolkit SDK available from » http://www.adobe.com/devnet/acrobat/fdftoolkit.html. As of PHP 4.3.0 you need at least SDK version 5.0. The FDF toolkit library is available in binary form only, platforms supported by Adobe are Win32, Linux, Solaris and AIX.

安装／配置
安装
安装／配置


安装

此扩展被认为已无人维护及已消亡。然而，此扩展的源代码还可在 PECL SVN 找到： » http://svn.php.net/viewvc/pecl/fdf.

This extension is no longer bundled with PHP as of PHP 5.3.0.

Note: If you run into problems configuring PHP with fdftk support, check whether the header file fdftk.h and the library libfdftk.so are at the right place. The configure script supports both the directory structure of the FDF SDK distribution and the usual DIR/include / DIR/lib layout, so you can point it either directly to the unpacked distribution directory or put the header file and the appropriate library for your platform into e.g. /usr/local/include and /usr/local/lib and configure with --with-fdftk=/usr/local .

Note: Note to Win32 Users

为了使此扩展生效， DLL 文件必须能在 Windows 系统的 PATH 指示的路径下找到。如何操作的信息，请参见题为"如何在 Windows 中将 PHP 目录加到 PATH 中"的FAQ。虽然将 DLL 文件从 PHP 文件夹复制到 Windows 系统目录也行，但不建议这样做。 此扩展需要下列文件在 PATH 路径中： fdftk.dll

需求
运行时配置
安装／配置


资源类型

Most fdf functions require a fdf resource as their first parameter. A fdf resource is a handle to an opened fdf file. fdf resources may be obtained using fdf_create(), fdf_open() and fdf_open_string().

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

FDFValue (integer)
FDFStatus (integer)
FDFFile (integer)
FDFID (integer)
FDFFf (integer)
FDFSetFf (integer)
FDFClearFf (integer)
FDFFlags (integer)
FDFSetF (integer)
FDFClrF (integer)
FDFAP (integer)
FDFAS (integer)
FDFAction (integer)
FDFAA (integer)
FDFAPRef (integer)
FDFIF (integer)
FDFEnter (integer)
FDFExit (integer)
FDFDown (integer)
FDFUp (integer)
FDFFormat (integer)
FDFValidate (integer)
FDFKeystroke (integer)
FDFCalculate (integer)
FDFNormalAP (integer)
FDFRolloverAP (integer)
FDFDownAP (integer)
资源类型
范例
FDF


范例

The following examples shows just the evaluation of form data.

Example #1 Evaluating a FDF document

<?php
// Open fdf from input string provided by the extension
// The pdf form contained several input text fields with the names
// volume, date, comment, publisher, preparer, and two checkboxes
// show_publisher and show_preparer.
$fdf = fdf_open_string($HTTP_FDF_DATA);
$volume = fdf_get_value($fdf, "volume");
echo "The volume field has the value '<b>$volume</b>'<br />";

$date = fdf_get_value($fdf, "date");
echo "The date field has the value '<b>$date</b>'<br />";

$comment = fdf_get_value($fdf, "comment");
echo "The comment field has the value '<b>$comment</b>'<br />";

if (fdf_get_value($fdf, "show_publisher") == "On") {
  $publisher = fdf_get_value($fdf, "publisher");
  echo "The publisher field has the value '<b>$publisher</b>'<br />";
} else
  echo "Publisher shall not be shown.<br />";

if (fdf_get_value($fdf, "show_preparer") == "On") {
  $preparer = fdf_get_value($fdf, "preparer");
  echo "The preparer field has the value '<b>$preparer</b>'<br />";
} else
  echo "Preparer shall not be shown.<br />";
fdf_close($fdf);
?>

预定义常量
FDF 函数
FDF


FDF 函数

Table of Contents

  • fdf_add_doc_javascript — Adds javascript code to the FDF document
  • fdf_add_template — Adds a template into the FDF document
  • fdf_close — Close an FDF document
  • fdf_create — Create a new FDF document
  • fdf_enum_values — Call a user defined function for each document value
  • fdf_errno — Return error code for last fdf operation
  • fdf_error — Return error description for FDF error code
  • fdf_get_ap — Get the appearance of a field
  • fdf_get_attachment — Extracts uploaded file embedded in the FDF
  • fdf_get_encoding — Get the value of the /Encoding key
  • fdf_get_file — Get the value of the /F key
  • fdf_get_flags — Gets the flags of a field
  • fdf_get_opt — Gets a value from the opt array of a field
  • fdf_get_status — Get the value of the /STATUS key
  • fdf_get_value — Get the value of a field
  • fdf_get_version — Gets version number for FDF API or file
  • fdf_header — Sets FDF-specific output headers
  • fdf_next_field_name — Get the next field name
  • fdf_open_string — Read a FDF document from a string
  • fdf_open — Open a FDF document
  • fdf_remove_item — Sets target frame for form
  • fdf_save_string — Returns the FDF document as a string
  • fdf_save — Save a FDF document
  • fdf_set_ap — Set the appearance of a field
  • fdf_set_encoding — Sets FDF character encoding
  • fdf_set_file — Set PDF document to display FDF data in
  • fdf_set_flags — Sets a flag of a field
  • fdf_set_javascript_action — Sets an javascript action of a field
  • fdf_set_on_import_javascript — Adds javascript code to be executed when Acrobat opens the FDF
  • fdf_set_opt — Sets an option of a field
  • fdf_set_status — Set the value of the /STATUS key
  • fdf_set_submit_form_action — Sets a submit form action of a field
  • fdf_set_target_frame — Set target frame for form display
  • fdf_set_value — Set the value of a field
  • fdf_set_version — Sets version number for a FDF file
范例
fdf_add_doc_javascript
FDF


Adds javascript code to the FDF document

FDF 函数
fdf_add_template
FDF 函数
PHP Manual

fdf_add_doc_javascript

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

fdf_add_doc_javascript — Adds javascript code to the FDF document

说明

bool fdf_add_doc_javascript ( resource $fdf_document , string $script_name , string $script_code )

Adds a script to the FDF, which Acrobat then adds to the doc-level scripts of a document, once the FDF is imported into it.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

script_name

The script name.

script_code

The script code. It is strongly suggested to use \r for linebreaks within the script code.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Adding JavaScript code to a FDF

<?php
$fdf = fdf_create();
fdf_add_doc_javascript($fdf, "PlusOne", "function PlusOne(x)\r{\r  return x+1;\r}\r");
fdf_save($fdf);
?>

will create a FDF like this:

%FDF-1.2
%a??ó
1 0 obj
<<
/FDF << /JavaScript << /Doc [ (PlusOne)(function PlusOne\(x\)\r{\r  return x+1;\r}\r)] >> >>
>>
endobj
trailer
<<
/Root 1 0 R

>>
%%EOF

FDF 函数
fdf_add_template
FDF 函数


Adds a template into the FDF document

fdf_add_doc_javascript
fdf_close
FDF 函数
PHP Manual

fdf_add_template

(PHP 4, PHP 5, PHP 7)

fdf_add_template — Adds a template into the FDF document

说明

bool fdf_add_template ( resource $fdf_document , int $newpage , string $filename , string $template , int $rename )
Warning

本函数还未编写文档，仅有参数列表。

fdf_add_doc_javascript
fdf_close
FDF 函数


Close an FDF document

fdf_add_template
fdf_create
FDF 函数
PHP Manual

fdf_close

(PHP 4, PHP 5, PHP 7)

fdf_close — Close an FDF document

说明

void fdf_close ( resource $fdf_document )

Closes the FDF document.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

返回值

没有返回值。

参见

  • fdf_open() - Open a FDF document

fdf_add_template
fdf_create
FDF 函数


Create a new FDF document

fdf_close
fdf_enum_values
FDF 函数
PHP Manual

fdf_create

(PHP 4, PHP 5, PHP 7)

fdf_create — Create a new FDF document

说明

resource fdf_create ( void )

Creates a new FDF document.

This function is needed if one would like to populate input fields in a PDF document with data.

返回值

Returns a FDF document handle, or FALSE on error.

范例

Example #1 Populating a PDF document

<?php
$outfdf = fdf_create();
fdf_set_value($outfdf, "volume", $volume, 0);

fdf_set_file($outfdf, "http:/testfdf/resultlabel.pdf");
fdf_save($outfdf, "outtest.fdf");
fdf_close($outfdf);
Header("Content-type: application/vnd.fdf");
$fp = fopen("outtest.fdf", "r");
fpassthru($fp);
unlink("outtest.fdf");
?>

参见

  • fdf_close() - Close an FDF document
  • fdf_save() - Save a FDF document
  • fdf_open() - Open a FDF document

fdf_close
fdf_enum_values
FDF 函数


Call a user defined function for each document value

fdf_create
fdf_errno
FDF 函数
PHP Manual

fdf_enum_values

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

fdf_enum_values — Call a user defined function for each document value

说明

bool fdf_enum_values ( resource $fdf_document , callable $function [, mixed $userdata ] )
Warning

本函数还未编写文档，仅有参数列表。

fdf_create
fdf_errno
FDF 函数


Return error code for last fdf operation

fdf_enum_values
fdf_error
FDF 函数
PHP Manual

fdf_errno

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

fdf_errno — Return error code for last fdf operation

说明

int fdf_errno ( void )

Gets the error code set by the last FDF function call.

A textual description of the error may be obtained using with fdf_error().

返回值

Returns the error code as an integer, or zero if there was no errors.

参见

  • fdf_error() - Return error description for FDF error code

fdf_enum_values
fdf_error
FDF 函数


Return error description for FDF error code

fdf_errno
fdf_get_ap
FDF 函数
PHP Manual

fdf_error

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

fdf_error — Return error description for FDF error code

说明

string fdf_error ([ int $error_code = -1 ] )

Gets a textual description for the FDF error code given in error_code.

参数

error_code

An error code obtained with fdf_errno(). If not provided, this function uses the internal error code set by the last operation.

返回值

Returns the error message as a string, or the string no error if nothing went wrong.

参见

  • fdf_errno() - Return error code for last fdf operation

fdf_errno
fdf_get_ap
FDF 函数


Get the appearance of a field

fdf_error
fdf_get_attachment
FDF 函数
PHP Manual

fdf_get_ap

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

fdf_get_ap — Get the appearance of a field

说明

bool fdf_get_ap ( resource $fdf_document , string $field , int $face , string $filename )

Gets the appearance of a field (i.e. the value of the /AP key) and stores it in a file.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

field

face

The possible values are FDFNormalAP, FDFRolloverAP and FDFDownAP.

filename

The appearance will be stored in this parameter.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

fdf_error
fdf_get_attachment
FDF 函数


Extracts uploaded file embedded in the FDF

fdf_get_ap
fdf_get_encoding
FDF 函数
PHP Manual

fdf_get_attachment

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

fdf_get_attachment — Extracts uploaded file embedded in the FDF

说明

array fdf_get_attachment ( resource $fdf_document , string $fieldname , string $savepath )

Extracts a file uploaded by means of the "file selection" field fieldname and stores it under savepath.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

fieldname

savepath

May be the name of a plain file or an existing directory in which the file is to be created under its original name. Any existing file under the same name will be overwritten.

Note:

There seems to be no other way to find out the original filename but to store the file using a directory as savepath and check for the basename it was stored under.

返回值

The returned array contains the following fields:

  • path - path were the file got stored
  • size - size of the stored file in bytes
  • type - mimetype if given in the FDF

范例

Example #1 Storing an uploaded file

<?php
  $fdf = fdf_open_string($HTTP_FDF_DATA);
  $data = fdf_get_attachment($fdf, "filename", "/tmpdir");
  echo "The uploaded file is stored in $data[path]";
?>

fdf_get_ap
fdf_get_encoding
FDF 函数


Get the value of the /Encoding key

fdf_get_attachment
fdf_get_file
FDF 函数
PHP Manual

fdf_get_encoding

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

fdf_get_encoding — Get the value of the /Encoding key

说明

string fdf_get_encoding ( resource $fdf_document )

Gets the value of the /Encoding key.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

返回值

Returns the encoding as a string. An empty string is returned if the default PDFDocEncoding/Unicode scheme is used.

参见

  • fdf_set_encoding() - Sets FDF character encoding

fdf_get_attachment
fdf_get_file
FDF 函数


Get the value of the /F key

fdf_get_encoding
fdf_get_flags
FDF 函数
PHP Manual

fdf_get_file

(PHP 4, PHP 5, PHP 7)

fdf_get_file — Get the value of the /F key

说明

string fdf_get_file ( resource $fdf_document )

Gets the value of the /F key.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

返回值

Returns the key value, as a string.

参见

  • fdf_set_file() - Set PDF document to display FDF data in

fdf_get_encoding
fdf_get_flags
FDF 函数


Gets the flags of a field

fdf_get_file
fdf_get_opt
FDF 函数
PHP Manual

fdf_get_flags

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

fdf_get_flags — Gets the flags of a field

说明

int fdf_get_flags ( resource $fdf_document , string $fieldname , int $whichflags )
Warning

本函数还未编写文档，仅有参数列表。

fdf_get_file
fdf_get_opt
FDF 函数


Gets a value from the opt array of a field

fdf_get_flags
fdf_get_status
FDF 函数
PHP Manual

fdf_get_opt

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

fdf_get_opt — Gets a value from the opt array of a field

说明

mixed fdf_get_opt ( resource $fdf_document , string $fieldname [, int $element = -1 ] )
Warning

本函数还未编写文档，仅有参数列表。

fdf_get_flags
fdf_get_status
FDF 函数


Get the value of the /STATUS key

fdf_get_opt
fdf_get_value
FDF 函数
PHP Manual

fdf_get_status

(PHP 4, PHP 5, PHP 7)

fdf_get_status — Get the value of the /STATUS key

说明

string fdf_get_status ( resource $fdf_document )

Gets the value of the /STATUS key.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

返回值

Returns the key value, as a string.

参见

  • fdf_set_status() - Set the value of the /STATUS key

fdf_get_opt
fdf_get_value
FDF 函数


Get the value of a field

fdf_get_status
fdf_get_version
FDF 函数
PHP Manual

fdf_get_value

(PHP 4, PHP 5, PHP 7)

fdf_get_value — Get the value of a field

说明

mixed fdf_get_value ( resource $fdf_document , string $fieldname [, int $which = -1 ] )

Gets the value for the requested field.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

fieldname

Name of the FDF field, as a string.

which

Elements of an array field can be retrieved by passing this optional parameter, starting at zero. For non-array fields, this parameter will be ignored.

返回值

Returns the field value.

更新日志

版本 | 说明
4.3.0 | Support for arrays and the which parameter were added.

参见

  • fdf_set_value() - Set the value of a field

fdf_get_status
fdf_get_version
FDF 函数


Gets version number for FDF API or file

fdf_get_value
fdf_header
FDF 函数
PHP Manual

fdf_get_version

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

fdf_get_version — Gets version number for FDF API or file

说明

string fdf_get_version ([ resource $fdf_document ] )

Return the FDF version for the given document, or the toolkit API version number if no parameter is given.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

返回值

Returns the version as a string. For the current FDF toolkit 5.0 the API version number is 5.0 and the document version number is either 1.2, 1.3 or 1.4.

参见

  • fdf_set_version() - Sets version number for a FDF file

fdf_get_value
fdf_header
FDF 函数


Sets FDF-specific output headers

fdf_get_version
fdf_next_field_name
FDF 函数
PHP Manual

fdf_header

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

fdf_header — Sets FDF-specific output headers

说明

void fdf_header ( void )

This is a convenience function to set appropriate HTTP headers for FDF output. It sets the Content-type: to application/vnd.fdf.

返回值

没有返回值。

fdf_get_version
fdf_next_field_name
FDF 函数


Get the next field name

fdf_header
fdf_open_string
FDF 函数
PHP Manual

fdf_next_field_name

(PHP 4, PHP 5, PHP 7)

fdf_next_field_name — Get the next field name

说明

string fdf_next_field_name ( resource $fdf_document [, string $fieldname ] )

Gets the name of the field after the given field. This name can be used with several functions.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

fieldname

Name of the FDF field, as a string. If not given, the first field will be assumed.

返回值

Returns the field name as a string.

范例

Example #1 Detecting all fieldnames in a FDF

<?php
$fdf = fdf_open($HTTP_FDF_DATA);
for ($field = fdf_next_field_name($fdf);
    $field != "";
    $field = fdf_next_field_name($fdf, $field)) {
    echo "field: $field\n";
}
?>

参见

  • fdf_get_value() - Get the value of a field

fdf_header
fdf_open_string
FDF 函数


Read a FDF document from a string

fdf_next_field_name
fdf_open
FDF 函数
PHP Manual

fdf_open_string

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

fdf_open_string — Read a FDF document from a string

说明

resource fdf_open_string ( string $fdf_data )

Reads form data from a string.

You can use fdf_open_string() together with $HTTP_FDF_DATA to process FDF form input from a remote client.

参数

fdf_data

The data as returned from a PDF form or created using fdf_create() and fdf_save_string().

返回值

Returns a FDF document handle, or FALSE on error.

范例

Example #1 Accessing the form data

<?php
$fdf = fdf_open_string($HTTP_FDF_DATA);
/* ... */
fdf_close($fdf);
?>

参见

  • fdf_open() - Open a FDF document
  • fdf_close() - Close an FDF document
  • fdf_create() - Create a new FDF document
  • fdf_save_string() - Returns the FDF document as a string

fdf_next_field_name
fdf_open
FDF 函数


Open a FDF document

fdf_open_string
fdf_remove_item
FDF 函数
PHP Manual

fdf_open

(PHP 4, PHP 5, PHP 7)

fdf_open — Open a FDF document

说明

resource fdf_open ( string $filename )

Opens a file with form data.

You can also use fdf_open_string() to process the results of a PDF form POST request.

参数

filename

Path to the FDF file. This file must contain the data as returned from a PDF form or created using fdf_create() and fdf_save().

返回值

Returns a FDF document handle, or FALSE on error.

范例

Example #1 Accessing the form data

<?php
// Save the FDF data into a temp file
$fdffp = fopen("test.fdf", "w");
fwrite($fdffp, $HTTP_FDF_DATA, strlen($HTTP_FDF_DATA));
fclose($fdffp);

// Open temp file and evaluate data
$fdf = fdf_open("test.fdf");
/* ... */
fdf_close($fdf);
?>

参见

  • fdf_open_string() - Read a FDF document from a string
  • fdf_close() - Close an FDF document
  • fdf_create() - Create a new FDF document
  • fdf_save() - Save a FDF document

fdf_open_string
fdf_remove_item
FDF 函数


Sets target frame for form

fdf_open
fdf_save_string
FDF 函数
PHP Manual

fdf_remove_item

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

fdf_remove_item — Sets target frame for form

说明

bool fdf_remove_item ( resource $fdf_document , string $fieldname , int $item )
Warning

本函数还未编写文档，仅有参数列表。

fdf_open
fdf_save_string
FDF 函数


Returns the FDF document as a string

fdf_remove_item
fdf_save
FDF 函数
PHP Manual

fdf_save_string

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

fdf_save_string — Returns the FDF document as a string

说明

string fdf_save_string ( resource $fdf_document )

Returns the FDF document as a string.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

返回值

Returns the document as a string, or FALSE on error.

范例

Example #1 Retrieving FDF as a string

<?php
$fdf = fdf_create();
fdf_set_value($fdf, "foo", "bar");
$str = fdf_save_string($fdf);
fdf_close($fdf);
echo $str;
?>

以上例程会输出：

%FDF-1.2
%a??ó
1 0 obj
<<
/FDF << /Fields 2 0 R >>
>>
endobj
2 0 obj
[
<< /T (foo)/V (bar)>>
]
endobj
trailer
<<
/Root 1 0 R

>>
%%EOF

参见

  • fdf_open_string() - Read a FDF document from a string
  • fdf_close() - Close an FDF document
  • fdf_create() - Create a new FDF document
  • fdf_save() - Save a FDF document

fdf_remove_item
fdf_save
FDF 函数


Save a FDF document

fdf_save_string
fdf_set_ap
FDF 函数
PHP Manual

fdf_save

(PHP 4, PHP 5, PHP 7)

fdf_save — Save a FDF document

说明

bool fdf_save ( resource $fdf_document [, string $filename ] )

Saves a FDF document.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

filename

If provided, the resulting FDF will be written in this parameter. Otherwise, this function will write the FDF to the default PHP output stream.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • fdf_close() - Close an FDF document
  • fdf_create() - Create a new FDF document
  • fdf_save_string() - Returns the FDF document as a string

fdf_save_string
fdf_set_ap
FDF 函数


Set the appearance of a field

fdf_save
fdf_set_encoding
FDF 函数
PHP Manual

fdf_set_ap

(PHP 4, PHP 5, PHP 7)

fdf_set_ap — Set the appearance of a field

说明

bool fdf_set_ap ( resource $fdf_document , string $field_name , int $face , string $filename , int $page_number )

Sets the appearance of a field (i.e. the value of the /AP key).

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

field_name

face

The possible values FDFNormalAP, FDFRolloverAP and FDFDownAP.

filename

page_number

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

fdf_save
fdf_set_encoding
FDF 函数


Sets FDF character encoding

fdf_set_ap
fdf_set_file
FDF 函数
PHP Manual

fdf_set_encoding

(PHP 4 >= 4.0.7, PHP 5, PHP 7)

fdf_set_encoding — Sets FDF character encoding

说明

bool fdf_set_encoding ( resource $fdf_document , string $encoding )

Sets the character encoding for the FDF document.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

encoding

The encoding name. The following values are supported: "Shift-JIS", "UHC", "GBK" and "BigFive".

An empty string resets the encoding to the default PDFDocEncoding/Unicode scheme.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

fdf_set_ap
fdf_set_file
FDF 函数


Set PDF document to display FDF data in

fdf_set_encoding
fdf_set_flags
FDF 函数
PHP Manual

fdf_set_file

(PHP 4, PHP 5, PHP 7)

fdf_set_file — Set PDF document to display FDF data in

说明

bool fdf_set_file ( resource $fdf_document , string $url [, string $target_frame ] )

Selects a different PDF document to display the form results in then the form it originated from.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

url

Should be given as an absolute URL.

target_frame

Use this parameter to specify the frame in which the document will be displayed. You can also set the default value for this parameter using fdf_set_target_frame().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Passing FDF data to a second form

<?php
  /* set content type for Adobe FDF */
  fdf_header();

  /* start new fdf */
  $fdf = fdf_create();

  /* set field "foo" to value "bar" */
  fdf_set_value($fdf, "foo", "bar");

  /* tell client to display FDF data using "fdf_form.pdf" */
  fdf_set_file($fdf, "http://www.example.com/fdf_form.pdf");

  /* output fdf */
  fdf_save($fdf);

  /* clean up */
  fdf_close($fdf);
?>

参见

  • fdf_get_file() - Get the value of the /F key
  • fdf_set_target_frame() - Set target frame for form display

fdf_set_encoding
fdf_set_flags
FDF 函数


Sets a flag of a field

fdf_set_file
fdf_set_javascript_action
FDF 函数
PHP Manual

fdf_set_flags

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

fdf_set_flags — Sets a flag of a field

说明

bool fdf_set_flags ( resource $fdf_document , string $fieldname , int $whichFlags , int $newFlags )

Sets certain flags of the given field.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

fieldname

Name of the FDF field, as a string.

whichFlags

newFlags

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • fdf_set_opt() - Sets an option of a field

fdf_set_file
fdf_set_javascript_action
FDF 函数


Sets an javascript action of a field

fdf_set_flags
fdf_set_on_import_javascript
FDF 函数
PHP Manual

fdf_set_javascript_action

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

fdf_set_javascript_action — Sets an javascript action of a field

说明

bool fdf_set_javascript_action ( resource $fdf_document , string $fieldname , int $trigger , string $script )

Sets a javascript action for the given field.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

fieldname

Name of the FDF field, as a string.

trigger

script

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • fdf_set_submit_form_action() - Sets a submit form action of a field

fdf_set_flags
fdf_set_on_import_javascript
FDF 函数


Adds javascript code to be executed when Acrobat opens the FDF

fdf_set_javascript_action
fdf_set_opt
FDF 函数
PHP Manual

fdf_set_on_import_javascript

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

fdf_set_on_import_javascript — Adds javascript code to be executed when Acrobat opens the FDF

说明

bool fdf_set_on_import_javascript ( resource $fdf_document , string $script , bool $before_data_import )
Warning

本函数还未编写文档，仅有参数列表。

参见

  • fdf_add_doc_javascript() - Adds javascript code to the FDF document
  • fdf_set_javascript_action() - Sets an javascript action of a field

fdf_set_javascript_action
fdf_set_opt
FDF 函数


Sets an option of a field

fdf_set_on_import_javascript
fdf_set_status
FDF 函数
PHP Manual

fdf_set_opt

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

fdf_set_opt — Sets an option of a field

说明

bool fdf_set_opt ( resource $fdf_document , string $fieldname , int $element , string $str1 , string $str2 )

Sets options of the given field.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

fieldname

Name of the FDF field, as a string.

element

str1

str2

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • fdf_set_flags() - Sets a flag of a field

fdf_set_on_import_javascript
fdf_set_status
FDF 函数


Set the value of the /STATUS key

fdf_set_opt
fdf_set_submit_form_action
FDF 函数
PHP Manual

fdf_set_status

(PHP 4, PHP 5, PHP 7)

fdf_set_status — Set the value of the /STATUS key

说明

bool fdf_set_status ( resource $fdf_document , string $status )

Sets the value of the /STATUS key. When a client receives a FDF with a status set it will present the value in an alert box.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

status

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • fdf_get_status() - Get the value of the /STATUS key

fdf_set_opt
fdf_set_submit_form_action
FDF 函数


Sets a submit form action of a field

fdf_set_status
fdf_set_target_frame
FDF 函数
PHP Manual

fdf_set_submit_form_action

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

fdf_set_submit_form_action — Sets a submit form action of a field

说明

bool fdf_set_submit_form_action ( resource $fdf_document , string $fieldname , int $trigger , string $script , int $flags )

Sets a submit form action for the given field.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

fieldname

Name of the FDF field, as a string.

trigger

script

flags

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • fdf_set_javascript_action() - Sets an javascript action of a field

fdf_set_status
fdf_set_target_frame
FDF 函数


Set target frame for form display

fdf_set_submit_form_action
fdf_set_value
FDF 函数
PHP Manual

fdf_set_target_frame

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

fdf_set_target_frame — Set target frame for form display

说明

bool fdf_set_target_frame ( resource $fdf_document , string $frame_name )

Sets the target frame to display a result PDF defined with fdf_save_file() in.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

frame_name

The frame name, as a string.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • fdf_save_file()

fdf_set_submit_form_action
fdf_set_value
FDF 函数


Set the value of a field

fdf_set_target_frame
fdf_set_version
FDF 函数
PHP Manual

fdf_set_value

(PHP 4, PHP 5, PHP 7)

fdf_set_value — Set the value of a field

说明

bool fdf_set_value ( resource $fdf_document , string $fieldname , mixed $value [, int $isName ] )

Sets the value for the given field.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

fieldname

Name of the FDF field, as a string.

value

This parameter will be stored as a string unless it is an array. In this case all array elements will be stored as a value array.

isName

Note:

In older versions of the FDF toolkit last parameter determined if the field value was to be converted to a PDF Name (= 1) or set to a PDF String (= 0).

The value is no longer used in the current toolkit version 5.0. For compatibility reasons it is still supported as an optional parameter beginning with PHP 4.3, but ignored internally.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
4.3.0 | Support for arrays in the value parameter was added.

参见

  • fdf_get_value() - Get the value of a field
  • fdf_remove_item() - Sets target frame for form

fdf_set_target_frame
fdf_set_version
FDF 函数


Sets version number for a FDF file

fdf_set_value
GnuPG
FDF 函数
PHP Manual

fdf_set_version

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

fdf_set_version — Sets version number for a FDF file

说明

bool fdf_set_version ( resource $fdf_document , string $version )

Sets the FDF version for the given document.

Some features supported by this extension are only available in newer FDF versions.

参数

fdf_document

The FDF document handle, returned by fdf_create(), fdf_open() or fdf_open_string().

version

The version number. For the current FDF toolkit 5.0, this may be either 1.2, 1.3 or 1.4.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • fdf_get_version() - Gets version number for FDF API or file

fdf_set_value
GnuPG
FDF 函数


GNU Privacy Guard

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Clearsign text
  • GnuPG 函数
    • gnupg_adddecryptkey — Add a key for decryption
    • gnupg_addencryptkey — Add a key for encryption
    • gnupg_addsignkey — Add a key for signing
    • gnupg_cleardecryptkeys — Removes all keys which were set for decryption before
    • gnupg_clearencryptkeys — Removes all keys which were set for encryption before
    • gnupg_clearsignkeys — Removes all keys which were set for signing before
    • gnupg_decrypt — Decrypts a given text
    • gnupg_decryptverify — Decrypts and verifies a given text
    • gnupg_encrypt — Encrypts a given text
    • gnupg_encryptsign — Encrypts and signs a given text
    • gnupg_export — Exports a key
    • gnupg_geterror — Returns the errortext, if a function fails
    • gnupg_getprotocol — Returns the currently active protocol for all operations
    • gnupg_import — Imports a key
    • gnupg_init — Initialize a connection
    • gnupg_keyinfo — Returns an array with information about all keys that matches the given pattern
    • gnupg_setarmor — Toggle armored output
    • gnupg_seterrormode — Sets the mode for error_reporting
    • gnupg_setsignmode — Sets the mode for signing
    • gnupg_sign — Signs a given text
    • gnupg_verify — Verifies a signed text
fdf_set_version
简介
非文本内容的 MIME 输出


简介

This module allows you to interact with » gnupg.

GnuPG
安装／配置
GnuPG


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
GnuPG


需求

This extension requires the » gpgme library

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/gnupg.

需求
运行时配置
安装／配置


预定义常量

GNUPG_SIG_MODE_NORMAL (integer)
GNUPG_SIG_MODE_DETACH (integer)
GNUPG_SIG_MODE_CLEAR (integer)
GNUPG_VALIDITY_UNKNOWN (integer)
GNUPG_VALIDITY_UNDEFINED (integer)
GNUPG_VALIDITY_NEVER (integer)
GNUPG_VALIDITY_MARGINAL (integer)
GNUPG_VALIDITY_FULL (integer)
GNUPG_VALIDITY_ULTIMATE (integer)
GNUPG_PROTOCOL_OpenPGP (integer)
GNUPG_PROTOCOL_CMS (integer)
GNUPG_SIGSUM_VALID (integer)
GNUPG_SIGSUM_GREEN (integer)
GNUPG_SIGSUM_RED (integer)
GNUPG_SIGSUM_KEY_REVOKED (integer)
GNUPG_SIGSUM_KEY_EXPIRED (integer)
GNUPG_SIGSUM_KEY_MISSING (integer)
GNUPG_SIGSUM_SIG_EXPIRED (integer)
GNUPG_SIGSUM_CRL_MISSING (integer)
GNUPG_SIGSUM_CRL_TOO_OLD (integer)
GNUPG_SIGSUM_BAD_POLICY (integer)
GNUPG_SIGSUM_SYS_ERROR (integer)
GNUPG_ERROR_WARNING (integer)
GNUPG_ERROR_EXCEPTION (integer)
GNUPG_ERROR_SILENT (integer)
资源类型
范例
GnuPG


范例

Table of Contents

  • Clearsign text
预定义常量
Clearsign text
GnuPG


Clearsign text

This example will clearsign a given text.

Example #1 gnupg clearsign example (procedural)

<?php
// init gnupg
$res = gnupg_init();
// not really needed. Clearsign is default
gnupg_setsignmode($res,GNUPG_SIG_MODE_CLEAR);
// add key with passphrase 'test' for signing
gnupg_addsignkey($res,"8660281B6051D071D94B5B230549F9DC851566DC","test");
// sign
$signed = gnupg_sign($res,"just a test");
echo $signed;
?>

Example #2 gnupg clearsign example (OO)

<?php
// new class
$gnupg = new gnupg();
// not really needed. Clearsign is default
$gnupg->setsignmode(gnupg::SIG_MODE_CLEAR);
// add key with passphrase 'test' for signing
$gnupg->addsignkey("8660281B6051D071D94B5B230549F9DC851566DC","test");
// sign
$signed = $gnupg->sign("just a test");
echo $signed;
?>

Example #3 keylistiterator

This extension also comes with an Iterator for your keyring.

<?php
// create a new iterator for listing all public keys that matches 'example'
$iterator = new gnupg_keylistiterator("example");
foreach($iterator as $fingerprint => $userid){
    echo $fingerprint." -> ".$userid."\n";
}
?>
范例
GnuPG 函数
范例


GnuPG 函数

注释

This extension makes use of the keyring of the current user. This keyring is normally located in ~./.gnupg/. To specify a custom location, store the path to the keyring in the environment variable GNUPGHOME. See putenv for more information how to do this.

Some functions require the specification of a key. This specification can be anything that refers to a unique key (userid, key-id, fingerprint, ...). This documentation uses the fingerprint in all examples.

Note:

As alternative to the explicitly documented functions using resources, you can also use an object-oriented style using gnupg objects.

Table of Contents

  • gnupg_adddecryptkey — Add a key for decryption
  • gnupg_addencryptkey — Add a key for encryption
  • gnupg_addsignkey — Add a key for signing
  • gnupg_cleardecryptkeys — Removes all keys which were set for decryption before
  • gnupg_clearencryptkeys — Removes all keys which were set for encryption before
  • gnupg_clearsignkeys — Removes all keys which were set for signing before
  • gnupg_decrypt — Decrypts a given text
  • gnupg_decryptverify — Decrypts and verifies a given text
  • gnupg_encrypt — Encrypts a given text
  • gnupg_encryptsign — Encrypts and signs a given text
  • gnupg_export — Exports a key
  • gnupg_geterror — Returns the errortext, if a function fails
  • gnupg_getprotocol — Returns the currently active protocol for all operations
  • gnupg_import — Imports a key
  • gnupg_init — Initialize a connection
  • gnupg_keyinfo — Returns an array with information about all keys that matches the given pattern
  • gnupg_setarmor — Toggle armored output
  • gnupg_seterrormode — Sets the mode for error_reporting
  • gnupg_setsignmode — Sets the mode for signing
  • gnupg_sign — Signs a given text
  • gnupg_verify — Verifies a signed text
Clearsign text
gnupg_adddecryptkey
GnuPG


Add a key for decryption

GnuPG 函数
gnupg_addencryptkey
GnuPG 函数
PHP Manual

gnupg_adddecryptkey

(PECL gnupg >= 0.5)

gnupg_adddecryptkey — Add a key for decryption

说明

bool gnupg_adddecryptkey ( resource $identifier , string $fingerprint , string $passphrase )

参数

identifier

gnupg 标识符，由对 gnupg_init() 或 gnupg 的调用生成。

fingerprint

指纹键名。

passphrase

The pass phrase.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Procedural gnupg_adddecryptkey() example

<?php
$res = gnupg_init();
gnupg_adddecryptkey($res,"8660281B6051D071D94B5B230549F9DC851566DC","test");
?>

Example #2 OO gnupg_adddecryptkey() example

<?php
$gpg = new gnupg();
$gpg -> adddecryptkey("8660281B6051D071D94B5B230549F9DC851566DC","test");
?>

GnuPG 函数
gnupg_addencryptkey
GnuPG 函数


Add a key for encryption

gnupg_adddecryptkey
gnupg_addsignkey
GnuPG 函数
PHP Manual

gnupg_addencryptkey

(PECL gnupg >= 0.5)

gnupg_addencryptkey — Add a key for encryption

说明

bool gnupg_addencryptkey ( resource $identifier , string $fingerprint )

参数

identifier

gnupg 标识符，由对 gnupg_init() 或 gnupg 的调用生成。

fingerprint

指纹键名。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Procedural gnupg_addencryptkey() example

<?php
$res = gnupg_init();
gnupg_addencryptkey($res,"8660281B6051D071D94B5B230549F9DC851566DC");
?>

Example #2 OO gnupg_addencryptkey() example

<?php
$gpg = new gnupg();
$gpg -> addencryptkey("8660281B6051D071D94B5B230549F9DC851566DC");
?>

gnupg_adddecryptkey
gnupg_addsignkey
GnuPG 函数


Add a key for signing

gnupg_addencryptkey
gnupg_cleardecryptkeys
GnuPG 函数
PHP Manual

gnupg_addsignkey

(PECL gnupg >= 0.5)

gnupg_addsignkey — Add a key for signing

说明

bool gnupg_addsignkey ( resource $identifier , string $fingerprint [, string $passphrase ] )

参数

identifier

gnupg 标识符，由对 gnupg_init() 或 gnupg 的调用生成。

fingerprint

指纹键名。

passphrase

The pass phrase.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Procedural gnupg_addsignkey() example

<?php
$res = gnupg_init();
gnupg_addsignkey($res,"8660281B6051D071D94B5B230549F9DC851566DC","test");
?>

Example #2 OO gnupg_addsignkey() example

<?php
$gpg = new gnupg();
$gpg -> addsignkey("8660281B6051D071D94B5B230549F9DC851566DC","test");
?>

gnupg_addencryptkey
gnupg_cleardecryptkeys
GnuPG 函数


Removes all keys which were set for decryption before

gnupg_addsignkey
gnupg_clearencryptkeys
GnuPG 函数
PHP Manual

gnupg_cleardecryptkeys

(PECL gnupg >= 0.5)

gnupg_cleardecryptkeys — Removes all keys which were set for decryption before

说明

bool gnupg_cleardecryptkeys ( resource $identifier )

参数

identifier

gnupg 标识符，由对 gnupg_init() 或 gnupg 的调用生成。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Procedural gnupg_cleardecryptkeys() example

<?php
$res = gnupg_init();
gnupg_cleardecryptkeys($res);
?>

Example #2 OO gnupg_cleardecryptkeys() example

<?php
$gpg = new gnupg();
$gpg -> cleardecryptkeys();
?>

gnupg_addsignkey
gnupg_clearencryptkeys
GnuPG 函数


Removes all keys which were set for encryption before

gnupg_cleardecryptkeys
gnupg_clearsignkeys
GnuPG 函数
PHP Manual

gnupg_clearencryptkeys

(PECL gnupg >= 0.5)

gnupg_clearencryptkeys — Removes all keys which were set for encryption before

说明

bool gnupg_clearencryptkeys ( resource $identifier )

参数

identifier

gnupg 标识符，由对 gnupg_init() 或 gnupg 的调用生成。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Procedural gnupg_clearencryptkeys() example

<?php
$res = gnupg_init();
gnupg_clearencryptkeys($res);
?>

Example #2 OO gnupg_clearencryptkeys() example

<?php
$gpg = new gnupg();
$gpg -> clearencryptkeys();
?>

gnupg_cleardecryptkeys
gnupg_clearsignkeys
GnuPG 函数


Removes all keys which were set for signing before

gnupg_clearencryptkeys
gnupg_decrypt
GnuPG 函数
PHP Manual

gnupg_clearsignkeys

(PECL gnupg >= 0.5)

gnupg_clearsignkeys — Removes all keys which were set for signing before

说明

bool gnupg_clearsignkeys ( resource $identifier )

参数

identifier

gnupg 标识符，由对 gnupg_init() 或 gnupg 的调用生成。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Procedural gnupg_clearsignkeys() example

<?php
$res = gnupg_init();
gnupg_clearsignkeys($res);
?>

Example #2 OO gnupg_clearsignkeys() example

<?php
$gpg = new gnupg();
$gpg -> clearsignkeys();
?>

gnupg_clearencryptkeys
gnupg_decrypt
GnuPG 函数


Decrypts a given text

gnupg_clearsignkeys
gnupg_decryptverify
GnuPG 函数
PHP Manual

gnupg_decrypt

(PECL gnupg >= 0.1)

gnupg_decrypt — Decrypts a given text

说明

string gnupg_decrypt ( resource $identifier , string $text )

Decrypts the given text with the keys, which were set with gnupg_adddecryptkey before.

参数

identifier

gnupg 标识符，由对 gnupg_init() 或 gnupg 的调用生成。

text

The text being decrypted.

返回值

On success, this function returns the decrypted text. On failure, this function returns FALSE.

范例

Example #1 Procedural gnupg_decrypt() example

<?php
$res = gnupg_init();
gnupg_adddecryptkey($res,"8660281B6051D071D94B5B230549F9DC851566DC","test");
$plain = gnupg_decrypt($res,$encrypted_text);
echo $plain;
?>

Example #2 OO gnupg_encrypt() example

<?php
$gpg = new gnupg();
$gpg -> adddecryptkey("8660281B6051D071D94B5B230549F9DC851566DC","test");
$plain = $gpg -> decrypt($encrypted_text);
echo $plain;
?>

gnupg_clearsignkeys
gnupg_decryptverify
GnuPG 函数


Decrypts and verifies a given text

gnupg_decrypt
gnupg_encrypt
GnuPG 函数
PHP Manual

gnupg_decryptverify

(PECL gnupg >= 0.2)

gnupg_decryptverify — Decrypts and verifies a given text

说明

array gnupg_decryptverify ( resource $identifier , string $text , string &$plaintext )

Decrypts and verifies a given text and returns information about the signature.

参数

identifier

gnupg 标识符，由对 gnupg_init() 或 gnupg 的调用生成。

text

The text being decrypted.

plaintext

The parameter plaintext gets filled with the decrypted text.

返回值

On success, this function returns information about the signature and fills the plaintext parameter with the decrypted text. On failure, this function returns FALSE.

范例

Example #1 Procedural gnupg_decryptverify() example

<?php
$plaintext = "";
$res = gnupg_init();
gnupg_adddecryptkey($res,"8660281B6051D071D94B5B230549F9DC851566DC","test");
$info = gnupg_decryptverify($res,$text,$plaintext);
print_r($info);
?>

Example #2 OO gnupg_decryptverify() example

<?php
$plaintext = "";
$gpg = new gnupg();
$gpg -> adddecryptkey("8660281B6051D071D94B5B230549F9DC851566DC","test");
$info = $gpg -> decryptverify($text,$plaintext);
print_r($info);
?>

gnupg_decrypt
gnupg_encrypt
GnuPG 函数


Encrypts a given text

gnupg_decryptverify
gnupg_encryptsign
GnuPG 函数
PHP Manual

gnupg_encrypt

(PECL gnupg >= 0.1)

gnupg_encrypt — Encrypts a given text

说明

string gnupg_encrypt ( resource $identifier , string $plaintext )

Encrypts the given plaintext with the keys, which were set with gnupg_addencryptkey before and returns the encrypted text.

参数

identifier

gnupg 标识符，由对 gnupg_init() 或 gnupg 的调用生成。

plaintext

The text being encrypted.

返回值

On success, this function returns the encrypted text. On failure, this function returns FALSE.

范例

Example #1 Procedural gnupg_encrypt() example

<?php
$res = gnupg_init();
gnupg_addencryptkey($res,"8660281B6051D071D94B5B230549F9DC851566DC");
$enc = gnupg_encrypt($res, "just a test");
echo $enc;
?>

Example #2 OO gnupg_encrypt() example

<?php
$gpg = new gnupg();
$gpg -> addencryptkey("8660281B6051D071D94B5B230549F9DC851566DC");
$enc = $gpg -> encrypt("just a test");
echo $enc;
?>

gnupg_decryptverify
gnupg_encryptsign
GnuPG 函数


Encrypts and signs a given text

gnupg_encrypt
gnupg_export
GnuPG 函数
PHP Manual

gnupg_encryptsign

(PECL gnupg >= 0.2)

gnupg_encryptsign — Encrypts and signs a given text

说明

string gnupg_encryptsign ( resource $identifier , string $plaintext )

Encrypts and signs the given plaintext with the keys, which were set with gnupg_addsignkey and gnupg_addencryptkey before and returns the encrypted and signed text.

参数

identifier

gnupg 标识符，由对 gnupg_init() 或 gnupg 的调用生成。

plaintext

The text being encrypted.

返回值

On success, this function returns the encrypted and signed text. On failure, this function returns FALSE.

范例

Example #1 Procedural gnupg_encryptsign() example

<?php
$res = gnupg_init();
gnupg_addencryptkey($res,"8660281B6051D071D94B5B230549F9DC851566DC");
gnupg_addsignkey($res,"8660281B6051D071D94B5B230549F9DC851566DC","test");
$enc = gnupg_encryptsign($res, "just a test");
echo $enc;
?>

Example #2 OO gnupg_encryptsign() example

<?php
$gpg = new gnupg();
$gpg -> addencryptkey("8660281B6051D071D94B5B230549F9DC851566DC");
$gpg -> addsignkey("8660281B6051D071D94B5B230549F9DC851566DC","test");
$enc = $gpg -> encryptsign("just a test");
echo $enc;
?>

gnupg_encrypt
gnupg_export
GnuPG 函数


Exports a key

gnupg_encryptsign
gnupg_geterror
GnuPG 函数
PHP Manual

gnupg_export

(PECL gnupg >= 0.1)

gnupg_export — Exports a key

说明

string gnupg_export ( resource $identifier , string $fingerprint )

Exports the key fingerprint.

参数

identifier

gnupg 标识符，由对 gnupg_init() 或 gnupg 的调用生成。

fingerprint

指纹键名。

返回值

On success, this function returns the keydata. On failure, this function returns FALSE.

范例

Example #1 Procedural gnupg_export() example

<?php
$res = gnupg_init();
$export = gnupg_export($res,"8660281B6051D071D94B5B230549F9DC851566DC");
echo $export;
?>

Example #2 OO gnupg_export() example

<?php
$gpg = new gnupg();
$export = $gpg -> export("8660281B6051D071D94B5B230549F9DC851566DC");
?>

gnupg_encryptsign
gnupg_geterror
GnuPG 函数


Returns the errortext, if a function fails

gnupg_export
gnupg_getprotocol
GnuPG 函数
PHP Manual

gnupg_geterror

(PECL gnupg >= 0.1)

gnupg_geterror — Returns the errortext, if a function fails

说明

string gnupg_geterror ( resource $identifier )

参数

identifier

gnupg 标识符，由对 gnupg_init() 或 gnupg 的调用生成。

返回值

Returns an errortext, if an error has occurred, otherwise FALSE.

范例

Example #1 Procedural gnupg_geterror() example

<?php
$res = gnupg_init();
echo gnupg_geterror($res);
?>

Example #2 OO gnupg_geterror() example

<?php
$gpg = new gnupg();
echo $gpg -> geterror();
?>

gnupg_export
gnupg_getprotocol
GnuPG 函数


Returns the currently active protocol for all operations

gnupg_geterror
gnupg_import
GnuPG 函数
PHP Manual

gnupg_getprotocol

(PECL gnupg >= 0.1)

gnupg_getprotocol — Returns the currently active protocol for all operations

说明

int gnupg_getprotocol ( resource $identifier )

参数

identifier

gnupg 标识符，由对 gnupg_init() 或 gnupg 的调用生成。

返回值

Returns the currently active protocol, which can be one of GNUPG_PROTOCOL_OpenPGP or GNUPG_PROTOCOL_CMS.

范例

Example #1 Procedural gnupg_getprotocol() example

<?php
$res = gnupg_init();
echo gnupg_getprotocol($res);
?>

Example #2 OO gnupg_getprotocol() example

<?php
$gpg = new gnupg();
echo $gpg -> getprotocol();
?>

gnupg_geterror
gnupg_import
GnuPG 函数


Imports a key

gnupg_getprotocol
gnupg_init
GnuPG 函数
PHP Manual

gnupg_import

(PECL gnupg >= 0.3)

gnupg_import — Imports a key

说明

array gnupg_import ( resource $identifier , string $keydata )

Imports the key keydata and returns an array with information about the importprocess.

参数

identifier

gnupg 标识符，由对 gnupg_init() 或 gnupg 的调用生成。

keydata

The data key that is being imported.

返回值

On success, this function returns and info-array about the importprocess. On failure, this function returns FALSE.

范例

Example #1 Procedural gnupg_import() example

<?php
$res = gnupg_init();
$info = gnupg_import($res,$keydata);
print_r($info);
?>

Example #2 OO gnupg_import() example

<?php
$gpg = new gnupg();
$info = $gpg -> import($keydata);
print_r($info);
?>

gnupg_getprotocol
gnupg_init
GnuPG 函数


Initialize a connection

gnupg_import
gnupg_keyinfo
GnuPG 函数
PHP Manual

gnupg_init

(PECL gnupg >= 0.4)

gnupg_init — Initialize a connection

说明

resource gnupg_init ( void )

参数

此函数没有参数。

返回值

A GnuPG resource connection used by other GnuPG functions.

范例

Example #1 Procedural gnupg_init() example

<?php
$res = gnupg_init();
?>

Example #2 OO gnupg initializer example

<?php
$gpg = new gnupg();
?>

gnupg_import
gnupg_keyinfo
GnuPG 函数


Returns an array with information about all keys that matches the given pattern

gnupg_init
gnupg_setarmor
GnuPG 函数
PHP Manual

gnupg_keyinfo

(PECL gnupg >= 0.1)

gnupg_keyinfo — Returns an array with information about all keys that matches the given pattern

说明

array gnupg_keyinfo ( resource $identifier , string $pattern )

参数

identifier

gnupg 标识符，由对 gnupg_init() 或 gnupg 的调用生成。

pattern

The pattern being checked against the keys.

返回值

Returns an array with information about all keys that matches the given pattern or FALSE, if an error has occurred.

范例

Example #1 Procedural gnupg_keyinfo() example

<?php
$res = gnupg_init();
$info = gnupg_keyinfo($res, 'test');
print_r($info);
?>

Example #2 OO gnupg_keyinfo() example

<?php
$gpg = new gnupg();
$info = $gpg -> keyinfo("test");
print_r($info);
?>

gnupg_init
gnupg_setarmor
GnuPG 函数


Toggle armored output

gnupg_keyinfo
gnupg_seterrormode
GnuPG 函数
PHP Manual

gnupg_setarmor

(PECL gnupg >= 0.1)

gnupg_setarmor — Toggle armored output

说明

bool gnupg_setarmor ( resource $identifier , int $armor )

Toggle the armored output.

参数

identifier

gnupg 标识符，由对 gnupg_init() 或 gnupg 的调用生成。

armor

Pass a non-zero integer-value to this function to enable armored-output (default). Pass 0 to disable armored output.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Procedural gnupg_setarmor() example

<?php
$res = gnupg_init();
gnupg_setarmor($res,1); // enable armored output;
gnupg_setarmor($res,0); // disable armored output;
?>

Example #2 OO gnupg_setarmor() example

<?php
$gpg = new gnupg();
$gpg -> setarmor(1); // enable armored output;
$gpg -> setarmor(0); // disable armored output;
?>

gnupg_keyinfo
gnupg_seterrormode
GnuPG 函数


Sets the mode for error_reporting

gnupg_setarmor
gnupg_setsignmode
GnuPG 函数
PHP Manual

gnupg_seterrormode

(PECL gnupg >= 0.6)

gnupg_seterrormode — Sets the mode for error_reporting

说明

void gnupg_seterrormode ( resource $identifier , int $errormode )

Sets the mode for error_reporting.

参数

identifier

gnupg 标识符，由对 gnupg_init() 或 gnupg 的调用生成。

errormode

The error mode.

errormode takes a constant indicating what type of error_reporting should be used. The possible values are GNUPG_ERROR_WARNING, GNUPG_ERROR_EXCEPTION and GNUPG_ERROR_SILENT. By default GNUPG_ERROR_SILENT is used.

返回值

没有返回值。

范例

Example #1 Procedural gnupg_seterrormode() example

<?php
$res = gnupg_init();
gnupg_seterrormode($res,GNUPG_ERROR_WARNING); // raise a PHP-Warning in case of an error
?>

Example #2 OO gnupg_seterrormode() example

<?php
$gpg = new gnupg();
$gpg -> seterrormode(gnupg::ERROR_EXCEPTION); // throw an exception in case of an error
?>

gnupg_setarmor
gnupg_setsignmode
GnuPG 函数


Sets the mode for signing

gnupg_seterrormode
gnupg_sign
GnuPG 函数
PHP Manual

gnupg_setsignmode

(PECL gnupg >= 0.1)

gnupg_setsignmode — Sets the mode for signing

说明

bool gnupg_setsignmode ( resource $identifier , int $signmode )

Sets the mode for signing.

参数

identifier

gnupg 标识符，由对 gnupg_init() 或 gnupg 的调用生成。

sigmode

The mode for signing.

signmode takes a constant indicating what type of signature should be produced. The possible values are GNUPG_SIG_MODE_NORMAL, GNUPG_SIG_MODE_DETACH and GNUPG_SIG_MODE_CLEAR. By default GNUPG_SIG_MODE_CLEAR is used.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Procedural gnupg_setsignmode() example

<?php
$res = gnupg_init();
gnupg_setsignmode($res,GNUPG_SIG_MODE_DETACH); // produce a detached signature
?>

Example #2 OO gnupg_setsignmode() example

<?php
$gpg = new gnupg();
$gpg -> setsignmode(gnupg::SIG_MODE_DETACH); // produce a detached signature
?>

gnupg_seterrormode
gnupg_sign
GnuPG 函数


Signs a given text

gnupg_setsignmode
gnupg_verify
GnuPG 函数
PHP Manual

gnupg_sign

(PECL gnupg >= 0.1)

gnupg_sign — Signs a given text

说明

string gnupg_sign ( resource $identifier , string $plaintext )

Signs the given plaintext with the keys, which were set with gnupg_addsignkey before and returns the signed text or the signature, depending on what was set with gnupg_setsignmode.

参数

identifier

gnupg 标识符，由对 gnupg_init() 或 gnupg 的调用生成。

plaintext

The plain text being signed.

返回值

On success, this function returns the signed text or the signature. On failure, this function returns FALSE.

范例

Example #1 Procedural gnupg_sign() example

<?php
$res = gnupg_init();
gnupg_addsignkey($res,"8660281B6051D071D94B5B230549F9DC851566DC","test");
$signed = gnupg_sign($res, "just a test");
echo $signed;
?>

Example #2 OO gnupg_sign() example

<?php
$gpg = new gnupg();
$gpg->addsignkey("8660281B6051D071D94B5B230549F9DC851566DC","test");
$signed = $gpg->sign("just a test");
echo $signed;
?>

gnupg_setsignmode
gnupg_verify
GnuPG 函数


Verifies a signed text

gnupg_sign
haru
GnuPG 函数
PHP Manual

gnupg_verify

(PECL gnupg >= 0.1)

gnupg_verify — Verifies a signed text

说明

array gnupg_verify ( resource $identifier , string $signed_text , string $signature [, string &$plaintext ] )

Verifies the given signed_text and returns information about the signature.

参数

identifier

gnupg 标识符，由对 gnupg_init() 或 gnupg 的调用生成。

signed_text

The signed text.

signature

The signature. To verify a clearsigned text, set signature to FALSE.

plaintext

The plain text. If this optional parameter is passed, it is filled with the plain text.

返回值

On success, this function returns information about the signature. On failure, this function returns FALSE.

范例

Example #1 Procedural gnupg_verify() example

<?php
$plaintext = "";
$res = gnupg_init();
// clearsigned
$info = gnupg_verify($res,$signed_text,false,$plaintext);
print_r($info);
// detached signature
$info = gnupg_verify($res,$signed_text,$signature);
print_r($info);
?>

Example #2 OO gnupg_verify() example

<?php
$plaintext = "";
$gpg = new gnupg();
// clearsigned
$info = $gpg -> verify($signed_text,false,$plaintext);
print_r($info);
// detached signature
$info = $gpg -> verify($signed_text,$signature);
print_r($info);
?>

gnupg_sign
haru
GnuPG 函数


Haru PDF

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Basic PECL/haru example
  • Builtin Fonts And Encodings
    • Builtin Fonts
    • Builtin Encodings
  • HaruException — The HaruException class
  • HaruDoc — The HaruDoc class
    • HaruDoc::addPage — Add new page to the document
    • HaruDoc::addPageLabel — Set the numbering style for the specified range of pages
    • HaruDoc::__construct — Construct new HaruDoc instance
    • HaruDoc::createOutline — Create a HaruOutline instance
    • HaruDoc::getCurrentEncoder — Get HaruEncoder currently used in the document
    • HaruDoc::getCurrentPage — Return current page of the document
    • HaruDoc::getEncoder — Get HaruEncoder instance for the specified encoding
    • HaruDoc::getFont — Get HaruFont instance
    • HaruDoc::getInfoAttr — Get current value of the specified document attribute
    • HaruDoc::getPageLayout — Get current page layout
    • HaruDoc::getPageMode — Get current page mode
    • HaruDoc::getStreamSize — Get the size of the temporary stream
    • HaruDoc::insertPage — Insert new page just before the specified page
    • HaruDoc::loadJPEG — Load a JPEG image
    • HaruDoc::loadPNG — Load PNG image and return HaruImage instance
    • HaruDoc::loadRaw — Load a RAW image
    • HaruDoc::loadTTC — Load the font with the specified index from TTC file
    • HaruDoc::loadTTF — Load TTF font file
    • HaruDoc::loadType1 — Load Type1 font
    • HaruDoc::output — Write the document data to the output buffer
    • HaruDoc::readFromStream — Read data from the temporary stream
    • HaruDoc::resetError — Reset error state of the document handle
    • HaruDoc::resetStream — Rewind the temporary stream
    • HaruDoc::save — Save the document into the specified file
    • HaruDoc::saveToStream — Save the document into a temporary stream
    • HaruDoc::setCompressionMode — Set compression mode for the document
    • HaruDoc::setCurrentEncoder — Set the current encoder for the document
    • HaruDoc::setEncryptionMode — Set encryption mode for the document
    • HaruDoc::setInfoAttr — Set the info attribute of the document
    • HaruDoc::setInfoDateAttr — Set the datetime info attributes of the document
    • HaruDoc::setOpenAction — Define which page is shown when the document is opened
    • HaruDoc::setPageLayout — Set how pages should be displayed
    • HaruDoc::setPageMode — Set how the document should be displayed
    • HaruDoc::setPagesConfiguration — Set the number of pages per set of pages
    • HaruDoc::setPassword — Set owner and user passwords for the document
    • HaruDoc::setPermission — Set permissions for the document
    • HaruDoc::useCNSEncodings — Enable Chinese simplified encodings
    • HaruDoc::useCNSFonts — Enable builtin Chinese simplified fonts
    • HaruDoc::useCNTEncodings — Enable Chinese traditional encodings
    • HaruDoc::useCNTFonts — Enable builtin Chinese traditional fonts
    • HaruDoc::useJPEncodings — Enable Japanese encodings
    • HaruDoc::useJPFonts — Enable builtin Japanese fonts
    • HaruDoc::useKREncodings — Enable Korean encodings
    • HaruDoc::useKRFonts — Enable builtin Korean fonts
  • HaruPage — The HaruPage class
    • HaruPage::arc — Append an arc to the current path
    • HaruPage::beginText — Begin a text object and set the current text position to (0,0)
    • HaruPage::circle — Append a circle to the current path
    • HaruPage::closePath — Append a straight line from the current point to the start point of the path
    • HaruPage::concat — Concatenate current transformation matrix of the page and the specified matrix
    • HaruPage::createDestination — Create new HaruDestination instance
    • HaruPage::createLinkAnnotation — Create new HaruAnnotation instance
    • HaruPage::createTextAnnotation — Create new HaruAnnotation instance
    • HaruPage::createURLAnnotation — Create and return new HaruAnnotation instance
    • HaruPage::curveTo2 — Append a Bezier curve to the current path
    • HaruPage::curveTo3 — Append a Bezier curve to the current path
    • HaruPage::curveTo — Append a Bezier curve to the current path
    • HaruPage::drawImage — Show image at the page
    • HaruPage::ellipse — Append an ellipse to the current path
    • HaruPage::endPath — End current path object without filling and painting operations
    • HaruPage::endText — End current text object
    • HaruPage::eofill — Fill current path using even-odd rule
    • HaruPage::eoFillStroke — Fill current path using even-odd rule, then paint the path
    • HaruPage::fill — Fill current path using nonzero winding number rule
    • HaruPage::fillStroke — Fill current path using nonzero winding number rule, then paint the path
    • HaruPage::getCharSpace — Get the current value of character spacing
    • HaruPage::getCMYKFill — Get the current filling color
    • HaruPage::getCMYKStroke — Get the current stroking color
    • HaruPage::getCurrentFont — Get the currently used font
    • HaruPage::getCurrentFontSize — Get the current font size
    • HaruPage::getCurrentPos — Get the current position for path painting
    • HaruPage::getCurrentTextPos — Get the current position for text printing
    • HaruPage::getDash — Get the current dash pattern
    • HaruPage::getFillingColorSpace — Get the current filling color space
    • HaruPage::getFlatness — Get the flatness of the page
    • HaruPage::getGMode — Get the current graphics mode
    • HaruPage::getGrayFill — Get the current filling color
    • HaruPage::getGrayStroke — Get the current stroking color
    • HaruPage::getHeight — Get the height of the page
    • HaruPage::getHorizontalScaling — Get the current value of horizontal scaling
    • HaruPage::getLineCap — Get the current line cap style
    • HaruPage::getLineJoin — Get the current line join style
    • HaruPage::getLineWidth — Get the current line width
    • HaruPage::getMiterLimit — Get the value of miter limit
    • HaruPage::getRGBFill — Get the current filling color
    • HaruPage::getRGBStroke — Get the current stroking color
    • HaruPage::getStrokingColorSpace — Get the current stroking color space
    • HaruPage::getTextLeading — Get the current value of line spacing
    • HaruPage::getTextMatrix — Get the current text transformation matrix of the page
    • HaruPage::getTextRenderingMode — Get the current text rendering mode
    • HaruPage::getTextRise — Get the current value of text rising
    • HaruPage::getTextWidth — Get the width of the text using current fontsize, character spacing and word spacing
    • HaruPage::getTransMatrix — Get the current transformation matrix of the page
    • HaruPage::getWidth — Get the width of the page
    • HaruPage::getWordSpace — Get the current value of word spacing
    • HaruPage::lineTo — Draw a line from the current point to the specified point
    • HaruPage::measureText — Calculate the byte length of characters which can be included on one line of the specified width
    • HaruPage::moveTextPos — Move text position to the specified offset
    • HaruPage::moveTo — Set starting point for new drawing path
    • HaruPage::moveToNextLine — Move text position to the start of the next line
    • HaruPage::rectangle — Append a rectangle to the current path
    • HaruPage::setCharSpace — Set character spacing for the page
    • HaruPage::setCMYKFill — Set filling color for the page
    • HaruPage::setCMYKStroke — Set stroking color for the page
    • HaruPage::setDash — Set the dash pattern for the page
    • HaruPage::setFlatness — Set flatness for the page
    • HaruPage::setFontAndSize — Set font and fontsize for the page
    • HaruPage::setGrayFill — Set filling color for the page
    • HaruPage::setGrayStroke — Sets stroking color for the page
    • HaruPage::setHeight — Set height of the page
    • HaruPage::setHorizontalScaling — Set horizontal scaling for the page
    • HaruPage::setLineCap — Set the shape to be used at the ends of lines
    • HaruPage::setLineJoin — Set line join style for the page
    • HaruPage::setLineWidth — Set line width for the page
    • HaruPage::setMiterLimit — Set the current value of the miter limit of the page
    • HaruPage::setRGBFill — Set filling color for the page
    • HaruPage::setRGBStroke — Set stroking color for the page
    • HaruPage::setRotate — Set rotation angle of the page
    • HaruPage::setSize — Set size and direction of the page
    • HaruPage::setSlideShow — Set transition style for the page
    • HaruPage::setTextLeading — Set text leading (line spacing) for the page
    • HaruPage::setTextMatrix — Set the current text transformation matrix of the page
    • HaruPage::setTextRenderingMode — Set text rendering mode for the page
    • HaruPage::setTextRise — Set the current value of text rising
    • HaruPage::setWidth — Set width of the page
    • HaruPage::setWordSpace — Set word spacing for the page
    • HaruPage::showText — Print text at the current position of the page
    • HaruPage::showTextNextLine — Move the current position to the start of the next line and print the text
    • HaruPage::stroke — Paint current path
    • HaruPage::textOut — Print the text on the specified position
    • HaruPage::textRect — Print the text inside the specified region
  • HaruFont — The HaruFont class
    • HaruFont::getAscent — Get the vertical ascent of the font
    • HaruFont::getCapHeight — Get the distance from the baseline of uppercase letters
    • HaruFont::getDescent — Get the vertical descent of the font
    • HaruFont::getEncodingName — Get the name of the encoding
    • HaruFont::getFontName — Get the name of the font
    • HaruFont::getTextWidth — Get the total width of the text, number of characters, number of words and number of spaces
    • HaruFont::getUnicodeWidth — Get the width of the character in the font
    • HaruFont::getXHeight — Get the distance from the baseline of lowercase letters
    • HaruFont::measureText — Calculate the number of characters which can be included within the specified width
  • HaruImage — The HaruImage class
    • HaruImage::getBitsPerComponent — Get the number of bits used to describe each color component of the image
    • HaruImage::getColorSpace — Get the name of the color space
    • HaruImage::getHeight — Get the height of the image
    • HaruImage::getSize — Get size of the image
    • HaruImage::getWidth — Get the width of the image
    • HaruImage::setColorMask — Set the color mask of the image
    • HaruImage::setMaskImage — Set the image mask
  • HaruEncoder — The HaruEncoder class
    • HaruEncoder::getByteType — Get the type of the byte in the text
    • HaruEncoder::getType — Get the type of the encoder
    • HaruEncoder::getUnicode — Convert the specified character to unicode
    • HaruEncoder::getWritingMode — Get the writing mode of the encoder
  • HaruOutline — The HaruOutline class
    • HaruOutline::setDestination — Set the destination for the outline
    • HaruOutline::setOpened — Set the initial state of the outline
  • HaruAnnotation — The HaruAnnotation class
    • HaruAnnotation::setBorderStyle — Set the border style of the annotation
    • HaruAnnotation::setHighlightMode — Set the highlighting mode of the annotation
    • HaruAnnotation::setIcon — Set the icon style of the annotation
    • HaruAnnotation::setOpened — Set the initial state of the annotation
  • HaruDestination — The HaruDestination class
    • HaruDestination::setFit — Set the appearance of the page to fit the window
    • HaruDestination::setFitB — Set the appearance of the page to fit the bounding box of the page within the window
    • HaruDestination::setFitBH — Set the appearance of the page to fit the width of the bounding box
    • HaruDestination::setFitBV — Set the appearance of the page to fit the height of the boudning box
    • HaruDestination::setFitH — Set the appearance of the page to fit the window width
    • HaruDestination::setFitR — Set the appearance of the page to fit the specified rectangle
    • HaruDestination::setFitV — Set the appearance of the page to fit the window height
    • HaruDestination::setXYZ — Set the appearance of the page
gnupg_verify
简介
非文本内容的 MIME 输出


简介

The PECL/haru extension provides bindings to the libHaru library. libHaru is a free, cross platform, and Open Source library for generating PDF files.

The Haru library (libHaru) may be found here: » http://libharu.org.

Warning

此扩展是实验性 的。 此扩展的表象，包括其函数名称以及其他此扩展的相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本扩展风险自担 。

haru
安装／配置
haru


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
haru


需求

You need to install libharu first to be able to use PECL/haru. PECL/haru is tested with libharu 2.0.8, older versions might or might not work for you. PECL/haru also requires PHP 5.1.3 or newer.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/haru.

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
范例
haru


范例

Table of Contents

  • Basic PECL/haru example
预定义常量
Basic PECL/haru example
haru


Basic PECL/haru example

Example #1 Fancy "Hello world"

<?php

$doc = new HaruDoc;

$doc->setPageMode(HaruDoc::PAGE_MODE_USE_THUMBS); /* show thumbnails */

$page = $doc->addPage(); /* add page to the document */
$page->setSize(HaruPage::SIZE_A4, HaruPage::LANDSCAPE); /* set the page to use A4 landscape format */

$courier = $doc->getFont("Courier-Bold"); /* we'll use the bundled font a few lines below */

$page->setRGBStroke(0, 0, 0); /* set colors */
$page->setRGBFill(0.7, 0.8, 0.9);
$page->rectangle(150, 150, 550, 250); /* draw a rectangle */

$page->fillStroke(); /* fill and stroke it */

$page->setDash(array(3, 3), 0); /* set dash style for lines at this page */
$page->setFontAndSize($courier, 60); /* set font and size */

$page->setRGBStroke(0.5, 0.5, 0.1); /* set line color */
$page->setRGBFill(1, 1, 1); /* set filling color */

$page->setTextRenderingMode(HaruPage::FILL_THEN_STROKE); /* fill and stroke text */

/* print the text */
$page->beginText();
$page->textOut(210, 270, "Hello World!");
$page->endText();

$doc->save("/tmp/test.pdf"); /* save the document into a file */

?>

Open the result document in your favourite PDF viewer and you should see a light-blue rectangle and white "Hello World!" on it.

范例
Builtin Fonts And Encodings
范例


Builtin Fonts And Encodings

Table of Contents

  • Builtin Fonts
  • Builtin Encodings
Basic PECL/haru example
Builtin Fonts
haru


Builtin Fonts

These Base14 fonts are built-in into PDF and all viewers can display them. Using these fonts may decrease the size of the result file and make the processing faster, avoiding loading external fonts. However the fonts support only latin1 character set and you have to load external fonts if you need to use an other character set.

The Base14 fonts:

  • Courier

  • Courier-Bold

  • Courier-Oblique

  • Courier-BoldOblique

  • Helvetica

  • Helvetica-Bold

  • Helvetica-Oblique

  • Helvetica-BoldOblique

  • Times-Roman

  • Times-Bold

  • Times-Italic

  • Times-BoldItalic

  • Symbol

  • ZapfDingbats

Builtin Fonts And Encodings
Builtin Encodings
Builtin Fonts And Encodings


Builtin Encodings

Single-byte character set encodings
Name | Description
StandardEncoding | The default encoding of PDF.
MacRomanEncoding | The standard encoding of Mac OS.
WinAnsiEncoding | The standard encoding of Windows.
FontSpecific | The font built-in encoding.
ISO8859-2 | Latin2 (East European)
ISO8859-3 | Latin3 (South European)
ISO8859-4 | Latin4 (North European)
ISO8859-5 | Cyrillic
ISO8859-6 | Arabic
ISO8859-7 | Greek
ISO8859-8 | Hebrew
ISO8859-9 | Latin5 (Turkish)
ISO8859-10 | Latin6 (Nordic)
ISO8859-11 | Thai
ISO8859-13 | Latin7 (Baltic Rim)
ISO8859-14 | Latin8 (Celtic)
ISO8859-15 | Latin9
ISO8859-16 | Latin10
CP1250 | MS Windows Codepage 1250.
CP1251 | MS Windows Codepage 1251.
CP1252 | MS Windows Codepage 1252.
CP1253 | MS Windows Codepage 1253.
CP1254 | MS Windows Codepage 1254.
CP1255 | MS Windows Codepage 1255.
CP1256 | MS Windows Codepage 1256.
CP1257 | MS Windows Codepage 1257.
CP1258 | MS Windows Codepage 1258.
KOI8-R | Cyrillic character set.
Multi-byte character set encodings
Name | Description
GB-EUC-H | EUC-CN encoding.
GB-EUC-V | Vertical writing version of GB-EUC-H.
GBK-EUC-H | Microsoft Code Page 936 (lfCharSet 0x86) GBK encoding.
GBK-EUC-V | Vertical writing version of GBK-EUC-H.
ETen-B5-H | Microsoft Code Page 950 (lfCharSet 0x88) Big Five character set with ETen extensions.
ETen-B5-V | Vertical writing version of ETen-B5-H.
90ms-RKSJ-H | Microsoft Code Page 932, JIS X 0208 character.
90ms-RKSJ-V | Vertical writing version of 90ms-RKSJ-V.
90msp-RKSJ-H | Microsoft Code Page 932, JIS X 0208 character (proportional).
EUC-H | JIS X 0208 character set, EUC-JP encoding.
EUC-V | Vertical writing version of EUC-H.
KSC-EUC-H | KS X 1001:1992 character set, EUC-KR encoding.
KSC-EUC-V | Vertical writing version of KSC-EUC-V.
KSCms-UHC-H | Microsoft Code Page 949 (lfCharSet 0x81), KS X 1001:1992 character set plus 8822 additional hangul, Unified Hangul Code (UHC) encoding (proportional).
KSCms-UHC-HW-H | Microsoft Code Page 949 (lfCharSet 0x81), KS X 1001:1992 character set plus 8822 additional hangul, Unified Hangul Code (UHC) encoding (fixed width).
KSCms-UHC-HW-V | Vertical writing version of KSCms-UHC-HW-H.
Builtin Fonts
HaruException
Builtin Fonts And Encodings


The HaruException class

(PECL haru >= 0.0.1)

简介

Haru PDF Exception Class.

类摘要

HaruException extends Exception {
/* Inherits */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
Builtin Encodings
HaruDoc
haru


The HaruDoc class

(PECL haru >= 0.0.1)

简介

Haru PDF Document Class.

类摘要

HaruDoc {
/* 方法 */
object addPage ( void )
bool addPageLabel ( int $first_page , int $style , int $first_num [, string $prefix = "" ] )
__construct ( void )
object createOutline ( string $title [, object $parent_outline [, object $encoder ]] )
object getCurrentEncoder ( void )
object getCurrentPage ( void )
object getEncoder ( string $encoding )
object getFont ( string $fontname [, string $encoding ] )
string getInfoAttr ( int $type )
int getPageLayout ( void )
int getPageMode ( void )
int getStreamSize ( void )
object insertPage ( object $page )
object loadJPEG ( string $filename )
object loadPNG ( string $filename [, bool $deferred = false ] )
object loadRaw ( string $filename , int $width , int $height , int $color_space )
string loadTTC ( string $fontfile , int $index [, bool $embed = false ] )
string loadTTF ( string $fontfile [, bool $embed = false ] )
string loadType1 ( string $afmfile [, string $pfmfile ] )
bool output ( void )
string readFromStream ( int $bytes )
bool resetError ( void )
bool resetStream ( void )
bool save ( string $file )
bool saveToStream ( void )
bool setCompressionMode ( int $mode )
bool setCurrentEncoder ( string $encoding )
bool setEncryptionMode ( int $mode [, int $key_len = 5 ] )
bool setInfoAttr ( int $type , string $info )
bool setInfoDateAttr ( int $type , int $year , int $month , int $day , int $hour , int $min , int $sec , string $ind , int $off_hour , int $off_min )
bool setOpenAction ( object $destination )
bool setPageLayout ( int $layout )
bool setPageMode ( int $mode )
bool setPagesConfiguration ( int $page_per_pages )
bool setPassword ( string $owner_password , string $user_password )
bool setPermission ( int $permission )
bool useCNSEncodings ( void )
bool useCNSFonts ( void )
bool useCNTEncodings ( void )
bool useCNTFonts ( void )
bool useJPEncodings ( void )
bool useJPFonts ( void )
bool useKREncodings ( void )
bool useKRFonts ( void )
}

预定义常量

Type | Name | Description
int | HaruDoc::CS_DEVICE_GRAY |
int | HaruDoc::CS_DEVICE_RGB |
int | HaruDoc::CS_DEVICE_CMYK |
int | HaruDoc::CS_CAL_GRAY |
int | HaruDoc::CS_CAL_RGB |
int | HaruDoc::CS_LAB |
int | HaruDoc::CS_ICC_BASED |
int | HaruDoc::CS_SEPARATION |
int | HaruDoc::CS_DEVICE_N |
int | HaruDoc::CS_INDEXED |
int | HaruDoc::CS_PATTERN |
int | HaruDoc::ENABLE_READ |
int | HaruDoc::ENABLE_PRINT |
int | HaruDoc::ENABLE_EDIT_ALL |
int | HaruDoc::ENABLE_COPY |
int | HaruDoc::ENABLE_EDIT |
int | HaruDoc::ENCRYPT_R2 |
int | HaruDoc::ENCRYPT_R3 |
int | HaruDoc::INFO_AUTHOR |
int | HaruDoc::INFO_CREATOR |
int | HaruDoc::INFO_TITLE |
int | HaruDoc::INFO_SUBJECT |
int | HaruDoc::INFO_KEYWORDS |
int | HaruDoc::INFO_CREATION_DATE |
int | HaruDoc::INFO_MOD_DATE |
int | HaruDoc::COMP_NONE |
int | HaruDoc::COMP_TEXT |
int | HaruDoc::COMP_IMAGE |
int | HaruDoc::COMP_METADATA |
int | HaruDoc::COMP_ALL |
int | HaruDoc::PAGE_LAYOUT_SINGLE |
int | HaruDoc::PAGE_LAYOUT_ONE_COLUMN |
int | HaruDoc::PAGE_LAYOUT_TWO_COLUMN_LEFT |
int | HaruDoc::PAGE_LAYOUT_TWO_COLUMN_RIGHT |
int | HaruDoc::PAGE_MODE_USE_NONE |
int | HaruDoc::PAGE_MODE_USE_OUTLINE |
int | HaruDoc::PAGE_MODE_USE_THUMBS |
int | HaruDoc::PAGE_MODE_FULL_SCREEN |

Table of Contents

  • HaruDoc::addPage — Add new page to the document
  • HaruDoc::addPageLabel — Set the numbering style for the specified range of pages
  • HaruDoc::__construct — Construct new HaruDoc instance
  • HaruDoc::createOutline — Create a HaruOutline instance
  • HaruDoc::getCurrentEncoder — Get HaruEncoder currently used in the document
  • HaruDoc::getCurrentPage — Return current page of the document
  • HaruDoc::getEncoder — Get HaruEncoder instance for the specified encoding
  • HaruDoc::getFont — Get HaruFont instance
  • HaruDoc::getInfoAttr — Get current value of the specified document attribute
  • HaruDoc::getPageLayout — Get current page layout
  • HaruDoc::getPageMode — Get current page mode
  • HaruDoc::getStreamSize — Get the size of the temporary stream
  • HaruDoc::insertPage — Insert new page just before the specified page
  • HaruDoc::loadJPEG — Load a JPEG image
  • HaruDoc::loadPNG — Load PNG image and return HaruImage instance
  • HaruDoc::loadRaw — Load a RAW image
  • HaruDoc::loadTTC — Load the font with the specified index from TTC file
  • HaruDoc::loadTTF — Load TTF font file
  • HaruDoc::loadType1 — Load Type1 font
  • HaruDoc::output — Write the document data to the output buffer
  • HaruDoc::readFromStream — Read data from the temporary stream
  • HaruDoc::resetError — Reset error state of the document handle
  • HaruDoc::resetStream — Rewind the temporary stream
  • HaruDoc::save — Save the document into the specified file
  • HaruDoc::saveToStream — Save the document into a temporary stream
  • HaruDoc::setCompressionMode — Set compression mode for the document
  • HaruDoc::setCurrentEncoder — Set the current encoder for the document
  • HaruDoc::setEncryptionMode — Set encryption mode for the document
  • HaruDoc::setInfoAttr — Set the info attribute of the document
  • HaruDoc::setInfoDateAttr — Set the datetime info attributes of the document
  • HaruDoc::setOpenAction — Define which page is shown when the document is opened
  • HaruDoc::setPageLayout — Set how pages should be displayed
  • HaruDoc::setPageMode — Set how the document should be displayed
  • HaruDoc::setPagesConfiguration — Set the number of pages per set of pages
  • HaruDoc::setPassword — Set owner and user passwords for the document
  • HaruDoc::setPermission — Set permissions for the document
  • HaruDoc::useCNSEncodings — Enable Chinese simplified encodings
  • HaruDoc::useCNSFonts — Enable builtin Chinese simplified fonts
  • HaruDoc::useCNTEncodings — Enable Chinese traditional encodings
  • HaruDoc::useCNTFonts — Enable builtin Chinese traditional fonts
  • HaruDoc::useJPEncodings — Enable Japanese encodings
  • HaruDoc::useJPFonts — Enable builtin Japanese fonts
  • HaruDoc::useKREncodings — Enable Korean encodings
  • HaruDoc::useKRFonts — Enable builtin Korean fonts
HaruException
HaruDoc::addPage
haru


Add new page to the document

HaruDoc
HaruDoc::addPageLabel
HaruDoc
PHP Manual

HaruDoc::addPage

(PECL haru >= 0.0.1)

HaruDoc::addPage — Add new page to the document

说明

object HaruDoc::addPage ( void )

Adds a new page to the document.

参数

此函数没有参数。

返回值

Returns a new HaruPage instance.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::insertPage() - Insert new page just before the specified page

HaruDoc
HaruDoc::addPageLabel
HaruDoc


Set the numbering style for the specified range of pages

HaruDoc::addPage
HaruDoc::__construct
HaruDoc
PHP Manual

HaruDoc::addPageLabel

(PECL haru >= 0.0.1)

HaruDoc::addPageLabel — Set the numbering style for the specified range of pages

说明

bool HaruDoc::addPageLabel ( int $first_page , int $style , int $first_num [, string $prefix = "" ] )

Set the numbering style for the specified range of pages.

参数

first_page

The first page included into the labeling range.

style

The numbering style. The following values are allowed:

  • HaruPage::NUM_STYLE_DECIMAL - page label is displayed using decimal numerals.
  • HaruPage::NUM_STYLE_UPPER_ROMAN - page label is displayed using uppercase Roman numerals.
  • HaruPage::NUM_STYLE_LOWER_ROMAN - page label is displayed using lowercase Roman numerals.
  • HaruPage::NUM_STYLE_UPPER_LETTER - page label is displayed using uppercase letters (from A to Z).
  • HaruPage::NUM_STYLE_LOWER_LETTERS - page label is displayed using lowercase letters (from a to z).

first_num

The first page number in this range.

prefix

The prefix for the page label.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruDoc::addPage
HaruDoc::__construct
HaruDoc


Construct new HaruDoc instance

HaruDoc::addPageLabel
HaruDoc::createOutline
HaruDoc
PHP Manual

HaruDoc::__construct

(PECL haru >= 0.0.1)

HaruDoc::__construct — Construct new HaruDoc instance

说明

HaruDoc::__construct ( void )

Constructs new HaruDoc instance.

参数

此函数没有参数。

返回值

没有返回值。

错误／异常

发生错误时抛出 HaruException 异常。

HaruDoc::addPageLabel
HaruDoc::createOutline
HaruDoc


Create a HaruOutline instance

HaruDoc::__construct
HaruDoc::getCurrentEncoder
HaruDoc
PHP Manual

HaruDoc::createOutline

(PECL haru >= 0.0.1)

HaruDoc::createOutline — Create a HaruOutline instance

说明

object HaruDoc::createOutline ( string $title [, object $parent_outline [, object $encoder ]] )

Create a HaruOutline instance.

参数

title

The caption of new outline object.

parent_outline

A valid HaruOutline instance or NULL.

encoder

A valid HaruEncoder instance or NULL.

返回值

Returns a new HaruOutline instance.

错误／异常

发生错误时抛出 HaruException 异常。

HaruDoc::__construct
HaruDoc::getCurrentEncoder
HaruDoc


Get HaruEncoder currently used in the document

HaruDoc::createOutline
HaruDoc::getCurrentPage
HaruDoc
PHP Manual

HaruDoc::getCurrentEncoder

(PECL haru >= 0.0.1)

HaruDoc::getCurrentEncoder — Get HaruEncoder currently used in the document

说明

object HaruDoc::getCurrentEncoder ( void )

Get the HaruEncoder currently used in the document.

参数

此函数没有参数。

返回值

Returns HaruEncoder currently used in the document or FALSE if encoder is not set.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::setCurrentEncoder() - Set the current encoder for the document

HaruDoc::createOutline
HaruDoc::getCurrentPage
HaruDoc


Return current page of the document

HaruDoc::getCurrentEncoder
HaruDoc::getEncoder
HaruDoc
PHP Manual

HaruDoc::getCurrentPage

(PECL haru >= 0.0.1)

HaruDoc::getCurrentPage — Return current page of the document

说明

object HaruDoc::getCurrentPage ( void )

Get current page of the document.

参数

此函数没有参数。

返回值

Returns HaruPage instance on success or FALSE if there is no current page at the moment.

错误／异常

发生错误时抛出 HaruException 异常。

HaruDoc::getCurrentEncoder
HaruDoc::getEncoder
HaruDoc


Get HaruEncoder instance for the specified encoding

HaruDoc::getCurrentPage
HaruDoc::getFont
HaruDoc
PHP Manual

HaruDoc::getEncoder

(PECL haru >= 0.0.1)

HaruDoc::getEncoder — Get HaruEncoder instance for the specified encoding

说明

object HaruDoc::getEncoder ( string $encoding )

Get the HaruEncoder instance for the specified encoding.

参数

encoding

The encoding name. See Builtin Encodings for the list of allowed values.

返回值

Returns a HaruEncoder instance for the specified encoding.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::setCurrentEncoder() - Set the current encoder for the document
  • HaruDoc::getCurrentEncoder() - Get HaruEncoder currently used in the document

HaruDoc::getCurrentPage
HaruDoc::getFont
HaruDoc


Get HaruFont instance

HaruDoc::getEncoder
HaruDoc::getInfoAttr
HaruDoc
PHP Manual

HaruDoc::getFont

(PECL haru >= 0.0.1)

HaruDoc::getFont — Get HaruFont instance

说明

object HaruDoc::getFont ( string $fontname [, string $encoding ] )

Get a HaruFont instance.

参数

fontname

The name of the font. See Builtin Fonts for the list of builtin fonts. You can also use the name of a font loaded via HaruDoc::loadTTF(), HaruDoc::loadTTC() and HaruDoc::loadType1().

encoding

The encoding to use. See Builtin Encodings for the list of supported encodings.

返回值

Returns a HaruFont instance with the specified fontname and encoding.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::setFontAndSize() - Set font and fontsize for the page
  • HaruPage::setCurrentFont()

HaruDoc::getEncoder
HaruDoc::getInfoAttr
HaruDoc


Get current value of the specified document attribute

HaruDoc::getFont
HaruDoc::getPageLayout
HaruDoc
PHP Manual

HaruDoc::getInfoAttr

(PECL haru >= 0.0.1)

HaruDoc::getInfoAttr — Get current value of the specified document attribute

说明

string HaruDoc::getInfoAttr ( int $type )

Get the current value of the specified document attribute.

参数

type

The type of the attribute. The following values are available:

  • HaruDoc::INFO_AUTHOR
  • HaruDoc::INFO_CREATOR
  • HaruDoc::INFO_TITLE
  • HaruDoc::INFO_SUBJECT
  • HaruDoc::INFO_KEYWORDS
  • HaruDoc::INFO_CREATION_DATE
  • HaruDoc::INFO_MOD_DATE

返回值

Returns the string value of the specified document attribute.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::setInfoAttr() - Set the info attribute of the document
  • HaruDoc::setInfoDateAttr() - Set the datetime info attributes of the document

HaruDoc::getFont
HaruDoc::getPageLayout
HaruDoc


Get current page layout

HaruDoc::getInfoAttr
HaruDoc::getPageMode
HaruDoc
PHP Manual

HaruDoc::getPageLayout

(PECL haru >= 0.0.1)

HaruDoc::getPageLayout — Get current page layout

说明

int HaruDoc::getPageLayout ( void )

Get the current page layout. See HaruDoc::setPageLayout() for the list of possible values.

参数

此函数没有参数。

返回值

Returns the page layout currently set in the document or FALSE if page layout was not set. See HaruDoc::setPageLayout() for the list of possible values.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::setPageLayout() - Set how pages should be displayed

HaruDoc::getInfoAttr
HaruDoc::getPageMode
HaruDoc


Get current page mode

HaruDoc::getPageLayout
HaruDoc::getStreamSize
HaruDoc
PHP Manual

HaruDoc::getPageMode

(PECL haru >= 0.0.1)

HaruDoc::getPageMode — Get current page mode

说明

int HaruDoc::getPageMode ( void )

Get the current page mode. See HaruDoc::setPageMode() for the list of possible values.

参数

此函数没有参数。

返回值

Returns the page mode currently set in the document. See HaruDoc::setPageMode() for the list of possible values.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::setPageMode() - Set how the document should be displayed

HaruDoc::getPageLayout
HaruDoc::getStreamSize
HaruDoc


Get the size of the temporary stream

HaruDoc::getPageMode
HaruDoc::insertPage
HaruDoc
PHP Manual

HaruDoc::getStreamSize

(PECL haru >= 0.0.1)

HaruDoc::getStreamSize — Get the size of the temporary stream

说明

int HaruDoc::getStreamSize ( void )

Get the size of the temporary stream.

参数

此函数没有参数。

返回值

Returns the size of the data in the temporary stream of the document. The size is zero if the document was not saved to the temporary stream.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::saveToStream() - Save the document into a temporary stream
  • HaruDoc::resetStream() - Rewind the temporary stream
  • HaruDoc::readFromStream() - Read data from the temporary stream

HaruDoc::getPageMode
HaruDoc::insertPage
HaruDoc


Insert new page just before the specified page

HaruDoc::getStreamSize
HaruDoc::loadJPEG
HaruDoc
PHP Manual

HaruDoc::insertPage

(PECL haru >= 0.0.1)

HaruDoc::insertPage — Insert new page just before the specified page

说明

object HaruDoc::insertPage ( object $page )

Creates a new page and inserts just before the specified page.

参数

page

A valid HaruPage instance.

返回值

Returns a new HaruPage instance.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::addPage() - Add new page to the document

HaruDoc::getStreamSize
HaruDoc::loadJPEG
HaruDoc


Load a JPEG image

HaruDoc::insertPage
HaruDoc::loadPNG
HaruDoc
PHP Manual

HaruDoc::loadJPEG

(PECL haru >= 0.0.1)

HaruDoc::loadJPEG — Load a JPEG image

说明

object HaruDoc::loadJPEG ( string $filename )

Loads the specified JPEG image.

参数

filename

A valid JPEG image file.

返回值

Returns a new HaruImage instance.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::loadPNG() - Load PNG image and return HaruImage instance
  • HaruDoc::loadRAW() - Load a RAW image

HaruDoc::insertPage
HaruDoc::loadPNG
HaruDoc


Load PNG image and return HaruImage instance

HaruDoc::loadJPEG
HaruDoc::loadRaw
HaruDoc
PHP Manual

HaruDoc::loadPNG

(PECL haru >= 0.0.1)

HaruDoc::loadPNG — Load PNG image and return HaruImage instance

说明

object HaruDoc::loadPNG ( string $filename [, bool $deferred = false ] )

Loads a PNG image.

Libharu might be built without libpng support, in this case each call to this function would result in exception.

参数

filename

The name of a PNG image file.

deferred

Do not load data immediately. You can set deferred parameter to TRUE for deferred data loading, in this case only size and color are loaded immediately.

返回值

Returns a HaruImage instance.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::loadJPEG() - Load a JPEG image
  • HaruDoc::loadRAW() - Load a RAW image

HaruDoc::loadJPEG
HaruDoc::loadRaw
HaruDoc


Load a RAW image

HaruDoc::loadPNG
HaruDoc::loadTTC
HaruDoc
PHP Manual

HaruDoc::loadRaw

(PECL haru >= 0.0.1)

HaruDoc::loadRaw — Load a RAW image

说明

object HaruDoc::loadRaw ( string $filename , int $width , int $height , int $color_space )

Loads a RAW image.

参数

filename

The name of a RAW image file.

width

The width of the image.

height

The height of the image.

color_space

The color space of the image. Can be one of the following values:

  • HaruDoc::CS_DEVICE_GRAY
  • HaruDoc::CS_DEVICE_RGB
  • HaruDoc::CS_DEVICE_CMYK

返回值

Returns a HaruImage instance.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::loadJPEG() - Load a JPEG image
  • HaruDoc::loadPNG() - Load PNG image and return HaruImage instance

HaruDoc::loadPNG
HaruDoc::loadTTC
HaruDoc


Load the font with the specified index from TTC file

HaruDoc::loadRaw
HaruDoc::loadTTF
HaruDoc
PHP Manual

HaruDoc::loadTTC

(PECL haru >= 0.0.1)

HaruDoc::loadTTC — Load the font with the specified index from TTC file

说明

string HaruDoc::loadTTC ( string $fontfile , int $index [, bool $embed = false ] )

Loads the TrueType font with the specified index from a TrueType collection file.

参数

fontfile

The TrueType collection file.

index

The index of the font in the collection file.

embed

When set to TRUE, the glyph data of the font is embedded into the PDF file, otherwise only the matrix data is included.

返回值

Returns the name of the loaded font on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::loadTTF() - Load TTF font file
  • HaruDoc::loadType1() - Load Type1 font

HaruDoc::loadRaw
HaruDoc::loadTTF
HaruDoc


Load TTF font file

HaruDoc::loadTTC
HaruDoc::loadType1
HaruDoc
PHP Manual

HaruDoc::loadTTF

(PECL haru >= 0.0.1)

HaruDoc::loadTTF — Load TTF font file

说明

string HaruDoc::loadTTF ( string $fontfile [, bool $embed = false ] )

Loads the given TTF file and (optionally) embed its data into the document.

参数

fontfile

The TTF file to load.

embed

When set to TRUE, the glyph data of the font is embedded into the PDF file, otherwise only the matrix data is included.

返回值

Returns the name of the loaded font on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::loadTTC() - Load the font with the specified index from TTC file
  • HaruDoc::loadType1() - Load Type1 font

HaruDoc::loadTTC
HaruDoc::loadType1
HaruDoc


Load Type1 font

HaruDoc::loadTTF
HaruDoc::output
HaruDoc
PHP Manual

HaruDoc::loadType1

(PECL haru >= 0.0.1)

HaruDoc::loadType1 — Load Type1 font

说明

string HaruDoc::loadType1 ( string $afmfile [, string $pfmfile ] )

Loads Type1 font from the given file and registers it in the PDF document.

参数

afmfile

Path to an AFM file.

pfmfile

Path to a PFA/PFB file, optional. If it's not set only the glyph data of the font is embedded into the PDF document.

返回值

Returns the name of the loaded font on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::loadTTC() - Load the font with the specified index from TTC file
  • HaruDoc::loadTTF() - Load TTF font file

HaruDoc::loadTTF
HaruDoc::output
HaruDoc


Write the document data to the output buffer

HaruDoc::loadType1
HaruDoc::readFromStream
HaruDoc
PHP Manual

HaruDoc::output

(PECL haru >= 0.0.1)

HaruDoc::output — Write the document data to the output buffer

说明

bool HaruDoc::output ( void )

Writes the document data into standard output.

参数

此函数没有参数。

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::save() - Save the document into the specified file

HaruDoc::loadType1
HaruDoc::readFromStream
HaruDoc


Read data from the temporary stream

HaruDoc::output
HaruDoc::resetError
HaruDoc
PHP Manual

HaruDoc::readFromStream

(PECL haru >= 0.0.1)

HaruDoc::readFromStream — Read data from the temporary stream

说明

string HaruDoc::readFromStream ( int $bytes )

Read data from the temporary stream.

参数

bytes

The bytes parameter specifies how many bytes to read, though the stream may contain less bytes than requested.

返回值

Returns data from the temporary stream.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::saveToStream() - Save the document into a temporary stream
  • HaruDoc::resetStream() - Rewind the temporary stream
  • HaruDoc::getStreamSize() - Get the size of the temporary stream

HaruDoc::output
HaruDoc::resetError
HaruDoc


Reset error state of the document handle

HaruDoc::readFromStream
HaruDoc::resetStream
HaruDoc
PHP Manual

HaruDoc::resetError

(PECL haru >= 0.0.1)

HaruDoc::resetError — Reset error state of the document handle

说明

bool HaruDoc::resetError ( void )

Once an error code is set, most of the operations, including I/O processing functions cannot be performed. In case if you want to continue after the cause of the error has been fixed, you have to invoke this function in order to reset the document error state.

参数

此函数没有参数。

返回值

Always succeeds and returns TRUE.

HaruDoc::readFromStream
HaruDoc::resetStream
HaruDoc


Rewind the temporary stream

HaruDoc::resetError
HaruDoc::save
HaruDoc
PHP Manual

HaruDoc::resetStream

(PECL haru >= 0.0.1)

HaruDoc::resetStream — Rewind the temporary stream

说明

bool HaruDoc::resetStream ( void )

Rewinds the temporary stream of the document.

参数

此函数没有参数。

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::saveToStream() - Save the document into a temporary stream
  • HaruDoc::getStreamSize() - Get the size of the temporary stream
  • HaruDoc::readFromStream() - Read data from the temporary stream

HaruDoc::resetError
HaruDoc::save
HaruDoc


Save the document into the specified file

HaruDoc::resetStream
HaruDoc::saveToStream
HaruDoc
PHP Manual

HaruDoc::save

(PECL haru >= 0.0.1)

HaruDoc::save — Save the document into the specified file

说明

bool HaruDoc::save ( string $file )

Saves the document into the specified file.

参数

file

The file to save the document to.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::output() - Write the document data to the output buffer

HaruDoc::resetStream
HaruDoc::saveToStream
HaruDoc


Save the document into a temporary stream

HaruDoc::save
HaruDoc::setCompressionMode
HaruDoc
PHP Manual

HaruDoc::saveToStream

(PECL haru >= 0.0.1)

HaruDoc::saveToStream — Save the document into a temporary stream

说明

bool HaruDoc::saveToStream ( void )

Saves the document data into a temporary stream.

参数

此函数没有参数。

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::resetStream() - Rewind the temporary stream
  • HaruDoc::getStreamSize() - Get the size of the temporary stream
  • HaruDoc::readFromStream() - Read data from the temporary stream

HaruDoc::save
HaruDoc::setCompressionMode
HaruDoc


Set compression mode for the document

HaruDoc::saveToStream
HaruDoc::setCurrentEncoder
HaruDoc
PHP Manual

HaruDoc::setCompressionMode

(PECL haru >= 0.0.1)

HaruDoc::setCompressionMode — Set compression mode for the document

说明

bool HaruDoc::setCompressionMode ( int $mode )

Defines compression mode for the document. In case when libharu was compiled without Zlib support this function will always throw HaruException.

参数

mode

The compression mode to use. The value is a combination of the following flags:

  • HaruDoc::COMP_NONE - all contents is not compressed.
  • HaruDoc::COMP_TEXT - compress the text data.
  • HaruDoc::COMP_IMAGE - compress the image data.
  • HaruDoc::COMP_METADATA - compress other data (fonts, cmaps).
  • HaruDoc::COMP_ALL - compress all data.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruDoc::saveToStream
HaruDoc::setCurrentEncoder
HaruDoc


Set the current encoder for the document

HaruDoc::setCompressionMode
HaruDoc::setEncryptionMode
HaruDoc
PHP Manual

HaruDoc::setCurrentEncoder

(PECL haru >= 0.0.1)

HaruDoc::setCurrentEncoder — Set the current encoder for the document

说明

bool HaruDoc::setCurrentEncoder ( string $encoding )

Defines the encoder currently used in the document.

参数

encoding

The name of the encoding to use. See Builtin Encodings for the list of allowed values.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruDoc::setCompressionMode
HaruDoc::setEncryptionMode
HaruDoc


Set encryption mode for the document

HaruDoc::setCurrentEncoder
HaruDoc::setInfoAttr
HaruDoc
PHP Manual

HaruDoc::setEncryptionMode

(PECL haru >= 0.0.1)

HaruDoc::setEncryptionMode — Set encryption mode for the document

说明

bool HaruDoc::setEncryptionMode ( int $mode [, int $key_len = 5 ] )

Defines encryption mode for the document. The encryption mode cannot be set before setting the password.

参数

mode

The encryption mode to use. Can be one of the following:

  • HaruDoc::ENCRYPT_R2 - use "revision2" algorithm.
  • HaruDoc::ENCRYPT_R3 - use "revision3" algorithm. Using this value bumps the version of PDF to 1.4.

key_len

The encryption key length in bytes. This parameter is optional and used only when mode is HaruDoc::ENCRYPT_R3. The default value is 5 (40bit).

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::setPassword() - Set owner and user passwords for the document
  • HaruDoc::setPermission() - Set permissions for the document

HaruDoc::setCurrentEncoder
HaruDoc::setInfoAttr
HaruDoc


Set the info attribute of the document

HaruDoc::setEncryptionMode
HaruDoc::setInfoDateAttr
HaruDoc
PHP Manual

HaruDoc::setInfoAttr

(PECL haru >= 0.0.1)

HaruDoc::setInfoAttr — Set the info attribute of the document

说明

bool HaruDoc::setInfoAttr ( int $type , string $info )

Defines an info attribute. Uses the current encoding of the document.

参数

type

The type of the attribute. Can be one of the following:

  • HaruDoc::INFO_AUTHOR
  • HaruDoc::INFO_CREATOR
  • HaruDoc::INFO_TITLE
  • HaruDoc::INFO_SUBJECT
  • HaruDoc::INFO_KEYWORDS

info

The value of the attribute.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::setInfoDateAttr() - Set the datetime info attributes of the document

HaruDoc::setEncryptionMode
HaruDoc::setInfoDateAttr
HaruDoc


Set the datetime info attributes of the document

HaruDoc::setInfoAttr
HaruDoc::setOpenAction
HaruDoc
PHP Manual

HaruDoc::setInfoDateAttr

(PECL haru >= 0.0.1)

HaruDoc::setInfoDateAttr — Set the datetime info attributes of the document

说明

bool HaruDoc::setInfoDateAttr ( int $type , int $year , int $month , int $day , int $hour , int $min , int $sec , string $ind , int $off_hour , int $off_min )

Sets the datetime info attributes of the document.

参数

type

The type of the attribute. Can be one of the following:

  • HaruDoc::INFO_CREATION_DATE
  • HaruDoc::INFO_MOD_DATE

year

month

Between 1 and 12.

day

Between 1 and 31, 30, 29 or 28 (different for each month).

hour

Between 0 and 23.

min

Between 0 and 59.

sec

Between 0 and 59.

ind

The timezone relation to UTC, can be "", " ", "+", "-" and "Z".

off_hour

If ind is not " " or "", values between 0 and 23 are valid. Otherwise, this parameter is ignored.

off_min

If ind is not " " or "", values between 0 and 59 are valid. Otherwise, this parameter is ignored.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::setInfoAttr() - Set the info attribute of the document

HaruDoc::setInfoAttr
HaruDoc::setOpenAction
HaruDoc


Define which page is shown when the document is opened

HaruDoc::setInfoDateAttr
HaruDoc::setPageLayout
HaruDoc
PHP Manual

HaruDoc::setOpenAction

(PECL haru >= 0.0.1)

HaruDoc::setOpenAction — Define which page is shown when the document is opened

说明

bool HaruDoc::setOpenAction ( object $destination )

Defines which page should be shown when the document is opened.

参数

destination

A valid HaruDestination instance.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruDoc::setInfoDateAttr
HaruDoc::setPageLayout
HaruDoc


Set how pages should be displayed

HaruDoc::setOpenAction
HaruDoc::setPageMode
HaruDoc
PHP Manual

HaruDoc::setPageLayout

(PECL haru >= 0.0.1)

HaruDoc::setPageLayout — Set how pages should be displayed

说明

bool HaruDoc::setPageLayout ( int $layout )

Defines how pages should be displayed.

参数

layout

The following values are accepted:

  • HaruDoc::PAGE_LAYOUT_SINGLE - only one page is displayed.
  • HaruDoc::PAGE_LAYOUT_ONE_COLUMN - display the pages in one column.
  • HaruDoc::PAGE_LAYOUT_TWO_COLUMN_LEFT - display pages in two columns, first page left.
  • HaruDoc::PAGE_LAYOUT_TWO_COLUMN_RIGHT - display pages in two columns, first page right.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::getPageLayout() - Get current page layout

HaruDoc::setOpenAction
HaruDoc::setPageMode
HaruDoc


Set how the document should be displayed

HaruDoc::setPageLayout
HaruDoc::setPagesConfiguration
HaruDoc
PHP Manual

HaruDoc::setPageMode

(PECL haru >= 0.0.1)

HaruDoc::setPageMode — Set how the document should be displayed

说明

bool HaruDoc::setPageMode ( int $mode )

Defines how the document should be displayed.

参数

mode

The following values are accepted:

  • HaruDoc::PAGE_MODE_USE_NONE - display the document with neither outline nor thumbnail.
  • HaruDoc::PAGE_MODE_USE_OUTLINE - display the document with outline pane.
  • HaruDoc::PAGE_MODE_USE_THUMBS - display the document with thumbnail pane.
  • HaruDoc::PAGE_MODE_FULL_SCREEN - display the document with full screen mode.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::getPageMode() - Get current page mode

HaruDoc::setPageLayout
HaruDoc::setPagesConfiguration
HaruDoc


Set the number of pages per set of pages

HaruDoc::setPageMode
HaruDoc::setPassword
HaruDoc
PHP Manual

HaruDoc::setPagesConfiguration

(PECL haru >= 0.0.1)

HaruDoc::setPagesConfiguration — Set the number of pages per set of pages

说明

bool HaruDoc::setPagesConfiguration ( int $page_per_pages )

By default the document has one pages object as a root for all pages. All page objects are create as branches of this object. One pages object can contain only 8191, therefore the maximum number of pages per document is 8191. But you can change that fact by setting page_per_pages parameter, so that the root pages object contains 8191 more pages (not page) objects, which in turn contain 8191 pages each. So the maximum number of pages in the document becomes 8191*page_per_pages.

参数

page_per_pages

The numbers of pages that a pages object can contain.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruDoc::setPageMode
HaruDoc::setPassword
HaruDoc


Set owner and user passwords for the document

HaruDoc::setPagesConfiguration
HaruDoc::setPermission
HaruDoc
PHP Manual

HaruDoc::setPassword

(PECL haru >= 0.0.1)

HaruDoc::setPassword — Set owner and user passwords for the document

说明

bool HaruDoc::setPassword ( string $owner_password , string $user_password )

Defines owner and user passwords for the document. Setting the passwords makes the document contents encrypted.

参数

owner_password

The password of the owner, which can change permissions of the document. Empty password is not accepted. Owner's password cannot be the same as the user's password.

user_password

The password of the user. Can be empty.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::setEncryptionMode() - Set encryption mode for the document
  • HaruDoc::setPermission() - Set permissions for the document

HaruDoc::setPagesConfiguration
HaruDoc::setPermission
HaruDoc


Set permissions for the document

HaruDoc::setPassword
HaruDoc::useCNSEncodings
HaruDoc
PHP Manual

HaruDoc::setPermission

(PECL haru >= 0.0.1)

HaruDoc::setPermission — Set permissions for the document

说明

bool HaruDoc::setPermission ( int $permission )

Defines permissions for the document.

参数

permission

The values is a combination of these flags:

  • HaruDoc::ENABLE_READ - user can read the document.
  • HaruDoc::ENABLE_PRINT - user can print the document.
  • HaruDoc::ENABLE_EDIT_ALL - user can edit the contents of the document other than annotations and form fields.
  • HaruDoc::ENABLE_COPY - user can copy the text and the graphics of the document.
  • HaruDoc::ENABLE_EDIT - user can add or modify the annotations and form fields of the document.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::setPassword() - Set owner and user passwords for the document
  • HaruDoc::setEncryptionMode() - Set encryption mode for the document

HaruDoc::setPassword
HaruDoc::useCNSEncodings
HaruDoc


Enable Chinese simplified encodings

HaruDoc::setPermission
HaruDoc::useCNSFonts
HaruDoc
PHP Manual

HaruDoc::useCNSEncodings

(PECL haru >= 0.0.1)

HaruDoc::useCNSEncodings — Enable Chinese simplified encodings

说明

bool HaruDoc::useCNSEncodings ( void )

Enables Chinese simplified encodings.

参数

此函数没有参数。

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::useCNSFonts() - Enable builtin Chinese simplified fonts

HaruDoc::setPermission
HaruDoc::useCNSFonts
HaruDoc


Enable builtin Chinese simplified fonts

HaruDoc::useCNSEncodings
HaruDoc::useCNTEncodings
HaruDoc
PHP Manual

HaruDoc::useCNSFonts

(PECL haru >= 0.0.1)

HaruDoc::useCNSFonts — Enable builtin Chinese simplified fonts

说明

bool HaruDoc::useCNSFonts ( void )

Enables builtin Chinese simplified fonts.

参数

此函数没有参数。

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::useCNSEncodings() - Enable Chinese simplified encodings

HaruDoc::useCNSEncodings
HaruDoc::useCNTEncodings
HaruDoc


Enable Chinese traditional encodings

HaruDoc::useCNSFonts
HaruDoc::useCNTFonts
HaruDoc
PHP Manual

HaruDoc::useCNTEncodings

(PECL haru >= 0.0.1)

HaruDoc::useCNTEncodings — Enable Chinese traditional encodings

说明

bool HaruDoc::useCNTEncodings ( void )

Enables Chinese traditional encodings.

参数

此函数没有参数。

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::useCNTFonts() - Enable builtin Chinese traditional fonts

HaruDoc::useCNSFonts
HaruDoc::useCNTFonts
HaruDoc


Enable builtin Chinese traditional fonts

HaruDoc::useCNTEncodings
HaruDoc::useJPEncodings
HaruDoc
PHP Manual

HaruDoc::useCNTFonts

(PECL haru >= 0.0.1)

HaruDoc::useCNTFonts — Enable builtin Chinese traditional fonts

说明

bool HaruDoc::useCNTFonts ( void )

Enables builtin Chinese traditional fonts.

参数

此函数没有参数。

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::useCNTEncodings() - Enable Chinese traditional encodings

HaruDoc::useCNTEncodings
HaruDoc::useJPEncodings
HaruDoc


Enable Japanese encodings

HaruDoc::useCNTFonts
HaruDoc::useJPFonts
HaruDoc
PHP Manual

HaruDoc::useJPEncodings

(PECL haru >= 0.0.1)

HaruDoc::useJPEncodings — Enable Japanese encodings

说明

bool HaruDoc::useJPEncodings ( void )

Enables Japanese encodings.

参数

此函数没有参数。

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::useJPFonts() - Enable builtin Japanese fonts

HaruDoc::useCNTFonts
HaruDoc::useJPFonts
HaruDoc


Enable builtin Japanese fonts

HaruDoc::useJPEncodings
HaruDoc::useKREncodings
HaruDoc
PHP Manual

HaruDoc::useJPFonts

(PECL haru >= 0.0.1)

HaruDoc::useJPFonts — Enable builtin Japanese fonts

说明

bool HaruDoc::useJPFonts ( void )

Enables builtin Japanese fonts.

参数

此函数没有参数。

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::useJPEncodings() - Enable Japanese encodings

HaruDoc::useJPEncodings
HaruDoc::useKREncodings
HaruDoc


Enable Korean encodings

HaruDoc::useJPFonts
HaruDoc::useKRFonts
HaruDoc
PHP Manual

HaruDoc::useKREncodings

(PECL haru >= 0.0.1)

HaruDoc::useKREncodings — Enable Korean encodings

说明

bool HaruDoc::useKREncodings ( void )

Enables Korean encodings.

参数

此函数没有参数。

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::useKRFonts() - Enable builtin Korean fonts

HaruDoc::useJPFonts
HaruDoc::useKRFonts
HaruDoc


Enable builtin Korean fonts

HaruDoc::useKREncodings
HaruPage
HaruDoc
PHP Manual

HaruDoc::useKRFonts

(PECL haru >= 0.0.1)

HaruDoc::useKRFonts — Enable builtin Korean fonts

说明

bool HaruDoc::useKRFonts ( void )

Enables builtin Korean fonts.

参数

此函数没有参数。

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::useKREncodings() - Enable Korean encodings

HaruDoc::useKREncodings
HaruPage
HaruDoc


The HaruPage class

(PECL haru >= 0.0.1)

简介

Haru PDF Page Class.

类摘要

HaruPage {
/* 方法 */
bool arc ( float $x , float $y , float $ray , float $ang1 , float $ang2 )
bool beginText ( void )
bool circle ( float $x , float $y , float $ray )
bool closePath ( void )
bool concat ( float $a , float $b , float $c , float $d , float $x , float $y )
object createDestination ( void )
object createLinkAnnotation ( array $rectangle , object $destination )
object createTextAnnotation ( array $rectangle , string $text [, object $encoder ] )
object createURLAnnotation ( array $rectangle , string $url )
bool curveTo2 ( float $x2 , float $y2 , float $x3 , float $y3 )
bool curveTo3 ( float $x1 , float $y1 , float $x3 , float $y3 )
bool curveTo ( float $x1 , float $y1 , float $x2 , float $y2 , float $x3 , float $y3 )
bool drawImage ( object $image , float $x , float $y , float $width , float $height )
bool ellipse ( float $x , float $y , float $xray , float $yray )
bool endPath ( void )
bool endText ( void )
bool eofill ( void )
bool eoFillStroke ([ bool $close_path = false ] )
bool fill ( void )
bool fillStroke ([ bool $close_path = false ] )
float getCharSpace ( void )
array getCMYKFill ( void )
array getCMYKStroke ( void )
object getCurrentFont ( void )
float getCurrentFontSize ( void )
array getCurrentPos ( void )
array getCurrentTextPos ( void )
array getDash ( void )
int getFillingColorSpace ( void )
float getFlatness ( void )
int getGMode ( void )
float getGrayFill ( void )
float getGrayStroke ( void )
float getHeight ( void )
float getHorizontalScaling ( void )
int getLineCap ( void )
int getLineJoin ( void )
float getLineWidth ( void )
float getMiterLimit ( void )
array getRGBFill ( void )
array getRGBStroke ( void )
int getStrokingColorSpace ( void )
float getTextLeading ( void )
array getTextMatrix ( void )
int getTextRenderingMode ( void )
float getTextRise ( void )
float getTextWidth ( string $text )
array getTransMatrix ( void )
float getWidth ( void )
float getWordSpace ( void )
bool lineTo ( float $x , float $y )
int measureText ( string $text , float $width [, bool $wordwrap = false ] )
bool moveTextPos ( float $x , float $y [, bool $set_leading = false ] )
bool moveTo ( float $x , float $y )
bool moveToNextLine ( void )
bool rectangle ( float $x , float $y , float $width , float $height )
bool setCharSpace ( float $char_space )
bool setCMYKFill ( float $c , float $m , float $y , float $k )
bool setCMYKStroke ( float $c , float $m , float $y , float $k )
bool setDash ( array $pattern , int $phase )
bool setFlatness ( float $flatness )
bool setFontAndSize ( object $font , float $size )
bool setGrayFill ( float $value )
bool setGrayStroke ( float $value )
bool setHeight ( float $height )
bool setHorizontalScaling ( float $scaling )
bool setLineCap ( int $cap )
bool setLineJoin ( int $join )
bool setLineWidth ( float $width )
bool setMiterLimit ( float $limit )
bool setRGBFill ( float $r , float $g , float $b )
bool setRGBStroke ( float $r , float $g , float $b )
bool setRotate ( int $angle )
bool setSize ( int $size , int $direction )
bool setSlideShow ( int $type , float $disp_time , float $trans_time )
bool setTextLeading ( float $text_leading )
bool setTextMatrix ( float $a , float $b , float $c , float $d , float $x , float $y )
bool setTextRenderingMode ( int $mode )
bool setTextRise ( float $rise )
bool setWidth ( float $width )
bool setWordSpace ( float $word_space )
bool showText ( string $text )
bool showTextNextLine ( string $text [, float $word_space = 0 [, float $char_space = 0 ]] )
bool stroke ([ bool $close_path = false ] )
bool textOut ( float $x , float $y , string $text )
bool textRect ( float $left , float $top , float $right , float $bottom , string $text [, int $align = HaruPage::TALIGN_LEFT ] )
}

预定义常量

Type | Name | Description
int | HaruPage::GMODE_PAGE_DESCRIPTION |
int | HaruPage::GMODE_TEXT_OBJECT |
int | HaruPage::GMODE_PATH_OBJECT |
int | HaruPage::GMODE_CLIPPING_PATH |
int | HaruPage::GMODE_SHADING |
int | HaruPage::GMODE_INLINE_IMAGE |
int | HaruPage::GMODE_EXTERNAL_OBJECT |
int | HaruPage::BUTT_END |
int | HaruPage::ROUND_END |
int | HaruPage::PROJECTING_SCUARE_END |
int | HaruPage::MITER_JOIN |
int | HaruPage::ROUND_JOIN |
int | HaruPage::BEVEL_JOIN |
int | HaruPage::FILL |
int | HaruPage::STROKE |
int | HaruPage::FILL_THEN_STROKE |
int | HaruPage::INVISIBLE |
int | HaruPage::FILL_CLIPPING |
int | HaruPage::STROKE_CLIPPING |
int | HaruPage::FILL_STROKE_CLIPPING |
int | HaruPage::CLIPPING |
int | HaruPage::TALIGN_LEFT |
int | HaruPage::TALIGN_RIGHT |
int | HaruPage::TALIGN_CENTER |
int | HaruPage::TALIGN_JUSTIFY |
int | HaruPage::SIZE_LETTER |
int | HaruPage::SIZE_LEGAL |
int | HaruPage::SIZE_A3 |
int | HaruPage::SIZE_A4 |
int | HaruPage::SIZE_A5 |
int | HaruPage::SIZE_B4 |
int | HaruPage::SIZE_B5 |
int | HaruPage::SIZE_EXECUTIVE |
int | HaruPage::SIZE_US4x6 |
int | HaruPage::SIZE_US4x8 |
int | HaruPage::SIZE_US5x7 |
int | HaruPage::SIZE_COMM10 |
int | HaruPage::PORTRAIT |
int | HaruPage::LANDSCAPE |
int | HaruPage::TS_WIPE_LIGHT |
int | HaruPage::TS_WIPE_UP |
int | HaruPage::TS_WIPE_LEFT |
int | HaruPage::TS_WIPE_DOWN |
int | HaruPage::TS_BARN_DOORS_HORIZONTAL_OUT |
int | HaruPage::TS_BARN_DOORS_HORIZONTAL_IN |
int | HaruPage::TS_BARN_DOORS_VERTICAL_OUT |
int | HaruPage::TS_BARN_DOORS_VERTICAL_IN |
int | HaruPage::TS_BOX_OUT |
int | HaruPage::TS_BOX_IN |
int | HaruPage::TS_BLINDS_HORIZONTAL |
int | HaruPage::TS_BLINDS_VERTICAL |
int | HaruPage::TS_DISSOLVE |
int | HaruPage::TS_GLITTER_RIGHT |
int | HaruPage::TS_GLITTER_DOWN |
int | HaruPage::TS_GLITTER_TOP_LEFT_TO_BOTTOM_RIGHT |
int | HaruPage::TS_REPLACE |
int | HaruPage::NUM_STYLE_DECIMAL |
int | HaruPage::NUM_STYLE_UPPER_ROMAN |
int | HaruPage::NUM_STYLE_LOWER_ROMAN |
int | HaruPage::NUM_STYLE_UPPER_LETTERS |
int | HaruPage::NUM_STYLE_LOWER_LETTERS |

Table of Contents

  • HaruPage::arc — Append an arc to the current path
  • HaruPage::beginText — Begin a text object and set the current text position to (0,0)
  • HaruPage::circle — Append a circle to the current path
  • HaruPage::closePath — Append a straight line from the current point to the start point of the path
  • HaruPage::concat — Concatenate current transformation matrix of the page and the specified matrix
  • HaruPage::createDestination — Create new HaruDestination instance
  • HaruPage::createLinkAnnotation — Create new HaruAnnotation instance
  • HaruPage::createTextAnnotation — Create new HaruAnnotation instance
  • HaruPage::createURLAnnotation — Create and return new HaruAnnotation instance
  • HaruPage::curveTo2 — Append a Bezier curve to the current path
  • HaruPage::curveTo3 — Append a Bezier curve to the current path
  • HaruPage::curveTo — Append a Bezier curve to the current path
  • HaruPage::drawImage — Show image at the page
  • HaruPage::ellipse — Append an ellipse to the current path
  • HaruPage::endPath — End current path object without filling and painting operations
  • HaruPage::endText — End current text object
  • HaruPage::eofill — Fill current path using even-odd rule
  • HaruPage::eoFillStroke — Fill current path using even-odd rule, then paint the path
  • HaruPage::fill — Fill current path using nonzero winding number rule
  • HaruPage::fillStroke — Fill current path using nonzero winding number rule, then paint the path
  • HaruPage::getCharSpace — Get the current value of character spacing
  • HaruPage::getCMYKFill — Get the current filling color
  • HaruPage::getCMYKStroke — Get the current stroking color
  • HaruPage::getCurrentFont — Get the currently used font
  • HaruPage::getCurrentFontSize — Get the current font size
  • HaruPage::getCurrentPos — Get the current position for path painting
  • HaruPage::getCurrentTextPos — Get the current position for text printing
  • HaruPage::getDash — Get the current dash pattern
  • HaruPage::getFillingColorSpace — Get the current filling color space
  • HaruPage::getFlatness — Get the flatness of the page
  • HaruPage::getGMode — Get the current graphics mode
  • HaruPage::getGrayFill — Get the current filling color
  • HaruPage::getGrayStroke — Get the current stroking color
  • HaruPage::getHeight — Get the height of the page
  • HaruPage::getHorizontalScaling — Get the current value of horizontal scaling
  • HaruPage::getLineCap — Get the current line cap style
  • HaruPage::getLineJoin — Get the current line join style
  • HaruPage::getLineWidth — Get the current line width
  • HaruPage::getMiterLimit — Get the value of miter limit
  • HaruPage::getRGBFill — Get the current filling color
  • HaruPage::getRGBStroke — Get the current stroking color
  • HaruPage::getStrokingColorSpace — Get the current stroking color space
  • HaruPage::getTextLeading — Get the current value of line spacing
  • HaruPage::getTextMatrix — Get the current text transformation matrix of the page
  • HaruPage::getTextRenderingMode — Get the current text rendering mode
  • HaruPage::getTextRise — Get the current value of text rising
  • HaruPage::getTextWidth — Get the width of the text using current fontsize, character spacing and word spacing
  • HaruPage::getTransMatrix — Get the current transformation matrix of the page
  • HaruPage::getWidth — Get the width of the page
  • HaruPage::getWordSpace — Get the current value of word spacing
  • HaruPage::lineTo — Draw a line from the current point to the specified point
  • HaruPage::measureText — Calculate the byte length of characters which can be included on one line of the specified width
  • HaruPage::moveTextPos — Move text position to the specified offset
  • HaruPage::moveTo — Set starting point for new drawing path
  • HaruPage::moveToNextLine — Move text position to the start of the next line
  • HaruPage::rectangle — Append a rectangle to the current path
  • HaruPage::setCharSpace — Set character spacing for the page
  • HaruPage::setCMYKFill — Set filling color for the page
  • HaruPage::setCMYKStroke — Set stroking color for the page
  • HaruPage::setDash — Set the dash pattern for the page
  • HaruPage::setFlatness — Set flatness for the page
  • HaruPage::setFontAndSize — Set font and fontsize for the page
  • HaruPage::setGrayFill — Set filling color for the page
  • HaruPage::setGrayStroke — Sets stroking color for the page
  • HaruPage::setHeight — Set height of the page
  • HaruPage::setHorizontalScaling — Set horizontal scaling for the page
  • HaruPage::setLineCap — Set the shape to be used at the ends of lines
  • HaruPage::setLineJoin — Set line join style for the page
  • HaruPage::setLineWidth — Set line width for the page
  • HaruPage::setMiterLimit — Set the current value of the miter limit of the page
  • HaruPage::setRGBFill — Set filling color for the page
  • HaruPage::setRGBStroke — Set stroking color for the page
  • HaruPage::setRotate — Set rotation angle of the page
  • HaruPage::setSize — Set size and direction of the page
  • HaruPage::setSlideShow — Set transition style for the page
  • HaruPage::setTextLeading — Set text leading (line spacing) for the page
  • HaruPage::setTextMatrix — Set the current text transformation matrix of the page
  • HaruPage::setTextRenderingMode — Set text rendering mode for the page
  • HaruPage::setTextRise — Set the current value of text rising
  • HaruPage::setWidth — Set width of the page
  • HaruPage::setWordSpace — Set word spacing for the page
  • HaruPage::showText — Print text at the current position of the page
  • HaruPage::showTextNextLine — Move the current position to the start of the next line and print the text
  • HaruPage::stroke — Paint current path
  • HaruPage::textOut — Print the text on the specified position
  • HaruPage::textRect — Print the text inside the specified region
HaruDoc::useKRFonts
HaruPage::arc
haru


Append an arc to the current path

HaruPage
HaruPage::beginText
HaruPage
PHP Manual

HaruPage::arc

(PECL haru >= 0.0.1)

HaruPage::arc — Append an arc to the current path

说明

bool HaruPage::arc ( float $x , float $y , float $ray , float $ang1 , float $ang2 )

Appends an arc to the current path.

参数

x

Horizontal coordinate of the center.

y

Vertical coordinate of the center.

ray

The ray of the arc.

ang1

The angle of the beginning.

ang2

The angle of the end. Must be greater than ang1.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage
HaruPage::beginText
HaruPage


Begin a text object and set the current text position to (0,0)

HaruPage::arc
HaruPage::circle
HaruPage
PHP Manual

HaruPage::beginText

(PECL haru >= 0.0.1)

HaruPage::beginText — Begin a text object and set the current text position to (0,0)

说明

bool HaruPage::beginText ( void )

Begins new text object and sets the current text position to (0,0).

参数

此函数没有参数。

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::arc
HaruPage::circle
HaruPage


Append a circle to the current path

HaruPage::beginText
HaruPage::closePath
HaruPage
PHP Manual

HaruPage::circle

(PECL haru >= 0.0.1)

HaruPage::circle — Append a circle to the current path

说明

bool HaruPage::circle ( float $x , float $y , float $ray )

Appends a circle to the current path.

参数

x

Horizontal coordinate of the center point.

y

Vertical coordinate of the center point.

ray

The ray of the circle.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::beginText
HaruPage::closePath
HaruPage


Append a straight line from the current point to the start point of the path

HaruPage::circle
HaruPage::concat
HaruPage
PHP Manual

HaruPage::closePath

(PECL haru >= 0.0.1)

HaruPage::closePath — Append a straight line from the current point to the start point of the path

说明

bool HaruPage::closePath ( void )

Appends a straight line from the current point to the start point of the path.

参数

此函数没有参数。

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::circle
HaruPage::concat
HaruPage


Concatenate current transformation matrix of the page and the specified matrix

HaruPage::closePath
HaruPage::createDestination
HaruPage
PHP Manual

HaruPage::concat

(PECL haru >= 0.0.1)

HaruPage::concat — Concatenate current transformation matrix of the page and the specified matrix

说明

bool HaruPage::concat ( float $a , float $b , float $c , float $d , float $x , float $y )

Concatenates current transformation matrix of the page and the specified matrix.

参数

a

b

c

d

x

y

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::closePath
HaruPage::createDestination
HaruPage


Create new HaruDestination instance

HaruPage::concat
HaruPage::createLinkAnnotation
HaruPage
PHP Manual

HaruPage::createDestination

(PECL haru >= 0.0.1)

HaruPage::createDestination — Create new HaruDestination instance

说明

object HaruPage::createDestination ( void )

Create a new HaruDestination instance.

参数

此函数没有参数。

返回值

Returns a new HaruDestination instance.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::concat
HaruPage::createLinkAnnotation
HaruPage


Create new HaruAnnotation instance

HaruPage::createDestination
HaruPage::createTextAnnotation
HaruPage
PHP Manual

HaruPage::createLinkAnnotation

(PECL haru >= 0.0.1)

HaruPage::createLinkAnnotation — Create new HaruAnnotation instance

说明

object HaruPage::createLinkAnnotation ( array $rectangle , object $destination )

Creates a new HaruAnnotation instance.

参数

rectangle

An array with 4 coordinates of the clickable area.

destination

Valid HaruDestination instance.

返回值

Returns a new HaruAnnotation instance.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::createDestination
HaruPage::createTextAnnotation
HaruPage


Create new HaruAnnotation instance

HaruPage::createLinkAnnotation
HaruPage::createURLAnnotation
HaruPage
PHP Manual

HaruPage::createTextAnnotation

(PECL haru >= 0.0.1)

HaruPage::createTextAnnotation — Create new HaruAnnotation instance

说明

object HaruPage::createTextAnnotation ( array $rectangle , string $text [, object $encoder ] )

Creates a new HaruAnnotation instance.

参数

rectangle

An array with 4 coordinates of the annotation area.

text

The text to be displayed.

encoder

Optional HaruEncoder instance.

返回值

Returns a new HaruAnnotation instance.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::createLinkAnnotation
HaruPage::createURLAnnotation
HaruPage


Create and return new HaruAnnotation instance

HaruPage::createTextAnnotation
HaruPage::curveTo2
HaruPage
PHP Manual

HaruPage::createURLAnnotation

(PECL haru >= 0.0.1)

HaruPage::createURLAnnotation — Create and return new HaruAnnotation instance

说明

object HaruPage::createURLAnnotation ( array $rectangle , string $url )

Creates a new HaruAnnotation instance.

参数

rectangle

An array with 4 coordinates of the clickable area.

url

The URL to open.

返回值

Returns a new HaruAnnotation instance.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::createTextAnnotation
HaruPage::curveTo2
HaruPage


Append a Bezier curve to the current path

HaruPage::createURLAnnotation
HaruPage::curveTo3
HaruPage
PHP Manual

HaruPage::curveTo2

(PECL haru >= 0.0.1)

HaruPage::curveTo2 — Append a Bezier curve to the current path

说明

bool HaruPage::curveTo2 ( float $x2 , float $y2 , float $x3 , float $y3 )

Appends a Bezier curve to the current path. The current point and the point (x2, y2) are used as the control points for the Bezier curve and current point is moved to the point (x3, y3).

参数

x2

A Bezier curve control point.

y2

A Bezier curve control point.

x3

The current point moves here.

x3

The current point moves here.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::createURLAnnotation
HaruPage::curveTo3
HaruPage


Append a Bezier curve to the current path

HaruPage::curveTo2
HaruPage::curveTo
HaruPage
PHP Manual

HaruPage::curveTo3

(PECL haru >= 0.0.1)

HaruPage::curveTo3 — Append a Bezier curve to the current path

说明

bool HaruPage::curveTo3 ( float $x1 , float $y1 , float $x3 , float $y3 )

Appends a Bezier curve to the current path. The point (x1, y1) and the point (x3, y3) are used as the control points for a Bezier curve and current point is moved to the point (x3, y3).

参数

x1

A Bezier curve control point.

y1

A Bezier curve control point.

x3

The current point moves here.

x3

The current point moves here.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::curveTo2
HaruPage::curveTo
HaruPage


Append a Bezier curve to the current path

HaruPage::curveTo3
HaruPage::drawImage
HaruPage
PHP Manual

HaruPage::curveTo

(PECL haru >= 0.0.1)

HaruPage::curveTo — Append a Bezier curve to the current path

说明

bool HaruPage::curveTo ( float $x1 , float $y1 , float $x2 , float $y2 , float $x3 , float $y3 )

Append a Bezier curve to the current path. The point (x1, y1) and the point (x2, y2) are used as the control points for a Bezier curve and current point is moved to the point (x3, y3).

参数

x1

A Bezier curve control point.

y1

A Bezier curve control point.

x2

A Bezier curve control point.

y2

A Bezier curve control point.

x3

The current point moves here.

x3

The current point moves here.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::curveTo3
HaruPage::drawImage
HaruPage


Show image at the page

HaruPage::curveTo
HaruPage::ellipse
HaruPage
PHP Manual

HaruPage::drawImage

(PECL haru >= 0.0.1)

HaruPage::drawImage — Show image at the page

说明

bool HaruPage::drawImage ( object $image , float $x , float $y , float $width , float $height )

Show image at the page.

参数

image

Valid HaruImage instance.

x

The left border of the area where the image is displayed.

y

The lower border of the area where the image is displayed.

width

The width of the image area.

height

The height of the image area.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::curveTo
HaruPage::ellipse
HaruPage


Append an ellipse to the current path

HaruPage::drawImage
HaruPage::endPath
HaruPage
PHP Manual

HaruPage::ellipse

(PECL haru >= 0.0.1)

HaruPage::ellipse — Append an ellipse to the current path

说明

bool HaruPage::ellipse ( float $x , float $y , float $xray , float $yray )

Appends an ellipse to the current path.

参数

x

Horizontal coordinate of the center.

y

Vertical coordinate of the center.

xray

The ray of the ellipse in the x direction.

yray

The ray of the ellipse in the y direction.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::drawImage
HaruPage::endPath
HaruPage


End current path object without filling and painting operations

HaruPage::ellipse
HaruPage::endText
HaruPage
PHP Manual

HaruPage::endPath

(PECL haru >= 0.0.1)

HaruPage::endPath — End current path object without filling and painting operations

说明

bool HaruPage::endPath ( void )

Ends current path object without performing filling and painting operations.

参数

此函数没有参数。

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::ellipse
HaruPage::endText
HaruPage


End current text object

HaruPage::endPath
HaruPage::eofill
HaruPage
PHP Manual

HaruPage::endText

(PECL haru >= 0.0.1)

HaruPage::endText — End current text object

说明

bool HaruPage::endText ( void )

Finalizes current text object.

参数

此函数没有参数。

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::endPath
HaruPage::eofill
HaruPage


Fill current path using even-odd rule

HaruPage::endText
HaruPage::eoFillStroke
HaruPage
PHP Manual

HaruPage::eofill

(PECL haru >= 0.0.1)

HaruPage::eofill — Fill current path using even-odd rule

说明

bool HaruPage::eofill ( void )

Fills current path using even-odd rule.

参数

此函数没有参数。

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::endText
HaruPage::eoFillStroke
HaruPage


Fill current path using even-odd rule, then paint the path

HaruPage::eofill
HaruPage::fill
HaruPage
PHP Manual

HaruPage::eoFillStroke

(PECL haru >= 0.0.1)

HaruPage::eoFillStroke — Fill current path using even-odd rule, then paint the path

说明

bool HaruPage::eoFillStroke ([ bool $close_path = false ] )

Fills current path using even-odd rule, then paints the path.

参数

close_path

Optional parameter. When set to TRUE, the function closes the current path. Default to FALSE.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::eofill
HaruPage::fill
HaruPage


Fill current path using nonzero winding number rule

HaruPage::eoFillStroke
HaruPage::fillStroke
HaruPage
PHP Manual

HaruPage::fill

(PECL haru >= 0.0.1)

HaruPage::fill — Fill current path using nonzero winding number rule

说明

bool HaruPage::fill ( void )

Fills current path using nonzero winding number rule.

参数

此函数没有参数。

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::eoFillStroke
HaruPage::fillStroke
HaruPage


Fill current path using nonzero winding number rule, then paint the path

HaruPage::fill
HaruPage::getCharSpace
HaruPage
PHP Manual

HaruPage::fillStroke

(PECL haru >= 0.0.1)

HaruPage::fillStroke — Fill current path using nonzero winding number rule, then paint the path

说明

bool HaruPage::fillStroke ([ bool $close_path = false ] )

Fills current path using nonzero winding number rule, then paints the path.

参数

close_path

Optional parameter. When set to TRUE, the function closes the current path. Default to FALSE.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::fill
HaruPage::getCharSpace
HaruPage


Get the current value of character spacing

HaruPage::fillStroke
HaruPage::getCMYKFill
HaruPage
PHP Manual

HaruPage::getCharSpace

(PECL haru >= 0.0.1)

HaruPage::getCharSpace — Get the current value of character spacing

说明

float HaruPage::getCharSpace ( void )

Get the current value of character spacing.

参数

此函数没有参数。

返回值

Returns the current value of character spacing.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::fillStroke
HaruPage::getCMYKFill
HaruPage


Get the current filling color

HaruPage::getCharSpace
HaruPage::getCMYKStroke
HaruPage
PHP Manual

HaruPage::getCMYKFill

(PECL haru >= 0.0.1)

HaruPage::getCMYKFill — Get the current filling color

说明

array HaruPage::getCMYKFill ( void )

Returns the current filling color.

参数

此函数没有参数。

返回值

Returns the current filling color as an array with 4 elements ("c", "m", "y" and "k").

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::getCharSpace
HaruPage::getCMYKStroke
HaruPage


Get the current stroking color

HaruPage::getCMYKFill
HaruPage::getCurrentFont
HaruPage
PHP Manual

HaruPage::getCMYKStroke

(PECL haru >= 0.0.1)

HaruPage::getCMYKStroke — Get the current stroking color

说明

array HaruPage::getCMYKStroke ( void )

Get the current stroking color.

参数

此函数没有参数。

返回值

Returns the current stroking color as an array with 4 elements ("c", "m", "y" and "k").

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::getCMYKFill
HaruPage::getCurrentFont
HaruPage


Get the currently used font

HaruPage::getCMYKStroke
HaruPage::getCurrentFontSize
HaruPage
PHP Manual

HaruPage::getCurrentFont

(PECL haru >= 0.0.1)

HaruPage::getCurrentFont — Get the currently used font

说明

object HaruPage::getCurrentFont ( void )

Get the currently used font.

参数

此函数没有参数。

返回值

Returns the currently used font as an instance of HaruFont.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::getCMYKStroke
HaruPage::getCurrentFontSize
HaruPage


Get the current font size

HaruPage::getCurrentFont
HaruPage::getCurrentPos
HaruPage
PHP Manual

HaruPage::getCurrentFontSize

(PECL haru >= 0.0.1)

HaruPage::getCurrentFontSize — Get the current font size

说明

float HaruPage::getCurrentFontSize ( void )

Get the current font size.

参数

此函数没有参数。

返回值

Returns the current font size.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::getCurrentFont
HaruPage::getCurrentPos
HaruPage


Get the current position for path painting

HaruPage::getCurrentFontSize
HaruPage::getCurrentTextPos
HaruPage
PHP Manual

HaruPage::getCurrentPos

(PECL haru >= 0.0.1)

HaruPage::getCurrentPos — Get the current position for path painting

说明

array HaruPage::getCurrentPos ( void )

Get the current position for path painting.

参数

此函数没有参数。

返回值

Returns the current position for path painting as an array of with two elements - "x" and "y".

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::getCurrentFontSize
HaruPage::getCurrentTextPos
HaruPage


Get the current position for text printing

HaruPage::getCurrentPos
HaruPage::getDash
HaruPage
PHP Manual

HaruPage::getCurrentTextPos

(PECL haru >= 0.0.1)

HaruPage::getCurrentTextPos — Get the current position for text printing

说明

array HaruPage::getCurrentTextPos ( void )

Get the current position for text printing.

参数

此函数没有参数。

返回值

Returns the current position for text printing as an array with 2 elements - "x" and "y".

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::getCurrentPos
HaruPage::getDash
HaruPage


Get the current dash pattern

HaruPage::getCurrentTextPos
HaruPage::getFillingColorSpace
HaruPage
PHP Manual

HaruPage::getDash

(PECL haru >= 0.0.1)

HaruPage::getDash — Get the current dash pattern

说明

array HaruPage::getDash ( void )

Get the current dash pattern. See HaruPage::setDash() for more information on dash patterns.

参数

此函数没有参数。

返回值

Returns the current dash pattern as an array of two elements - "pattern" and "phase" or FALSE if dash pattern was not set.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::setDash() - Set the dash pattern for the page

HaruPage::getCurrentTextPos
HaruPage::getFillingColorSpace
HaruPage


Get the current filling color space

HaruPage::getDash
HaruPage::getFlatness
HaruPage
PHP Manual

HaruPage::getFillingColorSpace

(PECL haru >= 0.0.1)

HaruPage::getFillingColorSpace — Get the current filling color space

说明

int HaruPage::getFillingColorSpace ( void )

Get the current filling color space.

参数

此函数没有参数。

返回值

Returns the current filling color space. The result value is one of the following:

  • HaruDoc::CS_DEVICE_GRAY
  • HaruDoc::CS_DEVICE_RGB
  • HaruDoc::CS_DEVICE_CMYK
  • HaruDoc::CS_CAL_GRAY
  • HaruDoc::CS_CAL_RGB
  • HaruDoc::CS_LAB
  • HaruDoc::CS_ICC_BASED
  • HaruDoc::CS_SEPARATION
  • HaruDoc::CS_DEVICE_N
  • HaruDoc::CS_INDEXED
  • HaruDoc::CS_PATTERN

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::getDash
HaruPage::getFlatness
HaruPage


Get the flatness of the page

HaruPage::getFillingColorSpace
HaruPage::getGMode
HaruPage
PHP Manual

HaruPage::getFlatness

(PECL haru >= 0.0.1)

HaruPage::getFlatness — Get the flatness of the page

说明

float HaruPage::getFlatness ( void )

Get the flatness of the page.

参数

此函数没有参数。

返回值

Returns the flatness of the page.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::setFlatness() - Set flatness for the page

HaruPage::getFillingColorSpace
HaruPage::getGMode
HaruPage


Get the current graphics mode

HaruPage::getFlatness
HaruPage::getGrayFill
HaruPage
PHP Manual

HaruPage::getGMode

(PECL haru >= 0.0.1)

HaruPage::getGMode — Get the current graphics mode

说明

int HaruPage::getGMode ( void )

Get the current graphics mode.

参数

此函数没有参数。

返回值

Returns the current graphics mode. The result value is one of the following:

  • HaruPage::GMODE_PAGE_DESCRIPTION
  • HaruPage::GMODE_TEXT_OBJECT
  • HaruPage::GMODE_PATH_OBJECT
  • HaruPage::GMODE_CLIPPING_PATH
  • HaruPage::GMODE_SHADING
  • HaruPage::GMODE_INLINE_IMAGE
  • HaruPage::GMODE_EXTERNAL_OBJECT

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::getFlatness
HaruPage::getGrayFill
HaruPage


Get the current filling color

HaruPage::getGMode
HaruPage::getGrayStroke
HaruPage
PHP Manual

HaruPage::getGrayFill

(PECL haru >= 0.0.1)

HaruPage::getGrayFill — Get the current filling color

说明

float HaruPage::getGrayFill ( void )

Get the current filling color.

参数

此函数没有参数。

返回值

Returns the current filling color.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::setGrayFill() - Set filling color for the page

HaruPage::getGMode
HaruPage::getGrayStroke
HaruPage


Get the current stroking color

HaruPage::getGrayFill
HaruPage::getHeight
HaruPage
PHP Manual

HaruPage::getGrayStroke

(PECL haru >= 0.0.1)

HaruPage::getGrayStroke — Get the current stroking color

说明

float HaruPage::getGrayStroke ( void )

Get the current stroking color.

参数

此函数没有参数。

返回值

Returns the current stroking color.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::setGrayStroke() - Sets stroking color for the page

HaruPage::getGrayFill
HaruPage::getHeight
HaruPage


Get the height of the page

HaruPage::getGrayStroke
HaruPage::getHorizontalScaling
HaruPage
PHP Manual

HaruPage::getHeight

(PECL haru >= 0.0.1)

HaruPage::getHeight — Get the height of the page

说明

float HaruPage::getHeight ( void )

Get the height of the page.

参数

此函数没有参数。

返回值

Returns the height of the page.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::setHeight() - Set height of the page

HaruPage::getGrayStroke
HaruPage::getHorizontalScaling
HaruPage


Get the current value of horizontal scaling

HaruPage::getHeight
HaruPage::getLineCap
HaruPage
PHP Manual

HaruPage::getHorizontalScaling

(PECL haru >= 0.0.1)

HaruPage::getHorizontalScaling — Get the current value of horizontal scaling

说明

float HaruPage::getHorizontalScaling ( void )

Get the current value of the horizontal scaling.

参数

此函数没有参数。

返回值

Returns the current value of horizontal scaling.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::setHorizontalScaling() - Set horizontal scaling for the page

HaruPage::getHeight
HaruPage::getLineCap
HaruPage


Get the current line cap style

HaruPage::getHorizontalScaling
HaruPage::getLineJoin
HaruPage
PHP Manual

HaruPage::getLineCap

(PECL haru >= 0.0.1)

HaruPage::getLineCap — Get the current line cap style

说明

int HaruPage::getLineCap ( void )

Get the current line cap style.

参数

此函数没有参数。

返回值

Returns the current line cap style. The result value is one of the following:

  • HaruPage::BUTT_END - the line is squared off at the endpoint of the path.
  • HaruPage::ROUND_END - the end of the line becomes a semicircle with center in the end point of the path.
  • HaruPage::PROJECTING_SCUARE_END - the line continues to the point that exceeds half of the stroke width the end point.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::setLineCap() - Set the shape to be used at the ends of lines

HaruPage::getHorizontalScaling
HaruPage::getLineJoin
HaruPage


Get the current line join style

HaruPage::getLineCap
HaruPage::getLineWidth
HaruPage
PHP Manual

HaruPage::getLineJoin

(PECL haru >= 0.0.1)

HaruPage::getLineJoin — Get the current line join style

说明

int HaruPage::getLineJoin ( void )

Get the current line join style.

参数

此函数没有参数。

返回值

Returns the current line join style. The result value is one of the following:

  • HaruPage::MITER_JOIN
  • HaruPage::ROUND_JOIN
  • HaruPage::BEVEL_JOIN

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::setLineJoin() - Set line join style for the page

HaruPage::getLineCap
HaruPage::getLineWidth
HaruPage


Get the current line width

HaruPage::getLineJoin
HaruPage::getMiterLimit
HaruPage
PHP Manual

HaruPage::getLineWidth

(PECL haru >= 0.0.1)

HaruPage::getLineWidth — Get the current line width

说明

float HaruPage::getLineWidth ( void )

Get the current line width.

参数

此函数没有参数。

返回值

Returns the current line width.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::setLineWidth() - Set line width for the page

HaruPage::getLineJoin
HaruPage::getMiterLimit
HaruPage


Get the value of miter limit

HaruPage::getLineWidth
HaruPage::getRGBFill
HaruPage
PHP Manual

HaruPage::getMiterLimit

(PECL haru >= 0.0.1)

HaruPage::getMiterLimit — Get the value of miter limit

说明

float HaruPage::getMiterLimit ( void )

Get the value of the miter limit.

参数

此函数没有参数。

返回值

Returns the value of the miter limit.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::setMiterLimit() - Set the current value of the miter limit of the page

HaruPage::getLineWidth
HaruPage::getRGBFill
HaruPage


Get the current filling color

HaruPage::getMiterLimit
HaruPage::getRGBStroke
HaruPage
PHP Manual

HaruPage::getRGBFill

(PECL haru >= 0.0.1)

HaruPage::getRGBFill — Get the current filling color

说明

array HaruPage::getRGBFill ( void )

Get the current filling color.

参数

此函数没有参数。

返回值

Returns the current filling color as an array with 3 elements: "r", "g" and "b".

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::setRGBFill() - Set filling color for the page

HaruPage::getMiterLimit
HaruPage::getRGBStroke
HaruPage


Get the current stroking color

HaruPage::getRGBFill
HaruPage::getStrokingColorSpace
HaruPage
PHP Manual

HaruPage::getRGBStroke

(PECL haru >= 0.0.1)

HaruPage::getRGBStroke — Get the current stroking color

说明

array HaruPage::getRGBStroke ( void )

Get the current stroking color.

参数

此函数没有参数。

返回值

Returns the current stroking color.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::setRGBStroke() - Set stroking color for the page

HaruPage::getRGBFill
HaruPage::getStrokingColorSpace
HaruPage


Get the current stroking color space

HaruPage::getRGBStroke
HaruPage::getTextLeading
HaruPage
PHP Manual

HaruPage::getStrokingColorSpace

(PECL haru >= 0.0.1)

HaruPage::getStrokingColorSpace — Get the current stroking color space

说明

int HaruPage::getStrokingColorSpace ( void )

Get the current stroking color space.

参数

此函数没有参数。

返回值

Returns the current stroking color space. The list of return values is the same as for HaruPage::getFillingColorSpace()

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getFillingColorSpace() - Get the current filling color space

HaruPage::getRGBStroke
HaruPage::getTextLeading
HaruPage


Get the current value of line spacing

HaruPage::getStrokingColorSpace
HaruPage::getTextMatrix
HaruPage
PHP Manual

HaruPage::getTextLeading

(PECL haru >= 0.0.1)

HaruPage::getTextLeading — Get the current value of line spacing

说明

float HaruPage::getTextLeading ( void )

Get the current value of line spacing.

参数

此函数没有参数。

返回值

Returns the current value of line spacing.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::setTextLeading() - Set text leading (line spacing) for the page

HaruPage::getStrokingColorSpace
HaruPage::getTextMatrix
HaruPage


Get the current text transformation matrix of the page

HaruPage::getTextLeading
HaruPage::getTextRenderingMode
HaruPage
PHP Manual

HaruPage::getTextMatrix

(PECL haru >= 0.0.1)

HaruPage::getTextMatrix — Get the current text transformation matrix of the page

说明

array HaruPage::getTextMatrix ( void )

Get the current text transformation matrix of the page.

返回值

Returns the current text transformation matrix of the page as an array of 6 elements: "a", "b", "c", "d", "x" and "y".

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::setTextMatrix() - Set the current text transformation matrix of the page

HaruPage::getTextLeading
HaruPage::getTextRenderingMode
HaruPage


Get the current text rendering mode

HaruPage::getTextMatrix
HaruPage::getTextRise
HaruPage
PHP Manual

HaruPage::getTextRenderingMode

(PECL haru >= 0.0.1)

HaruPage::getTextRenderingMode — Get the current text rendering mode

说明

int HaruPage::getTextRenderingMode ( void )

Get the current text rendering mode.

参数

此函数没有参数。

返回值

Returns the current text rendering mode. The result value is one of the following:

  • HaruPage::FILL
  • HaruPage::STROKE
  • HaruPage::FILL_THEN_STROKE
  • HaruPage::INVISIBLE
  • HaruPage::FILL_CLIPPING
  • HaruPage::STROKE_CLIPPING
  • HaruPage::FILL_STROKE_CLIPPING
  • HaruPage::CLIPPING

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::setTextRenderingMode() - Set text rendering mode for the page

HaruPage::getTextMatrix
HaruPage::getTextRise
HaruPage


Get the current value of text rising

HaruPage::getTextRenderingMode
HaruPage::getTextWidth
HaruPage
PHP Manual

HaruPage::getTextRise

(PECL haru >= 0.0.1)

HaruPage::getTextRise — Get the current value of text rising

说明

float HaruPage::getTextRise ( void )

Get the current value of text rising.

参数

此函数没有参数。

返回值

Returns the current value of text rising.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::setTextRise() - Set the current value of text rising

HaruPage::getTextRenderingMode
HaruPage::getTextWidth
HaruPage


Get the width of the text using current fontsize, character spacing and word spacing

HaruPage::getTextRise
HaruPage::getTransMatrix
HaruPage
PHP Manual

HaruPage::getTextWidth

(PECL haru >= 0.0.1)

HaruPage::getTextWidth — Get the width of the text using current fontsize, character spacing and word spacing

说明

float HaruPage::getTextWidth ( string $text )

Get the width of the text using current fontsize, character spacing and word spacing

参数

text

The text to measure.

返回值

Returns the width of the text using current fontsize, character spacing and word spacing.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::measureText() - Calculate the byte length of characters which can be included on one line of the specified width

HaruPage::getTextRise
HaruPage::getTransMatrix
HaruPage


Get the current transformation matrix of the page

HaruPage::getTextWidth
HaruPage::getWidth
HaruPage
PHP Manual

HaruPage::getTransMatrix

(PECL haru >= 0.0.1)

HaruPage::getTransMatrix — Get the current transformation matrix of the page

说明

array HaruPage::getTransMatrix ( void )

Get the current transformation matrix of the page.

参数

此函数没有参数。

返回值

Returns the current transformation matrix of the page as an array of 6 elements: "a", "b", "c", "d", "x" and "y".

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::concat() - Concatenate current transformation matrix of the page and the specified matrix

HaruPage::getTextWidth
HaruPage::getWidth
HaruPage


Get the width of the page

HaruPage::getTransMatrix
HaruPage::getWordSpace
HaruPage
PHP Manual

HaruPage::getWidth

(PECL haru >= 0.0.1)

HaruPage::getWidth — Get the width of the page

说明

float HaruPage::getWidth ( void )

Get the width of the page.

参数

此函数没有参数。

返回值

Returns the width of the page.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::setWidth() - Set width of the page

HaruPage::getTransMatrix
HaruPage::getWordSpace
HaruPage


Get the current value of word spacing

HaruPage::getWidth
HaruPage::lineTo
HaruPage
PHP Manual

HaruPage::getWordSpace

(PECL haru >= 0.0.1)

HaruPage::getWordSpace — Get the current value of word spacing

说明

float HaruPage::getWordSpace ( void )

Get the current value of word spacing.

参数

此函数没有参数。

返回值

Returns the current value of word spacing.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::setWordSpace() - Set word spacing for the page

HaruPage::getWidth
HaruPage::lineTo
HaruPage


Draw a line from the current point to the specified point

HaruPage::getWordSpace
HaruPage::measureText
HaruPage
PHP Manual

HaruPage::lineTo

(PECL haru >= 0.0.1)

HaruPage::lineTo — Draw a line from the current point to the specified point

说明

bool HaruPage::lineTo ( float $x , float $y )

Draws a line from the current point to the specified point.

参数

x

y

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::curveTo() - Append a Bezier curve to the current path
  • HaruPage::curveTo2() - Append a Bezier curve to the current path
  • HaruPage::curveTo3() - Append a Bezier curve to the current path

HaruPage::getWordSpace
HaruPage::measureText
HaruPage


Calculate the byte length of characters which can be included on one line of the specified width

HaruPage::lineTo
HaruPage::moveTextPos
HaruPage
PHP Manual

HaruPage::measureText

(PECL haru >= 0.0.1)

HaruPage::measureText — Calculate the byte length of characters which can be included on one line of the specified width

说明

int HaruPage::measureText ( string $text , float $width [, bool $wordwrap = false ] )

Get the byte length of characters which can be included on one line of the specified width.

参数

text

The text to measure.

width

The width of the line.

wordwrap

When this parameter is set to TRUE the function "emulates" word wrapping by stopping after the last full word (delimited by whitespace) that can fit on the line.

返回值

Returns the byte length of characters which can be included within the specified width. For single-byte encodings, this is equal to the number of characters. For multi-byte encodings, this is not necessarily the case.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruFont::measureText() - Calculate the number of characters which can be included within the specified width

HaruPage::lineTo
HaruPage::moveTextPos
HaruPage


Move text position to the specified offset

HaruPage::measureText
HaruPage::moveTo
HaruPage
PHP Manual

HaruPage::moveTextPos

(PECL haru >= 0.0.1)

HaruPage::moveTextPos — Move text position to the specified offset

说明

bool HaruPage::moveTextPos ( float $x , float $y [, bool $set_leading = false ] )

Moves text position to the specified offset. If the start position of the current line is (x1, y1), the start of the next line is (x1 + x, y1 + y).

参数

x

The specified text position offset.

y

The specified text position offset.

set_leading

If set to TRUE, the function sets the text leading to -y.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::moveToNextLine() - Move text position to the start of the next line

HaruPage::measureText
HaruPage::moveTo
HaruPage


Set starting point for new drawing path

HaruPage::moveTextPos
HaruPage::moveToNextLine
HaruPage
PHP Manual

HaruPage::moveTo

(PECL haru >= 0.0.1)

HaruPage::moveTo — Set starting point for new drawing path

说明

bool HaruPage::moveTo ( float $x , float $y )

Defines starting point for new drawing path.

参数

x

A new starting point coordinate.

y

A new starting point coordinate.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::moveTextPos
HaruPage::moveToNextLine
HaruPage


Move text position to the start of the next line

HaruPage::moveTo
HaruPage::rectangle
HaruPage
PHP Manual

HaruPage::moveToNextLine

(PECL haru >= 0.0.1)

HaruPage::moveToNextLine — Move text position to the start of the next line

说明

bool HaruPage::moveToNextLine ( void )

Moves text position to the start of the next line.

参数

此函数没有参数。

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::moveTextPos() - Move text position to the specified offset

HaruPage::moveTo
HaruPage::rectangle
HaruPage


Append a rectangle to the current path

HaruPage::moveToNextLine
HaruPage::setCharSpace
HaruPage
PHP Manual

HaruPage::rectangle

(PECL haru >= 0.0.1)

HaruPage::rectangle — Append a rectangle to the current path

说明

bool HaruPage::rectangle ( float $x , float $y , float $width , float $height )

Appends a rectangle to the current drawing path.

参数

x

The left border of the rectangle.

y

The lower border of the rectangle.

width

The width of the rectangle.

height

The height of the rectangle.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::moveToNextLine
HaruPage::setCharSpace
HaruPage


Set character spacing for the page

HaruPage::rectangle
HaruPage::setCMYKFill
HaruPage
PHP Manual

HaruPage::setCharSpace

(PECL haru >= 0.0.1)

HaruPage::setCharSpace — Set character spacing for the page

说明

bool HaruPage::setCharSpace ( float $char_space )

Defines character spacing for the page.

参数

char_space

The new character spacing for the page.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getCharSpace() - Get the current value of character spacing

HaruPage::rectangle
HaruPage::setCMYKFill
HaruPage


Set filling color for the page

HaruPage::setCharSpace
HaruPage::setCMYKStroke
HaruPage
PHP Manual

HaruPage::setCMYKFill

(PECL haru >= 0.0.1)

HaruPage::setCMYKFill — Set filling color for the page

说明

bool HaruPage::setCMYKFill ( float $c , float $m , float $y , float $k )

Defines filling color for the page.

参数

c

m

y

k

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getCMYKFill() - Get the current filling color

HaruPage::setCharSpace
HaruPage::setCMYKStroke
HaruPage


Set stroking color for the page

HaruPage::setCMYKFill
HaruPage::setDash
HaruPage
PHP Manual

HaruPage::setCMYKStroke

(PECL haru >= 0.0.1)

HaruPage::setCMYKStroke — Set stroking color for the page

说明

bool HaruPage::setCMYKStroke ( float $c , float $m , float $y , float $k )

Defines stroking color for the page.

参数

c

m

y

k

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getCMYKStroke() - Get the current stroking color

HaruPage::setCMYKFill
HaruPage::setDash
HaruPage


Set the dash pattern for the page

HaruPage::setCMYKStroke
HaruPage::setFlatness
HaruPage
PHP Manual

HaruPage::setDash

(PECL haru >= 0.0.1)

HaruPage::setDash — Set the dash pattern for the page

说明

bool HaruPage::setDash ( array $pattern , int $phase )

Defines the dash pattern for the page.

参数

pattern

An array (8 elements max) which contains a pattern of dashes and gaps used for lines on the page.

phase

The phase on which the pattern begins.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getDash() - Get the current dash pattern

HaruPage::setCMYKStroke
HaruPage::setFlatness
HaruPage


Set flatness for the page

HaruPage::setDash
HaruPage::setFontAndSize
HaruPage
PHP Manual

HaruPage::setFlatness

(PECL haru >= 0.0.1)

HaruPage::setFlatness — Set flatness for the page

说明

bool HaruPage::setFlatness ( float $flatness )

Defines flatness for the page.

参数

flatness

The defined flatness for the page.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getFlatness() - Get the flatness of the page

HaruPage::setDash
HaruPage::setFontAndSize
HaruPage


Set font and fontsize for the page

HaruPage::setFlatness
HaruPage::setGrayFill
HaruPage
PHP Manual

HaruPage::setFontAndSize

(PECL haru >= 0.0.1)

HaruPage::setFontAndSize — Set font and fontsize for the page

说明

bool HaruPage::setFontAndSize ( object $font , float $size )

Defines current font and its size for the page.

参数

font

A valid HaruFont instance.

size

The size of the font.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruDoc::getFont() - Get HaruFont instance

HaruPage::setFlatness
HaruPage::setGrayFill
HaruPage


Set filling color for the page

HaruPage::setFontAndSize
HaruPage::setGrayStroke
HaruPage
PHP Manual

HaruPage::setGrayFill

(PECL haru >= 0.0.1)

HaruPage::setGrayFill — Set filling color for the page

说明

bool HaruPage::setGrayFill ( float $value )

Defines filling color for the page.

参数

value

The value of gray level between 0 and 1.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getGrayFill() - Get the current filling color

HaruPage::setFontAndSize
HaruPage::setGrayStroke
HaruPage


Sets stroking color for the page

HaruPage::setGrayFill
HaruPage::setHeight
HaruPage
PHP Manual

HaruPage::setGrayStroke

(PECL haru >= 0.0.1)

HaruPage::setGrayStroke — Sets stroking color for the page

说明

bool HaruPage::setGrayStroke ( float $value )

Defines stroking color for the page.

参数

value

The value of gray level between 0 and 1.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getGrayStroke() - Get the current stroking color

HaruPage::setGrayFill
HaruPage::setHeight
HaruPage


Set height of the page

HaruPage::setGrayStroke
HaruPage::setHorizontalScaling
HaruPage
PHP Manual

HaruPage::setHeight

(PECL haru >= 0.0.1)

HaruPage::setHeight — Set height of the page

说明

bool HaruPage::setHeight ( float $height )

Defines height of the page.

参数

height

The defined height for the page.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getHeight() - Get the height of the page

HaruPage::setGrayStroke
HaruPage::setHorizontalScaling
HaruPage


Set horizontal scaling for the page

HaruPage::setHeight
HaruPage::setLineCap
HaruPage
PHP Manual

HaruPage::setHorizontalScaling

(PECL haru >= 0.0.1)

HaruPage::setHorizontalScaling — Set horizontal scaling for the page

说明

bool HaruPage::setHorizontalScaling ( float $scaling )

Set the horizontal scaling for the page.

参数

scaling

The horizontal scaling for text showing on the page. The initial value is 100.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getHorizontalScaling() - Get the current value of horizontal scaling

HaruPage::setHeight
HaruPage::setLineCap
HaruPage


Set the shape to be used at the ends of lines

HaruPage::setHorizontalScaling
HaruPage::setLineJoin
HaruPage
PHP Manual

HaruPage::setLineCap

(PECL haru >= 0.0.1)

HaruPage::setLineCap — Set the shape to be used at the ends of lines

说明

bool HaruPage::setLineCap ( int $cap )

Defines the shape to be used at the ends of lines.

参数

cap

Must be one of the following values:

  • HaruPage::BUTT_END - the line is squared off at the endpoint of the path.
  • HaruPage::ROUND_END - the end of the line becomes a semicircle with center in the end point of the path.
  • HaruPage::PROJECTING_SCUARE_END - the line continues to the point that exceeds half of the stroke width the end point.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getLineCap() - Get the current line cap style

HaruPage::setHorizontalScaling
HaruPage::setLineJoin
HaruPage


Set line join style for the page

HaruPage::setLineCap
HaruPage::setLineWidth
HaruPage
PHP Manual

HaruPage::setLineJoin

(PECL haru >= 0.0.1)

HaruPage::setLineJoin — Set line join style for the page

说明

bool HaruPage::setLineJoin ( int $join )

Defines line join style for the page.

参数

join

Must be one of the following values:

  • HaruPage::MITER_JOIN
  • HaruPage::ROUND_JOIN
  • HaruPage::BEVEL_JOIN

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getLineJoin() - Get the current line join style

HaruPage::setLineCap
HaruPage::setLineWidth
HaruPage


Set line width for the page

HaruPage::setLineJoin
HaruPage::setMiterLimit
HaruPage
PHP Manual

HaruPage::setLineWidth

(PECL haru >= 0.0.1)

HaruPage::setLineWidth — Set line width for the page

说明

bool HaruPage::setLineWidth ( float $width )

Defines line width for the page.

参数

width

The defined line width for the page.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getLineWidth() - Get the current line width

HaruPage::setLineJoin
HaruPage::setMiterLimit
HaruPage


Set the current value of the miter limit of the page

HaruPage::setLineWidth
HaruPage::setRGBFill
HaruPage
PHP Manual

HaruPage::setMiterLimit

(PECL haru >= 0.0.1)

HaruPage::setMiterLimit — Set the current value of the miter limit of the page

说明

bool HaruPage::setMiterLimit ( float $limit )

Set the current value of the miter limit of the page.

参数

limit

Defines the current value of the miter limit of the page.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getMiterLimit() - Get the value of miter limit

HaruPage::setLineWidth
HaruPage::setRGBFill
HaruPage


Set filling color for the page

HaruPage::setMiterLimit
HaruPage::setRGBStroke
HaruPage
PHP Manual

HaruPage::setRGBFill

(PECL haru >= 0.0.1)

HaruPage::setRGBFill — Set filling color for the page

说明

bool HaruPage::setRGBFill ( float $r , float $g , float $b )

Defines filling color for the page. All values must be between 0 and 1.

参数

r

g

b

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getRGBFill() - Get the current filling color

HaruPage::setMiterLimit
HaruPage::setRGBStroke
HaruPage


Set stroking color for the page

HaruPage::setRGBFill
HaruPage::setRotate
HaruPage
PHP Manual

HaruPage::setRGBStroke

(PECL haru >= 0.0.1)

HaruPage::setRGBStroke — Set stroking color for the page

说明

bool HaruPage::setRGBStroke ( float $r , float $g , float $b )

Defines stroking color for the page. All values must be between 0 and 1.

参数

r

g

b

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getRGBStroke() - Get the current stroking color

HaruPage::setRGBFill
HaruPage::setRotate
HaruPage


Set rotation angle of the page

HaruPage::setRGBStroke
HaruPage::setSize
HaruPage
PHP Manual

HaruPage::setRotate

(PECL haru >= 0.0.1)

HaruPage::setRotate — Set rotation angle of the page

说明

bool HaruPage::setRotate ( int $angle )

Defines rotation angle of the page.

参数

angle

Must be a multiple of 90 degrees.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::setRGBStroke
HaruPage::setSize
HaruPage


Set size and direction of the page

HaruPage::setRotate
HaruPage::setSlideShow
HaruPage
PHP Manual

HaruPage::setSize

(PECL haru >= 0.0.1)

HaruPage::setSize — Set size and direction of the page

说明

bool HaruPage::setSize ( int $size , int $direction )

Changes size and direction of the page to a predefined format.

参数

size

Must be one of the following values:

  • HaruPage::SIZE_LETTER
  • HaruPage::SIZE_LEGAL
  • HaruPage::SIZE_A3
  • HaruPage::SIZE_A4
  • HaruPage::SIZE_A5
  • HaruPage::SIZE_B4
  • HaruPage::SIZE_B5
  • HaruPage::SIZE_EXECUTIVE
  • HaruPage::SIZE_US4x6
  • HaruPage::SIZE_US4x8
  • HaruPage::SIZE_US5x7
  • HaruPage::SIZE_COMM10

direction

Must be one of the following values:

  • HaruPage::PORTRAIT
  • HaruPage::LANDSCAPE

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::setWidth() - Set width of the page
  • HaruPage::setHeight() - Set height of the page

HaruPage::setRotate
HaruPage::setSlideShow
HaruPage


Set transition style for the page

HaruPage::setSize
HaruPage::setTextLeading
HaruPage
PHP Manual

HaruPage::setSlideShow

(PECL haru >= 0.0.1)

HaruPage::setSlideShow — Set transition style for the page

说明

bool HaruPage::setSlideShow ( int $type , float $disp_time , float $trans_time )

Defines transition style for the page.

参数

type

Must be one of the following values:

  • HaruPage::TS_WIPE_RIGHT
  • HaruPage::TS_WIPE_LEFT
  • HaruPage::TS_WIPE_UP
  • HaruPage::TS_WIPE_DOWN
  • HaruPage::TS_BARN_DOORS_HORIZONTAL_OUT
  • HaruPage::TS_BARN_DOORS_HORIZONTAL_IN
  • HaruPage::TS_BARN_DOORS_VERTICAL_OUT
  • HaruPage::TS_BARN_DOORS_VERTICAL_IN
  • HaruPage::TS_BOX_OUT
  • HaruPage::TS_BOX_IN
  • HaruPage::TS_BLINDS_HORIZONTAL
  • HaruPage::TS_BLINDS_VERTICAL
  • HaruPage::TS_DISSOLVE
  • HaruPage::TS_GLITTER_RIGHT
  • HaruPage::TS_GLITTER_DOWN
  • HaruPage::TS_GLITTER_TOP_LEFT_TO_BOTTOM_RIGHT
  • HaruPage::TS_REPLACE

disp_time

The display duration of the page in seconds.

trans_time

The duration of the transition effect in seconds.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::setSize
HaruPage::setTextLeading
HaruPage


Set text leading (line spacing) for the page

HaruPage::setSlideShow
HaruPage::setTextMatrix
HaruPage
PHP Manual

HaruPage::setTextLeading

(PECL haru >= 0.0.1)

HaruPage::setTextLeading — Set text leading (line spacing) for the page

说明

bool HaruPage::setTextLeading ( float $text_leading )

Set the text leading (line spacing) for the page.

参数

text_leading

Defines line spacing for the page.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getTextLeading() - Get the current value of line spacing

HaruPage::setSlideShow
HaruPage::setTextMatrix
HaruPage


Set the current text transformation matrix of the page

HaruPage::setTextLeading
HaruPage::setTextRenderingMode
HaruPage
PHP Manual

HaruPage::setTextMatrix

(PECL haru >= 0.0.1)

HaruPage::setTextMatrix — Set the current text transformation matrix of the page

说明

bool HaruPage::setTextMatrix ( float $a , float $b , float $c , float $d , float $x , float $y )

Defines the text transformation matrix of the page.

参数

a

Width multiplier.

b

Vertical skew in radians.

c

Horizontal skew in radians.

d

Height multiplier.

x

Horizontal position for text.

y

Vertical position for text.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getTextMatrix() - Get the current text transformation matrix of the page

HaruPage::setTextLeading
HaruPage::setTextRenderingMode
HaruPage


Set text rendering mode for the page

HaruPage::setTextMatrix
HaruPage::setTextRise
HaruPage
PHP Manual

HaruPage::setTextRenderingMode

(PECL haru >= 0.0.1)

HaruPage::setTextRenderingMode — Set text rendering mode for the page

说明

bool HaruPage::setTextRenderingMode ( int $mode )

Defines text rendering mode for the page.

参数

mode

Must be one of the following values:

  • HaruPage::FILL
  • HaruPage::STROKE
  • HaruPage::FILL_THEN_STROKE
  • HaruPage::INVISIBLE
  • HaruPage::FILL_CLIPPING
  • HaruPage::STROKE_CLIPPING
  • HaruPage::FILL_STROKE_CLIPPING
  • HaruPage::CLIPPING

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getTextRenderingMode() - Get the current text rendering mode

HaruPage::setTextMatrix
HaruPage::setTextRise
HaruPage


Set the current value of text rising

HaruPage::setTextRenderingMode
HaruPage::setWidth
HaruPage
PHP Manual

HaruPage::setTextRise

(PECL haru >= 0.0.1)

HaruPage::setTextRise — Set the current value of text rising

说明

bool HaruPage::setTextRise ( float $rise )

Set the current value of text rising.

参数

rise

Defines the current value of text rising.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getTextRise() - Get the current value of text rising

HaruPage::setTextRenderingMode
HaruPage::setWidth
HaruPage


Set width of the page

HaruPage::setTextRise
HaruPage::setWordSpace
HaruPage
PHP Manual

HaruPage::setWidth

(PECL haru >= 0.0.1)

HaruPage::setWidth — Set width of the page

说明

bool HaruPage::setWidth ( float $width )

Set the width of the page.

参数

width

Defines width of the page.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getWidth() - Get the width of the page

HaruPage::setTextRise
HaruPage::setWordSpace
HaruPage


Set word spacing for the page

HaruPage::setWidth
HaruPage::showText
HaruPage
PHP Manual

HaruPage::setWordSpace

(PECL haru >= 0.0.1)

HaruPage::setWordSpace — Set word spacing for the page

说明

bool HaruPage::setWordSpace ( float $word_space )

Set the word spacing for the page.

参数

word_space

Defines word spacing for the page.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::getWordSpace() - Get the current value of word spacing

HaruPage::setWidth
HaruPage::showText
HaruPage


Print text at the current position of the page

HaruPage::setWordSpace
HaruPage::showTextNextLine
HaruPage
PHP Manual

HaruPage::showText

(PECL haru >= 0.0.1)

HaruPage::showText — Print text at the current position of the page

说明

bool HaruPage::showText ( string $text )

Prints out the text at the current position of the page.

参数

text

The text to show.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::showTextNextLine() - Move the current position to the start of the next line and print the text
  • HaruPage::textOut() - Print the text on the specified position

HaruPage::setWordSpace
HaruPage::showTextNextLine
HaruPage


Move the current position to the start of the next line and print the text

HaruPage::showText
HaruPage::stroke
HaruPage
PHP Manual

HaruPage::showTextNextLine

(PECL haru >= 0.0.1)

HaruPage::showTextNextLine — Move the current position to the start of the next line and print the text

说明

bool HaruPage::showTextNextLine ( string $text [, float $word_space = 0 [, float $char_space = 0 ]] )

Moves the current position to the start of the next line and print out the text.

参数

text

The text to show.

word_space

The word spacing.

char_space

The character spacing.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::showText() - Print text at the current position of the page
  • HaruPage::textOut() - Print the text on the specified position

HaruPage::showText
HaruPage::stroke
HaruPage


Paint current path

HaruPage::showTextNextLine
HaruPage::textOut
HaruPage
PHP Manual

HaruPage::stroke

(PECL haru >= 0.0.1)

HaruPage::stroke — Paint current path

说明

bool HaruPage::stroke ([ bool $close_path = false ] )

Paints the current path.

参数

close_path

Closes the current path if set to TRUE.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruPage::showTextNextLine
HaruPage::textOut
HaruPage


Print the text on the specified position

HaruPage::stroke
HaruPage::textRect
HaruPage
PHP Manual

HaruPage::textOut

(PECL haru >= 0.0.1)

HaruPage::textOut — Print the text on the specified position

说明

bool HaruPage::textOut ( float $x , float $y , string $text )

Prints the text on the specified position.

参数

x

y

text

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::showTextNextLine() - Move the current position to the start of the next line and print the text
  • HaruPage::showText() - Print text at the current position of the page

HaruPage::stroke
HaruPage::textRect
HaruPage


Print the text inside the specified region

HaruPage::textOut
HaruFont
HaruPage
PHP Manual

HaruPage::textRect

(PECL haru >= 0.0.1)

HaruPage::textRect — Print the text inside the specified region

说明

bool HaruPage::textRect ( float $left , float $top , float $right , float $bottom , string $text [, int $align = HaruPage::TALIGN_LEFT ] )

Prints the text inside the specified region.

参数

left

Left border of the text area.

top

Top border of the text area.

right

Right border of the text area.

bottom

Lower border of the text area.

text

The text to print.

align

Text alignment. Must be one of the following values:

  • HaruPage::TALIGN_LEFT
  • HaruPage::TALIGN_RIGHT
  • HaruPage::TALIGN_CENTER
  • HaruPage::TALIGN_JUSTIFY

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

参见

  • HaruPage::showTextNextLine() - Move the current position to the start of the next line and print the text
  • HaruPage::showText() - Print text at the current position of the page
  • HaruPage::textOut() - Print the text on the specified position

HaruPage::textOut
HaruFont
HaruPage


The HaruFont class

(PECL haru >= 0.0.1)

简介

Haru PDF Font Class.

类摘要

HaruFont {
/* 方法 */
int getAscent ( void )
int getCapHeight ( void )
int getDescent ( void )
string getEncodingName ( void )
string getFontName ( void )
array getTextWidth ( string $text )
int getUnicodeWidth ( int $character )
int getXHeight ( void )
int measureText ( string $text , float $width , float $font_size , float $char_space , float $word_space [, bool $word_wrap = false ] )
}

Table of Contents

  • HaruFont::getAscent — Get the vertical ascent of the font
  • HaruFont::getCapHeight — Get the distance from the baseline of uppercase letters
  • HaruFont::getDescent — Get the vertical descent of the font
  • HaruFont::getEncodingName — Get the name of the encoding
  • HaruFont::getFontName — Get the name of the font
  • HaruFont::getTextWidth — Get the total width of the text, number of characters, number of words and number of spaces
  • HaruFont::getUnicodeWidth — Get the width of the character in the font
  • HaruFont::getXHeight — Get the distance from the baseline of lowercase letters
  • HaruFont::measureText — Calculate the number of characters which can be included within the specified width
HaruPage::textRect
HaruFont::getAscent
haru


Get the vertical ascent of the font

HaruFont
HaruFont::getCapHeight
HaruFont
PHP Manual

HaruFont::getAscent

(PECL haru >= 0.0.1)

HaruFont::getAscent — Get the vertical ascent of the font

说明

int HaruFont::getAscent ( void )

Get the vertical ascent of the font.

参数

此函数没有参数。

返回值

Returns the vertical ascent of the font.

错误／异常

发生错误时抛出 HaruException 异常。

HaruFont
HaruFont::getCapHeight
HaruFont


Get the distance from the baseline of uppercase letters

HaruFont::getAscent
HaruFont::getDescent
HaruFont
PHP Manual

HaruFont::getCapHeight

(PECL haru >= 0.0.1)

HaruFont::getCapHeight — Get the distance from the baseline of uppercase letters

说明

int HaruFont::getCapHeight ( void )

Get the distance from the baseline of uppercase letters.

参数

此函数没有参数。

返回值

Returns the distance from the baseline of uppercase letters.

错误／异常

发生错误时抛出 HaruException 异常。

HaruFont::getAscent
HaruFont::getDescent
HaruFont


Get the vertical descent of the font

HaruFont::getCapHeight
HaruFont::getEncodingName
HaruFont
PHP Manual

HaruFont::getDescent

(PECL haru >= 0.0.1)

HaruFont::getDescent — Get the vertical descent of the font

说明

int HaruFont::getDescent ( void )

Get the vertical descent of the font.

参数

此函数没有参数。

返回值

Return the vertical descent of the font.

错误／异常

发生错误时抛出 HaruException 异常。

HaruFont::getCapHeight
HaruFont::getEncodingName
HaruFont


Get the name of the encoding

HaruFont::getDescent
HaruFont::getFontName
HaruFont
PHP Manual

HaruFont::getEncodingName

(PECL haru >= 0.0.1)

HaruFont::getEncodingName — Get the name of the encoding

说明

string HaruFont::getEncodingName ( void )

Get the name of the font encoding.

参数

此函数没有参数。

返回值

Returns the name of the font encoding.

错误／异常

发生错误时抛出 HaruException 异常。

HaruFont::getDescent
HaruFont::getFontName
HaruFont


Get the name of the font

HaruFont::getEncodingName
HaruFont::getTextWidth
HaruFont
PHP Manual

HaruFont::getFontName

(PECL haru >= 0.0.1)

HaruFont::getFontName — Get the name of the font

说明

string HaruFont::getFontName ( void )

Get the name of the font.

参数

此函数没有参数。

返回值

Returns the name of the font.

错误／异常

发生错误时抛出 HaruException 异常。

HaruFont::getEncodingName
HaruFont::getTextWidth
HaruFont


Get the total width of the text, number of characters, number of words and number of spaces

HaruFont::getFontName
HaruFont::getUnicodeWidth
HaruFont
PHP Manual

HaruFont::getTextWidth

(PECL haru >= 0.0.1)

HaruFont::getTextWidth — Get the total width of the text, number of characters, number of words and number of spaces

说明

array HaruFont::getTextWidth ( string $text )

Get the total width of the text, number of characters, number of words and number of spaces.

参数

text

The text to measure.

返回值

Returns the total width of the text, number of characters, number of words and number of spaces in the given text.

错误／异常

发生错误时抛出 HaruException 异常。

HaruFont::getFontName
HaruFont::getUnicodeWidth
HaruFont


Get the width of the character in the font

HaruFont::getTextWidth
HaruFont::getXHeight
HaruFont
PHP Manual

HaruFont::getUnicodeWidth

(PECL haru >= 0.0.1)

HaruFont::getUnicodeWidth — Get the width of the character in the font

说明

int HaruFont::getUnicodeWidth ( int $character )

Get the width of the character in the font.

参数

character

The code of the character.

返回值

Returns the width of the character in the font.

错误／异常

发生错误时抛出 HaruException 异常。

HaruFont::getTextWidth
HaruFont::getXHeight
HaruFont


Get the distance from the baseline of lowercase letters

HaruFont::getUnicodeWidth
HaruFont::measureText
HaruFont
PHP Manual

HaruFont::getXHeight

(PECL haru >= 0.0.1)

HaruFont::getXHeight — Get the distance from the baseline of lowercase letters

说明

int HaruFont::getXHeight ( void )

Gets the distance from the baseline of lowercase letters.

参数

此函数没有参数。

返回值

Returns the distance from the baseline of lowercase letters.

错误／异常

发生错误时抛出 HaruException 异常。

HaruFont::getUnicodeWidth
HaruFont::measureText
HaruFont


Calculate the number of characters which can be included within the specified width

HaruFont::getXHeight
HaruImage
HaruFont
PHP Manual

HaruFont::measureText

(PECL haru >= 0.0.1)

HaruFont::measureText — Calculate the number of characters which can be included within the specified width

说明

int HaruFont::measureText ( string $text , float $width , float $font_size , float $char_space , float $word_space [, bool $word_wrap = false ] )

Calculate the number of characters which can be included within the specified width.

参数

text

The text to fit the width.

width

The width of the area to put the text to.

font_size

The size of the font.

char_space

The character spacing.

word_space

The word spacing.

word_wrap

When this parameter is set to TRUE the function "emulates" word wrapping and doesn't include the part of the current word if reached the end of the area.

返回值

Returns the number of characters which can be included within the specified width.

错误／异常

发生错误时抛出 HaruException 异常。

HaruFont::getXHeight
HaruImage
HaruFont


The HaruImage class

(PECL haru >= 0.0.1)

简介

Haru PDF Image Class.

类摘要

HaruImage {
/* 方法 */
int getBitsPerComponent ( void )
string getColorSpace ( void )
int getHeight ( void )
array getSize ( void )
int getWidth ( void )
bool setColorMask ( int $rmin , int $rmax , int $gmin , int $gmax , int $bmin , int $bmax )
bool setMaskImage ( object $mask_image )
}

Table of Contents

  • HaruImage::getBitsPerComponent — Get the number of bits used to describe each color component of the image
  • HaruImage::getColorSpace — Get the name of the color space
  • HaruImage::getHeight — Get the height of the image
  • HaruImage::getSize — Get size of the image
  • HaruImage::getWidth — Get the width of the image
  • HaruImage::setColorMask — Set the color mask of the image
  • HaruImage::setMaskImage — Set the image mask
HaruFont::measureText
HaruImage::getBitsPerComponent
haru


Get the number of bits used to describe each color component of the image

HaruImage
HaruImage::getColorSpace
HaruImage
PHP Manual

HaruImage::getBitsPerComponent

(PECL haru >= 0.0.1)

HaruImage::getBitsPerComponent — Get the number of bits used to describe each color component of the image

说明

int HaruImage::getBitsPerComponent ( void )

Gets the number of bits used to describe each color component of the image.

参数

此函数没有参数。

返回值

Returns the number of bits used to describe each color component of the image.

错误／异常

发生错误时抛出 HaruException 异常。

HaruImage
HaruImage::getColorSpace
HaruImage


Get the name of the color space

HaruImage::getBitsPerComponent
HaruImage::getHeight
HaruImage
PHP Manual

HaruImage::getColorSpace

(PECL haru >= 0.0.1)

HaruImage::getColorSpace — Get the name of the color space

说明

string HaruImage::getColorSpace ( void )

Get the name of the color space.

参数

此函数没有参数。

返回值

Returns the name of the color space of the image. The name is one of the following values:

  • "DeviceGray"
  • "DeviceRGB"
  • "DeviceCMYK"
  • "Indexed"

错误／异常

发生错误时抛出 HaruException 异常。

HaruImage::getBitsPerComponent
HaruImage::getHeight
HaruImage


Get the height of the image

HaruImage::getColorSpace
HaruImage::getSize
HaruImage
PHP Manual

HaruImage::getHeight

(PECL haru >= 0.0.1)

HaruImage::getHeight — Get the height of the image

说明

int HaruImage::getHeight ( void )

Get the height of the image.

参数

此函数没有参数。

返回值

Returns the height of the image.

错误／异常

发生错误时抛出 HaruException 异常。

HaruImage::getColorSpace
HaruImage::getSize
HaruImage


Get size of the image

HaruImage::getHeight
HaruImage::getWidth
HaruImage
PHP Manual

HaruImage::getSize

(PECL haru >= 0.0.1)

HaruImage::getSize — Get size of the image

说明

array HaruImage::getSize ( void )

Get the size of the image.

参数

此函数没有参数。

返回值

Returns an array with two elements: width and height, which contain appropriate dimensions of the image.

错误／异常

发生错误时抛出 HaruException 异常。

HaruImage::getHeight
HaruImage::getWidth
HaruImage


Get the width of the image

HaruImage::getSize
HaruImage::setColorMask
HaruImage
PHP Manual

HaruImage::getWidth

(PECL haru >= 0.0.1)

HaruImage::getWidth — Get the width of the image

说明

int HaruImage::getWidth ( void )

Get the width of the image.

参数

此函数没有参数。

返回值

Returns the width of the image.

错误／异常

发生错误时抛出 HaruException 异常。

HaruImage::getSize
HaruImage::setColorMask
HaruImage


Set the color mask of the image

HaruImage::getWidth
HaruImage::setMaskImage
HaruImage
PHP Manual

HaruImage::setColorMask

(PECL haru >= 0.0.1)

HaruImage::setColorMask — Set the color mask of the image

说明

bool HaruImage::setColorMask ( int $rmin , int $rmax , int $gmin , int $gmax , int $bmin , int $bmax )

Defines the transparent color of the image using the RGB range values. The color within the range is displayed as a transparent color. The color space of the image must be RGB.

参数

rmin

The lower limit of red. Must be between 0 and 255.

rmax

The upper limit of red. Must be between 0 and 255.

gmin

The lower limit of green. Must be between 0 and 255.

gmax

The upper limit of green. Must be between 0 and 255.

bmin

The lower limit of blue. Must be between 0 and 255.

bmax

The upper limit of blue. Must be between 0 and 255.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruImage::getWidth
HaruImage::setMaskImage
HaruImage


Set the image mask

HaruImage::setColorMask
HaruEncoder
HaruImage
PHP Manual

HaruImage::setMaskImage

(PECL haru >= 0.0.1)

HaruImage::setMaskImage — Set the image mask

说明

bool HaruImage::setMaskImage ( object $mask_image )

Sets the image used as image-mask. It must be 1bit gray-scale color image.

参数

mask_image

A valid HaruImage instance.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruImage::setColorMask
HaruEncoder
HaruImage


The HaruEncoder class

(PECL haru >= 0.0.1)

简介

Haru PDF Encoder Class.

类摘要

HaruEncoder {
/* 方法 */
int getByteType ( string $text , int $index )
int getType ( void )
int getUnicode ( int $character )
int getWritingMode ( void )
}

预定义常量

Type | Name | Description
int | HaruEncoder::TYPE_SINGLE_BYTE |
int | HaruEncoder::TYPE_DOUBLE_BYTE |
int | HaruEncoder::TYPE_UNINITIALIZED |
int | HaruEncoder::UNKNOWN |
int | HaruEncoder::WMODE_HORIZONTAL |
int | HaruEncoder::WMODE_VERTICAL |
int | HaruEncoder::BYTE_TYPE_SINGLE |
int | HaruEncoder::BYTE_TYPE_LEAD |
int | HaruEncoder::BYTE_TYPE_TRAIL |
int | HaruEncoder::BYTE_TYPE_UNKNOWN |

Table of Contents

  • HaruEncoder::getByteType — Get the type of the byte in the text
  • HaruEncoder::getType — Get the type of the encoder
  • HaruEncoder::getUnicode — Convert the specified character to unicode
  • HaruEncoder::getWritingMode — Get the writing mode of the encoder
HaruImage::setMaskImage
HaruEncoder::getByteType
haru


Get the type of the byte in the text

HaruEncoder
HaruEncoder::getType
HaruEncoder
PHP Manual

HaruEncoder::getByteType

(PECL haru >= 0.0.1)

HaruEncoder::getByteType — Get the type of the byte in the text

说明

int HaruEncoder::getByteType ( string $text , int $index )

Get the type of the byte in the text.

参数

text

The text.

index

The position in the text.

返回值

Returns the type of the byte in the text on the specified position. The result is one of the following values:

  • HaruEncoder::BYTE_TYPE_SINGLE - single byte character.
  • HaruEncoder::BYTE_TYPE_LEAD - lead byte of a double-byte character.
  • HaruEncoder::BYTE_TYPE_TRAIL - trailing byte of a double-byte character.
  • HaruEncoder::BYTE_TYPE_UNKNOWN - invalid encoder or cannot detect the byte type.

错误／异常

发生错误时抛出 HaruException 异常。

HaruEncoder
HaruEncoder::getType
HaruEncoder


Get the type of the encoder

HaruEncoder::getByteType
HaruEncoder::getUnicode
HaruEncoder
PHP Manual

HaruEncoder::getType

(PECL haru >= 0.0.1)

HaruEncoder::getType — Get the type of the encoder

说明

int HaruEncoder::getType ( void )

Get the type of the encoder.

参数

此函数没有参数。

返回值

Returns the type of the encoder. The result is one of the following values:

  • HaruEncoder::TYPE_SINGLE_BYTE - the encoder is for single byte characters.
  • HaruEncoder::TYPE_DOUBLE_BYTE - the encoder is for multibyte characters.
  • HaruEncoder::TYPE_UNINITIALIZED - the encoder is not initialized.
  • HaruEncoder::UNKNOWN - the encoder is invalid.

错误／异常

发生错误时抛出 HaruException 异常。

HaruEncoder::getByteType
HaruEncoder::getUnicode
HaruEncoder


Convert the specified character to unicode

HaruEncoder::getType
HaruEncoder::getWritingMode
HaruEncoder
PHP Manual

HaruEncoder::getUnicode

(PECL haru >= 0.0.1)

HaruEncoder::getUnicode — Convert the specified character to unicode

说明

int HaruEncoder::getUnicode ( int $character )

Converts the specified character to unicode.

参数

character

The character code to convert.

返回值

错误／异常

发生错误时抛出 HaruException 异常。

HaruEncoder::getType
HaruEncoder::getWritingMode
HaruEncoder


Get the writing mode of the encoder

HaruEncoder::getUnicode
HaruOutline
HaruEncoder
PHP Manual

HaruEncoder::getWritingMode

(PECL haru >= 0.0.1)

HaruEncoder::getWritingMode — Get the writing mode of the encoder

说明

int HaruEncoder::getWritingMode ( void )

Get the writing mode of the encoder.

参数

此函数没有参数。

返回值

Returns the writing mode of the encoder. The result value is on of the following:

  • HaruEncoder::WMODE_HORIZONTAL - horizontal writing mode.
  • HaruEncoder::WMODE_VERTICAL - vertical writing mode.

错误／异常

发生错误时抛出 HaruException 异常。

HaruEncoder::getUnicode
HaruOutline
HaruEncoder


The HaruOutline class

(PECL haru >= 0.0.1)

简介

Haru PDF Outline Class.

类摘要

HaruOutline {
/* 方法 */
bool setDestination ( object $destination )
bool setOpened ( bool $opened )
}

Table of Contents

  • HaruOutline::setDestination — Set the destination for the outline
  • HaruOutline::setOpened — Set the initial state of the outline
HaruEncoder::getWritingMode
HaruOutline::setDestination
haru


Set the destination for the outline

HaruOutline
HaruOutline::setOpened
HaruOutline
PHP Manual

HaruOutline::setDestination

(PECL haru >= 0.0.1)

HaruOutline::setDestination — Set the destination for the outline

说明

bool HaruOutline::setDestination ( object $destination )

Sets a destination object which becomes a target to jump to when the outline is clicked.

参数

destination

A valid HaruDestination instance.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruOutline
HaruOutline::setOpened
HaruOutline


Set the initial state of the outline

HaruOutline::setDestination
HaruAnnotation
HaruOutline
PHP Manual

HaruOutline::setOpened

(PECL haru >= 0.0.1)

HaruOutline::setOpened — Set the initial state of the outline

说明

bool HaruOutline::setOpened ( bool $opened )

Defines whether this node is opened or not when the outline is displayed for the first time.

参数

opened

TRUE means open, FALSE - closed.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruOutline::setDestination
HaruAnnotation
HaruOutline


The HaruAnnotation class

(PECL haru >= 0.0.1)

简介

Haru PDF Annotation Class.

类摘要

HaruAnnotation {
/* 方法 */
bool setBorderStyle ( float $width , int $dash_on , int $dash_off )
bool setHighlightMode ( int $mode )
bool setIcon ( int $icon )
bool setOpened ( bool $opened )
}

预定义常量

Type | Name | Description
int | HaruAnnotation::NO_HIGHLIGHT |
int | HaruAnnotation::INVERT_BOX |
int | HaruAnnotation::INVERT_BORDER |
int | HaruAnnotation::DOWN_APPEARANCE |
int | HaruAnnotation::ICON_COMMENT |
int | HaruAnnotation::ICON_KEY |
int | HaruAnnotation::ICON_NOTE |
int | HaruAnnotation::ICON_HELP |
int | HaruAnnotation::ICON_NEW_PARAGRAPH |
int | HaruAnnotation::ICON_PARAGRAPH |
int | HaruAnnotation::ICON_INSERT |

Table of Contents

  • HaruAnnotation::setBorderStyle — Set the border style of the annotation
  • HaruAnnotation::setHighlightMode — Set the highlighting mode of the annotation
  • HaruAnnotation::setIcon — Set the icon style of the annotation
  • HaruAnnotation::setOpened — Set the initial state of the annotation
HaruOutline::setOpened
HaruAnnotation::setBorderStyle
haru


Set the border style of the annotation

HaruAnnotation
HaruAnnotation::setHighlightMode
HaruAnnotation
PHP Manual

HaruAnnotation::setBorderStyle

(PECL haru >= 0.0.1)

HaruAnnotation::setBorderStyle — Set the border style of the annotation

说明

bool HaruAnnotation::setBorderStyle ( float $width , int $dash_on , int $dash_off )

Defines the style of the border of the annotation. This function may be used with link annotations only.

参数

width

The width of the border line.

dash_on

The dash style.

dash_off

The dash style.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruAnnotation
HaruAnnotation::setHighlightMode
HaruAnnotation


Set the highlighting mode of the annotation

HaruAnnotation::setBorderStyle
HaruAnnotation::setIcon
HaruAnnotation
PHP Manual

HaruAnnotation::setHighlightMode

(PECL haru >= 0.0.1)

HaruAnnotation::setHighlightMode — Set the highlighting mode of the annotation

说明

bool HaruAnnotation::setHighlightMode ( int $mode )

Defines the appearance of the annotation when clicked. This function may be used with link annotations only.

参数

mode

The highlighting mode of the annotation. Can take only these values:

  • HaruAnnotation::NO_HIGHLIGHT - no highlighting.
  • HaruAnnotation::INVERT_BOX - invert the contents of the annotation.
  • HaruAnnotation::INVERT_BORDER - invert the border of the annotation.
  • HaruAnnotation::DOWN_APPEARANCE - dent the annotation.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruAnnotation::setBorderStyle
HaruAnnotation::setIcon
HaruAnnotation


Set the icon style of the annotation

HaruAnnotation::setHighlightMode
HaruAnnotation::setOpened
HaruAnnotation
PHP Manual

HaruAnnotation::setIcon

(PECL haru >= 0.0.1)

HaruAnnotation::setIcon — Set the icon style of the annotation

说明

bool HaruAnnotation::setIcon ( int $icon )

Defines the style of the annotation icon. This function may be used with text annotations only.

参数

icon

The style of the icon. Can take only these values:

  • HaruAnnotation::ICON_COMMENT
  • HaruAnnotation::ICON_KEY
  • HaruAnnotation::ICON_NOTE
  • HaruAnnotation::ICON_HELP
  • HaruAnnotation::ICON_NEW_PARAGRAPH
  • HaruAnnotation::ICON_PARAGRAPH
  • HaruAnnotation::ICON_INSERT

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruAnnotation::setHighlightMode
HaruAnnotation::setOpened
HaruAnnotation


Set the initial state of the annotation

HaruAnnotation::setIcon
HaruDestination
HaruAnnotation
PHP Manual

HaruAnnotation::setOpened

(PECL haru >= 0.0.1)

HaruAnnotation::setOpened — Set the initial state of the annotation

说明

bool HaruAnnotation::setOpened ( bool $opened )

Defines whether the annotation is initially displayed open. This function may be used with text annotations only.

参数

opened

TRUE means the annotation is initially displayed open, FALSE - means it's closed.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruAnnotation::setIcon
HaruDestination
HaruAnnotation


The HaruDestination class

(PECL haru >= 0.0.1)

简介

Haru PDF Destination Class.

类摘要

HaruDestination {
/* 方法 */
bool setFit ( void )
bool setFitB ( void )
bool setFitBH ( float $top )
bool setFitBV ( float $left )
bool setFitH ( float $top )
bool setFitR ( float $left , float $bottom , float $right , float $top )
bool setFitV ( float $left )
bool setXYZ ( float $left , float $top , float $zoom )
}

Table of Contents

  • HaruDestination::setFit — Set the appearance of the page to fit the window
  • HaruDestination::setFitB — Set the appearance of the page to fit the bounding box of the page within the window
  • HaruDestination::setFitBH — Set the appearance of the page to fit the width of the bounding box
  • HaruDestination::setFitBV — Set the appearance of the page to fit the height of the boudning box
  • HaruDestination::setFitH — Set the appearance of the page to fit the window width
  • HaruDestination::setFitR — Set the appearance of the page to fit the specified rectangle
  • HaruDestination::setFitV — Set the appearance of the page to fit the window height
  • HaruDestination::setXYZ — Set the appearance of the page
HaruAnnotation::setOpened
HaruDestination::setFit
haru


Set the appearance of the page to fit the window

HaruDestination
HaruDestination::setFitB
HaruDestination
PHP Manual

HaruDestination::setFit

(PECL haru >= 0.0.1)

HaruDestination::setFit — Set the appearance of the page to fit the window

说明

bool HaruDestination::setFit ( void )

Defines the appearance of the page to fit the window.

参数

此函数没有参数。

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruDestination
HaruDestination::setFitB
HaruDestination


Set the appearance of the page to fit the bounding box of the page within the window

HaruDestination::setFit
HaruDestination::setFitBH
HaruDestination
PHP Manual

HaruDestination::setFitB

(PECL haru >= 0.0.1)

HaruDestination::setFitB — Set the appearance of the page to fit the bounding box of the page within the window

说明

bool HaruDestination::setFitB ( void )

Defines the appearance of the page to fit the bounding box of the page within the window.

参数

此函数没有参数。

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruDestination::setFit
HaruDestination::setFitBH
HaruDestination


Set the appearance of the page to fit the width of the bounding box

HaruDestination::setFitB
HaruDestination::setFitBV
HaruDestination
PHP Manual

HaruDestination::setFitBH

(PECL haru >= 0.0.1)

HaruDestination::setFitBH — Set the appearance of the page to fit the width of the bounding box

说明

bool HaruDestination::setFitBH ( float $top )

Defines the appearance of the page to magnifying to fit the width of the bounding box and setting the top position of the page to the value of top.

参数

top

The top coordinates of the page.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruDestination::setFitB
HaruDestination::setFitBV
HaruDestination


Set the appearance of the page to fit the height of the boudning box

HaruDestination::setFitBH
HaruDestination::setFitH
HaruDestination
PHP Manual

HaruDestination::setFitBV

(PECL haru >= 0.0.1)

HaruDestination::setFitBV — Set the appearance of the page to fit the height of the boudning box

说明

bool HaruDestination::setFitBV ( float $left )

Defines the appearance of the page to magnifying to fit the height of the bounding box and setting the left position of the page to the value of left.

参数

left

The left coordinates of the page.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruDestination::setFitBH
HaruDestination::setFitH
HaruDestination


Set the appearance of the page to fit the window width

HaruDestination::setFitBV
HaruDestination::setFitR
HaruDestination
PHP Manual

HaruDestination::setFitH

(PECL haru >= 0.0.1)

HaruDestination::setFitH — Set the appearance of the page to fit the window width

说明

bool HaruDestination::setFitH ( float $top )

Defines the appearance of the page to fit the window width and sets the top position of the page to the value of top.

参数

top

The top position of the page.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruDestination::setFitBV
HaruDestination::setFitR
HaruDestination


Set the appearance of the page to fit the specified rectangle

HaruDestination::setFitH
HaruDestination::setFitV
HaruDestination
PHP Manual

HaruDestination::setFitR

(PECL haru >= 0.0.1)

HaruDestination::setFitR — Set the appearance of the page to fit the specified rectangle

说明

bool HaruDestination::setFitR ( float $left , float $bottom , float $right , float $top )

Defines the appearance of the page to fit the rectangle by the parameters.

参数

left

The left coordinates of the page.

bottom

The bottom coordinates of the page.

right

The right coordinates of the page.

top

The top coordinates of the page.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruDestination::setFitH
HaruDestination::setFitV
HaruDestination


Set the appearance of the page to fit the window height

HaruDestination::setFitR
HaruDestination::setXYZ
HaruDestination
PHP Manual

HaruDestination::setFitV

(PECL haru >= 0.0.1)

HaruDestination::setFitV — Set the appearance of the page to fit the window height

说明

bool HaruDestination::setFitV ( float $left )

Defines the appearance of the page to fit the window height.

参数

left

The left position of the page.

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruDestination::setFitR
HaruDestination::setXYZ
HaruDestination


Set the appearance of the page

HaruDestination::setFitV
Ming
HaruDestination
PHP Manual

HaruDestination::setXYZ

(PECL haru >= 0.0.1)

HaruDestination::setXYZ — Set the appearance of the page

说明

bool HaruDestination::setXYZ ( float $left , float $top , float $zoom )

Defines the appearance of the page using three parameters: left, top and zoom.

参数

left

The left position of the page.

top

The top position of the page.

zoom

The magnification factor. The value must be between 0.08 (8%) and 32 (3200%).

返回值

Returns TRUE on success.

错误／异常

发生错误时抛出 HaruException 异常。

HaruDestination::setFitV
Ming
HaruDestination


Ming (flash)

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • SWFAction Examples
    • SWFSPrite basic examples
  • Ming 函数
    • ming_keypress — Returns the action flag for keyPress(char)
    • ming_setcubicthreshold — Set cubic threshold
    • ming_setscale — Set the global scaling factor.
    • ming_setswfcompression — Sets the SWF output compression
    • ming_useconstants — Use constant pool
    • ming_useswfversion — Sets the SWF version
  • SWFAction — The SWFAction class
    • SWFAction::__construct — Creates a new SWFAction
  • SWFBitmap — The SWFBitmap class
    • SWFBitmap::__construct — Loads Bitmap object
    • SWFBitmap::getHeight — Returns the bitmap's height
    • SWFBitmap::getWidth — Returns the bitmap's width
  • SWFButton — The SWFButton class
    • SWFButton::addAction — Adds an action
    • SWFButton::addASound — Associates a sound with a button transition
    • SWFButton::addShape — Adds a shape to a button
    • SWFButton::__construct — Creates a new Button
    • SWFButton::setAction — Sets the action
    • SWFButton::setDown — Alias for addShape(shape, SWFBUTTON_DOWN)
    • SWFButton::setHit — Alias for addShape(shape, SWFBUTTON_HIT)
    • SWFButton::setMenu — enable track as menu button behaviour
    • SWFButton::setOver — Alias for addShape(shape, SWFBUTTON_OVER)
    • SWFButton::setUp — Alias for addShape(shape, SWFBUTTON_UP)
  • SWFDisplayItem — The SWFDisplayItem class
    • SWFDisplayItem::addAction — Adds this SWFAction to the given SWFSprite instance
    • SWFDisplayItem::addColor — Adds the given color to this item's color transform
    • SWFDisplayItem::endMask — Another way of defining a MASK layer
    • SWFDisplayItem::getRot — 说明
    • SWFDisplayItem::getX — 说明
    • SWFDisplayItem::getXScale — 说明
    • SWFDisplayItem::getXSkew — 说明
    • SWFDisplayItem::getY — 说明
    • SWFDisplayItem::getYScale — 说明
    • SWFDisplayItem::getYSkew — 说明
    • SWFDisplayItem::move — Moves object in relative coordinates
    • SWFDisplayItem::moveTo — Moves object in global coordinates
    • SWFDisplayItem::multColor — Multiplies the item's color transform
    • SWFDisplayItem::remove — Removes the object from the movie
    • SWFDisplayItem::rotate — Rotates in relative coordinates
    • SWFDisplayItem::rotateTo — Rotates the object in global coordinates
    • SWFDisplayItem::scale — Scales the object in relative coordinates
    • SWFDisplayItem::scaleTo — Scales the object in global coordinates
    • SWFDisplayItem::setDepth — Sets z-order
    • SWFDisplayItem::setMaskLevel — Defines a MASK layer at level
    • SWFDisplayItem::setMatrix — Sets the item's transform matrix
    • SWFDisplayItem::setName — Sets the object's name
    • SWFDisplayItem::setRatio — Sets the object's ratio
    • SWFDisplayItem::skewX — Sets the X-skew
    • SWFDisplayItem::skewXTo — Sets the X-skew
    • SWFDisplayItem::skewY — Sets the Y-skew
    • SWFDisplayItem::skewYTo — Sets the Y-skew
  • SWFFill — The SWFFill class
    • SWFFill::moveTo — Moves fill origin
    • SWFFill::rotateTo — Sets fill's rotation
    • SWFFill::scaleTo — Sets fill's scale
    • SWFFill::skewXTo — Sets fill x-skew
    • SWFFill::skewYTo — Sets fill y-skew
  • SWFFont — The SWFFont class
    • SWFFont::__construct — Loads a font definition
    • SWFFont::getAscent — Returns the ascent of the font, or 0 if not available
    • SWFFont::getDescent — Returns the descent of the font, or 0 if not available
    • SWFFont::getLeading — Returns the leading of the font, or 0 if not available
    • SWFFont::getShape — Returns the glyph shape of a char as a text string
    • SWFFont::getUTF8Width — Calculates the width of the given string in this font at full height
    • SWFFont::getWidth — Returns the string's width
  • SWFFontChar — The SWFFontChar class
    • SWFFontChar::addChars — Adds characters to a font for exporting font
    • SWFFontChar::addUTF8Chars — Adds characters to a font for exporting font
  • SWFGradient — The SWFGradient class
    • SWFGradient::addEntry — Adds an entry to the gradient list
    • SWFGradient::__construct — Creates a gradient object
  • SWFMorph — The SWFMorph class
    • SWFMorph::__construct — Creates a new SWFMorph object
    • SWFMorph::getShape1 — Gets a handle to the starting shape
    • SWFMorph::getShape2 — Gets a handle to the ending shape
  • SWFMovie — The SWFMovie class
    • SWFMovie::add — Adds any type of data to a movie
    • SWFMovie::addExport — 说明
    • SWFMovie::addFont — 说明
    • SWFMovie::__construct — Creates a new movie object, representing an SWF version 4 movie
    • SWFMovie::importChar — 说明
    • SWFMovie::importFont — 说明
    • SWFMovie::labelFrame — Labels a frame
    • SWFMovie::nextFrame — Moves to the next frame of the animation
    • SWFMovie::output — Dumps your lovingly prepared movie out
    • SWFMovie::remove — Removes the object instance from the display list
    • SWFMovie::save — Saves the SWF movie in a file
    • SWFMovie::saveToFile — 说明
    • SWFMovie::setbackground — Sets the background color
    • SWFMovie::setDimension — Sets the movie's width and height
    • SWFMovie::setFrames — Sets the total number of frames in the animation
    • SWFMovie::setRate — Sets the animation's frame rate
    • SWFMovie::startSound — 说明
    • SWFMovie::stopSound — 说明
    • SWFMovie::streamMP3 — Streams a MP3 file
    • SWFMovie::writeExports — 说明
  • SWFPrebuiltClip — The SWFPrebuiltClip class
    • SWFPrebuiltClip::__construct — Returns a SWFPrebuiltClip object
  • SWFShape — The SWFShape class
    • SWFShape::addFill — Adds a solid fill to the shape
    • SWFShape::__construct — Creates a new shape object
    • SWFShape::drawArc — Draws an arc of radius r centered at the current location, from angle startAngle to angle endAngle measured clockwise from 12 o'clock
    • SWFShape::drawCircle — Draws a circle of radius r centered at the current location, in a counter-clockwise fashion
    • SWFShape::drawCubic — Draws a cubic bezier curve using the current position and the three given points as control points
    • SWFShape::drawCubicTo — Draws a cubic bezier curve using the current position and the three given points as control points
    • SWFShape::drawCurve — Draws a curve (relative)
    • SWFShape::drawCurveTo — Draws a curve
    • SWFShape::drawGlyph — Draws the first character in the given string into the shape using the glyph definition from the given font
    • SWFShape::drawLine — Draws a line (relative)
    • SWFShape::drawLineTo — Draws a line
    • SWFShape::movePen — Moves the shape's pen (relative)
    • SWFShape::movePenTo — Moves the shape's pen
    • SWFShape::setLeftFill — Sets left rasterizing color
    • SWFShape::setLine — Sets the shape's line style
    • SWFShape::setRightFill — Sets right rasterizing color
  • SWFSound — The SWFSound class
    • SWFSound::__construct — Returns a new SWFSound object from given file
  • SWFSoundInstance — The SWFSoundInstance class
    • SWFSoundInstance::loopCount — 说明
    • SWFSoundInstance::loopInPoint — 说明
    • SWFSoundInstance::loopOutPoint — 说明
    • SWFSoundInstance::noMultiple — 说明
  • SWFSprite — The SWFSprite class
    • SWFSprite::add — Adds an object to a sprite
    • SWFSprite::__construct — Creates a movie clip (a sprite)
    • SWFSprite::labelFrame — Labels frame
    • SWFSprite::nextFrame — Moves to the next frame of the animation
    • SWFSprite::remove — Removes an object to a sprite
    • SWFSprite::setFrames — Sets the total number of frames in the animation
    • SWFSprite::startSound — 说明
    • SWFSprite::stopSound — 说明
  • SWFText — The SWFText class
    • SWFText::addString — Draws a string
    • SWFText::addUTF8String — Writes the given text into this SWFText object at the current pen position, using the current font, height, spacing, and color
    • SWFText::__construct — Creates a new SWFText object
    • SWFText::getAscent — Returns the ascent of the current font at its current size, or 0 if not available
    • SWFText::getDescent — Returns the descent of the current font at its current size, or 0 if not available
    • SWFText::getLeading — Returns the leading of the current font at its current size, or 0 if not available
    • SWFText::getUTF8Width — calculates the width of the given string in this text objects current font and size
    • SWFText::getWidth — Computes string's width
    • SWFText::moveTo — Moves the pen
    • SWFText::setColor — Sets the current text color
    • SWFText::setFont — Sets the current font
    • SWFText::setHeight — Sets the current font height
    • SWFText::setSpacing — Sets the current font spacing
  • SWFTextField — The SWFTextField class
    • SWFTextField::addChars — adds characters to a font that will be available within a textfield
    • SWFTextField::addString — Concatenates the given string to the text field
    • SWFTextField::align — Sets the text field alignment
    • SWFTextField::__construct — Creates a text field object
    • SWFTextField::setBounds — Sets the text field width and height
    • SWFTextField::setColor — Sets the color of the text field
    • SWFTextField::setFont — Sets the text field font
    • SWFTextField::setHeight — Sets the font height of this text field font
    • SWFTextField::setIndentation — Sets the indentation of the first line
    • SWFTextField::setLeftMargin — Sets the left margin width of the text field
    • SWFTextField::setLineSpacing — Sets the line spacing of the text field
    • SWFTextField::setMargins — Sets the margins width of the text field
    • SWFTextField::setName — Sets the variable name
    • SWFTextField::setPadding — Sets the padding of this textfield
    • SWFTextField::setRightMargin — Sets the right margin width of the text field
  • SWFVideoStream — The SWFVideoStream class
    • SWFVideoStream::__construct — Returns a SWFVideoStream object
    • SWFVideoStream::getNumFrames — Returns the number of frames in the video
    • SWFVideoStream::setDimension — Sets video dimension
HaruDestination::setXYZ
简介
非文本内容的 MIME 输出


简介

First of all: Ming is not an acronym. Ming is an open-source (LGPL) library which allows you to create SWF ("Flash") format movies. Ming supports almost all of Flash 4's features, including: shapes, gradients, bitmaps (pngs and jpegs), morphs ("shape tweens"), text, buttons, actions, sprites ("movie clips"), streaming mp3, and color transforms --the only thing that's missing is sound events.

Note that all values specifying length, distance, size, etc. are in "twips", twenty units per pixel. That's pretty much arbitrary, though, since the player scales the movie to whatever pixel size is specified in the embed/object tag, or the entire frame if not embedded.

Ming offers a number of advantages over the existing PHP/libswf module. You can use Ming anywhere you can compile the code, whereas libswf is closed-source and only available for a few platforms, Windows not one of them. Ming provides some insulation from the mundane details of the SWF file format, wrapping the movie elements in PHP objects. Also, Ming is still being maintained; if there's a feature that you want to see, just let us know at » http://www.libming.org/.

Warning

此扩展是实验性 的。 此扩展的表象，包括其函数名称以及其他此扩展的相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本扩展风险自担 。

Note:

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.3.0.

Ming
安装／配置
Ming


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Ming


需求

To use Ming with PHP, you first need to build and install the Ming library. Source code and installation instructions are available at the Ming home page: » http://www.libming.org/ along with examples, a small tutorial, and the latest news.

Download the ming archive. Unpack the archive. Go in the Ming directory. make. make install.

This will build libming.so and install it into /usr/lib/, and copy ming.h into /usr/include/. Edit the PREFIX= line in the Makefile to change the installation directory.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/ming.

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.3.0

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

MING_NEW (integer)
MING_ZLIB (integer)
SWFBUTTON_HIT (integer)
SWFBUTTON_DOWN (integer)
SWFBUTTON_OVER (integer)
SWFBUTTON_UP (integer)
SWFBUTTON_MOUSEUPOUTSIDE (integer)
SWFBUTTON_DRAGOVER (integer)
SWFBUTTON_DRAGOUT (integer)
SWFBUTTON_MOUSEUP (integer)
SWFBUTTON_MOUSEDOWN (integer)
SWFBUTTON_MOUSEOUT (integer)
SWFBUTTON_MOUSEOVER (integer)
SWFFILL_RADIAL_GRADIENT (integer)
SWFFILL_LINEAR_GRADIENT (integer)
SWFFILL_TILED_BITMAP (integer)
SWFFILL_CLIPPED_BITMAP (integer)
SWFTEXTFIELD_HASLENGTH (integer)
SWFTEXTFIELD_NOEDIT (integer)
SWFTEXTFIELD_PASSWORD (integer)
SWFTEXTFIELD_MULTILINE (integer)
SWFTEXTFIELD_WORDWRAP (integer)
SWFTEXTFIELD_DRAWBOX (integer)
SWFTEXTFIELD_NOSELECT (integer)
SWFTEXTFIELD_HTML (integer)
SWFTEXTFIELD_ALIGN_LEFT (integer)
SWFTEXTFIELD_ALIGN_RIGHT (integer)
SWFTEXTFIELD_ALIGN_CENTER (integer)
SWFTEXTFIELD_ALIGN_JUSTIFY (integer)
SWFACTION_ONLOAD (integer)
SWFACTION_ENTERFRAME (integer)
SWFACTION_UNLOAD (integer)
SWFACTION_MOUSEMOVE (integer)
SWFACTION_MOUSEDOWN (integer)
SWFACTION_MOUSEUP (integer)
SWFACTION_KEYDOWN (integer)
SWFACTION_KEYUP (integer)
SWFACTION_DATA (integer)
资源类型
范例
Ming


范例

Table of Contents

  • SWFAction Examples
  • SWFSPrite basic examples
预定义常量
SWFAction Examples
Ming


SWFAction Examples

This simple example will move the red square across the window.

Example #1 swfaction() example

<?php
  $s = new SWFShape();
  $f = $s->addFill(0xff, 0, 0);
  $s->setRightFill($f);

  $s->movePenTo(-500, -500);
  $s->drawLineTo(500, -500);
  $s->drawLineTo(500, 500);
  $s->drawLineTo(-500, 500);
  $s->drawLineTo(-500, -500);

  $p = new SWFSprite();
  $i = $p->add($s);
  $i->setDepth(1);
  $p->nextFrame();

  for ($n=0; $n<5; ++$n) {
    $i->rotate(-15);
    $p->nextFrame();
  }

  $m = new SWFMovie();
  $m->setBackground(0xff, 0xff, 0xff);
  $m->setDimension(6000, 4000);

  $i = $m->add($p);
  $i->setDepth(1);
  $i->moveTo(-500,2000);
  $i->setName("box");

  $m->add(new SWFAction("/box.x += 3;"));
  $m->nextFrame();
  $m->add(new SWFAction("gotoFrame(0); play();"));
  $m->nextFrame();

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

This simple example tracks down your mouse on the screen.

Example #2 swfaction() example

<?php

  $m = new SWFMovie();
  $m->setRate(36.0);
  $m->setDimension(1200, 800);
  $m->setBackground(0, 0, 0);

  /* mouse tracking sprite - empty, but follows mouse so we can
     get its x and y coordinates */

  $i = $m->add(new SWFSprite());
  $i->setName('mouse');

  $m->add(new SWFAction("
    startDrag('/mouse', 1); /* '1' means lock sprite to the mouse */
  "));

  /* might as well turn off antialiasing, since these are just squares. */

  $m->add(new SWFAction("
    this.quality = 0;
  "));

  /* morphing box */
  $r = new SWFMorph();
  $s = $r->getShape1();

  /* Note this is backwards from normal shapes.  No idea why. */
  $s->setLeftFill($s->addFill(0xff, 0xff, 0xff));
  $s->movePenTo(-40, -40);
  $s->drawLine(80, 0);
  $s->drawLine(0, 80);
  $s->drawLine(-80, 0);
  $s->drawLine(0, -80);

  $s = $r->getShape2();

  $s->setLeftFill($s->addFill(0x00, 0x00, 0x00));
  $s->movePenTo(-1, -1);
  $s->drawLine(2, 0);
  $s->drawLine(0, 2);
  $s->drawLine(-2, 0);
  $s->drawLine(0, -2);

  /* sprite container for morphing box -
     this is just a timeline w/ the box morphing */

  $box = new SWFSprite();
  $box->add(new SWFAction("
    stop();
  "));
  $i = $box->add($r);

  for ($n=0; $n<=20; ++$n) {
    $i->setRatio($n/20);
    $box->nextFrame();
  }

  /* this container sprite allows us to use the same action code many times */

  $cell = new SWFSprite();
  $i = $cell->add($box);
  $i->setName('box');

  $cell->add(new SWFAction("

    setTarget('box');

    /* ...x means the x coordinate of the parent, i.e. (..).x */
    dx = (/mouse.x + random(6)-3 - ...x)/5;
    dy = (/mouse.y + random(6)-3 - ...y)/5;
    gotoFrame(int(dx*dx + dy*dy));

  "));

  $cell->nextFrame();
  $cell->add(new SWFAction("

    gotoFrame(0);
    play();

  "));

  $cell->nextFrame();

  /* finally, add a bunch of the cells to the movie */

  for ($x=0; $x<12; ++$x) {
    for ($y=0; $y<8; ++$y) {
      $i = $m->add($cell);
      $i->moveTo(100*$x+50, 100*$y+50);
    }
  }

  $m->nextFrame();

  $m->add(new SWFAction("

    gotoFrame(1);
    play();

  "));

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

Same as above, but with nice colored balls...

Example #3 swfaction() example

<?php

  $m = new SWFMovie();
  $m->setDimension(11000, 8000);
  $m->setBackground(0x00, 0x00, 0x00);

  $m->add(new SWFAction("

this.quality = 0;
/frames.visible = 0;
startDrag('/mouse', 1);

  "));

  // mouse tracking sprite
  $t = new SWFSprite();
  $i = $m->add($t);
  $i->setName('mouse');

  $g = new SWFGradient();
  $g->addEntry(0, 0xff, 0xff, 0xff, 0xff);
  $g->addEntry(0.1, 0xff, 0xff, 0xff, 0xff);
  $g->addEntry(0.5, 0xff, 0xff, 0xff, 0x5f);
  $g->addEntry(1.0, 0xff, 0xff, 0xff, 0);

  // gradient shape thing
  $s = new SWFShape();
  $f = $s->addFill($g, SWFFILL_RADIAL_GRADIENT);
  $f->scaleTo(0.03);
  $s->setRightFill($f);
  $s->movePenTo(-600, -600);
  $s->drawLine(1200, 0);
  $s->drawLine(0, 1200);
  $s->drawLine(-1200, 0);
  $s->drawLine(0, -1200);

  // need to make this a sprite so we can multColor it
  $p = new SWFSprite();
  $p->add($s);
  $p->nextFrame();

  // put the shape in here, each frame a different color
  $q = new SWFSprite();
  $q->add(new SWFAction("gotoFrame(random(7)+1); stop();"));
  $i = $q->add($p);

  $i->multColor(1.0, 1.0, 1.0);
  $q->nextFrame();
  $i->multColor(1.0, 0.5, 0.5);
  $q->nextFrame();
  $i->multColor(1.0, 0.75, 0.5);
  $q->nextFrame();
  $i->multColor(1.0, 1.0, 0.5);
  $q->nextFrame();
  $i->multColor(0.5, 1.0, 0.5);
  $q->nextFrame();
  $i->multColor(0.5, 0.5, 1.0);
  $q->nextFrame();
  $i->multColor(1.0, 0.5, 1.0);
  $q->nextFrame();

  // finally, this one contains the action code
  $p = new SWFSprite();
  $i = $p->add($q);
  $i->setName('frames');
  $p->add(new SWFAction("

dx = (/:mousex-/:lastx)/3 + random(10)-5;
dy = (/:mousey-/:lasty)/3;
x = /:mousex;
y = /:mousey;
alpha = 100;

  "));
  $p->nextFrame();

  $p->add(new SWFAction("

this.x = x;
this.y = y;
this.alpha = alpha;
x += dx;
y += dy;
dy += 3;
alpha -= 8;

  "));
  $p->nextFrame();

  $p->add(new SWFAction("prevFrame(); play();"));
  $p->nextFrame();

  $i = $m->add($p);
  $i->setName('frames');
  $m->nextFrame();

  $m->add(new SWFAction("

lastx = mousex;
lasty = mousey;
mousex = /mouse.x;
mousey = /mouse.y;

++num;

if (num == 11)
  num = 1;

removeClip('char' & num);
duplicateClip(/frames, 'char' & num, num);

  "));

  $m->nextFrame();
  $m->add(new SWFAction("prevFrame(); play();"));

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

范例
SWFSPrite basic examples
范例


SWFSPrite basic examples

This simple example will spin gracefully a big red square.

Example #1 swfsprite() example

<?php
$s = new SWFShape();
$s->setRightFill($s->addFill(0xff, 0, 0));
$s->movePenTo(-500, -500);
$s->drawLineTo(500, -500);
$s->drawLineTo(500, 500);
$s->drawLineTo(-500, 500);
$s->drawLineTo(-500, -500);

$p = new SWFSprite();
$i = $p->add($s);
$p->nextFrame();
$i->rotate(15);
$p->nextFrame();
$i->rotate(15);
$p->nextFrame();
$i->rotate(15);
$p->nextFrame();
$i->rotate(15);
$p->nextFrame();
$i->rotate(15);
$p->nextFrame();

$m = new SWFMovie();
$i = $m->add($p);
$i->moveTo(1500, 1000);
$i->setName("blah");

$m->setBackground(0xff, 0xff, 0xff);
$m->setDimension(3000, 2000);

header('Content-type: application/x-shockwave-flash');
$m->output();
?>

SWFAction Examples
Ming 函数
范例


Ming 函数

Table of Contents

  • ming_keypress — Returns the action flag for keyPress(char)
  • ming_setcubicthreshold — Set cubic threshold
  • ming_setscale — Set the global scaling factor.
  • ming_setswfcompression — Sets the SWF output compression
  • ming_useconstants — Use constant pool
  • ming_useswfversion — Sets the SWF version
SWFSPrite basic examples
ming_keypress
Ming


Returns the action flag for keyPress(char)

Ming 函数
ming_setcubicthreshold
Ming 函数
PHP Manual

ming_keypress

(PHP 5 <= 5.3.0, PECL ming SVN)

ming_keypress — Returns the action flag for keyPress(char)

说明

int ming_keypress ( string $char )
Warning

本函数还未编写文档，仅有参数列表。

Ming 函数
ming_setcubicthreshold
Ming 函数


Set cubic threshold

ming_keypress
ming_setscale
Ming 函数
PHP Manual

ming_setcubicthreshold

(PHP 4 >= 4.0.5, PHP 5, PHP 7, PECL ming SVN)

ming_setcubicthreshold — Set cubic threshold

说明

void ming_setcubicthreshold ( int $threshold )

Sets the threshold error for drawing cubic beziers.

参数

threshold

The Threshold. Lower is more accurate, hence larger file size.

返回值

没有返回值。

ming_keypress
ming_setscale
Ming 函数


Set the global scaling factor.

ming_setcubicthreshold
ming_setswfcompression
Ming 函数
PHP Manual

ming_setscale

(PHP 4 >= 4.0.5, PHP 5, PHP 7, PECL ming SVN)

ming_setscale — Set the global scaling factor.

说明

void ming_setscale ( float $scale )

Sets the scale of the output SWF. Inside the SWF file, coordinates are measured in TWIPS, rather than PIXELS. There are 20 TWIPS in 1 pixel.

参数

scale

The scale to be set.

返回值

没有返回值。

ming_setcubicthreshold
ming_setswfcompression
Ming 函数


Sets the SWF output compression

ming_setscale
ming_useconstants
Ming 函数
PHP Manual

ming_setswfcompression

(PHP 5.2.1-5.3.0, PHP 7, PECL ming SVN)

ming_setswfcompression — Sets the SWF output compression

说明

void ming_setswfcompression ( int $level )

Sets the SWF output compression level.

参数

level

The new compression level. Should be a value between 1 and 9 inclusive.

返回值

没有返回值。

ming_setscale
ming_useconstants
Ming 函数


Use constant pool

ming_setswfcompression
ming_useswfversion
Ming 函数
PHP Manual

ming_useconstants

(PHP 5 <= 5.3.0, PECL ming SVN)

ming_useconstants — Use constant pool

说明

void ming_useconstants ( int $use )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

ming_setswfcompression
ming_useswfversion
Ming 函数


Sets the SWF version

ming_useconstants
SWFAction
Ming 函数
PHP Manual

ming_useswfversion

(PHP 4 >= 4.2.0, PHP 5 <= 5.3.0, PECL ming SVN)

ming_useswfversion — Sets the SWF version

说明

void ming_useswfversion ( int $version )

Sets the SWF version to be used in the movie. This affect the bahaviour of Action Script.

参数

version

SWF version to use.

返回值

没有返回值。

范例

Example #1 ming_useswfversion() example

<?php

$movie = new SWFMovie();
ming_useswfversion(4); // Flash 4

?>

ming_useconstants
SWFAction
Ming 函数


The SWFAction class

(PHP 5 <= 5.3.0, PECL ming SVN)

简介

SWFAction.

类摘要

SWFAction {
/* 方法 */
__construct ( string $script )
}

说明

The script syntax is based on the C language, but with a lot taken out- the SWF bytecode machine is just too simpleminded to do a lot of things we might like. For instance, we can't implement function calls without a tremendous amount of hackery because the jump bytecode has a hardcoded offset value. No pushing your calling address to the stack and returning- every function would have to know exactly where to return to.

So what's left? The compiler recognises the following tokens:

  • break
  • for
  • continue
  • if
  • else
  • do
  • while

There is no typed data; all values in the SWF action machine are stored as strings. The following functions can be used in expressions:

time()
Returns the number of milliseconds (?) elapsed since the movie started.
random(seed)
Returns a pseudo-random number in the range 0-seed.
length(expr)
Returns the length of the given expression.
int(number)
Returns the given number rounded down to the nearest integer.
concat(expr, expr)
Returns the concatenation of the given expressions.
ord(expr)
Returns the ASCII code for the given character
chr(num)
Returns the character for the given ASCII code
substr(string, location, length)
Returns the substring of length length at location location of the given string string.

Additionally, the following commands may be used:

duplicateClip(clip, name, depth)
Duplicate the named movie clip (aka sprite). The new movie clip has name name and is at depth depth.
removeClip(expr)
Removes the named movie clip.
trace(expr)
Write the given expression to the trace log. Doubtful that the browser plugin does anything with this.
startDrag(target, lock, [left, top, right, bottom])
Start dragging the movie clip target. The lock argument indicates whether to lock the mouse (?)- use 0 (FALSE) or 1 (TRUE). Optional parameters define a bounding area for the dragging.
stopDrag()
Stop dragging my heart around. And this movie clip, too.
callFrame(expr)
Call the named frame as a function.
getURL(url, target, [method])
Load the given URL into the named target. The target argument corresponds to HTML document targets (such as "_top" or "_blank"). The optional method argument can be POST or GET if you want to submit variables back to the server.
loadMovie(url, target)
Load the given URL into the named target. The target argument can be a frame name (I think), or one of the magical values "_level0" (replaces current movie) or "_level1" (loads new movie on top of current movie).
nextFrame()
Go to the next frame.
prevFrame()
Go to the last (or, rather, previous) frame.
play()
Start playing the movie.
stop()
Stop playing the movie.
toggleQuality()
Toggle between high and low quality.
stopSounds()
Stop playing all sounds.
gotoFrame(num)
Go to frame number num. Frame numbers start at 0.
gotoFrame(name)
Go to the frame named name. Which does a lot of good, since I haven't added frame labels yet.
setTarget(expr)
Sets the context for action. Or so they say- I really have no idea what this does.
And there's one weird extra thing. The expression frameLoaded(num) can be used in if statements and while loops to check if the given frame number has been loaded yet. Well, it's supposed to, anyway, but I've never tested it and I seriously doubt it actually works. You can just use /:framesLoaded instead.

Movie clips (all together now- aka sprites) have properties. You can read all of them (or can you?), you can set some of them, and here they are:

  • x
  • y
  • xScale
  • yScale
  • currentFrame - (read-only)
  • totalFrames - (read-only)
  • alpha - transparency level
  • visible - 1=on, 0=off (?)
  • width - (read-only)
  • height - (read-only)
  • rotation
  • target - (read-only) (???)
  • framesLoaded - (read-only)
  • name
  • dropTarget - (read-only) (???)
  • url - (read-only) (???)
  • highQuality - 1=high, 0=low (?)
  • focusRect - (???)
  • soundBufTime - (???)
So, setting a sprite's x position is as simple as /box.x = 100;. Why the slash in front of the box, though? That's how flash keeps track of the sprites in the movie, just like a Unix filesystem- here it shows that box is at the top level. If the sprite named box had another sprite named biff inside of it, you'd set its x position with /box/biff.x = 100;. At least, I think so; correct me if I'm wrong here.

Table of Contents

  • SWFAction::__construct — Creates a new SWFAction
ming_useswfversion
SWFAction::__construct
Ming


Creates a new SWFAction

SWFAction
SWFBitmap
SWFAction
PHP Manual

SWFAction::__construct

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFAction::__construct — Creates a new SWFAction

说明

SWFAction::__construct ( string $script )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Creates a new SWFAction and compiles the given script in it.

参数

script

An ActionScript snippet to associate with the SWFAction. See SWFAction for more details.

SWFAction
SWFBitmap
SWFAction


The SWFBitmap class

(PHP 5 <= 5.3.0, PECL ming SVN)

简介

SWFBitmap.

类摘要

SWFBitmap {
/* 方法 */
__construct ( mixed $file [, mixed $alphafile ] )
float getHeight ( void )
float getWidth ( void )
}

Table of Contents

  • SWFBitmap::__construct — Loads Bitmap object
  • SWFBitmap::getHeight — Returns the bitmap's height
  • SWFBitmap::getWidth — Returns the bitmap's width
SWFAction::__construct
SWFBitmap::__construct
Ming


Loads Bitmap object

SWFBitmap
SWFBitmap::getHeight
SWFBitmap
PHP Manual

SWFBitmap::__construct

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFBitmap::__construct — Loads Bitmap object

说明

SWFBitmap::__construct ( mixed $file [, mixed $alphafile ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Creates the new SWFBitmap object from the given file.

参数

For both parameters you can provide a file pointer returned by fopen() or the image data, as a binary string.

file

Note:

We can only deal with baseline (frame 0) jpegs, no baseline optimized or progressive scan jpegs!

You can't import png images directly, though- have to use the png2dbl utility to make a dbl ("define bits lossless") file from the png. The reason for this is that I don't want a dependency on the png library in ming- autoconf should solve this, but that's not set up yet.

alphafile

An MSK file to be used as an alpha mask for a JPEG image.

范例

Example #1 Importing a DBL file

<?php
$s = new SWFShape();
$f = $s->addFill(new SWFBitmap(file_get_contents("image.dbl")));
$s->setRightFill($f);

$s->drawLine(32, 0);
$s->drawLine(0, 32);
$s->drawLine(-32, 0);
$s->drawLine(0, -32);

$m = new SWFMovie();
$m->setDimension(32, 32);
$m->add($s);

header('Content-type: application/x-shockwave-flash');
$m->output();
?>

Example #2 Using an alpha mask

<?php

$s = new SWFShape();

// .msk file generated with "gif2mask" utility
$f = $s->addFill(new SWFBitmap(file_get_contents("alphafill.jpg"), file_get_contents("alphafill.msk")));
$s->setRightFill($f);

$s->drawLine(640, 0);
$s->drawLine(0, 480);
$s->drawLine(-640, 0);
$s->drawLine(0, -480);

$c = new SWFShape();
$c->setRightFill($c->addFill(0x99, 0x99, 0x99));
$c->drawLine(40, 0);
$c->drawLine(0, 40);
$c->drawLine(-40, 0);
$c->drawLine(0, -40);

$m = new SWFMovie();
$m->setDimension(640, 480);
$m->setBackground(0xcc, 0xcc, 0xcc);

// draw checkerboard background
for ($y=0; $y<480; $y+=40) {
  for ($x=0; $x<640; $x+=80) {
    $i = $m->add($c);
    $i->moveTo($x, $y);
  }

  $y+=40;

  for ($x=40; $x<640; $x+=80) {
    $i = $m->add($c);
    $i->moveTo($x, $y);
  }
}

$m->add($s);

header('Content-type: application/x-shockwave-flash');
$m->output();
?>

SWFBitmap
SWFBitmap::getHeight
SWFBitmap


Returns the bitmap's height

SWFBitmap::__construct
SWFBitmap::getWidth
SWFBitmap
PHP Manual

SWFBitmap::getHeight

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFBitmap::getHeight — Returns the bitmap's height

说明

float SWFBitmap::getHeight ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Returns the bitmap's height.

返回值

Returns the bitmap height in pixels.

参见

  • SWFBitmap::getWidth() - Returns the bitmap's width

SWFBitmap::__construct
SWFBitmap::getWidth
SWFBitmap


Returns the bitmap's width

SWFBitmap::getHeight
SWFButton
SWFBitmap
PHP Manual

SWFBitmap::getWidth

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFBitmap::getWidth — Returns the bitmap's width

说明

float SWFBitmap::getWidth ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Returns the bitmap's width.

返回值

Returns the bitmap width in pixels.

参见

  • SWFBitmap::getHeight() - Returns the bitmap's height

SWFBitmap::getHeight
SWFButton
SWFBitmap


The SWFButton class

(PHP 5 <= 5.3.0, PECL ming SVN)

简介

SWFButton.

类摘要

SWFButton {
/* 方法 */
void addAction ( SWFAction $action , int $flags )
SWFSoundInstance addASound ( SWFSound $sound , int $flags )
void addShape ( SWFShape $shape , int $flags )
__construct ( void )
void setAction ( SWFAction $action )
void setDown ( SWFShape $shape )
void setHit ( SWFShape $shape )
void setMenu ( int $flag )
void setOver ( SWFShape $shape )
void setUp ( SWFShape $shape )
}

Table of Contents

  • SWFButton::addAction — Adds an action
  • SWFButton::addASound — Associates a sound with a button transition
  • SWFButton::addShape — Adds a shape to a button
  • SWFButton::__construct — Creates a new Button
  • SWFButton::setAction — Sets the action
  • SWFButton::setDown — Alias for addShape(shape, SWFBUTTON_DOWN)
  • SWFButton::setHit — Alias for addShape(shape, SWFBUTTON_HIT)
  • SWFButton::setMenu — enable track as menu button behaviour
  • SWFButton::setOver — Alias for addShape(shape, SWFBUTTON_OVER)
  • SWFButton::setUp — Alias for addShape(shape, SWFBUTTON_UP)
SWFBitmap::getWidth
SWFButton::addAction
Ming


Adds an action

SWFButton
SWFButton::addASound
SWFButton
PHP Manual

SWFButton::addAction

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFButton::addAction — Adds an action

说明

void SWFButton::addAction ( SWFAction $action , int $flags )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Adds the given action to the button for the given conditions.

参数

action

An SWFAction, returned by SWFAction::__construct().

flags

The following flags are valid: SWFBUTTON_MOUSEOVER, SWFBUTTON_MOUSEOUT, SWFBUTTON_MOUSEUP, SWFBUTTON_MOUSEUPOUTSIDE, SWFBUTTON_MOUSEDOWN, SWFBUTTON_DRAGOUT and SWFBUTTON_DRAGOVER.

返回值

没有返回值。

参见

  • SWFButton::addShape() - Adds a shape to a button
  • SWFAction

SWFButton
SWFButton::addASound
SWFButton


Associates a sound with a button transition

SWFButton::addAction
SWFButton::addShape
SWFButton
PHP Manual

SWFButton::addASound

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFButton::addASound — Associates a sound with a button transition

说明

SWFSoundInstance SWFButton::addASound ( SWFSound $sound , int $flags )
Warning

本函数还未编写文档，仅有参数列表。

SWFButton::addAction
SWFButton::addShape
SWFButton


Adds a shape to a button

SWFButton::addASound
SWFButton::__construct
SWFButton
PHP Manual

SWFButton::addShape

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFButton::addShape — Adds a shape to a button

说明

void SWFButton::addShape ( SWFShape $shape , int $flags )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Adds the given shape to the button.

参数

shape

An SWFShape instance

flags

The following flags are valid: SWFBUTTON_UP, SWFBUTTON_OVER, SWFBUTTON_DOWN and SWFBUTTON_HIT.

SWFBUTTON_HIT isn't ever displayed, it defines the hit region for the button. That is, everywhere the hit shape would be drawn is considered a "touchable" part of the button.

返回值

没有返回值。

SWFButton::addASound
SWFButton::__construct
SWFButton


Creates a new Button

SWFButton::addShape
SWFButton::setAction
SWFButton
PHP Manual

SWFButton::__construct

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFButton::__construct — Creates a new Button

说明

SWFButton::__construct ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Creates a new Button.

范例

This simple example will show your usual interactions with buttons : rollover, rollon, mouseup, mousedown, noaction.

Example #1 Usual interactions with buttons

<?php

$f = new SWFFont("_serif");

$p = new SWFSprite();

function label($string)
{
  global $f;

  $t = new SWFTextField();
  $t->setFont($f);
  $t->addString($string);
  $t->setHeight(200);
  $t->setBounds(3200, 200);
  return $t;
}

function addLabel($string)
{
  global $p;

  $i = $p->add(label($string));
  $p->nextFrame();
  $p->remove($i);
}

$p->add(new SWFAction("stop();"));
addLabel("NO ACTION");
addLabel("SWFBUTTON_MOUSEUP");
addLabel("SWFBUTTON_MOUSEDOWN");
addLabel("SWFBUTTON_MOUSEOVER");
addLabel("SWFBUTTON_MOUSEOUT");
addLabel("SWFBUTTON_MOUSEUPOUTSIDE");
addLabel("SWFBUTTON_DRAGOVER");
addLabel("SWFBUTTON_DRAGOUT");

function rect($r, $g, $b)
{
  $s = new SWFShape();
  $s->setRightFill($s->addFill($r, $g, $b));
  $s->drawLine(600, 0);
  $s->drawLine(0, 600);
  $s->drawLine(-600, 0);
  $s->drawLine(0, -600);

  return $s;
}

$b = new SWFButton();
$b->addShape(rect(0xff, 0, 0), SWFBUTTON_UP | SWFBUTTON_HIT);
$b->addShape(rect(0, 0xff, 0), SWFBUTTON_OVER);
$b->addShape(rect(0, 0, 0xff), SWFBUTTON_DOWN);

$b->addAction(new SWFAction("setTarget('/label'); gotoFrame(1);"),
          SWFBUTTON_MOUSEUP);

$b->addAction(new SWFAction("setTarget('/label'); gotoFrame(2);"),
      SWFBUTTON_MOUSEDOWN);

$b->addAction(new SWFAction("setTarget('/label'); gotoFrame(3);"),
      SWFBUTTON_MOUSEOVER);

$b->addAction(new SWFAction("setTarget('/label'); gotoFrame(4);"),
      SWFBUTTON_MOUSEOUT);

$b->addAction(new SWFAction("setTarget('/label'); gotoFrame(5);"),
      SWFBUTTON_MOUSEUPOUTSIDE);

$b->addAction(new SWFAction("setTarget('/label'); gotoFrame(6);"),
      SWFBUTTON_DRAGOVER);

$b->addAction(new SWFAction("setTarget('/label'); gotoFrame(7);"),
      SWFBUTTON_DRAGOUT);

$m = new SWFMovie();
$m->setDimension(4000, 3000);

$i = $m->add($p);
$i->setName("label");
$i->moveTo(400, 1900);

$i = $m->add($b);
$i->moveTo(400, 900);

header('Content-type: application/x-shockwave-flash');
$m->output();
?>

This simple example will enables you to drag draw a big red button on the windows. No drag-and-drop, just moving around.

Example #2 Drag example

<?php

$s = new SWFShape();
$s->setRightFill($s->addFill(0xff, 0, 0));
$s->drawLine(1000,0);
$s->drawLine(0,1000);
$s->drawLine(-1000,0);
$s->drawLine(0,-1000);

$b = new SWFButton();
$b->addShape($s, SWFBUTTON_HIT | SWFBUTTON_UP | SWFBUTTON_DOWN | SWFBUTTON_OVER);

$b->addAction(new SWFAction("startDrag('/test', 0);"), // '0' means don't lock to mouse
      SWFBUTTON_MOUSEDOWN);

$b->addAction(new SWFAction("stopDrag();"),
      SWFBUTTON_MOUSEUP | SWFBUTTON_MOUSEUPOUTSIDE);

$p = new SWFSprite();
$p->add($b);
$p->nextFrame();

$m = new SWFMovie();
$i = $m->add($p);
$i->setName('test');
$i->moveTo(1000,1000);

header('Content-type: application/x-shockwave-flash');
$m->output();
?>

SWFButton::addShape
SWFButton::setAction
SWFButton


Sets the action

SWFButton::__construct
SWFButton::setDown
SWFButton
PHP Manual

SWFButton::setAction

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFButton::setAction — Sets the action

说明

void SWFButton::setAction ( SWFAction $action )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Sets the action to be performed when the button is clicked.

This is a shortcut for SWFButton::addAction() called with the SWFBUTTON_MOUSEUP flag.

参数

action

An SWFAction, returned by SWFAction::__construct().

返回值

没有返回值。

参见

  • SWFButton::addAction() - Adds an action
  • SWFAction

SWFButton::__construct
SWFButton::setDown
SWFButton


Alias for addShape(shape, SWFBUTTON_DOWN)

SWFButton::setAction
SWFButton::setHit
SWFButton
PHP Manual

SWFButton::setDown

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFButton::setDown — Alias for addShape(shape, SWFBUTTON_DOWN)

说明

void SWFButton::setDown ( SWFShape $shape )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfbutton::setdown() alias for addShape(shape, SWFBUTTON_DOWN).

返回值

没有返回值。

参见

  • SWFButton::addShape() - Adds a shape to a button
  • SWFAction

SWFButton::setAction
SWFButton::setHit
SWFButton


Alias for addShape(shape, SWFBUTTON_HIT)

SWFButton::setDown
SWFButton::setMenu
SWFButton
PHP Manual

SWFButton::setHit

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFButton::setHit — Alias for addShape(shape, SWFBUTTON_HIT)

说明

void SWFButton::setHit ( SWFShape $shape )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfbutton::sethit() alias for addShape(shape, SWFBUTTON_HIT).

返回值

没有返回值。

参见

  • SWFButton::addShape() - Adds a shape to a button
  • SWFAction

SWFButton::setDown
SWFButton::setMenu
SWFButton


enable track as menu button behaviour

SWFButton::setHit
SWFButton::setOver
SWFButton
PHP Manual

SWFButton::setMenu

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFButton::setMenu — enable track as menu button behaviour

说明

void SWFButton::setMenu ( int $flag )
Warning

本函数还未编写文档，仅有参数列表。

参数

flag

This parameter can be used for a slight different behavior of buttons. You can set it to 0 (off) or 1 (on).

返回值

没有返回值。

SWFButton::setHit
SWFButton::setOver
SWFButton


Alias for addShape(shape, SWFBUTTON_OVER)

SWFButton::setMenu
SWFButton::setUp
SWFButton
PHP Manual

SWFButton::setOver

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFButton::setOver — Alias for addShape(shape, SWFBUTTON_OVER)

说明

void SWFButton::setOver ( SWFShape $shape )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfbutton::setover() alias for addShape(shape, SWFBUTTON_OVER).

返回值

没有返回值。

参见

  • SWFButton::addShape() - Adds a shape to a button
  • SWFAction

SWFButton::setMenu
SWFButton::setUp
SWFButton


Alias for addShape(shape, SWFBUTTON_UP)

SWFButton::setOver
SWFDisplayItem
SWFButton
PHP Manual

SWFButton::setUp

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFButton::setUp — Alias for addShape(shape, SWFBUTTON_UP)

说明

void SWFButton::setUp ( SWFShape $shape )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfbutton::setup() alias for addShape(shape, SWFBUTTON_UP).

返回值

没有返回值。

参见

  • SWFButton::addShape() - Adds a shape to a button
  • SWFAction

SWFButton::setOver
SWFDisplayItem
SWFButton


The SWFDisplayItem class

(PHP 5 <= 5.3.0, PECL ming SVN)

简介

SWFDisplayItem.

类摘要

SWFDisplayItem {
/* 方法 */
void addAction ( SWFAction $action , int $flags )
void addColor ( int $red , int $green , int $blue [, int $a ] )
void endMask ( void )
float getRot ( void )
float getX ( void )
float getXScale ( void )
float getXSkew ( void )
float getY ( void )
float getYScale ( void )
float getYSkew ( void )
void move ( float $dx , float $dy )
void moveTo ( float $x , float $y )
void multColor ( float $red , float $green , float $blue [, float $a ] )
void remove ( void )
void rotate ( float $angle )
void rotateTo ( float $angle )
void scale ( float $dx , float $dy )
void scaleTo ( float $x [, float $y ] )
void setDepth ( int $depth )
void setMaskLevel ( int $level )
void setMatrix ( float $a , float $b , float $c , float $d , float $x , float $y )
void setName ( string $name )
void setRatio ( float $ratio )
void skewX ( float $ddegrees )
void skewXTo ( float $degrees )
void skewY ( float $ddegrees )
void skewYTo ( float $degrees )
}

Table of Contents

  • SWFDisplayItem::addAction — Adds this SWFAction to the given SWFSprite instance
  • SWFDisplayItem::addColor — Adds the given color to this item's color transform
  • SWFDisplayItem::endMask — Another way of defining a MASK layer
  • SWFDisplayItem::getRot — 说明
  • SWFDisplayItem::getX — 说明
  • SWFDisplayItem::getXScale — 说明
  • SWFDisplayItem::getXSkew — 说明
  • SWFDisplayItem::getY — 说明
  • SWFDisplayItem::getYScale — 说明
  • SWFDisplayItem::getYSkew — 说明
  • SWFDisplayItem::move — Moves object in relative coordinates
  • SWFDisplayItem::moveTo — Moves object in global coordinates
  • SWFDisplayItem::multColor — Multiplies the item's color transform
  • SWFDisplayItem::remove — Removes the object from the movie
  • SWFDisplayItem::rotate — Rotates in relative coordinates
  • SWFDisplayItem::rotateTo — Rotates the object in global coordinates
  • SWFDisplayItem::scale — Scales the object in relative coordinates
  • SWFDisplayItem::scaleTo — Scales the object in global coordinates
  • SWFDisplayItem::setDepth — Sets z-order
  • SWFDisplayItem::setMaskLevel — Defines a MASK layer at level
  • SWFDisplayItem::setMatrix — Sets the item's transform matrix
  • SWFDisplayItem::setName — Sets the object's name
  • SWFDisplayItem::setRatio — Sets the object's ratio
  • SWFDisplayItem::skewX — Sets the X-skew
  • SWFDisplayItem::skewXTo — Sets the X-skew
  • SWFDisplayItem::skewY — Sets the Y-skew
  • SWFDisplayItem::skewYTo — Sets the Y-skew
SWFButton::setUp
SWFDisplayItem::addAction
Ming


Adds this SWFAction to the given SWFSprite instance

SWFDisplayItem
SWFDisplayItem::addColor
SWFDisplayItem
PHP Manual

SWFDisplayItem::addAction

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::addAction — Adds this SWFAction to the given SWFSprite instance

说明

void SWFDisplayItem::addAction ( SWFAction $action , int $flags )
Warning

本函数还未编写文档，仅有参数列表。

参数

action

An SWFAction, returned by SWFAction::__construct().

flags

返回值

没有返回值。

参见

  • SWFAction

SWFDisplayItem
SWFDisplayItem::addColor
SWFDisplayItem


Adds the given color to this item's color transform

SWFDisplayItem::addAction
SWFDisplayItem::endMask
SWFDisplayItem
PHP Manual

SWFDisplayItem::addColor

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::addColor — Adds the given color to this item's color transform

说明

void SWFDisplayItem::addColor ( int $red , int $green , int $blue [, int $a ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfdisplayitem::addcolor() adds the color to this item's color transform. The color is given in its RGB form.

The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie::add().

返回值

没有返回值。

返回值

没有返回值。

SWFDisplayItem::addAction
SWFDisplayItem::endMask
SWFDisplayItem


Another way of defining a MASK layer

SWFDisplayItem::addColor
SWFDisplayItem::getRot
SWFDisplayItem
PHP Manual

SWFDisplayItem::endMask

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::endMask — Another way of defining a MASK layer

说明

void SWFDisplayItem::endMask ( void )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

SWFDisplayItem::addColor
SWFDisplayItem::getRot
SWFDisplayItem


SWFDisplayItem::endMask
SWFDisplayItem::getX
SWFDisplayItem
PHP Manual

SWFDisplayItem::getRot

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::getRot —

说明

float SWFDisplayItem::getRot ( void )
Warning

本函数还未编写文档，仅有参数列表。

SWFDisplayItem::endMask
SWFDisplayItem::getX
SWFDisplayItem


SWFDisplayItem::getRot
SWFDisplayItem::getXScale
SWFDisplayItem
PHP Manual

SWFDisplayItem::getX

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::getX —

说明

float SWFDisplayItem::getX ( void )
Warning

本函数还未编写文档，仅有参数列表。

参见

  • SWFDisplayItem::getY() - 说明

SWFDisplayItem::getRot
SWFDisplayItem::getXScale
SWFDisplayItem


SWFDisplayItem::getX
SWFDisplayItem::getXSkew
SWFDisplayItem
PHP Manual

SWFDisplayItem::getXScale

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::getXScale —

说明

float SWFDisplayItem::getXScale ( void )
Warning

本函数还未编写文档，仅有参数列表。

参见

  • SWFDisplayItem::getYScale() - 说明

SWFDisplayItem::getX
SWFDisplayItem::getXSkew
SWFDisplayItem


SWFDisplayItem::getXScale
SWFDisplayItem::getY
SWFDisplayItem
PHP Manual

SWFDisplayItem::getXSkew

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::getXSkew —

说明

float SWFDisplayItem::getXSkew ( void )
Warning

本函数还未编写文档，仅有参数列表。

参见

  • SWFDisplayItem::getYSkew() - 说明

SWFDisplayItem::getXScale
SWFDisplayItem::getY
SWFDisplayItem


SWFDisplayItem::getXSkew
SWFDisplayItem::getYScale
SWFDisplayItem
PHP Manual

SWFDisplayItem::getY

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::getY —

说明

float SWFDisplayItem::getY ( void )
Warning

本函数还未编写文档，仅有参数列表。

参见

  • SWFDisplayItem::getX() - 说明

SWFDisplayItem::getXSkew
SWFDisplayItem::getYScale
SWFDisplayItem


SWFDisplayItem::getY
SWFDisplayItem::getYSkew
SWFDisplayItem
PHP Manual

SWFDisplayItem::getYScale

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::getYScale —

说明

float SWFDisplayItem::getYScale ( void )
Warning

本函数还未编写文档，仅有参数列表。

参见

  • SWFDisplayItem::getXScale() - 说明

SWFDisplayItem::getY
SWFDisplayItem::getYSkew
SWFDisplayItem


SWFDisplayItem::getYScale
SWFDisplayItem::move
SWFDisplayItem
PHP Manual

SWFDisplayItem::getYSkew

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::getYSkew —

说明

float SWFDisplayItem::getYSkew ( void )
Warning

本函数还未编写文档，仅有参数列表。

参见

  • SWFDisplayItem::getXSkew() - 说明

SWFDisplayItem::getYScale
SWFDisplayItem::move
SWFDisplayItem


Moves object in relative coordinates

SWFDisplayItem::getYSkew
SWFDisplayItem::moveTo
SWFDisplayItem
PHP Manual

SWFDisplayItem::move

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::move — Moves object in relative coordinates

说明

void SWFDisplayItem::move ( float $dx , float $dy )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfdisplayitem::move() moves the current object by (dx,dy) from its current position.

The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie::add().

返回值

没有返回值。

参见

  • SWFDisplayItem::moveTo() - Moves object in global coordinates

SWFDisplayItem::getYSkew
SWFDisplayItem::moveTo
SWFDisplayItem


Moves object in global coordinates

SWFDisplayItem::move
SWFDisplayItem::multColor
SWFDisplayItem
PHP Manual

SWFDisplayItem::moveTo

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::moveTo — Moves object in global coordinates

说明

void SWFDisplayItem::moveTo ( float $x , float $y )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfdisplayitem::moveto() moves the current object to (x,y) in global coordinates.

The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie::add().

返回值

没有返回值。

参见

  • SWFDisplayItem::move() - Moves object in relative coordinates

SWFDisplayItem::move
SWFDisplayItem::multColor
SWFDisplayItem


Multiplies the item's color transform

SWFDisplayItem::moveTo
SWFDisplayItem::remove
SWFDisplayItem
PHP Manual

SWFDisplayItem::multColor

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::multColor — Multiplies the item's color transform

说明

void SWFDisplayItem::multColor ( float $red , float $green , float $blue [, float $a ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfdisplayitem::multcolor() multiplies the item's color transform by the given values.

The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie::add().

参数

These parameters are floats between 0.0 and 1.0:

red

Value of red component

green

Value of green component

blue

Value of blue component

a

Value of alpha component

返回值

没有返回值。

范例

This simple example will modify your picture's atmosphere to Halloween (use a landscape or bright picture).

Example #1 swfdisplayitem::multcolor() example

<?php

$b = new SWFBitmap(file_get_contents("backyard.jpg"));
// note use your own picture :-)
$s = new SWFShape();
$s->setRightFill($s->addFill($b));
$s->drawLine($b->getWidth(), 0);
$s->drawLine(0, $b->getHeight());
$s->drawLine(-$b->getWidth(), 0);
$s->drawLine(0, -$b->getHeight());

$m = new SWFMovie();
$m->setDimension($b->getWidth(), $b->getHeight());

$i = $m->add($s);

for ($n=0; $n<=20; ++$n) {
  $i->multColor(1.0-$n/10, 1.0, 1.0);
  $i->addColor(0xff*$n/20, 0, 0);
  $m->nextFrame();
}

header('Content-type: application/x-shockwave-flash');
$m->output();
?>

SWFDisplayItem::moveTo
SWFDisplayItem::remove
SWFDisplayItem


Removes the object from the movie

SWFDisplayItem::multColor
SWFDisplayItem::rotate
SWFDisplayItem
PHP Manual

SWFDisplayItem::remove

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::remove — Removes the object from the movie

说明

void SWFDisplayItem::remove ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfdisplayitem::remove() removes this object from the movie's display list.

The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie::add().

返回值

没有返回值。

参见

  • SWFMovie::add() - Adds any type of data to a movie

SWFDisplayItem::multColor
SWFDisplayItem::rotate
SWFDisplayItem


Rotates in relative coordinates

SWFDisplayItem::remove
SWFDisplayItem::rotateTo
SWFDisplayItem
PHP Manual

SWFDisplayItem::rotate

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::rotate — Rotates in relative coordinates

说明

void SWFDisplayItem::rotate ( float $angle )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfdisplayitem::rotate() rotates the current object by angle degrees from its current rotation.

The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie::add().

返回值

没有返回值。

参见

  • SWFDisplayItem::rotateTo() - Rotates the object in global coordinates

SWFDisplayItem::remove
SWFDisplayItem::rotateTo
SWFDisplayItem


Rotates the object in global coordinates

SWFDisplayItem::rotate
SWFDisplayItem::scale
SWFDisplayItem
PHP Manual

SWFDisplayItem::rotateTo

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::rotateTo — Rotates the object in global coordinates

说明

void SWFDisplayItem::rotateTo ( float $angle )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfdisplayitem::rotateto() set the current object rotation to angle degrees in global coordinates.

The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie::add().

返回值

没有返回值。

范例

This example bring three rotating string from the background to the foreground. Pretty nice.

Example #1 swfdisplayitem::rotateto() example

<?php
$thetext =  "ming!";

$f = new SWFFont("Bauhaus 93.fdb");

$m = new SWFMovie();
$m->setRate(24.0);
$m->setDimension(2400, 1600);
$m->setBackground(0xff, 0xff, 0xff);

// functions with huge numbers of arbitrary
// arguments are always a good idea!  Really!

function text($r, $g, $b, $a, $rot, $x, $y, $scale, $string)
{
  global $f, $m;

  $t = new SWFText();
  $t->setFont($f);
  $t->setColor($r, $g, $b, $a);
  $t->setHeight(960);
  $t->moveTo(-($f->getWidth($string))/2, $f->getAscent()/2);
  $t->addString($string);

  // we can add properties just like a normal PHP var,
  // as long as the names aren't already used.
  // e.g., we can't set $i->scale, because that's a function

  $i = $m->add($t);
  $i->x = $x;
  $i->y = $y;
  $i->rot = $rot;
  $i->s = $scale;
  $i->rotateTo($rot);
  $i->scale($scale, $scale);

  // but the changes are local to the function, so we have to
  // return the changed object.  kinda weird..

  return $i;
}

function step($i)
{
  $oldrot = $i->rot;
  $i->rot = 19*$i->rot/20;
  $i->x = (19*$i->x + 1200)/20;
  $i->y = (19*$i->y + 800)/20;
  $i->s = (19*$i->s + 1.0)/20;

  $i->rotateTo($i->rot);
  $i->scaleTo($i->s, $i->s);
  $i->moveTo($i->x, $i->y);

  return $i;
}

// see?  it sure paid off in legibility:

$i1 = text(0xff, 0x33, 0x33, 0xff, 900, 1200, 800, 0.03, $thetext);
$i2 = text(0x00, 0x33, 0xff, 0x7f, -560, 1200, 800, 0.04, $thetext);
$i3 = text(0xff, 0xff, 0xff, 0x9f, 180, 1200, 800, 0.001, $thetext);

for ($i=1; $i<=100; ++$i) {
  $i1 = step($i1);
  $i2 = step($i2);
  $i3 = step($i3);

  $m->nextFrame();
}

header('Content-type: application/x-shockwave-flash');
$m->output();
?>

参见

  • SWFDisplayItem::rotate() - Rotates in relative coordinates

SWFDisplayItem::rotate
SWFDisplayItem::scale
SWFDisplayItem


Scales the object in relative coordinates

SWFDisplayItem::rotateTo
SWFDisplayItem::scaleTo
SWFDisplayItem
PHP Manual

SWFDisplayItem::scale

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::scale — Scales the object in relative coordinates

说明

void SWFDisplayItem::scale ( float $dx , float $dy )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfdisplayitem::scale() scales the current object by (dx,dy) from its current size.

The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie::add().

返回值

没有返回值。

参见

  • SWFDisplayItem::scaleTo() - Scales the object in global coordinates

SWFDisplayItem::rotateTo
SWFDisplayItem::scaleTo
SWFDisplayItem


Scales the object in global coordinates

SWFDisplayItem::scale
SWFDisplayItem::setDepth
SWFDisplayItem
PHP Manual

SWFDisplayItem::scaleTo

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::scaleTo — Scales the object in global coordinates

说明

void SWFDisplayItem::scaleTo ( float $x [, float $y ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfdisplayitem::scaleto() scales the current object to (x,y) in global coordinates.

The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie::add().

返回值

没有返回值。

参见

  • SWFDisplayItem::scale() - Scales the object in relative coordinates

SWFDisplayItem::scale
SWFDisplayItem::setDepth
SWFDisplayItem


Sets z-order

SWFDisplayItem::scaleTo
SWFDisplayItem::setMaskLevel
SWFDisplayItem
PHP Manual

SWFDisplayItem::setDepth

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::setDepth — Sets z-order

说明

void SWFDisplayItem::setDepth ( int $depth )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfdisplayitem::setdepth() sets the object's z-order to depth. Depth defaults to the order in which instances are created (by adding a shape/text to a movie)- newer ones are on top of older ones. If two objects are given the same depth, only the later-defined one can be moved.

The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie::add().

返回值

没有返回值。

SWFDisplayItem::scaleTo
SWFDisplayItem::setMaskLevel
SWFDisplayItem


Defines a MASK layer at level

SWFDisplayItem::setDepth
SWFDisplayItem::setMatrix
SWFDisplayItem
PHP Manual

SWFDisplayItem::setMaskLevel

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::setMaskLevel — Defines a MASK layer at level

说明

void SWFDisplayItem::setMaskLevel ( int $level )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

SWFDisplayItem::setDepth
SWFDisplayItem::setMatrix
SWFDisplayItem


Sets the item's transform matrix

SWFDisplayItem::setMaskLevel
SWFDisplayItem::setName
SWFDisplayItem
PHP Manual

SWFDisplayItem::setMatrix

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::setMatrix — Sets the item's transform matrix

说明

void SWFDisplayItem::setMatrix ( float $a , float $b , float $c , float $d , float $x , float $y )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

SWFDisplayItem::setMaskLevel
SWFDisplayItem::setName
SWFDisplayItem


Sets the object's name

SWFDisplayItem::setMatrix
SWFDisplayItem::setRatio
SWFDisplayItem
PHP Manual

SWFDisplayItem::setName

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::setName — Sets the object's name

说明

void SWFDisplayItem::setName ( string $name )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfdisplayitem::setname() sets the object's name to name, for targetting with action script. Only useful on sprites.

The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie::add().

返回值

没有返回值。

SWFDisplayItem::setMatrix
SWFDisplayItem::setRatio
SWFDisplayItem


Sets the object's ratio

SWFDisplayItem::setName
SWFDisplayItem::skewX
SWFDisplayItem
PHP Manual

SWFDisplayItem::setRatio

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::setRatio — Sets the object's ratio

说明

void SWFDisplayItem::setRatio ( float $ratio )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfdisplayitem::setratio() sets the object's ratio to ratio. Obviously only useful for morphs.

The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie::add().

返回值

没有返回值。

范例

This simple example will morph nicely three concentric circles.

Example #1 swfdisplayitem::setname() example

<?php

$p = new SWFMorph();

$g = new SWFGradient();
$g->addEntry(0.0, 0, 0, 0);
$g->addEntry(0.16, 0xff, 0xff, 0xff);
$g->addEntry(0.32, 0, 0, 0);
$g->addEntry(0.48, 0xff, 0xff, 0xff);
$g->addEntry(0.64, 0, 0, 0);
$g->addEntry(0.80, 0xff, 0xff, 0xff);
$g->addEntry(1.00, 0, 0, 0);

$s = $p->getShape1();
$f = $s->addFill($g, SWFFILL_RADIAL_GRADIENT);
$f->scaleTo(0.05);
$s->setLeftFill($f);
$s->movePenTo(-160, -120);
$s->drawLine(320, 0);
$s->drawLine(0, 240);
$s->drawLine(-320, 0);
$s->drawLine(0, -240);

$g = new SWFGradient();
$g->addEntry(0.0, 0, 0, 0);
$g->addEntry(0.16, 0xff, 0, 0);
$g->addEntry(0.32, 0, 0, 0);
$g->addEntry(0.48, 0, 0xff, 0);
$g->addEntry(0.64, 0, 0, 0);
$g->addEntry(0.80, 0, 0, 0xff);
$g->addEntry(1.00, 0, 0, 0);

$s = $p->getShape2();
$f = $s->addFill($g, SWFFILL_RADIAL_GRADIENT);
$f->scaleTo(0.05);
$f->skewXTo(1.0);
$s->setLeftFill($f);
$s->movePenTo(-160, -120);
$s->drawLine(320, 0);
$s->drawLine(0, 240);
$s->drawLine(-320, 0);
$s->drawLine(0, -240);

$m = new SWFMovie();
$m->setDimension(320, 240);
$i = $m->add($p);
$i->moveTo(160, 120);

for ($n=0; $n<=1.001; $n+=0.01) {
    $i->setRatio($n);
    $m->nextFrame();
}

header('Content-type: application/x-shockwave-flash');
$m->output();
?>

SWFDisplayItem::setName
SWFDisplayItem::skewX
SWFDisplayItem


Sets the X-skew

SWFDisplayItem::setRatio
SWFDisplayItem::skewXTo
SWFDisplayItem
PHP Manual

SWFDisplayItem::skewX

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::skewX — Sets the X-skew

说明

void SWFDisplayItem::skewX ( float $ddegrees )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfdisplayitem::skewx() adds ddegrees to current x-skew.

The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie::add().

返回值

没有返回值。

参见

  • SWFDisplayItem::skewXTo() - Sets the X-skew
  • SWFDisplayItem::skewY() - Sets the Y-skew
  • SWFDisplayItem::skewYTo() - Sets the Y-skew

SWFDisplayItem::setRatio
SWFDisplayItem::skewXTo
SWFDisplayItem


Sets the X-skew

SWFDisplayItem::skewX
SWFDisplayItem::skewY
SWFDisplayItem
PHP Manual

SWFDisplayItem::skewXTo

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::skewXTo — Sets the X-skew

说明

void SWFDisplayItem::skewXTo ( float $degrees )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfdisplayitem::skewxto() sets the x-skew to degrees. For degrees is 1.0, it means a 45-degree forward slant. More is more forward, less is more backward.

The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie::add().

返回值

没有返回值。

参见

  • SWFDisplayItem::skewX() - Sets the X-skew
  • SWFDisplayItem::skewY() - Sets the Y-skew
  • SWFDisplayItem::skewYTo() - Sets the Y-skew

SWFDisplayItem::skewX
SWFDisplayItem::skewY
SWFDisplayItem


Sets the Y-skew

SWFDisplayItem::skewXTo
SWFDisplayItem::skewYTo
SWFDisplayItem
PHP Manual

SWFDisplayItem::skewY

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::skewY — Sets the Y-skew

说明

void SWFDisplayItem::skewY ( float $ddegrees )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfdisplayitem::skewy() adds ddegrees to current y-skew.

The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie::add().

返回值

没有返回值。

参见

  • SWFDisplayItem::skewYTo() - Sets the Y-skew
  • SWFDisplayItem::skewX() - Sets the X-skew
  • SWFDisplayItem::skewXTo() - Sets the X-skew

SWFDisplayItem::skewXTo
SWFDisplayItem::skewYTo
SWFDisplayItem


Sets the Y-skew

SWFDisplayItem::skewY
SWFFill
SWFDisplayItem
PHP Manual

SWFDisplayItem::skewYTo

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFDisplayItem::skewYTo — Sets the Y-skew

说明

void SWFDisplayItem::skewYTo ( float $degrees )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfdisplayitem::skewyto() sets the y-skew to degrees. For degrees is 1.0, it means a 45-degree forward slant. More is more upward, less is more downward.

The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie::add().

返回值

没有返回值。

参见

  • SWFDisplayItem::skewY() - Sets the Y-skew
  • SWFDisplayItem::skewX() - Sets the X-skew
  • SWFDisplayItem::skewXTo() - Sets the X-skew

SWFDisplayItem::skewY
SWFFill
SWFDisplayItem


The SWFFill class

(PHP 5 <= 5.3.0, PECL ming SVN)

简介

The SWFFill object allows you to transform (scale, skew, rotate) bitmap and gradient fills.

swffill objects are created by the SWFShape::addFill() method.

类摘要

SWFFill {
/* 方法 */
void moveTo ( float $x , float $y )
void rotateTo ( float $angle )
void scaleTo ( float $x [, float $y ] )
void skewXTo ( float $x )
void skewYTo ( float $y )
}

Table of Contents

  • SWFFill::moveTo — Moves fill origin
  • SWFFill::rotateTo — Sets fill's rotation
  • SWFFill::scaleTo — Sets fill's scale
  • SWFFill::skewXTo — Sets fill x-skew
  • SWFFill::skewYTo — Sets fill y-skew
SWFDisplayItem::skewYTo
SWFFill::moveTo
Ming


Moves fill origin

SWFFill
SWFFill::rotateTo
SWFFill
PHP Manual

SWFFill::moveTo

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFFill::moveTo — Moves fill origin

说明

void SWFFill::moveTo ( float $x , float $y )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Moves the fill origin to the given global coordinates.

参数

x

X-coordinate

y

Y-coordinate

返回值

没有返回值。

SWFFill
SWFFill::rotateTo
SWFFill


Sets fill's rotation

SWFFill::moveTo
SWFFill::scaleTo
SWFFill
PHP Manual

SWFFill::rotateTo

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFFill::rotateTo — Sets fill's rotation

说明

void SWFFill::rotateTo ( float $angle )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Sets the fill rotation to the given angle.

参数

angle

The rotation angle, in degrees.

返回值

没有返回值。

SWFFill::moveTo
SWFFill::scaleTo
SWFFill


Sets fill's scale

SWFFill::rotateTo
SWFFill::skewXTo
SWFFill
PHP Manual

SWFFill::scaleTo

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFFill::scaleTo — Sets fill's scale

说明

void SWFFill::scaleTo ( float $x [, float $y ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Sets the fill scale to the given coordinates.

参数

x

X-coordinate

y

Y-coordinate

返回值

没有返回值。

SWFFill::rotateTo
SWFFill::skewXTo
SWFFill


Sets fill x-skew

SWFFill::scaleTo
SWFFill::skewYTo
SWFFill
PHP Manual

SWFFill::skewXTo

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFFill::skewXTo — Sets fill x-skew

说明

void SWFFill::skewXTo ( float $x )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Sets the fill x-skew to x.

参数

x

When x is 1.0, it is a 45-degree forward slant. More is more forward, less is more backward.

返回值

没有返回值。

参见

  • SWFFill::skewYTo() - Sets fill y-skew

SWFFill::scaleTo
SWFFill::skewYTo
SWFFill


Sets fill y-skew

SWFFill::skewXTo
SWFFont
SWFFill
PHP Manual

SWFFill::skewYTo

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFFill::skewYTo — Sets fill y-skew

说明

void SWFFill::skewYTo ( float $y )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Sets the fill y-skew to y.

参数

y

When y is 1.0, it is a 45-degree upward slant. More is more upward, less is more downward.

返回值

没有返回值。

参见

  • SWFFill::skewXTo() - Sets fill x-skew

SWFFill::skewXTo
SWFFont
SWFFill


The SWFFont class

(PHP 5 <= 5.3.0, PECL ming SVN)

简介

The SWFFont object represent a reference to the font definition, for us with SWFText::setFont() and SWFTextField::setFont().

类摘要

SWFFont {
/* 方法 */
__construct ( string $filename )
float getAscent ( void )
float getDescent ( void )
float getLeading ( void )
string getShape ( int $code )
float getUTF8Width ( string $string )
float getWidth ( string $string )
}

Table of Contents

  • SWFFont::__construct — Loads a font definition
  • SWFFont::getAscent — Returns the ascent of the font, or 0 if not available
  • SWFFont::getDescent — Returns the descent of the font, or 0 if not available
  • SWFFont::getLeading — Returns the leading of the font, or 0 if not available
  • SWFFont::getShape — Returns the glyph shape of a char as a text string
  • SWFFont::getUTF8Width — Calculates the width of the given string in this font at full height
  • SWFFont::getWidth — Returns the string's width
SWFFill::skewYTo
SWFFont::__construct
Ming


Loads a font definition

SWFFont
SWFFont::getAscent
SWFFont
PHP Manual

SWFFont::__construct

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFFont::__construct — Loads a font definition

说明

SWFFont::__construct ( string $filename )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

If filename is the name of an FDB file (i.e., it ends in ".fdb"), load the font definition found in said file. Otherwise, create a browser-defined font reference.

FDB ("font definition block") is a very simple wrapper for the SWF DefineFont2 block which contains a full description of a font. One may create FDB files from SWT Generator template files with the included makefdb utility- look in the util directory off the main ming distribution directory.

Browser-defined fonts don't contain any information about the font other than its name. It is assumed that the font definition will be provided by the movie player. The fonts _serif, _sans, and _typewriter should always be available. For example:

<?php
$f = newSWFFont("_sans");
?>
will give you the standard sans-serif font, probably the same as what you'd get with <font name="sans-serif"> in HTML.

SWFFont
SWFFont::getAscent
SWFFont


Returns the ascent of the font, or 0 if not available

SWFFont::__construct
SWFFont::getDescent
SWFFont
PHP Manual

SWFFont::getAscent

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFFont::getAscent — Returns the ascent of the font, or 0 if not available

说明

float SWFFont::getAscent ( void )
Warning

本函数还未编写文档，仅有参数列表。

参见

  • SWFFont::getDescent() - Returns the descent of the font, or 0 if not available

SWFFont::__construct
SWFFont::getDescent
SWFFont


Returns the descent of the font, or 0 if not available

SWFFont::getAscent
SWFFont::getLeading
SWFFont
PHP Manual

SWFFont::getDescent

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFFont::getDescent — Returns the descent of the font, or 0 if not available

说明

float SWFFont::getDescent ( void )
Warning

本函数还未编写文档，仅有参数列表。

参见

  • SWFFont::getAscent() - Returns the ascent of the font, or 0 if not available

SWFFont::getAscent
SWFFont::getLeading
SWFFont


Returns the leading of the font, or 0 if not available

SWFFont::getDescent
SWFFont::getShape
SWFFont
PHP Manual

SWFFont::getLeading

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFFont::getLeading — Returns the leading of the font, or 0 if not available

说明

float SWFFont::getLeading ( void )
Warning

本函数还未编写文档，仅有参数列表。

SWFFont::getDescent
SWFFont::getShape
SWFFont


Returns the glyph shape of a char as a text string

SWFFont::getLeading
SWFFont::getUTF8Width
SWFFont
PHP Manual

SWFFont::getShape

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFFont::getShape — Returns the glyph shape of a char as a text string

说明

string SWFFont::getShape ( int $code )
Warning

本函数还未编写文档，仅有参数列表。

SWFFont::getLeading
SWFFont::getUTF8Width
SWFFont


Calculates the width of the given string in this font at full height

SWFFont::getShape
SWFFont::getWidth
SWFFont
PHP Manual

SWFFont::getUTF8Width

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFFont::getUTF8Width — Calculates the width of the given string in this font at full height

说明

float SWFFont::getUTF8Width ( string $string )
Warning

本函数还未编写文档，仅有参数列表。

参见

  • SWFFont::getWidth() - Returns the string's width

SWFFont::getShape
SWFFont::getWidth
SWFFont


Returns the string's width

SWFFont::getUTF8Width
SWFFontChar
SWFFont
PHP Manual

SWFFont::getWidth

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFFont::getWidth — Returns the string's width

说明

float SWFFont::getWidth ( string $string )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swffont::getwidth() returns the string string's width, using font's default scaling. You'll probably want to use the swftext() version of this method which uses the text object's scale.

参见

  • SWFFont::getUTF8Width() - Calculates the width of the given string in this font at full height

SWFFont::getUTF8Width
SWFFontChar
SWFFont


The SWFFontChar class

(PHP 5 <= 5.3.0, PECL ming SVN)

简介

SWFFontChar.

类摘要

SWFFontChar {
/* 方法 */
void addChars ( string $char )
void addUTF8Chars ( string $char )
}

Table of Contents

  • SWFFontChar::addChars — Adds characters to a font for exporting font
  • SWFFontChar::addUTF8Chars — Adds characters to a font for exporting font
SWFFont::getWidth
SWFFontChar::addChars
Ming


Adds characters to a font for exporting font

SWFFontChar
SWFFontChar::addUTF8Chars
SWFFontChar
PHP Manual

SWFFontChar::addChars

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFFontChar::addChars — Adds characters to a font for exporting font

说明

void SWFFontChar::addChars ( string $char )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

参见

  • SWFFontChar::addUTF8Chars() - Adds characters to a font for exporting font

SWFFontChar
SWFFontChar::addUTF8Chars
SWFFontChar


Adds characters to a font for exporting font

SWFFontChar::addChars
SWFGradient
SWFFontChar
PHP Manual

SWFFontChar::addUTF8Chars

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFFontChar::addUTF8Chars — Adds characters to a font for exporting font

说明

void SWFFontChar::addUTF8Chars ( string $char )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

参见

  • SWFFontChar::addChars() - Adds characters to a font for exporting font

SWFFontChar::addChars
SWFGradient
SWFFontChar


The SWFGradient class

(PHP 5 <= 5.3.0, PECL ming SVN)

简介

SWFGradient.

类摘要

SWFGradient {
/* 方法 */
void addEntry ( float $ratio , int $red , int $green , int $blue [, int $alpha = 255 ] )
__construct ( void )
}

Table of Contents

  • SWFGradient::addEntry — Adds an entry to the gradient list
  • SWFGradient::__construct — Creates a gradient object
SWFFontChar::addUTF8Chars
SWFGradient::addEntry
Ming


Adds an entry to the gradient list

SWFGradient
SWFGradient::__construct
SWFGradient
PHP Manual

SWFGradient::addEntry

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFGradient::addEntry — Adds an entry to the gradient list

说明

void SWFGradient::addEntry ( float $ratio , int $red , int $green , int $blue [, int $alpha = 255 ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfgradient::addentry() adds an entry to the gradient list. ratio is a number between 0 and 1 indicating where in the gradient this color appears. Thou shalt add entries in order of increasing ratio.

red, green, blue is a color (RGB mode).

返回值

没有返回值。

SWFGradient
SWFGradient::__construct
SWFGradient


Creates a gradient object

SWFGradient::addEntry
SWFMorph
SWFGradient
PHP Manual

SWFGradient::__construct

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFGradient::__construct — Creates a gradient object

说明

SWFGradient::__construct ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfgradient() creates a new SWFGradient object.

After you've added the entries to your gradient, you can use the gradient in a shape fill with the swfshape::addfill() method.

SWFGradient has the following methods : swfgradient::addentry().

This simple example will draw a big black-to-white gradient as background, and a reddish disc in its center.

Example #1 swfgradient() example

<?php

  $m = new SWFMovie();
  $m->setDimension(320, 240);

  $s = new SWFShape();

  // first gradient- black to white
  $g = new SWFGradient();
  $g->addEntry(0.0, 0, 0, 0);
  $g->addEntry(1.0, 0xff, 0xff, 0xff);

  $f = $s->addFill($g, SWFFILL_LINEAR_GRADIENT);
  $f->scaleTo(0.01);
  $f->moveTo(160, 120);
  $s->setRightFill($f);
  $s->drawLine(320, 0);
  $s->drawLine(0, 240);
  $s->drawLine(-320, 0);
  $s->drawLine(0, -240);

  $m->add($s);

  $s = new SWFShape();

  // second gradient- radial gradient from red to transparent
  $g = new SWFGradient();
  $g->addEntry(0.0, 0xff, 0, 0, 0xff);
  $g->addEntry(1.0, 0xff, 0, 0, 0);

  $f = $s->addFill($g, SWFFILL_RADIAL_GRADIENT);
  $f->scaleTo(0.005);
  $f->moveTo(160, 120);
  $s->setRightFill($f);
  $s->drawLine(320, 0);
  $s->drawLine(0, 240);
  $s->drawLine(-320, 0);
  $s->drawLine(0, -240);

  $m->add($s);

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

SWFGradient::addEntry
SWFMorph
SWFGradient


The SWFMorph class

(PHP 5 <= 5.3.0, PECL ming SVN)

简介

The methods here are sort of weird. It would make more sense to just have newSWFMorph(shape1, shape2);, but as things are now, shape2 needs to know that it's the second part of a morph. (This, because it starts writing its output as soon as it gets drawing commands- if it kept its own description of its shapes and wrote on completion this and some other things would be much easier.)

类摘要

SWFMorph {
/* 方法 */
__construct ( void )
SWFShape getShape1 ( void )
SWFShape getShape2 ( void )
}

Table of Contents

  • SWFMorph::__construct — Creates a new SWFMorph object
  • SWFMorph::getShape1 — Gets a handle to the starting shape
  • SWFMorph::getShape2 — Gets a handle to the ending shape
SWFGradient::__construct
SWFMorph::__construct
Ming


Creates a new SWFMorph object

SWFMorph
SWFMorph::getShape1
SWFMorph
PHP Manual

SWFMorph::__construct

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMorph::__construct — Creates a new SWFMorph object

说明

SWFMorph::__construct ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Creates a new SWFMorph object.

Also called a "shape tween". This thing lets you make those tacky twisting things that make your computer choke. Oh, joy!

范例

This simple example will morph a big red square into a smaller blue black-bordered square.

Example #1 swfmorph() example

<?php
  $p = new SWFMorph();

  $s = $p->getShape1();
  $s->setLine(0, 0, 0, 0);

  /* Note that this is backwards from normal shapes (left instead of right).
     I have no idea why, but this seems to work.. */

  $s->setLeftFill($s->addFill(0xff, 0, 0));
  $s->movePenTo(-1000,-1000);
  $s->drawLine(2000,0);
  $s->drawLine(0,2000);
  $s->drawLine(-2000,0);
  $s->drawLine(0,-2000);

  $s = $p->getShape2();
  $s->setLine(60,0,0,0);
  $s->setLeftFill($s->addFill(0, 0, 0xff));
  $s->movePenTo(0,-1000);
  $s->drawLine(1000,1000);
  $s->drawLine(-1000,1000);
  $s->drawLine(-1000,-1000);
  $s->drawLine(1000,-1000);

  $m = new SWFMovie();
  $m->setDimension(3000,2000);
  $m->setBackground(0xff, 0xff, 0xff);

  $i = $m->add($p);
  $i->moveTo(1500,1000);

  for ($r=0.0; $r<=1.0; $r+=0.1) {
    $i->setRatio($r);
    $m->nextFrame();
  }

  header('Content-type: application/x-shockwave-flash');
  $m->output();
?>

SWFMorph
SWFMorph::getShape1
SWFMorph


Gets a handle to the starting shape

SWFMorph::__construct
SWFMorph::getShape2
SWFMorph
PHP Manual

SWFMorph::getShape1

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMorph::getShape1 — Gets a handle to the starting shape

说明

SWFShape SWFMorph::getShape1 ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Gets the morph's starting shape.

返回值

Returns a SWFShape object.

参见

  • SWFMorph::getShape2() - Gets a handle to the ending shape

SWFMorph::__construct
SWFMorph::getShape2
SWFMorph


Gets a handle to the ending shape

SWFMorph::getShape1
SWFMovie
SWFMorph
PHP Manual

SWFMorph::getShape2

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMorph::getShape2 — Gets a handle to the ending shape

说明

SWFShape SWFMorph::getShape2 ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Gets the morph's ending shape.

返回值

Returns a SWFShape object.

参见

  • SWFMorph::getShape1() - Gets a handle to the starting shape

SWFMorph::getShape1
SWFMovie
SWFMorph


The SWFMovie class

(PHP 5 <= 5.3.0, PECL ming SVN)

简介

SWFMovie is a movie object representing an SWF movie.

类摘要

SWFMovie {
/* 方法 */
mixed add ( object $instance )
void addExport ( SWFCharacter $char , string $name )
mixed addFont ( SWFFont $font )
__construct ([ int $version ] )
SWFSprite importChar ( string $libswf , string $name )
SWFFontChar importFont ( string $libswf , string $name )
void labelFrame ( string $label )
void nextFrame ( void )
int output ([ int $compression ] )
void remove ( object $instance )
int save ( string $filename [, int $compression = -1 ] )
int saveToFile ( resource $x [, int $compression = -1 ] )
void setbackground ( int $red , int $green , int $blue )
void setDimension ( float $width , float $height )
void setFrames ( int $number )
void setRate ( float $rate )
SWFSoundInstance startSound ( SWFSound $sound )
void stopSound ( SWFSound $sound )
int streamMP3 ( mixed $mp3file [, float $skip = 0 ] )
void writeExports ( void )
}

Table of Contents

  • SWFMovie::add — Adds any type of data to a movie
  • SWFMovie::addExport — 说明
  • SWFMovie::addFont — 说明
  • SWFMovie::__construct — Creates a new movie object, representing an SWF version 4 movie
  • SWFMovie::importChar — 说明
  • SWFMovie::importFont — 说明
  • SWFMovie::labelFrame — Labels a frame
  • SWFMovie::nextFrame — Moves to the next frame of the animation
  • SWFMovie::output — Dumps your lovingly prepared movie out
  • SWFMovie::remove — Removes the object instance from the display list
  • SWFMovie::save — Saves the SWF movie in a file
  • SWFMovie::saveToFile — 说明
  • SWFMovie::setbackground — Sets the background color
  • SWFMovie::setDimension — Sets the movie's width and height
  • SWFMovie::setFrames — Sets the total number of frames in the animation
  • SWFMovie::setRate — Sets the animation's frame rate
  • SWFMovie::startSound — 说明
  • SWFMovie::stopSound — 说明
  • SWFMovie::streamMP3 — Streams a MP3 file
  • SWFMovie::writeExports — 说明
SWFMorph::getShape2
SWFMovie::add
Ming


Adds any type of data to a movie

SWFMovie
SWFMovie::addExport
SWFMovie
PHP Manual

SWFMovie::add

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMovie::add — Adds any type of data to a movie

说明

mixed SWFMovie::add ( object $instance )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Adds an SWF object instance to the current movie.

参数

instance

Any type of object instance, like SWFShape, SWFText, SWFFont.

返回值

For displayable types (shape, text, button, sprite), this returns an SWFDisplayItem, a handle to the object in a display list. Thus, you can add the same shape to a movie multiple times and get separate handles back for each separate instance.

参见

  • SWFMovie::remove() - Removes the object instance from the display list

SWFMovie
SWFMovie::addExport
SWFMovie


SWFMovie::add
SWFMovie::addFont
SWFMovie
PHP Manual

SWFMovie::addExport

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMovie::addExport —

说明

void SWFMovie::addExport ( SWFCharacter $char , string $name )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

SWFMovie::add
SWFMovie::addFont
SWFMovie


SWFMovie::addExport
SWFMovie::__construct
SWFMovie
PHP Manual

SWFMovie::addFont

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMovie::addFont —

说明

mixed SWFMovie::addFont ( SWFFont $font )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

SWFMovie::addExport
SWFMovie::__construct
SWFMovie


Creates a new movie object, representing an SWF version 4 movie

SWFMovie::addFont
SWFMovie::importChar
SWFMovie
PHP Manual

SWFMovie::__construct

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMovie::__construct — Creates a new movie object, representing an SWF version 4 movie

说明

SWFMovie::__construct ([ int $version ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Creates a new movie object, representing an SWF movie.

参数

version

The desired SWF version. Default is 4.

SWFMovie::addFont
SWFMovie::importChar
SWFMovie


SWFMovie::__construct
SWFMovie::importFont
SWFMovie
PHP Manual

SWFMovie::importChar

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMovie::importChar —

说明

SWFSprite SWFMovie::importChar ( string $libswf , string $name )
Warning

本函数还未编写文档，仅有参数列表。

参见

  • SWFMovie::importFont() - 说明

SWFMovie::__construct
SWFMovie::importFont
SWFMovie


SWFMovie::importChar
SWFMovie::labelFrame
SWFMovie
PHP Manual

SWFMovie::importFont

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMovie::importFont —

说明

SWFFontChar SWFMovie::importFont ( string $libswf , string $name )
Warning

本函数还未编写文档，仅有参数列表。

参见

  • SWFMovie::importChar() - 说明

SWFMovie::importChar
SWFMovie::labelFrame
SWFMovie


Labels a frame

SWFMovie::importFont
SWFMovie::nextFrame
SWFMovie
PHP Manual

SWFMovie::labelFrame

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMovie::labelFrame — Labels a frame

说明

void SWFMovie::labelFrame ( string $label )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

SWFMovie::importFont
SWFMovie::nextFrame
SWFMovie


Moves to the next frame of the animation

SWFMovie::labelFrame
SWFMovie::output
SWFMovie
PHP Manual

SWFMovie::nextFrame

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMovie::nextFrame — Moves to the next frame of the animation

说明

void SWFMovie::nextFrame ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Moves to the next frame of the animation.

返回值

没有返回值。

SWFMovie::labelFrame
SWFMovie::output
SWFMovie


Dumps your lovingly prepared movie out

SWFMovie::nextFrame
SWFMovie::remove
SWFMovie
PHP Manual

SWFMovie::output

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMovie::output — Dumps your lovingly prepared movie out

说明

int SWFMovie::output ([ int $compression ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Dumps the SWFMovie.

Don't forget to send the Content-Type HTTP header file before using this function, in order to display the movie in a browser.

参数

compression

The compression level can be a value between 0 and 9, defining the SWF compression similar to gzip compression.

This parameter is only available as of Flash MX (6).

返回值

Return the number of bytes written or FALSE on error.

范例

Example #1 Displaying your $movie in a browser

<?php
header('Content-type: application/x-shockwave-flash');
$movie->output();
?>

参见

  • SWFMovie::save() - Saves the SWF movie in a file
  • SWFMovie::saveToFile() - 说明

SWFMovie::nextFrame
SWFMovie::remove
SWFMovie


Removes the object instance from the display list

SWFMovie::output
SWFMovie::save
SWFMovie
PHP Manual

SWFMovie::remove

(PHP 5.2.1-5.3.0, PHP 7, PECL ming SVN)

SWFMovie::remove — Removes the object instance from the display list

说明

void SWFMovie::remove ( object $instance )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Removes the given object instance from the display list.

返回值

没有返回值。

参见

  • SWFMovie::add() - Adds any type of data to a movie

SWFMovie::output
SWFMovie::save
SWFMovie


Saves the SWF movie in a file

SWFMovie::remove
SWFMovie::saveToFile
SWFMovie
PHP Manual

SWFMovie::save

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMovie::save — Saves the SWF movie in a file

说明

int SWFMovie::save ( string $filename [, int $compression = -1 ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Saves the SWF movie to the specified filename.

参数

filename

The path to the saved SWF document.

compression

The compression level can be a value between 0 and 9, defining the SWF compression similar to gzip compression.

This parameter is only available as of Flash MX (6).

返回值

Return the number of bytes written or FALSE on error.

参见

  • SWFMovie::output() - Dumps your lovingly prepared movie out
  • SWFMovie::saveToFile() - 说明

SWFMovie::remove
SWFMovie::saveToFile
SWFMovie


SWFMovie::save
SWFMovie::setbackground
SWFMovie
PHP Manual

SWFMovie::saveToFile

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMovie::saveToFile —

说明

int SWFMovie::saveToFile ( resource $x [, int $compression = -1 ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

X

compression

The compression level can be a value between 0 and 9, defining the SWF compression similar to gzip compression.

This parameter is only available as of Flash MX (6).

返回值

Return the number of bytes written or FALSE on error.

参见

  • SWFMovie::output() - Dumps your lovingly prepared movie out
  • SWFMovie::save() - Saves the SWF movie in a file

SWFMovie::save
SWFMovie::setbackground
SWFMovie


Sets the background color

SWFMovie::saveToFile
SWFMovie::setDimension
SWFMovie
PHP Manual

SWFMovie::setbackground

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMovie::setbackground — Sets the background color

说明

void SWFMovie::setbackground ( int $red , int $green , int $blue )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Sets the background color.

Why is there no rgba version? Think about it, you might want to let the HTML background show through. There's a way to do that, but it only works on IE4. Search the » http://www.macromedia.com/ site for details.

参数

These parameters are integers between 0 and 255 or hexadecimals between 0x00 and 0xFF:

red

Value of red component

green

Value of green component

blue

Value of blue component

返回值

没有返回值。

SWFMovie::saveToFile
SWFMovie::setDimension
SWFMovie


Sets the movie's width and height

SWFMovie::setbackground
SWFMovie::setFrames
SWFMovie
PHP Manual

SWFMovie::setDimension

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMovie::setDimension — Sets the movie's width and height

说明

void SWFMovie::setDimension ( float $width , float $height )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Sets the movie's dimension to the specified width and height.

参数

width

The movie width.

height

The movie height.

返回值

没有返回值。

SWFMovie::setbackground
SWFMovie::setFrames
SWFMovie


Sets the total number of frames in the animation

SWFMovie::setDimension
SWFMovie::setRate
SWFMovie
PHP Manual

SWFMovie::setFrames

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMovie::setFrames — Sets the total number of frames in the animation

说明

void SWFMovie::setFrames ( int $number )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Sets the total number of frames in the animation to the given number.

参数

number

The number of frames.

返回值

没有返回值。

SWFMovie::setDimension
SWFMovie::setRate
SWFMovie


Sets the animation's frame rate

SWFMovie::setFrames
SWFMovie::startSound
SWFMovie
PHP Manual

SWFMovie::setRate

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMovie::setRate — Sets the animation's frame rate

说明

void SWFMovie::setRate ( float $rate )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Sets the frame rate to the specified rate.

Animation will slow down if the player can't render frames fast enough- unless there's a streaming sound, in which case display frames are sacrificed to keep sound from skipping.

参数

rate

The frame rate, in frame per seconds.

返回值

没有返回值。

SWFMovie::setFrames
SWFMovie::startSound
SWFMovie


SWFMovie::setRate
SWFMovie::stopSound
SWFMovie
PHP Manual

SWFMovie::startSound

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMovie::startSound —

说明

SWFSoundInstance SWFMovie::startSound ( SWFSound $sound )
Warning

本函数还未编写文档，仅有参数列表。

参见

  • SWFMovie::stopSound() - 说明

SWFMovie::setRate
SWFMovie::stopSound
SWFMovie


SWFMovie::startSound
SWFMovie::streamMP3
SWFMovie
PHP Manual

SWFMovie::stopSound

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMovie::stopSound —

说明

void SWFMovie::stopSound ( SWFSound $sound )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

参见

  • SWFMovie::startSound() - 说明

SWFMovie::startSound
SWFMovie::streamMP3
SWFMovie


Streams a MP3 file

SWFMovie::stopSound
SWFMovie::writeExports
SWFMovie
PHP Manual

SWFMovie::streamMP3

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMovie::streamMP3 — Streams a MP3 file

说明

int SWFMovie::streamMP3 ( mixed $mp3file [, float $skip = 0 ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Streams the given MP3 file mp3file.

This method is not very robust in dealing with oddities (can skip over an initial ID3 tag, but that's about it).

Note that the movie isn't smart enough to put enough frames in to contain the entire mp3 stream- you'll have to add (length of song * frames per second) frames to get the entire stream in.

参数

mp3file

Can be a file pointer returned by fopen() or the MP3 data, as a binary string.

skip

Number of seconds to skip.

返回值

Return number of frames.

更新日志

版本 | 说明
5.2.0 | skip added

范例

Example #1 Streaming example

<?php
$m = new SWFMovie();
$m->setRate(12.0);
$m->streamMp3(file_get_contents("distortobass.mp3"));
// use your own MP3

// The file is 11.85 seconds at 12.0 fps = 142 frames
$m->setFrames(142);

header('Content-type: application/x-shockwave-flash');
$m->output();
?>

SWFMovie::stopSound
SWFMovie::writeExports
SWFMovie


SWFMovie::streamMP3
SWFPrebuiltClip
SWFMovie
PHP Manual

SWFMovie::writeExports

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFMovie::writeExports —

说明

void SWFMovie::writeExports ( void )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

SWFMovie::streamMP3
SWFPrebuiltClip
SWFMovie


The SWFPrebuiltClip class

(PHP 5.0.5-5.3.0, PHP 7, PECL ming SVN)

简介

SWFPrebuiltClip.

类摘要

SWFPrebuiltClip {
/* 方法 */
__construct ( mixed $file )
}

Table of Contents

  • SWFPrebuiltClip::__construct — Returns a SWFPrebuiltClip object
SWFMovie::writeExports
SWFPrebuiltClip::__construct
Ming


Returns a SWFPrebuiltClip object

SWFPrebuiltClip
SWFShape
SWFPrebuiltClip
PHP Manual

SWFPrebuiltClip::__construct

(PHP 5.0.5-5.3.0, PHP 7, PECL ming SVN)

SWFPrebuiltClip::__construct — Returns a SWFPrebuiltClip object

说明

SWFPrebuiltClip::__construct ( mixed $file )
Warning

本函数还未编写文档，仅有参数列表。

SWFPrebuiltClip
SWFShape
SWFPrebuiltClip


The SWFShape class

(PHP 5 <= 5.3.0, PECL ming SVN)

简介

SWFShape.

类摘要

SWFShape {
/* 方法 */
SWFFill addFill ( int $red , int $green , int $blue [, int $alpha = 255 ] )
__construct ( void )
void drawArc ( float $r , float $startAngle , float $endAngle )
void drawCircle ( float $r )
int drawCubic ( float $bx , float $by , float $cx , float $cy , float $dx , float $dy )
int drawCubicTo ( float $bx , float $by , float $cx , float $cy , float $dx , float $dy )
int drawCurve ( float $controldx , float $controldy , float $anchordx , float $anchordy [, float $targetdx ], float $targetdy )
int drawCurveTo ( float $controlx , float $controly , float $anchorx , float $anchory [, float $targetx ], float $targety )
void drawGlyph ( SWFFont $font , string $character [, int $size ] )
void drawLine ( float $dx , float $dy )
void drawLineTo ( float $x , float $y )
void movePen ( float $dx , float $dy )
void movePenTo ( float $x , float $y )
void setLeftFill ( SWFGradient $fill )
void setLine ( SWFShape $shape )
void setRightFill ( SWFGradient $fill )
}

Table of Contents

  • SWFShape::addFill — Adds a solid fill to the shape
  • SWFShape::__construct — Creates a new shape object
  • SWFShape::drawArc — Draws an arc of radius r centered at the current location, from angle startAngle to angle endAngle measured clockwise from 12 o'clock
  • SWFShape::drawCircle — Draws a circle of radius r centered at the current location, in a counter-clockwise fashion
  • SWFShape::drawCubic — Draws a cubic bezier curve using the current position and the three given points as control points
  • SWFShape::drawCubicTo — Draws a cubic bezier curve using the current position and the three given points as control points
  • SWFShape::drawCurve — Draws a curve (relative)
  • SWFShape::drawCurveTo — Draws a curve
  • SWFShape::drawGlyph — Draws the first character in the given string into the shape using the glyph definition from the given font
  • SWFShape::drawLine — Draws a line (relative)
  • SWFShape::drawLineTo — Draws a line
  • SWFShape::movePen — Moves the shape's pen (relative)
  • SWFShape::movePenTo — Moves the shape's pen
  • SWFShape::setLeftFill — Sets left rasterizing color
  • SWFShape::setLine — Sets the shape's line style
  • SWFShape::setRightFill — Sets right rasterizing color
SWFPrebuiltClip::__construct
SWFShape::addFill
Ming


Adds a solid fill to the shape

SWFShape
SWFShape::__construct
SWFShape
PHP Manual

SWFShape::addFill

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFShape::addFill — Adds a solid fill to the shape

说明

SWFFill SWFShape::addFill ( int $red , int $green , int $blue [, int $alpha = 255 ] )
SWFFill addFill ( SWFBitmap $bitmap [, int $flags ] )
SWFFill addFill ( SWFGradient $gradient [, int $flags ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

SWFShape::addFill() adds a solid fill to the shape's list of fill styles. SWFShape::addFill() accepts three different types of arguments.

red, green, blue is a color (RGB mode).

The bitmap argument is an SWFBitmap() object. The flags argument can be one of the following values: SWFFILL_CLIPPED_BITMAP, SWFFILL_TILED_BITMAP, SWFFILL_LINEAR_GRADIENT or SWFFILL_RADIAL_GRADIENT. Default is SWFFILL_TILED_BITMAP for SWFBitmap and SWFFILL_LINEAR_GRADIENT for SWFGradient.

The gradient argument is an SWFGradient() object. The flags argument can be one of the following values : SWFFILL_RADIAL_GRADIENT or SWFFILL_LINEAR_GRADIENT. Default is SWFFILL_LINEAR_GRADIENT. I'm sure about this one. Really.

SWFShape::addFill() returns an SWFFill()
object for use with the SWFShape::setLeftFill()
and SWFShape::setRightFill() functions
described below.

范例

This simple example will draw a frame on a bitmap. Ah, here's another buglet in the flash player- it doesn't seem to care about the second shape's bitmap's transformation in a morph. According to spec, the bitmap should stretch along with the shape in this example..

Example #1 SWFShape::addFill() example

<?php

$p = new SWFMorph();

$b = new SWFBitmap(file_get_contents("alphafill.jpg"));
// use your own bitmap
$width = $b->getWidth();
$height = $b->getHeight();

$s = $p->getShape1();
$f = $s->addFill($b, SWFFILL_TILED_BITMAP);
$f->moveTo(-$width/2, -$height/4);
$f->scaleTo(1.0, 0.5);
$s->setLeftFill($f);
$s->movePenTo(-$width/2, -$height/4);
$s->drawLine($width, 0);
$s->drawLine(0, $height/2);
$s->drawLine(-$width, 0);
$s->drawLine(0, -$height/2);

$s = $p->getShape2();
$f = $s->addFill($b, SWFFILL_TILED_BITMAP);

// these two have no effect!
$f->moveTo(-$width/4, -$height/2);
$f->scaleTo(0.5, 1.0);

$s->setLeftFill($f);
$s->movePenTo(-$width/4, -$height/2);
$s->drawLine($width/2, 0);
$s->drawLine(0, $height);
$s->drawLine(-$width/2, 0);
$s->drawLine(0, -$height);

$m = new SWFMovie();
$m->setDimension($width, $height);
$i = $m->add($p);
$i->moveTo($width/2, $height/2);

for ($n=0; $n<1.001; $n+=0.03) {
    $i->setRatio($n);
    $m->nextFrame();
}

header('Content-type: application/x-shockwave-flash');
$m->output();
?>

参见

  • SWFShape::setLeftFill() - Sets left rasterizing color
  • SWFShape::setRightFill() - Sets right rasterizing color

SWFShape
SWFShape::__construct
SWFShape


Creates a new shape object

SWFShape::addFill
SWFShape::drawArc
SWFShape
PHP Manual

SWFShape::__construct

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFShape::__construct — Creates a new shape object

说明

SWFShape::__construct ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Created a new SWFShape object.

范例

This simple example will draw a big red elliptic quadrant.

Example #1 swfshape() example

<?php
$s = new SWFShape();
$s->setLine(40, 0x7f, 0, 0);
$s->setRightFill($s->addFill(0xff, 0, 0));
$s->movePenTo(200, 200);
$s->drawLineTo(6200, 200);
$s->drawLineTo(6200, 4600);
$s->drawCurveTo(200, 4600, 200, 200);

$m = new SWFMovie();
$m->setDimension(6400, 4800);
$m->setRate(12.0);
$m->add($s);
$m->nextFrame();

header('Content-type: application/x-shockwave-flash');
$m->output();
?>

SWFShape::addFill
SWFShape::drawArc
SWFShape


Draws an arc of radius r centered at the current location, from angle startAngle to angle endAngle measured clockwise from 12 o'clock

SWFShape::__construct
SWFShape::drawCircle
SWFShape
PHP Manual

SWFShape::drawArc

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFShape::drawArc — Draws an arc of radius r centered at the current location, from angle startAngle to angle endAngle measured clockwise from 12 o'clock

说明

void SWFShape::drawArc ( float $r , float $startAngle , float $endAngle )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

参见

  • SWFShape::drawCircle() - Draws a circle of radius r centered at the current location, in a counter-clockwise fashion

SWFShape::__construct
SWFShape::drawCircle
SWFShape


Draws a circle of radius r centered at the current location, in a counter-clockwise fashion

SWFShape::drawArc
SWFShape::drawCubic
SWFShape
PHP Manual

SWFShape::drawCircle

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFShape::drawCircle — Draws a circle of radius r centered at the current location, in a counter-clockwise fashion

说明

void SWFShape::drawCircle ( float $r )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

SWFShape::drawArc
SWFShape::drawCubic
SWFShape


Draws a cubic bezier curve using the current position and the three given points as control points

SWFShape::drawCircle
SWFShape::drawCubicTo
SWFShape
PHP Manual

SWFShape::drawCubic

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFShape::drawCubic — Draws a cubic bezier curve using the current position and the three given points as control points

说明

int SWFShape::drawCubic ( float $bx , float $by , float $cx , float $cy , float $dx , float $dy )
Warning

本函数还未编写文档，仅有参数列表。

参见

  • SWFShape::drawCubicTo() - Draws a cubic bezier curve using the current position and the three given points as control points

SWFShape::drawCircle
SWFShape::drawCubicTo
SWFShape


Draws a cubic bezier curve using the current position and the three given points as control points

SWFShape::drawCubic
SWFShape::drawCurve
SWFShape
PHP Manual

SWFShape::drawCubicTo

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFShape::drawCubicTo — Draws a cubic bezier curve using the current position and the three given points as control points

说明

int SWFShape::drawCubicTo ( float $bx , float $by , float $cx , float $cy , float $dx , float $dy )
Warning

本函数还未编写文档，仅有参数列表。

参见

  • SWFShape::drawCubic() - Draws a cubic bezier curve using the current position and the three given points as control points

SWFShape::drawCubic
SWFShape::drawCurve
SWFShape


Draws a curve (relative)

SWFShape::drawCubicTo
SWFShape::drawCurveTo
SWFShape
PHP Manual

SWFShape::drawCurve

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFShape::drawCurve — Draws a curve (relative)

说明

int SWFShape::drawCurve ( float $controldx , float $controldy , float $anchordx , float $anchordy [, float $targetdx ], float $targetdy )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfshape::drawcurve() draws a quadratic curve (using the current line style,set by swfshape::setline()) from the current pen position to the relative position (anchorx,anchory) using relative control point (controlx,controly). That is, head towards the control point, then smoothly turn to the anchor point.

With 6 parameters, it draws a cubic bezier to point (x+targetdx, x+targetdy) with control points (x+controldx, y+controldy) and (x+anchordx, y+anchordy).

参见

  • SWFShape::drawCurve()

SWFShape::drawCubicTo
SWFShape::drawCurveTo
SWFShape


Draws a curve

SWFShape::drawCurve
SWFShape::drawGlyph
SWFShape
PHP Manual

SWFShape::drawCurveTo

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFShape::drawCurveTo — Draws a curve

说明

int SWFShape::drawCurveTo ( float $controlx , float $controly , float $anchorx , float $anchory [, float $targetx ], float $targety )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfshape::drawcurveto() draws a quadratic curve (using the current line style, set by swfshape::setline()) from the current pen position to (anchorx,anchory) using (controlx,controly) as a control point. That is, head towards the control point, then smoothly turn to the anchor point.

With 6 parameters, it draws a cubic bezier to point (targetx, targety) with control points (controlx, controly) and (anchorx, anchory).

参见

  • SWFShape::drawCurveTo()

SWFShape::drawCurve
SWFShape::drawGlyph
SWFShape


Draws the first character in the given string into the shape using the glyph definition from the given font

SWFShape::drawCurveTo
SWFShape::drawLine
SWFShape
PHP Manual

SWFShape::drawGlyph

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFShape::drawGlyph — Draws the first character in the given string into the shape using the glyph definition from the given font

说明

void SWFShape::drawGlyph ( SWFFont $font , string $character [, int $size ] )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

SWFShape::drawCurveTo
SWFShape::drawLine
SWFShape


Draws a line (relative)

SWFShape::drawGlyph
SWFShape::drawLineTo
SWFShape
PHP Manual

SWFShape::drawLine

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFShape::drawLine — Draws a line (relative)

说明

void SWFShape::drawLine ( float $dx , float $dy )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfshape::drawline() draws a line (using the current line style set by swfshape::setline()) from the current pen position to displacement (dx,dy).

返回值

没有返回值。

参见

  • SWFShape::drawLineTo() - Draws a line

SWFShape::drawGlyph
SWFShape::drawLineTo
SWFShape


Draws a line

SWFShape::drawLine
SWFShape::movePen
SWFShape
PHP Manual

SWFShape::drawLineTo

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFShape::drawLineTo — Draws a line

说明

void SWFShape::drawLineTo ( float $x , float $y )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfshape::setrightfill() draws a line (using the current line style, set by swfshape::setline()) from the current pen position to point (x,y) in the shape's coordinate space.

返回值

没有返回值。

参见

  • SWFShape::drawLine() - Draws a line (relative)

SWFShape::drawLine
SWFShape::movePen
SWFShape


Moves the shape's pen (relative)

SWFShape::drawLineTo
SWFShape::movePenTo
SWFShape
PHP Manual

SWFShape::movePen

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFShape::movePen — Moves the shape's pen (relative)

说明

void SWFShape::movePen ( float $dx , float $dy )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfshape::setrightfill() move the shape's pen from coordinates (current x,current y) to (current x + dx, current y + dy) in the shape's coordinate space.

返回值

没有返回值。

参见

  • SWFShape::movePenTo() - Moves the shape's pen

SWFShape::drawLineTo
SWFShape::movePenTo
SWFShape


Moves the shape's pen

SWFShape::movePen
SWFShape::setLeftFill
SWFShape
PHP Manual

SWFShape::movePenTo

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFShape::movePenTo — Moves the shape's pen

说明

void SWFShape::movePenTo ( float $x , float $y )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfshape::setrightfill() move the shape's pen to (x,y) in the shape's coordinate space.

返回值

没有返回值。

参见

  • SWFShape::movePen() - Moves the shape's pen (relative)

SWFShape::movePen
SWFShape::setLeftFill
SWFShape


Sets left rasterizing color

SWFShape::movePenTo
SWFShape::setLine
SWFShape
PHP Manual

SWFShape::setLeftFill

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFShape::setLeftFill — Sets left rasterizing color

说明

void SWFShape::setLeftFill ( SWFGradient $fill )
void setLeftFill ( int $red , int $green , int $blue [, int $a ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

What this nonsense is about is, every edge segment borders at most two fills. When rasterizing the object, it's pretty handy to know what those fills are ahead of time, so the swf format requires these to be specified.

swfshape::setleftfill() sets the fill on the left side of the edge- that is, on the interior if you're defining the outline of the shape in a counter-clockwise fashion. The fill object is an SWFFill object returned from one of the addFill functions above.

This seems to be reversed when you're defining a shape in a morph, though. If your browser crashes, just try setting the fill on the other side.

Shortcut for $swfshape->setleftfill($s->addfill($r, $g, $b [, $a]));.

返回值

没有返回值。

参见

  • SWFShape::setRightFill() - Sets right rasterizing color

SWFShape::movePenTo
SWFShape::setLine
SWFShape


Sets the shape's line style

SWFShape::setLeftFill
SWFShape::setRightFill
SWFShape
PHP Manual

SWFShape::setLine

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFShape::setLine — Sets the shape's line style

说明

void SWFShape::setLine ( SWFShape $shape )
void setLine ( int $width , int $red , int $green , int $blue [, int $a ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfshape::setline() sets the shape's line style. width is the line's width. If width is 0, the line's style is removed (then, all other arguments are ignored). If width > 0, then line's color is set to red, green, blue. Last parameter a is optional.

You must declare all line styles before you use them (see example).

返回值

没有返回值。

范例

This simple example will draw a big "!#%*@", in funny colors and gracious style.

Example #1 swfshape::setline() example

<?php
$s = new SWFShape();
$f1 = $s->addFill(0xff, 0, 0);
$f2 = $s->addFill(0xff, 0x7f, 0);
$f3 = $s->addFill(0xff, 0xff, 0);
$f4 = $s->addFill(0, 0xff, 0);
$f5 = $s->addFill(0, 0, 0xff);

// bug: have to declare all line styles before you use them
$s->setLine(40, 0x7f, 0, 0);
$s->setLine(40, 0x7f, 0x3f, 0);
$s->setLine(40, 0x7f, 0x7f, 0);
$s->setLine(40, 0, 0x7f, 0);
$s->setLine(40, 0, 0, 0x7f);

$f = new SWFFont('Techno.fdb');

$s->setRightFill($f1);
$s->setLine(40, 0x7f, 0, 0);
$s->drawGlyph($f, '!');
$s->movePen($f->getWidth('!'), 0);

$s->setRightFill($f2);
$s->setLine(40, 0x7f, 0x3f, 0);
$s->drawGlyph($f, '#');
$s->movePen($f->getWidth('#'), 0);

$s->setRightFill($f3);
$s->setLine(40, 0x7f, 0x7f, 0);
$s->drawGlyph($f, '%');
$s->movePen($f->getWidth('%'), 0);

$s->setRightFill($f4);
$s->setLine(40, 0, 0x7f, 0);
$s->drawGlyph($f, '*');
$s->movePen($f->getWidth('*'), 0);

$s->setRightFill($f5);
$s->setLine(40, 0, 0, 0x7f);
$s->drawGlyph($f, '@');

$m = new SWFMovie();
$m->setDimension(3000,2000);
$m->setRate(12.0);
$i = $m->add($s);
$i->moveTo(1500-$f->getWidth("!#%*@")/2, 1000+$f->getAscent()/2);

header('Content-type: application/x-shockwave-flash');
$m->output();
?>

返回值

没有返回值。

SWFShape::setLeftFill
SWFShape::setRightFill
SWFShape


Sets right rasterizing color

SWFShape::setLine
SWFSound
SWFShape
PHP Manual

SWFShape::setRightFill

(No version information available, might only be in Git)

SWFShape::setRightFill — Sets right rasterizing color

说明

void SWFShape::setRightFill ( SWFGradient $fill )
void setRightFill ( int $red , int $green , int $blue [, int $a ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Shortcut for $swfshape->setrightfill($s->addfill($r, $g, $b [, $a]));.

返回值

没有返回值。

参见

  • SWFShape::setLeftFill() - Sets left rasterizing color

SWFShape::setLine
SWFSound
SWFShape


The SWFSound class

(PHP 5 <= 5.3.0, PECL ming SVN)

简介

SWFSound.

类摘要

SWFSound {
/* 方法 */
__construct ( string $filename [, int $flags = 0 ] )
}

Table of Contents

  • SWFSound::__construct — Returns a new SWFSound object from given file
SWFShape::setRightFill
SWFSound::__construct
Ming


Returns a new SWFSound object from given file

SWFSound
SWFSoundInstance
SWFSound
PHP Manual

SWFSound::__construct

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFSound::__construct — Returns a new SWFSound object from given file

说明

SWFSound::__construct ( string $filename [, int $flags = 0 ] )
Warning

本函数还未编写文档，仅有参数列表。

SWFSound
SWFSoundInstance
SWFSound


The SWFSoundInstance class

(PHP 5 <= 5.3.0, PECL ming SVN)

简介

SWFSoundInstance objects are returned by the SWFSprite::startSound() and SWFMovie::startSound() methods.

类摘要

SWFSoundInstance {
/* 方法 */
void loopCount ( int $point )
void loopInPoint ( int $point )
void loopOutPoint ( int $point )
void noMultiple ( void )
}

Table of Contents

  • SWFSoundInstance::loopCount — 说明
  • SWFSoundInstance::loopInPoint — 说明
  • SWFSoundInstance::loopOutPoint — 说明
  • SWFSoundInstance::noMultiple — 说明
SWFSound::__construct
SWFSoundInstance::loopCount
Ming


SWFSoundInstance
SWFSoundInstance::loopInPoint
SWFSoundInstance
PHP Manual

SWFSoundInstance::loopCount

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFSoundInstance::loopCount —

说明

void SWFSoundInstance::loopCount ( int $point )
Warning

本函数还未编写文档，仅有参数列表。

参数

point

返回值

没有返回值。

参见

  • SWFSoundInstance::loopOutPoint() - 说明

SWFSoundInstance
SWFSoundInstance::loopInPoint
SWFSoundInstance


SWFSoundInstance::loopCount
SWFSoundInstance::loopOutPoint
SWFSoundInstance
PHP Manual

SWFSoundInstance::loopInPoint

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFSoundInstance::loopInPoint —

说明

void SWFSoundInstance::loopInPoint ( int $point )
Warning

本函数还未编写文档，仅有参数列表。

参数

point

返回值

没有返回值。

参见

  • SWFSoundInstance::loopOutPoint() - 说明

SWFSoundInstance::loopCount
SWFSoundInstance::loopOutPoint
SWFSoundInstance


SWFSoundInstance::loopInPoint
SWFSoundInstance::noMultiple
SWFSoundInstance
PHP Manual

SWFSoundInstance::loopOutPoint

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFSoundInstance::loopOutPoint —

说明

void SWFSoundInstance::loopOutPoint ( int $point )
Warning

本函数还未编写文档，仅有参数列表。

参数

point

返回值

没有返回值。

参见

  • SWFSoundInstance::loopInPoint() - 说明

SWFSoundInstance::loopInPoint
SWFSoundInstance::noMultiple
SWFSoundInstance


SWFSoundInstance::loopOutPoint
SWFSprite
SWFSoundInstance
PHP Manual

SWFSoundInstance::noMultiple

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFSoundInstance::noMultiple —

说明

void SWFSoundInstance::noMultiple ( void )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

SWFSoundInstance::loopOutPoint
SWFSprite
SWFSoundInstance


The SWFSprite class

(PHP 5 <= 5.3.0, PECL ming SVN)

简介

An SWFSprite is also known as a "movie clip", this allows one to create objects which are animated in their own timelines. Hence, the sprite has most of the same methods as the movie.

类摘要

SWFSprite {
/* 方法 */
void add ( object $object )
__construct ( void )
void labelFrame ( string $label )
void nextFrame ( void )
void remove ( object $object )
void setFrames ( int $number )
SWFSoundInstance startSound ( SWFSound $sount )
void stopSound ( SWFSound $sount )
}

Table of Contents

  • SWFSprite::add — Adds an object to a sprite
  • SWFSprite::__construct — Creates a movie clip (a sprite)
  • SWFSprite::labelFrame — Labels frame
  • SWFSprite::nextFrame — Moves to the next frame of the animation
  • SWFSprite::remove — Removes an object to a sprite
  • SWFSprite::setFrames — Sets the total number of frames in the animation
  • SWFSprite::startSound — 说明
  • SWFSprite::stopSound — 说明
SWFSoundInstance::noMultiple
SWFSprite::add
Ming


Adds an object to a sprite

SWFSprite
SWFSprite::__construct
SWFSprite
PHP Manual

SWFSprite::add

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFSprite::add — Adds an object to a sprite

说明

void SWFSprite::add ( object $object )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfsprite::add() adds a swfshape(), a
swfbutton(), a swftext(),
a swfaction() or a swfsprite() object.

For displayable types (swfshape(),
swfbutton(), swftext(),
swfaction() or swfsprite()),
this returns a handle  to the object in a display list.

返回值

没有返回值。

SWFSprite
SWFSprite::__construct
SWFSprite


Creates a movie clip (a sprite)

SWFSprite::add
SWFSprite::labelFrame
SWFSprite
PHP Manual

SWFSprite::__construct

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFSprite::__construct — Creates a movie clip (a sprite)

说明

SWFSprite::__construct ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Creates a new SWFSprite object.

SWFSprite::add
SWFSprite::labelFrame
SWFSprite


Labels frame

SWFSprite::__construct
SWFSprite::nextFrame
SWFSprite
PHP Manual

SWFSprite::labelFrame

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFSprite::labelFrame — Labels frame

说明

void SWFSprite::labelFrame ( string $label )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

SWFSprite::__construct
SWFSprite::nextFrame
SWFSprite


Moves to the next frame of the animation

SWFSprite::labelFrame
SWFSprite::remove
SWFSprite
PHP Manual

SWFSprite::nextFrame

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFSprite::nextFrame — Moves to the next frame of the animation

说明

void SWFSprite::nextFrame ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfsprite::setframes() moves to the next frame of the animation.

返回值

没有返回值。

SWFSprite::labelFrame
SWFSprite::remove
SWFSprite


Removes an object to a sprite

SWFSprite::nextFrame
SWFSprite::setFrames
SWFSprite
PHP Manual

SWFSprite::remove

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFSprite::remove — Removes an object to a sprite

说明

void SWFSprite::remove ( object $object )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfsprite::remove() remove a swfshape(), a
swfbutton(), a swftext(),
a swfaction() or a swfsprite() object
from the sprite.

返回值

没有返回值。

SWFSprite::nextFrame
SWFSprite::setFrames
SWFSprite


Sets the total number of frames in the animation

SWFSprite::remove
SWFSprite::startSound
SWFSprite
PHP Manual

SWFSprite::setFrames

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFSprite::setFrames — Sets the total number of frames in the animation

说明

void SWFSprite::setFrames ( int $number )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swfsprite::setframes() sets the total number of frames in the animation to numberofframes.

返回值

没有返回值。

SWFSprite::remove
SWFSprite::startSound
SWFSprite


SWFSprite::setFrames
SWFSprite::stopSound
SWFSprite
PHP Manual

SWFSprite::startSound

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFSprite::startSound —

说明

SWFSoundInstance SWFSprite::startSound ( SWFSound $sount )
Warning

本函数还未编写文档，仅有参数列表。

参见

  • SWFSprite::stopSound() - 说明

SWFSprite::setFrames
SWFSprite::stopSound
SWFSprite


SWFSprite::startSound
SWFText
SWFSprite
PHP Manual

SWFSprite::stopSound

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFSprite::stopSound —

说明

void SWFSprite::stopSound ( SWFSound $sount )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

参见

  • SWFSprite::startSound() - 说明

SWFSprite::startSound
SWFText
SWFSprite


The SWFText class

(PHP 5 <= 5.3.0, PECL ming SVN)

简介

SWFText.

类摘要

SWFText {
/* 方法 */
void addString ( string $string )
void addUTF8String ( string $text )
__construct ( void )
float getAscent ( void )
float getDescent ( void )
float getLeading ( void )
float getUTF8Width ( string $string )
float getWidth ( string $string )
void moveTo ( float $x , float $y )
void setColor ( int $red , int $green , int $blue [, int $a = 255 ] )
void setFont ( SWFFont $font )
void setHeight ( float $height )
void setSpacing ( float $spacing )
}

Table of Contents

  • SWFText::addString — Draws a string
  • SWFText::addUTF8String — Writes the given text into this SWFText object at the current pen position, using the current font, height, spacing, and color
  • SWFText::__construct — Creates a new SWFText object
  • SWFText::getAscent — Returns the ascent of the current font at its current size, or 0 if not available
  • SWFText::getDescent — Returns the descent of the current font at its current size, or 0 if not available
  • SWFText::getLeading — Returns the leading of the current font at its current size, or 0 if not available
  • SWFText::getUTF8Width — calculates the width of the given string in this text objects current font and size
  • SWFText::getWidth — Computes string's width
  • SWFText::moveTo — Moves the pen
  • SWFText::setColor — Sets the current text color
  • SWFText::setFont — Sets the current font
  • SWFText::setHeight — Sets the current font height
  • SWFText::setSpacing — Sets the current font spacing
SWFSprite::stopSound
SWFText::addString
Ming


Draws a string

SWFText
SWFText::addUTF8String
SWFText
PHP Manual

SWFText::addString

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFText::addString — Draws a string

说明

void SWFText::addString ( string $string )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swftext::addstring() draws the string string at the current pen (cursor) location. Pen is at the baseline of the text; i.e., ascending text is in the -y direction.

返回值

没有返回值。

参见

  • SWFText::addUTF8String() - Writes the given text into this SWFText object at the current pen position, using the current font, height, spacing, and color

SWFText
SWFText::addUTF8String
SWFText


Writes the given text into this SWFText object at the current pen position, using the current font, height, spacing, and color

SWFText::addString
SWFText::__construct
SWFText
PHP Manual

SWFText::addUTF8String

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFText::addUTF8String — Writes the given text into this SWFText object at the current pen position, using the current font, height, spacing, and color

说明

void SWFText::addUTF8String ( string $text )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

参见

  • SWFText::addString() - Draws a string

SWFText::addString
SWFText::__construct
SWFText


Creates a new SWFText object

SWFText::addUTF8String
SWFText::getAscent
SWFText
PHP Manual

SWFText::__construct

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFText::__construct — Creates a new SWFText object

说明

SWFText::__construct ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Creates a new SWFText object, fresh for manipulating.

范例

This simple example will draw a big yellow "PHP generates Flash with Ming" text, on white background.

Example #1 swftext() example

<?php
$f = new SWFFont("Techno.fdb");
$t = new SWFText();
$t->setFont($f);
$t->moveTo(200, 2400);
$t->setColor(0xff, 0xff, 0);
$t->setHeight(1200);
$t->addString("PHP generates Flash with Ming!!");

$m = new SWFMovie();
$m->setDimension(5400, 3600);

$m->add($t);

header('Content-type: application/x-shockwave-flash');
$m->output();
?>

SWFText::addUTF8String
SWFText::getAscent
SWFText


Returns the ascent of the current font at its current size, or 0 if not available

SWFText::__construct
SWFText::getDescent
SWFText
PHP Manual

SWFText::getAscent

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFText::getAscent — Returns the ascent of the current font at its current size, or 0 if not available

说明

float SWFText::getAscent ( void )
Warning

本函数还未编写文档，仅有参数列表。

参见

  • SWFText::getDescent() - Returns the descent of the current font at its current size, or 0 if not available

SWFText::__construct
SWFText::getDescent
SWFText


Returns the descent of the current font at its current size, or 0 if not available

SWFText::getAscent
SWFText::getLeading
SWFText
PHP Manual

SWFText::getDescent

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFText::getDescent — Returns the descent of the current font at its current size, or 0 if not available

说明

float SWFText::getDescent ( void )
Warning

本函数还未编写文档，仅有参数列表。

参见

  • SWFText::getAscent() - Returns the ascent of the current font at its current size, or 0 if not available

SWFText::getAscent
SWFText::getLeading
SWFText


Returns the leading of the current font at its current size, or 0 if not available

SWFText::getDescent
SWFText::getUTF8Width
SWFText
PHP Manual

SWFText::getLeading

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFText::getLeading — Returns the leading of the current font at its current size, or 0 if not available

说明

float SWFText::getLeading ( void )
Warning

本函数还未编写文档，仅有参数列表。

SWFText::getDescent
SWFText::getUTF8Width
SWFText


calculates the width of the given string in this text objects current font and size

SWFText::getLeading
SWFText::getWidth
SWFText
PHP Manual

SWFText::getUTF8Width

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFText::getUTF8Width — calculates the width of the given string in this text objects current font and size

说明

float SWFText::getUTF8Width ( string $string )
Warning

本函数还未编写文档，仅有参数列表。

参见

  • SWFText::getWidth() - Computes string's width

SWFText::getLeading
SWFText::getWidth
SWFText


Computes string's width

SWFText::getUTF8Width
SWFText::moveTo
SWFText
PHP Manual

SWFText::getWidth

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFText::getWidth — Computes string's width

说明

float SWFText::getWidth ( string $string )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Returns the rendered width of the string at the text object's current font, scale, and spacing settings.

参见

  • SWFText::getUTF8Width() - calculates the width of the given string in this text objects current font and size

SWFText::getUTF8Width
SWFText::moveTo
SWFText


Moves the pen

SWFText::getWidth
SWFText::setColor
SWFText
PHP Manual

SWFText::moveTo

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFText::moveTo — Moves the pen

说明

void SWFText::moveTo ( float $x , float $y )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swftext::moveto() moves the pen (or cursor, if that makes more sense) to (x,y) in text object's coordinate space. If either is zero, though, value in that dimension stays the same. Annoying, should be fixed.

返回值

没有返回值。

SWFText::getWidth
SWFText::setColor
SWFText


Sets the current text color

SWFText::moveTo
SWFText::setFont
SWFText
PHP Manual

SWFText::setColor

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFText::setColor — Sets the current text color

说明

void SWFText::setColor ( int $red , int $green , int $blue [, int $a = 255 ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Changes the current text color.

参数

These parameters are integers between 0 and 255 or hexadecimals between 0x00 and 0xFF:

red

Value of red component

green

Value of green component

blue

Value of blue component

a

Value of alpha component

返回值

没有返回值。

SWFText::moveTo
SWFText::setFont
SWFText


Sets the current font

SWFText::setColor
SWFText::setHeight
SWFText
PHP Manual

SWFText::setFont

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFText::setFont — Sets the current font

说明

void SWFText::setFont ( SWFFont $font )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swftext::setfont() sets the current font to font.

返回值

没有返回值。

SWFText::setColor
SWFText::setHeight
SWFText


Sets the current font height

SWFText::setFont
SWFText::setSpacing
SWFText
PHP Manual

SWFText::setHeight

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFText::setHeight — Sets the current font height

说明

void SWFText::setHeight ( float $height )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swftext::setheight() sets the current font height to height. Default is 240.

返回值

没有返回值。

SWFText::setFont
SWFText::setSpacing
SWFText


Sets the current font spacing

SWFText::setHeight
SWFTextField
SWFText
PHP Manual

SWFText::setSpacing

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFText::setSpacing — Sets the current font spacing

说明

void SWFText::setSpacing ( float $spacing )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swftext::setspacing() sets the current font spacing to spacing. Default is 1.0. 0 is all of the letters written at the same point. This doesn't really work that well because it inflates the advance across the letter, doesn't add the same amount of spacing between the letters. I should try and explain that better, prolly. Or just fix the damn thing to do constant spacing. This was really just a way to figure out how letter advances work, anyway.. So nyah.

返回值

没有返回值。

SWFText::setHeight
SWFTextField
SWFText


The SWFTextField class

(PHP 5 <= 5.3.0, PECL ming SVN)

简介

SWFTextField.

类摘要

SWFTextField {
/* 方法 */
void addChars ( string $chars )
void addString ( string $string )
void align ( int $alignement )
__construct ([ int $flags ] )
void setBounds ( float $width , float $height )
void setColor ( int $red , int $green , int $blue [, int $a = 255 ] )
void setFont ( SWFFont $font )
void setHeight ( float $height )
void setIndentation ( float $width )
void setLeftMargin ( float $width )
void setLineSpacing ( float $height )
void setMargins ( float $left , float $right )
void setName ( string $name )
void setPadding ( float $padding )
void setRightMargin ( float $width )
}

Table of Contents

  • SWFTextField::addChars — adds characters to a font that will be available within a textfield
  • SWFTextField::addString — Concatenates the given string to the text field
  • SWFTextField::align — Sets the text field alignment
  • SWFTextField::__construct — Creates a text field object
  • SWFTextField::setBounds — Sets the text field width and height
  • SWFTextField::setColor — Sets the color of the text field
  • SWFTextField::setFont — Sets the text field font
  • SWFTextField::setHeight — Sets the font height of this text field font
  • SWFTextField::setIndentation — Sets the indentation of the first line
  • SWFTextField::setLeftMargin — Sets the left margin width of the text field
  • SWFTextField::setLineSpacing — Sets the line spacing of the text field
  • SWFTextField::setMargins — Sets the margins width of the text field
  • SWFTextField::setName — Sets the variable name
  • SWFTextField::setPadding — Sets the padding of this textfield
  • SWFTextField::setRightMargin — Sets the right margin width of the text field
SWFText::setSpacing
SWFTextField::addChars
Ming


adds characters to a font that will be available within a textfield

SWFTextField
SWFTextField::addString
SWFTextField
PHP Manual

SWFTextField::addChars

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFTextField::addChars — adds characters to a font that will be available within a textfield

说明

void SWFTextField::addChars ( string $chars )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

参见

  • SWFTextField::addString() - Concatenates the given string to the text field

SWFTextField
SWFTextField::addString
SWFTextField


Concatenates the given string to the text field

SWFTextField::addChars
SWFTextField::align
SWFTextField
PHP Manual

SWFTextField::addString

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFTextField::addString — Concatenates the given string to the text field

说明

void SWFTextField::addString ( string $string )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swftextfield::setname() concatenates the string string to the text field.

返回值

没有返回值。

SWFTextField::addChars
SWFTextField::align
SWFTextField


Sets the text field alignment

SWFTextField::addString
SWFTextField::__construct
SWFTextField
PHP Manual

SWFTextField::align

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFTextField::align — Sets the text field alignment

说明

void SWFTextField::align ( int $alignement )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swftextfield::align() sets the text field alignment to alignement. Valid values for alignement are : SWFTEXTFIELD_ALIGN_LEFT, SWFTEXTFIELD_ALIGN_RIGHT, SWFTEXTFIELD_ALIGN_CENTER and SWFTEXTFIELD_ALIGN_JUSTIFY.

返回值

没有返回值。

SWFTextField::addString
SWFTextField::__construct
SWFTextField


Creates a text field object

SWFTextField::align
SWFTextField::setBounds
SWFTextField
PHP Manual

SWFTextField::__construct

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFTextField::__construct — Creates a text field object

说明

SWFTextField::__construct ([ int $flags ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swftextfield() creates a new text field object. Text Fields are less flexible than swftext() objects- they can't be rotated, scaled non-proportionally, or skewed, but they can be used as form entries, and they can use browser-defined fonts.

The optional flags change the text field's behavior. It has the following possibles values :

  • SWFTEXTFIELD_DRAWBOX draws the outline of the textfield
  • SWFTEXTFIELD_HASLENGTH
  • SWFTEXTFIELD_HTML allows text markup using HTML-tags
  • SWFTEXTFIELD_MULTILINE allows multiple lines
  • SWFTEXTFIELD_NOEDIT indicates that the field shouldn't be user-editable
  • SWFTEXTFIELD_NOSELECT makes the field non-selectable
  • SWFTEXTFIELD_PASSWORD obscures the data entry
  • SWFTEXTFIELD_WORDWRAP allows text to wrap
Flags are combined with the bitwise OR operation. For example,
<?php
$t = newSWFTextField(SWFTEXTFIELD_PASSWORD | SWFTEXTFIELD_NOEDIT);
?>
creates a totally useless non-editable password field.

SWFTextField has the following methods : swftextfield::setfont(),
swftextfield::setbounds(), swftextfield::align(),
swftextfield::setheight(), swftextfield::setleftmargin(),
swftextfield::setrightmargin(), swftextfield::setmargins(),
swftextfield::setindentation(), swftextfield::setlinespacing(),
swftextfield::setcolor(), swftextfield::setname() and
swftextfield::addstring().

SWFTextField::align
SWFTextField::setBounds
SWFTextField


Sets the text field width and height

SWFTextField::__construct
SWFTextField::setColor
SWFTextField
PHP Manual

SWFTextField::setBounds

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFTextField::setBounds — Sets the text field width and height

说明

void SWFTextField::setBounds ( float $width , float $height )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swftextfield::setbounds() sets the text field width to width and height to height. If you don't set the bounds yourself, Ming makes a poor guess at what the bounds are.

返回值

没有返回值。

SWFTextField::__construct
SWFTextField::setColor
SWFTextField


Sets the color of the text field

SWFTextField::setBounds
SWFTextField::setFont
SWFTextField
PHP Manual

SWFTextField::setColor

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFTextField::setColor — Sets the color of the text field

说明

void SWFTextField::setColor ( int $red , int $green , int $blue [, int $a = 255 ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swftextfield::setcolor() sets the color of the text field. Default is fully opaque black. Color is represented using RGB system.

参数

These parameters are integers between 0 and 255 or hexadecimals between 0x00 and 0xFF:

red

Value of red component

green

Value of green component

blue

Value of blue component

a

Value of alpha component

返回值

没有返回值。

SWFTextField::setBounds
SWFTextField::setFont
SWFTextField


Sets the text field font

SWFTextField::setColor
SWFTextField::setHeight
SWFTextField
PHP Manual

SWFTextField::setFont

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFTextField::setFont — Sets the text field font

说明

void SWFTextField::setFont ( SWFFont $font )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swftextfield::setfont() sets the text field font to the [browser-defined?] font font.

返回值

没有返回值。

SWFTextField::setColor
SWFTextField::setHeight
SWFTextField


Sets the font height of this text field font

SWFTextField::setFont
SWFTextField::setIndentation
SWFTextField
PHP Manual

SWFTextField::setHeight

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFTextField::setHeight — Sets the font height of this text field font

说明

void SWFTextField::setHeight ( float $height )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swftextfield::setheight() sets the font height of this text field font to the given height height. Default is 240.

返回值

没有返回值。

SWFTextField::setFont
SWFTextField::setIndentation
SWFTextField


Sets the indentation of the first line

SWFTextField::setHeight
SWFTextField::setLeftMargin
SWFTextField
PHP Manual

SWFTextField::setIndentation

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFTextField::setIndentation — Sets the indentation of the first line

说明

void SWFTextField::setIndentation ( float $width )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swftextfield::setindentation() sets the indentation of the first line in the text field, to width.

返回值

没有返回值。

SWFTextField::setHeight
SWFTextField::setLeftMargin
SWFTextField


Sets the left margin width of the text field

SWFTextField::setIndentation
SWFTextField::setLineSpacing
SWFTextField
PHP Manual

SWFTextField::setLeftMargin

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFTextField::setLeftMargin — Sets the left margin width of the text field

说明

void SWFTextField::setLeftMargin ( float $width )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swftextfield::setleftmargin() sets the left margin width of the text field to width. Default is 0.

返回值

没有返回值。

SWFTextField::setIndentation
SWFTextField::setLineSpacing
SWFTextField


Sets the line spacing of the text field

SWFTextField::setLeftMargin
SWFTextField::setMargins
SWFTextField
PHP Manual

SWFTextField::setLineSpacing

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFTextField::setLineSpacing — Sets the line spacing of the text field

说明

void SWFTextField::setLineSpacing ( float $height )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swftextfield::setlinespacing() sets the line spacing of the text field to the height of height. Default is 40.

返回值

没有返回值。

SWFTextField::setLeftMargin
SWFTextField::setMargins
SWFTextField


Sets the margins width of the text field

SWFTextField::setLineSpacing
SWFTextField::setName
SWFTextField
PHP Manual

SWFTextField::setMargins

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFTextField::setMargins — Sets the margins width of the text field

说明

void SWFTextField::setMargins ( float $left , float $right )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swftextfield::setmargins() set both margins at once, for the man on the go.

返回值

没有返回值。

SWFTextField::setLineSpacing
SWFTextField::setName
SWFTextField


Sets the variable name

SWFTextField::setMargins
SWFTextField::setPadding
SWFTextField
PHP Manual

SWFTextField::setName

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFTextField::setName — Sets the variable name

说明

void SWFTextField::setName ( string $name )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swftextfield::setname() sets the variable name of this text field to name, for form posting and action scripting purposes.

返回值

没有返回值。

SWFTextField::setMargins
SWFTextField::setPadding
SWFTextField


Sets the padding of this textfield

SWFTextField::setName
SWFTextField::setRightMargin
SWFTextField
PHP Manual

SWFTextField::setPadding

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFTextField::setPadding — Sets the padding of this textfield

说明

void SWFTextField::setPadding ( float $padding )
Warning

本函数还未编写文档，仅有参数列表。

返回值

没有返回值。

SWFTextField::setName
SWFTextField::setRightMargin
SWFTextField


Sets the right margin width of the text field

SWFTextField::setPadding
SWFVideoStream
SWFTextField
PHP Manual

SWFTextField::setRightMargin

(PHP 5 <= 5.3.0, PECL ming SVN)

SWFTextField::setRightMargin — Sets the right margin width of the text field

说明

void SWFTextField::setRightMargin ( float $width )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

swftextfield::setrightmargin() sets the right margin width of the text field to width. Default is 0.

返回值

没有返回值。

SWFTextField::setPadding
SWFVideoStream
SWFTextField


The SWFVideoStream class

(PHP 5.0.5-5.3.0, PHP 7, PECL ming SVN)

简介

SWFVideoStream.

类摘要

SWFVideoStream {
/* 方法 */
__construct ([ string $file ] )
int getNumFrames ( void )
void setDimension ( int $x , int $y )
}

Table of Contents

  • SWFVideoStream::__construct — Returns a SWFVideoStream object
  • SWFVideoStream::getNumFrames — Returns the number of frames in the video
  • SWFVideoStream::setDimension — Sets video dimension
SWFTextField::setRightMargin
SWFVideoStream::__construct
Ming


Returns a SWFVideoStream object

SWFVideoStream
SWFVideoStream::getNumFrames
SWFVideoStream
PHP Manual

SWFVideoStream::__construct

(PHP 5.0.5-5.3.0, PHP 7, PECL ming SVN)

SWFVideoStream::__construct — Returns a SWFVideoStream object

说明

SWFVideoStream::__construct ([ string $file ] )
Warning

本函数还未编写文档，仅有参数列表。

SWFVideoStream
SWFVideoStream::getNumFrames
SWFVideoStream


Returns the number of frames in the video

SWFVideoStream::__construct
SWFVideoStream::setDimension
SWFVideoStream
PHP Manual

SWFVideoStream::getNumFrames

(PHP 5.0.5-5.3.0, PHP 7, PECL ming SVN)

SWFVideoStream::getNumFrames — Returns the number of frames in the video

说明

int SWFVideoStream::getNumFrames ( void )

This function returns the number of video-frames of a SWFVideoStream.

返回值

Returns the number of frames, as an integer

SWFVideoStream::__construct
SWFVideoStream::setDimension
SWFVideoStream


Sets video dimension

SWFVideoStream::getNumFrames
PDF
SWFVideoStream
PHP Manual

SWFVideoStream::setDimension

(PHP 5.0.5-5.3.0, PHP 7, PECL ming SVN)

SWFVideoStream::setDimension — Sets video dimension

说明

void SWFVideoStream::setDimension ( int $x , int $y )

Sets the width and height for streamed videos.

参数

x

Width in pixels.

y

Height in pixels.

返回值

没有返回值。

SWFVideoStream::getNumFrames
PDF
SWFVideoStream


PDF

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Basic Usage Examples
  • PDF 函数
    • PDF_activate_item — Activate structure element or other content item
    • PDF_add_annotation — Add annotation [deprecated]
    • PDF_add_bookmark — Add bookmark for current page [deprecated]
    • PDF_add_launchlink — Add launch annotation for current page [deprecated]
    • PDF_add_locallink — Add link annotation for current page [deprecated]
    • PDF_add_nameddest — Create named destination
    • PDF_add_note — Set annotation for current page [deprecated]
    • PDF_add_outline — Add bookmark for current page [deprecated]
    • PDF_add_pdflink — Add file link annotation for current page [deprecated]
    • PDF_add_table_cell — Add a cell to a new or existing table
    • PDF_add_textflow — Create Textflow or add text to existing Textflow
    • PDF_add_thumbnail — Add thumbnail for current page
    • PDF_add_weblink — Add weblink for current page [deprecated]
    • PDF_arc — Draw a counterclockwise circular arc segment
    • PDF_arcn — Draw a clockwise circular arc segment
    • PDF_attach_file — Add file attachment for current page [deprecated]
    • PDF_begin_document — Create new PDF file
    • PDF_begin_font — Start a Type 3 font definition
    • PDF_begin_glyph — Start glyph definition for Type 3 font
    • PDF_begin_item — Open structure element or other content item
    • PDF_begin_layer — Start layer
    • PDF_begin_page_ext — Start new page
    • PDF_begin_page — Start new page [deprecated]
    • PDF_begin_pattern — Start pattern definition
    • PDF_begin_template_ext — Start template definition
    • PDF_begin_template — Start template definition [deprecated]
    • PDF_circle — Draw a circle
    • PDF_clip — Clip to current path
    • PDF_close_image — Close image
    • PDF_close_pdi_page — Close the page handle
    • PDF_close_pdi — Close the input PDF document [deprecated]
    • PDF_close — Close pdf resource [deprecated]
    • PDF_closepath_fill_stroke — Close, fill and stroke current path
    • PDF_closepath_stroke — Close and stroke path
    • PDF_closepath — Close current path
    • PDF_concat — Concatenate a matrix to the CTM
    • PDF_continue_text — Output text in next line
    • PDF_create_3dview — Create 3D view
    • PDF_create_action — Create action for objects or events
    • PDF_create_annotation — Create rectangular annotation
    • PDF_create_bookmark — Create bookmark
    • PDF_create_field — Create form field
    • PDF_create_fieldgroup — Create form field group
    • PDF_create_gstate — Create graphics state object
    • PDF_create_pvf — Create PDFlib virtual file
    • PDF_create_textflow — Create textflow object
    • PDF_curveto — Draw Bezier curve
    • PDF_define_layer — Create layer definition
    • PDF_delete_pvf — Delete PDFlib virtual file
    • PDF_delete_table — Delete table object
    • PDF_delete_textflow — Delete textflow object
    • PDF_delete — Delete PDFlib object
    • PDF_encoding_set_char — Add glyph name and/or Unicode value
    • PDF_end_document — 关闭 PDF 文件
    • PDF_end_font — Terminate Type 3 font definition
    • PDF_end_glyph — Terminate glyph definition for Type 3 font
    • PDF_end_item — Close structure element or other content item
    • PDF_end_layer — Deactivate all active layers
    • PDF_end_page_ext — Finish page
    • PDF_end_page — Finish page
    • PDF_end_pattern — Finish pattern
    • PDF_end_template — Finish template
    • PDF_endpath — End current path
    • PDF_fill_imageblock — Fill image block with variable data
    • PDF_fill_pdfblock — Fill PDF block with variable data
    • PDF_fill_stroke — Fill and stroke path
    • PDF_fill_textblock — Fill text block with variable data
    • PDF_fill — Fill current path
    • PDF_findfont — Prepare font for later use [deprecated]
    • PDF_fit_image — Place image or template
    • PDF_fit_pdi_page — Place imported PDF page
    • PDF_fit_table — Place table on page
    • PDF_fit_textflow — Format textflow in rectangular area
    • PDF_fit_textline — Place single line of text
    • PDF_get_apiname — Get name of unsuccessfull API function
    • PDF_get_buffer — Get PDF output buffer
    • PDF_get_errmsg — Get error text
    • PDF_get_errnum — Get error number
    • PDF_get_font — Get font [deprecated]
    • PDF_get_fontname — Get font name [deprecated]
    • PDF_get_fontsize — Font handling [deprecated]
    • PDF_get_image_height — Get image height [deprecated]
    • PDF_get_image_width — Get image width [deprecated]
    • PDF_get_majorversion — Get major version number [deprecated]
    • PDF_get_minorversion — Get minor version number [deprecated]
    • PDF_get_parameter — Get string parameter
    • PDF_get_pdi_parameter — Get PDI string parameter [deprecated]
    • PDF_get_pdi_value — Get PDI numerical parameter [deprecated]
    • PDF_get_value — Get numerical parameter
    • PDF_info_font — Query detailed information about a loaded font
    • PDF_info_matchbox — Query matchbox information
    • PDF_info_table — Retrieve table information
    • PDF_info_textflow — Query textflow state
    • PDF_info_textline — Perform textline formatting and query metrics
    • PDF_initgraphics — Reset graphic state
    • PDF_lineto — Draw a line
    • PDF_load_3ddata — Load 3D model
    • PDF_load_font — Search and prepare font
    • PDF_load_iccprofile — Search and prepare ICC profile
    • PDF_load_image — 打开一个图像文件
    • PDF_makespotcolor — Make spot color
    • PDF_moveto — Set current point
    • PDF_new — Create PDFlib object
    • PDF_open_ccitt — Open raw CCITT image [deprecated]
    • PDF_open_file — Create PDF file [deprecated]
    • PDF_open_gif — Open GIF image [deprecated]
    • PDF_open_image_file — Read image from file [deprecated]
    • PDF_open_image — Use image data [deprecated]
    • PDF_open_jpeg — Open JPEG image [deprecated]
    • PDF_open_memory_image — Open image created with PHP's image functions [not supported]
    • PDF_open_pdi_document — Prepare a pdi document
    • PDF_open_pdi_page — Prepare a page
    • PDF_open_pdi — Open PDF file [deprecated]
    • PDF_open_tiff — Open TIFF image [deprecated]
    • PDF_pcos_get_number — Get value of pCOS path with type number or boolean
    • PDF_pcos_get_stream — Get contents of pCOS path with type stream, fstream, or string
    • PDF_pcos_get_string — Get value of pCOS path with type name, string, or boolean
    • PDF_place_image — Place image on the page [deprecated]
    • PDF_place_pdi_page — Place PDF page [deprecated]
    • PDF_process_pdi — Process imported PDF document
    • PDF_rect — Draw rectangle
    • PDF_restore — Restore graphics state
    • PDF_resume_page — Resume page
    • PDF_rotate — Rotate coordinate system
    • PDF_save — Save graphics state
    • PDF_scale — Scale coordinate system
    • PDF_set_border_color — Set border color of annotations [deprecated]
    • PDF_set_border_dash — Set border dash style of annotations [deprecated]
    • PDF_set_border_style — Set border style of annotations [deprecated]
    • PDF_set_char_spacing — Set character spacing [deprecated]
    • PDF_set_duration — Set duration between pages [deprecated]
    • PDF_set_gstate — Activate graphics state object
    • PDF_set_horiz_scaling — Set horizontal text scaling [deprecated]
    • PDF_set_info_author — Fill the author document info field [deprecated]
    • PDF_set_info_creator — Fill the creator document info field [deprecated]
    • PDF_set_info_keywords — Fill the keywords document info field [deprecated]
    • PDF_set_info_subject — Fill the subject document info field [deprecated]
    • PDF_set_info_title — Fill the title document info field [deprecated]
    • PDF_set_info — Fill document info field
    • PDF_set_layer_dependency — Define relationships among layers
    • PDF_set_leading — Set distance between text lines [deprecated]
    • PDF_set_parameter — Set string parameter
    • PDF_set_text_matrix — Set text matrix [deprecated]
    • PDF_set_text_pos — Set text position
    • PDF_set_text_rendering — Determine text rendering [deprecated]
    • PDF_set_text_rise — Set text rise [deprecated]
    • PDF_set_value — Set numerical parameter
    • PDF_set_word_spacing — Set spacing between words [deprecated]
    • PDF_setcolor — Set fill and stroke color
    • PDF_setdash — Set simple dash pattern
    • PDF_setdashpattern — Set dash pattern
    • PDF_setflat — Set flatness
    • PDF_setfont — Set font
    • PDF_setgray_fill — Set fill color to gray [deprecated]
    • PDF_setgray_stroke — Set stroke color to gray [deprecated]
    • PDF_setgray — Set color to gray [deprecated]
    • PDF_setlinecap — Set linecap parameter
    • PDF_setlinejoin — Set linejoin parameter
    • PDF_setlinewidth — Set line width
    • PDF_setmatrix — Set current transformation matrix
    • PDF_setmiterlimit — Set miter limit
    • PDF_setpolydash — Set complicated dash pattern [deprecated]
    • PDF_setrgbcolor_fill — Set fill rgb color values [deprecated]
    • PDF_setrgbcolor_stroke — Set stroke rgb color values [deprecated]
    • PDF_setrgbcolor — Set fill and stroke rgb color values [deprecated]
    • PDF_shading_pattern — Define shading pattern
    • PDF_shading — Define blend
    • PDF_shfill — Fill area with shading
    • PDF_show_boxed — Output text in a box [deprecated]
    • PDF_show_xy — Output text at given position
    • PDF_show — Output text at current position
    • PDF_skew — Skew the coordinate system
    • PDF_stringwidth — Return width of text
    • PDF_stroke — Stroke path
    • PDF_suspend_page — Suspend page
    • PDF_translate — Set origin of coordinate system
    • PDF_utf16_to_utf8 — Convert string from UTF-16 to UTF-8
    • PDF_utf32_to_utf16 — Convert string from UTF-32 to UTF-16
    • PDF_utf8_to_utf16 — Convert string from UTF-8 to UTF-16
SWFVideoStream::setDimension
简介
非文本内容的 MIME 输出


简介

The PDF functions in PHP can create PDF files using the PDFlib library from PDFlib GmbH (» www.pdflib.com). A restricted version called PDFlib Lite 7 is available for free, but it is no longer maintained since 2010. PDFlib integration for PHP is still actively maintained by PDFlib GmbH. It is mainly targeted at the commercial PDFlib versions, but can also be used for the old PDFlib Lite.

If you want to use PDFlib we urge you start with the examples which are included in all PDFlib packages, and refer to the extensive manuals in PDF format which are also included. At a minimum you should take a look at the hello.php sample to learn basic setup for PDFlib usage.

Note:

If you're interested in alternative free PDF generators that do not utilize external PDF libraries, see this related FAQ.

PDF
安装／配置
PDF


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
PDF


需求

PDFlib Lite is available as open source. However, the PDFlib Lite license allows free use only under certain conditions. PDFlib Lite supports a subset of PDFlib's functionality; please see the PDFlib web site for details. The full version of PDFlib is available for download at » http://www.pdflib.com/products/pdflib-family/, but requires that you purchase a license for commercial use.

Issues with older versions of PDFlib

Any version of PHP 4 after March 9, 2000 does not support versions of PDFlib older than 3.0.

PDFlib 4.0 or greater is supported by PHP 4.3.0 and later.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。 安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/pdflib.

To get these functions to work in PHP < 4.3.9, you have to compile PHP with --with-pdflib[=DIR] . DIR is the PDFlib base install directory, defaults to /usr/local.

需求
运行时配置
安装／配置


资源类型

PDF_new() creates a new PDFlib object required by most PDF functions.

运行时配置
预定义常量
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
范例
PDF


范例

Table of Contents

  • Basic Usage Examples
预定义常量
Basic Usage Examples
PDF


Basic Usage Examples

Most of the functions are fairly easy to use. The most difficult part is probably creating your first PDF document. The following example should help to get you started. It is developed for PHP 4 and creates the file hello.pdf with one page. It defines some document info field contents, loads the Helvetica-Bold font and outputs the text "Hello world! (says PHP)".

Example #1 Hello World example from PDFlib distribution for PHP 4

<?php
$p = PDF_new();

/*  open new PDF file; insert a file name to create the PDF on disk */
if (PDF_begin_document($p, "", "") == 0) {
    die("Error: " . PDF_get_errmsg($p));
}

PDF_set_info($p, "Creator", "hello.php");
PDF_set_info($p, "Author", "Rainer Schaaf");
PDF_set_info($p, "Title", "Hello world (PHP)!");

PDF_begin_page_ext($p, 595, 842, "");

$font = PDF_load_font($p, "Helvetica-Bold", "winansi", "");

PDF_setfont($p, $font, 24.0);
PDF_set_text_pos($p, 50, 700);
PDF_show($p, "Hello world!");
PDF_continue_text($p, "(says PHP)");
PDF_end_page_ext($p, "");

PDF_end_document($p, "");

$buf = PDF_get_buffer($p);
$len = strlen($buf);

header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=hello.pdf");
print $buf;

PDF_delete($p);
?>

The following example comes with the PDFlib distribution for PHP 5. It uses the new exception handling and object encapsulation features available in PHP 5. It creates the file hello.pdf with one page. It defines some document info field contents, loads the Helvetica-Bold font and outputs the text "Hello world! (says PHP)".

Example #2 Hello World example from PDFlib distribution for PHP 5

<?php

try {
    $p = new PDFlib();

    /*  open new PDF file; insert a file name to create the PDF on disk */
    if ($p->begin_document("", "") == 0) {
        die("Error: " . $p->get_errmsg());
    }

    $p->set_info("Creator", "hello.php");
    $p->set_info("Author", "Rainer Schaaf");
    $p->set_info("Title", "Hello world (PHP)!");

    $p->begin_page_ext(595, 842, "");

    $font = $p->load_font("Helvetica-Bold", "winansi", "");

    $p->setfont($font, 24.0);
    $p->set_text_pos(50, 700);
    $p->show("Hello world!");
    $p->continue_text("(says PHP)");
    $p->end_page_ext("");

    $p->end_document("");

    $buf = $p->get_buffer();
    $len = strlen($buf);

    header("Content-type: application/pdf");
    header("Content-Length: $len");
    header("Content-Disposition: inline; filename=hello.pdf");
    print $buf;
}
catch (PDFlibException $e) {
    die("PDFlib exception occurred in hello sample:\n" .
    "[" . $e->get_errnum() . "] " . $e->get_apiname() . ": " .
    $e->get_errmsg() . "\n");
}
catch (Exception $e) {
    die($e);
}
$p = 0;
?>

范例
PDF 函数
范例


PDF 函数

Remarks about Deprecated PDFlib Functions

Starting with PHP 4.0.5, the PHP extension for PDFlib is officially supported by PDFlib GmbH. This means that all the functions described in the PDFlib Reference Manual are supported by PHP 4 with exactly the same meaning and the same parameters. However, with PDFlib Version 5.0.4 or higher all parameters have to be specified. For compatibility reasons, this binding for PDFlib still supports most of the deprecated functions, but they should be replaced by their new versions. PDFlib GmbH will not support any problems arising from the use of these deprecated functions. The documentation in this section indicates old functions as "Deprecated" and gives the replacement function to be used instead.

Table of Contents

  • PDF_activate_item — Activate structure element or other content item
  • PDF_add_annotation — Add annotation [deprecated]
  • PDF_add_bookmark — Add bookmark for current page [deprecated]
  • PDF_add_launchlink — Add launch annotation for current page [deprecated]
  • PDF_add_locallink — Add link annotation for current page [deprecated]
  • PDF_add_nameddest — Create named destination
  • PDF_add_note — Set annotation for current page [deprecated]
  • PDF_add_outline — Add bookmark for current page [deprecated]
  • PDF_add_pdflink — Add file link annotation for current page [deprecated]
  • PDF_add_table_cell — Add a cell to a new or existing table
  • PDF_add_textflow — Create Textflow or add text to existing Textflow
  • PDF_add_thumbnail — Add thumbnail for current page
  • PDF_add_weblink — Add weblink for current page [deprecated]
  • PDF_arc — Draw a counterclockwise circular arc segment
  • PDF_arcn — Draw a clockwise circular arc segment
  • PDF_attach_file — Add file attachment for current page [deprecated]
  • PDF_begin_document — Create new PDF file
  • PDF_begin_font — Start a Type 3 font definition
  • PDF_begin_glyph — Start glyph definition for Type 3 font
  • PDF_begin_item — Open structure element or other content item
  • PDF_begin_layer — Start layer
  • PDF_begin_page_ext — Start new page
  • PDF_begin_page — Start new page [deprecated]
  • PDF_begin_pattern — Start pattern definition
  • PDF_begin_template_ext — Start template definition
  • PDF_begin_template — Start template definition [deprecated]
  • PDF_circle — Draw a circle
  • PDF_clip — Clip to current path
  • PDF_close_image — Close image
  • PDF_close_pdi_page — Close the page handle
  • PDF_close_pdi — Close the input PDF document [deprecated]
  • PDF_close — Close pdf resource [deprecated]
  • PDF_closepath_fill_stroke — Close, fill and stroke current path
  • PDF_closepath_stroke — Close and stroke path
  • PDF_closepath — Close current path
  • PDF_concat — Concatenate a matrix to the CTM
  • PDF_continue_text — Output text in next line
  • PDF_create_3dview — Create 3D view
  • PDF_create_action — Create action for objects or events
  • PDF_create_annotation — Create rectangular annotation
  • PDF_create_bookmark — Create bookmark
  • PDF_create_field — Create form field
  • PDF_create_fieldgroup — Create form field group
  • PDF_create_gstate — Create graphics state object
  • PDF_create_pvf — Create PDFlib virtual file
  • PDF_create_textflow — Create textflow object
  • PDF_curveto — Draw Bezier curve
  • PDF_define_layer — Create layer definition
  • PDF_delete_pvf — Delete PDFlib virtual file
  • PDF_delete_table — Delete table object
  • PDF_delete_textflow — Delete textflow object
  • PDF_delete — Delete PDFlib object
  • PDF_encoding_set_char — Add glyph name and/or Unicode value
  • PDF_end_document — 关闭 PDF 文件
  • PDF_end_font — Terminate Type 3 font definition
  • PDF_end_glyph — Terminate glyph definition for Type 3 font
  • PDF_end_item — Close structure element or other content item
  • PDF_end_layer — Deactivate all active layers
  • PDF_end_page_ext — Finish page
  • PDF_end_page — Finish page
  • PDF_end_pattern — Finish pattern
  • PDF_end_template — Finish template
  • PDF_endpath — End current path
  • PDF_fill_imageblock — Fill image block with variable data
  • PDF_fill_pdfblock — Fill PDF block with variable data
  • PDF_fill_stroke — Fill and stroke path
  • PDF_fill_textblock — Fill text block with variable data
  • PDF_fill — Fill current path
  • PDF_findfont — Prepare font for later use [deprecated]
  • PDF_fit_image — Place image or template
  • PDF_fit_pdi_page — Place imported PDF page
  • PDF_fit_table — Place table on page
  • PDF_fit_textflow — Format textflow in rectangular area
  • PDF_fit_textline — Place single line of text
  • PDF_get_apiname — Get name of unsuccessfull API function
  • PDF_get_buffer — Get PDF output buffer
  • PDF_get_errmsg — Get error text
  • PDF_get_errnum — Get error number
  • PDF_get_font — Get font [deprecated]
  • PDF_get_fontname — Get font name [deprecated]
  • PDF_get_fontsize — Font handling [deprecated]
  • PDF_get_image_height — Get image height [deprecated]
  • PDF_get_image_width — Get image width [deprecated]
  • PDF_get_majorversion — Get major version number [deprecated]
  • PDF_get_minorversion — Get minor version number [deprecated]
  • PDF_get_parameter — Get string parameter
  • PDF_get_pdi_parameter — Get PDI string parameter [deprecated]
  • PDF_get_pdi_value — Get PDI numerical parameter [deprecated]
  • PDF_get_value — Get numerical parameter
  • PDF_info_font — Query detailed information about a loaded font
  • PDF_info_matchbox — Query matchbox information
  • PDF_info_table — Retrieve table information
  • PDF_info_textflow — Query textflow state
  • PDF_info_textline — Perform textline formatting and query metrics
  • PDF_initgraphics — Reset graphic state
  • PDF_lineto — Draw a line
  • PDF_load_3ddata — Load 3D model
  • PDF_load_font — Search and prepare font
  • PDF_load_iccprofile — Search and prepare ICC profile
  • PDF_load_image — 打开一个图像文件
  • PDF_makespotcolor — Make spot color
  • PDF_moveto — Set current point
  • PDF_new — Create PDFlib object
  • PDF_open_ccitt — Open raw CCITT image [deprecated]
  • PDF_open_file — Create PDF file [deprecated]
  • PDF_open_gif — Open GIF image [deprecated]
  • PDF_open_image_file — Read image from file [deprecated]
  • PDF_open_image — Use image data [deprecated]
  • PDF_open_jpeg — Open JPEG image [deprecated]
  • PDF_open_memory_image — Open image created with PHP's image functions [not supported]
  • PDF_open_pdi_document — Prepare a pdi document
  • PDF_open_pdi_page — Prepare a page
  • PDF_open_pdi — Open PDF file [deprecated]
  • PDF_open_tiff — Open TIFF image [deprecated]
  • PDF_pcos_get_number — Get value of pCOS path with type number or boolean
  • PDF_pcos_get_stream — Get contents of pCOS path with type stream, fstream, or string
  • PDF_pcos_get_string — Get value of pCOS path with type name, string, or boolean
  • PDF_place_image — Place image on the page [deprecated]
  • PDF_place_pdi_page — Place PDF page [deprecated]
  • PDF_process_pdi — Process imported PDF document
  • PDF_rect — Draw rectangle
  • PDF_restore — Restore graphics state
  • PDF_resume_page — Resume page
  • PDF_rotate — Rotate coordinate system
  • PDF_save — Save graphics state
  • PDF_scale — Scale coordinate system
  • PDF_set_border_color — Set border color of annotations [deprecated]
  • PDF_set_border_dash — Set border dash style of annotations [deprecated]
  • PDF_set_border_style — Set border style of annotations [deprecated]
  • PDF_set_char_spacing — Set character spacing [deprecated]
  • PDF_set_duration — Set duration between pages [deprecated]
  • PDF_set_gstate — Activate graphics state object
  • PDF_set_horiz_scaling — Set horizontal text scaling [deprecated]
  • PDF_set_info_author — Fill the author document info field [deprecated]
  • PDF_set_info_creator — Fill the creator document info field [deprecated]
  • PDF_set_info_keywords — Fill the keywords document info field [deprecated]
  • PDF_set_info_subject — Fill the subject document info field [deprecated]
  • PDF_set_info_title — Fill the title document info field [deprecated]
  • PDF_set_info — Fill document info field
  • PDF_set_layer_dependency — Define relationships among layers
  • PDF_set_leading — Set distance between text lines [deprecated]
  • PDF_set_parameter — Set string parameter
  • PDF_set_text_matrix — Set text matrix [deprecated]
  • PDF_set_text_pos — Set text position
  • PDF_set_text_rendering — Determine text rendering [deprecated]
  • PDF_set_text_rise — Set text rise [deprecated]
  • PDF_set_value — Set numerical parameter
  • PDF_set_word_spacing — Set spacing between words [deprecated]
  • PDF_setcolor — Set fill and stroke color
  • PDF_setdash — Set simple dash pattern
  • PDF_setdashpattern — Set dash pattern
  • PDF_setflat — Set flatness
  • PDF_setfont — Set font
  • PDF_setgray_fill — Set fill color to gray [deprecated]
  • PDF_setgray_stroke — Set stroke color to gray [deprecated]
  • PDF_setgray — Set color to gray [deprecated]
  • PDF_setlinecap — Set linecap parameter
  • PDF_setlinejoin — Set linejoin parameter
  • PDF_setlinewidth — Set line width
  • PDF_setmatrix — Set current transformation matrix
  • PDF_setmiterlimit — Set miter limit
  • PDF_setpolydash — Set complicated dash pattern [deprecated]
  • PDF_setrgbcolor_fill — Set fill rgb color values [deprecated]
  • PDF_setrgbcolor_stroke — Set stroke rgb color values [deprecated]
  • PDF_setrgbcolor — Set fill and stroke rgb color values [deprecated]
  • PDF_shading_pattern — Define shading pattern
  • PDF_shading — Define blend
  • PDF_shfill — Fill area with shading
  • PDF_show_boxed — Output text in a box [deprecated]
  • PDF_show_xy — Output text at given position
  • PDF_show — Output text at current position
  • PDF_skew — Skew the coordinate system
  • PDF_stringwidth — Return width of text
  • PDF_stroke — Stroke path
  • PDF_suspend_page — Suspend page
  • PDF_translate — Set origin of coordinate system
  • PDF_utf16_to_utf8 — Convert string from UTF-16 to UTF-8
  • PDF_utf32_to_utf16 — Convert string from UTF-32 to UTF-16
  • PDF_utf8_to_utf16 — Convert string from UTF-8 to UTF-16
Basic Usage Examples
PDF_activate_item
PDF


Activate structure element or other content item

PDF 函数
PDF_add_annotation
PDF 函数
PHP Manual

PDF_activate_item

(PECL pdflib >= 2.0.0)

PDF_activate_item — Activate structure element or other content item

说明

bool PDF_activate_item ( resource $pdfdoc , int $id )

Activates a previously created structure element or other content item. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF 函数
PDF_add_annotation
PDF 函数


Add annotation [deprecated]

PDF_activate_item
PDF_add_bookmark
PDF 函数
PHP Manual

PDF_add_annotation

(PHP 4, PECL pdflib >= 1.0.0)

PDF_add_annotation — Add annotation [deprecated]

说明

This function is deprecated, use PDF_create_annotation() with type=Text instead.

PDF_activate_item
PDF_add_bookmark
PDF 函数


Add bookmark for current page [deprecated]

PDF_add_annotation
PDF_add_launchlink
PDF 函数
PHP Manual

PDF_add_bookmark

(PHP 4 >= 4.0.1, PECL pdflib >= 1.0.0)

PDF_add_bookmark — Add bookmark for current page [deprecated]

说明

This function is deprecated since PDFlib version 6, use PDF_create_bookmark() instead.

PDF_add_annotation
PDF_add_launchlink
PDF 函数


Add launch annotation for current page [deprecated]

PDF_add_bookmark
PDF_add_locallink
PDF 函数
PHP Manual

PDF_add_launchlink

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_add_launchlink — Add launch annotation for current page [deprecated]

说明

bool PDF_add_launchlink ( resource $pdfdoc , float $llx , float $lly , float $urx , float $ury , string $filename )

Adds a link to a web resource.

This function is deprecated since PDFlib version 6,
use PDF_create_action() with
type=Launch and
PDF_create_annotation() with
type=Link instead.

PDF_add_bookmark
PDF_add_locallink
PDF 函数


Add link annotation for current page [deprecated]

PDF_add_launchlink
PDF_add_nameddest
PDF 函数
PHP Manual

PDF_add_locallink

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_add_locallink — Add link annotation for current page [deprecated]

说明

bool PDF_add_locallink ( resource $pdfdoc , float $lowerleftx , float $lowerlefty , float $upperrightx , float $upperrighty , int $page , string $dest )

Add a link annotation to a target within the current PDF file. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function is deprecated since PDFlib version 6, use
PDF_create_action() with type=GoTo
and PDF_create_annotation() with
type=Link instead.

PDF_add_launchlink
PDF_add_nameddest
PDF 函数


Create named destination

PDF_add_locallink
PDF_add_note
PDF 函数
PHP Manual

PDF_add_nameddest

(PECL pdflib >= 2.0.0)

PDF_add_nameddest — Create named destination

说明

bool PDF_add_nameddest ( resource $pdfdoc , string $name , string $optlist )

Creates a named destination on an arbitrary page in the current document. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_add_locallink
PDF_add_note
PDF 函数


Set annotation for current page [deprecated]

PDF_add_nameddest
PDF_add_outline
PDF 函数
PHP Manual

PDF_add_note

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_add_note — Set annotation for current page [deprecated]

说明

bool PDF_add_note ( resource $pdfdoc , float $llx , float $lly , float $urx , float $ury , string $contents , string $title , string $icon , int $open )

Sets an annotation for the current page. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function is deprecated since PDFlib version 6, use PDF_create_annotation() with type=Text instead.

PDF_add_nameddest
PDF_add_outline
PDF 函数


Add bookmark for current page [deprecated]

PDF_add_note
PDF_add_pdflink
PDF 函数
PHP Manual

PDF_add_outline

(PHP 4, PECL pdflib >= 1.0.0)

PDF_add_outline — Add bookmark for current page [deprecated]

说明

This function is deprecated, use PDF_create_bookmark() instead.

PDF_add_note
PDF_add_pdflink
PDF 函数


Add file link annotation for current page [deprecated]

PDF_add_outline
PDF_add_table_cell
PDF 函数
PHP Manual

PDF_add_pdflink

(PHP 4, PECL pdflib >= 1.0.0)

PDF_add_pdflink — Add file link annotation for current page [deprecated]

说明

bool PDF_add_pdflink ( resource $pdfdoc , float $bottom_left_x , float $bottom_left_y , float $up_right_x , float $up_right_y , string $filename , int $page , string $dest )

Add a file link annotation to a PDF target. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function is deprecated since PDFlib version 6, use
PDF_create_action() with
type=GoToR and
PDF_create_annotation() with
type=Link instead.

PDF_add_outline
PDF_add_table_cell
PDF 函数


Add a cell to a new or existing table

PDF_add_pdflink
PDF_add_textflow
PDF 函数
PHP Manual

PDF_add_table_cell

(PECL pdflib >= 2.1.0)

PDF_add_table_cell — Add a cell to a new or existing table

说明

int PDF_add_table_cell ( resource $pdfdoc , int $table , int $column , int $row , string $text , string $optlist )

Adds a cell to a new or existing table.

PDF_add_pdflink
PDF_add_textflow
PDF 函数


Create Textflow or add text to existing Textflow

PDF_add_table_cell
PDF_add_thumbnail
PDF 函数
PHP Manual

PDF_add_textflow

(PECL pdflib >= 2.1.0)

PDF_add_textflow — Create Textflow or add text to existing Textflow

说明

int PDF_add_textflow ( resource $pdfdoc , int $textflow , string $text , string $optlist )

Creates a Textflow object, or adds text and explicit options to an existing Textflow.

PDF_add_table_cell
PDF_add_thumbnail
PDF 函数


Add thumbnail for current page

PDF_add_textflow
PDF_add_weblink
PDF 函数
PHP Manual

PDF_add_thumbnail

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_add_thumbnail — Add thumbnail for current page

说明

bool PDF_add_thumbnail ( resource $pdfdoc , int $image )

Adds an existing image as thumbnail for the current page. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_add_textflow
PDF_add_weblink
PDF 函数


Add weblink for current page [deprecated]

PDF_add_thumbnail
PDF_arc
PDF 函数
PHP Manual

PDF_add_weblink

(PHP 4, PECL pdflib >= 1.0.0)

PDF_add_weblink — Add weblink for current page [deprecated]

说明

bool PDF_add_weblink ( resource $pdfdoc , float $lowerleftx , float $lowerlefty , float $upperrightx , float $upperrighty , string $url )

Adds a weblink annotation to a target url on the Web. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function is deprecated since PDFlib version 6, use
PDF_create_action() with type=URI
and PDF_create_annotation() with
type=Link instead.

PDF_add_thumbnail
PDF_arc
PDF 函数


Draw a counterclockwise circular arc segment

PDF_add_weblink
PDF_arcn
PDF 函数
PHP Manual

PDF_arc

(PHP 4, PECL pdflib >= 1.0.0)

PDF_arc — Draw a counterclockwise circular arc segment

说明

bool PDF_arc ( resource $p , float $x , float $y , float $r , float $alpha , float $beta )

Adds a counterclockwise circular arc.

PDF_add_weblink
PDF_arcn
PDF 函数


Draw a clockwise circular arc segment

PDF_arc
PDF_attach_file
PDF 函数
PHP Manual

PDF_arcn

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_arcn — Draw a clockwise circular arc segment

说明

bool PDF_arcn ( resource $p , float $x , float $y , float $r , float $alpha , float $beta )

Except for the drawing direction, this function behaves exactly like PDF_arc().

PDF_arc
PDF_attach_file
PDF 函数


Add file attachment for current page [deprecated]

PDF_arcn
PDF_begin_document
PDF 函数
PHP Manual

PDF_attach_file

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_attach_file — Add file attachment for current page [deprecated]

说明

bool PDF_attach_file ( resource $pdfdoc , float $llx , float $lly , float $urx , float $ury , string $filename , string $description , string $author , string $mimetype , string $icon )

Adds a file attachment annotation. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function is deprecated since PDFlib version 6, use PDF_create_annotation() with type=FileAttachment instead.

PDF_arcn
PDF_begin_document
PDF 函数


Create new PDF file

PDF_attach_file
PDF_begin_font
PDF 函数
PHP Manual

PDF_begin_document

(PECL pdflib >= 2.0.0)

PDF_begin_document — Create new PDF file

说明

int PDF_begin_document ( resource $pdfdoc , string $filename , string $optlist )

Creates a new PDF file subject to various options.

PDF_attach_file
PDF_begin_font
PDF 函数


Start a Type 3 font definition

PDF_begin_document
PDF_begin_glyph
PDF 函数
PHP Manual

PDF_begin_font

(PECL pdflib >= 2.0.0)

PDF_begin_font — Start a Type 3 font definition

说明

bool PDF_begin_font ( resource $pdfdoc , string $filename , float $a , float $b , float $c , float $d , float $e , float $f , string $optlist )

Starts a Type 3 font definition.

PDF_begin_document
PDF_begin_glyph
PDF 函数


Start glyph definition for Type 3 font

PDF_begin_font
PDF_begin_item
PDF 函数
PHP Manual

PDF_begin_glyph

(PECL pdflib >= 2.0.0)

PDF_begin_glyph — Start glyph definition for Type 3 font

说明

bool PDF_begin_glyph ( resource $pdfdoc , string $glyphname , float $wx , float $llx , float $lly , float $urx , float $ury )

Starts a glyph definition for a Type 3 font.

PDF_begin_font
PDF_begin_item
PDF 函数


Open structure element or other content item

PDF_begin_glyph
PDF_begin_layer
PDF 函数
PHP Manual

PDF_begin_item

(PECL pdflib >= 2.0.0)

PDF_begin_item — Open structure element or other content item

说明

int PDF_begin_item ( resource $pdfdoc , string $tag , string $optlist )

Opens a structure element or other content item with attributes supplied as options.

PDF_begin_glyph
PDF_begin_layer
PDF 函数


Start layer

PDF_begin_item
PDF_begin_page_ext
PDF 函数
PHP Manual

PDF_begin_layer

(PECL pdflib >= 2.0.0)

PDF_begin_layer — Start layer

说明

bool PDF_begin_layer ( resource $pdfdoc , int $layer )

Starts a layer for subsequent output on the page. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function requires PDF 1.5.

PDF_begin_item
PDF_begin_page_ext
PDF 函数


Start new page

PDF_begin_layer
PDF_begin_page
PDF 函数
PHP Manual

PDF_begin_page_ext

(PECL pdflib >= 2.0.0)

PDF_begin_page_ext — Start new page

说明

bool PDF_begin_page_ext ( resource $pdfdoc , float $width , float $height , string $optlist )

Adds a new page to the document, and specifies various options. The parameters width and height are the dimensions of the new page in points. 成功时返回 TRUE， 或者在失败时返回 FALSE。

Common Page Sizes in Points
name | size
A0 | 2380 x 3368
A1 | 1684 x 2380
A2 | 1190 x 1684
A3 | 842 x 1190
A4 | 595 x 842
A5 | 421 x 595
A6 | 297 x 421
B5 | 501 x 709
letter (8.5" x 11") | 612 x 792
legal (8.5" x 14") | 612 x 1008
ledger (17" x 11") | 1224 x 792
11" x 17" | 792 x 1224

PDF_begin_layer
PDF_begin_page
PDF 函数


Start new page [deprecated]

PDF_begin_page_ext
PDF_begin_pattern
PDF 函数
PHP Manual

PDF_begin_page

(PHP 4, PECL pdflib >= 1.0.0)

PDF_begin_page — Start new page [deprecated]

说明

bool PDF_begin_page ( resource $pdfdoc , float $width , float $height )

Adds a new page to the document. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function is deprecated since PDFlib version 6, use PDF_begin_page_ext() instead.

PDF_begin_page_ext
PDF_begin_pattern
PDF 函数


Start pattern definition

PDF_begin_page
PDF_begin_template_ext
PDF 函数
PHP Manual

PDF_begin_pattern

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_begin_pattern — Start pattern definition

说明

int PDF_begin_pattern ( resource $pdfdoc , float $width , float $height , float $xstep , float $ystep , int $painttype )

Starts a new pattern definition.

PDF_begin_page
PDF_begin_template_ext
PDF 函数


Start template definition

PDF_begin_pattern
PDF_begin_template
PDF 函数
PHP Manual

PDF_begin_template_ext

(PECL pdflib >= 2.1.0)

PDF_begin_template_ext — Start template definition

说明

int PDF_begin_template_ext ( resource $pdfdoc , float $width , float $height , string $optlist )

Starts a new template definition.

PDF_begin_pattern
PDF_begin_template
PDF 函数


Start template definition [deprecated]

PDF_begin_template_ext
PDF_circle
PDF 函数
PHP Manual

PDF_begin_template

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_begin_template — Start template definition [deprecated]

说明

int PDF_begin_template ( resource $pdfdoc , float $width , float $height )

Starts a new template definition.

This function is deprecated since PDFlib version 7, use PDF_begin_template_ext() instead.

PDF_begin_template_ext
PDF_circle
PDF 函数


Draw a circle

PDF_begin_template
PDF_clip
PDF 函数
PHP Manual

PDF_circle

(PHP 4, PECL pdflib >= 1.0.0)

PDF_circle — Draw a circle

说明

bool PDF_circle ( resource $pdfdoc , float $x , float $y , float $r )

Adds a circle. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_begin_template
PDF_clip
PDF 函数


Clip to current path

PDF_circle
PDF_close_image
PDF 函数
PHP Manual

PDF_clip

(PHP 4, PECL pdflib >= 1.0.0)

PDF_clip — Clip to current path

说明

bool PDF_clip ( resource $p )

Uses the current path as clipping path, and terminate the path. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_circle
PDF_close_image
PDF 函数


Close image

PDF_clip
PDF_close_pdi_page
PDF 函数
PHP Manual

PDF_close_image

(PHP 4, PECL pdflib >= 1.0.0)

PDF_close_image — Close image

说明

bool PDF_close_image ( resource $p , int $image )

Closes an image retrieved with the PDF_open_image() function.

PDF_clip
PDF_close_pdi_page
PDF 函数


Close the page handle

PDF_close_image
PDF_close_pdi
PDF 函数
PHP Manual

PDF_close_pdi_page

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_close_pdi_page — Close the page handle

说明

bool PDF_close_pdi_page ( resource $p , int $page )

Closes the page handle, and frees all page-related resources. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_close_image
PDF_close_pdi
PDF 函数


Close the input PDF document [deprecated]

PDF_close_pdi_page
PDF_close
PDF 函数
PHP Manual

PDF_close_pdi

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_close_pdi — Close the input PDF document [deprecated]

说明

bool PDF_close_pdi ( resource $p , int $doc )

Closes all open page handles, and closes the input PDF document. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function is deprecated since PDFlib version 7, use PDF_close_pdi_document() instead.

PDF_close_pdi_page
PDF_close
PDF 函数


Close pdf resource [deprecated]

PDF_close_pdi
PDF_closepath_fill_stroke
PDF 函数
PHP Manual

PDF_close

(PHP 4, PECL pdflib >= 1.0.0)

PDF_close — Close pdf resource [deprecated]

说明

bool PDF_close ( resource $p )

Closes the generated PDF file, and frees all document-related resources. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function is deprecated since PDFlib version 6, use PDF_end_document() instead.

PDF_close_pdi
PDF_closepath_fill_stroke
PDF 函数


Close, fill and stroke current path

PDF_close
PDF_closepath_stroke
PDF 函数
PHP Manual

PDF_closepath_fill_stroke

(PHP 4, PECL pdflib >= 1.0.0)

PDF_closepath_fill_stroke — Close, fill and stroke current path

说明

bool PDF_closepath_fill_stroke ( resource $p )

Closes the path, fills, and strokes it. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_close
PDF_closepath_stroke
PDF 函数


Close and stroke path

PDF_closepath_fill_stroke
PDF_closepath
PDF 函数
PHP Manual

PDF_closepath_stroke

(PHP 4, PECL pdflib >= 1.0.0)

PDF_closepath_stroke — Close and stroke path

说明

bool PDF_closepath_stroke ( resource $p )

Closes the path, and strokes it. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_closepath_fill_stroke
PDF_closepath
PDF 函数


Close current path

PDF_closepath_stroke
PDF_concat
PDF 函数
PHP Manual

PDF_closepath

(PHP 4, PECL pdflib >= 1.0.0)

PDF_closepath — Close current path

说明

bool PDF_closepath ( resource $p )

Closes the current path. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_closepath_stroke
PDF_concat
PDF 函数


Concatenate a matrix to the CTM

PDF_closepath
PDF_continue_text
PDF 函数
PHP Manual

PDF_concat

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_concat — Concatenate a matrix to the CTM

说明

bool PDF_concat ( resource $p , float $a , float $b , float $c , float $d , float $e , float $f )

Concatenates a matrix to the current transformation matrix (CTM). 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_closepath
PDF_continue_text
PDF 函数


Output text in next line

PDF_concat
PDF_create_3dview
PDF 函数
PHP Manual

PDF_continue_text

(PHP 4, PECL pdflib >= 1.0.0)

PDF_continue_text — Output text in next line

说明

bool PDF_continue_text ( resource $p , string $text )

Prints text at the next line. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_concat
PDF_create_3dview
PDF 函数


Create 3D view

PDF_continue_text
PDF_create_action
PDF 函数
PHP Manual

PDF_create_3dview

(PECL pdflib >= 2.1.0)

PDF_create_3dview — Create 3D view

说明

int PDF_create_3dview ( resource $pdfdoc , string $username , string $optlist )

Creates a 3D view.

This function requires PDF 1.6.

PDF_continue_text
PDF_create_action
PDF 函数


Create action for objects or events

PDF_create_3dview
PDF_create_annotation
PDF 函数
PHP Manual

PDF_create_action

(PECL pdflib >= 2.0.0)

PDF_create_action — Create action for objects or events

说明

int PDF_create_action ( resource $pdfdoc , string $type , string $optlist )

Creates an action which can be applied to various objects and events.

PDF_create_3dview
PDF_create_annotation
PDF 函数


Create rectangular annotation

PDF_create_action
PDF_create_bookmark
PDF 函数
PHP Manual

PDF_create_annotation

(PECL pdflib >= 2.0.0)

PDF_create_annotation — Create rectangular annotation

说明

bool PDF_create_annotation ( resource $pdfdoc , float $llx , float $lly , float $urx , float $ury , string $type , string $optlist )

Creates a rectangular annotation on the current page.

PDF_create_action
PDF_create_bookmark
PDF 函数


Create bookmark

PDF_create_annotation
PDF_create_field
PDF 函数
PHP Manual

PDF_create_bookmark

(PECL pdflib >= 2.0.0)

PDF_create_bookmark — Create bookmark

说明

int PDF_create_bookmark ( resource $pdfdoc , string $text , string $optlist )

Creates a bookmark subject to various options.

PDF_create_annotation
PDF_create_field
PDF 函数


Create form field

PDF_create_bookmark
PDF_create_fieldgroup
PDF 函数
PHP Manual

PDF_create_field

(PECL pdflib >= 2.0.0)

PDF_create_field — Create form field

说明

bool PDF_create_field ( resource $pdfdoc , float $llx , float $lly , float $urx , float $ury , string $name , string $type , string $optlist )

Creates a form field on the current page subject to various options.

PDF_create_bookmark
PDF_create_fieldgroup
PDF 函数


Create form field group

PDF_create_field
PDF_create_gstate
PDF 函数
PHP Manual

PDF_create_fieldgroup

(PECL pdflib >= 2.0.0)

PDF_create_fieldgroup — Create form field group

说明

bool PDF_create_fieldgroup ( resource $pdfdoc , string $name , string $optlist )

Creates a form field group subject to various options.

PDF_create_field
PDF_create_gstate
PDF 函数


Create graphics state object

PDF_create_fieldgroup
PDF_create_pvf
PDF 函数
PHP Manual

PDF_create_gstate

(PECL pdflib >= 2.0.0)

PDF_create_gstate — Create graphics state object

说明

int PDF_create_gstate ( resource $pdfdoc , string $optlist )

Creates a graphics state object subject to various options.

PDF_create_fieldgroup
PDF_create_pvf
PDF 函数


Create PDFlib virtual file

PDF_create_gstate
PDF_create_textflow
PDF 函数
PHP Manual

PDF_create_pvf

(PECL pdflib >= 2.0.0)

PDF_create_pvf — Create PDFlib virtual file

说明

bool PDF_create_pvf ( resource $pdfdoc , string $filename , string $data , string $optlist )

Creates a named virtual read-only file from data provided in memory.

PDF_create_gstate
PDF_create_textflow
PDF 函数


Create textflow object

PDF_create_pvf
PDF_curveto
PDF 函数
PHP Manual

PDF_create_textflow

(PECL pdflib >= 2.0.0)

PDF_create_textflow — Create textflow object

说明

int PDF_create_textflow ( resource $pdfdoc , string $text , string $optlist )

Preprocesses text for later formatting and creates a textflow object.

PDF_create_pvf
PDF_curveto
PDF 函数


Draw Bezier curve

PDF_create_textflow
PDF_define_layer
PDF 函数
PHP Manual

PDF_curveto

(PHP 4, PECL pdflib >= 1.0.0)

PDF_curveto — Draw Bezier curve

说明

bool PDF_curveto ( resource $p , float $x1 , float $y1 , float $x2 , float $y2 , float $x3 , float $y3 )

Draws a Bezier curve from the current point, using 3 more control points. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_create_textflow
PDF_define_layer
PDF 函数


Create layer definition

PDF_curveto
PDF_delete_pvf
PDF 函数
PHP Manual

PDF_define_layer

(PECL pdflib >= 2.0.0)

PDF_define_layer — Create layer definition

说明

int PDF_define_layer ( resource $pdfdoc , string $name , string $optlist )

Creates a new layer definition.

This function requires PDF 1.5.

PDF_curveto
PDF_delete_pvf
PDF 函数


Delete PDFlib virtual file

PDF_define_layer
PDF_delete_table
PDF 函数
PHP Manual

PDF_delete_pvf

(PECL pdflib >= 2.0.0)

PDF_delete_pvf — Delete PDFlib virtual file

说明

int PDF_delete_pvf ( resource $pdfdoc , string $filename )

Deletes a named virtual file and frees its data structures (but not the contents).

PDF_define_layer
PDF_delete_table
PDF 函数


Delete table object

PDF_delete_pvf
PDF_delete_textflow
PDF 函数
PHP Manual

PDF_delete_table

(PECL pdflib >= 2.1.0)

PDF_delete_table — Delete table object

说明

bool PDF_delete_table ( resource $pdfdoc , int $table , string $optlist )

Deletes a table and all associated data structures.

PDF_delete_pvf
PDF_delete_textflow
PDF 函数


Delete textflow object

PDF_delete_table
PDF_delete
PDF 函数
PHP Manual

PDF_delete_textflow

(PECL pdflib >= 2.0.0)

PDF_delete_textflow — Delete textflow object

说明

bool PDF_delete_textflow ( resource $pdfdoc , int $textflow )

Deletes a textflow and the associated data structures.

PDF_delete_table
PDF_delete
PDF 函数


Delete PDFlib object

PDF_delete_textflow
PDF_encoding_set_char
PDF 函数
PHP Manual

PDF_delete

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_delete — Delete PDFlib object

说明

bool PDF_delete ( resource $pdfdoc )

Deletes a PDFlib object, and frees all internal resources. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_delete_textflow
PDF_encoding_set_char
PDF 函数


Add glyph name and/or Unicode value

PDF_delete
PDF_end_document
PDF 函数
PHP Manual

PDF_encoding_set_char

(PECL pdflib >= 2.0.0)

PDF_encoding_set_char — Add glyph name and/or Unicode value

说明

bool PDF_encoding_set_char ( resource $pdfdoc , string $encoding , int $slot , string $glyphname , int $uv )

Adds a glyph name and/or Unicode value to a custom encoding.

PDF_delete
PDF_end_document
PDF 函数


关闭 PDF 文件

PDF_encoding_set_char
PDF_end_font
PDF 函数
PHP Manual

PDF_end_document

(PECL pdflib >= 2.0.0)

PDF_end_document — 关闭 PDF 文件

说明

bool PDF_end_document ( resource $pdfdoc , string $optlist )

使用指定的选项，关闭生成的 PDF 文件。

PDF_encoding_set_char
PDF_end_font
PDF 函数


Terminate Type 3 font definition

PDF_end_document
PDF_end_glyph
PDF 函数
PHP Manual

PDF_end_font

(PECL pdflib >= 2.0.0)

PDF_end_font — Terminate Type 3 font definition

说明

bool PDF_end_font ( resource $pdfdoc )

Terminates a Type 3 font definition.

PDF_end_document
PDF_end_glyph
PDF 函数


Terminate glyph definition for Type 3 font

PDF_end_font
PDF_end_item
PDF 函数
PHP Manual

PDF_end_glyph

(PECL pdflib >= 2.0.0)

PDF_end_glyph — Terminate glyph definition for Type 3 font

说明

bool PDF_end_glyph ( resource $pdfdoc )

Terminates a glyph definition for a Type 3 font.

PDF_end_font
PDF_end_item
PDF 函数


Close structure element or other content item

PDF_end_glyph
PDF_end_layer
PDF 函数
PHP Manual

PDF_end_item

(PECL pdflib >= 2.0.0)

PDF_end_item — Close structure element or other content item

说明

bool PDF_end_item ( resource $pdfdoc , int $id )

Closes a structure element or other content item.

PDF_end_glyph
PDF_end_layer
PDF 函数


Deactivate all active layers

PDF_end_item
PDF_end_page_ext
PDF 函数
PHP Manual

PDF_end_layer

(PECL pdflib >= 2.0.0)

PDF_end_layer — Deactivate all active layers

说明

bool PDF_end_layer ( resource $pdfdoc )

Deactivates all active layers. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function requires PDF 1.5.

PDF_end_item
PDF_end_page_ext
PDF 函数


Finish page

PDF_end_layer
PDF_end_page
PDF 函数
PHP Manual

PDF_end_page_ext

(PECL pdflib >= 2.0.0)

PDF_end_page_ext — Finish page

说明

bool PDF_end_page_ext ( resource $pdfdoc , string $optlist )

Finishes a page, and applies various options. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_end_layer
PDF_end_page
PDF 函数


Finish page

PDF_end_page_ext
PDF_end_pattern
PDF 函数
PHP Manual

PDF_end_page

(PHP 4, PECL pdflib >= 1.0.0)

PDF_end_page — Finish page

说明

bool PDF_end_page ( resource $p )

Finishes the page. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_end_page_ext
PDF_end_pattern
PDF 函数


Finish pattern

PDF_end_page
PDF_end_template
PDF 函数
PHP Manual

PDF_end_pattern

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_end_pattern — Finish pattern

说明

bool PDF_end_pattern ( resource $p )

Finishes the pattern definition. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_end_page
PDF_end_template
PDF 函数


Finish template

PDF_end_pattern
PDF_endpath
PDF 函数
PHP Manual

PDF_end_template

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_end_template — Finish template

说明

bool PDF_end_template ( resource $p )

Finishes a template definition. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_end_pattern
PDF_endpath
PDF 函数


End current path

PDF_end_template
PDF_fill_imageblock
PDF 函数
PHP Manual

PDF_endpath

(PHP 4, PECL pdflib >= 1.0.0)

PDF_endpath — End current path

说明

bool PDF_endpath ( resource $p )

Ends the current path without filling or stroking it.

PDF_end_template
PDF_fill_imageblock
PDF 函数


Fill image block with variable data

PDF_endpath
PDF_fill_pdfblock
PDF 函数
PHP Manual

PDF_fill_imageblock

(PECL pdflib >= 2.0.0)

PDF_fill_imageblock — Fill image block with variable data

说明

int PDF_fill_imageblock ( resource $pdfdoc , int $page , string $blockname , int $image , string $optlist )

Fills an image block with variable data according to its properties.

This function is only available in the PDFlib Personalization Server (PPS).

PDF_endpath
PDF_fill_pdfblock
PDF 函数


Fill PDF block with variable data

PDF_fill_imageblock
PDF_fill_stroke
PDF 函数
PHP Manual

PDF_fill_pdfblock

(PECL pdflib >= 2.0.0)

PDF_fill_pdfblock — Fill PDF block with variable data

说明

int PDF_fill_pdfblock ( resource $pdfdoc , int $page , string $blockname , int $contents , string $optlist )

Fills a PDF block with variable data according to its properties.

This function is only available in the PDFlib Personalization Server (PPS).

PDF_fill_imageblock
PDF_fill_stroke
PDF 函数


Fill and stroke path

PDF_fill_pdfblock
PDF_fill_textblock
PDF 函数
PHP Manual

PDF_fill_stroke

(PHP 4, PECL pdflib >= 1.0.0)

PDF_fill_stroke — Fill and stroke path

说明

bool PDF_fill_stroke ( resource $p )

Fills and strokes the current path with the current fill and stroke color. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_fill_pdfblock
PDF_fill_textblock
PDF 函数


Fill text block with variable data

PDF_fill_stroke
PDF_fill
PDF 函数
PHP Manual

PDF_fill_textblock

(PECL pdflib >= 2.0.0)

PDF_fill_textblock — Fill text block with variable data

说明

int PDF_fill_textblock ( resource $pdfdoc , int $page , string $blockname , string $text , string $optlist )

Fills a text block with variable data according to its properties.

This function is only available in the PDFlib Personalization Server (PPS).

PDF_fill_stroke
PDF_fill
PDF 函数


Fill current path

PDF_fill_textblock
PDF_findfont
PDF 函数
PHP Manual

PDF_fill

(PHP 4, PECL pdflib >= 1.0.0)

PDF_fill — Fill current path

说明

bool PDF_fill ( resource $p )

Fills the interior of the current path with the current fill color. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_fill_textblock
PDF_findfont
PDF 函数


Prepare font for later use [deprecated]

PDF_fill
PDF_fit_image
PDF 函数
PHP Manual

PDF_findfont

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_findfont — Prepare font for later use [deprecated]

说明

int PDF_findfont ( resource $p , string $fontname , string $encoding , int $embed )

Search for a font and prepare it for later use with PDF_setfont(). The metrics will be loaded, and if embed is nonzero, the font file will be checked, but not yet used. encoding is one of builtin, macroman, winansi, host, a user-defined encoding name or the name of a CMap. Parameter embed is optional before PHP 4.3.5 or with PDFlib less than 5.

This function is deprecated since PDFlib version 5, use PDF_load_font() instead.

PDF_fill
PDF_fit_image
PDF 函数


Place image or template

PDF_findfont
PDF_fit_pdi_page
PDF 函数
PHP Manual

PDF_fit_image

(PECL pdflib >= 2.0.0)

PDF_fit_image — Place image or template

说明

bool PDF_fit_image ( resource $pdfdoc , int $image , float $x , float $y , string $optlist )

Places an image or template on the page, subject to various options. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_findfont
PDF_fit_pdi_page
PDF 函数


Place imported PDF page

PDF_fit_image
PDF_fit_table
PDF 函数
PHP Manual

PDF_fit_pdi_page

(PECL pdflib >= 2.0.0)

PDF_fit_pdi_page — Place imported PDF page

说明

bool PDF_fit_pdi_page ( resource $pdfdoc , int $page , float $x , float $y , string $optlist )

Places an imported PDF page on the page, subject to various options. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_fit_image
PDF_fit_table
PDF 函数


Place table on page

PDF_fit_pdi_page
PDF_fit_textflow
PDF 函数
PHP Manual

PDF_fit_table

(PECL pdflib >= 2.1.0)

PDF_fit_table — Place table on page

说明

string PDF_fit_table ( resource $pdfdoc , int $table , float $llx , float $lly , float $urx , float $ury , string $optlist )

Places a table on the page fully or partially.

PDF_fit_pdi_page
PDF_fit_textflow
PDF 函数


Format textflow in rectangular area

PDF_fit_table
PDF_fit_textline
PDF 函数
PHP Manual

PDF_fit_textflow

(PECL pdflib >= 2.0.0)

PDF_fit_textflow — Format textflow in rectangular area

说明

string PDF_fit_textflow ( resource $pdfdoc , int $textflow , float $llx , float $lly , float $urx , float $ury , string $optlist )

Formats the next portion of a textflow into a rectangular area.

PDF_fit_table
PDF_fit_textline
PDF 函数


Place single line of text

PDF_fit_textflow
PDF_get_apiname
PDF 函数
PHP Manual

PDF_fit_textline

(PECL pdflib >= 2.0.0)

PDF_fit_textline — Place single line of text

说明

bool PDF_fit_textline ( resource $pdfdoc , string $text , float $x , float $y , string $optlist )

Places a single line of text on the page, subject to various options. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_fit_textflow
PDF_get_apiname
PDF 函数


Get name of unsuccessfull API function

PDF_fit_textline
PDF_get_buffer
PDF 函数
PHP Manual

PDF_get_apiname

(PECL pdflib >= 2.0.0)

PDF_get_apiname — Get name of unsuccessfull API function

说明

string PDF_get_apiname ( resource $pdfdoc )

Gets the name of the API function which threw the last exception or failed.

PDF_fit_textline
PDF_get_buffer
PDF 函数


Get PDF output buffer

PDF_get_apiname
PDF_get_errmsg
PDF 函数
PHP Manual

PDF_get_buffer

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_get_buffer — Get PDF output buffer

说明

string PDF_get_buffer ( resource $p )

Fetches the buffer containing the generated PDF data.

PDF_get_apiname
PDF_get_errmsg
PDF 函数


Get error text

PDF_get_buffer
PDF_get_errnum
PDF 函数
PHP Manual

PDF_get_errmsg

(PECL pdflib >= 2.0.0)

PDF_get_errmsg — Get error text

说明

string PDF_get_errmsg ( resource $pdfdoc )

Gets the text of the last thrown exception or the reason for a failed function call.

PDF_get_buffer
PDF_get_errnum
PDF 函数


Get error number

PDF_get_errmsg
PDF_get_font
PDF 函数
PHP Manual

PDF_get_errnum

(PECL pdflib >= 2.0.0)

PDF_get_errnum — Get error number

说明

int PDF_get_errnum ( resource $pdfdoc )

Gets the number of the last thrown exception or the reason for a failed function call.

PDF_get_errmsg
PDF_get_font
PDF 函数


Get font [deprecated]

PDF_get_errnum
PDF_get_fontname
PDF 函数
PHP Manual

PDF_get_font

(PHP 4, PECL pdflib >= 1.0.0)

PDF_get_font — Get font [deprecated]

说明

This function is deprecated since PDFlib version 3, use PDF_get_value() with the parameter font instead.

PDF_get_errnum
PDF_get_fontname
PDF 函数


Get font name [deprecated]

PDF_get_font
PDF_get_fontsize
PDF 函数
PHP Manual

PDF_get_fontname

(PHP 4, PECL pdflib >= 1.0.0)

PDF_get_fontname — Get font name [deprecated]

说明

This function is deprecated since PDFlib version 3, use PDF_get_parameter() with the parameter fontname instead.

PDF_get_font
PDF_get_fontsize
PDF 函数


Font handling [deprecated]

PDF_get_fontname
PDF_get_image_height
PDF 函数
PHP Manual

PDF_get_fontsize

(PHP 4, PECL pdflib >= 1.0.0)

PDF_get_fontsize — Font handling [deprecated]

说明

This function is deprecated since PDFlib version 3, use PDF_get_value() with the parameter fontsizeinstead.

PDF_get_fontname
PDF_get_image_height
PDF 函数


Get image height [deprecated]

PDF_get_fontsize
PDF_get_image_width
PDF 函数
PHP Manual

PDF_get_image_height

(PHP 4, PECL pdflib >= 1.0.0)

PDF_get_image_height — Get image height [deprecated]

说明

This function is deprecated since PDFlib version 3, use PDF_get_value() with the parameter imageheight instead.

PDF_get_fontsize
PDF_get_image_width
PDF 函数


Get image width [deprecated]

PDF_get_image_height
PDF_get_majorversion
PDF 函数
PHP Manual

PDF_get_image_width

(PHP 4, PECL pdflib >= 1.0.0)

PDF_get_image_width — Get image width [deprecated]

说明

This function is deprecated since PDFlib version 3, use PDF_get_value() with the parameter imagewidth instead.

PDF_get_image_height
PDF_get_majorversion
PDF 函数


Get major version number [deprecated]

PDF_get_image_width
PDF_get_minorversion
PDF 函数
PHP Manual

PDF_get_majorversion

(PHP 4 >= 4.2.0, PECL pdflib >= 1.0.0)

PDF_get_majorversion — Get major version number [deprecated]

说明

int PDF_get_majorversion ( void )

This function is deprecated since PDFlib version 5, use PDF_get_value() with the parameter major instead.

PDF_get_image_width
PDF_get_minorversion
PDF 函数


Get minor version number [deprecated]

PDF_get_majorversion
PDF_get_parameter
PDF 函数
PHP Manual

PDF_get_minorversion

(PHP 4 >= 4.2.0, PECL pdflib >= 1.0.0)

PDF_get_minorversion — Get minor version number [deprecated]

说明

int PDF_get_minorversion ( void )

Returns the minor version number of the PDFlib version.

This function is deprecated since PDFlib version 5, use PDF_get_value() with the parameter minor instead.

PDF_get_majorversion
PDF_get_parameter
PDF 函数


Get string parameter

PDF_get_minorversion
PDF_get_pdi_parameter
PDF 函数
PHP Manual

PDF_get_parameter

(PHP 4 >= 4.0.1, PECL pdflib >= 1.0.0)

PDF_get_parameter — Get string parameter

说明

string PDF_get_parameter ( resource $p , string $key , float $modifier )

Gets the contents of some PDFlib parameter with string type.

PDF_get_minorversion
PDF_get_pdi_parameter
PDF 函数


Get PDI string parameter [deprecated]

PDF_get_parameter
PDF_get_pdi_value
PDF 函数
PHP Manual

PDF_get_pdi_parameter

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_get_pdi_parameter — Get PDI string parameter [deprecated]

说明

string PDF_get_pdi_parameter ( resource $p , string $key , int $doc , int $page , int $reserved )

Gets the contents of a PDI document parameter with string type.

This function is deprecated since PDFlib version 7, use PDF_pcos_get_string() instead.

PDF_get_parameter
PDF_get_pdi_value
PDF 函数


Get PDI numerical parameter [deprecated]

PDF_get_pdi_parameter
PDF_get_value
PDF 函数
PHP Manual

PDF_get_pdi_value

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_get_pdi_value — Get PDI numerical parameter [deprecated]

说明

float PDF_get_pdi_value ( resource $p , string $key , int $doc , int $page , int $reserved )

Gets the contents of a PDI document parameter with numerical type.

This function is deprecated since PDFlib version 7, use PDF_pcos_get_number() instead.

PDF_get_pdi_parameter
PDF_get_value
PDF 函数


Get numerical parameter

PDF_get_pdi_value
PDF_info_font
PDF 函数
PHP Manual

PDF_get_value

(PHP 4 >= 4.0.1, PECL pdflib >= 1.0.0)

PDF_get_value — Get numerical parameter

说明

float PDF_get_value ( resource $p , string $key , float $modifier )

Gets the value of some PDFlib parameter with numerical type.

PDF_get_pdi_value
PDF_info_font
PDF 函数


Query detailed information about a loaded font

PDF_get_value
PDF_info_matchbox
PDF 函数
PHP Manual

PDF_info_font

(PECL pdflib >= 2.1.0)

PDF_info_font — Query detailed information about a loaded font

说明

float PDF_info_font ( resource $pdfdoc , int $font , string $keyword , string $optlist )

Queries detailed information about a loaded font.

PDF_get_value
PDF_info_matchbox
PDF 函数


Query matchbox information

PDF_info_font
PDF_info_table
PDF 函数
PHP Manual

PDF_info_matchbox

(PECL pdflib >= 2.1.0)

PDF_info_matchbox — Query matchbox information

说明

float PDF_info_matchbox ( resource $pdfdoc , string $boxname , int $num , string $keyword )

Queries information about a matchbox on the current page.

PDF_info_font
PDF_info_table
PDF 函数


Retrieve table information

PDF_info_matchbox
PDF_info_textflow
PDF 函数
PHP Manual

PDF_info_table

(PECL pdflib >= 2.1.0)

PDF_info_table — Retrieve table information

说明

float PDF_info_table ( resource $pdfdoc , int $table , string $keyword )

Retrieves table information related to the most recently placed table instance.

PDF_info_matchbox
PDF_info_textflow
PDF 函数


Query textflow state

PDF_info_table
PDF_info_textline
PDF 函数
PHP Manual

PDF_info_textflow

(PECL pdflib >= 2.0.0)

PDF_info_textflow — Query textflow state

说明

float PDF_info_textflow ( resource $pdfdoc , int $textflow , string $keyword )

Queries the current state of a textflow.

PDF_info_table
PDF_info_textline
PDF 函数


Perform textline formatting and query metrics

PDF_info_textflow
PDF_initgraphics
PDF 函数
PHP Manual

PDF_info_textline

(PECL pdflib >= 2.1.0)

PDF_info_textline — Perform textline formatting and query metrics

说明

float PDF_info_textline ( resource $pdfdoc , string $text , string $keyword , string $optlist )

Performs textline formatting and queries the resulting metrics.

PDF_info_textflow
PDF_initgraphics
PDF 函数


Reset graphic state

PDF_info_textline
PDF_lineto
PDF 函数
PHP Manual

PDF_initgraphics

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_initgraphics — Reset graphic state

说明

bool PDF_initgraphics ( resource $p )

Reset all color and graphics state parameters to their defaults. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_info_textline
PDF_lineto
PDF 函数


Draw a line

PDF_initgraphics
PDF_load_3ddata
PDF 函数
PHP Manual

PDF_lineto

(PHP 4, PECL pdflib >= 1.0.0)

PDF_lineto — Draw a line

说明

bool PDF_lineto ( resource $p , float $x , float $y )

Draws a line from the current point to another point. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_initgraphics
PDF_load_3ddata
PDF 函数


Load 3D model

PDF_lineto
PDF_load_font
PDF 函数
PHP Manual

PDF_load_3ddata

(PECL pdflib >= 2.1.0)

PDF_load_3ddata — Load 3D model

说明

int PDF_load_3ddata ( resource $pdfdoc , string $filename , string $optlist )

Loads a 3D model from a disk-based or virtual file.

This function requires PDF 1.6.

PDF_lineto
PDF_load_font
PDF 函数


Search and prepare font

PDF_load_3ddata
PDF_load_iccprofile
PDF 函数
PHP Manual

PDF_load_font

(PECL pdflib >= 2.0.0)

PDF_load_font — Search and prepare font

说明

int PDF_load_font ( resource $pdfdoc , string $fontname , string $encoding , string $optlist )

Searches for a font and prepares it for later use.

PDF_load_3ddata
PDF_load_iccprofile
PDF 函数


Search and prepare ICC profile

PDF_load_font
PDF_load_image
PDF 函数
PHP Manual

PDF_load_iccprofile

(PECL pdflib >= 2.0.0)

PDF_load_iccprofile — Search and prepare ICC profile

说明

int PDF_load_iccprofile ( resource $pdfdoc , string $profilename , string $optlist )

Searches for an ICC profile, and prepares it for later use.

PDF_load_font
PDF_load_image
PDF 函数


打开一个图像文件

PDF_load_iccprofile
PDF_makespotcolor
PDF 函数
PHP Manual

PDF_load_image

(PECL pdflib >= 2.0.0)

PDF_load_image — 打开一个图像文件

说明

int PDF_load_image ( resource $pdfdoc , string $imagetype , string $filename , string $optlist )

使用指定选项，打开一个基于磁盘的或虚拟的图像文件。

PDF_load_iccprofile
PDF_makespotcolor
PDF 函数


Make spot color

PDF_load_image
PDF_moveto
PDF 函数
PHP Manual

PDF_makespotcolor

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_makespotcolor — Make spot color

说明

int PDF_makespotcolor ( resource $p , string $spotname )

Finds a built-in spot color name, or makes a named spot color from the current fill color. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_load_image
PDF_moveto
PDF 函数


Set current point

PDF_makespotcolor
PDF_new
PDF 函数
PHP Manual

PDF_moveto

(PHP 4, PECL pdflib >= 1.0.0)

PDF_moveto — Set current point

说明

bool PDF_moveto ( resource $p , float $x , float $y )

Sets the current point for graphics output. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_makespotcolor
PDF_new
PDF 函数


Create PDFlib object

PDF_moveto
PDF_open_ccitt
PDF 函数
PHP Manual

PDF_new

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_new — Create PDFlib object

说明

resource PDF_new ( void )

Creates a new PDFlib object with default settings.

PDF_moveto
PDF_open_ccitt
PDF 函数


Open raw CCITT image [deprecated]

PDF_new
PDF_open_file
PDF 函数
PHP Manual

PDF_open_ccitt

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_open_ccitt — Open raw CCITT image [deprecated]

说明

int PDF_open_ccitt ( resource $pdfdoc , string $filename , int $width , int $height , int $BitReverse , int $k , int $Blackls1 )

Opens a raw CCITT image.

This function is deprecated since PDFlib version 5, use PDF_load_image() instead.

PDF_new
PDF_open_file
PDF 函数


Create PDF file [deprecated]

PDF_open_ccitt
PDF_open_gif
PDF 函数
PHP Manual

PDF_open_file

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_open_file — Create PDF file [deprecated]

说明

bool PDF_open_file ( resource $p , string $filename )

Creates a new PDF file using the supplied file name. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function is deprecated since PDFlib version 6, use PDF_begin_document() instead.

PDF_open_ccitt
PDF_open_gif
PDF 函数


Open GIF image [deprecated]

PDF_open_file
PDF_open_image_file
PDF 函数
PHP Manual

PDF_open_gif

(PHP 4, PECL pdflib >= 1.0.0)

PDF_open_gif — Open GIF image [deprecated]

说明

This function is deprecated since PDFlib version 3, use PDF_load_image() instead.

PDF_open_file
PDF_open_image_file
PDF 函数


Read image from file [deprecated]

PDF_open_gif
PDF_open_image
PDF 函数
PHP Manual

PDF_open_image_file

(PHP 4, PECL pdflib >= 1.0.0)

PDF_open_image_file — Read image from file [deprecated]

说明

int PDF_open_image_file ( resource $p , string $imagetype , string $filename , string $stringparam , int $intparam )

Opens an image file.

This function is deprecated since PDFlib version 5, use PDF_load_image() with the colorize, ignoremask, invert, mask, masked, and page options instead.

PDF_open_gif
PDF_open_image
PDF 函数


Use image data [deprecated]

PDF_open_image_file
PDF_open_jpeg
PDF 函数
PHP Manual

PDF_open_image

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_open_image — Use image data [deprecated]

说明

int PDF_open_image ( resource $p , string $imagetype , string $source , string $data , int $length , int $width , int $height , int $components , int $bpc , string $params )

Uses image data from a variety of data sources.

This function is deprecated since PDFlib version 5, use virtual files and PDF_load_image() instead.

PDF_open_image_file
PDF_open_jpeg
PDF 函数


Open JPEG image [deprecated]

PDF_open_image
PDF_open_memory_image
PDF 函数
PHP Manual

PDF_open_jpeg

(PHP 4, PECL pdflib >= 1.0.0)

PDF_open_jpeg — Open JPEG image [deprecated]

说明

This function is deprecated since PDFlib version 3, use PDF_load_image() instead.

PDF_open_image
PDF_open_memory_image
PDF 函数


Open image created with PHP's image functions [not supported]

PDF_open_jpeg
PDF_open_pdi_document
PDF 函数
PHP Manual

PDF_open_memory_image

(PHP 4, PECL pdflib >= 1.0.0)

PDF_open_memory_image — Open image created with PHP's image functions [not supported]

说明

int PDF_open_memory_image ( resource $p , resource $image )

This function is not supported by PDFlib GmbH.

PDF_open_jpeg
PDF_open_pdi_document
PDF 函数


Prepare a pdi document

PDF_open_memory_image
PDF_open_pdi_page
PDF 函数
PHP Manual

PDF_open_pdi_document

(PECL pdflib >= 2.1.0)

PDF_open_pdi_document — Prepare a pdi document

说明

int PDF_open_pdi_document ( resource $p , string $filename , string $optlist )

Open a disk-based or virtual PDF document and prepare it for later use.

PDF_open_memory_image
PDF_open_pdi_page
PDF 函数


Prepare a page

PDF_open_pdi_document
PDF_open_pdi
PDF 函数
PHP Manual

PDF_open_pdi_page

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_open_pdi_page — Prepare a page

说明

int PDF_open_pdi_page ( resource $p , int $doc , int $pagenumber , string $optlist )

Prepares a page for later use with PDF_fit_pdi_page().

PDF_open_pdi_document
PDF_open_pdi
PDF 函数


Open PDF file [deprecated]

PDF_open_pdi_page
PDF_open_tiff
PDF 函数
PHP Manual

PDF_open_pdi

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_open_pdi — Open PDF file [deprecated]

说明

int PDF_open_pdi ( resource $pdfdoc , string $filename , string $optlist , int $len )

Opens a disk-based or virtual PDF document and prepares it for later use.

This function is deprecated since PDFlib version 7, use PDF_open_pdi_document() instead.

PDF_open_pdi_page
PDF_open_tiff
PDF 函数


Open TIFF image [deprecated]

PDF_open_pdi
PDF_pcos_get_number
PDF 函数
PHP Manual

PDF_open_tiff

(PHP 4, PECL pdflib >= 1.0.0)

PDF_open_tiff — Open TIFF image [deprecated]

说明

This function is deprecated since PDFlib version 3, use PDF_load_image() instead.

PDF_open_pdi
PDF_pcos_get_number
PDF 函数


Get value of pCOS path with type number or boolean

PDF_open_tiff
PDF_pcos_get_stream
PDF 函数
PHP Manual

PDF_pcos_get_number

(PECL pdflib >= 2.1.0)

PDF_pcos_get_number — Get value of pCOS path with type number or boolean

说明

float PDF_pcos_get_number ( resource $p , int $doc , string $path )

Gets the value of a pCOS path with type number or boolean.

PDF_open_tiff
PDF_pcos_get_stream
PDF 函数


Get contents of pCOS path with type stream, fstream, or string

PDF_pcos_get_number
PDF_pcos_get_string
PDF 函数
PHP Manual

PDF_pcos_get_stream

(PECL pdflib >= 2.1.0)

PDF_pcos_get_stream — Get contents of pCOS path with type stream, fstream, or string

说明

string PDF_pcos_get_stream ( resource $p , int $doc , string $optlist , string $path )

Gets the contents of a pCOS path with type stream, fstream, or string.

PDF_pcos_get_number
PDF_pcos_get_string
PDF 函数


Get value of pCOS path with type name, string, or boolean

PDF_pcos_get_stream
PDF_place_image
PDF 函数
PHP Manual

PDF_pcos_get_string

(PECL pdflib >= 2.1.0)

PDF_pcos_get_string — Get value of pCOS path with type name, string, or boolean

说明

string PDF_pcos_get_string ( resource $p , int $doc , string $path )

Gets the value of a pCOS path with type name, string, or boolean.

PDF_pcos_get_stream
PDF_place_image
PDF 函数


Place image on the page [deprecated]

PDF_pcos_get_string
PDF_place_pdi_page
PDF 函数
PHP Manual

PDF_place_image

(PHP 4, PECL pdflib >= 1.0.0)

PDF_place_image — Place image on the page [deprecated]

说明

bool PDF_place_image ( resource $pdfdoc , int $image , float $x , float $y , float $scale )

Places an image and scales it. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function is deprecated since PDFlib version 5, use PDF_fit_image() instead.

PDF_pcos_get_string
PDF_place_pdi_page
PDF 函数


Place PDF page [deprecated]

PDF_place_image
PDF_process_pdi
PDF 函数
PHP Manual

PDF_place_pdi_page

(PHP 4 >= 4.0.6, PECL pdflib >= 1.0.0)

PDF_place_pdi_page — Place PDF page [deprecated]

说明

bool PDF_place_pdi_page ( resource $pdfdoc , int $page , float $x , float $y , float $sx , float $sy )

Places a PDF page and scales it. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function is deprecated since PDFlib version 5, use PDF_fit_pdi_page() instead.

PDF_place_image
PDF_process_pdi
PDF 函数


Process imported PDF document

PDF_place_pdi_page
PDF_rect
PDF 函数
PHP Manual

PDF_process_pdi

(PECL pdflib >= 2.0.0)

PDF_process_pdi — Process imported PDF document

说明

int PDF_process_pdi ( resource $pdfdoc , int $doc , int $page , string $optlist )

Processes certain elements of an imported PDF document.

PDF_place_pdi_page
PDF_rect
PDF 函数


Draw rectangle

PDF_process_pdi
PDF_restore
PDF 函数
PHP Manual

PDF_rect

(PHP 4, PECL pdflib >= 1.0.0)

PDF_rect — Draw rectangle

说明

bool PDF_rect ( resource $p , float $x , float $y , float $width , float $height )

Draws a rectangle. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_process_pdi
PDF_restore
PDF 函数


Restore graphics state

PDF_rect
PDF_resume_page
PDF 函数
PHP Manual

PDF_restore

(PHP 4, PECL pdflib >= 1.0.0)

PDF_restore — Restore graphics state

说明

bool PDF_restore ( resource $p )

Restores the most recently saved graphics state. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_rect
PDF_resume_page
PDF 函数


Resume page

PDF_restore
PDF_rotate
PDF 函数
PHP Manual

PDF_resume_page

(PECL pdflib >= 2.0.0)

PDF_resume_page — Resume page

说明

bool PDF_resume_page ( resource $pdfdoc , string $optlist )

Resumes a page to add more content to it.

PDF_restore
PDF_rotate
PDF 函数


Rotate coordinate system

PDF_resume_page
PDF_save
PDF 函数
PHP Manual

PDF_rotate

(PHP 4, PECL pdflib >= 1.0.0)

PDF_rotate — Rotate coordinate system

说明

bool PDF_rotate ( resource $p , float $phi )

Rotates the coordinate system. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_resume_page
PDF_save
PDF 函数


Save graphics state

PDF_rotate
PDF_scale
PDF 函数
PHP Manual

PDF_save

(PHP 4, PECL pdflib >= 1.0.0)

PDF_save — Save graphics state

说明

bool PDF_save ( resource $p )

Saves the current graphics state. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_rotate
PDF_scale
PDF 函数


Scale coordinate system

PDF_save
PDF_set_border_color
PDF 函数
PHP Manual

PDF_scale

(PHP 4, PECL pdflib >= 1.0.0)

PDF_scale — Scale coordinate system

说明

bool PDF_scale ( resource $p , float $sx , float $sy )

Scales the coordinate system. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_save
PDF_set_border_color
PDF 函数


Set border color of annotations [deprecated]

PDF_scale
PDF_set_border_dash
PDF 函数
PHP Manual

PDF_set_border_color

(PHP 4, PECL pdflib >= 1.0.0)

PDF_set_border_color — Set border color of annotations [deprecated]

说明

bool PDF_set_border_color ( resource $p , float $red , float $green , float $blue )

Sets the border color for all kinds of annotations. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function is deprecated since PDFlib version 6, use the option annotcolor in PDF_create_annotation() instead.

PDF_scale
PDF_set_border_dash
PDF 函数


Set border dash style of annotations [deprecated]

PDF_set_border_color
PDF_set_border_style
PDF 函数
PHP Manual

PDF_set_border_dash

(PHP 4 >= 4.0.1, PECL pdflib >= 1.0.0)

PDF_set_border_dash — Set border dash style of annotations [deprecated]

说明

bool PDF_set_border_dash ( resource $pdfdoc , float $black , float $white )

Sets the border dash style for all kinds of annotations. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function is deprecated since PDFlib version 6, use the option dasharray in PDF_create_annotation() instead.

PDF_set_border_color
PDF_set_border_style
PDF 函数


Set border style of annotations [deprecated]

PDF_set_border_dash
PDF_set_char_spacing
PDF 函数
PHP Manual

PDF_set_border_style

(PHP 4, PECL pdflib >= 1.0.0)

PDF_set_border_style — Set border style of annotations [deprecated]

说明

bool PDF_set_border_style ( resource $pdfdoc , string $style , float $width )

Sets the border style for all kinds of annotations. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function is deprecated since PDFlib version 6, use the options borderstyle and linewidth in PDF_create_annotation() instead.

PDF_set_border_dash
PDF_set_char_spacing
PDF 函数


Set character spacing [deprecated]

PDF_set_border_style
PDF_set_duration
PDF 函数
PHP Manual

PDF_set_char_spacing

(PHP 4, PECL pdflib >= 1.0.0)

PDF_set_char_spacing — Set character spacing [deprecated]

说明

This function is deprecated since PDFlib version 3, use PDF_set_value() with parameter charspacing instead.

PDF_set_border_style
PDF_set_duration
PDF 函数


Set duration between pages [deprecated]

PDF_set_char_spacing
PDF_set_gstate
PDF 函数
PHP Manual

PDF_set_duration

(PHP 4, PECL pdflib >= 1.0.0)

PDF_set_duration — Set duration between pages [deprecated]

说明

This function is deprecated since PDFlib version 3, use the duration option in PDF_begin_page_ext() or PDF_end_page_ext() instead.

PDF_set_char_spacing
PDF_set_gstate
PDF 函数


Activate graphics state object

PDF_set_duration
PDF_set_horiz_scaling
PDF 函数
PHP Manual

PDF_set_gstate

(PECL pdflib >= 2.0.0)

PDF_set_gstate — Activate graphics state object

说明

bool PDF_set_gstate ( resource $pdfdoc , int $gstate )

Activates a graphics state object.

PDF_set_duration
PDF_set_horiz_scaling
PDF 函数


Set horizontal text scaling [deprecated]

PDF_set_gstate
PDF_set_info_author
PDF 函数
PHP Manual

PDF_set_horiz_scaling

(PHP 4, PECL pdflib >= 1.0.0)

PDF_set_horiz_scaling — Set horizontal text scaling [deprecated]

说明

This function is deprecated since PDFlib version 3, use PDF_set_value() with parameter horizscaling instead.

PDF_set_gstate
PDF_set_info_author
PDF 函数


Fill the author document info field [deprecated]

PDF_set_horiz_scaling
PDF_set_info_creator
PDF 函数
PHP Manual

PDF_set_info_author

(PHP 4, PECL pdflib >= 1.0.0)

PDF_set_info_author — Fill the author document info field [deprecated]

说明

This function is deprecated since PDFlib version 3, use PDF_set_info() instead.

PDF_set_horiz_scaling
PDF_set_info_creator
PDF 函数


Fill the creator document info field [deprecated]

PDF_set_info_author
PDF_set_info_keywords
PDF 函数
PHP Manual

PDF_set_info_creator

(PHP 4, PECL pdflib >= 1.0.0)

PDF_set_info_creator — Fill the creator document info field [deprecated]

说明

This function is deprecated since PDFlib version 3, use PDF_set_info() instead.

PDF_set_info_author
PDF_set_info_keywords
PDF 函数


Fill the keywords document info field [deprecated]

PDF_set_info_creator
PDF_set_info_subject
PDF 函数
PHP Manual

PDF_set_info_keywords

(PHP 4, PECL pdflib >= 1.0.0)

PDF_set_info_keywords — Fill the keywords document info field [deprecated]

说明

This function is deprecated since PDFlib version 3, use PDF_set_info() instead.

PDF_set_info_creator
PDF_set_info_subject
PDF 函数


Fill the subject document info field [deprecated]

PDF_set_info_keywords
PDF_set_info_title
PDF 函数
PHP Manual

PDF_set_info_subject

(PHP 4, PECL pdflib >= 1.0.0)

PDF_set_info_subject — Fill the subject document info field [deprecated]

说明

This function is deprecated since PDFlib version 3, use PDF_set_info() instead.

PDF_set_info_keywords
PDF_set_info_title
PDF 函数


Fill the title document info field [deprecated]

PDF_set_info_subject
PDF_set_info
PDF 函数
PHP Manual

PDF_set_info_title

(PHP 4, PECL pdflib >= 1.0.0)

PDF_set_info_title — Fill the title document info field [deprecated]

说明

This function is deprecated since PDFlib version 3, use PDF_set_info() instead.

PDF_set_info_subject
PDF_set_info
PDF 函数


Fill document info field

PDF_set_info_title
PDF_set_layer_dependency
PDF 函数
PHP Manual

PDF_set_info

(PHP 4 >= 4.0.1, PECL pdflib >= 1.0.0)

PDF_set_info — Fill document info field

说明

bool PDF_set_info ( resource $p , string $key , string $value )

Fill document information field key with value. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_set_info_title
PDF_set_layer_dependency
PDF 函数


Define relationships among layers

PDF_set_info
PDF_set_leading
PDF 函数
PHP Manual

PDF_set_layer_dependency

(PECL pdflib >= 2.0.0)

PDF_set_layer_dependency — Define relationships among layers

说明

bool PDF_set_layer_dependency ( resource $pdfdoc , string $type , string $optlist )

Defines hierarchical and group relationships among layers. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function requires PDF 1.5.

PDF_set_info
PDF_set_leading
PDF 函数


Set distance between text lines [deprecated]

PDF_set_layer_dependency
PDF_set_parameter
PDF 函数
PHP Manual

PDF_set_leading

(PHP 4, PECL pdflib >= 1.0.0)

PDF_set_leading — Set distance between text lines [deprecated]

说明

This function is deprecated since PDFlib version 3, use PDF_set_value() with the parameter leading instead.

PDF_set_layer_dependency
PDF_set_parameter
PDF 函数


Set string parameter

PDF_set_leading
PDF_set_text_matrix
PDF 函数
PHP Manual

PDF_set_parameter

(PHP 4, PECL pdflib >= 1.0.0)

PDF_set_parameter — Set string parameter

说明

bool PDF_set_parameter ( resource $p , string $key , string $value )

Sets some PDFlib parameter with string type. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_set_leading
PDF_set_text_matrix
PDF 函数


Set text matrix [deprecated]

PDF_set_parameter
PDF_set_text_pos
PDF 函数
PHP Manual

PDF_set_text_matrix

(PHP 4 <= 4.0.4)

PDF_set_text_matrix — Set text matrix [deprecated]

说明

This function is deprecated since PDFlib version 3, use PDF_scale(), PDF_translate(), PDF_rotate(), or PDF_skew() instead.

PDF_set_parameter
PDF_set_text_pos
PDF 函数


Set text position

PDF_set_text_matrix
PDF_set_text_rendering
PDF 函数
PHP Manual

PDF_set_text_pos

(PHP 4, PECL pdflib >= 1.0.0)

PDF_set_text_pos — Set text position

说明

bool PDF_set_text_pos ( resource $p , float $x , float $y )

Sets the position for text output on the page. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_set_text_matrix
PDF_set_text_rendering
PDF 函数


Determine text rendering [deprecated]

PDF_set_text_pos
PDF_set_text_rise
PDF 函数
PHP Manual

PDF_set_text_rendering

(PHP 4, PECL pdflib >= 1.0.0)

PDF_set_text_rendering — Determine text rendering [deprecated]

说明

This function is deprecated since PDFlib version 3, use PDF_set_value() with the textrendering parameter instead.

PDF_set_text_pos
PDF_set_text_rise
PDF 函数


Set text rise [deprecated]

PDF_set_text_rendering
PDF_set_value
PDF 函数
PHP Manual

PDF_set_text_rise

(PHP 4, PECL pdflib >= 1.0.0)

PDF_set_text_rise — Set text rise [deprecated]

说明

This function is deprecated since PDFlib version 3, use PDF_set_value() with the textrise parameter instead.

PDF_set_text_rendering
PDF_set_value
PDF 函数


Set numerical parameter

PDF_set_text_rise
PDF_set_word_spacing
PDF 函数
PHP Manual

PDF_set_value

(PHP 4 >= 4.0.1, PECL pdflib >= 1.0.0)

PDF_set_value — Set numerical parameter

说明

bool PDF_set_value ( resource $p , string $key , float $value )

Sets the value of some PDFlib parameter with numerical type. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_set_text_rise
PDF_set_word_spacing
PDF 函数


Set spacing between words [deprecated]

PDF_set_value
PDF_setcolor
PDF 函数
PHP Manual

PDF_set_word_spacing

(PHP 4, PECL pdflib >= 1.0.0)

PDF_set_word_spacing — Set spacing between words [deprecated]

说明

This function is deprecated since PDFlib version 3, use PDF_set_value() with the wordspacing parameter instead.

PDF_set_value
PDF_setcolor
PDF 函数


Set fill and stroke color

PDF_set_word_spacing
PDF_setdash
PDF 函数
PHP Manual

PDF_setcolor

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_setcolor — Set fill and stroke color

说明

bool PDF_setcolor ( resource $p , string $fstype , string $colorspace , float $c1 , float $c2 , float $c3 , float $c4 )

Sets the current color space and color. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_set_word_spacing
PDF_setdash
PDF 函数


Set simple dash pattern

PDF_setcolor
PDF_setdashpattern
PDF 函数
PHP Manual

PDF_setdash

(PHP 4, PECL pdflib >= 1.0.0)

PDF_setdash — Set simple dash pattern

说明

bool PDF_setdash ( resource $pdfdoc , float $b , float $w )

Sets the current dash pattern to b black and w white units. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_setcolor
PDF_setdashpattern
PDF 函数


Set dash pattern

PDF_setdash
PDF_setflat
PDF 函数
PHP Manual

PDF_setdashpattern

(PECL pdflib >= 2.0.0)

PDF_setdashpattern — Set dash pattern

说明

bool PDF_setdashpattern ( resource $pdfdoc , string $optlist )

Sets a dash pattern defined by an option list. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_setdash
PDF_setflat
PDF 函数


Set flatness

PDF_setdashpattern
PDF_setfont
PDF 函数
PHP Manual

PDF_setflat

(PHP 4, PECL pdflib >= 1.0.0)

PDF_setflat — Set flatness

说明

bool PDF_setflat ( resource $pdfdoc , float $flatness )

Sets the flatness parameter. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_setdashpattern
PDF_setfont
PDF 函数


Set font

PDF_setflat
PDF_setgray_fill
PDF 函数
PHP Manual

PDF_setfont

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_setfont — Set font

说明

bool PDF_setfont ( resource $pdfdoc , int $font , float $fontsize )

Sets the current font in the specified fontsize, using a font handle returned by PDF_load_font(). 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_setflat
PDF_setgray_fill
PDF 函数


Set fill color to gray [deprecated]

PDF_setfont
PDF_setgray_stroke
PDF 函数
PHP Manual

PDF_setgray_fill

(PHP 4, PECL pdflib >= 1.0.0)

PDF_setgray_fill — Set fill color to gray [deprecated]

说明

bool PDF_setgray_fill ( resource $p , float $g )

Sets the current fill color to a gray value between 0 and 1 inclusive. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function is deprecated since PDFlib version 4, use PDF_setcolor() instead.

PDF_setfont
PDF_setgray_stroke
PDF 函数


Set stroke color to gray [deprecated]

PDF_setgray_fill
PDF_setgray
PDF 函数
PHP Manual

PDF_setgray_stroke

(PHP 4, PECL pdflib >= 1.0.0)

PDF_setgray_stroke — Set stroke color to gray [deprecated]

说明

bool PDF_setgray_stroke ( resource $p , float $g )

Sets the current stroke color to a gray value between 0 and 1 inclusive. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function is deprecated since PDFlib version 4, use PDF_setcolor() instead.

PDF_setgray_fill
PDF_setgray
PDF 函数


Set color to gray [deprecated]

PDF_setgray_stroke
PDF_setlinecap
PDF 函数
PHP Manual

PDF_setgray

(PHP 4, PECL pdflib >= 1.0.0)

PDF_setgray — Set color to gray [deprecated]

说明

bool PDF_setgray ( resource $p , float $g )

Sets the current fill and stroke color to a gray value between 0 and 1 inclusive. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function is deprecated since PDFlib version 4, use PDF_setcolor() instead.

PDF_setgray_stroke
PDF_setlinecap
PDF 函数


Set linecap parameter

PDF_setgray
PDF_setlinejoin
PDF 函数
PHP Manual

PDF_setlinecap

(PHP 4, PECL pdflib >= 1.0.0)

PDF_setlinecap — Set linecap parameter

说明

bool PDF_setlinecap ( resource $p , int $linecap )

Sets the linecap parameter to control the shape at the end of a path with respect to stroking.

PDF_setgray
PDF_setlinejoin
PDF 函数


Set linejoin parameter

PDF_setlinecap
PDF_setlinewidth
PDF 函数
PHP Manual

PDF_setlinejoin

(PHP 4, PECL pdflib >= 1.0.0)

PDF_setlinejoin — Set linejoin parameter

说明

bool PDF_setlinejoin ( resource $p , int $value )

Sets the linejoin parameter to specify the shape at the corners of paths that are stroked. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_setlinecap
PDF_setlinewidth
PDF 函数


Set line width

PDF_setlinejoin
PDF_setmatrix
PDF 函数
PHP Manual

PDF_setlinewidth

(PHP 4, PECL pdflib >= 1.0.0)

PDF_setlinewidth — Set line width

说明

bool PDF_setlinewidth ( resource $p , float $width )

Sets the current line width. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_setlinejoin
PDF_setmatrix
PDF 函数


Set current transformation matrix

PDF_setlinewidth
PDF_setmiterlimit
PDF 函数
PHP Manual

PDF_setmatrix

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_setmatrix — Set current transformation matrix

说明

bool PDF_setmatrix ( resource $p , float $a , float $b , float $c , float $d , float $e , float $f )

Explicitly sets the current transformation matrix. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_setlinewidth
PDF_setmiterlimit
PDF 函数


Set miter limit

PDF_setmatrix
PDF_setpolydash
PDF 函数
PHP Manual

PDF_setmiterlimit

(PHP 4, PECL pdflib >= 1.0.0)

PDF_setmiterlimit — Set miter limit

说明

bool PDF_setmiterlimit ( resource $pdfdoc , float $miter )

Sets the miter limit.成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_setmatrix
PDF_setpolydash
PDF 函数


Set complicated dash pattern [deprecated]

PDF_setmiterlimit
PDF_setrgbcolor_fill
PDF 函数
PHP Manual

PDF_setpolydash

(PHP 4 >= 4.0.5, PECL pdflib >= 1.0.0)

PDF_setpolydash — Set complicated dash pattern [deprecated]

说明

This function is deprecated since PDFlib version 5, use PDF_setdashpattern() instead.

PDF_setmiterlimit
PDF_setrgbcolor_fill
PDF 函数


Set fill rgb color values [deprecated]

PDF_setpolydash
PDF_setrgbcolor_stroke
PDF 函数
PHP Manual

PDF_setrgbcolor_fill

(PHP 4, PECL pdflib >= 1.0.0)

PDF_setrgbcolor_fill — Set fill rgb color values [deprecated]

说明

bool PDF_setrgbcolor_fill ( resource $p , float $red , float $green , float $blue )

Sets the current fill color to the supplied RGB values. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function is deprecated since PDFlib version 4, use PDF_setcolor() instead.

PDF_setpolydash
PDF_setrgbcolor_stroke
PDF 函数


Set stroke rgb color values [deprecated]

PDF_setrgbcolor_fill
PDF_setrgbcolor
PDF 函数
PHP Manual

PDF_setrgbcolor_stroke

(PHP 4, PECL pdflib >= 1.0.0)

PDF_setrgbcolor_stroke — Set stroke rgb color values [deprecated]

说明

bool PDF_setrgbcolor_stroke ( resource $p , float $red , float $green , float $blue )

Sets the current stroke color to the supplied RGB values. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function is deprecated since PDFlib version 4, use PDF_setcolor() instead.

PDF_setrgbcolor_fill
PDF_setrgbcolor
PDF 函数


Set fill and stroke rgb color values [deprecated]

PDF_setrgbcolor_stroke
PDF_shading_pattern
PDF 函数
PHP Manual

PDF_setrgbcolor

(PHP 4, PECL pdflib >= 1.0.0)

PDF_setrgbcolor — Set fill and stroke rgb color values [deprecated]

说明

bool PDF_setrgbcolor ( resource $p , float $red , float $green , float $blue )

Sets the current fill and stroke color to the supplied RGB values. 成功时返回 TRUE， 或者在失败时返回 FALSE。

This function is deprecated since PDFlib version 4, use PDF_setcolor() instead.

PDF_setrgbcolor_stroke
PDF_shading_pattern
PDF 函数


Define shading pattern

PDF_setrgbcolor
PDF_shading
PDF 函数
PHP Manual

PDF_shading_pattern

(PECL pdflib >= 2.0.0)

PDF_shading_pattern — Define shading pattern

说明

int PDF_shading_pattern ( resource $pdfdoc , int $shading , string $optlist )

Defines a shading pattern using a shading object.

This function requires PDF 1.4 or above.

PDF_setrgbcolor
PDF_shading
PDF 函数


Define blend

PDF_shading_pattern
PDF_shfill
PDF 函数
PHP Manual

PDF_shading

(PECL pdflib >= 2.0.0)

PDF_shading — Define blend

说明

int PDF_shading ( resource $pdfdoc , string $shtype , float $x0 , float $y0 , float $x1 , float $y1 , float $c1 , float $c2 , float $c3 , float $c4 , string $optlist )

Defines a blend from the current fill color to another color.

This function requires PDF 1.4 or above.

PDF_shading_pattern
PDF_shfill
PDF 函数


Fill area with shading

PDF_shading
PDF_show_boxed
PDF 函数
PHP Manual

PDF_shfill

(PECL pdflib >= 2.0.0)

PDF_shfill — Fill area with shading

说明

bool PDF_shfill ( resource $pdfdoc , int $shading )

Fills an area with a shading, based on a shading object.

This function requires PDF 1.4 or above.

PDF_shading
PDF_show_boxed
PDF 函数


Output text in a box [deprecated]

PDF_shfill
PDF_show_xy
PDF 函数
PHP Manual

PDF_show_boxed

(PHP 4, PECL pdflib >= 1.0.0)

PDF_show_boxed — Output text in a box [deprecated]

说明

int PDF_show_boxed ( resource $p , string $text , float $left , float $top , float $width , float $height , string $mode , string $feature )

This function is deprecated since PDFlib version 6, use PDF_fit_textline() for single lines, or the PDF_*_textflow() functions for multi-line formatting instead.

PDF_shfill
PDF_show_xy
PDF 函数


Output text at given position

PDF_show_boxed
PDF_show
PDF 函数
PHP Manual

PDF_show_xy

(PHP 4, PECL pdflib >= 1.0.0)

PDF_show_xy — Output text at given position

说明

bool PDF_show_xy ( resource $p , string $text , float $x , float $y )

Prints text in the current font. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_show_boxed
PDF_show
PDF 函数


Output text at current position

PDF_show_xy
PDF_skew
PDF 函数
PHP Manual

PDF_show

(PHP 4, PECL pdflib >= 1.0.0)

PDF_show — Output text at current position

说明

bool PDF_show ( resource $pdfdoc , string $text )

Prints text in the current font and size at the current position. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_show_xy
PDF_skew
PDF 函数


Skew the coordinate system

PDF_show
PDF_stringwidth
PDF 函数
PHP Manual

PDF_skew

(PHP 4, PECL pdflib >= 1.0.0)

PDF_skew — Skew the coordinate system

说明

bool PDF_skew ( resource $p , float $alpha , float $beta )

Skews the coordinate system in x and y direction by alpha and beta degrees, respectively. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_show
PDF_stringwidth
PDF 函数


Return width of text

PDF_skew
PDF_stroke
PDF 函数
PHP Manual

PDF_stringwidth

(PHP 4, PECL pdflib >= 1.0.0)

PDF_stringwidth — Return width of text

说明

float PDF_stringwidth ( resource $p , string $text , int $font , float $fontsize )

Returns the width of text in an arbitrary font.

PDF_skew
PDF_stroke
PDF 函数


Stroke path

PDF_stringwidth
PDF_suspend_page
PDF 函数
PHP Manual

PDF_stroke

(PHP 4, PECL pdflib >= 1.0.0)

PDF_stroke — Stroke path

说明

bool PDF_stroke ( resource $p )

Strokes the path with the current color and line width, and clear it. 成功时返回 TRUE， 或者在失败时返回 FALSE。

PDF_stringwidth
PDF_suspend_page
PDF 函数


Suspend page

PDF_stroke
PDF_translate
PDF 函数
PHP Manual

PDF_suspend_page

(PECL pdflib >= 2.0.0)

PDF_suspend_page — Suspend page

说明

bool PDF_suspend_page ( resource $pdfdoc , string $optlist )

Suspends the current page so that it can later be resumed with PDF_resume_page().

PDF_stroke
PDF_translate
PDF 函数


Set origin of coordinate system

PDF_suspend_page
PDF_utf16_to_utf8
PDF 函数
PHP Manual

PDF_translate

(PHP 4, PECL pdflib >= 1.0.0)

PDF_translate — Set origin of coordinate system

说明

bool PDF_translate ( resource $p , float $tx , float $ty )

Translates the origin of the coordinate system.

PDF_suspend_page
PDF_utf16_to_utf8
PDF 函数


Convert string from UTF-16 to UTF-8

PDF_translate
PDF_utf32_to_utf16
PDF 函数
PHP Manual

PDF_utf16_to_utf8

(PECL pdflib >= 2.0.3)

PDF_utf16_to_utf8 — Convert string from UTF-16 to UTF-8

说明

string PDF_utf16_to_utf8 ( resource $pdfdoc , string $utf16string )

Converts a string from UTF-16 format to UTF-8.

PDF_translate
PDF_utf32_to_utf16
PDF 函数


Convert string from UTF-32 to UTF-16

PDF_utf16_to_utf8
PDF_utf8_to_utf16
PDF 函数
PHP Manual

PDF_utf32_to_utf16

(PECL pdflib >= Unknown future)

PDF_utf32_to_utf16 — Convert string from UTF-32 to UTF-16

说明

string PDF_utf32_to_utf16 ( resource $pdfdoc , string $utf32string , string $ordering )

Converts a string from UTF-32 format to UTF-16.

PDF_utf16_to_utf8
PDF_utf8_to_utf16
PDF 函数


Convert string from UTF-8 to UTF-16

PDF_utf32_to_utf16
PS
PDF 函数
PHP Manual

PDF_utf8_to_utf16

(PECL pdflib >= 2.0.3)

PDF_utf8_to_utf16 — Convert string from UTF-8 to UTF-16

说明

string PDF_utf8_to_utf16 ( resource $pdfdoc , string $utf8string , string $ordering )

Converts a string from UTF-8 format to UTF-16.

PDF_utf32_to_utf16
PS
PDF 函数


PostScript document creation

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • PS 函数
    • ps_add_bookmark — Add bookmark to current page
    • ps_add_launchlink — Adds link which launches file
    • ps_add_locallink — Adds link to a page in the same document
    • ps_add_note — Adds note to current page
    • ps_add_pdflink — Adds link to a page in a second pdf document
    • ps_add_weblink — Adds link to a web location
    • ps_arc — Draws an arc counterclockwise
    • ps_arcn — Draws an arc clockwise
    • ps_begin_page — Start a new page
    • ps_begin_pattern — Start a new pattern
    • ps_begin_template — Start a new template
    • ps_circle — Draws a circle
    • ps_clip — Clips drawing to current path
    • ps_close_image — Closes image and frees memory
    • ps_close — Closes a PostScript document
    • ps_closepath_stroke — Closes and strokes path
    • ps_closepath — Closes path
    • ps_continue_text — Continue text in next line
    • ps_curveto — Draws a curve
    • ps_delete — Deletes all resources of a PostScript document
    • ps_end_page — End a page
    • ps_end_pattern — End a pattern
    • ps_end_template — End a template
    • ps_fill_stroke — Fills and strokes the current path
    • ps_fill — Fills the current path
    • ps_findfont — Loads a font
    • ps_get_buffer — Fetches the full buffer containig the generated PS data
    • ps_get_parameter — Gets certain parameters
    • ps_get_value — Gets certain values
    • ps_hyphenate — Hyphenates a word
    • ps_include_file — Reads an external file with raw PostScript code
    • ps_lineto — Draws a line
    • ps_makespotcolor — Create spot color
    • ps_moveto — Sets current point
    • ps_new — Creates a new PostScript document object
    • ps_open_file — Opens a file for output
    • ps_open_image_file — Opens image from file
    • ps_open_image — Reads an image for later placement
    • ps_open_memory_image — Takes an GD image and returns an image for placement in a PS document
    • ps_place_image — Places image on the page
    • ps_rect — Draws a rectangle
    • ps_restore — Restore previously save context
    • ps_rotate — Sets rotation factor
    • ps_save — Save current context
    • ps_scale — Sets scaling factor
    • ps_set_border_color — Sets color of border for annotations
    • ps_set_border_dash — Sets length of dashes for border of annotations
    • ps_set_border_style — Sets border style of annotations
    • ps_set_info — Sets information fields of document
    • ps_set_parameter — Sets certain parameters
    • ps_set_text_pos — Sets position for text output
    • ps_set_value — Sets certain values
    • ps_setcolor — Sets current color
    • ps_setdash — Sets appearance of a dashed line
    • ps_setflat — Sets flatness
    • ps_setfont — Sets font to use for following output
    • ps_setgray — Sets gray value
    • ps_setlinecap — Sets appearance of line ends
    • ps_setlinejoin — Sets how contected lines are joined
    • ps_setlinewidth — Sets width of a line
    • ps_setmiterlimit — Sets the miter limit
    • ps_setoverprintmode — Sets overprint mode
    • ps_setpolydash — Sets appearance of a dashed line
    • ps_shading_pattern — Creates a pattern based on a shading
    • ps_shading — Creates a shading for later use
    • ps_shfill — Fills an area with a shading
    • ps_show_boxed — Output text in a box
    • ps_show_xy2 — Output text at position
    • ps_show_xy — Output text at given position
    • ps_show2 — Output a text at current position
    • ps_show — Output text
    • ps_string_geometry — Gets geometry of a string
    • ps_stringwidth — Gets width of a string
    • ps_stroke — Draws the current path
    • ps_symbol_name — Gets name of a glyph
    • ps_symbol_width — Gets width of a glyph
    • ps_symbol — Output a glyph
    • ps_translate — Sets translation
PDF_utf8_to_utf16
简介
非文本内容的 MIME 输出


简介

This module allows to create PostScript documents. It has many similarities with the pdf extension. Actually the API is almost identical and one can in many cases just replace the prefix of each function from pdf_ to ps_. This also works for functions which has no meaning in the PostScript document (like adding hyperlinks) but will have an effect if the document is converted to PDF.

Documents created by this extension are sometimes even superior to documents created with the pdf extension, because pslib's text rendering functions can handle kerning, hyphenation and ligatures which results in much better output of boxed text.

PS
安装／配置
PS


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
PS


需求

You need at least pslib >= 0.1.12. The ps library (pslib) is available at » http://pslib.sourceforge.net/.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/ps.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


资源类型

This extension defines a PostScript document resource returned by ps_new().

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

The following two tables lists all constants defined by the ps extension.

Contants for line caps
Name | Meaning
ps_LINECAP_BUTT |
ps_LINECAP_ROUND |
ps_LINECAP_SQUARED |
Contants for line joins
Name | Meaning
ps_LINEJOIN_MITER |
ps_LINEJOIN_ROUND |
ps_LINEJOIN_BEVEL |

资源类型
PS 函数
PS


PS 函数

Contact Information

If you have comments, bugfixes, enhancements for either this extension or pslib then please drop me a mail » steinm@php.net. Any help is very welcome.

Table of Contents

  • ps_add_bookmark — Add bookmark to current page
  • ps_add_launchlink — Adds link which launches file
  • ps_add_locallink — Adds link to a page in the same document
  • ps_add_note — Adds note to current page
  • ps_add_pdflink — Adds link to a page in a second pdf document
  • ps_add_weblink — Adds link to a web location
  • ps_arc — Draws an arc counterclockwise
  • ps_arcn — Draws an arc clockwise
  • ps_begin_page — Start a new page
  • ps_begin_pattern — Start a new pattern
  • ps_begin_template — Start a new template
  • ps_circle — Draws a circle
  • ps_clip — Clips drawing to current path
  • ps_close_image — Closes image and frees memory
  • ps_close — Closes a PostScript document
  • ps_closepath_stroke — Closes and strokes path
  • ps_closepath — Closes path
  • ps_continue_text — Continue text in next line
  • ps_curveto — Draws a curve
  • ps_delete — Deletes all resources of a PostScript document
  • ps_end_page — End a page
  • ps_end_pattern — End a pattern
  • ps_end_template — End a template
  • ps_fill_stroke — Fills and strokes the current path
  • ps_fill — Fills the current path
  • ps_findfont — Loads a font
  • ps_get_buffer — Fetches the full buffer containig the generated PS data
  • ps_get_parameter — Gets certain parameters
  • ps_get_value — Gets certain values
  • ps_hyphenate — Hyphenates a word
  • ps_include_file — Reads an external file with raw PostScript code
  • ps_lineto — Draws a line
  • ps_makespotcolor — Create spot color
  • ps_moveto — Sets current point
  • ps_new — Creates a new PostScript document object
  • ps_open_file — Opens a file for output
  • ps_open_image_file — Opens image from file
  • ps_open_image — Reads an image for later placement
  • ps_open_memory_image — Takes an GD image and returns an image for placement in a PS document
  • ps_place_image — Places image on the page
  • ps_rect — Draws a rectangle
  • ps_restore — Restore previously save context
  • ps_rotate — Sets rotation factor
  • ps_save — Save current context
  • ps_scale — Sets scaling factor
  • ps_set_border_color — Sets color of border for annotations
  • ps_set_border_dash — Sets length of dashes for border of annotations
  • ps_set_border_style — Sets border style of annotations
  • ps_set_info — Sets information fields of document
  • ps_set_parameter — Sets certain parameters
  • ps_set_text_pos — Sets position for text output
  • ps_set_value — Sets certain values
  • ps_setcolor — Sets current color
  • ps_setdash — Sets appearance of a dashed line
  • ps_setflat — Sets flatness
  • ps_setfont — Sets font to use for following output
  • ps_setgray — Sets gray value
  • ps_setlinecap — Sets appearance of line ends
  • ps_setlinejoin — Sets how contected lines are joined
  • ps_setlinewidth — Sets width of a line
  • ps_setmiterlimit — Sets the miter limit
  • ps_setoverprintmode — Sets overprint mode
  • ps_setpolydash — Sets appearance of a dashed line
  • ps_shading_pattern — Creates a pattern based on a shading
  • ps_shading — Creates a shading for later use
  • ps_shfill — Fills an area with a shading
  • ps_show_boxed — Output text in a box
  • ps_show_xy2 — Output text at position
  • ps_show_xy — Output text at given position
  • ps_show2 — Output a text at current position
  • ps_show — Output text
  • ps_string_geometry — Gets geometry of a string
  • ps_stringwidth — Gets width of a string
  • ps_stroke — Draws the current path
  • ps_symbol_name — Gets name of a glyph
  • ps_symbol_width — Gets width of a glyph
  • ps_symbol — Output a glyph
  • ps_translate — Sets translation
预定义常量
ps_add_bookmark
PS


Add bookmark to current page

PS 函数
ps_add_launchlink
PS 函数
PHP Manual

ps_add_bookmark

(PECL ps >= 1.1.0)

ps_add_bookmark — Add bookmark to current page

说明

int ps_add_bookmark ( resource $psdoc , string $text [, int $parent = 0 [, int $open = 0 ]] )

Adds a bookmark for the current page. Bookmarks usually appear in PDF-Viewers left of the page in a hierarchical tree. Clicking on a bookmark will jump to the given page.

此说明在文档被打印或显示时不可见，只在文档用 Acrobat Distiller 或 Ghostview 转换成 PDF 时显示。

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

text

The text used for displaying the bookmark.

parent

A bookmark previously created by this function which is used as the parent of the new bookmark.

open

If open is unequal to zero the bookmark will be shown open by the pdf viewer.

返回值

The returned value is a reference for the bookmark. It is only used if the bookmark shall be used as a parent. The value is greater zero if the function succeeds. In case of an error zero will be returned.

参见

  • ps_add_launchlink() - Adds link which launches file
  • ps_add_pdflink() - Adds link to a page in a second pdf document
  • ps_add_weblink() - Adds link to a web location

PS 函数
ps_add_launchlink
PS 函数


Adds link which launches file

ps_add_bookmark
ps_add_locallink
PS 函数
PHP Manual

ps_add_launchlink

(PECL ps >= 1.1.0)

ps_add_launchlink — Adds link which launches file

说明

bool ps_add_launchlink ( resource $psdoc , float $llx , float $lly , float $urx , float $ury , string $filename )

Places a hyperlink at the given position pointing to a file program which is being started when clicked on. The hyperlink's source position is a rectangle with its lower left corner at (llx, lly) and its upper right corner at (urx, ury). The rectangle has by default a thin blue border.

此说明在文档被打印或显示时不可见，只在文档用 Acrobat Distiller 或 Ghostview 转换成 PDF 时显示。

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

llx

The x-coordinate of the lower left corner.

lly

The y-coordinate of the lower left corner.

urx

The x-coordinate of the upper right corner.

ury

The y-coordinate of the upper right corner.

filename

The path of the program to be started, when the link is clicked on.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_add_locallink() - Adds link to a page in the same document
  • ps_add_pdflink() - Adds link to a page in a second pdf document
  • ps_add_weblink() - Adds link to a web location

ps_add_bookmark
ps_add_locallink
PS 函数


Adds link to a page in the same document

ps_add_launchlink
ps_add_note
PS 函数
PHP Manual

ps_add_locallink

(PECL ps >= 1.1.0)

ps_add_locallink — Adds link to a page in the same document

说明

bool ps_add_locallink ( resource $psdoc , float $llx , float $lly , float $urx , float $ury , int $page , string $dest )

Places a hyperlink at the given position pointing to a page in the same document. Clicking on the link will jump to the given page. The first page in a document has number 1.

The hyperlink's source position is a rectangle with its lower left corner at (llx, lly) and its upper right corner at (urx, ury). The rectangle has by default a thin blue border.

此说明在文档被打印或显示时不可见，只在文档用 Acrobat Distiller 或 Ghostview 转换成 PDF 时显示。

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

llx

The x-coordinate of the lower left corner.

lly

The y-coordinate of the lower left corner.

urx

The x-coordinate of the upper right corner.

ury

The y-coordinate of the upper right corner.

page

The number of the page displayed when clicking on the link.

dest

The parameter dest determines how the document is being viewed. It can be fitpage, fitwidth, fitheight, or fitbbox.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_add_launchlink() - Adds link which launches file
  • ps_add_pdflink() - Adds link to a page in a second pdf document
  • ps_add_weblink() - Adds link to a web location

ps_add_launchlink
ps_add_note
PS 函数


Adds note to current page

ps_add_locallink
ps_add_pdflink
PS 函数
PHP Manual

ps_add_note

(PECL ps >= 1.1.0)

ps_add_note — Adds note to current page

说明

bool ps_add_note ( resource $psdoc , float $llx , float $lly , float $urx , float $ury , string $contents , string $title , string $icon , int $open )

Adds a note at a certain position on the page. Notes are like little rectangular sheets with text on it, which can be placed anywhere on a page. They are shown either folded or unfolded. If folded, the specified icon is used as a placeholder.

此说明在文档被打印或显示时不可见，只在文档用 Acrobat Distiller 或 Ghostview 转换成 PDF 时显示。

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

llx

The x-coordinate of the lower left corner.

lly

The y-coordinate of the lower left corner.

urx

The x-coordinate of the upper right corner.

ury

The y-coordinate of the upper right corner.

contents

The text of the note.

title

The title of the note as displayed in the header of the note.

icon

The icon shown if the note is folded. This parameter can be set to comment, insert, note, paragraph, newparagraph, key, or help.

open

If open is unequal to zero the note will be shown unfolded after opening the document with a pdf viewer.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_add_pdflink() - Adds link to a page in a second pdf document
  • ps_add_launchlink() - Adds link which launches file
  • ps_add_locallink() - Adds link to a page in the same document
  • ps_add_weblink() - Adds link to a web location

ps_add_locallink
ps_add_pdflink
PS 函数


Adds link to a page in a second pdf document

ps_add_note
ps_add_weblink
PS 函数
PHP Manual

ps_add_pdflink

(PECL ps >= 1.1.0)

ps_add_pdflink — Adds link to a page in a second pdf document

说明

bool ps_add_pdflink ( resource $psdoc , float $llx , float $lly , float $urx , float $ury , string $filename , int $page , string $dest )

Places a hyperlink at the given position pointing to a second pdf document. Clicking on the link will branch to the document at the given page. The first page in a document has number 1.

The hyperlink's source position is a rectangle with its lower left corner at (llx, lly) and its upper right corner at (urx, ury). The rectangle has by default a thin blue border.

此说明在文档被打印或显示时不可见，只在文档用 Acrobat Distiller 或 Ghostview 转换成 PDF 时显示。

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

llx

The x-coordinate of the lower left corner.

lly

The y-coordinate of the lower left corner.

urx

The x-coordinate of the upper right corner.

ury

The y-coordinate of the upper right corner.

filename

The name of the pdf document to be opened when clicking on this link.

page

The page number of the destination pdf document

dest

The parameter dest determines how the document is being viewed. It can be fitpage, fitwidth, fitheight, or fitbbox.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_add_launchlink() - Adds link which launches file
  • ps_add_locallink() - Adds link to a page in the same document
  • ps_add_weblink() - Adds link to a web location

ps_add_note
ps_add_weblink
PS 函数


Adds link to a web location

ps_add_pdflink
ps_arc
PS 函数
PHP Manual

ps_add_weblink

(PECL ps >= 1.1.0)

ps_add_weblink — Adds link to a web location

说明

bool ps_add_weblink ( resource $psdoc , float $llx , float $lly , float $urx , float $ury , string $url )

Places a hyperlink at the given position pointing to a web page. The hyperlink's source position is a rectangle with its lower left corner at (llx, lly) and its upper right corner at (urx, ury). The rectangle has by default a thin blue border.

此说明在文档被打印或显示时不可见，只在文档用 Acrobat Distiller 或 Ghostview 转换成 PDF 时显示。

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

llx

The x-coordinate of the lower left corner.

lly

The y-coordinate of the lower left corner.

urx

The x-coordinate of the upper right corner.

ury

The y-coordinate of the upper right corner.

url

The url of the hyperlink to be opened when clicking on this link, e.g. http://www.php.net.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_add_launchlink() - Adds link which launches file
  • ps_add_locallink() - Adds link to a page in the same document
  • ps_add_pdflink() - Adds link to a page in a second pdf document

ps_add_pdflink
ps_arc
PS 函数


Draws an arc counterclockwise

ps_add_weblink
ps_arcn
PS 函数
PHP Manual

ps_arc

(PECL ps >= 1.1.0)

ps_arc — Draws an arc counterclockwise

说明

bool ps_arc ( resource $psdoc , float $x , float $y , float $radius , float $alpha , float $beta )

Draws a portion of a circle with at middle point at (x, y). The arc starts at an angle of alpha and ends at an angle of beta. It is drawn counterclockwise (use ps_arcn() to draw clockwise). The subpath added to the current path starts on the arc at angle alpha and ends on the arc at angle beta.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

x

The x-coordinate of the circle's middle point.

y

The y-coordinate of the circle's middle point.

radius

The radius of the circle

alpha

The start angle given in degrees.

beta

The end angle given in degrees.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_arcn() - Draws an arc clockwise

ps_add_weblink
ps_arcn
PS 函数


Draws an arc clockwise

ps_arc
ps_begin_page
PS 函数
PHP Manual

ps_arcn

(PECL ps >= 1.1.0)

ps_arcn — Draws an arc clockwise

说明

bool ps_arcn ( resource $psdoc , float $x , float $y , float $radius , float $alpha , float $beta )

Draws a portion of a circle with at middle point at (x, y). The arc starts at an angle of alpha and ends at an angle of beta. It is drawn clockwise (use ps_arc() to draw counterclockwise). The subpath added to the current path starts on the arc at angle beta and ends on the arc at angle alpha.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

x

The x-coordinate of the circle's middle point.

y

The y-coordinate of the circle's middle point.

radius

The radius of the circle

alpha

The starting angle given in degrees.

beta

The end angle given in degrees.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_arc() - Draws an arc counterclockwise

ps_arc
ps_begin_page
PS 函数


Start a new page

ps_arcn
ps_begin_pattern
PS 函数
PHP Manual

ps_begin_page

(PECL ps >= 1.1.0)

ps_begin_page — Start a new page

说明

bool ps_begin_page ( resource $psdoc , float $width , float $height )

Starts a new page. Although the parameters width and height imply a different page size for each page, this is not possible in PostScript. The first call of ps_begin_page() will set the page size for the whole document. Consecutive calls will have no effect, except for creating a new page. The situation is different if you intent to convert the PostScript document into PDF. This function places pdfmarks into the document which can set the size for each page indiviually. The resulting PDF document will have different page sizes.

Though PostScript does not know different page sizes, pslib places a bounding box for each page into the document. This size is evaluated by some PostScript viewers and will have precedence over the BoundingBox in the Header of the document. This can lead to unexpected results when you set a BoundingBox whose lower left corner is not (0, 0), because the bounding box of the page will always have a lower left corner (0, 0) and overwrites the global setting.

Each page is encapsulated into save/restore. This means, that most of the settings made on one page will not be retained on the next page.

If there is up to the first call of ps_begin_page() no call of ps_findfont(), then the header of the PostScript document will be output and the bounding box will be set to the size of the first page. The lower left corner of the bounding box is set to (0, 0). If ps_findfont() was called before, then the header has been output already, and the document will not have a valid bounding box. In order to prevent this, one should call ps_set_info() to set the info field BoundingBox and possibly Orientation before any ps_findfont() or ps_begin_page() calls.

Note:

Up to version 0.2.6 of pslib, this function will always overwrite the BoundingBox and Orientation, if it has been set before with ps_set_info() and ps_findfont() has not been called before.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

width

The width of the page in pixel, e.g. 596 for A4 format.

height

The height of the page in pixel, e.g. 842 for A4 format.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_end_page() - End a page
  • ps_findfont() - Loads a font
  • ps_set_info() - Sets information fields of document

ps_arcn
ps_begin_pattern
PS 函数


Start a new pattern

ps_begin_page
ps_begin_template
PS 函数
PHP Manual

ps_begin_pattern

(PECL ps >= 1.2.0)

ps_begin_pattern — Start a new pattern

说明

int ps_begin_pattern ( resource $psdoc , float $width , float $height , float $xstep , float $ystep , int $painttype )

Starts a new pattern. A pattern is like a page containing e.g. a drawing which can be used for filling areas. It is used like a color by calling ps_setcolor() and setting the color space to pattern.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

width

The width of the pattern in pixel.

height

The height of the pattern in pixel.

x-step

The distance in pixel of placements of the pattern in horizontal direction.

y-step

The distance in pixel of placements of the pattern in vertical direction.

painttype

Must be 1 or 2.

返回值

The identifier of the pattern 或者在失败时返回 FALSE.

范例

Example #1 Creating and using a pattern

<?php
$ps = ps_new();

if (!ps_open_file($ps, "pattern.ps")) {
  print "Cannot open PostScript file\n";
  exit;
}

ps_set_parameter($ps, "warning", "true");
ps_set_info($ps, "Creator", "pattern.php");
ps_set_info($ps, "Author", "Uwe Steinmann");
ps_set_info($ps, "Title", "Pattern example");

$pspattern = ps_begin_pattern($ps, 10.0, 10.0, 10.0, 10.0, 1);
ps_setlinewidth($ps, 0.2);
ps_setcolor($ps, "stroke", "rgb", 0.0, 0.0, 1.0, 0.0);
ps_moveto($ps, 0, 0);
ps_lineto($ps, 7, 7);
ps_stroke($ps);
ps_moveto($ps, 0, 7);
ps_lineto($ps, 7, 0);
ps_stroke($ps);
ps_end_pattern($ps);

ps_begin_page($ps, 596, 842);
ps_setcolor($ps, "both", "pattern", $pspattern, 0.0, 0.0, 0.0);
ps_rect($ps, 50, 400, 200, 200);
ps_fill($ps);
ps_end_page($ps);

ps_close($ps);
ps_delete($ps);
?>

参见

  • ps_end_pattern() - End a pattern
  • ps_setcolor() - Sets current color
  • ps_shading_pattern() - Creates a pattern based on a shading

ps_begin_page
ps_begin_template
PS 函数


Start a new template

ps_begin_pattern
ps_circle
PS 函数
PHP Manual

ps_begin_template

(PECL ps >= 1.2.0)

ps_begin_template — Start a new template

说明

int ps_begin_template ( resource $psdoc , float $width , float $height )

Starts a new template. A template is called a form in the postscript language. It is created similar to a pattern but used like an image. Templates are often used for drawings which are placed several times through out the document, e.g. like a company logo. All drawing functions may be used within a template. The template will not be drawn until it is placed by ps_place_image().

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

width

The width of the template in pixel.

height

The height of the template in pixel.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Creating and using a template

<?php
$ps = ps_new();

if (!ps_open_file($ps, "template.ps")) {
  print "Cannot open PostScript file\n";
  exit;
}

ps_set_parameter($ps, "warning", "true");
ps_set_info($ps, "Creator", "template.php");
ps_set_info($ps, "Author", "Uwe Steinmann");
ps_set_info($ps, "Title", "Template example");

$pstemplate = ps_begin_template($ps, 30.0, 30.0);
ps_moveto($ps, 0, 0);
ps_lineto($ps, 30, 30);
ps_moveto($ps, 0, 30);
ps_lineto($ps, 30, 0);
ps_stroke($ps);
ps_end_template($ps);

ps_begin_page($ps, 596, 842);
ps_place_image($ps, $pstemplate, 20.0, 20.0, 1.0);
ps_place_image($ps, $pstemplate, 50.0, 30.0, 0.5);
ps_place_image($ps, $pstemplate, 70.0, 70.0, 0.6);
ps_place_image($ps, $pstemplate, 30.0, 50.0, 1.3);
ps_end_page($ps);

ps_close($ps);
ps_delete($ps);
?>

参见

  • ps_end_template() - End a template

ps_begin_pattern
ps_circle
PS 函数


Draws a circle

ps_begin_template
ps_clip
PS 函数
PHP Manual

ps_circle

(PECL ps >= 1.1.0)

ps_circle — Draws a circle

说明

bool ps_circle ( resource $psdoc , float $x , float $y , float $radius )

Draws a circle with its middle point at (x, y). The circle starts and ends at position (x+radius, y). If this function is called outside a path it will start a new path. If it is called within a path it will add the circle as a subpath. If the last drawing operation does not end in point (x+radius, y) then there will be a gap in the path.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

x

The x-coordinate of the circle's middle point.

y

The y-coordinate of the circle's middle point.

radius

The radius of the circle

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_arc() - Draws an arc counterclockwise
  • ps_arcn() - Draws an arc clockwise

ps_begin_template
ps_clip
PS 函数


Clips drawing to current path

ps_circle
ps_close_image
PS 函数
PHP Manual

ps_clip

(PECL ps >= 1.1.0)

ps_clip — Clips drawing to current path

说明

bool ps_clip ( resource $psdoc )

Takes the current path and uses it to define the border of a clipping area. Everything drawn outside of that area will not be visible.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_closepath() - Closes path

ps_circle
ps_close_image
PS 函数


Closes image and frees memory

ps_clip
ps_close
PS 函数
PHP Manual

ps_close_image

(PECL ps >= 1.1.0)

ps_close_image — Closes image and frees memory

说明

void ps_close_image ( resource $psdoc , int $imageid )

Closes an image and frees its resources. Once an image is closed it cannot be used anymore.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

imageid

Resource identifier of the image as returned by ps_open_image() or ps_open_image_file().

返回值

Returns NULL on success 或者在失败时返回 FALSE.

参见

  • ps_open_image() - Reads an image for later placement
  • ps_open_image_file() - Opens image from file

ps_clip
ps_close
PS 函数


Closes a PostScript document

ps_close_image
ps_closepath_stroke
PS 函数
PHP Manual

ps_close

(PECL ps >= 1.1.0)

ps_close — Closes a PostScript document

说明

bool ps_close ( resource $psdoc )

Closes the PostScript document.

This function writes the trailer of the PostScript document. It also writes the bookmark tree. ps_close() does not free any resources, which is done by ps_delete().

This function is also called by ps_delete() if it has not been called before.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_open_file() - Opens a file for output
  • ps_delete() - Deletes all resources of a PostScript document

ps_close_image
ps_closepath_stroke
PS 函数


Closes and strokes path

ps_close
ps_closepath
PS 函数
PHP Manual

ps_closepath_stroke

(PECL ps >= 1.1.0)

ps_closepath_stroke — Closes and strokes path

说明

bool ps_closepath_stroke ( resource $psdoc )

Connects the last point with first point of a path and draws the resulting closed line.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_closepath() - Closes path

ps_close
ps_closepath
PS 函数


Closes path

ps_closepath_stroke
ps_continue_text
PS 函数
PHP Manual

ps_closepath

(PECL ps >= 1.1.0)

ps_closepath — Closes path

说明

bool ps_closepath ( resource $psdoc )

Connects the last point with the first point of a path. The resulting path can be used for stroking, filling, clipping, etc..

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_clip() - Clips drawing to current path
  • ps_closepath_stroke() - Closes and strokes path

ps_closepath_stroke
ps_continue_text
PS 函数


Continue text in next line

ps_closepath
ps_curveto
PS 函数
PHP Manual

ps_continue_text

(PECL ps >= 1.1.0)

ps_continue_text — Continue text in next line

说明

bool ps_continue_text ( resource $psdoc , string $text )

Output a text one line below the last line. The line spacing is taken from the value "leading" which must be set with ps_set_value(). The actual position of the text is determined by the values "textx" and "texty" which can be requested with ps_get_value()

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

text

The text to output.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_show() - Output text
  • ps_show_xy() - Output text at given position
  • ps_show_boxed() - Output text in a box

ps_closepath
ps_curveto
PS 函数


Draws a curve

ps_continue_text
ps_delete
PS 函数
PHP Manual

ps_curveto

(PECL ps >= 1.1.0)

ps_curveto — Draws a curve

说明

bool ps_curveto ( resource $psdoc , float $x1 , float $y1 , float $x2 , float $y2 , float $x3 , float $y3 )

Add a section of a cubic Bézier curve described by the three given control points to the current path.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

x1

x-coordinate of first control point.

y1

y-coordinate of first control point.

x2

x-coordinate of second control point.

y2

y-coordinate of second control point.

x3

x-coordinate of third control point.

y3

y-coordinate of third control point.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_lineto() - Draws a line

ps_continue_text
ps_delete
PS 函数


Deletes all resources of a PostScript document

ps_curveto
ps_end_page
PS 函数
PHP Manual

ps_delete

(PECL ps >= 1.1.0)

ps_delete — Deletes all resources of a PostScript document

说明

bool ps_delete ( resource $psdoc )

Mainly frees memory used by the document. Also closes a file, if it was not closed before with ps_close(). You should in any case close the file with ps_close() before, because ps_close() not just closes the file but also outputs a trailor containing PostScript comments like the number of pages in the document and adding the bookmark hierarchy.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_close() - Closes a PostScript document

ps_curveto
ps_end_page
PS 函数


End a page

ps_delete
ps_end_pattern
PS 函数
PHP Manual

ps_end_page

(PECL ps >= 1.1.0)

ps_end_page — End a page

说明

bool ps_end_page ( resource $psdoc )

Ends a page which was started with ps_begin_page(). Ending a page will leave the current drawing context, which e.g. requires to reload fonts if they were loading within the page, and to set many other drawing parameters like the line width, or color..

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_begin_page() - Start a new page

ps_delete
ps_end_pattern
PS 函数


End a pattern

ps_end_page
ps_end_template
PS 函数
PHP Manual

ps_end_pattern

(PECL ps >= 1.2.0)

ps_end_pattern — End a pattern

说明

bool ps_end_pattern ( resource $psdoc )

Ends a pattern which was started with ps_begin_pattern(). Once a pattern has been ended, it can be used like a color to fill areas.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_begin_pattern() - Start a new pattern

ps_end_page
ps_end_template
PS 函数


End a template

ps_end_pattern
ps_fill_stroke
PS 函数
PHP Manual

ps_end_template

(PECL ps >= 1.2.0)

ps_end_template — End a template

说明

bool ps_end_template ( resource $psdoc )

Ends a template which was started with ps_begin_template(). Once a template has been ended, it can be used like an image.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_begin_template() - Start a new template

ps_end_pattern
ps_fill_stroke
PS 函数


Fills and strokes the current path

ps_end_template
ps_fill
PS 函数
PHP Manual

ps_fill_stroke

(PECL ps >= 1.1.0)

ps_fill_stroke — Fills and strokes the current path

说明

bool ps_fill_stroke ( resource $psdoc )

Fills and draws the path constructed with previously called drawing functions like ps_lineto().

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_fill() - Fills the current path
  • ps_stroke() - Draws the current path

ps_end_template
ps_fill
PS 函数


Fills the current path

ps_fill_stroke
ps_findfont
PS 函数
PHP Manual

ps_fill

(PECL ps >= 1.1.0)

ps_fill — Fills the current path

说明

bool ps_fill ( resource $psdoc )

Fills the path constructed with previously called drawing functions like ps_lineto().

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_fill_stroke() - Fills and strokes the current path
  • ps_stroke() - Draws the current path

ps_fill_stroke
ps_findfont
PS 函数


Loads a font

ps_fill
ps_get_buffer
PS 函数
PHP Manual

ps_findfont

(PECL ps >= 1.1.0)

ps_findfont — Loads a font

说明

int ps_findfont ( resource $psdoc , string $fontname , string $encoding [, bool $embed = false ] )

Loads a font for later use. Before text is output with a loaded font it must be set with ps_setfont(). This function needs the adobe font metric file in order to calculate the space used up by the characters. A font which is loaded within a page will only be available on that page. Fonts which are to be used in the complete document have to be loaded before the first call of ps_begin_page(). Calling ps_findfont() between pages will make that font available for all following pages.

The name of the afm file must be fontname.afm. If the font shall be embedded the file fontname.pfb containing the font outline must be present as well.

Calling ps_findfont() before the first page requires to output the postscript header which includes the BoundingBox for the whole document. Usually the BoundingBox is set with the first call of ps_begin_page() which now comes after ps_findfont(). Consequently the BoundingBox has not been set and a warning will be issued when ps_findfont() is called. In order to prevent this situation, one should call ps_set_parameter() to set the BoundingBox before ps_findfont() is called.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

fontname

The name of the font.

encoding

ps_findfont() will try to load the file passed in the parameter encoding. Encoding files are of the same syntax as those used by dvips(1). They contain a font encoding vector (which is currently not used but must be present) and a list of extra ligatures to extend the list of ligatures derived from the afm file.

encoding can be NULL or the empty string if the default encoding (TeXBase1) shall be used.

If the encoding is set to builtin then there will be no reencoding and the font specific encoding will be used. This is very useful with symbol fonts.

embed

If set to a value >0 the font will be embedded into the document. This requires the font outline (.pfb file) to be present.

返回值

Returns the identifier of the font or zero in case of an error. The identifier is a positive number.

参见

  • ps_begin_page() - Start a new page
  • ps_setfont() - Sets font to use for following output

ps_fill
ps_get_buffer
PS 函数


Fetches the full buffer containig the generated PS data

ps_findfont
ps_get_parameter
PS 函数
PHP Manual

ps_get_buffer

(PECL ps >= 1.1.0)

ps_get_buffer — Fetches the full buffer containig the generated PS data

说明

string ps_get_buffer ( resource $psdoc )

This function is not implemented yet. It will always return an empty string. The idea for a later implementation is to write the contents of the postscript file into an internal buffer if in memory creation is requested, and retrieve the buffer content with this function. Currently, documents created in memory are send to the browser without buffering.

Warning

本函数还未编写文档，仅有参数列表。

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

参见

  • ps_open_file() - Opens a file for output

ps_findfont
ps_get_parameter
PS 函数


Gets certain parameters

ps_get_buffer
ps_get_value
PS 函数
PHP Manual

ps_get_parameter

(PECL ps >= 1.1.0)

ps_get_parameter — Gets certain parameters

说明

string ps_get_parameter ( resource $psdoc , string $name [, float $modifier ] )

Gets several parameters which were directly set by ps_set_parameter() or indirectly by one of the other functions. Parameters are by definition string values. This function cannot be used to retrieve resources which were also set by ps_set_parameter().

The parameter name can have the following values.

fontname

The name of the currently active font or the font whose identifier is passed in parameter modifier.

fontencoding

The encoding of the currently active font.

dottedversion

The version of the underlying pslib library in the format <major>.<minor>.<subminor>

scope

The current drawing scope. Can be object, document, null, page, pattern, path, template, prolog, font, glyph.

ligaturedisolvechar

The character which dissolves a ligature. If your are using a font which contains the ligature `ff' and `|' is the char to dissolve the ligature, then `f|f' will result in two `f' instead of the ligature `ff'.

imageencoding

The encoding used for encoding images. Can be either hex or 85. hex encoding uses two bytes in the postscript file each byte in the image. 85 stand for Ascii85 encoding.

linenumbermode

Set to paragraph if lines are numbered within a paragraph or box if they are numbered within the surrounding box.

linebreak

Only used if text is output with ps_show_boxed(). If set to TRUE a carriage return will add a line break.

parbreak

Only used if text is output with ps_show_boxed(). If set to TRUE a carriage return will start a new paragraph.

hyphenation

Only used if text is output with ps_show_boxed(). If set to TRUE the paragraph will be hyphenated if a hypen dictionary is set and exists.

hyphendict

Filename of the dictionary used for hyphenation pattern.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

name

Name of the parameter.

modifier

An identifier needed if a parameter of a resource is requested, e.g. the size of an image. In such a case the resource id is passed.

返回值

Returns the value of the parameter 或者在失败时返回 FALSE.

参见

  • ps_set_parameter() - Sets certain parameters

ps_get_buffer
ps_get_value
PS 函数


Gets certain values

ps_get_parameter
ps_hyphenate
PS 函数
PHP Manual

ps_get_value

(PECL ps >= 1.1.0)

ps_get_value — Gets certain values

说明

float ps_get_value ( resource $psdoc , string $name [, float $modifier ] )

Gets several values which were set by ps_set_value(). Values are by definition float values.

The parameter name can have the following values.

fontsize

The size of the currently active font or the font whose identifier is passed in parameter modifier.

font

The currently active font itself.

imagewidth

The width of the image whose id is passed in the parameter modifier.

imageheight

The height of the image whose id is passed in the parameter modifier.

capheight

The height of a capital M in the currently active font or the font whose identifier is passed in parameter modifier.

ascender

The ascender of the currently active font or the font whose identifier is passed in parameter modifier.

descender

The descender of the currently active font or the font whose identifier is passed in parameter modifier.

italicangle

The italicangle of the currently active font or the font whose identifier is passed in parameter modifier.

underlineposition

The underlineposition of the currently active font or the font whose identifier is passed in parameter modifier.

underlinethickness

The underlinethickness of the currently active font or the font whose identifier is passed in parameter modifier.

textx

The current x-position for text output.

texty

The current y-position for text output.

textrendering

The current mode for text rendering.

textrise

The space by which text is risen above the base line.

leading

The distance between text lines in points.

wordspacing

The space between words as a multiple of the width of a space char.

charspacing

The space between chars. If charspacing is != 0.0 ligatures will always be dissolved.

hyphenminchars

Minimum number of chars hyphenated at the end of a word.

parindent

Indention of the first n line in a paragraph.

numindentlines

Number of line in a paragraph to indent if parindent != 0.0.

parskip

Distance between paragraphs.

linenumberspace

Overall space in front of each line for the line number.

linenumbersep

Space between the line and the line number.

major

The major version number of pslib.

minor

The minor version number of pslib.

subminor, revision

The subminor version number of pslib.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

name

Name of the value.

modifier

The parameter modifier specifies the resource for which the value is to be retrieved. This can be the id of a font or an image.

返回值

Returns the value of the parameter or FALSE.

参见

  • ps_set_value() - Sets certain values

ps_get_parameter
ps_hyphenate
PS 函数


Hyphenates a word

ps_get_value
ps_include_file
PS 函数
PHP Manual

ps_hyphenate

(PECL ps >= 1.1.1)

ps_hyphenate — Hyphenates a word

说明

array ps_hyphenate ( resource $psdoc , string $text )

Hyphenates the passed word. ps_hyphenate() evaluates the value hyphenminchars (set by ps_set_value()) and the parameter hyphendict (set by ps_set_parameter()). hyphendict must be set before calling this function.

This function requires the locale category LC_CTYPE to be set properly. This is done when the extension is initialized by using the environment variables. On Unix systems read the man page of locale for more information.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

text

text should not contain any non alpha characters. Possible positions for breaks are returned in an array of interger numbers. Each number is the position of the char in text after which a hyphenation can take place.

返回值

An array of integers indicating the position of possible breaks in the text 或者在失败时返回 FALSE.

范例

Example #1 Hyphennate a text

<?php
$word = "Koordinatensystem";
$psdoc = ps_new();
ps_set_parameter($psdoc, "hyphendict", "hyph_de.dic");
$hyphens = ps_hyphenate($psdoc, $word);
for($i=0; $i<strlen($word); $i++) {
  echo $word[$i];
  if(in_array($i, $hyphens))
    echo "-";
}
ps_delete($psdoc);
?>

以上例程会输出：

Ko-ordi-na-ten-sys-tem

参见

  • ps_show_boxed() - Output text in a box
  • locale(1)

ps_get_value
ps_include_file
PS 函数


Reads an external file with raw PostScript code

ps_hyphenate
ps_lineto
PS 函数
PHP Manual

ps_include_file

(PECL ps >= 1.3.4)

ps_include_file — Reads an external file with raw PostScript code

说明

bool ps_include_file ( resource $psdoc , string $file )

Warning

本函数还未编写文档，仅有参数列表。

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

file

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ps_hyphenate
ps_lineto
PS 函数


Draws a line

ps_include_file
ps_makespotcolor
PS 函数
PHP Manual

ps_lineto

(PECL ps >= 1.1.0)

ps_lineto — Draws a line

说明

bool ps_lineto ( resource $psdoc , float $x , float $y )

Adds a straight line from the current point to the given coordinates to the current path. Use ps_moveto() to set the starting point of the line.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

x

x-coordinate of the end point of the line.

y

y-coordinate of the end point of the line.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Drawing a rectangle

<?php
$ps = ps_new();
if (!ps_open_file($ps, "rectangle.ps")) {
  print "Cannot open PostScript file\n";
  exit;
}

ps_set_info($ps, "Creator", "rectangle.php");
ps_set_info($ps, "Author", "Uwe Steinmann");
ps_set_info($ps, "Title", "Lineto example");

ps_begin_page($ps, 596, 842);
ps_moveto($ps, 100, 100);
ps_lineto($ps, 100, 200);
ps_lineto($ps, 200, 200);
ps_lineto($ps, 200, 100);
ps_lineto($ps, 100, 100);
ps_stroke($ps);
ps_end_page($ps);

ps_delete($ps);
?>

参见

  • ps_moveto() - Sets current point

ps_include_file
ps_makespotcolor
PS 函数


Create spot color

ps_lineto
ps_moveto
PS 函数
PHP Manual

ps_makespotcolor

(PECL ps >= 1.1.0)

ps_makespotcolor — Create spot color

说明

int ps_makespotcolor ( resource $psdoc , string $name [, int $reserved = 0 ] )

Creates a spot color from the current fill color. The fill color must be defined in rgb, cmyk or gray colorspace. The spot color name can be an arbitrary name. A spot color can be set as any color with ps_setcolor(). When the document is not printed but displayed by an postscript viewer the given color in the specified color space is use.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

name

Name of the spot color, e.g. Pantone 5565.

返回值

The id of the new spot color or 0 in case of an error.

范例

Example #1 Creating and using a spot color

<?php
$ps = ps_new();
if (!ps_open_file($ps, "spotcolor.ps")) {
  print "Cannot open PostScript file\n";
  exit;
}

ps_set_info($ps, "Creator", "spotcolor.php");
ps_set_info($ps, "Author", "Uwe Steinmann");
ps_set_info($ps, "Title", "Spot color example");

ps_begin_page($ps, 596, 842);
ps_setcolor($ps, "fill", "cmyk", 0.37, 0.0, 0.34, 0.34);
$spotcolor = ps_makespotcolor($ps, "PANTONE 5565 C", 0);
ps_setcolor($ps, "fill", "spot", $spotcolor, 0.5, 0.0, 0.0);
ps_moveto($ps, 100, 100);
ps_lineto($ps, 100, 200);
ps_lineto($ps, 200, 200);
ps_lineto($ps, 200, 100);
ps_lineto($ps, 100, 100);
ps_fill($ps);
ps_end_page($ps);

ps_delete($ps);
?>

This example creates the spot color "PANTONE 5565 C" which is a darker green (olive) and fills a rectangle with 50% intensity.

参见

  • ps_setcolor() - Sets current color

ps_lineto
ps_moveto
PS 函数


Sets current point

ps_makespotcolor
ps_new
PS 函数
PHP Manual

ps_moveto

(PECL ps >= 1.1.0)

ps_moveto — Sets current point

说明

bool ps_moveto ( resource $psdoc , float $x , float $y )

Sets the current point to new coordinates. If this is the first call of ps_moveto() after a previous path has been ended then it will start a new path. If this function is called in the middle of a path it will just set the current point and start a subpath.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

x

x-coordinate of the point to move to.

y

y-coordinate of the point to move to.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_lineto() - Draws a line

ps_makespotcolor
ps_new
PS 函数


Creates a new PostScript document object

ps_moveto
ps_open_file
PS 函数
PHP Manual

ps_new

(PECL ps >= 1.1.0)

ps_new — Creates a new PostScript document object

说明

resource ps_new ( void )

Creates a new document instance. It does not create the file on disk or in memory, it just sets up everything. ps_new() is usually followed by a call of ps_open_file() to actually create the postscript document.

返回值

Resource of PostScript document 或者在失败时返回 FALSE. The return value is passed to all other functions as the first argument.

参见

  • ps_delete() - Deletes all resources of a PostScript document

ps_moveto
ps_open_file
PS 函数


Opens a file for output

ps_new
ps_open_image_file
PS 函数
PHP Manual

ps_open_file

(PECL ps >= 1.1.0)

ps_open_file — Opens a file for output

说明

bool ps_open_file ( resource $psdoc [, string $filename ] )

Creates a new file on disk and writes the PostScript document into it. The file will be closed when ps_close() is called.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

filename

The name of the postscript file. If filename is not passed the document will be created in memory and all output will go straight to the browser.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_close() - Closes a PostScript document

ps_new
ps_open_image_file
PS 函数


Opens image from file

ps_open_file
ps_open_image
PS 函数
PHP Manual

ps_open_image_file

(PECL ps >= 1.1.0)

ps_open_image_file — Opens image from file

说明

int ps_open_image_file ( resource $psdoc , string $type , string $filename [, string $stringparam [, int $intparam = 0 ]] )

Loads an image for later use.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

type

The type of the image. Possible values are png, jpeg, or eps.

filename

The name of the file containing the image data.

stringparam

Not used.

intparam

Not used.

返回值

Returns identifier of image or zero in case of an error. The identifier is a positive number greater than 0.

参见

  • ps_open_image() - Reads an image for later placement
  • ps_place_image() - Places image on the page
  • ps_close_image() - Closes image and frees memory

ps_open_file
ps_open_image
PS 函数


Reads an image for later placement

ps_open_image_file
ps_open_memory_image
PS 函数
PHP Manual

ps_open_image

(PECL ps >= 1.1.0)

ps_open_image — Reads an image for later placement

说明

int ps_open_image ( resource $psdoc , string $type , string $source , string $data , int $lenght , int $width , int $height , int $components , int $bpc , string $params )

Reads an image which is already available in memory. The parameter source is currently not evaluated and assumed to be memory. The image data is a sequence of pixels starting in th upper left corner and ending in the lower right corner. Each pixel consists of components color components, and each component has bpc bits.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

type

The type of the image. Possible values are png, jpeg, or eps.

source

Not used.

data

The image data.

length

The length of the image data.

width

The width of the image.

height

The height of the image.

components

The number of components for each pixel. This can be 1 (gray scale images), 3 (rgb images), or 4 (cmyk, rgba images).

bpc

Number of bits per component (quite often 8).

params

返回值

Returns identifier of image or zero in case of an error. The identifier is a positive number greater than 0.

参见

  • ps_open_image_file() - Opens image from file
  • ps_place_image() - Places image on the page
  • ps_close_image() - Closes image and frees memory

ps_open_image_file
ps_open_memory_image
PS 函数


Takes an GD image and returns an image for placement in a PS document

ps_open_image
ps_place_image
PS 函数
PHP Manual

ps_open_memory_image

(PECL ps >= 1.1.0)

ps_open_memory_image — Takes an GD image and returns an image for placement in a PS document

说明

int ps_open_memory_image ( resource $psdoc , int $gd )

Warning

本函数还未编写文档，仅有参数列表。

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

gd

ps_open_image
ps_place_image
PS 函数


Places image on the page

ps_open_memory_image
ps_rect
PS 函数
PHP Manual

ps_place_image

(PECL ps >= 1.1.0)

ps_place_image — Places image on the page

说明

bool ps_place_image ( resource $psdoc , int $imageid , float $x , float $y , float $scale )

Places a formerly loaded image on the page. The image can be scaled. If the image shall be rotated as well, you will have to rotate the coordinate system before with ps_rotate().

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

imageid

The resource identifier of the image as returned by ps_open_image() or ps_open_image_file().

x

x-coordinate of the lower left corner of the image.

y

y-coordinate of the lower left corner of the image.

scale

The scaling factor for the image. A scale of 1.0 will result in a resolution of 72 dpi, because each pixel is equivalent to 1 point.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_open_image() - Reads an image for later placement
  • ps_open_image_file() - Opens image from file

ps_open_memory_image
ps_rect
PS 函数


Draws a rectangle

ps_place_image
ps_restore
PS 函数
PHP Manual

ps_rect

(PECL ps >= 1.1.0)

ps_rect — Draws a rectangle

说明

bool ps_rect ( resource $psdoc , float $x , float $y , float $width , float $height )

Draws a rectangle with its lower left corner at (x, y). The rectangle starts and ends in its lower left corner. If this function is called outside a path it will start a new path. If it is called within a path it will add the rectangle as a subpath. If the last drawing operation does not end in the lower left corner then there will be a gap in the path.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

x

x-coordinate of the lower left corner of the rectangle.

y

y-coordinate of the lower left corner of the rectangle.

width

The width of the image.

height

The height of the image.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_arc() - Draws an arc counterclockwise
  • ps_cirle()
  • ps_lineto() - Draws a line

ps_place_image
ps_restore
PS 函数


Restore previously save context

ps_rect
ps_rotate
PS 函数
PHP Manual

ps_restore

(PECL ps >= 1.1.0)

ps_restore — Restore previously save context

说明

bool ps_restore ( resource $psdoc )

Restores a previously saved graphics context. Any call of ps_save() must be accompanied by a call to ps_restore(). All coordinate transformations, line style settings, color settings, etc. are being restored to the state before the call of ps_save().

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_save() - Save current context

ps_rect
ps_rotate
PS 函数


Sets rotation factor

ps_restore
ps_save
PS 函数
PHP Manual

ps_rotate

(PECL ps >= 1.1.0)

ps_rotate — Sets rotation factor

说明

bool ps_rotate ( resource $psdoc , float $rot )

Sets the rotation of the coordinate system.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

rot

Angle of rotation in degree.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Rotation of the coordinate system

<?php
function rectangle($ps) {
    ps_moveto($ps, 0, 0);
    ps_lineto($ps, 0, 50);
    ps_lineto($ps, 50, 50);
    ps_lineto($ps, 50, 0);
    ps_lineto($ps, 0, 0);
    ps_stroke($ps);
}

$ps = ps_new();
if (!ps_open_file($ps, "rotation.ps")) {
  print "Cannot open PostScript file\n";
  exit;
}

ps_set_info($ps, "Creator", "rotation.php");
ps_set_info($ps, "Author", "Uwe Steinmann");
ps_set_info($ps, "Title", "Rotation example");
ps_set_info($ps, "BoundingBox", "0 0 596 842");

$psfont = ps_findfont($ps, "Helvetica", "", 0);

ps_begin_page($ps, 596, 842);
ps_set_text_pos($ps, 100, 100);
ps_save($ps);
ps_translate($ps, 100, 100);
ps_rotate($ps, 45);
rectangle($ps);
ps_restore($ps);
ps_setfont($ps, $psfont, 8.0);
ps_show($ps, "Text without rotation");
ps_end_page($ps);

ps_delete($ps);
?>

The above example illustrates a very common way of rotating a graphic (in this case just a rectangle) by simply rotating the coordinate system. Since the graphic's coordinate system assumes (0,0) to be the origin, the page coordinate system is also translated to place the graphics not on the edge of the page. Pay attention to the order of ps_translate() and ps_rotate(). In the above case the rectancle is rotated around the point (100, 100) in the untranslated coordinate system. Switching the two statements has a completely different result.

In order to output the following text at the original position, all modifications of the coordinate system are encapsulated in ps_save() and ps_restore().

参见

  • ps_scale() - Sets scaling factor
  • ps_translate() - Sets translation

ps_restore
ps_save
PS 函数


Save current context

ps_rotate
ps_scale
PS 函数
PHP Manual

ps_save

(PECL ps >= 1.1.0)

ps_save — Save current context

说明

bool ps_save ( resource $psdoc )

Saves the current graphics context, containing colors, translation and rotation settings and some more. A saved context can be restored with ps_restore().

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_restore() - Restore previously save context

ps_rotate
ps_scale
PS 函数


Sets scaling factor

ps_save
ps_set_border_color
PS 函数
PHP Manual

ps_scale

(PECL ps >= 1.1.0)

ps_scale — Sets scaling factor

说明

bool ps_scale ( resource $psdoc , float $x , float $y )

Sets horizontal and vertical scaling of the coordinate system.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

x

Scaling factor in horizontal direction.

y

Scaling factor in vertical direction.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_rotate() - Sets rotation factor
  • ps_translate() - Sets translation

ps_save
ps_set_border_color
PS 函数


Sets color of border for annotations

ps_scale
ps_set_border_dash
PS 函数
PHP Manual

ps_set_border_color

(PECL ps >= 1.1.0)

ps_set_border_color — Sets color of border for annotations

说明

bool ps_set_border_color ( resource $psdoc , float $red , float $green , float $blue )

Links added with one of the functions ps_add_weblink(), ps_add_pdflink(), etc. will be displayed with a surounded rectangle when the postscript document is converted to pdf and viewed in a pdf viewer. This rectangle is not visible in the postscript document. This function sets the color of the rectangle's border line.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

red

The red component of the border color.

green

The green component of the border color.

blue

The blue component of the border color.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_set_border_dash() - Sets length of dashes for border of annotations
  • ps_set_border_style() - Sets border style of annotations

ps_scale
ps_set_border_dash
PS 函数


Sets length of dashes for border of annotations

ps_set_border_color
ps_set_border_style
PS 函数
PHP Manual

ps_set_border_dash

(PECL ps >= 1.1.0)

ps_set_border_dash — Sets length of dashes for border of annotations

说明

bool ps_set_border_dash ( resource $psdoc , float $black , float $white )

Links added with one of the functions ps_add_weblink(), ps_add_pdflink(), etc. will be displayed with a surounded rectangle when the postscript document is converted to pdf and viewed in a pdf viewer. This rectangle is not visible in the postscript document. This function sets the length of the black and white portion of a dashed border line.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

black

The length of the dash.

white

The length of the gap between dashes.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_set_border_color() - Sets color of border for annotations
  • ps_set_border_style() - Sets border style of annotations

ps_set_border_color
ps_set_border_style
PS 函数


Sets border style of annotations

ps_set_border_dash
ps_set_info
PS 函数
PHP Manual

ps_set_border_style

(PECL ps >= 1.1.0)

ps_set_border_style — Sets border style of annotations

说明

bool ps_set_border_style ( resource $psdoc , string $style , float $width )

Links added with one of the functions ps_add_weblink(), ps_add_pdflink(), etc. will be displayed with a surounded rectangle when the postscript document is converted to pdf and viewed in a pdf viewer. This rectangle is not visible in the postscript document. This function sets the appearance and width of the border line.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

style

style can be solid or dashed.

width

The line width of the border.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_set_border_color() - Sets color of border for annotations
  • ps_set_border_dash() - Sets length of dashes for border of annotations

ps_set_border_dash
ps_set_info
PS 函数


Sets information fields of document

ps_set_border_style
ps_set_parameter
PS 函数
PHP Manual

ps_set_info

(PECL ps >= 1.1.0)

ps_set_info — Sets information fields of document

说明

bool ps_set_info ( resource $p , string $key , string $val )

Sets certain information fields of the document. This fields will be shown as a comment in the header of the PostScript file. If the document is converted to pdf this fields will also be used for the document information.

The BoundingBox is usually set to the value given to the first page. This only works if ps_findfont() has not been called before. In such cases the BoundingBox would be left unset unless you set it explicitly with this function.

This function will have no effect anymore when the header of the postscript file has been already written. It must be called before the first page or the first call of ps_findfont().

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

key

The name of the information field to set. The values which can be set are Keywords, Subject, Title, Creator, Author, BoundingBox, and Orientation. Be aware that some of them has a meaning to PostScript viewers.

value

The value of the information field. The field Orientation can be set to either Portrait or Landscape. The BoundingBox is a string consisting of four numbers. The first two numbers are the coordinates of the lower left corner of the page. The last two numbers are the coordinates of the upper right corner.

Note:

Up to version 0.2.6 of pslib, the BoundingBox and Orientation will be overwritten by ps_begin_page(), unless ps_findfont() has been called before.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_findfont() - Loads a font
  • ps_begin_page() - Start a new page

ps_set_border_style
ps_set_parameter
PS 函数


Sets certain parameters

ps_set_info
ps_set_text_pos
PS 函数
PHP Manual

ps_set_parameter

(PECL ps >= 1.1.0)

ps_set_parameter — Sets certain parameters

说明

bool ps_set_parameter ( resource $psdoc , string $name , string $value )

Sets several parameters which are used by many functions. Parameters are by definition string values.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

name

For a list of possible names see ps_get_parameter().

value

The value of the parameter.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_get_parameters()
  • ps_set_value() - Sets certain values

ps_set_info
ps_set_text_pos
PS 函数


Sets position for text output

ps_set_parameter
ps_set_value
PS 函数
PHP Manual

ps_set_text_pos

(PECL ps >= 1.1.0)

ps_set_text_pos — Sets position for text output

说明

bool ps_set_text_pos ( resource $psdoc , float $x , float $y )

Set the position for the next text output. You may alternatively set the x and y value separately by calling ps_set_value() and choosing textx respectively texty as the value name.

If you want to output text at a certain position it is more convenient to use ps_show_xy() instead of setting the text position and calling ps_show().

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

x

x-coordinate of the new text position.

y

y-coordinate of the new text position.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Placing text at a given position

<?php
$ps = ps_new();
if (!ps_open_file($ps, "text.ps")) {
  print "Cannot open PostScript file\n";
  exit;
}

ps_set_info($ps, "Creator", "rectangle.php");
ps_set_info($ps, "Author", "Uwe Steinmann");
ps_set_info($ps, "Title", "Text placement example");

ps_begin_page($ps, 596, 842);
$psfont = ps_findfont($ps, "Helvetica", "", 0);
ps_setfont($ps, $psfont, 8.0);
ps_show_xy($ps, "Some text at (100, 100)", 100, 100);

ps_set_value($ps, "textx", 100);
ps_set_value($ps, "texty", 120);
ps_show($ps, "Some text at (100, 120)");
ps_end_page($ps);

ps_delete($ps);
?>

参见

  • ps_set_value() - Sets certain values
  • ps_show() - Output text

ps_set_parameter
ps_set_value
PS 函数


Sets certain values

ps_set_text_pos
ps_setcolor
PS 函数
PHP Manual

ps_set_value

(PECL ps >= 1.1.0)

ps_set_value — Sets certain values

说明

bool ps_set_value ( resource $psdoc , string $name , float $value )

Sets several values which are used by many functions. Parameters are by definition float values.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

name

The name can be one of the following:

textrendering

The way how text is shown.

textx

The x coordinate for text output.

texty

The y coordinate for text output.

wordspacing

The distance between words relative to the width of a space.

leading

The distance between lines in pixels.

value

The value of the parameter.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_get_value() - Gets certain values
  • ps_set_parameter() - Sets certain parameters

ps_set_text_pos
ps_setcolor
PS 函数


Sets current color

ps_set_value
ps_setdash
PS 函数
PHP Manual

ps_setcolor

(PECL ps >= 1.1.0)

ps_setcolor — Sets current color

说明

bool ps_setcolor ( resource $psdoc , string $type , string $colorspace , float $c1 , float $c2 , float $c3 , float $c4 )

Sets the color for drawing, filling, or both.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

type

The parameter type can be both, fill, or fillstroke.

colorspace

The colorspace should be one of gray, rgb, cmyk, spot, pattern. Depending on the colorspace either only the first, the first three or all parameters will be used.

c1

Depending on the colorspace this is either the red component (rgb), the cyan component (cmyk), the gray value (gray), the identifier of the spot color or the identifier of the pattern.

c2

Depending on the colorspace this is either the green component (rgb), the magenta component (cmyk).

c3

Depending on the colorspace this is either the blue component (rgb), the yellow component (cmyk).

c4

This must only be set in cmyk colorspace and specifies the black component.

Bugs

The second parameter is currently not always evaluated. The color is sometimes set for filling and drawing just as if fillstroke were passed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ps_set_value
ps_setdash
PS 函数


Sets appearance of a dashed line

ps_setcolor
ps_setflat
PS 函数
PHP Manual

ps_setdash

(PECL ps >= 1.1.0)

ps_setdash — Sets appearance of a dashed line

说明

bool ps_setdash ( resource $psdoc , float $on , float $off )

Sets the length of the black and white portions of a dashed line.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

on

The length of the dash.

off

The length of the gap between dashes.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_setpolydash() - Sets appearance of a dashed line

ps_setcolor
ps_setflat
PS 函数


Sets flatness

ps_setdash
ps_setfont
PS 函数
PHP Manual

ps_setflat

(PECL ps >= 1.1.0)

ps_setflat — Sets flatness

说明

bool ps_setflat ( resource $psdoc , float $value )

Warning

本函数还未编写文档，仅有参数列表。

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

value

The value must be between 0.2 and 1.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ps_setdash
ps_setfont
PS 函数


Sets font to use for following output

ps_setflat
ps_setgray
PS 函数
PHP Manual

ps_setfont

(PECL ps >= 1.1.0)

ps_setfont — Sets font to use for following output

说明

bool ps_setfont ( resource $psdoc , int $fontid , float $size )

Sets a font, which has to be loaded before with ps_findfont(). Outputting text without setting a font results in an error.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

fontid

The font identifier as returned by ps_findfont().

size

The size of the font.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_findfont() - Loads a font
  • ps_set_text_pos() - Sets position for text output for an example.

ps_setflat
ps_setgray
PS 函数


Sets gray value

ps_setfont
ps_setlinecap
PS 函数
PHP Manual

ps_setgray

(PECL ps >= 1.1.0)

ps_setgray — Sets gray value

说明

bool ps_setgray ( resource $psdoc , float $gray )

Sets the gray value for all following drawing operations.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

gray

The value must be between 0 (white) and 1 (black).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_setcolor() - Sets current color

ps_setfont
ps_setlinecap
PS 函数


Sets appearance of line ends

ps_setgray
ps_setlinejoin
PS 函数
PHP Manual

ps_setlinecap

(PECL ps >= 1.1.0)

ps_setlinecap — Sets appearance of line ends

说明

bool ps_setlinecap ( resource $psdoc , int $type )

Sets how line ends look like.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

type

The type of line ends. Possible values are PS_LINECAP_BUTT, PS_LINECAP_ROUND, or PS_LINECAP_SQUARED.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_setlinejoin() - Sets how contected lines are joined
  • ps_setlinewidth() - Sets width of a line
  • ps_setmiterlimit() - Sets the miter limit

ps_setgray
ps_setlinejoin
PS 函数


Sets how contected lines are joined

ps_setlinecap
ps_setlinewidth
PS 函数
PHP Manual

ps_setlinejoin

(PECL ps >= 1.1.0)

ps_setlinejoin — Sets how contected lines are joined

说明

bool ps_setlinejoin ( resource $psdoc , int $type )

Sets how lines are joined.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

type

The way lines are joined. Possible values are PS_LINEJOIN_MITER, PS_LINEJOIN_ROUND, or PS_LINEJOIN_BEVEL.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_setlinecap() - Sets appearance of line ends
  • ps_setlinewidth() - Sets width of a line
  • ps_setmiterlimit() - Sets the miter limit

ps_setlinecap
ps_setlinewidth
PS 函数


Sets width of a line

ps_setlinejoin
ps_setmiterlimit
PS 函数
PHP Manual

ps_setlinewidth

(PECL ps >= 1.1.0)

ps_setlinewidth — Sets width of a line

说明

bool ps_setlinewidth ( resource $psdoc , float $width )

Sets the line width for all following drawing operations.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

width

The width of lines in points.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_setlinecap() - Sets appearance of line ends
  • ps_setlinejoin() - Sets how contected lines are joined
  • ps_setmiterlimit() - Sets the miter limit

ps_setlinejoin
ps_setmiterlimit
PS 函数


Sets the miter limit

ps_setlinewidth
ps_setoverprintmode
PS 函数
PHP Manual

ps_setmiterlimit

(PECL ps >= 1.1.0)

ps_setmiterlimit — Sets the miter limit

说明

bool ps_setmiterlimit ( resource $psdoc , float $value )

If two lines join in a small angle and the line join is set to PS_LINEJOIN_MITER, then the resulting spike will be very long. The miter limit is the maximum ratio of the miter length (the length of the spike) and the line width.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

value

The maximum ratio between the miter length and the line width. Larger values (> 10) will result in very long spikes when two lines meet in a small angle. Keep the default unless you know what you are doing.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_setlinecap() - Sets appearance of line ends
  • ps_setlinejoin() - Sets how contected lines are joined
  • ps_setlinewidth() - Sets width of a line

ps_setlinewidth
ps_setoverprintmode
PS 函数


Sets overprint mode

ps_setmiterlimit
ps_setpolydash
PS 函数
PHP Manual

ps_setoverprintmode

(PECL ps >= 1.3.0)

ps_setoverprintmode — Sets overprint mode

说明

bool ps_setoverprintmode ( resource $psdoc , int $mode )

Warning

本函数还未编写文档，仅有参数列表。

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

mode

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ps_setmiterlimit
ps_setpolydash
PS 函数


Sets appearance of a dashed line

ps_setoverprintmode
ps_shading_pattern
PS 函数
PHP Manual

ps_setpolydash

(PECL ps >= 1.1.0)

ps_setpolydash — Sets appearance of a dashed line

说明

bool ps_setpolydash ( resource $psdoc , float $arr )

Sets the length of the black and white portions of a dashed line. ps_setpolydash() is used to set more complicated dash patterns.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

arr

arr is a list of length elements alternately for the black and white portion.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Drawing a dashed line

<?php
$ps = ps_new();
if (!ps_open_file($ps, "polydash.ps")) {
   print "Cannot open PostScript file\n";
     exit;
}

ps_set_info($ps, "Creator", "polydash.php");
ps_set_info($ps, "Author", "Uwe Steinmann");
ps_set_info($ps, "Title", "Poly dash example");

ps_begin_page($ps, 596, 842);
ps_setpolydash($ps, array(10, 5, 2, 5));
ps_moveto($ps, 100, 100);
ps_lineto($ps, 200, 200);
ps_stroke($ps);
ps_end_page($ps);

ps_delete($ps);
?>

This example draws a line with a 10 and 2 points long line, and gaps of 5 points inbetween.

参见

  • ps_setdash() - Sets appearance of a dashed line

ps_setoverprintmode
ps_shading_pattern
PS 函数


Creates a pattern based on a shading

ps_setpolydash
ps_shading
PS 函数
PHP Manual

ps_shading_pattern

(PECL ps >= 1.3.0)

ps_shading_pattern — Creates a pattern based on a shading

说明

int ps_shading_pattern ( resource $psdoc , int $shadingid , string $optlist )

Creates a pattern based on a shading, which has to be created before with ps_shading(). Shading patterns can be used like regular patterns.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

shadingid

The identifier of a shading previously created with ps_shading().

optlist

This argument is not currently used.

返回值

The identifier of the pattern 或者在失败时返回 FALSE.

参见

  • ps_shading() - Creates a shading for later use
  • ps_shfill() - Fills an area with a shading

ps_setpolydash
ps_shading
PS 函数


Creates a shading for later use

ps_shading_pattern
ps_shfill
PS 函数
PHP Manual

ps_shading

(PECL ps >= 1.3.0)

ps_shading — Creates a shading for later use

说明

int ps_shading ( resource $psdoc , string $type , float $x0 , float $y0 , float $x1 , float $y1 , float $c1 , float $c2 , float $c3 , float $c4 , string $optlist )

Creates a shading, which can be used by ps_shfill() or ps_shading_pattern().

The color of the shading can be in any color space except for pattern.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

type

The type of shading can be either radial or axial. Each shading starts with the current fill color and ends with the given color values passed in the parameters c1 to c4 (see ps_setcolor() for their meaning).

x0, x1, y0, y1

The coordinates x0, y0, x1, y1 are the start and end point of the shading. If the type of shading is radial the two points are the middle points of a starting and ending circle.

c1, c2, c3, c4

See ps_setcolor() for their meaning.

optlist

If the shading is of type radial the optlist must also contain the parameters r0 and r1 with the radius of the start and end circle.

返回值

Returns the identifier of the pattern 或者在失败时返回 FALSE.

参见

  • ps_shading_pattern() - Creates a pattern based on a shading
  • ps_shfill() - Fills an area with a shading

ps_shading_pattern
ps_shfill
PS 函数


Fills an area with a shading

ps_shading
ps_show_boxed
PS 函数
PHP Manual

ps_shfill

(PECL ps >= 1.3.0)

ps_shfill — Fills an area with a shading

说明

bool ps_shfill ( resource $psdoc , int $shadingid )

Fills an area with a shading, which has to be created before with ps_shading(). This is an alternative way to creating a pattern from a shading ps_shading_pattern() and using the pattern as the filling color.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

shadingid

The identifier of a shading previously created with ps_shading().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_shading() - Creates a shading for later use
  • ps_shading_pattern() - Creates a pattern based on a shading

ps_shading
ps_show_boxed
PS 函数


Output text in a box

ps_shfill
ps_show_xy2
PS 函数
PHP Manual

ps_show_boxed

(PECL ps >= 1.1.0)

ps_show_boxed — Output text in a box

说明

int ps_show_boxed ( resource $psdoc , string $text , float $left , float $bottom , float $width , float $height , string $hmode [, string $feature ] )

Outputs a text in a given box. The lower left corner of the box is at (left, bottom). Line breaks will be inserted where needed. Multiple spaces are treated as one. Tabulators are treated as spaces.

The text will be hyphenated if the parameter hyphenation is set to TRUE and the parameter hyphendict contains a valid filename for a hyphenation file. The line spacing is taken from the value leading. Paragraphs can be separated by an empty line just like in TeX. If the value parindent is set to value > 0.0 then the first n lines will be indented. The number n of lines is set by the parameter numindentlines. In order to prevent indenting of the first m paragraphs set the value parindentskip to a positive number.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

text

The text to be output into the given box.

left

x-coordinate of the lower left corner of the box.

bottom

y-coordinate of the lower left corner of the box.

width

Width of the box.

height

Height of the box.

hmode

The parameter hmode can be "justify", "fulljustify", "right", "left", or "center". The difference of "justify" and "fulljustify" just affects the last line of the box. In fulljustify mode the last line will be left and right justified unless this is also the last line of paragraph. In justify mode it will always be left justified.

feature

Used parameters

The output of ps_show_boxed() can be configured with several parameters and values which must be set with either ps_set_parameter() or ps_set_value(). Beside the parameters and values which affect text output, the following parameters and values are evaluated.

leading (value)

Distance between baselines of two consecutive lines.

linebreak (parameter)

Set to "true" if you want a carriage return to start a new line instead of treating it as a space. Defaults to "false".

parbreak (parameter)

Set to "true" if you want a carriage return on a single line to start a new paragraph instead of treating it as a space. Defaults to "true".

hyphenation (parameter)

Set to "true" in order to turn hyphenation on. This requires a dictionary to be set with the parameter "hyphendict". Defaults to "false".

hyphendict (parameter)

Filename of the dictionary used for hyphenation pattern (see below).

hyphenminchar (value)

The number of chars which must at least be left over before or after the hyphen. This implies that only words of at least two times this value will be hyphenated. The default value is three. Setting a value of zero will result in the default value.

parindent (value)

Set the amount of space in pixel for indenting the first m lines of a paragraph. m can be set with the value "numindentlines".

parskip (value)

Set the amount of extra space in pixel between paragraphs. Defaults to 0 which will result in a normal line distance.

numindentlines (value)

Number of lines from the start of the paragraph which will be indented. Defaults to 1.

parindentskip (value)

Number of paragraphs in the box whose first lines will not be indented. This defaults to 0. This is useful for paragraphs right after a section heading or text being continued in a second box. In both case one would set this to 1.

linenumbermode (parameter)

Set how lines are to be numbered. Possible values are "box" for numbering lines in the whole box or "paragraph" to number lines within each paragraph.

linenumberspace (value)

The space for the column left of the numbered line containing the line number. The line number will be right justified into this column. Defaults to 20.

linenumbersep (value)

The space between the column with line numbers and the line itself. Defaults to 5.

Hyphenation

Text is hyphenated if the parameter hyphenation is set to true and a valid hyphenation dictionary is set. pslib does not ship its own hyphenation dictionary but uses one from openoffice, scribus or koffice. You can find their dictionaries for different languages in one of the following directories if the software is installed:

  • /usr/share/apps/koffice/hyphdicts/
  • /usr/lib/scribus/dicts/
  • /usr/lib/openoffice/share/dict/ooo/
Currently scribus appears to have the most complete hyphenation dictionaries.

返回值

Number of characters that could not be written.

参见

  • ps_continue_text() - Continue text in next line

ps_shfill
ps_show_xy2
PS 函数


Output text at position

ps_show_boxed
ps_show_xy
PS 函数
PHP Manual

ps_show_xy2

(PECL ps >= 1.1.0)

ps_show_xy2 — Output text at position

说明

bool ps_show_xy2 ( resource $psdoc , string $text , int $len , float $xcoor , float $ycoor )

Warning

本函数还未编写文档，仅有参数列表。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ps_show_boxed
ps_show_xy
PS 函数


Output text at given position

ps_show_xy2
ps_show2
PS 函数
PHP Manual

ps_show_xy

(PECL ps >= 1.1.0)

ps_show_xy — Output text at given position

说明

bool ps_show_xy ( resource $psdoc , string $text , float $x , float $y )

Output a text at the given text position.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

text

The text to be output.

x

x-coordinate of the lower left corner of the box surrounding the text.

y

y-coordinate of the lower left corner of the box surrounding the text.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_continue_text() - Continue text in next line
  • ps_show() - Output text

ps_show_xy2
ps_show2
PS 函数


Output a text at current position

ps_show_xy
ps_show
PS 函数
PHP Manual

ps_show2

(PECL ps >= 1.1.0)

ps_show2 — Output a text at current position

说明

bool ps_show2 ( resource $psdoc , string $text , int $len )

Output text at the current position. Do not print more than len characters.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

text

The text to be output.

len

The maximum number of characters to print.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ps_show_xy
ps_show
PS 函数


Output text

ps_show2
ps_string_geometry
PS 函数
PHP Manual

ps_show

(PECL ps >= 1.1.0)

ps_show — Output text

说明

bool ps_show ( resource $psdoc , string $text )

Output a text at the current text position. The text position can be set by storing the x and y coordinates into the values textx and texty with the function ps_set_value(). The function will issue an error if a font was not set before with ps_setfont().

ps_show() evaluates the following parameters and values as set by ps_set_parameter() and ps_set_value().

charspacing (value)

Distance between two consecutive glyphs. If this value is unequal to zero then all ligatures will be resolved. Values less than zero are allowed.

kerning (parameter)

Setting this parameter to "false" will turn off kerning. Kerning is turned on by default.

ligatures (parameter)

Setting this parameter to "false" will turn off the use of ligatures. Ligatures are turned on by default.

underline (parameter)

Setting this parameter to "true" will turn on underlining. Underlining is turned off by default.

overline (parameter)

Setting this parameter to "true" will turn on overlining. Overlining is turned off by default.

strikeout (parameter)

Setting this parameter to "true" will turn on striking out. Striking out is turned off by default.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

text

The text to be output.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_continue_text() - Continue text in next line
  • ps_show_xy() - Output text at given position
  • ps_setfont() - Sets font to use for following output

ps_show2
ps_string_geometry
PS 函数


Gets geometry of a string

ps_show
ps_stringwidth
PS 函数
PHP Manual

ps_string_geometry

(PECL ps >= 1.2.0)

ps_string_geometry — Gets geometry of a string

说明

array ps_string_geometry ( resource $psdoc , string $text [, int $fontid = 0 [, float $size = 0.0 ]] )

This function is similar to ps_stringwidth() but returns an array of dimensions containing the width, ascender, and descender of the text.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

text

The text for which the geometry is to be calculated.

fontid

The identifier of the font to be used. If not font is specified the current font will be used.

size

The size of the font. If no size is specified the current size is used.

返回值

An array of the dimensions of a string. The element 'width' contains the width of the string as returned by ps_stringwidth(). The element 'descender' contains the maximum descender and 'ascender' the maximum ascender of the string.

参见

  • ps_continue_text() - Continue text in next line
  • ps_stringwidth() - Gets width of a string

ps_show
ps_stringwidth
PS 函数


Gets width of a string

ps_string_geometry
ps_stroke
PS 函数
PHP Manual

ps_stringwidth

(PECL ps >= 1.1.0)

ps_stringwidth — Gets width of a string

说明

float ps_stringwidth ( resource $psdoc , string $text [, int $fontid = 0 [, float $size = 0.0 ]] )

Calculates the width of a string in points if it was output in the given font and font size. This function needs an Adobe font metrics file to calculate the precise width. If kerning is turned on, it will be taken into account.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

text

The text for which the width is to be calculated.

fontid

The identifier of the font to be used. If not font is specified the current font will be used.

size

The size of the font. If no size is specified the current size is used.

返回值

Width of a string in points.

参见

  • ps_string_geometry() - Gets geometry of a string

ps_string_geometry
ps_stroke
PS 函数


Draws the current path

ps_stringwidth
ps_symbol_name
PS 函数
PHP Manual

ps_stroke

(PECL ps >= 1.1.0)

ps_stroke — Draws the current path

说明

bool ps_stroke ( resource $psdoc )

Draws the path constructed with previously called drawing functions like ps_lineto().

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_closepath_stroke() - Closes and strokes path
  • ps_fill() - Fills the current path
  • ps_fill_stroke() - Fills and strokes the current path

ps_stringwidth
ps_symbol_name
PS 函数


Gets name of a glyph

ps_stroke
ps_symbol_width
PS 函数
PHP Manual

ps_symbol_name

(PECL ps >= 1.2.0)

ps_symbol_name — Gets name of a glyph

说明

string ps_symbol_name ( resource $psdoc , int $ord [, int $fontid = 0 ] )

This function needs an Adobe font metrics file to know which glyphs are available.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

ord

The parameter ord is the position of the glyph in the font encoding vector.

fontid

The identifier of the font to be used. If not font is specified the current font will be used.

返回值

The name of a glyph in the given font.

参见

  • ps_symbol() - Output a glyph
  • ps_symbol_width() - Gets width of a glyph

ps_stroke
ps_symbol_width
PS 函数


Gets width of a glyph

ps_symbol_name
ps_symbol
PS 函数
PHP Manual

ps_symbol_width

(PECL ps >= 1.2.0)

ps_symbol_width — Gets width of a glyph

说明

float ps_symbol_width ( resource $psdoc , int $ord [, int $fontid = 0 [, float $size = 0.0 ]] )

Calculates the width of a glyph in points if it was output in the given font and font size. This function needs an Adobe font metrics file to calculate the precise width.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

ord

The position of the glyph in the font encoding vector.

fontid

The identifier of the font to be used. If not font is specified the current font will be used.

size

The size of the font. If no size is specified the current size is used.

返回值

The width of a glyph in points.

参见

  • ps_symbol() - Output a glyph
  • ps_symbol_name() - Gets name of a glyph

ps_symbol_name
ps_symbol
PS 函数


Output a glyph

ps_symbol_width
ps_translate
PS 函数
PHP Manual

ps_symbol

(PECL ps >= 1.2.0)

ps_symbol — Output a glyph

说明

bool ps_symbol ( resource $psdoc , int $ord )

Output the glyph at position ord in the font encoding vector of the current font. The font encoding for a font can be set when loading the font with ps_findfont().

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

ord

The position of the glyph in the font encoding vector.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ps_symbol_name() - Gets name of a glyph
  • ps_symbol_width() - Gets width of a glyph

ps_symbol_width
ps_translate
PS 函数


Sets translation

ps_symbol
RPM Reader
PS 函数
PHP Manual

ps_translate

(PECL ps >= 1.1.0)

ps_translate — Sets translation

说明

bool ps_translate ( resource $psdoc , float $x , float $y )

Sets a new initial point of the coordinate system.

参数

psdoc

Resource identifier of the postscript file as returned by ps_new().

x

x-coordinate of the origin of the translated coordinate system.

y

y-coordinate of the origin of the translated coordinate system.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Translation of the coordinate system

<?php
function rectangle($ps) {
    ps_moveto($ps, 0, 0);
    ps_lineto($ps, 0, 50);
    ps_lineto($ps, 50, 50);
    ps_lineto($ps, 50, 0);
    ps_lineto($ps, 0, 0);
    ps_stroke($ps);
}

$ps = ps_new();
if (!ps_open_file($ps, "translate.ps")) {
  print "Cannot open PostScript file\n";
  exit;
}

ps_set_info($ps, "Creator", "translate.php");
ps_set_info($ps, "Author", "Uwe Steinmann");
ps_set_info($ps, "Title", "Translated example");
ps_set_info($ps, "BoundingBox", "0 0 596 842");

$psfont = ps_findfont($ps, "Helvetica", "", 0);

ps_begin_page($ps, 596, 842);
ps_set_text_pos($ps, 100, 100);
ps_translate($ps, 500, 750);
rectangle($ps);
ps_translate($ps, -500, -750);
ps_setfont($ps, $psfont, 8.0);
ps_show($ps, "Text at initial position");
ps_end_page($ps);

ps_begin_page($ps, 596, 842);
ps_set_text_pos($ps, 100, 100);
ps_save($ps);
ps_translate($ps, 500, 750);
rectangle($ps);
ps_restore($ps);
ps_setfont($ps, $psfont, 8.0);
ps_show($ps, "Text at initial position");
ps_end_page($ps);

ps_delete($ps);
?>

The above example demonstrates two possible ways to place a graphic (in this case just a rectangle) at any position on the page, while the graphic itself uses its own coordinate system. The trick is to change the origin of the current coordinate system before drawing the rectangle. The translation has to be undone after the graphic has been drawn.

On the second page a slightly different and more elegant approach is applied. Instead of undoing the translation with a second call of ps_translate() the graphics context is saved before modifying the coordinate system and restored after drawing the rectangle.

参见

  • ps_scale() - Sets scaling factor
  • ps_rotate() - Sets rotation factor

ps_symbol
RPM Reader
PS 函数


RPM Header Reading

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Basic usage
  • RPM Reader 函数
    • rpm_close — Closes an RPM file
    • rpm_get_tag — Retrieves a header tag from an RPM file
    • rpm_is_valid — Tests a filename for validity as an RPM file
    • rpm_open — Opens an RPM file
    • rpm_version — Returns a string representing the current version of the rpmreader extension
ps_translate
简介
非文本内容的 MIME 输出


简介

This module allows you to read the meta information stored in the headers of a » RedHat Package Manager (» RPM) file.

RPM Reader
安装／配置
RPM Reader


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
RPM Reader


需求

The RPMReader extension requires PHP 5.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/rpmreader.

需求
运行时配置
安装／配置


资源类型

There is one resource type used by the RPMReader module. The resource is a file pointer which identifies the RPM file with which to work.

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

The following list of constants are used to obtain information using the rpm_get_tag() function. These constants represent the tag number to be retrieved from the RPM file's header section. Descriptions are given below as to what data the tag number constants reference.

RPMREADER_MINIMUM (integer)
The minimum valid value of any RPM tag number.
RPMREADER_NAME (integer)
The name of the RPM package.
RPMREADER_VERSION (integer)
The version of the RPM package.
RPMREADER_RELEASE (integer)
The release of the RPM package.
RPMREADER_EPOCH (integer)
RPMREADER_SERIAL (integer)
RPMREADER_SUMMARY (integer)
The summary text of the RPM package.
RPMREADER_DESCRIPTION (integer)
The full description text of the RPM package.
RPMREADER_BUILDTIME (integer)
The date and time when the RPM package was built.
RPMREADER_BUILDHOST (integer)
The name of the host on which the RPM package was built.
RPMREADER_INSTALLTIME (integer)
RPMREADER_SIZE (integer)
The size of the RPM package.
RPMREADER_DISTRIBUTION (integer)
RPMREADER_VENDOR (integer)
RPMREADER_GIF (integer)
RPMREADER_XPM (integer)
RPMREADER_LICENSE (integer)
RPMREADER_COPYRIGHT (integer)
RPMREADER_PACKAGER (integer)
RPMREADER_GROUP (integer)
RPMREADER_SOURCE (integer)
RPMREADER_PATCH (integer)
RPMREADER_URL (integer)
RPMREADER_OS (integer)
RPMREADER_ARCH (integer)
RPMREADER_PREIN (integer)
RPMREADER_POSTIN (integer)
RPMREADER_PREUN (integer)
RPMREADER_POSTUN (integer)
RPMREADER_OLDFILENAMES (integer)
The list of files in an RPM package (deprecated format). The correct way is now to use a combination of 3 tags (RPMREADER_BASENAMES, RPMREADER_DIRINDEXES, RPMREADER_DIRNAMES) in what RPM now calls "CompressedFileNames". This tag is still used in older RPM files that did not use the "CompressedFileNames" method and is maintained for backward compatibility.
RPMREADER_FILESIZES (integer)
RPMREADER_FILESTATES (integer)
RPMREADER_FILEMODES (integer)
RPMREADER_FILERDEVS (integer)
RPMREADER_FILEMTIMES (integer)
RPMREADER_FILEMD5S (integer)
RPMREADER_FILELINKTOS (integer)
RPMREADER_FILEFLAGS (integer)
RPMREADER_FILEUSERNAME (integer)
RPMREADER_FILEGROUPNAME (integer)
RPMREADER_ICON (integer)
RPMREADER_SOURCERPM (integer)
RPMREADER_FILEVERIFYFLAGS (integer)
RPMREADER_ARCHIVESIZE (integer)
RPMREADER_PROVIDENAME (integer)
RPMREADER_PROVIDES (integer)
RPMREADER_REQUIREFLAGS (integer)
RPMREADER_REQUIRENAME (integer)
RPMREADER_REQUIREVERSION (integer)
RPMREADER_CONFLICTFLAGS (integer)
RPMREADER_CONFLICTNAME (integer)
RPMREADER_CONFLICTVERSION (integer)
RPMREADER_EXCLUDEARCH (integer)
RPMREADER_EXCLUDEOS (integer)
RPMREADER_EXCLUSIVEARCH (integer)
RPMREADER_EXCLUSIVEOS (integer)
RPMREADER_RPMVERSION (integer)
RPMREADER_TRIGGERSCRIPTS (integer)
RPMREADER_TRIGGERNAME (integer)
RPMREADER_TRIGGERVERSION (integer)
RPMREADER_TRIGGERFLAGS (integer)
RPMREADER_TRIGGERINDEX (integer)
RPMREADER_VERIFYSCRIPT (integer)
RPMREADER_CHANGELOGTIME (integer)
The list of dates from changelog entries.
RPMREADER_CHANGELOGNAME (integer)
The list of changelog entry names.
RPMREADER_CHANGELOGTEXT (integer)
The list of the text from changelog entries.
RPMREADER_PREINPROG (integer)
RPMREADER_POSTINPROG (integer)
RPMREADER_PREUNPROG (integer)
RPMREADER_POSTUNPROG (integer)
RPMREADER_BUILDARCHS (integer)
RPMREADER_OBSOLETENAME (integer)
RPMREADER_OBSOLETES (integer)
RPMREADER_VERIFYSCRIPTPROG (integer)
RPMREADER_TRIGGERSCRIPTPROG (integer)
RPMREADER_COOKIE (integer)
RPMREADER_FILEDEVICES (integer)
RPMREADER_FILEINODES (integer)
RPMREADER_FILELANGS (integer)
RPMREADER_PREFIXES (integer)
RPMREADER_INSTPREFIXES (integer)
RPMREADER_PROVIDEFLAGS (integer)
RPMREADER_PROVIDEVERSION (integer)
RPMREADER_OBSOLETEFLAGS (integer)
RPMREADER_OBSOLETEVERSION (integer)
RPMREADER_DIRINDEXES (integer)
The list of indices that relate directory names to files in the RPM package. This tag is used in conjunction with RPMREADER_BASENAMES and RPMREADER_DIRNAMES to reconstruct filenames in the RPM package stored with the new "CompressedFileNames" method in RPM.
RPMREADER_BASENAMES (integer)
The list of the names of files in the RPM package without path information. This tag is used in conjunction with RPMREADER_DIRINDEXES and RPMREADER_DIRNAMES to reconstruct filenames in the RPM package stored with the new "CompressedFileNames" method in RPM.
RPMREADER_DIRNAMES (integer)
The list of directory names used by files in the RPM package. This tag is used in conjunction with RPMREADER_BASENAMES and RPMREADER_DIRINDEXES to reconstruct filenames in the RPM package stored with the new "CompressedFileNames" method in RPM.
RPMREADER_OPTFLAGS (integer)
RPMREADER_DISTURL (integer)
RPMREADER_PAYLOADFORMAT (integer)
RPMREADER_PAYLOADCOMPRESSOR (integer)
RPMREADER_PAYLOADFLAGS (integer)
RPMREADER_INSTALLCOLOR (integer)
RPMREADER_INSTALLTID (integer)
RPMREADER_REMOVETID (integer)
RPMREADER_RHNPLATFORM (integer)
RPMREADER_PLATFORM (integer)
RPMREADER_PATCHESNAME (integer)
RPMREADER_PATCHESFLAGS (integer)
RPMREADER_PATCHESVERSION (integer)
RPMREADER_CACHECTIME (integer)
RPMREADER_CACHEPKGPATH (integer)
RPMREADER_CACHEPKGSIZE (integer)
RPMREADER_CACHEPKGMTIME (integer)
RPMREADER_FILECOLORS (integer)
RPMREADER_FILECLASS (integer)
RPMREADER_CLASSDICT (integer)
RPMREADER_FILEDEPENDSX (integer)
RPMREADER_FILEDEPENDSN (integer)
RPMREADER_DEPENDSDICT (integer)
RPMREADER_SOURCEPKGID (integer)
RPMREADER_FILECONTEXTS (integer)
RPMREADER_FSCONTEXTS (integer)
RPMREADER_RECONTEXTS (integer)
RPMREADER_POLICIES (integer)
RPMREADER_MAXIMUM (integer)
The maximum valid value of any RPM tag number.

资源类型
范例
RPM Reader


范例

Table of Contents

  • Basic usage
预定义常量
Basic usage
RPM Reader


Basic usage

This example will open an RPM file and read the name, version, and release from the RPM file, echo the results, and close the RPM file.

Example #1 Basic RPMReader Example

<?php

$filename = "/path/to/file.rpm";

// open file
$rpmr = rpm_open($filename);

// get "Name" tag
$name = rpm_get_tag($rpmr, RPMREADER_NAME);

// get "Version" tag
$ver = rpm_get_tag($rpmr, RPMREADER_VERSION);

// get "Release" tag
$rel = rpm_get_tag($rpmr, RPMREADER_RELEASE);

echo "$name-$ver-$rel<br>\n";

// close file
rpm_close($rpmr);

?>
范例
RPM Reader 函数
范例


RPM Reader 函数

Table of Contents

  • rpm_close — Closes an RPM file
  • rpm_get_tag — Retrieves a header tag from an RPM file
  • rpm_is_valid — Tests a filename for validity as an RPM file
  • rpm_open — Opens an RPM file
  • rpm_version — Returns a string representing the current version of the rpmreader extension
Basic usage
rpm_close
RPM Reader


Closes an RPM file

RPM Reader 函数
rpm_get_tag
RPM Reader 函数
PHP Manual

rpm_close

(PECL rpmreader >= 0.1.0)

rpm_close — Closes an RPM file

说明

bool rpm_close ( resource $rpmr )

rpm_close() will close an RPM file pointer.

参数

rpmr

A file pointer resource successfully opened by rpm_open().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 rpm_close() example

<?php

$file = "/path/to/file.rpm";
$rpmr = rpm_open($file);

rpm_close($rpmr);

?>

参见

  • rpm_open() - Opens an RPM file

RPM Reader 函数
rpm_get_tag
RPM Reader 函数


Retrieves a header tag from an RPM file

rpm_close
rpm_is_valid
RPM Reader 函数
PHP Manual

rpm_get_tag

(PECL rpmreader >= 0.1.0)

rpm_get_tag — Retrieves a header tag from an RPM file

说明

mixed rpm_get_tag ( resource $rpmr , int $tagnum )

rpm_get_tag() will retrieve a given tag from the RPM file's header and return it.

参数

rpmr

A file pointer resource successfully opened by rpm_open().

tagnum

The tag number to retrieve from the RPM header. This value can be specified using the list of constants defined by this module.

返回值

The return value can be of various types depending on the tagnum supplied to the function.

范例

Example #1 rpm_get_tag() example

<?php

$file = "/path/to/file.rpm";
$rpmr = rpm_open($file);

$name = rpm_get_tag($rpmr, RPMREADER_NAME);
echo "$name<br>\n";

rpm_close($rpmr);

?>

参见

  • rpm_open() - Opens an RPM file
  • rpm_close() - Closes an RPM file

rpm_close
rpm_is_valid
RPM Reader 函数


Tests a filename for validity as an RPM file

rpm_get_tag
rpm_open
RPM Reader 函数
PHP Manual

rpm_is_valid

(PECL rpmreader >= 0.1.0)

rpm_is_valid — Tests a filename for validity as an RPM file

说明

bool rpm_is_valid ( string $filename )

rpm_is_valid() will test an RPM file for validity as an RPM file. This is not the same as rpm_open() as it only checks the file for validity but does not return a file pointer to be used by further functions.

参数

filename

The filename of the RPM file you wish to check for validity.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 rpm_is_valid() example

<?php

$file = "/path/to/file.rpm";

if (rpm_is_valid($file)) {
    echo "File is recognized as an RPM file.<br>\n";
}
else {
    echo "File is not recognized as an RPM file.<br>\n";
}

?>

rpm_get_tag
rpm_open
RPM Reader 函数


Opens an RPM file

rpm_is_valid
rpm_version
RPM Reader 函数
PHP Manual

rpm_open

(PECL rpmreader >= 0.1.0)

rpm_open — Opens an RPM file

说明

resource rpm_open ( string $filename )

rpm_open() will open an RPM file and will determine if the file is a valid RPM file.

参数

filename

The filename of the RPM file you wish to open.

返回值

If the open succeeds, then rpm_open() will return a file pointer resource to the newly opened file. On error, the function will return FALSE.

范例

Example #1 rpm_open() example

<?php

$file = "/path/to/file.rpm";
$rpmr = rpm_open($file);

rpm_close($rpmr);

?>

参见

  • rpm_close() - Closes an RPM file

rpm_is_valid
rpm_version
RPM Reader 函数


Returns a string representing the current version of the rpmreader extension

rpm_open
进程控制扩展
RPM Reader 函数
PHP Manual

rpm_version

(PECL rpmreader >= 0.3.0)

rpm_version — Returns a string representing the current version of the rpmreader extension

说明

string rpm_version ( void )

rpm_version() will return the current version of the rpmreader extension.

返回值

rpm_version() will return a string representing the rpmreader version currently loaded in PHP.

范例

Example #1 rpm_version() example

<?php

$rpmr_ver = rpm_version();

echo "$rpmr_ver<br />\n";

?>

rpm_open
进程控制扩展
RPM Reader 函数


进程控制扩展

  • Eio
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Eio 函数
  • Ev
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Watchers
    • Watcher callbacks
    • Periodic watcher operation modes
    • Ev — The Ev class
    • EvCheck — The EvCheck class
    • EvChild — The EvChild class
    • EvEmbed — The EvEmbed class
    • EvFork — The EvFork class
    • EvIdle — The EvIdle class
    • EvIo — The EvIo class
    • EvLoop — The EvLoop class
    • EvPeriodic — The EvPeriodic class
    • EvPrepare — The EvPrepare class
    • EvSignal — The EvSignal class
    • EvStat — The EvStat class
    • EvTimer — The EvTimer class
    • EvWatcher — The EvWatcher class
  • Expect
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Expect 函数
  • Libevent
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Libevent 函数
  • PCNTL — 进程控制
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • PCNTL 函数
  • POSIX
    • 简介
    • 安装／配置
    • 预定义常量
    • POSIX 函数
  • 程序执行 — 系统程序执行
    • 简介
    • 安装／配置
    • 预定义常量
    • 程序执行 函数
  • pthreads
    • 简介
    • 安装／配置
    • 预定义常量
    • Threaded — Threaded 类
    • Thread — Thread 类
    • Worker — Worker 类
    • Collectable — The Collectable interface
    • Modifiers — 方法修饰符
    • Pool — Pool 类
    • Mutex — Mutex 类
    • Cond — Cond 类
  • Semaphore — Semaphore, Shared Memory and IPC
    • 简介
    • 安装／配置
    • 预定义常量
    • Semaphore 函数
  • Shared Memory
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Shared Memory 函数
  • Sync
    • 简介
    • 安装／配置
    • 预定义常量
    • SyncMutex — The SyncMutex class
    • SyncSemaphore — The SyncSemaphore class
    • SyncEvent — The SyncEvent class
    • SyncReaderWriter — The SyncReaderWriter class
    • SyncSharedMemory — The SyncSharedMemory class
rpm_version
Eio
函数参考


Eio

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • Eio 函数
    • eio_busy — Artificially increase load. Could be useful in tests, benchmarking.
    • eio_cancel — Cancels a request
    • eio_chmod — Change file/direcrory permissions.
    • eio_chown — Change file/direcrory permissions.
    • eio_close — Close file
    • eio_custom — Execute custom request like any other eio_* call.
    • eio_dup2 — Duplicate a file descriptor
    • eio_event_loop — Polls libeio until all requests proceeded
    • eio_fallocate — Allows the caller to directly manipulate the allocated disk space for a file
    • eio_fchmod — Change file permissions.
    • eio_fchown — Change file ownership
    • eio_fdatasync — Synchronize a file's in-core state with storage device.
    • eio_fstat — Get file status
    • eio_fstatvfs — Get file system statistics
    • eio_fsync — Synchronize a file's in-core state with storage device
    • eio_ftruncate — Truncate a file
    • eio_futime — Change file last access and modification times
    • eio_get_event_stream — Get stream representing a variable used in internal communications with libeio.
    • eio_get_last_error — Returns string describing the last error associated with a request resource
    • eio_grp_add — Adds a request to the request group.
    • eio_grp_cancel — Cancels a request group
    • eio_grp_limit — Set group limit
    • eio_grp — Creates a request group.
    • eio_init — (Re-)initialize Eio
    • eio_link — Create a hardlink for file
    • eio_lstat — Get file status
    • eio_mkdir — Create directory
    • eio_mknod — Create a special or ordinary file.
    • eio_nop — Does nothing, except go through the whole request cycle.
    • eio_npending — Returns number of finished, but unhandled requests
    • eio_nready — Returns number of not-yet handled requests
    • eio_nreqs — Returns number of requests to be processed
    • eio_nthreads — Returns number of threads currently in use
    • eio_open — Opens a file
    • eio_poll — Can be to be called whenever there are pending requests that need finishing.
    • eio_read — Read from a file descriptor at given offset.
    • eio_readahead — Perform file readahead into page cache
    • eio_readdir — Reads through a whole directory
    • eio_readlink — Read value of a symbolic link.
    • eio_realpath — Get the canonicalized absolute pathname.
    • eio_rename — Change the name or location of a file.
    • eio_rmdir — Remove a directory
    • eio_seek — Repositions the offset of the open file associated with the fd argument to the argument offset according to the directive whence
    • eio_sendfile — Transfer data between file descriptors
    • eio_set_max_idle — Set maximum number of idle threads.
    • eio_set_max_parallel — Set maximum parallel threads
    • eio_set_max_poll_reqs — Set maximum number of requests processed in a poll.
    • eio_set_max_poll_time — Set maximum poll time
    • eio_set_min_parallel — Set minimum parallel thread number
    • eio_stat — Get file status
    • eio_statvfs — Get file system statistics
    • eio_symlink — Create a symbolic link
    • eio_sync_file_range — Sync a file segment with disk
    • eio_sync — Commit buffer cache to disk
    • eio_syncfs — Calls Linux' syncfs syscall, if available
    • eio_truncate — Truncate a file
    • eio_unlink — Delete a name and possibly the file it refers to
    • eio_utime — Change file last access and modification times.
    • eio_write — Write to file
进程控制扩展
简介
进程控制扩展


简介

This extension provides asyncronous POSIX I/O by means of » libeio C library written by Marc Lehmann.

Note: 此扩展在 Windows 平台上不可用。

Warning

It is important to aware that each request is executed in a thread, and the order of execution of continuously queued requests basically is unpredictable. For instance, the following piece of code is incorrect.

Example #1 Incorrect requests

<?php
// Request to create symlink of $filename to $link
eio_symlink($filename, $link);

// Request to move $filename to $new_filename
eio_rename($filename, $new_filename);

// Process requests
eio_event_loop();
?>
In the example above eio_rename() request may finish before eio_symlink(). To fix it you might call eio_rename() in the callback of eio_symlink():

Example #2 Calling request from a request callback

<?php
function my_symlink_done($filename, $result) {
 // Request to move $filename to $new_filename
 eio_rename($filename, "/path/to/new-name");

 // Process requests
 eio_event_loop();
}

// Request to create symlink of $filename to $link
eio_symlink($filename, $link, EIO_PRI_DEFAULT, "my_symlink_done", $filename);

// Process requests
eio_event_loop();
?>
Alternatively, you might want to create a request group:

Example #3 Calling request from a request callback

<?php
/* Is called when the group requests are done */
function my_grp_done($data, $result) {
 // ...
}

function my_symlink_done($filename, $result) {
 // Create eio_rename request and add it to the group
 $req = eio_rename($filename, "/path/to/new-name");
 eio_grp_add($grp, $req);
 // You might want to add more requests...
}

// Create a request group
$grp = eio_grp("my_grp_done", "my_grp_data");

// Create eio_symlink request and add it to the group
// Pass $filename to the callback
$req = eio_symlink($filename, $link,
  EIO_PRI_DEFAULT, "my_symlink_done", $filename);
eio_grp_add($grp, $req);

// Process requests
eio_event_loop();
?>
Group is a special kind of request that could accumulate a set of regular eio requests. This could be used to create a complex request that opens, reads and closes a file.

Since version 0.3.0 alpha, a variable used in communications with libeio internally, could be retrieved with eio_get_event_stream(). The variable could be used to bind to an event loop supported by some other extension. You might organize a simple event loop where eio and libevent work together:

Example #4 Using eio with libevent

<?php
function my_eio_poll($fd, $events, $arg) {
    /* Some libevent regulation might go here .. */
    if (eio_nreqs()) {
        eio_poll();
    }
    /* .. and here */
}

function my_res_cb($d, $r) {
    var_dump($r); var_dump($d);
}

$base = event_base_new();
$event = event_new();

// This stream is used to bind with libevent
$fd = eio_get_event_stream();

eio_nop(EIO_PRI_DEFAULT, "my_res_cb", "nop data");
eio_mkdir("/tmp/abc-eio-temp", 0750, EIO_PRI_DEFAULT, "my_res_cb", "mkdir data");
/* some other eio_* calls here ... */

// set event flags
event_set($event, $fd, EV_READ /*| EV_PERSIST*/, "my_eio_poll", array($event, $base));

// set event base
event_base_set($event, $base);

// enable event
event_add($event);

// start event loop
event_base_loop($base);

/* The same will be available via buffered libevent interface */
?>

Eio
安装／配置
Eio


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Eio


需求

This extension has » libeio library embedded. So you do NOT need to install libeio separately.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/eio.

For information about manual installation, please read the file INSTALL included in the package.

需求
运行时配置
安装／配置


资源类型

There are two resource types in this extension: request and request group.

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

Request priority constants:

EIO_PRI_MIN (integer)
Request minimal prioriry
EIO_PRI_DEFAULT (integer)
Request default prioriry
EIO_PRI_MAX (integer)
Request maximal prioriry

eio_seek() whence argument:

EIO_SEEK_SET (integer)
The offset is set to specified number of bytes(offset).
EIO_SEEK_CUR (integer)
The offset is set to its current location plus offset bytes.
EIO_SEEK_END (integer)
The offset is set to the size of the file plus offset bytes.

Flags used with eio_readdir():

EIO_READDIR_DENTS (integer)
eio_readdir() flag. If specified, the result argument of the callback becomes an array with the following keys: 'names' - array of directory names 'dents' - array of struct eio_dirent-like arrays having the following keys each: 'name' - the directory name; 'type' - one of EIO_DT_* constants; 'inode' - the inode number, if available, otherwise unspecified;
EIO_READDIR_DIRS_FIRST (integer)
When this flag is specified, the names will be returned in an order where likely directories come first, in optimal stat order.
EIO_READDIR_STAT_ORDER (integer)
When this flag is specified, then the names will be returned in an order suitable for stat'ing each one. When planning to stat() all files in the given directory, the returned order will likely be fastest.
EIO_READDIR_FOUND_UNKNOWN (integer)
EIO_DT_UNKNOWN (integer)
Unknown node type(very common). Further stat() needed.
EIO_DT_FIFO (integer)
FIFO node type
EIO_DT_CHR (integer)
Node type
EIO_DT_MPC (integer)
Multiplexed char device (v7+coherent) node type
EIO_DT_DIR (integer)
Directory node type
EIO_DT_NAM (integer)
Xenix special named file node type
EIO_DT_BLK (integer)
Node type
EIO_DT_MPB (integer)
Multiplexed block device (v7+coherent)
EIO_DT_REG (integer)
Node type
EIO_DT_NWK (integer)
EIO_DT_CMP (integer)
HP-UX network special node type
EIO_DT_LNK (integer)
Link node type
EIO_DT_SOCK (integer)
Socket node type
EIO_DT_DOOR (integer)
Solaris door node type
EIO_DT_WHT (integer)
Node type
EIO_DT_MAX (integer)
Highest node type value

Access modes for eio_open() flags argument:

EIO_O_RDONLY (integer)
EIO_O_WRONLY (integer)
EIO_O_RDWR (integer)
EIO_O_NONBLOCK (integer)
EIO_O_APPEND (integer)
EIO_O_CREAT (integer)
EIO_O_TRUNC (integer)
EIO_O_EXCL (integer)
EIO_O_FSYNC (integer)

mode argument flags for eio_open():

EIO_S_IRUSR (integer)
EIO_S_IWUSR (integer)
EIO_S_IXUSR (integer)
EIO_S_IRGRP (integer)
EIO_S_IWGRP (integer)
EIO_S_IXGRP (integer)
EIO_S_IROTH (integer)
EIO_S_IWOTH (integer)
EIO_S_IXOTH (integer)
EIO_S_IFREG (integer)
EIO_S_IFCHR (integer)
EIO_S_IFBLK (integer)
EIO_S_IFIFO (integer)
EIO_S_IFSOCK (integer)

eio_sync_file_range() flags:

EIO_SYNC_FILE_RANGE_WAIT_BEFORE (integer)
EIO_SYNC_FILE_RANGE_WRITE (integer)
EIO_SYNC_FILE_RANGE_WAIT_AFTER (integer)

eio_fallocate() flags:

EIO_FALLOC_FL_KEEP_SIZE (integer)

Note:

EIO_S_I* constants have the same meaning as their S_I* POSIX counterparts.

Note:

EIO_SYNC_FILE_* constants have the same meaning as their SYNC_FILE_** counterparts.

Note:

EIO_O_* constants have the same meaning as their O_* POSIX counterparts.

资源类型
范例
Eio


范例

Example #1 Cancelling a request

<?php
 /* Is called when eio_nop() finished */
 function my_nop_cb($data, $result) {
  echo "my_nop ", $data, "\n";
 }

// This eio_nop() call will be cancelled
$req = eio_nop(EIO_PRI_DEFAULT, "my_nop_cb", "1");
var_dump($req);
eio_cancel($req);

// This time eio_nop() will be processed
eio_nop(EIO_PRI_DEFAULT, "my_nop_cb", "2");

// Process requests
eio_event_loop();
?>

以上例程的输出类似于：

resource(4) of type (EIO Request Descriptor)
my_nop 2

Example #2 Calling eio_chmod()

<?php
$temp_filename = dirname(__FILE__) ."/eio-temp-file.tmp";
touch($temp_filename);

/* Is called when eio_chmod() finished */
function my_chmod_callback($data, $result) {
    global $temp_filename;

    if ($result == 0 && !is_readable($temp_filename) && is_writable($temp_filename)) {
        echo "eio_chmod_ok";
    }

    @unlink($temp_filename);
}

eio_chmod($temp_filename, 0200, EIO_PRI_DEFAULT, "my_chmod_callback");
eio_event_loop();
?>

以上例程的输出类似于：

eio_chmod_ok

Example #3 Making a custom request

<?php
/* Callback for the custom callback */
function my_custom_callback($data, $result) {
    var_dump($data);
    var_dump(count($result));
    var_dump($result['data_modified']);
    var_dump($result['result']);
}

/* The custom request */
function my_custom($data) {
    var_dump($data);

    $result  = array(
        'result'        => 1001,
        'data_modified' => "my custom data",
    );

    return $result;
}

$data = "my_custom_data";
$req = eio_custom("my_custom", EIO_PRI_DEFAULT, "my_custom_callback", $data);
var_dump($req);
eio_event_loop();
?>

以上例程的输出类似于：

resource(4) of type (EIO Request Descriptor)
string(14) "my_custom_data"
string(14) "my_custom_data"
int(2)
string(14) "my custom data"
int(1001)

Example #4 Grouping requests

<?php
/*
 * Create a group request to open, read and close a file
 */

$temp_filename = dirname(__FILE__) ."/eio-file.tmp";
$fp = fopen($temp_filename, "w");
fwrite($fp, "some data");
fclose($fp);

/* Is called when the group requests are done */
function my_grp_done($data, $result) {
 global $temp_filename;
 var_dump($result == 0);
 @unlink($temp_filename);
}

/* Is called when eio_open() done */
function my_grp_file_opened_callback($data, $result) {
 global $my_file_fd, $grp;

 $my_file_fd = $result;

 var_dump($result > 0);

 // Create eio_read() request and add it to the group
 $req = eio_read($my_file_fd, 4, 0, EIO_PRI_DEFAULT, "my_grp_file_read_callback");
 eio_grp_add($grp, $req);
}

/* Is called when eio_read() done */
function my_grp_file_read_callback($data, $result) {
 global $my_file_fd, $grp;

 var_dump($result);

 // Create eio_close() request and add it to the group
 $req = eio_close($my_file_fd);
 eio_grp_add($grp, $req);
}

$grp = eio_grp("my_grp_done", "my_grp_data");

// Create eio_open() request and add it to the group
$req = eio_open($temp_filename, EIO_O_RDWR | EIO_O_APPEND , NULL,
  EIO_PRI_DEFAULT, "my_grp_file_opened_callback", NULL);
eio_grp_add($grp, $req);
var_dump($grp);

eio_event_loop();
?>

以上例程的输出类似于：

resource(6) of type (EIO Group Descriptor)
bool(true)
string(4) "some"
bool(true)

Example #5 Using eio with libevent extension

<?php
function my_eio_poll($fd, $events, $arg) {
    /* Some libevent regulation might go here .. */
    if (eio_nreqs()) {
        eio_poll();
    }
    /* .. and here */
}

function my_nop_cb($d, $r) {
    var_dump($r); var_dump($d);
}

$base = event_base_new();
$event = event_new();

$fd = eio_get_event_stream();
var_dump($fd);

eio_nop(EIO_PRI_DEFAULT, "my_nop_cb", "nop data");
eio_mkdir("/tmp/abc-eio-temp", 0750, EIO_PRI_DEFAULT, "my_nop_cb", "nop data");
/* some other eio_* calls here ... */

// set event flags
event_set($event, $fd, EV_READ /*| EV_PERSIST*/, "my_eio_poll", array($event, $base));

// set event base
event_base_set($event, $base);

// enable event
event_add($event);

// start event loop
event_base_loop($base);

/* The same will be available via buffered libevent interface */
?>

以上例程的输出类似于：

int(3)
int(0)
string(8) "nop data"
int(0)
string(10) "mkdir data"

Example #6 Using eio with event extension

<?php
$base = new EventBase();

// Retrieve eio polling stream.
// Note, this variable should be alive as long as the event loop is running.
$eio_stream = eio_get_event_stream();

// Bind eio polling stream to the event loop.
$poll_event = new Event($base, $eio_stream, Event::READ, function () {
  if (eio_nreqs()) {
    eio_poll();
  }
});
$poll_event->add();

// Add eio jobs
eio_nop(EIO_PRI_DEFAULT, function () {
  echo "eio_nop\n";
});

// Add events
$timer = Event::timer($base, function () {
  echo "2 seconds elapsed\n";
});
$timer->add(2);

// Dispatch events.
$base->dispatch();
?>

以上例程的输出类似于：

eio_nop
2 seconds elapsed

预定义常量
Eio 函数
Eio


Eio 函数

Table of Contents

  • eio_busy — Artificially increase load. Could be useful in tests, benchmarking.
  • eio_cancel — Cancels a request
  • eio_chmod — Change file/direcrory permissions.
  • eio_chown — Change file/direcrory permissions.
  • eio_close — Close file
  • eio_custom — Execute custom request like any other eio_* call.
  • eio_dup2 — Duplicate a file descriptor
  • eio_event_loop — Polls libeio until all requests proceeded
  • eio_fallocate — Allows the caller to directly manipulate the allocated disk space for a file
  • eio_fchmod — Change file permissions.
  • eio_fchown — Change file ownership
  • eio_fdatasync — Synchronize a file's in-core state with storage device.
  • eio_fstat — Get file status
  • eio_fstatvfs — Get file system statistics
  • eio_fsync — Synchronize a file's in-core state with storage device
  • eio_ftruncate — Truncate a file
  • eio_futime — Change file last access and modification times
  • eio_get_event_stream — Get stream representing a variable used in internal communications with libeio.
  • eio_get_last_error — Returns string describing the last error associated with a request resource
  • eio_grp_add — Adds a request to the request group.
  • eio_grp_cancel — Cancels a request group
  • eio_grp_limit — Set group limit
  • eio_grp — Creates a request group.
  • eio_init — (Re-)initialize Eio
  • eio_link — Create a hardlink for file
  • eio_lstat — Get file status
  • eio_mkdir — Create directory
  • eio_mknod — Create a special or ordinary file.
  • eio_nop — Does nothing, except go through the whole request cycle.
  • eio_npending — Returns number of finished, but unhandled requests
  • eio_nready — Returns number of not-yet handled requests
  • eio_nreqs — Returns number of requests to be processed
  • eio_nthreads — Returns number of threads currently in use
  • eio_open — Opens a file
  • eio_poll — Can be to be called whenever there are pending requests that need finishing.
  • eio_read — Read from a file descriptor at given offset.
  • eio_readahead — Perform file readahead into page cache
  • eio_readdir — Reads through a whole directory
  • eio_readlink — Read value of a symbolic link.
  • eio_realpath — Get the canonicalized absolute pathname.
  • eio_rename — Change the name or location of a file.
  • eio_rmdir — Remove a directory
  • eio_seek — Repositions the offset of the open file associated with the fd argument to the argument offset according to the directive whence
  • eio_sendfile — Transfer data between file descriptors
  • eio_set_max_idle — Set maximum number of idle threads.
  • eio_set_max_parallel — Set maximum parallel threads
  • eio_set_max_poll_reqs — Set maximum number of requests processed in a poll.
  • eio_set_max_poll_time — Set maximum poll time
  • eio_set_min_parallel — Set minimum parallel thread number
  • eio_stat — Get file status
  • eio_statvfs — Get file system statistics
  • eio_symlink — Create a symbolic link
  • eio_sync_file_range — Sync a file segment with disk
  • eio_sync — Commit buffer cache to disk
  • eio_syncfs — Calls Linux' syncfs syscall, if available
  • eio_truncate — Truncate a file
  • eio_unlink — Delete a name and possibly the file it refers to
  • eio_utime — Change file last access and modification times.
  • eio_write — Write to file
范例
eio_busy
Eio


Artificially increase load. Could be useful in tests, benchmarking.

Eio 函数
eio_cancel
Eio 函数
PHP Manual

eio_busy

(PECL eio >= 0.0.1dev)

eio_busy — Artificially increase load. Could be useful in tests, benchmarking.

说明

resource eio_busy ( int $delay [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

eio_busy() artificially increases load taking delay seconds to execute. May be used for debugging, or benchmarking.

参数

delay

Delay in seconds

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

This callback is called when all the group requests are done.

data

Arbitrary variable passed to callback.

返回值

eio_busy() returns request resource on success or FALSE on error.

参见

  • eio_nop
Eio 函数
eio_cancel
Eio 函数


Cancels a request

eio_busy
eio_chmod
Eio 函数
PHP Manual

eio_cancel

(PECL eio >= 0.0.1dev)

eio_cancel — Cancels a request

说明

void eio_cancel ( resource $req )

eio_cancel() cancels a request specified by req

参数

req

The request resource

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

没有返回值。

范例

Example #1 eio_cancel() example

<?php
 /* Is called when eio_nop() finished */
 function my_nop_cb($data, $result) {
  echo "my_nop ", $data, "\n";
 }

// This eio_nop() call will be cancelled
$req = eio_nop(EIO_PRI_DEFAULT, "my_nop_cb", "1");
var_dump($req);
eio_cancel($req);

// This time eio_nop() will be processed
eio_nop(EIO_PRI_DEFAULT, "my_nop_cb", "2");

// Process requests
eio_event_loop();
?>

以上例程的输出类似于：

resource(4) of type (EIO Request Descriptor)
my_nop 2

参见

  • eio_grp_cancel
eio_busy
eio_chmod
Eio 函数


Change file/direcrory permissions.

eio_cancel
eio_chown
Eio 函数
PHP Manual

eio_chmod

(PECL eio >= 0.0.1dev)

eio_chmod — Change file/direcrory permissions.

说明

resource eio_chmod ( string $path , int $mode [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

eio_chmod() changes file, or direcrory permissions. The new permissions are specified by mode.

参数

path

Path to the target file or directory

Warning

避免相对路径。

mode

The new permissions. E.g. 0644.

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_chmod() returns request resource on success or FALSE on error.

参见

  • eio_chown
eio_cancel
eio_chown
Eio 函数


Change file/direcrory permissions.

eio_chmod
eio_close
Eio 函数
PHP Manual

eio_chown

(PECL eio >= 0.0.1dev)

eio_chown — Change file/direcrory permissions.

说明

resource eio_chown ( string $path , int $uid [, int $gid = -1 [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]]] )

Changes file, or directory permissions.

参数

path

Path to file or directory.

Warning

避免相对路径。

uid

User ID. Is ignored when equal to -1.

gid

Group ID. Is ignored when equal to -1.

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_chown() returns request resource on success or FALSE on error.

参见

  • eio_chmod
eio_chmod
eio_close
Eio 函数


Close file

eio_chown
eio_custom
Eio 函数
PHP Manual

eio_close

(PECL eio >= 0.0.1dev)

eio_close — Close file

说明

resource eio_close ( mixed $fd [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

eio_close() closes file specified by fd.

参数

fd

Stream, Socket resource, or numeric file descriptor

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_close() returns request resource on success or FALSE on error.

参见

  • eio_open
eio_chown
eio_custom
Eio 函数


Execute custom request like any other eio_* call.

eio_close
eio_dup2
Eio 函数
PHP Manual

eio_custom

(PECL eio >= 0.0.1dev)

eio_custom — Execute custom request like any other eio_* call.

说明

resource eio_custom ( callable $execute , int $pri , callable $callback [, mixed $data = NULL ] )

eio_custom() executes custom function specified by execute processing it just like any other eio_* call.

参数

execute

Specifies the request function that should match the following prototype:

      mixed execute(mixed data);
callback is event completion callback that should match the following prototype:
      void callback(mixed data, mixed result);
data is the data passed to execute via data argument without modifications result value returned by execute

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_custom() returns request resource on success or FALSE on error.

范例

Example #1 eio_custom() example

<?php
/* Callback for the custom callback */
function my_custom_callback($data, $result) {
    var_dump($data);
    var_dump(count($result));
    var_dump($result['data_modified']);
    var_dump($result['result']);
}

/* The custom request */
function my_custom($data) {
    var_dump($data);

    $result  = array(
        'result'        => 1001,
        'data_modified' => "my custom data",
    );

    return $result;
}

$data = "my_custom_data";
$req = eio_custom("my_custom", EIO_PRI_DEFAULT, "my_custom_callback", $data);
var_dump($req);
eio_event_loop();
?>

以上例程的输出类似于：

resource(4) of type (EIO Request Descriptor)
string(14) "my_custom_data"
string(14) "my_custom_data"
int(2)
string(14) "my custom data"
int(1001)
eio_close
eio_dup2
Eio 函数


Duplicate a file descriptor

eio_custom
eio_event_loop
Eio 函数
PHP Manual

eio_dup2

(PECL eio >= 0.0.1dev)

eio_dup2 — Duplicate a file descriptor

说明

resource eio_dup2 ( mixed $fd , mixed $fd2 [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

eio_dup2() duplicates file descriptor.

参数

fd

Source stream, Socket resource, or numeric file descriptor

fd2

Target stream, Socket resource, or numeric file descriptor

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_dup2() returns request resource on success or FALSE on error.

eio_custom
eio_event_loop
Eio 函数


Polls libeio until all requests proceeded

eio_dup2
eio_fallocate
Eio 函数
PHP Manual

eio_event_loop

(PECL eio >= 0.0.1dev)

eio_event_loop — Polls libeio until all requests proceeded

说明

bool eio_event_loop ( void )

eio_event_loop() polls libeio until all requests proceeded.

参数

此函数没有参数。

返回值

eio_event_loop() returns TRUE on success or FALSE on error.

范例

Example #1 eio_event_loop() example

<?php
$temp_filename = "eio-temp-file.tmp";
touch($temp_filename);

/* Is called when eio_chmod() finished */
function my_chmod_callback($data, $result) {
    global $temp_filename;

    if ($result == 0 && !is_readable($temp_filename) && is_writable($temp_filename)) {
        echo "eio_chmod_ok";
    }

    @unlink($temp_filename);
}

eio_chmod($temp_filename, 0200, EIO_PRI_DEFAULT, "my_chmod_callback");
eio_event_loop();
?>

以上例程的输出类似于：

eio_chmod_ok

参见

  • eio_poll
eio_dup2
eio_fallocate
Eio 函数


Allows the caller to directly manipulate the allocated disk space for a file

eio_event_loop
eio_fchmod
Eio 函数
PHP Manual

eio_fallocate

(PECL eio >= 0.0.1dev)

eio_fallocate — Allows the caller to directly manipulate the allocated disk space for a file

说明

resource eio_fallocate ( mixed $fd , int $mode , int $offset , int $length [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

eio_fallocate() allows the caller to directly manipulate the allocated disk space for the file specified by fd file descriptor for the byte range starting at offset and continuing for length bytes.

Note: File should be opened for writing

EIO_O_CREAT should be logically OR'd with EIO_O_WRONLY, or EIO_O_RDWR

参数

fd

Stream, Socket resource, or numeric file descriptor, e.g. returned by eio_open().

mode

Currently only one flag is supported for mode: EIO_FALLOC_FL_KEEP_SIZE (the same as POSIX constant FALLOC_FL_KEEP_SIZE).

offset

Specifies start of the byte range.

length

Specifies length the byte range.

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_fallocate() returns request resource on success or FALSE on error.

eio_event_loop
eio_fchmod
Eio 函数


Change file permissions.

eio_fallocate
eio_fchown
Eio 函数
PHP Manual

eio_fchmod

(PECL eio >= 0.0.1dev)

eio_fchmod — Change file permissions.

说明

resource eio_fchmod ( mixed $fd , int $mode [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

eio_fchmod() changes permissions for the file specified by fd file descriptor.

参数

fd

Stream, Socket resource, or numeric file descriptor, e.g. returned by eio_open().

mode

The new permissions. E.g. 0644.

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_fchmod() returns request resource on success or FALSE on error.

参见

  • eio_fchown
eio_fallocate
eio_fchown
Eio 函数


Change file ownership

eio_fchmod
eio_fdatasync
Eio 函数
PHP Manual

eio_fchown

(PECL eio >= 0.0.1dev)

eio_fchown — Change file ownership

说明

resource eio_fchown ( mixed $fd , int $uid [, int $gid = -1 [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]]] )

eio_fchown() changes ownership of the file specified by fd file descriptor.

参数

fd

Stream, Socket resource, or numeric file descriptor.

uid

User ID. Is ignored when equal to -1.

gid

Group ID. Is ignored when equal to -1.

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

参见

  • eio_fchmod
eio_fchmod
eio_fdatasync
Eio 函数


Synchronize a file's in-core state with storage device.

eio_fchown
eio_fstat
Eio 函数
PHP Manual

eio_fdatasync

(PECL eio >= 0.0.1dev)

eio_fdatasync — Synchronize a file's in-core state with storage device.

说明

resource eio_fdatasync ( mixed $fd [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

eio_fdatasync() synchronizes a file's in-core state with storage device.

参数

fd

Stream, Socket resource, or numeric file descriptor, e.g. returned by eio_open().

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_fdatasync() returns request resource on success or FALSE on error.

eio_fchown
eio_fstat
Eio 函数


Get file status

eio_fdatasync
eio_fstatvfs
Eio 函数
PHP Manual

eio_fstat

(PECL eio >= 0.0.1dev)

eio_fstat — Get file status

说明

resource eio_fstat ( mixed $fd , int $pri , callable $callback [, mixed $data ] )

eio_fstat() returns file status information in result argument of callback

参数

fd

Stream, Socket resource, or numeric file descriptor.

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_busy() returns request resource on success or FALSE on error.

范例

Example #1 eio_lstat() example

<?php
// Create temporary file
$tmp_filename = dirname(__FILE__) ."/eio-file.tmp";
touch($tmp_filename);

/* Is called when eio_fstat() done */
function my_res_cb($data, $result) {
 // Should output array with stat info
 var_dump($result);

 if ($data['fd']) {
  // Close temporary file
  eio_close($data['fd']);
  eio_event_loop();
 }
 // Remove temporary file
 @unlink($data['file']);
}

/* Is called when eio_open() done */
function my_open_cb($data, $result) {
 // Prepare data for callback
 $d = array(
  'fd'  => $result,
  'file'=> $data
 );
 // Request stat info
 eio_fstat($result, EIO_PRI_DEFAULT, "my_res_cb", $d);
 // Process request(s)
 eio_event_loop();
}

// Open temporary file
eio_open($tmp_filename, EIO_O_RDONLY, NULL, EIO_PRI_DEFAULT,
  "my_open_cb", $tmp_filename);
eio_event_loop();
?>

以上例程的输出类似于：

array(12) {
 ["st_dev"]=>
  int(2050)
  ["st_ino"]=>
  int(2489159)
  ["st_mode"]=>
  int(33188)
  ["st_nlink"]=>
  int(1)
  ["st_uid"]=>
  int(1000)
  ["st_gid"]=>
  int(100)
  ["st_rdev"]=>
  int(0)
  ["st_blksize"]=>
  int(4096)
  ["st_blocks"]=>
  int(0)
  ["st_atime"]=>
  int(1318239506)
  ["st_mtime"]=>
  int(1318239506)
  ["st_ctime"]=>
  int(1318239506)
}

参见

  • eio_lstat
  • eio_stat
eio_fdatasync
eio_fstatvfs
Eio 函数


Get file system statistics

eio_fstat
eio_fsync
Eio 函数
PHP Manual

eio_fstatvfs

(PECL eio >= 0.0.1dev)

eio_fstatvfs — Get file system statistics

说明

resource eio_fstatvfs ( mixed $fd , int $pri , callable $callback [, mixed $data ] )

eio_fstatvfs() returns file system statistics in result of callback.

参数

fd

A file descriptor of a file within the mounted file system.

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_fstatvfs() returns request resource on success or FALSE on error.

参见

  • eio_statvfs
eio_fstat
eio_fsync
Eio 函数


Synchronize a file's in-core state with storage device

eio_fstatvfs
eio_ftruncate
Eio 函数
PHP Manual

eio_fsync

(PECL eio >= 0.0.1dev)

eio_fsync — Synchronize a file's in-core state with storage device

说明

resource eio_fsync ( mixed $fd [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

Synchronize a file's in-core state with storage device

参数

fd

Stream, Socket resource, or numeric file descriptor.

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_fsync() returns request resource on success or FALSE on error.

参见

  • eio_sync
eio_fstatvfs
eio_ftruncate
Eio 函数


Truncate a file

eio_fsync
eio_futime
Eio 函数
PHP Manual

eio_ftruncate

(PECL eio >= 0.0.1dev)

eio_ftruncate — Truncate a file

说明

resource eio_ftruncate ( mixed $fd [, int $offset = 0 [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]]] )

eio_ftruncate() causes a regular file referenced by fd file descriptor to be truncated to precisely length bytes.

参数

fd

Stream, Socket resource, or numeric file descriptor.

offset

Offset from beginning of the file

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_ftruncate() returns request resource on success or FALSE on error.

参见

  • eio_truncate
eio_fsync
eio_futime
Eio 函数


Change file last access and modification times

eio_ftruncate
eio_get_event_stream
Eio 函数
PHP Manual

eio_futime

(PECL eio >= 0.0.1dev)

eio_futime — Change file last access and modification times

说明

resource eio_futime ( mixed $fd , float $atime , float $mtime [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

eio_futime() changes file last access and modification times.

参数

fd

Stream, Socket resource, or numeric file descriptor, e.g. returned by eio_open()

atime

Access time

mtime

Modification time

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_futime() returns request resource on success or FALSE on error.

参见

  • eio_utime
eio_ftruncate
eio_get_event_stream
Eio 函数


Get stream representing a variable used in internal communications with libeio.

eio_futime
eio_get_last_error
Eio 函数
PHP Manual

eio_get_event_stream

(PECL eio >= 0.3.1b)

eio_get_event_stream — Get stream representing a variable used in internal communications with libeio.

说明

mixed eio_get_event_stream ( void )

eio_get_event_stream() acquires stream representing a variable used in internal communications with libeio. Could be used to bind with some event loop provided by other PECL extension, for example libevent.

参数

此函数没有参数。

返回值

eio_get_event_stream() returns stream on success; otherwise, NULL

范例

Example #1 Using eio with libevent

<?php
function my_eio_poll($fd, $events, $arg) {
    /* Some libevent regulation might go here .. */
    if (eio_nreqs()) {
        eio_poll();
    }
    /* .. and here */
}

function my_res_cb($d, $r) {
    var_dump($r); var_dump($d);
}

$base = event_base_new();
$event = event_new();

$fd = eio_get_event_stream();
var_dump($fd);

eio_nop(EIO_PRI_DEFAULT, "my_res_cb", "nop data");
eio_mkdir("/tmp/abc-eio-temp", 0750, EIO_PRI_DEFAULT, "my_res_cb", "mkdir data");
/* some other eio_* calls here ... */

// set event flags
event_set($event, $fd, EV_READ /*| EV_PERSIST*/, "my_eio_poll", array($event, $base));

// set event base
event_base_set($event, $base);

// enable event
event_add($event);

// start event loop
event_base_loop($base);

/* The same will be available via buffered libevent interface */
?>

以上例程的输出类似于：

int(3)
int(0)
string(8) "nop data"
int(0)
string(10) "mkdir data"
eio_futime
eio_get_last_error
Eio 函数


Returns string describing the last error associated with a request resource

eio_get_event_stream
eio_grp_add
Eio 函数
PHP Manual

eio_get_last_error

(PECL eio >= 1.0.0)

eio_get_last_error — Returns string describing the last error associated with a request resource

说明

string eio_get_last_error ( resource $req )

eio_get_last_error() returns string describing the last error associated with req.

参数

req

The request resource

返回值

eio_get_last_error() returns string describing the last error associated with the request resource specified by req.

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

eio_get_event_stream
eio_grp_add
Eio 函数


Adds a request to the request group.

eio_get_last_error
eio_grp_cancel
Eio 函数
PHP Manual

eio_grp_add

(PECL eio >= 0.0.1dev)

eio_grp_add — Adds a request to the request group.

说明

void eio_grp_add ( resource $grp , resource $req )

eio_grp_add() adds a request to the request group.

参数

grp

The request group resource returned by eio_grp()

req

The request resource

返回值

eio_grp_add() doesn't return a value.

范例

Example #1 Grouping requests

<?php
/*
 * Create a group request to open, read and close a file
 */

// Create temporary file and write some bytes to it
$temp_filename = dirname(__FILE__) ."/eio-file.tmp";
$fp = fopen($temp_filename, "w");
fwrite($fp, "some data");
fclose($fp);

/* Is called when the group requests are done */
function my_grp_done($data, $result) {
 var_dump($result == 0);
 @unlink($data);
}

/* Is called when eio_open() done */
function my_grp_file_opened_callback($data, $result) {
 global $grp;

 // $result should contain the file descriptor
 var_dump($result > 0);

 // Create eio_read() request and add it to the group
 // Pass file descriptor to the callback
 $req = eio_read($result, 4, 0,
   EIO_PRI_DEFAULT, "my_grp_file_read_callback", $result);
 eio_grp_add($grp, $req);
}

/* Is called when eio_read() done */
function my_grp_file_read_callback($data, $result) {
 global $grp;

 // Read bytes
 var_dump($result);

 // Create eio_close() request and add it to the group
 // $data should contain the file descriptor
 $req = eio_close($data);
 eio_grp_add($grp, $req);
}

// Create request group
$grp = eio_grp("my_grp_done", $temp_filename);
var_dump($grp);

// Create eio_open() request and add it to the group
$req = eio_open($temp_filename, EIO_O_RDWR | EIO_O_APPEND , NULL,
  EIO_PRI_DEFAULT, "my_grp_file_opened_callback", NULL);
eio_grp_add($grp, $req);

// Process requests
eio_event_loop();
?>

以上例程的输出类似于：

resource(6) of type (EIO Group Descriptor)
bool(true)
string(4) "some"
bool(true)

参见

  • eio_grp
  • eio_grp_cancel
  • eio_grp_limit
eio_get_last_error
eio_grp_cancel
Eio 函数


Cancels a request group

eio_grp_add
eio_grp_limit
Eio 函数
PHP Manual

eio_grp_cancel

(PECL eio >= 0.0.1dev)

eio_grp_cancel — Cancels a request group

说明

void eio_grp_cancel ( resource $grp )

eio_grp_cancel() cancels a group request specified by grp request group resource.

参数

grp

The request group resource returned by eio_grp().

返回值

没有返回值。

参见

  • eio_grp
  • eio_grp_add
eio_grp_add
eio_grp_limit
Eio 函数


Set group limit

eio_grp_cancel
eio_grp
Eio 函数
PHP Manual

eio_grp_limit

(PECL eio >= 0.0.1dev)

eio_grp_limit — Set group limit

说明

void eio_grp_limit ( resource $grp , int $limit )

Limit number of requests in the request group.

参数

grp

The request group resource.

limit

Number of requests in the group.

返回值

没有返回值。

参见

  • eio_grp_add
eio_grp_cancel
eio_grp
Eio 函数


Creates a request group.

eio_grp_limit
eio_init
Eio 函数
PHP Manual

eio_grp

(PECL eio >= 0.0.1dev)

eio_grp — Creates a request group.

说明

resource eio_grp ( callable $callback [, string $data = NULL ] )

eio_grp() creates a request group.

参数

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_grp() returns request group resource on success or FALSE on error.

范例

Example #1 eio_grp() example

<?php
$temp_filename = dirname(__FILE__) ."/eio-file.tmp";
$fp = fopen($temp_filename, "w");
fwrite($fp, "some data");
fclose($fp);
$my_file_fd = NULL;

/* Is called when the group requests are done */
function my_grp_done($data, $result) {
 // Remove the file, if it still exists
 @unlink($data);
}

/* Is called when the temporary file is opened */
function my_grp_file_opened_callback($data, $result) {
 global $my_file_fd, $grp;

 $my_file_fd = $result;

 $req = eio_read($my_file_fd, 4, 0,
   EIO_PRI_DEFAULT, "my_grp_file_read_callback");
 eio_grp_add($grp, $req);
}

/* Is called when the file is read */
function my_grp_file_read_callback($data, $result) {
 global $my_file_fd, $grp;

 var_dump($result);

 // Create request to close the file
 $req = eio_close($my_file_fd);

 // Add request to the group
 eio_grp_add($grp, $req);
}

// Create request group
$grp = eio_grp("my_grp_done", $temp_filename);

// Create request
$req = eio_open($temp_filename, EIO_O_RDWR | EIO_O_APPEND , NULL,
  EIO_PRI_DEFAULT, "my_grp_file_opened_callback", NULL);

// Add request to the group
eio_grp_add($grp, $req);

// Process requests
eio_event_loop();
?>

以上例程的输出类似于：

string(4) "some"

参见

  • eio_grp_cancel
  • eio_grp_add
eio_grp_limit
eio_init
Eio 函数


(Re-)initialize Eio

eio_grp
eio_link
Eio 函数
PHP Manual

eio_init

(PECL eio = 1.0.0)

eio_init — (Re-)initialize Eio

说明

void eio_init ( void )

eio_init() (re-)initializes Eio. It allocates memory for internal structures of libeio and Eio itself. You may call eio_init() before using Eio functions. Otherwise it will be called internally first time you invoke an Eio function in a process.

Warning

本过时特性将肯定会在未来被移除。 Since Eio 1.1.0 eio_init() is deprecated. In Eio 1.0.0 because of » libeio's restrictions you must call eio_init() in child process, if you fork one by any means. You have to avoid using Eio in parent process, if you use it in childs.

参数

此函数没有参数。

返回值

没有返回值。

eio_grp
eio_link
Eio 函数


Create a hardlink for file

eio_init
eio_lstat
Eio 函数
PHP Manual

eio_link

(PECL eio >= 0.0.1dev)

eio_link — Create a hardlink for file

说明

resource eio_link ( string $path , string $new_path [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

eio_link() creates a hardlink new_path for a file specified by path.

参数

path

Source file path.

new_path

Target file path.

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

范例

Example #1 eio_link() example

<?php
$filename = dirname(__FILE__)."/symlink.dat";
touch($filename);
$link = dirname(__FILE__)."/symlink.link";
$hardlink = dirname(__FILE__)."/hardlink.link";

function my_hardlink_cb($data, $result) {
    global $link, $filename;
    var_dump(file_exists($data) && !is_link($data));
    @unlink($data);

    eio_symlink($filename, $link, EIO_PRI_DEFAULT, "my_symlink_cb", $link);
}

function my_symlink_cb($data, $result) {
    global $link, $filename;
    var_dump(file_exists($data) && is_link($data));

    if (!eio_readlink($data, EIO_PRI_DEFAULT, "my_readlink_cb", NULL)) {
        @unlink($link);
        @unlink($filename);
    }
}

function my_readlink_cb($data, $result) {
    global $filename, $link;
    var_dump($result);

    @unlink($link);
    @unlink($filename);
}

eio_link($filename, $hardlink, EIO_PRI_DEFAULT, "my_hardlink_cb", $hardlink);
eio_event_loop();
?>

以上例程的输出类似于：

bool(true)
bool(true)
string(%d) "%ssymlink.dat"

参见

  • eio_symlink
eio_init
eio_lstat
Eio 函数


Get file status

eio_link
eio_mkdir
Eio 函数
PHP Manual

eio_lstat

(PECL eio >= 0.0.1dev)

eio_lstat — Get file status

说明

resource eio_lstat ( string $path , int $pri , callable $callback [, mixed $data = NULL ] )

eio_lstat() returns file status information in result argument of callback

参数

path

The file path

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_lstat() returns request resource on success or FALSE on error.

范例

Example #1 eio_lstat() example

<?php
$tmp_filename = dirname(__FILE__). "/eio-file.tmp";
touch($tmp_filename);

function my_res_cb($data, $result) {
    var_dump($data);
    var_dump($result);
}

function my_open_cb($data, $result) {
    eio_close($result);
    eio_event_loop();

    @unlink($data);
}

eio_lstat($tmp_filename, EIO_PRI_DEFAULT, "my_res_cb", "eio_lstat");
eio_open($tmp_filename, EIO_O_RDONLY, NULL,
 EIO_PRI_DEFAULT, "my_open_cb", $tmp_filename);
eio_event_loop();
?>

以上例程的输出类似于：

string(9) "eio_lstat"
array(12) {
 ["st_dev"]=>
  int(2050)
  ["st_ino"]=>
  int(2099197)
  ["st_mode"]=>
  int(33188)
  ["st_nlink"]=>
  int(1)
  ["st_uid"]=>
  int(1000)
  ["st_gid"]=>
  int(100)
  ["st_rdev"]=>
  int(0)
  ["st_blksize"]=>
  int(4096)
  ["st_blocks"]=>
  int(0)
  ["st_atime"]=>
  int(1318235777)
  ["st_mtime"]=>
  int(1318235777)
  ["st_ctime"]=>
  int(1318235777)
}

参见

  • eio_stat
  • eio_fstat
eio_link
eio_mkdir
Eio 函数


Create directory

eio_lstat
eio_mknod
Eio 函数
PHP Manual

eio_mkdir

(PECL eio >= 0.0.1dev)

eio_mkdir — Create directory

说明

resource eio_mkdir ( string $path , int $mode [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

eio_mkdir() creates directory with specified access mode.

参数

path

Path for the new directory.

mode

Access mode, e.g. 0755

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_mkdir() returns request resource on success or FALSE on error.

范例

Example #1 eio_mkdir() example

<?php
$temp_dirname = "eio-temp-dir";

/* Is called when eio_mkdir() finishes */
function my_mkdir_callback($data, $result) {
 if ($result == 0 && is_dir($temp_dirname)
   && !is_readable($temp_dirname)
   && is_writable($temp_dirname)) {
  echo "eio_mkdir_ok";
 }

 // Remove directory
    if (file_exists($data))
        rmdir($temp_dirname);
}

// Create directory with access mode 0300
eio_mkdir($temp_dirname, 0300, EIO_PRI_DEFAULT, "my_mkdir_callback", $temp_dirname);
eio_event_loop();
?>

以上例程的输出类似于：

eio_mkdir_ok

参见

  • eio_rmdir
eio_lstat
eio_mknod
Eio 函数


Create a special or ordinary file.

eio_mkdir
eio_nop
Eio 函数
PHP Manual

eio_mknod

(PECL eio >= 0.0.1dev)

eio_mknod — Create a special or ordinary file.

说明

resource eio_mknod ( string $path , int $mode , int $dev [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

eio_mknod() creates ordinary or special(often) file.

Warning

本函数还未编写文档，仅有参数列表。

参数

path

Path for the new node(file).

mode

Specifies both the permissions to use and the type of node to be created. It should be a combination (using bitwise OR) of one of the file types listed below and the permissions for the new node(e.g. 0640). Possible file types are: EIO_S_IFREG(regular file), EIO_S_IFCHR(character file), EIO_S_IFBLK(block special file), EIO_S_IFIFO(FIFO - named pipe) and EIO_S_IFSOCK(UNIX domain socket). To specify permissions EIO_S_I* constants could be used.

dev

If the file type is EIO_S_IFCHR or EIO_S_IFBLK then dev specifies the major and minor numbers of the newly created device special file. Otherwise dev ignored. See mknod(2) man page for details.

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_mknod() returns request resource on success or FALSE on error.

范例

Example #1 eio_mknod() example

<?php
// FIFO name
$temp_filename = "/tmp/eio-temp-fifo";

/* Is called when eio_mknod() finishes */
function my_mknod_callback($data, $result) {
    $s = stat($data);
    var_dump($s);

    if ($result == 0) {
        echo "eio_mknod_ok";
    }

    @unlink($data);
}

eio_mknod($temp_filename, EIO_S_IFIFO, 0,
    EIO_PRI_DEFAULT, "my_mknod_callback", $temp_filename);
eio_event_loop();
?>

以上例程的输出类似于：

array(26) {
  [0]=>
  int(17)
  [1]=>
  int(2337608)
  [2]=>
  int(4096)
  [3]=>
  int(1)
  [4]=>
  int(1000)
  [5]=>
  int(100)
  [6]=>
  int(0)
  [7]=>
  int(0)
  [8]=>
  int(1318241261)
  [9]=>
  int(1318241261)
  [10]=>
  int(1318241261)
  [11]=>
  int(4096)
  [12]=>
  int(0)
  ["dev"]=>
  int(17)
  ["ino"]=>
  int(2337608)
  ["mode"]=>
  int(4096)
  ["nlink"]=>
  int(1)
  ["uid"]=>
  int(1000)
  ["gid"]=>
  int(100)
  ["rdev"]=>
  int(0)
  ["size"]=>
  int(0)
  ["atime"]=>
  int(1318241261)
  ["mtime"]=>
  int(1318241261)
  ["ctime"]=>
  int(1318241261)
  ["blksize"]=>
  int(4096)
  ["blocks"]=>
  int(0)
}
eio_mknod_ok

参见

  • eio_open
eio_mkdir
eio_nop
Eio 函数


Does nothing, except go through the whole request cycle.

eio_mknod
eio_npending
Eio 函数
PHP Manual

eio_nop

(PECL eio >= 0.0.1dev)

eio_nop — Does nothing, except go through the whole request cycle.

说明

resource eio_nop ([ int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

eio_nop() does nothing, except go through the whole request cycle. Could be useful in debugging.

参数

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_nop() returns request resource on success or FALSE on error.

参见

  • eio_busy
eio_mknod
eio_npending
Eio 函数


Returns number of finished, but unhandled requests

eio_nop
eio_nready
Eio 函数
PHP Manual

eio_npending

(PECL eio >= 0.0.1dev)

eio_npending — Returns number of finished, but unhandled requests

说明

int eio_npending ( void )

eio_npending() returns number of finished, but unhandled requests

参数

此函数没有参数。

返回值

eio_npending() returns number of finished, but unhandled requests.

参见

  • eio_nreqs
  • eio_nready
  • eio_nthreads
eio_nop
eio_nready
Eio 函数


Returns number of not-yet handled requests

eio_npending
eio_nreqs
Eio 函数
PHP Manual

eio_nready

(PECL eio >= 0.0.1dev)

eio_nready — Returns number of not-yet handled requests

说明

int eio_nready ( void )

参数

此函数没有参数。

返回值

eio_nready() returns number of not-yet handled requests

参见

  • eio_nreqs
  • eio_nready
  • eio_nthreads
eio_npending
eio_nreqs
Eio 函数


Returns number of requests to be processed

eio_nready
eio_nthreads
Eio 函数
PHP Manual

eio_nreqs

(PECL eio >= 0.0.1dev)

eio_nreqs — Returns number of requests to be processed

说明

int eio_nreqs ( void )

eio_nreqs() could be called in a custom loop calling eio_poll().

参数

此函数没有参数。

返回值

eio_nreqs() returns number of requests to be processed.

范例

Example #1 eio_nreqs() example

<?php
function res_cb($data, $result) {
    var_dump($data);
    var_dump($result);
}

eio_nop(EIO_PRI_DEFAULT, "res_cb", "1");
eio_nop(EIO_PRI_DEFAULT, "res_cb", "2");
eio_nop(EIO_PRI_DEFAULT, "res_cb", "3");

while (eio_nreqs()) {
    eio_poll();
}
?>

以上例程的输出类似于：

string(1) "1"
int(0)
string(1) "3"
int(0)
string(1) "2"
int(0)

参见

  • eio_poll
  • eio_nready
eio_nready
eio_nthreads
Eio 函数


Returns number of threads currently in use

eio_nreqs
eio_open
Eio 函数
PHP Manual

eio_nthreads

(PECL eio >= 0.0.1dev)

eio_nthreads — Returns number of threads currently in use

说明

int eio_nthreads ( void )

参数

此函数没有参数。

返回值

eio_nthreads() returns number of threads currently in use.

参见

  • eio_npending
  • eio_nready
  • eio_nreqs
eio_nreqs
eio_open
Eio 函数


Opens a file

eio_nthreads
eio_poll
Eio 函数
PHP Manual

eio_open

(PECL eio >= 0.0.1dev)

eio_open — Opens a file

说明

resource eio_open ( string $path , int $flags , int $mode , int $pri , callable $callback [, mixed $data = NULL ] )

eio_open() opens file specified by path in access mode mode with

参数

path

Path of the file to be opened.

Warning

In some SAPIs(e.g. PHP-FPM) it could fail, if you don't specify full path.

flags

One of EIO_O_* constants, or their combinations. EIO_O_* constants have the same meaning, as their corresponding O_* counterparts defined in fnctl.h C header file. Default is EIO_O_RDWR.

mode

One of EIO_S_I* constants, or their combination (via bitwise OR operator). The constants have the same meaning as their S_I* counterparts defined in » sys/stat.h C header file. Required, if a file is created. Otherwise ignored.

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_open() returns file descriptor in result argument of callback on success; otherwise, result is equal to -1.

范例

Example #1 eio_open() example

<?php
$temp_filename = "eio-temp-file.tmp";

/* Is called when eio_close() finishes */
function my_close_cb($data, $result) {
 // Zero indicates success
    var_dump($result == 0);
 @unlink($data);
}

/* Is called when eio_open() finishes */
function my_file_opened_callback($data, $result) {
 // $result should contain the file descriptor
    var_dump($result > 0);

    if ($result > 0) {
  // Close the file
        eio_close($result, EIO_PRI_DEFAULT, "my_close_cb", $data);
        eio_event_loop();
    }
}

// Create new file for reading and writing
// Deny group and others to do anything with that file
eio_open($temp_filename, EIO_O_CREAT | EIO_O_RDWR, EIO_S_IRUSR | EIO_S_IWUSR,
  EIO_PRI_DEFAULT, "my_file_opened_callback", $temp_filename);
eio_event_loop();
?>

以上例程的输出类似于：

bool(true)
bool(true)

参见

  • eio_mknod
eio_nthreads
eio_poll
Eio 函数


Can be to be called whenever there are pending requests that need finishing.

eio_open
eio_read
Eio 函数
PHP Manual

eio_poll

(PECL eio >= 0.0.1dev)

eio_poll — Can be to be called whenever there are pending requests that need finishing.

说明

int eio_poll ( void )

eio_poll() can be used to implement special event loop. For this eio_nreqs() could be used to test if there are unprocessed requests.

Note:

Applicable only when implementing userspace event loop.

参数

此函数没有参数。

返回值

If any request invocation returns a non-zero value, returns that value. Otherwise, it returns 0.

范例

Example #1 eio_poll() example

<?php
function res_cb($data, $result) {
    var_dump($data);
    var_dump($result);
}

eio_nop(EIO_PRI_DEFAULT, "res_cb", "1");
eio_nop(EIO_PRI_DEFAULT, "res_cb", "2");
eio_nop(EIO_PRI_DEFAULT, "res_cb", "3");

while (eio_nreqs()) {
    // Some specific IPC or so
    eio_poll();
}
?>

以上例程的输出类似于：

string(1) "1"
int(0)
string(1) "3"
int(0)
string(1) "2"
int(0)

参见

  • eio_nreqs
eio_open
eio_read
Eio 函数


Read from a file descriptor at given offset.

eio_poll
eio_readahead
Eio 函数
PHP Manual

eio_read

(PECL eio >= 0.0.1dev)

eio_read — Read from a file descriptor at given offset.

说明

resource eio_read ( mixed $fd , int $length , int $offset , int $pri , callable $callback [, mixed $data = NULL ] )

eio_read() reads up to length bytes from fd file descriptor at offset. The read bytes are stored in result argument of callback.

参数

fd

Stream, Socket resource, or numeric file descriptor

length

Maximum number of bytes to read.

offset

Offset within the file.

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_read() stores read bytes in result argument of callback function.

范例

Example #1 eio_read() example

<?php
// Open a temporary file and write some bytes there
$temp_filename = "eio-temp-file.tmp";
$fp = fopen($temp_filename, "w");
fwrite($fp, "1234567890");
fclose($fp);

/* Is called when eio_read() is done */
function my_read_cb($data, $result) {
    global $temp_filename;

 // Output read bytes
    var_dump($result);

 // Close file
    eio_close($data);
    eio_event_loop();

 // Remove temporary file
    @unlink($temp_filename);
}

/* Is called when eio_open() is done */
function my_file_opened_callback($data, $result) {
 // $result should contain the file descriptor
    if ($result > 0) {
  // Read 5 bytes starting from third
        eio_read($result, 5, 2, EIO_PRI_DEFAULT, "my_read_cb", $result);
        eio_event_loop();
    } else {
  // eio_open() failed
        unlink($data);
    }
}

// Open the file for reading and writing
eio_open($temp_filename, EIO_O_RDWR, NULL,
    EIO_PRI_DEFAULT, "my_file_opened_callback", $temp_filename);
eio_event_loop();
?>

以上例程的输出类似于：

string(5) "34567"

参见

  • eio_open
  • eio_write
  • eio_close
  • eio_event_loop
eio_poll
eio_readahead
Eio 函数


Perform file readahead into page cache

eio_read
eio_readdir
Eio 函数
PHP Manual

eio_readahead

(PECL eio >= 0.0.1dev)

eio_readahead — Perform file readahead into page cache

说明

resource eio_readahead ( mixed $fd , int $offset , int $length [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

eio_readahead() populates the page cache with data from a file so that subsequent reads from that file will not block on disk I/O. See READAHEAD(2) man page for details.

参数

fd

Stream, Socket resource, or numeric file descriptor

offset

Starting point from which data is to be read.

length

Number of bytes to be read.

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_readahead() returns request resource on success or FALSE on error.

eio_read
eio_readdir
Eio 函数


Reads through a whole directory

eio_readahead
eio_readlink
Eio 函数
PHP Manual

eio_readdir

(PECL eio >= 0.0.1dev)

eio_readdir — Reads through a whole directory

说明

resource eio_readdir ( string $path , int $flags , int $pri , callable $callback [, string $data = NULL ] )

Reads through a whole directory(via the opendir, readdir and closedir system calls) and returns either the names or an array in result argument of callback function, depending on the flags argument.

参数

path

Directory path.

flags

Combination of EIO_READDIR_* constants.

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_readdir() returns request resource on success, or FALSE on error. Sets result argument of callback function according to flags:

EIO_READDIR_DENTS (integer)
eio_readdir() flag. If specified, the result argument of the callback becomes an array with the following keys: 'names' - array of directory names 'dents' - array of struct eio_dirent-like arrays having the following keys each: 'name' - the directory name; 'type' - one of EIO_DT_* constants; 'inode' - the inode number, if available, otherwise unspecified;
EIO_READDIR_DIRS_FIRST (integer)
When this flag is specified, the names will be returned in an order where likely directories come first, in optimal stat order.
EIO_READDIR_STAT_ORDER (integer)
When this flag is specified, then the names will be returned in an order suitable for stat'ing each one. When planning to stat() all files in the given directory, the returned order will likely be fastest.
EIO_READDIR_FOUND_UNKNOWN (integer)

Node types:

EIO_DT_UNKNOWN (integer)
Unknown node type(very common). Further stat() needed.
EIO_DT_FIFO (integer)
FIFO node type
EIO_DT_CHR (integer)
Node type
EIO_DT_MPC (integer)
Multiplexed char device (v7+coherent) node type
EIO_DT_DIR (integer)
Directory node type
EIO_DT_NAM (integer)
Xenix special named file node type
EIO_DT_BLK (integer)
Node type
EIO_DT_MPB (integer)
Multiplexed block device (v7+coherent)
EIO_DT_REG (integer)
Node type
EIO_DT_NWK (integer)
EIO_DT_CMP (integer)
HP-UX network special node type
EIO_DT_LNK (integer)
Link node type
EIO_DT_SOCK (integer)
Socket node type
EIO_DT_DOOR (integer)
Solaris door node type
EIO_DT_WHT (integer)
Node type
EIO_DT_MAX (integer)
Highest node type value

范例

Example #1 eio_readdir() example

<?php
/* Is called when eio_readdir() finishes */
function my_readdir_callback($data, $result) {
    echo __FUNCTION__, " called\n";
    echo "data: "; var_dump($data);
    echo "result: "; var_dump($result);
    echo "\n";
}

eio_readdir("/var/spool/news", EIO_READDIR_STAT_ORDER | EIO_READDIR_DIRS_FIRST,
  EIO_PRI_DEFAULT, "my_readdir_callback");
eio_event_loop();
?>

以上例程的输出类似于：

my_readdir_callback called
data: NULL
result: array(2) {
 ["names"]=>
  array(7) {
   [0]=>
    string(7) "archive"
    [1]=>
    string(8) "articles"
    [2]=>
    string(8) "incoming"
    [3]=>
    string(7) "innfeed"
    [4]=>
    string(8) "outgoing"
    [5]=>
    string(8) "overview"
    [6]=>
    string(3) "tmp"
  }
 ["dents"]=>
  array(7) {
   [0]=>
    array(3)
    {
     ["name"]=>
      string(7)
      "archive"
      ["type"]=>
      int(4)
      ["inode"]=>
      int(393265)
    }
   [1]=>
    array(3)
    {
     ["name"]=>
      string(8)
      "articles"
      ["type"]=>
      int(4)
      ["inode"]=>
      int(393266)
    }
   [2]=>
    array(3)
    {
     ["name"]=>
      string(8)
      "incoming"
      ["type"]=>
      int(4)
      ["inode"]=>
      int(393267)
    }
   [3]=>
    array(3)
    {
     ["name"]=>
      string(7)
      "innfeed"
      ["type"]=>
      int(4)
      ["inode"]=>
      int(393269)
    }
   [4]=>
    array(3)
    {
     ["name"]=>
      string(8)
      "outgoing"
      ["type"]=>
      int(4)
      ["inode"]=>
      int(393270)
    }
   [5]=>
    array(3)
    {
     ["name"]=>
      string(8)
      "overview"
      ["type"]=>
      int(4)
      ["inode"]=>
      int(393271)
    }
   [6]=>
    array(3)
    {
     ["name"]=>
      string(3)
      "tmp"
      ["type"]=>
      int(4)
      ["inode"]=>
      int(393272)
    }
  }
}
eio_readahead
eio_readlink
Eio 函数


Read value of a symbolic link.

eio_readdir
eio_realpath
Eio 函数
PHP Manual

eio_readlink

(PECL eio >= 0.0.1dev)

eio_readlink — Read value of a symbolic link.

说明

resource eio_readlink ( string $path , int $pri , callable $callback [, string $data = NULL ] )

参数

path

Source symbolic link path

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_readlink() returns request resource on success or FALSE on error.

范例

Example #1 eio_readlink() example

<?php
$filename = dirname(__FILE__)."/symlink.dat";
touch($filename);
$link = dirname(__FILE__)."/symlink.link";
$hardlink = dirname(__FILE__)."/hardlink.link";

function my_hardlink_cb($data, $result) {
    global $link, $filename;
    var_dump(file_exists($data) && !is_link($data));
    @unlink($data);

    eio_symlink($filename, $link, EIO_PRI_DEFAULT, "my_symlink_cb", $link);
}

function my_symlink_cb($data, $result) {
    global $link, $filename;
    var_dump(file_exists($data) && is_link($data));

    if (!eio_readlink($data, EIO_PRI_DEFAULT, "my_readlink_cb", NULL)) {
        @unlink($link);
        @unlink($filename);
    }
}

function my_readlink_cb($data, $result) {
    global $filename, $link;
    var_dump($result);

    @unlink($link);
    @unlink($filename);
}

eio_link($filename, $hardlink, EIO_PRI_DEFAULT, "my_hardlink_cb", $hardlink);
eio_event_loop();
?>

以上例程的输出类似于：

bool(true)
bool(true)
string(16) "/tmp/symlink.dat"

参见

  • eio_symlink
eio_readdir
eio_realpath
Eio 函数


Get the canonicalized absolute pathname.

eio_readlink
eio_rename
Eio 函数
PHP Manual

eio_realpath

(PECL eio >= 0.0.1dev)

eio_realpath — Get the canonicalized absolute pathname.

说明

resource eio_realpath ( string $path , int $pri , callable $callback [, string $data = NULL ] )

eio_realpath() returns the canonicalized absolute pathname in result argument of callback function.

参数

path

Short pathname

pri

callback

data

返回值

范例

Example #1 eio_realpath() example

<?php
var_dump(getcwd());

function my_realpath_allback($data, $result) {
    var_dump($result);
}

eio_realpath("../", EIO_PRI_DEFAULT, "my_realpath_allback");
eio_event_loop();
?>

以上例程的输出类似于：

string(12) "/home/ruslan"
string(5) "/home"
eio_readlink
eio_rename
Eio 函数


Change the name or location of a file.

eio_realpath
eio_rmdir
Eio 函数
PHP Manual

eio_rename

(PECL eio >= 0.0.1dev)

eio_rename — Change the name or location of a file.

说明

resource eio_rename ( string $path , string $new_path [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

eio_rename() renames or moves a file to new location.

参数

path

Source path

new_path

Target path

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_rename() returns request resource on success or FALSE on error.

范例

Example #1 eio_rename() example

<?php
$filename = dirname(__FILE__)."/eio-temp-file.dat";
touch($filename);
$new_filename = dirname(__FILE__)."/eio-temp-file-new.dat";

function my_rename_cb($data, $result) {
    global $filename, $new_filename;

    if ($result == 0 && !file_exists($filename) && file_exists($new_filename)) {
        @unlink($new_filename);
        echo "eio_rename_ok";
    } else {
        @unlink($filename);
    }
}

eio_rename($filename, $new_filename, EIO_PRI_DEFAULT, "my_rename_cb", $filename);
eio_event_loop();
?>

以上例程的输出类似于：

eio_rename_ok
eio_realpath
eio_rmdir
Eio 函数


Remove a directory

eio_rename
eio_seek
Eio 函数
PHP Manual

eio_rmdir

(PECL eio >= 0.0.1dev)

eio_rmdir — Remove a directory

说明

resource eio_rmdir ( string $path [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

eio_rmdir() removes a directory.

参数

path

Directory path

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_rmdir() returns request resource on success or FALSE on error.

范例

Example #1 eio_rmdir() example

<?php
$temp_dirname = "eio-temp-dir";
mkdir($temp_dirname);

function my_rmdir_callback($data, $result) {
    if ($result == 0 && !file_exists($data)) {
        echo "eio_rmdir_ok";
    } else if (file_exists($data)) {
        rmdir($data);
    }
}

eio_rmdir($temp_dirname, EIO_PRI_DEFAULT, "my_rmdir_callback", $temp_dirname);
eio_event_loop();
?>

以上例程的输出类似于：

eio_rmdir_ok

参见

  • eio_mkdir
eio_rename
eio_seek
Eio 函数


Repositions the offset of the open file associated with the fd argument to the argument offset according to the directive whence

eio_rmdir
eio_sendfile
Eio 函数
PHP Manual

eio_seek

(PECL eio >= 0.5.0b)

eio_seek — Repositions the offset of the open file associated with the fd argument to the argument offset according to the directive whence

说明

resource eio_seek ( mixed $fd , int $offset , int $whence [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

eio_seek() repositions the offset of the open file associated with stream, Socket resource, or file descriptor specified by fd to the argument offset according to the directive whence as follows:

  • EIO_SEEK_SET - Set position equal to offset bytes.
  • EIO_SEEK_CUR - Set position to current location plus offset.
  • EIO_SEEK_END - Set position to end-of-file plus offset.

参数

fd

Stream, Socket resource, or numeric file descriptor

offset

Starting point from which data is to be read.

length

Number of bytes to be read.

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_seek() returns request resource on success or FALSE on error.

eio_rmdir
eio_sendfile
Eio 函数


Transfer data between file descriptors

eio_seek
eio_set_max_idle
Eio 函数
PHP Manual

eio_sendfile

(PECL eio >= 0.0.1dev)

eio_sendfile — Transfer data between file descriptors

说明

resource eio_sendfile ( mixed $out_fd , mixed $in_fd , int $offset , int $length [, int $pri [, callable $callback [, string $data ]]] )

eio_sendfile() copies data between one file descriptor and another. See SENDFILE(2) man page for details.

参数

out_fd

Output stream, Socket resource, or file descriptor. Should be opened for writing.

in_fd

Input stream, Socket resource, or file descriptor. Should be opened for reading.

offset

Offset within the source file.

length

Number of bytes to copy.

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_sendfile() returns request resource on success or FALSE on error.

eio_seek
eio_set_max_idle
Eio 函数


Set maximum number of idle threads.

eio_sendfile
eio_set_max_parallel
Eio 函数
PHP Manual

eio_set_max_idle

(PECL eio >= 0.0.1dev)

eio_set_max_idle — Set maximum number of idle threads.

说明

void eio_set_max_idle ( int $nthreads )

参数

nthreads

Number of idle threads.

返回值

没有返回值。

参见

  • eio_set_min_parallel
  • eio_set_max_parallel
eio_sendfile
eio_set_max_parallel
Eio 函数


Set maximum parallel threads

eio_set_max_idle
eio_set_max_poll_reqs
Eio 函数
PHP Manual

eio_set_max_parallel

(PECL eio >= 0.0.1dev)

eio_set_max_parallel — Set maximum parallel threads

说明

void eio_set_max_parallel ( int $nthreads )

参数

nthreads

Number of parallel threads

返回值

没有返回值。

参见

  • eio_set_min_parallel
eio_set_max_idle
eio_set_max_poll_reqs
Eio 函数


Set maximum number of requests processed in a poll.

eio_set_max_parallel
eio_set_max_poll_time
Eio 函数
PHP Manual

eio_set_max_poll_reqs

(PECL eio >= 0.0.1dev)

eio_set_max_poll_reqs — Set maximum number of requests processed in a poll.

说明

void eio_set_max_poll_reqs ( int $nreqs )

参数

nreqs

Number of requests

返回值

没有返回值。

eio_set_max_parallel
eio_set_max_poll_time
Eio 函数


Set maximum poll time

eio_set_max_poll_reqs
eio_set_min_parallel
Eio 函数
PHP Manual

eio_set_max_poll_time

(PECL eio >= 0.0.1dev)

eio_set_max_poll_time — Set maximum poll time

说明

void eio_set_max_poll_time ( float $nseconds )

Polling stops, if poll took longer than nseconds seconds.

参数

nseconds

Number of seconds

返回值

没有返回值。

eio_set_max_poll_reqs
eio_set_min_parallel
Eio 函数


Set minimum parallel thread number

eio_set_max_poll_time
eio_stat
Eio 函数
PHP Manual

eio_set_min_parallel

(PECL eio >= 0.0.1dev)

eio_set_min_parallel — Set minimum parallel thread number

说明

void eio_set_min_parallel ( string $nthreads )

参数

nthreads

Number of parallel threads.

返回值

没有返回值。

参见

  • eio_set_max_parallel
eio_set_max_poll_time
eio_stat
Eio 函数


Get file status

eio_set_min_parallel
eio_statvfs
Eio 函数
PHP Manual

eio_stat

(PECL eio >= 0.0.1dev)

eio_stat — Get file status

说明

resource eio_stat ( string $path , int $pri , callable $callback [, mixed $data = NULL ] )

eio_stat() returns file status information in result argument of callback

参数

path

The file path

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_stat() returns request resource on success or FALSE on error. On success assigns result argument of callback to an array.

范例

Example #1 eio_stat() example

<?php
$tmp_filename = "eio-file.tmp";
touch($tmp_filename);

function my_res_cb($data, $result) {
    var_dump($data);
    var_dump($result);
}

function my_open_cb($data, $result) {
    eio_close($result);
    eio_event_loop();

    @unlink($data);
}

eio_stat($tmp_filename, EIO_PRI_DEFAULT, "my_res_cb", "eio_stat");
eio_open($tmp_filename, EIO_O_RDONLY, NULL,
 EIO_PRI_DEFAULT, "my_open_cb", $tmp_filename);
eio_event_loop();
?>

以上例程的输出类似于：

string(8) "eio_stat"
array(12) {
  ["st_dev"]=>
  int(2050)
  ["st_ino"]=>
  int(2489173)
  ["st_mode"]=>
  int(33188)
  ["st_nlink"]=>
  int(1)
  ["st_uid"]=>
  int(1000)
  ["st_gid"]=>
  int(100)
  ["st_rdev"]=>
  int(0)
  ["st_blksize"]=>
  int(4096)
  ["st_blocks"]=>
  int(0)
  ["st_atime"]=>
  int(1318250380)
  ["st_mtime"]=>
  int(1318250380)
  ["st_ctime"]=>
  int(1318250380)
}

参见

  • eio_lstat
  • eio_fstat
eio_set_min_parallel
eio_statvfs
Eio 函数


Get file system statistics

eio_stat
eio_symlink
Eio 函数
PHP Manual

eio_statvfs

(PECL eio >= 0.0.1dev)

eio_statvfs — Get file system statistics

说明

resource eio_statvfs ( string $path , int $pri , callable $callback [, mixed $data ] )

eio_statvfs() returns file system statistics information in result argument of callback

参数

path

Pathname of any file within the mounted file system

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_statvfs() returns request resource on success or FALSE on error. On success assigns result argument of callback to an array.

范例

Example #1 eio_statvfs() example

<?php
$tmp_filename = '/tmp/eio-file.tmp';
touch($tmp_filename);

function my_statvfs_callback($data, $result) {
    var_dump($data);
    var_dump($result);

 @unlink($data);
}

eio_statvfs($tmp_filename, EIO_PRI_DEFAULT, "my_statvfs_callback", $tmp_filename);
eio_event_loop();
?>

以上例程的输出类似于：

string(17) "/tmp/eio-file.tmp"
array(11) {
  ["f_bsize"]=>
  int(4096)
  ["f_frsize"]=>
  int(4096)
  ["f_blocks"]=>
  int(262144)
  ["f_bfree"]=>
  int(262111)
  ["f_bavail"]=>
  int(262111)
  ["f_files"]=>
  int(1540815)
  ["f_ffree"]=>
  int(1540743)
  ["f_favail"]=>
  int(1540743)
  ["f_fsid"]=>
  int(0)
  ["f_flag"]=>
  int(4102)
  ["f_namemax"]=>
  int(255)
}
eio_stat
eio_symlink
Eio 函数


Create a symbolic link

eio_statvfs
eio_sync_file_range
Eio 函数
PHP Manual

eio_symlink

(PECL eio >= 0.0.1dev)

eio_symlink — Create a symbolic link

说明

resource eio_symlink ( string $path , string $new_path [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

eio_symlink() creates a symbolic link new_path to path.

参数

path

Source path

new_path

Target path

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_symlink() returns request resource on success or FALSE on error.

范例

Example #1 eio_symlink() example

<?php
$filename = dirname(__FILE__)."/symlink.dat";
touch($filename);
$link = dirname(__FILE__)."/symlink.link";

function my_symlink_cb($data, $result) {
    global $link, $filename;
    var_dump(file_exists($data) && is_link($data));

    if (!eio_readlink($data, EIO_PRI_DEFAULT, "my_readlink_cb", NULL)) {
        @unlink($link);
        @unlink($filename);
    }
}

function my_readlink_cb($data, $result) {
    global $filename, $link;
    var_dump($result);

    @unlink($link);
    @unlink($filename);
}

eio_symlink($filename, $link, EIO_PRI_DEFAULT, "my_symlink_cb", $link);
eio_event_loop();
?>

以上例程的输出类似于：

bool(true)
string(16) "/tmp/symlink.dat"

参见

  • eio_link
eio_statvfs
eio_sync_file_range
Eio 函数


Sync a file segment with disk

eio_symlink
eio_sync
Eio 函数
PHP Manual

eio_sync_file_range

(PECL eio >= 0.0.1dev)

eio_sync_file_range — Sync a file segment with disk

说明

resource eio_sync_file_range ( mixed $fd , int $offset , int $nbytes , int $flags [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

eio_sync_file_range() permits fine control when synchronizing the open file referred to by the file descriptor fd with disk.

参数

fd

File descriptor

offset

The starting byte of the file range to be synchronized

nbytes

Specifies the length of the range to be synchronized, in bytes. If nbytes is zero, then all bytes from offset through to the end of file are synchronized.

flags

A bit-mask. Can include any of the following values: EIO_SYNC_FILE_RANGE_WAIT_BEFORE, EIO_SYNC_FILE_RANGE_WRITE, EIO_SYNC_FILE_RANGE_WAIT_AFTER. These flags have the same meaning as their SYNC_FILE_RANGE_* counterparts(see SYNC_FILE_RANGE(2) man page).

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_sync_file_range() returns request resource on success or FALSE on error.

eio_symlink
eio_sync
Eio 函数


Commit buffer cache to disk

eio_sync_file_range
eio_syncfs
Eio 函数
PHP Manual

eio_sync

(PECL eio >= 0.0.1dev)

eio_sync — Commit buffer cache to disk

说明

resource eio_sync ([ int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

参数

此函数没有参数。

返回值

eio_sync() returns request resource on success or FALSE on error.

eio_sync_file_range
eio_syncfs
Eio 函数


Calls Linux' syncfs syscall, if available

eio_sync
eio_truncate
Eio 函数
PHP Manual

eio_syncfs

(PECL eio >= 0.0.1dev)

eio_syncfs — Calls Linux' syncfs syscall, if available

说明

resource eio_syncfs ( mixed $fd [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

参数

fd

File descriptor

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_syncfs() returns request resource on success or FALSE on error.

eio_sync
eio_truncate
Eio 函数


Truncate a file

eio_syncfs
eio_unlink
Eio 函数
PHP Manual

eio_truncate

(PECL eio >= 0.0.1dev)

eio_truncate — Truncate a file

说明

resource eio_truncate ( string $path [, int $offset = 0 [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]]] )

eio_truncate() causes the regular file named by path to be truncated to a size of precisely length bytes

参数

path

File path

offset

Offset from beginning of the file.

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_busy() returns request resource on success or FALSE on error.

参见

  • eio_ftruncate
eio_syncfs
eio_unlink
Eio 函数


Delete a name and possibly the file it refers to

eio_truncate
eio_utime
Eio 函数
PHP Manual

eio_unlink

(PECL eio >= 0.0.1dev)

eio_unlink — Delete a name and possibly the file it refers to

说明

resource eio_unlink ( string $path [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

eio_unlink() deletes a name from the file system.

参数

path

Path to file

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_unlink() returns request resource on success or FALSE on error.

eio_truncate
eio_utime
Eio 函数


Change file last access and modification times.

eio_unlink
eio_write
Eio 函数
PHP Manual

eio_utime

(PECL eio >= 0.0.1dev)

eio_utime — Change file last access and modification times.

说明

resource eio_utime ( string $path , float $atime , float $mtime [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]] )

参数

path

Path to the file.

atime

Access time

mtime

Modification time

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_utime() returns request resource on success or FALSE on error.

参见

  • eio_futime
eio_unlink
eio_write
Eio 函数


Write to file

eio_utime
Ev
Eio 函数
PHP Manual

eio_write

(PECL eio >= 0.0.1dev)

eio_write — Write to file

说明

resource eio_write ( mixed $fd , string $str [, int $length = 0 [, int $offset = 0 [, int $pri = EIO_PRI_DEFAULT [, callable $callback = NULL [, mixed $data = NULL ]]]]] )

eio_write() writes up to length bytes from str at offset offset from the beginning of the file.

参数

fd

Stream, Socket resource, or numeric file descriptor, e.g. returned by eio_open()

str

Source string

length

Maximum number of bytes to write.

offset

Offset from the beginning of file.

pri

请求的优先级：EIO_PRI_DEFAULT，EIO_PRI_MIN，EIO_PRI_MAX 或 NULL。如果是 NULL，pri 将设为 EIO_PRI_DEFAULT。

callback

callback 函数在请求完成时被调用。其应匹配一下原型：

void callback(mixed $data, int $result[, resource $req]);
data

传递给请求的用户数据。

result

针对请求的结果的值。通常是相应的系统调用返回的值。

req

可选的请求资源，可被 eio_get_last_error() 之类的函数使用。

data

Arbitrary variable passed to callback.

返回值

eio_write() returns request resource on success or FALSE on error.

参见

  • eio_open
eio_utime
Ev
Eio 函数


Ev

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • Watchers
  • Watcher callbacks
  • Periodic watcher operation modes
  • Ev — The Ev class
    • Ev::backend — Returns an integer describing the backend used by libev.
    • Ev::depth — Returns recursion depth
    • Ev::embeddableBackends — Returns the set of backends that are embeddable in other event loops.
    • Ev::feedSignal — Feed a signal event info Ev
    • Ev::feedSignalEvent — Feed signal event into the default loop
    • Ev::iteration — Return the number of times the default event loop has polled for new events.
    • Ev::now — Returns the time when the last iteration of the default event loop has started.
    • Ev::nowUpdate — Establishes the current time by querying the kernel, updating the time returned by Ev::now in the progress.
    • Ev::recommendedBackends — Returns a bit mask of recommended backends for current platform.
    • Ev::resume — Resume previously suspended default event loop
    • Ev::run — Begin checking for events and calling callbacks for the default loop
    • Ev::sleep — Block the process for the given number of seconds.
    • Ev::stop — Stops the default event loop
    • Ev::supportedBackends — Returns the set of backends supported by current libev configuration.
    • Ev::suspend — Suspend the default event loop
    • Ev::time — Returns the current time in fractional seconds since the epoch.
    • Ev::verify — Performs internal consistency checks(for debugging)
  • EvCheck — The EvCheck class
    • EvCheck::__construct — Constructs the EvCheck watcher object
    • EvCheck::createStopped — Create instance of a stopped EvCheck watcher
  • EvChild — The EvChild class
    • EvChild::__construct — Constructs the EvChild watcher object
    • EvChild::createStopped — Create instance of a stopped EvCheck watcher
    • EvChild::set — Configures the watcher
  • EvEmbed — The EvEmbed class
    • EvEmbed::__construct — Constructs the EvEmbed object
    • EvEmbed::createStopped — Create stopped EvEmbed watcher object
    • EvEmbed::set — Configures the watcher
    • EvEmbed::sweep — Make a single, non-blocking sweep over the embedded loop.
  • EvFork — The EvFork class
    • EvFork::__construct — Constructs the EvFork watcher object
    • EvFork::createStopped — Creates a stopped instance of EvFork watcher class
  • EvIdle — The EvIdle class
    • EvIdle::__construct — Constructs the EvIdle watcher object
    • EvIdle::createStopped — Creates instance of a stopped EvIdle watcher object
  • EvIo — The EvIo class
    • EvIo::__construct — Constructs EvIo watcher object
    • EvIo::createStopped — Create stopped EvIo watcher object
    • EvIo::set — Configures the watcher
  • EvLoop — The EvLoop class
    • EvLoop::backend — Returns an integer describing the backend used by libev.
    • EvLoop::check — Creates EvCheck object associated with the current event loop instance
    • EvLoop::child — Creates EvChild object associated with the current event loop
    • EvLoop::__construct — Constructs the event loop object
    • EvLoop::defaultLoop — Returns or creates the default event loop.
    • EvLoop::embed — Creates an instance of EvEmbed watcher associated with the current EvLoop object.
    • EvLoop::fork — Creates EvFork watcher object associated with the current event loop instance
    • EvLoop::idle — Creates EvIdle watcher object associated with the current event loop instance
    • EvLoop::invokePending — Invoke all pending watchers while resetting their pending state
    • EvLoop::io — Create EvIo watcher object associated with the current event loop instance
    • EvLoop::loopFork — Must be called after a fork
    • EvLoop::now — Returns the current "event loop time"
    • EvLoop::nowUpdate — Establishes the current time by querying the kernel, updating the time returned by EvLoop::now in the progress.
    • EvLoop::periodic — Creates EvPeriodic watcher object associated with the current event loop instance
    • EvLoop::prepare — Creates EvPrepare watcher object associated with the current event loop instance
    • EvLoop::resume — Resume previously suspended default event loop
    • EvLoop::run — Begin checking for events and calling callbacks for the loop
    • EvLoop::signal — Creates EvSignal watcher object associated with the current event loop instance
    • EvLoop::stat — Creates EvStat watcher object associated with the current event loop instance
    • EvLoop::stop — Stops the event loop
    • EvLoop::suspend — Suspend the loop
    • EvLoop::timer — Creates EvTimer watcher object associated with the current event loop instance
    • EvLoop::verify — Performs internal consistency checks(for debugging)
  • EvPeriodic — The EvPeriodic class
    • EvPeriodic::again — Simply stops and restarts the periodic watcher again.
    • EvPeriodic::at — Returns the absolute time that this watcher is supposed to trigger next
    • EvPeriodic::__construct — Constructs EvPeriodic watcher object
    • EvPeriodic::createStopped — Create a stopped EvPeriodic watcher
    • EvPeriodic::set — Configures the watcher
  • EvPrepare — The EvPrepare class
    • EvPrepare::__construct — Constructs EvPrepare watcher object
    • EvPrepare::createStopped — Creates a stopped instance of EvPrepare watcher
  • EvSignal — The EvSignal class
    • EvSignal::__construct — Constructs EvPeriodic watcher object
    • EvSignal::createStopped — Create stopped EvSignal watcher object
    • EvSignal::set — Configures the watcher
  • EvStat — The EvStat class
    • EvStat::attr — Returns the values most recently detected by Ev
    • EvStat::__construct — Constructs EvStat watcher object
    • EvStat::createStopped — Create a stopped EvStat watcher object
    • EvStat::prev — Returns the previous set of values returned by EvStat::attr
    • EvStat::set — Configures the watcher
    • EvStat::stat — Initiates the stat call
  • EvTimer — The EvTimer class
    • EvTimer::again — Restarts the timer watcher
    • EvTimer::__construct — Constructs an EvTimer watcher object
    • EvTimer::createStopped — Creates EvTimer stopped watcher object
    • EvTimer::set — Configures the watcher
  • EvWatcher — The EvWatcher class
    • EvWatcher::clear — Clear watcher pending status
    • EvWatcher::__construct — Abstract constructor of a watcher object
    • EvWatcher::feed — Feeds the given revents set into the event loop
    • EvWatcher::getLoop — Returns the loop responsible for the watcher
    • EvWatcher::invoke — Invokes the watcher callback with the given received events bit mask
    • EvWatcher::keepalive — Configures whether to keep the loop from returning
    • EvWatcher::setCallback — Sets new callback for the watcher
    • EvWatcher::start — Starts the watcher
    • EvWatcher::stop — Stops the watcher
eio_write
简介
进程控制扩展


简介

This extension provides inteface to » libev library - a high performance full-featured event loop written in C.

Note: 此扩展在 Windows 平台上不可用。

Libev is an event loop: one registers interest in certain events (such as a file descriptor being readable or a timeout occurring), and it will manage these event sources and provide the program with events.

To do this, it must take more or less complete control over the process (or thread) by executing the event loop handler, and will then communicate events via a callback mechanism.

You register interest in certain events by registering so-called event watchers, and then hand it over to libev by starting the watcher.

For details refer to the » documentation of libev

Ev
安装／配置
Ev


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Ev


需求

libev library is embedded into this extension. You don't need to install it separately.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/ev .

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

Most constants are moved to Ev singleton class.

资源类型
范例
Ev


范例

Example #1 Simple timers

<?php
// Create and start timer firing after 2 seconds
$w1 = new EvTimer(2, 0, function () {
    echo "2 seconds elapsed\n";
});

// Create and launch timer firing after 2 seconds repeating each second
// until we manually stop it
$w2 = new EvTimer(2, 1, function ($w) {
    echo "is called every second, is launched after 2 seconds\n";
    echo "iteration = ", Ev::iteration(), PHP_EOL;

    // Stop the watcher after 5 iterations
    Ev::iteration() == 5 and $w->stop();
    // Stop the watcher if further calls cause more than 10 iterations
    Ev::iteration() >= 10 and $w->stop();
});

// Create stopped timer. It will be inactive until we start it ourselves
$w_stopped = EvTimer::createStopped(10, 5, function($w) {
    echo "Callback of a timer created as stopped\n";

    // Stop the watcher after 2 iterations
    Ev::iteration() >= 2 and $w->stop();
});

// Loop until Ev::stop() is called or all of watchers stop
Ev::run();

// Start and look if it works
$w_stopped->start();
echo "Run single iteration\n";
Ev::run(Ev::RUN_ONCE);

echo "Restart the second watcher and try to handle the same events, but don't block\n";
$w2->again();
Ev::run(Ev::RUN_NOWAIT);

$w = new EvTimer(10, 0, function() {});
echo "Running a blocking loop\n";
Ev::run();
echo "END\n";
?>

以上例程的输出类似于：

2 seconds elapsed
is called every second, is launched after 2 seconds
iteration = 1
is called every second, is launched after 2 seconds
iteration = 2
is called every second, is launched after 2 seconds
iteration = 3
is called every second, is launched after 2 seconds
iteration = 4
is called every second, is launched after 2 seconds
iteration = 5
Run single iteration
Callback of a timer created as stopped
Restart the second watcher and try to handle the same events, but don't block
Running a blocking loop
is called every second, is launched after 2 seconds
iteration = 8
is called every second, is launched after 2 seconds
iteration = 9
is called every second, is launched after 2 seconds
iteration = 10
END

Example #2 Periodic timer. Tick each 10.5 seconds

<?php
$w = new EvPeriodic(0., 10.5, NULL, function ($w, $revents) {
    echo time(), PHP_EOL;
});

Ev::run();
?>

Example #3 Periodic timer. Use reschedule callback

<?php
// Tick each 10.5 seconds

function reschedule_cb ($watcher, $now) {
    return $now + (10.5. - fmod($now, 10.5));
}

$w = new EvPeriodic(0., 0., "reschedule_cb", function ($w, $revents) {
    echo time(), PHP_EOL;
});

Ev::run();
?>

Example #4 Periodic timer. Tick every 10.5 seconds starting at now

<?php
// Tick every 10.5 seconds starting at now
$w = new EvPeriodic(fmod(Ev::now(), 10.5), 10.5, NULL, function ($w, $revents) {
    echo time(), PHP_EOL;
});

Ev::run();
?>

Example #5 Wait until STDIN is readable

<?php
// Wait until STDIN is readable
$w = new EvIo(STDIN, Ev::READ, function ($watcher, $revents) {
    echo "STDIN is readable\n";
});

Ev::run(Ev::RUN_ONCE);
?>

Example #6 Use some async I/O to access a socket

<?php
/* Use some async I/O to access a socket */

// `sockets' extension still logs warnings
// for EINPROGRESS, EAGAIN/EWOULDBLOCK etc.
error_reporting(E_ERROR);

$e_nonblocking = array (/*EAGAIN or EWOULDBLOCK*/11, /*EINPROGRESS*/115);

// Get the port for the WWW service
$service_port = getservbyname('www', 'tcp');

// Get the IP address for the target host
$address = gethostbyname('google.co.uk');

// Create a TCP/IP socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === FALSE) {
    echo "socket_create() failed: reason: "
        .socket_strerror(socket_last_error()) . "\n";
}

// Set O_NONBLOCK flag
socket_set_nonblock($socket);

// Abort on timeout
$timeout_watcher = new EvTimer(10.0, 0., function () use ($socket) {
    socket_close($socket);
    Ev::stop(Ev::BREAK_ALL);
});

// Make HEAD request when the socket is writable
$write_watcher = new EvIo($socket, Ev::WRITE, function ($w)
    use ($socket, $timeout_watcher, $e_nonblocking)
{
    // Stop timeout watcher
    $timeout_watcher->stop();
    // Stop write watcher
    $w->stop();

    $in = "HEAD / HTTP/1.1\r\n";
    $in .= "Host: google.co.uk\r\n";
    $in .= "Connection: Close\r\n\r\n";

    if (!socket_write($socket, $in, strlen($in))) {
        trigger_error("Failed writing $in to socket", E_USER_ERROR);
    }

    $read_watcher = new EvIo($socket, Ev::READ, function ($w, $re)
        use ($socket, $e_nonblocking)
    {
        // Socket is readable. recv() 20 bytes using non-blocking mode
        $ret = socket_recv($socket, $out, 20, MSG_DONTWAIT);

        if ($ret) {
            echo $out;
        } elseif ($ret === 0) {
            // All read
            $w->stop();
            socket_close($socket);
            return;
        }

        // Caught EINPROGRESS, EAGAIN, or EWOULDBLOCK
        if (in_array(socket_last_error(), $e_nonblocking)) {
            return;
        }

        $w->stop();
        socket_close($socket);
    });

    Ev::run();
});

$result = socket_connect($socket, $address, $service_port);

Ev::run();
?>

以上例程的输出类似于：

HTTP/1.1 301 Moved Permanently
Location: http://www.google.co.uk/
Content-Type: text/html; CHARSET=gb2312
Date: Sun, 23 Dec 2012 16:08:27 GMT
Expires: Tue, 22 Jan 2013 16:08:27 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 221
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Connection: close

Example #7 Embedding one loop into another

<?php
/*
* Try to get an embeddable event loop and embed it into the default event loop.
* If it is impossible, use the default
* loop. The default loop is stored in $loop_hi, while the embeddable loop is
* stored in $loop_lo(which is $loop_hi in the case no embeddable loop can be
* used).
*
* Sample translated to PHP
* http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#Examples_CONTENT-9
*/
$loop_hi = EvLoop::defaultLoop();
$loop_lo = NULL;
$embed   = NULL;

/*
* See if there is a chance of getting one that works
* (flags' value of 0 means autodetection)
*/
$loop_lo = Ev::embeddableBackends() & Ev::recommendedBackends()
    ? new EvLoop(Ev::embeddableBackends() & Ev::recommendedBackends())
    : 0;

if ($loop_lo) {
    $embed = new EvEmbed($loop_lo, function () {});
} else {
    $loop_lo = $loop_hi;
}
?>

Example #8 Embedding loop created with kqueue backend into the default loop

<?php
/*
* Check if kqueue is available but not recommended and create a kqueue backend
* for use with sockets (which usually work with any kqueue implementation).
* Store the kqueue/socket-only event loop in loop_socket. (One might optionally
* use EVFLAG_NOENV, too)
*
* Example borrowed from
* http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#Examples_CONTENT-9
*/
$loop        = EvLoop::defaultLoop();
$socket_loop = NULL;
$embed       = NULL;

if (Ev::supportedBackends() & ~Ev::recommendedBackends() & Ev::BACKEND_KQUEUE) {
    if (($socket_loop = new EvLoop(Ev::BACKEND_KQUEUE))) {
        $embed = new EvEmbed($loop);
    }
}

if (!$socket_loop) {
    $socket_loop = $loop;
}

// Now use $socket_loop for all sockets, and $loop for anything else
?>

Example #9 Handle SIGTERM signal

<?php
$w = new EvSignal(SIGTERM, function ($watcher) {
    echo "SIGTERM received\n";
    $watcher->stop();
});

Ev::run();
?>

Example #10 Monitor changes of /var/log/messages

<?php
// Use 10 second update interval.
$w = new EvStat("/var/log/messages", 8, function ($w) {
    echo "/var/log/messages changed\n";

    $attr = $w->attr();

    if ($attr['nlink']) {
        printf("Current size: %ld\n", $attr['size']);
        printf("Current atime: %ld\n", $attr['atime']);
        printf("Current mtime: %ld\n", $attr['mtime']);
    } else {
        fprintf(STDERR, "`messages` file is not there!");
        $w->stop();
    }
});

Ev::run();
?>

Example #11 Monotor changes of /var/log/messages. Avoid missing updates by means of one second delay

<?php
$timer = EvTimer::createStopped(0., 1.02, function ($w) {
    $w->stop();

    $stat = $w->data;

    // 1 second after the most recent change of the file
    printf("Current size: %ld\n", $stat->attr()['size']);
});

$stat = new EvStat("/var/log/messages", 0., function () use ($timer) {
    // Reset timer watcher
    $timer->again();
});

$timer->data = $stat;

Ev::run();
?>

Example #12 Process status changes

<?php
$pid = pcntl_fork();

if ($pid == -1) {
    fprintf(STDERR, "pcntl_fork failed\n");
} elseif ($pid) {
    $w = new EvChild($pid, FALSE, function ($w, $revents) {
        $w->stop();

        printf("Process %d exited with status %d\n", $w->rpid, $w->rstatus);
    });

    Ev::run();

    // Protect against Zombies
    pcntl_wait($status);
} else {
    //Forked child
    exit(2);
}
?>
预定义常量
Watchers
Ev


Watchers

A watcher is an object that gets created to record interest in some event. For instance, the following code waits for STDIN to become readable:

<?php
// Wait until STDIN is readable
$w = new EvIo(STDIN, Ev::READ, function ($watcher, $revents) {
 echo "STDIN is readable\n";
});
Ev::run(Ev::RUN_ONCE);
?>

All the watcher constructors automatically start the watchers. createStopped methods create stopped watchers(e.g. EvIo::createStopped() )

Note that a watcher will automatically be stopped when the watcher object is destroyed. Therefore, the watcher objects returned by the constructors or factory methods should be kept.

Note also that all methods changing some watcher property( set , priority etc.) automatically stop and start it again if it is active, which means pending events get lost.

See also: Watcher callbacks .

范例
Watcher callbacks
Ev


Watcher callbacks

All watchers can be active(waiting for events) or inactive(paused). Only active watchers will have their callbacks invoked. All callbacks will be called with at least two arguments: watcher - the watcher, and revents a bitmask of received events.

Watcher callbacks are passed to the watcher contructors(the classes derived from EvWatcher - EvCheck::__construct() , EvChild::__construct() etc.). A watcher callback should match the following prototype:

void callback ([ object $watcher = NULL [, int $revents = NULL ]] )

watcher

The watcher instance(of a class extending EvWatcher ).

revents

Watcher received events .

Each watcher type has its associated bit in revents , so one can use the same callback for multiple watchers. The event mask is named after the type, i.e. EvChild (or EvLoop::child() ) sets EV::CHILD , EvPrepare (or EvLoop::prepare() ) sets Ev::PREPARE , EvPeriodic (or EvLoop::periodic() ) sets Ev::PERIODIC and so on, with the exception of I/O events (which can set both Ev::READ and Ev::WRITE bits).

Watchers
Periodic watcher operation modes
Ev


Periodic watcher operation modes

EvPeriodic watcher works in different modes depending on the offset , interval and reschedule_cb parameters.

  1. Absolute timer . In this mode interval = 0 , reschedule_cb = NULL. This time simply fires at the wallclock time offset and doesn't repeat. It will not adjust when a time jump occurs, that is, if it is to be run at January 1st 2014 then it will run when the system time reaches or surpasses this time.

  2. Repeating interval timer . In this mode interval > 0 , reschedule_cb = NULL; the watcher will always be scheduled to timeout at the next offset + N * interval time(for some integer N ) and then repeat, regardless of any time jumps.

    This can be used to create timers that do not drift with respect to system time:

    <?php
    $hourly     = EvPeriodic(0, 3600, NULL, function () {
      echo     "once per hour\n";
    };
    ?>
    That doesn't mean there will always be 3600 seconds in between triggers, but only that the callback will be called when the system time shows a full hour( UTC ).

    EvPeriodic will try to run the callback in this mode at the next possible time where time = offset ( mod interval ), regardless of any time jumps.

  3. Manual reschedule mode . In this mode reschedule_cb is a callable .

    interval and offset are both being ignored. Instead, each time the periodic watcher gets scheduled, the reschedule callback ( reschedule_cb ) will be called with the watcher as first, and the current time as second argument.

    This callback must not stop or destroy this or any other periodic watchers, ever, and must not call any event loop functions or methods. To stop it return 1e30 and stop it afterwards. An EvPrepare watcher may be used for this task.

    It must return the next time to trigger, based on the passed time value (that is, the lowest time value larger than or equal to the second argument). It will usually be called just before the callback will be triggered, but might be called at other times, too.

    Example #1 Using reschedule callback

    <?php
    // Tick each 10.5 seconds

    function reschedule_cb ($watcher, $now) {
       return     $now + (10.5. - fmod($now, 10.5));
    }

    $w = new EvPeriodic(0., 0., "reschedule_cb", function ($w, $revents) {
       echo     time(), PHP_EOL;
    });

    Ev::run();
    ?>
Watcher callbacks
Ev
Ev


The Ev class

(PECL ev >= 0.2.0)

简介

Ev is a static class providing access to the default loop and to some common operations.

类摘要

final Ev {
/* Constants */
const integer FLAG_AUTO = 0 ;
const integer FLAG_NOENV = 16777216 ;
const integer FLAG_FORKCHECK = 33554432 ;
const integer FLAG_NOINOTIFY = 1048576 ;
const integer FLAG_SIGNALFD = 2097152 ;
const integer FLAG_NOSIGMASK = 4194304 ;
const integer RUN_NOWAIT = 1 ;
const integer RUN_ONCE = 2 ;
const integer BREAK_CANCEL = 0 ;
const integer BREAK_ONE = 1 ;
const integer BREAK_ALL = 2 ;
const integer MINPRI = -2 ;
const integer MAXPRI = 2 ;
const integer READ = 1 ;
const integer WRITE = 2 ;
const integer TIMER = 256 ;
const integer PERIODIC = 512 ;
const integer SIGNAL = 1024 ;
const integer CHILD = 2048 ;
const integer STAT = 4096 ;
const integer IDLE = 8192 ;
const integer PREPARE = 16384 ;
const integer CHECK = 32768 ;
const integer EMBED = 65536 ;
const integer CUSTOM = 16777216 ;
const integer ERROR = 2147483648 ;
const integer BACKEND_SELECT = 1 ;
const integer BACKEND_POLL = 2 ;
const integer BACKEND_EPOLL = 4 ;
const integer BACKEND_KQUEUE = 8 ;
const integer BACKEND_DEVPOLL = 16 ;
const integer BACKEND_PORT = 32 ;
const integer BACKEND_ALL = 63 ;
const integer BACKEND_MASK = 65535 ;
/* 方法 */
final public static int backend ( void )
final public static int depth ( void )
final public static void embeddableBackends ( void )
final public static void feedSignal ( int $signum )
final public static void feedSignalEvent ( int $signum )
final public static int iteration ( void )
final public static double now ( void )
final public static void nowUpdate ( void )
final public static void recommendedBackends ( void )
final public static void resume ( void )
final public static void run ([ int $flags ] )
final public static void sleep ( double $seconds )
final public static void stop ([ int $how ] )
final public static void supportedBackends ( void )
final public static void suspend ( void )
final public static double time ( void )
final public static void verify ( void )
}

预定义常量

Flags passed to create a loop:

Ev::FLAG_AUTO

The default flags value

Ev::FLAG_NOENV

If this flag used(or the program runs setuid or setgid), libev won't look at the environment variable LIBEV_FLAGS . Otherwise(by default), LIBEV_FLAGS will override the flags completely if it is found. Useful for performance tests and searching for bugs.

Ev::FLAG_FORKCHECK

Makes libev check for a fork in each iteration, instead of calling EvLoop::fork() manually. This works by calling getpid() on every iteration of the loop, and thus this might slow down the event loop with lots of loop iterations, but usually is not noticeable. This flag setting cannot be overridden or specified in the LIBEV_FLAGS environment variable.

Ev::FLAG_NOINOTIFY

When this flag is specified, libev won't attempt to use the inotify API for its » ev_stat watchers. The flag can be useful to conserve inotify file descriptors, as otherwise each loop using ev_stat watchers consumes one inotify handle.

Ev::FLAG_SIGNALFD

When this flag is specified, libev will attempt to use the signalfd API for its » ev_signal (and » ev_child ) watchers. This API delivers signals synchronously, which makes it both faster and might make it possible to get the queued signal data. It can also simplify signal handling with threads, as long as signals are properly blocked in threads. Signalfd will not be used by default.

Ev::FLAG_NOSIGMASK

When this flag is specified, libev will avoid to modify the signal mask. Specifically, this means having to make sure signals are unblocked before receiving them.

This behaviour is useful for custom signal handling, or handling signals only in specific threads.

Flags passed to Ev::run() , or EvLoop::run()

Ev::RUN_NOWAIT

Means that event loop will look for new events, will handle those events and any already outstanding ones, but will not wait and block the process in case there are no events and will return after one iteration of the loop. This is sometimes useful to poll and handle new events while doing lengthy calculations, to keep the program responsive.

Ev::RUN_ONCE

Means that event loop will look for new events (waiting if necessary) and will handle those and any already outstanding ones. It will block the process until at least one new event arrives (which could be an event internal to libev itself, so there is no guarantee that a user-registered callback will be called), and will return after one iteration of the loop.

Flags passed to Ev::stop() , or EvLoop::stop()

Ev::BREAK_CANCEL

Cancel the break operation.

Ev::BREAK_ONE

Makes the innermost Ev::run() (or EvLoop::run() ) call return.

Ev::BREAK_ALL

Makes all nested Ev::run() (or EvLoop::run() ) calls return.

Watcher priorities:

Ev::MINPRI

Minimum allowed watcher priority.

Ev::MAXPRI

Maximum allowed watcher priority.

Bit masks of (received) events:

Ev::READ

The file descriptor in the EvIo watcher has become readable.

Ev::WRITE

The file descriptor in the EvIo watcher has become writable.

Ev::TIMER

EvTimer watcher has been timed out.

Ev::PERIODIC

EvPeriodic watcher has been timed out.

Ev::SIGNAL

A signal specified in EvSignal::__construct() has been received.

Ev::CHILD

The pid specified in EvChild::__construct() has received a status change.

Ev::STAT

The path specified in EvStat watcher changed its attributes.

Ev::IDLE

EvIdle watcher works when there is nothing to do with other watchers.

Ev::PREPARE

All EvPrepare watchers are invoked just before Ev::run() starts. Thus, EvPrepare watchers are the last watchers invoked before the event loop sleeps or polls for new events.

Ev::CHECK

All EvCheck watchers are queued just after Ev::run() has gathered the new events, but before it queues any callbacks for any received events. Thus, EvCheck watchers will be invoked before any other watchers of the same or lower priority within an event loop iteration.

Ev::EMBED

The embedded event loop specified in the EvEmbed watcher needs attention.

Ev::CUSTOM

Not ever sent(or otherwise used) by libev itself, but can be freely used by libev users to signal watchers (e.g. via EvWatcher::feed() ).

Ev::ERROR

An unspecified error has occurred, the watcher has been stopped. This might happen because the watcher could not be properly started because libev ran out of memory, a file descriptor was found to be closed or any other problem. Libev considers these application bugs. See also » ANATOMY OF A WATCHER

Backend flags:

Ev::BACKEND_SELECT

select(2) backend

Ev::BACKEND_POLL

poll(2) backend

Ev::BACKEND_EPOLL

Linux-specific epoll(7) backend for both pre- and post-2.6.9 kernels

Ev::BACKEND_KQUEUE

kqueue backend used on most BSD systems. EvEmbed watcher could be used to embed one loop(with kqueue backend) into another. For instance, one can try to create an event loop with kqueue backend and use it for sockets only.

Ev::BACKEND_DEVPOLL

Solaris 8 backend. This is not implemented yet.

Ev::BACKEND_PORT

Solaris 10 event port mechanism with a good scaling.

Ev::BACKEND_ALL

Try all backends(even currupted ones). It's not recommended to use it explicitly. Bitwise operators should be applied here(e.g. Ev::BACKEND_ALL & ~ Ev::BACKEND_KQUEUE ) Use Ev::recommendedBackends() , or don't specify any backends at all.

Ev::BACKEND_MASK

Not a backend, but a mask to select all backend bits from flags value to mask out any backends(e.g. when modifying the LIBEV_FLAGS environment variable).

Note:

For the default loop during module initialization phase Ev registers » ev_loop_fork call by means of pthread_atfork (if available).

Note:

There are methods providing access to the default event loop in Ev class(e.g. Ev::iteration() , Ev::depth() etc.) For custom loops (created with EvLoop::__construct() ) these values may be accessed via corresponding properties and methods of the EvLoop class.

The instance of the default event loop itself can be fetched by means of EvLoop::defaultLoop() method.

Table of Contents

  • Ev::backend — Returns an integer describing the backend used by libev.
  • Ev::depth — Returns recursion depth
  • Ev::embeddableBackends — Returns the set of backends that are embeddable in other event loops.
  • Ev::feedSignal — Feed a signal event info Ev
  • Ev::feedSignalEvent — Feed signal event into the default loop
  • Ev::iteration — Return the number of times the default event loop has polled for new events.
  • Ev::now — Returns the time when the last iteration of the default event loop has started.
  • Ev::nowUpdate — Establishes the current time by querying the kernel, updating the time returned by Ev::now in the progress.
  • Ev::recommendedBackends — Returns a bit mask of recommended backends for current platform.
  • Ev::resume — Resume previously suspended default event loop
  • Ev::run — Begin checking for events and calling callbacks for the default loop
  • Ev::sleep — Block the process for the given number of seconds.
  • Ev::stop — Stops the default event loop
  • Ev::supportedBackends — Returns the set of backends supported by current libev configuration.
  • Ev::suspend — Suspend the default event loop
  • Ev::time — Returns the current time in fractional seconds since the epoch.
  • Ev::verify — Performs internal consistency checks(for debugging)
Periodic watcher operation modes
Ev::backend
Ev


Returns an integer describing the backend used by libev.

Ev
Ev::depth
Ev
PHP Manual

Ev::backend

(PECL ev >= 0.2.0)

Ev::backend — Returns an integer describing the backend used by libev.

说明

final public static int Ev::backend ( void )

Returns an integer describing the backend used by libev . See Backend flags

参数

此函数没有参数。

返回值

Returns an integer(bit mask) describing the backend used by libev .

参见

  • EvEmbed
  • Ev::embeddableBackends() - Returns the set of backends that are embeddable in other event loops.
  • Ev::recommendedBackends() - Returns a bit mask of recommended backends for current platform.
  • Ev::supportedBackends() - Returns the set of backends supported by current libev configuration.
  • Backend flags
Ev
Ev::depth
Ev


Returns recursion depth

Ev::backend
Ev::embeddableBackends
Ev
PHP Manual

Ev::depth

(PECL ev >= 0.2.0)

Ev::depth — Returns recursion depth

说明

final public static int Ev::depth ( void )

The number of times Ev::run() was entered minus the number of times Ev::run() was exited normally, in other words, the recursion depth. Outside Ev::run() , this number is 0 . In a callback, this number is 1 , unless Ev::run() was invoked recursively (or from another thread), in which case it is higher.

参数

此函数没有参数。

返回值

ev_depth() returns recursion depth of the default loop.

参见

  • Ev::iteration() - Return the number of times the default event loop has polled for new events.
Ev::backend
Ev::embeddableBackends
Ev


Returns the set of backends that are embeddable in other event loops.

Ev::depth
Ev::feedSignal
Ev
PHP Manual

Ev::embeddableBackends

(PECL ev >= 0.2.0)

Ev::embeddableBackends — Returns the set of backends that are embeddable in other event loops.

说明

final public static void Ev::embeddableBackends ( void )

Returns the set of backends that are embeddable in other event loops.

参数

此函数没有参数。

返回值

Returns a bit mask which can containing backend flags combined using bitwise OR operator.

范例

Example #1 Embedding loop created with kqueue backend into the default loop

<?php
/*
* Check if kqueue is available but not recommended and create a kqueue backend
* for use with sockets (which usually work with any kqueue implementation).
* Store the kqueue/socket-only event loop in loop_socket. (One might optionally
* use EVFLAG_NOENV, too)
*
* Example borrowed from
* http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#Examples_CONTENT-9
*/
$loop        = EvLoop::defaultLoop();
$socket_loop = NULL;
$embed       = NULL;

if (Ev::supportedBackends() & ~Ev::recommendedBackends() & Ev::BACKEND_KQUEUE) {
 if (($socket_loop = new EvLoop(Ev::BACKEND_KQUEUE))) {
  $embed = new EvEmbed($loop);
 }
}

if (!$socket_loop) {
 $socket_loop = $loop;
}

// Now use $socket_loop for all sockets, and $loop for anything else
?>

参见

  • EvEmbed
  • Ev::recommendedBackends() - Returns a bit mask of recommended backends for current platform.
  • Ev::supportedBackends() - Returns the set of backends supported by current libev configuration.
  • Backend flags
  • Examples
Ev::depth
Ev::feedSignal
Ev


Feed a signal event info Ev

Ev::embeddableBackends
Ev::feedSignalEvent
Ev
PHP Manual

Ev::feedSignal

(PECL ev >= 0.2.0)

Ev::feedSignal — Feed a signal event info Ev

说明

final public static void Ev::feedSignal ( int $signum )

Simulates a signal receive. It is safe to call this function at any time, from any context, including signal handlers or random threads. Its main use is to customise signal handling in the process.

Unlike Ev::feedSignalEvent() , this works regardless of which loop has registered the signal.

参数

signum

Signal number. See signal(7) man page for detals. You can use constants exported by pcntl extension.

返回值

没有返回值。

参见

  • Ev::feedSignalEvent() - Feed signal event into the default loop
Ev::embeddableBackends
Ev::feedSignalEvent
Ev


Feed signal event into the default loop

Ev::feedSignal
Ev::iteration
Ev
PHP Manual

Ev::feedSignalEvent

(No version information available, might only be in Git)

Ev::feedSignalEvent — Feed signal event into the default loop

说明

final public static void Ev::feedSignalEvent ( int $signum )

Feed signal event into the default loop. Ev will react to this call as if the signal specified by signal had occurred.

参数

signum

Signal number. See signal(7) man page for detals. See also constants exported by pcntl extension.

返回值

没有返回值。

参见

  • Ev::feedSignal() - Feed a signal event info Ev
Ev::feedSignal
Ev::iteration
Ev


Return the number of times the default event loop has polled for new events.

Ev::feedSignalEvent
Ev::now
Ev
PHP Manual

Ev::iteration

(PECL ev >= 0.2.0)

Ev::iteration — Return the number of times the default event loop has polled for new events.

说明

final public static int Ev::iteration ( void )

Return the number of times the event loop has polled for new events. Sometimes useful as a generation counter.

参数

此函数没有参数。

返回值

Returns number of polls of the default event loop.

参见

  • Ev::depth() - Returns recursion depth
Ev::feedSignalEvent
Ev::now
Ev


Returns the time when the last iteration of the default event loop has started.

Ev::iteration
Ev::nowUpdate
Ev
PHP Manual

Ev::now

(PECL ev >= 0.2.0)

Ev::now — Returns the time when the last iteration of the default event loop has started.

说明

final public static double Ev::now ( void )

Returns the time when the last iteration of the default event loop has started. This is the time that timers( EvTimer and EvPeriodic ) are based on, and referring to it is usually faster then calling Ev::time() .

参数

此函数没有参数。

返回值

Returns number of seconds(fractional) representing the time when the last iteration of the default event loop has started.

参见

  • Ev::nowUpdate() - Establishes the current time by querying the kernel, updating the time returned by Ev::now in the progress.
Ev::iteration
Ev::nowUpdate
Ev


Establishes the current time by querying the kernel, updating the time returned by Ev::now in the progress.

Ev::now
Ev::recommendedBackends
Ev
PHP Manual

Ev::nowUpdate

(PECL ev >= 0.2.0)

Ev::nowUpdate — Establishes the current time by querying the kernel, updating the time returned by Ev::now in the progress.

说明

final public static void Ev::nowUpdate ( void )

Establishes the current time by querying the kernel, updating the time returned by Ev::now() in the progress. This is a costly operation and is usually done automatically within Ev::run() .

This method is rarely useful, but when some event callback runs for a very long time without entering the event loop, updating libev 's consideration of the current time is a good idea.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • Ev::now() - Returns the time when the last iteration of the default event loop has started.
Ev::now
Ev::recommendedBackends
Ev


Returns a bit mask of recommended backends for current platform.

Ev::nowUpdate
Ev::resume
Ev
PHP Manual

Ev::recommendedBackends

(PECL ev >= 0.2.0)

Ev::recommendedBackends — Returns a bit mask of recommended backends for current platform.

说明

final public static void Ev::recommendedBackends ( void )

Returns the set of all backends compiled into this binary of libev and also recommended for this platform, meaning it will work for most file descriptor types. This set is often smaller than the one returned by ev_supported_backends() , as for example kqueue is broken on most BSD systems and will not be auto-detected unless it is requested explicitly. This is the set of backends that libev will probe no backends specified explicitly.

参数

此函数没有参数。

返回值

Returns a bit mask which can containing backend flags combined using bitwise OR operator.

范例

Example #1 Embedding one loop into another

<?php
/*
* Try to get an embeddable event loop and embed it into the default event loop.
* If it is impossible, use the default
* loop. The default loop is stored in $loop_hi, while the embeddable loop is
* stored in $loop_lo(which is $loop_hi in the case no embeddable loop can be
* used).
*
* Sample translated to PHP
* http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#Examples_CONTENT-9
*/
$loop_hi = EvLoop::defaultLoop();
$loop_lo = NULL;
$embed   = NULL;

/*
* See if there is a chance of getting one that works
* (flags' value of 0 means autodetection)
*/
$loop_lo = Ev::embeddableBackends() & Ev::recommendedBackends()
 ? new EvLoop(Ev::embeddableBackends() & Ev::recommendedBackends())
 : 0;

if ($loop_lo) {
 $embed = new EvEmbed($loop_lo, function () {});
} else {
 $loop_lo = $loop_hi;
}
?>

参见

  • EvEmbed
  • Ev::embeddableBackends() - Returns the set of backends that are embeddable in other event loops.
  • Ev::supportedBackends() - Returns the set of backends supported by current libev configuration.
  • Backend flags
  • Examples
Ev::nowUpdate
Ev::resume
Ev


Resume previously suspended default event loop

Ev::recommendedBackends
Ev::run
Ev
PHP Manual

Ev::resume

(PECL ev >= 0.2.0)

Ev::resume — Resume previously suspended default event loop

说明

final public static void Ev::resume ( void )

Ev::suspend() and Ev::resume() methods suspend and resume a loop correspondingly.

All timer watchers will be delayed by the time spend between suspend and resume , and all periodic watchers will be rescheduled(that is, they will lose any events that would have occurred while suspended).

After calling Ev::suspend() it is not allowed to call any function on the given loop other than Ev::resume() . Also it is not allowed to call Ev::resume() without a previous call to Ev::suspend() .

Calling suspend / resume has the side effect of updating the event loop time(see Ev::nowUpdate() ).

参数

此函数没有参数。

返回值

没有返回值。

参见

  • Ev::suspend() - Suspend the default event loop
Ev::recommendedBackends
Ev::run
Ev


Begin checking for events and calling callbacks for the default loop

Ev::resume
Ev::sleep
Ev
PHP Manual

Ev::run

(PECL ev >= 0.2.0)

Ev::run — Begin checking for events and calling callbacks for the default loop

说明

final public static void Ev::run ([ int $flags ] )

Begin checking for events and calling callbacks for the default loop . Returns when a callback calls Ev::stop() method, or the flags are nonzero(in which case the return value is true) or when there are no active watchers which reference the loop( EvWatcher::keepalive() is TRUE), in which case the return value will be FALSE. The return value can generally be interpreted as if TRUE, there is more work left to do .

参数

flags

Optional parameter flags can be one of the following:

List for possible values of flags
flags | Description
0 | The default behavior described above
Ev::RUN_ONCE | Block at most one(wait, but don't loop)
Ev::RUN_NOWAIT | Don't block at all(fetch/handle events, but don't wait)

See the run flag constants .

返回值

没有返回值。

参见

  • Ev::stop() - Stops the default event loop
  • EvLoop::run() - Begin checking for events and calling callbacks for the loop
Ev::resume
Ev::sleep
Ev


Block the process for the given number of seconds.

Ev::run
Ev::stop
Ev
PHP Manual

Ev::sleep

(PECL ev >= 0.2.0)

Ev::sleep — Block the process for the given number of seconds.

说明

final public static void Ev::sleep ( double $seconds )

Block the process for the given number of seconds.

参数

seconds

Fractional number of seconds

返回值

没有返回值。

Ev::run
Ev::stop
Ev


Stops the default event loop

Ev::sleep
Ev::supportedBackends
Ev
PHP Manual

Ev::stop

(PECL ev >= 0.2.0)

Ev::stop — Stops the default event loop

说明

final public static void Ev::stop ([ int $how ] )

Stops the default event loop

参数

how

One of Ev::BREAK_* constants .

返回值

没有返回值。

参见

  • Ev::run() - Begin checking for events and calling callbacks for the default loop
Ev::sleep
Ev::supportedBackends
Ev


Returns the set of backends supported by current libev configuration.

Ev::stop
Ev::suspend
Ev
PHP Manual

Ev::supportedBackends

(PECL ev >= 0.2.0)

Ev::supportedBackends — Returns the set of backends supported by current libev configuration.

说明

final public static void Ev::supportedBackends ( void )

Returns the set of backends supported by current libev configuration.

参数

此函数没有参数。

返回值

Returns a bit mask which can containing backend flags combined using bitwise OR operator.

范例

Example #1 Embedding loop created with kqueue backend into the default loop

<?php
/*
* Check if kqueue is available but not recommended and create a kqueue backend
* for use with sockets (which usually work with any kqueue implementation).
* Store the kqueue/socket-only event loop in loop_socket. (One might optionally
* use EVFLAG_NOENV, too)
*
* Example borrowed from
* http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#Examples_CONTENT-9
*/
$loop        = EvLoop::defaultLoop();
$socket_loop = NULL;
$embed       = NULL;

if (Ev::supportedBackends() & ~Ev::recommendedBackends() & Ev::BACKEND_KQUEUE) {
 if (($socket_loop = new EvLoop(Ev::BACKEND_KQUEUE))) {
  $embed = new EvEmbed($loop);
 }
}

if (!$socket_loop) {
 $socket_loop = $loop;
}

// Now use $socket_loop for all sockets, and $loop for anything else
?>

参见

  • EvEmbed
  • Ev::recommendedBackends() - Returns a bit mask of recommended backends for current platform.
  • Ev::embeddableBackends() - Returns the set of backends that are embeddable in other event loops.
  • Backend flags
  • Examples
Ev::stop
Ev::suspend
Ev


Suspend the default event loop

Ev::supportedBackends
Ev::time
Ev
PHP Manual

Ev::suspend

(PECL ev >= 0.2.0)

Ev::suspend — Suspend the default event loop

说明

final public static void Ev::suspend ( void )

Ev::suspend() and Ev::resume() methods suspend and resume the default loop correspondingly.

All timer watchers will be delayed by the time spend between suspend and resume , and all periodic watchers will be rescheduled(that is, they will lose any events that would have occurred while suspended).

After calling Ev::suspend() it is not allowed to call any function on the given loop other than Ev::resume() . Also it is not allowed to call Ev::resume() without a previous call to Ev::suspend() .

参数

此函数没有参数。

返回值

没有返回值。

参见

  • Ev::resume() - Resume previously suspended default event loop
Ev::supportedBackends
Ev::time
Ev


Returns the current time in fractional seconds since the epoch.

Ev::suspend
Ev::verify
Ev
PHP Manual

Ev::time

(PECL ev >= 0.2.0)

Ev::time — Returns the current time in fractional seconds since the epoch.

说明

final public static double Ev::time ( void )

Returns the current time in fractional seconds since the epoch. Consider using Ev::now()

参数

此函数没有参数。

返回值

Returns the current time in fractional seconds since the epoch.

参见

  • Ev::now() - Returns the time when the last iteration of the default event loop has started.
Ev::suspend
Ev::verify
Ev


Performs internal consistency checks(for debugging)

Ev::time
EvCheck
Ev
PHP Manual

Ev::verify

(PECL ev >= 0.2.0)

Ev::verify — Performs internal consistency checks(for debugging)

说明

final public static void Ev::verify ( void )

Performs internal consistency checks(for debugging libev ) and abort the program if any data structures were found to be corrupted.

参数

此函数没有参数。

返回值

没有返回值。

Ev::time
EvCheck
Ev


The EvCheck class

(PECL ev >= 0.2.0)

简介

EvPrepare and EvCheck watchers are usually used in pairs. EvPrepare watchers get invoked before the process blocks, EvCheck afterwards.

It is not allowed to call EvLoop::run() or similar methods or functions that enter the current event loop from either EvPrepare or EvCheck watchers. Other loops than the current one are fine, however. The rationale behind this is that one don't need to check for recursion in those watchers, i.e. the sequence will always be: EvPrepare -> blocking -> EvCheck , so having a watcher of each kind they will always be called in pairs bracketing the blocking call.

The main purpose is to integrate other event mechanisms into libev and their use is somewhat advanced. They could be used, for example, to track variable changes, implement custom watchers, integrate net-snmp or a coroutine library and lots more. They are also occasionally useful to cache some data and want to flush it before blocking.

It is recommended to give EvCheck watchers highest( Ev::MAXPRI ) priority, to ensure that they are being run before any other watchers after the poll (this doesn't matter for EvPrepare watchers).

Also, EvCheck watchers should not activate/feed events. While libev fully supports this, they might get executed before other EvCheck watchers did their job.

类摘要

EvCheck extends EvWatcher {
/* 继承的属性 */
public $is_active ;
public $data ;
public $is_pending ;
public $priority ;
/* 方法 */
public __construct ( callable $callback [, mixed $data [, int $priority ]] )
final public static object createStopped ( string $callback [, string $data [, string $priority ]] )
/* 继承的方法 */
public int EvWatcher::clear ( void )
abstract public EvWatcher::__construct ( void )
public void EvWatcher::feed ( int $revents )
public EvLoop EvWatcher::getLoop ( void )
public void EvWatcher::invoke ( int $revents )
public bool EvWatcher::keepalive ([ bool $value ] )
public void EvWatcher::setCallback ( callable $callback )
public void EvWatcher::start ( void )
public void EvWatcher::stop ( void )
}

Table of Contents

  • EvCheck::__construct — Constructs the EvCheck watcher object
  • EvCheck::createStopped — Create instance of a stopped EvCheck watcher
Ev::verify
EvCheck::__construct
Ev


Constructs the EvCheck watcher object

EvCheck
EvCheck::createStopped
EvCheck
PHP Manual

EvCheck::__construct

(PECL ev >= 0.2.0)

EvCheck::__construct — Constructs the EvCheck watcher object

说明

public EvCheck::__construct ( callable $callback [, mixed $data [, int $priority ]] )

Constructs the EvCheck watcher object.

参数

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

Returns EvCheck object on success.

参见

  • EvPrepare
  • EvLoop::check() - Creates EvCheck object associated with the current event loop instance
EvCheck
EvCheck::createStopped
EvCheck


Create instance of a stopped EvCheck watcher

EvCheck::__construct
EvChild
EvCheck
PHP Manual

EvCheck::createStopped

(PECL ev >= 0.2.0)

EvCheck::createStopped — Create instance of a stopped EvCheck watcher

说明

final public static object EvCheck::createStopped ( string $callback [, string $data [, string $priority ]] )

Create instance of a stopped EvCheck watcher

参数

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

Returns EvCheck object on success.

参见

  • EvPrepare
EvCheck::__construct
EvChild
EvCheck


The EvChild class

(PECL ev >= 0.2.0)

简介

EvChild watchers trigger when the process receives a SIGCHLD in response to some child status changes (most typically when a child dies or exits). It is permissible to install an EvChild watcher after the child has been forked(which implies it might have already exited), as long as the event loop isn't entered(or is continued from a watcher), i.e. forking and then immediately registering a watcher for the child is fine, but forking and registering a watcher a few event loop iterations later or in the next callback invocation is not.

It is allowed to register EvChild watchers in the default loop only.

类摘要

EvChild extends EvWatcher {
/* 属性 */
public $pid ;
public $rpid ;
public $rstatus ;
/* 继承的属性 */
public $is_active ;
public $data ;
public $is_pending ;
public $priority ;
/* 方法 */
public __construct ( int $pid , bool $trace , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
final public static object createStopped ( int $pid , bool $trace , callable $callback [, mixed $data [, int $priority ]] )
public void set ( int $pid , bool $trace )
/* 继承的方法 */
public int EvWatcher::clear ( void )
abstract public EvWatcher::__construct ( void )
public void EvWatcher::feed ( int $revents )
public EvLoop EvWatcher::getLoop ( void )
public void EvWatcher::invoke ( int $revents )
public bool EvWatcher::keepalive ([ bool $value ] )
public void EvWatcher::setCallback ( callable $callback )
public void EvWatcher::start ( void )
public void EvWatcher::stop ( void )
}

属性

pid

Readonly . The process ID this watcher watches out for, or 0 , meaning any process ID.

rpid

Readonly .The process ID that detected a status change.

rstatus

Readonly . The process exit status caused by rpid .

Table of Contents

  • EvChild::__construct — Constructs the EvChild watcher object
  • EvChild::createStopped — Create instance of a stopped EvCheck watcher
  • EvChild::set — Configures the watcher
EvCheck::createStopped
EvChild::__construct
Ev


Constructs the EvChild watcher object

EvChild
EvChild::createStopped
EvChild
PHP Manual

EvChild::__construct

(PECL ev >= 0.2.0)

EvChild::__construct — Constructs the EvChild watcher object

说明

public EvChild::__construct ( int $pid , bool $trace , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )

Constructs the EvChild watcher object.

Call the callback when a status change for process ID pid (or any PID if pid is 0 ) has been received(a status change happens when the process terminates or is killed, or, when trace is TRUE, additionally when it is stopped or continued). In other words, when the process receives a SIGCHLD , Ev will fetch the outstanding exit/wait status for all changed/zombie children and call the callback.

It is valid to install a child watcher after an EvChild has exited but before the event loop has started its next iteration. For example, first one calls fork , then the new child process might exit, and only then an EvChild watcher is installed in the parent for the new PID .

You can access both exit/tracing status and pid by using the rstatus and rpid properties of the watcher object.

The number of PID watchers per PID is unlimited. All of them will be called.

The EvChild::createStopped() method doesn't start(activate) the newly created watcher.

参数

pid

Wait for status changes of process PID(or any process if PID is specified as 0 ).

trace

If FALSE, only activate the watcher when the process terminates. Otherwise(TRUE) additionally activate the watcher when the process is stopped or continued.

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

Returns EvChild object on success.

参见

  • EvLoop::child() - Creates EvChild object associated with the current event loop
EvChild
EvChild::createStopped
EvChild


Create instance of a stopped EvCheck watcher

EvChild::__construct
EvChild::set
EvChild
PHP Manual

EvChild::createStopped

(PECL ev >= 0.2.0)

EvChild::createStopped — Create instance of a stopped EvCheck watcher

说明

final public static object EvChild::createStopped ( int $pid , bool $trace , callable $callback [, mixed $data [, int $priority ]] )

The same as EvChild::__construct() , but doesn't start the watcher automatically.

参数

pid

The same as for EvChild::__construct()

trace

The same as for EvChild::__construct()

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

参见

  • EvChild::__construct() - Constructs the EvChild watcher object
  • EvLoop::child() - Creates EvChild object associated with the current event loop
EvChild::__construct
EvChild::set
EvChild


Configures the watcher

EvChild::createStopped
EvEmbed
EvChild
PHP Manual

EvChild::set

(PECL ev >= 0.2.0)

EvChild::set — Configures the watcher

说明

public void EvChild::set ( int $pid , bool $trace )

参数

pid

The same as for EvChild::__construct()

trace

The same as for EvChild::__construct()

返回值

没有返回值。

参见

  • EvChild::__construct() - Constructs the EvChild watcher object
EvChild::createStopped
EvEmbed
EvChild


The EvEmbed class

(PECL ev >= 0.2.0)

简介

Used to embed one event loop into another.

类摘要

EvEmbed extends EvWatcher {
/* 属性 */
public $embed ;
/* 方法 */
public __construct ( object $other [, callable $callback [, mixed $data [, int $priority ]]] )
final public static void createStopped ( object $other [, callable $callback [, mixed $data [, int $priority ]]] )
public void set ( object $other )
public void sweep ( void )
/* 继承的方法 */
public int EvWatcher::clear ( void )
abstract public EvWatcher::__construct ( void )
public void EvWatcher::feed ( int $revents )
public EvLoop EvWatcher::getLoop ( void )
public void EvWatcher::invoke ( int $revents )
public bool EvWatcher::keepalive ([ bool $value ] )
public void EvWatcher::setCallback ( callable $callback )
public void EvWatcher::start ( void )
public void EvWatcher::stop ( void )
}

属性

is_active

data

is_pending

priority

embed

Table of Contents

  • EvEmbed::__construct — Constructs the EvEmbed object
  • EvEmbed::createStopped — Create stopped EvEmbed watcher object
  • EvEmbed::set — Configures the watcher
  • EvEmbed::sweep — Make a single, non-blocking sweep over the embedded loop.
EvChild::set
EvEmbed::__construct
Ev


Constructs the EvEmbed object

EvEmbed
EvEmbed::createStopped
EvEmbed
PHP Manual

EvEmbed::__construct

(PECL ev >= 0.2.0)

EvEmbed::__construct — Constructs the EvEmbed object

说明

public EvEmbed::__construct ( object $other [, callable $callback [, mixed $data [, int $priority ]]] )

This is a rather advanced watcher type that lets to embed one event loop into another(currently only IO events are supported in the embedded loop, other types of watchers might be handled in a delayed or incorrect fashion and must not be used).

See » the libev documentation for details.

This watcher is most useful on BSD systems without working kqueue to still be able to handle a large number of sockets. See example below.

参数

other

Instance of EvLoop . The loop to embed, this loop must be embeddable(see Ev::embeddableBackends() ).

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

Returns EvEmbed object on success.

范例

Example #1 Embedding loop created with kqueue backend into the default loop

<?php
/*
 * Check if kqueue is available but not recommended and create a kqueue backend
 * for use with sockets (which usually work with any kqueue implementation).
 * Store the kqueue/socket-only event loop in loop_socket. (One might optionally
 * use EVFLAG_NOENV, too)
 *
 * Example borrowed from
 * http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod#Examples_CONTENT-9
 */
$loop        = EvLoop::defaultLoop();
$socket_loop = NULL;
$embed       = NULL;

if (Ev::supportedBackends() & ~Ev::recommendedBackends() & Ev::BACKEND_KQUEUE) {
    if (($socket_loop = new EvLoop(Ev::BACKEND_KQUEUE))) {
        $embed = new EvEmbed($loop);
    }
}

if (!$socket_loop) {
    $socket_loop = $loop;
}

// Now use $socket_loop for all sockets, and $loop for anything else
?>

参见

  • Ev::embeddableBackends() - Returns the set of backends that are embeddable in other event loops.
EvEmbed
EvEmbed::createStopped
EvEmbed


Create stopped EvEmbed watcher object

EvEmbed::__construct
EvEmbed::set
EvEmbed
PHP Manual

EvEmbed::createStopped

(PECL ev >= 0.2.0)

EvEmbed::createStopped — Create stopped EvEmbed watcher object

说明

final public static void EvEmbed::createStopped ( object $other [, callable $callback [, mixed $data [, int $priority ]]] )

The same as EvEmbed::__construct() , but doesn't start the watcher automatically.

参数

other

The same as for EvEmbed::__construct()

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

Returns stopped EvEmbed object on success.

参见

  • EvEmbed::__construct() - Constructs the EvEmbed object
  • Ev::embeddableBackends() - Returns the set of backends that are embeddable in other event loops.
EvEmbed::__construct
EvEmbed::set
EvEmbed


Configures the watcher

EvEmbed::createStopped
EvEmbed::sweep
EvEmbed
PHP Manual

EvEmbed::set

(PECL ev >= 0.2.0)

EvEmbed::set — Configures the watcher

说明

public void EvEmbed::set ( object $other )

Configures the watcher to use other event loop object.

参数

other

The same as for EvEmbed::__construct()

返回值

没有返回值。

EvEmbed::createStopped
EvEmbed::sweep
EvEmbed


Make a single, non-blocking sweep over the embedded loop.

EvEmbed::set
EvFork
EvEmbed
PHP Manual

EvEmbed::sweep

(PECL ev >= 0.2.0)

EvEmbed::sweep — Make a single, non-blocking sweep over the embedded loop.

说明

public void EvEmbed::sweep ( void )

Make a single, non-blocking sweep over the embedded loop. Works similarly to the following, but in the most appropriate way for embedded loops:

<?php
$other->start(Ev::RUN_NOWAIT);
?>

参数

此函数没有参数。

返回值

没有返回值。

参见

  • EvWatcher::start() - Starts the watcher
EvEmbed::set
EvFork
EvEmbed


The EvFork class

(PECL ev >= 0.2.0)

简介

Fork watchers are called when a fork() was detected (usually because whoever signalled libev about it by calling EvLoop::fork() ). The invocation is done before the event loop blocks next and before EvCheck watchers are being called, and only in the child after the fork. Note, that if whoever calling EvLoop::fork() calls it in the wrong process, the fork handlers will be invoked, too.

类摘要

EvFork extends EvWatcher {
/* 继承的属性 */
public $is_active ;
public $data ;
public $is_pending ;
public $priority ;
/* 方法 */
public __construct ( callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
final public static object createStopped ( string $callback [, string $data [, string $priority ]] )
/* 继承的方法 */
public int EvWatcher::clear ( void )
abstract public EvWatcher::__construct ( void )
public void EvWatcher::feed ( int $revents )
public EvLoop EvWatcher::getLoop ( void )
public void EvWatcher::invoke ( int $revents )
public bool EvWatcher::keepalive ([ bool $value ] )
public void EvWatcher::setCallback ( callable $callback )
public void EvWatcher::start ( void )
public void EvWatcher::stop ( void )
}

Table of Contents

  • EvFork::__construct — Constructs the EvFork watcher object
  • EvFork::createStopped — Creates a stopped instance of EvFork watcher class
EvEmbed::sweep
EvFork::__construct
Ev


Constructs the EvFork watcher object

EvFork
EvFork::createStopped
EvFork
PHP Manual

EvFork::__construct

(PECL ev >= 0.2.0)

EvFork::__construct — Constructs the EvFork watcher object

说明

public EvFork::__construct ( callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )

Constructs the EvFork watcher object and starts the watcher automatically.

参数

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

Returns EvFork object on success.

参见

  • EvLoop::fork() - Creates EvFork watcher object associated with the current event loop instance
  • EvCheck
EvFork
EvFork::createStopped
EvFork


Creates a stopped instance of EvFork watcher class

EvFork::__construct
EvIdle
EvFork
PHP Manual

EvFork::createStopped

(PECL ev >= 0.2.0)

EvFork::createStopped — Creates a stopped instance of EvFork watcher class

说明

final public static object EvFork::createStopped ( string $callback [, string $data [, string $priority ]] )

The same as EvFork::__construct() , but doesn't start the watcher automatically.

参数

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

Returns EvFork(stopped) object on success.

参见

  • EvFork::__construct() - Constructs the EvFork watcher object
EvFork::__construct
EvIdle
EvFork


The EvIdle class

(PECL ev >= 0.2.0)

简介

EvIdle watchers trigger events when no other events of the same or higher priority are pending ( EvPrepare , EvCheck and other EvIdle watchers do not count as receiving events ).

Thus, as long as the process is busy handling sockets or timeouts(or even signals) of the same or higher priority it will not be triggered. But when the process is in idle(or only lower-priority watchers are pending), the EvIdle watchers are being called once per event loop iteration - until stopped, that is, or the process receives more events and becomes busy again with higher priority stuff.

Apart from keeping the process non-blocking(which is a useful on its own sometimes), EvIdle watchers are a good place to do "pseudo-background processing" , or delay processing stuff to after the event loop has handled all outstanding events.

The most noticeable effect is that as long as any idle watchers are active, the process will not block when waiting for new events.

类摘要

EvIdle extends EvWatcher {
/* 继承的属性 */
public $is_active ;
public $data ;
public $is_pending ;
public $priority ;
/* 方法 */
public __construct ( callable $callback [, mixed $data [, int $priority ]] )
final public static object createStopped ( string $callback [, mixed $data [, int $priority ]] )
/* 继承的方法 */
public int EvWatcher::clear ( void )
abstract public EvWatcher::__construct ( void )
public void EvWatcher::feed ( int $revents )
public EvLoop EvWatcher::getLoop ( void )
public void EvWatcher::invoke ( int $revents )
public bool EvWatcher::keepalive ([ bool $value ] )
public void EvWatcher::setCallback ( callable $callback )
public void EvWatcher::start ( void )
public void EvWatcher::stop ( void )
}

Table of Contents

  • EvIdle::__construct — Constructs the EvIdle watcher object
  • EvIdle::createStopped — Creates instance of a stopped EvIdle watcher object
EvFork::createStopped
EvIdle::__construct
Ev


Constructs the EvIdle watcher object

EvIdle
EvIdle::createStopped
EvIdle
PHP Manual

EvIdle::__construct

(PECL ev >= 0.2.0)

EvIdle::__construct — Constructs the EvIdle watcher object

说明

public EvIdle::__construct ( callable $callback [, mixed $data [, int $priority ]] )

Constructs the EvIdle watcher object and starts the watcher automatically.

参数

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

Returns EvIdle object on success.

参见

  • EvIdle::createStopped() - Creates instance of a stopped EvIdle watcher object
  • EvLoop::idle() - Creates EvIdle watcher object associated with the current event loop instance
EvIdle
EvIdle::createStopped
EvIdle


Creates instance of a stopped EvIdle watcher object

EvIdle::__construct
EvIo
EvIdle
PHP Manual

EvIdle::createStopped

(PECL ev >= 0.2.0)

EvIdle::createStopped — Creates instance of a stopped EvIdle watcher object

说明

final public static object EvIdle::createStopped ( string $callback [, mixed $data [, int $priority ]] )

The same as EvIdle::__construct() , but doesn't start the watcher automatically.

参数

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

Returns EvIdle object on success.

参见

  • EvIdle::__construct() - Constructs the EvIdle watcher object
  • EvLoop::idle() - Creates EvIdle watcher object associated with the current event loop instance
EvIdle::__construct
EvIo
EvIdle


The EvIo class

(PECL ev >= 0.2.0)

简介

EvIo watchers check whether a file descriptor(or socket, or a stream castable to numeric file descriptor) is readable or writable in each iteration of the event loop, or, more precisely, when reading would not block the process and writing would at least be able to write some data. This behaviour is called level-triggering because events are kept receiving as long as the condition persists. To stop receiving events just stop the watcher.

The number of read and/or write event watchers per fd is unlimited. Setting all file descriptors to non-blocking mode is also usually a good idea(but not required).

Another thing to watch out for is that it is quite easy to receive false readiness notifications, i.e. the callback might be called with Ev::READ but a subsequent read() will actually block because there is no data. It is very easy to get into this situation. Thus it is best to always use non-blocking I/O: An extra read() returning EAGAIN (or similar) is far preferable to a program hanging until some data arrives.

If for some reason it is impossible to run the fd in non-blocking mode, then separately re-test whether a file descriptor is really ready. Some people additionally use SIGALRM and an interval timer, just to be sure thry won't block infinitely.

Always consider using non-blocking mode.

类摘要

EvIo extends EvWatcher {
/* 属性 */
public $fd ;
public $events ;
/* 继承的属性 */
public $is_active ;
public $data ;
public $is_pending ;
public $priority ;
/* 方法 */
public __construct ( mixed $fd , int $events , callable $callback [, mixed $data [, int $priority ]] )
final public static EvIo createStopped ( mixed $fd , int $events , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void set ( mixed $fd , int $events )
/* 继承的方法 */
public int EvWatcher::clear ( void )
abstract public EvWatcher::__construct ( void )
public void EvWatcher::feed ( int $revents )
public EvLoop EvWatcher::getLoop ( void )
public void EvWatcher::invoke ( int $revents )
public bool EvWatcher::keepalive ([ bool $value ] )
public void EvWatcher::setCallback ( callable $callback )
public void EvWatcher::start ( void )
public void EvWatcher::stop ( void )
}

属性

fd

events

Table of Contents

  • EvIo::__construct — Constructs EvIo watcher object
  • EvIo::createStopped — Create stopped EvIo watcher object
  • EvIo::set — Configures the watcher
EvIdle::createStopped
EvIo::__construct
Ev


Constructs EvIo watcher object

EvIo
EvIo::createStopped
EvIo
PHP Manual

EvIo::__construct

(PECL ev >= 0.2.0)

EvIo::__construct — Constructs EvIo watcher object

说明

public EvIo::__construct ( mixed $fd , int $events , callable $callback [, mixed $data [, int $priority ]] )

Constructs EvIo watcher object and starts the watcher automatically.

参数

fd

Can be a stream opened with fopen() or similar functions, numeric file descriptor, or socket.

events

Ev::READ and/or Ev::WRITE . See the bit masks .

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

Returns EvIo object on success.

参见

  • EvIo::createStopped() - Create stopped EvIo watcher object
  • EvLoop::io() - Create EvIo watcher object associated with the current event loop instance
EvIo
EvIo::createStopped
EvIo


Create stopped EvIo watcher object

EvIo::__construct
EvIo::set
EvIo
PHP Manual

EvIo::createStopped

(PECL ev >= 0.2.0)

EvIo::createStopped — Create stopped EvIo watcher object

说明

final public static EvIo EvIo::createStopped ( mixed $fd , int $events , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )

The same as EvIo::__construct() , but doesn't start the watcher automatically.

参数

fd

The same as for EvIo::__construct()

events

The same as for EvIo::__construct()

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

Returns EvIo object on success.

参见

  • EvIo::__construct() - Constructs EvIo watcher object
  • EvLoop::io() - Create EvIo watcher object associated with the current event loop instance
EvIo::__construct
EvIo::set
EvIo


Configures the watcher

EvIo::createStopped
EvLoop
EvIo
PHP Manual

EvIo::set

(PECL ev >= 0.2.0)

EvIo::set — Configures the watcher

说明

public void EvIo::set ( mixed $fd , int $events )

Configures the EvIo watcher

参数

fd

The same as for EvIo::__construct()

events

The same as for EvIo::__construct()

返回值

没有返回值。

EvIo::createStopped
EvLoop
EvIo


The EvLoop class

(PECL ev >= 0.2.0)

简介

Represents an event loop that is always distinct from the default loop . Unlike the default loop , it cannot handle EvChild watchers.

Having threads we have to create a loop per thread, and use the default loop in the parent thread.

The default event loop is initialized automatically by Ev . It is accessible via methods of the Ev class, or via EvLoop::defaultLoop() method.

类摘要

final EvLoop {
/* 属性 */
public $data ;
public $backend ;
public $is_default_loop ;
public $iteration ;
public $pending ;
public $io_interval ;
public $timeout_interval ;
public $depth ;
/* 方法 */
public int backend ( void )
final public EvCheck check ( string $callback [, string $data [, string $priority ]] )
final public EvChild child ( string $pid , string $trace , string $callback [, string $data [, string $priority ]] )
public __construct ([ int $flags [, mixed $data = NULL [, double $io_interval = 0.0 [, double $timeout_interval = 0.0 ]]]] )
public static EvLoop defaultLoop ([ int $flags = Ev::FLAG_AUTO [, mixed $data = NULL [, double $io_interval = 0. [, double $timeout_interval = 0. ]]]] )
final public EvEmbed embed ( string $other [, string $callback [, string $data [, string $priority ]]] )
final public EvFork fork ( callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
final public EvIdle idle ( callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void invokePending ( void )
final public EvIo io ( mixed $fd , int $events , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void loopFork ( void )
public double now ( void )
public void nowUpdate ( void )
final public EvPeriodic periodic ( double $offset , double $interval , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
final public EvPrepare prepare ( callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void resume ( void )
public void run ([ int $flags = 0 ] )
final public EvSignal signal ( int $signum , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
final public EvStat stat ( string $path , double $interval , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void stop ([ int $how ] )
public void suspend ( void )
final public EvTimer timer ( double $after , double $repeat , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void verify ( void )
}

属性

data

Custom data attached to loop

backend

Readonly . The backend flags indicating the event backend in use.

is_default_loop

Readonly . TRUE if it is the default event loop.

iteration

The current iteration count of the loop. See Ev::iteration()

pending

The number of pending watchers. 0 indicates that there are no watchers pending.

io_interval

Higher io_interval allows libev to spend more time collecting EvIo events, so more events can be handled per iteration, at the cost of increasing latency. Timeouts (both EvPeriodic and EvTimer ) will not be affected. Setting this to a non-zero value will introduce an additional sleep() call into most loop iterations. The sleep time ensures that libev will not poll for EvIo events more often than once per this interval, on average. Many programs can usually benefit by setting the io_interval to a value near 0.1 , which is often enough for interactive servers(not for games). It usually doesn't make much sense to set it to a lower value than 0.01 , as this approaches the timing granularity of most systems.

See also » FUNCTIONS CONTROLLING EVENT LOOPS .

timeout_interval

Higher timeout_interval allows libev to spend more time collecting timeouts, at the expense of increased latency/jitter/inexactness(the watcher callback will be called later). EvIo watchers will not be affected. Setting this to a non-null value will not introduce any overhead in libev . See also » FUNCTIONS CONTROLLING EVENT LOOPS .

depth

The recursion depth. See Ev::depth() .

Table of Contents

  • EvLoop::backend — Returns an integer describing the backend used by libev.
  • EvLoop::check — Creates EvCheck object associated with the current event loop instance
  • EvLoop::child — Creates EvChild object associated with the current event loop
  • EvLoop::__construct — Constructs the event loop object
  • EvLoop::defaultLoop — Returns or creates the default event loop.
  • EvLoop::embed — Creates an instance of EvEmbed watcher associated with the current EvLoop object.
  • EvLoop::fork — Creates EvFork watcher object associated with the current event loop instance
  • EvLoop::idle — Creates EvIdle watcher object associated with the current event loop instance
  • EvLoop::invokePending — Invoke all pending watchers while resetting their pending state
  • EvLoop::io — Create EvIo watcher object associated with the current event loop instance
  • EvLoop::loopFork — Must be called after a fork
  • EvLoop::now — Returns the current "event loop time"
  • EvLoop::nowUpdate — Establishes the current time by querying the kernel, updating the time returned by EvLoop::now in the progress.
  • EvLoop::periodic — Creates EvPeriodic watcher object associated with the current event loop instance
  • EvLoop::prepare — Creates EvPrepare watcher object associated with the current event loop instance
  • EvLoop::resume — Resume previously suspended default event loop
  • EvLoop::run — Begin checking for events and calling callbacks for the loop
  • EvLoop::signal — Creates EvSignal watcher object associated with the current event loop instance
  • EvLoop::stat — Creates EvStat watcher object associated with the current event loop instance
  • EvLoop::stop — Stops the event loop
  • EvLoop::suspend — Suspend the loop
  • EvLoop::timer — Creates EvTimer watcher object associated with the current event loop instance
  • EvLoop::verify — Performs internal consistency checks(for debugging)
EvIo::set
EvLoop::backend
Ev


Returns an integer describing the backend used by libev.

EvLoop
EvLoop::check
EvLoop
PHP Manual

EvLoop::backend

(PECL ev >= 0.2.0)

EvLoop::backend — Returns an integer describing the backend used by libev.

说明

public int EvLoop::backend ( void )

The same as Ev::backend() , but for the loop instance.

参数

此函数没有参数。

返回值

Returns an integer describing the backend used by libev. See Ev::backend() .

参见

  • Ev::backend() - Returns an integer describing the backend used by libev.
EvLoop
EvLoop::check
EvLoop


Creates EvCheck object associated with the current event loop instance

EvLoop::backend
EvLoop::child
EvLoop
PHP Manual

EvLoop::check

(PECL ev >= 0.2.0)

EvLoop::check — Creates EvCheck object associated with the current event loop instance

说明

final public EvCheck EvLoop::check ( string $callback [, string $data [, string $priority ]] )

Creates EvCheck object associated with the current event loop instance.

参数

All parameters have the same meaning as for EvCheck::__construct()

返回值

Returns EvCheck object on success.

参见

  • EvCheck::__construct() - Constructs the EvCheck watcher object
EvLoop::backend
EvLoop::child
EvLoop


Creates EvChild object associated with the current event loop

EvLoop::check
EvLoop::__construct
EvLoop
PHP Manual

EvLoop::child

(PECL ev >= 0.2.0)

EvLoop::child — Creates EvChild object associated with the current event loop

说明

final public EvChild EvLoop::child ( string $pid , string $trace , string $callback [, string $data [, string $priority ]] )

Creates EvChild object associated with the current event loop.

参数

All parameters have the same meaning as for EvChild::__construct()

返回值

Returns EvChild object on success.

参见

  • EvChild::__construct() - Constructs the EvChild watcher object
EvLoop::check
EvLoop::__construct
EvLoop


Constructs the event loop object

EvLoop::child
EvLoop::defaultLoop
EvLoop
PHP Manual

EvLoop::__construct

(PECL ev >= 0.2.0)

EvLoop::__construct — Constructs the event loop object

说明

public EvLoop::__construct ([ int $flags [, mixed $data = NULL [, double $io_interval = 0.0 [, double $timeout_interval = 0.0 ]]]] )

Constructs the event loop object.

参数

flags

One of the event loop flags

data

Custom data associated with the loop.

io_interval

See io_interval

timeout_interval

See timeout_interval

返回值

Returns new EvLoop object.

参见

  • EvLoop::defaultLoop() - Returns or creates the default event loop.
EvLoop::child
EvLoop::defaultLoop
EvLoop


Returns or creates the default event loop.

EvLoop::__construct
EvLoop::embed
EvLoop
PHP Manual

EvLoop::defaultLoop

(PECL ev >= 0.2.0)

EvLoop::defaultLoop — Returns or creates the default event loop.

说明

public static EvLoop EvLoop::defaultLoop ([ int $flags = Ev::FLAG_AUTO [, mixed $data = NULL [, double $io_interval = 0. [, double $timeout_interval = 0. ]]]] )

If the default event loop is not created, EvLoop::defaultLoop() creates it with the specified parameters. Otherwise, it just returns the object representing previously created instance ignoring all the parameters.

参数

flags

One of the event loop flags

data

Custom data to associate with the loop.

io_collect_interval

See io_interval

timeout_collect_interval

See timeout_interval

返回值

Returns EvLoop object on success.

参见

  • EvLoop::__construct() - Constructs the event loop object
EvLoop::__construct
EvLoop::embed
EvLoop


Creates an instance of EvEmbed watcher associated with the current EvLoop object.

EvLoop::defaultLoop
EvLoop::fork
EvLoop
PHP Manual

EvLoop::embed

(PECL ev >= 0.2.0)

EvLoop::embed — Creates an instance of EvEmbed watcher associated with the current EvLoop object.

说明

final public EvEmbed EvLoop::embed ( string $other [, string $callback [, string $data [, string $priority ]]] )

Creates an instance of EvEmbed watcher associated with the current EvLoop object.

参数

All parameters have the same meaning as for EvEmbed::__construct() .

返回值

Returns EvEmbed object on success.

参见

  • EvEmbed::__construct() - Constructs the EvEmbed object
EvLoop::defaultLoop
EvLoop::fork
EvLoop


Creates EvFork watcher object associated with the current event loop instance

EvLoop::embed
EvLoop::idle
EvLoop
PHP Manual

EvLoop::fork

(PECL ev >= 0.2.0)

EvLoop::fork — Creates EvFork watcher object associated with the current event loop instance

说明

final public EvFork EvLoop::fork ( callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )

Creates EvFork watcher object associated with the current event loop instance

参数

All parameters have the same meaning as for EvFork::__construct()

返回值

Returns EvFork object on success.

参见

  • EvFork::__construct() - Constructs the EvFork watcher object
EvLoop::embed
EvLoop::idle
EvLoop


Creates EvIdle watcher object associated with the current event loop instance

EvLoop::fork
EvLoop::invokePending
EvLoop
PHP Manual

EvLoop::idle

(PECL ev >= 0.2.0)

EvLoop::idle — Creates EvIdle watcher object associated with the current event loop instance

说明

final public EvIdle EvLoop::idle ( callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )

Creates EvIdle watcher object associated with the current event loop instance

参数

All the parameters have the same meaning as for EvIdle::__construct()

返回值

Returns EvIdle object on success.

参见

  • EvIdle::__construct() - Constructs the EvIdle watcher object
EvLoop::fork
EvLoop::invokePending
EvLoop


Invoke all pending watchers while resetting their pending state

EvLoop::idle
EvLoop::io
EvLoop
PHP Manual

EvLoop::invokePending

(PECL ev >= 0.2.0)

EvLoop::invokePending — Invoke all pending watchers while resetting their pending state

说明

public void EvLoop::invokePending ( void )

Invoke all pending watchers while resetting their pending state.

参数

此函数没有参数。

返回值

没有返回值。

EvLoop::idle
EvLoop::io
EvLoop


Create EvIo watcher object associated with the current event loop instance

EvLoop::invokePending
EvLoop::loopFork
EvLoop
PHP Manual

EvLoop::io

(PECL ev >= 0.2.0)

EvLoop::io — Create EvIo watcher object associated with the current event loop instance

说明

final public EvIo EvLoop::io ( mixed $fd , int $events , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )

Create EvIo watcher object associated with the current event loop instance.

参数

All parameters have the same meaning as for EvIo::__construct()

返回值

Returns EvIo object on success.

参见

  • EvIo::__construct() - Constructs EvIo watcher object
EvLoop::invokePending
EvLoop::loopFork
EvLoop


Must be called after a fork

EvLoop::io
EvLoop::now
EvLoop
PHP Manual

EvLoop::loopFork

(PECL ev >= 0.2.0)

EvLoop::loopFork — Must be called after a fork

说明

public void EvLoop::loopFork ( void )

Must be called after a fork in the child, before entering or continuing the event loop. An alternative is to use Ev::FLAG_FORKCHECK which calls this function automatically, at some performance loss (refer to the » libev documentation ).

参数

此函数没有参数。

返回值

没有返回值。

EvLoop::io
EvLoop::now
EvLoop


Returns the current "event loop time"

EvLoop::loopFork
EvLoop::nowUpdate
EvLoop
PHP Manual

EvLoop::now

(PECL ev >= 0.2.0)

EvLoop::now — Returns the current "event loop time"

说明

public double EvLoop::now ( void )

Returns the current "event loop time", which is the time the event loop received events and started processing them. This timestamp does not change as long as callbacks are being processed, and this is also the base time used for relative timers. You can treat it as the timestamp of the event occurring(or more correctly, libev finding out about it).

参数

此函数没有参数。

返回值

Returns time of the event loop in (fractional) seconds.

参见

  • Ev::now() - Returns the time when the last iteration of the default event loop has started.
EvLoop::loopFork
EvLoop::nowUpdate
EvLoop


Establishes the current time by querying the kernel, updating the time returned by EvLoop::now in the progress.

EvLoop::now
EvLoop::periodic
EvLoop
PHP Manual

EvLoop::nowUpdate

(PECL ev >= 0.2.0)

EvLoop::nowUpdate — Establishes the current time by querying the kernel, updating the time returned by EvLoop::now in the progress.

说明

public void EvLoop::nowUpdate ( void )

Establishes the current time by querying the kernel, updating the time returned by EvLoop::now() in the progress. This is a costly operation and is usually done automatically within EvLoop::run() .

参数

此函数没有参数。

返回值

没有返回值。

参见

  • EvLoop::now() - Returns the current "event loop time"
  • Ev::nowUpdate() - Establishes the current time by querying the kernel, updating the time returned by Ev::now in the progress.
EvLoop::now
EvLoop::periodic
EvLoop


Creates EvPeriodic watcher object associated with the current event loop instance

EvLoop::nowUpdate
EvLoop::prepare
EvLoop
PHP Manual

EvLoop::periodic

(PECL ev >= 0.2.0)

EvLoop::periodic — Creates EvPeriodic watcher object associated with the current event loop instance

说明

final public EvPeriodic EvLoop::periodic ( double $offset , double $interval , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )

Creates EvPeriodic watcher object associated with the current event loop instance

参数

All parameters have the same maening as for EvPeriodic::__construct()

返回值

Returns EvPeriodic object on success.

参见

  • EvPeriodic::__construct() - Constructs EvPeriodic watcher object
EvLoop::nowUpdate
EvLoop::prepare
EvLoop


Creates EvPrepare watcher object associated with the current event loop instance

EvLoop::periodic
EvLoop::resume
EvLoop
PHP Manual

EvLoop::prepare

(PECL ev >= 0.2.0)

EvLoop::prepare — Creates EvPrepare watcher object associated with the current event loop instance

说明

final public EvPrepare EvLoop::prepare ( callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )

Creates EvPrepare watcher object associated with the current event loop instance

参数

All parameters have the same maening as for EvPrepare()

返回值

Returns EvPrepare object on success

参见

  • EvPrepare::__construct() - Constructs EvPrepare watcher object
EvLoop::periodic
EvLoop::resume
EvLoop


Resume previously suspended default event loop

EvLoop::prepare
EvLoop::run
EvLoop
PHP Manual

EvLoop::resume

(PECL ev >= 0.2.0)

EvLoop::resume — Resume previously suspended default event loop

说明

public void EvLoop::resume ( void )

EvLoop::suspend() and EvLoop::resume() methods suspend and resume a loop correspondingly.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • EvLoop::suspend() - Suspend the loop
  • Ev::resume() - Resume previously suspended default event loop
EvLoop::prepare
EvLoop::run
EvLoop


Begin checking for events and calling callbacks for the loop

EvLoop::resume
EvLoop::signal
EvLoop
PHP Manual

EvLoop::run

(PECL ev >= 0.2.0)

EvLoop::run — Begin checking for events and calling callbacks for the loop

说明

public void EvLoop::run ([ int $flags = 0 ] )

Begin checking for events and calling callbacks for the current event loop. Returns when a callback calls Ev::stop() method, or the flags are nonzero(in which case the return value is true) or when there are no active watchers which reference the loop( EvWatcher::keepalive() is TRUE), in which case the return value will be FALSE. The return value can generally be interpreted as if TRUE, there is more work left to do .

参数

flags

Optional parameter flags can be one of the following:

List for possible values of flags
flags | Description
0 | The default behavior described above
Ev::RUN_ONCE | Block at most one(wait, but don't loop)
Ev::RUN_NOWAIT | Don't block at all(fetch/handle events, but don't wait)

See the run flag constants .

返回值

没有返回值。

参见

  • EvLoop::stop() - Stops the event loop
  • Ev::run() - Begin checking for events and calling callbacks for the default loop
EvLoop::resume
EvLoop::signal
EvLoop


Creates EvSignal watcher object associated with the current event loop instance

EvLoop::run
EvLoop::stat
EvLoop
PHP Manual

EvLoop::signal

(PECL ev >= 0.2.0)

EvLoop::signal — Creates EvSignal watcher object associated with the current event loop instance

说明

final public EvSignal EvLoop::signal ( int $signum , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )

Creates EvSignal watcher object associated with the current event loop instance

参数

All parameters have the same meaning as for EvSignal::__construct()

返回值

Returns EvSignal object on success

参见

  • EvSignal::__construct() - Constructs EvPeriodic watcher object
EvLoop::run
EvLoop::stat
EvLoop


Creates EvStat watcher object associated with the current event loop instance

EvLoop::signal
EvLoop::stop
EvLoop
PHP Manual

EvLoop::stat

(PECL ev >= 0.2.0)

EvLoop::stat — Creates EvStat watcher object associated with the current event loop instance

说明

final public EvStat EvLoop::stat ( string $path , double $interval , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )

Creates EvStat watcher object associated with the current event loop instance

参数

All parameters have the same meaning as for EvSignal::__construct()

返回值

Returns EvStat object on success

参见

  • EvSignal::__construct() - Constructs EvPeriodic watcher object
EvLoop::signal
EvLoop::stop
EvLoop


Stops the event loop

EvLoop::stat
EvLoop::suspend
EvLoop
PHP Manual

EvLoop::stop

(PECL ev >= 0.2.0)

EvLoop::stop — Stops the event loop

说明

public void EvLoop::stop ([ int $how ] )

Stops the event loop

参数

how

One of Ev::BREAK_* constants .

返回值

没有返回值。

参见

  • EvLoop::run() - Begin checking for events and calling callbacks for the loop
  • Ev::stop() - Stops the default event loop
EvLoop::stat
EvLoop::suspend
EvLoop


Suspend the loop

EvLoop::stop
EvLoop::timer
EvLoop
PHP Manual

EvLoop::suspend

(PECL ev >= 0.2.0)

EvLoop::suspend — Suspend the loop

说明

public void EvLoop::suspend ( void )

EvLoop::suspend() and EvLoop::resume() methods suspend and resume a loop correspondingly.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • EvLoop::resume() - Resume previously suspended default event loop
  • Ev::suspend() - Suspend the default event loop
EvLoop::stop
EvLoop::timer
EvLoop


Creates EvTimer watcher object associated with the current event loop instance

EvLoop::suspend
EvLoop::verify
EvLoop
PHP Manual

EvLoop::timer

(PECL ev >= 0.2.0)

EvLoop::timer — Creates EvTimer watcher object associated with the current event loop instance

说明

final public EvTimer EvLoop::timer ( double $after , double $repeat , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )

Creates EvTimer watcher object associated with the current event loop instance

参数

All parameters have the same meaning as for EvTimer::__construct()

返回值

Returns EvTimer object on success

参见

  • EvTimer::__construct() - Constructs an EvTimer watcher object
EvLoop::suspend
EvLoop::verify
EvLoop


Performs internal consistency checks(for debugging)

EvLoop::timer
EvPeriodic
EvLoop
PHP Manual

EvLoop::verify

(PECL ev >= 0.2.0)

EvLoop::verify — Performs internal consistency checks(for debugging)

说明

public void EvLoop::verify ( void )

Performs internal consistency checks(for debugging libev ) and abort the program if any data structures were found to be corrupted.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • Ev::verify() - Performs internal consistency checks(for debugging)
EvLoop::timer
EvPeriodic
EvLoop


The EvPeriodic class

(PECL ev >= 0.2.0)

简介

Periodic watchers are also timers of a kind, but they are very versatile.

Unlike EvTimer , EvPeriodic watchers are not based on real time(or relative time, the physical time that passes) but on wall clock time(absolute time, calendar or clock). The difference is that wall clock time can run faster or slower than real time, and time jumps are not uncommon(e.g. when adjusting it).

EvPeriodic watcher can be configured to trigger after some specific point in time. For example, if an EvPeriodic watcher is configured to trigger "in 10 seconds" (e.g. EvLoop::now() + 10.0 , i.e. an absolute time, not a delay), and the system clock is reset to January of the previous year , then it will take a year or more to trigger the event (unlike an EvTimer , which would still trigger roughly 10 seconds after starting it as it uses a relative timeout).

As with timers, the callback is guaranteed to be invoked only when the point in time where it is supposed to trigger has passed. If multiple timers become ready during the same loop iteration then the ones with earlier time-out values are invoked before ones with later time-out values (but this is no longer true when a callback calls EvLoop::run() recursively).

类摘要

EvPeriodic extends EvWatcher {
/* 属性 */
public $offset ;
public $interval ;
/* 继承的属性 */
public $is_active ;
public $data ;
public $is_pending ;
public $priority ;
/* 方法 */
public void again ( void )
public double at ( void )
public __construct ( double $offset , string $interval , callable $reschedule_cb , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
final public static EvPeriodic createStopped ( double $offset , double $interval , callable $reschedule_cb , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void set ( double $offset , double $interval )
/* 继承的方法 */
public int EvWatcher::clear ( void )
abstract public EvWatcher::__construct ( void )
public void EvWatcher::feed ( int $revents )
public EvLoop EvWatcher::getLoop ( void )
public void EvWatcher::invoke ( int $revents )
public bool EvWatcher::keepalive ([ bool $value ] )
public void EvWatcher::setCallback ( callable $callback )
public void EvWatcher::start ( void )
public void EvWatcher::stop ( void )
}

属性

offset

When repeating, this contains the offset value, otherwise this is the absolute point in time(the offset value passed to EvPeriodic::set() , although libev might modify this value for better numerical stability).

interval

The current interval value. Can be modified any time, but changes only take effect when the periodic timer fires or EvPeriodic::again() is being called.

Table of Contents

  • EvPeriodic::again — Simply stops and restarts the periodic watcher again.
  • EvPeriodic::at — Returns the absolute time that this watcher is supposed to trigger next
  • EvPeriodic::__construct — Constructs EvPeriodic watcher object
  • EvPeriodic::createStopped — Create a stopped EvPeriodic watcher
  • EvPeriodic::set — Configures the watcher
EvLoop::verify
EvPeriodic::again
Ev


Simply stops and restarts the periodic watcher again.

EvPeriodic
EvPeriodic::at
EvPeriodic
PHP Manual

EvPeriodic::again

(PECL ev >= 0.2.0)

EvPeriodic::again — Simply stops and restarts the periodic watcher again.

说明

public void EvPeriodic::again ( void )

Simply stops and restarts the periodic watcher again. This is only useful when attributes are changed.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • EvTimer::again() - Restarts the timer watcher
EvPeriodic
EvPeriodic::at
EvPeriodic


Returns the absolute time that this watcher is supposed to trigger next

EvPeriodic::again
EvPeriodic::__construct
EvPeriodic
PHP Manual

EvPeriodic::at

(PECL ev >= 0.2.0)

EvPeriodic::at — Returns the absolute time that this watcher is supposed to trigger next

说明

public double EvPeriodic::at ( void )

When the watcher is active, returns the absolute time that this watcher is supposed to trigger next. This is not the same as the offset argument to EvPeriodic::set() or EvPeriodic::__construct() , but indeed works even in interval mode.

参数

此函数没有参数。

返回值

Returns the absolute time this watcher is supposed to trigger next in seconds.

EvPeriodic::again
EvPeriodic::__construct
EvPeriodic


Constructs EvPeriodic watcher object

EvPeriodic::at
EvPeriodic::createStopped
EvPeriodic
PHP Manual

EvPeriodic::__construct

(PECL ev >= 0.2.0)

EvPeriodic::__construct — Constructs EvPeriodic watcher object

说明

public EvPeriodic::__construct ( double $offset , string $interval , callable $reschedule_cb , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )

Constructs EvPeriodic watcher object and starts it automatically. EvPeriodic::createStopped() method creates stopped periodic watcher.

参数

offset

See Periodic watcher operation modes

interval

See Periodic watcher operation modes

reschedule_cb

Reschedule callback. You can pass NULL. See Periodic watcher operation modes

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

Returns EvPeriodic object on success.

范例

Example #1 Periodic timer. Use reschedule callback

<?php
// Tick each 10.5 seconds

function reschedule_cb ($watcher, $now) {
 return $now + (10.5. - fmod($now, 10.5));
}

$w = new EvPeriodic(0., 0., "reschedule_cb", function ($w, $revents) {
 echo time(), PHP_EOL;
});
Ev::run();
?>

Example #2 Periodic timer. Tick every 10.5 seconds starting at now

<?php
// Tick every 10.5 seconds starting at now
$w = new EvPeriodic(fmod(Ev::now(), 10.5), 10.5, NULL, function ($w, $revents) {
 echo time(), PHP_EOL;
});
Ev::run();
?>

Example #3 Hourly watcher

<?php
$hourly = EvPeriodic(0, 3600, NULL, function () {
 echo "once per hour\n";
});
?>

参见

  • Periodic watcher operation modes
  • EvTimer
  • EvPeriodic::createStopped() - Create a stopped EvPeriodic watcher
EvPeriodic::at
EvPeriodic::createStopped
EvPeriodic


Create a stopped EvPeriodic watcher

EvPeriodic::__construct
EvPeriodic::set
EvPeriodic
PHP Manual

EvPeriodic::createStopped

(PECL ev >= 0.2.0)

EvPeriodic::createStopped — Create a stopped EvPeriodic watcher

说明

final public static EvPeriodic EvPeriodic::createStopped ( double $offset , double $interval , callable $reschedule_cb , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )

Create EvPeriodic object. Unlike EvPeriodic::__construct() this method doesn't start the watcher automatically.

参数

offset

See Periodic watcher operation modes

interval

See Periodic watcher operation modes

reschedule_cb

Reschedule callback. You can pass NULL. See Periodic watcher operation modes

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

Returns EvPeriodic watcher object on success.

参见

  • EvPeriodic::__construct() - Constructs EvPeriodic watcher object
  • EvTimer::createStopped() - Creates EvTimer stopped watcher object
EvPeriodic::__construct
EvPeriodic::set
EvPeriodic


Configures the watcher

EvPeriodic::createStopped
EvPrepare
EvPeriodic
PHP Manual

EvPeriodic::set

(PECL ev >= 0.2.0)

EvPeriodic::set — Configures the watcher

说明

public void EvPeriodic::set ( double $offset , double $interval )

(Re-)Configures EvPeriodic watcher

参数

offset

The same meaning as for EvPeriodic::__construct() . See Periodic watcher operation modes

interval

The same meaning as for EvPeriodic::__construct() . See Periodic watcher operation modes

返回值

没有返回值。

EvPeriodic::createStopped
EvPrepare
EvPeriodic


The EvPrepare class

(PECL ev >= 0.2.0)

简介

EvPrepare and EvCheck watchers are usually used in pairs. EvPrepare watchers get invoked before the process blocks, EvCheck afterwards.

It is not allowed to call EvLoop::run() or similar methods or functions that enter the current event loop from either EvPrepare or EvCheck watchers. Other loops than the current one are fine, however. The rationale behind this is that one don't need to check for recursion in those watchers, i.e. the sequence will always be: EvPrepare -> blocking -> EvCheck , so having a watcher of each kind they will always be called in pairs bracketing the blocking call.

The main purpose is to integrate other event mechanisms into libev and their use is somewhat advanced. They could be used, for example, to track variable changes, implement custom watchers, integrate net-snmp or a coroutine library and lots more. They are also occasionally useful to cache some data and want to flush it before blocking.

It is recommended to give EvCheck watchers highest( Ev::MAXPRI ) priority, to ensure that they are being run before any other watchers after the poll (this doesn't matter for EvPrepare watchers).

Also, EvCheck watchers should not activate/feed events. While libev fully supports this, they might get executed before other EvCheck watchers did their job.

类摘要

EvPrepare extends EvWatcher {
/* 继承的属性 */
public $is_active ;
public $data ;
public $is_pending ;
public $priority ;
/* 方法 */
public __construct ( string $callback [, string $data [, string $priority ]] )
final public static EvPrepare createStopped ( callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
/* 继承的方法 */
public int EvWatcher::clear ( void )
abstract public EvWatcher::__construct ( void )
public void EvWatcher::feed ( int $revents )
public EvLoop EvWatcher::getLoop ( void )
public void EvWatcher::invoke ( int $revents )
public bool EvWatcher::keepalive ([ bool $value ] )
public void EvWatcher::setCallback ( callable $callback )
public void EvWatcher::start ( void )
public void EvWatcher::stop ( void )
}

Table of Contents

  • EvPrepare::__construct — Constructs EvPrepare watcher object
  • EvPrepare::createStopped — Creates a stopped instance of EvPrepare watcher
EvPeriodic::set
EvPrepare::__construct
Ev


Constructs EvPrepare watcher object

EvPrepare
EvPrepare::createStopped
EvPrepare
PHP Manual

EvPrepare::__construct

(PECL ev >= 0.2.0)

EvPrepare::__construct — Constructs EvPrepare watcher object

说明

public EvPrepare::__construct ( string $callback [, string $data [, string $priority ]] )

Constructs EvPrepare watcher object. And starts the watcher automatically. If need a stopped watcher consider using EvPrepare::createStopped()

参数

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

Returns EvPrepare object on success.

参见

  • EvCheck
EvPrepare
EvPrepare::createStopped
EvPrepare


Creates a stopped instance of EvPrepare watcher

EvPrepare::__construct
EvSignal
EvPrepare
PHP Manual

EvPrepare::createStopped

(PECL ev >= 0.2.0)

EvPrepare::createStopped — Creates a stopped instance of EvPrepare watcher

说明

final public static EvPrepare EvPrepare::createStopped ( callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )

Creates a stopped instance of EvPrepare watcher. Unlike EvPrepare::__construct() , this method doesn' start the watcher automatically.

参数

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

Return EvPrepare object on success.

参见

  • EvPrepare::__construct() - Constructs EvPrepare watcher object
  • EvWatcher::start() - Starts the watcher
EvPrepare::__construct
EvSignal
EvPrepare


The EvSignal class

(PECL ev >= 0.2.0)

简介

EvSignal watchers will trigger an event when the process receives a specific signal one or more times. Even though signals are very asynchronous, libev will try its best to deliver signals synchronously, i.e. as part of the normal event processing, like any other event.

There is no limit for the number of watchers for the same signal, but only within the same loop, i.e. one can watch for SIGINT in the default loop and for SIGIO in another loop, but it is not allowed to watch for SIGINT in both the default loop and another loop at the same time. At the moment, SIGCHLD is permanently tied to the default loop.

If possible and supported, libev will install its handlers with SA_RESTART (or equivalent) behaviour enabled, so system calls should not be unduly interrupted. In case of a problem with system calls getting interrupted by signals, all the signals can be blocked in an EvCheck watcher and unblocked in a EvPrepare watcher.

类摘要

EvSignal extends EvWatcher {
/* 属性 */
public $signum ;
/* 继承的属性 */
public $is_active ;
public $data ;
public $is_pending ;
public $priority ;
/* 方法 */
public __construct ( int $signum , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
final public static EvSignal createStopped ( int $signum , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void set ( int $signum )
/* 继承的方法 */
public int EvWatcher::clear ( void )
abstract public EvWatcher::__construct ( void )
public void EvWatcher::feed ( int $revents )
public EvLoop EvWatcher::getLoop ( void )
public void EvWatcher::invoke ( int $revents )
public bool EvWatcher::keepalive ([ bool $value ] )
public void EvWatcher::setCallback ( callable $callback )
public void EvWatcher::start ( void )
public void EvWatcher::stop ( void )
}

属性

signum

Signal number. See the constants exported by pcntl extension. See also signal(7) man page.

Table of Contents

  • EvSignal::__construct — Constructs EvPeriodic watcher object
  • EvSignal::createStopped — Create stopped EvSignal watcher object
  • EvSignal::set — Configures the watcher
EvPrepare::createStopped
EvSignal::__construct
Ev


Constructs EvPeriodic watcher object

EvSignal
EvSignal::createStopped
EvSignal
PHP Manual

EvSignal::__construct

(PECL ev >= 0.2.0)

EvSignal::__construct — Constructs EvPeriodic watcher object

说明

public EvSignal::__construct ( int $signum , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )

Constructs EvPeriodic watcher object and starts it automatically. For a stopped periodic watcher consider using EvSignal::createStopped() method.

参数

signum

Signal number. See constants exported by pcntl extension. See also signal(7) man page.

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

Returns EvSignal object on success.

范例

Example #1 Handle SIGTERM signal

<?php
$w = new EvSignal(SIGTERM, function ($watcher) {
    echo "SIGTERM received\n";
    $watcher->stop();
});

Ev::run();
?>

参见

  • EvSignal::createStopped() - Create stopped EvSignal watcher object
EvSignal
EvSignal::createStopped
EvSignal


Create stopped EvSignal watcher object

EvSignal::__construct
EvSignal::set
EvSignal
PHP Manual

EvSignal::createStopped

(PECL ev >= 0.2.0)

EvSignal::createStopped — Create stopped EvSignal watcher object

说明

final public static EvSignal EvSignal::createStopped ( int $signum , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )

Create stopped EvSignal watcher object. Unlike EvSignal::__construct() , this method does't start the watcher automatically.

参数

signum

Signal number. See constants exported by pcntl extension. See also signal(7) man page.

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

Returns EvSignal object on success.

参见

  • EvWatcher::start() - Starts the watcher
  • EvSignal::__construct() - Constructs EvPeriodic watcher object
EvSignal::__construct
EvSignal::set
EvSignal


Configures the watcher

EvSignal::createStopped
EvStat
EvSignal
PHP Manual

EvSignal::set

(PECL ev >= 0.2.0)

EvSignal::set — Configures the watcher

说明

public void EvSignal::set ( int $signum )

Configures the watcher.

参数

signum

Signal number. The same as for EvSignal::__construct()

返回值

没有返回值。

EvSignal::createStopped
EvStat
EvSignal


The EvStat class

(PECL ev >= 0.2.0)

简介

EvStat monitors a file system path for attribute changes. It calls stat() on that path in regular intervals(or when the OS signals it changed) and sees if it changed compared to the last time, invoking the callback if it did.

The path does not need to exist: changing from "path exists" to "path does not exist" is a status change like any other. The condition "path does not exist" is signified by the 'nlink' item being 0(returned by EvStat::attr() method).

The path must not end in a slash or contain special components such as '.' or .. . The path should be absolute: if it is relative and the working directory changes, then the behaviour is undefined.

Since there is no portable change notification interface available, the portable implementation simply calls stat() regularly on the path to see if it changed somehow. For this case a recommended polling interval can be specified. If one specifies a polling interval of 0.0 (highly recommended) then a suitable, unspecified default value will be used(which could be expected to be around 5 seconds, although this might change dynamically). libev will also impose a minimum interval which is currently around 0.1 , but that's usually overkill.

This watcher type is not meant for massive numbers of EvStat watchers, as even with OS-supported change notifications, this can be resource-intensive.

类摘要

EvStat extends EvWatcher {
/* 属性 */
public $path ;
public $interval ;
/* 继承的属性 */
public $is_active ;
public $data ;
public $is_pending ;
public $priority ;
/* 方法 */
public array attr ( void )
public __construct ( string $path , double $interval , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
final public static void createStopped ( string $path , double $interval , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void prev ( void )
public void set ( string $path , double $interval )
public bool stat ( void )
/* 继承的方法 */
public int EvWatcher::clear ( void )
abstract public EvWatcher::__construct ( void )
public void EvWatcher::feed ( int $revents )
public EvLoop EvWatcher::getLoop ( void )
public void EvWatcher::invoke ( int $revents )
public bool EvWatcher::keepalive ([ bool $value ] )
public void EvWatcher::setCallback ( callable $callback )
public void EvWatcher::start ( void )
public void EvWatcher::stop ( void )
}

属性

interval

Readonly . Hint on how quickly a change is expected to be detected and should normally be specified as 0.0 to let libev choose a suitable value.

path

Readonly . The path to wait for status changes on.

Table of Contents

  • EvStat::attr — Returns the values most recently detected by Ev
  • EvStat::__construct — Constructs EvStat watcher object
  • EvStat::createStopped — Create a stopped EvStat watcher object
  • EvStat::prev — Returns the previous set of values returned by EvStat::attr
  • EvStat::set — Configures the watcher
  • EvStat::stat — Initiates the stat call
EvSignal::set
EvStat::attr
Ev


Returns the values most recently detected by Ev

EvStat
EvStat::__construct
EvStat
PHP Manual

EvStat::attr

(PECL ev >= 0.2.0)

EvStat::attr — Returns the values most recently detected by Ev

说明

public array EvStat::attr ( void )

Returns array of the values most recently detected by Ev

参数

此函数没有参数。

返回值

Returns array with the values most recently detect by Ev(without actual stat 'ing):

List for item keys of the array returned by EvStat::attr()
Key | Description
'dev' | ID of device containing file
'ino' | inode number
'mode' | protection
'nlink' | number of hard links
'uid' | user ID of owner
'size' | total size, in bytes
'gid' | group ID of owner
'rdev' | device ID (if special file)
'blksize' | blocksize for file system I/O
'blocks' | number of 512B blocks allocated
'atime' | time of last access
'ctime' | time of last status change
'mtime' | time of last modification

See stat(2) man page for details.

范例

Example #1 Monitor changes of /var/log/messages

<?php
// Use 10 second update interval.
$w = new EvStat("/var/log/messages", 8, function ($w) {
    echo "/var/log/messages changed\n";

    $attr = $w->attr();

    if ($attr['nlink']) {
        printf("Current size: %ld\n", $attr['size']);
        printf("Current atime: %ld\n", $attr['atime']);
        printf("Current mtime: %ld\n", $attr['mtime']);
    } else {
        fprintf(STDERR, "`messages` file is not there!");
        $w->stop();
    }
});

Ev::run();
?>

参见

  • EvStat::prev() - Returns the previous set of values returned by EvStat::attr
  • EvStat::stat() - Initiates the stat call
EvStat
EvStat::__construct
EvStat


Constructs EvStat watcher object

EvStat::attr
EvStat::createStopped
EvStat
PHP Manual

EvStat::__construct

(PECL ev >= 0.2.0)

EvStat::__construct — Constructs EvStat watcher object

说明

public EvStat::__construct ( string $path , double $interval , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )

Constructs EvStat watcher object and starts the watcher automatically.

参数

path

The path to wait for status changes on.

interval

Hint on how quickly a change is expected to be detected and should normally be specified as 0.0 to let libev choose a suitable value.

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

Returns EvStat watcher object on succes.

范例

Example #1 Monitor changes of /var/log/messages

<?php
// Use 10 second update interval.
$w = new EvStat("/var/log/messages", 8, function ($w) {
 echo "/var/log/messages changed\n";

 $attr = $w->attr();

 if ($attr['nlink']) {
  printf("Current size: %ld\n", $attr['size']);
  printf("Current atime: %ld\n", $attr['atime']);
  printf("Current mtime: %ld\n", $attr['mtime']);
 } else {
  fprintf(STDERR, "`messages` file is not there!");
  $w->stop();
 }
});

Ev::run();
?>
EvStat::attr
EvStat::createStopped
EvStat


Create a stopped EvStat watcher object

EvStat::__construct
EvStat::prev
EvStat
PHP Manual

EvStat::createStopped

(PECL ev >= 0.2.0)

EvStat::createStopped — Create a stopped EvStat watcher object

说明

final public static void EvStat::createStopped ( string $path , double $interval , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )

Creates EvStat watcher object, but doesn't start it automatically(unlike EvStat::__construct() ).

参数

path

The path to wait for status changes on.

interval

Hint on how quickly a change is expected to be detected and should normally be specified as 0.0 to let libev choose a suitable value.

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

Returns a stopped EvStat watcher object on success.

参见

  • EvStat::__construct() - Constructs EvStat watcher object
  • EvWatcher::start() - Starts the watcher
EvStat::__construct
EvStat::prev
EvStat


Returns the previous set of values returned by EvStat::attr

EvStat::createStopped
EvStat::set
EvStat
PHP Manual

EvStat::prev

(PECL ev >= 0.2.0)

EvStat::prev — Returns the previous set of values returned by EvStat::attr

说明

public void EvStat::prev ( void )

Just like EvStat::attr() , but returns the previous set of values.

参数

此函数没有参数。

返回值

Returns an array with the same structure as the array returned by EvStat::attr() . The array contains previously detected values.

参见

  • EvStat::attr() - Returns the values most recently detected by Ev
  • EvStat::stat() - Initiates the stat call
EvStat::createStopped
EvStat::set
EvStat


Configures the watcher

EvStat::prev
EvStat::stat
EvStat
PHP Manual

EvStat::set

(PECL ev >= 0.2.0)

EvStat::set — Configures the watcher

说明

public void EvStat::set ( string $path , double $interval )

Configures the watcher.

参数

path

The path to wait for status changes on.

interval

Hint on how quickly a change is expected to be detected and should normally be specified as 0.0 to let libev choose a suitable value.

返回值

没有返回值。

EvStat::prev
EvStat::stat
EvStat


Initiates the stat call

EvStat::set
EvTimer
EvStat
PHP Manual

EvStat::stat

(PECL ev >= 0.2.0)

EvStat::stat — Initiates the stat call

说明

public bool EvStat::stat ( void )

Initiates the stat call(updates internal cache). It stats(using lstat ) the path specified in the watcher and sets to the values found.

参数

此函数没有参数。

返回值

Returns TRUE if path exists. Otherwise FALSE.

参见

  • EvStat::attr() - Returns the values most recently detected by Ev
  • EvStat::prev() - Returns the previous set of values returned by EvStat::attr
EvStat::set
EvTimer
EvStat


The EvTimer class

(PECL ev >= 0.2.0)

简介

EvTimer watchers are simple relative timers that generate an event after a given time, and optionally repeating in regular intervals after that.

The timers are based on real time, that is, if one registers an event that times out after an hour and resets the system clock to January last year , it will still time out after(roughly) one hour. "Roughly" because detecting time jumps is hard, and some inaccuracies are unavoidable.

The callback is guaranteed to be invoked only after its timeout has passed (not at, so on systems with very low-resolution clocks this might introduce a small delay). If multiple timers become ready during the same loop iteration then the ones with earlier time-out values are invoked before ones of the same priority with later time-out values (but this is no longer true when a callback calls EvLoop::run() recursively).

The timer itself will do a best-effort at avoiding drift, that is, if a timer is configured to trigger every 10 seconds, then it will normally trigger at exactly 10 second intervals. If, however, the script cannot keep up with the timer because it takes longer than those 10 seconds to do) the timer will not fire more than once per event loop iteration.

类摘要

EvTimer extends EvWatcher {
/* 属性 */
public $repeat ;
public $remaining ;
/* 继承的属性 */
public $is_active ;
public $data ;
public $is_pending ;
public $priority ;
/* 方法 */
public void again ( void )
public __construct ( double $after , double $repeat , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
final public static EvTimer createStopped ( double $after , double $repeat , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void set ( double $after , double $repeat )
/* 继承的方法 */
public int EvWatcher::clear ( void )
abstract public EvWatcher::__construct ( void )
public void EvWatcher::feed ( int $revents )
public EvLoop EvWatcher::getLoop ( void )
public void EvWatcher::invoke ( int $revents )
public bool EvWatcher::keepalive ([ bool $value ] )
public void EvWatcher::setCallback ( callable $callback )
public void EvWatcher::start ( void )
public void EvWatcher::stop ( void )
}

属性

repeat

If repeat is 0.0 , then it will automatically be stopped once the timeout is reached. If it is positive, then the timer will automatically be configured to trigger again every repeat seconds later, until stopped manually.

remaining

Returns the remaining time until a timer fires. If the timer is active, then this time is relative to the current event loop time, otherwise it's the timeout value currently configured.

That is, after instanciating an EvTimer with an after value of 5.0 and repeat value of 7.0 , remaining returns 5.0 . When the timer is started and one second passes, remaining will return 4.0 . When the timer expires and is restarted, it will return roughly 7.0 (likely slightly less as callback invocation takes some time too), and so on.

Table of Contents

  • EvTimer::again — Restarts the timer watcher
  • EvTimer::__construct — Constructs an EvTimer watcher object
  • EvTimer::createStopped — Creates EvTimer stopped watcher object
  • EvTimer::set — Configures the watcher
EvStat::stat
EvTimer::again
Ev


Restarts the timer watcher

EvTimer
EvTimer::__construct
EvTimer
PHP Manual

EvTimer::again

(PECL ev >= 0.2.0)

EvTimer::again — Restarts the timer watcher

说明

public void EvTimer::again ( void )

This will act as if the timer timed out and restart it again if it is repeating. The exact semantics are:

  1. if the timer is pending, its pending status is cleared.

  2. if the timer is started but non-repeating, stop it (as if it timed out).

  3. if the timer is repeating, either start it if necessary (with the repeat value), or reset the running timer to the repeat value.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • EvWatcher::stop() - Stops the watcher
EvTimer
EvTimer::__construct
EvTimer


Constructs an EvTimer watcher object

EvTimer::again
EvTimer::createStopped
EvTimer
PHP Manual

EvTimer::__construct

(PECL ev >= 0.2.0)

EvTimer::__construct — Constructs an EvTimer watcher object

说明

public EvTimer::__construct ( double $after , double $repeat , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )

Constructs an EvTimer watcher object.

参数

after

Configures the timer to trigger after after seconds.

repeat

If repeat is 0.0 , then it will automatically be stopped once the timeout is reached. If it is positive, then the timer will automatically be configured to trigger again every repeat seconds later, until stopped manually.

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

Returns EvTimer object on success.

范例

Example #1 Simple timers

<?php
// Create and start timer firing after 2 seconds
$w1 = new EvTimer(2, 0, function () {
    echo "2 seconds elapsed\n";
});

// Create and launch timer firing after 2 seconds repeating each second
// until we manually stop it
$w2 = new EvTimer(2, 1, function ($w) {
    echo "is called every second, is launched after 2 seconds\n";
    echo "iteration = ", Ev::iteration(), PHP_EOL;

    // Stop the watcher after 5 iterations
    Ev::iteration() == 5 and $w->stop();
    // Stop the watcher if further calls cause more than 10 iterations
    Ev::iteration() >= 10 and $w->stop();
});

// Create stopped timer. It will be inactive until we start it ourselves
$w_stopped = EvTimer::createStopped(10, 5, function($w) {
    echo "Callback of a timer created as stopped\n";

    // Stop the watcher after 2 iterations
    Ev::iteration() >= 2 and $w->stop();
});

// Loop until Ev::stop() is called or all of watchers stop
Ev::run();

// Start and look if it works
$w_stopped->start();
echo "Run single iteration\n";
Ev::run(Ev::RUN_ONCE);

echo "Restart the second watcher and try to handle the same events, but don't block\n";
$w2->again();
Ev::run(Ev::RUN_NOWAIT);

$w = new EvTimer(10, 0, function() {});
echo "Running a blocking loop\n";
Ev::run();
echo "END\n";
?>

以上例程的输出类似于：

2 seconds elapsed
is called every second, is launched after 2 seconds
iteration = 1
is called every second, is launched after 2 seconds
iteration = 2
is called every second, is launched after 2 seconds
iteration = 3
is called every second, is launched after 2 seconds
iteration = 4
is called every second, is launched after 2 seconds
iteration = 5
Run single iteration
Callback of a timer created as stopped
Restart the second watcher and try to handle the same events, but don't block
Running a blocking loop
is called every second, is launched after 2 seconds
iteration = 8
is called every second, is launched after 2 seconds
iteration = 9
is called every second, is launched after 2 seconds
iteration = 10
END

参见

  • EvTimer::createStopped() - Creates EvTimer stopped watcher object
  • EvPeriodic
  • » ev_timer - relative and optionally repeating timeouts
  • » Be smart about timeouts
EvTimer::again
EvTimer::createStopped
EvTimer


Creates EvTimer stopped watcher object

EvTimer::__construct
EvTimer::set
EvTimer
PHP Manual

EvTimer::createStopped

(PECL ev >= 0.2.0)

EvTimer::createStopped — Creates EvTimer stopped watcher object

说明

final public static EvTimer EvTimer::createStopped ( double $after , double $repeat , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )

Creates EvTimer stopped watcher object. Unlike EvTimer::__construct() , this method doesn't start the watcher automatically.

参数

after

Configures the timer to trigger after after seconds.

repeat

If repeat is 0.0 , then it will automatically be stopped once the timeout is reached. If it is positive, then the timer will automatically be configured to trigger again every repeat seconds later, until stopped manually.

callback

See Watcher callbacks .

data

Custom data associated with the watcher.

priority

Watcher priority

返回值

Returns EvTimer watcher object on success.

范例

Example #1 Monotor changes of /var/log/messages. Avoid missing updates by means of one second delay

<?php
$timer = EvTimer::createStopped(0., 1.02, function ($w) {
    $w->stop();

    $stat = $w->data;

    // 1 second after the most recent change of the file
    printf("Current size: %ld\n", $stat->attr()['size']);
});

$stat = new EvStat("/var/log/messages", 0., function () use ($timer) {
    // Reset timer watcher
    $timer->again();
});

$timer->data = $stat;

Ev::run();
?>

参见

  • EvTimer::__construct() - Constructs an EvTimer watcher object
  • EvPeriodic
EvTimer::__construct
EvTimer::set
EvTimer


Configures the watcher

EvTimer::createStopped
EvWatcher
EvTimer
PHP Manual

EvTimer::set

(PECL ev >= 0.2.0)

EvTimer::set — Configures the watcher

说明

public void EvTimer::set ( double $after , double $repeat )

Configures the watcher

参数

after

Configures the timer to trigger after after seconds.

repeat

If repeat is 0.0 , then it will automatically be stopped once the timeout is reached. If it is positive, then the timer will automatically be configured to trigger again every repeat seconds later, until stopped manually.

返回值

没有返回值。

EvTimer::createStopped
EvWatcher
EvTimer


The EvWatcher class

(PECL ev >= 0.2.0)

简介

EvWatcher is a base class for all watchers( EvCheck , EvChild etc.). Since EvWatcher 's constructor is abstract , one can't(and don't need to) create EvWatcher objects directly.

类摘要

abstract EvWatcher {
/* 属性 */
public $is_active ;
public $data ;
public $is_pending ;
public $priority ;
/* 方法 */
public int clear ( void )
abstract public __construct ( void )
public void feed ( int $revents )
public EvLoop getLoop ( void )
public void invoke ( int $revents )
public bool keepalive ([ bool $value ] )
public void setCallback ( callable $callback )
public void start ( void )
public void stop ( void )
}

属性

is_active

Readonly . TRUE if the watcher is active. FALSE otherwise.

data

User custom data associated with the watcher

is_pending

Readonly .TRUE if the watcher is pending, i.e. it has outstanding events, but its callback has not yet been invoked. FALSE otherwise. As long, as a watcher is pending(but not active), one must not change its priority.

priority

Integer between Ev::MINPRI and Ev::MAXPRI . Pending watchers with higher priority will be invoked before watchers with lower priority, but priority will not keep watchers from being executed(except for EvIdle watchers). EvIdle watchers provide functionality to suppress invocation when higher priority events are pending.

Table of Contents

  • EvWatcher::clear — Clear watcher pending status
  • EvWatcher::__construct — Abstract constructor of a watcher object
  • EvWatcher::feed — Feeds the given revents set into the event loop
  • EvWatcher::getLoop — Returns the loop responsible for the watcher
  • EvWatcher::invoke — Invokes the watcher callback with the given received events bit mask
  • EvWatcher::keepalive — Configures whether to keep the loop from returning
  • EvWatcher::setCallback — Sets new callback for the watcher
  • EvWatcher::start — Starts the watcher
  • EvWatcher::stop — Stops the watcher
EvTimer::set
EvWatcher::clear
Ev


Clear watcher pending status

EvWatcher
EvWatcher::__construct
EvWatcher
PHP Manual

EvWatcher::clear

(PECL ev >= 0.2.0)

EvWatcher::clear — Clear watcher pending status

说明

public int EvWatcher::clear ( void )

If the watcher is pending, this method clears its pending status and returns its revents bitset(as if its callback was invoked). If the watcher isn't pending it does nothing and returns 0 .

Sometimes it can be useful to "poll" a watcher instead of waiting for its callback to be invoked, which can be accomplished with this function.

参数

此函数没有参数。

返回值

In case if the watcher is pending, returns revents bitset as if the watcher callback had been invoked. Otherwise returns 0 .

EvWatcher
EvWatcher::__construct
EvWatcher


Abstract constructor of a watcher object

EvWatcher::clear
EvWatcher::feed
EvWatcher
PHP Manual

EvWatcher::__construct

(PECL ev >= 0.2.0)

EvWatcher::__construct — Abstract constructor of a watcher object

说明

abstract public EvWatcher::__construct ( void )

EvWatcher::__construct() is an abstract constructor of a watcher object implemented in the derived classes.

EvWatcher::clear
EvWatcher::feed
EvWatcher


Feeds the given revents set into the event loop

EvWatcher::__construct
EvWatcher::getLoop
EvWatcher
PHP Manual

EvWatcher::feed

(PECL ev >= 0.2.0)

EvWatcher::feed — Feeds the given revents set into the event loop

说明

public void EvWatcher::feed ( int $revents )

Feeds the given revents set into the event loop, as if the specified event had happened for the watcher.

参数

revents

Bit mask of watcher received events .

返回值

没有返回值。

EvWatcher::__construct
EvWatcher::getLoop
EvWatcher


Returns the loop responsible for the watcher

EvWatcher::feed
EvWatcher::invoke
EvWatcher
PHP Manual

EvWatcher::getLoop

(PECL ev >= 0.2.0)

EvWatcher::getLoop — Returns the loop responsible for the watcher

说明

public EvLoop EvWatcher::getLoop ( void )

Returns the loop responsible for the watcher

参数

此函数没有参数。

返回值

Returns EvLoop event loop object responsible for the watcher.

EvWatcher::feed
EvWatcher::invoke
EvWatcher


Invokes the watcher callback with the given received events bit mask

EvWatcher::getLoop
EvWatcher::keepalive
EvWatcher
PHP Manual

EvWatcher::invoke

(PECL ev >= 0.2.0)

EvWatcher::invoke — Invokes the watcher callback with the given received events bit mask

说明

public void EvWatcher::invoke ( int $revents )

Invokes the watcher callback with the given received events bit mask.

参数

revents

Bit mask of watcher received events .

返回值

没有返回值。

EvWatcher::getLoop
EvWatcher::keepalive
EvWatcher


Configures whether to keep the loop from returning

EvWatcher::invoke
EvWatcher::setCallback
EvWatcher
PHP Manual

EvWatcher::keepalive

(PECL ev >= 0.2.0)

EvWatcher::keepalive — Configures whether to keep the loop from returning

说明

public bool EvWatcher::keepalive ([ bool $value ] )

Configures whether to keep the loop from returning. With keepalive value set to FALSE the watcher won't keep Ev::run() / EvLoop::run() from returning even though the watcher is active.

Watchers have keepalive value TRUE by default.

Clearing keepalive status is useful when returning from Ev::run() / EvLoop::run() just because of the watcher is undesirable. It could be a long running UDP socket watcher or so.

参数

value

With keepalive value set to FALSE the watcher won't keep Ev::run() / EvLoop::run() from returning even though the watcher is active.

返回值

Returns the previous state.

范例

Example #1 Register an I/O watcher for some UDP socket but do not keep the event loop from running just because of that watcher.

<?php
$udp_socket = ...
$udp_watcher = new EvIo($udp_socket, Ev::READ, function () { /* ... */ });
$udp_watcher->keepalive(FALSE);
?>
EvWatcher::invoke
EvWatcher::setCallback
EvWatcher


Sets new callback for the watcher

EvWatcher::keepalive
EvWatcher::start
EvWatcher
PHP Manual

EvWatcher::setCallback

(PECL ev >= 0.2.0)

EvWatcher::setCallback — Sets new callback for the watcher

说明

public void EvWatcher::setCallback ( callable $callback )

Sets new callback for the watcher

参数

callback

See Watcher callbacks .

返回值

没有返回值。

EvWatcher::keepalive
EvWatcher::start
EvWatcher


Starts the watcher

EvWatcher::setCallback
EvWatcher::stop
EvWatcher
PHP Manual

EvWatcher::start

(PECL ev >= 0.2.0)

EvWatcher::start — Starts the watcher

说明

public void EvWatcher::start ( void )

Marks the watcher as active. Note that only active watchers will receive events.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • EvWatcher::stop() - Stops the watcher
EvWatcher::setCallback
EvWatcher::stop
EvWatcher


Stops the watcher

EvWatcher::start
Expect
EvWatcher
PHP Manual

EvWatcher::stop

(PECL ev >= 0.2.0)

EvWatcher::stop — Stops the watcher

说明

public void EvWatcher::stop ( void )

Marks the watcher as inactive. Note that only active watchers will receive events.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • EvWatcher::start() - Starts the watcher
EvWatcher::start
Expect
EvWatcher


Expect

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Expect Usage Examples
  • Expect 函数
    • expect_expectl — Waits until the output from a process matches one of the patterns, a specified time period has passed, or an EOF is seen
    • expect_popen — Execute command via Bourne shell, and open the PTY stream to the process
EvWatcher::stop
简介
进程控制扩展


简介

This extension allows to interact with processes through PTY. You may consider using the expect:// wrapper with the filesystem functions which provide a simpler and more intuitive interface.

Expect
安装／配置
Expect


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Expect


需求

This module uses the functions of the » expect library. You need libexpect version >= 5.43.0.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。 安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/expect.

In order to use these functions you must compile PHP with expect support by using the --with-expect[=DIR] configure option.

Windows users will enable php_expect.dll inside of php.ini in order to use these functions. PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

In order to configure expect extension, there are configuration options in the configuration file php.ini.

Expect 配置选项
名字 | 默认 | 可修改范围 | Changelog
expect.timeout | "10" | PHP_INI_ALL |
expect.loguser | "1" | PHP_INI_ALL |
expect.logfile | "" | PHP_INI_ALL |
expect.match_max | "" | PHP_INI_ALL |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

expect.timeout integer

The timeout period for waiting for the data, when using the expect_expectl() function.

A value of "-1" disables a timeout from occurring.

Note:

A value of "0" causes the expect_expectl() function to return immediately.

expect.loguser boolean

Whether expect should send any output from the spawned process to stdout. Since interactive programs typically echo their input, this usually suffices to show both sides of the conversation.

expect.logfile string

Name of the file, where the output from the spawned process will be written. If this file doesn't exist, it will be created.

Note:

If this configuration is not empty, the output is written regardless of the value of expect.loguser.

expect.match_max integer

Changes default size (2000 bytes) of the buffer used to match asterisks in patterns.

安装
资源类型
安装／配置


资源类型

expect_popen() returns an open PTY stream used by expect_expectl().

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

EXP_GLOB (integer)
Indicates that the pattern is a glob-style string pattern.
EXP_EXACT (integer)
Indicates that the pattern is an exact string.
EXP_REGEXP (integer)
Indicates that the pattern is a regexp-style string pattern.
EXP_EOF (integer)
Value, returned by expect_expectl(), when EOF is reached.
EXP_TIMEOUT (integer)
Value, returned by expect_expectl() upon timeout of seconds, specified in value of expect.timeout
EXP_FULLBUFFER (integer)
Value, returned by expect_expectl() if no pattern have been matched.
资源类型
范例
Expect


范例

Table of Contents

  • Expect Usage Examples
预定义常量
Expect Usage Examples
Expect


Expect Usage Examples

Example #1 Expect Usage Example

This example connects to the remote host via SSH, and prints the remote uptime.

<?php
ini_set("expect.loguser", "Off");

$stream = fopen("expect://ssh root@remotehost uptime", "r");

$cases = array (
    array (0 => "password:", 1 => PASSWORD)
);

switch (expect_expectl ($stream, $cases)) {
    case PASSWORD:
        fwrite ($stream, "password\n");
        break;

    default:
        die ("Error was occurred while connecting to the remote host!\n");
}

while ($line = fgets($stream)) {
      print $line;
}
fclose ($stream);
?>

The following example connects to the remote host, determines whether installed OS is for 32 or 64 bit, then runs update for specific package.

Example #2 Another Expect Usage Example

<?php
ini_set("expect.timeout", -1);
ini_set("expect.loguser", "Off");

$stream = expect_popen("ssh root@remotehost");

while (true) {
    switch (expect_expectl ($stream, array (
            array ("password:", PASSWORD), // SSH is asking for password
            array ("yes/no)?", YESNO), // SSH is asking whether to store the host entry
            array ("~$ ", SHELL, EXP_EXACT), // We've got the shell!
    ))) {
        case PASSWORD:
            fwrite ($stream, "secret\n");
            break;

        case YESNO:
            fwrite ($stream, "yes\n");
            break;

        case SHELL:
            fwrite ($stream, "uname -a\n");
            while (true) {
                    switch (expect_expectl ($stream, array (
                            array ("~$ ", SHELL, EXP_EXACT), // We've got the shell!
                            array ("^Linux.*$", UNAME, EXP_REGEXP), // uname -a output
                    ), $match)) {
                        case UNAME:
                            $uname .= $match[0];
                            break;

                        case SHELL:
                            // Run update:
                            if (strstr ($uname, "x86_64")) {
                                    fwrite ($stream, "rpm -Uhv http://mirrorsite/somepath/some_64bit.rpm\n");
                            } else {
                                    fwrite ($stream, "rpm -Uhv http://mirrorsite/somepath/some_32bit.rpm\n");
                            }
                            fwrite ($stream, "exit\n");
                            break 2;

                        case EXP_TIMEOUT:
                        case EXP_EOF:
                            break 2;

                        default:
                            die ("Error has occurred!\n");
                    }
            }
            break 2;

        case EXP_TIMEOUT:
        case EXP_EOF:
            break 2;

        default:
            die ("Error has occurred!\n");
    }
}

fclose ($stream);
?>
范例
Expect 函数
范例


Expect 函数

Table of Contents

  • expect_expectl — Waits until the output from a process matches one of the patterns, a specified time period has passed, or an EOF is seen
  • expect_popen — Execute command via Bourne shell, and open the PTY stream to the process
Expect Usage Examples
expect_expectl
Expect


Waits until the output from a process matches one of the patterns, a specified time period has passed, or an EOF is seen

Expect 函数
expect_popen
Expect 函数
PHP Manual

expect_expectl

(PECL expect >= 0.1.0)

expect_expectl — Waits until the output from a process matches one of the patterns, a specified time period has passed, or an EOF is seen

说明

int expect_expectl ( resource $expect , array $cases [, array &$match ] )

Waits until the output from a process matches one of the patterns, a specified time period has passed, or an EOF is seen.

If match is provided, then it is filled with the result of search. The matched string can be found in match[0]. The match substrings (according to the parentheses) in the original pattern can be found in match[1], match[2], and so on, up to match[9] (the limitation of libexpect).

参数

expect

An Expect stream, previously opened with expect_popen().

cases

An array of expect cases. Each expect case is an indexed array, as described in the following table:

Expect Case Array
Index Key | Value Type | Description | Is Mandatory | Default Value
0 | string | pattern, that will be matched against the output from the stream | yes
1 | mixed | value, that will be returned by this function, if the pattern matches | yes
2 | integer | pattern type, one of: EXP_GLOB, EXP_EXACT or EXP_REGEXP | no | EXP_GLOB

返回值

Returns value associated with the pattern that was matched.

On failure this function returns: EXP_EOF, EXP_TIMEOUT or EXP_FULLBUFFER

更新日志

版本 | 说明
0.2.1 | Prior to version 0.2.1, in match parameter a match string was returned, not an array of match substrings.

范例

Example #1 expect_expectl() example

<?php
// Copies file from remote host:
ini_set("expect.timeout", 30);

$stream = fopen("expect://scp user@remotehost:/var/log/messages /home/user/messages.txt", "r");

$cases = array(
    // array(pattern, value to return if pattern matched)
    array("password:", "asked for password"),
    array("yes/no)?",  "asked for yes/no")
);

while (true) {
    switch (expect_expectl($stream, $cases)) {
        case "asked for password":
            fwrite($stream, "my password\n");
            break;
        case "asked for yes/no":
            fwrite($stream, "yes\n");
            break;
        case EXP_TIMEOUT:
        case EXP_EOF:
            break 2; // break both the switch statement and the while loop
        default:
            die "Error has occurred!";
    }
}

fclose($stream);
?>

参见

  • expect_popen() - Execute command via Bourne shell, and open the PTY stream to the process

Expect 函数
expect_popen
Expect 函数


Execute command via Bourne shell, and open the PTY stream to the process

expect_expectl
Libevent
Expect 函数
PHP Manual

expect_popen

(PECL expect >= 0.1.0)

expect_popen — Execute command via Bourne shell, and open the PTY stream to the process

说明

resource expect_popen ( string $command )

Execute command via Bourne shell, and open the PTY stream to the process.

参数

command

Command to execute.

返回值

Returns an open PTY stream to the processes stdio, stdout, and stderr.

On failure this function returns FALSE.

范例

Example #1 expect_popen() example

<?php
// Login to the PHP.net CVS repository:
$stream = expect_popen ("cvs -d :pserver:anonymous@cvs.php.net:/repository login");
sleep (3);
fwrite ($stream, "phpfi\n");
fclose ($stream);
?>

参见

  • popen() - 打开进程文件指针

expect_expectl
Libevent
Expect 函数


Libevent

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • Libevent 函数
    • event_add — Add an event to the set of monitored events
    • event_base_free — Destroy event base
    • event_base_loop — Handle events
    • event_base_loopbreak — Abort event loop
    • event_base_loopexit — Exit loop after a time
    • event_base_new — Create and initialize new event base
    • event_base_priority_init — Set the number of event priority levels
    • event_base_reinit — Reinitialize the event base after a fork
    • event_base_set — Associate event base with an event
    • event_buffer_base_set — Associate buffered event with an event base
    • event_buffer_disable — Disable a buffered event
    • event_buffer_enable — Enable a buffered event
    • event_buffer_fd_set — Change a buffered event file descriptor
    • event_buffer_free — Destroy buffered event
    • event_buffer_new — Create new buffered event
    • event_buffer_priority_set — Assign a priority to a buffered event
    • event_buffer_read — Read data from a buffered event
    • event_buffer_set_callback — Set or reset callbacks for a buffered event
    • event_buffer_timeout_set — Set read and write timeouts for a buffered event
    • event_buffer_watermark_set — Set the watermarks for read and write events
    • event_buffer_write — Write data to a buffered event
    • event_del — Remove an event from the set of monitored events
    • event_free — Free event resource
    • event_new — Create new event
    • event_priority_set — Assign a priority to an event.
    • event_set — Prepare an event
    • event_timer_add — 别名 event_add
    • event_timer_del — 别名 event_del
    • event_timer_new — 别名 event_new
    • event_timer_set — Prepare a timer event
expect_popen
简介
进程控制扩展


简介

Libevent is a library that provides a mechanism to execute a callback function when a specific event occurs on a file descriptor or after a timeout has been reached.

More information about Libevent can be found at » http://libevent.org/.

Libevent
安装／配置
Libevent


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Libevent


需求

This extension requires » libevent library. Minimal required version is 1.4.0.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/libevent.

需求
运行时配置
安装／配置


资源类型

There are several resource types used in the extension. These resources are event, event base and buffered event.

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

EV_TIMEOUT (integer)
EV_READ (integer)
EV_WRITE (integer)
EV_SIGNAL (integer)
EV_PERSIST (integer)
EVLOOP_NONBLOCK (integer)
EVLOOP_ONCE (integer)
资源类型
范例
Libevent


范例

Example #1 polling STDIN using basic API

<?php

function print_line($fd, $events, $arg)
{
    static $max_requests = 0;

    $max_requests++;

    if ($max_requests == 10) {
        // exit loop after 10 writes
        event_base_loopexit($arg[1]);
    }

    // print the line
    echo  fgets($fd);
}

// create base and event
$base = event_base_new();
$event = event_new();

$fd = STDIN;

// set event flags
event_set($event, $fd, EV_READ | EV_PERSIST, "print_line", array($event, $base));
// set event base
event_base_set($event, $base);

// enable event
event_add($event);
// start event loop
event_base_loop($base);

?>

Example #2 polling STDIN using buffered event API

<?php

function print_line($buf, $arg)
{
    static $max_requests;

    $max_requests++;

    if ($max_requests == 10) {
        event_base_loopexit($arg);
    }

    // print the line
    echo event_buffer_read($buf, 4096);
}

function error_func($buf, $what, $arg)
{
    // handle errors
}

$base = event_base_new();
$eb = event_buffer_new(STDIN, "print_line", NULL, "error_func", $base);

event_buffer_base_set($eb, $base);
event_buffer_enable($eb, EV_READ);

event_base_loop($base);

?>

预定义常量
Libevent 函数
Libevent


Libevent 函数

Table of Contents

  • event_add — Add an event to the set of monitored events
  • event_base_free — Destroy event base
  • event_base_loop — Handle events
  • event_base_loopbreak — Abort event loop
  • event_base_loopexit — Exit loop after a time
  • event_base_new — Create and initialize new event base
  • event_base_priority_init — Set the number of event priority levels
  • event_base_reinit — Reinitialize the event base after a fork
  • event_base_set — Associate event base with an event
  • event_buffer_base_set — Associate buffered event with an event base
  • event_buffer_disable — Disable a buffered event
  • event_buffer_enable — Enable a buffered event
  • event_buffer_fd_set — Change a buffered event file descriptor
  • event_buffer_free — Destroy buffered event
  • event_buffer_new — Create new buffered event
  • event_buffer_priority_set — Assign a priority to a buffered event
  • event_buffer_read — Read data from a buffered event
  • event_buffer_set_callback — Set or reset callbacks for a buffered event
  • event_buffer_timeout_set — Set read and write timeouts for a buffered event
  • event_buffer_watermark_set — Set the watermarks for read and write events
  • event_buffer_write — Write data to a buffered event
  • event_del — Remove an event from the set of monitored events
  • event_free — Free event resource
  • event_new — Create new event
  • event_priority_set — Assign a priority to an event.
  • event_set — Prepare an event
  • event_timer_add — 别名 event_add
  • event_timer_del — 别名 event_del
  • event_timer_new — 别名 event_new
  • event_timer_set — Prepare a timer event
范例
event_add
Libevent


Add an event to the set of monitored events

Libevent 函数
event_base_free
Libevent 函数
PHP Manual

event_add

(PECL libevent >= 0.0.1)

event_add — Add an event to the set of monitored events

说明

bool event_add ( resource $event [, int $timeout = -1 ] )

event_add() schedules the execution of the event when the event specified in event_set() occurs or in at least the time specified by the timeout argument. If timeout was not specified, not timeout is set. The event must be already initalized by event_set() and event_base_set() functions. If the event already has a timeout set, it is replaced by the new one.

参数

event

Valid event resource.

timeout

Optional timeout (in microseconds).

返回值

event_add() returns TRUE on success or FALSE on error.

Libevent 函数
event_base_free
Libevent 函数


Destroy event base

event_add
event_base_loop
Libevent 函数
PHP Manual

event_base_free

(PECL libevent >= 0.0.1)

event_base_free — Destroy event base

说明

void event_base_free ( resource $event_base )

Destroys the specified event_base and frees all the resources associated. Note that it's not possible to destroy an event base with events attached to it.

参数

event_base

Valid event base resource.

event_add
event_base_loop
Libevent 函数


Handle events

event_base_free
event_base_loopbreak
Libevent 函数
PHP Manual

event_base_loop

(PECL libevent >= 0.0.1)

event_base_loop — Handle events

说明

int event_base_loop ( resource $event_base [, int $flags = 0 ] )

Starts event loop for the specified event base.

参数

event_base

Valid event base resource.

flags

Optional parameter, which can take any combination of EVLOOP_ONCE and EVLOOP_NONBLOCK.

返回值

event_base_loop() returns 0 on success, -1 on error and 1 if no events were registered.

event_base_free
event_base_loopbreak
Libevent 函数


Abort event loop

event_base_loop
event_base_loopexit
Libevent 函数
PHP Manual

event_base_loopbreak

(PECL libevent >= 0.0.1)

event_base_loopbreak — Abort event loop

说明

bool event_base_loopbreak ( resource $event_base )

Abort the active event loop immediately. The behaviour is similar to break statement.

参数

event_base

Valid event base resource.

返回值

event_base_loopbreak() returns TRUE on success or FALSE on error.

event_base_loop
event_base_loopexit
Libevent 函数


Exit loop after a time

event_base_loopbreak
event_base_new
Libevent 函数
PHP Manual

event_base_loopexit

(PECL libevent >= 0.0.1)

event_base_loopexit — Exit loop after a time

说明

bool event_base_loopexit ( resource $event_base [, int $timeout = -1 ] )

The next event loop iteration after the given timer expires will complete normally, then exit without blocking for events again.

参数

event_base

Valid event base resource.

timeout

Optional timeout parameter (in microseconds).

返回值

event_base_loopexit() returns TRUE on success or FALSE on error.

event_base_loopbreak
event_base_new
Libevent 函数


Create and initialize new event base

event_base_loopexit
event_base_priority_init
Libevent 函数
PHP Manual

event_base_new

(PECL libevent >= 0.0.1)

event_base_new — Create and initialize new event base

说明

resource event_base_new ( void )

Returns new event base, which can be used later in event_base_set(), event_base_loop() and other functions.

参数

此函数没有参数。

返回值

event_base_new() returns valid event base resource on success or FALSE on error.

event_base_loopexit
event_base_priority_init
Libevent 函数


Set the number of event priority levels

event_base_new
event_base_reinit
Libevent 函数
PHP Manual

event_base_priority_init

(PECL libevent >= 0.0.2)

event_base_priority_init — Set the number of event priority levels

说明

bool event_base_priority_init ( resource $event_base , int $npriorities )

Sets the number of different event priority levels.

By default all events are scheduled with the same priority (npriorities/2). Using event_base_priority_init() you can change the number of event priority levels and then set a desired priority for each event.

参数

event_base

Valid event base resource.

npriorities

The number of event priority levels.

返回值

event_base_priority_init() returns TRUE on success or FALSE on error.

event_base_new
event_base_reinit
Libevent 函数


Reinitialize the event base after a fork

event_base_priority_init
event_base_set
Libevent 函数
PHP Manual

event_base_reinit

(PECL libevent >= 0.1.0)

event_base_reinit — Reinitialize the event base after a fork

说明

bool event_base_reinit ( resource $event_base )

Some event mechanisms do not survive across fork. The event_base needs to be reinitialized with this function.

参数

event_base

Valid event base resource that needs to be re-initialized.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

event_base_priority_init
event_base_set
Libevent 函数


Associate event base with an event

event_base_reinit
event_buffer_base_set
Libevent 函数
PHP Manual

event_base_set

(PECL libevent >= 0.0.1)

event_base_set — Associate event base with an event

说明

bool event_base_set ( resource $event , resource $event_base )

Associates the event_base with the event.

参数

event

Valid event resource.

event_base

Valid event base resource.

返回值

event_base_set() returns TRUE on success or FALSE on error.

event_base_reinit
event_buffer_base_set
Libevent 函数


Associate buffered event with an event base

event_base_set
event_buffer_disable
Libevent 函数
PHP Manual

event_buffer_base_set

(PECL libevent >= 0.0.1)

event_buffer_base_set — Associate buffered event with an event base

说明

bool event_buffer_base_set ( resource $bevent , resource $event_base )

Assign the specified bevent to the event_base.

参数

bevent

Valid buffered event resource.

event_base

Valid event base resource.

返回值

event_buffer_base_set() returns TRUE on success or FALSE on error.

event_base_set
event_buffer_disable
Libevent 函数


Disable a buffered event

event_buffer_base_set
event_buffer_enable
Libevent 函数
PHP Manual

event_buffer_disable

(PECL libevent >= 0.0.1)

event_buffer_disable — Disable a buffered event

说明

bool event_buffer_disable ( resource $bevent , int $events )

Disables the specified buffered event.

参数

bevent

Valid buffered event resource.

events

Any combination of EV_READ and EV_WRITE.

返回值

event_buffer_disable() returns TRUE on success or FALSE on error.

event_buffer_base_set
event_buffer_enable
Libevent 函数


Enable a buffered event

event_buffer_disable
event_buffer_fd_set
Libevent 函数
PHP Manual

event_buffer_enable

(PECL libevent >= 0.0.1)

event_buffer_enable — Enable a buffered event

说明

bool event_buffer_enable ( resource $bevent , int $events )

Enables the specified buffered event.

参数

bevent

Valid buffered event resource.

events

Any combination of EV_READ and EV_WRITE.

返回值

event_buffer_enable() returns TRUE on success or FALSE on error.

event_buffer_disable
event_buffer_fd_set
Libevent 函数


Change a buffered event file descriptor

event_buffer_enable
event_buffer_free
Libevent 函数
PHP Manual

event_buffer_fd_set

(PECL libevent >= 0.0.1)

event_buffer_fd_set — Change a buffered event file descriptor

说明

void event_buffer_fd_set ( resource $bevent , resource $fd )

Changes the file descriptor on which the buffered event operates.

参数

bevent

Valid buffered event resource.

fd

Valid PHP stream, must be castable to file descriptor.

event_buffer_enable
event_buffer_free
Libevent 函数


Destroy buffered event

event_buffer_fd_set
event_buffer_new
Libevent 函数
PHP Manual

event_buffer_free

(PECL libevent >= 0.0.1)

event_buffer_free — Destroy buffered event

说明

void event_buffer_free ( resource $bevent )

Destroys the specified buffered event and frees all the resources associated.

参数

bevent

Valid buffered event resource.

event_buffer_fd_set
event_buffer_new
Libevent 函数


Create new buffered event

event_buffer_free
event_buffer_priority_set
Libevent 函数
PHP Manual

event_buffer_new

(PECL libevent >= 0.0.1)

event_buffer_new — Create new buffered event

说明

resource event_buffer_new ( resource $stream , mixed $readcb , mixed $writecb , mixed $errorcb [, mixed $arg ] )

Libevent provides an abstraction layer on top of the regular event API. Using buffered event you don't need to deal with the I/O manually, instead it provides input and output buffers that get filled and drained automatically.

参数

stream

Valid PHP stream resource. Must be castable to file descriptor.

readcb

Callback to invoke where there is data to read, or NULL if no callback is desired.

writecb

Callback to invoke where the descriptor is ready for writing, or NULL if no callback is desired.

errorcb

Callback to invoke where there is an error on the descriptor, cannot be NULL.

arg

An argument that will be passed to each of the callbacks (optional).

返回值

event_buffer_new() returns new buffered event resource on success or FALSE on error.

event_buffer_free
event_buffer_priority_set
Libevent 函数


Assign a priority to a buffered event

event_buffer_new
event_buffer_read
Libevent 函数
PHP Manual

event_buffer_priority_set

(PECL libevent >= 0.0.1)

event_buffer_priority_set — Assign a priority to a buffered event

说明

bool event_buffer_priority_set ( resource $bevent , int $priority )

Assign a priority to the bevent.

参数

bevent

Valid buffered event resource.

priority

Priority level. Cannot be less than zero and cannot exceed maximum priority level of the event base (see event_base_priority_init()).

返回值

event_buffer_priority_set() returns TRUE on success or FALSE on error.

event_buffer_new
event_buffer_read
Libevent 函数


Read data from a buffered event

event_buffer_priority_set
event_buffer_set_callback
Libevent 函数
PHP Manual

event_buffer_read

(PECL libevent >= 0.0.1)

event_buffer_read — Read data from a buffered event

说明

string event_buffer_read ( resource $bevent , int $data_size )

Reads data from the input buffer of the buffered event.

参数

bevent

Valid buffered event resource.

data_size

Data size in bytes.

event_buffer_priority_set
event_buffer_set_callback
Libevent 函数


Set or reset callbacks for a buffered event

event_buffer_read
event_buffer_timeout_set
Libevent 函数
PHP Manual

event_buffer_set_callback

(PECL libevent >= 0.0.4)

event_buffer_set_callback — Set or reset callbacks for a buffered event

说明

bool event_buffer_set_callback ( resource $event , mixed $readcb , mixed $writecb , mixed $errorcb [, mixed $arg ] )

Sets or changes existing callbacks for the buffered event.

参数

event

Valid buffered event resource.

readcb

Callback to invoke where there is data to read, or NULL if no callback is desired.

writecb

Callback to invoke where the descriptor is ready for writing, or NULL if no callback is desired.

errorcb

Callback to invoke where there is an error on the descriptor, cannot be NULL.

arg

An argument that will be passed to each of the callbacks (optional).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

event_buffer_read
event_buffer_timeout_set
Libevent 函数


Set read and write timeouts for a buffered event

event_buffer_set_callback
event_buffer_watermark_set
Libevent 函数
PHP Manual

event_buffer_timeout_set

(PECL libevent >= 0.0.1)

event_buffer_timeout_set — Set read and write timeouts for a buffered event

说明

void event_buffer_timeout_set ( resource $bevent , int $read_timeout , int $write_timeout )

Sets the read and write timeouts for the specified buffered event.

参数

bevent

Valid buffered event resource.

read_timeout

Read timeout (in seconds).

write_timeout

Write timeout (in seconds).

event_buffer_set_callback
event_buffer_watermark_set
Libevent 函数


Set the watermarks for read and write events

event_buffer_timeout_set
event_buffer_write
Libevent 函数
PHP Manual

event_buffer_watermark_set

(PECL libevent >= 0.0.1)

event_buffer_watermark_set — Set the watermarks for read and write events

说明

void event_buffer_watermark_set ( resource $bevent , int $events , int $lowmark , int $highmark )

Sets the watermarks for read and write events. Libevent does not invoke read callback unless there is at least lowmark bytes in the input buffer; if the read buffer is beyond the highmark, reading is stopped. On output, the write callback is invoked whenever the buffered data falls below the lowmark.

参数

bevent

Valid buffered event resource.

events

Any combination of EV_READ and EV_WRITE.

lowmark

Low watermark.

highmark

High watermark.

event_buffer_timeout_set
event_buffer_write
Libevent 函数


Write data to a buffered event

event_buffer_watermark_set
event_del
Libevent 函数
PHP Manual

event_buffer_write

(PECL libevent >= 0.0.1)

event_buffer_write — Write data to a buffered event

说明

bool event_buffer_write ( resource $bevent , string $data [, int $data_size = -1 ] )

Writes data to the specified buffered event. The data is appended to the output buffer and written to the descriptor when it becomes available for writing.

参数

bevent

Valid buffered event resource.

data

The data to be written.

data_size

Optional size parameter. event_buffer_write() writes all the data by default.

返回值

event_buffer_write() returns TRUE on success or FALSE on error.

event_buffer_watermark_set
event_del
Libevent 函数


Remove an event from the set of monitored events

event_buffer_write
event_free
Libevent 函数
PHP Manual

event_del

(PECL libevent >= 0.0.1)

event_del — Remove an event from the set of monitored events

说明

bool event_del ( resource $event )

Cancels the event.

参数

event

Valid event resource.

返回值

event_del() returns TRUE on success or FALSE on error.

event_buffer_write
event_free
Libevent 函数


Free event resource

event_del
event_new
Libevent 函数
PHP Manual

event_free

(PECL libevent >= 0.0.1)

event_free — Free event resource

说明

void event_free ( resource $event )

Frees previously created event resource.

参数

event

Valid event resource.

event_del
event_new
Libevent 函数


Create new event

event_free
event_priority_set
Libevent 函数
PHP Manual

event_new

(PECL libevent >= 0.0.1)

event_new — Create new event

说明

resource event_new ( void )

Creates and returns a new event resource.

返回值

event_new() returns a new event resource on success or FALSE on error.

event_free
event_priority_set
Libevent 函数


Assign a priority to an event.

event_new
event_set
Libevent 函数
PHP Manual

event_priority_set

(PECL libevent >= 0.0.5)

event_priority_set — Assign a priority to an event.

说明

bool event_priority_set ( resource $event , int $priority )

Assign a priority to the event.

参数

event

Valid event resource.

priority

Priority level. Cannot be less than zero and cannot exceed maximum priority level of the event base (see event_base_priority_init()).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

event_new
event_set
Libevent 函数


Prepare an event

event_priority_set
event_timer_add
Libevent 函数
PHP Manual

event_set

(PECL libevent >= 0.0.1)

event_set — Prepare an event

说明

bool event_set ( resource $event , mixed $fd , int $events , mixed $callback [, mixed $arg ] )

Prepares the event to be used in event_add(). The event is prepared to call the function specified by the callback on the events specified in parameter events, which is a set of the following flags: EV_TIMEOUT, EV_SIGNAL, EV_READ, EV_WRITE and EV_PERSIST.

If EV_SIGNAL bit is set in parameter events, the fd is interpreted as signal number.

After initializing the event, use event_base_set() to associate the event with its event base.

In case of matching event, these three arguments are passed to the callback function:

fd

Signal number or resource indicating the stream.

events

A flag indicating the event. Consists of the following flags: EV_TIMEOUT, EV_SIGNAL, EV_READ, EV_WRITE and EV_PERSIST.

arg

Optional parameter, previously passed to event_set() as arg.

参数

event

Valid event resource.

fd

Valid PHP stream resource. The stream must be castable to file descriptor, so you most likely won't be able to use any of filtered streams.

events

A set of flags indicating the desired event, can be EV_READ and/or EV_WRITE. The additional flag EV_PERSIST makes the event to persist until event_del() is called, otherwise the callback is invoked only once.

callback

Callback function to be called when the matching event occurs.

arg

Optional callback parameter.

返回值

event_set() returns TRUE on success or FALSE on error.

更新日志

版本 | 说明
0.0.4 | EV_SIGNAL support was added.
event_priority_set
event_timer_add
Libevent 函数


别名 event_add

event_set
event_timer_del
Libevent 函数
PHP Manual

event_timer_add

(PECL libevent >= 0.0.2)

event_timer_add — 别名 event_add()

说明

此函数是该函数的别名： event_add().

event_set
event_timer_del
Libevent 函数


别名 event_del

event_timer_add
event_timer_new
Libevent 函数
PHP Manual

event_timer_del

(PECL libevent >= 0.0.2)

event_timer_del — 别名 event_del()

说明

此函数是该函数的别名： event_del().

event_timer_add
event_timer_new
Libevent 函数


别名 event_new

event_timer_del
event_timer_set
Libevent 函数
PHP Manual

event_timer_new

(PECL libevent >= 0.0.2)

event_timer_new — 别名 event_new()

说明

此函数是该函数的别名： event_new().

event_timer_del
event_timer_set
Libevent 函数


Prepare a timer event

event_timer_new
PCNTL
Libevent 函数
PHP Manual

event_timer_set

(PECL libevent >= 0.0.2)

event_timer_set — Prepare a timer event

说明

bool event_timer_set ( resource $event , callable $callback [, mixed $arg ] )

Prepares the timer event to be used in event_add(). The event is prepared to call the function specified by the callback when the event timeout elapses.

After initializing the event, use event_base_set() to associate the event with its event base.

In case of matching event, these three arguments are passed to the callback function:

fd

Signal number or resource indicating the stream.

events

A flag indicating the event. This will always be EV_TIMEOUT for timer events.

arg

Optional parameter, previously passed to event_timer_set() as arg.

参数

event

Valid event resource.

callback

Callback function to be called when the matching event occurs.

arg

Optional callback parameter.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

event_timer_new
PCNTL
Libevent 函数


进程控制

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • PCNTL 函数
    • pcntl_alarm — 为进程设置一个alarm闹钟信号
    • pcntl_errno — 别名 pcntl_get_last_error
    • pcntl_exec — 在当前进程空间执行指定程序
    • pcntl_fork — 在当前进程当前位置产生分支（子进程）。译注：fork是创建了一个子进程，父进程和子进程 都从fork的位置开始向下继续执行，不同的是父进程执行过程中，得到的fork返回值为子进程 号，而子进程得到的是0。
    • pcntl_get_last_error — Retrieve the error number set by the last pcntl function which failed
    • pcntl_getpriority — 获取任意进程的优先级
    • pcntl_setpriority — 修改任意进程的优先级
    • pcntl_signal_dispatch — 调用等待信号的处理器
    • pcntl_signal_get_handler — Get the current handler for specified signal
    • pcntl_signal — 安装一个信号处理器
    • pcntl_sigprocmask — 设置或检索阻塞信号
    • pcntl_sigtimedwait — 带超时机制的信号等待
    • pcntl_sigwaitinfo — 等待信号
    • pcntl_strerror — Retrieve the system error message associated with the given errno
    • pcntl_wait — 等待或返回fork的子进程状态
    • pcntl_waitpid — 等待或返回fork的子进程状态
    • pcntl_wexitstatus — 返回一个中断的子进程的返回代码
    • pcntl_wifexited — 检查状态代码是否代表一个正常的退出。
    • pcntl_wifsignaled — 检查子进程状态码是否代表由于某个信号而中断
    • pcntl_wifstopped — 检查子进程当前是否已经停止
    • pcntl_wstopsig — 返回导致子进程停止的信号
    • pcntl_wtermsig — 返回导致子进程中断的信号
event_timer_set
简介
进程控制扩展


简介

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()新的全局语法 使其在整个脚本范围有效。

Note: 此扩展在 Windows 平台上不可用。

PCNTL
安装／配置
PCNTL


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
PCNTL


安装

在PHP中进程控制支持默认是关闭的。您需要使用 --enable-pcntl 配置选项重新编译PHP的 CGI或CLI版本以打开进程控制支持。

Note:

当前，这个模块没有非Unix平台可用的函数（即非Unix类系统不支持此模块）。

需求
运行时配置
安装／配置


预定义常量

下面列出的信号列表用于支持进程控制函数。关于这些信号默认行为的更详细信息请查看您系统的 signal（7）手册

WNOHANG (integer)
WUNTRACED (integer)
SIG_IGN (integer)
SIG_DFL (integer)
SIG_ERR (integer)
SIGHUP (integer)
SIGINT (integer)
SIGQUIT (integer)
SIGILL (integer)
SIGTRAP (integer)
SIGABRT (integer)
SIGIOT (integer)
SIGBUS (integer)
SIGFPE (integer)
SIGKILL (integer)
SIGUSR1 (integer)
SIGSEGV (integer)
SIGUSR2 (integer)
SIGPIPE (integer)
SIGALRM (integer)
SIGTERM (integer)
SIGSTKFLT (integer)
SIGCLD (integer)
SIGCHLD (integer)
SIGCONT (integer)
SIGSTOP (integer)
SIGTSTP (integer)
SIGTTIN (integer)
SIGTTOU (integer)
SIGURG (integer)
SIGXCPU (integer)
SIGXFSZ (integer)
SIGVTALRM (integer)
SIGPROF (integer)
SIGWINCH (integer)
SIGPOLL (integer)
SIGIO (integer)
SIGPWR (integer)
SIGSYS (integer)
SIGBABY (integer)
SIG_BLOCK (integer)
PHP 5.3.0之后版本可用。
SIG_UNBLOCK (integer)
PHP 5.3.0之后版本可用。
SIG_SETMASK (integer)
PHP 5.3.0之后版本可用。
SI_USER (integer)
PHP 5.3.0之后版本可用。
SI_NOINFO (integer)
PHP 5.3.0之后版本可用。
SI_KERNEL (integer)
PHP 5.3.0之后版本可用。
SI_QUEUE (integer)
PHP 5.3.0之后版本可用。
SI_TIMER (integer)
PHP 5.3.0之后版本可用。
SI_MSGGQ (integer)
PHP 5.3.0之后版本可用。
SI_ASYNCIO (integer)
PHP 5.3.0之后版本可用。
SI_SIGIO (integer)
PHP 5.3.0之后版本可用。
SI_TKILL (integer)
PHP 5.3.0之后版本可用。
CLD_EXITED (integer)
PHP 5.3.0之后版本可用。
CLD_KILLED (integer)
PHP 5.3.0之后版本可用。
CLD_DUMPED (integer)
PHP 5.3.0之后版本可用。
CLD_TRAPPED (integer)
PHP 5.3.0之后版本可用。
CLD_STOPPED (integer)
PHP 5.3.0之后版本可用。
CLD_CONTINUED (integer)
PHP 5.3.0之后版本可用。
TRAP_BRKPT (integer)
PHP 5.3.0之后版本可用。
TRAP_TRACE (integer)
PHP 5.3.0之后版本可用。
POLL_IN (integer)
PHP 5.3.0之后版本可用。
POLL_OUT (integer)
PHP 5.3.0之后版本可用。
POLL_MSG (integer)
PHP 5.3.0之后版本可用。
POLL_ERR (integer)
PHP 5.3.0之后版本可用。
POLL_PRI (integer)
PHP 5.3.0之后版本可用。
POLL_HUP (integer)
PHP 5.3.0之后版本可用。
ILL_ILLOPC (integer)
PHP 5.3.0之后版本可用。
ILL_ILLOPN (integer)
PHP 5.3.0之后版本可用。
ILL_ILLADR (integer)
PHP 5.3.0之后版本可用。
ILL_ILLTRP (integer)
PHP 5.3.0之后版本可用。
ILL_PRVOPC (integer)
PHP 5.3.0之后版本可用。
ILL_PRVREG (integer)
PHP 5.3.0之后版本可用。
ILL_COPROC (integer)
PHP 5.3.0之后版本可用。
ILL_BADSTK (integer)
PHP 5.3.0之后版本可用。
FPE_INTDIV (integer)
PHP 5.3.0之后版本可用。
FPE_INTOVF (integer)
PHP 5.3.0之后版本可用。
FPE_FLTDIV (integer)
PHP 5.3.0之后版本可用。
FPE_FLTOVF (integer)
PHP 5.3.0之后版本可用。
FPE_FLTUND (integer)
PHP 5.3.0之后版本可用。
FPE_FLTRES (integer)
PHP 5.3.0之后版本可用。
FPE_FLTINV (integer)
PHP 5.3.0之后版本可用。
FPE_FLTSUB (integer)
PHP 5.3.0之后版本可用。
SEGV_MAPERR (integer)
PHP 5.3.0之后版本可用。
SEGV_ACCERR (integer)
PHP 5.3.0之后版本可用。
BUS_ADRALN (integer)
PHP 5.3.0之后版本可用。
BUS_ADRERR (integer)
PHP 5.3.0之后版本可用。
BUS_OBJERR (integer)
PHP 5.3.0之后版本可用。
资源类型
范例
PCNTL


范例

Table of Contents

预定义常量
PCNTL


范例
PCNTL 函数
范例
PHP Manual

这个示例用于产生一个守护进程并可以通过信号处理进行关闭。

Example #1 进程控制示例

<?php
//定义ticks
declare(ticks=1);

//产生子进程分支
$pid = pcntl_fork();
if ($pid == -1) {
     die("could not fork"); //pcntl_fork返回-1标明创建子进程失败
} else if ($pid) {
     exit(); //父进程中pcntl_fork返回创建的子进程进程号
} else {
     // 子进程pcntl_fork返回的时0
}

// 从当前终端分离
if (posix_setsid() == -1) {
    die("could not detach from terminal");
}

// 安装信号处理器
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP, "sig_handler");

// 执行无限循环任务
while (1) {

    // do something interesting here

}

function sig_handler($signo)
{

     switch ($signo) {
         case SIGTERM:
             // 处理中断信号
             exit;
             break;
         case SIGHUP:
             // 处理重启信号
             break;
         default:
             // 处理所有其他信号
     }

}

?>
范例
PCNTL 函数
范例


PCNTL 函数

参见

参考一下 POSIX functions 对有助于理解使用。

Table of Contents

  • pcntl_alarm — 为进程设置一个alarm闹钟信号
  • pcntl_errno — 别名 pcntl_get_last_error
  • pcntl_exec — 在当前进程空间执行指定程序
  • pcntl_fork — 在当前进程当前位置产生分支（子进程）。译注：fork是创建了一个子进程，父进程和子进程 都从fork的位置开始向下继续执行，不同的是父进程执行过程中，得到的fork返回值为子进程 号，而子进程得到的是0。
  • pcntl_get_last_error — Retrieve the error number set by the last pcntl function which failed
  • pcntl_getpriority — 获取任意进程的优先级
  • pcntl_setpriority — 修改任意进程的优先级
  • pcntl_signal_dispatch — 调用等待信号的处理器
  • pcntl_signal_get_handler — Get the current handler for specified signal
  • pcntl_signal — 安装一个信号处理器
  • pcntl_sigprocmask — 设置或检索阻塞信号
  • pcntl_sigtimedwait — 带超时机制的信号等待
  • pcntl_sigwaitinfo — 等待信号
  • pcntl_strerror — Retrieve the system error message associated with the given errno
  • pcntl_wait — 等待或返回fork的子进程状态
  • pcntl_waitpid — 等待或返回fork的子进程状态
  • pcntl_wexitstatus — 返回一个中断的子进程的返回代码
  • pcntl_wifexited — 检查状态代码是否代表一个正常的退出。
  • pcntl_wifsignaled — 检查子进程状态码是否代表由于某个信号而中断
  • pcntl_wifstopped — 检查子进程当前是否已经停止
  • pcntl_wstopsig — 返回导致子进程停止的信号
  • pcntl_wtermsig — 返回导致子进程中断的信号
pcntl_alarm
PCNTL


为进程设置一个alarm闹钟信号

PCNTL 函数
pcntl_errno
PCNTL 函数
PHP Manual

pcntl_alarm

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

pcntl_alarm — 为进程设置一个alarm闹钟信号

说明

int pcntl_alarm ( int $seconds )

创建一个计时器，在指定的秒数后向进程发送一个SIGALRM信号。每次对 pcntl_alarm()的调用都会取消之前设置的alarm信号。

参数

seconds

等待的秒数。如果seconds设置为0,将不会创建alarm信号。

返回值

返回上次alarm调度（离alarm信号发送）剩余的秒数，或者之前没有alarm调度（译注：或者之前调度已完成） 时返回0。

PCNTL 函数
pcntl_errno
PCNTL 函数


别名 pcntl_get_last_error

pcntl_alarm
pcntl_exec
PCNTL 函数
PHP Manual

pcntl_errno

(PHP 5 >= 5.3.4, PHP 7)

pcntl_errno — 别名 pcntl_get_last_error()

说明

此函数是该函数的别名： pcntl_get_last_error()

pcntl_alarm
pcntl_exec
PCNTL 函数


在当前进程空间执行指定程序

pcntl_errno
pcntl_fork
PCNTL 函数
PHP Manual

pcntl_exec

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

pcntl_exec — 在当前进程空间执行指定程序

说明

void pcntl_exec ( string $path [, array $args [, array $envs ]] )

以给定参数执行程序。

参数

path

path必须时可执行二进制文件路径或一个在文件第一行指定了 一个可执行文件路径标头的脚本（比如文件第一行是#!/usr/local/bin/perl的perl脚本）。 更多的信息请查看您系统的execve（2）手册。

args

args是一个要传递给程序的参数的字符串数组。

envs

envs是一个要传递给程序作为环境变量的字符串数组。这个数组是 key => value格式的，key代表要传递的环境变量的名称，value代表该环境变量值。

返回值

当发生错误时返回 FALSE ，没有错误时没有返回。

pcntl_errno
pcntl_fork
PCNTL 函数


在当前进程当前位置产生分支（子进程）。译注：fork是创建了一个子进程，父进程和子进程 都从fork的位置开始向下继续执行，不同的是父进程执行过程中，得到的fork返回值为子进程 号，而子进程得到的是0。

pcntl_exec
pcntl_get_last_error
PCNTL 函数
PHP Manual

pcntl_fork

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

pcntl_fork — 在当前进程当前位置产生分支（子进程）。译注：fork是创建了一个子进程，父进程和子进程 都从fork的位置开始向下继续执行，不同的是父进程执行过程中，得到的fork返回值为子进程 号，而子进程得到的是0。

说明

int pcntl_fork ( void )

pcntl_fork()函数创建一个子进程，这个子进程仅PID（进程号） 和PPID（父进程号）与其父进程不同。fork怎样在您的系统工作的详细信息请查阅您的系统 的fork（2）手册。

返回值

成功时，在父进程执行线程内返回产生的子进程的PID，在子进程执行线程内返回0。失败时，在 父进程上下文返回-1，不会创建子进程，并且会引发一个PHP错误。

范例

Example #1 pcntl_fork() 示例

<?php

$pid = pcntl_fork();
//父进程和子进程都会执行下面代码
if ($pid == -1) {
    //错误处理：创建子进程失败时返回-1.
     die('could not fork');
} else if ($pid) {
     //父进程会得到子进程号，所以这里是父进程执行的逻辑
     pcntl_wait($status); //等待子进程中断，防止子进程成为僵尸进程。
} else {
     //子进程得到的$pid为0, 所以这里是子进程执行的逻辑。
}

?>

参见

  • pcntl_waitpid() - 等待或返回fork的子进程状态
  • pcntl_signal() - 安装一个信号处理器

pcntl_exec
pcntl_get_last_error
PCNTL 函数


Retrieve the error number set by the last pcntl function which failed

pcntl_fork
pcntl_getpriority
PCNTL 函数
PHP Manual

pcntl_get_last_error

(PHP 5 >= 5.3.4, PHP 7)

pcntl_get_last_error — Retrieve the error number set by the last pcntl function which failed

说明

int pcntl_get_last_error ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Returns error code.

参见

  • pcntl_strerror() - Retrieve the system error message associated with the given errno
pcntl_fork
pcntl_getpriority
PCNTL 函数


获取任意进程的优先级

pcntl_get_last_error
pcntl_setpriority
PCNTL 函数
PHP Manual

pcntl_getpriority

(PHP 5, PHP 7)

pcntl_getpriority — 获取任意进程的优先级

说明

int pcntl_getpriority ([ int $pid = getmypid() [, int $process_identifier = PRIO_PROCESS ]] )

pcntl_getpriority() 获取进程号为 pid的进程的优先级。由于不同的系统类型以及内核版本下 优先级可能不同，因此请参考您系统的getpriority（2）手册以获取详细的规范。

参数

pid

如果没有指定，默认是当前进程的进程号。

process_identifier

PRIO_PGRP（译注：获取进程组优先级）, PRIO_USER （译注：获取用户进程优先级）或 PRIO_PROCESS（译注：默认值;获取进程优先级）三者之一。

返回值

pcntl_getpriority() 返回进程的优先级或在错误时返回 FALSE 。 值越小代表优先级越高。

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

参见

  • pcntl_setpriority() - 修改任意进程的优先级

pcntl_get_last_error
pcntl_setpriority
PCNTL 函数


修改任意进程的优先级

pcntl_getpriority
pcntl_signal_dispatch
PCNTL 函数
PHP Manual

pcntl_setpriority

(PHP 5, PHP 7)

pcntl_setpriority — 修改任意进程的优先级

说明

bool pcntl_setpriority ( int $priority [, int $pid = getmypid() [, int $process_identifier = PRIO_PROCESS ]] )

pcntl_setpriority() 设置进程号为 pid的进程的优先级。

参数

priority

priority 通常时-20至20这个范围内的值。默认优先级是0,值越小代表 优先级越高。由于不同的系统类型以及内核版本下优先级可能不同，因此请参考您系统的setpriority（2） 手册以获取详细的规范。

pid

如果没有指定，默认是当前进程的进程号。

process_identifier

PRIO_PGRP（译注：获取进程组优先级）, PRIO_USER （译注：获取用户进程优先级）或 PRIO_PROCESS（译注：默认值;获取进程优先级）三者之一。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • pcntl_getpriority() - 获取任意进程的优先级

pcntl_getpriority
pcntl_signal_dispatch
PCNTL 函数


调用等待信号的处理器

pcntl_setpriority
pcntl_signal_get_handler
PCNTL 函数
PHP Manual

pcntl_signal_dispatch

(PHP 5 >= 5.3.0, PHP 7)

pcntl_signal_dispatch — 调用等待信号的处理器

说明

bool pcntl_signal_dispatch ( void )

函数pcntl_signal_dispatch()调用每个等待信号通过pcntl_signal() 安装的处理器。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 pcntl_signal_dispatch() 示例

<?php
echo "安装信号处理器...\n";
pcntl_signal(SIGHUP,  function($signo) {
     echo "信号处理器被调用\n";
});

echo "为自己生成SIGHUP信号...\n";
posix_kill(posix_getpid(), SIGHUP);

echo "分发...\n";
pcntl_signal_dispatch();

echo "完成\n";

?>

以上例程的输出类似于：

安装信号处理器...
为自己生成SIGHUP信号...
分发...
信号处理器被调用
完成

参见

  • pcntl_signal() - 安装一个信号处理器
  • pcntl_sigprocmask() - 设置或检索阻塞信号
  • pcntl_sigwaitinfo() - 等待信号
  • pcntl_sigtimedwait() - 带超时机制的信号等待

pcntl_setpriority
pcntl_signal_get_handler
PCNTL 函数


Get the current handler for specified signal

pcntl_signal_dispatch
pcntl_signal
PCNTL 函数
PHP Manual

pcntl_signal_get_handler

(PHP 7.1)

pcntl_signal_get_handler — Get the current handler for specified signal

说明

int|string pcntl_signal_get_handler ( int $signo )

The pcntl_signal_get_handler() function will get the current handler for the specified signo.

参数

signo

The signal number.

返回值

This function may return an integer value that refers to SIG_DFL or SIG_IGN. If you set a custom handler a string value containing the function name is returned.

更新日志

版本 | 说明
Enter the version of change here | Describe the change

范例

Example #1 pcntl_signal_get_handler() example

<?php
var_dump(pcntl_signal_get_handler(SIGUSR1)); // Outputs: int(0)

function pcntl_test($signo) {}
pcntl_signal(SIGUSR1, 'pcntl_test');
var_dump(pcntl_signal_get_handler(SIGUSR1)); // Outputs: string(10) "pcntl_test"

pcntl_signal(SIGUSR1, SIG_DFL);
var_dump(pcntl_signal_get_handler(SIGUSR1)); // Outputs: int(0)

pcntl_signal(SIGUSR1, SIG_IGN);
var_dump(pcntl_signal_get_handler(SIGUSR1)); // Outputs: int(1)
?>

参见

  • pcntl_signal() - 安装一个信号处理器
pcntl_signal_dispatch
pcntl_signal
PCNTL 函数


安装一个信号处理器

pcntl_signal_get_handler
pcntl_sigprocmask
PCNTL 函数
PHP Manual

pcntl_signal

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

pcntl_signal — 安装一个信号处理器

说明

bool pcntl_signal ( int $signo , callback $handler [, bool $restart_syscalls = true ] )

函数pcntl_signal()为signo指定的信号安装一个新 的信号处理器。

参数

signo

信号编号。

handler

信号处理器可以是用户创建的函数或方法的名字，也可以是系统常量 SIG_IGN（译注：忽略信号处理程序）或SIG_DFL（默认信号处理程序）.

Note:

注意当你使用一个对象方法的时候，该对象的引用计数回增加使得它在你改变为其他处理或脚本结束之前是持久存在的。

restart_syscalls

指定当信号到达时系统调用重启是否可用。（译注：经查资料，此参数意为系统调用被信号打断时，系统调用是否从 开始处重新开始，但根据http://bugs.php.net/bug.php?id=52121，此参数存在bug无效。）

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
4.3.0 | 增加参数restart_syscalls。
4.3.0 | 对象方法可以作为回调被使用。
4.3.0 | PCNTL现在使用了ticks作为信号处理的回调机制，ticks在速度上远远超过了之前的处理机制。 这个变化与"用户ticks"遵循了相同的语义。您可以使用declare() 语句在程序中指定允许发生回调的位置。这使得我们对异步事件处理的开销最小化。在编译PHP时 启用pcntl将始终承担这种开销，不论您的脚本中是否真正使用了pcntl。 PHP 4.3.0使用ticks作为信号处理回调机制，这比以前的机制快了很多。这个变化与 "用户ticks" 遵循了相同的语义。您可以使用declare() 语句在程序中指定允许发生回调的位置。

范例

Example #1 pcntl_signal()示例

<?php
//使用ticks需要PHP 4.3.0以上版本
declare(ticks = 1);

//信号处理函数
function sig_handler($signo)
{

     switch ($signo) {
         case SIGTERM:
             // 处理SIGTERM信号
             exit;
             break;
         case SIGHUP:
             //处理SIGHUP信号
             break;
         case SIGUSR1:
             echo "Caught SIGUSR1...\n";
             break;
         default:
             // 处理所有其他信号
     }

}

echo "Installing signal handler...\n";

//安装信号处理器
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP,  "sig_handler");
pcntl_signal(SIGUSR1, "sig_handler");

// 或者在PHP 4.3.0以上版本可以使用对象方法
// pcntl_signal(SIGUSR1, array($obj, "do_something");

echo "Generating signal SIGTERM to self...\n";

//向当前进程发送SIGUSR1信号
posix_kill(posix_getpid(), SIGUSR1);

echo "Done\n"

?>

参见

  • pcntl_fork() - 在当前进程当前位置产生分支（子进程）。译注：fork是创建了一个子进程，父进程和子进程 都从fork的位置开始向下继续执行，不同的是父进程执行过程中，得到的fork返回值为子进程 号，而子进程得到的是0。
  • pcntl_waitpid() - 等待或返回fork的子进程状态

pcntl_signal_get_handler
pcntl_sigprocmask
PCNTL 函数


设置或检索阻塞信号

pcntl_signal
pcntl_sigtimedwait
PCNTL 函数
PHP Manual

pcntl_sigprocmask

(PHP 5 >= 5.3.0, PHP 7)

pcntl_sigprocmask — 设置或检索阻塞信号

说明

bool pcntl_sigprocmask ( int $how , array $set [, array &$oldset ] )

函数pcntl_sigprocmask()用来增加，删除或设置阻塞信号，具体行为 依赖于参数how。

参数

how

设置pcntl_sigprocmask()函数的行为。 可选值:

  • SIG_BLOCK: 把信号加入到当前阻塞信号中。
  • SIG_UNBLOCK: 从当前阻塞信号中移出信号。
  • SIG_SETMASK: 用给定的信号列表替换当前阻塞信号列表。

set

信号列表。

oldset

oldset是一个输出参数，用来返回之前的阻塞信号列表数组。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 pcntl_sigprocmask() 示例

<?php
//将SIGHUP信号加入到阻塞信号中
pcntl_sigprocmask(SIG_BLOCK, array(SIGHUP));
$oldset = array();
//将SIGHUP从阻塞信号列表中移除并返回之前的阻塞信号列表。
pcntl_sigprocmask(SIG_UNBLOCK, array(SIGHUP), $oldset);
?>

参见

  • pcntl_sigwaitinfo() - 等待信号
  • pcntl_sigtimedwait() - 带超时机制的信号等待

pcntl_signal
pcntl_sigtimedwait
PCNTL 函数


带超时机制的信号等待

pcntl_sigprocmask
pcntl_sigwaitinfo
PCNTL 函数
PHP Manual

pcntl_sigtimedwait

(PHP 5 >= 5.3.0, PHP 7)

pcntl_sigtimedwait — 带超时机制的信号等待

说明

int pcntl_sigtimedwait ( array $set [, array &$siginfo [, int $seconds = 0 [, int $nanoseconds = 0 ]]] )

函数pcntl_sigtimedwait()实际上与pcntl_sigwaitinfo() 的行为一致，不同在于它多了两个增强参数seconds和 nanoseconds，这使得脚本等待的事件有了一个时间的上限。

参数

set

要等待的信号列表数组。

siginfo

siginfo是一个输出参数，用来返回信号的信息。更详细情况参见 pcntl_sigwaitinfo()。

seconds

超时秒数。

nanoseconds

超时纳秒数。

返回值

成功时，函数pcntl_sigtimedwait()返回信号编号。

参见

  • pcntl_sigprocmask() - 设置或检索阻塞信号
  • pcntl_sigwaitinfo() - 等待信号

pcntl_sigprocmask
pcntl_sigwaitinfo
PCNTL 函数


等待信号

pcntl_sigtimedwait
pcntl_strerror
PCNTL 函数
PHP Manual

pcntl_sigwaitinfo

(PHP 5 >= 5.3.0, PHP 7)

pcntl_sigwaitinfo — 等待信号

说明

int pcntl_sigwaitinfo ( array $set [, array &$siginfo ] )

pcntl_sigwaitinfo()函数暂停调用脚本的执行直到接收到set 参数中列出的某个信号。只要其中的一个信号已经在等待状态(比如： 通过 pcntl_sigprocmask()函数阻塞)， 函数pcntl_sigwaitinfo()就回立刻返回。

参数

set

要等待的信号数组。

siginfo

siginfo是一个输出参数，用来返回信号的信息。

以下元素会为所有信号设置：

  • signo: 信号编号
  • errno: 错误编号
  • code: 信号代码

下面元素可能会为SIGCHLD信号设置:

  • status: 退出的值或信号
  • utime: 用户消耗的时间
  • stime: 系统（内核）消耗的时间
  • pid: 发送进程ID
  • uid: 发送进程的实际用户ID

信号SIGILL, SIGFPE, SIGSEGV 和 SIGBUS 可能会被设置的元素:

  • addr: 发生故障的内存位置

可能会为SIGPOLL 信号设置的元素：

  • band: Band event
  • fd: 文件描述符

返回值

成功时，函数pcntl_sigwaitinfo()返回一个信号编号。

范例

Example #1 pcntl_sigwaitinfo() example

<?php
echo "Blocking SIGHUP signal\n";
pcntl_sigprocmask(SIG_BLOCK, array(SIGHUP));

echo "Sending SIGHUP to self\n";
posix_kill(posix_getpid(), SIGHUP);

echo "Waiting for signals\n";
$info = array();
pcntl_sigwaitinfo(array(SIGHUP), $info);
?>

参见

  • pcntl_sigprocmask() - 设置或检索阻塞信号
  • pcntl_sigtimedwait() - 带超时机制的信号等待

pcntl_sigtimedwait
pcntl_strerror
PCNTL 函数


Retrieve the system error message associated with the given errno

pcntl_sigwaitinfo
pcntl_wait
PCNTL 函数
PHP Manual

pcntl_strerror

(PHP 5 >= 5.3.4, PHP 7)

pcntl_strerror — Retrieve the system error message associated with the given errno

说明

string pcntl_strerror ( int $errno )

Warning

本函数还未编写文档，仅有参数列表。

参数

errno

返回值

Returns error description on success 或者在失败时返回 FALSE.

参见

  • pcntl_get_last_error() - Retrieve the error number set by the last pcntl function which failed
pcntl_sigwaitinfo
pcntl_wait
PCNTL 函数


等待或返回fork的子进程状态

pcntl_strerror
pcntl_waitpid
PCNTL 函数
PHP Manual

pcntl_wait

(PHP 5, PHP 7)

pcntl_wait — 等待或返回fork的子进程状态

说明

int pcntl_wait ( int &$status [, int $options = 0 ] )

wait函数刮起当前进程的执行直到一个子进程退出或接收到一个信号要求中断当前进程或调用一个信号处理函数。 如果一个子进程在调用此函数时已经退出（俗称僵尸进程），此函数立刻返回。子进程使用的所有系统资源将 被释放。关于wait在您系统上工作的详细规范请查看您系统的wait（2）手册。

Note:

这个函数等同于以-1作为参数pid 的值并且没有options参数来调用pcntl_waitpid() 函数。

参数

status

pcntl_wait()将会存储状态信息到status
参数上，这个通过status参数返回的状态信息可以用以下函数
pcntl_wifexited(),
pcntl_wifstopped(),
pcntl_wifsignaled(),
pcntl_wexitstatus(),
pcntl_wtermsig()以及
pcntl_wstopsig()获取其具体的值。

options

如果您的操作系统（多数BSD类系统）允许使用wait3，您可以提供可选的options 参数。如果这个参数没有提供，wait将会被用作系统调用。如果wait3不可用，提供参数 options不会有任何效果。options的值可以是0 或者以下两个常量或两个常量"或运算"结果（即两个常量代表意义都有效）。

options可用值
WNOHANG | 如果没有子进程退出立刻返回。
WUNTRACED | 子进程已经退出并且其状态未报告时返回。

返回值

pcntl_wait()返回退出的子进程进程号，发生错误时返回-1,如果提供了 WNOHANG作为option（wait3可用的系统）并且没有可用子进程时返回0。

参见

  • pcntl_fork() - 在当前进程当前位置产生分支（子进程）。译注：fork是创建了一个子进程，父进程和子进程 都从fork的位置开始向下继续执行，不同的是父进程执行过程中，得到的fork返回值为子进程 号，而子进程得到的是0。
  • pcntl_signal() - 安装一个信号处理器
  • pcntl_wifexited() - 检查状态代码是否代表一个正常的退出。
  • pcntl_wifstopped() - 检查子进程当前是否已经停止
  • pcntl_wifsignaled() - 检查子进程状态码是否代表由于某个信号而中断
  • pcntl_wexitstatus() - 返回一个中断的子进程的返回代码
  • pcntl_wtermsig() - 返回导致子进程中断的信号
  • pcntl_wstopsig() - 返回导致子进程停止的信号
  • pcntl_waitpid() - 等待或返回fork的子进程状态

pcntl_strerror
pcntl_waitpid
PCNTL 函数


等待或返回fork的子进程状态

pcntl_wait
pcntl_wexitstatus
PCNTL 函数
PHP Manual

pcntl_waitpid

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

pcntl_waitpid — 等待或返回fork的子进程状态

说明

int pcntl_waitpid ( int $pid , int &$status [, int $options = 0 ] )

挂起当前进程的执行直到参数pid指定的进程号的进程退出， 或接收到一个信号要求中断当前进程或调用一个信号处理函数。

如果pid指定的子进程在此函数调用时已经退出（俗称僵尸进程），此函数 将立刻返回。关于waitpid更详细的规范请参见您系统的waitpid（2）手册。

参数

pid

参数pid的值可以是以下之一：

pid可选值
< -1 | 等待任意进程组ID等于参数pid给定值的绝对值的进程。
-1 | 等待任意子进程;与pcntl_wait函数行为一致。
0 | 等待任意与调用进程组ID相同的子进程。
> 0 | 等待进程号等于参数pid值的子进程。

Note:

指定-1作为pid的值等同于pcntl_wait() 提供(负的options)。

status

pcntl_waitpid()将会存储状态信息到status
参数上，这个通过status参数返回的状态信息可以用以下函数
pcntl_wifexited(),
pcntl_wifstopped(),
pcntl_wifsignaled(),
pcntl_wexitstatus(),
pcntl_wtermsig()以及
pcntl_wstopsig()获取其具体的值。

options

如果您的操作系统（多数BSD类系统）允许使用wait3，您可以提供可选的options 参数。如果这个参数没有提供，wait将会被用作系统调用。如果wait3不可用，提供参数 options不会有任何效果。options的值可以是0 或者以下两个常量或两个常量"或运算"结果（即两个常量代表意义都有效）。

options可用的值
WNOHANG | 如果没有子进程退出立刻返回。
WUNTRACED | 子进程已经退出并且其状态未报告时返回。

返回值

pcntl_waitpid()返回退出的子进程进程号，发生错误时返回-1,如果提供了 WNOHANG作为option（wait3可用的系统）并且没有可用子进程时返回0。

参见

  • pcntl_fork() - 在当前进程当前位置产生分支（子进程）。译注：fork是创建了一个子进程，父进程和子进程 都从fork的位置开始向下继续执行，不同的是父进程执行过程中，得到的fork返回值为子进程 号，而子进程得到的是0。
  • pcntl_signal() - 安装一个信号处理器
  • pcntl_wifexited() - 检查状态代码是否代表一个正常的退出。
  • pcntl_wifstopped() - 检查子进程当前是否已经停止
  • pcntl_wifsignaled() - 检查子进程状态码是否代表由于某个信号而中断
  • pcntl_wexitstatus() - 返回一个中断的子进程的返回代码
  • pcntl_wtermsig() - 返回导致子进程中断的信号
  • pcntl_wstopsig() - 返回导致子进程停止的信号

pcntl_wait
pcntl_wexitstatus
PCNTL 函数


返回一个中断的子进程的返回代码

pcntl_waitpid
pcntl_wifexited
PCNTL 函数
PHP Manual

pcntl_wexitstatus

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

pcntl_wexitstatus — 返回一个中断的子进程的返回代码

说明

int pcntl_wexitstatus ( int $status )

返回一个中断的子进程的返回代码。这个函数仅在函数pcntl_wifexited()返回 TRUE.时有效。

参数

status

参数 status 是提供给成功调用 pcntl_waitpid() 时的状态参数。

返回值

返回整形的子进程返回代码。

参见

  • pcntl_waitpid() - 等待或返回fork的子进程状态
  • pcntl_wifexited() - 检查状态代码是否代表一个正常的退出。

pcntl_waitpid
pcntl_wifexited
PCNTL 函数


检查状态代码是否代表一个正常的退出。

pcntl_wexitstatus
pcntl_wifsignaled
PCNTL 函数
PHP Manual

pcntl_wifexited

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

pcntl_wifexited — 检查状态代码是否代表一个正常的退出。

说明

bool pcntl_wifexited ( int $status )

检查子进程状态代码是否代表正常退出。

参数

status

参数 status 是提供给成功调用 pcntl_waitpid() 时的状态参数。

返回值

当子进程状态代码代表正常退出时返回 TRUE ，其他情况返回 FALSE。

参见

  • pcntl_waitpid() - 等待或返回fork的子进程状态
  • pcntl_wexitstatus() - 返回一个中断的子进程的返回代码

pcntl_wexitstatus
pcntl_wifsignaled
PCNTL 函数


检查子进程状态码是否代表由于某个信号而中断

pcntl_wifexited
pcntl_wifstopped
PCNTL 函数
PHP Manual

pcntl_wifsignaled

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

pcntl_wifsignaled — 检查子进程状态码是否代表由于某个信号而中断

说明

bool pcntl_wifsignaled ( int $status )

检查子进程是否是由于某个未捕获的信号退出的。

参数

status

参数 status 是提供给成功调用 pcntl_waitpid() 时的状态参数。

返回值

如果子进程是由于某个未捕获的信号退出的返回 TRUE ，其他情况返回 FALSE 。

参见

  • pcntl_waitpid() - 等待或返回fork的子进程状态
  • pcntl_signal() - 安装一个信号处理器

pcntl_wifexited
pcntl_wifstopped
PCNTL 函数


检查子进程当前是否已经停止

pcntl_wifsignaled
pcntl_wstopsig
PCNTL 函数
PHP Manual

pcntl_wifstopped

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

pcntl_wifstopped — 检查子进程当前是否已经停止

说明

bool pcntl_wifstopped ( int $status )

仅查子进程当前是否停止; 此函数只有作用于使用了WUNTRACED作为 option的pcntl_waitpid()函数调用产生的status时才有效。

参数

status

参数 status 是提供给成功调用 pcntl_waitpid() 时的状态参数。

返回值

如果子进程当前是停止的返回 TRUE ，其他情况返回 FALSE 。

参见

  • pcntl_waitpid() - 等待或返回fork的子进程状态

pcntl_wifsignaled
pcntl_wstopsig
PCNTL 函数


返回导致子进程停止的信号

pcntl_wifstopped
pcntl_wtermsig
PCNTL 函数
PHP Manual

pcntl_wstopsig

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

pcntl_wstopsig — 返回导致子进程停止的信号

说明

int pcntl_wstopsig ( int $status )

返回导致子进程停止的信号编号。这个函数仅在pcntl_wifstopped()返回 TRUE 时有效。

参数

status

参数 status 是提供给成功调用 pcntl_waitpid() 时的状态参数。

返回值

返回信号编号。

参见

  • pcntl_waitpid() - 等待或返回fork的子进程状态
  • pcntl_wifstopped() - 检查子进程当前是否已经停止

pcntl_wifstopped
pcntl_wtermsig
PCNTL 函数


返回导致子进程中断的信号

pcntl_wstopsig
POSIX
PCNTL 函数
PHP Manual

pcntl_wtermsig

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

pcntl_wtermsig — 返回导致子进程中断的信号

说明

int pcntl_wtermsig ( int $status )

返回导致子进程中断的信号编号。这个函数仅在pcntl_wifsignaled() 返回 TRUE 时有效。

参数

status

参数 status 是提供给成功调用 pcntl_waitpid() 时的状态参数。

返回值

返回整型的信号编号。

参见

  • pcntl_waitpid() - 等待或返回fork的子进程状态
  • pcntl_signal() - 安装一个信号处理器
  • pcntl_wifsignaled() - 检查子进程状态码是否代表由于某个信号而中断

pcntl_wstopsig
POSIX
PCNTL 函数


POSIX

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
    • posix_access constants
    • posix_mknod constants
    • posix_setrlimit constants
  • POSIX 函数
    • posix_access — Determine accessibility of a file
    • posix_ctermid — Get path name of controlling terminal
    • posix_errno — 别名 posix_get_last_error
    • posix_get_last_error — Retrieve the error number set by the last posix function that failed
    • posix_getcwd — Pathname of current directory
    • posix_getegid — Return the effective group ID of the current process
    • posix_geteuid — Return the effective user ID of the current process
    • posix_getgid — Return the real group ID of the current process
    • posix_getgrgid — Return info about a group by group id
    • posix_getgrnam — Return info about a group by name
    • posix_getgroups — Return the group set of the current process
    • posix_getlogin — Return login name
    • posix_getpgid — Get process group id for job control
    • posix_getpgrp — Return the current process group identifier
    • posix_getpid — 返回当前进程 id
    • posix_getppid — Return the parent process identifier
    • posix_getpwnam — Return info about a user by username
    • posix_getpwuid — Return info about a user by user id
    • posix_getrlimit — Return info about system resource limits
    • posix_getsid — Get the current sid of the process
    • posix_getuid — Return the real user ID of the current process
    • posix_initgroups — Calculate the group access list
    • posix_isatty — Determine if a file descriptor is an interactive terminal
    • posix_kill — Send a signal to a process
    • posix_mkfifo — Create a fifo special file (a named pipe)
    • posix_mknod — Create a special or ordinary file (POSIX.1)
    • posix_setegid — Set the effective GID of the current process
    • posix_seteuid — Set the effective UID of the current process
    • posix_setgid — Set the GID of the current process
    • posix_setpgid — Set process group id for job control
    • posix_setrlimit — Set system resource limits
    • posix_setsid — Make the current process a session leader
    • posix_setuid — Set the UID of the current process
    • posix_strerror — Retrieve the system error message associated with the given errno
    • posix_times — Get process times
    • posix_ttyname — Determine terminal device name
    • posix_uname — Get system name
pcntl_wtermsig
简介
进程控制扩展


简介

This module contains an interface to those functions defined in the IEEE 1003.1 (POSIX.1) standards document which are not accessible through other means.

Warning

Sensitive data can be retrieved with the POSIX functions, e.g. posix_getpwnam() and friends. None of the POSIX function perform any kind of access checking when safe mode is enabled. It's therefore strongly advised to disable the POSIX extension at all (use --disable-posix in your configure line) if you're operating in such an environment.

Note: 此扩展在 Windows 平台上不可用。

POSIX
安装／配置
POSIX


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
POSIX


安装

POSIX functions are enabled by default. You can disable POSIX-like functions with --disable-posix .

需求
运行时配置
安装／配置


预定义常量

Table of Contents

  • posix_access constants
  • posix_mknod constants
  • posix_setrlimit constants

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

资源类型
posix_access constants
POSIX


posix_access constants

预定义常量
posix_mknod constants
预定义常量
PHP Manual

posix_access() constants

Note:

These constants are available starting with PHP 5.1.0. Please note that some of them may not be available on your system.

POSIX_F_OK (integer)
Check whether the file exists.
POSIX_R_OK (integer)
Check whether the file exists and has read permissions.
POSIX_W_OK (integer)
Check whether the file exists and has write permissions.
POSIX_X_OK (integer)
Check whether the file exists and has execute permissions.
预定义常量
posix_mknod constants
预定义常量


posix_mknod constants

posix_access constants
posix_setrlimit constants
预定义常量
PHP Manual

posix_mknod() constants

Note:

These constants are available starting with PHP 5.1.0. Please note that some of them may not be available on your system.

POSIX_S_IFBLK (integer)
Block special file
POSIX_S_IFCHR (integer)
Character special file
POSIX_S_IFIFO (integer)
FIFO (named pipe) special file
POSIX_S_IFREG (integer)
Normal file
POSIX_S_IFSOCK (integer)
Socket
posix_access constants
posix_setrlimit constants
预定义常量


posix_setrlimit constants

posix_mknod constants
POSIX 函数
预定义常量
PHP Manual

posix_setrlimit() constants

Note:

These constants are available starting with PHP 7.0.0. Please note that some of them may not be available on your system.

Note:

You may wish to read the below notes in conjunction with the manpage for setrlimit() on your specific operating system, as there is variance in how these limits are interpreted, even across operating systems that claim to implement POSIX in full.

POSIX_RLIMIT_AS (integer)
The maximum size of the process's address space in bytes. See also PHP's memory_limit configuration directive.
POSIX_RLIMIT_CORE (integer)
The maximum size of a core file. If the limit is set to 0, no core file will be generated.
POSIX_RLIMIT_CPU (integer)
The maximum amount of CPU time that the process can use, in seconds. When the soft limit is hit, a SIGXCPU signal will be sent, which can be caught with pcntl_signal(). Depending on the operating system, additional SIGXCPU signals may be sent each second until the hard limit is hit, at which point an uncatchable SIGKILL signal is sent. See also set_time_limit().
POSIX_RLIMIT_DATA (integer)
The maximum size of the process's data segment, in bytes. It is extremely unlikely that this will have any effect on the execution of PHP unless an extension is in use that calls brk() or sbrk().
POSIX_RLIMIT_FSIZE (integer)
The maximum size of files that the process can create, in bytes.
POSIX_RLIMIT_LOCKS (integer)
The maximum number of locks that the process can create. This is only supported on extremely old Linux kernels.
POSIX_RLIMIT_MEMLOCK (integer)
The maximum number of bytes that can be locked into memory.
POSIX_RLIMIT_MSGQUEUE (integer)
The maximum number of bytes that can be allocated for POSIX message queues. PHP does not ship with support for POSIX message queues, so this limit will not have any effect unless you are using an extension that implements that support.
POSIX_RLIMIT_NICE (integer)
The maximum value to which the process can be reniced to. The value that will be used will be 20 - limit, as resource limit values cannot be negative.
POSIX_RLIMIT_NOFILE (integer)
A value one greater than the maximum file descriptor number that can be opened by this process.
POSIX_RLIMIT_NPROC (integer)
The maximum number of processes (and/or threads, on some operating systems) that can be created for the real user ID of the process.
POSIX_RLIMIT_RSS (integer)
The maximum size of the process's resident set, in pages.
POSIX_RLIMIT_RTPRIO (integer)
The maximum real time priority that can be set via the sched_setscheduler() and sched_setparam() system calls.
POSIX_RLIMIT_RTTIME (integer)
The maximum amount of CPU time, in microseconds, that the process can consume without making a blocking system call if it is using real time scheduling.
POSIX_RLIMIT_SIGPENDING (integer)
The maximum number of signals that can be queued for the real user ID of the process.
POSIX_RLIMIT_STACK (integer)
The maximum size of the process stack, in bytes.
POSIX_RLIMIT_INFINITY (integer)
Used to indicate an infinite value for a resource limit.
posix_mknod constants
POSIX 函数
预定义常量


POSIX 函数

参见

The section about Process Control Functions maybe of interest for you.

Table of Contents

  • posix_access — Determine accessibility of a file
  • posix_ctermid — Get path name of controlling terminal
  • posix_errno — 别名 posix_get_last_error
  • posix_get_last_error — Retrieve the error number set by the last posix function that failed
  • posix_getcwd — Pathname of current directory
  • posix_getegid — Return the effective group ID of the current process
  • posix_geteuid — Return the effective user ID of the current process
  • posix_getgid — Return the real group ID of the current process
  • posix_getgrgid — Return info about a group by group id
  • posix_getgrnam — Return info about a group by name
  • posix_getgroups — Return the group set of the current process
  • posix_getlogin — Return login name
  • posix_getpgid — Get process group id for job control
  • posix_getpgrp — Return the current process group identifier
  • posix_getpid — 返回当前进程 id
  • posix_getppid — Return the parent process identifier
  • posix_getpwnam — Return info about a user by username
  • posix_getpwuid — Return info about a user by user id
  • posix_getrlimit — Return info about system resource limits
  • posix_getsid — Get the current sid of the process
  • posix_getuid — Return the real user ID of the current process
  • posix_initgroups — Calculate the group access list
  • posix_isatty — Determine if a file descriptor is an interactive terminal
  • posix_kill — Send a signal to a process
  • posix_mkfifo — Create a fifo special file (a named pipe)
  • posix_mknod — Create a special or ordinary file (POSIX.1)
  • posix_setegid — Set the effective GID of the current process
  • posix_seteuid — Set the effective UID of the current process
  • posix_setgid — Set the GID of the current process
  • posix_setpgid — Set process group id for job control
  • posix_setrlimit — Set system resource limits
  • posix_setsid — Make the current process a session leader
  • posix_setuid — Set the UID of the current process
  • posix_strerror — Retrieve the system error message associated with the given errno
  • posix_times — Get process times
  • posix_ttyname — Determine terminal device name
  • posix_uname — Get system name
posix_setrlimit constants
posix_access
POSIX


Determine accessibility of a file

POSIX 函数
posix_ctermid
POSIX 函数
PHP Manual

posix_access

(PHP 5 >= 5.1.0, PHP 7)

posix_access — Determine accessibility of a file

说明

bool posix_access ( string $file [, int $mode = POSIX_F_OK ] )

posix_access() checks the user's permission of a file.

参数

file

The name of the file to be tested.

mode

A mask consisting of one or more of POSIX_F_OK, POSIX_R_OK, POSIX_W_OK and POSIX_X_OK.

POSIX_R_OK, POSIX_W_OK and POSIX_X_OK request checking whether the file exists and has read, write and execute permissions, respectively. POSIX_F_OK just requests checking for the existence of the file.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 posix_access() example

This example will check if the $file is readable and writable, otherwise will print an error message.

<?php

$file = 'some_file';

if (posix_access($file, POSIX_R_OK | POSIX_W_OK)) {
    echo 'The file is readable and writable!';

} else {
    $error = posix_get_last_error();

    echo "Error $error: " . posix_strerror($error);
}

?>

注释

Note: 当启用 安全模式时， PHP 会检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。

参见

  • posix_get_last_error() - Retrieve the error number set by the last posix function that failed
  • posix_strerror() - Retrieve the system error message associated with the given errno

POSIX 函数
posix_ctermid
POSIX 函数


Get path name of controlling terminal

posix_access
posix_errno
POSIX 函数
PHP Manual

posix_ctermid

(PHP 4, PHP 5, PHP 7)

posix_ctermid — Get path name of controlling terminal

说明

string posix_ctermid ( void )

Generates a string which is the pathname for the current controlling terminal for the process. On error this will set errno, which can be checked using posix_get_last_error()

返回值

Upon successful completion, returns string of the pathname to the current controlling terminal. Otherwise FALSE is returned and errno is set, which can be checked with posix_get_last_error().

范例

Example #1 posix_ctermid() example

This example will display the path to the current TTY.

<?php
echo "I am running from ".posix_ctermid();
?>

参见

  • posix_ttyname() - Determine terminal device name
  • posix_get_last_error() - Retrieve the error number set by the last posix function that failed

posix_access
posix_errno
POSIX 函数


别名 posix_get_last_error

posix_ctermid
posix_get_last_error
POSIX 函数
PHP Manual

posix_errno

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

posix_errno — 别名 posix_get_last_error()

说明

此函数是该函数的别名： posix_get_last_error().

posix_ctermid
posix_get_last_error
POSIX 函数


Retrieve the error number set by the last posix function that failed

posix_errno
posix_getcwd
POSIX 函数
PHP Manual

posix_get_last_error

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

posix_get_last_error — Retrieve the error number set by the last posix function that failed

说明

int posix_get_last_error ( void )

Retrieve the error number set by the last posix function that failed. The system error message associated with the errno may be checked with posix_strerror().

返回值

Returns the errno (error number) set by the last posix function that failed. If no errors exist, 0 is returned.

范例

Example #1 posix_get_last_error() example

This example attempt to kill a bogus process id, which will set the last error. We will then print out the last errno.

<?php
posix_kill(999459,SIGKILL);
echo 'Your error returned was '.posix_get_last_error(); //Your error was ___
?>

参见

  • posix_strerror() - Retrieve the system error message associated with the given errno

posix_errno
posix_getcwd
POSIX 函数


Pathname of current directory

posix_get_last_error
posix_getegid
POSIX 函数
PHP Manual

posix_getcwd

(PHP 4, PHP 5, PHP 7)

posix_getcwd — Pathname of current directory

说明

string posix_getcwd ( void )

Gets the absolute pathname of the script's current working directory. On error, it sets errno which can be checked using posix_get_last_error()

返回值

Returns a string of the absolute pathname on success. On error, returns FALSE and sets errno which can be checked with posix_get_last_error().

范例

Example #1 posix_getcwd() example

This example will return the absolute path of the current working directory of the script.

<?php
echo 'My current working directory is '.posix_getcwd();
?>

注释

Note:

This function can fail on

  • Read or Search permission was denied
  • Pathname no longer exists

posix_get_last_error
posix_getegid
POSIX 函数


Return the effective group ID of the current process

posix_getcwd
posix_geteuid
POSIX 函数
PHP Manual

posix_getegid

(PHP 4, PHP 5, PHP 7)

posix_getegid — Return the effective group ID of the current process

说明

int posix_getegid ( void )

Return the numeric effective group ID of the current process.

返回值

Returns an integer of the effective group ID.

范例

Example #1 posix_getegid() example

This example will print out the effective group id, once it is changed with posix_setegid().

<?php
echo 'My real group id is '.posix_getgid(); //20
posix_setegid(40);
echo 'My real group id is '.posix_getgid(); //20
echo 'My effective group id is '.posix_getegid(); //40
?>

注释

posix_getegid() is different than posix_getgid() because effective group ID can be changed by a calling process using posix_setegid().

参见

  • posix_getgrgid() - Return info about a group by group id
  • posix_getgid() - Return the real group ID of the current process
  • posix_setgid() - Set the GID of the current process

posix_getcwd
posix_geteuid
POSIX 函数


Return the effective user ID of the current process

posix_getegid
posix_getgid
POSIX 函数
PHP Manual

posix_geteuid

(PHP 4, PHP 5, PHP 7)

posix_geteuid — Return the effective user ID of the current process

说明

int posix_geteuid ( void )

Return the numeric effective user ID of the current process. See also posix_getpwuid() for information on how to convert this into a useable username.

返回值

Returns the user id, as an integer

范例

Example #1 posix_geteuid() example

This example will show the current user id then set the effective user id to a separate id using posix_seteuid(), then show the difference between the real id and the effective id.

<?php
echo posix_getuid()."\n"; //10001
echo posix_geteuid()."\n"; //10001
posix_seteuid(10000);
echo posix_getuid()."\n"; //10001
echo posix_geteuid()."\n"; //10000
?>

参见

  • posix_getpwuid() - Return info about a user by user id
  • posix_getuid() - Return the real user ID of the current process
  • posix_setuid() - Set the UID of the current process
  • POSIX man page GETEUID(2)

posix_getegid
posix_getgid
POSIX 函数


Return the real group ID of the current process

posix_geteuid
posix_getgrgid
POSIX 函数
PHP Manual

posix_getgid

(PHP 4, PHP 5, PHP 7)

posix_getgid — Return the real group ID of the current process

说明

int posix_getgid ( void )

Return the numeric real group ID of the current process.

返回值

Returns the real group id, as an integer.

范例

Example #1 posix_getgid() example

This example will print out the real group id, even once the effective group id has been changed.

<?php
echo 'My real group id is '.posix_getgid(); //20
posix_setegid(40);
echo 'My real group id is '.posix_getgid(); //20
echo 'My effective group id is '.posix_getegid(); //40
?>

参见

  • posix_getgrgid() - Return info about a group by group id
  • posix_getegid() - Return the effective group ID of the current process
  • posix_setgid() - Set the GID of the current process
  • POSIX man page GETGID(2)

posix_geteuid
posix_getgrgid
POSIX 函数


Return info about a group by group id

posix_getgid
posix_getgrnam
POSIX 函数
PHP Manual

posix_getgrgid

(PHP 4, PHP 5, PHP 7)

posix_getgrgid — Return info about a group by group id

说明

array posix_getgrgid ( int $gid )

Gets information about a group provided its id.

参数

gid

The group id.

返回值

The array elements returned are:

The group information array
Element | Description
name | The name element contains the name of the group. This is a short, usually less than 16 character "handle" of the group, not the real, full name.
passwd | The passwd element contains the group's password in an encrypted format. Often, for example on a system employing "shadow" passwords, an asterisk is returned instead.
gid | Group ID, should be the same as the gid parameter used when calling the function, and hence redundant.
members | This consists of an array of string's for all the members in the group.

范例

Example #1 Example use of posix_getgrgid()

<?php

$groupid   = posix_getegid();
$groupinfo = posix_getgrgid($groupid);

print_r($groupinfo);
?>

以上例程的输出类似于：

Array
(
    [name]    => toons
    [passwd]  => x
    [members] => Array
        (
            [0] => tom
            [1] => jerry
        )
    [gid]     => 42
)

参见

  • posix_getegid() - Return the effective group ID of the current process
  • posix_getgrnam() - Return info about a group by name
  • filegroup() - 取得文件的组
  • stat() - 给出文件的信息
  • safe_mode_gid
  • POSIX man page GETGRNAM(3)

posix_getgid
posix_getgrnam
POSIX 函数


Return info about a group by name

posix_getgrgid
posix_getgroups
POSIX 函数
PHP Manual

posix_getgrnam

(PHP 4, PHP 5, PHP 7)

posix_getgrnam — Return info about a group by name

说明

array posix_getgrnam ( string $name )

Gets information about a group provided its name.

参数

name

The name of the group

返回值

The array elements returned are:

The group information array
Element | Description
name | The name element contains the name of the group. This is a short, usually less than 16 character "handle" of the group, not the real, full name. This should be the same as the name parameter used when calling the function, and hence redundant.
passwd | The passwd element contains the group's password in an encrypted format. Often, for example on a system employing "shadow" passwords, an asterisk is returned instead.
gid | Group ID of the group in numeric form.
members | This consists of an array of string's for all the members in the group.

范例

Example #1 Example use of posix_getgrnam()

<?php

$groupinfo = posix_getgrnam("toons");

print_r($groupinfo);
?>

以上例程的输出类似于：

Array
(
    [name]    => toons
    [passwd]  => x
    [members] => Array
        (
            [0] => tom
            [1] => jerry
        )
    [gid]     => 42
)

参见

  • posix_getegid() - Return the effective group ID of the current process
  • posix_getgrgid() - Return info about a group by group id
  • filegroup() - 取得文件的组
  • stat() - 给出文件的信息
  • safe_mode_gid
  • POSIX man page GETGRNAM(3)

posix_getgrgid
posix_getgroups
POSIX 函数


Return the group set of the current process

posix_getgrnam
posix_getlogin
POSIX 函数
PHP Manual

posix_getgroups

(PHP 4, PHP 5, PHP 7)

posix_getgroups — Return the group set of the current process

说明

array posix_getgroups ( void )

Gets the group set of the current process.

返回值

Returns an array of integers containing the numeric group ids of the group set of the current process.

范例

Example #1 Example use of posix_getgroups()

<?php

$groups = posix_getgroups();

print_r($groups);
?>

以上例程的输出类似于：

Array
(
    [0] => 4
    [1] => 20
    [2] => 24
    [3] => 25
    [4] => 29
    [5] => 30
    [6] => 33
    [7] => 44
    [8] => 46
    [9] => 104
    [10] => 109
    [11] => 110
    [12] => 1000
)

参见

  • posix_getgrgid() - Return info about a group by group id

posix_getgrnam
posix_getlogin
POSIX 函数


Return login name

posix_getgroups
posix_getpgid
POSIX 函数
PHP Manual

posix_getlogin

(PHP 4, PHP 5, PHP 7)

posix_getlogin — Return login name

说明

string posix_getlogin ( void )

Returns the login name of the user owning the current process.

返回值

Returns the login name of the user, as a string.

范例

Example #1 Example use of posix_getlogin()

<?php
echo posix_getlogin(); //apache
?>

参见

  • posix_getpwnam() - Return info about a user by username
  • POSIX man page GETLOGIN(3)

posix_getgroups
posix_getpgid
POSIX 函数


Get process group id for job control

posix_getlogin
posix_getpgrp
POSIX 函数
PHP Manual

posix_getpgid

(PHP 4, PHP 5, PHP 7)

posix_getpgid — Get process group id for job control

说明

int posix_getpgid ( int $pid )

Returns the process group identifier of the process pid 或者在失败时返回 FALSE.

参数

pid

The process id.

返回值

Returns the identifier, as an integer.

范例

Example #1 Example use of posix_getpgid()

<?php
$pid = posix_getppid();
echo posix_getpgid($pid); //35
?>

注释

Note:

This is a not POSIX function, but is common on BSD and System V systems. If the system does not support this function, then it will not be included at compile time. This may be checked with function_exists().

参见

  • posix_getppid() - Return the parent process identifier
  • man page SETPGID(2)

posix_getlogin
posix_getpgrp
POSIX 函数


Return the current process group identifier

posix_getpgid
posix_getpid
POSIX 函数
PHP Manual

posix_getpgrp

(PHP 4, PHP 5, PHP 7)

posix_getpgrp — Return the current process group identifier

说明

int posix_getpgrp ( void )

Return the process group identifier of the current process.

返回值

Returns the identifier, as an integer.

参见

  • POSIX.1 and the getpgrp(2) manual page on the POSIX system for more information on process groups.

posix_getpgid
posix_getpid
POSIX 函数


返回当前进程 id

posix_getpgrp
posix_getppid
POSIX 函数
PHP Manual

posix_getpid

(PHP 4, PHP 5, PHP 7)

posix_getpid — 返回当前进程 id

说明

int posix_getpid ( void )

Return the process identifier of the current process. 返回当前进程的 id

返回值

返回进程 id 号，是整型（integer）。

范例

Example #1 posix_getpid() 的使用例子

<?php
echo posix_getpid(); //8805
?>

参见

  • posix_kill() - Send a signal to a process
  • POSIX man page GETPID(2)

posix_getpgrp
posix_getppid
POSIX 函数


Return the parent process identifier

posix_getpid
posix_getpwnam
POSIX 函数
PHP Manual

posix_getppid

(PHP 4, PHP 5, PHP 7)

posix_getppid — Return the parent process identifier

说明

int posix_getppid ( void )

Return the process identifier of the parent process of the current process.

返回值

Returns the identifier, as an integer.

范例

Example #1 Example use of posix_getppid()

<?php
echo posix_getppid(); //8259
?>

posix_getpid
posix_getpwnam
POSIX 函数


Return info about a user by username

posix_getppid
posix_getpwuid
POSIX 函数
PHP Manual

posix_getpwnam

(PHP 4, PHP 5, PHP 7)

posix_getpwnam — Return info about a user by username

说明

array posix_getpwnam ( string $username )

Returns an array of information about the given user.

参数

username

An alphanumeric username.

返回值

On success an array with the following elements is returned, else FALSE is returned:

The user information array
Element | Description
name | The name element contains the username of the user. This is a short, usually less than 16 character "handle" of the user, not the real, full name. This should be the same as the username parameter used when calling the function, and hence redundant.
passwd | The passwd element contains the user's password in an encrypted format. Often, for example on a system employing "shadow" passwords, an asterisk is returned instead.
uid | User ID of the user in numeric form.
gid | The group ID of the user. Use the function posix_getgrgid() to resolve the group name and a list of its members.
gecos | GECOS is an obsolete term that refers to the finger information field on a Honeywell batch processing system. The field, however, lives on, and its contents have been formalized by POSIX. The field contains a comma separated list containing the user's full name, office phone, office number, and home phone number. On most systems, only the user's full name is available.
dir | This element contains the absolute path to the home directory of the user.
shell | The shell element contains the absolute path to the executable of the user's default shell.

范例

Example #1 Example use of posix_getpwnam()

<?php

$userinfo = posix_getpwnam("tom");

print_r($userinfo);
?>

以上例程的输出类似于：

Array
(
    [name]    => tom
    [passwd]  => x
    [uid]     => 10000
    [gid]     => 42
    [gecos]   => "tom,,,"
    [dir]     => "/home/tom"
    [shell]   => "/bin/bash"
)

参见

  • posix_getpwuid() - Return info about a user by user id
  • POSIX man page GETPWNAM(3)

posix_getppid
posix_getpwuid
POSIX 函数


Return info about a user by user id

posix_getpwnam
posix_getrlimit
POSIX 函数
PHP Manual

posix_getpwuid

(PHP 4, PHP 5, PHP 7)

posix_getpwuid — Return info about a user by user id

说明

array posix_getpwuid ( int $uid )

Returns an array of information about the user referenced by the given user ID.

参数

uid

The user identifier.

返回值

Returns an associative array with the following elements:

The user information array
Element | Description
name | The name element contains the username of the user. This is a short, usually less than 16 character "handle" of the user, not the real, full name.
passwd | The passwd element contains the user's password in an encrypted format. Often, for example on a system employing "shadow" passwords, an asterisk is returned instead.
uid | User ID, should be the same as the uid parameter used when calling the function, and hence redundant.
gid | The group ID of the user. Use the function posix_getgrgid() to resolve the group name and a list of its members.
gecos | GECOS is an obsolete term that refers to the finger information field on a Honeywell batch processing system. The field, however, lives on, and its contents have been formalized by POSIX. The field contains a comma separated list containing the user's full name, office phone, office number, and home phone number. On most systems, only the user's full name is available.
dir | This element contains the absolute path to the home directory of the user.
shell | The shell element contains the absolute path to the executable of the user's default shell.

范例

Example #1 Example use of posix_getpwuid()

<?php

$userinfo = posix_getpwuid(10000);

print_r($userinfo);
?>

以上例程的输出类似于：

Array
(
    [name]    => tom
    [passwd]  => x
    [uid]     => 10000
    [gid]     => 42
    [gecos]   => "tom,,,"
    [dir]     => "/home/tom"
    [shell]   => "/bin/bash"
)

参见

  • posix_getpwnam() - Return info about a user by username
  • POSIX man page GETPWNAM(3)

posix_getpwnam
posix_getrlimit
POSIX 函数


Return info about system resource limits

posix_getpwuid
posix_getsid
POSIX 函数
PHP Manual

posix_getrlimit

(PHP 4, PHP 5, PHP 7)

posix_getrlimit — Return info about system resource limits

说明

array posix_getrlimit ( void )

posix_getrlimit() returns an array of information about the current resource's soft and hard limits.

Each resource has an associated soft and hard limit. The soft limit is the value that the kernel enforces for the corresponding resource. The hard limit acts as a ceiling for the soft limit. An unprivileged process may only set its soft limit to a value from 0 to the hard limit, and irreversibly lower its hard limit.

返回值

Returns an associative array of elements for each limit that is defined. Each limit has a soft and a hard limit.

List of possible limits returned
Limit name | Limit description
core | The maximum size of the core file. When 0, not core files are created. When core files are larger than this size, they will be truncated at this size.
totalmem | The maximum size of the memory of the process, in bytes.
virtualmem | The maximum size of the virtual memory for the process, in bytes.
data | The maximum size of the data segment for the process, in bytes.
stack | The maximum size of the process stack, in bytes.
rss | The maximum number of virtual pages resident in RAM
maxproc | The maximum number of processes that can be created for the real user ID of the calling process.
memlock | The maximum number of bytes of memory that may be locked into RAM.
cpu | The amount of time the process is allowed to use the CPU.
filesize | The maximum size of the data segment for the process, in bytes.
openfiles | One more than the maximum number of open file descriptors.

范例

Example #1 Example use of posix_getrlimit()

<?php

$limits = posix_getrlimit();

print_r($limits);
?>

以上例程的输出类似于：

Array
(
    [soft core] => 0
    [hard core] => unlimited
    [soft data] => unlimited
    [hard data] => unlimited
    [soft stack] => 8388608
    [hard stack] => unlimited
    [soft totalmem] => unlimited
    [hard totalmem] => unlimited
    [soft rss] => unlimited
    [hard rss] => unlimited
    [soft maxproc] => unlimited
    [hard maxproc] => unlimited
    [soft memlock] => unlimited
    [hard memlock] => unlimited
    [soft cpu] => unlimited
    [hard cpu] => unlimited
    [soft filesize] => unlimited
    [hard filesize] => unlimited
    [soft openfiles] => 1024
    [hard openfiles] => 1024
)

参见

  • man page GETRLIMIT(2)
  • posix_setrlimit() - Set system resource limits

posix_getpwuid
posix_getsid
POSIX 函数


Get the current sid of the process

posix_getrlimit
posix_getuid
POSIX 函数
PHP Manual

posix_getsid

(PHP 4, PHP 5, PHP 7)

posix_getsid — Get the current sid of the process

说明

int posix_getsid ( int $pid )

Return the session id of the process pid. The session id of a process is the process group id of the session leader.

参数

pid

The process identifier. If set to 0, the current process is assumed. If an invalid pid is specified, then FALSE is returned and an error is set which can be checked with posix_get_last_error().

返回值

Returns the identifier, as an integer.

范例

Example #1 Example use of posix_getsid()

<?php
$pid = posix_getpid();
echo posix_getsid($pid); //8805
?>

参见

  • posix_getpgid() - Get process group id for job control
  • posix_setsid() - Make the current process a session leader
  • POSIX man page GETSID(2)

posix_getrlimit
posix_getuid
POSIX 函数


Return the real user ID of the current process

posix_getsid
posix_initgroups
POSIX 函数
PHP Manual

posix_getuid

(PHP 4, PHP 5, PHP 7)

posix_getuid — Return the real user ID of the current process

说明

int posix_getuid ( void )

Return the numeric real user ID of the current process.

返回值

Returns the user id, as an integer

范例

Example #1 Example use of posix_getuid()

<?php
echo posix_getuid(); //10000
?>

参见

  • posix_getpwuid() - Return info about a user by user id
  • POSIX man page GETUID(2)

posix_getsid
posix_initgroups
POSIX 函数


Calculate the group access list

posix_getuid
posix_isatty
POSIX 函数
PHP Manual

posix_initgroups

(PHP 5 >= 5.2.0, PHP 7)

posix_initgroups — Calculate the group access list

说明

bool posix_initgroups ( string $name , int $base_group_id )

Calculates the group access list for the user specified in name.

参数

name

The user to calculate the list for.

base_group_id

Typically the group number from the password file.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • The Unix manual page for initgroups(3).

posix_getuid
posix_isatty
POSIX 函数


Determine if a file descriptor is an interactive terminal

posix_initgroups
posix_kill
POSIX 函数
PHP Manual

posix_isatty

(PHP 4, PHP 5, PHP 7)

posix_isatty — Determine if a file descriptor is an interactive terminal

说明

bool posix_isatty ( mixed $fd )

Determines if the file descriptor fd refers to a valid terminal type device.

参数

fd

The file descriptor, which is expected to be either a file resource or an integer. An integer will be assumed to be a file descriptor that can be passed directly to the underlying system call.

In almost all cases, you will want to provide a file resource.

返回值

Returns TRUE if fd is an open descriptor connected to a terminal and FALSE otherwise.

参见

  • posix_ttyname() - Determine terminal device name

posix_initgroups
posix_kill
POSIX 函数


Send a signal to a process

posix_isatty
posix_mkfifo
POSIX 函数
PHP Manual

posix_kill

(PHP 4, PHP 5, PHP 7)

posix_kill — Send a signal to a process

说明

bool posix_kill ( int $pid , int $sig )

Send the signal sig to the process with the process identifier pid.

参数

pid

The process identifier.

sig

One of the PCNTL signals constants.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • The kill(2) manual page of the POSIX system, which contains additional information about negative process identifiers, the special pid 0, the special pid -1, and the signal number 0.

posix_isatty
posix_mkfifo
POSIX 函数


Create a fifo special file (a named pipe)

posix_kill
posix_mknod
POSIX 函数
PHP Manual

posix_mkfifo

(PHP 4, PHP 5, PHP 7)

posix_mkfifo — Create a fifo special file (a named pipe)

说明

bool posix_mkfifo ( string $pathname , int $mode )

posix_mkfifo() creates a special FIFO file which exists in the file system and acts as a bidirectional communication endpoint for processes.

参数

pathname

Path to the FIFO file.

mode

The second parameter mode has to be given in octal notation (e.g. 0644). The permission of the newly created FIFO also depends on the setting of the current umask(). The permissions of the created file are (mode & ~umask).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note: 当启用 安全模式时， PHP 会检查被操作的文件或目录是否与被执行的脚本有相同的 UID（所有者）。

posix_kill
posix_mknod
POSIX 函数


Create a special or ordinary file (POSIX.1)

posix_mkfifo
posix_setegid
POSIX 函数
PHP Manual

posix_mknod

(PHP 5 >= 5.1.0, PHP 7)

posix_mknod — Create a special or ordinary file (POSIX.1)

说明

bool posix_mknod ( string $pathname , int $mode [, int $major = 0 [, int $minor = 0 ]] )

Creates a special or ordinary file.

参数

pathname

The file to create

mode

This parameter is constructed by a bitwise OR between file type (one of the following constants: POSIX_S_IFREG, POSIX_S_IFCHR, POSIX_S_IFBLK, POSIX_S_IFIFO or POSIX_S_IFSOCK) and permissions.

major

The major device kernel identifier (required to pass when using S_IFCHR or S_IFBLK).

minor

The minor device kernel identifier.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 A posix_mknod() example

<?php

$file = '/tmp/tmpfile';  // file name
$type = POSIX_S_IFBLK;   // file type
$permissions = 0777;     // octal
$major = 1;
$minor = 8;              // /dev/random

if (!posix_mknod($file, $type | $permissions, $major, $minor)) {
    die('Error ' . posix_get_last_error() . ': ' . posix_strerror(posix_get_last_error()));
}

?>

参见

  • posix_mkfifo() - Create a fifo special file (a named pipe)

posix_mkfifo
posix_setegid
POSIX 函数


Set the effective GID of the current process

posix_mknod
posix_seteuid
POSIX 函数
PHP Manual

posix_setegid

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

posix_setegid — Set the effective GID of the current process

说明

bool posix_setegid ( int $gid )

Set the effective group ID of the current process. This is a privileged function and needs appropriate privileges (usually root) on the system to be able to perform this function.

参数

gid

The group id.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 posix_setegid() example

This example will print out the effective group id, once changed.

<?php
echo 'My real group id is '.posix_getgid(); //20
posix_setegid(40);
echo 'My real group id is '.posix_getgid(); //20
echo 'My effective group id is '.posix_getegid(); //40
?>

参见

  • posix_getgrgid() - Return info about a group by group id
  • posix_getgid() - Return the real group ID of the current process
  • posix_setgid() - Set the GID of the current process

posix_mknod
posix_seteuid
POSIX 函数


Set the effective UID of the current process

posix_setegid
posix_setgid
POSIX 函数
PHP Manual

posix_seteuid

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

posix_seteuid — Set the effective UID of the current process

说明

bool posix_seteuid ( int $uid )

Set the effective user ID of the current process. This is a privileged function and needs appropriate privileges (usually root) on the system to be able to perform this function.

参数

uid

The user id.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • posix_geteuid() - Return the effective user ID of the current process
  • posix_setuid() - Set the UID of the current process
  • posix_getuid() - Return the real user ID of the current process

posix_setegid
posix_setgid
POSIX 函数


Set the GID of the current process

posix_seteuid
posix_setpgid
POSIX 函数
PHP Manual

posix_setgid

(PHP 4, PHP 5, PHP 7)

posix_setgid — Set the GID of the current process

说明

bool posix_setgid ( int $gid )

Set the real group ID of the current process. This is a privileged function and needs appropriate privileges (usually root) on the system to be able to perform this function. The appropriate order of function calls is posix_setgid() first, posix_setuid() last.

Note:

If the caller is a super user, this will also set the effective group id.

参数

gid

The group id.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 posix_setgid() example

This example will print out the effective group id, once it is changed.

<?php
echo 'My real group id is '.posix_getgid(); //20
posix_setgid(40);
echo 'My real group id is '.posix_getgid(); //40
echo 'My effective group id is '.posix_getegid(); //40
?>

参见

  • posix_getgrgid() - Return info about a group by group id
  • posix_getgid() - Return the real group ID of the current process

posix_seteuid
posix_setpgid
POSIX 函数


Set process group id for job control

posix_setgid
posix_setrlimit
POSIX 函数
PHP Manual

posix_setpgid

(PHP 4, PHP 5, PHP 7)

posix_setpgid — Set process group id for job control

说明

bool posix_setpgid ( int $pid , int $pgid )

Let the process pid join the process group pgid.

参数

pid

The process id.

pgid

The process group id.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • See POSIX.1 and the setsid(2) manual page on the POSIX system for more informations on process groups and job control.

posix_setgid
posix_setrlimit
POSIX 函数


Set system resource limits

posix_setpgid
posix_setsid
POSIX 函数
PHP Manual

posix_setrlimit

(PHP 7)

posix_setrlimit — Set system resource limits

说明

bool posix_setrlimit ( int $resource , int $softlimit , int $hardlimit )

posix_setrlimit() sets the soft and hard limits for a given system resource.

Each resource has an associated soft and hard limit. The soft limit is the value that the kernel enforces for the corresponding resource. The hard limit acts as a ceiling for the soft limit. An unprivileged process may only set its soft limit to a value from 0 to the hard limit, and irreversibly lower its hard limit.

参数

resource

The resource limit constant corresponding to the limit that is being set.

softlimit

The soft limit, in whatever unit the resource limit requires, or POSIX_RLIMIT_INFINITY.

hardlimit

The hard limit, in whatever unit the resource limit requires, or POSIX_RLIMIT_INFINITY.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • man page SETRLIMIT(2)
  • posix_getrlimit() - Return info about system resource limits

posix_setpgid
posix_setsid
POSIX 函数


Make the current process a session leader

posix_setrlimit
posix_setuid
POSIX 函数
PHP Manual

posix_setsid

(PHP 4, PHP 5, PHP 7)

posix_setsid — Make the current process a session leader

说明

int posix_setsid ( void )

Make the current process a session leader.

返回值

Returns the session id, or -1 on errors.

参见

  • The POSIX.1 and the setsid(2) manual page on the POSIX system for more information on process groups and job control.

posix_setrlimit
posix_setuid
POSIX 函数


Set the UID of the current process

posix_setsid
posix_strerror
POSIX 函数
PHP Manual

posix_setuid

(PHP 4, PHP 5, PHP 7)

posix_setuid — Set the UID of the current process

说明

bool posix_setuid ( int $uid )

Set the real user ID of the current process. This is a privileged function that needs appropriate privileges (usually root) on the system to be able to perform this function.

参数

uid

The user id.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 posix_setuid() example

This example will show the current user id and then set it to a different value.

<?php
echo posix_getuid()."\n"; //10001
echo posix_geteuid()."\n"; //10001
posix_setuid(10000);
echo posix_getuid()."\n"; //10000
echo posix_geteuid()."\n"; //10000
?>

参见

  • posix_setgid() - Set the GID of the current process
  • posix_seteuid() - Set the effective UID of the current process
  • posix_getuid() - Return the real user ID of the current process
  • posix_geteuid() - Return the effective user ID of the current process

posix_setsid
posix_strerror
POSIX 函数


Retrieve the system error message associated with the given errno

posix_setuid
posix_times
POSIX 函数
PHP Manual

posix_strerror

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

posix_strerror — Retrieve the system error message associated with the given errno

说明

string posix_strerror ( int $errno )

Returns the POSIX system error message associated with the given errno. You may get the errno parameter by calling posix_get_last_error().

参数

errno

A POSIX error number, returned by posix_get_last_error(). If set to 0, then the string "Success" is returned.

返回值

Returns the error message, as a string.

范例

Example #1 posix_strerror() example

This example will attempt to kill a process which does not exist, then will print out the corresponding error message.

<?php
posix_kill(50,SIGKILL);
echo posix_strerror(posix_get_last_error())."\n";
?>

以上例程的输出类似于：

No such process

参见

  • posix_get_last_error() - Retrieve the error number set by the last posix function that failed

posix_setuid
posix_times
POSIX 函数


Get process times

posix_strerror
posix_ttyname
POSIX 函数
PHP Manual

posix_times

(PHP 4, PHP 5, PHP 7)

posix_times — Get process times

说明

array posix_times ( void )

Gets information about the current CPU usage.

返回值

Returns a hash of strings with information about the current process CPU usage. The indices of the hash are:

  • ticks - the number of clock ticks that have elapsed since reboot.
  • utime - user time used by the current process.
  • stime - system time used by the current process.
  • cutime - user time used by current process and children.
  • cstime - system time used by current process and children.

注释

Warning

This function isn't reliable to use, it may return negative values for high times.

范例

Example #1 Example use of posix_times()

<?php

$times = posix_times();

print_r($times);
?>

以上例程的输出类似于：

Array
(
    [ticks] => 25814410
    [utime] => 1
    [stime] => 1
    [cutime] => 0
    [cstime] => 0
)

posix_strerror
posix_ttyname
POSIX 函数


Determine terminal device name

posix_times
posix_uname
POSIX 函数
PHP Manual

posix_ttyname

(PHP 4, PHP 5, PHP 7)

posix_ttyname — Determine terminal device name

说明

string posix_ttyname ( mixed $fd )

Returns a string for the absolute path to the current terminal device that is open on the file descriptor fd.

参数

fd

The file descriptor, which is expected to be either a file resource or an integer. An integer will be assumed to be a file descriptor that can be passed directly to the underlying system call.

In almost all cases, you will want to provide a file resource.

返回值

On success, returns a string of the absolute path of the fd. On failure, returns FALSE

posix_times
posix_uname
POSIX 函数


Get system name

posix_ttyname
程序执行
POSIX 函数
PHP Manual

posix_uname

(PHP 4, PHP 5, PHP 7)

posix_uname — Get system name

说明

array posix_uname ( void )

Gets information about the system.

Posix requires that assumptions must not be made about the format of the values, e.g. the assumption that a release may contain three digits or anything else returned by this function.

返回值

Returns a hash of strings with information about the system. The indices of the hash are

  • sysname - operating system name (e.g. Linux)
  • nodename - system name (e.g. valiant)
  • release - operating system release (e.g. 2.2.10)
  • version - operating system version (e.g. #4 Tue Jul 20 17:01:36 MEST 1999)
  • machine - system architecture (e.g. i586)
  • domainname - DNS domainname (e.g. example.com)

domainname is a GNU extension and not part of POSIX.1, so this field is only available on GNU systems or when using the GNU libc.

范例

Example #1 Example use of posix_uname()

<?php
$uname=posix_uname();
print_r($uname);
?>

以上例程的输出类似于：

Array
(
    [sysname] => Linux
    [nodename] => funbox
    [release] => 2.6.20-15-server
    [version] => #2 SMP Sun Apr 15 07:41:34 UTC 2007
    [machine] => i686
)

posix_ttyname
程序执行
POSIX 函数


系统程序执行

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 程序执行 函数
    • escapeshellarg — 把字符串转码为可以在 shell 命令里使用的参数
    • escapeshellcmd — shell 元字符转义
    • exec — 执行一个外部程序
    • passthru — 执行外部程序并且显示原始输出
    • proc_close — 关闭由 proc_open 打开的进程并且返回进程退出码
    • proc_get_status — 获取由 proc_open 函数打开的进程的信息
    • proc_nice — 修改当前进程的优先级
    • proc_open — 执行一个命令，并且打开用来输入/输出的文件指针。
    • proc_terminate — 杀除由 proc_open 打开的进程
    • shell_exec — 通过 shell 环境执行命令，并且将完整的输出以字符串的方式返回。
    • system — 执行外部程序，并且显示输出
posix_uname
简介
进程控制扩展


简介

这些函数提供执行系统本身命令的能力， 以及安全执行系统命令。

Note:

在 Windows 平台上，所有命令执行都是通过 cmd.exe 来完成的。 因此，调用这些函数的用户需要拥有运行此命令的相应权限。 但是当使用 bypass_shell 选项来调用 proc_open() 函数时是个例外。

程序执行
安装／配置
程序执行


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
程序执行


资源类型

本扩展定义了 process 资源， proc_open() 函数会返回此资源。

运行时配置
预定义常量
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
程序执行 函数
程序执行


程序执行 函数

注释

Warning

以加锁方式打开的文件（特别是在打开会话时）， 必须在执行后台程序之前关闭。

参见

这些函数和 执行运算符 是紧密关联的。 因此，当运行在 安全模式 是，你必须考虑 safe_mode_exec_dir 指示。

Table of Contents

  • escapeshellarg — 把字符串转码为可以在 shell 命令里使用的参数
  • escapeshellcmd — shell 元字符转义
  • exec — 执行一个外部程序
  • passthru — 执行外部程序并且显示原始输出
  • proc_close — 关闭由 proc_open 打开的进程并且返回进程退出码
  • proc_get_status — 获取由 proc_open 函数打开的进程的信息
  • proc_nice — 修改当前进程的优先级
  • proc_open — 执行一个命令，并且打开用来输入/输出的文件指针。
  • proc_terminate — 杀除由 proc_open 打开的进程
  • shell_exec — 通过 shell 环境执行命令，并且将完整的输出以字符串的方式返回。
  • system — 执行外部程序，并且显示输出
预定义常量
escapeshellarg
程序执行


把字符串转码为可以在 shell 命令里使用的参数

程序执行 函数
escapeshellcmd
程序执行 函数
PHP Manual

escapeshellarg

(PHP 4 >= 4.0.3, PHP 5, PHP 7)

escapeshellarg — 把字符串转码为可以在 shell 命令里使用的参数

说明

string escapeshellarg ( string $arg )

escapeshellarg() 将给字符串增加一个单引号并且能引用或者转码任何已经存在的单引号，这样以确保能够直接将一个字符串传入 shell 函数，并且还是确保安全的。对于用户输入的部分参数就应该使用这个函数。shell 函数包含 exec(), system() 执行运算符 。

参数

arg

需要被转码的参数。

返回值

转换之后字符串。

范例

Example #1 escapeshellarg() 的例子

<?php
system('ls '.escapeshellarg($dir));
?>

参见

  • escapeshellcmd() - shell 元字符转义
  • exec() - 执行一个外部程序
  • popen() - 打开进程文件指针
  • system() - 执行外部程序，并且显示输出
  • 执行运算符

程序执行 函数
escapeshellcmd
程序执行 函数


shell 元字符转义

escapeshellarg
exec
程序执行 函数
PHP Manual

escapeshellcmd

(PHP 4, PHP 5, PHP 7)

escapeshellcmd — shell 元字符转义

说明

string escapeshellcmd ( string $command )

escapeshellcmd() 对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。 此函数保证用户输入的数据在传送到 exec() 或 system() 函数，或者 执行操作符 之前进行转义。

反斜线（\）会在以下字符之前插入： #&;`|*?~<>^()[]{}$\, \x0A 和 \xFF。 ' 和 " 仅在不配对儿的时候被转义。 在 Windows 平台上，所有这些字符以及 % 都会被空格代替。（译注：实际测试发现在 Windows 平台是前缀 ^ 来转义的。）

参数

command

要转义的命令。

返回值

转义后的字符串。

范例

Example #1 escapeshellcmd() example

<?php
// 我们故意允许任意数量的参数
$command = './configure '.$_POST['configure_options'];

$escaped_command = escapeshellcmd($command);

system($escaped_command);
?>

Warning

escapeshellcmd() 应被用在完整的命令字符串上。 即使如此，攻击者还是可以传入任意数量的参数。 请使用 escapeshellarg() 函数 对单个参数进行转义。

参见

  • escapeshellarg() - 把字符串转码为可以在 shell 命令里使用的参数
  • exec() - 执行一个外部程序
  • popen() - 打开进程文件指针
  • system() - 执行外部程序，并且显示输出
  • 执行运算符

escapeshellarg
exec
程序执行 函数


执行一个外部程序

escapeshellcmd
passthru
程序执行 函数
PHP Manual

exec

(PHP 4, PHP 5, PHP 7)

exec — 执行一个外部程序

说明

string exec ( string $command [, array &$output [, int &$return_var ]] )

exec() 执行 command 参数所指定的命令。

参数

command

要执行的命令。

output

如果提供了 output 参数， 那么会用命令执行的输出填充此数组， 每行输出填充数组中的一个元素。 数组中的数据不包含行尾的空白字符，例如 \n 字符。 请注意，如果数组中已经包含了部分元素，exec() 函数会在数组末尾追加内容。如果你不想在数组末尾进行追加， 请在传入 exec() 函数之前 对数组使用 unset() 函数进行重置。

return_var

如果同时提供 output 和 return_var 参数， 命令执行后的返回状态会被写入到此变量。

返回值

命令执行结果的最后一行内容。 如果你需要获取未经处理的全部输出数据， 请使用 passthru() 函数。

如果想要获取命令的输出内容， 请确保使用 output 参数。

范例

Example #1 exec() 例程

<?php
// 输出运行中的 php/httpd 进程的创建者用户名
// （在可以执行 "whoami" 命令的系统上）
echo exec('whoami');
?>

注释

Warning

当用户提供的数据传入此函数，使用 escapeshellarg() 或 escapeshellcmd() 来确保用户欺骗系统从而执行任意命令。

Note:

如何程序使用此函数启动，为了能保持在后台运行，此程序必须将输出重定向到文件或其它输出流。否则会导致 PHP 挂起，直至程序执行结束。

Note: 安全模式 启用时，可仅可用 safe_mode_exec_dir 执行文件。实际上，现在不允许在到可执行的路径中存在 .. 组件。

Warning

安全模式 启用时，命令字符串会被 escapeshellcmd() 转换。因此，echo y | echo x 会变成 echo y \| echo x。

参见

  • system() - 执行外部程序，并且显示输出
  • passthru() - 执行外部程序并且显示原始输出
  • escapeshellcmd() - shell 元字符转义
  • pcntl_exec() - 在当前进程空间执行指定程序
  • 执行运算符

escapeshellcmd
passthru
程序执行 函数


执行外部程序并且显示原始输出

exec
proc_close
程序执行 函数
PHP Manual

passthru

(PHP 4, PHP 5, PHP 7)

passthru — 执行外部程序并且显示原始输出

说明

void passthru ( string $command [, int &$return_var ] )

同 exec() 函数类似， passthru() 函数 也是用来执行外部命令（command）的。 当所执行的 Unix 命令输出二进制数据， 并且需要直接传送到浏览器的时候， 需要用此函数来替代 exec() 或 system() 函数。 常用来执行诸如 pbmplus 之类的可以直接输出图像流的命令。 通过设置 Content-type 为 image/gif， 然后调用 pbmplus 程序输出 gif 文件， 就可以从 PHP 脚本中直接输出图像到浏览器。

参数

command

要执行的命令。

return_var

如果提供 return_var 参数， Unix 命令的返回状态会被记录到此参数。

返回值

没有返回值。

注释

Warning

当用户提供的数据传入此函数，使用 escapeshellarg() 或 escapeshellcmd() 来确保用户欺骗系统从而执行任意命令。

Note:

如何程序使用此函数启动，为了能保持在后台运行，此程序必须将输出重定向到文件或其它输出流。否则会导致 PHP 挂起，直至程序执行结束。

Note: 安全模式 启用时，可仅可用 safe_mode_exec_dir 执行文件。实际上，现在不允许在到可执行的路径中存在 .. 组件。

Warning

安全模式 启用时，命令字符串会被 escapeshellcmd() 转换。因此，echo y | echo x 会变成 echo y \| echo x。

参见

  • exec() - 执行一个外部程序
  • system() - 执行外部程序，并且显示输出
  • popen() - 打开进程文件指针
  • escapeshellcmd() - shell 元字符转义
  • 执行运算符

exec
proc_close
程序执行 函数


关闭由 proc_open 打开的进程并且返回进程退出码

passthru
proc_get_status
程序执行 函数
PHP Manual

proc_close

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

proc_close — 关闭由 proc_open() 打开的进程并且返回进程退出码

说明

int proc_close ( resource $process )

proc_close() 同 pclose() 函数类似，
只是 proc_close()
只能用来关闭由 proc_open() 函数打开的进程。
proc_close() 函数会等待进程终止，
并且返回进程的返回值。
如果有连接到进程的已经打开的管道，
那么需要在调用此函数之前调用 fclose() 函数来关闭管道，
否则会引发死锁 - 在管道处于打开状态时，子进程将不能退出。

参数

process

要关闭的由 proc_open() 打开的 resource 。

返回值

返回进程的终止状态码。 如果发生错误，将返回 -1。

passthru
proc_get_status
程序执行 函数


获取由 proc_open 函数打开的进程的信息

proc_close
proc_nice
程序执行 函数
PHP Manual

proc_get_status

(PHP 5, PHP 7)

proc_get_status — 获取由 proc_open() 函数打开的进程的信息

说明

array proc_get_status ( resource $process )

proc_get_status() 函数可以获取由 proc_open() 函数打开的进程的信息。

参数

process

要检查的由 proc_open() 打开的进程 resource。

返回值

如果调用成功，则返回一个包含了进程信息的 array，如果发生错误，返回 FALSE。 返回的数组包含下列元素：

元素 | 类型 | 描述
command | string | 传入 proc_open() 函数的命令行字符串。
pid | int | 进程 ID
running | bool | TRUE 表示进程还在运行中， FALSE 表示进程已经终止
signaled | bool | TRUE 表示子进程被未捕获的信号所终止。 在 Windows 平台永远为 FALSE。
stopped | bool | TRUE 表示子进程被信号停止。 在 Windows 平台永远为 FALSE。
exitcode | int | 进程的退出码（仅在 running 为 FALSE 时有意义）。 仅在第一次调用此函数时会返回实际的值， 后续的调用将返回 -1。
termsig | int | 导致子进程终止执行的信号值 （仅在 signaled 为 TRUE 时有意义）。
stopsig | int | 导致子进程停止执行的信号值 （仅在 stopped 为 TRUE 时有意义）。

参见

  • proc_open() - 执行一个命令，并且打开用来输入/输出的文件指针。

proc_close
proc_nice
程序执行 函数


修改当前进程的优先级

proc_get_status
proc_open
程序执行 函数
PHP Manual

proc_nice

(PHP 5, PHP 7)

proc_nice — 修改当前进程的优先级

说明

bool proc_nice ( int $increment )

proc_nice() 修改当前进程的优先级， 修改量由 increment 参数指定。 increment 为正数会降低当前进程优先级， 反之，为负数会提高优先级。

proc_nice() 和 proc_open() 函数以及和 proc_open() 相关的函数并无什么关系。

参数

increment

优先级变化值。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。。 如果发生错误，例如用户无权修改当前进程的优先级， 会生成 E_WARNING 级别的错误。

注释

Note: Availability

仅在具有 'nice' 能力的系统上才可以使用 proc_nice() 函数。 下列系统含有 'nice'：SVr4, SVID EXT, AT&T, X/OPEN, BSD 4.3。 也就是说，此函数在 Windows 平台上不可用。

proc_get_status
proc_open
程序执行 函数


执行一个命令，并且打开用来输入/输出的文件指针。

proc_nice
proc_terminate
程序执行 函数
PHP Manual

proc_open

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

proc_open — 执行一个命令，并且打开用来输入/输出的文件指针。

说明

resource proc_open ( string $cmd , array $descriptorspec , array &$pipes [, string $cwd [, array $env [, array $other_options ]]] )

类似 popen() 函数， 但是 proc_open() 提供了更加强大的控制程序执行的能力。

参数

cmd

要执行的命令

descriptorspec

一个索引数组。 数组的键表示描述符，数组元素值表示 PHP 如何将这些描述符传送至子进程。 0 表示标准输入（stdin），1 表示标准输出（stdout），2 表示标准错误（stderr）。

数组中的元素可以是：

  • 包含了要传送至进程的管道的描述信息。 第一个元素为描述符类型， 第二个元素是针对该描述符的选项。 有效的类型有：pipe （第二个元素可以是： r 向进程传送该管道的读取端，w 向进程传送该管道的写入端）， 以及 file（第二个元素为文件名）。
  • 表达一个真实文件描述符的流资源类型 （例如：已打开的文件，一个 socket 端口，STDIN）。

文件描述符的值不限于 0，1 和 2，你可以使用任何有效的文件描述符 并将其传送至子进程。 这使得你的脚本可以和其他脚本交互操作。 例如，可以通过指定文件描述符将密码以更加安全的方式 传送至诸如 PGP，GPG 和 openssl 程序， 同时也可以很方便的获取这些程序的状态信息。

pipes

将被置为索引数组， 其中的元素是被执行程序创建的管道对应到 PHP 这一端的文件指针。

cwd

要执行命令的初始工作目录。 必须是 绝对 路径， 设置此参数为 NULL 表示使用默认值（当前 PHP 进程的工作目录）。

env

要执行的命令所使用的环境变量。 设置此参数为 NULL 表示使用和当前 PHP 进程相同的环境变量。

other_options

你还可以指定一些附加选项。 目前支持的选项包括：

  • suppress_errors （仅用于 Windows 平台）： 设置为 TRUE 表示抑制本函数产生的错误。
  • bypass_shell （仅用于 Windows 平台）： 设置为 TRUE 表示绕过 cmd.exe shell。

返回值

返回表示进程的资源类型， 当使用完毕之后，请调用 proc_close() 函数来关闭此资源。 如果失败，返回 FALSE。

更新日志

版本 | 说明
5.2.1 | 为 other_options 参数增加 bypass_shell 选项。

范例

Example #1 proc_open() 例程

<?php
$descriptorspec = array(
   0 => array("pipe", "r"),  // 标准输入，子进程从此管道中读取数据
   1 => array("pipe", "w"),  // 标准输出，子进程向此管道中写入数据
   2 => array("file", "/tmp/error-output.txt", "a") // 标准错误，写入到一个文件
);

$cwd = '/tmp';
$env = array('some_option' => 'aeiou');

$process = proc_open('php', $descriptorspec, $pipes, $cwd, $env);

if (is_resource($process)) {
    // $pipes 现在看起来是这样的：
    // 0 => 可以向子进程标准输入写入的句柄
    // 1 => 可以从子进程标准输出读取的句柄
    // 错误输出将被追加到文件 /tmp/error-output.txt

    fwrite($pipes[0], '<?php print_r($_ENV); ?>');
    fclose($pipes[0]);

    echo stream_get_contents($pipes[1]);
    fclose($pipes[1]);

    // 切记：在调用 proc_close 之前关闭所有的管道以避免死锁。
    $return_value = proc_close($process);

    echo "command returned $return_value\n";
}
?>

以上例程的输出类似于：

Array
(
    [some_option] => aeiou
    [PWD] => /tmp
    [SHLVL] => 1
    [_] => /usr/local/bin/php
)
command returned 0

注释

Note:

Windows 兼容性：超过 2 的描述符也可以作为可继承的句柄传送到子进程。 但是，由于 Windows 的架构并不将文件描述符和底层句柄进行关联， 所以，子进程无法访问这样的句柄。 标准输入，标准输出和标注错误会按照预期工作。

Note:

如果你只需要单向的进程管道， 使用 popen() 函数会更加简单。

参见

  • popen() - 打开进程文件指针
  • exec() - 执行一个外部程序
  • system() - 执行外部程序，并且显示输出
  • passthru() - 执行外部程序并且显示原始输出
  • stream_select() - Runs the equivalent of the select() system call on the given arrays of streams with a timeout specified by tv_sec and tv_usec
  • The 执行操作符

proc_nice
proc_terminate
程序执行 函数


杀除由 proc_open 打开的进程

proc_open
shell_exec
程序执行 函数
PHP Manual

proc_terminate

(PHP 5, PHP 7)

proc_terminate — 杀除由 proc_open 打开的进程

说明

bool proc_terminate ( resource $process [, int $signal = 15 ] )

向 process （由 proc_open() 函数创建） 发送信号通知其终止。 proc_terminate() 调用之后将会立即返回， 而不会等待进程终止。

可以使用 proc_terminate() 终止进程 并且继续其他的任务。 可以使用 proc_get_status() 函数来检查进程是否已经终止。

参数

process

由 proc_open() 打开的 resource。

signal

可选参数，仅用于 POSIX 操作系统。 表示调用系统命令 kill(2) 来向进程发送的信号。 默认值为 SIGTERM。

返回值

返回进程的终止状态。

更新日志

版本 | 说明
5.2.2 | 之前的版本被用来销毁进程 resource。

参见

  • proc_open() - 执行一个命令，并且打开用来输入/输出的文件指针。
  • proc_close() - 关闭由 proc_open 打开的进程并且返回进程退出码
  • proc_get_status() - 获取由 proc_open 函数打开的进程的信息

proc_open
shell_exec
程序执行 函数


通过 shell 环境执行命令，并且将完整的输出以字符串的方式返回。

proc_terminate
system
程序执行 函数
PHP Manual

shell_exec

(PHP 4, PHP 5, PHP 7)

shell_exec — 通过 shell 环境执行命令，并且将完整的输出以字符串的方式返回。

说明

string shell_exec ( string $cmd )

本函数同 执行操作符。

参数

cmd

要执行的命令。

返回值

命令执行的输出。 如果执行过程中发生错误或者进程不产生输出，则返回 NULL。

Note:

当进程执行过程中发生错误，或者进程不产生输出的情况下，都会返回 NULL， 所以，使用本函数无法通过返回值检测进程是否成功执行。 如果需要检查进程执行的退出码，请使用 exec() 函数。

范例

Example #1 shell_exec() 例程

<?php
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
?>

注释

Note:

当 PHP 运行在 安全模式 时，不能使用此函数。

参见

  • exec() - 执行一个外部程序
  • escapeshellcmd() - shell 元字符转义

proc_terminate
system
程序执行 函数


执行外部程序，并且显示输出

shell_exec
pthreads
程序执行 函数
PHP Manual

system

(PHP 4, PHP 5, PHP 7)

system — 执行外部程序，并且显示输出

说明

string system ( string $command [, int &$return_var ] )

同 C 版本的 system() 函数一样， 本函数执行 command 参数所指定的命令， 并且输出执行结果。

如果 PHP 运行在服务器模块中， system() 函数还会尝试在每行输出完毕之后， 自动刷新 web 服务器的输出缓存。

如果要获取一个命令未经任何处理的 原始输出， 请使用 passthru() 函数。

参数

command

要执行的命令。

return_var

如果提供 return_var 参数， 则外部命令执行后的返回状态将会被设置到此变量中。

返回值

成功则返回命令输出的最后一行， 失败则返回 FALSE

范例

Example #1 system() 例程

<?php
echo '<pre>';

// 输出 shell 命令 "ls" 的返回结果
// 并且将输出的最后一样内容返回到 $last_line。
// 将命令的返回值保存到 $retval。
$last_line = system('ls', $retval);

// 打印更多信息
echo '
</pre>
<hr />Last line of the output: ' . $last_line . '
<hr />Return value: ' . $retval;
?>

注释

Warning

当用户提供的数据传入此函数，使用 escapeshellarg() 或 escapeshellcmd() 来确保用户欺骗系统从而执行任意命令。

Note:

如何程序使用此函数启动，为了能保持在后台运行，此程序必须将输出重定向到文件或其它输出流。否则会导致 PHP 挂起，直至程序执行结束。

Note: 安全模式 启用时，可仅可用 safe_mode_exec_dir 执行文件。实际上，现在不允许在到可执行的路径中存在 .. 组件。

Warning

安全模式 启用时，命令字符串会被 escapeshellcmd() 转换。因此，echo y | echo x 会变成 echo y \| echo x。

参见

  • exec() - 执行一个外部程序
  • passthru() - 执行外部程序并且显示原始输出
  • popen() - 打开进程文件指针
  • escapeshellcmd() - shell 元字符转义
  • pcntl_exec() - 在当前进程空间执行指定程序
  • 执行操作符

shell_exec
pthreads
程序执行 函数


pthreads

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
  • 预定义常量
  • Threaded — Threaded 类
    • Threaded::chunk — 操作
    • Threaded::count — Manipulation
    • Threaded::extend — Runtime Manipulation
    • Threaded::from — Creation
    • Threaded::getTerminationInfo — Error Detection
    • Threaded::isRunning — State Detection
    • Threaded::isTerminated — State Detection
    • Threaded::isWaiting — State Detection
    • Threaded::lock — Synchronization
    • Threaded::merge — Manipulation
    • Threaded::notify — Synchronization
    • Threaded::pop — Manipulation
    • Threaded::run — Execution
    • Threaded::shift — Manipulation
    • Threaded::synchronized — Synchronization
    • Threaded::unlock — Synchronization
    • Threaded::wait — Synchronization
  • Thread — Thread 类
    • Thread::detach — 执行
    • Thread::getCreatorId — 识别
    • Thread::getCurrentThread — 识别
    • Thread::getCurrentThreadId — 识别
    • Thread::getThreadId — 识别
    • Thread::globally — 执行
    • Thread::isJoined — 状态监测
    • Thread::isStarted — 状态检测
    • Thread::join — 同步
    • Thread::kill — 执行
    • Thread::start — 执行
  • Worker — Worker 类
    • Worker::collect — Collect references to completed tasks
    • Worker::getStacked — 栈分析
    • Worker::isShutdown — 状态检测
    • Worker::isWorking — 状态检测
    • Worker::shutdown — 同步
    • Worker::stack — 栈操作
    • Worker::unstack — 栈操作
  • Collectable — The Collectable interface
    • Collectable::isGarbage — Determine whether an object has been marked as garbage
    • Collectable::setGarbage — Mark an object as garbage
  • Modifiers — 方法修饰符
  • Pool — Pool 类
    • Pool::collect — 回收已完成任务的引用
    • Pool::__construct — 创建新的 Worker 对象池
    • Pool::resize — 改变 Pool 对象的可容纳 Worker 对象的数量
    • Pool::shutdown — 停止所有的 Worker 对象
    • Pool::submit — 提交对象以执行
    • Pool::submitTo — 提交对象以执行
  • Mutex — Mutex 类
    • Mutex::create — 创建一个互斥量
    • Mutex::destroy — 销毁互斥量
    • Mutex::lock — 给互斥量加锁
    • Mutex::trylock — 尝试给互斥量加锁
    • Mutex::unlock — 释放互斥量上的锁
  • Cond — Cond 类
    • Cond::broadcast — 广播条件变量
    • Cond::create — 创建一个条件变量
    • Cond::destroy — 销毁条件变量
    • Cond::signal — 发送唤醒信号
    • Cond::wait — 等待
system
简介
进程控制扩展


简介

pthreads 是一组允许用户在 PHP 中使用多线程技术的面向对象的 API。 它提供了创建多线程应用所需的全套工具，无论是 Web 应用还是控制台应用。 通过使用 Thread， Worker 以及 Threaded 对象，PHP 应用可以创建、读取、写入以及执行多线程应用，并可以在多个线程之间进行同步控制。

Threaded 对象： Threaded 对象提供支持 pthreads 操作的基本功能，包括同步方法以及其他对程序员很有帮助的接口。

Thread 对象： 通过继承 pthreads 中提供的 Thread 对象并实现 run 方法，用户可以创建自己的 Thread 对象。 只要线程上下文中持有某个 Thread 对象的引用，就可以读/写该对象的属性，也可以调用该对象的公有（public）或者受保护（protected）的方法。 当在创建 Thread 对象的进程或线程上下文中调用该对象的 start 方法时，pthreads 扩展会在另外的独立线程中执行该对象的 run 方法。 仅有创建 Thread 对象的线程/进程方可开始（start）或者加入（join）这个 Thread 对象。

Worker 对象： Worker 是有状态的线程对象，它在线程开始之后就可用，除非代码中显式地关闭线程，否则该对象在线程对象超出作用范围之后才会失效。 持有 Worker 对象引用的线程上下文可以向 Worker 中入栈其他线程对象，Worker 对象将在独立线程中执行入栈对象的代码。 Woker 对象的 run 方法会在它的栈中入栈对象之前执行，这样就可以进行一些必需的资源初始化工作。

Pool 对象： Pool 对象是 Worker 线程对象池，可以用来在多个 Worker 对象之间分发 Threaded 对象，它可以很好的处理对象应用。 Pool 对象从 1.0.0 版本开始引入，现在已经成为最易用且高效多线程编程方式。

Caution

Pool 是标准 PHP 对象，所以不可以在多个线程上下文中共享同一个 Pool 对象。

线程间同步： 由 pthreads 扩展创建的所有对象拥有内置的线程间同步机制，和 Java 语言很类似，使用 ::wait 和 :: notify 方法。 调用某一个对象的 ::wait 方法会导致当前线程上下文进入等待状态，等待另外一个线程上下文调用同一个对象的 ::notify 方法。 为 PHP Threaded 对象提供了强有力的线程间同步控制机制。

Caution

应用中会用在多线程场景中的对象都应该从 Threaded 类继承。

方法修饰符： Threaded 对象中的受保护方法（protected）是被 pthreads 保护的，也就是说，在同一时间，只有一个线程可以访问该方法。 在执行过程中，私有方法（private）只能被该对象本身调用。

数据存储： 一般来说，任何可以序列化的数据类型都可以作为 Threaded 对象的属性，它可以从持有该对象引用的任何线程上下文读/写。 并不是所有的数据都采用序列化方式存储，比如基本类型就是以其真实形态存储的。 对于不是 Threaded 派生的对象，例如复杂类型、数组以及对象等，都是序列化存储的，可以从持有 Threaded 对象引用的任何线程上下文中读取和写入， 区别就在于对于 Threaed 的派生对象，设置它的成员变量的过程是在独立线程上下文中执行的。 对于 Threaded 派生对象，在同一时间，不同的线程上下文都可以从该对象中读取到同样的数据。

静态成员： 当创建新的线程上下文（Thread 或 Worker 对象）的时候，静态成员会被拷贝到新的上下文中。出于安全考虑，资源类型以及包含内部状态的对象类型的静态成员会被置空。 实际上这个特性实现了类似线程本地存储的功能。举例说明，假设某个类拥有包含数据库连接信息以及数据库连接对象静态成员， 那么当新的线程上下文启动的时候，仅有数据库连接信息会被复制到新上下文中，而数据库连接对象并不会被复制。 所以，需要在新的上下文中根据复制过来的数据库连接基本信息来初始化数据库连接对象，新创建的数据库连接对象是独立的， 不影响在原上下文中的数据库连接对象。

Caution

当使用 print_r, var_dump 或者其他函数来进行对象调试的时候，是没有递归保护机制的。

Note:

资源类型： PHP 中很多使用到 Resource 资源类型的扩展或函数并未针对多线程场景进行特殊设计，也就是说，虽然 pthreads 扩展提供了 在多个线程上下文中共享资源类型变量的能力，但是通常来说，你应该把它们视为非线程安全的。 所以，如果要在多个线程上下文中共享资源类型的变量，你应该特别谨慎对待。

Caution

为了提供一个稳定的运行环境，pthreads 扩展在执行过程中会有一些必需的额外限制。

pthreads
安装／配置
pthreads


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
简介
需求
pthreads


需求

要使用 pthreads 扩展，需要构建 PHP 时启用 ZTS （Zend Thread Safety）。（--enable-maintainer-zts 选项， Windows 平台为 --enable-zts）

Caution

ZTS 是构建期配置选项，只能通过构建时通过选项启用，无法在构建之后启用。

要构建 pthreads 扩展，你需要启用了 ZTS 的 PHP 以及 Posix Threads 头文件（pthread.h）。对于 Windows 平台，需要使用 redhat 的 pthread-w32 项目中的 pthread.h 头文件。

安装／配置
安装
安装／配置


安装

pthreads 扩展由 PECL 主持，使用 » github 管理源代码。 使用标准的 PECL 包安装方式就可以完成安装：» http://pecl.php.net/package/pthreads。

Windows 用户可以从 » PECL 下载已经构建的二进制发行包。

Caution

Windows 用户需要将 pthreadVC2.dll （包含在 Windows 版二进制发行包中）所在路径加入到 PATH 环境变量中。

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

PTHREADS_INHERIT_ALL (integer)
线程的默认选项。线程开始的时候，pthreads 扩展会将环境复制到线程上下文中。
PTHREADS_INHERIT_NONE (integer)
新线程开始时，不继承任何内容。
PTHREADS_INHERIT_INI (integer)
新线程开始时，仅继承 INI 配置。
PTHREADS_INHERIT_CONSTANTS (integer)
新线程开始时，继承用户定义的常量。
PTHREADS_INHERIT_CLASSES (integer)
新线程开始时，继承用户定义的类。
PTHREADS_INHERIT_FUNCTIONS (integer)
新线程开始时，继承用户定义的函数。
PTHREADS_INHERIT_INCLUDES (integer)
新线程开始时，继承包含文件。
PTHREADS_INHERIT_COMMENTS (integer)
新线程开始时，继承所有的注释。
PTHREADS_ALLOW_HEADERS (integer)
允许新线程向标准输出发送头信息（通常情况下是被禁止的）。

运行时配置
Threaded
pthreads


Threaded 类

(PECL pthreads >= 2.0.0)

简介

Threaded 对象提供支持 pthreads 操作的基本功能，包括同步方法以及其他对程序员很有帮助的接口。

重要的是，Threaded 提供了隐式的线程安全机制，这个对象中的所有操作都是线程安全的。

类摘要

Threaded implements Traversable , Countable , ArrayAccess {
/* 方法 */
public array chunk ( integer $size , boolean $preserve )
public integer count ( void )
public bool extend ( string $class )
public Threaded from ( Closure $run [, Closure $construct [, array $args ]] )
public array getTerminationInfo ( void )
public boolean isRunning ( void )
public boolean isTerminated ( void )
public boolean isWaiting ( void )
public boolean lock ( void )
public boolean merge ( mixed $from [, mixed $overwrite ] )
public boolean notify ( void )
public boolean pop ( void )
public void run ( void )
public boolean shift ( void )
public mixed synchronized ( Closure $block [, mixed $... ] )
public boolean unlock ( void )
public boolean wait ([ integer $timeout ] )
}

Table of Contents

  • Threaded::chunk — 操作
  • Threaded::count — Manipulation
  • Threaded::extend — Runtime Manipulation
  • Threaded::from — Creation
  • Threaded::getTerminationInfo — Error Detection
  • Threaded::isRunning — State Detection
  • Threaded::isTerminated — State Detection
  • Threaded::isWaiting — State Detection
  • Threaded::lock — Synchronization
  • Threaded::merge — Manipulation
  • Threaded::notify — Synchronization
  • Threaded::pop — Manipulation
  • Threaded::run — Execution
  • Threaded::shift — Manipulation
  • Threaded::synchronized — Synchronization
  • Threaded::unlock — Synchronization
  • Threaded::wait — Synchronization
预定义常量
Threaded::chunk
pthreads


操作

Threaded
Threaded::count
Threaded
PHP Manual

Threaded::chunk

(PECL pthreads >= 2.0.0)

Threaded::chunk — 操作

说明

public array Threaded::chunk ( integer $size , boolean $preserve )

获取给定数量的对象属性表，可以选择是否保留键名称。

参数

size

要获取的条目数量

preserve

保留成员原有的键名称，默认为 false

返回值

数组对象，包含从对象属性表中返回的给定数量的条目。

范例

Example #1 获取对象属性表中的部分条目

<?php
$safe = new Threaded();

while (count($safe) < 10) {
    $safe[] = count($safe);
}

var_dump($safe->chunk(5));
?>

以上例程会输出：

array(5) {
  [0]=>
  int(0)
  [1]=>
  int(1)
  [2]=>
  int(2)
  [3]=>
  int(3)
  [4]=>
  int(4)
}

Threaded
Threaded::count
Threaded


Manipulation

Threaded::chunk
Threaded::extend
Threaded
PHP Manual

Threaded::count

(PECL pthreads >= 2.0.0)

Threaded::count — Manipulation

说明

public integer Threaded::count ( void )

返回对象的属性数量

参数

此函数没有参数。

返回值

范例

Example #1 计算对象中的属性数量

<?php
$safe = new Threaded();

while (count($safe) < 10) {
    $safe[] = count($safe);
}

var_dump(count($safe));
?>

以上例程会输出：

int(10)

Threaded::chunk
Threaded::extend
Threaded


Runtime Manipulation

Threaded::count
Threaded::from
Threaded
PHP Manual

Threaded::extend

(PECL pthreads >= 2.0.8)

Threaded::extend — Runtime Manipulation

说明

public bool Threaded::extend ( string $class )

Makes thread safe standard class at runtime

参数

class

The class to extend

返回值

A boolean indication of success

范例

Example #1 Runtime inheritance

<?php
class My {}

Threaded::extend(My::class);

$my = new My();

var_dump($my instanceof Threaded);
?>

以上例程会输出：

bool(true)

Threaded::count
Threaded::from
Threaded


Creation

Threaded::extend
Threaded::getTerminationInfo
Threaded
PHP Manual

Threaded::from

(PECL pthreads >= 2.0.9)

Threaded::from — Creation

Warning

This method has been removed in pthreads v3.

说明

public Threaded Threaded::from ( Closure $run [, Closure $construct [, array $args ]] )

Creates an anonymous Threaded object from closures

参数

run

The closure to use for ::run

construct

The constructor to use for anonymous object

args

The arguments to pass to constructor

返回值

A new anonymous Threaded object

范例

Example #1 Thread safe objects from closures

<?php
$pool = new Pool(4);
$pool->submit(Collectable::from(function(){
    echo "Hello World";
    $this->setGarbage();
}));
/* ... */
$pool->shutdown();
?>

以上例程会输出：

Hello World

Threaded::extend
Threaded::getTerminationInfo
Threaded


Error Detection

Threaded::from
Threaded::isRunning
Threaded
PHP Manual

Threaded::getTerminationInfo

(PECL pthreads < 3.0.0)

Threaded::getTerminationInfo — Error Detection

说明

public array Threaded::getTerminationInfo ( void )

返回对象的终端错误信息

参数

此函数没有参数。

返回值

包含终端信息的数组对象

范例

Example #1 检测线程运行时的致命错误

<?php
class My extends Thread {
    public function run() {
        @not_found();
    }
}

$my = new My();
$my->start();
$my->join();

var_dump($my->isTerminated(), $my->getTerminationInfo());
?>

以上例程会输出：

bool(true)
array(4) {
  ["scope"]=>
  string(2) "My"
  ["function"]=>
  string(3) "run"
  ["file"]=>
  string(29) "/usr/src/pthreads/sandbox.php"
  ["line"]=>
  int(4)
}

Threaded::from
Threaded::isRunning
Threaded


State Detection

Threaded::getTerminationInfo
Threaded::isTerminated
Threaded
PHP Manual

Threaded::isRunning

(PECL pthreads >= 2.0.0)

Threaded::isRunning — State Detection

说明

public boolean Threaded::isRunning ( void )

对象是否正在运行

参数

此函数没有参数。

返回值

表示运行状态的布尔值

Note:

如果对象的 run 方法正在执行，则视该对象为处于运行状态

范例

Example #1 检测对象状态

<?php
class My extends Thread {
    public function run() {
        $this->synchronized(function($thread){
            if (!$thread->done)
                $thread->wait();
        }, $this);
    }
}
$my = new My();
$my->start();
var_dump($my->isRunning());
$my->synchronized(function($thread){
    $thread->done = true;
    $thread->notify();
}, $my);
?>

以上例程会输出：

bool(true)

Threaded::getTerminationInfo
Threaded::isTerminated
Threaded


State Detection

Threaded::isRunning
Threaded::isWaiting
Threaded
PHP Manual

Threaded::isTerminated

(PECL pthreads >= 2.0.0)

Threaded::isTerminated — State Detection

说明

public boolean Threaded::isTerminated ( void )

检测是否因致命错误或未捕获的异常而导致执行过程异常终止

参数

此函数没有参数。

返回值

布尔值，表示是否异常终止

范例

Example #1 检测对象状态

<?php
class My extends Thread {
    public function run() {
        i_do_not_exist();
    }
}
$my = new My();
$my->start();
$my->join();
var_dump($my->isTerminated());
?>

以上例程会输出：

bool(true)

Threaded::isRunning
Threaded::isWaiting
Threaded


State Detection

Threaded::isTerminated
Threaded::lock
Threaded
PHP Manual

Threaded::isWaiting

(PECL pthreads < 3.0.0)

Threaded::isWaiting — State Detection

说明

public boolean Threaded::isWaiting ( void )

检测对象是否在等待其他线程唤醒

参数

此函数没有参数。

返回值

布尔值，表示是否处于等待唤醒状态

范例

Example #1 检测对象状态

<?php
class My extends Thread {
    public function run() {
        $this->synchronized(function($thread){
            if (!$this->done)
                $thread->wait();
        }, $this);
    }

    protected $done;
}
$my = new My();
$my->start();
$my->synchronized(function($thread){
    var_dump(
        $thread->isWaiting());
    $thread->done = true;
    $thread->notify();
}, $my);
?>

以上例程会输出：

bool(true)

Threaded::isTerminated
Threaded::lock
Threaded


Synchronization

Threaded::isWaiting
Threaded::merge
Threaded
PHP Manual

Threaded::lock

(PECL pthreads < 3.0.0)

Threaded::lock — Synchronization

说明

public boolean Threaded::lock ( void )

给对象属性表加锁

参数

此函数没有参数。

返回值

布尔值，表示加锁是否成功

范例

Example #1 给对象属性加锁

<?php
class My extends Thread {
    public function run() {
        var_dump($this->lock());
        /** 其他线程无法进行读/写操作 **/
        var_dump($this->unlock());
        /** 其他线程可以进行读/写操作 */
    }
}
$my = new My();
$my->start();
?>

以上例程会输出：

bool(true)
bool(true)

Threaded::isWaiting
Threaded::merge
Threaded


Manipulation

Threaded::lock
Threaded::notify
Threaded
PHP Manual

Threaded::merge

(PECL pthreads >= 2.0.0)

Threaded::merge — Manipulation

说明

public boolean Threaded::merge ( mixed $from [, mixed $overwrite ] )

将数据合并到当前对象

参数

from

要合并的数据

overwrite

如果现有对象已经存在同键的数据，是否覆盖。默认为 true

返回值

布尔值，表示操作是否成功

范例

Example #1 合并数据到对象的属性表

<?php
$array = [];

while (count($array) < 10)
    $array[] = count($array);

$stdClass = new stdClass();
$stdClass->foo = "foo";
$stdClass->bar = "bar";
$stdClass->baz = "baz";

$safe = new Threaded();
$safe->merge($array);
$safe->merge($stdClass);

var_dump($safe);
?>

以上例程会输出：

object(Threaded)#2 (13) {
  ["0"]=>
  int(0)
  ["1"]=>
  int(1)
  ["2"]=>
  int(2)
  ["3"]=>
  int(3)
  ["4"]=>
  int(4)
  ["5"]=>
  int(5)
  ["6"]=>
  int(6)
  ["7"]=>
  int(7)
  ["8"]=>
  int(8)
  ["9"]=>
  int(9)
  ["foo"]=>
  string(3) "foo"
  ["bar"]=>
  string(3) "bar"
  ["baz"]=>
  string(3) "baz"
}

Threaded::lock
Threaded::notify
Threaded


Synchronization

Threaded::merge
Threaded::pop
Threaded
PHP Manual

Threaded::notify

(PECL pthreads >= 2.0.0)

Threaded::notify — Synchronization

说明

public boolean Threaded::notify ( void )

向对象发送唤醒通知

参数

此函数没有参数。

返回值

布尔值，表示操作是否成功

范例

Example #1 等待和唤醒

<?php
class My extends Thread {
    public function run() {
        /** 让线程等待 **/
        $this->synchronized(function($thread){
            if (!$thread->done)
                $thread->wait();
        }, $this);
    }
}
$my = new My();
$my->start();
/** 向处于等待状态的线程发送唤醒通知 **/
$my->synchronized(function($thread){
    $thread->done = true;
    $thread->notify();
}, $my);
var_dump($my->join());
?>

以上例程会输出：

bool(true)

Threaded::merge
Threaded::pop
Threaded


Manipulation

Threaded::notify
Threaded::run
Threaded
PHP Manual

Threaded::pop

(PECL pthreads >= 2.0.0)

Threaded::pop — Manipulation

说明

public boolean Threaded::pop ( void )

弹出对象属性表中的最后一项数据

返回值

对象属性表中最后一项数据

范例

Example #1 弹出对象属性表中的最后一项数据

<?php
$safe = new Threaded();

while (count($safe) < 10)
    $safe[] = count($safe);

var_dump($safe->pop());
?>

以上例程会输出：

int(9)

Threaded::notify
Threaded::run
Threaded


Execution

Threaded::pop
Threaded::shift
Threaded
PHP Manual

Threaded::run

(PECL pthreads >= 2.0.0)

Threaded::run — Execution

说明

public void Threaded::run ( void )

如果需要在多线程环境下执行代码，必须实现本方法

参数

此函数没有参数。

返回值

无返回值。即使代码中 run 方法有返回值，也会被忽略

Threaded::pop
Threaded::shift
Threaded


Manipulation

Threaded::run
Threaded::synchronized
Threaded
PHP Manual

Threaded::shift

(PECL pthreads >= 2.0.0)

Threaded::shift — Manipulation

说明

public boolean Threaded::shift ( void )

弹出对象属性表中第一项数据

返回值

对象属性表中的第一项数据

范例

Example #1 弹出对象属性表中第一项数据

<?php
$safe = new Threaded();

while (count($safe) < 10)
    $safe[] = count($safe);

var_dump($safe->shift());
?>

以上例程会输出：

int(0)

Threaded::run
Threaded::synchronized
Threaded


Synchronization

Threaded::shift
Threaded::unlock
Threaded
PHP Manual

Threaded::synchronized

(PECL pthreads >= 2.0.0)

Threaded::synchronized — Synchronization

说明

public mixed Threaded::synchronized ( Closure $block [, mixed $... ] )

在发起调用的线程上下文中获取对象同步锁，然后同步执行代码块

参数

block

要执行的代码块

...

传送给代码块的不定长参数

返回值

代码块的返回值

范例

Example #1 同步

<?php
class My extends Thread {
    public function run() {
        $this->synchronized(function($thread){
            if (!$thread->done)
                $thread->wait();
        }, $this);
    }
}
$my = new My();
$my->start();
$my->synchronized(function($thread){
    $thread->done = true;
    $thread->notify();
}, $my);
var_dump($my->join());
?>

以上例程会输出：

bool(true)

Threaded::shift
Threaded::unlock
Threaded


Synchronization

Threaded::synchronized
Threaded::wait
Threaded
PHP Manual

Threaded::unlock

(PECL pthreads < 3.0.0)

Threaded::unlock — Synchronization

说明

public boolean Threaded::unlock ( void )

从调用上下文中解锁被引用的对象

参数

此函数没有参数。

返回值

布尔值，表示操作是否成功

范例

Example #1 给对象属性表加锁

<?php
class My extends Thread {
    public function run() {
        var_dump($this->lock());
        /** 其他线程无法执行读/写操作 **/
        var_dump($this->unlock());
        /** 其他线程可以执行读/写操作 */
    }
}
$my = new My();
$my->start();
?>

以上例程会输出：

bool(true)
bool(true)

Threaded::synchronized
Threaded::wait
Threaded


Synchronization

Threaded::unlock
Thread
Threaded
PHP Manual

Threaded::wait

(PECL pthreads >= 2.0.0)

Threaded::wait — Synchronization

说明

public boolean Threaded::wait ([ integer $timeout ] )

让发起调用的线程上下文进入等待状态，直到收到其他线程的唤醒通知

参数

timeout

可选参数，等待时间，以毫秒计

返回值

布尔值，表示操作是否成功

范例

Example #1 等待和唤醒

<?php
class My extends Thread {
    public function run() {
        /** 让本线程进入等待状态 **/
        $this->synchronized(function($thread){
            if (!$thread->done)
                $thread->wait();
        }, $this);
    }
}
$my = new My();
$my->start();
/** 向处于等待状态的线程发送唤醒通知 **/
$my->synchronized(function($thread){
    $thread->done = true;
    $thread->notify();
}, $my);
var_dump($my->join());
?>

以上例程会输出：

bool(true)

Threaded::unlock
Thread
Threaded


Thread 类

(PECL pthreads >= 2.0.0)

简介

当调用 Thread 对象的 start 方法时，该对象的 run 方法中的代码将在独立线程中异步执行。

run 方法中的代码执行完毕之后，独立线程立即退出，并且等待合适的时机由创建者线程加入（join）。

Warning

依赖于引擎本身的机制检测何时加入线程可能引发非预期的行为，程序员应该尽可能的显式控制线程加入的时机。

类摘要

Thread extends Threaded implements Countable , Traversable , ArrayAccess {
/* 方法 */
public void detach ( void )
public integer getCreatorId ( void )
public static Thread getCurrentThread ( void )
public static integer getCurrentThreadId ( void )
public integer getThreadId ( void )
public static mixed globally ( void )
public boolean isJoined ( void )
public boolean isStarted ( void )
public boolean join ( void )
public void kill ( void )
public boolean start ([ integer $options ] )
/* 继承的方法 */
public array Threaded::chunk ( integer $size , boolean $preserve )
public integer Threaded::count ( void )
public bool Threaded::extend ( string $class )
public Threaded Threaded::from ( Closure $run [, Closure $construct [, array $args ]] )
public array Threaded::getTerminationInfo ( void )
public boolean Threaded::isRunning ( void )
public boolean Threaded::isTerminated ( void )
public boolean Threaded::isWaiting ( void )
public boolean Threaded::lock ( void )
public boolean Threaded::merge ( mixed $from [, mixed $overwrite ] )
public boolean Threaded::notify ( void )
public boolean Threaded::pop ( void )
public void Threaded::run ( void )
public boolean Threaded::shift ( void )
public mixed Threaded::synchronized ( Closure $block [, mixed $... ] )
public boolean Threaded::unlock ( void )
public boolean Threaded::wait ([ integer $timeout ] )
}

Table of Contents

  • Thread::detach — 执行
  • Thread::getCreatorId — 识别
  • Thread::getCurrentThread — 识别
  • Thread::getCurrentThreadId — 识别
  • Thread::getThreadId — 识别
  • Thread::globally — 执行
  • Thread::isJoined — 状态监测
  • Thread::isStarted — 状态检测
  • Thread::join — 同步
  • Thread::kill — 执行
  • Thread::start — 执行
Threaded::wait
Thread::detach
pthreads


执行

Thread
Thread::getCreatorId
Thread
PHP Manual

Thread::detach

(PECL pthreads < 3.0.0)

Thread::detach — 执行

说明

public void Thread::detach ( void )

从调用上下文中将引用线程分离出来，非常危险！

Warning

本方法会引发未定义的、不安全的行为。 通常情况下不会用到本方法，提供这个方法主要是出于完备性以及高级用法的考虑。

参数

此函数没有参数。

返回值

Thread
Thread::getCreatorId
Thread


识别

Thread::detach
Thread::getCurrentThread
Thread
PHP Manual

Thread::getCreatorId

(PECL pthreads >= 2.0.0)

Thread::getCreatorId — 识别

说明

public integer Thread::getCreatorId ( void )

返回创建当前线程的线程ID。

参数

此函数没有参数。

返回值

线程ID，数字格式

范例

Example #1 返回创建线程的线程或进程ID

<?php
class My extends Thread {
    public function run() {
        printf("%s created by Thread #%lu\n", __CLASS__, $this->getCreatorId());
    }
}
$my = new My();
$my->start();
?>

以上例程会输出：

My created by Thread #123456778899

Thread::detach
Thread::getCurrentThread
Thread


识别

Thread::getCreatorId
Thread::getCurrentThreadId
Thread
PHP Manual

Thread::getCurrentThread

(PECL pthreads >= 2.0.0)

Thread::getCurrentThread — 识别

说明

public static Thread Thread::getCurrentThread ( void )

获取当前执行线程的引用。

参数

此函数没有参数。

返回值

表示当前执行线程的对象。

范例

Example #1 获取当前执行线程

<?php
class My extends Thread {
    public function run() {
        var_dump(Thread::getCurrentThread());
    }
}
$my = new My();
$my->start();
?>

以上例程会输出：

object(My)#2 (0) {
}

Thread::getCreatorId
Thread::getCurrentThreadId
Thread


识别

Thread::getCurrentThread
Thread::getThreadId
Thread
PHP Manual

Thread::getCurrentThreadId

(PECL pthreads >= 2.0.0)

Thread::getCurrentThreadId — 识别

说明

public static integer Thread::getCurrentThreadId ( void )

返回当前执行线程的ID

参数

此函数没有参数。

返回值

线程ID，数字格式

范例

Example #1 返回当前执行线程的ID

<?php
class My extends Thread {
    public function run() {
        printf("%s is Thread #%lu\n", __CLASS__, Thread::getCurrentThreadId());
    }
}
$my = new My();
$my->start();
?>

以上例程会输出：

My is Thread #123456778899

Thread::getCurrentThread
Thread::getThreadId
Thread


识别

Thread::getCurrentThreadId
Thread::globally
Thread
PHP Manual

Thread::getThreadId

(PECL pthreads >= 2.0.0)

Thread::getThreadId — 识别

说明

public integer Thread::getThreadId ( void )

返回引用线程的ID

参数

此函数没有参数。

返回值

线程ID，数字格式

范例

Example #1 返回引用线程的ID

<?php
class My extends Thread {
    public function run() {
        printf("%s is Thread #%lu\n", __CLASS__, $this->getThreadId());
    }
}
$my = new My();
$my->start();
?>

以上例程会输出：

My is Thread #123456778899

Thread::getCurrentThreadId
Thread::globally
Thread


执行

Thread::getThreadId
Thread::isJoined
Thread
PHP Manual

Thread::globally

(PECL pthreads < 3.0.0)

Thread::globally — 执行

说明

public static mixed Thread::globally ( void )

在全局范围中执行代码块

参数

此函数没有参数。

返回值

被调用代码块的返回值

范例

Example #1 在全局范围执行代码块

<?php
class My extends Thread {
    public function run() {
        global $std;

        Thread::globally(function(){
            $std = new stdClass;
        });

        var_dump($std);
    }
}
$my = new My();
$my->start();
?>

以上例程会输出：

object(stdClass)#3 (0) {
}

Thread::getThreadId
Thread::isJoined
Thread


状态监测

Thread::globally
Thread::isStarted
Thread
PHP Manual

Thread::isJoined

(PECL pthreads >= 2.0.0)

Thread::isJoined — 状态监测

说明

public boolean Thread::isJoined ( void )

线程是否已经被加入（join）

参数

此函数没有参数。

返回值

布尔值，表示是否被加入

范例

Example #1 检测线程状态

<?php
class My extends Thread {
    public function run() {
        $this->synchronized(function($thread){
            if (!$thread->done)
                $thread->wait();
        }, $this);
    }
}
$my = new My();
$my->start();
var_dump($my->isJoined());
$my->synchronized(function($thread){
    $thread->done = true;
    $thread->notify();
}, $my);
?>

以上例程会输出：

bool(false)

Thread::globally
Thread::isStarted
Thread


状态检测

Thread::isJoined
Thread::join
Thread
PHP Manual

Thread::isStarted

(PECL pthreads >= 2.0.0)

Thread::isStarted — 状态检测

说明

public boolean Thread::isStarted ( void )

线程是否开始执行

参数

此函数没有参数。

返回值

布尔值，表示线程是否开始执行

范例

Example #1 监测线程是否开始执行

<?php
$worker = new Worker();
$worker->start();
var_dump($worker->isStarted());
?>

以上例程会输出：

bool(true)

Thread::isJoined
Thread::join
Thread


同步

Thread::isStarted
Thread::kill
Thread
PHP Manual

Thread::join

(PECL pthreads >= 2.0.0)

Thread::join — 同步

说明

public boolean Thread::join ( void )

让当前执行上下文等待被引用线程执行完毕

参数

此函数没有参数。

返回值

布尔值，表示操作成功与否

范例

Example #1 加入线程

<?php
class My extends Thread {
    public function run() {
        /* ... */
    }
}
$my = new My();
$my->start();
/* ... */
var_dump($my->join());
/* ... */
?>

以上例程会输出：

bool(true)

Thread::isStarted
Thread::kill
Thread


执行

Thread::join
Thread::start
Thread
PHP Manual

Thread::kill

(PECL pthreads < 3.0.0)

Thread::kill — 执行

说明

public void Thread::kill ( void )

强制线程中止

Warning

通常情况下，程序员不应该强制杀除线程

参数

此函数没有参数。

返回值

布尔值，表示操作成功与否

范例

Example #1 杀除线程

<?php
class T extends Thread {
    public function run() {
        $stdin = fopen("php://stdin", "r");
        while(($line = fgets($stdin))) {
            echo $line;
        }
    }
}

$t = new T();
$t->start();

var_dump($t->kill());
?>

以上例程会输出：

bool(true)

Thread::join
Thread::start
Thread


执行

Thread::kill
Worker
Thread
PHP Manual

Thread::start

(PECL pthreads >= 2.0.0)

Thread::start — 执行

说明

public boolean Thread::start ([ integer $options ] )

在独立线程中执行 run 方法

参数

options

可选参数，用来控制线程继承。默认值为 PTHREADS_INHERIT_ALL

返回值

布尔值，表示操作成功与否

范例

Example #1 开始线程

<?php
class My extends Thread {
    public function run() {
        /** ... **/
    }
}
$my = new My();
var_dump($my->start());
?>

以上例程会输出：

bool(true)

Thread::kill
Worker
Thread


Worker 类

(PECL pthreads >= 2.0.0)

简介

Worker 是一个具有持久化上下文的线程对象，通常用来重复使用线程。

当一个 Worker 对象开始之后，会执行它的 run 方法，但是即使 run 方法执行完毕，线程本身也不会消亡，除非遇到以下情况：

  • Worker 对象超出作用范围（没有指向它的引用了）

  • 代码调用了 Worker 对象的 shutdown 方法

  • 整个脚本终止了

这意味着程序员可以在程序执行过程中重用这个线程上下文：在 Worker 对象的栈中添加对象会激活 Worker 对象执行被加入对象的 run 方法。

Warning

程序员必须保持入栈对象的引用，直到它执行完毕或者出栈。Pool 类提供了 Worker 对象的高层抽象， 它可以帮助程序员管理这些引用。

类摘要

Worker extends Thread implements Traversable , Countable , ArrayAccess {
/* 方法 */
public int collect ([ Callable $collector ] )
public integer getStacked ( void )
public boolean isShutdown ( void )
public boolean isWorking ( void )
public boolean shutdown ( void )
public integer stack ( Threaded &$work )
public integer unstack ([ Threaded &$work ] )
/* 继承的方法 */
public void Thread::detach ( void )
public integer Thread::getCreatorId ( void )
public static Thread Thread::getCurrentThread ( void )
public static integer Thread::getCurrentThreadId ( void )
public integer Thread::getThreadId ( void )
public static mixed Thread::globally ( void )
public boolean Thread::isJoined ( void )
public boolean Thread::isStarted ( void )
public boolean Thread::join ( void )
public void Thread::kill ( void )
public boolean Thread::start ([ integer $options ] )
}

Table of Contents

  • Worker::collect — Collect references to completed tasks
  • Worker::getStacked — 栈分析
  • Worker::isShutdown — 状态检测
  • Worker::isWorking — 状态检测
  • Worker::shutdown — 同步
  • Worker::stack — 栈操作
  • Worker::unstack — 栈操作
Thread::start
Worker::collect
pthreads


Collect references to completed tasks

Worker
Worker::getStacked
Worker
PHP Manual

Worker::collect

(PECL pthreads >= 3.0.0)

Worker::collect — Collect references to completed tasks

说明

public int Worker::collect ([ Callable $collector ] )

Allows the worker to collect references determined to be garbage by the optionally given collector.

参数

collector

A Callable collector that returns a boolean on whether the task can be collected or not. Only in rare cases should a custom collector need to be used.

返回值

The number of remaining tasks on the worker's stack to be collected.

范例

Example #1 A basic example of Worker::collect()

<?php
$worker = new Worker();

echo "There are currently {$worker->collect()} tasks on the stack to be collected\n";

for ($i = 0; $i < 15; ++$i) {
    $worker->stack(new class extends Threaded {});
}

echo "There are {$worker->collect()} tasks remaining on the stack to be collected\n";

$worker->start();

while ($worker->collect()); // blocks until all tasks have finished executing

echo "There are now {$worker->collect()} tasks on the stack to be collected\n";

$worker->shutdown();

以上例程会输出：

There are currently 0 tasks on the stack to be collected
There are 15 tasks remaining on the stack to be collected
There are now 0 tasks on the stack to be collected

Worker
Worker::getStacked
Worker


栈分析

Worker::collect
Worker::isShutdown
Worker
PHP Manual

Worker::getStacked

(PECL pthreads >= 2.0.0)

Worker::getStacked — 栈分析

说明

public integer Worker::getStacked ( void )

返回等待被 Worker 对象执行的对象数量

参数

此函数没有参数。

返回值

数值

范例

Example #1 返回等待 Worker 执行的对象数量

<?php
class Work extends Threaded {
    /** ... **/

    public function run(){
        /** ... **/
    }
}
$my = new Worker();
/** ... **/
$work = new Work();
$my->stack($work);
/** ... **/
printf("My worker has %d jobs remaining\n", $my->getStacked());
/** ... **/
?>

以上例程会输出：

My worker has 5 jobs remaining

Worker::collect
Worker::isShutdown
Worker


状态检测

Worker::getStacked
Worker::isWorking
Worker
PHP Manual

Worker::isShutdown

(PECL pthreads >= 2.0.0)

Worker::isShutdown — 状态检测

说明

public boolean Worker::isShutdown ( void )

Worker 对象是否被关闭

参数

此函数没有参数。

返回值

布尔值，表示否是被关闭

范例

Example #1 检测 Worker 对象状态

<?php
$my = new Worker();
$my->start();
var_dump($my->isShutdown());
$my->shutdown();
var_dump($my->isShutdown());
?>

以上例程会输出：

bool(false)
bool(true)

Worker::getStacked
Worker::isWorking
Worker


状态检测

Worker::isShutdown
Worker::shutdown
Worker
PHP Manual

Worker::isWorking

(PECL pthreads >= 2.0.0)

Worker::isWorking — 状态检测

说明

public boolean Worker::isWorking ( void )

Worker 对象是否正在执行栈中对象

参数

此函数没有参数。

返回值

布尔值，表示 Worker 对象是否在执行栈中对象

范例

Example #1 检测 Worker 对象状态

<?php
$my = new Worker();
$my->start();
/* ... */
if ($my->isWorking()) {
    /* ... the Worker is busy executing another object */
}
?>

Worker::isShutdown
Worker::shutdown
Worker


同步

Worker::isWorking
Worker::stack
Worker
PHP Manual

Worker::shutdown

(PECL pthreads >= 2.0.0)

Worker::shutdown — 同步

说明

public boolean Worker::shutdown ( void )

在执行完已入栈对象之后，关闭这个 Worker 对象

参数

此函数没有参数。

返回值

范例

Example #1 关闭 Worker

<?php
$my = new Worker();
$my->start();
/* ... */
var_dump($my->shutdown());
/* ... */
?>

以上例程会输出：

bool(true)

Worker::isWorking
Worker::stack
Worker


栈操作

Worker::shutdown
Worker::unstack
Worker
PHP Manual

Worker::stack

(PECL pthreads >= 2.0.0)

Worker::stack — 栈操作

说明

public integer Worker::stack ( Threaded &$work )

将对象入栈到 Worker 对象

参数

work

要被 Worker 执行的Threaded 派生对象

返回值

Worker 对象栈的长度

范例

Example #1 向 Worker 中入栈对象并执行

<?php
class Work extends Threaded {
    /** ... **/

    public function run(){
        /** ... **/
    }
}

$my = new Worker();
$work = new Work();
/** ... **/
var_dump($my->stack($work));
/** ... **/
?>

以上例程会输出：

int(1)

Worker::shutdown
Worker::unstack
Worker


栈操作

Worker::stack
Collectable
Worker
PHP Manual

Worker::unstack

(PECL pthreads >= 2.0.0)

Worker::unstack — 栈操作

说明

public integer Worker::unstack ([ Threaded &$work ] )

从 Worker 栈中出栈对象，如果不提供参数，则表示移除 Worker 栈中全部对象

参数

work

已经入栈的对象

返回值

Worker 对象栈长度

范例

Example #1 从 Worker 栈中移除对象

<?php
class Work extends Threaded {
    public function run() {

    }
}

$my = new Worker();
$work = new Work();
var_dump($my->stack($work));
var_dump($my->unstack($work));
?>

以上例程会输出：

int(1)
int(0)

Worker::stack
Collectable
Worker


The Collectable interface

(PECL pthreads >= 2.0.8)

简介

Caution

Collectable was previously a class (in pthreads v2 and below). Now, it is an interface in pthreads v3 that is implemented by the Threaded class.

Represents a garbage-collectable object.

接口摘要

Collectable extends Threaded {
/* 方法 */
public bool isGarbage ( void )
public void setGarbage ( void )
}

Table of Contents

  • Collectable::isGarbage — Determine whether an object has been marked as garbage
  • Collectable::setGarbage — Mark an object as garbage
Worker::unstack
Collectable::isGarbage
pthreads


Determine whether an object has been marked as garbage

Collectable
Collectable::setGarbage
Collectable
PHP Manual

Collectable::isGarbage

(PECL pthreads >= 2.0.8)

Collectable::isGarbage — Determine whether an object has been marked as garbage

说明

public bool Collectable::isGarbage ( void )

Can be called in Pool::collect() to determine if this object is garbage.

参见

  • Pool::collect() - 回收已完成任务的引用

Collectable
Collectable::setGarbage
Collectable


Mark an object as garbage

Collectable::isGarbage
Modifiers
Collectable
PHP Manual

Collectable::setGarbage

(PECL pthreads < 3.0.0)

Collectable::setGarbage — Mark an object as garbage

说明

public void Collectable::setGarbage ( void )

Should be called once per object when the object is finished being executed or referenced.

参见

  • Collectable::isGarbage() - Determine whether an object has been marked as garbage

Collectable::isGarbage
Modifiers
Collectable


方法修饰符

pthreads 将会改写标明为 protected 和 private 的方法来提供更加适合多线程环境的对象。 对于所有的 Threaded 对象，pthreads 都会进行改写操作。

Example #1 protected 方法示例： 标记为 protected 的方法在同一时间仅允许一个线程访问

<?php
class ExampleThread extends Thread {
    public function run() {
        /* thread code */
        if ($this->synchronized()) {

        }
    }

    protected function exclusive() {
        /* synchronized method */
    }
}

$thread = new ExampleThread();
if ($thread->start()) {
    $thread->exclusive();
}
?>

Example #2 private 方法示例：标记为 private 的方法只能由创建该对象的线程调用

<?php
class ExampleThread extends Thread {
    public function run() {
        /* thread code */
        if ($this->insideonly()) {

        }
    }

    private function insideonly() {
        /* private method */
    }
}

$thread = new ExampleThread();
if ($thread->start()) {
    $thread->insideonly();
}
?>
Collectable::setGarbage
Pool
pthreads


Pool 类

(PECL pthreads >= 2.0.0)

简介

Pool 对象是多个 Worker 对象的容器，同时也是它们的控制器。

线程池是对 Worker 功能的高层抽象，包括按照 pthreads 需要的方式来管理应用的功能。

类摘要

Pool {
/* 属性 */
protected $size ;
protected $class ;
protected $workers ;
protected $work ;
protected $ctor ;
protected $last ;
/* 方法 */
public void collect ( Callable $collector )
public Pool __construct ( integer $size , string $class [, array $ctor ] )
public void resize ( integer $size )
public void shutdown ( void )
public integer submit ( Threaded $task )
public integer submitTo ( integer $worker , Threaded $task )
}

属性

size

Pool 对象可容纳的 Worker 对象的最大数量

class

Worker 的类

ctor

构造新的 Worker 对象时所需的参数

workers

指向 Worker 对象的引用

work

指向提交到 Pool 对象中的 Threaded 对象的引用

last

最后使用的 Worker 对象在池中的位置偏移量

Table of Contents

  • Pool::collect — 回收已完成任务的引用
  • Pool::__construct — 创建新的 Worker 对象池
  • Pool::resize — 改变 Pool 对象的可容纳 Worker 对象的数量
  • Pool::shutdown — 停止所有的 Worker 对象
  • Pool::submit — 提交对象以执行
  • Pool::submitTo — 提交对象以执行
Modifiers
Pool::collect
pthreads


回收已完成任务的引用

Pool
Pool::__construct
Pool
PHP Manual

Pool::collect

(PECL pthreads >= 2.0.0)

Pool::collect — 回收已完成任务的引用

说明

public void Pool::collect ( Callable $collector )

对于视为垃圾的引用，使用给定的垃圾收集器进行收集

参数

collector

可调用的垃圾收集器

返回值

void

范例

Example #1 创建 Pool 对象

<?php
class MyWork extends Stackable {
    public function __construct() {
        $this->complete = false;
    }

    public function run() {
        printf(
            "Hello from %s in Thread #%lu\n",
            __CLASS__, $this->worker->getThreadId());
        $this->complete = true;
    }

    public function isComplete() {
        return $this->complete;
    }

    protected $complete;
}

class MyWorker extends Worker {

    public function __construct(Something $something) {
        $this->something = $something;
    }

    public function run() {
        /** ... **/
    }
}

$pool = new Pool(8, \MyWorker::class, [new Something()]);
$pool->submit(new MyWork());

usleep(1000);

$pool->collect(function($work){
    return $work->isComplete();
});
var_dump($pool);
?>

以上例程会输出：

Hello from MyWork in Thread #140222468777728
object(Pool)#1 (6) {
  ["size":protected]=>
  int(8)
  ["class":protected]=>
  string(8) "MyWorker"
  ["workers":protected]=>
  array(1) {
    [0]=>
    object(MyWorker)#4 (1) {
      ["something"]=>
      object(Something)#5 (0) {
      }
    }
  }
  ["work":protected]=>
  array(0) {
  }
  ["ctor":protected]=>
  array(1) {
    [0]=>
    object(Something)#2 (0) {
    }
  }
  ["last":protected]=>
  int(1)
}

Pool
Pool::__construct
Pool


创建新的 Worker 对象池

Pool::collect
Pool::resize
Pool
PHP Manual

Pool::__construct

(PECL pthreads >= 2.0.0)

Pool::__construct — 创建新的 Worker 对象池

说明

public Pool Pool::__construct ( integer $size , string $class [, array $ctor ] )

创建新的 Worker 对象池

参数

size

此 Pool 对象可创建的 Worker 对象的最大数量

class

新创建的 Worker 对象的类

ctor

创建 Worker 对象时所用到的参数，以数组方式传入

返回值

新创建的 Pool 对象

范例

Example #1 创建 Pool 对象

<?php
class MyWorker extends Worker {

    public function __construct(Something $something) {
        $this->something = $something;
    }

    public function run() {
        /** ... **/
    }
}

$pool = new Pool(8, \MyWorker::class, [new Something()]);

var_dump($pool);
?>

以上例程会输出：

object(Pool)#1 (6) {
  ["size":protected]=>
  int(8)
  ["class":protected]=>
  string(8) "MyWorker"
  ["workers":protected]=>
  NULL
  ["work":protected]=>
  NULL
  ["ctor":protected]=>
  array(1) {
    [0]=>
    object(Something)#2 (0) {
    }
  }
  ["last":protected]=>
  int(0)
}

Pool::collect
Pool::resize
Pool


改变 Pool 对象的可容纳 Worker 对象的数量

Pool::__construct
Pool::shutdown
Pool
PHP Manual

Pool::resize

(PECL pthreads >= 2.0.0)

Pool::resize — 改变 Pool 对象的可容纳 Worker 对象的数量

说明

public void Pool::resize ( integer $size )

改变 Pool 对象的可容纳 Worker 对象的数量

参数

size

此 Pool 对象可创建 Worker 对象的最大数量

返回值

void

Pool::__construct
Pool::shutdown
Pool


停止所有的 Worker 对象

Pool::resize
Pool::submit
Pool
PHP Manual

Pool::shutdown

(PECL pthreads >= 2.0.0)

Pool::shutdown — 停止所有的 Worker 对象

说明

public void Pool::shutdown ( void )

停止此 Pool 中所有的 Worker 对象

返回值

void

Pool::resize
Pool::submit
Pool


提交对象以执行

Pool::shutdown
Pool::submitTo
Pool
PHP Manual

Pool::submit

(PECL pthreads >= 2.0.0)

Pool::submit — 提交对象以执行

说明

public integer Pool::submit ( Threaded $task )

将任务提交到 Pool 中的下一个 Worker 对象

参数

task

要执行的任务

返回值

执行新加入对象的 Worker 对象ID

范例

Example #1 提交任务

<?php
class MyWork extends Threaded {

    public function run() {
        /* ... */
    }
}

class MyWorker extends Worker {

    public function __construct(Something $something) {
        $this->something = $something;
    }

    public function run() {
        /** ... **/
    }
}

$pool = new Pool(8, \MyWorker::class, [new Something()]);
$pool->submit(new MyWork());
var_dump($pool);
?>

以上例程会输出：

object(Pool)#1 (6) {
  ["size":protected]=>
  int(8)
  ["class":protected]=>
  string(8) "MyWorker"
  ["workers":protected]=>
  array(1) {
    [0]=>
    object(MyWorker)#4 (1) {
      ["something"]=>
      object(Something)#5 (0) {
      }
    }
  }
  ["work":protected]=>
  array(1) {
    [0]=>
    object(MyWork)#3 (1) {
      ["worker"]=>
      object(MyWorker)#5 (1) {
        ["something"]=>
        object(Something)#6 (0) {
        }
      }
    }
  }
  ["ctor":protected]=>
  array(1) {
    [0]=>
    object(Something)#2 (0) {
    }
  }
  ["last":protected]=>
  int(1)
}

Pool::shutdown
Pool::submitTo
Pool


提交对象以执行

Pool::submit
Mutex
Pool
PHP Manual

Pool::submitTo

(PECL pthreads >= 2.0.0)

Pool::submitTo — 提交对象以执行

说明

public integer Pool::submitTo ( integer $worker , Threaded $task )

将对象提交到 Pool 中某个 Worker 对象来执行

参数

worker

用来执行任务的 Worker 对象

task

要执行的任务

返回值

接受新加入对象的 Worker 对象ID

范例

Example #1 提交任务

<?php
class MyWork extends Threaded {

    public function run() {
        /* ... */
    }
}

class MyWorker extends Worker {

    public function __construct(Something $something) {
        $this->something = $something;
    }

    public function run() {
        /** ... **/
    }
}

$pool = new Pool(8, \MyWorker::class, [new Something()]);
$pool->submit(new MyWork());
var_dump($pool);
?>

以上例程会输出：

object(Pool)#1 (6) {
  ["size":protected]=>
  int(8)
  ["class":protected]=>
  string(8) "MyWorker"
  ["workers":protected]=>
  array(1) {
    [0]=>
    object(MyWorker)#4 (1) {
      ["something"]=>
      object(Something)#5 (0) {
      }
    }
  }
  ["work":protected]=>
  array(1) {
    [0]=>
    object(MyWork)#3 (1) {
      ["worker"]=>
      object(MyWorker)#5 (1) {
        ["something"]=>
        object(Something)#6 (0) {
        }
      }
    }
  }
  ["ctor":protected]=>
  array(1) {
    [0]=>
    object(Something)#2 (0) {
    }
  }
  ["last":protected]=>
  int(1)
}

Pool::submit
Mutex
Pool


Mutex 类

(PECL pthreads < 3.0.0)

简介

Mutex 类中包含一些直接访问 Posix 互斥量的静态方法

类摘要

Mutex {
/* 方法 */
final public static long create ([ boolean $lock ] )
final public static boolean destroy ( long $mutex )
final public static boolean lock ( long $mutex )
final public static boolean trylock ( long $mutex )
final public static boolean unlock ( long $mutex [, boolean $destroy ] )
}

Table of Contents

  • Mutex::create — 创建一个互斥量
  • Mutex::destroy — 销毁互斥量
  • Mutex::lock — 给互斥量加锁
  • Mutex::trylock — 尝试给互斥量加锁
  • Mutex::unlock — 释放互斥量上的锁
Pool::submitTo
Mutex::create
pthreads


创建一个互斥量

Mutex
Mutex::destroy
Mutex
PHP Manual

Mutex::create

(PECL pthreads < 3.0.0)

Mutex::create — 创建一个互斥量

说明

final public static long Mutex::create ([ boolean $lock ] )

为调用者创建一个互斥量，同时也可以通过 lock 参数设置是否在创建完成之后立即加锁此互斥量

参数

lock

如果设置 lock 参数为 true，表示创建互斥量之后，立即加锁，然后再将互斥量句柄返回给调用者

返回值

新创建的互斥量句柄，这个互斥量可能已经处于加锁状态，由 lock 参数控制

范例

Example #1 互斥量的创建与销毁

<?php
/** 不可以使用 new 关键字，因为互斥量不是 PHP 对象 **/
$mutex = Mutex::create();
/** 你已经持有了这个互斥量的物理地址 **/
var_dump($mutex);
/** 不要忘记销毁你创建的互斥量 **/
Mutex::destroy($mutex);
?>

以上例程会输出：

int(40096976)

Mutex
Mutex::destroy
Mutex


销毁互斥量

Mutex::create
Mutex::lock
Mutex
PHP Manual

Mutex::destroy

(PECL pthreads < 3.0.0)

Mutex::destroy — 销毁互斥量

说明

final public static boolean Mutex::destroy ( long $mutex )

当不再使用某个已经创建的互斥量句柄之后，程序员需要显式的销毁它。

参数

mutex

通过调用函数 Mutex::create() 返回的互斥量句柄。 当调用 Mutex::destroy() 函数之后，任何线程都无法再给这个互斥量加锁了。

返回值

布尔值，表示操作是否成功

范例

Example #1 互斥量的创建与销毁

<?php
/** 不可以使用 new 关键字，因为互斥量不是 PHP 对象 **/
$mutex = Mutex::create();
/** 你已经持有了这个互斥量的物理地址 **/
var_dump($mutex);
/** 不要忘记销毁你创建的互斥量 **/
Mutex::destroy($mutex);
?>

以上例程会输出：

int(40096976)

Mutex::create
Mutex::lock
Mutex


给互斥量加锁

Mutex::destroy
Mutex::trylock
Mutex
PHP Manual

Mutex::lock

(PECL pthreads < 3.0.0)

Mutex::lock — 给互斥量加锁

说明

final public static boolean Mutex::lock ( long $mutex )

尝试为调用者给互斥量加锁。

尝试给已经被其他线程加锁的互斥量再次加锁会导致调用者线程进入阻塞状态。

参数

mutex

通过调用函数 Mutex::create() 产生的互斥量句柄。

返回值

布尔值，表示操作是否成功。

范例

Example #1 互斥量加锁与解锁

<?php
/** 不可以使用 new 关键字，因为互斥量不是 PHP 对象 **/
$mutex = Mutex::create();
/** 现在可以在任何线程上下文中给这个互斥量加锁了 **/
var_dump(Mutex::lock($mutex));
/** 销毁一个处于加锁状态的互斥量的操作是无效的 **/
var_dump(Mutex::unlock($mutex));
/** 永远不要忘记销毁你创建的互斥量 **/
Mutex::destroy($mutex);
?>

以上例程会输出：

bool(true)
bool(true)

Mutex::destroy
Mutex::trylock
Mutex


尝试给互斥量加锁

Mutex::lock
Mutex::unlock
Mutex
PHP Manual

Mutex::trylock

(PECL pthreads < 3.0.0)

Mutex::trylock — 尝试给互斥量加锁

说明

final public static boolean Mutex::trylock ( long $mutex )

尝试给一个互斥量加锁，即使这个互斥量已经被其他线程锁定，也不会导致调用者线程进入阻塞状态。

参数

mutex

通过调用函数 Mutex::create() 产生的互斥量句柄。

返回值

布尔值，表示操作是否成功

范例

Example #1 互斥量的加锁与解锁

<?php
/** 不可以使用 new 关键字，因为互斥量不是 PHP 对象 **/
$mutex = Mutex::create();
/** 现在可以在任何线程上下文中给这个互斥量加锁了 **/
var_dump(Mutex::lock($mutex));
/** 销毁一个处于加锁状态的互斥量的操作是无效的 **/
var_dump(Mutex::unlock($mutex));
/** 永远不要忘记销毁你创建的互斥量 **/
Mutex::destroy($mutex);
?>

以上例程会输出：

bool(true)
bool(true)

Mutex::lock
Mutex::unlock
Mutex


释放互斥量上的锁

Mutex::trylock
Cond
Mutex
PHP Manual

Mutex::unlock

(PECL pthreads < 3.0.0)

Mutex::unlock — 释放互斥量上的锁

说明

final public static boolean Mutex::unlock ( long $mutex [, boolean $destroy ] )

尝试为互斥量解锁，也可以通过 destroy 参数控制是否在解锁之后同时销毁此互斥量。 只有持有互斥量锁的线程才可以对这个互斥量进行解锁操作。

参数

mutex

通过调用函数 Mutex::create() 产生的互斥量句柄。

destroy

此参数为 true 表示如果解锁成功，则同时销毁此互斥量。

返回值

A boolean indication of success.

范例

Example #1 互斥量的加锁与解锁

<?php
/** 不可以使用 new 关键字，因为互斥量不是 PHP 对象 **/
$mutex = Mutex::create();
/** 现在可以在任何线程上下文中给这个互斥量加锁了 **/
var_dump(Mutex::lock($mutex));
/** 销毁一个处于加锁状态的互斥量的操作是无效的 **/
var_dump(Mutex::unlock($mutex));
/** 永远不要忘记销毁你创建的互斥量 **/
Mutex::destroy($mutex);
?>

以上例程会输出：

bool(true)
bool(true)

Mutex::trylock
Cond
Mutex


Cond 类

(PECL pthreads < 3.0.0)

简介

Cond 类提供一组用来直接访问 Posix 条件变量的静态方法。

类摘要

Cond {
/* 方法 */
final public static boolean broadcast ( long $condition )
final public static long create ( void )
final public static boolean destroy ( long $condition )
final public static boolean signal ( long $condition )
final public static boolean wait ( long $condition , long $mutex [, long $timeout ] )
}

Table of Contents

  • Cond::broadcast — 广播条件变量
  • Cond::create — 创建一个条件变量
  • Cond::destroy — 销毁条件变量
  • Cond::signal — 发送唤醒信号
  • Cond::wait — 等待
Mutex::unlock
Cond::broadcast
pthreads


广播条件变量

Cond
Cond::create
Cond
PHP Manual

Cond::broadcast

(PECL pthreads < 3.0.0)

Cond::broadcast — 广播条件变量

说明

final public static boolean Cond::broadcast ( long $condition )

向所有由于调用 Cond::wait() 函数而进入条件阻塞状态的线程发送广播。

参数

condition

通过调用函数 Cond::create() 获得的条件变量句柄。

返回值

布尔值，表示操作是否成功。

范例

Example #1 广播条件变量

<?php
/** 不可以使用 new 关键字，因为 Cond 不是 PHP 对象 **/
$cond = Cond::create();
/** 调用者必须给关联的互斥量加锁，然后才可以进行广播（调用 broadcast 方法） **/
var_dump(Cond::broadcast($cond));
/** 永远不要忘记销毁你创建的条件变量 **/
Cond::destroy($cond);
?>

以上例程会输出：

bool(true)

Cond
Cond::create
Cond


创建一个条件变量

Cond::broadcast
Cond::destroy
Cond
PHP Manual

Cond::create

(PECL pthreads < 3.0.0)

Cond::create — 创建一个条件变量

说明

final public static long Cond::create ( void )

创建一个条件变量。

参数

此函数没有参数。

返回值

指向条件变量的句柄。

范例

Example #1 条件变量的创建与销毁

<?php
/** 不可以使用 new 关键字，因为 Cond 不是 PHP 对象 **/
$cond = Cond::create();
/** 现在你可以在任意线程上下文中使用此条件变量 **/
var_dump($cond);
/** 永远不要忘记销毁你创建的条件变量 **/
Cond::destroy($cond);
?>

以上例程会输出：

int(4540682)

Cond::broadcast
Cond::destroy
Cond


销毁条件变量

Cond::create
Cond::signal
Cond
PHP Manual

Cond::destroy

(PECL pthreads < 3.0.0)

Cond::destroy — 销毁条件变量

说明

final public static boolean Cond::destroy ( long $condition )

当不再需要所创建的条件变量时，程序员必须显式的销毁它。 当调用 Cond::destroy() 函数时，必须保证其他线程没有处于等待此条件变量的阻塞状态（通过调用函数 Cond::wait() 进入条件阻塞状态）。

参数

condition

通过调用 Cond::create() 函数获得的条件变量句柄

返回值

布尔值，表示操作是否成功。

范例

Example #1 条件变量的创建与销毁

<?php
/** 不可以使用 new 关键字，因为 Cond 不是 PHP 对象 **/
$cond = Cond::create();
/** 现在你可以在任意线程上下文中使用此条件变量 **/
var_dump($cond);
/** 永远不要忘记销毁你创建的条件变量 **/
Cond::destroy($cond);
?>

以上例程会输出：

int(4540682)

Cond::create
Cond::signal
Cond


发送唤醒信号

Cond::destroy
Cond::wait
Cond
PHP Manual

Cond::signal

(PECL pthreads < 3.0.0)

Cond::signal — 发送唤醒信号

说明

final public static boolean Cond::signal ( long $condition )

参数

condition

通过调用 Cond::create() 函数获得的条件变量句柄

返回值

布尔值，表示操作是否成功。

范例

Example #1 发送唤醒信号

<?php
/** 不可以使用 new 关键字，因为 Cond 不是 PHP 对象 **/
$cond = Cond::create();
/** 调用者必须持有关联的互斥量锁，然后才可以进行唤醒信号发送（调用 signal 方法）  **/
var_dump(Cond::signal($cond));
/** 永远不要忘记销毁你创建的条件变量 **/
Cond::destroy($cond);
?>

以上例程会输出：

bool(true)

Cond::destroy
Cond::wait
Cond


等待

Cond::signal
Semaphore
Cond
PHP Manual

Cond::wait

(PECL pthreads < 3.0.0)

Cond::wait — 等待

说明

final public static boolean Cond::wait ( long $condition , long $mutex [, long $timeout ] )

进入条件变量等待状态。通过 timeout 参数可以设置等待超时时间。

参数

condition

通过调用 Cond::create() 函数获得的条件变量句柄

mutex

通过调用 Mutex::create() 函数获得的互斥量，并且已经被调用者线程加锁。

timeout

等待超时，以毫秒为单位。

返回值

布尔值，表示操作是否成功。

范例

Example #1 等待条件变量

<?php
/** 请注意，本示例会导致进程挂起 **/
$mutex = Mutex::create(true);
/** 不可以使用 new 关键字，因为 Cond 不是 PHP 对象 **/
$cond = Cond::create();
/** The caller must lock the associated Mutex before a call to broadcast **/
var_dump(Cond::wait($cond, $mutex));
/** 永远不要忘记销毁你创建的条件变量及互斥量 **/
Cond::destroy($cond);
Mutex::unlock($mutex);
Mutex::destroy($mutex);
?>

以上例程会输出：

int(49685473)

Cond::signal
Semaphore
Cond


Semaphore, Shared Memory and IPC

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Semaphore 函数
    • ftok — Convert a pathname and a project identifier to a System V IPC key
    • msg_get_queue — Create or attach to a message queue
    • msg_queue_exists — Check whether a message queue exists
    • msg_receive — Receive a message from a message queue
    • msg_remove_queue — Destroy a message queue
    • msg_send — Send a message to a message queue
    • msg_set_queue — Set information in the message queue data structure
    • msg_stat_queue — Returns information from the message queue data structure
    • sem_acquire — Acquire a semaphore
    • sem_get — Get a semaphore id
    • sem_release — Release a semaphore
    • sem_remove — Remove a semaphore
    • shm_attach — Creates or open a shared memory segment
    • shm_detach — Disconnects from shared memory segment
    • shm_get_var — Returns a variable from shared memory
    • shm_has_var — Check whether a specific entry exists
    • shm_put_var — Inserts or updates a variable in shared memory
    • shm_remove_var — Removes a variable from shared memory
    • shm_remove — Removes shared memory from Unix systems
Cond::wait
简介
进程控制扩展


简介

This module provides wrappers for the System V IPC family of functions. It includes semaphores, shared memory and inter-process messaging (IPC).

Semaphores may be used to provide exclusive access to resources on the current machine, or to limit the number of processes that may simultaneously use a resource.

This module provides also shared memory functions using System V shared memory. Shared memory may be used to provide access to global variables. Different httpd-daemons and even other programs (such as Perl, C, ...) are able to access this data to provide a global data-exchange. Remember, that shared memory is NOT safe against simultaneous access. Use semaphores for synchronization.

Limits of Shared Memory by the Unix OS
SHMMAX | max size of shared memory, normally 131072 bytes
SHMMIN | minimum size of shared memory, normally 1 byte
SHMMNI | max amount of shared memory segments on a system, normally 100
SHMSEG | max amount of shared memory segments per process, normally 6

The messaging functions may be used to send and receive messages to/from other processes. They provide a simple and effective means of exchanging data between processes, without the need for setting up an alternative using Unix domain sockets.

Note: 此扩展在 Windows 平台上不可用。

Semaphore
安装／配置
Semaphore


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Semaphore


安装

Support for this functions are not enabled by default. To enable System V semaphore support compile PHP with the option --enable-sysvsem . To enable the System V shared memory support compile PHP with the option --enable-sysvshm . To enable the System V messages support compile PHP with the option --enable-sysvmsg .

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Semaphore Configuration Options
名字 | 默认 | 可修改范围 | 更新日志
sysvshm.init_mem | 10000 | PHP_INI_SYSTEM |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

sysvshm.init_mem int

A default size of the shared memory segment.

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

System V message constants
Constant | Type | Changelog
MSG_IPC_NOWAIT | integer |
MSG_EAGAIN | integer | As of 5.2.0
MSG_ENOMSG | integer | As of 5.2.0
MSG_NOERROR | integer |
MSG_EXCEPT | integer |

资源类型
Semaphore 函数
Semaphore


Semaphore 函数

Table of Contents

  • ftok — Convert a pathname and a project identifier to a System V IPC key
  • msg_get_queue — Create or attach to a message queue
  • msg_queue_exists — Check whether a message queue exists
  • msg_receive — Receive a message from a message queue
  • msg_remove_queue — Destroy a message queue
  • msg_send — Send a message to a message queue
  • msg_set_queue — Set information in the message queue data structure
  • msg_stat_queue — Returns information from the message queue data structure
  • sem_acquire — Acquire a semaphore
  • sem_get — Get a semaphore id
  • sem_release — Release a semaphore
  • sem_remove — Remove a semaphore
  • shm_attach — Creates or open a shared memory segment
  • shm_detach — Disconnects from shared memory segment
  • shm_get_var — Returns a variable from shared memory
  • shm_has_var — Check whether a specific entry exists
  • shm_put_var — Inserts or updates a variable in shared memory
  • shm_remove_var — Removes a variable from shared memory
  • shm_remove — Removes shared memory from Unix systems
预定义常量
ftok
Semaphore


Convert a pathname and a project identifier to a System V IPC key

Semaphore 函数
msg_get_queue
Semaphore 函数
PHP Manual

ftok

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

ftok — Convert a pathname and a project identifier to a System V IPC key

说明

int ftok ( string $pathname , string $proj )

The function converts the pathname of an existing accessible file and a project identifier into an integer for use with for example shmop_open() and other System V IPC keys.

参数

pathname

Path to an accessible file.

proj

Project identifier. This must be a one character string.

返回值

On success the return value will be the created key value, otherwise -1 is returned.

参见

  • shmop_open() - Create or open shared memory block
  • sem_get() - Get a semaphore id

Semaphore 函数
msg_get_queue
Semaphore 函数


Create or attach to a message queue

ftok
msg_queue_exists
Semaphore 函数
PHP Manual

msg_get_queue

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

msg_get_queue — Create or attach to a message queue

说明

resource msg_get_queue ( int $key [, int $perms = 0666 ] )

msg_get_queue() returns an id that can be used to access the System V message queue with the given key. The first call creates the message queue with the optional perms. A second call to msg_get_queue() for the same key will return a different message queue identifier, but both identifiers access the same underlying message queue.

参数

key

Message queue numeric ID

perms

Queue permissions. Default to 0666. If the message queue already exists, the perms will be ignored.

返回值

Returns a resource handle that can be used to access the System V message queue.

参见

  • msg_remove_queue() - Destroy a message queue
  • msg_receive() - Receive a message from a message queue
  • msg_send() - Send a message to a message queue
  • msg_stat_queue() - Returns information from the message queue data structure
  • msg_set_queue() - Set information in the message queue data structure

ftok
msg_queue_exists
Semaphore 函数


Check whether a message queue exists

msg_get_queue
msg_receive
Semaphore 函数
PHP Manual

msg_queue_exists

(PHP 5 >= 5.3.0, PHP 7)

msg_queue_exists — Check whether a message queue exists

说明

bool msg_queue_exists ( int $key )

Checks whether the message queue key exists.

参数

key

Queue key.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • msg_remove_queue() - Destroy a message queue
  • msg_receive() - Receive a message from a message queue
  • msg_stat_queue() - Returns information from the message queue data structure

msg_get_queue
msg_receive
Semaphore 函数


Receive a message from a message queue

msg_queue_exists
msg_remove_queue
Semaphore 函数
PHP Manual

msg_receive

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

msg_receive — Receive a message from a message queue

说明

bool msg_receive ( resource $queue , int $desiredmsgtype , int &$msgtype , int $maxsize , mixed &$message [, bool $unserialize = true [, int $flags = 0 [, int &$errorcode ]]] )

msg_receive() will receive the first message from the specified queue of the type specified by desiredmsgtype.

参数

queue

desiredmsgtype

If desiredmsgtype is 0, the message from the front of the queue is returned. If desiredmsgtype is greater than 0, then the first message of that type is returned. If desiredmsgtype is less than 0, the first message on the queue with the lowest type less than or equal to the absolute value of desiredmsgtype will be read. If no messages match the criteria, your script will wait until a suitable message arrives on the queue. You can prevent the script from blocking by specifying MSG_IPC_NOWAIT in the flags parameter.

msgtype

The type of the message that was received will be stored in this parameter.

maxsize

The maximum size of message to be accepted is specified by the maxsize; if the message in the queue is larger than this size the function will fail (unless you set flags as described below).

message

The received message will be stored in message, unless there were errors receiving the message.

unserialize

If set to TRUE, the message is treated as though it was serialized using the same mechanism as the session module. The message will be unserialized and then returned to your script. This allows you to easily receive arrays or complex object structures from other PHP scripts, or if you are using the WDDX serializer, from any WDDX compatible source.

If unserialize is FALSE, the message will be returned as a binary-safe string.

flags

The optional flags allows you to pass flags to the low-level msgrcv system call. It defaults to 0, but you may specify one or more of the following values (by adding or ORing them together).

Flag values for msg_receive
MSG_IPC_NOWAIT | If there are no messages of the desiredmsgtype, return immediately and do not wait. The function will fail and return an integer value corresponding to MSG_ENOMSG.
MSG_EXCEPT | Using this flag in combination with a desiredmsgtype greater than 0 will cause the function to receive the first message that is not equal to desiredmsgtype.
MSG_NOERROR | If the message is longer than maxsize, setting this flag will truncate the message to maxsize and will not signal an error.

errorcode

If the function fails, the optional errorcode will be set to the value of the system errno variable.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

Upon successful completion the message queue data structure is updated as follows: msg_lrpid is set to the process-ID of the calling process, msg_qnum is decremented by 1 and msg_rtime is set to the current time.

参见

  • msg_remove_queue() - Destroy a message queue
  • msg_send() - Send a message to a message queue
  • msg_stat_queue() - Returns information from the message queue data structure
  • msg_set_queue() - Set information in the message queue data structure

msg_queue_exists
msg_remove_queue
Semaphore 函数


Destroy a message queue

msg_receive
msg_send
Semaphore 函数
PHP Manual

msg_remove_queue

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

msg_remove_queue — Destroy a message queue

说明

bool msg_remove_queue ( resource $queue )

msg_remove_queue() destroys the message queue specified by the queue. Only use this function when all processes have finished working with the message queue and you need to release the system resources held by it.

参数

queue

Message queue resource handle

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • msg_get_queue() - Create or attach to a message queue
  • msg_receive() - Receive a message from a message queue
  • msg_stat_queue() - Returns information from the message queue data structure
  • msg_set_queue() - Set information in the message queue data structure

msg_receive
msg_send
Semaphore 函数


Send a message to a message queue

msg_remove_queue
msg_set_queue
Semaphore 函数
PHP Manual

msg_send

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

msg_send — Send a message to a message queue

说明

bool msg_send ( resource $queue , int $msgtype , mixed $message [, bool $serialize = true [, bool $blocking = true [, int &$errorcode ]]] )

msg_send() sends a message of type msgtype (which MUST be greater than 0) to the message queue specified by queue.

参数

queue

msgtype

message

serialize

The optional serialize controls how the message is sent. serialize defaults to TRUE which means that the message is serialized using the same mechanism as the session module before being sent to the queue. This allows complex arrays and objects to be sent to other PHP scripts, or if you are using the WDDX serializer, to any WDDX compatible client.

blocking

If the message is too large to fit in the queue, your script will wait until another process reads messages from the queue and frees enough space for your message to be sent. This is called blocking; you can prevent blocking by setting the optional blocking parameter to FALSE, in which case msg_send() will immediately return FALSE if the message is too big for the queue, and set the optional errorcode to MSG_EAGAIN, indicating that you should try to send your message again a little later on.

errorcode

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

Upon successful completion the message queue data structure is updated as follows: msg_lspid is set to the process-ID of the calling process, msg_qnum is incremented by 1 and msg_stime is set to the current time.

参见

  • msg_remove_queue() - Destroy a message queue
  • msg_receive() - Receive a message from a message queue
  • msg_stat_queue() - Returns information from the message queue data structure
  • msg_set_queue() - Set information in the message queue data structure

msg_remove_queue
msg_set_queue
Semaphore 函数


Set information in the message queue data structure

msg_send
msg_stat_queue
Semaphore 函数
PHP Manual

msg_set_queue

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

msg_set_queue — Set information in the message queue data structure

说明

bool msg_set_queue ( resource $queue , array $data )

msg_set_queue() allows you to change the values of the msg_perm.uid, msg_perm.gid, msg_perm.mode and msg_qbytes fields of the underlying message queue data structure.

Changing the data structure will require that PHP be running as the same user that created the queue, owns the queue (as determined by the existing msg_perm.xxx fields), or be running with root privileges. root privileges are required to raise the msg_qbytes values above the system defined limit.

参数

queue

Message queue resource handle

data

You specify the values you require by setting the value of the keys that you require in the data array.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • msg_remove_queue() - Destroy a message queue
  • msg_receive() - Receive a message from a message queue
  • msg_stat_queue() - Returns information from the message queue data structure
  • msg_get_queue() - Create or attach to a message queue

msg_send
msg_stat_queue
Semaphore 函数


Returns information from the message queue data structure

msg_set_queue
sem_acquire
Semaphore 函数
PHP Manual

msg_stat_queue

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

msg_stat_queue — Returns information from the message queue data structure

说明

array msg_stat_queue ( resource $queue )

msg_stat_queue() returns the message queue meta data for the message queue specified by the queue. This is useful, for example, to determine which process sent the message that was just received.

参数

queue

Message queue resource handle

返回值

The return value is an array whose keys and values have the following meanings:

Array structure for msg_stat_queue
msg_perm.uid | The uid of the owner of the queue.
msg_perm.gid | The gid of the owner of the queue.
msg_perm.mode | The file access mode of the queue.
msg_stime | The time that the last message was sent to the queue.
msg_rtime | The time that the last message was received from the queue.
msg_ctime | The time that the queue was last changed.
msg_qnum | The number of messages waiting to be read from the queue.
msg_qbytes | The maximum number of bytes allowed in one message queue. On Linux, this value may be read and modified via /proc/sys/kernel/msgmnb.
msg_lspid | The pid of the process that sent the last message to the queue.
msg_lrpid | The pid of the process that received the last message from the queue.

参见

  • msg_remove_queue() - Destroy a message queue
  • msg_receive() - Receive a message from a message queue
  • msg_get_queue() - Create or attach to a message queue
  • msg_set_queue() - Set information in the message queue data structure

msg_set_queue
sem_acquire
Semaphore 函数


Acquire a semaphore

msg_stat_queue
sem_get
Semaphore 函数
PHP Manual

sem_acquire

(PHP 4, PHP 5, PHP 7)

sem_acquire — Acquire a semaphore

说明

bool sem_acquire ( resource $sem_identifier [, bool $nowait = false ] )

sem_acquire() by default blocks (if necessary) until the semaphore can be acquired. A process attempting to acquire a semaphore which it has already acquired will block forever if acquiring the semaphore would cause its maximum number of semaphore to be exceeded.

After processing a request, any semaphores acquired by the process but not explicitly released will be released automatically and a warning will be generated.

参数

sem_identifier

sem_identifier is a semaphore resource, obtained from sem_get().

nowait

Specifies if the process shouldn't wait for the semaphore to be acquired. If set to true, the call will return false immediately if a semaphore cannot be immediately acquired.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.6.1 | The $nowait parameter was added.

参见

  • sem_get() - Get a semaphore id
  • sem_release() - Release a semaphore

msg_stat_queue
sem_get
Semaphore 函数


Get a semaphore id

sem_acquire
sem_release
Semaphore 函数
PHP Manual

sem_get

(PHP 4, PHP 5, PHP 7)

sem_get — Get a semaphore id

说明

resource sem_get ( int $key [, int $max_acquire = 1 [, int $perm = 0666 [, int $auto_release = 1 ]]] )

sem_get() returns an id that can be used to access the System V semaphore with the given key.

A second call to sem_get() for the same key will return a different semaphore identifier, but both identifiers access the same underlying semaphore.

参数

key

max_acquire

The number of processes that can acquire the semaphore simultaneously is set to max_acquire.

perm

The semaphore permissions. Actually this value is set only if the process finds it is the only process currently attached to the semaphore.

auto_release

Specifies if the semaphore should be automatically released on request shutdown.

返回值

Returns a positive semaphore identifier on success, or FALSE on error.

注释

Warning

When using sem_get() to access a semaphore created outside PHP, note that the semaphore must have been created as a set of 3 semaphores (for example, by specifying 3 as the nsems parameter when calling the C semget() function), otherwise PHP will be unable to access the semaphore.

参见

  • sem_acquire() - Acquire a semaphore
  • sem_release() - Release a semaphore
  • ftok() - Convert a pathname and a project identifier to a System V IPC key

sem_acquire
sem_release
Semaphore 函数


Release a semaphore

sem_get
sem_remove
Semaphore 函数
PHP Manual

sem_release

(PHP 4, PHP 5, PHP 7)

sem_release — Release a semaphore

说明

bool sem_release ( resource $sem_identifier )

sem_release() releases the semaphore if it is currently acquired by the calling process, otherwise a warning is generated.

After releasing the semaphore, sem_acquire() may be called to re-acquire it.

参数

sem_identifier

A Semaphore resource handle as returned by sem_get().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • sem_get() - Get a semaphore id
  • sem_acquire() - Acquire a semaphore

sem_get
sem_remove
Semaphore 函数


Remove a semaphore

sem_release
shm_attach
Semaphore 函数
PHP Manual

sem_remove

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

sem_remove — Remove a semaphore

说明

bool sem_remove ( resource $sem_identifier )

sem_remove() removes the given semaphore.

After removing the semaphore, it is no longer accessible.

参数

sem_identifier

A semaphore resource identifier as returned by sem_get().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • sem_get() - Get a semaphore id
  • sem_release() - Release a semaphore
  • sem_acquire() - Acquire a semaphore

sem_release
shm_attach
Semaphore 函数


Creates or open a shared memory segment

sem_remove
shm_detach
Semaphore 函数
PHP Manual

shm_attach

(PHP 4, PHP 5, PHP 7)

shm_attach — Creates or open a shared memory segment

说明

resource shm_attach ( int $key [, int $memsize [, int $perm = 0666 ]] )

shm_attach() returns an id that can be used to access the System V shared memory with the given key, the first call creates the shared memory segment with memsize and the optional perm-bits perm.

A second call to shm_attach() for the same key will return a different shared memory identifier, but both identifiers access the same underlying shared memory. memsize and perm will be ignored.

参数

key

A numeric shared memory segment ID

memsize

The memory size. If not provided, default to the sysvshm.init_mem in the php.ini, otherwise 10000 bytes.

perm

The optional permission bits. Default to 0666.

返回值

Returns a shared memory segment identifier.

更新日志

版本 | 说明
5.3.0 | This function now returns a 资源(resource) instead of an integer.

注释

Note:

This function used to return an integer value prior to PHP 5.3.0. To achieve the same value in a portable manner, the return value can be cast to an integer like:

<?php
// Create a temporary file and return its path
$tmp = tempnam('/tmp', 'PHP');

// Get the file token key
$key = ftok($tmp, 'a');

// Attach the SHM resource, notice the cast afterwards
$id = shm_attach($key);

if ($id === false) {
    die('Unable to create the shared memory segment');
}

// Cast to integer, since prior to PHP 5.3.0 the resource id
// is returned which can be exposed when casting a resource
// to an integer
$id = (integer) $id;
?>

参见

  • shm_detach() - Disconnects from shared memory segment
  • ftok() - Convert a pathname and a project identifier to a System V IPC key

sem_remove
shm_detach
Semaphore 函数


Disconnects from shared memory segment

shm_attach
shm_get_var
Semaphore 函数
PHP Manual

shm_detach

(PHP 4, PHP 5, PHP 7)

shm_detach — Disconnects from shared memory segment

说明

bool shm_detach ( resource $shm_identifier )

shm_detach() disconnects from the shared memory given by the shm_identifier created by shm_attach(). Remember, that shared memory still exist in the Unix system and the data is still present.

参数

shm_identifier

A shared memory resource handle as returned by shm_attach()

返回值

shm_detach() always returns TRUE.

参见

  • shm_attach() - Creates or open a shared memory segment
  • shm_remove() - Removes shared memory from Unix systems
  • shm_remove_var() - Removes a variable from shared memory

shm_attach
shm_get_var
Semaphore 函数


Returns a variable from shared memory

shm_detach
shm_has_var
Semaphore 函数
PHP Manual

shm_get_var

(PHP 4, PHP 5, PHP 7)

shm_get_var — Returns a variable from shared memory

说明

mixed shm_get_var ( resource $shm_identifier , int $variable_key )

shm_get_var() returns the variable with a given variable_key, in the given shared memory segment. The variable is still present in the shared memory.

参数

shm_identifier

Shared memory segment, obtained from shm_attach().

variable_key

The variable key.

返回值

Returns the variable with the given key.

参见

  • shm_has_var() - Check whether a specific entry exists
  • shm_put_var() - Inserts or updates a variable in shared memory

shm_detach
shm_has_var
Semaphore 函数


Check whether a specific entry exists

shm_get_var
shm_put_var
Semaphore 函数
PHP Manual

shm_has_var

(PHP 5 >= 5.3.0, PHP 7)

shm_has_var — Check whether a specific entry exists

说明

bool shm_has_var ( resource $shm_identifier , int $variable_key )

Checks whether a specific key exists inside a shared memory segment.

参数

shm_identifier

Shared memory segment, obtained from shm_attach().

variable_key

The variable key.

返回值

Returns TRUE if the entry exists, otherwise FALSE

参见

  • shm_get_var() - Returns a variable from shared memory
  • shm_put_var() - Inserts or updates a variable in shared memory

shm_get_var
shm_put_var
Semaphore 函数


Inserts or updates a variable in shared memory

shm_has_var
shm_remove_var
Semaphore 函数
PHP Manual

shm_put_var

(PHP 4, PHP 5, PHP 7)

shm_put_var — Inserts or updates a variable in shared memory

说明

bool shm_put_var ( resource $shm_identifier , int $variable_key , mixed $variable )

shm_put_var() inserts or updates the variable with the given variable_key.

Warnings (E_WARNING level) will be issued if shm_identifier is not a valid SysV shared memory index or if there was not enough shared memory remaining to complete your request.

参数

shm_identifier

A shared memory resource handle as returned by shm_attach()

variable_key

The variable key.

variable

The variable. All variable types that serialize() supports may be used: generally this means all types except for resources and some internal objects that cannot be serialized.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • shm_get_var() - Returns a variable from shared memory
  • shm_has_var() - Check whether a specific entry exists

shm_has_var
shm_remove_var
Semaphore 函数


Removes a variable from shared memory

shm_put_var
shm_remove
Semaphore 函数
PHP Manual

shm_remove_var

(PHP 4, PHP 5, PHP 7)

shm_remove_var — Removes a variable from shared memory

说明

bool shm_remove_var ( resource $shm_identifier , int $variable_key )

Removes a variable with a given variable_key and frees the occupied memory.

参数

shm_identifier

The shared memory identifier as returned by shm_attach()

variable_key

The variable key.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • shm_remove() - Removes shared memory from Unix systems

shm_put_var
shm_remove
Semaphore 函数


Removes shared memory from Unix systems

shm_remove_var
Shared Memory
Semaphore 函数
PHP Manual

shm_remove

(PHP 4, PHP 5, PHP 7)

shm_remove — Removes shared memory from Unix systems

说明

bool shm_remove ( resource $shm_identifier )

shm_remove() removes the shared memory shm_identifier. All data will be destroyed.

参数

shm_identifier

The shared memory identifier as returned by shm_attach()

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • shm_remove_var() - Removes a variable from shared memory

shm_remove_var
Shared Memory
Semaphore 函数


Shared Memory

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Basic usage
  • Shared Memory 函数
    • shmop_close — Close shared memory block
    • shmop_delete — Delete shared memory block
    • shmop_open — Create or open shared memory block
    • shmop_read — Read data from shared memory block
    • shmop_size — Get size of shared memory block
    • shmop_write — Write data into shared memory block
shm_remove
简介
进程控制扩展


简介

Shmop is an easy to use set of functions that allows PHP to read, write, create and delete Unix shared memory segments.

Note: Versions of Windows previous to Windows 2000 do not support shared memory.

Shared Memory
安装／配置
Shared Memory


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Shared Memory


安装

To use shmop you will need to compile PHP with the --enable-shmop parameter in your configure line.

需求
运行时配置
安装／配置


资源类型

As of PHP 7.0.0 this extension defines the resource type shmop which is a handle to a shared memory block.

运行时配置
预定义常量
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
范例
Shared Memory


范例

Table of Contents

  • Basic usage
预定义常量
Basic usage
Shared Memory


Basic usage

Example #1 Shared Memory Operations Overview

<?php

// Create 100 byte shared memory block with system id of 0xff3
$shm_id = shmop_open(0xff3, "c", 0644, 100);
if (!$shm_id) {
    echo "Couldn't create shared memory segment\n";
}

// Get shared memory block's size
$shm_size = shmop_size($shm_id);
echo "SHM Block Size: " . $shm_size . " has been created.\n";

// Lets write a test string into shared memory
$shm_bytes_written = shmop_write($shm_id, "my shared memory block", 0);
if ($shm_bytes_written != strlen("my shared memory block")) {
    echo "Couldn't write the entire length of data\n";
}

// Now lets read the string back
$my_string = shmop_read($shm_id, 0, $shm_size);
if (!$my_string) {
    echo "Couldn't read from shared memory block\n";
}
echo "The data inside shared memory was: " . $my_string . "\n";

//Now lets delete the block and close the shared memory segment
if (!shmop_delete($shm_id)) {
    echo "Couldn't mark shared memory block for deletion.";
}
shmop_close($shm_id);

?>

范例
Shared Memory 函数
范例


Shared Memory 函数

Table of Contents

  • shmop_close — Close shared memory block
  • shmop_delete — Delete shared memory block
  • shmop_open — Create or open shared memory block
  • shmop_read — Read data from shared memory block
  • shmop_size — Get size of shared memory block
  • shmop_write — Write data into shared memory block
Basic usage
shmop_close
Shared Memory


Close shared memory block

Shared Memory 函数
shmop_delete
Shared Memory 函数
PHP Manual

shmop_close

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

shmop_close — Close shared memory block

说明

void shmop_close ( resource $shmid )

shmop_close() is used to close a shared memory block.

参数

shmid

The shared memory block resource created by shmop_open()

返回值

没有返回值。

更新日志

版本 | 说明
7.0.0 | The type of shmid has been changed from int to resource.

范例

Example #1 Closing shared memory block

<?php
shmop_close($shm_id);
?>

This example will close shared memory block identified by $shm_id.

参见

  • shmop_open() - Create or open shared memory block

Shared Memory 函数
shmop_delete
Shared Memory 函数


Delete shared memory block

shmop_close
shmop_open
Shared Memory 函数
PHP Manual

shmop_delete

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

shmop_delete — Delete shared memory block

说明

bool shmop_delete ( resource $shmid )

shmop_delete() is used to delete a shared memory block.

参数

shmid

The shared memory block resource created by shmop_open()

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
7.0.0 | The type of shmid has been changed from int to resource.

范例

Example #1 Deleting shared memory block

<?php
shmop_delete($shm_id);
?>

This example will delete shared memory block identified by $shm_id.

shmop_close
shmop_open
Shared Memory 函数


Create or open shared memory block

shmop_delete
shmop_read
Shared Memory 函数
PHP Manual

shmop_open

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

shmop_open — Create or open shared memory block

说明

resource shmop_open ( int $key , string $flags , int $mode , int $size )

shmop_open() can create or open a shared memory block.

参数

key

System's id for the shared memory block. Can be passed as a decimal or hex.

flags

The flags that you can use:

  • "a" for access (sets SHM_RDONLY for shmat) use this flag when you need to open an existing shared memory segment for read only
  • "c" for create (sets IPC_CREATE) use this flag when you need to create a new shared memory segment or if a segment with the same key exists, try to open it for read and write
  • "w" for read & write access use this flag when you need to read and write to a shared memory segment, use this flag in most cases.
  • "n" create a new memory segment (sets IPC_CREATE|IPC_EXCL) use this flag when you want to create a new shared memory segment but if one already exists with the same flag, fail. This is useful for security purposes, using this you can prevent race condition exploits.

mode

The permissions that you wish to assign to your memory segment, those are the same as permission for a file. Permissions need to be passed in octal form, like for example 0644

size

The size of the shared memory block you wish to create in bytes

Note:

Note: the 3rd and 4th should be entered as 0 if you are opening an existing memory segment.

返回值

On success shmop_open() will return an resource that you can use to access the shared memory segment you've created. FALSE is returned on failure.

更新日志

版本 | 说明
7.0.0 | The return type of shmop_open() has been changed from int to resource.

范例

Example #1 Create a new shared memory block

<?php
$shm_key = ftok(__FILE__, 't');
$shm_id = shmop_open($shm_key, "c", 0644, 100);
?>

This example opened a shared memory block with a system id returned by ftok().

参见

  • shmop_close() - Close shared memory block
  • shmop_delete() - Delete shared memory block

shmop_delete
shmop_read
Shared Memory 函数


Read data from shared memory block

shmop_open
shmop_size
Shared Memory 函数
PHP Manual

shmop_read

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

shmop_read — Read data from shared memory block

说明

string shmop_read ( resource $shmid , int $start , int $count )

shmop_read() will read a string from shared memory block.

参数

shmid

The shared memory block identifier created by shmop_open()

start

Offset from which to start reading

count

The number of bytes to read

返回值

Returns the data 或者在失败时返回 FALSE.

更新日志

版本 | 说明
7.0.0 | The type of shmid has been changed from int to resource.

范例

Example #1 Reading shared memory block

<?php
$shm_data = shmop_read($shm_id, 0, 50);
?>

This example will read 50 bytes from shared memory block and place the data inside $shm_data.

参见

  • shmop_write() - Write data into shared memory block

shmop_open
shmop_size
Shared Memory 函数


Get size of shared memory block

shmop_read
shmop_write
Shared Memory 函数
PHP Manual

shmop_size

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

shmop_size — Get size of shared memory block

说明

int shmop_size ( resource $shmid )

shmop_size() is used to get the size, in bytes of the shared memory block.

参数

shmid

The shared memory block identifier created by shmop_open()

返回值

Returns an int, which represents the number of bytes the shared memory block occupies.

更新日志

版本 | 说明
7.0.0 | The type of shmid has been changed from int to resource.

范例

Example #1 Getting the size of the shared memory block

<?php
$shm_size = shmop_size($shm_id);
?>

This example will put the size of shared memory block identified by $shm_id into $shm_size.

shmop_read
shmop_write
Shared Memory 函数


Write data into shared memory block

shmop_size
Sync
Shared Memory 函数
PHP Manual

shmop_write

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

shmop_write — Write data into shared memory block

说明

int shmop_write ( resource $shmid , string $data , int $offset )

shmop_write() will write a string into shared memory block.

参数

shmid

The shared memory block identifier created by shmop_open()

data

A string to write into shared memory block

offset

Specifies where to start writing data inside the shared memory segment.

返回值

The size of the written data, or FALSE on failure.

更新日志

版本 | 说明
7.0.0 | The type of shmid has been changed from int to resource.

范例

Example #1 Writing to shared memory block

<?php
$shm_bytes_written = shmop_write($shm_id, $my_string, 0);
?>

This example will write data inside $my_string into shared memory block, $shm_bytes_written will contain the number of bytes written.

参见

  • shmop_read() - Read data from shared memory block

shmop_size
Sync
Shared Memory 函数


Sync

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • SyncMutex — The SyncMutex class
    • SyncMutex::__construct — Constructs a new SyncMutex object
    • SyncMutex::lock — Waits for an exclusive lock
    • SyncMutex::unlock — Unlocks the mutex
  • SyncSemaphore — The SyncSemaphore class
    • SyncSemaphore::__construct — Constructs a new SyncSemaphore object
    • SyncSemaphore::lock — Decreases the count of the semaphore or waits
    • SyncSemaphore::unlock — Increases the count of the semaphore
  • SyncEvent — The SyncEvent class
    • SyncEvent::__construct — Constructs a new SyncEvent object
    • SyncEvent::fire — Fires/sets the event
    • SyncEvent::reset — Resets a manual event
    • SyncEvent::wait — Waits for the event to be fired/set
  • SyncReaderWriter — The SyncReaderWriter class
    • SyncReaderWriter::__construct — Constructs a new SyncReaderWriter object
    • SyncReaderWriter::readlock — Waits for a read lock
    • SyncReaderWriter::readunlock — Releases a read lock
    • SyncReaderWriter::writelock — Waits for an exclusive write lock
    • SyncReaderWriter::writeunlock — Releases a write lock
  • SyncSharedMemory — The SyncSharedMemory class
    • SyncSharedMemory::__construct — Constructs a new SyncSharedMemory object
    • SyncSharedMemory::first — Check to see if the object is the first instance system-wide of named shared memory
    • SyncSharedMemory::read — Copy data from named shared memory
    • SyncSharedMemory::size — Returns the size of the named shared memory
    • SyncSharedMemory::write — Copy data to named shared memory
shmop_write
简介
进程控制扩展


简介

The 'sync' extension introduces cross-platform synchonization objects into PHP. Named and unnamed Mutex, Semaphore, Event, Reader-Writer, and named Shared Memory objects provide OS-level synchronization on both POSIX (e.g. Linux) and Windows platforms.

Automatic cleanup of acquired synchronization objects takes place during extension teardown. This means that if PHP prematurely terminates a script (e.g. script execution time is exceeded), objects will not be left in an unknown state. The only exception to this is if PHP itself crashes (e.g. an internal buffer overflow).

Unnamed synchronization objects don't have a lot of use outside of a multithreaded scenario. Unnamed objects are more useful in conjunction with the pthreads PECL extension.

Note:

Named objects require additional care to be used on all systems. If an object is instantiated with a specific set of parameters, it must always be instantiated with those parameters or the object will probably end up in an inconsistent state until the next reboot or a system administrator cleans up the mess.

Sync
安装／配置
Sync


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Sync


需求

A system with support for POSIX shared memory (shm_open()) or running Windows.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/sync.

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
SyncMutex
Sync


The SyncMutex class

(PECL sync >= 1.0.0)

简介

A cross-platform, native implementation of named and unnamed countable mutex objects.

A mutex is a mutual exclusion object that restricts access to a shared resource (e.g. a file) to a single instance. Countable mutexes acquire the mutex a single time and internally track the number of times the mutex is locked. The mutex is unlocked as soon as it goes out of scope or is unlocked the same number of times that it was locked.

类摘要

SyncMutex {
/* 方法 */
public __construct ([ string $name ] )
public bool lock ([ integer $wait = -1 ] )
public bool unlock ([ bool $all = false ] )
}

Table of Contents

  • SyncMutex::__construct — Constructs a new SyncMutex object
  • SyncMutex::lock — Waits for an exclusive lock
  • SyncMutex::unlock — Unlocks the mutex
预定义常量
SyncMutex::__construct
Sync


Constructs a new SyncMutex object

SyncMutex
SyncMutex::lock
SyncMutex
PHP Manual

SyncMutex::__construct

(PECL sync >= 1.0.0)

SyncMutex::__construct — Constructs a new SyncMutex object

说明

public SyncMutex::__construct ([ string $name ] )

Constructs a named or unnamed countable mutex.

参数

name

The name of the mutex if this is a named mutex object.

Note:

If the name already exists, it must be able to be opened by the current user that the process is running as or an exception will be thrown with a meaningless error message.

返回值

The new SyncMutex object. An exception is thrown if the mutex cannot be created or opened.

范例

Example #1 SyncMutex::__construct() named mutex with lock timeout example

<?php
$mutex = new SyncMutex("UniqueName");

if (!$mutex->lock(3000))
{
    echo "Unable to lock mutex.";

    exit();
}

/* ... */

$mutex->unlock();
?>

Example #2 SyncMutex::__construct() unnamed mutex example

<?php
$mutex = new SyncMutex();

$mutex->lock();

/* ... */

$mutex->unlock();
?>

参见

  • SyncMutex::lock() - Waits for an exclusive lock
  • SyncMutex::unlock() - Unlocks the mutex
SyncMutex
SyncMutex::lock
SyncMutex


Waits for an exclusive lock

SyncMutex::__construct
SyncMutex::unlock
SyncMutex
PHP Manual

SyncMutex::lock

(PECL sync >= 1.0.0)

SyncMutex::lock — Waits for an exclusive lock

说明

public bool SyncMutex::lock ([ integer $wait = -1 ] )

Obtains an exclusive lock on a SyncMutex object. If the lock is already acquired, then this increments an internal counter.

参数

wait

The number of milliseconds to wait for the exclusive lock. A value of -1 is infinite.

返回值

A boolean of TRUE if the lock was obtained, FALSE otherwise.

范例

Example #1 SyncMutex::lock() example

<?php
$mutex = new SyncMutex("UniqueName");

if (!$mutex->lock(3000))
{
    echo "Unable to lock mutex.";

    exit();
}

/* ... */

$mutex->unlock();
?>

参见

  • SyncMutex::unlock() - Unlocks the mutex
SyncMutex::__construct
SyncMutex::unlock
SyncMutex


Unlocks the mutex

SyncMutex::lock
SyncSemaphore
SyncMutex
PHP Manual

SyncMutex::unlock

(PECL sync >= 1.0.0)

SyncMutex::unlock — Unlocks the mutex

说明

public bool SyncMutex::unlock ([ bool $all = false ] )

Decreases the internal counter of a SyncMutex object. When the internal counter reaches zero, the actual lock on the object is released.

参数

all

Specifies whether or not to set the internal counter to zero and therefore release the lock.

返回值

A boolean of TRUE if the unlock operation was successful, FALSE otherwise.

范例

Example #1 SyncMutex::unlock() example

<?php
$mutex = new SyncMutex("UniqueName");

$mutex->lock();

/* ... */

$mutex->unlock();
?>

参见

  • SyncMutex::lock() - Waits for an exclusive lock
SyncMutex::lock
SyncSemaphore
SyncMutex


The SyncSemaphore class

(PECL sync >= 1.0.0)

简介

A cross-platform, native implementation of named and unnamed sempahore objects.

A semaphore restricts access to a limited resource to a limited number of instances. Semaphores differ from mutexes in that they can allow more than one instance to access a resource at one time while a mutex only allows one instance at a time.

类摘要

SyncSemaphore {
/* 方法 */
public __construct ([ string $name [, integer $initialval = 1 [, bool $autounlock = true ]]] )
public bool lock ([ integer $wait = -1 ] )
public bool unlock ([ integer &$prevcount ] )
}

Table of Contents

  • SyncSemaphore::__construct — Constructs a new SyncSemaphore object
  • SyncSemaphore::lock — Decreases the count of the semaphore or waits
  • SyncSemaphore::unlock — Increases the count of the semaphore
SyncMutex::unlock
SyncSemaphore::__construct
Sync


Constructs a new SyncSemaphore object

SyncSemaphore
SyncSemaphore::lock
SyncSemaphore
PHP Manual

SyncSemaphore::__construct

(PECL sync >= 1.0.0)

SyncSemaphore::__construct — Constructs a new SyncSemaphore object

说明

public SyncSemaphore::__construct ([ string $name [, integer $initialval = 1 [, bool $autounlock = true ]]] )

Constructs a named or unnamed semaphore.

参数

name

The name of the semaphore if this is a named semaphore object.

Note:

If the name already exists, it must be able to be opened by the current user that the process is running as or an exception will be thrown with a meaningless error message.

initialval

The initial value of the semaphore. This is the number of locks that may be obtained.

autounlock

Specifies whether or not to automatically unlock the semaphore at the conclusion of the PHP script.

Warning

If an object is: A named semaphore with an autounlock of FALSE, the object is locked, and the PHP script concludes before the object is unlocked, then the underlying semaphore will end up in an inconsistent state.

返回值

The new SyncSemaphore object. An exception is thrown if the semaphore cannot be created or opened.

范例

Example #1 SyncSemaphore::__construct() example

<?php
$semaphore = new SyncSemaphore("LimitedResource_2clients", 2);

if (!$semaphore->lock(3000))
{
    echo "Unable to lock semaphore.";

    exit();
}

/* ... */

$semaphore->unlock();
?>

参见

  • SyncSemaphore::lock() - Decreases the count of the semaphore or waits
  • SyncSemaphore::unlock() - Increases the count of the semaphore
SyncSemaphore
SyncSemaphore::lock
SyncSemaphore


Decreases the count of the semaphore or waits

SyncSemaphore::__construct
SyncSemaphore::unlock
SyncSemaphore
PHP Manual

SyncSemaphore::lock

(PECL sync >= 1.0.0)

SyncSemaphore::lock — Decreases the count of the semaphore or waits

说明

public bool SyncSemaphore::lock ([ integer $wait = -1 ] )

Decreases the count of a SyncSemaphore object or waits until the semaphore becomes non-zero.

参数

wait

The number of milliseconds to wait for the semaphore. A value of -1 is infinite.

返回值

A boolean of TRUE if the lock operation was successful, FALSE otherwise.

范例

Example #1 SyncSemaphore::lock() example

<?php
$semaphore = new SyncSemaphore("LimitedResource_2clients", 2);

if (!$semaphore->lock(3000))
{
    echo "Unable to lock semaphore.";

    exit();
}

/* ... */

$semaphore->unlock();
?>

参见

  • SyncSemaphore::unlock() - Increases the count of the semaphore
SyncSemaphore::__construct
SyncSemaphore::unlock
SyncSemaphore


Increases the count of the semaphore

SyncSemaphore::lock
SyncEvent
SyncSemaphore
PHP Manual

SyncSemaphore::unlock

(PECL sync >= 1.0.0)

SyncSemaphore::unlock — Increases the count of the semaphore

说明

public bool SyncSemaphore::unlock ([ integer &$prevcount ] )

Increases the count of a SyncSemaphore object.

参数

prevcount

Returns the previous count of the semaphore.

返回值

A boolean of TRUE if the unlock operation was successful, FALSE otherwise.

范例

Example #1 SyncSemaphore::unlock() example

<?php
$semaphore = new SyncSemaphore("LimitedResource_2clients", 2);

if (!$semaphore->lock(3000))
{
    echo "Unable to lock semaphore.";

    exit();
}

/* ... */

$semaphore->unlock();
?>

参见

  • SyncSemaphore::lock() - Decreases the count of the semaphore or waits
SyncSemaphore::lock
SyncEvent
SyncSemaphore


The SyncEvent class

(PECL sync >= 1.0.0)

简介

A cross-platform, native implementation of named and unnamed event objects. Both automatic and manual event objects are supported.

An event object waits, without polling, for the object to be fired/set. One instance waits on the event object while another instance fires/sets the event. Event objects are useful wherever a long-running process would otherwise poll a resource (e.g. checking to see if uploaded data needs to be processed).

类摘要

SyncEvent {
/* 方法 */
public __construct ([ string $name [, bool $manual = false [, bool $prefire = false ]]] )
public bool fire ( void )
public bool reset ( void )
public bool wait ([ integer $wait = -1 ] )
}

Table of Contents

  • SyncEvent::__construct — Constructs a new SyncEvent object
  • SyncEvent::fire — Fires/sets the event
  • SyncEvent::reset — Resets a manual event
  • SyncEvent::wait — Waits for the event to be fired/set
SyncSemaphore::unlock
SyncEvent::__construct
Sync


Constructs a new SyncEvent object

SyncEvent
SyncEvent::fire
SyncEvent
PHP Manual

SyncEvent::__construct

(PECL sync >= 1.0.0)

SyncEvent::__construct — Constructs a new SyncEvent object

说明

public SyncEvent::__construct ([ string $name [, bool $manual = false [, bool $prefire = false ]]] )

Constructs a named or unnamed event object.

参数

name

The name of the event if this is a named event object.

Note:

If the name already exists, it must be able to be opened by the current user that the process is running as or an exception will be thrown with a meaningless error message.

manual

Specifies whether or not the event object must be reset manually.

Note:

Manual reset event objects allow all waiting processes through until the object is reset.

prefire

Specifies whether or not to prefire (signal) the event object.

Note:

Only has impact if the calling process/thread is the first to create the object.

返回值

The new SyncEvent object. An exception is thrown if the event object cannot be created or opened.

范例

Example #1 SyncEvent::__construct() example

<?php
// In a web application:
$event = new SyncEvent("GetAppReport");
$event->fire();

// In a cron job:
$event = new SyncEvent("GetAppReport");
$event->wait();
?>

更新日志

版本 | 说明
1.1.0 | Added prefire.

参见

  • SyncEvent::fire() - Fires/sets the event
  • SyncEvent::reset() - Resets a manual event
  • SyncEvent::wait() - Waits for the event to be fired/set
SyncEvent
SyncEvent::fire
SyncEvent


Fires/sets the event

SyncEvent::__construct
SyncEvent::reset
SyncEvent
PHP Manual

SyncEvent::fire

(PECL sync >= 1.0.0)

SyncEvent::fire — Fires/sets the event

说明

public bool SyncEvent::fire ( void )

Fires/sets a SyncEvent object. Lets multiple threads through that are waiting if the event object was created with a manual value of TRUE.

参数

此函数没有参数。

返回值

A boolean of TRUE if the event was fired, FALSE otherwise.

范例

Example #1 SyncEvent::fire() example

<?php
// In a web application:
$event = new SyncEvent("GetAppReport");
$event->fire();

// In a cron job:
$event = new SyncEvent("GetAppReport");
$event->wait();
?>

参见

  • SyncEvent::reset() - Resets a manual event
  • SyncEvent::wait() - Waits for the event to be fired/set
SyncEvent::__construct
SyncEvent::reset
SyncEvent


Resets a manual event

SyncEvent::fire
SyncEvent::wait
SyncEvent
PHP Manual

SyncEvent::reset

(PECL sync >= 1.0.0)

SyncEvent::reset — Resets a manual event

说明

public bool SyncEvent::reset ( void )

Resets a SyncEvent object that has been fired/set. Only valid for manual event objects.

参数

此函数没有参数。

返回值

A boolean value of TRUE if the object was successfully reset, FALSE otherwise.

范例

Example #1 SyncEvent::reset() example

<?php
// In a web application:
$event = new SyncEvent("DemoApplication", true);
$event->wait();

// In a cron job:
$event = new SyncEvent("DemoApplication", true);
$event->reset();
/* ... Do some maintenance task(s) ... */
$event->fire();
?>

参见

  • SyncEvent::fire() - Fires/sets the event
  • SyncEvent::reset()
  • SyncEvent::wait() - Waits for the event to be fired/set
SyncEvent::fire
SyncEvent::wait
SyncEvent


Waits for the event to be fired/set

SyncEvent::reset
SyncReaderWriter
SyncEvent
PHP Manual

SyncEvent::wait

(PECL sync >= 1.0.0)

SyncEvent::wait — Waits for the event to be fired/set

说明

public bool SyncEvent::wait ([ integer $wait = -1 ] )

Waits for the SyncEvent object to be fired.

参数

wait

The number of milliseconds to wait for the event to be fired. A value of -1 is infinite.

返回值

A boolean of TRUE if the event was fired, FALSE otherwise.

范例

Example #1 SyncEvent::wait() example

<?php
// In a web application:
$event = new SyncEvent("GetAppReport");
$event->fire();

// In a cron job:
$event = new SyncEvent("GetAppReport");
$event->wait();
?>

参见

  • SyncEvent::fire() - Fires/sets the event
SyncEvent::reset
SyncReaderWriter
SyncEvent


The SyncReaderWriter class

(PECL sync >= 1.0.0)

简介

A cross-platform, native implementation of named and unnamed reader-writer objects.

A reader-writer object allows many readers or one writer to access a resource. This is an efficient solution for managing resources where access will primarily be read-only but exclusive write access is occasionally necessary.

类摘要

SyncReaderWriter {
/* 方法 */
public __construct ([ string $name [, bool $autounlock = true ]] )
public bool readlock ([ integer $wait = -1 ] )
public bool readunlock ( void )
public bool writelock ([ integer $wait = -1 ] )
public bool writeunlock ( void )
}

Table of Contents

  • SyncReaderWriter::__construct — Constructs a new SyncReaderWriter object
  • SyncReaderWriter::readlock — Waits for a read lock
  • SyncReaderWriter::readunlock — Releases a read lock
  • SyncReaderWriter::writelock — Waits for an exclusive write lock
  • SyncReaderWriter::writeunlock — Releases a write lock
SyncEvent::wait
SyncReaderWriter::__construct
Sync


Constructs a new SyncReaderWriter object

SyncReaderWriter
SyncReaderWriter::readlock
SyncReaderWriter
PHP Manual

SyncReaderWriter::__construct

(PECL sync >= 1.0.0)

SyncReaderWriter::__construct — Constructs a new SyncReaderWriter object

说明

public SyncReaderWriter::__construct ([ string $name [, bool $autounlock = true ]] )

Constructs a named or unnamed reader-writer object.

参数

name

The name of the reader-writer if this is a named reader-writer object.

Note:

If the name already exists, it must be able to be opened by the current user that the process is running as or an exception will be thrown with a meaningless error message.

autounlock

Specifies whether or not to automatically unlock the reader-writer at the conclusion of the PHP script.

Warning

If an object is: A named reader-writer with an autounlock of FALSE, the object is locked for either reading or writing, and the PHP script concludes before the object is unlocked, then the underlying objects will end up in an inconsistent state.

返回值

The new SyncReaderWriter object. An exception is thrown if the reader-writer cannot be created or opened.

范例

Example #1 SyncReaderWriter::__construct() example

<?php
$readwrite = new SyncReaderWriter("FileCacheLock");
$readwrite->readlock();
/* ... */
$readwrite->readunlock();

$readwrite->writelock();
/* ... */
$readwrite->writeunlock();
?>

参见

  • SyncReaderWriter::readlock() - Waits for a read lock
  • SyncReaderWriter::readunlock() - Releases a read lock
  • SyncReaderWriter::writelock() - Waits for an exclusive write lock
  • SyncReaderWriter::writeunlock() - Releases a write lock
SyncReaderWriter
SyncReaderWriter::readlock
SyncReaderWriter


Waits for a read lock

SyncReaderWriter::__construct
SyncReaderWriter::readunlock
SyncReaderWriter
PHP Manual

SyncReaderWriter::readlock

(PECL sync >= 1.0.0)

SyncReaderWriter::readlock — Waits for a read lock

说明

public bool SyncReaderWriter::readlock ([ integer $wait = -1 ] )

Obtains a read lock on a SyncReaderWriter object.

参数

wait

The number of milliseconds to wait for a lock. A value of -1 is infinite.

返回值

A boolean of TRUE if the lock was obtained, FALSE otherwise.

范例

Example #1 SyncReaderWriter::readlock() example

<?php
$readwrite = new SyncReaderWriter("FileCacheLock");
$readwrite->readlock();
/* ... */
$readwrite->readunlock();
?>

参见

  • SyncReaderWriter::readunlock() - Releases a read lock
SyncReaderWriter::__construct
SyncReaderWriter::readunlock
SyncReaderWriter


Releases a read lock

SyncReaderWriter::readlock
SyncReaderWriter::writelock
SyncReaderWriter
PHP Manual

SyncReaderWriter::readunlock

(PECL sync >= 1.0.0)

SyncReaderWriter::readunlock — Releases a read lock

说明

public bool SyncReaderWriter::readunlock ( void )

Releases a read lock on a SyncReaderWriter object.

参数

此函数没有参数。

返回值

A boolean of TRUE if the unlock operation was successful, FALSE otherwise.

范例

Example #1 SyncReaderWriter::readunlock() example

<?php
$readwrite = new SyncReaderWriter("FileCacheLock");
$readwrite->readlock();
/* ... */
$readwrite->readunlock();
?>

参见

  • SyncReaderWriter::readlock() - Waits for a read lock
SyncReaderWriter::readlock
SyncReaderWriter::writelock
SyncReaderWriter


Waits for an exclusive write lock

SyncReaderWriter::readunlock
SyncReaderWriter::writeunlock
SyncReaderWriter
PHP Manual

SyncReaderWriter::writelock

(PECL sync >= 1.0.0)

SyncReaderWriter::writelock — Waits for an exclusive write lock

说明

public bool SyncReaderWriter::writelock ([ integer $wait = -1 ] )

Obtains an exclusive write lock on a SyncReaderWriter object.

参数

wait

The number of milliseconds to wait for a lock. A value of -1 is infinite.

返回值

A boolean of TRUE if the lock was obtained, FALSE otherwise.

范例

Example #1 SyncReaderWriter::writelock() example

<?php
$readwrite = new SyncReaderWriter("FileCacheLock");
$readwrite->writelock();
/* ... */
$readwrite->writeunlock();
?>

参见

  • SyncReaderWriter::writeunlock() - Releases a write lock
SyncReaderWriter::readunlock
SyncReaderWriter::writeunlock
SyncReaderWriter


Releases a write lock

SyncReaderWriter::writelock
SyncSharedMemory
SyncReaderWriter
PHP Manual

SyncReaderWriter::writeunlock

(PECL sync >= 1.0.0)

SyncReaderWriter::writeunlock — Releases a write lock

说明

public bool SyncReaderWriter::writeunlock ( void )

Releases a write lock on a SyncReaderWriter object.

参数

此函数没有参数。

返回值

A boolean of TRUE if the unlock operation was successful, FALSE otherwise.

范例

Example #1 SyncReaderWriter::writeunlock() example

<?php
$readwrite = new SyncReaderWriter("FileCacheLock");
$readwrite->writelock();
/* ... */
$readwrite->writeunlock();
?>

参见

  • SyncReaderWriter::writelock() - Waits for an exclusive write lock
SyncReaderWriter::writelock
SyncSharedMemory
SyncReaderWriter


The SyncSharedMemory class

(PECL sync >= 1.1.0)

简介

A cross-platform, native, consistent implementation of named shared memory objects.

Shared memory lets two separate processes communicate without the need for complex pipes or sockets. There are several integer-based shared memory implementations for PHP. Named shared memory is an alternative.

Synchronization objects (e.g. SyncMutex) are still required to protect most uses of shared memory.

类摘要

SyncSharedMemory {
/* 方法 */
public __construct ( string $name , integer $size )
public bool first ( void )
public read ([ integer $start = 0 [, integer $length ]] )
public bool size ( void )
public write ([ string $string [, integer $start = 0 ]] )
}

Table of Contents

  • SyncSharedMemory::__construct — Constructs a new SyncSharedMemory object
  • SyncSharedMemory::first — Check to see if the object is the first instance system-wide of named shared memory
  • SyncSharedMemory::read — Copy data from named shared memory
  • SyncSharedMemory::size — Returns the size of the named shared memory
  • SyncSharedMemory::write — Copy data to named shared memory
SyncReaderWriter::writeunlock
SyncSharedMemory::__construct
Sync


Constructs a new SyncSharedMemory object

SyncSharedMemory
SyncSharedMemory::first
SyncSharedMemory
PHP Manual

SyncSharedMemory::__construct

(PECL sync >= 1.1.0)

SyncSharedMemory::__construct — Constructs a new SyncSharedMemory object

说明

public SyncSharedMemory::__construct ( string $name , integer $size )

Constructs a named shared memory object.

参数

name

The name of the shared memory object.

Note:

If the name already exists, it must be able to be opened by the current user that the process is running as or an exception will be thrown with a meaningless error message.

size

The size, in bytes, of shared memory to reserve.

Note:

The amount of memory cannot be resized later. Request sufficient storage up front.

返回值

The new SyncSharedMemory object. An exception is thrown if the shared memory object cannot be created or opened.

范例

Example #1 SyncSharedMemory::__construct() example

<?php
// You will probably need to protect shared memory with other synchronization objects.
// Shared memory goes away when the last reference to it disappears.
$mem = new SyncSharedMemory("AppReportName", 1024);
if ($mem->first())
{
    // Do first time initialization work here.
}

$result = $mem->write(json_encode(array("name" => "my_report.txt")));
?>

参见

  • SyncSharedMemory::first() - Check to see if the object is the first instance system-wide of named shared memory
  • SyncSharedMemory::size() - Returns the size of the named shared memory
  • SyncSharedMemory::write() - Copy data to named shared memory
  • SyncSharedMemory::read() - Copy data from named shared memory
SyncSharedMemory
SyncSharedMemory::first
SyncSharedMemory


Check to see if the object is the first instance system-wide of named shared memory

SyncSharedMemory::__construct
SyncSharedMemory::read
SyncSharedMemory
PHP Manual

SyncSharedMemory::first

(PECL sync >= 1.1.0)

SyncSharedMemory::first — Check to see if the object is the first instance system-wide of named shared memory

说明

public bool SyncSharedMemory::first ( void )

Retrieves the system-wide first instance status of a SyncSharedMemory object.

参数

此函数没有参数。

返回值

A boolean of TRUE if the object is the first instance system-wide, FALSE otherwise.

范例

Example #1 SyncSharedMemory::first() example

<?php
$mem = new SyncSharedMemory("AppReportName", 1024);
if ($mem->first())
{
    // Do first time initialization work here.
}

var_dump($mem->first());

$mem2 = new SyncSharedMemory("AppReportName", 1024);

var_dump($mem2->first());
?>

以上例程的输出类似于：

bool(true)
bool(false)

参见

  • SyncSharedMemory::write() - Copy data to named shared memory
  • SyncSharedMemory::read() - Copy data from named shared memory
SyncSharedMemory::__construct
SyncSharedMemory::read
SyncSharedMemory


Copy data from named shared memory

SyncSharedMemory::first
SyncSharedMemory::size
SyncSharedMemory
PHP Manual

SyncSharedMemory::read

(PECL sync >= 1.1.0)

SyncSharedMemory::read — Copy data from named shared memory

说明

public SyncSharedMemory::read ([ integer $start = 0 [, integer $length ]] )

Copies data from named shared memory.

参数

start

The start/offset, in bytes, to begin reading.

Note:

If the value is negative, the starting position will begin at the specified number of bytes from the end of the shared memory segment.

length

The number of bytes to read.

Note:

If unspecified, reading will stop at the end of the shared memory segment.

If the value is negative, reading will stop the specified number of bytes from the end of the shared memory segment.

返回值

A string containing the data read from shared memory.

范例

Example #1 SyncSharedMemory::__construct() example

<?php
// You will probably need to protect shared memory with other synchronization objects.
// Shared memory goes away when the last reference to it disappears.
$mem = new SyncSharedMemory("AppReportName", 1024);
if ($mem->first())
{
    // Do first time initialization work here.
}

$result = $mem->write("report.txt");

$result = $mem->read(3, -4);
var_dump($result);
?>

以上例程的输出类似于：

string(3) "ort"

参见

  • SyncSharedMemory::__construct() - Constructs a new SyncSharedMemory object
  • SyncSharedMemory::first() - Check to see if the object is the first instance system-wide of named shared memory
  • SyncSharedMemory::write() - Copy data to named shared memory
  • SyncSharedMemory::read()
SyncSharedMemory::first
SyncSharedMemory::size
SyncSharedMemory


Returns the size of the named shared memory

SyncSharedMemory::read
SyncSharedMemory::write
SyncSharedMemory
PHP Manual

SyncSharedMemory::size

(PECL sync >= 1.1.0)

SyncSharedMemory::size — Returns the size of the named shared memory

说明

public bool SyncSharedMemory::size ( void )

Retrieves the shared memory size of a SyncSharedMemory object.

参数

此函数没有参数。

返回值

An integer containing the size of the shared memory. This will be the same size that was passed to the constructor.

范例

Example #1 SyncSharedMemory::size() example

<?php
$mem = new SyncSharedMemory("AppReportName", 1024);
var_dump($mem->size());
?>

以上例程的输出类似于：

int(1024)

参见

  • SyncSharedMemory::__construct() - Constructs a new SyncSharedMemory object
  • SyncSharedMemory::write() - Copy data to named shared memory
  • SyncSharedMemory::read() - Copy data from named shared memory
SyncSharedMemory::read
SyncSharedMemory::write
SyncSharedMemory


Copy data to named shared memory

SyncSharedMemory::size
其它基本扩展
SyncSharedMemory
PHP Manual

SyncSharedMemory::write

(PECL sync >= 1.1.0)

SyncSharedMemory::write — Copy data to named shared memory

说明

public SyncSharedMemory::write ([ string $string [, integer $start = 0 ]] )

Copies data to named shared memory.

参数

string

The data to write to shared memoy.

Note:

If the size of the data exceeds the size of the shared memory, the number of bytes written returned will be less than the length of the input.

start

The start/offset, in bytes, to begin writing.

Note:

If the value is negative, the starting position will begin at the specified number of bytes from the end of the shared memory segment.

返回值

An integer containing the number of bytes written to shared memory.

范例

Example #1 SyncSharedMemory::write() example

<?php
// You will probably need to protect shared memory with other synchronization objects.
// Shared memory goes away when the last reference to it disappears.
$mem = new SyncSharedMemory("AppReportName", 1024);
if ($mem->first())
{
    // Do first time initialization work here.
}

$result = $mem->write("report.txt");
var_dump($result);

$result = $mem->write("report.txt", -3);
var_dump($result);
?>

以上例程的输出类似于：

int(10)
int(3)

参见

  • SyncSharedMemory::__construct() - Constructs a new SyncSharedMemory object
  • SyncSharedMemory::first() - Check to see if the object is the first instance system-wide of named shared memory
  • SyncSharedMemory::write()
  • SyncSharedMemory::read() - Copy data from named shared memory
SyncSharedMemory::size
其它基本扩展
SyncSharedMemory


其它基本扩展

  • GeoIP — Geo IP 定位
    • 简介
    • 安装／配置
    • 预定义常量
    • GeoIP 函数
  • FANN — FANN (Fast Artificial Neural Network)
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Fann 函数
    • FANNConnection — The FANNConnection class
  • JSON — JavaScript对象符号（JSON）
    • 简介
    • 安装／配置
    • 预定义常量
    • JsonSerializable — JSON 序列化接口
    • JSON 函数
  • Judy — Judy Arrays
    • 简介
    • 安装／配置
    • Judy — The Judy class
    • Judy 函数
  • Lua
    • 简介
    • 安装／配置
    • Lua — Lua类
    • LuaClosure — LuaClosure类
  • Misc. — 杂项函数
    • 简介
    • 安装／配置
    • 预定义常量
    • 杂项 函数
  • Parsekit
    • 简介
    • 安装／配置
    • 预定义常量
    • Parsekit 函数
  • SPL — PHP标准库 (SPL)
    • 简介
    • 安装／配置
    • 预定义常量
    • 数据结构
    • 迭代器
    • 接口
    • 异常
    • SPL 函数
    • 文件处理
    • 各种类及接口
  • SPL Types — SPL Type Handling
    • 简介
    • 安装／配置
    • SplType — The SplType class
    • SplInt — The SplInt class
    • SplFloat — The SplFloat class
    • SplEnum — The SplEnum class
    • SplBool — The SplBool class
    • SplString — The SplString class
  • Streams
    • 简介
    • 安装／配置
    • 预定义常量
    • Stream Filters
    • Stream Contexts
    • Stream Errors
    • 范例
    • php_user_filter — The php_user_filter class
    • streamWrapper — The streamWrapper class
    • Stream 函数
  • Tidy
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • tidy — The tidy class
    • tidyNode — The tidyNode class
    • Tidy 函数
  • Tokenizer
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Tokenizer 函数
  • URLs
    • 简介
    • 安装／配置
    • 预定义常量
    • URL 函数
  • V8js — V8 Javascript Engine Integration
    • 简介
    • 安装／配置
    • 范例
    • V8Js — The V8Js class
    • V8JsException — The V8JsException class
  • Yaml — YAML 数据序列化
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Callbacks
    • Yaml 函数
  • Yaf — Yet Another Framework
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • 应用配置
    • Yaf_Application — The Yaf_Application class
    • Yaf_Bootstrap_Abstract — The Yaf_Bootstrap_Abstract class
    • Yaf_Dispatcher — Yaf_Dispatcher 类
    • Yaf_Config_Abstract — The Yaf_Config_Abstract class
    • Yaf_Config_Ini — The Yaf_Config_Ini class
    • Yaf_Config_Simple — The Yaf_Config_Simple class
    • Yaf_Controller_Abstract — The Yaf_Controller_Abstract class
    • Yaf_Action_Abstract — The Yaf_Action_Abstract class
    • Yaf_View_Interface — The Yaf_View_Interface class
    • Yaf_View_Simple — The Yaf_View_Simple Class
    • Yaf_Loader — The Yaf_Loader class
    • Yaf_Plugin_Abstract — The Yaf_Plugin_Abstract class
    • Yaf_Registry — The Yaf_Registry class
    • Yaf_Request_Abstract — The Yaf_Request_Abstract class
    • Yaf_Request_Http — The Yaf_Request_Http class
    • Yaf_Request_Simple — The Yaf_Request_Simple class
    • Yaf_Response_Abstract — The Yaf_Response_Abstract class
    • Yaf_Route_Interface — The Yaf_Route_Interface class
    • Yaf_Route_Map — The Yaf_Route_Map class
    • Yaf_Route_Regex — The Yaf_Route_Regex class
    • Yaf_Route_Rewrite — The Yaf_Route_Rewrite class
    • Yaf_Router — The Yaf_Router class
    • Yaf_Route_Simple — The Yaf_Route_Simple class
    • Yaf_Route_Static — The Yaf_Route_Static class
    • Yaf_Route_Supervar — The Yaf_Route_Supervar class
    • Yaf_Session — The Yaf_Session class
    • Yaf_Exception — The Yaf_Exception class
    • Yaf_Exception_TypeError — The Yaf_Exception_TypeError class
    • Yaf_Exception_StartupError — The Yaf_Exception_StartupError class
    • Yaf_Exception_DispatchFailed — The Yaf_Exception_DispatchFailed class
    • Yaf_Exception_RouterFailed — The Yaf_Exception_RouterFailed class
    • Yaf_Exception_LoadFailed — The Yaf_Exception_LoadFailed class
    • Yaf_Exception_LoadFailed_Module — The Yaf_Exception_LoadFailed_Module class
    • Yaf_Exception_LoadFailed_Controller — The Yaf_Exception_LoadFailed_Controller class
    • Yaf_Exception_LoadFailed_Action — The Yaf_Exception_LoadFailed_Action class
    • Yaf_Exception_LoadFailed_View — The Yaf_Exception_LoadFailed_View class
  • Taint
    • 简介
    • 安装／配置
    • More Details
    • Taint 函数
SyncSharedMemory::write
GeoIP
函数参考


Geo IP 定位

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • GeoIP 函数
    • geoip_asnum_by_name — 获取自治系统号(ASN)
    • geoip_continent_code_by_name — 获取七大洲的大写字母简称
    • geoip_country_code_by_name — 获取国家代码
    • geoip_country_code3_by_name — 获取三个字母组成的国家简称
    • geoip_country_name_by_name — 获取国家的全称
    • geoip_database_info — 获取 GeoIP 数据库的信息
    • geoip_db_avail — GeoIP 数据库是否可用
    • geoip_db_filename — 返回 GeoIP 数据库相对应的文件名
    • geoip_db_get_all_info — 返回所有 GeoIP 数据库类型的详细信息
    • geoip_domain_by_name — 获取二级域名
    • geoip_id_by_name — 获取网络连接类型
    • geoip_isp_by_name — 获取 ISP (网络服务提供商)的名称
    • geoip_netspeedcell_by_name — 获取网络连接速度
    • geoip_org_by_name — 获取机构的名称
    • geoip_record_by_name — 返回 GeoIP 数据库中详细的城市信息
    • geoip_region_by_name — 获取国家和地区代码
    • geoip_region_name_by_code — 返回给定的国家和地区代码组合所对应的地区名称
    • geoip_setup_custom_directory — 自定义 GeoIP 数据库的目录
    • geoip_time_zone_by_country_and_region — 返回国家和地区的时区
其它基本扩展
简介
其它基本扩展


简介

GeoIP 扩展可以通过 IP 地址来确定地理位置。比如城市、州、国家、经度、纬度以及其他信息，比如 ISP (因特网服务提供商)和网络连接类型。

GeoIP
安装／配置
GeoIP


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
GeoIP


需求

这个扩展要求系统安装了 GeoIP C 语言库的1.4.0及以上版本。可通过以下链接 » http://www.maxmind.com/app/c 下载编译该库。

默认情况下只能使用免费的 GeoIP Country 或者 GeoLite City 的数据库。然而这个模块可以使用其他类型的数据库，但必须从以下链接购买商业许可 » Maxmind.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/geoip.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

GeoIP 配置选项
名字 | 默认 | 可修改范围 | 更新日志
geoip.custom_directory | "" | PHP_INI_ALL |

这是配置指令的简短说明。

geoip.custom_directory string

默认为空，但是可以设置一个不同的数据库来覆盖该扩展自带的数据库。

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

GEOIP_COUNTRY_EDITION (integer)
GEOIP_REGION_EDITION_REV0 (integer)
GEOIP_CITY_EDITION_REV0 (integer)
GEOIP_ORG_EDITION (integer)
GEOIP_ISP_EDITION (integer)
GEOIP_CITY_EDITION_REV1 (integer)
GEOIP_REGION_EDITION_REV1 (integer)
GEOIP_PROXY_EDITION (integer)
GEOIP_ASNUM_EDITION (integer)
GEOIP_NETSPEED_EDITION (integer)
GEOIP_DOMAIN_EDITION (integer)

以下常量是用来表示网速的:

GEOIP_UNKNOWN_SPEED (integer)
GEOIP_DIALUP_SPEED (integer)
GEOIP_CABLEDSL_SPEED (integer)
GEOIP_CORPORATE_SPEED (integer)
资源类型
GeoIP 函数
GeoIP


GeoIP 函数

Table of Contents

  • geoip_asnum_by_name — 获取自治系统号(ASN)
  • geoip_continent_code_by_name — 获取七大洲的大写字母简称
  • geoip_country_code_by_name — 获取国家代码
  • geoip_country_code3_by_name — 获取三个字母组成的国家简称
  • geoip_country_name_by_name — 获取国家的全称
  • geoip_database_info — 获取 GeoIP 数据库的信息
  • geoip_db_avail — GeoIP 数据库是否可用
  • geoip_db_filename — 返回 GeoIP 数据库相对应的文件名
  • geoip_db_get_all_info — 返回所有 GeoIP 数据库类型的详细信息
  • geoip_domain_by_name — 获取二级域名
  • geoip_id_by_name — 获取网络连接类型
  • geoip_isp_by_name — 获取 ISP (网络服务提供商)的名称
  • geoip_netspeedcell_by_name — 获取网络连接速度
  • geoip_org_by_name — 获取机构的名称
  • geoip_record_by_name — 返回 GeoIP 数据库中详细的城市信息
  • geoip_region_by_name — 获取国家和地区代码
  • geoip_region_name_by_code — 返回给定的国家和地区代码组合所对应的地区名称
  • geoip_setup_custom_directory — 自定义 GeoIP 数据库的目录
  • geoip_time_zone_by_country_and_region — 返回国家和地区的时区
预定义常量
geoip_asnum_by_name
GeoIP


获取自治系统号(ASN)

GeoIP 函数
geoip_continent_code_by_name
GeoIP 函数
PHP Manual

geoip_asnum_by_name

(PECL geoip >= 1.1.0)

geoip_asnum_by_name — 获取自治系统号(ASN)

说明

string geoip_asnum_by_name ( string $hostname )

geoip_asnum_by_name() 函数将会返回和 IP 地址相关联的自治系统号(ASN)。

参数

hostname

主机的 IP 地址。

返回值

如果成功将会返回自治系统号，如果在数据库中未找到相关信息则返回 FALSE 。

范例

Example #1 geoip_asnum_by_name()函数的范例：

以下代码将会输出 www.example.com 域名的 ASN。

<?php
$asn = geoip_asnum_by_name('www.example.com');

if ($asn) {
    echo 'The ASN is: ' $asn;
}
?>

以上例程会输出：

The ASN is: AS15133 EdgeCast Networks, Inc

GeoIP 函数
geoip_continent_code_by_name
GeoIP 函数


获取七大洲的大写字母简称

geoip_asnum_by_name
geoip_country_code_by_name
GeoIP 函数
PHP Manual

geoip_continent_code_by_name

(PECL geoip >= 1.0.3)

geoip_continent_code_by_name — 获取七大洲的大写字母简称

说明

string geoip_continent_code_by_name ( string $hostname )

geoip_continent_code_by_name() 函数将会返回主机或者IP地址相对应的七大洲大写字母简称。

参数

hostname

所要定位的主机或IP地址。

返回值

成功，返回两个大写字母组成的七大洲简称字符串, 如果在数据库中未找到相关信息则返回 FALSE 。

洲代码
Code | 洲名
AF | 非洲
AN | 南极洲
AS | 亚洲
EU | 欧洲
NA | 北美洲
OC | 大洋洲
SA | 南美洲

范例

Example #1 geoip_continent_code_by_name() 函数的使用范例：

以下代码将会打印 example.com 的定位信息。

<?php
$continent = geoip_continent_code_by_name('www.example.com');
if ($continent) {
    echo 'This host is located in: ' . $continent;
}
?>

以上例程会输出：

 This host is located in: NA

参见

  • geoip_country_code_by_name() - 获取国家代码

geoip_asnum_by_name
geoip_country_code_by_name
GeoIP 函数


获取国家代码

geoip_continent_code_by_name
geoip_country_code3_by_name
GeoIP 函数
PHP Manual

geoip_country_code_by_name

(PECL geoip >= 0.2.0)

geoip_country_code_by_name — 获取国家代码

说明

string geoip_country_code_by_name ( string $hostname )

geoip_country_code_by_name() 函数将会返回主机或者IP地址所在的国家代码。

参数

hostname

定位的主机名或者IP地址。

返回值

成功，返回 ISO 定义的国家代码，如果在数据库中未找到相关信息则返回 FALSE 。

范例

Example #1 geoip_country_code_by_name() 函数的范例：

以下代码将会打印 example.com 主机的定位信息。

<?php
$country = geoip_country_code_by_name('www.example.com');
if ($country) {
    echo 'This host is located in: ' . $country;
}
?>

以上例程会输出：

This host is located in: US

注释

Caution

请点击 » http://www.maxmind.com/en/iso3166 来查看所有可能的返回值列表，包括特殊代码。

参见

  • geoip_country_code3_by_name() - 获取三个字母组成的国家简称
  • geoip_country_name_by_name() - 获取国家的全称

geoip_continent_code_by_name
geoip_country_code3_by_name
GeoIP 函数


获取三个字母组成的国家简称

geoip_country_code_by_name
geoip_country_name_by_name
GeoIP 函数
PHP Manual

geoip_country_code3_by_name

(PECL geoip >= 0.2.0)

geoip_country_code3_by_name — 获取三个字母组成的国家简称

说明

string geoip_country_code3_by_name ( string $hostname )

geoip_country_code3_by_name() 函数返回由三个字母组成和主机或者 IP 相对应的国家代码。

参数

hostname

定位所用的主机名或者 IP 地址。

返回值

成功，返回由三个字母组成的国家简称，如果在数据库中未找到相关信息则返回 FALSE 。

范例

Example #1 geoip_country_code3_by_name() 函数的使用范例：

以下代码将会打印 example.com 主机的定位信息。

<?php
$country = geoip_country_code3_by_name('www.example.com');
if ($country) {
    echo 'This host is located in: ' . $country;
}
?>

以上例程会输出：

This host is located in: USA

参见

  • geoip_country_code_by_name() - 获取国家代码
  • geoip_country_name_by_name() - 获取国家的全称

geoip_country_code_by_name
geoip_country_name_by_name
GeoIP 函数


获取国家的全称

geoip_country_code3_by_name
geoip_database_info
GeoIP 函数
PHP Manual

geoip_country_name_by_name

(PECL geoip >= 0.2.0)

geoip_country_name_by_name — 获取国家的全称

说明

string geoip_country_name_by_name ( string $hostname )

geoip_country_name_by_name() 函数返回主机或者 IP 地址所对应的国家名全称。

参数

hostname

定位所用的主机或者 IP 地址。

返回值

成功，返回国家全称，如果在数据库中未找到相关信息则返回 FALSE 。

范例

Example #1 geoip_country_name_by_name() 函数的使用范例：

以下代码将会打印 example.com 主机的定位信息。

<?php
$country = geoip_country_name_by_name('www.example.com');
if ($country) {
    echo 'This host is located in: ' . $country;
}
?>

以上例程会输出：

 This host is located in: United States

参见

  • geoip_country_code_by_name() - 获取国家代码
  • geoip_country_code3_by_name() - 获取三个字母组成的国家简称

geoip_country_code3_by_name
geoip_database_info
GeoIP 函数


获取 GeoIP 数据库的信息

geoip_country_name_by_name
geoip_db_avail
GeoIP 函数
PHP Manual

geoip_database_info

(PECL geoip >= 0.2.0)

geoip_database_info — 获取 GeoIP 数据库的信息

说明

string geoip_database_info ([ int $database = GEOIP_COUNTRY_EDITION ] )

geoip_database_info() 函数返回 GeoIP 数据库版本的信息。

如果无参调用该函数，则返回 GeoIP 免费国家版的版本信息。

参数

database

该变量的类型为整型。你可以使用该扩展的预定义常量(类似: GEOIP_*_EDITION)。

返回值

如果成功，返回数据库的版本信息，错误则返回NULL 。

范例

Example #1 geoip_database_info() 函数的使用范例：

以下代码将会输出数据库的相关信息。

<?php
print geoip_database_info(GEOIP_COUNTRY_EDITION);
?>

以上例程会输出：

GEO-106FREE 20060801 Build 1 Copyright (c) 2006 MaxMind LLC All Rights Reserved

geoip_country_name_by_name
geoip_db_avail
GeoIP 函数


GeoIP 数据库是否可用

geoip_database_info
geoip_db_filename
GeoIP 函数
PHP Manual

geoip_db_avail

(PECL geoip >= 1.0.1)

geoip_db_avail — GeoIP 数据库是否可用

说明

bool geoip_db_avail ( int $database )

geoip_db_avail() 函数返回 GeoI P数据库是否可以在磁盘上打开并且可用。

该函数不能用来判断是否是个合适的数据库，除非这个数据库可读。

参数

database

变量类型为整型。你可以使用该扩展的预定义常量(比如: GEOIP_*_EDITION)。

返回值

如果存在则返回 TRUE , 未找到则返回 FALSE , 错误则返回 NULL 。

范例

Example #1 geoip_db_avail() 函数的使用范例：

以下代码将会输出当前数据库的版本信息。

<?php

if (geoip_db_avail(GEOIP_COUNTRY_EDITION))
    print geoip_database_info(GEOIP_COUNTRY_EDITION);
?>

以上例程会输出：

GEO-106FREE 20080801 Build 1 Copyright (c) 2006 MaxMind LLC All Rights Reserved

geoip_database_info
geoip_db_filename
GeoIP 函数


返回 GeoIP 数据库相对应的文件名

geoip_db_avail
geoip_db_get_all_info
GeoIP 函数
PHP Manual

geoip_db_filename

(PECL geoip >= 1.0.1)

geoip_db_filename — 返回 GeoIP 数据库相对应的文件名

说明

string geoip_db_filename ( int $database )

geoip_db_filename() 函数将会返回和 GeoIP 数据库相对应的文件名。

这个函数不会判别文件是否存在在磁盘上，只会表明拓展库在哪里查找数据库。

参数

database

该参数为整型。你可以使用该扩展的预定义常量 (比如: GEOIP_*_EDITION)。

返回值

成功则返回相对应的数据库文件名，错误则返回NULL 。

范例

Example #1 geoip_db_filename()函数的使用范例：

如下代码将会打印数据库相对应的文件名。

<?php

print geoip_db_filename(GEOIP_COUNTRY_EDITION);

?>

以上例程会输出：

/usr/share/GeoIP/GeoIP.dat

geoip_db_avail
geoip_db_get_all_info
GeoIP 函数


返回所有 GeoIP 数据库类型的详细信息

geoip_db_filename
geoip_domain_by_name
GeoIP 函数
PHP Manual

geoip_db_get_all_info

(PECL geoip >= 1.0.1)

geoip_db_get_all_info — 返回所有 GeoIP 数据库类型的详细信息

说明

array geoip_db_get_all_info ( void )

geoip_db_get_all_info() 函数将会返回包含所有 GeoIP 数据库类型详细信息的多维数组

即使没有安装数据库，这个函数依旧可用。它将会列出数据库是否可用。

返回的关联数组，各键值所代表的含义如下：

  • "available" -- 布尔值, 表示数据库是否可用(请参考 geoip_db_avail())
  • "description" -- 数据库的描述
  • "filename" -- 磁盘上的数据库文件名(请参考 geoip_db_filename())

返回值

返回一个关联数组。

范例

Example #1 geoip_db_get_all_info() 使用范例：

以下代码将会打印包含所有信息的数组。

<?php
$infos = geoip_db_get_all_info();
if (is_array($infos)) {
    var_dump($infos);
}
?>

以上例程会输出：

array(11) {
  [1]=>
  array(3) {
    ["available"]=>
    bool(true)
    ["description"]=>
    string(21) "GeoIP Country Edition"
    ["filename"]=>
    string(32) "/usr/share/GeoIP/GeoIP.dat"
  }

[ ... ]

  [11]=>
  array(3) {
    ["available"]=>
    bool(false)
    ["description"]=>
    string(25) "GeoIP Domain Name Edition"
    ["filename"]=>
    string(38) "/usr/share/GeoIP/GeoIPDomain.dat"
  }
}

Example #2 geoip_db_get_all_info() 使用范例：

你可以使用不同的常量作为键来获取部分信息。

<?php
$infos = geoip_db_get_all_info();
if ($infos[GEOIP_COUNTRY_EDITION]['available']) {
    echo $infos[GEOIP_COUNTRY_EDITION]['description'];
}
?>

以上例程会输出：

GeoIP Country Edition

geoip_db_filename
geoip_domain_by_name
GeoIP 函数


获取二级域名

geoip_db_get_all_info
geoip_id_by_name
GeoIP 函数
PHP Manual

geoip_domain_by_name

(PECL geoip >= 1.1.0)

geoip_domain_by_name — 获取二级域名

说明

string geoip_domain_by_name ( string $hostname )

geoip_domain_by_name() 函数将会返回和主机或者 IP 地址相关联的二级域名。

当前该函数只对购买了商业 GeoIP 域名版本的用户是可用的。如果没有该版本的数据库，使用该函数时将会抛出一个警告。

参数

hostname

主机名或者 IP 地址。

返回值

成功，返回域名，如果在数据库中未找到信息则返回 FALSE 。

范例

Example #1 一个 geoip_domain_by_name() 使用范例：

以下代码将会输出和 IP 61.106.139.1相关联的域名。

<?php
$domain = geoip_domain_by_name('61.106.139.1');

if ($domain) {
    echo 'The domain is: '. $domain;
}

?>

以上例程会输出：

The domain is: von.co.kr

geoip_db_get_all_info
geoip_id_by_name
GeoIP 函数


获取网络连接类型

geoip_domain_by_name
geoip_isp_by_name
GeoIP 函数
PHP Manual

geoip_id_by_name

(PECL geoip >= 0.2.0)

geoip_id_by_name — 获取网络连接类型

说明

int geoip_id_by_name ( string $hostname )

geoip_id_by_name() 函数将会返回和主机名或者 IP 地址相对应的网络连接类型。

函数返回值是数字可以和以下常量对照：

  • GEOIP_UNKNOWN_SPEED
  • GEOIP_DIALUP_SPEED
  • GEOIP_CABLEDSL_SPEED
  • GEOIP_CORPORATE_SPEED

参数

hostname

要查找连接类型的主机或者 IP 地址。

返回值

返回连接类型。

范例

Example #1 一个 geoip_id_by_name() 使用范例：

以下将会输出 example.com 主机的连接类型。

<?php
$netspeed = geoip_id_by_name('www.example.com');

echo 'The connection type is ';

switch ($netspeed) {
    case GEOIP_DIALUP_SPEED:
        echo 'dial-up';
        break;
    case GEOIP_CABLEDSL_SPEED:
        echo 'cable or DSL';
        break;
    case GEOIP_CORPORATE_SPEED:
        echo 'corporate';
        break;
    case GEOIP_UNKNOWN_SPEED:
    default:
        echo 'unknown';
}
?>

以上例程会输出：

The connection type is corporate

geoip_domain_by_name
geoip_isp_by_name
GeoIP 函数


获取 ISP (网络服务提供商)的名称

geoip_id_by_name
geoip_netspeedcell_by_name
GeoIP 函数
PHP Manual

geoip_isp_by_name

(PECL geoip >= 1.0.2)

geoip_isp_by_name — 获取 ISP (网络服务提供商)的名称

说明

string geoip_isp_by_name ( string $hostname )

geoip_isp_by_name() 函数将会返回 IP 地址所归属的网络服务提供商(ISP)的名称。

目前，该函数只对购买了商业 GeoIP ISP 版本的用户可用，否则将会抛出一个警告！

参数

hostname

主机或者 IP 地址。

返回值

成功，则返回 ISP 名称，未找到相关信息则返回 FALSE 。

范例

Example #1 一个 geoip_isp_by_name() 使用范例：

以下代码将会输出 example.com 主机的 ISP 名称。

<?php
$isp = geoip_isp_by_name('www.example.com');
if ($isp) {
    echo 'This host IP is from ISP: ' . $isp;
}
?>

以上例程会输出：

This host IP is from ISP: ICANN c/o Internet Assigned Numbers Authority

geoip_id_by_name
geoip_netspeedcell_by_name
GeoIP 函数


获取网络连接速度

geoip_isp_by_name
geoip_org_by_name
GeoIP 函数
PHP Manual

geoip_netspeedcell_by_name

(PECL geoip >= 1.1.0)

geoip_netspeedcell_by_name — 获取网络连接速度

说明

string geoip_netspeedcell_by_name ( string $hostname )

geoip_netspeedcell_by_name() 函数将会返回主机或者 IP 地址对应的网络连接类型和速度。

该函数只有在 GeoIP 1.4.8 版本以上才能使用。

目前，该函数只对购买了商业 GeoIP NetSpeedCell 版本的用户可用，否则将会抛出一个警告！

返回值为字符串，结果集如下：

  • Cable/DSL
  • Dialup
  • Cellular
  • Corporate

参数

hostname

主机名或者 IP 地址。

返回值

成功，返回连接速度，未找到相关信息则返回 FALSE 。

范例

Example #1 一个 geoip_netspeedcell_by_name() 使用范例：

以下代码将会输出 example.com 主机的连接速度。

<?php
$netspeed = geoip_netspeedcell_by_name('www.example.com');

if ($netspeed) {
    echo 'The connection type is: '. $netspeed;
}
?>

以上例程会输出：

The connection type is: Corporate

geoip_isp_by_name
geoip_org_by_name
GeoIP 函数


获取机构的名称

geoip_netspeedcell_by_name
geoip_record_by_name
GeoIP 函数
PHP Manual

geoip_org_by_name

(PECL geoip >= 0.2.0)

geoip_org_by_name — 获取机构的名称

说明

string geoip_org_by_name ( string $hostname )

geoip_org_by_name() 函数将会返回 IP 地址所分配的机构名称。

目前，该函数只对购买了商业 GeoIP Organization， ISP 或者 AS 版本的用户可用，否则将会抛出一个警告！

参数

hostname

主机名或者 IP 地址。

返回值

成功， 返回组织的名称，未找到相关信息则返回 FALSE 。

范例

Example #1 一个 geoip_org_by_name() 使用范例：

以下代码将会打印 example.com 主机的所有者。

<?php
$org = geoip_org_by_name('www.example.com');
if ($org) {
    echo 'This host IP is allocated to: ' . $org;
}
?>

以上例程会输出：

This host IP is allocated to: ICANN c/o Internet Assigned Numbers Authority

geoip_netspeedcell_by_name
geoip_record_by_name
GeoIP 函数


返回 GeoIP 数据库中详细的城市信息

geoip_org_by_name
geoip_region_by_name
GeoIP 函数
PHP Manual

geoip_record_by_name

(PECL geoip >= 0.2.0)

geoip_record_by_name — 返回 GeoIP 数据库中详细的城市信息

说明

array geoip_record_by_name ( string $hostname )

geoip_record_by_name() 函数将会返回主机或者 IP 地址所对应的记录信息。

该函数在 GeoLite City 版本和商业 GeoIP City 版本中可用。 版本不对的话，将会抛出一个警告。

返回的关联数组不同的键名对应如下：

  • "continent_code" -- 由两个字符组成的洲简称。(要求 GeoIP 的库版本是1.0.4以上)
  • "country_code" -- 由2个字母组成的国家简称。(参见 geoip_country_code_by_name())
  • "country_code3" -- 由三个字母组成的国家简称。(参见 geoip_country_code3_by_name())
  • "country_name" -- 国家名称 (参见 geoip_country_name_by_name())
  • "region" -- 地区代码 (比如: CA 对应 California)
  • "city" -- 城市名称。
  • "postal_code" -- 邮编，FSA 或者 Zip 编码。
  • "latitude" -- 有符号的双精度纬度。
  • "longitude" -- 有符号的双精度经度。
  • "dma_code" -- 指定市场区号 (只支持美国和加拿大)
  • "area_code" -- PSTN （公共交换电话网络）地区代码。 (比如: 212)

参数

hostname

所要查找的主机或者 IP 地址。

返回值

成功，返回关联数组，未找到相关信息则返回 FALSE 。

更新日志

版本 | 说明
1.0.4 | 给 GeoIP 1.4.4及以上版本的库添加 continent_code 字段。
1.0.3 | 添加 country_code3 和 country_name 字段。

范例

Example #1 geoip_record_by_name() 例子：

以下例程将会输出包含 example.com 主机记录的数组。

<?php
$record = geoip_record_by_name('www.example.com');
if ($record) {
    print_r($record);
}
?>

以上例程会输出：

Array
(
    [continent_code] => NA
    [country_code] => US
    [country_code3] => USA
    [country_name] => United States
    [region] => CA
    [city] => Marina Del Rey
    [postal_code] =>
    [latitude] => 33.9776992798
    [longitude] => -118.435096741
    [dma_code] => 803
    [area_code] => 310
)

geoip_org_by_name
geoip_region_by_name
GeoIP 函数


获取国家和地区代码

geoip_record_by_name
geoip_region_name_by_code
GeoIP 函数
PHP Manual

geoip_region_by_name

(PECL geoip >= 0.2.0)

geoip_region_by_name — 获取国家和地区代码

说明

array geoip_region_by_name ( string $hostname )

geoip_region_by_name() 函数将会返回与主机或者 IP 地址相关的国家和地区代码。

该函数只对购买了商业 GeoIP Region 版本的用户可用。否则将会抛出一个警告！

所返回的关联数组的各字段具体含义如下：

  • "country_code" -- 由两个字母组成的国家代码(参见 geoip_country_code_by_name())
  • "region" -- 地区代码。 (比如: CA 对应 California)

参数

hostname

查找的主机或者 IP 地址。

返回值

成功，返回关联数组， 如果信息未找到则返回 FALSE。

范例

Example #1 geoip_region_by_name() 例子：

以下例程将会打印对应 example.com 主机的包含国家和地区代码的关联数组。

<?php
$region = geoip_region_by_name('www.example.com');
if ($region) {
    print_r($region);
}
?>

以上例程会输出：

Array
(
    [country_code] => US
    [region] => CA
)

geoip_record_by_name
geoip_region_name_by_code
GeoIP 函数


返回给定的国家和地区代码组合所对应的地区名称

geoip_region_by_name
geoip_setup_custom_directory
GeoIP 函数
PHP Manual

geoip_region_name_by_code

(PECL geoip >= 1.0.4)

geoip_region_name_by_code — 返回给定的国家和地区代码组合所对应的地区名称

说明

string geoip_region_name_by_code ( string $country_code , string $region_code )

geoip_region_name_by_code() 函数将会返回与给定的国家和地区代码组合相对应的地区名称。

在美国，地区代码是每个州对应的两个字母的缩写，而在加拿大，则是由两个字母组成的每个省的邮政编码。

在世界其他地区，GeoIP使用 FIPS 给定的10到4位的代码来表示各地区。你可以点击以下连接 » http://www.maxmind.com/app/fips10_4 查看详细信息。

该函数只在 GeoIP 1.4.1版本以上的库才可用。并且结果集的数据来源是直接从 GeoIP 库中获取的，而不是从任何数据库中。

参数

country_code

由两个字母组成的国家代码 (参见 geoip_country_code_by_name())

region_code

由两个字母组成的地区代码 (参见 geoip_region_by_name())

返回值

成功，返回地区名字，如果相关信息未找到则返回 FALSE 。

范例

Example #1 geoip_region_name_by_code() 使用美国和加拿大地区的范例。

以下例程将会打印国家简称为 CA (加拿大)，地区简称为 QC (魁北克)的地区名：

<?php
$region = geoip_region_name_by_code('CA', 'QC');
if ($region) {
    echo 'Region name for CA/QC is: ' . $region;
}
?>

以上例程会输出：

Region name for CA/QC is: Quebec

Example #2 geoip_region_name_by_code() 使用 FIPS 代码的范例：

以下例程将会打印国家简称为 JP (日本)地区代码为 01的地区名称。

<?php
$region = geoip_region_name_by_code('JP', '01');
if ($region) {
    echo 'Region name for JP/01 is: ' . $region;
}
?>

以上例程会输出：

Region name for JP/01 is: Aichi

geoip_region_by_name
geoip_setup_custom_directory
GeoIP 函数


自定义 GeoIP 数据库的目录

geoip_region_name_by_code
geoip_time_zone_by_country_and_region
GeoIP 函数
PHP Manual

geoip_setup_custom_directory

(PECL geoip >= 1.1.0)

geoip_setup_custom_directory — 自定义 GeoIP 数据库的目录

说明

void geoip_setup_custom_directory ( string $path )

geoip_setup_custom_directory() 函数将会更改 GeoIP 数据库的默认目录。这个设置和直接在 php 配置文件中设置的geoip.custom_directory参数效果是一样的。

参数

path

磁盘上 GeoIP 数据库的绝对路径。

返回值

没有返回值。

范例

Example #1 geoip_setup_custom_directory() 例子：

以下例程将会更改 GeoIP 默认数据库的路径。

<?php

geoip_setup_custom_directory('/some/other/path');

print geoip_db_filename(GEOIP_COUNTRY_EDITION);

?>

以上例程会输出：

/some/other/path/GeoIP.dat

geoip_region_name_by_code
geoip_time_zone_by_country_and_region
GeoIP 函数


返回国家和地区的时区

geoip_setup_custom_directory
FANN
GeoIP 函数
PHP Manual

geoip_time_zone_by_country_and_region

(PECL geoip >= 1.0.4)

geoip_time_zone_by_country_and_region — 返回国家和地区的时区

说明

string geoip_time_zone_by_country_and_region ( string $country_code [, string $region_code ] )

geoip_time_zone_by_country_and_region() 函数将会返回与国家或者地区相对应的时区。

在美国，地区代码是每个州对应的两个字母的缩写，而在加拿大，则是由两个字母组成的每个省的邮政编码。

在世界上其他地区，GeoIP 使用 FIPS 给定的10到4位的代码来表示各地区。你可以点击以下连接 » http://www.maxmind.com/app/fips10_4 查看详细信息。

该函数只在 GeoIP 1.4.1版本以上的库才可用。并且结果集的数据来源是直接从 GeoIP 库中获取的，而不是从任何数据库中。

参数

country_code

由两个字母组成的国家代码 (参见 geoip_country_code_by_name())

region_code

由两个字母组成的地区代码 (参见 geoip_region_by_name())

返回值

成功，返回地区名字，如果相关信息未找到则返回 FALSE 。

范例

Example #1 geoip_time_zone_by_country_and_region() 使用美国和加拿大地区的范例：

以下例程将会打印国家简称为 CA (加拿大)，地区简称为 QC (魁北克)的时区。

<?php
$timezone = geoip_time_zone_by_country_and_region('CA', 'QC');
if ($timezone) {
    echo 'Time zone for CA/QC is: ' . $timezone;
}
?>

以上例程会输出：

Time zone for CA/QC is: America/Montreal

Example #2 geoip_time_zone_by_country_and_region() 使用 FIPS 代码的范例：

以下例程将会打印国家简称为 JP (日本),地区代码为 01的时区。

<?php
$timezone = geoip_time_zone_by_country_and_region('JP', '01');
if ($timezone) {
    echo 'Time zone for JP/01 is: ' . $timezone;
}
?>

以上例程会输出：

Time zone for JP/01 is: Asia/Tokyo

geoip_setup_custom_directory
FANN
GeoIP 函数


FANN (Fast Artificial Neural Network)

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • XOR training
  • Fann 函数
    • fann_cascadetrain_on_data — Trains on an entire dataset, for a period of time using the Cascade2 training algorithm
    • fann_cascadetrain_on_file — Trains on an entire dataset read from file, for a period of time using the Cascade2 training algorithm.
    • fann_clear_scaling_params — Clears scaling parameters
    • fann_copy — Creates a copy of a fann structure
    • fann_create_from_file — Constructs a backpropagation neural network from a configuration file
    • fann_create_shortcut_array — Creates a standard backpropagation neural network which is not fully connectected and has shortcut connections
    • fann_create_shortcut — Creates a standard backpropagation neural network which is not fully connectected and has shortcut connections
    • fann_create_sparse_array — Creates a standard backpropagation neural network, which is not fully connected using an array of layer sizes
    • fann_create_sparse — Creates a standard backpropagation neural network, which is not fully connected
    • fann_create_standard_array — Creates a standard fully connected backpropagation neural network using an array of layer sizes
    • fann_create_standard — Creates a standard fully connected backpropagation neural network
    • fann_create_train_from_callback — Creates the training data struct from a user supplied function
    • fann_create_train — Creates an empty training data struct
    • fann_descale_input — Scale data in input vector after get it from ann based on previously calculated parameters
    • fann_descale_output — Scale data in output vector after get it from ann based on previously calculated parameters
    • fann_descale_train — Descale input and output data based on previously calculated parameters
    • fann_destroy_train — Destructs the training data
    • fann_destroy — Destroys the entire network and properly freeing all the associated memory
    • fann_duplicate_train_data — Returns an exact copy of a fann train data
    • fann_get_activation_function — Returns the activation function
    • fann_get_activation_steepness — Returns the activation steepness for supplied neuron and layer number
    • fann_get_bias_array — Get the number of bias in each layer in the network
    • fann_get_bit_fail_limit — Returns the bit fail limit used during training
    • fann_get_bit_fail — The number of fail bits
    • fann_get_cascade_activation_functions_count — Returns the number of cascade activation functions
    • fann_get_cascade_activation_functions — Returns the cascade activation functions
    • fann_get_cascade_activation_steepnesses_count — The number of activation steepnesses
    • fann_get_cascade_activation_steepnesses — Returns the cascade activation steepnesses
    • fann_get_cascade_candidate_change_fraction — Returns the cascade candidate change fraction
    • fann_get_cascade_candidate_limit — Return the candidate limit
    • fann_get_cascade_candidate_stagnation_epochs — Returns the number of cascade candidate stagnation epochs
    • fann_get_cascade_max_cand_epochs — Returns the maximum candidate epochs
    • fann_get_cascade_max_out_epochs — Returns the maximum out epochs
    • fann_get_cascade_min_cand_epochs — Returns the minimum candidate epochs
    • fann_get_cascade_min_out_epochs — Returns the minimum out epochs
    • fann_get_cascade_num_candidate_groups — Returns the number of candidate groups
    • fann_get_cascade_num_candidates — Returns the number of candidates used during training
    • fann_get_cascade_output_change_fraction — Returns the cascade output change fraction
    • fann_get_cascade_output_stagnation_epochs — Returns the number of cascade output stagnation epochs
    • fann_get_cascade_weight_multiplier — Returns the weight multiplier
    • fann_get_connection_array — Get connections in the network
    • fann_get_connection_rate — Get the connection rate used when the network was created
    • fann_get_errno — Returns the last error number
    • fann_get_errstr — Returns the last errstr
    • fann_get_layer_array — Get the number of neurons in each layer in the network
    • fann_get_learning_momentum — Returns the learning momentum
    • fann_get_learning_rate — Returns the learning rate
    • fann_get_MSE — Reads the mean square error from the network
    • fann_get_network_type — Get the type of neural network it was created as
    • fann_get_num_input — Get the number of input neurons
    • fann_get_num_layers — Get the number of layers in the neural network
    • fann_get_num_output — Get the number of output neurons
    • fann_get_quickprop_decay — Returns the decay which is a factor that weights should decrease in each iteration during quickprop training
    • fann_get_quickprop_mu — Returns the mu factor
    • fann_get_rprop_decrease_factor — Returns the increase factor used during RPROP training
    • fann_get_rprop_delta_max — Returns the maximum step-size
    • fann_get_rprop_delta_min — Returns the minimum step-size
    • fann_get_rprop_delta_zero — Returns the initial step-size
    • fann_get_rprop_increase_factor — Returns the increase factor used during RPROP training
    • fann_get_sarprop_step_error_shift — Returns the sarprop step error shift
    • fann_get_sarprop_step_error_threshold_factor — Returns the sarprop step error threshold factor
    • fann_get_sarprop_temperature — Returns the sarprop temperature
    • fann_get_sarprop_weight_decay_shift — Returns the sarprop weight decay shift
    • fann_get_total_connections — Get the total number of connections in the entire network
    • fann_get_total_neurons — Get the total number of neurons in the entire network
    • fann_get_train_error_function — Returns the error function used during training
    • fann_get_train_stop_function — Returns the stop function used during training
    • fann_get_training_algorithm — Returns the training algorithm
    • fann_init_weights — Initialize the weights using Widrow + Nguyen’s algorithm
    • fann_length_train_data — Returns the number of training patterns in the train data
    • fann_merge_train_data — Merges the train data
    • fann_num_input_train_data — Returns the number of inputs in each of the training patterns in the train data
    • fann_num_output_train_data — Returns the number of outputs in each of the training patterns in the train data
    • fann_print_error — Prints the error string
    • fann_randomize_weights — Give each connection a random weight between min_weight and max_weight
    • fann_read_train_from_file — Reads a file that stores training data
    • fann_reset_errno — Resets the last error number
    • fann_reset_errstr — Resets the last error string
    • fann_reset_MSE — Resets the mean square error from the network
    • fann_run — Will run input through the neural network
    • fann_save_train — Save the training structure to a file
    • fann_save — Saves the entire network to a configuration file
    • fann_scale_input_train_data — Scales the inputs in the training data to the specified range
    • fann_scale_input — Scale data in input vector before feed it to ann based on previously calculated parameters
    • fann_scale_output_train_data — Scales the outputs in the training data to the specified range
    • fann_scale_output — Scale data in output vector before feed it to ann based on previously calculated parameters
    • fann_scale_train_data — Scales the inputs and outputs in the training data to the specified range
    • fann_scale_train — Scale input and output data based on previously calculated parameters
    • fann_set_activation_function_hidden — Sets the activation function for all of the hidden layers
    • fann_set_activation_function_layer — Sets the activation function for all the neurons in the supplied layer.
    • fann_set_activation_function_output — Sets the activation function for the output layer
    • fann_set_activation_function — Sets the activation function for supplied neuron and layer
    • fann_set_activation_steepness_hidden — Sets the steepness of the activation steepness for all neurons in the all hidden layers
    • fann_set_activation_steepness_layer — Sets the activation steepness for all of the neurons in the supplied layer number
    • fann_set_activation_steepness_output — Sets the steepness of the activation steepness in the output layer
    • fann_set_activation_steepness — Sets the activation steepness for supplied neuron and layer number
    • fann_set_bit_fail_limit — Set the bit fail limit used during training
    • fann_set_callback — Sets the callback function for use during training
    • fann_set_cascade_activation_functions — Sets the array of cascade candidate activation functions
    • fann_set_cascade_activation_steepnesses — Sets the array of cascade candidate activation steepnesses
    • fann_set_cascade_candidate_change_fraction — Sets the cascade candidate change fraction
    • fann_set_cascade_candidate_limit — Sets the candidate limit
    • fann_set_cascade_candidate_stagnation_epochs — Sets the number of cascade candidate stagnation epochs
    • fann_set_cascade_max_cand_epochs — Sets the max candidate epochs
    • fann_set_cascade_max_out_epochs — Sets the maximum out epochs
    • fann_set_cascade_min_cand_epochs — Sets the min candidate epochs
    • fann_set_cascade_min_out_epochs — Sets the minimum out epochs
    • fann_set_cascade_num_candidate_groups — Sets the number of candidate groups
    • fann_set_cascade_output_change_fraction — Sets the cascade output change fraction
    • fann_set_cascade_output_stagnation_epochs — Sets the number of cascade output stagnation epochs
    • fann_set_cascade_weight_multiplier — Sets the weight multiplier
    • fann_set_error_log — Sets where the errors are logged to
    • fann_set_input_scaling_params — Calculate input scaling parameters for future use based on training data
    • fann_set_learning_momentum — Sets the learning momentum
    • fann_set_learning_rate — Sets the learning rate
    • fann_set_output_scaling_params — Calculate output scaling parameters for future use based on training data
    • fann_set_quickprop_decay — Sets the quickprop decay factor
    • fann_set_quickprop_mu — Sets the quickprop mu factor
    • fann_set_rprop_decrease_factor — Sets the decrease factor used during RPROP training
    • fann_set_rprop_delta_max — Sets the maximum step-size
    • fann_set_rprop_delta_min — Sets the minimum step-size
    • fann_set_rprop_delta_zero — Sets the initial step-size
    • fann_set_rprop_increase_factor — Sets the increase factor used during RPROP training
    • fann_set_sarprop_step_error_shift — Sets the sarprop step error shift
    • fann_set_sarprop_step_error_threshold_factor — Sets the sarprop step error threshold factor
    • fann_set_sarprop_temperature — Sets the sarprop temperature
    • fann_set_sarprop_weight_decay_shift — Sets the sarprop weight decay shift
    • fann_set_scaling_params — Calculate input and output scaling parameters for future use based on training data
    • fann_set_train_error_function — Sets the error function used during training
    • fann_set_train_stop_function — Sets the stop function used during training
    • fann_set_training_algorithm — Sets the training algorithm
    • fann_set_weight_array — Set connections in the network
    • fann_set_weight — Set a connection in the network
    • fann_shuffle_train_data — Shuffles training data, randomizing the order
    • fann_subset_train_data — Returns an copy of a subset of the train data
    • fann_test_data — Test a set of training data and calculates the MSE for the training data
    • fann_test — Test with a set of inputs, and a set of desired outputs
    • fann_train_epoch — Train one epoch with a set of training data
    • fann_train_on_data — Trains on an entire dataset for a period of time
    • fann_train_on_file — Trains on an entire dataset, which is read from file, for a period of time
    • fann_train — Train one iteration with a set of inputs, and a set of desired outputs
  • FANNConnection — The FANNConnection class
    • FANNConnection::__construct — The connection constructor
    • FANNConnection::getFromNeuron — Returns the postions of starting neuron.
    • FANNConnection::getToNeuron — Returns the postions of terminating neuron
    • FANNConnection::getWeight — Returns the connection weight
    • FANNConnection::setWeight — Sets the connections weight
geoip_time_zone_by_country_and_region
简介
其它基本扩展


简介

PHP binding for FANN (Fast Artificial Neural Network) Library which implements multilayer artificial neural networks with support for both fully connected and sparsely connected networks. It includes a framework for easy handling of training data sets. It is easy to use, versatile, well documented, and fast.

FANN
安装／配置
FANN


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
FANN


需求

PHP >= 5.2.0 and libfann >= 2.1.0

安装／配置
安装
安装／配置


安装

The FANN PHP extension should work on all Linux systems.

  • FANN Library Installation
  • PECL Installation
  • Manual Installation

FANN Library Installation

Before you start installation make sure that libfann is installed on your system. It's part of the main repository in the most Linux distributions (search for fann). You need a development version.

If it is not installed, you need to install it first. Either download it from the » official site or get it from your distro repository. For example on Fedora:

$ sudo yum install fann-devel
or Ubuntu:

$ sudo apt-get install libfann-dev

If the library is re-installed manually, then all old library file should be removed before re-installing otherwise the old library version could be linked.

PECL Installation

This extension is available on PECL. The installation is very simple. Just run:

$ sudo pecl install fann

Manual Installation

For developers and people interested in the latest changes, you can compile the driver from the latest source code on » Github. Go to Github and click the "Download ZIP" button. Then run:

$ unzip php-fann-master.zip
$ cd php-fann-master
$ phpize
$ ./configure
$ make all
$ sudo make install

Make the following changes to php.ini:

  • Make sure the extension_dir variable is pointing to the directory containing fann.so. The build will display where it is installing the PHP driver with output that looks something like:

Installing '/usr/lib/php/extensions/no-debug-non-zts-20060613/fann.so'
    Make sure that it is the same as the PHP extension directory by runnning:

$ php -i | grep extension_dir
  extension_dir => /usr/lib/php/extensions/no-debug-non-zts-20060613 =>
                   /usr/lib/php/extensions/no-debug-non-zts-20060613
    If it's not, change the extension_dir in php.ini or move fann.so.

  • To load the extension on PHP startup, add a line:

extension=fann.so

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

Training algorithms
FANN_TRAIN_INCREMENTAL (integer)
Standard backpropagation algorithm, where the weights are updated after each training pattern. This means that the weights are updated many times during a single epoch. For this reason some problems, will train very fast with this algorithm, while other more advanced problems will not train very well.
FANN_TRAIN_BATCH (integer)
Standard backpropagation algorithm, where the weights are updated after calculating the mean square error for the whole training set. This means that the weights are only updated once during a epoch. For this reason some problems, will train slower with this algorithm. But since the mean square error is calculated more correctly than in incremental training, some problems will reach a better solutions with this algorithm.
FANN_TRAIN_RPROP (integer)
A more advanced batch training algorithm which achieves good results for many problems. The RPROP training algorithm is adaptive, and does therefore not use the learning_rate. Some other parameters can however be set to change the way the RPROP algorithm works, but it is only recommended for users with insight in how the RPROP training algorithm works. The RPROP training algorithm is described by [Riedmiller and Braun, 1993], but the actual learning algorithm used here is the iRPROP- training algorithm which is described by [Igel and Husken, 2000] which is an variety of the standard RPROP training algorithm.
FANN_TRAIN_QUICKPROP (integer)
A more advanced batch training algorithm which achieves good results for many problems. The quickprop training algorithm uses the learning_rate parameter along with other more advanced parameters, but it is only recommended to change these advanced parameters, for users with insight in how the quickprop training algorithm works. The quickprop training algorithm is described by [Fahlman, 1988].
FANN_TRAIN_SARPROP (integer)
Even more advance training algorithm. Only for version 2.2
Activation functions
FANN_LINEAR (integer)
Linear activation function.
FANN_THRESHOLD (integer)
Threshold activation function.
FANN_THRESHOLD_SYMMETRIC (integer)
Threshold activation function.
FANN_SIGMOID (integer)
Sigmoid activation function.
FANN_SIGMOID_STEPWISE (integer)
Stepwise linear approximation to sigmoid.
FANN_SIGMOID_SYMMETRIC (integer)
Symmetric sigmoid activation function, aka. tanh.
FANN_SIGMOID_SYMMETRIC_STEPWISE (integer)
Stepwise linear approximation to symmetric sigmoid
FANN_GAUSSIAN (integer)
Gaussian activation function.
FANN_GAUSSIAN_SYMMETRIC (integer)
Symmetric gaussian activation function.
FANN_GAUSSIAN_STEPWISE (integer)
Stepwise gaussian activation function.
FANN_ELLIOT (integer)
Fast (sigmoid like) activation function defined by David Elliott.
FANN_ELLIOT_SYMMETRIC (integer)
Fast (symmetric sigmoid like) activation function defined by David Elliott.
FANN_LINEAR_PIECE (integer)
Bounded linear activation function.
FANN_LINEAR_PIECE_SYMMETRIC (integer)
Bounded linear activation function.
FANN_SIN_SYMMETRIC (integer)
Periodical sinus activation function.
FANN_COS_SYMMETRIC (integer)
Periodical cosinus activation function.
FANN_SIN (integer)
Periodical sinus activation function.
FANN_COS (integer)
Periodical cosinus activation function.
Error function used during training
FANN_ERRORFUNC_LINEAR (integer)
Standard linear error function.
FANN_ERRORFUNC_TANH (integer)
Tanh error function, usually better but can require a lower learning rate. This error function agressively targets outputs that differ much from the desired, while not targetting outputs that only differ a little that much. This activation function is not recommended for cascade training and incremental training.
Stop criteria used during training
FANN_STOPFUNC_MSE (integer)
Stop criteria is Mean Square Error (MSE) value.
FANN_STOPFUNC_BIT (integer)
Stop criteria is number of bits that fail. The number of bits means the number of output neurons which differs more than the bit fail limit (see fann_get_bit_fail_limit, fann_set_bit_fail_limit). The bits are counted in all of the training data, so this number can be higher than the number of training data.
Definition of network types used by fann_get_network_type()
FANN_NETTYPE_LAYER (integer)
Each layer only has connections to the next layer.
FANN_NETTYPE_SHORTCUT (integer)
Each layer has connections to all following layers
Errors
FANN_E_NO_ERROR (integer)
No error.
FANN_E_CANT_OPEN_CONFIG_R (integer)
Unable to open configuration file for reading.
FANN_E_CANT_OPEN_CONFIG_W (integer)
Unable to open configuration file for writing.
FANN_E_WRONG_CONFIG_VERSION (integer)
Wrong version of configuration file.
FANN_E_CANT_READ_CONFIG (integer)
Error reading info from configuration file.
FANN_E_CANT_READ_NEURON (integer)
Error reading neuron info from configuration file.
FANN_E_CANT_READ_CONNECTIONS (integer)
Error reading connections from configuration file.
FANN_E_WRONG_NUM_CONNECTIONS (integer)
Number of connections not equal to the number expected.
FANN_E_CANT_OPEN_TD_W (integer)
Unable to open train data file for writing.
FANN_E_CANT_OPEN_TD_R (integer)
Unable to open train data file for reading.
FANN_E_CANT_READ_TD (integer)
Error reading training data from file.
FANN_E_CANT_ALLOCATE_MEM (integer)
Unable to allocate memory.
FANN_E_CANT_TRAIN_ACTIVATION (integer)
Unable to train with the selected activation function.
FANN_E_CANT_USE_ACTIVATION (integer)
Unable to use the selected activation function.
FANN_E_TRAIN_DATA_MISMATCH (integer)
Irreconcilable differences between two struct fann_train_data structures.
FANN_E_CANT_USE_TRAIN_ALG (integer)
Unable to use the selected training algorithm.
FANN_E_TRAIN_DATA_SUBSET (integer)
Trying to take subset which is not within the training set.
FANN_E_INDEX_OUT_OF_BOUND (integer)
Index is out of bound.
FANN_E_SCALE_NOT_PRESENT (integer)
Scaling parameters not present.
FANN_E_INPUT_NO_MATCH (integer)
The number of input neurons in the ann data do not match
FANN_E_OUTPUT_NO_MATCH (integer)
The number of output neurons in the ann and data do not match.

资源类型
范例
FANN


范例

Table of Contents

  • XOR training
预定义常量
XOR training
FANN


XOR training

This example shows how to train data for XOR function

Example #1 xor.data file

4 2 1
-1 -1
-1
-1 1
1
1 -1
1
1 1
-1

Example #2 Simple train

<?php
$num_input = 2;
$num_output = 1;
$num_layers = 3;
$num_neurons_hidden = 3;
$desired_error = 0.001;
$max_epochs = 500000;
$epochs_between_reports = 1000;

$ann = fann_create_standard($num_layers, $num_input, $num_neurons_hidden, $num_output);

if ($ann) {
    fann_set_activation_function_hidden($ann, FANN_SIGMOID_SYMMETRIC);
    fann_set_activation_function_output($ann, FANN_SIGMOID_SYMMETRIC);

    $filename = dirname(__FILE__) . "/xor.data";
    if (fann_train_on_file($ann, $filename, $max_epochs, $epochs_between_reports, $desired_error))
        fann_save($ann, dirname(__FILE__) . "/xor_float.net");

    fann_destroy($ann);
}
?>

This example shows how to read and run data for XOR function

Example #3 Simple test

<?php
$train_file = (dirname(__FILE__) . "/xor_float.net");
if (!is_file($train_file))
    die("The file xor_float.net has not been created! Please run simple_train.php to generate it");

$ann = fann_create_from_file($train_file);
if (!$ann)
    die("ANN could not be created");

$input = array(-1, 1);
$calc_out = fann_run($ann, $input);
printf("xor test (%f,%f) -> %f\n", $input[0], $input[1], $calc_out[0]);
fann_destroy($ann);
?>

范例
Fann 函数
范例


Fann 函数

Table of Contents

  • fann_cascadetrain_on_data — Trains on an entire dataset, for a period of time using the Cascade2 training algorithm
  • fann_cascadetrain_on_file — Trains on an entire dataset read from file, for a period of time using the Cascade2 training algorithm.
  • fann_clear_scaling_params — Clears scaling parameters
  • fann_copy — Creates a copy of a fann structure
  • fann_create_from_file — Constructs a backpropagation neural network from a configuration file
  • fann_create_shortcut_array — Creates a standard backpropagation neural network which is not fully connectected and has shortcut connections
  • fann_create_shortcut — Creates a standard backpropagation neural network which is not fully connectected and has shortcut connections
  • fann_create_sparse_array — Creates a standard backpropagation neural network, which is not fully connected using an array of layer sizes
  • fann_create_sparse — Creates a standard backpropagation neural network, which is not fully connected
  • fann_create_standard_array — Creates a standard fully connected backpropagation neural network using an array of layer sizes
  • fann_create_standard — Creates a standard fully connected backpropagation neural network
  • fann_create_train_from_callback — Creates the training data struct from a user supplied function
  • fann_create_train — Creates an empty training data struct
  • fann_descale_input — Scale data in input vector after get it from ann based on previously calculated parameters
  • fann_descale_output — Scale data in output vector after get it from ann based on previously calculated parameters
  • fann_descale_train — Descale input and output data based on previously calculated parameters
  • fann_destroy_train — Destructs the training data
  • fann_destroy — Destroys the entire network and properly freeing all the associated memory
  • fann_duplicate_train_data — Returns an exact copy of a fann train data
  • fann_get_activation_function — Returns the activation function
  • fann_get_activation_steepness — Returns the activation steepness for supplied neuron and layer number
  • fann_get_bias_array — Get the number of bias in each layer in the network
  • fann_get_bit_fail_limit — Returns the bit fail limit used during training
  • fann_get_bit_fail — The number of fail bits
  • fann_get_cascade_activation_functions_count — Returns the number of cascade activation functions
  • fann_get_cascade_activation_functions — Returns the cascade activation functions
  • fann_get_cascade_activation_steepnesses_count — The number of activation steepnesses
  • fann_get_cascade_activation_steepnesses — Returns the cascade activation steepnesses
  • fann_get_cascade_candidate_change_fraction — Returns the cascade candidate change fraction
  • fann_get_cascade_candidate_limit — Return the candidate limit
  • fann_get_cascade_candidate_stagnation_epochs — Returns the number of cascade candidate stagnation epochs
  • fann_get_cascade_max_cand_epochs — Returns the maximum candidate epochs
  • fann_get_cascade_max_out_epochs — Returns the maximum out epochs
  • fann_get_cascade_min_cand_epochs — Returns the minimum candidate epochs
  • fann_get_cascade_min_out_epochs — Returns the minimum out epochs
  • fann_get_cascade_num_candidate_groups — Returns the number of candidate groups
  • fann_get_cascade_num_candidates — Returns the number of candidates used during training
  • fann_get_cascade_output_change_fraction — Returns the cascade output change fraction
  • fann_get_cascade_output_stagnation_epochs — Returns the number of cascade output stagnation epochs
  • fann_get_cascade_weight_multiplier — Returns the weight multiplier
  • fann_get_connection_array — Get connections in the network
  • fann_get_connection_rate — Get the connection rate used when the network was created
  • fann_get_errno — Returns the last error number
  • fann_get_errstr — Returns the last errstr
  • fann_get_layer_array — Get the number of neurons in each layer in the network
  • fann_get_learning_momentum — Returns the learning momentum
  • fann_get_learning_rate — Returns the learning rate
  • fann_get_MSE — Reads the mean square error from the network
  • fann_get_network_type — Get the type of neural network it was created as
  • fann_get_num_input — Get the number of input neurons
  • fann_get_num_layers — Get the number of layers in the neural network
  • fann_get_num_output — Get the number of output neurons
  • fann_get_quickprop_decay — Returns the decay which is a factor that weights should decrease in each iteration during quickprop training
  • fann_get_quickprop_mu — Returns the mu factor
  • fann_get_rprop_decrease_factor — Returns the increase factor used during RPROP training
  • fann_get_rprop_delta_max — Returns the maximum step-size
  • fann_get_rprop_delta_min — Returns the minimum step-size
  • fann_get_rprop_delta_zero — Returns the initial step-size
  • fann_get_rprop_increase_factor — Returns the increase factor used during RPROP training
  • fann_get_sarprop_step_error_shift — Returns the sarprop step error shift
  • fann_get_sarprop_step_error_threshold_factor — Returns the sarprop step error threshold factor
  • fann_get_sarprop_temperature — Returns the sarprop temperature
  • fann_get_sarprop_weight_decay_shift — Returns the sarprop weight decay shift
  • fann_get_total_connections — Get the total number of connections in the entire network
  • fann_get_total_neurons — Get the total number of neurons in the entire network
  • fann_get_train_error_function — Returns the error function used during training
  • fann_get_train_stop_function — Returns the stop function used during training
  • fann_get_training_algorithm — Returns the training algorithm
  • fann_init_weights — Initialize the weights using Widrow + Nguyen’s algorithm
  • fann_length_train_data — Returns the number of training patterns in the train data
  • fann_merge_train_data — Merges the train data
  • fann_num_input_train_data — Returns the number of inputs in each of the training patterns in the train data
  • fann_num_output_train_data — Returns the number of outputs in each of the training patterns in the train data
  • fann_print_error — Prints the error string
  • fann_randomize_weights — Give each connection a random weight between min_weight and max_weight
  • fann_read_train_from_file — Reads a file that stores training data
  • fann_reset_errno — Resets the last error number
  • fann_reset_errstr — Resets the last error string
  • fann_reset_MSE — Resets the mean square error from the network
  • fann_run — Will run input through the neural network
  • fann_save_train — Save the training structure to a file
  • fann_save — Saves the entire network to a configuration file
  • fann_scale_input_train_data — Scales the inputs in the training data to the specified range
  • fann_scale_input — Scale data in input vector before feed it to ann based on previously calculated parameters
  • fann_scale_output_train_data — Scales the outputs in the training data to the specified range
  • fann_scale_output — Scale data in output vector before feed it to ann based on previously calculated parameters
  • fann_scale_train_data — Scales the inputs and outputs in the training data to the specified range
  • fann_scale_train — Scale input and output data based on previously calculated parameters
  • fann_set_activation_function_hidden — Sets the activation function for all of the hidden layers
  • fann_set_activation_function_layer — Sets the activation function for all the neurons in the supplied layer.
  • fann_set_activation_function_output — Sets the activation function for the output layer
  • fann_set_activation_function — Sets the activation function for supplied neuron and layer
  • fann_set_activation_steepness_hidden — Sets the steepness of the activation steepness for all neurons in the all hidden layers
  • fann_set_activation_steepness_layer — Sets the activation steepness for all of the neurons in the supplied layer number
  • fann_set_activation_steepness_output — Sets the steepness of the activation steepness in the output layer
  • fann_set_activation_steepness — Sets the activation steepness for supplied neuron and layer number
  • fann_set_bit_fail_limit — Set the bit fail limit used during training
  • fann_set_callback — Sets the callback function for use during training
  • fann_set_cascade_activation_functions — Sets the array of cascade candidate activation functions
  • fann_set_cascade_activation_steepnesses — Sets the array of cascade candidate activation steepnesses
  • fann_set_cascade_candidate_change_fraction — Sets the cascade candidate change fraction
  • fann_set_cascade_candidate_limit — Sets the candidate limit
  • fann_set_cascade_candidate_stagnation_epochs — Sets the number of cascade candidate stagnation epochs
  • fann_set_cascade_max_cand_epochs — Sets the max candidate epochs
  • fann_set_cascade_max_out_epochs — Sets the maximum out epochs
  • fann_set_cascade_min_cand_epochs — Sets the min candidate epochs
  • fann_set_cascade_min_out_epochs — Sets the minimum out epochs
  • fann_set_cascade_num_candidate_groups — Sets the number of candidate groups
  • fann_set_cascade_output_change_fraction — Sets the cascade output change fraction
  • fann_set_cascade_output_stagnation_epochs — Sets the number of cascade output stagnation epochs
  • fann_set_cascade_weight_multiplier — Sets the weight multiplier
  • fann_set_error_log — Sets where the errors are logged to
  • fann_set_input_scaling_params — Calculate input scaling parameters for future use based on training data
  • fann_set_learning_momentum — Sets the learning momentum
  • fann_set_learning_rate — Sets the learning rate
  • fann_set_output_scaling_params — Calculate output scaling parameters for future use based on training data
  • fann_set_quickprop_decay — Sets the quickprop decay factor
  • fann_set_quickprop_mu — Sets the quickprop mu factor
  • fann_set_rprop_decrease_factor — Sets the decrease factor used during RPROP training
  • fann_set_rprop_delta_max — Sets the maximum step-size
  • fann_set_rprop_delta_min — Sets the minimum step-size
  • fann_set_rprop_delta_zero — Sets the initial step-size
  • fann_set_rprop_increase_factor — Sets the increase factor used during RPROP training
  • fann_set_sarprop_step_error_shift — Sets the sarprop step error shift
  • fann_set_sarprop_step_error_threshold_factor — Sets the sarprop step error threshold factor
  • fann_set_sarprop_temperature — Sets the sarprop temperature
  • fann_set_sarprop_weight_decay_shift — Sets the sarprop weight decay shift
  • fann_set_scaling_params — Calculate input and output scaling parameters for future use based on training data
  • fann_set_train_error_function — Sets the error function used during training
  • fann_set_train_stop_function — Sets the stop function used during training
  • fann_set_training_algorithm — Sets the training algorithm
  • fann_set_weight_array — Set connections in the network
  • fann_set_weight — Set a connection in the network
  • fann_shuffle_train_data — Shuffles training data, randomizing the order
  • fann_subset_train_data — Returns an copy of a subset of the train data
  • fann_test_data — Test a set of training data and calculates the MSE for the training data
  • fann_test — Test with a set of inputs, and a set of desired outputs
  • fann_train_epoch — Train one epoch with a set of training data
  • fann_train_on_data — Trains on an entire dataset for a period of time
  • fann_train_on_file — Trains on an entire dataset, which is read from file, for a period of time
  • fann_train — Train one iteration with a set of inputs, and a set of desired outputs
XOR training
fann_cascadetrain_on_data
FANN


Trains on an entire dataset, for a period of time using the Cascade2 training algorithm

Fann 函数
fann_cascadetrain_on_file
Fann 函数
PHP Manual

fann_cascadetrain_on_data

(PECL fann >= 1.0.0)

fann_cascadetrain_on_data — Trains on an entire dataset, for a period of time using the Cascade2 training algorithm

说明

bool fann_cascadetrain_on_data ( resource $ann , resource $data , int $max_neurons , int $neurons_between_reports , float $desired_error )

The cascade output change fraction is a number between 0 and 1 determining how large a fraction the fann_get_MSE() value should change within fann_get_cascade_output_stagnation_epochs() during training of the output connections, in order for the training not to stagnate. If the training stagnates, the training of the output connections will be ended and new candidates will be prepared.

This training uses the parameters set using the fann_set_cascade_..., but it also uses another training algorithm as it's internal training algorithm. This algorithm can be set to either FANN_TRAIN_RPROP or FANN_TRAIN_QUICKPROP by fann_set_training_algorithm(), and the parameters set for these training algorithms will also affect the cascade training.

参数

ann

Neural network resource.

data

Neural network training data resource.

max_neurons

The maximum number of neurons to be added to neural network.

neurons_between_reports

The number of neurons between printing a status report. A value of zero means no reports should be printed.

desired_error

The desired fann_get_MSE() or fann_get_bit_fail(), depending on which stop function is chosen by fann_set_train_stop_function()

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_train_on_data() - Trains on an entire dataset for a period of time
  • fann_cascadetrain_on_file() - Trains on an entire dataset read from file, for a period of time using the Cascade2 training algorithm.

Fann 函数
fann_cascadetrain_on_file
Fann 函数


Trains on an entire dataset read from file, for a period of time using the Cascade2 training algorithm.

fann_cascadetrain_on_data
fann_clear_scaling_params
Fann 函数
PHP Manual

fann_cascadetrain_on_file

(PECL fann >= 1.0.0)

fann_cascadetrain_on_file — Trains on an entire dataset read from file, for a period of time using the Cascade2 training algorithm.

说明

bool fann_cascadetrain_on_file ( resource $ann , string $filename , int $max_neurons , int $neurons_between_reports , float $desired_error )

Does the same as fann_cascadetrain_on_data(), but reads the training data directly from a file.

参数

ann

Neural network resource.

filename

The maximum number of neurons to be added to neural network

max_neurons

The number of neurons between printing a status report to stdout. A value of zero means no reports should be printed.

neurons_between_reports

The number of neurons between printing a status report. A value of zero means no reports should be printed.

desired_error

The desired fann_get_MSE() or fann_get_bit_fail(), depending on which stop function is chosen by fann_set_train_stop_function().

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_train_on_data() - Trains on an entire dataset for a period of time
  • fann_cascadetrain_on_data() - Trains on an entire dataset, for a period of time using the Cascade2 training algorithm

fann_cascadetrain_on_data
fann_clear_scaling_params
Fann 函数


Clears scaling parameters

fann_cascadetrain_on_file
fann_copy
Fann 函数
PHP Manual

fann_clear_scaling_params

(PECL fann >= 1.0.0)

fann_clear_scaling_params — Clears scaling parameters

说明

bool fann_clear_scaling_params ( resource $ann )

Clears scaling parameters.

参数

ann

Neural network resource.

返回值

Returns TRUE on success, or FALSE otherwise.

fann_cascadetrain_on_file
fann_copy
Fann 函数


Creates a copy of a fann structure

fann_clear_scaling_params
fann_create_from_file
Fann 函数
PHP Manual

fann_copy

(PECL fann >= 1.0.0)

fann_copy — Creates a copy of a fann structure

说明

resource fann_copy ( resource $ann )

Creates a copy of a fann structure.

参数

ann

Neural network resource.

返回值

Returns a copy of neural network resource on success, or FALSE on error

参见

  • fann_test() - Test with a set of inputs, and a set of desired outputs

fann_clear_scaling_params
fann_create_from_file
Fann 函数


Constructs a backpropagation neural network from a configuration file

fann_copy
fann_create_shortcut_array
Fann 函数
PHP Manual

fann_create_from_file

(PECL fann >= 1.0.0)

fann_create_from_file — Constructs a backpropagation neural network from a configuration file

说明

resource fann_create_from_file ( string $configuration_file )

Constructs a backpropagation neural network from a configuration file, which have been saved by fann_save().

参数

configuration_file

The configuration file path.

返回值

Returns a neural network resource on success, or FALSE on error.

参见

  • fann_save() - Saves the entire network to a configuration file

fann_copy
fann_create_shortcut_array
Fann 函数


Creates a standard backpropagation neural network which is not fully connectected and has shortcut connections

fann_create_from_file
fann_create_shortcut
Fann 函数
PHP Manual

fann_create_shortcut_array

(PECL fann >= 1.0.0)

fann_create_shortcut_array — Creates a standard backpropagation neural network which is not fully connectected and has shortcut connections

说明

resource fann_create_shortcut_array ( int $num_layers , array $layers )

Creates a standard backpropagation neural network which is not fully connectected and has shortcut connections using an array of layers sizes.

参数

num_layers

The total number of layers including the input and the output layer.

layers

An array of layers sizes.

返回值

Returns a neural network resource on success, or FALSE on error.

参见

  • fann_create_shortcut() - Creates a standard backpropagation neural network which is not fully connectected and has shortcut connections
  • fann_create_sparse() - Creates a standard backpropagation neural network, which is not fully connected
  • fann_create_standard() - Creates a standard fully connected backpropagation neural network

fann_create_from_file
fann_create_shortcut
Fann 函数


Creates a standard backpropagation neural network which is not fully connectected and has shortcut connections

fann_create_shortcut_array
fann_create_sparse_array
Fann 函数
PHP Manual

fann_create_shortcut

(PECL fann >= 1.0.0)

fann_create_shortcut — Creates a standard backpropagation neural network which is not fully connectected and has shortcut connections

说明

reference fann_create_shortcut ( int $num_layers , int $num_neurons1 , int $num_neurons2 [, int $... ] )

Creates a standard backpropagation neural network, which is not fully connected and which also has shortcut connections.

Shortcut connections are connections that skip layers. A fully connected network with shortcut connections, is a network where all neurons are connected to all neurons in later layers. Including direct connections from the input layer to the output layer.

参数

num_layers

The total number of layers including the input and the output layer.

num_neurons1

Number of neurons in the first layer.

num_neurons2

Number of neurons in the second layer.

...

Number of neurons in other layers.

返回值

Returns a neural network resource on success, or FALSE on error.

参见

  • fann_create_shortcut_array() - Creates a standard backpropagation neural network which is not fully connectected and has shortcut connections
  • fann_create_sparse() - Creates a standard backpropagation neural network, which is not fully connected
  • fann_create_standard() - Creates a standard fully connected backpropagation neural network

fann_create_shortcut_array
fann_create_sparse_array
Fann 函数


Creates a standard backpropagation neural network, which is not fully connected using an array of layer sizes

fann_create_shortcut
fann_create_sparse
Fann 函数
PHP Manual

fann_create_sparse_array

(PECL fann >= 1.0.0)

fann_create_sparse_array — Creates a standard backpropagation neural network, which is not fully connected using an array of layer sizes

说明

ReturnType fann_create_sparse_array ( float $connection_rate , int $num_layers , array $layers )

Creates a standard backpropagation neural network, which is not fully connected using an array of layer sizes.

参数

connection_rate

The connection rate controls how many connections there will be in the network. If the connection rate is set to 1, the network will be fully connected, but if it is set to 0.5 only half of the connections will be set. A connection rate of 1 will yield the same result as fann_create_standard().

num_layers

The total number of layers including the input and the output layer.

layers

An array of layer sizes.

返回值

Returns a neural network resource on success, or FALSE on error.

参见

  • fann_create_sparse() - Creates a standard backpropagation neural network, which is not fully connected
  • fann_create_standard() - Creates a standard fully connected backpropagation neural network
  • fann_create_shortcut() - Creates a standard backpropagation neural network which is not fully connectected and has shortcut connections

fann_create_shortcut
fann_create_sparse
Fann 函数


Creates a standard backpropagation neural network, which is not fully connected

fann_create_sparse_array
fann_create_standard_array
Fann 函数
PHP Manual

fann_create_sparse

(PECL fann >= 1.0.0)

fann_create_sparse — Creates a standard backpropagation neural network, which is not fully connected

说明

ReturnType fann_create_sparse ( float $connection_rate , int $num_layers , int $num_neurons1 , int $num_neurons2 [, int $... ] )

Creates a standard backpropagation neural network, which is not fully connected.

参数

connection_rate

The connection rate controls how many connections there will be in the network. If the connection rate is set to 1, the network will be fully connected, but if it is set to 0.5 only half of the connections will be set. A connection rate of 1 will yield the same result as fann_create_standard().

num_layers

The total number of layers including the input and the output layer.

num_neurons1

Number of neurons in the first layer.

num_neurons2

Number of neurons in the second layer.

...

Number of neurons in other layers.

返回值

Returns a neural network resource on success, or FALSE on error.

参见

  • fann_create_sparse_array() - Creates a standard backpropagation neural network, which is not fully connected using an array of layer sizes
  • fann_create_standard() - Creates a standard fully connected backpropagation neural network
  • fann_create_shortcut() - Creates a standard backpropagation neural network which is not fully connectected and has shortcut connections

fann_create_sparse_array
fann_create_standard_array
Fann 函数


Creates a standard fully connected backpropagation neural network using an array of layer sizes

fann_create_sparse
fann_create_standard
Fann 函数
PHP Manual

fann_create_standard_array

(PECL fann >= 1.0.0)

fann_create_standard_array — Creates a standard fully connected backpropagation neural network using an array of layer sizes

说明

resource fann_create_standard_array ( int $num_layers , array $layers )

Creates a standard fully connected backpropagation neural network.

There will be a bias neuron in each layer (except the output layer), and this bias neuron will be connected to all neurons in the next layer. When running the network, the bias nodes always emits 1.

To destroy a neural network use the fann_destroy() function.

参数

num_layers

The total number of layers including the input and the output layer.

layers

An array of layer sizes.

返回值

Returns a neural network resource on success, or FALSE on error.

参见

  • fann_create_standard() - Creates a standard fully connected backpropagation neural network
  • fann_create_sparse() - Creates a standard backpropagation neural network, which is not fully connected
  • fann_create_shortcut() - Creates a standard backpropagation neural network which is not fully connectected and has shortcut connections

fann_create_sparse
fann_create_standard
Fann 函数


Creates a standard fully connected backpropagation neural network

fann_create_standard_array
fann_create_train_from_callback
Fann 函数
PHP Manual

fann_create_standard

(PECL fann >= 1.0.0)

fann_create_standard — Creates a standard fully connected backpropagation neural network

说明

resource fann_create_standard ( int $num_layers , int $num_neurons1 , int $num_neurons2 [, int $... ] )

Creates a standard fully connected backpropagation neural network.

There will be a bias neuron in each layer (except the output layer), and this bias neuron will be connected to all neurons in the next layer. When running the network, the bias nodes always emits 1.

To destroy a neural network use the fann_destroy() function.

参数

num_layers

The total number of layers including the input and the output layer.

num_neurons1

Number of neurons in the first layer.

num_neurons2

Number of neurons in the second layer.

...

Number of neurons in other layers.

返回值

Returns a neural network resource on success, or FALSE on error.

参见

  • fann_create_standard_array() - Creates a standard fully connected backpropagation neural network using an array of layer sizes
  • fann_create_sparse() - Creates a standard backpropagation neural network, which is not fully connected
  • fann_create_shortcut() - Creates a standard backpropagation neural network which is not fully connectected and has shortcut connections

fann_create_standard_array
fann_create_train_from_callback
Fann 函数


Creates the training data struct from a user supplied function

fann_create_standard
fann_create_train
Fann 函数
PHP Manual

fann_create_train_from_callback

(PECL fann >= 1.0.0)

fann_create_train_from_callback — Creates the training data struct from a user supplied function

说明

resource fann_create_train_from_callback ( int $num_data , int $num_input , int $num_output , callable $user_function )

Creates the training data struct from a user supplied function. As the training data are numerable (data 1, data 2...), the user must write a function that receives the number of the training data set (input, output) and returns the set.

参数

num_data

The number of training data

num_input

The number of inputs per training data

num_output

The number of ouputs per training data

user_function

The user supplied function with following parameters:

  • num - The number of the training data set
  • num_input - The number of inputs per training data
  • num_output - The number of ouputs per training data

The function should return an associative array with keys input and output and two array values of input and output.

返回值

Returns a train data resource on success, or FALSE on error.

范例

Example #1 fann_create_train_from_callback() example

<?php
function create_train_callback($num_data, $num_input, $num_output) {
    return array(
        "input" => array_fill(0, $num_input, 1),
        "output" => array_fill(0, $num_output, 1),
    );
}

$num_data = 3;
$num_input = 2;
$num_output = 1;
$train_data = fann_create_train_from_callback($num_data, $num_input, $num_output, "create_train_callback");
if ($train_data) {
    // Do something with $train_data
}
?>

参见

  • fann_read_train_from_file() - Reads a file that stores training data
  • fann_train_on_data() - Trains on an entire dataset for a period of time
  • fann_destroy_train() - Destructs the training data
  • fann_save_train() - Save the training structure to a file

fann_create_standard
fann_create_train
Fann 函数


Creates an empty training data struct

fann_create_train_from_callback
fann_descale_input
Fann 函数
PHP Manual

fann_create_train

(PECL fann >= 1.0.0)

fann_create_train — Creates an empty training data struct

说明

resource fann_create_train ( int $num_data , int $num_input , int $num_output )

Creates an empty training data struct.

参数

num_data

The number of training data

num_input

The number of inputs per training data

num_output

The number of ouputs per training data

返回值

Returns a train data resource on success, or FALSE on error.

参见

  • fann_read_train_from_file() - Reads a file that stores training data
  • fann_train_on_data() - Trains on an entire dataset for a period of time
  • fann_destroy_train() - Destructs the training data
  • fann_save_train() - Save the training structure to a file

fann_create_train_from_callback
fann_descale_input
Fann 函数


Scale data in input vector after get it from ann based on previously calculated parameters

fann_create_train
fann_descale_output
Fann 函数
PHP Manual

fann_descale_input

(PECL fann >= 1.0.0)

fann_descale_input — Scale data in input vector after get it from ann based on previously calculated parameters

说明

bool fann_descale_input ( resource $ann , array $input_vector )

Scale data in input vector after get it from ann based on previously calculated parameters.

参数

ann

Neural network resource.

input_vector

Input vector that will be descaled

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_scale_input() - Scale data in input vector before feed it to ann based on previously calculated parameters
  • fann_descale_output() - Scale data in output vector after get it from ann based on previously calculated parameters

fann_create_train
fann_descale_output
Fann 函数


Scale data in output vector after get it from ann based on previously calculated parameters

fann_descale_input
fann_descale_train
Fann 函数
PHP Manual

fann_descale_output

(PECL fann >= 1.0.0)

fann_descale_output — Scale data in output vector after get it from ann based on previously calculated parameters

说明

bool fann_descale_output ( resource $ann , array $output_vector )

Scale data in output vector after get it from ann based on previously calculated parameters.

参数

ann

Neural network resource.

output_vector

Output vector that will be descaled

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_scale_output() - Scale data in output vector before feed it to ann based on previously calculated parameters
  • fann_descale_input() - Scale data in input vector after get it from ann based on previously calculated parameters

fann_descale_input
fann_descale_train
Fann 函数


Descale input and output data based on previously calculated parameters

fann_descale_output
fann_destroy_train
Fann 函数
PHP Manual

fann_descale_train

(PECL fann >= 1.0.0)

fann_descale_train — Descale input and output data based on previously calculated parameters

说明

bool fann_descale_train ( resource $ann , resource $train_data )

Descale input and output data based on previously calculated parameters.

参数

ann

Neural network resource.

train_data

Neural network training data resource.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_scale_train() - Scale input and output data based on previously calculated parameters
  • fann_set_scaling_params() - Calculate input and output scaling parameters for future use based on training data

fann_descale_output
fann_destroy_train
Fann 函数


Destructs the training data

fann_descale_train
fann_destroy
Fann 函数
PHP Manual

fann_destroy_train

(PECL fann >= 1.0.0)

fann_destroy_train — Destructs the training data

说明

bool fann_destroy_train ( resource $train_data )

Destructs the training data

参数

train_data

Neural network training data resource.

返回值

Returns TRUE on success, or FALSE otherwise.

fann_descale_train
fann_destroy
Fann 函数


Destroys the entire network and properly freeing all the associated memory

fann_destroy_train
fann_duplicate_train_data
Fann 函数
PHP Manual

fann_destroy

(PECL fann >= 1.0.0)

fann_destroy — Destroys the entire network and properly freeing all the associated memory

说明

bool fann_destroy ( resource $ann )

Destroys the entire network and properly freeing all the associated memory.

参数

ann

Neural network resource.

返回值

Returns TRUE on success, or FALSE otherwise.

fann_destroy_train
fann_duplicate_train_data
Fann 函数


Returns an exact copy of a fann train data

fann_destroy
fann_get_activation_function
Fann 函数
PHP Manual

fann_duplicate_train_data

(PECL fann >= 1.0.0)

fann_duplicate_train_data — Returns an exact copy of a fann train data

说明

resource fann_duplicate_train_data ( resource $data )

Returns an exact copy of a fann train data resource.

参数

data

Neural network training data resource.

返回值

Returns a train data resource on success, or FALSE on error.

fann_destroy
fann_get_activation_function
Fann 函数


Returns the activation function

fann_duplicate_train_data
fann_get_activation_steepness
Fann 函数
PHP Manual

fann_get_activation_function

(PECL fann >= 1.0.0)

fann_get_activation_function — Returns the activation function

说明

int fann_get_activation_function ( resource $ann , int $layer , int $neuron )

Get the activation function for neuron number neuron in layer number layer, counting the input layer as layer 0.

It is not possible to get activation functions for the neurons in the input layer.

The return value is one of the activation functions constants.

参数

ann

Neural network resource.

layer

Layer number.

neuron

Neuron number.

返回值

Learning functions constant or -1 if the neuron is not defined in the neural network, or FALSE on error.

参见

  • fann_set_activation_function_layer() - Sets the activation function for all the neurons in the supplied layer.
  • fann_set_activation_function_hidden() - Sets the activation function for all of the hidden layers
  • fann_set_activation_function_output() - Sets the activation function for the output layer
  • fann_set_activation_steepness() - Sets the activation steepness for supplied neuron and layer number
  • fann_set_activation_function() - Sets the activation function for supplied neuron and layer

fann_duplicate_train_data
fann_get_activation_steepness
Fann 函数


Returns the activation steepness for supplied neuron and layer number

fann_get_activation_function
fann_get_bias_array
Fann 函数
PHP Manual

fann_get_activation_steepness

(PECL fann >= 1.0.0)

fann_get_activation_steepness — Returns the activation steepness for supplied neuron and layer number

说明

float fann_get_activation_steepness ( resource $ann , int $layer , int $neuron )

Get the activation steepness for neuron number neuron in layer number layer, counting the input layer as layer 0.

It is not possible to get activation steepness for the neurons in the input layer.

The steepness of an activation function says something about how fast the activation function goes from the minimum to the maximum. A high value for the activation function will also give a more agressive training.

When training neural networks where the output values should be at the extremes (usually 0 and 1, depending on the activation function), a steep activation function can be used (e.g. 1.0).

The default activation steepness is 0.5.

参数

ann

Neural network resource.

layer

Layer number

neuron

Neuron number

返回值

The activation steepness for the neuron or -1 if the neuron is not defined in the neural network, or FALSE on error.

参见

  • fann_set_activation_function() - Sets the activation function for supplied neuron and layer
  • fann_set_activation_steepness_layer() - Sets the activation steepness for all of the neurons in the supplied layer number
  • fann_set_activation_steepness_hidden() - Sets the steepness of the activation steepness for all neurons in the all hidden layers
  • fann_set_activation_steepness_output() - Sets the steepness of the activation steepness in the output layer
  • fann_set_activation_steepness() - Sets the activation steepness for supplied neuron and layer number

fann_get_activation_function
fann_get_bias_array
Fann 函数


Get the number of bias in each layer in the network

fann_get_activation_steepness
fann_get_bit_fail_limit
Fann 函数
PHP Manual

fann_get_bias_array

(PECL fann >= 1.0.0)

fann_get_bias_array — Get the number of bias in each layer in the network

说明

array fann_get_bias_array ( resource $ann )

Get the number of bias in each layer in the network.

参数

ann

Neural network resource.

返回值

An array of numbers of bias in each layer

fann_get_activation_steepness
fann_get_bit_fail_limit
Fann 函数


Returns the bit fail limit used during training

fann_get_bias_array
fann_get_bit_fail
Fann 函数
PHP Manual

fann_get_bit_fail_limit

(PECL fann >= 1.0.0)

fann_get_bit_fail_limit — Returns the bit fail limit used during training

说明

float fann_get_bit_fail_limit ( resource $ann )

Returns the bit fail limit used during training.

The bit fail limit is used during training where the stop function is set to FANN_STOPFUNC_BIT.

The limit is the maximum accepted difference between the desired output and the actual output during training. Each output that diverges more than this limit is counted as an error bit. This difference is divided by two when dealing with symmetric activation functions, so that symmetric and not symmetric activation functions can use the same limit.

The default bit fail limit is 0.35.

参数

ann

Neural network resource.

返回值

The bit fail limit, or FALSE on error.

参见

  • fann_set_bit_fail_limit() - Set the bit fail limit used during training

fann_get_bias_array
fann_get_bit_fail
Fann 函数


The number of fail bits

fann_get_bit_fail_limit
fann_get_cascade_activation_functions_count
Fann 函数
PHP Manual

fann_get_bit_fail

(PECL fann >= 1.0.0)

fann_get_bit_fail — The number of fail bits

说明

int fann_get_bit_fail ( resource $ann )

The number of fail bits; means the number of output neurons which differ more than the bit fail limit (see fann_get_bit_fail_limit(), fann_set_bit_fail_limit()). The bits are counted in all of the training data, so this number can be higher than the number of training data.

This value is reset by fann_reset_MSE() and updated by all the same functions which also updates the MSE value (e.g. fann_test_data(), fann_train_epoch())

参数

ann

Neural network resource.

返回值

The number of bits fail, or FALSE on error.

参见

  • fann_get_MSE() - Reads the mean square error from the network
  • fann_reset_MSE() - Resets the mean square error from the network
  • fann_test_data() - Test a set of training data and calculates the MSE for the training data
  • fann_train_epoch() - Train one epoch with a set of training data
  • fann_get_bit_fail_limit() - Returns the bit fail limit used during training
  • fann_set_bit_fail_limit() - Set the bit fail limit used during training

fann_get_bit_fail_limit
fann_get_cascade_activation_functions_count
Fann 函数


Returns the number of cascade activation functions

fann_get_bit_fail
fann_get_cascade_activation_functions
Fann 函数
PHP Manual

fann_get_cascade_activation_functions_count

(PECL fann >= 1.0.0)

fann_get_cascade_activation_functions_count — Returns the number of cascade activation functions

说明

int fann_get_cascade_activation_functions_count ( resource $ann )

The number of activation functions in the fann_get_cascade_activation_functions() array.

The default number of activation functions is 6.

参数

ann

Neural network resource.

返回值

The number of cascade activation functions, or FALSE on error.

参见

  • fann_get_cascade_activation_functions() - Returns the cascade activation functions
  • fann_set_cascade_activation_functions() - Sets the array of cascade candidate activation functions

fann_get_bit_fail
fann_get_cascade_activation_functions
Fann 函数


Returns the cascade activation functions

fann_get_cascade_activation_functions_count
fann_get_cascade_activation_steepnesses_count
Fann 函数
PHP Manual

fann_get_cascade_activation_functions

(PECL fann >= 1.0.0)

fann_get_cascade_activation_functions — Returns the cascade activation functions

说明

array fann_get_cascade_activation_functions ( resource $ann )

The cascade activation functions array is an array of the different activation functions used by the candidates

See fann_get_cascade_num_candidates() for a description of which candidate neurons will be generated by this array.

The default activation functions are FANN_SIGMOID, FANN_SIGMOID_SYMMETRIC, FANN_GAUSSIAN, FANN_GAUSSIAN_SYMMETRIC, FANN_ELLIOT, FANN_ELLIOT_SYMMETRIC.

参数

ann

Neural network resource.

返回值

The cascade activation functions, or FALSE on error.

参见

  • fann_get_cascade_activation_functions_count() - Returns the number of cascade activation functions
  • fann_set_cascade_activation_functions() - Sets the array of cascade candidate activation functions

fann_get_cascade_activation_functions_count
fann_get_cascade_activation_steepnesses_count
Fann 函数


The number of activation steepnesses

fann_get_cascade_activation_functions
fann_get_cascade_activation_steepnesses
Fann 函数
PHP Manual

fann_get_cascade_activation_steepnesses_count

(PECL fann >= 1.0.0)

fann_get_cascade_activation_steepnesses_count — The number of activation steepnesses

说明

int fann_get_cascade_activation_steepnesses_count ( resource $ann )

The number of activation steepnesses in the fann_get_cascade_activation_functions() array.

The default number of activation steepnesses is 4.

参数

ann

Neural network resource.

返回值

The number of activation steepnesses, or FALSE on error.

参见

  • fann_get_cascade_activation_steepnesses() - Returns the cascade activation steepnesses
  • fann_set_cascade_activation_functions() - Sets the array of cascade candidate activation functions

fann_get_cascade_activation_functions
fann_get_cascade_activation_steepnesses
Fann 函数


Returns the cascade activation steepnesses

fann_get_cascade_activation_steepnesses_count
fann_get_cascade_candidate_change_fraction
Fann 函数
PHP Manual

fann_get_cascade_activation_steepnesses

(PECL fann >= 1.0.0)

fann_get_cascade_activation_steepnesses — Returns the cascade activation steepnesses

说明

array fann_get_cascade_activation_steepnesses ( resource $ann )

The cascade activation steepnesses array is an array of the different activation functions used by the candidates.

See fann_get_cascade_num_candidates() for a description of which candidate neurons will be generated by this array.

The default activation steepnesses are {0.25, 0.50, 0.75, 1.00}.

参数

ann

Neural network resource.

返回值

The cascade activation steepnesses, or FALSE on error.

参见

  • fann_get_cascade_activation_steepnesses_count() - The number of activation steepnesses
  • fann_set_cascade_activation_steepnesses() - Sets the array of cascade candidate activation steepnesses

fann_get_cascade_activation_steepnesses_count
fann_get_cascade_candidate_change_fraction
Fann 函数


Returns the cascade candidate change fraction

fann_get_cascade_activation_steepnesses
fann_get_cascade_candidate_limit
Fann 函数
PHP Manual

fann_get_cascade_candidate_change_fraction

(PECL fann >= 1.0.0)

fann_get_cascade_candidate_change_fraction — Returns the cascade candidate change fraction

说明

float fann_get_cascade_candidate_change_fraction ( resource $ann )

The cascade candidate change fraction is a number between 0 and 1 determining how large a fraction the fann_get_MSE() value should change within fann_get_cascade_candidate_stagnation_epochs() during training of the candidate neurons, in order for the training not to stagnate. If the training stagnates, the training of the candidate neurons will be ended and the best candidate will be selected.

It means that if the MSE does not change by a fraction of fann_get_cascade_candidate_change_fraction() during a period of fann_get_cascade_candidate_stagnation_epochs(), the training of the candidate neurons is stopped because the training has stagnated.

If the cascade candidate change fraction is low, the candidate neurons will be trained more and if the fraction is high they will be trained less.

The default cascade candidate change fraction is 0.01, which is equalent to a 1% change in MSE.

参数

ann

Neural network resource.

返回值

The cascade candidate change fraction, or FALSE on error.

参见

  • fann_set_cascade_candidate_change_fraction() - Sets the cascade candidate change fraction
  • fann_get_MSE() - Reads the mean square error from the network
  • fann_get_cascade_candidate_stagnation_epochs() - Returns the number of cascade candidate stagnation epochs

fann_get_cascade_activation_steepnesses
fann_get_cascade_candidate_limit
Fann 函数


Return the candidate limit

fann_get_cascade_candidate_change_fraction
fann_get_cascade_candidate_stagnation_epochs
Fann 函数
PHP Manual

fann_get_cascade_candidate_limit

(PECL fann >= 1.0.0)

fann_get_cascade_candidate_limit — Return the candidate limit

说明

float fann_get_cascade_candidate_limit ( resource $ann )

The candidate limit is a limit for how much the candidate neuron may be trained. The limit is a limit on the proportion between the MSE and candidate score.

Set this to a lower value to avoid overfitting and to a higher if overfitting is not a problem.

The default candidate limit is 1000.0.

参数

ann

Neural network resource.

返回值

The candidate limit, or FALSE on error.

参见

  • fann_set_cascade_candidate_limit() - Sets the candidate limit

fann_get_cascade_candidate_change_fraction
fann_get_cascade_candidate_stagnation_epochs
Fann 函数


Returns the number of cascade candidate stagnation epochs

fann_get_cascade_candidate_limit
fann_get_cascade_max_cand_epochs
Fann 函数
PHP Manual

fann_get_cascade_candidate_stagnation_epochs

(PECL fann >= 1.0.0)

fann_get_cascade_candidate_stagnation_epochs — Returns the number of cascade candidate stagnation epochs

说明

float fann_get_cascade_candidate_stagnation_epochs ( resource $ann )

The number of cascade candidate stagnation epochs determines the number of epochs training is allowed to continue without changing the MSE by a fraction of fann_get_cascade_candidate_change_fraction().

See more info about this parameter in fann_get_cascade_candidate_change_fraction().

The default number of cascade candidate stagnation epochs is 12.

参数

ann

Neural network resource.

返回值

The number of cascade candidate stagnation epochs, or FALSE on error.

参见

  • fann_set_cascade_candidate_stagnation_epochs() - Sets the number of cascade candidate stagnation epochs
  • fann_get_cascade_candidate_change_fraction() - Returns the cascade candidate change fraction

fann_get_cascade_candidate_limit
fann_get_cascade_max_cand_epochs
Fann 函数


Returns the maximum candidate epochs

fann_get_cascade_candidate_stagnation_epochs
fann_get_cascade_max_out_epochs
Fann 函数
PHP Manual

fann_get_cascade_max_cand_epochs

(PECL fann >= 1.0.0)

fann_get_cascade_max_cand_epochs — Returns the maximum candidate epochs

说明

int fann_get_cascade_max_cand_epochs ( resource $ann )

The maximum candidate epochs determines the maximum number of epochs the input connections to the candidates may be trained before adding a new candidate neuron.

The default max candidate epochs is 150.

参数

ann

Neural network resource.

返回值

The maximum candidate epochs, or FALSE on error.

参见

  • fann_set_cascade_max_cand_epochs() - Sets the max candidate epochs

fann_get_cascade_candidate_stagnation_epochs
fann_get_cascade_max_out_epochs
Fann 函数


Returns the maximum out epochs

fann_get_cascade_max_cand_epochs
fann_get_cascade_min_cand_epochs
Fann 函数
PHP Manual

fann_get_cascade_max_out_epochs

(PECL fann >= 1.0.0)

fann_get_cascade_max_out_epochs — Returns the maximum out epochs

说明

int fann_get_cascade_max_out_epochs ( resource $ann )

The maximum out epochs determines the maximum number of epochs the output connections may be trained after adding a new candidate neuron.

The default max out epochs is 150.

参数

ann

Neural network resource.

返回值

The maximum out epochs, or FALSE on error.

参见

  • fann_set_cascade_max_out_epochs() - Sets the maximum out epochs

fann_get_cascade_max_cand_epochs
fann_get_cascade_min_cand_epochs
Fann 函数


Returns the minimum candidate epochs

fann_get_cascade_max_out_epochs
fann_get_cascade_min_out_epochs
Fann 函数
PHP Manual

fann_get_cascade_min_cand_epochs

(PECL fann >= 1.0.0)

fann_get_cascade_min_cand_epochs — Returns the minimum candidate epochs

说明

int fann_get_cascade_min_cand_epochs ( resource $ann )

The minimum candidate epochs determines the minimum number of epochs the input connections to the candidates may be trained before adding a new candidate neuron.

The default min candidate epochs is 50.

参数

ann

Neural network resource.

返回值

The minimum candidate epochs, or FALSE on error.

参见

  • fann_set_cascade_min_cand_epochs() - Sets the min candidate epochs

fann_get_cascade_max_out_epochs
fann_get_cascade_min_out_epochs
Fann 函数


Returns the minimum out epochs

fann_get_cascade_min_cand_epochs
fann_get_cascade_num_candidate_groups
Fann 函数
PHP Manual

fann_get_cascade_min_out_epochs

(PECL fann >= 1.0.0)

fann_get_cascade_min_out_epochs — Returns the minimum out epochs

说明

int fann_get_cascade_min_out_epochs ( resource $ann )

The minimum out epochs determines the minimum number of epochs the output connections must be trained after adding a new candidate neuron.

The default min out epochs is 50.

参数

ann

Neural network resource.

返回值

The minimum out epochs, or FALSE on error.

参见

  • fann_set_cascade_min_out_epochs() - Sets the minimum out epochs

fann_get_cascade_min_cand_epochs
fann_get_cascade_num_candidate_groups
Fann 函数


Returns the number of candidate groups

fann_get_cascade_min_out_epochs
fann_get_cascade_num_candidates
Fann 函数
PHP Manual

fann_get_cascade_num_candidate_groups

(PECL fann >= 1.0.0)

fann_get_cascade_num_candidate_groups — Returns the number of candidate groups

说明

int fann_get_cascade_num_candidate_groups ( resource $ann )

The number of candidate groups is the number of groups of identical candidates which will be used during training.

This number can be used to have more candidates without having to define new parameters for the candidates.

See fann_get_cascade_num_candidates() for a description of which candidate neurons will be generated by this parameter.

The default number of candidate groups is 2.

参数

ann

Neural network resource.

返回值

The number of candidate groups, or FALSE on error.

参见

  • fann_set_cascade_num_candidate_groups() - Sets the number of candidate groups

fann_get_cascade_min_out_epochs
fann_get_cascade_num_candidates
Fann 函数


Returns the number of candidates used during training

fann_get_cascade_num_candidate_groups
fann_get_cascade_output_change_fraction
Fann 函数
PHP Manual

fann_get_cascade_num_candidates

(PECL fann >= 1.0.0)

fann_get_cascade_num_candidates — Returns the number of candidates used during training

说明

int fann_get_cascade_num_candidates ( resource $ann )

The number of candidates used during training (calculated by multiplying
fann_get_cascade_activation_functions_count(),
fann_get_cascade_activation_steepnesses_count() and
fann_get_cascade_num_candidate_groups()).

The actual candidates is defined by the fann_get_cascade_activation_functions() and fann_get_cascade_activation_steepnesses() arrays. These arrays define the activation functions and activation steepnesses used for the candidate neurons. If there are 2 activation functions in the activation function array and 3 steepnesses in the steepness array, then there will be 2x3=6 different candidates which will be trained. These 6 different candidates can be copied into several candidate groups, where the only difference between these groups is the initial weights. If the number of groups is set to 2, then the number of candidate neurons will be 2x3x2=12. The number of candidate groups is defined by fann_set_cascade_num_candidate_groups().

The default number of candidates is 6x4x2 = 48

参数

ann

Neural network resource.

返回值

The number of candidates used during training, or FALSE on error.

参见

  • fann_get_cascade_activation_functions() - Returns the cascade activation functions
  • fann_get_cascade_activation_functions_count() - Returns the number of cascade activation functions
  • fann_get_cascade_activation_steepnesses() - Returns the cascade activation steepnesses
  • fann_get_cascade_activation_steepnesses_count() - The number of activation steepnesses
  • fann_get_cascade_num_candidate_groups() - Returns the number of candidate groups

fann_get_cascade_num_candidate_groups
fann_get_cascade_output_change_fraction
Fann 函数


Returns the cascade output change fraction

fann_get_cascade_num_candidates
fann_get_cascade_output_stagnation_epochs
Fann 函数
PHP Manual

fann_get_cascade_output_change_fraction

(PECL fann >= 1.0.0)

fann_get_cascade_output_change_fraction — Returns the cascade output change fraction

说明

float fann_get_cascade_output_change_fraction ( resource $ann )

The cascade output change fraction is a number between 0 and 1 determining how large a fraction of the fann_get_MSE() value should change within fann_get_cascade_output_stagnation_epochs() during training of the output connections, in order for the training not to stagnate. If the training stagnates, the training of the output connections will be ended and new candidates will be prepared.

It means that if the MSE does not change by a fraction of fann_get_cascade_output_change_fraction() during a period of fann_get_cascade_output_stagnation_epochs(), the training of the output connections is stopped because the training has stagnated.

If the cascade output change fraction is low, the output connections will be trained more and if the fraction is high, they will be trained less.

The default cascade output change fraction is 0.01, which is equalent to a 1% change in MSE.

参数

ann

Neural network resource.

返回值

The cascade output change fraction, or FALSE on error.

参见

  • fann_set_cascade_output_change_fraction() - Sets the cascade output change fraction
  • fann_get_MSE() - Reads the mean square error from the network
  • fann_get_cascade_output_stagnation_epochs() - Returns the number of cascade output stagnation epochs

fann_get_cascade_num_candidates
fann_get_cascade_output_stagnation_epochs
Fann 函数


Returns the number of cascade output stagnation epochs

fann_get_cascade_output_change_fraction
fann_get_cascade_weight_multiplier
Fann 函数
PHP Manual

fann_get_cascade_output_stagnation_epochs

(PECL fann >= 1.0.0)

fann_get_cascade_output_stagnation_epochs — Returns the number of cascade output stagnation epochs

说明

int fann_get_cascade_output_stagnation_epochs ( resource $ann )

The number of cascade output stagnation epochs determines the number of epochs training is allowed to continue without changing the MSE by a fraction of fann_get_cascade_output_change_fraction().

See more info about this parameter in fann_get_cascade_output_change_fraction().

The default number of cascade output stagnation epochs is 12.

参数

ann

Neural network resource.

返回值

The number of cascade output stagnation epochs, or FALSE on error.

参见

  • fann_set_cascade_output_stagnation_epochs() - Sets the number of cascade output stagnation epochs
  • fann_get_cascade_output_change_fraction() - Returns the cascade output change fraction

fann_get_cascade_output_change_fraction
fann_get_cascade_weight_multiplier
Fann 函数


Returns the weight multiplier

fann_get_cascade_output_stagnation_epochs
fann_get_connection_array
Fann 函数
PHP Manual

fann_get_cascade_weight_multiplier

(PECL fann >= 1.0.0)

fann_get_cascade_weight_multiplier — Returns the weight multiplier

说明

float fann_get_cascade_weight_multiplier ( resource $ann )

The weight multiplier is a parameter which is used to multiply the weights from the candidate neuron before adding the neuron to the neural network. This parameter is usually between 0 and 1, and is used to make the training a bit less aggressive.

The default weight multiplier is 0.4.

参数

ann

Neural network resource.

返回值

The weight multiplier, or FALSE on error.

参见

  • fann_set_cascade_weight_multiplier() - Sets the weight multiplier

fann_get_cascade_output_stagnation_epochs
fann_get_connection_array
Fann 函数


Get connections in the network

fann_get_cascade_weight_multiplier
fann_get_connection_rate
Fann 函数
PHP Manual

fann_get_connection_array

(PECL fann >= 1.0.0)

fann_get_connection_array — Get connections in the network

说明

array fann_get_connection_array ( resource $ann )

Get connections in the network.

参数

ann

Neural network resource.

返回值

An array of connections in the network

fann_get_cascade_weight_multiplier
fann_get_connection_rate
Fann 函数


Get the connection rate used when the network was created

fann_get_connection_array
fann_get_errno
Fann 函数
PHP Manual

fann_get_connection_rate

(PECL fann >= 1.0.0)

fann_get_connection_rate — Get the connection rate used when the network was created

说明

float fann_get_connection_rate ( resource $ann )

Get the connection rate used when the network was created.

参数

ann

Neural network resource.

返回值

The connection rate used when the network was created, or FALSE on error.

fann_get_connection_array
fann_get_errno
Fann 函数


Returns the last error number

fann_get_connection_rate
fann_get_errstr
Fann 函数
PHP Manual

fann_get_errno

(PECL fann >= 1.0.0)

fann_get_errno — Returns the last error number

说明

int fann_get_errno ( resource $errdat )

Returns the last error number.

参数

errdat

Either neural network resource or neural network trainining data resource.

返回值

The error number, or FALSE on error.

参见

  • fann_reset_errno() - Resets the last error number
  • fann_get_errstr() - Returns the last errstr

fann_get_connection_rate
fann_get_errstr
Fann 函数


Returns the last errstr

fann_get_errno
fann_get_layer_array
Fann 函数
PHP Manual

fann_get_errstr

(PECL fann >= 1.0.0)

fann_get_errstr — Returns the last errstr

说明

string fann_get_errstr ( resource $errdat )

Returns the last errstr.

参数

errdat

Either neural network resource or neural network trainining data resource.

返回值

The last error string, or FALSE on error.

参见

  • fann_reset_errstr() - Resets the last error string
  • fann_get_errno() - Returns the last error number

fann_get_errno
fann_get_layer_array
Fann 函数


Get the number of neurons in each layer in the network

fann_get_errstr
fann_get_learning_momentum
Fann 函数
PHP Manual

fann_get_layer_array

(PECL fann >= 1.0.0)

fann_get_layer_array — Get the number of neurons in each layer in the network

说明

array fann_get_layer_array ( resource $ann )

Get the number of neurons in each layer in the neural network.

Bias is not included so the layers match the fann_create functions.

参数

ann

Neural network resource.

返回值

An array of numbers of neurons in each leayer

fann_get_errstr
fann_get_learning_momentum
Fann 函数


Returns the learning momentum

fann_get_layer_array
fann_get_learning_rate
Fann 函数
PHP Manual

fann_get_learning_momentum

(PECL fann >= 1.0.0)

fann_get_learning_momentum — Returns the learning momentum

说明

float fann_get_learning_momentum ( resource $ann )

The learning momentum can be used to speed up FANN_TRAIN_INCREMENTAL training. A too high momentum will however not benefit training. Setting momentum to 0 will be the same as not using the momentum parameter. The recommended value of this parameter is between 0.0 and 1.0.

The default momentum is 0.

参数

ann

Neural network resource.

返回值

Returns TRUE on success, or FALSE otherwise.

The learning momentum, or FALSE on error.

参见

  • fann_set_learning_momentum() - Sets the learning momentum
  • fann_set_training_algorithm() - Sets the training algorithm

fann_get_layer_array
fann_get_learning_rate
Fann 函数


Returns the learning rate

fann_get_learning_momentum
fann_get_MSE
Fann 函数
PHP Manual

fann_get_learning_rate

(PECL fann >= 1.0.0)

fann_get_learning_rate — Returns the learning rate

说明

float fann_get_learning_rate ( resource $ann )

The learning rate is used to determine how aggressive training should be for some of the training algorithms (FANN_TRAIN_INCREMENTAL, FANN_TRAIN_BATCH, FANN_TRAIN_QUICKPROP). Do however note that it is not used in FANN_TRAIN_RPROP.

The default learning rate is 0.7.

参数

ann

Neural network resource.

返回值

The learning rate, or FALSE on error.

参见

  • fann_set_learning_rate() - Sets the learning rate
  • fann_set_training_algorithm() - Sets the training algorithm

fann_get_learning_momentum
fann_get_MSE
Fann 函数


Reads the mean square error from the network

fann_get_learning_rate
fann_get_network_type
Fann 函数
PHP Manual

fann_get_MSE

(PECL fann >= 1.0.0)

fann_get_MSE — Reads the mean square error from the network

说明

float fann_get_MSE ( resource $ann )

Reads the mean square error from the network.

Reads the mean square error from the network. This value is calculated during training or testing and can therefore sometimes be a bit off if the weights have been changed since the last calculation of the value.

参数

ann

Neural network resource.

返回值

The mean square error, or FALSE on error.

参见

  • fann_test_data() - Test a set of training data and calculates the MSE for the training data

fann_get_learning_rate
fann_get_network_type
Fann 函数


Get the type of neural network it was created as

fann_get_MSE
fann_get_num_input
Fann 函数
PHP Manual

fann_get_network_type

(PECL fann >= 1.0.0)

fann_get_network_type — Get the type of neural network it was created as

说明

int fann_get_network_type ( resource $ann )

Get the type of neural network it was created as.

参数

ann

Neural network resource.

返回值

Network type constant, or FALSE on error.

fann_get_MSE
fann_get_num_input
Fann 函数


Get the number of input neurons

fann_get_network_type
fann_get_num_layers
Fann 函数
PHP Manual

fann_get_num_input

(PECL fann >= 1.0.0)

fann_get_num_input — Get the number of input neurons

说明

int fann_get_num_input ( resource $ann )

Get the number of input neurons.

参数

ann

Neural network resource.

返回值

Number of input neurons, or FALSE on error

fann_get_network_type
fann_get_num_layers
Fann 函数


Get the number of layers in the neural network

fann_get_num_input
fann_get_num_output
Fann 函数
PHP Manual

fann_get_num_layers

(PECL fann >= 1.0.0)

fann_get_num_layers — Get the number of layers in the neural network

说明

int fann_get_num_layers ( resource $ann )

Get the number of layers in the neural network.

参数

ann

Neural network resource.

返回值

The number of leayers in the neural network, or FALSE on error.

fann_get_num_input
fann_get_num_output
Fann 函数


Get the number of output neurons

fann_get_num_layers
fann_get_quickprop_decay
Fann 函数
PHP Manual

fann_get_num_output

(PECL fann >= 1.0.0)

fann_get_num_output — Get the number of output neurons

说明

int fann_get_num_output ( resource $ann )

Get the number of output neurons.

参数

ann

Neural network resource.

返回值

Number of output neurons, or FALSE on error

fann_get_num_layers
fann_get_quickprop_decay
Fann 函数


Returns the decay which is a factor that weights should decrease in each iteration during quickprop training

fann_get_num_output
fann_get_quickprop_mu
Fann 函数
PHP Manual

fann_get_quickprop_decay

(PECL fann >= 1.0.0)

fann_get_quickprop_decay — Returns the decay which is a factor that weights should decrease in each iteration during quickprop training

说明

float fann_get_quickprop_decay ( resource $ann )

The decay is a small negative valued number which is a factor that the weights should decrease in each iteration during quickprop training. This is used to make sure that the weights do not become too high during training.

The default decay is -0.0001.

参数

ann

Neural network resource.

返回值

The decay, or FALSE on error.

参见

  • fann_set_quickprop_decay() - Sets the quickprop decay factor

fann_get_num_output
fann_get_quickprop_mu
Fann 函数


Returns the mu factor

fann_get_quickprop_decay
fann_get_rprop_decrease_factor
Fann 函数
PHP Manual

fann_get_quickprop_mu

(PECL fann >= 1.0.0)

fann_get_quickprop_mu — Returns the mu factor

说明

float fann_get_quickprop_mu ( resource $ann )

The mu factor is used to increase and decrease the step-size during quickprop training. The mu factor should always be above 1, since it would otherwise decrease the step-size when it was suppose to increase it.

The default mu factor is 1.75.

参数

ann

Neural network resource.

返回值

The mu factor, or FALSE on error.

参见

  • fann_set_quickprop_mu() - Sets the quickprop mu factor

fann_get_quickprop_decay
fann_get_rprop_decrease_factor
Fann 函数


Returns the increase factor used during RPROP training

fann_get_quickprop_mu
fann_get_rprop_delta_max
Fann 函数
PHP Manual

fann_get_rprop_decrease_factor

(PECL fann >= 1.0.0)

fann_get_rprop_decrease_factor — Returns the increase factor used during RPROP training

说明

float fann_get_rprop_decrease_factor ( resource $ann )

The decrease factor is a value smaller than 1, which is used to decrease the step-size during RPROP training.

The default decrease factor is 0.5.

参数

ann

Neural network resource.

返回值

The decrease factor, or FALSE on error.

参见

  • fann_set_rprop_decrease_factor() - Sets the decrease factor used during RPROP training

fann_get_quickprop_mu
fann_get_rprop_delta_max
Fann 函数


Returns the maximum step-size

fann_get_rprop_decrease_factor
fann_get_rprop_delta_min
Fann 函数
PHP Manual

fann_get_rprop_delta_max

(PECL fann >= 1.0.0)

fann_get_rprop_delta_max — Returns the maximum step-size

说明

float fann_get_rprop_delta_max ( resource $ann )

The maximum step-size is a positive number determining how large the maximum step-size may be.

The default delta max is 50.0.

参数

ann

Neural network resource.

返回值

The maximum step-size, or FALSE on error.

参见

  • fann_set_rprop_delta_max() - Sets the maximum step-size
  • fann_get_rprop_delta_min() - Returns the minimum step-size

fann_get_rprop_decrease_factor
fann_get_rprop_delta_min
Fann 函数


Returns the minimum step-size

fann_get_rprop_delta_max
fann_get_rprop_delta_zero
Fann 函数
PHP Manual

fann_get_rprop_delta_min

(PECL fann >= 1.0.0)

fann_get_rprop_delta_min — Returns the minimum step-size

说明

float fann_get_rprop_delta_min ( resource $ann )

The minimum step-size is a small positive number determining how small the minimum step-size may be.

The default value delta min is 0.0.

参数

ann

Neural network resource.

返回值

The minimum step-size, or FALSE on error.

参见

  • fann_set_rprop_delta_min() - Sets the minimum step-size

fann_get_rprop_delta_max
fann_get_rprop_delta_zero
Fann 函数


Returns the initial step-size

fann_get_rprop_delta_min
fann_get_rprop_increase_factor
Fann 函数
PHP Manual

fann_get_rprop_delta_zero

(PECL fann >= 1.0.0)

fann_get_rprop_delta_zero — Returns the initial step-size

说明

ReturnType fann_get_rprop_delta_zero ( resource $ann )

The initial step-size is a positive number determining the initial step size.

The default delta zero is 0.1.

参数

ann

Neural network resource.

返回值

The initial step-size, or FALSE on error.

参见

  • fann_set_rprop_delta_zero() - Sets the initial step-size
  • fann_get_rprop_delta_min() - Returns the minimum step-size
  • fann_get_rprop_delta_max() - Returns the maximum step-size

fann_get_rprop_delta_min
fann_get_rprop_increase_factor
Fann 函数


Returns the increase factor used during RPROP training

fann_get_rprop_delta_zero
fann_get_sarprop_step_error_shift
Fann 函数
PHP Manual

fann_get_rprop_increase_factor

(PECL fann >= 1.0.0)

fann_get_rprop_increase_factor — Returns the increase factor used during RPROP training

说明

float fann_get_rprop_increase_factor ( resource $ann )

The increase factor is a value larger than 1, which is used to increase the step-size during RPROP training.

The default increase factor is 1.2.

参数

ann

Neural network resource.

返回值

The increase factor, or FALSE on error.

参见

  • fann_set_rprop_increase_factor() - Sets the increase factor used during RPROP training

fann_get_rprop_delta_zero
fann_get_sarprop_step_error_shift
Fann 函数


Returns the sarprop step error shift

fann_get_rprop_increase_factor
fann_get_sarprop_step_error_threshold_factor
Fann 函数
PHP Manual

fann_get_sarprop_step_error_shift

(PECL fann >= 1.0.0)

fann_get_sarprop_step_error_shift — Returns the sarprop step error shift

说明

float fann_get_sarprop_step_error_shift ( resource $ann )

Returns the sarprop step error shift.

The default step error shift is 1.385.

参数

ann

Neural network resource.

返回值

The sarprop step error shift , or FALSE on error.

参见

  • fann_set_sarprop_step_error_shift() - Sets the sarprop step error shift

fann_get_rprop_increase_factor
fann_get_sarprop_step_error_threshold_factor
Fann 函数


Returns the sarprop step error threshold factor

fann_get_sarprop_step_error_shift
fann_get_sarprop_temperature
Fann 函数
PHP Manual

fann_get_sarprop_step_error_threshold_factor

(PECL fann >= 1.0.0)

fann_get_sarprop_step_error_threshold_factor — Returns the sarprop step error threshold factor

说明

float fann_get_sarprop_step_error_threshold_factor ( resource $ann )

The sarprop step error threshold factor.

The default factor is 0.1.

参数

ann

Neural network resource.

返回值

The sarprop step error threshold factor, or FALSE on error.

参见

  • fann_set_sarprop_step_error_threshold_factor() - Sets the sarprop step error threshold factor

fann_get_sarprop_step_error_shift
fann_get_sarprop_temperature
Fann 函数


Returns the sarprop temperature

fann_get_sarprop_step_error_threshold_factor
fann_get_sarprop_weight_decay_shift
Fann 函数
PHP Manual

fann_get_sarprop_temperature

(PECL fann >= 1.0.0)

fann_get_sarprop_temperature — Returns the sarprop temperature

说明

float fann_get_sarprop_temperature ( resource $ann )

Returns the sarprop temperature.

The default temperature is 0.015.

参数

ann

Neural network resource.

返回值

The sarprop temperature, or FALSE on error.

参见

  • fann_set_sarprop_temperature() - Sets the sarprop temperature

fann_get_sarprop_step_error_threshold_factor
fann_get_sarprop_weight_decay_shift
Fann 函数


Returns the sarprop weight decay shift

fann_get_sarprop_temperature
fann_get_total_connections
Fann 函数
PHP Manual

fann_get_sarprop_weight_decay_shift

(PECL fann >= 1.0.0)

fann_get_sarprop_weight_decay_shift — Returns the sarprop weight decay shift

说明

float fann_get_sarprop_weight_decay_shift ( resource $ann )

The sarprop weight decay shift.

The default delta max is -6.644.

参数

ann

Neural network resource.

返回值

The sarprop weight decay shift, or FALSE on error.

参见

  • fann_set_sarprop_weight_decay_shift() - Sets the sarprop weight decay shift

fann_get_sarprop_temperature
fann_get_total_connections
Fann 函数


Get the total number of connections in the entire network

fann_get_sarprop_weight_decay_shift
fann_get_total_neurons
Fann 函数
PHP Manual

fann_get_total_connections

(PECL fann >= 1.0.0)

fann_get_total_connections — Get the total number of connections in the entire network

说明

int fann_get_total_connections ( resource $ann )

Get the total number of connections in the entire network.

参数

ann

Neural network resource.

返回值

Total number of connections in the entire network, or FALSE on error

fann_get_sarprop_weight_decay_shift
fann_get_total_neurons
Fann 函数


Get the total number of neurons in the entire network

fann_get_total_connections
fann_get_train_error_function
Fann 函数
PHP Manual

fann_get_total_neurons

(PECL fann >= 1.0.0)

fann_get_total_neurons — Get the total number of neurons in the entire network

说明

int fann_get_total_neurons ( resource $ann )

Get the total number of neurons in the entire network. This number does also include the bias neurons, so a 2-4-2 network has 2+4+2 +2(bias) = 10 neurons.

参数

ann

Neural network resource.

返回值

Total number of neurons in the entire network, or FALSE on error.

fann_get_total_connections
fann_get_train_error_function
Fann 函数


Returns the error function used during training

fann_get_total_neurons
fann_get_train_stop_function
Fann 函数
PHP Manual

fann_get_train_error_function

(PECL fann >= 1.0.0)

fann_get_train_error_function — Returns the error function used during training

说明

int fann_get_train_error_function ( resource $ann )

Returns the error function used during training.

The error functions are described further in error functions constants.

The default error function is FANN_ERRORFUNC_TANH.

参数

ann

Neural network resource.

返回值

The error function constant, or FALSE on error.

参见

  • fann_set_train_error_function() - Sets the error function used during training

fann_get_total_neurons
fann_get_train_stop_function
Fann 函数


Returns the stop function used during training

fann_get_train_error_function
fann_get_training_algorithm
Fann 函数
PHP Manual

fann_get_train_stop_function

(PECL fann >= 1.0.0)

fann_get_train_stop_function — Returns the stop function used during training

说明

int fann_get_train_stop_function ( resource $ann )

Returns the stop function used during training.

The stop functions are described further in stop functions constants.

The default stop function is FANN_STOPFUNC_MSE.

参数

ann

Neural network resource.

返回值

The stop function constant, or FALSE on error.

参见

  • fann_set_train_stop_function() - Sets the stop function used during training

fann_get_train_error_function
fann_get_training_algorithm
Fann 函数


Returns the training algorithm

fann_get_train_stop_function
fann_init_weights
Fann 函数
PHP Manual

fann_get_training_algorithm

(PECL fann >= 1.0.0)

fann_get_training_algorithm — Returns the training algorithm

说明

int fann_get_training_algorithm ( resource $ann )

Returns the training algorithm. This training algorithm is used by fann_train_on_data() and associated functions.

Note that this algorithm is also used during fann_cascadetrain_on_data(), although only FANN_TRAIN_RPROP and FANN_TRAIN_QUICKPROP is allowed during cascade training.

参数

ann

Neural network resource.

返回值

Training algorithm constant, or FALSE on error.

参见

  • fann_set_training_algorithm() - Sets the training algorithm

fann_get_train_stop_function
fann_init_weights
Fann 函数


Initialize the weights using Widrow + Nguyen’s algorithm

fann_get_training_algorithm
fann_length_train_data
Fann 函数
PHP Manual

fann_init_weights

(PECL fann >= 1.0.0)

fann_init_weights — Initialize the weights using Widrow + Nguyen's algorithm

说明

bool fann_init_weights ( resource $ann , resource $train_data )

Initialize the weights using Widrow + Nguyen's algorithm.

This function behaves similarly to fann_randomize_weights(). It will use the algorithm developed by Derrick Nguyen and Bernard Widrow to set the weights in such a way as to speed up training. This technique is not always successful, and in some cases can be less efficient than a purely random initialization.

The algorithm requires access to the range of the input data (for example largest and smallest input), and therefore accepts a second argument, data, which is the training data that will be used to train the network.

参数

ann

Neural network resource.

train_data

Neural network training data resource.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_randomize_weights() - Give each connection a random weight between min_weight and max_weight
  • fann_read_train_from_file() - Reads a file that stores training data

fann_get_training_algorithm
fann_length_train_data
Fann 函数


Returns the number of training patterns in the train data

fann_init_weights
fann_merge_train_data
Fann 函数
PHP Manual

fann_length_train_data

(PECL fann >= 1.0.0)

fann_length_train_data — Returns the number of training patterns in the train data

说明

int fann_length_train_data ( resource $data )

Returns the number of training patterns in the train data resource.

参数

data

Neural network training data resource.

返回值

Number of elements in the train data resource, or FALSE on error.

fann_init_weights
fann_merge_train_data
Fann 函数


Merges the train data

fann_length_train_data
fann_num_input_train_data
Fann 函数
PHP Manual

fann_merge_train_data

(PECL fann >= 1.0.0)

fann_merge_train_data — Merges the train data

说明

resource fann_merge_train_data ( resource $data1 , resource $data2 )

Merges the data from data1 and data2 into a new train data resource.

参数

data1

Neural network training data resource.

data2

Neural network training data resource.

返回值

New merged train data resource, or FALSE on error.

fann_length_train_data
fann_num_input_train_data
Fann 函数


Returns the number of inputs in each of the training patterns in the train data

fann_merge_train_data
fann_num_output_train_data
Fann 函数
PHP Manual

fann_num_input_train_data

(PECL fann >= 1.0.0)

fann_num_input_train_data — Returns the number of inputs in each of the training patterns in the train data

说明

int fann_num_input_train_data ( resource $data )

Returns the number of inputs in each of the training patterns in the train data resource.

参数

data

Neural network training data resource.

返回值

The number of inputs, or FALSE on error.

参见

  • fann_length_train_data() - Returns the number of training patterns in the train data
  • fann_num_output_train_data() - Returns the number of outputs in each of the training patterns in the train data

fann_merge_train_data
fann_num_output_train_data
Fann 函数


Returns the number of outputs in each of the training patterns in the train data

fann_num_input_train_data
fann_print_error
Fann 函数
PHP Manual

fann_num_output_train_data

(PECL fann >= 1.0.0)

fann_num_output_train_data — Returns the number of outputs in each of the training patterns in the train data

说明

int fann_num_output_train_data ( resource $data )

Returns the number of outputs in each of the training patterns in the train data resource.

参数

data

Neural network training data resource.

返回值

The number of outputs, or FALSE on error.

参见

  • fann_length_train_data() - Returns the number of training patterns in the train data
  • fann_num_input_train_data() - Returns the number of inputs in each of the training patterns in the train data

fann_num_input_train_data
fann_print_error
Fann 函数


Prints the error string

fann_num_output_train_data
fann_randomize_weights
Fann 函数
PHP Manual

fann_print_error

(PECL fann >= 1.0.0)

fann_print_error — Prints the error string

说明

void fann_print_error ( string $errdat )

Prints the error string.

参数

errdat

Either neural network resource or neural network trainining data resource.

返回值

No value is returned.

参见

  • fann_get_errstr() - Returns the last errstr

fann_num_output_train_data
fann_randomize_weights
Fann 函数


Give each connection a random weight between min_weight and max_weight

fann_print_error
fann_read_train_from_file
Fann 函数
PHP Manual

fann_randomize_weights

(PECL fann >= 1.0.0)

fann_randomize_weights — Give each connection a random weight between min_weight and max_weight

说明

bool fann_randomize_weights ( resource $ann , float $min_weight , float $max_weight )

Give each connection a random weight between min_weight and max_weight

From the beginning the weights are random between -0.1 and 0.1.

参数

ann

Neural network resource.

min_weight

Minimum weight value

max_weight

Maximum weight value

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_init_weights() - Initialize the weights using Widrow + Nguyen’s algorithm

fann_print_error
fann_read_train_from_file
Fann 函数


Reads a file that stores training data

fann_randomize_weights
fann_reset_errno
Fann 函数
PHP Manual

fann_read_train_from_file

(PECL fann >= 1.0.0)

fann_read_train_from_file — Reads a file that stores training data

说明

resource fann_read_train_from_file ( string $filename )

Reads a file that stores training data.

参数

filename

The input file in the following format:

num_train_data num_input num_output
inputdata seperated by space
outputdata seperated by space

.
.
.

inputdata seperated by space
outputdata seperated by space

返回值

Returns a train data resource on success, or FALSE on error.

范例

Example #1 fann_read_train_from_file() example

<?php
$train_data = fann_read_train_from_file("xor.data");
if ($train_data) {
    // Do something with $train_data for XOR function
}
?>

Contents of xor.data

4 2 1
-1 -1
-1
-1 1
1
1 -1
1
1 1
-1

参见

  • fann_train_on_data() - Trains on an entire dataset for a period of time
  • fann_destroy_train() - Destructs the training data
  • fann_save_train() - Save the training structure to a file

fann_randomize_weights
fann_reset_errno
Fann 函数


Resets the last error number

fann_read_train_from_file
fann_reset_errstr
Fann 函数
PHP Manual

fann_reset_errno

(PECL fann >= 1.0.0)

fann_reset_errno — Resets the last error number

说明

void fann_reset_errno ( resource $errdat )

Resets the last error number.

参数

errdat

Either neural network resource or neural network trainining data resource.

返回值

No value is returned.

参见

  • fann_get_errno() - Returns the last error number
  • fann_reset_errstr() - Resets the last error string

fann_read_train_from_file
fann_reset_errstr
Fann 函数


Resets the last error string

fann_reset_errno
fann_reset_MSE
Fann 函数
PHP Manual

fann_reset_errstr

(PECL fann >= 1.0.0)

fann_reset_errstr — Resets the last error string

说明

void fann_reset_errstr ( resource $errdat )

Resets the last error string.

参数

errdat

Either neural network resource or neural network trainining data resource.

返回值

No value is returned.

参见

  • fann_get_errstr() - Returns the last errstr
  • fann_reset_errno() - Resets the last error number

fann_reset_errno
fann_reset_MSE
Fann 函数


Resets the mean square error from the network

fann_reset_errstr
fann_run
Fann 函数
PHP Manual

fann_reset_MSE

(PECL fann >= 1.0.0)

fann_reset_MSE — Resets the mean square error from the network

说明

bool fann_reset_MSE ( string $ann )

Resets the mean square error from the network.

This function also resets the number of bits that fail.

参数

ann

Neural network resource.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_MSE() - Reads the mean square error from the network
  • fann_get_bit_fail() - The number of fail bits
  • fann_get_bit_fail_limit() - Returns the bit fail limit used during training

fann_reset_errstr
fann_run
Fann 函数


Will run input through the neural network

fann_reset_MSE
fann_save_train
Fann 函数
PHP Manual

fann_run

(PECL fann >= 1.0.0)

fann_run — Will run input through the neural network

说明

array fann_run ( resource $ann , array $input )

Will run input through the neural network, returning an array of outputs, the number of which being equal to the number of neurons in the output layer.

参数

ann

Neural network resource.

input

Array of input values

返回值

Array of output values, or FALSE on error

fann_reset_MSE
fann_save_train
Fann 函数


Save the training structure to a file

fann_run
fann_save
Fann 函数
PHP Manual

fann_save_train

(PECL fann >= 1.0.0)

fann_save_train — Save the training structure to a file

说明

bool fann_save_train ( resource $data , string $file_name )

Save the training data to a file, with the format as specified in fann_read_train_from_file().

参数

data

Neural network training data resource.

file_name

The file name of the file where training data is saved to.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_read_train_from_file() - Reads a file that stores training data

fann_run
fann_save
Fann 函数


Saves the entire network to a configuration file

fann_save_train
fann_scale_input_train_data
Fann 函数
PHP Manual

fann_save

(PECL fann >= 1.0.0)

fann_save — Saves the entire network to a configuration file

说明

bool fann_save ( resource $ann , string $configuration_file )

Saves the entire network to a configuration file.

The configuration file contains all information about the neural network and enables fann_create_from_file() to create an exact copy of the neural network and all of the parameters associated with the neural network.

These three parameters (fann_set_callback(), fann_set_error_log(), fann_set_user_data()) are NOT saved to the file because they cannot safely be ported to a different location. Also temporary parameters generated during training like fann_get_MSE() is not saved.

参数

ann

Neural network resource.

configuration_file

The configuration file path.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_create_from_file() - Constructs a backpropagation neural network from a configuration file

fann_save_train
fann_scale_input_train_data
Fann 函数


Scales the inputs in the training data to the specified range

fann_save
fann_scale_input
Fann 函数
PHP Manual

fann_scale_input_train_data

(PECL fann >= 1.0.0)

fann_scale_input_train_data — Scales the inputs in the training data to the specified range

说明

bool fann_scale_input_train_data ( resource $train_data , float $new_min , float $new_max )

Scales the inputs in the training data to the specified range.

参数

train_data

Neural network training data resource.

new_min

New minimum after scaling inputs in training data.

new_max

New maximum after scaling inputs in training data.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_scale_output_train_data() - Scales the outputs in the training data to the specified range
  • fann_scale_train_data() - Scales the inputs and outputs in the training data to the specified range

fann_save
fann_scale_input
Fann 函数


Scale data in input vector before feed it to ann based on previously calculated parameters

fann_scale_input_train_data
fann_scale_output_train_data
Fann 函数
PHP Manual

fann_scale_input

(PECL fann >= 1.0.0)

fann_scale_input — Scale data in input vector before feed it to ann based on previously calculated parameters

说明

bool fann_scale_input ( resource $ann , array $input_vector )

Scale data in input vector before feed it to ann based on previously calculated parameters.

参数

ann

Neural network resource.

input_vector

Input vector that will be scaled

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_descale_input() - Scale data in input vector after get it from ann based on previously calculated parameters
  • fann_scale_output() - Scale data in output vector before feed it to ann based on previously calculated parameters

fann_scale_input_train_data
fann_scale_output_train_data
Fann 函数


Scales the outputs in the training data to the specified range

fann_scale_input
fann_scale_output
Fann 函数
PHP Manual

fann_scale_output_train_data

(PECL fann >= 1.0.0)

fann_scale_output_train_data — Scales the outputs in the training data to the specified range

说明

bool fann_scale_output_train_data ( resource $train_data , float $new_min , float $new_max )

Scales the outputs in the training data to the specified range.

参数

train_data

Neural network training data resource.

new_min

New minimum after scaling outputs in training data.

new_max

New maximum after scaling outputs in training data.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_scale_input_train_data() - Scales the inputs in the training data to the specified range
  • fann_scale_train_data() - Scales the inputs and outputs in the training data to the specified range

fann_scale_input
fann_scale_output
Fann 函数


Scale data in output vector before feed it to ann based on previously calculated parameters

fann_scale_output_train_data
fann_scale_train_data
Fann 函数
PHP Manual

fann_scale_output

(PECL fann >= 1.0.0)

fann_scale_output — Scale data in output vector before feed it to ann based on previously calculated parameters

说明

bool fann_scale_output ( resource $ann , array $output_vector )

Scale data in output vector before feed it to ann based on previously calculated parameters.

参数

ann

Neural network resource.

output_vector

Output vector that will be scaled

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_descale_output() - Scale data in output vector after get it from ann based on previously calculated parameters
  • fann_scale_input() - Scale data in input vector before feed it to ann based on previously calculated parameters

fann_scale_output_train_data
fann_scale_train_data
Fann 函数


Scales the inputs and outputs in the training data to the specified range

fann_scale_output
fann_scale_train
Fann 函数
PHP Manual

fann_scale_train_data

(PECL fann >= 1.0.0)

fann_scale_train_data — Scales the inputs and outputs in the training data to the specified range

说明

bool fann_scale_train_data ( resource $train_data , float $new_min , float $new_max )

Scales the inputs and outputs in the training data to the specified range.

参数

train_data

Neural network training data resource.

new_min

New minimum after scaling inputs and outputs in training data.

new_max

New maximum after scaling inputs and outputs in training data.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_scale_output_train_data() - Scales the outputs in the training data to the specified range
  • fann_scale_input_train_data() - Scales the inputs in the training data to the specified range

fann_scale_output
fann_scale_train
Fann 函数


Scale input and output data based on previously calculated parameters

fann_scale_train_data
fann_set_activation_function_hidden
Fann 函数
PHP Manual

fann_scale_train

(PECL fann >= 1.0.0)

fann_scale_train — Scale input and output data based on previously calculated parameters

说明

bool fann_scale_train ( resource $ann , resource $train_data )

Scale input and output data based on previously calculated parameters.

参数

ann

Neural network resource.

train_data

Neural network training data resource.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_descale_train() - Descale input and output data based on previously calculated parameters
  • fann_set_scaling_params() - Calculate input and output scaling parameters for future use based on training data

fann_scale_train_data
fann_set_activation_function_hidden
Fann 函数


Sets the activation function for all of the hidden layers

fann_scale_train
fann_set_activation_function_layer
Fann 函数
PHP Manual

fann_set_activation_function_hidden

(PECL fann >= 1.0.0)

fann_set_activation_function_hidden — Sets the activation function for all of the hidden layers

说明

bool fann_set_activation_function_hidden ( resource $ann , int $activation_function )

Sets the activation function for all of the hidden layers.

参数

ann

Neural network resource.

activation_function

The activation functions constant.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_set_activation_function() - Sets the activation function for supplied neuron and layer
  • fann_set_activation_function_layer() - Sets the activation function for all the neurons in the supplied layer.
  • fann_set_activation_function_output() - Sets the activation function for the output layer
  • fann_set_activation_steepness() - Sets the activation steepness for supplied neuron and layer number

fann_scale_train
fann_set_activation_function_layer
Fann 函数


Sets the activation function for all the neurons in the supplied layer.

fann_set_activation_function_hidden
fann_set_activation_function_output
Fann 函数
PHP Manual

fann_set_activation_function_layer

(PECL fann >= 1.0.0)

fann_set_activation_function_layer — Sets the activation function for all the neurons in the supplied layer.

说明

bool fann_set_activation_function_layer ( resource $ann , int $activation_function , int $layer )

Set the activation function for all the neurons in the layer number layer, counting the input layer as layer 0.

It is not possible to set activation functions for the neurons in the input layer.

参数

ann

Neural network resource.

activation_function

The activation functions constant.

layer

Layer number.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_set_activation_function() - Sets the activation function for supplied neuron and layer
  • fann_set_activation_function_hidden() - Sets the activation function for all of the hidden layers
  • fann_set_activation_function_output() - Sets the activation function for the output layer
  • fann_set_activation_steepness() - Sets the activation steepness for supplied neuron and layer number

fann_set_activation_function_hidden
fann_set_activation_function_output
Fann 函数


Sets the activation function for the output layer

fann_set_activation_function_layer
fann_set_activation_function
Fann 函数
PHP Manual

fann_set_activation_function_output

(PECL fann >= 1.0.0)

fann_set_activation_function_output — Sets the activation function for the output layer

说明

bool fann_set_activation_function_output ( resource $ann , int $activation_function )

Sets the activation function for the output layer.

参数

ann

Neural network resource.

activation_function

The activation functions constant.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_set_activation_function() - Sets the activation function for supplied neuron and layer
  • fann_set_activation_function_layer() - Sets the activation function for all the neurons in the supplied layer.
  • fann_set_activation_function_hidden() - Sets the activation function for all of the hidden layers
  • fann_set_activation_steepness() - Sets the activation steepness for supplied neuron and layer number

fann_set_activation_function_layer
fann_set_activation_function
Fann 函数


Sets the activation function for supplied neuron and layer

fann_set_activation_function_output
fann_set_activation_steepness_hidden
Fann 函数
PHP Manual

fann_set_activation_function

(PECL fann >= 1.0.0)

fann_set_activation_function — Sets the activation function for supplied neuron and layer

说明

bool fann_set_activation_function ( resource $ann , int $activation_function , int $layer , int $neuron )

Set the activation function for neuron number neuron in layer number layer, counting the input layer as layer 0.

It is not possible to set activation functions for the neurons in the input layer.

When choosing an activation function it is important to note that the activation functions have different range. FANN_SIGMOID is e.g. in the 0 - 1 range while FANN_SIGMOID_SYMMETRIC is in the -1 - 1 range and FANN_LINEAR is unbound.

The supplied activation_function value must be one of the activation functions constants.

The return value is one of the activation functions constants.

参数

ann

Neural network resource.

activation_function

The activation functions constant.

layer

Layer number.

neuron

Neuron number.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_set_activation_function_layer() - Sets the activation function for all the neurons in the supplied layer.
  • fann_set_activation_function_hidden() - Sets the activation function for all of the hidden layers
  • fann_set_activation_function_output() - Sets the activation function for the output layer
  • fann_set_activation_steepness() - Sets the activation steepness for supplied neuron and layer number
  • fann_get_activation_function() - Returns the activation function

fann_set_activation_function_output
fann_set_activation_steepness_hidden
Fann 函数


Sets the steepness of the activation steepness for all neurons in the all hidden layers

fann_set_activation_function
fann_set_activation_steepness_layer
Fann 函数
PHP Manual

fann_set_activation_steepness_hidden

(PECL fann >= 1.0.0)

fann_set_activation_steepness_hidden — Sets the steepness of the activation steepness for all neurons in the all hidden layers

说明

bool fann_set_activation_steepness_hidden ( resource $ann , float $activation_steepness )

Sets the steepness of the activation steepness for all neurons in the all hidden layers.

参数

ann

Neural network resource.

activation_steepness

The activation steepness.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_set_activation_steepness() - Sets the activation steepness for supplied neuron and layer number
  • fann_set_activation_steepness_layer() - Sets the activation steepness for all of the neurons in the supplied layer number
  • fann_set_activation_steepness_output() - Sets the steepness of the activation steepness in the output layer
  • fann_get_activation_steepness() - Returns the activation steepness for supplied neuron and layer number
  • fann_set_activation_function() - Sets the activation function for supplied neuron and layer

fann_set_activation_function
fann_set_activation_steepness_layer
Fann 函数


Sets the activation steepness for all of the neurons in the supplied layer number

fann_set_activation_steepness_hidden
fann_set_activation_steepness_output
Fann 函数
PHP Manual

fann_set_activation_steepness_layer

(PECL fann >= 1.0.0)

fann_set_activation_steepness_layer — Sets the activation steepness for all of the neurons in the supplied layer number

说明

bool fann_set_activation_steepness_layer ( resource $ann , float $activation_steepness , int $layer )

Set the activation steepness for all of the neurons in layer number layer, counting the input layer as layer 0.

It is not possible to set activation steepness for the neurons in the input layer.

参数

ann

Neural network resource.

activation_steepness

The activation steepness.

layer

Layer number.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_set_activation_steepness() - Sets the activation steepness for supplied neuron and layer number
  • fann_set_activation_steepness_hidden() - Sets the steepness of the activation steepness for all neurons in the all hidden layers
  • fann_set_activation_steepness_output() - Sets the steepness of the activation steepness in the output layer
  • fann_get_activation_steepness() - Returns the activation steepness for supplied neuron and layer number
  • fann_set_activation_function() - Sets the activation function for supplied neuron and layer

fann_set_activation_steepness_hidden
fann_set_activation_steepness_output
Fann 函数


Sets the steepness of the activation steepness in the output layer

fann_set_activation_steepness_layer
fann_set_activation_steepness
Fann 函数
PHP Manual

fann_set_activation_steepness_output

(PECL fann >= 1.0.0)

fann_set_activation_steepness_output — Sets the steepness of the activation steepness in the output layer

说明

bool fann_set_activation_steepness_output ( resource $ann , float $activation_steepness )

Sets the steepness of the activation steepness in the output layer.

参数

ann

Neural network resource.

activation_steepness

The activation steepness.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_set_activation_steepness() - Sets the activation steepness for supplied neuron and layer number
  • fann_set_activation_steepness_layer() - Sets the activation steepness for all of the neurons in the supplied layer number
  • fann_set_activation_steepness_hidden() - Sets the steepness of the activation steepness for all neurons in the all hidden layers
  • fann_get_activation_steepness() - Returns the activation steepness for supplied neuron and layer number
  • fann_set_activation_function() - Sets the activation function for supplied neuron and layer

fann_set_activation_steepness_layer
fann_set_activation_steepness
Fann 函数


Sets the activation steepness for supplied neuron and layer number

fann_set_activation_steepness_output
fann_set_bit_fail_limit
Fann 函数
PHP Manual

fann_set_activation_steepness

(PECL fann >= 1.0.0)

fann_set_activation_steepness — Sets the activation steepness for supplied neuron and layer number

说明

bool fann_set_activation_steepness ( resource $ann , float $activation_steepness , int $layer , int $neuron )

Set the activation steepness for neuron number neuron in layer number layer, counting the input layer as layer 0.

It is not possible to set activation steepness for the neurons in the input layer.

The steepness of an activation function says something about how fast the activation function goes from the minimum to the maximum. A high value for the activation function will also give a more agressive training.

When training neural networks where the output values should be at the extremes (usually 0 and 1, depending on the activation function), a steep activation function can be used (e.g. 1.0).

The default activation steepness is 0.5.

参数

ann

Neural network resource.

activation_steepness

The activation steepness.

layer

Layer number.

neuron

Neuron number.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_set_activation_steepness_layer() - Sets the activation steepness for all of the neurons in the supplied layer number
  • fann_set_activation_steepness_hidden() - Sets the steepness of the activation steepness for all neurons in the all hidden layers
  • fann_set_activation_steepness_output() - Sets the steepness of the activation steepness in the output layer
  • fann_get_activation_steepness() - Returns the activation steepness for supplied neuron and layer number
  • fann_set_activation_function() - Sets the activation function for supplied neuron and layer

fann_set_activation_steepness_output
fann_set_bit_fail_limit
Fann 函数


Set the bit fail limit used during training

fann_set_activation_steepness
fann_set_callback
Fann 函数
PHP Manual

fann_set_bit_fail_limit

(PECL fann >= 1.0.0)

fann_set_bit_fail_limit — Set the bit fail limit used during training

说明

bool fann_set_bit_fail_limit ( resource $ann , float $bit_fail_limit )

Set the bit fail limit used during training.

参数

ann

Neural network resource.

bit_fail_limit

The bit fail limit.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_bit_fail_limit() - Returns the bit fail limit used during training

fann_set_activation_steepness
fann_set_callback
Fann 函数


Sets the callback function for use during training

fann_set_bit_fail_limit
fann_set_cascade_activation_functions
Fann 函数
PHP Manual

fann_set_callback

(PECL fann >= 1.0.0)

fann_set_callback — Sets the callback function for use during training

说明

bool fann_set_callback ( resource $ann , collable $callback )

Sets the callback function for use during training. It means that it is called from fann_train_on_data() or fann_train_on_file().

参数

ann

Neural network resource.

callback

The supplied callback function takes following parameters:

  • ann - The neural network resource
  • train - The train data resource or NULL if called from fann_train_on_file()
  • max_epochs - The maximum number of epochs the training should continue
  • epochs_between_reports - The number of epochs between calling this function
  • desired_error - The desired fann_get_MSE() or fann_get_bit_fail(), depending on the stop function chosen by fann_set_train_stop_function()
  • epochs - The current epoch

The callback should return TRUE. If it returns FALSE, the training will terminate.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_train_on_data() - Trains on an entire dataset for a period of time
  • fann_train_on_file() - Trains on an entire dataset, which is read from file, for a period of time

fann_set_bit_fail_limit
fann_set_cascade_activation_functions
Fann 函数


Sets the array of cascade candidate activation functions

fann_set_callback
fann_set_cascade_activation_steepnesses
Fann 函数
PHP Manual

fann_set_cascade_activation_functions

(PECL fann >= 1.0.0)

fann_set_cascade_activation_functions — Sets the array of cascade candidate activation functions

说明

bool fann_set_cascade_activation_functions ( resource $ann , array $cascade_activation_functions )

Sets the array of cascade candidate activation functions.

See fann_get_cascade_num_candidates() for a description of which candidate neurons will be generated by this array.

参数

ann

Neural network resource.

cascade_activation_functions

The array of cascade candidate activation functions.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_cascade_activation_functions_count() - Returns the number of cascade activation functions
  • fann_set_cascade_activation_functions()

fann_set_callback
fann_set_cascade_activation_steepnesses
Fann 函数


Sets the array of cascade candidate activation steepnesses

fann_set_cascade_activation_functions
fann_set_cascade_candidate_change_fraction
Fann 函数
PHP Manual

fann_set_cascade_activation_steepnesses

(PECL fann >= 1.0.0)

fann_set_cascade_activation_steepnesses — Sets the array of cascade candidate activation steepnesses

说明

bool fann_set_cascade_activation_steepnesses ( resource $ann , array $cascade_activation_steepnesses_count )

Sets the array of cascade candidate activation steepnesses.

See fann_get_cascade_num_candidates() for a description of which candidate neurons will be generated by this array.

参数

ann

Neural network resource.

cascade_activation_steepnesses_count

The array of cascade candidate activation steepnesses.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_cascade_activation_steepnesses() - Returns the cascade activation steepnesses
  • fann_get_cascade_activation_steepnesses_count() - The number of activation steepnesses

fann_set_cascade_activation_functions
fann_set_cascade_candidate_change_fraction
Fann 函数


Sets the cascade candidate change fraction

fann_set_cascade_activation_steepnesses
fann_set_cascade_candidate_limit
Fann 函数
PHP Manual

fann_set_cascade_candidate_change_fraction

(PECL fann >= 1.0.0)

fann_set_cascade_candidate_change_fraction — Sets the cascade candidate change fraction

说明

bool fann_set_cascade_candidate_change_fraction ( resource $ann , float $cascade_candidate_change_fraction )

Sets the cascade candidate change fraction.

参数

ann

Neural network resource.

cascade_candidate_change_fraction

The cascade candidate change fraction.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_cascade_candidate_change_fraction() - Returns the cascade candidate change fraction

fann_set_cascade_activation_steepnesses
fann_set_cascade_candidate_limit
Fann 函数


Sets the candidate limit

fann_set_cascade_candidate_change_fraction
fann_set_cascade_candidate_stagnation_epochs
Fann 函数
PHP Manual

fann_set_cascade_candidate_limit

(PECL fann >= 1.0.0)

fann_set_cascade_candidate_limit — Sets the candidate limit

说明

bool fann_set_cascade_candidate_limit ( resource $ann , float $cascade_candidate_limit )

Sets the candidate limit.

参数

ann

Neural network resource.

cascade_candidate_limit

The candidate limit.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_cascade_candidate_limit() - Return the candidate limit

fann_set_cascade_candidate_change_fraction
fann_set_cascade_candidate_stagnation_epochs
Fann 函数


Sets the number of cascade candidate stagnation epochs

fann_set_cascade_candidate_limit
fann_set_cascade_max_cand_epochs
Fann 函数
PHP Manual

fann_set_cascade_candidate_stagnation_epochs

(PECL fann >= 1.0.0)

fann_set_cascade_candidate_stagnation_epochs — Sets the number of cascade candidate stagnation epochs

说明

bool fann_set_cascade_candidate_stagnation_epochs ( resource $ann , int $cascade_candidate_stagnation_epochs )

Sets the number of cascade candidate stagnation epochs.

参数

ann

Neural network resource.

cascade_candidate_stagnation_epochs

The number of cascade candidate stagnation epochs.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_cascade_candidate_stagnation_epochs() - Returns the number of cascade candidate stagnation epochs

fann_set_cascade_candidate_limit
fann_set_cascade_max_cand_epochs
Fann 函数


Sets the max candidate epochs

fann_set_cascade_candidate_stagnation_epochs
fann_set_cascade_max_out_epochs
Fann 函数
PHP Manual

fann_set_cascade_max_cand_epochs

(PECL fann >= 1.0.0)

fann_set_cascade_max_cand_epochs — Sets the max candidate epochs

说明

bool fann_set_cascade_max_cand_epochs ( resource $ann , int $cascade_max_cand_epochs )

Sets the max candidate epochs.

参数

ann

Neural network resource.

cascade_max_cand_epochs

The max candidate epochs.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_cascade_max_cand_epochs() - Returns the maximum candidate epochs

fann_set_cascade_candidate_stagnation_epochs
fann_set_cascade_max_out_epochs
Fann 函数


Sets the maximum out epochs

fann_set_cascade_max_cand_epochs
fann_set_cascade_min_cand_epochs
Fann 函数
PHP Manual

fann_set_cascade_max_out_epochs

(PECL fann >= 1.0.0)

fann_set_cascade_max_out_epochs — Sets the maximum out epochs

说明

bool fann_set_cascade_max_out_epochs ( resource $ann , int $cascade_max_out_epochs )

Sets the maximum out epochs.

参数

ann

Neural network resource.

cascade_max_out_epochs

The maximum out epochs.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_cascade_max_out_epochs() - Returns the maximum out epochs

fann_set_cascade_max_cand_epochs
fann_set_cascade_min_cand_epochs
Fann 函数


Sets the min candidate epochs

fann_set_cascade_max_out_epochs
fann_set_cascade_min_out_epochs
Fann 函数
PHP Manual

fann_set_cascade_min_cand_epochs

(PECL fann >= 1.0.0)

fann_set_cascade_min_cand_epochs — Sets the min candidate epochs

说明

bool fann_set_cascade_min_cand_epochs ( resource $ann , int $cascade_min_cand_epochs )

Sets the min candidate epochs.

参数

ann

Neural network resource.

cascade_min_cand_epochs

The minimum candidate epochs.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_cascade_min_cand_epochs() - Returns the minimum candidate epochs

fann_set_cascade_max_out_epochs
fann_set_cascade_min_out_epochs
Fann 函数


Sets the minimum out epochs

fann_set_cascade_min_cand_epochs
fann_set_cascade_num_candidate_groups
Fann 函数
PHP Manual

fann_set_cascade_min_out_epochs

(PECL fann >= 1.0.0)

fann_set_cascade_min_out_epochs — Sets the minimum out epochs

说明

bool fann_set_cascade_min_out_epochs ( resource $ann , int $cascade_min_out_epochs )

Sets the minimum out epochs.

参数

ann

Neural network resource.

cascade_min_out_epochs

The minimum out epochs.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_cascade_min_out_epochs() - Returns the minimum out epochs

fann_set_cascade_min_cand_epochs
fann_set_cascade_num_candidate_groups
Fann 函数


Sets the number of candidate groups

fann_set_cascade_min_out_epochs
fann_set_cascade_output_change_fraction
Fann 函数
PHP Manual

fann_set_cascade_num_candidate_groups

(PECL fann >= 1.0.0)

fann_set_cascade_num_candidate_groups — Sets the number of candidate groups

说明

bool fann_set_cascade_num_candidate_groups ( resource $ann , int $cascade_num_candidate_groups )

Sets the number of candidate groups.

参数

ann

Neural network resource.

cascade_num_candidate_groups

The number of candidate groups.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_cascade_num_candidate_groups() - Returns the number of candidate groups

fann_set_cascade_min_out_epochs
fann_set_cascade_output_change_fraction
Fann 函数


Sets the cascade output change fraction

fann_set_cascade_num_candidate_groups
fann_set_cascade_output_stagnation_epochs
Fann 函数
PHP Manual

fann_set_cascade_output_change_fraction

(PECL fann >= 1.0.0)

fann_set_cascade_output_change_fraction — Sets the cascade output change fraction

说明

bool fann_set_cascade_output_change_fraction ( resource $ann , float $cascade_output_change_fraction )

Sets the cascade output change fraction.

参数

ann

Neural network resource.

cascade_output_change_fraction

The cascade output change fraction.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_cascade_output_change_fraction() - Returns the cascade output change fraction

fann_set_cascade_num_candidate_groups
fann_set_cascade_output_stagnation_epochs
Fann 函数


Sets the number of cascade output stagnation epochs

fann_set_cascade_output_change_fraction
fann_set_cascade_weight_multiplier
Fann 函数
PHP Manual

fann_set_cascade_output_stagnation_epochs

(PECL fann >= 1.0.0)

fann_set_cascade_output_stagnation_epochs — Sets the number of cascade output stagnation epochs

说明

bool fann_set_cascade_output_stagnation_epochs ( resource $ann , int $cascade_output_stagnation_epochs )

Sets the number of cascade output stagnation epochs.

参数

ann

Neural network resource.

cascade_output_stagnation_epochs

The number of cascade output stagnation epochs.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_cascade_output_stagnation_epochs() - Returns the number of cascade output stagnation epochs

fann_set_cascade_output_change_fraction
fann_set_cascade_weight_multiplier
Fann 函数


Sets the weight multiplier

fann_set_cascade_output_stagnation_epochs
fann_set_error_log
Fann 函数
PHP Manual

fann_set_cascade_weight_multiplier

(PECL fann >= 1.0.0)

fann_set_cascade_weight_multiplier — Sets the weight multiplier

说明

bool fann_set_cascade_weight_multiplier ( resource $ann , float $cascade_weight_multiplier )

Sets the weight multiplier.

参数

ann

Neural network resource.

cascade_weight_multiplier

The weight multiplier.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_cascade_weight_multiplier() - Returns the weight multiplier

fann_set_cascade_output_stagnation_epochs
fann_set_error_log
Fann 函数


Sets where the errors are logged to

fann_set_cascade_weight_multiplier
fann_set_input_scaling_params
Fann 函数
PHP Manual

fann_set_error_log

(PECL fann >= 1.0.0)

fann_set_error_log — Sets where the errors are logged to

说明

void fann_set_error_log ( resource $errdat , string $log_file )

Sets where the errors are logged to.

参数

errdat

Either neural network resource or neural network trainining data resource.

log_file

The log file path.

返回值

No value is returned.

fann_set_cascade_weight_multiplier
fann_set_input_scaling_params
Fann 函数


Calculate input scaling parameters for future use based on training data

fann_set_error_log
fann_set_learning_momentum
Fann 函数
PHP Manual

fann_set_input_scaling_params

(PECL fann >= 1.0.0)

fann_set_input_scaling_params — Calculate input scaling parameters for future use based on training data

说明

bool fann_set_input_scaling_params ( resource $ann , resource $train_data , float $new_input_min , float $new_input_max )

Calculate input scaling parameters for future use based on training data.

参数

ann

Neural network resource.

train_data

Neural network training data resource.

new_input_min

The desired lower bound in input data after scaling (not strictly followed)

new_input_max

The desired upper bound in input data after scaling (not strictly followed)

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_set_output_scaling_params() - Calculate output scaling parameters for future use based on training data

fann_set_error_log
fann_set_learning_momentum
Fann 函数


Sets the learning momentum

fann_set_input_scaling_params
fann_set_learning_rate
Fann 函数
PHP Manual

fann_set_learning_momentum

(PECL fann >= 1.0.0)

fann_set_learning_momentum — Sets the learning momentum

说明

bool fann_set_learning_momentum ( resource $ann , float $learning_momentum )

Sets the learning momentum.

More info available in fann_get_learning_momentum().

参数

ann

Neural network resource.

learning_momentum

The learning momentum.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_learning_momentum() - Returns the learning momentum
  • fann_set_training_algorithm() - Sets the training algorithm

fann_set_input_scaling_params
fann_set_learning_rate
Fann 函数


Sets the learning rate

fann_set_learning_momentum
fann_set_output_scaling_params
Fann 函数
PHP Manual

fann_set_learning_rate

(PECL fann >= 1.0.0)

fann_set_learning_rate — Sets the learning rate

说明

bool fann_set_learning_rate ( resource $ann , float $learning_rate )

Sets the learning rate.

More info available in fann_get_learning_rate().

参数

ann

Neural network resource.

learning_rate

The learning rate.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_learning_rate() - Returns the learning rate
  • fann_set_training_algorithm() - Sets the training algorithm

fann_set_learning_momentum
fann_set_output_scaling_params
Fann 函数


Calculate output scaling parameters for future use based on training data

fann_set_learning_rate
fann_set_quickprop_decay
Fann 函数
PHP Manual

fann_set_output_scaling_params

(PECL fann >= 1.0.0)

fann_set_output_scaling_params — Calculate output scaling parameters for future use based on training data

说明

bool fann_set_output_scaling_params ( resource $ann , resource $train_data , float $new_output_min , float $new_output_max )

Calculate output scaling parameters for future use based on training data.

参数

ann

Neural network resource.

train_data

Neural network training data resource.

new_output_min

The desired lower bound in output data after scaling (not strictly followed)

new_output_max

The desired upper bound in output data after scaling (not strictly followed)

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_set_input_scaling_params() - Calculate input scaling parameters for future use based on training data

fann_set_learning_rate
fann_set_quickprop_decay
Fann 函数


Sets the quickprop decay factor

fann_set_output_scaling_params
fann_set_quickprop_mu
Fann 函数
PHP Manual

fann_set_quickprop_decay

(PECL fann >= 1.0.0)

fann_set_quickprop_decay — Sets the quickprop decay factor

说明

bool fann_set_quickprop_decay ( resource $ann , float $quickprop_decay )

Sets the quickprop decay factor.

参数

ann

Neural network resource.

quickprop_decay

The quickprop decay factor.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_quickprop_decay() - Returns the decay which is a factor that weights should decrease in each iteration during quickprop training

fann_set_output_scaling_params
fann_set_quickprop_mu
Fann 函数


Sets the quickprop mu factor

fann_set_quickprop_decay
fann_set_rprop_decrease_factor
Fann 函数
PHP Manual

fann_set_quickprop_mu

(PECL fann >= 1.0.0)

fann_set_quickprop_mu — Sets the quickprop mu factor

说明

bool fann_set_quickprop_mu ( resource $ann , float $quickprop_mu )

Sets the quickprop mu factor.

参数

ann

Neural network resource.

quickprop_mu

The mu factor.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_quickprop_mu() - Returns the mu factor

fann_set_quickprop_decay
fann_set_rprop_decrease_factor
Fann 函数


Sets the decrease factor used during RPROP training

fann_set_quickprop_mu
fann_set_rprop_delta_max
Fann 函数
PHP Manual

fann_set_rprop_decrease_factor

(PECL fann >= 1.0.0)

fann_set_rprop_decrease_factor — Sets the decrease factor used during RPROP training

说明

bool fann_set_rprop_decrease_factor ( resource $ann , float $rprop_decrease_factor )

Sets the decrease factor used during RPROP training.

参数

ann

Neural network resource.

rprop_decrease_factor

The decrease factor.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_rprop_decrease_factor() - Returns the increase factor used during RPROP training

fann_set_quickprop_mu
fann_set_rprop_delta_max
Fann 函数


Sets the maximum step-size

fann_set_rprop_decrease_factor
fann_set_rprop_delta_min
Fann 函数
PHP Manual

fann_set_rprop_delta_max

(PECL fann >= 1.0.0)

fann_set_rprop_delta_max — Sets the maximum step-size

说明

bool fann_set_rprop_delta_max ( resource $ann , float $rprop_delta_max )

The maximum step-size is a positive number determining how large the maximum step-size may be.

参数

ann

Neural network resource.

rprop_delta_max

The maximum step-size.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_rprop_delta_max() - Returns the maximum step-size
  • fann_get_rprop_delta_min() - Returns the minimum step-size

fann_set_rprop_decrease_factor
fann_set_rprop_delta_min
Fann 函数


Sets the minimum step-size

fann_set_rprop_delta_max
fann_set_rprop_delta_zero
Fann 函数
PHP Manual

fann_set_rprop_delta_min

(PECL fann >= 1.0.0)

fann_set_rprop_delta_min — Sets the minimum step-size

说明

bool fann_set_rprop_delta_min ( resource $ann , float $rprop_delta_min )

The minimum step-size is a small positive number determining how small the minimum step-size may be.

参数

ann

Neural network resource.

rprop_delta_min

The minimum step-size.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_rprop_delta_min() - Returns the minimum step-size

fann_set_rprop_delta_max
fann_set_rprop_delta_zero
Fann 函数


Sets the initial step-size

fann_set_rprop_delta_min
fann_set_rprop_increase_factor
Fann 函数
PHP Manual

fann_set_rprop_delta_zero

(PECL fann >= 1.0.0)

fann_set_rprop_delta_zero — Sets the initial step-size

说明

bool fann_set_rprop_delta_zero ( resource $ann , float $rprop_delta_zero )

The initial step-size is a positive number determining the initial step size.

参数

ann

Neural network resource.

rprop_delta_zero

The initial step-size.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_rprop_delta_zero() - Returns the initial step-size
  • fann_get_rprop_delta_min() - Returns the minimum step-size
  • fann_get_rprop_delta_max() - Returns the maximum step-size

fann_set_rprop_delta_min
fann_set_rprop_increase_factor
Fann 函数


Sets the increase factor used during RPROP training

fann_set_rprop_delta_zero
fann_set_sarprop_step_error_shift
Fann 函数
PHP Manual

fann_set_rprop_increase_factor

(PECL fann >= 1.0.0)

fann_set_rprop_increase_factor — Sets the increase factor used during RPROP training

说明

bool fann_set_rprop_increase_factor ( resource $ann , float $rprop_increase_factor )

Sets the increase factor used during RPROP training.

参数

ann

Neural network resource.

rprop_increase_factor

The increase factor.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_rprop_increase_factor() - Returns the increase factor used during RPROP training

fann_set_rprop_delta_zero
fann_set_sarprop_step_error_shift
Fann 函数


Sets the sarprop step error shift

fann_set_rprop_increase_factor
fann_set_sarprop_step_error_threshold_factor
Fann 函数
PHP Manual

fann_set_sarprop_step_error_shift

(PECL fann >= 1.0.0)

fann_set_sarprop_step_error_shift — Sets the sarprop step error shift

说明

bool fann_set_sarprop_step_error_shift ( resource $ann , float $sarprop_step_error_shift )

Sets the sarprop step error shift.

参数

ann

Neural network resource.

sarprop_step_error_shift

The sarprop step error shift.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_sarprop_step_error_shift() - Returns the sarprop step error shift

fann_set_rprop_increase_factor
fann_set_sarprop_step_error_threshold_factor
Fann 函数


Sets the sarprop step error threshold factor

fann_set_sarprop_step_error_shift
fann_set_sarprop_temperature
Fann 函数
PHP Manual

fann_set_sarprop_step_error_threshold_factor

(PECL fann >= 1.0.0)

fann_set_sarprop_step_error_threshold_factor — Sets the sarprop step error threshold factor

说明

bool fann_set_sarprop_step_error_threshold_factor ( resource $ann , float $sarprop_step_error_threshold_factor )

Sets the sarprop step error threshold factor.

参数

ann

Neural network resource.

sarprop_step_error_threshold_factor

The sarprop step error threshold factor.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_sarprop_step_error_threshold_factor() - Returns the sarprop step error threshold factor

fann_set_sarprop_step_error_shift
fann_set_sarprop_temperature
Fann 函数


Sets the sarprop temperature

fann_set_sarprop_step_error_threshold_factor
fann_set_sarprop_weight_decay_shift
Fann 函数
PHP Manual

fann_set_sarprop_temperature

(PECL fann >= 1.0.0)

fann_set_sarprop_temperature — Sets the sarprop temperature

说明

bool fann_set_sarprop_temperature ( resource $ann , float $sarprop_temperature )

Sets the sarprop temperature.

参数

ann

Neural network resource.

sarprop_temperature

The sarprop temperature.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_sarprop_temperature() - Returns the sarprop temperature

fann_set_sarprop_step_error_threshold_factor
fann_set_sarprop_weight_decay_shift
Fann 函数


Sets the sarprop weight decay shift

fann_set_sarprop_temperature
fann_set_scaling_params
Fann 函数
PHP Manual

fann_set_sarprop_weight_decay_shift

(PECL fann >= 1.0.0)

fann_set_sarprop_weight_decay_shift — Sets the sarprop weight decay shift

说明

bool fann_set_sarprop_weight_decay_shift ( resource $ann , float $sarprop_weight_decay_shift )

Sets the sarprop weight decay shift.

参数

ann

Neural network resource.

sarprop_weight_decay_shift

The sarprop weight decay shift.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_sarprop_weight_decay_shift() - Returns the sarprop weight decay shift

fann_set_sarprop_temperature
fann_set_scaling_params
Fann 函数


Calculate input and output scaling parameters for future use based on training data

fann_set_sarprop_weight_decay_shift
fann_set_train_error_function
Fann 函数
PHP Manual

fann_set_scaling_params

(PECL fann >= 1.0.0)

fann_set_scaling_params — Calculate input and output scaling parameters for future use based on training data

说明

bool fann_set_scaling_params ( resource $ann , resource $train_data , float $new_input_min , float $new_input_max , float $new_output_min , float $new_output_max )

Calculate input and output scaling parameters for future use based on training data.

参数

ann

Neural network resource.

train_data

Neural network training data resource.

new_input_min

The desired lower bound in input data after scaling (not strictly followed)

new_input_max

The desired upper bound in input data after scaling (not strictly followed)

new_output_min

The desired lower bound in output data after scaling (not strictly followed)

new_output_max

The desired upper bound in output data after scaling (not strictly followed)

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_set_input_scaling_params() - Calculate input scaling parameters for future use based on training data
  • fann_set_output_scaling_params() - Calculate output scaling parameters for future use based on training data

fann_set_sarprop_weight_decay_shift
fann_set_train_error_function
Fann 函数


Sets the error function used during training

fann_set_scaling_params
fann_set_train_stop_function
Fann 函数
PHP Manual

fann_set_train_error_function

(PECL fann >= 1.0.0)

fann_set_train_error_function — Sets the error function used during training

说明

bool fann_set_train_error_function ( resource $ann , int $error_function )

Sets the error function used during training.

The error functions are described further in error functions constants.

参数

ann

Neural network resource.

error_function

The error function constant

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_train_error_function() - Returns the error function used during training

fann_set_scaling_params
fann_set_train_stop_function
Fann 函数


Sets the stop function used during training

fann_set_train_error_function
fann_set_training_algorithm
Fann 函数
PHP Manual

fann_set_train_stop_function

(PECL fann >= 1.0.0)

fann_set_train_stop_function — Sets the stop function used during training

说明

bool fann_set_train_stop_function ( resource $ann , int $stop_function )

Sets the stop function used during training.

The stop functions are described further in stop functions constants.

参数

ann

Neural network resource.

stop_function

The stop function constant.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_train_stop_function() - Returns the stop function used during training

fann_set_train_error_function
fann_set_training_algorithm
Fann 函数


Sets the training algorithm

fann_set_train_stop_function
fann_set_weight_array
Fann 函数
PHP Manual

fann_set_training_algorithm

(PECL fann >= 1.0.0)

fann_set_training_algorithm — Sets the training algorithm

说明

bool fann_set_training_algorithm ( resource $ann , int $training_algorithm )

Sets the training algorithm.

More info available in fann_get_training_algorithm().

参数

ann

Neural network resource.

training_algorithm

Training algorithm constant

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_get_training_algorithm() - Returns the training algorithm

fann_set_train_stop_function
fann_set_weight_array
Fann 函数


Set connections in the network

fann_set_training_algorithm
fann_set_weight
Fann 函数
PHP Manual

fann_set_weight_array

(PECL fann >= 1.0.0)

fann_set_weight_array — Set connections in the network

说明

bool fann_set_weight_array ( resource $ann , array $connections )

Set connections in the network.

Only the weights can be changed, connections and weights are ignored if they do not already exist in the network.

参数

ann

Neural network resource.

connections

An array of FANNConnection objects

返回值

Returns TRUE on success, or FALSE otherwise.

fann_set_training_algorithm
fann_set_weight
Fann 函数


Set a connection in the network

fann_set_weight_array
fann_shuffle_train_data
Fann 函数
PHP Manual

fann_set_weight

(PECL fann >= 1.0.0)

fann_set_weight — Set a connection in the network

说明

bool fann_set_weight ( resource $ann , int $from_neuron , int $to_neuron , float $weight )

Set a connections in the network.

参数

ann

Neural network resource.

from_neuron

The neuron where the connection starts

to_neuron

The neuron where the connection ends

weight

Connection weight

返回值

Returns TRUE on success, or FALSE otherwise.

fann_set_weight_array
fann_shuffle_train_data
Fann 函数


Shuffles training data, randomizing the order

fann_set_weight
fann_subset_train_data
Fann 函数
PHP Manual

fann_shuffle_train_data

(PECL fann >= 1.0.0)

fann_shuffle_train_data — Shuffles training data, randomizing the order

说明

bool fann_shuffle_train_data ( resource $train_data )

Shuffles training data, randomizing the order. This is recommended for incremental training, while it have no influence during batch training.

参数

train_data

Neural network training data resource.

返回值

Returns TRUE on success, or FALSE otherwise.

fann_set_weight
fann_subset_train_data
Fann 函数


Returns an copy of a subset of the train data

fann_shuffle_train_data
fann_test_data
Fann 函数
PHP Manual

fann_subset_train_data

(PECL fann >= 1.0.0)

fann_subset_train_data — Returns an copy of a subset of the train data

说明

resource fann_subset_train_data ( resource $data , int $pos , int $length )

Returns an copy of a subset of the train data resource, starting at position pos and length elements forward.

The fann_subset_train_data(train_data, 0, fann_length_train_data(train_data)) do the same as fann_duplicate_train_data()

参数

data

Neural network training data resource.

pos

Starting position.

length

The number of copied elements.

返回值

Returns a train data resource on success, or FALSE on error.

参见

  • fann_duplicate_train_data() - Returns an exact copy of a fann train data

fann_shuffle_train_data
fann_test_data
Fann 函数


Test a set of training data and calculates the MSE for the training data

fann_subset_train_data
fann_test
Fann 函数
PHP Manual

fann_test_data

(PECL fann >= 1.0.0)

fann_test_data — Test a set of training data and calculates the MSE for the training data

说明

float fann_test_data ( resource $ann , resource $data )

Test a set of training data and calculates the MSE for the training data.

This function updates the MSE and the bit fail values.

参数

ann

Neural network resource.

data

Neural network training data resource.

返回值

The updated MSE, or FALSE on error.

参见

  • fann_train_on_data() - Trains on an entire dataset for a period of time
  • fann_train_epoch() - Train one epoch with a set of training data
  • fann_get_bit_fail() - The number of fail bits
  • fann_get_MSE() - Reads the mean square error from the network
  • fann_set_training_algorithm() - Sets the training algorithm

fann_subset_train_data
fann_test
Fann 函数


Test with a set of inputs, and a set of desired outputs

fann_test_data
fann_train_epoch
Fann 函数
PHP Manual

fann_test

(PECL fann >= 1.0.0)

fann_test — Test with a set of inputs, and a set of desired outputs

说明

bool fann_test ( resource $ann , array $input , array $desired_output )

Test with a set of inputs, and a set of desired outputs. This operation updates the mean square error, but does not change the network in any way.

参数

ann

Neural network resource.

input

An array of inputs. This array must be exactly fann_get_num_input() long.

desired_output

An array of desired outputs. This array must be exactly fann_get_num_output() long.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_test_data() - Test a set of training data and calculates the MSE for the training data
  • fann_train() - Train one iteration with a set of inputs, and a set of desired outputs
  • fann_get_num_input() - Get the number of input neurons
  • fann_get_num_output() - Get the number of output neurons

fann_test_data
fann_train_epoch
Fann 函数


Train one epoch with a set of training data

fann_test
fann_train_on_data
Fann 函数
PHP Manual

fann_train_epoch

(PECL fann >= 1.0.0)

fann_train_epoch — Train one epoch with a set of training data

说明

float fann_train_epoch ( resource $ann , resource $data )

Train one epoch with the training data stored in data. One epoch is where all of the training data is considered exactly once.

This function returns the MSE error as it is calculated either before or during the actual training. This is not the actual MSE after the training epoch, but since calculating this will require to go through the entire training set once more. It is more than adequate to use this value during training.

The training algorithm used by this function is chosen by fann_set_training_algorithm() function.

参数

ann

Neural network resource.

data

Neural network training data resource.

返回值

The MSE, or FALSE on error.

参见

  • fann_train_on_data() - Trains on an entire dataset for a period of time
  • fann_test_data() - Test a set of training data and calculates the MSE for the training data
  • fann_get_MSE() - Reads the mean square error from the network
  • fann_set_training_algorithm() - Sets the training algorithm

fann_test
fann_train_on_data
Fann 函数


Trains on an entire dataset for a period of time

fann_train_epoch
fann_train_on_file
Fann 函数
PHP Manual

fann_train_on_data

(PECL fann >= 1.0.0)

fann_train_on_data — Trains on an entire dataset for a period of time

说明

bool fann_train_on_data ( resource $ann , resource $data , int $max_epochs , int $epochs_between_reports , float $desired_error )

Trains on an entire dataset for a period of time.

This training uses the training algorithm chosen by fann_set_training_algorithm() and the parameters set for these training algorithms.

参数

ann

Neural network resource.

data

Neural network training data resource.

max_epochs

The maximum number of epochs the training should continue

epochs_between_reports

The number of epochs between calling a callback function. A value of zero means that user function is not called.

desired_error

The desired fann_get_MSE() or fann_get_bit_fail(), depending on the stop function chosen by fann_set_train_stop_function()

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_train_on_file() - Trains on an entire dataset, which is read from file, for a period of time
  • fann_train_epoch() - Train one epoch with a set of training data
  • fann_get_bit_fail() - The number of fail bits
  • fann_get_MSE() - Reads the mean square error from the network
  • fann_set_train_stop_function() - Sets the stop function used during training
  • fann_set_training_algorithm() - Sets the training algorithm
  • fann_set_callback() - Sets the callback function for use during training

fann_train_epoch
fann_train_on_file
Fann 函数


Trains on an entire dataset, which is read from file, for a period of time

fann_train_on_data
fann_train
Fann 函数
PHP Manual

fann_train_on_file

(PECL fann >= 1.0.0)

fann_train_on_file — Trains on an entire dataset, which is read from file, for a period of time

说明

bool fann_train_on_file ( resource $ann , string $filename , int $max_epochs , int $epochs_between_reports , float $desired_error )

Trains on an entire dataset, which is read from file, for a period of time.

This training uses the training algorithm chosen by fann_set_training_algorithm() and the parameters set for these training algorithms.

参数

ann

Neural network resource.

filename

The file containing train data

max_epochs

The maximum number of epochs the training should continue

epochs_between_reports

The number of epochs between calling a user function. A value of zero means that user function is not called.

desired_error

The desired fann_get_MSE() or fann_get_bit_fail(), depending on the stop function chosen by fann_set_train_stop_function()

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_train_on_data() - Trains on an entire dataset for a period of time
  • fann_train_epoch() - Train one epoch with a set of training data
  • fann_get_bit_fail() - The number of fail bits
  • fann_get_MSE() - Reads the mean square error from the network
  • fann_set_train_stop_function() - Sets the stop function used during training
  • fann_set_training_algorithm() - Sets the training algorithm
  • fann_set_callback() - Sets the callback function for use during training

fann_train_on_data
fann_train
Fann 函数


Train one iteration with a set of inputs, and a set of desired outputs

fann_train_on_file
FANNConnection
Fann 函数
PHP Manual

fann_train

(PECL fann >= 1.0.0)

fann_train — Train one iteration with a set of inputs, and a set of desired outputs

说明

bool fann_train ( resource $ann , array $input , array $desired_output )

Train one iteration with a set of inputs, and a set of desired outputs. This training is always incremental training, since only one pattern is presented.

参数

ann

Neural network resource.

input

An array of inputs. This array must be exactly fann_get_num_input() long.

desired_output

An array of desired outputs. This array must be exactly fann_get_num_output() long.

返回值

Returns TRUE on success, or FALSE otherwise.

参见

  • fann_train_on_data() - Trains on an entire dataset for a period of time
  • fann_train_epoch() - Train one epoch with a set of training data
  • fann_get_num_input() - Get the number of input neurons
  • fann_get_num_output() - Get the number of output neurons

fann_train_on_file
FANNConnection
Fann 函数


The FANNConnection class

(No version information available, might only be in Git)

简介

FANNConnection is used for the neural network connection. The objects of this class are used in fann_get_connection_array() and fann_set_weight_array().

类摘要

FANNConnection {
/* 属性 */
public $from_neuron ;
public $to_neuron ;
public $weight ;
/* 方法 */
public __construct ( int $from_neuron , int $to_neuron , float $weight )
public int getFromNeuron ( void )
public int getToNeuron ( void )
public void getWeight ( void )
public bool setWeight ( float $weight )
}

属性

from_neuron

The neuron where the connection starts.

to_neuron

The neuron where the connection ends.

weight

The weight of the connection.

Table of Contents

  • FANNConnection::__construct — The connection constructor
  • FANNConnection::getFromNeuron — Returns the postions of starting neuron.
  • FANNConnection::getToNeuron — Returns the postions of terminating neuron
  • FANNConnection::getWeight — Returns the connection weight
  • FANNConnection::setWeight — Sets the connections weight
fann_train
FANNConnection::__construct
FANN


The connection constructor

FANNConnection
FANNConnection::getFromNeuron
FANNConnection
PHP Manual

FANNConnection::__construct

(PECL fann >= 1.0.0)

FANNConnection::__construct — The connection constructor

说明

public FANNConnection::__construct ( int $from_neuron , int $to_neuron , float $weight )

Create new connection and initialize its params. After creating the connection, only weight can be changed.

参数

from_neuron

The postion number of starting neuron.

to_neuron

The postion number of terminating neuron.

weight

The connection weight value.

FANNConnection
FANNConnection::getFromNeuron
FANNConnection


Returns the postions of starting neuron.

FANNConnection::__construct
FANNConnection::getToNeuron
FANNConnection
PHP Manual

FANNConnection::getFromNeuron

(PECL fann >= 1.0.0)

FANNConnection::getFromNeuron — Returns the postions of starting neuron.

说明

public int FANNConnection::getFromNeuron ( void )

Returns the postions of starting neuron.

参数

此函数没有参数。

返回值

The postions of starting neuron.

FANNConnection::__construct
FANNConnection::getToNeuron
FANNConnection


Returns the postions of terminating neuron

FANNConnection::getFromNeuron
FANNConnection::getWeight
FANNConnection
PHP Manual

FANNConnection::getToNeuron

(PECL fann >= 1.0.0)

FANNConnection::getToNeuron — Returns the postions of terminating neuron

说明

public int FANNConnection::getToNeuron ( void )

Returns the postions of terminating neuron.

参数

此函数没有参数。

返回值

The postions of terminating neuron.

FANNConnection::getFromNeuron
FANNConnection::getWeight
FANNConnection


Returns the connection weight

FANNConnection::getToNeuron
FANNConnection::setWeight
FANNConnection
PHP Manual

FANNConnection::getWeight

(PECL fann >= 1.0.0)

FANNConnection::getWeight — Returns the connection weight

说明

public void FANNConnection::getWeight ( void )

Returns the connection weight.

参数

此函数没有参数。

返回值

The connection weight.

FANNConnection::getToNeuron
FANNConnection::setWeight
FANNConnection


Sets the connections weight

FANNConnection::getWeight
JSON
FANNConnection
PHP Manual

FANNConnection::setWeight

(PECL fann >= 1.0.0)

FANNConnection::setWeight — Sets the connections weight

说明

public bool FANNConnection::setWeight ( float $weight )

Sets the connection weight.

This method is different than fann_set_weight(). It does not update the weight value in the network. The network value is updated only after calling fann_set_weight_array().

参数

weight

The connection weight.

返回值

Returns TRUE on success, or FALSE otherwise.

FANNConnection::getWeight
JSON
FANNConnection


JavaScript对象符号（JSON）

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • JsonSerializable — JSON 序列化接口
    • JsonSerializable::jsonSerialize — 指定需要被序列化成 JSON 的数据
  • JSON 函数
    • json_decode — 对 JSON 格式的字符串进行解码
    • json_encode — 对变量进行 JSON 编码
    • json_last_error_msg — Returns the error string of the last json_encode() or json_decode() call
    • json_last_error — 返回最后发生的错误
FANNConnection::setWeight
简介
其它基本扩展


简介

本扩展实现了 » JavaScript对象符号（JSON） 数据转换格式。 PHP 5 中的解码分析器基于 Douglas Crockford 的 JSON_checker。 PHP 7 中是改进的全新解析器，专门为 PHP 订制，软件许可证为 PHP license。

Note:

PHP implements a superset of JSON as specified in the original » RFC 7159.

JSON
安装／配置
JSON


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
JSON


安装

自 PHP 5.2.0 起，JSON 扩展默认内置并编译进了 PHP。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/json

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

以下常量表示了 json_last_error() 所返回的错误类型。

JSON_ERROR_NONE (integer)
没有错误发生。自 PHP 5.3.0 起生效。
JSON_ERROR_DEPTH (integer)
到达了最大堆栈深度。自 PHP 5.3.0 起生效。
JSON_ERROR_STATE_MISMATCH (integer)
出现了下溢（underflow）或者模式不匹配。自 PHP 5.3.0 起生效。
JSON_ERROR_CTRL_CHAR (integer)
控制字符错误，可能是编码不对。自 PHP 5.3.0 起生效。
JSON_ERROR_SYNTAX (integer)
语法错误。 自 PHP 5.3.0 起生效。
JSON_ERROR_UTF8 (integer)
异常的 UTF-8 字符，也许是因为不正确的编码。 自 PHP 5.3.3 起生效。
JSON_ERROR_RECURSION (integer)
The object or array passed to json_encode() include recursive references and cannot be encoded. If the JSON_PARTIAL_OUTPUT_ON_ERROR option was given, NULL will be encoded in the place of the recursive reference. Available since PHP 5.5.0.
JSON_ERROR_INF_OR_NAN (integer)
The value passed to json_encode() includes either NAN or INF. If the JSON_PARTIAL_OUTPUT_ON_ERROR option was given, 0 will be encoded in the place of these special numbers. Available since PHP 5.5.0.
JSON_ERROR_UNSUPPORTED_TYPE (integer)
A value of an unsupported type was given to json_encode(), such as a resource. If the JSON_PARTIAL_OUTPUT_ON_ERROR option was given, NULL will be encoded in the place of the unsupported value. Available since PHP 5.5.0.
JSON_ERROR_INVALID_PROPERTY_NAME (integer)
A key starting with \u0000 character was in the string passed to json_decode() when decoding a JSON object into a PHP object. Available since PHP 7.0.0.
JSON_ERROR_INVALID_PROPERTY_NAME (integer)
Single unpaired UTF-16 surrogate in unicode escape contained in the JSON string passed to json_encode(). Available since PHP 7.0.0.

下面的常量可以和 json_encode() 的 form 选项结合使用。

JSON_BIGINT_AS_STRING (integer)
将大数字编码成原始字符原来的值。 自 PHP 5.4.0 起生效。
JSON_OBJECT_AS_ARRAY (integer)
Decodes JSON objects as PHP array. This option can be added automatically by calling json_decode() with the second parameter equal to TRUE. Available since PHP 5.4.0.

下面的常量可以和 json_encode() 的 form 选项结合使用。

JSON_HEX_TAG (integer)
所有的 < 和 > 转换成 \u003C 和 \u003E。 自 PHP 5.3.0 起生效。
JSON_HEX_AMP (integer)
所有的 & 转换成 \u0026。 自 PHP 5.3.0 起生效。
JSON_HEX_APOS (integer)
所有的 ' 转换成 \u0027。 自 PHP 5.3.0 起生效。
JSON_HEX_QUOT (integer)
所有的 " 转换成 \u0022。 自 PHP 5.3.0 起生效。
JSON_FORCE_OBJECT (integer)
使一个非关联数组输出一个类（Object）而非数组。 在数组为空而接受者需要一个类（Object）的时候尤其有用。 自 PHP 5.3.0 起生效。
JSON_NUMERIC_CHECK (integer)
将所有数字字符串编码成数字（numbers）。 自 PHP 5.3.3 起生效。
JSON_PRETTY_PRINT (integer)
用空白字符格式化返回的数据。 自 PHP 5.4.0 起生效。
JSON_UNESCAPED_SLASHES (integer)
不要编码 /。 自 PHP 5.4.0 起生效。
JSON_UNESCAPED_UNICODE (integer)
以字面编码多字节 Unicode 字符（默认是编码成 \uXXXX）。 自 PHP 5.4.0 起生效。
JSON_PARTIAL_OUTPUT_ON_ERROR (integer)
Substitute some unencodable values instead of failing. Available since PHP 5.5.0.
JSON_PRESERVE_ZERO_FRACTION (integer)
Ensures that float values are always encoded as a float value. Available since PHP 5.6.6.
JSON_UNESCAPED_LINE_TERMINATORS (integer)
The line terminators are kept unescaped when JSON_UNESCAPED_UNICODE is supplied. It uses the same behaviour as it was before PHP 7.1 without this constant. Available since PHP 7.1.0.
资源类型
JsonSerializable
JSON


JSON 序列化接口

(PHP 5 >= 5.4.0, PHP 7)

简介

实现 JsonSerializable 的类可以 在 json_encode() 时定制他们的 JSON 表示法。

接口摘要

JsonSerializable {
/* 方法 */
abstract public mixed jsonSerialize ( void )
}

Table of Contents

  • JsonSerializable::jsonSerialize — 指定需要被序列化成 JSON 的数据
预定义常量
JsonSerializable::jsonSerialize
JSON


指定需要被序列化成 JSON 的数据

JsonSerializable
JSON 函数
JsonSerializable
PHP Manual

JsonSerializable::jsonSerialize

(PHP 5 >= 5.4.0, PHP 7)

JsonSerializable::jsonSerialize — 指定需要被序列化成 JSON 的数据

说明

abstract public mixed JsonSerializable::jsonSerialize ( void )

序列化物体（Object）成能被 json_encode() 原生地序列化的值。

参数

此函数没有参数。

返回值

返回能被 json_encode() 序列化的数据， 这个值可以是除了 resource 外的任意类型。

范例

Example #1 JsonSerializable::jsonSerialize() 例子 returning an array

<?php
class ArrayValue implements JsonSerializable {
    public function __construct(array $array) {
        $this->array = $array;
    }

    public function jsonSerialize() {
        return $this->array;
    }
}

$array = [1, 2, 3];
echo json_encode(new ArrayValue($array), JSON_PRETTY_PRINT);
?>

以上例程会输出：

[
    1,
    2,
    3
]

Example #2 JsonSerializable::jsonSerialize() 例子 返回了一个关联数组 array

<?php
class ArrayValue implements JsonSerializable {
    public function __construct(array $array) {
        $this->array = $array;
    }

    public function jsonSerialize() {
        return $this->array;
    }
}

$array = ['foo' => 'bar', 'quux' => 'baz'];
echo json_encode(new ArrayValue($array), JSON_PRETTY_PRINT);
?>

以上例程会输出：

{
    "foo": "bar",
    "quux": "baz"
}

Example #3 JsonSerializable::jsonSerialize() 例子 返回一个 integer

<?php
class IntegerValue implements JsonSerializable {
    public function __construct($number) {
        $this->number = (integer) $number;
    }

    public function jsonSerialize() {
        return $this->number;
    }
}

echo json_encode(new IntegerValue(1), JSON_PRETTY_PRINT);
?>

以上例程会输出：

1

Example #4 JsonSerializable::jsonSerialize() 例子 返回一个 string

<?php
class StringValue implements JsonSerializable {
    public function __construct($string) {
        $this->string = (string) $string;
    }

    public function jsonSerialize() {
        return $this->string;
    }
}

echo json_encode(new StringValue('Hello!'), JSON_PRETTY_PRINT);
?>

以上例程会输出：

"Hello!"

JsonSerializable
JSON 函数
JsonSerializable


JSON 函数

Table of Contents

  • json_decode — 对 JSON 格式的字符串进行解码
  • json_encode — 对变量进行 JSON 编码
  • json_last_error_msg — Returns the error string of the last json_encode() or json_decode() call
  • json_last_error — 返回最后发生的错误
JsonSerializable::jsonSerialize
json_decode
JSON


对 JSON 格式的字符串进行解码

JSON 函数
json_encode
JSON 函数
PHP Manual

json_decode

(PHP 5 >= 5.2.0, PECL json >= 1.2.0, PHP 7)

json_decode — 对 JSON 格式的字符串进行解码

说明

mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )

接受一个 JSON 编码的字符串并且把它转换为 PHP 变量

参数

json

待解码的 json string 格式的字符串。

这个函数仅能处理 UTF-8 编码的数据。

Note:

PHP implements a superset of JSON as specified in the original » RFC 7159.

assoc

当该参数为 TRUE 时，将返回 array 而非 object 。

depth

指定递归深度。

options

JSON解码的掩码选项。 现在仅支持 JSON_BIGINT_AS_STRING (default is to cast large integers as floats)

返回值

Returns the value encoded in json in appropriate PHP type. Values true, false and null are returned as TRUE, FALSE and NULL respectively. NULL is returned if the json cannot be decoded or if the encoded data is deeper than the recursion limit.

范例

Example #1 json_decode() 的例子

<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json));
var_dump(json_decode($json, true));

?>

以上例程会输出：

object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

Example #2 Accessing invalid object properties

Accessing elements within an object that contain characters not permitted under PHP's naming convention (e.g. the hyphen) can be accomplished by encapsulating the element name within braces and the apostrophe.

<?php

$json = '{"foo-bar": 12345}';

$obj = json_decode($json);
print $obj->{'foo-bar'}; // 12345

?>

Example #3 common mistakes using json_decode()

<?php

// the following strings are valid JavaScript but not valid JSON

// the name and value must be enclosed in double quotes
// single quotes are not valid
$bad_json = "{ 'bar': 'baz' }";
json_decode($bad_json); // null

// the name must be enclosed in double quotes
$bad_json = '{ bar: "baz" }';
json_decode($bad_json); // null

// trailing commas are not allowed
$bad_json = '{ bar: "baz", }';
json_decode($bad_json); // null

?>

Example #4 depth errors

<?php
// Encode the data.
$json = json_encode(
    array(
        1 => array(
            'English' => array(
                'One',
                'January'
            ),
            'French' => array(
                'Une',
                'Janvier'
            )
        )
    )
);

// Define the errors.
$constants = get_defined_constants(true);
$json_errors = array();
foreach ($constants["json"] as $name => $value) {
    if (!strncmp($name, "JSON_ERROR_", 11)) {
        $json_errors[$value] = $name;
    }
}

// Show the errors for different depths.
foreach (range(4, 3, -1) as $depth) {
    var_dump(json_decode($json, true, $depth));
    echo 'Last error: ', $json_errors[json_last_error()], PHP_EOL, PHP_EOL;
}
?>

以上例程会输出：

array(1) {
  [1]=>
  array(2) {
    ["English"]=>
    array(2) {
      [0]=>
      string(3) "One"
      [1]=>
      string(7) "January"
    }
    ["French"]=>
    array(2) {
      [0]=>
      string(3) "Une"
      [1]=>
      string(7) "Janvier"
    }
  }
}
Last error: JSON_ERROR_NONE

NULL
Last error: JSON_ERROR_DEPTH

Example #5 json_decode() of large integers

<?php
$json = '{"number": 12345678901234567890}';

var_dump(json_decode($json));
var_dump(json_decode($json, false, 512, JSON_BIGINT_AS_STRING));

?>

以上例程会输出：

object(stdClass)#1 (1) {
  ["number"]=>
  float(1.2345678901235E+19)
}
object(stdClass)#1 (1) {
  ["number"]=>
  string(20) "12345678901234567890"
}

注释

Note:

The JSON spec is not JavaScript, but a subset of JavaScript.

Note:

In the event of a failure to decode, json_last_error() can be used to determine the exact nature of the error.

更新日志

版本 | 说明
5.6.0 | Invalid non-lowercased variants of the true, false and null literals are no longer accepted as valid input, and will generate warnings.
5.4.0 | The options parameter was added.
5.3.0 | Added the optional depth. The default recursion depth was increased from 128 to 512
5.2.3 | The nesting limit was increased from 20 to 128
5.2.1 | Added support for JSON decoding of basic types.

参见

  • json_encode() - 对变量进行 JSON 编码
  • json_last_error() - 返回最后发生的错误

JSON 函数
json_encode
JSON 函数


对变量进行 JSON 编码

json_decode
json_last_error_msg
JSON 函数
PHP Manual

json_encode

(PHP 5 >= 5.2.0, PECL json >= 1.2.0, PHP 7)

json_encode — 对变量进行 JSON 编码

说明

string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )

返回 value 值的 JSON 形式

参数

value

待编码的 value ，除了resource 类型之外，可以为任何数据类型。

所有字符串数据的编码必须是 UTF-8。

Note:

PHP implements a superset of JSON as specified in the original » RFC 7159.

options

由以下常量组成的二进制掩码： JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_PRESERVE_ZERO_FRACTION, JSON_UNESCAPED_UNICODE, JSON_PARTIAL_OUTPUT_ON_ERROR。 关于 JSON 常量详情参考JSON 常量页面。

depth

设置最大深度。 必须大于0。

返回值

成功则返回 JSON 编码的 string 或者在失败时返回 FALSE 。

更新日志

版本 | 说明
7.1.0 | 对 Double 的值进行编码时，使用 serialize_precision 代替 precision。
5.6.6 | options 参数增加常量： JSON_PRESERVE_ZERO_FRACTION
5.5.0 | 增加 depth 参数。
5.4.0 | options 参数增加常量： JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, 和 JSON_UNESCAPED_UNICODE。
5.3.3 | options 参数增加常量：JSON_NUMERIC_CHECK。
5.3.0 | 增加 options 参数.

范例

Example #1 json_encode() 例子

<?php
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);

echo json_encode($arr);
?>

以上例程会输出：

{"a":1,"b":2,"c":3,"d":4,"e":5}

Example #2 json_encode() 函数中 options 参数的用法

<?php
$a = array('<foo>',"'bar'",'"baz"','&blong&', "\xc3\xa9");

echo "Normal: ",  json_encode($a), "\n";
echo "Tags: ",    json_encode($a, JSON_HEX_TAG), "\n";
echo "Apos: ",    json_encode($a, JSON_HEX_APOS), "\n";
echo "Quot: ",    json_encode($a, JSON_HEX_QUOT), "\n";
echo "Amp: ",     json_encode($a, JSON_HEX_AMP), "\n";
echo "Unicode: ", json_encode($a, JSON_UNESCAPED_UNICODE), "\n";
echo "All: ",     json_encode($a, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE), "\n\n";

$b = array();

echo "Empty array output as array: ", json_encode($b), "\n";
echo "Empty array output as object: ", json_encode($b, JSON_FORCE_OBJECT), "\n\n";

$c = array(array(1,2,3));

echo "Non-associative array output as array: ", json_encode($c), "\n";
echo "Non-associative array output as object: ", json_encode($c, JSON_FORCE_OBJECT), "\n\n";

$d = array('foo' => 'bar', 'baz' => 'long');

echo "Associative array always output as object: ", json_encode($d), "\n";
echo "Associative array always output as object: ", json_encode($d, JSON_FORCE_OBJECT), "\n\n";
?>

以上例程会输出：

Normal: ["<foo>","'bar'","\"baz\"","&blong&","\u00e9"]
Tags: ["\u003Cfoo\u003E","'bar'","\"baz\"","&blong&","\u00e9"]
Apos: ["<foo>","\u0027bar\u0027","\"baz\"","&blong&","\u00e9"]
Quot: ["<foo>","'bar'","\u0022baz\u0022","&blong&","\u00e9"]
Amp: ["<foo>","'bar'","\"baz\"","\u0026blong\u0026","\u00e9"]
Unicode: ["<foo>","'bar'","\"baz\"","&blong&","é"]
All: ["\u003Cfoo\u003E","\u0027bar\u0027","\u0022baz\u0022","\u0026blong\u0026","é"]

Empty array output as array: []
Empty array output as object: {}

Non-associative array output as array: [[1,2,3]]
Non-associative array output as object: {"0":{"0":1,"1":2,"2":3}}

Associative array always output as object: {"foo":"bar","baz":"long"}
Associative array always output as object: {"foo":"bar","baz":"long"}

Example #3 选项 JSON_NUMERIC_CHECK 例子

<?php
echo "Strings representing numbers automatically turned into numbers".PHP_EOL;
$numbers = array('+123123', '-123123', '1.2e3', '0.00001');
var_dump(
 $numbers,
 json_encode($numbers, JSON_NUMERIC_CHECK)
);
echo "Strings containing improperly formatted numbers".PHP_EOL;
$strings = array('+a33123456789', 'a123');
var_dump(
 $strings,
 json_encode($strings, JSON_NUMERIC_CHECK)
);
?>

以上例程的输出类似于：

Strings representing numbers automatically turned into numbers
array(4) {
  [0]=>
  string(7) "+123123"
  [1]=>
  string(7) "-123123"
  [2]=>
  string(5) "1.2e3"
  [3]=>
  string(7) "0.00001"
}
string(28) "[123123,-123123,1200,1.0e-5]"
Strings containing improperly formatted numbers
array(2) {
  [0]=>
  string(13) "+a33123456789"
  [1]=>
  string(4) "a123"
}
string(24) "["+a33123456789","a123"]"

Example #4 连续与非连续数组示例

<?php
echo "连续数组".PHP_EOL;
$sequential = array("foo", "bar", "baz", "blong");
var_dump(
 $sequential,
 json_encode($sequential)
);

echo PHP_EOL."非连续数组".PHP_EOL;
$nonsequential = array(1=>"foo", 2=>"bar", 3=>"baz", 4=>"blong");
var_dump(
 $nonsequential,
 json_encode($nonsequential)
);

echo PHP_EOL."删除一个连续数组值的方式产生的非连续数组".PHP_EOL;
unset($sequential[1]);
var_dump(
 $sequential,
 json_encode($sequential)
);
?>

以上例程会输出：

连续数组
array(4) {
  [0]=>
  string(3) "foo"
  [1]=>
  string(3) "bar"
  [2]=>
  string(3) "baz"
  [3]=>
  string(5) "blong"
}
string(27) "["foo","bar","baz","blong"]"

非连续数组
array(4) {
  [1]=>
  string(3) "foo"
  [2]=>
  string(3) "bar"
  [3]=>
  string(3) "baz"
  [4]=>
  string(5) "blong"
}
string(43) "{"1":"foo","2":"bar","3":"baz","4":"blong"}"

删除一个连续数组值的方式产生的非连续数组
array(3) {
  [0]=>
  string(3) "foo"
  [2]=>
  string(3) "baz"
  [3]=>
  string(5) "blong"
}
string(33) "{"0":"foo","2":"baz","3":"blong"}"

Example #5 选项 JSON_PRESERVE_ZERO_FRACTION 的例子

<?php
var_dump(json_encode(12.0, JSON_PRESERVE_ZERO_FRACTION));
var_dump(json_encode(12.0));
?>

以上例程会输出：

string(4) "12.0"
string(2) "12"

注释

Note:

如果执行失败，可以通过 json_last_error() 函数来获取详细错误信息。

Note:

如果要编码的数组的键不是从0开始的数字，所有的键将会被当作字符串，并明确声明为 key-value 对。

Note:

Like the reference JSON encoder, json_encode() will generate JSON that is a simple value (that is, neither an object nor an array) if given a string, integer, float or boolean as an input value. While most decoders will accept these values as valid JSON, some may not, as the specification is ambiguous on this point.

总而言之，应该测试下 JSON decoder 能否处理 json_encode() 生成的数据。

参见

  • JsonSerializable
  • json_decode() - 对 JSON 格式的字符串进行解码
  • json_last_error() - 返回最后发生的错误
  • serialize() - 产生一个可存储的值的表示

json_decode
json_last_error_msg
JSON 函数


Returns the error string of the last json_encode() or json_decode() call

json_encode
json_last_error
JSON 函数
PHP Manual

json_last_error_msg

(PHP 5 >= 5.5.0, PHP 7)

json_last_error_msg — Returns the error string of the last json_encode() or json_decode() call

说明

string json_last_error_msg ( void )

参数

此函数没有参数。

返回值

Returns the error message on success, "No Error" if no error has occurred, 或者在失败时返回 FALSE.

参见

  • json_last_error() - 返回最后发生的错误

json_encode
json_last_error
JSON 函数


返回最后发生的错误

json_last_error_msg
Judy
JSON 函数
PHP Manual

json_last_error

(PHP 5 >= 5.3.0, PHP 7)

json_last_error — 返回最后发生的错误

说明

int json_last_error ( void )

如果有，返回 JSON 编码解码时最后发生的错误。

参数

此函数没有参数。

返回值

返回一个整型（integer），这个值会是以下的常量之一：

JSON 错误码
常量 | 含义 | 可用性
JSON_ERROR_NONE | 没有错误发生 |
JSON_ERROR_DEPTH | 到达了最大堆栈深度 |
JSON_ERROR_STATE_MISMATCH | 无效或异常的 JSON |
JSON_ERROR_CTRL_CHAR | 控制字符错误，可能是编码不对 |
JSON_ERROR_SYNTAX | 语法错误 |
JSON_ERROR_UTF8 | 异常的 UTF-8 字符，也许是因为不正确的编码。 | PHP 5.3.3
JSON_ERROR_RECURSION | One or more recursive references in the value to be encoded | PHP 5.5.0
JSON_ERROR_INF_OR_NAN | One or more NAN or INF values in the value to be encoded | PHP 5.5.0
JSON_ERROR_UNSUPPORTED_TYPE | 指定的类型，值无法编码。 | PHP 5.5.0
JSON_ERROR_INVALID_PROPERTY_NAME | 指定的属性名无法编码。 | PHP 7.0.0
JSON_ERROR_UTF16 | 畸形的 UTF-16 字符，可能因为字符编码不正确。 | PHP 7.0.0

范例

Example #1 json_last_error() 例子

<?php
// 一个有效的 json 字符串
$json[] = '{"Organization": "PHP Documentation Team"}';

// 一个无效的 json 字符串会导致一个语法错误，在这个例子里我们使用 ' 代替了 " 作为引号
$json[] = "{'Organization': 'PHP Documentation Team'}";

foreach ($json as $string) {
    echo 'Decoding: ' . $string;
    json_decode($string);

    switch (json_last_error()) {
        case JSON_ERROR_NONE:
            echo ' - No errors';
        break;
        case JSON_ERROR_DEPTH:
            echo ' - Maximum stack depth exceeded';
        break;
        case JSON_ERROR_STATE_MISMATCH:
            echo ' - Underflow or the modes mismatch';
        break;
        case JSON_ERROR_CTRL_CHAR:
            echo ' - Unexpected control character found';
        break;
        case JSON_ERROR_SYNTAX:
            echo ' - Syntax error, malformed JSON';
        break;
        case JSON_ERROR_UTF8:
            echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
        break;
        default:
            echo ' - Unknown error';
        break;
    }

    echo PHP_EOL;
}
?>

以上例程会输出：

Decoding: {"Organization": "PHP Documentation Team"} - No errors
Decoding: {'Organization': 'PHP Documentation Team'} - Syntax error, malformed JSON

Example #2 json_encode() 的 json_last_error()

<?php
// 无效的 UTF8 序列
$text = "\xB1\x31";

$json  = json_encode($text);
$error = json_last_error();

var_dump($json, $error === JSON_ERROR_UTF8);
?>

以上例程会输出：

string(4) "null"
bool(true)

参见

  • json_last_error_msg() - Returns the error string of the last json_encode() or json_decode() call
  • json_decode() - 对 JSON 格式的字符串进行解码
  • json_encode() - 对变量进行 JSON 编码

json_last_error_msg
Judy
JSON 函数


Judy Arrays

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • Judy — The Judy class
    • Judy::byCount — Locate the Nth index present in the Judy array
    • Judy::__construct — Construct a new Judy object
    • Judy::count — Count the number of elements in the Judy array
    • Judy::__destruct — Destruct a Judy object
    • Judy::first — Search for the first index in the Judy array
    • Judy::firstEmpty — Search for the first absent index in the Judy array
    • Judy::free — Free the entire Judy array
    • Judy::getType — Return the type of the current Judy array
    • Judy::last — Search for the last index in the Judy array
    • Judy::lastEmpty — Search for the last absent index in the Judy array
    • Judy::memoryUsage — Return the memory used by the Judy array
    • Judy::next — Search for the next index in the Judy array
    • Judy::nextEmpty — Search for the next absent index in the Judy array
    • Judy::offsetExists — Whether a offset exists
    • Judy::offsetGet — Offset to retrieve
    • Judy::offsetSet — Offset to set
    • Judy::offsetUnset — Offset to unset
    • Judy::prev — Search for the previous index in the Judy array
    • Judy::prevEmpty — Search for the previous absent index in the Judy array
    • Judy::size — Return the size of the current Judy array
  • Judy 函数
    • judy_type — Return the type of a Judy array
    • judy_version — Return or print the current PHP Judy version
json_last_error
简介
其它基本扩展


简介

PHP Judy is a PECL extension for the » Judy C library implementing dynamic sparse arrays.

A Judy array is a complex but very fast associative array data structure for storing and looking up values using integer or string keys. Unlike normal arrays, Judy arrays may be sparse; that is, they may have large ranges of unassigned indices.

A Judy array consumes memory only when populated yet can grow to take advantage of all available memory. Judy's key benefits are: scalability, performance, memory efficiency, and ease of use. Judy arrays are designed to grow without tuning into the peta-element range, scaling near O(log-base-256) -- 1 more RAM access at 256 X population.

Judy
安装／配置
Judy


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Judy


需求

This extension require the » Judy C library.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/judy

Installation on Linux Systems

From sources

Download and install » libJudy, then :

     phpize
     ./configure --with-judy[=DIR]
     make
     make test
     make install

Ubuntu/Debian

libJudy can be installed with apt-get :

    apt-get install libjudydebian1 libjudy-dev
Then by installing the Judy extension from PECL or from the sources.

Installation on Windows Systems

Download » libJudy, then extract the sources and open the Visual Studio command prompt and navigate to the source directory. Then execute :

build
This creates "Judy.lib", copy this into the php-sdk library folder and name it "libJudy.lib" Then copy the include file "judy.h" into the php-sdk includes folder.

Next, the PHP Judy extension can be installed from PECL or from the sources by extracting the pecl/judy into your build folder where the build scripts will be able to pick it up, e.g.:

    C:\php\pecl\judy\
If your source of PHP is located in:
    C:\php\src\
The rest of the steps is pretty straight forward, like any other external extension:
    buildconf
    configure --with-judy=shared
    nmake

Installation on Mac OS X

Download and install » libJudy. Then install the Judy extension from PECL or from the sources.

需求
运行时配置
安装／配置


资源类型

此扩展没有定义资源类型。

运行时配置
Judy
安装／配置


The Judy class

(PECL judy >= 0.1.1)

简介

The Judy class implements the ArrayAccess interface and the Iterator interface. This class, once instantiated, can be accessed like a PHP array.

A PHP Judy object (or Judy Array) can be one of the following type :

  • Judy::BITSET
  • Judy::INT_TO_INT
  • Judy::INT_TO_MIXED
  • Judy::STRING_TO_INT
  • Judy::STRING_TO_MIXED

Example #1 Judy array example

<?php
    $judy = new Judy(Judy::INT_TO_MIXED);
    $judy[1] = "one";
    $judy[2] = array('a', 'b', 'c');
    $judy[3] = new Judy(Judy::BITSET);
?>

类摘要

Judy implements ArrayAccess , Iterator {
/* Constants */
const integer BITSET = 1 ;
const integer INT_TO_INT = 2 ;
const integer INT_TO_MIXED = 3 ;
const integer STRING_TO_INT = 4 ;
const integer STRING_TO_MIXED = 5 ;
/* 方法 */
public int byCount ( int $nth_index )
public __construct ( int $judy_type )
public int count ([ int $index_start = 0 [, int $index_end = -1 ]] )
public void __destruct ( void )
public mixed first ([ mixed $index ] )
public int firstEmpty ([ mixed $index = 0 ] )
public int free ( void )
public int getType ( void )
public void last ([ string $index ] )
public int lastEmpty ([ int $index = -1 ] )
public int memoryUsage ( void )
public mixed next ( mixed $index )
public int nextEmpty ( int $index )
public bool offsetExists ( mixed $offset )
public mixed offsetGet ( mixed $offset )
public bool offsetSet ( mixed $offset , mixed $value )
public bool offsetUnset ( mixed $offset )
public mixed prev ( mixed $index )
public int prevEmpty ( mixed $index )
public void size ( void )
}

预定义常量

Judy::BITSET

Define the Judy Array as a Bitset with keys as Integer and Values as a Boolean

Judy::INT_TO_INT

Define the Judy Array with key/values as Integer, and Integer only.

Judy::INT_TO_MIXED

Define the Judy Array with keys as Integer and Values of any type.

Judy::STRING_TO_INT

Define the Judy Array with keys as a String and Values as Integer, and Integer only.

Judy::STRING_TO_MIXED

Define the Judy Array with keys as a String and Values of any type.

Table of Contents

  • Judy::byCount — Locate the Nth index present in the Judy array
  • Judy::__construct — Construct a new Judy object
  • Judy::count — Count the number of elements in the Judy array
  • Judy::__destruct — Destruct a Judy object
  • Judy::first — Search for the first index in the Judy array
  • Judy::firstEmpty — Search for the first absent index in the Judy array
  • Judy::free — Free the entire Judy array
  • Judy::getType — Return the type of the current Judy array
  • Judy::last — Search for the last index in the Judy array
  • Judy::lastEmpty — Search for the last absent index in the Judy array
  • Judy::memoryUsage — Return the memory used by the Judy array
  • Judy::next — Search for the next index in the Judy array
  • Judy::nextEmpty — Search for the next absent index in the Judy array
  • Judy::offsetExists — Whether a offset exists
  • Judy::offsetGet — Offset to retrieve
  • Judy::offsetSet — Offset to set
  • Judy::offsetUnset — Offset to unset
  • Judy::prev — Search for the previous index in the Judy array
  • Judy::prevEmpty — Search for the previous absent index in the Judy array
  • Judy::size — Return the size of the current Judy array
资源类型
Judy::byCount
Judy


Locate the Nth index present in the Judy array

Judy
Judy::__construct
Judy
PHP Manual

Judy::byCount

(PECL judy >= 0.1.1)

Judy::byCount — Locate the Nth index present in the Judy array

说明

public int Judy::byCount ( int $nth_index )

Locate the Nth index present in the Judy array.

参数

nth_index

Nth index to return. If nth_index equal 1, then it will return the first index in the array.

返回值

Return the index at the given Nth position.

Judy
Judy::__construct
Judy


Construct a new Judy object

Judy::byCount
Judy::count
Judy
PHP Manual

Judy::__construct

(PECL judy >= 0.1.1)

Judy::__construct — Construct a new Judy object

说明

public Judy::__construct ( int $judy_type )

Construct a new Judy object. A Judy object can be accessed like a PHP Array.

参数

judy_type

The Judy type to be used.

返回值

Return the new Judy instance.

Judy::byCount
Judy::count
Judy


Count the number of elements in the Judy array

Judy::__construct
Judy::__destruct
Judy
PHP Manual

Judy::count

(PECL judy >= 0.1.1)

Judy::count — Count the number of elements in the Judy array

说明

public int Judy::count ([ int $index_start = 0 [, int $index_end = -1 ]] )

Count the number of elements in the Judy array.

参数

index_start

Start counting from the given index. Default is first index.

index_end

Stop counting when reaching this index. Default is last index.

返回值

Return the number of elements.

Judy::__construct
Judy::__destruct
Judy


Destruct a Judy object

Judy::count
Judy::first
Judy
PHP Manual

Judy::__destruct

(PECL judy >= 0.1.1)

Judy::__destruct — Destruct a Judy object

说明

public void Judy::__destruct ( void )

Destruct a Judy object.

参数

此函数没有参数。

返回值

Judy::count
Judy::first
Judy


Search for the first index in the Judy array

Judy::__destruct
Judy::firstEmpty
Judy
PHP Manual

Judy::first

(PECL judy >= 0.1.1)

Judy::first — Search for the first index in the Judy array

说明

public mixed Judy::first ([ mixed $index ] )

Search (inclusive) for the first index present that is equal to or greater than the passed Index.

参数

index

The index can be an integer or a string corresponding to the index where to start the search.

返回值

Return the corresponding index in the array.

Judy::__destruct
Judy::firstEmpty
Judy


Search for the first absent index in the Judy array

Judy::first
Judy::free
Judy
PHP Manual

Judy::firstEmpty

(PECL judy >= 0.1.1)

Judy::firstEmpty — Search for the first absent index in the Judy array

说明

public int Judy::firstEmpty ([ mixed $index = 0 ] )

Search (inclusive) for the first absent index that is equal to or greater than the passed Index.

参数

index

The index can be an integer or a string corresponding to the index where to start the search.

返回值

Return the corresponding index in the array.

Judy::first
Judy::free
Judy


Free the entire Judy array

Judy::firstEmpty
Judy::getType
Judy
PHP Manual

Judy::free

(PECL judy >= 0.1.1)

Judy::free — Free the entire Judy array

说明

public int Judy::free ( void )

Free the entire Judy array.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Judy::firstEmpty
Judy::getType
Judy


Return the type of the current Judy array

Judy::free
Judy::last
Judy
PHP Manual

Judy::getType

(PECL judy >= 0.1.1)

Judy::getType — Return the type of the current Judy array

说明

public int Judy::getType ( void )

Return an integer corresponding to the Judy type of the current object.

参数

此函数没有参数。

返回值

Return an integer corresponding to a Judy type.

Judy::free
Judy::last
Judy


Search for the last index in the Judy array

Judy::getType
Judy::lastEmpty
Judy
PHP Manual

Judy::last

(PECL judy >= 0.1.1)

Judy::last — Search for the last index in the Judy array

说明

public void Judy::last ([ string $index ] )

Search (inclusive) for the last index present that is equal to or less than the passed Index.

参数

index

The index can be an integer or a string corresponding to the index where to start the search.

返回值

Return the corresponding index in the array.

Judy::getType
Judy::lastEmpty
Judy


Search for the last absent index in the Judy array

Judy::last
Judy::memoryUsage
Judy
PHP Manual

Judy::lastEmpty

(PECL judy >= 0.1.1)

Judy::lastEmpty — Search for the last absent index in the Judy array

说明

public int Judy::lastEmpty ([ int $index = -1 ] )

Search (inclusive) for the last absent index that is equal to or less than the passed Index.

参数

index

The index can be an integer or a string corresponding to the index where to start the search.

返回值

Return the corresponding index in the array.

Judy::last
Judy::memoryUsage
Judy


Return the memory used by the Judy array

Judy::lastEmpty
Judy::next
Judy
PHP Manual

Judy::memoryUsage

(PECL judy >= 0.1.1)

Judy::memoryUsage — Return the memory used by the Judy array

说明

public int Judy::memoryUsage ( void )

Return the memory used by the Judy array.

参数

此函数没有参数。

返回值

Return the memory used in bytes.

Judy::lastEmpty
Judy::next
Judy


Search for the next index in the Judy array

Judy::memoryUsage
Judy::nextEmpty
Judy
PHP Manual

Judy::next

(PECL judy >= 0.1.1)

Judy::next — Search for the next index in the Judy array

说明

public mixed Judy::next ( mixed $index )

Search (exclusive) for the next index present that is greater than the passed Index.

参数

index

The index can be an integer or a string corresponding to the index where to start the search.

返回值

Return the corresponding index in the array.

Judy::memoryUsage
Judy::nextEmpty
Judy


Search for the next absent index in the Judy array

Judy::next
Judy::offsetExists
Judy
PHP Manual

Judy::nextEmpty

(PECL judy >= 0.1.1)

Judy::nextEmpty — Search for the next absent index in the Judy array

说明

public int Judy::nextEmpty ( int $index )

Search (exclusive) for the next absent index that is greater than the passed Index.

参数

index

The index can be an integer or a string corresponding to the index where to start the search.

返回值

Return the corresponding index in the array.

Judy::next
Judy::offsetExists
Judy


Whether a offset exists

Judy::nextEmpty
Judy::offsetGet
Judy
PHP Manual

Judy::offsetExists

(PECL judy >= 0.1.1)

Judy::offsetExists — Whether a offset exists

说明

public bool Judy::offsetExists ( mixed $offset )

Whether or not an offset exists.

参数

offset

An offset to check for.

返回值

Returns TRUE on success or FALSE on failure.

Judy::nextEmpty
Judy::offsetGet
Judy


Offset to retrieve

Judy::offsetExists
Judy::offsetSet
Judy
PHP Manual

Judy::offsetGet

(PECL judy >= 0.1.1)

Judy::offsetGet — Offset to retrieve

说明

public mixed Judy::offsetGet ( mixed $offset )

Returns the value at specified offset.

参数

offset

The offset to retrieve.

返回值

Can return all value types.

Judy::offsetExists
Judy::offsetSet
Judy


Offset to set

Judy::offsetGet
Judy::offsetUnset
Judy
PHP Manual

Judy::offsetSet

(PECL judy >= 0.1.1)

Judy::offsetSet — Offset to set

说明

public bool Judy::offsetSet ( mixed $offset , mixed $value )

Assigns a value to the specified offset.

参数

offset

The offset to assign the value to.

value

The value to set.

返回值

No value is returned.

Judy::offsetGet
Judy::offsetUnset
Judy


Offset to unset

Judy::offsetSet
Judy::prev
Judy
PHP Manual

Judy::offsetUnset

(PECL judy >= 0.1.1)

Judy::offsetUnset — Offset to unset

说明

public bool Judy::offsetUnset ( mixed $offset )

Unsets an offset.

参数

offset

The offset to unset.

返回值

No value is returned.

Judy::offsetSet
Judy::prev
Judy


Search for the previous index in the Judy array

Judy::offsetUnset
Judy::prevEmpty
Judy
PHP Manual

Judy::prev

(PECL judy >= 0.1.1)

Judy::prev — Search for the previous index in the Judy array

说明

public mixed Judy::prev ( mixed $index )

Search (exclusive) for the previous index present that is less than the passed Index.

参数

index

The index can be an integer or a string corresponding to the index where to start the search.

返回值

Return the corresponding index in the array.

Judy::offsetUnset
Judy::prevEmpty
Judy


Search for the previous absent index in the Judy array

Judy::prev
Judy::size
Judy
PHP Manual

Judy::prevEmpty

(PECL judy >= 0.1.1)

Judy::prevEmpty — Search for the previous absent index in the Judy array

说明

public int Judy::prevEmpty ( mixed $index )

Search (exclusive) for the previous index absent that is less than the passed Index.

参数

index

The index can be an integer or a string corresponding to the index where to start the search.

返回值

Return the corresponding index in the array.

Judy::prev
Judy::size
Judy


Return the size of the current Judy array

Judy::prevEmpty
Judy 函数
Judy
PHP Manual

Judy::size

(PECL judy >= 0.1.1)

Judy::size — Return the size of the current Judy array

说明

public void Judy::size ( void )

This method is an alias of Judy::count.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Return an integer.

Judy::prevEmpty
Judy 函数
Judy


Judy 函数

Table of Contents

  • judy_type — Return the type of a Judy array
  • judy_version — Return or print the current PHP Judy version
Judy::size
judy_type
Judy


Return the type of a Judy array

Judy 函数
judy_version
Judy 函数
PHP Manual

judy_type

(PECL judy >= 0.1.1)

judy_type — Return the type of a Judy array

说明

int judy_type ( Judy $array )

judy_type() return an integer corresponding to the Judy type of the specified Judy array.

参数

array

The Judy Array to test.

返回值

Return an integer corresponding to a Judy type.

Judy 函数
judy_version
Judy 函数


Return or print the current PHP Judy version

judy_type
Lua
Judy 函数
PHP Manual

judy_version

(PECL judy >= 0.1.1)

judy_version — Return or print the current PHP Judy version

说明

string judy_version ( void )

Return a string of the PHP Judy version. If the return value is not used, the string will be printed.

参数

此函数没有参数。

返回值

Return a string of the PHP Judy version.

judy_type
Lua
Judy 函数


Lua

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • Lua — Lua类
    • Lua::assign — 将一个php变量赋值给Lua
    • Lua::call — 调用Lua函数
    • Lua::__construct — Lua 构造方法
    • Lua::eval — 将字符串当做Lua代码执行
    • Lua::getVersion — 获取Lua版本
    • Lua::include — 解析Lua脚本文件
    • Lua::registerCallback — 向Lua中注册php函数
  • LuaClosure — LuaClosure类
    • LuaClosure::__invoke — 调用luaclosure
judy_version
简介
其它基本扩展


简介

"Lua是一个功能强大，速度快，轻量级，可嵌入的脚本语言。" 这个扩展嵌入Lua解释器，并对lua变量和函数提供面向对象的API。

Lua
安装／配置
Lua


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Lua


需求

使用这个扩展，需要先安装Lua» Lua主页。

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/lua.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


资源类型

此扩展没有定义资源类型。

运行时配置
Lua
安装／配置


Lua类

(PECL lua >=0.9.0)

简介

类摘要

Lua {
/* 常量 */
const string LUA_VERSION = Lua 5.1.4 ;
/* 方法 */
public mixed assign ( string $name , string $value )
public mixed call ( callable $lua_func [, array $args [, int $use_self = 0 ]] )
public mixed __call ( callable $lua_func [, array $args [, int $use_self = 0 ]] )
public __construct ( string $lua_script_file = NULL )
public mixed eval ( string $statements )
public string getVersion ( void )
public mixed include ( string $file )
public mixed registerCallback ( string $name , callable $function )
}

预定义常量

Lua::LUA_VERSION

Table of Contents

  • Lua::assign — 将一个php变量赋值给Lua
  • Lua::call — 调用Lua函数
  • Lua::__construct — Lua 构造方法
  • Lua::eval — 将字符串当做Lua代码执行
  • Lua::getVersion — 获取Lua版本
  • Lua::include — 解析Lua脚本文件
  • Lua::registerCallback — 向Lua中注册php函数
资源类型
Lua::assign
Lua


将一个php变量赋值给Lua

Lua
Lua::call
Lua
PHP Manual

Lua::assign

(PECL lua >=0.9.0)

Lua::assign — 将一个php变量赋值给Lua

说明

public mixed Lua::assign ( string $name , string $value )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

value

返回值

赋值成功返回$this否则返回NULL

范例

Example #1 Lua::assign()示例

<?php
$lua = new Lua();
$lua->assign("php_var", array(1=>1, 2, 3)); //lua table index begin with 1
$lua->eval(<<<CODE
    print(php_var);
CODE
);
?>

以上例程会输出：

Array
 (
     [1] => 1
     [2] => 2
     [3] => 3
 )
Lua
Lua::call
Lua


调用Lua函数

Lua::assign
Lua::__construct
Lua
PHP Manual

Lua::call

Lua::__call

(PECL lua >=0.9.0)

Lua::call -- Lua::__call — 调用Lua函数

说明

public mixed Lua::call ( callable $lua_func [, array $args [, int $use_self = 0 ]] )
public mixed Lua::__call ( callable $lua_func [, array $args [, int $use_self = 0 ]] )

Warning

本函数还未编写文档，仅有参数列表。

参数

lua_func

lua中的函数名。

args

向Lua函数传入的参数。

use_self

是否使用self。

返回值

返回调用函数的结果，参数错误返回NULL ，其它错误返回FALSE。

范例

Example #1 Lua::call()示例

<?php
$lua = new Lua();
$lua->eval(<<<CODE
    function dummy(foo, bar)
        print(foo, ",", bar)
    end
CODE
);
$lua->call("dummy", array("Lua", "geiliable\n"));
$lua->dummy("Lua", "geiliable"); // __call()
var_dump($lua->call(array("table", "concat"), array(array(1=>1, 2=>2, 3=>3), "-")));
?>

以上例程会输出：

Lua,geiliable
Lua,geiliable
string(5) "1-2-3"

参见

  • __call()
Lua::assign
Lua::__construct
Lua


Lua 构造方法

Lua::call
Lua::eval
Lua
PHP Manual

Lua::__construct

(PECL lua >=0.9.0)

Lua::__construct — Lua 构造方法

说明

public Lua::__construct ( string $lua_script_file = NULL )

Warning

本函数还未编写文档，仅有参数列表。

参数

lua_script_file

返回值

Lua::call
Lua::eval
Lua


将字符串当做Lua代码执行

Lua::__construct
Lua::getVersion
Lua
PHP Manual

Lua::eval

(PECL lua >=0.9.0)

Lua::eval — 将字符串当做Lua代码执行

说明

public mixed Lua::eval ( string $statements )

Warning

本函数还未编写文档，仅有参数列表。

参数

statements

返回值

返回运行结果，参数错误返回NULL ，其它错误返回FALSE。

范例

Example #1 Lua::eval()示例

<?php
$lua = new Lua();
$lua->eval(<<<CODE
    print(2);
CODE
);
?>

以上例程会输出：

2
Lua::__construct
Lua::getVersion
Lua


获取Lua版本

Lua::eval
Lua::include
Lua
PHP Manual

Lua::getVersion

(PECL lua >=0.9.0)

Lua::getVersion — 获取Lua版本

说明

public string Lua::getVersion ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

返回 Lua::LUA_VERSION。

Lua::eval
Lua::include
Lua


解析Lua脚本文件

Lua::getVersion
Lua::registerCallback
Lua
PHP Manual

Lua::include

(PECL lua >=0.9.0)

Lua::include — 解析Lua脚本文件

说明

public mixed Lua::include ( string $file )

Warning

本函数还未编写文档，仅有参数列表。

参数

file

返回值

返回脚本文件运行结果，参数错误返回NULL ，其它错误返回FALSE。

Lua::getVersion
Lua::registerCallback
Lua


向Lua中注册php函数

Lua::include
LuaClosure
Lua
PHP Manual

Lua::registerCallback

(No version information available, might only be in Git)

Lua::registerCallback — 向Lua中注册php函数

说明

public mixed Lua::registerCallback ( string $name , callable $function )

向Lua注册php函数，函数名为"$name"

参数

name

function

一个有效的PHP回调函数

返回值

成功返回$this，参数错误返回NULL ，其它错误返回FALSE。

范例

Example #1 Lua::registerCallback()示例

<?php
$lua = new Lua();
$lua->registerCallback("echo", "var_dump");
$lua->eval(<<<CODE
    echo({1, 2, 3});
CODE
);
?>

以上例程会输出：

array(3) {
  [1]=>
  float(1)
  [2]=>
  float(2)
  [3]=>
  float(3)
}
Lua::include
LuaClosure
Lua


LuaClosure类

(PECL lua >=0.9.0)

简介

LuaClosure是对LUA_TFUNCTION的封装类，可以作为调用Lua函数的返回值。

类摘要

LuaClosure {
/* 方法 */
public void __invoke ( mixed $arg [, mixed $... ] )
}

Table of Contents

  • LuaClosure::__invoke — 调用luaclosure
Lua::registerCallback
LuaClosure::__invoke
Lua


调用luaclosure

LuaClosure
Misc.
LuaClosure
PHP Manual

LuaClosure::__invoke

(PECL lua >=0.9.0)

LuaClosure::__invoke — 调用luaclosure

说明

public void LuaClosure::__invoke ( mixed $arg [, mixed $... ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

arg

...

返回值

范例

Example #1 LuaClosure::__invoke()示例

<?php
$lua = new Lua();
$closure = $lua->eval(<<<CODE
    return (function ()
        print("hello world")
    end)
CODE
);

$lua->call($closure);
/* after PHP 5.3 */
$closure();
?>

以上例程会输出：

hello worldhello world
LuaClosure
Misc.
LuaClosure


杂项函数

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 杂项 函数
    • connection_aborted — 检查客户端是否已经断开
    • connection_status — 返回连接的状态位
    • constant — 返回一个常量的值
    • define — 定义一个常量
    • defined — 检查某个名称的常量是否存在
    • die — 等同于 exit
    • eval — 把字符串作为PHP代码执行
    • exit — 输出一个消息并且退出当前脚本
    • get_browser — 获取浏览器具有的功能
    • __halt_compiler — 中断编译器的执行
    • highlight_file — 语法高亮一个文件
    • highlight_string — 字符串的语法高亮
    • ignore_user_abort — 设置客户端断开连接时是否中断脚本的执行
    • pack — Pack data into binary string
    • php_check_syntax — 检查PHP的语法（并执行）指定的文件
    • php_strip_whitespace — 返回删除注释和空格后的PHP源码
    • show_source — 别名 highlight_file
    • sleep — 延缓执行
    • sys_getloadavg — 获取系统的负载（load average）
    • time_nanosleep — 延缓执行若干秒和纳秒
    • time_sleep_until — 使脚本睡眠到指定的时间为止。
    • uniqid — 生成一个唯一ID
    • unpack — Unpack data from binary string
    • usleep — 以指定的微秒数延迟执行
LuaClosure::__invoke
简介
其它基本扩展


简介

因为这些函数不适合其他章节，所以放置于此。

Misc.
安装／配置
Misc.


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Misc.


运行时配置

这些函数的行为受 php.ini 中的设置影响。

杂项配置选项
名字 | 默认 | 可修改范围 | 更新日志
ignore_user_abort | "0" | PHP_INI_ALL |
highlight.string | "#DD0000" | PHP_INI_ALL |
highlight.comment | "#FF8000" | PHP_INI_ALL |
highlight.keyword | "#007700" | PHP_INI_ALL |
highlight.bg | "#FFFFFF" | PHP_INI_ALL | 在PHP 5.4.0.中已移除
highlight.html | "#0000BB" | PHP_INI_ALL |
highlight.html | "#000000" | PHP_INI_ALL |
browscap | NULL | PHP_INI_SYSTEM |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

ignore_user_abort boolean

默认值为 FALSE 。 如果设置为 TRUE ，在客户端断开连接后，脚本不会被中止。

参见 ignore_user_abort().

highlight.bg string
highlight.comment string
highlight.default string
highlight.html string
highlight.keyword string
highlight.string string

语法高亮的颜色。可设置为 <font color="??????"> 中任何可接受的代码。

browscap string

浏览器功能文件的位置和文件名 (例如 browscap.ini)。 参见 get_browser()。

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

CONNECTION_ABORTED (integer)
CONNECTION_NORMAL (integer)
CONNECTION_TIMEOUT (integer)
__COMPILER_HALT_OFFSET__ (integer)
在PHP 5.1中加入。
资源类型
杂项 函数
Misc.


杂项 函数

Table of Contents

  • connection_aborted — 检查客户端是否已经断开
  • connection_status — 返回连接的状态位
  • constant — 返回一个常量的值
  • define — 定义一个常量
  • defined — 检查某个名称的常量是否存在
  • die — 等同于 exit
  • eval — 把字符串作为PHP代码执行
  • exit — 输出一个消息并且退出当前脚本
  • get_browser — 获取浏览器具有的功能
  • __halt_compiler — 中断编译器的执行
  • highlight_file — 语法高亮一个文件
  • highlight_string — 字符串的语法高亮
  • ignore_user_abort — 设置客户端断开连接时是否中断脚本的执行
  • pack — Pack data into binary string
  • php_check_syntax — 检查PHP的语法（并执行）指定的文件
  • php_strip_whitespace — 返回删除注释和空格后的PHP源码
  • show_source — 别名 highlight_file
  • sleep — 延缓执行
  • sys_getloadavg — 获取系统的负载（load average）
  • time_nanosleep — 延缓执行若干秒和纳秒
  • time_sleep_until — 使脚本睡眠到指定的时间为止。
  • uniqid — 生成一个唯一ID
  • unpack — Unpack data from binary string
  • usleep — 以指定的微秒数延迟执行
预定义常量
connection_aborted
Misc.


检查客户端是否已经断开

杂项 函数
connection_status
杂项 函数
PHP Manual

connection_aborted

(PHP 4, PHP 5, PHP 7)

connection_aborted — 检查客户端是否已经断开

说明

int connection_aborted ( void )

检查客户端是否已经断开。

返回值

如果客户端已经断开则返回1，否则返回0。

参见

  • connection_status() - 返回连接的状态位
  • ignore_user_abort() - 设置客户端断开连接时是否中断脚本的执行
  • 查看连接处理 了解PHP处理连接的详情。

杂项 函数
connection_status
杂项 函数


返回连接的状态位

connection_aborted
constant
杂项 函数
PHP Manual

connection_status

(PHP 4, PHP 5, PHP 7)

connection_status — 返回连接的状态位

说明

int connection_status ( void )

获得当前连接的状态位。

返回值

获得当前连接的状态位, 可以用于与 CONNECTION_XXX 定义的常量来确定连接状态。

参见

  • connection_aborted() - 检查客户端是否已经断开
  • ignore_user_abort() - 设置客户端断开连接时是否中断脚本的执行
  • 查看连接处理 了解PHP处理连接的详情。

connection_aborted
constant
杂项 函数


返回一个常量的值

connection_status
define
杂项 函数
PHP Manual

constant

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

constant — 返回一个常量的值

说明

mixed constant ( string $name )

通过 name 返回常量的值。

当你不知道常量名，却需要获取常量的值时，constant() 就很有用了。也就是常量名储存在一个变量里，或者由函数返回常量名。

该函数也适用 class constants。

参数

name

常量名。

返回值

返回常量的值。如果常量未定义则返回 NULL。

错误／异常

如果常量未定义，会产生一个 E_WARNING 级别的错误。

范例

Example #1 constant() 的例子

<?php

define("MAXSIZE", 100);

echo MAXSIZE;
echo constant("MAXSIZE"); // same thing as the previous line

interface bar {
    const test = 'foobar!';
}

class foo {
    const test = 'foobar!';
}

$const = 'test';

var_dump(constant('bar::'. $const)); // string(7) "foobar!"
var_dump(constant('foo::'. $const)); // string(7) "foobar!"

?>

参见

  • define() - 定义一个常量
  • defined() - 检查某个名称的常量是否存在
  • Constants 这一节

connection_status
define
杂项 函数


定义一个常量

constant
defined
杂项 函数
PHP Manual

define

(PHP 4, PHP 5, PHP 7)

define — 定义一个常量

说明

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )

在运行时定义一个常量。

参数

name

常量名。

value

常量的值；在 PHP 5 中，value 必须是标量( integer、 float、string、boolean、NULL）在 PHP 7 中还允许是个 array 的值。

Warning

常量还可以定义为 resource 类型，但并不推荐这样做，因为可能会有不可预知的行为发生。

case_insensitive

如果设置为 TRUE，该常量则大小写不敏感。默认是大小写敏感的。比如， CONSTANT 和 Constant 代表了不同的值。

Note:

大小写不敏感的常量以小写的方式储存。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
7.0.0 | 允许 array 的值。

范例

Example #1 定义常量

<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // 输出 "Hello world."
echo Constant; // 输出 "Constant" 并导致 Notice

define("GREETING", "Hello you.", true);
echo GREETING; // 输出 "Hello you."
echo Greeting; // 输出 "Hello you."

//  PHP 7 起就可以运行了
define('ANIMALS', array(
    'dog',
    'cat',
    'bird'
));
echo ANIMALS[1]; // 输出 "cat"

?>

参见

  • defined() - 检查某个名称的常量是否存在
  • constant() - 返回一个常量的值
  • Constants这一节

constant
defined
杂项 函数


检查某个名称的常量是否存在

define
die
杂项 函数
PHP Manual

defined

(PHP 4, PHP 5, PHP 7)

defined — 检查某个名称的常量是否存在

说明

bool defined ( string $name )

检查该名称的常量是否已定义。

Note:

如果你要检查一个变量是否存在，请使用 isset()。 defined() 函数仅对 constants 有效。如果你要检测某个函数是否存在，使用 function_exists()。

参数

name

常量的名称。

返回值

如果名称 name 的常量已定义，返回 TRUE；未定义则返回 FALSE。

范例

Example #1 检查常量

<?php
/* Note the use of quotes, this is important.  This example is checking
 * if the string 'TEST' is the name of a constant named TEST */
if (defined('TEST')) {
    echo TEST;
}
?>

参见

  • define() - 定义一个常量
  • constant() - 返回一个常量的值
  • get_defined_constants() - 返回所有常量的关联数组，键是常量名，值是常量值
  • function_exists() - 如果给定的函数已经被定义就返回 TRUE
  • 章节 Constants

define
die
杂项 函数


等同于 exit

defined
eval
杂项 函数
PHP Manual

die

(PHP 4, PHP 5, PHP 7)

die — 等同于 exit()

说明

语法结构等同于 exit()。

defined
eval
杂项 函数


把字符串作为PHP代码执行

die
exit
杂项 函数
PHP Manual

eval

(PHP 4, PHP 5, PHP 7)

eval — 把字符串作为PHP代码执行

说明

mixed eval ( string $code )

把字符串 code 作为PHP代码执行。

Caution

函数eval()语言结构是 非常危险的， 因为它允许执行任意 PHP 代码。 它这样用是很危险的。 如果您仔细的确认过，除了使用此结构以外 别无方法, 请多加注意，不要允许传入任何由用户 提供的、未经完整验证过的数据 。

参数

code

需要被执行的字符串

代码不能包含打开/关闭 PHP tags。比如， 'echo "Hi!";' 不能这样传入： '<?php echo "Hi!"; ?>'。但仍然可以用合适的 PHP tag 来离开、重新进入 PHP 模式。比如 'echo "In PHP mode!"; ?>In HTML mode!<?php echo "Back in PHP mode!";'。

除此之外，传入的必须是有效的 PHP 代码。所有的语句必须以分号结尾。比如 'echo "Hi!"' 会导致一个 parse error，而 'echo "Hi!";' 则会正常运行。

return 语句会立即中止当前字符串的执行。

代码执行的作用域是调用 eval() 处的作用域。因此，eval() 里任何的变量定义、修改，都会在函数结束后被保留。

返回值

eval() 返回 NULL，除非在执行的代码中 return 了一个值，函数返回传递给 return 的值。 PHP 7 开始，执行的代码里如果有一个 parse error，eval() 会抛出 ParseError 异常。在 PHP 7 之前， 如果在执行的代码中有 parse error，eval() 返回 FALSE，之后的代码将正常执行。无法使用 set_error_handler() 捕获 eval() 中的解析错误。

范例

Example #1 eval() 例子 - 简单的文本合并

<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.';
echo $str. "\n";
eval("\$str = \"$str\";");
echo $str. "\n";
?>

以上例程会输出：

This is a $string with my $name in it.
This is a cup with my coffee in it.

注释

Note: 因为是一个语言构造器而不是一个函数，不能被 可变函数 调用。

Tip

和直接将结果输出到浏览器一样，可使用输出控制函数来捕获当前函数的输出，然后(例如)保存到一个 string 中。

Note:

如果在执行的代码中产生了一个致命的错误（fatal error），整个脚本会退出。

参见

  • call_user_func() - 把第一个参数作为回调函数调用

die
exit
杂项 函数


输出一个消息并且退出当前脚本

eval
get_browser
杂项 函数
PHP Manual

exit

(PHP 4, PHP 5, PHP 7)

exit — 输出一个消息并且退出当前脚本

说明

void exit ([ string $status ] )
void exit ( int $status )

中止脚本的执行。 尽管调用了 exit()， Shutdown函数 以及 object destructors 总是会被执行。

exit 是个语法结构，如果没有 status 参数要传入，可以省略圆括号。

参数

status

如果 status 是一个字符串，在退出之前该函数会打印 status 。

如果 status 是一个 integer，该值会作为退出状态码，并且不会被打印输出。 退出状态码应该在范围0至254，不应使用被PHP保留的退出状态码255。 状态码0用于成功中止程序。

返回值

没有返回值。

范例

Example #1 exit() 例子

<?php

$filename = '/path/to/data-file';
$file = fopen($filename, 'r')
    or exit("unable to open file ($filename)");

?>

Example #2 exit() 状态码例子

<?php

//exit program normally
exit;
exit();
exit(0);

//exit with an error code
exit(1);
exit(0376); //octal

?>

Example #3 无论如何，Shutdown函数与析构函数都会被执行

<?php
class Foo
{
    public function __destruct()
    {
        echo 'Destruct: ' . __METHOD__ . '()' . PHP_EOL;
    }
}

function shutdown()
{
    echo 'Shutdown: ' . __FUNCTION__ . '()' . PHP_EOL;
}

$foo = new Foo();
register_shutdown_function('shutdown');

exit();
echo 'This will not be output.';
?>

以上例程会输出：

 Shutdown: shutdown()
 Destruct: Foo::__destruct()

注释

Note: 因为是一个语言构造器而不是一个函数，不能被 可变函数 调用。

Note:

该语法结构等同于 die()。

参见

  • register_shutdown_function() - Register a function for execution on shutdown

eval
get_browser
杂项 函数


获取浏览器具有的功能

exit
__halt_compiler
杂项 函数
PHP Manual

get_browser

(PHP 4, PHP 5, PHP 7)

get_browser — 获取浏览器具有的功能

说明

mixed get_browser ([ string $user_agent [, bool $return_array = false ]] )

通过查找 browscap.ini 文件中的浏览器信息，尝试检测用户的浏览器所具有的功能。

参数

user_agent

要分析的用户代理。默认使用HTTP头中User-Agent的值，不过，你可以通过传递该参数改变User-Agent。(比如查找另一个浏览器的信息)

你可以传递一个 NULL 来忽略该参数。

return_array

如果设置为 TRUE，该函数会返回一个 array，而不是 object。

返回值

信息会以包含一系列数据的数组或者对象返回。例如：浏览器的主版本号、次版本号和ID字符串；框架、JavaScript、cookies等功能是否支持 TRUE/FALSE 的值。

cookies 的值仅意味着浏览器是否具有接收cookies的功能，不代表用户是否已允许启用cookies。 测试的唯一办法，只有通过 setcookie() 设置一个cookie，刷新页面并检测该cookie的值。

更新日志

版本 | 说明
4.3.2 | 添加了可选参数 return_array。

范例

Example #1 列出所有用户浏览器的信息

<?php
echo $_SERVER['HTTP_USER_AGENT'] . "\n\n";

$browser = get_browser(null, true);
print_r($browser);
?>

以上例程的输出类似于：

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3

Array
(
    [browser_name_regex] => ^mozilla/5\.0 (windows; .; windows nt 5\.1; .*rv:.*) gecko/.* firefox/0\.9.*$
    [browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9*
    [parent] => Firefox 0.9
    [platform] => WinXP
    [browser] => Firefox
    [version] => 0.9
    [majorver] => 0
    [minorver] => 9
    [cssversion] => 2
    [frames] => 1
    [iframes] => 1
    [tables] => 1
    [cookies] => 1
    [backgroundsounds] =>
    [vbscript] =>
    [javascript] => 1
    [javaapplets] => 1
    [activexcontrols] =>
    [cdf] =>
    [aol] =>
    [beta] => 1
    [win16] =>
    [crawler] =>
    [stripper] =>
    [wap] =>
    [netclr] =>
)

注释

Note:

为了能让该函数运作，在 php.ini 中配置的 browscap 必须指向 browscap.ini 文件的正确位置。

browscap.ini 并未内置在PHP中，不过你可以在这里找到最新的 » php_browscap.ini。

browscap.ini 包含的诸多浏览器信息依赖于用户更新该数据库。该文件的格式不言自明。

exit
__halt_compiler
杂项 函数


中断编译器的执行

get_browser
highlight_file
杂项 函数
PHP Manual

__halt_compiler

(PHP 5 >= 5.1.0, PHP 7)

__halt_compiler — 中断编译器的执行

说明

void __halt_compiler ( void )

中断编译器的执行。常用于在PHP脚本内嵌入数据，类似于安装文件。

可以通过常量 __COMPILER_HALT_OFFSET__ 获取数据开始字节所在的位置，且该常量仅被定义于使用了__halt_compiler的文件。

返回值

没有返回值。

范例

Example #1 __halt_compiler() 例子

<?php

// open this file
$fp = fopen(__FILE__, 'r');

// seek file pointer to data
fseek($fp, __COMPILER_HALT_OFFSET__);

// and output it
var_dump(stream_get_contents($fp));

// the end of the script execution
__halt_compiler(); the installation data (eg. tar, gz, PHP, etc.)

注释

Note:

__halt_compiler() 仅能够在最外层使用。

get_browser
highlight_file
杂项 函数


语法高亮一个文件

__halt_compiler
highlight_string
杂项 函数
PHP Manual

highlight_file

(PHP 4, PHP 5, PHP 7)

highlight_file — 语法高亮一个文件

说明

mixed highlight_file ( string $filename [, bool $return = false ] )

使用PHP内置的语法高亮器所定义的颜色，打印输出或者返回 filename 文件中语法高亮版本的代码。

许多服务器配置了自动高亮 phps 扩展的文件。 比如，访问 example.phps 会显示语法高亮后的文件。 添加以下一行代码到 httpd.conf 使此生效：

AddType application/x-httpd-php-source .phps

参数

filename

欲高亮文件的路径。

return

设置该参数为 TRUE 使函数返回高亮后的代码。

返回值

如果 return 设置为 TRUE，高亮后的代码不会被打印输出，而是以字符串的形式返回。 高亮成功返回 TRUE，否则返回 FALSE。

更新日志

版本 | 说明
4.2.1 | 该函数现在也受 safe_mode 和 open_basedir 的限制和影响。
4.2.0 | 添加了 return 的参数。

注释

Caution

应当注意在使用 highlight_file() 时，确认没有在不经意间泄漏敏感信息，类似密码或者其他任何具有潜在安全风险的信息。

Note:

当使用了return 参数时，本函数使用其内部输出缓冲，因此不能在 ob_start() 回调函数的内部使用。

参见

  • highlight_string() - 字符串的语法高亮

__halt_compiler
highlight_string
杂项 函数


字符串的语法高亮

highlight_file
ignore_user_abort
杂项 函数
PHP Manual

highlight_string

(PHP 4, PHP 5, PHP 7)

highlight_string — 字符串的语法高亮

说明

mixed highlight_string ( string $str [, bool $return = false ] )

使用PHP内置的语法高亮器所定义的颜色，打印输出或者返回输出或者返回语法高亮版本的PHP代码。

参数

str

需要高亮的PHP代码，应当包含开始标签。

return

设置该参数为 TRUE 使函数返回高亮后的代码。

返回值

如果 return 设置为 TRUE，高亮后的代码不会被打印输出，而是以字符串的形式返回。 高亮成功返回 TRUE，否则返回 FALSE。

更新日志

版本 | 说明
4.2.0 | 添加了 return 的参数。

范例

Example #1 highlight_string() 例子

<?php
highlight_string('<?php phpinfo(); ?>');
?>

PHP4中，上例会输出:

<code><font color="#000000">
<font color="#0000BB">&lt;?php phpinfo</font><font color="#007700">(); </font><font color="#0000BB">?&gt;</font>
</font>
</code>

PHP5中，上例会输出:

<code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php phpinfo</span><span style="color: #007700">(); </span><span style="color: #0000BB">?&gt;</span>
</span>
</code>

注释

Note:

当使用了return 参数时，本函数使用其内部输出缓冲，因此不能在 ob_start() 回调函数的内部使用。

参见

  • highlight_file() - 语法高亮一个文件

highlight_file
ignore_user_abort
杂项 函数


设置客户端断开连接时是否中断脚本的执行

highlight_string
pack
杂项 函数
PHP Manual

ignore_user_abort

(PHP 4, PHP 5, PHP 7)

ignore_user_abort — 设置客户端断开连接时是否中断脚本的执行

说明

int ignore_user_abort ([ bool $value ] )

设置客户端断开连接时是否中断脚本的执行

PHP 以命令行脚本执行时，当脚本终端结束，脚本不会被立即中止，除非设置 value 为 TRUE，否则脚本输出任意字符时会被中止。

参数

value

如果设置了该值，函数会把 ignore_user_abort ini 的值设置为 value。 如果未设置该值，函数不会改变设置，仅会返回之前的设置。

返回值

以整型返回之前的设置

范例

Example #1 ignore_user_abort()例子

<?php
// Ignore user aborts and allow the script
// to run forever
ignore_user_abort(true);
set_time_limit(0);

echo 'Testing connection handling in PHP';

// Run a pointless loop that sometime
// hopefully will make us click away from
// page or click the "Stop" button.
while(1)
{
    // Did the connection fail?
    if(connection_status() != CONNECTION_NORMAL)
    {
        break;
    }

    // Sleep for 10 seconds
    sleep(10);
}

// If this is reached, then the 'break'
// was triggered from inside the while loop

// So here we can log, or perform any other tasks
// we need without actually being dependent on the
// browser.
?>

注释

在PHP尝试发送信息到客户端之前，不会检测到用户是否已中断连接。 仅使用 echo 语句不能确保信息已发送，参见 flush() 函数。

参见

  • connection_aborted() - 检查客户端是否已经断开
  • connection_status() - 返回连接的状态位
  • Connection Handling 关于PHP连接处理的完整描述。

highlight_string
pack
杂项 函数


Pack data into binary string

ignore_user_abort
php_check_syntax
杂项 函数
PHP Manual

pack

(PHP 4, PHP 5, PHP 7)

pack — Pack data into binary string

说明

string pack ( string $format [, mixed $args [, mixed $... ]] )

Pack given arguments into a binary string according to format.

The idea for this function was taken from Perl and all formatting codes work the same as in Perl. However, there are some formatting codes that are missing such as Perl's "u" format code.

Note that the distinction between signed and unsigned values only affects the function unpack(), where as function pack() gives the same result for signed and unsigned format codes.

参数

format

The format string consists of format codes followed by an optional repeater argument. The repeater argument can be either an integer value or * for repeating to the end of the input data. For a, A, h, H the repeat count specifies how many characters of one data argument are taken, for @ it is the absolute position where to put the next data, for everything else the repeat count specifies how many data arguments are consumed and packed into the resulting binary string.

Currently implemented formats are:

pack() format characters
Code | Description
a | NUL-padded string
A | SPACE-padded string
h | Hex string, low nibble first
H | Hex string, high nibble first
c | signed char
C | unsigned char
s | signed short (always 16 bit, machine byte order)
S | unsigned short (always 16 bit, machine byte order)
n | unsigned short (always 16 bit, big endian byte order)
v | unsigned short (always 16 bit, little endian byte order)
i | signed integer (machine dependent size and byte order)
I | unsigned integer (machine dependent size and byte order)
l | signed long (always 32 bit, machine byte order)
L | unsigned long (always 32 bit, machine byte order)
N | unsigned long (always 32 bit, big endian byte order)
V | unsigned long (always 32 bit, little endian byte order)
q | signed long long (always 64 bit, machine byte order)
Q | unsigned long long (always 64 bit, machine byte order)
J | unsigned long long (always 64 bit, big endian byte order)
P | unsigned long long (always 64 bit, little endian byte order)
f | float (machine dependent size and representation)
d | double (machine dependent size and representation)
x | NUL byte
X | Back up one byte
Z | NUL-padded string (new in PHP 5.5)
@ NUL-fill to absolute position

args

返回值

Returns a binary string containing data.

更新日志

版本 | 说明
5.6.3 | The "q", "Q", "J" and "P" codes were added to enable working with 64-bit numbers.
5.5.0 | The "Z" code was added with equivalent functionality to "a" for Perl compatibility.

范例

Example #1 pack() example

<?php
$binarydata = pack("nvc*", 0x1234, 0x5678, 65, 66);
?>

The resulting binary string will be 6 bytes long and contain the byte sequence 0x12, 0x34, 0x78, 0x56, 0x41, 0x42.

注释

Caution

Note that PHP internally stores integer values as signed values of a machine-dependent size (C type long). Integer literals and operations that yield numbers outside the bounds of the integer type will be stored as float. When packing these floats as integers, they are first cast into the integer type. This may or may not result in the desired byte pattern.

The most relevant case is when packing unsigned numbers that would be representable with the integer type if it were unsigned. In systems where the integer type has a 32-bit size, the cast usually results in the same byte pattern as if the integer were unsigned (although this relies on implementation-defined unsigned to signed conversions, as per the C standard). In systems where the integer type has 64-bit size, the float most likely does not have a mantissa large enough to hold the value without loss of precision. If those systems also have a native 64-bit C int type (most UNIX-like systems don't), the only way to use the I pack format in the upper range is to create integer negative values with the same byte representation as the desired unsigned value.

参见

  • unpack() - Unpack data from binary string

ignore_user_abort
php_check_syntax
杂项 函数


检查PHP的语法（并执行）指定的文件

pack
php_strip_whitespace
杂项 函数
PHP Manual

php_check_syntax

(PHP 5 <= 5.0.4)

php_check_syntax — 检查PHP的语法（并执行）指定的文件

说明

bool php_check_syntax ( string $filename [, string &$error_message ] )

对指定的 filename 进行语法检查，检测脚本的错误。

此函数除了会执行（但不会输出）filename，其他与 命令行中使用php -l 相似。

例如，如果函数在文件 filename 中被定义了，则该函数在执行php_check_syntax()后可用。但是filename输出内容不会被输出。

Note:

因为某些技术原因，该函数已被弃用，并且从PHP中移除了。请以commandline使用 php -l somefile.php取而代之。

参数

filename

需要被检测的文件。

error_message

如果使用了参数 error_message，它会包含语法检测出的错误信息。 error_message 以 引用方式传递。

返回值

如果语法检测通过返回 TRUE，未通过或者文件无法打开则返回 FALSE。

更新日志

版本 | 说明
5.0.5 | 函数从PHP中移除。
5.0.3 | php_check_syntax()之后调用 exit() 会导致一个段错误。
5.0.1 | error_message 通过引用传递

范例

php -l somefile.php

以上例程的输出类似于：

PHP Parse error: unexpected T_STRING in /tmp/somefile.php on line 81

参见

  • include - include
  • is_readable() - 判断给定文件名是否可读

pack
php_strip_whitespace
杂项 函数


返回删除注释和空格后的PHP源码

php_check_syntax
show_source
杂项 函数
PHP Manual

php_strip_whitespace

(PHP 5, PHP 7)

php_strip_whitespace — 返回删除注释和空格后的PHP源码

说明

string php_strip_whitespace ( string $filename )

返回删除注释和空格后 filename 的PHP源码。这对实际代码数量和注释数量的对比很有用。 此函数与 命令行 下执行 php -w 相似。 commandline.

参数

filename

PHP文件的路径。

返回值

在成功时返回过滤后的代码，或者在失败时返回空字符串。

Note:

此函数在PHP 5.0.1后以所述方式工作。之前它仅会返回一个空字符串。关于更多此BUG的信息与其行为，详见BUG报告 » #29606。

范例

Example #1 php_strip_whitespace() 的例子

<?php
// PHP comment here

/*
 * Another PHP comment
 */

echo        php_strip_whitespace(__FILE__);
// Newlines are considered whitespace, and are removed too:
do_nothing();
?>

以上例程会输出：

<?php
 echo php_strip_whitespace(__FILE__); do_nothing(); ?>

可以注意到PHP的注释已不存在，成为第一个echo语句前的换行和空格。

php_check_syntax
show_source
杂项 函数


别名 highlight_file

php_strip_whitespace
sleep
杂项 函数
PHP Manual

show_source

(PHP 4, PHP 5, PHP 7)

show_source — 别名 highlight_file()

说明

此函数是该函数的别名： highlight_file().

php_strip_whitespace
sleep
杂项 函数


延缓执行

show_source
sys_getloadavg
杂项 函数
PHP Manual

sleep

(PHP 4, PHP 5, PHP 7)

sleep — 延缓执行

说明

int sleep ( int $seconds )

程序延迟执行指定的 seconds 的秒数。

参数

seconds

暂停的秒数。

返回值

成功时返回 0，错误时返回 FALSE。

如果函数的调用被一个信号中止，sleep() 会返回一个非零的值。在Windows上，该值总是 192（即Windows API常量WAIT_IO_COMPLETION的值）。其他平台上，该返回值是剩余未sleep的秒数。

错误／异常

如果指定的 seconds 是负数，该函数会产生一个 E_WARNING 级别的错误。

更新日志

版本 | 说明
5.3.4 | 在PHP 5.3.4之前，Windows平台下无论 sleep() 是否成功调用，总是会返回一个 NULL。

范例

Example #1 sleep() 的例子

<?php

// current time
echo date('h:i:s') . "\n";

// sleep for 10 seconds
sleep(10);

// wake up !
echo date('h:i:s') . "\n";

?>

该例子会在休眠10秒后输出。

05:31:23
05:31:33

参见

  • usleep() - 以指定的微秒数延迟执行
  • time_nanosleep() - 延缓执行若干秒和纳秒
  • time_sleep_until() - 使脚本睡眠到指定的时间为止。
  • set_time_limit() - 设置脚本最大执行时间

show_source
sys_getloadavg
杂项 函数


获取系统的负载（load average）

sleep
time_nanosleep
杂项 函数
PHP Manual

sys_getloadavg

(PHP 5 >= 5.1.3, PHP 7)

sys_getloadavg — 获取系统的负载（load average）

说明

array sys_getloadavg ( void )

返回三个系统负载（系统运行队列中的进程数）的样本数据，分别是1分钟、5分钟和15分钟之前。

返回值

返回一个包含1分钟、5分钟和15分钟之前采样数据的array。

范例

Example #1 sys_getloadavg() 的例子

<?php
$load = sys_getloadavg();
if ($load[0] > 80) {
    header('HTTP/1.1 503 Too busy, try again later');
    die('Server too busy. Please try again later.');
}
?>

注释

Note: 此函数未在 Windows 平台下实现。

sleep
time_nanosleep
杂项 函数


延缓执行若干秒和纳秒

sys_getloadavg
time_sleep_until
杂项 函数
PHP Manual

time_nanosleep

(PHP 5, PHP 7)

time_nanosleep — 延缓执行若干秒和纳秒

说明

mixed time_nanosleep ( int $seconds , int $nanoseconds )

程序延缓执行指定数量的 seconds 和 nanoseconds。

参数

seconds

必须是一个非负整数。

nanoseconds

必须是一个小于1亿的非负整数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

如果延迟被中断，一个关联数组会返回，内容为：

  • seconds - 延迟剩余未执行的秒数
  • nanoseconds - 延迟剩余未执行的纳秒数

更新日志

版本 | 说明
5.3.0 | 至此之后该函数在Windows平台下可用。

范例

Example #1 time_nanosleep() 的例子

<?php
// Careful! This won't work as expected if an array is returned
if (time_nanosleep(0, 500000000)) {
    echo "Slept for half a second.\n";
}

// This is better:
if (time_nanosleep(0, 500000000) === true) {
    echo "Slept for half a second.\n";
}

// And this is the best:
$nano = time_nanosleep(2, 100000);

if ($nano === true) {
    echo "Slept for 2 seconds, 100 microseconds.\n";
} elseif ($nano === false) {
    echo "Sleeping failed.\n";
} elseif (is_array($nano)) {
    $seconds = $nano['seconds'];
    $nanoseconds = $nano['nanoseconds'];
    echo "Interrupted by a signal.\n";
    echo "Time remaining: $seconds seconds, $nanoseconds nanoseconds.";
}
?>

参见

  • sleep() - 延缓执行
  • usleep() - 以指定的微秒数延迟执行
  • time_sleep_until() - 使脚本睡眠到指定的时间为止。
  • set_time_limit() - 设置脚本最大执行时间

sys_getloadavg
time_sleep_until
杂项 函数


使脚本睡眠到指定的时间为止。

time_nanosleep
uniqid
杂项 函数
PHP Manual

time_sleep_until

(PHP 5 >= 5.1.0, PHP 7)

time_sleep_until — 使脚本睡眠到指定的时间为止。

说明

bool time_sleep_until ( float $timestamp )

使脚本睡眠到指定的 timestamp。

参数

timestamp

将脚本唤醒的时间戳。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.3.0 | 自此，函数在Windows平台可用。

错误／异常

如果设定的 timestamp 为过去的时间，脚本将会产生一个 E_WARNING 级别的错误。

范例

Example #1 time_sleep_until() 的一个例子

<?php

//returns false and generates a warning
var_dump(time_sleep_until(time()-1));

// may only work on faster computers, will sleep up to 0.2 seconds
var_dump(time_sleep_until(microtime(true)+0.2));

?>

注释

Note: 所有的信号会被延迟至脚本唤醒以后。

参见

  • sleep() - 延缓执行
  • usleep() - 以指定的微秒数延迟执行
  • time_nanosleep() - 延缓执行若干秒和纳秒
  • set_time_limit() - 设置脚本最大执行时间

time_nanosleep
uniqid
杂项 函数


生成一个唯一ID

time_sleep_until
unpack
杂项 函数
PHP Manual

uniqid

(PHP 4, PHP 5, PHP 7)

uniqid — 生成一个唯一ID

说明

string uniqid ([ string $prefix = "" [, bool $more_entropy = false ]] )

获取一个带前缀、基于当前时间微秒数的唯一ID。

参数

prefix

有用的参数。例如：如果在多台主机上可能在同一微秒生成唯一ID。

prefix为空，则返回的字符串长度为13。more_entropy 为 TRUE，则返回的字符串长度为23。

more_entropy

如果设置为 TRUE，uniqid() 会在返回的字符串结尾增加额外的煽（使用combined linear congruential generator）。 使得唯一ID更具唯一性。

返回值

返回字符串形式的唯一ID。

范例

Example #1 uniqid() 例子

<?php
/* A uniqid, like: 4b3403665fea6 */
printf("uniqid(): %s\r\n", uniqid());

/* We can also prefix the uniqid, this the same as
 * doing:
 *
 * $uniqid = $prefix . uniqid();
 * $uniqid = uniqid($prefix);
 */
printf("uniqid('php_'): %s\r\n", uniqid('php_'));

/* We can also activate the more_entropy parameter, which is
 * required on some systems, like Cygwin. This makes uniqid()
 * produce a value like: 4b340550242239.64159797
 */
printf("uniqid('', true): %s\r\n", uniqid('', true));
?>

更新日志

版本 | 说明
5.0.0 | prefix 参数设为可选。
4.3.1 | prefix 参数的长度限制提升到114个字符。

注释

Note:

在Cygwin环境下，为了使此函数能够工作，more_entropy 必须设置为 TRUE。

time_sleep_until
unpack
杂项 函数


Unpack data from binary string

uniqid
usleep
杂项 函数
PHP Manual

unpack

(PHP 4, PHP 5, PHP 7)

unpack — Unpack data from binary string

说明

array unpack ( string $format , string $data )

Unpacks from a binary string into an array according to the given format.

The unpacked data is stored in an associative array. To accomplish this you have to name the different format codes and separate them by a slash /. If a repeater argument is present, then each of the array keys will have a sequence number behind the given name.

参数

format

See pack() for an explanation of the format codes.

data

The packed data.

返回值

Returns an associative array containing unpacked elements of binary string.

更新日志

版本 | 说明
5.5.0 | Changes were made to bring this function into line with Perl: The "a" code now retains trailing NULL bytes. The "A" code now strips all trailing ASCII whitespace (spaces, tabs, newlines, carriage returns, and NULL bytes). The "Z" code was added for NULL-padded strings, and removes trailing NULL bytes.

范例

Example #1 unpack() example

<?php
$binarydata = "\x04\x00\xa0\x00";
$array = unpack("cchars/nint", $binarydata);
print_r($array);
?>

以上例程会输出：

Array
(
    [chars] => 4
    [int] => 160
)

Example #2 unpack() example with a repeater

<?php
$binarydata = "\x04\x00\xa0\x00";
$array = unpack("c2chars/nint", $binarydata);
print_r($array);
?>

以上例程会输出：

Array
(
    [chars1] => 4
    [chars2] => 0
    [int] => 40960
)

注释

Caution

Note that PHP internally stores integral values as signed. If you unpack a large unsigned long and it is of the same size as PHP internally stored values the result will be a negative number even though unsigned unpacking was specified.

Caution

If you do not name an element, numeric indices starting from 1 are used. Be aware that if you have more than one unnamed element, some data is overwritten because the numbering restarts from 1 for each element.

Example #3 unpack() example with unnamed keys

<?php
$binarydata = "\x32\x42\x00\xa0";
$array = unpack("c2/n", $binarydata);
var_dump($array);
?>

以上例程会输出：

array(2) {
  [1]=>
  int(160)
  [2]=>
  int(66)
}

Note that the first value from the c specifier is overwritten by the first value from the n specifier.

参见

  • pack() - Pack data into binary string

uniqid
usleep
杂项 函数


以指定的微秒数延迟执行

unpack
Parsekit
杂项 函数
PHP Manual

usleep

(PHP 4, PHP 5, PHP 7)

usleep — 以指定的微秒数延迟执行

说明

void usleep ( int $micro_seconds )

以指定的微秒数延缓程序的执行。

参数

micro_seconds

暂停的时间以微秒计。1微秒（micro second）是百万分之一秒。

返回值

没有返回值。

更新日志

版本 | 说明
5.0.0 | 此函数在Windows系统下可用。

范例

Example #1 usleep()例子

<?php

// Current time
echo date('h:i:s') . "\n";

// wait for 2 seconds
usleep(2000000);

// back!
echo date('h:i:s') . "\n";

?>

以上例程会输出：

11:13:28
11:13:30

参见

  • sleep() - 延缓执行
  • time_nanosleep() - 延缓执行若干秒和纳秒
  • time_sleep_until() - 使脚本睡眠到指定的时间为止。
  • set_time_limit() - 设置脚本最大执行时间

unpack
Parsekit
杂项 函数


Parsekit

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Parsekit 函数
    • parsekit_compile_file — Compile a PHP file and return the resulting op array
    • parsekit_compile_string — Compile a string of PHP code and return the resulting op array
    • parsekit_func_arginfo — Return information regarding function argument(s)
usleep
简介
其它基本扩展


简介

These functions allow runtime analysis of opcodes compiled from PHP scripts.

Parsekit
安装／配置
Parsekit


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Parsekit


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/parsekit.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

PARSEKIT_QUIET (int)
Return full detail, but without unnecessary NULL entries.
PARSEKIT_SIMPLE (int)
Return shorthand opcode notation.
PARSEKIT_EXTENDED_VALUE (int)
Opnode Flag
PARSEKIT_RESULT_CONST (int)
Opnode Flag
PARSEKIT_RESULT_EA_TYPE (int)
Opnode Flag
PARSEKIT_RESULT_JMP_ADDR (int)
Opnode Flag
PARSEKIT_RESULT_OPARRAY (int)
Opnode Flag
PARSEKIT_RESULT_OPLINE (int)
Opnode Flag
PARSEKIT_RESULT_VAR (int)
Opnode Flag
PARSEKIT_USAGE_UNKNOWN (int)
Opnode Flag
PARSEKIT_ZEND_INTERNAL_CLASS (int)
Class Type
PARSEKIT_ZEND_USER_CLASS (int)
Class Type
PARSEKIT_ZEND_EVAL_CODE (int)
Function Type
PARSEKIT_ZEND_INTERNAL_FUNCTION (int)
Function Type
PARSEKIT_ZEND_OVERLOADED_FUNCTION (int)
Function Type
PARSEKIT_ZEND_OVERLOADED_FUNCTION_TEMPORARY (int) PHP >= 5.0.0
Function Type
PARSEKIT_ZEND_USER_FUNCTION (int)
Function Type
PARSEKIT_IS_CONST (int)
Node Type
PARSEKIT_IS_TMP_VAR (int)
Node Type
PARSEKIT_IS_UNUSED (int)
Node Type
PARSEKIT_IS_VAR (int)
Node Type
PARSEKIT_ZEND_ADD (int)
Opcode
PARSEKIT_ZEND_ADD_ARRAY_ELEMENT (int)
Opcode
PARSEKIT_ZEND_ADD_CHAR (int)
Opcode
PARSEKIT_ZEND_ADD_INTERFACE (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_ADD_STRING (int)
Opcode
PARSEKIT_ZEND_ADD_VAR (int)
Opcode
PARSEKIT_ZEND_ASSIGN (int)
Opcode
PARSEKIT_ZEND_ASSIGN_ADD (int)
Opcode
PARSEKIT_ZEND_ASSIGN_BW_AND (int)
Opcode
PARSEKIT_ZEND_ASSIGN_BW_OR (int)
Opcode
PARSEKIT_ZEND_ASSIGN_BW_XOR (int)
Opcode
PARSEKIT_ZEND_ASSIGN_CONCAT (int)
Opcode
PARSEKIT_ZEND_ASSIGN_DIM (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_ASSIGN_DIV (int)
Opcode
PARSEKIT_ZEND_ASSIGN_MOD (int)
Opcode
PARSEKIT_ZEND_ASSIGN_MUL (int)
Opcode
PARSEKIT_ZEND_ASSIGN_OBJ (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_ASSIGN_REF (int)
Opcode
PARSEKIT_ZEND_ASSIGN_SL (int)
Opcode
PARSEKIT_ZEND_ASSIGN_SR (int)
Opcode
PARSEKIT_ZEND_ASSIGN_SUB (int)
Opcode
PARSEKIT_ZEND_BEGIN_SILENCE (int)
Opcode
PARSEKIT_ZEND_BOOL (int)
Opcode
PARSEKIT_ZEND_BOOL_NOT (int)
Opcode
PARSEKIT_ZEND_BOOL_XOR (int)
Opcode
PARSEKIT_ZEND_BRK (int)
Opcode
PARSEKIT_ZEND_BW_AND (int)
Opcode
PARSEKIT_ZEND_BW_NOT (int)
Opcode
PARSEKIT_ZEND_BW_OR (int)
Opcode
PARSEKIT_ZEND_BW_XOR (int)
Opcode
PARSEKIT_ZEND_CASE (int)
Opcode
PARSEKIT_ZEND_CAST (int)
Opcode
PARSEKIT_ZEND_CATCH (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_CLONE (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_CONCAT (int)
Opcode
PARSEKIT_ZEND_CONT (int)
Opcode
PARSEKIT_ZEND_DECLARE_CLASS (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_DECLARE_FUNCTION (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_DECLARE_INHERITED_CLASS (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_DIV (int)
Opcode
PARSEKIT_ZEND_DO_FCALL (int)
Opcode
PARSEKIT_ZEND_DO_FCALL_BY_NAME (int)
Opcode
PARSEKIT_ZEND_ECHO (int)
Opcode
PARSEKIT_ZEND_END_SILENCE (int)
Opcode
PARSEKIT_ZEND_EXIT (int)
Opcode
PARSEKIT_ZEND_EXT_FCALL_BEGIN (int)
Opcode
PARSEKIT_ZEND_EXT_FCALL_END (int)
Opcode
PARSEKIT_ZEND_EXT_NOP (int)
Opcode
PARSEKIT_ZEND_EXT_STMT (int)
Opcode
PARSEKIT_ZEND_FETCH_CLASS (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_FETCH_CONSTANT (int)
Opcode
PARSEKIT_ZEND_FETCH_DIM_FUNC_ARG (int)
Opcode
PARSEKIT_ZEND_FETCH_DIM_IS (int)
Opcode
PARSEKIT_ZEND_FETCH_DIM_R (int)
Opcode
PARSEKIT_ZEND_FETCH_DIM_RW (int)
Opcode
PARSEKIT_ZEND_FETCH_DIM_TMP_VAR (int)
Opcode
PARSEKIT_ZEND_FETCH_DIM_UNSET (int)
Opcode
PARSEKIT_ZEND_FETCH_DIM_W (int)
Opcode
PARSEKIT_ZEND_FETCH_FUNC_ARG (int)
Opcode
PARSEKIT_ZEND_FETCH_IS (int)
Opcode
PARSEKIT_ZEND_FETCH_OBJ_FUNC_ARG (int)
Opcode
PARSEKIT_ZEND_FETCH_OBJ_IS (int)
Opcode
PARSEKIT_ZEND_FETCH_OBJ_R (int)
Opcode
PARSEKIT_ZEND_FETCH_OBJ_RW (int)
Opcode
PARSEKIT_ZEND_FETCH_OBJ_UNSET (int)
Opcode
PARSEKIT_ZEND_FETCH_OBJ_W (int)
Opcode
PARSEKIT_ZEND_FETCH_R (int)
Opcode
PARSEKIT_ZEND_FETCH_RW (int)
Opcode
PARSEKIT_ZEND_FETCH_UNSET (int)
Opcode
PARSEKIT_ZEND_FETCH_W (int)
Opcode
PARSEKIT_ZEND_FE_FETCH (int)
Opcode
PARSEKIT_ZEND_FE_RESET (int)
Opcode
PARSEKIT_ZEND_FREE (int)
Opcode
PARSEKIT_ZEND_HANDLE_EXCEPTION (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_IMPORT_CLASS (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_IMPORT_CONST (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_IMPORT_FUNCTION (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_INCLUDE_OR_EVAL (int)
Opcode
PARSEKIT_ZEND_INIT_ARRAY (int)
Opcode
PARSEKIT_ZEND_INIT_CTOR_CALL (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_INIT_FCALL_BY_NAME (int)
Opcode
PARSEKIT_ZEND_INIT_METHOD_CALL (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_INIT_STATIC_METHOD_CALL (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_INIT_STRING (int)
Opcode
PARSEKIT_ZEND_INSTANCEOF (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_ISSET_ISEMPTY (int) PHP < 5.0.0
Opcode
PARSEKIT_ZEND_ISSET_ISEMPTY_DIM_OBJ (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_ISSET_ISEMPTY_PROP_OBJ (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_ISSET_ISEMPTY_VAR (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_IS_EQUAL (int)
Opcode
PARSEKIT_ZEND_IS_IDENTICAL (int)
Opcode
PARSEKIT_ZEND_IS_NOT_EQUAL (int)
Opcode
PARSEKIT_ZEND_IS_NOT_IDENTICAL (int)
Opcode
PARSEKIT_ZEND_IS_SMALLER (int)
Opcode
PARSEKIT_ZEND_IS_SMALLER_OR_EQUAL (int)
Opcode
PARSEKIT_ZEND_JMP (int)
Opcode
PARSEKIT_ZEND_JMPNZ (int)
Opcode
PARSEKIT_ZEND_JMPNZ_EX (int)
Opcode
PARSEKIT_ZEND_JMPZ (int)
Opcode
PARSEKIT_ZEND_JMPZNZ (int)
Opcode
PARSEKIT_ZEND_JMPZ_EX (int)
Opcode
PARSEKIT_ZEND_JMP_NO_CTOR (int)
Opcode
PARSEKIT_ZEND_MOD (int)
Opcode
PARSEKIT_ZEND_MUL (int)
Opcode
PARSEKIT_ZEND_NEW (int)
Opcode
PARSEKIT_ZEND_NOP (int)
Opcode
PARSEKIT_ZEND_OP_DATA (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_POST_DEC (int)
Opcode
PARSEKIT_ZEND_POST_DEC_OBJ (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_POST_INC (int)
Opcode
PARSEKIT_ZEND_POST_INC_OBJ (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_PRE_DEC (int)
Opcode
PARSEKIT_ZEND_PRE_DEC_OBJ (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_PRE_INC (int)
Opcode
PARSEKIT_ZEND_PRE_INC_OBJ (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_PRINT (int)
Opcode
PARSEKIT_ZEND_QM_ASSIGN (int)
Opcode
PARSEKIT_ZEND_RAISE_ABSTRACT_ERROR (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_RECV (int)
Opcode
PARSEKIT_ZEND_RECV_INIT (int)
Opcode
PARSEKIT_ZEND_RETURN (int)
Opcode
PARSEKIT_ZEND_SEND_REF (int)
Opcode
PARSEKIT_ZEND_SEND_VAL (int)
Opcode
PARSEKIT_ZEND_SEND_VAR (int)
Opcode
PARSEKIT_ZEND_SEND_VAR_NO_REF (int)
Opcode
PARSEKIT_ZEND_SL (int)
Opcode
PARSEKIT_ZEND_SR (int)
Opcode
PARSEKIT_ZEND_SUB (int)
Opcode
PARSEKIT_ZEND_SWITCH_FREE (int)
Opcode
PARSEKIT_ZEND_THROW (int) PHP >= 5.0.0
Opcode
PARSEKIT_ZEND_TICKS (int)
Opcode
PARSEKIT_ZEND_UNSET_DIM_OBJ (int)
Opcode
PARSEKIT_ZEND_UNSET_VAR (int)
Opcode
PARSEKIT_ZEND_VERIFY_ABSTRACT_CLASS (int) PHP >= 5.0.0
Opcode

资源类型
Parsekit 函数
Parsekit


Parsekit 函数

Table of Contents

  • parsekit_compile_file — Compile a PHP file and return the resulting op array
  • parsekit_compile_string — Compile a string of PHP code and return the resulting op array
  • parsekit_func_arginfo — Return information regarding function argument(s)
预定义常量
parsekit_compile_file
Parsekit


Compile a PHP file and return the resulting op array

Parsekit 函数
parsekit_compile_string
Parsekit 函数
PHP Manual

parsekit_compile_file

(PECL parsekit >= 0.2.0)

parsekit_compile_file — Compile a PHP file and return the resulting op array

说明

array parsekit_compile_file ( string $filename [, array &$errors [, int $options = PARSEKIT_QUIET ]] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

filename

A string containing the name of the file to compile. Similar to the argument to include.

errors

A 2D hash of errors (including fatal errors) encountered during compilation. Returned by reference.

options

One of either PARSEKIT_QUIET or PARSEKIT_SIMPLE. To produce varying degrees of verbosity in the returned output.

返回值

Returns a complex multi-layer array structure as detailed below.

范例

Example #1 parsekit_compile_file() example

<?php
var_dump(parsekit_compile_file('hello_world.php', $errors, PARSEKIT_SIMPLE));
?>

以上例程会输出：

array(5) {
  [0]=>
  string(37) "ZEND_ECHO UNUSED 'Hello World' UNUSED"
  [1]=>
  string(30) "ZEND_RETURN UNUSED NULL UNUSED"
  [2]=>
  string(42) "ZEND_HANDLE_EXCEPTION UNUSED UNUSED UNUSED"
  ["function_table"]=>
  NULL
  ["class_table"]=>
  NULL
}

参见

  • parsekit_compile_string() - Compile a string of PHP code and return the resulting op array

Parsekit 函数
parsekit_compile_string
Parsekit 函数


Compile a string of PHP code and return the resulting op array

parsekit_compile_file
parsekit_func_arginfo
Parsekit 函数
PHP Manual

parsekit_compile_string

(PECL parsekit >= 0.2.0)

parsekit_compile_string — Compile a string of PHP code and return the resulting op array

说明

array parsekit_compile_string ( string $phpcode [, array &$errors [, int $options = PARSEKIT_QUIET ]] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

phpcode

A string containing phpcode. Similar to the argument to eval().

errors

A 2D hash of errors (including fatal errors) encountered during compilation. Returned by reference.

options

One of either PARSEKIT_QUIET or PARSEKIT_SIMPLE. To produce varying degrees of verbosity in the returned output.

返回值

Returns a complex multi-layer array structure as detailed below.

范例

Example #1 parsekit_compile_string() example

<?php
  $ops = parsekit_compile_string('
echo "Foo\n";
', $errors, PARSEKIT_QUIET);

  var_dump($ops);
?>

以上例程会输出：

array(20) {
  ["type"]=>
  int(4)
  ["type_name"]=>
  string(14) "ZEND_EVAL_CODE"
  ["fn_flags"]=>
  int(0)
  ["num_args"]=>
  int(0)
  ["required_num_args"]=>
  int(0)
  ["pass_rest_by_reference"]=>
  bool(false)
  ["uses_this"]=>
  bool(false)
  ["line_start"]=>
  int(0)
  ["line_end"]=>
  int(0)
  ["return_reference"]=>
  bool(false)
  ["refcount"]=>
  int(1)
  ["last"]=>
  int(3)
  ["size"]=>
  int(3)
  ["T"]=>
  int(0)
  ["last_brk_cont"]=>
  int(0)
  ["current_brk_cont"]=>
  int(-1)
  ["backpatch_count"]=>
  int(0)
  ["done_pass_two"]=>
  bool(true)
  ["filename"]=>
  string(17) "Parsekit Compiler"
  ["opcodes"]=>
  array(3) {
    [8594800]=>
    array(5) {
      ["opcode"]=>
      int(40)
      ["opcode_name"]=>
      string(9) "ZEND_ECHO"
      ["flags"]=>
      int(768)
      ["op1"]=>
      array(3) {
        ["type"]=>
        int(1)
        ["type_name"]=>
        string(8) "IS_CONST"
        ["constant"]=>
        &string(4) "Foo
"
      }
      ["lineno"]=>
      int(2)
    }
    ["859484C"]=>
    array(6) {
      ["opcode"]=>
      int(62)
      ["opcode_name"]=>
      string(11) "ZEND_RETURN"
      ["flags"]=>
      int(16777984)
      ["op1"]=>
      array(3) {
        ["type"]=>
        int(1)
        ["type_name"]=>
        string(8) "IS_CONST"
        ["constant"]=>
        &NULL
      }
      ["extended_value"]=>
      int(0)
      ["lineno"]=>
      int(3)
    }
    [8594898]=>
    array(4) {
      ["opcode"]=>
      int(149)
      ["opcode_name"]=>
      string(21) "ZEND_HANDLE_EXCEPTION"
      ["flags"]=>
      int(0)
      ["lineno"]=>
      int(3)
    }
  }
}

参见

  • parsekit_compile_file() - Compile a PHP file and return the resulting op array

parsekit_compile_file
parsekit_func_arginfo
Parsekit 函数


Return information regarding function argument(s)

parsekit_compile_string
SPL
Parsekit 函数
PHP Manual

parsekit_func_arginfo

(PECL parsekit >= 0.3.0)

parsekit_func_arginfo — Return information regarding function argument(s)

说明

array parsekit_func_arginfo ( mixed $function )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

function

A string describing a function, or an array describing a class/method.

返回值

Returns an array containing argument information.

范例

Example #1 parsekit_func_arginfo() example

<?php
function foo($bar, stdClass $baz, &$bomb, $bling = false) {
}

var_dump(parsekit_func_arginfo('foo'));
?>

以上例程会输出：

array(4) {
  [0]=>
  array(3) {
    ["name"]=>
    string(3) "bar"
    ["allow_null"]=>
    bool(true)
    ["pass_by_reference"]=>
    bool(false)
  }
  [1]=>
  array(4) {
    ["name"]=>
    string(3) "baz"
    ["class_name"]=>
    string(8) "stdClass"
    ["allow_null"]=>
    bool(false)
    ["pass_by_reference"]=>
    bool(false)
  }
  [2]=>
  array(3) {
    ["name"]=>
    string(4) "bomb"
    ["allow_null"]=>
    bool(true)
    ["pass_by_reference"]=>
    bool(true)
  }
  [3]=>
  array(3) {
    ["name"]=>
    string(5) "bling"
    ["allow_null"]=>
    bool(true)
    ["pass_by_reference"]=>
    bool(false)
  }
}

parsekit_compile_string
SPL
Parsekit 函数


PHP标准库 (SPL)

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 数据结构
    • SplDoublyLinkedList — The SplDoublyLinkedList class
    • SplStack — The SplStack class
    • SplQueue — The SplQueue class
    • SplHeap — The SplHeap class
    • SplMaxHeap — The SplMaxHeap class
    • SplMinHeap — The SplMinHeap class
    • SplPriorityQueue — The SplPriorityQueue class
    • SplFixedArray — The SplFixedArray class
    • SplObjectStorage — The SplObjectStorage class
  • 迭代器
    • AppendIterator — The AppendIterator class
    • ArrayIterator — The ArrayIterator class
    • CachingIterator — The CachingIterator class
    • CallbackFilterIterator — The CallbackFilterIterator class
    • DirectoryIterator — The DirectoryIterator class
    • EmptyIterator — The EmptyIterator class
    • FilesystemIterator — The FilesystemIterator class
    • FilterIterator — The FilterIterator class
    • GlobIterator — The GlobIterator class
    • InfiniteIterator — The InfiniteIterator class
    • IteratorIterator — The IteratorIterator class
    • LimitIterator — The LimitIterator class
    • MultipleIterator — The MultipleIterator class
    • NoRewindIterator — The NoRewindIterator class
    • ParentIterator — The ParentIterator class
    • RecursiveArrayIterator — The RecursiveArrayIterator class
    • RecursiveCachingIterator — The RecursiveCachingIterator class
    • RecursiveCallbackFilterIterator — The RecursiveCallbackFilterIterator class
    • RecursiveDirectoryIterator — The RecursiveDirectoryIterator class
    • RecursiveFilterIterator — The RecursiveFilterIterator class
    • RecursiveIteratorIterator — The RecursiveIteratorIterator class
    • RecursiveRegexIterator — The RecursiveRegexIterator class
    • RecursiveTreeIterator — The RecursiveTreeIterator class
    • RegexIterator — The RegexIterator class
  • 接口
    • Countable — The Countable interface
    • OuterIterator — The OuterIterator interface
    • RecursiveIterator — The RecursiveIterator interface
    • SeekableIterator — The SeekableIterator interface
  • 异常
    • BadFunctionCallException — The BadFunctionCallException class
    • BadMethodCallException — The BadMethodCallException class
    • DomainException — The DomainException class
    • InvalidArgumentException — The InvalidArgumentException class
    • LengthException — The LengthException class
    • LogicException — The LogicException class
    • OutOfBoundsException — The OutOfBoundsException class
    • OutOfRangeException — The OutOfRangeException class
    • OverflowException — The OverflowException class
    • RangeException — The RangeException class
    • RuntimeException — The RuntimeException class
    • UnderflowException — The UnderflowException class
    • UnexpectedValueException — The UnexpectedValueException class
  • SPL 函数
    • class_implements — 返回指定的类实现的所有接口。
    • class_parents — 返回指定类的父类。
    • class_uses — Return the traits used by the given class
    • iterator_apply — 为迭代器中每个元素调用一个用户自定义函数
    • iterator_count — 计算迭代器中元素的个数
    • iterator_to_array — 将迭代器中的元素拷贝到数组
    • spl_autoload_call — 尝试调用所有已注册的__autoload()函数来装载请求类
    • spl_autoload_extensions — 注册并返回spl_autoload函数使用的默认文件扩展名。
    • spl_autoload_functions — 返回所有已注册的__autoload()函数。
    • spl_autoload_register — 注册给定的函数作为 __autoload 的实现
    • spl_autoload_unregister — 注销已注册的__autoload()函数
    • spl_autoload — __autoload()函数的默认实现
    • spl_classes — 返回所有可用的SPL类
    • spl_object_hash — 返回指定对象的hash id
  • 文件处理
    • SplFileInfo — The SplFileInfo class
    • SplFileObject — The SplFileObject class
    • SplTempFileObject — The SplTempFileObject class
  • 各种类及接口
    • ArrayObject — The ArrayObject class
    • SplObserver — The SplObserver interface
    • SplSubject — The SplSubject interface
parsekit_func_arginfo
简介
其它基本扩展


简介

SPL是用于解决典型问题(standard problems)的一组接口与类的集合。

Note:

更详细的SPL文档请参考 这里.

SPL
安装／配置
SPL


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
SPL


安装

此扩展只能在php 5.0以后使用

Note:

此扩展从PHP 5.3.0 不再被关闭,会一直有效.成为php内核组件一部份

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

Warning

SPL uses class constants since PHP 5.1. Prior releases use global constants in the form RIT_LEAVES_ONLY.

资源类型
数据结构
SPL


数据结构

Table of Contents

  • SplDoublyLinkedList
  • SplStack
  • SplQueue
  • SplHeap
  • SplMaxHeap
  • SplMinHeap
  • SplPriorityQueue
  • SplFixedArray
  • SplObjectStorage

SPL提供了一组标准数据结构. They are grouped here by their underlying implementation which usually defines their general field of application.

双向链表

A Doubly Linked List (DLL) is a list of nodes linked in both directions to each others. Iterator's operations, access to both ends, addition or removal of nodes have a cost of O(1) when the underlying structure is a DLL. It hence provides a decent implementation for stacks and queues.

  • SplDoublyLinkedList
    • SplStack
    • SplQueue

堆

Heaps are tree-like structures that follow the heap-property: each node is greater than or equal to its children, when compared using the implemented compare method which is global to the heap.

  • SplHeap
    • SplMaxHeap
    • SplMinHeap
  • SplPriorityQueue

阵列

Arrays are structures that store the data in a continuous way, accessible via indexes. Don't confuse them with PHP arrays: PHP arrays are in fact implemented as ordered hashtables.

  • SplFixedArray

映射

A map is a datastructure holding key-value pairs. PHP arrays can be seen as maps from integers/strings to values. SPL provides a map from objects to data. This map can also be used as an object set.

  • SplObjectStorage
预定义常量
SplDoublyLinkedList
SPL


The SplDoublyLinkedList class

(PHP 5 >= 5.3.0, PHP 7)

简介

The SplDoublyLinkedList class provides the main functionalities of a doubly linked list.

类摘要

SplDoublyLinkedList implements Iterator , ArrayAccess , Countable {
/* 方法 */
public __construct ( void )
public void add ( mixed $index , mixed $newval )
public mixed bottom ( void )
public int count ( void )
public mixed current ( void )
public int getIteratorMode ( void )
public bool isEmpty ( void )
public mixed key ( void )
public void next ( void )
public bool offsetExists ( mixed $index )
public mixed offsetGet ( mixed $index )
public void offsetSet ( mixed $index , mixed $newval )
public void offsetUnset ( mixed $index )
public mixed pop ( void )
public void prev ( void )
public void push ( mixed $value )
public void rewind ( void )
public string serialize ( void )
public void setIteratorMode ( int $mode )
public mixed shift ( void )
public mixed top ( void )
public void unserialize ( string $serialized )
public void unshift ( mixed $value )
public bool valid ( void )
}

Table of Contents

  • SplDoublyLinkedList::add — Add/insert a new value at the specified index
  • SplDoublyLinkedList::bottom — Peeks at the node from the beginning of the doubly linked list
  • SplDoublyLinkedList::__construct — Constructs a new doubly linked list
  • SplDoublyLinkedList::count — Counts the number of elements in the doubly linked list.
  • SplDoublyLinkedList::current — Return current array entry
  • SplDoublyLinkedList::getIteratorMode — Returns the mode of iteration
  • SplDoublyLinkedList::isEmpty — Checks whether the doubly linked list is empty.
  • SplDoublyLinkedList::key — Return current node index
  • SplDoublyLinkedList::next — Move to next entry
  • SplDoublyLinkedList::offsetExists — Returns whether the requested $index exists
  • SplDoublyLinkedList::offsetGet — Returns the value at the specified $index
  • SplDoublyLinkedList::offsetSet — Sets the value at the specified $index to $newval
  • SplDoublyLinkedList::offsetUnset — Unsets the value at the specified $index
  • SplDoublyLinkedList::pop — Pops a node from the end of the doubly linked list
  • SplDoublyLinkedList::prev — Move to previous entry
  • SplDoublyLinkedList::push — Pushes an element at the end of the doubly linked list
  • SplDoublyLinkedList::rewind — Rewind iterator back to the start
  • SplDoublyLinkedList::serialize — Serializes the storage
  • SplDoublyLinkedList::setIteratorMode — Sets the mode of iteration
  • SplDoublyLinkedList::shift — Shifts a node from the beginning of the doubly linked list
  • SplDoublyLinkedList::top — Peeks at the node from the end of the doubly linked list
  • SplDoublyLinkedList::unserialize — Unserializes the storage
  • SplDoublyLinkedList::unshift — Prepends the doubly linked list with an element
  • SplDoublyLinkedList::valid — Check whether the doubly linked list contains more nodes
数据结构
SplDoublyLinkedList::add
数据结构


Add/insert a new value at the specified index

SplDoublyLinkedList
SplDoublyLinkedList::bottom
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::add

(PHP 5 >= 5.5.0, PHP 7)

SplDoublyLinkedList::add — Add/insert a new value at the specified index

说明

public void SplDoublyLinkedList::add ( mixed $index , mixed $newval )

Insert the value newval at the specified index, shuffling the previous value at that index (and all subsequent values) up through the list.

参数

index

The index where the new value is to be inserted.

newval

The new value for the index.

返回值

没有返回值。

错误／异常

Throws OutOfRangeException when index is out of bounds or when index cannot be parsed as an integer.

SplDoublyLinkedList
SplDoublyLinkedList::bottom
SplDoublyLinkedList


Peeks at the node from the beginning of the doubly linked list

SplDoublyLinkedList::add
SplDoublyLinkedList::__construct
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::bottom

(PHP 5 >= 5.3.0, PHP 7)

SplDoublyLinkedList::bottom — Peeks at the node from the beginning of the doubly linked list

说明

public mixed SplDoublyLinkedList::bottom ( void )

参数

此函数没有参数。

返回值

The value of the first node.

错误／异常

Throws RuntimeException when the data-structure is empty.

SplDoublyLinkedList::add
SplDoublyLinkedList::__construct
SplDoublyLinkedList


Constructs a new doubly linked list

SplDoublyLinkedList::bottom
SplDoublyLinkedList::count
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::__construct

(PHP 5 >= 5.3.0, PHP 7)

SplDoublyLinkedList::__construct — Constructs a new doubly linked list

说明

public SplDoublyLinkedList::__construct ( void )

This constructs a new empty doubly linked list.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 SplDoublyLinkedList::__construct() example

<?php
$dll = new SplDoublyLinkedList();

$dll->push(2);
$dll->push(3);
$dll->unshift(5);

var_dump($dll);
?>

以上例程会输出：

object(SplDoublyLinkedList)#1 (2) {
  ["flags":"SplDoublyLinkedList":private]=>
  int(0)
  ["dllist":"SplDoublyLinkedList":private]=>
  array(3) {
    [0]=>
    int(5)
    [1]=>
    int(2)
    [2]=>
    int(3)
  }
}

SplDoublyLinkedList::bottom
SplDoublyLinkedList::count
SplDoublyLinkedList


Counts the number of elements in the doubly linked list.

SplDoublyLinkedList::__construct
SplDoublyLinkedList::current
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::count

(PHP 5 >= 5.3.0, PHP 7)

SplDoublyLinkedList::count — Counts the number of elements in the doubly linked list.

说明

public int SplDoublyLinkedList::count ( void )

参数

此函数没有参数。

返回值

Returns the number of elements in the doubly linked list.

SplDoublyLinkedList::__construct
SplDoublyLinkedList::current
SplDoublyLinkedList


Return current array entry

SplDoublyLinkedList::count
SplDoublyLinkedList::getIteratorMode
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::current

(PHP 5 >= 5.3.0, PHP 7)

SplDoublyLinkedList::current — Return current array entry

说明

public mixed SplDoublyLinkedList::current ( void )

Get the current doubly linked list node.

参数

此函数没有参数。

返回值

The current node value.

SplDoublyLinkedList::count
SplDoublyLinkedList::getIteratorMode
SplDoublyLinkedList


Returns the mode of iteration

SplDoublyLinkedList::current
SplDoublyLinkedList::isEmpty
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::getIteratorMode

(PHP 5 >= 5.3.0, PHP 7)

SplDoublyLinkedList::getIteratorMode — Returns the mode of iteration

说明

public int SplDoublyLinkedList::getIteratorMode ( void )

参数

此函数没有参数。

返回值

Returns the different modes and flags that affect the iteration.

SplDoublyLinkedList::current
SplDoublyLinkedList::isEmpty
SplDoublyLinkedList


Checks whether the doubly linked list is empty.

SplDoublyLinkedList::getIteratorMode
SplDoublyLinkedList::key
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::isEmpty

(PHP 5 >= 5.3.0, PHP 7)

SplDoublyLinkedList::isEmpty — Checks whether the doubly linked list is empty.

说明

public bool SplDoublyLinkedList::isEmpty ( void )

参数

此函数没有参数。

返回值

Returns whether the doubly linked list is empty.

SplDoublyLinkedList::getIteratorMode
SplDoublyLinkedList::key
SplDoublyLinkedList


Return current node index

SplDoublyLinkedList::isEmpty
SplDoublyLinkedList::next
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::key

(PHP 5 >= 5.3.0, PHP 7)

SplDoublyLinkedList::key — Return current node index

说明

public mixed SplDoublyLinkedList::key ( void )

This function returns the current node index

参数

此函数没有参数。

返回值

The current node index.

SplDoublyLinkedList::isEmpty
SplDoublyLinkedList::next
SplDoublyLinkedList


Move to next entry

SplDoublyLinkedList::key
SplDoublyLinkedList::offsetExists
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::next

(PHP 5 >= 5.3.0, PHP 7)

SplDoublyLinkedList::next — Move to next entry

说明

public void SplDoublyLinkedList::next ( void )

Move the iterator to the next node.

参数

此函数没有参数。

返回值

没有返回值。

SplDoublyLinkedList::key
SplDoublyLinkedList::offsetExists
SplDoublyLinkedList


Returns whether the requested $index exists

SplDoublyLinkedList::next
SplDoublyLinkedList::offsetGet
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::offsetExists

(PHP 5 >= 5.3.0, PHP 7)

SplDoublyLinkedList::offsetExists — Returns whether the requested $index exists

说明

public bool SplDoublyLinkedList::offsetExists ( mixed $index )

参数

index

The index being checked.

返回值

TRUE if the requested index exists, otherwise FALSE

SplDoublyLinkedList::next
SplDoublyLinkedList::offsetGet
SplDoublyLinkedList


Returns the value at the specified $index

SplDoublyLinkedList::offsetExists
SplDoublyLinkedList::offsetSet
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::offsetGet

(PHP 5 >= 5.3.0, PHP 7)

SplDoublyLinkedList::offsetGet — Returns the value at the specified $index

说明

public mixed SplDoublyLinkedList::offsetGet ( mixed $index )

参数

index

The index with the value.

返回值

The value at the specified index.

错误／异常

Throws OutOfRangeException when index is out of bounds or when index cannot be parsed as an integer.

SplDoublyLinkedList::offsetExists
SplDoublyLinkedList::offsetSet
SplDoublyLinkedList


Sets the value at the specified $index to $newval

SplDoublyLinkedList::offsetGet
SplDoublyLinkedList::offsetUnset
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::offsetSet

(PHP 5 >= 5.3.0, PHP 7)

SplDoublyLinkedList::offsetSet — Sets the value at the specified $index to $newval

说明

public void SplDoublyLinkedList::offsetSet ( mixed $index , mixed $newval )

Sets the value at the specified index to newval.

参数

index

The index being set.

newval

The new value for the index.

返回值

没有返回值。

错误／异常

Throws OutOfRangeException when index is out of bounds or when index cannot be parsed as an integer.

SplDoublyLinkedList::offsetGet
SplDoublyLinkedList::offsetUnset
SplDoublyLinkedList


Unsets the value at the specified $index

SplDoublyLinkedList::offsetSet
SplDoublyLinkedList::pop
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::offsetUnset

(PHP 5 >= 5.3.0, PHP 7)

SplDoublyLinkedList::offsetUnset — Unsets the value at the specified $index

说明

public void SplDoublyLinkedList::offsetUnset ( mixed $index )

Unsets the value at the specified index.

参数

index

The index being unset.

返回值

没有返回值。

错误／异常

Throws OutOfRangeException when index is out of bounds or when index cannot be parsed as an integer.

SplDoublyLinkedList::offsetSet
SplDoublyLinkedList::pop
SplDoublyLinkedList


Pops a node from the end of the doubly linked list

SplDoublyLinkedList::offsetUnset
SplDoublyLinkedList::prev
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::pop

(PHP 5 >= 5.3.0, PHP 7)

SplDoublyLinkedList::pop — Pops a node from the end of the doubly linked list

说明

public mixed SplDoublyLinkedList::pop ( void )

参数

此函数没有参数。

返回值

The value of the popped node.

错误／异常

Throws RuntimeException when the data-structure is empty.

SplDoublyLinkedList::offsetUnset
SplDoublyLinkedList::prev
SplDoublyLinkedList


Move to previous entry

SplDoublyLinkedList::pop
SplDoublyLinkedList::push
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::prev

(PHP 5 >= 5.3.0, PHP 7)

SplDoublyLinkedList::prev — Move to previous entry

说明

public void SplDoublyLinkedList::prev ( void )

Move the iterator to the previous node.

参数

此函数没有参数。

返回值

没有返回值。

SplDoublyLinkedList::pop
SplDoublyLinkedList::push
SplDoublyLinkedList


Pushes an element at the end of the doubly linked list

SplDoublyLinkedList::prev
SplDoublyLinkedList::rewind
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::push

(PHP 5 >= 5.3.0, PHP 7)

SplDoublyLinkedList::push — Pushes an element at the end of the doubly linked list

说明

public void SplDoublyLinkedList::push ( mixed $value )

Pushes value at the end of the doubly linked list.

参数

value

The value to push.

返回值

没有返回值。

SplDoublyLinkedList::prev
SplDoublyLinkedList::rewind
SplDoublyLinkedList


Rewind iterator back to the start

SplDoublyLinkedList::push
SplDoublyLinkedList::serialize
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::rewind

(PHP 5 >= 5.3.0, PHP 7)

SplDoublyLinkedList::rewind — Rewind iterator back to the start

说明

public void SplDoublyLinkedList::rewind ( void )

This rewinds the iterator to the beginning.

参数

此函数没有参数。

返回值

没有返回值。

SplDoublyLinkedList::push
SplDoublyLinkedList::serialize
SplDoublyLinkedList


Serializes the storage

SplDoublyLinkedList::rewind
SplDoublyLinkedList::setIteratorMode
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::serialize

(PHP 5 >= 5.4.0, PHP 7)

SplDoublyLinkedList::serialize — Serializes the storage

说明

public string SplDoublyLinkedList::serialize ( void )

Serializes the storage.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The serialized string.

参见

  • SplDoublyLinkedList::unserialize() - Unserializes the storage

SplDoublyLinkedList::rewind
SplDoublyLinkedList::setIteratorMode
SplDoublyLinkedList


Sets the mode of iteration

SplDoublyLinkedList::serialize
SplDoublyLinkedList::shift
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::setIteratorMode

(PHP 5 >= 5.3.0, PHP 7)

SplDoublyLinkedList::setIteratorMode — Sets the mode of iteration

说明

public void SplDoublyLinkedList::setIteratorMode ( int $mode )

参数

mode

There are two orthogonal sets of modes that can be set:

  • The direction of the iteration (either one or the other):
    • SplDoublyLinkedList::IT_MODE_LIFO (Stack style)
    • SplDoublyLinkedList::IT_MODE_FIFO (Queue style)
  • The behavior of the iterator (either one or the other):
    • SplDoublyLinkedList::IT_MODE_DELETE (Elements are deleted by the iterator)
    • SplDoublyLinkedList::IT_MODE_KEEP (Elements are traversed by the iterator)

The default mode is: SplDoublyLinkedList::IT_MODE_FIFO | SplDoublyLinkedList::IT_MODE_KEEP

返回值

没有返回值。

SplDoublyLinkedList::serialize
SplDoublyLinkedList::shift
SplDoublyLinkedList


Shifts a node from the beginning of the doubly linked list

SplDoublyLinkedList::setIteratorMode
SplDoublyLinkedList::top
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::shift

(PHP 5 >= 5.3.0, PHP 7)

SplDoublyLinkedList::shift — Shifts a node from the beginning of the doubly linked list

说明

public mixed SplDoublyLinkedList::shift ( void )

参数

此函数没有参数。

返回值

The value of the shifted node.

错误／异常

Throws RuntimeException when the data-structure is empty.

SplDoublyLinkedList::setIteratorMode
SplDoublyLinkedList::top
SplDoublyLinkedList


Peeks at the node from the end of the doubly linked list

SplDoublyLinkedList::shift
SplDoublyLinkedList::unserialize
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::top

(PHP 5 >= 5.3.0, PHP 7)

SplDoublyLinkedList::top — Peeks at the node from the end of the doubly linked list

说明

public mixed SplDoublyLinkedList::top ( void )

参数

此函数没有参数。

返回值

The value of the last node.

错误／异常

Throws RuntimeException when the data-structure is empty.

SplDoublyLinkedList::shift
SplDoublyLinkedList::unserialize
SplDoublyLinkedList


Unserializes the storage

SplDoublyLinkedList::top
SplDoublyLinkedList::unshift
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::unserialize

(PHP 5 >= 5.4.0, PHP 7)

SplDoublyLinkedList::unserialize — Unserializes the storage

说明

public void SplDoublyLinkedList::unserialize ( string $serialized )

Unserializes the storage, from SplDoublyLinkedList::serialize().

Warning

本函数还未编写文档，仅有参数列表。

参数

serialized

The serialized string.

返回值

没有返回值。

参见

  • SplDoublyLinkedList::serialize() - Serializes the storage

SplDoublyLinkedList::top
SplDoublyLinkedList::unshift
SplDoublyLinkedList


Prepends the doubly linked list with an element

SplDoublyLinkedList::unserialize
SplDoublyLinkedList::valid
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::unshift

(PHP 5 >= 5.3.0, PHP 7)

SplDoublyLinkedList::unshift — Prepends the doubly linked list with an element

说明

public void SplDoublyLinkedList::unshift ( mixed $value )

Prepends value at the beginning of the doubly linked list.

参数

value

The value to unshift.

返回值

没有返回值。

SplDoublyLinkedList::unserialize
SplDoublyLinkedList::valid
SplDoublyLinkedList


Check whether the doubly linked list contains more nodes

SplDoublyLinkedList::unshift
SplStack
SplDoublyLinkedList
PHP Manual

SplDoublyLinkedList::valid

(PHP 5 >= 5.3.0, PHP 7)

SplDoublyLinkedList::valid — Check whether the doubly linked list contains more nodes

说明

public bool SplDoublyLinkedList::valid ( void )

Checks if the doubly linked list contains any more nodes.

参数

此函数没有参数。

返回值

Returns TRUE if the doubly linked list contains any more nodes, FALSE otherwise.

SplDoublyLinkedList::unshift
SplStack
SplDoublyLinkedList


The SplStack class

(PHP 5 >= 5.3.0, PHP 7)

简介

SplStack类通过使用一个双向链表来提供栈的主要功能。

类摘要

SplStack extends SplDoublyLinkedList implements Iterator , ArrayAccess , Countable {
/* 方法 */
__construct ( void )
void setIteratorMode ( int $mode )
/* 继承的方法 */
public void SplDoublyLinkedList::add ( mixed $index , mixed $newval )
public mixed SplDoublyLinkedList::bottom ( void )
public int SplDoublyLinkedList::count ( void )
public mixed SplDoublyLinkedList::current ( void )
public int SplDoublyLinkedList::getIteratorMode ( void )
public bool SplDoublyLinkedList::isEmpty ( void )
public mixed SplDoublyLinkedList::key ( void )
public void SplDoublyLinkedList::next ( void )
public bool SplDoublyLinkedList::offsetExists ( mixed $index )
public mixed SplDoublyLinkedList::offsetGet ( mixed $index )
public void SplDoublyLinkedList::offsetSet ( mixed $index , mixed $newval )
public void SplDoublyLinkedList::offsetUnset ( mixed $index )
public mixed SplDoublyLinkedList::pop ( void )
public void SplDoublyLinkedList::prev ( void )
public void SplDoublyLinkedList::push ( mixed $value )
public void SplDoublyLinkedList::rewind ( void )
public string SplDoublyLinkedList::serialize ( void )
public void SplDoublyLinkedList::setIteratorMode ( int $mode )
public mixed SplDoublyLinkedList::shift ( void )
public mixed SplDoublyLinkedList::top ( void )
public void SplDoublyLinkedList::unserialize ( string $serialized )
public void SplDoublyLinkedList::unshift ( mixed $value )
public bool SplDoublyLinkedList::valid ( void )
}

Table of Contents

  • SplStack::__construct — Constructs a new stack implemented using a doubly linked list
  • SplStack::setIteratorMode — Sets the mode of iteration
SplDoublyLinkedList::valid
SplStack::__construct
数据结构


Constructs a new stack implemented using a doubly linked list

SplStack
SplStack::setIteratorMode
SplStack
PHP Manual

SplStack::__construct

(PHP 5 >= 5.3.0, PHP 7)

SplStack::__construct — Constructs a new stack implemented using a doubly linked list

说明

SplStack::__construct ( void )

This constructs a new empty stack.

Note:

This method automatically sets the iterator mode to SplDoublyLinkedList::IT_MODE_LIFO.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 SplStack::__construct() example

<?php
$q = new SplStack();

$q[] = 1;
$q[] = 2;
$q[] = 3;

foreach ($q as $elem)  {
 echo $elem."\n";
}
?>

以上例程会输出：

3
2
1

SplStack
SplStack::setIteratorMode
SplStack


Sets the mode of iteration

SplStack::__construct
SplQueue
SplStack
PHP Manual

SplStack::setIteratorMode

(PHP 5 >= 5.3.0, PHP 7)

SplStack::setIteratorMode — Sets the mode of iteration

说明

void SplStack::setIteratorMode ( int $mode )

参数

mode

There is only one iteration parameter you can modify.

  • The behavior of the iterator (either one or the other):
    • SplDoublyLinkedList::IT_MODE_DELETE (Elements are deleted by the iterator)
    • SplDoublyLinkedList::IT_MODE_KEEP (Elements are traversed by the iterator)

The default mode is 0x2 : SplDoublyLinkedList::IT_MODE_LIFO | SplDoublyLinkedList::IT_MODE_KEEP

Warning

The direction of iteration can no longer be changed for SplStacks. Trying to do so will result in a RuntimeException being thrown.

返回值

没有返回值。

SplStack::__construct
SplQueue
SplStack


The SplQueue class

(PHP 5 >= 5.3.0, PHP 7)

简介

The SplQueue class provides the main functionalities of a queue implemented using a doubly linked list.

类摘要

SplQueue extends SplDoublyLinkedList implements Iterator , ArrayAccess , Countable {
/* 方法 */
__construct ( void )
mixed dequeue ( void )
void enqueue ( mixed $value )
void setIteratorMode ( int $mode )
/* 继承的方法 */
public void SplDoublyLinkedList::add ( mixed $index , mixed $newval )
public mixed SplDoublyLinkedList::bottom ( void )
public int SplDoublyLinkedList::count ( void )
public mixed SplDoublyLinkedList::current ( void )
public int SplDoublyLinkedList::getIteratorMode ( void )
public bool SplDoublyLinkedList::isEmpty ( void )
public mixed SplDoublyLinkedList::key ( void )
public void SplDoublyLinkedList::next ( void )
public bool SplDoublyLinkedList::offsetExists ( mixed $index )
public mixed SplDoublyLinkedList::offsetGet ( mixed $index )
public void SplDoublyLinkedList::offsetSet ( mixed $index , mixed $newval )
public void SplDoublyLinkedList::offsetUnset ( mixed $index )
public mixed SplDoublyLinkedList::pop ( void )
public void SplDoublyLinkedList::prev ( void )
public void SplDoublyLinkedList::push ( mixed $value )
public void SplDoublyLinkedList::rewind ( void )
public string SplDoublyLinkedList::serialize ( void )
public void SplDoublyLinkedList::setIteratorMode ( int $mode )
public mixed SplDoublyLinkedList::shift ( void )
public mixed SplDoublyLinkedList::top ( void )
public void SplDoublyLinkedList::unserialize ( string $serialized )
public void SplDoublyLinkedList::unshift ( mixed $value )
public bool SplDoublyLinkedList::valid ( void )
}

Table of Contents

  • SplQueue::__construct — Constructs a new queue implemented using a doubly linked list
  • SplQueue::dequeue — Dequeues a node from the queue
  • SplQueue::enqueue — Adds an element to the queue.
  • SplQueue::setIteratorMode — Sets the mode of iteration
SplStack::setIteratorMode
SplQueue::__construct
数据结构


Constructs a new queue implemented using a doubly linked list

SplQueue
SplQueue::dequeue
SplQueue
PHP Manual

SplQueue::__construct

(PHP 5 >= 5.3.0, PHP 7)

SplQueue::__construct — Constructs a new queue implemented using a doubly linked list

说明

SplQueue::__construct ( void )

This constructs a new empty queue.

Note:

This method automatically sets the iterator mode to SplDoublyLinkedList::IT_MODE_FIFO.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 SplQueue::__construct() example

<?php
$q = new SplQueue();

$q[] = 1;
$q[] = 2;
$q[] = 3;

foreach ($q as $elem)  {
 echo $elem."\n";
}
?>

以上例程会输出：

1
2
3

Example #2 Efficiently handling tasks with SplQueue

<?php
$q = new SplQueue();
$q->setIteratorMode(SplQueue::IT_MODE_DELETE);

// ... enqueue some tasks on the queue ...

// process them
foreach ($q as $task) {
    // ... process $task ...

    // add new tasks on the queue
    $q[] = $newTask;
    // ...
}
?>

SplQueue
SplQueue::dequeue
SplQueue


Dequeues a node from the queue

SplQueue::__construct
SplQueue::enqueue
SplQueue
PHP Manual

SplQueue::dequeue

(PHP 5 >= 5.3.0, PHP 7)

SplQueue::dequeue — Dequeues a node from the queue

说明

mixed SplQueue::dequeue ( void )

Dequeues value from the top of the queue.

Note:

SplQueue::dequeue() is an alias of SplDoublyLinkedList::shift().

参数

此函数没有参数。

返回值

The value of the dequeued node.

SplQueue::__construct
SplQueue::enqueue
SplQueue


Adds an element to the queue.

SplQueue::dequeue
SplQueue::setIteratorMode
SplQueue
PHP Manual

SplQueue::enqueue

(PHP 5 >= 5.3.0, PHP 7)

SplQueue::enqueue — Adds an element to the queue.

说明

void SplQueue::enqueue ( mixed $value )

Enqueues value at the end of the queue.

Note:

SplQueue::enqueue() is an alias of SplDoublyLinkedList::push().

参数

value

The value to enqueue.

返回值

没有返回值。

SplQueue::dequeue
SplQueue::setIteratorMode
SplQueue


Sets the mode of iteration

SplQueue::enqueue
SplHeap
SplQueue
PHP Manual

SplQueue::setIteratorMode

(PHP 5 >= 5.3.0, PHP 7)

SplQueue::setIteratorMode — Sets the mode of iteration

说明

void SplQueue::setIteratorMode ( int $mode )

参数

mode

There is only one iteration parameter you can modify.

  • The behavior of the iterator (either one or the other):
    • SplDoublyLinkedList::IT_MODE_DELETE (Elements are deleted by the iterator)
    • SplDoublyLinkedList::IT_MODE_KEEP (Elements are traversed by the iterator)

The default mode is: SplDoublyLinkedList::IT_MODE_FIFO | SplDoublyLinkedList::IT_MODE_KEEP

Warning

The direction of iteration can not be changed for SplQueues, it is always SplDoublyLinkedList::IT_MODE_FIFO.

返回值

没有返回值。

错误／异常

Throws a RuntimeException on trying to change the direction of iteration by using SplDoublyLinkedList::IT_MODE_LIFO.

SplQueue::enqueue
SplHeap
SplQueue


The SplHeap class

(PHP 5 >= 5.3.0, PHP 7)

简介

The SplHeap class provides the main functionalities of a Heap.

类摘要

abstract SplHeap implements Iterator , Countable {
/* 方法 */
public __construct ( void )
abstract protected int compare ( mixed $value1 , mixed $value2 )
public int count ( void )
public mixed current ( void )
public mixed extract ( void )
public void insert ( mixed $value )
public bool isEmpty ( void )
public mixed key ( void )
public void next ( void )
public void recoverFromCorruption ( void )
public void rewind ( void )
public mixed top ( void )
public bool valid ( void )
}

Table of Contents

  • SplHeap::compare — Compare elements in order to place them correctly in the heap while sifting up.
  • SplHeap::__construct — Constructs a new empty heap
  • SplHeap::count — Counts the number of elements in the heap.
  • SplHeap::current — Return current node pointed by the iterator
  • SplHeap::extract — Extracts a node from top of the heap and sift up.
  • SplHeap::insert — Inserts an element in the heap by sifting it up.
  • SplHeap::isEmpty — Checks whether the heap is empty.
  • SplHeap::key — Return current node index
  • SplHeap::next — Move to the next node
  • SplHeap::recoverFromCorruption — Recover from the corrupted state and allow further actions on the heap.
  • SplHeap::rewind — Rewind iterator back to the start (no-op)
  • SplHeap::top — Peeks at the node from the top of the heap
  • SplHeap::valid — Check whether the heap contains more nodes
SplQueue::setIteratorMode
SplHeap::compare
数据结构


Compare elements in order to place them correctly in the heap while sifting up.

SplHeap
SplHeap::__construct
SplHeap
PHP Manual

SplHeap::compare

(PHP 5 >= 5.3.0, PHP 7)

SplHeap::compare — Compare elements in order to place them correctly in the heap while sifting up.

说明

abstract protected int SplHeap::compare ( mixed $value1 , mixed $value2 )

Compare value1 with value2.

Warning

Throwing exceptions in SplHeap::compare() can corrupt the Heap and place it in a blocked state. You can unblock it by calling SplHeap::recoverFromCorruption(). However, some elements might not be placed correctly and it may hence break the heap-property.

参数

value1

The value of the first node being compared.

value2

The value of the second node being compared.

返回值

Result of the comparison, positive integer if value1 is greater than value2, 0 if they are equal, negative integer otherwise.

Note:

Having multiple elements with the same value in a Heap is not recommended. They will end up in an arbitrary relative position.

SplHeap
SplHeap::__construct
SplHeap


Constructs a new empty heap

SplHeap::compare
SplHeap::count
SplHeap
PHP Manual

SplHeap::__construct

(PHP 5 >= 5.3.0, PHP 7)

SplHeap::__construct — Constructs a new empty heap

说明

public SplHeap::__construct ( void )

This constructs a new empty heap.

参数

此函数没有参数。

返回值

没有返回值。

SplHeap::compare
SplHeap::count
SplHeap


Counts the number of elements in the heap.

SplHeap::__construct
SplHeap::current
SplHeap
PHP Manual

SplHeap::count

(PHP 5 >= 5.3.0, PHP 7)

SplHeap::count — Counts the number of elements in the heap.

说明

public int SplHeap::count ( void )

参数

此函数没有参数。

返回值

Returns the number of elements in the heap.

SplHeap::__construct
SplHeap::current
SplHeap


Return current node pointed by the iterator

SplHeap::count
SplHeap::extract
SplHeap
PHP Manual

SplHeap::current

(PHP 5 >= 5.3.0, PHP 7)

SplHeap::current — Return current node pointed by the iterator

说明

public mixed SplHeap::current ( void )

Get the current datastructure node.

参数

此函数没有参数。

返回值

The current node value.

SplHeap::count
SplHeap::extract
SplHeap


Extracts a node from top of the heap and sift up.

SplHeap::current
SplHeap::insert
SplHeap
PHP Manual

SplHeap::extract

(PHP 5 >= 5.3.0, PHP 7)

SplHeap::extract — Extracts a node from top of the heap and sift up.

说明

public mixed SplHeap::extract ( void )

参数

此函数没有参数。

返回值

The value of the extracted node.

错误／异常

Throws RuntimeException when the data-structure is empty.

SplHeap::current
SplHeap::insert
SplHeap


Inserts an element in the heap by sifting it up.

SplHeap::extract
SplHeap::isEmpty
SplHeap
PHP Manual

SplHeap::insert

(PHP 5 >= 5.3.0, PHP 7)

SplHeap::insert — Inserts an element in the heap by sifting it up.

说明

public void SplHeap::insert ( mixed $value )

Insert value in the heap.

参数

value

The value to insert.

返回值

没有返回值。

SplHeap::extract
SplHeap::isEmpty
SplHeap


Checks whether the heap is empty.

SplHeap::insert
SplHeap::key
SplHeap
PHP Manual

SplHeap::isEmpty

(PHP 5 >= 5.3.0, PHP 7)

SplHeap::isEmpty — Checks whether the heap is empty.

说明

public bool SplHeap::isEmpty ( void )

参数

此函数没有参数。

返回值

Returns whether the heap is empty.

SplHeap::insert
SplHeap::key
SplHeap


Return current node index

SplHeap::isEmpty
SplHeap::next
SplHeap
PHP Manual

SplHeap::key

(PHP 5 >= 5.3.0, PHP 7)

SplHeap::key — Return current node index

说明

public mixed SplHeap::key ( void )

This function returns the current node index

参数

此函数没有参数。

返回值

The current node index.

SplHeap::isEmpty
SplHeap::next
SplHeap


Move to the next node

SplHeap::key
SplHeap::recoverFromCorruption
SplHeap
PHP Manual

SplHeap::next

(PHP 5 >= 5.3.0, PHP 7)

SplHeap::next — Move to the next node

说明

public void SplHeap::next ( void )

Move to the next node. This will delete the top node of the heap.

参数

此函数没有参数。

返回值

没有返回值。

SplHeap::key
SplHeap::recoverFromCorruption
SplHeap


Recover from the corrupted state and allow further actions on the heap.

SplHeap::next
SplHeap::rewind
SplHeap
PHP Manual

SplHeap::recoverFromCorruption

(PHP 5 >= 5.3.0, PHP 7)

SplHeap::recoverFromCorruption — Recover from the corrupted state and allow further actions on the heap.

说明

public void SplHeap::recoverFromCorruption ( void )

参数

此函数没有参数。

返回值

没有返回值。

SplHeap::next
SplHeap::rewind
SplHeap


Rewind iterator back to the start (no-op)

SplHeap::recoverFromCorruption
SplHeap::top
SplHeap
PHP Manual

SplHeap::rewind

(PHP 5 >= 5.3.0, PHP 7)

SplHeap::rewind — Rewind iterator back to the start (no-op)

说明

public void SplHeap::rewind ( void )

This rewinds the iterator to the beginning. This is a no-op for heaps as the iterator is virtual and in fact never moves from the top of the heap.

参数

此函数没有参数。

返回值

没有返回值。

SplHeap::recoverFromCorruption
SplHeap::top
SplHeap


Peeks at the node from the top of the heap

SplHeap::rewind
SplHeap::valid
SplHeap
PHP Manual

SplHeap::top

(PHP 5 >= 5.3.0, PHP 7)

SplHeap::top — Peeks at the node from the top of the heap

说明

public mixed SplHeap::top ( void )

参数

此函数没有参数。

返回值

The value of the node on the top.

错误／异常

Throws RuntimeException when the data-structure is empty.

SplHeap::rewind
SplHeap::valid
SplHeap


Check whether the heap contains more nodes

SplHeap::top
SplMaxHeap
SplHeap
PHP Manual

SplHeap::valid

(PHP 5 >= 5.3.0, PHP 7)

SplHeap::valid — Check whether the heap contains more nodes

说明

public bool SplHeap::valid ( void )

Checks if the heap contains any more nodes.

参数

此函数没有参数。

返回值

Returns TRUE if the heap contains any more nodes, FALSE otherwise.

SplHeap::top
SplMaxHeap
SplHeap


The SplMaxHeap class

(PHP 5 >= 5.3.0, PHP 7)

简介

The SplMaxHeap class provides the main functionalities of a heap, keeping the maximum on the top.

类摘要

SplMaxHeap extends SplHeap implements Iterator , Countable {
/* 方法 */
protected int compare ( mixed $value1 , mixed $value2 )
/* 继承的方法 */
abstract protected int SplHeap::compare ( mixed $value1 , mixed $value2 )
public int SplHeap::count ( void )
public mixed SplHeap::current ( void )
public mixed SplHeap::extract ( void )
public void SplHeap::insert ( mixed $value )
public bool SplHeap::isEmpty ( void )
public mixed SplHeap::key ( void )
public void SplHeap::next ( void )
public void SplHeap::recoverFromCorruption ( void )
public void SplHeap::rewind ( void )
public mixed SplHeap::top ( void )
public bool SplHeap::valid ( void )
}

Table of Contents

  • SplMaxHeap::compare — Compare elements in order to place them correctly in the heap while sifting up.
SplHeap::valid
SplMaxHeap::compare
数据结构


Compare elements in order to place them correctly in the heap while sifting up.

SplMaxHeap
SplMinHeap
SplMaxHeap
PHP Manual

SplMaxHeap::compare

(PHP 5 >= 5.3.0, PHP 7)

SplMaxHeap::compare — Compare elements in order to place them correctly in the heap while sifting up.

说明

protected int SplMaxHeap::compare ( mixed $value1 , mixed $value2 )

Compare value1 with value2.

参数

value1

The value of the first node being compared.

value2

The value of the second node being compared.

返回值

Result of the comparison, positive integer if value1 is greater than value2, 0 if they are equal, negative integer otherwise.

Note:

Having multiple elements with the same value in a Heap is not recommended. They will end up in an arbitrary relative position.

SplMaxHeap
SplMinHeap
SplMaxHeap


The SplMinHeap class

(PHP 5 >= 5.3.0, PHP 7)

简介

The SplMinHeap class provides the main functionalities of a heap, keeping the minimum on the top.

类摘要

SplMinHeap extends SplHeap implements Iterator , Countable {
/* 方法 */
protected int compare ( mixed $value1 , mixed $value2 )
/* 继承的方法 */
abstract protected int SplHeap::compare ( mixed $value1 , mixed $value2 )
public int SplHeap::count ( void )
public mixed SplHeap::current ( void )
public mixed SplHeap::extract ( void )
public void SplHeap::insert ( mixed $value )
public bool SplHeap::isEmpty ( void )
public mixed SplHeap::key ( void )
public void SplHeap::next ( void )
public void SplHeap::recoverFromCorruption ( void )
public void SplHeap::rewind ( void )
public mixed SplHeap::top ( void )
public bool SplHeap::valid ( void )
}

Table of Contents

  • SplMinHeap::compare — Compare elements in order to place them correctly in the heap while sifting up.
SplMaxHeap::compare
SplMinHeap::compare
数据结构


Compare elements in order to place them correctly in the heap while sifting up.

SplMinHeap
SplPriorityQueue
SplMinHeap
PHP Manual

SplMinHeap::compare

(PHP 5 >= 5.3.0, PHP 7)

SplMinHeap::compare — Compare elements in order to place them correctly in the heap while sifting up.

说明

protected int SplMinHeap::compare ( mixed $value1 , mixed $value2 )

Compare value1 with value2.

参数

value1

The value of the first node being compared.

value2

The value of the second node being compared.

返回值

Result of the comparison, positive integer if value1 is lower than value2, 0 if they are equal, negative integer otherwise.

Note:

Having multiple elements with the same value in a Heap is not recommended. They will end up in an arbitrary relative position.

SplMinHeap
SplPriorityQueue
SplMinHeap


The SplPriorityQueue class

(PHP 5 >= 5.3.0, PHP 7)

简介

The SplPriorityQueue class provides the main functionalities of a prioritized queue, implemented using a max heap.

类摘要

SplPriorityQueue implements Iterator , Countable {
/* 方法 */
public __construct ( void )
public int compare ( mixed $priority1 , mixed $priority2 )
public int count ( void )
public mixed current ( void )
public mixed extract ( void )
public void insert ( mixed $value , mixed $priority )
public bool isEmpty ( void )
public mixed key ( void )
public void next ( void )
public void recoverFromCorruption ( void )
public void rewind ( void )
public void setExtractFlags ( int $flags )
public mixed top ( void )
public bool valid ( void )
}

Table of Contents

  • SplPriorityQueue::compare — Compare priorities in order to place elements correctly in the heap while sifting up.
  • SplPriorityQueue::__construct — Constructs a new empty queue
  • SplPriorityQueue::count — Counts the number of elements in the queue.
  • SplPriorityQueue::current — Return current node pointed by the iterator
  • SplPriorityQueue::extract — Extracts a node from top of the heap and shift up.
  • SplPriorityQueue::insert — Inserts an element in the queue by sifting it up.
  • SplPriorityQueue::isEmpty — Checks whether the queue is empty.
  • SplPriorityQueue::key — Return current node index
  • SplPriorityQueue::next — Move to the next node
  • SplPriorityQueue::recoverFromCorruption — Recover from the corrupted state and allow further actions on the queue.
  • SplPriorityQueue::rewind — Rewind iterator back to the start (no-op)
  • SplPriorityQueue::setExtractFlags — Sets the mode of extraction
  • SplPriorityQueue::top — Peeks at the node from the top of the queue
  • SplPriorityQueue::valid — Check whether the queue contains more nodes
SplMinHeap::compare
SplPriorityQueue::compare
数据结构


Compare priorities in order to place elements correctly in the heap while sifting up.

SplPriorityQueue
SplPriorityQueue::__construct
SplPriorityQueue
PHP Manual

SplPriorityQueue::compare

(PHP 5 >= 5.3.0, PHP 7)

SplPriorityQueue::compare — Compare priorities in order to place elements correctly in the heap while sifting up.

说明

public int SplPriorityQueue::compare ( mixed $priority1 , mixed $priority2 )

Compare priority1 with priority2.

参数

priority1

The priority of the first node being compared.

priority2

The priority of the second node being compared.

返回值

Result of the comparison, positive integer if priority1 is greater than priority2, 0 if they are equal, negative integer otherwise.

Note:

Multiple elements with the same priority will get dequeued in no particular order.

SplPriorityQueue
SplPriorityQueue::__construct
SplPriorityQueue


Constructs a new empty queue

SplPriorityQueue::compare
SplPriorityQueue::count
SplPriorityQueue
PHP Manual

SplPriorityQueue::__construct

(PHP 5 >= 5.3.0, PHP 7)

SplPriorityQueue::__construct — Constructs a new empty queue

说明

public SplPriorityQueue::__construct ( void )

This constructs a new empty queue.

参数

此函数没有参数。

返回值

没有返回值。

SplPriorityQueue::compare
SplPriorityQueue::count
SplPriorityQueue


Counts the number of elements in the queue.

SplPriorityQueue::__construct
SplPriorityQueue::current
SplPriorityQueue
PHP Manual

SplPriorityQueue::count

(PHP 5 >= 5.3.0, PHP 7)

SplPriorityQueue::count — Counts the number of elements in the queue.

说明

public int SplPriorityQueue::count ( void )

参数

此函数没有参数。

返回值

Returns the number of elements in the queue.

SplPriorityQueue::__construct
SplPriorityQueue::current
SplPriorityQueue


Return current node pointed by the iterator

SplPriorityQueue::count
SplPriorityQueue::extract
SplPriorityQueue
PHP Manual

SplPriorityQueue::current

(PHP 5 >= 5.3.0, PHP 7)

SplPriorityQueue::current — Return current node pointed by the iterator

说明

public mixed SplPriorityQueue::current ( void )

Get the current datastructure node.

参数

此函数没有参数。

返回值

The value or priority (or both) of the current node, depending on the extract flag.

SplPriorityQueue::count
SplPriorityQueue::extract
SplPriorityQueue


Extracts a node from top of the heap and shift up.

SplPriorityQueue::current
SplPriorityQueue::insert
SplPriorityQueue
PHP Manual

SplPriorityQueue::extract

(PHP 5 >= 5.3.0, PHP 7)

SplPriorityQueue::extract — Extracts a node from top of the heap and shift up.

说明

public mixed SplPriorityQueue::extract ( void )

参数

此函数没有参数。

返回值

The value or priority (or both) of the extracted node, depending on the extract flag.

SplPriorityQueue::current
SplPriorityQueue::insert
SplPriorityQueue


Inserts an element in the queue by sifting it up.

SplPriorityQueue::extract
SplPriorityQueue::isEmpty
SplPriorityQueue
PHP Manual

SplPriorityQueue::insert

(PHP 5 >= 5.3.0, PHP 7)

SplPriorityQueue::insert — Inserts an element in the queue by sifting it up.

说明

public void SplPriorityQueue::insert ( mixed $value , mixed $priority )

Insert value with the priority priority in the queue.

参数

value

The value to insert.

priority

The associated priority.

返回值

没有返回值。

SplPriorityQueue::extract
SplPriorityQueue::isEmpty
SplPriorityQueue


Checks whether the queue is empty.

SplPriorityQueue::insert
SplPriorityQueue::key
SplPriorityQueue
PHP Manual

SplPriorityQueue::isEmpty

(PHP 5 >= 5.3.0, PHP 7)

SplPriorityQueue::isEmpty — Checks whether the queue is empty.

说明

public bool SplPriorityQueue::isEmpty ( void )

参数

此函数没有参数。

返回值

Returns whether the queue is empty.

SplPriorityQueue::insert
SplPriorityQueue::key
SplPriorityQueue


Return current node index

SplPriorityQueue::isEmpty
SplPriorityQueue::next
SplPriorityQueue
PHP Manual

SplPriorityQueue::key

(PHP 5 >= 5.3.0, PHP 7)

SplPriorityQueue::key — Return current node index

说明

public mixed SplPriorityQueue::key ( void )

This function returns the current node index

参数

此函数没有参数。

返回值

The current node index.

SplPriorityQueue::isEmpty
SplPriorityQueue::next
SplPriorityQueue


Move to the next node

SplPriorityQueue::key
SplPriorityQueue::recoverFromCorruption
SplPriorityQueue
PHP Manual

SplPriorityQueue::next

(PHP 5 >= 5.3.0, PHP 7)

SplPriorityQueue::next — Move to the next node

说明

public void SplPriorityQueue::next ( void )

Extracts the top node from the queue.

参数

此函数没有参数。

返回值

没有返回值。

SplPriorityQueue::key
SplPriorityQueue::recoverFromCorruption
SplPriorityQueue


Recover from the corrupted state and allow further actions on the queue.

SplPriorityQueue::next
SplPriorityQueue::rewind
SplPriorityQueue
PHP Manual

SplPriorityQueue::recoverFromCorruption

(PHP 5 >= 5.3.0, PHP 7)

SplPriorityQueue::recoverFromCorruption — Recover from the corrupted state and allow further actions on the queue.

说明

public void SplPriorityQueue::recoverFromCorruption ( void )

参数

此函数没有参数。

返回值

没有返回值。

SplPriorityQueue::next
SplPriorityQueue::rewind
SplPriorityQueue


Rewind iterator back to the start (no-op)

SplPriorityQueue::recoverFromCorruption
SplPriorityQueue::setExtractFlags
SplPriorityQueue
PHP Manual

SplPriorityQueue::rewind

(PHP 5 >= 5.3.0, PHP 7)

SplPriorityQueue::rewind — Rewind iterator back to the start (no-op)

说明

public void SplPriorityQueue::rewind ( void )

This rewinds the iterator to the beginning. This is a no-op for heaps as the iterator is virtual and in fact never moves from the top of the heap.

参数

此函数没有参数。

返回值

没有返回值。

SplPriorityQueue::recoverFromCorruption
SplPriorityQueue::setExtractFlags
SplPriorityQueue


Sets the mode of extraction

SplPriorityQueue::rewind
SplPriorityQueue::top
SplPriorityQueue
PHP Manual

SplPriorityQueue::setExtractFlags

(PHP 5 >= 5.3.0, PHP 7)

SplPriorityQueue::setExtractFlags — Sets the mode of extraction

说明

public void SplPriorityQueue::setExtractFlags ( int $flags )

参数

flags

Defines what is extracted by SplPriorityQueue::current(),
SplPriorityQueue::top() and
SplPriorityQueue::extract().

  • SplPriorityQueue::EXTR_DATA (0x00000001): Extract the data
  • SplPriorityQueue::EXTR_PRIORITY (0x00000002): Extract the priority
  • SplPriorityQueue::EXTR_BOTH (0x00000003): Extract an array containing both

The default mode is SplPriorityQueue::EXTR_DATA.

返回值

没有返回值。

SplPriorityQueue::rewind
SplPriorityQueue::top
SplPriorityQueue


Peeks at the node from the top of the queue

SplPriorityQueue::setExtractFlags
SplPriorityQueue::valid
SplPriorityQueue
PHP Manual

SplPriorityQueue::top

(PHP 5 >= 5.3.0, PHP 7)

SplPriorityQueue::top — Peeks at the node from the top of the queue

说明

public mixed SplPriorityQueue::top ( void )

参数

此函数没有参数。

返回值

The value or priority (or both) of the top node, depending on the extract flag.

SplPriorityQueue::setExtractFlags
SplPriorityQueue::valid
SplPriorityQueue


Check whether the queue contains more nodes

SplPriorityQueue::top
SplFixedArray
SplPriorityQueue
PHP Manual

SplPriorityQueue::valid

(PHP 5 >= 5.3.0, PHP 7)

SplPriorityQueue::valid — Check whether the queue contains more nodes

说明

public bool SplPriorityQueue::valid ( void )

Checks if the queue contains any more nodes.

参数

此函数没有参数。

返回值

Returns TRUE if the queue contains any more nodes, FALSE otherwise.

SplPriorityQueue::top
SplFixedArray
SplPriorityQueue


The SplFixedArray class

(PHP 5 >= 5.3.0, PHP 7)

简介

The SplFixedArray class provides the main functionalities of array. The main differences between a SplFixedArray and a normal PHP array is that the SplFixedArray is of fixed length and allows only integers within the range as indexes. The advantage is that it allows a faster array implementation.

类摘要

SplFixedArray implements Iterator , ArrayAccess , Countable {
/* 方法 */
public __construct ([ int $size = 0 ] )
public int count ( void )
public mixed current ( void )
public static SplFixedArray fromArray ( array $array [, bool $save_indexes = true ] )
public int getSize ( void )
public int key ( void )
public void next ( void )
public bool offsetExists ( int $index )
public mixed offsetGet ( int $index )
public void offsetSet ( int $index , mixed $newval )
public void offsetUnset ( int $index )
public void rewind ( void )
public int setSize ( int $size )
public array toArray ( void )
public bool valid ( void )
public void __wakeup ( void )
}

范例

Example #1 SplFixedArray usage example

<?php
// Initialize the array with a fixed length
$array = new SplFixedArray(5);

$array[1] = 2;
$array[4] = "foo";

var_dump($array[0]); // NULL
var_dump($array[1]); // int(2)

var_dump($array["4"]); // string(3) "foo"

// Increase the size of the array to 10
$array->setSize(10);

$array[9] = "asdf";

// Shrink the array to a size of 2
$array->setSize(2);

// The following lines throw a RuntimeException: Index invalid or out of range
try {
    var_dump($array["non-numeric"]);
} catch(RuntimeException $re) {
    echo "RuntimeException: ".$re->getMessage()."\n";
}

try {
    var_dump($array[-1]);
} catch(RuntimeException $re) {
    echo "RuntimeException: ".$re->getMessage()."\n";
}

try {
    var_dump($array[5]);
} catch(RuntimeException $re) {
    echo "RuntimeException: ".$re->getMessage()."\n";
}
?>

以上例程会输出：

NULL
int(2)
string(3) "foo"
RuntimeException: Index invalid or out of range
RuntimeException: Index invalid or out of range
RuntimeException: Index invalid or out of range

Table of Contents

  • SplFixedArray::__construct — Constructs a new fixed array
  • SplFixedArray::count — Returns the size of the array
  • SplFixedArray::current — Return current array entry
  • SplFixedArray::fromArray — Import a PHP array in a SplFixedArray instance
  • SplFixedArray::getSize — Gets the size of the array
  • SplFixedArray::key — Return current array index
  • SplFixedArray::next — Move to next entry
  • SplFixedArray::offsetExists — Returns whether the requested index exists
  • SplFixedArray::offsetGet — Returns the value at the specified index
  • SplFixedArray::offsetSet — Sets a new value at a specified index
  • SplFixedArray::offsetUnset — Unsets the value at the specified $index
  • SplFixedArray::rewind — Rewind iterator back to the start
  • SplFixedArray::setSize — Change the size of an array
  • SplFixedArray::toArray — Returns a PHP array from the fixed array
  • SplFixedArray::valid — Check whether the array contains more elements
  • SplFixedArray::__wakeup — Reinitialises the array after being unserialised
SplPriorityQueue::valid
SplFixedArray::__construct
数据结构


Constructs a new fixed array

SplFixedArray
SplFixedArray::count
SplFixedArray
PHP Manual

SplFixedArray::__construct

(PHP 5 >= 5.3.0, PHP 7)

SplFixedArray::__construct — Constructs a new fixed array

说明

public SplFixedArray::__construct ([ int $size = 0 ] )

Initializes a fixed array with a number of NULL values equal to size.

参数

size

The size of the fixed array. This expects a number between 0 and PHP_INT_MAX.

返回值

没有返回值。

错误／异常

Throws InvalidArgumentException when size is a negative number.

Raises E_WARNING when size cannot be parsed as a number.

范例

Example #1 SplFixedArray::__construct() example

<?php
$array = new SplFixedArray(5);

$array[1] = 2;
$array[4] = "foo";

foreach($array as $v) {
  var_dump($v);
}
?>

以上例程会输出：

NULL
int(2)
NULL
NULL
string(3) "foo"

SplFixedArray
SplFixedArray::count
SplFixedArray


Returns the size of the array

SplFixedArray::__construct
SplFixedArray::current
SplFixedArray
PHP Manual

SplFixedArray::count

(PHP 5 >= 5.3.0, PHP 7)

SplFixedArray::count — Returns the size of the array

说明

public int SplFixedArray::count ( void )

Returns the size of the array.

参数

此函数没有参数。

返回值

Returns the size of the array.

范例

Example #1 SplFixedArray::count() example

<?php
$array = new SplFixedArray(5);
echo $array->count() . "\n";
echo count($array) . "\n";
?>

以上例程会输出：

5
5

注释

Note:

This method is functionally equivalent to SplFixedArray::getSize().

Note:

The count of elements is always equal to the set size because all values are initially initialized with NULL.

参见

  • SplFixedArray::getSize() - Gets the size of the array
SplFixedArray::__construct
SplFixedArray::current
SplFixedArray


Return current array entry

SplFixedArray::count
SplFixedArray::fromArray
SplFixedArray
PHP Manual

SplFixedArray::current

(PHP 5 >= 5.3.0, PHP 7)

SplFixedArray::current — Return current array entry

说明

public mixed SplFixedArray::current ( void )

Get the current array element.

参数

此函数没有参数。

返回值

The current element value.

错误／异常

Throws RuntimeException when the internal array pointer points to an invalid index or is out of bounds.

SplFixedArray::count
SplFixedArray::fromArray
SplFixedArray


Import a PHP array in a SplFixedArray instance

SplFixedArray::current
SplFixedArray::getSize
SplFixedArray
PHP Manual

SplFixedArray::fromArray

(PHP 5 >= 5.3.0, PHP 7)

SplFixedArray::fromArray — Import a PHP array in a SplFixedArray instance

说明

public static SplFixedArray SplFixedArray::fromArray ( array $array [, bool $save_indexes = true ] )

Import the PHP array array in a new SplFixedArray instance

参数

array

The array to import.

save_indexes

Try to save the numeric indexes used in the original array.

返回值

Returns an instance of SplFixedArray containing the array content.

范例

Example #1 SplFixedArray::fromArray() example

<?php
$fa = SplFixedArray::fromArray(array(1 => 1, 0 => 2, 3 => 3));

var_dump($fa);

$fa = SplFixedArray::fromArray(array(1 => 1, 0 => 2, 3 => 3), false);

var_dump($fa);
?>

以上例程会输出：

object(SplFixedArray)#1 (4) {
  [0]=>
  int(2)
  [1]=>
  int(1)
  [2]=>
  NULL
  [3]=>
  int(3)
}
object(SplFixedArray)#2 (3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}

SplFixedArray::current
SplFixedArray::getSize
SplFixedArray


Gets the size of the array

SplFixedArray::fromArray
SplFixedArray::key
SplFixedArray
PHP Manual

SplFixedArray::getSize

(PHP 5 >= 5.3.0, PHP 7)

SplFixedArray::getSize — Gets the size of the array

说明

public int SplFixedArray::getSize ( void )

Gets the size of the array.

参数

此函数没有参数。

返回值

Returns the size of the array, as an integer.

范例

Example #1 SplFixedArray::getSize() example

<?php
$array = new SplFixedArray(5);
echo $array->getSize()."\n";
$array->setSize(10);
echo $array->getSize()."\n";
?>

以上例程会输出：

5
10

注释

Note:

This method is functionally equivalent to SplFixedArray::count()

参见

  • SplFixedArray::count() - Returns the size of the array
SplFixedArray::fromArray
SplFixedArray::key
SplFixedArray


Return current array index

SplFixedArray::getSize
SplFixedArray::next
SplFixedArray
PHP Manual

SplFixedArray::key

(PHP 5 >= 5.3.0, PHP 7)

SplFixedArray::key — Return current array index

说明

public int SplFixedArray::key ( void )

Returns the current array index.

参数

此函数没有参数。

返回值

The current array index.

SplFixedArray::getSize
SplFixedArray::next
SplFixedArray


Move to next entry

SplFixedArray::key
SplFixedArray::offsetExists
SplFixedArray
PHP Manual

SplFixedArray::next

(PHP 5 >= 5.3.0, PHP 7)

SplFixedArray::next — Move to next entry

说明

public void SplFixedArray::next ( void )

Move the iterator to the next array entry.

参数

此函数没有参数。

返回值

没有返回值。

SplFixedArray::key
SplFixedArray::offsetExists
SplFixedArray


Returns whether the requested index exists

SplFixedArray::next
SplFixedArray::offsetGet
SplFixedArray
PHP Manual

SplFixedArray::offsetExists

(PHP 5 >= 5.3.0, PHP 7)

SplFixedArray::offsetExists — Returns whether the requested index exists

说明

public bool SplFixedArray::offsetExists ( int $index )

Checks whether the requested index index exists.

参数

index

The index being checked.

返回值

TRUE if the requested index exists, otherwise FALSE

SplFixedArray::next
SplFixedArray::offsetGet
SplFixedArray


Returns the value at the specified index

SplFixedArray::offsetExists
SplFixedArray::offsetSet
SplFixedArray
PHP Manual

SplFixedArray::offsetGet

(PHP 5 >= 5.3.0, PHP 7)

SplFixedArray::offsetGet — Returns the value at the specified index

说明

public mixed SplFixedArray::offsetGet ( int $index )

Returns the value at the index index.

参数

index

The index with the value.

返回值

The value at the specified index.

错误／异常

Throws RuntimeException when index is outside the defined size of the array or when index cannot be parsed as an integer.

SplFixedArray::offsetExists
SplFixedArray::offsetSet
SplFixedArray


Sets a new value at a specified index

SplFixedArray::offsetGet
SplFixedArray::offsetUnset
SplFixedArray
PHP Manual

SplFixedArray::offsetSet

(PHP 5 >= 5.3.0, PHP 7)

SplFixedArray::offsetSet — Sets a new value at a specified index

说明

public void SplFixedArray::offsetSet ( int $index , mixed $newval )

Sets the value at the specified index to newval.

参数

index

The index being set.

newval

The new value for the index.

返回值

没有返回值。

错误／异常

Throws RuntimeException when index is outside the defined size of the array or when index cannot be parsed as an integer.

SplFixedArray::offsetGet
SplFixedArray::offsetUnset
SplFixedArray


Unsets the value at the specified $index

SplFixedArray::offsetSet
SplFixedArray::rewind
SplFixedArray
PHP Manual

SplFixedArray::offsetUnset

(PHP 5 >= 5.3.0, PHP 7)

SplFixedArray::offsetUnset — Unsets the value at the specified $index

说明

public void SplFixedArray::offsetUnset ( int $index )

Unsets the value at the specified index.

参数

index

The index being unset.

返回值

没有返回值。

错误／异常

Throws RuntimeException when index is outside the defined size of the array or when index cannot be parsed as an integer.

SplFixedArray::offsetSet
SplFixedArray::rewind
SplFixedArray


Rewind iterator back to the start

SplFixedArray::offsetUnset
SplFixedArray::setSize
SplFixedArray
PHP Manual

SplFixedArray::rewind

(PHP 5 >= 5.3.0, PHP 7)

SplFixedArray::rewind — Rewind iterator back to the start

说明

public void SplFixedArray::rewind ( void )

Rewinds the iterator to the beginning.

参数

此函数没有参数。

返回值

没有返回值。

SplFixedArray::offsetUnset
SplFixedArray::setSize
SplFixedArray


Change the size of an array

SplFixedArray::rewind
SplFixedArray::toArray
SplFixedArray
PHP Manual

SplFixedArray::setSize

(PHP 5 >= 5.3.0, PHP 7)

SplFixedArray::setSize — Change the size of an array

说明

public int SplFixedArray::setSize ( int $size )

Change the size of an array to the new size of size. If size is less than the current array size, any values after the new size will be discarded. If size is greater than the current array size, the array will be padded with NULL values.

参数

size

The new array size. This should be a value between 0 and PHP_INT_MAX.

返回值

没有返回值。

错误／异常

Throws InvalidArgumentException when size is less than zero.

Raises E_WARNING when size cannot be used as a number.

范例

Example #1 SplFixedArray::setSize() example

<?php
   $array = new SplFixedArray(5);
   echo $array->getSize()."\n";
   $array->setSize(10);
   echo $array->getSize()."\n";
?>

以上例程会输出：

5
10

SplFixedArray::rewind
SplFixedArray::toArray
SplFixedArray


Returns a PHP array from the fixed array

SplFixedArray::setSize
SplFixedArray::valid
SplFixedArray
PHP Manual

SplFixedArray::toArray

(PHP 5 >= 5.3.0, PHP 7)

SplFixedArray::toArray — Returns a PHP array from the fixed array

说明

public array SplFixedArray::toArray ( void )

Returns a PHP array from the fixed array.

参数

此函数没有参数。

返回值

Returns a PHP array, similar to the fixed array.

范例

Example #1 SplFixedArray::toArray() example

<?php
$fa = new SplFixedArray(3);
$fa[0] = 0;
$fa[2] = 2;
var_dump($fa->toArray());
?>

以上例程会输出：

array(3) {
  [0]=>
  int(0)
  [1]=>
  NULL
  [2]=>
  int(2)
}

SplFixedArray::setSize
SplFixedArray::valid
SplFixedArray


Check whether the array contains more elements

SplFixedArray::toArray
SplFixedArray::__wakeup
SplFixedArray
PHP Manual

SplFixedArray::valid

(PHP 5 >= 5.3.0, PHP 7)

SplFixedArray::valid — Check whether the array contains more elements

说明

public bool SplFixedArray::valid ( void )

Checks if the array contains any more elements.

参数

此函数没有参数。

返回值

Returns TRUE if the array contains any more elements, FALSE otherwise.

SplFixedArray::toArray
SplFixedArray::__wakeup
SplFixedArray


Reinitialises the array after being unserialised

SplFixedArray::valid
SplObjectStorage
SplFixedArray
PHP Manual

SplFixedArray::__wakeup

(PHP 5 >= 5.5.0, PHP 7)

SplFixedArray::__wakeup — Reinitialises the array after being unserialised

说明

public void SplFixedArray::__wakeup ( void )

Reinitialises the array after being unserialised.

参数

此函数没有参数。

返回值

没有返回值。

SplFixedArray::valid
SplObjectStorage
SplFixedArray


The SplObjectStorage class

(PHP 5 >= 5.3.0, PHP 7)

简介

The SplObjectStorage class provides a map from objects to data or, by ignoring data, an object set. This dual purpose can be useful in many cases involving the need to uniquely identify objects.

类摘要

SplObjectStorage implements Countable , Iterator , Serializable , ArrayAccess {
/* 方法 */
public void addAll ( SplObjectStorage $storage )
public void attach ( object $object [, mixed $data = NULL ] )
public bool contains ( object $object )
public int count ( void )
public object current ( void )
public void detach ( object $object )
public string getHash ( object $object )
public mixed getInfo ( void )
public int key ( void )
public void next ( void )
public bool offsetExists ( object $object )
public mixed offsetGet ( object $object )
public void offsetSet ( object $object [, mixed $data = NULL ] )
public void offsetUnset ( object $object )
public void removeAll ( SplObjectStorage $storage )
public void removeAllExcept ( SplObjectStorage $storage )
public void rewind ( void )
public string serialize ( void )
public void setInfo ( mixed $data )
public void unserialize ( string $serialized )
public bool valid ( void )
}

范例

Example #1 SplObjectStorage as a set

<?php
// As an object set
$s = new SplObjectStorage();

$o1 = new StdClass;
$o2 = new StdClass;
$o3 = new StdClass;

$s->attach($o1);
$s->attach($o2);

var_dump($s->contains($o1));
var_dump($s->contains($o2));
var_dump($s->contains($o3));

$s->detach($o2);

var_dump($s->contains($o1));
var_dump($s->contains($o2));
var_dump($s->contains($o3));
?>

以上例程会输出：

bool(true)
bool(true)
bool(false)
bool(true)
bool(false)
bool(false)

Example #2 SplObjectStorage as a map

<?php
// As a map from objects to data
$s = new SplObjectStorage();

$o1 = new StdClass;
$o2 = new StdClass;
$o3 = new StdClass;

$s[$o1] = "data for object 1";
$s[$o2] = array(1,2,3);

if (isset($s[$o2])) {
    var_dump($s[$o2]);
}
?>

以上例程会输出：

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}

Table of Contents

  • SplObjectStorage::addAll — Adds all objects from another storage
  • SplObjectStorage::attach — Adds an object in the storage
  • SplObjectStorage::contains — Checks if the storage contains a specific object
  • SplObjectStorage::count — Returns the number of objects in the storage
  • SplObjectStorage::current — Returns the current storage entry
  • SplObjectStorage::detach — Removes an object from the storage
  • SplObjectStorage::getHash — Calculate a unique identifier for the contained objects
  • SplObjectStorage::getInfo — Returns the data associated with the current iterator entry
  • SplObjectStorage::key — Returns the index at which the iterator currently is
  • SplObjectStorage::next — Move to the next entry
  • SplObjectStorage::offsetExists — Checks whether an object exists in the storage
  • SplObjectStorage::offsetGet — Returns the data associated with an object
  • SplObjectStorage::offsetSet — Associates data to an object in the storage
  • SplObjectStorage::offsetUnset — Removes an object from the storage
  • SplObjectStorage::removeAll — Removes objects contained in another storage from the current storage
  • SplObjectStorage::removeAllExcept — Removes all objects except for those contained in another storage from the current storage
  • SplObjectStorage::rewind — Rewind the iterator to the first storage element
  • SplObjectStorage::serialize — Serializes the storage
  • SplObjectStorage::setInfo — Sets the data associated with the current iterator entry
  • SplObjectStorage::unserialize — Unserializes a storage from its string representation
  • SplObjectStorage::valid — Returns if the current iterator entry is valid
SplFixedArray::__wakeup
SplObjectStorage::addAll
数据结构


Adds all objects from another storage

SplObjectStorage
SplObjectStorage::attach
SplObjectStorage
PHP Manual

SplObjectStorage::addAll

(PHP 5 >= 5.3.0, PHP 7)

SplObjectStorage::addAll — Adds all objects from another storage

说明

public void SplObjectStorage::addAll ( SplObjectStorage $storage )

Adds all objects-data pairs from a different storage in the current storage.

参数

storage

The storage you want to import.

返回值

没有返回值。

范例

Example #1 SplObjectStorage::addAll() example

<?php
$o = new StdClass;
$a = new SplObjectStorage();
$a[$o] = "hello";

$b = new SplObjectStorage();
$b->addAll($a);
echo $b[$o]."\n";
?>

以上例程的输出类似于：

hello

参见

  • SplObjectStorage::removeAll() - Removes objects contained in another storage from the current storage

SplObjectStorage
SplObjectStorage::attach
SplObjectStorage


Adds an object in the storage

SplObjectStorage::addAll
SplObjectStorage::contains
SplObjectStorage
PHP Manual

SplObjectStorage::attach

(PHP 5 >= 5.1.0, PHP 7)

SplObjectStorage::attach — Adds an object in the storage

说明

public void SplObjectStorage::attach ( object $object [, mixed $data = NULL ] )

Adds an object inside the storage, and optionally associate it to some data.

参数

object

The object to add.

data

The data to associate with the object.

返回值

没有返回值。

范例

Example #1 SplObjectStorage::attach() example

<?php
$o1 = new StdClass;
$o2 = new StdClass;
$s = new SplObjectStorage();
$s->attach($o1); // similar to $s[$o1] = NULL;
$s->attach($o2, "hello"); // similar to $s[$o2] = "hello";

var_dump($s[$o1]);
var_dump($s[$o2]);

?>

以上例程的输出类似于：

NULL
string(5) "hello"

更新日志

版本 | 说明
5.3.0 | Added the data parameter.

参见

  • SplObjectStorage::detach() - Removes an object from the storage
  • SplObjectStorage::offsetSet() - Associates data to an object in the storage

SplObjectStorage::addAll
SplObjectStorage::contains
SplObjectStorage


Checks if the storage contains a specific object

SplObjectStorage::attach
SplObjectStorage::count
SplObjectStorage
PHP Manual

SplObjectStorage::contains

(PHP 5 >= 5.1.0, PHP 7)

SplObjectStorage::contains — Checks if the storage contains a specific object

说明

public bool SplObjectStorage::contains ( object $object )

Checks if the storage contains the object provided.

参数

object

The object to look for.

返回值

Returns TRUE if the object is in the storage, FALSE otherwise.

范例

Example #1 SplObjectStorage::contains() example

<?php
$o1 = new StdClass;
$o2 = new StdClass;

$s = new SplObjectStorage();

$s[$o1] = "hello";
var_dump($s->contains($o1));
var_dump($s->contains($o2));
?>

以上例程的输出类似于：

bool(true)
bool(false)

参见

  • SplObjectStorage::offsetExists() - Checks whether an object exists in the storage

SplObjectStorage::attach
SplObjectStorage::count
SplObjectStorage


Returns the number of objects in the storage

SplObjectStorage::contains
SplObjectStorage::current
SplObjectStorage
PHP Manual

SplObjectStorage::count

(PHP 5 >= 5.1.0, PHP 7)

SplObjectStorage::count — Returns the number of objects in the storage

说明

public int SplObjectStorage::count ( void )

Counts the number of objects in the storage.

参数

此函数没有参数。

返回值

The number of objects in the storage.

范例

Example #1 SplObjectStorage::count() example

<?php
$s = new SplObjectStorage();
$o1 = new StdClass;
$o2 = new StdClass;

$s->attach($o1);
$s->attach($o2);
$s->attach($o1);
var_dump($s->count());
var_dump(count($s));
?>

以上例程的输出类似于：

int(2)
int(2)

参见

  • SplObjectStorage::attach() - Adds an object in the storage
  • SplObjectStorage::detach() - Removes an object from the storage

SplObjectStorage::contains
SplObjectStorage::current
SplObjectStorage


Returns the current storage entry

SplObjectStorage::count
SplObjectStorage::detach
SplObjectStorage
PHP Manual

SplObjectStorage::current

(PHP 5 >= 5.1.0, PHP 7)

SplObjectStorage::current — Returns the current storage entry

说明

public object SplObjectStorage::current ( void )

Returns the current storage entry.

参数

此函数没有参数。

返回值

The object at the current iterator position.

范例

Example #1 SplObjectStorage::current() example

<?php
$s = new SplObjectStorage();

$o1 = new StdClass;
$o2 = new StdClass;

$s->attach($o1, "d1");
$s->attach($o2, "d2");

$s->rewind();
while($s->valid()) {
    $index  = $s->key();
    $object = $s->current(); // similar to current($s)
    $data   = $s->getInfo();

    var_dump($object);
    var_dump($data);
    $s->next();
}
?>

以上例程的输出类似于：

object(stdClass)#2 (0) {
}
string(2) "d1"
object(stdClass)#3 (0) {
}
string(2) "d2"

参见

  • SplObjectStorage::rewind() - Rewind the iterator to the first storage element
  • SplObjectStorage::key() - Returns the index at which the iterator currently is
  • SplObjectStorage::next() - Move to the next entry
  • SplObjectStorage::valid() - Returns if the current iterator entry is valid
  • SplObjectStorage::getInfo() - Returns the data associated with the current iterator entry

SplObjectStorage::count
SplObjectStorage::detach
SplObjectStorage


Removes an object from the storage

SplObjectStorage::current
SplObjectStorage::getHash
SplObjectStorage
PHP Manual

SplObjectStorage::detach

(PHP 5 >= 5.1.0, PHP 7)

SplObjectStorage::detach — Removes an object from the storage

说明

public void SplObjectStorage::detach ( object $object )

Removes the object from the storage.

参数

object

The object to remove.

返回值

没有返回值。

范例

Example #1 SplObjectStorage::detach() example

<?php
$o = new StdClass;
$s = new SplObjectStorage();
$s->attach($o);
var_dump(count($s));
$s->detach($o);
var_dump(count($s));
?>

以上例程的输出类似于：

int(1)
int(0)

参见

  • SplObjectStorage::attach() - Adds an object in the storage
  • SplObjectStorage::removeAll() - Removes objects contained in another storage from the current storage

SplObjectStorage::current
SplObjectStorage::getHash
SplObjectStorage


Calculate a unique identifier for the contained objects

SplObjectStorage::detach
SplObjectStorage::getInfo
SplObjectStorage
PHP Manual

SplObjectStorage::getHash

(PHP 5 >= 5.4.0, PHP 7)

SplObjectStorage::getHash — Calculate a unique identifier for the contained objects

说明

public string SplObjectStorage::getHash ( object $object )

This method calculates an identifier for the objects added to an SplObjectStorage object.

The implementation in SplObjectStorage returns the same value as spl_object_hash().

The storage object will never contain more than one object with the same identifier. As such, it can be used to implement a set (a collection of unique values) where the quality of an object being unique is determined by the value returned by this function being unique.

参数

object

The object whose identifier is to be calculated.

返回值

A string with the calculated identifier.

错误／异常

A RuntimeException is thrown when the returned value is not a string.

范例

Example #1 SplObjectStorage::getHash() example

<?php
class OneSpecimenPerClassStorage extends SplObjectStorage {
    public function getHash($o) {
        return get_class($o);
    }
}
class A {}

$s = new OneSpecimenPerClassStorage;
$o1 = new stdClass;
$o2 = new stdClass;
$o3 = new A;

$s[$o1] = 1;
//$o2 is considered equal to $o1 so the value is replaced
$s[$o2] = 2;
$s[$o3] = 3;

//these are considered equal to the objects before
//so they can be used to access the values stored under them
$p1 = new stdClass;
$p2 = new A;
echo $s[$p1], "\n";
echo $s[$p2], "\n";
?>

以上例程的输出类似于：

2
3

参见

  • spl_object_hash() - 返回指定对象的hash id

SplObjectStorage::detach
SplObjectStorage::getInfo
SplObjectStorage


Returns the data associated with the current iterator entry

SplObjectStorage::getHash
SplObjectStorage::key
SplObjectStorage
PHP Manual

SplObjectStorage::getInfo

(PHP 5 >= 5.3.0, PHP 7)

SplObjectStorage::getInfo — Returns the data associated with the current iterator entry

说明

public mixed SplObjectStorage::getInfo ( void )

Returns the data, or info, associated with the object pointed by the current iterator position.

参数

此函数没有参数。

返回值

The data associated with the current iterator position.

范例

Example #1 SplObjectStorage::getInfo() example

<?php
$s = new SplObjectStorage();

$o1 = new StdClass;
$o2 = new StdClass;

$s->attach($o1, "d1");
$s->attach($o2, "d2");

$s->rewind();
while($s->valid()) {
    $index  = $s->key();
    $object = $s->current(); // similar to current($s)
    $data   = $s->getInfo();

    var_dump($object);
    var_dump($data);
    $s->next();
}
?>

以上例程的输出类似于：

object(stdClass)#2 (0) {
}
string(2) "d1"
object(stdClass)#3 (0) {
}
string(2) "d2"

参见

  • SplObjectStorage::current() - Returns the current storage entry
  • SplObjectStorage::rewind() - Rewind the iterator to the first storage element
  • SplObjectStorage::key() - Returns the index at which the iterator currently is
  • SplObjectStorage::next() - Move to the next entry
  • SplObjectStorage::valid() - Returns if the current iterator entry is valid
  • SplObjectStorage::setInfo() - Sets the data associated with the current iterator entry

SplObjectStorage::getHash
SplObjectStorage::key
SplObjectStorage


Returns the index at which the iterator currently is

SplObjectStorage::getInfo
SplObjectStorage::next
SplObjectStorage
PHP Manual

SplObjectStorage::key

(PHP 5 >= 5.1.0, PHP 7)

SplObjectStorage::key — Returns the index at which the iterator currently is

说明

public int SplObjectStorage::key ( void )

Returns the index at which the iterator currently is.

参数

此函数没有参数。

返回值

The index corresponding to the position of the iterator.

范例

Example #1 SplObjectStorage::key() example

<?php
$s = new SplObjectStorage();

$o1 = new StdClass;
$o2 = new StdClass;

$s->attach($o1, "d1");
$s->attach($o2, "d2");

$s->rewind();
while($s->valid()) {
    $index  = $s->key();
    $object = $s->current(); // similar to current($s)

    var_dump($index);
    var_dump($object);
    $s->next();
}
?>

以上例程的输出类似于：

int(0)
object(stdClass)#2 (0) {
}
int(1)
object(stdClass)#3 (0) {
}

参见

  • SplObjectStorage::rewind() - Rewind the iterator to the first storage element
  • SplObjectStorage::current() - Returns the current storage entry
  • SplObjectStorage::next() - Move to the next entry
  • SplObjectStorage::valid() - Returns if the current iterator entry is valid

SplObjectStorage::getInfo
SplObjectStorage::next
SplObjectStorage


Move to the next entry

SplObjectStorage::key
SplObjectStorage::offsetExists
SplObjectStorage
PHP Manual

SplObjectStorage::next

(PHP 5 >= 5.1.0, PHP 7)

SplObjectStorage::next — Move to the next entry

说明

public void SplObjectStorage::next ( void )

Moves the iterator to the next object in the storage.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 SplObjectStorage::next() example

<?php
$s = new SplObjectStorage();

$o1 = new StdClass;
$o2 = new StdClass;

$s->attach($o1, "d1");
$s->attach($o2, "d2");

$s->rewind();
while($s->valid()) {
    $index  = $s->key();
    $object = $s->current(); // similar to current($s)

    var_dump($index);
    var_dump($object);
    $s->next();
}
?>

以上例程的输出类似于：

int(0)
object(stdClass)#2 (0) {
}
int(1)
object(stdClass)#3 (0) {
}

参见

  • SPLObjectStorage::rewind() - Rewind the iterator to the first storage element

SplObjectStorage::key
SplObjectStorage::offsetExists
SplObjectStorage


Checks whether an object exists in the storage

SplObjectStorage::next
SplObjectStorage::offsetGet
SplObjectStorage
PHP Manual

SplObjectStorage::offsetExists

(PHP 5 >= 5.3.0, PHP 7)

SplObjectStorage::offsetExists — Checks whether an object exists in the storage

说明

public bool SplObjectStorage::offsetExists ( object $object )

Checks whether an object exists in the storage.

Note:

SplObjectStorage::offsetExists() is an alias of SplObjectStorage::contains().

参数

object

The object to look for.

返回值

Returns TRUE if the object exists in the storage, and FALSE otherwise.

范例

Example #1 SplObjectStorage::offsetExists() example

<?php
$s = new SplObjectStorage;
$o1 = new StdClass;
$o2 = new StdClass;

$s->attach($o1);

var_dump($s->offsetExists($o1)); // Similar to isset($s[$o1])
var_dump($s->offsetExists($o2)); // Similar to isset($s[$o2])
?>

以上例程的输出类似于：

bool(true)
bool(false)

参见

  • SplObjectStorage::offsetSet() - Associates data to an object in the storage
  • SplObjectStorage::offsetGet() - Returns the data associated with an object
  • SplObjectStorage::offsetUnset() - Removes an object from the storage

SplObjectStorage::next
SplObjectStorage::offsetGet
SplObjectStorage


Returns the data associated with an object

SplObjectStorage::offsetExists
SplObjectStorage::offsetSet
SplObjectStorage
PHP Manual

SplObjectStorage::offsetGet

(PHP 5 >= 5.3.0, PHP 7)

SplObjectStorage::offsetGet — Returns the data associated with an object

说明

public mixed SplObjectStorage::offsetGet ( object $object )

Returns the data associated with an object in the storage.

参数

object

The object to look for.

返回值

The data previously associated with the object in the storage.

错误／异常

Throws UnexpectedValueException when object could not be found.

范例

Example #1 SplObjectStorage::offsetGet() example

<?php
$s = new SplObjectStorage;

$o1 = new StdClass;
$o2 = new StdClass;

$s[$o1] = "hello";
$s->attach($o2);

var_dump($s->offsetGet($o1)); // Similar to $s[$o1]
var_dump($s->offsetGet($o2)); // Similar to $s[$o2]
?>

以上例程的输出类似于：

string(5) "hello"
NULL

参见

  • SplObjectStorage::offsetSet() - Associates data to an object in the storage
  • SplObjectStorage::offsetExists() - Checks whether an object exists in the storage
  • SplObjectStorage::offsetUnset() - Removes an object from the storage

SplObjectStorage::offsetExists
SplObjectStorage::offsetSet
SplObjectStorage


Associates data to an object in the storage

SplObjectStorage::offsetGet
SplObjectStorage::offsetUnset
SplObjectStorage
PHP Manual

SplObjectStorage::offsetSet

(PHP 5 >= 5.3.0, PHP 7)

SplObjectStorage::offsetSet — Associates data to an object in the storage

说明

public void SplObjectStorage::offsetSet ( object $object [, mixed $data = NULL ] )

Associate data to an object in the storage.

Note:

SplObjectStorage::offsetSet() is an alias of SplObjectStorage::attach().

参数

object

The object to associate data with.

data

The data to associate with the object.

返回值

没有返回值。

范例

Example #1 SplObjectStorage::offsetSet() example

<?php
$s = new SplObjectStorage;

$o1 = new StdClass;

$s->offsetSet($o1, "hello"); // Similar to $s[$o1] = "hello";

var_dump($s[$o1]);
?>

以上例程的输出类似于：

string(5) "hello"

参见

  • SplObjectStorage::attach() - Adds an object in the storage
  • SplObjectStorage::offsetGet() - Returns the data associated with an object
  • SplObjectStorage::offsetExists() - Checks whether an object exists in the storage
  • SplObjectStorage::offsetUnset() - Removes an object from the storage

SplObjectStorage::offsetGet
SplObjectStorage::offsetUnset
SplObjectStorage


Removes an object from the storage

SplObjectStorage::offsetSet
SplObjectStorage::removeAll
SplObjectStorage
PHP Manual

SplObjectStorage::offsetUnset

(PHP 5 >= 5.3.0, PHP 7)

SplObjectStorage::offsetUnset — Removes an object from the storage

说明

public void SplObjectStorage::offsetUnset ( object $object )

Removes an object from the storage.

Note:

SplObjectStorage::offsetUnset() is an alias of SplObjectStorage::detach().

参数

object

The object to remove.

返回值

没有返回值。

范例

Example #1 SplObjectStorage::offsetUnset() example

<?php
$o = new StdClass;
$s = new SplObjectStorage();
$s->attach($o);
var_dump(count($s));
$s->offsetUnset($o); // Similar to unset($s[$o])
var_dump(count($s));
?>

以上例程的输出类似于：

int(1)
int(0)

参见

  • SplObjectStorage::offsetGet() - Returns the data associated with an object
  • SplObjectStorage::offsetSet() - Associates data to an object in the storage
  • SplObjectStorage::offsetExists() - Checks whether an object exists in the storage

SplObjectStorage::offsetSet
SplObjectStorage::removeAll
SplObjectStorage


Removes objects contained in another storage from the current storage

SplObjectStorage::offsetUnset
SplObjectStorage::removeAllExcept
SplObjectStorage
PHP Manual

SplObjectStorage::removeAll

(PHP 5 >= 5.3.0, PHP 7)

SplObjectStorage::removeAll — Removes objects contained in another storage from the current storage

说明

public void SplObjectStorage::removeAll ( SplObjectStorage $storage )

Removes objects contained in another storage from the current storage.

参数

storage

The storage containing the elements to remove.

返回值

没有返回值。

范例

Example #1 SplObjectStorage::removeAll() example

<?php
$o1 = new StdClass;
$o2 = new StdClass;
$a = new SplObjectStorage();
$a[$o1] = "foo";

$b = new SplObjectStorage();
$b[$o1] = "bar";
$b[$o2] = "gee";

var_dump(count($b));
$b->removeAll($a);
var_dump(count($b));
?>

以上例程的输出类似于：

int(2)
int(1)

参见

  • SplObjectStorage::addAll() - Adds all objects from another storage

SplObjectStorage::offsetUnset
SplObjectStorage::removeAllExcept
SplObjectStorage


Removes all objects except for those contained in another storage from the current storage

SplObjectStorage::removeAll
SplObjectStorage::rewind
SplObjectStorage
PHP Manual

SplObjectStorage::removeAllExcept

(PHP 5 >= 5.3.6, PHP 7)

SplObjectStorage::removeAllExcept — Removes all objects except for those contained in another storage from the current storage

说明

public void SplObjectStorage::removeAllExcept ( SplObjectStorage $storage )

Removes all objects except for those contained in another storage from the current storage.

参数

storage

The storage containing the elements to retain in the current storage.

返回值

没有返回值。

范例

Example #1 SplObjectStorage::removeAllExcept() example

<?php
$a = (object) 'a';
$b = (object) 'b';
$c = (object) 'c';

$foo = new SplObjectStorage;
$foo->attach($a);
$foo->attach($b);

$bar = new SplObjectStorage;
$bar->attach($b);
$bar->attach($c);

$foo->removeAllExcept($bar);
var_dump($foo->contains($a));
var_dump($foo->contains($b));
?>

以上例程的输出类似于：

bool(false)
bool(true)

SplObjectStorage::removeAll
SplObjectStorage::rewind
SplObjectStorage


Rewind the iterator to the first storage element

SplObjectStorage::removeAllExcept
SplObjectStorage::serialize
SplObjectStorage
PHP Manual

SplObjectStorage::rewind

(PHP 5 >= 5.1.0, PHP 7)

SplObjectStorage::rewind — Rewind the iterator to the first storage element

说明

public void SplObjectStorage::rewind ( void )

Rewind the iterator to the first storage element.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 SplObjectStorage::rewind() example

<?php
$s = new SplObjectStorage();

$o1 = new StdClass;
$o2 = new StdClass;

$s->attach($o1, "d1");
$s->attach($o2, "d2");

$s->rewind();
while($s->valid()) {
    $index  = $s->key();
    $object = $s->current(); // similar to current($s)
    $data   = $s->getInfo();

    var_dump($object);
    var_dump($data);
    $s->next();
}
?>

以上例程的输出类似于：

int(1)
int(0)

参见

  • SplObjectStorage::next() - Move to the next entry

SplObjectStorage::removeAllExcept
SplObjectStorage::serialize
SplObjectStorage


Serializes the storage

SplObjectStorage::rewind
SplObjectStorage::setInfo
SplObjectStorage
PHP Manual

SplObjectStorage::serialize

(PHP 5 >= 5.2.2, PHP 7)

SplObjectStorage::serialize — Serializes the storage

说明

public string SplObjectStorage::serialize ( void )

Returns a string representation of the storage.

参数

此函数没有参数。

返回值

A string representing the storage.

范例

Example #1 SplObjectStorage::serialize() example

<?php
$s = new SplObjectStorage;
$o = new StdClass;
$s[$o] = "data";

echo $s->serialize()."\n";
?>

以上例程的输出类似于：

x:i:1;O:8:"stdClass":0:{},s:4:"data";;m:a:0:{}

参见

  • SplObjectStorage::unserialize() - Unserializes a storage from its string representation

SplObjectStorage::rewind
SplObjectStorage::setInfo
SplObjectStorage


Sets the data associated with the current iterator entry

SplObjectStorage::serialize
SplObjectStorage::unserialize
SplObjectStorage
PHP Manual

SplObjectStorage::setInfo

(PHP 5 >= 5.3.0, PHP 7)

SplObjectStorage::setInfo — Sets the data associated with the current iterator entry

说明

public void SplObjectStorage::setInfo ( mixed $data )

Associates data, or info, with the object currently pointed to by the iterator.

参数

data

The data to associate with the current iterator entry.

返回值

没有返回值。

范例

Example #1 SplObjectStorage::setInfo() example

<?php
$s = new SplObjectStorage();

$o1 = new StdClass;
$o2 = new StdClass;

$s->attach($o1, "d1");
$s->attach($o2, "d2");

$s->rewind();
while($s->valid()) {
    $s->setInfo("new");
    $s->next();
}
var_dump($s[$o1]);
var_dump($s[$o2]);
?>

以上例程的输出类似于：

string(3) "new"
string(3) "new"

参见

  • SplObjectStorage::current() - Returns the current storage entry
  • SplObjectStorage::rewind() - Rewind the iterator to the first storage element
  • SplObjectStorage::key() - Returns the index at which the iterator currently is
  • SplObjectStorage::next() - Move to the next entry
  • SplObjectStorage::valid() - Returns if the current iterator entry is valid
  • SplObjectStorage::getInfo() - Returns the data associated with the current iterator entry

SplObjectStorage::serialize
SplObjectStorage::unserialize
SplObjectStorage


Unserializes a storage from its string representation

SplObjectStorage::setInfo
SplObjectStorage::valid
SplObjectStorage
PHP Manual

SplObjectStorage::unserialize

(PHP 5 >= 5.2.2, PHP 7)

SplObjectStorage::unserialize — Unserializes a storage from its string representation

说明

public void SplObjectStorage::unserialize ( string $serialized )

Unserializes storage entries and attach them to the current storage.

参数

serialized

The serialized representation of a storage.

返回值

没有返回值。

范例

Example #1 SplObjectStorage::unserialize() example

<?php
$s1 = new SplObjectStorage;
$s2 = new SplObjectStorage;
$o = new StdClass;
$s1[$o] = "data";

$s2->unserialize($s1->serialize());

var_dump(count($s2));
?>

以上例程的输出类似于：

int(1)

参见

  • SplObjectStorage::serialize() - Serializes the storage

SplObjectStorage::setInfo
SplObjectStorage::valid
SplObjectStorage


Returns if the current iterator entry is valid

SplObjectStorage::unserialize
迭代器
SplObjectStorage
PHP Manual

SplObjectStorage::valid

(PHP 5 >= 5.1.0, PHP 7)

SplObjectStorage::valid — Returns if the current iterator entry is valid

说明

public bool SplObjectStorage::valid ( void )

Returns if the current iterator entry is valid.

参数

此函数没有参数。

返回值

Returns TRUE if the iterator entry is valid, FALSE otherwise.

范例

Example #1 SplObjectStorage::valid() example

<?php
$s = new SplObjectStorage();

$o1 = new StdClass;
$o2 = new StdClass;

$s->attach($o1, "d1");
$s->attach($o2, "d2");

$s->rewind();
while($s->valid()) {
    echo $s->key()."\n";
    $s->next();
}
?>

以上例程的输出类似于：

0
1

参见

  • SplObjectStorage::current() - Returns the current storage entry
  • SplObjectStorage::getInfo() - Returns the data associated with the current iterator entry

SplObjectStorage::unserialize
迭代器
SplObjectStorage


迭代器

Table of Contents

  • AppendIterator
  • ArrayIterator
  • CachingIterator
  • CallbackFilterIterator
  • DirectoryIterator
  • EmptyIterator
  • FilesystemIterator
  • FilterIterator
  • GlobIterator
  • InfiniteIterator
  • IteratorIterator
  • LimitIterator
  • MultipleIterator
  • NoRewindIterator
  • ParentIterator
  • RecursiveArrayIterator
  • RecursiveCachingIterator
  • RecursiveCallbackFilterIterator
  • RecursiveDirectoryIterator
  • RecursiveFilterIterator
  • RecursiveIteratorIterator
  • RecursiveRegexIterator
  • RecursiveTreeIterator
  • RegexIterator

SPL 提供一系列迭代器以遍历不同的对象。

SPL Iterators Class Tree

  • ArrayIterator
    • RecursiveArrayIterator
  • EmptyIterator
  • IteratorIterator
    • AppendIterator
    • CachingIterator
      • RecursiveCachingIterator
    • FilterIterator
      • CallbackFilterIterator
        • RecursiveCallbackFilterIterator
      • RecursiveFilterIterator
        • ParentIterator
      • RegexIterator
        • RecursiveRegexIterator
    • InfiniteIterator
    • LimitIterator
    • NoRewindIterator
  • MultipleIterator
  • RecursiveIteratorIterator
    • RecursiveTreeIterator
  • DirectoryIterator (extends SplFileInfo)
    • FilesystemIterator
      • GlobIterator
      • RecursiveDirectoryIterator
SplObjectStorage::valid
AppendIterator
SPL


The AppendIterator class

(PHP 5 >= 5.1.0, PHP 7)

简介

这个迭代器能陆续遍历几个迭代器

类摘要

AppendIterator extends IteratorIterator implements OuterIterator {
/* 方法 */
public __construct ( void )
public void append ( Iterator $iterator )
public mixed current ( void )
public ArrayIterator getArrayIterator ( void )
public Iterator getInnerIterator ( void )
public int getIteratorIndex ( void )
public scalar key ( void )
public void next ( void )
public void rewind ( void )
public bool valid ( void )
/* 继承的方法 */
public IteratorIterator::__construct ( Traversable $iterator )
public mixed IteratorIterator::current ( void )
public Traversable IteratorIterator::getInnerIterator ( void )
public scalar IteratorIterator::key ( void )
public void IteratorIterator::next ( void )
public void IteratorIterator::rewind ( void )
public bool IteratorIterator::valid ( void )
}

Table of Contents

  • AppendIterator::append — Appends an iterator
  • AppendIterator::__construct — Constructs an AppendIterator
  • AppendIterator::current — Gets the current value
  • AppendIterator::getArrayIterator — Gets the ArrayIterator
  • AppendIterator::getInnerIterator — Gets the inner iterator
  • AppendIterator::getIteratorIndex — Gets an index of iterators
  • AppendIterator::key — Gets the current key
  • AppendIterator::next — Moves to the next element
  • AppendIterator::rewind — Rewinds the Iterator
  • AppendIterator::valid — Checks validity of the current element
迭代器
AppendIterator::append
迭代器


Appends an iterator

AppendIterator
AppendIterator::__construct
AppendIterator
PHP Manual

AppendIterator::append

(PHP 5 >= 5.1.0, PHP 7)

AppendIterator::append — Appends an iterator

说明

public void AppendIterator::append ( Iterator $iterator )

Appends an iterator.

参数

iterator

The iterator to append.

返回值

没有返回值。

范例

Example #1 AppendIterator::append() example

<?php
$array_a = new ArrayIterator(array('a', 'b', 'c'));
$array_b = new ArrayIterator(array('d', 'e', 'f'));

$iterator = new AppendIterator;
$iterator->append($array_a);
$iterator->append($array_b);

foreach ($iterator as $current) {
    echo $current;
}
?>

以上例程会输出：

abcdef

参见

  • AppendIterator::__construct() - Constructs an AppendIterator

AppendIterator
AppendIterator::__construct
AppendIterator


Constructs an AppendIterator

AppendIterator::append
AppendIterator::current
AppendIterator
PHP Manual

AppendIterator::__construct

(PHP 5 >= 5.1.0, PHP 7)

AppendIterator::__construct — Constructs an AppendIterator

说明

public AppendIterator::__construct ( void )

Constructs an AppendIterator.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 Iterating AppendIterator with foreach

<?php
$pizzas   = new ArrayIterator(array('Margarita', 'Siciliana', 'Hawaii'));
$toppings = new ArrayIterator(array('Cheese', 'Anchovies', 'Olives', 'Pineapple', 'Ham'));

$appendIterator = new AppendIterator;
$appendIterator->append($pizzas);
$appendIterator->append($toppings);

foreach ($appendIterator as $key => $item) {
    echo $key . ' => ' . $item . PHP_EOL;
}
?>

以上例程会输出：

0 => Margarita
1 => Siciliana
2 => Hawaii
0 => Cheese
1 => Anchovies
2 => Olives
3 => Pineapple
4 => Ham

Example #2 Iterating AppendIterator with the AppendIterator API

<?php
$pizzas   = new ArrayIterator(array('Margarita', 'Siciliana', 'Hawaii'));
$toppings = new ArrayIterator(array('Cheese', 'Anchovies', 'Olives', 'Pineapple', 'Ham'));

$appendIterator = new AppendIterator;
$appendIterator->append($pizzas);
$appendIterator->append($toppings);

while ($appendIterator->valid()) {
    printf(
        '%s => %s => %s%s',
        $appendIterator->getIteratorIndex(),
        $appendIterator->key(),
        $appendIterator->current(),
        PHP_EOL
    );
    $appendIterator->next();
}
?>

以上例程会输出：

0 => 0 => Margarita
0 => 1 => Siciliana
0 => 2 => Hawaii
1 => 0 => Cheese
1 => 1 => Anchovies
1 => 2 => Olives
1 => 3 => Pineapple
1 => 4 => Ham

注释

Caution

When using iterator_to_array() to copy the values of the AppendIterator into an array, you have to set the optional use_key argument to FALSE. When use_key is not FALSE any keys reoccuring in inner iterators will get overwritten in the returned array. There is no way to preserve the original keys.

参见

  • AppendIterator::append() - Appends an iterator

AppendIterator::append
AppendIterator::current
AppendIterator


Gets the current value

AppendIterator::__construct
AppendIterator::getArrayIterator
AppendIterator
PHP Manual

AppendIterator::current

(PHP 5 >= 5.1.0, PHP 7)

AppendIterator::current — Gets the current value

说明

public mixed AppendIterator::current ( void )

Gets the current value.

参数

此函数没有参数。

返回值

The current value if it is valid or NULL otherwise.

参见

  • Iterator::current() - 返回当前元素
  • AppendIterator::key() - Gets the current key
  • AppendIterator::valid() - Checks validity of the current element
  • AppendIterator::next() - Moves to the next element
  • AppendIterator::rewind() - Rewinds the Iterator

AppendIterator::__construct
AppendIterator::getArrayIterator
AppendIterator


Gets the ArrayIterator

AppendIterator::current
AppendIterator::getInnerIterator
AppendIterator
PHP Manual

AppendIterator::getArrayIterator

(PHP 5 >= 5.1.0, PHP 7)

AppendIterator::getArrayIterator — Gets the ArrayIterator

说明

public ArrayIterator AppendIterator::getArrayIterator ( void )

This method gets the ArrayIterator that is used to store the iterators added with AppendIterator::append().

参数

此函数没有参数。

返回值

Returns an ArrayIterator containing the appended iterators.

参见

  • AppendIterator::getInnerIterator() - Gets the inner iterator

AppendIterator::current
AppendIterator::getInnerIterator
AppendIterator


Gets the inner iterator

AppendIterator::getArrayIterator
AppendIterator::getIteratorIndex
AppendIterator
PHP Manual

AppendIterator::getInnerIterator

(PHP 5 >= 5.1.0, PHP 7)

AppendIterator::getInnerIterator — Gets the inner iterator

说明

public Iterator AppendIterator::getInnerIterator ( void )

This method returns the current inner iterator.

参数

此函数没有参数。

返回值

The current inner iterator, or NULL if there is not one.

范例

Example #1 AppendIterator::getInnerIterator() example

<?php
$array_a = new ArrayIterator(array('a' => 'aardwolf', 'b' => 'bear', 'c' => 'capybara'));
$array_b = new RegexIterator($array_a, '/^[ac]/');

$iterator = new AppendIterator;
$iterator->append($array_a);
$iterator->append($array_b);

foreach ($iterator as $current) {
    $inner = $iterator->getInnerIterator();
    if ($inner instanceOf RegexIterator) {
        echo 'Filtered: ';
    } else {
        echo 'Original: ';
    }
    echo $current . PHP_EOL;
}
?>

以上例程会输出：

Original: aardwolf
Original: bear
Original: capybara
Filtered: aardwolf
Filtered: capybara

参见

  • AppendIterator::getIteratorIndex() - Gets an index of iterators

AppendIterator::getArrayIterator
AppendIterator::getIteratorIndex
AppendIterator


Gets an index of iterators

AppendIterator::getInnerIterator
AppendIterator::key
AppendIterator
PHP Manual

AppendIterator::getIteratorIndex

(PHP 5 >= 5.1.0, PHP 7)

AppendIterator::getIteratorIndex — Gets an index of iterators

说明

public int AppendIterator::getIteratorIndex ( void )

Gets the index of the current inner iterator.

参数

此函数没有参数。

返回值

Returns an integer, which is the zero-based index of the current inner iterator.

范例

Example #1 AppendIterator.getIteratorIndex() basic example

<?php
$array_a = new ArrayIterator(array('a' => 'aardwolf', 'b' => 'bear', 'c' => 'capybara'));
$array_b = new ArrayIterator(array('apple', 'orange', 'lemon'));

$iterator = new AppendIterator;
$iterator->append($array_a);
$iterator->append($array_b);

foreach ($iterator as $key => $current) {
    echo $iterator->getIteratorIndex() . '  ' . $key . ' ' . $current . PHP_EOL;
}
?>

以上例程会输出：

0  a aardwolf
0  b bear
0  c capybara
1  0 apple
1  1 orange
1  2 lemon

参见

  • AppendIterator::getInnerIterator() - Gets the inner iterator
  • AppendIterator::getArrayIterator() - Gets the ArrayIterator

AppendIterator::getInnerIterator
AppendIterator::key
AppendIterator


Gets the current key

AppendIterator::getIteratorIndex
AppendIterator::next
AppendIterator
PHP Manual

AppendIterator::key

(PHP 5 >= 5.1.0, PHP 7)

AppendIterator::key — Gets the current key

说明

public scalar AppendIterator::key ( void )

Get the current key.

参数

此函数没有参数。

返回值

The current key if it is valid or NULL otherwise.

范例

Example #1 AppendIterator::key() basic example

<?php
$array_a = new ArrayIterator(array('a' => 'aardwolf', 'b' => 'bear', 'c' => 'capybara'));
$array_b = new ArrayIterator(array('apple', 'orange', 'lemon'));

$iterator = new AppendIterator;
$iterator->append($array_a);
$iterator->append($array_b);

// Manual iteration
$iterator->rewind();
while ($iterator->valid()) {
    echo $iterator->key() . ' ' . $iterator->current() . PHP_EOL;
    $iterator->next();
}

echo PHP_EOL;

// With foreach
foreach ($iterator as $key => $current) {
    echo $key . ' ' . $current . PHP_EOL;
}
?>

以上例程会输出：

a aardwolf
b bear
c capybara
0 apple
1 orange
2 lemon

a aardwolf
b bear
c capybara
0 apple
1 orange
2 lemon

参见

  • Iterator::key() - 返回当前元素的键
  • AppendIterator::current() - Gets the current value
  • AppendIterator::valid() - Checks validity of the current element
  • AppendIterator::next() - Moves to the next element
  • AppendIterator::rewind() - Rewinds the Iterator

AppendIterator::getIteratorIndex
AppendIterator::next
AppendIterator


Moves to the next element

AppendIterator::key
AppendIterator::rewind
AppendIterator
PHP Manual

AppendIterator::next

(PHP 5 >= 5.1.0, PHP 7)

AppendIterator::next — Moves to the next element

说明

public void AppendIterator::next ( void )

Moves to the next element. If this means to another Iterator then it rewinds that Iterator.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • Iterator::next() - 向前移动到下一个元素
  • AppendIterator::current() - Gets the current value
  • AppendIterator::key() - Gets the current key
  • AppendIterator::valid() - Checks validity of the current element
  • AppendIterator::rewind() - Rewinds the Iterator

AppendIterator::key
AppendIterator::rewind
AppendIterator


Rewinds the Iterator

AppendIterator::next
AppendIterator::valid
AppendIterator
PHP Manual

AppendIterator::rewind

(PHP 5 >= 5.1.0, PHP 7)

AppendIterator::rewind — Rewinds the Iterator

说明

public void AppendIterator::rewind ( void )

Rewind to the first element of the first inner Iterator.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • Iterator::rewind() - 返回到迭代器的第一个元素
  • AppendIterator::current() - Gets the current value
  • AppendIterator::key() - Gets the current key
  • AppendIterator::next() - Moves to the next element
  • AppendIterator::valid() - Checks validity of the current element

AppendIterator::next
AppendIterator::valid
AppendIterator


Checks validity of the current element

AppendIterator::rewind
ArrayIterator
AppendIterator
PHP Manual

AppendIterator::valid

(PHP 5 >= 5.1.0, PHP 7)

AppendIterator::valid — Checks validity of the current element

说明

public bool AppendIterator::valid ( void )

Checks validity of the current element.

参数

此函数没有参数。

返回值

Returns TRUE if the current iteration is valid, FALSE otherwise.

参见

  • AppendIterator::current() - Gets the current value
  • AppendIterator::key() - Gets the current key
  • AppendIterator::next() - Moves to the next element
  • AppendIterator::rewind() - Rewinds the Iterator

AppendIterator::rewind
ArrayIterator
AppendIterator


The ArrayIterator class

(PHP 5, PHP 7)

简介

这个迭代器允许在遍历数组和对象时删除和更新值与键

当你想多次遍历相同数组时你需要实例化ArrayObject，然后让这个实例创建一个ArrayIteratror实例 当你想遍历相同数组时多次你需要实例ArrayObject并且让这个实例创建一个ArrayIteratror实例，然后使用foreach或者 手动调用getIterator()方法

类摘要

ArrayIterator implements ArrayAccess , SeekableIterator , Countable , Serializable {
/* 方法 */
public void append ( mixed $value )
public void asort ( void )
public __construct ([ mixed $array = array() [, int $flags = 0 ]] )
public int count ( void )
public mixed current ( void )
public array getArrayCopy ( void )
public void getFlags ( void )
public mixed key ( void )
public void ksort ( void )
public void natcasesort ( void )
public void natsort ( void )
public void next ( void )
public void offsetExists ( string $index )
public mixed offsetGet ( string $index )
public void offsetSet ( string $index , string $newval )
public void offsetUnset ( string $index )
public void rewind ( void )
public void seek ( int $position )
public string serialize ( void )
public void setFlags ( string $flags )
public void uasort ( string $cmp_function )
public void uksort ( string $cmp_function )
public string unserialize ( string $serialized )
public bool valid ( void )
}

Table of Contents

  • ArrayIterator::append — Append an element
  • ArrayIterator::asort — Sort array by values
  • ArrayIterator::__construct — Construct an ArrayIterator
  • ArrayIterator::count — Count elements
  • ArrayIterator::current — Return current array entry
  • ArrayIterator::getArrayCopy — Get array copy
  • ArrayIterator::getFlags — Get flags
  • ArrayIterator::key — Return current array key
  • ArrayIterator::ksort — Sort array by keys
  • ArrayIterator::natcasesort — Sort an array naturally, case insensitive
  • ArrayIterator::natsort — Sort an array naturally
  • ArrayIterator::next — Move to next entry
  • ArrayIterator::offsetExists — Check if offset exists
  • ArrayIterator::offsetGet — Get value for an offset
  • ArrayIterator::offsetSet — Set value for an offset
  • ArrayIterator::offsetUnset — Unset value for an offset
  • ArrayIterator::rewind — Rewind array back to the start
  • ArrayIterator::seek — Seek to position
  • ArrayIterator::serialize — Serialize
  • ArrayIterator::setFlags — Set behaviour flags
  • ArrayIterator::uasort — User defined sort
  • ArrayIterator::uksort — User defined sort
  • ArrayIterator::unserialize — Unserialize
  • ArrayIterator::valid — Check whether array contains more entries
AppendIterator::valid
ArrayIterator::append
迭代器


Append an element

ArrayIterator
ArrayIterator::asort
ArrayIterator
PHP Manual

ArrayIterator::append

(PHP 5 >= 5.0.0, PHP 7)

ArrayIterator::append — Append an element

说明

public void ArrayIterator::append ( mixed $value )

Appends value as the last element.

Warning

本函数还未编写文档，仅有参数列表。

参数

value

The value to append.

返回值

没有返回值。

注释

Note:

This method cannot be called when the ArrayIterator refers to an object.

参见

  • ArrayIterator::next() - Move to next entry

ArrayIterator
ArrayIterator::asort
ArrayIterator


Sort array by values

ArrayIterator::append
ArrayIterator::__construct
ArrayIterator
PHP Manual

ArrayIterator::asort

(PHP 5 >= 5.2.0, PHP 7)

ArrayIterator::asort — Sort array by values

说明

public void ArrayIterator::asort ( void )

Sorts an array by values.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

参见

  • ArrayIterator::ksort() - Sort array by keys
  • ArrayIterator::natcasesort() - Sort an array naturally, case insensitive
  • ArrayIterator::natsort() - Sort an array naturally

ArrayIterator::append
ArrayIterator::__construct
ArrayIterator


Construct an ArrayIterator

ArrayIterator::asort
ArrayIterator::count
ArrayIterator
PHP Manual

ArrayIterator::__construct

(PHP 5 >= 5.0.0, PHP 7)

ArrayIterator::__construct — Construct an ArrayIterator

说明

public ArrayIterator::__construct ([ mixed $array = array() [, int $flags = 0 ]] )

Constructs an ArrayIterator object.

Warning

本函数还未编写文档，仅有参数列表。

参数

array

The array or object to be iterated on.

flags

Flags to control the behaviour of the ArrayIterator object. See ArrayIterator::setFlags().

返回值

An ArrayIterator object.

错误／异常

ArrayIterator::__construct() throws an InvalidArgumentException if anything besides an array or an object is given.

参见

  • ArrayIterator::getArrayCopy() - Get array copy

ArrayIterator::asort
ArrayIterator::count
ArrayIterator


Count elements

ArrayIterator::__construct
ArrayIterator::current
ArrayIterator
PHP Manual

ArrayIterator::count

(PHP 5 >= 5.0.0, PHP 7)

ArrayIterator::count — Count elements

说明

public int ArrayIterator::count ( void )

Gets the number of elements in the array, or the number of public properties in the object.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The number of elements or public properties in the associated array or object, respectively.

参见

  • ArrayIterator::getFlags() - Get flags

ArrayIterator::__construct
ArrayIterator::current
ArrayIterator


Return current array entry

ArrayIterator::count
ArrayIterator::getArrayCopy
ArrayIterator
PHP Manual

ArrayIterator::current

(PHP 5 >= 5.0.0, PHP 7)

ArrayIterator::current — Return current array entry

说明

public mixed ArrayIterator::current ( void )

Get the current array entry.

参数

此函数没有参数。

返回值

The current array entry.

范例

Example #1 ArrayIterator::current() example

<?php
$array = array('1' => 'one',
               '2' => 'two',
               '3' => 'three');

$arrayobject = new ArrayObject($array);

for($iterator = $arrayobject->getIterator();
    $iterator->valid();
    $iterator->next()) {

    echo $iterator->key() . ' => ' . $iterator->current() . "\n";
}
?>

以上例程会输出：

1 => one
2 => two
3 => three

ArrayIterator::count
ArrayIterator::getArrayCopy
ArrayIterator


Get array copy

ArrayIterator::current
ArrayIterator::getFlags
ArrayIterator
PHP Manual

ArrayIterator::getArrayCopy

(PHP 5 >= 5.0.0, PHP 7)

ArrayIterator::getArrayCopy — Get array copy

说明

public array ArrayIterator::getArrayCopy ( void )

Get a copy of an array.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

A copy of the array, or array of public properties if ArrayIterator refers to an object.

参见

  • ArrayIterator::valid() - Check whether array contains more entries

ArrayIterator::current
ArrayIterator::getFlags
ArrayIterator


Get flags

ArrayIterator::getArrayCopy
ArrayIterator::key
ArrayIterator
PHP Manual

ArrayIterator::getFlags

(PHP 5 >= 5.1.0, PHP 7)

ArrayIterator::getFlags — Get flags

说明

public void ArrayIterator::getFlags ( void )

Get the current flags.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The current flags.

参见

  • ArrayIterator::valid() - Check whether array contains more entries

ArrayIterator::getArrayCopy
ArrayIterator::key
ArrayIterator


Return current array key

ArrayIterator::getFlags
ArrayIterator::ksort
ArrayIterator
PHP Manual

ArrayIterator::key

(PHP 5 >= 5.0.0, PHP 7)

ArrayIterator::key — Return current array key

说明

public mixed ArrayIterator::key ( void )

This function returns the current array key

参数

此函数没有参数。

返回值

The current array key.

范例

Example #1 ArrayIterator::key() example

<?php
$array = array('key' => 'value');

$arrayobject = new ArrayObject($array);
$iterator = $arrayobject->getIterator();

echo $iterator->key(); //key
?>

ArrayIterator::getFlags
ArrayIterator::ksort
ArrayIterator


Sort array by keys

ArrayIterator::key
ArrayIterator::natcasesort
ArrayIterator
PHP Manual

ArrayIterator::ksort

(PHP 5 >= 5.2.0, PHP 7)

ArrayIterator::ksort — Sort array by keys

说明

public void ArrayIterator::ksort ( void )

Sorts an array by the keys.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

参见

  • ArrayIterator::asort() - Sort array by values
  • ArrayIterator::natcasesort() - Sort an array naturally, case insensitive
  • ArrayIterator::natsort() - Sort an array naturally

ArrayIterator::key
ArrayIterator::natcasesort
ArrayIterator


Sort an array naturally, case insensitive

ArrayIterator::ksort
ArrayIterator::natsort
ArrayIterator
PHP Manual

ArrayIterator::natcasesort

(PHP 5 >= 5.2.0, PHP 7)

ArrayIterator::natcasesort — Sort an array naturally, case insensitive

说明

public void ArrayIterator::natcasesort ( void )

Sort the entries by values using a case insensitive "natural order" algorithm.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

参见

  • ArrayIterator::asort() - Sort array by values
  • ArrayIterator::ksort() - Sort array by keys
  • ArrayIterator::natsort() - Sort an array naturally
  • natcasesort() - 用“自然排序”算法对数组进行不区分大小写字母的排序

ArrayIterator::ksort
ArrayIterator::natsort
ArrayIterator


Sort an array naturally

ArrayIterator::natcasesort
ArrayIterator::next
ArrayIterator
PHP Manual

ArrayIterator::natsort

(PHP 5 >= 5.2.0, PHP 7)

ArrayIterator::natsort — Sort an array naturally

说明

public void ArrayIterator::natsort ( void )

Sort the entries by values using "natural order" algorithm.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

参见

  • ArrayIterator::asort() - Sort array by values
  • ArrayIterator::ksort() - Sort array by keys
  • ArrayIterator::natcasesort() - Sort an array naturally, case insensitive
  • natsort() - 用“自然排序”算法对数组排序

ArrayIterator::natcasesort
ArrayIterator::next
ArrayIterator


Move to next entry

ArrayIterator::natsort
ArrayIterator::offsetExists
ArrayIterator
PHP Manual

ArrayIterator::next

(PHP 5 >= 5.0.0, PHP 7)

ArrayIterator::next — Move to next entry

说明

public void ArrayIterator::next ( void )

The iterator to the next entry.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 ArrayIterator::next() example

<?php
$arrayobject = new ArrayObject();

$arrayobject[] = 'zero';
$arrayobject[] = 'one';

$iterator = $arrayobject->getIterator();

while($iterator->valid()) {
    echo $iterator->key() . ' => ' . $iterator->current() . "\n";

    $iterator->next();
}
?>

以上例程会输出：

0 => zero
1 => one

ArrayIterator::natsort
ArrayIterator::offsetExists
ArrayIterator


Check if offset exists

ArrayIterator::next
ArrayIterator::offsetGet
ArrayIterator
PHP Manual

ArrayIterator::offsetExists

(PHP 5 >= 5.0.0, PHP 7)

ArrayIterator::offsetExists — Check if offset exists

说明

public void ArrayIterator::offsetExists ( string $index )

Checks if the offset exists.

Warning

本函数还未编写文档，仅有参数列表。

参数

index

The offset being checked.

返回值

TRUE if the offset exists, otherwise FALSE

参见

  • ArrayIterator::valid() - Check whether array contains more entries

ArrayIterator::next
ArrayIterator::offsetGet
ArrayIterator


Get value for an offset

ArrayIterator::offsetExists
ArrayIterator::offsetSet
ArrayIterator
PHP Manual

ArrayIterator::offsetGet

(PHP 5 >= 5.0.0, PHP 7)

ArrayIterator::offsetGet — Get value for an offset

说明

public mixed ArrayIterator::offsetGet ( string $index )

Gets the value from the provided offset.

Warning

本函数还未编写文档，仅有参数列表。

参数

index

The offset to get the value from.

返回值

The value at offset index.

参见

  • ArrayIterator::offsetSet() - Set value for an offset
  • ArrayIterator::offsetUnset() - Unset value for an offset

ArrayIterator::offsetExists
ArrayIterator::offsetSet
ArrayIterator


Set value for an offset

ArrayIterator::offsetGet
ArrayIterator::offsetUnset
ArrayIterator
PHP Manual

ArrayIterator::offsetSet

(PHP 5 >= 5.0.0, PHP 7)

ArrayIterator::offsetSet — Set value for an offset

说明

public void ArrayIterator::offsetSet ( string $index , string $newval )

Sets a value for a given offset.

Warning

本函数还未编写文档，仅有参数列表。

参数

index

The index to set for.

newval

The new value to store at the index.

返回值

没有返回值。

参见

  • ArrayIterator::offsetGet() - Get value for an offset
  • ArrayIterator::offsetUnset() - Unset value for an offset

ArrayIterator::offsetGet
ArrayIterator::offsetUnset
ArrayIterator


Unset value for an offset

ArrayIterator::offsetSet
ArrayIterator::rewind
ArrayIterator
PHP Manual

ArrayIterator::offsetUnset

(PHP 5 >= 5.0.0, PHP 7)

ArrayIterator::offsetUnset — Unset value for an offset

说明

public void ArrayIterator::offsetUnset ( string $index )

Unsets a value for an offset.

Warning

本函数还未编写文档，仅有参数列表。

参数

index

The offset to unset.

返回值

没有返回值。

参见

  • ArrayIterator::offsetGet() - Get value for an offset
  • ArrayIterator::offsetSet() - Set value for an offset

ArrayIterator::offsetSet
ArrayIterator::rewind
ArrayIterator


Rewind array back to the start

ArrayIterator::offsetUnset
ArrayIterator::seek
ArrayIterator
PHP Manual

ArrayIterator::rewind

(PHP 5 >= 5.0.0, PHP 7)

ArrayIterator::rewind — Rewind array back to the start

说明

public void ArrayIterator::rewind ( void )

This rewinds the iterator to the beginning.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 ArrayIterator::rewind() example

<?php
$arrayobject = new ArrayObject();

$arrayobject[] = 'zero';
$arrayobject[] = 'one';
$arrayobject[] = 'two';

$iterator = $arrayobject->getIterator();

$iterator->next();
echo $iterator->key(); //1

$iterator->rewind(); //rewinding to the begining
echo $iterator->key(); //0
?>

ArrayIterator::offsetUnset
ArrayIterator::seek
ArrayIterator


Seek to position

ArrayIterator::rewind
ArrayIterator::serialize
ArrayIterator
PHP Manual

ArrayIterator::seek

(PHP 5 >= 5.0.0, PHP 7)

ArrayIterator::seek — Seek to position

说明

public void ArrayIterator::seek ( int $position )
Warning

本函数还未编写文档，仅有参数列表。

参数

position

The position to seek to.

返回值

没有返回值。

ArrayIterator::rewind
ArrayIterator::serialize
ArrayIterator


Serialize

ArrayIterator::seek
ArrayIterator::setFlags
ArrayIterator
PHP Manual

ArrayIterator::serialize

(PHP 5 >= 5.3.0, PHP 7)

ArrayIterator::serialize — Serialize

说明

public string ArrayIterator::serialize ( void )

Serialize.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The serialized ArrayIterator.

参见

  • ArrayIterator::unserialize() - Unserialize

ArrayIterator::seek
ArrayIterator::setFlags
ArrayIterator


Set behaviour flags

ArrayIterator::serialize
ArrayIterator::uasort
ArrayIterator
PHP Manual

ArrayIterator::setFlags

(PHP 5 >= 5.1.0, PHP 7)

ArrayIterator::setFlags — Set behaviour flags

说明

public void ArrayIterator::setFlags ( string $flags )

Sets behaviour flags.

Warning

本函数还未编写文档，仅有参数列表。

参数

flags

A bitmask as follows:

  • 0 = Properties of the object have their normal functionality when accessed as list (var_dump, foreach, etc.).
  • 1 = Array indices can be accessed as properties in read/write.

返回值

没有返回值。

参见

  • ArrayIterator::getFlags() - Get flags

ArrayIterator::serialize
ArrayIterator::uasort
ArrayIterator


User defined sort

ArrayIterator::setFlags
ArrayIterator::uksort
ArrayIterator
PHP Manual

ArrayIterator::uasort

(PHP 5 >= 5.2.0, PHP 7)

ArrayIterator::uasort — User defined sort

说明

public void ArrayIterator::uasort ( string $cmp_function )

Sort the entries by values using user defined function.

Warning

本函数还未编写文档，仅有参数列表。

参数

cmp_function

The compare function used for the sort.

返回值

没有返回值。

参见

  • ArrayIterator::uksort() - User defined sort
  • usort() - 使用用户自定义的比较函数对数组中的值进行排序

ArrayIterator::setFlags
ArrayIterator::uksort
ArrayIterator


User defined sort

ArrayIterator::uasort
ArrayIterator::unserialize
ArrayIterator
PHP Manual

ArrayIterator::uksort

(PHP 5 >= 5.2.0, PHP 7)

ArrayIterator::uksort — User defined sort

说明

public void ArrayIterator::uksort ( string $cmp_function )

Sort the entries by key using user defined function.

Warning

本函数还未编写文档，仅有参数列表。

参数

cmp_function

The compare function used for the sort.

返回值

没有返回值。

参见

  • ArrayIterator::uasort() - User defined sort
  • uksort() - 使用用户自定义的比较函数对数组中的键名进行排序

ArrayIterator::uasort
ArrayIterator::unserialize
ArrayIterator


Unserialize

ArrayIterator::uksort
ArrayIterator::valid
ArrayIterator
PHP Manual

ArrayIterator::unserialize

(PHP 5 >= 5.3.0, PHP 7)

ArrayIterator::unserialize — Unserialize

说明

public string ArrayIterator::unserialize ( string $serialized )

Unserialize.

Warning

本函数还未编写文档，仅有参数列表。

参数

serialized

The serialized ArrayIterator object to be unserialized.

返回值

The ArrayIterator.

参见

  • ArrayIterator::serialize() - Serialize

ArrayIterator::uksort
ArrayIterator::valid
ArrayIterator


Check whether array contains more entries

ArrayIterator::unserialize
CachingIterator
ArrayIterator
PHP Manual

ArrayIterator::valid

(PHP 5 >= 5.0.0, PHP 7)

ArrayIterator::valid — Check whether array contains more entries

说明

public bool ArrayIterator::valid ( void )

Checks if the array contains any more entries.

参数

此函数没有参数。

返回值

Returns TRUE if the iterator is valid, otherwise FALSE

范例

Example #1 ArrayIterator::valid() example

<?php
$array = array('1' => 'one');

$arrayobject = new ArrayObject($array);
$iterator = $arrayobject->getIterator();

var_dump($iterator->valid()); //bool(true)

$iterator->next(); // advance to the next item

//bool(false) because there is only one array element
var_dump($iterator->valid());
?>

ArrayIterator::unserialize
CachingIterator
ArrayIterator


The CachingIterator class

(PHP 5, PHP 7)

简介

This object supports cached iteration over another iterator.

类摘要

CachingIterator extends IteratorIterator implements OuterIterator , ArrayAccess , Countable {
/* 常量 */
const integer CALL_TOSTRING = 1 ;
const integer CATCH_GET_CHILD = 16 ;
const integer TOSTRING_USE_KEY = 2 ;
const integer TOSTRING_USE_CURRENT = 4 ;
const integer TOSTRING_USE_INNER = 8 ;
const integer FULL_CACHE = 256 ;
/* 方法 */
public __construct ( Iterator $iterator [, int $flags = self::CALL_TOSTRING ] )
public int count ( void )
public void current ( void )
public array getCache ( void )
public int getFlags ( void )
public Iterator getInnerIterator ( void )
public void hasNext ( void )
public scalar key ( void )
public void next ( void )
public void offsetExists ( string $index )
public void offsetGet ( string $index )
public void offsetSet ( string $index , string $newval )
public void offsetUnset ( string $index )
public void rewind ( void )
public void setFlags ( int $flags )
public void __toString ( void )
public void valid ( void )
}

预定义常量

CachingIterator::CALL_TOSTRING

Convert every element to string.

CachingIterator::CATCH_GET_CHILD

Don't throw exception in accessing children.

CachingIterator::TOSTRING_USE_KEY

Use key for conversion to string.

CachingIterator::TOSTRING_USE_CURRENT

Use current for conversion to string.

CachingIterator::TOSTRING_USE_INNER

Use inner for conversion to string.

CachingIterator::FULL_CACHE

Cache all read data.

Table of Contents

  • CachingIterator::__construct — Construct a new CachingIterator object for the iterator.
  • CachingIterator::count — The number of elements in the iterator
  • CachingIterator::current — Return the current element
  • CachingIterator::getCache — Retrieve the contents of the cache
  • CachingIterator::getFlags — Get flags used
  • CachingIterator::getInnerIterator — Returns the inner iterator
  • CachingIterator::hasNext — Check whether the inner iterator has a valid next element
  • CachingIterator::key — Return the key for the current element
  • CachingIterator::next — Move the iterator forward
  • CachingIterator::offsetExists — The offsetExists purpose
  • CachingIterator::offsetGet — The offsetGet purpose
  • CachingIterator::offsetSet — The offsetSet purpose
  • CachingIterator::offsetUnset — The offsetUnset purpose
  • CachingIterator::rewind — Rewind the iterator
  • CachingIterator::setFlags — The setFlags purpose
  • CachingIterator::__toString — Return the string representation of the current element
  • CachingIterator::valid — Check whether the current element is valid
ArrayIterator::valid
CachingIterator::__construct
迭代器


Construct a new CachingIterator object for the iterator.

CachingIterator
CachingIterator::count
CachingIterator
PHP Manual

CachingIterator::__construct

(PHP 5, PHP 7)

CachingIterator::__construct — Construct a new CachingIterator object for the iterator.

说明

public CachingIterator::__construct ( Iterator $iterator [, int $flags = self::CALL_TOSTRING ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

iterator

Iterator to cache

flags

Bitmask of flags.

CachingIterator
CachingIterator::count
CachingIterator


The number of elements in the iterator

CachingIterator::__construct
CachingIterator::current
CachingIterator
PHP Manual

CachingIterator::count

(PHP 5 >= 5.2.2, PHP 7)

CachingIterator::count — The number of elements in the iterator

说明

public int CachingIterator::count ( void )
Warning

本函数还未编写文档，仅有参数列表。

May return the number of elements in the iterator.

参数

此函数没有参数。

返回值

The count of the elements iterated over.

CachingIterator::__construct
CachingIterator::current
CachingIterator


Return the current element

CachingIterator::count
CachingIterator::getCache
CachingIterator
PHP Manual

CachingIterator::current

(PHP 5, PHP 7)

CachingIterator::current — Return the current element

说明

public void CachingIterator::current ( void )
Warning

本函数还未编写文档，仅有参数列表。

May return the current element in the iteration.

参数

此函数没有参数。

返回值

Mixed

参见

  • Iterator::current() - 返回当前元素

CachingIterator::count
CachingIterator::getCache
CachingIterator


Retrieve the contents of the cache

CachingIterator::current
CachingIterator::getFlags
CachingIterator
PHP Manual

CachingIterator::getCache

(PHP 5 >= 5.2.0, PHP 7)

CachingIterator::getCache — Retrieve the contents of the cache

说明

public array CachingIterator::getCache ( void )

Retrieve the contents of the cache.

Note:

The CachingIterator::FULL_CACHE flag must be being used.

参数

此函数没有参数。

返回值

An array containing the cache items.

错误／异常

Throws a BadMethodCallException when the CachingIterator::FULL_CACHE flag is not being used.

范例

Example #1 CachingIterator::getCache() example

<?php
$iterator = new ArrayIterator(array(1, 2, 3));
$cache    = new CachingIterator($iterator, CachingIterator::FULL_CACHE);

$cache->next();
$cache->next();
var_dump($cache->getCache());

$cache->next();
var_dump($cache->getCache());
?>

以上例程会输出：

array(2) {
  [0]=>
  int(1)
  [1]=>
  int(2)
}
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}

CachingIterator::current
CachingIterator::getFlags
CachingIterator


Get flags used

CachingIterator::getCache
CachingIterator::getInnerIterator
CachingIterator
PHP Manual

CachingIterator::getFlags

(PHP 5 >= 5.2.0, PHP 7)

CachingIterator::getFlags — Get flags used

说明

public int CachingIterator::getFlags ( void )
Warning

本函数还未编写文档，仅有参数列表。

Get the bitmask of the flags used for this CachingIterator instance.

参数

此函数没有参数。

返回值

Description...

CachingIterator::getCache
CachingIterator::getInnerIterator
CachingIterator


Returns the inner iterator

CachingIterator::getFlags
CachingIterator::hasNext
CachingIterator
PHP Manual

CachingIterator::getInnerIterator

(PHP 5, PHP 7)

CachingIterator::getInnerIterator — Returns the inner iterator

说明

public Iterator CachingIterator::getInnerIterator ( void )
Warning

本函数还未编写文档，仅有参数列表。

Returns the iterator sent to the constructor.

参数

此函数没有参数。

返回值

Returns an object implementing the Iterator interface.

CachingIterator::getFlags
CachingIterator::hasNext
CachingIterator


Check whether the inner iterator has a valid next element

CachingIterator::getInnerIterator
CachingIterator::key
CachingIterator
PHP Manual

CachingIterator::hasNext

(PHP 5, PHP 7)

CachingIterator::hasNext — Check whether the inner iterator has a valid next element

说明

public void CachingIterator::hasNext ( void )
Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

CachingIterator::getInnerIterator
CachingIterator::key
CachingIterator


Return the key for the current element

CachingIterator::hasNext
CachingIterator::next
CachingIterator
PHP Manual

CachingIterator::key

(PHP 5, PHP 7)

CachingIterator::key — Return the key for the current element

说明

public scalar CachingIterator::key ( void )
Warning

本函数还未编写文档，仅有参数列表。

This method may return a key for the current element.

参数

此函数没有参数。

CachingIterator::hasNext
CachingIterator::next
CachingIterator


Move the iterator forward

CachingIterator::key
CachingIterator::offsetExists
CachingIterator
PHP Manual

CachingIterator::next

(PHP 5, PHP 7)

CachingIterator::next — Move the iterator forward

说明

public void CachingIterator::next ( void )
Warning

本函数还未编写文档，仅有参数列表。

Move the iterator forward.

参数

此函数没有参数。

返回值

没有返回值。

CachingIterator::key
CachingIterator::offsetExists
CachingIterator


The offsetExists purpose

CachingIterator::next
CachingIterator::offsetGet
CachingIterator
PHP Manual

CachingIterator::offsetExists

(PHP 5 >= 5.2.0, PHP 7)

CachingIterator::offsetExists — The offsetExists purpose

说明

public void CachingIterator::offsetExists ( string $index )
Warning

本函数还未编写文档，仅有参数列表。

参数

index

The index being checked.

返回值

Returns TRUE if an entry referenced by the offset exists, FALSE otherwise.

CachingIterator::next
CachingIterator::offsetGet
CachingIterator


The offsetGet purpose

CachingIterator::offsetExists
CachingIterator::offsetSet
CachingIterator
PHP Manual

CachingIterator::offsetGet

(PHP 5 >= 5.2.0, PHP 7)

CachingIterator::offsetGet — The offsetGet purpose

说明

public void CachingIterator::offsetGet ( string $index )
Warning

本函数还未编写文档，仅有参数列表。

参数

index

Description...

返回值

Description...

CachingIterator::offsetExists
CachingIterator::offsetSet
CachingIterator


The offsetSet purpose

CachingIterator::offsetGet
CachingIterator::offsetUnset
CachingIterator
PHP Manual

CachingIterator::offsetSet

(PHP 5 >= 5.2.0, PHP 7)

CachingIterator::offsetSet — The offsetSet purpose

说明

public void CachingIterator::offsetSet ( string $index , string $newval )
Warning

本函数还未编写文档，仅有参数列表。

参数

index

The index of the element to be set.

newval

The new value for the index.

返回值

没有返回值。

CachingIterator::offsetGet
CachingIterator::offsetUnset
CachingIterator


The offsetUnset purpose

CachingIterator::offsetSet
CachingIterator::rewind
CachingIterator
PHP Manual

CachingIterator::offsetUnset

(PHP 5 >= 5.2.0, PHP 7)

CachingIterator::offsetUnset — The offsetUnset purpose

说明

public void CachingIterator::offsetUnset ( string $index )
Warning

本函数还未编写文档，仅有参数列表。

参数

index

The index of the element to be unset.

返回值

没有返回值。

CachingIterator::offsetSet
CachingIterator::rewind
CachingIterator


Rewind the iterator

CachingIterator::offsetUnset
CachingIterator::setFlags
CachingIterator
PHP Manual

CachingIterator::rewind

(PHP 5, PHP 7)

CachingIterator::rewind — Rewind the iterator

说明

public void CachingIterator::rewind ( void )
Warning

本函数还未编写文档，仅有参数列表。

Rewind the iterator.

参数

此函数没有参数。

返回值

没有返回值。

CachingIterator::offsetUnset
CachingIterator::setFlags
CachingIterator


The setFlags purpose

CachingIterator::rewind
CachingIterator::__toString
CachingIterator
PHP Manual

CachingIterator::setFlags

(PHP 5 >= 5.2.0, PHP 7)

CachingIterator::setFlags — The setFlags purpose

说明

public void CachingIterator::setFlags ( int $flags )
Warning

本函数还未编写文档，仅有参数列表。

Set the flags for the CachingIterator object.

参数

flags

Bitmask of the flags to set.

返回值

没有返回值。

CachingIterator::rewind
CachingIterator::__toString
CachingIterator


Return the string representation of the current element

CachingIterator::setFlags
CachingIterator::valid
CachingIterator
PHP Manual

CachingIterator::__toString

(PHP 5, PHP 7)

CachingIterator::__toString — Return the string representation of the current element

说明

public void CachingIterator::__toString ( void )
Warning

本函数还未编写文档，仅有参数列表。

Get the string representation of the current element.

参数

此函数没有参数。

返回值

The string representation of the current element.

CachingIterator::setFlags
CachingIterator::valid
CachingIterator


Check whether the current element is valid

CachingIterator::__toString
CallbackFilterIterator
CachingIterator
PHP Manual

CachingIterator::valid

(PHP 5, PHP 7)

CachingIterator::valid — Check whether the current element is valid

说明

public void CachingIterator::valid ( void )
Warning

本函数还未编写文档，仅有参数列表。

Check whether the current element is valid.

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

CachingIterator::__toString
CallbackFilterIterator
CachingIterator


The CallbackFilterIterator class

(PHP 5 >= 5.4.0, PHP 7)

简介

类摘要

CallbackFilterIterator extends FilterIterator implements OuterIterator {
/* 方法 */
public __construct ( Iterator $iterator , callable $callback )
public string accept ( void )
/* 继承的方法 */
public abstract bool FilterIterator::accept ( void )
public FilterIterator::__construct ( Iterator $iterator )
public mixed FilterIterator::current ( void )
public Iterator FilterIterator::getInnerIterator ( void )
public mixed FilterIterator::key ( void )
public void FilterIterator::next ( void )
public void FilterIterator::rewind ( void )
public bool FilterIterator::valid ( void )
}

范例

The callback should accept up to three arguments: the current item, the current key and the iterator, respectively.

Example #1 Available callback arguments

<?php

/**
 * Callback for CallbackFilterIterator
 *
 * @param $current   Current item's value
 * @param $key       Current item's key
 * @param $iterator  Iterator being filtered
 * @return boolean   TRUE to accept the current item, FALSE otherwise
 */
function my_callback($current, $key, $iterator) {
    // Your filtering code here
}

?>

Any callable may be used; such as a string containing a function name, an array for a method, or an anonymous function.

Example #2 Callback basic examples

<?php

$dir = new FilesystemIterator(__DIR__);

// Filter large files ( > 100MB)
function is_large_file($current) {
    return $current->isFile() && $current->getSize() > 104857600;
}
$large_files = new CallbackFilterIterator($dir, 'is_large_file');

// Filter directories
$files = new CallbackFilterIterator($dir, function ($current, $key, $iterator) {
    return $current->isDir() && ! $iterator->isDot();
});

?>

Table of Contents

  • CallbackFilterIterator::accept — Calls the callback with the current value, the current key and the inner iterator as arguments
  • CallbackFilterIterator::__construct — Create a filtered iterator from another iterator
CachingIterator::valid
CallbackFilterIterator::accept
迭代器


Calls the callback with the current value, the current key and the inner iterator as arguments

CallbackFilterIterator
CallbackFilterIterator::__construct
CallbackFilterIterator
PHP Manual

CallbackFilterIterator::accept

(PHP 5 >= 5.4.0, PHP 7)

CallbackFilterIterator::accept — Calls the callback with the current value, the current key and the inner iterator as arguments

说明

public string CallbackFilterIterator::accept ( void )

This method calls the callback with the current value, current key and the inner iterator.

The callback is expected to return TRUE if the current item is to be accepted, or FALSE otherwise.

参数

此函数没有参数。

返回值

Returns TRUE to accept the current item, or FALSE otherwise.

参见

  • CallbackFilterIterator Examples
  • CallbackFilterIterator::__construct() - Create a filtered iterator from another iterator

CallbackFilterIterator
CallbackFilterIterator::__construct
CallbackFilterIterator


Create a filtered iterator from another iterator

CallbackFilterIterator::accept
DirectoryIterator
CallbackFilterIterator
PHP Manual

CallbackFilterIterator::__construct

(PHP 5 >= 5.4.0, PHP 7)

CallbackFilterIterator::__construct — Create a filtered iterator from another iterator

说明

public CallbackFilterIterator::__construct ( Iterator $iterator , callable $callback )

Creates a filtered iterator using the callback to determine which items are accepted or rejected.

参数

iterator

The iterator to be filtered.

callback

The callback, which should return TRUE to accept the current item or FALSE otherwise. See Examples.

May be any valid callable value.

返回值

没有返回值。

参见

  • CallbackFilterIterator Examples
  • CallbackFilterIterator::accept() - Calls the callback with the current value, the current key and the inner iterator as arguments

CallbackFilterIterator::accept
DirectoryIterator
CallbackFilterIterator


The DirectoryIterator class

(PHP 5, PHP 7)

简介

The DirectoryIterator class provides a simple interface for viewing the contents of filesystem directories.

类摘要

DirectoryIterator extends SplFileInfo implements SeekableIterator {
/* 方法 */
public __construct ( string $path )
public DirectoryIterator current ( void )
public int getATime ( void )
public string getBasename ([ string $suffix ] )
public int getCTime ( void )
public string getExtension ( void )
public string getFilename ( void )
public int getGroup ( void )
public int getInode ( void )
public int getMTime ( void )
public int getOwner ( void )
public string getPath ( void )
public string getPathname ( void )
public int getPerms ( void )
public int getSize ( void )
public string getType ( void )
public bool isDir ( void )
public bool isDot ( void )
public bool isExecutable ( void )
public bool isFile ( void )
public bool isLink ( void )
public bool isReadable ( void )
public bool isWritable ( void )
public string key ( void )
public void next ( void )
public void rewind ( void )
public void seek ( int $position )
public string __toString ( void )
public bool valid ( void )
}

更新日志

版本 | 说明
5.1.2 | DirectoryIterator extends SplFileInfo.

Table of Contents

  • DirectoryIterator::__construct — Constructs a new directory iterator from a path
  • DirectoryIterator::current — Return the current DirectoryIterator item.
  • DirectoryIterator::getATime — Get last access time of the current DirectoryIterator item
  • DirectoryIterator::getBasename — Get base name of current DirectoryIterator item.
  • DirectoryIterator::getCTime — Get inode change time of the current DirectoryIterator item
  • DirectoryIterator::getExtension — Gets the file extension
  • DirectoryIterator::getFilename — Return file name of current DirectoryIterator item.
  • DirectoryIterator::getGroup — Get group for the current DirectoryIterator item
  • DirectoryIterator::getInode — Get inode for the current DirectoryIterator item
  • DirectoryIterator::getMTime — Get last modification time of current DirectoryIterator item
  • DirectoryIterator::getOwner — Get owner of current DirectoryIterator item
  • DirectoryIterator::getPath — Get path of current Iterator item without filename
  • DirectoryIterator::getPathname — Return path and file name of current DirectoryIterator item
  • DirectoryIterator::getPerms — Get the permissions of current DirectoryIterator item
  • DirectoryIterator::getSize — Get size of current DirectoryIterator item
  • DirectoryIterator::getType — Determine the type of the current DirectoryIterator item
  • DirectoryIterator::isDir — Determine if current DirectoryIterator item is a directory
  • DirectoryIterator::isDot — Determine if current DirectoryIterator item is '.' or '..'
  • DirectoryIterator::isExecutable — Determine if current DirectoryIterator item is executable
  • DirectoryIterator::isFile — Determine if current DirectoryIterator item is a regular file
  • DirectoryIterator::isLink — Determine if current DirectoryIterator item is a symbolic link
  • DirectoryIterator::isReadable — Determine if current DirectoryIterator item can be read
  • DirectoryIterator::isWritable — Determine if current DirectoryIterator item can be written to
  • DirectoryIterator::key — Return the key for the current DirectoryIterator item
  • DirectoryIterator::next — Move forward to next DirectoryIterator item
  • DirectoryIterator::rewind — Rewind the DirectoryIterator back to the start
  • DirectoryIterator::seek — Seek to a DirectoryIterator item
  • DirectoryIterator::__toString — Get file name as a string
  • DirectoryIterator::valid — Check whether current DirectoryIterator position is a valid file
CallbackFilterIterator::__construct
DirectoryIterator::__construct
迭代器


Constructs a new directory iterator from a path

DirectoryIterator
DirectoryIterator::current
DirectoryIterator
PHP Manual

DirectoryIterator::__construct

(PHP 5, PHP 7)

DirectoryIterator::__construct — Constructs a new directory iterator from a path

说明

public DirectoryIterator::__construct ( string $path )

Constructs a new directory iterator from a path.

参数

path

The path of the directory to traverse.

错误／异常

Throws an UnexpectedValueException if the path cannot be opened.

Throws a RuntimeException if the path is an empty string.

更新日志

版本 | 说明
5.3.0 | Throws UnexpectedValueException if the path cannot be opened.
5.1.3 | Throws RuntimeException if the path is an empty string.
5.1.0 | Throws RuntimeException on error. Previously, threw Exception.

范例

Example #1 A DirectoryIterator::__construct() example

This example will list the contents of the directory containing the script.

<?php
$dir = new DirectoryIterator(dirname(__FILE__));
foreach ($dir as $fileinfo) {
    if (!$fileinfo->isDot()) {
        var_dump($fileinfo->getFilename());
    }
}
?>

参见

  • SplFileInfo
  • Iterator

DirectoryIterator
DirectoryIterator::current
DirectoryIterator


Return the current DirectoryIterator item.

DirectoryIterator::__construct
DirectoryIterator::getATime
DirectoryIterator
PHP Manual

DirectoryIterator::current

(PHP 5, PHP 7)

DirectoryIterator::current — Return the current DirectoryIterator item.

说明

public DirectoryIterator DirectoryIterator::current ( void )

Get the current DirectoryIterator item.

参数

此函数没有参数。

返回值

The current DirectoryIterator item.

范例

Example #1 A DirectoryIterator::current() example

This example will list the contents of the directory containing the script.

<?php
$iterator = new DirectoryIterator(__DIR__);
while($iterator->valid()) {
    $file = $iterator->current();
    echo $iterator->key() . " => " . $file->getFilename() . "\n";
    $iterator->next();
}
?>

以上例程的输出类似于：

0 => .
1 => ..
2 => apple.jpg
3 => banana.jpg
4 => index.php
5 => pear.jpg

参见

  • DirectoryIterator::key() - Return the key for the current DirectoryIterator item
  • DirectoryIterator::next() - Move forward to next DirectoryIterator item
  • DirectoryIterator::rewind() - Rewind the DirectoryIterator back to the start
  • DirectoryIterator::valid() - Check whether current DirectoryIterator position is a valid file
  • Iterator::current() - 返回当前元素

DirectoryIterator::__construct
DirectoryIterator::getATime
DirectoryIterator


Get last access time of the current DirectoryIterator item

DirectoryIterator::current
DirectoryIterator::getBasename
DirectoryIterator
PHP Manual

DirectoryIterator::getATime

(PHP 5, PHP 7)

DirectoryIterator::getATime — Get last access time of the current DirectoryIterator item

说明

public int DirectoryIterator::getATime ( void )

Get the last access time of the current DirectoryIterator item.

参数

此函数没有参数。

返回值

Returns the time the file was last accessed, as a Unix timestamp.

范例

Example #1 A DirectoryIterator::getATime() example

Displays a list of the files in the directory of the script and their last access times.

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));
foreach ($iterator as $fileinfo) {
    if ($fileinfo->isFile()) {
        echo $fileinfo->getFilename() . " " . $fileinfo->getATime() . "\n";
    }
}
?>

以上例程的输出类似于：

apple.jpg 1240047118
banana.jpg 1240065176
index.php 1240047208
pear.jpg 12240047979

参见

  • DirectoryIterator::getCTime() - Get inode change time of the current DirectoryIterator item
  • DirectoryIterator::getMTime() - Get last modification time of current DirectoryIterator item
  • fileatime() - 取得文件的上次访问时间

DirectoryIterator::current
DirectoryIterator::getBasename
DirectoryIterator


Get base name of current DirectoryIterator item.

DirectoryIterator::getATime
DirectoryIterator::getCTime
DirectoryIterator
PHP Manual

DirectoryIterator::getBasename

(PHP 5 >= 5.2.2, PHP 7)

DirectoryIterator::getBasename — Get base name of current DirectoryIterator item.

说明

public string DirectoryIterator::getBasename ([ string $suffix ] )

Get the base name of the current DirectoryIterator item.

参数

suffix

If the base name ends in suffix, this will be cut.

返回值

The base name of the current DirectoryIterator item.

范例

Example #1 A DirectoryIterator::getBasename() example

This example will list the full base name and the base name with suffix .jpg removed for the files in the directory containing the script.

<?php
$dir = new DirectoryIterator(dirname(__FILE__));
foreach ($dir as $fileinfo) {
    if ($fileinfo->isFile()) {
        echo $fileinfo->getBasename() . "\n";
        echo $fileinfo->getBasename('.jpg') . "\n";
    }
}
?>

以上例程的输出类似于：

apple.jpg
apple
banana.jpg
banana
index.php
index.php
pear.jpg
pear

参见

  • DirectoryIterator::getFilename() - Return file name of current DirectoryIterator item.
  • DirectoryIterator::getPath() - Get path of current Iterator item without filename
  • DirectoryIterator::getPathname() - Return path and file name of current DirectoryIterator item
  • basename() - 返回路径中的文件名部分
  • pathinfo() - 返回文件路径的信息

DirectoryIterator::getATime
DirectoryIterator::getCTime
DirectoryIterator


Get inode change time of the current DirectoryIterator item

DirectoryIterator::getBasename
DirectoryIterator::getExtension
DirectoryIterator
PHP Manual

DirectoryIterator::getCTime

(PHP 5, PHP 7)

DirectoryIterator::getCTime — Get inode change time of the current DirectoryIterator item

说明

public int DirectoryIterator::getCTime ( void )

Get the inode change time for the current DirectoryIterator item.

参数

此函数没有参数。

返回值

Returns the last change time of the file, as a Unix timestamp.

范例

Example #1 DirectoryIterator::getCTime() example

This example displays the file name and last change time of the files in the directory containing the script.

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));
foreach ($iterator as $fileinfo) {
    if ($fileinfo->isFile()) {
        echo $fileinfo->getFilename() . " changed at " . $fileinfo->getCTime() . "\n";
    }
}
?>

以上例程的输出类似于：

apple.jpg changed at 1240398312
banana.jpg changed at 1238605440
index.php changed at 1240398935
pear.jpg changed at 1237423740

参见

  • DirectoryIterator::getATime() - Get last access time of the current DirectoryIterator item
  • DirectoryIterator::getMTime() - Get last modification time of current DirectoryIterator item
  • filectime() - 取得文件的 inode 修改时间

DirectoryIterator::getBasename
DirectoryIterator::getExtension
DirectoryIterator


Gets the file extension

DirectoryIterator::getCTime
DirectoryIterator::getFilename
DirectoryIterator
PHP Manual

DirectoryIterator::getExtension

(PHP 5 >= 5.3.6, PHP 7)

DirectoryIterator::getExtension — Gets the file extension

说明

public string DirectoryIterator::getExtension ( void )

Retrieves the file extension.

参数

此函数没有参数。

返回值

Returns a string containing the file extension, or an empty string if the file has no extension.

范例

Example #1 DirectoryIterator::getExtension() example

<?php

$directory = new DirectoryIterator(__DIR__);
foreach ($directory as $fileinfo) {
    if ($fileinfo->isFile()) {
        echo $fileinfo->getExtension() . "\n";
    }
}

?>

以上例程的输出类似于：

php
txt
jpg
gz

注释

Note:

This method is only available as of PHP 5.3.6. Another way of getting the extension is to use the pathinfo() function.

<?php
$extension = pathinfo($fileinfo->getFilename(), PATHINFO_EXTENSION);
?>

参见

  • DirectoryIterator::getFilename() - Return file name of current DirectoryIterator item.
  • DirectoryIterator::getBasename() - Get base name of current DirectoryIterator item.
  • pathinfo() - 返回文件路径的信息
DirectoryIterator::getCTime
DirectoryIterator::getFilename
DirectoryIterator


Return file name of current DirectoryIterator item.

DirectoryIterator::getExtension
DirectoryIterator::getGroup
DirectoryIterator
PHP Manual

DirectoryIterator::getFilename

(PHP 5, PHP 7)

DirectoryIterator::getFilename — Return file name of current DirectoryIterator item.

说明

public string DirectoryIterator::getFilename ( void )

Get the file name of the current DirectoryIterator item.

参数

此函数没有参数。

返回值

Returns the file name of the current DirectoryIterator item.

范例

Example #1 A DirectoryIterator::getFilename() example

This example will list the contents of the directory containing the script.

<?php
$dir = new DirectoryIterator(dirname(__FILE__));
foreach ($dir as $fileinfo) {
    echo $fileinfo->getFilename() . "\n";
}
?>

以上例程的输出类似于：

.
..
apple.jpg
banana.jpg
index.php
pear.jpg

参见

  • DirectoryIterator::getBasename() - Get base name of current DirectoryIterator item.
  • DirectoryIterator::getPath() - Get path of current Iterator item without filename
  • DirectoryIterator::getPathname() - Return path and file name of current DirectoryIterator item
  • pathinfo() - 返回文件路径的信息

DirectoryIterator::getExtension
DirectoryIterator::getGroup
DirectoryIterator


Get group for the current DirectoryIterator item

DirectoryIterator::getFilename
DirectoryIterator::getInode
DirectoryIterator
PHP Manual

DirectoryIterator::getGroup

(PHP 5, PHP 7)

DirectoryIterator::getGroup — Get group for the current DirectoryIterator item

说明

public int DirectoryIterator::getGroup ( void )

Get the group id of the file.

参数

此函数没有参数。

返回值

Returns the group id of the current DirectoryIterator item in numerical format.

范例

Example #1 DirectoryIterator::getGroup() example

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));
$groupid  = $iterator->getGroup();
echo 'Directory belongs to group id ' . $groupid . "\n";
print_r(posix_getgrgid($groupid));
?>

以上例程的输出类似于：

Directory belongs to group id 42
Array
(
    [name]    => toons
    [passwd]  => x
    [members] => Array
        (
            [0] => tom
            [1] => jerry
        )
    [gid]     => 42
)

参见

  • DirectoryIterator::getiNode() - Get inode for the current DirectoryIterator item
  • DirectoryIterator::getOwner() - Get owner of current DirectoryIterator item
  • DirectoryIterator::getPerms() - Get the permissions of current DirectoryIterator item
  • filegroup() - 取得文件的组
  • posix_getgrgid() - Return info about a group by group id

DirectoryIterator::getFilename
DirectoryIterator::getInode
DirectoryIterator


Get inode for the current DirectoryIterator item

DirectoryIterator::getGroup
DirectoryIterator::getMTime
DirectoryIterator
PHP Manual

DirectoryIterator::getInode

(PHP 5, PHP 7)

DirectoryIterator::getInode — Get inode for the current DirectoryIterator item

说明

public int DirectoryIterator::getInode ( void )

Get the inode number for the current DirectoryIterator item.

参数

此函数没有参数。

返回值

Returns the inode number for the file.

范例

Example #1 DirectoryIterator::getInode() example

This example displays the inode number for the directory containing the script.

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));
echo $iterator->getInode();
?>

参见

  • DirectoryIterator::getGroup() - Get group for the current DirectoryIterator item
  • DirectoryIterator::getOwner() - Get owner of current DirectoryIterator item
  • DirectoryIterator::getPerms() - Get the permissions of current DirectoryIterator item
  • fileinode() - 取得文件的 inode

DirectoryIterator::getGroup
DirectoryIterator::getMTime
DirectoryIterator


Get last modification time of current DirectoryIterator item

DirectoryIterator::getInode
DirectoryIterator::getOwner
DirectoryIterator
PHP Manual

DirectoryIterator::getMTime

(PHP 5, PHP 7)

DirectoryIterator::getMTime — Get last modification time of current DirectoryIterator item

说明

public int DirectoryIterator::getMTime ( void )

Get the last modification time of the current DirectoryIterator item, as a Unix timestamp.

参数

此函数没有参数。

返回值

The last modification time of the file, as a Unix timestamp.

范例

Example #1 A DirectoryIterator::getMTime() example

Displays a list of the files in the directory of the script and their last modified times.

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));
foreach ($iterator as $fileinfo) {
    if ($fileinfo->isFile()) {
        echo $fileinfo->getFilename() . " " . $fileinfo->getMTime() . "\n";
    }
}
?>

以上例程的输出类似于：

apple.jpg 1240047118
banana.jpg 1240065176
index.php 1240047208
pear.jpg 12240047979

参见

  • DirectoryIterator::getATime() - Get last access time of the current DirectoryIterator item
  • DirectoryIterator::getCTime() - Get inode change time of the current DirectoryIterator item
  • filemtime() - 取得文件修改时间

DirectoryIterator::getInode
DirectoryIterator::getOwner
DirectoryIterator


Get owner of current DirectoryIterator item

DirectoryIterator::getMTime
DirectoryIterator::getPath
DirectoryIterator
PHP Manual

DirectoryIterator::getOwner

(PHP 5, PHP 7)

DirectoryIterator::getOwner — Get owner of current DirectoryIterator item

说明

public int DirectoryIterator::getOwner ( void )

Get the owner of the current DirectoryIterator item, in numerical format.

参数

此函数没有参数。

返回值

The file owner of the file, in numerical format.

范例

Example #1 DirectoryIterator::getOwner() example

This example displays the owner of the directory which contains the script.

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));
print_r(posix_getpwuid($iterator->getOwner()));
?>

以上例程的输出类似于：

Array
(
    [name] => tom
    [passwd] => x
    [uid] => 501
    [gid] => 42
    [gecos] => Tom Cat
    [dir] => /home/tom
    [shell] => /bin/bash
)

参见

  • DirectoryIterator::getGroup() - Get group for the current DirectoryIterator item
  • DirectoryIterator::getiNode() - Get inode for the current DirectoryIterator item
  • DirectoryIterator::getPerms() - Get the permissions of current DirectoryIterator item
  • posix_getpwuid() - Return info about a user by user id

DirectoryIterator::getMTime
DirectoryIterator::getPath
DirectoryIterator


Get path of current Iterator item without filename

DirectoryIterator::getOwner
DirectoryIterator::getPathname
DirectoryIterator
PHP Manual

DirectoryIterator::getPath

(PHP 5, PHP 7)

DirectoryIterator::getPath — Get path of current Iterator item without filename

说明

public string DirectoryIterator::getPath ( void )

Get the path to the current DirectoryIterator item.

参数

此函数没有参数。

返回值

Returns the path to the file, omitting the file name and any trailing slash.

范例

Example #1 DirectoryIterator::getPath() example

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));
echo $iterator->getPath();
?>

以上例程的输出类似于：

/home/examples/public_html

参见

  • DirectoryIterator::getBasename() - Get base name of current DirectoryIterator item.
  • DirectoryIterator::getFilename() - Return file name of current DirectoryIterator item.
  • DirectoryIterator::getPathname() - Return path and file name of current DirectoryIterator item
  • pathinfo() - 返回文件路径的信息

DirectoryIterator::getOwner
DirectoryIterator::getPathname
DirectoryIterator


Return path and file name of current DirectoryIterator item

DirectoryIterator::getPath
DirectoryIterator::getPerms
DirectoryIterator
PHP Manual

DirectoryIterator::getPathname

(PHP 5, PHP 7)

DirectoryIterator::getPathname — Return path and file name of current DirectoryIterator item

说明

public string DirectoryIterator::getPathname ( void )

Get the path and file name of the current file.

参数

此函数没有参数。

返回值

Returns the path and file name of current file. Directories do not have a trailing slash.

范例

Example #1 DirectoryIterator::getPathname() example

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));
foreach ($iterator as $fileinfo) {
    echo $fileinfo->getPathname() . "\n";
}
?>

以上例程的输出类似于：

/home/examples/.
/home/examples/..
/home/examples/apple.jpg
/home/examples/banana.jpg
/home/examples/getpathname.php
/home/examples/pear.jpg

参见

  • DirectoryIterator::getBasename() - Get base name of current DirectoryIterator item.
  • DirectoryIterator::getFilename() - Return file name of current DirectoryIterator item.
  • DirectoryIterator::getPath() - Get path of current Iterator item without filename
  • pathinfo() - 返回文件路径的信息

DirectoryIterator::getPath
DirectoryIterator::getPerms
DirectoryIterator


Get the permissions of current DirectoryIterator item

DirectoryIterator::getPathname
DirectoryIterator::getSize
DirectoryIterator
PHP Manual

DirectoryIterator::getPerms

(PHP 5, PHP 7)

DirectoryIterator::getPerms — Get the permissions of current DirectoryIterator item

说明

public int DirectoryIterator::getPerms ( void )

Get the permissions of the current DirectoryIterator item.

参数

此函数没有参数。

返回值

Returns the permissions of the file, as a decimal integer.

范例

Example #1 DirectoryIterator::getPerms() example

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));
foreach ($iterator as $fileinfo) {
    if (!$fileinfo->isDot()) {
        $octal_perms = substr(sprintf('%o', $fileinfo->getPerms()), -4);
        echo $fileinfo->getFilename() . " " . $octal_perms . "\n";
    }
}
?>

以上例程的输出类似于：

apple.jpg 0644
banana.jpg 0644
index.php 0744
pear.jpg 0644

参见

  • DirectoryIterator::isExecutable() - Determine if current DirectoryIterator item is executable
  • DirectoryIterator::isReadable() - Determine if current DirectoryIterator item can be read
  • DirectoryIterator::isWritable() - Determine if current DirectoryIterator item can be written to

DirectoryIterator::getPathname
DirectoryIterator::getSize
DirectoryIterator


Get size of current DirectoryIterator item

DirectoryIterator::getPerms
DirectoryIterator::getType
DirectoryIterator
PHP Manual

DirectoryIterator::getSize

(PHP 5, PHP 7)

DirectoryIterator::getSize — Get size of current DirectoryIterator item

说明

public int DirectoryIterator::getSize ( void )

Get the file size for the current DirectoryIterator item.

参数

此函数没有参数。

返回值

Returns the size of the file, in bytes.

范例

Example #1 DirectoryIterator::getSize() example

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));
foreach ($iterator as $fileinfo) {
    if ($fileinfo->isFile()) {
        echo $fileinfo->getFilename() . " " . $fileinfo->getSize() . "\n";
    }
}
?>

以上例程的输出类似于：

apple.jpg 15385
banana.jpg 15190
example.php 170
pear.jpg 34406

参见

  • filesize() - 取得文件大小

DirectoryIterator::getPerms
DirectoryIterator::getType
DirectoryIterator


Determine the type of the current DirectoryIterator item

DirectoryIterator::getSize
DirectoryIterator::isDir
DirectoryIterator
PHP Manual

DirectoryIterator::getType

(PHP 5, PHP 7)

DirectoryIterator::getType — Determine the type of the current DirectoryIterator item

说明

public string DirectoryIterator::getType ( void )

Determines which file type the current DirectoryIterator item belongs to. One of file, link, or dir.

参数

此函数没有参数。

返回值

Returns a string representing the type of the file. May be one of file, link, or dir.

范例

Example #1 DirectoryIterator::getType() example

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));
foreach ($iterator as $fileinfo) {
    echo $fileinfo->getFilename() . " " . $fileinfo->getType() . "\n";
}
?>

以上例程的输出类似于：

. dir
.. dir
apple.jpg file
banana.jpg file
example.php file
pear.jpg file

参见

  • DirectoryIterator::isDir() - Determine if current DirectoryIterator item is a directory
  • DirectoryIterator::isDot() - Determine if current DirectoryIterator item is '.' or '..'
  • DirectoryIterator::isFile() - Determine if current DirectoryIterator item is a regular file
  • DirectoryIterator::isLink() - Determine if current DirectoryIterator item is a symbolic link

DirectoryIterator::getSize
DirectoryIterator::isDir
DirectoryIterator


Determine if current DirectoryIterator item is a directory

DirectoryIterator::getType
DirectoryIterator::isDot
DirectoryIterator
PHP Manual

DirectoryIterator::isDir

(PHP 5, PHP 7)

DirectoryIterator::isDir — Determine if current DirectoryIterator item is a directory

说明

public bool DirectoryIterator::isDir ( void )

Determines if the current DirectoryIterator item is a directory.

参数

此函数没有参数。

返回值

Returns TRUE if it is a directory, otherwise FALSE

范例

Example #1 DirectoryIterator::isDir() example

This example lists the directories within the directory of the current script.

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));
foreach ($iterator as $fileinfo) {
    if ($fileinfo->isDir()) {
        echo $fileinfo->getFilename() . "\n";
    }
}
?>

以上例程的输出类似于：

.
..
apples
bananas
pears

参见

  • DirectoryIterator::getType() - Determine the type of the current DirectoryIterator item
  • DirectoryIterator::isDot() - Determine if current DirectoryIterator item is '.' or '..'
  • DirectoryIterator::isFile() - Determine if current DirectoryIterator item is a regular file
  • DirectoryIterator::isLink() - Determine if current DirectoryIterator item is a symbolic link

DirectoryIterator::getType
DirectoryIterator::isDot
DirectoryIterator


Determine if current DirectoryIterator item is '.' or '..'

DirectoryIterator::isDir
DirectoryIterator::isExecutable
DirectoryIterator
PHP Manual

DirectoryIterator::isDot

(PHP 5, PHP 7)

DirectoryIterator::isDot — Determine if current DirectoryIterator item is '.' or '..'

说明

public bool DirectoryIterator::isDot ( void )

Determines if the current DirectoryIterator item is a directory and either . or ...

参数

此函数没有参数。

返回值

TRUE if the entry is . or .., otherwise FALSE

范例

Example #1 A DirectoryIterator::isDot() example

This example will list all files, omitting the . and .. entries.

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));
foreach ($iterator as $fileinfo) {
    if (!$fileinfo->isDot()) {
        echo $fileinfo->getFilename() . "\n";
    }
}
?>

以上例程的输出类似于：

apple.jpg
banana.jpg
example.php
pears.jpg

参见

  • DirectoryIterator::getType() - Determine the type of the current DirectoryIterator item
  • DirectoryIterator::isDir() - Determine if current DirectoryIterator item is a directory
  • DirectoryIterator::isFile() - Determine if current DirectoryIterator item is a regular file
  • DirectoryIterator::isLink() - Determine if current DirectoryIterator item is a symbolic link

DirectoryIterator::isDir
DirectoryIterator::isExecutable
DirectoryIterator


Determine if current DirectoryIterator item is executable

DirectoryIterator::isDot
DirectoryIterator::isFile
DirectoryIterator
PHP Manual

DirectoryIterator::isExecutable

(PHP 5, PHP 7)

DirectoryIterator::isExecutable — Determine if current DirectoryIterator item is executable

说明

public bool DirectoryIterator::isExecutable ( void )

Determines if the current DirectoryIterator item is executable.

参数

此函数没有参数。

返回值

Returns TRUE if the entry is executable, otherwise FALSE

范例

Example #1 DirectoryIterator::isExecutable() example

This example lists files in the directory containing the script which are executable.

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));
foreach ($iterator as $fileinfo) {
    if ($fileinfo->isExecutable()) {
        echo $fileinfo->getFilename() . "\n";
    }
}
?>

以上例程的输出类似于：

example.php
myscript.sh

参见

  • DirectoryIterator::isReadable() - Determine if current DirectoryIterator item can be read
  • DirectoryIterator::isWritable() - Determine if current DirectoryIterator item can be written to
  • DirectoryIterator::getPerms() - Get the permissions of current DirectoryIterator item

DirectoryIterator::isDot
DirectoryIterator::isFile
DirectoryIterator


Determine if current DirectoryIterator item is a regular file

DirectoryIterator::isExecutable
DirectoryIterator::isLink
DirectoryIterator
PHP Manual

DirectoryIterator::isFile

(PHP 5, PHP 7)

DirectoryIterator::isFile — Determine if current DirectoryIterator item is a regular file

说明

public bool DirectoryIterator::isFile ( void )

Determines if the current DirectoryIterator item is a regular file.

参数

此函数没有参数。

返回值

Returns TRUE if the file exists and is a regular file (not a link or dir), otherwise FALSE

范例

Example #1 DirectoryIterator::isFile() example

This example will list all regular files in the directory containing the script.

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));
foreach ($iterator as $fileinfo) {
    if ($fileinfo->isFile()) {
        echo $fileinfo->getFilename() . "\n";
    }
}
?>

以上例程的输出类似于：

apple.jpg
banana.jpg
example.php
pears.jpg

参见

  • DirectoryIterator::getType() - Determine the type of the current DirectoryIterator item
  • DirectoryIterator::isDir() - Determine if current DirectoryIterator item is a directory
  • DirectoryIterator::isDot() - Determine if current DirectoryIterator item is '.' or '..'
  • DirectoryIterator::isLink() - Determine if current DirectoryIterator item is a symbolic link

DirectoryIterator::isExecutable
DirectoryIterator::isLink
DirectoryIterator


Determine if current DirectoryIterator item is a symbolic link

DirectoryIterator::isFile
DirectoryIterator::isReadable
DirectoryIterator
PHP Manual

DirectoryIterator::isLink

(PHP 5, PHP 7)

DirectoryIterator::isLink — Determine if current DirectoryIterator item is a symbolic link

说明

public bool DirectoryIterator::isLink ( void )

Determines if the current DirectoryIterator item is a symbolic link.

参数

此函数没有参数。

返回值

Returns TRUE if the item is a symbolic link, otherwise FALSE

范例

Example #1 A DirectoryIterator::isLink() example

This example contains a recursive function for removing a directory tree.

<?php
/**
 * This function will recursively delete all files in the given path, without
 * following symlinks.
 *
 * @param string $path Path to the directory to remove.
 */
function removeDir($path) {
    $dir = new DirectoryIterator($path);
    foreach ($dir as $fileinfo) {
        if ($fileinfo->isFile() || $fileinfo->isLink()) {
            unlink($fileinfo->getPathName());
        } elseif (!$fileinfo->isDot() && $fileinfo->isDir()) {
            removeDir($fileinfo->getPathName());
        }
    }
    rmdir($path);
}

removeDir('foo');
?>

参见

  • DirectoryIterator::getType() - Determine the type of the current DirectoryIterator item
  • DirectoryIterator::isDir() - Determine if current DirectoryIterator item is a directory
  • DirectoryIterator::isDot() - Determine if current DirectoryIterator item is '.' or '..'
  • DirectoryIterator::isFile() - Determine if current DirectoryIterator item is a regular file

DirectoryIterator::isFile
DirectoryIterator::isReadable
DirectoryIterator


Determine if current DirectoryIterator item can be read

DirectoryIterator::isLink
DirectoryIterator::isWritable
DirectoryIterator
PHP Manual

DirectoryIterator::isReadable

(PHP 5, PHP 7)

DirectoryIterator::isReadable — Determine if current DirectoryIterator item can be read

说明

public bool DirectoryIterator::isReadable ( void )

Determines if the current DirectoryIterator item is readable.

参数

此函数没有参数。

返回值

Returns TRUE if the file is readable, otherwise FALSE

范例

Example #1 DirectoryIterator::isReadable() example

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));
foreach ($iterator as $fileinfo) {
    if ($fileinfo->isReadable()) {
        echo $fileinfo->getFilename() . "\n";
    }
}
?>

以上例程的输出类似于：

apple.jpg
banana.jpg
example.php
pears.jpg

参见

  • DirectoryIterator::isExecutable() - Determine if current DirectoryIterator item is executable
  • DirectoryIterator::isWritable() - Determine if current DirectoryIterator item can be written to
  • DirectoryIterator::getPerms() - Get the permissions of current DirectoryIterator item

DirectoryIterator::isLink
DirectoryIterator::isWritable
DirectoryIterator


Determine if current DirectoryIterator item can be written to

DirectoryIterator::isReadable
DirectoryIterator::key
DirectoryIterator
PHP Manual

DirectoryIterator::isWritable

(PHP 5, PHP 7)

DirectoryIterator::isWritable — Determine if current DirectoryIterator item can be written to

说明

public bool DirectoryIterator::isWritable ( void )

Determines if the current DirectoryIterator item is writable.

参数

此函数没有参数。

返回值

Returns TRUE if the file/directory is writable, otherwise FALSE

范例

Example #1 DirectoryIterator::isWritable() example

This example lists the files and directories which can be opened for writing in the directory containing the script.

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));
foreach ($iterator as $fileinfo) {
    if ($fileinfo->isWritable()) {
        echo $fileinfo->getFilename() . "\n";
    }
}
?>

以上例程的输出类似于：

apples.txt
bananas.html
pears

参见

  • DirectoryIterator::getPerms() - Get the permissions of current DirectoryIterator item
  • DirectoryIterator::isExecutable() - Determine if current DirectoryIterator item is executable
  • DirectoryIterator::isReadable() - Determine if current DirectoryIterator item can be read

DirectoryIterator::isReadable
DirectoryIterator::key
DirectoryIterator


Return the key for the current DirectoryIterator item

DirectoryIterator::isWritable
DirectoryIterator::next
DirectoryIterator
PHP Manual

DirectoryIterator::key

(PHP 5, PHP 7)

DirectoryIterator::key — Return the key for the current DirectoryIterator item

说明

public string DirectoryIterator::key ( void )

Get the key for the current DirectoryIterator item.

参数

此函数没有参数。

返回值

The key for the current DirectoryIterator item.

范例

Example #1 A DirectoryIterator::key() example

<?php
$dir = new DirectoryIterator(dirname(__FILE__));
foreach ($dir as $fileinfo) {
    if (!$fileinfo->isDot()) {
        echo $fileinfo->key() . " => " . $fileinfo->getFilename() . "\n";
    }
}
?>

以上例程的输出类似于：

0 => apple.jpg
1 => banana.jpg
2 => index.php
3 => pear.jpg

参见

  • DirectoryIterator::current() - Return the current DirectoryIterator item.
  • DirectoryIterator::next() - Move forward to next DirectoryIterator item
  • DirectoryIterator::rewind() - Rewind the DirectoryIterator back to the start
  • DirectoryIterator::valid() - Check whether current DirectoryIterator position is a valid file
  • Iterator::key() - 返回当前元素的键

DirectoryIterator::isWritable
DirectoryIterator::next
DirectoryIterator


Move forward to next DirectoryIterator item

DirectoryIterator::key
DirectoryIterator::rewind
DirectoryIterator
PHP Manual

DirectoryIterator::next

(PHP 5, PHP 7)

DirectoryIterator::next — Move forward to next DirectoryIterator item

说明

public void DirectoryIterator::next ( void )

Move forward to the next DirectoryIterator item.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 DirectoryIterator::next() example

List the contents of a directory using a while loop.

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));
while($iterator->valid()) {
    echo $iterator->getFilename() . "\n";
    $iterator->next();
}
?>

以上例程的输出类似于：

.
..
apple.jpg
banana.jpg
index.php
pear.jpg

参见

  • DirectoryIterator::current() - Return the current DirectoryIterator item.
  • DirectoryIterator::key() - Return the key for the current DirectoryIterator item
  • DirectoryIterator::rewind() - Rewind the DirectoryIterator back to the start
  • DirectoryIterator::valid() - Check whether current DirectoryIterator position is a valid file
  • Iterator::next() - 向前移动到下一个元素

DirectoryIterator::key
DirectoryIterator::rewind
DirectoryIterator


Rewind the DirectoryIterator back to the start

DirectoryIterator::next
DirectoryIterator::seek
DirectoryIterator
PHP Manual

DirectoryIterator::rewind

(PHP 5, PHP 7)

DirectoryIterator::rewind — Rewind the DirectoryIterator back to the start

说明

public void DirectoryIterator::rewind ( void )

Rewind the DirectoryIterator back to the start.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 DirectoryIterator::rewind() example

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));

$iterator->next();
echo $iterator->key(); //1

$iterator->rewind(); //rewinding to the beginning
echo $iterator->key(); //0
?>

参见

  • DirectoryIterator::current() - Return the current DirectoryIterator item.
  • DirectoryIterator::key() - Return the key for the current DirectoryIterator item
  • DirectoryIterator::next() - Move forward to next DirectoryIterator item
  • DirectoryIterator::valid() - Check whether current DirectoryIterator position is a valid file
  • Iterator::rewind() - 返回到迭代器的第一个元素

DirectoryIterator::next
DirectoryIterator::seek
DirectoryIterator


Seek to a DirectoryIterator item

DirectoryIterator::rewind
DirectoryIterator::__toString
DirectoryIterator
PHP Manual

DirectoryIterator::seek

(PHP 5 >= 5.3.0, PHP 7)

DirectoryIterator::seek — Seek to a DirectoryIterator item

说明

public void DirectoryIterator::seek ( int $position )

Seek to a given position in the DirectoryIterator.

参数

position

The zero-based numeric position to seek to.

返回值

没有返回值。

范例

Example #1 DirectoryIterator::seek() example

Seek to the fourth item in the directory containing the script. The first two are usually . and ..

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));
$iterator->seek(3);
if ($iterator->valid()) {
    echo $iterator->getFilename();
} else {
    echo 'No file at position 3';
}
?>

参见

  • DirectoryIterator::rewind() - Rewind the DirectoryIterator back to the start
  • DirectoryIterator::next() - Move forward to next DirectoryIterator item
  • SeekableIterator::seek() - Seeks to a position

DirectoryIterator::rewind
DirectoryIterator::__toString
DirectoryIterator


Get file name as a string

DirectoryIterator::seek
DirectoryIterator::valid
DirectoryIterator
PHP Manual

DirectoryIterator::__toString

(PHP 5, PHP 7)

DirectoryIterator::__toString — Get file name as a string

说明

public string DirectoryIterator::__toString ( void )

Get the file name of the current DirectoryIterator item.

参数

此函数没有参数。

返回值

Returns the file name of the current DirectoryIterator item.

范例

Example #1 A DirectoryIterator::__toString() example

This example will list the contents of the directory containing the script.

<?php
$dir = new DirectoryIterator(dirname(__FILE__));
foreach ($dir as $fileinfo) {
    echo $fileinfo;
}
?>

以上例程的输出类似于：

.
..
apple.jpg
banana.jpg
index.php
pear.jpg

参见

  • DirectoryIterator::getFilename() - Return file name of current DirectoryIterator item.
  • The __toString() magic method

DirectoryIterator::seek
DirectoryIterator::valid
DirectoryIterator


Check whether current DirectoryIterator position is a valid file

DirectoryIterator::__toString
EmptyIterator
DirectoryIterator
PHP Manual

DirectoryIterator::valid

(PHP 5, PHP 7)

DirectoryIterator::valid — Check whether current DirectoryIterator position is a valid file

说明

public bool DirectoryIterator::valid ( void )

Check whether current DirectoryIterator position is a valid file.

参数

此函数没有参数。

返回值

Returns TRUE if the position is valid, otherwise FALSE

范例

Example #1 A DirectoryIterator::valid() example

<?php
$iterator = new DirectoryIterator(dirname(__FILE__));

// Loop to end of iterator
while($iterator->valid()) {
    $iterator->next();
}

$iterator->valid(); // FALSE
$iterator->rewind();
$iterator->valid(); // TRUE

?>

参见

  • DirectoryIterator::current() - Return the current DirectoryIterator item.
  • DirectoryIterator::key() - Return the key for the current DirectoryIterator item
  • DirectoryIterator::next() - Move forward to next DirectoryIterator item
  • DirectoryIterator::rewind() - Rewind the DirectoryIterator back to the start
  • Iterator::valid() - 检查当前位置是否有效

DirectoryIterator::__toString
EmptyIterator
DirectoryIterator


The EmptyIterator class

(PHP 5 >= 5.1.0, PHP 7)

简介

The EmptyIterator class for an empty iterator.

类摘要

EmptyIterator implements Iterator {
/* 方法 */
public mixed current ( void )
public scalar key ( void )
public void next ( void )
public void rewind ( void )
public bool valid ( void )
}

Table of Contents

  • EmptyIterator::current — The current() method
  • EmptyIterator::key — The key() method
  • EmptyIterator::next — The next() method
  • EmptyIterator::rewind — The rewind() method
  • EmptyIterator::valid — The valid() method
DirectoryIterator::valid
EmptyIterator::current
迭代器


The current() method

EmptyIterator
EmptyIterator::key
EmptyIterator
PHP Manual

EmptyIterator::current

(PHP 5 >= 5.1.0, PHP 7)

EmptyIterator::current — The current() method

说明

public mixed EmptyIterator::current ( void )

This function must not be called. It throws an exception upon access.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

错误／异常

Throws an Exception if called.

返回值

没有返回值。

EmptyIterator
EmptyIterator::key
EmptyIterator


The key() method

EmptyIterator::current
EmptyIterator::next
EmptyIterator
PHP Manual

EmptyIterator::key

(PHP 5 >= 5.1.0, PHP 7)

EmptyIterator::key — The key() method

说明

public scalar EmptyIterator::key ( void )

This function must not be called. It throws an exception upon access.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

错误／异常

Throws an Exception if called.

返回值

没有返回值。

EmptyIterator::current
EmptyIterator::next
EmptyIterator


The next() method

EmptyIterator::key
EmptyIterator::rewind
EmptyIterator
PHP Manual

EmptyIterator::next

(PHP 5 >= 5.1.0, PHP 7)

EmptyIterator::next — The next() method

说明

public void EmptyIterator::next ( void )

No operation, nothing to do.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

EmptyIterator::key
EmptyIterator::rewind
EmptyIterator


The rewind() method

EmptyIterator::next
EmptyIterator::valid
EmptyIterator
PHP Manual

EmptyIterator::rewind

(PHP 5 >= 5.1.0, PHP 7)

EmptyIterator::rewind — The rewind() method

说明

public void EmptyIterator::rewind ( void )

No operation, nothing to do.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

EmptyIterator::next
EmptyIterator::valid
EmptyIterator


The valid() method

EmptyIterator::rewind
FilesystemIterator
EmptyIterator
PHP Manual

EmptyIterator::valid

(PHP 5 >= 5.1.0, PHP 7)

EmptyIterator::valid — The valid() method

说明

public bool EmptyIterator::valid ( void )

The EmptyIterator valid() method.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

FALSE

EmptyIterator::rewind
FilesystemIterator
EmptyIterator


The FilesystemIterator class

(PHP 5 >= 5.3.0, PHP 7)

简介

The Filesystem iterator

类摘要

FilesystemIterator extends DirectoryIterator implements SeekableIterator {
/* 常量 */
const integer CURRENT_AS_PATHNAME = 32 ;
const integer CURRENT_AS_FILEINFO = 0 ;
const integer CURRENT_AS_SELF = 16 ;
const integer CURRENT_MODE_MASK = 240 ;
const integer KEY_AS_PATHNAME = 0 ;
const integer KEY_AS_FILENAME = 256 ;
const integer FOLLOW_SYMLINKS = 512 ;
const integer KEY_MODE_MASK = 3840 ;
const integer NEW_CURRENT_AND_KEY = 256 ;
const integer SKIP_DOTS = 4096 ;
const integer UNIX_PATHS = 8192 ;
/* 方法 */
public __construct ( string $path [, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS ] )
public mixed current ( void )
public int getFlags ( void )
public string key ( void )
public void next ( void )
public void rewind ( void )
public void setFlags ([ int $flags ] )
/* 继承的方法 */
public DirectoryIterator DirectoryIterator::current ( void )
public int DirectoryIterator::getATime ( void )
public string DirectoryIterator::getBasename ([ string $suffix ] )
public int DirectoryIterator::getCTime ( void )
public string DirectoryIterator::getExtension ( void )
public string DirectoryIterator::getFilename ( void )
public int DirectoryIterator::getGroup ( void )
public int DirectoryIterator::getInode ( void )
public int DirectoryIterator::getMTime ( void )
public int DirectoryIterator::getOwner ( void )
public string DirectoryIterator::getPath ( void )
public string DirectoryIterator::getPathname ( void )
public int DirectoryIterator::getPerms ( void )
public int DirectoryIterator::getSize ( void )
public string DirectoryIterator::getType ( void )
public bool DirectoryIterator::isDir ( void )
public bool DirectoryIterator::isDot ( void )
public bool DirectoryIterator::isExecutable ( void )
public bool DirectoryIterator::isFile ( void )
public bool DirectoryIterator::isLink ( void )
public bool DirectoryIterator::isReadable ( void )
public bool DirectoryIterator::isWritable ( void )
public string DirectoryIterator::key ( void )
public void DirectoryIterator::next ( void )
public void DirectoryIterator::rewind ( void )
public void DirectoryIterator::seek ( int $position )
public string DirectoryIterator::__toString ( void )
public bool DirectoryIterator::valid ( void )
}

预定义常量

FilesystemIterator::CURRENT_AS_PATHNAME

Makes FilesystemIterator::current() return the pathname.

FilesystemIterator::CURRENT_AS_FILEINFO

Makes FilesystemIterator::current() return an SplFileInfo instance.

FilesystemIterator::CURRENT_AS_SELF

Makes FilesystemIterator::current() return $this (the FilesystemIterator).

FilesystemIterator::CURRENT_MODE_MASK

Masks FilesystemIterator::current()

FilesystemIterator::KEY_AS_PATHNAME

Makes FilesystemIterator::key() return the pathname.

FilesystemIterator::KEY_AS_FILENAME

Makes FilesystemIterator::key() return the filename.

FilesystemIterator::FOLLOW_SYMLINKS

Makes RecursiveDirectoryIterator::hasChildren() follow symlinks.

FilesystemIterator::KEY_MODE_MASK

Masks FilesystemIterator::key()

FilesystemIterator::NEW_CURRENT_AND_KEY

Same as FilesystemIterator::KEY_AS_FILENAME | FilesystemIterator::CURRENT_AS_FILEINFO.

FilesystemIterator::SKIP_DOTS

Skips dot files (. and ..).

FilesystemIterator::UNIX_PATHS

Makes paths use Unix-style forward slash irrespective of system default. Note that the path that is passed to the constructor is not modified.

更新日志

版本 | 说明
5.3.1 | Added FilesystemIterator::FOLLOW_SYMLINKS

Table of Contents

  • FilesystemIterator::__construct — Constructs a new filesystem iterator
  • FilesystemIterator::current — The current file
  • FilesystemIterator::getFlags — Get the handling flags
  • FilesystemIterator::key — Retrieve the key for the current file
  • FilesystemIterator::next — Move to the next file
  • FilesystemIterator::rewind — Rewinds back to the beginning
  • FilesystemIterator::setFlags — Sets handling flags
EmptyIterator::valid
FilesystemIterator::__construct
迭代器


Constructs a new filesystem iterator

FilesystemIterator
FilesystemIterator::current
FilesystemIterator
PHP Manual

FilesystemIterator::__construct

(PHP 5 >= 5.3.0, PHP 7)

FilesystemIterator::__construct — Constructs a new filesystem iterator

说明

public FilesystemIterator::__construct ( string $path [, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS ] )

Constructs a new filesystem iterator from the path.

参数

path

The path of the filesystem item to be iterated over.

flags

Flags may be provided which will affect the behavior of some methods. A list of the flags can found under FilesystemIterator predefined constants. They can also be set later with FilesystemIterator::setFlags()

返回值

没有返回值。

错误／异常

Throws an UnexpectedValueException if the path cannot be found.

范例

Example #1 FilesystemIterator::__construct() example

<?php
$it = new FilesystemIterator(dirname(__FILE__));
foreach ($it as $fileinfo) {
    echo $fileinfo->getFilename() . "\n";
}
?>

以上例程会输出：

apples.jpg
banana.jpg
example.php

参见

  • FilesystemIterator::setFlags() - Sets handling flags
  • DirectoryIterator::__construct() - Constructs a new directory iterator from a path

FilesystemIterator
FilesystemIterator::current
FilesystemIterator


The current file

FilesystemIterator::__construct
FilesystemIterator::getFlags
FilesystemIterator
PHP Manual

FilesystemIterator::current

(PHP 5 >= 5.3.0, PHP 7)

FilesystemIterator::current — The current file

说明

public mixed FilesystemIterator::current ( void )

Get file information of the current element.

参数

此函数没有参数。

返回值

The filename, file information, or $this depending on the set flags. See the FilesystemIterator constants.

范例

Example #1 FilesystemIterator::current() example

This example will list the contents of the directory containing the script.

<?php
$iterator = new FilesystemIterator(__DIR__, FilesystemIterator::CURRENT_AS_PATHNAME);
foreach ($iterator as $fileinfo) {
    echo $iterator->current() . "\n";
}
?>

以上例程的输出类似于：

/www/examples/apple.jpg
/www/examples/banana.jpg
/www/examples/example.php

参见

  • FilesystemIterator constants
  • DirectoryIterator::current() - Return the current DirectoryIterator item.
  • DirectoryIterator::getFileName() - Return file name of current DirectoryIterator item.

FilesystemIterator::__construct
FilesystemIterator::getFlags
FilesystemIterator


Get the handling flags

FilesystemIterator::current
FilesystemIterator::key
FilesystemIterator
PHP Manual

FilesystemIterator::getFlags

(PHP 5 >= 5.3.0, PHP 7)

FilesystemIterator::getFlags — Get the handling flags

说明

public int FilesystemIterator::getFlags ( void )

Gets the handling flags, as set in FilesystemIterator::__construct() or FilesystemIterator::setFlags().

参数

此函数没有参数。

返回值

The integer value of the set flags.

参见

  • FilesystemIterator::__construct() - Constructs a new filesystem iterator
  • FilesystemIterator::setFlags() - Sets handling flags

FilesystemIterator::current
FilesystemIterator::key
FilesystemIterator


Retrieve the key for the current file

FilesystemIterator::getFlags
FilesystemIterator::next
FilesystemIterator
PHP Manual

FilesystemIterator::key

(PHP 5 >= 5.3.0, PHP 7)

FilesystemIterator::key — Retrieve the key for the current file

说明

public string FilesystemIterator::key ( void )

参数

此函数没有参数。

返回值

Returns the pathname or filename depending on the set flags. See the FilesystemIterator constants.

范例

Example #1 FilesystemIterator::key() example

This example will list the contents of the directory containing the script.

<?php
$iterator = new FilesystemIterator(dirname(__FILE__), FilesystemIterator::KEY_AS_FILENAME);
foreach ($iterator as $fileinfo) {
    echo $iterator->key() . "\n";
}
?>

以上例程的输出类似于：

apple.jpg
banana.jpg
example.php

参见

  • FilesystemIterator constants
  • DirectoryIterator::key() - Return the key for the current DirectoryIterator item
  • DirectoryIterator::getFilename() - Return file name of current DirectoryIterator item.
  • DirectoryIterator::getPathname() - Return path and file name of current DirectoryIterator item

FilesystemIterator::getFlags
FilesystemIterator::next
FilesystemIterator


Move to the next file

FilesystemIterator::key
FilesystemIterator::rewind
FilesystemIterator
PHP Manual

FilesystemIterator::next

(PHP 5 >= 5.3.0, PHP 7)

FilesystemIterator::next — Move to the next file

说明

public void FilesystemIterator::next ( void )

Move to the next file.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 FilesystemIterator::next() example

List the contents of a directory using a while loop.

<?php
$iterator = new FilesystemIterator(dirname(__FILE__));
while($iterator->valid()) {
    echo $iterator->getFilename() . "\n";
    $iterator->next();
}
?>

以上例程的输出类似于：

apple.jpg
banana.jpg
example.php

参见

  • DirectoryIterator::next() - Move forward to next DirectoryIterator item

FilesystemIterator::key
FilesystemIterator::rewind
FilesystemIterator


Rewinds back to the beginning

FilesystemIterator::next
FilesystemIterator::setFlags
FilesystemIterator
PHP Manual

FilesystemIterator::rewind

(PHP 5 >= 5.3.0, PHP 7)

FilesystemIterator::rewind — Rewinds back to the beginning

说明

public void FilesystemIterator::rewind ( void )

Rewinds the directory back to the start.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 FilesystemIterator::rewind() example

<?php
$iterator = new FilesystemIterator(dirname(__FILE__), FilesystemIterator::KEY_AS_FILENAME);

echo $iterator->key() . "\n";

$iterator->next();
echo $iterator->key() . "\n";

$iterator->rewind();
echo $iterator->key() . "\n";
?>

以上例程的输出类似于：

apple.jpg
banana.jpg
apple.jpg

参见

  • DirectoryIterator::rewind() - Rewind the DirectoryIterator back to the start

FilesystemIterator::next
FilesystemIterator::setFlags
FilesystemIterator


Sets handling flags

FilesystemIterator::rewind
FilterIterator
FilesystemIterator
PHP Manual

FilesystemIterator::setFlags

(PHP 5 >= 5.3.0, PHP 7)

FilesystemIterator::setFlags — Sets handling flags

说明

public void FilesystemIterator::setFlags ([ int $flags ] )

Sets handling flags.

参数

flags

The handling flags to set. See the FilesystemIterator constants.

返回值

没有返回值。

范例

Example #1 FilesystemIterator::key() example

This example demonstrates the difference between the FilesystemIterator::KEY_AS_PATHNAME and FilesystemIterator::KEY_AS_FILENAME flags.

<?php
$iterator = new FilesystemIterator(dirname(__FILE__), FilesystemIterator::KEY_AS_PATHNAME);
echo "Key as Pathname:\n";
foreach ($iterator as $key => $fileinfo) {
    echo $key . "\n";
}

$iterator->setFlags(FilesystemIterator::KEY_AS_FILENAME);
echo "\nKey as Filename:\n";
foreach ($iterator as $key => $fileinfo) {
    echo $key . "\n";
}
?>

以上例程的输出类似于：

Key as Pathname:
/www/examples/apple.jpg
/www/examples/banana.jpg
/www/examples/example.php

Key as Filename:
apple.jpg
banana.jpg
example.php

参见

  • FilesystemIterator::__construct() - Constructs a new filesystem iterator
  • FilesystemIterator::getFlags() - Get the handling flags

FilesystemIterator::rewind
FilterIterator
FilesystemIterator


The FilterIterator class

(PHP 5 >= 5.1.0, PHP 7)

简介

这个抽象类的遍历并过滤出不想要的值.这个类应该被实现了迭代过滤器的类继承 FilterIterator::accept()方法必须被子类实现.

类摘要

abstract FilterIterator extends IteratorIterator implements OuterIterator {
/* 方法 */
public abstract bool accept ( void )
public __construct ( Iterator $iterator )
public mixed current ( void )
public Iterator getInnerIterator ( void )
public mixed key ( void )
public void next ( void )
public void rewind ( void )
public bool valid ( void )
}

Table of Contents

  • FilterIterator::accept — Check whether the current element of the iterator is acceptable
  • FilterIterator::__construct — Construct a filterIterator
  • FilterIterator::current — Get the current element value
  • FilterIterator::getInnerIterator — Get the inner iterator
  • FilterIterator::key — Get the current key
  • FilterIterator::next — Move the iterator forward
  • FilterIterator::rewind — Rewind the iterator
  • FilterIterator::valid — Check whether the current element is valid
FilesystemIterator::setFlags
FilterIterator::accept
迭代器


Check whether the current element of the iterator is acceptable

FilterIterator
FilterIterator::__construct
FilterIterator
PHP Manual

FilterIterator::accept

(PHP 5 >= 5.1.0, PHP 7)

FilterIterator::accept — Check whether the current element of the iterator is acceptable

说明

public abstract bool FilterIterator::accept ( void )

Returns whether the current element of the iterator is acceptable through this filter.

参数

此函数没有参数。

返回值

TRUE if the current element is acceptable, otherwise FALSE.

范例

Example #1 FilterIterator::accept() example

<?php
// This iterator filters all values with less than 10 characters
class LengthFilterIterator extends FilterIterator {

    public function accept() {
        // Only accept strings with a length of 10 and greater
        return strlen(parent::current()) >= 10;
    }

}

$arrayIterator = new ArrayIterator(array('test1', 'more than 10 characters'));
$lengthFilter = new LengthFilterIterator($arrayIterator);

foreach ($lengthFilter as $value) {
    echo $value . "\n";
}
?>

以上例程会输出：

more than 10 characters

FilterIterator
FilterIterator::__construct
FilterIterator


Construct a filterIterator

FilterIterator::accept
FilterIterator::current
FilterIterator
PHP Manual

FilterIterator::__construct

(PHP 5 >= 5.1.0, PHP 7)

FilterIterator::__construct — Construct a filterIterator

说明

public FilterIterator::__construct ( Iterator $iterator )

Constructs a new FilterIterator, which consists of a passed in iterator with filters applied to it.

Warning

本函数还未编写文档，仅有参数列表。

参数

iterator

The iterator that is being filtered.

返回值

The FilterIterator.

参见

  • LimitIterator::__construct() - Construct a LimitIterator

FilterIterator::accept
FilterIterator::current
FilterIterator


Get the current element value

FilterIterator::__construct
FilterIterator::getInnerIterator
FilterIterator
PHP Manual

FilterIterator::current

(PHP 5 >= 5.1.0, PHP 7)

FilterIterator::current — Get the current element value

说明

public mixed FilterIterator::current ( void )
Warning

本函数还未编写文档，仅有参数列表。

Get the current element value.

参数

此函数没有参数。

返回值

The current element value.

参见

  • FilterIterator::key() - Get the current key
  • FilterIterator::next() - Move the iterator forward

FilterIterator::__construct
FilterIterator::getInnerIterator
FilterIterator


Get the inner iterator

FilterIterator::current
FilterIterator::key
FilterIterator
PHP Manual

FilterIterator::getInnerIterator

(PHP 5 >= 5.1.0, PHP 7)

FilterIterator::getInnerIterator — Get the inner iterator

说明

public Iterator FilterIterator::getInnerIterator ( void )
Warning

本函数还未编写文档，仅有参数列表。

Get the inner iterator.

参数

此函数没有参数。

返回值

The inner iterator.

FilterIterator::current
FilterIterator::key
FilterIterator


Get the current key

FilterIterator::getInnerIterator
FilterIterator::next
FilterIterator
PHP Manual

FilterIterator::key

(PHP 5 >= 5.1.0, PHP 7)

FilterIterator::key — Get the current key

说明

public mixed FilterIterator::key ( void )
Warning

本函数还未编写文档，仅有参数列表。

Get the current key.

参数

此函数没有参数。

返回值

The current key.

参见

  • FilterIterator::next() - Move the iterator forward
  • FilterIterator::current() - Get the current element value

FilterIterator::getInnerIterator
FilterIterator::next
FilterIterator


Move the iterator forward

FilterIterator::key
FilterIterator::rewind
FilterIterator
PHP Manual

FilterIterator::next

(PHP 5 >= 5.1.0, PHP 7)

FilterIterator::next — Move the iterator forward

说明

public void FilterIterator::next ( void )
Warning

本函数还未编写文档，仅有参数列表。

Move the iterator forward.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • FilterIterator::current() - Get the current element value
  • FilterIterator::next()

FilterIterator::key
FilterIterator::rewind
FilterIterator


Rewind the iterator

FilterIterator::next
FilterIterator::valid
FilterIterator
PHP Manual

FilterIterator::rewind

(PHP 5 >= 5.1.0, PHP 7)

FilterIterator::rewind — Rewind the iterator

说明

public void FilterIterator::rewind ( void )
Warning

本函数还未编写文档，仅有参数列表。

Rewind the iterator.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • FilterIterator::current() - Get the current element value
  • FilterIterator::key() - Get the current key
  • FilterIterator::next() - Move the iterator forward

FilterIterator::next
FilterIterator::valid
FilterIterator


Check whether the current element is valid

FilterIterator::rewind
GlobIterator
FilterIterator
PHP Manual

FilterIterator::valid

(PHP 5 >= 5.1.0, PHP 7)

FilterIterator::valid — Check whether the current element is valid

说明

public bool FilterIterator::valid ( void )
Warning

本函数还未编写文档，仅有参数列表。

Checks whether the current element is valid.

参数

此函数没有参数。

返回值

TRUE if the current element is valid, otherwise FALSE

FilterIterator::rewind
GlobIterator
FilterIterator


The GlobIterator class

(PHP 5 >= 5.3.0, PHP 7)

简介

遍历一个文件系统行为类似于 glob().

类摘要

GlobIterator extends FilesystemIterator implements SeekableIterator , Countable {
/* 方法 */
public __construct ( string $path [, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO ] )
public int count ( void )
/* 继承的方法 */
public FilesystemIterator::__construct ( string $path [, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS ] )
public mixed FilesystemIterator::current ( void )
public int FilesystemIterator::getFlags ( void )
public string FilesystemIterator::key ( void )
public void FilesystemIterator::next ( void )
public void FilesystemIterator::rewind ( void )
public void FilesystemIterator::setFlags ([ int $flags ] )
}

Table of Contents

  • GlobIterator::__construct — Construct a directory using glob
  • GlobIterator::count — Get the number of directories and files
FilterIterator::valid
GlobIterator::__construct
迭代器


Construct a directory using glob

GlobIterator
GlobIterator::count
GlobIterator
PHP Manual

GlobIterator::__construct

(PHP 5 >= 5.3.0, PHP 7)

GlobIterator::__construct — Construct a directory using glob

说明

public GlobIterator::__construct ( string $path [, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO ] )

Constructs a new directory iterator from a glob expression.

参数

path

The path of the directory.

flags

Option flags, the flags may be a bitmask of the FilesystemIterator constants.

范例

Example #1 GlobIterator example

<?php
$iterator = new GlobIterator('*.dll', FilesystemIterator::KEY_AS_FILENAME);

if (!$iterator->count()) {
    echo 'No matches';
} else {
    $n = 0;

    printf("Matched %d item(s)\r\n", $iterator->count());

    foreach ($iterator as $item) {
        printf("[%d] %s\r\n", ++$n, $iterator->key());
    }
}
?>

以上例程的输出类似于：

Matched 2 item(s)
[1] php5ts.dll
[2] php_gd2.dll

参见

  • DirectoryIterator::__construct() - Constructs a new directory iterator from a path
  • GlobIterator::count() - Get the number of directories and files
  • glob() - 寻找与模式匹配的文件路径

GlobIterator
GlobIterator::count
GlobIterator


Get the number of directories and files

GlobIterator::__construct
InfiniteIterator
GlobIterator
PHP Manual

GlobIterator::count

(PHP 5 >= 5.3.0, PHP 7)

GlobIterator::count — Get the number of directories and files

说明

public int GlobIterator::count ( void )

Gets the number of directories and files found by the glob expression.

参数

此函数没有参数。

返回值

The number of returned directories and files, as an integer.

范例

Example #1 GlobIterator::count() example

<?php
$iterator = new GlobIterator('*.xml');

printf("Matched %d item(s)\r\n", $iterator->count());
?>

以上例程的输出类似于：

Matched 8 item(s)

参见

  • GlobIterator::__construct() - Construct a directory using glob
  • count() - 计算数组中的单元数目或对象中的属性个数
  • glob() - 寻找与模式匹配的文件路径

GlobIterator::__construct
InfiniteIterator
GlobIterator


The InfiniteIterator class

(PHP 5 >= 5.1.0, PHP 7)

简介

The InfiniteIterator allows one to infinitely iterate over an iterator without having to manually rewind the iterator upon reaching its end.

类摘要

InfiniteIterator extends IteratorIterator implements OuterIterator {
/* 方法 */
public __construct ( Iterator $iterator )
public void next ( void )
/* 继承的方法 */
public IteratorIterator::__construct ( Traversable $iterator )
public mixed IteratorIterator::current ( void )
public Traversable IteratorIterator::getInnerIterator ( void )
public scalar IteratorIterator::key ( void )
public void IteratorIterator::next ( void )
public void IteratorIterator::rewind ( void )
public bool IteratorIterator::valid ( void )
}

Table of Contents

  • InfiniteIterator::__construct — Constructs an InfiniteIterator
  • InfiniteIterator::next — Moves the inner Iterator forward or rewinds it
GlobIterator::count
InfiniteIterator::__construct
迭代器


Constructs an InfiniteIterator

InfiniteIterator
InfiniteIterator::next
InfiniteIterator
PHP Manual

InfiniteIterator::__construct

(PHP 5 >= 5.1.0, PHP 7)

InfiniteIterator::__construct — Constructs an InfiniteIterator

说明

public InfiniteIterator::__construct ( Iterator $iterator )

Constructs an InfiniteIterator from an Iterator.

参数

iterator

The iterator to infinitely iterate over.

返回值

没有返回值。

错误／异常

Throws an E_RECOVERABLE_ERROR if the iterator parameter is not an Iterator.

范例

Example #1 InfiniteIterator::__construct() example

<?php
$arrayit  = new ArrayIterator(array('cat','dog'));
$infinite = new InfiniteIterator($arrayit);
$limit    = new LimitIterator($infinite, 0, 7);
foreach($limit as $value)
{
    echo "$value\n";
}
?>

以上例程会输出：

cat
dog
cat
dog
cat
dog
cat

参见

  • InfiniteIterator::next() - Moves the inner Iterator forward or rewinds it

InfiniteIterator
InfiniteIterator::next
InfiniteIterator


Moves the inner Iterator forward or rewinds it

InfiniteIterator::__construct
IteratorIterator
InfiniteIterator
PHP Manual

InfiniteIterator::next

(PHP 5 >= 5.1.0, PHP 7)

InfiniteIterator::next — Moves the inner Iterator forward or rewinds it

说明

public void InfiniteIterator::next ( void )

Moves the inner Iterator forward to its next element if there is one, otherwise rewinds the inner Iterator back to the beginning.

Note:

Even an InfiniteIterator stops if its inner Iterator is empty.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • InfiniteIterator::__construct() - Constructs an InfiniteIterator

InfiniteIterator::__construct
IteratorIterator
InfiniteIterator


The IteratorIterator class

(PHP 5 >= 5.1.0, PHP 7)

简介

This iterator wrapper allows the conversion of anything that is Traversable into an Iterator. It is important to understand that most classes that do not implement Iterators have reasons as most likely they do not allow the full Iterator feature set. If so, techniques should be provided to prevent misuse, otherwise expect exceptions or fatal errors.

类摘要

IteratorIterator implements OuterIterator {
/* 方法 */
public __construct ( Traversable $iterator )
public mixed current ( void )
public Traversable getInnerIterator ( void )
public scalar key ( void )
public void next ( void )
public void rewind ( void )
public bool valid ( void )
}

注释

Note:

This class permits access to methods of the inner iterator via the __call magic method.

Table of Contents

  • IteratorIterator::__construct — Create an iterator from anything that is traversable
  • IteratorIterator::current — Get the current value
  • IteratorIterator::getInnerIterator — Get the inner iterator
  • IteratorIterator::key — Get the key of the current element
  • IteratorIterator::next — Forward to the next element
  • IteratorIterator::rewind — Rewind to the first element
  • IteratorIterator::valid — Checks if the iterator is valid
InfiniteIterator::next
IteratorIterator::__construct
迭代器


Create an iterator from anything that is traversable

IteratorIterator
IteratorIterator::current
IteratorIterator
PHP Manual

IteratorIterator::__construct

(PHP 5 >= 5.1.0, PHP 7)

IteratorIterator::__construct — Create an iterator from anything that is traversable

说明

public IteratorIterator::__construct ( Traversable $iterator )

Creates an iterator from anything that is traversable.

参数

iterator

The traversable iterator.

返回值

没有返回值。

参见

  • Traversable

IteratorIterator
IteratorIterator::current
IteratorIterator


Get the current value

IteratorIterator::__construct
IteratorIterator::getInnerIterator
IteratorIterator
PHP Manual

IteratorIterator::current

(PHP 5 >= 5.1.0, PHP 7)

IteratorIterator::current — Get the current value

说明

public mixed IteratorIterator::current ( void )

Get the value of the current element.

参数

此函数没有参数。

返回值

The value of the current element.

参见

  • IteratorIterator::key() - Get the key of the current element

IteratorIterator::__construct
IteratorIterator::getInnerIterator
IteratorIterator


Get the inner iterator

IteratorIterator::current
IteratorIterator::key
IteratorIterator
PHP Manual

IteratorIterator::getInnerIterator

(PHP 5 >= 5.1.0, PHP 7)

IteratorIterator::getInnerIterator — Get the inner iterator

说明

public Traversable IteratorIterator::getInnerIterator ( void )

Get the inner iterator.

参数

此函数没有参数。

返回值

The inner iterator as passed to IteratorIterator::__construct().

参见

  • Iterator
  • OuterIterator

IteratorIterator::current
IteratorIterator::key
IteratorIterator


Get the key of the current element

IteratorIterator::getInnerIterator
IteratorIterator::next
IteratorIterator
PHP Manual

IteratorIterator::key

(PHP 5 >= 5.1.0, PHP 7)

IteratorIterator::key — Get the key of the current element

说明

public scalar IteratorIterator::key ( void )

Get the key of the current element.

参数

此函数没有参数。

返回值

The key of the current element.

参见

  • IteratorIterator::current() - Get the current value

IteratorIterator::getInnerIterator
IteratorIterator::next
IteratorIterator


Forward to the next element

IteratorIterator::key
IteratorIterator::rewind
IteratorIterator
PHP Manual

IteratorIterator::next

(PHP 5 >= 5.1.0, PHP 7)

IteratorIterator::next — Forward to the next element

说明

public void IteratorIterator::next ( void )

Forward to the next element.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • IteratorIterator::rewind() - Rewind to the first element
  • IteratorIterator::valid() - Checks if the iterator is valid

IteratorIterator::key
IteratorIterator::rewind
IteratorIterator


Rewind to the first element

IteratorIterator::next
IteratorIterator::valid
IteratorIterator
PHP Manual

IteratorIterator::rewind

(PHP 5 >= 5.1.0, PHP 7)

IteratorIterator::rewind — Rewind to the first element

说明

public void IteratorIterator::rewind ( void )

Rewinds to the first element.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • IteratorIterator::next() - Forward to the next element
  • IteratorIterator::valid() - Checks if the iterator is valid

IteratorIterator::next
IteratorIterator::valid
IteratorIterator


Checks if the iterator is valid

IteratorIterator::rewind
LimitIterator
IteratorIterator
PHP Manual

IteratorIterator::valid

(PHP 5 >= 5.1.0, PHP 7)

IteratorIterator::valid — Checks if the iterator is valid

说明

public bool IteratorIterator::valid ( void )

Checks if the iterator is valid.

参数

此函数没有参数。

返回值

Returns TRUE if the iterator is valid, otherwise FALSE

参见

  • iterator_count() - 计算迭代器中元素的个数
  • IteratorIterator::current() - Get the current value

IteratorIterator::rewind
LimitIterator
IteratorIterator


The LimitIterator class

(PHP 5 >= 5.1.0, PHP 7)

简介

LimitIterator类允许遍历一个 Iterator 的限定子集的元素.

类摘要

LimitIterator extends IteratorIterator implements OuterIterator {
/* 方法 */
public __construct ( Iterator $iterator [, int $offset = 0 [, int $count = -1 ]] )
public mixed current ( void )
public Iterator getInnerIterator ( void )
public int getPosition ( void )
public mixed key ( void )
public void next ( void )
public void rewind ( void )
public int seek ( int $position )
public bool valid ( void )
}

范例

Example #1 LimitIterator usage example

<?php

// Create an iterator to be limited
$fruits = new ArrayIterator(array(
    'apple',
    'banana',
    'cherry',
    'damson',
    'elderberry'
));

// Loop over first three fruits only
foreach (new LimitIterator($fruits, 0, 3) as $fruit) {
    var_dump($fruit);
}

echo "\n";

// Loop from third fruit until the end
// Note: offset starts from zero for apple
foreach (new LimitIterator($fruits, 2) as $fruit) {
    var_dump($fruit);
}

?>

以上例程会输出：

string(5) "apple"
string(6) "banana"
string(6) "cherry"

string(6) "cherry"
string(6) "damson"
string(10) "elderberry"

Table of Contents

  • LimitIterator::__construct — Construct a LimitIterator
  • LimitIterator::current — Get current element
  • LimitIterator::getInnerIterator — Get inner iterator
  • LimitIterator::getPosition — Return the current position
  • LimitIterator::key — Get current key
  • LimitIterator::next — Move the iterator forward
  • LimitIterator::rewind — Rewind the iterator to the specified starting offset
  • LimitIterator::seek — Seek to the given position
  • LimitIterator::valid — Check whether the current element is valid
IteratorIterator::valid
LimitIterator::__construct
迭代器


Construct a LimitIterator

LimitIterator
LimitIterator::current
LimitIterator
PHP Manual

LimitIterator::__construct

(PHP 5 >= 5.1.0, PHP 7)

LimitIterator::__construct — Construct a LimitIterator

说明

public LimitIterator::__construct ( Iterator $iterator [, int $offset = 0 [, int $count = -1 ]] )

Constructs a new LimitIterator from an iterator with a given starting offset and maximum count.

参数

iterator

The Iterator to limit.

offset

Optional offset of the limit.

count

Optional count of the limit.

返回值

The new LimitIterator.

错误／异常

Throws an OutOfRangeException if the offset is less than 0 or the count is less than -1.

范例

Example #1 LimitIterator::__construct() example

<?php
$ait = new ArrayIterator(array('a', 'b', 'c', 'd', 'e'));
$lit = new LimitIterator($ait, 1, 3);
foreach ($lit as $value) {
    echo $value . "\n";
}
?>

以上例程会输出：

b
c
d

参见

  • LimitIterator examples

LimitIterator
LimitIterator::current
LimitIterator


Get current element

LimitIterator::__construct
LimitIterator::getInnerIterator
LimitIterator
PHP Manual

LimitIterator::current

(PHP 5 >= 5.1.0, PHP 7)

LimitIterator::current — Get current element

说明

public mixed LimitIterator::current ( void )

Gets the current element of the inner Iterator.

参数

此函数没有参数。

返回值

Returns the current element or NULL if there is none.

参见

  • LimitIterator::key() - Get current key
  • LimitIterator::next() - Move the iterator forward
  • LimitIterator::rewind() - Rewind the iterator to the specified starting offset
  • LimitIterator::seek() - Seek to the given position
  • LimitIterator::valid() - Check whether the current element is valid

LimitIterator::__construct
LimitIterator::getInnerIterator
LimitIterator


Get inner iterator

LimitIterator::current
LimitIterator::getPosition
LimitIterator
PHP Manual

LimitIterator::getInnerIterator

(PHP 5 >= 5.1.0, PHP 7)

LimitIterator::getInnerIterator — Get inner iterator

说明

public Iterator LimitIterator::getInnerIterator ( void )

Gets the inner Iterator.

参数

此函数没有参数。

返回值

The inner iterator passed to LimitIterator::__construct().

参见

  • LimitIterator::__construct() - Construct a LimitIterator
  • IteratorIterator::getInnerIterator() - Get the inner iterator

LimitIterator::current
LimitIterator::getPosition
LimitIterator


Return the current position

LimitIterator::getInnerIterator
LimitIterator::key
LimitIterator
PHP Manual

LimitIterator::getPosition

(PHP 5 >= 5.1.0, PHP 7)

LimitIterator::getPosition — Return the current position

说明

public int LimitIterator::getPosition ( void )

Gets the current zero-based position of the inner Iterator.

参数

此函数没有参数。

返回值

The current position.

范例

Example #1 LimitIterator::getPosition() example

<?php
$fruits = array(
    'a' => 'apple',
    'b' => 'banana',
    'c' => 'cherry',
    'd' => 'damson',
    'e' => 'elderberry'
);
$array_it = new ArrayIterator($fruits);
$limit_it = new LimitIterator($array_it, 2, 3);
foreach ($limit_it as $item) {
    echo $limit_it->getPosition() . ' ' . $item . "\n";
}
?>

以上例程会输出：

2 cherry
3 damson
4 elderberry

参见

  • FilterIterator::key() - Get the current key

LimitIterator::getInnerIterator
LimitIterator::key
LimitIterator


Get current key

LimitIterator::getPosition
LimitIterator::next
LimitIterator
PHP Manual

LimitIterator::key

(PHP 5 >= 5.1.0, PHP 7)

LimitIterator::key — Get current key

说明

public mixed LimitIterator::key ( void )

Gets the key for the current item in the inner Iterator.

参数

此函数没有参数。

返回值

Returns the key for the current item.

参见

  • LimitIterator::getPosition() - Return the current position
  • LimitIterator::current() - Get current element
  • LimitIterator::next() - Move the iterator forward
  • LimitIterator::rewind() - Rewind the iterator to the specified starting offset
  • LimitIterator::seek() - Seek to the given position
  • LimitIterator::valid() - Check whether the current element is valid

LimitIterator::getPosition
LimitIterator::next
LimitIterator


Move the iterator forward

LimitIterator::key
LimitIterator::rewind
LimitIterator
PHP Manual

LimitIterator::next

(PHP 5 >= 5.1.0, PHP 7)

LimitIterator::next — Move the iterator forward

说明

public void LimitIterator::next ( void )

Moves the iterator forward.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • LimitIterator::current() - Get current element
  • LimitIterator::key() - Get current key
  • LimitIterator::rewind() - Rewind the iterator to the specified starting offset
  • LimitIterator::seek() - Seek to the given position
  • LimitIterator::valid() - Check whether the current element is valid

LimitIterator::key
LimitIterator::rewind
LimitIterator


Rewind the iterator to the specified starting offset

LimitIterator::next
LimitIterator::seek
LimitIterator
PHP Manual

LimitIterator::rewind

(PHP 5 >= 5.1.0, PHP 7)

LimitIterator::rewind — Rewind the iterator to the specified starting offset

说明

public void LimitIterator::rewind ( void )

Rewinds the iterator to the starting offset specified in LimitIterator::__construct().

参数

此函数没有参数。

返回值

没有返回值。

参见

  • LimitIterator::current() - Get current element
  • LimitIterator::key() - Get current key
  • LimitIterator::next() - Move the iterator forward
  • LimitIterator::seek() - Seek to the given position
  • LimitIterator::valid() - Check whether the current element is valid

LimitIterator::next
LimitIterator::seek
LimitIterator


Seek to the given position

LimitIterator::rewind
LimitIterator::valid
LimitIterator
PHP Manual

LimitIterator::seek

(PHP 5 >= 5.1.0, PHP 7)

LimitIterator::seek — Seek to the given position

说明

public int LimitIterator::seek ( int $position )

Moves the iterator to the offset specified by position.

参数

position

The position to seek to.

返回值

Returns the offset position after seeking.

错误／异常

Throws an OutOfBoundsException if the position is outside of the limits specified in LimitIterator::__construct().

参见

  • LimitIterator::current() - Get current element
  • LimitIterator::key() - Get current key
  • LimitIterator::rewind() - Rewind the iterator to the specified starting offset
  • LimitIterator::next() - Move the iterator forward
  • LimitIterator::valid() - Check whether the current element is valid

LimitIterator::rewind
LimitIterator::valid
LimitIterator


Check whether the current element is valid

LimitIterator::seek
MultipleIterator
LimitIterator
PHP Manual

LimitIterator::valid

(PHP 5 >= 5.1.0, PHP 7)

LimitIterator::valid — Check whether the current element is valid

说明

public bool LimitIterator::valid ( void )

Checks whether the current element is valid.

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • LimitIterator::current() - Get current element
  • LimitIterator::key() - Get current key
  • LimitIterator::rewind() - Rewind the iterator to the specified starting offset
  • LimitIterator::next() - Move the iterator forward
  • LimitIterator::seek() - Seek to the given position

LimitIterator::seek
MultipleIterator
LimitIterator


The MultipleIterator class

(PHP 5 >= 5.3.0, PHP 7)

简介

An Iterator that sequentially iterates over all attached iterators

类摘要

MultipleIterator implements Iterator {
/* 常量 */
const integer MIT_NEED_ANY = 0 ;
const integer MIT_NEED_ALL = 1 ;
const integer MIT_KEYS_NUMERIC = 0 ;
const integer MIT_KEYS_ASSOC = 2 ;
/* 方法 */
public __construct ([ int $flags = MultipleIterator::MIT_NEED_ALL|MultipleIterator::MIT_KEYS_NUMERIC ] )
public void attachIterator ( Iterator $iterator [, string $infos ] )
public bool containsIterator ( Iterator $iterator )
public int countIterators ( void )
public array current ( void )
public void detachIterator ( Iterator $iterator )
public int getFlags ( void )
public array key ( void )
public void next ( void )
public void rewind ( void )
public void setFlags ( int $flags )
public bool valid ( void )
}

预定义常量

MultipleIterator::MIT_NEED_ANY

Do not require all sub iterators to be valid in iteration.

MultipleIterator::MIT_NEED_ALL

Require all sub iterators to be valid in iteration.

MultipleIterator::MIT_KEYS_NUMERIC

Keys are created from the sub iterators position.

MultipleIterator::MIT_KEYS_ASSOC

Keys are created from sub iterators associated information.

Table of Contents

  • MultipleIterator::attachIterator — Attaches iterator information
  • MultipleIterator::__construct — Constructs a new MultipleIterator
  • MultipleIterator::containsIterator — Checks if an iterator is attached
  • MultipleIterator::countIterators — Gets the number of attached iterator instances
  • MultipleIterator::current — Gets the registered iterator instances
  • MultipleIterator::detachIterator — Detaches an iterator
  • MultipleIterator::getFlags — Gets the flag information
  • MultipleIterator::key — Gets the registered iterator instances
  • MultipleIterator::next — Moves all attached iterator instances forward
  • MultipleIterator::rewind — Rewinds all attached iterator instances
  • MultipleIterator::setFlags — Sets flags
  • MultipleIterator::valid — Checks the validity of sub iterators
LimitIterator::valid
MultipleIterator::attachIterator
迭代器


Attaches iterator information

MultipleIterator
MultipleIterator::__construct
MultipleIterator
PHP Manual

MultipleIterator::attachIterator

(PHP 5 >= 5.3.0, PHP 7)

MultipleIterator::attachIterator — Attaches iterator information

说明

public void MultipleIterator::attachIterator ( Iterator $iterator [, string $infos ] )

Attaches iterator information.

Warning

本函数还未编写文档，仅有参数列表。

参数

iterator

The new iterator to attach.

infos

The associative information for the Iterator, which must be an integer, a string, or NULL.

返回值

Description...

错误／异常

An IllegalValueException if the iterator parameter is invalid, or if infos is already associated information.

参见

  • MultipleIterator::__construct() - Constructs a new MultipleIterator

MultipleIterator
MultipleIterator::__construct
MultipleIterator


Constructs a new MultipleIterator

MultipleIterator::attachIterator
MultipleIterator::containsIterator
MultipleIterator
PHP Manual

MultipleIterator::__construct

(PHP 5 >= 5.3.0, PHP 7)

MultipleIterator::__construct — Constructs a new MultipleIterator

说明

public MultipleIterator::__construct ([ int $flags = MultipleIterator::MIT_NEED_ALL|MultipleIterator::MIT_KEYS_NUMERIC ] )

Construct a new MultipleIterator.

参数

flags

The flags to set, according to the Flag Constants.

  • MultipleIterator::MIT_NEED_ALL or MultipleIterator::MIT_NEED_ANY
  • MultipleIterator::MIT_KEYS_NUMERIC or MultipleIterator::MIT_KEYS_ASSOC

Defaults to MultipleIterator::MIT_NEED_ALL|MultipleIterator::MIT_KEYS_NUMERIC.

返回值

没有返回值。

范例

Example #1 Iterating a MultipleIterator

<?php
$people = new ArrayIterator(array('John', 'Jane', 'Jack', 'Judy'));
$roles  = new ArrayIterator(array('Developer', 'Scrum Master', 'Project Owner'));

$team = new MultipleIterator($flags);
$team->attachIterator($people, 'person');
$team->attachIterator($roles, 'role');

foreach ($team as $member) {
    print_r($member);
}
?>

Output with $flags = MIT_NEED_ALL|MIT_KEYS_NUMERIC

Array
(
    [0] => John
    [1] => Developer
)
Array
(
    [0] => Jane
    [1] => Scrum Master
)
Array
(
    [0] => Jack
    [1] => Project Owner
)

Output with $flags = MIT_NEED_ANY|MIT_KEYS_NUMERIC

Array
(
    [0] => John
    [1] => Developer
)
Array
(
    [0] => Jane
    [1] => Scrum Master
)
Array
(
    [0] => Jack
    [1] => Project Owner
)
Array
(
    [0] => Judy
    [1] =>
)

Output with $flags = MIT_NEED_ALL|MIT_KEYS_ASSOC

Array
(
    [person] => John
    [role] => Developer
)
Array
(
    [person] => Jane
    [role] => Scrum Master
)
Array
(
    [person] => Jack
    [role] => Project Owner
)

Output with $flags = MIT_NEED_ANY|MIT_KEYS_ASSOC

Array
(
    [person] => John
    [role] => Developer
)
Array
(
    [person] => Jane
    [role] => Scrum Master
)
Array
(
    [person] => Jack
    [role] => Project Owner
)
Array
(
    [person] => Judy
    [role] =>
)

参见

  • Flag Constants
  • MultipleIterator::valid() - Checks the validity of sub iterators

MultipleIterator::attachIterator
MultipleIterator::containsIterator
MultipleIterator


Checks if an iterator is attached

MultipleIterator::__construct
MultipleIterator::countIterators
MultipleIterator
PHP Manual

MultipleIterator::containsIterator

(PHP 5 >= 5.3.0, PHP 7)

MultipleIterator::containsIterator — Checks if an iterator is attached

说明

public bool MultipleIterator::containsIterator ( Iterator $iterator )

Checks if an iterator is attached or not.

Warning

本函数还未编写文档，仅有参数列表。

参数

iterator

The iterator to check.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • MultipleIterator::valid() - Checks the validity of sub iterators

MultipleIterator::__construct
MultipleIterator::countIterators
MultipleIterator


Gets the number of attached iterator instances

MultipleIterator::containsIterator
MultipleIterator::current
MultipleIterator
PHP Manual

MultipleIterator::countIterators

(PHP 5 >= 5.3.0, PHP 7)

MultipleIterator::countIterators — Gets the number of attached iterator instances

说明

public int MultipleIterator::countIterators ( void )

Gets the number of attached iterator instances.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The number of attached iterator instances (as an integer).

参见

  • MultipleIterator::containsIterator() - Checks if an iterator is attached

MultipleIterator::containsIterator
MultipleIterator::current
MultipleIterator


Gets the registered iterator instances

MultipleIterator::countIterators
MultipleIterator::detachIterator
MultipleIterator
PHP Manual

MultipleIterator::current

(PHP 5 >= 5.3.0, PHP 7)

MultipleIterator::current — Gets the registered iterator instances

说明

public array MultipleIterator::current ( void )

Get the registered iterator instances current() result.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

An array containing the current values of each attached iterator, or FALSE if no iterators are attached.

错误／异常

A RuntimeException if mode MIT_NEED_ALL is set and at least one attached iterator is not valid. Or an IllegalValueException if a key is NULL and MIT_KEYS_ASSOC is set.

参见

  • MultipleIterator::valid() - Checks the validity of sub iterators

MultipleIterator::countIterators
MultipleIterator::detachIterator
MultipleIterator


Detaches an iterator

MultipleIterator::current
MultipleIterator::getFlags
MultipleIterator
PHP Manual

MultipleIterator::detachIterator

(PHP 5 >= 5.3.0, PHP 7)

MultipleIterator::detachIterator — Detaches an iterator

说明

public void MultipleIterator::detachIterator ( Iterator $iterator )

Detaches an iterator.

Warning

本函数还未编写文档，仅有参数列表。

参数

iterator

The iterator to detach.

返回值

没有返回值。

参见

  • MultipleIterator::attachIterator() - Attaches iterator information

MultipleIterator::current
MultipleIterator::getFlags
MultipleIterator


Gets the flag information

MultipleIterator::detachIterator
MultipleIterator::key
MultipleIterator
PHP Manual

MultipleIterator::getFlags

(PHP 5 >= 5.3.0, PHP 7)

MultipleIterator::getFlags — Gets the flag information

说明

public int MultipleIterator::getFlags ( void )

Gets information about the flags.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Information about the flags, as an integer.

参见

  • Flag Constants
  • MultipleIterator::__construct() - Constructs a new MultipleIterator
  • MultipleIterator::setFlags() - Sets flags

MultipleIterator::detachIterator
MultipleIterator::key
MultipleIterator


Gets the registered iterator instances

MultipleIterator::getFlags
MultipleIterator::next
MultipleIterator
PHP Manual

MultipleIterator::key

(PHP 5 >= 5.3.0, PHP 7)

MultipleIterator::key — Gets the registered iterator instances

说明

public array MultipleIterator::key ( void )

Get the registered iterator instances key() result.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

An array of all registered iterator instances, or FALSE if no sub iterator is attached.

错误／异常

A LogicException if mode MIT_NEED_ALL is set, and at least one attached iterator is not valid.

Calling this method from foreach triggers warning "Illegal type returned".

参见

  • MultipleIterator::current() - Gets the registered iterator instances

MultipleIterator::getFlags
MultipleIterator::next
MultipleIterator


Moves all attached iterator instances forward

MultipleIterator::key
MultipleIterator::rewind
MultipleIterator
PHP Manual

MultipleIterator::next

(PHP 5 >= 5.3.0, PHP 7)

MultipleIterator::next — Moves all attached iterator instances forward

说明

public void MultipleIterator::next ( void )

Moves all attached iterator instances forward.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

参见

  • MultipleIterator::rewind() - Rewinds all attached iterator instances

MultipleIterator::key
MultipleIterator::rewind
MultipleIterator


Rewinds all attached iterator instances

MultipleIterator::next
MultipleIterator::setFlags
MultipleIterator
PHP Manual

MultipleIterator::rewind

(PHP 5 >= 5.3.0, PHP 7)

MultipleIterator::rewind — Rewinds all attached iterator instances

说明

public void MultipleIterator::rewind ( void )

Rewinds all attached iterator instances.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

参见

  • MultipleIterator::next() - Moves all attached iterator instances forward

MultipleIterator::next
MultipleIterator::setFlags
MultipleIterator


Sets flags

MultipleIterator::rewind
MultipleIterator::valid
MultipleIterator
PHP Manual

MultipleIterator::setFlags

(PHP 5 >= 5.3.0, PHP 7)

MultipleIterator::setFlags — Sets flags

说明

public void MultipleIterator::setFlags ( int $flags )

Sets flags.

Warning

本函数还未编写文档，仅有参数列表。

参数

flags

The flags to set, according to the Flag Constants

返回值

没有返回值。

参见

  • Flag Constants
  • MultipleIterator::__construct() - Constructs a new MultipleIterator
  • MultipleIterator::getFlags() - Gets the flag information

MultipleIterator::rewind
MultipleIterator::valid
MultipleIterator


Checks the validity of sub iterators

MultipleIterator::setFlags
NoRewindIterator
MultipleIterator
PHP Manual

MultipleIterator::valid

(PHP 5 >= 5.3.0, PHP 7)

MultipleIterator::valid — Checks the validity of sub iterators

说明

public bool MultipleIterator::valid ( void )

Checks the validity of sub iterators.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Returns TRUE if one or all sub iterators are valid depending on flags, otherwise FALSE

参见

  • MultipleIterator::__construct() - Constructs a new MultipleIterator

MultipleIterator::setFlags
NoRewindIterator
MultipleIterator


The NoRewindIterator class

(PHP 5 >= 5.1.0, PHP 7)

简介

This iterator cannot be rewound.

类摘要

NoRewindIterator extends IteratorIterator {
/* 方法 */
public __construct ( Iterator $iterator )
public mixed current ( void )
public iterator getInnerIterator ( void )
public mixed key ( void )
public void next ( void )
public void rewind ( void )
public bool valid ( void )
/* 继承的方法 */
public IteratorIterator::__construct ( Traversable $iterator )
public mixed IteratorIterator::current ( void )
public Traversable IteratorIterator::getInnerIterator ( void )
public scalar IteratorIterator::key ( void )
public void IteratorIterator::next ( void )
public void IteratorIterator::rewind ( void )
public bool IteratorIterator::valid ( void )
}

Table of Contents

  • NoRewindIterator::__construct — Construct a NoRewindIterator
  • NoRewindIterator::current — Get the current value
  • NoRewindIterator::getInnerIterator — Get the inner iterator
  • NoRewindIterator::key — Get the current key
  • NoRewindIterator::next — Forward to the next element
  • NoRewindIterator::rewind — Prevents the rewind operation on the inner iterator.
  • NoRewindIterator::valid — Validates the iterator
MultipleIterator::valid
NoRewindIterator::__construct
迭代器


Construct a NoRewindIterator

NoRewindIterator
NoRewindIterator::current
NoRewindIterator
PHP Manual

NoRewindIterator::__construct

(PHP 5 >= 5.1.0, PHP 7)

NoRewindIterator::__construct — Construct a NoRewindIterator

说明

public NoRewindIterator::__construct ( Iterator $iterator )

Constructs a NoRewindIterator.

参数

iterator

The iterator being used.

返回值

A NoRewindIterator() based on the passed in iterator.

范例

Example #1 NoRewindIterator::__construct() example

The second loop does not output because the iterator is only used once, as it does not rewind.

<?php
$fruit = array('apple', 'banana', 'cranberry');

$arr = new ArrayObject($fruit);
$it  = new NoRewindIterator($arr->getIterator());

echo "Fruit A:\n";
foreach( $it as $item ) {
    echo $item . "\n";
}

echo "Fruit B:\n";
foreach( $it as $item ) {
    echo $item . "\n";
}
?>

以上例程的输出类似于：

Fruit A:
apple
banana
cranberry
Fruit B:

参见

  • NoRewindIterator::valid() - Validates the iterator

NoRewindIterator
NoRewindIterator::current
NoRewindIterator


Get the current value

NoRewindIterator::__construct
NoRewindIterator::getInnerIterator
NoRewindIterator
PHP Manual

NoRewindIterator::current

(PHP 5 >= 5.1.0, PHP 7)

NoRewindIterator::current — Get the current value

说明

public mixed NoRewindIterator::current ( void )

Gets the current value.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The current value.

参见

  • NoRewindIterator::key() - Get the current key

NoRewindIterator::__construct
NoRewindIterator::getInnerIterator
NoRewindIterator


Get the inner iterator

NoRewindIterator::current
NoRewindIterator::key
NoRewindIterator
PHP Manual

NoRewindIterator::getInnerIterator

(PHP 5 >= 5.1.0, PHP 7)

NoRewindIterator::getInnerIterator — Get the inner iterator

说明

public iterator NoRewindIterator::getInnerIterator ( void )

Gets the inner iterator, that was passed in to NoRewindIterator.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The inner iterator, as passed to NoRewindIterator::__construct().

参见

  • NoRewindIterator::valid() - Validates the iterator

NoRewindIterator::current
NoRewindIterator::key
NoRewindIterator


Get the current key

NoRewindIterator::getInnerIterator
NoRewindIterator::next
NoRewindIterator
PHP Manual

NoRewindIterator::key

(PHP 5 >= 5.1.0, PHP 7)

NoRewindIterator::key — Get the current key

说明

public mixed NoRewindIterator::key ( void )

Gets the current key.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The current key.

参见

  • NoRewindIterator::next() - Forward to the next element

NoRewindIterator::getInnerIterator
NoRewindIterator::next
NoRewindIterator


Forward to the next element

NoRewindIterator::key
NoRewindIterator::rewind
NoRewindIterator
PHP Manual

NoRewindIterator::next

(PHP 5 >= 5.1.0, PHP 7)

NoRewindIterator::next — Forward to the next element

说明

public void NoRewindIterator::next ( void )

Forwards to the next element.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

参见

  • NoRewindIterator::rewind() - Prevents the rewind operation on the inner iterator.

NoRewindIterator::key
NoRewindIterator::rewind
NoRewindIterator


Prevents the rewind operation on the inner iterator.

NoRewindIterator::next
NoRewindIterator::valid
NoRewindIterator
PHP Manual

NoRewindIterator::rewind

(PHP 5 >= 5.1.0, PHP 7)

NoRewindIterator::rewind — Prevents the rewind operation on the inner iterator.

说明

public void NoRewindIterator::rewind ( void )

Prevents the rewind operation on the inner iterator.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 NoRewindIterator::rewind() example

This example demonstrates that calling rewind on a NoRewindIterator object has no effect.

<?php
$fruits = array("lemon", "orange", "apple", "pear");

$noRewindIterator = new NoRewindIterator(new ArrayIterator($fruits));

echo $noRewindIterator->current() . "\n";
$noRewindIterator->next();
// now rewind the iterator (nothing should happen)
$noRewindIterator->rewind();
echo $noRewindIterator->current() . "\n";
?>

以上例程会输出：

lemon
orange

NoRewindIterator::next
NoRewindIterator::valid
NoRewindIterator


Validates the iterator

NoRewindIterator::rewind
ParentIterator
NoRewindIterator
PHP Manual

NoRewindIterator::valid

(PHP 5 >= 5.1.0, PHP 7)

NoRewindIterator::valid — Validates the iterator

说明

public bool NoRewindIterator::valid ( void )

Checks whether the iterator is valid.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • NoRewindIterator::getInnerIterator() - Get the inner iterator

NoRewindIterator::rewind
ParentIterator
NoRewindIterator


The ParentIterator class

(PHP 5 >= 5.1.0, PHP 7)

简介

This extended FilterIterator allows a recursive iteration using RecursiveIteratorIterator that only shows those elements which have children.

类摘要

ParentIterator extends RecursiveFilterIterator implements RecursiveIterator , OuterIterator {
/* 方法 */
public bool accept ( void )
public __construct ( RecursiveIterator $iterator )
public ParentIterator getChildren ( void )
public bool hasChildren ( void )
public void next ( void )
public void rewind ( void )
}

Table of Contents

  • ParentIterator::accept — Determines acceptability
  • ParentIterator::__construct — Constructs a ParentIterator
  • ParentIterator::getChildren — Return the inner iterator's children contained in a ParentIterator
  • ParentIterator::hasChildren — Check whether the inner iterator's current element has children
  • ParentIterator::next — Move the iterator forward
  • ParentIterator::rewind — Rewind the iterator
NoRewindIterator::valid
ParentIterator::accept
迭代器


Determines acceptability

ParentIterator
ParentIterator::__construct
ParentIterator
PHP Manual

ParentIterator::accept

(PHP 5 >= 5.1.0, PHP 7)

ParentIterator::accept — Determines acceptability

说明

public bool ParentIterator::accept ( void )

Determines if the current element has children.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

TRUE if the current element is acceptable, otherwise FALSE.

参见

  • ParentIterator::hasChildren() - Check whether the inner iterator's current element has children
  • FilterIterator::accept() - Check whether the current element of the iterator is acceptable

ParentIterator
ParentIterator::__construct
ParentIterator


Constructs a ParentIterator

ParentIterator::accept
ParentIterator::getChildren
ParentIterator
PHP Manual

ParentIterator::__construct

(PHP 5 >= 5.1.0, PHP 7)

ParentIterator::__construct — Constructs a ParentIterator

说明

public ParentIterator::__construct ( RecursiveIterator $iterator )

Constructs a ParentIterator on an iterator.

Warning

本函数还未编写文档，仅有参数列表。

参数

iterator

The iterator being constructed upon.

返回值

The ParentIterator.

ParentIterator::accept
ParentIterator::getChildren
ParentIterator


Return the inner iterator's children contained in a ParentIterator

ParentIterator::__construct
ParentIterator::hasChildren
ParentIterator
PHP Manual

ParentIterator::getChildren

(PHP 5 >= 5.1.0, PHP 7)

ParentIterator::getChildren — Return the inner iterator's children contained in a ParentIterator

说明

public ParentIterator ParentIterator::getChildren ( void )

Get the inner iterator's children contained in a ParentIterator.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

An object.

ParentIterator::__construct
ParentIterator::hasChildren
ParentIterator


Check whether the inner iterator's current element has children

ParentIterator::getChildren
ParentIterator::next
ParentIterator
PHP Manual

ParentIterator::hasChildren

(PHP 5 >= 5.1.0, PHP 7)

ParentIterator::hasChildren — Check whether the inner iterator's current element has children

说明

public bool ParentIterator::hasChildren ( void )

Check whether the inner iterator's current element has children.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ParentIterator::getChildren
ParentIterator::next
ParentIterator


Move the iterator forward

ParentIterator::hasChildren
ParentIterator::rewind
ParentIterator
PHP Manual

ParentIterator::next

(PHP 5 >= 5.1.0, PHP 7)

ParentIterator::next — Move the iterator forward

说明

public void ParentIterator::next ( void )

Moves the iterator forward.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

ParentIterator::hasChildren
ParentIterator::rewind
ParentIterator


Rewind the iterator

ParentIterator::next
RecursiveArrayIterator
ParentIterator
PHP Manual

ParentIterator::rewind

(PHP 5 >= 5.1.0, PHP 7)

ParentIterator::rewind — Rewind the iterator

说明

public void ParentIterator::rewind ( void )

Rewinds the iterator.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

ParentIterator::next
RecursiveArrayIterator
ParentIterator


The RecursiveArrayIterator class

(PHP 5 >= 5.1.0, PHP 7)

简介

This iterator allows to unset and modify values and keys while iterating over Arrays and Objects in the same way as the ArrayIterator. Additionally it is possible to iterate over the current iterator entry.

类摘要

RecursiveArrayIterator extends ArrayIterator implements RecursiveIterator {
/* 常量 */
const integer CHILD_ARRAYS_ONLY = 4 ;
/* 方法 */
public RecursiveArrayIterator getChildren ( void )
public bool hasChildren ( void )
/* Inherits */
public void ArrayIterator::append ( mixed $value )
public void ArrayIterator::asort ( void )
public ArrayIterator::__construct ([ mixed $array = array() [, int $flags = 0 ]] )
public int ArrayIterator::count ( void )
public mixed ArrayIterator::current ( void )
public array ArrayIterator::getArrayCopy ( void )
public void ArrayIterator::getFlags ( void )
public mixed ArrayIterator::key ( void )
public void ArrayIterator::ksort ( void )
public void ArrayIterator::natcasesort ( void )
public void ArrayIterator::natsort ( void )
public void ArrayIterator::next ( void )
public void ArrayIterator::offsetExists ( string $index )
public mixed ArrayIterator::offsetGet ( string $index )
public void ArrayIterator::offsetSet ( string $index , string $newval )
public void ArrayIterator::offsetUnset ( string $index )
public void ArrayIterator::rewind ( void )
public void ArrayIterator::seek ( int $position )
public string ArrayIterator::serialize ( void )
public void ArrayIterator::setFlags ( string $flags )
public void ArrayIterator::uasort ( string $cmp_function )
public void ArrayIterator::uksort ( string $cmp_function )
public string ArrayIterator::unserialize ( string $serialized )
public bool ArrayIterator::valid ( void )
}

预定义常量

RecursiveArrayIterator Flags

RecursiveArrayIterator::CHILD_ARRAYS_ONLY

Treat only arrays (not objects) as having children for recursive iteration.

更新日志

版本 | 说明
5.3.0 | CHILD_ARRAYS_ONLY flag was added.

Table of Contents

  • RecursiveArrayIterator::getChildren — Returns an iterator for the current entry if it is an array or an object.
  • RecursiveArrayIterator::hasChildren — Returns whether current entry is an array or an object.
ParentIterator::rewind
RecursiveArrayIterator::getChildren
迭代器


Returns an iterator for the current entry if it is an array or an object.

RecursiveArrayIterator
RecursiveArrayIterator::hasChildren
RecursiveArrayIterator
PHP Manual

RecursiveArrayIterator::getChildren

(PHP 5 >= 5.1.0, PHP 7)

RecursiveArrayIterator::getChildren — Returns an iterator for the current entry if it is an array or an object.

说明

public RecursiveArrayIterator RecursiveArrayIterator::getChildren ( void )

Returns an iterator for the current iterator entry.

参数

此函数没有参数。

返回值

An iterator for the current entry, if it is an array or object.

错误／异常

An InvalidArgumentException will be thrown if the current entry does not contain an array or an object.

范例

Example #1 RecursiveArrayIterator::getChildren() example

<?php
$fruits = array("a" => "lemon", "b" => "orange", array("a" => "apple", "p" => "pear"));

$iterator = new RecursiveArrayIterator($fruits);

while ($iterator->valid()) {

    if ($iterator->hasChildren()) {
        // print all children
        foreach ($iterator->getChildren() as $key => $value) {
            echo $key . ' : ' . $value . "\n";
        }
    } else {
        echo "No children.\n";
    }

    $iterator->next();
}
?>

以上例程会输出：

No children.
No children.
a : apple
p : pear

参见

  • RecursiveArrayIterator::hasChildren() - Returns whether current entry is an array or an object.

RecursiveArrayIterator
RecursiveArrayIterator::hasChildren
RecursiveArrayIterator


Returns whether current entry is an array or an object.

RecursiveArrayIterator::getChildren
RecursiveCachingIterator
RecursiveArrayIterator
PHP Manual

RecursiveArrayIterator::hasChildren

(PHP 5 >= 5.1.0, PHP 7)

RecursiveArrayIterator::hasChildren — Returns whether current entry is an array or an object.

说明

public bool RecursiveArrayIterator::hasChildren ( void )

Returns whether current entry is an array or an object for which an iterator can be obtained via RecursiveArrayIterator::getChildren().

参数

此函数没有参数。

返回值

Returns TRUE if the current entry is an array or an object, otherwise FALSE is returned.

范例

Example #1 RecursiveArrayIterator::hasChildren() example

<?php
$fruits = array("a" => "lemon", "b" => "orange", array("a" => "apple", "p" => "pear"));

$iterator = new RecursiveArrayIterator($fruits);

while ($iterator->valid()) {

    // Check if there are children
    if ($iterator->hasChildren()) {
        // print all children
        foreach ($iterator->getChildren() as $key => $value) {
            echo $key . ' : ' . $value . "\n";
        }
    } else {
        echo "No children.\n";
    }

    $iterator->next();
}
?>

以上例程会输出：

No children.
No children.
a : apple
p : pear

参见

  • RecursiveArrayIterator::getChildren() - Returns an iterator for the current entry if it is an array or an object.

RecursiveArrayIterator::getChildren
RecursiveCachingIterator
RecursiveArrayIterator


The RecursiveCachingIterator class

(PHP 5 >= 5.1.0, PHP 7)

简介

...

类摘要

RecursiveCachingIterator extends CachingIterator implements Countable , ArrayAccess , OuterIterator , RecursiveIterator {
/* 方法 */
public __construct ( Iterator $iterator [, string $flags = self::CALL_TOSTRING ] )
public RecursiveCachingIterator getChildren ( void )
public bool hasChildren ( void )
/* Inherits */
public CachingIterator::__construct ( Iterator $iterator [, int $flags = self::CALL_TOSTRING ] )
public int CachingIterator::count ( void )
public void CachingIterator::current ( void )
public array CachingIterator::getCache ( void )
public int CachingIterator::getFlags ( void )
public Iterator CachingIterator::getInnerIterator ( void )
public void CachingIterator::hasNext ( void )
public scalar CachingIterator::key ( void )
public void CachingIterator::next ( void )
public void CachingIterator::offsetExists ( string $index )
public void CachingIterator::offsetGet ( string $index )
public void CachingIterator::offsetSet ( string $index , string $newval )
public void CachingIterator::offsetUnset ( string $index )
public void CachingIterator::rewind ( void )
public void CachingIterator::setFlags ( int $flags )
public void CachingIterator::__toString ( void )
public void CachingIterator::valid ( void )
}

Table of Contents

  • RecursiveCachingIterator::__construct — Construct
  • RecursiveCachingIterator::getChildren — Return the inner iterator's children as a RecursiveCachingIterator
  • RecursiveCachingIterator::hasChildren — Check whether the current element of the inner iterator has children
RecursiveArrayIterator::hasChildren
RecursiveCachingIterator::__construct
迭代器


Construct

RecursiveCachingIterator
RecursiveCachingIterator::getChildren
RecursiveCachingIterator
PHP Manual

RecursiveCachingIterator::__construct

(PHP 5 >= 5.1.0, PHP 7)

RecursiveCachingIterator::__construct — Construct

说明

public RecursiveCachingIterator::__construct ( Iterator $iterator [, string $flags = self::CALL_TOSTRING ] )

Constructs a new RecursiveCachingIterator, which consists of a passed in iterator.

Warning

本函数还未编写文档，仅有参数列表。

参数

iterator

The iterator being used.

flags

The flags. Use CALL_TOSTRING to call RecursiveCachingIterator::__toString() for every element (the default), and/or CATCH_GET_CHILD to catch exceptions when trying to get children.

返回值

The RecursiveCachingIterator.

参见

  • CachingIterator::__construct() - Construct a new CachingIterator object for the iterator.

RecursiveCachingIterator
RecursiveCachingIterator::getChildren
RecursiveCachingIterator


Return the inner iterator's children as a RecursiveCachingIterator

RecursiveCachingIterator::__construct
RecursiveCachingIterator::hasChildren
RecursiveCachingIterator
PHP Manual

RecursiveCachingIterator::getChildren

(PHP 5 >= 5.1.0, PHP 7)

RecursiveCachingIterator::getChildren — Return the inner iterator's children as a RecursiveCachingIterator

说明

public RecursiveCachingIterator RecursiveCachingIterator::getChildren ( void )
Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The inner iterator's children, as a RecursiveCachingIterator.

RecursiveCachingIterator::__construct
RecursiveCachingIterator::hasChildren
RecursiveCachingIterator


Check whether the current element of the inner iterator has children

RecursiveCachingIterator::getChildren
RecursiveCallbackFilterIterator
RecursiveCachingIterator
PHP Manual

RecursiveCachingIterator::hasChildren

(PHP 5 >= 5.1.0, PHP 7)

RecursiveCachingIterator::hasChildren — Check whether the current element of the inner iterator has children

说明

public bool RecursiveCachingIterator::hasChildren ( void )
Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

TRUE if the inner iterator has children, otherwise FALSE

RecursiveCachingIterator::getChildren
RecursiveCallbackFilterIterator
RecursiveCachingIterator


The RecursiveCallbackFilterIterator class

(PHP 5 >= 5.4.0, PHP 7)

简介

类摘要

RecursiveCallbackFilterIterator extends CallbackFilterIterator implements OuterIterator , RecursiveIterator {
/* 方法 */
public __construct ( RecursiveIterator $iterator , string $callback )
public RecursiveCallbackFilterIterator getChildren ( void )
public bool hasChildren ( void )
/* 继承的方法 */
public string CallbackFilterIterator::accept ( void )
}

范例

The callback should accept up to three arguments: the current item, the current key and the iterator, respectively.

Example #1 Available callback arguments

<?php

/**
 * Callback for RecursiveCallbackFilterIterator
 *
 * @param $current   Current item's value
 * @param $key       Current item's key
 * @param $iterator  Iterator being filtered
 * @return boolean   TRUE to accept the current item, FALSE otherwise
 */
function my_callback($current, $key, $iterator) {
    // Your filtering code here
}

?>

Filtering a recursive iterator generally involves two conditions. The first is that, to allow recursion, the callback function should return TRUE if the current iterator item has children. The second is the normal filter condition, such as a file size or extension check as in the example below.

Example #2 Recursive callback basic example

<?php

$dir = new RecursiveDirectoryIterator(__DIR__);

// Filter large files ( > 100MB)
$files = new RecursiveCallbackFilterIterator($dir, function ($current, $key, $iterator) {
    // Allow recursion
    if ($iterator->hasChildren()) {
        return TRUE;
    }
    // Check for large file
    if ($current->isFile() && $current->getSize() > 104857600) {
        return TRUE;
    }
    return FALSE;
});

foreach (new RecursiveIteratorIterator($files) as $file) {
    echo $file->getPathname() . PHP_EOL;
}

?>

Table of Contents

  • RecursiveCallbackFilterIterator::__construct — Create a RecursiveCallbackFilterIterator from a RecursiveIterator
  • RecursiveCallbackFilterIterator::getChildren — Return the inner iterator's children contained in a RecursiveCallbackFilterIterator
  • RecursiveCallbackFilterIterator::hasChildren — Check whether the inner iterator's current element has children
RecursiveCachingIterator::hasChildren
RecursiveCallbackFilterIterator::__construct
迭代器


Create a RecursiveCallbackFilterIterator from a RecursiveIterator

RecursiveCallbackFilterIterator
RecursiveCallbackFilterIterator::getChildren
RecursiveCallbackFilterIterator
PHP Manual

RecursiveCallbackFilterIterator::__construct

(PHP 5 >= 5.4.0, PHP 7)

RecursiveCallbackFilterIterator::__construct — Create a RecursiveCallbackFilterIterator from a RecursiveIterator

说明

public RecursiveCallbackFilterIterator::__construct ( RecursiveIterator $iterator , string $callback )

Creates a filtered iterator from a RecursiveIterator using the callback to determine which items are accepted or rejected.

参数

iterator

The recursive iterator to be filtered.

callback

The callback, which should return TRUE to accept the current item or FALSE otherwise. See Examples.

May be any valid callable value.

返回值

没有返回值。

参见

  • RecursiveCallbackFilterIterator Examples
  • RecursiveCallbackFilterIterator::getChildren() - Return the inner iterator's children contained in a RecursiveCallbackFilterIterator
  • RecursiveCallbackFilteriterator::hasChildren() - Check whether the inner iterator's current element has children

RecursiveCallbackFilterIterator
RecursiveCallbackFilterIterator::getChildren
RecursiveCallbackFilterIterator


Return the inner iterator's children contained in a RecursiveCallbackFilterIterator

RecursiveCallbackFilterIterator::__construct
RecursiveCallbackFilterIterator::hasChildren
RecursiveCallbackFilterIterator
PHP Manual

RecursiveCallbackFilterIterator::getChildren

(PHP 5 >= 5.4.0, PHP 7)

RecursiveCallbackFilterIterator::getChildren — Return the inner iterator's children contained in a RecursiveCallbackFilterIterator

说明

public RecursiveCallbackFilterIterator RecursiveCallbackFilterIterator::getChildren ( void )

Fetches the filtered children of the inner iterator.

RecursiveCallbackFilterIterator::hasChildren() should be used to determine if there are children to be fetched.

参数

此函数没有参数。

返回值

Returns a RecursiveCallbackFilterIterator containing the children.

参见

  • RecursiveCallbackFilterIterator Examples
  • RecursiveCallbackFilterIterator::__construct() - Create a RecursiveCallbackFilterIterator from a RecursiveIterator
  • RecursiveCallbackFilteriterator::hasChildren() - Check whether the inner iterator's current element has children

RecursiveCallbackFilterIterator::__construct
RecursiveCallbackFilterIterator::hasChildren
RecursiveCallbackFilterIterator


Check whether the inner iterator's current element has children

RecursiveCallbackFilterIterator::getChildren
RecursiveDirectoryIterator
RecursiveCallbackFilterIterator
PHP Manual

RecursiveCallbackFilterIterator::hasChildren

(PHP 5 >= 5.4.0, PHP 7)

RecursiveCallbackFilterIterator::hasChildren — Check whether the inner iterator's current element has children

说明

public bool RecursiveCallbackFilterIterator::hasChildren ( void )

Returns TRUE if the current element has children, FALSE otherwise.

参数

此函数没有参数。

返回值

Returns TRUE if the current element has children, FALSE otherwise.

范例

Example #1 RecursiveCallbackFilterIterator::hasChildren() basic usage

<?php

$dir = new RecursiveDirectoryIterator(__DIR__);

// Recursively iterate over XML files
$files = new RecursiveCallbackFilterIterator($dir, function ($current, $key, $iterator) {
    // Allow recursion into directories
    if ($iterator->hasChildren()) {
        return TRUE;
    }
    // Check for XML file
    if (!strcasecmp($current->getExtension(), 'xml')) {
        return TRUE;
    }
    return FALSE;
});

?>

参见

  • RecursiveCallbackFilterIterator Examples
  • RecursiveCallbackFilterIterator::__construct() - Create a RecursiveCallbackFilterIterator from a RecursiveIterator
  • RecursiveCallbackFilteriterator::getChildren() - Return the inner iterator's children contained in a RecursiveCallbackFilterIterator

RecursiveCallbackFilterIterator::getChildren
RecursiveDirectoryIterator
RecursiveCallbackFilterIterator


The RecursiveDirectoryIterator class

(PHP 5, PHP 7)

简介

The RecursiveDirectoryIterator provides an interface for iterating recursively over filesystem directories.

类摘要

RecursiveDirectoryIterator extends FilesystemIterator implements SeekableIterator , RecursiveIterator {
/* 方法 */
public __construct ( string $path [, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO ] )
public mixed getChildren ( void )
public string getSubPath ( void )
public string getSubPathname ( void )
public bool hasChildren ([ bool $allow_links = false ] )
public string key ( void )
public void next ( void )
public void rewind ( void )
/* Inherits */
public FilesystemIterator::__construct ( string $path [, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO | FilesystemIterator::SKIP_DOTS ] )
public mixed FilesystemIterator::current ( void )
public int FilesystemIterator::getFlags ( void )
public string FilesystemIterator::key ( void )
public void FilesystemIterator::next ( void )
public void FilesystemIterator::rewind ( void )
public void FilesystemIterator::setFlags ([ int $flags ] )
}

更新日志

版本 | 说明
5.3.0 | The FilesystemIterator was introduced as the parent class. Previously, the parent was the DirectoryIterator.
5.3.0 | Implements SeekableIterator.
5.2.11, 5.3.1 | Added RecursiveDirectoryIterator::FOLLOW_SYMLINKS

Table of Contents

  • RecursiveDirectoryIterator::__construct — Constructs a RecursiveDirectoryIterator
  • RecursiveDirectoryIterator::getChildren — Returns an iterator for the current entry if it is a directory
  • RecursiveDirectoryIterator::getSubPath — Get sub path
  • RecursiveDirectoryIterator::getSubPathname — Get sub path and name
  • RecursiveDirectoryIterator::hasChildren — Returns whether current entry is a directory and not '.' or '..'
  • RecursiveDirectoryIterator::key — Return path and filename of current dir entry
  • RecursiveDirectoryIterator::next — Move to next entry
  • RecursiveDirectoryIterator::rewind — Rewind dir back to the start
RecursiveCallbackFilterIterator::hasChildren
RecursiveDirectoryIterator::__construct
迭代器


Constructs a RecursiveDirectoryIterator

RecursiveDirectoryIterator
RecursiveDirectoryIterator::getChildren
RecursiveDirectoryIterator
PHP Manual

RecursiveDirectoryIterator::__construct

(PHP 5 >= 5.1.2, PHP 7)

RecursiveDirectoryIterator::__construct — Constructs a RecursiveDirectoryIterator

说明

public RecursiveDirectoryIterator::__construct ( string $path [, int $flags = FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::CURRENT_AS_FILEINFO ] )

Constructs a RecursiveDirectoryIterator() for the provided path.

参数

path

The path of the directory to be iterated over.

flags

Flags may be provided which will affect the behavior of some methods. A list of the flags can found under FilesystemIterator predefined constants. They can also be set later with FilesystemIterator::setFlags().

返回值

Returns the newly created RecursiveDirectoryIterator.

错误／异常

Throws an UnexpectedValueException if the path cannot be found or is not a directory.

范例

Example #1 RecursiveDirectoryIterator example

<?php

$directory = '/tmp';

$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));

$it->rewind();
while($it->valid()) {

    if (!$it->isDot()) {
        echo 'SubPathName: ' . $it->getSubPathName() . "\n";
        echo 'SubPath:     ' . $it->getSubPath() . "\n";
        echo 'Key:         ' . $it->key() . "\n\n";
    }

    $it->next();
}

?>

以上例程的输出类似于：

SubPathName: fruit/apple.xml
SubPath:     fruit
Key:         /tmp/fruit/apple.xml

SubPathName: stuff.xml
SubPath:
Key:         /tmp/stuff.xml

SubPathName: veggies/carrot.xml
SubPath:     veggies
Key:         /tmp/veggies/carrot.xml

参见

  • FilesystemIterator::__construct() - Constructs a new filesystem iterator
  • RecursiveIteratorIterator::__construct() - Construct a RecursiveIteratorIterator
  • FilesystemIterator predefined constants

RecursiveDirectoryIterator
RecursiveDirectoryIterator::getChildren
RecursiveDirectoryIterator


Returns an iterator for the current entry if it is a directory

RecursiveDirectoryIterator::__construct
RecursiveDirectoryIterator::getSubPath
RecursiveDirectoryIterator
PHP Manual

RecursiveDirectoryIterator::getChildren

(PHP 5 >= 5.1.0, PHP 7)

RecursiveDirectoryIterator::getChildren — Returns an iterator for the current entry if it is a directory

说明

public mixed RecursiveDirectoryIterator::getChildren ( void )
Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The filename, file information, or $this depending on the set flags. See the FilesystemIterator constants.

RecursiveDirectoryIterator::__construct
RecursiveDirectoryIterator::getSubPath
RecursiveDirectoryIterator


Get sub path

RecursiveDirectoryIterator::getChildren
RecursiveDirectoryIterator::getSubPathname
RecursiveDirectoryIterator
PHP Manual

RecursiveDirectoryIterator::getSubPath

(PHP 5 >= 5.1.0, PHP 7)

RecursiveDirectoryIterator::getSubPath — Get sub path

说明

public string RecursiveDirectoryIterator::getSubPath ( void )

Gets the sub path.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The sub path (sub directory).

参见

  • RecursiveDirectoryIterator::getSubPathName() - Get sub path and name
  • RecursiveDirectoryIterator::key() - Return path and filename of current dir entry

RecursiveDirectoryIterator::getChildren
RecursiveDirectoryIterator::getSubPathname
RecursiveDirectoryIterator


Get sub path and name

RecursiveDirectoryIterator::getSubPath
RecursiveDirectoryIterator::hasChildren
RecursiveDirectoryIterator
PHP Manual

RecursiveDirectoryIterator::getSubPathname

(PHP 5 >= 5.1.0, PHP 7)

RecursiveDirectoryIterator::getSubPathname — Get sub path and name

说明

public string RecursiveDirectoryIterator::getSubPathname ( void )

Gets the sub path and filename.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The sub path (sub directory) and filename.

参见

  • RecursiveDirectoryIterator::getSubPath() - Get sub path
  • RecursiveDirectoryIterator::key() - Return path and filename of current dir entry

RecursiveDirectoryIterator::getSubPath
RecursiveDirectoryIterator::hasChildren
RecursiveDirectoryIterator


Returns whether current entry is a directory and not '.' or '..'

RecursiveDirectoryIterator::getSubPathname
RecursiveDirectoryIterator::key
RecursiveDirectoryIterator
PHP Manual

RecursiveDirectoryIterator::hasChildren

(PHP 5, PHP 7)

RecursiveDirectoryIterator::hasChildren — Returns whether current entry is a directory and not '.' or '..'

说明

public bool RecursiveDirectoryIterator::hasChildren ([ bool $allow_links = false ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

allow_links

返回值

Returns whether the current entry is a directory, but not '.' or '..'

RecursiveDirectoryIterator::getSubPathname
RecursiveDirectoryIterator::key
RecursiveDirectoryIterator


Return path and filename of current dir entry

RecursiveDirectoryIterator::hasChildren
RecursiveDirectoryIterator::next
RecursiveDirectoryIterator
PHP Manual

RecursiveDirectoryIterator::key

(PHP 5, PHP 7)

RecursiveDirectoryIterator::key — Return path and filename of current dir entry

说明

public string RecursiveDirectoryIterator::key ( void )
Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The path and filename of the current dir entry.

RecursiveDirectoryIterator::hasChildren
RecursiveDirectoryIterator::next
RecursiveDirectoryIterator


Move to next entry

RecursiveDirectoryIterator::key
RecursiveDirectoryIterator::rewind
RecursiveDirectoryIterator
PHP Manual

RecursiveDirectoryIterator::next

(PHP 5, PHP 7)

RecursiveDirectoryIterator::next — Move to next entry

说明

public void RecursiveDirectoryIterator::next ( void )
Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

RecursiveDirectoryIterator::key
RecursiveDirectoryIterator::rewind
RecursiveDirectoryIterator


Rewind dir back to the start

RecursiveDirectoryIterator::next
RecursiveFilterIterator
RecursiveDirectoryIterator
PHP Manual

RecursiveDirectoryIterator::rewind

(PHP 5, PHP 7)

RecursiveDirectoryIterator::rewind — Rewind dir back to the start

说明

public void RecursiveDirectoryIterator::rewind ( void )
Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

RecursiveDirectoryIterator::next
RecursiveFilterIterator
RecursiveDirectoryIterator


The RecursiveFilterIterator class

(PHP 5 >= 5.1.0, PHP 7)

简介

This abstract iterator filters out unwanted values for a RecursiveIterator. This class should be extended to implement custom filters. The RecursiveFilterIterator::accept() must be implemented in the subclass.

类摘要

abstract RecursiveFilterIterator extends FilterIterator implements OuterIterator , RecursiveIterator {
/* 方法 */
public __construct ( RecursiveIterator $iterator )
public RecursiveFilterIterator getChildren ( void )
public bool hasChildren ( void )
/* 继承的方法 */
public abstract bool FilterIterator::accept ( void )
public FilterIterator::__construct ( Iterator $iterator )
public mixed FilterIterator::current ( void )
public Iterator FilterIterator::getInnerIterator ( void )
public mixed FilterIterator::key ( void )
public void FilterIterator::next ( void )
public void FilterIterator::rewind ( void )
public bool FilterIterator::valid ( void )
}

Table of Contents

  • RecursiveFilterIterator::__construct — Create a RecursiveFilterIterator from a RecursiveIterator
  • RecursiveFilterIterator::getChildren — Return the inner iterator's children contained in a RecursiveFilterIterator
  • RecursiveFilterIterator::hasChildren — Check whether the inner iterator's current element has children
RecursiveDirectoryIterator::rewind
RecursiveFilterIterator::__construct
迭代器


Create a RecursiveFilterIterator from a RecursiveIterator

RecursiveFilterIterator
RecursiveFilterIterator::getChildren
RecursiveFilterIterator
PHP Manual

RecursiveFilterIterator::__construct

(PHP 5 >= 5.1.0, PHP 7)

RecursiveFilterIterator::__construct — Create a RecursiveFilterIterator from a RecursiveIterator

说明

public RecursiveFilterIterator::__construct ( RecursiveIterator $iterator )

Create a RecursiveFilterIterator from a RecursiveIterator.

参数

iterator

The RecursiveIterator to be filtered.

返回值

没有返回值。

范例

Example #1 Basic RecursiveFilterIterator() example

<?php
class TestsOnlyFilter extends RecursiveFilterIterator {
    public function accept() {
        // Accept the current item if we can recurse into it
        // or it is a value starting with "test"
        return $this->hasChildren() || (strpos($this->current(), "test") !== FALSE);
    }
}

$array    = array("test1", array("taste2", "test3", "test4"), "test5");
$iterator = new RecursiveArrayIterator($array);
$filter   = new TestsOnlyFilter($iterator);

foreach(new RecursiveIteratorIterator($filter) as $key => $value)
{
    echo $value . "\n";
}
?>

以上例程的输出类似于：

test1
test3
test4
test5

Example #2 RecursiveFilterIterator() example

<?php
class StartsWithFilter extends RecursiveFilterIterator {

    protected $word;

    public function __construct(RecursiveIterator $rit, $word) {
        $this->word = $word;
        parent::__construct($rit);
    }

    public function accept() {
        return $this->hasChildren() OR strpos($this->current(), $this->word) === 0;
    }

    public function getChildren() {
        return new self($this->getInnerIterator()->getChildren(), $this->word);
    }
}

$array    = array("test1", array("taste2", "test3", "test4"), "test5");
$iterator = new RecursiveArrayIterator($array);
$filter   = new StartsWithFilter($iterator, "test");

foreach(new RecursiveIteratorIterator($filter) as $key => $value)
{
    echo $value . "\n";
}
?>

以上例程的输出类似于：

test1
test3
test4
test5

参见

  • RecursiveFilterIterator::getChildren() - Return the inner iterator's children contained in a RecursiveFilterIterator
  • RecursiveFilterIterator::hasChildren() - Check whether the inner iterator's current element has children
  • FilterIterator::accept() - Check whether the current element of the iterator is acceptable

RecursiveFilterIterator
RecursiveFilterIterator::getChildren
RecursiveFilterIterator


Return the inner iterator's children contained in a RecursiveFilterIterator

RecursiveFilterIterator::__construct
RecursiveFilterIterator::hasChildren
RecursiveFilterIterator
PHP Manual

RecursiveFilterIterator::getChildren

(PHP 5 >= 5.1.0, PHP 7)

RecursiveFilterIterator::getChildren — Return the inner iterator's children contained in a RecursiveFilterIterator

说明

public RecursiveFilterIterator RecursiveFilterIterator::getChildren ( void )

Return the inner iterator's children contained in a RecursiveFilterIterator.

参数

此函数没有参数。

返回值

Returns a RecursiveFilterIterator containing the inner iterator's children.

参见

  • RecursiveFilterIterator::hasChildren() - Check whether the inner iterator's current element has children
  • RecursiveIterator::getChildren() - Returns an iterator for the current entry.

RecursiveFilterIterator::__construct
RecursiveFilterIterator::hasChildren
RecursiveFilterIterator


Check whether the inner iterator's current element has children

RecursiveFilterIterator::getChildren
RecursiveIteratorIterator
RecursiveFilterIterator
PHP Manual

RecursiveFilterIterator::hasChildren

(PHP 5 >= 5.1.0, PHP 7)

RecursiveFilterIterator::hasChildren — Check whether the inner iterator's current element has children

说明

public bool RecursiveFilterIterator::hasChildren ( void )

Check whether the inner iterator's current element has children.

参数

此函数没有参数。

返回值

TRUE if the inner iterator has children, otherwise FALSE

参见

  • RecursiveFilterIterator::getChildren() - Return the inner iterator's children contained in a RecursiveFilterIterator
  • RecursiveIterator::hasChildren() - Returns if an iterator can be created fot the current entry.

RecursiveFilterIterator::getChildren
RecursiveIteratorIterator
RecursiveFilterIterator


The RecursiveIteratorIterator class

(PHP 5, PHP 7)

简介

Can be used to iterate through recursive iterators.

类摘要

RecursiveIteratorIterator implements OuterIterator {
/* Constants */
const integer LEAVES_ONLY = 0 ;
const integer SELF_FIRST = 1 ;
const integer CHILD_FIRST = 2 ;
const integer CATCH_GET_CHILD = 16 ;
/* 方法 */
public void beginChildren ( void )
public void beginIteration ( void )
public RecursiveIterator callGetChildren ( void )
public bool callHasChildren ( void )
public __construct ( Traversable $iterator [, int $mode = RecursiveIteratorIterator::LEAVES_ONLY [, int $flags = 0 ]] )
public mixed current ( void )
public void endChildren ( void )
public void endIteration ( void )
public int getDepth ( void )
public iterator getInnerIterator ( void )
public mixed getMaxDepth ( void )
public RecursiveIterator getSubIterator ([ int $level ] )
public mixed key ( void )
public void next ( void )
public void nextElement ( void )
public void rewind ( void )
public void setMaxDepth ([ string $max_depth = -1 ] )
public bool valid ( void )
/* 继承的方法 */
public Iterator OuterIterator::getInnerIterator ( void )
}

预定义常量

RecursiveIteratorIterator::LEAVES_ONLY

RecursiveIteratorIterator::SELF_FIRST

RecursiveIteratorIterator::CHILD_FIRST

RecursiveIteratorIterator::CATCH_GET_CHILD

Table of Contents

  • RecursiveIteratorIterator::beginChildren — Begin children
  • RecursiveIteratorIterator::beginIteration — Begin Iteration
  • RecursiveIteratorIterator::callGetChildren — Get children
  • RecursiveIteratorIterator::callHasChildren — Has children
  • RecursiveIteratorIterator::__construct — Construct a RecursiveIteratorIterator
  • RecursiveIteratorIterator::current — Access the current element value
  • RecursiveIteratorIterator::endChildren — End children
  • RecursiveIteratorIterator::endIteration — End Iteration
  • RecursiveIteratorIterator::getDepth — Get the current depth of the recursive iteration
  • RecursiveIteratorIterator::getInnerIterator — Get inner iterator
  • RecursiveIteratorIterator::getMaxDepth — Get max depth
  • RecursiveIteratorIterator::getSubIterator — The current active sub iterator
  • RecursiveIteratorIterator::key — Access the current key
  • RecursiveIteratorIterator::next — Move forward to the next element
  • RecursiveIteratorIterator::nextElement — Next element
  • RecursiveIteratorIterator::rewind — Rewind the iterator to the first element of the top level inner iterator
  • RecursiveIteratorIterator::setMaxDepth — Set max depth
  • RecursiveIteratorIterator::valid — Check whether the current position is valid
RecursiveFilterIterator::hasChildren
RecursiveIteratorIterator::beginChildren
迭代器


Begin children

RecursiveIteratorIterator
RecursiveIteratorIterator::beginIteration
RecursiveIteratorIterator
PHP Manual

RecursiveIteratorIterator::beginChildren

(PHP 5 >= 5.1.0, PHP 7)

RecursiveIteratorIterator::beginChildren — Begin children

说明

public void RecursiveIteratorIterator::beginChildren ( void )

Is called after calling RecursiveIteratorIterator::getChildren(), and its associated RecursiveIteratorIterator::rewind().

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

RecursiveIteratorIterator
RecursiveIteratorIterator::beginIteration
RecursiveIteratorIterator


Begin Iteration

RecursiveIteratorIterator::beginChildren
RecursiveIteratorIterator::callGetChildren
RecursiveIteratorIterator
PHP Manual

RecursiveIteratorIterator::beginIteration

(PHP 5 >= 5.1.0, PHP 7)

RecursiveIteratorIterator::beginIteration — Begin Iteration

说明

public void RecursiveIteratorIterator::beginIteration ( void )

Called when iteration begins (after the first RecursiveIteratorIterator::rewind() call.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

RecursiveIteratorIterator::beginChildren
RecursiveIteratorIterator::callGetChildren
RecursiveIteratorIterator


Get children

RecursiveIteratorIterator::beginIteration
RecursiveIteratorIterator::callHasChildren
RecursiveIteratorIterator
PHP Manual

RecursiveIteratorIterator::callGetChildren

(PHP 5 >= 5.1.0, PHP 7)

RecursiveIteratorIterator::callGetChildren — Get children

说明

public RecursiveIterator RecursiveIteratorIterator::callGetChildren ( void )

Get children of the current element.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

A RecursiveIterator().

RecursiveIteratorIterator::beginIteration
RecursiveIteratorIterator::callHasChildren
RecursiveIteratorIterator


Has children

RecursiveIteratorIterator::callGetChildren
RecursiveIteratorIterator::__construct
RecursiveIteratorIterator
PHP Manual

RecursiveIteratorIterator::callHasChildren

(PHP 5 >= 5.1.0, PHP 7)

RecursiveIteratorIterator::callHasChildren — Has children

说明

public bool RecursiveIteratorIterator::callHasChildren ( void )

Called for each element to test whether it has children.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

TRUE if the element has children, otherwise FALSE

RecursiveIteratorIterator::callGetChildren
RecursiveIteratorIterator::__construct
RecursiveIteratorIterator


Construct a RecursiveIteratorIterator

RecursiveIteratorIterator::callHasChildren
RecursiveIteratorIterator::current
RecursiveIteratorIterator
PHP Manual

RecursiveIteratorIterator::__construct

(PHP 5 >= 5.1.3, PHP 7)

RecursiveIteratorIterator::__construct — Construct a RecursiveIteratorIterator

说明

public RecursiveIteratorIterator::__construct ( Traversable $iterator [, int $mode = RecursiveIteratorIterator::LEAVES_ONLY [, int $flags = 0 ]] )

Creates a RecursiveIteratorIterator from a RecursiveIterator.

参数

iterator

The iterator being constructed from. Either a RecursiveIterator or IteratorAggregate.

mode

Optional mode. Possible values are

  • RecursiveIteratorIterator::LEAVES_ONLY - The default. Lists only leaves in iteration.
  • RecursiveIteratorIterator::SELF_FIRST - Lists leaves and parents in iteration with parents coming first.
  • RecursiveIteratorIterator::CHILD_FIRST - Lists leaves and parents in iteration with leaves coming first.

flags

Optional flag. Possible values are RecursiveIteratorIterator::CATCH_GET_CHILD which will then ignore exceptions thrown in calls to RecursiveIteratorIterator::getChildren().

返回值

没有返回值。

范例

Example #1 Iterating a RecursiveIteratorIterator

<?php
$array = array(
    array(
        array(
            array(
                'leaf-0-0-0-0',
                'leaf-0-0-0-1'
            ),
            'leaf-0-0-0'
        ),
        array(
            array(
                'leaf-0-1-0-0',
                'leaf-0-1-0-1'
            ),
            'leaf-0-1-0'
        ),
        'leaf-0-0'
    )
);

$iterator = new RecursiveIteratorIterator(
    new RecursiveArrayIterator($array),
    $mode
);
foreach ($iterator as $key => $leaf) {
    echo "$key => $leaf", PHP_EOL;
}
?>

Output with $mode = RecursiveIteratorIterator::LEAVES_ONLY

0 => leaf-0-0-0-0
1 => leaf-0-0-0-1
0 => leaf-0-0-0
0 => leaf-0-1-0-0
1 => leaf-0-1-0-1
0 => leaf-0-1-0
0 => leaf-0-0

Output with $mode = RecursiveIteratorIterator::SELF_FIRST

0 => Array
0 => Array
0 => Array
0 => leaf-0-0-0-0
1 => leaf-0-0-0-1
1 => leaf-0-0-0
1 => Array
0 => Array
0 => leaf-0-1-0-0
1 => leaf-0-1-0-1
1 => leaf-0-1-0
2 => leaf-0-0

Output with $mode = RecursiveIteratorIterator::CHILD_FIRST

0 => leaf-0-0-0-0
1 => leaf-0-0-0-1
0 => Array
1 => leaf-0-0-0
0 => Array
0 => leaf-0-1-0-0
1 => leaf-0-1-0-1
0 => Array
1 => leaf-0-1-0
1 => Array
2 => leaf-0-0
0 => Array

RecursiveIteratorIterator::callHasChildren
RecursiveIteratorIterator::current
RecursiveIteratorIterator


Access the current element value

RecursiveIteratorIterator::__construct
RecursiveIteratorIterator::endChildren
RecursiveIteratorIterator
PHP Manual

RecursiveIteratorIterator::current

(PHP 5, PHP 7)

RecursiveIteratorIterator::current — Access the current element value

说明

public mixed RecursiveIteratorIterator::current ( void )
Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The current elements value.

RecursiveIteratorIterator::__construct
RecursiveIteratorIterator::endChildren
RecursiveIteratorIterator


End children

RecursiveIteratorIterator::current
RecursiveIteratorIterator::endIteration
RecursiveIteratorIterator
PHP Manual

RecursiveIteratorIterator::endChildren

(PHP 5 >= 5.1.0, PHP 7)

RecursiveIteratorIterator::endChildren — End children

说明

public void RecursiveIteratorIterator::endChildren ( void )

Called when end recursing one level.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

RecursiveIteratorIterator::current
RecursiveIteratorIterator::endIteration
RecursiveIteratorIterator


End Iteration

RecursiveIteratorIterator::endChildren
RecursiveIteratorIterator::getDepth
RecursiveIteratorIterator
PHP Manual

RecursiveIteratorIterator::endIteration

(PHP 5 >= 5.1.0, PHP 7)

RecursiveIteratorIterator::endIteration — End Iteration

说明

public void RecursiveIteratorIterator::endIteration ( void )

Called when the iteration ends (when RecursiveIteratorIterator::valid() first returns FALSE.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

RecursiveIteratorIterator::endChildren
RecursiveIteratorIterator::getDepth
RecursiveIteratorIterator


Get the current depth of the recursive iteration

RecursiveIteratorIterator::endIteration
RecursiveIteratorIterator::getInnerIterator
RecursiveIteratorIterator
PHP Manual

RecursiveIteratorIterator::getDepth

(PHP 5, PHP 7)

RecursiveIteratorIterator::getDepth — Get the current depth of the recursive iteration

说明

public int RecursiveIteratorIterator::getDepth ( void )
Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The current depth of the recursive iteration.

RecursiveIteratorIterator::endIteration
RecursiveIteratorIterator::getInnerIterator
RecursiveIteratorIterator


Get inner iterator

RecursiveIteratorIterator::getDepth
RecursiveIteratorIterator::getMaxDepth
RecursiveIteratorIterator
PHP Manual

RecursiveIteratorIterator::getInnerIterator

(PHP 5 >= 5.1.0, PHP 7)

RecursiveIteratorIterator::getInnerIterator — Get inner iterator

说明

public iterator RecursiveIteratorIterator::getInnerIterator ( void )

Gets the current active sub iterator.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The current active sub iterator.

RecursiveIteratorIterator::getDepth
RecursiveIteratorIterator::getMaxDepth
RecursiveIteratorIterator


Get max depth

RecursiveIteratorIterator::getInnerIterator
RecursiveIteratorIterator::getSubIterator
RecursiveIteratorIterator
PHP Manual

RecursiveIteratorIterator::getMaxDepth

(PHP 5 >= 5.1.0, PHP 7)

RecursiveIteratorIterator::getMaxDepth — Get max depth

说明

public mixed RecursiveIteratorIterator::getMaxDepth ( void )

Gets the maximum allowable depth.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The maximum accepted depth, or FALSE if any depth is allowed.

参见

  • RecursiveIteratorIterator::setMaxDepth() - Set max depth

RecursiveIteratorIterator::getInnerIterator
RecursiveIteratorIterator::getSubIterator
RecursiveIteratorIterator


The current active sub iterator

RecursiveIteratorIterator::getMaxDepth
RecursiveIteratorIterator::key
RecursiveIteratorIterator
PHP Manual

RecursiveIteratorIterator::getSubIterator

(PHP 5, PHP 7)

RecursiveIteratorIterator::getSubIterator — The current active sub iterator

说明

public RecursiveIterator RecursiveIteratorIterator::getSubIterator ([ int $level ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

level

返回值

The current active sub iterator.

RecursiveIteratorIterator::getMaxDepth
RecursiveIteratorIterator::key
RecursiveIteratorIterator


Access the current key

RecursiveIteratorIterator::getSubIterator
RecursiveIteratorIterator::next
RecursiveIteratorIterator
PHP Manual

RecursiveIteratorIterator::key

(PHP 5, PHP 7)

RecursiveIteratorIterator::key — Access the current key

说明

public mixed RecursiveIteratorIterator::key ( void )
Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The current key.

RecursiveIteratorIterator::getSubIterator
RecursiveIteratorIterator::next
RecursiveIteratorIterator


Move forward to the next element

RecursiveIteratorIterator::key
RecursiveIteratorIterator::nextElement
RecursiveIteratorIterator
PHP Manual

RecursiveIteratorIterator::next

(PHP 5, PHP 7)

RecursiveIteratorIterator::next — Move forward to the next element

说明

public void RecursiveIteratorIterator::next ( void )
Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

RecursiveIteratorIterator::key
RecursiveIteratorIterator::nextElement
RecursiveIteratorIterator


Next element

RecursiveIteratorIterator::next
RecursiveIteratorIterator::rewind
RecursiveIteratorIterator
PHP Manual

RecursiveIteratorIterator::nextElement

(PHP 5 >= 5.1.0, PHP 7)

RecursiveIteratorIterator::nextElement — Next element

说明

public void RecursiveIteratorIterator::nextElement ( void )

Called when the next element is available.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

RecursiveIteratorIterator::next
RecursiveIteratorIterator::rewind
RecursiveIteratorIterator


Rewind the iterator to the first element of the top level inner iterator

RecursiveIteratorIterator::nextElement
RecursiveIteratorIterator::setMaxDepth
RecursiveIteratorIterator
PHP Manual

RecursiveIteratorIterator::rewind

(PHP 5, PHP 7)

RecursiveIteratorIterator::rewind — Rewind the iterator to the first element of the top level inner iterator

说明

public void RecursiveIteratorIterator::rewind ( void )
Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

RecursiveIteratorIterator::nextElement
RecursiveIteratorIterator::setMaxDepth
RecursiveIteratorIterator


Set max depth

RecursiveIteratorIterator::rewind
RecursiveIteratorIterator::valid
RecursiveIteratorIterator
PHP Manual

RecursiveIteratorIterator::setMaxDepth

(PHP 5 >= 5.1.0, PHP 7)

RecursiveIteratorIterator::setMaxDepth — Set max depth

说明

public void RecursiveIteratorIterator::setMaxDepth ([ string $max_depth = -1 ] )

Set the maximum allowed depth.

Warning

本函数还未编写文档，仅有参数列表。

参数

max_depth

The maximum allowed depth. -1 is used for any depth.

返回值

没有返回值。

错误／异常

Emits an Exception if max_depth is less than -1.

RecursiveIteratorIterator::rewind
RecursiveIteratorIterator::valid
RecursiveIteratorIterator


Check whether the current position is valid

RecursiveIteratorIterator::setMaxDepth
RecursiveRegexIterator
RecursiveIteratorIterator
PHP Manual

RecursiveIteratorIterator::valid

(PHP 5, PHP 7)

RecursiveIteratorIterator::valid — Check whether the current position is valid

说明

public bool RecursiveIteratorIterator::valid ( void )
Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

TRUE if the current position is valid, otherwise FALSE

RecursiveIteratorIterator::setMaxDepth
RecursiveRegexIterator
RecursiveIteratorIterator


The RecursiveRegexIterator class

(PHP 5 >= 5.2.0, PHP 7)

简介

This recursive iterator can filter another recursive iterator via a regular expression.

类摘要

RecursiveRegexIterator extends RegexIterator implements RecursiveIterator {
/* 方法 */
public __construct ( RecursiveIterator $iterator , string $regex [, int $mode = self::MATCH [, int $flags = 0 [, int $preg_flags = 0 ]]] )
public RecursiveRegexIterator getChildren ( void )
public bool hasChildren ( void )
/* 继承的方法 */
public RecursiveIterator RecursiveIterator::getChildren ( void )
public bool RecursiveIterator::hasChildren ( void )
public bool RegexIterator::accept ( void )
public int RegexIterator::getFlags ( void )
public int RegexIterator::getMode ( void )
public int RegexIterator::getPregFlags ( void )
public string RegexIterator::getRegex ( void )
public void RegexIterator::setFlags ( int $flags )
public void RegexIterator::setMode ( int $mode )
public void RegexIterator::setPregFlags ( int $preg_flags )
}

Table of Contents

  • RecursiveRegexIterator::__construct — Creates a new RecursiveRegexIterator.
  • RecursiveRegexIterator::getChildren — Returns an iterator for the current entry.
  • RecursiveRegexIterator::hasChildren — Returns whether an iterator can be obtained for the current entry.
RecursiveIteratorIterator::valid
RecursiveRegexIterator::__construct
迭代器


Creates a new RecursiveRegexIterator.

RecursiveRegexIterator
RecursiveRegexIterator::getChildren
RecursiveRegexIterator
PHP Manual

RecursiveRegexIterator::__construct

(PHP 5 >= 5.2.0, PHP 7)

RecursiveRegexIterator::__construct — Creates a new RecursiveRegexIterator.

说明

public RecursiveRegexIterator::__construct ( RecursiveIterator $iterator , string $regex [, int $mode = self::MATCH [, int $flags = 0 [, int $preg_flags = 0 ]]] )

Creates a new regular expression iterator.

参数

iterator

The recursive iterator to apply this regex filter to.

regex

The regular expression to match.

mode

Operation mode, see RegexIterator::setMode() for a list of modes.

flags

Special flags, see RegexIterator::setFlags() for a list of available flags.

preg_flags

The regular expression flags. These flags depend on the operation mode parameter:

RegexIterator preg_flags
operation mode | available flags
RecursiveRegexIterator::ALL_MATCHES | See preg_match_all().
RecursiveRegexIterator::GET_MATCH | See preg_match().
RecursiveRegexIterator::MATCH | See preg_match().
RecursiveRegexIterator::REPLACE | none.
RecursiveRegexIterator::SPLIT | See preg_split().

范例

Example #1 RecursiveRegexIterator::__construct() example

Creates a new RegexIterator that filters all strings that start with 'test'.

<?php
$rArrayIterator = new RecursiveArrayIterator(array('test1', array('tet3', 'test4', 'test5')));
$rRegexIterator = new RecursiveRegexIterator($rArrayIterator, '/^test/',
    RecursiveRegexIterator::ALL_MATCHES);

foreach ($rRegexIterator as $key1 => $value1) {

    if ($rRegexIterator->hasChildren()) {

        // print all children
        echo "Children: ";
        foreach ($rRegexIterator->getChildren() as $key => $value) {
            echo $value . " ";
        }
        echo "\n";
    } else {
        echo "No children\n";
    }

}
?>

以上例程的输出类似于：

No children
Children: test4 test5

参见

  • preg_match() - 执行一个正则表达式匹配
  • preg_match_all() - 执行一个全局正则表达式匹配
  • preg_replace() - 执行一个正则表达式的搜索和替换
  • preg_split() - 通过一个正则表达式分隔字符串

RecursiveRegexIterator
RecursiveRegexIterator::getChildren
RecursiveRegexIterator


Returns an iterator for the current entry.

RecursiveRegexIterator::__construct
RecursiveRegexIterator::hasChildren
RecursiveRegexIterator
PHP Manual

RecursiveRegexIterator::getChildren

(PHP 5 >= 5.2.0, PHP 7)

RecursiveRegexIterator::getChildren — Returns an iterator for the current entry.

说明

public RecursiveRegexIterator RecursiveRegexIterator::getChildren ( void )

Returns an iterator for the current iterator entry.

参数

此函数没有参数。

返回值

An iterator for the current entry, if it can be iterated over by the inner iterator.

错误／异常

An InvalidArgumentException will be thrown if the current entry does not contain a value that can be iterated over by the inner iterator.

范例

Example #1 RecursiveRegexIterator::getChildren() example

<?php
$rArrayIterator = new RecursiveArrayIterator(array('test1', array('tet3', 'test4', 'test5')));
$rRegexIterator = new RecursiveRegexIterator($rArrayIterator, '/^test/',
    RecursiveRegexIterator::ALL_MATCHES);

foreach ($rRegexIterator as $key1 => $value1) {

    if ($rRegexIterator->hasChildren()) {

        // print all children
        echo "Children: ";
        foreach ($rRegexIterator->getChildren() as $key => $value) {
            echo $value . " ";
        }
        echo "\n";
    } else {
        echo "No children\n";
    }

}
?>

以上例程会输出：

No children
Children: test4 test5

参见

  • RecursiveRegexIterator::hasChildren() - Returns whether an iterator can be obtained for the current entry.

RecursiveRegexIterator::__construct
RecursiveRegexIterator::hasChildren
RecursiveRegexIterator


Returns whether an iterator can be obtained for the current entry.

RecursiveRegexIterator::getChildren
RecursiveTreeIterator
RecursiveRegexIterator
PHP Manual

RecursiveRegexIterator::hasChildren

(PHP 5 >= 5.2.0, PHP 7)

RecursiveRegexIterator::hasChildren — Returns whether an iterator can be obtained for the current entry.

说明

public bool RecursiveRegexIterator::hasChildren ( void )

Returns whether an iterator can be obtained for the current entry. This iterator can be obtained via RecursiveRegexIterator::getChildren().

参数

此函数没有参数。

返回值

Returns TRUE if an iterator can be obtained for the current entry, otherwise returns FALSE.

范例

Example #1 RecursiveRegexIterator::hasChildren() example

<?php
$rArrayIterator = new RecursiveArrayIterator(array('test1', array('tet3', 'test4', 'test5')));
$rRegexIterator = new RecursiveRegexIterator($rArrayIterator, '/^test/',
    RecursiveRegexIterator::ALL_MATCHES);

foreach ($rRegexIterator as $value) {
    var_dump($rRegexIterator->hasChildren());
}
?>

以上例程会输出：

bool(false)
bool(true)

参见

  • RecursiveRegexIterator::getChildren() - Returns an iterator for the current entry.

RecursiveRegexIterator::getChildren
RecursiveTreeIterator
RecursiveRegexIterator


The RecursiveTreeIterator class

(PHP 5 >= 5.3.0, PHP 7)

简介

Allows iterating over a RecursiveIterator to generate an ASCII graphic tree.

类摘要

RecursiveTreeIterator extends RecursiveIteratorIterator implements OuterIterator {
/* 常量 */
const integer BYPASS_CURRENT = 4 ;
const integer BYPASS_KEY = 8 ;
const integer PREFIX_LEFT = 0 ;
const integer PREFIX_MID_HAS_NEXT = 1 ;
const integer PREFIX_MID_LAST = 2 ;
const integer PREFIX_END_HAS_NEXT = 3 ;
const integer PREFIX_END_LAST = 4 ;
const integer PREFIX_RIGHT = 5 ;
/* 方法 */
public void beginChildren ( void )
public RecursiveIterator beginIteration ( void )
public RecursiveIterator callGetChildren ( void )
public bool callHasChildren ( void )
public __construct ( RecursiveIterator|IteratorAggregate $it [, int $flags = RecursiveTreeIterator::BYPASS_KEY [, int $cit_flags = CachingIterator::CATCH_GET_CHILD [, int $mode = RecursiveIteratorIterator::SELF_FIRST ]]] )
public string current ( void )
public void endChildren ( void )
public void endIteration ( void )
public string getEntry ( void )
public void getPostfix ( void )
public string getPrefix ( void )
public string key ( void )
public void next ( void )
public void nextElement ( void )
public void rewind ( void )
public void setPrefixPart ( int $part , string $value )
public bool valid ( void )
/* 继承的方法 */
public void RecursiveIteratorIterator::beginChildren ( void )
public void RecursiveIteratorIterator::beginIteration ( void )
public RecursiveIterator RecursiveIteratorIterator::callGetChildren ( void )
public bool RecursiveIteratorIterator::callHasChildren ( void )
public RecursiveIteratorIterator::__construct ( Traversable $iterator [, int $mode = RecursiveIteratorIterator::LEAVES_ONLY [, int $flags = 0 ]] )
public mixed RecursiveIteratorIterator::current ( void )
public void RecursiveIteratorIterator::endChildren ( void )
public void RecursiveIteratorIterator::endIteration ( void )
public int RecursiveIteratorIterator::getDepth ( void )
public iterator RecursiveIteratorIterator::getInnerIterator ( void )
public mixed RecursiveIteratorIterator::getMaxDepth ( void )
public RecursiveIterator RecursiveIteratorIterator::getSubIterator ([ int $level ] )
public mixed RecursiveIteratorIterator::key ( void )
public void RecursiveIteratorIterator::next ( void )
public void RecursiveIteratorIterator::nextElement ( void )
public void RecursiveIteratorIterator::rewind ( void )
public void RecursiveIteratorIterator::setMaxDepth ([ string $max_depth = -1 ] )
public bool RecursiveIteratorIterator::valid ( void )
}

预定义常量

RecursiveTreeIterator::BYPASS_CURRENT

RecursiveTreeIterator::BYPASS_KEY

RecursiveTreeIterator::PREFIX_LEFT

RecursiveTreeIterator::PREFIX_MID_HAS_NEXT

RecursiveTreeIterator::PREFIX_MID_LAST

RecursiveTreeIterator::PREFIX_END_HAS_NEXT

RecursiveTreeIterator::PREFIX_END_LAST

RecursiveTreeIterator::PREFIX_RIGHT

Table of Contents

  • RecursiveTreeIterator::beginChildren — Begin children
  • RecursiveTreeIterator::beginIteration — Begin iteration
  • RecursiveTreeIterator::callGetChildren — Get children
  • RecursiveTreeIterator::callHasChildren — Has children
  • RecursiveTreeIterator::__construct — Construct a RecursiveTreeIterator
  • RecursiveTreeIterator::current — Get current element
  • RecursiveTreeIterator::endChildren — End children
  • RecursiveTreeIterator::endIteration — End iteration
  • RecursiveTreeIterator::getEntry — Get current entry
  • RecursiveTreeIterator::getPostfix — Get the postfix
  • RecursiveTreeIterator::getPrefix — Get the prefix
  • RecursiveTreeIterator::key — Get the key of the current element
  • RecursiveTreeIterator::next — Move to next element
  • RecursiveTreeIterator::nextElement — Next element
  • RecursiveTreeIterator::rewind — Rewind iterator
  • RecursiveTreeIterator::setPrefixPart — Set a part of the prefix
  • RecursiveTreeIterator::valid — Check validity
RecursiveRegexIterator::hasChildren
RecursiveTreeIterator::beginChildren
迭代器


Begin children

RecursiveTreeIterator
RecursiveTreeIterator::beginIteration
RecursiveTreeIterator
PHP Manual

RecursiveTreeIterator::beginChildren

(PHP 5 >= 5.3.0, PHP 7)

RecursiveTreeIterator::beginChildren — Begin children

说明

public void RecursiveTreeIterator::beginChildren ( void )

Called when recursing one level down.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

RecursiveTreeIterator
RecursiveTreeIterator::beginIteration
RecursiveTreeIterator


Begin iteration

RecursiveTreeIterator::beginChildren
RecursiveTreeIterator::callGetChildren
RecursiveTreeIterator
PHP Manual

RecursiveTreeIterator::beginIteration

(PHP 5 >= 5.3.0, PHP 7)

RecursiveTreeIterator::beginIteration — Begin iteration

说明

public RecursiveIterator RecursiveTreeIterator::beginIteration ( void )

Called when iteration begins (after the first RecursiveTreeIterator::rewind() call).

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

A RecursiveIterator.

RecursiveTreeIterator::beginChildren
RecursiveTreeIterator::callGetChildren
RecursiveTreeIterator


Get children

RecursiveTreeIterator::beginIteration
RecursiveTreeIterator::callHasChildren
RecursiveTreeIterator
PHP Manual

RecursiveTreeIterator::callGetChildren

(PHP 5 >= 5.3.0, PHP 7)

RecursiveTreeIterator::callGetChildren — Get children

说明

public RecursiveIterator RecursiveTreeIterator::callGetChildren ( void )

Gets children of the current element.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

A RecursiveIterator.

RecursiveTreeIterator::beginIteration
RecursiveTreeIterator::callHasChildren
RecursiveTreeIterator


Has children

RecursiveTreeIterator::callGetChildren
RecursiveTreeIterator::__construct
RecursiveTreeIterator
PHP Manual

RecursiveTreeIterator::callHasChildren

(PHP 5 >= 5.3.0, PHP 7)

RecursiveTreeIterator::callHasChildren — Has children

说明

public bool RecursiveTreeIterator::callHasChildren ( void )

Called for each element to test whether it has children.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

TRUE if there are children, otherwise FALSE

RecursiveTreeIterator::callGetChildren
RecursiveTreeIterator::__construct
RecursiveTreeIterator


Construct a RecursiveTreeIterator

RecursiveTreeIterator::callHasChildren
RecursiveTreeIterator::current
RecursiveTreeIterator
PHP Manual

RecursiveTreeIterator::__construct

(PHP 5 >= 5.3.0, PHP 7)

RecursiveTreeIterator::__construct — Construct a RecursiveTreeIterator

说明

 public RecursiveTreeIterator::__construct
  ( RecursiveIterator|IteratorAggregate $it
 [, int $flags = RecursiveTreeIterator::BYPASS_KEY
 [, int $cit_flags = CachingIterator::CATCH_GET_CHILD
 [, int $mode = RecursiveIteratorIterator::SELF_FIRST
]]] )

Constructs a new RecursiveTreeIterator from the supplied recursive iterator.

Warning

本函数还未编写文档，仅有参数列表。

参数

it

The RecursiveIterator or IteratorAggregate to iterate over.

flags

Flags may be provided which will affect the behavior of some methods. A list of the flags can found under RecursiveTreeIterator predefined constants.

caching_it_flags

Flags to affect the behavior of the RecursiveCachingIterator used internally.

mode

Flags to affect the behavior of the RecursiveIteratorIterator used internally.

返回值

没有返回值。

RecursiveTreeIterator::callHasChildren
RecursiveTreeIterator::current
RecursiveTreeIterator


Get current element

RecursiveTreeIterator::__construct
RecursiveTreeIterator::endChildren
RecursiveTreeIterator
PHP Manual

RecursiveTreeIterator::current

(PHP 5 >= 5.3.0, PHP 7)

RecursiveTreeIterator::current — Get current element

说明

public string RecursiveTreeIterator::current ( void )

Gets the current element prefixed and postfixed.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Returns the current element prefixed and postfixed.

RecursiveTreeIterator::__construct
RecursiveTreeIterator::endChildren
RecursiveTreeIterator


End children

RecursiveTreeIterator::current
RecursiveTreeIterator::endIteration
RecursiveTreeIterator
PHP Manual

RecursiveTreeIterator::endChildren

(PHP 5 >= 5.3.0, PHP 7)

RecursiveTreeIterator::endChildren — End children

说明

public void RecursiveTreeIterator::endChildren ( void )

Called when end recursing one level.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

RecursiveTreeIterator::current
RecursiveTreeIterator::endIteration
RecursiveTreeIterator


End iteration

RecursiveTreeIterator::endChildren
RecursiveTreeIterator::getEntry
RecursiveTreeIterator
PHP Manual

RecursiveTreeIterator::endIteration

(PHP 5 >= 5.3.0, PHP 7)

RecursiveTreeIterator::endIteration — End iteration

说明

public void RecursiveTreeIterator::endIteration ( void )

Called when the iteration ends (when RecursiveTreeIterator::valid() first returns FALSE)

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

RecursiveTreeIterator::endChildren
RecursiveTreeIterator::getEntry
RecursiveTreeIterator


Get current entry

RecursiveTreeIterator::endIteration
RecursiveTreeIterator::getPostfix
RecursiveTreeIterator
PHP Manual

RecursiveTreeIterator::getEntry

(PHP 5 >= 5.3.0, PHP 7)

RecursiveTreeIterator::getEntry — Get current entry

说明

public string RecursiveTreeIterator::getEntry ( void )

Gets the part of the tree built for the current element.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Returns the part of the tree built for the current element.

RecursiveTreeIterator::endIteration
RecursiveTreeIterator::getPostfix
RecursiveTreeIterator


Get the postfix

RecursiveTreeIterator::getEntry
RecursiveTreeIterator::getPrefix
RecursiveTreeIterator
PHP Manual

RecursiveTreeIterator::getPostfix

(PHP 5 >= 5.3.0, PHP 7)

RecursiveTreeIterator::getPostfix — Get the postfix

说明

public void RecursiveTreeIterator::getPostfix ( void )

Gets the string to place after the current element.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Returns the string to place after the current element.

RecursiveTreeIterator::getEntry
RecursiveTreeIterator::getPrefix
RecursiveTreeIterator


Get the prefix

RecursiveTreeIterator::getPostfix
RecursiveTreeIterator::key
RecursiveTreeIterator
PHP Manual

RecursiveTreeIterator::getPrefix

(PHP 5 >= 5.3.0, PHP 7)

RecursiveTreeIterator::getPrefix — Get the prefix

说明

public string RecursiveTreeIterator::getPrefix ( void )

Gets the string to place in front of current element

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Returns the string to place in front of current element

RecursiveTreeIterator::getPostfix
RecursiveTreeIterator::key
RecursiveTreeIterator


Get the key of the current element

RecursiveTreeIterator::getPrefix
RecursiveTreeIterator::next
RecursiveTreeIterator
PHP Manual

RecursiveTreeIterator::key

(PHP 5 >= 5.3.0, PHP 7)

RecursiveTreeIterator::key — Get the key of the current element

说明

public string RecursiveTreeIterator::key ( void )

Gets the current key prefixed and postfixed.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Returns the current key prefixed and postfixed.

RecursiveTreeIterator::getPrefix
RecursiveTreeIterator::next
RecursiveTreeIterator


Move to next element

RecursiveTreeIterator::key
RecursiveTreeIterator::nextElement
RecursiveTreeIterator
PHP Manual

RecursiveTreeIterator::next

(PHP 5 >= 5.3.0, PHP 7)

RecursiveTreeIterator::next — Move to next element

说明

public void RecursiveTreeIterator::next ( void )

Moves forward to the next element.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

RecursiveTreeIterator::key
RecursiveTreeIterator::nextElement
RecursiveTreeIterator


Next element

RecursiveTreeIterator::next
RecursiveTreeIterator::rewind
RecursiveTreeIterator
PHP Manual

RecursiveTreeIterator::nextElement

(PHP 5 >= 5.3.0, PHP 7)

RecursiveTreeIterator::nextElement — Next element

说明

public void RecursiveTreeIterator::nextElement ( void )

Called when the next element is available.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

RecursiveTreeIterator::next
RecursiveTreeIterator::rewind
RecursiveTreeIterator


Rewind iterator

RecursiveTreeIterator::nextElement
RecursiveTreeIterator::setPrefixPart
RecursiveTreeIterator
PHP Manual

RecursiveTreeIterator::rewind

(PHP 5 >= 5.3.0, PHP 7)

RecursiveTreeIterator::rewind — Rewind iterator

说明

public void RecursiveTreeIterator::rewind ( void )

Rewinds the iterator to the first element of the top level inner iterator.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

RecursiveTreeIterator::nextElement
RecursiveTreeIterator::setPrefixPart
RecursiveTreeIterator


Set a part of the prefix

RecursiveTreeIterator::rewind
RecursiveTreeIterator::valid
RecursiveTreeIterator
PHP Manual

RecursiveTreeIterator::setPrefixPart

(PHP 5 >= 5.3.0, PHP 7)

RecursiveTreeIterator::setPrefixPart — Set a part of the prefix

说明

public void RecursiveTreeIterator::setPrefixPart ( int $part , string $value )

Sets a part of the prefix used in the graphic tree.

Warning

本函数还未编写文档，仅有参数列表。

参数

part

One of the RecursiveTreeIterator::PREFIX_* constants.

value

The value to assign to the part of the prefix specified in part.

返回值

没有返回值。

RecursiveTreeIterator::rewind
RecursiveTreeIterator::valid
RecursiveTreeIterator


Check validity

RecursiveTreeIterator::setPrefixPart
RegexIterator
RecursiveTreeIterator
PHP Manual

RecursiveTreeIterator::valid

(PHP 5 >= 5.3.0, PHP 7)

RecursiveTreeIterator::valid — Check validity

说明

public bool RecursiveTreeIterator::valid ( void )

Check whether the current position is valid.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

TRUE if the current position is valid, otherwise FALSE

RecursiveTreeIterator::setPrefixPart
RegexIterator
RecursiveTreeIterator


The RegexIterator class

(PHP 5 >= 5.2.0, PHP 7)

简介

This iterator can be used to filter another iterator based on a regular expression.

类摘要

RegexIterator extends FilterIterator {
/* 常量 */
const integer MATCH = 0 ;
const integer GET_MATCH = 1 ;
const integer ALL_MATCHES = 2 ;
const integer SPLIT = 3 ;
const integer REPLACE = 4 ;
const integer USE_KEY = 1 ;
/* 方法 */
public __construct ( Iterator $iterator , string $regex [, int $mode = self::MATCH [, int $flags = 0 [, int $preg_flags = 0 ]]] )
public bool accept ( void )
public int getFlags ( void )
public int getMode ( void )
public int getPregFlags ( void )
public string getRegex ( void )
public void setFlags ( int $flags )
public void setMode ( int $mode )
public void setPregFlags ( int $preg_flags )
/* 继承的方法 */
public abstract bool FilterIterator::accept ( void )
public FilterIterator::__construct ( Iterator $iterator )
public mixed FilterIterator::current ( void )
public Iterator FilterIterator::getInnerIterator ( void )
public mixed FilterIterator::key ( void )
public void FilterIterator::next ( void )
public void FilterIterator::rewind ( void )
public bool FilterIterator::valid ( void )
}

预定义常量

RegexIterator operation modes

RegexIterator::ALL_MATCHES

Return all matches for the current entry (see preg_match_all()).

RegexIterator::GET_MATCH

Return the first match for the current entry (see preg_match()).

RegexIterator::MATCH

Only execute match (filter) for the current entry (see preg_match()).

RegexIterator::REPLACE

Replace the current entry (see preg_replace(); Not fully implemented yet)

RegexIterator::SPLIT

Returns the split values for the current entry (see preg_split()).

RegexIterator Flags

RegexIterator::USE_KEY

Special flag: Match the entry key instead of the entry value.

Table of Contents

  • RegexIterator::accept — Get accept status
  • RegexIterator::__construct — Create a new RegexIterator
  • RegexIterator::getFlags — Get flags
  • RegexIterator::getMode — Returns operation mode.
  • RegexIterator::getPregFlags — Returns the regular expression flags.
  • RegexIterator::getRegex — Returns current regular expression
  • RegexIterator::setFlags — Sets the flags.
  • RegexIterator::setMode — Sets the operation mode.
  • RegexIterator::setPregFlags — Sets the regular expression flags.
RecursiveTreeIterator::valid
RegexIterator::accept
迭代器


Get accept status

RegexIterator
RegexIterator::__construct
RegexIterator
PHP Manual

RegexIterator::accept

(PHP 5 >= 5.2.0, PHP 7)

RegexIterator::accept — Get accept status

说明

public bool RegexIterator::accept ( void )

Matches (string) RegexIterator::current()
(or RegexIterator::key() if the
RegexIterator::USE_KEY flag is set)
against the regular expression.

参数

此函数没有参数。

返回值

TRUE if a match, FALSE otherwise.

范例

Example #1 RegexIterator::accept() example

This example shows that only items matching the regular expression are accepted.

<?php
$names = new ArrayIterator(array('Ann', 'Bob', 'Charlie', 'David'));
$filter = new RegexIterator($names, '/^[B-D]/');
foreach ($filter as $name) {
    echo $name . PHP_EOL;
}
?>

以上例程会输出：

Bob
Charlie
David

参见

  • RegexIterator constants
  • RegexIterator::setFlags() - Sets the flags.

RegexIterator
RegexIterator::__construct
RegexIterator


Create a new RegexIterator

RegexIterator::accept
RegexIterator::getFlags
RegexIterator
PHP Manual

RegexIterator::__construct

(PHP 5 >= 5.2.0, PHP 7)

RegexIterator::__construct — Create a new RegexIterator

说明

public RegexIterator::__construct ( Iterator $iterator , string $regex [, int $mode = self::MATCH [, int $flags = 0 [, int $preg_flags = 0 ]]] )

Create a new RegexIterator which filters an Iterator using a regular expression.

参数

iterator

The iterator to apply this regex filter to.

regex

The regular expression to match.

mode

Operation mode, see RegexIterator::setMode() for a list of modes.

flags

Special flags, see RegexIterator::setFlags() for a list of available flags.

preg_flags

The regular expression flags. These flags depend on the operation mode parameter:

RegexIterator preg_flags
operation mode | available flags
RegexIterator::ALL_MATCHES | See preg_match_all().
RegexIterator::GET_MATCH | See preg_match().
RegexIterator::MATCH | See preg_match().
RegexIterator::REPLACE | none.
RegexIterator::SPLIT | See preg_split().

错误／异常

Throws an InvalidArgumentException if the regex argument is invalid.

范例

Example #1 RegexIterator::__construct() example

Creates a new RegexIterator that filters all strings that start with 'test'.

<?php
$arrayIterator = new ArrayIterator(array('test 1', 'another test', 'test 123'));
$regexIterator = new RegexIterator($arrayIterator, '/^test/');

foreach ($regexIterator as $value) {
    echo $value . "\n";
}
?>

以上例程的输出类似于：

test 1
test 123

参见

  • preg_match() - 执行一个正则表达式匹配
  • preg_match_all() - 执行一个全局正则表达式匹配
  • preg_replace() - 执行一个正则表达式的搜索和替换
  • preg_split() - 通过一个正则表达式分隔字符串

RegexIterator::accept
RegexIterator::getFlags
RegexIterator


Get flags

RegexIterator::__construct
RegexIterator::getMode
RegexIterator
PHP Manual

RegexIterator::getFlags

(PHP 5 >= 5.2.0, PHP 7)

RegexIterator::getFlags — Get flags

说明

public int RegexIterator::getFlags ( void )

Returns the flags, see RegexIterator::setFlags() for a list of available flags.

返回值

Returns the set flags.

范例

Example #1 RegexIterator::getFlags() example

<?php

$test = array ('str1' => 'test 1', 'teststr2' => 'another test', 'str3' => 'test 123');

$arrayIterator = new ArrayIterator($test);
$regexIterator = new RegexIterator($arrayIterator, '/^test/');
$regexIterator->setFlags(RegexIterator::USE_KEY);

if ($regexIterator->getFlags() & RegexIterator::USE_KEY) {
    echo 'Filtering based on the array keys.';
} else {
    echo 'Filtering based on the array values.';
}
?>

以上例程会输出：

Filtering based on the array keys.

参见

  • RegexIterator::setFlags() - Sets the flags.

RegexIterator::__construct
RegexIterator::getMode
RegexIterator


Returns operation mode.

RegexIterator::getFlags
RegexIterator::getPregFlags
RegexIterator
PHP Manual

RegexIterator::getMode

(PHP 5 >= 5.2.0, PHP 7)

RegexIterator::getMode — Returns operation mode.

说明

public int RegexIterator::getMode ( void )

Returns the operation mode, see RegexIterator::setMode() for the list of operation modes.

返回值

Returns the operation mode.

范例

Example #1 RegexIterator::getMode() example

<?php

$test = array ('str1' => 'test 1', 'teststr2' => 'another test', 'str3' => 'test 123');

$arrayIterator = new ArrayIterator($test);
$regexIterator = new RegexIterator($arrayIterator, '/^[a-z]+/', RegexIterator::GET_MATCH);

$mode = $regexIterator->getMode();
if ($mode & RegexIterator::GET_MATCH) {
    echo 'Getting the match for each item.';
} elseif ($mode & RegexIterator::ALL_MATCHES) {
    echo 'Getting all matches for each item.';
} elseif ($mode & RegexIterator::MATCH) {
    echo 'Getting each item if it matches.';
} elseif ($mode & RegexIterator::SPLIT) {
    echo 'Getting split pieces of each.';
}
?>

以上例程会输出：

Getting the match for each item.

参见

  • RegexIterator::setMode() - Sets the operation mode.

RegexIterator::getFlags
RegexIterator::getPregFlags
RegexIterator


Returns the regular expression flags.

RegexIterator::getMode
RegexIterator::getRegex
RegexIterator
PHP Manual

RegexIterator::getPregFlags

(PHP 5 >= 5.2.0, PHP 7)

RegexIterator::getPregFlags — Returns the regular expression flags.

说明

public int RegexIterator::getPregFlags ( void )

Returns the regular expression flags, see RegexIterator::__construct() for the list of flags.

返回值

Returns a bitmask of the regular expression flags.

范例

Example #1 RegexIterator::getPregFlags() example

<?php

$test = array ('str1' => 'test 1', 'teststr2' => 'another test', 'str3' => 'test 123');

$arrayIterator = new ArrayIterator($test);
$regexIterator = new RegexIterator($arrayIterator, '/\s/', RegexIterator::SPLIT);
$regexIterator->setPregFlags(PREG_SPLIT_NO_EMPTY | PREG_SPLIT_OFFSET_CAPTURE);

if ($regexIterator->getPregFlags() & PREG_SPLIT_NO_EMPTY) {
    echo 'Ignoring empty pieces';
} else {
    echo 'Not ignoring empty pieces';
}

?>

以上例程会输出：

Ignoring empty pieces

参见

  • RegexIterator::setPregFlags() - Sets the regular expression flags.

RegexIterator::getMode
RegexIterator::getRegex
RegexIterator


Returns current regular expression

RegexIterator::getPregFlags
RegexIterator::setFlags
RegexIterator
PHP Manual

RegexIterator::getRegex

(PHP 5 >= 5.4.0, PHP 7)

RegexIterator::getRegex — Returns current regular expression

说明

public string RegexIterator::getRegex ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

RegexIterator::getPregFlags
RegexIterator::setFlags
RegexIterator


Sets the flags.

RegexIterator::getRegex
RegexIterator::setMode
RegexIterator
PHP Manual

RegexIterator::setFlags

(PHP 5 >= 5.2.0, PHP 7)

RegexIterator::setFlags — Sets the flags.

说明

public void RegexIterator::setFlags ( int $flags )

Sets the flags.

参数

flags

The flags to set, a bitmask of class constants.

The available flags are listed below. The actual meanings of these flags are described in the predefined constants.

RegexIterator flags
value | constant
1 | RegexIterator::USE_KEY

返回值

没有返回值。

范例

Example #1 RegexIterator::setFlags() example

Creates a new RegexIterator that filters all entries whose key starts with 'test'.

<?php
$test = array ('str1' => 'test 1', 'teststr2' => 'another test', 'str3' => 'test 123');

$arrayIterator = new ArrayIterator($test);
$regexIterator = new RegexIterator($arrayIterator, '/^test/');
$regexIterator->setFlags(RegexIterator::USE_KEY);

foreach ($regexIterator as $key => $value) {
    echo $key . ' => ' . $value . "\n";
}
?>

以上例程会输出：

teststr2 => another test

参见

  • RegexIterator::getFlags() - Get flags

RegexIterator::getRegex
RegexIterator::setMode
RegexIterator


Sets the operation mode.

RegexIterator::setFlags
RegexIterator::setPregFlags
RegexIterator
PHP Manual

RegexIterator::setMode

(PHP 5 >= 5.2.0, PHP 7)

RegexIterator::setMode — Sets the operation mode.

说明

public void RegexIterator::setMode ( int $mode )

Sets the operation mode.

参数

mode

The operation mode.

The available modes are listed below. The actual meanings of these modes are described in the predefined constants.

RegexIterator modes
value | constant
0 | RegexIterator::MATCH
1 | RegexIterator::GET_MATCH
2 | RegexIterator::ALL_MATCHES
3 | RegexIterator::SPLIT
4 | RegexIterator::REPLACE

返回值

没有返回值。

范例

Example #1 RegexIterator::setMode() example

<?php
$test = array ('str1' => 'test 1', 'test str2' => 'another test', 'str3' => 'test 123');

$arrayIterator = new ArrayIterator($test);
// Filter everything that starts with 'test ' followed by one or more numbers.
$regexIterator = new RegexIterator($arrayIterator, '/^test (\d+)/');
// Operation mode: Replace actual value with the matches
$regexIterator->setMode(RegexIterator::GET_MATCH);

foreach ($regexIterator as $key => $value) {
    // print out the matched number(s)
    echo $key . ' => ' . $value[1] . PHP_EOL;
}
?>

以上例程的输出类似于：

str1 => 1
str3 => 123

参见

  • RegexIterator::getMode() - Returns operation mode.

RegexIterator::setFlags
RegexIterator::setPregFlags
RegexIterator


Sets the regular expression flags.

RegexIterator::setMode
接口
RegexIterator
PHP Manual

RegexIterator::setPregFlags

(PHP 5 >= 5.2.0, PHP 7)

RegexIterator::setPregFlags — Sets the regular expression flags.

说明

public void RegexIterator::setPregFlags ( int $preg_flags )

Sets the regular expression flags.

参数

preg_flags

The regular expression flags. See RegexIterator::__construct() for an overview of available flags.

返回值

没有返回值。

范例

Example #1 RegexIterator::setPregFlags() example

Creates a new RegexIterator that filters all entries with where the array key starts with 'test'.

<?php
$test = array ('test 1', 'another test', 'test 123');

$arrayIterator = new ArrayIterator($test);
$regexIterator = new RegexIterator($arrayIterator, '/^test/', RegexIterator::GET_MATCH);

$regexIterator->setPregFlags(PREG_OFFSET_CAPTURE);

foreach ($regexIterator as $key => $value) {
    var_dump($value);
}
?>

以上例程的输出类似于：

array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(4) "test"
    [1]=>
    int(0)
  }
}
array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(4) "test"
    [1]=>
    int(0)
  }
}

参见

  • RegexIterator::getPregFlags() - Returns the regular expression flags.

RegexIterator::setMode
接口
RegexIterator


接口

Table of Contents

  • Countable
  • OuterIterator
  • RecursiveIterator
  • SeekableIterator

SPL 提供一系列接口。

可参考预定义接口。

接口列表

  • Countable
  • OuterIterator
  • RecursiveIterator
  • SeekableIterator
  • SplObserver
  • SplSubject
RegexIterator::setPregFlags
Countable
SPL


The Countable interface

(PHP 5 >= 5.1.0, PHP 7)

简介

类实现 Countable 可被用于 count() 函数.

接口摘要

Countable {
/* 方法 */
abstract public int count ( void )
}

Table of Contents

  • Countable::count — 统计一个对象的元素个数
接口
Countable::count
接口


统计一个对象的元素个数

Countable
OuterIterator
Countable
PHP Manual

Countable::count

(PHP 5 >= 5.1.0, PHP 7)

Countable::count — 统计一个对象的元素个数

说明

abstract public int Countable::count ( void )

当使用 count()函数作用于一个实现了 Countable的对象时这个方法会被执行.

参数

此函数没有参数。

返回值

The custom count as an integer.

Note:

The return value is cast to an integer.

范例

Example #1 Countable::count() example

<?php
class myCounter implements Countable {
    public function count() {
        static $count = 0;
        return ++$count;
    }
}

$counter = new myCounter;

for($i=0; $i<10; ++$i) {
    echo "I have been count()ed " . count($counter) . " times\n";
}
?>

以上例程的输出类似于：

I have been count()ed 1 times
I have been count()ed 2 times
I have been count()ed 3 times
I have been count()ed 4 times
I have been count()ed 5 times
I have been count()ed 6 times
I have been count()ed 7 times
I have been count()ed 8 times
I have been count()ed 9 times
I have been count()ed 10 times

Countable
OuterIterator
Countable


The OuterIterator interface

(PHP 5 >= 5.1.0, PHP 7)

简介

Classes implementing OuterIterator can be used to iterate over iterators.

接口摘要

OuterIterator extends Iterator {
/* 方法 */
public Iterator getInnerIterator ( void )
/* 继承的方法 */
abstract public mixed Iterator::current ( void )
abstract public scalar Iterator::key ( void )
abstract public void Iterator::next ( void )
abstract public void Iterator::rewind ( void )
abstract public boolean Iterator::valid ( void )
}

Table of Contents

  • OuterIterator::getInnerIterator — Returns the inner iterator for the current entry.
Countable::count
OuterIterator::getInnerIterator
接口


Returns the inner iterator for the current entry.

OuterIterator
RecursiveIterator
OuterIterator
PHP Manual

OuterIterator::getInnerIterator

(PHP 5 >= 5.1.0, PHP 7)

OuterIterator::getInnerIterator — Returns the inner iterator for the current entry.

说明

public Iterator OuterIterator::getInnerIterator ( void )

Returns the inner iterator for the current iterator entry.

参数

此函数没有参数。

返回值

The inner iterator for the current entry.

OuterIterator
RecursiveIterator
OuterIterator


The RecursiveIterator interface

(PHP 5 >= 5.1.0, PHP 7)

简介

Classes implementing RecursiveIterator can be used to iterate over iterators recursively.

接口摘要

RecursiveIterator extends Iterator {
/* 方法 */
public RecursiveIterator getChildren ( void )
public bool hasChildren ( void )
/* 继承的方法 */
abstract public mixed Iterator::current ( void )
abstract public scalar Iterator::key ( void )
abstract public void Iterator::next ( void )
abstract public void Iterator::rewind ( void )
abstract public boolean Iterator::valid ( void )
}

Table of Contents

  • RecursiveIterator::getChildren — Returns an iterator for the current entry.
  • RecursiveIterator::hasChildren — Returns if an iterator can be created fot the current entry.
OuterIterator::getInnerIterator
RecursiveIterator::getChildren
接口


Returns an iterator for the current entry.

RecursiveIterator
RecursiveIterator::hasChildren
RecursiveIterator
PHP Manual

RecursiveIterator::getChildren

(PHP 5 >= 5.1.0, PHP 7)

RecursiveIterator::getChildren — Returns an iterator for the current entry.

说明

public RecursiveIterator RecursiveIterator::getChildren ( void )

Returns an iterator for the current iterator entry.

参数

此函数没有参数。

返回值

An iterator for the current entry.

参见

  • RecursiveIterator::hasChildren() - Returns if an iterator can be created fot the current entry.

RecursiveIterator
RecursiveIterator::hasChildren
RecursiveIterator


Returns if an iterator can be created fot the current entry.

RecursiveIterator::getChildren
SeekableIterator
RecursiveIterator
PHP Manual

RecursiveIterator::hasChildren

(PHP 5 >= 5.1.0, PHP 7)

RecursiveIterator::hasChildren — Returns if an iterator can be created fot the current entry.

说明

public bool RecursiveIterator::hasChildren ( void )

Returns if an iterator can be created for the current entry. RecursiveIterator::getChildren().

参数

此函数没有参数。

返回值

Returns TRUE if the current entry can be iterated over, otherwise returns FALSE.

参见

  • RecursiveIterator::getChildren() - Returns an iterator for the current entry.

RecursiveIterator::getChildren
SeekableIterator
RecursiveIterator


The SeekableIterator interface

(PHP 5 >= 5.1.0, PHP 7)

简介

The Seekable iterator.

接口摘要

SeekableIterator extends Iterator {
/* 方法 */
abstract public void seek ( int $position )
/* 继承的方法 */
abstract public mixed Iterator::current ( void )
abstract public scalar Iterator::key ( void )
abstract public void Iterator::next ( void )
abstract public void Iterator::rewind ( void )
abstract public boolean Iterator::valid ( void )
}

Example #1 Basic usage

This example demonstrates creating a custom SeekableIterator, seeking to a position and handling an invalid position.

<?php
class MySeekableIterator implements SeekableIterator {

    private $position;

    private $array = array(
        "first element",
        "second element",
        "third element",
        "fourth element"
    );

    /* Method required for SeekableIterator interface */

    public function seek($position) {
      if (!isset($this->array[$position])) {
          throw new OutOfBoundsException("invalid seek position ($position)");
      }

      $this->position = $position;
    }

    /* Methods required for Iterator interface */

    public function rewind() {
        $this->position = 0;
    }

    public function current() {
        return $this->array[$this->position];
    }

    public function key() {
        return $this->position;
    }

    public function next() {
        ++$this->position;
    }

    public function valid() {
        return isset($this->array[$this->position]);
    }
}

try {

    $it = new MySeekableIterator;
    echo $it->current(), "\n";

    $it->seek(2);
    echo $it->current(), "\n";

    $it->seek(1);
    echo $it->current(), "\n";

    $it->seek(10);

} catch (OutOfBoundsException $e) {
    echo $e->getMessage();
}
?>

以上例程的输出类似于：

first element
third element
second element
invalid seek position (10)

Table of Contents

  • SeekableIterator::seek — Seeks to a position
RecursiveIterator::hasChildren
SeekableIterator::seek
接口


Seeks to a position

SeekableIterator
异常
SeekableIterator
PHP Manual

SeekableIterator::seek

(PHP 5 >= 5.1.0, PHP 7)

SeekableIterator::seek — Seeks to a position

说明

abstract public void SeekableIterator::seek ( int $position )

Seeks to a given position in the iterator.

参数

position

The position to seek to.

返回值

没有返回值。

错误／异常

Implementations should throw an OutOfBoundsException if the position is not seekable.

范例

Example #1 SeekableIterator::seek() example

Seek to the item at position 3 in the iterator (ArrayIterator implements SeekableIterator).

<?php
$array = array("apple", "banana", "cherry", "damson", "elderberry");
$iterator = new ArrayIterator($array);
$iterator->seek(3);
echo $iterator->current();
?>

以上例程的输出类似于：

damson

参见

  • SeekableIterator
  • Iterator

SeekableIterator
异常
SeekableIterator


异常

Table of Contents

  • BadFunctionCallException
  • BadMethodCallException
  • DomainException
  • InvalidArgumentException
  • LengthException
  • LogicException
  • OutOfBoundsException
  • OutOfRangeException
  • OverflowException
  • RangeException
  • RuntimeException
  • UnderflowException
  • UnexpectedValueException

SPL 提供一系列标准异常。

可参考预定义异常。

SPL Exceptions Class Tree

  • LogicException (extends Exception)
    • BadFunctionCallException
      • BadMethodCallException
    • DomainException
    • InvalidArgumentException
    • LengthException
    • OutOfRangeException
  • RuntimeException (extends Exception)
    • OutOfBoundsException
    • OverflowException
    • RangeException
    • UnderflowException
    • UnexpectedValueException
SeekableIterator::seek
BadFunctionCallException
SPL


The BadFunctionCallException class

(PHP 5 >= 5.1.0, PHP 7)

简介

Exception thrown if a callback refers to an undefined function or if some arguments are missing.

类摘要

BadFunctionCallException extends LogicException {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
异常
BadMethodCallException
异常


The BadMethodCallException class

(PHP 5 >= 5.1.0, PHP 7)

简介

当一个回调方法是一个未定义的方法或缺失一些参数时会抛出该异常。

类摘要

BadMethodCallException extends BadFunctionCallException {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
BadFunctionCallException
DomainException
异常


The DomainException class

(PHP 5 >= 5.1.0, PHP 7)

简介

Exception thrown if a value does not adhere to a defined valid data domain.

类摘要

DomainException extends LogicException {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
BadMethodCallException
InvalidArgumentException
异常


The InvalidArgumentException class

(PHP 5 >= 5.1.0, PHP 7)

简介

Exception thrown if an argument is not of the expected type.

类摘要

InvalidArgumentException extends LogicException {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
DomainException
LengthException
异常


The LengthException class

(PHP 5 >= 5.1.0, PHP 7)

简介

Exception thrown if a length is invalid.

类摘要

LengthException extends LogicException {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
InvalidArgumentException
LogicException
异常


The LogicException class

(PHP 5 >= 5.1.0, PHP 7)

简介

Exception that represents error in the program logic. This kind of exception should lead directly to a fix in your code.

类摘要

LogicException extends Exception {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
LengthException
OutOfBoundsException
异常


The OutOfBoundsException class

(PHP 5 >= 5.1.0, PHP 7)

简介

Exception thrown if a value is not a valid key. This represents errors that cannot be detected at compile time.

类摘要

OutOfBoundsException extends RuntimeException {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
LogicException
OutOfRangeException
异常


The OutOfRangeException class

(PHP 5 >= 5.1.0, PHP 7)

简介

Exception thrown when an illegal index was requested. This represents errors that should be detected at compile time.

类摘要

OutOfRangeException extends LogicException {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
OutOfBoundsException
OverflowException
异常


The OverflowException class

(PHP 5 >= 5.1.0, PHP 7)

简介

Exception thrown when adding an element to a full container.

类摘要

OverflowException extends RuntimeException {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
OutOfRangeException
RangeException
异常


The RangeException class

(PHP 5 >= 5.1.0, PHP 7)

简介

Exception thrown to indicate range errors during program execution. Normally this means there was an arithmetic error other than under/overflow. This is the runtime version of DomainException.

类摘要

RangeException extends RuntimeException {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
OverflowException
RuntimeException
异常


The RuntimeException class

(PHP 5 >= 5.1.0, PHP 7)

简介

Exception thrown if an error which can only be found on runtime occurs.

类摘要

RuntimeException extends Exception {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
RangeException
UnderflowException
异常


The UnderflowException class

(PHP 5 >= 5.1.0, PHP 7)

简介

Exception thrown when performing an invalid operation on an empty container, such as removing an element.

类摘要

UnderflowException extends RuntimeException {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
RuntimeException
UnexpectedValueException
异常


The UnexpectedValueException class

(PHP 5 >= 5.1.0, PHP 7)

简介

Exception thrown if a value does not match with a set of values. Typically this happens when a function calls another function and expects the return value to be of a certain type or value not including arithmetic or buffer related errors.

类摘要

UnexpectedValueException extends RuntimeException {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
UnderflowException
SPL 函数
异常


SPL 函数

Table of Contents

  • class_implements — 返回指定的类实现的所有接口。
  • class_parents — 返回指定类的父类。
  • class_uses — Return the traits used by the given class
  • iterator_apply — 为迭代器中每个元素调用一个用户自定义函数
  • iterator_count — 计算迭代器中元素的个数
  • iterator_to_array — 将迭代器中的元素拷贝到数组
  • spl_autoload_call — 尝试调用所有已注册的__autoload()函数来装载请求类
  • spl_autoload_extensions — 注册并返回spl_autoload函数使用的默认文件扩展名。
  • spl_autoload_functions — 返回所有已注册的__autoload()函数。
  • spl_autoload_register — 注册给定的函数作为 __autoload 的实现
  • spl_autoload_unregister — 注销已注册的__autoload()函数
  • spl_autoload — __autoload()函数的默认实现
  • spl_classes — 返回所有可用的SPL类
  • spl_object_hash — 返回指定对象的hash id
UnexpectedValueException
class_implements
SPL


返回指定的类实现的所有接口。

SPL 函数
class_parents
SPL 函数
PHP Manual

class_implements

(PHP 5 >= 5.1.0, PHP 7)

class_implements — 返回指定的类实现的所有接口。

说明

array class_implements ( mixed $class [, bool $autoload ] )

本函数返回一个数组，该数组中包含了指定类class及其父类所实现的所有接口的名称。

参数

class

对象（类实例）或字符串（类名称）。

autoload

是否允许使用__autoload 魔术函数来自动装载该类。默认值为TRUE。

返回值

调用成功则返回一个数组，否则返回FALSE。

更新日志

版本 | 说明
5.1.0 | 增加了允许参数class为字符串的选项。增加了autoload参数。

范例

Example #1 class_implements() example

<?php

interface foo { }
class bar implements foo {}

print_r(class_implements(new bar));

// since PHP 5.1.0 you may also specify the parameter as a string
print_r(class_implements('bar'));

function __autoload($class_name) {
   require_once $class_name . '.php';
}

// use __autoload to load the 'not_loaded' class
print_r(class_implements('not_loaded', true));

?>

以上例程的输出类似于：

Array
(
    [foo] => foo
)

Array
(
    [interface_of_not_loaded] => interface_of_not_loaded
)

参见

  • class_parents() - 返回指定类的父类。
  • get_declared_interfaces() - 返回一个数组包含所有已声明的接口

SPL 函数
class_parents
SPL 函数


返回指定类的父类。

class_implements
class_uses
SPL 函数
PHP Manual

class_parents

(PHP 5 >= 5.1.0, PHP 7)

class_parents — 返回指定类的父类。

说明

array class_parents ( mixed $class [, bool $autoload ] )

本函数返回一个包含了指定类class父类名称的数组。

参数

class

对象（类实例）或字符串（类名称）。

autoload

是否允许使用__autoload 魔术函数来自动装载该类。默认值为TRUE。

返回值

调用成功则返回一个数组，否则返回FALSE。

更新日志

版本 | 说明
5.1.0 | 增加了允许参数class为字符串的选项。增加了autoload参数。

范例

Example #1 class_parents() example

<?php

class foo { }
class bar extends foo {}

print_r(class_parents(new bar));

// since PHP 5.1.0 you may also specify the parameter as a string
print_r(class_parents('bar'));

function __autoload($class_name) {
   require_once $class_name . '.php';
}

// use __autoload to load the 'not_loaded' class
print_r(class_parents('not_loaded', true));
?>

以上例程的输出类似于：

Array
(
    [foo] => foo
)

Array
(
    [parent_of_not_loaded] => parent_of_not_loaded
)

参见

  • class_implements() - 返回指定的类实现的所有接口。

class_implements
class_uses
SPL 函数


Return the traits used by the given class

class_parents
iterator_apply
SPL 函数
PHP Manual

class_uses

(PHP 5 >= 5.4.0, PHP 7)

class_uses — Return the traits used by the given class

说明

array class_uses ( mixed $class [, bool $autoload = true ] )

This function returns an array with the names of the traits that the given class uses. This does however not include any traits used by a parent class.

参数

class

An object (class instance) or a string (class name).

autoload

Whether to allow this function to load the class automatically through the __autoload() magic method.

返回值

An array on success, or FALSE on error.

范例

Example #1 class_uses() example

<?php

trait foo { }
class bar {
  use foo;
}

print_r(class_uses(new bar));

print_r(class_uses('bar'));

function __autoload($class_name) {
   require_once $class_name . '.php';
}

// use __autoload to load the 'not_loaded' class
print_r(class_uses('not_loaded', true));

?>

以上例程的输出类似于：

Array
(
    [foo] => foo
)

Array
(
    [foo] => foo
)

Array
(
    [trait_of_not_loaded] => trait_of_not_loaded
)

参见

  • class_parents() - 返回指定类的父类。
  • get_declared_traits() - 返回所有已定义的 traits 的数组

class_parents
iterator_apply
SPL 函数


为迭代器中每个元素调用一个用户自定义函数

class_uses
iterator_count
SPL 函数
PHP Manual

iterator_apply

(PHP 5 >= 5.1.0, PHP 7)

iterator_apply — 为迭代器中每个元素调用一个用户自定义函数

说明

int iterator_apply ( Traversable $iterator , callable $function [, array $args ] )

循环迭代每个元素时调用某一回调函数。

参数

iterator

需要循环迭代的类对象。

function

迭代到每个元素时的调用的回调函数。

Note: 为了遍历 iterator 这个函数必须返回 TRUE。

args

传递到回调函数的参数。

返回值

返回已迭代的元素个数。

范例

Example #1 iterator_apply() example

<?php
function print_caps(Iterator $iterator) {
    echo strtoupper($iterator->current()) . "\n";
    return TRUE;
}

$it = new ArrayIterator(array("Apples", "Bananas", "Cherries"));
iterator_apply($it, "print_caps", array($it));
?>

以上例程会输出：

APPLES
BANANAS
CHERRIES

参见

  • array_walk() - 使用用户自定义函数对数组中的每个元素做回调处理

class_uses
iterator_count
SPL 函数


计算迭代器中元素的个数

iterator_apply
iterator_to_array
SPL 函数
PHP Manual

iterator_count

(PHP 5 >= 5.1.0, PHP 7)

iterator_count — 计算迭代器中元素的个数

说明

int iterator_count ( Traversable $iterator )

计算迭代器中的元素个数。

参数

iterator

要计数的迭代器。

返回值

迭代器iterator中的元素个数。

范例

Example #1 iterator_count() example

<?php
$iterator = new ArrayIterator(array('recipe'=>'pancakes', 'egg', 'milk', 'flour'));
var_dump(iterator_count($iterator));
?>

以上例程会输出：

int(4)

iterator_apply
iterator_to_array
SPL 函数


将迭代器中的元素拷贝到数组

iterator_count
spl_autoload_call
SPL 函数
PHP Manual

iterator_to_array

(PHP 5 >= 5.1.0, PHP 7)

iterator_to_array — 将迭代器中的元素拷贝到数组

说明

array iterator_to_array ( Traversable $iterator [, bool $use_keys = true ] )

将迭代器中的元素拷贝到数组。

参数

iterator

被拷贝的迭代器。

use_keys

是否使用迭代器元素键作为索引。

返回值

一个数组，包含迭代器中的元素。

更新日志

版本 | 说明
5.2.1 | 添加了 use_keys 参数。

范例

Example #1 iterator_to_array() example

<?php
$iterator = new ArrayIterator(array('recipe'=>'pancakes', 'egg', 'milk', 'flour'));
var_dump(iterator_to_array($iterator, true));
var_dump(iterator_to_array($iterator, false));
?>

以上例程会输出：

array(4) {
  ["recipe"]=>
  string(8) "pancakes"
  [0]=>
  string(3) "egg"
  [1]=>
  string(4) "milk"
  [2]=>
  string(5) "flour"
}
array(4) {
  [0]=>
  string(8) "pancakes"
  [1]=>
  string(3) "egg"
  [2]=>
  string(4) "milk"
  [3]=>
  string(5) "flour"
}

iterator_count
spl_autoload_call
SPL 函数


尝试调用所有已注册的__autoload()函数来装载请求类

iterator_to_array
spl_autoload_extensions
SPL 函数
PHP Manual

spl_autoload_call

(PHP 5 >= 5.1.2, PHP 7)

spl_autoload_call — 尝试调用所有已注册的__autoload()函数来装载请求类

说明

void spl_autoload_call ( string $class_name )

可以直接在程序中手动调用此函数来使用所有已注册的__autoload函数装载类或接口。

参数

class_name

搜索的类名。

返回值

没有返回值。

iterator_to_array
spl_autoload_extensions
SPL 函数


注册并返回spl_autoload函数使用的默认文件扩展名。

spl_autoload_call
spl_autoload_functions
SPL 函数
PHP Manual

spl_autoload_extensions

(PHP 5 >= 5.1.2, PHP 7)

spl_autoload_extensions — 注册并返回spl_autoload函数使用的默认文件扩展名。

说明

string spl_autoload_extensions ([ string $file_extensions ] )

本函数用来修改和检查 __autoload() 函数内置的默认实现函数 spl_autoload() 所使用的扩展名。

参数

file_extensions

当不使用任何参数调用此函数时，它返回当前的文件扩展名的列表，不同的扩展名用逗号分隔。要修改文件扩展名列表，用一个逗号分隔的新的扩展名列表字符串来调用本函数即可。中文注：默认的spl_autoload函数使用的扩展名是".inc,.php"。

返回值

逗号分隔的spl_autoload()函数的默认文件扩展名。

spl_autoload_call
spl_autoload_functions
SPL 函数


返回所有已注册的__autoload()函数。

spl_autoload_extensions
spl_autoload_register
SPL 函数
PHP Manual

spl_autoload_functions

(PHP 5 >= 5.1.2, PHP 7)

spl_autoload_functions — 返回所有已注册的__autoload()函数。

说明

array spl_autoload_functions ( void )

获取所有已注册的 __autoload() 函数。

参数

此函数没有参数。

返回值

包含所有已注册的__autoload函数的数组（array）。如果自动装载函数栈未激活，则返回FALSE。如果没有已注册的函数，则返回一个空数组。

spl_autoload_extensions
spl_autoload_register
SPL 函数


注册给定的函数作为 __autoload 的实现

spl_autoload_functions
spl_autoload_unregister
SPL 函数
PHP Manual

spl_autoload_register

(PHP 5 >= 5.1.2, PHP 7)

spl_autoload_register — 注册给定的函数作为 __autoload 的实现

说明

bool spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] )

将函数注册到SPL __autoload函数队列中。如果该队列中的函数尚未激活，则激活它们。

如果在你的程序中已经实现了__autoload()函数，它必须显式注册到__autoload()队列中。因为 spl_autoload_register()函数会将Zend Engine中的__autoload()函数取代为spl_autoload()或spl_autoload_call()。

如果需要多条 autoload 函数，spl_autoload_register() 满足了此类需求。 它实际上创建了 autoload 函数的队列，按定义时的顺序逐个执行。相比之下， __autoload() 只可以定义一次。

参数

autoload_function

欲注册的自动装载函数。如果没有提供任何参数，则自动注册 autoload 的默认实现函数spl_autoload()。

throw

此参数设置了 autoload_function 无法成功注册时， spl_autoload_register()是否抛出异常。

prepend

如果是 true，spl_autoload_register() 会添加函数到队列之首，而不是队列尾部。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.3.0 | 引入了命名空间的支持。
5.3.0 | 添加了 prepend 参数。

范例

Example #1 spl_autoload_register() 作为 __autoload() 函数的替代

<?php

// function __autoload($class) {
//     include 'classes/' . $class . '.class.php';
// }

function my_autoloader($class) {
    include 'classes/' . $class . '.class.php';
}

spl_autoload_register('my_autoloader');

// 或者，自 PHP 5.3.0 起可以使用一个匿名函数
spl_autoload_register(function ($class) {
    include 'classes/' . $class . '.class.php';
});

?>

Example #2 class 未能加载的 spl_autoload_register() 例子

<?php

namespace Foobar;

class Foo {
    static public function test($name) {
        print '[['. $name .']]';
    }
}

spl_autoload_register(__NAMESPACE__ .'\Foo::test'); // 自 PHP 5.3.0 起

new InexistentClass;

?>

以上例程的输出类似于：

[[Foobar\InexistentClass]]
Fatal error: Class 'Foobar\InexistentClass' not found in ...

参见

  • __autoload() - 尝试加载未定义的类

spl_autoload_functions
spl_autoload_unregister
SPL 函数


注销已注册的__autoload()函数

spl_autoload_register
spl_autoload
SPL 函数
PHP Manual

spl_autoload_unregister

(PHP 5 >= 5.1.2, PHP 7)

spl_autoload_unregister — 注销已注册的__autoload()函数

说明

bool spl_autoload_unregister ( mixed $autoload_function )

从spl提供的自动装载函数栈中注销某一函数。如果该函数栈处于激活状态，并且在给定函数注销后该栈变为空，则该函数栈将会变为无效。

如果该函数注销后使得自动装载函数栈无效，即使存在有__autoload函数它也不会自动激活。

参数

autoload_function

要注销的自动装载函数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

spl_autoload_register
spl_autoload
SPL 函数


__autoload()函数的默认实现

spl_autoload_unregister
spl_classes
SPL 函数
PHP Manual

spl_autoload

(PHP 5 >= 5.1.2, PHP 7)

spl_autoload — __autoload()函数的默认实现

说明

void spl_autoload ( string $class_name [, string $file_extensions ] )

本函数提供了__autoload()的一个默认实现。如果不使用任何参数调用 autoload_register() 函数，则以后在进行 __autoload() 调用时会自动使用此函数。

参数

class_name

file_extensions

在默认情况下，本函数先将类名转换成小写，再在小写的类名后加上 .inc 或 .php 的扩展名作为文件名，然后在所有的包含路径(include paths)中检查是否存在该文件。

返回值

没有返回值。

spl_autoload_unregister
spl_classes
SPL 函数


返回所有可用的SPL类

spl_autoload
spl_object_hash
SPL 函数
PHP Manual

spl_classes

(PHP 5, PHP 7)

spl_classes — 返回所有可用的SPL类

说明

array spl_classes ( void )

本函数返回当前所有可用的 SPL 类的数组。

参数

此函数没有参数。

返回值

Returns an array containing the currently available SPL classes.

范例

Example #1 spl_classes() example

<?php

print_r(spl_classes());

?>

以上例程的输出类似于：

Array
(
    [ArrayObject] => ArrayObject
    [ArrayIterator] => ArrayIterator
    [CachingIterator] => CachingIterator
    [RecursiveCachingIterator] => RecursiveCachingIterator
    [DirectoryIterator] => DirectoryIterator
    [FilterIterator] => FilterIterator
    [LimitIterator] => LimitIterator
    [ParentIterator] => ParentIterator
    [RecursiveDirectoryIterator] => RecursiveDirectoryIterator
    [RecursiveIterator] => RecursiveIterator
    [RecursiveIteratorIterator] => RecursiveIteratorIterator
    [SeekableIterator] => SeekableIterator
    [SimpleXMLIterator] => SimpleXMLIterator
)

spl_autoload
spl_object_hash
SPL 函数


返回指定对象的hash id

spl_classes
文件处理
SPL 函数
PHP Manual

spl_object_hash

(PHP 5 >= 5.2.0, PHP 7)

spl_object_hash — 返回指定对象的hash id

说明

string spl_object_hash ( object $obj )

本函数为指定对象返回一个唯一标识符。这个标识符可用于作为保存对象或区分不同对象的hash key。

参数

object

Any object.

返回值

字符串，对于每个对象它都是唯一的，并且对同一个对象它总是相同。

范例

Example #1 A spl_object_hash() example

<?php
$id = spl_object_hash($object);
$storage[$id] = $object;
?>

注释

Note:

When an object is destroyed, its hash may be reused for other objects.

spl_classes
文件处理
SPL 函数


文件处理

Table of Contents

  • SplFileInfo
  • SplFileObject
  • SplTempFileObject

SPL 提供 一些与文件相关的类。

spl_object_hash
SplFileInfo
SPL


The SplFileInfo class

(PHP 5 >= 5.1.2, PHP 7)

简介

The SplFileInfo class offers a high-level object oriented interface to information for an individual file.

类摘要

SplFileInfo {
/* 方法 */
public __construct ( string $file_name )
public int getATime ( void )
public string getBasename ([ string $suffix ] )
public int getCTime ( void )
public string getExtension ( void )
public SplFileInfo getFileInfo ([ string $class_name ] )
public string getFilename ( void )
public int getGroup ( void )
public int getInode ( void )
public string getLinkTarget ( void )
public int getMTime ( void )
public int getOwner ( void )
public string getPath ( void )
public SplFileInfo getPathInfo ([ string $class_name ] )
public string getPathname ( void )
public int getPerms ( void )
public string getRealPath ( void )
public int getSize ( void )
public string getType ( void )
public bool isDir ( void )
public bool isExecutable ( void )
public bool isFile ( void )
public bool isLink ( void )
public bool isReadable ( void )
public bool isWritable ( void )
public SplFileObject openFile ([ string $open_mode = "r" [, bool $use_include_path = false [, resource $context = NULL ]]] )
public void setFileClass ([ string $class_name = "SplFileObject" ] )
public void setInfoClass ([ string $class_name = "SplFileInfo" ] )
public void __toString ( void )
}

Table of Contents

  • SplFileInfo::__construct — Construct a new SplFileInfo object
  • SplFileInfo::getATime — Gets last access time of the file
  • SplFileInfo::getBasename — Gets the base name of the file
  • SplFileInfo::getCTime — 获取文件 inode 修改时间
  • SplFileInfo::getExtension — Gets the file extension
  • SplFileInfo::getFileInfo — Gets an SplFileInfo object for the file
  • SplFileInfo::getFilename — Gets the filename
  • SplFileInfo::getGroup — Gets the file group
  • SplFileInfo::getInode — Gets the inode for the file
  • SplFileInfo::getLinkTarget — Gets the target of a link
  • SplFileInfo::getMTime — Gets the last modified time
  • SplFileInfo::getOwner — Gets the owner of the file
  • SplFileInfo::getPath — Gets the path without filename
  • SplFileInfo::getPathInfo — Gets an SplFileInfo object for the path
  • SplFileInfo::getPathname — Gets the path to the file
  • SplFileInfo::getPerms — Gets file permissions
  • SplFileInfo::getRealPath — Gets absolute path to file
  • SplFileInfo::getSize — Gets file size
  • SplFileInfo::getType — Gets file type
  • SplFileInfo::isDir — Tells if the file is a directory
  • SplFileInfo::isExecutable — Tells if the file is executable
  • SplFileInfo::isFile — Tells if the object references a regular file
  • SplFileInfo::isLink — Tells if the file is a link
  • SplFileInfo::isReadable — Tells if file is readable
  • SplFileInfo::isWritable — Tells if the entry is writable
  • SplFileInfo::openFile — Gets an SplFileObject object for the file
  • SplFileInfo::setFileClass — Sets the class used with SplFileInfo::openFile
  • SplFileInfo::setInfoClass — Sets the class used with SplFileInfo::getFileInfo and SplFileInfo::getPathInfo
  • SplFileInfo::__toString — Returns the path to the file as a string
文件处理
SplFileInfo::__construct
文件处理


Construct a new SplFileInfo object

SplFileInfo
SplFileInfo::getATime
SplFileInfo
PHP Manual

SplFileInfo::__construct

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::__construct — Construct a new SplFileInfo object

说明

public SplFileInfo::__construct ( string $file_name )

Creates a new SplFileInfo object for the file_name specified. The file does not need to exist, or be readable.

参数

file_name

Path to the file.

范例

Example #1 SplFileInfo::__construct() example

<?php
$info = new SplFileInfo('example.php');
if ($info->isFile()) {
    echo $info->getRealPath();
}
?>

SplFileInfo
SplFileInfo::getATime
SplFileInfo


Gets last access time of the file

SplFileInfo::__construct
SplFileInfo::getBasename
SplFileInfo
PHP Manual

SplFileInfo::getATime

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::getATime — Gets last access time of the file

说明

public int SplFileInfo::getATime ( void )

Gets the last access time for the file.

参数

此函数没有参数。

返回值

Returns the time the file was last accessed.

错误／异常

Throws RunTimeException on error.

参见

  • fileatime() - 取得文件的上次访问时间

SplFileInfo::__construct
SplFileInfo::getBasename
SplFileInfo


Gets the base name of the file

SplFileInfo::getATime
SplFileInfo::getCTime
SplFileInfo
PHP Manual

SplFileInfo::getBasename

(PHP 5 >= 5.2.2, PHP 7)

SplFileInfo::getBasename — Gets the base name of the file

说明

public string SplFileInfo::getBasename ([ string $suffix ] )

This method returns the base name of the file, directory, or link without path info.

参数

suffix

Optional suffix to omit from the base name returned.

返回值

Returns the base name without path information.

范例

Example #1 SplFileInfo::getBasename() example

<?php
$info = new SplFileInfo('file.txt');
var_dump($info->getBasename());

$info = new SplFileInfo('/path/to/file.txt');
var_dump($info->getBasename());

$info = new SplFileInfo('/path/to/file.txt');
var_dump($info->getBasename('.txt'));
?>

以上例程的输出类似于：

string(8) "file.txt"
string(8) "file.txt"
string(4) "file"

参见

  • SplFileInfo::getFilename() - Gets the filename

SplFileInfo::getATime
SplFileInfo::getCTime
SplFileInfo


获取文件 inode 修改时间

SplFileInfo::getBasename
SplFileInfo::getExtension
SplFileInfo
PHP Manual

SplFileInfo::getCTime

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::getCTime — 获取文件 inode 修改时间

说明

public int SplFileInfo::getCTime ( void )

返回此文件 inode 的修改时间，返回的时间是个 Unix 时间戳。

参数

此函数没有参数。

返回值

返回inode最后一次变更的时间戳。

错误／异常

错误时抛出 RunTimeException。

范例

Example #1 SplFileInfo::getCTime() 例子

<?php
$info = new SplFileInfo(__FILE__);
echo 'Last changed at ' . date('g:i a', $info->getCTime());
?>

以上例程的输出类似于：

Last changed at 1:49 pm

参见

  • filectime() - 取得文件的 inode 修改时间

SplFileInfo::getBasename
SplFileInfo::getExtension
SplFileInfo


Gets the file extension

SplFileInfo::getCTime
SplFileInfo::getFileInfo
SplFileInfo
PHP Manual

SplFileInfo::getExtension

(PHP 5 >= 5.3.6, PHP 7)

SplFileInfo::getExtension — Gets the file extension

说明

public string SplFileInfo::getExtension ( void )

Retrieves the file extension.

参数

此函数没有参数。

返回值

Returns a string containing the file extension, or an empty string if the file has no extension.

范例

Example #1 SplFileInfo::getExtension() example

<?php

$info = new SplFileInfo('foo.txt');
var_dump($info->getExtension());

$info = new SplFileInfo('photo.jpg');
var_dump($info->getExtension());

$info = new SplFileInfo('something.tar.gz');
var_dump($info->getExtension());

?>

以上例程会输出：

string(3) "txt"
string(3) "jpg"
string(2) "gz"

注释

Note:

This method is only available as of PHP 5.3.6. Another way of getting the extension is to use the pathinfo() function.

<?php
$extension = pathinfo($info->getFilename(), PATHINFO_EXTENSION);
?>

参见

  • SplFileInfo::getFilename() - Gets the filename
  • SplFileInfo::getBasename() - Gets the base name of the file
  • pathinfo() - 返回文件路径的信息
SplFileInfo::getCTime
SplFileInfo::getFileInfo
SplFileInfo


Gets an SplFileInfo object for the file

SplFileInfo::getExtension
SplFileInfo::getFilename
SplFileInfo
PHP Manual

SplFileInfo::getFileInfo

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::getFileInfo — Gets an SplFileInfo object for the file

说明

public SplFileInfo SplFileInfo::getFileInfo ([ string $class_name ] )

This method gets an SplFileInfo object for the referenced file.

参数

class_name

Name of an SplFileInfo derived class to use.

返回值

An SplFileInfo object created for the file.

参见

  • SplFileInfo::setInfoClass() - Sets the class used with SplFileInfo::getFileInfo and SplFileInfo::getPathInfo

SplFileInfo::getExtension
SplFileInfo::getFilename
SplFileInfo


Gets the filename

SplFileInfo::getFileInfo
SplFileInfo::getGroup
SplFileInfo
PHP Manual

SplFileInfo::getFilename

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::getFilename — Gets the filename

说明

public string SplFileInfo::getFilename ( void )

Gets the filename without any path information.

参数

此函数没有参数。

返回值

The filename.

范例

Example #1 SplFileInfo::getFilename() example

<?php
$info = new SplFileInfo('foo.txt');
var_dump($info->getFilename());

$info = new SplFileInfo('/path/to/foo.txt');
var_dump($info->getFilename());

$info = new SplFileInfo('http://www.php.net/');
var_dump($info->getFilename());

$info = new SplFileInfo('http://www.php.net/svn.php');
var_dump($info->getFilename());
?>

以上例程的输出类似于：

string(7) "foo.txt"
string(7) "foo.txt"
string(0) ""
string(7) "svn.php"

参见

  • SplFileInfo::getBasename() - Gets the base name of the file

SplFileInfo::getFileInfo
SplFileInfo::getGroup
SplFileInfo


Gets the file group

SplFileInfo::getFilename
SplFileInfo::getInode
SplFileInfo
PHP Manual

SplFileInfo::getGroup

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::getGroup — Gets the file group

说明

public int SplFileInfo::getGroup ( void )

Gets the file group. The group ID is returned in numerical format.

参数

此函数没有参数。

返回值

The group id in numerical format.

错误／异常

Throws RuntimeException on error.

范例

Example #1 SplFileInfo::getGroup() example

<?php
$info = new SplFileInfo(__FILE__);
print_r(posix_getgrgid($info->getGroup()));
?>

以上例程的输出类似于：

参见

  • posix_getgrgid() - Return info about a group by group id

SplFileInfo::getFilename
SplFileInfo::getInode
SplFileInfo


Gets the inode for the file

SplFileInfo::getGroup
SplFileInfo::getLinkTarget
SplFileInfo
PHP Manual

SplFileInfo::getInode

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::getInode — Gets the inode for the file

说明

public int SplFileInfo::getInode ( void )

Gets the inode number for the filesystem object.

参数

此函数没有参数。

返回值

Returns the inode number for the filesystem object.

错误／异常

Throws RuntimeException on error.

参见

  • fileinode() - 取得文件的 inode

SplFileInfo::getGroup
SplFileInfo::getLinkTarget
SplFileInfo


Gets the target of a link

SplFileInfo::getInode
SplFileInfo::getMTime
SplFileInfo
PHP Manual

SplFileInfo::getLinkTarget

(PHP 5 >= 5.2.2, PHP 7)

SplFileInfo::getLinkTarget — Gets the target of a link

说明

public string SplFileInfo::getLinkTarget ( void )

Gets the target of a filesystem link.

Note:

The target may not be the real path on the filesystem. Use SplFileInfo::getRealPath() to determine the true path on the filesystem.

参数

此函数没有参数。

返回值

Returns the target of the filesystem link.

错误／异常

Throws RuntimeException on error.

范例

Example #1 SplFileInfo::getLinkTarget() example

<?php
$info = new SplFileInfo('/Users/bbieber/workspace');
if ($info->isLink()) {
    var_dump($info->getLinkTarget());
    var_dump($info->getRealPath());
}
?>

以上例程的输出类似于：

string(19) "Documents/workspace"
string(34) "/Users/bbieber/Documents/workspace"

参见

  • SplFileInfo::isLink() - Tells if the file is a link
  • SplFileInfo::getRealPath() - Gets absolute path to file

SplFileInfo::getInode
SplFileInfo::getMTime
SplFileInfo


Gets the last modified time

SplFileInfo::getLinkTarget
SplFileInfo::getOwner
SplFileInfo
PHP Manual

SplFileInfo::getMTime

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::getMTime — Gets the last modified time

说明

public int SplFileInfo::getMTime ( void )

Returns the time when the contents of the file were changed. The time returned is a Unix timestamp.

参数

此函数没有参数。

返回值

Returns the last modified time for the file, in a Unix timestamp.

参见

  • filemtime() - 取得文件修改时间

SplFileInfo::getLinkTarget
SplFileInfo::getOwner
SplFileInfo


Gets the owner of the file

SplFileInfo::getMTime
SplFileInfo::getPath
SplFileInfo
PHP Manual

SplFileInfo::getOwner

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::getOwner — Gets the owner of the file

说明

public int SplFileInfo::getOwner ( void )

Gets the file owner. The owner ID is returned in numerical format.

参数

此函数没有参数。

返回值

The owner id in numerical format.

错误／异常

Throws RuntimeException on error.

范例

Example #1 SplFileInfo::getOwner() example

<?php
$info = new SplFileInfo('file.txt');
print_r(posix_getpwuid($info->getOwner()));
?>

参见

  • posix_getpwuid() - Return info about a user by user id
  • SplFileInfo::getGroup() - Gets the file group

SplFileInfo::getMTime
SplFileInfo::getPath
SplFileInfo


Gets the path without filename

SplFileInfo::getOwner
SplFileInfo::getPathInfo
SplFileInfo
PHP Manual

SplFileInfo::getPath

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::getPath — Gets the path without filename

说明

public string SplFileInfo::getPath ( void )

Returns the path to the file, omitting the filename and any trailing slash.

参数

此函数没有参数。

返回值

Returns the path to the file.

范例

Example #1 SplFileInfo::getPath() example

<?php
$info = new SplFileInfo('/usr/bin/php');
var_dump($info->getPath());

$info = new SplFileInfo('/usr/');
var_dump($info->getPath());?>

以上例程的输出类似于：

string(8) "/usr/bin"
string(4) "/usr"

参见

  • SplFileInfo::getRealPath() - Gets absolute path to file
  • SplFileInfo::getFilename() - Gets the filename
  • SplFileInfo::getPathInfo() - Gets an SplFileInfo object for the path

SplFileInfo::getOwner
SplFileInfo::getPathInfo
SplFileInfo


Gets an SplFileInfo object for the path

SplFileInfo::getPath
SplFileInfo::getPathname
SplFileInfo
PHP Manual

SplFileInfo::getPathInfo

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::getPathInfo — Gets an SplFileInfo object for the path

说明

public SplFileInfo SplFileInfo::getPathInfo ([ string $class_name ] )

Gets an SplFileInfo object for the parent of the current file.

参数

class_name

Name of an SplFileInfo derived class to use.

返回值

Returns an SplFileInfo object for the parent path of the file.

范例

Example #1 SplFileInfo::getPathInfo() example

<?php
$info = new SplFileInfo('/usr/bin/php');
$parent_info = $info->getPathInfo();
var_dump($parent_info->getRealPath());
?>

以上例程的输出类似于：

string(8) "/usr/bin"

参见

  • SplFileInfo::setInfoClass() - Sets the class used with SplFileInfo::getFileInfo and SplFileInfo::getPathInfo

SplFileInfo::getPath
SplFileInfo::getPathname
SplFileInfo


Gets the path to the file

SplFileInfo::getPathInfo
SplFileInfo::getPerms
SplFileInfo
PHP Manual

SplFileInfo::getPathname

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::getPathname — Gets the path to the file

说明

public string SplFileInfo::getPathname ( void )

Returns the path to the file.

参数

此函数没有参数。

返回值

The path to the file.

范例

Example #1 SplFileInfo::getPathname() example

<?php
$info = new SplFileInfo('/usr/bin/php');
var_dump($info->getPathname());
?>

以上例程的输出类似于：

string(12) "/usr/bin/php"

参见

  • SplFileInfo::getRealPath() - Gets absolute path to file

SplFileInfo::getPathInfo
SplFileInfo::getPerms
SplFileInfo


Gets file permissions

SplFileInfo::getPathname
SplFileInfo::getRealPath
SplFileInfo
PHP Manual

SplFileInfo::getPerms

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::getPerms — Gets file permissions

说明

public int SplFileInfo::getPerms ( void )

Gets the file permissions for the file.

参数

此函数没有参数。

返回值

Returns the file permissions.

范例

Example #1 SplFileInfo::getPerms() example

<?php
$info = new SplFileInfo('/tmp');
echo substr(sprintf('%o', $info->getPerms()), -4);

$info = new SplFileInfo(__FILE__);
echo substr(sprintf('%o', $info->getPerms()), -4);
?>

以上例程的输出类似于：

1777
0644

SplFileInfo::getPathname
SplFileInfo::getRealPath
SplFileInfo


Gets absolute path to file

SplFileInfo::getPerms
SplFileInfo::getSize
SplFileInfo
PHP Manual

SplFileInfo::getRealPath

(PHP 5 >= 5.2.2, PHP 7)

SplFileInfo::getRealPath — Gets absolute path to file

说明

public string SplFileInfo::getRealPath ( void )

This method expands all symbolic links, resolves relative references and returns the real path to the file.

参数

此函数没有参数。

返回值

Returns the path to the file, or FALSE if the file does not exist.

范例

Example #1 SplFileInfo::getRealPath() example

<?php
$info = new SplFileInfo('/..//./../../'.__FILE__);
var_dump($info->getRealPath());

$info = new SplFileInfo('/tmp');
var_dump($info->getRealPath());

$info = new SplFileInfo('/I/Do/Not/Exist');
var_dump($info->getRealPath());

$info = new SplFileInfo("");
var_dump($info->getRealPath());
?>

以上例程的输出类似于：

string(28) "/private/tmp/phptempfile.php"
string(12) "/private/tmp"
bool(false)
string(12) "/private/tmp"

参见

  • SplFileInfo::isLink() - Tells if the file is a link
  • realpath() - 返回规范化的绝对路径名

SplFileInfo::getPerms
SplFileInfo::getSize
SplFileInfo


Gets file size

SplFileInfo::getRealPath
SplFileInfo::getType
SplFileInfo
PHP Manual

SplFileInfo::getSize

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::getSize — Gets file size

说明

public int SplFileInfo::getSize ( void )

Returns the filesize in bytes for the file referenced.

参数

此函数没有参数。

返回值

The filesize in bytes.

错误／异常

A RuntimeException will be thrown if the file does not exist or an error occurs.

参见

  • filesize() - 取得文件大小

SplFileInfo::getRealPath
SplFileInfo::getType
SplFileInfo


Gets file type

SplFileInfo::getSize
SplFileInfo::isDir
SplFileInfo
PHP Manual

SplFileInfo::getType

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::getType — Gets file type

说明

public string SplFileInfo::getType ( void )

Returns the type of the file referenced.

参数

此函数没有参数。

返回值

A string representing the type of the entry. May be one of file, link, or dir

错误／异常

Throws a RuntimeException on error.

范例

Example #1 SplFileInfo::getType() example

<?php

$info = new SplFileInfo(__FILE__);
echo $info->getType().PHP_EOL;

$info = new SplFileInfo(dirname(__FILE__));
echo $info->getType();

?>

以上例程的输出类似于：

file
dir

SplFileInfo::getSize
SplFileInfo::isDir
SplFileInfo


Tells if the file is a directory

SplFileInfo::getType
SplFileInfo::isExecutable
SplFileInfo
PHP Manual

SplFileInfo::isDir

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::isDir — Tells if the file is a directory

说明

public bool SplFileInfo::isDir ( void )

This method can be used to determine if the file is a directory.

参数

此函数没有参数。

返回值

Returns TRUE if a directory, FALSE otherwise.

范例

Example #1 SplFileInfo::isDir() example

<?php
$d = new SplFileInfo(dirname(__FILE__));
var_dump($d->isDir());

$d = new SplFileInfo(__FILE__);
var_dump($d->isDir());
?>

以上例程的输出类似于：

bool(true)
bool(false)

SplFileInfo::getType
SplFileInfo::isExecutable
SplFileInfo


Tells if the file is executable

SplFileInfo::isDir
SplFileInfo::isFile
SplFileInfo
PHP Manual

SplFileInfo::isExecutable

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::isExecutable — Tells if the file is executable

说明

public bool SplFileInfo::isExecutable ( void )

Checks if the file is executable.

参数

此函数没有参数。

返回值

Returns TRUE if executable, FALSE otherwise.

范例

Example #1 SplFileInfo::isExecutable() example

<?php
$info = new SplFileInfo('/usr/bin/php');
var_dump($info->isExecutable());

$info = new SplFileInfo('/usr/bin');
var_dump($info->isExecutable());

$info = new SplFileInfo('foo');
var_dump($info->isExecutable());
?>

以上例程的输出类似于：

bool(true)
bool(true)
bool(false)

SplFileInfo::isDir
SplFileInfo::isFile
SplFileInfo


Tells if the object references a regular file

SplFileInfo::isExecutable
SplFileInfo::isLink
SplFileInfo
PHP Manual

SplFileInfo::isFile

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::isFile — Tells if the object references a regular file

说明

public bool SplFileInfo::isFile ( void )

Checks if the file referenced by this SplFileInfo object exists and is a regular file.

参数

此函数没有参数。

返回值

Returns TRUE if the file exists and is a regular file (not a link), FALSE otherwise.

范例

Example #1 SplFileInfo::isFile() example

<?php
$info = new SplFileInfo(__FILE__);
var_dump($info->isFile());

$info = new SplFileInfo(dirname(__FILE__));
var_dump($info->isFile());
?>

以上例程的输出类似于：

bool(true)
bool(false)

SplFileInfo::isExecutable
SplFileInfo::isLink
SplFileInfo


Tells if the file is a link

SplFileInfo::isFile
SplFileInfo::isReadable
SplFileInfo
PHP Manual

SplFileInfo::isLink

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::isLink — Tells if the file is a link

说明

public bool SplFileInfo::isLink ( void )

Use this method to check if the file referenced by the SplFileInfo object is a link.

参数

此函数没有参数。

返回值

Returns TRUE if the file is a link, FALSE otherwise.

范例

Example #1 SplFileInfo::isLink() example

<?php
$info = new SplFileInfo('/path/to/symlink');
if ($info->isLink()) {
    echo 'The real path is '.$info->getRealPath();
}
?>

参见

  • SplFileInfo::getRealPath() - Gets absolute path to file

SplFileInfo::isFile
SplFileInfo::isReadable
SplFileInfo


Tells if file is readable

SplFileInfo::isLink
SplFileInfo::isWritable
SplFileInfo
PHP Manual

SplFileInfo::isReadable

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::isReadable — Tells if file is readable

说明

public bool SplFileInfo::isReadable ( void )

Check if the file is readable.

参数

此函数没有参数。

返回值

Returns TRUE if readable, FALSE otherwise.

范例

Example #1 SplFileInfo::isReadable() example

<?php
$info = new SplFileInfo(__FILE__);
var_dump($info->isReadable());

$info = new SplFileInfo('foo');
var_dump($info->isReadable());
?>

以上例程的输出类似于：

bool(true)
bool(false)

SplFileInfo::isLink
SplFileInfo::isWritable
SplFileInfo


Tells if the entry is writable

SplFileInfo::isReadable
SplFileInfo::openFile
SplFileInfo
PHP Manual

SplFileInfo::isWritable

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::isWritable — Tells if the entry is writable

说明

public bool SplFileInfo::isWritable ( void )

Checks if the current entry is writable.

参数

此函数没有参数。

返回值

Returns TRUE if writable, FALSE otherwise;

SplFileInfo::isReadable
SplFileInfo::openFile
SplFileInfo


Gets an SplFileObject object for the file

SplFileInfo::isWritable
SplFileInfo::setFileClass
SplFileInfo
PHP Manual

SplFileInfo::openFile

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::openFile — Gets an SplFileObject object for the file

说明

public SplFileObject SplFileInfo::openFile ([ string $open_mode = "r" [, bool $use_include_path = false [, resource $context = NULL ]]] )

Creates an SplFileObject object of the file. This is useful because SplFileObject contains additional methods for manipulating the file whereas SplFileInfo is only useful for gaining information, like whether the file is writable.

参数

open_mode

The mode for opening the file. See the fopen() documentation for descriptions of possible modes. The default is read only.

use_include_path

值 设为 TRUE 时, 也会在 include_path搜索文件名。

context

上下文（context）的说明请参考手册中的 上下文（context）章节.

返回值

The opened file as an SplFileObject object.

错误／异常

A RuntimeException if the file cannot be opened (e.g. insufficient access rights).

范例

Example #1 SplFileInfo::openFile() example

<?php
$fileinfo = new SplFileInfo('/tmp/foo.txt');

if ($fileinfo->isWritable()) {

    $fileobj = $fileinfo->openFile('a');

    $fileobj->fwrite("appended this sample text");
}
?>

参见

  • SplFileObject
  • stream_context_create() - 创建资源流上下文
  • fopen() - 打开文件或者 URL

SplFileInfo::isWritable
SplFileInfo::setFileClass
SplFileInfo


Sets the class used with SplFileInfo::openFile

SplFileInfo::openFile
SplFileInfo::setInfoClass
SplFileInfo
PHP Manual

SplFileInfo::setFileClass

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::setFileClass — Sets the class used with SplFileInfo::openFile()

说明

public void SplFileInfo::setFileClass ([ string $class_name = "SplFileObject" ] )

Use this method to set a custom class which will be used when SplFileInfo::openFile() is called. The class name passed to this method must be SplFileObject or a class derived from SplFileObject.

参数

class_name

The class name to use when SplFileInfo::openFile() is called.

返回值

没有返回值。

范例

Example #1 SplFileInfo::setFileClass() example

<?php
// Create a class extending SplFileObject
class MyFoo extends SplFileObject {}

$info = new SplFileInfo(__FILE__);
// Set the class to use
$info->setFileClass('MyFoo');
var_dump($info->openFile());
?>

以上例程的输出类似于：

object(MyFoo)#2 (0) { }

参见

  • SplFileInfo::openFile() - Gets an SplFileObject object for the file

SplFileInfo::openFile
SplFileInfo::setInfoClass
SplFileInfo


Sets the class used with SplFileInfo::getFileInfo and SplFileInfo::getPathInfo

SplFileInfo::setFileClass
SplFileInfo::__toString
SplFileInfo
PHP Manual

SplFileInfo::setInfoClass

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::setInfoClass — Sets the class used with SplFileInfo::getFileInfo() and SplFileInfo::getPathInfo()

说明

public void SplFileInfo::setInfoClass ([ string $class_name = "SplFileInfo" ] )

Use this method to set a custom class which will be used when SplFileInfo::getFileInfo() and SplFileInfo::getPathInfo() are called. The class name passed to this method must be SplFileInfo or a class derived from SplFileInfo.

参数

class_name

The class name to use when SplFileInfo::getFileInfo() and SplFileInfo::getPathInfo() are called.

返回值

没有返回值。

范例

Example #1 SplFileInfo::setFileClass() example

<?php
// Define a class which extends SplFileInfo
class MyFoo extends SplFileInfo {}

$info = new SplFileInfo('foo');
// Set the class name to use
$info->setInfoClass('MyFoo');
var_dump($info->getFileInfo());
?>

以上例程的输出类似于：

object(MyFoo)#2 (0) { }

参见

  • SplFileInfo::getFileInfo() - Gets an SplFileInfo object for the file

SplFileInfo::setFileClass
SplFileInfo::__toString
SplFileInfo


Returns the path to the file as a string

SplFileInfo::setInfoClass
SplFileObject
SplFileInfo
PHP Manual

SplFileInfo::__toString

(PHP 5 >= 5.1.2, PHP 7)

SplFileInfo::__toString — Returns the path to the file as a string

说明

public void SplFileInfo::__toString ( void )

This method will return the file name of the referenced file.

参数

此函数没有参数。

返回值

Returns the path to the file.

范例

Example #1 SplFileInfo::__toString() example

<?php
$info = new SplFileInfo('foo');
var_dump($info->__toString());
echo $info.PHP_EOL;

$info = new SplFileInfo('/usr/bin/php');
var_dump($info->__toString());
echo $info.PHP_EOL;
?>

以上例程的输出类似于：

string(3) "foo"
foo
string(12) "/usr/bin/php"
/usr/bin/php

SplFileInfo::setInfoClass
SplFileObject
SplFileInfo


The SplFileObject class

(PHP 5 >= 5.1.0, PHP 7)

简介

SplFileObject类为文件提供了一个面向对象接口.

类摘要

SplFileObject extends SplFileInfo implements RecursiveIterator , SeekableIterator {
/* 常量 */
const integer DROP_NEW_LINE = 1 ;
const integer READ_AHEAD = 2 ;
const integer SKIP_EMPTY = 4 ;
const integer READ_CSV = 8 ;
/* 方法 */
public string|array current ( void )
public bool eof ( void )
public bool fflush ( void )
public string fgetc ( void )
 public array fgetcsv
  ([ string $delimiter = ","
 [, string $enclosure = "\""
 [, string $escape = "\\"
]]] )
public string fgets ( void )
public string fgetss ([ string $allowable_tags ] )
public bool flock ( int $operation [, int &$wouldblock ] )
public int fpassthru ( void )
public int fputcsv ( array $fields [, string $delimiter = "," [, string $enclosure = '"' [, string $escape = "\" ]]] )
public string fread ( int $length )
public mixed fscanf ( string $format [, mixed &$... ] )
public int fseek ( int $offset [, int $whence = SEEK_SET ] )
public array fstat ( void )
public int ftell ( void )
public bool ftruncate ( int $size )
public int fwrite ( string $str [, int $length ] )
public void getChildren ( void )
public array getCsvControl ( void )
public int getFlags ( void )
public int getMaxLineLen ( void )
public bool hasChildren ( void )
public int key ( void )
public void next ( void )
public void rewind ( void )
public void seek ( int $line_pos )
 public void setCsvControl
  ([ string $delimiter = ","
 [, string $enclosure = "\""
 [, string $escape = "\\"
]]] )
public void setFlags ( int $flags )
public void setMaxLineLen ( int $max_len )
public void __toString ( void )
public bool valid ( void )
/* 继承的方法 */
public SplFileInfo::__construct ( string $file_name )
public int SplFileInfo::getATime ( void )
public string SplFileInfo::getBasename ([ string $suffix ] )
public int SplFileInfo::getCTime ( void )
public string SplFileInfo::getExtension ( void )
public SplFileInfo SplFileInfo::getFileInfo ([ string $class_name ] )
public string SplFileInfo::getFilename ( void )
public int SplFileInfo::getGroup ( void )
public int SplFileInfo::getInode ( void )
public string SplFileInfo::getLinkTarget ( void )
public int SplFileInfo::getMTime ( void )
public int SplFileInfo::getOwner ( void )
public string SplFileInfo::getPath ( void )
public SplFileInfo SplFileInfo::getPathInfo ([ string $class_name ] )
public string SplFileInfo::getPathname ( void )
public int SplFileInfo::getPerms ( void )
public string SplFileInfo::getRealPath ( void )
public int SplFileInfo::getSize ( void )
public string SplFileInfo::getType ( void )
public bool SplFileInfo::isDir ( void )
public bool SplFileInfo::isExecutable ( void )
public bool SplFileInfo::isFile ( void )
public bool SplFileInfo::isLink ( void )
public bool SplFileInfo::isReadable ( void )
public bool SplFileInfo::isWritable ( void )
public SplFileObject SplFileInfo::openFile ([ string $open_mode = "r" [, bool $use_include_path = false [, resource $context = NULL ]]] )
public void SplFileInfo::setFileClass ([ string $class_name = "SplFileObject" ] )
public void SplFileInfo::setInfoClass ([ string $class_name = "SplFileInfo" ] )
public void SplFileInfo::__toString ( void )
}

预定义常量

SplFileObject::DROP_NEW_LINE

Drop newlines at the end of a line.

SplFileObject::READ_AHEAD

Read on rewind/next.

SplFileObject::SKIP_EMPTY

Skips empty lines in the file. This requires the READ_AHEAD flag be enabled, to work as expected.

SplFileObject::READ_CSV

Read lines as CSV rows.

更新日志

版本 | 说明
5.3.9 | SplFileObject::SKIP_EMPTY value changed to 4. Previously, value was 6.

Table of Contents

  • SplFileObject::__construct — Construct a new file object.
  • SplFileObject::current — Retrieve current line of file
  • SplFileObject::eof — Reached end of file
  • SplFileObject::fflush — Flushes the output to the file
  • SplFileObject::fgetc — Gets character from file
  • SplFileObject::fgetcsv — Gets line from file and parse as CSV fields
  • SplFileObject::fgets — Gets line from file
  • SplFileObject::fgetss — Gets line from file and strip HTML tags
  • SplFileObject::flock — Portable file locking
  • SplFileObject::fpassthru — Output all remaining data on a file pointer
  • SplFileObject::fputcsv — Write a field array as a CSV line
  • SplFileObject::fread — Read from file
  • SplFileObject::fscanf — Parses input from file according to a format
  • SplFileObject::fseek — Seek to a position
  • SplFileObject::fstat — Gets information about the file
  • SplFileObject::ftell — Return current file position
  • SplFileObject::ftruncate — Truncates the file to a given length
  • SplFileObject::fwrite — Write to file
  • SplFileObject::getChildren — No purpose
  • SplFileObject::getCsvControl — Get the delimiter, enclosure and escape character for CSV
  • SplFileObject::getCurrentLine — Alias of SplFileObject::fgets
  • SplFileObject::getFlags — Gets flags for the SplFileObject
  • SplFileObject::getMaxLineLen — Get maximum line length
  • SplFileObject::hasChildren — SplFileObject does not have children
  • SplFileObject::key — Get line number
  • SplFileObject::next — Read next line
  • SplFileObject::rewind — Rewind the file to the first line
  • SplFileObject::seek — Seek to specified line
  • SplFileObject::setCsvControl — Set the delimiter, enclosure and escape character for CSV
  • SplFileObject::setFlags — Sets flags for the SplFileObject
  • SplFileObject::setMaxLineLen — Set maximum line length
  • SplFileObject::__toString — Alias of SplFileObject::current
  • SplFileObject::valid — Not at EOF
SplFileInfo::__toString
SplFileObject::__construct
文件处理


Construct a new file object.

SplFileObject
SplFileObject::current
SplFileObject
PHP Manual

SplFileObject::__construct

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::__construct — Construct a new file object.

说明

public SplFileObject::__construct ( string $filename [, string $open_mode = "r" [, bool $use_include_path = false [, resource $context ]]] )

Construct a new file object.

参数

filename

The file to read.

Tip

如已启用fopen 包装器，在此函数中， URL 可作为文件名。关于如何指定文件名详见 fopen()。各种 wapper 的不同功能请参见 支持的协议和封装协议，注意其用法及其可提供的预定义变量。

open_mode

The mode in which to open the file. See fopen() for a list of allowed modes.

use_include_path

Whether to search in the include_path for filename.

context

A valid context resource created with stream_context_create().

返回值

没有返回值。

错误／异常

Throws a RuntimeException if the filename cannot be opened.

范例

Example #1 SplFileObject::__construct() example

This example opens the current file and iterates over its contents line by line.

<?php
$file = new SplFileObject(__FILE__);
foreach ($file as $line_num => $line) {
    echo "Line $line_num is $line";
}
?>

以上例程的输出类似于：

Line 0 is <?php
Line 1 is $file = new SplFileObject(__FILE__);
Line 2 is foreach ($file as $line_num => $line) {
Line 3 is     echo "Line $line_num is $line";
Line 4 is }
Line 5 is ?>

参见

  • SplFileInfo::openFile() - Gets an SplFileObject object for the file
  • fopen() - 打开文件或者 URL

SplFileObject
SplFileObject::current
SplFileObject


Retrieve current line of file

SplFileObject::__construct
SplFileObject::eof
SplFileObject
PHP Manual

SplFileObject::current

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::current — Retrieve current line of file

说明

public string|array SplFileObject::current ( void )

Retrieves the current line of the file.

参数

此函数没有参数。

返回值

Retrieves the current line of the file. If the SplFileObject::READ_CSV flag is set, this method returns an array containing the current line parsed as CSV data.

范例

Example #1 SplFileObject::current() example

<?php
$file = new SplFileObject(__FILE__);
foreach ($file as $k => $line) {
   echo ($file->key() + 1) . ': ' . $file->current();
}
?>

以上例程的输出类似于：

1: <?php
2: $file = new SplFileObject(__FILE__);
3: foreach ($file as $line) {
4:     echo ($file->key() + 1) . ': ' . $file->current();
5: }
6: ?>

参见

  • SplFileObject::key() - Get line number
  • SplFileObject::seek() - Seek to specified line
  • SplFileObject::next() - Read next line
  • SplFileObject::rewind() - Rewind the file to the first line
  • SplFileObject::valid() - Not at EOF

SplFileObject::__construct
SplFileObject::eof
SplFileObject


Reached end of file

SplFileObject::current
SplFileObject::fflush
SplFileObject
PHP Manual

SplFileObject::eof

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::eof — Reached end of file

说明

public bool SplFileObject::eof ( void )

Determine whether the end of file has been reached

参数

此函数没有参数。

返回值

Returns TRUE if file is at EOF, FALSE otherwise.

范例

Example #1 SplFileObject::eof() example

<?php
$file = new SplFileObject("fruits.txt");
while ( ! $file->eof()) {
    echo $file->fgets();
}
?>

以上例程的输出类似于：

apple
banana
cherry
date
elderberry

参见

  • SplFileObject::valid() - Not at EOF
  • feof() - 测试文件指针是否到了文件结束的位置

SplFileObject::current
SplFileObject::fflush
SplFileObject


Flushes the output to the file

SplFileObject::eof
SplFileObject::fgetc
SplFileObject
PHP Manual

SplFileObject::fflush

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::fflush — Flushes the output to the file

说明

public bool SplFileObject::fflush ( void )

Forces a write of all buffered output to the file.

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 SplFileObject::fflush() example

<?php
$file = new SplFileObject('misc.txt', 'r+');
$file->rewind();
$file->fwrite("Foo");
$file->fflush();
$file->ftruncate($file->ftell());
?>

参见

  • SplFileObject::fwrite() - Write to file

SplFileObject::eof
SplFileObject::fgetc
SplFileObject


Gets character from file

SplFileObject::fflush
SplFileObject::fgetcsv
SplFileObject
PHP Manual

SplFileObject::fgetc

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::fgetc — Gets character from file

说明

public string SplFileObject::fgetc ( void )

Gets a character from the file.

参数

此函数没有参数。

返回值

Returns a string containing a single character read from the file or FALSE on EOF.

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

范例

Example #1 SplFileObject::fgetc() example

<?php
$file = new SplFileObject('file.txt');
while (false !== ($char = $file->fgetc())) {
    echo "$char\n";
}
?>

参见

  • SplFileObject::fgets() - Gets line from file

SplFileObject::fflush
SplFileObject::fgetcsv
SplFileObject


Gets line from file and parse as CSV fields

SplFileObject::fgetc
SplFileObject::fgets
SplFileObject
PHP Manual

SplFileObject::fgetcsv

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::fgetcsv — Gets line from file and parse as CSV fields

说明

 public array SplFileObject::fgetcsv
  ([ string $delimiter = ","
 [, string $enclosure = "\""
 [, string $escape = "\\"
]]] )

Gets a line from the file which is in CSV format and returns an array containing the fields read.

参数

delimiter

The field delimiter (one character only). Defaults as a comma or the value set using SplFileObject::setCsvControl().

enclosure

The field enclosure character (one character only). Defaults as a double quotation mark or the value set using SplFileObject::setCsvControl().

escape

The escape character (one character only). Defaults as a backslash (\) or the value set using SplFileObject::setCsvControl().

返回值

Returns an indexed array containing the fields read, or FALSE on error.

Note:

A blank line in a CSV file will be returned as an array comprising a single NULL field unless using SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE, in which case empty lines are skipped.

范例

Example #1 SplFileObject::fgetcsv() example

<?php
$file = new SplFileObject("data.csv");
while (!$file->eof()) {
    var_dump($file->fgetcsv());
}
?>

Example #2 SplFileObject::READ_CSV example

<?php
$file = new SplFileObject("animals.csv");
$file->setFlags(SplFileObject::READ_CSV);
foreach ($file as $row) {
    list($animal, $class, $legs) = $row;
    printf("A %s is a %s with %d legs\n", $animal, $class, $legs);
}
?>

Contents of animals.csv

crocodile,reptile,4
dolphin,mammal,0
duck,bird,2
koala,mammal,4
salmon,fish,0

以上例程的输出类似于：

A crocodile is a reptile with 4 legs
A dolphin is a mammal with 0 legs
A duck is a bird with 2 legs
A koala is a mammal with 4 legs
A salmon is a fish with 0 legs

参见

  • SplFileObject::setCsvControl() - Set the delimiter, enclosure and escape character for CSV
  • SplFileObject::setFlags() - Sets flags for the SplFileObject
  • SplFileObject::READ_CSV
  • SplFileObject::current() - Retrieve current line of file

SplFileObject::fgetc
SplFileObject::fgets
SplFileObject


Gets line from file

SplFileObject::fgetcsv
SplFileObject::fgetss
SplFileObject
PHP Manual

SplFileObject::fgets

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::fgets — Gets line from file

说明

public string SplFileObject::fgets ( void )

Gets a line from the file.

参数

此函数没有参数。

返回值

Returns a string containing the next line from the file, or FALSE on error.

错误／异常

Throws a RuntimeException if the file cannot be read.

范例

Example #1 SplFileObject::fgets() example

This example simply outputs the contents of file.txt line-by-line.

<?php
$file = new SplFileObject("file.txt");
while (!$file->eof()) {
    echo $file->fgets();
}
?>

参见

  • fgets() - 从文件指针中读取一行
  • SplFileObject::fgetss() - Gets line from file and strip HTML tags
  • SplFileObject::fgetc() - Gets character from file
  • SplFileObject::current() - Retrieve current line of file

SplFileObject::fgetcsv
SplFileObject::fgetss
SplFileObject


Gets line from file and strip HTML tags

SplFileObject::fgets
SplFileObject::flock
SplFileObject
PHP Manual

SplFileObject::fgetss

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::fgetss — Gets line from file and strip HTML tags

说明

public string SplFileObject::fgetss ([ string $allowable_tags ] )

Identical to SplFileObject::fgets(), except that SplFileObject::fgetss() attempts to strip any HTML and PHP tags from the text it reads.

参数

allowable_tags

Optional parameter to specify tags which should not be stripped.

返回值

Returns a string containing the next line of the file with HTML and PHP code stripped, or FALSE on error.

范例

Example #1 SplFileObject::fgetss() example

<?php
$str = <<<EOD
<html><body>
 <p>Welcome! Today is the <?php echo(date('jS')); ?> of <?= date('F'); ?>.</p>
</body></html>
Text outside of the HTML block.
EOD;
file_put_contents("sample.php", $str);

$file = new SplFileObject("sample.php");
while (!$file->eof()) {
    echo $file->fgetss();
}
?>

以上例程的输出类似于：

 Welcome! Today is the  of .

Text outside of the HTML block.

参见

  • fgetss() - 从文件指针中读取一行并过滤掉 HTML 标记
  • SplFileObject::fgets() - Gets line from file
  • SplFileObject::fgetc() - Gets character from file
  • SplFileObject::current() - Retrieve current line of file

SplFileObject::fgets
SplFileObject::flock
SplFileObject


Portable file locking

SplFileObject::fgetss
SplFileObject::fpassthru
SplFileObject
PHP Manual

SplFileObject::flock

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::flock — Portable file locking

说明

public bool SplFileObject::flock ( int $operation [, int &$wouldblock ] )

Locks or unlocks the file in the same portable way as flock().

参数

operation

operation is one of the following:

  • LOCK_SH to acquire a shared lock (reader).
  • LOCK_EX to acquire an exclusive lock (writer).
  • LOCK_UN to release a lock (shared or exclusive).
  • LOCK_NB to not block while locking (not supported on Windows).

wouldblock

Set to TRUE if the lock would block (EWOULDBLOCK errno condition).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 SplFileObject::flock() example

<?php
$file = new SplFileObject("/tmp/lock.txt", "w");
if ($file->flock(LOCK_EX)) { // do an exclusive lock
    $file->ftruncate(0);     // truncate file
    $file->fwrite("Write something here\n");
    $file->flock(LOCK_UN);   // release the lock
} else {
    echo "Couldn't get the lock!";
}
?>

参见

  • flock() - 轻便的咨询文件锁定

SplFileObject::fgetss
SplFileObject::fpassthru
SplFileObject


Output all remaining data on a file pointer

SplFileObject::flock
SplFileObject::fputcsv
SplFileObject
PHP Manual

SplFileObject::fpassthru

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::fpassthru — Output all remaining data on a file pointer

说明

public int SplFileObject::fpassthru ( void )

Reads to EOF on the given file pointer from the current position and writes the results to the output buffer.

You may need to call SplFileObject::rewind() to reset the file pointer to the beginning of the file if you have already written data to the file.

参数

此函数没有参数。

返回值

Returns the number of characters read from handle and passed through to the output.

范例

Example #1 SplFileObject::fpassthru() example

<?php

// Open the file in binary mode
$file = new SplFileObject("./img/ok.png", "rb");

// Send the right headers
header("Content-Type: image/png");
header("Content-Length: " . $file->getSize());

// Dump the picture and end script
$file->fpassthru();
exit;

?>

参见

  • fpassthru() - 输出文件指针处的所有剩余数据

SplFileObject::flock
SplFileObject::fputcsv
SplFileObject


Write a field array as a CSV line

SplFileObject::fpassthru
SplFileObject::fread
SplFileObject
PHP Manual

SplFileObject::fputcsv

(PHP 5 >= 5.4.0, PHP 7)

SplFileObject::fputcsv — Write a field array as a CSV line

说明

 public int SplFileObject::fputcsv
  ( array $fields
 [, string $delimiter = ","
 [, string $enclosure = '"'
 [, string $escape = "\"
]]] )

Writes the fields array to the file as a CSV line.

参数

fields

An array of values.

delimiter

The optional delimiter parameter sets the field delimiter (one character only).

enclosure

The optional enclosure parameter sets the field enclosure (one character only).

escape

The optional escape parameter sets the escape character (one character only).

返回值

Returns the length of the written string 或者在失败时返回 FALSE.

Returns FALSE, and does not write the CSV line to the file, if the delimiter or enclosure parameter is not a single character.

错误／异常

An E_WARNING level error is issued if the delimiter or enclosure parameter is not a single character.

更新日志

版本 | 说明
5.5.21, 5.6.5 | Added the escape parameter.

范例

Example #1 SplFileObject::fputcsv() example

<?php

$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('123', '456', '789'),
    array('"aaa"', '"bbb"')
);

$file = new SplFileObject('file.csv', 'w');

foreach ($list as $fields) {
    $file->fputcsv($fields);
}

?>

The above example will write the following to file.csv:

aaa,bbb,ccc,dddd
123,456,789
"""aaa""","""bbb"""

参见

  • fputcsv() - 将行格式化为 CSV 并写入文件指针
  • SplFileObject::fgetcsv() - Gets line from file and parse as CSV fields

SplFileObject::fpassthru
SplFileObject::fread
SplFileObject


Read from file

SplFileObject::fputcsv
SplFileObject::fscanf
SplFileObject
PHP Manual

SplFileObject::fread

(PHP 5 >= 5.5.11, PHP 7)

SplFileObject::fread — Read from file

说明

public string SplFileObject::fread ( int $length )

Reads the given number of bytes from the file.

参数

length

The number of bytes to read.

返回值

Returns the string read from the file 或者在失败时返回 FALSE.

范例

Example #1 SplFileObject::fread() example

<?php
// Get contents of a file into a string
$filename = "/usr/local/something.txt";
$file = new SplFileObject($filename, "r");
$contents = $file->fread($file->getSize());
?>

注释

Note:

Note that SplFileObject::fread() reads from the current position of the file pointer. Use SplFileObject::ftell() to find the current position of the pointer and SplFileObject::rewind() (or SplFileObject::fseek()) to rewind the pointer position.

参见

  • fread() - 读取文件（可安全用于二进制文件）

SplFileObject::fputcsv
SplFileObject::fscanf
SplFileObject


Parses input from file according to a format

SplFileObject::fread
SplFileObject::fseek
SplFileObject
PHP Manual

SplFileObject::fscanf

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::fscanf — Parses input from file according to a format

说明

public mixed SplFileObject::fscanf ( string $format [, mixed &$... ] )

Reads a line from the file and interprets it according to the specified format, which is described in the documentation for sprintf().

Any whitespace in the format string matches any whitespace in the line from the file. This means that even a tab \t in the format string can match a single space character in the input stream.

参数

format

The specified format as described in the sprintf() documentation.

...

The optional assigned values.

返回值

If only one parameter is passed to this method, the values parsed will be returned as an array. Otherwise, if optional parameters are passed, the function will return the number of assigned values. The optional parameters must be passed by reference.

范例

Example #1 SplFileObject::fscanf() example

<?php
$file = new SplFileObject("misc.txt");
while ($userinfo = $file->fscanf("%s %s %s")) {
    list ($name, $profession, $countrycode) = $userinfo;
    // Do something with $name $profession $countrycode
}
?>

Contents of users.txt

javier   argonaut    pe
hiroshi  sculptor    jp
robert   slacker     us
luigi    florist     it

参见

  • fscanf() - 从文件中格式化输入

SplFileObject::fread
SplFileObject::fseek
SplFileObject


Seek to a position

SplFileObject::fscanf
SplFileObject::fstat
SplFileObject
PHP Manual

SplFileObject::fseek

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::fseek — Seek to a position

说明

public int SplFileObject::fseek ( int $offset [, int $whence = SEEK_SET ] )

Seek to a position in the file measured in bytes from the beginning of the file, obtained by adding offset to the position specified by whence.

参数

offset

The offset. A negative value can be used to move backwards through the file which is useful when SEEK_END is used as the whence value.

whence

whence values are:

  • SEEK_SET - Set position equal to offset bytes.
  • SEEK_CUR - Set position to current location plus offset.
  • SEEK_END - Set position to end-of-file plus offset.

If whence is not specified, it is assumed to be SEEK_SET.

返回值

Returns 0 if the seek was successful, -1 otherwise. Note that seeking past EOF is not considered an error.

范例

Example #1 SplFileObject::fseek() example

<?php
$file = new SplFileObject("somefile.txt");

// Read first line
$data = $file->fgets();

// Move back to the beginning of the file
// Same as $file->rewind();
$file->fseek(0);
?>

参见

  • fseek() - 在文件指针中定位

SplFileObject::fscanf
SplFileObject::fstat
SplFileObject


Gets information about the file

SplFileObject::fseek
SplFileObject::ftell
SplFileObject
PHP Manual

SplFileObject::fstat

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::fstat — Gets information about the file

说明

public array SplFileObject::fstat ( void )

Gathers the statistics of the file. Behaves identically to fstat().

参数

此函数没有参数。

返回值

Returns an array with the statistics of the file; the format of the array is described in detail on the stat() manual page.

范例

Example #1 SplFileObject::fstat() example

<?php
$file = new SplFileObject("/etc/passwd");
$stat = $file->fstat();

// Print only the associative part
print_r(array_slice($stat, 13));

?>

以上例程的输出类似于：

Array
(
    [dev] => 771
    [ino] => 488704
    [mode] => 33188
    [nlink] => 1
    [uid] => 0
    [gid] => 0
    [rdev] => 0
    [size] => 1114
    [atime] => 1061067181
    [mtime] => 1056136526
    [ctime] => 1056136526
    [blksize] => 4096
    [blocks] => 8
)

参见

  • fstat() - 通过已打开的文件指针取得文件信息
  • stat() - 给出文件的信息

SplFileObject::fseek
SplFileObject::ftell
SplFileObject


Return current file position

SplFileObject::fstat
SplFileObject::ftruncate
SplFileObject
PHP Manual

SplFileObject::ftell

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::ftell — Return current file position

说明

public int SplFileObject::ftell ( void )

Returns the position of the file pointer which represents the current offset in the file stream.

参数

此函数没有参数。

返回值

Returns the position of the file pointer as an integer, or FALSE on error.

范例

Example #1 SplFileObject::ftell() example

<?php
$file = new SplFileObject("/etc/passwd");

// Read first line
$data = $file->fgets();

// Where are we?
echo $file->ftell();
?>

参见

  • ftell() - 返回文件指针读/写的位置

SplFileObject::fstat
SplFileObject::ftruncate
SplFileObject


Truncates the file to a given length

SplFileObject::ftell
SplFileObject::fwrite
SplFileObject
PHP Manual

SplFileObject::ftruncate

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::ftruncate — Truncates the file to a given length

说明

public bool SplFileObject::ftruncate ( int $size )

Truncates the file to size bytes.

参数

size

The size to truncate to.

Note:

If size is larger than the file it is extended with null bytes.

If size is smaller than the file, the extra data will be lost.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 SplFileObject::ftruncate() example

<?php
// Create file containing "Hello World!"
$file = new SplFileObject("/tmp/ftruncate", "w+");
$file->fwrite("Hello World!");

// Truncate to 5 bytes
$file->ftruncate(5);

// Rewind and read data
$file->rewind();
echo $file->fgets();
?>

以上例程的输出类似于：

Hello

参见

  • ftruncate() - 将文件截断到给定的长度

SplFileObject::ftell
SplFileObject::fwrite
SplFileObject


Write to file

SplFileObject::ftruncate
SplFileObject::getChildren
SplFileObject
PHP Manual

SplFileObject::fwrite

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::fwrite — Write to file

说明

public int SplFileObject::fwrite ( string $str [, int $length ] )

Writes the contents of string to the file

参数

str

The string to be written to the file.

length

If the length argument is given, writing will stop after length bytes have been written or the end of string is reached, whichever comes first.

返回值

Returns the number of bytes written, or NULL on error.

范例

Example #1 SplFileObject::fwrite() example

<?php
$file = new SplFileObject("fwrite.txt", "w");
$written = $file->fwrite("12345");
echo "Wrote $written bytes to file";
?>

以上例程的输出类似于：

Wrote 5 bytes to file

参见

  • fwrite() - 写入文件（可安全用于二进制文件）

SplFileObject::ftruncate
SplFileObject::getChildren
SplFileObject


No purpose

SplFileObject::fwrite
SplFileObject::getCsvControl
SplFileObject
PHP Manual

SplFileObject::getChildren

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::getChildren — No purpose

说明

public void SplFileObject::getChildren ( void )

An SplFileObject does not have children so this method returns NULL.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • RecursiveIterator::getChildren() - Returns an iterator for the current entry.

SplFileObject::fwrite
SplFileObject::getCsvControl
SplFileObject


Get the delimiter, enclosure and escape character for CSV

SplFileObject::getChildren
SplFileObject::getCurrentLine
SplFileObject
PHP Manual

SplFileObject::getCsvControl

(PHP 5 >= 5.2.0, PHP 7)

SplFileObject::getCsvControl — Get the delimiter, enclosure and escape character for CSV

说明

public array SplFileObject::getCsvControl ( void )

Gets the delimiter, enclosure and escape character used for parsing CSV fields.

参数

此函数没有参数。

返回值

Returns an indexed array containing the delimiter, enclosure and escape character.

更新日志

版本 | 说明
5.6.25, 7.0.10 | Added the escape character to the returned array.

范例

Example #1 SplFileObject::getCsvControl() example

<?php
$file = new SplFileObject("data.txt");
print_r($file->getCsvControl());
?>

以上例程的输出类似于：

Array
(
    [0] => ,
    [1] => "
    [2] => \
)

参见

  • SplFileObject::setCsvControl() - Set the delimiter, enclosure and escape character for CSV
  • SplFileObject::fgetcsv() - Gets line from file and parse as CSV fields

SplFileObject::getChildren
SplFileObject::getCurrentLine
SplFileObject


Alias of SplFileObject::fgets

SplFileObject::getCsvControl
SplFileObject::getFlags
SplFileObject
PHP Manual

SplFileObject::getCurrentLine

(PHP 5 >= 5.1.2, PHP 7)

SplFileObject::getCurrentLine — Alias of SplFileObject::fgets()

说明

This method is an alias of SplFileObject::fgets().

SplFileObject::getCsvControl
SplFileObject::getFlags
SplFileObject


Gets flags for the SplFileObject

SplFileObject::getCurrentLine
SplFileObject::getMaxLineLen
SplFileObject
PHP Manual

SplFileObject::getFlags

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::getFlags — Gets flags for the SplFileObject

说明

public int SplFileObject::getFlags ( void )

Gets the flags set for an instance of SplFileObject as an integer.

参数

此函数没有参数。

返回值

Returns an integer representing the flags.

范例

Example #1 SplFileObject::getFlags() example

<?php
$file = new SplFileObject(__FILE__, "r");

if ($file->getFlags() & SplFileObject::SKIP_EMPTY) {
    echo "Skipping empty lines\n";
} else {
    echo "Not skipping empty lines\n";
}

$file->setFlags(SplFileObject::SKIP_EMPTY);

if ($file->getFlags() & SplFileObject::SKIP_EMPTY) {
    echo "Skipping empty lines\n";
} else {
    echo "Not skipping empty lines\n";
}
?>

以上例程的输出类似于：

Not skipping empty lines
Skipping empty lines

参见

  • SplFileObject::setFlags() - Sets flags for the SplFileObject

SplFileObject::getCurrentLine
SplFileObject::getMaxLineLen
SplFileObject


Get maximum line length

SplFileObject::getFlags
SplFileObject::hasChildren
SplFileObject
PHP Manual

SplFileObject::getMaxLineLen

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::getMaxLineLen — Get maximum line length

说明

public int SplFileObject::getMaxLineLen ( void )

Gets the maximum line length as set by SplFileObject::setMaxLineLen().

参数

此函数没有参数。

返回值

Returns the maximum line length if one has been set with SplFileObject::setMaxLineLen(), default is 0.

范例

Example #1 SplFileObject::getMaxLineLen() example

<?php
$file = new SplFileObject("file.txt");
var_dump($file->getMaxLineLen());

$file->setMaxLineLen(20);
var_dump($file->getMaxLineLen());
?>

以上例程的输出类似于：

int(0)
int(20)

参见

  • Classname::Method()

SplFileObject::getFlags
SplFileObject::hasChildren
SplFileObject


SplFileObject does not have children

SplFileObject::getMaxLineLen
SplFileObject::key
SplFileObject
PHP Manual

SplFileObject::hasChildren

(PHP 5 >= 5.1.2, PHP 7)

SplFileObject::hasChildren — SplFileObject does not have children

说明

public bool SplFileObject::hasChildren ( void )

An SplFileObject does not have children so this method always return FALSE.

参数

此函数没有参数。

返回值

Returns FALSE

参见

  • RecursiveIterator::hasChildren() - Returns if an iterator can be created fot the current entry.

SplFileObject::getMaxLineLen
SplFileObject::key
SplFileObject


Get line number

SplFileObject::hasChildren
SplFileObject::next
SplFileObject
PHP Manual

SplFileObject::key

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::key — Get line number

说明

public int SplFileObject::key ( void )

Gets the current line number.

Note:

This number may not reflect the actual line number in the file if SplFileObject::setMaxLineLen() is used to read fixed lengths of the file.

参数

此函数没有参数。

返回值

Returns the current line number.

范例

Example #1 SplFileObject::key() example

<?php
$file = new SplFileObject("lipsum.txt");
foreach ($file as $line) {
    echo $file->key() . ". " . $line;
}
?>

以上例程的输出类似于：

0. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
1. Duis nec sapien felis, ac sodales nisl.
2. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Example #2 SplFileObject::key() example with SplFileObject::setMaxLineLen()

<?php
$file = new SplFileObject("lipsum.txt");
$file->setMaxLineLen(20);
foreach ($file as $line) {
    echo $file->key() . ". " . $line . "\n";
}
?>

以上例程的输出类似于：

0. Lorem ipsum dolor s
1. it amet, consectetu
2. r adipiscing elit.
3.

4. Duis nec sapien fel
5. is, ac sodales nisl
6. .

7. Lorem ipsum dolor s
8. it amet, consectetu
9. r adipiscing elit.

参见

  • SplFileObject::current() - Retrieve current line of file
  • SplFileObject::seek() - Seek to specified line
  • SplFileObject::next() - Read next line
  • SplFileObject::rewind() - Rewind the file to the first line
  • SplFileObject::valid() - Not at EOF

SplFileObject::hasChildren
SplFileObject::next
SplFileObject


Read next line

SplFileObject::key
SplFileObject::rewind
SplFileObject
PHP Manual

SplFileObject::next

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::next — Read next line

说明

public void SplFileObject::next ( void )

Moves ahead to the next line in the file.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 SplFileObject::next() example

<?php
// Read through file line by line
$file = new SplFileObject("misc.txt");
while (!$file->eof()) {
    echo $file->current();
    $file->next();
}
?>

参见

  • SplFileObject::current() - Retrieve current line of file
  • SplFileObject::key() - Get line number
  • SplFileObject::seek() - Seek to specified line
  • SplFileObject::rewind() - Rewind the file to the first line
  • SplFileObject::valid() - Not at EOF

SplFileObject::key
SplFileObject::rewind
SplFileObject


Rewind the file to the first line

SplFileObject::next
SplFileObject::seek
SplFileObject
PHP Manual

SplFileObject::rewind

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::rewind — Rewind the file to the first line

说明

public void SplFileObject::rewind ( void )

Rewinds the file back to the first line.

参数

此函数没有参数。

返回值

没有返回值。

错误／异常

Throws a RuntimeException if cannot be rewound.

范例

Example #1 SplFileObject::rewind() example

<?php
$file = new SplFileObject("misc.txt");

// Loop over whole file
foreach ($file as $line) { }

// Rewind to first line
$file->rewind();

// Output first line
echo $file->current();
?>

参见

  • SplFileObject::current() - Retrieve current line of file
  • SplFileObject::key() - Get line number
  • SplFileObject::seek() - Seek to specified line
  • SplFileObject::next() - Read next line
  • SplFileObject::valid() - Not at EOF

SplFileObject::next
SplFileObject::seek
SplFileObject


Seek to specified line

SplFileObject::rewind
SplFileObject::setCsvControl
SplFileObject
PHP Manual

SplFileObject::seek

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::seek — Seek to specified line

说明

public void SplFileObject::seek ( int $line_pos )

Seek to specified line in the file.

参数

line_pos

The zero-based line number to seek to.

返回值

没有返回值。

错误／异常

Throws a LogicException if the line_pos is negative.

范例

Example #1 SplFileObject::seek() example

This example outputs the third line of the script which is found at position 2.

<?php
$file = new SplFileObject(__FILE__);
$file->seek(2);
echo $file->current();
?>

以上例程的输出类似于：

$file->seek(2);

参见

  • SplFileObject::current() - Retrieve current line of file
  • SplFileObject::key() - Get line number
  • SplFileObject::next() - Read next line
  • SplFileObject::rewind() - Rewind the file to the first line
  • SplFileObject::valid() - Not at EOF

SplFileObject::rewind
SplFileObject::setCsvControl
SplFileObject


Set the delimiter, enclosure and escape character for CSV

SplFileObject::seek
SplFileObject::setFlags
SplFileObject
PHP Manual

SplFileObject::setCsvControl

(PHP 5 >= 5.2.0, PHP 7)

SplFileObject::setCsvControl — Set the delimiter, enclosure and escape character for CSV

说明

 public void SplFileObject::setCsvControl
  ([ string $delimiter = ","
 [, string $enclosure = "\""
 [, string $escape = "\\"
]]] )

Sets the delimiter, enclosure and escape character for parsing CSV fields.

参数

delimiter

The field delimiter (one character only).

enclosure

The field enclosure character (one character only).

escape

The field escape character (one character only).

返回值

没有返回值。

更新日志

版本 | 说明
5.3.0 | Added the escape parameter.

范例

Example #1 SplFileObject::setCsvControl() example

<?php
$file = new SplFileObject("data.csv");
$file->setFlags(SplFileObject::READ_CSV);
$file->setCsvControl('|');
foreach ($file as $row) {
    list ($fruit, $quantity) = $row;
    // Do something with values
}
?>

Contents of data.csv

<?php
apples|20
bananas|14
cherries|87
?>

参见

  • SplFileObject::getCsvControl() - Get the delimiter, enclosure and escape character for CSV
  • SplFileObject::fgetcsv() - Gets line from file and parse as CSV fields

SplFileObject::seek
SplFileObject::setFlags
SplFileObject


Sets flags for the SplFileObject

SplFileObject::setCsvControl
SplFileObject::setMaxLineLen
SplFileObject
PHP Manual

SplFileObject::setFlags

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::setFlags — Sets flags for the SplFileObject

说明

public void SplFileObject::setFlags ( int $flags )

Sets the flags to be used by the SplFileObject.

参数

flags

Bit mask of the flags to set. See SplFileObject constants for the available flags.

返回值

没有返回值。

范例

Example #1 SplFileObject::setFlags() example

<?php
$file = new SplFileObject("data.csv");
$file->setFlags(SplFileObject::READ_CSV);
foreach ($file as $fields) {
    var_dump($fields);
}
?>

参见

  • SplFileObject::getFlags() - Gets flags for the SplFileObject

SplFileObject::setCsvControl
SplFileObject::setMaxLineLen
SplFileObject


Set maximum line length

SplFileObject::setFlags
SplFileObject::__toString
SplFileObject
PHP Manual

SplFileObject::setMaxLineLen

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::setMaxLineLen — Set maximum line length

说明

public void SplFileObject::setMaxLineLen ( int $max_len )

Sets the maximum length of a line to be read.

参数

max_len

The maximum length of a line.

返回值

没有返回值。

错误／异常

Throws DomainException when max_len is less than zero.

范例

Example #1 SplFileObject::setMaxLineLen() example

<?php
$file = new SplFileObject("lipsum.txt");
$file->setMaxLineLen(20);
foreach ($file as $line) {
    echo $line . "\n";
}
?>

Contents of lipsum.txt

Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Duis nec sapien felis, ac sodales nisl.
Nulla vitae magna vitae purus aliquet consequat.

以上例程的输出类似于：

Lorem ipsum dolor s
it amet, consectetu
r adipiscing elit.

Duis nec sapien fel
is, ac sodales nisl
.

Nulla vitae magna v
itae purus aliquet
consequat.

参见

  • Classname::Method()

SplFileObject::setFlags
SplFileObject::__toString
SplFileObject


Alias of SplFileObject::current

SplFileObject::setMaxLineLen
SplFileObject::valid
SplFileObject
PHP Manual

SplFileObject::__toString

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::__toString — Alias of SplFileObject::current()

说明

public void SplFileObject::__toString ( void )

This method is an alias of SplFileObject::current().

SplFileObject::setMaxLineLen
SplFileObject::valid
SplFileObject


Not at EOF

SplFileObject::__toString
SplTempFileObject
SplFileObject
PHP Manual

SplFileObject::valid

(PHP 5 >= 5.1.0, PHP 7)

SplFileObject::valid — Not at EOF

说明

public bool SplFileObject::valid ( void )

Check whether EOF has been reached.

参数

此函数没有参数。

返回值

Returns TRUE if not reached EOF, FALSE otherwise.

范例

Example #1 SplFileObject::valid() example

<?php
// Loop over a file, line by line
$file = new SplFileObject("file.txt");
while ($file->valid()) {
    echo $file->fgets();
}
?>

参见

  • SplFileObject::current() - Retrieve current line of file
  • SplFileObject::key() - Get line number
  • SplFileObject::seek() - Seek to specified line
  • SplFileObject::next() - Read next line
  • SplFileObject::rewind() - Rewind the file to the first line

SplFileObject::__toString
SplTempFileObject
SplFileObject


The SplTempFileObject class

(PHP 5 >= 5.1.2, PHP 7)

简介

The SplTempFileObject class offers an object oriented interface for a temporary file.

类摘要

SplTempFileObject extends SplFileObject implements SeekableIterator , RecursiveIterator {
/* 方法 */
public __construct ([ int $max_memory ] )
/* 继承的方法 */
public string|array SplFileObject::current ( void )
public bool SplFileObject::eof ( void )
public bool SplFileObject::fflush ( void )
public string SplFileObject::fgetc ( void )
 public array SplFileObject::fgetcsv
  ([ string $delimiter = ","
 [, string $enclosure = "\""
 [, string $escape = "\\"
]]] )
public string SplFileObject::fgets ( void )
public string SplFileObject::fgetss ([ string $allowable_tags ] )
public bool SplFileObject::flock ( int $operation [, int &$wouldblock ] )
public int SplFileObject::fpassthru ( void )
 public int SplFileObject::fputcsv
  ( array $fields
 [, string $delimiter = ","
 [, string $enclosure = '"'
 [, string $escape = "\"
]]] )
public string SplFileObject::fread ( int $length )
public mixed SplFileObject::fscanf ( string $format [, mixed &$... ] )
public int SplFileObject::fseek ( int $offset [, int $whence = SEEK_SET ] )
public array SplFileObject::fstat ( void )
public int SplFileObject::ftell ( void )
public bool SplFileObject::ftruncate ( int $size )
public int SplFileObject::fwrite ( string $str [, int $length ] )
public void SplFileObject::getChildren ( void )
public array SplFileObject::getCsvControl ( void )
public int SplFileObject::getFlags ( void )
public int SplFileObject::getMaxLineLen ( void )
public bool SplFileObject::hasChildren ( void )
public int SplFileObject::key ( void )
public void SplFileObject::next ( void )
public void SplFileObject::rewind ( void )
public void SplFileObject::seek ( int $line_pos )
 public void SplFileObject::setCsvControl
  ([ string $delimiter = ","
 [, string $enclosure = "\""
 [, string $escape = "\\"
]]] )
public void SplFileObject::setFlags ( int $flags )
public void SplFileObject::setMaxLineLen ( int $max_len )
public void SplFileObject::__toString ( void )
public bool SplFileObject::valid ( void )
}

Table of Contents

  • SplTempFileObject::__construct — Construct a new temporary file object
SplFileObject::valid
SplTempFileObject::__construct
文件处理


Construct a new temporary file object

SplTempFileObject
各种类及接口
SplTempFileObject
PHP Manual

SplTempFileObject::__construct

(PHP 5 >= 5.1.2, PHP 7)

SplTempFileObject::__construct — Construct a new temporary file object

说明

public SplTempFileObject::__construct ([ int $max_memory ] )

Construct a new temporary file object.

参数

max_memory

The maximum amount of memory (in bytes, default is 2 MB) for the temporary file to use. If the temporary file exceeds this size, it will be moved to a file in the system's temp directory.

If max_memory is negative, only memory will be used. If max_memory is zero, no memory will be used.

返回值

没有返回值。

错误／异常

Throws a RuntimeException if an error occurs.

范例

Example #1 SplTempFileObject() example

This example writes a temporary file in memory which can be written to and read from.

<?php
$temp = new SplTempFileObject();
$temp->fwrite("This is the first line\n");
$temp->fwrite("And this is the second.\n");
echo "Written " . $temp->ftell() . " bytes to temporary file.\n\n";

// Rewind and read what was written
$temp->rewind();
foreach ($temp as $line) {
    echo $line;
}
?>

以上例程的输出类似于：

Written 47 bytes to temporary file.

This is the first line
And this is the second.

参见

  • SplFileObject
  • PHP input/output streams (for php://temp and php://memory)

SplTempFileObject
各种类及接口
SplTempFileObject


各种类及接口

Table of Contents

  • ArrayObject
  • SplObserver
  • SplSubject

无法归入其它 SPL 分类的类和接口。

SplTempFileObject::__construct
ArrayObject
SPL


The ArrayObject class

(PHP 5, PHP 7)

简介

This class allows objects to work as arrays.

类摘要

ArrayObject implements IteratorAggregate , ArrayAccess , Serializable , Countable {
/* 常量 */
const integer STD_PROP_LIST = 1 ;
const integer ARRAY_AS_PROPS = 2 ;
/* 方法 */
public __construct ([ mixed $input = [] [, int $flags = 0 [, string $iterator_class = "ArrayIterator" ]]] )
public void append ( mixed $value )
public void asort ( void )
public int count ( void )
public array exchangeArray ( mixed $input )
public array getArrayCopy ( void )
public int getFlags ( void )
public ArrayIterator getIterator ( void )
public string getIteratorClass ( void )
public void ksort ( void )
public void natcasesort ( void )
public void natsort ( void )
public bool offsetExists ( mixed $index )
public mixed offsetGet ( mixed $index )
public void offsetSet ( mixed $index , mixed $newval )
public void offsetUnset ( mixed $index )
public string serialize ( void )
public void setFlags ( int $flags )
public void setIteratorClass ( string $iterator_class )
public void uasort ( callable $cmp_function )
public void uksort ( callable $cmp_function )
public void unserialize ( string $serialized )
}

预定义常量

ArrayObject Flags

ArrayObject::STD_PROP_LIST

Properties of the object have their normal functionality when accessed as list (var_dump, foreach, etc.).

ArrayObject::ARRAY_AS_PROPS

Entries can be accessed as properties (read and write).

更新日志

版本 | 说明
5.3.0 | Implements Serializable.

Table of Contents

  • ArrayObject::append — 追加新的值作为最后一个元素。
  • ArrayObject::asort — Sort the entries by value
  • ArrayObject::__construct — Construct a new array object
  • ArrayObject::count — 统计 ArrayObject 内 public 属性的数量
  • ArrayObject::exchangeArray — Exchange the array for another one.
  • ArrayObject::getArrayCopy — Creates a copy of the ArrayObject.
  • ArrayObject::getFlags — Gets the behavior flags.
  • ArrayObject::getIterator — Create a new iterator from an ArrayObject instance
  • ArrayObject::getIteratorClass — Gets the iterator classname for the ArrayObject.
  • ArrayObject::ksort — Sort the entries by key
  • ArrayObject::natcasesort — Sort an array using a case insensitive "natural order" algorithm
  • ArrayObject::natsort — Sort entries using a "natural order" algorithm
  • ArrayObject::offsetExists — Returns whether the requested index exists
  • ArrayObject::offsetGet — Returns the value at the specified index
  • ArrayObject::offsetSet — 为指定索引设定新的值
  • ArrayObject::offsetUnset — Unsets the value at the specified index
  • ArrayObject::serialize — Serialize an ArrayObject
  • ArrayObject::setFlags — Sets the behavior flags.
  • ArrayObject::setIteratorClass — Sets the iterator classname for the ArrayObject.
  • ArrayObject::uasort — Sort the entries with a user-defined comparison function and maintain key association
  • ArrayObject::uksort — Sort the entries by keys using a user-defined comparison function
  • ArrayObject::unserialize — Unserialize an ArrayObject
各种类及接口
ArrayObject::append
各种类及接口


追加新的值作为最后一个元素。

ArrayObject
ArrayObject::asort
ArrayObject
PHP Manual

ArrayObject::append

(PHP 5 >= 5.0.0, PHP 7)

ArrayObject::append — 追加新的值作为最后一个元素。

说明

public void ArrayObject::append ( mixed $value )

追加新的值作为最后一个元素。

Note:

当 ArrayObject 从 object 初始化时不能调用此方法。使用 ArrayObject::offsetSet() 代替。

参数

value

将要被追加的值

返回值

没有返回值。

范例

Example #1 ArrayObject::append() 例子

<?php
$arrayobj = new ArrayObject(array('first','second','third'));
$arrayobj->append('fourth');
$arrayobj->append(array('five', 'six'));
var_dump($arrayobj);
?>

以上例程会输出：

object(ArrayObject)#1 (5) {
  [0]=>
  string(5) "first"
  [1]=>
  string(6) "second"
  [2]=>
  string(5) "third"
  [3]=>
  string(6) "fourth"
  [4]=>
  array(2) {
    [0]=>
    string(4) "five"
    [1]=>
    string(3) "six"
  }
}

参见

  • ArrayObject::offsetSet() - 为指定索引设定新的值

ArrayObject
ArrayObject::asort
ArrayObject


Sort the entries by value

ArrayObject::append
ArrayObject::__construct
ArrayObject
PHP Manual

ArrayObject::asort

(PHP 5 >= 5.2.0, PHP 7)

ArrayObject::asort — Sort the entries by value

说明

public void ArrayObject::asort ( void )

Sorts the entries such that the keys maintain their correlation with the entries they are associated with. This is used mainly when sorting associative arrays where the actual element order is significant.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 ArrayObject::asort() example

<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
$fruitArrayObject = new ArrayObject($fruits);
$fruitArrayObject->asort();

foreach ($fruitArrayObject as $key => $val) {
    echo "$key = $val\n";
}
?>

以上例程会输出：

c = apple
b = banana
d = lemon
a = orange

The fruits have been sorted in alphabetical order, and the key associated with each entry has been maintained.

参见

  • ArrayObject::ksort() - Sort the entries by key
  • ArrayObject::natsort() - Sort entries using a "natural order" algorithm
  • ArrayObject::natcasesort() - Sort an array using a case insensitive "natural order" algorithm
  • ArrayObject::uasort() - Sort the entries with a user-defined comparison function and maintain key association
  • ArrayObject::uksort() - Sort the entries by keys using a user-defined comparison function

ArrayObject::append
ArrayObject::__construct
ArrayObject


Construct a new array object

ArrayObject::asort
ArrayObject::count
ArrayObject
PHP Manual

ArrayObject::__construct

(PHP 5 >= 5.0.0, PHP 7)

ArrayObject::__construct — Construct a new array object

说明

public ArrayObject::__construct ([ mixed $input = [] [, int $flags = 0 [, string $iterator_class = "ArrayIterator" ]]] )

This constructs a new array object.

参数

input

The input parameter accepts an array or an Object.

flags

Flags to control the behaviour of the ArrayObject object. See ArrayObject::setFlags().

iterator_class

Specify the class that will be used for iteration of the ArrayObject object.

返回值

Returns an ArrayObject object on success.

错误／异常

Throws InvalidArgumentException when:

  • input is not an array or object
  • flags is not an integer
  • iterator_class is not an object that implements Iterator

范例

Example #1 ArrayObject::__construct() example

<?php
$array = array('1' => 'one',
               '2' => 'two',
               '3' => 'three');

$arrayobject = new ArrayObject($array);

var_dump($arrayobject);
?>

以上例程会输出：

object(ArrayObject)#1 (3) {
  [1]=>
  string(3) "one"
  [2]=>
  string(3) "two"
  [3]=>
  string(5) "three"
}

参见

  • ArrayObject::setflags() - Sets the behavior flags.

ArrayObject::asort
ArrayObject::count
ArrayObject


统计 ArrayObject 内 public 属性的数量

ArrayObject::__construct
ArrayObject::exchangeArray
ArrayObject
PHP Manual

ArrayObject::count

(PHP 5 >= 5.0.0, PHP 7)

ArrayObject::count — 统计 ArrayObject 内 public 属性的数量

说明

public int ArrayObject::count ( void )

获取 ArrayObject 的 public 属性数量

参数

此函数没有参数。

返回值

对象 ArrayObject 的 public 属性数量

Note:

当对象 ArrayObject 是从数组构造而来时，所有属性都是 public 的。

范例

Example #1 ArrayObject::count() 例子

<?php
class Example {
    public $public = 'prop:public';
    private $prv   = 'prop:private';
    protected $prt = 'prop:protected';
}

$arrayobj = new ArrayObject(new Example());
var_dump($arrayobj->count());

$arrayobj = new ArrayObject(array('first','second','third'));
var_dump($arrayobj->count());
?>

以上例程会输出：

int(1)
int(3)

ArrayObject::__construct
ArrayObject::exchangeArray
ArrayObject


Exchange the array for another one.

ArrayObject::count
ArrayObject::getArrayCopy
ArrayObject
PHP Manual

ArrayObject::exchangeArray

(PHP 5 >= 5.1.0, PHP 7)

ArrayObject::exchangeArray — Exchange the array for another one.

说明

public array ArrayObject::exchangeArray ( mixed $input )

Exchange the current array with another array or object.

参数

input

The new array or object to exchange with the current array.

返回值

Returns the old array.

范例

Example #1 ArrayObject::exchangeArray() example

<?php
// Array of available fruits
$fruits = array("lemons" => 1, "oranges" => 4, "bananas" => 5, "apples" => 10);
// Array of locations in Europe
$locations = array('Amsterdam', 'Paris', 'London');

$fruitsArrayObject = new ArrayObject($fruits);

// Now exchange fruits for locations
$old = $fruitsArrayObject->exchangeArray($locations);
print_r($old);
print_r($fruitsArrayObject);

?>

以上例程会输出：

Array
(
    [lemons] => 1
    [oranges] => 4
    [bananas] => 5
    [apples] => 10
)
ArrayObject Object
(
    [0] => Amsterdam
    [1] => Paris
    [2] => London
)

ArrayObject::count
ArrayObject::getArrayCopy
ArrayObject


Creates a copy of the ArrayObject.

ArrayObject::exchangeArray
ArrayObject::getFlags
ArrayObject
PHP Manual

ArrayObject::getArrayCopy

(PHP 5 >= 5.0.0, PHP 7)

ArrayObject::getArrayCopy — Creates a copy of the ArrayObject.

说明

public array ArrayObject::getArrayCopy ( void )

Exports the ArrayObject to an array.

参数

此函数没有参数。

返回值

Returns a copy of the array. When the ArrayObject refers to an object an array of the public properties of that object will be returned.

范例

Example #1 ArrayObject::getArrayCopy() example

<?php
// Array of available fruits
$fruits = array("lemons" => 1, "oranges" => 4, "bananas" => 5, "apples" => 10);

$fruitsArrayObject = new ArrayObject($fruits);
$fruitsArrayObject['pears'] = 4;

// create a copy of the array
$copy = $fruitsArrayObject->getArrayCopy();
print_r($copy);

?>

以上例程会输出：

Array
(
    [lemons] => 1
    [oranges] => 4
    [bananas] => 5
    [apples] => 10
    [pears] => 4
)

ArrayObject::exchangeArray
ArrayObject::getFlags
ArrayObject


Gets the behavior flags.

ArrayObject::getArrayCopy
ArrayObject::getIterator
ArrayObject
PHP Manual

ArrayObject::getFlags

(PHP 5 >= 5.1.0, PHP 7)

ArrayObject::getFlags — Gets the behavior flags.

说明

public int ArrayObject::getFlags ( void )

Gets the behavior flags of the ArrayObject. See the ArrayObject::setFlags method for a list of the available flags.

参数

此函数没有参数。

返回值

Returns the behavior flags of the ArrayObject.

范例

Example #1 ArrayObject::getFlags() example

<?php
// Array of available fruits
$fruits = array("lemons" => 1, "oranges" => 4, "bananas" => 5, "apples" => 10);

$fruitsArrayObject = new ArrayObject($fruits);

// Get the current flags
$flags = $fruitsArrayObject->getFlags();
var_dump($flags);

// Set new flags
$fruitsArrayObject->setFlags(ArrayObject::ARRAY_AS_PROPS);

// Get the new flags
$flags = $fruitsArrayObject->getFlags();
var_dump($flags);
?>

以上例程会输出：

int(0)
int(2)

参见

  • The ArrayObject::setFlags method

ArrayObject::getArrayCopy
ArrayObject::getIterator
ArrayObject


Create a new iterator from an ArrayObject instance

ArrayObject::getFlags
ArrayObject::getIteratorClass
ArrayObject
PHP Manual

ArrayObject::getIterator

(PHP 5 >= 5.0.0, PHP 7)

ArrayObject::getIterator — Create a new iterator from an ArrayObject instance

说明

public ArrayIterator ArrayObject::getIterator ( void )

Create a new iterator from an ArrayObject instance.

参数

此函数没有参数。

返回值

An iterator from an ArrayObject.

范例

Example #1 ArrayObject::getIterator() example

<?php
$array = array('1' => 'one',
               '2' => 'two',
               '3' => 'three');

$arrayobject = new ArrayObject($array);

$iterator = $arrayobject->getIterator();

while($iterator->valid()) {
    echo $iterator->key() . ' => ' . $iterator->current() . "\n";

    $iterator->next();
}
?>

以上例程会输出：

1 => one
2 => two
3 => three

ArrayObject::getFlags
ArrayObject::getIteratorClass
ArrayObject


Gets the iterator classname for the ArrayObject.

ArrayObject::getIterator
ArrayObject::ksort
ArrayObject
PHP Manual

ArrayObject::getIteratorClass

(PHP 5 >= 5.1.0, PHP 7)

ArrayObject::getIteratorClass — Gets the iterator classname for the ArrayObject.

说明

public string ArrayObject::getIteratorClass ( void )

Gets the class name of the array iterator that is used by ArrayObject::getIterator().

参数

此函数没有参数。

返回值

Returns the iterator class name that is used to iterate over this object.

范例

Example #1 ArrayObject::getIteratorClass() example

<?php
// Custom ArrayIterator (inherits from ArrayIterator)
class MyArrayIterator extends ArrayIterator {
    // custom implementation
}

// Array of available fruits
$fruits = array("lemons" => 1, "oranges" => 4, "bananas" => 5, "apples" => 10);

$fruitsArrayObject = new ArrayObject($fruits);

// Get the current class name
$className = $fruitsArrayObject->getIteratorClass();
var_dump($className);

// Set new classname
$fruitsArrayObject->setIteratorClass('MyArrayIterator');

// Get the new iterator classname
$className = $fruitsArrayObject->getIteratorClass();
var_dump($className);
?>

以上例程会输出：

string(13) "ArrayIterator"
string(15) "MyArrayIterator"

参见

  • The ArrayObject::setIteratorClass method

ArrayObject::getIterator
ArrayObject::ksort
ArrayObject


Sort the entries by key

ArrayObject::getIteratorClass
ArrayObject::natcasesort
ArrayObject
PHP Manual

ArrayObject::ksort

(PHP 5 >= 5.2.0, PHP 7)

ArrayObject::ksort — Sort the entries by key

说明

public void ArrayObject::ksort ( void )

Sorts the entries by key, maintaining key to entry correlations. This is useful mainly for associative arrays.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 ArrayObject::ksort() example

<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
$fruitArrayObject = new ArrayObject($fruits);
$fruitArrayObject->ksort();

foreach ($fruitArrayObject as $key => $val) {
    echo "$key = $val\n";
}
 ?>

以上例程会输出：

a = orange
b = banana
c = apple
d = lemon

参见

  • ArrayObject::asort() - Sort the entries by value
  • ArrayObject::natsort() - Sort entries using a "natural order" algorithm
  • ArrayObject::natcasesort() - Sort an array using a case insensitive "natural order" algorithm
  • ArrayObject::uasort() - Sort the entries with a user-defined comparison function and maintain key association
  • ArrayObject::uksort() - Sort the entries by keys using a user-defined comparison function

ArrayObject::getIteratorClass
ArrayObject::natcasesort
ArrayObject


Sort an array using a case insensitive "natural order" algorithm

ArrayObject::ksort
ArrayObject::natsort
ArrayObject
PHP Manual

ArrayObject::natcasesort

(PHP 5 >= 5.2.0, PHP 7)

ArrayObject::natcasesort — Sort an array using a case insensitive "natural order" algorithm

说明

public void ArrayObject::natcasesort ( void )

This method is a case insensitive version of ArrayObject::natsort.

This method implements a sort algorithm that orders alphanumeric strings in the way a human being would while maintaining key/value associations. This is described as a "natural ordering".

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 ArrayObject::natcasesort() example

<?php
$array = array('IMG0.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG3.png');

$arr1 = new ArrayObject($array);
$arr2 = clone $arr1;

$arr1->asort();
echo "Standard sorting\n";
print_r($arr1);

$arr2->natcasesort();
echo "\nNatural order sorting (case-insensitive)\n";
print_r($arr2);
?>

以上例程会输出：

Standard sorting
ArrayObject Object
(
    [0] => IMG0.png
    [5] => IMG3.png
    [4] => img1.png
    [2] => img10.png
    [1] => img12.png
    [3] => img2.png
)

Natural order sorting (case-insensitive)
ArrayObject Object
(
    [0] => IMG0.png
    [4] => img1.png
    [3] => img2.png
    [5] => IMG3.png
    [2] => img10.png
    [1] => img12.png
)

For more information see: Martin Pool's » Natural Order String Comparison page.

参见

  • ArrayObject::asort() - Sort the entries by value
  • ArrayObject::ksort() - Sort the entries by key
  • ArrayObject::natsort() - Sort entries using a "natural order" algorithm
  • ArrayObject::uasort() - Sort the entries with a user-defined comparison function and maintain key association
  • ArrayObject::uksort() - Sort the entries by keys using a user-defined comparison function

ArrayObject::ksort
ArrayObject::natsort
ArrayObject


Sort entries using a "natural order" algorithm

ArrayObject::natcasesort
ArrayObject::offsetExists
ArrayObject
PHP Manual

ArrayObject::natsort

(PHP 5 >= 5.2.0, PHP 7)

ArrayObject::natsort — Sort entries using a "natural order" algorithm

说明

public void ArrayObject::natsort ( void )

This method implements a sort algorithm that orders alphanumeric strings in the way a human being would while maintaining key/value associations. This is described as a "natural ordering". An example of the difference between this algorithm and the regular computer string sorting algorithms (used in ArrayObject::asort) method can be seen in the example below.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 ArrayObject::natsort() example

<?php
$array = array("img12.png", "img10.png", "img2.png", "img1.png");

$arr1 = new ArrayObject($array);
$arr2 = clone $arr1;

$arr1->asort();
echo "Standard sorting\n";
print_r($arr1);

$arr2->natsort();
echo "\nNatural order sorting\n";
print_r($arr2);
?>

以上例程会输出：

Standard sorting
ArrayObject Object
(
    [3] => img1.png
    [1] => img10.png
    [0] => img12.png
    [2] => img2.png
)

Natural order sorting
ArrayObject Object
(
    [3] => img1.png
    [2] => img2.png
    [1] => img10.png
    [0] => img12.png
)

For more information see: Martin Pool's » Natural Order String Comparison page.

参见

  • ArrayObject::asort() - Sort the entries by value
  • ArrayObject::ksort() - Sort the entries by key
  • ArrayObject::natcasesort() - Sort an array using a case insensitive "natural order" algorithm
  • ArrayObject::uasort() - Sort the entries with a user-defined comparison function and maintain key association
  • ArrayObject::uksort() - Sort the entries by keys using a user-defined comparison function

ArrayObject::natcasesort
ArrayObject::offsetExists
ArrayObject


Returns whether the requested index exists

ArrayObject::natsort
ArrayObject::offsetGet
ArrayObject
PHP Manual

ArrayObject::offsetExists

(PHP 5 >= 5.0.0, PHP 7)

ArrayObject::offsetExists — Returns whether the requested index exists

说明

public bool ArrayObject::offsetExists ( mixed $index )

参数

index

The index being checked.

返回值

TRUE if the requested index exists, otherwise FALSE

范例

Example #1 ArrayObject::offsetExists() example

<?php
$arrayobj = new ArrayObject(array('zero', 'one', 'example'=>'e.g.'));
var_dump($arrayobj->offsetExists(1));
var_dump($arrayobj->offsetExists('example'));
var_dump($arrayobj->offsetExists('notfound'));
?>

以上例程会输出：

bool(true)
bool(true)
bool(false)

ArrayObject::natsort
ArrayObject::offsetGet
ArrayObject


Returns the value at the specified index

ArrayObject::offsetExists
ArrayObject::offsetSet
ArrayObject
PHP Manual

ArrayObject::offsetGet

(PHP 5 >= 5.0.0, PHP 7)

ArrayObject::offsetGet — Returns the value at the specified index

说明

public mixed ArrayObject::offsetGet ( mixed $index )

参数

index

The index with the value.

返回值

The value at the specified index or NULL.

错误／异常

Produces an E_NOTICE error message when the specified index does not exist.

范例

Example #1 ArrayObject::offsetGet() example

<?php
$arrayobj = new ArrayObject(array('zero', 7, 'example'=>'e.g.'));
var_dump($arrayobj->offsetGet(1));
var_dump($arrayobj->offsetGet('example'));
var_dump($arrayobj->offsetExists('notfound'));
?>

以上例程会输出：

int(7)
string(4) "e.g."
bool(false)

ArrayObject::offsetExists
ArrayObject::offsetSet
ArrayObject


为指定索引设定新的值

ArrayObject::offsetGet
ArrayObject::offsetUnset
ArrayObject
PHP Manual

ArrayObject::offsetSet

(PHP 5 >= 5.0.0, PHP 7)

ArrayObject::offsetSet — 为指定索引设定新的值

说明

public void ArrayObject::offsetSet ( mixed $index , mixed $newval )

设置指定的索引为新的值

参数

index

将要被设置的索引

newval

参数 index 所对应的新值。

返回值

没有返回值。

范例

Example #1 ArrayObject::offsetSet() 例子

<?php
class Example {
    public $property = 'prop:public';
}
$arrayobj = new ArrayObject(new Example());
$arrayobj->offsetSet(4, 'four');
$arrayobj->offsetSet('group', array('g1', 'g2'));
var_dump($arrayobj);

$arrayobj = new ArrayObject(array('zero','one'));
$arrayobj->offsetSet(null, 'last');
var_dump($arrayobj);
?>

以上例程会输出：

object(ArrayObject)#1 (3) {
  ["property"]=>
  string(11) "prop:public"
  [4]=>
  string(4) "four"
  ["group"]=>
  array(2) {
    [0]=>
    string(2) "g1"
    [1]=>
    string(2) "g2"
  }
}
object(ArrayObject)#3 (3) {
  [0]=>
  string(4) "zero"
  [1]=>
  string(3) "one"
  [2]=>
  string(4) "last"
}

参见

  • ArrayObject::append() - 追加新的值作为最后一个元素。

ArrayObject::offsetGet
ArrayObject::offsetUnset
ArrayObject


Unsets the value at the specified index

ArrayObject::offsetSet
ArrayObject::serialize
ArrayObject
PHP Manual

ArrayObject::offsetUnset

(PHP 5 >= 5.0.0, PHP 7)

ArrayObject::offsetUnset — Unsets the value at the specified index

说明

public void ArrayObject::offsetUnset ( mixed $index )

Unsets the value at the specified index.

参数

index

The index being unset.

返回值

没有返回值。

范例

Example #1 ArrayObject::offsetUnset() example

<?php
$arrayobj = new ArrayObject(array(0=>'zero',2=>'two'));
$arrayobj->offsetUnset(2);
var_dump($arrayobj);
?>

以上例程会输出：

object(ArrayObject)#1 (1) {
  [0]=>
  string(4) "zero"
}

ArrayObject::offsetSet
ArrayObject::serialize
ArrayObject


Serialize an ArrayObject

ArrayObject::offsetUnset
ArrayObject::setFlags
ArrayObject
PHP Manual

ArrayObject::serialize

(PHP 5 >= 5.3.0, PHP 7)

ArrayObject::serialize — Serialize an ArrayObject

说明

public string ArrayObject::serialize ( void )

Serializes an ArrayObject.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The serialized representation of the ArrayObject.

范例

Example #1 ArrayObject::serialize() example

<?php
$o = new ArrayObject();

$s1 = serialize($o);
$s2 = $o->serialize();

var_dump($s1);
var_dump($s2);
?>

以上例程会输出：

string(45) "C:11:"ArrayObject":21:{x:i:0;a:0:{};m:a:0:{}}"
string(21) "x:i:0;a:0:{};m:a:0:{}"

参见

  • ArrayObject::unserialize() - Unserialize an ArrayObject
  • serialize() - 产生一个可存储的值的表示
  • Serializing Objects

ArrayObject::offsetUnset
ArrayObject::setFlags
ArrayObject


Sets the behavior flags.

ArrayObject::serialize
ArrayObject::setIteratorClass
ArrayObject
PHP Manual

ArrayObject::setFlags

(PHP 5 >= 5.1.0, PHP 7)

ArrayObject::setFlags — Sets the behavior flags.

说明

public void ArrayObject::setFlags ( int $flags )

Set the flags that change the behavior of the ArrayObject.

参数

flags

The new ArrayObject behavior. It takes on either a bitmask, or named constants. Using named constants is strongly encouraged to ensure compatibility for future versions.

The available behavior flags are listed below. The actual meanings of these flags are described in the predefined constants.

ArrayObject behavior flags
value | constant
1 | ArrayObject::STD_PROP_LIST
2 | ArrayObject::ARRAY_AS_PROPS

返回值

没有返回值。

范例

Example #1 ArrayObject::setFlags() example

<?php
// Array of available fruits
$fruits = array("lemons" => 1, "oranges" => 4, "bananas" => 5, "apples" => 10);

$fruitsArrayObject = new ArrayObject($fruits);

// Try to use array key as property
var_dump($fruitsArrayObject->lemons);
// Set the flag so that the array keys can be used as properties of the ArrayObject
$fruitsArrayObject->setFlags(ArrayObject::ARRAY_AS_PROPS);
// Try it again
var_dump($fruitsArrayObject->lemons);
?>

以上例程会输出：

NULL
int(1)

ArrayObject::serialize
ArrayObject::setIteratorClass
ArrayObject


Sets the iterator classname for the ArrayObject.

ArrayObject::setFlags
ArrayObject::uasort
ArrayObject
PHP Manual

ArrayObject::setIteratorClass

(PHP 5 >= 5.1.0, PHP 7)

ArrayObject::setIteratorClass — Sets the iterator classname for the ArrayObject.

说明

public void ArrayObject::setIteratorClass ( string $iterator_class )

Sets the classname of the array iterator that is used by ArrayObject::getIterator().

参数

iterator_class

The classname of the array iterator to use when iterating over this object.

返回值

没有返回值。

范例

Example #1 ArrayObject::setIteratorClass() example

<?php
// Custom ArrayIterator (inherits from ArrayIterator)
class MyArrayIterator extends ArrayIterator {
    // custom implementation
}

// Array of available fruits
$fruits = array("lemons" => 1, "oranges" => 4, "bananas" => 5, "apples" => 10);

$fruitsArrayObject = new ArrayObject($fruits);

// Set the iterator classname to the newly
$fruitsArrayObject->setIteratorClass('MyArrayIterator');
print_r($fruitsArrayObject->getIterator());

?>

以上例程会输出：

MyArrayIterator Object
(
    [lemons] => 1
    [oranges] => 4
    [bananas] => 5
    [apples] => 10
)

ArrayObject::setFlags
ArrayObject::uasort
ArrayObject


Sort the entries with a user-defined comparison function and maintain key association

ArrayObject::setIteratorClass
ArrayObject::uksort
ArrayObject
PHP Manual

ArrayObject::uasort

(PHP 5 >= 5.2.0, PHP 7)

ArrayObject::uasort — Sort the entries with a user-defined comparison function and maintain key association

说明

public void ArrayObject::uasort ( callable $cmp_function )

This function sorts the entries such that keys maintain their correlation with the entry that they are associated with, using a user-defined comparison function.

This is used mainly when sorting associative arrays where the actual element order is significant.

参数

cmp_function

Function cmp_function should accept two parameters which will be filled by pairs of entries. The comparison function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.

返回值

没有返回值。

范例

Example #1 ArrayObject::uasort() example

<?php
// Comparison function
function cmp($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

// Array to be sorted
$array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4);
$arrayObject = new ArrayObject($array);
print_r($arrayObject);

// Sort and print the resulting array
$arrayObject->uasort('cmp');
print_r($arrayObject);
?>

以上例程会输出：

Array
(
    [a] => 4
    [b] => 8
    [c] => -1
    [d] => -9
    [e] => 2
    [f] => 5
    [g] => 3
    [h] => -4
)
Array
(
    [d] => -9
    [h] => -4
    [c] => -1
    [e] => 2
    [g] => 3
    [a] => 4
    [f] => 5
    [b] => 8
)

参见

  • ArrayObject::asort() - Sort the entries by value
  • ArrayObject::ksort() - Sort the entries by key
  • ArrayObject::natsort() - Sort entries using a "natural order" algorithm
  • ArrayObject::natcasesort() - Sort an array using a case insensitive "natural order" algorithm
  • ArrayObject::uksort() - Sort the entries by keys using a user-defined comparison function

ArrayObject::setIteratorClass
ArrayObject::uksort
ArrayObject


Sort the entries by keys using a user-defined comparison function

ArrayObject::uasort
ArrayObject::unserialize
ArrayObject
PHP Manual

ArrayObject::uksort

(PHP 5 >= 5.2.0, PHP 7)

ArrayObject::uksort — Sort the entries by keys using a user-defined comparison function

说明

public void ArrayObject::uksort ( callable $cmp_function )

This function sorts the keys of the entries using a user-supplied comparison function. The key to entry correlations will be maintained.

参数

cmp_function

The callback comparison function.

Function cmp_function should accept two parameters which will be filled by pairs of entry keys. The comparison function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.

返回值

没有返回值。

范例

Example #1 ArrayObject::uksort() example

<?php
function cmp($a, $b) {
    $a = preg_replace('@^(a|an|the) @', '', $a);
    $b = preg_replace('@^(a|an|the) @', '', $b);
    return strcasecmp($a, $b);
}

$array = array("John" => 1, "the Earth" => 2, "an apple" => 3, "a banana" => 4);
$arrayObject = new ArrayObject($array);
$arrayObject->uksort('cmp');

foreach ($arrayObject as $key => $value) {
    echo "$key: $value\n";
}
?>

以上例程会输出：

an apple: 3
a banana: 4
the Earth: 2
John: 1

参见

  • ArrayObject::asort() - Sort the entries by value
  • ArrayObject::ksort() - Sort the entries by key
  • ArrayObject::natsort() - Sort entries using a "natural order" algorithm
  • ArrayObject::natcasesort() - Sort an array using a case insensitive "natural order" algorithm
  • ArrayObject::uasort() - Sort the entries with a user-defined comparison function and maintain key association

ArrayObject::uasort
ArrayObject::unserialize
ArrayObject


Unserialize an ArrayObject

ArrayObject::uksort
SplObserver
ArrayObject
PHP Manual

ArrayObject::unserialize

(PHP 5 >= 5.3.0, PHP 7)

ArrayObject::unserialize — Unserialize an ArrayObject

说明

public void ArrayObject::unserialize ( string $serialized )

Unserializes a serialized ArrayObject.

Warning

本函数还未编写文档，仅有参数列表。

参数

serialized

The serialized ArrayObject.

返回值

The unserialized ArrayObject.

参见

  • ArrayIterator::serialize() - Serialize
  • unserialize() - 从已存储的表示中创建 PHP 的值
  • Serializing Objects

ArrayObject::uksort
SplObserver
ArrayObject


The SplObserver interface

(PHP 5 >= 5.1.0, PHP 7)

简介

The SplObserver interface is used alongside SplSubject to implement the Observer Design Pattern.

接口摘要

SplObserver {
/* 方法 */
abstract public void update ( SplSubject $subject )
}

Table of Contents

  • SplObserver::update — Receive update from subject
ArrayObject::unserialize
SplObserver::update
各种类及接口


Receive update from subject

SplObserver
SplSubject
SplObserver
PHP Manual

SplObserver::update

(PHP 5 >= 5.1.0, PHP 7)

SplObserver::update — Receive update from subject

说明

abstract public void SplObserver::update ( SplSubject $subject )

This method is called when any SplSubject to which the observer is attached calls SplSubject::notify().

Warning

本函数还未编写文档，仅有参数列表。

参数

subject

The SplSubject notifying the observer of an update.

返回值

没有返回值。

SplObserver
SplSubject
SplObserver


The SplSubject interface

(PHP 5 >= 5.1.0, PHP 7)

简介

The SplSubject interface is used alongside SplObserver to implement the Observer Design Pattern.

接口摘要

SplSubject {
/* 方法 */
abstract public void attach ( SplObserver $observer )
abstract public void detach ( SplObserver $observer )
abstract public void notify ( void )
}

Table of Contents

  • SplSubject::attach — Attach an SplObserver
  • SplSubject::detach — Detach an observer
  • SplSubject::notify — Notify an observer
SplObserver::update
SplSubject::attach
各种类及接口


Attach an SplObserver

SplSubject
SplSubject::detach
SplSubject
PHP Manual

SplSubject::attach

(PHP 5 >= 5.1.0, PHP 7)

SplSubject::attach — Attach an SplObserver

说明

abstract public void SplSubject::attach ( SplObserver $observer )

Attaches an SplObserver so that it can be notified of updates.

Warning

本函数还未编写文档，仅有参数列表。

参数

observer

The SplObserver to attach.

返回值

没有返回值。

SplSubject
SplSubject::detach
SplSubject


Detach an observer

SplSubject::attach
SplSubject::notify
SplSubject
PHP Manual

SplSubject::detach

(PHP 5 >= 5.1.0, PHP 7)

SplSubject::detach — Detach an observer

说明

abstract public void SplSubject::detach ( SplObserver $observer )

Detaches an observer from the subject to no longer notify it of updates.

Warning

本函数还未编写文档，仅有参数列表。

参数

observer

The SplObserver to detach.

返回值

没有返回值。

SplSubject::attach
SplSubject::notify
SplSubject


Notify an observer

SplSubject::detach
SPL Types
SplSubject
PHP Manual

SplSubject::notify

(PHP 5 >= 5.1.0, PHP 7)

SplSubject::notify — Notify an observer

说明

abstract public void SplSubject::notify ( void )

Notifies all attached observers.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

SplSubject::detach
SPL Types
SplSubject


SPL Type Handling

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • SplType — The SplType class
    • SplType::__construct — Creates a new value of some type
  • SplInt — The SplInt class
  • SplFloat — The SplFloat class
  • SplEnum — The SplEnum class
    • SplEnum::getConstList — Returns all consts (possible values) as an array.
  • SplBool — The SplBool class
  • SplString — The SplString class
SplSubject::notify
简介
其它基本扩展


简介

This extension aims at helping people making PHP a stronger typed language and can be a good alternative to scalar type hinting. It provides different typehandling classes as such as integer, float, bool, enum and string

Warning

此扩展是实验性 的。 此扩展的表象，包括其函数名称以及其他此扩展的相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本扩展风险自担 。

SPL Types
安装／配置
SPL Types


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
SPL Types


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/SPL_Types.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


资源类型

此扩展没有定义资源类型。

运行时配置
SplType
安装／配置


The SplType class

(PECL spl_types >= 0.1.0)

简介

Parent class for all SPL types.

类摘要

abstract SplType {
/* Constants */
const NULL __default = null ;
/* 方法 */
__construct ([ mixed $initial_value [, bool $strict ]] )
}

预定义常量

SplType::__default

Table of Contents

  • SplType::__construct — Creates a new value of some type
资源类型
SplType::__construct
SPL Types


Creates a new value of some type

SplType
SplInt
SplType
PHP Manual

SplType::__construct

(PECL spl_types >= 0.1.0)

SplType::__construct — Creates a new value of some type

说明

SplType::__construct ([ mixed $initial_value [, bool $strict ]] )

Warning

本函数还未编写文档，仅有参数列表。

参数

initial_value

Type and default value depends on the extension class.

strict

Whether to set the object's sctrictness.

错误／异常

Throws an UnexpectedValueException if incompatible type is given.

SplType
SplInt
SplType


The SplInt class

(PECL spl_types >= 0.1.0)

简介

The SplInt class is used to enforce strong typing of the integer type.

类摘要

SplInt extends SplType {
/* Constants */
const integer __default = 0 ;
/* 继承的方法 */
SplType::__construct ([ mixed $initial_value [, bool $strict ]] )
}

预定义常量

SplInt::__default

范例

Example #1 SplInt usage example

<?php
$int = new SplInt(94);

try {
    $int = 'Try to cast a string value for fun';
} catch (UnexpectedValueException $uve) {
    echo $uve->getMessage() . PHP_EOL;
}

echo $int . PHP_EOL;
?>

以上例程会输出：

Value not an integer
94

SplType::__construct
SplFloat
SPL Types


The SplFloat class

(PECL spl_types >= 0.1.0)

简介

The SplFloat class is used to enforce strong typing of the float type.

类摘要

SplFloat extends SplType {
/* Constants */
const float __default = 0 ;
/* 继承的方法 */
SplType::__construct ([ mixed $initial_value [, bool $strict ]] )
}

预定义常量

SplFloat::__default

范例

Example #1 SplFloat usage example

<?php
$float = new SplFloat(3.154);
$newFloat = new SplFloat(3);

try {
    $float = 'Try to cast a string value for fun';
} catch (UnexpectedValueException $uve) {
    echo $uve->getMessage() . PHP_EOL;
}

echo $float . PHP_EOL;
echo $newFloat . PHP_EOL;
?>

以上例程会输出：

Value not a float
3.154
3

SplInt
SplEnum
SPL Types


The SplEnum class

(PECL spl_types >= 0.1.0)

简介

SplEnum gives the ability to emulate and create enumeration objects natively in PHP.

类摘要

SplEnum extends SplType {
/* Constants */
const NULL __default = null ;
/* 方法 */
public array getConstList ([ bool $include_default = false ] )
/* 继承的方法 */
SplType::__construct ([ mixed $initial_value [, bool $strict ]] )
}

预定义常量

SplEnum::__default

范例

Example #1 SplEnum usage example

<?php
class Month extends SplEnum {
    const __default = self::January;

    const January = 1;
    const February = 2;
    const March = 3;
    const April = 4;
    const May = 5;
    const June = 6;
    const July = 7;
    const August = 8;
    const September = 9;
    const October = 10;
    const November = 11;
    const December = 12;
}

echo new Month(Month::June) . PHP_EOL;

try {
    new Month(13);
} catch (UnexpectedValueException $uve) {
    echo $uve->getMessage() . PHP_EOL;
}
?>

以上例程会输出：

6
Value not a const in enum Month

Table of Contents

  • SplEnum::getConstList — Returns all consts (possible values) as an array.
SplFloat
SplEnum::getConstList
SPL Types


Returns all consts (possible values) as an array.

SplEnum
SplBool
SplEnum
PHP Manual

SplEnum::getConstList

(PECL spl_types >= 0.1.0)

SplEnum::getConstList — Returns all consts (possible values) as an array.

说明

public array SplEnum::getConstList ([ bool $include_default = false ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

include_default

Whether to include __default property.

返回值

范例

Example #1 SplEnum::getConstList() example

<?php
$bool = new SplBool;
var_dump($bool->getConstList(true));
?>

以上例程会输出：

array(3) {
  ["__default"]=>
  bool(false)
  ["false"]=>
  bool(false)
  ["true"]=>
  bool(true)
}

SplEnum
SplBool
SplEnum


The SplBool class

(PECL spl_types >= 0.1.0)

简介

The SplBool class is used to enforce strong typing of the bool type.

类摘要

SplBool extends SplEnum {
/* Constants */
const boolean __default = false ;
const boolean false = false ;
const boolean true = true ;
/* 继承的方法 */
public array SplEnum::getConstList ([ bool $include_default = false ] )
}

预定义常量

SplBool::__default

SplBool::false

SplBool::true

范例

Example #1 SplBool usage example

<?php
$true = new SplBool(true);
if ($true) {
    echo "TRUE\n";
}

$false = new SplBool;
if ($false) {
    echo "FALSE\n";
}
?>

以上例程会输出：

TRUE

SplEnum::getConstList
SplString
SPL Types


The SplString class

(PECL spl_types >= 0.1.0)

简介

The SplString class is used to enforce strong typing of the string type.

类摘要

SplString extends SplType {
/* Constants */
const string __default = '' ;
/* 继承的方法 */
SplType::__construct ([ mixed $initial_value [, bool $strict ]] )
}

预定义常量

SplString::__default

范例

Example #1 SplString usage example

<?php
$string = new SplString("Testing");

try {
    $string = array();
} catch (UnexpectedValueException $uve) {
    echo $uve->getMessage() . PHP_EOL;
}

var_dump($string);
echo $string; // Outputs "Testing"
?>

以上例程会输出：

Value not a string
object(SplString)#1 (1) {
  ["__default"]=>
  string(7) "Testing"
}
Testing

SplBool
Streams
SPL Types


Streams

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • Stream Classes
  • 预定义常量
  • Stream Filters
  • Stream Contexts
  • Stream Errors
  • 范例
    • Example class registered as stream wrapper
  • php_user_filter — The php_user_filter class
    • php_user_filter::filter — Called when applying the filter
    • php_user_filter::onClose — Called when closing the filter
    • php_user_filter::onCreate — Called when creating the filter
  • streamWrapper — The streamWrapper class
    • streamWrapper::__construct — Constructs a new stream wrapper
    • streamWrapper::__destruct — Destructs an existing stream wrapper
    • streamWrapper::dir_closedir — Close directory handle
    • streamWrapper::dir_opendir — Open directory handle
    • streamWrapper::dir_readdir — Read entry from directory handle
    • streamWrapper::dir_rewinddir — Rewind directory handle
    • streamWrapper::mkdir — Create a directory
    • streamWrapper::rename — Renames a file or directory
    • streamWrapper::rmdir — Removes a directory
    • streamWrapper::stream_cast — Retrieve the underlaying resource
    • streamWrapper::stream_close — Close a resource
    • streamWrapper::stream_eof — Tests for end-of-file on a file pointer
    • streamWrapper::stream_flush — Flushes the output
    • streamWrapper::stream_lock — Advisory file locking
    • streamWrapper::stream_metadata — Change stream metadata
    • streamWrapper::stream_open — Opens file or URL
    • streamWrapper::stream_read — Read from stream
    • streamWrapper::stream_seek — Seeks to specific location in a stream
    • streamWrapper::stream_set_option — Change stream options
    • streamWrapper::stream_stat — Retrieve information about a file resource
    • streamWrapper::stream_tell — Retrieve the current position of a stream
    • streamWrapper::stream_truncate — Truncate stream
    • streamWrapper::stream_write — Write to stream
    • streamWrapper::unlink — Delete a file
    • streamWrapper::url_stat — Retrieve information about a file
  • Stream 函数
    • set_socket_blocking — 别名 stream_set_blocking
    • stream_bucket_append — Append bucket to brigade
    • stream_bucket_make_writeable — Return a bucket object from the brigade for operating on
    • stream_bucket_new — Create a new bucket for use on the current stream
    • stream_bucket_prepend — Prepend bucket to brigade
    • stream_context_create — 创建资源流上下文
    • stream_context_get_default — Retrieve the default stream context
    • stream_context_get_options — 获取资源流/数据包/上下文的参数
    • stream_context_get_params — Retrieves parameters from a context
    • stream_context_set_default — Set the default stream context
    • stream_context_set_option — 对资源流、数据包或者上下文设置参数
    • stream_context_set_params — Set parameters for a stream/wrapper/context
    • stream_copy_to_stream — Copies data from one stream to another
    • stream_encoding — 设置数据流的字符集
    • stream_filter_append — Attach a filter to a stream
    • stream_filter_prepend — Attach a filter to a stream
    • stream_filter_register — Register a user defined stream filter
    • stream_filter_remove — 从资源流里移除某个过滤器
    • stream_get_contents — 读取资源流到一个字符串
    • stream_get_filters — 获取已注册的数据流过滤器列表
    • stream_get_line — 从资源流里读取一行直到给定的定界符
    • stream_get_meta_data — 从封装协议文件指针中取得报头／元数据
    • stream_get_transports — 获取已注册的套接字传输协议列表
    • stream_get_wrappers — 获取已注册的流类型
    • stream_is_local — Checks if a stream is a local stream
    • stream_notification_callback — A callback function for the notification context parameter
    • stream_register_wrapper — 别名 stream_wrapper_register
    • stream_resolve_include_path — Resolve filename against the include path
    • stream_select — Runs the equivalent of the select() system call on the given arrays of streams with a timeout specified by tv_sec and tv_usec
    • stream_set_blocking — 为资源流设置阻塞或者阻塞模式
    • stream_set_chunk_size — 设置资源流区块大小
    • stream_set_read_buffer — Set read file buffering on the given stream
    • stream_set_timeout — Set timeout period on a stream
    • stream_set_write_buffer — Sets write file buffering on the given stream
    • stream_socket_accept — 接受由 stream_socket_server 创建的套接字连接
    • stream_socket_client — Open Internet or Unix domain socket connection
    • stream_socket_enable_crypto — Turns encryption on/off on an already connected socket
    • stream_socket_get_name — 获取本地或者远程的套接字名称
    • stream_socket_pair — 创建一对完全一样的网络套接字连接流
    • stream_socket_recvfrom — Receives data from a socket, connected or not
    • stream_socket_sendto — Sends a message to a socket, whether it is connected or not
    • stream_socket_server — Create an Internet or Unix domain server socket
    • stream_socket_shutdown — Shutdown a full-duplex connection
    • stream_supports_lock — Tells whether the stream supports locking.
    • stream_wrapper_register — 注册一个用 PHP 类实现的 URL 封装协议
    • stream_wrapper_restore — Restores a previously unregistered built-in wrapper
    • stream_wrapper_unregister — Unregister a URL wrapper
SplString
简介
其它基本扩展


简介

Streams are the way of generalizing file, network, data compression, and other operations which share a common set of functions and uses. In its simplest definition, a stream is a resource object which exhibits streamable behavior. That is, it can be read from or written to in a linear fashion, and may be able to fseek() to an arbitrary locations within the stream.

A wrapper is additional code which tells the stream how to handle specific protocols/encodings. For example, the http wrapper knows how to translate a URL into an HTTP/1.0 request for a file on a remote server. There are many wrappers built into PHP by default (See 支持的协议和封装协议), and additional, custom wrappers may be added either within a PHP script using stream_wrapper_register(), or directly from an extension using the API Reference in 流的使用. Because any variety of wrapper may be added to PHP, there is no set limit on what can be done with them. To access the list of currently registered wrappers, use stream_get_wrappers().

A stream is referenced as: scheme://target

  • scheme(string) - The name of the wrapper to be used. Examples include: file, http, https, ftp, ftps, compress.zlib, compress.bz2, and php. See 支持的协议和封装协议 for a list of PHP built-in wrappers. If no wrapper is specified, the function default is used (typically file://).
  • target - Depends on the wrapper used. For filesystem related streams this is typically a path and filename of the desired file. For network related streams this is typically a hostname, often with a path appended. Again, see 支持的协议和封装协议 for a description of targets for built-in streams.

Note:

Information on using streams within the PHP source code can be found in the Streams API for PHP Extension Authors reference.

Streams
安装／配置
Streams


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • Stream Classes
简介
需求
Streams


安装

Streams are an integral part of PHP as of version 4.3.0. No steps are required to enable them.

需求
运行时配置
安装／配置


运行时配置

此扩展没有在 php.ini 中定义配置指令。

安装
Stream Classes
安装／配置


Stream Classes

User designed wrappers can be registered via stream_wrapper_register(), using the class definition shown on that manual page.

Class php_user_filter is predefined and is an abstract baseclass for use with user defined filters. See the manual page for stream_filter_register() for details on implementing user defined filters.

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

Constant | Description
STREAM_FILTER_READ * | Used with stream_filter_append() and stream_filter_prepend() to indicate that the specified filter should only be applied when reading
STREAM_FILTER_WRITE * | Used with stream_filter_append() and stream_filter_prepend() to indicate that the specified filter should only be applied when writing
STREAM_FILTER_ALL * | This constant is equivalent to STREAM_FILTER_READ | STREAM_FILTER_WRITE
PSFS_PASS_ON * | Return Code indicating that the userspace filter returned buckets in $out.
PSFS_FEED_ME * | Return Code indicating that the userspace filter did not return buckets in $out (i.e. No data available).
PSFS_ERR_FATAL * | Return Code indicating that the userspace filter encountered an unrecoverable error (i.e. Invalid data received).
PSFS_FLAG_NORMAL | Regular read/write.
PSFS_FLAG_FLUSH_INC | An incremental flush.
PSFS_FLAG_FLUSH_CLOSE | Final flush prior to closing.
STREAM_USE_PATH | Flag indicating if the stream used the include path.
STREAM_REPORT_ERRORS | Flag indicating if the wrapper is responsible for raising errors using trigger_error() during opening of the stream. If this flag is not set, you should not raise any errors.
STREAM_CLIENT_ASYNC_CONNECT * | Open client socket asynchronously. This option must be used together with the STREAM_CLIENT_CONNECT flag. Used with stream_socket_client().
STREAM_CLIENT_CONNECT * | Open client socket connection. Client sockets should always include this flag. Used with stream_socket_client().
STREAM_CLIENT_PERSISTENT * | Client socket opened with stream_socket_client() should remain persistent between page loads.
STREAM_SERVER_BIND * | Tells a stream created with stream_socket_server() to bind to the specified target. Server sockets should always include this flag.
STREAM_SERVER_LISTEN * | Tells a stream created with stream_socket_server() and bound using the STREAM_SERVER_BIND flag to start listening on the socket. Connection-orientated transports (such as TCP) must use this flag, otherwise the server socket will not be enabled. Using this flag for connect-less transports (such as UDP) is an error.
STREAM_NOTIFY_RESOLVE * | A remote address required for this stream has been resolved, or the resolution failed. See severity for an indication of which happened.
STREAM_NOTIFY_CONNECT | A connection with an external resource has been established.
STREAM_NOTIFY_AUTH_REQUIRED | Additional authorization is required to access the specified resource. Typical issued with severity level of STREAM_NOTIFY_SEVERITY_ERR.
STREAM_NOTIFY_MIME_TYPE_IS | The mime-type of resource has been identified, refer to message for a description of the discovered type.
STREAM_NOTIFY_FILE_SIZE_IS | The size of the resource has been discovered.
STREAM_NOTIFY_REDIRECTED | The external resource has redirected the stream to an alternate location. Refer to message.
STREAM_NOTIFY_PROGRESS | Indicates current progress of the stream transfer in bytes_transferred and possibly bytes_max as well.
STREAM_NOTIFY_COMPLETED * | There is no more data available on the stream.
STREAM_NOTIFY_FAILURE | A generic error occurred on the stream, consult message and message_code for details.
STREAM_NOTIFY_AUTH_RESULT | Authorization has been completed (with or without success).
STREAM_NOTIFY_SEVERITY_INFO | Normal, non-error related, notification.
STREAM_NOTIFY_SEVERITY_WARN | Non critical error condition. Processing may continue.
STREAM_NOTIFY_SEVERITY_ERR | A critical error occurred. Processing cannot continue.
STREAM_IPPROTO_ICMP + | Provides a ICMP socket.
STREAM_IPPROTO_IP + | Provides a IP socket.
STREAM_IPPROTO_RAW + | Provides a RAW socket.
STREAM_IPPROTO_TCP + | Provides a TCP socket.
STREAM_IPPROTO_UDP + | Provides a UDP socket.
STREAM_PF_INET + | Internet Protocol Version 4 (IPv4).
STREAM_PF_INET6 + | Internet Protocol Version 6 (IPv6).
STREAM_PF_UNIX + | Unix system internal protocols.
STREAM_SOCK_DGRAM + | Provides datagrams, which are connectionless messages (UDP, for example).
STREAM_SOCK_RAW + | Provides a raw socket, which provides access to internal network protocols and interfaces. Usually this type of socket is just available to the root user.
STREAM_SOCK_RDM + | Provides a RDM (Reliably-delivered messages) socket.
STREAM_SOCK_SEQPACKET + | Provides a sequenced packet stream socket.
STREAM_SOCK_STREAM + | Provides sequenced, two-way byte streams with a transmission mechanism for out-of-band data (TCP, for example).
STREAM_SHUT_RD | Used with stream_socket_shutdown() to disable further receptions. Added in PHP 5.2.1.
STREAM_SHUT_WR | Used with stream_socket_shutdown() to disable further transmissions. Added in PHP 5.2.1.
STREAM_SHUT_RDWR | Used with stream_socket_shutdown() to disable further receptions and transmissions. Added in PHP 5.2.1.
STREAM_CAST_FOR_SELECT | Stream casting, for when stream_select() is calling stream_cast().
STREAM_CAST_AS_STREAM | Stream casting, when stream_cast() is called otherwise (see above).
STREAM_META_TOUCH | Used with stream_metadata(), to specify touch() call.
STREAM_META_OWNER | Used with stream_metadata(), to specify chown() call.
STREAM_META_OWNER_NAME | Used with stream_metadata(), to specify chown() call.
STREAM_META_GROUP | Used with stream_metadata(), to specify chgrp() call.
STREAM_META_GROUP_NAME | Used with stream_metadata(), to specify chgrp() call.
STREAM_META_ACCESS | Used with stream_metadata(), to specify chmod() call.

Note: The constants marked with * are just available since PHP 5.0.0.

Note: The constants marked with + are available since PHP 5.1.0 and are meant to be used with stream_socket_pair(). Please note that some of these constants might not be available in your system.

Note: The STREAM_META_* constants are available since PHP 5.4.0 and are meant to be used with stream_metadata().

Stream Classes
Stream Filters
Streams


Stream Filters

A filter is a final piece of code which may perform operations on data as it is being read from or written to a stream. Any number of filters may be stacked onto a stream. Custom filters can be defined in a PHP script using stream_filter_register() or in an extension using the API Reference in 流的使用. To access the list of currently registered filters, use stream_get_filters().

预定义常量
Stream Contexts
Streams


Stream Contexts

A context is a set of parameters and wrapper specific options which modify or enhance the behavior of a stream. Contexts are created using stream_context_create() and can be passed to most filesystem related stream creation functions (i.e. fopen(), file(), file_get_contents(), etc...).

Options can be specified when calling stream_context_create(), or later using stream_context_set_option(). A list of wrapper specific options can be found in the 上下文（Context）选项和参数 chapter.

Parameters can be specified for contexts using the stream_context_set_params() function.

Stream Filters
Stream Errors
Streams


Stream Errors

As with any file or socket related function, an operation on a stream may fail for a variety of normal reasons (i.e.: Unable to connect to remote host, file not found, etc...). A stream related call may also fail because the desired stream is not registered on the running system. See the array returned by stream_get_wrappers() for a list of streams supported by your installation of PHP. As with most PHP internal functions if a failure occurs an E_WARNING message will be generated describing the nature of the error.

Stream Contexts
范例
Streams


范例

Table of Contents

  • Example class registered as stream wrapper

Example #1 Using file_get_contents() to retrieve data from multiple sources

<?php
/* Read local file from /home/bar */
$localfile = file_get_contents("/home/bar/foo.txt");

/* Identical to above, explicitly naming FILE scheme */
$localfile = file_get_contents("file:///home/bar/foo.txt");

/* Read remote file from www.example.com using HTTP */
$httpfile  = file_get_contents("http://www.example.com/foo.txt");

/* Read remote file from www.example.com using HTTPS */
$httpsfile = file_get_contents("https://www.example.com/foo.txt");

/* Read remote file from ftp.example.com using FTP */
$ftpfile   = file_get_contents("ftp://user:pass@ftp.example.com/foo.txt");

/* Read remote file from ftp.example.com using FTPS */
$ftpsfile  = file_get_contents("ftps://user:pass@ftp.example.com/foo.txt");
?>

Example #2 Making a POST request to an https server

<?php
/* Send POST request to https://secure.example.com/form_action.php
* Include form elements named "foo" and "bar" with dummy values
*/

$sock = fsockopen("ssl://secure.example.com", 443, $errno, $errstr, 30);
if (!$sock) die("$errstr ($errno)\n");

$data = "foo=" . urlencode("Value for Foo") . "&bar=" . urlencode("Value for Bar");

fwrite($sock, "POST /form_action.php HTTP/1.0\r\n");
fwrite($sock, "Host: secure.example.com\r\n");
fwrite($sock, "Content-type: application/x-www-form-urlencoded\r\n");
fwrite($sock, "Content-length: " . strlen($data) . "\r\n");
fwrite($sock, "Accept: */*\r\n");
fwrite($sock, "\r\n");
fwrite($sock, $data);

$headers = "";
while ($str = trim(fgets($sock, 4096)))
$headers .= "$str\n";

echo "\n";

$body = "";
while (!feof($sock))
$body .= fgets($sock, 4096);

fclose($sock);
?>

Example #3 Writing data to a compressed file

<?php
/* Create a compressed file containing an arbitrarty string
* File can be read back using compress.zlib stream or just
* decompressed from the command line using 'gzip -d foo-bar.txt.gz'
*/
$fp = fopen("compress.zlib://foo-bar.txt.gz", "wb");
if (!$fp) die("Unable to create file.");

fwrite($fp, "This is a test.\n");

fclose($fp);
?>

Stream Errors
Example class registered as stream wrapper
Streams


Example class registered as stream wrapper

The example below implements a var:// protocol handler that allows read/write access to a named global variable using standard filesystem stream functions such as fread(). The var:// protocol implemented below, given the URL "var://foo" will read/write data to/from $GLOBALS["foo"].

Example #1 A Stream for reading/writing global variables

<?php

class VariableStream {
    var $position;
    var $varname;

    function stream_open($path, $mode, $options, &$opened_path)
    {
        $url = parse_url($path);
        $this->varname = $url["host"];
        $this->position = 0;

        return true;
    }

    function stream_read($count)
    {
        $ret = substr($GLOBALS[$this->varname], $this->position, $count);
        $this->position += strlen($ret);
        return $ret;
    }

    function stream_write($data)
    {
        $left = substr($GLOBALS[$this->varname], 0, $this->position);
        $right = substr($GLOBALS[$this->varname], $this->position + strlen($data));
        $GLOBALS[$this->varname] = $left . $data . $right;
        $this->position += strlen($data);
        return strlen($data);
    }

    function stream_tell()
    {
        return $this->position;
    }

    function stream_eof()
    {
        return $this->position >= strlen($GLOBALS[$this->varname]);
    }

    function stream_seek($offset, $whence)
    {
        switch ($whence) {
            case SEEK_SET:
                if ($offset < strlen($GLOBALS[$this->varname]) && $offset >= 0) {
                     $this->position = $offset;
                     return true;
                } else {
                     return false;
                }
                break;

            case SEEK_CUR:
                if ($offset >= 0) {
                     $this->position += $offset;
                     return true;
                } else {
                     return false;
                }
                break;

            case SEEK_END:
                if (strlen($GLOBALS[$this->varname]) + $offset >= 0) {
                     $this->position = strlen($GLOBALS[$this->varname]) + $offset;
                     return true;
                } else {
                     return false;
                }
                break;

            default:
                return false;
        }
    }

    function stream_metadata($path, $option, $var)
    {
        if($option == STREAM_META_TOUCH) {
            $url = parse_url($path);
            $varname = $url["host"];
            if(!isset($GLOBALS[$varname])) {
                $GLOBALS[$varname] = '';
            }
            return true;
        }
        return false;
    }
}

stream_wrapper_register("var", "VariableStream")
    or die("Failed to register protocol");

$myvar = "";

$fp = fopen("var://myvar", "r+");

fwrite($fp, "line1\n");
fwrite($fp, "line2\n");
fwrite($fp, "line3\n");

rewind($fp);
while (!feof($fp)) {
    echo fgets($fp);
}
fclose($fp);
var_dump($myvar);

?>

以上例程会输出：

line1
line2
line3
string(18) "line1
line2
line3
"

范例
php_user_filter
范例


The php_user_filter class

(PHP 5, PHP 7)

简介

Children of this class are passed to stream_filter_register().

类摘要

php_user_filter {
/* 属性 */
public $filtername ;
public $params ;
/* 方法 */
public int filter ( resource $in , resource $out , int &$consumed , bool $closing )
public void onClose ( void )
public bool onCreate ( void )
}

属性

filtername

Name of the filter registered by stream_filter_append().

params

Table of Contents

  • php_user_filter::filter — Called when applying the filter
  • php_user_filter::onClose — Called when closing the filter
  • php_user_filter::onCreate — Called when creating the filter
Example class registered as stream wrapper
php_user_filter::filter
Streams


Called when applying the filter

php_user_filter
php_user_filter::onClose
php_user_filter
PHP Manual

php_user_filter::filter

(PHP 5, PHP 7)

php_user_filter::filter — Called when applying the filter

说明

public int php_user_filter::filter ( resource $in , resource $out , int &$consumed , bool $closing )

This method is called whenever data is read from or written to the attached stream (such as with fread() or fwrite()).

参数

in

in is a resource pointing to a bucket brigade which contains one or more bucket objects containing data to be filtered.

out

out is a resource pointing to a second bucket brigade into which your modified buckets should be placed.

consumed

consumed, which must always be declared by reference, should be incremented by the length of the data which your filter reads in and alters. In most cases this means you will increment consumed by $bucket->datalen for each $bucket.

closing

If the stream is in the process of closing (and therefore this is the last pass through the filterchain), the closing parameter will be set to TRUE.

返回值

The filter() method must return one of three values upon completion.

Return Value | Meaning
PSFS_PASS_ON | Filter processed successfully with data available in the out bucket brigade.
PSFS_FEED_ME | Filter processed successfully, however no data was available to return. More data is required from the stream or prior filter.
PSFS_ERR_FATAL (default) | The filter experienced an unrecoverable error and cannot continue.

php_user_filter
php_user_filter::onClose
php_user_filter


Called when closing the filter

php_user_filter::filter
php_user_filter::onCreate
php_user_filter
PHP Manual

php_user_filter::onClose

(PHP 5, PHP 7)

php_user_filter::onClose — Called when closing the filter

说明

public void php_user_filter::onClose ( void )

This method is called upon filter shutdown (typically, this is also during stream shutdown), and is executed after the flush method is called. If any resources were allocated or initialized during onCreate() this would be the time to destroy or dispose of them.

参数

此函数没有参数。

返回值

Return value is ignored.

php_user_filter::filter
php_user_filter::onCreate
php_user_filter


Called when creating the filter

php_user_filter::onClose
streamWrapper
php_user_filter
PHP Manual

php_user_filter::onCreate

(PHP 5, PHP 7)

php_user_filter::onCreate — Called when creating the filter

说明

public bool php_user_filter::onCreate ( void )

This method is called during instantiation of the filter class object. If your filter allocates or initializes any other resources (such as a buffer), this is the place to do it.

When your filter is first instantiated, and yourfilter->onCreate() is called, a number of properties will be available as shown in the table below.

Property | Contents
FilterClass->filtername | A string containing the name the filter was instantiated with. Filters may be registered under multiple names or under wildcards. Use this property to determine which name was used.
FilterClass->params | The contents of the params parameter passed to stream_filter_append() or stream_filter_prepend().
FilterClass->stream | The stream resource being filtered. Maybe available only during filter() calls when the closing parameter is set to FALSE.

参数

此函数没有参数。

返回值

Your implementation of this method should return FALSE on failure, or TRUE on success.

php_user_filter::onClose
streamWrapper
php_user_filter


The streamWrapper class

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

简介

Allows you to implement your own protocol handlers and streams for use with all the other filesystem functions (such as fopen(), fread() etc.).

Note:

This is NOT a real class, only a prototype of how a class defining its own protocol should be.

Note:

Implementing the methods in other ways then described here can lead to undefined behaviour.

An instance of this class is initialized as soon as a stream function tries to access the protocol it is associated with.

类摘要

streamWrapper {
/* 属性 */
public resource $context ;
/* 方法 */
__construct ( void )
__destruct ( void )
public bool dir_closedir ( void )
public bool dir_opendir ( string $path , int $options )
public string dir_readdir ( void )
public bool dir_rewinddir ( void )
public bool mkdir ( string $path , int $mode , int $options )
public bool rename ( string $path_from , string $path_to )
public bool rmdir ( string $path , int $options )
public resource stream_cast ( int $cast_as )
public void stream_close ( void )
public bool stream_eof ( void )
public bool stream_flush ( void )
public bool stream_lock ( int $operation )
public bool stream_metadata ( string $path , int $option , mixed $value )
public bool stream_open ( string $path , string $mode , int $options , string &$opened_path )
public string stream_read ( int $count )
public bool stream_seek ( int $offset , int $whence = SEEK_SET )
public bool stream_set_option ( int $option , int $arg1 , int $arg2 )
public array stream_stat ( void )
public int stream_tell ( void )
public bool stream_truncate ( int $new_size )
public int stream_write ( string $data )
public bool unlink ( string $path )
public array url_stat ( string $path , int $flags )
}

属性

resource context

The current context, or NULL if no context was passed to the caller function.

Use the stream_context_get_options() to parse the context.

Note:

This property must be public so PHP can populate it with the actual context resource.

更新日志

版本 | 说明
5.0.0 | Added the context property.

参见

  • Example class registered as stream wrapper
  • stream_wrapper_register()
  • stream_wrapper_unregister()
  • stream_wrapper_restore()

Table of Contents

  • streamWrapper::__construct — Constructs a new stream wrapper
  • streamWrapper::__destruct — Destructs an existing stream wrapper
  • streamWrapper::dir_closedir — Close directory handle
  • streamWrapper::dir_opendir — Open directory handle
  • streamWrapper::dir_readdir — Read entry from directory handle
  • streamWrapper::dir_rewinddir — Rewind directory handle
  • streamWrapper::mkdir — Create a directory
  • streamWrapper::rename — Renames a file or directory
  • streamWrapper::rmdir — Removes a directory
  • streamWrapper::stream_cast — Retrieve the underlaying resource
  • streamWrapper::stream_close — Close a resource
  • streamWrapper::stream_eof — Tests for end-of-file on a file pointer
  • streamWrapper::stream_flush — Flushes the output
  • streamWrapper::stream_lock — Advisory file locking
  • streamWrapper::stream_metadata — Change stream metadata
  • streamWrapper::stream_open — Opens file or URL
  • streamWrapper::stream_read — Read from stream
  • streamWrapper::stream_seek — Seeks to specific location in a stream
  • streamWrapper::stream_set_option — Change stream options
  • streamWrapper::stream_stat — Retrieve information about a file resource
  • streamWrapper::stream_tell — Retrieve the current position of a stream
  • streamWrapper::stream_truncate — Truncate stream
  • streamWrapper::stream_write — Write to stream
  • streamWrapper::unlink — Delete a file
  • streamWrapper::url_stat — Retrieve information about a file
php_user_filter::onCreate
streamWrapper::__construct
Streams


Constructs a new stream wrapper

streamWrapper
streamWrapper::__destruct
streamWrapper
PHP Manual

streamWrapper::__construct

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

streamWrapper::__construct — Constructs a new stream wrapper

说明

streamWrapper::__construct ( void )

Called when opening the stream wrapper, right before streamWrapper::stream_open().

参数

此函数没有参数。

streamWrapper
streamWrapper::__destruct
streamWrapper


Destructs an existing stream wrapper

streamWrapper::__construct
streamWrapper::dir_closedir
streamWrapper
PHP Manual

streamWrapper::__destruct

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

streamWrapper::__destruct — Destructs an existing stream wrapper

说明

streamWrapper::__destruct ( void )

Called when closing the stream wrapper, right before streamWrapper::stream_flush().

参数

此函数没有参数。

streamWrapper::__construct
streamWrapper::dir_closedir
streamWrapper


Close directory handle

streamWrapper::__destruct
streamWrapper::dir_opendir
streamWrapper
PHP Manual

streamWrapper::dir_closedir

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

streamWrapper::dir_closedir — Close directory handle

说明

public bool streamWrapper::dir_closedir ( void )

This method is called in response to closedir().

Any resources which were locked, or allocated, during opening and use of the directory stream should be released.

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • closedir() - 关闭目录句柄
  • streamWrapper::dir_opendir() - Open directory handle

streamWrapper::__destruct
streamWrapper::dir_opendir
streamWrapper


Open directory handle

streamWrapper::dir_closedir
streamWrapper::dir_readdir
streamWrapper
PHP Manual

streamWrapper::dir_opendir

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

streamWrapper::dir_opendir — Open directory handle

说明

public bool streamWrapper::dir_opendir ( string $path , int $options )

This method is called in response to opendir().

参数

path

Specifies the URL that was passed to opendir().

Note:

The URL can be broken apart with parse_url().

options

Whether or not to enforce safe_mode (0x04).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • opendir() - 打开目录句柄
  • streamWrapper::dir_closedir() - Close directory handle
  • parse_url() - 解析 URL，返回其组成部分

streamWrapper::dir_closedir
streamWrapper::dir_readdir
streamWrapper


Read entry from directory handle

streamWrapper::dir_opendir
streamWrapper::dir_rewinddir
streamWrapper
PHP Manual

streamWrapper::dir_readdir

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

streamWrapper::dir_readdir — Read entry from directory handle

说明

public string streamWrapper::dir_readdir ( void )

This method is called in response to readdir().

参数

此函数没有参数。

返回值

Should return string representing the next filename, or FALSE if there is no next file.

Note:

The return value will be casted to string.

错误／异常

调用此方法失败将给出 E_WARNING（未实现）。

范例

Example #1 Listing files from tar archives

<?php
class streamWrapper {
    protected $fp;

    public function dir_opendir($path, $options) {
        $url = parse_url($path);

        $path = $url["host"] . $url["path"];

        if (!is_readable($path)) {
            trigger_error("$path isn't readable for me", E_USER_NOTICE);
            return false;
        }
        if (!is_file($path)) {
            trigger_error("$path isn't a file", E_USER_NOTICE);
            return false;
        }

        $this->fp = fopen($path, "rb");
        return true;
    }

    public function dir_readdir() {
        // Extract the header for this entry
        $header      = fread($this->fp, 512);
        $data = unpack("a100filename/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/a1filetype/a100link/a100linkedfile", $header);

        // Trim the filename and filesize
        $filename    = trim($data["filename"]);

        // No filename? We are the end of the archive
        if (!$filename) {
            return false;
        }

        $octal_bytes = trim($data["size"]);
        // Filesize is defined in octects
        $bytes       = octdec($octal_bytes);

        // tar rounds up filesizes up to multiple of 512 bytes (zero filled)
        $rest        = $bytes % 512;
        if ($rest > 0) {
            $bytes      += 512 - $rest;
        }

        // Seek over the file
        fseek($this->fp, $bytes, SEEK_CUR);

        return $filename;
    }

    public function dir_closedir() {
        return fclose($this->fp);
    }

    public function dir_rewinddir() {
        return fseek($this->fp, 0, SEEK_SET);
    }
}

stream_wrapper_register("tar", "streamWrapper");
$handle = opendir("tar://example.tar");
while (false !== ($file = readdir($handle))) {
    var_dump($file);
}

echo "Rewinding..\n";
rewind($handle);
var_dump(readdir($handle));

closedir($handle);
?>

以上例程的输出类似于：

string(13) "construct.xml"
string(16) "dir-closedir.xml"
string(15) "dir-opendir.xml"
string(15) "dir-readdir.xml"
string(17) "dir-rewinddir.xml"
string(9) "mkdir.xml"
string(10) "rename.xml"
string(9) "rmdir.xml"
string(15) "stream-cast.xml"
string(16) "stream-close.xml"
string(14) "stream-eof.xml"
string(16) "stream-flush.xml"
string(15) "stream-lock.xml"
string(15) "stream-open.xml"
string(15) "stream-read.xml"
string(15) "stream-seek.xml"
string(21) "stream-set-option.xml"
string(15) "stream-stat.xml"
string(15) "stream-tell.xml"
string(16) "stream-write.xml"
string(10) "unlink.xml"
string(12) "url-stat.xml"
Rewinding..
string(13) "construct.xml"

参见

  • readdir() - 从目录句柄中读取条目

streamWrapper::dir_opendir
streamWrapper::dir_rewinddir
streamWrapper


Rewind directory handle

streamWrapper::dir_readdir
streamWrapper::mkdir
streamWrapper
PHP Manual

streamWrapper::dir_rewinddir

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

streamWrapper::dir_rewinddir — Rewind directory handle

说明

public bool streamWrapper::dir_rewinddir ( void )

This method is called in response to rewinddir().

Should reset the output generated by streamWrapper::dir_readdir(). i.e.: The next call to streamWrapper::dir_readdir() should return the first entry in the location returned by streamWrapper::dir_opendir().

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • rewinddir() - 倒回目录句柄
  • streamWrapper::dir_readdir() - Read entry from directory handle

streamWrapper::dir_readdir
streamWrapper::mkdir
streamWrapper


Create a directory

streamWrapper::dir_rewinddir
streamWrapper::rename
streamWrapper
PHP Manual

streamWrapper::mkdir

(PHP 5, PHP 7)

streamWrapper::mkdir — Create a directory

说明

public bool streamWrapper::mkdir ( string $path , int $mode , int $options )

This method is called in response to mkdir().

Note:

In order for the appropriate error message to be returned this method should not be defined if the wrapper does not support creating directories.

参数

path

Directory which should be created.

mode

The value passed to mkdir().

options

A bitwise mask of values, such as STREAM_MKDIR_RECURSIVE.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

调用此方法失败将给出 E_WARNING（未实现）。

注释

Note:

当合法的上下文传递给调用函数时，属性 streamWrapper::$context 会被改变。

参见

  • mkdir() - 新建目录
  • streamwrapper::rmdir() - Removes a directory

streamWrapper::dir_rewinddir
streamWrapper::rename
streamWrapper


Renames a file or directory

streamWrapper::mkdir
streamWrapper::rmdir
streamWrapper
PHP Manual

streamWrapper::rename

(PHP 5, PHP 7)

streamWrapper::rename — Renames a file or directory

说明

public bool streamWrapper::rename ( string $path_from , string $path_to )

This method is called in response to rename().

Should attempt to rename path_from to path_to

Note:

In order for the appropriate error message to be returned this method should not be defined if the wrapper does not support renaming files.

参数

path_from

The URL to the current file.

path_to

The URL which the path_from should be renamed to.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

调用此方法失败将给出 E_WARNING（未实现）。

注释

Note:

当合法的上下文传递给调用函数时，属性 streamWrapper::$context 会被改变。

参见

  • rename() - 重命名一个文件或目录

streamWrapper::mkdir
streamWrapper::rmdir
streamWrapper


Removes a directory

streamWrapper::rename
streamWrapper::stream_cast
streamWrapper
PHP Manual

streamWrapper::rmdir

(PHP 5, PHP 7)

streamWrapper::rmdir — Removes a directory

说明

public bool streamWrapper::rmdir ( string $path , int $options )

This method is called in response to rmdir().

Note:

In order for the appropriate error message to be returned this method should not be defined if the wrapper does not support removing directories.

参数

path

The directory URL which should be removed.

options

A bitwise mask of values, such as STREAM_MKDIR_RECURSIVE.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

调用此方法失败将给出 E_WARNING（未实现）。

注释

Note:

当合法的上下文传递给调用函数时，属性 streamWrapper::$context 会被改变。

参见

  • rmdir() - 删除目录
  • streamwrapper::mkdir() - Create a directory
  • streamwrapper::unlink() - Delete a file

streamWrapper::rename
streamWrapper::stream_cast
streamWrapper


Retrieve the underlaying resource

streamWrapper::rmdir
streamWrapper::stream_close
streamWrapper
PHP Manual

streamWrapper::stream_cast

(PHP 5 >= 5.3.0, PHP 7)

streamWrapper::stream_cast — Retrieve the underlaying resource

说明

public resource streamWrapper::stream_cast ( int $cast_as )

This method is called in response to stream_select().

参数

cast_as

Can be STREAM_CAST_FOR_SELECT when stream_select() is calling stream_cast() or STREAM_CAST_AS_STREAM when stream_cast() is called for other uses.

返回值

Should return the underlying stream resource used by the wrapper, or FALSE.

参见

  • stream_select() - Runs the equivalent of the select() system call on the given arrays of streams with a timeout specified by tv_sec and tv_usec

streamWrapper::rmdir
streamWrapper::stream_close
streamWrapper


Close a resource

streamWrapper::stream_cast
streamWrapper::stream_eof
streamWrapper
PHP Manual

streamWrapper::stream_close

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

streamWrapper::stream_close — Close a resource

说明

public void streamWrapper::stream_close ( void )

This method is called in response to fclose().

All resources that were locked, or allocated, by the wrapper should be released.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • fclose() - 关闭一个已打开的文件指针
  • streamWrapper::dir_closedir() - Close directory handle

streamWrapper::stream_cast
streamWrapper::stream_eof
streamWrapper


Tests for end-of-file on a file pointer

streamWrapper::stream_close
streamWrapper::stream_flush
streamWrapper
PHP Manual

streamWrapper::stream_eof

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

streamWrapper::stream_eof — Tests for end-of-file on a file pointer

说明

public bool streamWrapper::stream_eof ( void )

This method is called in response to feof().

参数

此函数没有参数。

返回值

Should return TRUE if the read/write position is at the end of the stream and if no more data is available to be read, or FALSE otherwise.

注释

Warning

When reading the whole file (for example, with file_get_contents()), PHP will call streamWrapper::stream_read() followed by streamWrapper::stream_eof() in a loop but as long as streamWrapper::stream_read() returns a non-empty string, the return value of streamWrapper::stream_eof() is ignored.

参见

  • feof() - 测试文件指针是否到了文件结束的位置

streamWrapper::stream_close
streamWrapper::stream_flush
streamWrapper


Flushes the output

streamWrapper::stream_eof
streamWrapper::stream_lock
streamWrapper
PHP Manual

streamWrapper::stream_flush

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

streamWrapper::stream_flush — Flushes the output

说明

public bool streamWrapper::stream_flush ( void )

This method is called in response to fflush() and when the stream is being closed while any unflushed data has been written to it before.

If you have cached data in your stream but not yet stored it into the underlying storage, you should do so now.

参数

此函数没有参数。

返回值

Should return TRUE if the cached data was successfully stored (or if there was no data to store), or FALSE if the data could not be stored.

注释

Note:

If not implemented, FALSE is assumed as the return value.

参见

  • fflush() - 将缓冲内容输出到文件

streamWrapper::stream_eof
streamWrapper::stream_lock
streamWrapper


Advisory file locking

streamWrapper::stream_flush
streamWrapper::stream_metadata
streamWrapper
PHP Manual

streamWrapper::stream_lock

(PHP 5, PHP 7)

streamWrapper::stream_lock — Advisory file locking

说明

public bool streamWrapper::stream_lock ( int $operation )

This method is called in response to flock(), when file_put_contents() (when flags contains LOCK_EX), stream_set_blocking() and when closing the stream (LOCK_UN).

参数

operation

operation is one of the following:

  • LOCK_SH to acquire a shared lock (reader).
  • LOCK_EX to acquire an exclusive lock (writer).
  • LOCK_UN to release a lock (shared or exclusive).
  • LOCK_NB if you don't want flock() to block while locking. (not supported on Windows)

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Emits E_WARNING if call to this method fails (i.e. not implemented).

参见

  • stream_set_blocking() - 为资源流设置阻塞或者阻塞模式
  • flock() - 轻便的咨询文件锁定

streamWrapper::stream_flush
streamWrapper::stream_metadata
streamWrapper


Change stream metadata

streamWrapper::stream_lock
streamWrapper::stream_open
streamWrapper
PHP Manual

streamWrapper::stream_metadata

(PHP 5 >= 5.4.0, PHP 7)

streamWrapper::stream_metadata — Change stream metadata

说明

public bool streamWrapper::stream_metadata ( string $path , int $option , mixed $value )

This method is called to set metadata on the stream. It is called when one of the following functions is called on a stream URL:

  • touch()
  • chmod()
  • chown()
  • chgrp()
Please note that some of these operations may not be available on your system.

参数

path

The file path or URL to set metadata. Note that in the case of a URL, it must be a :// delimited URL. Other URL forms are not supported.

option

One of:

  • STREAM_META_TOUCH (The method was called in response to touch())
  • STREAM_META_OWNER_NAME (The method was called in response to chown() with string parameter)
  • STREAM_META_OWNER (The method was called in response to chown())
  • STREAM_META_GROUP_NAME (The method was called in response to chgrp())
  • STREAM_META_GROUP (The method was called in response to chgrp())
  • STREAM_META_ACCESS (The method was called in response to chmod())

value

If option is

  • STREAM_META_TOUCH: Array consisting of two arguments of the touch() function.
  • STREAM_META_OWNER_NAME or STREAM_META_GROUP_NAME: The name of the owner user/group as string.
  • STREAM_META_OWNER or STREAM_META_GROUP: The value owner user/group argument as integer.
  • STREAM_META_ACCESS: The argument of the chmod() as integer.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 If option is not implemented, FALSE should be returned.

参见

  • touch() - 设定文件的访问和修改时间
  • chmod() - 改变文件模式
  • chown() - 改变文件的所有者
  • chgrp() - 改变文件所属的组

streamWrapper::stream_lock
streamWrapper::stream_open
streamWrapper


Opens file or URL

streamWrapper::stream_metadata
streamWrapper::stream_read
streamWrapper
PHP Manual

streamWrapper::stream_open

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

streamWrapper::stream_open — Opens file or URL

说明

public bool streamWrapper::stream_open ( string $path , string $mode , int $options , string &$opened_path )

This method is called immediately after the wrapper is initialized (f.e. by fopen() and file_get_contents()).

参数

path

Specifies the URL that was passed to the original function.

Note:

The URL can be broken apart with parse_url(). Note that only URLs delimited by :// are supported. : and :/ while technically valid URLs, are not.

mode

The mode used to open the file, as detailed for fopen().

Note:

Remember to check if the mode is valid for the path requested.

options

Holds additional flags set by the streams API. It can hold one or more of the following values OR'd together.

Flag | Description
STREAM_USE_PATH | If path is relative, search for the resource using the include_path.
STREAM_REPORT_ERRORS | If this flag is set, you are responsible for raising errors using trigger_error() during opening of the stream. If this flag is not set, you should not raise any errors.

opened_path

If the path is opened successfully, and STREAM_USE_PATH is set in options, opened_path should be set to the full path of the file/resource that was actually opened.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

调用此方法失败将给出 E_WARNING（未实现）。

注释

Note:

当合法的上下文传递给调用函数时，属性 streamWrapper::$context 会被改变。

参见

  • fopen() - 打开文件或者 URL
  • parse_url() - 解析 URL，返回其组成部分

streamWrapper::stream_metadata
streamWrapper::stream_read
streamWrapper


Read from stream

streamWrapper::stream_open
streamWrapper::stream_seek
streamWrapper
PHP Manual

streamWrapper::stream_read

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

streamWrapper::stream_read — Read from stream

说明

public string streamWrapper::stream_read ( int $count )

This method is called in response to fread() and fgets().

Note:

Remember to update the read/write position of the stream (by the number of bytes that were successfully read).

参数

count

How many bytes of data from the current position should be returned.

返回值

If there are less than count bytes available, return as many as are available. If no more data is available, return either FALSE or an empty string.

错误／异常

调用此方法失败将给出 E_WARNING（未实现）。

Note:

If the return value is longer then count an E_WARNING error will be emitted, and excess data will be lost.

注释

Note:

streamWrapper::stream_eof() is called directly after calling streamWrapper::stream_read() to check if EOF has been reached. If not implemented, EOF is assumed.

Warning

When reading the whole file (for example, with file_get_contents()), PHP will call streamWrapper::stream_read() followed by streamWrapper::stream_eof() in a loop but as long as streamWrapper::stream_read() returns a non-empty string, the return value of streamWrapper::stream_eof() is ignored.

参见

  • fread() - 读取文件（可安全用于二进制文件）
  • fgets() - 从文件指针中读取一行

streamWrapper::stream_open
streamWrapper::stream_seek
streamWrapper


Seeks to specific location in a stream

streamWrapper::stream_read
streamWrapper::stream_set_option
streamWrapper
PHP Manual

streamWrapper::stream_seek

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

streamWrapper::stream_seek — Seeks to specific location in a stream

说明

public bool streamWrapper::stream_seek ( int $offset , int $whence = SEEK_SET )

This method is called in response to fseek().

The read/write position of the stream should be updated according to the offset and whence.

参数

offset

The stream offset to seek to.

whence

Possible values:

  • SEEK_SET - Set position equal to offset bytes.
  • SEEK_CUR - Set position to current location plus offset.
  • SEEK_END - Set position to end-of-file plus offset.

返回值

Return TRUE if the position was updated, FALSE otherwise.

注释

Note:

If not implemented, FALSE is assumed as the return value.

Note:

Upon success,
streamWrapper::stream_tell() is called directly after
calling streamWrapper::stream_seek(). If
streamWrapper::stream_tell() fails, the return
value to the caller function will be set to FALSE

Note:

Not all seeks operations on the stream will result in this function being called. PHP streams have read buffering enabled by default (see also stream_set_read_buffer()) and seeking may be done by merely moving the buffer pointer.

参见

  • fseek() - 在文件指针中定位

streamWrapper::stream_read
streamWrapper::stream_set_option
streamWrapper


Change stream options

streamWrapper::stream_seek
streamWrapper::stream_stat
streamWrapper
PHP Manual

streamWrapper::stream_set_option

(PHP 5 >= 5.3.0, PHP 7)

streamWrapper::stream_set_option — Change stream options

说明

public bool streamWrapper::stream_set_option ( int $option , int $arg1 , int $arg2 )

This method is called to set options on the stream.

参数

option

One of:

  • STREAM_OPTION_BLOCKING (The method was called in response to stream_set_blocking())
  • STREAM_OPTION_READ_TIMEOUT (The method was called in response to stream_set_timeout())
  • STREAM_OPTION_WRITE_BUFFER (The method was called in response to stream_set_write_buffer())

arg1

If option is

  • STREAM_OPTION_BLOCKING: requested blocking mode (1 meaning block 0 not blocking).
  • STREAM_OPTION_READ_TIMEOUT: the timeout in seconds.
  • STREAM_OPTION_WRITE_BUFFER: buffer mode (STREAM_BUFFER_NONE or STREAM_BUFFER_FULL).

arg2

If option is

  • STREAM_OPTION_BLOCKING: This option is not set.
  • STREAM_OPTION_READ_TIMEOUT: the timeout in microseconds.
  • STREAM_OPTION_WRITE_BUFFER: the requested buffer size.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 If option is not implemented, FALSE should be returned.

参见

  • stream_set_blocking() - 为资源流设置阻塞或者阻塞模式
  • stream_set_timeout() - Set timeout period on a stream
  • stream_set_write_buffer() - Sets write file buffering on the given stream

streamWrapper::stream_seek
streamWrapper::stream_stat
streamWrapper


Retrieve information about a file resource

streamWrapper::stream_set_option
streamWrapper::stream_tell
streamWrapper
PHP Manual

streamWrapper::stream_stat

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

streamWrapper::stream_stat — Retrieve information about a file resource

说明

public array streamWrapper::stream_stat ( void )

This method is called in response to fstat().

参数

此函数没有参数。

返回值

See stat().

错误／异常

调用此方法失败将给出 E_WARNING（未实现）。

参见

  • stat() - 给出文件的信息
  • streamwrapper::url_stat() - Retrieve information about a file

streamWrapper::stream_set_option
streamWrapper::stream_tell
streamWrapper


Retrieve the current position of a stream

streamWrapper::stream_stat
streamWrapper::stream_truncate
streamWrapper
PHP Manual

streamWrapper::stream_tell

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

streamWrapper::stream_tell — Retrieve the current position of a stream

说明

public int streamWrapper::stream_tell ( void )

This method is called in response to fseek() to determine the current position.

参数

此函数没有参数。

返回值

Should return the current position of the stream.

参见

  • streamWrapper::stream_tell()

streamWrapper::stream_stat
streamWrapper::stream_truncate
streamWrapper


Truncate stream

streamWrapper::stream_tell
streamWrapper::stream_write
streamWrapper
PHP Manual

streamWrapper::stream_truncate

(PHP 5 >= 5.4.0, PHP 7)

streamWrapper::stream_truncate — Truncate stream

说明

public bool streamWrapper::stream_truncate ( int $new_size )

Will respond to truncation, e.g., through ftruncate().

参数

new_size

The new size.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ftruncate() - 将文件截断到给定的长度

streamWrapper::stream_tell
streamWrapper::stream_write
streamWrapper


Write to stream

streamWrapper::stream_truncate
streamWrapper::unlink
streamWrapper
PHP Manual

streamWrapper::stream_write

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

streamWrapper::stream_write — Write to stream

说明

public int streamWrapper::stream_write ( string $data )

This method is called in response to fwrite().

Note:

Remember to update the current position of the stream by number of bytes that were successfully written.

参数

data

Should be stored into the underlying stream.

Note:

If there is not enough room in the underlying stream, store as much as possible.

返回值

Should return the number of bytes that were successfully stored, or 0 if none could be stored.

错误／异常

调用此方法失败将给出 E_WARNING（未实现）。

Note:

If the return value is greater the length of data, E_WARNING will be emitted and the return value will truncated to its length.

参见

  • fwrite() - 写入文件（可安全用于二进制文件）

streamWrapper::stream_truncate
streamWrapper::unlink
streamWrapper


Delete a file

streamWrapper::stream_write
streamWrapper::url_stat
streamWrapper
PHP Manual

streamWrapper::unlink

(PHP 5, PHP 7)

streamWrapper::unlink — Delete a file

说明

public bool streamWrapper::unlink ( string $path )

This method is called in response to unlink().

Note:

In order for the appropriate error message to be returned this method should not be defined if the wrapper does not support removing files.

参数

path

The file URL which should be deleted.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

调用此方法失败将给出 E_WARNING（未实现）。

注释

Note:

当合法的上下文传递给调用函数时，属性 streamWrapper::$context 会被改变。

参见

  • unlink() - 删除文件
  • streamWrapper::rmdir() - Removes a directory

streamWrapper::stream_write
streamWrapper::url_stat
streamWrapper


Retrieve information about a file

streamWrapper::unlink
Stream 函数
streamWrapper
PHP Manual

streamWrapper::url_stat

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

streamWrapper::url_stat — Retrieve information about a file

说明

public array streamWrapper::url_stat ( string $path , int $flags )

This method is called in response to all stat() related functions, such as:

  • chmod() (only when safe_mode is enabled)
  • copy()
  • fileperms()
  • fileinode()
  • filesize()
  • fileowner()
  • filegroup()
  • fileatime()
  • filemtime()
  • filectime()
  • filetype()
  • is_writable()
  • is_readable()
  • is_executable()
  • is_file()
  • is_dir()
  • is_link()
  • file_exists()
  • lstat()
  • stat()
  • SplFileInfo::getPerms()
  • SplFileInfo::getInode()
  • SplFileInfo::getSize()
  • SplFileInfo::getOwner()
  • SplFileInfo::getGroup()
  • SplFileInfo::getATime()
  • SplFileInfo::getMTime()
  • SplFileInfo::getCTime()
  • SplFileInfo::getType()
  • SplFileInfo::isWritable()
  • SplFileInfo::isReadable()
  • SplFileInfo::isExecutable()
  • SplFileInfo::isFile()
  • SplFileInfo::isDir()
  • SplFileInfo::isLink()
  • RecursiveDirectoryIterator::hasChildren()

参数

path

The file path or URL to stat. Note that in the case of a URL, it must be a :// delimited URL. Other URL forms are not supported.

flags

Holds additional flags set by the streams API. It can hold one or more of the following values OR'd together.

Flag | Description
STREAM_URL_STAT_LINK | For resources with the ability to link to other resource (such as an HTTP Location: forward, or a filesystem symlink). This flag specified that only information about the link itself should be returned, not the resource pointed to by the link. This flag is set in response to calls to lstat(), is_link(), or filetype().
STREAM_URL_STAT_QUIET | If this flag is set, your wrapper should not raise any errors. If this flag is not set, you are responsible for reporting errors using the trigger_error() function during stating of the path.

返回值

Should return as many elements as stat() does. Unknown or unavailable values should be set to a rational value (usually 0).

错误／异常

调用此方法失败将给出 E_WARNING（未实现）。

注释

Note:

当合法的上下文传递给调用函数时，属性 streamWrapper::$context 会被改变。

参见

  • stat() - 给出文件的信息
  • streamwrapper::stream_stat() - Retrieve information about a file resource

streamWrapper::unlink
Stream 函数
streamWrapper


Stream 函数

Table of Contents

  • set_socket_blocking — 别名 stream_set_blocking
  • stream_bucket_append — Append bucket to brigade
  • stream_bucket_make_writeable — Return a bucket object from the brigade for operating on
  • stream_bucket_new — Create a new bucket for use on the current stream
  • stream_bucket_prepend — Prepend bucket to brigade
  • stream_context_create — 创建资源流上下文
  • stream_context_get_default — Retrieve the default stream context
  • stream_context_get_options — 获取资源流/数据包/上下文的参数
  • stream_context_get_params — Retrieves parameters from a context
  • stream_context_set_default — Set the default stream context
  • stream_context_set_option — 对资源流、数据包或者上下文设置参数
  • stream_context_set_params — Set parameters for a stream/wrapper/context
  • stream_copy_to_stream — Copies data from one stream to another
  • stream_encoding — 设置数据流的字符集
  • stream_filter_append — Attach a filter to a stream
  • stream_filter_prepend — Attach a filter to a stream
  • stream_filter_register — Register a user defined stream filter
  • stream_filter_remove — 从资源流里移除某个过滤器
  • stream_get_contents — 读取资源流到一个字符串
  • stream_get_filters — 获取已注册的数据流过滤器列表
  • stream_get_line — 从资源流里读取一行直到给定的定界符
  • stream_get_meta_data — 从封装协议文件指针中取得报头／元数据
  • stream_get_transports — 获取已注册的套接字传输协议列表
  • stream_get_wrappers — 获取已注册的流类型
  • stream_is_local — Checks if a stream is a local stream
  • stream_notification_callback — A callback function for the notification context parameter
  • stream_register_wrapper — 别名 stream_wrapper_register
  • stream_resolve_include_path — Resolve filename against the include path
  • stream_select — Runs the equivalent of the select() system call on the given arrays of streams with a timeout specified by tv_sec and tv_usec
  • stream_set_blocking — 为资源流设置阻塞或者阻塞模式
  • stream_set_chunk_size — 设置资源流区块大小
  • stream_set_read_buffer — Set read file buffering on the given stream
  • stream_set_timeout — Set timeout period on a stream
  • stream_set_write_buffer — Sets write file buffering on the given stream
  • stream_socket_accept — 接受由 stream_socket_server 创建的套接字连接
  • stream_socket_client — Open Internet or Unix domain socket connection
  • stream_socket_enable_crypto — Turns encryption on/off on an already connected socket
  • stream_socket_get_name — 获取本地或者远程的套接字名称
  • stream_socket_pair — 创建一对完全一样的网络套接字连接流
  • stream_socket_recvfrom — Receives data from a socket, connected or not
  • stream_socket_sendto — Sends a message to a socket, whether it is connected or not
  • stream_socket_server — Create an Internet or Unix domain server socket
  • stream_socket_shutdown — Shutdown a full-duplex connection
  • stream_supports_lock — Tells whether the stream supports locking.
  • stream_wrapper_register — 注册一个用 PHP 类实现的 URL 封装协议
  • stream_wrapper_restore — Restores a previously unregistered built-in wrapper
  • stream_wrapper_unregister — Unregister a URL wrapper
streamWrapper::url_stat
set_socket_blocking
Streams


别名 stream_set_blocking

Stream 函数
stream_bucket_append
Stream 函数
PHP Manual

set_socket_blocking

(PHP 4, PHP 5)

set_socket_blocking — 别名 stream_set_blocking()

Warning

This alias was DEPRECATED in PHP 5.3.0, and REMOVED as of PHP 7.0.0.

说明

此函数是该函数的别名： stream_set_blocking()

Stream 函数
stream_bucket_append
Stream 函数


Append bucket to brigade

set_socket_blocking
stream_bucket_make_writeable
Stream 函数
PHP Manual

stream_bucket_append

(PHP 5, PHP 7)

stream_bucket_append — Append bucket to brigade

说明

void stream_bucket_append ( resource $brigade , object $bucket )
Warning

本函数还未编写文档，仅有参数列表。

set_socket_blocking
stream_bucket_make_writeable
Stream 函数


Return a bucket object from the brigade for operating on

stream_bucket_append
stream_bucket_new
Stream 函数
PHP Manual

stream_bucket_make_writeable

(PHP 5, PHP 7)

stream_bucket_make_writeable — Return a bucket object from the brigade for operating on

说明

object stream_bucket_make_writeable ( resource $brigade )
Warning

本函数还未编写文档，仅有参数列表。

stream_bucket_append
stream_bucket_new
Stream 函数


Create a new bucket for use on the current stream

stream_bucket_make_writeable
stream_bucket_prepend
Stream 函数
PHP Manual

stream_bucket_new

(PHP 5, PHP 7)

stream_bucket_new — Create a new bucket for use on the current stream

说明

object stream_bucket_new ( resource $stream , string $buffer )
Warning

本函数还未编写文档，仅有参数列表。

stream_bucket_make_writeable
stream_bucket_prepend
Stream 函数


Prepend bucket to brigade

stream_bucket_new
stream_context_create
Stream 函数
PHP Manual

stream_bucket_prepend

(PHP 5, PHP 7)

stream_bucket_prepend — Prepend bucket to brigade

说明

void stream_bucket_prepend ( resource $brigade , object $bucket )

This function can be called to prepend a bucket to a bucket brigade. It is typically called from php_user_filter::filter().

参数

brigade

brigade is a resource pointing to a bucket brigade which contains one or more bucket objects.

bucket

A bucket object.

返回值

没有返回值。

范例

Example #1 stream_bucket_prepend() examples

<?php

class foo extends php_user_filter {
  protected $calls = 0;
  public function filter($in, $out, &$consumed, $closing) {
    while ($bucket = stream_bucket_make_writeable($in)) {
      $consumed += $bucket->datalen;
      if ($this->calls++ == 2) {
        // This bucket will appear again before any other bucket.
        stream_bucket_prepend($in, $bucket);
      }
    }
    return PSFS_FEED_ME;
  }
}
stream_filter_register('test', 'foo');
print  file_get_contents('php://filter/read=test/resource=foo');
?>

stream_bucket_new
stream_context_create
Stream 函数


创建资源流上下文

stream_bucket_prepend
stream_context_get_default
Stream 函数
PHP Manual

stream_context_create

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

stream_context_create — 创建资源流上下文

说明

resource stream_context_create ([ array $options [, array $params ]] )

创建并返回一个资源流上下文，该资源流中包含了 options 中提前设定的所有参数的值。

参数

options

必须是一个二维关联数组，格式如下：$arr['wrapper']['option'] = $value 。

默认是一个空数组。

params

必须是 $arr['parameter'] = $value 格式的关联数组。 请参考 context parameters 里的标准资源流参数列表。

返回值

上下文资源流，类型为 resource 。

更新日志

版本 | 说明
5.3.0 | 增加了可选参数 params 。

范例

Example #1 使用 stream_context_create()

<?php
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);

/* Sends an http request to www.example.com
   with additional headers shown above */
$fp = fopen('http://www.example.com', 'r', false, $context);
fpassthru($fp);
fclose($fp);
?>

参见

  • stream_context_set_option() - 对资源流、数据包或者上下文设置参数
  • Listing of supported wrappers (支持的协议和封装协议)
  • Context options (上下文（Context）选项和参数)
stream_bucket_prepend
stream_context_get_default
Stream 函数


Retrieve the default stream context

stream_context_create
stream_context_get_options
Stream 函数
PHP Manual

stream_context_get_default

(PHP 5 >= 5.1.0, PHP 7)

stream_context_get_default — Retrieve the default stream context

说明

resource stream_context_get_default ([ array $options ] )

Returns the default stream context which is used whenever file operations (fopen(), file_get_contents(), etc...) are called without a context parameter. Options for the default context can optionally be specified with this function using the same syntax as stream_context_create().

参数

options
options must be an associative array of associative arrays in the format $arr['wrapper']['option'] = $value.

Note:

As of PHP 5.3.0, the stream_context_set_default() function can be used to set the default context.

返回值

A stream context resource.

范例

Example #1 Using stream_context_get_default()

<?php
$default_opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar",
    'proxy'=>"tcp://10.54.1.39:8000"
  )
);

$alternate_opts = array(
  'http'=>array(
    'method'=>"POST",
    'header'=>"Content-type: application/x-www-form-urlencoded\r\n" .
              "Content-length: " . strlen("baz=bomb"),
    'content'=>"baz=bomb"
  )
);

$default = stream_context_get_default($default_opts);
$alternate = stream_context_create($alternate_opts);

/* Sends a regular GET request to proxy server at 10.54.1.39
 * For www.example.com using context options specified in $default_opts
 */
readfile('http://www.example.com');

/* Sends a POST request directly to www.example.com
 * Using context options specified in $alternate_opts
 */
readfile('http://www.example.com', false, $alternate);

?>

参见

  • stream_context_create() - 创建资源流上下文
  • Listing of supported wrappers with context options (支持的协议和封装协议).

stream_context_create
stream_context_get_options
Stream 函数


获取资源流/数据包/上下文的参数

stream_context_get_default
stream_context_get_params
Stream 函数
PHP Manual

stream_context_get_options

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

stream_context_get_options — 获取资源流/数据包/上下文的参数

说明

array stream_context_get_options ( resource $stream_or_context )

返回指定资源流或者上下文的数组参数。

参数

stream_or_context

获取参数信息的 stream 或者 context 。

返回值

返回一个包含有原参数的关联数组。

范例

Example #1 stream_context_get_options() 的例子

<?php
$params = array("method" => "POST");

stream_context_get_default(array("http" => $params));

var_dump(stream_context_get_options(stream_context_get_default()));

?>

以上例程的输出类似于：

array(1) {
  ["http"]=>
  array(1) {
    ["method"]=>
    string(4) "POST"
  }
}

stream_context_get_default
stream_context_get_params
Stream 函数


Retrieves parameters from a context

stream_context_get_options
stream_context_set_default
Stream 函数
PHP Manual

stream_context_get_params

(PHP 5 >= 5.3.0, PHP 7)

stream_context_get_params — Retrieves parameters from a context

说明

array stream_context_get_params ( resource $stream_or_context )

Retrieves parameter and options information from the stream or context.

参数

stream_or_context

A stream resource or a context resource

返回值

Returns an associate array containing all context options and parameters.

范例

Example #1 stream_context_get_params() example

Basic usage example

<?php
$ctx = stream_context_create();
$params = array("notification" => "stream_notification_callback");
stream_context_set_params($ctx, $params);

var_dump(stream_context_get_params($ctx));
?>

以上例程的输出类似于：

array(2) {
  ["notification"]=>
  string(28) "stream_notification_callback"
  ["options"]=>
  array(0) {
  }
}

参见

  • stream_context_set_option() - 对资源流、数据包或者上下文设置参数
  • stream_context_get_params()
  • stream_context_set_params() - Set parameters for a stream/wrapper/context

stream_context_get_options
stream_context_set_default
Stream 函数


Set the default stream context

stream_context_get_params
stream_context_set_option
Stream 函数
PHP Manual

stream_context_set_default

(PHP 5 >= 5.3.0, PHP 7)

stream_context_set_default — Set the default stream context

说明

resource stream_context_set_default ( array $options )

Set the default stream context which will be used whenever file operations (fopen(), file_get_contents(), etc...) are called without a context parameter. Uses the same syntax as stream_context_create().

参数

options

The options to set for the default context.

Note:

options must be an associative array of associative arrays in the format $arr['wrapper']['option'] = $value.

返回值

Returns the default stream context.

范例

Example #1 stream_context_set_default() example

<?php
$default_opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar",
    'proxy'=>"tcp://10.54.1.39:8000"
  )
);

$default = stream_context_set_default($default_opts);

/* Sends a regular GET request to proxy server at 10.54.1.39
 * For www.example.com using context options specified in $default_opts
 */
readfile('http://www.example.com');
?>

参见

  • stream_context_create() - 创建资源流上下文
  • stream_context_get_default() - Retrieve the default stream context
  • Listing of supported wrappers with context options (支持的协议和封装协议).

stream_context_get_params
stream_context_set_option
Stream 函数


对资源流、数据包或者上下文设置参数

stream_context_set_default
stream_context_set_params
Stream 函数
PHP Manual

stream_context_set_option

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

stream_context_set_option — 对资源流、数据包或者上下文设置参数

说明

bool stream_context_set_option ( resource $stream_or_context , string $wrapper , string $option , mixed $value )
bool stream_context_set_option ( resource $stream_or_context , array $options )

给指定的上下文设置参数。参数 value 是设置 wrapper 的 option 参数的值。

参数

stream_or_context

需要添加参数的资源流或者上下文。

options

添加给默认的上下文的参数。

Note:

options 必须是一个 $arr['wrapper']['option'] = $value 格式二维关联数组 。

请参考 context options and parameters 查看资源流参数列表。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

stream_context_set_default
stream_context_set_params
Stream 函数


Set parameters for a stream/wrapper/context

stream_context_set_option
stream_copy_to_stream
Stream 函数
PHP Manual

stream_context_set_params

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

stream_context_set_params — Set parameters for a stream/wrapper/context

说明

bool stream_context_set_params ( resource $stream_or_context , array $params )

Sets parameters on the specified context.

参数

stream_or_context

The stream or context to apply the parameters too.

params

An array of parameters to set.

Note:

params should be an associative array of the structure: $params['paramname'] = "paramvalue";.

Supported parameters

Parameters | Purpose
notification | Name of user-defined callback function to be called whenever a stream triggers a notification.
options | Array of options as in context options and parameters.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • stream_notification_callback() - A callback function for the notification context parameter
stream_context_set_option
stream_copy_to_stream
Stream 函数


Copies data from one stream to another

stream_context_set_params
stream_encoding
Stream 函数
PHP Manual

stream_copy_to_stream

(PHP 5, PHP 7)

stream_copy_to_stream — Copies data from one stream to another

说明

int stream_copy_to_stream ( resource $source , resource $dest [, int $maxlength = -1 [, int $offset = 0 ]] )

Makes a copy of up to maxlength bytes of data from the current position (or from the offset position, if specified) in source to dest. If maxlength is not specified, all remaining content in source will be copied.

参数

source

The source stream

dest

The destination stream

maxlength

Maximum bytes to copy

offset

The offset where to start to copy data

返回值

Returns the total count of bytes copied, 或者在失败时返回 FALSE.

更新日志

版本 | 说明
5.1.0 | Added the offset parameter

范例

Example #1 A stream_copy_to_stream() example

<?php
$src = fopen('http://www.example.com', 'r');
$dest1 = fopen('first1k.txt', 'w');
$dest2 = fopen('remainder.txt', 'w');

echo stream_copy_to_stream($src, $dest1, 1024) . " bytes copied to first1k.txt\n";
echo stream_copy_to_stream($src, $dest2) . " bytes copied to remainder.txt\n";

?>

参见

  • copy() - 拷贝文件

stream_context_set_params
stream_encoding
Stream 函数


设置数据流的字符集

stream_copy_to_stream
stream_filter_append
Stream 函数
PHP Manual

stream_encoding

(No version information available, might only be in Git)

stream_encoding — 设置数据流的字符集

说明

bool stream_encoding ( resource $stream [, string $encoding ] )
Warning

本函数还未编写文档，仅有参数列表。

stream_copy_to_stream
stream_filter_append
Stream 函数


Attach a filter to a stream

stream_encoding
stream_filter_prepend
Stream 函数
PHP Manual

stream_filter_append

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

stream_filter_append — Attach a filter to a stream

说明

resource stream_filter_append ( resource $stream , string $filtername [, int $read_write [, mixed $params ]] )

Adds filtername to the list of filters attached to stream.

参数

stream

The target stream.

filtername

The filter name.

read_write

By default, stream_filter_append() will attach the filter to the read filter chain if the file was opened for reading (i.e. File Mode: r, and/or +). The filter will also be attached to the write filter chain if the file was opened for writing (i.e. File Mode: w, a, and/or +). STREAM_FILTER_READ, STREAM_FILTER_WRITE, and/or STREAM_FILTER_ALL can also be passed to the read_write parameter to override this behavior.

params

This filter will be added with the specified params to the end of the list and will therefore be called last during stream operations. To add a filter to the beginning of the list, use stream_filter_prepend().

返回值

Returns a resource on success or FALSE on failure. The resource can be used to refer to this filter instance during a call to stream_filter_remove().

FALSE is returned if stream is not a resource or if filtername cannot be located.

更新日志

版本 | 说明
5.1.0 | Prior to PHP 5.1.0, this function returns TRUE on success 或者在失败时返回 FALSE.

范例

Example #1 Controlling where filters are applied

<?php
/* Open a test file for reading and writing */
$fp = fopen('test.txt', 'w+');

/* Apply the ROT13 filter to the
 * write filter chain, but not the
 * read filter chain */
stream_filter_append($fp, "string.rot13", STREAM_FILTER_WRITE);

/* Write a simple string to the file
 * it will be ROT13 transformed on the
 * way out */
fwrite($fp, "This is a test\n");

/* Back up to the beginning of the file */
rewind($fp);

/* Read the contents of the file back out.
 * Had the filter been applied to the
 * read filter chain as well, we would see
 * the text ROT13ed back to its original state */
fpassthru($fp);

fclose($fp);

/* Expected Output
   ---------------

Guvf vf n grfg

 */
?>

注释

Note: When using custom (user) filters
stream_filter_register() must be called first in order to register the desired user filter to filtername.

Note: Stream data is read from resources (both local and remote) in chunks, with any unconsumed data kept in internal buffers. When a new filter is appended to a stream, data in the internal buffers is processed through the new filter at that time. This differs from the behavior of stream_filter_prepend().

Note: When a filter is added for read and write, two instances of the filter are created. stream_filter_append() must be called twice with STREAM_FILTER_READ and STREAM_FILTER_WRITE to get both filter resources.

参见

  • stream_filter_register() - Register a user defined stream filter
  • stream_filter_prepend() - Attach a filter to a stream
  • stream_get_filters() - 获取已注册的数据流过滤器列表
stream_encoding
stream_filter_prepend
Stream 函数


Attach a filter to a stream

stream_filter_append
stream_filter_register
Stream 函数
PHP Manual

stream_filter_prepend

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

stream_filter_prepend — Attach a filter to a stream

说明

resource stream_filter_prepend ( resource $stream , string $filtername [, int $read_write [, mixed $params ]] )

Adds filtername to the list of filters attached to stream.

参数

stream

The target stream.

filtername

The filter name.

read_write

By default, stream_filter_prepend() will attach the filter to the read filter chain if the file was opened for reading (i.e. File Mode: r, and/or +). The filter will also be attached to the write filter chain if the file was opened for writing (i.e. File Mode: w, a, and/or +). STREAM_FILTER_READ, STREAM_FILTER_WRITE, and/or STREAM_FILTER_ALL can also be passed to the read_write parameter to override this behavior. See stream_filter_append() for an example of using this parameter.

params

This filter will be added with the specified params to the beginning of the list and will therefore be called first during stream operations. To add a filter to the end of the list, use stream_filter_append().

返回值

Returns a resource on success or FALSE on failure. The resource can be used to refer to this filter instance during a call to stream_filter_remove().

FALSE is returned if stream is not a resource or if filtername cannot be located.

更新日志

版本 | 说明
5.1.0 | Prior to PHP 5.1.0, this function returns TRUE on success 或者在失败时返回 FALSE.

注释

Note: When using custom (user) filters
stream_filter_register() must be called first in order to register the desired user filter to filtername.

Note: Stream data is read from resources (both local and remote) in chunks, with any unconsumed data kept in internal buffers. When a new filter is prepended to a stream, data in the internal buffers, which has already been processed through other filters will not be reprocessed through the new filter at that time. This differs from the behavior of stream_filter_append().

Note: When a filter is added for read and write, two instances of the filter are created. stream_filter_prepend() must be called twice with STREAM_FILTER_READ and STREAM_FILTER_WRITE to get both filter resources.

参见

  • stream_filter_register() - Register a user defined stream filter
  • stream_filter_append() - Attach a filter to a stream
stream_filter_append
stream_filter_register
Stream 函数


Register a user defined stream filter

stream_filter_prepend
stream_filter_remove
Stream 函数
PHP Manual

stream_filter_register

(PHP 5, PHP 7)

stream_filter_register — Register a user defined stream filter

说明

bool stream_filter_register ( string $filtername , string $classname )

stream_filter_register() allows you to implement your own filter on any registered stream used with all the other filesystem functions (such as fopen(), fread() etc.).

参数

filtername

The filter name to be registered.

classname

To implement a filter, you need to define a class as an extension of php_user_filter with a number of member functions. When performing read/write operations on the stream to which your filter is attached, PHP will pass the data through your filter (and any other filters attached to that stream) so that the data may be modified as desired. You must implement the methods exactly as described in php_user_filter - doing otherwise will lead to undefined behaviour.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

stream_filter_register() will return FALSE if the filtername is already defined.

范例

Example #1 Filter for capitalizing characters on foo-bar.txt stream

The example below implements a filter named strtoupper on the foo-bar.txt stream which will capitalize all letter characters written to/read from that stream.

<?php

/* Define our filter class */
class strtoupper_filter extends php_user_filter {
  function filter($in, $out, &$consumed, $closing)
  {
    while ($bucket = stream_bucket_make_writeable($in)) {
      $bucket->data = strtoupper($bucket->data);
      $consumed += $bucket->datalen;
      stream_bucket_append($out, $bucket);
    }
    return PSFS_PASS_ON;
  }
}

/* Register our filter with PHP */
stream_filter_register("strtoupper", "strtoupper_filter")
    or die("Failed to register filter");

$fp = fopen("foo-bar.txt", "w");

/* Attach the registered filter to the stream just opened */
stream_filter_append($fp, "strtoupper");

fwrite($fp, "Line1\n");
fwrite($fp, "Word - 2\n");
fwrite($fp, "Easy As 123\n");

fclose($fp);

/* Read the contents back out
 */
readfile("foo-bar.txt");

?>

以上例程会输出：

LINE1
WORD - 2
EASY AS 123

Example #2 Registering a generic filter class to match multiple filter names.

<?php

/* Define our filter class */
class string_filter extends php_user_filter {
  var $mode;

  function filter($in, $out, &$consumed, $closing)
  {
    while ($bucket = stream_bucket_make_writeable($in)) {
      if ($this->mode == 1) {
        $bucket->data = strtoupper($bucket->data);
      } elseif ($this->mode == 0) {
        $bucket->data = strtolower($bucket->data);
      }

      $consumed += $bucket->datalen;
      stream_bucket_append($out, $bucket);
    }
    return PSFS_PASS_ON;
  }

  function onCreate()
  {
    if ($this->filtername == 'str.toupper') {
      $this->mode = 1;
    } elseif ($this->filtername == 'str.tolower') {
      $this->mode = 0;
    } else {
      /* Some other str.* filter was asked for,
         report failure so that PHP will keep looking */
      return false;
    }

    return true;
  }
}

/* Register our filter with PHP */
stream_filter_register("str.*", "string_filter")
    or die("Failed to register filter");

$fp = fopen("foo-bar.txt", "w");

/* Attach the registered filter to the stream just opened
   We could alternately bind to str.tolower here */
stream_filter_append($fp, "str.toupper");

fwrite($fp, "Line1\n");
fwrite($fp, "Word - 2\n");
fwrite($fp, "Easy As 123\n");

fclose($fp);

/* Read the contents back out
 */
readfile("foo-bar.txt");
?>

以上例程会输出：

LINE1
WORD - 2
EASY AS 123

参见

  • stream_wrapper_register() - 注册一个用 PHP 类实现的 URL 封装协议
  • stream_filter_append() - Attach a filter to a stream
  • stream_filter_prepend() - Attach a filter to a stream

stream_filter_prepend
stream_filter_remove
Stream 函数


从资源流里移除某个过滤器

stream_filter_register
stream_get_contents
Stream 函数
PHP Manual

stream_filter_remove

(PHP 5 >= 5.1.0, PHP 7)

stream_filter_remove — 从资源流里移除某个过滤器

说明

bool stream_filter_remove ( resource $stream_filter )

移除之前通过 stream_filter_prepend() 或者 stream_filter_append() 添加到资源流里面的过滤器。 在移除之前，残留在过滤器内部缓冲区里的所有数据刷新到下一个过滤器。

参数

stream_filter

需要被移除的资源流过滤器。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 动态地重新过滤一个资源流

<?php
/* Open a test file for reading and writing */
$fp = fopen("test.txt", "rw");

$rot13_filter = stream_filter_append($fp, "string.rot13", STREAM_FILTER_WRITE);
fwrite($fp, "This is ");
stream_filter_remove($rot13_filter);
fwrite($fp, "a test\n");

rewind($fp);
fpassthru($fp);
fclose($fp);

?>

以上例程会输出：

Guvf vf a test

参见

  • stream_filter_register() - Register a user defined stream filter
  • stream_filter_append() - Attach a filter to a stream
  • stream_filter_prepend() - Attach a filter to a stream

stream_filter_register
stream_get_contents
Stream 函数


读取资源流到一个字符串

stream_filter_remove
stream_get_filters
Stream 函数
PHP Manual

stream_get_contents

(PHP 5, PHP 7)

stream_get_contents — 读取资源流到一个字符串

说明

string stream_get_contents ( resource $handle [, int $maxlength = -1 [, int $offset = -1 ]] )

与 file_get_contents() 一样，但是 stream_get_contents() 是对一个已经打开的资源流进行操作，并将其内容写入一个字符串返回。 返回的内容取决于 maxlength 字节长度和 offset 指定的起始位置。

参数

handle (resource)

一个资源流（例如 fopen() 操作之后返回的结果）

maxlength (integer)

需要读取的最大的字节数。默认是-1（读取全部的缓冲数据）。

offset (integer)

在读取数据之前先查找指定的偏移量。如果这个数字是负数，就不进行查找，直接从当前位置开始读取。

返回值

返回一个字符串 或者在失败时返回 FALSE.

更新日志

版本 | 说明
5.1.0 | 增加参数 offset 。

范例

Example #1 stream_get_contents() 例子

<?php

if ($stream = fopen('http://www.example.com', 'r')) {
    // print all the page starting at the offset 10
    echo stream_get_contents($stream, -1, 10);

    fclose($stream);
}

if ($stream = fopen('http://www.example.net', 'r')) {
    // print the first 5 bytes
    echo stream_get_contents($stream, 5);

    fclose($stream);
}

?>

注释

Note: 此函数可安全用于二进制对象。

参见

  • fgets() - 从文件指针中读取一行
  • fread() - 读取文件（可安全用于二进制文件）
  • fpassthru() - 输出文件指针处的所有剩余数据

stream_filter_remove
stream_get_filters
Stream 函数


获取已注册的数据流过滤器列表

stream_get_contents
stream_get_line
Stream 函数
PHP Manual

stream_get_filters

(PHP 5, PHP 7)

stream_get_filters — 获取已注册的数据流过滤器列表

说明

array stream_get_filters ( void )

获取当前运行系统中已注册的数据流过滤器列表。

返回值

返回一个包含所有有效的数据流过滤器名字的索引数组。

范例

Example #1 使用 stream_get_filters()

<?php
$streamlist = stream_get_filters();
print_r($streamlist);
?>

以上例程的输出类似于：

Array (
  [0] => string.rot13
  [1] => string.toupper
  [2] => string.tolower
  [3] => string.base64
  [4] => string.quoted-printable
)

参见

  • stream_filter_register() - Register a user defined stream filter
  • stream_get_wrappers() - 获取已注册的流类型
stream_get_contents
stream_get_line
Stream 函数


从资源流里读取一行直到给定的定界符

stream_get_filters
stream_get_meta_data
Stream 函数
PHP Manual

stream_get_line

(PHP 5, PHP 7)

stream_get_line — 从资源流里读取一行直到给定的定界符

说明

string stream_get_line ( resource $handle , int $length [, string $ending ] )

从给定的资源流里读取一行。

当读取到 length 个字节数就结束，或者当在读取的字符串中发现 ending （不包含到返回值里）也结束，又或者遇到了 EOF 也结束（总之以上条件中哪个先出现就以哪个为准）。

这个函数与 fgets() 几乎是相同的，唯一的区别是在这个函数里面允许指定行尾的定界符，而不是使用标准的 \n， \r 还有 \r\n ，并且返回值中不包含定界符。（翻译注：也可以把 \n 等作为定界符传入 ending ）

参数

handle

一个有效的文件句柄。

length

需要从句柄里读取的字节数。

ending

可选参数，字符串定界符。

返回值

返回一个字符串，该字符串的内容根据 length 字节数从 handle 里读取。

如果发生错误，则返回 FALSE.

参见

  • fread() - 读取文件（可安全用于二进制文件）
  • fgets() - 从文件指针中读取一行
  • fgetc() - 从文件指针中读取字符
stream_get_filters
stream_get_meta_data
Stream 函数


从封装协议文件指针中取得报头／元数据

stream_get_line
stream_get_transports
Stream 函数
PHP Manual

stream_get_meta_data

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

stream_get_meta_data — 从封装协议文件指针中取得报头／元数据

说明

array stream_get_meta_data ( int $fp )

返回现有 stream 的信息。可以是任何通过 fopen()，fsockopen() 和 pfsockopen() 建立的流。返回的数组包含以下项目：

  • timed_out (bool) - 如果在上次调用 fread() 或者 fgets() 中等待数据时流超时了则为 TRUE。

  • blocked (bool) - 如果流处于阻塞 IO 模式时为 TRUE。参见 stream_set_blocking()。

  • eof (bool) - 如果流到达文件末尾时为 TRUE。注意对于 socket 流甚至当 unread_bytes 为非零值时也可以为 TRUE。要测定是否有更多数据可读，用 feof() 替代读取本项目的值。

  • unread_bytes (int) - 当前在 PHP 自己的内部缓冲区中的字节数。

    Note: 不要在脚本中使用此值。

以下项目是 PHP 4.3 新加的：

  • stream_type (string) - 一个描述流底层实现的标注。

  • wrapper_type (string) - 一个描述流的分层协议封装实现的标注。更多关于封装协议的信息见 支持的协议和封装协议。

  • wrapper_data (mixed) - 当前流附加的封装协议数据。更多封装协议及其数据的信息见 支持的协议和封装协议。

  • filters (array) - 包含有被叠加在当前流的任何过滤器名的数组。过滤器的文档见附录中的可用过滤器列表。

Note:

本函数是 PHP 4.3 引进的，在此版本之前，可以用 socket_get_status() 来取得前四个项目并且仅能用于基于 socket 的流。

在 PHP 4.3 及以后版本中，socket_get_status() 是本函数的别名。

Note: 本函数不能作用于通过 Socket 扩展库创建的流。

以下项目为 PHP 5.0 新加：

  • mode (string) - 对当前流所要求的访问类型（见 fopen() 中的表格 1）。

  • seekable (bool) - 是否可以在当前流中定位。

  • uri (string) - 与当前流关联的 URI 或文件名。

stream_get_line
stream_get_transports
Stream 函数


获取已注册的套接字传输协议列表

stream_get_meta_data
stream_get_wrappers
Stream 函数
PHP Manual

stream_get_transports

(PHP 5, PHP 7)

stream_get_transports — 获取已注册的套接字传输协议列表

说明

array stream_get_transports ( void )

返回一个包含当前运行系统中所有套接字传输协议名称的索引数组。

返回值

返回一个套接字传输协议名称的索引数组。

范例

Example #1 使用 stream_get_transports()

<?php
$xportlist = stream_get_transports();
print_r($xportlist);
?>

以上例程的输出类似于：

Array (
  [0] => tcp
  [1] => udp
  [2] => unix
  [3] => udg
)

参见

  • stream_get_filters() - 获取已注册的数据流过滤器列表
  • stream_get_wrappers() - 获取已注册的流类型
stream_get_meta_data
stream_get_wrappers
Stream 函数


获取已注册的流类型

stream_get_transports
stream_is_local
Stream 函数
PHP Manual

stream_get_wrappers

(PHP 5, PHP 7)

stream_get_wrappers — 获取已注册的流类型

说明

array stream_get_wrappers ( void )

获取在当前运行系统中已经注册并可使用的流类型列表。

返回值

返回一个索引数组，该数组里包含了当前运行系统中可使用的流类型的名称。

范例

Example #1 stream_get_wrappers() 例子

<?php
print_r(stream_get_wrappers());
?>

以上例程的输出类似于：

Array
(
    [0] => php
    [1] => file
    [2] => http
    [3] => ftp
    [4] => compress.bzip2
    [5] => compress.zlib
)

Example #2 检查一个流类型是否存在

<?php
// check for the existence of the bzip2 stream wrapper
if (in_array('compress.bzip2', stream_get_wrappers())) {
    echo 'compress.bzip2:// support enabled.';
} else {
    echo 'compress.bzip2:// support not enabled.';
}
?>

参见

  • stream_wrapper_register() - 注册一个用 PHP 类实现的 URL 封装协议
stream_get_transports
stream_is_local
Stream 函数


Checks if a stream is a local stream

stream_get_wrappers
stream_notification_callback
Stream 函数
PHP Manual

stream_is_local

(PHP 5 >= 5.2.4, PHP 7)

stream_is_local — Checks if a stream is a local stream

说明

bool stream_is_local ( mixed $stream_or_url )

Checks if a stream, or a URL, is a local one or not.

参数

stream_or_url

The stream resource or URL to check.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 stream_is_local() example

Basic usage example.

<?php
var_dump(stream_is_local("http://example.com"));
var_dump(stream_is_local("/etc"));
?>

以上例程的输出类似于：

bool(false)
bool(true)

stream_get_wrappers
stream_notification_callback
Stream 函数


A callback function for the notification context parameter

stream_is_local
stream_register_wrapper
Stream 函数
PHP Manual

stream_notification_callback

(PHP 5 >= 5.2.0, PHP 7)

stream_notification_callback — A callback function for the notification context parameter

说明

void stream_notification_callback ( int $notification_code , int $severity , string $message , int $message_code , int $bytes_transferred , int $bytes_max )

A callable function, used by the notification context parameter, called during an event.

Note:

This is not a real function, only a prototype of how the function should be.

参数

notification_code

One of the STREAM_NOTIFY_* notification constants.

severity

One of the STREAM_NOTIFY_SEVERITY_* notification constants.

message

Passed if a descriptive message is available for the event.

message_code

Passed if a descriptive message code is available for the event.

The meaning of this value is dependent on the specific wrapper in use.

bytes_transferred

If applicable, the bytes_transferred will be populated.

bytes_max

If applicable, the bytes_max will be populated.

返回值

没有返回值。

范例

Example #1 stream_notification_callback() example

<?php
function stream_notification_callback($notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max) {

    switch($notification_code) {
        case STREAM_NOTIFY_RESOLVE:
        case STREAM_NOTIFY_AUTH_REQUIRED:
        case STREAM_NOTIFY_COMPLETED:
        case STREAM_NOTIFY_FAILURE:
        case STREAM_NOTIFY_AUTH_RESULT:
            var_dump($notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max);
            /* Ignore */
            break;

        case STREAM_NOTIFY_REDIRECTED:
            echo "Being redirected to: ", $message;
            break;

        case STREAM_NOTIFY_CONNECT:
            echo "Connected...";
            break;

        case STREAM_NOTIFY_FILE_SIZE_IS:
            echo "Got the filesize: ", $bytes_max;
            break;

        case STREAM_NOTIFY_MIME_TYPE_IS:
            echo "Found the mime-type: ", $message;
            break;

        case STREAM_NOTIFY_PROGRESS:
            echo "Made some progress, downloaded ", $bytes_transferred, " so far";
            break;
    }
    echo "\n";
}

$ctx = stream_context_create();
stream_context_set_params($ctx, array("notification" => "stream_notification_callback"));

file_get_contents("http://php.net/contact", false, $ctx);
?>

以上例程的输出类似于：

Connected...
Found the mime-type: text/html; CHARSET=gb2312
Being redirected to: http://no.php.net/contact
Connected...
Got the filesize: 0
Found the mime-type: text/html; CHARSET=gb2312
Being redirected to: http://no.php.net/contact.php
Connected...
Got the filesize: 4589
Found the mime-type: text/html;CHARSET=gb2312
Made some progress, downloaded 0 so far
Made some progress, downloaded 0 so far
Made some progress, downloaded 0 so far
Made some progress, downloaded 1440 so far
Made some progress, downloaded 2880 so far
Made some progress, downloaded 4320 so far
Made some progress, downloaded 5760 so far
Made some progress, downloaded 6381 so far
Made some progress, downloaded 7002 so far

Example #2 Simple progressbar for commandline download client

<?php
function usage($argv) {
    echo "Usage:\n";
    printf("\tphp %s <http://example.com/file> <localfile>\n", $argv[0]);
    exit(1);
}

function stream_notification_callback($notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max) {
    static $filesize = null;

    switch($notification_code) {
    case STREAM_NOTIFY_RESOLVE:
    case STREAM_NOTIFY_AUTH_REQUIRED:
    case STREAM_NOTIFY_COMPLETED:
    case STREAM_NOTIFY_FAILURE:
    case STREAM_NOTIFY_AUTH_RESULT:
        /* Ignore */
        break;

    case STREAM_NOTIFY_REDIRECTED:
        echo "Being redirected to: ", $message, "\n";
        break;

    case STREAM_NOTIFY_CONNECT:
        echo "Connected...\n";
        break;

    case STREAM_NOTIFY_FILE_SIZE_IS:
        $filesize = $bytes_max;
        echo "Filesize: ", $filesize, "\n";
        break;

    case STREAM_NOTIFY_MIME_TYPE_IS:
        echo "Mime-type: ", $message, "\n";
        break;

    case STREAM_NOTIFY_PROGRESS:
        if ($bytes_transferred > 0) {
            if (!isset($filesize)) {
                printf("\rUnknown filesize.. %2d kb done..", $bytes_transferred/1024);
            } else {
                $length = (int)(($bytes_transferred/$filesize)*100);
                printf("\r[%-100s] %d%% (%2d/%2d kb)", str_repeat("=", $length). ">", $length, ($bytes_transferred/1024), $filesize/1024);
            }
        }
        break;
    }
}

isset($argv[1], $argv[2]) or usage($argv);

$ctx = stream_context_create();
stream_context_set_params($ctx, array("notification" => "stream_notification_callback"));

$fp = fopen($argv[1], "r", false, $ctx);
if (is_resource($fp) && file_put_contents($argv[2], $fp)) {
    echo "\nDone!\n";
    exit(0);
}

$err = error_get_last();
echo "\nErrrrrorr..\n", $err["message"], "\n";
exit(1);
?>

Executing the example above with: php -n fetch.php http://no2.php.net/get/php-5-LATEST.tar.bz2/from/this/mirror php-latest.tar.bz2 will output something similar too:

Connected...
Mime-type: text/html; CHARSET=gb2312
Being redirected to: http://no2.php.net/distributions/php-5.2.5.tar.bz2
Connected...
Filesize: 7773024
Mime-type: application/octet-stream
[========================================>                                                           ] 40% (3076/7590 kb)

参见

  • Context 参数

stream_is_local
stream_register_wrapper
Stream 函数


别名 stream_wrapper_register

stream_notification_callback
stream_resolve_include_path
Stream 函数
PHP Manual

stream_register_wrapper

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

stream_register_wrapper — 别名 stream_wrapper_register()

说明

此函数是该函数的别名： stream_wrapper_register().

stream_notification_callback
stream_resolve_include_path
Stream 函数


Resolve filename against the include path

stream_register_wrapper
stream_select
Stream 函数
PHP Manual

stream_resolve_include_path

(PHP 5 >= 5.3.2, PHP 7)

stream_resolve_include_path — Resolve filename against the include path

说明

string stream_resolve_include_path ( string $filename )

Resolve filename against the include path according to the same rules as fopen()/include.

参数

filename

The filename to resolve.

返回值

Returns a string containing the resolved absolute filename, 或者在失败时返回 FALSE.

范例

Example #1 stream_resolve_include_path() example

Basic usage example.

<?php
var_dump(stream_resolve_include_path("test.php"));
?>

以上例程的输出类似于：

string(22) "/var/www/html/test.php"

stream_register_wrapper
stream_select
Stream 函数


Runs the equivalent of the select() system call on the given arrays of streams with a timeout specified by tv_sec and tv_usec

stream_resolve_include_path
stream_set_blocking
Stream 函数
PHP Manual

stream_select

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

stream_select — Runs the equivalent of the select() system call on the given arrays of streams with a timeout specified by tv_sec and tv_usec

说明

int stream_select ( array &$read , array &$write , array &$except , int $tv_sec [, int $tv_usec = 0 ] )

The stream_select() function accepts arrays of streams and waits for them to change status. Its operation is equivalent to that of the socket_select() function except in that it acts on streams.

参数

read

The streams listed in the read array will be watched to see if characters become available for reading (more precisely, to see if a read will not block - in particular, a stream resource is also ready on end-of-file, in which case an fread() will return a zero length string).

write

The streams listed in the write array will be watched to see if a write will not block.

except

The streams listed in the except array will be watched for high priority exceptional ("out-of-band") data arriving.

Note:

When stream_select() returns, the arrays read, write and except are modified to indicate which stream resource(s) actually changed status.

You do not need to pass every array to stream_select(). You can leave it out and use an empty array or NULL instead. Also do not forget that those arrays are passed by reference and will be modified after stream_select() returns.
tv_sec

The tv_sec and tv_usec together form the timeout parameter, tv_sec specifies the number of seconds while tv_usec the number of microseconds. The timeout is an upper bound on the amount of time that stream_select() will wait before it returns. If tv_sec and tv_usec are both set to 0, stream_select() will not wait for data - instead it will return immediately, indicating the current status of the streams.

If tv_sec is NULL stream_select() can block indefinitely, returning only when an event on one of the watched streams occurs (or if a signal interrupts the system call).

Warning

Using a timeout value of 0 allows you to instantaneously poll the status of the streams, however, it is NOT a good idea to use a 0 timeout value in a loop as it will cause your script to consume too much CPU time.

It is much better to specify a timeout value of a few seconds, although if you need to be checking and running other code concurrently, using a timeout value of at least 200000 microseconds will help reduce the CPU usage of your script.

Remember that the timeout value is the maximum time that will elapse; stream_select() will return as soon as the requested streams are ready for use.

tv_usec

See tv_sec description.

返回值

On success stream_select() returns the number of stream resources contained in the modified arrays, which may be zero if the timeout expires before anything interesting happens. On error FALSE is returned and a warning raised (this can happen if the system call is interrupted by an incoming signal).

范例

Example #1 stream_select() Example

This example checks to see if data has arrived for reading on either $stream1 or $stream2. Since the timeout value is 0 it will return immediately:

<?php
/* Prepare the read array */
$read   = array($stream1, $stream2);
$write  = NULL;
$except = NULL;
if (false === ($num_changed_streams = stream_select($read, $write, $except, 0))) {
    /* Error handling */
} elseif ($num_changed_streams > 0) {
    /* At least on one of the streams something interesting happened */
}
?>

注释

Note:

Due to a limitation in the current Zend Engine it is not possible to pass a constant modifier like NULL directly as a parameter to a function which expects this parameter to be passed by reference. Instead use a temporary variable or an expression with the leftmost member being a temporary variable:

<?php
$e = NULL;
stream_select($r, $w, $e, 0);
?>

Note:

Be sure to use the === operator when checking for an error. Since the stream_select() may return 0 the comparison with == would evaluate to TRUE:

<?php
$e = NULL;
if (false === stream_select($r, $w, $e, 0)) {
    echo "stream_select() failed\n";
}
?>

Note:

If you read/write to a stream returned in the arrays be aware that they do not necessarily read/write the full amount of data you have requested. Be prepared to even only be able to read/write a single byte.

Note:

Some streams (like zlib) cannot be selected by this function.

Note:

Windows compatibility: stream_select() used on a pipe returned from proc_open() may cause data loss under Windows 98.

Use of stream_select() on file descriptors returned by proc_open() will fail and return FALSE under Windows.

参见

  • stream_set_blocking() - 为资源流设置阻塞或者阻塞模式
stream_resolve_include_path
stream_set_blocking
Stream 函数


为资源流设置阻塞或者阻塞模式

stream_select
stream_set_chunk_size
Stream 函数
PHP Manual

stream_set_blocking

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

stream_set_blocking — 为资源流设置阻塞或者阻塞模式

说明

bool stream_set_blocking ( resource $stream , int $mode )

为 stream 设置阻塞或者阻塞模。

此函数适用于支持非阻塞模式的任何资源流（常规文件，套接字资源流等）。

参数

stream

资源流。

mode

如果 mode 为0，资源流将会被转换为非阻塞模式；如果是1，资源流将会被转换为阻塞模式。 该参数的设置将会影响到像 fgets() 和 fread() 这样的函数从资源流里读取数据。 在非阻塞模式下，调用 fgets() 总是会立即返回；而在阻塞模式下，将会一直等到从资源流里面获取到数据才能返回。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
4.3.0 | 在PHP 4.3.0之前，该函数只支持套接字资源流。

注释

Note:

该函数之前叫作 set_socket_blocking() 后来又叫做 socket_set_blocking() ，但是这种用法都已经被废弃。

参见

  • stream_select() - Runs the equivalent of the select() system call on the given arrays of streams with a timeout specified by tv_sec and tv_usec
stream_select
stream_set_chunk_size
Stream 函数


设置资源流区块大小

stream_set_blocking
stream_set_read_buffer
Stream 函数
PHP Manual

stream_set_chunk_size

(PHP 5 >= 5.4.0, PHP 7)

stream_set_chunk_size — 设置资源流区块大小

说明

int stream_set_chunk_size ( resource $fp , int $chunk_size )

设置资源流区块大小。

参数

fp

目标资源流。

chunk_size

想设置的新的区块大小。

返回值

成功的情况下返回资源流之前的区块大小。

如果 chunk_size 比 1 小或者比 PHP_INT_MAX 还大，就将返回 FALSE 。

错误／异常

当 chunk_size 比 1 小或者比 PHP_INT_MAX 还大的时候将会产生一个 E_WARNING 级别的错误。

stream_set_blocking
stream_set_read_buffer
Stream 函数


Set read file buffering on the given stream

stream_set_chunk_size
stream_set_timeout
Stream 函数
PHP Manual

stream_set_read_buffer

(PHP 5 >= 5.3.3, PHP 7)

stream_set_read_buffer — Set read file buffering on the given stream

说明

int stream_set_read_buffer ( resource $stream , int $buffer )

Sets the read buffer. It's the equivalent of stream_set_write_buffer(), but for read operations.

参数

stream

The file pointer.

buffer

The number of bytes to buffer. If buffer is 0 then read operations are unbuffered. This ensures that all reads with fread() are completed before other processes are allowed to read from that input stream.

返回值

Returns 0 on success, or another value if the request cannot be honored.

参见

  • stream_set_write_buffer() - Sets write file buffering on the given stream
stream_set_chunk_size
stream_set_timeout
Stream 函数


Set timeout period on a stream

stream_set_read_buffer
stream_set_write_buffer
Stream 函数
PHP Manual

stream_set_timeout

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

stream_set_timeout — Set timeout period on a stream

说明

bool stream_set_timeout ( resource $stream , int $seconds [, int $microseconds = 0 ] )

Sets the timeout value on stream, expressed in the sum of seconds and microseconds.

When the stream times out, the 'timed_out' key of the array returned by stream_get_meta_data() is set to TRUE, although no error/warning is generated.

参数

stream

The target stream.

seconds

The seconds part of the timeout to be set.

microseconds

The microseconds part of the timeout to be set.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
4.3.0 | As of PHP 4.3, this function can (potentially) work on any kind of stream. In PHP 4.3, socket based streams are still the only kind supported in the PHP core, although streams from other extensions may support this function.

范例

Example #1 stream_set_timeout() example

<?php
$fp = fsockopen("www.example.com", 80);
if (!$fp) {
    echo "Unable to open\n";
} else {

    fwrite($fp, "GET / HTTP/1.0\r\n\r\n");
    stream_set_timeout($fp, 2);
    $res = fread($fp, 2000);

    $info = stream_get_meta_data($fp);
    fclose($fp);

    if ($info['timed_out']) {
        echo 'Connection timed out!';
    } else {
        echo $res;
    }

}
?>

注释

Note:

This function doesn't work with advanced operations like stream_socket_recvfrom(), use stream_select() with timeout parameter instead.

This function was previously called as set_socket_timeout() and later socket_set_timeout() but this usage is deprecated.

参见

  • fsockopen() - 打开一个网络连接或者一个Unix套接字连接
  • fopen() - 打开文件或者 URL
stream_set_read_buffer
stream_set_write_buffer
Stream 函数


Sets write file buffering on the given stream

stream_set_timeout
stream_socket_accept
Stream 函数
PHP Manual

stream_set_write_buffer

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

stream_set_write_buffer — Sets write file buffering on the given stream

说明

int stream_set_write_buffer ( resource $stream , int $buffer )

Sets the buffering for write operations on the given stream to buffer bytes.

参数

stream

The file pointer.

buffer

The number of bytes to buffer. If buffer is 0 then write operations are unbuffered. This ensures that all writes with fwrite() are completed before other processes are allowed to write to that output stream.

返回值

Returns 0 on success, or another value if the request cannot be honored.

范例

Example #1 stream_set_write_buffer() example

The following example demonstrates how to use stream_set_write_buffer() to create an unbuffered stream.

<?php
$fp = fopen($file, "w");
if ($fp) {
  if (stream_set_write_buffer($fp, 0) !== 0) {
      // changing the buffering failed
  }
  fwrite($fp, $output);
  fclose($fp);
}
?>

参见

  • fopen() - 打开文件或者 URL
  • fwrite() - 写入文件（可安全用于二进制文件）
stream_set_timeout
stream_socket_accept
Stream 函数


接受由 stream_socket_server 创建的套接字连接

stream_set_write_buffer
stream_socket_client
Stream 函数
PHP Manual

stream_socket_accept

(PHP 5, PHP 7)

stream_socket_accept — 接受由 stream_socket_server() 创建的套接字连接

说明

resource stream_socket_accept ( resource $server_socket [, float $timeout = ini_get("default_socket_timeout") [, string &$peername ]] )

接受由 stream_socket_server() 创建的套接字连接。

参数

server_socket

需要接受的服务器创建的套接字连接。

timeout

覆盖默认的套接字接受的超时时限。输入的时间需以秒为单位。

peername

如果包含该参数并且是可以从选中的传输数据中获取到，则将被设置给连接中的客户端主机的名称（地址）（怕出入很大，附带上原文：Will be set to the name (address) of the client which connected, if included and available from the selected transport.）

Note:

也可以之后通过 stream_socket_get_name() 来确定。

返回值

返回接受套接之后的资源流 或者在失败时返回 FALSE。

注释

Warning

该函数不能被用于 UDP 套接字。可以使用 stream_socket_recvfrom() 和 stream_socket_sendto() 来取而代之。

参见

  • stream_socket_server() - Create an Internet or Unix domain server socket
  • stream_socket_get_name() - 获取本地或者远程的套接字名称
  • stream_set_blocking() - 为资源流设置阻塞或者阻塞模式
  • stream_set_timeout() - Set timeout period on a stream
  • fgets() - 从文件指针中读取一行
  • fgetss() - 从文件指针中读取一行并过滤掉 HTML 标记
  • fwrite() - 写入文件（可安全用于二进制文件）
  • fclose() - 关闭一个已打开的文件指针
  • feof() - 测试文件指针是否到了文件结束的位置
  • cURL 函数

stream_set_write_buffer
stream_socket_client
Stream 函数


Open Internet or Unix domain socket connection

stream_socket_accept
stream_socket_enable_crypto
Stream 函数
PHP Manual

stream_socket_client

(PHP 5, PHP 7)

stream_socket_client — Open Internet or Unix domain socket connection

说明

resource stream_socket_client ( string $remote_socket [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") [, int $flags = STREAM_CLIENT_CONNECT [, resource $context ]]]]] )

Initiates a stream or datagram connection to the destination specified by remote_socket. The type of socket created is determined by the transport specified using standard URL formatting: transport://target. For Internet Domain sockets (AF_INET) such as TCP and UDP, the target portion of the remote_socket parameter should consist of a hostname or IP address followed by a colon and a port number. For Unix domain sockets, the target portion should point to the socket file on the filesystem.

Note:

The stream will by default be opened in blocking mode. You can switch it to non-blocking mode by using stream_set_blocking().

参数

remote_socket

Address to the socket to connect to.

errno

Will be set to the system level error number if connection fails.

errstr

Will be set to the system level error message if the connection fails.

timeout

Number of seconds until the connect() system call should timeout.

Note: This parameter only applies when not making asynchronous connection attempts.

Note:

To set a timeout for reading/writing data over the socket, use the stream_set_timeout(), as the timeout only applies while making connecting the socket.

flags

Bitmask field which may be set to any combination of connection flags. Currently the select of connection flags is limited to STREAM_CLIENT_CONNECT (default), STREAM_CLIENT_ASYNC_CONNECT and STREAM_CLIENT_PERSISTENT.

context

A valid context resource created with stream_context_create().

返回值

On success a stream resource is returned which may
be used together with the other file functions (such as
fgets(), fgetss(),
fwrite(), fclose(), and
feof()), FALSE on failure.

错误／异常

On failure the errno and errstr arguments will be populated with the actual system level error that occurred in the system-level connect() call. If the value returned in errno is 0 and the function returned FALSE, it is an indication that the error occurred before the connect() call. This is most likely due to a problem initializing the socket. Note that the errno and errstr arguments will always be passed by reference.

范例

Example #1 stream_socket_client() example

<?php
$fp = stream_socket_client("tcp://www.example.com:80", $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    fwrite($fp, "GET / HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\n\r\n");
    while (!feof($fp)) {
        echo fgets($fp, 1024);
    }
    fclose($fp);
}
?>

Example #2 Using UDP connection

Retrieving the day and time from the UDP service "daytime" (port 13) on localhost.

<?php
$fp = stream_socket_client("udp://127.0.0.1:13", $errno, $errstr);
if (!$fp) {
    echo "ERROR: $errno - $errstr<br />\n";
} else {
    fwrite($fp, "\n");
    echo fread($fp, 26);
    fclose($fp);
}
?>

注释

Warning

UDP sockets will sometimes appear to have opened without an error, even if the remote host is unreachable. The error will only become apparent when you read or write data to/from the socket. The reason for this is because UDP is a "connectionless" protocol, which means that the operating system does not try to establish a link for the socket until it actually needs to send or receive data.

Note: 当指定数值型的 IPv6 地址（例如 fe80::1）时必须用方括号将 IP 围起来——例如， tcp://[fe80::1]:80。

Note:

Depending on the environment, the Unix domain or the optional connect timeout may not be available. A list of available transports can be retrieved using stream_get_transports(). See 所支持的套接字传输器（Socket Transports）列表 for a list of built in transports.

参见

  • stream_socket_server() - Create an Internet or Unix domain server socket
  • stream_set_blocking() - 为资源流设置阻塞或者阻塞模式
  • stream_set_timeout() - Set timeout period on a stream
  • stream_select() - Runs the equivalent of the select() system call on the given arrays of streams with a timeout specified by tv_sec and tv_usec
  • fgets() - 从文件指针中读取一行
  • fgetss() - 从文件指针中读取一行并过滤掉 HTML 标记
  • fwrite() - 写入文件（可安全用于二进制文件）
  • fclose() - 关闭一个已打开的文件指针
  • feof() - 测试文件指针是否到了文件结束的位置
  • cURL 函数

stream_socket_accept
stream_socket_enable_crypto
Stream 函数


Turns encryption on/off on an already connected socket

stream_socket_client
stream_socket_get_name
Stream 函数
PHP Manual

stream_socket_enable_crypto

(PHP 5 >= 5.1.0, PHP 7)

stream_socket_enable_crypto — Turns encryption on/off on an already connected socket

说明

mixed stream_socket_enable_crypto ( resource $stream , bool $enable [, int $crypto_type [, resource $session_stream ]] )

Enable or disable encryption on the stream.

Once the crypto settings are established, cryptography can be turned on and off dynamically by passing TRUE or FALSE in the enable parameter.

参数

stream

The stream resource.

enable

Enable/disable cryptography on the stream.

crypto_type

Setup encryption on the stream. Valid methods are

  • STREAM_CRYPTO_METHOD_SSLv2_CLIENT
  • STREAM_CRYPTO_METHOD_SSLv3_CLIENT
  • STREAM_CRYPTO_METHOD_SSLv23_CLIENT
  • STREAM_CRYPTO_METHOD_ANY_CLIENT
  • STREAM_CRYPTO_METHOD_TLS_CLIENT
  • STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT
  • STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT
  • STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT
  • STREAM_CRYPTO_METHOD_SSLv2_SERVER
  • STREAM_CRYPTO_METHOD_SSLv3_SERVER
  • STREAM_CRYPTO_METHOD_SSLv23_SERVER
  • STREAM_CRYPTO_METHOD_ANY_SERVER
  • STREAM_CRYPTO_METHOD_TLS_SERVER
  • STREAM_CRYPTO_METHOD_TLSv1_0_SERVER
  • STREAM_CRYPTO_METHOD_TLSv1_1_SERVER
  • STREAM_CRYPTO_METHOD_TLSv1_2_SERVER

If omitted, the crypto_type context option on the stream's SSL context will be used instead.

session_stream

Seed the stream with settings from session_stream.

返回值

Returns TRUE on success, FALSE if negotiation has failed or 0 if there isn't enough data and you should try again (only for non-blocking sockets).

更新日志

版本 | 说明
5.6.0 | Introduce STREAM_CRYPTO_METHOD_ANY_CLIENT, STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT, STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT, STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT, STREAM_CRYPTO_METHOD_ANY_SERVER, STREAM_CRYPTO_METHOD_TLSv1_0_SERVER, STREAM_CRYPTO_METHOD_TLSv1_1_SERVER, STREAM_CRYPTO_METHOD_TLSv1_2_SERVER.
5.6.0 | The crypto_type is now optional.

范例

Example #1 stream_socket_enable_crypto() example

<?php
$fp = stream_socket_client("tcp://myproto.example.com:31337", $errno, $errstr, 30);
if (!$fp) {
    die("Unable to connect: $errstr ($errno)");
}

/* Turn on encryption for login phase */
stream_socket_enable_crypto($fp, true, STREAM_CRYPTO_METHOD_SSLv23_CLIENT);
fwrite($fp, "USER god\r\n");
fwrite($fp, "PASS secret\r\n");

/* Turn off encryption for the rest */
stream_socket_enable_crypto($fp, false);

while ($motd = fgets($fp)) {
    echo $motd;
}

fclose($fp);
?>

以上例程的输出类似于：

参见

  • OpenSSL 函数
    •

  • 所支持的套接字传输器（Socket Transports）列表
    •

stream_socket_client

stream_socket_get_name

Stream 函数


获取本地或者远程的套接字名称

stream_socket_enable_crypto
stream_socket_pair
Stream 函数
PHP Manual

stream_socket_get_name

(PHP 5, PHP 7)

stream_socket_get_name — 获取本地或者远程的套接字名称

说明

string stream_socket_get_name ( resource $handle , bool $want_peer )

返回给定的本地或者远程套接字连接的名称。

参数

handle

需要获取其名称的套接字连接。

want_peer

如果设置为 TRUE ，那么将返回 remote 套接字连接名称；如果设置为 FALSE 则返回 local 套接字连接名称。

返回值

套接字连接的名称。

参见

  • stream_socket_accept() - 接受由 stream_socket_server 创建的套接字连接

stream_socket_enable_crypto
stream_socket_pair
Stream 函数


创建一对完全一样的网络套接字连接流

stream_socket_get_name
stream_socket_recvfrom
Stream 函数
PHP Manual

stream_socket_pair

(PHP 5 >= 5.1.0, PHP 7)

stream_socket_pair — 创建一对完全一样的网络套接字连接流

说明

array stream_socket_pair ( int $domain , int $type , int $protocol )

stream_socket_pair() 创建一对完全一样的网络套接字连接，这个函数通常会被用在进程间通信(Inter-Process Communication)

参数

domain

使用的协议族： STREAM_PF_INET, STREAM_PF_INET6 or STREAM_PF_UNIX

type

通信类型: STREAM_SOCK_DGRAM, STREAM_SOCK_RAW, STREAM_SOCK_RDM, STREAM_SOCK_SEQPACKET or STREAM_SOCK_STREAM

protocol

使用的传输协议: STREAM_IPPROTO_ICMP, STREAM_IPPROTO_IP, STREAM_IPPROTO_RAW, STREAM_IPPROTO_TCP or STREAM_IPPROTO_UDP

Note: Please consult the Streams constant list for further details on each constant.

返回值

如果成功将返回一个数组包括了两个socket资源，错误时返回FALSE

更新日志

版本 | 说明
5.3.0 | 这个函数在windows平台不可用

范例

Example #1 A stream_socket_pair() example

This example shows the basic usage of stream_socket_pair() in Inter-Process Comunication.

<?php

$sockets = stream_socket_pair(STREAM_PF_UNIX, STREAM_SOCK_STREAM, STREAM_IPPROTO_IP);
$pid     = pcntl_fork();

if ($pid == -1) {
     die('could not fork');

} else if ($pid) {
     /* parent */
    fclose($sockets[0]);

    fwrite($sockets[1], "child PID: $pid\n");
    echo fgets($sockets[1]);

    fclose($sockets[1]);

} else {
    /* child */
    fclose($sockets[1]);

    fwrite($sockets[0], "message from child\n");
    echo fgets($sockets[0]);

    fclose($sockets[0]);
}

?>

以上例程的输出类似于：

child PID: 1378
message from child

stream_socket_get_name
stream_socket_recvfrom
Stream 函数


Receives data from a socket, connected or not

stream_socket_pair
stream_socket_sendto
Stream 函数
PHP Manual

stream_socket_recvfrom

(PHP 5, PHP 7)

stream_socket_recvfrom — Receives data from a socket, connected or not

说明

string stream_socket_recvfrom ( resource $socket , int $length [, int $flags = 0 [, string &$address ]] )

stream_socket_recvfrom() accepts data from a remote socket up to length bytes.

参数

socket

The remote socket.

length

The number of bytes to receive from the socket.

flags

The value of flags can be any combination of the following:

Possible values for flags
STREAM_OOB | Process OOB (out-of-band) data.
STREAM_PEEK | Retrieve data from the socket, but do not consume the buffer. Subsequent calls to fread() or stream_socket_recvfrom() will see the same data.

address

If address is provided it will be populated with the address of the remote socket.

返回值

Returns the read data, as a string

范例

Example #1 stream_socket_recvfrom() example

<?php
/* Open a server socket to port 1234 on localhost */
$server = stream_socket_server('tcp://127.0.0.1:1234');

/* Accept a connection */
$socket = stream_socket_accept($server);

/* Grab a packet (1500 is a typical MTU size) of OOB data */
echo "Received Out-Of-Band: '" . stream_socket_recvfrom($socket, 1500, STREAM_OOB) . "'\n";

/* Take a peek at the normal in-band data, but don't comsume it. */
echo "Data: '" . stream_socket_recvfrom($socket, 1500, STREAM_PEEK) . "'\n";

/* Get the exact same packet again, but remove it from the buffer this time. */
echo "Data: '" . stream_socket_recvfrom($socket, 1500) . "'\n";

/* Close it up */
fclose($socket);
fclose($server);
?>

注释

Note:

If a message received is longer than the length parameter, excess bytes may be discarded depending on the type of socket the message is received from (such as UDP).

Note:

Calls to stream_socket_recvfrom() on socket-based streams, after calls to buffer-based stream functions (like fread() or stream_get_line()) read data directly from the socket and bypass the stream buffer.

参见

  • stream_socket_sendto() - Sends a message to a socket, whether it is connected or not
  • stream_socket_client() - Open Internet or Unix domain socket connection
  • stream_socket_server() - Create an Internet or Unix domain server socket
stream_socket_pair
stream_socket_sendto
Stream 函数


Sends a message to a socket, whether it is connected or not

stream_socket_recvfrom
stream_socket_server
Stream 函数
PHP Manual

stream_socket_sendto

(PHP 5, PHP 7)

stream_socket_sendto — Sends a message to a socket, whether it is connected or not

说明

int stream_socket_sendto ( resource $socket , string $data [, int $flags = 0 [, string $address ]] )

Sends the specified data through the socket.

参数

socket

The socket to send data to.

data

The data to be sent.

flags

The value of flags can be any combination of the following:

possible values for flags
STREAM_OOB Process OOB (out-of-band) data.

address

The address specified when the socket stream was created will be used unless an alternate address is specified in address.

If specified, it must be in dotted quad (or [ipv6]) format.

返回值

Returns a result code, as an integer.

范例

Example #1 stream_socket_sendto() Example

<?php
/* Open a socket to port 1234 on localhost */
$socket = stream_socket_client('tcp://127.0.0.1:1234');

/* Send ordinary data via ordinary channels. */
fwrite($socket, "Normal data transmit.");

/* Send more data out of band. */
stream_socket_sendto($socket, "Out of Band data.", STREAM_OOB);

/* Close it up */
fclose($socket);
?>

参见

  • stream_socket_recvfrom() - Receives data from a socket, connected or not
  • stream_socket_client() - Open Internet or Unix domain socket connection
  • stream_socket_server() - Create an Internet or Unix domain server socket
stream_socket_recvfrom
stream_socket_server
Stream 函数


Create an Internet or Unix domain server socket

stream_socket_sendto
stream_socket_shutdown
Stream 函数
PHP Manual

stream_socket_server

(PHP 5, PHP 7)

stream_socket_server — Create an Internet or Unix domain server socket

说明

resource stream_socket_server ( string $local_socket [, int &$errno [, string &$errstr [, int $flags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN [, resource $context ]]]] )

Creates a stream or datagram socket on the specified local_socket.

This function only creates a socket, to begin accepting connections use stream_socket_accept().

参数

local_socket

The type of socket created is determined by the transport specified using standard URL formatting: transport://target.

For Internet Domain sockets (AF_INET) such as TCP and UDP, the target portion of the remote_socket parameter should consist of a hostname or IP address followed by a colon and a port number. For Unix domain sockets, the target portion should point to the socket file on the filesystem.

Depending on the environment, Unix domain sockets may not be available. A list of available transports can be retrieved using stream_get_transports(). See 所支持的套接字传输器（Socket Transports）列表 for a list of bulitin transports.

errno

If the optional errno and errstr arguments are present they will be set to indicate the actual system level error that occurred in the system-level socket(), bind(), and listen() calls. If the value returned in errno is 0 and the function returned FALSE, it is an indication that the error occurred before the bind() call. This is most likely due to a problem initializing the socket. Note that the errno and errstr arguments will always be passed by reference.

errstr

See errno description.

flags

A bitmask field which may be set to any combination of socket creation flags.

Note:

For UDP sockets, you must use STREAM_SERVER_BIND as the flags parameter.

context

返回值

Returns the created stream, or FALSE on error.

范例

Example #1 Using TCP server sockets

<?php
$socket = stream_socket_server("tcp://0.0.0.0:8000", $errno, $errstr);
if (!$socket) {
  echo "$errstr ($errno)<br />\n";
} else {
  while ($conn = stream_socket_accept($socket)) {
    fwrite($conn, 'The local time is ' . date('n/j/Y g:i a') . "\n");
    fclose($conn);
  }
  fclose($socket);
}
?>

The example below shows how to act as a time server which can respond to time queries as shown in an example on stream_socket_client().

Note: Most systems require root access to create a server socket on a port below 1024.

Example #2 Using UDP server sockets

<?php
$socket = stream_socket_server("udp://127.0.0.1:1113", $errno, $errstr, STREAM_SERVER_BIND);
if (!$socket) {
    die("$errstr ($errno)");
}

do {
    $pkt = stream_socket_recvfrom($socket, 1, 0, $peer);
    echo "$peer\n";
    stream_socket_sendto($socket, date("D M j H:i:s Y\r\n"), 0, $peer);
} while ($pkt !== false);

?>

注释

Note: 当指定数值型的 IPv6 地址（例如 fe80::1）时必须用方括号将 IP 围起来——例如， tcp://[fe80::1]:80。

参见

  • stream_socket_client() - Open Internet or Unix domain socket connection
  • stream_set_blocking() - 为资源流设置阻塞或者阻塞模式
  • stream_set_timeout() - Set timeout period on a stream
  • fgets() - 从文件指针中读取一行
  • fgetss() - 从文件指针中读取一行并过滤掉 HTML 标记
  • fwrite() - 写入文件（可安全用于二进制文件）
  • fclose() - 关闭一个已打开的文件指针
  • feof() - 测试文件指针是否到了文件结束的位置
  • Curl extension
stream_socket_sendto
stream_socket_shutdown
Stream 函数


Shutdown a full-duplex connection

stream_socket_server
stream_supports_lock
Stream 函数
PHP Manual

stream_socket_shutdown

(PHP 5 >= 5.2.1, PHP 7)

stream_socket_shutdown — Shutdown a full-duplex connection

说明

bool stream_socket_shutdown ( resource $stream , int $how )

Shutdowns (partially or not) a full-duplex connection.

Note:

The associated buffer, or buffers, may or may not be emptied.

参数

stream

An open stream (opened with stream_socket_client(), for example)

how

One of the following constants: STREAM_SHUT_RD (disable further receptions), STREAM_SHUT_WR (disable further transmissions) or STREAM_SHUT_RDWR (disable further receptions and transmissions).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 A stream_socket_shutdown() example

<?php

$server = stream_socket_server('tcp://127.0.0.1:1337');
$client = stream_socket_client('tcp://127.0.0.1:1337');

var_dump(fputs($client, "hello"));

stream_socket_shutdown($client, STREAM_SHUT_WR);
var_dump(fputs($client, "hello")); // doesn't work now

?>

以上例程的输出类似于：

int(5)

Notice: fputs(): send of 5 bytes failed with errno=32 Broken pipe in test.php on line 9
int(0)

参见

  • fclose() - 关闭一个已打开的文件指针

stream_socket_server
stream_supports_lock
Stream 函数


Tells whether the stream supports locking.

stream_socket_shutdown
stream_wrapper_register
Stream 函数
PHP Manual

stream_supports_lock

(PHP 5 >= 5.3.0, PHP 7)

stream_supports_lock — Tells whether the stream supports locking.

说明

bool stream_supports_lock ( resource $stream )

Tells whether the stream supports locking through flock().

参数

stream

The stream to check.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • flock() - 轻便的咨询文件锁定

stream_socket_shutdown
stream_wrapper_register
Stream 函数


注册一个用 PHP 类实现的 URL 封装协议

stream_supports_lock
stream_wrapper_restore
Stream 函数
PHP Manual

stream_wrapper_register

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

stream_wrapper_register — 注册一个用 PHP 类实现的 URL 封装协议

说明

bool stream_wrapper_register ( string $protocol , string $classname [, int $flags = 0 ] )

允许用户实现自定义的协议处理器和流，用于所有其它的文件系统函数中（例如 fopen()，fread() 等）。

参数

protocol

待注册的封装的名字。

classname

实现了protocol的类名。

flags

Should be set to STREAM_IS_URL if protocol is a URL protocol. Default is 0, local stream.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

当 protocol 已经有处理者时，stream_wrapper_register() 将返回FALSE

更新日志

版本 | 说明
5.2.4 | 添加 flags 参数.

范例

Example #1 如何注册一个 stream wrapper

<?php
$existed = in_array("var", stream_get_wrappers());
if ($existed) {
    stream_wrapper_unregister("var");
}
stream_wrapper_register("var", "VariableStream");
$myvar = "";

$fp = fopen("var://myvar", "r+");

fwrite($fp, "line1\n");
fwrite($fp, "line2\n");
fwrite($fp, "line3\n");

rewind($fp);
while (!feof($fp)) {
    echo fgets($fp);
}
fclose($fp);
var_dump($myvar);

if ($existed) {
    stream_wrapper_restore("var");
}

?>

以上例程会输出：

line1
line2
line3
string(18) "line1
line2
line3
"

参见

  • The streamWrapper prototype class
  • Example class registered as stream wrapper
  • stream_wrapper_unregister() - Unregister a URL wrapper
  • stream_wrapper_restore() - Restores a previously unregistered built-in wrapper
  • stream_get_wrappers() - 获取已注册的流类型

stream_supports_lock
stream_wrapper_restore
Stream 函数


Restores a previously unregistered built-in wrapper

stream_wrapper_register
stream_wrapper_unregister
Stream 函数
PHP Manual

stream_wrapper_restore

(PHP 5 >= 5.1.0, PHP 7)

stream_wrapper_restore — Restores a previously unregistered built-in wrapper

说明

bool stream_wrapper_restore ( string $protocol )

Restores a built-in wrapper previously unregistered with stream_wrapper_unregister().

参数

protocol

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

stream_wrapper_register
stream_wrapper_unregister
Stream 函数


Unregister a URL wrapper

stream_wrapper_restore
Tidy
Stream 函数
PHP Manual

stream_wrapper_unregister

(PHP 5 >= 5.1.0, PHP 7)

stream_wrapper_unregister — Unregister a URL wrapper

说明

bool stream_wrapper_unregister ( string $protocol )

Allows you to disable an already defined stream wrapper. Once the wrapper has been disabled you may override it with a user-defined wrapper using stream_wrapper_register() or reenable it later on with stream_wrapper_restore().

参数

protocol

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

stream_wrapper_restore
Tidy
Stream 函数


Tidy

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Tidy example
  • tidy — The tidy class
    • tidy::body — Returns a tidyNode object starting from the <body> tag of the tidy parse tree
    • tidy::cleanRepair — Execute configured cleanup and repair operations on parsed markup
    • tidy::__construct — Constructs a new tidy object
    • tidy::diagnose — Run configured diagnostics on parsed and repaired markup
    • tidy::$errorBuffer — Return warnings and errors which occurred parsing the specified document
    • tidy::getConfig — Get current Tidy configuration
    • tidy::getHtmlVer — Get the Detected HTML version for the specified document
    • tidy::getOpt — Returns the value of the specified configuration option for the tidy document
    • tidy::getOptDoc — Returns the documentation for the given option name
    • tidy::getRelease — Get release date (version) for Tidy library
    • tidy::getStatus — Get status of specified document
    • tidy::head — Returns a tidyNode object starting from the <head> tag of the tidy parse tree
    • tidy::html — Returns a tidyNode object starting from the <html> tag of the tidy parse tree
    • tidy::isXhtml — Indicates if the document is a XHTML document
    • tidy::isXml — Indicates if the document is a generic (non HTML/XHTML) XML document
    • tidy::parseFile — Parse markup in file or URI
    • tidy::parseString — Parse a document stored in a string
    • tidy::repairFile — Repair a file and return it as a string
    • tidy::repairString — Repair a string using an optionally provided configuration file
    • tidy::root — Returns a tidyNode object representing the root of the tidy parse tree
  • tidyNode — The tidyNode class
    • tidyNode::getParent — Returns the parent node of the current node
    • tidyNode::hasChildren — Checks if a node has children
    • tidyNode::hasSiblings — Checks if a node has siblings
    • tidyNode::isAsp — Checks if this node is ASP
    • tidyNode::isComment — Checks if a node represents a comment
    • tidyNode::isHtml — Checks if a node is part of a HTML document
    • tidyNode::isJste — Checks if this node is JSTE
    • tidyNode::isPhp — Checks if a node is PHP
    • tidyNode::isText — Checks if a node represents text (no markup)
  • Tidy 函数
    • ob_tidyhandler — ob_start callback function to repair the buffer
    • tidy_access_count — Returns the Number of Tidy accessibility warnings encountered for specified document
    • tidy_config_count — Returns the Number of Tidy configuration errors encountered for specified document
    • tidy_error_count — Returns the Number of Tidy errors encountered for specified document
    • tidy_get_output — Return a string representing the parsed tidy markup
    • tidy_load_config — Load an ASCII Tidy configuration file with the specified encoding
    • tidy_reset_config — Restore Tidy configuration to default values
    • tidy_save_config — Save current settings to named file
    • tidy_set_encoding — Set the input/output character encoding for parsing markup
    • tidy_setopt — Updates the configuration settings for the specified tidy document
    • tidy_warning_count — Returns the Number of Tidy warnings encountered for specified document
stream_wrapper_unregister
简介
其它基本扩展


简介

Tidy is a binding for the Tidy HTML clean and repair utility which allows you to not only clean and otherwise manipulate HTML documents, but also traverse the document tree.

Tidy
安装／配置
Tidy


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Tidy


需求

To use Tidy, you will need libtidy installed, available on the tidy homepage » http://tidy.sourceforge.net/.

安装／配置
安装
安装／配置


安装

This extension is bundled with PHP 5 and greater, and is installed using the --with-tidy configure option.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Tidy Configuration Options
名字 | 默认 | 可修改范围 | 更新日志
tidy.default_config | "" | PHP_INI_SYSTEM |
tidy.clean_output | "0" | PHP_INI_USER | PHP_INI_PERDIR prior to PHP 5.4.0
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

tidy.default_config string

Default path for tidy config file.

tidy.clean_output boolean

Turns on/off the output repairing by Tidy.

Warning

Do not turn on tidy.clean_output if you are generating non-html content such as dynamic images.

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

Each TIDY_TAG_XXX represents a HTML tag. For example, TIDY_TAG_A represents a "<a href="XX">link</a>" tag. Each TIDY_ATTR_XXX represents a HTML attribute. For example TIDY_ATTR_HREF would represent the href attribute in the previous example.

The following constants are defined:

tidy tag constants
constant
TIDY_TAG_UNKNOWN
TIDY_TAG_A
TIDY_TAG_ABBR
TIDY_TAG_ACRONYM
TIDY_TAG_ALIGN
TIDY_TAG_APPLET
TIDY_TAG_AREA
TIDY_TAG_B
TIDY_TAG_BASE
TIDY_TAG_BASEFONT
TIDY_TAG_BDO
TIDY_TAG_BGSOUND
TIDY_TAG_BIG
TIDY_TAG_BLINK
TIDY_TAG_BLOCKQUOTE
TIDY_TAG_BODY
TIDY_TAG_BR
TIDY_TAG_BUTTON
TIDY_TAG_CAPTION
TIDY_TAG_CENTER
TIDY_TAG_CITE
TIDY_TAG_CODE
TIDY_TAG_COL
TIDY_TAG_COLGROUP
TIDY_TAG_COMMENT
TIDY_TAG_DD
TIDY_TAG_DEL
TIDY_TAG_DFN
TIDY_TAG_DIR
TIDY_TAG_DIV
TIDY_TAG_DL
TIDY_TAG_DT
TIDY_TAG_EM
TIDY_TAG_EMBED
TIDY_TAG_FIELDSET
TIDY_TAG_FONT
TIDY_TAG_FORM
TIDY_TAG_FRAME
TIDY_TAG_FRAMESET
TIDY_TAG_H1
TIDY_TAG_H2
TIDY_TAG_H3
TIDY_TAG_H4
TIDY_TAG_H5
TIDY_TAG_H6
TIDY_TAG_HEAD
TIDY_TAG_HR
TIDY_TAG_HTML
TIDY_TAG_I
TIDY_TAG_IFRAME
TIDY_TAG_ILAYER
TIDY_TAG_IMG
TIDY_TAG_INPUT
TIDY_TAG_INS
TIDY_TAG_ISINDEX
TIDY_TAG_KBD
TIDY_TAG_KEYGEN
TIDY_TAG_LABEL
TIDY_TAG_LAYER
TIDY_TAG_LEGEND
TIDY_TAG_LI
TIDY_TAG_LINK
TIDY_TAG_LISTING
TIDY_TAG_MAP
TIDY_TAG_MARQUEE
TIDY_TAG_MENU
TIDY_TAG_META
TIDY_TAG_MULTICOL
TIDY_TAG_NOBR
TIDY_TAG_NOEMBED
TIDY_TAG_NOFRAMES
TIDY_TAG_NOLAYER
TIDY_TAG_NOSAVE
TIDY_TAG_NOSCRIPT
TIDY_TAG_OBJECT
TIDY_TAG_OL
TIDY_TAG_OPTGROUP
TIDY_TAG_OPTION
TIDY_TAG_P
TIDY_TAG_PARAM
TIDY_TAG_PLAINTEXT
TIDY_TAG_PRE
TIDY_TAG_Q
TIDY_TAG_RP
TIDY_TAG_RT
TIDY_TAG_RTC
TIDY_TAG_RUBY
TIDY_TAG_S
TIDY_TAG_SAMP
TIDY_TAG_SCRIPT
TIDY_TAG_SELECT
TIDY_TAG_SERVER
TIDY_TAG_SERVLET
TIDY_TAG_SMALL
TIDY_TAG_SPACER
TIDY_TAG_SPAN
TIDY_TAG_STRIKE
TIDY_TAG_STRONG
TIDY_TAG_STYLE
TIDY_TAG_SUB
TIDY_TAG_TABLE
TIDY_TAG_TBODY
TIDY_TAG_TD
TIDY_TAG_TEXTAREA
TIDY_TAG_TFOOT
TIDY_TAG_TH
TIDY_TAG_THEAD
TIDY_TAG_TITLE
TIDY_TAG_TR
TIDY_TAG_TT
TIDY_TAG_U
TIDY_TAG_UL
TIDY_TAG_VAR
TIDY_TAG_WBR
TIDY_TAG_XMP

tidy attribute constants
constant
TIDY_ATTR_UNKNOWN
TIDY_ATTR_ABBR
TIDY_ATTR_ACCEPT
TIDY_ATTR_ACCEPT_CHARSET
TIDY_ATTR_ACCESSKEY
TIDY_ATTR_ACTION
TIDY_ATTR_ADD_DATE
TIDY_ATTR_ALIGN
TIDY_ATTR_ALINK
TIDY_ATTR_ALT
TIDY_ATTR_ARCHIVE
TIDY_ATTR_AXIS
TIDY_ATTR_BACKGROUND
TIDY_ATTR_BGCOLOR
TIDY_ATTR_BGPROPERTIES
TIDY_ATTR_BORDER
TIDY_ATTR_BORDERCOLOR
TIDY_ATTR_BOTTOMMARGIN
TIDY_ATTR_CELLPADDING
TIDY_ATTR_CELLSPACING
TIDY_ATTR_CHAR
TIDY_ATTR_CHAROFF
TIDY_ATTR_CHARSET
TIDY_ATTR_CHECKED
TIDY_ATTR_CITE
TIDY_ATTR_CLASS
TIDY_ATTR_CLASSID
TIDY_ATTR_CLEAR
TIDY_ATTR_CODE
TIDY_ATTR_CODEBASE
TIDY_ATTR_CODETYPE
TIDY_ATTR_COLOR
TIDY_ATTR_COLS
TIDY_ATTR_COLSPAN
TIDY_ATTR_COMPACT
TIDY_ATTR_CONTENT
TIDY_ATTR_COORDS
TIDY_ATTR_DATA
TIDY_ATTR_DATAFLD
TIDY_ATTR_DATAPAGESIZE
TIDY_ATTR_DATASRC
TIDY_ATTR_DATETIME
TIDY_ATTR_DECLARE
TIDY_ATTR_DEFER
TIDY_ATTR_DIR
TIDY_ATTR_DISABLED
TIDY_ATTR_ENCODING
TIDY_ATTR_ENCTYPE
TIDY_ATTR_FACE
TIDY_ATTR_FOR
TIDY_ATTR_FRAME
TIDY_ATTR_FRAMEBORDER
TIDY_ATTR_FRAMESPACING
TIDY_ATTR_GRIDX
TIDY_ATTR_GRIDY
TIDY_ATTR_HEADERS
TIDY_ATTR_HEIGHT
TIDY_ATTR_HREF
TIDY_ATTR_HREFLANG
TIDY_ATTR_HSPACE
TIDY_ATTR_HTTP_EQUIV
TIDY_ATTR_ID
TIDY_ATTR_ISMAP
TIDY_ATTR_LABEL
TIDY_ATTR_LANG
TIDY_ATTR_LANGUAGE
TIDY_ATTR_LAST_MODIFIED
TIDY_ATTR_LAST_VISIT
TIDY_ATTR_LEFTMARGIN
TIDY_ATTR_LINK
TIDY_ATTR_LONGDESC
TIDY_ATTR_LOWSRC
TIDY_ATTR_MARGINHEIGHT
TIDY_ATTR_MARGINWIDTH
TIDY_ATTR_MAXLENGTH
TIDY_ATTR_MEDIA
TIDY_ATTR_METHOD
TIDY_ATTR_MULTIPLE
TIDY_ATTR_NAME
TIDY_ATTR_NOHREF
TIDY_ATTR_NORESIZE
TIDY_ATTR_NOSHADE
TIDY_ATTR_NOWRAP
TIDY_ATTR_OBJECT
TIDY_ATTR_OnAFTERUPDATE
TIDY_ATTR_OnBEFOREUNLOAD
TIDY_ATTR_OnBEFOREUPDATE
TIDY_ATTR_OnBLUR
TIDY_ATTR_OnCHANGE
TIDY_ATTR_OnCLICK
TIDY_ATTR_OnDATAAVAILABLE
TIDY_ATTR_OnDATASETCHANGED
TIDY_ATTR_OnDATASETCOMPLETE
TIDY_ATTR_OnDBLCLICK
TIDY_ATTR_OnERRORUPDATE
TIDY_ATTR_OnFOCUS
TIDY_ATTR_OnKEYDOWN
TIDY_ATTR_OnKEYPRESS
TIDY_ATTR_OnKEYUP
TIDY_ATTR_OnLOAD
TIDY_ATTR_OnMOUSEDOWN
TIDY_ATTR_OnMOUSEMOVE
TIDY_ATTR_OnMOUSEOUT
TIDY_ATTR_OnMOUSEOVER
TIDY_ATTR_OnMOUSEUP
TIDY_ATTR_OnRESET
TIDY_ATTR_OnROWENTER
TIDY_ATTR_OnROWEXIT
TIDY_ATTR_OnSELECT
TIDY_ATTR_OnSUBMIT
TIDY_ATTR_OnUNLOAD
TIDY_ATTR_PROFILE
TIDY_ATTR_PROMPT
TIDY_ATTR_RBSPAN
TIDY_ATTR_READONLY
TIDY_ATTR_REL
TIDY_ATTR_REV
TIDY_ATTR_RIGHTMARGIN
TIDY_ATTR_ROWS
TIDY_ATTR_ROWSPAN
TIDY_ATTR_RULES
TIDY_ATTR_SCHEME
TIDY_ATTR_SCOPE
TIDY_ATTR_SCROLLING
TIDY_ATTR_SELECTED
TIDY_ATTR_SHAPE
TIDY_ATTR_SHOWGRID
TIDY_ATTR_SHOWGRIDX
TIDY_ATTR_SHOWGRIDY
TIDY_ATTR_SIZE
TIDY_ATTR_SPAN
TIDY_ATTR_SRC
TIDY_ATTR_STANDBY
TIDY_ATTR_START
TIDY_ATTR_STYLE
TIDY_ATTR_SUMMARY
TIDY_ATTR_TABINDEX
TIDY_ATTR_TARGET
TIDY_ATTR_TEXT
TIDY_ATTR_TITLE
TIDY_ATTR_TOPMARGIN
TIDY_ATTR_TYPE
TIDY_ATTR_USEMAP
TIDY_ATTR_VALIGN
TIDY_ATTR_VALUE
TIDY_ATTR_VALUETYPE
TIDY_ATTR_VERSION
TIDY_ATTR_VLINK
TIDY_ATTR_VSPACE
TIDY_ATTR_WIDTH
TIDY_ATTR_WRAP
TIDY_ATTR_XML_LANG
TIDY_ATTR_XML_SPACE
TIDY_ATTR_XMLNS

tidy nodetype constants
constant | description
TIDY_NODETYPE_ROOT | root node
TIDY_NODETYPE_DOCTYPE | doctype
TIDY_NODETYPE_COMMENT | HTML comment
TIDY_NODETYPE_PROCINS | Processing Instruction
TIDY_NODETYPE_TEXT | Text
TIDY_NODETYPE_START | start tag
TIDY_NODETYPE_END | end tag
TIDY_NODETYPE_STARTEND | empty tag
TIDY_NODETYPE_CDATA | CDATA
TIDY_NODETYPE_SECTION | XML section
TIDY_NODETYPE_ASP | ASP code
TIDY_NODETYPE_JSTE | JSTE code
TIDY_NODETYPE_PHP | PHP code
TIDY_NODETYPE_XMLDECL | XML declaration

资源类型
范例
Tidy


范例

Table of Contents

  • Tidy example
预定义常量
Tidy example
Tidy


Tidy example

This simple example shows basic Tidy usage.

Example #1 Basic Tidy usage

<?php
ob_start();
?>
<html>a html document</html>
<?php
$html = ob_get_clean();

// Specify configuration
$config = array(
           'indent'         => true,
           'output-xhtml'   => true,
           'wrap'           => 200);

// Tidy
$tidy = new tidy;
$tidy->parseString($html, $config, 'utf8');
$tidy->cleanRepair();

// Output
echo $tidy;
?>

范例
tidy
范例


The tidy class

(PHP 5, PHP 7, PECL tidy >= 0.5.2)

简介

An HTML node in an HTML file, as detected by tidy.

类摘要

tidy {
/* 属性 */
string $errorBuffer;
/* 方法 */
tidyNode body ( void )
bool cleanRepair ( void )
__construct ([ string $filename [, mixed $config [, string $encoding [, bool $use_include_path ]]]] )
bool diagnose ( void )
array getConfig ( void )
int getHtmlVer ( void )
mixed getOpt ( string $option )
string getOptDoc ( string $optname )
string getRelease ( void )
int getStatus ( void )
tidyNode head ( void )
tidyNode html ( void )
bool isXhtml ( void )
bool isXml ( void )
bool parseFile ( string $filename [, mixed $config [, string $encoding [, bool $use_include_path = false ]]] )
bool parseString ( string $input [, mixed $config [, string $encoding ]] )
string repairFile ( string $filename [, mixed $config [, string $encoding [, bool $use_include_path = false ]]] )
string repairString ( string $data [, mixed $config [, string $encoding ]] )
tidyNode root ( void )
}

Table of Contents

  • tidy::body — Returns a tidyNode object starting from the <body> tag of the tidy parse tree
  • tidy::cleanRepair — Execute configured cleanup and repair operations on parsed markup
  • tidy::__construct — Constructs a new tidy object
  • tidy::diagnose — Run configured diagnostics on parsed and repaired markup
  • tidy::$errorBuffer — Return warnings and errors which occurred parsing the specified document
  • tidy::getConfig — Get current Tidy configuration
  • tidy::getHtmlVer — Get the Detected HTML version for the specified document
  • tidy::getOpt — Returns the value of the specified configuration option for the tidy document
  • tidy::getOptDoc — Returns the documentation for the given option name
  • tidy::getRelease — Get release date (version) for Tidy library
  • tidy::getStatus — Get status of specified document
  • tidy::head — Returns a tidyNode object starting from the <head> tag of the tidy parse tree
  • tidy::html — Returns a tidyNode object starting from the <html> tag of the tidy parse tree
  • tidy::isXhtml — Indicates if the document is a XHTML document
  • tidy::isXml — Indicates if the document is a generic (non HTML/XHTML) XML document
  • tidy::parseFile — Parse markup in file or URI
  • tidy::parseString — Parse a document stored in a string
  • tidy::repairFile — Repair a file and return it as a string
  • tidy::repairString — Repair a string using an optionally provided configuration file
  • tidy::root — Returns a tidyNode object representing the root of the tidy parse tree
Tidy example
tidy::body
Tidy


Returns a tidyNode object starting from the <body> tag of the tidy parse tree

tidy
tidy::cleanRepair
tidy
PHP Manual

tidy::body

tidy_get_body

(PHP 5, PHP 7, PECL tidy 0.5.2-1.0)

tidy::body -- tidy_get_body — Returns a tidyNode object starting from the <body> tag of the tidy parse tree

说明

面向对象风格

tidyNode tidy::body ( void )

过程化风格

tidyNode tidy_get_body ( tidy $object )

Returns a tidyNode object starting from the <body> tag of the tidy parse tree.

参数

object

The Tidy 对象。

返回值

Returns a tidyNode object starting from the <body> tag of the tidy parse tree.

范例

Example #1 tidy::getBody() example

<?php
$html = '
<html>
  <head>
    <title>test</title>
  </head>
  <body>
    <p>paragraph</p>
  </body>
</html>';

$tidy = tidy_parse_string($html);

$body = $tidy->Body();
echo $body->value;
?>

以上例程会输出：

<body>
<p>paragraph</p>
</body>

注释

Note: 此函数仅可用于 Zend Engine 2 (PHP >= 5.0.0)。

参见

  • tidy::head() - Returns a tidyNode object starting from the <head> tag of the tidy parse tree
  • tidy::html() - Returns a tidyNode object starting from the <html> tag of the tidy parse tree
tidy
tidy::cleanRepair
tidy


Execute configured cleanup and repair operations on parsed markup

tidy::body
tidy::__construct
tidy
PHP Manual

tidy::cleanRepair

tidy_clean_repair

(PHP 5, PHP 7, PECL tidy >= 0.5.2)

tidy::cleanRepair -- tidy_clean_repair — Execute configured cleanup and repair operations on parsed markup

说明

面向对象风格

bool tidy::cleanRepair ( void )

过程化风格

bool tidy_clean_repair ( tidy $object )

This function cleans and repairs the given tidy object.

参数

object

The Tidy 对象。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 tidy::cleanrepair() example

<?php
$html = '<p>test</I>';

$tidy = tidy_parse_string($html);
$tidy->cleanRepair();

echo $tidy;
?>

以上例程会输出：

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title></title>
</head>
<body>
<p>test</p>
</body>
</html>

参见

  • tidy::repairFile() - Repair a file and return it as a string
  • tidy::repairString() - Repair a string using an optionally provided configuration file
tidy::body
tidy::__construct
tidy


Constructs a new tidy object

tidy::cleanRepair
tidy::diagnose
tidy
PHP Manual

tidy::__construct

(PHP 5, PHP 7, PECL tidy >= 0.5.2)

tidy::__construct — Constructs a new tidy object

说明

tidy::__construct ([ string $filename [, mixed $config [, string $encoding [, bool $use_include_path ]]]] )

Constructs a new tidy object.

参数

filename

If the filename parameter is given, this function will also read that file and initialize the object with the file, acting like tidy_parse_file().

config

The config config can be passed either as an array or as a string. If a string is passed, it is interpreted as the name of the configuration file, otherwise, it is interpreted as the options themselves.

For an explanation about each option, visit » http://tidy.sourceforge.net/docs/quickref.html.

encoding

The encoding parameter sets the encoding for input/output documents. The possible values for encoding are: ascii, latin0, latin1, raw, utf8, iso2022, mac, win1252, ibm858, utf16, utf16le, utf16be, big5, and shiftjis.

use_include_path

Search for the file in the include_path.

返回值

Returns the new tidy instance.

范例

Example #1 tidy::__construct() example

<?php

$html = <<< HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><title>title</title></head>
<body>
<p>paragraph <bt />
text</p>
</body></html>

HTML;

$tidy = new tidy();
$tidy->ParseString($html);

$tidy->cleanRepair();

if ($tidy->errorBuffer) {
    echo "The following errors were detected:\n";
    echo $tidy->errorBuffer;
}

?>

以上例程会输出：

The following errors were detected:
line 8 column 14 - Error: <bt> is not recognized!
line 8 column 14 - Warning: discarding unexpected <bt>

参见

  • tidy::parseFile() - Parse markup in file or URI
  • tidy::parseString() - Parse a document stored in a string
tidy::cleanRepair
tidy::diagnose
tidy


Run configured diagnostics on parsed and repaired markup

tidy::__construct
tidy::$errorBuffer
tidy
PHP Manual

tidy::diagnose

tidy_diagnose

(PHP 5, PHP 7, PECL tidy >= 0.5.2)

tidy::diagnose -- tidy_diagnose — Run configured diagnostics on parsed and repaired markup

说明

面向对象风格

bool tidy::diagnose ( void )

过程化风格

bool tidy_diagnose ( tidy $object )

Runs diagnostic tests on the given tidy object, adding some more information about the document in the error buffer.

参数

object

The Tidy 对象。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 tidy::diagnose() example

<?php

$html = <<< HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<p>paragraph</p>
HTML;

$tidy = tidy_parse_string($html);
$tidy->cleanRepair();

// note the difference between the two outputs
echo $tidy->errorBuffer . "\n";

$tidy->diagnose();
echo $tidy->errorBuffer;

?>

以上例程会输出：

line 4 column 1 - Warning: <p> isn't allowed in <head> elements
line 4 column 1 - Warning: inserting missing 'title' element
line 4 column 1 - Warning: <p> isn't allowed in <head> elements
line 4 column 1 - Warning: inserting missing 'title' element
Info: Doctype given is "-//W3C//DTD XHTML 1.0 Strict//EN"
Info: Document content looks like XHTML 1.0 Strict
2 warnings, 0 errors were found!

参见

  • tidy::errorBuffer()
tidy::__construct
tidy::$errorBuffer
tidy


Return warnings and errors which occurred parsing the specified document

tidy::diagnose
tidy::getConfig
tidy
PHP Manual

tidy::$errorBuffer

tidy_get_error_buffer

(PHP 5, PHP 7, PECL tidy >= 0.5.2)

tidy::$errorBuffer -- tidy_get_error_buffer — Return warnings and errors which occurred parsing the specified document

说明

面向对象风格 (property):

string $tidy->errorBuffer;

过程化风格:

string tidy_get_error_buffer ( tidy $tidy )

Returns warnings and errors which occurred parsing the specified document.

参数

tidy

The Tidy 对象。

返回值

Returns the error buffer as a string.

范例

Example #1 tidy_get_error_buffer() example

<?php
$html = '<p>paragraph</p>';

$tidy = tidy_parse_string($html);

echo tidy_get_error_buffer($tidy);
/* or in OO: */
echo $tidy->errorBuffer;
?>

以上例程会输出：

line 1 column 1 - Warning: missing <!DOCTYPE> declaration
line 1 column 1 - Warning: inserting missing 'title' element

参见

  • tidy_access_count() - Returns the Number of Tidy accessibility warnings encountered for specified document
  • tidy_error_count() - Returns the Number of Tidy errors encountered for specified document
  • tidy_warning_count() - Returns the Number of Tidy warnings encountered for specified document
tidy::diagnose
tidy::getConfig
tidy


Get current Tidy configuration

tidy::$errorBuffer
tidy::getHtmlVer
tidy
PHP Manual

tidy::getConfig

tidy_get_config

(PHP 5, PHP 7, PECL tidy >= 0.7.0)

tidy::getConfig -- tidy_get_config — Get current Tidy configuration

说明

面向对象风格

array tidy::getConfig ( void )

过程化风格

array tidy_get_config ( tidy $object )

Gets the list of the configuration options in use by the given tidy object.

参数

object

The Tidy 对象。

返回值

Returns an array of configuration options.

For an explanation about each option, visit » http://tidy.sourceforge.net/docs/quickref.html.

范例

Example #1 tidy::getConfig() example

<?php
$html = '<p>test</p>';
$config = array('indent' => TRUE,
                'output-xhtml' => TRUE,
                'wrap' => 200);

$tidy = tidy_parse_string($html, $config);

print_r($tidy->getConfig());
?>

以上例程会输出：

Array
(
    [indent-spaces] => 2
    [wrap] => 200
    [tab-size] => 8
    [char-encoding] => 1
    [input-encoding] => 3
    [output-encoding] => 1
    [newline] => 1
    [doctype-mode] => 1
    [doctype] =>
    [repeated-attributes] => 1
    [alt-text] =>
    [slide-style] =>
    [error-file] =>
    [output-file] =>
    [write-back] =>
    [markup] => 1
    [show-warnings] => 1
    [quiet] =>
    [indent] => 1
    [hide-endtags] =>
    [input-xml] =>
    [output-xml] => 1
    [output-xhtml] => 1
    [output-html] =>
    [add-xml-decl] =>
    [uppercase-tags] =>
    [uppercase-attributes] =>
    [bare] =>
    [clean] =>
    [logical-emphasis] =>
    [drop-proprietary-attributes] =>
    [drop-font-tags] =>
    [drop-empty-paras] => 1
    [fix-bad-comments] => 1
    [break-before-br] =>
    [split] =>
    [numeric-entities] =>
    [quote-marks] =>
    [quote-nbsp] => 1
    [quote-ampersand] => 1
    [wrap-attributes] =>
    [wrap-script-literals] =>
    [wrap-sections] => 1
    [wrap-asp] => 1
    [wrap-jste] => 1
    [wrap-php] => 1
    [fix-backslash] => 1
    [indent-attributes] =>
    [assume-xml-procins] =>
    [add-xml-space] =>
    [enclose-text] =>
    [enclose-block-text] =>
    [keep-time] =>
    [word-2000] =>
    [tidy-mark] =>
    [gnu-emacs] =>
    [gnu-emacs-file] =>
    [literal-attributes] =>
    [show-body-only] =>
    [fix-uri] => 1
    [lower-literals] => 1
    [hide-comments] =>
    [indent-cdata] =>
    [force-output] => 1
    [show-errors] => 6
    [ascii-chars] => 1
    [join-classes] =>
    [join-styles] => 1
    [escape-cdata] =>
    [language] =>
    [ncr] => 1
    [output-bom] => 2
    [replace-color] =>
    [css-prefix] =>
    [new-inline-tags] =>
    [new-blocklevel-tags] =>
    [new-empty-tags] =>
    [new-pre-tags] =>
    [accessibility-check] => 0
    [vertical-space] =>
    [punctuation-wrap] =>
    [merge-divs] => 1
)

参见

  • tidy_reset_config() - Restore Tidy configuration to default values
  • tidy_save_config() - Save current settings to named file
tidy::$errorBuffer
tidy::getHtmlVer
tidy


Get the Detected HTML version for the specified document

tidy::getConfig
tidy::getOpt
tidy
PHP Manual

tidy::getHtmlVer

tidy_get_html_ver

(PHP 5, PHP 7, PECL tidy >= 0.5.2)

tidy::getHtmlVer -- tidy_get_html_ver — Get the Detected HTML version for the specified document

说明

面向对象风格

int tidy::getHtmlVer ( void )

过程化风格

int tidy_get_html_ver ( tidy $object )

Returns the detected HTML version for the specified tidy object.

参数

object

The Tidy 对象。

返回值

Returns the detected HTML version.

Warning

This function is not yet implemented in the Tidylib itself, so it always return 0.

tidy::getConfig
tidy::getOpt
tidy


Returns the value of the specified configuration option for the tidy document

tidy::getHtmlVer
tidy::getOptDoc
tidy
PHP Manual

tidy::getOpt

tidy_getopt

(PHP 5, PHP 7, PECL tidy >= 0.5.2)

tidy::getOpt -- tidy_getopt — Returns the value of the specified configuration option for the tidy document

说明

面向对象风格

mixed tidy::getOpt ( string $option )

过程化风格

mixed tidy_getopt ( tidy $object , string $option )

Returns the value of the specified option for the specified tidy object.

参数

object

The Tidy 对象。

option

You will find a list with each configuration option and their types at: » http://tidy.sourceforge.net/docs/quickref.html.

返回值

Returns the value of the specified option. The return type depends on the type of the specified one.

范例

Example #1 tidy_getopt() example

<?php

$html ='<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html><head><title>Title</title></head>
<body>

<p><img src="img.png"></p>

</body></html>';

$config = array('accessibility-check' => 3,
                'alt-text' => 'some text');

$tidy = new tidy();
$tidy->parseString($html, $config);

var_dump($tidy->getOpt('accessibility-check')); //integer
var_dump($tidy->getOpt('lower-literals')); //boolean
var_dump($tidy->getOpt('alt-text')); //string

?>

以上例程会输出：

int(3)
bool(true)
string(9) "some text"

tidy::getHtmlVer
tidy::getOptDoc
tidy


Returns the documentation for the given option name

tidy::getOpt
tidy::getRelease
tidy
PHP Manual

tidy::getOptDoc

tidy_get_opt_doc

(PHP 5 >= 5.1.0, PHP 7)

tidy::getOptDoc -- tidy_get_opt_doc — Returns the documentation for the given option name

说明

面向对象风格

string tidy::getOptDoc ( string $optname )

过程化风格

string tidy_get_opt_doc ( tidy $object , string $optname )

tidy_get_opt_doc() returns the documentation for the given option name.

Note:

You need at least libtidy from 25 April, 2005 for this function be available.

参数

object

The Tidy 对象。

optname

The option name

返回值

Returns a string if the option exists and has documentation available, or FALSE otherwise.

范例

Example #1 Print all options along with their documentation and default value

<?php

$tidy = new tidy;
$config = $tidy->getConfig();

ksort($config);

foreach ($config as $opt => $val) {

    if (!$doc = $tidy->getOptDoc($opt))
        $doc = 'no documentation available!';

    $val = ($tidy->getOpt($opt) === true)  ? 'true'  : $val;
    $val = ($tidy->getOpt($opt) === false) ? 'false' : $val;

    echo "<p><b>$opt</b> (default: '$val')<br />".
         "$doc</p><hr />\n";
}

?>

参见

  • tidy::getconfig() - Get current Tidy configuration
  • tidy::getopt() - Returns the value of the specified configuration option for the tidy document

tidy::getOpt
tidy::getRelease
tidy


Get release date (version) for Tidy library

tidy::getOptDoc
tidy::getStatus
tidy
PHP Manual

tidy::getRelease

tidy_get_release

(PHP 5, PHP 7, PECL tidy >= 0.5.2)

tidy::getRelease -- tidy_get_release — Get release date (version) for Tidy library

说明

面向对象风格

string tidy::getRelease ( void )

过程化风格

string tidy_get_release ( void )

Gets the release date of the Tidy library.

返回值

Returns a string with the release date of the Tidy library.

tidy::getOptDoc
tidy::getStatus
tidy


Get status of specified document

tidy::getRelease
tidy::head
tidy
PHP Manual

tidy::getStatus

tidy_get_status

(PHP 5, PHP 7, PECL tidy >= 0.5.2)

tidy::getStatus -- tidy_get_status — Get status of specified document

说明

面向对象风格

int tidy::getStatus ( void )

过程化风格

int tidy_get_status ( tidy $object )

Returns the status for the specified tidy object.

参数

object

The Tidy 对象。

返回值

Returns 0 if no error/warning was raised, 1 for warnings or accessibility errors, or 2 for errors.

范例

Example #1 tidy::getStatus() example

<?php
$html = '<p>paragraph</i>';
$tidy = new tidy();
$tidy->parseString($html);

$tidy2 = new tidy();
$html2 = '<bogus>test</bogus>';
$tidy2->parseString($html2);

echo $tidy->getStatus(); //1

echo $tidy2->getStatus(); //2
?>

tidy::getRelease
tidy::head
tidy


Returns a tidyNode object starting from the <head> tag of the tidy parse tree

tidy::getStatus
tidy::html
tidy
PHP Manual

tidy::head

tidy_get_head

(PHP 5, PHP 7, PECL tidy 0.5.2-1.0.0)

tidy::head -- tidy_get_head — Returns a tidyNode object starting from the <head> tag of the tidy parse tree

说明

面向对象风格

tidyNode tidy::head ( void )

过程化风格

tidyNode tidy_get_head ( tidy $object )

Returns a tidyNode object starting from the <head> tag of the tidy parse tree.

参数

object

The Tidy 对象。

返回值

Returns the tidyNode object.

范例

Example #1 tidy::head() example

<?php
$html = '
<html>
  <head>
    <title>test</title>
  </head>
  <body>
    <p>paragraph</p>
  </body>
</html>';

$tidy = tidy_parse_string($html);

$head = $tidy->head();
echo $head->value;
?>

以上例程会输出：

<head>
<title>test</title>
</head>

注释

Note: 此函数仅可用于 Zend Engine 2 (PHP >= 5.0.0)。

参见

  • tidy::body() - Returns a tidyNode object starting from the <body> tag of the tidy parse tree
  • tidy::html() - Returns a tidyNode object starting from the <html> tag of the tidy parse tree
tidy::getStatus
tidy::html
tidy


Returns a tidyNode object starting from the <html> tag of the tidy parse tree

tidy::head
tidy::isXhtml
tidy
PHP Manual

tidy::html

tidy_get_html

(PHP 5, PHP 7, PECL tidy 0.5.2-1.0.0)

tidy::html -- tidy_get_html — Returns a tidyNode object starting from the <html> tag of the tidy parse tree

说明

面向对象风格

tidyNode tidy::html ( void )

过程化风格

tidyNode tidy_get_html ( tidy $object )

Returns a tidyNode object starting from the <html> tag of the tidy parse tree.

参数

object

The Tidy 对象。

返回值

Returns the tidyNode object.

范例

Example #1 tidy::html() example

<?php
$html = '
<html>
  <head>
    <title>test</title>
  </head>
  <body>
    <p>paragraph</p>
  </body>
</html>';

$tidy = tidy_parse_string($html);

$html = $tidy->html();
echo $html->value;
?>

以上例程会输出：

<html>
<head>
<title>test</title>
</head>
<body>
<p>paragraph</p>
</body>
</html>

注释

Note: 此函数仅可用于 Zend Engine 2 (PHP >= 5.0.0)。

参见

  • tidy::body() - Returns a tidyNode object starting from the <body> tag of the tidy parse tree
  • tidy::head() - Returns a tidyNode object starting from the <head> tag of the tidy parse tree
tidy::head
tidy::isXhtml
tidy


Indicates if the document is a XHTML document

tidy::html
tidy::isXml
tidy
PHP Manual

tidy::isXhtml

tidy_is_xhtml

(PHP 5, PHP 7, PECL tidy >= 0.5.2)

tidy::isXhtml -- tidy_is_xhtml — Indicates if the document is a XHTML document

说明

面向对象风格

bool tidy::isXhtml ( void )

过程化风格

bool tidy_is_xhtml ( tidy $object )

Tells if the document is a XHTML document.

参数

object

The Tidy 对象。

返回值

This function returns TRUE if the specified tidy object is a XHTML document, or FALSE otherwise.

Warning

This function is not yet implemented in the Tidylib itself, so it always return FALSE.

tidy::html
tidy::isXml
tidy


Indicates if the document is a generic (non HTML/XHTML) XML document

tidy::isXhtml
tidy::parseFile
tidy
PHP Manual

tidy::isXml

tidy_is_xml

(PHP 5, PHP 7, PECL tidy >= 0.5.2)

tidy::isXml -- tidy_is_xml — Indicates if the document is a generic (non HTML/XHTML) XML document

说明

面向对象风格

bool tidy::isXml ( void )

过程化风格

bool tidy_is_xml ( tidy $object )

Tells if the document is a generic (non HTML/XHTML) XML document.

参数

object

The Tidy 对象。

返回值

This function returns TRUE if the specified tidy object is a generic XML document (non HTML/XHTML), or FALSE otherwise.

Warning

This function is not yet implemented in the Tidylib itself, so it always return FALSE.

tidy::isXhtml
tidy::parseFile
tidy


Parse markup in file or URI

tidy::isXml
tidy::parseString
tidy
PHP Manual

tidy::parseFile

tidy_parse_file

(PHP 5, PHP 7, PECL tidy >= 0.5.2)

tidy::parseFile -- tidy_parse_file — Parse markup in file or URI

说明

面向对象风格

bool tidy::parseFile ( string $filename [, mixed $config [, string $encoding [, bool $use_include_path = false ]]] )

过程化风格

tidy tidy_parse_file ( string $filename [, mixed $config [, string $encoding [, bool $use_include_path = false ]]] )

Parses the given file.

参数

filename

If the filename parameter is given, this function will also read that file and initialize the object with the file, acting like tidy_parse_file().

config

The config config can be passed either as an array or as a string. If a string is passed, it is interpreted as the name of the configuration file, otherwise, it is interpreted as the options themselves.

For an explanation about each option, see » http://tidy.sourceforge.net/docs/quickref.html.

encoding

The encoding parameter sets the encoding for input/output documents. The possible values for encoding are: ascii, latin0, latin1, raw, utf8, iso2022, mac, win1252, ibm858, utf16, utf16le, utf16be, big5, and shiftjis.

use_include_path

Search for the file in the include_path.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 tidy::parseFile() example

<?php
$tidy = new tidy();
$tidy->parseFile('file.html');

$tidy->cleanRepair();

if(!empty($tidy->errorBuffer)) {
    echo "The following errors or warnings occurred:\n";
    echo $tidy->errorBuffer;
}
?>

注释

Note: 可选参数 config 和 encoding 是在 Tidy 2.0 中加入的。

参见

  • tidy::parsestring() - Parse a document stored in a string
  • tidy::repairfile() - Repair a file and return it as a string
  • tidy::repairstring() - Repair a string using an optionally provided configuration file
tidy::isXml
tidy::parseString
tidy


Parse a document stored in a string

tidy::parseFile
tidy::repairFile
tidy
PHP Manual

tidy::parseString

tidy_parse_string

(PHP 5, PHP 7, PECL tidy >= 0.5.2)

tidy::parseString -- tidy_parse_string — Parse a document stored in a string

说明

面向对象风格

bool tidy::parseString ( string $input [, mixed $config [, string $encoding ]] )

过程化风格

tidy tidy_parse_string ( string $input [, mixed $config [, string $encoding ]] )

Parses a document stored in a string.

参数

input

The data to be parsed.

config

The config config can be passed either as an array or as a string. If a string is passed, it is interpreted as the name of the configuration file, otherwise, it is interpreted as the options themselves.

For an explanation about each option, visit » http://tidy.sourceforge.net/docs/quickref.html.

encoding

The encoding parameter sets the encoding for input/output documents. The possible values for encoding are: ascii, latin0, latin1, raw, utf8, iso2022, mac, win1252, ibm858, utf16, utf16le, utf16be, big5, and shiftjis.

返回值

Returns a new tidy instance.

范例

Example #1 tidy::parseString() example

<?php
ob_start();
?>

<html>
  <head>
   <title>test</title>
  </head>
  <body>
   <p>error<br>another line</i>
  </body>
</html>

<?php

$buffer = ob_get_clean();
$config = array('indent' => TRUE,
                'output-xhtml' => TRUE,
                'wrap' => 200);

$tidy = tidy_parse_string($buffer, $config, 'UTF8');

$tidy->cleanRepair();
echo $tidy;
?>

以上例程会输出：

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>
      test
    </title>
  </head>
  <body>
    <p>
      error<br />
      another line
    </p>
  </body>
</html>

注释

Note: 可选参数 config 和 encoding 是在 Tidy 2.0 中加入的。

参见

  • tidy::parseFile() - Parse markup in file or URI
  • tidy::repairFile() - Repair a file and return it as a string
  • tidy::repairString() - Repair a string using an optionally provided configuration file
tidy::parseFile
tidy::repairFile
tidy


Repair a file and return it as a string

tidy::parseString
tidy::repairString
tidy
PHP Manual

tidy::repairFile

tidy_repair_file

(PHP 5, PHP 7, PECL tidy >= 0.7.0)

tidy::repairFile -- tidy_repair_file — Repair a file and return it as a string

说明

面向对象风格

string tidy::repairFile ( string $filename [, mixed $config [, string $encoding [, bool $use_include_path = false ]]] )

过程化风格

string tidy_repair_file ( string $filename [, mixed $config [, string $encoding [, bool $use_include_path = false ]]] )

Repairs the given file and returns it as a string.

参数

filename

The file to be repaired.

config

The config config can be passed either as an array or as a string. If a string is passed, it is interpreted as the name of the configuration file, otherwise, it is interpreted as the options themselves.

Check http://tidy.sourceforge.net/docs/quickref.html for an explanation about each option.

encoding

The encoding parameter sets the encoding for input/output documents. The possible values for encoding are: ascii, latin0, latin1, raw, utf8, iso2022, mac, win1252, ibm858, utf16, utf16le, utf16be, big5, and shiftjis.

use_include_path

Search for the file in the include_path.

返回值

Returns the repaired contents as a string.

范例

Example #1 tidy::repairFile() example

<?php
$file = 'file.html';

$tidy = new tidy();
$repaired = $tidy->repairfile($file);
rename($file, $file . '.bak');

file_put_contents($file, $repaired);
?>

注释

Note: 可选参数 config 和 encoding 是在 Tidy 2.0 中加入的。

参见

  • tidy::parseFile() - Parse markup in file or URI
  • tidy::parseString() - Parse a document stored in a string
  • tidy::repairString() - Repair a string using an optionally provided configuration file
tidy::parseString
tidy::repairString
tidy


Repair a string using an optionally provided configuration file

tidy::repairFile
tidy::root
tidy
PHP Manual

tidy::repairString

tidy_repair_string

(PHP 5, PHP 7, PECL tidy >= 0.7.0)

tidy::repairString -- tidy_repair_string — Repair a string using an optionally provided configuration file

说明

面向对象风格

string tidy::repairString ( string $data [, mixed $config [, string $encoding ]] )

过程化风格

string tidy_repair_string ( string $data [, mixed $config [, string $encoding ]] )

Repairs the given string.

参数

data

The data to be repaired.

config

The config config can be passed either as an array or as a string. If a string is passed, it is interpreted as the name of the configuration file, otherwise, it is interpreted as the options themselves.

Check » http://tidy.sourceforge.net/docs/quickref.html for an explanation about each option.

encoding

The encoding parameter sets the encoding for input/output documents. The possible values for encoding are: ascii, latin0, latin1, raw, utf8, iso2022, mac, win1252, ibm858, utf16, utf16le, utf16be, big5, and shiftjis.

返回值

Returns the repaired string.

范例

Example #1 tidy::repairString() example

<?php
ob_start();
?>

<html>
  <head>
    <title>test</title>
  </head>
  <body>
    <p>error</i>
  </body>
</html>

<?php

$buffer = ob_get_clean();
$tidy = new tidy();
$clean = $tidy->repairString($buffer);

echo $clean;
?>

以上例程会输出：

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title>test</title>
</head>
<body>
<p>error</p>
</body>
</html>

注释

Note: 可选参数 config 和 encoding 是在 Tidy 2.0 中加入的。

参见

  • tidy::parseFile() - Parse markup in file or URI
  • tidy::parseString() - Parse a document stored in a string
  • tidy::repairFile() - Repair a file and return it as a string
tidy::repairFile
tidy::root
tidy


Returns a tidyNode object representing the root of the tidy parse tree

tidy::repairString
tidyNode
tidy
PHP Manual

tidy::root

tidy_get_root

(PHP 5, PHP 7, PECL tidy 0.5.2-1.0.0)

tidy::root -- tidy_get_root — Returns a tidyNode object representing the root of the tidy parse tree

说明

面向对象风格

tidyNode tidy::root ( void )

过程化风格

tidyNode tidy_get_root ( tidy $object )

Returns a tidyNode object representing the root of the tidy parse tree.

参数

object

The Tidy 对象。

返回值

Returns the tidyNode object.

范例

Example #1 tidy::root() example

<?php

$html = <<< HTML
<html><body>

<p>paragraph</p>
<br/>

</body></html>
HTML;

$tidy = tidy_parse_string($html);
dump_nodes($tidy->root(), 1);

function dump_nodes($node, $indent) {

    if($node->hasChildren()) {
        foreach($node->child as $child) {
            echo str_repeat('.', $indent*2) . ($child->name ? $child->name : '"'.$child->value.'"'). "\n";

            dump_nodes($child, $indent+1);
        }
    }
}
?>

以上例程会输出：

..html
....head
......title
....body
......p
........"paragraph"
......br

注释

Note: 此函数仅可用于 Zend Engine 2 (PHP >= 5.0.0)。

tidy::repairString
tidyNode
tidy


The tidyNode class

(PHP 5 >= 5.0.1, PHP 7)

简介

An HTML node in an HTML file, as detected by tidy.

类摘要

tidyNode {
/* 属性 */
string $value;
string $name;
int $type;
int $line;
int $column;
bool $proprietary;
int $id;
array $attribute;
array $child;
/* 方法 */
tidyNode getParent ( void )
bool hasChildren ( void )
bool hasSiblings ( void )
bool isAsp ( void )
bool isComment ( void )
bool isHtml ( void )
bool isJste ( void )
bool isPhp ( void )
bool isText ( void )
}

属性

value

The HTML representation of the node, including the surrounding tags.

name

The name of the HTML node

type

The type of the tag (one of the constants above, e.g. TIDY_NODETYPE_PHP)

line

The line number at which the tags is located in the file

column

The column number at which the tags is located in the file

proprietary

Indicates if the node is a proprietary tag

id

The ID of the tag (one of the constants above, e.g. TIDY_TAG_FRAME)

attribute

An array of string, representing the attributes names (as keys) of the current node.

child

An array of tidyNode, representing the children of the current node.

版本 | 说明
5.1.0 | line, column and proprietary were added

Table of Contents

  • tidyNode::getParent — Returns the parent node of the current node
  • tidyNode::hasChildren — Checks if a node has children
  • tidyNode::hasSiblings — Checks if a node has siblings
  • tidyNode::isAsp — Checks if this node is ASP
  • tidyNode::isComment — Checks if a node represents a comment
  • tidyNode::isHtml — Checks if a node is part of a HTML document
  • tidyNode::isJste — Checks if this node is JSTE
  • tidyNode::isPhp — Checks if a node is PHP
  • tidyNode::isText — Checks if a node represents text (no markup)
tidy::root
tidyNode::getParent
Tidy


Returns the parent node of the current node

tidyNode
tidyNode::hasChildren
tidyNode
PHP Manual

tidyNode::getParent

(PHP 5 >= 5.2.2, PHP 7)

tidyNode::getParent — Returns the parent node of the current node

说明

tidyNode tidyNode::getParent ( void )

Returns the parent node of the current node.

范例

Example #1 tidyNode::hasChildren() example

<?php

$html = <<< HTML
<html><head>
<?php echo '<title>title</title>'; ?>
<#
  /* JSTE code */
  alert('Hello World');
#>
 </head>
 <body>
 Hello World
 </body>
</html>

HTML;

$tidy = tidy_parse_string($html);
$num = 0;

$node = $tidy->html()->child[0]->child[0];

var_dump($node->getparent()->name);
?>

以上例程会输出：

string(4) "head"

返回值

Returns a tidyNode if the node has a parent, or NULL otherwise.

tidyNode
tidyNode::hasChildren
tidyNode


Checks if a node has children

tidyNode::getParent
tidyNode::hasSiblings
tidyNode
PHP Manual

tidyNode::hasChildren

(PHP 5 >= 5.0.1, PHP 7)

tidyNode::hasChildren — Checks if a node has children

说明

bool tidyNode::hasChildren ( void )

Tells if the node has children.

返回值

Returns TRUE if the node has children, FALSE otherwise.

范例

Example #1 tidyNode::hasChildren() example

<?php

$html = <<< HTML
<html><head>
<?php echo '<title>title</title>'; ?>
<#
  /* JSTE code */
  alert('Hello World');
#>
</head>
<body>

<?php
  // PHP code
  echo 'hello world!';
?>

<%
  /* ASP code */
  response.write("Hello World!")
%>

<!-- Comments -->
Hello World
</body></html>
Outside HTML
HTML;

$tidy = tidy_parse_string($html);
$num = 0;

// the head tag
var_dump($tidy->html()->child[0]->hasChildren());

// the php inside the head tag
var_dump($tidy->html()->child[0]->child[0]->hasChildren());

?>

以上例程会输出：

bool(true)
bool(false)

tidyNode::getParent
tidyNode::hasSiblings
tidyNode


Checks if a node has siblings

tidyNode::hasChildren
tidyNode::isAsp
tidyNode
PHP Manual

tidyNode::hasSiblings

(PHP 5 >= 5.0.1, PHP 7)

tidyNode::hasSiblings — Checks if a node has siblings

说明

bool tidyNode::hasSiblings ( void )

Tells if the node has siblings.

返回值

Returns TRUE if the node has siblings, FALSE otherwise.

范例

Example #1 tidyNode::hasSiblings() example

<?php

$html = <<< HTML
<html><head>
<?php echo '<title>title</title>'; ?>
<#
  /* JSTE code */
  alert('Hello World');
#>
</head>
<body>

<?php
  // PHP code
  echo 'hello world!';
?>

<%
  /* ASP code */
  response.write("Hello World!")
%>

<!-- Comments -->
Hello World
</body></html>
Outside HTML
HTML;

$tidy = tidy_parse_string($html);
$num = 0;

// the html tag
var_dump($tidy->html()->hasSiblings());

// the head tag
var_dump($tidy->html()->child[0]->hasSiblings());

?>

以上例程会输出：

bool(false)
bool(true)

tidyNode::hasChildren
tidyNode::isAsp
tidyNode


Checks if this node is ASP

tidyNode::hasSiblings
tidyNode::isComment
tidyNode
PHP Manual

tidyNode::isAsp

(PHP 5 >= 5.0.1, PHP 7)

tidyNode::isAsp — Checks if this node is ASP

说明

bool tidyNode::isAsp ( void )

Tells whether the current node is ASP.

返回值

Returns TRUE if the node is ASP, FALSE otherwise.

范例

Example #1 Extract ASP code from a mixed HTML document

<?php

$html = <<< HTML
<html><head>
<?php echo '<title>title</title>'; ?>
<#
  /* JSTE code */
  alert('Hello World');
#>
</head>
<body>

<?php
  // PHP code
  echo 'hello world!';
?>

<%
  /* ASP code */
  response.write("Hello World!")
%>

<!-- Comments -->
Hello World
</body></html>
Outside HTML
HTML;

$tidy = tidy_parse_string($html);
$num = 0;

get_nodes($tidy->html());

function get_nodes($node) {

    // check if the current node is of requested type
    if($node->isAsp()) {
        echo "\n\n# asp node #" . ++$GLOBALS['num'] . "\n";
        echo $node->value;
    }

    // check if the current node has childrens
    if($node->hasChildren()) {
        foreach($node->child as $child) {
            get_nodes($child);
        }
    }
}

?>

以上例程会输出：

# asp node #1
<%
  /* ASP code */
  response.write("Hello World!")
%>

tidyNode::hasSiblings
tidyNode::isComment
tidyNode


Checks if a node represents a comment

tidyNode::isAsp
tidyNode::isHtml
tidyNode
PHP Manual

tidyNode::isComment

(PHP 5 >= 5.0.1, PHP 7)

tidyNode::isComment — Checks if a node represents a comment

说明

bool tidyNode::isComment ( void )

Tells if the node is a comment.

返回值

Returns TRUE if the node is a comment, FALSE otherwise.

范例

Example #1 Extract comments from a mixed HTML document

<?php

$html = <<< HTML
<html><head>
<?php echo '<title>title</title>'; ?>
<#
  /* JSTE code */
  alert('Hello World');
#>
</head>
<body>

<?php
  // PHP code
  echo 'hello world!';
?>

<%
  /* ASP code */
  response.write("Hello World!")
%>

<!-- Comments -->
Hello World
</body></html>
Outside HTML
HTML;

$tidy = tidy_parse_string($html);
$num = 0;

get_nodes($tidy->html());

function get_nodes($node) {

    // check if the current node is of requested type
    if($node->isComment()) {
        echo "\n\n# comment node #" . ++$GLOBALS['num'] . "\n";
        echo $node->value;
    }

    // check if the current node has childrens
    if($node->hasChildren()) {
        foreach($node->child as $child) {
            get_nodes($child);
        }
    }
}

?>

以上例程会输出：

# jste node #1
<#
  /* JSTE code */
  alert('Hello World');
#>

tidyNode::isAsp
tidyNode::isHtml
tidyNode


Checks if a node is part of a HTML document

tidyNode::isComment
tidyNode::isJste
tidyNode
PHP Manual

tidyNode::isHtml

(PHP 5 >= 5.0.1, PHP 7)

tidyNode::isHtml — Checks if a node is part of a HTML document

说明

bool tidyNode::isHtml ( void )

Tells if the node is part of HTML document.

返回值

Returns TRUE if the node is part of a HTML document, FALSE otherwise.

范例

Example #1 Extract HTML code from a mixed HTML document

<?php

$html = <<< HTML
<html><head>
<?php echo '<title>title</title>'; ?>
<#
  /* JSTE code */
  alert('Hello World');
#>
</head>
<body>

<?php
  // PHP code
  echo 'hello world!';
?>

<%
  /* ASP code */
  response.write("Hello World!")
%>

<!-- Comments -->
Hello World
</body></html>
Outside HTML
HTML;

$tidy = tidy_parse_string($html);
$num = 0;

get_nodes($tidy->html());

function get_nodes($node) {
    // check if the current node is of requested type
    if($node->isHtml()) {
        echo "\n\n# html node #" . ++$GLOBALS['num'] . "\n";
        echo $node->value;
    }

    // check if the current node has childrens
    if($node->hasChildren()) {
        foreach($node->child as $child) {
            get_nodes($child);
        }
    }
}

?>

以上例程会输出：

# html node #1
<html>
<head>
<?php echo '<title>title</title>'; ?><#
  /* JSTE code */
  alert('Hello World');
#>
<title></title>
</head>
<body>
<?php
  // PHP code
  echo 'hello world!';
?><%
  /* ASP code */
  response.write("Hello World!")
%><!-- Comments -->
Hello WorldOutside HTML
</body>
</html>

# html node #2
<head>
<?php echo '<title>title</title>'; ?><#
  /* JSTE code */
  alert('Hello World');
#>
<title></title>
</head>

# html node #3
<?php echo '<title>title</title>'; ?>

# html node #4
<#
  /* JSTE code */
  alert('Hello World');
#>

# html node #5
<title></title>

# html node #6
<body>
<?php
  // PHP code
  echo 'hello world!';
?><%
  /* ASP code */
  response.write("Hello World!")
%><!-- Comments -->
Hello WorldOutside HTML
</body>

# html node #7
<?php
  // PHP code
  echo 'hello world!';
?>

# html node #8
<%
  /* ASP code */
  response.write("Hello World!")
%>

# html node #9
<!-- Comments -->

# html node #10
Hello World

# html node #11
Outside HTML

tidyNode::isComment
tidyNode::isJste
tidyNode


Checks if this node is JSTE

tidyNode::isHtml
tidyNode::isPhp
tidyNode
PHP Manual

tidyNode::isJste

(PHP 5 >= 5.0.1, PHP 7)

tidyNode::isJste — Checks if this node is JSTE

说明

bool tidyNode::isJste ( void )

Tells if the node is JSTE.

返回值

Returns TRUE if the node is JSTE, FALSE otherwise.

范例

Example #1 Extract JSTE code from a mixed HTML document

<?php

$html = <<< HTML
<html><head>
<?php echo '<title>title</title>'; ?>
<#
  /* JSTE code */
  alert('Hello World');
#>
</head>
<body>

<?php
  // PHP code
  echo 'hello world!';
?>

<%
  /* ASP code */
  response.write("Hello World!")
%>

<!-- Comments -->
Hello World
</body></html>
Outside HTML
HTML;

$tidy = tidy_parse_string($html);
$num = 0;

get_nodes($tidy->html());

function get_nodes($node) {

    // check if the current node is of requested type
    if($node->isJste()) {
        echo "\n\n# jste node #" . ++$GLOBALS['num'] . "\n";
        echo $node->value;
    }

    // check if the current node has childrens
    if($node->hasChildren()) {
        foreach($node->child as $child) {
            get_nodes($child);
        }
    }
}

?>

以上例程会输出：

# jste node #1
<#
  /* JSTE code */
  alert('Hello World');
#>

tidyNode::isHtml
tidyNode::isPhp
tidyNode


Checks if a node is PHP

tidyNode::isJste
tidyNode::isText
tidyNode
PHP Manual

tidyNode::isPhp

(PHP 5 >= 5.0.1, PHP 7)

tidyNode::isPhp — Checks if a node is PHP

说明

bool tidyNode::isPhp ( void )

Tells if the node is PHP.

返回值

Returns TRUE if the current node is PHP code, FALSE otherwise.

范例

Example #1 Extract PHP code from a mixed HTML document

<?php

$html = <<< HTML
<html><head>
<?php echo '<title>title</title>'; ?>
<#
  /* JSTE code */
  alert('Hello World');
#>
</head>
<body>

<?php
  // PHP code
  echo 'hello world!';
?>

<%
  /* ASP code */
  response.write("Hello World!")
%>

<!-- Comments -->
Hello World
</body></html>
Outside HTML
HTML;

$tidy = tidy_parse_string($html);
$num = 0;

get_nodes($tidy->html());

function get_nodes($node) {

    // check if the current node is of requested type
    if($node->isPhp()) {
        echo "\n\n# php node #" . ++$GLOBALS['num'] . "\n";
        echo $node->value;
    }

    // check if the current node has childrens
    if($node->hasChildren()) {
        foreach($node->child as $child) {
            get_nodes($child);
        }
    }
}

?>

以上例程会输出：

# php node #1
<?php echo '<title>title</title>'; ?>

# php node #2
<?php
  // PHP code
  echo 'hello world!';
?>

tidyNode::isJste
tidyNode::isText
tidyNode


Checks if a node represents text (no markup)

tidyNode::isPhp
Tidy 函数
tidyNode
PHP Manual

tidyNode::isText

(PHP 5 >= 5.0.1, PHP 7)

tidyNode::isText — Checks if a node represents text (no markup)

说明

bool tidyNode::isText ( void )

Tells if the node represents a text (without any markup).

返回值

Returns TRUE if the node represent a text, FALSE otherwise.

范例

Example #1 Extract text from a mixed HTML document

<?php

$html = <<< HTML
<html><head>
<?php echo '<title>title</title>'; ?>
<#
  /* JSTE code */
  alert('Hello World');
#>
</head>
<body>

<?php
  // PHP code
  echo 'hello world!';
?>

<%
  /* ASP code */
  response.write("Hello World!")
%>

<!-- Comments -->
Hello World
</body></html>
Outside HTML
HTML;

$tidy = tidy_parse_string($html);
$num = 0;

get_nodes($tidy->html());

function get_nodes($node) {

    // check if the current node is of requested type
    if($node->isText()) {
        echo "\n\n# text node #" . ++$GLOBALS['num'] . "\n";
        echo $node->value;
    }

    // check if the current node has childrens
    if($node->hasChildren()) {
        foreach($node->child as $child) {
            get_nodes($child);
        }
    }
}

?>

以上例程会输出：

# text node #1
Hello World

# text node #2
Outside HTML

tidyNode::isPhp
Tidy 函数
tidyNode


Tidy 函数

Table of Contents

  • ob_tidyhandler — ob_start callback function to repair the buffer
  • tidy_access_count — Returns the Number of Tidy accessibility warnings encountered for specified document
  • tidy_config_count — Returns the Number of Tidy configuration errors encountered for specified document
  • tidy_error_count — Returns the Number of Tidy errors encountered for specified document
  • tidy_get_output — Return a string representing the parsed tidy markup
  • tidy_load_config — Load an ASCII Tidy configuration file with the specified encoding
  • tidy_reset_config — Restore Tidy configuration to default values
  • tidy_save_config — Save current settings to named file
  • tidy_set_encoding — Set the input/output character encoding for parsing markup
  • tidy_setopt — Updates the configuration settings for the specified tidy document
  • tidy_warning_count — Returns the Number of Tidy warnings encountered for specified document
tidyNode::isText
ob_tidyhandler
Tidy


ob_start callback function to repair the buffer

Tidy 函数
tidy_access_count
Tidy 函数
PHP Manual

ob_tidyhandler

(PHP 5, PHP 7)

ob_tidyhandler — ob_start callback function to repair the buffer

说明

string ob_tidyhandler ( string $input [, int $mode ] )

Callback function for ob_start() to repair the buffer.

参数

input

The buffer.

mode

The buffer mode.

返回值

Returns the modified buffer.

范例

Example #1 ob_tidyhandler() example

<?php
ob_start('ob_tidyhandler');

echo '<p>test</i>';
?>

以上例程会输出：

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title></title>
</head>
<body>
<p>test</p>
</body>
</html>

参见

  • ob_start() - 打开输出控制缓冲

Tidy 函数
tidy_access_count
Tidy 函数


Returns the Number of Tidy accessibility warnings encountered for specified document

ob_tidyhandler
tidy_config_count
Tidy 函数
PHP Manual

tidy_access_count

(PHP 5, PHP 7, PECL tidy >= 0.5.2)

tidy_access_count — Returns the Number of Tidy accessibility warnings encountered for specified document

说明

int tidy_access_count ( tidy $object )

tidy_access_count() returns the number of accessibility warnings found for the specified document.

参数

object

The Tidy 对象。

返回值

Returns the number of warnings.

范例

Example #1 tidy_access_count() example

<?php

$html ='<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html><head><title>Title</title></head>
<body>

<p><img src="img.png"></p>

</body></html>';

// select the accessibility check level: 1, 2 or 3
$config = array('accessibility-check' => 3);

$tidy = new tidy();
$tidy->parseString($html, $config);
$tidy->cleanRepair();

/* Never forget to call this! */
$tidy->diagnose();

echo tidy_access_count($tidy); //5

?>

注释

Note:

Due to the design of the TidyLib, you must call tidy_diagnose() before tidy_access_count() or it will return always 0. You must also need to enable the accessibility-check option.

参见

  • tidy_error_count() - Returns the Number of Tidy errors encountered for specified document
  • tidy_warning_count() - Returns the Number of Tidy warnings encountered for specified document

ob_tidyhandler
tidy_config_count
Tidy 函数


Returns the Number of Tidy configuration errors encountered for specified document

tidy_access_count
tidy_error_count
Tidy 函数
PHP Manual

tidy_config_count

(PHP 5, PHP 7, PECL tidy >= 0.5.2)

tidy_config_count — Returns the Number of Tidy configuration errors encountered for specified document

说明

int tidy_config_count ( tidy $object )

Returns the number of errors encountered in the configuration of the specified tidy object.

参数

object

The Tidy 对象。

返回值

Returns the number of errors.

范例

Example #1 tidy_config_count() example

<?php
$html = '<p>test</I>';

$config = array('doctype' => 'bogus');

$tidy = tidy_parse_string($html, $config);

/* This outputs 1, because 'bogus' isn't a valid doctype */
echo tidy_config_count($tidy);
?>

tidy_access_count
tidy_error_count
Tidy 函数


Returns the Number of Tidy errors encountered for specified document

tidy_config_count
tidy_get_output
Tidy 函数
PHP Manual

tidy_error_count

(PHP 5, PHP 7, PECL tidy >= 0.5.2)

tidy_error_count — Returns the Number of Tidy errors encountered for specified document

说明

int tidy_error_count ( tidy $object )

Returns the number of Tidy errors encountered for the specified document.

参数

object

The Tidy 对象。

返回值

Returns the number of errors.

范例

Example #1 tidy_error_count() example

<?php
$html = '<p>test</i>
<bogustag>bogus</bogustag>';

$tidy = tidy_parse_string($html);

echo tidy_error_count($tidy) . "\n"; //1

echo $tidy->errorBuffer;
?>

以上例程会输出：

1
line 1 column 1 - Warning: missing <!DOCTYPE> declaration
line 1 column 8 - Warning: discarding unexpected </i>
line 2 column 1 - Error: <bogustag> is not recognized!
line 2 column 1 - Warning: discarding unexpected <bogustag>
line 2 column 16 - Warning: discarding unexpected </bogustag>
line 1 column 1 - Warning: inserting missing 'title' element

参见

  • tidy_access_count() - Returns the Number of Tidy accessibility warnings encountered for specified document
  • tidy_warning_count() - Returns the Number of Tidy warnings encountered for specified document
tidy_config_count
tidy_get_output
Tidy 函数


Return a string representing the parsed tidy markup

tidy_error_count
tidy_load_config
Tidy 函数
PHP Manual

tidy_get_output

(PHP 5, PHP 7, PECL tidy >= 0.5.2)

tidy_get_output — Return a string representing the parsed tidy markup

说明

string tidy_get_output ( tidy $object )

Gets a string with the repaired html.

参数

object

The Tidy 对象。

返回值

Returns the parsed tidy markup.

范例

Example #1 tidy_get_output() example

<?php

$html = '<p>paragraph</i>';
$tidy = tidy_parse_string($html);

$tidy->cleanRepair();

echo tidy_get_output($tidy);
?>

以上例程会输出：

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<title></title>
</head>
<body>
<p>paragraph</p>
</body>
</html>

tidy_error_count
tidy_load_config
Tidy 函数


Load an ASCII Tidy configuration file with the specified encoding

tidy_get_output
tidy_reset_config
Tidy 函数
PHP Manual

tidy_load_config

(PECL tidy >= 0.5.2)

tidy_load_config — Load an ASCII Tidy configuration file with the specified encoding

说明

void tidy_load_config ( string $filename , string $encoding )

Loads a Tidy configuration file, with the specified encoding.

参数

filename

encoding

返回值

没有返回值。

注释

Note: 此函数仅可在 Tidy 1.0 中有效。在 Tidy 2.0 中，其已过时并已被移除。

tidy_get_output
tidy_reset_config
Tidy 函数


Restore Tidy configuration to default values

tidy_load_config
tidy_save_config
Tidy 函数
PHP Manual

tidy_reset_config

(PECL tidy >= 0.7.0)

tidy_reset_config — Restore Tidy configuration to default values

说明

bool tidy_reset_config ( void )

This function restores the Tidy configuration to the default values.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note: 此函数仅可在 Tidy 1.0 中有效。在 Tidy 2.0 中，其已过时并已被移除。

tidy_load_config
tidy_save_config
Tidy 函数


Save current settings to named file

tidy_reset_config
tidy_set_encoding
Tidy 函数
PHP Manual

tidy_save_config

(PECL tidy >= 0.5.2)

tidy_save_config — Save current settings to named file

说明

bool tidy_save_config ( string $filename )

Saves current settings to the specified file. Only non-default values are written.

参数

filename

Path to the config file.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note: 此函数仅可在 Tidy 1.0 中有效。在 Tidy 2.0 中，其已过时并已被移除。

参见

  • tidy_get_config() - Get current Tidy configuration
  • tidy_getopt() - Returns the value of the specified configuration option for the tidy document
  • tidy_reset_config() - Restore Tidy configuration to default values
  • tidy_setopt() - Updates the configuration settings for the specified tidy document

tidy_reset_config
tidy_set_encoding
Tidy 函数


Set the input/output character encoding for parsing markup

tidy_save_config
tidy_setopt
Tidy 函数
PHP Manual

tidy_set_encoding

(PECL tidy >= 0.5.2)

tidy_set_encoding — Set the input/output character encoding for parsing markup

说明

bool tidy_set_encoding ( string $encoding )

Sets the encoding for input/output documents.

参数

encoding

The encoding parameter sets the encoding for input/output documents. The possible values for encoding are: ascii, latin0, latin1, raw, utf8, iso2022, mac, win1252, ibm858, utf16, utf16le, utf16be, big5, and shiftjis.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note: 此函数仅可在 Tidy 1.0 中有效。在 Tidy 2.0 中，其已过时并已被移除。

tidy_save_config
tidy_setopt
Tidy 函数


Updates the configuration settings for the specified tidy document

tidy_set_encoding
tidy_warning_count
Tidy 函数
PHP Manual

tidy_setopt

(PECL tidy >= 0.5.2)

tidy_setopt — Updates the configuration settings for the specified tidy document

说明

bool tidy_setopt ( string $option , mixed $value )

tidy_setopt() updates the specified option with a new value.

参数

option

The tidy option name. A list of available configuration options may be found at: » http://tidy.sourceforge.net/docs/quickref.html.

value

The tidy option name.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 tidy_setopt() example

<?php
$html = '<p>test</i>';

$tidy = tidy_parse_string($html);

tidy_setopt('indent', FALSE);
?>

注释

Note: 此函数仅可在 Tidy 1.0 中有效。在 Tidy 2.0 中，其已过时并已被移除。

参见

  • tidy_getopt() - Returns the value of the specified configuration option for the tidy document
  • tidy_get_config() - Get current Tidy configuration
  • tidy_reset_config() - Restore Tidy configuration to default values
  • tidy_save_config() - Save current settings to named file
tidy_set_encoding
tidy_warning_count
Tidy 函数


Returns the Number of Tidy warnings encountered for specified document

tidy_setopt
Tokenizer
Tidy 函数
PHP Manual

tidy_warning_count

(PHP 5, PHP 7, PECL tidy >= 0.5.2)

tidy_warning_count — Returns the Number of Tidy warnings encountered for specified document

说明

int tidy_warning_count ( tidy $object )

Returns the number of Tidy warnings encountered for the specified document.

参数

object

The Tidy 对象。

返回值

Returns the number of warnings.

范例

Example #1 tidy_warning_count() example

<?php
$html = '<p>test</i>
<bogustag>bogus</bogustag>';

$tidy = tidy_parse_string($html);

echo tidy_error_count($tidy) . "\n"; //1
echo tidy_warning_count($tidy) . "\n"; //5
?>

参见

  • tidy_error_count() - Returns the Number of Tidy errors encountered for specified document
  • tidy_access_count() - Returns the Number of Tidy accessibility warnings encountered for specified document

tidy_setopt
Tokenizer
Tidy 函数


Tokenizer

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • Tokenizer 函数
    • token_get_all — 将提供的源码按 PHP 标记进行分割
    • token_name — 获取提供的 PHP 解析器代号的符号名称
tidy_warning_count
简介
其它基本扩展


简介

The tokenizer functions provide an interface to the PHP tokenizer embedded in the Zend Engine. Using these functions you may write your own PHP source analyzing or modification tools without having to deal with the language specification at the lexical level.

See also the appendix about tokens.

Tokenizer
安装／配置
Tokenizer


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Tokenizer


安装

从 PHP 4.4.0 开始，这些函数默认是被激活的. 对于旧版本在配置和编译 PHP 是使用 --enable-tokenizer 选项. 也能使用 --disable-tokenizer 选项禁用 tokenizer 支持.

PHP 的 Windows 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。

Note: tokenizer 的内建支持在 PHP 4.3.0 后可用

需求
运行时配置
安装／配置


预定义常量

当这个扩展被编译进 PHP 或者在运行时动态加载时，解析器代号列表中的标记会被定义为常量

资源类型
范例
Tokenizer


范例

这里是一个简单使用 tokenizer 的PHP脚本例子，它将读取一个PHP文件，去掉代码中全部注释，然后只打印纯代码

Example #1 Strip comments with the tokenizer

<?php
/*
* T_ML_COMMENT does not exist in PHP 5.
* The following three lines define it in order to
* preserve backwards compatibility.
*
* The next two lines define the PHP 5 only T_DOC_COMMENT,
* which we will mask as T_ML_COMMENT for PHP 4.
*/
if (!defined('T_ML_COMMENT')) {
   define('T_ML_COMMENT', T_COMMENT);
} else {
   define('T_DOC_COMMENT', T_ML_COMMENT);
}

$source = file_get_contents('example.php');
$tokens = token_get_all($source);

foreach ($tokens as $token) {
   if (is_string($token)) {
       // simple 1-character token
       echo $token;
   } else {
       // token array
       list($id, $text) = $token;

       switch ($id) {
           case T_COMMENT:
           case T_ML_COMMENT: // we've defined this
           case T_DOC_COMMENT: // and this
               // no action on comments
               break;

           default:
               // anything else -> output "as is"
               echo $text;
               break;
       }
   }
}
?>
预定义常量
Tokenizer 函数
Tokenizer


Tokenizer 函数

Table of Contents

  • token_get_all — 将提供的源码按 PHP 标记进行分割
  • token_name — 获取提供的 PHP 解析器代号的符号名称
范例
token_get_all
Tokenizer


将提供的源码按 PHP 标记进行分割

Tokenizer 函数
token_name
Tokenizer 函数
PHP Manual

token_get_all

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

token_get_all — 将提供的源码按 PHP 标记进行分割

说明

array token_get_all ( string $source )

token_get_all() 解析提供的 source 源码字符，然后使用 Zend 引擎的语法分析器获取源码中的 PHP 语言的解析器代号

解析器代号列表见解析器代号列表, 或者使用 token_name() 翻译获取这个代号的字符串表示.

参数

source

需要解析的 PHP 源码.

返回值

An array of token identifiers. Each individual token identifier is either a single character (i.e.: ;, ., or a three element array containing the token index in element 0, the string content of the original token in element 1 and the line number in element 2.

范例

Example #1 token_get_all() examples

<?php
$tokens = token_get_all('<?php echo; ?>'); /* => array(
                                                  array(T_OPEN_TAG, '<?php'),
                                                  array(T_ECHO, 'echo'),
                                                  ';',
                                                  array(T_CLOSE_TAG, '?>') ); */

/* Note in the following example that the string is parsed as T_INLINE_HTML
   rather than the otherwise expected T_COMMENT (T_ML_COMMENT in PHP <5).
   This is because no open/close tags were used in the "code" provided.
   This would be equivalent to putting a comment outside of <?php ?> tags in a normal file. */
$tokens = token_get_all('/* comment */'); // => array(array(T_INLINE_HTML, '/* comment */'));
?>

更新日志

版本 | 说明
5.2.2 | Line numbers are returned in element 2

Tokenizer 函数
token_name
Tokenizer 函数


获取提供的 PHP 解析器代号的符号名称

token_get_all
URLs
Tokenizer 函数
PHP Manual

token_name

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

token_name — 获取提供的 PHP 解析器代号的符号名称

说明

string token_name ( int $token )

token_name() 获取一个 PHP token 的符号名称.

参数

token

解析器代号的值.

返回值

提供的token 的符号名.

范例

Example #1 token_name() example

<?php
// 260 is the token value for the T_EVAL token
echo token_name(260);        // -> "T_EVAL"

// a token constant maps to its own name
echo token_name(T_FUNCTION); // -> "T_FUNCTION"
?>

参见

  • List of Parser Tokens

token_get_all
URLs
Tokenizer 函数


URLs

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • URL 函数
    • base64_decode — 对使用 MIME base64 编码的数据进行解码
    • base64_encode — 使用 MIME base64 对数据进行编码
    • get_headers — 取得服务器响应一个 HTTP 请求所发送的所有标头
    • get_meta_tags — 从一个文件中提取所有的 meta 标签 content 属性，返回一个数组
    • http_build_query — 生成 URL-encode 之后的请求字符串
    • parse_url — 解析 URL，返回其组成部分
    • rawurldecode — 对已编码的 URL 字符串进行解码
    • rawurlencode — 按照 RFC 3986 对 URL 进行编码
    • urldecode — 解码已编码的 URL 字符串
    • urlencode — 编码 URL 字符串
token_name
简介
其它基本扩展


简介

处理URL字符串: 编码，解码和解析。

URLs
安装／配置
URLs


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
URLs


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

以下常量是为了与 parse_url()使用 在PHP 5.1.2版本。

PHP_URL_SCHEME (integer)
PHP_URL_HOST (integer)
PHP_URL_PORT (integer)
PHP_URL_USER (integer)
PHP_URL_PASS (integer)
PHP_URL_PATH (integer)
PHP_URL_QUERY (integer)
PHP_URL_FRAGMENT (integer)
PHP_QUERY_RFC1738 (integer)
PHP_QUERY_RFC3986 (integer)
资源类型
URL 函数
URLs


URL 函数

Table of Contents

  • base64_decode — 对使用 MIME base64 编码的数据进行解码
  • base64_encode — 使用 MIME base64 对数据进行编码
  • get_headers — 取得服务器响应一个 HTTP 请求所发送的所有标头
  • get_meta_tags — 从一个文件中提取所有的 meta 标签 content 属性，返回一个数组
  • http_build_query — 生成 URL-encode 之后的请求字符串
  • parse_url — 解析 URL，返回其组成部分
  • rawurldecode — 对已编码的 URL 字符串进行解码
  • rawurlencode — 按照 RFC 3986 对 URL 进行编码
  • urldecode — 解码已编码的 URL 字符串
  • urlencode — 编码 URL 字符串
预定义常量
base64_decode
URLs


对使用 MIME base64 编码的数据进行解码

URL 函数
base64_encode
URL 函数
PHP Manual

base64_decode

(PHP 4, PHP 5, PHP 7)

base64_decode — 对使用 MIME base64 编码的数据进行解码

说明

string base64_decode ( string $data [, bool $strict = false ] )

对 base64 编码的 data 进行解码。

参数

data

编码过的数据。

strict

如果输入的数据超出了 base64 字母表，则返回 FALSE。

返回值

返回原始数据， 或者在失败时返回 FALSE。返回的数据可能是二进制的。

更新日志

版本 | 说明
5.2.0 | 增加了 strict 。

范例

Example #1 base64_decode() 示例

<?php
$str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==';
echo base64_decode($str);
?>

以上例程会输出：

This is an encoded string

参见

  • base64_encode() - 使用 MIME base64 对数据进行编码
  • » RFC 2045 的 6.8 章节。

URL 函数
base64_encode
URL 函数


使用 MIME base64 对数据进行编码

base64_decode
get_headers
URL 函数
PHP Manual

base64_encode

(PHP 4, PHP 5, PHP 7)

base64_encode — 使用 MIME base64 对数据进行编码

说明

string base64_encode ( string $data )

使用 base64 对 data 进行编码。

设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输，例如电子邮件的主体。

Base64-encoded 数据要比原始数据多占用 33% 左右的空间。

参数

data

要编码的数据。

返回值

编码后的字符串数据， 或者在失败时返回 FALSE。

范例

Example #1 base64_encode() 示例

<?php
$str = 'This is an encoded string';
echo base64_encode($str);
?>

以上例程会输出：

VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==

参见

  • base64_decode() - 对使用 MIME base64 编码的数据进行解码
  • chunk_split() - 将字符串分割成小块
  • convert_uuencode() - 使用 uuencode 编码一个字符串
  • » RFC 2045 6.8 章节

base64_decode
get_headers
URL 函数


取得服务器响应一个 HTTP 请求所发送的所有标头

base64_encode
get_meta_tags
URL 函数
PHP Manual

get_headers

(PHP 5, PHP 7)

get_headers — 取得服务器响应一个 HTTP 请求所发送的所有标头

说明

array get_headers ( string $url [, int $format = 0 ] )

get_headers() 返回一个数组，包含有服务器响应一个 HTTP 请求所发送的标头。

参数

url

目标 URL。

format

如果将可选的 format 参数设为 1，则 get_headers() 会解析相应的信息并设定数组的键名。

返回值

返回包含有服务器响应一个 HTTP 请求所发送标头的索引或关联数组，如果失败则返回 FALSE。

更新日志

版本 | 说明
5.1.3 | 自 PHP 5.1.3 起本函数使用默认的流上下文，其可以用 stream_context_get_default() 函数设定和修改。

范例

Example #1 get_headers() 例子

<?php
$url = 'http://www.example.com';

print_r(get_headers($url));

print_r(get_headers($url, 1));
?>

以上例程的输出类似于：

Array
(
    [0] => HTTP/1.1 200 OK
    [1] => Date: Sat, 29 May 2004 12:28:13 GMT
    [2] => Server: Apache/1.3.27 (Unix)  (Red-Hat/Linux)
    [3] => Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
    [4] => ETag: "3f80f-1b6-3e1cb03b"
    [5] => Accept-Ranges: bytes
    [6] => Content-Length: 438
    [7] => Connection: close
    [8] => Content-Type: text/html
)

Array
(
    [0] => HTTP/1.1 200 OK
    [Date] => Sat, 29 May 2004 12:28:14 GMT
    [Server] => Apache/1.3.27 (Unix)  (Red-Hat/Linux)
    [Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT
    [ETag] => "3f80f-1b6-3e1cb03b"
    [Accept-Ranges] => bytes
    [Content-Length] => 438
    [Connection] => close
    [Content-Type] => text/html
)

Example #2 get_headers() using HEAD example

<?php
// By default get_headers uses a GET request to fetch the headers. If you
// want to send a HEAD request instead, you can do so using a stream context:
stream_context_set_default(
    array(
        'http' => array(
            'method' => 'HEAD'
        )
    )
);
$headers = get_headers('http://example.com');
?>

参见

  • apache_request_headers() - 获取全部 HTTP 请求头信息

base64_encode
get_meta_tags
URL 函数


从一个文件中提取所有的 meta 标签 content 属性，返回一个数组

get_headers
http_build_query
URL 函数
PHP Manual

get_meta_tags

(PHP 4, PHP 5, PHP 7)

get_meta_tags — 从一个文件中提取所有的 meta 标签 content 属性，返回一个数组

说明

array get_meta_tags ( string $filename [, bool $use_include_path = false ] )

打开 filename 逐行解析文件中的 <meta> 标签。解析工作将在 </head> 处停止。

参数

filename

HTML 文件的路径字符串。 此参数可以是本地文件也可以是一个 URL。

Example #1 get_meta_tags() 解析了什么

<meta name="author" content="name">
<meta name="keywords" content="php documentation">
<meta name="DESCRIPTION" content="a php manual">
<meta name="geo.position" content="49.33;-86.59">
</head> <!-- 解析工作在此处停止 -->
（注意回车换行 － PHP 使用一个本地函数来解析输入，所以 Mac 上的文件将不能在 Unix 上正常工作）。

use_include_path

将 use_include_path 设置为 TRUE 将使 PHP 尝试按照 include_path 标准包含路径中的每个指向去打开文件。这只用于本地文件，不适用于 URL。

返回值

返回一个数组，包含所有解析过的 meta 标签。

返回的关联数组以属性 name 的值作为键，属性 content 的值作为值，所以你可以很容易地使用标准数组函数遍历此关联数组或访问某个值。 属性 name 中的特殊字符将使用'_'替换，而其它字符则转换成小写。如果有两个 meta 标签拥有相同的 name，则只返回最后出现的那一个。

更新日志

版本 | 说明
4.0.5 | 开始支持没有使用引号括起来的 HTML 属性。

范例

Example #2 get_meta_tags() 返回什么些

<?php
// 假设上边的标签是在 www.example.com 中
$tags = get_meta_tags('http://www.example.com/');

// 注意所有的键（key）均为小写，而键中的'.'则转换成了'_'。
echo $tags['author'];       // name
echo $tags['keywords'];     // php documentation
echo $tags['description'];  // a php manual
echo $tags['geo_position']; // 49.33;-86.59
?>

注释

Note:

只有包含 name 属性的 meta 标签才会被解析。

参见

  • htmlentities() - Convert all applicable characters to HTML entities
  • urlencode() - 编码 URL 字符串

get_headers
http_build_query
URL 函数


生成 URL-encode 之后的请求字符串

get_meta_tags
parse_url
URL 函数
PHP Manual

http_build_query

(PHP 5, PHP 7)

http_build_query — 生成 URL-encode 之后的请求字符串

说明

string http_build_query ( mixed $query_data [, string $numeric_prefix [, string $arg_separator [, int $enc_type = PHP_QUERY_RFC1738 ]]] )

使用给出的关联（或下标）数组生成一个经过 URL-encode 的请求字符串。

参数

query_data

可以是数组或包含属性的对象。

一个 query_data 数组可以是简单的一维结构，也可以是由数组组成的数组（其依次可以包含其它数组）。

如果 query_data 是一个对象，只有 public 的属性会加入结果。

numeric_prefix

如果在基础数组中使用了数字下标同时给出了该参数，此参数值将会作为基础数组中的数字下标元素的前缀。

这是为了让 PHP 或其它 CGI 程序在稍后对数据进行解码时获取合法的变量名。

arg_separator

除非指定并使用了这个参数，否则会用 arg_separator.output 来分隔参数。

enc_type

默认使用 PHP_QUERY_RFC1738。

如果 enc_type 是 PHP_QUERY_RFC1738，则编码将会以 » RFC 1738 标准和 application/x-www-form-urlencoded 媒体类型进行编码，空格会被编码成加号（+）。

如果 enc_type 是 PHP_QUERY_RFC3986，将根据 » RFC 3986 编码，空格会被百分号编码（%20）。

返回值

返回一个 URL 编码后的字符串。

更新日志

版本 | 说明
5.4.0 | 加入了 enc_type 参数。
5.1.3 | 方括号也会被转义。
5.1.2 | 加入了参数 arg_separator。

范例

Example #1 http_build_query() 使用示例

<?php
$data = array('foo'=>'bar',
              'baz'=>'boom',
              'cow'=>'milk',
              'php'=>'hypertext processor');

echo http_build_query($data) . "\n";
echo http_build_query($data, '', '&amp;');

?>

以上例程会输出：

foo=bar&baz=boom&cow=milk&php=hypertext+processor
foo=bar&amp;baz=boom&amp;cow=milk&amp;php=hypertext+processor

Example #2 http_build_query() 使用数字下标的元素

<?php
$data = array('foo', 'bar', 'baz', 'boom', 'cow' => 'milk', 'php' =>'hypertext processor');

echo http_build_query($data) . "\n";
echo http_build_query($data, 'myvar_');
?>

以上例程会输出：

0=foo&1=bar&2=baz&3=boom&cow=milk&php=hypertext+processor
myvar_0=foo&myvar_1=bar&myvar_2=baz&myvar_3=boom&cow=milk&php=hypertext+processor

Example #3 http_build_query() 使用复杂的数组

<?php
$data = array('user'=>array('name'=>'Bob Smith',
                            'age'=>47,
                            'sex'=>'M',
                            'dob'=>'5/12/1956'),
              'pastimes'=>array('golf', 'opera', 'poker', 'rap'),
              'children'=>array('bobby'=>array('age'=>12,
                                               'sex'=>'M'),
                                'sally'=>array('age'=>8,
                                               'sex'=>'F')),
              'CEO');

echo http_build_query($data, 'flags_');
?>

这会输出：（为了可读性，字已经换行了）

user%5Bname%5D=Bob+Smith&user%5Bage%5D=47&user%5Bsex%5D=M&
user%5Bdob%5D=5%2F12%2F1956&pastimes%5B0%5D=golf&pastimes%5B1%5D=opera&
pastimes%5B2%5D=poker&pastimes%5B3%5D=rap&children%5Bbobby%5D%5Bage%5D=12&
children%5Bbobby%5D%5Bsex%5D=M&children%5Bsally%5D%5Bage%5D=8&
children%5Bsally%5D%5Bsex%5D=F&flags_0=CEO

Note:

只有基础数组中的数字下标元素"CEO"才获取了前缀，其它数字下标元素（如 pastimes 下的元素）则不需要为了合法的变量名而加上前缀。

Example #4 http_build_query() 使用对象

<?php
class parentClass {
    public    $pub      = 'publicParent';
    protected $prot     = 'protectedParent';
    private   $priv     = 'privateParent';
    public    $pub_bar  = Null;
    protected $prot_bar = Null;
    private   $priv_bar = Null;

    public function __construct(){
        $this->pub_bar  = new childClass();
        $this->prot_bar = new childClass();
        $this->priv_bar = new childClass();
    }
}

class childClass {
    public    $pub  = 'publicChild';
    protected $prot = 'protectedChild';
    private   $priv = 'privateChild';
}

$parent = new parentClass();

echo http_build_query($parent);
?>

以上例程会输出：

pub=publicParent&pub_bar%5Bpub%5D=publicChild

参见

  • parse_str() - 将字符串解析成多个变量
  • parse_url() - 解析 URL，返回其组成部分
  • urlencode() - 编码 URL 字符串
  • array_walk() - 使用用户自定义函数对数组中的每个元素做回调处理

get_meta_tags
parse_url
URL 函数


解析 URL，返回其组成部分

http_build_query
rawurldecode
URL 函数
PHP Manual

parse_url

(PHP 4, PHP 5, PHP 7)

parse_url — 解析 URL，返回其组成部分

说明

mixed parse_url ( string $url [, int $component = -1 ] )

本函数解析一个 URL 并返回一个关联数组，包含在 URL 中出现的各种组成部分。

本函数不是用来验证给定 URL 的合法性的，只是将其分解为下面列出的部分。不完整的 URL 也被接受，parse_url() 会尝试尽量正确地将其解析。

参数

url

要解析的 URL。无效字符将使用 _ 来替换。

component

指定 PHP_URL_SCHEME、 PHP_URL_HOST、 PHP_URL_PORT、 PHP_URL_USER、 PHP_URL_PASS、 PHP_URL_PATH、 PHP_URL_QUERY 或 PHP_URL_FRAGMENT 的其中一个来获取 URL 中指定的部分的 string。 （除了指定为 PHP_URL_PORT 后，将返回一个 integer 的值）。

返回值

对严重不合格的 URL，parse_url() 可能会返回 FALSE。

如果省略了 component 参数，将返回一个关联数组 array，在目前至少会有一个元素在该数组中。数组中可能的键有以下几种：

  • scheme - 如 http
  • host
  • port
  • user
  • pass
  • path
  • query - 在问号 ? 之后
  • fragment - 在散列符号 # 之后

如果指定了 component 参数， parse_url() 返回一个 string （或在指定为 PHP_URL_PORT 时返回一个 integer）而不是 array。如果 URL 中指定的组成部分不存在，将会返回 NULL。

更新日志

版本 | 说明
5.4.7 | 修复了 host 在 协议 省略时的识别。
5.3.3 | 在 URL 解析失败时将不会产生 E_WARNING 级别的错误。
5.1.2 | 增加了参数 component。

范例

Example #1 parse_url() 例子

<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';

print_r(parse_url($url));

echo parse_url($url, PHP_URL_PATH);
?>

以上例程会输出：

Array
(
    [scheme] => http
    [host] => hostname
    [user] => username
    [pass] => password
    [path] => /path
    [query] => arg=value
    [fragment] => anchor
)
/path

Example #2 parse_url() 解析丢失协议的例子

<?php
$url = '//www.example.com/path?googleguy=googley';

// 在 5.4.7 之前这会输出路径 "//www.example.com/path"
var_dump(parse_url($url));
?>

以上例程会输出：

array(3) {
  ["host"]=>
  string(15) "www.example.com"
  ["path"]=>
  string(5) "/path"
  ["query"]=>
  string(17) "googleguy=googley"
}

注释

Note:

本函数不能用于相对 URL。

Note:

parse_url() 是专门用来解析 URL 而不是 URI 的。不过为遵从 PHP 向后兼容的需要有个例外，对 file:// 协议允许三个斜线（file:///...）。其它任何协议都不能这样。

参见

  • pathinfo() - 返回文件路径的信息
  • parse_str() - 将字符串解析成多个变量
  • http_build_query() - 生成 URL-encode 之后的请求字符串
  • http_build_url()
  • dirname() - 返回路径中的目录部分
  • basename() - 返回路径中的文件名部分
  • » RFC 3986

http_build_query
rawurldecode
URL 函数


对已编码的 URL 字符串进行解码

parse_url
rawurlencode
URL 函数
PHP Manual

rawurldecode

(PHP 4, PHP 5, PHP 7)

rawurldecode — 对已编码的 URL 字符串进行解码

说明

string rawurldecode ( string $str )

返回字符串，此字符串中百分号（%）后跟两位十六进制数的序列都将被替换成原义字符。

参数

str

要解码的 URL。

返回值

返回解码后的 URL 字符串。

范例

Example #1 rawurldecode() 示例

<?php

echo rawurldecode('foo%20bar%40baz'); // foo bar@baz

?>

注释

Note:

rawurldecode() 不会把加号（'+'）解码为空格，而 urldecode() 可以。

参见

  • rawurlencode() - 按照 RFC 3986 对 URL 进行编码
  • urldecode() - 解码已编码的 URL 字符串
  • urlencode() - 编码 URL 字符串
  • » RFC 3986

parse_url
rawurlencode
URL 函数


按照 RFC 3986 对 URL 进行编码

rawurldecode
urldecode
URL 函数
PHP Manual

rawurlencode

(PHP 4, PHP 5, PHP 7)

rawurlencode — 按照 RFC 3986 对 URL 进行编码

说明

string rawurlencode ( string $str )

根据 » RFC 3986 编码指定的字符。

参数

str

要编码的 URL。

返回值

返回字符串，此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号（%）后跟两位十六进制数。这是在 » RFC 3986 中描述的编码，是为了保护原义字符以免其被解释为特殊的 URL 定界符，同时保护 URL 格式以免其被传输媒体（像一些邮件系统）使用字符转换时弄乱。

Note:

在 PHP 5.3.0 之前，rawurlencode 根据 » RFC 1738 来编码波浪线（~）。

更新日志

版本 | 说明
5.3.4 | 因为 rawurlencode() 使用了 EBCDIC，所以波浪线字符不会再被编码。
5.3.0 | 现在符合了» RFC 3986。

范例

Example #1 在 FTP URL 里包含一个密码

<?php
echo '<a href="ftp://user:', rawurlencode('foo @+%/'),
     '@ftp.example.com/x.txt">';
?>

以上例程会输出：

<a href="ftp://user:foo%20%40%2B%25%2F@ftp.example.com/x.txt">

或者，如果你想通过 URL 的 PATH_INFO 构成部分去传递信息：

Example #2 rawurlencode() 示例 2

<?php
echo '<a href="http://example.com/department_list_script/',
    rawurlencode('sales and marketing/Miami'), '">';
?>

以上例程会输出：

<a href="http://example.com/department_list_script/sales%20and%20marketing%2FMiami">

参见

  • rawurldecode() - 对已编码的 URL 字符串进行解码
  • urldecode() - 解码已编码的 URL 字符串
  • urlencode() - 编码 URL 字符串
  • » RFC 3986

rawurldecode
urldecode
URL 函数


解码已编码的 URL 字符串

rawurlencode
urlencode
URL 函数
PHP Manual

urldecode

(PHP 4, PHP 5, PHP 7)

urldecode — 解码已编码的 URL 字符串

说明

string urldecode ( string $str )

解码给出的已编码字符串中的任何 %##。 加号（'+'）被解码成一个空格字符。

参数

str

要解码的字符串。

返回值

返回解码后的字符串。

范例

Example #1 urldecode() 示例

<?php
$query = "my=apples&are=green+and+red";

foreach (explode('&', $query) as $chunk) {
    $param = explode("=", $chunk);

    if ($param) {
        printf("Value for parameter \"%s\" is \"%s\"<br/>\n", urldecode($param[0]), urldecode($param[1]));
    }
}
?>

注释

Warning

超全局变量 $_GET 和 $_REQUEST 已经被解码了。对 $_GET 或 $_REQUEST 里的元素使用 urldecode() 将会导致不可预计和危险的结果。

参见

  • urlencode() - 编码 URL 字符串
  • rawurlencode() - 按照 RFC 3986 对 URL 进行编码
  • rawurldecode() - 对已编码的 URL 字符串进行解码
  • » RFC 3986

rawurlencode
urlencode
URL 函数


编码 URL 字符串

urldecode
V8js
URL 函数
PHP Manual

urlencode

(PHP 4, PHP 5, PHP 7)

urlencode — 编码 URL 字符串

说明

string urlencode ( string $str )

此函数便于将字符串编码并将其用于 URL 的请求部分，同时它还便于将变量传递给下一页。

参数

str

要编码的字符串。

返回值

返回字符串，此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号（%）后跟两位十六进制数，空格则编码为加号（+）。此编码与 WWW 表单 POST 数据的编码方式是一样的，同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样。由于历史原因，此编码在将空格编码为加号（+）方面与 » RFC3896 编码（参见 rawurlencode()）不同。

范例

Example #1 urlencode() 例子

<?php
echo '<a href="mycgi?foo=', urlencode($userinput), '">';
?>

Example #2 urlencode() 与 htmlentities() 例子

<?php
$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo '<a href="mycgi?' . htmlentities($query_string) . '">';
?>

注释

Note:

注意：小心与 HTML 实体相匹配的变量。像 &amp、&copy 和 &pound 都将被浏览器解析，并使用实际实体替代所期待的变量名。这是明显的混乱，W3C 已经告诫人们好几年了。参考地址：» http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2。

PHP 通过 arg_separator.ini 指令，支持将参数分割符变成 W3C 所建议的分号。不幸的是大多数用户代理并不发送分号分隔符格式的表单数据。较为简单的解决办法是使用 &amp; 代替 & 作为分隔符。你不需要为此修改 PHP 的 arg_separator。让它仍为 &，而仅使用 htmlentities() 或 htmlspecialchars() 对你的 URL 进行编码。

参见

  • urldecode() - 解码已编码的 URL 字符串
  • htmlentities() - Convert all applicable characters to HTML entities
  • rawurlencode() - 按照 RFC 3986 对 URL 进行编码
  • rawurldecode() - 对已编码的 URL 字符串进行解码
  • » RFC 3986

urldecode
V8js
URL 函数


V8 Javascript Engine Integration

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 范例
  • V8Js — The V8Js class
    • V8Js::__construct — Construct a new V8Js object
    • V8Js::executeString — Execute a string as Javascript code
    • V8Js::getExtensions — Return an array of registered extensions
    • V8Js::getPendingException — Return pending uncaught Javascript exception
    • V8Js::registerExtension — Register Javascript extensions for V8Js
  • V8JsException — The V8JsException class
    • V8JsException::getJsFileName — The getJsFileName purpose
    • V8JsException::getJsLineNumber — The getJsLineNumber purpose
    • V8JsException::getJsSourceLine — The getJsSourceLine purpose
    • V8JsException::getJsTrace — The getJsTrace purpose
urlencode
简介
其它基本扩展


简介

This extension embeds the » V8 Javascript Engine into PHP.

V8js
安装／配置
V8js


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
V8js


需求

PHP 5.3.3+ and V8 library and headers installed in proper paths.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/v8js

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

V8js 配置选项
名字 | 默认 | 可修改范围 | 更新日志
v8js.max_disposed_contexts | 25 | PHP_INI_ALL |
v8js.flags |  | PHP_INI_ALL |

这是配置指令的简短说明。

v8js.max_disposed_contexts integer

Sets limit for disposed contexts before forcing V8 to do garbage collection.

v8js.flags string

Sets V8 command line flags. The list of available flags can be obtained in CLI mode by setting this parameter to --help. Example:

$ php -r 'ini_set("v8js.flags", "--help"); new V8Js;' | less

Note:

For these flags to be effective in runtime the ini_set() call has to be done before any V8Js objects are instantiated!

安装
资源类型
安装／配置


范例

Basic usage

Example #1 Basic Javascript execution

<?php

$v8 = new V8Js();

/* basic.js */
$JS = <<< EOT
len = print('Hello' + ' ' + 'World!' + "\\n");
len;
EOT;

try {
  var_dump($v8->executeString($JS, 'basic.js'));
} catch (V8JsException $e) {
  var_dump($e);
}

?>

以上例程会输出：

Hello World!
int(13)
资源类型
V8Js
V8js


The V8Js class

(PECL v8js >= 0.1.0)

简介

This is the core class for V8Js extension. Each instance created from this class has own context in which all JavaScript is compiled and executed.

See V8Js::__construct() for more information.

类摘要

V8Js {
/* Constants */
const string V8_VERSION ;
const integer FLAG_NONE = 1 ;
const integer FLAG_FORCE_ARRAY = 2 ;
/* Methods */
public __construct ([ string $object_name = "PHP" [, array $variables = array() [, array $extensions = array() [, bool $report_uncaught_exceptions = TRUE ]]]] )
public mixed executeString ( string $script [, string $identifier = "V8Js::executeString()" [, int $flags = V8Js::FLAG_NONE ]] )
public static array getExtensions ( void )
public V8JsException getPendingException ( void )
public static bool registerExtension ( string $extension_name , string $script [, array $dependencies = array() [, bool $auto_enable = FALSE ]] )
}

预定义常量

V8Js::V8_VERSION

The V8 Javascript Engine version.

V8Js::FLAG_NONE

No flags.

V8Js::FLAG_FORCE_ARRAY

Forces all JS objects to be associative arrays in PHP.

Table of Contents

  • V8Js::__construct — Construct a new V8Js object
  • V8Js::executeString — Execute a string as Javascript code
  • V8Js::getExtensions — Return an array of registered extensions
  • V8Js::getPendingException — Return pending uncaught Javascript exception
  • V8Js::registerExtension — Register Javascript extensions for V8Js
范例
V8Js::__construct
V8js


Construct a new V8Js object

V8Js
V8Js::executeString
V8Js
PHP Manual

V8Js::__construct

(PECL v8js >= 0.1.0)

V8Js::__construct — Construct a new V8Js object

说明

 public V8Js::__construct
  ([ string $object_name = "PHP"
 [, array $variables = array()
 [, array $extensions = array()
 [, bool $report_uncaught_exceptions = TRUE
]]]] )

Constructs a new V8Js object.

参数

object_name

The name of the object passed to Javascript.

variables

Map of PHP variables that will be available in Javascript. Must be an associative array in format array("name-for-js" => "name-of-php-variable"). Defaults to empty array.

extensions

List of extensions registered using V8Js::registerExtension() which should be available in the Javascript context of the created V8Js object.

Note:

Extensions registered to be enabled automatically do not need to be listed in this array. Also if an extension has dependencies, those dependencies can be omitted as well. Defaults to empty array.

report_uncaught_exceptions

Controls whether uncaught Javascript exceptions are reported immediately or not. Defaults to TRUE. If set to FALSE the uncaught exception can be accessed using V8Js::getPendingException().

返回值

Returns a new V8Js context object.

V8Js
V8Js::executeString
V8Js


Execute a string as Javascript code

V8Js::__construct
V8Js::getExtensions
V8Js
PHP Manual

V8Js::executeString

(PECL v8js >= 0.1.0)

V8Js::executeString — Execute a string as Javascript code

说明

public mixed V8Js::executeString ( string $script [, string $identifier = "V8Js::executeString()" [, int $flags = V8Js::FLAG_NONE ]] )

Compiles and executes the string passed with script as Javascript code.

参数

script

The code string to be executed.

identifier

Identifier string for the executed code. Used for debugging.

flags

Execution flags. This value must be one of the V8Js::FLAG_* constants, defaulting to V8Js::FLAG_NONE.

  • V8Js::FLAG_NONE: no flags

  • V8Js::FLAG_FORCE_ARRAY: forces all Javascript objects passed to PHP to be associative arrays

返回值

Returns the last variable instantiated in the Javascript code converted to matching PHP variable type.

V8Js::__construct
V8Js::getExtensions
V8Js


Return an array of registered extensions

V8Js::executeString
V8Js::getPendingException
V8Js
PHP Manual

V8Js::getExtensions

(PECL v8js >= 0.1.0)

V8Js::getExtensions — Return an array of registered extensions

说明

public static array V8Js::getExtensions ( void )

This function returns array of Javascript extensions registered using V8Js::registerExtension().

参数

此函数没有参数。

返回值

Returns an array of registered extensions or an empty array if there are none.

V8Js::executeString
V8Js::getPendingException
V8Js


Return pending uncaught Javascript exception

V8Js::getExtensions
V8Js::registerExtension
V8Js
PHP Manual

V8Js::getPendingException

(PECL v8js >= 0.1.0)

V8Js::getPendingException — Return pending uncaught Javascript exception

说明

public V8JsException V8Js::getPendingException ( void )

Returns any pending uncaught Javascript exception as V8JsException left from earlier V8Js::executeString() call(s).

参数

此函数没有参数。

返回值

Either V8JsException or NULL.

V8Js::getExtensions
V8Js::registerExtension
V8Js


Register Javascript extensions for V8Js

V8Js::getPendingException
V8JsException
V8Js
PHP Manual

V8Js::registerExtension

(PECL v8js >= 0.1.0)

V8Js::registerExtension — Register Javascript extensions for V8Js

说明

public static bool V8Js::registerExtension ( string $extension_name , string $script [, array $dependencies = array() [, bool $auto_enable = FALSE ]] )

Registers passed Javascript script as extension to be used in V8Js contexts.

参数

extension_name

Name of the extension to be registered.

script

The Javascript code to be registered.

dependencies

Array of extension names the extension to be registered depends on. Any such extension is enabled automatically when this extension is loaded.

Note:

All extensions, including the dependencies, must be registered before any V8Js are created which use them.

auto_enable

If set to TRUE, the extension will be enabled automatically in all V8Js contexts.

返回值

Returns TRUE if extension was registered successfully, FALSE otherwise.

V8Js::getPendingException
V8JsException
V8Js


The V8JsException class

(PECL v8js >= 0.1.0)

简介

类摘要

V8JsException extends Exception {
/* 属性 */
protected $JsFileName ;
protected $JsLineNumber ;
protected $JsSourceLine ;
protected $JsTrace ;
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 方法 */
final public string getJsFileName ( void )
final public int getJsLineNumber ( void )
final public string getJsSourceLine ( void )
final public string getJsTrace ( void )
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}

属性

JsFileName

JsLineNumber

JsSourceLine

JsTrace

Table of Contents

  • V8JsException::getJsFileName — The getJsFileName purpose
  • V8JsException::getJsLineNumber — The getJsLineNumber purpose
  • V8JsException::getJsSourceLine — The getJsSourceLine purpose
  • V8JsException::getJsTrace — The getJsTrace purpose
V8Js::registerExtension
V8JsException::getJsFileName
V8js


The getJsFileName purpose

V8JsException
V8JsException::getJsLineNumber
V8JsException
PHP Manual

V8JsException::getJsFileName

(PECL v8js >= 0.1.0)

V8JsException::getJsFileName — The getJsFileName purpose

说明

final public string V8JsException::getJsFileName ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

V8JsException
V8JsException::getJsLineNumber
V8JsException


The getJsLineNumber purpose

V8JsException::getJsFileName
V8JsException::getJsSourceLine
V8JsException
PHP Manual

V8JsException::getJsLineNumber

(PECL v8js >= 0.1.0)

V8JsException::getJsLineNumber — The getJsLineNumber purpose

说明

final public int V8JsException::getJsLineNumber ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

V8JsException::getJsFileName
V8JsException::getJsSourceLine
V8JsException


The getJsSourceLine purpose

V8JsException::getJsLineNumber
V8JsException::getJsTrace
V8JsException
PHP Manual

V8JsException::getJsSourceLine

(PECL v8js >= 0.1.0)

V8JsException::getJsSourceLine — The getJsSourceLine purpose

说明

final public string V8JsException::getJsSourceLine ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

V8JsException::getJsLineNumber
V8JsException::getJsTrace
V8JsException


The getJsTrace purpose

V8JsException::getJsSourceLine
Yaml
V8JsException
PHP Manual

V8JsException::getJsTrace

(PECL v8js >= 0.1.0)

V8JsException::getJsTrace — The getJsTrace purpose

说明

final public string V8JsException::getJsTrace ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

V8JsException::getJsSourceLine
Yaml
V8JsException


YAML 数据序列化

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • Callbacks
    • Parse callbacks
    • Emit callbacks
  • Yaml 函数
    • yaml_emit_file — Send the YAML representation of a value to a file
    • yaml_emit — Returns the YAML representation of a value
    • yaml_parse_file — Parse a YAML stream from a file
    • yaml_parse_url — Parse a Yaml stream from a URL
    • yaml_parse — Parse a YAML stream
V8JsException::getJsTrace
简介
其它基本扩展


简介

本扩展实现了 » YAML Ain't Markup Language (YAML) 数据序列化标准。 通过 » LibYAML library 来解析和编码。

Yaml
安装／配置
Yaml


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Yaml


需求

This extension requires the » LibYAML C library version 0.1.0 or higher to be installed.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/yaml.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Yaml 配置选项
名字 | 默认 | 可修改范围 | 更新日志
yaml.decode_binary | 0 | PHP_INI_ALL |
yaml.decode_php | 1 | PHP_INI_ALL |
yaml.decode_timestamp | 0 | PHP_INI_ALL |
yaml.output_canonical | 0 | PHP_INI_ALL |
yaml.output_indent | 2 | PHP_INI_ALL |
yaml.output_width | 80 | PHP_INI_ALL |

这是配置指令的简短说明。

yaml.decode_binary boolean

Off by default, but can be set to on to cause base64 binary encoded entities which have the explicit tag "tag:yaml.org,2002:binary" to be decoded.

yaml.decode_php boolean

On by default, but can be set to off to prevent serialized php objects which have the explicit tag "!php/object" from being unserialized.

yaml.decode_timestamp integer

Controls the decoding of both implicit and explict "tag:yaml.org,2002:timestamp" scalars in the YAML document stream. The default setting of 0 will not apply any decoding. A setting of 1 will use strtotime() to parse the timestamp value as a Unix timestamp. A setting of 2 will use date_create() to parse the timestamp value as DateTime object.

yaml.output_canonical boolean

Off by default, but can be set to on to cause canonical form output.

yaml.output_indent integer

Number of spaces to indent sections. Value should be between 1 and 10.

yaml.output_width integer

Set the preferred line width. -1 means unlimited.

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

yaml_parse() 回调方法所使用的实体标量的风格。
YAML_ANY_SCALAR_STYLE (integer)
YAML_PLAIN_SCALAR_STYLE (integer)
YAML_SINGLE_QUOTED_SCALAR_STYLE (integer)
YAML_DOUBLE_QUOTED_SCALAR_STYLE (integer)
YAML_LITERAL_SCALAR_STYLE (integer)
YAML_FOLDED_SCALAR_STYLE (integer)
yaml_parse() 回调方法 可使用的通用标签。
YAML_NULL_TAG (string)
"tag:yaml.org,2002:null"
YAML_BOOL_TAG (string)
"tag:yaml.org,2002:bool"
YAML_STR_TAG (string)
"tag:yaml.org,2002:str"
YAML_INT_TAG (string)
"tag:yaml.org,2002:int"
YAML_FLOAT_TAG (string)
"tag:yaml.org,2002:float"
YAML_TIMESTAMP_TAG (string)
"tag:yaml.org,2002:timestamp"
YAML_SEQ_TAG (string)
"tag:yaml.org,2002:seq"
YAML_MAP_TAG (string)
"tag:yaml.org,2002:map"
YAML_PHP_TAG (string)
"!php/object"
Encoding types for yaml_emit()
YAML_ANY_ENCODING (integer)
让发射器(emitter)选择一个编码。
YAML_UTF8_ENCODING (integer)
以 UTF8 编码。
YAML_UTF16LE_ENCODING (integer)
以 UTF16LE 编码。
YAML_UTF16BE_ENCODING (integer)
以 UTF16BE 编码。
yaml_emit() 的换行符类型
YAML_ANY_BREAK (integer)
让发射器(emitter)选择一个换行符。
YAML_CR_BREAK (integer)
使用 \r 作为换行符(Mac 风格)。
YAML_LN_BREAK (integer)
使用 \n 作为换行符(Unix 风格)。
YAML_CRLN_BREAK (integer)
使用 \r\n 作为换行符(DOS 风格)。
资源类型
范例
Yaml


范例

Example #1 Yaml 范例

<?php
$addr = array(
    "given" => "Chris",
    "family"=> "Dumars",
    "address"=> array(
        "lines"=> "458 Walkman Dr.
        Suite #292",
        "city"=> "Royal Oak",
        "state"=> "MI",
        "postal"=> 48046,
      ),
  );
$invoice = array (
    "invoice"=> 34843,
    "date"=> "2001-01-23",
    "bill-to"=> $addr,
    "ship-to"=> $addr,
    "product"=> array(
        array(
            "sku"=> "BL394D",
            "quantity"=> 4,
            "description"=> "Basketball",
            "price"=> 450,
          ),
        array(
            "sku"=> "BL4438H",
            "quantity"=> 1,
            "description"=> "Super Hoop",
            "price"=> 2392,
          ),
      ),
    "tax"=> 251.42,
    "total"=> 4443.52,
    "comments"=> "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.",
    );

// 把该 invoice 转换生成 YAML 的表示法
$yaml = yaml_emit($invoice);
var_dump($yaml);

// 把 YAML 转换成 PHP 变量
$parsed = yaml_parse($yaml);

// 来回转换，以检查两个结构是否相等效
var_dump($parsed == $invoice);
?>

以上例程的输出类似于：

string(631) "---
invoice: 34843
date: "2001-01-23"
bill-to:
  given: Chris
  family: Dumars
  address:
    lines: |-
      458 Walkman Dr.
              Suite #292
    city: Royal Oak
    state: MI
    postal: 48046
ship-to:
  given: Chris
  family: Dumars
  address:
    lines: |-
      458 Walkman Dr.
              Suite #292
    city: Royal Oak
    state: MI
    postal: 48046
product:
- sku: BL394D
  quantity: 4
  description: Basketball
  price: 450
- sku: BL4438H
  quantity: 1
  description: Super Hoop
  price: 2392
tax: 251.420000
total: 4443.520000
comments: Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.
...
"
bool(true)
预定义常量
Callbacks
Yaml


Callbacks

Table of Contents

  • Parse callbacks
  • Emit callbacks
范例
Parse callbacks
Yaml


Parse callbacks

Parse callbacks are invoked by yaml_parse(), yaml_parse_file() or yaml_parse_url() functions when a registered YAML tag is encountered. The callback is passed the tagged entity's value, the tag, and flags indicating the scalar entity style. The callback must return the data that the YAML parser should emit for this entity.

Example #1 Parse callback example

<?php
/**
 * Parsing callback for yaml tag.
 * @param mixed $value Data from yaml file
 * @param string $tag Tag that triggered callback
 * @param int $flags Scalar entity style (see YAML_*_SCALAR_STYLE)
 * @return mixed Value that YAML parser should emit for the given value
 */
function tag_callback ($value, $tag, $flags) {
  var_dump(func_get_args()); // debugging
  return "Hello {$value}";
}

$yaml = <<<YAML
greeting: !example/hello World
YAML;

$result = yaml_parse($yaml, 0, $ndocs, array(
    '!example/hello' => 'tag_callback',
  ));

var_dump($result);
?>

以上例程的输出类似于：

array(3) {
  [0]=>
  string(5) "World"
  [1]=>
  string(14) "!example/hello"
  [2]=>
  int(1)
}
array(1) {
  ["greeting"]=>
  string(11) "Hello World"
}
Callbacks
Emit callbacks
Callbacks


Emit callbacks

Emit callbacks are invoked when an instance of a registered class is emitted by yaml_emit() or yaml_emit_file(). The callback is passed the object to be emitted. The callback must return an array having two keys: "tag" and "data". The value associated with the "tag" key must be a string to be used as the YAML tag in the output. The value associated with the "data" key will be encoded as YAML and emitted in place of the intercepted object.

Example #1 Emit callback example

<?php
class EmitExample {
  public $data;    // data may be in any pecl/yaml suitable type

  public function __construct ($d) {
    $this->data = $d;
  }

  /**
   * Yaml emit callback function, referred on yaml_emit call by class name.
   *
   * Expected to return an array with 2 values:
   *   - 'tag': custom tag for this serialization
   *   - 'data': value to convert to yaml (array, string, bool, number)
   *
   * @param object $obj Object to be emitted
   * @return array Tag and surrogate data to emit
   */
  public static function yamlEmit (EmitExample $obj) {
    return array(
      'tag' => '!example/emit',
      'data' => $obj->data,
    );
  }
}

$emit_callbacks = array(
  'EmitExample' => array('EmitExample', 'yamlEmit')
);

$t = new EmitExample(array('a','b','c'));
$yaml = yaml_emit(
  array(
    'example' => $t,
  ),
  YAML_ANY_ENCODING,
  YAML_ANY_BREAK,
  $emit_callbacks
);
var_dump($yaml);
?>

以上例程的输出类似于：

string(43) "---
example: !example/emit
- a
- b
- c
...
"
Parse callbacks
Yaml 函数
Callbacks


Yaml 函数

Table of Contents

  • yaml_emit_file — Send the YAML representation of a value to a file
  • yaml_emit — Returns the YAML representation of a value
  • yaml_parse_file — Parse a YAML stream from a file
  • yaml_parse_url — Parse a Yaml stream from a URL
  • yaml_parse — Parse a YAML stream
Emit callbacks
yaml_emit_file
Yaml


Send the YAML representation of a value to a file

Yaml 函数
yaml_emit
Yaml 函数
PHP Manual

yaml_emit_file

(PECL yaml >= 0.5.0)

yaml_emit_file — Send the YAML representation of a value to a file

说明

bool yaml_emit_file ( string $filename , mixed $data [, int $encoding = YAML_ANY_ENCODING [, int $linebreak = YAML_ANY_BREAK [, array $callbacks = null ]]] )

Generate a YAML representation of the provided data in the filename.

参数

filename

Path to the file.

data

The data being encoded. Can be any type except a resource.

encoding

Output character encoding chosen from YAML_ANY_ENCODING, YAML_UTF8_ENCODING, YAML_UTF16LE_ENCODING, YAML_UTF16BE_ENCODING.

linebreak

Output linebreak style chosen from YAML_ANY_BREAK, YAML_CR_BREAK, YAML_LN_BREAK, YAML_CRLN_BREAK.

callbacks

Content handlers for emitting YAML nodes. Associative array of classname => callable mappings. See emit callbacks for more details.

返回值

Returns TRUE on success.

更新日志

版本 | 说明
1.1.0 | The callbacks parameter was added.

参见

  • yaml_emit() - Returns the YAML representation of a value
  • yaml_parse() - Parse a YAML stream

Yaml 函数
yaml_emit
Yaml 函数


Returns the YAML representation of a value

yaml_emit_file
yaml_parse_file
Yaml 函数
PHP Manual

yaml_emit

(PECL yaml >= 0.5.0)

yaml_emit — Returns the YAML representation of a value

说明

string yaml_emit ( mixed $data [, int $encoding = YAML_ANY_ENCODING [, int $linebreak = YAML_ANY_BREAK [, array $callbacks = null ]]] )

Generate a YAML representation of the provided data.

参数

data

The data being encoded. Can be any type except a resource.

encoding

Output character encoding chosen from YAML_ANY_ENCODING, YAML_UTF8_ENCODING, YAML_UTF16LE_ENCODING, YAML_UTF16BE_ENCODING.

linebreak

Output linebreak style chosen from YAML_ANY_BREAK, YAML_CR_BREAK, YAML_LN_BREAK, YAML_CRLN_BREAK.

callbacks

Content handlers for emitting YAML nodes. Associative array of classname => callable mappings. See emit callbacks for more details.

返回值

Returns a YAML encoded string on success.

更新日志

版本 | 说明
1.1.0 | The callbacks parameter was added.

范例

Example #1 yaml_emit() example

<?php
$addr = array(
    "given" => "Chris",
    "family"=> "Dumars",
    "address"=> array(
        "lines"=> "458 Walkman Dr.
        Suite #292",
        "city"=> "Royal Oak",
        "state"=> "MI",
        "postal"=> 48046,
      ),
  );
$invoice = array (
    "invoice"=> 34843,
    "date"=> 980208000,
    "bill-to"=> $addr,
    "ship-to"=> $addr,
    "product"=> array(
        array(
            "sku"=> "BL394D",
            "quantity"=> 4,
            "description"=> "Basketball",
            "price"=> 450,
          ),
        array(
            "sku"=> "BL4438H",
            "quantity"=> 1,
            "description"=> "Super Hoop",
            "price"=> 2392,
          ),
      ),
    "tax"=> 251.42,
    "total"=> 4443.52,
    "comments"=> "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.",
  );
var_dump(yaml_emit($invoice));
?>

以上例程的输出类似于：

string(628) "---
invoice: 34843
date: 980208000
bill-to:
  given: Chris
  family: Dumars
  address:
    lines: |-
      458 Walkman Dr.
              Suite #292
    city: Royal Oak
    state: MI
    postal: 48046
ship-to:
  given: Chris
  family: Dumars
  address:
    lines: |-
      458 Walkman Dr.
              Suite #292
    city: Royal Oak
    state: MI
    postal: 48046
product:
- sku: BL394D
  quantity: 4
  description: Basketball
  price: 450
- sku: BL4438H
  quantity: 1
  description: Super Hoop
  price: 2392
tax: 251.420000
total: 4443.520000
comments: Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.
...
"

参见

  • yaml_emit_file() - Send the YAML representation of a value to a file
  • yaml_parse() - Parse a YAML stream

yaml_emit_file
yaml_parse_file
Yaml 函数


Parse a YAML stream from a file

yaml_emit
yaml_parse_url
Yaml 函数
PHP Manual

yaml_parse_file

(PECL yaml >= 0.4.0)

yaml_parse_file — Parse a YAML stream from a file

说明

mixed yaml_parse_file ( string $filename [, int $pos = 0 [, int &$ndocs [, array $callbacks = null ]]] )

Convert all or part of a YAML document stream read from a file to a PHP variable.

参数

filename

Path to the file.

pos

Document to extract from stream (-1 for all documents, 0 for first document, ...).

ndocs

If ndocs is provided, then it is filled with the number of documents found in stream.

callbacks

Content handlers for YAML nodes. Associative array of YAML tag => callable mappings. See parse callbacks for more details.

返回值

Returns the value encoded in input in appropriate PHP type 或者在失败时返回 FALSE. If pos is -1 an array will be returned with one entry for each document found in the stream.

注释

Warning

Processing untrusted user input with yaml_parse_file() is dangerous if the use of unserialize() is enabled for nodes using the !php/object tag. This behavior can be disabled by using the yaml.decode_php ini setting.

参见

  • yaml_parse() - Parse a YAML stream
  • yaml_parse_url() - Parse a Yaml stream from a URL
  • yaml_emit() - Returns the YAML representation of a value

yaml_emit
yaml_parse_url
Yaml 函数


Parse a Yaml stream from a URL

yaml_parse_file
yaml_parse
Yaml 函数
PHP Manual

yaml_parse_url

(PECL yaml >= 0.4.0)

yaml_parse_url — Parse a Yaml stream from a URL

说明

mixed yaml_parse_url ( string $url [, int $pos = 0 [, int &$ndocs [, array $callbacks = null ]]] )

Convert all or part of a YAML document stream read from a URL to a PHP variable.

参数

url

url should be of the form "scheme://...". PHP will search for a protocol handler (also known as a wrapper) for that scheme. If no wrappers for that protocol are registered, PHP will emit a notice to help you track potential problems in your script and then continue as though filename specifies a regular file.

pos

Document to extract from stream (-1 for all documents, 0 for first document, ...).

ndocs

If ndocs is provided, then it is filled with the number of documents found in stream.

callbacks

Content handlers for YAML nodes. Associative array of YAML tag => callable mappings. See parse callbacks for more

返回值

Returns the value encoded in input in appropriate PHP type 或者在失败时返回 FALSE. If pos is -1 an array will be returned with one entry for each document found in the stream.

注释

Warning

Processing untrusted user input with yaml_parse_url() is dangerous if the use of unserialize() is enabled for nodes using the !php/object tag. This behavior can be disabled by using the yaml.decode_php ini setting.

参见

  • yaml_parse() - Parse a YAML stream
  • yaml_parse_file() - Parse a YAML stream from a file
  • yaml_emit() - Returns the YAML representation of a value

yaml_parse_file
yaml_parse
Yaml 函数


Parse a YAML stream

yaml_parse_url
Yaf
Yaml 函数
PHP Manual

yaml_parse

(PECL yaml >= 0.4.0)

yaml_parse — Parse a YAML stream

说明

mixed yaml_parse ( string $input [, int $pos = 0 [, int &$ndocs [, array $callbacks = null ]]] )

Convert all or part of a YAML document stream to a PHP variable.

参数

input

The string to parse as a YAML document stream.

pos

Document to extract from stream (-1 for all documents, 0 for first document, ...).

ndocs

If ndocs is provided, then it is filled with the number of documents found in stream.

callbacks

Content handlers for YAML nodes. Associative array of YAML tag => callable mappings. See parse callbacks for more details.

返回值

Returns the value encoded in input in appropriate PHP type 或者在失败时返回 FALSE. If pos is -1 an array will be returned with one entry for each document found in the stream.

范例

Example #1 yaml_parse() example

<?php
$yaml = <<<EOD
---
invoice: 34843
date: "2001-01-23"
bill-to: &id001
  given: Chris
  family: Dumars
  address:
    lines: |-
      458 Walkman Dr.
              Suite #292
    city: Royal Oak
    state: MI
    postal: 48046
ship-to: *id001
product:
- sku: BL394D
  quantity: 4
  description: Basketball
  price: 450
- sku: BL4438H
  quantity: 1
  description: Super Hoop
  price: 2392
tax: 251.420000
total: 4443.520000
comments: Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.
...
EOD;

$parsed = yaml_parse($yaml);
var_dump($parsed);
?>

以上例程的输出类似于：

array(8) {
  ["invoice"]=>
  int(34843)
  ["date"]=>
  string(10) "2001-01-23"
  ["bill-to"]=>
  &array(3) {
    ["given"]=>
    string(5) "Chris"
    ["family"]=>
    string(6) "Dumars"
    ["address"]=>
    array(4) {
      ["lines"]=>
      string(34) "458 Walkman Dr.
        Suite #292"
      ["city"]=>
      string(9) "Royal Oak"
      ["state"]=>
      string(2) "MI"
      ["postal"]=>
      int(48046)
    }
  }
  ["ship-to"]=>
  &array(3) {
    ["given"]=>
    string(5) "Chris"
    ["family"]=>
    string(6) "Dumars"
    ["address"]=>
    array(4) {
      ["lines"]=>
      string(34) "458 Walkman Dr.
        Suite #292"
      ["city"]=>
      string(9) "Royal Oak"
      ["state"]=>
      string(2) "MI"
      ["postal"]=>
      int(48046)
    }
  }
  ["product"]=>
  array(2) {
    [0]=>
    array(4) {
      ["sku"]=>
      string(6) "BL394D"
      ["quantity"]=>
      int(4)
      ["description"]=>
      string(10) "Basketball"
      ["price"]=>
      int(450)
    }
    [1]=>
    array(4) {
      ["sku"]=>
      string(7) "BL4438H"
      ["quantity"]=>
      int(1)
      ["description"]=>
      string(10) "Super Hoop"
      ["price"]=>
      int(2392)
    }
  }
  ["tax"]=>
  float(251.42)
  ["total"]=>
  float(4443.52)
  ["comments"]=>
  string(68) "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338."
}

注释

Warning

Processing untrusted user input with yaml_parse() is dangerous if the use of unserialize() is enabled for nodes using the !php/object tag. This behavior can be disabled by using the yaml.decode_php ini setting.

参见

  • yaml_parse_file() - Parse a YAML stream from a file
  • yaml_parse_url() - Parse a Yaml stream from a URL
  • yaml_emit() - Returns the YAML representation of a value

yaml_parse_url
Yaf
Yaml 函数


Yet Another Framework

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • 应用配置
  • Yaf_Application — The Yaf_Application class
    • Yaf_Application::app — 获取当前的Yaf_Application实例
    • Yaf_Application::bootstrap — 调用bootstrap
    • Yaf_Application::clearLastError — 清除最后的错误信息
    • Yaf_Application::__clone — Yaf_Application不能被克隆
    • Yaf_Application::__construct — Yaf_Application的构造函数
    • Yaf_Application::__destruct — 析构函数
    • Yaf_Application::environ — 获取当前Yaf_Application的环境名
    • Yaf_Application::execute — 运行回调函数
    • Yaf_Application::getAppDirectory — 获取应用的目录
    • Yaf_Application::getConfig — 获取 Yaf_Config_Abstract 的实例
    • Yaf_Application::getDispatcher — 获取 Yaf_Dispatcher 的实例
    • Yaf_Application::getLastErrorMsg — 获取最近产生的错误的错误信息
    • Yaf_Application::getLastErrorNo — 获取最后产生的错误的错误代码
    • Yaf_Application::getModules — 获取在配置文件中申明的模块
    • Yaf_Application::run — 运行 Yaf_Application
    • Yaf_Application::setAppDirectory — 改变应用目录
    • Yaf_Application::__sleep — Yaf_Application 不能被序列化
    • Yaf_Application::__wakeup — Yaf_Application 不能被反序列化
  • Yaf_Bootstrap_Abstract — The Yaf_Bootstrap_Abstract class
  • Yaf_Dispatcher — Yaf_Dispatcher 类
    • Yaf_Dispatcher::autoRender — 开启/关闭自动渲染功能
    • Yaf_Dispatcher::catchException — 开启/关闭自动异常捕获功能
    • Yaf_Dispatcher::__clone — Yaf_Dispatcher 不能被克隆
    • Yaf_Dispatcher::__construct — Yaf_Dispatcher 构造函数
    • Yaf_Dispatcher::disableView — 关闭自动渲染
    • Yaf_Dispatcher::dispatch — 分发请求
    • Yaf_Dispatcher::enableView — 开启自动渲染
    • Yaf_Dispatcher::flushInstantly — 打开关闭自动响应
    • Yaf_Dispatcher::getApplication — 获取当前的Yaf_Application实例
    • Yaf_Dispatcher::getInstance — 获取当前的Yaf_Dispatcher实例
    • Yaf_Dispatcher::getRequest — 获取当前的请求实例
    • Yaf_Dispatcher::getRouter — 获取路由器
    • Yaf_Dispatcher::initView — 初始化视图引擎并返回它
    • Yaf_Dispatcher::registerPlugin — 注册一个插件
    • Yaf_Dispatcher::returnResponse — The returnResponse purpose
    • Yaf_Dispatcher::setDefaultAction — 设置路由的默认动作
    • Yaf_Dispatcher::setDefaultController — 设置路由的默认控制器
    • Yaf_Dispatcher::setDefaultModule — 设置路由的默认模块
    • Yaf_Dispatcher::setErrorHandler — 设置错误处理函数
    • Yaf_Dispatcher::setRequest — The setRequest purpose
    • Yaf_Dispatcher::setView — 设置视图引擎
    • Yaf_Dispatcher::__sleep — Yaf_Dispatcher 不能被序列化
    • Yaf_Dispatcher::throwException — 开启/关闭异常抛出
    • Yaf_Dispatcher::__wakeup — Yaf_Dispatcher 不能被反序列化
  • Yaf_Config_Abstract — The Yaf_Config_Abstract class
    • Yaf_Config_Abstract::get — Getter
    • Yaf_Config_Abstract::readonly — 寻找只读配置
    • Yaf_Config_Abstract::set — Setter
    • Yaf_Config_Abstract::toArray — 转换为数组
  • Yaf_Config_Ini — The Yaf_Config_Ini class
    • Yaf_Config_Ini::__construct — 构造函数
    • Yaf_Config_Ini::count — 返回配置的节数量
    • Yaf_Config_Ini::current — 返回当前节点
    • Yaf_Config_Ini::__get — 读取节点配置
    • Yaf_Config_Ini::__isset — 检查节点是否存在
    • Yaf_Config_Ini::key — 返回当前元素的键
    • Yaf_Config_Ini::next — 向前移动到下一个元素
    • Yaf_Config_Ini::offsetExists — 检查一个偏移位置是否存在
    • Yaf_Config_Ini::offsetGet — 获取一个偏移位置的值
    • Yaf_Config_Ini::offsetSet — 设置一个偏移位置的值
    • Yaf_Config_Ini::offsetUnset — 复位一个偏移位置的值
    • Yaf_Config_Ini::readonly — 检查配置是否只读
    • Yaf_Config_Ini::rewind — 检查当前位置是否有效
    • Yaf_Config_Ini::__set — The __set purpose
    • Yaf_Config_Ini::toArray — 转换为数组的格式
    • Yaf_Config_Ini::valid — 检查迭代器是否有效
  • Yaf_Config_Simple — The Yaf_Config_Simple class
    • Yaf_Config_Simple::__construct — 构造函数
    • Yaf_Config_Simple::count — 返回配置的节数量
    • Yaf_Config_Simple::current — 返回当前节点
    • Yaf_Config_Simple::__get — 读取节点配置
    • Yaf_Config_Simple::__isset — 检查节点是否存在
    • Yaf_Config_Simple::key — 返回当前元素的键
    • Yaf_Config_Simple::next — 向前移动到下一个元素
    • Yaf_Config_Simple::offsetExists — 检查一个偏移位置是否存在
    • Yaf_Config_Simple::offsetGet — 获取一个偏移位置的值
    • Yaf_Config_Simple::offsetSet — 设置一个偏移位置的值
    • Yaf_Config_Simple::offsetUnset — 复位一个偏移位置的值
    • Yaf_Config_Simple::readonly — 检查配置是否只读
    • Yaf_Config_Simple::rewind — 检查当前位置是否有效
    • Yaf_Config_Simple::__set — 设置节点配置
    • Yaf_Config_Simple::toArray — 转换为数组的格式
    • Yaf_Config_Simple::valid — 检查迭代器是否有效
  • Yaf_Controller_Abstract — The Yaf_Controller_Abstract class
    • Yaf_Controller_Abstract::__clone — Yaf_Controller_Abstract 不能被克隆
    • Yaf_Controller_Abstract::__construct — Yaf_Controller_Abstract constructor
    • Yaf_Controller_Abstract::display — The display purpose
    • Yaf_Controller_Abstract::forward — The forward purpose
    • Yaf_Controller_Abstract::getInvokeArg — The getInvokeArg purpose
    • Yaf_Controller_Abstract::getInvokeArgs — The getInvokeArgs purpose
    • Yaf_Controller_Abstract::getModuleName — 获取当前控制器所属的模块名
    • Yaf_Controller_Abstract::getRequest — The getRequest purpose
    • Yaf_Controller_Abstract::getResponse — The getResponse purpose
    • Yaf_Controller_Abstract::getView — 获取当前的视图引擎
    • Yaf_Controller_Abstract::getViewpath — The getViewpath purpose
    • Yaf_Controller_Abstract::init — 控制器初始化
    • Yaf_Controller_Abstract::initView — The initView purpose
    • Yaf_Controller_Abstract::redirect — The redirect purpose
    • Yaf_Controller_Abstract::render — 渲染视图模板
    • Yaf_Controller_Abstract::setViewpath — The setViewpath purpose
  • Yaf_Action_Abstract — The Yaf_Action_Abstract class
    • Yaf_Action_Abstract::execute — 执行动作
    • Yaf_Action_Abstract::getController — 得到控制器实例
  • Yaf_View_Interface — The Yaf_View_Interface class
    • Yaf_View_Interface::assign — 为视图引擎分配一个模板变量
    • Yaf_View_Interface::display — 渲染一个视图模板, 并直接输出给请求端
    • Yaf_View_Interface::getScriptPath — The getScriptPath purpose
    • Yaf_View_Interface::render — 渲染一个视图模板
    • Yaf_View_Interface::setScriptPath — The setScriptPath purpose
  • Yaf_View_Simple — The Yaf_View_Simple Class
    • Yaf_View_Simple::assign — 为视图引擎分配一个模板变量
    • Yaf_View_Simple::assignRef — The assignRef purpose
    • Yaf_View_Simple::clear — Clear Assigned values
    • Yaf_View_Simple::__construct — Constructor of Yaf_View_Simple
    • Yaf_View_Simple::display — 渲染一个视图模板, 并直接输出给请求端
    • Yaf_View_Simple::eval — 渲染模板
    • Yaf_View_Simple::__get — 获取视图引擎的一个模板变量值
    • Yaf_View_Simple::getScriptPath — 获取模板目录
    • Yaf_View_Simple::__isset — The __isset purpose
    • Yaf_View_Simple::render — 渲染模板
    • Yaf_View_Simple::__set — 为视图引擎分配一个模板变量
    • Yaf_View_Simple::setScriptPath — 设置模板的目录
  • Yaf_Loader — The Yaf_Loader class
    • Yaf_Loader::autoload — The autoload purpose
    • Yaf_Loader::clearLocalNamespace — The clearLocalNamespace purpose
    • Yaf_Loader::__clone — The __clone purpose
    • Yaf_Loader::__construct — The __construct purpose
    • Yaf_Loader::getInstance — The getInstance purpose
    • Yaf_Loader::getLibraryPath — get the library path
    • Yaf_Loader::getLocalNamespace — The getLocalNamespace purpose
    • Yaf_Loader::import — The import purpose
    • Yaf_Loader::isLocalName — The isLocalName purpose
    • Yaf_Loader::registerLocalNamespace — 注册本地类前缀
    • Yaf_Loader::setLibraryPath — 改变library路径
    • Yaf_Loader::__sleep — The __sleep purpose
    • Yaf_Loader::__wakeup — The __wakeup purpose
  • Yaf_Plugin_Abstract — The Yaf_Plugin_Abstract class
    • Yaf_Plugin_Abstract::dispatchLoopShutdown — The dispatchLoopShutdown purpose
    • Yaf_Plugin_Abstract::dispatchLoopStartup — The dispatchLoopStartup purpose
    • Yaf_Plugin_Abstract::postDispatch — The postDispatch purpose
    • Yaf_Plugin_Abstract::preDispatch — The preDispatch purpose
    • Yaf_Plugin_Abstract::preResponse — The preResponse purpose
    • Yaf_Plugin_Abstract::routerShutdown — The routerShutdown purpose
    • Yaf_Plugin_Abstract::routerStartup — RouterStartup hook
  • Yaf_Registry — The Yaf_Registry class
    • Yaf_Registry::__clone — The __clone purpose
    • Yaf_Registry::__construct — Yaf_Registry implements singleton
    • Yaf_Registry::del — Remove an item from registry
    • Yaf_Registry::get — Retrieve an item from registry
    • Yaf_Registry::has — Check whether an item exists
    • Yaf_Registry::set — Add an item into registry
  • Yaf_Request_Abstract — The Yaf_Request_Abstract class
    • Yaf_Request_Abstract::getActionName — The getActionName purpose
    • Yaf_Request_Abstract::getBaseUri — The getBaseUri purpose
    • Yaf_Request_Abstract::getControllerName — The getControllerName purpose
    • Yaf_Request_Abstract::getEnv — 取得ENV变量的值
    • Yaf_Request_Abstract::getException — The getException purpose
    • Yaf_Request_Abstract::getLanguage — The getLanguage purpose
    • Yaf_Request_Abstract::getMethod — The getMethod purpose
    • Yaf_Request_Abstract::getModuleName — The getModuleName purpose
    • Yaf_Request_Abstract::getParam — The getParam purpose
    • Yaf_Request_Abstract::getParams — The getParams purpose
    • Yaf_Request_Abstract::getRequestUri — The getRequestUri purpose
    • Yaf_Request_Abstract::getServer — 返回SERVER变量的值
    • Yaf_Request_Abstract::isCli — The isCli purpose
    • Yaf_Request_Abstract::isDispatched — The isDispatched purpose
    • Yaf_Request_Abstract::isGet — The isGet purpose
    • Yaf_Request_Abstract::isHead — The isHead purpose
    • Yaf_Request_Abstract::isOptions — The isOptions purpose
    • Yaf_Request_Abstract::isPost — The isPost purpose
    • Yaf_Request_Abstract::isPut — The isPut purpose
    • Yaf_Request_Abstract::isRouted — The isRouted purpose
    • Yaf_Request_Abstract::isXmlHttpRequest — The isXmlHttpRequest purpose
    • Yaf_Request_Abstract::setActionName — The setActionName purpose
    • Yaf_Request_Abstract::setBaseUri — The setBaseUri purpose
    • Yaf_Request_Abstract::setControllerName — The setControllerName purpose
    • Yaf_Request_Abstract::setDispatched — The setDispatched purpose
    • Yaf_Request_Abstract::setModuleName — The setModuleName purpose
    • Yaf_Request_Abstract::setParam — The setParam purpose
    • Yaf_Request_Abstract::setRequestUri — The setRequestUri purpose
    • Yaf_Request_Abstract::setRouted — The setRouted purpose
  • Yaf_Request_Http — The Yaf_Request_Http class
    • Yaf_Request_Http::__clone — The __clone purpose
    • Yaf_Request_Http::__construct — The __construct purpose
    • Yaf_Request_Http::get — 从客户端返回变量
    • Yaf_Request_Http::getCookie — 返回Cookie变量
    • Yaf_Request_Http::getFiles — The getFiles purpose
    • Yaf_Request_Http::getPost — 返回POST变量
    • Yaf_Request_Http::getQuery — fetch a query parameter
    • Yaf_Request_Http::getRequest — The getRequest purpose
    • Yaf_Request_Http::isXmlHttpRequest — 是否为Ajax请求
  • Yaf_Request_Simple — The Yaf_Request_Simple class
    • Yaf_Request_Simple::__clone — The __clone purpose
    • Yaf_Request_Simple::__construct — The __construct purpose
    • Yaf_Request_Simple::get — The get purpose
    • Yaf_Request_Simple::getCookie — The getCookie purpose
    • Yaf_Request_Simple::getFiles — The getFiles purpose
    • Yaf_Request_Simple::getPost — The getPost purpose
    • Yaf_Request_Simple::getQuery — The getQuery purpose
    • Yaf_Request_Simple::getRequest — The getRequest purpose
    • Yaf_Request_Simple::isXmlHttpRequest — The isXmlHttpRequest purpose
  • Yaf_Response_Abstract — The Yaf_Response_Abstract class
    • Yaf_Response_Abstract::appendBody — 往已有的响应body后附加新的内容
    • Yaf_Response_Abstract::clearBody — 清除已经设置的响应body
    • Yaf_Response_Abstract::clearHeaders — The clearHeaders purpose
    • Yaf_Response_Abstract::__clone — The __clone purpose
    • Yaf_Response_Abstract::__construct — The __construct purpose
    • Yaf_Response_Abstract::__destruct — The __destruct purpose
    • Yaf_Response_Abstract::getBody — 获取已经设置的响应body
    • Yaf_Response_Abstract::getHeader — The getHeader purpose
    • Yaf_Response_Abstract::prependBody — The prependBody purpose
    • Yaf_Response_Abstract::response — send response
    • Yaf_Response_Abstract::setAllHeaders — The setAllHeaders purpose
    • Yaf_Response_Abstract::setBody — 设置响应的Body
    • Yaf_Response_Abstract::setHeader — The setHeader purpose
    • Yaf_Response_Abstract::setRedirect — The setRedirect purpose
    • Yaf_Response_Abstract::__toString — The __toString purpose
  • Yaf_Route_Interface — The Yaf_Route_Interface class
    • Yaf_Route_Interface::assemble — 将指定路由规则组合成一个url
    • Yaf_Route_Interface::route — route a request
  • Yaf_Route_Map — The Yaf_Route_Map class
    • Yaf_Route_Map::assemble — 组合url
    • Yaf_Route_Map::__construct — The __construct purpose
    • Yaf_Route_Map::route — The route purpose
  • Yaf_Route_Regex — The Yaf_Route_Regex class
    • Yaf_Route_Regex::assemble — 组合url
    • Yaf_Route_Regex::__construct — The __construct purpose
    • Yaf_Route_Regex::route — The route purpose
  • Yaf_Route_Rewrite — The Yaf_Route_Rewrite class
    • Yaf_Route_Rewrite::assemble — 组合url
    • Yaf_Route_Rewrite::__construct — The __construct purpose
    • Yaf_Route_Rewrite::route — The route purpose
  • Yaf_Router — The Yaf_Router class
    • Yaf_Router::addConfig — 向Router中添加配置文件中定义的路由
    • Yaf_Router::addRoute — 往Router中添加新的路由
    • Yaf_Router::__construct — Yaf_Router constructor
    • Yaf_Router::getCurrentRoute — 取得当前有效的路由名
    • Yaf_Router::getRoute — The getRoute purpose
    • Yaf_Router::getRoutes — The getRoutes purpose
    • Yaf_Router::route — The route purpose
  • Yaf_Route_Simple — The Yaf_Route_Simple class
    • Yaf_Route_Simple::assemble — 组合url
    • Yaf_Route_Simple::__construct — Yaf_Route_Simple constructor
    • Yaf_Route_Simple::route — Route a request
  • Yaf_Route_Static — The Yaf_Route_Static class
    • Yaf_Route_Static::assemble — 组合url
    • Yaf_Route_Static::match — The match purpose
    • Yaf_Route_Static::route — Route a request
  • Yaf_Route_Supervar — The Yaf_Route_Supervar class
    • Yaf_Route_Supervar::assemble — 组合url
    • Yaf_Route_Supervar::__construct — The __construct purpose
    • Yaf_Route_Supervar::route — The route purpose
  • Yaf_Session — The Yaf_Session class
    • Yaf_Session::__clone — The __clone purpose
    • Yaf_Session::__construct — The __construct purpose
    • Yaf_Session::count — The count purpose
    • Yaf_Session::current — The current purpose
    • Yaf_Session::del — The del purpose
    • Yaf_Session::__get — The __get purpose
    • Yaf_Session::getInstance — The getInstance purpose
    • Yaf_Session::has — The has purpose
    • Yaf_Session::__isset — The __isset purpose
    • Yaf_Session::key — The key purpose
    • Yaf_Session::next — The next purpose
    • Yaf_Session::offsetExists — The offsetExists purpose
    • Yaf_Session::offsetGet — The offsetGet purpose
    • Yaf_Session::offsetSet — The offsetSet purpose
    • Yaf_Session::offsetUnset — The offsetUnset purpose
    • Yaf_Session::rewind — The rewind purpose
    • Yaf_Session::__set — The __set purpose
    • Yaf_Session::__sleep — The __sleep purpose
    • Yaf_Session::start — The start purpose
    • Yaf_Session::__unset — The __unset purpose
    • Yaf_Session::valid — The valid purpose
    • Yaf_Session::__wakeup — The __wakeup purpose
  • Yaf_Exception — The Yaf_Exception class
    • Yaf_Exception::__construct — The __construct purpose
    • Yaf_Exception::getPrevious — The getPrevious purpose
  • Yaf_Exception_TypeError — The Yaf_Exception_TypeError class
  • Yaf_Exception_StartupError — The Yaf_Exception_StartupError class
  • Yaf_Exception_DispatchFailed — The Yaf_Exception_DispatchFailed class
  • Yaf_Exception_RouterFailed — The Yaf_Exception_RouterFailed class
  • Yaf_Exception_LoadFailed — The Yaf_Exception_LoadFailed class
  • Yaf_Exception_LoadFailed_Module — The Yaf_Exception_LoadFailed_Module class
  • Yaf_Exception_LoadFailed_Controller — The Yaf_Exception_LoadFailed_Controller class
  • Yaf_Exception_LoadFailed_Action — The Yaf_Exception_LoadFailed_Action class
  • Yaf_Exception_LoadFailed_View — The Yaf_Exception_LoadFailed_View class
yaml_parse
简介
其它基本扩展


简介

The Yet Another Framework (Yaf) 扩展是一个用来开发web应用的php框架。

Yaf需要5.2.1及以上版本PHP，早期版本可能不能正常工作。

这里有一个简单的Yaf性能测试。» Yaf性能 .

快速入门请参见 教程 .

Yaf
安装／配置
Yaf


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Yaf


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/yaf.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Yaf 配置选项
名字 | 默认 | 可修改范围 | 更新日志
yaf.library |  | its PHP_INI_ALL value |
yaf.action_prefer | 0 | its PHP_INI_ALL value |
yaf.lowcase_path | 0 | its PHP_INI_ALL value |
yaf.use_spl_autoload | 0 | its PHP_INI_ALL value |
yaf.forward_limit | 5 | its PHP_INI_ALL value |
yaf.name_suffix | 1 | its PHP_INI_ALL value |
yaf.name_separator |  | its PHP_INI_ALL value |
yaf.cache_config | 0 | its PHP_INI_SYSTEM value |
yaf.environ | product | its PHP_INI_SYSTEM value |
yaf.use_namespace | 0 | its PHP_INI_ALL value |

这是配置指令的简短说明。

yaf.library string

The global library path, Yaf_loader will search global library in this directory.

yaf.action_prefer integer

If there is only one part in PATH_INFO, should it consider as a controller or action.

If this configure On, it will be considered as a Action name.

yaf.lowcase_path integer

Whether lowercase all the path during the class autoloading.

yaf.use_spl_autoload integer

When this value is On, if Yaf_Loader can not find a class, it will return FALSE, then give chance to other auto load function to be called.

When this value is Off(default), Yaf_Loader::autoload() will always return TRUE.

yaf.forward_limit integer

The max forward count, default is 5. that means you can have a max value of 5 in the forward stack.

This is a protection for prevent recursive Yaf_Controller_Abstract::forward().

yaf.name_suffix integer

When this On, Yaf_Loader will identify a class by it's suffix to decide whether it is a MVC Class.

When this Off, Yaf_Loader will look at the prefix of the class name.

yaf.name_separator string

When this is not empty, Yaf_Loader will identify the class suffix and string value of this.

For example, when this value is "_", Yaf_Loader will take Index_Controller as a Controller Class, IndexController as a normal class.

yaf.cache_config integer

If this is On, and in the meantime you are using ini config file as the parameter of Yaf_Application(), the compiling result of the ini config file will be cached in the PHP process.

Note:

Yaf examine the mtime of the ini file, if it was changed since last compiling, Yaf will reload it.

Warning

Yaf use the ini file path as the cache entry key, so do use the absolute path in ini file path, otherwise there might be some conflicts if two application use the same relative path of ini config.

yaf.environ string

This value is "product" by default, used for Yaf to fetch the config section of a ini config file.

That is, if this value is "product", Yaf will use the section named "product" in the ini config file(the first parameter of the Yaf_Application) as the final config of the Yaf_Application.

yaf.use_namespace integer

Only works as of PHP 5.3, if this value is On, All class of Yaf will named in namespace style.

For example, Yaf_Route_Rewrite => \Yaf\Route\Rewrite, Yaf_Controller_Abstract => \Yaf\Controller_Abstract (Abstract is the keyword, can not used as a class name)

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

YAF_VERSION (string)
YAF_ENVIRON (string)
YAF_ERR_STARTUP_FAILED (integer)
YAF_ERR_ROUTE_FAILED (integer)
YAF_ERR_DISPATCH_FAILED (integer)
YAF_ERR_AUTOLOAD_FAILED (integer)
YAF_ERR_NOTFOUND_MODULE (integer)
YAF_ERR_NOTFOUND_CONTROLLER (integer)
YAF_ERR_NOTFOUND_ACTION (integer)
YAF_ERR_NOTFOUND_VIEW (integer)
YAF_ERR_CALL_FAILED (integer)
YAF_ERR_TYPE_ERROR (integer)

资源类型
范例
Yaf


范例

Example #1 一个典型的应用目录结构

- index.php
- .htaccess
+ conf
  |- application.ini //application config
- application/
  - Bootstrap.php
  + controllers
     - Index.php //default controller
  + views
     |+ index
        - index.phtml //view template for default action
  + modules
  - library
  - models
  - plugins

Example #2 入口文件

顶层目录下的index.php是整个应用的唯一入口，应该把所有请求都重定向到这个文件（在Apache+php_mod模式下可以使用.htaccess）。

<?php
define("APPLICATION_PATH",  dirname(__FILE__));

$app  = new Yaf_Application(APPLICATION_PATH . "/conf/application.ini");
$app->bootstrap() //call bootstrap methods defined in Bootstrap.php
 ->run();
?>

Example #3 重写规则

#for apache (.htaccess)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php

#for nginx
server {
  listen ****;
  server_name  domain.com;
  root   document_root;
  index  index.php index.html index.htm;

  if (!-e $request_filename) {
    rewrite ^/(.*)  /index.php/$1 last;
  }
}

#for lighttpd
$HTTP["host"] =~ "(www.)?domain.com$" {
  url.rewrite = (
     "^/(.+)/?$"  => "/index.php/$1",
  )
}

Example #4 应用配置文件

[yaf]
;APPLICATION_PATH is the constant defined in index.php
application.directory=APPLICATION_PATH "/application/"

;product section inherit from yaf section
[product:yaf]
foo=bar

Example #5 默认控制器

<?php
class IndexController extends Yaf_Controller_Abstract {
   /* default action */
   public function indexAction() {
       $this->_view->word = "hello world";
       //or
       // $this->getView()->word = "hello world";
   }
}
?>

Example #6 默认视图文件

<html>
 <head>
   <title>Hello World</title>
 </head>
 <body>
   <?php echo $word;?>
 </body>
</html>

Example #7 运行应用

以上例程的输出类似于：

<html>
 <head>
   <title>Hello World</title>
 </head>
 <body>
   hello world
 </body>
</html>

Note:

在yaf@github上有Yaf代码生成器，你也可以用它来生成上面的例子。

预定义常量
应用配置
Yaf


应用配置

你需要传递一个config数组或ini配置文件（参见 Yaf_Config_Ini） 给 Yaf_Application::__construct().

Yaf的配置文件会和用户的配置文件合并。区别在于，Yaf的配置文件是以"yaf."或"application."开头，如果两项都存在，则"application."生效。

Example #1 config为数组的例子

<?php
    $configs = array(
            "application" => array(
                "directory" => dirname(__FILE__),
                "dispatcher" => array(
                      "catchException" => 0,
                    ),
                "view" => array(
                       "ext" => "phtml",
                    ),
                ),
           );
    $app = new Yaf_Application($config);
?>

Example #2 config为ini文件的例子

[yaf]
yaf.directory = APPLICATION_PATH "/appliation"
yaf.dispatcher.catchException = 0

[product : yaf]
; user configuration list here

Yaf Application Config
名字 | 默认 | 更新日志
application.directory |  |
application.ext | "php" |
application.view.ext | "phtml" |
application.modules | "index" |
application.library | application.directory . "/library" |
application.library.directory | application.directory . "/library" |
application.library.namespace | "" |
application.bootstrap | application.directory . "/Bootstrap" . application.ext |
application.baseUri | "" |
application.dispatcher.defaultRoute |  |
application.dispatcher.throwException | 1 |
application.dispatcher.catchException | 0 |
application.dispatcher.defaultModule | "index" |
application.dispatcher.defaultController | "index" |
application.dispatcher.defaultAction | "index" |
application.system |  |

这是配置指令的简短说明。

application.directory string

应用程序的目录，包含"controllers", "views", "models", "plugins"等子目录。

Note:

这是唯一一个没有默认值的配置项，你需要手动指定它。

application.ext string

PHP脚本的扩展名，类的自动加载需要用到它( Yaf_Loader)。

application.view.ext string

视图模板扩展名。

application.modules string

注册的模块列表，以逗号分隔，用于路由处理，特别是当PATH_INFO超过三段的时候，

Yaf需要用它来判断第一段是否是一个模块。

application.library string

本地类库的目录，参见Yaf_Loader 和 yaf.library。

Note:

Yaf2.1.6以后，该配置项也可以是一个数组，当它是数组的时候，类库的路径将尝试使用application.library.directory的值。

application.library.directory string

Alias of application.library. Introduced in Yaf 2.1.6

application.library.namespace string

逗号分隔的本地类库命名空间前缀。

Yaf2.1.6以后加入

application.bootstrap string

Bootstrap类脚本文件的绝对路径。

application.baseUri string

路由处理中需要忽略的路径前缀。举个例子，请求"/prefix/controller/action"时。如果你将application.baseUri设置为"/prefix"，那么只有"/controller/action"会被当做路由路径。

通常不需要设置此值。

application.dispatcher.throwException bool

开启此项，Yaf会在发生错误的地方抛出异常。参见 Yaf_Dispatcher::throwException()。

application.dispatcher.catchException bool

开启此项，如果有未捕获的异常，Yaf将会把它定向到Error controller, Error Action。参见 Yaf_Dispatcher::catchException()。

application.dispatcher.defaultRoute string

默认路由，如果未指定，静态路由会被当做是默认路由，参见： Yaf_Router::addRoute()。

application.dispatcher.defaultModule string

默认模块名，参见 Yaf_Dispatcher::setDefaultModule()。

application.dispatcher.defaultController string

默认控制器名，参见 Yaf_Dispatcher::setDefaultController()。

application.dispatcher.defaultAction string

默认动作名，参见 Yaf_Dispatcher::setDefaultAction()。

application.system string

在application.ini中设置Yaf运行时配置，如： application.system.lowcase_path

Note:

仅有PHP_INI_ALL配置项能这样设置

范例
Yaf_Application
Yaf


The Yaf_Application class

(No version information available, might only be in Git)

简介

Yaf_Application为应用提供了一个辅助设施。 它提供了可重用的资源，常见的和模块化的引导类，还有依赖的检查。

Note:

Yaf_Application实现了单例模式。 Yaf_Application不能够被序列化和反序列化， 因为当你尝试使用PHPUnit来为Yaf写一些测试用例的时候会造成一些不必要的麻烦。

你可以使用PHPUnit的@backupGlobals注释来控制全局变量的备份和恢复操作， 从而可以解决这个问题。

类摘要

final Yaf_Application {
/* 属性 */
protected $config ;
protected $dispatcher ;
protected static $_app ;
protected $_modules ;
protected $_running ;
protected $_environ ;
/* 方法 */
public static void app ( void )
public void bootstrap ([ Yaf_Bootstrap_Abstract $bootstrap ] )
public Yaf_Application clearLastError ( void )
private void __clone ( void )
public__construct ( mixed $config [, string $envrion ] )
public void __destruct ( void )
public void environ ( void )
public void execute ( callable $entry , string $... )
public Yaf_Application getAppDirectory ( void )
public Yaf_Config_Abstract getConfig ( void )
public Yaf_Dispatcher getDispatcher ( void )
public string getLastErrorMsg ( void )
public int getLastErrorNo ( void )
public array getModules ( void )
public void run ( void )
public Yaf_Application setAppDirectory ( string $directory )
private void __sleep ( void )
private void __wakeup ( void )
}

属性

config

dispatcher

_app

_modules

_running

_environ

Table of Contents

  • Yaf_Application::app — 获取当前的Yaf_Application实例
  • Yaf_Application::bootstrap — 调用bootstrap
  • Yaf_Application::clearLastError — 清除最后的错误信息
  • Yaf_Application::__clone — Yaf_Application不能被克隆
  • Yaf_Application::__construct — Yaf_Application的构造函数
  • Yaf_Application::__destruct — 析构函数
  • Yaf_Application::environ — 获取当前Yaf_Application的环境名
  • Yaf_Application::execute — 运行回调函数
  • Yaf_Application::getAppDirectory — 获取应用的目录
  • Yaf_Application::getConfig — 获取 Yaf_Config_Abstract 的实例
  • Yaf_Application::getDispatcher — 获取 Yaf_Dispatcher 的实例
  • Yaf_Application::getLastErrorMsg — 获取最近产生的错误的错误信息
  • Yaf_Application::getLastErrorNo — 获取最后产生的错误的错误代码
  • Yaf_Application::getModules — 获取在配置文件中申明的模块
  • Yaf_Application::run — 运行 Yaf_Application
  • Yaf_Application::setAppDirectory — 改变应用目录
  • Yaf_Application::__sleep — Yaf_Application 不能被序列化
  • Yaf_Application::__wakeup — Yaf_Application 不能被反序列化
应用配置
Yaf_Application::app
Yaf


获取当前的Yaf_Application实例

Yaf_Application
Yaf_Application::bootstrap
Yaf_Application
PHP Manual

Yaf_Application::app

(Yaf >=1.0.0)

Yaf_Application::app — 获取当前的Yaf_Application实例

说明

public static void Yaf_Application::app ( void )

返回Yaf_Application的实例， 也可以使用Yaf_Dispatcher::getApplication()来得到Yaf_Application的实例 Yaf_Dispatcher::getApplication().

参数

此函数没有参数。

返回值

返回值为一个Yaf_Application的实例， 如果在调用之前没有初始化一个Yaf_Application实例的话，它将返回NULL

参见

  • Yaf_Dispatcher::getApplication() - 获取当前的Yaf_Application实例
Yaf_Application
Yaf_Application::bootstrap
Yaf_Application


调用bootstrap

Yaf_Application::app
Yaf_Application::clearLastError
Yaf_Application
PHP Manual

Yaf_Application::bootstrap

(Yaf >=1.0.0)

Yaf_Application::bootstrap — 调用bootstrap

说明

public void Yaf_Application::bootstrap ([ Yaf_Bootstrap_Abstract $bootstrap ] )

指示Yaf_Application去寻找Bootstrap，并按照声明的顺序，执行所有在Bootstrap类中定义的以_init开头的方法。 如果没有提供变量bootstrap，Yaf默认会去application.directory中寻找Bootstrap。

参数

bootstrap

A Yaf_Bootstrap_Abstract instance

返回值

Yaf_Application instance

范例

Example #1 A Bootstrap()example

<?php
/**
 * This file should be under the APPLICATION_PATH . "/application/"(which was defined in the config passed to Yaf_Application).
 * and named Bootstrap.php,  so the Yaf_Application can find it
 */
class Bootstrap extends Yaf_Bootstrap_Abstract {
    function _initConfig(Yaf_Dispatcher $dispatcher) {
        echo "1st called\n";
    }

    function _initPlugin($dispatcher) {
        echo "2nd called\n";
    }
}
?>

Example #2 Yaf_Application::bootstrap()example

<?php

defined('APPLICATION_PATH')                  // APPLICATION_PATH will be used in the ini config file
    || define('APPLICATION_PATH', __DIR__)); //__DIR__ was introduced after PHP 5.3

$application = new Yaf_Application(APPLICATION_PATH.'/conf/application.ini');
$application->bootstrap();
?>

以上例程的输出类似于：

1st called
2nd called

参见

  • Yaf_Bootstrap_Abstract
Yaf_Application::app
Yaf_Application::clearLastError
Yaf_Application


清除最后的错误信息

Yaf_Application::bootstrap
Yaf_Application::__clone
Yaf_Application
PHP Manual

Yaf_Application::clearLastError

(Yaf >=2.1.2)

Yaf_Application::clearLastError — 清除最后的错误信息

说明

public Yaf_Application Yaf_Application::clearLastError ( void )

参数

此函数没有参数。

返回值

范例

Example #1 Yaf_Application::clearLastError()example

<?php
function error_handler($errno, $errstr, $errfile, $errline) {
   Yaf_Application::app()->clearLastError();
   var_dump(Yaf_Application::app()->getLastErrorNo());
}

$config = array(
 "application" => array(
   "directory" => "/tmp/notexists",
     "dispatcher" => array(
       "throwException" => 0, //trigger error instead of throw exception when error occure
      ),
  ),
);

$app = new Yaf_Application($config);
$app->getDispatcher()->setErrorHandler("error_handler", E_RECOVERABLE_ERROR);
$app->run();
?>

以上例程的输出类似于：

int(0)
Yaf_Application::bootstrap
Yaf_Application::__clone
Yaf_Application


Yaf_Application不能被克隆

Yaf_Application::clearLastError
Yaf_Application::__construct
Yaf_Application
PHP Manual

Yaf_Application::__clone

(Yaf >=1.0.0)

Yaf_Application::__clone — Yaf_Application不能被克隆

说明

private void Yaf_Application::__clone ( void )

参数

此函数没有参数。

返回值

Yaf_Application::clearLastError
Yaf_Application::__construct
Yaf_Application


Yaf_Application的构造函数

Yaf_Application::__clone
Yaf_Application::__destruct
Yaf_Application
PHP Manual

Yaf_Application::__construct

(Yaf >=1.0.0)

Yaf_Application::__construct — Yaf_Application的构造函数

说明

publicYaf_Application::__construct ( mixed $config [, string $envrion ] )

初始化一个 Yaf_Application.

参数

config

关联数组的配置, 或者一个指向ini格式的配置文件的路径的字符串。

如果是一个ini配置文件，那配置文件中应该有一个定义了yaf.environ 的配置节。这个在生产环境中是默认的。

Note:

如果你使用了ini配置文件作为你应用配置的容器，你需要打开yaf.cache_config 来提升性能。

And the config entry(and there default value) list blow:

Example #1 A ini config file example

[product]
;this one should alway be defined, and have no default value
application.directory=APPLICATION_PATH

;following configs have default value, you may no need to define them
application.library = APPLICATION_PATH . "/library"
application.dispatcher.throwException=1
application.dispatcher.catchException=1

application.baseUri=""

;the php script ext name
ap.ext=php

;the view template ext name
ap.view.ext=phtml

ap.dispatcher.defaultModuel=Index
ap.dispatcher.defaultController=Index
ap.dispatcher.defaultAction=index

;defined modules
ap.modules=Index

envrion

Which section will be loaded as the final config

返回值

范例

Example #2 Yaf_Application::__construct()example

<?php
defined('APPLICATION_PATH')                  // APPLICATION_PATH will be used in the ini config file
    || define('APPLICATION_PATH', __DIR__)); //__DIR__ was introduced after PHP 5.3

$application = new Yaf_Application(APPLICATION_PATH.'/conf/application.ini');
$application->bootstrap()->run();
?>

以上例程的输出类似于：

Example #3 Yaf_Application::__construct()example

<?php
$config = array(
    "application" => array(
        "directory" => realpath(dirname(__FILE__)) . "/application",
    ),
);

/** Yaf_Application */
$application = new Yaf_Application($config);
$application->bootstrap()->run();
?>

以上例程的输出类似于：

参见

  • Yaf_Config_Ini
    •

Yaf_Application::__clone

Yaf_Application::__destruct

Yaf_Application


析构函数

Yaf_Application::__construct
Yaf_Application::environ
Yaf_Application
PHP Manual

Yaf_Application::__destruct

(Yaf >=1.0.0)

Yaf_Application::__destruct — 析构函数

说明

public void Yaf_Application::__destruct ( void )

参数

此函数没有参数。

返回值

Yaf_Application::__construct
Yaf_Application::environ
Yaf_Application


获取当前Yaf_Application的环境名

Yaf_Application::__destruct
Yaf_Application::execute
Yaf_Application
PHP Manual

Yaf_Application::environ

(Yaf >=1.0.0)

Yaf_Application::environ — 获取当前Yaf_Application的环境名

说明

public void Yaf_Application::environ ( void )

返回当前Yaf_Application的环境名，它被定义在yaf.environ，默认值为"product"。

参数

此函数没有参数。

返回值

范例

Example #1 Yaf_Application::environ()example

<?php
$config = array(
    "application" => array(
        "directory" => realpath(dirname(__FILE__)) . "/application",
    ),
);

/** Yaf_Application */
$application = new Yaf_Application($config);
print_r($application->environ());
?>

以上例程的输出类似于：

product
Yaf_Application::__destruct
Yaf_Application::execute
Yaf_Application


运行回调函数

Yaf_Application::environ
Yaf_Application::getAppDirectory
Yaf_Application
PHP Manual

Yaf_Application::execute

(Yaf >=1.0.0)

Yaf_Application::execute — 运行回调函数

说明

public void Yaf_Application::execute ( callable $entry , string $... )

这个方法通常用于在cron任务中运行Yaf_Application。 在cron任务中也可以使用autoloader和Bootstrap机制。

参数

entry

一个有效的回调函数

...

零个或者多个要传递给函数的参数。

返回值

范例

Example #1 Yaf_Application::execute()example

<?php
function main($argc, $argv) {
}

$config = array(
    "application" => array(
        "directory" => realpath(dirname(__FILE__)) . "/application",
    ),
);

/** Yaf_Application */
$application = new Yaf_Application($config);
$application->execute("main", $argc,  $argv);
?>

以上例程的输出类似于：

Yaf_Application::environ

Yaf_Application::getAppDirectory

Yaf_Application


获取应用的目录

Yaf_Application::execute
Yaf_Application::getConfig
Yaf_Application
PHP Manual

Yaf_Application::getAppDirectory

(Yaf >=2.1.4)

Yaf_Application::getAppDirectory — 获取应用的目录

说明

public Yaf_Application Yaf_Application::getAppDirectory ( void )

参数

directory

返回值

Yaf_Application::execute
Yaf_Application::getConfig
Yaf_Application


获取 Yaf_Config_Abstract 的实例

Yaf_Application::getAppDirectory
Yaf_Application::getDispatcher
Yaf_Application
PHP Manual

Yaf_Application::getConfig

(Yaf >=1.0.0)

Yaf_Application::getConfig — 获取 Yaf_Config_Abstract 的实例

说明

public Yaf_Config_Abstract Yaf_Application::getConfig ( void )

参数

此函数没有参数。

返回值

Yaf_Config_Abstract 的实例

范例

Example #1 Yaf_Application::getConfig()example

<?php
$config = array(
    "application" => array(
        "directory" => realpath(dirname(__FILE__)) . "/application",
    ),
);

/** Yaf_Application */
$application = new Yaf_Application($config);
print_r($application->getConfig());
?>

以上例程的输出类似于：

Yaf_Config_Simple Object
(
    [_config:protected] => Array
        (
            [application] => Array
                (
                    [directory] => /home/laruence/local/www/htdocs/application
                )

        )

    [_readonly:protected] => 1
)
Yaf_Application::getAppDirectory
Yaf_Application::getDispatcher
Yaf_Application


获取 Yaf_Dispatcher 的实例

Yaf_Application::getConfig
Yaf_Application::getLastErrorMsg
Yaf_Application
PHP Manual

Yaf_Application::getDispatcher

(Yaf >=1.0.0)

Yaf_Application::getDispatcher — 获取 Yaf_Dispatcher 的实例

说明

public Yaf_Dispatcher Yaf_Application::getDispatcher ( void )

参数

此函数没有参数。

返回值

范例

Example #1 Yaf_Application::getDispatcher()example

<?php
$config = array(
    "application" => array(
        "directory" => realpath(dirname(__FILE__)) . "/application",
    ),
);

/** Yaf_Application */
$application = new Yaf_Application($config);
print_r($application->getDispatcher());
?>

以上例程的输出类似于：

Yaf_Dispatcher Object
(
    [_router:protected] => Yaf_Router Object
        (
            [_routes:protected] => Array
                (
                    [_default] => Yaf_Route_Static Object
                        (
                        )

                )

            [_current:protected] =>
        )

    [_view:protected] =>
    [_request:protected] => Yaf_Request_Http Object
        (
            [module] =>
            [controller] =>
            [action] =>
            [method] => Cli
            [params:protected] => Array
                (
                )

            [language:protected] =>
            [_exception:protected] =>
            [_base_uri:protected] =>
            [uri:protected] =>
            [dispatched:protected] =>
            [routed:protected] =>
        )

    [_plugins:protected] => Array
        (
        )

    [_auto_render:protected] => 1
    [_return_response:protected] =>
    [_instantly_flush:protected] =>
    [_default_module:protected] => Index
    [_default_controller:protected] => Index
    [_default_action:protected] => index
    [_response] => Yaf_Response_Cli Object
        (
            [_header:protected] => Array
                (
                )

            [_body:protected] =>
            [_sendheader:protected] =>
        )

)
Yaf_Application::getConfig
Yaf_Application::getLastErrorMsg
Yaf_Application


获取最近产生的错误的错误信息

Yaf_Application::getDispatcher
Yaf_Application::getLastErrorNo
Yaf_Application
PHP Manual

Yaf_Application::getLastErrorMsg

(Yaf >=2.1.2)

Yaf_Application::getLastErrorMsg — 获取最近产生的错误的错误信息

说明

public string Yaf_Application::getLastErrorMsg ( void )

参数

此函数没有参数。

返回值

范例

Example #1 Yaf_Application::getLastErrorMsg()example

<?php
function error_handler($errno, $errstr, $errfile, $errline) {
   var_dump(Yaf_Application::app()->getLastErrorMsg());
}

$config = array(
 "application" => array(
   "directory" => "/tmp/notexists",
     "dispatcher" => array(
       "throwException" => 0, //trigger error instead of throw exception when error occure
      ),
  ),
);

$app = new Yaf_Application($config);
$app->getDispatcher()->setErrorHandler("error_handler", E_RECOVERABLE_ERROR);
$app->run();
?>

以上例程的输出类似于：

string(69) "Could not find controller script /tmp/notexists/controllers/Index.php"
Yaf_Application::getDispatcher
Yaf_Application::getLastErrorNo
Yaf_Application


获取最后产生的错误的错误代码

Yaf_Application::getLastErrorMsg
Yaf_Application::getModules
Yaf_Application
PHP Manual

Yaf_Application::getLastErrorNo

(Yaf >=2.1.2)

Yaf_Application::getLastErrorNo — 获取最后产生的错误的错误代码

说明

public int Yaf_Application::getLastErrorNo ( void )

参数

此函数没有参数。

返回值

范例

Example #1 Yaf_Application::getLastErrorNo()example

<?php
function error_handler($errno, $errstr, $errfile, $errline) {
   var_dump(Yaf_Application::app()->getLastErrorNo());
   var_dump(Yaf_Application::app()->getLastErrorNo() == YAF_ERR_NOTFOUND_CONTROLLER);
}

$config = array(
  "application" => array(
   "directory" => "/tmp/notexists",
     "dispatcher" => array(
       "throwException" => 0, //trigger error instead of throw exception when error occure
      ),
  ),
);

$app = new Yaf_Application($config);
$app->getDispatcher()->setErrorHandler("error_handler", E_RECOVERABLE_ERROR);
$app->run();
?>

以上例程的输出类似于：

int(516)
bool(true)
Yaf_Application::getLastErrorMsg
Yaf_Application::getModules
Yaf_Application


获取在配置文件中申明的模块

Yaf_Application::getLastErrorNo
Yaf_Application::run
Yaf_Application
PHP Manual

Yaf_Application::getModules

(Yaf >=1.0.0)

Yaf_Application::getModules — 获取在配置文件中申明的模块

说明

public array Yaf_Application::getModules ( void )

获取在配置文件中声明的模块，如果没有声明，它的默认值将是"Index"。

参数

此函数没有参数。

返回值

范例

Example #1 Yaf_Application::getModules()example

<?php
$config = array(
    "application" => array(
        "directory" => realpath(dirname(__FILE__)) . "/application",
    ),
);

/** Yaf_Application */
$application = new Yaf_Application($config);
print_r($application->getModules());
?>

以上例程的输出类似于：

Array
(
    [0] => Index
)
Yaf_Application::getLastErrorNo
Yaf_Application::run
Yaf_Application


运行 Yaf_Application

Yaf_Application::getModules
Yaf_Application::setAppDirectory
Yaf_Application
PHP Manual

Yaf_Application::run

(Yaf >=1.0.0)

Yaf_Application::run — 运行 Yaf_Application

说明

public void Yaf_Application::run ( void )

运行一个Yaf_Application，开始接受并处理请求，分发路由，做出相应的响应。最终将响应返回给客户端。

参数

此函数没有参数。

返回值

Yaf_Application::getModules
Yaf_Application::setAppDirectory
Yaf_Application


改变应用目录

Yaf_Application::run
Yaf_Application::__sleep
Yaf_Application
PHP Manual

Yaf_Application::setAppDirectory

(Yaf >=2.1.4)

Yaf_Application::setAppDirectory — 改变应用目录

说明

public Yaf_Application Yaf_Application::setAppDirectory ( string $directory )

参数

directory

返回值

Yaf_Application::run
Yaf_Application::__sleep
Yaf_Application


Yaf_Application 不能被序列化

Yaf_Application::setAppDirectory
Yaf_Application::__wakeup
Yaf_Application
PHP Manual

Yaf_Application::__sleep

(Yaf >=1.0.0)

Yaf_Application::__sleep — Yaf_Application 不能被序列化

说明

private void Yaf_Application::__sleep ( void )

参数

此函数没有参数。

返回值

Yaf_Application::setAppDirectory
Yaf_Application::__wakeup
Yaf_Application


Yaf_Application 不能被反序列化

Yaf_Application::__sleep
Yaf_Bootstrap_Abstract
Yaf_Application
PHP Manual

Yaf_Application::__wakeup

(Yaf >=1.0.0)

Yaf_Application::__wakeup — Yaf_Application 不能被反序列化

说明

private void Yaf_Application::__wakeup ( void )

参数

此函数没有参数。

返回值

Yaf_Application::__sleep
Yaf_Bootstrap_Abstract
Yaf_Application


The Yaf_Bootstrap_Abstract class

(No version information available, might only be in Git)

简介

Bootstrap是用来在Application运行(run)之前做一些初始化工作的机制.

你可以通过继承Yaf_Bootstrap_Abstract 来定义自己的Bootstrap类.

在Bootstrap类中所有以"_init"开头的公有的方法, 都会被按照定义顺序依次在Yaf_Application::bootstrap() 被调用的时刻调用.

范例

Example #1 Bootstrap example

<?php
   /* bootstrap class should be defined under ./application/Bootstrap.php */
   class Bootstrap extends Yaf_Bootstrap_Abstract {
        public function _initConfig(Yaf_Dispatcher $dispatcher) {
            var_dump(__METHOD__);
        }
        public function _initPlugin(Yaf_Dispatcher $dispatcher) {
            var_dump(__METHOD__);
        }
   }

   $config = array(
       "application" => array(
           "directory" => dirname(__FILE__) . "/application/",
       ),
   );

   $app = new Yaf_Application($config);
   $app->bootstrap();
?>

以上例程的输出类似于：

string(22) "Bootstrap::_initConfig"
string(22) "Bootstrap::_initPlugin"

类摘要

abstract Yaf_Bootstrap_Abstract {
/* 属性 */
/* 方法 */
}
Yaf_Application::__wakeup
Yaf_Dispatcher
Yaf


Yaf_Dispatcher 类

(Yaf >=1.0.0)

简介

Yaf_Dispatcher用于初始化处理请求的运行环境, 它协调路由来的请求, 并分发和执行发现的动作, 然后收集动作产生的响应, 输出响应给请求者, 并在整个过程完成以后返回响应.

Yaf_Dispatcher是单例模式运行的, 也就是说自始至终只生成一个Yaf_Dispatcher实例, 因此, 可以把它看成是在分发过程中生成的对象的注册表, 可以从中获取到分发过程中产生的对象.

类摘要

final Yaf_Dispatcher {
/* 属性 */
protected $_router ;
protected $_view ;
protected $_request ;
protected $_plugins ;
protected static $_instance ;
protected $_auto_render ;
protected $_return_response ;
protected $_instantly_flush ;
protected $_default_module ;
protected $_default_controller ;
protected $_default_action ;
/* 方法 */
public Yaf_Dispatcher autoRender ( bool $flag )
public Yaf_Dispatcher catchException ([ bool $flag ] )
private void __clone ( void )
public__construct ( void )
public bool disableView ( void )
public Yaf_Response_Abstract dispatch ( Yaf_Request_Abstract $request )
public Yaf_Dispatcher enableView ( void )
public Yaf_Dispatcher flushInstantly ( bool $flag )
public Yaf_Application getApplication ( void )
public static Yaf_Dispatcher getInstance ( void )
public Yaf_Request_Abstract getRequest ( void )
public Yaf_Router getRouter ( void )
public Yaf_View_Interface initView ( string $templates_dir [, array $options ] )
public Yaf_Dispatcher registerPlugin ( Yaf_Plugin_Abstract $plugin )
public Yaf_Dispatcher returnResponse ( bool $flag )
public Yaf_Dispatcher setDefaultAction ( string $action )
public Yaf_Dispatcher setDefaultController ( string $controller )
public Yaf_Dispatcher setDefaultModule ( string $module )
public Yaf_Dispatcher setErrorHandler ( call $callback , int $error_types )
public Yaf_Dispatcher setRequest ( Yaf_Request_Abstract $request )
public Yaf_Dispatcher setView ( Yaf_View_Interface $view )
private void __sleep ( void )
public Yaf_Dispatcher throwException ([ bool $flag ] )
private void __wakeup ( void )
}

属性

_router

_view

_request

_plugins

_instance

_auto_render

_return_response

_instantly_flush

_default_module

_default_controller

_default_action

Table of Contents

  • Yaf_Dispatcher::autoRender — 开启/关闭自动渲染功能
  • Yaf_Dispatcher::catchException — 开启/关闭自动异常捕获功能
  • Yaf_Dispatcher::__clone — Yaf_Dispatcher 不能被克隆
  • Yaf_Dispatcher::__construct — Yaf_Dispatcher 构造函数
  • Yaf_Dispatcher::disableView — 关闭自动渲染
  • Yaf_Dispatcher::dispatch — 分发请求
  • Yaf_Dispatcher::enableView — 开启自动渲染
  • Yaf_Dispatcher::flushInstantly — 打开关闭自动响应
  • Yaf_Dispatcher::getApplication — 获取当前的Yaf_Application实例
  • Yaf_Dispatcher::getInstance — 获取当前的Yaf_Dispatcher实例
  • Yaf_Dispatcher::getRequest — 获取当前的请求实例
  • Yaf_Dispatcher::getRouter — 获取路由器
  • Yaf_Dispatcher::initView — 初始化视图引擎并返回它
  • Yaf_Dispatcher::registerPlugin — 注册一个插件
  • Yaf_Dispatcher::returnResponse — The returnResponse purpose
  • Yaf_Dispatcher::setDefaultAction — 设置路由的默认动作
  • Yaf_Dispatcher::setDefaultController — 设置路由的默认控制器
  • Yaf_Dispatcher::setDefaultModule — 设置路由的默认模块
  • Yaf_Dispatcher::setErrorHandler — 设置错误处理函数
  • Yaf_Dispatcher::setRequest — The setRequest purpose
  • Yaf_Dispatcher::setView — 设置视图引擎
  • Yaf_Dispatcher::__sleep — Yaf_Dispatcher 不能被序列化
  • Yaf_Dispatcher::throwException — 开启/关闭异常抛出
  • Yaf_Dispatcher::__wakeup — Yaf_Dispatcher 不能被反序列化
Yaf_Bootstrap_Abstract
Yaf_Dispatcher::autoRender
Yaf


开启/关闭自动渲染功能

Yaf_Dispatcher
Yaf_Dispatcher::catchException
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::autoRender

(Yaf >=1.0.0)

Yaf_Dispatcher::autoRender — 开启/关闭自动渲染功能

说明

public Yaf_Dispatcher Yaf_Dispatcher::autoRender ( bool $flag )

在开启的情况下(Yaf默认开启)，action执行完成以后，Yaf_Dispatcher 会自动调用view引擎去渲染该action对应的视图模板。 你也可以通过调用这个函数并将 flag 参数的值设为TRUE来人工干预它。

Note:

你可以在一个action中仅仅返回FALSE来阻止当前action对应视图的自动渲染

参数

flag

bool

返回值

范例

Example #1 Yaf_Dispatcher::autoRender()example

<?php
class IndexController extends Yaf_Controller_Abstract {
     /* init method will be called as soon as a controller is initialized */
     public function init() {
         if ($this->getRequest()->isXmlHttpRequest()) {
             //do not call render for ajax request
             //we will outpu a json string
             Yaf_Dispatcher::getInstance()->autoRender(FALSE);
         }
     }

}
?>

以上例程的输出类似于：

Yaf_Dispatcher

Yaf_Dispatcher::catchException

Yaf_Dispatcher


开启/关闭自动异常捕获功能

Yaf_Dispatcher::autoRender
Yaf_Dispatcher::__clone
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::catchException

(Yaf >=1.0.0)

Yaf_Dispatcher::catchException — 开启/关闭自动异常捕获功能

说明

public Yaf_Dispatcher Yaf_Dispatcher::catchException ([ bool $flag ] )

当 application.dispatcher.throwException 开启的时候（你也可以通过调用 Yaf_Dispatcher::throwException(TRUE)() 来开启它），Yaf将会抛出异常而不是触发异常发生。

如果开启了 Yaf_Dispatcher::catchException() （可以通过设置application.dispatcher.catchException来开启），并且在你定义了异常处理的controller的情况下，Yaf会将所有未捕获的异常交给Error Controller的Error Action来处理。

参数

flag

bool

返回值

范例

Example #1 Yaf_Dispatcher::catchException()example

/* if you defined a ErrorController like following */
<?php
class ErrorController extends Yaf_Controller_Abstract {
     /**
      * you can also call to Yaf_Request_Abstract::getException to get the
      * un-caught exception.
      */
     public function error($exception) {
        /* error occurs */
        switch ($exception->getCode()) {
            case YAF_ERR_NOTFOUND_MODULE:
            case YAF_ERR_NOTFOUND_CONTROLLER:
            case YAF_ERR_NOTFOUND_ACTION:
            case YAF_ERR_NOTFOUND_VIEW:
                echo 404, ":", $exception->getMessage();
                break;
            default :
                $message = $exception->getMessage();
                echo 0, ":", $exception->getMessage();
                break;
        }
     }
}
?>

以上例程的输出类似于：

/* now if some error occur, assuming access a non-exists controller(or you can throw a exception yourself): */
404:Could not find controller script **/application/controllers/No-exists-controller.php

参见

  • Yaf_Dispatcher::throwException() - 开启/关闭异常抛出
  • Yaf_Dispatcher::setErrorHandler() - 设置错误处理函数
Yaf_Dispatcher::autoRender
Yaf_Dispatcher::__clone
Yaf_Dispatcher


Yaf_Dispatcher 不能被克隆

Yaf_Dispatcher::catchException
Yaf_Dispatcher::__construct
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::__clone

(Yaf >=1.0.0)

Yaf_Dispatcher::__clone — Yaf_Dispatcher 不能被克隆

说明

private void Yaf_Dispatcher::__clone ( void )

参数

此函数没有参数。

返回值

Yaf_Dispatcher::catchException
Yaf_Dispatcher::__construct
Yaf_Dispatcher


Yaf_Dispatcher 构造函数

Yaf_Dispatcher::__clone
Yaf_Dispatcher::disableView
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::__construct

(Yaf >=1.0.0)

Yaf_Dispatcher::__construct — Yaf_Dispatcher 构造函数

说明

publicYaf_Dispatcher::__construct ( void )

参数

此函数没有参数。

返回值

Yaf_Dispatcher::__clone
Yaf_Dispatcher::disableView
Yaf_Dispatcher


关闭自动渲染

Yaf_Dispatcher::__construct
Yaf_Dispatcher::dispatch
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::disableView

(Yaf >=1.0.0)

Yaf_Dispatcher::disableView — 关闭自动渲染

说明

public bool Yaf_Dispatcher::disableView ( void )

在一些用户自己会输出信息的情况下使用。

Note:

你可以在一个action中仅仅返回FALSE来阻止当前action对应视图的自动渲染

参数

此函数没有参数。

返回值

Yaf_Dispatcher::__construct
Yaf_Dispatcher::dispatch
Yaf_Dispatcher


分发请求

Yaf_Dispatcher::disableView
Yaf_Dispatcher::enableView
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::dispatch

(Yaf >=1.0.0)

Yaf_Dispatcher::dispatch — 分发请求

说明

public Yaf_Response_Abstract Yaf_Dispatcher::dispatch ( Yaf_Request_Abstract $request )

Yaf_Dispatcher 的这个方法做的工作很繁重.它需要一个request对象。

分发过程有三个不同的事件：

  • 路由
  • 分发
  • 响应
The dispatch process has three distinct events:
  • Routing
  • Dispatching
  • Response
路由只发生一次，当dispatch()被调用的时候，需要使用请求对象中的值。分发发生在一个循环中；一个请求可能会分发出多个action， 或者controller或者一个plugin可能重置请求对象来强制分发其他的action（参见 Yaf_Plugin_Abstract）。 当所有都执行完毕，Yaf_Dispatcher 会返回一个响应。

参数

request

返回值

Yaf_Dispatcher::disableView
Yaf_Dispatcher::enableView
Yaf_Dispatcher


开启自动渲染

Yaf_Dispatcher::dispatch
Yaf_Dispatcher::flushInstantly
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::enableView

(Yaf >=1.0.0)

Yaf_Dispatcher::enableView — 开启自动渲染

说明

public Yaf_Dispatcher Yaf_Dispatcher::enableView ( void )

参数

此函数没有参数。

返回值

Yaf_Dispatcher::dispatch
Yaf_Dispatcher::flushInstantly
Yaf_Dispatcher


打开关闭自动响应

Yaf_Dispatcher::enableView
Yaf_Dispatcher::getApplication
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::flushInstantly

(Yaf >=1.0.0)

Yaf_Dispatcher::flushInstantly — 打开关闭自动响应

说明

public Yaf_Dispatcher Yaf_Dispatcher::flushInstantly ( bool $flag )

参数

flag

返回值

Yaf_Dispatcher::enableView
Yaf_Dispatcher::getApplication
Yaf_Dispatcher


获取当前的Yaf_Application实例

Yaf_Dispatcher::flushInstantly
Yaf_Dispatcher::getInstance
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::getApplication

(Yaf >=1.0.0)

Yaf_Dispatcher::getApplication — 获取当前的Yaf_Application实例

说明

public Yaf_Application Yaf_Dispatcher::getApplication ( void )

Retrive the Yaf_Application instance. same as Yaf_Application::app(). 获取当前的Yaf_Application实例。跟 Yaf_Application::app() 相同。

参数

此函数没有参数。

返回值

参见

  • Yaf_Application::app() - 获取当前的Yaf_Application实例
Yaf_Dispatcher::flushInstantly
Yaf_Dispatcher::getInstance
Yaf_Dispatcher


获取当前的Yaf_Dispatcher实例

Yaf_Dispatcher::getApplication
Yaf_Dispatcher::getRequest
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::getInstance

(Yaf >=1.0.0)

Yaf_Dispatcher::getInstance — 获取当前的Yaf_Dispatcher实例

说明

public static Yaf_Dispatcher Yaf_Dispatcher::getInstance ( void )

参数

此函数没有参数。

返回值

Yaf_Dispatcher::getApplication
Yaf_Dispatcher::getRequest
Yaf_Dispatcher


获取当前的请求实例

Yaf_Dispatcher::getInstance
Yaf_Dispatcher::getRouter
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::getRequest

(Yaf >=1.0.0)

Yaf_Dispatcher::getRequest — 获取当前的请求实例

说明

public Yaf_Request_Abstract Yaf_Dispatcher::getRequest ( void )

参数

此函数没有参数。

返回值

Yaf_Dispatcher::getInstance
Yaf_Dispatcher::getRouter
Yaf_Dispatcher


获取路由器

Yaf_Dispatcher::getRequest
Yaf_Dispatcher::initView
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::getRouter

(Yaf >=1.0.0)

Yaf_Dispatcher::getRouter — 获取路由器

说明

public Yaf_Router Yaf_Dispatcher::getRouter ( void )

参数

此函数没有参数。

返回值

Yaf_Dispatcher::getRequest
Yaf_Dispatcher::initView
Yaf_Dispatcher


初始化视图引擎并返回它

Yaf_Dispatcher::getRouter
Yaf_Dispatcher::registerPlugin
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::initView

(Yaf >=1.0.0)

Yaf_Dispatcher::initView — 初始化视图引擎并返回它

说明

public Yaf_View_Interface Yaf_Dispatcher::initView ( string $templates_dir [, array $options ] )

参数

templates_dir

options

返回值

Yaf_Dispatcher::getRouter
Yaf_Dispatcher::registerPlugin
Yaf_Dispatcher


注册一个插件

Yaf_Dispatcher::initView
Yaf_Dispatcher::returnResponse
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::registerPlugin

(Yaf >=1.0.0)

Yaf_Dispatcher::registerPlugin — 注册一个插件

说明

public Yaf_Dispatcher Yaf_Dispatcher::registerPlugin ( Yaf_Plugin_Abstract $plugin )

Yaf_Bootstrap_Abstract). 注册一个插件（参见 Yaf_Plugin_Abstract）。

参数

plugin

返回值

范例

Example #1 Yaf_Dispatcher::registerPlugin()example

<?php
class Bootstrap extends Yaf_Bootstrap_Abstract {
  public function _initPlugin(Yaf_Dispatcher $dispatcher) {
    /**
    * Yaf assumes plugin scripts under [application.directory] .  "/plugins"
    * for this case, it will be:
    * [application.directory] . "/plugins/" . "User" . [application.ext]
    */
    $user = new UserPlugin();
    $dispatcher->registerPlugin($user);
  }
}
?>

参见

  • Yaf_Plugin_Abstract
  • Yaf_Bootstrap_Abstract
Yaf_Dispatcher::initView
Yaf_Dispatcher::returnResponse
Yaf_Dispatcher


The returnResponse purpose

Yaf_Dispatcher::registerPlugin
Yaf_Dispatcher::setDefaultAction
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::returnResponse

(Yaf >=1.0.0)

Yaf_Dispatcher::returnResponse — The returnResponse purpose

说明

public Yaf_Dispatcher Yaf_Dispatcher::returnResponse ( bool $flag )

参数

flag

返回值

Yaf_Dispatcher::registerPlugin
Yaf_Dispatcher::setDefaultAction
Yaf_Dispatcher


设置路由的默认动作

Yaf_Dispatcher::returnResponse
Yaf_Dispatcher::setDefaultController
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::setDefaultAction

(Yaf >=1.0.0)

Yaf_Dispatcher::setDefaultAction — 设置路由的默认动作

说明

public Yaf_Dispatcher Yaf_Dispatcher::setDefaultAction ( string $action )

参数

action

返回值

Yaf_Dispatcher::returnResponse
Yaf_Dispatcher::setDefaultController
Yaf_Dispatcher


设置路由的默认控制器

Yaf_Dispatcher::setDefaultAction
Yaf_Dispatcher::setDefaultModule
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::setDefaultController

(Yaf >=1.0.0)

Yaf_Dispatcher::setDefaultController — 设置路由的默认控制器

说明

public Yaf_Dispatcher Yaf_Dispatcher::setDefaultController ( string $controller )

参数

controller

返回值

Yaf_Dispatcher::setDefaultAction
Yaf_Dispatcher::setDefaultModule
Yaf_Dispatcher


设置路由的默认模块

Yaf_Dispatcher::setDefaultController
Yaf_Dispatcher::setErrorHandler
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::setDefaultModule

(Yaf >=1.0.0)

Yaf_Dispatcher::setDefaultModule — 设置路由的默认模块

说明

public Yaf_Dispatcher Yaf_Dispatcher::setDefaultModule ( string $module )

参数

module

返回值

Yaf_Dispatcher::setDefaultController
Yaf_Dispatcher::setErrorHandler
Yaf_Dispatcher


设置错误处理函数

Yaf_Dispatcher::setDefaultModule
Yaf_Dispatcher::setRequest
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::setErrorHandler

(Yaf >=1.0.0)

Yaf_Dispatcher::setErrorHandler — 设置错误处理函数

说明

public Yaf_Dispatcher Yaf_Dispatcher::setErrorHandler ( call $callback , int $error_types )

设置错误处理函数，一般在application.dispatcher.throwException关闭的情况下，Yaf会在出错的时候触发错误，这个时候，如果设置了错误处理函数，则会把控制交给错误处理函数处理。

因此，当错误发生的时候这个错误处理函数将被调用。

参数

callback

错误处理的回调函数

error_types

返回值

参见

  • Yaf_Dispatcher::throwException() - 开启/关闭异常抛出
  • Yaf_Application::getLastErrorNo() - 获取最后产生的错误的错误代码
  • Yaf_Application::getLastErrorMsg() - 获取最近产生的错误的错误信息
Yaf_Dispatcher::setDefaultModule
Yaf_Dispatcher::setRequest
Yaf_Dispatcher


The setRequest purpose

Yaf_Dispatcher::setErrorHandler
Yaf_Dispatcher::setView
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::setRequest

(Yaf >=1.0.0)

Yaf_Dispatcher::setRequest — The setRequest purpose

说明

public Yaf_Dispatcher Yaf_Dispatcher::setRequest ( Yaf_Request_Abstract $request )

参数

plugin

返回值

Yaf_Dispatcher::setErrorHandler
Yaf_Dispatcher::setView
Yaf_Dispatcher


设置视图引擎

Yaf_Dispatcher::setRequest
Yaf_Dispatcher::__sleep
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::setView

(Yaf >=1.0.0)

Yaf_Dispatcher::setView — 设置视图引擎

说明

public Yaf_Dispatcher Yaf_Dispatcher::setView ( Yaf_View_Interface $view )

如果你想使用自己的视图引擎代替 Yaf_View_Simple ， 这个函数会帮你解决这个问题。

参数

view

A Yaf_View_Interface instance

返回值

范例

Example #1 A custom View engine()example

<?php
require "/path/to/smarty/Smarty.class.php";

class Smarty_Adapter implements Yaf_View_Interface
{
    /**
     * Smarty object
     * @var Smarty
     */
    public $_smarty;

    /**
     * Constructor
     *
     * @param string $tmplPath
     * @param array $extraParams
     * @return void
     */
    public function __construct($tmplPath = null, $extraParams = array()) {
        $this->_smarty = new Smarty;

        if (null !== $tmplPath) {
            $this->setScriptPath($tmplPath);
        }

        foreach ($extraParams as $key => $value) {
            $this->_smarty->$key = $value;
        }
    }

    /**
     * Set the path to the templates
     *
     * @param string $path The directory to set as the path.
     * @return void
     */
    public function setScriptPath($path)
    {
        if (is_readable($path)) {
            $this->_smarty->template_dir = $path;
            return;
        }

        throw new Exception('Invalid path provided');
    }

    /**
     * Assign a variable to the template
     *
     * @param string $key The variable name.
     * @param mixed $val The variable value.
     * @return void
     */
    public function __set($key, $val)
    {
        $this->_smarty->assign($key, $val);
    }

    /**
     * Allows testing with empty() and isset() to work
     *
     * @param string $key
     * @return boolean
     */
    public function __isset($key)
    {
        return (null !== $this->_smarty->get_template_vars($key));
    }

    /**
     * Allows unset() on object properties to work
     *
     * @param string $key
     * @return void
     */
    public function __unset($key)
    {
        $this->_smarty->clear_assign($key);
    }

    /**
     * Assign variables to the template
     *
     * Allows setting a specific key to the specified value, OR passing
     * an array of key => value pairs to set en masse.
     *
     * @see __set()
     * @param string|array $spec The assignment strategy to use (key or
     * array of key => value pairs)
     * @param mixed $value (Optional) If assigning a named variable,
     * use this as the value.
     * @return void
     */
    public function assign($spec, $value = null) {
        if (is_array($spec)) {
            $this->_smarty->assign($spec);
            return;
        }

        $this->_smarty->assign($spec, $value);
    }

    /**
     * Clear all assigned variables
     *
     * Clears all variables assigned to Yaf_View either via
     * {@link assign()} or property overloading
     * ({@link __get()}/{@link __set()}).
     *
     * @return void
     */
    public function clearVars() {
        $this->_smarty->clear_all_assign();
    }

    /**
     * Processes a template and returns the output.
     *
     * @param string $name The template to process.
     * @return string The output.
     */
    public function render($name, $value = NULL) {
        return $this->_smarty->fetch($name);
    }

    public function display($name, $value = NULL) {
        echo $this->_smarty->fetch($name);
    }

}
?>

Example #2 Yaf_Dispatcher::setView()example

<?php
class Bootstrap extends Yaf_Bootstrap_Abstract {

    /**
     * there are some config for smarty in the config:
     *
     * smarty.left_delimiter   = "{{"
     * smarty.right_delimiter  = "}}"
     * smarty.template_dir     = APPLICATION_PATH "/views/scripts/"
     * smarty.compile_dir      = APPLICATION_PATH "/views/templates_c/"
     * smarty.cache_dir        = APPLICATION_PATH "/views/templates_d/"
     *
     */
    public function _initConfig() {
        $config = Yaf_Application::app()->getConfig();
        Yaf_Registry::set("config", $config);
    }

    public function _initLocalName() {
        /** we put class Smarty_Adapter under the local library directory */
        Yaf_Loader::getInstance()->registerLocalNamespace('Smarty');
    }

    public function _initSmarty(Yaf_Dispatcher $dispatcher) {
        $smarty = new Smarty_Adapter(null, Yaf_Registry::get("config")->get("smarty"));
        $dispatcher->setView($smarty);
        /* now the Smarty view engine become the default view engine of Yaf */
    }
}
?>

参见

  • Yaf_View_Interface
  • Yaf_View_Simple
Yaf_Dispatcher::setRequest
Yaf_Dispatcher::__sleep
Yaf_Dispatcher


Yaf_Dispatcher 不能被序列化

Yaf_Dispatcher::setView
Yaf_Dispatcher::throwException
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::__sleep

(Yaf >=1.0.0)

Yaf_Dispatcher::__sleep — Yaf_Dispatcher 不能被序列化

说明

private void Yaf_Dispatcher::__sleep ( void )

参数

此函数没有参数。

返回值

Yaf_Dispatcher::setView
Yaf_Dispatcher::throwException
Yaf_Dispatcher


开启/关闭异常抛出

Yaf_Dispatcher::__sleep
Yaf_Dispatcher::__wakeup
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::throwException

(Yaf >=1.0.0)

Yaf_Dispatcher::throwException — 开启/关闭异常抛出

说明

public Yaf_Dispatcher Yaf_Dispatcher::throwException ([ bool $flag ] )

当意外的错误发生的时候，开启/关闭异常抛出。 当开启的时候，Yaf将会抛出异常而不是触发可捕捉的错误。

你也可以使用 application.dispatcher.throwException来达到相同的目的。

参数

flag

bool

返回值

范例

Example #1 Yaf_Dispatcher::throwexception()example

<?php

$config = array(
    'application' => array(
        'directory' => dirname(__FILE__),
    ),
);
$app = new Yaf_Application($config);

$app->getDispatcher()->throwException(true);

try {
    $app->run();
} catch (Yaf_Exception $e) {
    var_dump($e->getMessage());
}
?>

以上例程的输出类似于：

string(59) "Could not find controller script /tmp/controllers/Index.php"

Example #2 Yaf_Dispatcher::throwexception()example

<?php

$config = array(
    'application' => array(
        'directory' => dirname(__FILE__),
    ),
);
$app = new Yaf_Application($config);

$app->getDispatcher()->throwException(false);

$app->run();
?>

以上例程的输出类似于：

PHP Catchable fatal error:  Yaf_Application::run(): Could not find controller script /tmp/controllers/Index.php in /tmp/1.php on line 12

参见

  • Yaf_Dispatcher::catchException() - 开启/关闭自动异常捕获功能
  • Yaf_Exception
Yaf_Dispatcher::__sleep
Yaf_Dispatcher::__wakeup
Yaf_Dispatcher


Yaf_Dispatcher 不能被反序列化

Yaf_Dispatcher::throwException
Yaf_Config_Abstract
Yaf_Dispatcher
PHP Manual

Yaf_Dispatcher::__wakeup

(Yaf >=1.0.0)

Yaf_Dispatcher::__wakeup — Yaf_Dispatcher 不能被反序列化

说明

private void Yaf_Dispatcher::__wakeup ( void )

参数

此函数没有参数。

返回值

Yaf_Dispatcher::throwException
Yaf_Config_Abstract
Yaf_Dispatcher


The Yaf_Config_Abstract class

(Yaf >=1.0.0)

简介

类摘要

abstract Yaf_Config_Abstract {
/* 属性 */
protected $_config ;
protected $_readonly ;
/* 方法 */
abstract public mixed get ( string $name , mixed $value )
abstract public bool readonly ( void )
abstract public Yaf_Config_Abstract set ( void )
abstract public array toArray ( void )
}

属性

_config

_readonly

Table of Contents

  • Yaf_Config_Abstract::get — Getter
  • Yaf_Config_Abstract::readonly — 寻找只读配置
  • Yaf_Config_Abstract::set — Setter
  • Yaf_Config_Abstract::toArray — 转换为数组
Yaf_Dispatcher::__wakeup
Yaf_Config_Abstract::get
Yaf


Getter

Yaf_Config_Abstract
Yaf_Config_Abstract::readonly
Yaf_Config_Abstract
PHP Manual

Yaf_Config_Abstract::get

(Yaf >=1.0.0)

Yaf_Config_Abstract::get — Getter

说明

abstract public mixed Yaf_Config_Abstract::get ( string $name , mixed $value )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Config_Abstract
Yaf_Config_Abstract::readonly
Yaf_Config_Abstract


寻找只读配置

Yaf_Config_Abstract::get
Yaf_Config_Abstract::set
Yaf_Config_Abstract
PHP Manual

Yaf_Config_Abstract::readonly

(Yaf >=1.0.0)

Yaf_Config_Abstract::readonly — 寻找只读配置

说明

abstract public bool Yaf_Config_Abstract::readonly ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Config_Abstract::get
Yaf_Config_Abstract::set
Yaf_Config_Abstract


Setter

Yaf_Config_Abstract::readonly
Yaf_Config_Abstract::toArray
Yaf_Config_Abstract
PHP Manual

Yaf_Config_Abstract::set

(Yaf >=1.0.0)

Yaf_Config_Abstract::set — Setter

说明

abstract public Yaf_Config_Abstract Yaf_Config_Abstract::set ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Config_Abstract::readonly
Yaf_Config_Abstract::toArray
Yaf_Config_Abstract


转换为数组

Yaf_Config_Abstract::set
Yaf_Config_Ini
Yaf_Config_Abstract
PHP Manual

Yaf_Config_Abstract::toArray

(Yaf >=1.0.0)

Yaf_Config_Abstract::toArray — 转换为数组

说明

abstract public array Yaf_Config_Abstract::toArray ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Config_Abstract::set
Yaf_Config_Ini
Yaf_Config_Abstract


The Yaf_Config_Ini class

(Yaf >=1.0.0)

简介

Yaf_Config_Ini允许开发者通过嵌套的对象属性语法在应用程序中用熟悉的INI格式存储和读取配置数据。 INI格式在提供拥有配置数据键的等级结构和配置数据节之间的继承能力方面具有专长。 配置数据等级结构通过用点或者句号(.)分离键值。 一个节可以扩展或者通过在节的名称之后带一个冒号(:)和被继承的配置数据的节的名称来从另一个节继承。

Note:

Yaf_Config_Ini利用PHP的函数parse_ini_file()来解析配置文件的。 请仔细查看这个函数的文档，注意它的一些特殊用途。以及它传递给Yaf_Config_Ini的一些比如 "TRUE", "FALSE","yes", "no", 和"NULL"的特殊值的处理方式

类摘要

Yaf_Config_Ini extends Yaf_Config_Abstract implements Iterator , Traversable , ArrayAccess , Countable {
/* 属性 */
/* 方法 */
public __construct ( string $config_file [, string $section ] )
public void count ( void )
public void current ( void )
public void __get ([ string $name ] )
public void __isset ( string $name )
public void key ( void )
public void next ( void )
public void offsetExists ( string $name )
public void offsetGet ( string $name )
public void offsetSet ( string $name , string $value )
public void offsetUnset ( string $name )
public void readonly ( void )
public void rewind ( void )
public void __set ( string $name , mixed $value )
public void toArray ( void )
public void valid ( void )
/* 继承的方法 */
abstract public mixed Yaf_Config_Abstract::get ( string $name , mixed $value )
abstract public bool Yaf_Config_Abstract::readonly ( void )
abstract public Yaf_Config_Abstract Yaf_Config_Abstract::set ( void )
abstract public array Yaf_Config_Abstract::toArray ( void )
}

属性

_config

_readonly

范例

Example #1 Yaf_Config_Ini()example

这个例子说明了使用Yaf_Config_Ini从一个INI配置文件中获取配置数据的基本用法。 这个例子中既有生产环境的配置方法也有演示环境的配置方法。 因为演示环境的配置跟生产环境的非常类似，所以演示环境的配置继承了生产环境的配置。 在复杂的情况下，决定是任意的，也可以写成相反的。在更复杂的情况下，生产环境继承自演示环境不是不可能的。 假设，以下配置数据都包含在/path/to/config.ini中：

; Production site configuration data
[production]
webhost                  = www.example.com
database.adapter         = pdo_mysql
database.params.host     = db.example.com
database.params.username = dbuser
database.params.password = secret
database.params.dbname   = dbname

; Staging site configuration data inherits from production and
; overrides values as necessary
[staging : production]
database.params.host     = dev.example.com
database.params.username = devuser
database.params.password = devsecret
<?php
$config = new Yaf_Config_Ini('/path/to/config.ini', 'staging');

var_dump($config->database->params->host);
var_dump($config->database->params->dbname);
var_dump($config->get("database.params.username"));
?>

以上例程的输出类似于：

string(15) "dev.example.com"
string(6) "dbname"
string(7) "devuser

Table of Contents

  • Yaf_Config_Ini::__construct — 构造函数
  • Yaf_Config_Ini::count — 返回配置的节数量
  • Yaf_Config_Ini::current — 返回当前节点
  • Yaf_Config_Ini::__get — 读取节点配置
  • Yaf_Config_Ini::__isset — 检查节点是否存在
  • Yaf_Config_Ini::key — 返回当前元素的键
  • Yaf_Config_Ini::next — 向前移动到下一个元素
  • Yaf_Config_Ini::offsetExists — 检查一个偏移位置是否存在
  • Yaf_Config_Ini::offsetGet — 获取一个偏移位置的值
  • Yaf_Config_Ini::offsetSet — 设置一个偏移位置的值
  • Yaf_Config_Ini::offsetUnset — 复位一个偏移位置的值
  • Yaf_Config_Ini::readonly — 检查配置是否只读
  • Yaf_Config_Ini::rewind — 检查当前位置是否有效
  • Yaf_Config_Ini::__set — The __set purpose
  • Yaf_Config_Ini::toArray — 转换为数组的格式
  • Yaf_Config_Ini::valid — 检查迭代器是否有效
Yaf_Config_Abstract::toArray
Yaf_Config_Ini::__construct
Yaf


构造函数

Yaf_Config_Ini
Yaf_Config_Ini::count
Yaf_Config_Ini
PHP Manual

Yaf_Config_Ini::__construct

(Yaf >=1.0.0)

Yaf_Config_Ini::__construct — 构造函数

说明

public Yaf_Config_Ini::__construct ( string $config_file [, string $section ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

config_file

section

返回值

Yaf_Config_Ini
Yaf_Config_Ini::count
Yaf_Config_Ini


返回配置的节数量

Yaf_Config_Ini::__construct
Yaf_Config_Ini::current
Yaf_Config_Ini
PHP Manual

Yaf_Config_Ini::count

(Yaf >=1.0.0)

Yaf_Config_Ini::count — 返回配置的节数量

说明

public void Yaf_Config_Ini::count ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Config_Ini::__construct
Yaf_Config_Ini::current
Yaf_Config_Ini


返回当前节点

Yaf_Config_Ini::count
Yaf_Config_Ini::__get
Yaf_Config_Ini
PHP Manual

Yaf_Config_Ini::current

(Yaf >=1.0.0)

Yaf_Config_Ini::current — 返回当前节点

说明

public void Yaf_Config_Ini::current ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Config_Ini::count
Yaf_Config_Ini::__get
Yaf_Config_Ini


读取节点配置

Yaf_Config_Ini::current
Yaf_Config_Ini::__isset
Yaf_Config_Ini
PHP Manual

Yaf_Config_Ini::__get

(Yaf >=1.0.0)

Yaf_Config_Ini::__get — 读取节点配置

说明

public void Yaf_Config_Ini::__get ([ string $name ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

返回值

Yaf_Config_Ini::current
Yaf_Config_Ini::__isset
Yaf_Config_Ini


检查节点是否存在

Yaf_Config_Ini::__get
Yaf_Config_Ini::key
Yaf_Config_Ini
PHP Manual

Yaf_Config_Ini::__isset

(Yaf >=1.0.0)

Yaf_Config_Ini::__isset — 检查节点是否存在

说明

public void Yaf_Config_Ini::__isset ( string $name )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

返回值

Yaf_Config_Ini::__get
Yaf_Config_Ini::key
Yaf_Config_Ini


返回当前元素的键

Yaf_Config_Ini::__isset
Yaf_Config_Ini::next
Yaf_Config_Ini
PHP Manual

Yaf_Config_Ini::key

(Yaf >=1.0.0)

Yaf_Config_Ini::key — 返回当前元素的键

说明

public void Yaf_Config_Ini::key ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Config_Ini::__isset
Yaf_Config_Ini::next
Yaf_Config_Ini


向前移动到下一个元素

Yaf_Config_Ini::key
Yaf_Config_Ini::offsetExists
Yaf_Config_Ini
PHP Manual

Yaf_Config_Ini::next

(Yaf >=1.0.0)

Yaf_Config_Ini::next — 向前移动到下一个元素

说明

public void Yaf_Config_Ini::next ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Config_Ini::key
Yaf_Config_Ini::offsetExists
Yaf_Config_Ini


检查一个偏移位置是否存在

Yaf_Config_Ini::next
Yaf_Config_Ini::offsetGet
Yaf_Config_Ini
PHP Manual

Yaf_Config_Ini::offsetExists

(Yaf >=1.0.0)

Yaf_Config_Ini::offsetExists — 检查一个偏移位置是否存在

说明

public void Yaf_Config_Ini::offsetExists ( string $name )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

返回值

Yaf_Config_Ini::next
Yaf_Config_Ini::offsetGet
Yaf_Config_Ini


获取一个偏移位置的值

Yaf_Config_Ini::offsetExists
Yaf_Config_Ini::offsetSet
Yaf_Config_Ini
PHP Manual

Yaf_Config_Ini::offsetGet

(Yaf >=1.0.0)

Yaf_Config_Ini::offsetGet — 获取一个偏移位置的值

说明

public void Yaf_Config_Ini::offsetGet ( string $name )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

返回值

Yaf_Config_Ini::offsetExists
Yaf_Config_Ini::offsetSet
Yaf_Config_Ini


设置一个偏移位置的值

Yaf_Config_Ini::offsetGet
Yaf_Config_Ini::offsetUnset
Yaf_Config_Ini
PHP Manual

Yaf_Config_Ini::offsetSet

(Yaf >=1.0.0)

Yaf_Config_Ini::offsetSet — 设置一个偏移位置的值

说明

public void Yaf_Config_Ini::offsetSet ( string $name , string $value )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

value

返回值

Yaf_Config_Ini::offsetGet
Yaf_Config_Ini::offsetUnset
Yaf_Config_Ini


复位一个偏移位置的值

Yaf_Config_Ini::offsetSet
Yaf_Config_Ini::readonly
Yaf_Config_Ini
PHP Manual

Yaf_Config_Ini::offsetUnset

(Yaf >=1.0.0)

Yaf_Config_Ini::offsetUnset — 复位一个偏移位置的值

说明

public void Yaf_Config_Ini::offsetUnset ( string $name )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

返回值

Yaf_Config_Ini::offsetSet
Yaf_Config_Ini::readonly
Yaf_Config_Ini


检查配置是否只读

Yaf_Config_Ini::offsetUnset
Yaf_Config_Ini::rewind
Yaf_Config_Ini
PHP Manual

Yaf_Config_Ini::readonly

(Yaf >=1.0.0)

Yaf_Config_Ini::readonly — 检查配置是否只读

说明

public void Yaf_Config_Ini::readonly ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Config_Ini::offsetUnset
Yaf_Config_Ini::rewind
Yaf_Config_Ini


检查当前位置是否有效

Yaf_Config_Ini::readonly
Yaf_Config_Ini::__set
Yaf_Config_Ini
PHP Manual

Yaf_Config_Ini::rewind

(Yaf >=1.0.0)

Yaf_Config_Ini::rewind — 检查当前位置是否有效

说明

public void Yaf_Config_Ini::rewind ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Config_Ini::readonly
Yaf_Config_Ini::__set
Yaf_Config_Ini


The __set purpose

Yaf_Config_Ini::rewind
Yaf_Config_Ini::toArray
Yaf_Config_Ini
PHP Manual

Yaf_Config_Ini::__set

(Yaf >=1.0.0)

Yaf_Config_Ini::__set — The __set purpose

说明

public void Yaf_Config_Ini::__set ( string $name , mixed $value )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

value

返回值

Yaf_Config_Ini::rewind
Yaf_Config_Ini::toArray
Yaf_Config_Ini


转换为数组的格式

Yaf_Config_Ini::__set
Yaf_Config_Ini::valid
Yaf_Config_Ini
PHP Manual

Yaf_Config_Ini::toArray

(Yaf >=1.0.0)

Yaf_Config_Ini::toArray — 转换为数组的格式

说明

public void Yaf_Config_Ini::toArray ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Config_Ini::__set
Yaf_Config_Ini::valid
Yaf_Config_Ini


检查迭代器是否有效

Yaf_Config_Ini::toArray
Yaf_Config_Simple
Yaf_Config_Ini
PHP Manual

Yaf_Config_Ini::valid

(Yaf >=1.0.0)

Yaf_Config_Ini::valid — 检查迭代器是否有效

说明

public void Yaf_Config_Ini::valid ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Config_Ini::toArray
Yaf_Config_Simple
Yaf_Config_Ini


The Yaf_Config_Simple class

(Yaf >=1.0.0)

简介

Yaf_Config_Simple 是 Yad_Config_ini 的简洁版本，只允许传入数组进行初始化，并提供了设置readonly的参数。

类摘要

Yaf_Config_Simple extends Yaf_Config_Abstract implements Iterator , Traversable , ArrayAccess , Countable {
/* 属性 */
protected $_readonly ;
/* 方法 */
public __construct ( string $config_file [, string $section ] )
public void count ( void )
public void current ( void )
public void __get ([ string $name ] )
public void __isset ( string $name )
public void key ( void )
public void next ( void )
public void offsetExists ( string $name )
public void offsetGet ( string $name )
public void offsetSet ( string $name , string $value )
public void offsetUnset ( string $name )
public void readonly ( void )
public void rewind ( void )
public void __set ( string $name , string $value )
public void toArray ( void )
public void valid ( void )
/* 继承的方法 */
abstract public mixed Yaf_Config_Abstract::get ( string $name , mixed $value )
abstract public bool Yaf_Config_Abstract::readonly ( void )
abstract public Yaf_Config_Abstract Yaf_Config_Abstract::set ( void )
abstract public array Yaf_Config_Abstract::toArray ( void )
}

属性

_config

_readonly

Table of Contents

  • Yaf_Config_Simple::__construct — 构造函数
  • Yaf_Config_Simple::count — 返回配置的节数量
  • Yaf_Config_Simple::current — 返回当前节点
  • Yaf_Config_Simple::__get — 读取节点配置
  • Yaf_Config_Simple::__isset — 检查节点是否存在
  • Yaf_Config_Simple::key — 返回当前元素的键
  • Yaf_Config_Simple::next — 向前移动到下一个元素
  • Yaf_Config_Simple::offsetExists — 检查一个偏移位置是否存在
  • Yaf_Config_Simple::offsetGet — 获取一个偏移位置的值
  • Yaf_Config_Simple::offsetSet — 设置一个偏移位置的值
  • Yaf_Config_Simple::offsetUnset — 复位一个偏移位置的值
  • Yaf_Config_Simple::readonly — 检查配置是否只读
  • Yaf_Config_Simple::rewind — 检查当前位置是否有效
  • Yaf_Config_Simple::__set — 设置节点配置
  • Yaf_Config_Simple::toArray — 转换为数组的格式
  • Yaf_Config_Simple::valid — 检查迭代器是否有效
Yaf_Config_Ini::valid
Yaf_Config_Simple::__construct
Yaf


构造函数

Yaf_Config_Simple
Yaf_Config_Simple::count
Yaf_Config_Simple
PHP Manual

Yaf_Config_Simple::__construct

(Yaf >=1.0.0)

Yaf_Config_Simple::__construct — 构造函数

说明

public Yaf_Config_Simple::__construct ( string $config_file [, string $section ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

config_file

section

返回值

Yaf_Config_Simple
Yaf_Config_Simple::count
Yaf_Config_Simple


返回配置的节数量

Yaf_Config_Simple::__construct
Yaf_Config_Simple::current
Yaf_Config_Simple
PHP Manual

Yaf_Config_Simple::count

(Yaf >=1.0.0)

Yaf_Config_Simple::count — 返回配置的节数量

说明

public void Yaf_Config_Simple::count ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Config_Simple::__construct
Yaf_Config_Simple::current
Yaf_Config_Simple


返回当前节点

Yaf_Config_Simple::count
Yaf_Config_Simple::__get
Yaf_Config_Simple
PHP Manual

Yaf_Config_Simple::current

(Yaf >=1.0.0)

Yaf_Config_Simple::current — 返回当前节点

说明

public void Yaf_Config_Simple::current ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Config_Simple::count
Yaf_Config_Simple::__get
Yaf_Config_Simple


读取节点配置

Yaf_Config_Simple::current
Yaf_Config_Simple::__isset
Yaf_Config_Simple
PHP Manual

Yaf_Config_Simple::__get

(Yaf >=1.0.0)

Yaf_Config_Simple::__get — 读取节点配置

说明

public void Yaf_Config_Simple::__get ([ string $name ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

返回值

Yaf_Config_Simple::current
Yaf_Config_Simple::__isset
Yaf_Config_Simple


检查节点是否存在

Yaf_Config_Simple::__get
Yaf_Config_Simple::key
Yaf_Config_Simple
PHP Manual

Yaf_Config_Simple::__isset

(Yaf >=1.0.0)

Yaf_Config_Simple::__isset — 检查节点是否存在

说明

public void Yaf_Config_Simple::__isset ( string $name )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

返回值

Yaf_Config_Simple::__get
Yaf_Config_Simple::key
Yaf_Config_Simple


返回当前元素的键

Yaf_Config_Simple::__isset
Yaf_Config_Simple::next
Yaf_Config_Simple
PHP Manual

Yaf_Config_Simple::key

(Yaf >=1.0.0)

Yaf_Config_Simple::key — 返回当前元素的键

说明

public void Yaf_Config_Simple::key ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Config_Simple::__isset
Yaf_Config_Simple::next
Yaf_Config_Simple


向前移动到下一个元素

Yaf_Config_Simple::key
Yaf_Config_Simple::offsetExists
Yaf_Config_Simple
PHP Manual

Yaf_Config_Simple::next

(Yaf >=1.0.0)

Yaf_Config_Simple::next — 向前移动到下一个元素

说明

public void Yaf_Config_Simple::next ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Config_Simple::key
Yaf_Config_Simple::offsetExists
Yaf_Config_Simple


检查一个偏移位置是否存在

Yaf_Config_Simple::next
Yaf_Config_Simple::offsetGet
Yaf_Config_Simple
PHP Manual

Yaf_Config_Simple::offsetExists

(Yaf >=1.0.0)

Yaf_Config_Simple::offsetExists — 检查一个偏移位置是否存在

说明

public void Yaf_Config_Simple::offsetExists ( string $name )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

返回值

Yaf_Config_Simple::next
Yaf_Config_Simple::offsetGet
Yaf_Config_Simple


获取一个偏移位置的值

Yaf_Config_Simple::offsetExists
Yaf_Config_Simple::offsetSet
Yaf_Config_Simple
PHP Manual

Yaf_Config_Simple::offsetGet

(Yaf >=1.0.0)

Yaf_Config_Simple::offsetGet — 获取一个偏移位置的值

说明

public void Yaf_Config_Simple::offsetGet ( string $name )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

返回值

Yaf_Config_Simple::offsetExists
Yaf_Config_Simple::offsetSet
Yaf_Config_Simple


设置一个偏移位置的值

Yaf_Config_Simple::offsetGet
Yaf_Config_Simple::offsetUnset
Yaf_Config_Simple
PHP Manual

Yaf_Config_Simple::offsetSet

(Yaf >=1.0.0)

Yaf_Config_Simple::offsetSet — 设置一个偏移位置的值

说明

public void Yaf_Config_Simple::offsetSet ( string $name , string $value )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

value

返回值

Yaf_Config_Simple::offsetGet
Yaf_Config_Simple::offsetUnset
Yaf_Config_Simple


复位一个偏移位置的值

Yaf_Config_Simple::offsetSet
Yaf_Config_Simple::readonly
Yaf_Config_Simple
PHP Manual

Yaf_Config_Simple::offsetUnset

(Yaf >=1.0.0)

Yaf_Config_Simple::offsetUnset — 复位一个偏移位置的值

说明

public void Yaf_Config_Simple::offsetUnset ( string $name )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

返回值

Yaf_Config_Simple::offsetSet
Yaf_Config_Simple::readonly
Yaf_Config_Simple


检查配置是否只读

Yaf_Config_Simple::offsetUnset
Yaf_Config_Simple::rewind
Yaf_Config_Simple
PHP Manual

Yaf_Config_Simple::readonly

(Yaf >=1.0.0)

Yaf_Config_Simple::readonly — 检查配置是否只读

说明

public void Yaf_Config_Simple::readonly ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Config_Simple::offsetUnset
Yaf_Config_Simple::rewind
Yaf_Config_Simple


检查当前位置是否有效

Yaf_Config_Simple::readonly
Yaf_Config_Simple::__set
Yaf_Config_Simple
PHP Manual

Yaf_Config_Simple::rewind

(Yaf >=1.0.0)

Yaf_Config_Simple::rewind — 检查当前位置是否有效

说明

public void Yaf_Config_Simple::rewind ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Config_Simple::readonly
Yaf_Config_Simple::__set
Yaf_Config_Simple


设置节点配置

Yaf_Config_Simple::rewind
Yaf_Config_Simple::toArray
Yaf_Config_Simple
PHP Manual

Yaf_Config_Simple::__set

(Yaf >=1.0.0)

Yaf_Config_Simple::__set — 设置节点配置

说明

public void Yaf_Config_Simple::__set ( string $name , string $value )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

value

返回值

Yaf_Config_Simple::rewind
Yaf_Config_Simple::toArray
Yaf_Config_Simple


转换为数组的格式

Yaf_Config_Simple::__set
Yaf_Config_Simple::valid
Yaf_Config_Simple
PHP Manual

Yaf_Config_Simple::toArray

(Yaf >=1.0.0)

Yaf_Config_Simple::toArray — 转换为数组的格式

说明

public void Yaf_Config_Simple::toArray ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Config_Simple::__set
Yaf_Config_Simple::valid
Yaf_Config_Simple


检查迭代器是否有效

Yaf_Config_Simple::toArray
Yaf_Controller_Abstract
Yaf_Config_Simple
PHP Manual

Yaf_Config_Simple::valid

(Yaf >=1.0.0)

Yaf_Config_Simple::valid — 检查迭代器是否有效

说明

public void Yaf_Config_Simple::valid ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Config_Simple::toArray
Yaf_Controller_Abstract
Yaf_Config_Simple


The Yaf_Controller_Abstract class

(Yaf >=1.0.0)

简介

Yaf_Controller_Abstract 是Yaf的MVC体系的核心部分。 MVC是指Model-View-Controller, 是一个用于分离应用逻辑和表现逻辑的设计模式。

每个用户自定义controller都应当继承Yaf_Controller_Abstract。

你会发现在你自己的controller中无法定义__construct方法。因此，Yaf_Controller_Abstract 提供了一个魔术方法Yaf_Controller_Abstract::init()。

如果在你自己的controller里面已经定义了一个init()方法，当你的controller被实例化的时候，它将被调用。

Action可能需要参数，当一个请求来到的时候，在路由中如果请求的参数有相同名称的变量（例如：Yaf_Request_Abstract::getParam()）， Yaf将把他们传递给action方法（see Yaf_Action_Abstract::execute()）。

类摘要

abstract Yaf_Controller_Abstract {
/* 属性 */
public $actions ;
protected $_module ;
protected $_name ;
protected $_request ;
protected $_response ;
protected $_invoke_args ;
protected $_view ;
/* 方法 */
final private void __clone ( void )
final private __construct ( void )
protected bool display ( string $tpl [, array $parameters ] )
public void forward ( string $module [, string $controller [, string $action [, array $paramters ]]] )
public void getInvokeArg ( string $name )
public void getInvokeArgs ( void )
public string getModuleName ( void )
public Yaf_Request_Abstract getRequest ( void )
public Yaf_Response_Abstract getResponse ( void )
public Yaf_View_Interface getView ( void )
public void getViewpath ( void )
public void init ( void )
public void initView ([ array $options ] )
public void redirect ( string $url )
protected string render ( string $tpl [, array $parameters ] )
public void setViewpath ( string $view_directory )
}

属性

actions

你也可以通过使用这个值和 Yaf_Action_Abstract 在一个单独的PHP脚本中定义action函数。

Example #1 在一个独立的文件中定义action

<?php
class IndexController extends Yaf_Controller_Abstract {
    protected $actions = array(
        /** now dummyAction is defined in a separate file */
        "dummy" => "actions/Dummy_action.php",
    );

    /* action method may have arguments */
    public indexAction($name, $id) {
       assert($name == $this->getRequest()->getParam("name"));
       assert($id   == $this->_request->getParam("id"));
    }
}
?>

Example #2 Dummy_action.php

<?php
class DummyAction extends Yaf_Action_Abstract {
    /* a action class shall define this method  as the entry point */
    public execute() {
    }
}
?>

_module

模块名

_name

_request

当前的请求实例

_response

_invoke_args

_view

视图引擎

Table of Contents

  • Yaf_Controller_Abstract::__clone — Yaf_Controller_Abstract 不能被克隆
  • Yaf_Controller_Abstract::__construct — Yaf_Controller_Abstract constructor
  • Yaf_Controller_Abstract::display — The display purpose
  • Yaf_Controller_Abstract::forward — The forward purpose
  • Yaf_Controller_Abstract::getInvokeArg — The getInvokeArg purpose
  • Yaf_Controller_Abstract::getInvokeArgs — The getInvokeArgs purpose
  • Yaf_Controller_Abstract::getModuleName — 获取当前控制器所属的模块名
  • Yaf_Controller_Abstract::getRequest — The getRequest purpose
  • Yaf_Controller_Abstract::getResponse — The getResponse purpose
  • Yaf_Controller_Abstract::getView — 获取当前的视图引擎
  • Yaf_Controller_Abstract::getViewpath — The getViewpath purpose
  • Yaf_Controller_Abstract::init — 控制器初始化
  • Yaf_Controller_Abstract::initView — The initView purpose
  • Yaf_Controller_Abstract::redirect — The redirect purpose
  • Yaf_Controller_Abstract::render — 渲染视图模板
  • Yaf_Controller_Abstract::setViewpath — The setViewpath purpose
Yaf_Config_Simple::valid
Yaf_Controller_Abstract::__clone
Yaf


Yaf_Controller_Abstract 不能被克隆

Yaf_Controller_Abstract
Yaf_Controller_Abstract::__construct
Yaf_Controller_Abstract
PHP Manual

Yaf_Controller_Abstract::__clone

(Yaf >=1.0.0)

Yaf_Controller_Abstract::__clone — Yaf_Controller_Abstract 不能被克隆

说明

final private void Yaf_Controller_Abstract::__clone ( void )

参数

此函数没有参数。

返回值

Yaf_Controller_Abstract
Yaf_Controller_Abstract::__construct
Yaf_Controller_Abstract


Yaf_Controller_Abstract constructor

Yaf_Controller_Abstract::__clone
Yaf_Controller_Abstract::display
Yaf_Controller_Abstract
PHP Manual

Yaf_Controller_Abstract::__construct

(Yaf >=1.0.0)

Yaf_Controller_Abstract::__construct — Yaf_Controller_Abstract constructor

说明

final private Yaf_Controller_Abstract::__construct ( void )

参数

此函数没有参数。

返回值

Yaf_Controller_Abstract::__clone
Yaf_Controller_Abstract::display
Yaf_Controller_Abstract


The display purpose

Yaf_Controller_Abstract::__construct
Yaf_Controller_Abstract::forward
Yaf_Controller_Abstract
PHP Manual

Yaf_Controller_Abstract::display

(Yaf >=1.0.0)

Yaf_Controller_Abstract::display — The display purpose

说明

protected bool Yaf_Controller_Abstract::display ( string $tpl [, array $parameters ] )

参数

tpl

parameters

返回值

Yaf_Controller_Abstract::__construct
Yaf_Controller_Abstract::forward
Yaf_Controller_Abstract


The forward purpose

Yaf_Controller_Abstract::display
Yaf_Controller_Abstract::getInvokeArg
Yaf_Controller_Abstract
PHP Manual

Yaf_Controller_Abstract::forward

(Yaf >=1.0.0)

Yaf_Controller_Abstract::forward — The forward purpose

说明

public void Yaf_Controller_Abstract::forward ( string $module [, string $controller [, string $action [, array $paramters ]]] )

将当前的请求转交给另外的Action.

Note:

调用Yaf_Controller_Abstract::forward()以后, 不会直接立即跳转到目的Action执行, 而是会在当前的Action执行完成后, 下一轮的DispatchLoop中, 交给目的Action.

所以, 如果你希望立即跳转到目的Action, 那么请使用return结束当前的执行流程.

参数

module

要跳转的目的Action的Module, 如果是NULL, 则默认Module会被采用.

controller

要跳转的目的Action的Controller, 如果是NULL, 则默认Controller会被采用.

action

要跳转的目的Action.

paramters

跳转参数, 可以在目的Action中通过Yaf_Request_Abstrace::getParam()来获取.

范例

Example #1 Yaf_Controller_Abstract::forward()例子

<?php
class IndexController extends Yaf_Controller_Abstract
{
    public function indexAction(){
         $logined = $_SESSION["login"];
         if (!$logined) {
             $this->forward("login", array("from" => "Index")); // 跳转到login Action
             return FALSE;  // return立即结束当前的执行流程, 跳转到目的Action
                            // 而这里的FALSE是告诉Yaf不要自动渲染这个Action的视图
         }

         // other processes
    }

    public function loginAction() {
         echo "login, redirected from ", $this->_request->getParam("from") , " action";
    }
}
?>

以上例程的输出类似于：

   login, redirected from Index action

返回值

return FALSE on failure

参见

  • Yaf_Request_Abstrace::getParam()
Yaf_Controller_Abstract::display
Yaf_Controller_Abstract::getInvokeArg
Yaf_Controller_Abstract


The getInvokeArg purpose

Yaf_Controller_Abstract::forward
Yaf_Controller_Abstract::getInvokeArgs
Yaf_Controller_Abstract
PHP Manual

Yaf_Controller_Abstract::getInvokeArg

(Yaf >=1.0.0)

Yaf_Controller_Abstract::getInvokeArg — The getInvokeArg purpose

说明

public void Yaf_Controller_Abstract::getInvokeArg ( string $name )

参数

name

返回值

Yaf_Controller_Abstract::forward
Yaf_Controller_Abstract::getInvokeArgs
Yaf_Controller_Abstract


The getInvokeArgs purpose

Yaf_Controller_Abstract::getInvokeArg
Yaf_Controller_Abstract::getModuleName
Yaf_Controller_Abstract
PHP Manual

Yaf_Controller_Abstract::getInvokeArgs

(Yaf >=1.0.0)

Yaf_Controller_Abstract::getInvokeArgs — The getInvokeArgs purpose

说明

public void Yaf_Controller_Abstract::getInvokeArgs ( void )

参数

此函数没有参数。

返回值

Yaf_Controller_Abstract::getInvokeArg
Yaf_Controller_Abstract::getModuleName
Yaf_Controller_Abstract


获取当前控制器所属的模块名

Yaf_Controller_Abstract::getInvokeArgs
Yaf_Controller_Abstract::getRequest
Yaf_Controller_Abstract
PHP Manual

Yaf_Controller_Abstract::getModuleName

(Yaf >=1.0.0)

Yaf_Controller_Abstract::getModuleName — 获取当前控制器所属的模块名

说明

public string Yaf_Controller_Abstract::getModuleName ( void )

获取当前控制器所属的模块名

参数

此函数没有参数。

返回值

Yaf_Controller_Abstract::getInvokeArgs
Yaf_Controller_Abstract::getRequest
Yaf_Controller_Abstract


The getRequest purpose

Yaf_Controller_Abstract::getModuleName
Yaf_Controller_Abstract::getResponse
Yaf_Controller_Abstract
PHP Manual

Yaf_Controller_Abstract::getRequest

(Yaf >=1.0.0)

Yaf_Controller_Abstract::getRequest — The getRequest purpose

说明

public Yaf_Request_Abstract Yaf_Controller_Abstract::getRequest ( void )

参数

此函数没有参数。

返回值

Yaf_Controller_Abstract::getModuleName
Yaf_Controller_Abstract::getResponse
Yaf_Controller_Abstract


The getResponse purpose

Yaf_Controller_Abstract::getRequest
Yaf_Controller_Abstract::getView
Yaf_Controller_Abstract
PHP Manual

Yaf_Controller_Abstract::getResponse

(Yaf >=1.0.0)

Yaf_Controller_Abstract::getResponse — The getResponse purpose

说明

public Yaf_Response_Abstract Yaf_Controller_Abstract::getResponse ( void )

参数

此函数没有参数。

返回值

Yaf_Controller_Abstract::getRequest
Yaf_Controller_Abstract::getView
Yaf_Controller_Abstract


获取当前的视图引擎

Yaf_Controller_Abstract::getResponse
Yaf_Controller_Abstract::getViewpath
Yaf_Controller_Abstract
PHP Manual

Yaf_Controller_Abstract::getView

(Yaf >=1.0.0)

Yaf_Controller_Abstract::getView — 获取当前的视图引擎

说明

public Yaf_View_Interface Yaf_Controller_Abstract::getView ( void )

获取当前的视图引擎

参数

此函数没有参数。

返回值

Yaf_Controller_Abstract::getResponse
Yaf_Controller_Abstract::getViewpath
Yaf_Controller_Abstract


The getViewpath purpose

Yaf_Controller_Abstract::getView
Yaf_Controller_Abstract::init
Yaf_Controller_Abstract
PHP Manual

Yaf_Controller_Abstract::getViewpath

(Yaf >=1.0.0)

Yaf_Controller_Abstract::getViewpath — The getViewpath purpose

说明

public void Yaf_Controller_Abstract::getViewpath ( void )

参数

此函数没有参数。

返回值

Yaf_Controller_Abstract::getView
Yaf_Controller_Abstract::init
Yaf_Controller_Abstract


控制器初始化

Yaf_Controller_Abstract::getViewpath
Yaf_Controller_Abstract::initView
Yaf_Controller_Abstract
PHP Manual

Yaf_Controller_Abstract::init

(Yaf >=1.0.0)

Yaf_Controller_Abstract::init — 控制器初始化

说明

public void Yaf_Controller_Abstract::init ( void )

Yaf_Controller_Abstract::__construct() 是final类型，所以用户不能重载它。但是用户可以定义 Yaf_Controller_Abstract::init()，该函数会在控制器对象实例化之后被调用。

参数

此函数没有参数。

返回值

参见

  • Yaf_Controller_Abstract::__construct() - Yaf_Controller_Abstract constructor
Yaf_Controller_Abstract::getViewpath
Yaf_Controller_Abstract::initView
Yaf_Controller_Abstract


The initView purpose

Yaf_Controller_Abstract::init
Yaf_Controller_Abstract::redirect
Yaf_Controller_Abstract
PHP Manual

Yaf_Controller_Abstract::initView

(Yaf >=1.0.0)

Yaf_Controller_Abstract::initView — The initView purpose

说明

public void Yaf_Controller_Abstract::initView ([ array $options ] )

参数

options

返回值

Yaf_Controller_Abstract::init
Yaf_Controller_Abstract::redirect
Yaf_Controller_Abstract


The redirect purpose

Yaf_Controller_Abstract::initView
Yaf_Controller_Abstract::render
Yaf_Controller_Abstract
PHP Manual

Yaf_Controller_Abstract::redirect

(Yaf >=1.0.0)

Yaf_Controller_Abstract::redirect — The redirect purpose

说明

public void Yaf_Controller_Abstract::redirect ( string $url )

参数

url

返回值

Yaf_Controller_Abstract::initView
Yaf_Controller_Abstract::render
Yaf_Controller_Abstract


渲染视图模板

Yaf_Controller_Abstract::redirect
Yaf_Controller_Abstract::setViewpath
Yaf_Controller_Abstract
PHP Manual

Yaf_Controller_Abstract::render

(Yaf >=1.0.0)

Yaf_Controller_Abstract::render — 渲染视图模板

说明

protected string Yaf_Controller_Abstract::render ( string $tpl [, array $parameters ] )

参数

tpl

parameters

返回值

Yaf_Controller_Abstract::redirect
Yaf_Controller_Abstract::setViewpath
Yaf_Controller_Abstract


The setViewpath purpose

Yaf_Controller_Abstract::render
Yaf_Action_Abstract
Yaf_Controller_Abstract
PHP Manual

Yaf_Controller_Abstract::setViewpath

(Yaf >=1.0.0)

Yaf_Controller_Abstract::setViewpath — The setViewpath purpose

说明

public void Yaf_Controller_Abstract::setViewpath ( string $view_directory )

参数

view_directory

返回值

Yaf_Controller_Abstract::render
Yaf_Action_Abstract
Yaf_Controller_Abstract


The Yaf_Action_Abstract class

(Yaf >=1.0.0)

简介

在Yaf中一个action可以采用单独定义Yaf_Action_Abstract来实现。 亦即，一个action方法也可以是一个Yaf_Action_Abstract的派生类

Yaf需要一个可以被它所调用的入口点（比如PHP 5.3，它有一个新的魔术方法__invoke，但是Yaf不只支持PHP 5.3+， 所以Yaf需要另一个魔术方法来执行完成这样的任务），所以在你自己的动作类里面必须要实现抽象方法 Yaf_Action_Abstract::execute()

类摘要

Yaf_Action_Abstract extends Yaf_Controller_Abstract {
/* 属性 */
protected $_controller ;
/* 方法 */
abstract publicmixed execute ([ mixed $arg [, mixed $... ]] )
publicYaf_Controller_Abstract getController ( void )
/* 继承的方法 */
final private void Yaf_Controller_Abstract::__clone ( void )
final private Yaf_Controller_Abstract::__construct ( void )
protected bool Yaf_Controller_Abstract::display ( string $tpl [, array $parameters ] )
public void Yaf_Controller_Abstract::forward ( string $module [, string $controller [, string $action [, array $paramters ]]] )
public void Yaf_Controller_Abstract::getInvokeArg ( string $name )
public void Yaf_Controller_Abstract::getInvokeArgs ( void )
public string Yaf_Controller_Abstract::getModuleName ( void )
public Yaf_Request_Abstract Yaf_Controller_Abstract::getRequest ( void )
public Yaf_Response_Abstract Yaf_Controller_Abstract::getResponse ( void )
public Yaf_View_Interface Yaf_Controller_Abstract::getView ( void )
public void Yaf_Controller_Abstract::getViewpath ( void )
public void Yaf_Controller_Abstract::init ( void )
public void Yaf_Controller_Abstract::initView ([ array $options ] )
public void Yaf_Controller_Abstract::redirect ( string $url )
protected string Yaf_Controller_Abstract::render ( string $tpl [, array $parameters ] )
public void Yaf_Controller_Abstract::setViewpath ( string $view_directory )
}

属性

_module

_name

_request

_response

_invoke_args

_view

_controller

Table of Contents

  • Yaf_Action_Abstract::execute — 执行动作
  • Yaf_Action_Abstract::getController — 得到控制器实例
Yaf_Controller_Abstract::setViewpath
Yaf_Action_Abstract::execute
Yaf


执行动作

Yaf_Action_Abstract
Yaf_Action_Abstract::getController
Yaf_Action_Abstract
PHP Manual

Yaf_Action_Abstract::execute

(Yaf >=1.0.0)

Yaf_Action_Abstract::execute — 执行动作

说明

abstract publicmixed Yaf_Action_Abstract::execute ([ mixed $arg [, mixed $... ]] )

Yaf_Action_Abstract::execute() 可能会有参数

Note:

从请求返回的值可能是不安全的，在使用之前你需要对它们过滤一遍。

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

范例

Example #1 Yaf_Action_Abstract::execute()example

<?php
/**
 * A controller example
 */
class ProductController extends Yaf_Controller_Abstract {
      protected $actions = array(
          "index" => "actions/Index.php",
      );
}
?>

Example #2 Yaf_Action_Abstract::execute()example

<?php
/**
 * ListAction
 */
class ListAction extends Yaf_Action_Abstract {
     public function execute ($name, $id) {
         assert($name == $this->getRequest()->getParam("name"));
         assert($id   == $this->getRequest()->getParam("id"));
     }
}
?>

以上例程的输出类似于：

/**
 * Now assuming we are using the Yaf_Route_Static route
 * for request: http://yourdomain/product/list/name/yaf/id/22
 * will result:
 */
 bool(true)
 bool(true)

参见

Yaf_Action_Abstract
Yaf_Action_Abstract::getController
Yaf_Action_Abstract


得到控制器实例

Yaf_Action_Abstract::execute
Yaf_View_Interface
Yaf_Action_Abstract
PHP Manual

Yaf_Action_Abstract::getController

(Yaf >=1.0.0)

Yaf_Action_Abstract::getController — 得到控制器实例

说明

publicYaf_Controller_Abstract Yaf_Action_Abstract::getController ( void )

返回控制器对象。

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Action_Abstract::execute
Yaf_View_Interface
Yaf_Action_Abstract


The Yaf_View_Interface class

(Yaf >=1.0.0)

简介

Yaf给用户提供一个了一个可扩展的、可自定的视图引擎接口，用户可以使用自己的视图引擎来代替Yaf内置的Yaf_View_Simple。下面是一个关于怎么实现的例子，请看Yaf_Dispatcher::setView()。

类摘要

Yaf_View_Interface {
/* 方法 */
abstract public bool assign ( string $name [, string $value ] )
abstract public bool display ( string $tpl [, array $tpl_vars ] )
abstract public void getScriptPath ( void )
abstract public string render ( string $tpl [, array $tpl_vars ] )
abstract public void setScriptPath ( string $template_dir )
}

Table of Contents

  • Yaf_View_Interface::assign — 为视图引擎分配一个模板变量
  • Yaf_View_Interface::display — 渲染一个视图模板, 并直接输出给请求端
  • Yaf_View_Interface::getScriptPath — The getScriptPath purpose
  • Yaf_View_Interface::render — 渲染一个视图模板
  • Yaf_View_Interface::setScriptPath — The setScriptPath purpose
Yaf_Action_Abstract::getController
Yaf_View_Interface::assign
Yaf


为视图引擎分配一个模板变量

Yaf_View_Interface
Yaf_View_Interface::display
Yaf_View_Interface
PHP Manual

Yaf_View_Interface::assign

(Yaf >=1.0.0)

Yaf_View_Interface::assign — 为视图引擎分配一个模板变量

说明

abstract public bool Yaf_View_Interface::assign ( string $name [, string $value ] )

为视图引擎分配一个模板变量, 在视图模板中可以直接通过${$name}获取模板变量值

Warning

本函数还未编写文档，仅有参数列表。

参数

name

value

返回值

Yaf_View_Interface
Yaf_View_Interface::display
Yaf_View_Interface


渲染一个视图模板, 并直接输出给请求端

Yaf_View_Interface::assign
Yaf_View_Interface::getScriptPath
Yaf_View_Interface
PHP Manual

Yaf_View_Interface::display

(Yaf >=1.0.0)

Yaf_View_Interface::display — 渲染一个视图模板, 并直接输出给请求端

说明

abstract public bool Yaf_View_Interface::display ( string $tpl [, array $tpl_vars ] )

渲染一个视图模板, 并直接输出给请求端

Warning

本函数还未编写文档，仅有参数列表。

参数

tpl

tpl_vars

返回值

Yaf_View_Interface::assign
Yaf_View_Interface::getScriptPath
Yaf_View_Interface


The getScriptPath purpose

Yaf_View_Interface::display
Yaf_View_Interface::render
Yaf_View_Interface
PHP Manual

Yaf_View_Interface::getScriptPath

(Yaf >=1.0.0)

Yaf_View_Interface::getScriptPath — The getScriptPath purpose

说明

abstract public void Yaf_View_Interface::getScriptPath ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_View_Interface::display
Yaf_View_Interface::render
Yaf_View_Interface


渲染一个视图模板

Yaf_View_Interface::getScriptPath
Yaf_View_Interface::setScriptPath
Yaf_View_Interface
PHP Manual

Yaf_View_Interface::render

(Yaf >=1.0.0)

Yaf_View_Interface::render — 渲染一个视图模板

说明

abstract public string Yaf_View_Interface::render ( string $tpl [, array $tpl_vars ] )

渲染一个视图模板, 得到结果

Warning

本函数还未编写文档，仅有参数列表。

参数

tpl

tpl_vars

返回值

Yaf_View_Interface::getScriptPath
Yaf_View_Interface::setScriptPath
Yaf_View_Interface


The setScriptPath purpose

Yaf_View_Interface::render
Yaf_View_Simple
Yaf_View_Interface
PHP Manual

Yaf_View_Interface::setScriptPath

(Yaf >=1.0.0)

Yaf_View_Interface::setScriptPath — The setScriptPath purpose

说明

abstract public void Yaf_View_Interface::setScriptPath ( string $template_dir )

设置模板的基目录，这通常通过Yaf_Dispatcher调用。

Warning

本函数还未编写文档，仅有参数列表。

参数

template_dir

模板目录的绝对路径，默认的Yaf_Dispatcher会设置此目录为application.directory . "/views".

返回值

Yaf_View_Interface::render
Yaf_View_Simple
Yaf_View_Interface


The Yaf_View_Simple Class

(Yaf >=1.0.0)

简介

Yaf_View_Simple 这是Yaf内建的一个模板引擎，是个简单而快速的模板引擎，只支持PHP脚本

类摘要

Yaf_View_Simple implements Yaf_View_Interface {
/* 属性 */
protected $_tpl_vars ;
protected $_tpl_dir ;
/* 方法 */
public bool assign ( string $name [, mixed $value ] )
public bool assignRef ( string $name , mixed &$value )
public bool clear ([ string $name ] )
final public __construct ( string $tempalte_dir [, array $options ] )
public bool display ( string $tpl [, array $tpl_vars ] )
public string eval ( string $tpl_content [, array $tpl_vars ] )
public void __get ([ string $name ] )
public string getScriptPath ( void )
public void __isset ( string $name )
public string render ( string $tpl [, array $tpl_vars ] )
public void __set ( string $name , mixed $value )
public bool setScriptPath ( string $template_dir )
}

属性

_tpl_vars

_tpl_dir

Table of Contents

  • Yaf_View_Simple::assign — 为视图引擎分配一个模板变量
  • Yaf_View_Simple::assignRef — The assignRef purpose
  • Yaf_View_Simple::clear — Clear Assigned values
  • Yaf_View_Simple::__construct — Constructor of Yaf_View_Simple
  • Yaf_View_Simple::display — 渲染一个视图模板, 并直接输出给请求端
  • Yaf_View_Simple::eval — 渲染模板
  • Yaf_View_Simple::__get — 获取视图引擎的一个模板变量值
  • Yaf_View_Simple::getScriptPath — 获取模板目录
  • Yaf_View_Simple::__isset — The __isset purpose
  • Yaf_View_Simple::render — 渲染模板
  • Yaf_View_Simple::__set — 为视图引擎分配一个模板变量
  • Yaf_View_Simple::setScriptPath — 设置模板的目录
Yaf_View_Interface::setScriptPath
Yaf_View_Simple::assign
Yaf


为视图引擎分配一个模板变量

Yaf_View_Simple
Yaf_View_Simple::assignRef
Yaf_View_Simple
PHP Manual

Yaf_View_Simple::assign

(Yaf >=1.0.0)

Yaf_View_Simple::assign — 为视图引擎分配一个模板变量

说明

public bool Yaf_View_Simple::assign ( string $name [, mixed $value ] )

为视图引擎分配一个模板变量

参数

name

字符串或者数组

如果为字符串, 则$value不能为空

value

mixed value

返回值

范例

Example #1 Yaf_View_Simple::assign()example

<?php
class IndexController extends Yaf_Controller_Abstract {
    public function indexAction() {
        $this->getView()->assign("foo", "bar");
        $this->_view->assign( array( "key" => "value", "name" => "value"));
    }
?>

Example #2 template()example

<html>
 <head>
  <title><?php echo $foo; ?></title>
 </head>
<body>
  <?php
    foreach ($this->_tpl_vars as $name => value) {
         echo $$name; // or echo $this->_tpl_vars[$name];
    }
  ?>
</body>
</html>

参见

  • Yaf_View_Simple::assignRef() - The assignRef purpose
  • Yaf_View_Interface::clear()
  • Yaf_View_Simple::__set() - 为视图引擎分配一个模板变量
Yaf_View_Simple
Yaf_View_Simple::assignRef
Yaf_View_Simple


The assignRef purpose

Yaf_View_Simple::assign
Yaf_View_Simple::clear
Yaf_View_Simple
PHP Manual

Yaf_View_Simple::assignRef

(Yaf >=1.0.0)

Yaf_View_Simple::assignRef — The assignRef purpose

说明

public bool Yaf_View_Simple::assignRef ( string $name , mixed &$value )

不同于Yaf_View_Simple::assign()，这个方法传递一个引用变量给模板引擎

参数

name

一个字符串的名字，被用来传递值给模板。

value

mixed value

返回值

范例

Example #1 Yaf_View_Simple::assignRef()example

<?php
class IndexController extends Yaf_Controller_Abstract {
    public function indexAction() {
        $value = "bar";
        $this->getView()->assign("foo", $value);

        /* plz note that there was a bug before Yaf 2.1.4,
         * which make following output "bar";
         */
        $dummy = $this->getView()->render("index/index.phtml");
        echo $value;

        //prevent the auto-render
        Yaf_Dispatcher::getInstance()->autoRender(FALSE);
    }
?>

Example #2 template()example

<html>
 <head>
  <title><?php echo $foo;  $foo = "changed"; ?></title>
 </head>
<body>
</body>
</html>

以上例程的输出类似于：

/* access the index controller will result: */
changed

参见

  • Yaf_View_Simple::assign() - 为视图引擎分配一个模板变量
  • Yaf_View_Simple::__set() - 为视图引擎分配一个模板变量
Yaf_View_Simple::assign
Yaf_View_Simple::clear
Yaf_View_Simple


Clear Assigned values

Yaf_View_Simple::assignRef
Yaf_View_Simple::__construct
Yaf_View_Simple
PHP Manual

Yaf_View_Simple::clear

(Yaf >=2.2.0)

Yaf_View_Simple::clear — Clear Assigned values

说明

public bool Yaf_View_Simple::clear ([ string $name ] )

清除指定的变量

参数

name

分派的变量名

如果为空，将会清除所有的变量

返回值

范例

Example #1 Yaf_View_Simple::clear()example

<?php
class IndexController extends Yaf_Controller_Abstract {
    public function indexAction() {
        $this->getView()->clear("foo")->clear("bar"); // clear "foo" and "bar"
        $this->_view->clear(); //clear all assigned variables
    }
?>

参见

  • Yaf_View_Simple::assignRef() - The assignRef purpose
  • Yaf_View_Interface::assign() - 为视图引擎分配一个模板变量
  • Yaf_View_Simple::__set() - 为视图引擎分配一个模板变量
Yaf_View_Simple::assignRef
Yaf_View_Simple::__construct
Yaf_View_Simple


Constructor of Yaf_View_Simple

Yaf_View_Simple::clear
Yaf_View_Simple::display
Yaf_View_Simple
PHP Manual

Yaf_View_Simple::__construct

(Yaf >=1.0.0)

Yaf_View_Simple::__construct — Constructor of Yaf_View_Simple

说明

final public Yaf_View_Simple::__construct ( string $tempalte_dir [, array $options ] )

参数

tempalte_dir

模板的基本路劲，默认为APPLICATOIN . "/views"

options

Options for the engine, as of Yaf 2.1.13, you can use short tag
      "<?=$var?>" in your template(regardless of "short_open_tag"),
      so comes a option named "short_tag",  you can switch this off
      to prevent use short_tag in template.

范例

Example #1 Yaf_View_Simple::__constructor()example

<?php
   define ("TEMPLATE_DIRECTORY", APPLICATOIN_PATH . '/views');
   $view = new Yaf_View_Simple(TEMPLATE_DIRECTORY, array(
                           'short_tag' => false //doesn't allow use short tag in template
   ));
?>

返回值

Yaf_View_Simple::clear
Yaf_View_Simple::display
Yaf_View_Simple


渲染一个视图模板, 并直接输出给请求端

Yaf_View_Simple::__construct
Yaf_View_Simple::eval
Yaf_View_Simple
PHP Manual

Yaf_View_Simple::display

(Yaf >=1.0.0)

Yaf_View_Simple::display — 渲染一个视图模板, 并直接输出给请求端

说明

public bool Yaf_View_Simple::display ( string $tpl [, array $tpl_vars ] )

渲染一个视图模板, 并直接输出给请求端

参数

tpl

tpl_vars

返回值

Yaf_View_Simple::__construct
Yaf_View_Simple::eval
Yaf_View_Simple


渲染模板

Yaf_View_Simple::display
Yaf_View_Simple::__get
Yaf_View_Simple
PHP Manual

Yaf_View_Simple::eval

(Yaf >=2.2.0)

Yaf_View_Simple::eval — 渲染模板

说明

public string Yaf_View_Simple::eval ( string $tpl_content [, array $tpl_vars ] )

渲染一个字符串模板，然后返回结果。

参数

tpl_content

string template

tpl_vars

返回值

Yaf_View_Simple::display
Yaf_View_Simple::__get
Yaf_View_Simple


获取视图引擎的一个模板变量值

Yaf_View_Simple::eval
Yaf_View_Simple::getScriptPath
Yaf_View_Simple
PHP Manual

Yaf_View_Simple::__get

(Yaf >=1.0.0)

Yaf_View_Simple::__get — 获取视图引擎的一个模板变量值

说明

public void Yaf_View_Simple::__get ([ string $name ] )

获取视图引擎的一个模板变量值

Note:

从2.1.11以后，参数可以为空

参数

name

分配的变量名

如果为空，所有传递的变量都会被返回

返回值

Yaf_View_Simple::eval
Yaf_View_Simple::getScriptPath
Yaf_View_Simple


获取模板目录

Yaf_View_Simple::__get
Yaf_View_Simple::__isset
Yaf_View_Simple
PHP Manual

Yaf_View_Simple::getScriptPath

(Yaf >=1.0.0)

Yaf_View_Simple::getScriptPath — 获取模板目录

说明

public string Yaf_View_Simple::getScriptPath ( void )

参数

此函数没有参数。

返回值

Yaf_View_Simple::__get
Yaf_View_Simple::__isset
Yaf_View_Simple


The __isset purpose

Yaf_View_Simple::getScriptPath
Yaf_View_Simple::render
Yaf_View_Simple
PHP Manual

Yaf_View_Simple::__isset

(Yaf >=1.0.0)

Yaf_View_Simple::__isset — The __isset purpose

说明

public void Yaf_View_Simple::__isset ( string $name )

参数

name

返回值

Yaf_View_Simple::getScriptPath
Yaf_View_Simple::render
Yaf_View_Simple


渲染模板

Yaf_View_Simple::__isset
Yaf_View_Simple::__set
Yaf_View_Simple
PHP Manual

Yaf_View_Simple::render

(Yaf >=1.0.0)

Yaf_View_Simple::render — 渲染模板

说明

public string Yaf_View_Simple::render ( string $tpl [, array $tpl_vars ] )

渲染一个视图模板, 得到结果

参数

tpl

tpl_vars

返回值

Yaf_View_Simple::__isset
Yaf_View_Simple::__set
Yaf_View_Simple


为视图引擎分配一个模板变量

Yaf_View_Simple::render
Yaf_View_Simple::setScriptPath
Yaf_View_Simple
PHP Manual

Yaf_View_Simple::__set

(Yaf >=1.0.0)

Yaf_View_Simple::__set — 为视图引擎分配一个模板变量

说明

public void Yaf_View_Simple::__set ( string $name , mixed $value )

这是一个更简单并且用来替代 Yaf_View_Simple::assign() 的方法

参数

name

一个字符串值的名字

value

Mixed value.

返回值

范例

Example #1 Yaf_View_Simple::__set()example

<?php
class IndexController extends Yaf_Controller_Abstract {
    public function indexAction() {
        $this->getView()->foo = "bar"; // same as assign("foo", "bar");
    }
?>

参见

  • Yaf_View_Simple::assignRef() - The assignRef purpose
  • Yaf_View_Interface::assign() - 为视图引擎分配一个模板变量
Yaf_View_Simple::render
Yaf_View_Simple::setScriptPath
Yaf_View_Simple


设置模板的目录

Yaf_View_Simple::__set
Yaf_Loader
Yaf_View_Simple
PHP Manual

Yaf_View_Simple::setScriptPath

(Yaf >=1.0.0)

Yaf_View_Simple::setScriptPath — 设置模板的目录

说明

public bool Yaf_View_Simple::setScriptPath ( string $template_dir )

参数

template_dir

返回值

Yaf_View_Simple::__set
Yaf_Loader
Yaf_View_Simple


The Yaf_Loader class

(Yaf >=1.0.0)

简介

Yaf_Loader 类为Yaf提供了自动加载功能的全面解决方案。

在第一次使用的时候，将检索 Yaf_Application 的实例， Yaf_Loader 实现了单利模式，并使用spl_autoload注册它自己。 通过 Yaf_Loader::getInstance() 返回它的实例

Yaf_Loader 加载一个类时仅仅尝试一次，如果失败了， 后面的操作将取决于yaf.use_spl_auload， 如果这个配置项为On，Yaf_Loader::autoload() 将会返回FALSE， 从而把机会让给其他的自动加载功能。如果这个配置项为Off（默认）， Yaf_Loader::autoload() 将会返回TRUE， 最重要的是将会抛出一个非常有用的警告（对于找出一个类加载失败非常有用）。

Note:

请保持yaf.use_spl_autoload保持关闭，除非有一些library有自己的autoload机制，并且是无法改写的。

默认情况下，Yaf_Loader 收集所有library(类定义的脚本)储存进在 php.ini(yaf.library)定义的global library directory之中。

如果你想使用 Yaf_Loader 搜索本地类（库）（定义在application.ini， 默认情况下，它是 application.directory . "/libraray"）， 你需要使用 Yaf_Loader::registerLocalNameSpace() 注册本地类前缀。

让我们来看看一些例子（假设 APPLICATION_PATH 是 application.directory）：

Example #1 Config example

// Assuming the following configure in php.ini:
yaf.libraray = "/global_dir"

//Assuming the following configure in application.ini
application.libraray = APPLICATION_PATH "/library"
假设以下本地名称空间已被注册：

Example #2 注册本地命名空间

<?php
class Bootstrap extends Yaf_Bootstrap_Abstract{
     public function _initLoader($dispatcher) {
          Yaf_Loader::getInstance()->registerLocalNameSpace(array("Foo", "Bar"));
     }
?>
自动加载例子：

Example #3 加载类

class Foo_Bar_Test =>
  // APPLICATION_PATH/library/Foo/Bar/Test.php

class GLO_Name  =>
  // /global_dir/Glo/Name.php

class BarNon_Test
  // /global_dir/Barnon/Test.php
在PHP 5.3中，你可以使用命名空间：

Example #4 加载命名空间类

class \Foo\Bar\Dummy =>
   // APPLICATION_PATH/library/Foo/Bar/Dummy.php

class \FooBar\Bar\Dummy =>
   // /global_dir/FooBar/Bar/Dummy.php

你可能会注意到所有文件夹名字的首字母是大写的，你可以通过在php.ini中设置 yaf.lowcase_path = On 来将它们小写。

Yaf_Loader 也是设计来加载MVC类，响应的规则如下：

Example #5 MVC类加载例子

Controller Classes =>
// APPLICATION_PATH/controllers/

Model Classes =>
// APPLICATION_PATH/models/

Plugin Classes =>
// APPLICATION_PATH/plugins/
Yaf 通过识别一个类的后缀（这个是默认的，你也可以通过改变配置项 yaf.name_suffix 来将它改为通过前缀识别）来决定它是否是一个MVC类：

Example #6 MVC 类区别

Controller Classes =>
    // ***Controller

Model Classes =>
    // ***Model

Plugin Classes =>
    // ***Plugin
some examples:

Example #7 MVC loading example

class IndexController
    // APPLICATION_PATH/controllers/Index.php

class DataModel =>
   // APPLICATION_PATH/models/Data.php

class DummyPlugin =>
  // APPLICATION_PATH/plugins/Dummy.php

class A_B_TestModel =>
  // APPLICATION_PATH/models/A/B/Test.php
该目录将受 yaf.lowcase_path 的影响。

类摘要

Yaf_Loader {
/* 属性 */
protected $_local_ns ;
protected $_library ;
protected $_global_library ;
static $_instance ;
/* 方法 */
public void autoload ( void )
public void clearLocalNamespace ( void )
private void __clone ( void )
private__construct ( void )
public static void getInstance ( void )
public Yaf_Loader getLibraryPath ([ bool $is_global = false ] )
public void getLocalNamespace ( void )
public static void import ( void )
public void isLocalName ( void )
public void registerLocalNamespace ([ mixed $prefix ] )
public Yaf_Loader setLibraryPath ( string $directory [, bool $is_global = false ] )
private void __sleep ( void )
private void __wakeup ( void )
}

属性

_local_ns

_library

默认情况下，它的值是 application.directory . "/library"， 你可以通过修改application.ini(application.library)或者调用 Yaf_Loader::setLibraryPath() 改变它。

_global_library

_instance

Table of Contents

  • Yaf_Loader::autoload — The autoload purpose
  • Yaf_Loader::clearLocalNamespace — The clearLocalNamespace purpose
  • Yaf_Loader::__clone — The __clone purpose
  • Yaf_Loader::__construct — The __construct purpose
  • Yaf_Loader::getInstance — The getInstance purpose
  • Yaf_Loader::getLibraryPath — get the library path
  • Yaf_Loader::getLocalNamespace — The getLocalNamespace purpose
  • Yaf_Loader::import — The import purpose
  • Yaf_Loader::isLocalName — The isLocalName purpose
  • Yaf_Loader::registerLocalNamespace — 注册本地类前缀
  • Yaf_Loader::setLibraryPath — 改变library路径
  • Yaf_Loader::__sleep — The __sleep purpose
  • Yaf_Loader::__wakeup — The __wakeup purpose
Yaf_View_Simple::setScriptPath
Yaf_Loader::autoload
Yaf


The autoload purpose

Yaf_Loader
Yaf_Loader::clearLocalNamespace
Yaf_Loader
PHP Manual

Yaf_Loader::autoload

(Yaf >=1.0.0)

Yaf_Loader::autoload — The autoload purpose

说明

public void Yaf_Loader::autoload ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Loader
Yaf_Loader::clearLocalNamespace
Yaf_Loader


The clearLocalNamespace purpose

Yaf_Loader::autoload
Yaf_Loader::__clone
Yaf_Loader
PHP Manual

Yaf_Loader::clearLocalNamespace

(Yaf >=1.0.0)

Yaf_Loader::clearLocalNamespace — The clearLocalNamespace purpose

说明

public void Yaf_Loader::clearLocalNamespace ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Loader::autoload
Yaf_Loader::__clone
Yaf_Loader


The __clone purpose

Yaf_Loader::clearLocalNamespace
Yaf_Loader::__construct
Yaf_Loader
PHP Manual

Yaf_Loader::__clone

(Yaf >=1.0.0)

Yaf_Loader::__clone — The __clone purpose

说明

private void Yaf_Loader::__clone ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Loader::clearLocalNamespace
Yaf_Loader::__construct
Yaf_Loader


The __construct purpose

Yaf_Loader::__clone
Yaf_Loader::getInstance
Yaf_Loader
PHP Manual

Yaf_Loader::__construct

(Yaf >=1.0.0)

Yaf_Loader::__construct — The __construct purpose

说明

privateYaf_Loader::__construct ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Loader::__clone
Yaf_Loader::getInstance
Yaf_Loader


The getInstance purpose

Yaf_Loader::__construct
Yaf_Loader::getLibraryPath
Yaf_Loader
PHP Manual

Yaf_Loader::getInstance

(Yaf >=1.0.0)

Yaf_Loader::getInstance — The getInstance purpose

说明

public static void Yaf_Loader::getInstance ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Loader::__construct
Yaf_Loader::getLibraryPath
Yaf_Loader


get the library path

Yaf_Loader::getInstance
Yaf_Loader::getLocalNamespace
Yaf_Loader
PHP Manual

Yaf_Loader::getLibraryPath

(Yaf >=2.1.4)

Yaf_Loader::getLibraryPath — get the library path

说明

public Yaf_Loader Yaf_Loader::getLibraryPath ([ bool $is_global = false ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Loader::getInstance
Yaf_Loader::getLocalNamespace
Yaf_Loader


The getLocalNamespace purpose

Yaf_Loader::getLibraryPath
Yaf_Loader::import
Yaf_Loader
PHP Manual

Yaf_Loader::getLocalNamespace

(Yaf >=1.0.0)

Yaf_Loader::getLocalNamespace — The getLocalNamespace purpose

说明

public void Yaf_Loader::getLocalNamespace ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Loader::getLibraryPath
Yaf_Loader::import
Yaf_Loader


The import purpose

Yaf_Loader::getLocalNamespace
Yaf_Loader::isLocalName
Yaf_Loader
PHP Manual

Yaf_Loader::import

(Yaf >=1.0.0)

Yaf_Loader::import — The import purpose

说明

public static void Yaf_Loader::import ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Loader::getLocalNamespace
Yaf_Loader::isLocalName
Yaf_Loader


The isLocalName purpose

Yaf_Loader::import
Yaf_Loader::registerLocalNamespace
Yaf_Loader
PHP Manual

Yaf_Loader::isLocalName

(Yaf >=1.0.0)

Yaf_Loader::isLocalName — The isLocalName purpose

说明

public void Yaf_Loader::isLocalName ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Loader::import
Yaf_Loader::registerLocalNamespace
Yaf_Loader


注册本地类前缀

Yaf_Loader::isLocalName
Yaf_Loader::setLibraryPath
Yaf_Loader
PHP Manual

Yaf_Loader::registerLocalNamespace

(Yaf >=1.0.0)

Yaf_Loader::registerLocalNamespace — 注册本地类前缀

说明

public void Yaf_Loader::registerLocalNamespace ([ mixed $prefix ] )

register local class prefix

参数

prefix

字符串或者是数组格式的类名前缀，所有拥有和这些前缀相同前缀的类将被加载到本地library路径。

返回值

bool

范例

Example #1 Yaf_Loader::registerLocalNamespace()example

<?php
$loader = Yaf_Loader::getInstance('/local/library/', '/global/library');
$loader->registerLocalNamespace("Baidu");
$loader->registerLocalNamespace(array("Sina", "Weibo");

$loader->autoload("Baidu_Name"); // search in '/local/library/'
$loader->autoload("Sina");       // search '/local/library/'
$loader->autoload("Global_Name");// search in '/global/library/'
$loader->autoload("Foo_Bar");    // search in '/global/library/'

?>
Yaf_Loader::isLocalName
Yaf_Loader::setLibraryPath
Yaf_Loader


改变library路径

Yaf_Loader::registerLocalNamespace
Yaf_Loader::__sleep
Yaf_Loader
PHP Manual

Yaf_Loader::setLibraryPath

(Yaf >=2.1.4)

Yaf_Loader::setLibraryPath — 改变library路径

说明

public Yaf_Loader Yaf_Loader::setLibraryPath ( string $directory [, bool $is_global = false ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Loader::registerLocalNamespace
Yaf_Loader::__sleep
Yaf_Loader


The __sleep purpose

Yaf_Loader::setLibraryPath
Yaf_Loader::__wakeup
Yaf_Loader
PHP Manual

Yaf_Loader::__sleep

(Yaf >=1.0.0)

Yaf_Loader::__sleep — The __sleep purpose

说明

private void Yaf_Loader::__sleep ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Loader::setLibraryPath
Yaf_Loader::__wakeup
Yaf_Loader


The __wakeup purpose

Yaf_Loader::__sleep
Yaf_Plugin_Abstract
Yaf_Loader
PHP Manual

Yaf_Loader::__wakeup

(Yaf >=1.0.0)

Yaf_Loader::__wakeup — The __wakeup purpose

说明

private void Yaf_Loader::__wakeup ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Loader::__sleep
Yaf_Plugin_Abstract
Yaf_Loader


The Yaf_Plugin_Abstract class

(Yaf >=1.0.0)

简介

Plugins 可以让你轻松地定制和扩展框架

插件(Plugins)是一个类。 基于组件定义的类会有所变化 -- 你可能需要去实现这些接口。 但实际上，该插件(Plugin)本身就是一个类。

一个插件(plugin)会被Yaf_Dispatcher::registerPlugin()加载到Yaf框架中， 在框架注册(registerd)后，插件(plugin)类中定义方法将会在恰当的时间被该接口执行。

范例

Example #1 Plugin example

<?php
   /* bootstrap class should be defined under ./application/Bootstrap.php */
   class Bootstrap extends Yaf_Bootstrap_Abstract {
        public function _initPlugin(Yaf_Dispatcher $dispatcher) {
            /* register a plugin */
            $dispatcher->registerPlugin(new TestPlugin());
        }
   }

   /* plugin class should be placed under ./application/plugins/ */
   class TestPlugin extends Yaf_Plugin_Abstract {
        public function routerStartup(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
            /* 在路由之前执行,这个钩子里，你可以做url重写等功能 */
            var_dump("routerStartup");
        }
        public function routerShutdown(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
           /* 路由完成后，在这个钩子里，你可以做登陆检测等功能*/
            var_dump("routerShutdown");
        }
        public function dispatchLoopStartup(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
            var_dump("dispatchLoopStartup");
        }
        public function preDispatch(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
            var_dump("preDispatch");
        }
        public function postDispatch(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
            var_dump("postDispatch");
        }
        public function dispatchLoopShutdown(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
            /* final hoook
               in this hook user can do loging or implement layout */
            var_dump("dispatchLoopShutdown");
        }
   }

   Class IndexController extends Yaf_Controller_Abstract {
        public function indexAction() {
            return FALSE; //prevent rendering
        }
   }

   $config = array(
       "application" => array(
           "directory" => dirname(__FILE__) . "/application/",
       ),
   );

   $app = new Yaf_Application($config);
   $app->bootstrap()->run();
?>

以上例程的输出类似于：

string(13) "routerStartup"
string(14) "routerShutdown"
string(19) "dispatchLoopStartup"
string(11) "preDispatch"
string(12) "postDispatch"
string(20) "dispatchLoopShutdown"

类摘要

Yaf_Plugin_Abstract {
/* 方法 */
public void dispatchLoopShutdown ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response )
public void dispatchLoopStartup ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response )
public void postDispatch ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response )
public void preDispatch ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response )
public void preResponse ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response )
public void routerShutdown ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response )
public void routerStartup ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response )
}

Table of Contents

  • Yaf_Plugin_Abstract::dispatchLoopShutdown — The dispatchLoopShutdown purpose
  • Yaf_Plugin_Abstract::dispatchLoopStartup — The dispatchLoopStartup purpose
  • Yaf_Plugin_Abstract::postDispatch — The postDispatch purpose
  • Yaf_Plugin_Abstract::preDispatch — The preDispatch purpose
  • Yaf_Plugin_Abstract::preResponse — The preResponse purpose
  • Yaf_Plugin_Abstract::routerShutdown — The routerShutdown purpose
  • Yaf_Plugin_Abstract::routerStartup — RouterStartup hook
Yaf_Loader::__wakeup
Yaf_Plugin_Abstract::dispatchLoopShutdown
Yaf


The dispatchLoopShutdown purpose

Yaf_Plugin_Abstract
Yaf_Plugin_Abstract::dispatchLoopStartup
Yaf_Plugin_Abstract
PHP Manual

Yaf_Plugin_Abstract::dispatchLoopShutdown

(Yaf >=1.0.0)

Yaf_Plugin_Abstract::dispatchLoopShutdown — The dispatchLoopShutdown purpose

说明

public void Yaf_Plugin_Abstract::dispatchLoopShutdown ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response )

这个方式是Yaf插件钩子系统中最后的一个钩子，如果一个用户插件实现了这个方法，它将在分发循环结束之后触发。

Warning

本函数还未编写文档，仅有参数列表。

参数

request

response

返回值

参见

  • Yaf_Plugin_Abstract::routerStartup() - RouterStartup hook
  • Yaf_Plugin_Abstract::routerShutdown() - The routerShutdown purpose
  • Yaf_Plugin_Abstract::dispatchLoopStartup() - The dispatchLoopStartup purpose
  • Yaf_Plugin_Abstract::preDispatch() - The preDispatch purpose
  • Yaf_Plugin_Abstract::postDispatch() - The postDispatch purpose
Yaf_Plugin_Abstract
Yaf_Plugin_Abstract::dispatchLoopStartup
Yaf_Plugin_Abstract


The dispatchLoopStartup purpose

Yaf_Plugin_Abstract::dispatchLoopShutdown
Yaf_Plugin_Abstract::postDispatch
Yaf_Plugin_Abstract
PHP Manual

Yaf_Plugin_Abstract::dispatchLoopStartup

(Yaf >=1.0.0)

Yaf_Plugin_Abstract::dispatchLoopStartup — The dispatchLoopStartup purpose

说明

public void Yaf_Plugin_Abstract::dispatchLoopStartup ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response )

这个钩子将在分发循环开始之前触发。

Warning

本函数还未编写文档，仅有参数列表。

参数

request

response

返回值

Yaf_Plugin_Abstract::dispatchLoopShutdown
Yaf_Plugin_Abstract::postDispatch
Yaf_Plugin_Abstract


The postDispatch purpose

Yaf_Plugin_Abstract::dispatchLoopStartup
Yaf_Plugin_Abstract::preDispatch
Yaf_Plugin_Abstract
PHP Manual

Yaf_Plugin_Abstract::postDispatch

(Yaf >=1.0.0)

Yaf_Plugin_Abstract::postDispatch — The postDispatch purpose

说明

public void Yaf_Plugin_Abstract::postDispatch ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response )

Warning

本函数还未编写文档，仅有参数列表。

参数

request

response

返回值

Yaf_Plugin_Abstract::dispatchLoopStartup
Yaf_Plugin_Abstract::preDispatch
Yaf_Plugin_Abstract


The preDispatch purpose

Yaf_Plugin_Abstract::postDispatch
Yaf_Plugin_Abstract::preResponse
Yaf_Plugin_Abstract
PHP Manual

Yaf_Plugin_Abstract::preDispatch

(Yaf >=1.0.0)

Yaf_Plugin_Abstract::preDispatch — The preDispatch purpose

说明

public void Yaf_Plugin_Abstract::preDispatch ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response )

Warning

本函数还未编写文档，仅有参数列表。

参数

request

response

返回值

Yaf_Plugin_Abstract::postDispatch
Yaf_Plugin_Abstract::preResponse
Yaf_Plugin_Abstract


The preResponse purpose

Yaf_Plugin_Abstract::preDispatch
Yaf_Plugin_Abstract::routerShutdown
Yaf_Plugin_Abstract
PHP Manual

Yaf_Plugin_Abstract::preResponse

(Yaf >=1.0.0)

Yaf_Plugin_Abstract::preResponse — The preResponse purpose

说明

public void Yaf_Plugin_Abstract::preResponse ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response )

这个钩子在响应(Yaf_Response)前被触发

Warning

本函数还未编写文档，仅有参数列表。

参数

request

response

返回值

Yaf_Plugin_Abstract::preDispatch
Yaf_Plugin_Abstract::routerShutdown
Yaf_Plugin_Abstract


The routerShutdown purpose

Yaf_Plugin_Abstract::preResponse
Yaf_Plugin_Abstract::routerStartup
Yaf_Plugin_Abstract
PHP Manual

Yaf_Plugin_Abstract::routerShutdown

(Yaf >=1.0.0)

Yaf_Plugin_Abstract::routerShutdown — The routerShutdown purpose

说明

public void Yaf_Plugin_Abstract::routerShutdown ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response )

这个钩子在路由结束之后触发，通常被用于登陆检查。

Warning

本函数还未编写文档，仅有参数列表。

参数

request

response

返回值

范例

Example #1 Yaf_Plugin_Abstract::routerShutdown()example

<?php
class UserInitPlugin extends Yaf_Plugin_Abstract {

    public function routerShutdown(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
        $controller = $request->getControllerName();

        /**
         * Use access controller is unecessary for APIs
         */
        if (in_array(strtolower($controller), array(
            'api',
        ))) {
            return TRUE;
        }

        if (Yaf_Session::getInstance()->has("login")) {
            return TRUE;
        }

        /* Use access check failed, need to login */
        $response->redirect("http://yourdomain.com/login/");
        return FALSE;
    }
?>

参见

  • Yaf_Plugin_Abstract::routerStartup() - RouterStartup hook
  • Yaf_Plugin_Abstract::dispatchLoopStartup() - The dispatchLoopStartup purpose
  • Yaf_Plugin_Abstract::preDispatch() - The preDispatch purpose
  • Yaf_Plugin_Abstract::postDispatch() - The postDispatch purpose
  • Yaf_Plugin_Abstract::dispatchLoopShutdown() - The dispatchLoopShutdown purpose
Yaf_Plugin_Abstract::preResponse
Yaf_Plugin_Abstract::routerStartup
Yaf_Plugin_Abstract


RouterStartup hook

Yaf_Plugin_Abstract::routerShutdown
Yaf_Registry
Yaf_Plugin_Abstract
PHP Manual

Yaf_Plugin_Abstract::routerStartup

(Yaf >=1.0.0)

Yaf_Plugin_Abstract::routerStartup — RouterStartup hook

说明

public void Yaf_Plugin_Abstract::routerStartup ( Yaf_Request_Abstract $request , Yaf_Response_Abstract $response )

这个是Yaf插件的勾子系统最早被触发的的一个方法，如果一个用户插件实现了这个方法，它将在路由之前触发。

Warning

本函数还未编写文档，仅有参数列表。

参数

request

response

返回值

参见

  • Yaf_Plugin_Abstract::routerShutdown() - The routerShutdown purpose
  • Yaf_Plugin_Abstract::dispatchLoopStartup() - The dispatchLoopStartup purpose
  • Yaf_Plugin_Abstract::preDispatch() - The preDispatch purpose
  • Yaf_Plugin_Abstract::postDispatch() - The postDispatch purpose
  • Yaf_Plugin_Abstract::dispatchLoopShutdown() - The dispatchLoopShutdown purpose
Yaf_Plugin_Abstract::routerShutdown
Yaf_Registry
Yaf_Plugin_Abstract


The Yaf_Registry class

(Yaf >=1.0.0)

简介

Yaf_Registry, 对象注册表(或称对象仓库)是一个用于在整个应用空间(application space)内存储对象和值的容器. 通过把对象存储在其中,我们可以在整个项目的任何地方使用同一个对象.这种机制相当于一种全局存储. 我们可以通过Yaf_Registry类的静态方法来使用对象注册表. 另外,由于该类是一个数组对象,你可以使用数组形式来访问其中的类方法

类摘要

Yaf_Registry {
/* 属性 */
static $_instance ;
protected $_entries ;
/* 方法 */
private void __clone ( void )
__construct ( void )
public static void del ( string $name )
public static mixed get ( string $name )
public static bool has ( string $name )
public static bool set ( string $name , string $value )
}

属性

_instance

_entries

Table of Contents

  • Yaf_Registry::__clone — The __clone purpose
  • Yaf_Registry::__construct — Yaf_Registry implements singleton
  • Yaf_Registry::del — Remove an item from registry
  • Yaf_Registry::get — Retrieve an item from registry
  • Yaf_Registry::has — Check whether an item exists
  • Yaf_Registry::set — Add an item into registry
Yaf_Plugin_Abstract::routerStartup
Yaf_Registry::__clone
Yaf


The __clone purpose

Yaf_Registry
Yaf_Registry::__construct
Yaf_Registry
PHP Manual

Yaf_Registry::__clone

(Yaf >=1.0.0)

Yaf_Registry::__clone — The __clone purpose

说明

private void Yaf_Registry::__clone ( void )

参数

此函数没有参数。

返回值

Yaf_Registry
Yaf_Registry::__construct
Yaf_Registry


Yaf_Registry implements singleton

Yaf_Registry::__clone
Yaf_Registry::del
Yaf_Registry
PHP Manual

Yaf_Registry::__construct

(Yaf >=1.0.0)

Yaf_Registry::__construct — Yaf_Registry implements singleton

说明

Yaf_Registry::__construct ( void )

参数

此函数没有参数。

返回值

Yaf_Registry::__clone
Yaf_Registry::del
Yaf_Registry


Remove an item from registry

Yaf_Registry::__construct
Yaf_Registry::get
Yaf_Registry
PHP Manual

Yaf_Registry::del

(Yaf >=1.0.0)

Yaf_Registry::del — Remove an item from registry

说明

public static void Yaf_Registry::del ( string $name )

删除存在于注册表中的一个项目

参数

name

返回值

Yaf_Registry::__construct
Yaf_Registry::get
Yaf_Registry


Retrieve an item from registry

Yaf_Registry::del
Yaf_Registry::has
Yaf_Registry
PHP Manual

Yaf_Registry::get

(Yaf >=1.0.0)

Yaf_Registry::get — Retrieve an item from registry

说明

public static mixed Yaf_Registry::get ( string $name )

获取注册表中寄存的项

参数

name

返回值

Yaf_Registry::del
Yaf_Registry::has
Yaf_Registry


Check whether an item exists

Yaf_Registry::get
Yaf_Registry::set
Yaf_Registry
PHP Manual

Yaf_Registry::has

(Yaf >=1.0.0)

Yaf_Registry::has — Check whether an item exists

说明

public static bool Yaf_Registry::has ( string $name )

查询某一项目是否存在于注册表中

参数

name

返回值

Yaf_Registry::get
Yaf_Registry::set
Yaf_Registry


Add an item into registry

Yaf_Registry::has
Yaf_Request_Abstract
Yaf_Registry
PHP Manual

Yaf_Registry::set

(Yaf >=1.0.0)

Yaf_Registry::set — Add an item into registry

说明

public static bool Yaf_Registry::set ( string $name , string $value )

往全局注册表添加一个新的项

参数

name

value

返回值

Yaf_Registry::has
Yaf_Request_Abstract
Yaf_Registry


The Yaf_Request_Abstract class

(Yaf >=1.0.0)

简介

类摘要

Yaf_Request_Abstract {
/* Constants */
const string SCHEME_HTTP = http ;
const string SCHEME_HTTPS = https ;
/* 属性 */
public $module ;
public $controller ;
public $action ;
public $method ;
protected $params ;
protected $language ;
protected $_exception ;
protected $_base_uri ;
protected $uri ;
protected $dispatched ;
protected $routed ;
/* 方法 */
public void getActionName ( void )
public void getBaseUri ( void )
public void getControllerName ( void )
public void getEnv ( string $name [, string $default ] )
public void getException ( void )
public void getLanguage ( void )
public void getMethod ( void )
public void getModuleName ( void )
public void getParam ( string $name [, string $default ] )
public void getParams ( void )
public void getRequestUri ( void )
public void getServer ( string $name [, string $default ] )
public void isCli ( void )
public void isDispatched ( void )
public void isGet ( void )
public void isHead ( void )
public void isOptions ( void )
public void isPost ( void )
public void isPut ( void )
public void isRouted ( void )
public void isXmlHttpRequest ( void )
public void setActionName ( string $action )
public void setBaseUri ( string $uir )
public void setControllerName ( string $controller )
public void setDispatched ( void )
public void setModuleName ( string $module )
public void setParam ( string $name [, string $value ] )
public void setRequestUri ( string $uir )
public void setRouted ([ string $flag ] )
}

属性

module

controller

action

method

params

language

_exception

_base_uri

uri

dispatched

routed

预定义常量

Yaf_Request_Abstract::SCHEME_HTTP

Yaf_Request_Abstract::SCHEME_HTTPS

Table of Contents

  • Yaf_Request_Abstract::getActionName — The getActionName purpose
  • Yaf_Request_Abstract::getBaseUri — The getBaseUri purpose
  • Yaf_Request_Abstract::getControllerName — The getControllerName purpose
  • Yaf_Request_Abstract::getEnv — 取得ENV变量的值
  • Yaf_Request_Abstract::getException — The getException purpose
  • Yaf_Request_Abstract::getLanguage — The getLanguage purpose
  • Yaf_Request_Abstract::getMethod — The getMethod purpose
  • Yaf_Request_Abstract::getModuleName — The getModuleName purpose
  • Yaf_Request_Abstract::getParam — The getParam purpose
  • Yaf_Request_Abstract::getParams — The getParams purpose
  • Yaf_Request_Abstract::getRequestUri — The getRequestUri purpose
  • Yaf_Request_Abstract::getServer — 返回SERVER变量的值
  • Yaf_Request_Abstract::isCli — The isCli purpose
  • Yaf_Request_Abstract::isDispatched — The isDispatched purpose
  • Yaf_Request_Abstract::isGet — The isGet purpose
  • Yaf_Request_Abstract::isHead — The isHead purpose
  • Yaf_Request_Abstract::isOptions — The isOptions purpose
  • Yaf_Request_Abstract::isPost — The isPost purpose
  • Yaf_Request_Abstract::isPut — The isPut purpose
  • Yaf_Request_Abstract::isRouted — The isRouted purpose
  • Yaf_Request_Abstract::isXmlHttpRequest — The isXmlHttpRequest purpose
  • Yaf_Request_Abstract::setActionName — The setActionName purpose
  • Yaf_Request_Abstract::setBaseUri — The setBaseUri purpose
  • Yaf_Request_Abstract::setControllerName — The setControllerName purpose
  • Yaf_Request_Abstract::setDispatched — The setDispatched purpose
  • Yaf_Request_Abstract::setModuleName — The setModuleName purpose
  • Yaf_Request_Abstract::setParam — The setParam purpose
  • Yaf_Request_Abstract::setRequestUri — The setRequestUri purpose
  • Yaf_Request_Abstract::setRouted — The setRouted purpose
Yaf_Registry::set
Yaf_Request_Abstract::getActionName
Yaf


The getActionName purpose

Yaf_Request_Abstract
Yaf_Request_Abstract::getBaseUri
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::getActionName

(Yaf >=1.0.0)

Yaf_Request_Abstract::getActionName — The getActionName purpose

说明

public void Yaf_Request_Abstract::getActionName ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Abstract
Yaf_Request_Abstract::getBaseUri
Yaf_Request_Abstract


The getBaseUri purpose

Yaf_Request_Abstract::getActionName
Yaf_Request_Abstract::getControllerName
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::getBaseUri

(Yaf >=1.0.0)

Yaf_Request_Abstract::getBaseUri — The getBaseUri purpose

说明

public void Yaf_Request_Abstract::getBaseUri ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Abstract::getActionName
Yaf_Request_Abstract::getControllerName
Yaf_Request_Abstract


The getControllerName purpose

Yaf_Request_Abstract::getBaseUri
Yaf_Request_Abstract::getEnv
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::getControllerName

(Yaf >=1.0.0)

Yaf_Request_Abstract::getControllerName — The getControllerName purpose

说明

public void Yaf_Request_Abstract::getControllerName ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Abstract::getBaseUri
Yaf_Request_Abstract::getEnv
Yaf_Request_Abstract


取得ENV变量的值

Yaf_Request_Abstract::getControllerName
Yaf_Request_Abstract::getException
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::getEnv

(Yaf >=1.0.0)

Yaf_Request_Abstract::getEnv — 取得ENV变量的值

说明

public void Yaf_Request_Abstract::getEnv ( string $name [, string $default ] )

取得ENV变量的值

参数

name

the variable name

default

如果这个参数被提供了，当参数找不到的时候它将被返回

返回值

参见

  • Yaf_Request_Abstract::getServer
  • Yaf_Request_Abstract::getParam
Yaf_Request_Abstract::getControllerName
Yaf_Request_Abstract::getException
Yaf_Request_Abstract


The getException purpose

Yaf_Request_Abstract::getEnv
Yaf_Request_Abstract::getLanguage
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::getException

(Yaf >=1.0.0)

Yaf_Request_Abstract::getException — The getException purpose

说明

public void Yaf_Request_Abstract::getException ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Abstract::getEnv
Yaf_Request_Abstract::getLanguage
Yaf_Request_Abstract


The getLanguage purpose

Yaf_Request_Abstract::getException
Yaf_Request_Abstract::getMethod
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::getLanguage

(Yaf >=1.0.0)

Yaf_Request_Abstract::getLanguage — The getLanguage purpose

说明

public void Yaf_Request_Abstract::getLanguage ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Abstract::getException
Yaf_Request_Abstract::getMethod
Yaf_Request_Abstract


The getMethod purpose

Yaf_Request_Abstract::getLanguage
Yaf_Request_Abstract::getModuleName
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::getMethod

(Yaf >=1.0.0)

Yaf_Request_Abstract::getMethod — The getMethod purpose

说明

public void Yaf_Request_Abstract::getMethod ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Abstract::getLanguage
Yaf_Request_Abstract::getModuleName
Yaf_Request_Abstract


The getModuleName purpose

Yaf_Request_Abstract::getMethod
Yaf_Request_Abstract::getParam
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::getModuleName

(Yaf >=1.0.0)

Yaf_Request_Abstract::getModuleName — The getModuleName purpose

说明

public void Yaf_Request_Abstract::getModuleName ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Abstract::getMethod
Yaf_Request_Abstract::getParam
Yaf_Request_Abstract


The getParam purpose

Yaf_Request_Abstract::getModuleName
Yaf_Request_Abstract::getParams
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::getParam

(Yaf >=1.0.0)

Yaf_Request_Abstract::getParam — The getParam purpose

说明

public void Yaf_Request_Abstract::getParam ( string $name [, string $default ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

default

返回值

Yaf_Request_Abstract::getModuleName
Yaf_Request_Abstract::getParams
Yaf_Request_Abstract


The getParams purpose

Yaf_Request_Abstract::getParam
Yaf_Request_Abstract::getRequestUri
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::getParams

(Yaf >=1.0.0)

Yaf_Request_Abstract::getParams — The getParams purpose

说明

public void Yaf_Request_Abstract::getParams ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Abstract::getParam
Yaf_Request_Abstract::getRequestUri
Yaf_Request_Abstract


The getRequestUri purpose

Yaf_Request_Abstract::getParams
Yaf_Request_Abstract::getServer
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::getRequestUri

(Yaf >=1.0.0)

Yaf_Request_Abstract::getRequestUri — The getRequestUri purpose

说明

public void Yaf_Request_Abstract::getRequestUri ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Abstract::getParams
Yaf_Request_Abstract::getServer
Yaf_Request_Abstract


返回SERVER变量的值

Yaf_Request_Abstract::getRequestUri
Yaf_Request_Abstract::isCli
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::getServer

(Yaf >=1.0.0)

Yaf_Request_Abstract::getServer — 返回SERVER变量的值

说明

public void Yaf_Request_Abstract::getServer ( string $name [, string $default ] )

返回SERVER变量的值

参数

name

the variable name

default

如果提供这个参数，在没找到变量值时候此参数的值将被返回

返回值

参见

  • Yaf_Request_Abstract::getParam
  • Yaf_Request_Abstract::getEnv
Yaf_Request_Abstract::getRequestUri
Yaf_Request_Abstract::isCli
Yaf_Request_Abstract


The isCli purpose

Yaf_Request_Abstract::getServer
Yaf_Request_Abstract::isDispatched
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::isCli

(Yaf >=1.0.0)

Yaf_Request_Abstract::isCli — The isCli purpose

说明

public void Yaf_Request_Abstract::isCli ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Abstract::getServer
Yaf_Request_Abstract::isDispatched
Yaf_Request_Abstract


The isDispatched purpose

Yaf_Request_Abstract::isCli
Yaf_Request_Abstract::isGet
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::isDispatched

(Yaf >=1.0.0)

Yaf_Request_Abstract::isDispatched — The isDispatched purpose

说明

public void Yaf_Request_Abstract::isDispatched ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Abstract::isCli
Yaf_Request_Abstract::isGet
Yaf_Request_Abstract


The isGet purpose

Yaf_Request_Abstract::isDispatched
Yaf_Request_Abstract::isHead
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::isGet

(Yaf >=1.0.0)

Yaf_Request_Abstract::isGet — The isGet purpose

说明

public void Yaf_Request_Abstract::isGet ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Abstract::isDispatched
Yaf_Request_Abstract::isHead
Yaf_Request_Abstract


The isHead purpose

Yaf_Request_Abstract::isGet
Yaf_Request_Abstract::isOptions
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::isHead

(Yaf >=1.0.0)

Yaf_Request_Abstract::isHead — The isHead purpose

说明

public void Yaf_Request_Abstract::isHead ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Abstract::isGet
Yaf_Request_Abstract::isOptions
Yaf_Request_Abstract


The isOptions purpose

Yaf_Request_Abstract::isHead
Yaf_Request_Abstract::isPost
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::isOptions

(Yaf >=1.0.0)

Yaf_Request_Abstract::isOptions — The isOptions purpose

说明

public void Yaf_Request_Abstract::isOptions ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Abstract::isHead
Yaf_Request_Abstract::isPost
Yaf_Request_Abstract


The isPost purpose

Yaf_Request_Abstract::isOptions
Yaf_Request_Abstract::isPut
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::isPost

(Yaf >=1.0.0)

Yaf_Request_Abstract::isPost — The isPost purpose

说明

public void Yaf_Request_Abstract::isPost ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Abstract::isOptions
Yaf_Request_Abstract::isPut
Yaf_Request_Abstract


The isPut purpose

Yaf_Request_Abstract::isPost
Yaf_Request_Abstract::isRouted
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::isPut

(Yaf >=1.0.0)

Yaf_Request_Abstract::isPut — The isPut purpose

说明

public void Yaf_Request_Abstract::isPut ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Abstract::isPost
Yaf_Request_Abstract::isRouted
Yaf_Request_Abstract


The isRouted purpose

Yaf_Request_Abstract::isPut
Yaf_Request_Abstract::isXmlHttpRequest
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::isRouted

(Yaf >=1.0.0)

Yaf_Request_Abstract::isRouted — The isRouted purpose

说明

public void Yaf_Request_Abstract::isRouted ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Abstract::isPut
Yaf_Request_Abstract::isXmlHttpRequest
Yaf_Request_Abstract


The isXmlHttpRequest purpose

Yaf_Request_Abstract::isRouted
Yaf_Request_Abstract::setActionName
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::isXmlHttpRequest

(Yaf >=1.0.0)

Yaf_Request_Abstract::isXmlHttpRequest — The isXmlHttpRequest purpose

说明

public void Yaf_Request_Abstract::isXmlHttpRequest ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Abstract::isRouted
Yaf_Request_Abstract::setActionName
Yaf_Request_Abstract


The setActionName purpose

Yaf_Request_Abstract::isXmlHttpRequest
Yaf_Request_Abstract::setBaseUri
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::setActionName

(Yaf >=1.0.0)

Yaf_Request_Abstract::setActionName — The setActionName purpose

说明

public void Yaf_Request_Abstract::setActionName ( string $action )

Warning

本函数还未编写文档，仅有参数列表。

参数

action

返回值

Yaf_Request_Abstract::isXmlHttpRequest
Yaf_Request_Abstract::setBaseUri
Yaf_Request_Abstract


The setBaseUri purpose

Yaf_Request_Abstract::setActionName
Yaf_Request_Abstract::setControllerName
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::setBaseUri

(Yaf >=1.0.0)

Yaf_Request_Abstract::setBaseUri — The setBaseUri purpose

说明

public void Yaf_Request_Abstract::setBaseUri ( string $uir )

Warning

本函数还未编写文档，仅有参数列表。

参数

uir

返回值

Yaf_Request_Abstract::setActionName
Yaf_Request_Abstract::setControllerName
Yaf_Request_Abstract


The setControllerName purpose

Yaf_Request_Abstract::setBaseUri
Yaf_Request_Abstract::setDispatched
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::setControllerName

(Yaf >=1.0.0)

Yaf_Request_Abstract::setControllerName — The setControllerName purpose

说明

public void Yaf_Request_Abstract::setControllerName ( string $controller )

Warning

本函数还未编写文档，仅有参数列表。

参数

controller

返回值

Yaf_Request_Abstract::setBaseUri
Yaf_Request_Abstract::setDispatched
Yaf_Request_Abstract


The setDispatched purpose

Yaf_Request_Abstract::setControllerName
Yaf_Request_Abstract::setModuleName
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::setDispatched

(Yaf >=1.0.0)

Yaf_Request_Abstract::setDispatched — The setDispatched purpose

说明

public void Yaf_Request_Abstract::setDispatched ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Abstract::setControllerName
Yaf_Request_Abstract::setModuleName
Yaf_Request_Abstract


The setModuleName purpose

Yaf_Request_Abstract::setDispatched
Yaf_Request_Abstract::setParam
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::setModuleName

(Yaf >=1.0.0)

Yaf_Request_Abstract::setModuleName — The setModuleName purpose

说明

public void Yaf_Request_Abstract::setModuleName ( string $module )

Warning

本函数还未编写文档，仅有参数列表。

参数

module

返回值

Yaf_Request_Abstract::setDispatched
Yaf_Request_Abstract::setParam
Yaf_Request_Abstract


The setParam purpose

Yaf_Request_Abstract::setModuleName
Yaf_Request_Abstract::setRequestUri
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::setParam

(Yaf >=1.0.0)

Yaf_Request_Abstract::setParam — The setParam purpose

说明

public void Yaf_Request_Abstract::setParam ( string $name [, string $value ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

value

返回值

Yaf_Request_Abstract::setModuleName
Yaf_Request_Abstract::setRequestUri
Yaf_Request_Abstract


The setRequestUri purpose

Yaf_Request_Abstract::setParam
Yaf_Request_Abstract::setRouted
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::setRequestUri

(Yaf >=2.1.0)

Yaf_Request_Abstract::setRequestUri — The setRequestUri purpose

说明

public void Yaf_Request_Abstract::setRequestUri ( string $uir )

Warning

本函数还未编写文档，仅有参数列表。

参数

uir

返回值

Yaf_Request_Abstract::setParam
Yaf_Request_Abstract::setRouted
Yaf_Request_Abstract


The setRouted purpose

Yaf_Request_Abstract::setRequestUri
Yaf_Request_Http
Yaf_Request_Abstract
PHP Manual

Yaf_Request_Abstract::setRouted

(Yaf >=1.0.0)

Yaf_Request_Abstract::setRouted — The setRouted purpose

说明

public void Yaf_Request_Abstract::setRouted ([ string $flag ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

flag

返回值

Yaf_Request_Abstract::setRequestUri
Yaf_Request_Http
Yaf_Request_Abstract


The Yaf_Request_Http class

(Yaf >=1.0.0)

简介

类摘要

Yaf_Request_Http extends Yaf_Request_Abstract {
/* 属性 */
/* 方法 */
private void __clone ( void )
__construct ( void )
public mixed get ( string $name [, string $default ] )
public mixed getCookie ( string $name [, string $default ] )
public void getFiles ( void )
public mixed getPost ( string $name [, string $default ] )
public mixed getQuery ( string $name [, string $default ] )
public void getRequest ( void )
public bool isXmlHttpRequest ( void )
/* 继承的方法 */
public void Yaf_Request_Abstract::getActionName ( void )
public void Yaf_Request_Abstract::getBaseUri ( void )
public void Yaf_Request_Abstract::getControllerName ( void )
public void Yaf_Request_Abstract::getEnv ( string $name [, string $default ] )
public void Yaf_Request_Abstract::getException ( void )
public void Yaf_Request_Abstract::getLanguage ( void )
public void Yaf_Request_Abstract::getMethod ( void )
public void Yaf_Request_Abstract::getModuleName ( void )
public void Yaf_Request_Abstract::getParam ( string $name [, string $default ] )
public void Yaf_Request_Abstract::getParams ( void )
public void Yaf_Request_Abstract::getRequestUri ( void )
public void Yaf_Request_Abstract::getServer ( string $name [, string $default ] )
public void Yaf_Request_Abstract::isCli ( void )
public void Yaf_Request_Abstract::isDispatched ( void )
public void Yaf_Request_Abstract::isGet ( void )
public void Yaf_Request_Abstract::isHead ( void )
public void Yaf_Request_Abstract::isOptions ( void )
public void Yaf_Request_Abstract::isPost ( void )
public void Yaf_Request_Abstract::isPut ( void )
public void Yaf_Request_Abstract::isRouted ( void )
public void Yaf_Request_Abstract::isXmlHttpRequest ( void )
public void Yaf_Request_Abstract::setActionName ( string $action )
public void Yaf_Request_Abstract::setBaseUri ( string $uir )
public void Yaf_Request_Abstract::setControllerName ( string $controller )
public void Yaf_Request_Abstract::setDispatched ( void )
public void Yaf_Request_Abstract::setModuleName ( string $module )
public void Yaf_Request_Abstract::setParam ( string $name [, string $value ] )
public void Yaf_Request_Abstract::setRequestUri ( string $uir )
public void Yaf_Request_Abstract::setRouted ([ string $flag ] )
}

属性

module

controller

action

method

params

language

_exception

_base_uri

uri

dispatched

routed

Table of Contents

  • Yaf_Request_Http::__clone — The __clone purpose
  • Yaf_Request_Http::__construct — The __construct purpose
  • Yaf_Request_Http::get — 从客户端返回变量
  • Yaf_Request_Http::getCookie — 返回Cookie变量
  • Yaf_Request_Http::getFiles — The getFiles purpose
  • Yaf_Request_Http::getPost — 返回POST变量
  • Yaf_Request_Http::getQuery — fetch a query parameter
  • Yaf_Request_Http::getRequest — The getRequest purpose
  • Yaf_Request_Http::isXmlHttpRequest — 是否为Ajax请求
Yaf_Request_Abstract::setRouted
Yaf_Request_Http::__clone
Yaf


The __clone purpose

Yaf_Request_Http
Yaf_Request_Http::__construct
Yaf_Request_Http
PHP Manual

Yaf_Request_Http::__clone

(Yaf >=1.0.0)

Yaf_Request_Http::__clone — The __clone purpose

说明

private void Yaf_Request_Http::__clone ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Http
Yaf_Request_Http::__construct
Yaf_Request_Http


The __construct purpose

Yaf_Request_Http::__clone
Yaf_Request_Http::get
Yaf_Request_Http
PHP Manual

Yaf_Request_Http::__construct

(Yaf >=1.0.0)

Yaf_Request_Http::__construct — The __construct purpose

说明

Yaf_Request_Http::__construct ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Http::__clone
Yaf_Request_Http::get
Yaf_Request_Http


从客户端返回变量

Yaf_Request_Http::__construct
Yaf_Request_Http::getCookie
Yaf_Request_Http
PHP Manual

Yaf_Request_Http::get

(Yaf >=1.0.0)

Yaf_Request_Http::get — 从客户端返回变量

说明

public mixed Yaf_Request_Http::get ( string $name [, string $default ] )

从客户端返回变量，这个方法将从请求参数中寻找参数name，如果没有找到的话，将从POST, GET, Cookie, Server中寻找

参数

name

the variable name

default

如果提供了此参数，当变量在未被找到的情况下，它将被返回

返回值

参见

  • Yaf_Request_Http::getQuery
  • Yaf_Request_Http::getPost
  • Yaf_Request_Http::getCookie
  • Yaf_Request_Http::getServer
  • Yaf_Request_Http::getParam
Yaf_Request_Http::__construct
Yaf_Request_Http::getCookie
Yaf_Request_Http


返回Cookie变量

Yaf_Request_Http::get
Yaf_Request_Http::getFiles
Yaf_Request_Http
PHP Manual

Yaf_Request_Http::getCookie

(Yaf >=1.0.0)

Yaf_Request_Http::getCookie — 返回Cookie变量

说明

public mixed Yaf_Request_Http::getCookie ( string $name [, string $default ] )

返回Cookie变量

参数

name

the cookie name

default

如果提供了此参数，当变量在未被找到的情况下，提供的参数将被返回

返回值

参见

  • Yaf_Request_Http::get
  • Yaf_Request_Http::getQuery
  • Yaf_Request_Http::getPost
  • Yaf_Request_Http::getServer
  • Yaf_Request_Http::getParam
Yaf_Request_Http::get
Yaf_Request_Http::getFiles
Yaf_Request_Http


The getFiles purpose

Yaf_Request_Http::getCookie
Yaf_Request_Http::getPost
Yaf_Request_Http
PHP Manual

Yaf_Request_Http::getFiles

(Yaf >=1.0.0)

Yaf_Request_Http::getFiles — The getFiles purpose

说明

public void Yaf_Request_Http::getFiles ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Http::getCookie
Yaf_Request_Http::getPost
Yaf_Request_Http


返回POST变量

Yaf_Request_Http::getFiles
Yaf_Request_Http::getQuery
Yaf_Request_Http
PHP Manual

Yaf_Request_Http::getPost

(Yaf >=1.0.0)

Yaf_Request_Http::getPost — 返回POST变量

说明

public mixed Yaf_Request_Http::getPost ( string $name [, string $default ] )

返回POST变量

参数

name

the variable name

default

如果提供了此参数，当变量在未被找到的情况下，提供的参数将被返回

返回值

参见

  • Yaf_Request_Http::get
  • Yaf_Request_Http::getQuery
  • Yaf_Request_Http::getCookie
  • Yaf_Request_Http::getServer
  • Yaf_Request_Http::getParam
Yaf_Request_Http::getFiles
Yaf_Request_Http::getQuery
Yaf_Request_Http


fetch a query parameter

Yaf_Request_Http::getPost
Yaf_Request_Http::getRequest
Yaf_Request_Http
PHP Manual

Yaf_Request_Http::getQuery

(Yaf >=1.0.0)

Yaf_Request_Http::getQuery — fetch a query parameter

说明

public mixed Yaf_Request_Http::getQuery ( string $name [, string $default ] )

返回Get变量

参数

name

the variable name

default

如果提供了此参数，当变量在未被找到的情况下，提供的参数将被返回

返回值

参见

  • Yaf_Request_Http::get
  • Yaf_Request_Http::getPost
  • Yaf_Request_Http::getCookie
  • Yaf_Request_Http::getServer
  • Yaf_Request_Http::getParam
Yaf_Request_Http::getPost
Yaf_Request_Http::getRequest
Yaf_Request_Http


The getRequest purpose

Yaf_Request_Http::getQuery
Yaf_Request_Http::isXmlHttpRequest
Yaf_Request_Http
PHP Manual

Yaf_Request_Http::getRequest

(Yaf >=1.0.0)

Yaf_Request_Http::getRequest — The getRequest purpose

说明

public void Yaf_Request_Http::getRequest ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Http::getQuery
Yaf_Request_Http::isXmlHttpRequest
Yaf_Request_Http


是否为Ajax请求

Yaf_Request_Http::getRequest
Yaf_Request_Simple
Yaf_Request_Http
PHP Manual

Yaf_Request_Http::isXmlHttpRequest

(Yaf >=1.0.0)

Yaf_Request_Http::isXmlHttpRequest — 是否为Ajax请求

说明

public bool Yaf_Request_Http::isXmlHttpRequest ( void )

检查请求是否是Ajax请求

Note:

这个方法取决于请求报头：HTTP_X_REQUESTED_WITH，一些Javascript库在做Ajax请求时候不设置这个报文头。

参数

此函数没有参数。

返回值

Yaf_Request_Http::getRequest
Yaf_Request_Simple
Yaf_Request_Http


The Yaf_Request_Simple class

(Yaf >=1.0.0)

简介

Yaf_Request_Simple 特别的被用于测试。例如：CLI模式下模拟一些特殊的要求

类摘要

Yaf_Request_Simple extends Yaf_Request_Abstract {
/* Constants */
const string SCHEME_HTTP = http ;
const string SCHEME_HTTPS = https ;
/* 属性 */
/* 方法 */
private void __clone ( void )
__construct ( void )
public void get ( void )
public void getCookie ( void )
public void getFiles ( void )
public void getPost ( void )
public void getQuery ( void )
public void getRequest ( void )
public void isXmlHttpRequest ( void )
/* 继承的方法 */
public void Yaf_Request_Abstract::getActionName ( void )
public void Yaf_Request_Abstract::getBaseUri ( void )
public void Yaf_Request_Abstract::getControllerName ( void )
public void Yaf_Request_Abstract::getEnv ( string $name [, string $default ] )
public void Yaf_Request_Abstract::getException ( void )
public void Yaf_Request_Abstract::getLanguage ( void )
public void Yaf_Request_Abstract::getMethod ( void )
public void Yaf_Request_Abstract::getModuleName ( void )
public void Yaf_Request_Abstract::getParam ( string $name [, string $default ] )
public void Yaf_Request_Abstract::getParams ( void )
public void Yaf_Request_Abstract::getRequestUri ( void )
public void Yaf_Request_Abstract::getServer ( string $name [, string $default ] )
public void Yaf_Request_Abstract::isCli ( void )
public void Yaf_Request_Abstract::isDispatched ( void )
public void Yaf_Request_Abstract::isGet ( void )
public void Yaf_Request_Abstract::isHead ( void )
public void Yaf_Request_Abstract::isOptions ( void )
public void Yaf_Request_Abstract::isPost ( void )
public void Yaf_Request_Abstract::isPut ( void )
public void Yaf_Request_Abstract::isRouted ( void )
public void Yaf_Request_Abstract::isXmlHttpRequest ( void )
public void Yaf_Request_Abstract::setActionName ( string $action )
public void Yaf_Request_Abstract::setBaseUri ( string $uir )
public void Yaf_Request_Abstract::setControllerName ( string $controller )
public void Yaf_Request_Abstract::setDispatched ( void )
public void Yaf_Request_Abstract::setModuleName ( string $module )
public void Yaf_Request_Abstract::setParam ( string $name [, string $value ] )
public void Yaf_Request_Abstract::setRequestUri ( string $uir )
public void Yaf_Request_Abstract::setRouted ([ string $flag ] )
}

属性

module

controller

action

method

params

language

_exception

_base_uri

uri

dispatched

routed

预定义常量

Yaf_Request_Simple::SCHEME_HTTP

Yaf_Request_Simple::SCHEME_HTTPS

Table of Contents

  • Yaf_Request_Simple::__clone — The __clone purpose
  • Yaf_Request_Simple::__construct — The __construct purpose
  • Yaf_Request_Simple::get — The get purpose
  • Yaf_Request_Simple::getCookie — The getCookie purpose
  • Yaf_Request_Simple::getFiles — The getFiles purpose
  • Yaf_Request_Simple::getPost — The getPost purpose
  • Yaf_Request_Simple::getQuery — The getQuery purpose
  • Yaf_Request_Simple::getRequest — The getRequest purpose
  • Yaf_Request_Simple::isXmlHttpRequest — The isXmlHttpRequest purpose
Yaf_Request_Http::isXmlHttpRequest
Yaf_Request_Simple::__clone
Yaf


The __clone purpose

Yaf_Request_Simple
Yaf_Request_Simple::__construct
Yaf_Request_Simple
PHP Manual

Yaf_Request_Simple::__clone

(Yaf >=1.0.0)

Yaf_Request_Simple::__clone — The __clone purpose

说明

private void Yaf_Request_Simple::__clone ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Simple
Yaf_Request_Simple::__construct
Yaf_Request_Simple


The __construct purpose

Yaf_Request_Simple::__clone
Yaf_Request_Simple::get
Yaf_Request_Simple
PHP Manual

Yaf_Request_Simple::__construct

(Yaf >=1.0.0)

Yaf_Request_Simple::__construct — The __construct purpose

说明

Yaf_Request_Simple::__construct ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Simple::__clone
Yaf_Request_Simple::get
Yaf_Request_Simple


The get purpose

Yaf_Request_Simple::__construct
Yaf_Request_Simple::getCookie
Yaf_Request_Simple
PHP Manual

Yaf_Request_Simple::get

(Yaf >=1.0.0)

Yaf_Request_Simple::get — The get purpose

说明

public void Yaf_Request_Simple::get ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Simple::__construct
Yaf_Request_Simple::getCookie
Yaf_Request_Simple


The getCookie purpose

Yaf_Request_Simple::get
Yaf_Request_Simple::getFiles
Yaf_Request_Simple
PHP Manual

Yaf_Request_Simple::getCookie

(Yaf >=1.0.0)

Yaf_Request_Simple::getCookie — The getCookie purpose

说明

public void Yaf_Request_Simple::getCookie ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Simple::get
Yaf_Request_Simple::getFiles
Yaf_Request_Simple


The getFiles purpose

Yaf_Request_Simple::getCookie
Yaf_Request_Simple::getPost
Yaf_Request_Simple
PHP Manual

Yaf_Request_Simple::getFiles

(Yaf >=1.0.0)

Yaf_Request_Simple::getFiles — The getFiles purpose

说明

public void Yaf_Request_Simple::getFiles ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Simple::getCookie
Yaf_Request_Simple::getPost
Yaf_Request_Simple


The getPost purpose

Yaf_Request_Simple::getFiles
Yaf_Request_Simple::getQuery
Yaf_Request_Simple
PHP Manual

Yaf_Request_Simple::getPost

(Yaf >=1.0.0)

Yaf_Request_Simple::getPost — The getPost purpose

说明

public void Yaf_Request_Simple::getPost ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Simple::getFiles
Yaf_Request_Simple::getQuery
Yaf_Request_Simple


The getQuery purpose

Yaf_Request_Simple::getPost
Yaf_Request_Simple::getRequest
Yaf_Request_Simple
PHP Manual

Yaf_Request_Simple::getQuery

(Yaf >=1.0.0)

Yaf_Request_Simple::getQuery — The getQuery purpose

说明

public void Yaf_Request_Simple::getQuery ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Simple::getPost
Yaf_Request_Simple::getRequest
Yaf_Request_Simple


The getRequest purpose

Yaf_Request_Simple::getQuery
Yaf_Request_Simple::isXmlHttpRequest
Yaf_Request_Simple
PHP Manual

Yaf_Request_Simple::getRequest

(Yaf >=1.0.0)

Yaf_Request_Simple::getRequest — The getRequest purpose

说明

public void Yaf_Request_Simple::getRequest ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Simple::getQuery
Yaf_Request_Simple::isXmlHttpRequest
Yaf_Request_Simple


The isXmlHttpRequest purpose

Yaf_Request_Simple::getRequest
Yaf_Response_Abstract
Yaf_Request_Simple
PHP Manual

Yaf_Request_Simple::isXmlHttpRequest

(Yaf >=1.0.0)

Yaf_Request_Simple::isXmlHttpRequest — The isXmlHttpRequest purpose

说明

public void Yaf_Request_Simple::isXmlHttpRequest ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Request_Simple::getRequest
Yaf_Response_Abstract
Yaf_Request_Simple


The Yaf_Response_Abstract class

(Yaf >=1.0.0)

简介

类摘要

Yaf_Response_Abstract {
/* Constants */
const string DEFAULT_BODY = "content" ;
/* 属性 */
protected $_header ;
protected $_body ;
protected $_sendheader ;
/* 方法 */
public bool appendBody ( string $content [, string $key ] )
public bool clearBody ([ string $key ] )
public void clearHeaders ( void )
private void __clone ( void )
public __construct ( void )
public void __destruct ( void )
public mixed getBody ([ string $key ] )
public void getHeader ( void )
public bool prependBody ( string $content [, string $key ] )
public void response ( void )
protected void setAllHeaders ( void )
public bool setBody ( string $content [, string $key ] )
public void setHeader ( void )
public void setRedirect ( void )
private void __toString ( void )
}

属性

_header

_body

_sendheader

Table of Contents

  • Yaf_Response_Abstract::appendBody — 往已有的响应body后附加新的内容
  • Yaf_Response_Abstract::clearBody — 清除已经设置的响应body
  • Yaf_Response_Abstract::clearHeaders — The clearHeaders purpose
  • Yaf_Response_Abstract::__clone — The __clone purpose
  • Yaf_Response_Abstract::__construct — The __construct purpose
  • Yaf_Response_Abstract::__destruct — The __destruct purpose
  • Yaf_Response_Abstract::getBody — 获取已经设置的响应body
  • Yaf_Response_Abstract::getHeader — The getHeader purpose
  • Yaf_Response_Abstract::prependBody — The prependBody purpose
  • Yaf_Response_Abstract::response — send response
  • Yaf_Response_Abstract::setAllHeaders — The setAllHeaders purpose
  • Yaf_Response_Abstract::setBody — 设置响应的Body
  • Yaf_Response_Abstract::setHeader — The setHeader purpose
  • Yaf_Response_Abstract::setRedirect — The setRedirect purpose
  • Yaf_Response_Abstract::__toString — The __toString purpose
Yaf_Request_Simple::isXmlHttpRequest
Yaf_Response_Abstract::appendBody
Yaf


往已有的响应body后附加新的内容

Yaf_Response_Abstract
Yaf_Response_Abstract::clearBody
Yaf_Response_Abstract
PHP Manual

Yaf_Response_Abstract::appendBody

(Yaf >=1.0.0)

Yaf_Response_Abstract::appendBody — 往已有的响应body后附加新的内容

说明

public bool Yaf_Response_Abstract::appendBody ( string $content [, string $key ] )

往已有的响应body后附加新的内容

参数

body

content string

key

响应内容的key，你可以设置一个键值对，如果你没有具体的设置的话，系统默认使用Yaf_Response_Abstract::DEFAULT_BODY

Note:

this parameter is introduced as of 2.2.0

返回值

bool

范例

Example #1 Yaf_Response_Abstract::appendBody()example

<?php
$response = new Yaf_Response_Http();

$response->setBody("Hello")->prependBody(" World");

echo $response;
?>

以上例程的输出类似于：

Hello World

参见

  • Yaf_Config_Ini

参见

  • Yaf_Response_Abstract::getBody() - 获取已经设置的响应body
  • Yaf_Response_Abstract::setBody() - 设置响应的Body
  • Yaf_Response_Abstract::prependBody() - The prependBody purpose
  • Yaf_Response_Abstract::clearBody() - 清除已经设置的响应body
Yaf_Response_Abstract
Yaf_Response_Abstract::clearBody
Yaf_Response_Abstract


清除已经设置的响应body

Yaf_Response_Abstract::appendBody
Yaf_Response_Abstract::clearHeaders
Yaf_Response_Abstract
PHP Manual

Yaf_Response_Abstract::clearBody

(Yaf >=1.0.0)

Yaf_Response_Abstract::clearBody — 清除已经设置的响应body

说明

public bool Yaf_Response_Abstract::clearBody ([ string $key ] )

清除已经设置的响应body

参数

key

the content key, if you don't specific, then all contents will be cleared. 如果你没选择具体清除哪个key所对应的内容，那所有内容将被清除

Note:

this parameter is introduced as of 2.2.0

返回值

参见

  • Yaf_Response_Abstract::setBody() - 设置响应的Body
  • Yaf_Response_Abstract::appendBody() - 往已有的响应body后附加新的内容
  • Yaf_Response_Abstract::prependBody() - The prependBody purpose
  • Yaf_Response_Abstract::getBody() - 获取已经设置的响应body
Yaf_Response_Abstract::appendBody
Yaf_Response_Abstract::clearHeaders
Yaf_Response_Abstract


The clearHeaders purpose

Yaf_Response_Abstract::clearBody
Yaf_Response_Abstract::__clone
Yaf_Response_Abstract
PHP Manual

Yaf_Response_Abstract::clearHeaders

(Yaf >=1.0.0)

Yaf_Response_Abstract::clearHeaders — The clearHeaders purpose

说明

public void Yaf_Response_Abstract::clearHeaders ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Response_Abstract::clearBody
Yaf_Response_Abstract::__clone
Yaf_Response_Abstract


The __clone purpose

Yaf_Response_Abstract::clearHeaders
Yaf_Response_Abstract::__construct
Yaf_Response_Abstract
PHP Manual

Yaf_Response_Abstract::__clone

(Yaf >=1.0.0)

Yaf_Response_Abstract::__clone — The __clone purpose

说明

private void Yaf_Response_Abstract::__clone ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Response_Abstract::clearHeaders
Yaf_Response_Abstract::__construct
Yaf_Response_Abstract


The __construct purpose

Yaf_Response_Abstract::__clone
Yaf_Response_Abstract::__destruct
Yaf_Response_Abstract
PHP Manual

Yaf_Response_Abstract::__construct

(Yaf >=1.0.0)

Yaf_Response_Abstract::__construct — The __construct purpose

说明

public Yaf_Response_Abstract::__construct ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Response_Abstract::__clone
Yaf_Response_Abstract::__destruct
Yaf_Response_Abstract


The __destruct purpose

Yaf_Response_Abstract::__construct
Yaf_Response_Abstract::getBody
Yaf_Response_Abstract
PHP Manual

Yaf_Response_Abstract::__destruct

(Yaf >=1.0.0)

Yaf_Response_Abstract::__destruct — The __destruct purpose

说明

public void Yaf_Response_Abstract::__destruct ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Response_Abstract::__construct
Yaf_Response_Abstract::getBody
Yaf_Response_Abstract


获取已经设置的响应body

Yaf_Response_Abstract::__destruct
Yaf_Response_Abstract::getHeader
Yaf_Response_Abstract
PHP Manual

Yaf_Response_Abstract::getBody

(Yaf >=1.0.0)

Yaf_Response_Abstract::getBody — 获取已经设置的响应body

说明

public mixed Yaf_Response_Abstract::getBody ([ string $key ] )

获取已经设置的响应body

参数

key

body所对应的key，如果你没指定key，系统默认使用Yaf_Response_Abstract::DEFAULT_BODY。如果你传入一个NULL，所有的内容将会以数组形式被返回。

Note:

this parameter is introduced as of 2.2.0

返回值

范例

Example #1 Yaf_Response_Abstract::getBody()example

<?php
$response = new Yaf_Response_Http();

$response->setBody("Hello")->setBody(" World", "footer");

var_dump($response->getBody()); //default
var_dump($response->getBody(Yaf_Response_Abstract::DEFAULT_BODY)); //same as above
var_dump($response->getBody("footer"));
var_dump($response->getBody(NULL)); //get all
?>

以上例程的输出类似于：

string(5) "Hello"
string(5) "Hello"
string(6) " World"
array(2) {
  ["content"]=>
  string(5) "Hello"
  ["footer"]=>
  string(6) " World"
}

参见

  • Yaf_Response_Abstract::setBody() - 设置响应的Body
  • Yaf_Response_Abstract::appendBody() - 往已有的响应body后附加新的内容
  • Yaf_Response_Abstract::prependBody() - The prependBody purpose
  • Yaf_Response_Abstract::clearBody() - 清除已经设置的响应body
Yaf_Response_Abstract::__destruct
Yaf_Response_Abstract::getHeader
Yaf_Response_Abstract


The getHeader purpose

Yaf_Response_Abstract::getBody
Yaf_Response_Abstract::prependBody
Yaf_Response_Abstract
PHP Manual

Yaf_Response_Abstract::getHeader

(Yaf >=1.0.0)

Yaf_Response_Abstract::getHeader — The getHeader purpose

说明

public void Yaf_Response_Abstract::getHeader ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Response_Abstract::getBody
Yaf_Response_Abstract::prependBody
Yaf_Response_Abstract


The prependBody purpose

Yaf_Response_Abstract::getHeader
Yaf_Response_Abstract::response
Yaf_Response_Abstract
PHP Manual

Yaf_Response_Abstract::prependBody

(Yaf >=1.0.0)

Yaf_Response_Abstract::prependBody — The prependBody purpose

说明

public bool Yaf_Response_Abstract::prependBody ( string $content [, string $key ] )

往已有的响应body前插入新的内容

参数

body

content string

key

body所对应的key，你可以设置一个body的键值对，如果你没有指定key，系统默认使用Yaf_Response_Abstract::DEFAULT_BODY

Note:

this parameter is introduced as of 2.2.0

返回值

bool

范例

Example #1 Yaf_Response_Abstract::prependBody()example

<?php
$response = new Yaf_Response_Http();

$response->setBody("World")->prependBody("Hello ");

echo $response;
?>

以上例程的输出类似于：

Hello World

参见

  • Yaf_Response_Abstract::getBody() - 获取已经设置的响应body
  • Yaf_Response_Abstract::setBody() - 设置响应的Body
  • Yaf_Response_Abstract::appendBody() - 往已有的响应body后附加新的内容
  • Yaf_Response_Abstract::clearBody() - 清除已经设置的响应body
Yaf_Response_Abstract::getHeader
Yaf_Response_Abstract::response
Yaf_Response_Abstract


send response

Yaf_Response_Abstract::prependBody
Yaf_Response_Abstract::setAllHeaders
Yaf_Response_Abstract
PHP Manual

Yaf_Response_Abstract::response

(Yaf >=1.0.0)

Yaf_Response_Abstract::response — send response

说明

public void Yaf_Response_Abstract::response ( void )

send response

参数

此函数没有参数。

返回值

范例

Example #1 Yaf_Response_Abstract::response()example

<?php
$response = new Yaf_Response_Http();

$response->setBody("Hello")->setBody(" World", "footer");

$response->response();
?>

以上例程的输出类似于：

Hello World

参见

  • Yaf_Response_Abstract::setBody() - 设置响应的Body
  • Yaf_Response_Abstract::clearBody() - 清除已经设置的响应body
Yaf_Response_Abstract::prependBody
Yaf_Response_Abstract::setAllHeaders
Yaf_Response_Abstract


The setAllHeaders purpose

Yaf_Response_Abstract::response
Yaf_Response_Abstract::setBody
Yaf_Response_Abstract
PHP Manual

Yaf_Response_Abstract::setAllHeaders

(Yaf >=1.0.0)

Yaf_Response_Abstract::setAllHeaders — The setAllHeaders purpose

说明

protected void Yaf_Response_Abstract::setAllHeaders ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Response_Abstract::response
Yaf_Response_Abstract::setBody
Yaf_Response_Abstract


设置响应的Body

Yaf_Response_Abstract::setAllHeaders
Yaf_Response_Abstract::setHeader
Yaf_Response_Abstract
PHP Manual

Yaf_Response_Abstract::setBody

(Yaf >=1.0.0)

Yaf_Response_Abstract::setBody — 设置响应的Body

说明

public bool Yaf_Response_Abstract::setBody ( string $content [, string $key ] )

设置响应的Body

参数

body

content string

key

body所对应的key，你可以设置一个body的键值对，如果你没有指定key，系统默认使用Yaf_Response_Abstract::DEFAULT_BODY

Note:

this parameter is introduced as of 2.2.0

返回值

范例

Example #1 Yaf_Response_Abstract::setBody()example

<?php
$response = new Yaf_Response_Http();

$response->setBody("Hello")->setBody(" World", "footer");

print_r($response);
echo $response;
?>

以上例程的输出类似于：

Yaf_Response_Http Object
(
    [_header:protected] => Array
        (
        )

    [_body:protected] => Array
        (
            [content] => Hello
            [footer] =>  World
        )

    [_sendheader:protected] => 1
    [_response_code:protected] => 200
)
Hello World

参见

  • Yaf_Response_Abstract::getBody() - 获取已经设置的响应body
  • Yaf_Response_Abstract::appendBody() - 往已有的响应body后附加新的内容
  • Yaf_Response_Abstract::prependBody() - The prependBody purpose
  • Yaf_Response_Abstract::clearBody() - 清除已经设置的响应body
Yaf_Response_Abstract::setAllHeaders
Yaf_Response_Abstract::setHeader
Yaf_Response_Abstract


The setHeader purpose

Yaf_Response_Abstract::setBody
Yaf_Response_Abstract::setRedirect
Yaf_Response_Abstract
PHP Manual

Yaf_Response_Abstract::setHeader

(Yaf >=1.0.0)

Yaf_Response_Abstract::setHeader — The setHeader purpose

说明

public void Yaf_Response_Abstract::setHeader ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Response_Abstract::setBody
Yaf_Response_Abstract::setRedirect
Yaf_Response_Abstract


The setRedirect purpose

Yaf_Response_Abstract::setHeader
Yaf_Response_Abstract::__toString
Yaf_Response_Abstract
PHP Manual

Yaf_Response_Abstract::setRedirect

(Yaf >=1.0.0)

Yaf_Response_Abstract::setRedirect — The setRedirect purpose

说明

public void Yaf_Response_Abstract::setRedirect ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Response_Abstract::setHeader
Yaf_Response_Abstract::__toString
Yaf_Response_Abstract


The __toString purpose

Yaf_Response_Abstract::setRedirect
Yaf_Route_Interface
Yaf_Response_Abstract
PHP Manual

Yaf_Response_Abstract::__toString

(Yaf >=1.0.0)

Yaf_Response_Abstract::__toString — The __toString purpose

说明

private void Yaf_Response_Abstract::__toString ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Response_Abstract::setRedirect
Yaf_Route_Interface
Yaf_Response_Abstract


The Yaf_Route_Interface class

(Yaf >=1.0.0)

简介

Yaf_Route_Interface是Yaf路由协议的标准接口, 它的存在使得用户可以自定义路由协议

类摘要

Yaf_Route_Interface {
/* 方法 */
abstract public string assemble ( array $info [, array $query ] )
abstract public bool route ( Yaf_Request_Abstract $request )
}

Table of Contents

  • Yaf_Route_Interface::assemble — 将指定路由规则组合成一个url
  • Yaf_Route_Interface::route — route a request
Yaf_Response_Abstract::__toString
Yaf_Route_Interface::assemble
Yaf


将指定路由规则组合成一个url

Yaf_Route_Interface
Yaf_Route_Interface::route
Yaf_Route_Interface
PHP Manual

Yaf_Route_Interface::assemble

(Yaf >=2.3.0)

Yaf_Route_Interface::assemble — 将指定路由规则组合成一个url

说明

abstract public string Yaf_Route_Interface::assemble ( array $info [, array $query ] )

这个方法会将指定的参数加上自定义的参数组合成一个url

所有route必须结合其路由规则来实现这个方法

参数

info

query

返回值

Yaf_Route_Interface
Yaf_Route_Interface::route
Yaf_Route_Interface


route a request

Yaf_Route_Interface::assemble
Yaf_Route_Map
Yaf_Route_Interface
PHP Manual

Yaf_Route_Interface::route

(Yaf >=1.0.0)

Yaf_Route_Interface::route — route a request

说明

abstract public bool Yaf_Route_Interface::route ( Yaf_Request_Abstract $request )

Yaf_Route_Interface::route() 是用户自定义路由唯一需要实现的方法。

如果这个方法返回TRUE，那么路由进程将会中止。否则，Yaf_Router 将会调用路由堆栈中的下一个路由来路由请求。

这个方法会设置路由的结果给参数请求，通过调用Yaf_Request_Abstract::setControllerName()，Yaf_Request_Abstract::setActionName() 和 Yaf_Request_Abstract::setModuleName()

这个方法也需要调用Yaf_Request_Abstract::setRouted()做最后的请求路由。

Warning

本函数还未编写文档，仅有参数列表。

参数

request

A Yaf_Request_Abstract instance.

返回值

Yaf_Route_Interface::assemble
Yaf_Route_Map
Yaf_Route_Interface


The Yaf_Route_Map class

(Yaf >=1.0.0)

简介

类摘要

Yaf_Route_Map implements Yaf_Route_Interface {
/* 属性 */
protected $_ctl_router ;
protected $_delimeter ;
/* 方法 */
public string assemble ( array $info [, array $query ] )
public __construct ([ string $controller_prefer = false [, string $delimiter = '' ]] )
public bool route ( Yaf_Request_Abstract $request )
}

属性

_ctl_router

_delimeter

Table of Contents

  • Yaf_Route_Map::assemble — 组合url
  • Yaf_Route_Map::__construct — The __construct purpose
  • Yaf_Route_Map::route — The route purpose
Yaf_Route_Interface::route
Yaf_Route_Map::assemble
Yaf


组合url

Yaf_Route_Map
Yaf_Route_Map::__construct
Yaf_Route_Map
PHP Manual

Yaf_Route_Map::assemble

(Yaf >=2.3.0)

Yaf_Route_Map::assemble — 组合url

说明

public string Yaf_Route_Map::assemble ( array $info [, array $query ] )

根据指定参数和自定义参数将map这个route组合成一个url

参数

info

需要传入一个数组，数组的key可以为:a或者:c，:a表示action，:c表示controller。

当map route初始化时，controller_prefer为false时，这个参数需要传入:c。当controller_prefer 为true时，这个参数需要传入:a。

query

用户自定义的query string，将根据此路由规则拼接在url中

范例

Example #1 Yaf_Route_Map::assemble()example

<?php

$router = new Yaf_Router();

$route  = new Yaf_Route_Map();

$router->addRoute("map", $route);

var_dump($router->getRoute('map')->assemble(
                        array(
                                ':c' => 'foo_bar'
                        ),
                        array(
                                'tkey1' => 'tval1',
                                'tkey2' => 'tval2'
                        )
                   )
);

$route = new Yaf_Route_Map(true, '_');
$router->addRoute("map", $route);

var_dump($router->getRoute('map')->assemble(
                        array(
                                ':a' => 'foo_bar'
                        ),
                        array(
                                'tkey1' => 'tval1',
                                'tkey2' => 'tval2'
                        )
                   )
);

以上例程的输出类似于：

string(%d) "/foo/bar?tkey1=tval1&tkey2=tval2"
string(%d) "/foo/bar/_/tkey1/tval1/tkey2/tval2"

返回值

Yaf_Route_Map
Yaf_Route_Map::__construct
Yaf_Route_Map


The __construct purpose

Yaf_Route_Map::assemble
Yaf_Route_Map::route
Yaf_Route_Map
PHP Manual

Yaf_Route_Map::__construct

(Yaf >=1.0.0)

Yaf_Route_Map::__construct — The __construct purpose

说明

public Yaf_Route_Map::__construct ([ string $controller_prefer = false [, string $delimiter = '' ]] )

Warning

本函数还未编写文档，仅有参数列表。

参数

controller_prefer

结果是否应该考虑作为controller或action

delimiter

返回值

范例

Example #1 Yaf_Route_Map()example

<?php
   /**
    * Add a map route to Yaf_Router route stack
    */
    Yaf_Dispatcher::getInstance()->getRouter()->addRoute("name",
        new Yaf_Route_Map());
?>

以上例程的输出类似于：

/* for http://yourdomain.com/product/foo/bar
 * route will result in following values:
 */
array(
  "controller" => "product_foo_bar",
)

Example #2 Yaf_Route_Map()example

<?php
   /**
    * Add a map route to Yaf_Router route stack
    */
    Yaf_Dispatcher::getInstance()->getRouter()->addRoute("name",
        new Yaf_Route_Map(true, "_"));
?>

以上例程的输出类似于：

/* for http://yourdomain.com/user/list/_/foo/22
 * route will result in following values:
 */
array(
    "action" => "user_list",
)

/**
 * and request parameters:
 */
array(
  "foo"   => 22,
)

Example #3 Yaf_Route_Map()example

<?php
   /**
    * Add a map route to Yaf_Router route stack by calling addconfig
    */
    $config = array(
        "name" => array(
           "type"  => "map",         //Yaf_Route_Map route
           "controllerPrefer" => FALSE,
           "delimiter"        => "#!",
           ),
    );
    Yaf_Dispatcher::getInstance()->getRouter()->addConfig(
        new Yaf_Config_Simple($config));
?>

参见

  • Yaf_Router::addRoute() - 往Router中添加新的路由
  • Yaf_Route_Static
  • Yaf_Route_Supervar
  • Yaf_Route_Simple
  • Yaf_Route_Regex
  • Yaf_Route_Rewrite
Yaf_Route_Map::assemble
Yaf_Route_Map::route
Yaf_Route_Map


The route purpose

Yaf_Route_Map::__construct
Yaf_Route_Regex
Yaf_Route_Map
PHP Manual

Yaf_Route_Map::route

(Yaf >=1.0.0)

Yaf_Route_Map::route — The route purpose

说明

public bool Yaf_Route_Map::route ( Yaf_Request_Abstract $request )

Warning

本函数还未编写文档，仅有参数列表。

参数

request

返回值

Yaf_Route_Map::__construct
Yaf_Route_Regex
Yaf_Route_Map


The Yaf_Route_Regex class

(Yaf >=1.0.0)

简介

Yaf_Route_Regex 是Yaf内置的路由中最灵活的。

类摘要

Yaf_Route_Regex extends Yaf_Route_Interface implements Yaf_Route_Interface {
/* 属性 */
protected $_route ;
protected $_default ;
protected $_maps ;
protected $_verify ;
/* 方法 */
public string assemble ( array $info [, array $query ] )
public__construct ( string $match , array $route [, array $map [, array $verify ]] )
public bool route ( Yaf_Request_Abstract $request )
/* 继承的方法 */
abstract public string Yaf_Route_Interface::assemble ( array $info [, array $query ] )
abstract public bool Yaf_Route_Interface::route ( Yaf_Request_Abstract $request )
}

属性

_route

_default

_maps

_verify

Table of Contents

  • Yaf_Route_Regex::assemble — 组合url
  • Yaf_Route_Regex::__construct — The __construct purpose
  • Yaf_Route_Regex::route — The route purpose
Yaf_Route_Map::route
Yaf_Route_Regex::assemble
Yaf


组合url

Yaf_Route_Regex
Yaf_Route_Regex::__construct
Yaf_Route_Regex
PHP Manual

Yaf_Route_Regex::assemble

(Yaf >=2.3.0)

Yaf_Route_Regex::assemble — 组合url

说明

public string Yaf_Route_Regex::assemble ( array $info [, array $query ] )

根据指定参数和自定义参数将regex这个route组合成一个url

在regex route使用assemble需要在初始化时指定reverse参数，否则将不能正常工作

参数

info

需要传入一个数组，数组的key可以为:a、:c、:m，:a表示action，:c表示controller，:m表示module。

query

用户自定义的query string，将根据此路由规则拼接在url中

范例

Example #1 Yaf_Route_Regex::assemble()example

<?php

$router = new Yaf_Router();

$route  = new Yaf_Route_Regex(
            "#^/product/([^/]+)/([^/])+#",
            array(
                'controller' => "product",  //route to product controller,
                ),
            array(),
            array(),
            '/:m/:c/:a'
        );

$router->addRoute("regex", $route);

var_dump($router->getRoute('regex')->assemble(
            array(
                ':m' => 'module',
                ':c' => 'controller',
                ':a' => 'action'
                ),
            array(
                'tkey1' => 'tval1',
                'tkey2' =>
                'tval2'
                )
            )
        );

以上例程的输出类似于：

string(49) "/module/controller/action?tkey1=tval1&tkey2=tval2"

返回值

Yaf_Route_Regex
Yaf_Route_Regex::__construct
Yaf_Route_Regex


The __construct purpose

Yaf_Route_Regex::assemble
Yaf_Route_Regex::route
Yaf_Route_Regex
PHP Manual

Yaf_Route_Regex::__construct

(Yaf >=1.0.0)

Yaf_Route_Regex::__construct — The __construct purpose

说明

publicYaf_Route_Regex::__construct ( string $match , array $route [, array $map [, array $verify ]] )

参数

match

一个完整的正则表达式，用来匹配一个请求的uri，如果不能匹配，Yaf_Route_Regex 将返回FALSE。

route

当路由正则匹配成功请求uri时，Yaf_Route_Regex将会用它来决定哪一个m/c/a被路由。

在这个数组中无论是m/c/a都是最优的，如果你没有提供一个明确的值，它将会以默认方式被路由。 另外, 你也可以使用map的结果作为m/c/a的结果.

map

将匹配到的结果捕捉放到一个已经命名好的数组中。

verify

返回值

范例

Example #1 Yaf_Route_Regex()example

<?php
   /**
    * Add a regex route to Yaf_Router route stack
    */
    Yaf_Dispatcher::getInstance()->getRouter()->addRoute("name",
        new Yaf_Route_Regex(
           "#^/product/([^/]+)/([^/])+#", //match request uri leading "/product"
           array(
               'controller' => "product",  //route to product controller,
           ),
           array(
              1 => "name",   // now you can call $request->getParam("name")
              2 => "id",     // to get the first captrue in the match pattern.
           )
        )
    );
?>

Example #2 Yaf_Route_Regex(as of 2.3.0)()example

<?php
   /**
    *  使用动态的controller
    */
    Yaf_Dispatcher::getInstance()->getRouter()->addRoute("name",
        new Yaf_Route_Regex(
           "#^/product/([^/]+)/([^/])+#", //match request uri leading "/product"
           array(
              'controller' => ":name",  //使用上面匹配的:name, 也就是$1作为controller
           ),
           array(
              1 => "name",   // now you can call $request->getParam("name")
              2 => "id",     // to get the first captrue in the match pattern.
           )
        )
    );
?>

Example #3 Yaf_Route_Regex()example

<?php
   /**
    * Add a regex route to Yaf_Router route stack by calling addconfig
    */
    $config = array(
        "name" => array(
           "type"  => "regex",          //Yaf_Route_Regex route
           "match" => "#(.*)#",         //match arbitrary request uri
           "route" => array(
               'controller' => "product",  //route to product controller,
               'action'     => "dummy",    //route to dummy action
           ),
           "map" => array(
              1 => "uri",   // now you can call $request->getParam("uri")
           ),
        ),
    );
    Yaf_Dispatcher::getInstance()->getRouter()->addConfig(
        new Yaf_Config_Simple($config));
?>

参见

  • Yaf_Router::addRoute() - 往Router中添加新的路由
  • Yaf_Router::addConfig() - 向Router中添加配置文件中定义的路由
  • Yaf_Route_Static
  • Yaf_Route_Supervar
  • Yaf_Route_Simple
  • Yaf_Route_Rewrite
  • Yaf_Route_Map
Yaf_Route_Regex::assemble
Yaf_Route_Regex::route
Yaf_Route_Regex


The route purpose

Yaf_Route_Regex::__construct
Yaf_Route_Rewrite
Yaf_Route_Regex
PHP Manual

Yaf_Route_Regex::route

(Yaf >=1.0.0)

Yaf_Route_Regex::route — The route purpose

说明

public bool Yaf_Route_Regex::route ( Yaf_Request_Abstract $request )

路由一个传进来的请求。

Warning

本函数还未编写文档，仅有参数列表。

参数

request

返回值

如果正则表达式是Yaf_Route_Regex::_construct()的第一个参数，并且匹配了请求uri，返回TRUE，否则返回FALSE。

Yaf_Route_Regex::__construct
Yaf_Route_Rewrite
Yaf_Route_Regex


The Yaf_Route_Rewrite class

(Yaf >=1.0.0)

简介

类摘要

Yaf_Route_Rewrite extends Yaf_Route_Interface implements Yaf_Route_Interface {
/* 属性 */
protected $_route ;
protected $_default ;
protected $_verify ;
/* 方法 */
public string assemble ( array $info [, array $query ] )
public__construct ( string $match , array $route [, array $verify ] )
public bool route ( Yaf_Request_Abstract $request )
/* 继承的方法 */
abstract public string Yaf_Route_Interface::assemble ( array $info [, array $query ] )
abstract public bool Yaf_Route_Interface::route ( Yaf_Request_Abstract $request )
}

属性

_route

_default

_verify

Table of Contents

  • Yaf_Route_Rewrite::assemble — 组合url
  • Yaf_Route_Rewrite::__construct — The __construct purpose
  • Yaf_Route_Rewrite::route — The route purpose
Yaf_Route_Regex::route
Yaf_Route_Rewrite::assemble
Yaf


组合url

Yaf_Route_Rewrite
Yaf_Route_Rewrite::__construct
Yaf_Route_Rewrite
PHP Manual

Yaf_Route_Rewrite::assemble

(Yaf >=2.3.0)

Yaf_Route_Rewrite::assemble — 组合url

说明

public string Yaf_Route_Rewrite::assemble ( array $info [, array $query ] )

根据指定参数和自定义参数将rewrite这个route组合成一个url

参数

info

需要传入一个数组，数组中每个key必须和初始化rewrite route时$match参数中的带冒号的参数名一致

query

用户自定义的query string，将根据此路由规则拼接在url中

范例

Example #1 Yaf_Route_Rewrite::assemble()example

router = new Yaf_Router();

$route  = new Yaf_Route_Rewrite(
                "/product/:name/:id/*",
                array(
                        'controller' => "product",
                ),
                array()
);

$router->addRoute("rewrite", $route);

var_dump($router->getRoute('rewrite')->assemble(
                        array(
                                ':name' => 'foo',
                                ':id' => 'bar',
                                ':tmpkey1' => 'tmpval1'
                        ),
                        array(
                                'tkey1' => 'tval1',
                                'tkey2' => 'tval2'
                             )
                        )
);

以上例程的输出类似于：

string(57) "/product/foo/bar/tmpkey1/tmpval1/?tkey1=tval1&tkey2=tval2"

返回值

Yaf_Route_Rewrite
Yaf_Route_Rewrite::__construct
Yaf_Route_Rewrite


The __construct purpose

Yaf_Route_Rewrite::assemble
Yaf_Route_Rewrite::route
Yaf_Route_Rewrite
PHP Manual

Yaf_Route_Rewrite::__construct

(Yaf >=1.0.0)

Yaf_Route_Rewrite::__construct — The __construct purpose

说明

publicYaf_Route_Rewrite::__construct ( string $match , array $route [, array $verify ] )

参数

match

一个类似正则表达式，会被用来匹配一个请求的uri，如果匹配失败，Yaf_Route_Rewrite 会返回FALSE。

route

当路由正则匹配成功请求uri时，Yaf_Route_Rewrite 将会用它来决定哪一个m/c/a被路由。

在这个数组中无论是m/c/a都是最优的，如果你没有提供一个明确的值，它将会以默认方式被路由。

verify

返回值

范例

Example #1 Yaf_Route_Rewrite()example

<?php
   /**
    * Add a rewrite route to Yaf_Router route stack
    */
    Yaf_Dispatcher::getInstance()->getRouter()->addRoute("name",
        new Yaf_Route_rewrite(
           "/product/:name/:id/*", //match request uri leading "/product"
           array(
               'controller' => "product",  //route to product controller,
           ),
        )
    );
?>

以上例程的输出类似于：

/* for http://yourdomain.com/product/foo/22/foo/bar
 * route will result in following values:
 */
array(
  "controller" => "product",
  "module"     => "index", //(default)
  "action"     => "index", //(default)
)

/**
 * and request parameters:
 */
array(
  "name" => "foo",
  "id"   => 22,
  "foo"  => bar
)

Example #2 Yaf_Route_Rewrite()example

<?php
   /**
    * Add a rewrite route to Yaf_Router route stack by calling addconfig
    */
    $config = array(
        "name" => array(
           "type"  => "rewrite",        //Yaf_Route_Rewrite route
           "match" => "/user-list/:id", //match only /user/list/?/
           "route" => array(
               'controller' => "user",  //route to user controller,
               'action'     => "list",  //route to list action
           ),
        ),
    );
    Yaf_Dispatcher::getInstance()->getRouter()->addConfig(
        new Yaf_Config_Simple($config));
?>

以上例程的输出类似于：

/* for http://yourdomain.com/user-list/22
 * route will result in following values:
 */
array(
  "controller" => "user",
  "action"     => "list",
  "module"     => "index", //(default)
)

/**
 * and request parameters:
 */
array(
  "id"   => 22,
)

Example #3 Yaf_Route_Rewrite(as of 2.3.0)()example

<?php
   /**
    * 使用动态结果作为action名
    */
    $config = array(
        "name" => array(
           "type"  => "rewrite",        //Yaf_Route_Rewrite route
           "match" => "/user-list/:a/:id", //match only /user-list/开头的
           "route" => array(
               'controller' => "user",  //route to user controller,
               'action'     => ":a",  //使用动态的action
           ),
        ),
    );
    Yaf_Dispatcher::getInstance()->getRouter()->addConfig(
        new Yaf_Config_Simple($config));
?>

以上例程的输出类似于：

/* for http://yourdomain.com/user-list/list/22
 * route will result in following values:
 */
array(
  "controller" => "user",
  "action"     => "list",
  "module"     => "index", //(default)
)

/**
 * and request parameters:
 */
array(
  "id"   => 22,
)

参见

  • Yaf_Router::addRoute() - 往Router中添加新的路由
  • Yaf_Router::addConfig() - 向Router中添加配置文件中定义的路由
  • Yaf_Route_Static
  • Yaf_Route_Supervar
  • Yaf_Route_Simple
  • Yaf_Route_Regex
  • Yaf_Route_Map
Yaf_Route_Rewrite::assemble
Yaf_Route_Rewrite::route
Yaf_Route_Rewrite


The route purpose

Yaf_Route_Rewrite::__construct
Yaf_Router
Yaf_Route_Rewrite
PHP Manual

Yaf_Route_Rewrite::route

(Yaf >=1.0.0)

Yaf_Route_Rewrite::route — The route purpose

说明

public bool Yaf_Route_Rewrite::route ( Yaf_Request_Abstract $request )

Warning

本函数还未编写文档，仅有参数列表。

参数

request

返回值

Yaf_Route_Rewrite::__construct
Yaf_Router
Yaf_Route_Rewrite


The Yaf_Router class

(Yaf >=1.0.0)

简介

Yaf_Router是标准的框架路由.路由是一个拿到URI端点（URL中的URI的一部分）然后分解参数得到哪一个module, controller, 和action需要接受请求。module, controller, 和action，还有一些其他的参数是打包在一个Yaf_Request_Abstract的对象中，然后通过Yaf_Dispatcher来处理的。路由只发生一次:最初接到请求并且在第一个controller分发之前。 Yaf_Router 是设计来允许使用纯PHP结构的类似功能模块的跳转。它非常松散的基于Ruby on Rails的路由，并且不需要你提前就知道webserver URL跳转的相关知识。它是设计来处理一个Apache 跳转模块的规则（一个） Yaf_Router是设计来允许mod_rewrite

Example #1 Apache的跳转规则

RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css|html)$ index.php
or (preferred):

Example #2 Apache的跳转规则

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
如果使用Lighttpd，下面的跳转规则是有效的：

Example #3 Lighttpd的跳转规则

url.rewrite-once = (
  ".*\?(.*)$" => "/index.php?$1",
  ".*\.(js|ico|gif|jpg|png|css|html)$" => "$0",
  "" => "/index.php"
)
如果使用Nginx，下面的跳转规则是有效的：

Example #4 Nginx的跳转规则

server {
  listen ****;
  server_name  yourdomain.com;
  root   document_root;
  index  index.php index.html;

  if (!-e $request_filename) {
    rewrite ^/(.*)  /index.php/$1 last;
  }
}

默认路由

Yaf_Router预设了一个默认路由，它将以controller/action的形式匹配URIs。此外，一个module的名字可以被指定为第一路径元素，允许URIs设置为module/controller/action的形式。最后，它也会匹配一些URI中额外附加的参数，默认形式是controller/action/var1/value1/var2/value2。

Note:

Module的名字必须要定义在配置中，就application.module="Index,Foo,Bar"而言，在这种情况下，仅仅index, foo 和 bar能被考虑作为为一个module的名称。如果没有在配置文件中定义，那么Yaf使用默认的module名字"Index"。

如何匹配这些路由的一些例子：

Example #5 Yaf_Route_Static(default route)example

// Assuming the following configure:
$conf = array(
   "application" => array(
      "modules" => "Index,Blog",
   ),
);

Controller only:
http://example/news
    controller == news
Action only(when defined yaf.action_prefer=1 in php.ini)
    action  == news

Invalid module maps to controller name:
http://example/foo
    controller == foo

Module + controller:
http://example/blog/archive
    module     == blog
    controller == archive

Module + controller + action:
http://example/blog/archive/list
    module     == blog
    controller == archive
    action     == list

Module + controller + action + params:
http://example/blog/archive/list/sort/alpha/date/desc
    module     == blog
    controller == archive
    action     == list
    sort       == alpha
    date       == desc

类摘要

Yaf_Router {
/* 属性 */
protected $_routes ;
protected $_current ;
/* 方法 */
public void addConfig ( Yaf_Config_Abstract $config )
public Yaf_Router addRoute ( string $name , Yaf_Route_Abstract $route )
public__construct ( void )
public string getCurrentRoute ( void )
public void getRoute ( string $name )
public void getRoutes ( void )
public bool route ( Yaf_Request_Abstract $request )
}

属性

_routes

_current

Table of Contents

  • Yaf_Router::addConfig — 向Router中添加配置文件中定义的路由
  • Yaf_Router::addRoute — 往Router中添加新的路由
  • Yaf_Router::__construct — Yaf_Router constructor
  • Yaf_Router::getCurrentRoute — 取得当前有效的路由名
  • Yaf_Router::getRoute — The getRoute purpose
  • Yaf_Router::getRoutes — The getRoutes purpose
  • Yaf_Router::route — The route purpose
Yaf_Route_Rewrite::route
Yaf_Router::addConfig
Yaf


向Router中添加配置文件中定义的路由

Yaf_Router
Yaf_Router::addRoute
Yaf_Router
PHP Manual

Yaf_Router::addConfig

(Yaf >=1.0.0)

Yaf_Router::addConfig — 向Router中添加配置文件中定义的路由

说明

public void Yaf_Router::addConfig ( Yaf_Config_Abstract $config )

将application.ini中定义的路由规则添加到Yaf_Router的路由栈中

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

范例

Example #1 application.ini()example

;the order is very important, the prior one will be called first

;a rewrite route match request /product/*/*
routes.route_name.type="rewrite"
routes.route_name.match="/product/:name/:value"
routes.route_name.route.controller=product
routes.route_name.route.action=info

;a regex route match request /list/*/*
routes.route_name1.type="regex"
routes.route_name1.match="#^list/([^/]*)/([^/]*)#"
routes.route_name1.route.controller=Index
routes.route_name1.route.action=action
routes.route_name1.map.1=name
routes.route_name1.map.2=value

;a simple route match /**?c=controller&a=action&m=module
routes.route_name2.type="simple"
routes.route_name2.controller=c
routes.route_name2.module=m
routes.route_name2.action=a

;a simple router match /**?r=PATH_INFO
routes.route_name3.type="supervar"
routes.route_name3.varname=r

;a map route match any request to controller
routes.route_name4.type="map"
routes.route_name4.controllerPrefer=TRUE
routes.route_namer.delimiter="#!"

Example #2 Yaf_Dispatcher::autoConfig()example

<?php
class Bootstrap extends Yaf_Bootstrap_Abstract{
    public function _initConfig() {
        $config = Yaf_Application::app()->getConfig();
        Yaf_Registry::set("config", $config);
    }

    public function _initRoute(Yaf_Dispatcher $dispatcher) {
        $router = $dispatcher->getRouter();
        /**
         * we can add some pre-defined routes in application.ini
         */
        $router->addConfig(Yaf_Registry::get("config")->routes);
    }
?>

参见

  • Yaf_Router::addRoute() - 往Router中添加新的路由
  • Yaf_Route_Static
  • Yaf_Route_Supervar
  • Yaf_Route_Simple
  • Yaf_Route_Regex
  • Yaf_Route_Rewrite
  • Yaf_Route_Map
Yaf_Router
Yaf_Router::addRoute
Yaf_Router


往Router中添加新的路由

Yaf_Router::addConfig
Yaf_Router::__construct
Yaf_Router
PHP Manual

Yaf_Router::addRoute

(Yaf >=1.0.0)

Yaf_Router::addRoute — 往Router中添加新的路由

说明

public Yaf_Router Yaf_Router::addRoute ( string $name , Yaf_Route_Abstract $route )

默认地，Yaf_Router使用Yaf_Route_Static作为它的默认的路由。你可以通过调用这个方法往Router的堆栈中添加一个新的路由

在路由栈中，新的路由规则会比老的规则先调用，如果新路由规则返回TRUE，那么路由进程将会结束。否则，老的规则将会被调用。

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

范例

Example #1 Yaf_Dispatcher::autoRender()example

<?php
class Bootstrap extends Yaf_Bootstrap_Abstract{
    public function _initConfig() {
        $config = Yaf_Application::app()->getConfig();
        Yaf_Registry::set("config", $config);
    }

    public function _initRoute(Yaf_Dispatcher $dispatcher) {
        $router = $dispatcher->getRouter();
        /**
         * we can add some pre-defined routes in application.ini
         */
        $router->addConfig(Yaf_Registry::get("config")->routes);
        /**
         * add a Rewrite route, then for a request uri:
         * http://***/product/list/22/foo
         * will be matched by this route, and result:
         *
         *  [module] =>
         *  [controller] => product
         *  [action] => info
         *  [method] => GET
         *  [params:protected] => Array
         *      (
         *          [id] => 22
         *          [name] => foo
         *      )
         *
         */
        $route  = new Yaf_Route_Rewrite(
            "/product/list/:id/:name",
            array(
                "controller" => "product",
                "action"     => "info",
            )
        );

        $router->addRoute('dummy', $route);
    }
?>

参见

  • Yaf_Router::addConfig() - 向Router中添加配置文件中定义的路由
  • Yaf_Route_Static
  • Yaf_Route_Supervar
  • Yaf_Route_Simple
  • Yaf_Route_Regex
  • Yaf_Route_Rewrite
  • Yaf_Route_Map
Yaf_Router::addConfig
Yaf_Router::__construct
Yaf_Router


Yaf_Router constructor

Yaf_Router::addRoute
Yaf_Router::getCurrentRoute
Yaf_Router
PHP Manual

Yaf_Router::__construct

(Yaf >=1.0.0)

Yaf_Router::__construct — Yaf_Router constructor

说明

publicYaf_Router::__construct ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Router::addRoute
Yaf_Router::getCurrentRoute
Yaf_Router


取得当前有效的路由名

Yaf_Router::__construct
Yaf_Router::getRoute
Yaf_Router
PHP Manual

Yaf_Router::getCurrentRoute

(Yaf >=1.0.0)

Yaf_Router::getCurrentRoute — 取得当前有效的路由名

说明

public string Yaf_Router::getCurrentRoute ( void )

获取当前路由进程中正在起作用的路由名

Note:

你需要在路由进程结束之后调用此方法，在这之前，这个方法会一直返回NULL

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

String，当前起效的路由的名字

范例

Example #1 注册一些路由到Bootstrap

<?php
class Bootstrap extends Yaf_Bootstrap_Abstract{
    public function _initConfig() {
        $config = Yaf_Application::app()->getConfig();
        Yaf_Registry::set("config", $config);
    }

    public function _initRoute(Yaf_Dispatcher $dispatcher) {
        $router = $dispatcher->getRouter();
        $rewrite_route  = new Yaf_Route_Rewrite(
            "/product/list/:page",
            array(
                "controller" => "product",
                "action"     => "list",
            )
        );

        $regex_route  = new Yaf_Route_Rewrite(
            "#^/product/info/(\d+)",
            array(
                "controller" => "product",
                "action"     => "info",
            )
        );

        $router->addRoute('rewrite', $rewrite_route)->addRoute('regex', $regex_route);
    }

    /**
     * register plugin
     */
    public function __initPlugins(Yaf_Dispatcher $dispatcher) {
        $dispatcher->registerPlugin(new DummyPlugin());
    }
?>

Example #2 plugin Dummy.php (under application.directory/plugins)

<?php
class DummyPlugin extends Yaf_Plugin_Abstract {

    public function routerShutdown(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response) {
         var_dump(Yaf_Dispatcher::getInstance()->getRouter()->getCurrentRoute());
    }
?>
?>

以上例程的输出类似于：

/* for http://yourdomain.com/product/list/1
 * DummyPlugin will output:
 */
string(7) "rewrite"

/* for http://yourdomain.com/product/info/34
 * DummyPlugin will output:
 */
string(5) "regex"

/* for other request URI
 * DummyPlugin will output:
 */
string(8) "_default"

参见

  • Yaf_Bootstrap_Abstract
  • Yaf_Plugin_Abstract
  • Yaf_Router::addRoute() - 往Router中添加新的路由
Yaf_Router::__construct
Yaf_Router::getRoute
Yaf_Router


The getRoute purpose

Yaf_Router::getCurrentRoute
Yaf_Router::getRoutes
Yaf_Router
PHP Manual

Yaf_Router::getRoute

(Yaf >=1.0.0)

Yaf_Router::getRoute — The getRoute purpose

说明

public void Yaf_Router::getRoute ( string $name )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Router::getCurrentRoute
Yaf_Router::getRoutes
Yaf_Router


The getRoutes purpose

Yaf_Router::getRoute
Yaf_Router::route
Yaf_Router
PHP Manual

Yaf_Router::getRoutes

(Yaf >=1.0.0)

Yaf_Router::getRoutes — The getRoutes purpose

说明

public void Yaf_Router::getRoutes ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Router::getRoute
Yaf_Router::route
Yaf_Router


The route purpose

Yaf_Router::getRoutes
Yaf_Route_Simple
Yaf_Router
PHP Manual

Yaf_Router::route

(Yaf >=1.0.0)

Yaf_Router::route — The route purpose

说明

public bool Yaf_Router::route ( Yaf_Request_Abstract $request )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Router::getRoutes
Yaf_Route_Simple
Yaf_Router


The Yaf_Route_Simple class

(Yaf >=1.0.0)

简介

Yaf_Route_Simple 会匹配请求中的query string，然后找到路由信息。

你需要做的只是告诉 Yaf_Route_Simple，在$_GET中哪个是Module，哪个是Controller，哪个是Action。

Yaf_Route_Simple::route() 总是会返回TRUE，所以把Yaf_Route_Simple放在路由堆栈前面是很重要的，否则其他所有的路由都可能不会被调用到。

类摘要

Yaf_Route_Simple implements Yaf_Route_Interface {
/* 属性 */
protected $controller ;
protected $module ;
protected $action ;
/* 方法 */
public string assemble ( array $info [, array $query ] )
public__construct ( string $module_name , string $controller_name , string $action_name )
public bool route ( Yaf_Request_Abstract $request )
}

属性

controller

module

action

Table of Contents

  • Yaf_Route_Simple::assemble — 组合url
  • Yaf_Route_Simple::__construct — Yaf_Route_Simple constructor
  • Yaf_Route_Simple::route — Route a request
Yaf_Router::route
Yaf_Route_Simple::assemble
Yaf


组合url

Yaf_Route_Simple
Yaf_Route_Simple::__construct
Yaf_Route_Simple
PHP Manual

Yaf_Route_Simple::assemble

(Yaf >=2.3.0)

Yaf_Route_Simple::assemble — 组合url

说明

public string Yaf_Route_Simple::assemble ( array $info [, array $query ] )

根据指定参数和自定义参数将simple这个route组合成一个url

参数

info

需要传入一个数组，数组中每个key可为:m、:c、:a，:m代表module，:c代表controller, :a代表action

query

用户自定义的query string，将根据此路由规则拼接在url中

范例

Example #1 Yaf_Route_Simple::assemble()example

<?php

$router = new Yaf_Router();

$route  = new Yaf_Route_Simple('m', 'c', 'a');

$router->addRoute("simple", $route);

var_dump($router->getRoute('simple')->assemble(
            array(
                ':a' => 'yafaction',
                'tkey' => 'tval',
                ':c' => 'yafcontroller',
                ':m' => 'yafmodule'
                ),
            array(
                'tkey1' => 'tval1',
                'tkey2' => 'tval2'
                )
            ));

以上例程的输出类似于：

string(64) "?m=yafmodule&c=yafcontroller&a=yafaction&tkey1=tval1&tkey2=tval2"

返回值

Yaf_Route_Simple
Yaf_Route_Simple::__construct
Yaf_Route_Simple


Yaf_Route_Simple constructor

Yaf_Route_Simple::assemble
Yaf_Route_Simple::route
Yaf_Route_Simple
PHP Manual

Yaf_Route_Simple::__construct

(Yaf >=1.0.0)

Yaf_Route_Simple::__construct — Yaf_Route_Simple constructor

说明

publicYaf_Route_Simple::__construct ( string $module_name , string $controller_name , string $action_name )

Yaf_Route_Simple将从query string中获得路由信息。这个构造函数的参数会被作为键到$_GET中去寻找路由信息。

Warning

本函数还未编写文档，仅有参数列表。

参数

module_name

module信息的键名。

controller_name

controller信息的键名。

action_name

action信息的键名。

返回值

总是返回TRUE

范例

Example #1 Yaf_Route_Simple::route()example

<?php
   $route = new Yaf_Route_Simple("m", "controller", "act");
   Yaf_Router::getInstance()->addRoute("simple", $route);
?>

Example #2 Yaf_Route_Simple::route()example

Request: http://yourdomain.com/path/?controller=a&act=b
=> module = default(index), controller = a, action = b

Request: http://yourdomain.com/path
=> module = default(index), controller = default(index), action = default(index)

参见

  • Yaf_Route_Supervar::route() - The route purpose
  • Yaf_Route_Static::route() - Route a request
  • Yaf_Route_Regex::route() - The route purpose
  • Yaf_Route_Rewrite::route() - The route purpose
  • Yaf_Route_Map::route() - The route purpose
Yaf_Route_Simple::assemble
Yaf_Route_Simple::route
Yaf_Route_Simple


Route a request

Yaf_Route_Simple::__construct
Yaf_Route_Static
Yaf_Route_Simple
PHP Manual

Yaf_Route_Simple::route

(Yaf >=1.0.0)

Yaf_Route_Simple::route — Route a request

说明

public bool Yaf_Route_Simple::route ( Yaf_Request_Abstract $request )

see Yaf_Route_Simple::__construct()

Warning

本函数还未编写文档，仅有参数列表。

参数

request

返回值

always be TRUE

参见

  • Yaf_Route_Supervar::route() - The route purpose
  • Yaf_Route_Static::route() - Route a request
  • Yaf_Route_Regex::route() - The route purpose
  • Yaf_Route_Rewrite::route() - The route purpose
  • Yaf_Route_Map::route() - The route purpose
Yaf_Route_Simple::__construct
Yaf_Route_Static
Yaf_Route_Simple


The Yaf_Route_Static class

(Yaf >=1.0.0)

简介

默认的，Yaf_Router 只有一个Yaf_Route_Static 作为它默认的路由

Yaf_Route_Static 旨在处理80%的要求。

请注意：实例化 Yaf_Route_Static 是没有必要的，也没必要将它加入Yaf_Router的路由堆栈，因为在Yaf_Router的路由堆栈中总是存在它的一个实例，并且总是在最后被调用。

类摘要

Yaf_Route_Static implements Yaf_Router {
/* 方法 */
public string assemble ( array $info [, array $query ] )
public void match ( string $uri )
public bool route ( Yaf_Request_Abstract $request )
}

Table of Contents

  • Yaf_Route_Static::assemble — 组合url
  • Yaf_Route_Static::match — The match purpose
  • Yaf_Route_Static::route — Route a request
Yaf_Route_Simple::route
Yaf_Route_Static::assemble
Yaf


组合url

Yaf_Route_Static
Yaf_Route_Static::match
Yaf_Route_Static
PHP Manual

Yaf_Route_Static::assemble

(Yaf >=2.3.0)

Yaf_Route_Static::assemble — 组合url

说明

public string Yaf_Route_Static::assemble ( array $info [, array $query ] )

根据指定参数和自定义参数将static这个route组合成一个url

参数

info

需要传入一个数组，数组中每个key可为:m、:c、:a，:m代表module，:c代表controller, :a代表action

query

用户自定义的query string，将根据此路由规则拼接在url中

范例

Example #1 Yaf_Route_Static::assemble()example

<?php

$router = new Yaf_Router();

$route  = new Yaf_Route_Static();

$router->addRoute("static", $route);

var_dump($router->getRoute('static')->assemble(
            array(
                ':a' => 'yafaction',
                'tkey' => 'tval',
                ':c' => 'yafcontroller',
                ':m' => 'yafmodule'
            ),
        )
);

var_dump($router->getRoute('static')->assemble(
            array(
                ':a' => 'yafaction',
                'tkey' => 'tval',
                ':c' => 'yafcontroller',
                ':m' => 'yafmodule'
            ),
            array(
                'tkey1' => 'tval1',
                'tkey2' => 'tval2'
            )
        )
);

以上例程的输出类似于：

string(%d) "/yafmodule/yafcontroller/yafaction"
string(%d) "/yafmodule/yafcontroller/yafaction?tkey1=tval1&tkey2=tval2"

返回值

Yaf_Route_Static
Yaf_Route_Static::match
Yaf_Route_Static


The match purpose

Yaf_Route_Static::assemble
Yaf_Route_Static::route
Yaf_Route_Static
PHP Manual

Yaf_Route_Static::match

(Yaf >=1.0.0)

Yaf_Route_Static::match — The match purpose

说明

public void Yaf_Route_Static::match ( string $uri )

Warning

本函数还未编写文档，仅有参数列表。

参数

uri

返回值

Yaf_Route_Static::assemble
Yaf_Route_Static::route
Yaf_Route_Static


Route a request

Yaf_Route_Static::match
Yaf_Route_Supervar
Yaf_Route_Static
PHP Manual

Yaf_Route_Static::route

(Yaf >=1.0.0)

Yaf_Route_Static::route — Route a request

说明

public bool Yaf_Route_Static::route ( Yaf_Request_Abstract $request )

Warning

本函数还未编写文档，仅有参数列表。

参数

request

返回值

总是返回TRUE

范例

Example #1 Yaf_Route_Static::route()example

// assuming there is only one module defined:Index
Request: http://yourdomain.com/a/b
=> module = index, controller=a, action=b

//assuming ap.action_prefer = On
Request: http://yourdomain.com/b
=> module = default(index), controller = default(index), action = b

//assuming ap.action_prefer = Off
Request: http://yourdomain.com/b
=> module = default(index), controller = b, action = default(index)

Request: http://yourdomain.com/a/b/foo/bar/test/a/id/4
=> module = default(index), controller = a, action = b, request parameters: foo = bar, test = a, id = 4

参见

  • Yaf_Route_Supervar::route() - The route purpose
  • Yaf_Route_Simple::route() - Route a request
  • Yaf_Route_Regex::route() - The route purpose
  • Yaf_Route_Rewrite::route() - The route purpose
  • Yaf_Route_Map::route() - The route purpose
Yaf_Route_Static::match
Yaf_Route_Supervar
Yaf_Route_Static


The Yaf_Route_Supervar class

(Yaf >=1.0.0)

简介

类摘要

Yaf_Route_Supervar implements Yaf_Route_Interface {
/* 属性 */
protected $_var_name ;
/* 方法 */
public string assemble ( array $info [, array $query ] )
public__construct ( string $supervar_name )
public bool route ( Yaf_Request_Abstract $request )
}

属性

_var_name

Table of Contents

  • Yaf_Route_Supervar::assemble — 组合url
  • Yaf_Route_Supervar::__construct — The __construct purpose
  • Yaf_Route_Supervar::route — The route purpose
Yaf_Route_Static::route
Yaf_Route_Supervar::assemble
Yaf


组合url

Yaf_Route_Supervar
Yaf_Route_Supervar::__construct
Yaf_Route_Supervar
PHP Manual

Yaf_Route_Supervar::assemble

(Yaf >=2.3.0)

Yaf_Route_Supervar::assemble — 组合url

说明

public string Yaf_Route_Supervar::assemble ( array $info [, array $query ] )

根据指定参数和自定义参数将supervar这个route组合成一个url

参数

info

需要传入一个数组，数组中每个key可为:m、:c、:a，:m代表module，:c代表controller, :a代表action

query

用户自定义的query string，将根据此路由规则拼接在url中

范例

Example #1 Yaf_Route_Supervar::assemble()example

<?php

$router = new Yaf_Router();

$route  = new Yaf_Route_Supervar('r');

$router->addRoute("supervar", $route);

var_dump($router->getRoute('supervar')->assemble(
        array(
              ':a' => 'yafaction',
              'tkey' => 'tval',
              ':c' => 'yafcontroller',
              ':m' => 'yafmodule'
        ),
        array(
              'tkey1' => 'tval1',
              'tkey2' => 'tval2'
        )
));

try {
var_dump($router->getRoute('supervar')->assemble(
        array(
              ':a' => 'yafaction',
              'tkey' => 'tval',
              ':m' => 'yafmodule'
        ),
        array(
              'tkey1' => 'tval1',
              'tkey2' => 'tval2',
              1 => array(),
        )
));
} catch (Exception $e) {
    var_dump($e->getMessage());
}

以上例程的输出类似于：

string(%d) "?r=/yafmodule/yafcontroller/yafaction&tkey1=tval1&tkey2=tval2"
string(%d) "You need to specify the controller by ':c'"

返回值

Yaf_Route_Supervar
Yaf_Route_Supervar::__construct
Yaf_Route_Supervar


The __construct purpose

Yaf_Route_Supervar::assemble
Yaf_Route_Supervar::route
Yaf_Route_Supervar
PHP Manual

Yaf_Route_Supervar::__construct

(Yaf >=1.0.0)

Yaf_Route_Supervar::__construct — The __construct purpose

说明

publicYaf_Route_Supervar::__construct ( string $supervar_name )

Yaf_Route_Supervar 类似于 Yaf_Route_Static，不同的是Yaf_Route_Supervar 在query string 中寻找路劲信息，参数 supervar_name 是建。

Warning

本函数还未编写文档，仅有参数列表。

参数

supervar_name

键名

返回值

范例

Example #1 Yaf_Route_Supervar()example

<?php
   /**
    * Add a supervar route to Yaf_Router route stack
    */
    Yaf_Dispatcher::getInstance()->getRouter()->addRoute("name",
        new Yaf_Route_Supervar("r"));
    );
?>

以上例程的输出类似于：

/** for request: http://yourdomain.com/xx/oo/?r=/ctr/act/var/value
  * will result in following:
  */
  array (
    "module"   => index(default),
    "controller" => ctr,
    "action"     => act,
    "params"     => array(
          "var" => value,
     )
  )

参见

  • Yaf_Router::addRoute() - 往Router中添加新的路由
  • Yaf_Router::addConfig() - 向Router中添加配置文件中定义的路由
  • Yaf_Route_Static
  • Yaf_Route_Regex
  • Yaf_Route_Simple
  • Yaf_Route_Rewrite
  • Yaf_Route_Map
Yaf_Route_Supervar::assemble
Yaf_Route_Supervar::route
Yaf_Route_Supervar


The route purpose

Yaf_Route_Supervar::__construct
Yaf_Session
Yaf_Route_Supervar
PHP Manual

Yaf_Route_Supervar::route

(Yaf >=1.0.0)

Yaf_Route_Supervar::route — The route purpose

说明

public bool Yaf_Route_Supervar::route ( Yaf_Request_Abstract $request )

Warning

本函数还未编写文档，仅有参数列表。

参数

request

返回值

如果在$_GET中有键（在Yaf_Route_Supervar::__construct()中定义），返回TRUE，否则返回FALSE。

Yaf_Route_Supervar::__construct
Yaf_Session
Yaf_Route_Supervar


The Yaf_Session class

(Yaf >=1.0.0)

简介

类摘要

Yaf_Session implements Iterator , Traversable , ArrayAccess , Countable {
/* 属性 */
protected static $_instance ;
protected $_session ;
protected $_started ;
/* 方法 */
private void __clone ( void )
__construct ( void )
public void count ( void )
public void current ( void )
public void del ( string $name )
public void __get ( string $name )
public static void getInstance ( void )
public void has ( string $name )
public void __isset ( string $name )
public void key ( void )
public void next ( void )
public void offsetExists ( string $name )
public void offsetGet ( string $name )
public void offsetSet ( string $name , string $value )
public void offsetUnset ( string $name )
public void rewind ( void )
public void __set ( string $name , string $value )
private void __sleep ( void )
public void start ( void )
public void __unset ( string $name )
public void valid ( void )
private void __wakeup ( void )
}

属性

_instance

_session

_started

Table of Contents

  • Yaf_Session::__clone — The __clone purpose
  • Yaf_Session::__construct — The __construct purpose
  • Yaf_Session::count — The count purpose
  • Yaf_Session::current — The current purpose
  • Yaf_Session::del — The del purpose
  • Yaf_Session::__get — The __get purpose
  • Yaf_Session::getInstance — The getInstance purpose
  • Yaf_Session::has — The has purpose
  • Yaf_Session::__isset — The __isset purpose
  • Yaf_Session::key — The key purpose
  • Yaf_Session::next — The next purpose
  • Yaf_Session::offsetExists — The offsetExists purpose
  • Yaf_Session::offsetGet — The offsetGet purpose
  • Yaf_Session::offsetSet — The offsetSet purpose
  • Yaf_Session::offsetUnset — The offsetUnset purpose
  • Yaf_Session::rewind — The rewind purpose
  • Yaf_Session::__set — The __set purpose
  • Yaf_Session::__sleep — The __sleep purpose
  • Yaf_Session::start — The start purpose
  • Yaf_Session::__unset — The __unset purpose
  • Yaf_Session::valid — The valid purpose
  • Yaf_Session::__wakeup — The __wakeup purpose
Yaf_Route_Supervar::route
Yaf_Session::__clone
Yaf


The __clone purpose

Yaf_Session
Yaf_Session::__construct
Yaf_Session
PHP Manual

Yaf_Session::__clone

(Yaf >=1.0.0)

Yaf_Session::__clone — The __clone purpose

说明

private void Yaf_Session::__clone ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Session
Yaf_Session::__construct
Yaf_Session


The __construct purpose

Yaf_Session::__clone
Yaf_Session::count
Yaf_Session
PHP Manual

Yaf_Session::__construct

(Yaf >=1.0.0)

Yaf_Session::__construct — The __construct purpose

说明

Yaf_Session::__construct ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Session::__clone
Yaf_Session::count
Yaf_Session


The count purpose

Yaf_Session::__construct
Yaf_Session::current
Yaf_Session
PHP Manual

Yaf_Session::count

(Yaf >=1.0.0)

Yaf_Session::count — The count purpose

说明

public void Yaf_Session::count ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Session::__construct
Yaf_Session::current
Yaf_Session


The current purpose

Yaf_Session::count
Yaf_Session::del
Yaf_Session
PHP Manual

Yaf_Session::current

(Yaf >=1.0.0)

Yaf_Session::current — The current purpose

说明

public void Yaf_Session::current ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Session::count
Yaf_Session::del
Yaf_Session


The del purpose

Yaf_Session::current
Yaf_Session::__get
Yaf_Session
PHP Manual

Yaf_Session::del

(Yaf >=1.0.0)

Yaf_Session::del — The del purpose

说明

public void Yaf_Session::del ( string $name )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

返回值

Yaf_Session::current
Yaf_Session::__get
Yaf_Session


The __get purpose

Yaf_Session::del
Yaf_Session::getInstance
Yaf_Session
PHP Manual

Yaf_Session::__get

(Yaf >=1.0.0)

Yaf_Session::__get — The __get purpose

说明

public void Yaf_Session::__get ( string $name )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

返回值

Yaf_Session::del
Yaf_Session::getInstance
Yaf_Session


The getInstance purpose

Yaf_Session::__get
Yaf_Session::has
Yaf_Session
PHP Manual

Yaf_Session::getInstance

(Yaf >=1.0.0)

Yaf_Session::getInstance — The getInstance purpose

说明

public static void Yaf_Session::getInstance ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Session::__get
Yaf_Session::has
Yaf_Session


The has purpose

Yaf_Session::getInstance
Yaf_Session::__isset
Yaf_Session
PHP Manual

Yaf_Session::has

(Yaf >=1.0.0)

Yaf_Session::has — The has purpose

说明

public void Yaf_Session::has ( string $name )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

返回值

Yaf_Session::getInstance
Yaf_Session::__isset
Yaf_Session


The __isset purpose

Yaf_Session::has
Yaf_Session::key
Yaf_Session
PHP Manual

Yaf_Session::__isset

(Yaf >=1.0.0)

Yaf_Session::__isset — The __isset purpose

说明

public void Yaf_Session::__isset ( string $name )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

返回值

Yaf_Session::has
Yaf_Session::key
Yaf_Session


The key purpose

Yaf_Session::__isset
Yaf_Session::next
Yaf_Session
PHP Manual

Yaf_Session::key

(Yaf >=1.0.0)

Yaf_Session::key — The key purpose

说明

public void Yaf_Session::key ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Session::__isset
Yaf_Session::next
Yaf_Session


The next purpose

Yaf_Session::key
Yaf_Session::offsetExists
Yaf_Session
PHP Manual

Yaf_Session::next

(Yaf >=1.0.0)

Yaf_Session::next — The next purpose

说明

public void Yaf_Session::next ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Session::key
Yaf_Session::offsetExists
Yaf_Session


The offsetExists purpose

Yaf_Session::next
Yaf_Session::offsetGet
Yaf_Session
PHP Manual

Yaf_Session::offsetExists

(Yaf >=1.0.0)

Yaf_Session::offsetExists — The offsetExists purpose

说明

public void Yaf_Session::offsetExists ( string $name )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

返回值

Yaf_Session::next
Yaf_Session::offsetGet
Yaf_Session


The offsetGet purpose

Yaf_Session::offsetExists
Yaf_Session::offsetSet
Yaf_Session
PHP Manual

Yaf_Session::offsetGet

(Yaf >=1.0.0)

Yaf_Session::offsetGet — The offsetGet purpose

说明

public void Yaf_Session::offsetGet ( string $name )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

返回值

Yaf_Session::offsetExists
Yaf_Session::offsetSet
Yaf_Session


The offsetSet purpose

Yaf_Session::offsetGet
Yaf_Session::offsetUnset
Yaf_Session
PHP Manual

Yaf_Session::offsetSet

(Yaf >=1.0.0)

Yaf_Session::offsetSet — The offsetSet purpose

说明

public void Yaf_Session::offsetSet ( string $name , string $value )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

value

返回值

Yaf_Session::offsetGet
Yaf_Session::offsetUnset
Yaf_Session


The offsetUnset purpose

Yaf_Session::offsetSet
Yaf_Session::rewind
Yaf_Session
PHP Manual

Yaf_Session::offsetUnset

(Yaf >=1.0.0)

Yaf_Session::offsetUnset — The offsetUnset purpose

说明

public void Yaf_Session::offsetUnset ( string $name )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

返回值

Yaf_Session::offsetSet
Yaf_Session::rewind
Yaf_Session


The rewind purpose

Yaf_Session::offsetUnset
Yaf_Session::__set
Yaf_Session
PHP Manual

Yaf_Session::rewind

(Yaf >=1.0.0)

Yaf_Session::rewind — The rewind purpose

说明

public void Yaf_Session::rewind ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Session::offsetUnset
Yaf_Session::__set
Yaf_Session


The __set purpose

Yaf_Session::rewind
Yaf_Session::__sleep
Yaf_Session
PHP Manual

Yaf_Session::__set

(Yaf >=1.0.0)

Yaf_Session::__set — The __set purpose

说明

public void Yaf_Session::__set ( string $name , string $value )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

value

返回值

Yaf_Session::rewind
Yaf_Session::__sleep
Yaf_Session


The __sleep purpose

Yaf_Session::__set
Yaf_Session::start
Yaf_Session
PHP Manual

Yaf_Session::__sleep

(Yaf >=1.0.0)

Yaf_Session::__sleep — The __sleep purpose

说明

private void Yaf_Session::__sleep ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Session::__set
Yaf_Session::start
Yaf_Session


The start purpose

Yaf_Session::__sleep
Yaf_Session::__unset
Yaf_Session
PHP Manual

Yaf_Session::start

(Yaf >=1.0.0)

Yaf_Session::start — The start purpose

说明

public void Yaf_Session::start ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Session::__sleep
Yaf_Session::__unset
Yaf_Session


The __unset purpose

Yaf_Session::start
Yaf_Session::valid
Yaf_Session
PHP Manual

Yaf_Session::__unset

(Yaf >=1.0.0)

Yaf_Session::__unset — The __unset purpose

说明

public void Yaf_Session::__unset ( string $name )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

返回值

Yaf_Session::start
Yaf_Session::valid
Yaf_Session


The valid purpose

Yaf_Session::__unset
Yaf_Session::__wakeup
Yaf_Session
PHP Manual

Yaf_Session::valid

(Yaf >=1.0.0)

Yaf_Session::valid — The valid purpose

说明

public void Yaf_Session::valid ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Session::__unset
Yaf_Session::__wakeup
Yaf_Session


The __wakeup purpose

Yaf_Session::valid
Yaf_Exception
Yaf_Session
PHP Manual

Yaf_Session::__wakeup

(Yaf >=1.0.0)

Yaf_Session::__wakeup — The __wakeup purpose

说明

private void Yaf_Session::__wakeup ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Session::valid
Yaf_Exception
Yaf_Session


The Yaf_Exception class

(Yaf >=1.0.0)

简介

类摘要

Yaf_Exception extends Exception {
/* 属性 */
protected $message ;
protected $code ;
protected $previous ;
/* 方法 */
public __construct ( void )
public void getPrevious ( void )
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}

属性

message

code

file

line

previous

Table of Contents

  • Yaf_Exception::__construct — The __construct purpose
  • Yaf_Exception::getPrevious — The getPrevious purpose
Yaf_Session::__wakeup
Yaf_Exception::__construct
Yaf


The __construct purpose

Yaf_Exception
Yaf_Exception::getPrevious
Yaf_Exception
PHP Manual

Yaf_Exception::__construct

(Yaf >=1.0.0)

Yaf_Exception::__construct — The __construct purpose

说明

public Yaf_Exception::__construct ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Exception
Yaf_Exception::getPrevious
Yaf_Exception


The getPrevious purpose

Yaf_Exception::__construct
Yaf_Exception_TypeError
Yaf_Exception
PHP Manual

Yaf_Exception::getPrevious

(Yaf >=1.0.0)

Yaf_Exception::getPrevious — The getPrevious purpose

说明

public void Yaf_Exception::getPrevious ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Yaf_Exception::__construct
Yaf_Exception_TypeError
Yaf_Exception


The Yaf_Exception_TypeError class

(Yaf >=1.0.0)

简介

类摘要

Yaf_Exception_TypeError extends Yaf_Exception {
/* 属性 */
/* 方法 */
/* 继承的方法 */
public Yaf_Exception::__construct ( void )
public void Yaf_Exception::getPrevious ( void )
}
Yaf_Exception::getPrevious
Yaf_Exception_StartupError
Yaf


The Yaf_Exception_StartupError class

(Yaf >=1.0.0)

简介

类摘要

Yaf_Exception_StartupError extends Yaf_Exception {
/* 属性 */
/* 方法 */
/* 继承的方法 */
public Yaf_Exception::__construct ( void )
public void Yaf_Exception::getPrevious ( void )
}
Yaf_Exception_TypeError
Yaf_Exception_DispatchFailed
Yaf


The Yaf_Exception_DispatchFailed class

(Yaf >=1.0.0)

简介

类摘要

Yaf_Exception_DispatchFailed extends Yaf_Exception {
/* 属性 */
/* 方法 */
/* 继承的方法 */
public Yaf_Exception::__construct ( void )
public void Yaf_Exception::getPrevious ( void )
}
Yaf_Exception_StartupError
Yaf_Exception_RouterFailed
Yaf


The Yaf_Exception_RouterFailed class

(Yaf >=1.0.0)

简介

类摘要

Yaf_Exception_RouterFailed extends Yaf_Exception {
/* 属性 */
/* 方法 */
/* 继承的方法 */
public Yaf_Exception::__construct ( void )
public void Yaf_Exception::getPrevious ( void )
}
Yaf_Exception_DispatchFailed
Yaf_Exception_LoadFailed
Yaf


The Yaf_Exception_LoadFailed class

(Yaf >=1.0.0)

简介

类摘要

Yaf_Exception_LoadFailed extends Yaf_Exception {
/* 属性 */
/* 方法 */
/* 继承的方法 */
public Yaf_Exception::__construct ( void )
public void Yaf_Exception::getPrevious ( void )
}
Yaf_Exception_RouterFailed
Yaf_Exception_LoadFailed_Module
Yaf


The Yaf_Exception_LoadFailed_Module class

(Yaf >=1.0.0)

简介

类摘要

Yaf_Exception_LoadFailed_Module extends Yaf_Exception_LoadFailed {
/* 属性 */
/* 方法 */
/* 继承的方法 */
public Yaf_Exception::__construct ( void )
public void Yaf_Exception::getPrevious ( void )
}
Yaf_Exception_LoadFailed
Yaf_Exception_LoadFailed_Controller
Yaf


The Yaf_Exception_LoadFailed_Controller class

(Yaf >=1.0.0)

简介

类摘要

Yaf_Exception_LoadFailed_Controller extends Yaf_Exception_LoadFailed {
/* 属性 */
/* 方法 */
/* 继承的方法 */
public Yaf_Exception::__construct ( void )
public void Yaf_Exception::getPrevious ( void )
}
Yaf_Exception_LoadFailed_Module
Yaf_Exception_LoadFailed_Action
Yaf


The Yaf_Exception_LoadFailed_Action class

(Yaf >=1.0.0)

简介

类摘要

Yaf_Exception_LoadFailed_Action extends Yaf_Exception_LoadFailed {
/* 属性 */
/* 方法 */
/* 继承的方法 */
public Yaf_Exception::__construct ( void )
public void Yaf_Exception::getPrevious ( void )
}
Yaf_Exception_LoadFailed_Controller
Yaf_Exception_LoadFailed_View
Yaf


The Yaf_Exception_LoadFailed_View class

(Yaf >=1.0.0)

简介

类摘要

Yaf_Exception_LoadFailed_View extends Yaf_Exception_LoadFailed {
/* 属性 */
/* 方法 */
/* 继承的方法 */
public Yaf_Exception::__construct ( void )
public void Yaf_Exception::getPrevious ( void )
}
Yaf_Exception_LoadFailed_Action
Taint
Yaf


Taint

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • More Details
    • Functions and Statements which will spread the tainted mark of a tainted string
    • Functions and statements which will check tainted string
    • Functions which untaint the tainted string
  • Taint 函数
    • is_tainted — Checks whether a string is tainted
    • taint — Taint a string
    • untaint — Untaint strings
Yaf_Exception_LoadFailed_View
简介
其它基本扩展


简介

Taint is an extension, which is used for detecting XSS codes(tainted string). And also can be used to spot sql injection vulnerabilities, and shell inject, etc.

When taint is enabled, if you pass a tainted string (comes from $_GET, $_POST or $_COOKIE) to some functions, taint will warn you about that.

Example #1 Taint()example

<?php
$a = trim($_GET['a']);

$file_name = '/tmp' .  $a;
$output    = "Welcome, {$a} !!!";
$var       = "output";
$sql       = "Select *  from " . $a;
$sql      .= "ooxx";

echo $output;

print $$var;

include($file_name);

mysql_query($sql);
?>

以上例程的输出类似于：

Warning: main() [function.echo]: Attempt to echo a string that might be tainted

Warning: main() [function.echo]: Attempt to print a string that might be tainted

Warning: include() [function.include]: File path contains data that might be tainted

Warning: mysql_query() [function.mysql-query]: SQL statement contains data that might be tainted
Taint
安装／配置
Taint


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Taint


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/taint.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Taint 配置选项
名字 | 默认 | 可修改范围 | 更新日志
taint.enable | 0 | its PHP_INI_SYS value |
taint.error_level | E_WARNING | its PHP_INI_ALL value |

这是配置指令的简短说明。

taint.enable integer

Whether enable the taint.

taint.error_level integer

the error type which taint will report as when taint find a tainted string.

安装
资源类型
安装／配置


资源类型

此扩展没有定义资源类型。

运行时配置
More Details
安装／配置


More Details

Table of Contents

  • Functions and Statements which will spread the tainted mark of a tainted string
  • Functions and statements which will check tainted string
  • Functions which untaint the tainted string
资源类型
Functions and Statements which will spread the tainted mark of a tainted string
Taint


Functions and Statements which will spread the tainted mark of a tainted string

Function/Statement | Since
= (assign) | 0.1.0
. (concat) | 0.1.0
"{$var}" (variable substitution) | 0.1.0
.= (assign concat) | 0.1.0
strval | 0.3.0
explode | 0.3.0
implode | 0.3.0
sprintf | 0.3.0
vsprintf | 0.3.0
trim | 0.4.0
rtrim | 0.4.0
ltrim | 0.4.0

More Details
Functions and statements which will check tainted string
More Details


Functions and statements which will check tainted string

Function/Statement | Since
Basic statments
eval | 0.1.0
include/include_once | 0.1.0
require/require_once | 0.1.0
Outputing Functions
echo | 0.1.0
print | 0.1.0
printf | 0.1.0
file_put_contents | 0.1.0
File System Functions
fopen | 0.2.0
opendir | 0.2.0
basename | 0.2.0
dirname | 0.2.0
file | 0.2.0
pathinfo | 0.2.0
Database relevant Functions
mysql_query | 0.2.0
mysqli_query/MySQLi::query | 0.2.0
sqlite_query/SqliteDataBase::query | 0.3.0
sqlite_single_query/SqliteDataBase::singleQuery | 0.3.0
oci_parse | 0.3.0
PDO::query | 0.3.0
PDO::prepare | 0.3.0
Command Line relevant Functions
system | 0.1.0
exec | 0.1.0
proc_open | 0.1.0
passthru | 0.1.0
shell_exec | 0.3.0

Functions and Statements which will spread the tainted mark of a tainted string
Functions which untaint the tainted string
More Details


Functions which untaint the tainted string

Function | Since
addslashes | 0.1.0
addcslashes | 0.1.0
htmlspecialchars | 0.1.0
htmlentities | 0.1.0
escapeshellcmd | 0.1.0
mysql_escape_string | 0.1.0
mysql_real_escape_string | 0.1.0
mysqli_escape_string/MySQLi::escape_string | 0.1.0
mysqli_real_escape_string/MySQLi::real_escape_string | 0.1.0
sqlite_escape_string/SqliteDataBase::escapeString | 0.3.0
PDO::quote | 0.3.0

Functions and statements which will check tainted string
Taint 函数
More Details


Taint 函数

Table of Contents

  • is_tainted — Checks whether a string is tainted
  • taint — Taint a string
  • untaint — Untaint strings
Functions which untaint the tainted string
is_tainted
Taint


Checks whether a string is tainted

Taint 函数
taint
Taint 函数
PHP Manual

is_tainted

(PECL taint >=0.1.0)

is_tainted — Checks whether a string is tainted

说明

bool is_tainted ( string $string )

Checks whether a string is tainted

参数

string

返回值

Return TRUE if the string is tainted, FALSE otherwise.

Taint 函数
taint
Taint 函数


Taint a string

is_tainted
untaint
Taint 函数
PHP Manual

taint

(PECL taint >=0.1.0)

taint — Taint a string

说明

bool taint ( string &$string [, string $... ] )

Make a string tainted. This is used for testing purpose only.

参数

string

...

返回值

Return TRUE if the transformation is done. Always return TRUE if the taint extension is not enabled.

is_tainted
untaint
Taint 函数


Untaint strings

taint
其它服务
Taint 函数
PHP Manual

untaint

(PECL taint >=0.1.0)

untaint — Untaint strings

说明

bool untaint ( string &$string [, string $... ] )

Untaint strings

参数

string

...

返回值

taint
其它服务
Taint 函数


其它服务

  • chdb — Constant hash database
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • chdb — The chdb class
    • chdb 函数
  • cURL — Client URL 库
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • cURL 函数
    • CURLFile — CURLFile 类
  • Event
    • 简介
    • 安装／配置
    • 范例
    • Event flags
    • About event persistence
    • Event callbacks
    • Constructing signal events
    • Event — The Event class
    • EventBase — The EventBase class
    • EventBuffer — The EventBuffer class
    • EventBufferEvent — The EventBufferEvent class
    • About buffer event callbacks
    • EventConfig — The EventConfig class
    • EventDnsBase — The EventDnsBase class
    • EventHttp — The EventHttp class
    • EventHttpConnection — The EventHttpConnection class
    • EventHttpRequest — The EventHttpRequest class
    • EventListener — The EventListener class
    • EventSslContext — The EventSslContext class
    • EventUtil — The EventUtil class
  • FAM — File Alteration Monitor
    • 简介
    • 安装／配置
    • 预定义常量
    • FAM 函数
  • FTP
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • FTP 函数
  • Gearman
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • GearmanClient — The GearmanClient class
    • GearmanJob — The GearmanJob class
    • GearmanTask — The GearmanTask class
    • GearmanWorker — The GearmanWorker class
    • GearmanException — The GearmanException class
  • Gopher — Net Gopher
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Gopher 函数
  • Gupnp
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Gupnp 函数
  • Hyperwave API
    • 简介
    • 安装／配置
    • 预定义常量
    • Integration with Apache
    • Hyperwave API 函数
  • LDAP — Lightweight Directory Access Protocol
    • 简介
    • 安装／配置
    • 预定义常量
    • Using the PHP LDAP calls
    • 范例
    • LDAP 函数
  • Memcache
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Memcache — Memcache类
    • Memcache 函数
  • Memcached
    • 简介
    • 安装／配置
    • 预定义常量
    • 超时时间
    • 回调
    • Sessions支持
    • Memcached — Memcached类
  • mqseries
    • 简介
    • 安装／配置
    • 预定义常量
    • mqseries 函数
  • 网络
    • 简介
    • 安装／配置
    • 预定义常量
    • 网络 函数
  • RRD — RRDtool
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • RRD 函数
    • RRDCreator — The RRDCreator class
    • RRDGraph — The RRDGraph class
    • RRDUpdater — The RRDUpdater class
  • SAM — Simple Asynchronous Messaging
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • SAM 函数
  • SNMP
    • 简介
    • 安装／配置
    • 预定义常量
    • SNMP 函数
    • SNMP — The SNMP class
    • SNMPException — The SNMPException class
  • Sockets
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Socket Errors
    • Socket 函数
  • SSH2 — Secure Shell2
    • 简介
    • 安装／配置
    • 预定义常量
    • SSH2 函数
  • Stomp — Stomp Client
    • 简介
    • 安装／配置
    • 范例
    • Stomp 函数
    • Stomp — The Stomp class
    • StompFrame — The StompFrame class
    • StompException — The StompException class
  • SVM — 支持向量机
    • 简介
    • 安装／配置
    • 范例
    • SVM — The SVM class
    • SVMModel — The SVMModel class
  • SVN — Subversion
    • 简介
    • 安装／配置
    • 预定义常量
    • SVN 函数
  • TCP — TCP Wrappers
    • 简介
    • 安装／配置
    • 预定义常量
    • TCP 函数
  • Varnish
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • VarnishAdmin — The VarnishAdmin class
    • VarnishStat — The VarnishStat class
    • VarnishLog — The VarnishLog class
  • YAZ
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • YAZ 函数
  • YP/NIS
    • 简介
    • 安装／配置
    • 预定义常量
    • YP/NIS 函数
  • 0MQ消息系统 — ZMQ
    • 简介
    • 安装／配置
    • ZMQ — The ZMQ class
    • ZMQContext — The ZMQContext class
    • ZMQSocket — The ZMQSocket class
    • ZMQPoll — The ZMQPoll class
    • ZMQDevice — The ZMQDevice class
  • ZooKeeper
    • 简介
    • 安装／配置
    • 预定义常量
    • ZooKeeper — The ZooKeeper class
untaint
chdb
函数参考


Constant hash database

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • chdb — The chdb class
    • chdb::__construct — Creates a chdb instance
    • chdb::get — Gets the value associated with a key
  • chdb 函数
    • chdb_create — Creates a chdb file
其它服务
简介
其它服务


简介

CHDB (constant hash database) is a fast key-value database for constant data, realized by using a memory-mapped file and thus providing the following functionalities:

  • Extremely fast initial load, regardless of the size of the database.

  • Only the pages of the file which are actually used are loaded from the disk.

  • Once a page is loaded it is shared across multiple processes.

  • Loaded pages are cached across multiple requests and even process recycling.

A typical use of CHDB is as a faster alternative to defining many PHP constants.

CHDB is internally implemented as a hash-table using a » perfect hashing function, thus guaranteeing worst case O(1) lookup time.

chdb
安装／配置
chdb


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
chdb


需求

This module uses » cmph (version 0.9) for providing the » perfect hashing function.

cmph 0.9 is required to install this module.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/chdb

» cmph (version 0.9) is required for installing this extension. If cmph is installed in a non-standard directory, use the --with-libcmph-dir=DIR switch, where DIR is the cmph install prefix.

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
范例
chdb


范例

Example #1 Creating a chdb file

<?php

$data = array(
    'key1' => 'value1',
    'key2' => 'value2',
    // ...
);
chdb_create('data.chdb', $data);

?>

The above example will generate a chdb file named data.chdb and containing the key-value pairs defined in $data.

Example #2 Loading and looking up a chdb file

<?php

$chdb = new chdb('data.chdb');
$value1 = $chdb->get('key1');
$value2 = $chdb->get('key2');

echo $value1, PHP_EOL;
echo $value2, PHP_EOL;

?>

以上例程的输出类似于：

value1
value2
预定义常量
chdb
chdb


The chdb class

(PECL chdb >= 0.1.0)

简介

Represents a loaded chdb file.

类摘要

chdb {
/* Methods */
public __construct ( string $pathname )
public string get ( string $key )
}

Table of Contents

  • chdb::__construct — Creates a chdb instance
  • chdb::get — Gets the value associated with a key
范例
chdb::__construct
chdb


Creates a chdb instance

chdb
chdb::get
chdb
PHP Manual

chdb::__construct

(PECL chdb >= 0.1.0)

chdb::__construct — Creates a chdb instance

说明

public chdb::__construct ( string $pathname )

Loads a chdb file, by mapping it into memory.

Note:

While some validity checks are performed on the specified file, they are mostly there to avoid the possibility of common mistakes (for example, loading a file which is not a chdb database, or that is somehow incompatible with the current system). A maliciously crafted chdb file can thus be dangerous if loaded, so chdb files should be trusted and treated with the same security protections used for PHP shared libraries.

参数

pathname

The name of the file to load.

错误／异常

Throws an exception in case the chdb file hasn't been successfully loaded.

Note:

A valid chdb file might fail to load in case it was created on an architecture with a different endianness, with a different version of chdb, or if the file is too big to be mapped into memory (mostly in case of huge files and 32-bit architectures). In these cases the load will fail by throwing an exception, but otherwise not performing any illegal operation.

chdb
chdb::get
chdb


Gets the value associated with a key

chdb::__construct
chdb 函数
chdb
PHP Manual

chdb::get

(PECL chdb >= 0.1.0)

chdb::get — Gets the value associated with a key

说明

public string chdb::get ( string $key )

Gets the value associated with a key from a chdb database.

参数

key

The key for which to get the value.

返回值

Returns a string containing the value associated with the given key, or NULL if not found.

范例

Example #1 chdb::get() example

<?php

$data = array(
    'key1' => 'value1',
    'key2' => 'value2',
    // ...
);
chdb_create('data.chdb', $data);

$chdb = new chdb('data.chdb');
$value1 = $chdb->get('key1');
$value2 = $chdb->get('key2');

echo $value1, PHP_EOL;
echo $value2, PHP_EOL;

?>

以上例程的输出类似于：

value1
value2
chdb::__construct
chdb 函数
chdb


chdb 函数

Table of Contents

  • chdb_create — Creates a chdb file
chdb::get
chdb_create
chdb


Creates a chdb file

chdb 函数
cURL
chdb 函数
PHP Manual

chdb_create

(PECL chdb >= 0.1.0)

chdb_create — Creates a chdb file

说明

bool chdb_create ( string $pathname , array $data )

chdb_create() creates a chdb file containing the specified key-value pairs.

Note:

chdb files are not portable across little-endian and big-endian environments. Except for that, they are portable across different architectures. Also compatibility across different versions of chdb is not guaranteed.

参数

pathname

The name of the file to create.

If a file with the same name already exists, it is overwritten.

data

An array containing the key-value pairs to store in the chdb file.

Keys and values are converted to strings before being written to the file, as chdb only support the string type. Note that binary strings are supported as well, both as keys and values.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Throws an exception in case the chdb file hasn't been successfully created.

范例

Example #1 chdb_create() example

<?php

$data = array(
    'key1' => 'value1',
    'key2' => 'value2',
    // ...
);
chdb_create('data.chdb', $data);

?>

The above example will generate a chdb file named data.chdb and containing the key-value pairs defined in $data.

chdb 函数
cURL
chdb 函数


Client URL 库

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • curl 基础例子
  • cURL 函数
    • curl_close — 关闭一个cURL会话
    • curl_copy_handle — 复制一个cURL句柄和它的所有选项
    • curl_errno — 返回最后一次的错误号
    • curl_error — 返回一个保护当前会话最近一次错误的字符串
    • curl_escape — 使用 URL 编码给定的字符串
    • curl_exec — 执行一个cURL会话
    • curl_file_create — 创建一个 CURLFile 对象
    • curl_getinfo — 获取一个cURL连接资源句柄的信息
    • curl_init — 初始化一个cURL会话
    • curl_multi_add_handle — 向curl批处理会话中添加单独的curl句柄
    • curl_multi_close — 关闭一组cURL句柄
    • curl_multi_exec — 运行当前 cURL 句柄的子连接
    • curl_multi_getcontent — 如果设置了CURLOPT_RETURNTRANSFER，则返回获取的输出的文本流
    • curl_multi_info_read — 获取当前解析的cURL的相关传输信息
    • curl_multi_init — 返回一个新cURL批处理句柄
    • curl_multi_remove_handle — 移除curl批处理句柄资源中的某个句柄资源
    • curl_multi_select — 等待所有cURL批处理中的活动连接
    • curl_multi_setopt — 为 cURL 并行处理设置一个选项
    • curl_multi_strerror — 返回字符串描述的错误代码
    • curl_pause — 暂停和取消暂停一个连接。
    • curl_reset — 重置一个 libcurl 会话句柄的所有的选项
    • curl_setopt_array — 为cURL传输会话批量设置选项
    • curl_setopt — 设置一个cURL传输选项
    • curl_share_close — 关闭 cURL 共享句柄
    • curl_share_init — 初始化一个 cURL 共享句柄。
    • curl_share_setopt — 为 cURL 共享句柄设置选项。
    • curl_strerror — 返回错误代码的字符串描述
    • curl_unescape — 解码给定的 URL 编码的字符串
    • curl_version — 获取cURL版本信息
  • CURLFile — CURLFile 类
    • CURLFile::__construct — 创建 CURLFile 对象
    • CURLFile::getFilename — 获取被上传文件的 文件名
    • CURLFile::getMimeType — 获取被上传文件的 MIME 类型
    • CURLFile::getPostFilename — 获取 POST 请求时使用的 文件名
    • CURLFile::setMimeType — 设置被上传文件的 MIME 类型
    • CURLFile::setPostFilename — 设置 POST 请求时使用的 文件名
    • CURLFile::__wakeup — 反序列化句柄
chdb_create
简介
其它服务


简介

PHP 支持 Daniel Stenberg 创建的 libcurl 库，能够连接通讯各种服务器、使用各种协议。libcurl 目前支持的协议有 http、https、ftp、gopher、telnet、dict、file、ldap。 libcurl 同时支持 HTTPS 证书、HTTP POST、HTTP PUT、 FTP 上传(也能通过 PHP 的 FTP 扩展完成)、HTTP 基于表单的上传、代理、cookies、用户名+密码的认证。

cURL
安装／配置
cURL


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
cURL


需求

需要安装» libcurl包才能使用 PHP 的 cURL 函数。PHP 需要使用 7.10.5 或更高版本的 libcurl。

安装／配置
安装
安装／配置


安装

要 PHP 支持 cURL，必须在编译 PHP 时加上 --with-curl[=DIR] 选项，DIR 为包含 lib 和 include 的目录路径。在 include 目录中必须有一个名为curl，包含了easy.h 和curl.h 的文件夹。lib文件夹里应该有一个名为libcurl.a的文件。对于 PHP 4.3.0 你可以配置 --with-curlwrappers 使 cURL 使用 URL 流。

Note: Win32 用户注意
要在 Windows 环境下使用这个模块，libeay32.dll 和 ssleay32.dll 必须放到 PATH 环境变量包含的目录下。 不用 cURL 网站上的libcurl.dll。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

cURL 配置选项
名字 | 默认 | 可修改范围 | 更新日志
curl.cainfo | NULL | PHP_INI_SYSTEM | 自 PHP 5.3.7. 起有效
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

curl.cainfo string

CURLOPT_CAINFO 选项的一个默认值。这个值必须是一个绝对路径。

安装
资源类型
安装／配置


资源类型

这个扩展定义了2种资源：cURL 句柄和 cURL 批处理句柄。

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

Descriptions and uses for these constants are described within the curl_setopt(), curl_multi_setopt() and curl_getinfo() documentation.

CURLOPT_AUTOREFERER (integer)
Available since PHP 5.1.0
CURLOPT_COOKIESESSION (integer)
Available since PHP 5.1.0
CURLOPT_DNS_USE_GLOBAL_CACHE (integer)
CURLOPT_DNS_CACHE_TIMEOUT (integer)
CURLOPT_FTP_SSL (integer)
Available since PHP 5.2.0
CURLFTP_CREATE_DIR (integer)
Available since PHP 7.0.7 and cURL 7.19.3
CURLFTP_CREATE_DIR_NONE (integer)
Available since PHP 7.0.7 and cURL 7.19.3
CURLFTP_CREATE_DIR_RETRY (integer)
Available since PHP 7.0.7 and cURL 7.19.3
CURLFTPSSL_TRY (integer)
Available since PHP 5.2.0
CURLFTPSSL_ALL (integer)
Available since PHP 5.2.0
CURLFTPSSL_CONTROL (integer)
Available since PHP 5.2.0
CURLFTPSSL_NONE (integer)
Available since PHP 5.2.0
CURLOPT_PRIVATE (integer)
Available since PHP 5.2.4
CURLOPT_FTPSSLAUTH (integer)
Available since PHP 5.1.0
CURLOPT_PORT (integer)
CURLOPT_FILE (integer)
CURLOPT_INFILE (integer)
CURLOPT_INFILESIZE (integer)
CURLOPT_URL (integer)
CURLOPT_PROXY (integer)
CURLOPT_VERBOSE (integer)
CURLOPT_HEADER (integer)
CURLOPT_HTTPHEADER (integer)
CURLOPT_NOPROGRESS (integer)
CURLOPT_NOBODY (integer)
CURLOPT_FAILONERROR (integer)
CURLOPT_UPLOAD (integer)
CURLOPT_POST (integer)
CURLOPT_FTPLISTONLY (integer)
CURLOPT_FTPAPPEND (integer)
CURLOPT_FTP_CREATE_MISSING_DIRS (integer)
CURLOPT_NETRC (integer)
CURLOPT_FOLLOWLOCATION (integer)
This constant is not available when open_basedir or safe_mode are enabled.
CURLOPT_FTPASCII (integer)
CURLOPT_PUT (integer)
CURLOPT_MUTE (integer)
CURLOPT_USERPWD (integer)
CURLOPT_PROXYUSERPWD (integer)
CURLOPT_RANGE (integer)
CURLOPT_TIMEOUT (integer)
CURLOPT_TIMEOUT_MS (integer)
CURLOPT_TCP_NODELAY (integer)
Available since PHP 5.2.1
CURLOPT_POSTFIELDS (integer)
CURLOPT_PROGRESSFUNCTION (integer)
Available since PHP 5.3.0
CURLOPT_REFERER (integer)
CURLOPT_USERAGENT (integer)
CURLOPT_FTPPORT (integer)
CURLOPT_FTP_USE_EPSV (integer)
CURLOPT_LOW_SPEED_LIMIT (integer)
CURLOPT_LOW_SPEED_TIME (integer)
CURLOPT_RESUME_FROM (integer)
CURLOPT_COOKIE (integer)
CURLOPT_SSLCERT (integer)
CURLOPT_SSLCERTPASSWD (integer)
CURLOPT_WRITEHEADER (integer)
CURLOPT_SSL_VERIFYHOST (integer)
CURLOPT_COOKIEFILE (integer)
CURLOPT_SSLVERSION (integer)
CURL_SSLVERSION_DEFAULT (integer)
CURL_SSLVERSION_TLSv1 (integer)
CURL_SSLVERSION_SSLv2 (integer)
CURL_SSLVERSION_SSLv3 (integer)
CURL_SSLVERSION_TLSv1_0 (integer)
Available since PHP 5.5.19 and 5.6.3
CURL_SSLVERSION_TLSv1_1 (integer)
Available since PHP 5.5.19 and 5.6.3
CURL_SSLVERSION_TLSv1_2 (integer)
Available since PHP 5.5.19 and 5.6.3
CURLOPT_TIMECONDITION (integer)
CURLOPT_TIMEVALUE (integer)
CURLOPT_CUSTOMREQUEST (integer)
CURLOPT_STDERR (integer)
CURLOPT_TRANSFERTEXT (integer)
CURLOPT_RETURNTRANSFER (integer)
CURLOPT_QUOTE (integer)
CURLOPT_POSTQUOTE (integer)
CURLOPT_INTERFACE (integer)
CURLOPT_KRB4LEVEL (integer)
CURLOPT_HTTPPROXYTUNNEL (integer)
CURLOPT_FILETIME (integer)
CURLOPT_WRITEFUNCTION (integer)
CURLOPT_READFUNCTION (integer)
CURLOPT_PASSWDFUNCTION (integer)
CURLOPT_HEADERFUNCTION (integer)
CURLOPT_MAXREDIRS (integer)
CURLOPT_MAXCONNECTS (integer)
CURLOPT_CLOSEPOLICY (integer)
Removed in PHP 5.6.0.
CURLOPT_FRESH_CONNECT (integer)
CURLOPT_FORBID_REUSE (integer)
CURLOPT_RANDOM_FILE (integer)
CURLOPT_EGDSOCKET (integer)
CURLOPT_CONNECTTIMEOUT (integer)
CURLOPT_CONNECTTIMEOUT_MS (integer)
CURLOPT_SSL_VERIFYPEER (integer)
CURLOPT_CAINFO (integer)
CURLOPT_CAPATH (integer)
CURLOPT_COOKIEJAR (integer)
CURLOPT_SSL_CIPHER_LIST (integer)
CURLOPT_BINARYTRANSFER (integer)
CURLOPT_NOSIGNAL (integer)
CURLOPT_PROXYTYPE (integer)
Available as of cURL 7.10.
CURLOPT_BUFFERSIZE (integer)
CURLOPT_HTTPGET (integer)
CURLOPT_HTTP_VERSION (integer)
CURLOPT_SSLKEY (integer)
CURLOPT_SSLKEYTYPE (integer)
CURLOPT_SSLKEYPASSWD (integer)
CURLOPT_SSLENGINE (integer)
CURLOPT_SSLENGINE_DEFAULT (integer)
CURLOPT_SSLCERTTYPE (integer)
CURLOPT_CRLF (integer)
CURLOPT_ENCODING (integer)
CURLOPT_PROXYPORT (integer)
CURLOPT_UNRESTRICTED_AUTH (integer)
CURLOPT_FTP_USE_EPRT (integer)
CURLOPT_HTTP200ALIASES (integer)
CURLOPT_HTTPAUTH (integer)
CURLAUTH_BASIC (integer)
CURLAUTH_DIGEST (integer)
CURLAUTH_GSSNEGOTIATE (integer)
CURLAUTH_NEGOTIATE (integer)
Available since PHP 7.0.7 and cURL 7.38.0.
CURLAUTH_NTLM (integer)
CURLAUTH_NTLM_WB (integer)
Available since PHP 7.0.7 and cURL 7.22.0
CURLAUTH_ANY (integer)
CURLAUTH_ANYSAFE (integer)
CURLOPT_PROXYAUTH (integer)
CURLOPT_MAX_RECV_SPEED_LARGE (integer)
Available since PHP 5.4.0 and cURL 7.15.5
CURLOPT_MAX_SEND_SPEED_LARGE (integer)
Available since PHP 5.4.0 and cURL 7.15.5
CURLOPT_HEADEROPT (integer)
Available since PHP 7.0.7 and cURL 7.37.0
CURLOPT_PROXYHEADER (integer)
Available since PHP 7.0.7 and cURL 7.37.0
CURLCLOSEPOLICY_LEAST_RECENTLY_USED (integer)
Removed in PHP 5.6.0.
CURLCLOSEPOLICY_LEAST_TRAFFIC (integer)
Removed in PHP 5.6.0.
CURLCLOSEPOLICY_SLOWEST (integer)
Removed in PHP 5.6.0.
CURLCLOSEPOLICY_CALLBACK (integer)
Removed in PHP 5.6.0.
CURLCLOSEPOLICY_OLDEST (integer)
Removed in PHP 5.6.0.
CURLINFO_PRIVATE (integer)
Available since PHP 5.2.4
CURLINFO_EFFECTIVE_URL (integer)
CURLINFO_HTTP_CODE (integer)
CURLINFO_HEADER_OUT (integer)
Available since PHP 5.1.3
CURLINFO_HEADER_SIZE (integer)
CURLINFO_REQUEST_SIZE (integer)
CURLINFO_TOTAL_TIME (integer)
CURLINFO_NAMELOOKUP_TIME (integer)
CURLINFO_CONNECT_TIME (integer)
CURLINFO_PRETRANSFER_TIME (integer)
CURLINFO_SIZE_UPLOAD (integer)
CURLINFO_SIZE_DOWNLOAD (integer)
CURLINFO_SPEED_DOWNLOAD (integer)
CURLINFO_SPEED_UPLOAD (integer)
CURLINFO_FILETIME (integer)
CURLINFO_SSL_VERIFYRESULT (integer)
CURLINFO_CONTENT_LENGTH_DOWNLOAD (integer)
CURLINFO_CONTENT_LENGTH_UPLOAD (integer)
CURLINFO_STARTTRANSFER_TIME (integer)
CURLINFO_CONTENT_TYPE (integer)
CURLINFO_REDIRECT_TIME (integer)
CURLINFO_REDIRECT_COUNT (integer)
CURLINFO_REDIRECT_URL (string)
Available since PHP 5.3.7
CURLINFO_PRIMARY_IP (string)
Available since PHP 5.4.7
CURLINFO_PRIMARY_PORT (integer)
Available since PHP 5.4.7
CURLINFO_LOCAL_IP (string)
Available since PHP 5.4.7
CURLINFO_LOCAL_PORT (integer)
Available since PHP 5.4.7
CURL_PUSH_OK (integer)
Available since PHP 7.1.0 and cURL 7.44.0
CURL_PUSH_DENY (integer)
Available since PHP 7.1.0 and cURL 7.44.0
CURL_REDIR_POST_301 (integer)
Available since PHP 7.0.7 and cURL 7.18.2
CURL_REDIR_POST_302 (integer)
Available since PHP 7.0.7 and cURL 7.18.2
CURL_REDIR_POST_303 (integer)
Available since PHP 7.0.7 and cURL 7.25.1
CURL_REDIR_POST_ALL (integer)
Available since PHP 7.0.7 and cURL 7.18.2
CURL_TIMECOND_IFMODSINCE (integer)
CURL_TIMECOND_IFUNMODSINCE (integer)
CURL_TIMECOND_LASTMOD (integer)
CURL_VERSION_IPV6 (integer)
CURL_VERSION_KERBEROS4 (integer)
CURL_VERSION_KERBEROS5 (integer)
Available since PHP 7.0.7 and cURL 7.40.0
CURL_VERSION_HTTP2 (integer)
Available since PHP 5.5.24 and 5.6.8 and cURL 7.33.0
CURL_VERSION_PSL (integer)
Available since PHP 7.0.7 and cURL 7.47.0
CURL_VERSION_SSL (integer)
CURL_VERSION_UNIX_SOCKETS (integer)
Available since PHP 7.0.7 and cURL 7.40.0
CURL_VERSION_LIBZ (integer)
CURLVERSION_NOW (integer)
CURLE_OK (integer)
CURLE_UNSUPPORTED_PROTOCOL (integer)
CURLE_FAILED_INIT (integer)
CURLE_URL_MALFORMAT (integer)
CURLE_URL_MALFORMAT_USER (integer)
CURLE_COULDNT_RESOLVE_PROXY (integer)
CURLE_COULDNT_RESOLVE_HOST (integer)
CURLE_COULDNT_CONNECT (integer)
CURLE_FTP_WEIRD_SERVER_REPLY (integer)
CURLE_FTP_ACCESS_DENIED (integer)
CURLE_FTP_USER_PASSWORD_INCORRECT (integer)
CURLE_FTP_WEIRD_PASS_REPLY (integer)
CURLE_FTP_WEIRD_USER_REPLY (integer)
CURLE_FTP_WEIRD_PASV_REPLY (integer)
CURLE_FTP_WEIRD_227_FORMAT (integer)
CURLE_FTP_CANT_GET_HOST (integer)
CURLE_FTP_CANT_RECONNECT (integer)
CURLE_FTP_COULDNT_SET_BINARY (integer)
CURLE_PARTIAL_FILE (integer)
CURLE_FTP_COULDNT_RETR_FILE (integer)
CURLE_FTP_WRITE_ERROR (integer)
CURLE_FTP_QUOTE_ERROR (integer)
CURLE_HTTP_NOT_FOUND (integer)
CURLE_WRITE_ERROR (integer)
CURLE_MALFORMAT_USER (integer)
CURLE_FTP_COULDNT_STOR_FILE (integer)
CURLE_READ_ERROR (integer)
CURLE_OUT_OF_MEMORY (integer)
CURLE_OPERATION_TIMEOUTED (integer)
CURLE_FTP_COULDNT_SET_ASCII (integer)
CURLE_FTP_PORT_FAILED (integer)
CURLE_FTP_COULDNT_USE_REST (integer)
CURLE_FTP_COULDNT_GET_SIZE (integer)
CURLE_HTTP_RANGE_ERROR (integer)
CURLE_HTTP_POST_ERROR (integer)
CURLE_SSL_CONNECT_ERROR (integer)
CURLE_FTP_BAD_DOWNLOAD_RESUME (integer)
CURLE_FILE_COULDNT_READ_FILE (integer)
CURLE_LDAP_CANNOT_BIND (integer)
CURLE_LDAP_SEARCH_FAILED (integer)
CURLE_LIBRARY_NOT_FOUND (integer)
CURLE_FUNCTION_NOT_FOUND (integer)
CURLE_ABORTED_BY_CALLBACK (integer)
CURLE_BAD_FUNCTION_ARGUMENT (integer)
CURLE_BAD_CALLING_ORDER (integer)
CURLE_HTTP_PORT_FAILED (integer)
CURLE_BAD_PASSWORD_ENTERED (integer)
CURLE_TOO_MANY_REDIRECTS (integer)
CURLE_UNKNOWN_TELNET_OPTION (integer)
CURLE_TELNET_OPTION_SYNTAX (integer)
CURLE_OBSOLETE (integer)
CURLE_SSL_PEER_CERTIFICATE (integer)
CURLE_GOT_NOTHING (integer)
CURLE_SSL_ENGINE_NOTFOUND (integer)
CURLE_SSL_ENGINE_SETFAILED (integer)
CURLE_SEND_ERROR (integer)
CURLE_RECV_ERROR (integer)
CURLE_SHARE_IN_USE (integer)
CURLE_SSL_CERTPROBLEM (integer)
CURLE_SSL_CIPHER (integer)
CURLE_SSL_CACERT (integer)
CURLE_BAD_CONTENT_ENCODING (integer)
CURLE_LDAP_INVALID_URL (integer)
CURLE_FILESIZE_EXCEEDED (integer)
CURLE_FTP_SSL_FAILED (integer)
CURLE_SSH (integer)
Available since PHP 5.3.0 and cURL 7.16.1.
CURLFTPAUTH_DEFAULT (integer)
Available since PHP 5.1.0
CURLFTPAUTH_SSL (integer)
Available since PHP 5.1.0
CURLFTPAUTH_TLS (integer)
Available since PHP 5.1.0
CURLPROXY_HTTP (integer)
Available since cURL 7.10.
CURLPROXY_HTTP_1_0 (integer)
Available since PHP 7.0.7 and cURL 7.19.3
CURLPROXY_SOCKS4 (integer)
Available since PHP 5.2.10 and cURL 7.10.
CURLPROXY_SOCKS5 (integer)
Available since cURL 7.10.
CURL_NETRC_OPTIONAL (integer)
CURL_NETRC_IGNORED (integer)
CURL_NETRC_REQUIRED (integer)
CURL_HTTP_VERSION_NONE (integer)
CURL_HTTP_VERSION_1_0 (integer)
CURL_HTTP_VERSION_1_1 (integer)
CURL_HTTP_VERSION_2 (integer)
Available since PHP 7.0.7 and cURL 7.43.0
CURL_HTTP_VERSION_2TLS (integer)
Available since PHP 7.0.7 and cURL 7.47.0
CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE (integer)
Available since PHP 7.0.7 and cURL 7.49.0
CURLM_CALL_MULTI_PERFORM (integer)
CURLM_OK (integer)
CURLM_BAD_HANDLE (integer)
CURLM_BAD_EASY_HANDLE (integer)
CURLM_OUT_OF_MEMORY (integer)
CURLM_INTERNAL_ERROR (integer)
CURLMSG_DONE (integer)
CURLOPT_KEYPASSWD (integer)
CURLOPT_SSH_AUTH_TYPES (integer)
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 (integer)
CURLOPT_SSH_PRIVATE_KEYFILE (integer)
CURLOPT_SSH_PUBLIC_KEYFILE (integer)
CURLOPT_SSL_OPTIONS (integer)
Available since PHP 5.5.0 and cURL 7.25.0
CURLSSLOPT_ALLOW_BEAST (integer)
Available since PHP 5.5.0 and cURL 7.25.0
CURLSSLOPT_NO_REVOKE (integer)
Available since PHP 7.0.7 and cURL 7.44.0
CURLOPT_USERNAME (integer)
Available since PHP 5.5.0 and cURL 7.19.1
CURLOPT_SASL_IR (integer)
Available since PHP 7.0.7 and cURL 7.31.0
CURLOPT_DNS_INTERFACE (integer)
Available since PHP 7.0.7 and cURL 7.33.0
CURLOPT_DNS_LOCAL_IP4 (integer)
Available since PHP 7.0.7 and cURL 7.33.0
CURLOPT_DNS_LOCAL_IP6 (integer)
Available since PHP 7.0.7 and cURL 7.33.0
CURLOPT_XOAUTH2_BEARER (integer)
Available since PHP 7.0.7 and cURL 7.33.0
CURLOPT_LOGIN_OPTIONS (integer)
Available since PHP 7.0.7 and cURL 7.34.0
CURLOPT_EXPECT_100_TIMEOUT_MS (integer)
Available since PHP 7.0.7 and cURL 7.36.0
CURLOPT_SSL_ENABLE_ALPN (integer)
Available since PHP 7.0.7 and cURL 7.36.0
CURLOPT_SSL_ENABLE_NPN (integer)
Available since PHP 7.0.7 and cURL 7.36.0
CURLOPT_PINNEDPUBLICKEY (integer)
Available since PHP 7.0.7 and cURL 7.39.0
CURLOPT_UNIX_SOCKET_PATH (integer)
Available since PHP 7.0.7 and cURL 7.40.0
CURLOPT_SSL_VERIFYSTATUS (integer)
Available since PHP 7.0.7 and cURL 7.41.0
CURLOPT_PATH_AS_IS (integer)
Available since PHP 7.0.7 and cURL 7.42.0
CURLOPT_SSL_FALSESTART (integer)
Available since PHP 7.0.7 and cURL 7.42.0
CURLOPT_PIPEWAIT (integer)
Available since PHP 7.0.7 and cURL 7.43.0
CURLOPT_PROXY_SERVICE_NAME (integer)
Available since PHP 7.0.7 and cURL 7.43.0
CURLOPT_SERVICE_NAME (integer)
Available since PHP 7.0.7 and cURL 7.43.0
CURLOPT_DEFAULT_PROTOCOL (integer)
Available since PHP 7.0.7 and cURL 7.45.0
CURLOPT_STREAM_WEIGHT (integer)
Available since PHP 7.0.7 and cURL 7.46.0
CURLOPT_TFTP_NO_OPTIONS (integer)
Available since PHP 7.0.7 and cURL 7.48.0
CURLOPT_CONNECT_TO (integer)
Available since PHP 7.0.7 and cURL 7.49.0
CURLOPT_TCP_FASTOPEN (integer)
Available since PHP 7.0.7 and cURL 7.49.0
CURLMOPT_PIPELINING (integer)
Available since PHP 5.5.0 and cURL 7.16.0.
CURLMOPT_MAXCONNECTS (integer)
Available since PHP 5.5.0 and cURL 7.16.3.
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE (integer)
Available since PHP 7.0.7 and cURL 7.30.0
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE (integer)
Available since PHP 7.0.7 and cURL 7.30.0
CURLMOPT_MAX_HOST_CONNECTIONS (integer)
Available since PHP 7.0.7 and cURL 7.30.0
CURLMOPT_MAX_PIPELINE_LENGTH (integer)
Available since PHP 7.0.7 and cURL 7.30.0
CURLMOPT_MAX_TOTAL_CONNECTIONS (integer)
Available since PHP 7.0.7 and cURL 7.30.0
CURLMOPT_PUSHFUNCTION (integer)
Available since PHP 7.1.0 and cURL 7.44.0
CURLSSH_AUTH_AGENT (integer)
Available since PHP 7.0.7 and cURL 7.28.0
CURLSSH_AUTH_ANY (integer)
CURLSSH_AUTH_DEFAULT (integer)
CURLSSH_AUTH_HOST (integer)
CURLSSH_AUTH_KEYBOARD (integer)
CURLSSH_AUTH_NONE (integer)
CURLSSH_AUTH_PASSWORD (integer)
CURLSSH_AUTH_PUBLICKEY (integer)
CURL_WRAPPERS_ENABLED (integer)
Defined if PHP was configured with --with-curlwrappers . Moved to PECL in PHP 5.5.0.
CURLPAUSE_ALL (integer)
Available since PHP 5.5.0 and cURL 7.18.0.
CURLPAUSE_CONT (integer)
Available since PHP 5.5.0 and cURL 7.18.0.
CURLPAUSE_RECV (integer)
Available since PHP 5.5.0 and cURL 7.18.0.
CURLPAUSE_RECV_CONT (integer)
Available since PHP 5.5.0 and cURL 7.18.0.
CURLPAUSE_SEND (integer)
Available since PHP 5.5.0 and cURL 7.18.0.
CURLPAUSE_SEND_CONT (integer)
Available since PHP 5.5.0 and cURL 7.18.0.
CURLPIPE_NOTHING (integer)
Available since PHP 7.0.0 and cURL 7.43.0.
CURLPIPE_HTTP1 (integer)
Available since PHP 7.0.0 and cURL 7.43.0.
CURLPIPE_MULTIPLEX (integer)
Available since PHP 7.0.0 and cURL 7.43.0.
CURLPROXY_SOCKS4A (integer)
Available since PHP 5.5.23 and PHP 5.6.7 and cURL 7.18.0.
CURLPROXY_SOCKS5_HOSTNAME (integer)
Available since PHP 5.5.23 and PHP 5.6.7 and cURL 7.18.0.
CURLHEADER_SEPARATE (integer)
Available since PHP 7.0.7 and cURL 7.37.0.
CURLHEADER_UNIFIED (integer)
Available since PHP 7.0.7 and cURL 7.37.0.
CURLPROTO_SMB (integer)
Available since PHP 7.0.7 and cURL 7.40.0.
CURLPROTO_SMBS (integer)
Available since PHP 7.0.7 and cURL 7.40.0.
资源类型
范例
cURL


范例

Table of Contents

  • curl 基础例子
预定义常量
curl 基础例子
cURL


curl 基础例子

只要你编译完的PHP设置了支持 cURL 扩展，你就可以开始使用cURL函数了。使用 cURL 函数的基本思想是先使用 curl_init() 初始化 cURL会话，接着可以通过 curl_setopt() 设置需要的全部选项，然后使用 curl_exec() 来执行会话，当执行完会话后使用 curl_close() 关闭会话。这是一个使用 cURL 函数获取 example.com 主页保存到文件的例子：

Example #1 使用 PHP cURL 模块获取 example.com 的主页

<?php

$ch = curl_init("http://www.example.com/");
$fp = fopen("example_homepage.txt", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
curl_close($ch);
fclose($fp);
?>

范例
cURL 函数
范例


cURL 函数

Table of Contents

  • curl_close — 关闭一个cURL会话
  • curl_copy_handle — 复制一个cURL句柄和它的所有选项
  • curl_errno — 返回最后一次的错误号
  • curl_error — 返回一个保护当前会话最近一次错误的字符串
  • curl_escape — 使用 URL 编码给定的字符串
  • curl_exec — 执行一个cURL会话
  • curl_file_create — 创建一个 CURLFile 对象
  • curl_getinfo — 获取一个cURL连接资源句柄的信息
  • curl_init — 初始化一个cURL会话
  • curl_multi_add_handle — 向curl批处理会话中添加单独的curl句柄
  • curl_multi_close — 关闭一组cURL句柄
  • curl_multi_exec — 运行当前 cURL 句柄的子连接
  • curl_multi_getcontent — 如果设置了CURLOPT_RETURNTRANSFER，则返回获取的输出的文本流
  • curl_multi_info_read — 获取当前解析的cURL的相关传输信息
  • curl_multi_init — 返回一个新cURL批处理句柄
  • curl_multi_remove_handle — 移除curl批处理句柄资源中的某个句柄资源
  • curl_multi_select — 等待所有cURL批处理中的活动连接
  • curl_multi_setopt — 为 cURL 并行处理设置一个选项
  • curl_multi_strerror — 返回字符串描述的错误代码
  • curl_pause — 暂停和取消暂停一个连接。
  • curl_reset — 重置一个 libcurl 会话句柄的所有的选项
  • curl_setopt_array — 为cURL传输会话批量设置选项
  • curl_setopt — 设置一个cURL传输选项
  • curl_share_close — 关闭 cURL 共享句柄
  • curl_share_init — 初始化一个 cURL 共享句柄。
  • curl_share_setopt — 为 cURL 共享句柄设置选项。
  • curl_strerror — 返回错误代码的字符串描述
  • curl_unescape — 解码给定的 URL 编码的字符串
  • curl_version — 获取cURL版本信息
curl 基础例子
curl_close
cURL


关闭一个cURL会话

cURL 函数
curl_copy_handle
cURL 函数
PHP Manual

curl_close

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

curl_close — 关闭一个cURL会话

说明

void curl_close ( resource $ch )

关闭一个cURL会话并且释放所有资源。cURL句柄ch 也会被释放。

参数

ch

由 curl_init() 返回的 cURL 句柄。

返回值

没有返回值。

范例

Example #1 初始化一个cURL会话来获取一个网页

<?php
// 创建一个新cURL资源
$ch = curl_init();

// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);

// 抓取URL并把它传递给浏览器
curl_exec($ch);

// 关闭cURL资源，并且释放系统资源
curl_close($ch);
?>

参见

  • curl_init() - 初始化一个cURL会话
  • curl_multi_close() - 关闭一组cURL句柄

cURL 函数
curl_copy_handle
cURL 函数


复制一个cURL句柄和它的所有选项

curl_close
curl_errno
cURL 函数
PHP Manual

curl_copy_handle

(PHP 5, PHP 7)

curl_copy_handle — 复制一个cURL句柄和它的所有选项

说明

resource curl_copy_handle ( resource $ch )

复制一个cURL句柄并保持相同的选项。

参数

ch

由 curl_init() 返回的 cURL 句柄。

返回值

返回一个新的cURL句柄。

范例

Example #1 复制一个cURL句柄

<?php
// 创建一个新的cURL资源
$ch = curl_init();

// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/');
curl_setopt($ch, CURLOPT_HEADER, 0);

// 复制句柄
$ch2 = curl_copy_handle($ch);

// 抓取URL (http://www.example.com/) 并把它传递给浏览器
curl_exec($ch2);

// 关闭cURL资源，并且释放系统资源
curl_close($ch2);
curl_close($ch);
?>

curl_close
curl_errno
cURL 函数


返回最后一次的错误号

curl_copy_handle
curl_error
cURL 函数
PHP Manual

curl_errno

(PHP 4 >= 4.0.3, PHP 5, PHP 7)

curl_errno — 返回最后一次的错误号

说明

int curl_errno ( resource $ch )

返回最后一次cURL操作的错误号。

参数

ch

由 curl_init() 返回的 cURL 句柄。

返回值

返回错误号或 0 (零) 如果没有错误发生。

范例

Example #1 curl_errno() example

<?php
// 创建一个指向一个不存在的位置的cURL句柄
$ch = curl_init('http://404.php.net/');

// 执行
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);

// 检查是否有错误发生
if(curl_errno($ch))
{
    echo 'Curl error: ' . curl_error($ch);
}

// 关闭句柄
curl_close($ch);
?>

参见

  • curl_error() - 返回一个保护当前会话最近一次错误的字符串
  • » Curl 错误号

curl_copy_handle
curl_error
cURL 函数


返回一个保护当前会话最近一次错误的字符串

curl_errno
curl_escape
cURL 函数
PHP Manual

curl_error

(PHP 4 >= 4.0.3, PHP 5, PHP 7)

curl_error — 返回一个保护当前会话最近一次错误的字符串

说明

string curl_error ( resource $ch )

返回一条最近一次cURL操作明确的文本的错误信息。

参数

ch

由 curl_init() 返回的 cURL 句柄。

返回值

返回错误信息或 '' (空字符串) 如果没有任何错误发生。

范例

Example #1 curl_error() example

<?php
// 创建一个指向一个不存在的位置的cURL句柄
$ch = curl_init('http://404.php.net/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

if(curl_exec($ch) === false)
{
    echo 'Curl error: ' . curl_error($ch);
}
else
{
    echo '操作完成没有任何错误';
}

// 关闭句柄
curl_close($ch);
?>

参见

  • curl_errno() - 返回最后一次的错误号
  • » Curl error codes

curl_errno
curl_escape
cURL 函数


使用 URL 编码给定的字符串

curl_error
curl_exec
cURL 函数
PHP Manual

curl_escape

(PHP 5 >= 5.5.0, PHP 7)

curl_escape — 使用 URL 编码给定的字符串

说明

string curl_escape ( resource $ch , string $str )

该函数使用 URL 根据» RFC 3986编码给定的字符串。

参数

ch

由 curl_init() 返回的 cURL 句柄。

str

需要编码的字符串

返回值

返回编码后的字符串 或者在失败时返回 FALSE。

范例

Example #1 curl_escape() 示例

<?php
// 创建一个 curl 句柄
$ch = curl_init();

// 把编码后的字符串当做一个 GET 参数
$location = curl_escape($ch, 'Hofbr?uhaus / München');
// 结果： Hofbr%C3%A4uhaus%20%2F%20M%C3%BCnchen

// 用编码好的字符串组装一个 URL
$url = "http://example.com/add_location.php?location={$location}";
// 结果： http://example.com/add_location.php?location=Hofbr%C3%A4uhaus%20%2F%20M%C3%BCnchen

// 发送 HTTP 请求并关闭句柄
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);
?>

参见

  • curl_unescape() - 解码给定的 URL 编码的字符串
  • urlencode() - 编码 URL 字符串
  • rawurlencode() - 按照 RFC 3986 对 URL 进行编码
  • » RFC 3986

curl_error
curl_exec
cURL 函数


执行一个cURL会话

curl_escape
curl_file_create
cURL 函数
PHP Manual

curl_exec

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

curl_exec — 执行一个cURL会话

说明

mixed curl_exec ( resource $ch )

执行给定的cURL会话。

这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。

参数

ch

由 curl_init() 返回的 cURL 句柄。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 然而，如果 CURLOPT_RETURNTRANSFER选项被设置，函数执行成功时会返回执行的结果，失败时返回 FALSE 。

范例

Example #1 获取一个网页

<?php
// 创建一个cURL资源
$ch = curl_init();

// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);

// 抓取URL并把它传递给浏览器
curl_exec($ch);

// 关闭cURL资源，并且释放系统资源
curl_close($ch);
?>

参见

  • curl_multi_exec() - 运行当前 cURL 句柄的子连接

curl_escape
curl_file_create
cURL 函数


创建一个 CURLFile 对象

curl_exec
curl_getinfo
cURL 函数
PHP Manual

curl_file_create

(PHP 5 >= 5.5.0, PHP 7)

curl_file_create — 创建一个 CURLFile 对象

说明

此函数是该函数的别名： CURLFile::__construct()

curl_exec
curl_getinfo
cURL 函数


获取一个cURL连接资源句柄的信息

curl_file_create
curl_init
cURL 函数
PHP Manual

curl_getinfo

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

curl_getinfo — 获取一个cURL连接资源句柄的信息

说明

mixed curl_getinfo ( resource $ch [, int $opt = 0 ] )

获取最后一次传输的相关信息。

参数

ch

由 curl_init() 返回的 cURL 句柄。

opt

这个参数可能是以下常量之一:

  • CURLINFO_EFFECTIVE_URL - 最后一个有效的URL地址
  • CURLINFO_HTTP_CODE - 最后一个收到的HTTP代码
  • CURLINFO_FILETIME - 远程获取文档的时间，如果无法获取，则返回值为"-1"
  • CURLINFO_TOTAL_TIME - 最后一次传输所消耗的时间
  • CURLINFO_NAMELOOKUP_TIME - 名称解析所消耗的时间
  • CURLINFO_CONNECT_TIME - 建立连接所消耗的时间
  • CURLINFO_PRETRANSFER_TIME - 从建立连接到准备传输所使用的时间
  • CURLINFO_STARTTRANSFER_TIME - 从建立连接到传输开始所使用的时间
  • CURLINFO_REDIRECT_TIME - 在事务传输开始前重定向所使用的时间
  • CURLINFO_SIZE_UPLOAD - 上传数据量的总值
  • CURLINFO_SIZE_DOWNLOAD - 下载数据量的总值
  • CURLINFO_SPEED_DOWNLOAD - 平均下载速度
  • CURLINFO_SPEED_UPLOAD - 平均上传速度
  • CURLINFO_HEADER_SIZE - header部分的大小
  • CURLINFO_HEADER_OUT - 发送请求的字符串
  • CURLINFO_REQUEST_SIZE - 在HTTP请求中有问题的请求的大小
  • CURLINFO_SSL_VERIFYRESULT - 通过设置CURLOPT_SSL_VERIFYPEER返回的SSL证书验证请求的结果
  • CURLINFO_CONTENT_LENGTH_DOWNLOAD - 从Content-Length: field中读取的下载内容长度
  • CURLINFO_CONTENT_LENGTH_UPLOAD - 上传内容大小的说明
  • CURLINFO_CONTENT_TYPE - 下载内容的Content-Type:值，NULL表示服务器没有发送有效的Content-Type: header

返回值

如果 opt 被设置，以字符串形式返回它的值。否则，返回返回一个包含下列元素的关联数组(它们分别对应于 opt):

  • "url"
  • "content_type"
  • "http_code"
  • "header_size"
  • "request_size"
  • "filetime"
  • "ssl_verify_result"
  • "redirect_count"
  • "total_time"
  • "namelookup_time"
  • "connect_time"
  • "pretransfer_time"
  • "size_upload"
  • "size_download"
  • "speed_download"
  • "speed_upload"
  • "download_content_length"
  • "upload_content_length"
  • "starttransfer_time"
  • "redirect_time"

更新日志

版本 | 说明
5.1.3 | 引入CURLINFO_HEADER_OUT.

范例

Example #1 curl_getinfo() example

<?php
// 创建一个cURL句柄
$ch = curl_init('http://www.yahoo.com/');

// 执行
curl_exec($ch);

// 检查是否有错误发生
if(!curl_errno($ch))
{
 $info = curl_getinfo($ch);

 echo 'Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url'];
}

// Close handle
curl_close($ch);
?>

注释

Note:

Information gathered by this function is kept if the handle is re-used. This means that unless a statistic is overridden internally by this function, the previous info is returned.

curl_file_create
curl_init
cURL 函数


初始化一个cURL会话

curl_getinfo
curl_multi_add_handle
cURL 函数
PHP Manual

curl_init

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

curl_init — 初始化一个cURL会话

说明

resource curl_init ([ string $url = NULL ] )

初始化一个新的会话，返回一个cURL句柄，供curl_setopt(), curl_exec()和curl_close() 函数使用。

参数

url

如果提供了该参数，CURLOPT_URL 选项将会被设置成这个值。你也可以使用curl_setopt()函数手动地设置这个值。

返回值

如果成功，返回一个cURL句柄，出错返回 FALSE。

范例

Example #1 初始化一个新的cURL会话并获取一个网页

<?php
// 创建一个新cURL资源
$ch = curl_init();

// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);

// 抓取URL并把它传递给浏览器
curl_exec($ch);

// 关闭cURL资源，并且释放系统资源
curl_close($ch);
?>

参见

  • curl_close() - 关闭一个cURL会话
  • curl_multi_init() - 返回一个新cURL批处理句柄

curl_getinfo
curl_multi_add_handle
cURL 函数


向curl批处理会话中添加单独的curl句柄

curl_init
curl_multi_close
cURL 函数
PHP Manual

curl_multi_add_handle

(PHP 5, PHP 7)

curl_multi_add_handle — 向curl批处理会话中添加单独的curl句柄

说明

int curl_multi_add_handle ( resource $mh , resource $ch )

增加 ch 句柄到批处理会话mh

参数

mh

由 curl_multi_init() 返回的 cURL 多个句柄。

ch

由 curl_init() 返回的 cURL 句柄。

返回值

成功时返回0，失败时返回CURLM_XXX之一的错误码。

范例

Example #1 curl_multi_add_handle() example

这个范例将会创建2个cURL句柄，把它们加到批处理句柄，然后并行地运行它们。

<?php
// 创建一对cURL资源
$ch1 = curl_init();
$ch2 = curl_init();

// 设置URL和相应的选项
curl_setopt($ch1, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/");
curl_setopt($ch2, CURLOPT_HEADER, 0);

// 创建批处理cURL句柄
$mh = curl_multi_init();

// 增加2个句柄
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);

$running=null;
// 执行批处理句柄
do {
    curl_multi_exec($mh,$running);
} while($running > 0);

// 关闭全部句柄
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
?>

参见

  • curl_multi_remove_handle() - 移除curl批处理句柄资源中的某个句柄资源
  • curl_multi_init() - 返回一个新cURL批处理句柄
  • curl_init() - 初始化一个cURL会话

curl_init
curl_multi_close
cURL 函数


关闭一组cURL句柄

curl_multi_add_handle
curl_multi_exec
cURL 函数
PHP Manual

curl_multi_close

(PHP 5, PHP 7)

curl_multi_close — 关闭一组cURL句柄

说明

void curl_multi_close ( resource $mh )

关闭一组cURL句柄。

参数

mh

由 curl_multi_init() 返回的 cURL 多个句柄。

返回值

没有返回值。

范例

Example #1 curl_multi_close() example

这个范例将会创建2个cURL句柄，把它们加到批处理句柄，然后并行地运行它们。

<?php
// 创建一对cURL资源
$ch1 = curl_init();
$ch2 = curl_init();

// 设置URL和相应的选项
curl_setopt($ch1, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/");
curl_setopt($ch2, CURLOPT_HEADER, 0);

// 创建批处理cURL句柄
$mh = curl_multi_init();

// 增加2个句柄
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);

$running=null;
// 执行批处理句柄
do {
    curl_multi_exec($mh,$running);
} while ($running > 0);

// 关闭全部句柄
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);

?>

参见

  • curl_multi_init() - 返回一个新cURL批处理句柄
  • curl_close() - 关闭一个cURL会话

curl_multi_add_handle
curl_multi_exec
cURL 函数


运行当前 cURL 句柄的子连接

curl_multi_close
curl_multi_getcontent
cURL 函数
PHP Manual

curl_multi_exec

(PHP 5, PHP 7)

curl_multi_exec — 运行当前 cURL 句柄的子连接

说明

int curl_multi_exec ( resource $mh , int &$still_running )

处理在栈中的每一个句柄。无论该句柄需要读取或写入数据都可调用此方法。

参数

mh

由 curl_multi_init() 返回的 cURL 多个句柄。

still_running

一个用来判断操作是否仍在执行的标识的引用。

返回值

一个定义于 cURL 预定义常量中的 cURL 代码。

Note:

该函数仅返回关于整个批处理栈相关的错误。即使返回 CURLM_OK 时单个传输仍可能有问题。

范例

Example #1 curl_multi_exec() example

这个范例将会创建 2 个 cURL 句柄，把它们加到批处理句柄，然后并行地运行它们。

<?php
// 创建一对cURL资源
$ch1 = curl_init();
$ch2 = curl_init();

// 设置URL和相应的选项
curl_setopt($ch1, CURLOPT_URL, "http://lxr.php.net/");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/");
curl_setopt($ch2, CURLOPT_HEADER, 0);

// 创建批处理cURL句柄
$mh = curl_multi_init();

// 增加2个句柄
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);

$active = null;
// 执行批处理句柄
do {
    $mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active && $mrc == CURLM_OK) {
    if (curl_multi_select($mh) != -1) {
        do {
            $mrc = curl_multi_exec($mh, $active);
        } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    }
}

// 关闭全部句柄
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);

?>

参见

  • curl_multi_init() - 返回一个新cURL批处理句柄
  • curl_multi_select() - 等待所有cURL批处理中的活动连接
  • curl_exec() - 执行一个cURL会话

curl_multi_close
curl_multi_getcontent
cURL 函数


如果设置了CURLOPT_RETURNTRANSFER，则返回获取的输出的文本流

curl_multi_exec
curl_multi_info_read
cURL 函数
PHP Manual

curl_multi_getcontent

(PHP 5, PHP 7)

curl_multi_getcontent — 如果设置了CURLOPT_RETURNTRANSFER，则返回获取的输出的文本流

说明

string curl_multi_getcontent ( resource $ch )

如果CURLOPT_RETURNTRANSFER作为一个选项被设置到一个具体的句柄，那么这个函数将会以字符串的形式返回那个cURL句柄获取的内容。

参数

ch

由 curl_init() 返回的 cURL 句柄。

返回值

如果设置了CURLOPT_RETURNTRANSFER，则返回获取的输出的文本流。

参见

  • curl_multi_init() - 返回一个新cURL批处理句柄

curl_multi_exec
curl_multi_info_read
cURL 函数


获取当前解析的cURL的相关传输信息

curl_multi_getcontent
curl_multi_init
cURL 函数
PHP Manual

curl_multi_info_read

(PHP 5, PHP 7)

curl_multi_info_read — 获取当前解析的cURL的相关传输信息

说明

array curl_multi_info_read ( resource $mh [, int &$msgs_in_queue = NULL ] )

查询批处理句柄是否单独的传输线程中有消息或信息返回。消息可能包含诸如从单独的传输线程返回的错误码或者只是传输线程有没有完成之类的报告。

重复调用这个函数，它每次都会返回一个新的结果，直到这时没有更多信息返回时，FALSE 被当作一个信号返回。通过msgs_in_queue返回的整数指出将会包含当这次函数被调用后，还剩余的消息数。

Warning

返回的资源指向的数据调用curl_multi_remove_handle()后将不会存在。

参数

mh

由 curl_multi_init() 返回的 cURL 多个句柄。

msgs_in_queue

仍在队列中的消息数量。

返回值

成功时返回相关信息的数组，失败时返回FALSE。

返回数组的内容
Key: | Value:
msg | CURLMSG_DONE常量。其他返回值当前不可用。
result | CURLE_*常量之一。如果一切操作没有问题，将会返回CURLE_OK常量。
handle | cURL资源类型表明它有关的句柄。

范例

Example #1 一个curl_multi_info_read()范例

<?php

$urls = array(
   "http://www.cnn.com/",
   "http://www.bbc.co.uk/",
   "http://www.yahoo.com/"
);

$mh = curl_multi_init();

foreach ($urls as $i => $url) {
    $conn[$i] = curl_init($url);
    curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, 1);
    curl_multi_add_handle($mh, $conn[$i]);
}

do {
    $status = curl_multi_exec($mh, $active);
    $info = curl_multi_info_read($mh);
    if (false !== $info) {
        var_dump($info);
    }
} while ($status === CURLM_CALL_MULTI_PERFORM || $active);

foreach ($urls as $i => $url) {
    $res[$i] = curl_multi_getcontent($conn[$i]);
    curl_close($conn[$i]);
}

var_dump(curl_multi_info_read($mh));

?>

以上例程的输出类似于：

array(3) {
  ["msg"]=>
  int(1)
  ["result"]=>
  int(0)
  ["handle"]=>
  resource(5) of type (curl)
}
array(3) {
  ["msg"]=>
  int(1)
  ["result"]=>
  int(0)
  ["handle"]=>
  resource(7) of type (curl)
}
array(3) {
  ["msg"]=>
  int(1)
  ["result"]=>
  int(0)
  ["handle"]=>
  resource(6) of type (curl)
}
bool(false)

更新日志

版本 | 说明
5.2.0 | msgs_in_queue被加入。

参见

  • curl_multi_init() - 返回一个新cURL批处理句柄

curl_multi_getcontent
curl_multi_init
cURL 函数


返回一个新cURL批处理句柄

curl_multi_info_read
curl_multi_remove_handle
cURL 函数
PHP Manual

curl_multi_init

(PHP 5, PHP 7)

curl_multi_init — 返回一个新cURL批处理句柄

说明

resource curl_multi_init ( void )

允许并行地处理批处理cURL句柄。

参数

此函数没有参数。

返回值

成功时返回一个cURL批处理句柄，失败时返回FALSE。

范例

Example #1 curl_multi_init() example

这个范例将会创建2个cURL句柄，把它们加到批处理句柄，然后并行地运行它们。

<?php
// 创建一对cURL资源
$ch1 = curl_init();
$ch2 = curl_init();

// 设置URL和相应的选项
curl_setopt($ch1, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/");
curl_setopt($ch2, CURLOPT_HEADER, 0);

// 创建批处理cURL句柄
$mh = curl_multi_init();

// 增加2个句柄
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);

$running=null;
// 执行批处理句柄
do {
    usleep(10000);
    curl_multi_exec($mh,$running);
} while ($running > 0);

// 关闭全部句柄
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);

?>

参见

  • curl_init() - 初始化一个cURL会话
  • curl_multi_close() - 关闭一组cURL句柄

curl_multi_info_read
curl_multi_remove_handle
cURL 函数


移除curl批处理句柄资源中的某个句柄资源

curl_multi_init
curl_multi_select
cURL 函数
PHP Manual

curl_multi_remove_handle

(PHP 5, PHP 7)

curl_multi_remove_handle — 移除curl批处理句柄资源中的某个句柄资源

说明

int curl_multi_remove_handle ( resource $mh , resource $ch )

从给定的批处理句柄mh中移除ch句柄。当ch句柄被移除以后，仍然可以合法地用curl_exec()执行这个句柄。当正在移除的句柄正在被使用，在处理的过程中所有的传输任务会被终止。

参数

mh

由 curl_multi_init() 返回的 cURL 多个句柄。

ch

由 curl_init() 返回的 cURL 句柄。

返回值

成功时返回一个cURL句柄，失败时返回FALSE。

参见

  • curl_init() - 初始化一个cURL会话
  • curl_multi_init() - 返回一个新cURL批处理句柄
  • curl_multi_add_handle() - 向curl批处理会话中添加单独的curl句柄

curl_multi_init
curl_multi_select
cURL 函数


等待所有cURL批处理中的活动连接

curl_multi_remove_handle
curl_multi_setopt
cURL 函数
PHP Manual

curl_multi_select

(PHP 5, PHP 7)

curl_multi_select — 等待所有cURL批处理中的活动连接

说明

int curl_multi_select ( resource $mh [, float $timeout = 1.0 ] )

阻塞直到cURL批处理连接中有活动连接。

参数

mh

由 curl_multi_init() 返回的 cURL 多个句柄。

timeout

以秒为单位，等待响应的时间。

返回值

成功时返回描述符集合中描述符的数量。失败时，select失败时返回-1，否则返回超时(从底层的select系统调用).

参见

  • curl_multi_init() - 返回一个新cURL批处理句柄

curl_multi_remove_handle
curl_multi_setopt
cURL 函数


为 cURL 并行处理设置一个选项

curl_multi_select
curl_multi_strerror
cURL 函数
PHP Manual

curl_multi_setopt

(PHP 5 >= 5.5.0, PHP 7)

curl_multi_setopt — 为 cURL 并行处理设置一个选项

说明

bool curl_multi_setopt ( resource $mh , int $option , mixed $value )

Warning

本函数还未编写文档，仅有参数列表。

参数

mh

option

常量 CURLMOPT_* 之一。

value

将要设置给 option 的值。

在 option 参数为下列值时 value 需要为 int 类型：

Option 的值 | 将 value 设为
CURLMOPT_PIPELINING | 传入 1 来启用或 0 来禁用。 在并行处理时启用管道模式 将会尽可能地使用管线化的 HTTP （译注：HTTP长连接）来 传输，这意味着如果你提交第二个请求，这个请求将会使用 已经存在的链接，第二个请求将会被送入同一个链接的"管 道"中。
CURLMOPT_MAXCONNECTS | 传入一个数字来指定 libcurl 可以同时缓存的活跃链接的数量。默认值为 10。当缓存写满时， lincurl 将关闭较早创建的链接来创建新的链接。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

curl_multi_select
curl_multi_strerror
cURL 函数


返回字符串描述的错误代码

curl_multi_setopt
curl_pause
cURL 函数
PHP Manual

curl_multi_strerror

(PHP 5 >= 5.5.0, PHP 7)

curl_multi_strerror — 返回字符串描述的错误代码

说明

string curl_multi_strerror ( int $errornum )

返回一个用以描述所给 CURLM 错误代码所对应的错误信息。

参数

errornum

» CURLM 错误代码中的常量之一。

返回值

返回可用错误代码所对应的错误信息，否则返回 NULL 。

范例

Example #1 curl_multi_strerror() 函数的范例：

<?php
// Create cURL handles
$ch1 = curl_init("http://example.com"/);
$ch2 = curl_init("http://php.net/");

// Create a cURL multi handle
$mh = curl_multi_init();

// Add the handles to the multi handle
curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);

// Execute the multi handle
do {
    $status = curl_multi_exec($mh, $active);
    // Check for errors
    if($status > 0) {
        // Display error message
        echo "ERROR!\n " . curl_multi_strerror($status);
    }
} while ($status === CURLM_CALL_MULTI_PERFORM || $active);
?>

参见

  • curl_strerror() - 返回错误代码的字符串描述
  • » cURL error codes

curl_multi_setopt
curl_pause
cURL 函数


暂停和取消暂停一个连接。

curl_multi_strerror
curl_reset
cURL 函数
PHP Manual

curl_pause

(PHP 5 >= 5.5.0, PHP 7)

curl_pause — 暂停和取消暂停一个连接。

说明

int curl_pause ( resource $ch , int $bitmask )

Warning

本函数还未编写文档，仅有参数列表。

参数

ch

由 curl_init() 返回的 cURL 句柄。

bitmask

CURLPAUSE_* 常量之一。

返回值

返回一个错误代码 (如果没有错误则返回CURLE_OK常量)。

curl_multi_strerror
curl_reset
cURL 函数


重置一个 libcurl 会话句柄的所有的选项

curl_pause
curl_setopt_array
cURL 函数
PHP Manual

curl_reset

(PHP 5 >= 5.5.0, PHP 7)

curl_reset — 重置一个 libcurl 会话句柄的所有的选项

说明

void curl_reset ( resource $ch )

该函数将给定的 cURL 句柄所有选项重新设置为默认值。

参数

ch

由 curl_init() 返回的 cURL 句柄。

返回值

没有返回值。

范例

Example #1 curl_reset() 示例

<?php
// 创建一个url 句柄
$ch = curl_init();

// 设置 CURLOPT_USERAGENT 选项
curl_setopt($ch, CURLOPT_USERAGENT, "My test user-agent");

// 重置所有的预先设置的选项
curl_reset($ch);

// 发送 HTTP 请求
curl_setopt($ch, CURLOPT_URL, 'http://example.com/');
curl_exec($ch); // 预先设置的 user-agent 不会被发送，它已经被 curl_reset 重置掉了

// 关闭句柄
curl_close($ch);
?>

注释

Note:

curl_reset() also resets the URL given as the curl_init() parameter.

参见

  • curl_setopt() - 设置一个cURL传输选项

curl_pause
curl_setopt_array
cURL 函数


为cURL传输会话批量设置选项

curl_reset
curl_setopt
cURL 函数
PHP Manual

curl_setopt_array

(PHP 5 >= 5.1.3, PHP 7)

curl_setopt_array — 为cURL传输会话批量设置选项

说明

bool curl_setopt_array ( resource $ch , array $options )

为cURL传输会话批量设置选项。这个函数对于需要设置大量的cURL选项是非常有用的，不需要重复地调用curl_setopt()。

参数

ch

由 curl_init() 返回的 cURL 句柄。

options

一个array用来确定将被设置的选项及其值。数组的键值必须是一个有效的curl_setopt()常量或者是它们对等的整数值。

返回值

如果全部的选项都被成功设置，返回TRUE。如果一个选项不能被成功设置，马上返回FALSE，忽略其后的任何在options数组中的选项。

范例

Example #1 初始化一个新的cURL会话并抓取一个web页面

<?php
// 创建一个新cURL资源
$ch = curl_init();

// 设置URL和相应的选项
$options = array(CURLOPT_URL => 'http://www.example.com/',
                 CURLOPT_HEADER => false
                );

curl_setopt_array($ch, $options);

// 抓取URL并把它传递给浏览器
curl_exec($ch);

// 关闭cURL资源，并且释放系统资源
curl_close($ch);
?>

早于PHP 5.1.3这个函数可以做如下模拟：

Example #2 我们对curl_setopt_array()的等价实现

<?php
if (!function_exists('curl_setopt_array')) {
   function curl_setopt_array(&$ch, $curl_options)
   {
       foreach ($curl_options as $option => $value) {
           if (!curl_setopt($ch, $option, $value)) {
               return false;
           }
       }
       return true;
   }
}
?>

注释

Note:

就curl_setopt()来说，传递一个数组到CURLOPT_POST将会把数据以multipart/form-data的方式编码，然而传递一个URL-encoded字符串将会以application/x-www-form-urlencoded的方式对数据进行编码。

参见

  • curl_setopt() - 设置一个cURL传输选项

curl_reset
curl_setopt
cURL 函数


设置一个cURL传输选项

curl_setopt_array
curl_share_close
cURL 函数
PHP Manual

curl_setopt

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

curl_setopt — 设置一个cURL传输选项

说明

bool curl_setopt ( resource $ch , int $option , mixed $value )

为 cURL 会话句柄设置选项。

参数

ch

由 curl_init() 返回的 cURL 句柄。

option

需要设置的CURLOPT_XXX选项。

value

将设置在option选项上的值。

以下 option 参数的 value应该被设置成 bool 类型：

选项 | 将 value 设置为 | 备注
CURLOPT_AUTOREFERER | TRUE 时将根据 Location: 重定向时，自动设置 header 中的Referer:信息。
CURLOPT_BINARYTRANSFER | 设为 TRUE ，将在启用 CURLOPT_RETURNTRANSFER 时，返回原生的（Raw）输出。 | 从 PHP 5.1.3 开始，此选项不再有效果：使用 CURLOPT_RETURNTRANSFER 后总是会返回原生的（Raw）内容。
CURLOPT_COOKIESESSION | 设为 TRUE 时将开启新的一次 cookie 会话。它将强制 libcurl 忽略之前会话时存的其他 cookie。 libcurl 在默认状况下无论是否为会话，都会储存、加载所有 cookie。会话 cookie 是指没有过期时间，只存活在会话之中。
CURLOPT_CERTINFO | TRUE 将在安全传输时输出 SSL 证书信息到 STDERR。 | 在 cURL 7.19.1 中添加。 PHP 5.3.2 后有效。 需要开启 CURLOPT_VERBOSE 才有效。
CURLOPT_CONNECT_ONLY | TRUE 将让库执行所有需要的代理、验证、连接过程，但不传输数据。此选项用于 HTTP、SMTP 和 POP3。 | 在 7.15.2 中添加。 PHP 5.5.0 起有效。
CURLOPT_CRLF | 启用时将Unix的换行符转换成回车换行符。
CURLOPT_DNS_USE_GLOBAL_CACHE | TRUE 会启用一个全局的DNS缓存。此选项非线程安全的，默认已开启。
CURLOPT_FAILONERROR | 当 HTTP 状态码大于等于 400，TRUE 将将显示错误详情。 默认情况下将返回页面，忽略 HTTP 代码。
CURLOPT_SSL_FALSESTART | TRUE 开启 TLS False Start （一种 TLS 握手优化方式） | cURL 7.42.0 中添加。自 PHP 7.0.7 起有效。
CURLOPT_FILETIME | TRUE 时，会尝试获取远程文档中的修改时间信息。 信息可通过curl_getinfo()函数的CURLINFO_FILETIME 选项获取。
CURLOPT_FOLLOWLOCATION | TRUE 时将会根据服务器返回 HTTP 头中的 "Location: " 重定向。（注意：这是递归的，"Location: " 发送几次就重定向几次，除非设置了 CURLOPT_MAXREDIRS，限制最大重定向次数。）。
CURLOPT_FORBID_REUSE | TRUE 在完成交互以后强制明确的断开连接，不能在连接池中重用。
CURLOPT_FRESH_CONNECT | TRUE 强制获取一个新的连接，而不是缓存中的连接。
CURLOPT_FTP_USE_EPRT | TRUE 时，当 FTP 下载时，使用 EPRT (和 LPRT)命令。 设置为 FALSE 时禁用 EPRT 和 LPRT，仅仅使用PORT 命令。
CURLOPT_FTP_USE_EPSV | TRUE 时，在FTP传输过程中，回到 PASV 模式前，先尝试 EPSV 命令。设置为 FALSE 时禁用 EPSV。
CURLOPT_FTP_CREATE_MISSING_DIRS | TRUE 时，当 ftp 操作不存在的目录时将创建它。
CURLOPT_FTPAPPEND | TRUE 为追加写入文件，而不是覆盖。
CURLOPT_TCP_NODELAY | TRUE 时禁用 TCP 的 Nagle 算法，就是减少网络上的小包数量。 | PHP 5.2.1 有效，编译时需要 libcurl 7.11.2 及以上。
CURLOPT_FTPASCII | CURLOPT_TRANSFERTEXT 的别名。
CURLOPT_FTPLISTONLY | TRUE 时只列出 FTP 目录的名字。
CURLOPT_HEADER | 启用时会将头文件的信息作为数据流输出。
CURLINFO_HEADER_OUT | TRUE 时追踪句柄的请求字符串。 | 从 PHP 5.1.3 开始可用。CURLINFO_ 的前缀是有意的(intentional)。
CURLOPT_HTTPGET | TRUE 时会设置 HTTP 的 method 为 GET，由于默认是 GET，所以只有 method 被修改时才需要这个选项。
CURLOPT_HTTPPROXYTUNNEL | TRUE 会通过指定的 HTTP 代理来传输。
CURLOPT_MUTE | TRUE 时将完全静默，无论是何 cURL 函数。 | 在 cURL 7.15.5 中移出（可以使用 CURLOPT_RETURNTRANSFER 作为代替）
CURLOPT_NETRC | TRUE 时，在连接建立时，访问~/.netrc文件获取用户名和密码来连接远程站点。
CURLOPT_NOBODY | TRUE 时将不输出 BODY 部分。同时 Mehtod 变成了 HEAD。修改为 FALSE 时不会变成 GET。
CURLOPT_NOPROGRESS

TRUE 时关闭 cURL 的传输进度。

Note:

PHP 默认自动设置此选项为 TRUE，只有为了调试才需要改变设置。

CURLOPT_NOSIGNAL | TRUE 时忽略所有的 cURL 传递给 PHP 进行的信号。在 SAPI 多线程传输时此项被默认启用，所以超时选项仍能使用。 | cURL 7.10时被加入。
CURLOPT_PATH_AS_IS | TRUE 不处理 dot dot sequences （即 ../ ） | cURL 7.42.0 时被加入。 PHP 7.0.7 起有效。
CURLOPT_PIPEWAIT | TRUE 则等待 pipelining/multiplexing。 | cURL 7.43.0 时被加入。 PHP 7.0.7 起有效。
CURLOPT_POST | TRUE 时会发送 POST 请求，类型为：application/x-www-form-urlencoded，是 HTML 表单提交时最常见的一种。
CURLOPT_PUT | TRUE 时允许 HTTP 发送文件。要被 PUT 的文件必须在 CURLOPT_INFILE和CURLOPT_INFILESIZE 中设置。
CURLOPT_RETURNTRANSFER | TRUE 将curl_exec()获取的信息以字符串返回，而不是直接输出。
CURLOPT_SAFE_UPLOAD | TRUE 禁用 @ 前缀在 CURLOPT_POSTFIELDS 中发送文件。 意味着 @ 可以在字段中安全得使用了。 可使用 CURLFile 作为上传的代替。 | PHP 5.5.0 中添加，默认值 FALSE。 PHP 5.6.0 改默认值为 TRUE。
CURLOPT_SASL_IR | TRUE 开启，收到首包(first packet)后发送初始的响应(initial response)。 | cURL 7.31.10 中添加，自 PHP 7.0.7 起有效。
CURLOPT_SSL_ENABLE_ALPN | FALSE 禁用 SSL 握手中的 ALPN (如果 SSL 后端的 libcurl 内建支持) 用于协商到 http2。 | cURL 7.36.0 中增加， PHP 7.0.7 起有效。
CURLOPT_SSL_ENABLE_NPN | FALSE 禁用 SSL 握手中的 NPN(如果 SSL 后端的 libcurl 内建支持)，用于协商到 http2。 | cURL 7.36.0 中增加， PHP 7.0.7 起有效。
CURLOPT_SSL_VERIFYPEER | FALSE 禁止 cURL 验证对等证书（peer's certificate）。要验证的交换证书可以在 CURLOPT_CAINFO 选项中设置，或在 CURLOPT_CAPATH中设置证书目录。 | 自cURL 7.10开始默认为 TRUE。从 cURL 7.10开始默认绑定安装。
CURLOPT_SSL_VERIFYSTATUS | TRUE 验证证书状态。 | cURL 7.41.0 中添加， PHP 7.0.7 起有效。
CURLOPT_TCP_FASTOPEN | TRUE 开启 TCP Fast Open。 | cURL 7.49.0 中添加， PHP 7.0.7 起有效。
CURLOPT_TFTP_NO_OPTIONS | TRUE 不发送 TFTP 的 options 请求。 | 自 cURL 7.48.0 添加， PHP 7.0.7 起有效。
CURLOPT_TRANSFERTEXT | TRUE 对 FTP 传输使用 ASCII 模式。对于LDAP，它检索纯文本信息而非 HTML。在 Windows 系统上，系统不会把 STDOUT 设置成二进制 模式。
CURLOPT_UNRESTRICTED_AUTH | TRUE 在使用CURLOPT_FOLLOWLOCATION重定向 header 中的多个 location 时继续发送用户名和密码信息，哪怕主机名已改变。
CURLOPT_UPLOAD | TRUE 准备上传。
CURLOPT_VERBOSE | TRUE 会输出所有的信息，写入到STDERR，或在CURLOPT_STDERR中指定的文件。

以下 option的value应该被设置成 integer：

选项 | 设置value为 | 备注
CURLOPT_BUFFERSIZE | 每次读入的缓冲的尺寸。当然不保证每次都会完全填满这个尺寸。 | 在cURL 7.10中被加入。
CURLOPT_CLOSEPOLICY CURLCLOSEPOLICY_* 中的一个。

Note:

此选项已被废弃，它不会被实现，永远不会有效果啦。

PHP 5.6.0 中移除。
CURLOPT_CONNECTTIMEOUT | 在尝试连接时等待的秒数。设置为0，则无限等待。
CURLOPT_CONNECTTIMEOUT_MS | 尝试连接等待的时间，以毫秒为单位。设置为0，则无限等待。 如果 libcurl 编译时使用系统标准的名称解析器（ standard system name resolver），那部分的连接仍旧使用以秒计的超时解决方案，最小超时时间还是一秒钟。 | 在 cURL 7.16.2 中被加入。从 PHP 5.2.3 开始可用。
CURLOPT_DNS_CACHE_TIMEOUT | 设置在内存中缓存 DNS 的时间，默认为120秒（两分钟）。
CURLOPT_EXPECT_100_TIMEOUT_MS | 超时预计： 100毫秒内的 continue 响应 默认为 1000 毫秒。 | cURL 7.36.0 中添加，自 PHP 7.0.7 有效。
CURLOPT_FTPSSLAUTH | FTP验证方式（启用的时候）：CURLFTPAUTH_SSL (首先尝试SSL)，CURLFTPAUTH_TLS (首先尝试TLS)或CURLFTPAUTH_DEFAULT (让cURL 自个儿决定)。 | 在 cURL 7.12.2 中被加入。
CURLOPT_HEADEROPT | How to deal with headers. One of the following constants: CURLHEADER_UNIFIED: the headers specified in CURLOPT_HTTPHEADER will be used in requests both to servers and proxies. With this option enabled, CURLOPT_PROXYHEADER will not have any effect. CURLHEADER_SEPARATE: makes CURLOPT_HTTPHEADER headers only get sent to a server and not to a proxy. Proxy headers must be set with CURLOPT_PROXYHEADER to get used. Note that if a non-CONNECT request is sent to a proxy, libcurl will send both server headers and proxy headers. When doing CONNECT, libcurl will send CURLOPT_PROXYHEADER headers only to the proxy and then CURLOPT_HTTPHEADER headers only to the server. Defaults to CURLHEADER_SEPARATE as of cURL 7.42.1, and CURLHEADER_UNIFIED before. | Added in cURL 7.37.0. Available since PHP 7.0.7.
CURLOPT_HTTP_VERSION | CURL_HTTP_VERSION_NONE (默认值，让 cURL 自己判断使用哪个版本)，CURL_HTTP_VERSION_1_0 (强制使用 HTTP/1.0)或CURL_HTTP_VERSION_1_1 (强制使用 HTTP/1.1)。
CURLOPT_HTTPAUTH

使用的 HTTP 验证方法。选项有：CURLAUTH_BASIC、CURLAUTH_DIGEST、CURLAUTH_GSSNEGOTIATE、CURLAUTH_NTLM、CURLAUTH_ANY和CURLAUTH_ANYSAFE。

可以使用 | 位域(OR)操作符结合多个值，cURL 会让服务器选择受支持的方法，并选择最好的那个。

CURLAUTH_ANY是 CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM 的别名。

CURLAUTH_ANYSAFE 是 CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM 的别名。

CURLOPT_INFILESIZE | 希望传给远程站点的文件尺寸，字节(byte)为单位。 注意无法用这个选项阻止 libcurl 发送更多的数据，确切发送什么取决于 CURLOPT_READFUNCTION。
CURLOPT_LOW_SPEED_LIMIT | 传输速度，每秒字节（bytes）数，根据CURLOPT_LOW_SPEED_TIME秒数统计是否因太慢而取消传输。
CURLOPT_LOW_SPEED_TIME | 当传输速度小于CURLOPT_LOW_SPEED_LIMIT时(bytes/sec)，PHP会判断是否因太慢而取消传输。
CURLOPT_MAXCONNECTS | 允许的最大连接数量。达到限制时，会通过CURLOPT_CLOSEPOLICY决定应该关闭哪些连接。
CURLOPT_MAXREDIRS | 指定最多的 HTTP 重定向次数，这个选项是和CURLOPT_FOLLOWLOCATION一起使用的。
CURLOPT_PORT | 用来指定连接端口。
CURLOPT_POSTREDIR | 位掩码， 1 (301 永久重定向), 2 (302 Found) 和 4 (303 See Other) 设置 CURLOPT_FOLLOWLOCATION 时，什么情况下需要再次 HTTP POST 到重定向网址。 | cURL 7.19.1 中添加，PHP 5.3.2 开始可用。
CURLOPT_PROTOCOLS

CURLPROTO_*的位掩码。 启用时，会限制 libcurl 在传输过程中可使用哪些协议。 这将允许你在编译libcurl时支持众多协议，但是限制只用允许的子集。默认 libcurl 将使用所有支持的协议。 参见CURLOPT_REDIR_PROTOCOLS。

可用的协议选项为：CURLPROTO_HTTP、CURLPROTO_HTTPS、CURLPROTO_FTP、CURLPROTO_FTPS、CURLPROTO_SCP、CURLPROTO_SFTP、CURLPROTO_TELNET、CURLPROTO_LDAP、CURLPROTO_LDAPS、CURLPROTO_DICT、CURLPROTO_FILE、CURLPROTO_TFTP、CURLPROTO_ALL

在 cURL 7.19.4 中被加入。
CURLOPT_PROXYAUTH | HTTP 代理连接的验证方式。使用在CURLOPT_HTTPAUTH中的位掩码。 当前仅仅支持 CURLAUTH_BASIC和CURLAUTH_NTLM。 | 在 cURL 7.10.7 中被加入。
CURLOPT_PROXYPORT | 代理服务器的端口。端口也可以在CURLOPT_PROXY中设置。
CURLOPT_PROXYTYPE | 可以是 CURLPROXY_HTTP (默认值) CURLPROXY_SOCKS4、 CURLPROXY_SOCKS5、 CURLPROXY_SOCKS4A 或 CURLPROXY_SOCKS5_HOSTNAME。 | 在 cURL 7.10 中被加入。
CURLOPT_REDIR_PROTOCOLS | CURLPROTO_* 值的位掩码。如果被启用，位掩码会限制 libcurl 在 CURLOPT_FOLLOWLOCATION开启时，使用的协议。 默认允许除 FILE 和 SCP 外所有协议。 这和 7.19.4 前的版本无条件支持所有支持的协议不同。关于协议常量，请参照CURLOPT_PROTOCOLS。 | 在 cURL 7.19.4 中被加入。
CURLOPT_RESUME_FROM | 在恢复传输时，传递字节为单位的偏移量（用来断点续传）。
CURLOPT_SSL_OPTIONS | Set SSL behavior options, which is a bitmask of any of the following constants: CURLSSLOPT_ALLOW_BEAST: do not attempt to use any workarounds for a security flaw in the SSL3 and TLS1.0 protocols. CURLSSLOPT_NO_REVOKE: disable certificate revocation checks for those SSL backends where such behavior is present. | Added in cURL 7.25.0. Available since PHP 7.0.7.
CURLOPT_SSL_VERIFYHOST | 设置为 1 是检查服务器SSL证书中是否存在一个公用名(common name)。译者注：公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain)。 设置成 2，会检查公用名是否存在，并且是否与提供的主机名匹配。 0 为不检查名称。 在生产环境中，这个值应该是 2（默认值）。 | 值 1 的支持在 cURL 7.28.1 中被删除了。
CURLOPT_SSLVERSION CURL_SSLVERSION_DEFAULT (0), CURL_SSLVERSION_TLSv1 (1), CURL_SSLVERSION_SSLv2 (2), CURL_SSLVERSION_SSLv3 (3), CURL_SSLVERSION_TLSv1_0 (4), CURL_SSLVERSION_TLSv1_1 (5) ， CURL_SSLVERSION_TLSv1_2 (6) 中的其中一个。

Note:

你最好别设置这个值，让它使用默认值。 设置为 2 或 3 比较危险，在 SSLv2 和 SSLv3 中有弱点存在。

CURLOPT_STREAM_WEIGHT | 设置 stream weight 数值 ( 1 和 256 之间的数字). | cURL 7.46.0 中添加，自 PHP 7.0.7 起有效。
CURLOPT_TIMECONDITION | 设置如何对待 CURLOPT_TIMEVALUE。 使用 CURL_TIMECOND_IFMODSINCE，仅在页面 CURLOPT_TIMEVALUE 之后修改，才返回页面。没有修改则返回 "304 Not Modified" 头，假设设置了 CURLOPT_HEADER 为 TRUE。CURL_TIMECOND_IFUNMODSINCE则起相反的效果。 默认为 CURL_TIMECOND_IFMODSINCE。
CURLOPT_TIMEOUT | 允许 cURL 函数执行的最长秒数。
CURLOPT_TIMEOUT_MS | 设置cURL允许执行的最长毫秒数。 如果 libcurl 编译时使用系统标准的名称解析器（ standard system name resolver），那部分的连接仍旧使用以秒计的超时解决方案，最小超时时间还是一秒钟。 | 在 cURL 7.16.2 中被加入。从 PHP 5.2.3 起可使用。
CURLOPT_TIMEVALUE | 秒数，从 1970年1月1日开始。这个时间会被 CURLOPT_TIMECONDITION使。默认使用CURL_TIMECOND_IFMODSINCE。
CURLOPT_MAX_RECV_SPEED_LARGE | 如果下载速度超过了此速度(以每秒字节数来统计) ，即传输过程中累计的平均数，传输就会降速到这个参数的值。默认不限速。 | cURL 7.15.5 中添加， PHP 5.4.0 有效。
CURLOPT_MAX_SEND_SPEED_LARGE | 如果上传的速度超过了此速度(以每秒字节数来统计)，即传输过程中累计的平均数 ，传输就会降速到这个参数的值。默认不限速。 | cURL 7.15.5 中添加， PHP 5.4.0 有效。
CURLOPT_SSH_AUTH_TYPES | A bitmask consisting of one or more of CURLSSH_AUTH_PUBLICKEY, CURLSSH_AUTH_PASSWORD, CURLSSH_AUTH_HOST, CURLSSH_AUTH_KEYBOARD. Set to CURLSSH_AUTH_ANY to let libcurl pick one. | cURL 7.16.1 中添加。
CURLOPT_IPRESOLVE | 允许程序选择想要解析的 IP 地址类别。只有在地址有多种 ip 类别的时候才能用，可以的值有： CURL_IPRESOLVE_WHATEVER、 CURL_IPRESOLVE_V4、 CURL_IPRESOLVE_V6，默认是 CURL_IPRESOLVE_WHATEVER。 | cURL 7.10.8 中添加。
CURLOPT_FTP_FILEMETHOD | 告诉 curl 使用哪种方式来获取 FTP(s) 服务器上的文件。可能的值有： CURLFTPMETHOD_MULTICWD、 CURLFTPMETHOD_NOCWD 和 CURLFTPMETHOD_SINGLECWD。 | cURL 7.15.1 中添加， PHP 5.3.0 起有效。

对于下面的这些option，value应该被设置成 string：

选项 | 设置的value | 备注
CURLOPT_CAINFO | 一个保存着1个或多个用来让服务端验证的证书的文件名。这个参数仅仅在和CURLOPT_SSL_VERIFYPEER一起使用时才有意义。 . | 可能需要绝对路径。
CURLOPT_CAPATH | 一个保存着多个CA证书的目录。这个选项是和CURLOPT_SSL_VERIFYPEER一起使用的。
CURLOPT_COOKIE | 设定 HTTP 请求中"Cookie: "部分的内容。多个 cookie 用分号分隔，分号后带一个空格(例如， "fruit=apple; colour=red")。
CURLOPT_COOKIEFILE | 包含 cookie 数据的文件名，cookie 文件的格式可以是 Netscape 格式，或者只是纯 HTTP 头部风格，存入文件。如果文件名是空的，不会加载 cookie，但 cookie 的处理仍旧启用。
CURLOPT_COOKIEJAR | 连接结束后，比如，调用 curl_close 后，保存 cookie 信息的文件。
CURLOPT_CUSTOMREQUEST

HTTP 请求时，使用自定义的 Method 来代替"GET"或"HEAD"。对 "DELETE" 或者其他更隐蔽的 HTTP 请求有用。 有效值如 "GET"，"POST"，"CONNECT"等等；也就是说，不要在这里输入整行 HTTP 请求。例如输入"GET /index.html HTTP/1.0\r\n\r\n"是不正确的。

Note:

不确定服务器支持这个自定义方法则不要使用它。

CURLOPT_DEFAULT_PROTOCOL

URL不带协议的时候，使用的默认协议。

cURL 7.45.0 中添加，自 PHP 7.0.7 起有效。
CURLOPT_DNS_INTERFACE

Set the name of the network interface that the DNS resolver should bind to. This must be an interface name (not an address).

Added in cURL 7.33.0. Available since PHP 7.0.7.
CURLOPT_DNS_LOCAL_IP4

Set the local IPv4 address that the resolver should bind to. The argument should contain a single numerical IPv4 address as a string.

Added in cURL 7.33.0. Available since PHP 7.0.7.
CURLOPT_DNS_LOCAL_IP6

Set the local IPv6 address that the resolver should bind to. The argument should contain a single numerical IPv6 address as a string.

Added in cURL 7.33.0. Available since PHP 7.0.7.
CURLOPT_EGDSOCKET | 类似CURLOPT_RANDOM_FILE，除了一个Entropy Gathering Daemon套接字。
CURLOPT_ENCODING | HTTP请求头中"Accept-Encoding: "的值。 这使得能够解码响应的内容。 支持的编码有"identity"，"deflate"和"gzip"。如果为空字符串""，会发送所有支持的编码类型。 | 在 cURL 7.10 中被加入。
CURLOPT_FTPPORT | 这个值将被用来获取供FTP"PORT"指令所需要的IP地址。 "PORT" 指令告诉远程服务器连接到我们指定的IP地址。这个字符串可以是纯文本的IP地址、主机名、一个网络接口名（UNIX下）或者只是一个'-'来使用默认的 IP 地址。
CURLOPT_INTERFACE | 发送的网络接口（interface），可以是一个接口名、IP 地址或者是一个主机名。
CURLOPT_KEYPASSWD | 使用 CURLOPT_SSLKEY 或 CURLOPT_SSH_PRIVATE_KEYFILE 私钥时候的密码。 | 在 cURL 7.16.1 中添加。
CURLOPT_KRB4LEVEL | KRB4 (Kerberos 4) 安全级别。下面的任何值都是有效的(从低到高的顺序)："clear"、"safe"、"confidential"、"private".。如果字符串以上这些，将使用"private"。 这个选项设置为 NULL 时将禁用 KRB4 安全认证。目前 KRB4 安全认证只能用于 FTP 传输。
CURLOPT_LOGIN_OPTIONS | Can be used to set protocol specific login options, such as the preferred authentication mechanism via "AUTH=NTLM" or "AUTH=*", and should be used in conjunction with the CURLOPT_USERNAME option. | Added in cURL 7.34.0. Available since PHP 7.0.7.
CURLOPT_PINNEDPUBLICKEY | Set the pinned public key. The string can be the file name of your pinned public key. The file format expected is "PEM" or "DER". The string can also be any number of base64 encoded sha256 hashes preceded by "sha256//" and separated by ";". | Added in cURL 7.39.0. Available since PHP 7.0.7.
CURLOPT_POSTFIELDS | 全部数据使用HTTP协议中的 "POST" 操作来发送。 要发送文件，在文件名前面加上@前缀并使用完整路径。 文件类型可在文件名后以 ';type=mimetype' 的格式指定。 这个参数可以是 urlencoded 后的字符串，类似'para1=val1&para2=val2&...'，也可以使用一个以字段名为键值，字段数据为值的数组。 如果value是一个数组，Content-Type头将会被设置成multipart/form-data。 从 PHP 5.2.0 开始，使用 @ 前缀传递文件时，value 必须是个数组。 从 PHP 5.5.0 开始, @ 前缀已被废弃，文件可通过 CURLFile 发送。 设置 CURLOPT_SAFE_UPLOAD 为 TRUE 可禁用 @ 前缀发送文件，以增加安全性。
CURLOPT_PRIVATE | Any data that should be associated with this cURL handle. This data can subsequently be retrieved with the CURLINFO_PRIVATE option of curl_getinfo(). cURL does nothing with this data. When using a cURL multi handle, this private data is typically a unique key to identify a standard cURL handle. | Added in cURL 7.10.3.
CURLOPT_PROXY | HTTP 代理通道。
CURLOPT_PROXY_SERVICE_NAME | 代理验证服务的名称。 | cURL 7.34.0 中添加，PHP 7.0.7 起有效。
CURLOPT_PROXYUSERPWD | 一个用来连接到代理的"[username]:[password]"格式的字符串。
CURLOPT_RANDOM_FILE | 一个被用来生成 SSL 随机数种子的文件名。
CURLOPT_RANGE | 以"X-Y"的形式，其中X和Y都是可选项获取数据的范围，以字节计。HTTP传输线程也支持几个这样的重复项中间用逗号分隔如"X-Y,N-M"。
CURLOPT_REFERER | 在HTTP请求头中"Referer: "的内容。
CURLOPT_SERVICE_NAME | 验证服务的名称 | cURL 7.43.0 起添加，自 PHP 7.0.7 有效。
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 | 包含 32 位长的 16 进制数值。这个字符串应该是远程主机公钥（public key） 的 MD5 校验值。在不匹配的时候 libcurl 会拒绝连接。 此选项仅用于 SCP 和 SFTP 的传输。 | cURL 7.17.1 中添加。
CURLOPT_SSH_PUBLIC_KEYFILE | The file name for your public key. If not used, libcurl defaults to $HOME/.ssh/id_dsa.pub if the HOME environment variable is set, and just "id_dsa.pub" in the current directory if HOME is not set. | Added in cURL 7.16.1.
CURLOPT_SSH_PRIVATE_KEYFILE | The file name for your private key. If not used, libcurl defaults to $HOME/.ssh/id_dsa if the HOME environment variable is set, and just "id_dsa" in the current directory if HOME is not set. If the file is password-protected, set the password with CURLOPT_KEYPASSWD. | Added in cURL 7.16.1.
CURLOPT_SSL_CIPHER_LIST | 一个SSL的加密算法列表。例如RC4-SHA和TLSv1都是可用的加密列表。
CURLOPT_SSLCERT | 一个包含 PEM 格式证书的文件名。
CURLOPT_SSLCERTPASSWD | 使用CURLOPT_SSLCERT证书需要的密码。
CURLOPT_SSLCERTTYPE | 证书的类型。支持的格式有"PEM" (默认值), "DER"和"ENG"。 | 在 cURL 7.9.3中 被加入。
CURLOPT_SSLENGINE | 用来在CURLOPT_SSLKEY中指定的SSL私钥的加密引擎变量。
CURLOPT_SSLENGINE_DEFAULT | 用来做非对称加密操作的变量。
CURLOPT_SSLKEY | 包含 SSL 私钥的文件名。
CURLOPT_SSLKEYPASSWD

在 CURLOPT_SSLKEY中指定了的SSL私钥的密码。

Note:

由于这个选项包含了敏感的密码信息，记得保证这个PHP脚本的安全。

CURLOPT_SSLKEYTYPE | CURLOPT_SSLKEY中规定的私钥的加密类型，支持的密钥类型为"PEM"(默认值)、"DER"和"ENG"。
CURLOPT_UNIX_SOCKET_PATH | 使用 Unix 套接字作为连接，并用指定的 string 作为路径。 | cURL 7.40.0 中添加， PHP 7.0.7 起有效。
CURLOPT_URL | 需要获取的 URL 地址，也可以在curl_init() 初始化会话的时候。
CURLOPT_USERAGENT | 在HTTP请求中包含一个"User-Agent: "头的字符串。
CURLOPT_USERNAME | 验证中使用的用户名。 | cURL 7.19.1 中添加，PHP 5.5.0 起有效。
CURLOPT_USERPWD | 传递一个连接中需要的用户名和密码，格式为："[username]:[password]"。
CURLOPT_XOAUTH2_BEARER | 指定 OAuth 2.0 access token。 | cURL 7.33.0 中添加，自 PHP 7.0.7 添加。

以下option，value应该被设置成数组：

选项 | 可选value值 | 备注
CURLOPT_CONNECT_TO | 连接到指定的主机和端口，替换 URL 中的主机和端口。接受指定字符串格式的数组： HOST:PORT:CONNECT-TO-HOST:CONNECT-TO-PORT。 | cURL 7.49.0 中添加， PHP 7.0.7 起有效。
CURLOPT_HTTP200ALIASES | HTTP 200 响应码数组，数组中的响应码被认为是正确的响应，而非错误。 | 在 cURL 7.10.3 中被加入。
CURLOPT_HTTPHEADER | 设置 HTTP 头字段的数组。格式： array('Content-type: text/plain', 'Content-length: 100')
CURLOPT_POSTQUOTE | 在 FTP 请求执行完成后，在服务器上执行的一组array格式的 FTP 命令。
CURLOPT_PROXYHEADER | 传给代理的自定义 HTTP 头。 | cURL 7.37.0 中添加，自 PHP 7.0.7 添加。
CURLOPT_QUOTE | 一组先于 FTP 请求的在服务器上执行的FTP命令。

以下 option，value应该被设置成流资源 （例如使用fopen()）：

选项 | 可选value值
CURLOPT_FILE | 设置输出文件，默认为STDOUT (浏览器)。
CURLOPT_INFILE | 上传文件时需要读取的文件。
CURLOPT_STDERR | 错误输出的地址，取代默认的STDERR。
CURLOPT_WRITEHEADER | 设置 header 部分内容的写入的文件地址。

以下option 的 value应该是有效的函数或者闭包：

选项 | value值
CURLOPT_HEADERFUNCTION | 设置一个回调函数，这个函数有两个参数，第一个是cURL的资源句柄，第二个是输出的 header 数据。header数据的输出必须依赖这个函数，返回已写入的数据大小。
CURLOPT_PASSWDFUNCTION | 设置一个回调函数，有三个参数，第一个是cURL的资源句柄，第二个是一个密码提示符，第三个参数是密码长度允许的最大值。返回密码的值。
CURLOPT_PROGRESSFUNCTION

设置一个回调函数，有五个参数，第一个是cURL的资源句柄，第二个是预计要下载的总字节（bytes）数。第三个是目前下载的字节数，第四个是预计传输中总上传字节数，第五个是目前上传的字节数。

Note:

只有设置 CURLOPT_NOPROGRESS 选项为 FALSE 时才会调用这个回调函数。

返回非零值将中断传输。 传输将设置 CURLE_ABORTED_BY_CALLBACK 错误。

CURLOPT_READFUNCTION | 回调函数名。该函数应接受三个参数。第一个是 cURL resource；第二个是通过选项 CURLOPT_INFILE 传给 cURL 的 stream resource；第三个参数是最大可以读取的数据的数量。回 调函数必须返回一个字符串，长度小于或等于请求的数据量（第三个参数）。一般从传入的 stream resource 读取。返回空字符串作为 EOF（文件结束） 信号。
CURLOPT_WRITEFUNCTION | 回调函数名。该函数应接受两个参数。第一个是 cURL resource；第二个是要写入的数据字符串。数 据必须在函数中被保存。 函数必须准确返回写入数据的字节数，否则传输会被一个错误所中 断。

其他值：

Option | 设置 value 为
CURLOPT_SHARE | curl_share_init() 返回的结果。 使 cURL 可以处理共享句柄里的数据。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
7.0.7 | 引入 CURL_HTTP_VERSION_2、 CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE、 CURL_HTTP_VERSION_2TLS、 CURL_REDIR_POST_301、 CURL_REDIR_POST_302、 CURL_REDIR_POST_303、 CURL_REDIR_POST_ALL、 CURL_VERSION_KERBEROS5、 CURL_VERSION_PSL、 CURL_VERSION_UNIX_SOCKETS、 CURLAUTH_NEGOTIATE、 CURLAUTH_NTLM_WB、 CURLFTP_CREATE_DIR、 CURLFTP_CREATE_DIR_NONE、 CURLFTP_CREATE_DIR_RETRY、 CURLHEADER_SEPARATE、 CURLHEADER_UNIFIED、 CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE、 CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE、 CURLMOPT_MAX_HOST_CONNECTIONS、 CURLMOPT_MAX_PIPELINE_LENGTH、 CURLMOPT_MAX_TOTAL_CONNECTIONS、 CURLOPT_CONNECT_TO、 CURLOPT_DEFAULT_PROTOCOL、 CURLOPT_DNS_INTERFACE、 CURLOPT_DNS_LOCAL_IP4、 CURLOPT_DNS_LOCAL_IP6、 CURLOPT_EXPECT_100_TIMEOUT_MS、 CURLOPT_HEADEROPT、 CURLOPT_LOGIN_OPTIONS、 CURLOPT_PATH_AS_IS、 CURLOPT_PINNEDPUBLICKEY、 CURLOPT_PIPEWAIT、 CURLOPT_PROXY_SERVICE_NAME、 CURLOPT_PROXYHEADER、 CURLOPT_SASL_IR、 CURLOPT_SERVICE_NAME、 CURLOPT_SSL_ENABLE_ALPN、 CURLOPT_SSL_ENABLE_NPN、 CURLOPT_SSL_FALSESTART、 CURLOPT_SSL_VERIFYSTATUS、 CURLOPT_STREAM_WEIGHT、 CURLOPT_TCP_FASTOPEN、 CURLOPT_TFTP_NO_OPTIONS、 CURLOPT_UNIX_SOCKET_PATH、 CURLOPT_XOAUTH2_BEARER、 CURLPROTO_SMB、 CURLPROTO_SMBS、 CURLPROXY_HTTP_1_0、 CURLSSH_AUTH_AGENT 和 CURLSSLOPT_NO_REVOKE。
5.6.0 | 默认 CURLOPT_SAFE_UPLOAD为 TRUE 。
5.6.0 | 移出 CURLOPT_CLOSEPOLICY和相关的值。
5.5.0 | 添加 cURL 资源作为 CURLOPT_PROGRESSFUNCTION 回调函数的第一个参数。
5.5.0 | 引入 CURLOPT_SHARE。
5.3.0 | 引入 CURLOPT_PROGRESSFUNCTION。
5.2.10 | 引入 CURLOPT_PROTOCOLS, and CURLOPT_REDIR_PROTOCOLS.
5.2.4 | 引入了 CURLOPT_PRIVATE。
5.1.0 | 引入 CURLOPT_AUTOREFERER, CURLOPT_BINARYTRANSFER, CURLOPT_FTPSSLAUTH, CURLOPT_PROXYAUTH, and CURLOPT_TIMECONDITION.
5.0.0 | 引入 CURLOPT_FTP_USE_EPRT, CURLOPT_NOSIGNAL, CURLOPT_UNRESTRICTED_AUTH, CURLOPT_BUFFERSIZE, CURLOPT_HTTPAUTH, CURLOPT_PROXYPORT, CURLOPT_PROXYTYPE, CURLOPT_SSLCERTTYPE, and CURLOPT_HTTP200ALIASES.

范例

Example #1 初始化一个新的cURL会话并获取一个网页

<?php
// 创建一个新cURL资源
$ch = curl_init();

// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, false);

// 抓取URL并把它传递给浏览器
curl_exec($ch);

//关闭cURL资源，并且释放系统资源
curl_close($ch);
?>

Example #2 上传文件 (PHP 5.5.0 后被废弃)

<?php

/* http://localhost/upload.php:
print_r($_POST);
print_r($_FILES);
*/

$ch = curl_init();

$data = array('name' => 'Foo', 'file' => '@/home/user/test.png');

curl_setopt($ch, CURLOPT_URL, 'http://localhost/upload.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false); //  PHP 5.6.0 后必须开启
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_exec($ch);
?>

以上例程会输出：

Array
(
    [name] => Foo
)
Array
(
    [file] => Array
        (
            [name] => test.png
            [type] => image/png
            [tmp_name] => /tmp/phpcpjNeQ
            [error] => 0
            [size] => 279
        )

)

注释

Note:

传递一个数组到CURLOPT_POSTFIELDS，cURL会把数据编码成 multipart/form-data，而然传递一个URL-encoded字符串时，数据会被编码成 application/x-www-form-urlencoded。

参见

  • curl_setopt_array() - 为cURL传输会话批量设置选项

curl_setopt_array
curl_share_close
cURL 函数


关闭 cURL 共享句柄

curl_setopt
curl_share_init
cURL 函数
PHP Manual

curl_share_close

(PHP 5 >= 5.5.0, PHP 7)

curl_share_close — 关闭 cURL 共享句柄

说明

void curl_share_close ( resource $sh )

关闭一个 cURL 共享句柄并且释放所有的资源。

参数

sh

由curl_share_init()创建的 cURL 共享句柄。

返回值

没有返回值。

范例

Example #1 curl_share_setopt() 函数范例：

以下范例将会创建一个 cURL 共享句柄，并且往其中添加两个 cURL 句柄，最后共享这两个 cURL 句柄的 cookie 数据运行。

<?php
// Create cURL share handle and set it to share cookie data
$sh = curl_share_init();
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);

// Initialize the first cURL handle and assign the share handle to it
$ch1 = curl_init("http://example.com/");
curl_setopt($ch1, CURLOPT_SHARE, $sh);

// Execute the first cURL handle
curl_exec($ch1);

// Initialize the second cURL handle and assign the share handle to it
$ch2 = curl_init("http://php.net/");
curl_setopt($ch2, CURLOPT_SHARE, $sh);

// Execute the second cURL handle
//  all cookies from $ch1 handle are shared with $ch2 handle
curl_exec($ch2);

// Close the cURL share handle
curl_share_close($sh);

// Close the cURL handles
curl_close($ch1);
curl_close($ch2);
?>

参见

  • curl_share_init() - 初始化一个 cURL 共享句柄。

curl_setopt
curl_share_init
cURL 函数


初始化一个 cURL 共享句柄。

curl_share_close
curl_share_setopt
cURL 函数
PHP Manual

curl_share_init

(PHP 5 >= 5.5.0, PHP 7)

curl_share_init — 初始化一个 cURL 共享句柄。

说明

resource curl_share_init ( void )

运行在 cURL 句柄之间共享数据。

参数

此函数没有参数。

返回值

返回类型为"cURL 共享句柄"的资源。

范例

Example #1 curl_share_init() 函数的范例：

以下范例将会创建一个 cURL 共享句柄，并且往其中添加两个 cURL 句柄，最后用共享的 cookie 数据运行它们。

<?php
// 创建 cURL 共享句柄，并设置共享 cookie 数据
$sh = curl_share_init();
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);

// 初始化第一个 cURL 句柄，并将它设置到共享句柄
$ch1 = curl_init("http://example.com/");
curl_setopt($ch1, CURLOPT_SHARE, $sh);

// 执行第一个 cURL 句柄
curl_exec($ch1);

// 初始化第二个 cURL 句柄，并将它设置到共享句柄
$ch2 = curl_init("http://php.net/");
curl_setopt($ch2, CURLOPT_SHARE, $sh);

// 执行第二个 cURL 句柄
//  all cookies from $ch1 handle are shared with $ch2 handle
curl_exec($ch2);

// 关闭 cURL 共享句柄
curl_share_close($sh);

// 关闭 cURL 共享句柄
curl_close($ch1);
curl_close($ch2);
?>

参见

  • curl_share_setopt() - 为 cURL 共享句柄设置选项。
  • curl_share_close() - 关闭 cURL 共享句柄

curl_share_close
curl_share_setopt
cURL 函数


为 cURL 共享句柄设置选项。

curl_share_init
curl_strerror
cURL 函数
PHP Manual

curl_share_setopt

(PHP 5 >= 5.5.0, PHP 7)

curl_share_setopt — 为 cURL 共享句柄设置选项。

说明

bool curl_share_setopt ( resource $sh , int $option , string $value )

为给定的 cURL 共享句柄设置一个选项。

参数

sh

一个由curl_share_init()函数返回的 cURL 共享句柄。

option

Option | Description
CURLSHOPT_SHARE | 指定要共享的数据类型。
CURLSHOPT_UNSHARE | 指定不再共享的数据类型。

value

Value | Description
CURL_LOCK_DATA_COOKIE | 共享 cookie 数据。
CURL_LOCK_DATA_DNS | 共享 DNS 缓存。注意，当你使用 cURL 多句柄时，默认所有添加在同一个多句柄的句柄都将会共享 DNS 缓存。
CURL_LOCK_DATA_SSL_SESSION | 共享 SSL 的 session ID, 在重连同样的服务器时减少 SSL 握手时间。注意，SSL 的 session ID 在同一个的句柄中默认是重复使用的。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 curl_share_setopt() 函数的范例：

以下范例将会创建一个 cURL 共享句柄，并且往其中添加两个 cURL 句柄，最后共享这两个 cURL 句柄的 cookie 数据运行。

<?php
// Create cURL share handle and set it to share cookie data
$sh = curl_share_init();
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);

// Initialize the first cURL handle and assign the share handle to it
$ch1 = curl_init("http://example.com/");
curl_setopt($ch1, CURLOPT_SHARE, $sh);

// Execute the first cURL handle
curl_exec($ch1);

// Initialize the second cURL handle and assign the share handle to it
$ch2 = curl_init("http://php.net/");
curl_setopt($ch2, CURLOPT_SHARE, $sh);

// Execute the second cURL handle
//  all cookies from $ch1 handle are shared with $ch2 handle
curl_exec($ch2);

// Close the cURL share handle
curl_share_close($sh);

// Close the cURL handles
curl_close($ch1);
curl_close($ch2);
?>

curl_share_init
curl_strerror
cURL 函数


返回错误代码的字符串描述

curl_share_setopt
curl_unescape
cURL 函数
PHP Manual

curl_strerror

(PHP 5 >= 5.5.0, PHP 7)

curl_strerror — 返回错误代码的字符串描述

说明

string curl_strerror ( int $errornum )

返回文本错误信息，解释了指定的错误代码。

参数

errornum

» cURL 错误代码中的常量之一。

返回值

返回错误信息描述，无效的错误代码返回 NULL 。

范例

Example #1 curl_errno() 函数的范例：

<?php
// Create a curl handle with a mispelled protocol in URL
$ch = curl_init("htp://example.com/");

// Send request
curl_exec($ch);

// Check for errors and display the error message
if($errno = curl_errno($ch)) {
    $error_message = curl_strerror($errno);
    echo "cURL error ({$errno}):\n {$error_message}";
}

// Close the handle
curl_close($ch);
?>

以上例程会输出：

cURL error (1):
 Unsupported protocol

参见

  • curl_errno() - 返回最后一次的错误号
  • curl_error() - 返回一个保护当前会话最近一次错误的字符串
  • » Curl error codes

curl_share_setopt
curl_unescape
cURL 函数


解码给定的 URL 编码的字符串

curl_strerror
curl_version
cURL 函数
PHP Manual

curl_unescape

(PHP 5 >= 5.5.0, PHP 7)

curl_unescape — 解码给定的 URL 编码的字符串

说明

string curl_unescape ( resource $ch , string $str )

该函数解码给定的 URL 编码的字符串。

参数

ch

由 curl_init() 返回的 cURL 句柄。

str

需要解码的 URL 编码字符串

返回值

返回解码后的字符串 或者在失败时返回 FALSE。

范例

Example #1 curl_escape() 示例

<?php
// 创建一个 curl 句柄
$ch = curl_init('http://example.com/redirect.php');

// 发送 HTTP 请求并且遵循重定向
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_exec($ch);

// 获取最后的有效 URL
$effective_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
// 结果： "http://example.com/show_location.php?loc=M%C3%BCnchen"

// 解码这个 URL
$effective_url_decoded = curl_unescape($ch, $effective_url);
// "http://example.com/show_location.php?loc=München"

// 关闭句柄
curl_close($ch);
?>

注释

Note:

curl_unescape() 不会将加号 (+) 解码成空格。而 urldecode() 会。

参见

  • curl_escape() - 使用 URL 编码给定的字符串
  • urlencode() - 编码 URL 字符串
  • urldecode() - 解码已编码的 URL 字符串
  • rawurlencode() - 按照 RFC 3986 对 URL 进行编码
  • rawurldecode() - 对已编码的 URL 字符串进行解码

curl_strerror
curl_version
cURL 函数


获取cURL版本信息

curl_unescape
CURLFile
cURL 函数
PHP Manual

curl_version

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

curl_version — 获取cURL版本信息

说明

array curl_version ([ int $age = CURLVERSION_NOW ] )

返回关于cURL的版本信息。

参数

age

返回值

返回一个相关的数组包含如下元素：

Indice | 值描述
version_number | cURL 24位版本号
version | cURL 版本号，字符串形式
ssl_version_number | OpenSSL 24 位版本号
ssl_version | OpenSSL 版本号，字符串形式
libz_version | zlib 版本号，字符串形式
host | 关于编译cURL主机的信息
age |
features | 一个CURL_VERSION_XXX常量的位掩码
protocols | 一个cURL支持的协议名字的数组

范例

Example #1 curl_version() example

这个范例将会检查当前cURL版本使用curl_version()返回的'features'位掩码中哪些特性是可用的。

<?php
// 获取cURL版本数组
$version = curl_version();

// 在cURL编译版本中使用位域来检查某些特性
$bitfields = Array(
            'CURL_VERSION_IPV6',
            'CURL_VERSION_KERBEROS4',
            'CURL_VERSION_SSL',
            'CURL_VERSION_LIBZ'
            );

foreach($bitfields as $feature)
{
    echo $feature . ($version['features'] & constant($feature) ? ' matches' : ' does not match');
    echo PHP_EOL;
}
?>

curl_unescape
CURLFile
cURL 函数


CURLFile 类

(PHP 5 >= 5.5.0, PHP 7)

简介

CURLFile 应该与选项 CURLOPT_POSTFIELDS 一同使用用于上传文件。

类摘要

CURLFile {
/* 属性 */
public $name ;
public $mime ;
public $postname ;
/* 方法 */
public __construct ( string $filename [, string $mimetype [, string $postname ]] )
public string getFilename ( void )
public string getMimeType ( void )
public string getPostFilename ( void )
public void setMimeType ( string $mime )
public void setPostFilename ( string $postname )
public void __wakeup ( void )
}

属性

name

待上传文件的名称

mime

文件的 MIME type（默认是application/octet-stream）。

postname

上传数据中的文件名称（默认为属性 name ）。

参见

  • curl_setopt()

Table of Contents

  • CURLFile::__construct — 创建 CURLFile 对象
  • CURLFile::getFilename — 获取被上传文件的 文件名
  • CURLFile::getMimeType — 获取被上传文件的 MIME 类型
  • CURLFile::getPostFilename — 获取 POST 请求时使用的 文件名
  • CURLFile::setMimeType — 设置被上传文件的 MIME 类型
  • CURLFile::setPostFilename — 设置 POST 请求时使用的 文件名
  • CURLFile::__wakeup — 反序列化句柄
curl_version
CURLFile::__construct
cURL


创建 CURLFile 对象

CURLFile
CURLFile::getFilename
CURLFile
PHP Manual

CURLFile::__construct

curl_file_create

(PHP 5 >= 5.5.0, PHP 7)

CURLFile::__construct -- curl_file_create — 创建 CURLFile 对象

说明

面向对象风格

public CURLFile::__construct ( string $filename [, string $mimetype [, string $postname ]] )

过程化风格

CURLFile curl_file_create ( string $filename [, string $mimetype [, string $postname ]] )

创建一个 CURLFile 对象, 使用 CURLOPT_POSTFIELDS 选项上传文件。

参数

filename

被上传文件的 路径。

mimetype

被上传文件的 MIME 类型。

postname

被上传文件的 文件名。

返回值

返回一个 CURLFile 对象。

范例

Example #1 CURLFile::__construct() 示例

面向对象风格

<?php
/* http://example.com/upload.php:
<?php var_dump($_FILES); ?>
*/

// Create a cURL handle
$ch = curl_init('http://example.com/upload.php');

// Create a CURLFile object
$cfile = new CURLFile('cats.jpg','image/jpeg','test_name');

// Assign POST data
$data = array('test_file' => $cfile);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

// Execute the handle
curl_exec($ch);
?>

过程化风格

<?php
/* http://example.com/upload.php:
<?php var_dump($_FILES); ?>
*/

// Create a cURL handle
$ch = curl_init('http://example.com/upload.php');

// Create a CURLFile object
$cfile = curl_file_create('cats.jpg','image/jpeg','test_name');

// Assign POST data
$data = array('test_file' => $cfile);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

// Execute the handle
curl_exec($ch);
?>

以上例程会输出：

array(1) {
  ["test_file"]=>
  array(5) {
    ["name"]=>
    string(9) "test_name"
    ["type"]=>
    string(10) "image/jpeg"
    ["tmp_name"]=>
    string(14) "/tmp/phpPC9Kbx"
    ["error"]=>
    int(0)
    ["size"]=>
    int(46334)
  }
}

参见

  • curl_setopt() - 设置一个cURL传输选项

CURLFile
CURLFile::getFilename
CURLFile


获取被上传文件的 文件名

CURLFile::__construct
CURLFile::getMimeType
CURLFile
PHP Manual

CURLFile::getFilename

(PHP 5 >= 5.5.0, PHP 7)

CURLFile::getFilename — 获取被上传文件的 文件名

说明

public string CURLFile::getFilename ( void )

参数

此函数没有参数。

返回值

返回被上传文件的 文件名。

CURLFile::__construct
CURLFile::getMimeType
CURLFile


获取被上传文件的 MIME 类型

CURLFile::getFilename
CURLFile::getPostFilename
CURLFile
PHP Manual

CURLFile::getMimeType

(PHP 5 >= 5.5.0, PHP 7)

CURLFile::getMimeType — 获取被上传文件的 MIME 类型

说明

public string CURLFile::getMimeType ( void )

参数

此函数没有参数。

返回值

返回被上传文件的 MIME 类型。

CURLFile::getFilename
CURLFile::getPostFilename
CURLFile


获取 POST 请求时使用的 文件名

CURLFile::getMimeType
CURLFile::setMimeType
CURLFile
PHP Manual

CURLFile::getPostFilename

(PHP 5 >= 5.5.0, PHP 7)

CURLFile::getPostFilename — 获取 POST 请求时使用的 文件名

说明

public string CURLFile::getPostFilename ( void )

参数

此函数没有参数。

返回值

返回 POST 请求时使用的 文件名。

CURLFile::getMimeType
CURLFile::setMimeType
CURLFile


设置被上传文件的 MIME 类型

CURLFile::getPostFilename
CURLFile::setPostFilename
CURLFile
PHP Manual

CURLFile::setMimeType

(PHP 5 >= 5.5.0, PHP 7)

CURLFile::setMimeType — 设置被上传文件的 MIME 类型

说明

public void CURLFile::setMimeType ( string $mime )

参数

mime

返回值

没有返回值。

CURLFile::getPostFilename
CURLFile::setPostFilename
CURLFile


设置 POST 请求时使用的 文件名

CURLFile::setMimeType
CURLFile::__wakeup
CURLFile
PHP Manual

CURLFile::setPostFilename

(PHP 5 >= 5.5.0, PHP 7)

CURLFile::setPostFilename — 设置 POST 请求时使用的 文件名

说明

public void CURLFile::setPostFilename ( string $postname )

参数

postname

返回值

没有返回值。

CURLFile::setMimeType
CURLFile::__wakeup
CURLFile


反序列化句柄

CURLFile::setPostFilename
Event
CURLFile
PHP Manual

CURLFile::__wakeup

(PHP 5 >= 5.5.0, PHP 7)

CURLFile::__wakeup — 反序列化句柄

说明

public void CURLFile::__wakeup ( void )

参数

此函数没有参数。

返回值

没有返回值。

错误／异常

CURLFile 对象不是从序列化数据重建的。

CURLFile::setPostFilename
Event
CURLFile


Event

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 范例
  • Event flags
  • About event persistence
  • Event callbacks
  • Constructing signal events
  • Event — The Event class
    • Event::add — Makes event pending
    • Event::addSignal — Makes signal event pending
    • Event::addTimer — Makes timer event pending
    • Event::__construct — Constructs Event object
    • Event::del — Makes event non-pending
    • Event::delSignal — Makes signal event non-pending
    • Event::delTimer — Makes timer event non-pending
    • Event::free — Make event non-pending and free resources allocated for this event.
    • Event::getSupportedMethods — Returns array with of the names of the methods supported in this version of Libevent
    • Event::pending — Detects whether event is pending or scheduled
    • Event::set — Re-configures event
    • Event::setPriority — Set event priority
    • Event::setTimer — Re-configures timer event
    • Event::signal — Constructs signal event object
    • Event::timer — Constructs timer event object
  • EventBase — The EventBase class
    • EventBase::__construct — Constructs EventBase object
    • EventBase::dispatch — Dispatch pending events
    • EventBase::exit — Stop dispatching events
    • EventBase::free — Free resources allocated for this event base
    • EventBase::getFeatures — Returns bitmask of features supported
    • EventBase::getMethod — Returns event method in use
    • EventBase::getTimeOfDayCached — Returns the current event base time
    • EventBase::gotExit — Checks if the event loop was told to exit
    • EventBase::gotStop — Checks if the event loop was told to exit
    • EventBase::loop — Dispatch pending events
    • EventBase::priorityInit — Sets number of priorities per event base
    • EventBase::reInit — Re-initialize event base(after a fork).
    • EventBase::stop — Tells event_base to stop dispatching events
  • EventBuffer — The EventBuffer class
    • EventBuffer::add — Append data to the end of an event buffer
    • EventBuffer::addBuffer — Move all data from a buffer provided to the current instance of EventBuffer
    • EventBuffer::appendFrom — Moves the specified number of bytes from a source buffer to the end of the current buffer
    • EventBuffer::__construct — Constructs EventBuffer object
    • EventBuffer::copyout — Copies out specified number of bytes from the front of the buffer
    • EventBuffer::drain — Removes specified number of bytes from the front of the buffer without copying it anywhere
    • EventBuffer::enableLocking — 说明
    • EventBuffer::expand — Reserves space in buffer
    • EventBuffer::freeze — Prevent calls that modify an event buffer from succeeding
    • EventBuffer::lock — Acquires a lock on buffer
    • EventBuffer::prepend — Prepend data to the front of the buffer
    • EventBuffer::prependBuffer — Moves all data from source buffer to the front of current buffer
    • EventBuffer::pullup — Linearizes data within buffer and returns it's contents as a string
    • EventBuffer::read — Read data from an evbuffer and drain the bytes read
    • EventBuffer::readFrom — Read data from a file onto the end of the buffer
    • EventBuffer::readLine — Extracts a line from the front of the buffer
    • EventBuffer::search — Scans the buffer for an occurrence of a string
    • EventBuffer::searchEol — Scans the buffer for an occurrence of an end of line
    • EventBuffer::substr — Substracts a portion of the buffer data
    • EventBuffer::unfreeze — Re-enable calls that modify an event buffer
    • EventBuffer::unlock — Releases lock acquired by EventBuffer::lock
    • EventBuffer::write — Write contents of the buffer to a file or socket
  • EventBufferEvent — The EventBufferEvent class
    • EventBufferEvent::close — Closes file descriptor associated with the current buffer event
    • EventBufferEvent::connect — Connect buffer event's file descriptor to given address or UNIX socket
    • EventBufferEvent::connectHost — Connects to a hostname with optionally asyncronous DNS resolving
    • EventBufferEvent::__construct — Constructs EventBufferEvent object
    • EventBufferEvent::createPair — Creates two buffer events connected to each other
    • EventBufferEvent::disable — Disable events read, write, or both on a buffer event.
    • EventBufferEvent::enable — Enable events read, write, or both on a buffer event.
    • EventBufferEvent::free — Free a buffer event
    • EventBufferEvent::getDnsErrorString — Returns string describing the last failed DNS lookup attempt
    • EventBufferEvent::getEnabled — Returns bitmask of events currently enabled on the buffer event
    • EventBufferEvent::getInput — Returns underlying input buffer associated with current buffer event
    • EventBufferEvent::getOutput — Returns underlying output buffer associated with current buffer event
    • EventBufferEvent::read — Read buffer's data
    • EventBufferEvent::readBuffer — Drains the entire contents of the input buffer and places them into buf
    • EventBufferEvent::setCallbacks — Assigns read, write and event(status) callbacks
    • EventBufferEvent::setPriority — Assign a priority to a bufferevent
    • EventBufferEvent::setTimeouts — Set the read and write timeout for a buffer event
    • EventBufferEvent::setWatermark — Adjusts read and/or write watermarks
    • EventBufferEvent::sslError — Returns most recent OpenSSL error reported on the buffer event
    • EventBufferEvent::sslFilter — Create a new SSL buffer event to send its data over another buffer event
    • EventBufferEvent::sslGetCipherInfo — Returns a textual description of the cipher.
    • EventBufferEvent::sslGetCipherName — Returns the current cipher name of the SSL connection.
    • EventBufferEvent::sslGetCipherVersion — Returns version of cipher used by current SSL connection.
    • EventBufferEvent::sslGetProtocol — Returns the name of the protocol used for current SSL connection.
    • EventBufferEvent::sslRenegotiate — Tells a bufferevent to begin SSL renegotiation.
    • EventBufferEvent::sslSocket — Creates a new SSL buffer event to send its data over an SSL on a socket
    • EventBufferEvent::write — Adds data to a buffer event's output buffer
    • EventBufferEvent::writeBuffer — Adds contents of the entire buffer to a buffer event's output buffer
  • About buffer event callbacks
  • EventConfig — The EventConfig class
    • EventConfig::avoidMethod — Tells libevent to avoid specific event method
    • EventConfig::__construct — Constructs EventConfig object
    • EventConfig::requireFeatures — Enters a required event method feature that the application demands
    • EventConfig::setMaxDispatchInterval — Prevents priority inversion
  • EventDnsBase — The EventDnsBase class
    • EventDnsBase::addNameserverIp — Adds a nameserver to the DNS base
    • EventDnsBase::addSearch — Adds a domain to the list of search domains
    • EventDnsBase::clearSearch — Removes all current search suffixes
    • EventDnsBase::__construct — Constructs EventDnsBase object
    • EventDnsBase::countNameservers — Gets the number of configured nameservers
    • EventDnsBase::loadHosts — Loads a hosts file (in the same format as /etc/hosts) from hosts file
    • EventDnsBase::parseResolvConf — Scans the resolv.conf-formatted file
    • EventDnsBase::setOption — Set the value of a configuration option
    • EventDnsBase::setSearchNdots — Set the 'ndots' parameter for searches
  • EventHttp — The EventHttp class
    • EventHttp::accept — Makes an HTTP server accept connections on the specified socket stream or resource
    • EventHttp::addServerAlias — Adds a server alias to the HTTP server object
    • EventHttp::bind — Binds an HTTP server on the specified address and port
    • EventHttp::__construct — Constructs EventHttp object(the HTTP server)
    • EventHttp::removeServerAlias — Removes server alias
    • EventHttp::setAllowedMethods — Sets the what HTTP methods are supported in requests accepted by this server, and passed to user callbacks
    • EventHttp::setCallback — Sets a callback for specified URI
    • EventHttp::setDefaultCallback — Sets default callback to handle requests that are not caught by specific callbacks
    • EventHttp::setMaxBodySize — Sets maximum request body size
    • EventHttp::setMaxHeadersSize — Sets maximum HTTP header size
    • EventHttp::setTimeout — Sets the timeout for an HTTP request
  • EventHttpConnection — The EventHttpConnection class
    • EventHttpConnection::__construct — Constructs EventHttpConnection object
    • EventHttpConnection::getBase — Returns event base associated with the connection
    • EventHttpConnection::getPeer — Gets the remote address and port associated with the connection
    • EventHttpConnection::makeRequest — Makes an HTTP request over the specified connection
    • EventHttpConnection::setCloseCallback — Set callback for connection close
    • EventHttpConnection::setLocalAddress — Sets the IP address from which HTTP connections are made
    • EventHttpConnection::setLocalPort — Sets the local port from which connections are made
    • EventHttpConnection::setMaxBodySize — Sets maximum body size for the connection
    • EventHttpConnection::setMaxHeadersSize — Sets maximum header size
    • EventHttpConnection::setRetries — Sets the retry limit for the connection
    • EventHttpConnection::setTimeout — Sets the timeout for the connection
  • EventHttpRequest — The EventHttpRequest class
    • EventHttpRequest::addHeader — Adds an HTTP header to the headers of the request
    • EventHttpRequest::cancel — Cancels a pending HTTP request
    • EventHttpRequest::clearHeaders — Removes all output headers from the header list of the request
    • EventHttpRequest::closeConnection — Closes associated HTTP connection
    • EventHttpRequest::__construct — Constructs EventHttpRequest object
    • EventHttpRequest::findHeader — Finds the value belonging a header
    • EventHttpRequest::free — Frees the object and removes associated events
    • EventHttpRequest::getBufferEvent — Returns EventBufferEvent object
    • EventHttpRequest::getCommand — Returns the request command(method)
    • EventHttpRequest::getConnection — Returns EventHttpConnection object
    • EventHttpRequest::getHost — Returns the request host
    • EventHttpRequest::getInputBuffer — Returns the input buffer
    • EventHttpRequest::getInputHeaders — Returns associative array of the input headers
    • EventHttpRequest::getOutputBuffer — Returns the output buffer of the request
    • EventHttpRequest::getOutputHeaders — Returns associative array of the output headers
    • EventHttpRequest::getResponseCode — Returns the response code
    • EventHttpRequest::getUri — Returns the request URI
    • EventHttpRequest::removeHeader — Removes an HTTP header from the headers of the request
    • EventHttpRequest::sendError — Send an HTML error message to the client
    • EventHttpRequest::sendReply — Send an HTML reply to the client
    • EventHttpRequest::sendReplyChunk — Send another data chunk as part of an ongoing chunked reply
    • EventHttpRequest::sendReplyEnd — Complete a chunked reply, freeing the request as appropriate
    • EventHttpRequest::sendReplyStart — Initiate a chunked reply
  • EventListener — The EventListener class
    • EventListener::__construct — Creates new connection listener associated with an event base
    • EventListener::disable — Disables an event connect listener object
    • EventListener::enable — Enables an event connect listener object
    • EventListener::getBase — Returns event base associated with the event listener
    • EventListener::getSocketName — Retreives the current address to which the listener's socket is bound.
    • EventListener::setCallback — The setCallback purpose
    • EventListener::setErrorCallback — Set event listener's error callback
  • EventSslContext — The EventSslContext class
    • EventSslContext::__construct — Constructs an OpenSSL context for use with Event classes
  • EventUtil — The EventUtil class
    • EventUtil::__construct — The abstract constructor
    • EventUtil::getLastSocketErrno — Returns the most recent socket error number
    • EventUtil::getLastSocketError — Returns the most recent socket error
    • EventUtil::getSocketFd — Returns numeric file descriptor of a socket, or stream
    • EventUtil::getSocketName — Retreives the current address to which the socket is bound.
    • EventUtil::setSocketOption — Sets socket options
    • EventUtil::sslRandPoll — Generates entropy by means of OpenSSL's RAND_poll()
CURLFile::__wakeup
简介
其它服务


简介

This is an extension to efficiently schedule I/O, time and signal based events using the best I/O notification mechanism available for specific platform. This is a port of libevent to the PHP infrastructure.

Note:

Note, Windows support introduced in event-1.9.0 .

Version 1.0.0 introduces new object-oriented API (breaking backwards compatibility), and support of libevent 2+ including HTTP, DNS, OpenSSL and the event listener.

Note:

Note, event-1.0.0 and greater is not compatible with previous versions.

Event
安装／配置
Event


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Event


需求

This extension requires » libevent library. Most modern distributions provide packages for libevent.

OpenSSL features require » OpenSSL library.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/event .

需求
运行时配置
安装／配置


范例

Example #1 Simple HTTP client

<?php
// Read callback
function readcb($bev, $base) {
    //$input = $bev->input; //$bev->getInput();

    //$pos = $input->search("TTP");
    $pos = $bev->input->search("TTP");

    while (($n = $bev->input->remove($buf, 1024)) > 0) {
        echo $buf;
    }
}

// Event callback
function eventcb($bev, $events, $base) {
    if ($events & EventBufferEvent::CONNECTED) {
        echo "Connected.\n";
    } elseif ($events & (EventBufferEvent::ERROR | EventBufferEvent::EOF)) {
        if ($events & EventBufferEvent::ERROR) {
            echo "DNS error: ", $bev->getDnsErrorString(), PHP_EOL;
        }

        echo "Closing\n";
        $base->exit();
        exit("Done\n");
    }
}

if ($argc != 3) {
    echo <<<EOS
Trivial HTTP 0.x client
Syntax: php {$argv[0]} [hostname] [resource]
Example: php {$argv[0]} www.google.com /

EOS;
    exit();
}

$base = new EventBase();

$dns_base = new EventDnsBase($base, TRUE); // We'll use async DNS resolving
if (!$dns_base) {
    exit("Failed to init DNS Base\n");
}

$bev = new EventBufferEvent($base, /* use internal socket */ NULL,
    EventBufferEvent::OPT_CLOSE_ON_FREE | EventBufferEvent::OPT_DEFER_CALLBACKS,
    "readcb", /* writecb */ NULL, "eventcb"
);
if (!$bev) {
    exit("Failed creating bufferevent socket\n");
}

//$bev->setCallbacks("readcb", /* writecb */ NULL, "eventcb", $base);
$bev->enable(Event::READ | Event::WRITE);

$output = $bev->output; //$bev->getOutput();
if (!$output->add(
    "GET {$argv[2]} HTTP/1.0\r\n".
    "Host: {$argv[1]}\r\n".
    "Connection: Close\r\n\r\n"
)) {
    exit("Failed adding request to output buffer\n");
}

if (!$bev->connectHost($dns_base, $argv[1], 80, EventUtil::AF_UNSPEC)) {
    exit("Can't connect to host {$argv[1]}\n");
}

$base->dispatch();
?>

以上例程的输出类似于：

Connected.
HTTP/1.1 301 Moved Permanently
Date: Fri, 01 Mar 2013 18:47:48 GMT
Location: http://www.google.co.uk/
Content-Type: text/html; CHARSET=gb2312
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 221
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Age: 133438
Expires: Sat, 30 Mar 2013 05:39:28 GMT
Connection: close

<HTML><HEAD><meta http-equiv="content-type" content="text/html;CHARSET=gb2312">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.co.uk/">here</A>.
</BODY></HTML>
Closing
Done

Example #2 HTTP client using asynchronous DNS resolver

<?php
/*
 * 1. Connect to 127.0.0.1 at port 80
 * by means of EventBufferEvent::connect().
 *
 * 2. Request /index.cphp via HTTP/1.0
 * using the output buffer.
 *
 * 3. Asyncronously read the response and print it to stdout.
 */

// Read callback
function readcb($bev, $base) {
    $input = $bev->getInput();

    while (($n = $input->remove($buf, 1024)) > 0) {
        echo $buf;
    }
}

// Event callback
function eventcb($bev, $events, $base) {
    if ($events & EventBufferEvent::CONNECTED) {
        echo "Connected.\n";
    } elseif ($events & (EventBufferEvent::ERROR | EventBufferEvent::EOF)) {
        if ($events & EventBufferEvent::ERROR) {
            echo "DNS error: ", $bev->getDnsErrorString(), PHP_EOL;
        }

        echo "Closing\n";
        $base->exit();
        exit("Done\n");
    }
}

$base = new EventBase();

echo "step 1\n";
$bev = new EventBufferEvent($base, /* use internal socket */ NULL,
    EventBufferEvent::OPT_CLOSE_ON_FREE | EventBufferEvent::OPT_DEFER_CALLBACKS);
if (!$bev) {
    exit("Failed creating bufferevent socket\n");
}

echo "step 2\n";
$bev->setCallbacks("readcb", /* writecb */ NULL, "eventcb", $base);
$bev->enable(Event::READ | Event::WRITE);

echo "step 3\n";
// Send request
$output = $bev->getOutput();
if (!$output->add(
    "GET /index.cphp HTTP/1.0\r\n".
    "Connection: Close\r\n\r\n"
)) {
    exit("Failed adding request to output buffer\n");
}

/* Connect to the host syncronously.
We know the IP, and don't need to resolve DNS. */
if (!$bev->connect("127.0.0.1:80")) {
    exit("Can't connect to host\n");
}

// Dispatch pending events
$base->dispatch();
?>

Example #3 Echo server

<?php
/*
 * Simple echo server based on libevent's connection listener.
 *
 * Usage:
 * 1) In one terminal window run:
 *
 * $ php listener.php 9881
 *
 * 2) In another terminal window open up connection, e.g.:
 *
 * $ nc 127.0.0.1 9881
 *
 * 3) start typing. The server should repeat the input.
 */

class MyListenerConnection {
    private $bev, $base;

    public function __destruct() {
        $this->bev->free();
    }

    public function __construct($base, $fd) {
        $this->base = $base;

        $this->bev = new EventBufferEvent($base, $fd, EventBufferEvent::OPT_CLOSE_ON_FREE);

        $this->bev->setCallbacks(array($this, "echoReadCallback"), NULL,
            array($this, "echoEventCallback"), NULL);

        if (!$this->bev->enable(Event::READ)) {
            echo "Failed to enable READ\n";
            return;
        }
    }

    public function echoReadCallback($bev, $ctx) {
        // Copy all the data from the input buffer to the output buffer

        // Variant #1
        $bev->output->addBuffer($bev->input);

        /* Variant #2 */
        /*
        $input    = $bev->getInput();
        $output = $bev->getOutput();
        $output->addBuffer($input);
        */
    }

    public function echoEventCallback($bev, $events, $ctx) {
        if ($events & EventBufferEvent::ERROR) {
            echo "Error from bufferevent\n";
        }

        if ($events & (EventBufferEvent::EOF | EventBufferEvent::ERROR)) {
            //$bev->free();
            $this->__destruct();
        }
    }
}

class MyListener {
    public $base,
        $listener,
        $socket;
    private $conn = array();

    public function __destruct() {
        foreach ($this->conn as &$c) $c = NULL;
    }

    public function __construct($port) {
        $this->base = new EventBase();
        if (!$this->base) {
            echo "Couldn't open event base";
            exit(1);
        }

        // Variant #1
        /*
        $this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
        if (!socket_bind($this->socket, '0.0.0.0', $port)) {
            echo "Unable to bind socket\n";
            exit(1);
        }
        $this->listener = new EventListener($this->base,
            array($this, "acceptConnCallback"), $this->base,
            EventListener::OPT_CLOSE_ON_FREE | EventListener::OPT_REUSEABLE,
            -1, $this->socket);
         */

        // Variant #2
         $this->listener = new EventListener($this->base,
             array($this, "acceptConnCallback"), $this->base,
             EventListener::OPT_CLOSE_ON_FREE | EventListener::OPT_REUSEABLE, -1,
             "0.0.0.0:$port");

        if (!$this->listener) {
            echo "Couldn't create listener";
            exit(1);
        }

        $this->listener->setErrorCallback(array($this, "accept_error_cb"));
    }

    public function dispatch() {
        $this->base->dispatch();
    }

    // This callback is invoked when there is data to read on $bev
    public function acceptConnCallback($listener, $fd, $address, $ctx) {
        // We got a new connection! Set up a bufferevent for it. */
        $base = $this->base;
        $this->conn[] = new MyListenerConnection($base, $fd);
    }

    public function accept_error_cb($listener, $ctx) {
        $base = $this->base;

        fprintf(STDERR, "Got an error %d (%s) on the listener. "
            ."Shutting down.\n",
            EventUtil::getLastSocketErrno(),
            EventUtil::getLastSocketError());

        $base->exit(NULL);
    }
}

$port = 9808;

if ($argc > 1) {
    $port = (int) $argv[1];
}
if ($port <= 0 || $port > 65535) {
    exit("Invalid port");
}

$l = new MyListener($port);
$l->dispatch();
?>

Example #4 SSL echo server

<?php
/*
 * SSL echo server
 *
 * To test:
 * 1) Run:
 * $ php examples/ssl-echo-server/server.php 9998
 *
 * 2) in another terminal window run:
 * $ socat - SSL:127.0.0.1:9998,verify=1,cafile=examples/ssl-echo-server/cert.pem
 */

class MySslEchoServer {
    public $port,
        $base,
        $bev,
        $listener,
        $ctx;

    function __construct ($port, $host = "127.0.0.1") {
        $this->port = $port;
        $this->ctx = $this->init_ssl();
        if (!$this->ctx) {
            exit("Failed creating SSL context\n");
        }

        $this->base = new EventBase();
        if (!$this->base) {
            exit("Couldn't open event base\n");
        }

        $this->listener = new EventListener($this->base,
            array($this, "ssl_accept_cb"), $this->ctx,
            EventListener::OPT_CLOSE_ON_FREE | EventListener::OPT_REUSEABLE,
            -1, "$host:$port");
        if (!$this->listener) {
            exit("Couldn't create listener\n");
        }

        $this->listener->setErrorCallback(array($this, "accept_error_cb"));
    }
    function dispatch() {
        $this->base->dispatch();
    }

    // This callback is invoked when there is data to read on $bev.
    function ssl_read_cb($bev, $ctx) {
        $in = $bev->input; //$bev->getInput();

        printf("Received %zu bytes\n", $in->length);
        printf("----- data ----\n");
        printf("%ld:\t%s\n", (int) $in->length, $in->pullup(-1));

        $bev->writeBuffer($in);
    }

    // This callback is invoked when some even occurs on the event listener,
    // e.g. connection closed, or an error occured
    function ssl_event_cb($bev, $events, $ctx) {
        if ($events & EventBufferEvent::ERROR) {
            // Fetch errors from the SSL error stack
            while ($err = $bev->sslError()) {
                fprintf(STDERR, "Bufferevent error %s.\n", $err);
            }
        }

        if ($events & (EventBufferEvent::EOF | EventBufferEvent::ERROR)) {
            $bev->free();
        }
    }

    // This callback is invoked when a client accepts new connection
    function ssl_accept_cb($listener, $fd, $address, $ctx) {
        // We got a new connection! Set up a bufferevent for it.
        $this->bev = EventBufferEvent::sslSocket($this->base, $fd, $this->ctx,
            EventBufferEvent::SSL_ACCEPTING, EventBufferEvent::OPT_CLOSE_ON_FREE);

        if (!$this->bev) {
            echo "Failed creating ssl buffer\n";
            $this->base->exit(NULL);
            exit(1);
        }

        $this->bev->enable(Event::READ);
        $this->bev->setCallbacks(array($this, "ssl_read_cb"), NULL,
            array($this, "ssl_event_cb"), NULL);
    }

    // This callback is invoked when we failed to setup new connection for a client
    function accept_error_cb($listener, $ctx) {
        fprintf(STDERR, "Got an error %d (%s) on the listener. "
            ."Shutting down.\n",
            EventUtil::getLastSocketErrno(),
            EventUtil::getLastSocketError());

        $this->base->exit(NULL);
    }

    // Initialize SSL structures, create an EventSslContext
    // Optionally create self-signed certificates
    function init_ssl() {
        // We *must* have entropy. Otherwise there's no point to crypto.
        if (!EventUtil::sslRandPoll()) {
            exit("EventUtil::sslRandPoll failed\n");
        }

        $local_cert = __DIR__."/cert.pem";
        $local_pk   = __DIR__."/privkey.pem";

        if (!file_exists($local_cert) || !file_exists($local_pk)) {
            echo "Couldn't read $local_cert or $local_pk file.  To generate a key\n",
                "and self-signed certificate, run:\n",
                "  openssl genrsa -out $local_pk 2048\n",
                "  openssl req -new -key $local_pk -out cert.req\n",
                "  openssl x509 -req -days 365 -in cert.req -signkey $local_pk -out $local_cert\n";

            return FALSE;
        }

        $ctx = new EventSslContext(EventSslContext::SSLv3_SERVER_METHOD, array (
             EventSslContext::OPT_LOCAL_CERT  => $local_cert,
             EventSslContext::OPT_LOCAL_PK    => $local_pk,
             //EventSslContext::OPT_PASSPHRASE  => "echo server",
             EventSslContext::OPT_VERIFY_PEER => true,
             EventSslContext::OPT_ALLOW_SELF_SIGNED => false,
        ));

        return $ctx;
    }
}

// Allow to override the port
$port = 9999;
if ($argc > 1) {
    $port = (int) $argv[1];
}
if ($port <= 0 || $port > 65535) {
    exit("Invalid port\n");
}

$l = new MySslEchoServer($port);
$l->dispatch();
?>

Example #5 Signal handler

<?php
/*
Launch it in a terminal window:

$ php examples/signal.php

In another terminal window find out the pid and send SIGTERM, e.g.:

$ ps aux | grep examp
ruslan    3976  0.2  0.0 139896 11256 pts/1    S+   10:25   0:00 php examples/signal.php
ruslan    3978  0.0  0.0   9572   864 pts/2    S+   10:26   0:00 grep --color=auto examp
$ kill -TERM 3976

At the first terminal window you should catch the following:

Caught signal 15
*/
class MyEventSignal {
    private $base;

    function __construct($base) {
        $this->base = $base;
    }

    function eventSighandler($no, $c) {
        echo "Caught signal $no\n";
        event_base_loopexit($c->base);
    }
}

$base = event_base_new();
$c    = new MyEventSignal($base);
$no   = SIGTERM;
$ev   = evsignal_new($base, $no, array($c,'eventSighandler'), $c);

evsignal_add($ev);

event_base_loop($base);
?>

Example #6 Use libevent's loop to process requests of `eio' extension

<?php
// Callback for eio_nop()
function my_nop_cb($d, $r) {
    echo "step 6\n";
}

$dir = "/tmp/abc-eio-temp";
if (file_exists($dir)) {
    rmdir($dir);
}

echo "step 1\n";

$base = new EventBase();

echo "step 2\n";

eio_init();

eio_mkdir($dir, 0750, EIO_PRI_DEFAULT, "my_nop_cb");

$event = new Event($base, eio_get_event_stream(),
    Event::READ | Event::PERSIST, function ($fd, $events, $base) {
    echo "step 5\n";

    while (eio_nreqs()) {
        eio_poll();
    }

    $base->stop();
}, $base);

echo "step 3\n";

$event->add();

echo "step 4\n";

$base->dispatch();

echo "Done\n";
?>

Example #7 Miscellaneous

<?php
/* {{{ Config & supported stuff */
echo "Supported methods:\n";
foreach (Event::getSupportedMethods() as $m) {
    echo $m, PHP_EOL;
}

// Avoiding "select" method
$cfg = new EventConfig();
if ($cfg->avoidMethod("select")) {
    echo "`select' method avoided\n";
}

// Create event_base associated with the config
$base = new EventBase($cfg);
echo "Event method used: ", $base->getMethod(), PHP_EOL;

echo "Features:\n";
$features = $base->getFeatures();
($features & EventConfig::FEATURE_ET) and print("ET - edge-triggered IO\n");
($features & EventConfig::FEATURE_O1) and print("O1 - O(1) operation for adding/deletting events\n");
($features & EventConfig::FEATURE_FDS) and print("FDS - arbitrary file descriptor types, and not just sockets\n");

// Require FDS feature
if ($cfg->requireFeatures(EventConfig::FEATURE_FDS)) {
    echo "FDS feature is now requried\n";

    $base = new EventBase($cfg);
    ($base->getFeatures() & EventConfig::FEATURE_FDS)
        and print("FDS - arbitrary file descriptor types, and not just sockets\n");
}
/* }}} */

/* {{{ Base */
$base = new EventBase();
$event = new Event($base, STDIN, Event::READ | Event::PERSIST, function ($fd, $events, $arg) {
    static $max_iterations = 0;

    if (++$max_iterations >= 5) {
        /* exit after 5 iterations with timeout of 2.33 seconds */
        echo "Stopping...\n";
        $arg[0]->exit(2.33);
    }

    echo fgets($fd);
}, array (&$base));

$event->add();
$base->loop();
/* Base }}} */
?>

Example #8 Simple HTTP server

<?php
/*
 * Simple HTTP server.
 *
 * To test it:
 * 1) Run it on a port of your choice, e.g.:
 * $ php examples/http.php 8010
 * 2) In another terminal connect to some address on this port
 * and make GET or POST request(others are turned off here), e.g.:
 * $ nc -t 127.0.0.1 8010
 * POST /about HTTP/1.0
 * Content-Type: text/plain
 * Content-Length: 4
 * Connection: close
 * (press Enter)
 *
 * It will output
 * a=12
 * HTTP/1.0 200 OK
 * Content-Type: text/html; charset=ISO-8859-1
 * Connection: close
 *
 * $ nc -t 127.0.0.1 8010
 * GET /dump HTTP/1.0
 * Content-Type: text/plain
 * Content-Encoding: UTF-8
 * Connection: close
 * (press Enter)
 *
 * It will output:
 * HTTP/1.0 200 OK
 * Content-Type: text/html; charset=ISO-8859-1
 * Connection: close
 * (press Enter)
 *
 * $ nc -t 127.0.0.1 8010
 * GET /unknown HTTP/1.0
 * Connection: close
 *
 * It will output:
 * HTTP/1.0 200 OK
 * Content-Type: text/html; charset=ISO-8859-1
 * Connection: close
 *
 * 3) See what the server outputs on the previous terminal window.
 */

function _http_dump($req, $data) {
    static $counter      = 0;
    static $max_requests = 2;

    if (++$counter >= $max_requests)  {
        echo "Counter reached max requests $max_requests. Exiting\n";
        exit();
    }

    echo __METHOD__, " called\n";
    echo "request:"; var_dump($req);
    echo "data:"; var_dump($data);

    echo "\n===== DUMP =====\n";
    echo "Command:", $req->getCommand(), PHP_EOL;
    echo "URI:", $req->getUri(), PHP_EOL;
    echo "Input headers:"; var_dump($req->getInputHeaders());
    echo "Output headers:"; var_dump($req->getOutputHeaders());

    echo "\n >> Sending reply ...";
    $req->sendReply(200, "OK");
    echo "OK\n";

    echo "\n >> Reading input buffer ...\n";
    $buf = $req->getInputBuffer();
    while ($s = $buf->readLine(EventBuffer::EOL_ANY)) {
        echo $s, PHP_EOL;
    }
    echo "No more data in the buffer\n";
}

function _http_about($req) {
    echo __METHOD__, PHP_EOL;
    echo "URI: ", $req->getUri(), PHP_EOL;
    echo "\n >> Sending reply ...";
    $req->sendReply(200, "OK");
    echo "OK\n";
}

function _http_default($req, $data) {
    echo __METHOD__, PHP_EOL;
    echo "URI: ", $req->getUri(), PHP_EOL;
    echo "\n >> Sending reply ...";
    $req->sendReply(200, "OK");
    echo "OK\n";
}

$port = 8010;
if ($argc > 1) {
    $port = (int) $argv[1];
}
if ($port <= 0 || $port > 65535) {
    exit("Invalid port");
}

$base = new EventBase();
$http = new EventHttp($base);
$http->setAllowedMethods(EventHttpRequest::CMD_GET | EventHttpRequest::CMD_POST);

$http->setCallback("/dump", "_http_dump", array(4, 8));
$http->setCallback("/about", "_http_about");
$http->setDefaultCallback("_http_default", "custom data value");

$http->bind("0.0.0.0", 8010);
$base->loop();
?>

以上例程的输出类似于：

a=12
HTTP/1.0 200 OK
Content-Type: text/html; charset=ISO-8859-1
Connection: close

HTTP/1.0 200 OK
Content-Type: text/html; charset=ISO-8859-1
Connection: close
(press Enter)

HTTP/1.0 200 OK
Content-Type: text/html; charset=ISO-8859-1
Connection: close

Example #9 Simple HTTPS server

<?php
/*
 * Simple HTTPS server.
 *
 * 1) Run the server: `php examples/https.php 9999`
 * 2) Test it: `php examples/ssl-connection.php 9999`
 */

function _http_dump($req, $data) {
    static $counter      = 0;
    static $max_requests = 200;

    if (++$counter >= $max_requests)  {
        echo "Counter reached max requests $max_requests. Exiting\n";
        exit();
    }

    echo __METHOD__, " called\n";
    echo "request:"; var_dump($req);
    echo "data:"; var_dump($data);

    echo "\n===== DUMP =====\n";
    echo "Command:", $req->getCommand(), PHP_EOL;
    echo "URI:", $req->getUri(), PHP_EOL;
    echo "Input headers:"; var_dump($req->getInputHeaders());
    echo "Output headers:"; var_dump($req->getOutputHeaders());

    echo "\n >> Sending reply ...";
    $req->sendReply(200, "OK");
    echo "OK\n";

    $buf = $req->getInputBuffer();
    echo "\n >> Reading input buffer (", $buf->length, ") ...\n";
    while ($s = $buf->read(1024)) {
        echo $s;
    }
    echo "\nNo more data in the buffer\n";
}

function _http_about($req) {
    echo __METHOD__, PHP_EOL;
    echo "URI: ", $req->getUri(), PHP_EOL;
    echo "\n >> Sending reply ...";
    $req->sendReply(200, "OK");
    echo "OK\n";
}

function _http_default($req, $data) {
    echo __METHOD__, PHP_EOL;
    echo "URI: ", $req->getUri(), PHP_EOL;
    echo "\n >> Sending reply ...";
    $req->sendReply(200, "OK");
    echo "OK\n";
}

function _http_400($req) {
    $req->sendError(400);
}

function _init_ssl() {
    $local_cert = __DIR__."/ssl-echo-server/cert.pem";
    $local_pk   = __DIR__."/ssl-echo-server/privkey.pem";

    $ctx = new EventSslContext(EventSslContext::SSLv3_SERVER_METHOD, array (
        EventSslContext::OPT_LOCAL_CERT  => $local_cert,
        EventSslContext::OPT_LOCAL_PK    => $local_pk,
        //EventSslContext::OPT_PASSPHRASE  => "test",
        EventSslContext::OPT_ALLOW_SELF_SIGNED => true,
    ));

    return $ctx;
}

$port = 9999;
if ($argc > 1) {
    $port = (int) $argv[1];
}
if ($port <= 0 || $port > 65535) {
    exit("Invalid port");
}
$ip = '0.0.0.0';

$base = new EventBase();
$ctx  = _init_ssl();
$http = new EventHttp($base, $ctx);
$http->setAllowedMethods(EventHttpRequest::CMD_GET | EventHttpRequest::CMD_POST);

$http->setCallback("/dump", "_http_dump", array(4, 8));
$http->setCallback("/about", "_http_about");
$http->setCallback("/err400", "_http_400");
$http->setDefaultCallback("_http_default", "custom data value");

$http->bind($ip, $port);
$base->dispatch();

Example #10 OpenSSL connection

<?php
/*
 * Sample OpenSSL client.
 *
 * Usage:
 * 1) Launch a server, e.g.:
 * $ php examples/https.php 9999
 *
 * 2) Launch the client in another terminal:
 * $ php examples/ssl-connection.php 9999
 */

function _request_handler($req, $base) {
    echo __FUNCTION__, PHP_EOL;

    if (is_null($req)) {
        echo "Timed out\n";
    } else {
        $response_code = $req->getResponseCode();

        if ($response_code == 0) {
            echo "Connection refused\n";
        } elseif ($response_code != 200) {
            echo "Unexpected response: $response_code\n";
        } else {
            echo "Success: $response_code\n";
            $buf = $req->getInputBuffer();
            echo "Body:\n";
            while ($s = $buf->readLine(EventBuffer::EOL_ANY)) {
                echo $s, PHP_EOL;
            }
        }
    }

    $base->exit(NULL);
}

function _init_ssl() {
    $ctx = new EventSslContext(EventSslContext::SSLv3_CLIENT_METHOD, array ());

    return $ctx;
}

// Allow to override the port
$port = 9999;
if ($argc > 1) {
    $port = (int) $argv[1];
}
if ($port <= 0 || $port > 65535) {
    exit("Invalid port\n");
}
$host = '127.0.0.1';

$ctx = _init_ssl();
if (!$ctx) {
    trigger_error("Failed creating SSL context", E_USER_ERROR);
}

$base = new EventBase();
if (!$base) {
    trigger_error("Failed to initialize event base", E_USER_ERROR);
}

$conn = new EventHttpConnection($base, NULL, $host, $port, $ctx);
$conn->setTimeout(50);

$req = new EventHttpRequest("_request_handler", $base);
$req->addHeader("Host", $host, EventHttpRequest::OUTPUT_HEADER);
$buf = $req->getOutputBuffer();
$buf->add("<html>HTML TEST</html>");
//$req->addHeader("Content-Length", $buf->length, EventHttpRequest::OUTPUT_HEADER);
//$req->addHeader("Connection", "close", EventHttpRequest::OUTPUT_HEADER);
$conn->makeRequest($req, EventHttpRequest::CMD_POST, "/dump");

$base->dispatch();
echo "END\n";
?>

Example #11 EventHttpConnection::makeRequest() example

<?php
function _request_handler($req, $base) {
    echo __FUNCTION__, PHP_EOL;

    if (is_null($req)) {
        echo "Timed out\n";
    } else {
        $response_code = $req->getResponseCode();

        if ($response_code == 0) {
            echo "Connection refused\n";
        } elseif ($response_code != 200) {
            echo "Unexpected response: $response_code\n";
        } else {
            echo "Success: $response_code\n";
            $buf = $req->getInputBuffer();
            echo "Body:\n";
            while ($s = $buf->readLine(EventBuffer::EOL_ANY)) {
                echo $s, PHP_EOL;
            }
        }
    }

    $base->exit(NULL);
}

$address = "127.0.0.1";
$port = 80;

$base = new EventBase();
$conn = new EventHttpConnection($base, NULL, $address, $port);
$conn->setTimeout(5);
$req = new EventHttpRequest("_request_handler", $base);

$req->addHeader("Host", $address, EventHttpRequest::OUTPUT_HEADER);
$req->addHeader("Content-Length", "0", EventHttpRequest::OUTPUT_HEADER);
$conn->makeRequest($req, EventHttpRequest::CMD_GET, "/index.cphp");

$base->loop();
?>

以上例程的输出类似于：

_request_handler
Success: 200
Body:
PHP, date:
2013-03-13T20:27:52+05:00

Example #12 Connection listener based on a UNIX domain socket

<?php
/*
 * Simple echo server based on libevent's connection listener.
 *
 * Usage:
 * 1) In one terminal window run:
 *
 * $ php unix-domain-listener.php [path-to-socket]
 *
 * 2) In another terminal window open up connection
 * to the socket, e.g.:
 *
 * $ socat - GOPEN:/tmp/1.sock
 *
 * 3) Start typing. The server should repeat the input.
 */

class MyListenerConnection {
    private $bev, $base;

    public function __destruct() {
        if ($this->bev) {
            $this->bev->free();
        }
    }

    public function __construct($base, $fd) {
        $this->base = $base;

        $this->bev = new EventBufferEvent($base, $fd, EventBufferEvent::OPT_CLOSE_ON_FREE);

        $this->bev->setCallbacks(array($this, "echoReadCallback"), NULL,
            array($this, "echoEventCallback"), NULL);

        if (!$this->bev->enable(Event::READ)) {
            echo "Failed to enable READ\n";
            return;
        }
    }

    public function echoReadCallback($bev, $ctx) {
        // Copy all the data from the input buffer to the output buffer
        $bev->output->addBuffer($bev->input);
    }

    public function echoEventCallback($bev, $events, $ctx) {
        if ($events & EventBufferEvent::ERROR) {
            echo "Error from bufferevent\n";
        }

        if ($events & (EventBufferEvent::EOF | EventBufferEvent::ERROR)) {
            $bev->free();
            $bev = NULL;
        }
    }
}

class MyListener {
    public $base,
        $listener,
        $socket;
    private $conn = array();

    public function __destruct() {
        foreach ($this->conn as &$c) $c = NULL;
    }

    public function __construct($sock_path) {
        $this->base = new EventBase();
        if (!$this->base) {
            echo "Couldn't open event base";
            exit(1);
        }

        if (file_exists($sock_path)) {
            unlink($sock_path);
        }

         $this->listener = new EventListener($this->base,
             array($this, "acceptConnCallback"), $this->base,
             EventListener::OPT_CLOSE_ON_FREE | EventListener::OPT_REUSEABLE, -1,
             "unix:$sock_path");

        if (!$this->listener) {
            trigger_error("Couldn't create listener", E_USER_ERROR);
        }

        $this->listener->setErrorCallback(array($this, "accept_error_cb"));
    }

    public function dispatch() {
        $this->base->dispatch();
    }

    // This callback is invoked when there is data to read on $bev
    public function acceptConnCallback($listener, $fd, $address, $ctx) {
        // We got a new connection! Set up a bufferevent for it. */
        $base = $this->base;
        $this->conn[] = new MyListenerConnection($base, $fd);
    }

    public function accept_error_cb($listener, $ctx) {
        $base = $this->base;

        fprintf(STDERR, "Got an error %d (%s) on the listener. "
            ."Shutting down.\n",
            EventUtil::getLastSocketErrno(),
            EventUtil::getLastSocketError());

        $base->exit(NULL);
    }
}

if ($argc <= 1) {
    exit("Socket path is not provided\n");
}
$sock_path = $argv[1];

$l = new MyListener($sock_path);
$l->dispatch();
?>

Example #13 Simple SMTP server

<?php
 /*
 * Author: Andrew Rose <hello at andrewrose dot co dot uk>
 *
 * Usage:
 * 1) Prepare cert.pem certificate and privkey.pem private key files.
 * 2) Launch the server script
 * 3) Open TLS connection, e.g.:
 *      $ openssl s_client -connect localhost:25 -starttls smtp -crlf
 * 4) Start testing the commands listed in `cmd` method below.
 */

class Handler {
    public $domainName = FALSE;
    public $connections = [];
    public $buffers = [];
    public $maxRead = 256000;

    public function __construct() {
        $this->ctx = new EventSslContext(EventSslContext::SSLv3_SERVER_METHOD, [
            EventSslContext::OPT_LOCAL_CERT  => 'cert.pem',
            EventSslContext::OPT_LOCAL_PK    => 'privkey.pem',
            //EventSslContext::OPT_PASSPHRASE  => '',
            EventSslContext::OPT_VERIFY_PEER => false, // change to true with authentic cert
            EventSslContext::OPT_ALLOW_SELF_SIGNED => true // change to false with authentic cert
        ]);

        $this->base = new EventBase();
        if (!$this->base) {
            exit("Couldn't open event base\n");
        }

        if (!$this->listener = new EventListener($this->base,
            [$this, 'ev_accept'],
            $this->ctx,
            EventListener::OPT_CLOSE_ON_FREE | EventListener::OPT_REUSEABLE,
            -1,
            '0.0.0.0:25'))
        {
            exit("Couldn't create listener\n");
        }

        $this->listener->setErrorCallback([$this, 'ev_error']);
        $this->base->dispatch();
    }

    public function ev_accept($listener, $fd, $address, $ctx) {
        static $id = 0;
        $id += 1;

        $this->connections[$id]['clientData'] = '';
        $this->connections[$id]['cnx'] = new EventBufferEvent($this->base, $fd,
            EventBufferEvent::OPT_CLOSE_ON_FREE);

        if (!$this->connections[$id]['cnx']) {
            echo "Failed creating buffer\n";
            $this->base->exit(NULL);
            exit(1);
        }

        $this->connections[$id]['cnx']->setCallbacks([$this, "ev_read"], NULL,
            [$this, 'ev_error'], $id);
        $this->connections[$id]['cnx']->enable(Event::READ | Event::WRITE);

        $this->ev_write($id, '220 '.$this->domainName." wazzzap?\r\n");
    }

    function ev_error($listener, $ctx) {
        $errno = EventUtil::getLastSocketErrno();

        fprintf(STDERR, "Got an error %d (%s) on the listener. Shutting down.\n",
            $errno, EventUtil::getLastSocketError());

        if ($errno != 0) {
            $this->base->exit(NULL);
            exit();
        }
    }

    public function ev_close($id) {
        $this->connections[$id]['cnx']->disable(Event::READ | Event::WRITE);
        unset($this->connections[$id]);
    }

    protected function ev_write($id, $string) {
        echo 'S('.$id.'): '.$string;
        $this->connections[$id]['cnx']->write($string);
    }

    public function ev_read($buffer, $id) {
        while($buffer->input->length > 0) {
            $this->connections[$id]['clientData'] .= $buffer->input->read($this->maxRead);
            $clientDataLen = strlen($this->connections[$id]['clientData']);

            if($this->connections[$id]['clientData'][$clientDataLen-1] == "\n"
                && $this->connections[$id]['clientData'][$clientDataLen-2] == "\r")
            {
                // remove the trailing \r\n
                $line = substr($this->connections[$id]['clientData'], 0,
                    strlen($this->connections[$id]['clientData']) - 2);

                $this->connections[$id]['clientData'] = '';
                $this->cmd($buffer, $id, $line);
            }
        }
    }

    protected function cmd($buffer, $id, $line) {
        switch ($line) {
            case strncmp('EHLO ', $line, 4):
                $this->ev_write($id, "250-STARTTLS\r\n");
                $this->ev_write($id, "250 OK ehlo\r\n");
                break;

            case strncmp('HELO ', $line, 4):
                $this->ev_write($id, "250-STARTTLS\r\n");
                $this->ev_write($id, "250 OK helo\r\n");
                break;

            case strncmp('QUIT', $line, 3):
                $this->ev_write($id, "250 OK quit\r\n");
                $this->ev_close($id);
                break;

            case strncmp('STARTTLS', $line, 3):
                $this->ev_write($id, "220 Ready to start TLS\r\n");
                $this->connections[$id]['cnx'] = EventBufferEvent::sslFilter($this->base,
                    $this->connections[$id]['cnx'], $this->ctx,
                    EventBufferEvent::SSL_ACCEPTING,
                    EventBufferEvent::OPT_CLOSE_ON_FREE);
                $this->connections[$id]['cnx']->setCallbacks([$this, "ev_read"], NULL, [$this, 'ev_error'], $id);
                $this->connections[$id]['cnx']->enable(Event::READ | Event::WRITE);
                break;

            default:
                echo 'unknown command: '.$line."\n";
                break;
        }
    }
}

new Handler();
资源类型
Event flags
Event


Event flags

Event::READ This flag indicates an event that becomes active when the provided file descriptor (usually a stream resource, or socket) is ready for reading.

Event::WRITE flag indicates an event that becomes active when the provided file descriptor (usually a stream resource, or socket) is ready for writing.

Event::SIGNAL used to implement signal detection. See "Constructing signal events" below.

Event::TIMEOUT indicates an event that becomes active after a timeout elapses. The Event::TIMEOUT flag is ignored when constructing an event: one can either set a timeout when event is added , or not. It is set in the $what argument to the callback function when a timeout has occurred.

See also » Fast portable non-blocking network programming with Libevent, Working with events, Event flags

范例
About event persistence
Event


About event persistence

By default, whenever a pending event becomes active (because its file descriptor is ready to read or write, or because its timeout expires), it becomes non-pending right before its callback is executed. Thus, to make the event pending again one may call Event::add() on it again from inside the callback function.

If the Event::PERSIST flag is set on an event, however, the event is persistent . This means that event remains pending even when its callback is activated. Event::del() method can be called to make it non-pending.

The timeout on a persistent event resets whenever the event's callback runs. Thus, if one has an event with flags Event::READ | Event::PERSIST and a timeout of five seconds, the event will become active:

  1. Whenever the socket or file descriptor is ready for reading.

  2. Whenever five seconds have passed since the event last became active.

See also » Fast portable non-blocking network programming with Libevent, About Event Persistence

Event flags
Event callbacks
Event


Event callbacks

If a callback is registered for an event, it will be called when the event becomes active. To associate a callback with event one can pass a callable to either Event::__construct() , or Event::set() , or one of the factory methods like Event::timer() .

An event callback should match the following prototype:

void callback ([ mixed $fd = NULL [, int $what [, mixed $arg = NULL ]]] )

fd

The file descriptor, stream resource or socket associated with the event. For signal event fd is equal to the signal number.

what

Bit mask of all events triggered.

arg

User custom data.

Event::timer() expects the callback to match the following prototype:

void callback ([ mixed $arg = NULL ] )

arg

User custom data.

Event::signal() expects the callback to match the following prototype:

void callback ([ int $signum [, mixed $arg = NULL ]] )

signum

The number of the triggered signal(e.g. SIGTERM ).

arg

User custom data.

About event persistence
Constructing signal events
Event


Constructing signal events

Event can also watch for POSIX-style signals. To construct a handler for a signal, use Event::__construct() constructor with Event::SIGNAL flag, or Event::signal() factory method.

Example #1 Handling SIGTERM signal

<?php
/*
Launch it in a terminal window:

$ php examples/signal.php

In another terminal window find out the pid and send SIGTERM, e.g.:

$ ps aux | grep examp
ruslan    3976  0.2  0.0 139896 11256 pts/1    S+   10:25   0:00 php examples/signal.php
ruslan    3978  0.0  0.0   9572   864 pts/2    S+   10:26   0:00 grep --color=auto examp
$ kill -TERM 3976

At the first terminal window you should catch the following:

Caught signal 15
*/
class MyEventSignal {
    private $base, $ev;

    public function __construct($base) {
        $this->base = $base;
        $this->ev = Event::signal($base, SIGTERM, array($this, 'eventSighandler'));
        $this->ev->add();
    }

    public function eventSighandler($no, $c) {
        echo "Caught signal $no\n";
        $this->base->exit();
    }
}

$base = new EventBase();
$c    = new MyEventSignal($base);

$base->loop();
?>

Note that signal callbacks are run in the event loop after the signal occurs, so it is safe for them to call functions that you are not supposed to call from a regular POSIX signal handler.

See also » Fast portable non-blocking network programming with Libevent, Constructing Signal Events .

Event callbacks
Event
Event


The Event class

(PECL event >= 1.2.6-beta)

简介

Event class represents and event firing on a file descriptor being ready to read from or write to; a file descriptor becoming ready to read from or write to(edge-triggered I/O only); a timeout expiring; a signal occuring; a user-triggered event.

Every event is associated with EventBase . However, event will never fire until it is added (via Event::add() ). An added event remains in pending state until the registered event occurs, thus turning it to active state. To handle events user may register a callback which is called when event becomes active. If event is configured persistent , it remains pending. If it is not persistent, it stops being pending when it's callback runs. Event::del() method deletes event, thus making it non-pending. By means of Event::add() method it could be added again.

类摘要

final Event {
/* Constants */
const integer ET = 32 ;
const integer PERSIST = 16 ;
const integer READ = 2 ;
const integer WRITE = 4 ;
const integer SIGNAL = 8 ;
const integer TIMEOUT = 1 ;
/* 属性 */
public readonly bool $pending ;
/* 方法 */
public bool add ([ double $timeout ] )
public bool addSignal ([ double $timeout ] )
public bool addTimer ([ double $timeout ] )
public __construct ( EventBase $base , mixed $fd , int $what , callable $cb [, mixed $arg = NULL ] )
public bool del ( void )
public bool delSignal ( void )
public bool delTimer ( void )
public void free ( void )
public static array getSupportedMethods ( void )
public bool pending ( int $flags )
public bool set ( EventBase $base , mixed $fd [, int $what [, callable $cb [, mixed $arg ]]] )
public bool setPriority ( int $priority )
public bool setTimer ( EventBase $base , callable $cb [, mixed $arg ] )
public static Event signal ( EventBase $base , int $signum , callable $cb [, mixed $arg ] )
public static Event timer ( EventBase $base , callable $cb [, mixed $arg ] )
}

属性

pending

Whether event is pending. See About event persistence .

预定义常量

Event::ET

Indicates that the event should be edge-triggered, if the underlying event base backend supports edge-triggered events. This affects the semantics of Event::READ and Event::WRITE .

Event::PERSIST

Indicates that the event is persistent. See About event persistence .

Event::READ

This flag indicates an event that becomes active when the provided file descriptor(usually a stream resource, or socket) is ready for reading.

Event::WRITE

This flag indicates an event that becomes active when the provided file descriptor(usually a stream resource, or socket) is ready for reading.

Event::SIGNAL

Used to implement signal detection. See "Constructing signal events" below.

Event::TIMEOUT

This flag indicates an event that becomes active after a timeout elapses.

The Event::TIMEOUT flag is ignored when constructing an event: one can either set a timeout when event is added , or not. It is set in the $what argument to the callback function when a timeout has occurred.

Table of Contents

  • Event::add — Makes event pending
  • Event::addSignal — Makes signal event pending
  • Event::addTimer — Makes timer event pending
  • Event::__construct — Constructs Event object
  • Event::del — Makes event non-pending
  • Event::delSignal — Makes signal event non-pending
  • Event::delTimer — Makes timer event non-pending
  • Event::free — Make event non-pending and free resources allocated for this event.
  • Event::getSupportedMethods — Returns array with of the names of the methods supported in this version of Libevent
  • Event::pending — Detects whether event is pending or scheduled
  • Event::set — Re-configures event
  • Event::setPriority — Set event priority
  • Event::setTimer — Re-configures timer event
  • Event::signal — Constructs signal event object
  • Event::timer — Constructs timer event object
Constructing signal events
Event::add
Event


Makes event pending

Event
Event::addSignal
Event
PHP Manual

Event::add

(PECL libevent >= 0.0.1)

Event::add — Makes event pending

说明

public bool Event::add ([ double $timeout ] )

Marks event pending. Non-pending event will never occur, and the event callback will never be called. In conjuction with Event::del() an event could be re-scheduled by user at any time.

If Event::add() is called on an already pending event, libevent will leave it pending and re-schedule it with the given timeout(if specified). If in this case timeout is not specified, Event::add() has no effect.

参数

timeout

Timeout in seconds.

返回值

Returns TRUE on success. Otherwise FALSE

参见

  • Event::addSignal() - Makes signal event pending
  • Event::addTimer() - Makes timer event pending
  • Event::del() - Makes event non-pending
Event
Event::addSignal
Event


Makes signal event pending

Event::add
Event::addTimer
Event
PHP Manual

Event::addSignal

(PECL event >= 1.2.6-beta)

Event::addSignal — Makes signal event pending

说明

public bool Event::addSignal ([ double $timeout ] )

Event::addSignal() is an alias of Event::add()

范例

Example #1 Event::addSignal() example

<?php
/*
Launch it in a terminal window:

$ php examples/signal.php

In another terminal window find out the pid and send SIGTERM, e.g.:

$ ps aux | grep examp
ruslan    3976  0.2  0.0 139896 11256 pts/1    S+   10:25   0:00 php examples/signal.php
ruslan    3978  0.0  0.0   9572   864 pts/2    S+   10:26   0:00 grep --color=auto examp
$ kill -TERM 3976

At the first terminal window you should catch the following:

Caught signal 15
*/
class MyEventSignal {
    private $base, $ev;

    public function __construct($base) {
        $this->base = $base;
        $this->ev = Event::signal($base, SIGTERM, array($this, 'eventSighandler'));
        $this->ev->addSignal();
    }

    public function eventSighandler($no, $c) {
        echo "Caught signal $no\n";
        $this->base->exit();
    }
}

$base = new EventBase();
$c    = new MyEventSignal($base);

$base->loop();
?>

以上例程的输出类似于：

Caught signal 15

参见

  • Event::add() - Makes event pending
  • Event::del() - Makes event non-pending
  • Event::delSignal() - Makes signal event non-pending
  • Event::signal() - Constructs signal event object
Event::add
Event::addTimer
Event


Makes timer event pending

Event::addSignal
Event::__construct
Event
PHP Manual

Event::addTimer

(PECL event >= 1.2.6-beta)

Event::addTimer — Makes timer event pending

说明

public bool Event::addTimer ([ double $timeout ] )

Event::addTimer() is an alias of Event::add()

返回值

范例

Example #1 Event::addTimer() example

<?php
$base = new EventBase();
$n = 2;
$e = Event::timer($base, function($n) use (&$e) {
    echo "$n seconds elapsed\n";
    $e->delTimer();
}, $n);
$e->addTimer($n);
$base->loop();
?>

以上例程的输出类似于：

2 seconds elapsed

参见

  • Event::add() - Makes event pending
  • Event::del() - Makes event non-pending
  • Event::delTimer() - Makes timer event non-pending
Event::addSignal
Event::__construct
Event


Constructs Event object

Event::addTimer
Event::del
Event
PHP Manual

Event::__construct

(PECL event >= 1.2.6-beta)

Event::__construct — Constructs Event object

说明

public Event::__construct ( EventBase $base , mixed $fd , int $what , callable $cb [, mixed $arg = NULL ] )

Constructs Event object.

参数

base

The event base to associate with.

fd

stream resource, socket resource, or numeric file descriptor. For timer events pass -1 . For signal events pass the signal number, e.g. SIGHUP .

what

Event flags. See Event flags .

cb

The event callback. See Event callbacks .

arg

Custom data. If specified, it will be passed to the callback when event triggers.

返回值

Returns Event object.

参见

  • Event::signal() - Constructs signal event object
  • Event::timer() - Constructs timer event object
Event::addTimer
Event::del
Event


Makes event non-pending

Event::__construct
Event::delSignal
Event
PHP Manual

Event::del

(PECL libevent >= 0.0.1)

Event::del — Makes event non-pending

说明

public bool Event::del ( void )

Removes an event from the set of monitored events, i.e. makes it non-pending.

参数

此函数没有参数。

返回值

Returns TRUE on success. Otherwise FALSE

参见

  • Event::add() - Makes event pending
Event::__construct
Event::delSignal
Event


Makes signal event non-pending

Event::del
Event::delTimer
Event
PHP Manual

Event::delSignal

(PECL event >= 1.2.6-beta)

Event::delSignal — Makes signal event non-pending

说明

public bool Event::delSignal ( void )

Event::delSignal() is an alias of Event::del()

参见

  • Event::del() - Makes event non-pending
Event::del
Event::delTimer
Event


Makes timer event non-pending

Event::delSignal
Event::free
Event
PHP Manual

Event::delTimer

(PECL event >= 1.2.6-beta)

Event::delTimer — Makes timer event non-pending

说明

public bool Event::delTimer ( void )

Event::delTimer() is an alias of Event::del() .

参见

  • Event::del() - Makes event non-pending
Event::delSignal
Event::free
Event


Make event non-pending and free resources allocated for this event.

Event::delTimer
Event::getSupportedMethods
Event
PHP Manual

Event::free

(PECL libevent >= 0.0.1)

Event::free — Make event non-pending and free resources allocated for this event.

说明

public void Event::free ( void )

Removes event from the list of events monitored by libevent, and free resources allocated for the event.

Warning

The Event::free() method currently doesn't destruct the object itself. To destruct the object completely call unset() , or assign NULL.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • Event::__construct() - Constructs Event object
Event::delTimer
Event::getSupportedMethods
Event


Returns array with of the names of the methods supported in this version of Libevent

Event::free
Event::pending
Event
PHP Manual

Event::getSupportedMethods

(PECL event >= 1.2.6-beta)

Event::getSupportedMethods — Returns array with of the names of the methods supported in this version of Libevent

说明

public static array Event::getSupportedMethods ( void )

Returns array with of the names of the methods(backends) supported in this version of Libevent.

参数

此函数没有参数。

返回值

Returns array.

参见

  • EventConfig
Event::free
Event::pending
Event


Detects whether event is pending or scheduled

Event::getSupportedMethods
Event::set
Event
PHP Manual

Event::pending

(PECL event >= 1.2.6-beta)

Event::pending — Detects whether event is pending or scheduled

说明

public bool Event::pending ( int $flags )

Detects whether event is pending or scheduled

参数

flags

One of, or a composition of the following constants: Event::READ , Event::WRITE , Event::TIMEOUT , Event::SIGNAL .

返回值

Returns TRUE if event is pending or scheduled. Otherwise FALSE.

Event::getSupportedMethods
Event::set
Event


Re-configures event

Event::pending
Event::setPriority
Event
PHP Manual

Event::set

(PECL libevent >= 0.0.1)

Event::set — Re-configures event

说明

public bool Event::set ( EventBase $base , mixed $fd [, int $what [, callable $cb [, mixed $arg ]]] )

Re-configures event. Note, this function doesn't invoke obsolete libevent's event_set. It calls event_assign instead.

参数

base

The event base to associate the event with.

fd

A stream, socket resource, or numeric file descriptor; for signal events pass -1 .

what

See Event flags .

cb

The event callback. See Event callbacks .

arg

Custom data associated with the event. It will be passed to the callback when the event becomes active.

返回值

Returns TRUE on success. Otherwise FALSE.

Event::pending
Event::setPriority
Event


Set event priority

Event::set
Event::setTimer
Event
PHP Manual

Event::setPriority

(PECL event >= 1.2.6-beta)

Event::setPriority — Set event priority

说明

public bool Event::setPriority ( int $priority )

Set event priority.

参数

priority

The event priority.

返回值

Returns TRUE on success. Otherwise FALSE.

Event::set
Event::setTimer
Event


Re-configures timer event

Event::setPriority
Event::signal
Event
PHP Manual

Event::setTimer

(PECL event >= 1.2.6-beta)

Event::setTimer — Re-configures timer event

说明

public bool Event::setTimer ( EventBase $base , callable $cb [, mixed $arg ] )

Re-configures timer event. Note, this function doesn't invoke obsolete libevent's event_set . It calls event_assign instead.

参数

base

The event base to associate with.

cb

The timer event callback. See Event callbacks .

arg

Custom data. If specified, it will be passed to the callback when event triggers.

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • Event::__construct() - Constructs Event object
  • Event::timer() - Constructs timer event object
Event::setPriority
Event::signal
Event


Constructs signal event object

Event::setTimer
Event::timer
Event
PHP Manual

Event::signal

(PECL event >= 1.2.6-beta)

Event::signal — Constructs signal event object

说明

public static Event Event::signal ( EventBase $base , int $signum , callable $cb [, mixed $arg ] )

Constructs signal event object. This is a straightforward method to create a signal event. Note, the generic Event::__construct() method can contruct signal event objects too.

参数

base

The associated event base object.

signum

The signal number.

cb

The signal event callback. See Event callbacks .

arg

Custom data. If specified, it will be passed to the callback when event triggers.

返回值

Returns Event object on success. Otherwise FALSE.

参见

  • Constructing signal events
Event::setTimer
Event::timer
Event


Constructs timer event object

Event::signal
EventBase
Event
PHP Manual

Event::timer

(PECL event >= 1.2.6-beta)

Event::timer — Constructs timer event object

说明

public static Event Event::timer ( EventBase $base , callable $cb [, mixed $arg ] )

Constructs timer event object. This is a straightforward method to create a timer event. Note, the generic Event::__construct() method can contruct signal event objects too.

参数

base

The associated event base object.

cb

The signal event callback. See Event callbacks .

arg

Custom data. If specified, it will be passed to the callback when event triggers.

返回值

Returns Event object on success. Otherwise FALSE.

Event::signal
EventBase
Event


The EventBase class

(PECL event >= 1.2.6-beta)

简介

EventBase class represents libevent's event base structure. It holds a set of events and can poll to determine which events are active.

Each event base has a method , or a backend that it uses to determine which events are ready. The recognized methods are: select , poll , epoll , kqueue , devpoll , evport and win32 .

To configure event base to use, or avoid specific backend EventConfig class can be used.

Warning

Do NOT destroy the EventBase object as long as resources of the associated Event objects are not released. Otherwise, it will lead to unpredictable results!

类摘要

final EventBase {
/* Constants */
const integer LOOP_ONCE = 1 ;
const integer LOOP_NONBLOCK = 2 ;
const integer NOLOCK = 1 ;
const integer STARTUP_IOCP = 4 ;
const integer NO_CACHE_TIME = 8 ;
const integer EPOLL_USE_CHANGELIST = 16 ;
/* 方法 */
public __construct ([ EventConfig $cfg ] )
public void dispatch ( void )
public bool exit ([ double $timeout ] )
public void free ( void )
public int getFeatures ( void )
public string getMethod ( void )
public double getTimeOfDayCached ( void )
public bool gotExit ( void )
public bool gotStop ( void )
public bool loop ([ int $flags ] )
public bool priorityInit ( int $n_priorities )
public bool reInit ( void )
public bool stop ( void )
}

预定义常量

EventBase::LOOP_ONCE

Flag used with EventBase::loop() method which means: "block until libevent has an active event, then exit once all active events have had their callbacks run".

EventBase::LOOP_NONBLOCK

Flag used with EventBase::loop() method which means: "do not block: see which events are ready now, run the callbacks of the highest-priority ones, then exit".

EventBase::NOLOCK

Configuration flag. Do not allocate a lock for the event base, even if we have locking set up".

EventBase::STARTUP_IOCP

Windows-only configuration flag. Enables the IOCP dispatcher at startup.

EventBase::NO_CACHE_TIME

Configuration flag. Instead of checking the current time every time the event loop is ready to run timeout callbacks, check after each timeout callback.

EventBase::EPOLL_USE_CHANGELIST

If we are using the epoll backend, this flag says that it is safe to use Libevent's internal change-list code to batch up adds and deletes in order to try to do as few syscalls as possible.

Setting this flag can make code run faster, but it may trigger a Linux bug: it is not safe to use this flag if one has any fds cloned by dup(), or its variants. Doing so will produce strange and hard-to-diagnose bugs.

This flag can also be activated by settnig the EVENT_EPOLL_USE_CHANGELIST environment variable.

This flag has no effect if one winds up using a backend other than epoll .

Table of Contents

  • EventBase::__construct — Constructs EventBase object
  • EventBase::dispatch — Dispatch pending events
  • EventBase::exit — Stop dispatching events
  • EventBase::free — Free resources allocated for this event base
  • EventBase::getFeatures — Returns bitmask of features supported
  • EventBase::getMethod — Returns event method in use
  • EventBase::getTimeOfDayCached — Returns the current event base time
  • EventBase::gotExit — Checks if the event loop was told to exit
  • EventBase::gotStop — Checks if the event loop was told to exit
  • EventBase::loop — Dispatch pending events
  • EventBase::priorityInit — Sets number of priorities per event base
  • EventBase::reInit — Re-initialize event base(after a fork).
  • EventBase::stop — Tells event_base to stop dispatching events
Event::timer
EventBase::__construct
Event


Constructs EventBase object

EventBase
EventBase::dispatch
EventBase
PHP Manual

EventBase::__construct

(PECL event >= 1.2.6-beta)

EventBase::__construct — Constructs EventBase object

说明

public EventBase::__construct ([ EventConfig $cfg ] )

Constructs EventBase object

参数

cfg

Optional EventConfig object.

返回值

Returns EventBase object.

参见

  • EventConfig
EventBase
EventBase::dispatch
EventBase


Dispatch pending events

EventBase::__construct
EventBase::exit
EventBase
PHP Manual

EventBase::dispatch

(PECL event >= 1.2.6-beta)

EventBase::dispatch — Dispatch pending events

说明

public void EventBase::dispatch ( void )

Wait for events to become active, and run their callbacks. The same as EventBase::loop() with no flags set.

Warning

Do NOT destroy the EventBase object as long as resources of the associated Event objects are not released. Otherwise, it will lead to unpredictable results!

参数

此函数没有参数。

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • EventBase::loop() - Dispatch pending events
EventBase::__construct
EventBase::exit
EventBase


Stop dispatching events

EventBase::dispatch
EventBase::free
EventBase
PHP Manual

EventBase::exit

(PECL event >= 1.2.6-beta)

EventBase::exit — Stop dispatching events

说明

public bool EventBase::exit ([ double $timeout ] )

Tells event base to stop optionally after given number of seconds.

参数

timeout

Optional number of seconds after which the event base should stop dispatching events.

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • EventBase::stop() - Tells event_base to stop dispatching events
EventBase::dispatch
EventBase::free
EventBase


Free resources allocated for this event base

EventBase::exit
EventBase::getFeatures
EventBase
PHP Manual

EventBase::free

(PECL event >= 1.10.0)

EventBase::free — Free resources allocated for this event base

说明

public void EventBase::free ( void )

Deallocates resources allocated by libevent for the EventBase object.

Warning

The EventBase::free() method doesn't destruct the object itself. To destruct the object completely call unset() , or assign NULL.

This method does not deallocate or detach any of the events that are currently associated with the EventBase object, or close any of their sockets - beware.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • EventBase::__construct() - Constructs EventBase object
EventBase::exit
EventBase::getFeatures
EventBase


Returns bitmask of features supported

EventBase::free
EventBase::getMethod
EventBase
PHP Manual

EventBase::getFeatures

(PECL event >= 1.2.6-beta)

EventBase::getFeatures — Returns bitmask of features supported

说明

public int EventBase::getFeatures ( void )

Returns bitmask of features supported.

参数

此函数没有参数。

返回值

Returns integer representing a bitmask of supported features. See EventConfig::FEATURE_* constants .

范例

Example #1 EventBase::getFeatures() example

<?php
// Avoiding "select" method
$cfg = new EventConfig();
if ($cfg->avoidMethod("select")) {
    echo "`select' method avoided\n";
}

$base = new EventBase($cfg);

echo "Features:\n";
$features = $base->getFeatures();
($features & EventConfig::FEATURE_ET) and print("ET - edge-triggered IO\n");
($features & EventConfig::FEATURE_O1) and print("O1 - O(1) operation for adding/deletting events\n");
($features & EventConfig::FEATURE_FDS) and print("FDS - arbitrary file descriptor types, and not just sockets\n");
?>

参见

  • EventBase::getMethod() - Returns event method in use
  • EventConfig
EventBase::free
EventBase::getMethod
EventBase


Returns event method in use

EventBase::getFeatures
EventBase::getTimeOfDayCached
EventBase
PHP Manual

EventBase::getMethod

(PECL event >= 1.2.6-beta)

EventBase::getMethod — Returns event method in use

说明

public string EventBase::getMethod ( void )

参数

此函数没有参数。

返回值

String representing used event method(backend).

范例

Example #1 EventBase::getMethod() example

<?php
$cfg = new EventConfig();
if ($cfg->avoidMethod("select")) {
    echo "`select' method avoided\n";
}

// Create event_base associated with the config
$base = new EventBase($cfg);
echo "Event method used: ", $base->getMethod(), PHP_EOL;

?>

以上例程的输出类似于：

`select' method avoided
Event method used: epoll

参见

  • EventBase::getFeatures() - Returns bitmask of features supported
EventBase::getFeatures
EventBase::getTimeOfDayCached
EventBase


Returns the current event base time

EventBase::getMethod
EventBase::gotExit
EventBase
PHP Manual

EventBase::getTimeOfDayCached

(PECL event >= 1.2.6-beta)

EventBase::getTimeOfDayCached — Returns the current event base time

说明

public double EventBase::getTimeOfDayCached ( void )

On success returns the current time(as returned by gettimeofday() ), looking at the cached value in base if possible, and calling gettimeofday() or clock_gettime() as appropriate if there is no cached time.

参数

此函数没有参数。

返回值

Returns the current event base time. On failure returns NULL.

EventBase::getMethod
EventBase::gotExit
EventBase


Checks if the event loop was told to exit

EventBase::getTimeOfDayCached
EventBase::gotStop
EventBase
PHP Manual

EventBase::gotExit

(PECL event >= 1.2.6-beta)

EventBase::gotExit — Checks if the event loop was told to exit

说明

public bool EventBase::gotExit ( void )

Checks if the event loop was told to exit by EventBase::exit() .

参数

此函数没有参数。

返回值

Returns TRUE, event loop was told to exit by EventBase::exit() . Otherwise FALSE.

参见

  • EventBase::exit() - Stop dispatching events
  • EventBase::stop() - Tells event_base to stop dispatching events
  • EventBase::gotStop() - Checks if the event loop was told to exit
EventBase::getTimeOfDayCached
EventBase::gotStop
EventBase


Checks if the event loop was told to exit

EventBase::gotExit
EventBase::loop
EventBase
PHP Manual

EventBase::gotStop

(PECL event >= 1.2.6-beta)

EventBase::gotStop — Checks if the event loop was told to exit

说明

public bool EventBase::gotStop ( void )

Checks if the event loop was told to exit by EventBase::stop() .

参数

此函数没有参数。

返回值

Returns TRUE, event loop was told to stop by EventBase::stop() . Otherwise FALSE.

参见

  • EventBase::exit() - Stop dispatching events
  • EventBase::stop() - Tells event_base to stop dispatching events
  • EventBase::gotExit() - Checks if the event loop was told to exit
EventBase::gotExit
EventBase::loop
EventBase


Dispatch pending events

EventBase::gotStop
EventBase::priorityInit
EventBase
PHP Manual

EventBase::loop

(PECL event >= 1.2.6-beta)

EventBase::loop — Dispatch pending events

说明

public bool EventBase::loop ([ int $flags ] )

Wait for events to become active, and run their callbacks.

Warning

Do NOT destroy the EventBase object as long as resources of the associated Event objects are not released. Otherwise, it will lead to unpredictable results!

参数

flags

Optional flags. One of EventBase::LOOP_* constants. See EventBase constants .

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • EventBase::dispatch() - Dispatch pending events
EventBase::gotStop
EventBase::priorityInit
EventBase


Sets number of priorities per event base

EventBase::loop
EventBase::reInit
EventBase
PHP Manual

EventBase::priorityInit

(PECL event >= 1.2.6-beta)

EventBase::priorityInit — Sets number of priorities per event base

说明

public bool EventBase::priorityInit ( int $n_priorities )

Sets number of priorities per event base.

参数

n_priorities

The number of priorities per event base.

返回值

Returns TRUE on success, otherwise FALSE.

参见

  • Event::setPriority() - Set event priority
EventBase::loop
EventBase::reInit
EventBase


Re-initialize event base(after a fork).

EventBase::priorityInit
EventBase::stop
EventBase
PHP Manual

EventBase::reInit

(PECL event >= 1.2.6-beta)

EventBase::reInit — Re-initialize event base(after a fork).

说明

public bool EventBase::reInit ( void )

Re-initialize event base. Should be called after a fork.

参数

此函数没有参数。

返回值

Returns TRUE on success. Otherwise FALSE.

EventBase::priorityInit
EventBase::stop
EventBase


Tells event_base to stop dispatching events

EventBase::reInit
EventBuffer
EventBase
PHP Manual

EventBase::stop

(PECL event >= 1.2.6-beta)

EventBase::stop — Tells event_base to stop dispatching events

说明

public bool EventBase::stop ( void )

Tells event_base to stop dispatching events

参数

此函数没有参数。

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • EventBase::exit() - Stop dispatching events
  • EventBase::gotStop() - Checks if the event loop was told to exit
EventBase::reInit
EventBuffer
EventBase


The EventBuffer class

(PECL event >= 1.5.0)

简介

EventBuffer represents Libevent's "evbuffer", an utility functionality for buffered I/O.

Event buffers are meant to be generally useful for doing the "buffer" part of buffered network I/O.

类摘要

EventBuffer {
/* Constants */
const integer EOL_ANY = 0 ;
const integer EOL_CRLF = 1 ;
const integer EOL_CRLF_STRICT = 2 ;
const integer EOL_LF = 3 ;
const integer PTR_SET = 0 ;
const integer PTR_ADD = 1 ;
/* 属性 */
public readonly int $length ;
public readonly int $contiguous_space ;
/* 方法 */
public bool add ( string $data )
public bool addBuffer ( EventBuffer $buf )
public int appendFrom ( EventBuffer $buf , int $len )
public __construct ( void )
public int copyout ( string &$data , int $max_bytes )
public bool drain ( int $len )
public void enableLocking ( void )
public bool expand ( int $len )
public bool freeze ( bool $at_front )
public void lock ( void )
public bool prepend ( string $data )
public bool prependBuffer ( EventBuffer $buf )
public string pullup ( int $size )
public string read ( int $max_bytes )
public int read ( mixed $fd , int $howmuch )
public string readLine ( int $eol_style )
public mixed search ( string $what [, int $start = -1 [, int $end = -1 ]] )
public mixed searchEol ([ int $start = -1 [, int $eol_style = EventBuffer::EOL_ANY ]] )
public string substr ( int $start [, int $length ] )
public bool unfreeze ( bool $at_front )
public bool unlock ( void )
public int write ( mixed $fd [, int $howmuch ] )
}

属性

length

The number of bytes stored in an event buffer.

contiguous_space

The number of bytes stored contiguously at the front of the buffer. The bytes in a buffer may be stored in multiple separate chunks of memory; the property returns the number of bytes currently stored in the first chunk.

预定义常量

EventBuffer::EOL_ANY

The end of line is any sequence of any number of carriage return and linefeed characters. This format is not very useful; it exists mainly for backward compatibility.

EventBuffer::EOL_CRLF

The end of the line is an optional carriage return, followed by a linefeed. (In other words, it is either a "\r\n" or a "\n" .) This format is useful in parsing text-based Internet protocols, since the standards generally prescribe a "\r\n" line-terminator, but nonconformant clients sometimes say just "\n" .

EventBuffer::EOL_CRLF_STRICT

The end of a line is a single carriage return, followed by a single linefeed. (This is also known as "\r\n" . The ASCII values are 0x0D 0x0A ).

EventBuffer::EOL_LF

The end of a line is a single linefeed character. (This is also known as "\n" . It is ASCII value is 0x0A .)

EventBuffer::PTR_SET

Flag used as argument of EventBuffer::setPosition() method. If this flag specified, the position pointer is moved to an absolute position within the buffer.

EventBuffer::PTR_ADD

The same as EventBuffer::PTR_SET , except this flag causes EventBuffer::setPosition() method to move position forward up to the specified number of bytes(instead of setting absolute position).

Table of Contents

  • EventBuffer::add — Append data to the end of an event buffer
  • EventBuffer::addBuffer — Move all data from a buffer provided to the current instance of EventBuffer
  • EventBuffer::appendFrom — Moves the specified number of bytes from a source buffer to the end of the current buffer
  • EventBuffer::__construct — Constructs EventBuffer object
  • EventBuffer::copyout — Copies out specified number of bytes from the front of the buffer
  • EventBuffer::drain — Removes specified number of bytes from the front of the buffer without copying it anywhere
  • EventBuffer::enableLocking — 说明
  • EventBuffer::expand — Reserves space in buffer
  • EventBuffer::freeze — Prevent calls that modify an event buffer from succeeding
  • EventBuffer::lock — Acquires a lock on buffer
  • EventBuffer::prepend — Prepend data to the front of the buffer
  • EventBuffer::prependBuffer — Moves all data from source buffer to the front of current buffer
  • EventBuffer::pullup — Linearizes data within buffer and returns it's contents as a string
  • EventBuffer::read — Read data from an evbuffer and drain the bytes read
  • EventBuffer::readFrom — Read data from a file onto the end of the buffer
  • EventBuffer::readLine — Extracts a line from the front of the buffer
  • EventBuffer::search — Scans the buffer for an occurrence of a string
  • EventBuffer::searchEol — Scans the buffer for an occurrence of an end of line
  • EventBuffer::substr — Substracts a portion of the buffer data
  • EventBuffer::unfreeze — Re-enable calls that modify an event buffer
  • EventBuffer::unlock — Releases lock acquired by EventBuffer::lock
  • EventBuffer::write — Write contents of the buffer to a file or socket
EventBase::stop
EventBuffer::add
Event


Append data to the end of an event buffer

EventBuffer
EventBuffer::addBuffer
EventBuffer
PHP Manual

EventBuffer::add

(PECL event >= 1.2.6-beta)

EventBuffer::add — Append data to the end of an event buffer

说明

public bool EventBuffer::add ( string $data )

Append data to the end of an event buffer.

参数

data

String to be appended to the end of the buffer.

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • EventBuffer::addBuffer() - Move all data from a buffer provided to the current instance of EventBuffer
EventBuffer
EventBuffer::addBuffer
EventBuffer


Move all data from a buffer provided to the current instance of EventBuffer

EventBuffer::add
EventBuffer::appendFrom
EventBuffer
PHP Manual

EventBuffer::addBuffer

(PECL event >= 1.2.6-beta)

EventBuffer::addBuffer — Move all data from a buffer provided to the current instance of EventBuffer

说明

public bool EventBuffer::addBuffer ( EventBuffer $buf )

Move all data from the buffer provided in buf parameter to the end of current EventBuffer . This is a destructive add. The data from one buffer moves into the other buffer. However, no unnecessary memory copies occur.

参数

buf

The source EventBuffer object.

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • EventBuffer::add() - Append data to the end of an event buffer
EventBuffer::add
EventBuffer::appendFrom
EventBuffer


Moves the specified number of bytes from a source buffer to the end of the current buffer

EventBuffer::addBuffer
EventBuffer::__construct
EventBuffer
PHP Manual

EventBuffer::appendFrom

(PECL event >= 1.6.0)

EventBuffer::appendFrom — Moves the specified number of bytes from a source buffer to the end of the current buffer

说明

public int EventBuffer::appendFrom ( EventBuffer $buf , int $len )

Moves the specified number of bytes from a source buffer to the end of the current buffer. If there are fewer number of bytes, it moves all the bytes available from the source buffer.

参数

buf

Source buffer.

len

返回值

Returns the number of bytes read.

更新日志

版本 | 说明
1.6.0 | Renamed EventBuffer::appendFrom()(the old method name) to EventBuffer::appendFrom().

参见

  • EventBuffer::copyout() - Copies out specified number of bytes from the front of the buffer
  • EventBuffer::drain() - Removes specified number of bytes from the front of the buffer without copying it anywhere
  • EventBuffer::pullup() - Linearizes data within buffer and returns it's contents as a string
  • EventBuffer::readLine() - Extracts a line from the front of the buffer
  • EventBuffer::read() - Read data from an evbuffer and drain the bytes read
EventBuffer::addBuffer
EventBuffer::__construct
EventBuffer


Constructs EventBuffer object

EventBuffer::appendFrom
EventBuffer::copyout
EventBuffer
PHP Manual

EventBuffer::__construct

(PECL event >= 1.2.6-beta)

EventBuffer::__construct — Constructs EventBuffer object

说明

public EventBuffer::__construct ( void )

Constructs EventBuffer object

参数

此函数没有参数。

返回值

Returns EventBuffer object.

EventBuffer::appendFrom
EventBuffer::copyout
EventBuffer


Copies out specified number of bytes from the front of the buffer

EventBuffer::__construct
EventBuffer::drain
EventBuffer
PHP Manual

EventBuffer::copyout

(PECL event >= 1.2.6-beta)

EventBuffer::copyout — Copies out specified number of bytes from the front of the buffer

说明

public int EventBuffer::copyout ( string &$data , int $max_bytes )

Behaves just like EventBuffer::read() , but does not drain any data from the buffer. I.e. it copies the first max_bytes bytes from the front of the buffer into data . If there are fewer than max_bytes bytes available, the function copies all the bytes there are.

参数

data

Output string.

max_bytes

The number of bytes to copy.

返回值

Returns the number of bytes copied, or -1 on failure.

参见

  • EventBuffer::read() - Read data from an evbuffer and drain the bytes read
  • EventBuffer::appendFrom() - Moves the specified number of bytes from a source buffer to the end of the current buffer
EventBuffer::__construct
EventBuffer::drain
EventBuffer


Removes specified number of bytes from the front of the buffer without copying it anywhere

EventBuffer::copyout
EventBuffer::enableLocking
EventBuffer
PHP Manual

EventBuffer::drain

(PECL event >= 1.2.6-beta)

EventBuffer::drain — Removes specified number of bytes from the front of the buffer without copying it anywhere

说明

public bool EventBuffer::drain ( int $len )

Behaves as EventBuffer::read() , except that it does not copy the data: it just removes it from the front of the buffer.

参数

len

The number of bytes to remove from the buffer.

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • EventBuffer::read() - Read data from an evbuffer and drain the bytes read
  • EventBuffer::appendFrom() - Moves the specified number of bytes from a source buffer to the end of the current buffer
EventBuffer::copyout
EventBuffer::enableLocking
EventBuffer


EventBuffer::drain
EventBuffer::expand
EventBuffer
PHP Manual

EventBuffer::enableLocking

(PECL event >= 1.2.6-beta)

EventBuffer::enableLocking —

说明

public void EventBuffer::enableLocking ( void )

Enable locking on an EventBuffer so that it can safely be used by multiple threads at the same time. When locking is enabled, the lock will be held when callbacks are invoked. This could result in deadlock if you aren't careful. Plan accordingly!

参数

此函数没有参数。

返回值

没有返回值。

参见

  • » Evbuffers and Thread-safety
EventBuffer::drain
EventBuffer::expand
EventBuffer


Reserves space in buffer

EventBuffer::enableLocking
EventBuffer::freeze
EventBuffer
PHP Manual

EventBuffer::expand

(PECL event >= 1.2.6-beta)

EventBuffer::expand — Reserves space in buffer

说明

public bool EventBuffer::expand ( int $len )

Alters the last chunk of memory in the buffer, or adds a new chunk, such that the buffer is now large enough to contain len bytes without any further allocations.

参数

len

The number of bytes to reserve for the buffer

返回值

Returns TRUE on success. Otherwise FALSE.

EventBuffer::enableLocking
EventBuffer::freeze
EventBuffer


Prevent calls that modify an event buffer from succeeding

EventBuffer::expand
EventBuffer::lock
EventBuffer
PHP Manual

EventBuffer::freeze

(PECL event >= 1.2.6-beta)

EventBuffer::freeze — Prevent calls that modify an event buffer from succeeding

说明

public bool EventBuffer::freeze ( bool $at_front )

Prevent calls that modify an event buffer from succeeding

参数

at_front

Whether to disable changes to the front or end of the buffer.

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • EventBuffer::unfreeze() - Re-enable calls that modify an event buffer
EventBuffer::expand
EventBuffer::lock
EventBuffer


Acquires a lock on buffer

EventBuffer::freeze
EventBuffer::prepend
EventBuffer
PHP Manual

EventBuffer::lock

(PECL event >= 1.2.6-beta)

EventBuffer::lock — Acquires a lock on buffer

说明

public void EventBuffer::lock ( void )

Acquires a lock on buffer. Can be used in pair with EventBuffer::unlock() to make a set of operations atomic, i.e. thread-safe. Note, it is not needed to lock buffers for individual operations. When locking is enabled(see EventBuffer::enableLocking() ), individual operations on event buffers are already atomic.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • EventBuffer::unlock() - Releases lock acquired by EventBuffer::lock
EventBuffer::freeze
EventBuffer::prepend
EventBuffer


Prepend data to the front of the buffer

EventBuffer::lock
EventBuffer::prependBuffer
EventBuffer
PHP Manual

EventBuffer::prepend

(PECL event >= 1.2.6-beta)

EventBuffer::prepend — Prepend data to the front of the buffer

说明

public bool EventBuffer::prepend ( string $data )

Prepend data to the front of the buffer.

参数

data

String to be prepended to the front of the buffer.

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • EventBuffer::prependBuffer() - Moves all data from source buffer to the front of current buffer
  • EventBuffer::add() - Append data to the end of an event buffer
  • EventBuffer::addBuffer() - Move all data from a buffer provided to the current instance of EventBuffer
EventBuffer::lock
EventBuffer::prependBuffer
EventBuffer


Moves all data from source buffer to the front of current buffer

EventBuffer::prepend
EventBuffer::pullup
EventBuffer
PHP Manual

EventBuffer::prependBuffer

(PECL event >= 1.2.6-beta)

EventBuffer::prependBuffer — Moves all data from source buffer to the front of current buffer

说明

public bool EventBuffer::prependBuffer ( EventBuffer $buf )

Behaves as EventBuffer::addBuffer() , except that it moves data to the front of the buffer.

参数

buf

Source buffer.

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • EventBuffer::add() - Append data to the end of an event buffer
  • EventBuffer::addBuffer() - Move all data from a buffer provided to the current instance of EventBuffer
  • EventBuffer::prepend() - Prepend data to the front of the buffer
EventBuffer::prepend
EventBuffer::pullup
EventBuffer


Linearizes data within buffer and returns it's contents as a string

EventBuffer::prependBuffer
EventBuffer::read
EventBuffer
PHP Manual

EventBuffer::pullup

(PECL event >= 1.2.6-beta)

EventBuffer::pullup — Linearizes data within buffer and returns it's contents as a string

说明

public string EventBuffer::pullup ( int $size )

"Linearizes" the first size bytes of the buffer, copying or moving them as needed to ensure that they are all contiguous and occupying the same chunk of memory. If size is negative, the function linearizes the entire buffer.

Warning

Calling EventBuffer::pullup() with a large size can be quite slow, since it potentially needs to copy the entire buffer's contents.

参数

size

The number of bytes required to be contiguous within the buffer.

返回值

If size is greater than the number of bytes in the buffer, the function returns NULL. Otherwise, EventBuffer::pullup() returns string.

参见

  • EventBuffer::copyout() - Copies out specified number of bytes from the front of the buffer
  • EventBuffer::drain() - Removes specified number of bytes from the front of the buffer without copying it anywhere
  • EventBuffer::read() - Read data from an evbuffer and drain the bytes read
  • EventBuffer::readLine() - Extracts a line from the front of the buffer
  • EventBuffer::appendFrom() - Moves the specified number of bytes from a source buffer to the end of the current buffer
EventBuffer::prependBuffer
EventBuffer::read
EventBuffer


Read data from an evbuffer and drain the bytes read

EventBuffer::pullup
EventBuffer::readFrom
EventBuffer
PHP Manual

EventBuffer::read

(PECL event >= 1.6.0)

EventBuffer::read — Read data from an evbuffer and drain the bytes read

说明

public string EventBuffer::read ( int $max_bytes )

Read the first max_bytes from the buffer and drain the bytes read. If more max_bytes are requested than are available in the buffer, it only extracts as many bytes as available.

参数

max_bytes

Maxmimum number of bytes to read from the buffer.

返回值

Returns string read, or FALSE on failure.

更新日志

版本 | 说明
1.6.0 | Renamed EventBuffer::read()(the old method name) to EventBuffer::read(). EventBuffer::read() now takes only max_bytes argument; returns string instead of integer.

参见

  • EventBuffer::copyout() - Copies out specified number of bytes from the front of the buffer
  • EventBuffer::drain() - Removes specified number of bytes from the front of the buffer without copying it anywhere
  • EventBuffer::pullup() - Linearizes data within buffer and returns it's contents as a string
  • EventBuffer::readLine() - Extracts a line from the front of the buffer
  • EventBuffer::appendFrom() - Moves the specified number of bytes from a source buffer to the end of the current buffer
EventBuffer::pullup
EventBuffer::readFrom
EventBuffer


Read data from a file onto the end of the buffer

EventBuffer::read
EventBuffer::readLine
EventBuffer
PHP Manual

EventBuffer::readFrom

(PECL event >= 1.7.0)

EventBuffer::readFrom — Read data from a file onto the end of the buffer

说明

public int EventBuffer::read ( mixed $fd , int $howmuch )

Read data from the file specified by fd onto the end of the buffer.

参数

fd

Socket resource, stream, or numeric file descriptor.

howmuch

Maxmimum number of bytes to read.

返回值

Returns the number of bytes read, or FALSE on failure.

参见

  • EventBuffer::copyout() - Copies out specified number of bytes from the front of the buffer
  • EventBuffer::drain() - Removes specified number of bytes from the front of the buffer without copying it anywhere
  • EventBuffer::pullup() - Linearizes data within buffer and returns it's contents as a string
  • EventBuffer::readLine() - Extracts a line from the front of the buffer
  • EventBuffer::appendFrom() - Moves the specified number of bytes from a source buffer to the end of the current buffer
EventBuffer::read
EventBuffer::readLine
EventBuffer


Extracts a line from the front of the buffer

EventBuffer::readFrom
EventBuffer::search
EventBuffer
PHP Manual

EventBuffer::readLine

(PECL event >= 1.2.6-beta)

EventBuffer::readLine — Extracts a line from the front of the buffer

说明

public string EventBuffer::readLine ( int $eol_style )

Extracts a line from the front of the buffer and returns it in a newly allocated string. If there is not a whole line to read, the function returns NULL. The line terminator is not included in the copied string.

参数

eol_style

One of EventBuffer:EOL_* constants .

返回值

On success returns the line read from the buffer, otherwise NULL.

参见

  • EventBuffer::copyout() - Copies out specified number of bytes from the front of the buffer
  • EventBuffer::drain() - Removes specified number of bytes from the front of the buffer without copying it anywhere
  • EventBuffer::pullup() - Linearizes data within buffer and returns it's contents as a string
  • EventBuffer::read() - Read data from an evbuffer and drain the bytes read
  • EventBuffer::appendFrom() - Moves the specified number of bytes from a source buffer to the end of the current buffer
EventBuffer::readFrom
EventBuffer::search
EventBuffer


Scans the buffer for an occurrence of a string

EventBuffer::readLine
EventBuffer::searchEol
EventBuffer
PHP Manual

EventBuffer::search

(PECL event >= 1.2.6-beta)

EventBuffer::search — Scans the buffer for an occurrence of a string

说明

public mixed EventBuffer::search ( string $what [, int $start = -1 [, int $end = -1 ]] )

Scans the buffer for an occurrence of the string what . It returns numeric position of the string, or FALSE if the string was not found.

If the start argument is provided, it points to the position at which the search should begin; otherwise, the search is performed from the start of the string. If end argument provided, the search is performed between start and end buffer positions.

参数

what

String to search.

start

Start search position.

end

End search position.

返回值

Returns numeric position of the first occurance of the string in the buffer, or FALSE if string is not found.

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

范例

Example #1 EventBuffer::search() example

<?php
// Count total occurances of 'str' in 'buf'
function count_instances($buf, $str) {
    $total = 0;
    $p     = 0;
    $i     = 0;

    while (1) {
        $p = $buf->search($str, $p);
        if ($p === FALSE) {
            break;
        }
        ++$total;
        ++$p;
    }

    return $total;
}

$buf = new EventBuffer();
$buf->add("Some string within a string inside another string");
var_dump(count_instances($buf, "str"));
?>

以上例程的输出类似于：

int(3)

参见

  • EventBuffer::searchEol() - Scans the buffer for an occurrence of an end of line
EventBuffer::readLine
EventBuffer::searchEol
EventBuffer


Scans the buffer for an occurrence of an end of line

EventBuffer::search
EventBuffer::substr
EventBuffer
PHP Manual

EventBuffer::searchEol

(PECL event >= 1.5.0)

EventBuffer::searchEol — Scans the buffer for an occurrence of an end of line

说明

public mixed EventBuffer::searchEol ([ int $start = -1 [, int $eol_style = EventBuffer::EOL_ANY ]] )

Scans the buffer for an occurrence of an end of line specified by eol_style parameter . It returns numeric position of the string, or FALSE if the string was not found.

If the start argument is provided, it represents the position at which the search should begin; otherwise, the search is performed from the start of the string. If end argument provided, the search is performed between start and end buffer positions.

参数

start

Start search position.

eol_style

One of EventBuffer:EOL_* constants .

返回值

Returns numeric position of the first occurance of end-of-line symbol in the buffer, or FALSE if not found.

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

参见

  • EventBuffer::search() - Scans the buffer for an occurrence of a string
EventBuffer::search
EventBuffer::substr
EventBuffer


Substracts a portion of the buffer data

EventBuffer::searchEol
EventBuffer::unfreeze
EventBuffer
PHP Manual

EventBuffer::substr

(PECL event >= 1.6.0)

EventBuffer::substr — Substracts a portion of the buffer data

说明

public string EventBuffer::substr ( int $start [, int $length ] )

Substracts up to length bytes of the buffer data beginning at start position.

参数

start

The start position of data to be substracted.

length

Maximum number of bytes to substract.

返回值

Returns the data substracted as a string on success, or FALSE on failure.

参见

  • EventBuffer::read() - Read data from an evbuffer and drain the bytes read
EventBuffer::searchEol
EventBuffer::unfreeze
EventBuffer


Re-enable calls that modify an event buffer

EventBuffer::substr
EventBuffer::unlock
EventBuffer
PHP Manual

EventBuffer::unfreeze

(PECL event >= 1.2.6-beta)

EventBuffer::unfreeze — Re-enable calls that modify an event buffer

说明

public bool EventBuffer::unfreeze ( bool $at_front )

Re-enable calls that modify an event buffer.

参数

at_front

Whether to enable events at the front or at the end of the buffer.

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • EventBuffer::freeze() - Prevent calls that modify an event buffer from succeeding
EventBuffer::substr
EventBuffer::unlock
EventBuffer


Releases lock acquired by EventBuffer::lock

EventBuffer::unfreeze
EventBuffer::write
EventBuffer
PHP Manual

EventBuffer::unlock

(PECL event >= 1.2.6-beta)

EventBuffer::unlock — Releases lock acquired by EventBuffer::lock

说明

public bool EventBuffer::unlock ( void )

Releases lock acquired by EventBuffer::lock() .

参数

此函数没有参数。

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • EventBuffer::lock() - Acquires a lock on buffer
EventBuffer::unfreeze
EventBuffer::write
EventBuffer


Write contents of the buffer to a file or socket

EventBuffer::unlock
EventBufferEvent
EventBuffer
PHP Manual

EventBuffer::write

(PECL event >= 1.6.0)

EventBuffer::write — Write contents of the buffer to a file or socket

说明

public int EventBuffer::write ( mixed $fd [, int $howmuch ] )

Write contents of the buffer to a file descriptor. The buffer will be drained after the bytes have been successfully written.

参数

fd

Socket resource, stream or numeric file descriptor associated normally associated with a socket.

howmuch

The maximum number of bytes to write.

返回值

Returns the number of bytes written, or FALSE on error.

参见

  • EventBuffer::read() - Read data from an evbuffer and drain the bytes read
EventBuffer::unlock
EventBufferEvent
EventBuffer


The EventBufferEvent class

(PECL event >= 1.2.6-beta)

简介

Represents Libevent's buffer event.

Usually an application wants to perform some amount of data buffering in addition to just responding to events. When we want to write data, for example, the usual pattern looks like:

  1. Decide that we want to write some data to a connection; put that data in a buffer.

  2. Wait for the connection to become writable

  3. Write as much of the data as we can

  4. Remember how much we wrote, and if we still have more data to write, wait for the connection to become writable again.

This buffered I/O pattern is common enough that Libevent provides a generic mechanism for it. A "buffer event" consists of an underlying transport (like a socket), a read buffer, and a write buffer. Instead of regular events, which give callbacks when the underlying transport is ready to be read or written, a buffer event invokes its user-supplied callbacks when it has read or written enough data.

类摘要

final EventBufferEvent {
/* Constants */
const integer READING = 1 ;
const integer WRITING = 2 ;
const integer EOF = 16 ;
const integer ERROR = 32 ;
const integer TIMEOUT = 64 ;
const integer CONNECTED = 128 ;
const integer OPT_CLOSE_ON_FREE = 1 ;
const integer OPT_THREADSAFE = 2 ;
const integer OPT_DEFER_CALLBACKS = 4 ;
const integer OPT_UNLOCK_CALLBACKS = 8 ;
const integer SSL_OPEN = 0 ;
const integer SSL_CONNECTING = 1 ;
const integer SSL_ACCEPTING = 2 ;
/* 属性 */
public integer $fd ;
public integer $priority ;
public readonly EventBuffer $input ;
public readonly EventBuffer $output ;
/* 方法 */
public void close ( void )
public bool connect ( string $addr )
public bool connectHost ( EventDnsBase $dns_base , string $hostname , int $port [, int $family = EventUtil::AF_UNSPEC ] )
public __construct ( EventBase $base [, mixed $socket = NULL [, int $options = 0 [, callable $readcb = NULL [, callable $writecb = NULL [, callable $eventcb = NULL ]]]]] )
public static array createPair ( EventBase $base [, int $options = 0 ] )
public bool disable ( int $events )
public bool enable ( int $events )
public void free ( void )
public string getDnsErrorString ( void )
public int getEnabled ( void )
public EventBuffer getInput ( void )
public EventBuffer getOutput ( void )
public string read ( int $size )
public bool readBuffer ( EventBuffer $buf )
public void setCallbacks ( callable $readcb , callable $writecb , callable $eventcb [, string $arg ] )
public bool setPriority ( int $priority )
public bool setTimeouts ( float $timeout_read , float $timeout_write )
public void setWatermark ( int $events , int $lowmark , int $highmark )
public string sslError ( void )
public static EventBufferEvent sslFilter ( EventBase $base , EventBufferEvent $underlying , EventSslContext $ctx , int $state [, int $options = 0 ] )
public string sslGetCipherInfo ( void )
public string sslGetCipherName ( void )
public string sslGetCipherVersion ( void )
public string sslGetProtocol ( void )
public void sslRenegotiate ( void )
public static EventBufferEvent sslSocket ( EventBase $base , mixed $socket , EventSslContext $ctx , int $state [, int $options ] )
public bool write ( string $data )
public bool writeBuffer ( EventBuffer $buf )
}

属性

fd

Numeric file descriptor associated with the buffer event. Normally represents a bound socket. Equals to NULL, if there is no file descriptor(socket) associated with the buffer event.

priority

The priority of the events used to implement the buffer event.

input

Underlying input buffer object( EventBuffer )

output

Underlying output buffer object( EventBuffer )

预定义常量

EventBufferEvent::READING

An event occured during a read operation on the bufferevent. See the other flags for which event it was.

EventBufferEvent::WRITING

An event occured during a write operation on the bufferevent. See the other flags for which event it was.

EventBufferEvent::EOF

Got an end-of-file indication on the buffer event.

EventBufferEvent::ERROR

An error occurred during a bufferevent operation. For more information on what the error was, call EventUtil::getLastSocketErrno() and/or EventUtil::getLastSocketError() .

EventBufferEvent::TIMEOUT

EventBufferEvent::CONNECTED

Finished a requested connection on the bufferevent.

EventBufferEvent::OPT_CLOSE_ON_FREE

When the buffer event is freed, close the underlying transport. This will close an underlying socket, free an underlying buffer event, etc.

EventBufferEvent::OPT_THREADSAFE

Automatically allocate locks for the bufferevent, so that it's safe to use from multiple threads.

EventBufferEvent::OPT_DEFER_CALLBACKS

When this flag is set, the bufferevent defers all of its callbacks. See » Fast portable non-blocking network programming with Libevent, Deferred callbacks .

EventBufferEvent::OPT_UNLOCK_CALLBACKS

By default, when the bufferevent is set up to be threadsafe, the buffer event's locks are held whenever the any user-provided callback is invoked. Setting this option makes Libevent release the buffer event's lock when it's invoking the callbacks.

EventBufferEvent::SSL_OPEN

The SSL handshake is done

EventBufferEvent::SSL_CONNECTING

SSL is currently performing negotiation as a client

EventBufferEvent::SSL_ACCEPTING

SSL is currently performing negotiation as a server

Table of Contents

  • EventBufferEvent::close — Closes file descriptor associated with the current buffer event
  • EventBufferEvent::connect — Connect buffer event's file descriptor to given address or UNIX socket
  • EventBufferEvent::connectHost — Connects to a hostname with optionally asyncronous DNS resolving
  • EventBufferEvent::__construct — Constructs EventBufferEvent object
  • EventBufferEvent::createPair — Creates two buffer events connected to each other
  • EventBufferEvent::disable — Disable events read, write, or both on a buffer event.
  • EventBufferEvent::enable — Enable events read, write, or both on a buffer event.
  • EventBufferEvent::free — Free a buffer event
  • EventBufferEvent::getDnsErrorString — Returns string describing the last failed DNS lookup attempt
  • EventBufferEvent::getEnabled — Returns bitmask of events currently enabled on the buffer event
  • EventBufferEvent::getInput — Returns underlying input buffer associated with current buffer event
  • EventBufferEvent::getOutput — Returns underlying output buffer associated with current buffer event
  • EventBufferEvent::read — Read buffer's data
  • EventBufferEvent::readBuffer — Drains the entire contents of the input buffer and places them into buf
  • EventBufferEvent::setCallbacks — Assigns read, write and event(status) callbacks
  • EventBufferEvent::setPriority — Assign a priority to a bufferevent
  • EventBufferEvent::setTimeouts — Set the read and write timeout for a buffer event
  • EventBufferEvent::setWatermark — Adjusts read and/or write watermarks
  • EventBufferEvent::sslError — Returns most recent OpenSSL error reported on the buffer event
  • EventBufferEvent::sslFilter — Create a new SSL buffer event to send its data over another buffer event
  • EventBufferEvent::sslGetCipherInfo — Returns a textual description of the cipher.
  • EventBufferEvent::sslGetCipherName — Returns the current cipher name of the SSL connection.
  • EventBufferEvent::sslGetCipherVersion — Returns version of cipher used by current SSL connection.
  • EventBufferEvent::sslGetProtocol — Returns the name of the protocol used for current SSL connection.
  • EventBufferEvent::sslRenegotiate — Tells a bufferevent to begin SSL renegotiation.
  • EventBufferEvent::sslSocket — Creates a new SSL buffer event to send its data over an SSL on a socket
  • EventBufferEvent::write — Adds data to a buffer event's output buffer
  • EventBufferEvent::writeBuffer — Adds contents of the entire buffer to a buffer event's output buffer
EventBuffer::write
EventBufferEvent::close
Event


Closes file descriptor associated with the current buffer event

EventBufferEvent
EventBufferEvent::connect
EventBufferEvent
PHP Manual

EventBufferEvent::close

(PECL event >= 1.10.0)

EventBufferEvent::close — Closes file descriptor associated with the current buffer event

说明

public void EventBufferEvent::close ( void )

Closes file descriptor associated with the current buffer event.

This method may be used in cases when the EventBufferEvent::OPT_CLOSE_ON_FREE option is not appropriate.

参数

此函数没有参数。

返回值

没有返回值。

EventBufferEvent
EventBufferEvent::connect
EventBufferEvent


Connect buffer event's file descriptor to given address or UNIX socket

EventBufferEvent::close
EventBufferEvent::connectHost
EventBufferEvent
PHP Manual

EventBufferEvent::connect

(PECL event >= 1.2.6-beta)

EventBufferEvent::connect — Connect buffer event's file descriptor to given address or UNIX socket

说明

public bool EventBufferEvent::connect ( string $addr )

Connect buffer event's file descriptor to given address(optionally with port), or a UNIX domain socket.

If socket is not assigned to the buffer event, this function allocates a new socket and makes it non-blocking internally.

To resolve DNS names(asyncronously), use EventBufferEvent::connectHost() method.

参数

addr

Should contain an IP address with optional port number, or a path to UNIX domain socket. Recognized formats are:

[IPv6Address]:port
[IPv6Address]
IPv6Address
IPv4Address:port
IPv4Address
unix:path
Note, 'unix:' prefix is currently not case sensitive.

返回值

Returns TRUE on success. Otherwise FALSE.

范例

Example #1 EventBufferEvent::connect() example

<?php
/*
 * 1. Connect to 127.0.0.1 at port 80
 * by means of EventBufferEvent::connect().
 *
 * 2. Request /index.cphp via HTTP/1.0
 * using the output buffer.
 *
 * 3. Asyncronously read the response and print it to stdout.
 */

/* Read callback */
function readcb($bev, $base) {
    $input = $bev->getInput();

    while (($n = $input->remove($buf, 1024)) > 0) {
        echo $buf;
    }
}

/* Event callback */
function eventcb($bev, $events, $base) {
    if ($events & EventBufferEvent::CONNECTED) {
        echo "Connected.\n";
    } elseif ($events & (EventBufferEvent::ERROR | EventBufferEvent::EOF)) {
        if ($events & EventBufferEvent::ERROR) {
            echo "DNS error: ", $bev->getDnsErrorString(), PHP_EOL;
        }

        echo "Closing\n";
        $base->exit();
        exit("Done\n");
    }
}

$base = new EventBase();

echo "step 1\n";
$bev = new EventBufferEvent($base, /* use internal socket */ NULL,
    EventBufferEvent::OPT_CLOSE_ON_FREE | EventBufferEvent::OPT_DEFER_CALLBACKS);
if (!$bev) {
    exit("Failed creating bufferevent socket\n");
}

echo "step 2\n";
$bev->setCallbacks("readcb", /* writecb */ NULL, "eventcb", $base);
$bev->enable(Event::READ | Event::WRITE);

echo "step 3\n";
/* Send request */
$output = $bev->getOutput();
if (!$output->add(
    "GET /index.cphp HTTP/1.0\r\n".
    "Connection: Close\r\n\r\n"
)) {
    exit("Failed adding request to output buffer\n");
}

/* Connect to the host syncronously.
 * We know the IP, and don't need to resolve DNS. */
if (!$bev->connect("127.0.0.1:80")) {
    exit("Can't connect to host\n");
}

/* Dispatch pending events */
$base->dispatch();

以上例程的输出类似于：

step 1
step 2
step 3
Connected.
HTTP/1.1 200 OK
Server: nginx/1.2.6
Date: Sat, 09 Mar 2013 10:06:58 GMT
Content-Type: text/html; CHARSET=gb2312
Connection: close
X-Powered-By: PHP/5.4.11--pl2-gentoo

sdfsdfsf
Closing
Done

Example #2 Connect to UNIX domain socket which presumably is served by a server, read response from the server and output it to the console

<?php
class MyUnixSocketClient {
    private $base, $bev;

    function __construct($base, $sock_path) {
        $this->base = $base;
        $this->bev = new EventBufferEvent($base, NULL, EventBufferEvent::OPT_CLOSE_ON_FREE,
            array ($this, "read_cb"), NULL, array ($this, "event_cb"));

        if (!$this->bev->connect("unix:$sock_path")) {
            trigger_error("Failed to connect to socket `$sock_path'", E_USER_ERROR);
        }

        $this->bev->enable(Event::READ);
    }

    function __destruct() {
        if ($this->bev) {
            $this->bev->free();
            $this->bev = NULL;
        }
    }

    function dispatch() {
        $this->base->dispatch();
    }

    function read_cb($bev, $unused) {
        $in = $bev->input;

        printf("Received %ld bytes\n", $in->length);
        printf("----- data ----\n");
        printf("%ld:\t%s\n", (int) $in->length, $in->pullup(-1));

        $this->bev->free();
        $this->bev = NULL;
        $this->base->exit(NULL);
    }

    function event_cb($bev, $events, $unused) {
        if ($events & EventBufferEvent::ERROR) {
            echo "Error from bufferevent\n";
        }

        if ($events & (EventBufferEvent::EOF | EventBufferEvent::ERROR)) {
            $bev->free();
            $bev = NULL;
        } elseif ($events & EventBufferEvent::CONNECTED) {
            $bev->output->add("test\n");
        }
    }
}

if ($argc <= 1) {
    exit("Socket path is not provided\n");
}
$sock_path = $argv[1];

$base = new EventBase();
$cl = new MyUnixSocketClient($base, $sock_path);
$cl->dispatch();
?>

以上例程的输出类似于：

Received 5 bytes
----- data ----
5:  test

参见

  • EventBufferEvent::connectHost() - Connects to a hostname with optionally asyncronous DNS resolving
EventBufferEvent::close
EventBufferEvent::connectHost
EventBufferEvent


Connects to a hostname with optionally asyncronous DNS resolving

EventBufferEvent::connect
EventBufferEvent::__construct
EventBufferEvent
PHP Manual

EventBufferEvent::connectHost

(PECL event >= 1.2.6-beta)

EventBufferEvent::connectHost — Connects to a hostname with optionally asyncronous DNS resolving

说明

public bool EventBufferEvent::connectHost ( EventDnsBase $dns_base , string $hostname , int $port [, int $family = EventUtil::AF_UNSPEC ] )

Resolves the DNS name hostname, looking for addresses of type family ( EventUtil::AF_* constants). If the name resolution fails, it invokes the event callback with an error event. If it succeeds, it launches a connection attempt just as EventBufferEvent::connect() would.

dns_base is optional. May be NULL, or an object created with EventDnsBase::__construct() . For asyncronous hostname resolving pass a valid event dns base resource. Otherwise the hostname resolving will block.

Note:

EventDnsBase is available only if Event configured --with-event-extra ( event_extra library, libevent protocol-specific functionality support including HTTP, DNS, and RPC ).

Note:

EventBufferEvent::connectHost() requires libevent-2.0.3-alpha or greater.

参数

dns_base

Object of EventDnsBase in case if DNS is to be resolved asyncronously. Otherwise NULL.

hostname

Hostname to connect to. Recognized formats are:

www.example.com (hostname)
 1.2.3.4 (ipv4address)
 ::1 (ipv6address)
[::1] ([ipv6address])

port

Port number

family

Address family. EventUtil::AF_UNSPEC , EventUtil::AF_INET , or EventUtil::AF_INET6 . See EventUtil constants .

返回值

Returns TRUE on success. Otherwise FALSE.

范例

Example #1 EventBufferEvent::connectHost() example

<?php
/* Read callback */
function readcb($bev, $base) {
    //$input = $bev->input; //$bev->getInput();

    //$pos = $input->search("TTP");
    $pos = $bev->input->search("TTP");

    while (($n = $bev->input->remove($buf, 1024)) > 0) {
        echo $buf;
    }
}

/* Event callback */
function eventcb($bev, $events, $base) {
    if ($events & EventBufferEvent::CONNECTED) {
        echo "Connected.\n";
    } elseif ($events & (EventBufferEvent::ERROR | EventBufferEvent::EOF)) {
        if ($events & EventBufferEvent::ERROR) {
            echo "DNS error: ", $bev->getDnsErrorString(), PHP_EOL;
        }

        echo "Closing\n";
        $base->exit();
        exit("Done\n");
    }
}

$base = new EventBase();

$dns_base = new EventDnsBase($base, TRUE); // We'll use async DNS resolving
if (!$dns_base) {
    exit("Failed to init DNS Base\n");
}

$bev = new EventBufferEvent($base, /* use internal socket */ NULL,
    EventBufferEvent::OPT_CLOSE_ON_FREE | EventBufferEvent::OPT_DEFER_CALLBACKS,
    "readcb", /* writecb */ NULL, "eventcb", $base
);
if (!$bev) {
    exit("Failed creating bufferevent socket\n");
}

//$bev->setCallbacks("readcb", /* writecb */ NULL, "eventcb", $base);
$bev->enable(Event::READ | Event::WRITE);

$output = $bev->output; //$bev->getOutput();
if (!$output->add(
    "GET {$argv[2]} HTTP/1.0\r\n".
    "Host: {$argv[1]}\r\n".
    "Connection: Close\r\n\r\n"
)) {
    exit("Failed adding request to output buffer\n");
}

if (!$bev->connectHost($dns_base, $argv[1], 80, EventUtil::AF_UNSPEC)) {
    exit("Can't connect to host {$argv[1]}\n");
}

$base->dispatch();
?>

以上例程的输出类似于：

Connected.
HTTP/1.0 301 Moved Permanently
Location: http://www.google.co.uk/
Content-Type: text/html; CHARSET=gb2312
Date: Sat, 09 Mar 2013 12:21:19 GMT
Expires: Mon, 08 Apr 2013 12:21:19 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 221
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN

<HTML><HEAD><meta http-equiv="content-type" content="text/html;CHARSET=gb2312">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.co.uk/">here</A>.
</BODY></HTML>
Closing
Done

参见

  • EventBufferEvent::connect() - Connect buffer event's file descriptor to given address or UNIX socket
EventBufferEvent::connect
EventBufferEvent::__construct
EventBufferEvent


Constructs EventBufferEvent object

EventBufferEvent::connectHost
EventBufferEvent::createPair
EventBufferEvent
PHP Manual

EventBufferEvent::__construct

(PECL event >= 1.2.6-beta)

EventBufferEvent::__construct — Constructs EventBufferEvent object

说明

public EventBufferEvent::__construct ( EventBase $base [, mixed $socket = NULL [, int $options = 0 [, callable $readcb = NULL [, callable $writecb = NULL [, callable $eventcb = NULL ]]]]] )

Create a buffer event on a socket, stream or a file descriptor. Passing NULL to socket means that the socket should be created later, e.g. by means of EventBufferEvent::connect() .

参数

base

Event base that should be associated with the new buffer event.

socket

May be created as a stream(not necessarily by means of sockets extension)

options

One of EventBufferEvent::OPT_* constants , or 0 .

readcb

Read event callback. See About buffer event callbacks .

writecb

Write event callback. See About buffer event callbacks .

eventcb

Status-change event callback. See About buffer event callbacks .

arg

A variable that will be passed to all the callbacks.

返回值

Returns buffer event resource optionally associated with socket resource. */

参见

  • EventBufferEvent::sslFilter() - Create a new SSL buffer event to send its data over another buffer event
  • EventBufferEvent::sslSocket() - Creates a new SSL buffer event to send its data over an SSL on a socket
EventBufferEvent::connectHost
EventBufferEvent::createPair
EventBufferEvent


Creates two buffer events connected to each other

EventBufferEvent::__construct
EventBufferEvent::disable
EventBufferEvent
PHP Manual

EventBufferEvent::createPair

(PECL event >= 1.2.6-beta)

EventBufferEvent::createPair — Creates two buffer events connected to each other

说明

public static array EventBufferEvent::createPair ( EventBase $base [, int $options = 0 ] )

Returns array of two EventBufferEvent objects connected to each other. All the usual options are supported, except for EventBufferEvent::OPT_CLOSE_ON_FREE , which has no effect, and EventBufferEvent::OPT_DEFER_CALLBACKS , which is always on.

参数

base

Associated event base

options

EventBufferEvent::OPT_* constants combined with bitwise OR operator.

返回值

Returns array of two EventBufferEvent objects connected to each other.

更新日志

版本 | 说明
1.9.0 | Method made static.

EventBufferEvent::__construct
EventBufferEvent::disable
EventBufferEvent


Disable events read, write, or both on a buffer event.

EventBufferEvent::createPair
EventBufferEvent::enable
EventBufferEvent
PHP Manual

EventBufferEvent::disable

(PECL event >= 1.2.6-beta)

EventBufferEvent::disable — Disable events read, write, or both on a buffer event.

说明

public bool EventBufferEvent::disable ( int $events )

Disable events Event::READ , Event::WRITE , or Event::READ | Event::WRITE on a buffer event.

参数

events

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • EventBufferEvent::enable() - Enable events read, write, or both on a buffer event.
EventBufferEvent::createPair
EventBufferEvent::enable
EventBufferEvent


Enable events read, write, or both on a buffer event.

EventBufferEvent::disable
EventBufferEvent::free
EventBufferEvent
PHP Manual

EventBufferEvent::enable

(PECL event >= 1.2.6-beta)

EventBufferEvent::enable — Enable events read, write, or both on a buffer event.

说明

public bool EventBufferEvent::enable ( int $events )

Enable events Event::READ , Event::WRITE , or Event::READ | Event::WRITE on a buffer event.

参数

events

Event::READ , Event::WRITE , or Event::READ | Event::WRITE on a buffer event.

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • EventBufferEvent::disable() - Disable events read, write, or both on a buffer event.
EventBufferEvent::disable
EventBufferEvent::free
EventBufferEvent


Free a buffer event

EventBufferEvent::enable
EventBufferEvent::getDnsErrorString
EventBufferEvent
PHP Manual

EventBufferEvent::free

(PECL event >= 1.2.6-beta)

EventBufferEvent::free — Free a buffer event

说明

public void EventBufferEvent::free ( void )

Free resources allocated by buffer event.

Usually there is no need to call this method, since normally it is done within internal object destructors. However, sometimes we have a long-time script allocating lots of instances, or a script with a heavy memory usage, where we need to free resources as soon as possible. In such cases EventBufferEvent::free() may be used to protect the script against running up to the memory_limit .

参数

此函数没有参数。

返回值

没有返回值。

EventBufferEvent::enable
EventBufferEvent::getDnsErrorString
EventBufferEvent


Returns string describing the last failed DNS lookup attempt

EventBufferEvent::free
EventBufferEvent::getEnabled
EventBufferEvent
PHP Manual

EventBufferEvent::getDnsErrorString

(PECL event >= 1.2.6-beta)

EventBufferEvent::getDnsErrorString — Returns string describing the last failed DNS lookup attempt

说明

public string EventBufferEvent::getDnsErrorString ( void )

Returns string describing the last failed DNS lookup attempt made by EventBufferEvent::connectHost() , or an empty string, if there is no DNS error detected.

参数

此函数没有参数。

返回值

Returns a string describing DNS lookup error, or an empty string for no error.

参见

  • EventBufferEvent::connectHost() - Connects to a hostname with optionally asyncronous DNS resolving
EventBufferEvent::free
EventBufferEvent::getEnabled
EventBufferEvent


Returns bitmask of events currently enabled on the buffer event

EventBufferEvent::getDnsErrorString
EventBufferEvent::getInput
EventBufferEvent
PHP Manual

EventBufferEvent::getEnabled

(PECL event >= 1.2.6-beta)

EventBufferEvent::getEnabled — Returns bitmask of events currently enabled on the buffer event

说明

public int EventBufferEvent::getEnabled ( void )

Returns bitmask of events currently enabled on the buffer event

参数

此函数没有参数。

返回值

Returns integer representing a bitmask of events currently enabled on the buffer event

参见

  • EventBufferEvent::enable() - Enable events read, write, or both on a buffer event.
  • EventBufferEvent::disable() - Disable events read, write, or both on a buffer event.
EventBufferEvent::getDnsErrorString
EventBufferEvent::getInput
EventBufferEvent


Returns underlying input buffer associated with current buffer event

EventBufferEvent::getEnabled
EventBufferEvent::getOutput
EventBufferEvent
PHP Manual

EventBufferEvent::getInput

(PECL event >= 1.2.6-beta)

EventBufferEvent::getInput — Returns underlying input buffer associated with current buffer event

说明

public EventBuffer EventBufferEvent::getInput ( void )

Returns underlying input buffer associated with current buffer event. An input buffer is a storage for data to read.

Note, there is also input property of EventBufferEvent class.

参数

此函数没有参数。

返回值

Returns instance of EventBuffer input buffer associated with current buffer event.

范例

Example #1 Buffer event's read callback

<?php
function readcb($bev, $base) {
    $input = $bev->input; //$bev->getInput();

    while (($n = $input->remove($buf, 1024)) > 0) {
        echo $buf;
    }
}
?>

参见

  • EventBufferEvent::getOutput() - Returns underlying output buffer associated with current buffer event
EventBufferEvent::getEnabled
EventBufferEvent::getOutput
EventBufferEvent


Returns underlying output buffer associated with current buffer event

EventBufferEvent::getInput
EventBufferEvent::read
EventBufferEvent
PHP Manual

EventBufferEvent::getOutput

(PECL event >= 1.2.6-beta)

EventBufferEvent::getOutput — Returns underlying output buffer associated with current buffer event

说明

public EventBuffer EventBufferEvent::getOutput ( void )

Returns underlying output buffer associated with current buffer event. An output buffer is a storage for data to be written.

Note, there is also output property of EventBufferEvent class.

参数

此函数没有参数。

返回值

Returns instance of EventBuffer output buffer associated with current buffer event.

范例

Example #1 EventBufferEvent::getOutput() example

<?php
$base = new EventBase();

$dns_base = new EventDnsBase($base, TRUE); // Use async DNS resolving
if (!$dns_base) {
    exit("Failed to init DNS Base\n");
}

$bev = new EventBufferEvent($base, /* use internal socket */ NULL,
    EventBufferEvent::OPT_CLOSE_ON_FREE | EventBufferEvent::OPT_DEFER_CALLBACKS,
    "readcb", /* writecb */ NULL, "eventcb", $base
);
if (!$bev) {
    exit("Failed creating bufferevent socket\n");
}

$bev->enable(Event::READ | Event::WRITE);

$output = $bev->getOutput();
if (!$output->add(
    "GET {$argv[2]} HTTP/1.0\r\n".
    "Host: {$argv[1]}\r\n".
    "Connection: Close\r\n\r\n"
)) {
    exit("Failed adding request to output buffer\n");
}

/* ... */
?>

参见

  • EventBufferEvent::getInput() - Returns underlying input buffer associated with current buffer event
EventBufferEvent::getInput
EventBufferEvent::read
EventBufferEvent


Read buffer's data

EventBufferEvent::getOutput
EventBufferEvent::readBuffer
EventBufferEvent
PHP Manual

EventBufferEvent::read

(PECL event >= 1.2.6-beta)

EventBufferEvent::read — Read buffer's data

说明

public string EventBufferEvent::read ( int $size )

Removes up to size bytes from the input buffer. Returns a string of data read from the input buffer.

参数

size

Maximum number of bytes to read

返回值

Returns string of data read from the input buffer.

参见

  • EventBufferEvent::readBuffer() - Drains the entire contents of the input buffer and places them into buf
EventBufferEvent::getOutput
EventBufferEvent::readBuffer
EventBufferEvent


Drains the entire contents of the input buffer and places them into buf

EventBufferEvent::read
EventBufferEvent::setCallbacks
EventBufferEvent
PHP Manual

EventBufferEvent::readBuffer

(PECL event >= 1.2.6-beta)

EventBufferEvent::readBuffer — Drains the entire contents of the input buffer and places them into buf

说明

public bool EventBufferEvent::readBuffer ( EventBuffer $buf )

Drains the entire contents of the input buffer and places them into buf .

参数

buf

Target buffer

返回值

Returns TRUE on success; Otherwise FALSE.

参见

  • EventBufferEvent::read() - Read buffer's data
EventBufferEvent::read
EventBufferEvent::setCallbacks
EventBufferEvent


Assigns read, write and event(status) callbacks

EventBufferEvent::readBuffer
EventBufferEvent::setPriority
EventBufferEvent
PHP Manual

EventBufferEvent::setCallbacks

(PECL event >= 1.2.6-beta)

EventBufferEvent::setCallbacks — Assigns read, write and event(status) callbacks

说明

public void EventBufferEvent::setCallbacks ( callable $readcb , callable $writecb , callable $eventcb [, string $arg ] )

Assigns read, write and event(status) callbacks.

参数

readcb

Read event callback. See About buffer event callbacks .

writecb

Write event callback. See About buffer event callbacks .

eventcb

Status-change event callback. See About buffer event callbacks .

arg

A variable that will be passed to all the callbacks.

返回值

没有返回值。

参见

  • EventBufferEvent::__construct() - Constructs EventBufferEvent object
EventBufferEvent::readBuffer
EventBufferEvent::setPriority
EventBufferEvent


Assign a priority to a bufferevent

EventBufferEvent::setCallbacks
EventBufferEvent::setTimeouts
EventBufferEvent
PHP Manual

EventBufferEvent::setPriority

(PECL event >= 1.2.6-beta)

EventBufferEvent::setPriority — Assign a priority to a bufferevent

说明

public bool EventBufferEvent::setPriority ( int $priority )

Assign a priority to a bufferevent

Warning

Only supported for socket buffer events

参数

priority

Priority value.

返回值

Returns TRUE on success. Otherwise FALSE.

EventBufferEvent::setCallbacks
EventBufferEvent::setTimeouts
EventBufferEvent


Set the read and write timeout for a buffer event

EventBufferEvent::setPriority
EventBufferEvent::setWatermark
EventBufferEvent
PHP Manual

EventBufferEvent::setTimeouts

(PECL event >= 1.2.6-beta)

EventBufferEvent::setTimeouts — Set the read and write timeout for a buffer event

说明

public bool EventBufferEvent::setTimeouts ( float $timeout_read , float $timeout_write )

Set the read and write timeout for a buffer event

参数

timeout_read

Read timeout

timeout_write

Write timeout

返回值

Returns TRUE on success. Otherwise FALSE.

EventBufferEvent::setPriority
EventBufferEvent::setWatermark
EventBufferEvent


Adjusts read and/or write watermarks

EventBufferEvent::setTimeouts
EventBufferEvent::sslError
EventBufferEvent
PHP Manual

EventBufferEvent::setWatermark

(PECL event >= 1.2.6-beta)

EventBufferEvent::setWatermark — Adjusts read and/or write watermarks

说明

public void EventBufferEvent::setWatermark ( int $events , int $lowmark , int $highmark )

Adjusts the read watermarks, the write watermarks , or both, of a single buffer event.

A buffer event watermark is an edge, a value specifying number of bytes to be read or written before callback is invoked. By default every read/write event triggers a callback invokation. See » Fast portable non-blocking network programming with Libevent: Callbacks and watermarks

参数

events

Bitmask of Event::READ , Event::WRITE , or both.

lowmark

Minimum watermark value.

highmark

Maximum watermark value. 0 means "unlimited".

返回值

没有返回值。

EventBufferEvent::setTimeouts
EventBufferEvent::sslError
EventBufferEvent


Returns most recent OpenSSL error reported on the buffer event

EventBufferEvent::setWatermark
EventBufferEvent::sslFilter
EventBufferEvent
PHP Manual

EventBufferEvent::sslError

(PECL event >= 1.2.6-beta)

EventBufferEvent::sslError — Returns most recent OpenSSL error reported on the buffer event

说明

public string EventBufferEvent::sslError ( void )

Returns most recent OpenSSL error reported on the buffer event.

Note:

This function is available only if Event is compiled with OpenSSL support.

参数

此函数没有参数。

返回值

Returns OpenSSL error string reported on the buffer event, or FALSE, if there is no more error to return.

范例

Example #1 EventBufferEvent::sslError() example

<?php
// This callback is invoked when some even occurs on the event listener,
// e.g. connection closed, or an error occured
function ssl_event_cb($bev, $events, $ctx) {
    if ($events & EventBufferEvent::ERROR) {
        // Fetch errors from the SSL error stack
        while ($err = $bev->sslError()) {
            fprintf(STDERR, "Bufferevent error %s.\n", $err);
        }
    }

    if ($events & (EventBufferEvent::EOF | EventBufferEvent::ERROR)) {
        $bev->free();
    }
}
?>

参见

  • EventBufferEvent::sslRenegotiate() - Tells a bufferevent to begin SSL renegotiation.
EventBufferEvent::setWatermark
EventBufferEvent::sslFilter
EventBufferEvent


Create a new SSL buffer event to send its data over another buffer event

EventBufferEvent::sslError
EventBufferEvent::sslGetCipherInfo
EventBufferEvent
PHP Manual

EventBufferEvent::sslFilter

(PECL event >= 1.2.6-beta)

EventBufferEvent::sslFilter — Create a new SSL buffer event to send its data over another buffer event

说明

public static EventBufferEvent EventBufferEvent::sslFilter ( EventBase $base , EventBufferEvent $underlying , EventSslContext $ctx , int $state [, int $options = 0 ] )

Create a new SSL buffer event to send its data over another buffer event

Note:

This function is available only if Event is compiled with OpenSSL support.

参数

base

Associated event base.

underlying

A socket buffer event to use for this SSL.

ctx

Object of EventSslContext class.

state

The current state of SSL connection: EventBufferEvent::SSL_OPEN , EventBufferEvent::SSL_ACCEPTING or EventBufferEvent::SSL_CONNECTING .

options

One or more buffer event options.

返回值

Returns a new SSL EventBufferEvent object.

范例

Example #1 Simple SMTP server

<?php
 /*
 * Author: Andrew Rose <hello at andrewrose dot co dot uk>
 *
 * Usage:
 * 1) Prepare cert.pem certificate and privkey.pem private key files.
 * 2) Launch the server script
 * 3) Open TLS connection, e.g.:
 *      $ openssl s_client -connect localhost:25 -starttls smtp -crlf
 * 4) Start testing the commands listed in `cmd` method below.
 */

class Handler {
    public $domainName = FALSE;
    public $connections = [];
    public $buffers = [];
    public $maxRead = 256000;

    public function __construct() {
        $this->ctx = new EventSslContext(EventSslContext::SSLv3_SERVER_METHOD, [
            EventSslContext::OPT_LOCAL_CERT  => 'cert.pem',
            EventSslContext::OPT_LOCAL_PK    => 'privkey.pem',
            //EventSslContext::OPT_PASSPHRASE  => '',
            EventSslContext::OPT_VERIFY_PEER => false, // change to true with authentic cert
            EventSslContext::OPT_ALLOW_SELF_SIGNED => true // change to false with authentic cert
        ]);

        $this->base = new EventBase();
        if (!$this->base) {
            exit("Couldn't open event base\n");
        }

        if (!$this->listener = new EventListener($this->base,
            [$this, 'ev_accept'],
            $this->ctx,
            EventListener::OPT_CLOSE_ON_FREE | EventListener::OPT_REUSEABLE,
            -1,
            '0.0.0.0:25'))
        {
            exit("Couldn't create listener\n");
        }

        $this->listener->setErrorCallback([$this, 'ev_error']);
        $this->base->dispatch();
    }

    public function ev_accept($listener, $fd, $address, $ctx) {
        static $id = 0;
        $id += 1;

        $this->connections[$id]['clientData'] = '';
        $this->connections[$id]['cnx'] = new EventBufferEvent($this->base, $fd,
            EventBufferEvent::OPT_CLOSE_ON_FREE);

        if (!$this->connections[$id]['cnx']) {
            echo "Failed creating buffer\n";
            $this->base->exit(NULL);
            exit(1);
        }

        $this->connections[$id]['cnx']->setCallbacks([$this, "ev_read"], NULL,
            [$this, 'ev_error'], $id);
        $this->connections[$id]['cnx']->enable(Event::READ | Event::WRITE);

        $this->ev_write($id, '220 '.$this->domainName." wazzzap?\r\n");
    }

    function ev_error($listener, $ctx) {
        $errno = EventUtil::getLastSocketErrno();

        fprintf(STDERR, "Got an error %d (%s) on the listener. Shutting down.\n",
            $errno, EventUtil::getLastSocketError());

        if ($errno != 0) {
            $this->base->exit(NULL);
            exit();
        }
    }

    public function ev_close($id) {
        $this->connections[$id]['cnx']->disable(Event::READ | Event::WRITE);
        unset($this->connections[$id]);
    }

    protected function ev_write($id, $string) {
        echo 'S('.$id.'): '.$string;
        $this->connections[$id]['cnx']->write($string);
    }

    public function ev_read($buffer, $id) {
        while($buffer->input->length > 0) {
            $this->connections[$id]['clientData'] .= $buffer->input->read($this->maxRead);
            $clientDataLen = strlen($this->connections[$id]['clientData']);

            if($this->connections[$id]['clientData'][$clientDataLen-1] == "\n"
                && $this->connections[$id]['clientData'][$clientDataLen-2] == "\r")
            {
                // remove the trailing \r\n
                $line = substr($this->connections[$id]['clientData'], 0,
                    strlen($this->connections[$id]['clientData']) - 2);

                $this->connections[$id]['clientData'] = '';
                $this->cmd($buffer, $id, $line);
            }
        }
    }

    protected function cmd($buffer, $id, $line) {
        switch ($line) {
            case strncmp('EHLO ', $line, 4):
                $this->ev_write($id, "250-STARTTLS\r\n");
                $this->ev_write($id, "250 OK ehlo\r\n");
                break;

            case strncmp('HELO ', $line, 4):
                $this->ev_write($id, "250-STARTTLS\r\n");
                $this->ev_write($id, "250 OK helo\r\n");
                break;

            case strncmp('QUIT', $line, 3):
                $this->ev_write($id, "250 OK quit\r\n");
                $this->ev_close($id);
                break;

            case strncmp('STARTTLS', $line, 3):
                $this->ev_write($id, "220 Ready to start TLS\r\n");
                $this->connections[$id]['cnx'] = EventBufferEvent::sslFilter($this->base,
                    $this->connections[$id]['cnx'], $this->ctx,
                    EventBufferEvent::SSL_ACCEPTING,
                    EventBufferEvent::OPT_CLOSE_ON_FREE);
                $this->connections[$id]['cnx']->setCallbacks([$this, "ev_read"], NULL, [$this, 'ev_error'], $id);
                $this->connections[$id]['cnx']->enable(Event::READ | Event::WRITE);
                break;

            default:
                echo 'unknown command: '.$line."\n";
                break;
        }
    }
}

new Handler();

参见

  • EventBufferEvent::sslSocket() - Creates a new SSL buffer event to send its data over an SSL on a socket
EventBufferEvent::sslError
EventBufferEvent::sslGetCipherInfo
EventBufferEvent


Returns a textual description of the cipher.

EventBufferEvent::sslFilter
EventBufferEvent::sslGetCipherName
EventBufferEvent
PHP Manual

EventBufferEvent::sslGetCipherInfo

(PECL event >= 1.10.0)

EventBufferEvent::sslGetCipherInfo — Returns a textual description of the cipher.

说明

public string EventBufferEvent::sslGetCipherInfo ( void )

Retrieves description of the current cipher by means of the SSL_CIPHER_description SSL API function (see SSL_CIPHER_get_name(3) man page).

Note:

This function is available only if Event is compiled with OpenSSL support.

参数

此函数没有参数。

返回值

Returns a textual description of the cipher on success, or FALSE on error.

EventBufferEvent::sslFilter
EventBufferEvent::sslGetCipherName
EventBufferEvent


Returns the current cipher name of the SSL connection.

EventBufferEvent::sslGetCipherInfo
EventBufferEvent::sslGetCipherVersion
EventBufferEvent
PHP Manual

EventBufferEvent::sslGetCipherName

(PECL event >= 1.10.0)

EventBufferEvent::sslGetCipherName — Returns the current cipher name of the SSL connection.

说明

public string EventBufferEvent::sslGetCipherName ( void )

Retrieves name of cipher used by current SSL connection.

Note:

This function is available only if Event is compiled with OpenSSL support.

参数

此函数没有参数。

返回值

Returns the current cipher name of the SSL connection, or FALSE on error.

EventBufferEvent::sslGetCipherInfo
EventBufferEvent::sslGetCipherVersion
EventBufferEvent


Returns version of cipher used by current SSL connection.

EventBufferEvent::sslGetCipherName
EventBufferEvent::sslGetProtocol
EventBufferEvent
PHP Manual

EventBufferEvent::sslGetCipherVersion

(PECL event >= 1.10.0)

EventBufferEvent::sslGetCipherVersion — Returns version of cipher used by current SSL connection.

说明

public string EventBufferEvent::sslGetCipherVersion ( void )

Retrieves version of cipher used by current SSL connection.

Note:

This function is available only if Event is compiled with OpenSSL support.

参数

此函数没有参数。

返回值

Returns the current cipher version of the SSL connection, or FALSE on error.

EventBufferEvent::sslGetCipherName
EventBufferEvent::sslGetProtocol
EventBufferEvent


Returns the name of the protocol used for current SSL connection.

EventBufferEvent::sslGetCipherVersion
EventBufferEvent::sslRenegotiate
EventBufferEvent
PHP Manual

EventBufferEvent::sslGetProtocol

(PECL event >= 1.10.0)

EventBufferEvent::sslGetProtocol — Returns the name of the protocol used for current SSL connection.

说明

public string EventBufferEvent::sslGetProtocol ( void )

Returns the name of the protocol used for current SSL connection.

Note:

This function is available only if Event is compiled with OpenSSL support.

参数

此函数没有参数。

返回值

Returns the name of the protocol used for current SSL connection.

EventBufferEvent::sslGetCipherVersion
EventBufferEvent::sslRenegotiate
EventBufferEvent


Tells a bufferevent to begin SSL renegotiation.

EventBufferEvent::sslGetProtocol
EventBufferEvent::sslSocket
EventBufferEvent
PHP Manual

EventBufferEvent::sslRenegotiate

(PECL event >= 1.2.6-beta)

EventBufferEvent::sslRenegotiate — Tells a bufferevent to begin SSL renegotiation.

说明

public void EventBufferEvent::sslRenegotiate ( void )

Tells a bufferevent to begin SSL renegotiation.

Warning

Calling this function tells the SSL to renegotiate, and the buffer event to invoke appropriate callbacks. This is an advanced topic; this should be generally avoided unless one really knows what he/she does, especially since many SSL versions have had known security issues related to renegotiation.

参数

此函数没有参数。

返回值

没有返回值。

EventBufferEvent::sslGetProtocol
EventBufferEvent::sslSocket
EventBufferEvent


Creates a new SSL buffer event to send its data over an SSL on a socket

EventBufferEvent::sslRenegotiate
EventBufferEvent::write
EventBufferEvent
PHP Manual

EventBufferEvent::sslSocket

(PECL event >= 1.2.6-beta)

EventBufferEvent::sslSocket — Creates a new SSL buffer event to send its data over an SSL on a socket

说明

public static EventBufferEvent EventBufferEvent::sslSocket ( EventBase $base , mixed $socket , EventSslContext $ctx , int $state [, int $options ] )

Creates a new SSL buffer event to send its data over an SSL on a socket.

参数

base

Associated event base.

socket

Socket to use for this SSL. Can be stream or socket resource, numeric file descriptor, or NULL. If socket is NULL, it is assumed that the file descriptor for the socket will be assigned later, for instance, by means of EventBufferEvent::connectHost() method.

ctx

Object of EventSslContext class.

state

The current state of SSL connection: EventBufferEvent::SSL_OPEN , EventBufferEvent::SSL_ACCEPTING or EventBufferEvent::SSL_CONNECTING .

options

The buffer event options.

返回值

Returns EventBufferEvent object.

参见

  • EventBufferEvent::sslFilter() - Create a new SSL buffer event to send its data over another buffer event
EventBufferEvent::sslRenegotiate
EventBufferEvent::write
EventBufferEvent


Adds data to a buffer event's output buffer

EventBufferEvent::sslSocket
EventBufferEvent::writeBuffer
EventBufferEvent
PHP Manual

EventBufferEvent::write

(PECL event >= 1.2.6-beta)

EventBufferEvent::write — Adds data to a buffer event's output buffer

说明

public bool EventBufferEvent::write ( string $data )

Adds data to a buffer event's output buffer

参数

data

Data to be added to the underlying buffer.

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • EventBufferEvent::writeBuffer() - Adds contents of the entire buffer to a buffer event's output buffer
EventBufferEvent::sslSocket
EventBufferEvent::writeBuffer
EventBufferEvent


Adds contents of the entire buffer to a buffer event's output buffer

EventBufferEvent::write
About buffer event callbacks
EventBufferEvent
PHP Manual

EventBufferEvent::writeBuffer

(PECL event >= 1.2.6-beta)

EventBufferEvent::writeBuffer — Adds contents of the entire buffer to a buffer event's output buffer

说明

public bool EventBufferEvent::writeBuffer ( EventBuffer $buf )

Adds contents of the entire buffer to a buffer event's output buffer

参数

buf

Source EventBuffer object.

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • EventBufferEvent::write() - Adds data to a buffer event's output buffer
EventBufferEvent::write
About buffer event callbacks
EventBufferEvent


About buffer event callbacks

An object of EventBufferEvent class represents a buffer event . The asynchronous nature of I/O performed by Libevent implies that a socket(or other kind of file descriptor) is not always available. Event invokes corresponding callbacks when the resource becomes available for reading or writing, or when some event occurs(e.g. error, "end of line" etc.).

Read and write callbacks should match the following prototype:

void callback ([ EventBufferEvent $bev = NULL [, mixed $arg = NULL ]] )

bev

Associated EventBufferEvent object.

arg

Custom variable attached to all callbacks via EventBufferEvent::__construct() , or EventBufferEvent::setCallbacks() .

Event callback should match the following prototype:

void callback ([ EventBufferEvent $bev = NULL [, int $events = 0 [, mixed $arg = NULL ]]] )

bev

Associated EventBufferEvent object.

events

Bit mask of events: EventBufferEvent::READING , EventBufferEvent::WRITING , EventBufferEvent::EOL , EventBufferEvent::ERROR and EventBufferEvent::TIMEOUT . See EventBufferEvent constants

arg

Custom variable attached to all callbacks via EventBufferEvent::__construct() , or EventBufferEvent::setCallbacks() .

EventBufferEvent::writeBuffer
EventConfig
Event


The EventConfig class

(PECL event >= 1.2.6-beta)

简介

Represents configuration structure which could be used in construction of the EventBase .

类摘要

final EventConfig {
/* Constants */
const integer FEATURE_ET = 1 ;
const integer FEATURE_O1 = 2 ;
const integer FEATURE_FDS = 4 ;
/* 方法 */
public bool avoidMethod ( string $method )
public __construct ( void )
public bool requireFeatures ( int $feature )
public void setMaxDispatchInterval ( int $max_interval , int $max_callbacks , int $min_priority )
}

预定义常量

EventConfig::FEATURE_ET

Requires a backend method that supports edge-triggered I/O.

EventConfig::FEATURE_O1

Requires a backend method where adding or deleting a single event, or having a single event become active, is an O(1) operation.

EventConfig::FEATURE_FDS

Requires a backend method that can support arbitrary file descriptor types, and not just sockets.

Table of Contents

  • EventConfig::avoidMethod — Tells libevent to avoid specific event method
  • EventConfig::__construct — Constructs EventConfig object
  • EventConfig::requireFeatures — Enters a required event method feature that the application demands
  • EventConfig::setMaxDispatchInterval — Prevents priority inversion
About buffer event callbacks
EventConfig::avoidMethod
Event


Tells libevent to avoid specific event method

EventConfig
EventConfig::__construct
EventConfig
PHP Manual

EventConfig::avoidMethod

(PECL event >= 1.2.6-beta)

EventConfig::avoidMethod — Tells libevent to avoid specific event method

说明

public bool EventConfig::avoidMethod ( string $method )

Tells libevent to avoid specific event method(backend). See » Creating an event base .

参数

method

The backend method to avoid. See EventConfig constants .

返回值

Returns TRUE on success, otherwise FALSE.

范例

Example #1 EventConfig::avoidMethod() example

<?php
$cfg = new EventConfig();
if ($cfg->avoidMethod("select")) {
    echo "`select' method avoided\n";
}
?>

参见

  • EventBase::__construct() - Constructs EventBase object
EventConfig
EventConfig::__construct
EventConfig


Constructs EventConfig object

EventConfig::avoidMethod
EventConfig::requireFeatures
EventConfig
PHP Manual

EventConfig::__construct

(PECL event >= 1.2.6-beta)

EventConfig::__construct — Constructs EventConfig object

说明

public EventConfig::__construct ( void )

Constructs EventConfig object which could be passed to EventBase::__construct() constructor.

参数

此函数没有参数。

返回值

Returns EventConfig object.

范例

Example #1 EventConfig::__construct() example

<?php
// Avoiding "select" method
$cfg = new EventConfig();
if ($cfg->avoidMethod("select")) {
    echo "`select' method avoided\n";
}

// Create event_base associated with the config
$base = new EventBase($cfg);

/* Now $base is configured to avoid select backend(method) */
?>

参见

  • EventBase::__construct() - Constructs EventBase object
EventConfig::avoidMethod
EventConfig::requireFeatures
EventConfig


Enters a required event method feature that the application demands

EventConfig::__construct
EventConfig::setMaxDispatchInterval
EventConfig
PHP Manual

EventConfig::requireFeatures

(PECL event >= 1.2.6-beta)

EventConfig::requireFeatures — Enters a required event method feature that the application demands

说明

public bool EventConfig::requireFeatures ( int $feature )

Enters a required event method feature that the application demands

参数

feature

Bitmask of required features. See EventConfig::FEATURE_* constants

返回值

范例

Example #1 EventConfig::requireFeatures() example

<?php
$cfg = new EventConfig();

// Create event_base associated with the config
$base = new EventBase($cfg);

// Require FDS feature
if ($cfg->requireFeatures(EventConfig::FEATURE_FDS)) {
    echo "FDS feature is now requried\n";

    $base = new EventBase($cfg);
    ($base->getFeatures() & EventConfig::FEATURE_FDS)
        and print("FDS - arbitrary file descriptor types, and not just sockets\n");
}
?>

以上例程的输出类似于：

FDS feature is now requried
FDS - arbitrary file descriptor types, and not just sockets

参见

  • EventBase::getFeatures() - Returns bitmask of features supported
EventConfig::__construct
EventConfig::setMaxDispatchInterval
EventConfig


Prevents priority inversion

EventConfig::requireFeatures
EventDnsBase
EventConfig
PHP Manual

EventConfig::setMaxDispatchInterval

(No version information available, might only be in Git)

EventConfig::setMaxDispatchInterval — Prevents priority inversion

说明

public void EventConfig::setMaxDispatchInterval ( int $max_interval , int $max_callbacks , int $min_priority )

Prevents priority inversion by limiting how many low-priority event callbacks can be invoked before checking for more high-priority events.

Note:

Available since libevent 2.1.0-alpha .

参数

max_interval

An interval after which Libevent should stop running callbacks and check for more events, or 0 , if there should be no such interval.

max_callbacks

A number of callbacks after which Libevent should stop running callbacks and check for more events, or -1 , if there should be no such limit.

min_priority

A priority below which max_interval and max_callbacks should not be enforced. If this is set to 0 , they are enforced for events of every priority; if it's set to 1 , they're enforced for events of priority 1 and above, and so on.

返回值

Returns TRUE on success, otherwise FALSE.

EventConfig::requireFeatures
EventDnsBase
EventConfig


The EventDnsBase class

(PECL event >= 1.2.6-beta)

简介

Represents Libevent's DNS base structure. Used to resolve DNS asyncronously, parse configuration files like resolv.conf etc.

类摘要

final EventDnsBase {
/* Constants */
const integer OPTION_SEARCH = 1 ;
const integer OPTION_NAMESERVERS = 2 ;
const integer OPTION_MISC = 4 ;
const integer OPTION_HOSTSFILE = 8 ;
const integer OPTIONS_ALL = 15 ;
/* 方法 */
public bool addNameserverIp ( string $ip )
public void addSearch ( string $domain )
public void clearSearch ( void )
public __construct ( EventBase $base , bool $initialize )
public int countNameservers ( void )
public bool loadHosts ( string $hosts )
public bool parseResolvConf ( int $flags , string $filename )
public bool setOption ( string $option , string $value )
public bool setSearchNdots ( int $ndots )
}

预定义常量

EventDnsBase::OPTION_SEARCH

Tells to read the domain and search fields from the resolv.conf file and the ndots option, and use them to decide which domains(if any) to search for hostnames that aren't fully-qualified.

EventDnsBase::OPTION_NAMESERVERS

Tells to learn the nameservers from the resolv.conf file.

EventDnsBase::OPTION_MISC

EventDnsBase::OPTION_HOSTSFILE

Tells to read a list of hosts from /etc/hosts as part of loading the resolv.conf file.

EventDnsBase::OPTIONS_ALL

Tells to learn as much as it can from the resolv.conf file.

Table of Contents

  • EventDnsBase::addNameserverIp — Adds a nameserver to the DNS base
  • EventDnsBase::addSearch — Adds a domain to the list of search domains
  • EventDnsBase::clearSearch — Removes all current search suffixes
  • EventDnsBase::__construct — Constructs EventDnsBase object
  • EventDnsBase::countNameservers — Gets the number of configured nameservers
  • EventDnsBase::loadHosts — Loads a hosts file (in the same format as /etc/hosts) from hosts file
  • EventDnsBase::parseResolvConf — Scans the resolv.conf-formatted file
  • EventDnsBase::setOption — Set the value of a configuration option
  • EventDnsBase::setSearchNdots — Set the 'ndots' parameter for searches
EventConfig::setMaxDispatchInterval
EventDnsBase::addNameserverIp
Event


Adds a nameserver to the DNS base

EventDnsBase
EventDnsBase::addSearch
EventDnsBase
PHP Manual

EventDnsBase::addNameserverIp

(PECL event >= 1.2.6-beta)

EventDnsBase::addNameserverIp — Adds a nameserver to the DNS base

说明

public bool EventDnsBase::addNameserverIp ( string $ip )

Adds a nameserver to the evdns_base.

参数

ip

The nameserver string, either as an IPv4 address, an IPv6 address, an IPv4 address with a port ( IPv4:Port ), or an IPv6 address with a port ( [IPv6]:Port ).

返回值

Returns TRUE on success. Otherwise FALSE.

EventDnsBase
EventDnsBase::addSearch
EventDnsBase


Adds a domain to the list of search domains

EventDnsBase::addNameserverIp
EventDnsBase::clearSearch
EventDnsBase
PHP Manual

EventDnsBase::addSearch

(PECL event >= 1.2.6-beta)

EventDnsBase::addSearch — Adds a domain to the list of search domains

说明

public void EventDnsBase::addSearch ( string $domain )

Adds a domain to the list of search domains

参数

domain

Search domain.

返回值

没有返回值。

EventDnsBase::addNameserverIp
EventDnsBase::clearSearch
EventDnsBase


Removes all current search suffixes

EventDnsBase::addSearch
EventDnsBase::__construct
EventDnsBase
PHP Manual

EventDnsBase::clearSearch

(PECL event >= 1.2.6-beta)

EventDnsBase::clearSearch — Removes all current search suffixes

说明

public void EventDnsBase::clearSearch ( void )

Removes all current search suffixes from the DNS base; the EventDnsBase::addSearch() function adds a suffix.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • EventDnsBase::addSearch() - Adds a domain to the list of search domains
EventDnsBase::addSearch
EventDnsBase::__construct
EventDnsBase


Constructs EventDnsBase object

EventDnsBase::clearSearch
EventDnsBase::countNameservers
EventDnsBase
PHP Manual

EventDnsBase::__construct

(PECL event >= 1.2.6-beta)

EventDnsBase::__construct — Constructs EventDnsBase object

说明

public EventDnsBase::__construct ( EventBase $base , bool $initialize )

Constructs EventDnsBase object.

参数

base

Event base.

initialize

If the initialize argument is TRUE, it tries to configure the DNS base sensibly given your operating system's default. Otherwise, it leaves the event DNS base empty, with no nameservers or options configured. In the latter case DNS base should be configured manually, e.g. with EventDnsBase::parseResolvConf() .

返回值

Returns EventDnsBase object.

EventDnsBase::clearSearch
EventDnsBase::countNameservers
EventDnsBase


Gets the number of configured nameservers

EventDnsBase::__construct
EventDnsBase::loadHosts
EventDnsBase
PHP Manual

EventDnsBase::countNameservers

(PECL event >= 1.2.6-beta)

EventDnsBase::countNameservers — Gets the number of configured nameservers

说明

public int EventDnsBase::countNameservers ( void )

Gets the number of configured nameservers

参数

此函数没有参数。

返回值

Returns the number of configured nameservers(not necessarily the number of running nameservers). This is useful for double-checking whether our calls to the various nameserver configuration functions have been successful.

EventDnsBase::__construct
EventDnsBase::loadHosts
EventDnsBase


Loads a hosts file (in the same format as /etc/hosts) from hosts file

EventDnsBase::countNameservers
EventDnsBase::parseResolvConf
EventDnsBase
PHP Manual

EventDnsBase::loadHosts

(PECL event >= 1.2.6-beta)

EventDnsBase::loadHosts — Loads a hosts file (in the same format as /etc/hosts) from hosts file

说明

public bool EventDnsBase::loadHosts ( string $hosts )

Loads a hosts file (in the same format as /etc/hosts ) from hosts file.

参数

hosts

Path to the hosts' file.

返回值

Returns TRUE on success. Otherwise FALSE.

EventDnsBase::countNameservers
EventDnsBase::parseResolvConf
EventDnsBase


Scans the resolv.conf-formatted file

EventDnsBase::loadHosts
EventDnsBase::setOption
EventDnsBase
PHP Manual

EventDnsBase::parseResolvConf

(PECL event >= 1.2.6-beta)

EventDnsBase::parseResolvConf — Scans the resolv.conf-formatted file

说明

public bool EventDnsBase::parseResolvConf ( int $flags , string $filename )

Scans the resolv.conf-formatted file stored in filename, and read in all the options from it that are listed in flags

参数

flags

Determines what information is parsed from the resolv.conf file. See the man page for resolv.conf for the format of this file.

The following directives are not parsed from the file: sortlist, rotate, no-check-names, inet6, debug .

If this function encounters an error, the possible return values are:

  • 1 = failed to open file
  • 2 = failed to stat file
  • 3 = file too large
  • 4 = out of memory
  • 5 = short read from file
  • 6 = no nameservers listed in the file

filename

Path to resolv.conf file.

返回值

Returns TRUE on success. Otherwise FALSE.

EventDnsBase::loadHosts
EventDnsBase::setOption
EventDnsBase


Set the value of a configuration option

EventDnsBase::parseResolvConf
EventDnsBase::setSearchNdots
EventDnsBase
PHP Manual

EventDnsBase::setOption

(PECL event >= 1.2.6-beta)

EventDnsBase::setOption — Set the value of a configuration option

说明

public bool EventDnsBase::setOption ( string $option , string $value )

Set the value of a configuration option.

参数

option

The currently available configuration options are: "ndots" , "timeout" , "max-timeouts" , "max-inflight" , and "attempts" .

value

Option value.

返回值

Returns TRUE on success. Otherwise FALSE.

EventDnsBase::parseResolvConf
EventDnsBase::setSearchNdots
EventDnsBase


Set the 'ndots' parameter for searches

EventDnsBase::setOption
EventHttp
EventDnsBase
PHP Manual

EventDnsBase::setSearchNdots

(PECL event >= 1.2.6-beta)

EventDnsBase::setSearchNdots — Set the 'ndots' parameter for searches

说明

public bool EventDnsBase::setSearchNdots ( int $ndots )

Set the 'ndots' parameter for searches. Sets the number of dots which, when found in a name, causes the first query to be without any search domain.

参数

ndots

The number of dots.

返回值

Returns TRUE on success. Otherwise FALSE.

EventDnsBase::setOption
EventHttp
EventDnsBase


The EventHttp class

(PECL event >= 1.4.0-beta)

简介

Represents HTTP server.

类摘要

final EventHttp {
/* 方法 */
public bool accept ( mixed $socket )
public bool addServerAlias ( string $alias )
public void bind ( string $address , int $port )
public __construct ( EventBase $base [, EventSslContext $ctx = NULL ] )
public bool removeServerAlias ( string $alias )
public void setAllowedMethods ( int $methods )
public void setCallback ( string $path , string $cb [, string $arg ] )
public void setDefaultCallback ( string $cb [, string $arg ] )
public void setMaxBodySize ( int $value )
public void setMaxHeadersSize ( int $value )
public void setTimeout ( int $value )
}

Table of Contents

  • EventHttp::accept — Makes an HTTP server accept connections on the specified socket stream or resource
  • EventHttp::addServerAlias — Adds a server alias to the HTTP server object
  • EventHttp::bind — Binds an HTTP server on the specified address and port
  • EventHttp::__construct — Constructs EventHttp object(the HTTP server)
  • EventHttp::removeServerAlias — Removes server alias
  • EventHttp::setAllowedMethods — Sets the what HTTP methods are supported in requests accepted by this server, and passed to user callbacks
  • EventHttp::setCallback — Sets a callback for specified URI
  • EventHttp::setDefaultCallback — Sets default callback to handle requests that are not caught by specific callbacks
  • EventHttp::setMaxBodySize — Sets maximum request body size
  • EventHttp::setMaxHeadersSize — Sets maximum HTTP header size
  • EventHttp::setTimeout — Sets the timeout for an HTTP request
EventDnsBase::setSearchNdots
EventHttp::accept
Event


Makes an HTTP server accept connections on the specified socket stream or resource

EventHttp
EventHttp::addServerAlias
EventHttp
PHP Manual

EventHttp::accept

(PECL event >= 1.2.6-beta)

EventHttp::accept — Makes an HTTP server accept connections on the specified socket stream or resource

说明

public bool EventHttp::accept ( mixed $socket )

Makes an HTTP server accept connections on the specified socket stream or resource. The socket should be ready to accept connections.

Can be called multiple times to accept connections on different sockets.

Note:

To bind a socket, listen , and accept connections on the socket in s single call use EventHttp::bind() . EventHttp::accept() is needed only if one already has a socket ready to accept connections.

参数

socket

Socket resource, stream or numeric file descriptor representing a socket ready to accept connections.

返回值

Returns TRUE on success. Otherwise FALSE.

范例

Example #1 EventHttp::accept() example

<?php
$base = new EventBase();
$http = new EventHttp($base);

$addresses = array (
     8091 => "127.0.0.1",
     8092 => "127.0.0.2",
);
$i = 0;

$socket = array();

foreach ($addresses as $port => $ip) {
    echo $ip, " ", $port, PHP_EOL;
    $socket[$i] = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    if (!socket_bind($socket[$i], $ip, $port)) {
        exit("socket_bind failed\n");
    }
    socket_listen($socket[$i], 0);
    socket_set_nonblock($socket[$i]);

    if (!$http->accept($socket[$i])) {
        echo "Accept failed\n";
        exit(1);
    }

    ++$i;
}

$http->setCallback("/some-page", function() {
 echo "(some-page)\n";
    echo "URI: ", $req->getUri(), PHP_EOL;
    $req->sendReply(200, "OK");
    echo "OK\n";
});

$http->setDefaultCallback(function($req) {
    echo "URI: ", $req->getUri(), PHP_EOL;
    $req->sendReply(200, "OK");
    echo "OK\n";
});

$signal = Event::signal($base, SIGINT, function () use ($base) {
    echo "Caught SIGINT. Stopping...\n";
    $base->stop();
});
$signal->add();

$base->dispatch();
echo "END\n";
// We didn't close sockets, since Libevent already sets
// CLOSE_ON_FREE and CLOSE_ON_EXEC flags on the file
// descriptor associated with the sockets.
?>

以上例程的输出类似于：

Client:
$ nc 127.0.0.1 8091
GET /about HTTP/1.0
Connection: close

HTTP/1.0 200 OK
Content-Type: text/html; charset=ISO-8859-1
Connection: close

Server:
127.0.0.1 8091
127.0.0.2 8092
URI: /about
OK

参见

  • EventHttp::bind() - Binds an HTTP server on the specified address and port
EventHttp
EventHttp::addServerAlias
EventHttp


Adds a server alias to the HTTP server object

EventHttp::accept
EventHttp::bind
EventHttp
PHP Manual

EventHttp::addServerAlias

(PECL event >= 1.4.0-beta)

EventHttp::addServerAlias — Adds a server alias to the HTTP server object

说明

public bool EventHttp::addServerAlias ( string $alias )

Adds a server alias to the HTTP server object.

参数

alias

The alias to add.

返回值

Returns TRUE on success. Otherwise FALSE.

范例

Example #1 EventHttp::addServerAlias() example

<?php
$base = new EventBase();
$http = new EventHttp($base);

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

if (!$http->bind("127.0.0.1", 8088)) {
    exit("bind(1) failed\n");
};

if (!$http->addServerAlias("local.net")) {
    exit("Failed to add server alias\n");
}

$http->setCallback("/about", function($req) {
    echo "URI: ", $req->getUri(), PHP_EOL;
    $req->sendReply(200, "OK");
});
$base->dispatch();
?>

参见

  • EventHttp::removeServerAlias() - Removes server alias
EventHttp::accept
EventHttp::bind
EventHttp


Binds an HTTP server on the specified address and port

EventHttp::addServerAlias
EventHttp::__construct
EventHttp
PHP Manual

EventHttp::bind

(PECL event >= 1.2.6-beta)

EventHttp::bind — Binds an HTTP server on the specified address and port

说明

public void EventHttp::bind ( string $address , int $port )

Binds an HTTP server on the specified address and port.

Can be called multiple times to bind the same HTTP server to multiple different ports.

参数

address

A string containing the IP address to listen(2) on.

port

The port number to listen on.

返回值

Returns TRUE on success. Otherwise FALSE.

范例

Example #1 EventHttp::bind() example

<?php
$base = new EventBase();
$http = new EventHttp($base);

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

if (!$http->bind("127.0.0.1", 8088)) {
    exit("bind(1) failed\n");
};
if (!$http->bind("127.0.0.1", 8089)) {
    exit("bind(2) failed\n");
};

$http->setCallback("/about", function($req) {
    echo "URI: ", $req->getUri(), PHP_EOL;
    $req->sendReply(200, "OK");
    echo "OK\n";
});

$base->dispatch();
?>

以上例程的输出类似于：

Client:

$ nc 127.0.0.1 8088
GET /about HTTP/1.0
Connection: close

HTTP/1.0 200 OK
Content-Type: text/html; charset=ISO-8859-1
Connection: close

$ nc 127.0.0.1 8089
GET /unknown HTTP/1.0
Connection: close

HTTP/1.1 404 Not Found
Content-Type: text/html
Date: Wed, 13 Mar 2013 04:14:41 GMT
Content-Length: 149
Connection: close

<html><head><title>404 Not Found</title></head><body><h1>Not Found</h1><p>The requested URL /unknown was not found on this server.</p></body></html>

Server:
URI: /about
OK

参见

  • EventHttp::accept() - Makes an HTTP server accept connections on the specified socket stream or resource
EventHttp::addServerAlias
EventHttp::__construct
EventHttp


Constructs EventHttp object(the HTTP server)

EventHttp::bind
EventHttp::removeServerAlias
EventHttp
PHP Manual

EventHttp::__construct

(PECL event >= 1.2.6-beta)

EventHttp::__construct — Constructs EventHttp object(the HTTP server)

说明

public EventHttp::__construct ( EventBase $base [, EventSslContext $ctx = NULL ] )

Constructs the HTTP server object.

参数

base

Associated event base.

ctx

EventSslContext class object. Turns plain HTTP server into HTTPS server. It means that if ctx is configured correctly, then the underlying buffer events will be based on OpenSSL sockets. Thus, all traffic will pass through the SSL or TLS.

Note:

This parameter is available only if Event is compiled with OpenSSL support and only with Libevent 2.1.0-alpha and higher.

返回值

Returns EventHttp object.

更新日志

版本 | 说明
1.9.0 | OpenSSL support (ctx) added.

范例

Example #1 Simple HTTP server

<?php
/*
 * Simple HTTP server.
 *
 * To test it:
 * 1) Run it on a port of your choice, e.g.:
 * $ php examples/http.php 8010
 * 2) In another terminal connect to some address on this port
 * and make GET or POST request(others are turned off here), e.g.:
 * $ nc -t 127.0.0.1 8010
 * POST /about HTTP/1.0
 * Content-Type: text/plain
 * Content-Length: 4
 * Connection: close
 * (press Enter)
 *
 * It will output
 * a=12
 * HTTP/1.0 200 OK
 * Content-Type: text/html; charset=ISO-8859-1
 * Connection: close
 *
 * $ nc -t 127.0.0.1 8010
 * GET /dump HTTP/1.0
 * Content-Type: text/plain
 * Content-Encoding: UTF-8
 * Connection: close
 * (press Enter)
 *
 * It will output:
 * HTTP/1.0 200 OK
 * Content-Type: text/html; charset=ISO-8859-1
 * Connection: close
 * (press Enter)
 *
 * $ nc -t 127.0.0.1 8010
 * GET /unknown HTTP/1.0
 * Connection: close
 *
 * It will output:
 * HTTP/1.0 200 OK
 * Content-Type: text/html; charset=ISO-8859-1
 * Connection: close
 *
 * 3) See what the server outputs on the previous terminal window.
 */

function _http_dump($req, $data) {
    static $counter      = 0;
    static $max_requests = 2;

    if (++$counter >= $max_requests)  {
        echo "Counter reached max requests $max_requests. Exiting\n";
        exit();
    }

    echo __METHOD__, " called\n";
    echo "request:"; var_dump($req);
    echo "data:"; var_dump($data);

    echo "\n===== DUMP =====\n";
    echo "Command:", $req->getCommand(), PHP_EOL;
    echo "URI:", $req->getUri(), PHP_EOL;
    echo "Input headers:"; var_dump($req->getInputHeaders());
    echo "Output headers:"; var_dump($req->getOutputHeaders());

    echo "\n >> Sending reply ...";
    $req->sendReply(200, "OK");
    echo "OK\n";

    echo "\n >> Reading input buffer ...\n";
    $buf = $req->getInputBuffer();
    while ($s = $buf->readLine(EventBuffer::EOL_ANY)) {
        echo $s, PHP_EOL;
    }
    echo "No more data in the buffer\n";
}

function _http_about($req) {
    echo __METHOD__, PHP_EOL;
    echo "URI: ", $req->getUri(), PHP_EOL;
    echo "\n >> Sending reply ...";
    $req->sendReply(200, "OK");
    echo "OK\n";
}

function _http_default($req, $data) {
    echo __METHOD__, PHP_EOL;
    echo "URI: ", $req->getUri(), PHP_EOL;
    echo "\n >> Sending reply ...";
    $req->sendReply(200, "OK");
    echo "OK\n";
}

$port = 8010;
if ($argc > 1) {
    $port = (int) $argv[1];
}
if ($port <= 0 || $port > 65535) {
    exit("Invalid port");
}

$base = new EventBase();
$http = new EventHttp($base);
$http->setAllowedMethods(EventHttpRequest::CMD_GET | EventHttpRequest::CMD_POST);

$http->setCallback("/dump", "_http_dump", array(4, 8));
$http->setCallback("/about", "_http_about");
$http->setDefaultCallback("_http_default", "custom data value");

$http->bind("0.0.0.0", 8010);
$base->loop();
?>

以上例程的输出类似于：

a=12
HTTP/1.0 200 OK
Content-Type: text/html; charset=ISO-8859-1
Connection: close

HTTP/1.0 200 OK
Content-Type: text/html; charset=ISO-8859-1
Connection: close
(press Enter)

HTTP/1.0 200 OK
Content-Type: text/html; charset=ISO-8859-1
Connection: close
EventHttp::bind
EventHttp::removeServerAlias
EventHttp


Removes server alias

EventHttp::__construct
EventHttp::setAllowedMethods
EventHttp
PHP Manual

EventHttp::removeServerAlias

(PECL event >= 1.4.0-beta)

EventHttp::removeServerAlias — Removes server alias

说明

public bool EventHttp::removeServerAlias ( string $alias )

Removes server alias added with EventHttp::addServerAlias()

参数

alias

The alias to remove.

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • EventHttp::addServerAlias() - Adds a server alias to the HTTP server object
EventHttp::__construct
EventHttp::setAllowedMethods
EventHttp


Sets the what HTTP methods are supported in requests accepted by this server, and passed to user callbacks

EventHttp::removeServerAlias
EventHttp::setCallback
EventHttp
PHP Manual

EventHttp::setAllowedMethods

(PECL event >= 1.4.0-beta)

EventHttp::setAllowedMethods — Sets the what HTTP methods are supported in requests accepted by this server, and passed to user callbacks

说明

public void EventHttp::setAllowedMethods ( int $methods )

Sets the what HTTP methods are supported in requests accepted by this server, and passed to user callbacks

If not supported they will generate a "405 Method not allowed" response.

By default this includes the following methods: GET , POST , HEAD , PUT , DELETE . See EventHttpRequest::CMD_* constants.

参数

methods

A bit mask of EventHttpRequest::CMD_* constants .

返回值

没有返回值。

EventHttp::removeServerAlias
EventHttp::setCallback
EventHttp


Sets a callback for specified URI

EventHttp::setAllowedMethods
EventHttp::setDefaultCallback
EventHttp
PHP Manual

EventHttp::setCallback

(PECL event >= 1.4.0-beta)

EventHttp::setCallback — Sets a callback for specified URI

说明

public void EventHttp::setCallback ( string $path , string $cb [, string $arg ] )

Sets a callback for specified URI.

参数

path

The path for which to invoke the callback.

cb

The callback callable that gets invoked on requested path . It should match the following prototype:

void callback ([ EventHttpRequest $req = NULL [, mixed $arg = NULL ]] )

req

EventHttpRequest object.

arg

Custom data.

arg

Custom data.

返回值

Returns TRUE on success. Otherwise FALSE.

范例

Example #1 EventHttp::setCallback() example

<?php
/*
 * Simple HTTP server.
 *
 * To test it:
 * 1) Run it on a port of your choice, e.g.:
 * $ php examples/http.php 8010
 * 2) In another terminal connect to some address on this port
 * and make GET or POST request(others are turned off here), e.g.:
 * $ nc -t 127.0.0.1 8010
 * POST /about HTTP/1.0
 * Content-Type: text/plain
 * Content-Length: 4
 * Connection: close
 * (press Enter)
 *
 * It will output
 * a=12
 * HTTP/1.0 200 OK
 * Content-Type: text/html; charset=ISO-8859-1
 * Connection: close
 *
 * 3) See what the server outputs on the previous terminal window.
 */

function _http_dump($req, $data) {
    static $counter      = 0;
    static $max_requests = 2;

    if (++$counter >= $max_requests)  {
        echo "Counter reached max requests $max_requests. Exiting\n";
        exit();
    }

    echo __METHOD__, " called\n";
    echo "request:"; var_dump($req);
    echo "data:"; var_dump($data);

    echo "\n===== DUMP =====\n";
    echo "Command:", $req->getCommand(), PHP_EOL;
    echo "URI:", $req->getUri(), PHP_EOL;
    echo "Input headers:"; var_dump($req->getInputHeaders());
    echo "Output headers:"; var_dump($req->getOutputHeaders());

    echo "\n >> Sending reply ...";
    $req->sendReply(200, "OK");
    echo "OK\n";

    echo "\n >> Reading input buffer ...\n";
    $buf = $req->getInputBuffer();
    while ($s = $buf->readLine(EventBuffer::EOL_ANY)) {
        echo $s, PHP_EOL;
    }
    echo "No more data in the buffer\n";
}

function _http_about($req) {
    echo __METHOD__, PHP_EOL;
    echo "URI: ", $req->getUri(), PHP_EOL;
    echo "\n >> Sending reply ...";
    $req->sendReply(200, "OK");
    echo "OK\n";
}

function _http_default($req, $data) {
    echo __METHOD__, PHP_EOL;
    echo "URI: ", $req->getUri(), PHP_EOL;
    echo "\n >> Sending reply ...";
    $req->sendReply(200, "OK");
    echo "OK\n";
}

$port = 8010;
if ($argc > 1) {
    $port = (int) $argv[1];
}
if ($port <= 0 || $port > 65535) {
    exit("Invalid port");
}

$base = new EventBase();
$http = new EventHttp($base);
$http->setAllowedMethods(EventHttpRequest::CMD_GET | EventHttpRequest::CMD_POST);

$http->setCallback("/dump", "_http_dump", array(4, 8));
$http->setCallback("/about", "_http_about");
$http->setDefaultCallback("_http_default", "custom data value");

$http->bind("0.0.0.0", 8010);
$base->loop();
?>

以上例程的输出类似于：

a=12
HTTP/1.0 200 OK
Content-Type: text/html; charset=ISO-8859-1
Connection: close

参见

  • EventHttp::setDefaultCallback() - Sets default callback to handle requests that are not caught by specific callbacks
EventHttp::setAllowedMethods
EventHttp::setDefaultCallback
EventHttp


Sets default callback to handle requests that are not caught by specific callbacks

EventHttp::setCallback
EventHttp::setMaxBodySize
EventHttp
PHP Manual

EventHttp::setDefaultCallback

(PECL event >= 1.4.0-beta)

EventHttp::setDefaultCallback — Sets default callback to handle requests that are not caught by specific callbacks

说明

public void EventHttp::setDefaultCallback ( string $cb [, string $arg ] )

Sets default callback to handle requests that are not caught by specific callbacks

参数

cb

The callback callable . It should match the following prototype:

void callback ([ EventHttpRequest $req = NULL [, mixed $arg = NULL ]] )

req

EventHttpRequest object.

arg

Custom data.

arg

User custom data passed to the callback.

返回值

Returns TRUE on success. Otherwise FALSE.

范例

Example #1 EventHttp::setDefaultCallback() example

<?php
$base = new EventBase();
$http = new EventHttp($base);

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

if (!$http->bind("127.0.0.1", 8088)) {
    exit("bind(1) failed\n");
};

$http->setDefaultCallback(function($req) {
    echo "URI: ", $req->getUri(), PHP_EOL;
    $req->sendReply(200, "OK");
});

$base->dispatch();
?>

参见

  • EventHttp::setCallback() - Sets a callback for specified URI
EventHttp::setCallback
EventHttp::setMaxBodySize
EventHttp


Sets maximum request body size

EventHttp::setDefaultCallback
EventHttp::setMaxHeadersSize
EventHttp
PHP Manual

EventHttp::setMaxBodySize

(PECL event >= 1.4.0-beta)

EventHttp::setMaxBodySize — Sets maximum request body size

说明

public void EventHttp::setMaxBodySize ( int $value )

Sets maximum request body size.

参数

value

The body size in bytes.

返回值

没有返回值。

参见

  • EventHttp::setMaxHeadersSize() - Sets maximum HTTP header size
EventHttp::setDefaultCallback
EventHttp::setMaxHeadersSize
EventHttp


Sets maximum HTTP header size

EventHttp::setMaxBodySize
EventHttp::setTimeout
EventHttp
PHP Manual

EventHttp::setMaxHeadersSize

(PECL event >= 1.4.0-beta)

EventHttp::setMaxHeadersSize — Sets maximum HTTP header size

说明

public void EventHttp::setMaxHeadersSize ( int $value )

Sets maximum HTTP header size.

参数

value

The header size in bytes.

返回值

没有返回值。

参见

  • EventHttp::setMaxHeadersSize()
EventHttp::setMaxBodySize
EventHttp::setTimeout
EventHttp


Sets the timeout for an HTTP request

EventHttp::setMaxHeadersSize
EventHttpConnection
EventHttp
PHP Manual

EventHttp::setTimeout

(PECL event >= 1.4.0-beta)

EventHttp::setTimeout — Sets the timeout for an HTTP request

说明

public void EventHttp::setTimeout ( int $value )

Sets the timeout for an HTTP request.

参数

value

The timeout in seconds.

返回值

没有返回值。

EventHttp::setMaxHeadersSize
EventHttpConnection
EventHttp


The EventHttpConnection class

(PECL event >= 1.4.0-beta)

简介

Represents an HTTP connection.

类摘要

EventHttpConnection {
/* 方法 */
public __construct ( EventBase $base , EventDnsBase $dns_base , string $address , int $port [, EventSslContext $ctx = NULL ] )
public EventBase getBase ( void )
public void getPeer ( string &$address , int &$port )
public bool makeRequest ( EventHttpRequest $req , int $type , string $uri )
public void setCloseCallback ( callable $callback [, mixed $data ] )
public void setLocalAddress ( string $address )
public void setLocalPort ( int $port )
public void setMaxBodySize ( string $max_size )
public void setMaxHeadersSize ( string $max_size )
public void setRetries ( int $retries )
public void setTimeout ( int $timeout )
}

Table of Contents

  • EventHttpConnection::__construct — Constructs EventHttpConnection object
  • EventHttpConnection::getBase — Returns event base associated with the connection
  • EventHttpConnection::getPeer — Gets the remote address and port associated with the connection
  • EventHttpConnection::makeRequest — Makes an HTTP request over the specified connection
  • EventHttpConnection::setCloseCallback — Set callback for connection close
  • EventHttpConnection::setLocalAddress — Sets the IP address from which HTTP connections are made
  • EventHttpConnection::setLocalPort — Sets the local port from which connections are made
  • EventHttpConnection::setMaxBodySize — Sets maximum body size for the connection
  • EventHttpConnection::setMaxHeadersSize — Sets maximum header size
  • EventHttpConnection::setRetries — Sets the retry limit for the connection
  • EventHttpConnection::setTimeout — Sets the timeout for the connection
EventHttp::setTimeout
EventHttpConnection::__construct
Event


Constructs EventHttpConnection object

EventHttpConnection
EventHttpConnection::getBase
EventHttpConnection
PHP Manual

EventHttpConnection::__construct

(PECL event >= 1.2.6-beta)

EventHttpConnection::__construct — Constructs EventHttpConnection object

说明

public EventHttpConnection::__construct ( EventBase $base , EventDnsBase $dns_base , string $address , int $port [, EventSslContext $ctx = NULL ] )

Constructs EventHttpConnection object.

参数

base

Associated event base.

dns_base

If dns_base is NULL, hostname resolution will block.

address

The address to connect to.

port

The port to connect to.

ctx

EventSslContext class object. Enables OpenSSL.

Note:

This parameter is available only if Event is compiled with OpenSSL support and only with Libevent 2.1.0-alpha and higher.

返回值

Returns EventHttpConnection object.

更新日志

版本 | 说明
1.9.0 | OpenSSL support (ctx) added.

EventHttpConnection
EventHttpConnection::getBase
EventHttpConnection


Returns event base associated with the connection

EventHttpConnection::__construct
EventHttpConnection::getPeer
EventHttpConnection
PHP Manual

EventHttpConnection::getBase

(PECL event >= 1.2.6-beta)

EventHttpConnection::getBase — Returns event base associated with the connection

说明

public EventBase EventHttpConnection::getBase ( void )

Returns event base associated with the connection.

参数

此函数没有参数。

返回值

On success returns EventBase object associated with the connection. Otherwise FALSE.

EventHttpConnection::__construct
EventHttpConnection::getPeer
EventHttpConnection


Gets the remote address and port associated with the connection

EventHttpConnection::getBase
EventHttpConnection::makeRequest
EventHttpConnection
PHP Manual

EventHttpConnection::getPeer

(PECL event >= 1.2.6-beta)

EventHttpConnection::getPeer — Gets the remote address and port associated with the connection

说明

public void EventHttpConnection::getPeer ( string &$address , int &$port )

Gets the remote address and port associated with the connection

参数

address

Address of the peer.

port

Port of the peer.

返回值

没有返回值。

EventHttpConnection::getBase
EventHttpConnection::makeRequest
EventHttpConnection


Makes an HTTP request over the specified connection

EventHttpConnection::getPeer
EventHttpConnection::setCloseCallback
EventHttpConnection
PHP Manual

EventHttpConnection::makeRequest

(PECL event >= 1.4.0-beta)

EventHttpConnection::makeRequest — Makes an HTTP request over the specified connection

说明

public bool EventHttpConnection::makeRequest ( EventHttpRequest $req , int $type , string $uri )

Makes an HTTP request over the specified connection. type is one of EventHttpRequest::CMD_* constants.

参数

req

The connection object over which to send the request.

type

One of EventHttpRequest::CMD_* constants .

uri

The URI associated with the request.

返回值

Returns TRUE on success. Otherwise FALSE.

范例

Example #1 EventHttpConnection::makeRequest() example

<?php
function _request_handler($req, $base) {
    echo __FUNCTION__, PHP_EOL;

    if (is_null($req)) {
        echo "Timed out\n";
    } else {
        $response_code = $req->getResponseCode();

        if ($response_code == 0) {
            echo "Connection refused\n";
        } elseif ($response_code != 200) {
            echo "Unexpected response: $response_code\n";
        } else {
            echo "Success: $response_code\n";
            $buf = $req->getInputBuffer();
            echo "Body:\n";
            while ($s = $buf->readLine(EventBuffer::EOL_ANY)) {
                echo $s, PHP_EOL;
            }
        }
    }

    $base->exit(NULL);
}

$address = "127.0.0.1";
$port = 80;

$base = new EventBase();
$conn = new EventHttpConnection($base, NULL, $address, $port);
$conn->setTimeout(5);
$req = new EventHttpRequest("_request_handler", $base);

$req->addHeader("Host", $address, EventHttpRequest::OUTPUT_HEADER);
$req->addHeader("Content-Length", "0", EventHttpRequest::OUTPUT_HEADER);
$conn->makeRequest($req, EventHttpRequest::CMD_GET, "/index.cphp");

$base->loop();
?>

以上例程的输出类似于：

_request_handler
Success: 200
Body:
PHP, date:
2013-03-13T20:27:52+05:00

参见

  • EventHttpRequest::addHeader() - Adds an HTTP header to the headers of the request
EventHttpConnection::getPeer
EventHttpConnection::setCloseCallback
EventHttpConnection


Set callback for connection close

EventHttpConnection::makeRequest
EventHttpConnection::setLocalAddress
EventHttpConnection
PHP Manual

EventHttpConnection::setCloseCallback

(PECL event >= 1.8.0)

EventHttpConnection::setCloseCallback — Set callback for connection close

说明

public void EventHttpConnection::setCloseCallback ( callable $callback [, mixed $data ] )

Sets callback for connection close.

参数

callback

Callback which is called when connection is closed. Should match the following prototype:

void callback ([ EventHttpConnection $conn = NULL [, mixed $arg = NULL ]] )

返回值

没有返回值。

范例

Example #1 EventHttpConnection::setCloseCallback() example

<?php
/*
 * Setting up close-connection callback
 *
 * The script handles closed connections using HTTP API.
 *
 * Usage:
 * 1) Launch the server:
 * $ php examples/http_closecb.php 4242
 *
 * 2) Launch a client in another terminal. Telnet-like
 * session should look like the following:
 *
 * $ nc -t 127.0.0.1 4242
 * GET / HTTP/1.0
 * Connection: close
 *
 * The server will output something similar to the following:
 *
 * HTTP/1.0 200 OK
 * Content-Type: multipart/x-mixed-replace;boundary=boundarydonotcross
 * Connection: close
 *
 * <html>
 *
 * 3) Terminate the client connection abruptly,
 * i.e. kill the process, or just press Ctrl-C.
 *
 * 4) Check if the server called _close_callback.
 * The script should output "_close_callback" string to standard output.
 *
 * 5) Check if the server's process has no orphaned connections,
 * e.g. with `lsof` utility.
 */

function _close_callback($conn)
{
    echo __FUNCTION__, PHP_EOL;
}

function _http_default($req, $dummy)
{
    $conn = $req->getConnection();
    $conn->setCloseCallback('_close_callback', NULL);

    /*
    By enabling Event::READ we protect the server against unclosed conections.
    This is a peculiarity of Libevent. The library disables Event::READ events
     on this connection, and the server is not notified about terminated
    connections.

    So each time client terminates connection abruptly, we get an orphaned
    connection. For instance, the following is a part of `lsof -p $PID | grep TCP`
    command after client has terminated connection:

    57-php     15057 ruslan  6u  unix 0xffff8802fb59c780   0t0  125187 socket
    58:php     15057 ruslan  7u  IPv4             125189   0t0     TCP *:4242 (LISTEN)
    59:php     15057 ruslan  8u  IPv4             124342   0t0     TCP localhost:4242->localhost:37375 (CLOSE_WAIT)

    where $PID is our process ID.

    The following block of code fixes such kind of orphaned connections.
     */
    $bev = $req->getBufferEvent();
    $bev->enable(Event::READ);
    // We have to free it explicitly. See
EventHttpRequest::getConnection()
$bev->free(); // we have to free it explicitly

    $req->addHeader(
        'Content-Type',
        'multipart/x-mixed-replace;boundary=boundarydonotcross',
        EventHttpRequest::OUTPUT_HEADER
    );

    $buf = new EventBuffer();
    $buf->add('<html>');

    $req->sendReply(200, "OK");
    $req->sendReplyChunk($buf);
}

$port = 4242;
if ($argc > 1) {
    $port = (int) $argv[1];
}
if ($port <= 0 || $port > 65535) {
    exit("Invalid port");
}

$base = new EventBase();
$http = new EventHttp($base);

$http->setDefaultCallback("_http_default", NULL);
$http->bind("0.0.0.0", $port);
$base->loop();

?>
EventHttpConnection::makeRequest
EventHttpConnection::setLocalAddress
EventHttpConnection


Sets the IP address from which HTTP connections are made

EventHttpConnection::setCloseCallback
EventHttpConnection::setLocalPort
EventHttpConnection
PHP Manual

EventHttpConnection::setLocalAddress

(PECL event >= 1.2.6-beta)

EventHttpConnection::setLocalAddress — Sets the IP address from which HTTP connections are made

说明

public void EventHttpConnection::setLocalAddress ( string $address )

Sets the IP address from which http connections are made.

参数

address

The IP address from which HTTP connections are made.

返回值

没有返回值。

参见

  • EventHttpConnection::setLocalPort() - Sets the local port from which connections are made
EventHttpConnection::setCloseCallback
EventHttpConnection::setLocalPort
EventHttpConnection


Sets the local port from which connections are made

EventHttpConnection::setLocalAddress
EventHttpConnection::setMaxBodySize
EventHttpConnection
PHP Manual

EventHttpConnection::setLocalPort

(PECL event >= 1.2.6-beta)

EventHttpConnection::setLocalPort — Sets the local port from which connections are made

说明

public void EventHttpConnection::setLocalPort ( int $port )

Sets the local port from which connections are made.

参数

port

The port number.

返回值

参见

  • EventHttpConnection::setLocalAddress() - Sets the IP address from which HTTP connections are made
EventHttpConnection::setLocalAddress
EventHttpConnection::setMaxBodySize
EventHttpConnection


Sets maximum body size for the connection

EventHttpConnection::setLocalPort
EventHttpConnection::setMaxHeadersSize
EventHttpConnection
PHP Manual

EventHttpConnection::setMaxBodySize

(PECL event >= 1.2.6-beta)

EventHttpConnection::setMaxBodySize — Sets maximum body size for the connection

说明

public void EventHttpConnection::setMaxBodySize ( string $max_size )

Sets maximum body size for the connection.

参数

max_size

The maximum body size in bytes.

返回值

没有返回值。

参见

  • EventHttpConnection::setMaxHeadersSize() - Sets maximum header size
EventHttpConnection::setLocalPort
EventHttpConnection::setMaxHeadersSize
EventHttpConnection


Sets maximum header size

EventHttpConnection::setMaxBodySize
EventHttpConnection::setRetries
EventHttpConnection
PHP Manual

EventHttpConnection::setMaxHeadersSize

(PECL event >= 1.2.6-beta)

EventHttpConnection::setMaxHeadersSize — Sets maximum header size

说明

public void EventHttpConnection::setMaxHeadersSize ( string $max_size )

Sets maximum header size for the connection.

参数

max_size

The maximum header size in bytes.

返回值

没有返回值。

参见

  • EventHttpConnection::setMaxBodySize() - Sets maximum body size for the connection
EventHttpConnection::setMaxBodySize
EventHttpConnection::setRetries
EventHttpConnection


Sets the retry limit for the connection

EventHttpConnection::setMaxHeadersSize
EventHttpConnection::setTimeout
EventHttpConnection
PHP Manual

EventHttpConnection::setRetries

(PECL event >= 1.2.6-beta)

EventHttpConnection::setRetries — Sets the retry limit for the connection

说明

public void EventHttpConnection::setRetries ( int $retries )

Sets the retry limit for the connection

参数

retries

The retry limit. -1 means infinity.

返回值

没有返回值。

EventHttpConnection::setMaxHeadersSize
EventHttpConnection::setTimeout
EventHttpConnection


Sets the timeout for the connection

EventHttpConnection::setRetries
EventHttpRequest
EventHttpConnection
PHP Manual

EventHttpConnection::setTimeout

(PECL event >= 1.2.6-beta)

EventHttpConnection::setTimeout — Sets the timeout for the connection

说明

public void EventHttpConnection::setTimeout ( int $timeout )

Sets the timeout for the connection

参数

timeout

Timeout in seconds.

返回值

没有返回值。

EventHttpConnection::setRetries
EventHttpRequest
EventHttpConnection


The EventHttpRequest class

(PECL event >= 1.4.0-beta)

简介

Represents an HTTP request.

类摘要

EventHttpRequest {
/* Constants */
const integer CMD_GET = 1 ;
const integer CMD_POST = 2 ;
const integer CMD_HEAD = 4 ;
const integer CMD_PUT = 8 ;
const integer CMD_DELETE = 16 ;
const integer CMD_OPTIONS = 32 ;
const integer CMD_TRACE = 64 ;
const integer CMD_CONNECT = 128 ;
const integer CMD_PATCH = 256 ;
const integer INPUT_HEADER = 1 ;
const integer OUTPUT_HEADER = 2 ;
/* 方法 */
public bool addHeader ( string $key , string $value , int $type )
public void cancel ( void )
public void clearHeaders ( void )
public void closeConnection ( void )
public __construct ( callable $callback [, mixed $data = NULL ] )
public void findHeader ( string $key , string $type )
public void free ( void )
public EventBufferEvent closeConnection ( void )
public void getCommand ( void )
public EventHttpConnection closeConnection ( void )
public string getHost ( void )
public EventBuffer getInputBuffer ( void )
public array getInputHeaders ( void )
public EventBuffer getOutputBuffer ( void )
public void getOutputHeaders ( void )
public int getResponseCode ( void )
public string getUri ( void )
public void removeHeader ( string $key , string $type )
public void sendError ( int $error [, string $reason = NULL ] )
public void sendReply ( int $code , string $reason [, EventBuffer $buf ] )
public void sendReplyChunk ( EventBuffer $buf )
public void sendReplyEnd ( void )
public void sendReplyStart ( int $code , string $reason )
}

预定义常量

EventHttpRequest::CMD_GET

GET method(command)

EventHttpRequest::CMD_POST

POST method(command)

EventHttpRequest::CMD_HEAD

HEAD method(command)

EventHttpRequest::CMD_PUT

PUT method(command)

EventHttpRequest::CMD_DELETE

DELETE command(method)

EventHttpRequest::CMD_OPTIONS

OPTIONS method(command)

EventHttpRequest::CMD_TRACE

TRACE method(command)

EventHttpRequest::CMD_CONNECT

CONNECT method(command)

EventHttpRequest::CMD_PATCH

PATCH method(command)

EventHttpRequest::INPUT_HEADER

Request input header type.

EventHttpRequest::OUTPUT_HEADER

Request output header type.

Table of Contents

  • EventHttpRequest::addHeader — Adds an HTTP header to the headers of the request
  • EventHttpRequest::cancel — Cancels a pending HTTP request
  • EventHttpRequest::clearHeaders — Removes all output headers from the header list of the request
  • EventHttpRequest::closeConnection — Closes associated HTTP connection
  • EventHttpRequest::__construct — Constructs EventHttpRequest object
  • EventHttpRequest::findHeader — Finds the value belonging a header
  • EventHttpRequest::free — Frees the object and removes associated events
  • EventHttpRequest::getBufferEvent — Returns EventBufferEvent object
  • EventHttpRequest::getCommand — Returns the request command(method)
  • EventHttpRequest::getConnection — Returns EventHttpConnection object
  • EventHttpRequest::getHost — Returns the request host
  • EventHttpRequest::getInputBuffer — Returns the input buffer
  • EventHttpRequest::getInputHeaders — Returns associative array of the input headers
  • EventHttpRequest::getOutputBuffer — Returns the output buffer of the request
  • EventHttpRequest::getOutputHeaders — Returns associative array of the output headers
  • EventHttpRequest::getResponseCode — Returns the response code
  • EventHttpRequest::getUri — Returns the request URI
  • EventHttpRequest::removeHeader — Removes an HTTP header from the headers of the request
  • EventHttpRequest::sendError — Send an HTML error message to the client
  • EventHttpRequest::sendReply — Send an HTML reply to the client
  • EventHttpRequest::sendReplyChunk — Send another data chunk as part of an ongoing chunked reply
  • EventHttpRequest::sendReplyEnd — Complete a chunked reply, freeing the request as appropriate
  • EventHttpRequest::sendReplyStart — Initiate a chunked reply
EventHttpConnection::setTimeout
EventHttpRequest::addHeader
Event


Adds an HTTP header to the headers of the request

EventHttpRequest
EventHttpRequest::cancel
EventHttpRequest
PHP Manual

EventHttpRequest::addHeader

(PECL event >= 1.4.0-beta)

EventHttpRequest::addHeader — Adds an HTTP header to the headers of the request

说明

public bool EventHttpRequest::addHeader ( string $key , string $value , int $type )

Adds an HTTP header to the headers of the request.

参数

key

Header name.

value

Header value.

type

One of EventHttpRequest::*_HEADER constants .

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • EventHttpRequest::removeHeader() - Removes an HTTP header from the headers of the request
EventHttpRequest
EventHttpRequest::cancel
EventHttpRequest


Cancels a pending HTTP request

EventHttpRequest::addHeader
EventHttpRequest::clearHeaders
EventHttpRequest
PHP Manual

EventHttpRequest::cancel

(PECL event >= 1.4.0-beta)

EventHttpRequest::cancel — Cancels a pending HTTP request

说明

public void EventHttpRequest::cancel ( void )

Cancels a pending HTTP request.

Cancels an ongoing HTTP request. The callback associated with this request is not executed and the request object is freed. If the request is currently being processed, e.g. it is ongoing, the corresponding EventHttpConnection object is going to get reset.

A request cannot be canceled if its callback has executed already. A request may be canceled reentrantly from its chunked callback.

参数

此函数没有参数。

返回值

没有返回值。

EventHttpRequest::addHeader
EventHttpRequest::clearHeaders
EventHttpRequest


Removes all output headers from the header list of the request

EventHttpRequest::cancel
EventHttpRequest::closeConnection
EventHttpRequest
PHP Manual

EventHttpRequest::clearHeaders

(PECL event >= 1.4.0-beta)

EventHttpRequest::clearHeaders — Removes all output headers from the header list of the request

说明

public void EventHttpRequest::clearHeaders ( void )

Removes all output headers from the header list of the request.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • EventHttpRequest::addHeader() - Adds an HTTP header to the headers of the request
EventHttpRequest::cancel
EventHttpRequest::closeConnection
EventHttpRequest


Closes associated HTTP connection

EventHttpRequest::clearHeaders
EventHttpRequest::__construct
EventHttpRequest
PHP Manual

EventHttpRequest::closeConnection

(PECL event >= 1.8.0)

EventHttpRequest::closeConnection — Closes associated HTTP connection

说明

public void EventHttpRequest::closeConnection ( void )

Closes HTTP connection associated with the request.

参数

此函数没有参数。

返回值

没有返回值。

EventHttpRequest::clearHeaders
EventHttpRequest::__construct
EventHttpRequest


Constructs EventHttpRequest object

EventHttpRequest::closeConnection
EventHttpRequest::findHeader
EventHttpRequest
PHP Manual

EventHttpRequest::__construct

(PECL event >= 1.4.0-beta)

EventHttpRequest::__construct — Constructs EventHttpRequest object

说明

public EventHttpRequest::__construct ( callable $callback [, mixed $data = NULL ] )

Constructs EventHttpRequest object.

参数

callback

Gets invoked on requesting path. Should match the following prototype:

void callback ([ EventHttpRequest $req = NULL [, mixed $arg = NULL ]] )
data

User custom data passed to the callback.

返回值

Returns EventHttpRequest object.

范例

Example #1 EventHttpRequest::__construct() example

<?php

function _request_handler($req, $base) {
    echo __FUNCTION__, PHP_EOL;

    if (is_null($req)) {
        echo "Timed out\n";
    } else {
        $response_code = $req->getResponseCode();

        if ($response_code == 0) {
            echo "Connection refused\n";
        } elseif ($response_code != 200) {
            echo "Unexpected response: $response_code\n";
        } else {
            echo "Success: $response_code\n";
            $buf = $req->getInputBuffer();
            echo "Body:\n";
            while ($s = $buf->readLine(EventBuffer::EOL_ANY)) {
                echo $s, PHP_EOL;
            }
        }
    }

    $base->exit(NULL);
}

$address = "127.0.0.1";
$port = 80;

$base = new EventBase();
$conn = new EventHttpConnection($base, NULL, $address, $port);
$conn->setTimeout(5);
$req = new EventHttpRequest("_request_handler", $base);

$req->addHeader("Host", $address, EventHttpRequest::OUTPUT_HEADER);
$req->addHeader("Content-Length", "0", EventHttpRequest::OUTPUT_HEADER);
$conn->makeRequest($req, EventHttpRequest::CMD_GET, "/index.cphp");

$base->loop();
?>

参见

  • EventHttpRequest::cancel() - Cancels a pending HTTP request
  • EventHttpRequest::addHeader() - Adds an HTTP header to the headers of the request
EventHttpRequest::closeConnection
EventHttpRequest::findHeader
EventHttpRequest


Finds the value belonging a header

EventHttpRequest::__construct
EventHttpRequest::free
EventHttpRequest
PHP Manual

EventHttpRequest::findHeader

(PECL event >= 1.4.0-beta)

EventHttpRequest::findHeader — Finds the value belonging a header

说明

public void EventHttpRequest::findHeader ( string $key , string $type )

Finds the value belonging a header.

参数

key

The header name.

type

One of EventHttpRequest::*_HEADER constants .

返回值

Returns NULL if header not found.

参见

  • EventHttpRequest::addHeader() - Adds an HTTP header to the headers of the request
EventHttpRequest::__construct
EventHttpRequest::free
EventHttpRequest


Frees the object and removes associated events

EventHttpRequest::findHeader
EventHttpRequest::getBufferEvent
EventHttpRequest
PHP Manual

EventHttpRequest::free

(PECL event >= 1.4.0-beta)

EventHttpRequest::free — Frees the object and removes associated events

说明

public void EventHttpRequest::free ( void )

Frees the object and removes associated events.

参数

此函数没有参数。

返回值

没有返回值。

EventHttpRequest::findHeader
EventHttpRequest::getBufferEvent
EventHttpRequest


Returns EventBufferEvent object

EventHttpRequest::free
EventHttpRequest::getCommand
EventHttpRequest
PHP Manual

EventHttpRequest::getBufferEvent

(PECL event >= 1.8.0)

EventHttpRequest::getBufferEvent — Returns EventBufferEvent object

说明

public EventBufferEvent EventHttpRequest::closeConnection ( void )

Returns EventBufferEvent object which represents buffer event that the connection is using.

Warning

The reference counter of the returned object will be incremented by one to protect internal structures against premature destruction when the method is called from a user callback. So the EventBufferEvent object should be freed explicitly with EventBufferEvent::free() method. Otherwise memory will leak.

参数

此函数没有参数。

返回值

Returns EventBufferEvent object.

参见

  • EventHttpRequest::getConnection() - Returns EventHttpConnection object
EventHttpRequest::free
EventHttpRequest::getCommand
EventHttpRequest


Returns the request command(method)

EventHttpRequest::getBufferEvent
EventHttpRequest::getConnection
EventHttpRequest
PHP Manual

EventHttpRequest::getCommand

(PECL event >= 1.4.0-beta)

EventHttpRequest::getCommand — Returns the request command(method)

说明

public void EventHttpRequest::getCommand ( void )

Returns the request command, one of EventHttpRequest::CMD_* constants.

参数

此函数没有参数。

返回值

Returns the request command, one of EventHttpRequest::CMD_* constants.

EventHttpRequest::getBufferEvent
EventHttpRequest::getConnection
EventHttpRequest


Returns EventHttpConnection object

EventHttpRequest::getCommand
EventHttpRequest::getHost
EventHttpRequest
PHP Manual

EventHttpRequest::getConnection

(PECL event >= 1.8.0)

EventHttpRequest::getConnection — Returns EventHttpConnection object

说明

public EventHttpConnection EventHttpRequest::closeConnection ( void )

Returns EventHttpConnection object which represents HTTP connection associated with the request.

Warning

Libevent API allows HTTP request objects to be not bound to any HTTP connection. Therefore we can't unambiguously associate EventHttpRequest with EventHttpConnection . Thus, we construct EventHttpConnection object on-the-fly. Having no information about the event base, DNS base and connection-close callback, we just leave these fields unset.

EventHttpRequest::getConnection() method is usually useful when we need to set up a callback on connection close. See EventHttpConnection::setCloseCallback() .

参数

此函数没有参数。

返回值

Returns EventHttpConnection object.

参见

  • EventHttpConnection::setCloseCallback() - Set callback for connection close
  • EventHttpRequest::getBufferEvent() - Returns EventBufferEvent object
EventHttpRequest::getCommand
EventHttpRequest::getHost
EventHttpRequest


Returns the request host

EventHttpRequest::getConnection
EventHttpRequest::getInputBuffer
EventHttpRequest
PHP Manual

EventHttpRequest::getHost

(PECL event >= 1.4.0-beta)

EventHttpRequest::getHost — Returns the request host

说明

public string EventHttpRequest::getHost ( void )

Returns the request host.

参数

此函数没有参数。

返回值

Returns the request host.

参见

  • EventHttpRequest::getUri() - Returns the request URI
  • EventHttpRequest::getCommand() - Returns the request command(method)
EventHttpRequest::getConnection
EventHttpRequest::getInputBuffer
EventHttpRequest


Returns the input buffer

EventHttpRequest::getHost
EventHttpRequest::getInputHeaders
EventHttpRequest
PHP Manual

EventHttpRequest::getInputBuffer

(PECL event >= 1.4.0-beta)

EventHttpRequest::getInputBuffer — Returns the input buffer

说明

public EventBuffer EventHttpRequest::getInputBuffer ( void )

Returns the input buffer.

参数

此函数没有参数。

返回值

Returns the input buffer.

参见

  • EventHttpRequest::getOutputBuffer() - Returns the output buffer of the request
EventHttpRequest::getHost
EventHttpRequest::getInputHeaders
EventHttpRequest


Returns associative array of the input headers

EventHttpRequest::getInputBuffer
EventHttpRequest::getOutputBuffer
EventHttpRequest
PHP Manual

EventHttpRequest::getInputHeaders

(PECL event >= 1.4.0-beta)

EventHttpRequest::getInputHeaders — Returns associative array of the input headers

说明

public array EventHttpRequest::getInputHeaders ( void )

Returns associative array of the input headers.

参数

此函数没有参数。

返回值

Returns associative array of the input headers.

参见

  • EventHttpRequest::getOutputHeaders() - Returns associative array of the output headers
EventHttpRequest::getInputBuffer
EventHttpRequest::getOutputBuffer
EventHttpRequest


Returns the output buffer of the request

EventHttpRequest::getInputHeaders
EventHttpRequest::getOutputHeaders
EventHttpRequest
PHP Manual

EventHttpRequest::getOutputBuffer

(PECL event >= 1.4.0-beta)

EventHttpRequest::getOutputBuffer — Returns the output buffer of the request

说明

public EventBuffer EventHttpRequest::getOutputBuffer ( void )

Returns the output buffer of the request.

参数

此函数没有参数。

返回值

Returns the output buffer of the request.

参见

  • EventHttpRequest::getInputBuffer() - Returns the input buffer
EventHttpRequest::getInputHeaders
EventHttpRequest::getOutputHeaders
EventHttpRequest


Returns associative array of the output headers

EventHttpRequest::getOutputBuffer
EventHttpRequest::getResponseCode
EventHttpRequest
PHP Manual

EventHttpRequest::getOutputHeaders

(PECL event >= 1.4.0-beta)

EventHttpRequest::getOutputHeaders — Returns associative array of the output headers

说明

public void EventHttpRequest::getOutputHeaders ( void )

Returns associative array of the output headers.

参数

此函数没有参数。

返回值

参见

  • EventHttpRequest::getInputHeaders() - Returns associative array of the input headers
EventHttpRequest::getOutputBuffer
EventHttpRequest::getResponseCode
EventHttpRequest


Returns the response code

EventHttpRequest::getOutputHeaders
EventHttpRequest::getUri
EventHttpRequest
PHP Manual

EventHttpRequest::getResponseCode

(PECL event >= 1.4.0-beta)

EventHttpRequest::getResponseCode — Returns the response code

说明

public int EventHttpRequest::getResponseCode ( void )

Returns the response code.

参数

此函数没有参数。

返回值

Returns the response code of the request.

参见

  • EventHttpRequest::getCommand() - Returns the request command(method)
  • EventHttpRequest::getHost() - Returns the request host
  • EventHttpRequest::getUri() - Returns the request URI
EventHttpRequest::getOutputHeaders
EventHttpRequest::getUri
EventHttpRequest


Returns the request URI

EventHttpRequest::getResponseCode
EventHttpRequest::removeHeader
EventHttpRequest
PHP Manual

EventHttpRequest::getUri

(PECL event >= 1.4.0-beta)

EventHttpRequest::getUri — Returns the request URI

说明

public string EventHttpRequest::getUri ( void )

Returns the request URI

参数

此函数没有参数。

返回值

Returns the request URI

参见

  • EventHttpRequest::getCommand() - Returns the request command(method)
  • EventHttpRequest::getHost() - Returns the request host
  • EventHttpRequest::getResponseCode() - Returns the response code
EventHttpRequest::getResponseCode
EventHttpRequest::removeHeader
EventHttpRequest


Removes an HTTP header from the headers of the request

EventHttpRequest::getUri
EventHttpRequest::sendError
EventHttpRequest
PHP Manual

EventHttpRequest::removeHeader

(PECL event >= 1.4.0-beta)

EventHttpRequest::removeHeader — Removes an HTTP header from the headers of the request

说明

public void EventHttpRequest::removeHeader ( string $key , string $type )

Removes an HTTP header from the headers of the request.

参数

key

The header name.

type

type is one of EventHttpRequest::*_HEADER constants.

返回值

Removes an HTTP header from the headers of the request.

参见

  • EventHttpRequest::addHeader() - Adds an HTTP header to the headers of the request
EventHttpRequest::getUri
EventHttpRequest::sendError
EventHttpRequest


Send an HTML error message to the client

EventHttpRequest::removeHeader
EventHttpRequest::sendReply
EventHttpRequest
PHP Manual

EventHttpRequest::sendError

(PECL event >= 1.4.0-beta)

EventHttpRequest::sendError — Send an HTML error message to the client

说明

public void EventHttpRequest::sendError ( int $error [, string $reason = NULL ] )

Send an HTML error message to the client.

参数

error

The HTTP error code.

reason

A brief explanation ofthe error. If NULL, the standard meaning of the error code will be used.

返回值

没有返回值。

范例

Example #1 EventHttpRequest::sendError() example

<?php
function _http_400($req) {
    $req->sendError(400);
}

$base = new EventBase();
$http = new EventHttp($base);

$http->setCallback("/err400", "_http_400");

$http->bind("0.0.0.0", 8010);
$base->loop();
?>

参见

  • EventHttpRequest::sendReply() - Send an HTML reply to the client
EventHttpRequest::removeHeader
EventHttpRequest::sendReply
EventHttpRequest


Send an HTML reply to the client

EventHttpRequest::sendError
EventHttpRequest::sendReplyChunk
EventHttpRequest
PHP Manual

EventHttpRequest::sendReply

(PECL event >= 1.4.0-beta)

EventHttpRequest::sendReply — Send an HTML reply to the client

说明

public void EventHttpRequest::sendReply ( int $code , string $reason [, EventBuffer $buf ] )

Send an HTML reply to the client. The body of the reply consists of data in optional buf parameter.

参数

code

The HTTP response code to send.

reason

A brief message to send with the response code.

buf

The body of the response.

返回值

没有返回值。

参见

  • EventHttpRequest::sendError() - Send an HTML error message to the client
  • EventHttpRequest::sendReplyChunk() - Send another data chunk as part of an ongoing chunked reply
EventHttpRequest::sendError
EventHttpRequest::sendReplyChunk
EventHttpRequest


Send another data chunk as part of an ongoing chunked reply

EventHttpRequest::sendReply
EventHttpRequest::sendReplyEnd
EventHttpRequest
PHP Manual

EventHttpRequest::sendReplyChunk

(PECL event >= 1.4.0-beta)

EventHttpRequest::sendReplyChunk — Send another data chunk as part of an ongoing chunked reply

说明

public void EventHttpRequest::sendReplyChunk ( EventBuffer $buf )

Send another data chunk as part of an ongoing chunked reply. After calling this method buf will be empty.

参数

buf

The data chunk to send as part of the reply.

返回值

没有返回值。

参见

  • EventHttpRequest::sendReplyStart() - Initiate a chunked reply
  • EventHttpRequest::sendReplyEnd() - Complete a chunked reply, freeing the request as appropriate
EventHttpRequest::sendReply
EventHttpRequest::sendReplyEnd
EventHttpRequest


Complete a chunked reply, freeing the request as appropriate

EventHttpRequest::sendReplyChunk
EventHttpRequest::sendReplyStart
EventHttpRequest
PHP Manual

EventHttpRequest::sendReplyEnd

(PECL event >= 1.4.0-beta)

EventHttpRequest::sendReplyEnd — Complete a chunked reply, freeing the request as appropriate

说明

public void EventHttpRequest::sendReplyEnd ( void )

Complete a chunked reply, freeing the request as appropriate.

参数

此函数没有参数。

返回值

没有返回值。

参见

  • EventHttpRequest::sendReplyStart() - Initiate a chunked reply
  • EventHttpRequest::sendReplyChunk() - Send another data chunk as part of an ongoing chunked reply
EventHttpRequest::sendReplyChunk
EventHttpRequest::sendReplyStart
EventHttpRequest


Initiate a chunked reply

EventHttpRequest::sendReplyEnd
EventListener
EventHttpRequest
PHP Manual

EventHttpRequest::sendReplyStart

(PECL event >= 1.4.0-beta)

EventHttpRequest::sendReplyStart — Initiate a chunked reply

说明

public void EventHttpRequest::sendReplyStart ( int $code , string $reason )

Initiate a reply that uses Transfer-Encoding chunked .

This allows the caller to stream the reply back to the client and is useful when either not all of the reply data is immediately available or when sending very large replies.

The caller needs to supply data chunks with EventHttpRequest::sendReplyChunk() and complete the reply by calling EventHttpRequest::sendReplyEnd() .

参数

code

The HTTP response code to send.

reason

A brief message to send with the response code.

返回值

没有返回值。

参见

  • EventHttpRequest::sendReplyChunk() - Send another data chunk as part of an ongoing chunked reply
  • EventHttpRequest::sendReplyEnd() - Complete a chunked reply, freeing the request as appropriate
EventHttpRequest::sendReplyEnd
EventListener
EventHttpRequest


The EventListener class

(PECL event >= 1.5.0)

简介

Represents a connection listener.

类摘要

final EventListener {
/* Constants */
const integer OPT_LEAVE_SOCKETS_BLOCKING = 1 ;
const integer OPT_CLOSE_ON_FREE = 2 ;
const integer OPT_CLOSE_ON_EXEC = 4 ;
const integer OPT_REUSEABLE = 8 ;
const integer OPT_THREADSAFE = 16 ;
/* 属性 */
public readonly int $fd ;
/* 方法 */
public __construct ( EventBase $base , callable $cb , mixed $data , int $flags , int $backlog , mixed $target )
public bool disable ( void )
public bool enable ( void )
public void getBase ( void )
public static bool getSocketName ( string &$address [, mixed &$port ] )
public void setCallback ( callable $cb [, mixed $arg = NULL ] )
public void setErrorCallback ( string $cb )
}

属性

fd

Numeric file descriptor of the underlying socket. (Added in event-1.6.0 .)

预定义常量

EventListener::OPT_LEAVE_SOCKETS_BLOCKING

By default Libevent turns underlying file descriptors, or sockets, to non-blocking mode. This flag tells to leave them non-blocking.

EventListener::OPT_CLOSE_ON_FREE

If this option is set, the connection listener closes its underlying socket when the EventListener object is freed.

EventListener::OPT_CLOSE_ON_EXEC

If this option is set, the connection listener sets the close-on-exec flag on the underlying listener socket. See platform documentation for fcntl and FD_CLOEXEC for more information.

EventListener::OPT_REUSEABLE

By default on some platforms, once a listener socket is closed, no other socket can bind to the same port until a while has passed. Setting this option makes Libevent mark the socket as reusable, so that once it is closed, another socket can be opened to listen on the same port.

EventListener::OPT_THREADSAFE

Allocate locks for the listener, so that it's safe to use it from multiple threads.

Table of Contents

  • EventListener::__construct — Creates new connection listener associated with an event base
  • EventListener::disable — Disables an event connect listener object
  • EventListener::enable — Enables an event connect listener object
  • EventListener::getBase — Returns event base associated with the event listener
  • EventListener::getSocketName — Retreives the current address to which the listener's socket is bound.
  • EventListener::setCallback — The setCallback purpose
  • EventListener::setErrorCallback — Set event listener's error callback
EventHttpRequest::sendReplyStart
EventListener::__construct
Event


Creates new connection listener associated with an event base

EventListener
EventListener::disable
EventListener
PHP Manual

EventListener::__construct

(PECL event >= 1.2.6-beta)

EventListener::__construct — Creates new connection listener associated with an event base

说明

public EventListener::__construct ( EventBase $base , callable $cb , mixed $data , int $flags , int $backlog , mixed $target )

Creates new connection listener associated with an event base.

参数

base

Associated event base.

cb

A callable that will be invoked when new connection received.

data

Custom user data attached to cb .

flags

Bit mask of EventListener::OPT_* constants. See EventListener constants .

backlog

Controls the maximum number of pending connections that the network stack should allow to wait in a not-yet-accepted state at any time; see documentation for your system's listen function for more details. If backlog is negative, Libevent tries to pick a good value for the backlog ; if it is zero, Event assumes that listen is already called on the socket( target )

target

May be string, socket resource, or a stream associated with a socket. In case if target is a string, the string will be parsed as network address. It will be interpreted as a UNIX domain socket path, if prefixed with 'unix:' , e.g. 'unix:/tmp/my.sock' .

返回值

Returns EventListener object representing the event connection listener.

更新日志

版本 | 说明
1.5.0 | UNIX domain sockets' support added.

范例

Example #1 EventListener::__construct() example

<?php
/*
 * Simple echo server based on libevent's connection listener.
 *
 * Usage:
 * 1) In one terminal window run:
 *
 * $ php listener.php 9881
 *
 * 2) In another terminal window open up connection, e.g.:
 *
 * $ nc 127.0.0.1 9881
 *
 * 3) start typing. The server should repeat the input.
 */

class MyListenerConnection {
    private $bev, $base;

    public function __destruct() {
        $this->bev->free();
    }

    public function __construct($base, $fd) {
        $this->base = $base;

        $this->bev = new EventBufferEvent($base, $fd, EventBufferEvent::OPT_CLOSE_ON_FREE);

        $this->bev->setCallbacks(array($this, "echoReadCallback"), NULL,
            array($this, "echoEventCallback"), NULL);

        if (!$this->bev->enable(Event::READ)) {
            echo "Failed to enable READ\n";
            return;
        }
    }

    public function echoReadCallback($bev, $ctx) {
        // Copy all the data from the input buffer to the output buffer

        // Variant #1
        $bev->output->addBuffer($bev->input);

        /* Variant #2 */
        /*
        $input    = $bev->getInput();
        $output = $bev->getOutput();
        $output->addBuffer($input);
        */
    }

    public function echoEventCallback($bev, $events, $ctx) {
        if ($events & EventBufferEvent::ERROR) {
            echo "Error from bufferevent\n";
        }

        if ($events & (EventBufferEvent::EOF | EventBufferEvent::ERROR)) {
            //$bev->free();
            $this->__destruct();
        }
    }
}

class MyListener {
    public $base,
        $listener,
        $socket;
    private $conn = array();

    public function __destruct() {
        foreach ($this->conn as &$c) $c = NULL;
    }

    public function __construct($port) {
        $this->base = new EventBase();
        if (!$this->base) {
            echo "Couldn't open event base";
            exit(1);
        }

        // Variant #1
        /*
        $this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
        if (!socket_bind($this->socket, '0.0.0.0', $port)) {
            echo "Unable to bind socket\n";
            exit(1);
        }
        $this->listener = new EventListener($this->base,
            array($this, "acceptConnCallback"), $this->base,
            EventListener::OPT_CLOSE_ON_FREE | EventListener::OPT_REUSEABLE,
            -1, $this->socket);
         */

        // Variant #2
         $this->listener = new EventListener($this->base,
             array($this, "acceptConnCallback"), $this->base,
             EventListener::OPT_CLOSE_ON_FREE | EventListener::OPT_REUSEABLE, -1,
             "0.0.0.0:$port");

        if (!$this->listener) {
            echo "Couldn't create listener";
            exit(1);
        }

        $this->listener->setErrorCallback(array($this, "accept_error_cb"));
    }

    public function dispatch() {
        $this->base->dispatch();
    }

    // This callback is invoked when there is data to read on $bev
    public function acceptConnCallback($listener, $fd, $address, $ctx) {
        // We got a new connection! Set up a bufferevent for it. */
        $base = $this->base;
        $this->conn[] = new MyListenerConnection($base, $fd);
    }

    public function accept_error_cb($listener, $ctx) {
        $base = $this->base;

        fprintf(STDERR, "Got an error %d (%s) on the listener. "
            ."Shutting down.\n",
            EventUtil::getLastSocketErrno(),
            EventUtil::getLastSocketError());

        $base->exit(NULL);
    }
}

$port = 9808;

if ($argc > 1) {
    $port = (int) $argv[1];
}
if ($port <= 0 || $port > 65535) {
    exit("Invalid port");
}

$l = new MyListener($port);
$l->dispatch();
?>
EventListener
EventListener::disable
EventListener


Disables an event connect listener object

EventListener::__construct
EventListener::enable
EventListener
PHP Manual

EventListener::disable

(PECL event >= 1.2.6-beta)

EventListener::disable — Disables an event connect listener object

说明

public bool EventListener::disable ( void )

Disables an event connect listener object

参数

此函数没有参数。

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • EventListener::enable() - Enables an event connect listener object
EventListener::__construct
EventListener::enable
EventListener


Enables an event connect listener object

EventListener::disable
EventListener::getBase
EventListener
PHP Manual

EventListener::enable

(PECL event >= 1.2.6-beta)

EventListener::enable — Enables an event connect listener object

说明

public bool EventListener::enable ( void )

Enables an event connect listener object

参数

此函数没有参数。

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • EventListener::disable() - Disables an event connect listener object
EventListener::disable
EventListener::getBase
EventListener


Returns event base associated with the event listener

EventListener::enable
EventListener::getSocketName
EventListener
PHP Manual

EventListener::getBase

(PECL event >= 1.2.6-beta)

EventListener::getBase — Returns event base associated with the event listener

说明

public void EventListener::getBase ( void )

Returns event base associated with the event listener.

参数

此函数没有参数。

返回值

Returns event base associated with the event listener.

EventListener::enable
EventListener::getSocketName
EventListener


Retreives the current address to which the listener's socket is bound.

EventListener::getBase
EventListener::setCallback
EventListener
PHP Manual

EventListener::getSocketName

(PECL event >= 1.5.0)

EventListener::getSocketName — Retreives the current address to which the listener's socket is bound.

说明

public static bool EventListener::getSocketName ( string &$address [, mixed &$port ] )

Retreives the current address to which the listener's socket is bound.

参数

address

Output parameter. IP-address depending on the socket address family.

port

Output parameter. The port the socket is bound to.

返回值

Returns TRUE on success. Otherwise FALSE.

EventListener::getBase
EventListener::setCallback
EventListener


The setCallback purpose

EventListener::getSocketName
EventListener::setErrorCallback
EventListener
PHP Manual

EventListener::setCallback

(PECL event >= 1.2.6-beta)

EventListener::setCallback — The setCallback purpose

说明

public void EventListener::setCallback ( callable $cb [, mixed $arg = NULL ] )

Adjust event connect listener's callback and optionally the callback argument.

参数

cb

The new callback for new connections. Ignored if NULL.

Should match the following prototype:

void callback ([ EventListener $listener = NULL [, mixed $fd = NULL [, array $address = NULL [, mixed $arg = NULL ]]]] )

listener

The EventListener object.

fd

The file descriptor or a resource associated with the listener.

address

Array of two elements: IP address and the server port.

arg

User custom data attached to the callback.

arg

Custom user data attached to the callback. Ignored if NULL.

返回值

没有返回值。

EventListener::getSocketName
EventListener::setErrorCallback
EventListener


Set event listener's error callback

EventListener::setCallback
EventSslContext
EventListener
PHP Manual

EventListener::setErrorCallback

(PECL event >= 1.2.6-beta)

EventListener::setErrorCallback — Set event listener's error callback

说明

public void EventListener::setErrorCallback ( string $cb )

Set event listener's error callback

参数

cb

The error callback. Should match the following prototype:

void callback ([ EventListener $listener = NULL [, mixed $data = NULL ]] )

listener

The EventListener object.

data

User custom data attached to the callback.

返回值

参见

  • EventListener::setCallback() - The setCallback purpose
EventListener::setCallback
EventSslContext
EventListener


The EventSslContext class

(PECL event >= 1.2.6-beta)

简介

Represents SSL_CTX structure. Provides methods and properties to configure the SSL context.

类摘要

final EventSslContext {
/* Constants */
const integer SSLv2_CLIENT_METHOD = 1 ;
const integer SSLv3_CLIENT_METHOD = 2 ;
const integer SSLv23_CLIENT_METHOD = 3 ;
const integer TLS_CLIENT_METHOD = 4 ;
const integer SSLv2_SERVER_METHOD = 5 ;
const integer SSLv3_SERVER_METHOD = 6 ;
const integer SSLv23_SERVER_METHOD = 7 ;
const integer TLS_SERVER_METHOD = 8 ;
const integer OPT_LOCAL_CERT = 1 ;
const integer OPT_LOCAL_PK = 2 ;
const integer OPT_PASSPHRASE = 3 ;
const integer OPT_CA_FILE = 4 ;
const integer OPT_CA_PATH = 5 ;
const integer OPT_ALLOW_SELF_SIGNED = 6 ;
const integer OPT_VERIFY_PEER = 7 ;
const integer OPT_VERIFY_DEPTH = 8 ;
const integer OPT_CIPHERS = 9 ;
/* 属性 */
public string $local_cert ;
public string $local_pk ;
/* 方法 */
public __construct ( string $method , string $options )
}

属性

local_cert

Path to local certificate file on filesystem. It must be a PEM-encoded file which contains certificate. It can optionally contain the certificate chain of issuers.

local_pk

Path to local private key file

预定义常量

EventSslContext::SSLv2_CLIENT_METHOD

SSLv2 client method. See SSL_CTX_new(3) man page.

EventSslContext::SSLv3_CLIENT_METHOD

SSLv3 client method. See SSL_CTX_new(3) man page.

EventSslContext::SSLv23_CLIENT_METHOD

SSLv23 client method. See SSL_CTX_new(3) man page.

EventSslContext::TLS_CLIENT_METHOD

TLS client method. See SSL_CTX_new(3) man page.

EventSslContext::SSLv2_SERVER_METHOD

SSLv2 server method. See SSL_CTX_new(3) man page.

EventSslContext::SSLv3_SERVER_METHOD

SSLv3 server method. See SSL_CTX_new(3) man page.

EventSslContext::SSLv23_SERVER_METHOD

SSLv23 server method. See SSL_CTX_new(3) man page.

EventSslContext::TLS_SERVER_METHOD

TLS server method. See SSL_CTX_new(3) man page.

EventSslContext::OPT_LOCAL_CERT

Key for an item of the options' array used in EventSslContext::__construct() . The option points to path of local certificate.

EventSslContext::OPT_LOCAL_PK

Key for an item of the options' array used in EventSslContext::__construct() . The option points to path of the private key.

EventSslContext::OPT_PASSPHRASE

Key for an item of the options' array used in EventSslContext::__construct() . Represents passphrase of the certificate.

EventSslContext::OPT_CA_FILE

Key for an item of the options' array used in EventSslContext::__construct() . Represents path of the certificate authority file.

EventSslContext::OPT_CA_PATH

Key for an item of the options' array used in EventSslContext::__construct() . Represents path where the certificate authority file should be searched for.

EventSslContext::OPT_ALLOW_SELF_SIGNED

Key for an item of the options' array used in EventSslContext::__construct() . Represents option that allows self-signed certificates.

EventSslContext::OPT_VERIFY_PEER

Key for an item of the options' array used in EventSslContext::__construct() . Represents option that tells Event to verify peer.

EventSslContext::OPT_VERIFY_DEPTH

Key for an item of the options' array used in EventSslContext::__construct() . Represents maximum depth for the certificate chain verification that shall be allowed for the SSL context.

EventSslContext::OPT_CIPHERS

Key for an item of the options' array used in EventSslContext::__construct() . Represents the cipher list for the SSL context.

Table of Contents

  • EventSslContext::__construct — Constructs an OpenSSL context for use with Event classes
EventListener::setErrorCallback
EventSslContext::__construct
Event


Constructs an OpenSSL context for use with Event classes

EventSslContext
EventUtil
EventSslContext
PHP Manual

EventSslContext::__construct

(PECL event >= 1.2.6-beta)

EventSslContext::__construct — Constructs an OpenSSL context for use with Event classes

说明

public EventSslContext::__construct ( string $method , string $options )

Creates SSL context holding pointer to SSL_CTX (see the system manual).

参数

method

One of EventSslContext::*_METHOD constants .

options

Associative array of SSL context options One of EventSslContext::OPT_* constants .

返回值

Returns EventSslContext object.

范例

Example #1 EventSslContext::__construct() example

<?php
$ctx = new EventSslContext(EventSslContext::SSLv3_SERVER_METHOD, array(
     EventSslContext::OPT_LOCAL_CERT        => $local_cert,
     EventSslContext::OPT_LOCAL_PK          => $local_pk,
     EventSslContext::OPT_PASSPHRASE        => "echo server",
     EventSslContext::OPT_VERIFY_PEER       => true,
     EventSslContext::OPT_ALLOW_SELF_SIGNED => false,
));
?>
EventSslContext
EventUtil
EventSslContext


The EventUtil class

(PECL event >= 1.5.0)

简介

EventUtil is a singleton with supplimentary methods and constants.

类摘要

final EventUtil {
/* Constants */
const integer AF_INET = 2 ;
const integer AF_INET6 = 10 ;
const integer AF_UNSPEC = 0 ;
const integer LIBEVENT_VERSION_NUMBER = 33559808 ;
const integer SO_DEBUG = 1 ;
const integer SO_REUSEADDR = 2 ;
const integer SO_KEEPALIVE = 9 ;
const integer SO_DONTROUTE = 5 ;
const integer SO_LINGER = 13 ;
const integer SO_BROADCAST = 6 ;
const integer SO_OOBINLINE = 10 ;
const integer SO_SNDBUF = 7 ;
const integer SO_RCVBUF = 8 ;
const integer SO_SNDLOWAT = 19 ;
const integer SO_RCVLOWAT = 18 ;
const integer SO_SNDTIMEO = 21 ;
const integer SO_RCVTIMEO = 20 ;
const integer SO_TYPE = 3 ;
const integer SO_ERROR = 4 ;
const integer SOL_SOCKET = 1 ;
const integer SOL_TCP = 6 ;
const integer SOL_UDP = 17 ;
const integer IPPROTO_IP = 0 ;
const integer IPPROTO_IPV6 = 41 ;
/* 方法 */
abstract public __construct ( void )
public static int getLastSocketErrno ([ mixed $socket = NULL ] )
public static string getLastSocketError ([ mixed $socket ] )
public static int getSocketFd ( mixed $socket )
public static bool getSocketName ( mixed $socket , string &$address [, mixed &$port ] )
public static bool setSocketOption ( mixed $socket , int $level , int $optname , mixed $optval )
public static void sslRandPoll ( void )
}

预定义常量

EventUtil::AF_INET

IPv4 address family

EventUtil::AF_INET6

IPv6 address family

EventUtil::AF_UNSPEC

Unspecified IP address family

EventUtil::SO_DEBUG

Socket option. Enable socket debugging. Only allowed for processes with the CAP_NET_ADMIN capability or an effective user ID of 0 . (Added in event-1.6.0.)

EventUtil::SO_REUSEADDR

Socket option. Indicates that the rules used in validating addresses supplied in a bind(2) call should allow reuse of local addresses. See the socket(7) manual page. (Added in event-1.6.0.)

EventUtil::SO_KEEPALIVE

Socket option. Enable sending of keep-alive messages on connection-oriented sockets. Expects an integer boolean flag. See the socket(7) manual page. (Added in event-1.6.0.)

EventUtil::SO_DONTROUTE

Socket option. See the socket(7) manual page. (Added in event-1.6.0.)

EventUtil::SO_LINGER

Socket option. When enabled, a close(2) or shutdown(2) will not return until all queued messages for the socket have been successfully sent or the linger timeout has been reached. Otherwise, the call returns immediately and the closing is done in the background. See the socket(7) manual page. (Added in event-1.6.0.)

EventUtil::SO_BROADCAST

Socket option. Reports whether transmission of broadcast messages is supported. See the socket(7) manual page. (Added in event-1.6.0.)

EventUtil::SO_OOBINLINE

Socket option. See the socket(7) manual page. (Added in event-1.6.0.)

EventUtil::SO_SNDBUF

Socket option. See the socket(7) manual page. (Added in event-1.6.0.)

EventUtil::SO_RCVBUF

Socket option. See the socket(7) manual page. (Added in event-1.6.0.)

EventUtil::SO_SNDLOWAT

Socket option. See the socket(7) manual page. (Added in event-1.6.0.)

EventUtil::SO_RCVLOWAT

Socket option. See the socket(7) manual page. (Added in event-1.6.0.)

EventUtil::SO_SNDTIMEO

Socket option. See the socket(7) manual page. (Added in event-1.6.0.)

EventUtil::SO_RCVTIMEO

Socket option. See the socket(7) manual page. (Added in event-1.6.0.)

EventUtil::SO_TYPE

Socket option. See the socket(7) manual page. (Added in event-1.6.0.)

EventUtil::SO_ERROR

Socket option. See the socket(7) manual page. (Added in event-1.6.0.)

EventUtil::SOL_SOCKET

Socket option level. See the socket(7) manual page. (Added in event-1.6.0.)

EventUtil::SOL_TCP

Socket option level. See the socket(7) manual page. (Added in event-1.6.0.)

EventUtil::SOL_UDP

Socket option level. See the socket(7) manual page. (Added in event-1.6.0.)

EventUtil::IPPROTO_IP

See the socket(7) manual page. (Added in event-1.6.0.)

EventUtil::IPPROTO_IPV6

See the socket(7) manual page. (Added in event-1.6.0.)

EventUtil::LIBEVENT_VERSION_NUMBER

Libevent' version number at the time when Event extension had been compiled with the library.

Table of Contents

  • EventUtil::__construct — The abstract constructor
  • EventUtil::getLastSocketErrno — Returns the most recent socket error number
  • EventUtil::getLastSocketError — Returns the most recent socket error
  • EventUtil::getSocketFd — Returns numeric file descriptor of a socket, or stream
  • EventUtil::getSocketName — Retreives the current address to which the socket is bound.
  • EventUtil::setSocketOption — Sets socket options
  • EventUtil::sslRandPoll — Generates entropy by means of OpenSSL's RAND_poll()
EventSslContext::__construct
EventUtil::__construct
Event


The abstract constructor

EventUtil
EventUtil::getLastSocketErrno
EventUtil
PHP Manual

EventUtil::__construct

(PECL event >= 1.2.6-beta)

EventUtil::__construct — The abstract constructor

说明

abstract public EventUtil::__construct ( void )

EventUtil is a singleton. Therefore the constructor is abstract, and it is impossible to create objects based on this class.

参数

此函数没有参数。

返回值

没有返回值。

EventUtil
EventUtil::getLastSocketErrno
EventUtil


Returns the most recent socket error number

EventUtil::__construct
EventUtil::getLastSocketError
EventUtil
PHP Manual

EventUtil::getLastSocketErrno

(PECL event >= 1.2.6-beta)

EventUtil::getLastSocketErrno — Returns the most recent socket error number

说明

public static int EventUtil::getLastSocketErrno ([ mixed $socket = NULL ] )

Returns the most recent socket error number( errno ).

参数

socket

Socket resource, stream or a file descriptor of a socket.

返回值

Returns the most recent socket error number( errno ).

参见

  • EventUtil::getLastSocketError() - Returns the most recent socket error
EventUtil::__construct
EventUtil::getLastSocketError
EventUtil


Returns the most recent socket error

EventUtil::getLastSocketErrno
EventUtil::getSocketFd
EventUtil
PHP Manual

EventUtil::getLastSocketError

(PECL event >= 1.2.6-beta)

EventUtil::getLastSocketError — Returns the most recent socket error

说明

public static string EventUtil::getLastSocketError ([ mixed $socket ] )

Returns the most recent socket error.

参数

socket

Socket resource, stream or a file descriptor of a socket.

返回值

Returns the most recent socket error.

参见

  • EventUtil::getLastSocketErrno() - Returns the most recent socket error number
EventUtil::getLastSocketErrno
EventUtil::getSocketFd
EventUtil


Returns numeric file descriptor of a socket, or stream

EventUtil::getLastSocketError
EventUtil::getSocketName
EventUtil
PHP Manual

EventUtil::getSocketFd

(PECL event >= 1.7.0)

EventUtil::getSocketFd — Returns numeric file descriptor of a socket, or stream

说明

public static int EventUtil::getSocketFd ( mixed $socket )

Returns numeric file descriptor of a socket or stream specified by socket argument just like the Event extension does it internally for all methods accepting socket resource or stream.

参数

socket

Socket resource or stream.

返回值

Returns TRUE on success. Otherwise FALSE. EventUtil::getSocketFd() returns FALSE in case if it is whether failed to recognize the type of the underlying file, or detected that the file descriptor associated with socket is not valid.

EventUtil::getLastSocketError
EventUtil::getSocketName
EventUtil


Retreives the current address to which the socket is bound.

EventUtil::getSocketFd
EventUtil::setSocketOption
EventUtil
PHP Manual

EventUtil::getSocketName

(PECL event >= 1.5.0)

EventUtil::getSocketName — Retreives the current address to which the socket is bound.

说明

public static bool EventUtil::getSocketName ( mixed $socket , string &$address [, mixed &$port ] )

Retreives the current address to which the socket is bound.

参数

socket

Socket resource, stream or a file descriptor of a socket.

address

Output parameter. IP-address, or the UNIX domain socket path depending on the socket address family.

port

Output parameter. The port the socket is bound to. Has no meaning for UNIX domain sockets.

返回值

Returns TRUE on success. Otherwise FALSE.

EventUtil::getSocketFd
EventUtil::setSocketOption
EventUtil


Sets socket options

EventUtil::getSocketName
EventUtil::sslRandPoll
EventUtil
PHP Manual

EventUtil::setSocketOption

(PECL event >= 1.6.0)

EventUtil::setSocketOption — Sets socket options

说明

public static bool EventUtil::setSocketOption ( mixed $socket , int $level , int $optname , mixed $optval )

Sets socket options.

参数

socket

Socket resource, stream, or numeric file descriptor associated with the socket.

level

One of EventUtil::SOL_* constants. Specifies the protocol level at which the option resides. For example, to retrieve options at the socket level, a level parameter of EventUtil::SOL_SOCKET would be used. Other levels, such as TCP, can be used by specifying the protocol number of that level. Protocol numbers can be found by using the getprotobyname() function. See EventUtil constants .

optname

Option name(type). Has the same meaning as corresponding parameter of socket_get_option() function. See EventUtil constants .

optval

Accepts the same values as optval parameter of the socket_get_option() function.

返回值

Returns TRUE on success. Otherwise FALSE.

参见

  • socket_get_option() - Gets socket options for the socket
  • socket_set_option() - Sets socket options for the socket
EventUtil::getSocketName
EventUtil::sslRandPoll
EventUtil


Generates entropy by means of OpenSSL's RAND_poll()

EventUtil::setSocketOption
FAM
EventUtil
PHP Manual

EventUtil::sslRandPoll

(PECL event >= 1.2.6-beta)

EventUtil::sslRandPoll — Generates entropy by means of OpenSSL's RAND_poll()

说明

public static void EventUtil::sslRandPoll ( void )

Generates entropy by means of OpenSSL's RAND_poll() (see the system manual).

参数

此函数没有参数。

返回值

没有返回值。

EventUtil::setSocketOption
FAM
EventUtil


File Alteration Monitor

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • FAM 函数
    • fam_cancel_monitor — Terminate monitoring
    • fam_close — Close FAM connection
    • fam_monitor_collection — Monitor a collection of files in a directory for changes
    • fam_monitor_directory — Monitor a directory for changes
    • fam_monitor_file — Monitor a regular file for changes
    • fam_next_event — Get next pending FAM event
    • fam_open — Open connection to FAM daemon
    • fam_pending — Check for pending FAM events
    • fam_resume_monitor — Resume suspended monitoring
    • fam_suspend_monitor — Temporarily suspend monitoring
EventUtil::sslRandPoll
简介
其它服务


简介

FAM monitors files and directories, notifying interested applications of changes. More information about FAM is available at » http://oss.sgi.com/projects/fam/.

A PHP script may specify a list of files for FAM to monitor using the functions provided by this extension.

The FAM process is started when the first connection from any application to it is opened. It exits after all connections to it have been closed.

Note:

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.1.0.

Note: 此扩展在 Windows 平台上不可用。

FAM
安装／配置
FAM


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
FAM


需求

This extension uses the functions of the » FAM library, developed by SGI. Therefore you have to download and install the FAM library.

安装／配置
安装
安装／配置


安装

此扩展被认为已无人维护及已消亡。然而，此扩展的源代码还可在 PECL SVN 找到： » http://svn.php.net/viewvc/pecl/fam.

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.1.0

需求
运行时配置
安装／配置


资源类型

There are two resource types used in the FAM module. The first one is the connection to the FAM service returned by fam_open(), the second a monitoring resource returned by the fam_monitor_XXX functions.

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

FAM event constants
Constant | Description
FAMChanged (integer) | Some value which can be obtained with fstat(1) changed for a file or directory.
FAMDeleted (integer) | A file or directory was deleted or renamed.
FAMStartExecuting (integer) | An executable file started executing.
FAMStopExecuting (integer) | An executable file that was running finished.
FAMCreated (integer) | A file was created in a directory.
FAMMoved (integer) | This event never occurs.
FAMAcknowledge (integer) | An event in response to fam_cancel_monitor().
FAMExists (integer) | An event upon request to monitor a file or directory. When a directory is monitored, an event for that directory and every file contained in that directory is issued.
FAMEndExist (integer) | Event after the last FAMEExists event.
资源类型
FAM 函数
FAM


FAM 函数

Table of Contents

  • fam_cancel_monitor — Terminate monitoring
  • fam_close — Close FAM connection
  • fam_monitor_collection — Monitor a collection of files in a directory for changes
  • fam_monitor_directory — Monitor a directory for changes
  • fam_monitor_file — Monitor a regular file for changes
  • fam_next_event — Get next pending FAM event
  • fam_open — Open connection to FAM daemon
  • fam_pending — Check for pending FAM events
  • fam_resume_monitor — Resume suspended monitoring
  • fam_suspend_monitor — Temporarily suspend monitoring
预定义常量
fam_cancel_monitor
FAM


Terminate monitoring

FAM 函数
fam_close
FAM 函数
PHP Manual

fam_cancel_monitor

(PHP 5 <= 5.0.5)

fam_cancel_monitor — Terminate monitoring

说明

bool fam_cancel_monitor ( resource $fam , resource $fam_monitor )

Terminates monitoring on a resource.

In addition an FAMAcknowledge event occurs.

参数

fam

A resource representing a connection to the FAM service returned by fam_open()

fam_monitor

A resource returned by one of the fam_monitor_XXX functions

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • fam_monitor_file() - Monitor a regular file for changes
  • fam_monitor_directory() - Monitor a directory for changes
  • fam_monitor_collection() - Monitor a collection of files in a directory for changes
  • fam_suspend_monitor() - Temporarily suspend monitoring

FAM 函数
fam_close
FAM 函数


Close FAM connection

fam_cancel_monitor
fam_monitor_collection
FAM 函数
PHP Manual

fam_close

(PHP 5 <= 5.0.5)

fam_close — Close FAM connection

说明

void fam_close ( resource $fam )

Closes a connection to the FAM service.

参数

fam

A resource representing a connection to the FAM service returned by fam_open()

返回值

没有返回值。

参见

  • fam_monitor_open()

fam_cancel_monitor
fam_monitor_collection
FAM 函数


Monitor a collection of files in a directory for changes

fam_close
fam_monitor_directory
FAM 函数
PHP Manual

fam_monitor_collection

(PHP 5 <= 5.0.5)

fam_monitor_collection — Monitor a collection of files in a directory for changes

说明

resource fam_monitor_collection ( resource $fam , string $dirname , int $depth , string $mask )

Requests monitoring for a collection of files within a directory.

A FAM event will be generated whenever the status of the files change. The possible event codes are described in detail in the constants part of this section.

参数

fam

A resource representing a connection to the FAM service returned by fam_open()

dirname

Directory path to the monitored files

depth

The maximum search depth starting from this directory

mask

A shell pattern mask restricting the file names to look for

返回值

Returns a monitoring resource or FALSE on errors.

参见

  • fam_monitor_file() - Monitor a regular file for changes
  • fam_monitor_directory() - Monitor a directory for changes
  • fam_cancel_monitor() - Terminate monitoring
  • fam_suspend_monitor() - Temporarily suspend monitoring
  • fam_resume_monitor() - Resume suspended monitoring

fam_close
fam_monitor_directory
FAM 函数


Monitor a directory for changes

fam_monitor_collection
fam_monitor_file
FAM 函数
PHP Manual

fam_monitor_directory

(PHP 5 <= 5.0.5)

fam_monitor_directory — Monitor a directory for changes

说明

resource fam_monitor_directory ( resource $fam , string $dirname )

Requests monitoring for a directory and all contained files.

A FAM event will be generated whenever the status of the directory (i.e. the result of function stat() on that directory) or its content (i.e. the results of readdir()) changes.

The possible event codes are described in detail in the constants part of this section.

参数

fam

A resource representing a connection to the FAM service returned by fam_open()

dirname

Path to the monitored directory

返回值

Returns a monitoring resource or FALSE on errors.

参见

  • fam_monitor_file() - Monitor a regular file for changes
  • fam_monitor_collection() - Monitor a collection of files in a directory for changes
  • fam_cancel_monitor() - Terminate monitoring
  • fam_suspend_monitor() - Temporarily suspend monitoring
  • fam_resume_monitor() - Resume suspended monitoring

fam_monitor_collection
fam_monitor_file
FAM 函数


Monitor a regular file for changes

fam_monitor_directory
fam_next_event
FAM 函数
PHP Manual

fam_monitor_file

(PHP 5 <= 5.0.5)

fam_monitor_file — Monitor a regular file for changes

说明

resource fam_monitor_file ( resource $fam , string $filename )

Requests monitoring for a single file. A FAM event will be generated whenever the file status changes (i.e. the result of function stat() on that file).

The possible event codes are described in detail in the constants part of this section.

参数

fam

A resource representing a connection to the FAM service returned by fam_open()

filename

Path to the monitored file

返回值

Returns a monitoring resource or FALSE on errors.

参见

  • fam_monitor_directory() - Monitor a directory for changes
  • fam_monitor_collection() - Monitor a collection of files in a directory for changes
  • fam_cancel_monitor() - Terminate monitoring
  • fam_suspend_monitor() - Temporarily suspend monitoring
  • fam_resume_monitor() - Resume suspended monitoring

fam_monitor_directory
fam_next_event
FAM 函数


Get next pending FAM event

fam_monitor_file
fam_open
FAM 函数
PHP Manual

fam_next_event

(PHP 5 <= 5.0.5)

fam_next_event — Get next pending FAM event

说明

array fam_next_event ( resource $fam )

Returns the next pending FAM event.

The function will block until an event is available which can be checked for using fam_pending().

参数

fam

A resource representing a connection to the FAM service returned by fam_open()

返回值

Returns an array that contains a FAM event code in the 'code' element, the path of the file this event applies to in the 'filename' element and optionally a hostname in the 'hostname' element.

The possible event codes are described in detail in the constants part of this section.

参见

  • fam_pending() - Check for pending FAM events

fam_monitor_file
fam_open
FAM 函数


Open connection to FAM daemon

fam_next_event
fam_pending
FAM 函数
PHP Manual

fam_open

(PHP 5 <= 5.0.5)

fam_open — Open connection to FAM daemon

说明

resource fam_open ([ string $appname ] )

Opens a connection to the FAM service daemon.

参数

appname

A string identifying the application for logging reasons

返回值

Returns a resource representing a connection to the FAM service on success or FALSE on errors.

参见

  • fam_close() - Close FAM connection

fam_next_event
fam_pending
FAM 函数


Check for pending FAM events

fam_open
fam_resume_monitor
FAM 函数
PHP Manual

fam_pending

(PHP 5 <= 5.0.5)

fam_pending — Check for pending FAM events

说明

int fam_pending ( resource $fam )

Checks for pending FAM events.

参数

fam

A resource representing a connection to the FAM service returned by fam_open()

返回值

Returns non-zero if events are available to be fetched using fam_next_event(), zero otherwise.

参见

  • fam_next_event() - Get next pending FAM event

fam_open
fam_resume_monitor
FAM 函数


Resume suspended monitoring

fam_pending
fam_suspend_monitor
FAM 函数
PHP Manual

fam_resume_monitor

(PHP 5 <= 5.0.5)

fam_resume_monitor — Resume suspended monitoring

说明

bool fam_resume_monitor ( resource $fam , resource $fam_monitor )

Resumes monitoring of a resource previously suspended using fam_suspend_monitor().

参数

fam

A resource representing a connection to the FAM service returned by fam_open()

fam_monitor

A resource returned by one of the fam_monitor_XXX functions

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • fam_suspend_monitor() - Temporarily suspend monitoring

fam_pending
fam_suspend_monitor
FAM 函数


Temporarily suspend monitoring

fam_resume_monitor
FTP
FAM 函数
PHP Manual

fam_suspend_monitor

(PHP 5 <= 5.0.5)

fam_suspend_monitor — Temporarily suspend monitoring

说明

bool fam_suspend_monitor ( resource $fam , resource $fam_monitor )

fam_suspend_monitor() temporarily suspend monitoring of a resource.

Monitoring can later be continued using fam_resume_monitor() without the need of requesting a complete new monitor.

参数

fam

A resource representing a connection to the FAM service returned by fam_open()

fam_monitor

A resource returned by one of the fam_monitor_XXX functions

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • fam_cancel_monitor() - Terminate monitoring
  • fam_resume_monitor() - Resume suspended monitoring

fam_resume_monitor
FTP
FAM 函数


FTP

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • 基本用法
  • FTP 函数
    • ftp_alloc — 为要上传的文件分配空间
    • ftp_cdup — 切换到当前目录的父目录
    • ftp_chdir — 在 FTP 服务器上改变当前目录
    • ftp_chmod — 设置 FTP 服务器上的文件权限
    • ftp_close — 关闭一个 FTP 连接
    • ftp_connect — 建立一个新的 FTP 连接
    • ftp_delete — 删除 FTP 服务器上的一个文件
    • ftp_exec — 请求运行一条 FTP 命令
    • ftp_fget — 从 FTP 服务器上下载一个文件并保存到本地一个已经打开的文件中
    • ftp_fput — 上传一个已经打开的文件到 FTP 服务器
    • ftp_get_option — 返回当前 FTP 连接的各种不同的选项设置
    • ftp_get — 从 FTP 服务器上下载一个文件
    • ftp_login — 登录 FTP 服务器
    • ftp_mdtm — 返回指定文件的最后修改时间
    • ftp_mkdir — 建立新目录
    • ftp_nb_continue — 连续获取／发送文件（non-blocking）
    • ftp_nb_fget — 从 FTP 服务器获取文件并写入到一个打开的文件（非阻塞）
    • ftp_nb_fput — 将文件存储到 FTP 服务器 （非阻塞）
    • ftp_nb_get — 从 FTP 服务器上获取文件并写入本地文件（non-blocking）
    • ftp_nb_put — 存储一个文件至 FTP 服务器（non-blocking）
    • ftp_nlist — 返回给定目录的文件列表
    • ftp_pasv — 返回当前 FTP 被动模式是否打开
    • ftp_put — 上传文件到 FTP 服务器
    • ftp_pwd — 返回当前目录名
    • ftp_quit — ftp_close 的 别名
    • ftp_raw — 向 FTP 服务器发送命令
    • ftp_rawlist — 返回指定目录下文件的详细列表
    • ftp_rename — 更改 FTP 服务器上的文件或目录名
    • ftp_rmdir — 删除 FTP 服务器上的一个目录
    • ftp_set_option — 设置各种 FTP 运行时选项
    • ftp_site — 向服务器发送 SITE 命令
    • ftp_size — 返回指定文件的大小
    • ftp_ssl_connect — 打开 SSL-FTP 连接
    • ftp_systype — 返回远程 FTP 服务器的操作系统类型
fam_suspend_monitor
简介
其它服务


简介

本扩展中的函数实现了通过 FTP 协议访问文件服务器的客户端。 FTP 协议在 » http://www.faqs.org/rfcs/rfc959 中定义。 本扩展提供了对于 FTP 服务器完整的访问及控制功能。 如果只是简单的从 FTP 服务器读取或向服务器写入一个文件， 请考虑使用 ftp:// 包装器 和 文件系统函数， 会更加的简单。

FTP
安装／配置
FTP


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
FTP


安装

要使用这些 FTP 相关函数，在编译的时候请添加 --enable-ftp 选项。

PHP 的 Windows 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。

需求
运行时配置
安装／配置


资源类型

本扩展使用一种资源类型，就是由 ftp_connect() 或 ftp_ssl_connect() 函数返回的连接标示符。

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

FTP_ASCII (integer)

FTP_TEXT (integer)

FTP_BINARY (integer)

FTP_IMAGE (integer)

FTP_TIMEOUT_SEC (integer)

更多设置参考函数 ftp_set_option()。

下列变量在 PHP 4.3.0 以后版本中被加入。

FTP_AUTOSEEK (integer)

参考函数 ftp_set_option()。

FTP_AUTORESUME (integer)

为 GET 和 PUT 请求自动决定恢复和开始的位置 (只能工作在 FTP_AUTOSEEK 打开的情况下)

FTP_FAILED (integer)

异步传输失败

FTP_FINISHED (integer)

异步传输成功

FTP_MOREDATA (integer)

异步传输是活动状态的

资源类型
范例
FTP


范例

Table of Contents

  • 基本用法
预定义常量
基本用法
FTP


基本用法

Example #1 FTP 例程

<?php
// 建立基础连接
$conn_id = ftp_connect($ftp_server);

// 使用用户名和口令登录
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// 检查是否成功
if ((!$conn_id) || (!$login_result)) {
    echo "FTP connection has failed!";
    echo "Attempted to connect to $ftp_server for user $ftp_user_name";
    exit;
} else {
    echo "Connected to $ftp_server, for user $ftp_user_name";
}

// 上传文件
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);

// 检查上传结果
if (!$upload) {
    echo "FTP upload has failed!";
} else {
    echo "Uploaded $source_file to $ftp_server as $destination_file";
}

// 关闭 FTP 流
ftp_close($conn_id);
?>

范例
FTP 函数
范例


FTP 函数

Table of Contents

  • ftp_alloc — 为要上传的文件分配空间
  • ftp_cdup — 切换到当前目录的父目录
  • ftp_chdir — 在 FTP 服务器上改变当前目录
  • ftp_chmod — 设置 FTP 服务器上的文件权限
  • ftp_close — 关闭一个 FTP 连接
  • ftp_connect — 建立一个新的 FTP 连接
  • ftp_delete — 删除 FTP 服务器上的一个文件
  • ftp_exec — 请求运行一条 FTP 命令
  • ftp_fget — 从 FTP 服务器上下载一个文件并保存到本地一个已经打开的文件中
  • ftp_fput — 上传一个已经打开的文件到 FTP 服务器
  • ftp_get_option — 返回当前 FTP 连接的各种不同的选项设置
  • ftp_get — 从 FTP 服务器上下载一个文件
  • ftp_login — 登录 FTP 服务器
  • ftp_mdtm — 返回指定文件的最后修改时间
  • ftp_mkdir — 建立新目录
  • ftp_nb_continue — 连续获取／发送文件（non-blocking）
  • ftp_nb_fget — 从 FTP 服务器获取文件并写入到一个打开的文件（非阻塞）
  • ftp_nb_fput — 将文件存储到 FTP 服务器 （非阻塞）
  • ftp_nb_get — 从 FTP 服务器上获取文件并写入本地文件（non-blocking）
  • ftp_nb_put — 存储一个文件至 FTP 服务器（non-blocking）
  • ftp_nlist — 返回给定目录的文件列表
  • ftp_pasv — 返回当前 FTP 被动模式是否打开
  • ftp_put — 上传文件到 FTP 服务器
  • ftp_pwd — 返回当前目录名
  • ftp_quit — ftp_close 的 别名
  • ftp_raw — 向 FTP 服务器发送命令
  • ftp_rawlist — 返回指定目录下文件的详细列表
  • ftp_rename — 更改 FTP 服务器上的文件或目录名
  • ftp_rmdir — 删除 FTP 服务器上的一个目录
  • ftp_set_option — 设置各种 FTP 运行时选项
  • ftp_site — 向服务器发送 SITE 命令
  • ftp_size — 返回指定文件的大小
  • ftp_ssl_connect — 打开 SSL-FTP 连接
  • ftp_systype — 返回远程 FTP 服务器的操作系统类型
基本用法
ftp_alloc
FTP


为要上传的文件分配空间

FTP 函数
ftp_cdup
FTP 函数
PHP Manual

ftp_alloc

(PHP 5, PHP 7)

ftp_alloc — 为要上传的文件分配空间

说明

bool ftp_alloc ( resource $ftp_stream , int $filesize [, string &$result ] )

向远程 FTP 服务器发送 ALLO 命令， 来为要上传的文件分配空间。

Note:

很多 FTP 服务器不支持ALLO 命令。 如果服务器不支持此命令，将会返回错误码（FALSE）， 返回成功码（TRUE）表示预分配空间不是必需的， 客户端可以继续操作了。 因此，请仅对需要强制预分配空间服务器使用此函数。

参数

ftp_stream

FTP 连接标示符。

filesize

要分配的空间，以字节为单位。

result

如果提供此参数，那么服务器的响应 会以文本方式设置到 result 中。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ftp_alloc() 函数例程

<?php

$file = "/home/user/myfile";

// 连接服务器
$conn_id = ftp_connect('ftp.example.com');
$login_result = ftp_login($conn_id, 'anonymous', 'user@example.com');

if (ftp_alloc($conn_id, filesize($file), $result)) {
  echo "Space successfully allocated on server.  Sending $file.\n";
  ftp_put($conn_id, '/incomming/myfile', $file, FTP_BINARY);
} else {
  echo "Unable to allocate space on server.  Server said: $result\n";
}

ftp_close($conn_id);

?>

参见

  • ftp_put() - 上传文件到 FTP 服务器
  • ftp_fput() - 上传一个已经打开的文件到 FTP 服务器

FTP 函数
ftp_cdup
FTP 函数


切换到当前目录的父目录

ftp_alloc
ftp_chdir
FTP 函数
PHP Manual

ftp_cdup

(PHP 4, PHP 5, PHP 7)

ftp_cdup — 切换到当前目录的父目录

说明

bool ftp_cdup ( resource $ftp_stream )

切换目录至当前目录的父目录 (上级目录)。

参数

ftp_stream

FTP 连接的标识符。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ftp_cdup() 例子

<?php
// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// change the current directory to html
ftp_chdir($conn_id, 'html');

echo ftp_pwd($conn_id); // /html

// return to the parent directory
if (ftp_cdup($conn_id)) {
  echo "cdup successful\n";
} else {
  echo "cdup not successful\n";
}

echo ftp_pwd($conn_id); // /

ftp_close($conn_id);
?>

参见

  • ftp_chdir() - 在 FTP 服务器上改变当前目录
  • ftp_pwd() - 返回当前目录名

ftp_alloc
ftp_chdir
FTP 函数


在 FTP 服务器上改变当前目录

ftp_cdup
ftp_chmod
FTP 函数
PHP Manual

ftp_chdir

(PHP 4, PHP 5, PHP 7)

ftp_chdir — 在 FTP 服务器上改变当前目录

说明

bool ftp_chdir ( resource $ftp_stream , string $directory )

将当前目录切换为指定的目录。

参数

ftp_stream

FTP 连接的标识符。

directory

目标目录。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。如果切换目录失败，PHP 还会发出一条警告。

范例

Example #1 ftp_chdir() 例子

<?php

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// check connection
if ((!$conn_id) || (!$login_result)) {
    die("FTP connection has failed !");
}

echo "Current directory: " . ftp_pwd($conn_id) . "\n";

// try to change the directory to somedir
if (ftp_chdir($conn_id, "somedir")) {
    echo "Current directory is now: " . ftp_pwd($conn_id) . "\n";
} else {
    echo "Couldn't change directory\n";
}

// close the connection
ftp_close($conn_id);
?>

参见

  • ftp_cdup() - 切换到当前目录的父目录
  • ftp_pwd() - 返回当前目录名

ftp_cdup
ftp_chmod
FTP 函数


设置 FTP 服务器上的文件权限

ftp_chdir
ftp_close
FTP 函数
PHP Manual

ftp_chmod

(PHP 5, PHP 7)

ftp_chmod — 设置 FTP 服务器上的文件权限

说明

int ftp_chmod ( resource $ftp_stream , int $mode , string $filename )

将服务器上的文件权限设置为 mode 指定的值。

参数

ftp_stream

FTP 连接标示符。

mode

要设置的权限值， 八进制 值。

filename

远程文件名称。

返回值

操作成功返回文件新的权限，操作失败返回 FALSE 。

范例

Example #1 ftp_chmod() 函数例程

<?php
$file = 'public_html/index.php';

// 建立基础连接
$conn_id = ftp_connect($ftp_server);

// 使用用户名和密码登录
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// 尝试设置 $file 的权限为 644
if (ftp_chmod($conn_id, 0644, $file) !== false) {
 echo "$file chmoded successfully to 644\n";
} else {
 echo "could not chmod $file\n";
}

// 关闭连接
ftp_close($conn_id);
?>

参见

  • chmod() - 改变文件模式

ftp_chdir
ftp_close
FTP 函数


关闭一个 FTP 连接

ftp_chmod
ftp_connect
FTP 函数
PHP Manual

ftp_close

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

ftp_close — 关闭一个 FTP 连接

说明

bool ftp_close ( resource $ftp_stream )

ftp_close() 关闭给出的连接标识符并释放资源。

Note:

调用本函数后，将不能再使用 FTP 连接，必须用 ftp_connect() 建立一个新连接。

参数

ftp_stream

FTP 连接的标识符。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ftp_close() 例子

<?php

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// print the current directory
echo ftp_pwd($conn_id); // /

// close this connection
ftp_close($conn_id);
?>

参见

  • ftp_connect() - 建立一个新的 FTP 连接

ftp_chmod
ftp_connect
FTP 函数


建立一个新的 FTP 连接

ftp_close
ftp_delete
FTP 函数
PHP Manual

ftp_connect

(PHP 4, PHP 5, PHP 7)

ftp_connect — 建立一个新的 FTP 连接

说明

resource ftp_connect ( string $host [, int $port [, int $timeout ]] )

如果成功返回一个连接标识，失败则返回 FALSE 。

ftp_connect() 打开一个 FTP 连接，参数 host 为要连接的服务器。host 后面不应以斜线结尾，前面也不需要用 ftp:// 开头。可选参数port 为要连接到的 FTP 器的端口号，如果没有设置或者为0，则会使用默认的端口 21 来连接。

可选参数 timeout 用来设置网络传输的超时时间限制。如果此选项留空，则默认的值为 90 秒。超时时间可以在任何时候通过函数 ftp_set_option() 及 ftp_get_option() 来改变和获取。

Note:

参数 timeout 仅适用于 PHP 4.2.0 及以上版本.

Example #1 ftp_connect() 例子

<?php

$ftp_server = "ftp.example.com";

// set up a connection or die
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");

?>

参见 ftp_close() 和 ftp_ssl_connect()。

ftp_close
ftp_delete
FTP 函数


删除 FTP 服务器上的一个文件

ftp_connect
ftp_exec
FTP 函数
PHP Manual

ftp_delete

(PHP 4, PHP 5, PHP 7)

ftp_delete — 删除 FTP 服务器上的一个文件

说明

bool ftp_delete ( resource $ftp_stream , string $path )

ftp_delete() 函数用来删除 FTP 服务器上的一个由参数 path 指定的的文件。

参数

ftp_stream

FTP 连接的链接标识符。

path

要删除的文件。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ftp_delete() 例子

<?php
$file = 'public_html/old.txt';

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// try to delete $file
if (ftp_delete($conn_id, $file)) {
 echo "$file deleted successful\n";
} else {
 echo "could not delete $file\n";
}

// close the connection
ftp_close($conn_id);
?>

ftp_connect
ftp_exec
FTP 函数


请求运行一条 FTP 命令

ftp_delete
ftp_fget
FTP 函数
PHP Manual

ftp_exec

(PHP 4 >= 4.0.3, PHP 5, PHP 7)

ftp_exec — 请求运行一条 FTP 命令

说明

bool ftp_exec ( resource $ftp_stream , string $command )

发送一个 SITE EXEC command 请求到 FTP 服务器。如果成功（服务器发送响应代码 200）则返回 TRUE，否则返回 FALSE。

Example #1 ftp_exec() 例子

<?php
$command = 'ls -al';
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if($res = ftp_exec($conn_id, $command)) {
    echo "$command executed successfully<br />\n";
    echo nl2br($res);
} else {
    echo 'could not execute ' . $command;
}
?>

参见 ftp_raw()。

ftp_delete
ftp_fget
FTP 函数


从 FTP 服务器上下载一个文件并保存到本地一个已经打开的文件中

ftp_exec
ftp_fput
FTP 函数
PHP Manual

ftp_fget

(PHP 4, PHP 5, PHP 7)

ftp_fget — 从 FTP 服务器上下载一个文件并保存到本地一个已经打开的文件中

说明

bool ftp_fget ( resource $ftp_stream , resource $handle , string $remote_file , int $mode [, int $resumepos = 0 ] )

ftp_fget() 函数用来下载由 remote_file 指定的文件，并写入到本地已经被打开的一个文件中。

参数

ftp_stream

FTP 连接的链接标识符。

handle

本地已经打开的文件的句柄。

remote_file

远程文件的路径。

mode

传送模式参数， 必须是 (文本模式) FTP_ASCII 或 (二进制模式) FTP_BINARY 中的一个。

resumepos

远程文件开始下载的位置。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ftp_fget() 例子

<?php

// path to remote file
$remote_file = 'somefile.txt';
$local_file = 'localfile.txt';

// open some file to write to
$handle = fopen($local_file, 'w');

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// try to download $remote_file and save it to $handle
if (ftp_fget($conn_id, $handle, $remote_file, FTP_ASCII, 0)) {
 echo "successfully written to $local_file\n";
} else {
 echo "There was a problem while downloading $remote_file to $local_file\n";
}

// close the connection and the file handler
ftp_close($conn_id);
fclose($handle);
?>

更新日志

版本 | 说明
4.3.0 | 增加了resumepos 的支持。

参见

  • ftp_get() - 从 FTP 服务器上下载一个文件
  • ftp_nb_get() - 从 FTP 服务器上获取文件并写入本地文件（non-blocking）
  • ftp_nb_fget() - 从 FTP 服务器获取文件并写入到一个打开的文件（非阻塞）

ftp_exec
ftp_fput
FTP 函数


上传一个已经打开的文件到 FTP 服务器

ftp_fget
ftp_get_option
FTP 函数
PHP Manual

ftp_fput

(PHP 4, PHP 5, PHP 7)

ftp_fput — 上传一个已经打开的文件到 FTP 服务器

说明

bool ftp_fput ( resource $ftp_stream , string $remote_file , resource $handle , int $mode [, int $startpos = 0 ] )

ftp_fput() 函数用来上传一个在已经打开的文件中的数据到 FTP 服务器。

参数

ftp_stream

FTP 连接的链接标识符。

remote_file

远程文件路径。

handle

打开的本地文件句柄，读取到文件末尾。

mode

传输模式只能为 (文本模式) FTP_ASCII 或 (二进制模式) FTP_BINARY 其中的一个。

startpos

远程文件上传的开始位置。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ftp_fput() 例子

<?php

// open some file for reading
$file = 'somefile.txt';
$fp = fopen($file, 'r');

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// try to upload $file
if (ftp_fput($conn_id, $file, $fp, FTP_ASCII)) {
    echo "Successfully uploaded $file\n";
} else {
    echo "There was a problem while uploading $file\n";
}

// close the connection and the file handler
ftp_close($conn_id);
fclose($fp);

?>

更新日志

版本 | 说明
4.3.0 | 添加了 startpos 的支持。

参见

  • ftp_put() - 上传文件到 FTP 服务器
  • ftp_nb_fput() - 将文件存储到 FTP 服务器 （非阻塞）
  • ftp_nb_put() - 存储一个文件至 FTP 服务器（non-blocking）

ftp_fget
ftp_get_option
FTP 函数


返回当前 FTP 连接的各种不同的选项设置

ftp_fput
ftp_get
FTP 函数
PHP Manual

ftp_get_option

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

ftp_get_option — 返回当前 FTP 连接的各种不同的选项设置

说明

mixed ftp_get_option ( resource $ftp_stream , int $option )

如果成功则返回选项的值，否则，如果给定的参数 option 选项如果不被支持则返回 FALSE 同时会提示一条错误信息。

此函数会返回连接句柄为 ftp_stream，指定键值 option 的值，截止到目前，以下选项被支持:

支持 FTP 超时选项
FTP_TIMEOUT_SEC 返回当前设定的网络操作的超时时间。

Example #1 ftp_get_option() 实例

<?php
// Get the timeout of the given FTP stream
$timeout = ftp_get_option($conn_id, FTP_TIMEOUT_SEC);
?>

参见 ftp_set_option()。

ftp_fput
ftp_get
FTP 函数


从 FTP 服务器上下载一个文件

ftp_get_option
ftp_login
FTP 函数
PHP Manual

ftp_get

(PHP 4, PHP 5, PHP 7)

ftp_get — 从 FTP 服务器上下载一个文件

说明

bool ftp_get ( resource $ftp_stream , string $local_file , string $remote_file , int $mode [, int $resumepos = 0 ] )

ftp_get() 函数用来下载 FTP 服务器上指定的文件并保存为本地文件。

参数

ftp_stream

FTP 连接的链接标识符。

local_file

文件本地的路径（如果文件已经存在，则会被覆盖）。

remote_file

文件的远程路径。

mode

传送模式。只能为 (文本模式) FTP_ASCII 或 (二进制模式) FTP_BINARY 中的其中一个。

resumepos

从远程文件的这个位置继续下载。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ftp_get() 例子

<?php

// define some variables
$local_file = 'local.zip';
$server_file = 'server.zip';

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// try to download $server_file and save to $local_file
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
    echo "Successfully written to $local_file\n";
} else {
    echo "There was a problem\n";
}

// close the connection
ftp_close($conn_id);

?>

更新日志

版本 | 说明
4.3.0 | 增加了 resumepos。

参见

  • ftp_pasv() - 返回当前 FTP 被动模式是否打开
  • ftp_fget() - 从 FTP 服务器上下载一个文件并保存到本地一个已经打开的文件中
  • ftp_nb_get() - 从 FTP 服务器上获取文件并写入本地文件（non-blocking）
  • ftp_nb_fget() - 从 FTP 服务器获取文件并写入到一个打开的文件（非阻塞）

ftp_get_option
ftp_login
FTP 函数


登录 FTP 服务器

ftp_get
ftp_mdtm
FTP 函数
PHP Manual

ftp_login

(PHP 4, PHP 5, PHP 7)

ftp_login — 登录 FTP 服务器

说明

bool ftp_login ( resource $ftp_stream , string $username , string $password )

使用用户名和密码登录入给定的 FTP 连接。

参数

ftp_stream

FTP 连接的链接标识符。

username

用户名（USER）。

password

密码（PASS）。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如果登录失败，PHP 会抛出一个警告。

范例

Example #1 ftp_login() 例子

<?php

$ftp_server = "ftp.example.com";
$ftp_user = "foo";
$ftp_pass = "bar";

// 设置一个连接或失败时退出
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");

// 尝试登录
if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) {
    echo "Connected as $ftp_user@$ftp_server\n";
} else {
    echo "Couldn't connect as $ftp_user\n";
}

// 关闭连接
ftp_close($conn_id);
?>

ftp_get
ftp_mdtm
FTP 函数


返回指定文件的最后修改时间

ftp_login
ftp_mkdir
FTP 函数
PHP Manual

ftp_mdtm

(PHP 4, PHP 5, PHP 7)

ftp_mdtm — 返回指定文件的最后修改时间

说明

int ftp_mdtm ( resource $ftp_stream , string $remote_file )

ftp_mdtm() 检查指定文件的最后修改时间，并以 UNIX 时间戳的方式返回。如果发生错误，或文件不存在则返回 -1。

Example #1 ftp_mdtm() 例子

<?php
$file = 'somefile.txt';

// connect to the server
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

//  get the last modified time
$buff = ftp_mdtm($conn_id, $file);

if ($buff != -1) {
    // somefile.txt was last modified on: March 26 2003 14:16:41.
    echo "$file was last modified on : " . date ("F d Y H:i:s.", $buff);
} else {
    echo "Couldn't get mdtime";
}

// close the connection
ftp_close($conn_id);
?>

如果成功返回一个 UNIX 时间戳，否则返回 -1。

Note:

某些 FTP 服务器可能会不支持这个特性。

Note:

ftp_mdtm() 函数不适用于检查目录。

ftp_login
ftp_mkdir
FTP 函数


建立新目录

ftp_mdtm
ftp_nb_continue
FTP 函数
PHP Manual

ftp_mkdir

(PHP 4, PHP 5, PHP 7)

ftp_mkdir — 建立新目录

说明

string ftp_mkdir ( resource $ftp_stream , string $directory )

在 FTP 服务器上建立一个目录名为参数 directory 的新目录。

如果成功返回新建的目录名，否则返回 FALSE。

参见 ftp_rmdir()。

ftp_mdtm
ftp_nb_continue
FTP 函数


连续获取／发送文件（non-blocking）

ftp_mkdir
ftp_nb_fget
FTP 函数
PHP Manual

ftp_nb_continue

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

ftp_nb_continue — 连续获取／发送文件（non-blocking）

说明

int ftp_nb_continue ( resource $ftp_stream )

以不分块的方式连续获取／发送一个文件。

返回常量 FTP_FAILED 或 FTP_FINISHED 或 FTP_MOREDATA。

ftp_mkdir
ftp_nb_fget
FTP 函数


从 FTP 服务器获取文件并写入到一个打开的文件（非阻塞）

ftp_nb_continue
ftp_nb_fput
FTP 函数
PHP Manual

ftp_nb_fget

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

ftp_nb_fget — 从 FTP 服务器获取文件并写入到一个打开的文件（非阻塞）

说明

int ftp_nb_fget ( resource $ftp_stream , resource $handle , string $remote_file , int $mode [, int $resumepos = 0 ] )

ftp_nb_fget() 从远程 FTP 服务器获取一个文件

本函数和 ftp_fget() 函数的区别是 本函数是异步方式获取文件的， 所以在下载文件的过程中你的程序还可以执行其他操作。

参数

ftp_stream

FTP 连接标示符。

handle

用来存储数据的一个已经打开的文件句柄。

remote_file

远程文件路径。

mode

传输模式，必须是 FTP_ASCII 或者 FTP_BINARY。

resumepos

远程文件开始下载的位置（即从远程文件的哪个字节开始下载）。

返回值

返回 FTP_FAILED 或 FTP_FINISHED 或 FTP_MOREDATA。

范例

Example #1 ftp_nb_fget() 函数例程

<?php

// 打开要写入的文件
$file = 'index.php';
$fp = fopen($file, 'w');

$conn_id = ftp_connect($ftp_server);

$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// 初始化下载
$ret = ftp_nb_fget($conn_id, $fp, $file, FTP_BINARY);
while ($ret == FTP_MOREDATA) {

   // 其他要做的工作
   echo ".";

   // 继续下载...
   $ret = ftp_nb_continue($conn_id);
}
if ($ret != FTP_FINISHED) {
   echo "There was an error downloading the file...";
   exit(1);
}

// 关闭文件句柄
fclose($fp);
?>

参见

  • ftp_nb_get() - 从 FTP 服务器上获取文件并写入本地文件（non-blocking）
  • ftp_nb_continue() - 连续获取／发送文件（non-blocking）
  • ftp_fget() - 从 FTP 服务器上下载一个文件并保存到本地一个已经打开的文件中
  • ftp_get() - 从 FTP 服务器上下载一个文件

ftp_nb_continue
ftp_nb_fput
FTP 函数


将文件存储到 FTP 服务器 （非阻塞）

ftp_nb_fget
ftp_nb_get
FTP 函数
PHP Manual

ftp_nb_fput

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

ftp_nb_fput — 将文件存储到 FTP 服务器 （非阻塞）

说明

int ftp_nb_fput ( resource $ftp_stream , string $remote_file , resource $handle , int $mode [, int $startpos = 0 ] )

ftp_nb_fput() 把已打开的文件内容存储到远程 FTP 服务器

本函数和 ftp_fput() 函数的区别是 本函数是异步上传文件。 所以在文件上传过程中，你的程序还可以执行其他操作。

参数

ftp_stream

FTP 连接标示符。

remote_file

远程文件路径。

handle

已经打开的本地文件指针，当读取到文件末尾时结束。

mode

传输模式。必须是 FTP_ASCII 或 FTP_BINARY。

startpos

要将文件存储到远程文件的开始位置（即从远程文件的哪个字节位置开始存储）。

返回值

返回 FTP_FAILED 或 FTP_FINISHED 或 FTP_MOREDATA。

范例

Example #1 ftp_nb_fput() 函数例程

<?php

$file = 'index.php';

$fp = fopen($file, 'r');

$conn_id = ftp_connect($ftp_server);

$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// 初始化上传
$ret = ftp_nb_fput($conn_id, $file, $fp, FTP_BINARY);
while ($ret == FTP_MOREDATA) {

   // 任何其他需要做的操作
   echo ".";

   // 继续上传...
   $ret = ftp_nb_continue($conn_id);
}
if ($ret != FTP_FINISHED) {
   echo "There was an error uploading the file...";
   exit(1);
}

fclose($fp);
?>

参见

  • ftp_nb_put() - 存储一个文件至 FTP 服务器（non-blocking）
  • ftp_nb_continue() - 连续获取／发送文件（non-blocking）
  • ftp_put() - 上传文件到 FTP 服务器
  • ftp_fput() - 上传一个已经打开的文件到 FTP 服务器

ftp_nb_fget
ftp_nb_get
FTP 函数


从 FTP 服务器上获取文件并写入本地文件（non-blocking）

ftp_nb_fput
ftp_nb_put
FTP 函数
PHP Manual

ftp_nb_get

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

ftp_nb_get — 从 FTP 服务器上获取文件并写入本地文件（non-blocking）

说明

bool ftp_nb_get ( resource $ftp_stream , string $local_file , string $remote_file , int $mode [, int $resumepos ] )

ftp_nb_get() 函数用来获取参数 remote_file 指定的的远程文件，并保存到由参数 local_file 指定的本地文件。传输模式参数 mode 只能为 FTP_ASCII (文本模式) 或 FTP_BINARY (二进制模式) 两种。与 ftp_get() 函数不同的是，此函数上传文件的时候采用的是异步传输模式，也就意味着在文件传送的过程中，你的程序可以继续干其它的事情。

返回 FTP_FAILED，FTP_FINISHED 或 FTP_MOREDATA。

Example #1 ftp_nb_get() 实例

<?php
// 开始下载
$ret = ftp_nb_get($my_connection, "test", "README", FTP_BINARY);
while ($ret == FTP_MOREDATA) {

   // 这里可以插入其它代码
   echo ".";

   // 继续下载...
   $ret = ftp_nb_continue ($my_connection);
}
if ($ret != FTP_FINISHED) {
   echo "下载中出错...";
   exit(1);
}
?>

Example #2 使用 ftp_nb_get() 函数断线续传

<?php
// 开始
$ret = ftp_nb_get ($my_connection, "test", "README", FTP_BINARY,
                      filesize("test"));
// 或: $ret = ftp_nb_get ($my_connection, "test", "README",
//                           FTP_BINARY, FTP_AUTORESUME);
while ($ret == FTP_MOREDATA) {

   // 可以插入其它代码
   echo ".";

   // 继续传送...
   $ret = ftp_nb_continue ($my_connection);
}
if ($ret != FTP_FINISHED) {
   echo "下载出错...";
   exit(1);
}
?>

Example #3 用 ftp_nb_get() 在 100 的位置断线续传并存为 "newfile"

// 禁止自动搜寻
ftp_set_option ($my_connection, FTP_AUTOSEEK, FALSE);

// 开始
$ret = ftp_nb_get ($my_connection, "newfile", "README", FTP_BINARY, 100);
while ($ret == FTP_MOREDATA) {

   ...

   // 继续下载...
   $ret = ftp_nb_continue ($my_connection);
}

在上边的例子中，"newfile" 文件比服务器上的文件 "README" 要小 100 字节。这是因为我们是从文件的偏移量 100 处开始读取的，如果没有禁止 FTP_AUTOSEEK，则 "newfile" 的前 100 字节将会是 '\0'。

参见 ftp_nb_fget()，ftp_nb_continue()，ftp_get() 和 ftp_fget()。

ftp_nb_fput
ftp_nb_put
FTP 函数


存储一个文件至 FTP 服务器（non-blocking）

ftp_nb_get
ftp_nlist
FTP 函数
PHP Manual

ftp_nb_put

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

ftp_nb_put — 存储一个文件至 FTP 服务器（non-blocking）

说明

int ftp_nb_put ( resource $ftp_stream , string $remote_file , string $local_file , int $mode [, int $startpos ] )

ftp_nb_put() 函数用来把本地文件 local_file 存储到 FTP 服务器上由 remote_file 参数指定的路径。传输模式参数 mode 只能为 FTP_ASCII (文本模式) 或 FTP_BINARY (二进制模式) 两种。与函数 ftp_put() 不同的是，此函数上传文件的时候采用的是异步传输模式，也就意味着在文件传送的过程中，你的程序可以继续干其它的事情。

返回 FTP_FAILED，FTP_FINISHED 或 FTP_MOREDATA。

Example #1 ftp_nb_put() 实例

<?php
// 开始上传
$ret = ftp_nb_put($my_connection, "test.remote", "test.local", FTP_BINARY);
while ($ret == FTP_MOREDATA) {

   // 在这里可以加入其它代码
   echo ".";

   // 继续传送...
   $ret = ftp_nb_continue ($my_connection);
}
if ($ret != FTP_FINISHED) {
   echo "上传文件中发生错误...";
   exit(1);
}
?>

Example #2 使用 ftp_nb_put() 来断线续传

<?php
// 开始
$ret = ftp_nb_put ($my_connection, "test.remote", "test.local",
                      FTP_BINARY, ftp_size("test.remote"));
// 或: $ret = ftp_nb_put ($my_connection, "test.remote", "test.local",
//                           FTP_BINARY, FTP_AUTORESUME);

while ($ret == FTP_MOREDATA) {

   // 加入其它要执行的代码
   echo ".";

   // 继续传送...
   $ret = ftp_nb_continue ($my_connection);
}
if ($ret != FTP_FINISHED) {
   echo "上传文件中发生错误...";
   exit(1);
}
?>

参见 ftp_nb_fput()，ftp_nb_continue()，ftp_put() 和 ftp_fput()。

ftp_nb_get
ftp_nlist
FTP 函数


返回给定目录的文件列表

ftp_nb_put
ftp_pasv
FTP 函数
PHP Manual

ftp_nlist

(PHP 4, PHP 5, PHP 7)

ftp_nlist — 返回给定目录的文件列表

说明

array ftp_nlist ( resource $ftp_stream , string $directory )

参数

ftp_stream

FTP 连接资源。

directory

指定要列表的目录。本参数接受带参数的形式，例如： ftp_nlist($conn_id, "-la /you/dir"); 注意此参数不对传入值做处理，在目录或者文件名包括空格或特殊的情况下，可能会存在问题。

返回值

如果成功则返回给定目录下的文件名组成的数组，否则返回 FALSE。

范例

Example #1 ftp_nlist() 例子

<?php

// set up basic connection
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// check connection
if ((!$conn_id) || (!$login_result)) {
    die("FTP connection has failed !");
}

// get contents of the root directory
$contents = ftp_nlist($conn_id, "/");

// output $contents
var_dump($contents);

?>

以上例程的输出类似于：

array(3) {
  [0]=>
  string(11) "public_html"
  [1]=>
  string(10) "public_ftp"
  [2]=>
  string(3) "www"

参见

  • ftp_rawlist() - 返回指定目录下文件的详细列表

ftp_nb_put
ftp_pasv
FTP 函数


返回当前 FTP 被动模式是否打开

ftp_nlist
ftp_put
FTP 函数
PHP Manual

ftp_pasv

(PHP 4, PHP 5, PHP 7)

ftp_pasv — 返回当前 FTP 被动模式是否打开

说明

bool ftp_pasv ( resource $ftp_stream , bool $pasv )

在被动模式打开的情况下，数据的传送由客户机启动，而不是由服务器开始。

请注意 ftp_pasv() 只能在 FTP 登录成功后方可调用，否则会失败。

参数

ftp_stream

FTP 连接资源。

pasv

如果参数 pasv 为 TRUE，打开被动模式传输 (PASV MODE) ，否则则关闭被动传输模式。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ftp_pasv() 实例

<?php
$file = 'somefile.txt';
$remote_file = 'readme.txt';

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// turn passive mode on
ftp_pasv($conn_id, true);

// upload a file
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
 echo "successfully uploaded $file\n";
} else {
 echo "There was a problem while uploading $file\n";
}

// close the connection
ftp_close($conn_id);
?>

ftp_nlist
ftp_put
FTP 函数


上传文件到 FTP 服务器

ftp_pasv
ftp_pwd
FTP 函数
PHP Manual

ftp_put

(PHP 4, PHP 5, PHP 7)

ftp_put — 上传文件到 FTP 服务器

说明

bool ftp_put ( resource $ftp_stream , string $remote_file , string $local_file , int $mode [, int $startpos ] )

ftp_put() 函数用来上传由 local_file 参数指定的文件到 FTP 服务器，上传后的位置由 remote_file 指定。传输模式参数

参数

ftp_stream

FTP 连接资源。

remote_file

远程文件路径。

local_file

本地文件路径。

mode

传送模式，只能为 FTP_ASCII（文本模式）或 FTP_BINARY（二进制模式）。

startpos

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ftp_put() 实例

<?php
$file = 'somefile.txt';
$remote_file = 'readme.txt';

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// upload a file
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
 echo "successfully uploaded $file\n";
} else {
 echo "There was a problem while uploading $file\n";
}

// close the connection
ftp_close($conn_id);
?>

更新日志

版本 | 说明
4.3.0 | 增加 startpos 参数。

参见

  • ftp_pasv() - 返回当前 FTP 被动模式是否打开
  • ftp_fput() - 上传一个已经打开的文件到 FTP 服务器
  • ftp_nb_fput() - 将文件存储到 FTP 服务器 （非阻塞）
  • ftp_nb_put() - 存储一个文件至 FTP 服务器（non-blocking）

ftp_pasv
ftp_pwd
FTP 函数


返回当前目录名

ftp_put
ftp_quit
FTP 函数
PHP Manual

ftp_pwd

(PHP 4, PHP 5, PHP 7)

ftp_pwd — 返回当前目录名

说明

string ftp_pwd ( resource $ftp_stream )

参数

ftp_stream

FTP 连接资源。

返回值

返回当前目录名称，发生错误则返回 FALSE。

范例

Example #1 ftp_pwd() 例子

<?php

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// change directory to public_html
ftp_chdir($conn_id, 'public_html');

// print current directory
echo ftp_pwd($conn_id); // /public_html

// close the connection
ftp_close($conn_id);
?>

参见

  • ftp_chdir() - 在 FTP 服务器上改变当前目录
  • ftp_cdup() - 切换到当前目录的父目录

ftp_put
ftp_quit
FTP 函数


ftp_close 的 别名

ftp_pwd
ftp_raw
FTP 函数
PHP Manual

ftp_quit

(PHP 4, PHP 5, PHP 7)

ftp_quit — ftp_close() 的 别名

说明

此函数是该函数的别名： ftp_close()

ftp_pwd
ftp_raw
FTP 函数


向 FTP 服务器发送命令

ftp_quit
ftp_rawlist
FTP 函数
PHP Manual

ftp_raw

(PHP 5, PHP 7)

ftp_raw — 向 FTP 服务器发送命令

说明

array ftp_raw ( resource $ftp_stream , string $command )

向 FTP 服务器发送任意 command。

参数

ftp_stream

FTP 连接标示符。

command

要执行的命令。

返回值

将服务器的响应以字符串数组的形式返回。 对于响应内容既不做解析处理， 也不检测命令是否执行成功。

范例

Example #1 使用 ftp_raw() 登录远程 FTP 服务器

<?php
$fp = ftp_connect("ftp.example.com");

/* 等同于
   ftp_login($fp, "joeblow", "secret"); */
ftp_raw($fp, "USER joeblow");
ftp_raw($fp, "PASS secret");
?>

参见

  • ftp_exec() - 请求运行一条 FTP 命令

ftp_quit
ftp_rawlist
FTP 函数


返回指定目录下文件的详细列表

ftp_raw
ftp_rename
FTP 函数
PHP Manual

ftp_rawlist

(PHP 4, PHP 5, PHP 7)

ftp_rawlist — 返回指定目录下文件的详细列表

说明

array ftp_rawlist ( resource $ftp_stream , string $directory )

ftp_rawlist() 函数将执行 FTP LIST 命令，并把结果做为一个数组返回。

参数

ftp_stream

FTP 连接资源。

directory

目录路径。

recursive

如果此参数为 TRUE，实际执行的命令将会为 LIST -R。

返回值

返回一个数组，数组的每个元素为返回文本的每一行，输出结构不会被解析。使用函数 ftp_systype() 可以用来判断 FTP 服务器的类型，从而可以用来判断返回列表的类型。

范例

Example #1 ftp_rawlist() 例子

<?php

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// get the file list for /
$buff = ftp_rawlist($conn_id, '/');

// close the connection
ftp_close($conn_id);

// output the buffer
var_dump($buff);
?>

以上例程的输出类似于：

array(3) {
  [0]=>
  string(65) "drwxr-x---   3 vincent  vincent      4096 Jul 12 12:16 public_ftp"
  [1]=>
  string(66) "drwxr-x---  15 vincent  vincent      4096 Nov  3 21:31 public_html"
  [2]=>
  string(73) "lrwxrwxrwx   1 vincent  vincent        11 Jul 12 12:16 www -> public_html"
}

更新日志

版本 | 说明
4.3.0 | 增加 recursive 参数。

参见

  • ftp_nlist() - 返回给定目录的文件列表

ftp_raw
ftp_rename
FTP 函数


更改 FTP 服务器上的文件或目录名

ftp_rawlist
ftp_rmdir
FTP 函数
PHP Manual

ftp_rename

(PHP 4, PHP 5, PHP 7)

ftp_rename — 更改 FTP 服务器上的文件或目录名

说明

bool ftp_rename ( resource $ftp_stream , string $oldname , string $newname )

ftp_rename() 将 FTP 服务器上的一个文件或目录改名。

参数

ftp_stream

FTP 连接的标识符。

oldname

原来的文件／目录名。

newname

新名字。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ftp_rename() 例子

<?php
$old_file = 'somefile.txt.bak';
$new_file = 'somefile.txt';

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// try to rename $old_file to $new_file
if (ftp_rename($conn_id, $old_file, $new_file)) {
    echo "successfully renamed $old_file to $new_file\n";
} else {
    echo "There was a problem while renaming $old_file to $new_file\n";
}

// close the connection
ftp_close($conn_id);
?>

ftp_rawlist
ftp_rmdir
FTP 函数


删除 FTP 服务器上的一个目录

ftp_rename
ftp_set_option
FTP 函数
PHP Manual

ftp_rmdir

(PHP 4, PHP 5, PHP 7)

ftp_rmdir — 删除 FTP 服务器上的一个目录

说明

bool ftp_rmdir ( resource $ftp_stream , string $directory )

删除由参数 directory 指定的目录。

参数

ftp_stream

FTP 连接资源。

directory

要删除的目录，必须是一个空目录的绝对路径或相对路径。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ftp_rmdir() 例子

<?php
$dir = 'www/';

$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

if (ftp_rmdir($conn_id, $dir)) {
    echo 'Successfully deleted ' . $dir;
} else {
    echo 'There was a problem while deleting ' . $dir;
}

ftp_close($conn_id);
?>

参见

  • ftp_mkdir() - 建立新目录

ftp_rename
ftp_set_option
FTP 函数


设置各种 FTP 运行时选项

ftp_rmdir
ftp_site
FTP 函数
PHP Manual

ftp_set_option

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

ftp_set_option — 设置各种 FTP 运行时选项

说明

bool ftp_set_option ( resource $ftp_stream , int $option , mixed $value )

本函数控制指定 FTP 流的各种运行时选项。

参数

ftp_stream

FTP 连接的标识符。

option

目前支持以下选项：

所支持的 FTP 运行时选项
FTP_TIMEOUT_SEC | 改变网络传输的超时时间。参数 value 必须为整数且大于 0。默认的超时时间为 90 秒。
FTP_AUTOSEEK | 当此选项打开时，带 resumepos 或 startpos 参数的GET 或 PUT 请求 将先检索到文件中指定的位置。此选项默认是打开的。

value

本参数取决于要修改哪个 option。

返回值

如果选项能够被设置，返回 TRUE，否则返回 FALSE。如果参数 option 不被支持或者给定的参数 value 的值与参数 option 不匹配，则会同时返回一条警告信息。

范例

Example #1 ftp_set_option() 例子

<?php
// 设置网络传输超时时间为 10 秒
ftp_set_option($conn_id, FTP_TIMEOUT_SEC, 10);
?>

参见

  • ftp_get_option() - 返回当前 FTP 连接的各种不同的选项设置

ftp_rmdir
ftp_site
FTP 函数


向服务器发送 SITE 命令

ftp_set_option
ftp_size
FTP 函数
PHP Manual

ftp_site

(PHP 4, PHP 5, PHP 7)

ftp_site — 向服务器发送 SITE 命令

说明

bool ftp_site ( resource $ftp_stream , string $cmd )

ftp_site() 函数向 FTP 服务器发送由参数 cmd 指定的命令。

SITE 命令是非标准化的，不同的服务器不尽相同。主要用于处理文件权限以及组成员等事情。

参数

ftp_stream

FTP 连接资源。

command

SITE 命令。注意本参数没有经过处理，在文件名有存在空格或其它特殊字符的情况下可能会有问题。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 向一个 FTP 服务器发送一条 SITE 命令

<?php
/* Connect to FTP server */
$conn = ftp_connect('ftp.example.com');
if (!$conn) die('Unable to connect to ftp.example.com');

/* Login as "user" with password "pass" */
if (!ftp_login($conn, 'user', 'pass')) die('Error logging into ftp.example.com');

/* Issue: "SITE CHMOD 0600 /home/user/privatefile" command to ftp server */
if (ftp_site($conn, 'CHMOD 0600 /home/user/privatefile')) {
   echo "Command executed successfully.\n";
} else {
   die('Command failed.');
}
?>

参见

  • ftp_raw() - 向 FTP 服务器发送命令

ftp_set_option
ftp_size
FTP 函数


返回指定文件的大小

ftp_site
ftp_ssl_connect
FTP 函数
PHP Manual

ftp_size

(PHP 4, PHP 5, PHP 7)

ftp_size — 返回指定文件的大小

说明

int ftp_size ( resource $ftp_stream , string $remote_file )

ftp_size() 函数以字节返回远程文件 remote_file 的大小。如果指定文件不存在或发生错误，则返回 -1。有些 FTP 服务器可能不支持此特性。

Note:

获取成功返回文件大小，否则返回 -1。

参数

ftp_stream

FTP 连接资源。

remote_file

远程文件。

返回值

执行成功返回文件大小，失败返回 -1。

范例

Example #1 ftp_size() 例子

<?php
$file = 'somefile.txt';

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// get the size of $file
$res = ftp_size($conn_id, $file);

if ($res != -1) {
    echo "size of $file is $res bytes";
} else {
    echo "couldn't get the size";
}

//close the conntion
ftp_close($conn_id);
?>

参见

  • ftp_rawlist() - 返回指定目录下文件的详细列表

ftp_site
ftp_ssl_connect
FTP 函数


打开 SSL-FTP 连接

ftp_size
ftp_systype
FTP 函数
PHP Manual

ftp_ssl_connect

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

ftp_ssl_connect — 打开 SSL-FTP 连接

说明

resource ftp_ssl_connect ( string $host [, int $port = 21 [, int $timeout = 90 ]] )

ftp_ssl_connect() 打开一个到 host 的安全 FTP 连接（SSL-FTP）。

Note: 为何本函数有可能不存在？

只有 PHP 构建时同时包含了 ftp 模块 和 OpenSSL 模块时， ftp_ssl_connect() 函数才可用。 也就是说，在 Windows 平台上，官方发布的 PHP 构建中本函数不可用。 如果需要在 Windows 平台使用本函数，需要自行编译 PHP。

Note:

ftp_ssl_connect() 不是用来连接 sFTP 服务的。 要在 PHP 中使用 sFTP，请参见 ssh2_sftp()。

参数

host

FTP 服务器地址。 此参数末尾不可以有斜线，开头也不可以有 ftp://。

port

要连接的端口。如果省略此参数或设置为 0，将使用 FTP 默认端口 21。

timeout

此参数设置所有后续网络操作的超时时长。 如果省略，默认值为 90 秒。 可以使用 ftp_set_option() 和 ftp_get_option() 函数随时读取或设置超时时长。

返回值

操作成功返回 SSL-FTP 流，操作失败返回 FALSE 。

更新日志

版本 | 说明
5.2.2 | 以前版本中，如果无法使用 SSL 连接，将会返回一个非 SSL 的连接， 在 5.2.2 版本中修改为返回 FALSE

范例

Example #1 ftp_ssl_connect() 函数例程

<?php

// 建立基础 SSL 连接
$conn_id = ftp_ssl_connect($ftp_server);

// 使用用户名和密码登录
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

echo ftp_pwd($conn_id); // /

// 关闭 ssl 连接
ftp_close($conn_id);
?>

参见

  • ftp_connect() - 建立一个新的 FTP 连接

ftp_size
ftp_systype
FTP 函数


返回远程 FTP 服务器的操作系统类型

ftp_ssl_connect
Gearman
FTP 函数
PHP Manual

ftp_systype

(PHP 4, PHP 5, PHP 7)

ftp_systype — 返回远程 FTP 服务器的操作系统类型

说明

string ftp_systype ( resource $ftp_stream )

返回远程服务器的系统类型，发生错误则返回 FALSE。

参数

ftp_stream

FTP 连接资源。

返回值

返回远程服务器类型，失败返回 FALSE。

范例

Example #1 ftp_systype() 例子

<?php
// ftp connection
$ftp = ftp_connect('ftp.example.com');
ftp_login($ftp, 'user', 'password');

// get the system type
if ($type = ftp_systype($ftp)) {
    echo "Example.com is powered by $type\n";
} else {
    echo "Couldn't get the systype";
}
?>

以上例程的输出类似于：

Example.com is powerd by UNIX

ftp_ssl_connect
Gearman
FTP 函数


Gearman

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Basic usage
    • Basic Gearman client and worker, background
    • Basic Gearman client and worker, submitting tasks
  • GearmanClient — The GearmanClient class
    • GearmanClient::addOptions — Add client options
    • GearmanClient::addServer — Add a job server to the client
    • GearmanClient::addServers — Add a list of job servers to the client
    • GearmanClient::addTask — Add a task to be run in parallel
    • GearmanClient::addTaskBackground — Add a background task to be run in parallel
    • GearmanClient::addTaskHigh — Add a high priority task to run in parallel
    • GearmanClient::addTaskHighBackground — Add a high priority background task to be run in parallel
    • GearmanClient::addTaskLow — Add a low priority task to run in parallel
    • GearmanClient::addTaskLowBackground — Add a low priority background task to be run in parallel
    • GearmanClient::addTaskStatus — Add a task to get status
    • GearmanClient::clearCallbacks — Clear all task callback functions
    • GearmanClient::clone — Create a copy of a GearmanClient object
    • GearmanClient::__construct — Create a GearmanClient instance
    • GearmanClient::context — Get the application context
    • GearmanClient::data — Get the application data (deprecated)
    • GearmanClient::do — Run a single task and return a result [deprecated]
    • GearmanClient::doBackground — Run a task in the background
    • GearmanClient::doHigh — Run a single high priority task
    • GearmanClient::doHighBackground — Run a high priority task in the background
    • GearmanClient::doJobHandle — Get the job handle for the running task
    • GearmanClient::doLow — Run a single low priority task
    • GearmanClient::doLowBackground — Run a low priority task in the background
    • GearmanClient::doNormal — Run a single task and return a result
    • GearmanClient::doStatus — Get the status for the running task
    • GearmanClient::echo — Send data to all job servers to see if they echo it back [deprecated]
    • GearmanClient::error — Returns an error string for the last error encountered.
    • GearmanClient::getErrno — Get an errno value
    • GearmanClient::jobStatus — Get the status of a background job
    • GearmanClient::ping — Send data to all job servers to see if they echo it back
    • GearmanClient::removeOptions — Remove client options
    • GearmanClient::returnCode — Get the last Gearman return code
    • GearmanClient::runTasks — Run a list of tasks in parallel
    • GearmanClient::setClientCallback — Callback function when there is a data packet for a task (deprecated)
    • GearmanClient::setCompleteCallback — Set a function to be called on task completion
    • GearmanClient::setContext — Set application context
    • GearmanClient::setCreatedCallback — Set a callback for when a task is queued
    • GearmanClient::setData — Set application data (deprecated)
    • GearmanClient::setDataCallback — Callback function when there is a data packet for a task
    • GearmanClient::setExceptionCallback — Set a callback for worker exceptions
    • GearmanClient::setFailCallback — Set callback for job failure
    • GearmanClient::setOptions — Set client options
    • GearmanClient::setStatusCallback — Set a callback for collecting task status
    • GearmanClient::setTimeout — Set socket I/O activity timeout
    • GearmanClient::setWarningCallback — Set a callback for worker warnings
    • GearmanClient::setWorkloadCallback — Set a callback for accepting incremental data updates
    • GearmanClient::timeout — Get current socket I/O activity timeout value
  • GearmanJob — The GearmanJob class
    • GearmanJob::complete — Send the result and complete status (deprecated)
    • GearmanJob::__construct — Create a GearmanJob instance
    • GearmanJob::data — Send data for a running job (deprecated)
    • GearmanJob::exception — Send exception for running job (deprecated)
    • GearmanJob::fail — Send fail status (deprecated)
    • GearmanJob::functionName — Get function name
    • GearmanJob::handle — Get the job handle
    • GearmanJob::returnCode — Get last return code
    • GearmanJob::sendComplete — Send the result and complete status
    • GearmanJob::sendData — Send data for a running job
    • GearmanJob::sendException — Send exception for running job (exception)
    • GearmanJob::sendFail — Send fail status
    • GearmanJob::sendStatus — Send status
    • GearmanJob::sendWarning — Send a warning
    • GearmanJob::setReturn — Set a return value
    • GearmanJob::status — Send status (deprecated)
    • GearmanJob::unique — Get the unique identifier
    • GearmanJob::warning — Send a warning (deprecated)
    • GearmanJob::workload — Get workload
    • GearmanJob::workloadSize — Get size of work load
  • GearmanTask — The GearmanTask class
    • GearmanTask::__construct — Create a GearmanTask instance
    • GearmanTask::create — Create a task (deprecated)
    • GearmanTask::data — Get data returned for a task
    • GearmanTask::dataSize — Get the size of returned data
    • GearmanTask::function — Get associated function name (deprecated)
    • GearmanTask::functionName — Get associated function name
    • GearmanTask::isKnown — Determine if task is known
    • GearmanTask::isRunning — Test whether the task is currently running
    • GearmanTask::jobHandle — Get the job handle
    • GearmanTask::recvData — Read work or result data into a buffer for a task
    • GearmanTask::returnCode — Get the last return code
    • GearmanTask::sendData — Send data for a task (deprecated)
    • GearmanTask::sendWorkload — Send data for a task
    • GearmanTask::taskDenominator — Get completion percentage denominator
    • GearmanTask::taskNumerator — Get completion percentage numerator
    • GearmanTask::unique — Get the unique identifier for a task
    • GearmanTask::uuid — Get the unique identifier for a task (deprecated)
  • GearmanWorker — The GearmanWorker class
    • GearmanWorker::addFunction — Register and add callback function
    • GearmanWorker::addOptions — Add worker options
    • GearmanWorker::addServer — Add a job server
    • GearmanWorker::addServers — Add job servers
    • GearmanWorker::clone — Create a copy of the worker
    • GearmanWorker::__construct — Create a GearmanWorker instance
    • GearmanWorker::echo — Test job server response
    • GearmanWorker::error — Get the last error encountered
    • GearmanWorker::getErrno — Get errno
    • GearmanWorker::options — Get worker options
    • GearmanWorker::register — Register a function with the job server
    • GearmanWorker::removeOptions — Remove worker options
    • GearmanWorker::returnCode — Get last Gearman return code
    • GearmanWorker::setId — Give the worker an identifier so it can be tracked when asking gearmand for the list of available workers.
    • GearmanWorker::setOptions — Set worker options
    • GearmanWorker::setTimeout — Set socket I/O activity timeout
    • GearmanWorker::timeout — Get socket I/O activity timeout
    • GearmanWorker::unregister — Unregister a function name with the job servers
    • GearmanWorker::unregisterAll — Unregister all function names with the job servers
    • GearmanWorker::wait — Wait for activity from one of the job servers
    • GearmanWorker::work — Wait for and perform jobs
  • GearmanException — The GearmanException class
ftp_systype
简介
其它服务


简介

» Gearman is a generic application framework for farming out work to multiple machines or processes. It allows applications to complete tasks in parallel, to load balance processing, and to call functions between languages. The framework can be used in a variety of applications, from high-availability web sites to the transport of database replication events.

This extension provides classes for writing Gearman clients and workers.

Gearman
安装／配置
Gearman


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Gearman


需求

This extension requires the » libgearman, » libevent and » uuid libraries, and a running Gearman server.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/gearman

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

Return values. Always check GearmanClient::error() or GearmanWorker() for a string error, as it may contain more details:

GEARMAN_SUCCESS (integer)
Whatever action was taken was successful.
GEARMAN_IO_WAIT (integer)
When in non-blocking mode, an event is hit that would have blocked.
GEARMAN_ERRNO (integer)
A system error. Check GearmanClient::errno() or GearmanWorker::errno() for the system error code that was returned.
GEARMAN_NO_ACTIVE_FDS (integer)
GearmanClient::wait() or GearmanWorker() was called with no connections.
GEARMAN_UNEXPECTED_PACKET (integer)
Indicates something going very wrong in gearmand. Applies only to GearmanWorker.
GEARMAN_GETADDRINFO (integer)
DNS resolution failed (invalid host, port, etc).
GEARMAN_NO_SERVERS (integer)
Did not call GearmanClient::addServer() before submitting jobs or tasks.
GEARMAN_LOST_CONNECTION (integer)
Lost a connection during a request.
GEARMAN_MEMORY_ALLOCATION_FAILURE (integer)
Memory allocation failed (ran out of memory).
GEARMAN_SERVER_ERROR (integer)
Something went wrong in the Gearman server and it could not handle the request gracefully.
GEARMAN_WORK_DATA (integer)
Notice return code obtained with GearmanClient::returnCode() when using GearmanClient::do(). Sent to update the client with data from a running job. A worker uses this when it needs to send updates, send partial results, or flush data during long running jobs.
GEARMAN_WORK_WARNING (integer)
Notice return code obtained with GearmanClient::returnCode() when using GearmanClient::do(). Updates the client with a warning. The behavior is just like GEARMAN_WORK_DATA, but should be treated as a warning instead of normal response data.
GEARMAN_WORK_STATUS (integer)
Notice return code obtained with GearmanClient::returnCode() when using GearmanClient::do(). Sent to update the status of a long running job. Use GearmanClient::doStatus() to obtain the percentage complete of the task.
GEARMAN_WORK_EXCEPTION (integer)
Notice return code obtained with GearmanClient::returnCode() when using GearmanClient::do(). Indicates that a job failed with a given exception.
GEARMAN_WORK_FAIL (integer)
Notice return code obtained with GearmanClient::returnCode() when using GearmanClient::do(). Indicates that the job failed.
GEARMAN_COULD_NOT_CONNECT (integer)
Failed to connect to servers.
GEARMAN_INVALID_FUNCTION_NAME (integer)
Trying to register a function name of NULL or using the callback interface without specifying callbacks.
GEARMAN_INVALID_WORKER_FUNCTION (integer)
Trying to register a function with a NULL callback function.
GEARMAN_NO_REGISTERED_FUNCTIONS (integer)
When a worker gets a job for a function it did not register.
GEARMAN_NO_JOBS (integer)
For a non-blocking worker, when GearmanWorker::work() does not have any active jobs.
GEARMAN_ECHO_DATA_CORRUPTION (integer)
After GearmanClient::echo() or GearmanWorker::echo() the data returned doesn't match the data sent.
GEARMAN_NEED_WORKLOAD_FN (integer)
When the client opted to stream the workload of a task, but did not specify a workload callback function.
GEARMAN_PAUSE (integer)
For the non-blocking client task interface, can be returned from the task callback to "pause" the call and return from GearmanClient::runTasks(). Call GearmanClient::runTasks() again to continue.
GEARMAN_UNKNOWN_STATE (integer)
Internal client/worker state error.
GEARMAN_SEND_BUFFER_TOO_SMALL (integer)
Internal error: trying to flush more data in one atomic chunk than is possible due to hard-coded buffer sizes.
GEARMAN_TIMEOUT (integer)
Hit the timeout limit set by the client/worker.

GearmanClient options:

GEARMAN_CLIENT_GENERATE_UNIQUE (integer)
Generate a unique id (UUID) for each task.
GEARMAN_CLIENT_NON_BLOCKING (integer)
Run the cient in a non-blocking mode.
GEARMAN_CLIENT_UNBUFFERED_RESULT (integer)
Allow the client to read data in chunks rather than have the library buffer the entire data result and pass that back.
GEARMAN_CLIENT_FREE_TASKS (integer)
Automatically free task objects once they are complete. This is the default setting in this extension to prevent memory leaks.

GearmanWorker options:

GEARMAN_WORKER_NON_BLOCKING (integer)
Run the worker in non-blocking mode.
GEARMAN_WORKER_GRAB_UNIQ (integer)
Return the client assigned unique ID in addition to the job handle.

Base Gearman configuration:

GEARMAN_DEFAULT_TCP_HOST (string)
GEARMAN_DEFAULT_TCP_PORT (integer)
GEARMAN_DEFAULT_SOCKET_TIMEOUT (integer)
GEARMAN_DEFAULT_SOCKET_SEND_SIZE (integer)
GEARMAN_DEFAULT_SOCKET_RECV_SIZE (integer)
GEARMAN_MAX_ERROR_SIZE (integer)
GEARMAN_PACKET_HEADER_SIZE (integer)
GEARMAN_JOB_HANDLE_SIZE (integer)
GEARMAN_OPTION_SIZE (integer)
GEARMAN_UNIQUE_SIZE (integer)
GEARMAN_MAX_COMMAND_ARGS (integer)
GEARMAN_ARGS_BUFFER_SIZE (integer)
GEARMAN_SEND_BUFFER_SIZE (integer)
GEARMAN_RECV_BUFFER_SIZE (integer)
GEARMAN_WORKER_WAIT_TIMEOUT (integer)

资源类型
范例
Gearman


范例

Table of Contents

  • Basic usage
  • Basic Gearman client and worker, background
  • Basic Gearman client and worker, submitting tasks
预定义常量
Basic usage
Gearman


Basic usage

Example #1 Basic Gearman client and worker

This example shows a very simple client and worker. The client sends a string to the job server, and the worker reverses the string and sends it back. The job is performed synchronously.

<?php

# Create our client object.
$gmclient= new GearmanClient();

# Add default server (localhost).
$gmclient->addServer();

echo "Sending job\n";

# Send reverse job
do
{
  $result = $gmclient->doNormal("reverse", "Hello!");

  # Check for various return packets and errors.
  switch($gmclient->returnCode())
  {
    case GEARMAN_WORK_DATA:
      echo "Data: $result\n";
      break;
    case GEARMAN_WORK_STATUS:
      list($numerator, $denominator)= $gmclient->doStatus();
      echo "Status: $numerator/$denominator complete\n";
      break;
    case GEARMAN_WORK_FAIL:
      echo "Failed\n";
      exit;
    case GEARMAN_SUCCESS:
      echo "Success: $result\n";
      break;
    default:
      echo "RET: " . $gmclient->returnCode() . "\n";
      exit;
  }
}
while($gmclient->returnCode() != GEARMAN_SUCCESS);

?>
<?php

echo "Starting\n";

# Create our worker object.
$gmworker= new GearmanWorker();

# Add default server (localhost).
$gmworker->addServer();

# Register function "reverse" with the server. Change the worker function to
# "reverse_fn_fast" for a faster worker with no output.
$gmworker->addFunction("reverse", "reverse_fn");

print "Waiting for job...\n";
while($gmworker->work())
{
  if ($gmworker->returnCode() != GEARMAN_SUCCESS)
  {
    echo "return_code: " . $gmworker->returnCode() . "\n";
    break;
  }
}

function reverse_fn($job)
{
  echo "Received job: " . $job->handle() . "\n";

  $workload = $job->workload();
  $workload_size = $job->workloadSize();

  echo "Workload: $workload ($workload_size)\n";

  # This status loop is not needed, just showing how it works
  for ($x= 0; $x < $workload_size; $x++)
  {
    echo "Sending status: " . ($x + 1) . "/$workload_size complete\n";
    $job->sendStatus($x, $workload_size);
    sleep(1);
  }

  $result= strrev($workload);
  echo "Result: $result\n";

  # Return what we want to send back to the client.
  return $result;
}

# A much simpler and less verbose version of the above function would be:
function reverse_fn_fast($job)
{
  return strrev($job->workload());
}

?>

以上例程的输出类似于：

% php reverse_worker.php
Starting
Waiting for job...
Received job: H:foo.local:36
Workload: Hello! (6)
Sending status: 1/6 complete
Sending status: 2/6 complete
Sending status: 3/6 complete
Sending status: 4/6 complete
Sending status: 5/6 complete
Sending status: 6/6 complete
Result: !olleH

% php reverse_client.php
Starting
Sending job
Status: 1/6 complete
Status: 2/6 complete
Status: 3/6 complete
Status: 4/6 complete
Status: 5/6 complete
Status: 6/6 complete
Success: !olleH

范例
Basic Gearman client and worker, background
范例


Basic Gearman client and worker, background

Example #1 Basic Gearman client and worker, background

This example shows a very simple client and worker. The client sends a string to the job server as a background job, and the worker reverses the string. Note that since the work is performed asynchronously, the client does not wait for the job to complete and exits (and hence the client never receives the results).

<?php

# create our client object
$gmclient= new GearmanClient();

# add the default server (localhost)
$gmclient->addServer();

# run reverse client in the background
$job_handle = $gmclient->doBackground("reverse", "this is a test");

if ($gmclient->returnCode() != GEARMAN_SUCCESS)
{
  echo "bad return code\n";
  exit;
}

echo "done!\n";

?>
<?php

echo "Starting\n";

# Create our worker object.
$gmworker= new GearmanWorker();

# Add default server (localhost).
$gmworker->addServer();

# Register function "reverse" with the server. Change the worker function to
# "reverse_fn_fast" for a faster worker with no output.
$gmworker->addFunction("reverse", "reverse_fn");

print "Waiting for job...\n";
while($gmworker->work())
{
  if ($gmworker->returnCode() != GEARMAN_SUCCESS)
  {
    echo "return_code: " . $gmworker->returnCode() . "\n";
    break;
  }
}

function reverse_fn($job)
{
  echo "Received job: " . $job->handle() . "\n";

  $workload = $job->workload();
  $workload_size = $job->workloadSize();

  echo "Workload: $workload ($workload_size)\n";

  # This status loop is not needed, just showing how it works
  for ($x= 0; $x < $workload_size; $x++)
  {
    echo "Sending status: " . ($x + 1) . "/$workload_size complete\n";
    $job->sendStatus($x, $workload_size);
    sleep(1);
  }

  $result= strrev($workload);
  echo "Result: $result\n";

  # Return what we want to send back to the client.
  return $result;
}

# A much simpler and less verbose version of the above function would be:
function reverse_fn_fast($job)
{
  return strrev($job->workload());
}

?>

以上例程的输出类似于：

% php reverse_worker.php
Starting
Waiting for job...
Received job: H:foo.local:41
Workload: this is a test (14)
1/14 complete
2/14 complete
3/14 complete
4/14 complete
5/14 complete
6/14 complete
7/14 complete
8/14 complete
9/14 complete
10/14 complete
11/14 complete
12/14 complete
13/14 complete
14/14 complete
Result: tset a si siht

% php reverse_client_bg.php
done!

Basic usage
Basic Gearman client and worker, submitting tasks
范例


Basic Gearman client and worker, submitting tasks

Example #1 Basic Gearman client and worker, submitting tasks

In this example, the basic reverse client extended to run two tasks in parallel. The reverse worker is unchanged except to add sending of data back during processing.

<?php

# create the gearman client
$gmc= new GearmanClient();

# add the default server (localhost)
$gmc->addServer();

# register some callbacks
$gmc->setCreatedCallback("reverse_created");
$gmc->setDataCallback("reverse_data");
$gmc->setStatusCallback("reverse_status");
$gmc->setCompleteCallback("reverse_complete");
$gmc->setFailCallback("reverse_fail");

# set some arbitrary application data
$data['foo'] = 'bar';

# add two tasks
$task= $gmc->addTask("reverse", "foo", $data);
$task2= $gmc->addTaskLow("reverse", "bar", NULL);

# run the tasks in parallel (assuming multiple workers)
if (! $gmc->runTasks())
{
    echo "ERROR " . $gmc->error() . "\n";
    exit;
}

echo "DONE\n";

function reverse_created($task)
{
    echo "CREATED: " . $task->jobHandle() . "\n";
}

function reverse_status($task)
{
    echo "STATUS: " . $task->jobHandle() . " - " . $task->taskNumerator() .
         "/" . $task->taskDenominator() . "\n";
}

function reverse_complete($task)
{
    echo "COMPLETE: " . $task->jobHandle() . ", " . $task->data() . "\n";
}

function reverse_fail($task)
{
    echo "FAILED: " . $task->jobHandle() . "\n";
}

function reverse_data($task)
{
    echo "DATA: " . $task->data() . "\n";
}

?>
<?php

echo "Starting\n";

# Create our worker object.
$gmworker= new GearmanWorker();

# Add default server (localhost).
$gmworker->addServer();

# Register function "reverse" with the server. Change the worker function to
# "reverse_fn_fast" for a faster worker with no output.
$gmworker->addFunction("reverse", "reverse_fn");

print "Waiting for job...\n";
while($gmworker->work())
{
  if ($gmworker->returnCode() != GEARMAN_SUCCESS)
  {
    echo "return_code: " . $gmworker->returnCode() . "\n";
    break;
  }
}

function reverse_fn($job)
{
  echo "Received job: " . $job->handle() . "\n";

  $workload = $job->workload();
  $workload_size = $job->workloadSize();

  echo "Workload: $workload ($workload_size)\n";

  # This status loop is not needed, just showing how it works
  for ($x= 0; $x < $workload_size; $x++)
  {
    echo "Sending status: " . ($x + 1) . "/$workload_size complete\n";
    $job->sendStatus($x+1, $workload_size);
    $job->sendData(substr($workload, $x, 1));
    sleep(1);
  }

  $result= strrev($workload);
  echo "Result: $result\n";

  # Return what we want to send back to the client.
  return $result;
}

# A much simpler and less verbose version of the above function would be:
function reverse_fn_fast($job)
{
  return strrev($job->workload());
}

?>

以上例程的输出类似于：

% php reverse_worker.php
Starting
Waiting for job...
Received job: H:foo.local:45
Workload: foo (3)
1/3 complete
2/3 complete
3/3 complete
Result: oof
Received job: H:foo.local:44
Workload: bar (3)
1/3 complete
2/3 complete
3/3 complete
Result: rab

% php reverse_client_task.php
CREATED: H:foo.local:44
CREATED: H:foo.local:45
STATUS: H:foo.local:45 - 1/3
DATA: f
STATUS: H:foo.local:45 - 2/3
DATA: o
STATUS: H:foo.local:45 - 3/3
DATA: o
COMPLETE: H:foo.local:45, oof
STATUS: H:foo.local:44 - 1/3
DATA: b
STATUS: H:foo.local:44 - 2/3
DATA: a
STATUS: H:foo.local:44 - 3/3
DATA: r
COMPLETE: H:foo.local:44, rab
DONE

Basic Gearman client and worker, background
GearmanClient
范例


The GearmanClient class

(PECL gearman >= 0.5.0)

简介

Represents a class for connecting to a Gearman job server and making requests to perform some function on provided data. The function performed must be one registered by a Gearman worker and the data passed is opaque to the job server.

类摘要

GearmanClient {
/* 方法 */
public bool addOptions ( int $options )
public bool addServer ([ string $host = 127.0.0.1 [, int $port = 4730 ]] )
public bool addServers ([ string $servers = 127.0.0.1:4730 ] )
public GearmanTask addTask ( string $function_name , string $workload [, mixed &$context [, string $unique ]] )
public GearmanTask addTaskBackground ( string $function_name , string $workload [, mixed &$context [, string $unique ]] )
public GearmanTask addTaskHigh ( string $function_name , string $workload [, mixed &$context [, string $unique ]] )
public GearmanTask addTaskHighBackground ( string $function_name , string $workload [, mixed &$context [, string $unique ]] )
public GearmanTask addTaskLow ( string $function_name , string $workload [, mixed &$context [, string $unique ]] )
public GearmanTask addTaskLowBackground ( string $function_name , string $workload [, mixed &$context [, string $unique ]] )
public GearmanTask addTaskStatus ( string $job_handle [, string &$context ] )
public bool clearCallbacks ( void )
public GearmanClient clone ( void )
public __construct ( void )
public string context ( void )
public string data ( void )
public string do ( string $function_name , string $workload [, string $unique ] )
public string doBackground ( string $function_name , string $workload [, string $unique ] )
public string doHigh ( string $function_name , string $workload [, string $unique ] )
public string doHighBackground ( string $function_name , string $workload [, string $unique ] )
public string doJobHandle ( void )
public string doLow ( string $function_name , string $workload [, string $unique ] )
public string doLowBackground ( string $function_name , string $workload [, string $unique ] )
public string doNormal ( string $function_name , string $workload [, string $unique ] )
public array doStatus ( void )
public bool echo ( string $workload )
public string error ( void )
public int getErrno ( void )
public array jobStatus ( string $job_handle )
public bool ping ( string $workload )
public bool removeOptions ( int $options )
public int returnCode ( void )
public bool runTasks ( void )
public void setClientCallback ( callable $callback )
public bool setCompleteCallback ( callable $callback )
public bool setContext ( string $context )
public bool setCreatedCallback ( string $callback )
public bool setData ( string $data )
public bool setDataCallback ( callable $callback )
public bool setExceptionCallback ( callable $callback )
public bool setFailCallback ( callable $callback )
public bool setOptions ( int $options )
public bool setStatusCallback ( callable $callback )
public bool setTimeout ( int $timeout )
public bool setWarningCallback ( callable $callback )
public bool setWorkloadCallback ( callable $callback )
public int timeout ( void )
}

Table of Contents

  • GearmanClient::addOptions — Add client options
  • GearmanClient::addServer — Add a job server to the client
  • GearmanClient::addServers — Add a list of job servers to the client
  • GearmanClient::addTask — Add a task to be run in parallel
  • GearmanClient::addTaskBackground — Add a background task to be run in parallel
  • GearmanClient::addTaskHigh — Add a high priority task to run in parallel
  • GearmanClient::addTaskHighBackground — Add a high priority background task to be run in parallel
  • GearmanClient::addTaskLow — Add a low priority task to run in parallel
  • GearmanClient::addTaskLowBackground — Add a low priority background task to be run in parallel
  • GearmanClient::addTaskStatus — Add a task to get status
  • GearmanClient::clearCallbacks — Clear all task callback functions
  • GearmanClient::clone — Create a copy of a GearmanClient object
  • GearmanClient::__construct — Create a GearmanClient instance
  • GearmanClient::context — Get the application context
  • GearmanClient::data — Get the application data (deprecated)
  • GearmanClient::do — Run a single task and return a result [deprecated]
  • GearmanClient::doBackground — Run a task in the background
  • GearmanClient::doHigh — Run a single high priority task
  • GearmanClient::doHighBackground — Run a high priority task in the background
  • GearmanClient::doJobHandle — Get the job handle for the running task
  • GearmanClient::doLow — Run a single low priority task
  • GearmanClient::doLowBackground — Run a low priority task in the background
  • GearmanClient::doNormal — Run a single task and return a result
  • GearmanClient::doStatus — Get the status for the running task
  • GearmanClient::echo — Send data to all job servers to see if they echo it back [deprecated]
  • GearmanClient::error — Returns an error string for the last error encountered.
  • GearmanClient::getErrno — Get an errno value
  • GearmanClient::jobStatus — Get the status of a background job
  • GearmanClient::ping — Send data to all job servers to see if they echo it back
  • GearmanClient::removeOptions — Remove client options
  • GearmanClient::returnCode — Get the last Gearman return code
  • GearmanClient::runTasks — Run a list of tasks in parallel
  • GearmanClient::setClientCallback — Callback function when there is a data packet for a task (deprecated)
  • GearmanClient::setCompleteCallback — Set a function to be called on task completion
  • GearmanClient::setContext — Set application context
  • GearmanClient::setCreatedCallback — Set a callback for when a task is queued
  • GearmanClient::setData — Set application data (deprecated)
  • GearmanClient::setDataCallback — Callback function when there is a data packet for a task
  • GearmanClient::setExceptionCallback — Set a callback for worker exceptions
  • GearmanClient::setFailCallback — Set callback for job failure
  • GearmanClient::setOptions — Set client options
  • GearmanClient::setStatusCallback — Set a callback for collecting task status
  • GearmanClient::setTimeout — Set socket I/O activity timeout
  • GearmanClient::setWarningCallback — Set a callback for worker warnings
  • GearmanClient::setWorkloadCallback — Set a callback for accepting incremental data updates
  • GearmanClient::timeout — Get current socket I/O activity timeout value
Basic Gearman client and worker, submitting tasks
GearmanClient::addOptions
Gearman


Add client options

GearmanClient
GearmanClient::addServer
GearmanClient
PHP Manual

GearmanClient::addOptions

(PECL gearman >= 0.6.0)

GearmanClient::addOptions — Add client options

说明

public bool GearmanClient::addOptions ( int $options )

Adds one or more options to those already set.

参数

options

The options to add. One of the following constants, or a combination of them using the bitwise OR operator ("|"): GEARMAN_CLIENT_GENERATE_UNIQUE, GEARMAN_CLIENT_NON_BLOCKING, GEARMAN_CLIENT_UNBUFFERED_RESULT or GEARMAN_CLIENT_FREE_TASKS.

返回值

Always returns TRUE.

GearmanClient
GearmanClient::addServer
GearmanClient


Add a job server to the client

GearmanClient::addOptions
GearmanClient::addServers
GearmanClient
PHP Manual

GearmanClient::addServer

(PECL gearman >= 0.5.0)

GearmanClient::addServer — Add a job server to the client

说明

public bool GearmanClient::addServer ([ string $host = 127.0.0.1 [, int $port = 4730 ]] )

Adds a job server to a list of servers that can be used to run a task. No socket I/O happens here; the server is simply added to the list.

参数

host

任务服务器主机名。

port

任务服务器端口号。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Adding two job servers

<?php

# Create our client object.
$gmclient= new GearmanClient();

# Add two job servers, the first on the default 4730 port
$gmclient->addServer("10.0.0.1");
$gmclient->addServer("10.0.0.2", 7003);

?>

参见

  • GearmanClient::addServers() - Add a list of job servers to the client

GearmanClient::addOptions
GearmanClient::addServers
GearmanClient


Add a list of job servers to the client

GearmanClient::addServer
GearmanClient::addTask
GearmanClient
PHP Manual

GearmanClient::addServers

(PECL gearman >= 0.5.0)

GearmanClient::addServers — Add a list of job servers to the client

说明

public bool GearmanClient::addServers ([ string $servers = 127.0.0.1:4730 ] )

Adds a list of job servers that can be used to run a task. No socket I/O happens here; the servers are simply added to the full list of servers.

参数

servers

A comma-separated list of servers, each server specified in the format 'host:port'.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Add two job servers

<?php

# Create our client object.
$gmclient= new GearmanClient();

# Add multiple job servers, the first on the default 4730 port
$gmclient->addServers("10.0.0.1,10.0.0.2:7003");

?>

参见

  • GearmanClient::addServer() - Add a job server to the client

GearmanClient::addServer
GearmanClient::addTask
GearmanClient


Add a task to be run in parallel

GearmanClient::addServers
GearmanClient::addTaskBackground
GearmanClient
PHP Manual

GearmanClient::addTask

(PECL gearman >= 0.5.0)

GearmanClient::addTask — Add a task to be run in parallel

说明

public GearmanTask GearmanClient::addTask ( string $function_name , string $workload [, mixed &$context [, string $unique ]] )

Adds a task to be run in parallel with other tasks. Call this method for all the tasks to be run in parallel, then call GearmanClient::runTasks() to perform the work. Note that enough workers need to be available for the tasks to all run in parallel.

参数

function_name

由程序自动执行的已注册函数。

workload

被处理的序列化数据。

context

与任务关联的应用程序上下文。

unique

用于标识特定任务的唯一性 ID。

返回值

A GearmanTask object or FALSE if the task could not be added.

范例

Example #1 Basic submission of two tasks

<?php

# Create our gearman client
$gmclient= new GearmanClient();

# add the default job server
$gmclient->addServer();

# set a function to be called when the work is complete
$gmclient->setCompleteCallback("complete");

# add a task to perform the "reverse" function on the string "Hello World!"
$gmclient->addTask("reverse", "Hello World!", null, "1");

# add another task to perform the "reverse" function on the string "!dlroW olleH"
$gmclient->addTask("reverse", "!dlroW olleH", null, "2");

# run the tasks
$gmclient->runTasks();

function complete($task)
{
  print "COMPLETE: " . $task->unique() . ", " . $task->data() . "\n";
}

?>

以上例程的输出类似于：

COMPLETE: 2, Hello World!
COMPLETE: 1, !dlroW olleH

Example #2 Basic submission of two tasks with passing application context

<?php

$client = new GearmanClient();
$client->addServer();

# set a function to be called when the work is complete
$client->setCompleteCallback("reverse_complete");

# Add some tasks for a placeholder of where to put the results
$results = array();
$client->addTask("reverse", "Hello World!", &$results, "t1");
$client->addTask("reverse", "!dlroW olleH", &$results, "t2");

$client->runTasks();

# The results should now be filled in from the callbacks
foreach ($results as $id => $result)
   echo $id . ": " . $result['handle'] . ", " . $result['data'] . "\n";

function reverse_complete($task, $results)
{
   $results[$task->unique()] = array("handle"=>$task->jobHandle(), "data"=>$task->data());
}

?>

以上例程的输出类似于：

t2: H.foo:21, Hello World!
t1: H:foo:22, !dlroW olleH

参见

  • GearmanClient::addTaskHigh() - Add a high priority task to run in parallel
  • GearmanClient::addTaskLow() - Add a low priority task to run in parallel
  • GearmanClient::addTaskBackground() - Add a background task to be run in parallel
  • GearmanClient::addTaskHighBackground() - Add a high priority background task to be run in parallel
  • GearmanClient::addTaskLowBackground() - Add a low priority background task to be run in parallel
  • GearmanClient::runTasks() - Run a list of tasks in parallel

GearmanClient::addServers
GearmanClient::addTaskBackground
GearmanClient


Add a background task to be run in parallel

GearmanClient::addTask
GearmanClient::addTaskHigh
GearmanClient
PHP Manual

GearmanClient::addTaskBackground

(PECL gearman >= 0.5.0)

GearmanClient::addTaskBackground — Add a background task to be run in parallel

说明

public GearmanTask GearmanClient::addTaskBackground ( string $function_name , string $workload [, mixed &$context [, string $unique ]] )

Adds a background task to be run in parallel with other tasks. Call this method for all the tasks to be run in parallel, then call GearmanClient::runTasks() to perform the work.

参数

function_name

由程序自动执行的已注册函数。

workload

被处理的序列化数据。

context

与任务关联的应用程序上下文。

unique

用于标识特定任务的唯一性 ID。

返回值

A GearmanTask object or FALSE if the task could not be added.

范例

Example #1 Two tasks, one background and one not

This example illustrates the difference between running a background task and a normal task. The client adds two tasks to execute the same function, but one is added with addTaskBackground(). A callback is set so that progress of the job can be tracked. A simple worker with an artificial delay reports on the job progress and the client picks this up through the callback. Two workers are run for this example. Note that the background task does not show in the client output.

<?php

# The client script

# create our gearman client
$gmc= new GearmanClient();

# add the default job server
$gmc->addServer();

# set a couple of callbacks so we can track progress
$gmc->setCompleteCallback("reverse_complete");
$gmc->setStatusCallback("reverse_status");

# add a task for the "reverse" function
$task= $gmc->addTask("reverse", "Hello World!", null, "1");

# add another task, but this one to run in the background
$task= $gmc->addTaskBackground("reverse", "!dlroW olleH", null, "2");

if (! $gmc->runTasks())
{
    echo "ERROR " . $gmc->error() . "\n";
    exit;
}

echo "DONE\n";

function reverse_status($task)
{
    echo "STATUS: " . $task->unique() . ", " . $task->jobHandle() . " - " . $task->taskNumerator() .
         "/" . $task->taskDenominator() . "\n";
}

function reverse_complete($task)
{
    echo "COMPLETE: " . $task->unique() . ", " . $task->data() . "\n";
}

?>
<?php

# The worker script

echo "Starting\n";

# Create our worker object.
$gmworker= new GearmanWorker();

# Add default server (localhost).
$gmworker->addServer();

# Register function "reverse" with the server.
$gmworker->addFunction("reverse", "reverse_fn");

print "Waiting for job...\n";
while($gmworker->work())
{
  if ($gmworker->returnCode() != GEARMAN_SUCCESS)
  {
    echo "return_code: " . $gmworker->returnCode() . "\n";
    break;
  }
}

function reverse_fn($job)
{
  echo "Received job: " . $job->handle() . "\n";

  $workload = $job->workload();
  $workload_size = $job->workloadSize();

  echo "Workload: $workload ($workload_size)\n";

  # This status loop is not needed, just showing how it works
  for ($x= 0; $x < $workload_size; $x++)
  {
    echo "Sending status: " . ($x + 1) . "/$workload_size complete\n";
    $job->sendStatus($x+1, $workload_size);
    $job->sendData(substr($workload, $x, 1));
    sleep(1);
  }

  $result= strrev($workload);
  echo "Result: $result\n";

  # Return what we want to send back to the client.
  return $result;
}

?>

Worker output for two workers running:

Received job: H:foo.local:65
Workload: !dlroW olleH (12)
1/12 complete
Received job: H:foo.local:66
Workload: Hello World! (12)
Sending status: 1/12 complete
Sending status: 2/12 complete
Sending status: 2/12 complete
Sending status: 3/12 complete
Sending status: 3/12 complete
Sending status: 4/12 complete
Sending status: 4/12 complete
Sending status: 5/12 complete
Sending status: 5/12 complete
Sending status: 6/12 complete
Sending status: 6/12 complete
Sending status: 7/12 complete
Sending status: 7/12 complete
Sending status: 8/12 complete
Sending status: 8/12 complete
Sending status: 9/12 complete
Sending status: 9/12 complete
Sending status: 10/12 complete
Sending status: 10/12 complete
Sending status: 11/12 complete
Sending status: 11/12 complete
Sending status: 12/12 complete
Sending status: 12/12 complete
Result: !dlroW olleH
Result: Hello World!

Client output:

STATUS: 1, H:foo.local:66 - 1/12
STATUS: 1, H:foo.local:66 - 2/12
STATUS: 1, H:foo.local:66 - 3/12
STATUS: 1, H:foo.local:66 - 4/12
STATUS: 1, H:foo.local:66 - 5/12
STATUS: 1, H:foo.local:66 - 6/12
STATUS: 1, H:foo.local:66 - 7/12
STATUS: 1, H:foo.local:66 - 8/12
STATUS: 1, H:foo.local:66 - 9/12
STATUS: 1, H:foo.local:66 - 10/12
STATUS: 1, H:foo.local:66 - 11/12
STATUS: 1, H:foo.local:66 - 12/12
COMPLETE: 1, !dlroW olleH
DONE

参见

  • GearmanClient::addTask() - Add a task to be run in parallel
  • GearmanClient::addTaskHigh() - Add a high priority task to run in parallel
  • GearmanClient::addTaskLow() - Add a low priority task to run in parallel
  • GearmanClient::addTaskHighBackground() - Add a high priority background task to be run in parallel
  • GearmanClient::addTaskLowBackground() - Add a low priority background task to be run in parallel
  • GearmanClient::runTasks() - Run a list of tasks in parallel

GearmanClient::addTask
GearmanClient::addTaskHigh
GearmanClient


Add a high priority task to run in parallel

GearmanClient::addTaskBackground
GearmanClient::addTaskHighBackground
GearmanClient
PHP Manual

GearmanClient::addTaskHigh

(PECL gearman >= 0.5.0)

GearmanClient::addTaskHigh — Add a high priority task to run in parallel

说明

public GearmanTask GearmanClient::addTaskHigh ( string $function_name , string $workload [, mixed &$context [, string $unique ]] )

Adds a high priority task to be run in parallel with other tasks. Call this method for all the high priority tasks to be run in parallel, then call GearmanClient::runTasks() to perform the work. Tasks with a high priority will be selected from the queue before those of normal or low priority.

参数

function_name

由程序自动执行的已注册函数。

workload

被处理的序列化数据。

context

与任务关联的应用程序上下文。

unique

用于标识特定任务的唯一性 ID。

返回值

A GearmanTask object or FALSE if the task could not be added.

范例

Example #1 A high priority task along with two normal tasks

A high priority task is included among two other tasks. A single worker is available, so that tasks are run one at a time, with the high priority task run first.

<?php

# create the gearman client
$gmc= new GearmanClient();

# add the default job server
$gmc->addServer();

# set the callback for when the job is complete
$gmc->setCompleteCallback("reverse_complete");

# add tasks, one of which is high priority
$task= $gmc->addTask("reverse", "Hello World!", null, "1");
$task= $gmc->addTaskHigh("reverse", "!dlroW olleH", null, "2");
$task= $gmc->addTask("reverse", "Hello World!", null, "3");

if (! $gmc->runTasks())
{
    echo "ERROR " . $gmc->error() . "\n";
    exit;
}
echo "DONE\n";

function reverse_complete($task)
{
    echo "COMPLETE: " . $task->unique() . ", " . $task->data() . "\n";
}

?>

以上例程的输出类似于：

COMPLETE: 2, Hello World!
COMPLETE: 3, !dlroW olleH
COMPLETE: 1, !dlroW olleH
DONE

参见

  • GearmanClient::addTask() - Add a task to be run in parallel
  • GearmanClient::addTaskLow() - Add a low priority task to run in parallel
  • GearmanClient::addTaskBackground() - Add a background task to be run in parallel
  • GearmanClient::addTaskHighBackground() - Add a high priority background task to be run in parallel
  • GearmanClient::addTaskLowBackground() - Add a low priority background task to be run in parallel
  • GearmanClient::runTasks() - Run a list of tasks in parallel

GearmanClient::addTaskBackground
GearmanClient::addTaskHighBackground
GearmanClient


Add a high priority background task to be run in parallel

GearmanClient::addTaskHigh
GearmanClient::addTaskLow
GearmanClient
PHP Manual

GearmanClient::addTaskHighBackground

(PECL gearman >= 0.5.0)

GearmanClient::addTaskHighBackground — Add a high priority background task to be run in parallel

说明

public GearmanTask GearmanClient::addTaskHighBackground ( string $function_name , string $workload [, mixed &$context [, string $unique ]] )

Adds a high priority background task to be run in parallel with other tasks. Call this method for all the tasks to be run in parallel, then call GearmanClient::runTasks() to perform the work. Tasks with a high priority will be selected from the queue before those of normal or low priority.

参数

function_name

由程序自动执行的已注册函数。

workload

被处理的序列化数据。

context

与任务关联的应用程序上下文。

unique

用于标识特定任务的唯一性 ID。

返回值

A GearmanTask object or FALSE if the task could not be added.

参见

  • GearmanClient::addTask() - Add a task to be run in parallel
  • GearmanClient::addTaskHigh() - Add a high priority task to run in parallel
  • GearmanClient::addTaskLow() - Add a low priority task to run in parallel
  • GearmanClient::addTaskBackground() - Add a background task to be run in parallel
  • GearmanClient::addTaskLowBackground() - Add a low priority background task to be run in parallel
  • GearmanClient::runTasks() - Run a list of tasks in parallel

GearmanClient::addTaskHigh
GearmanClient::addTaskLow
GearmanClient


Add a low priority task to run in parallel

GearmanClient::addTaskHighBackground
GearmanClient::addTaskLowBackground
GearmanClient
PHP Manual

GearmanClient::addTaskLow

(PECL gearman >= 0.5.0)

GearmanClient::addTaskLow — Add a low priority task to run in parallel

说明

public GearmanTask GearmanClient::addTaskLow ( string $function_name , string $workload [, mixed &$context [, string $unique ]] )

Adds a low priority background task to be run in parallel with other tasks. Call this method for all the tasks to be run in parallel, then call GearmanClient::runTasks() to perform the work. Tasks with a low priority will be selected from the queue after those of normal or low priority.

参数

function_name

由程序自动执行的已注册函数。

workload

被处理的序列化数据。

context

与任务关联的应用程序上下文。

unique

用于标识特定任务的唯一性 ID。

返回值

A GearmanTask object or FALSE if the task could not be added.

范例

Example #1 A low priority task along with two normal tasks

A low priority task is included among two other tasks. A single worker is available, so that tasks are run one at a time, with the low priority task run last.

<?php

# create the gearman client
$gmc= new GearmanClient();

# add the default job server
$gmc->addServer();

# set the callback for when the job is complete
$gmc->setCompleteCallback("reverse_complete");

# add tasks, one of which is low priority
$task= $gmc->addTask("reverse", "Hello World!", null, "1");
$task= $gmc->addTaskLow("reverse", "!dlroW olleH", null, "2");
$task= $gmc->addTask("reverse", "Hello World!", null, "3");

if (! $gmc->runTasks())
{
    echo "ERROR " . $gmc->error() . "\n";
    exit;
}
echo "DONE\n";

function reverse_complete($task)
{
    echo "COMPLETE: " . $task->unique() . ", " . $task->data() . "\n";
}

?>

以上例程的输出类似于：

COMPLETE: 3, !dlroW olleH
COMPLETE: 1, !dlroW olleH
COMPLETE: 2, Hello World!
DONE

参见

  • GearmanClient::addTask() - Add a task to be run in parallel
  • GearmanClient::addTaskHigh() - Add a high priority task to run in parallel
  • GearmanClient::addTaskBackground() - Add a background task to be run in parallel
  • GearmanClient::addTaskHighBackground() - Add a high priority background task to be run in parallel
  • GearmanClient::addTaskLowBackground() - Add a low priority background task to be run in parallel
  • GearmanClient::runTasks() - Run a list of tasks in parallel

GearmanClient::addTaskHighBackground
GearmanClient::addTaskLowBackground
GearmanClient


Add a low priority background task to be run in parallel

GearmanClient::addTaskLow
GearmanClient::addTaskStatus
GearmanClient
PHP Manual

GearmanClient::addTaskLowBackground

(PECL gearman >= 0.5.0)

GearmanClient::addTaskLowBackground — Add a low priority background task to be run in parallel

说明

public GearmanTask GearmanClient::addTaskLowBackground ( string $function_name , string $workload [, mixed &$context [, string $unique ]] )

Adds a low priority background task to be run in parallel with other tasks. Call this method for all the tasks to be run in parallel, then call GearmanClient::runTasks() to perform the work. Tasks with a low priority will be selected from the queue after those of normal or high priority.

参数

function_name

由程序自动执行的已注册函数。

workload

被处理的序列化数据。

context

与任务关联的应用程序上下文。

unique

用于标识特定任务的唯一性 ID。

返回值

A GearmanTask object or FALSE if the task could not be added.

参见

  • GearmanClient::addTask() - Add a task to be run in parallel
  • GearmanClient::addTaskHigh() - Add a high priority task to run in parallel
  • GearmanClient::addTaskLow() - Add a low priority task to run in parallel
  • GearmanClient::addTaskBackground() - Add a background task to be run in parallel
  • GearmanClient::addTaskHighBackground() - Add a high priority background task to be run in parallel
  • GearmanClient::runTasks() - Run a list of tasks in parallel

GearmanClient::addTaskLow
GearmanClient::addTaskStatus
GearmanClient


Add a task to get status

GearmanClient::addTaskLowBackground
GearmanClient::clearCallbacks
GearmanClient
PHP Manual

GearmanClient::addTaskStatus

(PECL gearman >= 0.5.0)

GearmanClient::addTaskStatus — Add a task to get status

说明

public GearmanTask GearmanClient::addTaskStatus ( string $job_handle [, string &$context ] )

Used to request status information from the Gearman server, which will call the specified status callback (set using GearmanClient::setStatusCallback()).

参数

job_handle

The job handle for the task to get status for

context

Data to be passed to the status callback, generally a reference to an array or object

返回值

A GearmanTask object.

范例

Example #1 Monitor completion of multiple background tasks

An artificial delay is introduced in the worker in this example to simulate a long running process. There is only one worker running for this example.

<?php

/* create our object */
$gmclient= new GearmanClient();

/* add the default server */
$gmclient->addServer();

/* start some background jobs and save the handles */
$handles = array();
$handles[0] = $gmclient->doBackground("reverse", "Hello World!");
$handles[1] = $gmclient->doBackground("reverse", "!dlroW olleH");

$gmclient->setStatusCallback("reverse_status");

/* Poll the server to see when those background jobs finish; */
/* a better method would be to use event callbacks */
do
{
   /* Use the context variable to track how many tasks have completed */
   $done = 0;
   $gmclient->addTaskStatus($handles[0], &$done);
   $gmclient->addTaskStatus($handles[1], &$done);
   $gmclient->runTasks();
   echo "Done: $done\n";
   sleep(1);
}
while ($done != 2);

function reverse_status($task, $done)
{
   if (!$task->isKnown())
      $done++;
}

?>

以上例程的输出类似于：

Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 2

参见

  • GearmanClient::setStatusCallback() - Set a callback for collecting task status

GearmanClient::addTaskLowBackground
GearmanClient::clearCallbacks
GearmanClient


Clear all task callback functions

GearmanClient::addTaskStatus
GearmanClient::clone
GearmanClient
PHP Manual

GearmanClient::clearCallbacks

(PECL gearman >= 0.5.0)

GearmanClient::clearCallbacks — Clear all task callback functions

说明

public bool GearmanClient::clearCallbacks ( void )

Clears all the task callback functions that have previously been set.

参数

此函数没有参数。

返回值

Always returns TRUE.

参见

  • GearmanClient::setDataCallback() - Callback function when there is a data packet for a task
  • GearmanClient::setCompleteCallback() - Set a function to be called on task completion
  • GearmanClient::setCreatedCallback() - Set a callback for when a task is queued
  • GearmanClient::setExceptionCallback() - Set a callback for worker exceptions
  • GearmanClient::setFailCallback() - Set callback for job failure
  • GearmanClient::setStatusCallback() - Set a callback for collecting task status
  • GearmanClient::setWarningCallback() - Set a callback for worker warnings
  • GearmanClient::setWorkloadCallback() - Set a callback for accepting incremental data updates

GearmanClient::addTaskStatus
GearmanClient::clone
GearmanClient


Create a copy of a GearmanClient object

GearmanClient::clearCallbacks
GearmanClient::__construct
GearmanClient
PHP Manual

GearmanClient::clone

(PECL gearman >= 0.5.0)

GearmanClient::clone — Create a copy of a GearmanClient object

说明

public GearmanClient GearmanClient::clone ( void )

Creates a copy of a GearmanClient object.

参数

此函数没有参数。

返回值

A GearmanClient on success, FALSE on failure.

GearmanClient::clearCallbacks
GearmanClient::__construct
GearmanClient


Create a GearmanClient instance

GearmanClient::clone
GearmanClient::context
GearmanClient
PHP Manual

GearmanClient::__construct

(PECL gearman >= 0.5.0)

GearmanClient::__construct — Create a GearmanClient instance

说明

public GearmanClient::__construct ( void )

Creates a GearmanClient instance representing a client that connects to the job server and submits tasks to complete.

参数

此函数没有参数。

返回值

A GearmanClient object.

参见

  • GearmanClient::clone() - Create a copy of a GearmanClient object

GearmanClient::clone
GearmanClient::context
GearmanClient


Get the application context

GearmanClient::__construct
GearmanClient::data
GearmanClient
PHP Manual

GearmanClient::context

(PECL gearman >= 0.6.0)

GearmanClient::context — Get the application context

说明

public string GearmanClient::context ( void )

Get the application context previously set with GearmanClient::setContext().

参数

此函数没有参数。

返回值

The same context data structure set with GearmanClient::setContext()

参见

  • GearmanClient::setContext() - Set application context

GearmanClient::__construct
GearmanClient::data
GearmanClient


Get the application data (deprecated)

GearmanClient::context
GearmanClient::do
GearmanClient
PHP Manual

GearmanClient::data

(PECL gearman <= 0.5.0)

GearmanClient::data — Get the application data (deprecated)

说明

public string GearmanClient::data ( void )

Get the application data previously set with GearmanClient::setData().

Note:

This method was replaced by GearmanClient::setContext() in the 0.6.0 release of the Gearman extension.

参数

此函数没有参数。

返回值

The same string data set with GearmanClient::setData()

参见

  • GearmanClient::setData() - Set application data (deprecated)

GearmanClient::context
GearmanClient::do
GearmanClient


Run a single task and return a result [deprecated]

GearmanClient::data
GearmanClient::doBackground
GearmanClient
PHP Manual

GearmanClient::do

(PECL gearman >= 0.5.0)

GearmanClient::do — Run a single task and return a result [deprecated]

说明

public string GearmanClient::do ( string $function_name , string $workload [, string $unique ] )

The GearmanClient::do() method is deprecated as of pecl/gearman 1.0.0. Use GearmanClient::doNormal().

参数

function_name

由程序自动执行的已注册函数。

workload

被处理的序列化数据。

unique

用于标识特定任务的唯一性 ID。

返回值

A string representing the results of running a task.

范例

Example #1 Simple job submission with immediate return

<?php

# Client code

echo "Starting\n";

# Create our client object.
$gmclient= new GearmanClient();

# Add default server (localhost).
$gmclient->addServer();

echo "Sending job\n";

$result = $gmclient->doNormal("reverse", "Hello!");

echo "Success: $result\n";

?>
<?php

echo "Starting\n";

# Create our worker object.
$gmworker= new GearmanWorker();

# Add default server (localhost).
$gmworker->addServer();

# Register function "reverse" with the server. Change the worker function to
# "reverse_fn_fast" for a faster worker with no output.
$gmworker->addFunction("reverse", "reverse_fn");

print "Waiting for job...\n";
while($gmworker->work())
{
  if ($gmworker->returnCode() != GEARMAN_SUCCESS)
  {
    echo "return_code: " . $gmworker->returnCode() . "\n";
    break;
  }
}

function reverse_fn($job)
{
  return strrev($job->workload());
}

?>

以上例程的输出类似于：

Starting
Sending job
Success: !olleH

Example #2 Submitting a job and retrieving incremental status

A job is submitted and the script loops to retrieve status information. The worker has an artificial delay which results in a long running job and sends status and data as processing occurs. Each subsequent call to GearmanClient::do() produces status information on the running job.

<?php

# Client code

# Create our client object.
$gmclient= new GearmanClient();

# Add default server (localhost).
$gmclient->addServer();

echo "Sending job\n";

# Send reverse job
do
{
  $result = $gmclient->doNormal("reverse", "Hello!");
  # Check for various return packets and errors.

  switch($gmclient->returnCode())
  {
    case GEARMAN_WORK_DATA:
      echo "Data: $result\n";
      break;
    case GEARMAN_WORK_STATUS:
      list($numerator, $denominator)= $gmclient->doStatus();
      echo "Status: $numerator/$denominator complete\n";
      break;
    case GEARMAN_WORK_FAIL:
      echo "Failed\n";
      exit;
    case GEARMAN_SUCCESS:
      break;
    default:
      echo "RET: " . $gmclient->returnCode() . "\n";
      echo "Error: " . $gmclient->error() . "\n";
      echo "Errno: " . $gmclient->getErrno() . "\n";
      exit;
  }
}
while($gmclient->returnCode() != GEARMAN_SUCCESS);

echo "Success: $result\n";

?>
<?php

# Worker code

echo "Starting\n";

# Create our worker object.
$gmworker= new GearmanWorker();

# Add default server (localhost).
$gmworker->addServer();

# Register function "reverse" with the server.
$gmworker->addFunction("reverse", "reverse_fn");

print "Waiting for job...\n";
while($gmworker->work())
{
  if ($gmworker->returnCode() != GEARMAN_SUCCESS)
  {
    echo "return_code: " . $gmworker->returnCode() . "\n";
    break;
  }
}

function reverse_fn($job)
{
  echo "Received job: " . $job->handle() . "\n";

  $workload = $job->workload();
  $workload_size = $job->workloadSize();

  echo "Workload: $workload ($workload_size)\n";

  # This status loop is not needed, just showing how it works
  for ($x= 0; $x < $workload_size; $x++)
  {
    echo "Sending status: " + $x + 1 . "/$workload_size complete\n";
    $job->sendStatus($x+1, $workload_size);
    $job->sendData(substr($workload, $x, 1));
    sleep(1);
  }

  $result= strrev($workload);
  echo "Result: $result\n";

  # Return what we want to send back to the client.
  return $result;
}

?>

以上例程的输出类似于：

Worker output:

Starting
Waiting for job...
Received job: H:foo.local:106
Workload: Hello! (6)
1/6 complete
2/6 complete
3/6 complete
4/6 complete
5/6 complete
6/6 complete
Result: !olleH

Client output:

Starting
Sending job
Status: 1/6 complete
Data: H
Status: 2/6 complete
Data: e
Status: 3/6 complete
Data: l
Status: 4/6 complete
Data: l
Status: 5/6 complete
Data: o
Status: 6/6 complete
Data: !
Success: !olleH

参见

  • GearmanClient::doHigh() - Run a single high priority task
  • GearmanClient::doLow() - Run a single low priority task
  • GearmanClient::doBackground() - Run a task in the background
  • GearmanClient::doHighBackground() - Run a high priority task in the background
  • GearmanClient::doLowBackground() - Run a low priority task in the background

GearmanClient::data
GearmanClient::doBackground
GearmanClient


Run a task in the background

GearmanClient::do
GearmanClient::doHigh
GearmanClient
PHP Manual

GearmanClient::doBackground

(PECL gearman >= 0.5.0)

GearmanClient::doBackground — Run a task in the background

说明

public string GearmanClient::doBackground ( string $function_name , string $workload [, string $unique ] )

Runs a task in the background, returning a job handle which can be used to get the status of the running task.

参数

function_name

由程序自动执行的已注册函数。

workload

被处理的序列化数据。

unique

用于标识特定任务的唯一性 ID。

返回值

The job handle for the submitted task.

范例

Example #1 Submit and monitor a background job

The worker in this example has an artificial delay introduced to mimic a long running job. The client script periodically checks the status of the running job.

<?php

/* create our object */
$gmclient= new GearmanClient();

/* add the default server */
$gmclient->addServer();

/* run reverse client */
$job_handle = $gmclient->doBackground("reverse", "this is a test");

if ($gmclient->returnCode() != GEARMAN_SUCCESS)
{
  echo "bad return code\n";
  exit;
}

$done = false;
do
{
   sleep(3);
   $stat = $gmclient->jobStatus($job_handle);
   if (!$stat[0]) // the job is known so it is not done
      $done = true;
   echo "Running: " . ($stat[1] ? "true" : "false") . ", numerator: " . $stat[2] . ", denomintor: " . $stat[3] . "\n";
}
while(!$done);

echo "done!\n";

?>

以上例程的输出类似于：

Running: true, numerator: 3, denomintor: 14
Running: true, numerator: 6, denomintor: 14
Running: true, numerator: 9, denomintor: 14
Running: true, numerator: 12, denomintor: 14
Running: false, numerator: 0, denomintor: 0
done!

参见

  • GearmanClient::doNormal() - Run a single task and return a result
  • GearmanClient::doHigh() - Run a single high priority task
  • GearmanClient::doLow() - Run a single low priority task
  • GearmanClient::doHighBackground() - Run a high priority task in the background
  • GearmanClient::doLowBackground() - Run a low priority task in the background

GearmanClient::do
GearmanClient::doHigh
GearmanClient


Run a single high priority task

GearmanClient::doBackground
GearmanClient::doHighBackground
GearmanClient
PHP Manual

GearmanClient::doHigh

(PECL gearman >= 0.5.0)

GearmanClient::doHigh — Run a single high priority task

说明

public string GearmanClient::doHigh ( string $function_name , string $workload [, string $unique ] )

Runs a single high priority task and returns a string representation of the result. It is up to the GearmanClient and GearmanWorker to agree on the format of the result. High priority tasks will get precedence over normal and low priority tasks in the job queue.

参数

function_name

由程序自动执行的已注册函数。

workload

被处理的序列化数据。

unique

用于标识特定任务的唯一性 ID。

返回值

A string representing the results of running a task.

参见

  • GearmanClient::doNormal() - Run a single task and return a result
  • GearmanClient::doLow() - Run a single low priority task
  • GearmanClient::doBackground() - Run a task in the background
  • GearmanClient::doHighBackground() - Run a high priority task in the background
  • GearmanClient::doLowBackground() - Run a low priority task in the background

GearmanClient::doBackground
GearmanClient::doHighBackground
GearmanClient


Run a high priority task in the background

GearmanClient::doHigh
GearmanClient::doJobHandle
GearmanClient
PHP Manual

GearmanClient::doHighBackground

(PECL gearman >= 0.5.0)

GearmanClient::doHighBackground — Run a high priority task in the background

说明

public string GearmanClient::doHighBackground ( string $function_name , string $workload [, string $unique ] )

Runs a high priority task in the background, returning a job handle which can be used to get the status of the running task. High priority tasks take precedence over normal and low priority tasks in the job queue.

参数

function_name

由程序自动执行的已注册函数。

workload

被处理的序列化数据。

unique

用于标识特定任务的唯一性 ID。

返回值

The job handle for the submitted task.

参见

  • GearmanClient::doNormal() - Run a single task and return a result
  • GearmanClient::doHigh() - Run a single high priority task
  • GearmanClient::doLow() - Run a single low priority task
  • GearmanClient::doBackground() - Run a task in the background
  • GearmanClient::doLowBackground() - Run a low priority task in the background

GearmanClient::doHigh
GearmanClient::doJobHandle
GearmanClient


Get the job handle for the running task

GearmanClient::doHighBackground
GearmanClient::doLow
GearmanClient
PHP Manual

GearmanClient::doJobHandle

(PECL gearman >= 0.5.0)

GearmanClient::doJobHandle — Get the job handle for the running task

说明

public string GearmanClient::doJobHandle ( void )

Gets that job handle for a running task. This should be used between repeated GearmanClient::doNormal() calls. The job handle can then be used to get information on the task.

参数

此函数没有参数。

返回值

The job handle for the running task.

参见

  • GearmanClient::jobStatus() - Get the status of a background job

GearmanClient::doHighBackground
GearmanClient::doLow
GearmanClient


Run a single low priority task

GearmanClient::doJobHandle
GearmanClient::doLowBackground
GearmanClient
PHP Manual

GearmanClient::doLow

(PECL gearman >= 0.5.0)

GearmanClient::doLow — Run a single low priority task

说明

public string GearmanClient::doLow ( string $function_name , string $workload [, string $unique ] )

Runs a single low priority task and returns a string representation of the result. It is up to the GearmanClient and GearmanWorker to agree on the format of the result. Normal and high priority tasks will get precedence over low priority tasks in the job queue.

参数

function_name

由程序自动执行的已注册函数。

workload

被处理的序列化数据。

unique

用于标识特定任务的唯一性 ID。

返回值

A string representing the results of running a task.

参见

  • GearmanClient::doNormal() - Run a single task and return a result
  • GearmanClient::doHigh() - Run a single high priority task
  • GearmanClient::doBackground() - Run a task in the background
  • GearmanClient::doHighBackground() - Run a high priority task in the background
  • GearmanClient::doLowBackground() - Run a low priority task in the background

GearmanClient::doJobHandle
GearmanClient::doLowBackground
GearmanClient


Run a low priority task in the background

GearmanClient::doLow
GearmanClient::doNormal
GearmanClient
PHP Manual

GearmanClient::doLowBackground

(PECL gearman >= 0.5.0)

GearmanClient::doLowBackground — Run a low priority task in the background

说明

public string GearmanClient::doLowBackground ( string $function_name , string $workload [, string $unique ] )

Runs a low priority task in the background, returning a job handle which can be used to get the status of the running task. Normal and high priority tasks take precedence over low priority tasks in the job queue.

参数

function_name

由程序自动执行的已注册函数。

workload

被处理的序列化数据。

unique

用于标识特定任务的唯一性 ID。

返回值

The job handle for the submitted task.

参见

  • GearmanClient::doNormal() - Run a single task and return a result
  • GearmanClient::doHigh() - Run a single high priority task
  • GearmanClient::doLow() - Run a single low priority task
  • GearmanClient::doBackground() - Run a task in the background
  • GearmanClient::doHighBackground() - Run a high priority task in the background

GearmanClient::doLow
GearmanClient::doNormal
GearmanClient


Run a single task and return a result

GearmanClient::doLowBackground
GearmanClient::doStatus
GearmanClient
PHP Manual

GearmanClient::doNormal

(No version information available, might only be in Git)

GearmanClient::doNormal — Run a single task and return a result

说明

public string GearmanClient::doNormal ( string $function_name , string $workload [, string $unique ] )

Runs a single task and returns a string representation of the result. It is up to the GearmanClient and GearmanWorker to agree on the format of the result.

参数

function_name

由程序自动执行的已注册函数。

workload

被处理的序列化数据。

unique

用于标识特定任务的唯一性 ID。

返回值

A string representing the results of running a task.

范例

Example #1 Simple job submission with immediate return

<?php

?>
<?php

# Client code

echo "Starting\n";

# Create our client object.
$gmclient= new GearmanClient();

# Add default server (localhost).
$gmclient->addServer();

echo "Sending job\n";

$result = $gmclient->doNormal("reverse", "Hello!");

echo "Success: $result\n";

?>
<?php

echo "Starting\n";

# Create our worker object.
$gmworker= new GearmanWorker();

# Add default server (localhost).
$gmworker->addServer();

# Register function "reverse" with the server. Change the worker function to
# "reverse_fn_fast" for a faster worker with no output.
$gmworker->addFunction("reverse", "reverse_fn");

print "Waiting for job...\n";
while($gmworker->work())
{
  if ($gmworker->returnCode() != GEARMAN_SUCCESS)
  {
    echo "return_code: " . $gmworker->returnCode() . "\n";
    break;
  }
}

function reverse_fn($job)
{
  return strrev($job->workload());
}

?>

以上例程的输出类似于：

Starting
Sending job
Success: !olleH

Example #2 Submitting a job and retrieving incremental status

A job is submitted and the script loops to retrieve status information. The worker has an artificial delay which results in a long running job and sends status and data as processing occurs. Each subsequent call to GearmanClient::doNormal() produces status information on the running job.

<?php

# Client code

# Create our client object.
$gmclient= new GearmanClient();

# Add default server (localhost).
$gmclient->addServer();

echo "Sending job\n";

# Send reverse job
do
{
  $result = $gmclient->doNormal("reverse", "Hello!");
  # Check for various return packets and errors.

  switch($gmclient->returnCode())
  {
    case GEARMAN_WORK_DATA:
      echo "Data: $result\n";
      break;
    case GEARMAN_WORK_STATUS:
      list($numerator, $denominator)= $gmclient->doStatus();
      echo "Status: $numerator/$denominator complete\n";
      break;
    case GEARMAN_WORK_FAIL:
      echo "Failed\n";
      exit;
    case GEARMAN_SUCCESS:
      break;
    default:
      echo "RET: " . $gmclient->returnCode() . "\n";
      echo "Error: " . $gmclient->error() . "\n";
      echo "Errno: " . $gmclient->getErrno() . "\n";
      exit;
  }
}
while($gmclient->returnCode() != GEARMAN_SUCCESS);

echo "Success: $result\n";

?>
<?php

# Worker code

echo "Starting\n";

# Create our worker object.
$gmworker= new GearmanWorker();

# Add default server (localhost).
$gmworker->addServer();

# Register function "reverse" with the server.
$gmworker->addFunction("reverse", "reverse_fn");

print "Waiting for job...\n";
while($gmworker->work())
{
  if ($gmworker->returnCode() != GEARMAN_SUCCESS)
  {
    echo "return_code: " . $gmworker->returnCode() . "\n";
    break;
  }
}

function reverse_fn($job)
{
  echo "Received job: " . $job->handle() . "\n";

  $workload = $job->workload();
  $workload_size = $job->workloadSize();

  echo "Workload: $workload ($workload_size)\n";

  # This status loop is not needed, just showing how it works
  for ($x= 0; $x < $workload_size; $x++)
  {
    echo "Sending status: " + $x + 1 . "/$workload_size complete\n";
    $job->sendStatus($x+1, $workload_size);
    $job->sendData(substr($workload, $x, 1));
    sleep(1);
  }

  $result= strrev($workload);
  echo "Result: $result\n";

  # Return what we want to send back to the client.
  return $result;
}

?>

以上例程的输出类似于：

Worker output:

Starting
Waiting for job...
Received job: H:foo.local:106
Workload: Hello! (6)
1/6 complete
2/6 complete
3/6 complete
4/6 complete
5/6 complete
6/6 complete
Result: !olleH

Client output:

Starting
Sending job
Status: 1/6 complete
Data: H
Status: 2/6 complete
Data: e
Status: 3/6 complete
Data: l
Status: 4/6 complete
Data: l
Status: 5/6 complete
Data: o
Status: 6/6 complete
Data: !
Success: !olleH

参见

  • GearmanClient::doHigh() - Run a single high priority task
  • GearmanClient::doLow() - Run a single low priority task
  • GearmanClient::doBackground() - Run a task in the background
  • GearmanClient::doHighBackground() - Run a high priority task in the background
  • GearmanClient::doLowBackground() - Run a low priority task in the background

GearmanClient::doLowBackground
GearmanClient::doStatus
GearmanClient


Get the status for the running task

GearmanClient::doNormal
GearmanClient::echo
GearmanClient
PHP Manual

GearmanClient::doStatus

(PECL gearman >= 0.5.0)

GearmanClient::doStatus — Get the status for the running task

说明

public array GearmanClient::doStatus ( void )

Returns the status for the running task. This should be used between repeated GearmanClient::doNormal() calls.

参数

此函数没有参数。

返回值

An array representing the percentage completion given as a fraction, with the first element the numerator and the second element the denomintor.

范例

Example #1 Get the status of a long running job

The worker in this example has an artificial delay added during processing of the string to be reversed. After each delay it calls GearmanJob::status() which the client then picks up.

<?php

echo "Starting\n";

# Create our client object.
$gmclient= new GearmanClient();

# Add default server (localhost).
$gmclient->addServer();

echo "Sending job\n";

# Send reverse job
do
{
  $result = $gmclient->doNormal("reverse", "Hello!");

  # Check for various return packets and errors.
  switch($gmclient->returnCode())
  {
    case GEARMAN_WORK_DATA:
      break;
    case GEARMAN_WORK_STATUS:
      # get the current job status
      list($numerator, $denominator)= $gmclient->doStatus();
      echo "Status: $numerator/$denominator complete\n";
      break;
    case GEARMAN_WORK_FAIL:
      echo "Failed\n";
      exit;
    case GEARMAN_SUCCESS:
      break;
    default:
      echo "RET: " . $gmclient->returnCode() . "\n";
      exit;
  }
}
while($gmclient->returnCode() != GEARMAN_SUCCESS);

echo "Success: $result\n";

?>

以上例程的输出类似于：

Starting
Sending job
Status: 1/6 complete
Status: 2/6 complete
Status: 3/6 complete
Status: 4/6 complete
Status: 5/6 complete
Status: 6/6 complete
Success: !olleH

参见

  • GearmanClient::doNormal() - Run a single task and return a result
  • GearmanJob::status() - Send status (deprecated)

GearmanClient::doNormal
GearmanClient::echo
GearmanClient


Send data to all job servers to see if they echo it back [deprecated]

GearmanClient::doStatus
GearmanClient::error
GearmanClient
PHP Manual

GearmanClient::echo

(PECL gearman >= 0.5.0)

GearmanClient::echo — Send data to all job servers to see if they echo it back [deprecated]

说明

public bool GearmanClient::echo ( string $workload )

The GearmanClient::echo() method is deprecated as of pecl/gearman 1.0.0. Use GearmanClient::ping().

参数

workload

Some arbitrary serialized data to be echo back

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

GearmanClient::doStatus
GearmanClient::error
GearmanClient


Returns an error string for the last error encountered.

GearmanClient::echo
GearmanClient::getErrno
GearmanClient
PHP Manual

GearmanClient::error

(PECL gearman >= 0.5.0)

GearmanClient::error — Returns an error string for the last error encountered.

说明

public string GearmanClient::error ( void )

Returns an error string for the last error encountered.

参数

此函数没有参数。

返回值

A human readable error string.

参见

  • GearmanClient::getErrno() - Get an errno value

GearmanClient::echo
GearmanClient::getErrno
GearmanClient


Get an errno value

GearmanClient::error
GearmanClient::jobStatus
GearmanClient
PHP Manual

GearmanClient::getErrno

(PECL gearman >= 0.5.0)

GearmanClient::getErrno — Get an errno value

说明

public int GearmanClient::getErrno ( void )

Value of errno in the case of a GEARMAN_ERRNO return value.

参数

此函数没有参数。

返回值

A valid Gearman errno.

参见

  • GearmanClient::error() - Returns an error string for the last error encountered.

GearmanClient::error
GearmanClient::jobStatus
GearmanClient


Get the status of a background job

GearmanClient::getErrno
GearmanClient::ping
GearmanClient
PHP Manual

GearmanClient::jobStatus

gearman_job_status

(PECL gearman >= 0.5.0)

GearmanClient::jobStatus -- gearman_job_status — Get the status of a background job

说明

面向对象风格 (method):

public array GearmanClient::jobStatus ( string $job_handle )

Gets the status for a background job given a job handle. The status information will specify whether the job is known, whether the job is currently running, and the percentage completion.

参数

job_handle

由 Gearman 服务器指派的工作句柄。

返回值

An array containing status information for the job corresponding to the supplied job handle. The first array element is a boolean indicating whether the job is even known, the second is a boolean indicating whether the job is still running, and the third and fourth elements correspond to the numerator and denominator of the fractional completion percentage, respectively.

范例

Example #1 Monitor the status of a long running background job

<?php

/* create our object */
$gmclient= new GearmanClient();

/* add the default server */
$gmclient->addServer();

/* run reverse client */
$job_handle = $gmclient->doBackground("reverse", "this is a test");

if ($gmclient->returnCode() != GEARMAN_SUCCESS)
{
  echo "bad return code\n";
  exit;
}

$done = false;
do
{
   sleep(3);
   $stat = $gmclient->jobStatus($job_handle);
   if (!$stat[0]) // the job is known so it is not done
      $done = true;
   echo "Running: " . ($stat[1] ? "true" : "false") . ", numerator: " . $stat[2] . ", denomintor: " . $stat[3] . "\n";
}
while(!$done);

echo "done!\n";

?>

以上例程的输出类似于：

Running: true, numerator: 3, denomintor: 14
Running: true, numerator: 6, denomintor: 14
Running: true, numerator: 9, denomintor: 14
Running: true, numerator: 12, denomintor: 14
Running: false, numerator: 0, denomintor: 0
done!

参见

  • GearmanClient::doStatus() - Get the status for the running task

GearmanClient::getErrno
GearmanClient::ping
GearmanClient


Send data to all job servers to see if they echo it back

GearmanClient::jobStatus
GearmanClient::removeOptions
GearmanClient
PHP Manual

GearmanClient::ping

(No version information available, might only be in Git)

GearmanClient::ping — Send data to all job servers to see if they echo it back

说明

public bool GearmanClient::ping ( string $workload )

Sends some arbitrary data to all job servers to see if they echo it back. The data sent is not used or processed in any other way. Primarily used for testing and debugging.

参数

workload

Some arbitrary serialized data to be echo back

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

GearmanClient::jobStatus
GearmanClient::removeOptions
GearmanClient


Remove client options

GearmanClient::ping
GearmanClient::returnCode
GearmanClient
PHP Manual

GearmanClient::removeOptions

(PECL gearman >= 0.6.0)

GearmanClient::removeOptions — Remove client options

说明

public bool GearmanClient::removeOptions ( int $options )

Removes (unsets) one or more options.

参数

options

The options to be removed (unset)

返回值

Always returns TRUE.

GearmanClient::ping
GearmanClient::returnCode
GearmanClient


Get the last Gearman return code

GearmanClient::removeOptions
GearmanClient::runTasks
GearmanClient
PHP Manual

GearmanClient::returnCode

(PECL gearman >= 0.5.0)

GearmanClient::returnCode — Get the last Gearman return code

说明

public int GearmanClient::returnCode ( void )

Returns the last Gearman return code.

参数

此函数没有参数。

返回值

A valid Gearman return code.

GearmanClient::removeOptions
GearmanClient::runTasks
GearmanClient


Run a list of tasks in parallel

GearmanClient::returnCode
GearmanClient::setClientCallback
GearmanClient
PHP Manual

GearmanClient::runTasks

(PECL gearman >= 0.5.0)

GearmanClient::runTasks — Run a list of tasks in parallel

说明

public bool GearmanClient::runTasks ( void )

For a set of tasks previously added with GearmanClient::addTask(), GearmanClient::addTaskHigh(), GearmanClient::addTaskLow(), GearmanClient::addTaskBackground(), GearmanClient::addTaskHighBackground(), or GearmanClient::addTaskLowBackground(), this call starts running the tasks in parallel.

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanClient::addTask() - Add a task to be run in parallel

GearmanClient::returnCode
GearmanClient::setClientCallback
GearmanClient


Callback function when there is a data packet for a task (deprecated)

GearmanClient::runTasks
GearmanClient::setCompleteCallback
GearmanClient
PHP Manual

GearmanClient::setClientCallback

(PECL gearman <= 0.5.0)

GearmanClient::setClientCallback — Callback function when there is a data packet for a task (deprecated)

说明

public void GearmanClient::setClientCallback ( callable $callback )

Sets the callback function for accepting data packets for a task. The callback function should take a single argument, a GearmanTask object.

Note:

This method has been replaced by GearmanClient::setDataCallback() in the 0.6.0 release of the Gearman extension.

参数

callback

A function or method to call

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanClient::setCompleteCallback() - Set a function to be called on task completion
  • GearmanClient::setCreatedCallback() - Set a callback for when a task is queued
  • GearmanClient::setDataCallback() - Callback function when there is a data packet for a task
  • GearmanClient::setExceptionCallback() - Set a callback for worker exceptions
  • GearmanClient::setFailCallback() - Set callback for job failure
  • GearmanClient::setStatusCallback() - Set a callback for collecting task status
  • GearmanClient::setWarningCallback() - Set a callback for worker warnings
  • GearmanClient::setWorkloadCallback() - Set a callback for accepting incremental data updates

GearmanClient::runTasks
GearmanClient::setCompleteCallback
GearmanClient


Set a function to be called on task completion

GearmanClient::setClientCallback
GearmanClient::setContext
GearmanClient
PHP Manual

GearmanClient::setCompleteCallback

(PECL gearman >= 0.5.0)

GearmanClient::setCompleteCallback — Set a function to be called on task completion

说明

public bool GearmanClient::setCompleteCallback ( callable $callback )

Use to set a function to be called when a GearmanTask is completed, or when GearmanJob::sendComplete() is invoked by a worker (whichever happens first).

This callback executes only when executing a GearmanTask using GearmanClient::runTasks(). It is not used for individual jobs.

参数

callback

A function to be called

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanClient::setDataCallback() - Callback function when there is a data packet for a task
  • GearmanClient::setCreatedCallback() - Set a callback for when a task is queued
  • GearmanClient::setExceptionCallback() - Set a callback for worker exceptions
  • GearmanClient::setFailCallback() - Set callback for job failure
  • GearmanClient::setStatusCallback() - Set a callback for collecting task status
  • GearmanClient::setWarningCallback() - Set a callback for worker warnings
  • GearmanClient::setWorkloadCallback() - Set a callback for accepting incremental data updates

GearmanClient::setClientCallback
GearmanClient::setContext
GearmanClient


Set application context

GearmanClient::setCompleteCallback
GearmanClient::setCreatedCallback
GearmanClient
PHP Manual

GearmanClient::setContext

(PECL gearman >= 0.6.0)

GearmanClient::setContext — Set application context

说明

public bool GearmanClient::setContext ( string $context )

Sets an arbitrary string to provide application context that can later be retrieved by GearmanClient::context().

参数

context

Arbitrary context data

返回值

Always returns TRUE.

参见

  • GearmanClient::context() - Get the application context

GearmanClient::setCompleteCallback
GearmanClient::setCreatedCallback
GearmanClient


Set a callback for when a task is queued

GearmanClient::setContext
GearmanClient::setData
GearmanClient
PHP Manual

GearmanClient::setCreatedCallback

(PECL gearman >= 0.5.0)

GearmanClient::setCreatedCallback — Set a callback for when a task is queued

说明

public bool GearmanClient::setCreatedCallback ( string $callback )

Sets a function to be called when a task is received and queued by the Gearman job server. The callback should accept a single argument, a GearmanTask oject.

参数

callback

A function to call

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanClient::setDataCallback() - Callback function when there is a data packet for a task
  • GearmanClient::setCompleteCallback() - Set a function to be called on task completion
  • GearmanClient::setExceptionCallback() - Set a callback for worker exceptions
  • GearmanClient::setFailCallback() - Set callback for job failure
  • GearmanClient::setStatusCallback() - Set a callback for collecting task status
  • GearmanClient::setWarningCallback() - Set a callback for worker warnings
  • GearmanClient::setWorkloadCallback() - Set a callback for accepting incremental data updates

GearmanClient::setContext
GearmanClient::setData
GearmanClient


Set application data (deprecated)

GearmanClient::setCreatedCallback
GearmanClient::setDataCallback
GearmanClient
PHP Manual

GearmanClient::setData

(PECL gearman <= 0.5.0)

GearmanClient::setData — Set application data (deprecated)

说明

public bool GearmanClient::setData ( string $data )

Sets some arbitrary application data that can later be retrieved by GearmanClient::data().

Note:

This method has been replaced by GearmanCient::setContext() in the 0.6.0 release of the Gearman extension.

参数

data

返回值

Always returns TRUE.

参见

  • GearmanClient::data() - Get the application data (deprecated)

GearmanClient::setCreatedCallback
GearmanClient::setDataCallback
GearmanClient


Callback function when there is a data packet for a task

GearmanClient::setData
GearmanClient::setExceptionCallback
GearmanClient
PHP Manual

GearmanClient::setDataCallback

(PECL gearman >= 0.6.0)

GearmanClient::setDataCallback — Callback function when there is a data packet for a task

说明

public bool GearmanClient::setDataCallback ( callable $callback )

Sets the callback function for accepting data packets for a task. The callback function should take a single argument, a GearmanTask object.

参数

callback

A function or method to call

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanClient::setCompleteCallback() - Set a function to be called on task completion
  • GearmanClient::setCreatedCallback() - Set a callback for when a task is queued
  • GearmanClient::setExceptionCallback() - Set a callback for worker exceptions
  • GearmanClient::setFailCallback() - Set callback for job failure
  • GearmanClient::setStatusCallback() - Set a callback for collecting task status
  • GearmanClient::setWarningCallback() - Set a callback for worker warnings
  • GearmanClient::setWorkloadCallback() - Set a callback for accepting incremental data updates

GearmanClient::setData
GearmanClient::setExceptionCallback
GearmanClient


Set a callback for worker exceptions

GearmanClient::setDataCallback
GearmanClient::setFailCallback
GearmanClient
PHP Manual

GearmanClient::setExceptionCallback

(PECL gearman >= 0.5.0)

GearmanClient::setExceptionCallback — Set a callback for worker exceptions

说明

public bool GearmanClient::setExceptionCallback ( callable $callback )

Specifies a function to call when a worker for a task sends an exception.

参数

callback

Function to call when the worker throws an exception

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanClient::setDataCallback() - Callback function when there is a data packet for a task
  • GearmanClient::setCompleteCallback() - Set a function to be called on task completion
  • GearmanClient::setCreatedCallback() - Set a callback for when a task is queued
  • GearmanClient::setFailCallback() - Set callback for job failure
  • GearmanClient::setStatusCallback() - Set a callback for collecting task status
  • GearmanClient::setWarningCallback() - Set a callback for worker warnings
  • GearmanClient::setWorkloadCallback() - Set a callback for accepting incremental data updates

GearmanClient::setDataCallback
GearmanClient::setFailCallback
GearmanClient


Set callback for job failure

GearmanClient::setExceptionCallback
GearmanClient::setOptions
GearmanClient
PHP Manual

GearmanClient::setFailCallback

(PECL gearman >= 0.5.0)

GearmanClient::setFailCallback — Set callback for job failure

说明

public bool GearmanClient::setFailCallback ( callable $callback )

Sets the callback function to be used when a task does not complete successfully. The function should accept a single argument, a GearmanTask object.

参数

callback

A function to call

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanClient::setDataCallback() - Callback function when there is a data packet for a task
  • GearmanClient::setCompleteCallback() - Set a function to be called on task completion
  • GearmanClient::setCreatedCallback() - Set a callback for when a task is queued
  • GearmanClient::setExceptionCallback() - Set a callback for worker exceptions
  • GearmanClient::setStatusCallback() - Set a callback for collecting task status
  • GearmanClient::setWarningCallback() - Set a callback for worker warnings
  • GearmanClient::setWorkloadCallback() - Set a callback for accepting incremental data updates

GearmanClient::setExceptionCallback
GearmanClient::setOptions
GearmanClient


Set client options

GearmanClient::setFailCallback
GearmanClient::setStatusCallback
GearmanClient
PHP Manual

GearmanClient::setOptions

(PECL gearman >= 0.5.0)

GearmanClient::setOptions — Set client options

说明

public bool GearmanClient::setOptions ( int $options )

Sets one or more client options.

参数

options

The options to be set

返回值

Always returns TRUE.

GearmanClient::setFailCallback
GearmanClient::setStatusCallback
GearmanClient


Set a callback for collecting task status

GearmanClient::setOptions
GearmanClient::setTimeout
GearmanClient
PHP Manual

GearmanClient::setStatusCallback

(PECL gearman >= 0.5.0)

GearmanClient::setStatusCallback — Set a callback for collecting task status

说明

public bool GearmanClient::setStatusCallback ( callable $callback )

Sets a callback function used for getting updated status information from a worker. The function should accept a single argument, a GearmanTask object.

参数

callback

A function to call

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanClient::setDataCallback() - Callback function when there is a data packet for a task
  • GearmanClient::setCompleteCallback() - Set a function to be called on task completion
  • GearmanClient::setCreatedCallback() - Set a callback for when a task is queued
  • GearmanClient::setExceptionCallback() - Set a callback for worker exceptions
  • GearmanClient::setFailCallback() - Set callback for job failure
  • GearmanClient::setWarningCallback() - Set a callback for worker warnings
  • GearmanClient::setWorkloadCallback() - Set a callback for accepting incremental data updates

GearmanClient::setOptions
GearmanClient::setTimeout
GearmanClient


Set socket I/O activity timeout

GearmanClient::setStatusCallback
GearmanClient::setWarningCallback
GearmanClient
PHP Manual

GearmanClient::setTimeout

(PECL gearman >= 0.6.0)

GearmanClient::setTimeout — Set socket I/O activity timeout

说明

public bool GearmanClient::setTimeout ( int $timeout )

Sets the timeout for socket I/O activity.

参数

timeout

An interval of time in milliseconds

返回值

Always returns TRUE.

GearmanClient::setStatusCallback
GearmanClient::setWarningCallback
GearmanClient


Set a callback for worker warnings

GearmanClient::setTimeout
GearmanClient::setWorkloadCallback
GearmanClient
PHP Manual

GearmanClient::setWarningCallback

(PECL gearman >= 0.5.0)

GearmanClient::setWarningCallback — Set a callback for worker warnings

说明

public bool GearmanClient::setWarningCallback ( callable $callback )

Sets a function to be called when a worker sends a warning. The callback should accept a single argument, a GearmanTask object.

参数

callback

A function to call

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanClient::setDataCallback() - Callback function when there is a data packet for a task
  • GearmanClient::setCompleteCallback() - Set a function to be called on task completion
  • GearmanClient::setCreatedCallback() - Set a callback for when a task is queued
  • GearmanClient::setExceptionCallback() - Set a callback for worker exceptions
  • GearmanClient::setFailCallback() - Set callback for job failure
  • GearmanClient::setStatusCallback() - Set a callback for collecting task status
  • GearmanClient::setWorkloadCallback() - Set a callback for accepting incremental data updates

GearmanClient::setTimeout
GearmanClient::setWorkloadCallback
GearmanClient


Set a callback for accepting incremental data updates

GearmanClient::setWarningCallback
GearmanClient::timeout
GearmanClient
PHP Manual

GearmanClient::setWorkloadCallback

(PECL gearman >= 0.5.0)

GearmanClient::setWorkloadCallback — Set a callback for accepting incremental data updates

说明

public bool GearmanClient::setWorkloadCallback ( callable $callback )

Sets a function to be called when a worker needs to send back data prior to job completion. A worker can do this when it needs to send updates, send partial results, or flush data during long running jobs. The callback should accept a single argument, a GearmanTask object.

参数

callback

A function to call

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanClient::setDataCallback() - Callback function when there is a data packet for a task
  • GearmanClient::setCompleteCallback() - Set a function to be called on task completion
  • GearmanClient::setCreatedCallback() - Set a callback for when a task is queued
  • GearmanClient::setExceptionCallback() - Set a callback for worker exceptions
  • GearmanClient::setFailCallback() - Set callback for job failure
  • GearmanClient::setStatusCallback() - Set a callback for collecting task status
  • GearmanClient::setWarningCallback() - Set a callback for worker warnings

GearmanClient::setWarningCallback
GearmanClient::timeout
GearmanClient


Get current socket I/O activity timeout value

GearmanClient::setWorkloadCallback
GearmanJob
GearmanClient
PHP Manual

GearmanClient::timeout

(PECL gearman >= 0.6.0)

GearmanClient::timeout — Get current socket I/O activity timeout value

说明

public int GearmanClient::timeout ( void )

Returns the timeout in milliseconds to wait for I/O activity.

参数

此函数没有参数。

返回值

Timeout in milliseconds to wait for I/O activity. A negative value means an infinite timeout.

参见

  • GearmanClient::setTimeout() - Set socket I/O activity timeout

GearmanClient::setWorkloadCallback
GearmanJob
GearmanClient


The GearmanJob class

(PECL gearman >= 0.5.0)

简介

类摘要

GearmanJob {
/* 方法 */
public bool complete ( string $result )
public __construct ( void )
public bool data ( string $data )
public bool exception ( string $exception )
public bool fail ( void )
public string functionName ( void )
public string handle ( void )
public int returnCode ( void )
public bool sendComplete ( string $result )
public bool sendData ( string $data )
public bool sendException ( string $exception )
public bool sendFail ( void )
public bool sendStatus ( int $numerator , int $denominator )
public bool sendWarning ( string $warning )
public bool setReturn ( int $gearman_return_t )
public bool status ( int $numerator , int $denominator )
public string unique ( void )
public bool warning ( string $warning )
public string workload ( void )
public int workloadSize ( void )
}

Table of Contents

  • GearmanJob::complete — Send the result and complete status (deprecated)
  • GearmanJob::__construct — Create a GearmanJob instance
  • GearmanJob::data — Send data for a running job (deprecated)
  • GearmanJob::exception — Send exception for running job (deprecated)
  • GearmanJob::fail — Send fail status (deprecated)
  • GearmanJob::functionName — Get function name
  • GearmanJob::handle — Get the job handle
  • GearmanJob::returnCode — Get last return code
  • GearmanJob::sendComplete — Send the result and complete status
  • GearmanJob::sendData — Send data for a running job
  • GearmanJob::sendException — Send exception for running job (exception)
  • GearmanJob::sendFail — Send fail status
  • GearmanJob::sendStatus — Send status
  • GearmanJob::sendWarning — Send a warning
  • GearmanJob::setReturn — Set a return value
  • GearmanJob::status — Send status (deprecated)
  • GearmanJob::unique — Get the unique identifier
  • GearmanJob::warning — Send a warning (deprecated)
  • GearmanJob::workload — Get workload
  • GearmanJob::workloadSize — Get size of work load
GearmanClient::timeout
GearmanJob::complete
Gearman


Send the result and complete status (deprecated)

GearmanJob
GearmanJob::__construct
GearmanJob
PHP Manual

GearmanJob::complete

(PECL gearman <= 0.5.0)

GearmanJob::complete — Send the result and complete status (deprecated)

说明

public bool GearmanJob::complete ( string $result )

Sends result data and the complete status update for this job.

Note:

This method has been replaced by GearmanJob::sendComplete() in the 0.6.0 release of the Gearman extension.

参数

result

Serialized result data.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanJob::sendFail() - Send fail status
  • GearmanJob::setReturn() - Set a return value

GearmanJob
GearmanJob::__construct
GearmanJob


Create a GearmanJob instance

GearmanJob::complete
GearmanJob::data
GearmanJob
PHP Manual

GearmanJob::__construct

(PECL gearman >= 0.5.0)

GearmanJob::__construct — Create a GearmanJob instance

说明

public GearmanJob::__construct ( void )

Creates a GearmanJob instance representing a job the worker is to complete.

参数

此函数没有参数。

返回值

A GearmanJob object.

GearmanJob::complete
GearmanJob::data
GearmanJob


Send data for a running job (deprecated)

GearmanJob::__construct
GearmanJob::exception
GearmanJob
PHP Manual

GearmanJob::data

(PECL gearman <= 0.5.0)

GearmanJob::data — Send data for a running job (deprecated)

说明

public bool GearmanJob::data ( string $data )

Sends data to the job server (and any listening clients) for this job.

Note:

This method has been replaced by GearmanJob::sendData() in the 0.6.0 release of the Gearman extension.

参数

data

Arbitrary serialized data.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanJob::workload() - Get workload
  • GearmanTask::data() - Get data returned for a task

GearmanJob::__construct
GearmanJob::exception
GearmanJob


Send exception for running job (deprecated)

GearmanJob::data
GearmanJob::fail
GearmanJob
PHP Manual

GearmanJob::exception

(PECL gearman <= 0.5.0)

GearmanJob::exception — Send exception for running job (deprecated)

说明

public bool GearmanJob::exception ( string $exception )

Sends the supplied exception when this job is running.

Note:

This method has been replaced by GearmanJob::sendException() in the 0.6.0 release of the Gearman extension.

参数

exception

An exception description.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanJob::setReturn() - Set a return value
  • GearmanJob::sendStatus() - Send status
  • GearmanJob::sendWarning() - Send a warning

GearmanJob::data
GearmanJob::fail
GearmanJob


Send fail status (deprecated)

GearmanJob::exception
GearmanJob::functionName
GearmanJob
PHP Manual

GearmanJob::fail

(PECL gearman <= 0.5.0)

GearmanJob::fail — Send fail status (deprecated)

说明

public bool GearmanJob::fail ( void )

Sends failure status for this job, indicating that the job failed in a known way (as opposed to failing due to a thrown exception).

Note:

This method has been replaced by GearmanJob::sendFail() in the 0.6.0 release of the Gearman extension.

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanJob::sendException() - Send exception for running job (exception)
  • GearmanJob::setReturn() - Set a return value
  • GearmanJob::sendStatus() - Send status
  • GearmanJob::sendWarning() - Send a warning

GearmanJob::exception
GearmanJob::functionName
GearmanJob


Get function name

GearmanJob::fail
GearmanJob::handle
GearmanJob
PHP Manual

GearmanJob::functionName

(PECL gearman >= 0.5.0)

GearmanJob::functionName — Get function name

说明

public string GearmanJob::functionName ( void )

Returns the function name for this job. This is the function the work will execute to perform the job.

参数

此函数没有参数。

返回值

The name of a function.

参见

  • GearmanTask::function() - Get associated function name (deprecated)

GearmanJob::fail
GearmanJob::handle
GearmanJob


Get the job handle

GearmanJob::functionName
GearmanJob::returnCode
GearmanJob
PHP Manual

GearmanJob::handle

(PECL gearman >= 0.5.0)

GearmanJob::handle — Get the job handle

说明

public string GearmanJob::handle ( void )

Returns the opaque job handle assigned by the job server.

参数

此函数没有参数。

返回值

An opaque job handle.

参见

  • GearmanTask::jobHandle() - Get the job handle

GearmanJob::functionName
GearmanJob::returnCode
GearmanJob


Get last return code

GearmanJob::handle
GearmanJob::sendComplete
GearmanJob
PHP Manual

GearmanJob::returnCode

(PECL gearman >= 0.5.0)

GearmanJob::returnCode — Get last return code

说明

public int GearmanJob::returnCode ( void )

Returns the last return code issued by the job server.

参数

此函数没有参数。

返回值

A valid Gearman return code.

参见

  • GearmanTask::returnCode() - Get the last return code

GearmanJob::handle
GearmanJob::sendComplete
GearmanJob


Send the result and complete status

GearmanJob::returnCode
GearmanJob::sendData
GearmanJob
PHP Manual

GearmanJob::sendComplete

(PECL gearman >= 0.6.0)

GearmanJob::sendComplete — Send the result and complete status

说明

public bool GearmanJob::sendComplete ( string $result )

Sends result data and the complete status update for this job.

参数

result

Serialized result data.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanJob::sendFail() - Send fail status
  • GearmanJob::setReturn() - Set a return value

GearmanJob::returnCode
GearmanJob::sendData
GearmanJob


Send data for a running job

GearmanJob::sendComplete
GearmanJob::sendException
GearmanJob
PHP Manual

GearmanJob::sendData

(PECL gearman >= 0.6.0)

GearmanJob::sendData — Send data for a running job

说明

public bool GearmanJob::sendData ( string $data )

Sends data to the job server (and any listening clients) for this job.

参数

data

Arbitrary serialized data.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanJob::workload() - Get workload
  • GearmanTask::data() - Get data returned for a task

GearmanJob::sendComplete
GearmanJob::sendException
GearmanJob


Send exception for running job (exception)

GearmanJob::sendData
GearmanJob::sendFail
GearmanJob
PHP Manual

GearmanJob::sendException

(PECL gearman >= 0.6.0)

GearmanJob::sendException — Send exception for running job (exception)

说明

public bool GearmanJob::sendException ( string $exception )

Sends the supplied exception when this job is running.

参数

exception

An exception description.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanJob::setReturn() - Set a return value
  • GearmanJob::sendStatus() - Send status
  • GearmanJob::sendWarning() - Send a warning

GearmanJob::sendData
GearmanJob::sendFail
GearmanJob


Send fail status

GearmanJob::sendException
GearmanJob::sendStatus
GearmanJob
PHP Manual

GearmanJob::sendFail

(PECL gearman >= 0.6.0)

GearmanJob::sendFail — Send fail status

说明

public bool GearmanJob::sendFail ( void )

Sends failure status for this job, indicating that the job failed in a known way (as opposed to failing due to a thrown exception).

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanJob::sendException() - Send exception for running job (exception)
  • GearmanJob::setReturn() - Set a return value
  • GearmanJob::sendStatus() - Send status
  • GearmanJob::sendWarning() - Send a warning

GearmanJob::sendException
GearmanJob::sendStatus
GearmanJob


Send status

GearmanJob::sendFail
GearmanJob::sendWarning
GearmanJob
PHP Manual

GearmanJob::sendStatus

(PECL gearman >= 0.6.0)

GearmanJob::sendStatus — Send status

说明

public bool GearmanJob::sendStatus ( int $numerator , int $denominator )

Sends status information to the job server and any listening clients. Use this to specify what percentage of the job has been completed.

参数

numerator

The numerator of the precentage completed expressed as a fraction.

denominator

The denominator of the precentage completed expressed as a fraction.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanClient::jobStatus() - Get the status of a background job
  • GearmanTask::taskDenominator() - Get completion percentage denominator
  • GearmanTask::taskNumerator() - Get completion percentage numerator

GearmanJob::sendFail
GearmanJob::sendWarning
GearmanJob


Send a warning

GearmanJob::sendStatus
GearmanJob::setReturn
GearmanJob
PHP Manual

GearmanJob::sendWarning

(PECL gearman >= 0.6.0)

GearmanJob::sendWarning — Send a warning

说明

public bool GearmanJob::sendWarning ( string $warning )

Sends a warning for this job while it is running.

参数

warning

A warning message.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanJob::sendComplete() - Send the result and complete status
  • GearmanJob::sendException() - Send exception for running job (exception)
  • GearmanJob::sendFail() - Send fail status

GearmanJob::sendStatus
GearmanJob::setReturn
GearmanJob


Set a return value

GearmanJob::sendWarning
GearmanJob::status
GearmanJob
PHP Manual

GearmanJob::setReturn

(PECL gearman >= 0.5.0)

GearmanJob::setReturn — Set a return value

说明

public bool GearmanJob::setReturn ( int $gearman_return_t )

Sets the return value for this job, indicates how the job completed.

参数

gearman_return_t

A valid Gearman return value.

返回值

Description...

GearmanJob::sendWarning
GearmanJob::status
GearmanJob


Send status (deprecated)

GearmanJob::setReturn
GearmanJob::unique
GearmanJob
PHP Manual

GearmanJob::status

(PECL gearman <= 0.5.0)

GearmanJob::status — Send status (deprecated)

说明

public bool GearmanJob::status ( int $numerator , int $denominator )

Sends status information to the job server and any listening clients. Use this to specify what percentage of the job has been completed.

Note:

This method has been replaced by GearmanJob::sendStatus() in the 0.6.0 release of the Gearman extenstion.

参数

numerator

The numerator of the precentage completed expressed as a fraction.

denominator

The denominator of the precentage completed expressed as a fraction.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanClient::jobStatus() - Get the status of a background job
  • GearmanTask::taskDenominator() - Get completion percentage denominator
  • GearmanTask::taskNumerator() - Get completion percentage numerator

GearmanJob::setReturn
GearmanJob::unique
GearmanJob


Get the unique identifier

GearmanJob::status
GearmanJob::warning
GearmanJob
PHP Manual

GearmanJob::unique

(PECL gearman >= 0.5.0)

GearmanJob::unique — Get the unique identifier

说明

public string GearmanJob::unique ( void )

Returns the unique identifiter for this job. The identifier is assigned by the client.

参数

此函数没有参数。

返回值

An opaque unique identifier.

参见

  • GearmanClient::do() - Run a single task and return a result [deprecated]
  • GearmanTask::uuid() - Get the unique identifier for a task (deprecated)

GearmanJob::status
GearmanJob::warning
GearmanJob


Send a warning (deprecated)

GearmanJob::unique
GearmanJob::workload
GearmanJob
PHP Manual

GearmanJob::warning

(PECL gearman <= 0.5.0)

GearmanJob::warning — Send a warning (deprecated)

说明

public bool GearmanJob::warning ( string $warning )

Sends a warning for this job while it is running.

Note:

This method has been replaced by GearmanJob::sendWarning() in the 0.6.0 release of the Gearman extension.

参数

warning

A warning messages.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • GearmanJob::sendComplete() - Send the result and complete status
  • GearmanJob::sendException() - Send exception for running job (exception)
  • GearmanJob::sendFail() - Send fail status

GearmanJob::unique
GearmanJob::workload
GearmanJob


Get workload

GearmanJob::warning
GearmanJob::workloadSize
GearmanJob
PHP Manual

GearmanJob::workload

(PECL gearman >= 0.5.0)

GearmanJob::workload — Get workload

说明

public string GearmanJob::workload ( void )

Returns the workload for the job. This is serialized data that is to be processed by the worker.

参数

此函数没有参数。

返回值

Serialized data.

参见

  • GearmanClient::do() - Run a single task and return a result [deprecated]
  • GearmanJob::workloadSize() - Get size of work load

GearmanJob::warning
GearmanJob::workloadSize
GearmanJob


Get size of work load

GearmanJob::workload
GearmanTask
GearmanJob
PHP Manual

GearmanJob::workloadSize

(PECL gearman >= 0.5.0)

GearmanJob::workloadSize — Get size of work load

说明

public int GearmanJob::workloadSize ( void )

Returns the size of the job's work load (the data the worker is to process) in bytes.

参数

此函数没有参数。

返回值

The size in bytes.

参见

  • GearmanJob::workload() - Get workload

GearmanJob::workload
GearmanTask
GearmanJob


The GearmanTask class

(PECL gearman >= 0.5.0)

简介

类摘要

GearmanTask {
/* 方法 */
public __construct ( void )
public GearmanTask create ( void )
public string data ( void )
public int dataSize ( void )
public string function ( void )
public string functionName ( void )
public bool isKnown ( void )
public bool isRunning ( void )
public string jobHandle ( void )
public array recvData ( int $data_len )
public int returnCode ( void )
public int sendData ( string $data )
public int sendWorkload ( string $data )
public int taskDenominator ( void )
public int taskNumerator ( void )
public string unique ( void )
public string uuid ( void )
}

Table of Contents

  • GearmanTask::__construct — Create a GearmanTask instance
  • GearmanTask::create — Create a task (deprecated)
  • GearmanTask::data — Get data returned for a task
  • GearmanTask::dataSize — Get the size of returned data
  • GearmanTask::function — Get associated function name (deprecated)
  • GearmanTask::functionName — Get associated function name
  • GearmanTask::isKnown — Determine if task is known
  • GearmanTask::isRunning — Test whether the task is currently running
  • GearmanTask::jobHandle — Get the job handle
  • GearmanTask::recvData — Read work or result data into a buffer for a task
  • GearmanTask::returnCode — Get the last return code
  • GearmanTask::sendData — Send data for a task (deprecated)
  • GearmanTask::sendWorkload — Send data for a task
  • GearmanTask::taskDenominator — Get completion percentage denominator
  • GearmanTask::taskNumerator — Get completion percentage numerator
  • GearmanTask::unique — Get the unique identifier for a task
  • GearmanTask::uuid — Get the unique identifier for a task (deprecated)
GearmanJob::workloadSize
GearmanTask::__construct
Gearman


Create a GearmanTask instance

GearmanTask
GearmanTask::create
GearmanTask
PHP Manual

GearmanTask::__construct

(PECL gearman >= 0.5.0)

GearmanTask::__construct — Create a GearmanTask instance

说明

public GearmanTask::__construct ( void )

Creates a GearmanTask instance representing a task to be submitted to a job server.

参数

此函数没有参数。

返回值

A GearmanTask object.

GearmanTask
GearmanTask::create
GearmanTask


Create a task (deprecated)

GearmanTask::__construct
GearmanTask::data
GearmanTask
PHP Manual

GearmanTask::create

(PECL gearman <= 0.5.0)

GearmanTask::create — Create a task (deprecated)

说明

public GearmanTask GearmanTask::create ( void )

Returns a new GearmanTask object.

Note:

This method was removed in the 0.6.0 version of the Gearman extension.

参数

此函数没有参数。

返回值

A GearmanTask oject 或者在失败时返回 FALSE.

GearmanTask::__construct
GearmanTask::data
GearmanTask


Get data returned for a task

GearmanTask::create
GearmanTask::dataSize
GearmanTask
PHP Manual

GearmanTask::data

(PECL gearman >= 0.5.0)

GearmanTask::data — Get data returned for a task

说明

public string GearmanTask::data ( void )

Returns data being returned for a task by a worker.

参数

此函数没有参数。

返回值

The serialized data, or FALSE if no data is present.

参见

  • GearmanTask::dataSize() - Get the size of returned data

GearmanTask::create
GearmanTask::dataSize
GearmanTask


Get the size of returned data

GearmanTask::data
GearmanTask::function
GearmanTask
PHP Manual

GearmanTask::dataSize

(PECL gearman >= 0.5.0)

GearmanTask::dataSize — Get the size of returned data

说明

public int GearmanTask::dataSize ( void )

Returns the size of the data being returned for a task.

参数

此函数没有参数。

返回值

The data size, or FALSE if there is no data.

参见

  • GearmanTask::data() - Get data returned for a task

GearmanTask::data
GearmanTask::function
GearmanTask


Get associated function name (deprecated)

GearmanTask::dataSize
GearmanTask::functionName
GearmanTask
PHP Manual

GearmanTask::function

(PECL gearman <= 0.5.0)

GearmanTask::function — Get associated function name (deprecated)

说明

public string GearmanTask::function ( void )

Returns the name of the function this task is associated with, i.e., the function the Gearman worker calls.

Note:

This method has been replaced by GearmanTask::functionName() in the 0.6.0 release of the Gearman extension.

参数

此函数没有参数。

返回值

A function name.

GearmanTask::dataSize
GearmanTask::functionName
GearmanTask


Get associated function name

GearmanTask::function
GearmanTask::isKnown
GearmanTask
PHP Manual

GearmanTask::functionName

(PECL gearman >= 0.6.0)

GearmanTask::functionName — Get associated function name

说明

public string GearmanTask::functionName ( void )

Returns the name of the function this task is associated with, i.e., the function the Gearman worker calls.

参数

此函数没有参数。

返回值

A function name.

GearmanTask::function
GearmanTask::isKnown
GearmanTask


Determine if task is known

GearmanTask::functionName
GearmanTask::isRunning
GearmanTask
PHP Manual

GearmanTask::isKnown

(PECL gearman >= 0.5.0)

GearmanTask::isKnown — Determine if task is known

说明

public bool GearmanTask::isKnown ( void )

Gets the status information for whether or not this task is known to the job server.

参数

此函数没有参数。

返回值

TRUE if the task is known, FALSE otherwise.

GearmanTask::functionName
GearmanTask::isRunning
GearmanTask


Test whether the task is currently running

GearmanTask::isKnown
GearmanTask::jobHandle
GearmanTask
PHP Manual

GearmanTask::isRunning

(PECL gearman >= 0.5.0)

GearmanTask::isRunning — Test whether the task is currently running

说明

public bool GearmanTask::isRunning ( void )

Indicates whether or not this task is currently running.

参数

此函数没有参数。

返回值

TRUE if the task is running, FALSE otherwise.

GearmanTask::isKnown
GearmanTask::jobHandle
GearmanTask


Get the job handle

GearmanTask::isRunning
GearmanTask::recvData
GearmanTask
PHP Manual

GearmanTask::jobHandle

gearman_job_handle

(PECL gearman >= 0.5.0)

GearmanTask::jobHandle -- gearman_job_handle — Get the job handle

说明

public string GearmanTask::jobHandle ( void )

Returns the job handle for this task.

参数

此函数没有参数。

返回值

The opaque job handle.

参见

  • GearmanClient::doJobHandle() - Get the job handle for the running task

GearmanTask::isRunning
GearmanTask::recvData
GearmanTask


Read work or result data into a buffer for a task

GearmanTask::jobHandle
GearmanTask::returnCode
GearmanTask
PHP Manual

GearmanTask::recvData

(PECL gearman >= 0.5.0)

GearmanTask::recvData — Read work or result data into a buffer for a task

说明

public array GearmanTask::recvData ( int $data_len )

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

data_len

Length of data to be read.

返回值

An array whose first element is the length of data read and the second is the data buffer. Returns FALSE if the read failed.

参见

  • GearmanTask::sendData() - Send data for a task (deprecated)

GearmanTask::jobHandle
GearmanTask::returnCode
GearmanTask


Get the last return code

GearmanTask::recvData
GearmanTask::sendData
GearmanTask
PHP Manual

GearmanTask::returnCode

(PECL gearman >= 0.5.0)

GearmanTask::returnCode — Get the last return code

说明

public int GearmanTask::returnCode ( void )

Returns the last Gearman return code for this task.

参数

此函数没有参数。

返回值

A valid Gearman return code.

参见

  • GearmanClient::returnCode() - Get the last Gearman return code

GearmanTask::recvData
GearmanTask::sendData
GearmanTask


Send data for a task (deprecated)

GearmanTask::returnCode
GearmanTask::sendWorkload
GearmanTask
PHP Manual

GearmanTask::sendData

(PECL gearman <= 0.5.0)

GearmanTask::sendData — Send data for a task (deprecated)

说明

public int GearmanTask::sendData ( string $data )

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

data

Data to send to the worker.

返回值

The length of data sent, or FALSE if the send failed.

参见

  • GearmanTask::recvData() - Read work or result data into a buffer for a task

GearmanTask::returnCode
GearmanTask::sendWorkload
GearmanTask


Send data for a task

GearmanTask::sendData
GearmanTask::taskDenominator
GearmanTask
PHP Manual

GearmanTask::sendWorkload

(PECL gearman >= 0.6.0)

GearmanTask::sendWorkload — Send data for a task

说明

public int GearmanTask::sendWorkload ( string $data )

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

data

Data to send to the worker.

返回值

The length of data sent, or FALSE if the send failed.

参见

  • GearmanTask::recvData() - Read work or result data into a buffer for a task

GearmanTask::sendData
GearmanTask::taskDenominator
GearmanTask


Get completion percentage denominator

GearmanTask::sendWorkload
GearmanTask::taskNumerator
GearmanTask
PHP Manual

GearmanTask::taskDenominator

(PECL gearman >= 0.5.0)

GearmanTask::taskDenominator — Get completion percentage denominator

说明

public int GearmanTask::taskDenominator ( void )

Returns the denominator of the percentage of the task that is complete expressed as a fraction.

参数

此函数没有参数。

返回值

A number between 0 and 100, or FALSE if cannot be determined.

参见

  • GearmanTask::taskNumerator() - Get completion percentage numerator

GearmanTask::sendWorkload
GearmanTask::taskNumerator
GearmanTask


Get completion percentage numerator

GearmanTask::taskDenominator
GearmanTask::unique
GearmanTask
PHP Manual

GearmanTask::taskNumerator

(PECL gearman >= 0.5.0)

GearmanTask::taskNumerator — Get completion percentage numerator

说明

public int GearmanTask::taskNumerator ( void )

Returns the numerator of the percentage of the task that is complete expressed as a fraction.

参数

此函数没有参数。

返回值

A number between 0 and 100, or FALSE if cannot be determined.

参见

  • GearmanTask::taskDenominator() - Get completion percentage denominator

GearmanTask::taskDenominator
GearmanTask::unique
GearmanTask


Get the unique identifier for a task

GearmanTask::taskNumerator
GearmanTask::uuid
GearmanTask
PHP Manual

GearmanTask::unique

(PECL gearman >= 0.6.0)

GearmanTask::unique — Get the unique identifier for a task

说明

public string GearmanTask::unique ( void )

Returns the unique identifier for this task. This is assigned by the GearmanClient, as opposed to the job handle which is set by the Gearman job server.

参数

此函数没有参数。

返回值

The unique identifier, or FALSE if no identifier is assigned.

参见

  • GearmanClient::do() - Run a single task and return a result [deprecated]
  • GearmanClient::addTask() - Add a task to be run in parallel

GearmanTask::taskNumerator
GearmanTask::uuid
GearmanTask


Get the unique identifier for a task (deprecated)

GearmanTask::unique
GearmanWorker
GearmanTask
PHP Manual

GearmanTask::uuid

(PECL gearman <= 0.5.0)

GearmanTask::uuid — Get the unique identifier for a task (deprecated)

说明

public string GearmanTask::uuid ( void )

Returns the unique identifier for this task. This is assigned by the GearmanClient, as opposed to the job handle which is set by the Gearman job server.

Note:

This method has been replaced by GearmanTask::unique() in the 0.6.0 release of the Gearman extension.

参数

此函数没有参数。

返回值

The unique identifier, or FALSE if no identifier is assigned.

参见

  • GearmanClient::do() - Run a single task and return a result [deprecated]
  • GearmanClient::addTask() - Add a task to be run in parallel

GearmanTask::unique
GearmanWorker
GearmanTask


The GearmanWorker class

(PECL gearman >= 0.5.0)

简介

类摘要

GearmanWorker {
/* 方法 */
public bool addFunction ( string $function_name , callable $function [, mixed &$context [, int $timeout ]] )
public bool addOptions ( int $option )
public bool addServer ([ string $host = 127.0.0.1 [, int $port = 4730 ]] )
public bool addServers ( string $servers = 127.0.0.1:4730 )
public void clone ( void )
public __construct ( void )
public bool echo ( string $workload )
public string error ( void )
public int getErrno ( void )
public int options ( void )
public bool register ( string $function_name [, int $timeout ] )
public bool removeOptions ( int $option )
public int returnCode ( void )
public bool setId ( string $id )
public bool setOptions ( int $option )
public bool setTimeout ( int $timeout )
public int timeout ( void )
public bool unregister ( string $function_name )
public bool unregisterAll ( void )
public bool wait ( void )
public bool work ( void )
}

Table of Contents

  • GearmanWorker::addFunction — Register and add callback function
  • GearmanWorker::addOptions — Add worker options
  • GearmanWorker::addServer — Add a job server
  • GearmanWorker::addServers — Add job servers
  • GearmanWorker::clone — Create a copy of the worker
  • GearmanWorker::__construct — Create a GearmanWorker instance
  • GearmanWorker::echo — Test job server response
  • GearmanWorker::error — Get the last error encountered
  • GearmanWorker::getErrno — Get errno
  • GearmanWorker::options — Get worker options
  • GearmanWorker::register — Register a function with the job server
  • GearmanWorker::removeOptions — Remove worker options
  • GearmanWorker::returnCode — Get last Gearman return code
  • GearmanWorker::setId — Give the worker an identifier so it can be tracked when asking gearmand for the list of available workers.
  • GearmanWorker::setOptions — Set worker options
  • GearmanWorker::setTimeout — Set socket I/O activity timeout
  • GearmanWorker::timeout — Get socket I/O activity timeout
  • GearmanWorker::unregister — Unregister a function name with the job servers
  • GearmanWorker::unregisterAll — Unregister all function names with the job servers
  • GearmanWorker::wait — Wait for activity from one of the job servers
  • GearmanWorker::work — Wait for and perform jobs
GearmanTask::uuid
GearmanWorker::addFunction
Gearman


Register and add callback function

GearmanWorker
GearmanWorker::addOptions
GearmanWorker
PHP Manual

GearmanWorker::addFunction

(PECL gearman >= 0.5.0)

GearmanWorker::addFunction — Register and add callback function

说明

public bool GearmanWorker::addFunction ( string $function_name , callable $function [, mixed &$context [, int $timeout ]] )

Registers a function name with the job server and specifies a callback corresponding to that function. Optionally specify extra application context data to be used when the callback is called and a timeout.

参数

function_name

The name of a function to register with the job server

function

A callback that gets called when a job for the registered function name is submitted

context

A reference to arbitrary application context data that can be modified by the worker function

timeout

An interval of time in seconds

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Simple worker making use of extra application context data

<?php

# get a gearman worker
$worker= new GearmanWorker();

# add the default server (localhost)
$worker->addServer();

# define a variable to hold application data
$count= 0;

# add the "reverse" function
$worker->addFunction("reverse", "reverse_cb", $count);

# start the worker
while ($worker->work());

function reverse_cb($job, &$count)
{
  $count++;
  return "$count: " . strrev($job->workload());
}

?>

Running a client that submits two jobs for the reverse function would have output similar to the following:

1: olleh
2: dlrow

参见

  • GearmanClient::do() - Run a single task and return a result [deprecated]

GearmanWorker
GearmanWorker::addOptions
GearmanWorker


Add worker options

GearmanWorker::addFunction
GearmanWorker::addServer
GearmanWorker
PHP Manual

GearmanWorker::addOptions

(PECL gearman >= 0.6.0)

GearmanWorker::addOptions — Add worker options

说明

public bool GearmanWorker::addOptions ( int $option )

Adds one or more options to the options previously set.

参数

option

The options to be added

返回值

Always returns TRUE.

参见

  • GearmanWorker::options() - Get worker options
  • GearmanClient::setOptions() - Set client options
  • GearmanClient::removeOptions() - Remove client options

GearmanWorker::addFunction
GearmanWorker::addServer
GearmanWorker


Add a job server

GearmanWorker::addOptions
GearmanWorker::addServers
GearmanWorker
PHP Manual

GearmanWorker::addServer

(PECL gearman >= 0.5.0)

GearmanWorker::addServer — Add a job server

说明

public bool GearmanWorker::addServer ([ string $host = 127.0.0.1 [, int $port = 4730 ]] )

Adds a job server to this worker. This goes into a list of servers than can be used to run jobs. No socket I/O happens here.

参数

host

任务服务器主机名。

port

任务服务器端口号。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Add alternate Gearman servers

<?php
$worker= new GearmanWorker();
$worker->addServer("10.0.0.1");
$worker->addServer("10.0.0.2", 7003);
?>

参见

  • GearmanWorker::addServers() - Add job servers

GearmanWorker::addOptions
GearmanWorker::addServers
GearmanWorker


Add job servers

GearmanWorker::addServer
GearmanWorker::clone
GearmanWorker
PHP Manual

GearmanWorker::addServers

(PECL gearman >= 0.5.0)

GearmanWorker::addServers — Add job servers

说明

public bool GearmanWorker::addServers ( string $servers = 127.0.0.1:4730 )

Adds one or more job servers to this worker. These go into a list of servers that can be used to run jobs. No socket I/O happens here.

参数

servers

A comma separated list of job servers in the format host:port. If no port is specified, it defaults to 4730.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Add two job servers

<?php

$worker= new GearmanWorker();
$worker->addServers("10.0.0.1,10.0.0.2:7003");

?>

参见

  • GearmanWorker::addServer() - Add a job server

GearmanWorker::addServer
GearmanWorker::clone
GearmanWorker


Create a copy of the worker

GearmanWorker::addServers
GearmanWorker::__construct
GearmanWorker
PHP Manual

GearmanWorker::clone

(PECL gearman >= 0.5.0)

GearmanWorker::clone — Create a copy of the worker

说明

public void GearmanWorker::clone ( void )

Creates a copy of the worker.

参数

此函数没有参数。

返回值

A GearmanWorker object

GearmanWorker::addServers
GearmanWorker::__construct
GearmanWorker


Create a GearmanWorker instance

GearmanWorker::clone
GearmanWorker::echo
GearmanWorker
PHP Manual

GearmanWorker::__construct

(PECL gearman >= 0.5.0)

GearmanWorker::__construct — Create a GearmanWorker instance

说明

public GearmanWorker::__construct ( void )

Creates a GearmanWorker instance representing a worker that connects to the job server and accepts tasks to run.

参数

此函数没有参数。

返回值

A GearmanWorker object

参见

  • GearmanWorker::clone() - Create a copy of the worker

GearmanWorker::clone
GearmanWorker::echo
GearmanWorker


Test job server response

GearmanWorker::__construct
GearmanWorker::error
GearmanWorker
PHP Manual

GearmanWorker::echo

(PECL gearman >= 0.6.0)

GearmanWorker::echo — Test job server response

说明

public bool GearmanWorker::echo ( string $workload )

Sends data to all job servers to see if they echo it back. This is a test function to see if job servers are responding properly.

参数

workload

Arbitrary serialized data

返回值

Standard Gearman return value.

参见

  • GearmanClient::echo() - Send data to all job servers to see if they echo it back [deprecated]

GearmanWorker::__construct
GearmanWorker::error
GearmanWorker


Get the last error encountered

GearmanWorker::echo
GearmanWorker::getErrno
GearmanWorker
PHP Manual

GearmanWorker::error

(PECL gearman >= 0.5.0)

GearmanWorker::error — Get the last error encountered

说明

public string GearmanWorker::error ( void )

Returns an error string for the last error encountered.

参数

此函数没有参数。

返回值

An error string.

参见

  • GearmanWorker::getErrno() - Get errno

GearmanWorker::echo
GearmanWorker::getErrno
GearmanWorker


Get errno

GearmanWorker::error
GearmanWorker::options
GearmanWorker
PHP Manual

GearmanWorker::getErrno

(PECL gearman >= 0.5.0)

GearmanWorker::getErrno — Get errno

说明

public int GearmanWorker::getErrno ( void )

Returns the value of errno in the case of a GEARMAN_ERRNO return value.

参数

此函数没有参数。

返回值

A valid errno.

参见

  • GearmanWorker::error() - Get the last error encountered

GearmanWorker::error
GearmanWorker::options
GearmanWorker


Get worker options

GearmanWorker::getErrno
GearmanWorker::register
GearmanWorker
PHP Manual

GearmanWorker::options

(PECL gearman >= 0.6.0)

GearmanWorker::options — Get worker options

说明

public int GearmanWorker::options ( void )

Gets the options previously set for the worker.

参数

此函数没有参数。

返回值

The options currently set for the worker.

参见

  • GearmanWorker::setOptions() - Set worker options

GearmanWorker::getErrno
GearmanWorker::register
GearmanWorker


Register a function with the job server

GearmanWorker::options
GearmanWorker::removeOptions
GearmanWorker
PHP Manual

GearmanWorker::register

(PECL gearman >= 0.6.0)

GearmanWorker::register — Register a function with the job server

说明

public bool GearmanWorker::register ( string $function_name [, int $timeout ] )

Registers a function name with the job server with an optional timeout. The timeout specifies how many seconds the server will wait before marking a job as failed. If the timeout is set to zero, there is no timeout.

参数

function_name

The name of a function to register with the job server

timeout

An interval of time in seconds

返回值

A standard Gearman return value.

参见

  • GearmanWorker::unregister() - Unregister a function name with the job servers
  • GearmanWorker::unregisterAll() - Unregister all function names with the job servers

GearmanWorker::options
GearmanWorker::removeOptions
GearmanWorker


Remove worker options

GearmanWorker::register
GearmanWorker::returnCode
GearmanWorker
PHP Manual

GearmanWorker::removeOptions

(PECL gearman >= 0.6.0)

GearmanWorker::removeOptions — Remove worker options

说明

public bool GearmanWorker::removeOptions ( int $option )

Removes (unsets) one or more worker options.

参数

option

The options to be removed (unset)

返回值

Always returns TRUE.

参见

  • GearmanWorker::options() - Get worker options
  • GearmanWorker::setOptions() - Set worker options
  • GearmanWorker::addOptions() - Add worker options

GearmanWorker::register
GearmanWorker::returnCode
GearmanWorker


Get last Gearman return code

GearmanWorker::removeOptions
GearmanWorker::setId
GearmanWorker
PHP Manual

GearmanWorker::returnCode

(PECL gearman >= 0.5.0)

GearmanWorker::returnCode — Get last Gearman return code

说明

public int GearmanWorker::returnCode ( void )

Returns the last Gearman return code.

参数

此函数没有参数。

返回值

A valid Gearman return code.

参见

  • GearmanWorker::error() - Get the last error encountered
  • GearmanWorker::getErrno() - Get errno

GearmanWorker::removeOptions
GearmanWorker::setId
GearmanWorker


Give the worker an identifier so it can be tracked when asking gearmand for the list of available workers.

GearmanWorker::returnCode
GearmanWorker::setOptions
GearmanWorker
PHP Manual

GearmanWorker::setId

(No version information available, might only be in Git)

GearmanWorker::setId — Give the worker an identifier so it can be tracked when asking gearmand for the list of available workers.

说明

public bool GearmanWorker::setId ( string $id )

Assigns the worker an identifier.

参数

id

A string identifier.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 GearmanWorker::setId() example

Set an identifier for a simple worker.

<?php
$worker= new GearmanWorker();
$worker->setId('test');
?>

以上例程的输出类似于：

Run the following command:
gearadmin --workers

Output:
30 ::3a3a:3361:3361:3a33%976303667 - : test
GearmanWorker::returnCode
GearmanWorker::setOptions
GearmanWorker


Set worker options

GearmanWorker::setId
GearmanWorker::setTimeout
GearmanWorker
PHP Manual

GearmanWorker::setOptions

(PECL gearman >= 0.5.0)

GearmanWorker::setOptions — Set worker options

说明

public bool GearmanWorker::setOptions ( int $option )

Sets one or more options to the supplied value.

参数

option

The options to be set

返回值

Always returns TRUE.

参见

  • GearmanWorker::options() - Get worker options
  • GearmanWorker::addOptions() - Add worker options
  • GearmanWorker::removeOptions() - Remove worker options
  • GearmanClient::setOptions() - Set client options

GearmanWorker::setId
GearmanWorker::setTimeout
GearmanWorker


Set socket I/O activity timeout

GearmanWorker::setOptions
GearmanWorker::timeout
GearmanWorker
PHP Manual

GearmanWorker::setTimeout

(PECL gearman >= 0.6.0)

GearmanWorker::setTimeout — Set socket I/O activity timeout

说明

public bool GearmanWorker::setTimeout ( int $timeout )

Sets the interval of time to wait for socket I/O activity.

参数

timeout

An interval of time in milliseconds. A negative value indicates an infinite timeout.

返回值

Always returns TRUE.

范例

Example #1 A simple worker with a 5 second timeout

<?php

echo "Starting\n";

# Create our worker object.
$gmworker= new GearmanWorker();

# Add default server (localhost).
$gmworker->addServer();

# Register function "reverse" with the server.
$gmworker->addFunction("reverse", "reverse_fn");

# Set the timeout to 5 seconds
$gmworker->setTimeout(5000);

echo "Waiting for job...\n";
while(@$gmworker->work() || $gmworker->returnCode() == GEARMAN_TIMEOUT)
{
  if ($gmworker->returnCode() == GEARMAN_TIMEOUT)
  {
    # Normally one would want to do something useful here ...
    echo "Timeout. Waiting for next job...\n";
    continue;
  }

  if ($gmworker->returnCode() != GEARMAN_SUCCESS)
  {
    echo "return_code: " . $gmworker->returnCode() . "\n";
    break;
  }
}

echo "Done\n";

function reverse_fn($job)
{
  return strrev($job->workload());
}

?>

Running the worker with no submitted jobs will generate output that looks like the following:

Starting
Waiting for job...
Timeout. Waiting for next job...
Timeout. Waiting for next job...
Timeout. Waiting for next job...

参见

  • GearmanWorker::timeout() - Get socket I/O activity timeout

GearmanWorker::setOptions
GearmanWorker::timeout
GearmanWorker


Get socket I/O activity timeout

GearmanWorker::setTimeout
GearmanWorker::unregister
GearmanWorker
PHP Manual

GearmanWorker::timeout

(PECL gearman >= 0.6.0)

GearmanWorker::timeout — Get socket I/O activity timeout

说明

public int GearmanWorker::timeout ( void )

Returns the current time to wait, in milliseconds, for socket I/O activity.

参数

此函数没有参数。

返回值

A time period is milliseconds. A negative value indicates an infinite timeout.

参见

  • GearmanWorker::setTimeout() - Set socket I/O activity timeout

GearmanWorker::setTimeout
GearmanWorker::unregister
GearmanWorker


Unregister a function name with the job servers

GearmanWorker::timeout
GearmanWorker::unregisterAll
GearmanWorker
PHP Manual

GearmanWorker::unregister

(PECL gearman >= 0.6.0)

GearmanWorker::unregister — Unregister a function name with the job servers

说明

public bool GearmanWorker::unregister ( string $function_name )

Unregisters a function name with the job servers ensuring that no more jobs (for that function) are sent to this worker.

参数

function_name

The name of a function to register with the job server

返回值

A standard Gearman return value.

参见

  • GearmanWorker::register() - Register a function with the job server
  • GearmanWorker::unregisterAll() - Unregister all function names with the job servers

GearmanWorker::timeout
GearmanWorker::unregisterAll
GearmanWorker


Unregister all function names with the job servers

GearmanWorker::unregister
GearmanWorker::wait
GearmanWorker
PHP Manual

GearmanWorker::unregisterAll

(PECL gearman >= 0.6.0)

GearmanWorker::unregisterAll — Unregister all function names with the job servers

说明

public bool GearmanWorker::unregisterAll ( void )

Unregisters all previously registered functions, ensuring that no more jobs are sent to this worker.

参数

此函数没有参数。

返回值

A standard Gearman return value.

参见

  • GearmanWorker::register() - Register a function with the job server
  • GearmanWorker::unregister() - Unregister a function name with the job servers

GearmanWorker::unregister
GearmanWorker::wait
GearmanWorker


Wait for activity from one of the job servers

GearmanWorker::unregisterAll
GearmanWorker::work
GearmanWorker
PHP Manual

GearmanWorker::wait

(PECL gearman >= 0.6.0)

GearmanWorker::wait — Wait for activity from one of the job servers

说明

public bool GearmanWorker::wait ( void )

Causes the worker to wait for activity from one of the Gearman job servers when operating in non-blocking I/O mode. On failure, issues a E_WARNING with the last Gearman error encountered.

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Running worker in non-blocking mode

<?php

echo "Starting\n";

# Create our worker object
$worker= new GearmanWorker();

# Make the worker non-blocking
$worker->addOptions(GEARMAN_WORKER_NON_BLOCKING);

# Add the default server (localhost, port 4730)
$worker->addServer();

# Add our reverse function
$worker->addFunction('reverse', 'reverse_fn');

# Try to grab a job
while (@$worker->work() ||
       $worker->returnCode() == GEARMAN_IO_WAIT ||
       $worker->returnCode() == GEARMAN_NO_JOBS)
{
  if ($worker->returnCode() == GEARMAN_SUCCESS)
    continue;

  echo "Waiting for next job...\n";
  if (!@$worker->wait())
  {
    if ($worker->returnCode() == GEARMAN_NO_ACTIVE_FDS)
    {
      # We are not connected to any servers, so wait a bit before
      # trying to reconnect.
      sleep(5);
      continue;
    }
    break;
  }
}

echo "Worker Error: " . $worker->error() . "\n";

function reverse_fn($job)
{
  return strrev($job->workload());
}

?>

参见

  • GearmanWorker::work() - Wait for and perform jobs

GearmanWorker::unregisterAll
GearmanWorker::work
GearmanWorker


Wait for and perform jobs

GearmanWorker::wait
GearmanException
GearmanWorker
PHP Manual

GearmanWorker::work

(PECL gearman >= 0.5.0)

GearmanWorker::work — Wait for and perform jobs

说明

public bool GearmanWorker::work ( void )

Waits for a job to be assigned and then calls the appropriate callback function. Issues an E_WARNING with the last Gearman error if the return code is not one of GEARMAN_SUCCESS, GEARMAN_IO_WAIT, or GEARMAN_WORK_FAIL.

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 GearmanWorker::work() example

<?php

# create the worker
$worker = new GearmanWorker();

# add the default job server (localhost)
$worker->addServer();

# add the reverse function
$worker->addFunction("reverse", "my_reverse_function");

# start te worker listening for job submissions
while ($worker->work());

function my_reverse_function($job)
{
  return strrev($job->workload());
}

?>

参见

  • GearmanWorker::addFunction() - Register and add callback function

GearmanWorker::wait
GearmanException
GearmanWorker


The GearmanException class

(PECL gearman >= 0.5.0)

简介

类摘要

GearmanException extends Exception {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 方法 */
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
GearmanWorker::work
Gopher
Gearman


Net Gopher

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Basic Example
  • Gopher 函数
    • gopher_parsedir — Translate a gopher formatted directory entry into an associative array.
GearmanException
简介
其它服务


简介

The gopher protocol, as defined by » RFC 1436, is generally considered the ancestor of the modern HTTP protocol. However, gopher was also intended to provide references to non-gopher resources including telnet, wais, nntp, and even http. This extension adds gopher support to PHP's URL Wrappers, and provides a helper function gopher_parsedir() to make sense of gopher formatted directory listings.

Gopher
安装／配置
Gopher


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Gopher


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/net_gopher

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

Net_Gopher constants
Constant | Value | Description
GOPHER_DOCUMENT | 0 | Standard text/plain document.
GOPHER_DIRECTORY | 1 | A resource containing a gopher formatted directory listing.
GOPHER_BINHEX | 4 | A BinHex encoded binary file.
GOPHER_DOSBINARY | 5 | A DOS formatted binary archive.
GOPHER_UUENCODED | 6 | A UUEncoded file.
GOPHER_BINARY | 9 | A generic binary file.
GOPHER_INFO | 255 | An Informational entry
GOPHER_HTTP | 254 | A reference to an HTTP resource.
GOPHER_UNKNOWN | -1 | An unrecognized entry.
资源类型
范例
Gopher


范例

Table of Contents

  • Basic Example
预定义常量
Basic Example
Gopher


Basic Example

<?php
readfile("gopher://gopher.example.com/somedocument");
?>
范例
Gopher 函数
范例


Gopher 函数

Table of Contents

  • gopher_parsedir — Translate a gopher formatted directory entry into an associative array.
Basic Example
gopher_parsedir
Gopher


Translate a gopher formatted directory entry into an associative array.

Gopher 函数
Gupnp
Gopher 函数
PHP Manual

gopher_parsedir

(PECL net_gopher >= 0.1)

gopher_parsedir — Translate a gopher formatted directory entry into an associative array.

说明

array gopher_parsedir ( string $dirent )

gopher_parsedir() parses a gopher formatted directory entry into an associative array.

While gopher returns text/plain documents for actual document requests. A request to a directory (such as /) will return specially encoded series of lines with each line being one directory entry or information line.

参数

dirent

The directory entry.

返回值

Returns an associative array whose components are:

  • type - One of the GOPHER_XXX constants.
  • title - The name of the resource.
  • path - The path of the resource.
  • host - The domain name of the host that has this document (or directory).
  • port - The port at which to connect on host.

Upon failure, the additional data entry of the returned array will hold the parsed line.

范例

Example #1 Hypothetical output from gopher://gopher.example.com/

0All about my gopher site.               /allabout.txt               gopher.example.com    70
9A picture of my cat.                    /pics/cat.png               gopher.example.com    70
1A collection of my writings.            /stories                    gopher.example.com    70
hThe HTTP version of this site.          URL:http://www.example.com  gopher.example.com    70
1Mirror of this site in Spain.           /                           gopher.ejemplo.co.es  70
iWelcome to my gopher site.                                          error.host            1
iPlease select one of the options above                              error.host            1
iSend complaints to /dev/null                                        error.host            1
iLong live gopher!                                                   error.host            1

In the example above, the root directory at gopher.example.com knows about one DOCUMENT identified by 0 located at gopher://gopher.example.com:70/allabout.txt. It also knows about two other directory (which have their own listing files) at gopher://gopher.exmaple.com:70/stories and at gopher://gopher.ejemplo.co.es:70/. In addition there is a binary file, a link to an HTTP url, and several informative lines.

By passing each line of the directory listing into gopher_parsedir(), an associative array is formed containing a parsed out version of the data.

Example #2 Using gopher_parsedir()

<?php
$directory = file("gopher://gopher.example.com");

foreach($directory as $dirent) {
    print_r(gopher_parsedir($dirent));
}
?>

以上例程会输出：

Array (
  [type] => 0
  [title] => All about my gopher site.
  [path] => /allabout.txt
  [host] => gopher.example.com
  [port] => 70
)
Array (
  [type] => 9
  [title] => A picture of my cat.
  [path] => /pics/cat.png
  [host] => gopher.example.com
  [port] => 70
)
Array (
  [type] => 1
  [title] => A collection of my writings.
  [path] => /stories
  [host] => gopher.example.com
  [port] => 70
)
Array (
  [type] => 254
  [title] => The HTTP version of this site.
  [path] => URL:http://www.example.com
  [host] => gopher.example.com
  [port] => 70
)
Array (
  [type] => 1
  [title] => Mirror of this site in Spain.
  [path] => /
  [host] => gopher.ejemplo.co.es
  [port] => 70
)
Array (
  [type] => 255
  [title] => Welcome to my gopher site.
  [path] =>
  [host] => error.host
  [port] => 1
)
Array (
  [type] => 255
  [title] => Please select one of the options above.
  [path] =>
  [host] => error.host
  [port] => 1
)
Array (
  [type] => 255
  [title] => Send complaints to /dev/null
  [path] =>
  [host] => error.host
  [port] => 1
)
Array (
  [type] => 255
  [title] => Long live gopher!
  [path] =>
  [host] => error.host
  [port] => 1
)

Gopher 函数
Gupnp
Gopher 函数


Gupnp

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Browsing devices and services
    • Implementing the BinaryLight device
  • Gupnp 函数
    • gupnp_context_get_host_ip — Get the IP address
    • gupnp_context_get_port — Get the port
    • gupnp_context_get_subscription_timeout — Get the event subscription timeout
    • gupnp_context_host_path — Start hosting
    • gupnp_context_new — Create a new context
    • gupnp_context_set_subscription_timeout — Sets the event subscription timeout
    • gupnp_context_timeout_add — Sets a function to be called at regular intervals
    • gupnp_context_unhost_path — Stop hosting
    • gupnp_control_point_browse_start — Start browsing
    • gupnp_control_point_browse_stop — Stop browsing
    • gupnp_control_point_callback_set — Set control point callback
    • gupnp_control_point_new — Create a new control point
    • gupnp_device_action_callback_set — Set device callback function
    • gupnp_device_info_get_service — Get the service with type
    • gupnp_device_info_get — Get info of root device
    • gupnp_root_device_get_available — Check whether root device is available
    • gupnp_root_device_get_relative_location — Get the relative location of root device.
    • gupnp_root_device_new — Create a new root device
    • gupnp_root_device_set_available — Set whether or not root_device is available
    • gupnp_root_device_start — Start main loop
    • gupnp_root_device_stop — Stop main loop
    • gupnp_service_action_get — Retrieves the specified action arguments
    • gupnp_service_action_return_error — Return error code
    • gupnp_service_action_return — Return successfully
    • gupnp_service_action_set — Sets the specified action return values
    • gupnp_service_freeze_notify — Freeze new notifications
    • gupnp_service_info_get_introspection — Get resource introspection of service
    • gupnp_service_info_get — Get full info of service
    • gupnp_service_introspection_get_state_variable — Returns the state variable data
    • gupnp_service_notify — Notifies listening clients
    • gupnp_service_proxy_action_get — Send action to the service and get value
    • gupnp_service_proxy_action_set — Send action to the service and set value
    • gupnp_service_proxy_add_notify — Sets up callback for variable change notification
    • gupnp_service_proxy_callback_set — Set service proxy callback for signal
    • gupnp_service_proxy_get_subscribed — Check whether subscription is valid to the service
    • gupnp_service_proxy_remove_notify — Cancels the variable change notification
    • gupnp_service_proxy_send_action — Send action with multiple parameters synchronously
    • gupnp_service_proxy_set_subscribed — (Un)subscribes to the service.
    • gupnp_service_thaw_notify — Sends out any pending notifications and stops queuing of new ones.
gopher_parsedir
简介
其它服务


简介

GUPnP is an object-oriented open source framework for creating UPnP devices and control points, written in C using GObject and libsoup. This extension wraps GUPnP and provides similar API. All sources and additional documentation can be obtained from the » official site

Gupnp
安装／配置
Gupnp


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Gupnp


需求

In order to use PECL/Gupnp functions you need to install the » gUPnP library version 0.12.7 or greater. It also requires glib-2.0, gssdp-1.0, libsoup-2.4 or greater for all of them.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/gupnp

Note: If ./configure is having trouble finding the libgupnp files (for example, it was installed into a custom prefix directory), use ./configure --with-gupnp=$PREFIX, where $PREFIX is installation prefix of libgupnp.

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

GUPNP_TYPE_BOOLEAN (integer)
GUPNP_TYPE_INT (integer)
GUPNP_TYPE_LONG (integer)
GUPNP_TYPE_DOUBLE (integer)
GUPNP_TYPE_FLOAT (integer)
GUPNP_TYPE_STRING (integer)
GUPNP_SIGNAL_DEVICE_PROXY_AVAILABLE (integer)
GUPNP_SIGNAL_DEVICE_PROXY_UNAVAILABLE (integer)
GUPNP_SIGNAL_SERVICE_PROXY_AVAILABLE (integer)
GUPNP_SIGNAL_SERVICE_PROXY_UNAVAILABLE (integer)
GUPNP_SIGNAL_ACTION_INVOKED (integer)
GUPNP_SIGNAL_NOTIFY_FAILED (integer)
GUPNP_SIGNAL_SUBSCRIPTION_LOST (integer)
GUPNP_CONTROL_ERROR_INVALID_ACTION (integer)
GUPNP_CONTROL_ERROR_INVALID_ARGS (integer)
GUPNP_CONTROL_ERROR_OUT_OF_SYNC (integer)
GUPNP_CONTROL_ERROR_ACTION_FAILED (integer)

资源类型
范例
Gupnp


范例

Table of Contents

  • Browsing devices and services
  • Implementing the BinaryLight device
预定义常量
Browsing devices and services
Gupnp


Browsing devices and services

This example shows how to obtain information about all devices and services. It starts an infinite loop (use CLI), and if any of available devices or services are found, the proper callback function will be invoked.

Example #1 Search for all UPnP devices and services.

<?php

/* Callback for available device */
function device_proxy_available_cb($proxy, $arg)
{
    $info = gupnp_device_info_get($proxy);

    $type = $info['device_type'];
    $location = $info['location'];

    printf("Device available:\n");
    printf("\ttype:     %s\n", $type);
    printf("\tlocation: %s\n", $location);
}

/* Callback for available service */
function service_proxy_available_cb($proxy, $arg)
{
    $info = gupnp_service_info_get($proxy);

    $type = $info['service_type'];
    $location = $info['location'];

    printf("Service available:\n");
    printf("\ttype:     %s\n", $type);
    printf("\tlocation: %s\n", $location);
}

/* Create the UPnP context */
$context = gupnp_context_new();
if (!$context) {
    printf("Error creating the GUPnP context\n");
    exit(-1);
}

/* We're interested in everything */
$cp = gupnp_control_point_new($context, "ssdp:all");

/* Set callbacks */
gupnp_control_point_callback_set($cp,
    GUPNP_SIGNAL_DEVICE_PROXY_AVAILABLE, 'device_proxy_available_cb');
gupnp_control_point_callback_set($cp,
    GUPNP_SIGNAL_SERVICE_PROXY_AVAILABLE, 'service_proxy_available_cb');

/* Start for browsing (infinite loop, hit Ctrl-C to interrupt) */
gupnp_control_point_browse_start($cp);

?>

范例
Implementing the BinaryLight device
范例


Implementing the BinaryLight device

This is an example of UPnP device/service, implementing the BinaryLight device and SwitchPower services to emulate a light switch.

The user interface was purposely simplified in order to show basic concepts and methods.

Example #1 Implementing light server

<?php

/* SetTarget */
function set_target_cb($service, $action, $arg)
{
    /* Get the new target value */
    $target = gupnp_service_action_get($action, 'NewTargetValue', GUPNP_TYPE_BOOLEAN);

    /* If the new target doesn't match the current status, change the status and
       emit a notification that the status has changed. */
    if ($target != $GLOBALS['status']) {
        $GLOBALS['status'] = $target;
        gupnp_service_notify($service, 'Status', GUPNP_TYPE_BOOLEAN, $GLOBALS['status']);
        printf("The light is now %s.\n", $GLOBALS['status'] ? "on" : "off");
    }

    /* Return success to the client */
    gupnp_service_action_return($action);
}

/* GetTarget */
function get_target_cb($service, $action, $arg)
{
    gupnp_service_action_set($action, 'RetTargetValue', GUPNP_TYPE_BOOLEAN, $GLOBALS['status']);
    gupnp_service_action_return($action);
}

/* GetStatus */
function get_status_cb($service, $action, $arg)
{
    gupnp_service_action_set($action, 'ResultStatus', GUPNP_TYPE_BOOLEAN, $GLOBALS['status']);
    gupnp_service_action_return($action);
}

/* By default the light is off */
$GLOBALS['status'] = false;
printf("The light is now %s.\n", $GLOBALS['status'] ? "on" : "off");

/* Create the UPnP context */
$context = gupnp_context_new();
if (!$context) {
    printf("Error creating the GUPnP context\n");
    exit(-1);
}

/* Host the directory that contains device and service description files */
gupnp_context_host_path($context, "./web", "");

/* Create root device */
$location = "/BinaryLight.xml";
$dev = gupnp_root_device_new($context, $location);
gupnp_root_device_set_available($dev, true);

/* Get the switch service from the root device */
$service_type = "urn:schemas-upnp-org:service:SwitchPower:1";
$service = gupnp_device_info_get_service($dev, $service_type);
if (!$service) {
    die("Cannot get SwitchPower1 service\n");
}

/* Set callback for action GetStatus */
gupnp_device_action_callback_set($service, GUPNP_SIGNAL_ACTION_INVOKED, "GetStatus",
    "get_status_cb", "action data, GetStatus");

/* Set callback for action GetTarget */
gupnp_device_action_callback_set($service, GUPNP_SIGNAL_ACTION_INVOKED, "GetTarget",
    "get_target_cb", "action data, GetTarget");

/* Set callback for action SetTarget */
gupnp_device_action_callback_set($service, GUPNP_SIGNAL_ACTION_INVOKED, "SetTarget",
    "set_target_cb", "action data, SetTarget");

/* Run the main loop */
gupnp_root_device_start($dev);

?>

Example #2 Implementing light client

<?php

function service_proxy_available_cb($proxy, $arg)
{
    $mode = $arg['mode'];

    printf("Set subscribed\n");
    gupnp_service_proxy_set_subscribed($proxy, true);

    /* Add notify if status will be changed */
    if (!gupnp_service_proxy_add_notify($proxy, "Status",
            GUPNP_TYPE_BOOLEAN, "status_changed_cb", NULL)) {
        printf("Failed to add notify\n");
    }

    if ($mode == 'TOGGLE') {
        /* We're toggling, so first fetch the current status */
        $target = gupnp_service_proxy_action_get($proxy, 'GetStatus', 'ResultStatus', GUPNP_TYPE_BOOLEAN);

        /* And then toggle it */
        $target = ! $target;
    } else {
        /* Mode is a boolean, so the target is the mode thanks to our well chosen
           enumeration values. */
        $target = ($mode == 'ON') ? true : false;
    }

    /* Set the target */
    if (!gupnp_service_proxy_action_set($proxy, 'SetTarget', 'NewTargetValue', $target, GUPNP_TYPE_BOOLEAN)) {
        printf("Cannot set switch\n");
    } else {
        printf("Set switch to %s.\n", $target ? "on" : "off");
    }

    /* Stop browsing */
    gupnp_control_point_browse_stop($arg['cp']);
}

function status_changed_cb($variable, $value, $arg)
{
    printf("Status has been changed\n");
    printf("\tvariable name: %s\n", $variable);
    printf("\tvalue: %s\n", (int)$value);
    printf("\n");
}

/* Check and parse command line arguments */
if (count($argv) != 2) {
    printf("Usage: light-client.php [on|off|toggle]\n");
    exit(-1);
}

if ($argv[1] == "on") {
    $mode = 'ON';
} elseif ($argv[1] == "off") {
    $mode = 'OFF';
} elseif ($argv[1] == "toggle") {
    $mode = 'TOGGLE';
} else {
    usage ();
    exit(-1);
}

/* Create the UPnP context */
$context = gupnp_context_new();
if (!$context) {
    printf("Error creating the GUPnP context\n");
    exit(-1);
}

/* Create the control point, searching for SwitchPower services */
$cp = gupnp_control_point_new ($context,
        "urn:schemas-upnp-org:service:SwitchPower:1");

/* Connect to the service-found callback */
$cb = "service_proxy_available_cb";
$arg = array('mode' => $mode, 'cp' => $cp);
gupnp_control_point_callback_set($cp, GUPNP_SIGNAL_SERVICE_PROXY_AVAILABLE, $cb, $arg);

/* Start for browsing */
gupnp_control_point_browse_start($cp);

?>

Browsing devices and services
Gupnp 函数
范例


Gupnp 函数

Table of Contents

  • gupnp_context_get_host_ip — Get the IP address
  • gupnp_context_get_port — Get the port
  • gupnp_context_get_subscription_timeout — Get the event subscription timeout
  • gupnp_context_host_path — Start hosting
  • gupnp_context_new — Create a new context
  • gupnp_context_set_subscription_timeout — Sets the event subscription timeout
  • gupnp_context_timeout_add — Sets a function to be called at regular intervals
  • gupnp_context_unhost_path — Stop hosting
  • gupnp_control_point_browse_start — Start browsing
  • gupnp_control_point_browse_stop — Stop browsing
  • gupnp_control_point_callback_set — Set control point callback
  • gupnp_control_point_new — Create a new control point
  • gupnp_device_action_callback_set — Set device callback function
  • gupnp_device_info_get_service — Get the service with type
  • gupnp_device_info_get — Get info of root device
  • gupnp_root_device_get_available — Check whether root device is available
  • gupnp_root_device_get_relative_location — Get the relative location of root device.
  • gupnp_root_device_new — Create a new root device
  • gupnp_root_device_set_available — Set whether or not root_device is available
  • gupnp_root_device_start — Start main loop
  • gupnp_root_device_stop — Stop main loop
  • gupnp_service_action_get — Retrieves the specified action arguments
  • gupnp_service_action_return_error — Return error code
  • gupnp_service_action_return — Return successfully
  • gupnp_service_action_set — Sets the specified action return values
  • gupnp_service_freeze_notify — Freeze new notifications
  • gupnp_service_info_get_introspection — Get resource introspection of service
  • gupnp_service_info_get — Get full info of service
  • gupnp_service_introspection_get_state_variable — Returns the state variable data
  • gupnp_service_notify — Notifies listening clients
  • gupnp_service_proxy_action_get — Send action to the service and get value
  • gupnp_service_proxy_action_set — Send action to the service and set value
  • gupnp_service_proxy_add_notify — Sets up callback for variable change notification
  • gupnp_service_proxy_callback_set — Set service proxy callback for signal
  • gupnp_service_proxy_get_subscribed — Check whether subscription is valid to the service
  • gupnp_service_proxy_remove_notify — Cancels the variable change notification
  • gupnp_service_proxy_send_action — Send action with multiple parameters synchronously
  • gupnp_service_proxy_set_subscribed — (Un)subscribes to the service.
  • gupnp_service_thaw_notify — Sends out any pending notifications and stops queuing of new ones.
Implementing the BinaryLight device
gupnp_context_get_host_ip
Gupnp


Get the IP address

Gupnp 函数
gupnp_context_get_port
Gupnp 函数
PHP Manual

gupnp_context_get_host_ip

(PECL gupnp >= 0.1.0)

gupnp_context_get_host_ip — Get the IP address

说明

string gupnp_context_get_host_ip ( resource $context )

Get the IP address we advertise ourselves as using.

参数

context

A context identifier, returned by gupnp_context_new().

返回值

Returns the IP address for the current context and FALSE on error.

范例

Example #1 Create new UPnP context and get IP address of the host

<?php

/* Create the UPnP context */
$context = gupnp_context_new();

if (!$context) {
 die("Error creating the GUPnP context\n");
}

/* Get IP address for the UPnP context */
$ip = gupnp_context_get_host_ip($context);
echo $ip;

?>

参见

  • gupnp_context_new() - Create a new context
  • gupnp_context_get_port() - Get the port

Gupnp 函数
gupnp_context_get_port
Gupnp 函数


Get the port

gupnp_context_get_host_ip
gupnp_context_get_subscription_timeout
Gupnp 函数
PHP Manual

gupnp_context_get_port

(PECL gupnp >= 0.1.0)

gupnp_context_get_port — Get the port

说明

int gupnp_context_get_port ( resource $context )

Get the port that the SOAP server is running on.

参数

context

A context identifier, returned by gupnp_context_new().

返回值

Returns the port number for the current context and FALSE on error.

范例

Example #1 Create new UPnP context and get port number

<?php

/* Create the UPnP context */
$context = gupnp_context_new();

if (!$context) {
 die("Error creating the GUPnP context\n");
}

/* Get the port number for the UPnP context */
$port = gupnp_context_get_port($context);
echo $port;

?>

参见

  • gupnp_context_new() - Create a new context
  • gupnp_context_get_host_ip() - Get the IP address

gupnp_context_get_host_ip
gupnp_context_get_subscription_timeout
Gupnp 函数


Get the event subscription timeout

gupnp_context_get_port
gupnp_context_host_path
Gupnp 函数
PHP Manual

gupnp_context_get_subscription_timeout

(PECL gupnp >= 0.1.0)

gupnp_context_get_subscription_timeout — Get the event subscription timeout

说明

int gupnp_context_get_subscription_timeout ( resource $context )

Get the event subscription timeout (in seconds), or 0 meaning there is no timeout.

参数

context

A context identifier, returned by gupnp_context_new().

返回值

The event subscription timeout in seconds.

参见

  • gupnp_context_new() - Create a new context
  • gupnp_context_set_subscription_timeout() - Sets the event subscription timeout

gupnp_context_get_port
gupnp_context_host_path
Gupnp 函数


Start hosting

gupnp_context_get_subscription_timeout
gupnp_context_new
Gupnp 函数
PHP Manual

gupnp_context_host_path

(PECL gupnp >= 0.1.0)

gupnp_context_host_path — Start hosting

说明

bool gupnp_context_host_path ( resource $context , string $local_path , string $server_path )

Start hosting local_path at server_path. Files with the path local_path.LOCALE (if they exist) will be served up when LOCALE is specified in the request's Accept-Language header.

参数

context

A context identifier, returned by gupnp_context_new().

local_path

Path to the local file or folder to be hosted.

server_path

Web server path where local_path should be hosted.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Create new UPnP context and set host path

<?php

/* Create the UPnP context */
$context = gupnp_context_new();

if (!$context) {
 die("Error creating the GUPnP context\n");
}

/* Host current directory */
gupnp_context_host_path($context, "./web", "");

?>

参见

  • gupnp_context_new() - Create a new context
  • gupnp_context_unhost_path() - Stop hosting

gupnp_context_get_subscription_timeout
gupnp_context_new
Gupnp 函数


Create a new context

gupnp_context_host_path
gupnp_context_set_subscription_timeout
Gupnp 函数
PHP Manual

gupnp_context_new

(PECL gupnp >= 0.1.0)

gupnp_context_new — Create a new context

说明

resource gupnp_context_new ([ string $host_ip [, int $port = 0 ]] )

Create a new context with the specified host_ip and port.

参数

host_ip

The local host's IP address, or NULL to use the IP address of the first non-loopback network interface.

port

Port to run on, or 0 if you don't care what port is used.

返回值

A context identifier.

范例

Example #1 Create new UPnP context

<?php

/* Create the UPnP context */
$context = gupnp_context_new();

if (!$context) {
 die("Error creating the GUPnP context\n");
}

?>

错误／异常

Issues E_WARNING with unable to create context.

gupnp_context_host_path
gupnp_context_set_subscription_timeout
Gupnp 函数


Sets the event subscription timeout

gupnp_context_new
gupnp_context_timeout_add
Gupnp 函数
PHP Manual

gupnp_context_set_subscription_timeout

(PECL gupnp >= 0.1.0)

gupnp_context_set_subscription_timeout — Sets the event subscription timeout

说明

void gupnp_context_set_subscription_timeout ( resource $context , int $timeout )

Sets the event subscription timeout (in seconds) to time out. Note that any client side subscriptions will automatically be renewed.

参数

context

A context identifier, returned by gupnp_context_new().

timeout

The event subscription timeout in seconds. Use 0 if you don't want subscriptions to time out.

返回值

没有返回值。

参见

  • gupnp_context_new() - Create a new context
  • gupnp_context_get_subscription_timeout() - Get the event subscription timeout

gupnp_context_new
gupnp_context_timeout_add
Gupnp 函数


Sets a function to be called at regular intervals

gupnp_context_set_subscription_timeout
gupnp_context_unhost_path
Gupnp 函数
PHP Manual

gupnp_context_timeout_add

(PECL gupnp >= 0.1.0)

gupnp_context_timeout_add — Sets a function to be called at regular intervals

说明

bool gupnp_context_timeout_add ( resource $context , int $timeout , mixed $callback [, mixed $arg ] )

Sets a function to be called at regular intervals.

参数

context

A context identifier, returned by gupnp_context_new().

timeout

A timeout in miliseconds.

callback

The callback function calling every timeout period of time. Typically, callback function takes on arg parameter.

arg

User data for callback.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Create new UPnP context and set callback

<?php

$user_data = "user data";

function timeout_cb($arg)
{
    printf("Call timeout_cb, user data: '%s'", $arg);
    return true;
}

/* Create the UPnP context */
$context = gupnp_context_new();

if (!$context) {
 die("Error creating the GUPnP context\n");
}

/* Create root device */
$dev = gupnp_root_device_new($context, "/devicedesc.xml");

/* Set callback for timeout */
gupnp_context_timeout_add($context, 5000, "timeout_cb", $user_data);

/* Run the main loop */
gupnp_root_device_start($dev);

?>

错误／异常

Issues E_WARNING with not valid callback function.

参见

  • gupnp_context_new() - Create a new context

gupnp_context_set_subscription_timeout
gupnp_context_unhost_path
Gupnp 函数


Stop hosting

gupnp_context_timeout_add
gupnp_control_point_browse_start
Gupnp 函数
PHP Manual

gupnp_context_unhost_path

(PECL gupnp >= 0.1.0)

gupnp_context_unhost_path — Stop hosting

说明

bool gupnp_context_unhost_path ( resource $context , string $server_path )

Stop hosting the file or folder at server_path.

参数

context

A context identifier, returned by gupnp_context_new().

server_path

Web server path where the file or folder is hosted.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • gupnp_context_new() - Create a new context
  • gupnp_context_host_path() - Start hosting

gupnp_context_timeout_add
gupnp_control_point_browse_start
Gupnp 函数


Start browsing

gupnp_context_unhost_path
gupnp_control_point_browse_stop
Gupnp 函数
PHP Manual

gupnp_control_point_browse_start

(PECL gupnp >= 0.1.0)

gupnp_control_point_browse_start — Start browsing

说明

bool gupnp_control_point_browse_start ( resource $cpoint )

Start the search and calls user-defined callback.

参数

cpoint

A control point identifier, returned by gupnp_control_point_new().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Create new UPnP context and start browsing

<?php

function device_proxy_available_cb($proxy, $arg)
{
    $info = gupnp_device_info_get($proxy);

    $type = $info['device_type'];
    $location = $info['location'];

    printf("Device available:\n");
    printf("type:     %s\n", $type);
    printf("location: %s\n", $location);
}

/* Create the UPnP context */
$context = gupnp_context_new();

if (!$context) {
 die("Error creating the GUPnP context\n");
}

/* We're interested in everything */
$cp = gupnp_control_point_new($context, "ssdp:all");

gupnp_control_point_callback_set($cp,
    GUPNP_SIGNAL_DEVICE_PROXY_AVAILABLE, 'device_proxy_available_cb');

/* Start for browsing */
gupnp_control_point_browse_start($cp);

?>

参见

  • gupnp_control_point_new() - Create a new control point
  • gupnp_control_point_browse_stop() - Stop browsing

gupnp_context_unhost_path
gupnp_control_point_browse_stop
Gupnp 函数


Stop browsing

gupnp_control_point_browse_start
gupnp_control_point_callback_set
Gupnp 函数
PHP Manual

gupnp_control_point_browse_stop

(PECL gupnp >= 0.1.0)

gupnp_control_point_browse_stop — Stop browsing

说明

bool gupnp_control_point_browse_stop ( resource $cpoint )

Stop the search and calls user-defined callback.

参数

cpoint

A control point identifier, returned by gupnp_control_point_new().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • gupnp_control_point_new() - Create a new control point
  • gupnp_control_point_browse_start() - Start browsing

gupnp_control_point_browse_start
gupnp_control_point_callback_set
Gupnp 函数


Set control point callback

gupnp_control_point_browse_stop
gupnp_control_point_new
Gupnp 函数
PHP Manual

gupnp_control_point_callback_set

(PECL gupnp >= 0.1.0)

gupnp_control_point_callback_set — Set control point callback

说明

bool gupnp_control_point_callback_set ( resource $cpoint , int $signal , mixed $callback [, mixed $arg ] )

Set control point callback function for signal.

参数

cpoint

A control point identifier, returned by gupnp_control_point_new().

signal

The value of signal. Signal can be one of the following values:

GUPNP_SIGNAL_DEVICE_PROXY_AVAILABLE
Emitted whenever a new device has become available.
GUPNP_SIGNAL_DEVICE_PROXY_UNAVAILABLE
Emitted whenever a device is not available any more.
GUPNP_SIGNAL_SERVICE_PROXY_AVAILABLE
Emitted whenever a new service has become available.
GUPNP_SIGNAL_SERVICE_PROXY_UNAVAILABLE
Emitted whenever a service is not available any more.

callback

The callback function for the certain signal. Typically, callback function takes on two parameters. The proxy parameter's identifier being the first, and the arg second.

arg

User data for callback.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Create new UPnP context and start browsing

<?php

function device_proxy_available_cb($proxy, $arg)
{
    $info = gupnp_device_info_get($proxy);

    $type = $info['device_type'];
    $location = $info['location'];

    printf("Device available:\n");
    printf("type:     %s\n", $type);
    printf("location: %s\n", $location);
}

/* Create the UPnP context */
$context = gupnp_context_new();

if (!$context) {
 die("Error creating the GUPnP context\n");
}

/* We're interested in everything */
$cp = gupnp_control_point_new($context, "ssdp:all");

gupnp_control_point_callback_set($cp,
    GUPNP_SIGNAL_DEVICE_PROXY_AVAILABLE, 'device_proxy_available_cb');

/* Start for browsing */
gupnp_control_point_browse_start($cp);

?>

错误／异常

Issues E_WARNING with not valid callback function.

参见

  • gupnp_control_point_new() - Create a new control point
  • gupnp_control_point_browse_start() - Start browsing

gupnp_control_point_browse_stop
gupnp_control_point_new
Gupnp 函数


Create a new control point

gupnp_control_point_callback_set
gupnp_device_action_callback_set
Gupnp 函数
PHP Manual

gupnp_control_point_new

(PECL gupnp >= 0.1.0)

gupnp_control_point_new — Create a new control point

说明

resource gupnp_control_point_new ( resource $context , string $target )

Create a new control point with the specified target.

参数

context

A context identifier, returned by gupnp_context_new().

target

The search target. target should be a service or device name, such as urn:schemas-upnp-org:service:WANIPConnection:1 or urn:schemas-upnp-org:device:MediaRenderer:1.

返回值

A control point identifier.

gupnp_control_point_callback_set
gupnp_device_action_callback_set
Gupnp 函数


Set device callback function

gupnp_control_point_new
gupnp_device_info_get_service
Gupnp 函数
PHP Manual

gupnp_device_action_callback_set

(PECL gupnp >= 0.1.0)

gupnp_device_action_callback_set — Set device callback function

说明

bool gupnp_device_action_callback_set ( resource $root_device , int $signal , string $action_name , mixed $callback [, mixed $arg ] )

Set device callback function for signal and action.

参数

root_device

A root device identifier, returned by gupnp_root_device_new().

signal

The value of signal. Signal can be one of the following values:

GUPNP_SIGNAL_ACTION_INVOKED
Emitted whenever an action is invoked. Handler should process action and must call either gupnp_service_action_return() or gupnp_service_action_return_error().
GUPNP_SIGNAL_NOTIFY_FAILED
Emitted whenever notification of a client fails.

action_name

The name of action.

callback

The callback function for the certain signal. Typically, callback function takes on three parameters. The service parameter's identifier being the first, action parameter's identifier (in case GUPNP_SIGNAL_ACTION_INVOKED signal) or error parameter's message (in case GUPNP_SIGNAL_NOTIFY_FAILED signal) being the second, and the arg is third.

arg

User data for callback.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Issues E_WARNING either with not valid callback function or with not valid signal.

参见

  • gupnp_root_device_new() - Create a new root device

gupnp_control_point_new
gupnp_device_info_get_service
Gupnp 函数


Get the service with type

gupnp_device_action_callback_set
gupnp_device_info_get
Gupnp 函数
PHP Manual

gupnp_device_info_get_service

(PECL gupnp >= 0.1.0)

gupnp_device_info_get_service — Get the service with type

说明

resource gupnp_device_info_get_service ( resource $root_device , string $type )

Get the service with type or false if no such device was found.

参数

root_device

A root device identifier, returned by gupnp_root_device_new().

type

The type of the service to be retrieved.

返回值

A service identifier.

范例

Example #1 Create new UPnP context and get device info service

<?php

/* Create the UPnP context */
$context = gupnp_context_new();

if (!$context) {
 die("Error creating the GUPnP context\n");
}

/* Create root device */
$location = "/BinaryLight1.xml";
$dev = gupnp_root_device_new($context, $location);

/* Set root device is available */
gupnp_root_device_set_available($dev, true);

/* Get the switch service from the root device */
$service_type = "urn:schemas-upnp-org:service:SwitchPower:1";
$service = gupnp_device_info_get_service($dev, $service_type);
if (!$service) {
    die("Cannot get SwitchPower1 service\n");
}

?>

gupnp_device_action_callback_set
gupnp_device_info_get
Gupnp 函数


Get info of root device

gupnp_device_info_get_service
gupnp_root_device_get_available
Gupnp 函数
PHP Manual

gupnp_device_info_get

(PECL gupnp >= 0.1.0)

gupnp_device_info_get — Get info of root device

说明

array gupnp_device_info_get ( resource $root_device )

Get info of root device.

参数

root_device

A root device identifier, returned by gupnp_root_device_new().

返回值

Return array wich contains the information of the root device (like location, url, udn and etc).

gupnp_device_info_get_service
gupnp_root_device_get_available
Gupnp 函数


Check whether root device is available

gupnp_device_info_get
gupnp_root_device_get_relative_location
Gupnp 函数
PHP Manual

gupnp_root_device_get_available

(PECL gupnp >= 0.1.0)

gupnp_root_device_get_available — Check whether root device is available

说明

bool gupnp_root_device_get_available ( resource $root_device )

Get whether or not root_device is available (announcing its presence).

参数

root_device

A root device identifier, returned by gupnp_root_device_new().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • gupnp_root_device_set_available() - Set whether or not root_device is available

gupnp_device_info_get
gupnp_root_device_get_relative_location
Gupnp 函数


Get the relative location of root device.

gupnp_root_device_get_available
gupnp_root_device_new
Gupnp 函数
PHP Manual

gupnp_root_device_get_relative_location

(PECL gupnp >= 0.1.0)

gupnp_root_device_get_relative_location — Get the relative location of root device.

说明

string gupnp_root_device_get_relative_location ( resource $root_device )

Get the relative location of root device.

参数

root_device

A root device identifier, returned by gupnp_root_device_new().

返回值

The relative location of root device

gupnp_root_device_get_available
gupnp_root_device_new
Gupnp 函数


Create a new root device

gupnp_root_device_get_relative_location
gupnp_root_device_set_available
Gupnp 函数
PHP Manual

gupnp_root_device_new

(PECL gupnp >= 0.1.0)

gupnp_root_device_new — Create a new root device

说明

resource gupnp_root_device_new ( resource $context , string $location , string $description_dir )

Create a new root device, automatically downloading and parsing location.

参数

context

A context identifier, returned by gupnp_context_new().

location

Location of the description file for this device, relative to the HTTP root

返回值

A root device identifier.

范例

Example #1 Create new UPnP context and get device info service

<?php

/* Create the UPnP context */
$context = gupnp_context_new();

if (!$context) {
 die("Error creating the GUPnP context\n");
}

/* Create root device */
$location = "/BinaryLight1.xml";
$dev = gupnp_root_device_new($context, $location);

?>

参见

  • gupnp_root_device_set_available() - Set whether or not root_device is available
  • gupnp_root_device_start() - Start main loop
  • gupnp_root_device_stop() - Stop main loop

gupnp_root_device_get_relative_location
gupnp_root_device_set_available
Gupnp 函数


Set whether or not root_device is available

gupnp_root_device_new
gupnp_root_device_start
Gupnp 函数
PHP Manual

gupnp_root_device_set_available

(PECL gupnp >= 0.1.0)

gupnp_root_device_set_available — Set whether or not root_device is available

说明

bool gupnp_root_device_set_available ( resource $root_device , bool $available )

Controls whether or not root_device is available (announcing its presence).

参数

root_device

A root device identifier, returned by gupnp_root_device_new().

available

Set TRUE if root_device should be available.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • gupnp_root_device_get_available() - Check whether root device is available

gupnp_root_device_new
gupnp_root_device_start
Gupnp 函数


Start main loop

gupnp_root_device_set_available
gupnp_root_device_stop
Gupnp 函数
PHP Manual

gupnp_root_device_start

(PECL gupnp >= 0.1.0)

gupnp_root_device_start — Start main loop

说明

bool gupnp_root_device_start ( resource $root_device )

Start root server's main loop.

参数

root_device

A root device identifier, returned by gupnp_root_device_new().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • gupnp_root_device_stop() - Stop main loop

gupnp_root_device_set_available
gupnp_root_device_stop
Gupnp 函数


Stop main loop

gupnp_root_device_start
gupnp_service_action_get
Gupnp 函数
PHP Manual

gupnp_root_device_stop

(PECL gupnp >= 0.1.0)

gupnp_root_device_stop — Stop main loop

说明

bool gupnp_root_device_stop ( resource $root_device )

Stop root server's main loop.

参数

root_device

A root device identifier, returned by gupnp_root_device_new().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • gupnp_root_device_start() - Start main loop

gupnp_root_device_start
gupnp_service_action_get
Gupnp 函数


Retrieves the specified action arguments

gupnp_root_device_stop
gupnp_service_action_return_error
Gupnp 函数
PHP Manual

gupnp_service_action_get

(PECL gupnp >= 0.1.0)

gupnp_service_action_get — Retrieves the specified action arguments

说明

mixed gupnp_service_action_get ( resource $action , string $name , int $type )

Retrieves the specified action arguments.

参数

action

A service action identifier.

name

The name of the variable to retrieve.

type

The type of the variable to retrieve. Type can be one of the following values:

GUPNP_TYPE_BOOLEAN
Type of the variable is boolean.
GUPNP_TYPE_INT
Type of the variable is integer.
GUPNP_TYPE_LONG
Type of the variable is long.
GUPNP_TYPE_DOUBLE
Type of the variable is double.
GUPNP_TYPE_FLOAT
Type of the variable is float.
GUPNP_TYPE_STRING
Type of the variable is string.

返回值

The value of the variable.

错误／异常

Issues E_WARNING with not correctly defined type of the variable.

参见

  • gupnp_service_action_set() - Sets the specified action return values

gupnp_root_device_stop
gupnp_service_action_return_error
Gupnp 函数


Return error code

gupnp_service_action_get
gupnp_service_action_return
Gupnp 函数
PHP Manual

gupnp_service_action_return_error

(PECL gupnp >= 0.1.0)

gupnp_service_action_return_error — Return error code

说明

bool gupnp_service_action_return_error ( resource $action , int $error_code [, string $error_description ] )

Return error code.

参数

action

A service action identifier.

error_code

The error code. Signal can be one of the following values or user defined:

GUPNP_CONTROL_ERROR_INVALID_ACTION
The action name was invalid.
GUPNP_CONTROL_ERROR_INVALID_ARGS
The action arguments were invalid.
GUPNP_CONTROL_ERROR_OUT_OF_SYNC
Out of sync (deprecated).
GUPNP_CONTROL_ERROR_ACTION_FAILED
The action failed.

error_description

The error description.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • gupnp_service_action_return() - Return successfully

gupnp_service_action_get
gupnp_service_action_return
Gupnp 函数


Return successfully

gupnp_service_action_return_error
gupnp_service_action_set
Gupnp 函数
PHP Manual

gupnp_service_action_return

(PECL gupnp >= 0.1.0)

gupnp_service_action_return — Return successfully

说明

bool gupnp_service_action_return ( resource $action )

Return successfully.

参数

action

A service action identifier.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • gupnp_service_action_return_error() - Return error code

gupnp_service_action_return_error
gupnp_service_action_set
Gupnp 函数


Sets the specified action return values

gupnp_service_action_return
gupnp_service_freeze_notify
Gupnp 函数
PHP Manual

gupnp_service_action_set

(PECL gupnp >= 0.1.0)

gupnp_service_action_set — Sets the specified action return values

说明

bool gupnp_service_action_set ( resource $action , string $name , int $type , mixed $value )

Sets the specified action return values.

参数

action

A service action identifier.

name

The name of the variable to retrieve.

type

The type of the variable to retrieve. Type can be one of the following values:

GUPNP_TYPE_BOOLEAN
Type of the variable is boolean.
GUPNP_TYPE_INT
Type of the variable is integer.
GUPNP_TYPE_LONG
Type of the variable is long.
GUPNP_TYPE_DOUBLE
Type of the variable is double.
GUPNP_TYPE_FLOAT
Type of the variable is float.
GUPNP_TYPE_STRING
Type of the variable is string.

value

The value of the variable to retrieve.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Issues E_WARNING with neither not correctly defined type of the variable or the value is not corresponding to the defined type.

参见

  • gupnp_service_action_get() - Retrieves the specified action arguments

gupnp_service_action_return
gupnp_service_freeze_notify
Gupnp 函数


Freeze new notifications

gupnp_service_action_set
gupnp_service_info_get_introspection
Gupnp 函数
PHP Manual

gupnp_service_freeze_notify

(PECL gupnp >= 0.1.0)

gupnp_service_freeze_notify — Freeze new notifications

说明

bool gupnp_service_freeze_notify ( resource $service )

Causes new notifications to be queued up until gupnp_service_thaw_notify() is called.

参数

service

A service identifier.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • gupnp_service_notify() - Notifies listening clients
  • gupnp_service_thaw_notify() - Sends out any pending notifications and stops queuing of new ones.

gupnp_service_action_set
gupnp_service_info_get_introspection
Gupnp 函数


Get resource introspection of service

gupnp_service_freeze_notify
gupnp_service_info_get
Gupnp 函数
PHP Manual

gupnp_service_info_get_introspection

(PECL gupnp >= 0.1.0)

gupnp_service_info_get_introspection — Get resource introspection of service

说明

mixed gupnp_service_info_get_introspection ( resource $proxy [, mixed $callback [, mixed $arg ]] )

Get resource introspection of service or register callback if corresponding parameter was passed.

参数

proxy

A service proxy identifier.

callback

The callback function to be called when introspection object is ready. Typically, callback function takes on three parameters. The introspection parameter's identifier being the first, error parameter's message being the second, and the arg is third.

arg

User data for callback.

返回值

Return true if callback function was defined. Return introspection identifier if callback function was omited.

错误／异常

Issues E_WARNING with not valid callback function.

gupnp_service_freeze_notify
gupnp_service_info_get
Gupnp 函数


Get full info of service

gupnp_service_info_get_introspection
gupnp_service_introspection_get_state_variable
Gupnp 函数
PHP Manual

gupnp_service_info_get

(PECL gupnp >= 0.1.0)

gupnp_service_info_get — Get full info of service

说明

array gupnp_service_info_get ( resource $proxy )

Get full info of service.

参数

proxy

A service proxy identifier.

返回值

Return array wich contains the information of the service (like location, url, udn and etc).

gupnp_service_info_get_introspection
gupnp_service_introspection_get_state_variable
Gupnp 函数


Returns the state variable data

gupnp_service_info_get
gupnp_service_notify
Gupnp 函数
PHP Manual

gupnp_service_introspection_get_state_variable

(PECL gupnp >= 0.1.0)

gupnp_service_introspection_get_state_variable — Returns the state variable data

说明

array gupnp_service_introspection_get_state_variable ( resource $introspection , string $variable_name )

Returns the state variable data by the name variable_name in this service.

参数

introspection

A introspection identifier.

variable_name

The name of the variable to retreive.

返回值

Return the state variable data or FALSE.

gupnp_service_info_get
gupnp_service_notify
Gupnp 函数


Notifies listening clients

gupnp_service_introspection_get_state_variable
gupnp_service_proxy_action_get
Gupnp 函数
PHP Manual

gupnp_service_notify

(PECL gupnp >= 0.1.0)

gupnp_service_notify — Notifies listening clients

说明

bool gupnp_service_notify ( resource $service , string $name , int $type , mixed $value )

Notifies listening clients that the property have changed to the specified values.

参数

service

A service identifier.

name

The name of the variable.

type

The type of the variable. Type can be one of the following values:

GUPNP_TYPE_BOOLEAN
Type of the variable is boolean.
GUPNP_TYPE_INT
Type of the variable is integer.
GUPNP_TYPE_LONG
Type of the variable is long.
GUPNP_TYPE_DOUBLE
Type of the variable is double.
GUPNP_TYPE_FLOAT
Type of the variable is float.
GUPNP_TYPE_STRING
Type of the variable is string.

value

The value of the variable.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Issues E_WARNING with either not correctly defined type of the variable or the value is not corresponding to the defined type.

参见

  • gupnp_service_freeze_notify() - Freeze new notifications
  • gupnp_service_thaw_notify() - Sends out any pending notifications and stops queuing of new ones.

gupnp_service_introspection_get_state_variable
gupnp_service_proxy_action_get
Gupnp 函数


Send action to the service and get value

gupnp_service_notify
gupnp_service_proxy_action_set
Gupnp 函数
PHP Manual

gupnp_service_proxy_action_get

(PECL gupnp >= 0.1.0)

gupnp_service_proxy_action_get — Send action to the service and get value

说明

mixed gupnp_service_proxy_action_get ( resource $proxy , string $action , string $name , int $type )

Send action with parameters to the service exposed by proxy synchronously and get value.

参数

proxy

A service proxy identifier.

action

An action.

name

The action name.

type

The type of the variable to retrieve. Type can be one of the following values:

GUPNP_TYPE_BOOLEAN
Type of the variable is boolean.
GUPNP_TYPE_INT
Type of the variable is integer.
GUPNP_TYPE_LONG
Type of the variable is long.
GUPNP_TYPE_DOUBLE
Type of the variable is double.
GUPNP_TYPE_FLOAT
Type of the variable is float.
GUPNP_TYPE_STRING
Type of the variable is string.

返回值

Return value of the action.

错误／异常

Issues E_WARNING with either not correctly defined type of the action or unable to send action.

参见

  • gupnp_service_proxy_action_set() - Send action to the service and set value
  • gupnp_service_proxy_send_action() - Send action with multiple parameters synchronously

gupnp_service_notify
gupnp_service_proxy_action_set
Gupnp 函数


Send action to the service and set value

gupnp_service_proxy_action_get
gupnp_service_proxy_add_notify
Gupnp 函数
PHP Manual

gupnp_service_proxy_action_set

(PECL gupnp >= 0.1.0)

gupnp_service_proxy_action_set — Send action to the service and set value

说明

bool gupnp_service_proxy_action_set ( resource $proxy , string $action , string $name , mixed $value , int $type )

Send action with parameters to the service exposed by proxy synchronously and set value.

参数

proxy

A service proxy identifier.

action

An action.

name

The action name.

value

The action value.

type

The type of the action. Type can be one of the following values:

GUPNP_TYPE_BOOLEAN
Type of the variable is boolean.
GUPNP_TYPE_INT
Type of the variable is integer.
GUPNP_TYPE_LONG
Type of the variable is long.
GUPNP_TYPE_DOUBLE
Type of the variable is double.
GUPNP_TYPE_FLOAT
Type of the variable is float.
GUPNP_TYPE_STRING
Type of the variable is string.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Issues E_WARNING with either not correctly defined type of the action or unable to send action.

参见

  • gupnp_service_proxy_action_get() - Send action to the service and get value
  • gupnp_service_proxy_send_action() - Send action with multiple parameters synchronously

gupnp_service_proxy_action_get
gupnp_service_proxy_add_notify
Gupnp 函数


Sets up callback for variable change notification

gupnp_service_proxy_action_set
gupnp_service_proxy_callback_set
Gupnp 函数
PHP Manual

gupnp_service_proxy_add_notify

(PECL gupnp >= 0.1.0)

gupnp_service_proxy_add_notify — Sets up callback for variable change notification

说明

bool gupnp_service_proxy_add_notify ( resource $proxy , string $value , int $type , mixed $callback [, mixed $arg ] )

Sets up callback to be called whenever a change notification for variable is recieved.

参数

proxy

A service proxy identifier.

value

The variable to add notification for.

type

The type of the variable. Type can be one of the following values:

GUPNP_TYPE_BOOLEAN
Type of the variable is boolean.
GUPNP_TYPE_INT
Type of the variable is integer.
GUPNP_TYPE_LONG
Type of the variable is long.
GUPNP_TYPE_DOUBLE
Type of the variable is double.
GUPNP_TYPE_FLOAT
Type of the variable is float.
GUPNP_TYPE_STRING
Type of the variable is string.

callback

The callback to call when variable changes. Typically, callback function takes on three parameters. The variable parameter being the first, value parameter being the second, and the arg is third.

arg

User data for callback.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • gupnp_service_proxy_remove_notify() - Cancels the variable change notification

gupnp_service_proxy_action_set
gupnp_service_proxy_callback_set
Gupnp 函数


Set service proxy callback for signal

gupnp_service_proxy_add_notify
gupnp_service_proxy_get_subscribed
Gupnp 函数
PHP Manual

gupnp_service_proxy_callback_set

(PECL gupnp >= 0.1.0)

gupnp_service_proxy_callback_set — Set service proxy callback for signal

说明

bool gupnp_service_proxy_callback_set ( resource $proxy , int $signal , mixed $callback [, mixed $arg ] )

Set service proxy callback for signal.

参数

proxy

A service proxy identifier.

signal

The value of signal.

GUPNP_SIGNAL_SUBSCRIPTION_LOST
Emitted whenever the subscription to this service has been lost due to an error condition.

callback

The callback function for the certain signal. Typically, callback function takes on two parameters. error parameter's message being the first, and the arg is second.

arg

User data for callback.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Issues E_WARNING either with not valid callback function or with not valid signal.

gupnp_service_proxy_add_notify
gupnp_service_proxy_get_subscribed
Gupnp 函数


Check whether subscription is valid to the service

gupnp_service_proxy_callback_set
gupnp_service_proxy_remove_notify
Gupnp 函数
PHP Manual

gupnp_service_proxy_get_subscribed

(PECL gupnp >= 0.1.0)

gupnp_service_proxy_get_subscribed — Check whether subscription is valid to the service

说明

bool gupnp_service_proxy_get_subscribed ( resource $proxy )

Check whether subscription is valid to the service.

参数

proxy

A service proxy identifier.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • gupnp_service_proxy_set_subscribed() - (Un)subscribes to the service.

gupnp_service_proxy_callback_set
gupnp_service_proxy_remove_notify
Gupnp 函数


Cancels the variable change notification

gupnp_service_proxy_get_subscribed
gupnp_service_proxy_send_action
Gupnp 函数
PHP Manual

gupnp_service_proxy_remove_notify

(PECL gupnp >= 0.1.0)

gupnp_service_proxy_remove_notify — Cancels the variable change notification

说明

bool gupnp_service_proxy_remove_notify ( resource $proxy , string $value )

Cancels the variable change notification.

参数

proxy

A service proxy identifier.

value

The variable to add notification for.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • gupnp_service_proxy_add_notify() - Sets up callback for variable change notification

gupnp_service_proxy_get_subscribed
gupnp_service_proxy_send_action
Gupnp 函数


Send action with multiple parameters synchronously

gupnp_service_proxy_remove_notify
gupnp_service_proxy_set_subscribed
Gupnp 函数
PHP Manual

gupnp_service_proxy_send_action

(PECL gupnp >= 0.2.0)

gupnp_service_proxy_send_action — Send action with multiple parameters synchronously

说明

array gupnp_service_proxy_send_action ( resource $proxy , string $action , array $in_params , array $out_params )

Send action with parameters in_params to the service exposed by proxy synchronously and return out_params with values or FALSE on error.

参数

proxy

A service proxy identifier.

action

An action.

in_params

An array of in parameters. Each entry in in_params is supposed to an array containing name, type and value of the parameters.

out_params

An array of out parameters. Each entry in out_params is supposed to an array containing name and type of the parameters.

返回值

Return out_params array with values or FALSE on error.

错误／异常

Issues E_WARNING with either not correctly defined in_params and out_params or unable to send action.

参见

  • gupnp_service_proxy_action_get() - Send action to the service and get value
  • gupnp_service_proxy_action_set() - Send action to the service and set value

gupnp_service_proxy_remove_notify
gupnp_service_proxy_set_subscribed
Gupnp 函数


(Un)subscribes to the service.

gupnp_service_proxy_send_action
gupnp_service_thaw_notify
Gupnp 函数
PHP Manual

gupnp_service_proxy_set_subscribed

(PECL gupnp >= 0.1.0)

gupnp_service_proxy_set_subscribed — (Un)subscribes to the service.

说明

bool gupnp_service_proxy_set_subscribed ( resource $proxy , bool $subscribed )

(Un)subscribes to the service.

参数

proxy

A service proxy identifier.

subscribed

Set TRUE to subscribe to this service.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • gupnp_service_proxy_get_subscribed() - Check whether subscription is valid to the service

gupnp_service_proxy_send_action
gupnp_service_thaw_notify
Gupnp 函数


Sends out any pending notifications and stops queuing of new ones.

gupnp_service_proxy_set_subscribed
Hyperwave API
Gupnp 函数
PHP Manual

gupnp_service_thaw_notify

(PECL gupnp >= 0.1.0)

gupnp_service_thaw_notify — Sends out any pending notifications and stops queuing of new ones.

说明

bool gupnp_service_thaw_notify ( resource $service )

Sends out any pending notifications and stops queuing of new ones.

参数

service

A service identifier.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • gupnp_service_notify() - Notifies listening clients
  • gupnp_service_freeze_notify() - Freeze new notifications

gupnp_service_proxy_set_subscribed
Hyperwave API
Gupnp 函数


Hyperwave API

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Integration with Apache
  • Hyperwave API 函数
    • hw_api::checkin — Checks in an object
    • hw_api::checkout — Checks out an object
    • hw_api::children — Returns children of an object
    • hw_api::content — Returns content of an object
    • hw_api::copy — Copies physically
    • hw_api::dbstat — Returns statistics about database server
    • hw_api::dcstat — Returns statistics about document cache server
    • hw_api::dstanchors — Returns a list of all destination anchors
    • hw_api::dstofsrcanchor — Returns destination of a source anchor
    • hw_api::find — Search for objects
    • hw_api::ftstat — Returns statistics about fulltext server
    • hw_api::hwstat — Returns statistics about Hyperwave server
    • hw_api::identify — Log into Hyperwave Server
    • hw_api::info — Returns information about server configuration
    • hw_api::insert — Inserts a new object
    • hw_api::insertanchor — Inserts a new object of type anchor
    • hw_api::insertcollection — Inserts a new object of type collection
    • hw_api::insertdocument — Inserts a new object of type document
    • hw_api::link — Creates a link to an object
    • hw_api::lock — Locks an object
    • hw_api::move — Moves object between collections
    • hw_api::object — Retrieve attribute information
    • hw_api::objectbyanchor — Returns the object an anchor belongs to
    • hw_api::parents — Returns parents of an object
    • hw_api::remove — Delete an object
    • hw_api::replace — Replaces an object
    • hw_api::setcommittedversion — Commits version other than last version
    • hw_api::srcanchors — Returns a list of all source anchors
    • hw_api::srcsofdst — Returns source of a destination object
    • hw_api::unlock — Unlocks a locked object
    • hw_api::user — Returns the own user object
    • hw_api::userlist — Returns a list of all logged in users
    • hw_api_attribute::key — Returns key of the attribute
    • hw_api_attribute::langdepvalue — Returns value for a given language
    • hw_api_attribute::value — Returns value of the attribute
    • hw_api_attribute::values — Returns all values of the attribute
    • hw_api_content::mimetype — Returns mimetype
    • hw_api_content::read — Read content
    • hw_api_error::count — Returns number of reasons
    • hw_api_error::reason — Returns reason of error
    • hw_api_object::assign — Clones object
    • hw_api_object::attreditable — Checks whether an attribute is editable
    • hw_api_object::count — Returns number of attributes
    • hw_api_object::insert — Inserts new attribute
    • hw_api_object::remove — Removes attribute
    • hw_api_object::title — Returns the title attribute
    • hw_api_object::value — Returns value of attribute
    • hw_api_reason::description — Returns description of reason
    • hw_api_reason::type — Returns type of reason
    • hwapi_attribute_new — Creates instance of class hw_api_attribute
    • hwapi_content_new — Create new instance of class hw_api_content
    • hwapi_hgcsp — Returns object of class hw_api
    • hwapi_object_new — Creates a new instance of class hwapi_object_new
gupnp_service_thaw_notify
简介
其它服务


简介

Hyperwave has been developed at » IICM in Graz. It started with the name Hyper-G and changed to Hyperwave when it was commercialised (in 1996).

Hyperwave is not free software. The current version, 5.5, is available at » http://www.hyperwave.com/. A time limited version can be ordered for free (30 days).

Hyperwave is an information system similar to a database (HIS, Hyperwave Information Server). Its focus is the storage and management of documents. A document can be any possible piece of data that may as well be stored in file. Each document is accompanied by its object record. The object record contains meta data for the document. The meta data is a list of attributes which can be extended by the user. Certain attributes are always set by the Hyperwave server, other may be modified by the user.

Note:

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.2.0.

Hyperwave API
安装／配置
Hyperwave API


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Hyperwave API


需求

Since 2001 there is a Hyperwave SDK available. It supports Java, JavaScript and C++. This PHP Extension is based on the C++ interface. In order to activate the hwapi support in PHP you will have to install the Hyperwave SDK first.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/hwapi.

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.2.0

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Hyperwave API configuration options
名字 | 默认 | 可修改范围 | 更新日志
hwapi.allow_persistent | "0" | PHP_INI_SYSTEM |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

安装
资源类型
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
Integration with Apache
Hyperwave API


Integration with Apache

The Hyperwave extension is best used when PHP is compiled as an Apache module. In such a case the underlying Hyperwave server can be hidden from users almost completely if Apache uses its rewriting engine. The following instructions will explain this.

Since PHP with Hyperwave support built into Apache is intended to replace the native Hyperwave solution based on Wavemaster, we will assume that the Apache server will only serve as a Hyperwave web interface for these examples. This is not necessary but it simplifies the configuration. The concept is quite simple. First of all you need a PHP script which evaluates the $_ENV['PATH_INFO'] variable and treats its value as the name of a Hyperwave object. Let's call this script 'Hyperwave'. The URL http://your.hostname/Hyperwave/name_of_object would than return the Hyperwave object with the name 'name_of_object'. Depending on the type of the object the script has to react accordingly. If it is a collection, it will probably return a list of children. If it is a document it will return the mime type and the content. A slight improvement can be achieved if the Apache rewriting engine is used. From the users point of view it would be more straight forward if the URL http://your.hostname/name_of_object would return the object. The rewriting rule is quite easy:

RewriteRule ^/(.*) /usr/local/apache/htdocs/HyperWave/$1 [L]
Now every URL relates to an object in the Hyperwave server. This causes a simple to solve problem. There is no way to execute a different script, e.g. for searching, than the 'Hyperwave' script. This can be fixed with another rewriting rule like the following:
RewriteRule ^/hw/(.*) /usr/local/apache/htdocs/hw/$1 [L]
This will reserve the directory /usr/local/apache/htdocs/hw for additional scripts and other files. Just make sure this rule is evaluated before the one above. There is just a little drawback: all Hyperwave objects whose name starts with 'hw/' will be shadowed. So, make sure you don't use such names. If you need more directories, e.g. for images just add more rules or place them all in one directory. Before you put those instructions, don't forget to turn on the rewriting engine with
RewriteEngine on
You will need scripts:
  • to return the object itself
  • to allow searching
  • to identify yourself
  • to set your profile
  • one for each additional function like to show the object attributes, to show information about users, to show the status of the server, etc.

As an alternative to the Rewrite Engine, you can also consider using the Apache ErrorDocument directive, but be aware, that ErrorDocument redirected pages cannot receive POST data.

预定义常量
Hyperwave API 函数
Hyperwave API


Integration with Apache
hw_api::checkin
Hyperwave API
PHP Manual

Hyperwave API 函数

Integration with Apache

The integration with Apache and possible other servers has been described in the separate chapter.

Classes

The API provided by the HW_API extension is fully object oriented. It is very similar to the C++ interface of the Hyperwave SDK. It consist of the following classes.

  • HW_API
  • HW_API_Object
  • HW_API_Attribute
  • HW_API_Error
  • HW_API_Content
  • HW_API_Reason
Some basic classes like HW_API_String, HW_API_String_Array, etc., which exist in the Hyperwave SDK have not been implemented since PHP has powerful replacements for them.

Each class has certain method, whose names are identical to its counterparts in the Hyperwave SDK. Passing arguments to this function differs from all the other PHP extensions but is close to the C++ API of the HW SDK. Instead of passing several parameters they are all put into an associated array and passed as one parameter. The names of the keys are identical to those documented in the HW SDK. The common parameters are listed below. If other parameters are required they will be documented if needed.

  • objectIdentifier The name or id of an object, e.g. "rootcollection", "0x873A8768 0x00000002".
  • parentIdentifier The name or id of an object which is considered to be a parent.
  • object An instance of class HW_API_Object.
  • parameters An instance of class HW_API_Object.
  • version The version of an object.
  • mode An integer value determine the way an operation is executed.
  • attributeSelector Any array of strings, each containing a name of an attribute. This is used if you retrieve the object record and want to include certain attributes.
  • objectQuery A query to select certain object out of a list of objects. This is used to reduce the number of objects which was delivered by a function like hw_api::children() or hw_api::find().

Note:

Methods returning boolean can return TRUE, FALSE or HW_API_Error object.

Table of Contents

  • hw_api::checkin — Checks in an object
  • hw_api::checkout — Checks out an object
  • hw_api::children — Returns children of an object
  • hw_api::content — Returns content of an object
  • hw_api::copy — Copies physically
  • hw_api::dbstat — Returns statistics about database server
  • hw_api::dcstat — Returns statistics about document cache server
  • hw_api::dstanchors — Returns a list of all destination anchors
  • hw_api::dstofsrcanchor — Returns destination of a source anchor
  • hw_api::find — Search for objects
  • hw_api::ftstat — Returns statistics about fulltext server
  • hw_api::hwstat — Returns statistics about Hyperwave server
  • hw_api::identify — Log into Hyperwave Server
  • hw_api::info — Returns information about server configuration
  • hw_api::insert — Inserts a new object
  • hw_api::insertanchor — Inserts a new object of type anchor
  • hw_api::insertcollection — Inserts a new object of type collection
  • hw_api::insertdocument — Inserts a new object of type document
  • hw_api::link — Creates a link to an object
  • hw_api::lock — Locks an object
  • hw_api::move — Moves object between collections
  • hw_api::object — Retrieve attribute information
  • hw_api::objectbyanchor — Returns the object an anchor belongs to
  • hw_api::parents — Returns parents of an object
  • hw_api::remove — Delete an object
  • hw_api::replace — Replaces an object
  • hw_api::setcommittedversion — Commits version other than last version
  • hw_api::srcanchors — Returns a list of all source anchors
  • hw_api::srcsofdst — Returns source of a destination object
  • hw_api::unlock — Unlocks a locked object
  • hw_api::user — Returns the own user object
  • hw_api::userlist — Returns a list of all logged in users
  • hw_api_attribute::key — Returns key of the attribute
  • hw_api_attribute::langdepvalue — Returns value for a given language
  • hw_api_attribute::value — Returns value of the attribute
  • hw_api_attribute::values — Returns all values of the attribute
  • hw_api_content::mimetype — Returns mimetype
  • hw_api_content::read — Read content
  • hw_api_error::count — Returns number of reasons
  • hw_api_error::reason — Returns reason of error
  • hw_api_object::assign — Clones object
  • hw_api_object::attreditable — Checks whether an attribute is editable
  • hw_api_object::count — Returns number of attributes
  • hw_api_object::insert — Inserts new attribute
  • hw_api_object::remove — Removes attribute
  • hw_api_object::title — Returns the title attribute
  • hw_api_object::value — Returns value of attribute
  • hw_api_reason::description — Returns description of reason
  • hw_api_reason::type — Returns type of reason
  • hwapi_attribute_new — Creates instance of class hw_api_attribute
  • hwapi_content_new — Create new instance of class hw_api_content
  • hwapi_hgcsp — Returns object of class hw_api
  • hwapi_object_new — Creates a new instance of class hwapi_object_new
Integration with Apache
hw_api::checkin
Hyperwave API


Checks in an object

Hyperwave API 函数
hw_api::checkout
Hyperwave API 函数
PHP Manual

hw_api::checkin

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::checkin — Checks in an object

说明

bool hw_api::checkin ( array $parameter )

This function checks in an object or a whole hierarchy of objects. The parameters array contains the required element 'objectIdentifier' and the optional element 'version', 'comment', 'mode' and 'objectQuery'. 'version' sets the version of the object. It consists of the major and minor version separated by a period. If the version is not set, the minor version is incremented. 'mode' can be one of the following values:

HW_API_CHECKIN_NORMAL
Checks in and commits the object. The object must be a document.
HW_API_CHECKIN_RECURSIVE
If the object to check in is a collection, all children will be checked in recursively if they are documents. Trying to check in a collection would result in an error.
HW_API_CHECKIN_FORCE_VERSION_CONTROL
Checks in an object even if it is not under version control.
HW_API_CHECKIN_REVERT_IF_NOT_CHANGED
Check if the new version is different from the last version. Unless this is the case the object will be checked in.
HW_API_CHECKIN_KEEP_TIME_MODIFIED
Keeps the time modified from the most recent object.
HW_API_CHECKIN_NO_AUTO_COMMIT
The object is not automatically committed on check-in.

参数

parameter

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • hw_api::checkout

Hyperwave API 函数
hw_api::checkout
Hyperwave API 函数


Checks out an object

hw_api::checkin
hw_api::children
Hyperwave API 函数
PHP Manual

hw_api::checkout

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::checkout — Checks out an object

说明

bool hw_api::checkout ( array $parameter )

This function checks out an object or a whole hierarchy of objects.

参数

parameter

The parameters array contains the required element 'objectIdentifier' and the optional element 'version', 'mode' and 'objectQuery'. 'mode' can be one of the following values:

HW_API_CHECKIN_NORMAL
Checks out an object. The object must be a document.
HW_API_CHECKIN_RECURSIVE
If the object to check out is a collection, all children will be checked out recursively if they are documents. Trying to check out a collection would result in an error.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • hw_api::checkin

hw_api::checkin
hw_api::children
Hyperwave API 函数


Returns children of an object

hw_api::checkout
hw_api::content
Hyperwave API 函数
PHP Manual

hw_api::children

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::children — Returns children of an object

说明

array hw_api::children ( array $parameter )

Retrieves the children of a collection or the attributes of a document. The children can be further filtered by specifying an object query.

参数

parameter

The parameter array contains the required elements 'objectIdentifier' and the optional elements 'attributeSelector' and 'objectQuery'.

返回值

The return value is an array of objects of type HW_API_Object or HW_API_Error.

参见

  • hw_api::parents

hw_api::checkout
hw_api::content
Hyperwave API 函数


Returns content of an object

hw_api::children
hw_api::copy
Hyperwave API 函数
PHP Manual

hw_api::content

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::content — Returns content of an object

说明

HW_API_Content hw_api::content ( array $parameter )

This function returns the content of a document as an object of type hw_api_content.

参数

parameter

The parameter array contains the required elements 'objectidentifier' and the optional element 'mode'. The mode can be one of the constants HW_API_CONTENT_ALLLINKS, HW_API_CONTENT_REACHABLELINKS or HW_API_CONTENT_PLAIN.

HW_API_CONTENT_ALLLINKS means to insert all anchors even if the destination is not reachable.

HW_API_CONTENT_REACHABLELINKS tells this method to insert only reachable links and HW_API_CONTENT_PLAIN will lead to document without any links.

返回值

Returns an instance of hw_api_content.

hw_api::children
hw_api::copy
Hyperwave API 函数


Copies physically

hw_api::content
hw_api::dbstat
Hyperwave API 函数
PHP Manual

hw_api::copy

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::copy — Copies physically

说明

hw_api_content hw_api::copy ( array $parameter )

This function will make a physical copy including the content if it exists and returns the new object or an error object.

参数

parameter

The parameter array contains the required elements 'objectIdentifier' and 'destinationParentIdentifier'. The optional parameter is 'attributeSelector'`

返回值

Returns the copied object.

参见

  • hw_api::move
  • hw_api::link

hw_api::content
hw_api::dbstat
Hyperwave API 函数


Returns statistics about database server

hw_api::copy
hw_api::dcstat
Hyperwave API 函数
PHP Manual

hw_api::dbstat

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::dbstat — Returns statistics about database server

说明

hw_api_object hw_api::dbstat ( array $parameter )

Returns statistics about database server.

参数

parameter

返回值

参见

  • hw_api::dcstat
  • hw_api::hwstat
  • hw_api::ftstat

hw_api::copy
hw_api::dcstat
Hyperwave API 函数


Returns statistics about document cache server

hw_api::dbstat
hw_api::dstanchors
Hyperwave API 函数
PHP Manual

hw_api::dcstat

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::dcstat — Returns statistics about document cache server

说明

hw_api_object hw_api::dcstat ( array $parameter )

Returns statistics about document cache server.

参数

parameter

返回值

参见

  • hw_api::dbstat
  • hw_api::hwstat
  • hw_api::ftstat

hw_api::dbstat
hw_api::dstanchors
Hyperwave API 函数


Returns a list of all destination anchors

hw_api::dcstat
hw_api::dstofsrcanchor
Hyperwave API 函数
PHP Manual

hw_api::dstanchors

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::dstanchors — Returns a list of all destination anchors

说明

array hw_api::dstanchors ( array $parameter )

Retrieves all destination anchors of an object.

参数

parameter

The parameter array contains the required element 'objectIdentifier' and the optional elements 'attributeSelector' and 'objectQuery'.

返回值

参见

  • hw_api::srcanchors

hw_api::dcstat
hw_api::dstofsrcanchor
Hyperwave API 函数


Returns destination of a source anchor

hw_api::dstanchors
hw_api::find
Hyperwave API 函数
PHP Manual

hw_api::dstofsrcanchor

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::dstofsrcanchor — Returns destination of a source anchor

说明

hw_api_object hw_api::dstofsrcanchor ( array $parameter )

Retrieves the destination object pointed by the specified source anchors. The destination object can either be a destination anchor or a whole document.

参数

parameter

The parameters array contains the required element 'objectIdentifier' and the optional element 'attributeSelector'.

返回值

参见

  • hw_api::srcanchors
  • hw_api::dstanchors
  • hw_api::objectbyanchor

hw_api::dstanchors
hw_api::find
Hyperwave API 函数


Search for objects

hw_api::dstofsrcanchor
hw_api::ftstat
Hyperwave API 函数
PHP Manual

hw_api::find

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::find — Search for objects

说明

array hw_api::find ( array $parameter )

This functions searches for objects either by executing a key or/and full text query. The found objects can further be filtered by an optional object query. They are sorted by their importance. The second search operation is relatively slow and its result can be limited to a certain number of hits. This allows to perform an incremental search, each returning just a subset of all found documents, starting at a given index.

参数

parameter

The parameter array contains the 'keyquery' or/and 'fulltextquery' depending on who you would like to search. Optional parameters are 'objectquery', 'scope', 'languages' and 'attributeselector'. In case of an incremental search the optional parameters 'startIndex', 'numberOfObjectsToGet' and 'exactMatchUnit' can be passed.

返回值

hw_api::dstofsrcanchor
hw_api::ftstat
Hyperwave API 函数


Returns statistics about fulltext server

hw_api::find
hw_api::hwstat
Hyperwave API 函数
PHP Manual

hw_api::ftstat

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::ftstat — Returns statistics about fulltext server

说明

hw_api_object hw_api::ftstat ( array $parameter )

Returns statistics about fulltext server.

参数

parameter

返回值

参见

  • hw_api::dcstat
  • hw_api::dbstat
  • hw_api::hwstat

hw_api::find
hw_api::hwstat
Hyperwave API 函数


Returns statistics about Hyperwave server

hw_api::ftstat
hw_api::identify
Hyperwave API 函数
PHP Manual

hw_api::hwstat

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::hwstat — Returns statistics about Hyperwave server

说明

hw_api_object hw_api::hwstat ( array $parameter )

Returns statistics about Hyperwave server.

参数

parameter

返回值

参见

  • hw_api::dcstat
  • hw_api::dbstat
  • hw_api::ftstat

hw_api::ftstat
hw_api::identify
Hyperwave API 函数


Log into Hyperwave Server

hw_api::hwstat
hw_api::info
Hyperwave API 函数
PHP Manual

hw_api::identify

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::identify — Log into Hyperwave Server

说明

bool hw_api::identify ( array $parameter )

Logs into the Hyperwave Server.

参数

parameter

The parameter array must contain the elements 'username' and 'password'.

返回值

Returns an object of typeHW_API_Error if identification failed or TRUE if it was successful.

hw_api::hwstat
hw_api::info
Hyperwave API 函数


Returns information about server configuration

hw_api::identify
hw_api::insert
Hyperwave API 函数
PHP Manual

hw_api::info

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::info — Returns information about server configuration

说明

array hw_api::info ( array $parameter )

Returns information about server configuration.

参数

parameter

返回值

参见

  • hw_api::dcstat
  • hw_api::dbstat
  • hw_api::ftstat
  • hw_api::hwstat

hw_api::identify
hw_api::insert
Hyperwave API 函数


Inserts a new object

hw_api::info
hw_api::insertanchor
Hyperwave API 函数
PHP Manual

hw_api::insert

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::insert — Inserts a new object

说明

hw_api_object hw_api::insert ( array $parameter )

Insert a new object. The object type can be user, group, document or anchor. Depending on the type other object attributes has to be set.

参数

parameter

The parameter array contains the required elements 'object' and 'content' (if the object is a document) and the optional parameters 'parameters', 'mode' and 'attributeSelector'. The 'object' must contain all attributes of the object. 'parameters' is an object as well holding further attributes like the destination (attribute key is 'Parent'). 'content' is the content of the document. 'mode' can be a combination of the following flags:

HW_API_INSERT_NORMAL
The object in inserted into the server.
HW_API_INSERT_FORCE_VERSION_CONTROL
HW_API_INSERT_AUTOMATIC_CHECKOUT
HW_API_INSERT_PLAIN
HW_API_INSERT_KEEP_TIME_MODIFIED
HW_API_INSERT_DELAY_INDEXING

返回值

参见

  • hw_api::replace

hw_api::info
hw_api::insertanchor
Hyperwave API 函数


Inserts a new object of type anchor

hw_api::insert
hw_api::insertcollection
Hyperwave API 函数
PHP Manual

hw_api::insertanchor

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::insertanchor — Inserts a new object of type anchor

说明

hw_api_object hw_api::insertanchor ( array $parameter )

This function is a shortcut for hwapi_insert(). It inserts an object of type anchor and sets some of the attributes required for an anchor.

参数

parameter

The parameter array contains the required elements 'object' and 'documentIdentifier' and the optional elements 'destinationIdentifier', 'parameter', 'hint' and 'attributeSelector'. The 'documentIdentifier' specifies the document where the anchor shall be inserted. The target of the anchor is set in 'destinationIdentifier' if it already exists. If the target does not exists the element 'hint' has to be set to the name of object which is supposed to be inserted later. Once it is inserted the anchor target is resolved automatically.

返回值

参见

  • hw_api::insert
  • hw_api::insertdocument
  • hw_api::insertcollection

hw_api::insert
hw_api::insertcollection
Hyperwave API 函数


Inserts a new object of type collection

hw_api::insertanchor
hw_api::insertdocument
Hyperwave API 函数
PHP Manual

hw_api::insertcollection

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::insertcollection — Inserts a new object of type collection

说明

hw_api_object hw_api::insertcollection ( array $parameter )

This function is a shortcut for hwapi_insert(). It inserts an object of type collection and sets some of the attributes required for a collection.

参数

parameter

The parameter array contains the required elements 'object' and 'parentIdentifier' and the optional elements 'parameter' and 'attributeSelector'. See hwapi_insert() for the meaning of each element.

返回值

参见

  • hw_api::insert
  • hw_api::insertdocument
  • hw_api::insertanchor

hw_api::insertanchor
hw_api::insertdocument
Hyperwave API 函数


Inserts a new object of type document

hw_api::insertcollection
hw_api::link
Hyperwave API 函数
PHP Manual

hw_api::insertdocument

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::insertdocument — Inserts a new object of type document

说明

hw_api_object hw_api::insertdocument ( array $parameter )

This function is a shortcut for hwapi_insert(). It inserts an object with content and sets some of the attributes required for a document.

参数

parameter

The parameter array contains the required elements 'object', 'parentIdentifier' and 'content' and the optional elements 'mode', 'parameter' and 'attributeSelector'.

See hwapi_insert() for the meaning of each element.

返回值

参见

  • hw_api::insert
  • hw_api::insertcollection
  • hw_api::insertanchor

hw_api::insertcollection
hw_api::link
Hyperwave API 函数


Creates a link to an object

hw_api::insertdocument
hw_api::lock
Hyperwave API 函数
PHP Manual

hw_api::link

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::link — Creates a link to an object

说明

bool hw_api::link ( array $parameter )

Creates a link to an object. Accessing this link is like accessing the object to links points to.

参数

parameter

The parameter array contains the required elements 'objectIdentifier' and 'destinationParentIdentifier'. 'destinationParentIdentifier' is the target collection.

返回值

The function returns TRUE on success or an error object.

参见

  • hw_api::copy

hw_api::insertdocument
hw_api::lock
Hyperwave API 函数


Locks an object

hw_api::link
hw_api::move
Hyperwave API 函数
PHP Manual

hw_api::lock

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::lock — Locks an object

说明

bool hw_api::lock ( array $parameter )

Locks an object for exclusive editing by the user calling this function. The object can be only unlocked by this user or the system user.

参数

parameter

The parameter array contains the required element 'objectIdentifier' and the optional parameters 'mode' and 'objectquery'.

'mode' determines how an object is locked. HW_API_LOCK_NORMAL means, an object is locked until it is unlocked. HW_API_LOCK_RECURSIVE is only valid for collection and locks all objects within the collection and possible subcollections. HW_API_LOCK_SESSION means, an object is locked only as long as the session is valid.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • hw_api::unlock

hw_api::link
hw_api::move
Hyperwave API 函数


Moves object between collections

hw_api::lock
hw_api::object
Hyperwave API 函数
PHP Manual

hw_api::move

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::move — Moves object between collections

说明

bool hw_api::move ( array $parameter )

Moves object between collections.

参数

parameter

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • hw_objrec2array()

hw_api::lock
hw_api::object
Hyperwave API 函数


Retrieve attribute information

hw_api::move
hw_api::objectbyanchor
Hyperwave API 函数
PHP Manual

hw_api::object

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::object — Retrieve attribute information

说明

hw_api_object hw_api::object ( array $parameter )

This function retrieves the attribute information of an object of any version. It will not return the document content.

参数

parameter

The parameter array contains the required elements 'objectIdentifier' and the optional elements 'attributeSelector' and 'version'.

返回值

The returned object is an instance of class HW_API_Object on success or HW_API_Error if an error occurred.

范例

This simple example retrieves an object and checks for errors.

Example #1 Retrieve an object

<?php
function handle_error($error)
{
  $reason = $error->reason(0);
  echo "Type: <b>";
  switch ($reason->type()) {
    case 0:
      echo "Error";
      break;
    case 1:
      echo "Warning";
      break;
    case 2:
      echo "Message";
      break;
  }
  echo "</b><br />\n";
  echo "Description: " . $reason->description("en") . "<br />\n";
}

function list_attr($obj)
{
  echo "<table>\n";
  $count = $obj->count();
  for ($i=0; $i<$count; $i++) {
    $attr = $obj->attribute($i);
    printf("<tr><td align=\"right\" bgcolor=\"#c0c0c0\"><b>%s</b></td><td bgcolor=\"#F0F0F0\">%s</td></tr>\n",
             $attr->key(), $attr->value());
  }
  echo "</table>\n";
}

$hwapi = hwapi_hgcsp($g_config[HOSTNAME]);
$parms = array("objectIdentifier"=>"rootcollection", "attributeSelector"=>array("Title", "Name", "DocumentType"));
$root = $hwapi->object($parms);
if (get_class($root) == "HW_API_Error") {
  handle_error($root);
  exit;
}
list_attr($root);
?>

参见

  • hw_api::content

hw_api::move
hw_api::objectbyanchor
Hyperwave API 函数


Returns the object an anchor belongs to

hw_api::object
hw_api::parents
Hyperwave API 函数
PHP Manual

hw_api::objectbyanchor

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::objectbyanchor — Returns the object an anchor belongs to

说明

hw_api_object hw_api::objectbyanchor ( array $parameter )

This function retrieves an object the specified anchor belongs to.

参数

parameter

The parameter array contains the required element 'objectIdentifier' and the optional element 'attributeSelector'.

返回值

参见

  • hw_api::dstofsrcanchor
  • hw_api::srcanchors
  • hw_api::dstanchors

hw_api::object
hw_api::parents
Hyperwave API 函数


Returns parents of an object

hw_api::objectbyanchor
hw_api::remove
Hyperwave API 函数
PHP Manual

hw_api::parents

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::parents — Returns parents of an object

说明

array hw_api::parents ( array $parameter )

Retrieves the parents of an object. The parents can be further filtered by specifying an object query.

参数

parameter

The parameter array contains the required elements 'objectidentifier' and the optional elements 'attributeselector' and 'objectquery'.

返回值

The return value is an array of objects of type HW_API_Object or HW_API_Error.

参见

  • hw_api::children

hw_api::objectbyanchor
hw_api::remove
Hyperwave API 函数


Delete an object

hw_api::parents
hw_api::replace
Hyperwave API 函数
PHP Manual

hw_api::remove

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::remove — Delete an object

说明

bool hw_api::remove ( array $parameter )

Removes an object from the specified parent. Collections will be removed recursively.

参数

parameter

You can pass an optional object query to remove only those objects which match the query. An object will be deleted physically if it is the last instance.

The parameter array contains the required elements 'objectidentifier' and 'parentidentifier'. If you want to remove a user or group 'parentidentifier' can be skipped.

The optional parameter 'mode' determines how the deletion is performed. In normal mode the object will not be removed physically until all instances are removed. In physical mode all instances of the object will be deleted immediately. In removelinks mode all references to and from the objects will be deleted as well. In nonrecursive the deletion is not performed recursive. Removing a collection which is not empty will cause an error.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • hw_api::move

hw_api::parents
hw_api::replace
Hyperwave API 函数


Replaces an object

hw_api::remove
hw_api::setcommittedversion
Hyperwave API 函数
PHP Manual

hw_api::replace

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::replace — Replaces an object

说明

hw_api_object hw_api::replace ( array $parameter )

Replaces the attributes and the content of an object.

参数

parameter

The parameter array contains the required elements 'objectIdentifier' and 'object' and the optional parameters 'content', 'parameters', 'mode' and 'attributeSelector'. 'objectIdentifier' contains the object to be replaced. 'object' contains the new object. 'content' contains the new content. 'parameters' contain extra information for HTML documents. HTML_Language is the letter abbreviation of the language of the title. HTML_Base sets the base attribute of the HTML document.

'mode' can be a combination of the following flags:

HW_API_REPLACE_NORMAL
The object on the server is replace with the object passed.
HW_API_REPLACE_FORCE_VERSION_CONTROL
HW_API_REPLACE_AUTOMATIC_CHECKOUT
HW_API_REPLACE_AUTOMATIC_CHECKIN
HW_API_REPLACE_PLAIN
HW_API_REPLACE_REVERT_IF_NOT_CHANGED
HW_API_REPLACE_KEEP_TIME_MODIFIED

返回值

参见

  • hw_api::insert

hw_api::remove
hw_api::setcommittedversion
Hyperwave API 函数


Commits version other than last version

hw_api::replace
hw_api::srcanchors
Hyperwave API 函数
PHP Manual

hw_api::setcommittedversion

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::setcommittedversion — Commits version other than last version

说明

hw_api_object hw_api::setcommittedversion ( array $parameter )

Commits a version of a document. The committed version is the one which is visible to users with read access. By default the last version is the committed version.

参数

parameter

返回值

参见

  • hw_api::checkin
  • hw_api::checkout

hw_api::replace
hw_api::srcanchors
Hyperwave API 函数


Returns a list of all source anchors

hw_api::setcommittedversion
hw_api::srcsofdst
Hyperwave API 函数
PHP Manual

hw_api::srcanchors

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::srcanchors — Returns a list of all source anchors

说明

array hw_api::srcanchors ( array $parameter )

Retrieves all source anchors of an object.

参数

parameter

The parameter array contains the required element 'objectIdentifier' and the optional elements 'attributeSelector' and 'objectQuery'.

返回值

参见

  • hw_api::dstanchors

hw_api::setcommittedversion
hw_api::srcsofdst
Hyperwave API 函数


Returns source of a destination object

hw_api::srcanchors
hw_api::unlock
Hyperwave API 函数
PHP Manual

hw_api::srcsofdst

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::srcsofdst — Returns source of a destination object

说明

array hw_api::srcsofdst ( array $parameter )

Retrieves all the source anchors pointing to the specified destination. The destination object can either be a destination anchor or a whole document.

参数

parameter

The parameters array contains the required element 'objectIdentifier' and the optional element 'attributeSelector' and 'objectQuery'. The function returns an array of objects or an error.

返回值

参见

  • hw_api::dstofsrcanchor

hw_api::srcanchors
hw_api::unlock
Hyperwave API 函数


Unlocks a locked object

hw_api::srcsofdst
hw_api::user
Hyperwave API 函数
PHP Manual

hw_api::unlock

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::unlock — Unlocks a locked object

说明

bool hw_api::unlock ( array $parameter )

Unlocks a locked object. Only the user who has locked the object and the system user may unlock an object.

参数

parameter

The parameter array contains the required element 'objectIdentifier' and the optional parameters 'mode' and 'objectquery'. The meaning of 'mode' is the same as in function hwapi_lock().

返回值

Returns TRUE on success or an object of class HW_API_Error.

参见

  • hw_api::lock

hw_api::srcsofdst
hw_api::user
Hyperwave API 函数


Returns the own user object

hw_api::unlock
hw_api::userlist
Hyperwave API 函数
PHP Manual

hw_api::user

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::user — Returns the own user object

说明

hw_api_object hw_api::user ( array $parameter )

Returns the own user object.

参数

parameter

返回值

参见

  • hw_api::userlist

hw_api::unlock
hw_api::userlist
Hyperwave API 函数


Returns a list of all logged in users

hw_api::user
hw_api_attribute::key
Hyperwave API 函数
PHP Manual

hw_api::userlist

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api::userlist — Returns a list of all logged in users

说明

array hw_api::userlist ( array $parameter )

Returns a list of all logged in users.

参数

parameter

返回值

参见

  • hw_api::user

hw_api::user
hw_api_attribute::key
Hyperwave API 函数


Returns key of the attribute

hw_api::userlist
hw_api_attribute::langdepvalue
Hyperwave API 函数
PHP Manual

hw_api_attribute::key

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api_attribute::key — Returns key of the attribute

说明

string hw_api_attribute::key ( void )

Returns the name of the attribute.

返回值

Returns the name of the attribute as a string.

参见

  • hw_api_attribute::value

hw_api::userlist
hw_api_attribute::langdepvalue
Hyperwave API 函数


Returns value for a given language

hw_api_attribute::key
hw_api_attribute::value
Hyperwave API 函数
PHP Manual

hw_api_attribute::langdepvalue

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api_attribute::langdepvalue — Returns value for a given language

说明

string hw_api_attribute::langdepvalue ( string $language )

Returns the value in the given language of the attribute.

参数

language

返回值

Returns the value of the attribute as a string.

参见

  • hw_api_attribute::value

hw_api_attribute::key
hw_api_attribute::value
Hyperwave API 函数


Returns value of the attribute

hw_api_attribute::langdepvalue
hw_api_attribute::values
Hyperwave API 函数
PHP Manual

hw_api_attribute::value

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api_attribute::value — Returns value of the attribute

说明

string hw_api_attribute::value ( void )

Gets the value of the attribute.

返回值

Returns the value, as a string.

参见

  • hw_api_attribute::key
  • hw_api_attribute::values

hw_api_attribute::langdepvalue
hw_api_attribute::values
Hyperwave API 函数


Returns all values of the attribute

hw_api_attribute::value
hw_api_content::mimetype
Hyperwave API 函数
PHP Manual

hw_api_attribute::values

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api_attribute::values — Returns all values of the attribute

说明

array hw_api_attribute::values ( void )

Gets all values of the attribute.

返回值

Returns an array of attribute values.

参见

  • hw_api_attribute::value

hw_api_attribute::value
hw_api_content::mimetype
Hyperwave API 函数


Returns mimetype

hw_api_attribute::values
hw_api_content::read
Hyperwave API 函数
PHP Manual

hw_api_content::mimetype

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api_content::mimetype — Returns mimetype

说明

string hw_api_content::mimetype ( void )

Returns the mimetype of the content.

返回值

Returns the mimetype as a string.

hw_api_attribute::values
hw_api_content::read
Hyperwave API 函数


Read content

hw_api_content::mimetype
hw_api_error::count
Hyperwave API 函数
PHP Manual

hw_api_content::read

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api_content::read — Read content

说明

string hw_api_content::read ( string $buffer , int $len )

Reads len bytes from the content into the given buffer.

参数

buffer

len

Number of bytes to read.

返回值

hw_api_content::mimetype
hw_api_error::count
Hyperwave API 函数


Returns number of reasons

hw_api_content::read
hw_api_error::reason
Hyperwave API 函数
PHP Manual

hw_api_error::count

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api_error::count — Returns number of reasons

说明

int hw_api_error::count ( void )

Returns the number of error reasons.

返回值

Returns the number of errors, as an integer.

参见

  • hw_api_error::reason

hw_api_content::read
hw_api_error::reason
Hyperwave API 函数


Returns reason of error

hw_api_error::count
hw_api_object::assign
Hyperwave API 函数
PHP Manual

hw_api_error::reason

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api_error::reason — Returns reason of error

说明

HW_API_Reason hw_api_error::reason ( void )

Returns the first error reason.

返回值

参见

  • hw_api_error::count

hw_api_error::count
hw_api_object::assign
Hyperwave API 函数


Clones object

hw_api_error::reason
hw_api_object::attreditable
Hyperwave API 函数
PHP Manual

hw_api_object::assign

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api_object::assign — Clones object

说明

bool hw_api_object::assign ( array $parameter )

Clones the attributes of an object.

参数

parameter

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

hw_api_error::reason
hw_api_object::attreditable
Hyperwave API 函数


Checks whether an attribute is editable

hw_api_object::assign
hw_api_object::count
Hyperwave API 函数
PHP Manual

hw_api_object::attreditable

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api_object::attreditable — Checks whether an attribute is editable

说明

bool hw_api_object::attreditable ( array $parameter )

Checks whether an attribute is editable.

参数

parameter

返回值

Returns TRUE if the attribute is editable, FALSE otherwise.

hw_api_object::assign
hw_api_object::count
Hyperwave API 函数


Returns number of attributes

hw_api_object::attreditable
hw_api_object::insert
Hyperwave API 函数
PHP Manual

hw_api_object::count

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api_object::count — Returns number of attributes

说明

int hw_api_object::count ( array $parameter )

Returns the number of attributes.

参数

parameter

返回值

Returns the number as an integer.

hw_api_object::attreditable
hw_api_object::insert
Hyperwave API 函数


Inserts new attribute

hw_api_object::count
hw_api_object::remove
Hyperwave API 函数
PHP Manual

hw_api_object::insert

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api_object::insert — Inserts new attribute

说明

bool hw_api_object::insert ( HW_API_Attribute $attribute )

Adds an attribute to the object.

参数

attribute

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • hw_api_object::remove

hw_api_object::count
hw_api_object::remove
Hyperwave API 函数


Removes attribute

hw_api_object::insert
hw_api_object::title
Hyperwave API 函数
PHP Manual

hw_api_object::remove

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api_object::remove — Removes attribute

说明

bool hw_api_object::remove ( string $name )

Removes the attribute with the given name.

参数

name

The attribute name.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • hw_api_object::insert

hw_api_object::insert
hw_api_object::title
Hyperwave API 函数


Returns the title attribute

hw_api_object::remove
hw_api_object::value
Hyperwave API 函数
PHP Manual

hw_api_object::title

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api_object::title — Returns the title attribute

说明

string hw_api_object::title ( array $parameter )

Returns the title attribute.

参数

parameter

返回值

Returns the title as a string.

hw_api_object::remove
hw_api_object::value
Hyperwave API 函数


Returns value of attribute

hw_api_object::title
hw_api_reason::description
Hyperwave API 函数
PHP Manual

hw_api_object::value

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api_object::value — Returns value of attribute

说明

string hw_api_object::value ( string $name )

Returns value of an attribute.

参数

name

The attribute name.

返回值

Returns the value of the attribute with the given name or FALSE if an error occurred.

hw_api_object::title
hw_api_reason::description
Hyperwave API 函数


Returns description of reason

hw_api_object::value
hw_api_reason::type
Hyperwave API 函数
PHP Manual

hw_api_reason::description

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api_reason::description — Returns description of reason

说明

string hw_api_reason::description ( void )

Returns the description of a reason

返回值

Returns the description, as a string.

hw_api_object::value
hw_api_reason::type
Hyperwave API 函数


Returns type of reason

hw_api_reason::description
hwapi_attribute_new
Hyperwave API 函数
PHP Manual

hw_api_reason::type

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hw_api_reason::type — Returns type of reason

说明

HW_API_Reason hw_api_reason::type ( void )

Returns the type of a reason.

返回值

Returns an instance of HW_API_Reason.

hw_api_reason::description
hwapi_attribute_new
Hyperwave API 函数


Creates instance of class hw_api_attribute

hw_api_reason::type
hwapi_content_new
Hyperwave API 函数
PHP Manual

hwapi_attribute_new

(No version information available, might only be in Git)

hwapi_attribute_new — Creates instance of class hw_api_attribute

说明

HW_API_Attribute hwapi_attribute_new ([ string $name [, string $value ]] )

Creates a new instance of hw_api_attribute with the given name and value.

参数

name

The attribute name.

value

The attribute value.

返回值

Returns an instance of hw_api_attribute.

hw_api_reason::type
hwapi_content_new
Hyperwave API 函数


Create new instance of class hw_api_content

hwapi_attribute_new
hwapi_hgcsp
Hyperwave API 函数
PHP Manual

hwapi_content_new

(No version information available, might only be in Git)

hwapi_content_new — Create new instance of class hw_api_content

说明

HW_API_Content hwapi_content_new ( string $content , string $mimetype )

Creates a new content object from the string content.

参数

content

mimetype

The mimetype for the contents.

返回值

hwapi_attribute_new
hwapi_hgcsp
Hyperwave API 函数


Returns object of class hw_api

hwapi_content_new
hwapi_object_new
Hyperwave API 函数
PHP Manual

hwapi_hgcsp

(PHP 4, PHP 5 < 5.2.0, PECL hwapi SVN)

hwapi_hgcsp — Returns object of class hw_api

说明

HW_API hwapi_hgcsp ( string $hostname [, int $port ] )

Opens a connection to the Hyperwave server on host hostname. The protocol used is HGCSP.

参数

hostname

The host name.

port

If you do not pass a port number, 418 is used.

返回值

Returns an instance of HW_API.

hwapi_content_new
hwapi_object_new
Hyperwave API 函数


Creates a new instance of class hwapi_object_new

hwapi_hgcsp
LDAP
Hyperwave API 函数
PHP Manual

hwapi_object_new

(No version information available, might only be in Git)

hwapi_object_new — Creates a new instance of class hwapi_object_new

说明

hw_api_object hwapi_object_new ( array $parameter )

Creates a new instance of the class hw_api_object.

参数

parameter

返回值

参见

  • hw_api::lock

hwapi_hgcsp
LDAP
Hyperwave API 函数


Lightweight Directory Access Protocol

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Using the PHP LDAP calls
  • 范例
    • Basic usage
  • LDAP 函数
    • ldap_8859_to_t61 — Translate 8859 characters to t61 characters
    • ldap_add — Add entries to LDAP directory
    • ldap_bind — 绑定 LDAP 目录
    • ldap_close — 别名 ldap_unbind
    • ldap_compare — Compare value of attribute found in entry specified with DN
    • ldap_connect — Connect to an LDAP server
    • ldap_control_paged_result_response — Retrieve the LDAP pagination cookie
    • ldap_control_paged_result — Send LDAP pagination control
    • ldap_count_entries — Count the number of entries in a search
    • ldap_delete — Delete an entry from a directory
    • ldap_dn2ufn — Convert DN to User Friendly Naming format
    • ldap_err2str — Convert LDAP error number into string error message
    • ldap_errno — Return the LDAP error number of the last LDAP command
    • ldap_error — Return the LDAP error message of the last LDAP command
    • ldap_escape — Escape a string for use in an LDAP filter or DN
    • ldap_explode_dn — Splits DN into its component parts
    • ldap_first_attribute — Return first attribute
    • ldap_first_entry — Return first result id
    • ldap_first_reference — Return first reference
    • ldap_free_result — Free result memory
    • ldap_get_attributes — Get attributes from a search result entry
    • ldap_get_dn — Get the DN of a result entry
    • ldap_get_entries — Get all result entries
    • ldap_get_option — Get the current value for given option
    • ldap_get_values_len — Get all binary values from a result entry
    • ldap_get_values — Get all values from a result entry
    • ldap_list — Single-level search
    • ldap_mod_add — Add attribute values to current attributes
    • ldap_mod_del — Delete attribute values from current attributes
    • ldap_mod_replace — Replace attribute values with new ones
    • ldap_modify_batch — Batch and execute modifications on an LDAP entry
    • ldap_modify — Modify an LDAP entry
    • ldap_next_attribute — Get the next attribute in result
    • ldap_next_entry — Get next result entry
    • ldap_next_reference — Get next reference
    • ldap_parse_reference — Extract information from reference entry
    • ldap_parse_result — Extract information from result
    • ldap_read — Read an entry
    • ldap_rename — Modify the name of an entry
    • ldap_sasl_bind — Bind to LDAP directory using SASL
    • ldap_search — Search LDAP tree
    • ldap_set_option — Set the value of the given option
    • ldap_set_rebind_proc — Set a callback function to do re-binds on referral chasing
    • ldap_sort — Sort LDAP result entries on the client side
    • ldap_start_tls — Start TLS
    • ldap_t61_to_8859 — Translate t61 characters to 8859 characters
    • ldap_unbind — Unbind from LDAP directory
hwapi_object_new
简介
其它服务


简介

LDAP is the Lightweight Directory Access Protocol, and is a protocol used to access "Directory Servers". The Directory is a special kind of database that holds information in a tree structure.

The concept is similar to your hard disk directory structure, except that in this context, the root directory is "The world" and the first level subdirectories are "countries". Lower levels of the directory structure contain entries for companies, organisations or places, while yet lower still we find directory entries for people, and perhaps equipment or documents.

To refer to a file in a subdirectory on your hard disk, you might use something like:

   /usr/local/myapp/docs

The forwards slash marks each division in the reference, and the sequence is read from left to right.

The equivalent to the fully qualified file reference in LDAP is the "distinguished name", referred to simply as "dn". An example dn might be:

   cn=John Smith,ou=Accounts,o=My Company,c=US

The comma marks each division in the reference, and the sequence is read from right to left. You would read this dn as:

   country = US
   organization = My Company
   organizationalUnit = Accounts
   commonName = John Smith

In the same way as there are no hard rules about how you organise the directory structure of a hard disk, a directory server manager can set up any structure that is meaningful for the purpose. However, there are some conventions that are used. The message is that you can not write code to access a directory server unless you know something about its structure, any more than you can use a database without some knowledge of what is available.

Lots of information about LDAP can be found at

  • » Mozilla

  • » OpenLDAP Project

  • Internet Engineering Taskforce RFCs » 4510 through » 4519.

The Netscape SDK contains a helpful » Programmer's Guide in HTML format.

LDAP
安装／配置
LDAP


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
LDAP


需求

You will need to get and compile LDAP client libraries from either » OpenLDAP or » Bind9.net in order to compile PHP with LDAP support. For PHP 5.6 or newer you will need OpenLDAP 2.4 or newer.

安装／配置
安装
安装／配置


安装

LDAP support in PHP is not enabled by default. You will need to use the --with-ldap[=DIR] configuration option when compiling PHP to enable LDAP support. DIR is the LDAP base install directory. To enable SASL support, be sure --with-ldap-sasl[=DIR] is used, and that sasl.h exists on the system.

Note: Note to Win32 Users

为了使此扩展生效， DLL 文件必须能在 Windows 系统的 PATH 指示的路径下找到。如何操作的信息，请参见题为"如何在 Windows 中将 PHP 目录加到 PATH 中"的FAQ。虽然将 DLL 文件从 PHP 文件夹复制到 Windows 系统目录也行，但不建议这样做。 此扩展需要下列文件在 PATH 路径中： libeay32.dll and ssleay32.dll

In order to use Oracle LDAP libraries, proper Oracle environment has to be set.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

LDAP configuration options
名字 | 默认 | 可修改范围 | 更新日志
ldap.max_links | "-1" | PHP_INI_SYSTEM |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

ldap.max_links integer

The maximum number of LDAP connections per process.

安装
资源类型
安装／配置


资源类型

Most LDAP functions operate on or return resources (e.g. ldap_connect() returns a positive LDAP link identifier required by most LDAP functions).

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

LDAP_DEREF_NEVER (integer)
LDAP_DEREF_SEARCHING (integer)
LDAP_DEREF_FINDING (integer)
LDAP_DEREF_ALWAYS (integer)
LDAP_OPT_DEREF (integer)
Specifies alternative rules for following aliases at the server.
LDAP_OPT_SIZELIMIT (integer)

Specifies the maximum number of entries that can be returned on a search operation.

Note: The actual size limit for operations is also bounded by the server's configured maximum number of return entries. The lesser of these two settings is the actual size limit.

LDAP_OPT_TIMELIMIT (integer)
Specifies the number of seconds to wait for search results.

Note: The actual time limit for operations is also bounded by the server's configured maximum time. The lesser of these two settings is the actual time limit.

LDAP_OPT_NETWORK_TIMEOUT (integer)
Option for ldap_set_option() to allow setting network timeout. (Available as of PHP 5.3.0)
LDAP_OPT_PROTOCOL_VERSION (integer)
Specifies the LDAP protocol to be used (V2 or V3).
LDAP_OPT_ERROR_NUMBER (integer)
LDAP_OPT_REFERRALS (integer)
Specifies whether to automatically follow referrals returned by the LDAP server.
LDAP_OPT_RESTART (integer)
LDAP_OPT_HOST_NAME (integer)
LDAP_OPT_ERROR_STRING (integer)
LDAP_OPT_DIAGNOSTIC_MESSAGE (integer)
LDAP_OPT_MATCHED_DN (integer)
LDAP_OPT_SERVER_CONTROLS (integer)
Specifies a default list of server controls to be sent with each request.
LDAP_OPT_CLIENT_CONTROLS (integer)
Specifies a default list of client controls to be processed with each request.
LDAP_OPT_DEBUG_LEVEL (integer)
Specifies a bitwise level for debug traces.
LDAP_OPT_X_KEEPALIVE_IDLE (integer)
Specifies the number of seconds a connection needs to remain idle before TCP starts sending keepalive probes.
LDAP_OPT_X_KEEPALIVE_PROBES (integer)
Specifies the maximum number of keepalive probes TCP should send before dropping the connection.
LDAP_OPT_X_KEEPALIVE_INTERVAL (integer)
Specifies the interval in seconds between individual keepalive probes.
LDAP_OPT_X_TLS_CACERTDIR (string)
Specifies the path of the directory containing CA certificates.
LDAP_OPT_X_TLS_CACERTFILE (string)
Specifies the full-path of the CA certificate file.
LDAP_OPT_X_TLS_CERTFILE (string)
Specifies the full-path of the certificate file.
LDAP_OPT_X_TLS_CIPHER_SUITE (string)
Specifies the allowed cipher suite.
LDAP_OPT_X_TLS_CRLCHECK (integer)
Specifies the CRL evaluation strategy. This must be one of: LDAP_OPT_X_TLS_CRL_NONE,LDAP_OPT_X_TLS_CRL_PEER, LDAP_OPT_X_TLS_CRL_ALL.

Note: This option is only valid for OpenSSL.

LDAP_OPT_X_TLS_CRLFILE (string)
Specifies the full-path of the CRL file.

Note: This option is only valid for GnuTLS.

LDAP_OPT_X_TLS_DHFILE (string)
Specifies the full-path of the file containing the parameters for Diffie-Hellman ephemeral key exchange.

Note: This option is ignored by GnuTLS and Mozilla NSS.

LDAP_OPT_X_TLS_KEYFILE (string)
Specifies the full-path of the certificate key file.
LDAP_OPT_X_TLS_PROTOCOL_MIN (integer)
Specifies the minimum protocol version. This can be one of: LDAP_OPT_X_TLS_PROTOCOL_SSL2,LDAP_OPT_X_TLS_PROTOCOL_SSL3, LDAP_OPT_X_TLS_PROTOCOL_TLS1_0, LDAP_OPT_X_TLS_PROTOCOL_TLS1_1, LDAP_OPT_X_TLS_PROTOCOL_TLS1_2
LDAP_OPT_X_TLS_RANDOM_FILE (string)
LDAP_OPT_X_TLS_REQUIRE_CERT (integer)
Specifies the certificate checking checking strategy. This must be one of: LDAP_OPT_X_TLS_NEVER,LDAP_OPT_X_TLS_HARD, LDAP_OPT_X_TLS_DEMAND, LDAP_OPT_X_TLS_ALLOW, LDAP_OPT_X_TLS_TRY. (Available as of PHP 7.0.0)
GSLC_SSL_NO_AUTH (integer)
GSLC_SSL_ONEWAY_AUTH (integer)
GSLC_SSL_TWOWAY_AUTH (integer)
资源类型
Using the PHP LDAP calls
LDAP


Using the PHP LDAP calls

Before you can use the LDAP calls you will need to know ..

  • The name or address of the directory server you will use

  • The "base dn" of the server (the part of the world directory that is held on this server, which could be "o=My Company,c=US")

  • Whether you need a password to access the server (many servers will provide read access for an "anonymous bind" but require a password for anything else)

The typical sequence of LDAP calls you will make in an application will follow this pattern:

  ldap_connect()    // establish connection to server
     |
  ldap_bind()       // anonymous or authenticated "login"
     |
  do something like search or update the directory
  and display the results
     |
  ldap_close()      // "logout"

预定义常量
范例
LDAP


范例

Table of Contents

  • Basic usage
Using the PHP LDAP calls
Basic usage
LDAP


Basic usage

Retrieve information for all entries where the surname starts with "S" from a directory server, displaying an extract with name and email address.

Example #1 LDAP search example

<?php
// basic sequence with LDAP is connect, bind, search, interpret search
// result, close connection

echo "<h3>LDAP query test</h3>";
echo "Connecting ...";
$ds=ldap_connect("localhost");  // must be a valid LDAP server!
echo "connect result is " . $ds . "<br />";

if ($ds) {
    echo "Binding ...";
    $r=ldap_bind($ds);     // this is an "anonymous" bind, typically
                           // read-only access
    echo "Bind result is " . $r . "<br />";

    echo "Searching for (sn=S*) ...";
    // Search surname entry
    $sr=ldap_search($ds, "o=My Company, c=US", "sn=S*");
    echo "Search result is " . $sr . "<br />";

    echo "Number of entries returned is " . ldap_count_entries($ds, $sr) . "<br />";

    echo "Getting entries ...<p>";
    $info = ldap_get_entries($ds, $sr);
    echo "Data for " . $info["count"] . " items returned:<p>";

    for ($i=0; $i<$info["count"]; $i++) {
        echo "dn is: " . $info[$i]["dn"] . "<br />";
        echo "first cn entry is: " . $info[$i]["cn"][0] . "<br />";
        echo "first email entry is: " . $info[$i]["mail"][0] . "<br /><hr />";
    }

    echo "Closing connection";
    ldap_close($ds);

} else {
    echo "<h4>Unable to connect to LDAP server</h4>";
}
?>
范例
LDAP 函数
范例


LDAP 函数

Table of Contents

  • ldap_8859_to_t61 — Translate 8859 characters to t61 characters
  • ldap_add — Add entries to LDAP directory
  • ldap_bind — 绑定 LDAP 目录
  • ldap_close — 别名 ldap_unbind
  • ldap_compare — Compare value of attribute found in entry specified with DN
  • ldap_connect — Connect to an LDAP server
  • ldap_control_paged_result_response — Retrieve the LDAP pagination cookie
  • ldap_control_paged_result — Send LDAP pagination control
  • ldap_count_entries — Count the number of entries in a search
  • ldap_delete — Delete an entry from a directory
  • ldap_dn2ufn — Convert DN to User Friendly Naming format
  • ldap_err2str — Convert LDAP error number into string error message
  • ldap_errno — Return the LDAP error number of the last LDAP command
  • ldap_error — Return the LDAP error message of the last LDAP command
  • ldap_escape — Escape a string for use in an LDAP filter or DN
  • ldap_explode_dn — Splits DN into its component parts
  • ldap_first_attribute — Return first attribute
  • ldap_first_entry — Return first result id
  • ldap_first_reference — Return first reference
  • ldap_free_result — Free result memory
  • ldap_get_attributes — Get attributes from a search result entry
  • ldap_get_dn — Get the DN of a result entry
  • ldap_get_entries — Get all result entries
  • ldap_get_option — Get the current value for given option
  • ldap_get_values_len — Get all binary values from a result entry
  • ldap_get_values — Get all values from a result entry
  • ldap_list — Single-level search
  • ldap_mod_add — Add attribute values to current attributes
  • ldap_mod_del — Delete attribute values from current attributes
  • ldap_mod_replace — Replace attribute values with new ones
  • ldap_modify_batch — Batch and execute modifications on an LDAP entry
  • ldap_modify — Modify an LDAP entry
  • ldap_next_attribute — Get the next attribute in result
  • ldap_next_entry — Get next result entry
  • ldap_next_reference — Get next reference
  • ldap_parse_reference — Extract information from reference entry
  • ldap_parse_result — Extract information from result
  • ldap_read — Read an entry
  • ldap_rename — Modify the name of an entry
  • ldap_sasl_bind — Bind to LDAP directory using SASL
  • ldap_search — Search LDAP tree
  • ldap_set_option — Set the value of the given option
  • ldap_set_rebind_proc — Set a callback function to do re-binds on referral chasing
  • ldap_sort — Sort LDAP result entries on the client side
  • ldap_start_tls — Start TLS
  • ldap_t61_to_8859 — Translate t61 characters to 8859 characters
  • ldap_unbind — Unbind from LDAP directory
Basic usage
ldap_8859_to_t61
LDAP


Translate 8859 characters to t61 characters

LDAP 函数
ldap_add
LDAP 函数
PHP Manual

ldap_8859_to_t61

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

ldap_8859_to_t61 — Translate 8859 characters to t61 characters

说明

string ldap_8859_to_t61 ( string $value )

Translate ISO-8859 characters to t61 characters.

This function is useful if you have to talk to a legacy LDAPv2 server.

参数

value

The text to be translated.

返回值

Return the t61 translation of value.

参见

  • ldap_t61_to_8859() - Translate t61 characters to 8859 characters

LDAP 函数
ldap_add
LDAP 函数


Add entries to LDAP directory

ldap_8859_to_t61
ldap_bind
LDAP 函数
PHP Manual

ldap_add

(PHP 4, PHP 5, PHP 7)

ldap_add — Add entries to LDAP directory

说明

bool ldap_add ( resource $link_identifier , string $dn , array $entry )

Add entries in the LDAP directory.

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

dn

The distinguished name of an LDAP entity.

entry

An array that specifies the information about the entry. The values in the entries are indexed by individual attributes. In case of multiple values for an attribute, they are indexed using integers starting with 0.

<?php
$entry["attribute1"] = "value";
$entry["attribute2"][0] = "value1";
$entry["attribute2"][1] = "value2";
?>

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Complete example with authenticated bind

<?php
$ds = ldap_connect("localhost");  // assuming the LDAP server is on this host

if ($ds) {
    // bind with appropriate dn to give update access
    $r = ldap_bind($ds, "cn=root, o=My Company, c=US", "secret");

    // prepare data
    $info["cn"] = "John Jones";
    $info["sn"] = "Jones";
    $info["objectclass"] = "person";

    // add data to directory
    $r = ldap_add($ds, "cn=John Jones, o=My Company, c=US", $info);

    ldap_close($ds);
} else {
    echo "Unable to connect to LDAP server";
}
?>

注释

Note: 此函数可安全用于二进制对象。

参见

  • ldap_delete() - Delete an entry from a directory

ldap_8859_to_t61
ldap_bind
LDAP 函数


绑定 LDAP 目录

ldap_add
ldap_close
LDAP 函数
PHP Manual

ldap_bind

(PHP 4, PHP 5, PHP 7)

ldap_bind — 绑定 LDAP 目录

说明

bool ldap_bind ( resource $link_identifier [, string $bind_rdn = NULL [, string $bind_password = NULL ]] )

使用指定的 RDN 和密码绑定到 LDAP 目录。

参数

link_identifier

通过 ldap_connect() 连接之后返回的 LDAP 连接标识。

bind_rdn

bind_password

如果没有指定 bind_rdn 和 bind_password ，将会以匿名身份绑定。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 使用 LDAP Bind

<?php

// using ldap bind
$ldaprdn  = 'uname';     // ldap rdn or dn
$ldappass = 'password';  // associated password

// connect to ldap server
$ldapconn = ldap_connect("ldap.example.com")
    or die("Could not connect to LDAP server.");

if ($ldapconn) {

    // binding to ldap server
    $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);

    // verify binding
    if ($ldapbind) {
        echo "LDAP bind successful...";
    } else {
        echo "LDAP bind failed...";
    }

}

?>

Example #2 Using LDAP Bind Anonymously

<?php

//using ldap bind anonymously

// connect to ldap server
$ldapconn = ldap_connect("ldap.example.com")
    or die("Could not connect to LDAP server.");

if ($ldapconn) {

    // binding anonymously
    $ldapbind = ldap_bind($ldapconn);

    if ($ldapbind) {
        echo "LDAP bind anonymous successful...";
    } else {
        echo "LDAP bind anonymous failed...";
    }

}

?>

参见

  • ldap_unbind() - Unbind from LDAP directory

ldap_add
ldap_close
LDAP 函数


别名 ldap_unbind

ldap_bind
ldap_compare
LDAP 函数
PHP Manual

ldap_close

(PHP 4, PHP 5, PHP 7)

ldap_close — 别名 ldap_unbind()

说明

此函数是该函数的别名： ldap_unbind().

ldap_bind
ldap_compare
LDAP 函数


Compare value of attribute found in entry specified with DN

ldap_close
ldap_connect
LDAP 函数
PHP Manual

ldap_compare

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

ldap_compare — Compare value of attribute found in entry specified with DN

说明

mixed ldap_compare ( resource $link_identifier , string $dn , string $attribute , string $value )

Compare value of attribute with value of same attribute in an LDAP directory entry.

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

dn

The distinguished name of an LDAP entity.

attribute

The attribute name.

value

The compared value.

返回值

Returns TRUE if value matches otherwise returns FALSE. Returns -1 on error.

范例

The following example demonstrates how to check whether or not given password matches the one defined in DN specified entry.

Example #1 Complete example of password check

<?php

$ds=ldap_connect("localhost");  // assuming the LDAP server is on this host

if ($ds) {

    // bind
    if (ldap_bind($ds)) {

        // prepare data
        $dn = "cn=Matti Meikku, ou=My Unit, o=My Company, c=FI";
        $value = "secretpassword";
        $attr = "password";

        // compare value
        $r=ldap_compare($ds, $dn, $attr, $value);

        if ($r === -1) {
            echo "Error: " . ldap_error($ds);
        } elseif ($r === true) {
            echo "Password correct.";
        } elseif ($r === false) {
            echo "Wrong guess! Password incorrect.";
        }

    } else {
        echo "Unable to bind to LDAP server.";
    }

    ldap_close($ds);

} else {
    echo "Unable to connect to LDAP server.";
}
?>

注释

Warning

ldap_compare() can NOT be used to compare BINARY values!

ldap_close
ldap_connect
LDAP 函数


Connect to an LDAP server

ldap_compare
ldap_control_paged_result_response
LDAP 函数
PHP Manual

ldap_connect

(PHP 4, PHP 5, PHP 7)

ldap_connect — Connect to an LDAP server

说明

resource ldap_connect ([ string $host = NULL [, int $port = 389 ]] )

Creates an LDAP link identifier and checks whether the given host and port are plausible.

Note: This function does not open a connection. It checks whether the given parameters are plausible and can be used to open a connection as soon as one is needed.

参数

host

This field supports using a hostname or, with OpenLDAP 2.x.x and later, a full LDAP URI of the form ldap://hostname:port or ldaps://hostname:port for SSL encryption.

You can also provide multiple LDAP-URIs separated by a space as one string

Note that hostname:port is not a supported LDAP URI as the schema is missing.

port

The port to connect to. Not used when using LDAP URIs.

返回值

Returns a positive LDAP link identifier when the provided hostname/port combination or LDAP URI seems plausible. It's a syntactic check of the provided parameters but the server(s) will not be contacted! If the syntactic check fails it returns FALSE. When OpenLDAP 2.x.x is used, ldap_connect() will always return a resource as it does not actually connect but just initializes the connecting parameters. The actual connect happens with the next calls to ldap_* funcs, usually with ldap_bind().

If no arguments are specified then the link identifier of the already opened link will be returned.

范例

Example #1 Example of connecting to LDAP server.

<?php

// LDAP variables
$ldaphost = "ldap.example.com";  // your ldap servers
$ldapport = 389;                 // your ldap server's port number

// Connecting to LDAP
$ldapconn = ldap_connect($ldaphost, $ldapport)
          or die("Could not connect to $ldaphost");

?>

Example #2 Example of connecting securely to LDAP server.

<?php

// make sure your host is the correct one
// that you issued your secure certificate to
$ldaphost = "ldaps://ldap.example.com/";

// Connecting to LDAP
$ldapconn = ldap_connect($ldaphost)
          or die("Could not connect to {$ldaphost}");

?>

参见

  • ldap_bind() - 绑定 LDAP 目录

ldap_compare
ldap_control_paged_result_response
LDAP 函数


Retrieve the LDAP pagination cookie

ldap_connect
ldap_control_paged_result
LDAP 函数
PHP Manual

ldap_control_paged_result_response

(PHP 5 >= 5.4.0, PHP 7)

ldap_control_paged_result_response — Retrieve the LDAP pagination cookie

说明

bool ldap_control_paged_result_response ( resource $link , resource $result [, string &$cookie [, int &$estimated ]] )

Retrieve the pagination information send by the server.

参数

link

An LDAP link identifier, returned by ldap_connect().

result

cookie

An opaque structure sent by the server.

estimated

The estimated number of entries to retrieve.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ldap_control_paged_result() - Send LDAP pagination control
  • » RFC2696 : LDAP Control Extension for Simple Paged Results Manipulation

ldap_connect
ldap_control_paged_result
LDAP 函数


Send LDAP pagination control

ldap_control_paged_result_response
ldap_count_entries
LDAP 函数
PHP Manual

ldap_control_paged_result

(PHP 5 >= 5.4.0, PHP 7)

ldap_control_paged_result — Send LDAP pagination control

说明

bool ldap_control_paged_result ( resource $link , int $pagesize [, bool $iscritical = false [, string $cookie = "" ]] )

Enable LDAP pagination by sending the pagination control (page size, cookie...).

参数

link

An LDAP link identifier, returned by ldap_connect().

pagesize

The number of entries by page.

iscritical

Indicates whether the pagination is critical or not. If true and if the server doesn't support pagination, the search will return no result.

cookie

An opaque structure sent by the server (ldap_control_paged_result_response()).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

The example below show the retrieval of the first page of a search paginated with one entry by page.

Example #1 LDAP pagination

<?php
     // $ds is a valid link identifier (see ldap_connect)
     ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);

     $dn        = 'ou=example,dc=org';
     $filter    = '(|(sn=Doe*)(givenname=John*))';
     $justthese = array('ou', 'sn', 'givenname', 'mail');

     // enable pagination with a page size of 1.
     ldap_control_paged_result($ds, 1);

     $sr = ldap_search($ds, $dn, $filter, $justthese);

     $info = ldap_get_entries($ds, $sr);

     echo $info['count'] . ' entries returned' . PHP_EOL;

The example below show the retrieval of all the result paginated with 100 entries by page.

Example #2 LDAP pagination

<?php
     // $ds is a valid link identifier (see ldap_connect)
     ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);

     $dn        = 'ou=example,dc=org';
     $filter    = '(|(sn=Doe*)(givenname=John*))';
     $justthese = array('ou', 'sn', 'givenname', 'mail');

     // enable pagination with a page size of 100.
     $pageSize = 100;

     $cookie = '';
     do {
         ldap_control_paged_result($ds, $pageSize, true, $cookie);

         $result  = ldap_search($ds, $dn, $filter, $justthese);
         $entries = ldap_get_entries($ds, $result);

         foreach ($entries as $e) {
             echo $e['dn'] . PHP_EOL;
         }

         ldap_control_paged_result_response($ds, $result, $cookie);

     } while($cookie !== null && $cookie != '');

注释

Note:

Pagination control is a LDAPv3 protocol feature.

参见

  • ldap_control_paged_result_response() - Retrieve the LDAP pagination cookie
  • » RFC2696 : LDAP Control Extension for Simple Paged Results Manipulation

ldap_control_paged_result_response
ldap_count_entries
LDAP 函数


Count the number of entries in a search

ldap_control_paged_result
ldap_delete
LDAP 函数
PHP Manual

ldap_count_entries

(PHP 4, PHP 5, PHP 7)

ldap_count_entries — Count the number of entries in a search

说明

int ldap_count_entries ( resource $link_identifier , resource $result_identifier )

Returns the number of entries stored in the result of previous search operations.

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

result_identifier

The internal LDAP result.

返回值

Returns number of entries in the result or FALSE on error.

范例

Example #1 ldap-count-entries() example

Retrieve number of entries in the result.

// $ds is a valid link identifier (see ldap_connect)

     $dn        = 'ou=example,dc=org';
     $filter    = '(|(sn=Doe*)(givenname=John*))';
     $justthese = array('ou', 'sn', 'givenname', 'mail');

     $sr = ldap_search($ds, $dn, $filter, $justthese);

     var_dump(ldap_count_entries($ds, $sr));

以上例程的输出类似于：

     int(1)

ldap_control_paged_result
ldap_delete
LDAP 函数


Delete an entry from a directory

ldap_count_entries
ldap_dn2ufn
LDAP 函数
PHP Manual

ldap_delete

(PHP 4, PHP 5, PHP 7)

ldap_delete — Delete an entry from a directory

说明

bool ldap_delete ( resource $link_identifier , string $dn )

Deletes a particular entry in LDAP directory.

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

dn

The distinguished name of an LDAP entity.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ldap_add() - Add entries to LDAP directory

ldap_count_entries
ldap_dn2ufn
LDAP 函数


Convert DN to User Friendly Naming format

ldap_delete
ldap_err2str
LDAP 函数
PHP Manual

ldap_dn2ufn

(PHP 4, PHP 5, PHP 7)

ldap_dn2ufn — Convert DN to User Friendly Naming format

说明

string ldap_dn2ufn ( string $dn )

Turns the specified dn, into a more user-friendly form, stripping off type names.

参数

dn

The distinguished name of an LDAP entity.

返回值

Returns the user friendly name.

ldap_delete
ldap_err2str
LDAP 函数


Convert LDAP error number into string error message

ldap_dn2ufn
ldap_errno
LDAP 函数
PHP Manual

ldap_err2str

(PHP 4, PHP 5, PHP 7)

ldap_err2str — Convert LDAP error number into string error message

说明

string ldap_err2str ( int $errno )

Returns the string error message explaining the error number errno. While LDAP errno numbers are standardized, different libraries return different or even localized textual error messages. Never check for a specific error message text, but always use an error number to check.

参数

errno

The error number.

返回值

Returns the error message, as a string.

范例

Example #1 Enumerating all LDAP error messages

<?php
  for ($i=0; $i<100; $i++) {
    printf("Error $i: %s<br />\n", ldap_err2str($i));
  }
?>

参见

  • ldap_errno() - Return the LDAP error number of the last LDAP command
  • ldap_error() - Return the LDAP error message of the last LDAP command

ldap_dn2ufn
ldap_errno
LDAP 函数


Return the LDAP error number of the last LDAP command

ldap_err2str
ldap_error
LDAP 函数
PHP Manual

ldap_errno

(PHP 4, PHP 5, PHP 7)

ldap_errno — Return the LDAP error number of the last LDAP command

说明

int ldap_errno ( resource $link_identifier )

Returns the standardized error number returned by the last LDAP command. This number can be converted into a textual error message using ldap_err2str().

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

返回值

Return the LDAP error number of the last LDAP command for this link.

范例

Unless you lower your warning level in your php.ini sufficiently or prefix your LDAP commands with @ (at) characters to suppress warning output, the errors generated will also show up in your HTML output.

Example #1 Generating and catching an error

<?php
// This example contains an error, which we will catch.
$ld = ldap_connect("localhost");
$bind = ldap_bind($ld);
// syntax error in filter expression (errno 87),
// must be "objectclass=*" to work.
$res =  @ldap_search($ld, "o=Myorg, c=DE", "objectclass");
if (!$res) {
    echo "LDAP-Errno: " . ldap_errno($ld) . "<br />\n";
    echo "LDAP-Error: " . ldap_error($ld) . "<br />\n";
    die("Argh!<br />\n");
}
$info = ldap_get_entries($ld, $res);
echo $info["count"] . " matching entries.<br />\n";
?>

参见

  • ldap_err2str() - Convert LDAP error number into string error message
  • ldap_error() - Return the LDAP error message of the last LDAP command

ldap_err2str
ldap_error
LDAP 函数


Return the LDAP error message of the last LDAP command

ldap_errno
ldap_escape
LDAP 函数
PHP Manual

ldap_error

(PHP 4, PHP 5, PHP 7)

ldap_error — Return the LDAP error message of the last LDAP command

说明

string ldap_error ( resource $link_identifier )

Returns the string error message explaining the error generated by the last LDAP command for the given link_identifier. While LDAP errno numbers are standardized, different libraries return different or even localized textual error messages. Never check for a specific error message text, but always use an error number to check.

Unless you lower your warning level in your php.ini sufficiently or prefix your LDAP commands with @ (at) characters to suppress warning output, the errors generated will also show up in your HTML output.

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

返回值

Returns string error message.

参见

  • ldap_err2str() - Convert LDAP error number into string error message
  • ldap_errno() - Return the LDAP error number of the last LDAP command

ldap_errno
ldap_escape
LDAP 函数


Escape a string for use in an LDAP filter or DN

ldap_error
ldap_explode_dn
LDAP 函数
PHP Manual

ldap_escape

(PHP 5 >= 5.6.0, PHP 7)

ldap_escape — Escape a string for use in an LDAP filter or DN

说明

string ldap_escape ( string $value [, string $ignore [, int $flags ]] )

Escapes value for use in the context implied by flags.

参数

value

The value to escape.

ignore

Characters to ignore when escaping.

flags

The context the escaped string will be used in: LDAP_ESCAPE_FILTER for filters to be used with ldap_search(), or LDAP_ESCAPE_DN for DNs.

返回值

Returns the escaped string.

ldap_error
ldap_explode_dn
LDAP 函数


Splits DN into its component parts

ldap_escape
ldap_first_attribute
LDAP 函数
PHP Manual

ldap_explode_dn

(PHP 4, PHP 5, PHP 7)

ldap_explode_dn — Splits DN into its component parts

说明

array ldap_explode_dn ( string $dn , int $with_attrib )

Splits the DN returned by ldap_get_dn() and breaks it up into its component parts. Each part is known as Relative Distinguished Name, or RDN.

参数

dn

The distinguished name of an LDAP entity.

with_attrib

Used to request if the RDNs are returned with only values or their attributes as well. To get RDNs with the attributes (i.e. in attribute=value format) set with_attrib to 0 and to get only values set it to 1.

返回值

Returns an array of all DN components, 或者在失败时返回 FALSE. The first element in the array has count key and represents the number of returned values, next elements are numerically indexed DN components.

ldap_escape
ldap_first_attribute
LDAP 函数


Return first attribute

ldap_explode_dn
ldap_first_entry
LDAP 函数
PHP Manual

ldap_first_attribute

(PHP 4, PHP 5, PHP 7)

ldap_first_attribute — Return first attribute

说明

string ldap_first_attribute ( resource $link_identifier , resource $result_entry_identifier )

Gets the first attribute in the given entry. Remaining attributes are retrieved by calling ldap_next_attribute() successively.

Similar to reading entries, attributes are also read one by one from a particular entry.

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

result_entry_identifier

ber_identifier

ber_identifier is the identifier to internal memory location pointer. It is passed by reference. The same ber_identifier is passed to ldap_next_attribute() , which modifies that pointer.

Note:

This parameter is no longer used as this is now handled automatically by PHP. For backwards compatibility PHP will not throw an error if this parameter is passed.

返回值

Returns the first attribute in the entry on success and FALSE on error.

更新日志

版本 | 说明
5.2.4 | The ber_identifier was removed. This is now handled automatically by PHP.

参见

  • ldap_next_attribute() - Get the next attribute in result
  • ldap_get_attributes() - Get attributes from a search result entry

ldap_explode_dn
ldap_first_entry
LDAP 函数


Return first result id

ldap_first_attribute
ldap_first_reference
LDAP 函数
PHP Manual

ldap_first_entry

(PHP 4, PHP 5, PHP 7)

ldap_first_entry — Return first result id

说明

resource ldap_first_entry ( resource $link_identifier , resource $result_identifier )

Returns the entry identifier for first entry in the result. This entry identifier is then supplied to ldap_next_entry() routine to get successive entries from the result.

Entries in the LDAP result are read sequentially using the ldap_first_entry() and ldap_next_entry() functions.

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

result_identifier

返回值

Returns the result entry identifier for the first entry on success and FALSE on error.

参见

  • ldap_get_entries() - Get all result entries

ldap_first_attribute
ldap_first_reference
LDAP 函数


Return first reference

ldap_first_entry
ldap_free_result
LDAP 函数
PHP Manual

ldap_first_reference

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

ldap_first_reference — Return first reference

说明

resource ldap_first_reference ( resource $link , resource $result )
Warning

本函数还未编写文档，仅有参数列表。

ldap_first_entry
ldap_free_result
LDAP 函数


Free result memory

ldap_first_reference
ldap_get_attributes
LDAP 函数
PHP Manual

ldap_free_result

(PHP 4, PHP 5, PHP 7)

ldap_free_result — Free result memory

说明

bool ldap_free_result ( resource $result_identifier )

Frees up the memory allocated internally to store the result. All result memory will be automatically freed when the script terminates.

Typically all the memory allocated for the LDAP result gets freed at the end of the script. In case the script is making successive searches which return large result sets, ldap_free_result() could be called to keep the runtime memory usage by the script low.

参数

result_identifier

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

ldap_first_reference
ldap_get_attributes
LDAP 函数


Get attributes from a search result entry

ldap_free_result
ldap_get_dn
LDAP 函数
PHP Manual

ldap_get_attributes

(PHP 4, PHP 5, PHP 7)

ldap_get_attributes — Get attributes from a search result entry

说明

array ldap_get_attributes ( resource $link_identifier , resource $result_entry_identifier )

Reads attributes and values from an entry in the search result.

Having located a specific entry in the directory, you can find out what information is held for that entry by using this call. You would use this call for an application which "browses" directory entries and/or where you do not know the structure of the directory entries. In many applications you will be searching for a specific attribute such as an email address or a surname, and won't care what other data is held.

return_value["count"] = number of attributes in the entry
return_value[0] = first attribute
return_value[n] = nth attribute

return_value["attribute"]["count"] = number of values for attribute
return_value["attribute"][0] = first value of the attribute
return_value["attribute"][i] = (i+1)th value of the attribute

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

result_entry_identifier

返回值

Returns a complete entry information in a multi-dimensional array on success and FALSE on error.

范例

Example #1 Show the list of attributes held for a particular directory entry

<?php
// $ds is the link identifier for the directory

// $sr is a valid search result from a prior call to
// one of the ldap directory search calls

$entry = ldap_first_entry($ds, $sr);

$attrs = ldap_get_attributes($ds, $entry);

echo $attrs["count"] . " attributes held for this entry:<p>";

for ($i=0; $i < $attrs["count"]; $i++) {
    echo $attrs[$i] . "<br />";
}
?>

参见

  • ldap_first_attribute() - Return first attribute
  • ldap_next_attribute() - Get the next attribute in result

ldap_free_result
ldap_get_dn
LDAP 函数


Get the DN of a result entry

ldap_get_attributes
ldap_get_entries
LDAP 函数
PHP Manual

ldap_get_dn

(PHP 4, PHP 5, PHP 7)

ldap_get_dn — Get the DN of a result entry

说明

string ldap_get_dn ( resource $link_identifier , resource $result_entry_identifier )

Finds out the DN of an entry in the result.

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

result_entry_identifier

返回值

Returns the DN of the result entry and FALSE on error.

ldap_get_attributes
ldap_get_entries
LDAP 函数


Get all result entries

ldap_get_dn
ldap_get_option
LDAP 函数
PHP Manual

ldap_get_entries

(PHP 4, PHP 5, PHP 7)

ldap_get_entries — Get all result entries

说明

array ldap_get_entries ( resource $link_identifier , resource $result_identifier )

Reads multiple entries from the given result, and then reading the attributes and multiple values.

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

result_identifier

返回值

Returns a complete result information in a multi-dimensional array on success and FALSE on error.

The structure of the array is as follows. The attribute index is converted to lowercase. (Attributes are case-insensitive for directory servers, but not when used as array indices.)

return_value["count"] = number of entries in the result
return_value[0] : refers to the details of first entry

return_value[i]["dn"] =  DN of the ith entry in the result

return_value[i]["count"] = number of attributes in ith entry
return_value[i][j] = NAME of the jth attribute in the ith entry in the result

return_value[i]["attribute"]["count"] = number of values for
                                        attribute in ith entry
return_value[i]["attribute"][j] = jth value of attribute in ith entry

参见

  • ldap_first_entry() - Return first result id
  • ldap_next_entry() - Get next result entry

ldap_get_dn
ldap_get_option
LDAP 函数


Get the current value for given option

ldap_get_entries
ldap_get_values_len
LDAP 函数
PHP Manual

ldap_get_option

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

ldap_get_option — Get the current value for given option

说明

bool ldap_get_option ( resource $link_identifier , int $option , mixed &$retval )

Sets retval to the value of the specified option.

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

option

The parameter option can be one of:

Option | Type
LDAP_OPT_DEREF | integer
LDAP_OPT_SIZELIMIT | integer
LDAP_OPT_TIMELIMIT | integer
LDAP_OPT_NETWORK_TIMEOUT | integer
LDAP_OPT_PROTOCOL_VERSION | integer
LDAP_OPT_ERROR_NUMBER | integer
LDAP_OPT_REFERRALS | bool
LDAP_OPT_RESTART | bool
LDAP_OPT_HOST_NAME | string
LDAP_OPT_ERROR_STRING | string
LDAP_OPT_MATCHED_DN | string
LDAP_OPT_SERVER_CONTROLS | array
LDAP_OPT_CLIENT_CONTROLS | array
LDAP_OPT_X_KEEPALIVE_IDLE | int
LDAP_OPT_X_KEEPALIVE_PROBES | int
LDAP_OPT_X_KEEPALIVE_INTERVAL | int
LDAP_OPT_X_TLS_CACERTDIR | string
LDAP_OPT_X_TLS_CACERTFILE | string
LDAP_OPT_X_TLS_CERTFILE | string
LDAP_OPT_X_TLS_CIPHER_SUITE | string
LDAP_OPT_X_TLS_CRLCHECK | integer
LDAP_OPT_X_TLS_CRLFILE | string
LDAP_OPT_X_TLS_DHFILE | string
LDAP_OPT_X_TLS_KEYILE | string
LDAP_OPT_X_TLS_PACKAGE | string
LDAP_OPT_X_TLS_PROTOCOL_MIN | integer
LDAP_OPT_X_TLS_RANDOM_FILE | string
LDAP_OPT_X_TLS_REQUIRE_CERT | integer

retval

This will be set to the option value.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Check protocol version

<?php
// $ds is a valid link identifier for a directory server
if (ldap_get_option($ds, LDAP_OPT_PROTOCOL_VERSION, $version)) {
    echo "Using protocol version $version\n";
} else {
    echo "Unable to determine protocol version\n";
}
?>

注释

Note:

This function is only available when using OpenLDAP 2.x.x OR Netscape Directory SDK x.x.

参见

  • ldap_set_option() - Set the value of the given option

ldap_get_entries
ldap_get_values_len
LDAP 函数


Get all binary values from a result entry

ldap_get_option
ldap_get_values
LDAP 函数
PHP Manual

ldap_get_values_len

(PHP 4, PHP 5, PHP 7)

ldap_get_values_len — Get all binary values from a result entry

说明

array ldap_get_values_len ( resource $link_identifier , resource $result_entry_identifier , string $attribute )

Reads all the values of the attribute in the entry in the result.

This function is used exactly like ldap_get_values() except that it handles binary data and not string data.

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

result_entry_identifier

attribute

返回值

Returns an array of values for the attribute on success and FALSE on error. Individual values are accessed by integer index in the array. The first index is 0. The number of values can be found by indexing "count" in the resultant array.

参见

  • ldap_get_values() - Get all values from a result entry

ldap_get_option
ldap_get_values
LDAP 函数


Get all values from a result entry

ldap_get_values_len
ldap_list
LDAP 函数
PHP Manual

ldap_get_values

(PHP 4, PHP 5, PHP 7)

ldap_get_values — Get all values from a result entry

说明

array ldap_get_values ( resource $link_identifier , resource $result_entry_identifier , string $attribute )

Reads all the values of the attribute in the entry in the result.

This call needs a result_entry_identifier, so needs to be preceded by one of the ldap search calls and one of the calls to get an individual entry.

You application will either be hard coded to look for certain attributes (such as "surname" or "mail") or you will have to use the ldap_get_attributes() call to work out what attributes exist for a given entry.

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

result_entry_identifier

attribute

返回值

Returns an array of values for the attribute on success and FALSE on error. The number of values can be found by indexing "count" in the resultant array. Individual values are accessed by integer index in the array. The first index is 0.

LDAP allows more than one entry for an attribute, so it can, for example, store a number of email addresses for one person's directory entry all labeled with the attribute "mail"

    return_value["count"] = number of values for attribute
    return_value[0] = first value of attribute
    return_value[i] = ith value of attribute

范例

Example #1 List all values of the "mail" attribute for a directory entry

<?php
// $ds is a valid link identifier for a directory server

// $sr is a valid search result from a prior call to
//     one of the ldap directory search calls

// $entry is a valid entry identifier from a prior call to
//        one of the calls that returns a directory entry

$values = ldap_get_values($ds, $entry, "mail");

echo $values["count"] . " email addresses for this entry.<br />";

for ($i=0; $i < $values["count"]; $i++) {
    echo $values[$i] . "<br />";
}
?>

参见

  • ldap_get_values_len() - Get all binary values from a result entry

ldap_get_values_len
ldap_list
LDAP 函数


Single-level search

ldap_get_values
ldap_mod_add
LDAP 函数
PHP Manual

ldap_list

(PHP 4, PHP 5, PHP 7)

ldap_list — Single-level search

说明

resource ldap_list ( resource $link_identifier , string $base_dn , string $filter [, array $attributes [, int $attrsonly [, int $sizelimit [, int $timelimit [, int $deref ]]]]] )

Performs the search for a specified filter on the directory with the scope LDAP_SCOPE_ONELEVEL.

LDAP_SCOPE_ONELEVEL means that the search should only return information that is at the level immediately below the base_dn given in the call. (Equivalent to typing "ls" and getting a list of files and folders in the current working directory.)

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

base_dn

The base DN for the directory.

filter

attributes

An array of the required attributes, e.g. array("mail", "sn", "cn"). Note that the "dn" is always returned irrespective of which attributes types are requested.

Using this parameter is much more efficient than the default action (which is to return all attributes and their associated values). The use of this parameter should therefore be considered good practice.

attrsonly

Should be set to 1 if only attribute types are wanted. If set to 0 both attributes types and attribute values are fetched which is the default behaviour.

sizelimit

Enables you to limit the count of entries fetched. Setting this to 0 means no limit.

Note:

This parameter can NOT override server-side preset sizelimit. You can set it lower though.

Some directory server hosts will be configured to return no more than a preset number of entries. If this occurs, the server will indicate that it has only returned a partial results set. This also occurs if you use this parameter to limit the count of fetched entries.

timelimit

Sets the number of seconds how long is spend on the search. Setting this to 0 means no limit.

Note:

This parameter can NOT override server-side preset timelimit. You can set it lower though.

deref

Specifies how aliases should be handled during the search. It can be one of the following:

  • LDAP_DEREF_NEVER - (default) aliases are never dereferenced.
  • LDAP_DEREF_SEARCHING - aliases should be dereferenced during the search but not when locating the base object of the search.
  • LDAP_DEREF_FINDING - aliases should be dereferenced when locating the base object but not during the search.
  • LDAP_DEREF_ALWAYS - aliases should be dereferenced always.

返回值

Returns a search result identifier or FALSE on error.

更新日志

版本 | 说明
4.0.5 | Parallel searches support was added. See ldap_search() for details.

范例

Example #1 Produce a list of all organizational units of an organization

<?php
// $ds is a valid link identifier for a directory server

$basedn = "o=My Company, c=US";
$justthese = array("ou");

$sr = ldap_list($ds, $basedn, "ou=*", $justthese);

$info = ldap_get_entries($ds, $sr);

for ($i=0; $i < $info["count"]; $i++) {
    echo $info[$i]["ou"][0];
}
?>

参见

  • ldap_search() - Search LDAP tree

ldap_get_values
ldap_mod_add
LDAP 函数


Add attribute values to current attributes

ldap_list
ldap_mod_del
LDAP 函数
PHP Manual

ldap_mod_add

(PHP 4, PHP 5, PHP 7)

ldap_mod_add — Add attribute values to current attributes

说明

bool ldap_mod_add ( resource $link_identifier , string $dn , array $entry )

Adds one or more attributes to the specified dn. It performs the modification at the attribute level as opposed to the object level. Object-level additions are done by the ldap_add() function.

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

dn

The distinguished name of an LDAP entity.

entry

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note: 此函数可安全用于二进制对象。

参见

  • ldap_mod_del() - Delete attribute values from current attributes
  • ldap_mod_replace() - Replace attribute values with new ones

ldap_list
ldap_mod_del
LDAP 函数


Delete attribute values from current attributes

ldap_mod_add
ldap_mod_replace
LDAP 函数
PHP Manual

ldap_mod_del

(PHP 4, PHP 5, PHP 7)

ldap_mod_del — Delete attribute values from current attributes

说明

bool ldap_mod_del ( resource $link_identifier , string $dn , array $entry )

Removes one or more attributes from the specified dn. It performs the modification at the attribute level as opposed to the object level. Object-level deletions are done by the ldap_delete() function.

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

dn

The distinguished name of an LDAP entity.

entry

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ldap_mod_add() - Add attribute values to current attributes
  • ldap_mod_replace() - Replace attribute values with new ones

ldap_mod_add
ldap_mod_replace
LDAP 函数


Replace attribute values with new ones

ldap_mod_del
ldap_modify_batch
LDAP 函数
PHP Manual

ldap_mod_replace

(PHP 4, PHP 5, PHP 7)

ldap_mod_replace — Replace attribute values with new ones

说明

bool ldap_mod_replace ( resource $link_identifier , string $dn , array $entry )

Replaces one or more attributes from the specified dn. It performs the modification at the attribute level as opposed to the object level. Object-level modifications are done by the ldap_modify() function.

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

dn

The distinguished name of an LDAP entity.

entry

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note: 此函数可安全用于二进制对象。

参见

  • ldap_mod_del() - Delete attribute values from current attributes
  • ldap_mod_add() - Add attribute values to current attributes

ldap_mod_del
ldap_modify_batch
LDAP 函数


Batch and execute modifications on an LDAP entry

ldap_mod_replace
ldap_modify
LDAP 函数
PHP Manual

ldap_modify_batch

(PHP 5.4 >= 5.4.26, PHP 5.5 >= 5.5.10, PHP 5.6 >= 5.6.0, PHP 7)

ldap_modify_batch — Batch and execute modifications on an LDAP entry

说明

bool ldap_modify_batch ( resource $link_identifier , string $dn , array $entry )

Modifies an existing entry in the LDAP directory. Allows detailed specification of the modifications to perform.

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

dn

The distinguished name of an LDAP entity.

entry

An array that specifies the modifications to make. Each entry in this array is an associative array with two or three keys: attrib maps to the name of the attribute to modify, modtype maps to the type of modification to perform, and (depending on the type of modification) values maps to an array of attribute values relevant to the modification.

Possible values for modtype include:

LDAP_MODIFY_BATCH_ADD

Each value specified through values is added (as an additional value) to the attribute named by attrib.

LDAP_MODIFY_BATCH_REMOVE

Each value specified through values is removed from the attribute named by attrib. Any value of the attribute not contained in the values array will remain untouched.

LDAP_MODIFY_BATCH_REMOVE_ALL

All values are removed from the attribute named by attrib. A values entry must not be provided.

LDAP_MODIFY_BATCH_REPLACE

All current values of the attribute named by attrib are replaced with the values specified through values.

Note that any value for attrib must be a string, any value for values must be an array of strings, and any value for modtype must be one of the LDAP_MODIFY_BATCH_* constants listed above.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Add a telephone number to a contact

<?php
$dn = "cn=John Smith,ou=Wizards,dc=example,dc=com";
$modifs = [
    [
        "attrib"  => "telephoneNumber",
        "modtype" => LDAP_MODIFY_BATCH_ADD,
        "values"  => ["+1 555 555 1717"],
    ],
];
ldap_modify_batch($connection, $dn, $modifs);
?>

Example #2 Rename a user

<?php
$dn = "cn=John Smith,ou=Wizards,dc=example,dc=com";
$modifs = [
    [
        "attrib"  => "sn",
        "modtype" => LDAP_MODIFY_BATCH_REPLACE,
        "values"  => ["Smith-Jones"],
    ],
    [
        "attrib"  => "givenName",
        "modtype" => LDAP_MODIFY_BATCH_REPLACE,
        "values"  => ["Jack"],
    ],
];
ldap_modify_batch($connection, $dn, $modifs);
ldap_rename($connection, $dn, "cn=Jack Smith-Jones", NULL, TRUE);
?>

Example #3 Add two e-mail addresses to a user

<?php
$dn = "cn=Jack Smith-Jones,ou=Wizards,dc=example,dc=com";
$modifs = [
    [
        "attrib"  => "mail",
        "modtype" => LDAP_MODIFY_BATCH_ADD,
        "values"  => [
            "jack.smith@example.com",
            "jack.smith-jones@example.com",
        ],
    ],
];
ldap_modify_batch($connection, $dn, $modifs);
?>

Example #4 Change a user's password

<?php
$dn = "cn=Jack Smith-Jones,ou=Wizards,dc=example,dc=com";
$modifs = [
    [
        "attrib"  => "userPassword",
        "modtype" => LDAP_MODIFY_BATCH_REMOVE,
        "values"  => ["Tr0ub4dor&3"],
    ],
    [
        "attrib"  => "userPassword",
        "modtype" => LDAP_MODIFY_BATCH_ADD,
        "values"  => ["correct horse battery staple"],
    ],
];
ldap_modify_batch($connection, $dn, $modifs);
?>

Example #5 Change a user's password (Active Directory)

<?php
function adifyPw($pw)
{
    return iconv("UTF-8", "UTF-16LE", '"' . $pw . '"');
}

$dn = "cn=Jack Smith-Jones,ou=Wizards,dc=ad,dc=example,dc=com";
$modifs = [
    [
        "attrib"  => "unicodePwd",
        "modtype" => LDAP_MODIFY_BATCH_REMOVE,
        "values"  => [adifyPw("Tr0ub4dor&3")],
    ],
    [
        "attrib"  => "unicodePwd",
        "modtype" => LDAP_MODIFY_BATCH_ADD,
        "values"  => [adifyPw("correct horse battery staple")],
    ],
];
ldap_modify_batch($connection, $dn, $modifs);

ldap_mod_replace
ldap_modify
LDAP 函数


Modify an LDAP entry

ldap_modify_batch
ldap_next_attribute
LDAP 函数
PHP Manual

ldap_modify

(PHP 4, PHP 5, PHP 7)

ldap_modify — Modify an LDAP entry

说明

bool ldap_modify ( resource $link_identifier , string $dn , array $entry )

Modify the existing entries in the LDAP directory. The structure of the entry is same as in ldap_add().

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

dn

The distinguished name of an LDAP entity.

entry

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note: 此函数可安全用于二进制对象。

参见

  • ldap_rename() - Modify the name of an entry

ldap_modify_batch
ldap_next_attribute
LDAP 函数


Get the next attribute in result

ldap_modify
ldap_next_entry
LDAP 函数
PHP Manual

ldap_next_attribute

(PHP 4, PHP 5, PHP 7)

ldap_next_attribute — Get the next attribute in result

说明

string ldap_next_attribute ( resource $link_identifier , resource $result_entry_identifier )

Retrieves the attributes in an entry. The first call to ldap_next_attribute() is made with the result_entry_identifier returned from ldap_first_attribute().

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

result_entry_identifier

ber_identifier

The internal state of the pointer is maintained by this parameter.

Note:

This parameter is no longer used as this is now handled automatically by PHP. For backwards compatibility PHP will not throw an error if this parameter is passed.

返回值

Returns the next attribute in an entry on success and FALSE on error.

更新日志

版本 | 说明
5.2.4 | The ber_identifier was removed. This is now handled automatically by PHP.

参见

  • ldap_get_attributes() - Get attributes from a search result entry

ldap_modify
ldap_next_entry
LDAP 函数


Get next result entry

ldap_next_attribute
ldap_next_reference
LDAP 函数
PHP Manual

ldap_next_entry

(PHP 4, PHP 5, PHP 7)

ldap_next_entry — Get next result entry

说明

resource ldap_next_entry ( resource $link_identifier , resource $result_entry_identifier )

Retrieve the entries stored in the result. Successive calls to the ldap_next_entry() return entries one by one till there are no more entries. The first call to ldap_next_entry() is made after the call to ldap_first_entry() with the result_entry_identifier as returned from the ldap_first_entry().

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

result_entry_identifier

返回值

Returns entry identifier for the next entry in the result whose entries are being read starting with ldap_first_entry(). If there are no more entries in the result then it returns FALSE.

参见

  • ldap_get_entries() - Get all result entries

ldap_next_attribute
ldap_next_reference
LDAP 函数


Get next reference

ldap_next_entry
ldap_parse_reference
LDAP 函数
PHP Manual

ldap_next_reference

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

ldap_next_reference — Get next reference

说明

resource ldap_next_reference ( resource $link , resource $entry )
Warning

本函数还未编写文档，仅有参数列表。

ldap_next_entry
ldap_parse_reference
LDAP 函数


Extract information from reference entry

ldap_next_reference
ldap_parse_result
LDAP 函数
PHP Manual

ldap_parse_reference

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

ldap_parse_reference — Extract information from reference entry

说明

bool ldap_parse_reference ( resource $link , resource $entry , array &$referrals )
Warning

本函数还未编写文档，仅有参数列表。

ldap_next_reference
ldap_parse_result
LDAP 函数


Extract information from result

ldap_parse_reference
ldap_read
LDAP 函数
PHP Manual

ldap_parse_result

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

ldap_parse_result — Extract information from result

说明

bool ldap_parse_result ( resource $link , resource $result , int &$errcode [, string &$matcheddn [, string &$errmsg [, array &$referrals ]]] )

Parses an LDAP search result.

参数

link

An LDAP link identifier, returned by ldap_connect().

result_identifier

An LDAP result resource, returned by ldap_list() or ldap_search().

errcode

A reference to a variable that will be set to the LDAP error code in the result, or 0 if no error occurred.

matcheddn

A reference to a variable that will be set to a matched DN if one was recognised within the request, otherwise it will be set to NULL.

errmsg

A reference to a variable that will be set to the LDAP error message in the result, or an empty string if no error occurred.

referrals

A reference to a variable that will be set to an array set to all of the referral strings in the result, or an empty array if no referrals were returned.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ldap_parse_result() example

<?php
$result = ldap_search($link, "cn=userref,dc=my-domain,dc=com", "(cn=user*)");
$errcode = $dn = $errmsg = $refs =  null;
if (ldap_parse_result($link, $result, $errcode, $dn, $errmsg, $refs)) {
    // do something with $errcode, $dn, $errmsg and $refs
}
?>

ldap_parse_reference
ldap_read
LDAP 函数


Read an entry

ldap_parse_result
ldap_rename
LDAP 函数
PHP Manual

ldap_read

(PHP 4, PHP 5, PHP 7)

ldap_read — Read an entry

说明

resource ldap_read ( resource $link_identifier , string $base_dn , string $filter [, array $attributes [, int $attrsonly [, int $sizelimit [, int $timelimit [, int $deref ]]]]] )

Performs the search for a specified filter on the directory with the scope LDAP_SCOPE_BASE. So it is equivalent to reading an entry from the directory.

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

base_dn

The base DN for the directory.

filter

An empty filter is not allowed. If you want to retrieve absolutely all information for this entry, use a filter of objectClass=*. If you know which entry types are used on the directory server, you might use an appropriate filter such as objectClass=inetOrgPerson.

attributes

An array of the required attributes, e.g. array("mail", "sn", "cn"). Note that the "dn" is always returned irrespective of which attributes types are requested.

Using this parameter is much more efficient than the default action (which is to return all attributes and their associated values). The use of this parameter should therefore be considered good practice.

attrsonly

Should be set to 1 if only attribute types are wanted. If set to 0 both attributes types and attribute values are fetched which is the default behaviour.

sizelimit

Enables you to limit the count of entries fetched. Setting this to 0 means no limit.

Note:

This parameter can NOT override server-side preset sizelimit. You can set it lower though.

Some directory server hosts will be configured to return no more than a preset number of entries. If this occurs, the server will indicate that it has only returned a partial results set. This also occurs if you use this parameter to limit the count of fetched entries.

timelimit

Sets the number of seconds how long is spend on the search. Setting this to 0 means no limit.

Note:

This parameter can NOT override server-side preset timelimit. You can set it lower though.

deref

Specifies how aliases should be handled during the search. It can be one of the following:

  • LDAP_DEREF_NEVER - (default) aliases are never dereferenced.
  • LDAP_DEREF_SEARCHING - aliases should be dereferenced during the search but not when locating the base object of the search.
  • LDAP_DEREF_FINDING - aliases should be dereferenced when locating the base object but not during the search.
  • LDAP_DEREF_ALWAYS - aliases should be dereferenced always.

返回值

Returns a search result identifier or FALSE on error.

更新日志

版本 | 说明
4.0.5 | Parallel searches support was added. See ldap_search() for details.

ldap_parse_result
ldap_rename
LDAP 函数


Modify the name of an entry

ldap_read
ldap_sasl_bind
LDAP 函数
PHP Manual

ldap_rename

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

ldap_rename — Modify the name of an entry

说明

bool ldap_rename ( resource $link_identifier , string $dn , string $newrdn , string $newparent , bool $deleteoldrdn )

The entry specified by dn is renamed/moved.

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

dn

The distinguished name of an LDAP entity.

newrdn

The new RDN.

newparent

The new parent/superior entry.

deleteoldrdn

If TRUE the old RDN value(s) is removed, else the old RDN value(s) is retained as non-distinguished values of the entry.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note:

This function currently only works with LDAPv3. You may have to use ldap_set_option() prior to binding to use LDAPv3. This function is only available when using OpenLDAP 2.x.x OR Netscape Directory SDK x.x.

参见

  • ldap_modify() - Modify an LDAP entry

ldap_read
ldap_sasl_bind
LDAP 函数


Bind to LDAP directory using SASL

ldap_rename
ldap_search
LDAP 函数
PHP Manual

ldap_sasl_bind

(PHP 5, PHP 7)

ldap_sasl_bind — Bind to LDAP directory using SASL

说明

bool ldap_sasl_bind ( resource $link [, string $binddn = NULL [, string $password = NULL [, string $sasl_mech = NULL [, string $sasl_realm = NULL [, string $sasl_authc_id = NULL [, string $sasl_authz_id = NULL [, string $props = NULL ]]]]]]] )
Warning

本函数还未编写文档，仅有参数列表。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note: Requirement
ldap_sasl_bind() requires SASL support (sasl.h). Be sure --with-ldap-sasl is used when configuring PHP otherwise this function will be undefined.

更新日志

版本 | 说明
5.3.3 | Support on Windows was added.

ldap_rename
ldap_search
LDAP 函数


Search LDAP tree

ldap_sasl_bind
ldap_set_option
LDAP 函数
PHP Manual

ldap_search

(PHP 4, PHP 5, PHP 7)

ldap_search — Search LDAP tree

说明

resource ldap_search ( resource $link_identifier , string $base_dn , string $filter [, array $attributes [, int $attrsonly [, int $sizelimit [, int $timelimit [, int $deref ]]]]] )

Performs the search for a specified filter on the directory with the scope of LDAP_SCOPE_SUBTREE. This is equivalent to searching the entire directory.

From 4.0.5 on it's also possible to do parallel searches. To do this you use an array of link identifiers, rather than a single identifier, as the first argument. If you don't want the same base DN and the same filter for all the searches, you can also use an array of base DNs and/or an array of filters. Those arrays must be of the same size as the link identifier array since the first entries of the arrays are used for one search, the second entries are used for another, and so on. When doing parallel searches an array of search result identifiers is returned, except in case of error, then the entry corresponding to the search will be FALSE. This is very much like the value normally returned, except that a result identifier is always returned when a search was made. There are some rare cases where the normal search returns FALSE while the parallel search returns an identifier.

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

base_dn

The base DN for the directory.

filter

The search filter can be simple or advanced, using boolean operators in the format described in the LDAP documentation (see the » Netscape Directory SDK or » RFC4515 for full information on filters).

attributes

An array of the required attributes, e.g. array("mail", "sn", "cn"). Note that the "dn" is always returned irrespective of which attributes types are requested.

Using this parameter is much more efficient than the default action (which is to return all attributes and their associated values). The use of this parameter should therefore be considered good practice.

attrsonly

Should be set to 1 if only attribute types are wanted. If set to 0 both attributes types and attribute values are fetched which is the default behaviour.

sizelimit

Enables you to limit the count of entries fetched. Setting this to 0 means no limit.

Note:

This parameter can NOT override server-side preset sizelimit. You can set it lower though.

Some directory server hosts will be configured to return no more than a preset number of entries. If this occurs, the server will indicate that it has only returned a partial results set. This also occurs if you use this parameter to limit the count of fetched entries.

timelimit

Sets the number of seconds how long is spend on the search. Setting this to 0 means no limit.

Note:

This parameter can NOT override server-side preset timelimit. You can set it lower though.

deref

Specifies how aliases should be handled during the search. It can be one of the following:

  • LDAP_DEREF_NEVER - (default) aliases are never dereferenced.
  • LDAP_DEREF_SEARCHING - aliases should be dereferenced during the search but not when locating the base object of the search.
  • LDAP_DEREF_FINDING - aliases should be dereferenced when locating the base object but not during the search.
  • LDAP_DEREF_ALWAYS - aliases should be dereferenced always.

返回值

Returns a search result identifier or FALSE on error.

范例

The example below retrieves the organizational unit, surname, given name and email address for all people in "My Company" where the surname or given name contains the substring $person. This example uses a boolean filter to tell the server to look for information in more than one attribute.

Example #1 LDAP search

<?php
// $ds is a valid link identifier for a directory server

// $person is all or part of a person's name, eg "Jo"

$dn = "o=My Company, c=US";
$filter="(|(sn=$person*)(givenname=$person*))";
$justthese = array("ou", "sn", "givenname", "mail");

$sr=ldap_search($ds, $dn, $filter, $justthese);

$info = ldap_get_entries($ds, $sr);

echo $info["count"]." entries returned\n";
?>

ldap_sasl_bind
ldap_set_option
LDAP 函数


Set the value of the given option

ldap_search
ldap_set_rebind_proc
LDAP 函数
PHP Manual

ldap_set_option

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

ldap_set_option — Set the value of the given option

说明

bool ldap_set_option ( resource $link_identifier , int $option , mixed $newval )

Sets the value of the specified option to be newval.

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

option

The parameter option can be one of:

Option | Type | Available since
LDAP_OPT_DEREF | integer
LDAP_OPT_SIZELIMIT | integer
LDAP_OPT_TIMELIMIT | integer
LDAP_OPT_NETWORK_TIMEOUT | integer | PHP 5.3.0
LDAP_OPT_PROTOCOL_VERSION | integer
LDAP_OPT_ERROR_NUMBER | integer
LDAP_OPT_REFERRALS | bool
LDAP_OPT_RESTART | bool
LDAP_OPT_HOST_NAME | string
LDAP_OPT_ERROR_STRING | string
LDAP_OPT_DIAGNOSTIC_MESSAGE | string
LDAP_OPT_MATCHED_DN | string
LDAP_OPT_SERVER_CONTROLS | array
LDAP_OPT_CLIENT_CONTROLS | array
LDAP_OPT_X_KEEPALIVE_IDLE | int
LDAP_OPT_X_KEEPALIVE_PROBES | int
LDAP_OPT_X_KEEPALIVE_INTERVAL | int
LDAP_OPT_X_TLS_CACERTDIR | string
LDAP_OPT_X_TLS_CACERTFILE | string
LDAP_OPT_X_TLS_CERTFILE | string
LDAP_OPT_X_TLS_CIPHER_SUITE | string
LDAP_OPT_X_TLS_CRLCHECK | integer
LDAP_OPT_X_TLS_CRLFILE | string
LDAP_OPT_X_TLS_DHFILE | string
LDAP_OPT_X_TLS_KEYILE | string
LDAP_OPT_X_TLS_PROTOCOL_MIN | integer
LDAP_OPT_X_TLS_RANDOM_FILE | string
LDAP_OPT_X_TLS_REQUIRE_CERT | integer | PHP 7.1.0

LDAP_OPT_SERVER_CONTROLS and LDAP_OPT_CLIENT_CONTROLS require a list of controls, this means that the value must be an array of controls. A control consists of an oid identifying the control, an optional value, and an optional flag for criticality. In PHP a control is given by an array containing an element with the key oid and string value, and two optional elements. The optional elements are key value with string value and key iscritical with boolean value. iscritical defaults to FALSE if not supplied. See » draft-ietf-ldapext-ldap-c-api-xx.txt for details. See also the second example below.

newval

The new value for the specified option.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Set protocol version

<?php
// $ds is a valid link identifier for a directory server
if (ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3)) {
    echo "Using LDAPv3";
} else {
    echo "Failed to set protocol version to 3";
}
?>

Example #2 Set server controls

<?php
// $ds is a valid link identifier for a directory server
// control with no value
$ctrl1 = array("oid" => "1.2.752.58.10.1", "iscritical" => true);
// iscritical defaults to FALSE
$ctrl2 = array("oid" => "1.2.752.58.1.10", "value" => "magic");
// try to set both controls
if (!ldap_set_option($ds, LDAP_OPT_SERVER_CONTROLS, array($ctrl1, $ctrl2))) {
    echo "Failed to set server controls";
}
?>

注释

Note:

This function is only available when using OpenLDAP 2.x.x OR Netscape Directory SDK x.x.

参见

  • ldap_get_option() - Get the current value for given option

ldap_search
ldap_set_rebind_proc
LDAP 函数


Set a callback function to do re-binds on referral chasing

ldap_set_option
ldap_sort
LDAP 函数
PHP Manual

ldap_set_rebind_proc

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

ldap_set_rebind_proc — Set a callback function to do re-binds on referral chasing

说明

bool ldap_set_rebind_proc ( resource $link , callable $callback )
Warning

本函数还未编写文档，仅有参数列表。

ldap_set_option
ldap_sort
LDAP 函数


Sort LDAP result entries on the client side

ldap_set_rebind_proc
ldap_start_tls
LDAP 函数
PHP Manual

ldap_sort

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

ldap_sort — Sort LDAP result entries on the client side

说明

bool ldap_sort ( resource $link , resource $result , string $sortfilter )

Sort the result of a LDAP search, returned by ldap_search().

As this function sorts the returned values on the client side it is possible that you might not get the expected results in case you reach the sizelimit either of the server or defined within ldap_search().

Warning

This feature has been DEPRECATED as of PHP 7.0.0. Relying on this feature is highly discouraged.

参数

link

An LDAP link identifier, returned by ldap_connect().

result

An search result identifier, returned by ldap_search().

sortfilter

The attribute to use as a key in the sort.

范例

Sorting the result of a search.

Example #1 LDAP sort

<?php
     // $ds is a valid link identifier (see ldap_connect)

     $dn        = 'ou=example,dc=org';
     $filter    = '(|(sn=Doe*)(givenname=John*))';
     $justthese = array('ou', 'sn', 'givenname', 'mail');

     $sr = ldap_search($ds, $dn, $filter, $justthese);

     // Sort
     ldap_sort($ds, $sr, 'sn');

     // Retrieving the data
     $info = ldap_get_entries($ds, $sr);

ldap_set_rebind_proc
ldap_start_tls
LDAP 函数


Start TLS

ldap_sort
ldap_t61_to_8859
LDAP 函数
PHP Manual

ldap_start_tls

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

ldap_start_tls — Start TLS

说明

bool ldap_start_tls ( resource $link )
Warning

本函数还未编写文档，仅有参数列表。

ldap_sort
ldap_t61_to_8859
LDAP 函数


Translate t61 characters to 8859 characters

ldap_start_tls
ldap_unbind
LDAP 函数
PHP Manual

ldap_t61_to_8859

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

ldap_t61_to_8859 — Translate t61 characters to 8859 characters

说明

string ldap_t61_to_8859 ( string $value )
Warning

本函数还未编写文档，仅有参数列表。

ldap_start_tls
ldap_unbind
LDAP 函数


Unbind from LDAP directory

ldap_t61_to_8859
Memcache
LDAP 函数
PHP Manual

ldap_unbind

(PHP 4, PHP 5, PHP 7)

ldap_unbind — Unbind from LDAP directory

说明

bool ldap_unbind ( resource $link_identifier )

Unbinds from the LDAP directory.

参数

link_identifier

An LDAP link identifier, returned by ldap_connect().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ldap_bind() - 绑定 LDAP 目录

ldap_t61_to_8859
Memcache
LDAP 函数


Memcache

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • Memcache — Memcache类
    • Memcache::add — 增加一个条目到缓存服务器
    • Memcache::addServer — 向连接池中添加一个memcache服务器
    • Memcache::close — 关闭memcache连接
    • Memcache::connect — 打开一个memcached服务端连接
    • Memcache::decrement — 减小元素的值
    • Memcache::delete — 从服务端删除一个元素
    • Memcache::flush — 清洗（删除）已经存储的所有的元素
    • Memcache::get — 从服务端检回一个元素
    • Memcache::getExtendedStats — 缓存服务器池中所有服务器统计信息
    • Memcache::getServerStatus — 用于获取一个服务器的在线/离线状态
    • Memcache::getStats — 获取服务器统计信息
    • Memcache::getVersion — 返回服务器版本信息
    • Memcache::increment — 增加一个元素的值
    • Memcache::pconnect — 打开一个到服务器的持久化连接
    • Memcache::replace — 替换已经存在的元素的值
    • Memcache::set — Store data at the server
    • Memcache::setCompressThreshold — 开启大值自动压缩
    • Memcache::setServerParams — 运行时修改服务器参数和状态
  • Memcache 函数
    • memcache_debug — 转换调试输出的开/关
ldap_unbind
简介
其它服务


简介

Memcache模块提供了于memcached方便的面向过程及面向对象的接口，memcached是为了降低动态web应用 从数据库加载数据而产生的一种常驻进程缓存产品。

Memcache模块同时提供了一个session 处理器 (memcache).

更多关于memcached的信息请参见» http://www.memcached.org/.

Memcache
安装／配置
Memcache


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Memcache


需求

此模块使用了函数 » zlib 来支持数据压缩，因此安装此模块需要安装 Zlib 模块。

PHP 4.3.3 及以后版本需要使用 memcache 扩展。

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。 安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/memcache.

Note:

可以关闭memcache session处理器的支持。使用pecl install进行安装时，在静态编译到php中时使用选项 --disable-memcache-session 可以关闭memcache的session 支持（默认时开启的）。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Memcache配置选项
名字 | 默认 | 可修改范围 | 更新日志
memcache.allow_failover | "1" | PHP_INI_ALL | Available since memcache 2.0.2.
memcache.max_failover_attempts | "20" | PHP_INI_ALL | Available since memcache 2.1.0.
memcache.chunk_size | "8192" | PHP_INI_ALL | Available since memcache 2.0.2.
memcache.default_port | "11211" | PHP_INI_ALL | Available since memcache 2.0.2.
memcache.hash_strategy | "standard" | PHP_INI_ALL | Available since memcache 2.2.0.
memcache.hash_function | "crc32" | PHP_INI_ALL | Available since memcache 2.2.0.
session.save_handler | "files" | PHP_INI_ALL | Supported since memcache 2.1.2
session.save_path | "" | PHP_INI_ALL | Supported since memcache 2.1.2
memcache.protocol | ascii | >PHP_INI_ALL | Supported since memcache 3.0.0
memcache.redundancy | 1 | >PHP_INI_ALL | Supported since memcache 3.0.0
memcache.session_redundancy | 2 | >PHP_INI_ALL | Supported since memcache 3.0.0
memcache.compress_threshold | 20000 | >PHP_INI_ALL | Supported since memcache 3.0.3
memcache.lock_timeout | 15 | >PHP_INI_ALL | Supported since memcache 3.0.4
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

memcache.allow_failover boolean

是否在发生错误时（对用户）透明的转移到其他服务器。

memcache.max_failover_attempts integer

定义在写入和获取数据时最多尝试的服务器次数（即：故障转移最大尝试数），仅和 memcache.allow_failover结合使用。

memcache.chunk_size integer

数据传输块大小，这个值越小网络I/O次数越多，如果发现莫名的速度降低， 可以尝试将此值调至32768。

memcache.default_port string

在尝试连接memcache的时候如果没有单独指定端口默认使用的TCP端口号。

memcache.hash_strategy string

控制key到服务器的映射（分布式）策略。值 consistent允许服务器增减而不会（大量）导致健的重新映射 （译注：参见http://tech.idv2.com/2008/07/24/memcached-004/），设置为 standard则使用余数方式进行key的映射。

memcache.hash_function string

控制在key-server映射时使用哪个hash函数crc32 标明使用标准CRC32进行hash，fnv则说明使用FNV-1a。

session.save_handler string

当值为memcache时标记使用memcache作为session处理器。

session.save_path string

定义一个逗号分割的用于session存储的服务器url列表，例如： "tcp://host1:11211, tcp://host2:11211".

每个url可以包含参数，这些参数于方法Memcache::addServer()的参数相同。比如： "tcp://host1:11211?persistent=1&weight=1&timeout=1&retry_interval=15"

memcache.protocol string

memcache.redundancy integer

memcache.session_redundancy integer

memcache.compress_threshold integer

memcache.lock_timeout integer

安装
资源类型
安装／配置


资源类型

在memcache 模块中只有一个资源类型 - 它就是到一个缓存服务器连接的链接标识符。

运行时配置
预定义常量
安装／配置


预定义常量

Memcache 常量
常量名 | 描述
MEMCACHE_COMPRESSED (integer) | 用于在 Memcache::set(), Memcache::add() 和 Memcache::replace()几个方法中指定是否对写入数据压缩。
MEMCACHE_HAVE_SESSION (integer) | 1代表当前Memcache session处理器可用，其他为0
资源类型
范例
Memcache


范例

Table of Contents

预定义常量
Memcache


范例
Memcache
范例
PHP Manual

Example #1 memcache扩展概览示例

在这个例子中，一个对象被保存到缓存中，又被取回。对象和其他非标量类型在存储 之前会先被序列化，因此它不可以用来存储资源类型（连接标记及其他）。（译注：请注意隐式的 资源类型存储，比如要保存的对象自身不是资源，但其中某个属性却是资源）

<?php

$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");

$version = $memcache->getVersion();
echo "服务端版本信息: ".$version."<br/>\n";

$tmp_object = new stdClass;
$tmp_object->str_attr = 'test';
$tmp_object->int_attr = 123;

$memcache->set('key', $tmp_object, false, 10) or die ("Failed to save data at the server");
echo "将数据保存到缓存中（数据10秒后失效）<br/>\n";

$get_result = $memcache->get('key');
echo "从缓存中取到的数据:<br/>\n";

var_dump($get_result);

?>

Example #2 使用memcache的session处理器

<?php

$session_save_path = "tcp://$host:$port?persistent=1&weight=2&timeout=2&retry_interval=10,  ,tcp://$host:$port  ";
ini_set('session.save_handler', 'memcache');
ini_set('session.save_path', $session_save_path);

?>

范例
Memcache
范例


Memcache类

(PECL memcache >= 0.2.0)

简介

表示连接到一个服务器组的连接。

类摘要

Memcache {
bool add ( string $key , mixed $var [, int $flag [, int $expire ]] )
bool addServer ( string $host [, int $port = 11211 [, bool $persistent [, int $weight [, int $timeout [, int $retry_interval [, bool $status [, callback $failure_callback [, int $timeoutms ]]]]]]]] )
bool close ( void )
bool connect ( string $host [, int $port [, int $timeout ]] )
int decrement ( string $key [, int $value = 1 ] )
bool delete ( string $key [, int $timeout = 0 ] )
bool flush ( void )
string get ( string $key [, int &$flags ] )
array getExtendedStats ([ string $type [, int $slabid [, int $limit = 100 ]]] )
int getServerStatus ( string $host [, int $port = 11211 ] )
array getStats ([ string $type [, int $slabid [, int $limit = 100 ]]] )
string getVersion ( void )
int increment ( string $key [, int $value = 1 ] )
mixed pconnect ( string $host [, int $port [, int $timeout ]] )
bool replace ( string $key , mixed $var [, int $flag [, int $expire ]] )
bool set ( string $key , mixed $var [, int $flag [, int $expire ]] )
bool setCompressThreshold ( int $threshold [, float $min_savings ] )
bool setServerParams ( string $host [, int $port = 11211 [, int $timeout [, int $retry_interval = false [, bool $status [, callback $failure_callback ]]]]] )
}

Table of Contents

  • Memcache::add — 增加一个条目到缓存服务器
  • Memcache::addServer — 向连接池中添加一个memcache服务器
  • Memcache::close — 关闭memcache连接
  • Memcache::connect — 打开一个memcached服务端连接
  • Memcache::decrement — 减小元素的值
  • Memcache::delete — 从服务端删除一个元素
  • Memcache::flush — 清洗（删除）已经存储的所有的元素
  • Memcache::get — 从服务端检回一个元素
  • Memcache::getExtendedStats — 缓存服务器池中所有服务器统计信息
  • Memcache::getServerStatus — 用于获取一个服务器的在线/离线状态
  • Memcache::getStats — 获取服务器统计信息
  • Memcache::getVersion — 返回服务器版本信息
  • Memcache::increment — 增加一个元素的值
  • Memcache::pconnect — 打开一个到服务器的持久化连接
  • Memcache::replace — 替换已经存在的元素的值
  • Memcache::set — Store data at the server
  • Memcache::setCompressThreshold — 开启大值自动压缩
  • Memcache::setServerParams — 运行时修改服务器参数和状态
Memcache::add
Memcache


增加一个条目到缓存服务器

Memcache
Memcache::addServer
Memcache
PHP Manual

Memcache::add

(PECL memcache >= 0.2.0)

Memcache::add — 增加一个条目到缓存服务器

说明

bool Memcache::add ( string $key , mixed $var [, int $flag [, int $expire ]] )

Memcache::add()方法在缓存服务器之前不存在key时， 以key作为key存储一个变量var到缓存服务器。 同样可以使用函数memcache_add()。

参数

key

将要分配给变量的key。

var

将要被存储的变量。字符串和整型被以原文存储，其他类型序列化后存储。

flag

使用MEMCACHE_COMPRESSED标记对数据进行压缩(使用zlib)。

expire

当前写入缓存的数据的失效时间。如果此值设置为0表明此数据永不过期。你可以设置一个UNIX时间戳或 以秒为单位的整数（从当前算起的时间差）来说明此数据的过期时间，但是在后一种设置方式中，不能超过 2592000秒（30天）。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如果这个key已经存在返回FALSE。 Memcache::add()方法的其他行为类似 Memcache::set()。

范例

Example #1 Memcache::add()示例

<?php

$memcache_obj = memcache_connect("localhost", 11211);

/* 面向过程编程 API */
memcache_add($memcache_obj, 'var_key', 'test variable', false, 30);

/* 面向对象编程 API */
$memcache_obj->add('var_key', 'test variable', false, 30);

?>

参见

  • Memcache::set() - Store data at the server
  • Memcache::replace() - 替换已经存在的元素的值

Memcache
Memcache::addServer
Memcache


向连接池中添加一个memcache服务器

Memcache::add
Memcache::close
Memcache
PHP Manual

Memcache::addServer

(PECL memcache >= 2.0.0)

Memcache::addServer — 向连接池中添加一个memcache服务器

说明

bool Memcache::addServer ( string $host [, int $port = 11211 [, bool $persistent [, int $weight [, int $timeout [, int $retry_interval [, bool $status [, callback $failure_callback [, int $timeoutms ]]]]]]]] )

Memcache::addServer()增加一个服务器到连接池中。通过Memcache::addServer() 打开的连接将会在脚本执行结束后自动关闭，也可以使用Memcache::close()进行手动关闭。 您也可以使用memcache_add_server()来添加服务器。

当使用这个方法的时候(与Memcache::connect()和Memcache::pconnect()相反) 网络连接并不会立刻建立，而是直到真正使用的时候才建立。 因此在加入大量服务器到连接池中时也是没有开销的，因为它们可能并不会被使用。

故障转移可能在方法的任何一个层次发生，通常只要其他服务器可用用户就不会感受到。任何的socket或memcache服务器级别的错误 （比如内存溢出）都可能导致故障转移。而一般的客户端错误比如使用Memcache::add尝试增加一个已经存在的key则不会导致故障转移。

Note:

这个方法在2.0.0版本加入Memcache。

参数

host

要连接的memcached服务端监听的主机位置。这个参数通常指定其他类型的传输比如Unix域套接字使用 unix:///path/to/memcached.sock，这种情况下参数port 必须设置为0。

port

要连接的memcached服务端监听的端口。当使用UNIX域套接字连接时设置为0。

persistent

控制是否使用持久化连接。默认TRUE。

weight

为此服务器创建的桶的数量，用来控制此服务器被选中的权重，单个服务器被选中的概率是相对于所有服务器weight总和而言的。

timeout

连接持续（超时）时间（单位秒），默认值1秒，修改此值之前请三思，过长的连接持续时间可能会导致失去所有的缓存优势。

retry_interval

服务器连接失败时重试的间隔时间，默认值15秒。如果此参数设置为-1表示不重试。此参数和persistent参数在扩展以 dl()函数动态加载的时候无效。

每个失败的连接结构有自己的超时时间，并且在它失效之前选择后端服务请求时该结构会被跳过。一旦一个连接失效， 它将会被成功重新连接或被标记为失败连接以在下一个retry_interval秒重连。 典型的影响是每个web服务子进程在服务于一个页面时将会每retry_interval秒 尝试重新连接一次。

status

控制此服务器是否可以被标记为在线状态。设置此参数值为FALSE并且retry_interval参数 设置为-1时允许将失败的服务器保留在一个池中以免影响key的分配算法。对于这个服务器的请求会进行故障转移或者立即失败， 这受限于memcache.allow_failover参数的设置。该参数默认TRUE，表明允许进行故障转移。

failure_callback

允许用户指定一个运行时发生错误后的回调函数。回调函数会在故障转移之前运行。回调函数会接受到两个参数，分别是失败主机的 主机名和端口号。

timeoutms

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Memcache::addServer() 示例

<?php

/* OO API */

$memcache = new Memcache;
$memcache->addServer('memcache_host', 11211);
$memcache->addServer('memcache_host2', 11211);

/* procedural API */

$memcache_obj = memcache_connect('memcache_host', 11211);
memcache_add_server($memcache_obj, 'memcache_host2', 11211);

?>

参见

  • Memcache::connect() - 打开一个memcached服务端连接
  • Memcache::pconnect() - 打开一个到服务器的持久化连接
  • Memcache::close() - 关闭memcache连接
  • Memcache::setServerParams() - 运行时修改服务器参数和状态
  • Memcache::getServerStatus() - 用于获取一个服务器的在线/离线状态

Memcache::add
Memcache::close
Memcache


关闭memcache连接

Memcache::addServer
Memcache::connect
Memcache
PHP Manual

Memcache::close

(PECL memcache >= 0.4.0)

Memcache::close — 关闭memcache连接

说明

bool Memcache::close ( void )

Memcache::close()关闭到memcached服务端的连接。这个函数不会关闭持久化连接， 持久化连接仅仅会在web服务器关机/重启时关闭。与之对应的，你也可以使用memcache_close()函数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Memcache::close()示例

<?php

/* 面向过程 API */
$memcache_obj = memcache_connect('memcache_host', 11211);
/*
do something here ..
*/
memcache_close($memcache_obj);

/* 面向对象 API */
$memcache_obj = new Memcache;
$memcache_obj->connect('memcache_host', 11211);
/*
do something here ..
*/
$memcache_obj->close();

?>

参见

  • Memcache::connect() - 打开一个memcached服务端连接
  • Memcache::pconnect() - 打开一个到服务器的持久化连接

Memcache::addServer
Memcache::connect
Memcache


打开一个memcached服务端连接

Memcache::close
Memcache::decrement
Memcache
PHP Manual

Memcache::connect

(PECL memcache >= 0.2.0)

Memcache::connect — 打开一个memcached服务端连接

说明

bool Memcache::connect ( string $host [, int $port [, int $timeout ]] )

Memcache::connect()建立一个到memcached服务端的连接。 使用方法
Memcache::connect()打开的连接在脚本执行结束后会自动关闭。当然，你也可以使用方法
Memcache::close()来主动关闭。
同时你也可以使用memcache_connect()函数来获取一个连接。

参数

host

memcached服务端监听主机地址。这个参数也可以指定为其他传输方式比如unix:///path/to/memcached.sock 来使用Unix域socket，在这种方式下，port参数必须设置为0。

port

memcached服务端监听端口。当使用Unix域socket的时候要设置此参数为0。

timeout

连接持续（超时）时间，单位秒。默认值1秒，修改此值之前请三思，过长的连接持续时间可能会导致失去所有的缓存优势。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Memcache::connect() example

<?php

/* procedural API */

$memcache_obj = memcache_connect('memcache_host', 11211);

/* OO API */

$memcache = new Memcache;
$memcache->connect('memcache_host', 11211);

?>

参见

  • Memcache::pconnect() - 打开一个到服务器的持久化连接
  • Memcache::close() - 关闭memcache连接

Memcache::close
Memcache::decrement
Memcache


减小元素的值

Memcache::connect
Memcache::delete
Memcache
PHP Manual

Memcache::decrement

(PECL memcache >= 0.2.0)

Memcache::decrement — 减小元素的值

说明

int Memcache::decrement ( string $key [, int $value = 1 ] )

Memcache::decrement()方法将元素的值减小value。 类似于 Memcache::increment()方法，首先将元素当前值转换成数值然后减去value。

Note:

新的元素的值不会小于0。

Note:

不要将Memcache::decrement()方法用于压缩存储的元素，那样作会导致 Memcache::get()方法获取值会失败。

Memcache::decrement()在元素不存在时不能创建它。 同样可以使用memcache_decrement()函数来完成相同的工作。

参数

key

要减小值的元素的key。

value

value参数指要将指定元素的值减小多少。

返回值

成功的时候返回元素的新值 或者在失败时返回 FALSE

范例

Example #1 Memcache::decrement() example

<?php

/* procedural API */
$memcache_obj = memcache_connect('memcache_host', 11211);
/* 将test_item对应的值减小2 */
$new_value = memcache_decrement($memcache_obj, 'test_item', 2);

/* OO API */
$memcache_obj = new Memcache;
$memcache_obj->connect('memcache_host', 11211);
/* decrement item by 3 */
$new_value = $memcache_obj->decrement('test_item', 3);
?>

参见

  • Memcache::increment() - 增加一个元素的值
  • Memcache::replace() - 替换已经存在的元素的值

Memcache::connect
Memcache::delete
Memcache


从服务端删除一个元素

Memcache::decrement
Memcache::flush
Memcache
PHP Manual

Memcache::delete

(PECL memcache >= 0.2.0)

Memcache::delete — 从服务端删除一个元素

说明

bool Memcache::delete ( string $key [, int $timeout = 0 ] )

Memcache::delete()函数通过key删除一个元素。 如果参数timeout指定，该元素会在timeout秒后失效。 同样也可以使用memcache_delete()函数完成同样功能。

参数

key

要删除的元素的key。

timeout

删除该元素的执行时间。如果值为0,则该元素立即删除，如果值为30,元素会在30秒内被删除。

更新日志

版本 | 说明
Unknown | It's not recommended to use the timeout parameter. The behavior differs between memcached versions, but setting to 0 is safe. Other values for this deprecated feature may cause the memcache delete to fail.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Memcache::delete() example

<?php

/* procedural API */
$memcache_obj = memcache_connect('memcache_host', 11211);

/* 10秒后key_to_delete对应的值会被从服务端删除 */
memcache_delete($memcache_obj, 'key_to_delete', 10);

/* OO API */
$memcache_obj = new Memcache;
$memcache_obj->connect('memcache_host', 11211);

$memcache_obj->delete('key_to_delete', 10);

?>

参见

  • Memcache::set() - Store data at the server
  • Memcache::replace() - 替换已经存在的元素的值

Memcache::decrement
Memcache::flush
Memcache


清洗（删除）已经存储的所有的元素

Memcache::delete
Memcache::get
Memcache
PHP Manual

Memcache::flush

(PECL memcache >= 1.0.0)

Memcache::flush — 清洗（删除）已经存储的所有的元素

说明

bool Memcache::flush ( void )

Memcache::flush()立即使所有已经存在的元素失效。方法Memcache::flush() 并不会真正的释放任何资源，而是仅仅标记所有元素都失效了，因此已经被使用的内存会被新的元素复写。 同样你也可以使用函数memcache_flush()完成相同功能。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Memcache::flush()示例

<?php

/* procedural API */
$memcache_obj = memcache_connect('memcache_host', 11211);

memcache_flush($memcache_obj);

/* OO API */

$memcache_obj = new Memcache;
$memcache_obj->connect('memcache_host', 11211);

$memcache_obj->flush();

?>

Memcache::delete
Memcache::get
Memcache


从服务端检回一个元素

Memcache::flush
Memcache::getExtendedStats
Memcache
PHP Manual

Memcache::get

(PECL memcache >= 0.2.0)

Memcache::get — 从服务端检回一个元素

说明

string Memcache::get ( string $key [, int &$flags ] )
array Memcache::get ( array $keys [, array &$flags ] )

如果服务端之前有以key作为key存储的元素，Memcache::get()方法此时返回之前存储的值。

你可以给Memcache::get()方法传递一个数组（多个key）来获取一个数组的元素值，返回的数组仅仅包含从 服务端查找到的key-value对。

参数

key

要获取值的key或key数组。

flags

如果给定这个参数（以引用方式传递），该参数会被写入一些key对应的信息。这些标记和Memcache::set()方法中的同名参数 意义相同。用int值的低位保留了pecl/memcache的内部用法（比如：用来说明压缩和序列化状态）。（译注：最后一位表明是否序列化，倒数第二位表明是否经过压缩， 比如：如果此值为1表示经过序列化，但未经过压缩，2表明压缩而未序列化，3表明压缩并且序列化，0表明未经过压缩和序列化，具体算法可查找linux文件权限算法相关资料）

返回值

返回key对应的存储元素的字符串值或者在失败或key未找到的时候返回FALSE。

范例

Example #1 Memcache::get() 示例

<?php

/* procedural API */
$memcache_obj = memcache_connect('memcache_host', 11211);
$var = memcache_get($memcache_obj, 'some_key');

/* OO API */
$memcache_obj = new Memcache;
$memcache_obj->connect('memcache_host', 11211);
$var = $memcache_obj->get('some_key');

/*
你同样可以使用数组key作为参数，如果某个元素没有在服务端发现，结果数组中将不会包含这些key。
*/

/* procedural API */
$memcache_obj = memcache_connect('memcache_host', 11211);
$var = memcache_get($memcache_obj, Array('some_key', 'another_key'));

/* OO API */
$memcache_obj = new Memcache;
$memcache_obj->connect('memcache_host', 11211);
$var = $memcache_obj->get(Array('some_key', 'second_key'));

?>

Memcache::flush
Memcache::getExtendedStats
Memcache


缓存服务器池中所有服务器统计信息

Memcache::get
Memcache::getServerStatus
Memcache
PHP Manual

Memcache::getExtendedStats

(PECL memcache >= 2.0.0)

Memcache::getExtendedStats — 缓存服务器池中所有服务器统计信息

说明

array Memcache::getExtendedStats ([ string $type [, int $slabid [, int $limit = 100 ]]] )

Memcache::getExtendedStats() 返回一个二维关联数据的服务器统计信息。数组的key由host:port方式 组成，无效的服务器返回的统计信息被设置为false，同样的，你可以使用函数memcache_get_extended_stats()。

Note:

这个函数在Memcache2.0.0版本加入。

Note:

(译注)获取Memcache内所有数据方法：首先使用getExtendedStats('slabs')获取到每个服务器上活动slabs分块的id， 然后 使用getExtendedStats('cachedump', $slabid, $limit)来获取每个slab里面缓存的项，其中$slabid是slab分块id， $limit指 期望获取其中的多少条记录。

参数

type

期望抓取的统计信息类型，可以使用的值有{reset, malloc, maps, cachedump, slabs, items, sizes}。 通过memcached协议指定这些附加参数是为了方便memcache开发者(检查其中的变动)。

slabid

用于与参数type联合从指定slab分块拷贝数据，cachedump命令会完全占用服务器通常用于 比较严格的调试。

limit

用于和参数type联合来设置cachedump时从服务端获取的实体条数。

返回值

返回一个二维关联数组的服务器统计信息或者在失败时返回FALSE。

范例

Example #1 Memcache::getExtendedStats() 示例

<?php
    $memcache_obj = new Memcache;
    $memcache_obj->addServer('memcache_host', 11211);
    $memcache_obj->addServer('failed_host', 11211);

    $stats = $memcache_obj->getExtendedStats();
    print_r($stats);
?>

以上例程会输出：

Array
(
    [memcache_host:11211] => Array
        (
            [pid] => 3756
            [uptime] => 603011
            [time] => 1133810435
            [version] => 1.1.12
            [rusage_user] => 0.451931
            [rusage_system] => 0.634903
            [curr_items] => 2483
            [total_items] => 3079
            [bytes] => 2718136
            [curr_connections] => 2
            [total_connections] => 807
            [connection_structures] => 13
            [cmd_get] => 9748
            [cmd_set] => 3096
            [get_hits] => 5976
            [get_misses] => 3772
            [bytes_read] => 3448968
            [bytes_written] => 2318883
            [limit_maxbytes] => 33554432
        )

    [failed_host:11211] => false
)

参见

  • Memcache::getVersion() - 返回服务器版本信息
  • Memcache::getStats() - 获取服务器统计信息

Memcache::get
Memcache::getServerStatus
Memcache


用于获取一个服务器的在线/离线状态

Memcache::getExtendedStats
Memcache::getStats
Memcache
PHP Manual

Memcache::getServerStatus

(PECL memcache >= 2.1.0)

Memcache::getServerStatus — 用于获取一个服务器的在线/离线状态

说明

int Memcache::getServerStatus ( string $host [, int $port = 11211 ] )

Memcache::getServerStatus()返回一个服务器的在线/离线状态，你也同样可以使用 函数memcache_get_server_status()。

Note:

这个函数在memcache2.1.0版本加入。

参数

host

主机监听地址。

port

主机监听端口，默认11211.

返回值

返回一个服务器的状态，0表示服务器离线，非0表示在线。

范例

Example #1 Memcache::getServerStatus() 示例

<?php

/* OO API */
$memcache = new Memcache;
$memcache->addServer('memcache_host', 11211);
echo $memcache->getServerStatus('memcache_host', 11211);

/* procedural API */
$memcache = memcache_connect('memcache_host', 11211);
echo memcache_get_server_status($memcache, 'memcache_host', 11211);

?>

参见

  • Memcache::addServer() - 向连接池中添加一个memcache服务器
  • Memcache::setServerParams() - 运行时修改服务器参数和状态

Memcache::getExtendedStats
Memcache::getStats
Memcache


获取服务器统计信息

Memcache::getServerStatus
Memcache::getVersion
Memcache
PHP Manual

Memcache::getStats

(PECL memcache >= 0.2.0)

Memcache::getStats — 获取服务器统计信息

说明

array Memcache::getStats ([ string $type [, int $slabid [, int $limit = 100 ]]] )

Memcache::getStats()返回一个关联数据的服务器统计信息。数组key是统计信息名， 值就是统计信息的值。同样你可以使用函数memcache_get_stats()。

参数

type

期望抓取的统计信息类型，可以使用的值有{reset, malloc, maps, cachedump, slabs, items, sizes}。 通过memcached协议指定这些附加参数是为了方便memcache开发者(检查其中的变动)。

slabid

用于与参数type联合从指定slab分块拷贝数据，cachedump命令会完全占用服务器通常用于 比较严格的调试。

limit

用于和参数type联合来设置cachedump时从服务端获取的实体条数。

返回值

返回关联数组表示的服务器统计信息 或者在失败时返回 FALSE

参见

  • Memcache::getVersion() - 返回服务器版本信息
  • Memcache::getExtendedStats() - 缓存服务器池中所有服务器统计信息

Memcache::getServerStatus
Memcache::getVersion
Memcache


返回服务器版本信息

Memcache::getStats
Memcache::increment
Memcache
PHP Manual

Memcache::getVersion

(PECL memcache >= 0.2.0)

Memcache::getVersion — 返回服务器版本信息

说明

string Memcache::getVersion ( void )

Memcache::getVersion()返回一个字符串表示的服务端版本号。 同样你也可以使用函数memcache_get_version()。

返回值

返回服务端版本号 或者在失败时返回 FALSE

范例

Example #1 Memcache::getVersion() 示例

<?php

/* OO API */
$memcache = new Memcache;
$memcache->connect('memcache_host', 11211);
echo $memcache->getVersion();

/* procedural API */
$memcache = memcache_connect('memcache_host', 11211);
echo memcache_get_version($memcache);

?>

参见

  • Memcache::getExtendedStats() - 缓存服务器池中所有服务器统计信息
  • Memcache::getStats() - 获取服务器统计信息

Memcache::getStats
Memcache::increment
Memcache


增加一个元素的值

Memcache::getVersion
Memcache::pconnect
Memcache
PHP Manual

Memcache::increment

(PECL memcache >= 0.2.0)

Memcache::increment — 增加一个元素的值

说明

int Memcache::increment ( string $key [, int $value = 1 ] )

Memcache::increment()将指定元素的值增加value。如果指定的key 对应的元素不是数值类型并且不能被转换为数值， 会将此值修改为value. Memcache::increment() 不会在key对应元素不存在时创建元素。

Note:

不要在经过压缩存储的元素上使用Memcache::increment()，因为这样作会导致后续对Memcache::get()的调用失败。

同样你也可以使用函数memcache_increment()。

参数

key

将要增加值的元素的key。

value

参数value表明要将指定元素值增加多少。

返回值

成功时返回新的元素值 或者在失败时返回 FALSE

范例

Example #1 Memcache::increment()示例

<?php

/* procedural API */
$memcache_obj = memcache_connect('memcache_host', 11211);
/* increment counter by 2 */
$current_value = memcache_increment($memcache_obj, 'counter', 2);

/* OO API */
$memcache_obj = new Memcache;
$memcache_obj->connect('memcache_host', 11211);
/* increment counter by 3 */
$current_value = $memcache_obj->increment('counter', 3);

?>

参见

  • Memcache::decrement() - 减小元素的值
  • Memcache::replace() - 替换已经存在的元素的值

Memcache::getVersion
Memcache::pconnect
Memcache


打开一个到服务器的持久化连接

Memcache::increment
Memcache::replace
Memcache
PHP Manual

Memcache::pconnect

(PECL memcache >= 0.4.0)

Memcache::pconnect — 打开一个到服务器的持久化连接

说明

mixed Memcache::pconnect ( string $host [, int $port [, int $timeout ]] )

Memcache::pconnect()和
Memcache::connect()非常类似，不同点在于这里建立的连接是持久化的。
这个连接不会在脚本执行结束后或者Memcache::close()被调用后关闭。
同样你也可以使用函数memcache_pconnect()。

参数

host

服务端监听的主机地址。这个参数还可以指定为其他传输方式比如unix:///path/to/memcached.sock 来使用Unix域套接字，使用这种方式port参数必须设置为0。

port

服务端监听的端口号。使用Unix域套接字的时候需要将这个参数设置为0。

timeout

连接持续（超时）时间，单位秒。默认值1秒，修改此值之前请三思，过长的连接持续时间可能会导致失去所有的缓存优势。

返回值

返回一个 Memcache 对象 或者在失败时返回 FALSE.

范例

Example #1 Memcache::pconnect()示例

<?php

/* procedural API */
$memcache_obj = memcache_pconnect('memcache_host', 11211);

/* OO API */

$memcache_obj = new Memcache;
$memcache_obj->pconnect('memcache_host', 11211);

?>

参见

  • Memcache::connect() - 打开一个memcached服务端连接

Memcache::increment
Memcache::replace
Memcache


替换已经存在的元素的值

Memcache::pconnect
Memcache::set
Memcache
PHP Manual

Memcache::replace

(PECL memcache >= 0.2.0)

Memcache::replace — 替换已经存在的元素的值

说明

bool Memcache::replace ( string $key , mixed $var [, int $flag [, int $expire ]] )

Memcache::replace()通过key来查找元素并替换其值。当key
对应的元素不存在时，Memcache::replace()返回FALSE。其他方面Memcache::replace()
的行为和Memcache::set()一样。
同样你也可以使用函数memcache_replace()。

参数

key

期望替换值的元素的key。

var

将要存储的新的值，字符串和数值直接存储，其他类型序列化后存储。

flag

使用MEMCACHE_COMPRESSED指定对值进行压缩(使用zlib)。

expire

当前写入缓存的数据的失效时间。如果此值设置为0表明此数据永不过期。你可以设置一个UNIX时间戳或 以秒为单位的整数（从当前算起的时间差）来说明此数据的过期时间，但是在后一种设置方式中，不能超过 2592000秒（30天）。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Memcache::replace()示例

<?php

$memcache_obj = memcache_connect('memcache_host', 11211);

/* procedural API */
memcache_replace($memcache_obj, "test_key", "some variable", false, 30);

/* OO API */
$memcache_obj->replace("test_key", "some variable", false, 30);

?>

参见

  • Memcache::set() - Store data at the server
  • Memcache::add() - 增加一个条目到缓存服务器

Memcache::pconnect
Memcache::set
Memcache


Store data at the server

Memcache::replace
Memcache::setCompressThreshold
Memcache
PHP Manual

Memcache::set

(PECL memcache >= 0.2.0)

Memcache::set — Store data at the server

说明

bool Memcache::set ( string $key , mixed $var [, int $flag [, int $expire ]] )

Memcache::set()向key存储一个元素值为 var。参数expire是以秒为单位的失效时间， 如果设置为0表明该元素永不过期（但是它可能会因为为了给其他项分配空间而被删除）。如果你希望存储的元素 经过压缩（使用zlib），你可以设置flag的值为MEMCACHE_COMPRESSED。

Note:

谨记：资源类型变量（比如文件或连接）不能被存储在缓存中，因为它们在序列化状态不能被完整描述。

同样你也可以使用函数memcache_set()。

参数

key

要设置值的key。

var

要存储的值，字符串和数值直接存储，其他类型序列化后存储。

flag

使用MEMCACHE_COMPRESSED指定对值进行压缩(使用zlib)。

expire

当前写入缓存的数据的失效时间。如果此值设置为0表明此数据永不过期。你可以设置一个UNIX时间戳或 以秒为单位的整数（从当前算起的时间差）来说明此数据的过期时间，但是在后一种设置方式中，不能超过 2592000秒（30天）。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Memcache::set() 示例

<?php
/* procedural API */

/* connect to memcached server */
$memcache_obj = memcache_connect('memcache_host', 11211);

/*
设置'var_key'对应存储的值
flag参数使用0,值没有经过压缩
失效时间为30秒
*/
memcache_set($memcache_obj, 'var_key', 'some variable', 0, 30);

echo memcache_get($memcache_obj, 'var_key');

?>

Example #2 Memcache::set() 示例

<?php
/* OO API */

$memcache_obj = new Memcache;

/* connect to memcached server */
$memcache_obj->connect('memcache_host', 11211);

/*
设置'var_key'对应值，使用即时压缩
失效时间为50秒
*/
$memcache_obj->set('var_key', 'some really big variable', MEMCACHE_COMPRESSED, 50);

echo $memcache_obj->get('var_key');

?>

参见

  • Memcache::add() - 增加一个条目到缓存服务器
  • Memcache::replace() - 替换已经存在的元素的值

Memcache::replace
Memcache::setCompressThreshold
Memcache


开启大值自动压缩

Memcache::set
Memcache::setServerParams
Memcache
PHP Manual

Memcache::setCompressThreshold

(PECL memcache >= 2.0.0)

Memcache::setCompressThreshold — 开启大值自动压缩

说明

bool Memcache::setCompressThreshold ( int $threshold [, float $min_savings ] )

Memcache::setCompressThreshold()开启对于大值的自动压缩。 同样你也可以使用函数memcache_set_compress_threshold()。

Note:

此函数在memcache2.0.0加入。

参数

threshold

控制多大值进行自动压缩的阈值。

min_saving

指定经过压缩实际存储的值的压缩率，支持的值必须在0和1之间。默认值是0.2表示20%压缩率。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Memcache::setCompressThreshold() 示例

<?php

/* OO API */

$memcache_obj = new Memcache;
$memcache_obj->addServer('memcache_host', 11211);
$memcache_obj->setCompressThreshold(20000, 0.2);

/* procedural API */

$memcache_obj = memcache_connect('memcache_host', 11211);
memcache_set_compress_threshold($memcache_obj, 20000, 0.2);

?>

Memcache::set
Memcache::setServerParams
Memcache


运行时修改服务器参数和状态

Memcache::setCompressThreshold
Memcache 函数
Memcache
PHP Manual

Memcache::setServerParams

(PECL memcache >= 2.1.0)

Memcache::setServerParams — 运行时修改服务器参数和状态

说明

bool Memcache::setServerParams ( string $host [, int $port = 11211 [, int $timeout [, int $retry_interval = false [, bool $status [, callback $failure_callback ]]]]] )

Memcache::setServerParams()用于运行时修改服务器参数。 同样你可以使用函数memcache_set_server_params()。

Note:

在memcache2.1.0加入。

参数

host

服务端监听地址。

port

服务端监听端口。

timeout

连接持续（超时）时间（单位秒），默认值1秒，修改此值之前请三思，过长的连接持续时间可能会导致失去所有的缓存优势。

retry_interval

服务器连接失败时重试的间隔时间，默认值15秒。如果此参数设置为-1表示不重试。此参数和persistent参数在扩展以 dl()函数动态加载的时候无效。

status

控制此服务器是否可以被标记为在线状态。设置此参数值为FALSE并且retry_interval参数 设置为-1时允许将失败的服务器保留在一个池中以免影响key的分配算法。对于这个服务器的请求会进行故障转移或者立即失败， 这受限于memcache.allow_failover参数的设置。该参数默认TRUE，表明允许进行故障转移。

failure_callback

允许用户指定一个运行时发生错误后的回调函数。回调函数会在故障转移之前运行。回调函数会接受到两个参数，分别是失败主机的 主机名和端口号。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Memcache::setServerParams() 示例

<?php

function _callback_memcache_failure($host, $port) {
    print "memcache '$host:$port' failed";
}

/* OO API */

$memcache = new Memcache;

// 增加一台离线服务器
$memcache->addServer('memcache_host', 11211, false, 1, 1, -1, false);

// 使该服务器变为在线状态
$memcache->setServerParams('memcache_host', 11211, 1, 15, true, '_callback_memcache_failure');

/* procedural API */

$memcache_obj = memcache_connect('memcache_host', 11211);
memcache_set_server_params($memcache_obj, 'memcache_host', 11211, 1, 15, true, '_callback_memcache_failure');

?>

参见

  • Memcache::addServer() - 向连接池中添加一个memcache服务器
  • Memcache::getServerStatus() - 用于获取一个服务器的在线/离线状态

Memcache::setCompressThreshold
Memcache 函数
Memcache


Memcache 函数

Table of Contents

  • memcache_debug — 转换调试输出的开/关
Memcache::setServerParams
memcache_debug
Memcache


转换调试输出的开/关

Memcache 函数
Memcached
Memcache 函数
PHP Manual

memcache_debug

(PECL memcache >= 0.2.0)

memcache_debug — 转换调试输出的开/关

说明

bool memcache_debug ( bool $on_off )

memcache_debug()在参数 on_off设置为TRUE时打开调试输出，在值为 FALSE时关闭调试输出。

Note:

memcache_debug()仅仅在PHP以--enable-debug方式编译时可以访问，并且 总是返回TRUE，其他情况下此函数不会产生任何影响并总是返回FALSE。

参数

on_off

TRUE表明打开调试输出。 FALSE表明关闭调试输出。

返回值

当PHP以--enalbe-debug选项构建时返回TRUE其他情况下返回FALSE。

Memcache 函数
Memcached
Memcache 函数


Memcached

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 超时时间
  • 回调
    • 结果回调
    • 通读缓存回调
  • Sessions支持
  • Memcached — Memcached类
    • Memcached::add — 向一个新的key下面增加一个元素
    • Memcached::addByKey — 在指定服务器上的一个新的key下增加一个元素
    • Memcached::addServer — 向服务器池中增加一个服务器
    • Memcached::addServers — 向服务器池中增加多台服务器
    • Memcached::append — 向已存在元素后追加数据
    • Memcached::appendByKey — 向指定服务器上已存在元素后追加数据
    • Memcached::cas — 比较并交换值
    • Memcached::casByKey — 在指定服务器上比较并交换值
    • Memcached::__construct — 创建一个Memcached实例
    • Memcached::decrement — 减小数值元素的值
    • Memcached::decrementByKey — Decrement numeric item's value, stored on a specific server
    • Memcached::delete — 删除一个元素
    • Memcached::deleteByKey — 从指定的服务器删除一个元素
    • Memcached::deleteMulti — Delete multiple items
    • Memcached::deleteMultiByKey — Delete multiple items from a specific server
    • Memcached::fetch — 抓取下一个结果
    • Memcached::fetchAll — 抓取所有剩余的结果
    • Memcached::flush — 作废缓存中的所有元素
    • Memcached::get — 检索一个元素
    • Memcached::getAllKeys — Gets the keys stored on all the servers
    • Memcached::getByKey — 从特定的服务器检索元素
    • Memcached::getDelayed — 请求多个元素
    • Memcached::getDelayedByKey — 从指定的服务器上请求多个元素
    • Memcached::getMulti — 检索多个元素
    • Memcached::getMultiByKey — 从特定服务器检索多个元素
    • Memcached::getOption — 获取Memcached的选项值
    • Memcached::getResultCode — 返回最后一次操作的结果代码
    • Memcached::getResultMessage — 返回最后一次操作的结果描述消息
    • Memcached::getServerByKey — 获取一个key所映射的服务器信息
    • Memcached::getServerList — 获取服务器池中的服务器列表
    • Memcached::getStats — 获取服务器池的统计信息
    • Memcached::getVersion — 获取服务器池中所有服务器的版本信息
    • Memcached::increment — 增加数值元素的值
    • Memcached::incrementByKey — Increment numeric item's value, stored on a specific server
    • Memcached::isPersistent — Check if a persitent connection to memcache is being used
    • Memcached::isPristine — Check if the instance was recently created
    • Memcached::prepend — 向一个已存在的元素前面追加数据
    • Memcached::prependByKey — Prepend data to an existing item on a specific server
    • Memcached::quit — 关闭所有打开的链接。
    • Memcached::replace — 替换已存在key下的元素
    • Memcached::replaceByKey — Replace the item under an existing key on a specific server
    • Memcached::resetServerList — Clears all servers from the server list
    • Memcached::set — 存储一个元素
    • Memcached::setByKey — Store an item on a specific server
    • Memcached::setMulti — 存储多个元素
    • Memcached::setMultiByKey — Store multiple items on a specific server
    • Memcached::setOption — 设置一个memcached选项
    • Memcached::setOptions — Set Memcached options
    • Memcached::setSaslAuthData — Set the credentials to use for authentication
    • Memcached::touch — Set a new expiration on an item
    • Memcached::touchByKey — Set a new expiration on an item on a specific server
memcache_debug
简介
其它服务


简介

» memcached是一个高性能分布式的内存对象缓存系统， 通常被用于降低数据库加载压力以提高动态web应用的响应速度。

此扩展使用了libmemcached库提供的api与memcached服务端进行交互。它同样提供了一个session处理器（memcached）。 它同时提供了一个session处理器（memcached）。

关于libmemcached的更多信息可以在» http://libmemcached.org/libMemcached.html查看。

Memcached
安装／配置
Memcached


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Memcached


需求

这个扩展需要» libmemcached客户端库（版本大于等于 1.0.0）。链接memcached服务器时使用SASL认证，需要libmemcached 必须开启SASL选项。

Memcached从0.2.0开始，要求PHP版本大于等于5.2.0。

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/memcached.

如果libmemcached被安装在一个非标准路径，使用--with-libmemcached-dir=DIR 来指定路径，DIR就是libmemcached安装时的prefix参数。这个路径需要包含文件include/libmemcached/memcached.h。

如果要支持压缩就需要zlib。对于非标准安装的zlib库，使用--with-zlib-dir=DIR 来指定zlib安装路径，DIR就是zib安装时的prefix参数。

session处理器的支持默认是开启的。如果要关闭它，使用选项--disable-memcached-session 。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Memcached配置选项
名字 | 默认 | 可修改范围 | 更新日志
memcached.sess_locking | 1 | PHP_INI_ALL |
memcached.sess_consistent_hash | 0 | PHP_INI_ALL |
memcached.sess_binary | 0 | PHP_INI_ALL |
memcached.sess_lock_wait | 150000 | PHP_INI_ALL |
memcached.sess_prefix | memc.sess.key. | PHP_INI_ALL |
memcached.sess_number_of_replicas | 0 | PHP_INI_ALL |
memcached.sess_randomize_replica_read | 0 | PHP_INI_ALL |
memcached.sess_remove_failed | 0 | PHP_INI_ALL |
memcached.compression_type | fastlz | PHP_INI_ALL |
memcached.compression_factor | 1.3 | PHP_INI_ALL |
memcached.compression_threshold | 2000 | PHP_INI_ALL |
memcached.serializer | php | PHP_INI_ALL |
memcached.use_sasl | 0 | PHP_INI_SYSTEM |

这是配置指令的简短说明。

memcached.sess_locking integer

开启session支持。有效值: On, Off, 默认值 On.

memcached.sess_consistent_hash integer

Memcached 是否使用一致性哈希保存session。如果为On，session数据保存则使用一致性哈希模式。 使用一致性哈希，可以保证你在增加或删除memcached服务器节点的时候不会导致session大规模的失效。 默认此项是关闭的。

memcached.sess_binary integer

Memcached session是否使用二进制模式。如果Libmemcached 开启二进制模式。默认值是 Off.

memcached.sess_lock_wait integer

Session 自旋锁等待时间（微秒）。请小心设置此值。值的类型是整数，当此值被设置为0的时候，lock wait的时间将会使用系统默认值，Memcached扩展中默认值是150000。

memcached.sess_prefix string

设置memcached session key的前缀。session前缀最长为219字节长的字符串。默认值是"memc.sess.key."。

memcached.sess_number_of_replicas integer

使用memcached写session多少个副本。

memcached.sess_randomize_replica_read integer

Memcached session 是否随机复制读。默认值0

memcached.sess_remove_failed integer

是否允许自动剔除出故障的memcached服务器。默认值0

memcached.compression_type string

设置memcached的压缩类型，允许的值为fastlz, zlib。默认值是fastlz（快速无损压缩，性能不错）。

memcached.compression_factor float

压缩因子. 保存时压缩因子超过设置的极限才会将数据压缩存储。存储压缩条件： plain_len > comp_len * factor。默认是1.3 （节省23%的空间）。

memcached.compression_threshold integer

压缩阈值。不压缩的序列化值低于此阈值。默认值是2000字节。

memcached.serializer string

设置缓存对象的默认序列化程序。有效值： php, igbinary, json, json_array.

json

标准的PHP JSON编码。此序列化程序快速而且是压缩后的数据，但是处理UTF-8编码数据时会不完全实现序列化。请查看JSON扩展。

json_array

json序列化，但是反序列化的时候返回数组。

php

PHP标准序列化

igbinary

二进制序列化

如果二进制序列化可用，则优先使用二进制序列化，否则使用php标准序列化。

memcached.use_sasl integer

链接memcached服务器时启用SASL认证。有效值On, Off。默认值是Off。

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

Memcached::OPT_COMPRESSION

开启或关闭压缩功能。当开启的时候，item的值超过某个阈值（当前是100bytes）时，会首先对值进行压缩然后存储，并 在获取该值时进行解压缩然后返回，使得压缩对应用层透明。

类型: boolean, 默认: TRUE.

Memcached::OPT_SERIALIZER

指定对于非标量值进行序列化的序列化工具。可用的值有Memcached::SERIALIZER_PHP 和Memcached::SERIALIZER_IGBINARY。后者仅在memcached配置时开启 --enable-memcached-igbinary选项并且 igbinary扩展被加载时才有效。

类型: integer, 默认: Memcached::SERIALIZER_PHP.

Memcached::SERIALIZER_PHP

默认的PHP序列化工具（即serialize方法）。

Memcached::SERIALIZER_IGBINARY

» igbinary序列化工具。它将php的数据结构 存储为紧密的二进制形式，在时间和空间上都有所改进。

Memcached::SERIALIZER_JSON

JSON序列化，需要 PHP 5.2.10以上。

Memcached::OPT_PREFIX_KEY

可以用于为key创建"域"。这个值将会被作为每个key的前缀，它不能长于128个字符， 并且将会缩短最大可允许的key的长度。这个前缀仅仅用于被存储的元素的key，而不会用于服务器key。

类型: string, 默认: "".

Memcached::OPT_HASH

指定存储元素key使用的hash算法。可用的值是Memcached::HASH_*系列的常量。 每种hash算法都有它的优势和劣势，在你不了解或不确定哪种算法对你更有利时，请使用默认值。

类型: integer, 默认: Memcached::HASH_DEFAULT

Memcached::HASH_DEFAULT

默认的(Jenkins one-at-a-time)元素key hash算法

Memcached::HASH_MD5

md5元素key hash算法。

Memcached::HASH_CRC

CRC元素key hash算法。

Memcached::HASH_FNV1_64

FNV1_64元素key hash算法。

Memcached::HASH_FNV1A_64

FNV1_64A元素key hash算法。

Memcached::HASH_FNV1_32

FNV1_32元素key hash算法。

Memcached::HASH_FNV1A_32

FNV1_32A元素key hash算法。

Memcached::HASH_HSIEH

Hsieh元素key hash算法。

Memcached::HASH_MURMUR

Murmur元素key hash算法。

Memcached::OPT_DISTRIBUTION

指定元素key分布到各个服务器的方法。当前支持的方法有余数分步法合一致性hash算法两种。一致性hash算法提供 了更好的分配策略并且在添加服务器到集群时可以最小化缓存丢失。

类型: integer, 默认: Memcached::DISTRIBUTION_MODULA.

Memcached::DISTRIBUTION_MODULA

余数分布算法。

Memcached::DISTRIBUTION_CONSISTENT

一致性分布算法(基于libketama).

Memcached::OPT_LIBKETAMA_COMPATIBLE

开启或关闭兼容的libketama类行为。当开启此选项后，元素key的hash算法将会被设置为md5并且分布算法将会 采用带有权重的一致性hash分布。这一点非常有用因为其他基于libketama的客户端（比如python，urby）在同样 的服务端配置下可以透明的访问key。

Note:

如果你要使用一致性hash算法强烈建议开启此选项，并且这个选项可能在未来的发布版中被设置为默认开启。

类型: boolean, 默认: FALSE.

Memcached::OPT_BUFFER_WRITES

开启或关闭I/O缓存。开启I/O缓存会导致存储命令不实际发送而是存储到缓冲区中。任意的检索数据操作都会导致 缓存中的数据被发送到远程服务端。退出连接或关闭连接也会导致缓存数据被发送到远程服务端。

类型: boolean, 默认: FALSE.

Memcached::OPT_BINARY_PROTOCOL

开启使用二进制协议。请注意这个选项不能在一个打开的连接上进行切换。

类型: boolean, 默认: FALSE.

Memcached::OPT_NO_BLOCK

开启或关闭异步I/O。这将使得存储函数传输速度最大化。

类型: boolean, 默认: FALSE.

Memcached::OPT_TCP_NODELAY

开启或关闭已连接socket的无延迟特性（在某些幻境可能会带来速度上的提升）。

类型: boolean, 默认: FALSE.

Memcached::OPT_SOCKET_SEND_SIZE

socket发送缓冲的最大值。

类型: integer, 默认: 根据不同的平台/内核配置不同

Memcached::OPT_SOCKET_RECV_SIZE

socket接收缓冲的最大值。

类型: integer, 默认: 根据不同的平台/内核配置不同

Memcached::OPT_CONNECT_TIMEOUT

在非阻塞模式下这里设置的值就是socket连接的超时时间，单位是毫秒。

类型: integer, 默认: 1000.

Memcached::OPT_RETRY_TIMEOUT

等待失败的连接重试的时间，单位秒。

类型: integer, 默认: 0.

Memcached::OPT_SEND_TIMEOUT

socket发送超时时间，单位毫秒。在这种情况下您不能使用非阻塞I/O，这将使得您仍然有数据会发送超时。

类型: integer, 默认: 0.

Memcached::OPT_RECV_TIMEOUT

socket读取超时时间，单位毫秒。在这种情况下您不能使用非阻塞I/O，这将使得您仍然有数据会读取超时。

类型: integer, 默认: 0.

Memcached::OPT_POLL_TIMEOUT

poll连接超时时间，单位毫秒。

类型: integer, 默认: 1000.

Memcached::OPT_CACHE_LOOKUPS

开启或禁用DNS查找缓存。

类型: boolean, 默认: FALSE.

Memcached::OPT_SERVER_FAILURE_LIMIT

指定一个服务器连接的失败重试次数限制。在达到此数量的失败重连后此服务器将被从服务器池中移除。

类型: integer, 默认: 0.

Memcached::HAVE_IGBINARY

指示是否支持igbinary的序列化。

类型: boolean.

Memcached::HAVE_JSON

指示是否支持json的序列化。

类型: boolean.

Memcached::GET_PRESERVE_ORDER

一个用于Memcached::getMulti()和 Memcached::getMultiByKey()的标记用以确保返回的key和请求的key顺序保持一致。 不存在的key将会得到一个NULL值。

Memcached::RES_SUCCESS

操作成功。

Memcached::RES_FAILURE

某种方式的操作失败。

Memcached::RES_HOST_LOOKUP_FAILURE

DNS查找失败。

Memcached::RES_UNKNOWN_READ_FAILURE

读取网络数据失败。

Memcached::RES_PROTOCOL_ERROR

错误的memcached协议命令。

Memcached::RES_CLIENT_ERROR

客户端错误。

Memcached::RES_SERVER_ERROR

服务端错误。

Memcached::RES_WRITE_FAILURE

向网络写数据失败。

Memcached::RES_DATA_EXISTS

比较并交换值操作失败（cas方法）：尝试向服务端存储数据时由于自此连接最后一次取此key对应数据之后被改变导致失败。

Memcached::RES_NOTSTORED

元素没有被存储，但并不是因为一个错误。这通常表明add（元素已存在）或replace（元素不存在）方式存储数据失败或者元素已经在一个删除序列中（延时删除）。

Memcached::RES_NOTFOUND

元素未找到（通过get或cas操作时）。

Memcached::RES_PARTIAL_READ

局部网络数据读错误。

Memcached::RES_SOME_ERRORS

在多key获取的时候发生错误。

Memcached::RES_NO_SERVERS

服务器池空。

Memcached::RES_END

结果集到结尾了。

Memcached::RES_ERRNO

系统错误。

Memcached::RES_BUFFERED

操作被缓存。

Memcached::RES_TIMEOUT

操作超时。

Memcached::RES_BAD_KEY_PROVIDED

提供了无效的key。

Memcached::RES_CONNECTION_SOCKET_CREATE_FAILURE

创建网络socket失败。

Memcached::RES_PAYLOAD_FAILURE

不能压缩/解压缩或序列化/反序列化值。

资源类型
超时时间
Memcached


超时时间

一些存储命令在发送时会包含一个失效值（与一个元素或一个客户端操作请求相关）到服务端。所有这类用法，实际发送的值可以 是一个Unix时间戳（自1970年1月1日起至失效时间的整型秒数），或者是一个从现在算起的以秒为单位的数字。对于后一种情况，这个 秒数不能超过60×60×24×30（30天时间的秒数）;如果失效的值大于这个值， 服务端会将其作为一个真实的Unix时间戳来处理而不是 自当前时间的偏移。

如果失效值被设置为0（默认），此元素永不过期（但是它可能由于服务端为了给其他新的元素分配空间而被删除）。

预定义常量
回调
Memcached


回调

Table of Contents

  • 结果回调
  • 通读缓存回调
超时时间
结果回调
Memcached


结果回调

Result callbacks方式在通过Memcached::getDelayed()或 Memcached::getDelayedBykey()方法获取元素后，为结果集中每个元素调用一次。 回调函数可以接收到一个Memcached对象合一个数组描述的元素信息，此回调函数不需要返回任何信息。

Example #1 结果回调示例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);
$items = array(
    'key1' => 'value1',
    'key2' => 'value2',
    'key3' => 'value3'
);
$m->setMulti($items);
$m->getDelayed(array('key1', 'key3'), true, 'result_cb');

function result_cb($memc, $item)
{
    var_dump($item);
}
?>

以上例程的输出类似于：

array(3) {
  ["key"]=>
  string(4) "key1"
  ["value"]=>
  string(6) "value1"
  ["cas"]=>
  float(49)
}
array(3) {
  ["key"]=>
  string(4) "key3"
  ["value"]=>
  string(6) "value3"
  ["cas"]=>
  float(50)
}
回调
通读缓存回调
回调


通读缓存回调

通读缓存回调在一个元素没有从服务端检索到的时候被调用。这个回调函数会接收到Memcached对象，请求的key以及 一个引用方式传递的值变量等三个参数。此回调函数负责通过返回true或false来决定在key没有值时设置一个默认值。 如果回调返回true，Memcached会存储"传出参数"(引用传递的值变量)存储的值到memcached服务端并将其返回到原来 的调用函数中。仅仅Memcached::get()和Memcached::getByKey() 支持这类回调，因为Memcache协议不支持在请求多个key时提供未检索到key的信息。

Example #1 通读回调示例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

$profile_info = $m->get('user:'.$user_id, 'user_info_cb');

function user_info_cb($memc, $key, &$value)
{
    $user_id = substr($key, 5);
    /* 从数据库读取个人信息 */
    /* ... */
    $value = $profile_info;
    return true;
}
?>
结果回调
Sessions支持
回调


Sessions支持

memcached提供了一个自定义的session处理器可以被用于存储用户session数据到memcached服务端。 一个完全独立的memcached实例将会在内部使用，因此如果需要您可以设置一个不同的服务器池。session的 key被存储在前缀memc.sess.key.之下，因此, 如果你对session和通常的缓存使用了 同样的服务器池，请注意这一点。 译注：另外一个session和通常缓存分离的原因是当通常的缓存占满了memcached服务端后，可能会导致你的session被 从缓存中踢除，导致用户莫名的掉线。

session.save_handler string

设置为memcached开启memcached的session处理器。

session.save_path string

定义一个逗号分隔的hostname:port样式的session缓存服务器池，例如： "sess1:11211, sess2:11211".

通读缓存回调
Memcached
Memcached


Memcached类

(PECL memcached >= 0.1.0)

简介

表征到memcached服务集群的连接。

类摘要

Memcached {
__construct ([ string $persistent_id ] )
public bool add ( string $key , mixed $value [, int $expiration ] )
public bool addByKey ( string $server_key , string $key , mixed $value [, int $expiration ] )
public bool addServer ( string $host , int $port [, int $weight = 0 ] )
public bool addServers ( array $servers )
public bool append ( string $key , string $value )
public bool appendByKey ( string $server_key , string $key , string $value )
public bool cas ( float $cas_token , string $key , mixed $value [, int $expiration ] )
public bool casByKey ( float $cas_token , string $server_key , string $key , mixed $value [, int $expiration ] )
public int decrement ( string $key [, int $offset = 1 ] )
public int decrementByKey ( string $server_key , string $key [, int $offset = 1 [, int $initial_value = 0 [, int $expiry = 0 ]]] )
public bool delete ( string $key [, int $time = 0 ] )
public bool deleteByKey ( string $server_key , string $key [, int $time = 0 ] )
public array deleteMulti ( array $keys [, int $time = 0 ] )
public bool deleteMultiByKey ( string $server_key , array $keys [, int $time = 0 ] )
public array fetch ( void )
public array fetchAll ( void )
public bool flush ([ int $delay = 0 ] )
public mixed get ( string $key [, callback $cache_cb [, float &$cas_token ]] )
public array getAllKeys ( void )
public mixed getByKey ( string $server_key , string $key [, callback $cache_cb [, float &$cas_token ]] )
public bool getDelayed ( array $keys [, bool $with_cas [, callback $value_cb ]] )
public bool getDelayedByKey ( string $server_key , array $keys [, bool $with_cas [, callback $value_cb ]] )
public mixed getMulti ( array $keys [, array &$cas_tokens [, int $flags ]] )
public array getMultiByKey ( string $server_key , array $keys [, string &$cas_tokens [, int $flags ]] )
public mixed getOption ( int $option )
public int getResultCode ( void )
public string getResultMessage ( void )
public array getServerByKey ( string $server_key )
public array getServerList ( void )
public array getStats ( void )
public array getVersion ( void )
public int increment ( string $key [, int $offset = 1 ] )
public int incrementByKey ( string $server_key , string $key [, int $offset = 1 [, int $initial_value = 0 [, int $expiry = 0 ]]] )
public bool isPersistent ( void )
public bool isPristine ( void )
public bool prepend ( string $key , string $value )
public bool prependByKey ( string $server_key , string $key , string $value )
public bool quit ( void )
public bool replace ( string $key , mixed $value [, int $expiration ] )
public bool replaceByKey ( string $server_key , string $key , mixed $value [, int $expiration ] )
public bool resetServerList ( void )
public bool set ( string $key , mixed $value [, int $expiration ] )
public bool setByKey ( string $server_key , string $key , mixed $value [, int $expiration ] )
public bool setMulti ( array $items [, int $expiration ] )
public bool setMultiByKey ( string $server_key , array $items [, int $expiration ] )
public bool setOption ( int $option , mixed $value )
public bool setOptions ( array $options )
public void setSaslAuthData ( string $username , string $password )
public bool touch ( string $key , int $expiration )
public bool touchByKey ( string $server_key , string $key , int $expiration )
}

Table of Contents

  • Memcached::add — 向一个新的key下面增加一个元素
  • Memcached::addByKey — 在指定服务器上的一个新的key下增加一个元素
  • Memcached::addServer — 向服务器池中增加一个服务器
  • Memcached::addServers — 向服务器池中增加多台服务器
  • Memcached::append — 向已存在元素后追加数据
  • Memcached::appendByKey — 向指定服务器上已存在元素后追加数据
  • Memcached::cas — 比较并交换值
  • Memcached::casByKey — 在指定服务器上比较并交换值
  • Memcached::__construct — 创建一个Memcached实例
  • Memcached::decrement — 减小数值元素的值
  • Memcached::decrementByKey — Decrement numeric item's value, stored on a specific server
  • Memcached::delete — 删除一个元素
  • Memcached::deleteByKey — 从指定的服务器删除一个元素
  • Memcached::deleteMulti — Delete multiple items
  • Memcached::deleteMultiByKey — Delete multiple items from a specific server
  • Memcached::fetch — 抓取下一个结果
  • Memcached::fetchAll — 抓取所有剩余的结果
  • Memcached::flush — 作废缓存中的所有元素
  • Memcached::get — 检索一个元素
  • Memcached::getAllKeys — Gets the keys stored on all the servers
  • Memcached::getByKey — 从特定的服务器检索元素
  • Memcached::getDelayed — 请求多个元素
  • Memcached::getDelayedByKey — 从指定的服务器上请求多个元素
  • Memcached::getMulti — 检索多个元素
  • Memcached::getMultiByKey — 从特定服务器检索多个元素
  • Memcached::getOption — 获取Memcached的选项值
  • Memcached::getResultCode — 返回最后一次操作的结果代码
  • Memcached::getResultMessage — 返回最后一次操作的结果描述消息
  • Memcached::getServerByKey — 获取一个key所映射的服务器信息
  • Memcached::getServerList — 获取服务器池中的服务器列表
  • Memcached::getStats — 获取服务器池的统计信息
  • Memcached::getVersion — 获取服务器池中所有服务器的版本信息
  • Memcached::increment — 增加数值元素的值
  • Memcached::incrementByKey — Increment numeric item's value, stored on a specific server
  • Memcached::isPersistent — Check if a persitent connection to memcache is being used
  • Memcached::isPristine — Check if the instance was recently created
  • Memcached::prepend — 向一个已存在的元素前面追加数据
  • Memcached::prependByKey — Prepend data to an existing item on a specific server
  • Memcached::quit — 关闭所有打开的链接。
  • Memcached::replace — 替换已存在key下的元素
  • Memcached::replaceByKey — Replace the item under an existing key on a specific server
  • Memcached::resetServerList — Clears all servers from the server list
  • Memcached::set — 存储一个元素
  • Memcached::setByKey — Store an item on a specific server
  • Memcached::setMulti — 存储多个元素
  • Memcached::setMultiByKey — Store multiple items on a specific server
  • Memcached::setOption — 设置一个memcached选项
  • Memcached::setOptions — Set Memcached options
  • Memcached::setSaslAuthData — Set the credentials to use for authentication
  • Memcached::touch — Set a new expiration on an item
  • Memcached::touchByKey — Set a new expiration on an item on a specific server
Sessions支持
Memcached::add
Memcached


向一个新的key下面增加一个元素

Memcached
Memcached::addByKey
Memcached
PHP Manual

Memcached::add

(PECL memcached >= 0.1.0)

Memcached::add — 向一个新的key下面增加一个元素

说明

public bool Memcached::add ( string $key , mixed $value [, int $expiration ] )

Memcached::add()与Memcached::set()类似，但是如果 key已经在服务端存在，此操作会失败。

参数

key

用于存储值的键名。

value

存储的值。

expiration

到期时间，默认为 0。 更多信息请参见到期时间。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如果key已经存在，Memcached::getResultCode()方法将会返回Memcached::RES_NOTSTORED。

参见

  • Memcached::addByKey() - 在指定服务器上的一个新的key下增加一个元素
  • Memcached::set() - 存储一个元素
  • Memcached::replace() - 替换已存在key下的元素

Memcached
Memcached::addByKey
Memcached


在指定服务器上的一个新的key下增加一个元素

Memcached::add
Memcached::addServer
Memcached
PHP Manual

Memcached::addByKey

(PECL memcached >= 0.1.0)

Memcached::addByKey — 在指定服务器上的一个新的key下增加一个元素

说明

public bool Memcached::addByKey ( string $server_key , string $key , mixed $value [, int $expiration ] )

Memcached::addByKey()在功能上等同于Memcached::add()， 不过这种方式可以自由的指定server_key用于将key 映射到特定的服务器。这在你需要将一些相关联的key保存在一个特定的服务器时非常有用。(译注: $server_key也是一个普通的key, *ByKey系列接口的工作过程是: 首先, 对$server_key进行hash, 得到$server_key应该存储的服务器, 然后将相应的操作在 $server_key所在的服务器上进行.)

参数

server_key

本键名用于识别储存和读取值的服务器。没有将实际的键名散列到具体的项目，而是在决定与哪一个 memcached 服务器通信时将其散列为服务器键名。这使得关联的项目在单一的服务上被组合起来以提高多重操作的效率。

key

用于存储值的键名。

value

存储的值。

expiration

到期时间，默认为 0。 更多信息请参见到期时间。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如果key已经存在，Memcached::getResultCode()方法将会返回Memcached::RES_NOTSTORED。

参见

  • Memcached::add() - 向一个新的key下面增加一个元素
  • Memcached::set() - 存储一个元素
  • Memcached::replace() - 替换已存在key下的元素

Memcached::add
Memcached::addServer
Memcached


向服务器池中增加一个服务器

Memcached::addByKey
Memcached::addServers
Memcached
PHP Manual

Memcached::addServer

(PECL memcached >= 0.1.0)

Memcached::addServer — 向服务器池中增加一个服务器

说明

public bool Memcached::addServer ( string $host , int $port [, int $weight = 0 ] )

Memcached::addServer()增加指定服务器到服务器池中。此时不会建立与服务端的连接，
但是，如果你使用一致性key分布选项（Memcached::DISTRIBUTION_CONSISTENT或
Memcached::OPT_LIBKETAMA_COMPATIBLE），一些内部的数据结构将会被更新。
因此，如果你需要增加多台服务器，更好的方式是使用Memcached::addServers()
以确保这种更新只发生一次。

同一台服务器可以在服务器池中多次出现，因为这里没有做重复检测。但这是不推荐的做法，对于期望提高某台服务器 权重的需求，请使用weight参数。

参数

host

memcached服务端主机名。如果主机名无效，相关的数据操作的返回代码将被设置为Memcached::RES_HOST_LOOKUP_FAILURE。

port

memcached服务端端口号，通常是11211。

weight

此服务器相对于服务器池中所有服务器的权重。此参数用来控制服务器在操作时被选种的概率。这个仅用于一致性 分布选项，并且这个值通常是由服务端分配的内存来设置的。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Memcached::addServer() example

<?php
$m = new Memcached();

/* Add 2 servers, so that the second one
   is twice as likely to be selected. */
$m->addServer('mem1.domain.com', 11211, 33);
$m->addServer('mem2.domain.com', 11211, 67);
?>

参见

  • Memcached::addServers() - 向服务器池中增加多台服务器

Memcached::addByKey
Memcached::addServers
Memcached


向服务器池中增加多台服务器

Memcached::addServer
Memcached::append
Memcached
PHP Manual

Memcached::addServers

(PECL memcached >= 0.1.1)

Memcached::addServers — 向服务器池中增加多台服务器

说明

public bool Memcached::addServers ( array $servers )

Memcached::addServers()向服务器池中增加servers参数指定的服务器。 servers中的每一条都是一个包含主机名，端口以及可选的权重等服务器参数。此时并不会与这些服务端建立 连接。

同一台服务器可以在服务器池中多次出现，因为这里没有做重复检测。但这是不推荐的做法，对于期望提高某台服务器 权重的需求，请使用weight参数。

参数

array

将要增加到池中的服务器列表数组。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Memcached::addServers()示例

<?php
$m = new Memcached();

$servers = array(
    array('mem1.domain.com', 11211, 33),
    array('mem2.domain.com', 11211, 67)
);
$m->addServers($servers);
?>

参见

  • Memcached::addServer() - 向服务器池中增加一个服务器

Memcached::addServer
Memcached::append
Memcached


向已存在元素后追加数据

Memcached::addServers
Memcached::appendByKey
Memcached
PHP Manual

Memcached::append

(PECL memcached >= 0.1.0)

Memcached::append — 向已存在元素后追加数据

说明

public bool Memcached::append ( string $key , string $value )

Memcached::append()向已经存在的元素后追加value参数对应的字符串值。 value被强制转换成字符串类型主要是因为对于mix类型的追加没有很好的定义。

Note:

如果Memcached::OPT_COMPRESSION常量开启，这个操作会失败，并引发一个警告，因为向压缩数据 后追加数据可能会导致解压不了。

参数

key

用于存储值的键名。

value

将要追加的值。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如果key不存在，Memcached::getResultCode()将返回Memcached::RES_NOTSTORED。

范例

Example #1 Memcached::append()示例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);
$m->setOption(Memcached::OPT_COMPRESSION, false);

$m->set('foo', 'abc');
$m->append('foo', 'def');
var_dump($m->get('foo'));
?>

以上例程会输出：

string(6) "abcdef"

参见

  • Memcached::appendByKey() - 向指定服务器上已存在元素后追加数据
  • Memcached::prepend() - 向一个已存在的元素前面追加数据

Memcached::addServers
Memcached::appendByKey
Memcached


向指定服务器上已存在元素后追加数据

Memcached::append
Memcached::cas
Memcached
PHP Manual

Memcached::appendByKey

(PECL memcached >= 0.1.0)

Memcached::appendByKey — 向指定服务器上已存在元素后追加数据

说明

public bool Memcached::appendByKey ( string $server_key , string $key , string $value )

除了可以使用server_key自由的将key映射到指定服务器外， Memcached::appendByKey()在功能上等同于Memcached::append()。 (译注: 关于*ByKey系列方法及$server_key的工作原理请参照addByKey方法文档)

参数

server_key

本键名用于识别储存和读取值的服务器。没有将实际的键名散列到具体的项目，而是在决定与哪一个 memcached 服务器通信时将其散列为服务器键名。这使得关联的项目在单一的服务上被组合起来以提高多重操作的效率。

key

用于存储值的键名。

value

要追加的字符串。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如果key不存在，Memcached::getResultCode()将返回 Memcached::RES_NOTSTORED。

参见

  • Memcached::append() - 向已存在元素后追加数据
  • Memcached::prepend() - 向一个已存在的元素前面追加数据

Memcached::append
Memcached::cas
Memcached


比较并交换值

Memcached::appendByKey
Memcached::casByKey
Memcached
PHP Manual

Memcached::cas

(PECL memcached >= 0.1.0)

Memcached::cas — 比较并交换值

说明

public bool Memcached::cas ( float $cas_token , string $key , mixed $value [, int $expiration ] )

Memcached::cas()执行一个"检查并设置"的操作，因此，它仅在当前客户端最后一次取值后，该key 对应的值没有被其他客户端修改的情况下， 才能够将值写入。检查是通过cas_token参数进行的， 这个参数是Memcach指定给已经存在的元素的一个唯一的64位值， 怎样获取这个值请查看Memcached::get*() 系列方法的文档。注意：这个值作为double类型是因为PHP的整型空间限制。

译注：这是Memcached扩展比Memcache扩展一个非常重要的优势， 在这样一个系统级（Memcache自身提供）的冲突检测机制（乐观锁）下， 我们才能保证高并发下的数据安全。

参数

cas_token

与已存在元素关联的唯一的值，由Memcache生成。

key

用于存储值的键名。

value

存储的值。

expiration

到期时间，默认为 0。 更多信息请参见到期时间。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如果在元素尝试存储时发现在本客户端最后一次获取后被其他客户端修改，Memcached::getResultCode() 将返回Memcached::RES_DATA_EXISTS。

范例

Example #1 Memcached::cas() 示例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

do {
    /* 获取ip列表以及它的标记 */
    $ips = $m->get('ip_block', null, $cas);
    /* 如果列表不存在， 创建并进行一个原子添加（如果其他客户端已经添加， 这里就返回false）*/
    if ($m->getResultCode() == Memcached::RES_NOTFOUND) {
        $ips = array($_SERVER['REMOTE_ADDR']);
        $m->add('ip_block', $ips);
    /* 其他情况下，添加ip到列表中， 并以cas方式去存储， 这样当其他客户端修改过， 则返回false */
    } else {
        $ips[] = $_SERVER['REMOTE_ADDR'];
        $m->cas($cas, 'ip_block', $ips);
    }
} while ($m->getResultCode() != Memcached::RES_SUCCESS);

?>

参见

  • Memcached::casByKey() - 在指定服务器上比较并交换值

Memcached::appendByKey
Memcached::casByKey
Memcached


在指定服务器上比较并交换值

Memcached::cas
Memcached::__construct
Memcached
PHP Manual

Memcached::casByKey

(PECL memcached >= 0.1.0)

Memcached::casByKey — 在指定服务器上比较并交换值

说明

public bool Memcached::casByKey ( float $cas_token , string $server_key , string $key , mixed $value [, int $expiration ] )

除了可以使用server_key将key自由的映射到指定服务器外， Memcached::casByKey()和Memcached::cas()在功能上是等同的。 这通常用于你需要保持一批相关的key在一个中心服务器上的情况。(译注: 关于*ByKey系列方法及$server_key的工作原理请参照addByKey方法文档)

参数

cas_token

与已存在元素关联的唯一的值，由Memcache生成。

server_key

本键名用于识别储存和读取值的服务器。没有将实际的键名散列到具体的项目，而是在决定与哪一个 memcached 服务器通信时将其散列为服务器键名。这使得关联的项目在单一的服务上被组合起来以提高多重操作的效率。

key

用于存储值的键名。

value

存储的值。

expiration

到期时间，默认为 0。 更多信息请参见到期时间。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如果在元素尝试存储时发现在本客户端最后一次获取后被其他客户端修改，Memcached::getResultCode() 将返回Memcached::RES_DATA_EXISTS。

参见

  • Memcached::cas() - 比较并交换值

Memcached::cas
Memcached::__construct
Memcached


创建一个Memcached实例

Memcached::casByKey
Memcached::decrement
Memcached
PHP Manual

Memcached::__construct

(PECL memcached >= 0.1.0)

Memcached::__construct — 创建一个Memcached实例

说明

Memcached::__construct ([ string $persistent_id ] )

创建一个代表到Memcached服务端连接的Memcached实例。

参数

persistent_id

默认情况下，Memcached实例在请求结束后会被销毁。但可以在创建时通过persistent_id为每个实例指定唯一的ID， 在请求间共享实例。所有通过相同的persistent_id值创建的实例共享同一个连接。

返回值

一个Memcached对象。

范例

Example #1 创建一个Memcached对象

<?php
/* 创建一个普通的对象 */
$m1 = new Memcached();
echo get_class($m);

/* 创建持久化对象 */
$m2 = new Memcached('story_pool');
$m3 = new Memcached('story_pool');

/* 现在$m2和$m3共享相同的连接 */
?>

Memcached::casByKey
Memcached::decrement
Memcached


减小数值元素的值

Memcached::__construct
Memcached::decrementByKey
Memcached
PHP Manual

Memcached::decrement

(PECL memcached >= 0.1.0)

Memcached::decrement — 减小数值元素的值

说明

public int Memcached::decrement ( string $key [, int $offset = 1 ] )

Memcached::decrement()减小一个数值元素的值，减小多少由参数offset决定。 如果元素的值不是数值，以0值对待。如果减小后的值小于0,则新的值被设置为0.如果元素不存在，Memcached::decrement() 失败。

参数

key

将要减小值的元素的key。

offset

要将减小指定元素的值减小多少。

返回值

成功时返回元素新的值， 或者在失败时返回 FALSE。 如果key不存在，Memcached::getResultCode()返回Memcached::RES_NOTFOUND。

范例

Example #1 Memcached::decrement() 示例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

$m->set('counter', 5);
$m->decrement('counter');
var_dump($m->get('counter'));

$m->decrement('counter', 10);
var_dump($m->get('counter'));
?>

以上例程会输出：

int(4)
int(0)

参见

  • Memcached::increment() - 增加数值元素的值

Memcached::__construct
Memcached::decrementByKey
Memcached


Decrement numeric item's value, stored on a specific server

Memcached::decrement
Memcached::delete
Memcached
PHP Manual

Memcached::decrementByKey

(PECL memcached >= 2.0.0)

Memcached::decrementByKey — Decrement numeric item's value, stored on a specific server

说明

public int Memcached::decrementByKey ( string $server_key , string $key [, int $offset = 1 [, int $initial_value = 0 [, int $expiry = 0 ]]] )

Memcached::decrementByKey() decrements a numeric item's value by the specified offset. If the item's value is not numeric, an error will result. If the operation would decrease the value below 0, the new value will be 0. Memcached::decrementByKey() will set the item to the initial_value parameter if the key doesn't exist.

参数

server_key

本键名用于识别储存和读取值的服务器。没有将实际的键名散列到具体的项目，而是在决定与哪一个 memcached 服务器通信时将其散列为服务器键名。这使得关联的项目在单一的服务上被组合起来以提高多重操作的效率。

key

The key of the item to decrement.

offset

The amount by which to decrement the item's value.

initial_value

The value to set the item to if it doesn't currently exist.

expiry

The expiry time to set on the item.

返回值

Returns item's new value on success 或者在失败时返回 FALSE.

参见

  • Memcached::decrement() - 减小数值元素的值
  • Memcached::increment() - 增加数值元素的值
  • Memcached::incrementByKey() - Increment numeric item's value, stored on a specific server

Memcached::decrement
Memcached::delete
Memcached


删除一个元素

Memcached::decrementByKey
Memcached::deleteByKey
Memcached
PHP Manual

Memcached::delete

(PECL memcached >= 0.1.0)

Memcached::delete — 删除一个元素

说明

public bool Memcached::delete ( string $key [, int $time = 0 ] )

Memcached::delete()从服务端删除key对应的元素. 参数time是一个秒为单位的时间(或一个UNIX时间戳表明直到那个时间), 用来表明 客户端希望服务端在这段时间拒绝对这个key的add和replace命令. 由于这个时间段的存在, 元素被放入一个删除队列, 表明它不可以通过get命令获取到值, 但是同时 add和replace命令也会失败(无论如何set命令都会成功). 在这段时间过去后, 元素最终被从服务端内存删除.time参数默认0(表明元素会被立即删除并且之后对这个 key的存储命令也会成功).

参数

key

要删除的key

time

服务端等待删除该元素的总时间(或一个Unix时间戳表明的实际删除时间).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如果key不存在, Memcached::getResultCode()将会返回Memcached::RES_NOTFOUND.

范例

Example #1 Memcached::delete() 示例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

$m->delete('key1');
?>

参见

  • Memcached::deleteByKey() - 从指定的服务器删除一个元素

Memcached::decrementByKey
Memcached::deleteByKey
Memcached


从指定的服务器删除一个元素

Memcached::delete
Memcached::deleteMulti
Memcached
PHP Manual

Memcached::deleteByKey

(PECL memcached >= 0.1.0)

Memcached::deleteByKey — 从指定的服务器删除一个元素

说明

public bool Memcached::deleteByKey ( string $server_key , string $key [, int $time = 0 ] )

Memcached::deleteByKey()除了可以通过server_key参数自由的指定key 所映射的服务器外， 在功能上等同于Memcached::delete()。(译注: 关于*ByKey系列方法及$server_key的工作原理请参照addByKey方法文档)

参数

server_key

本键名用于识别储存和读取值的服务器。没有将实际的键名散列到具体的项目，而是在决定与哪一个 memcached 服务器通信时将其散列为服务器键名。这使得关联的项目在单一的服务上被组合起来以提高多重操作的效率。

key

要删除的key。

time

服务端等待删除该元素的总时间(或一个Unix时间戳表明的实际删除时间).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如果key不存在，Memcached::getResultCode()返回Memcached::RES_NOTFOUND。

参见

  • Memcached::delete() - 删除一个元素

Memcached::delete
Memcached::deleteMulti
Memcached


Delete multiple items

Memcached::deleteByKey
Memcached::deleteMultiByKey
Memcached
PHP Manual

Memcached::deleteMulti

(PECL memcached >= 2.0.0)

Memcached::deleteMulti — Delete multiple items

说明

public array Memcached::deleteMulti ( array $keys [, int $time = 0 ] )

Memcached::deleteMulti() deletes the array of keys from the server. The time parameter is the amount of time in seconds (or Unix time until which) the client wishes the server to refuse add and replace commands for these keys. For this amount of time, the item is put into a delete queue, which means that it won't be possible to retrieve it by the get command, but add and replace command with these keys will also fail (the set command will succeed, however). After the time passes, the item is finally deleted from server memory. The parameter time defaults to 0 (which means that the item will be deleted immediately and further storage commands with these keys will succeed).

参数

keys

The keys to be deleted.

time

The amount of time the server will wait to delete the items.

返回值

Returns array indexed by keys and where values are indicating whether operation succeeded or not. The Memcached::getResultCode() will return Memcached::RES_NOTFOUND if the key does not exist.

参见

  • Memcached::delete() - 删除一个元素
  • Memcached::deleteByKey() - 从指定的服务器删除一个元素
  • Memcached::deleteMultiByKey() - Delete multiple items from a specific server

Memcached::deleteByKey
Memcached::deleteMultiByKey
Memcached


Delete multiple items from a specific server

Memcached::deleteMulti
Memcached::fetch
Memcached
PHP Manual

Memcached::deleteMultiByKey

(PECL memcached >= 2.0.0)

Memcached::deleteMultiByKey — Delete multiple items from a specific server

说明

public bool Memcached::deleteMultiByKey ( string $server_key , array $keys [, int $time = 0 ] )

Memcached::deleteMultiByKey() is functionally equivalent to Memcached::deleteMulti(), except that the free-form server_key can be used to map the keys to a specific server.

参数

server_key

本键名用于识别储存和读取值的服务器。没有将实际的键名散列到具体的项目，而是在决定与哪一个 memcached 服务器通信时将其散列为服务器键名。这使得关联的项目在单一的服务上被组合起来以提高多重操作的效率。

keys

The keys to be deleted.

time

The amount of time the server will wait to delete the items.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 The Memcached::getResultCode() will return Memcached::RES_NOTFOUND if the key does not exist.

参见

  • Memcached::delete() - 删除一个元素
  • Memcached::deleteByKey() - 从指定的服务器删除一个元素
  • Memcached::deleteMulti() - Delete multiple items

Memcached::deleteMulti
Memcached::fetch
Memcached


抓取下一个结果

Memcached::deleteMultiByKey
Memcached::fetchAll
Memcached
PHP Manual

Memcached::fetch

(PECL memcached >= 0.1.0)

Memcached::fetch — 抓取下一个结果

说明

public array Memcached::fetch ( void )

Memcached::fetch()从最后一次请求中抓取下一个结果。

参数

此函数没有参数。

返回值

返回下一个结果或其他情况下返回FALSE。 如果结果集已经抓取完毕，Memcached::getResultCode()将返回Memcached::RES_END。

范例

Example #1 Memcached::fetch() 示例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

$m->set('int', 99);
$m->set('string', 'a simple string');
$m->set('array', array(11, 12));

//延迟的获取int和array这两个key的值
$m->getDelayed(array('int', 'array'), true);
//循环抓取上面的延迟抓取得到的结果
while ($result = $m->fetch()) {
    var_dump($result);
}
?>

以上例程的输出类似于：

array(3) {
  ["key"]=>
  string(3) "int"
  "value"]=>
  int(99)
  ["cas"]=>
  float(2363)
}
array(3) {
  ["key"]=>
  string(5) "array"
  ["value"]=>
  array(2) {
    [0]=>
    int(11)
    [1]=>
    int(12)
  }
  ["cas"]=>
  float(2365)
}

参见

  • Memcached::fetchAll() - 抓取所有剩余的结果
  • Memcached::getDelayed() - 请求多个元素

Memcached::deleteMultiByKey
Memcached::fetchAll
Memcached


抓取所有剩余的结果

Memcached::fetch
Memcached::flush
Memcached
PHP Manual

Memcached::fetchAll

(PECL memcached >= 0.1.0)

Memcached::fetchAll — 抓取所有剩余的结果

说明

public array Memcached::fetchAll ( void )

Memcached::fetchAll()抓取最后一次请求的结果集中剩余的所有结果。需要注意的是fetchAll和fetch的返回不同， 因为fetchAll抓取的是结果集中剩余所有元素， 所以比fetch的结果多一个维度。

参数

此函数没有参数。

返回值

返回结果集 或者在失败时返回 FALSE. 如需要则使用 Memcached::getResultCode()。

范例

Example #1 Memcached::getDelayed() 示例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

$m->set('int', 99);
$m->set('string', 'a simple string');
$m->set('array', array(11, 12));

//延迟抓取int和array两个key的值
$m->getDelayed(array('int', 'array'), true);
//抓取上面delay抓取的所有结果
var_dump($m->fetchAll());
?>

以上例程会输出：

array(2) {
  [0]=>
  array(3) {
    ["key"]=>
    string(3) "int"
    ["value"]=>
    int(99)
    ["cas"]=>
    float(2363)
  }
  [1]=>
  array(3) {
    ["key"]=>
    string(5) "array"
    ["value"]=>
    array(2) {
      [0]=>
      int(11)
      [1]=>
      int(12)
    }
    ["cas"]=>
    float(2365)
  }
}

参见

  • Memcached::fetch() - 抓取下一个结果
  • Memcached::getDelayed() - 请求多个元素

Memcached::fetch
Memcached::flush
Memcached


作废缓存中的所有元素

Memcached::fetchAll
Memcached::get
Memcached
PHP Manual

Memcached::flush

(PECL memcached >= 0.1.0)

Memcached::flush — 作废缓存中的所有元素

说明

public bool Memcached::flush ([ int $delay = 0 ] )

Memcached::flush()立即（默认）或者在delay延迟后作废所有缓存中已经存在的元素。 在作废之后检索命令将不会有任何返回（除非在执行Memcached::flush()作废之后，该key下被重新存储过）。flush不会 真正的释放已有元素的内存， 而是逐渐的存入新元素重用那些内存。

参数

delay

在作废所有元素之前等待的时间（单位秒）。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如需要则使用 Memcached::getResultCode()。

范例

Example #1 Memcached::flush() 示例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

/* 10秒内清除所有元素 */
$m->flush(10);
?>

Memcached::fetchAll
Memcached::get
Memcached


检索一个元素

Memcached::flush
Memcached::getAllKeys
Memcached
PHP Manual

Memcached::get

(PECL memcached >= 0.1.0)

Memcached::get — 检索一个元素

说明

public mixed Memcached::get ( string $key [, callback $cache_cb [, float &$cas_token ]] )

Memcached::get()返回之前存储在key下的元素。如果元素被找到，并且提供 了cas_token参数， 这个参数（译注：这个参数在函数定义中是引用参数，用来传出元素的版本标记，原理 可以查阅乐观锁资料）将会包含该元素的CAS标记值。关于CAS标记值的使用，请查看Memcached::cas()的说明。 另外，可以通过cache_cb参数设置Read-through caching callback。

参数

key

要检索的元素的key。

cache_cb

通读缓存回掉函数或NULL.

cas_token

检索的元素的CAS标记值。

返回值

返回存储在服务端的元素的值或者在其他情况下返回FALSE。 如果key不存在，Memcached::getResultCode()返回Memcached::RES_NOTFOUND。

范例

Example #1 Memcached::get() 示例 #1

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

$m->set('foo', 100);
var_dump($m->get('foo'));
?>

以上例程会输出：

int(100)

Example #2 Memcached::get() 示例 #2

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

if (!($ip = $m->get('ip_block'))) {
    if ($m->getResultCode() == Memcached::RES_NOTFOUND) {
        $ip = array();
        $m->set('ip_block', $ip);
    } else {
        /* log error */
        /* ...       */
    }
}
?>

参见

  • Memcached::getByKey() - 从特定的服务器检索元素
  • Memcached::getMulti() - 检索多个元素
  • Memcached::getDelayed() - 请求多个元素

Memcached::flush
Memcached::getAllKeys
Memcached


Gets the keys stored on all the servers

Memcached::get
Memcached::getByKey
Memcached
PHP Manual

Memcached::getAllKeys

(PECL memcached >= 2.0.0)

Memcached::getAllKeys — Gets the keys stored on all the servers

说明

public array Memcached::getAllKeys ( void )

Memcached::getAllKeys() queries each memcache server and retrieves an array of all keys stored on them at that point in time. This is not an atomic operation, so it isn't a truly consistent snapshot of the keys at point in time. As memcache doesn't guarantee to return all keys you also cannot assume that all keys have been returned.

参数

此函数没有参数。

返回值

Returns the keys stored on all the servers on success 或者在失败时返回 FALSE.

Memcached::get
Memcached::getByKey
Memcached


从特定的服务器检索元素

Memcached::getAllKeys
Memcached::getDelayed
Memcached
PHP Manual

Memcached::getByKey

(PECL memcached >= 0.1.0)

Memcached::getByKey — 从特定的服务器检索元素

说明

public mixed Memcached::getByKey ( string $server_key , string $key [, callback $cache_cb [, float &$cas_token ]] )

Memcached::getByKey()除了可以通过server_key参数自由的指定key 所映射的服务器外， 在功能上等同于Memcached::get()。(译注: 关于*ByKey系列方法及$server_key的工作原理请参照addByKey方法文档)

参数

server_key

本键名用于识别储存和读取值的服务器。没有将实际的键名散列到具体的项目，而是在决定与哪一个 memcached 服务器通信时将其散列为服务器键名。这使得关联的项目在单一的服务上被组合起来以提高多重操作的效率。

key

要抓取的元素的key。

cache_cb

通读缓存回掉函数或NULL.

cas_token

检索的元素的CAS标记值。

返回值

返回存储在服务端的元素的值或者在其他情况下返回FALSE。 如果key不存在，Memcached::getResultCode()返回Memcached::RES_NOTFOUND。

参见

  • Memcached::get() - 检索一个元素
  • Memcached::getMulti() - 检索多个元素
  • Memcached::getDelayed() - 请求多个元素

Memcached::getAllKeys
Memcached::getDelayed
Memcached


请求多个元素

Memcached::getByKey
Memcached::getDelayedByKey
Memcached
PHP Manual

Memcached::getDelayed

(PECL memcached >= 0.1.0)

Memcached::getDelayed — 请求多个元素

说明

public bool Memcached::getDelayed ( array $keys [, bool $with_cas [, callback $value_cb ]] )

Memcached::getDelayed()向Memcached服务端发出一个检索keys指定的多个
key对应元素的请求。这个方法不会等待响应而是立即返回。当你需要收集元素值时， 调用Memcached::fetch()或
Memcached::fetchAll()。如果with_cas设置为true，会同时请求每个元素的CAS标记。

可以通过参数value_cb指定一个result callback来替代明确的抓取结果（fetch或fetchAll为明确抓取方式）。

参数

keys

要请求的key的数组。

with_cas

是否同时请求CAS标记。

value_cb

结果回掉函数或NULL。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如需要则使用 Memcached::getResultCode()。

范例

Example #1 Memcached::getDelayed() 示例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

$m->set('int', 99);
$m->set('string', 'a simple string');
$m->set('array', array(11, 12));

$m->getDelayed(array('int', 'array'), true);
var_dump($m->fetchAll());
?>

以上例程会输出：

array(2) {
  [0]=>
  array(3) {
    ["key"]=>
    string(3) "int"
    ["value"]=>
    int(99)
    ["cas"]=>
    float(2363)
  }
  [1]=>
  array(3) {
    ["key"]=>
    string(5) "array"
    ["value"]=>
    array(2) {
      [0]=>
      int(11)
      [1]=>
      int(12)
    }
    ["cas"]=>
    float(2365)
  }
}

参见

  • Memcached::getDelayedByKey() - 从指定的服务器上请求多个元素
  • Memcached::fetch() - 抓取下一个结果
  • Memcached::fetchAll() - 抓取所有剩余的结果

Memcached::getByKey
Memcached::getDelayedByKey
Memcached


从指定的服务器上请求多个元素

Memcached::getDelayed
Memcached::getMulti
Memcached
PHP Manual

Memcached::getDelayedByKey

(PECL memcached >= 0.1.0)

Memcached::getDelayedByKey — 从指定的服务器上请求多个元素

说明

public bool Memcached::getDelayedByKey ( string $server_key , array $keys [, bool $with_cas [, callback $value_cb ]] )

Memcached::getDelayedByKey()除了可以通过server_key参数自由的指定key 所映射的服务器外， 在功能上等同于Memcached::getDelayed()。(译注: 关于*ByKey系列方法及$server_key的工作原理请参照addByKey方法文档)

参数

server_key

本键名用于识别储存和读取值的服务器。没有将实际的键名散列到具体的项目，而是在决定与哪一个 memcached 服务器通信时将其散列为服务器键名。这使得关联的项目在单一的服务上被组合起来以提高多重操作的效率。

keys

要请求的key的数组。

with_cas

是否同时请求CAS标记。

value_cb

结果回掉函数或NULL。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如需要则使用 Memcached::getResultCode()。

参见

  • Memcached::getDelayed() - 请求多个元素
  • Memcached::fetch() - 抓取下一个结果
  • Memcached::fetchAll() - 抓取所有剩余的结果

Memcached::getDelayed
Memcached::getMulti
Memcached


检索多个元素

Memcached::getDelayedByKey
Memcached::getMultiByKey
Memcached
PHP Manual

Memcached::getMulti

(PECL memcached >= 0.1.0)

Memcached::getMulti — 检索多个元素

说明

public mixed Memcached::getMulti ( array $keys [, array &$cas_tokens [, int $flags ]] )

Memcached::getMulti()与Memcached::get()类似，但是这个方法用来检索 keys数组指定的多个key对应的元素。如果提供了参数cas_tokens，对于检索到的元素会为其添加CAS标记值。

Note:

与Memcached::get()不同的是，不能为Memcached::getMulti()指定通读回调函数，因为memcache协议 不能提供多个key检索时没有查找到的key的信息。

flags参数可以用做指定Memcached::getMulti()的附加选项。 当前，仅可以指定为Memcached::GET_PRESERVE_ORDER以保证返回的key的顺序和请求时一致。

参数

keys

要检索的key的数组。

cas_tokens

用来存储检索到的元素的CAS标记。

flags

get操作的附加选项。

返回值

返回检索到的元素的数组 或者在失败时返回 FALSE. 如需要则使用 Memcached::getResultCode()。

范例

Example #1 Memcached::getMulti() 示例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

$items = array(
    'key1' => 'value1',
    'key2' => 'value2',
    'key3' => 'value3'
);
$m->setMulti($items);
$result = $m->getMulti(array('key1', 'key3', 'badkey'), $cas);
var_dump($result, $cas);
?>

以上例程的输出类似于：

array(2) {
  ["key1"]=>
  string(6) "value1"
  ["key3"]=>
  string(6) "value3"
}
array(2) {
  ["key1"]=>
  float(2360)
  ["key3"]=>
  float(2362)
}

Example #2 Memcached::GET_PRESERVE_ORDER 示例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

$data = array(
    'foo' => 'foo-data',
    'bar' => 'bar-data',
    'baz' => 'baz-data',
    'lol' => 'lol-data',
    'kek' => 'kek-data',
);

$m->setMulti($data, 3600);

$null = null;
$keys = array_keys($data);
$keys[] = 'zoo';
$got = $m->getMulti($keys, $null, Memcached::GET_PRESERVE_ORDER);

foreach ($got as $k => $v) {
    echo "$k $v\n";
}
?>

以上例程的输出类似于：

foo foo-data
bar bar-data
baz baz-data
lol lol-data
kek kek-data
zoo

参见

  • Memcached::getMultiByKey() - 从特定服务器检索多个元素
  • Memcached::get() - 检索一个元素
  • Memcached::getDelayed() - 请求多个元素

Memcached::getDelayedByKey
Memcached::getMultiByKey
Memcached


从特定服务器检索多个元素

Memcached::getMulti
Memcached::getOption
Memcached
PHP Manual

Memcached::getMultiByKey

(PECL memcached >= 0.1.0)

Memcached::getMultiByKey — 从特定服务器检索多个元素

说明

public array Memcached::getMultiByKey ( string $server_key , array $keys [, string &$cas_tokens [, int $flags ]] )

Memcached::getMultiByKey()除了可以通过server_key参数自由的指定key 所映射的服务器外， 在功能上等同于Memcached::getMulti()。(译注: 关于*ByKey系列方法及$server_key的工作原理请参照addByKey方法文档)

参数

server_key

本键名用于识别储存和读取值的服务器。没有将实际的键名散列到具体的项目，而是在决定与哪一个 memcached 服务器通信时将其散列为服务器键名。这使得关联的项目在单一的服务上被组合起来以提高多重操作的效率。

keys

要检索的key的数组。

cas_tokens

用来存储检索到的元素的CAS标记。

flags

get操作的附加选项。

返回值

返回检索到的元素的数组 或者在失败时返回 FALSE. 如需要则使用 Memcached::getResultCode()。

参见

  • Memcached::getMulti() - 检索多个元素
  • Memcached::get() - 检索一个元素
  • Memcached::getDelayed() - 请求多个元素

Memcached::getMulti
Memcached::getOption
Memcached


获取Memcached的选项值

Memcached::getMultiByKey
Memcached::getResultCode
Memcached
PHP Manual

Memcached::getOption

(PECL memcached >= 0.1.0)

Memcached::getOption — 获取Memcached的选项值

说明

public mixed Memcached::getOption ( int $option )

这个方法返回option指定的Memcached选项的值。一些选项是和libmemcached中相对应的， 也有一些特殊的选项仅仅是扩展自身的。关于选项的更多信息请查看Memcached Constants。

参数

option

Memcached::OPT_*系列常量中的一个。

返回值

返回请求的选项的值，或者在发生错误时返回FALSE。

范例

Example #1 获取Memcached选项

<?php
$m = new Memcached();
var_dump($m->getOption(Memcached::OPT_COMPRESSION));
var_dump($m->getOption(Memcached::OPT_POLL_TIMEOUT));
?>

以上例程的输出类似于：

bool(true)
int(1000)

参见

  • Memcached::setOption() - 设置一个memcached选项
  • Memcached Constants

Memcached::getMultiByKey
Memcached::getResultCode
Memcached


返回最后一次操作的结果代码

Memcached::getOption
Memcached::getResultMessage
Memcached
PHP Manual

Memcached::getResultCode

(PECL memcached >= 0.1.0)

Memcached::getResultCode — 返回最后一次操作的结果代码

说明

public int Memcached::getResultCode ( void )

Memcached::getResultCode()返回Memcached::RES_*系列常量中的一个来表明最后一次执行Memcached方法的结果。

参数

此函数没有参数。

返回值

最后一次Memcached操作的结果代码。

范例

Example #1 Memcached::getResultCode() 示例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

$m->add('foo', 'bar');
if ($m->getResultCode() == Memcached::RES_NOTSTORED) {
    /* ... */
}
?>

Memcached::getOption
Memcached::getResultMessage
Memcached


返回最后一次操作的结果描述消息

Memcached::getResultCode
Memcached::getServerByKey
Memcached
PHP Manual

Memcached::getResultMessage

(PECL memcached >= 1.0.0)

Memcached::getResultMessage — 返回最后一次操作的结果描述消息

说明

public string Memcached::getResultMessage ( void )

Memcached::getResultMessage()返回一个字符串来描述最后一次Memcached方法执行的结果。

参数

此函数没有参数。

返回值

最后一次Memcached操作结果的描述消息。

范例

Example #1 Memcached::getResultMessage() 示例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

$m->add('foo', 'bar'); // first time should succeed
$m->add('foo', 'bar');
echo $m->getResultMessage(),"\n";
?>

以上例程会输出：

NOT STORED

Memcached::getResultCode
Memcached::getServerByKey
Memcached


获取一个key所映射的服务器信息

Memcached::getResultMessage
Memcached::getServerList
Memcached
PHP Manual

Memcached::getServerByKey

(PECL memcached >= 0.1.0)

Memcached::getServerByKey — 获取一个key所映射的服务器信息

说明

public array Memcached::getServerByKey ( string $server_key )

Memcached::getServerByKey()返回server_key所映射的服务器,
Memcached::*ByKey()系列方法的中的server_key参数, 实际上就是用来获取
操作的服务器的.(译注: 可以这样理解, *ByKey系列函数首先调用Memcached::getServerByKey()获取服务器,
然后在此服务器上进行操作.)

参数

server_key

本键名用于识别储存和读取值的服务器。没有将实际的键名散列到具体的项目，而是在决定与哪一个 memcached 服务器通信时将其散列为服务器键名。这使得关联的项目在单一的服务上被组合起来以提高多重操作的效率。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如需要则使用 Memcached::getResultCode()。

范例

Example #1 Memcached::getServerByKey() 示例

<?php
$m = new Memcached();
$m->addServers(array(
    array('mem1.domain.com', 11211, 40),
    array('mem2.domain.com', 11211, 40),
    array('mem3.domain.com', 11211, 20),
));

$m->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true);

var_dump($m->getServerByKey('user'));
var_dump($m->getServerByKey('log'));
var_dump($m->getServerByKey('ip'));
?>

以上例程的输出类似于：

array(3) {
  ["host"]=>
  string(15) "mem3.domain.com"
  ["port"]=>
  int(11211)
  ["weight"]=>
  int(20)
}
array(3) {
  ["host"]=>
  string(15) "mem2.domain.com"
  ["port"]=>
  int(11211)
  ["weight"]=>
  int(40)
}
array(3) {
  ["host"]=>
  string(15) "mem2.domain.com"
  ["port"]=>
  int(11211)
  ["weight"]=>
  int(40)
}

Memcached::getResultMessage
Memcached::getServerList
Memcached


获取服务器池中的服务器列表

Memcached::getServerByKey
Memcached::getStats
Memcached
PHP Manual

Memcached::getServerList

(PECL memcached >= 0.1.0)

Memcached::getServerList — 获取服务器池中的服务器列表

说明

public array Memcached::getServerList ( void )

Memcached::getServerList()返回服务器池中所有服务器列表.

参数

此函数没有参数。

返回值

服务器池中所有服务器列表.

范例

Example #1 Memcached::getServerList() 示例

<?php
$m = new Memcached();
$m->addServers(array(
    array('mem1.domain.com', 11211, 20),
    array('mem2.domain.com', 11311, 80),
));
var_dump($m->getServerList());
?>

以上例程会输出：

array(2) {
  [0]=>
  array(3) {
    ["host"]=>
    string(15) "mem1.domain.com"
    ["port"]=>
    int(11211)
    ["weight"]=>
    int(20)
  }
  [1]=>
  array(3) {
    ["host"]=>
    string(15) "mem2.domain.com"
    ["port"]=>
    int(11311)
    ["weight"]=>
    int(80)
  }
}

Memcached::getServerByKey
Memcached::getStats
Memcached


获取服务器池的统计信息

Memcached::getServerList
Memcached::getVersion
Memcached
PHP Manual

Memcached::getStats

(PECL memcached >= 0.1.0)

Memcached::getStats — 获取服务器池的统计信息

说明

public array Memcached::getStats ( void )

Memcached::getStats()返回一个包含所有可用memcache服务器状态的数组. 返回的统计信息的详细描述参见» memcache protocol。 （译注：经实验，服务器池中有不可用服务器时，返回false）

参数

此函数没有参数。

返回值

服务器统计信息数组， 每个服务器一项。

范例

Example #1 Memcached::getStats() 示例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

print_r($m->getStats());
?>

以上例程的输出类似于：

Array
(
    [localhost:11211] => Array
        (
            [pid] => 4933
            [uptime] => 786123
            [threads] => 1
            [time] => 1233868010
            [pointer_size] => 32
            [rusage_user_seconds] => 0
            [rusage_user_microseconds] => 140000
            [rusage_system_seconds] => 23
            [rusage_system_microseconds] => 210000
            [curr_items] => 145
            [total_items] => 2374
            [limit_maxbytes] => 67108864
            [curr_connections] => 2
            [total_connections] => 151
            [connection_structures] => 3
            [bytes] => 20345
            [cmd_get] => 213343
            [cmd_set] => 2381
            [get_hits] => 204223
            [get_misses] => 9120
            [evictions] => 0
            [bytes_read] => 9092476
            [bytes_written] => 15420512
            [version] => 1.2.6
        )

)

Memcached::getServerList
Memcached::getVersion
Memcached


获取服务器池中所有服务器的版本信息

Memcached::getStats
Memcached::increment
Memcached
PHP Manual

Memcached::getVersion

(PECL memcached >= 0.1.5)

Memcached::getVersion — 获取服务器池中所有服务器的版本信息

说明

public array Memcached::getVersion ( void )

Memcached::getVersion()返回一个包含所有可用memcached服务器版本信息的数组。 （译注：经实验，服务器池中有不可用服务器时，返回false）

参数

此函数没有参数。

返回值

服务器版本信息的数组，每个服务器占一项。

范例

Example #1 Memcached::getVersion() 示例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

print_r($m->getVersion());
?>

以上例程的输出类似于：

Array
(
    [localhost:11211] => 1.2.6
)

Memcached::getStats
Memcached::increment
Memcached


增加数值元素的值

Memcached::getVersion
Memcached::incrementByKey
Memcached
PHP Manual

Memcached::increment

(PECL memcached >= 0.1.0)

Memcached::increment — 增加数值元素的值

说明

public int Memcached::increment ( string $key [, int $offset = 1 ] )

Memcached::increment()将一个数值元素增加参数offset指定的大小。 如果元素的值不是数值类型，将其作为0处理。如果元素不存在Memcached::increment()失败。

参数

key

要增加值的元素的key。

offset

要将元素的值增加的大小。

返回值

成功时返回元素的新值 或者在失败时返回 FALSE。 如果key不存在Memcached::getResultCode()方法返回Memcached::RES_NOTFOUND。

范例

Example #1 Memcached::increment() 示例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

$m->set('counter', 0);
$m->increment('counter');
$m->increment('counter', 10);
var_dump($m->get('counter'));

$m->set('key', 'abc');
$m->increment('counter');
?>

以上例程会输出：

int(11)
string(1) "1"

参见

  • Memcached::decrement() - 减小数值元素的值

Memcached::getVersion
Memcached::incrementByKey
Memcached


Increment numeric item's value, stored on a specific server

Memcached::increment
Memcached::isPersistent
Memcached
PHP Manual

Memcached::incrementByKey

(PECL memcached >= 2.0.0)

Memcached::incrementByKey — Increment numeric item's value, stored on a specific server

说明

public int Memcached::incrementByKey ( string $server_key , string $key [, int $offset = 1 [, int $initial_value = 0 [, int $expiry = 0 ]]] )

Memcached::incrementByKey() increments a numeric item's value by the specified offset. If the item's value is not numeric, an error will result. Memcached::incrementByKey() will set the item to the initial_value parameter if the key doesn't exist.

参数

server_key

本键名用于识别储存和读取值的服务器。没有将实际的键名散列到具体的项目，而是在决定与哪一个 memcached 服务器通信时将其散列为服务器键名。这使得关联的项目在单一的服务上被组合起来以提高多重操作的效率。

key

The key of the item to increment.

offset

The amount by which to increment the item's value.

initial_value

The value to set the item to if it doesn't currently exist.

expiry

The expiry time to set on the item.

返回值

Returns new item's value on success 或者在失败时返回 FALSE.

参见

  • Memcached::decrement() - 减小数值元素的值
  • Memcached::decrementByKey() - Decrement numeric item's value, stored on a specific server
  • Memcached::increment() - 增加数值元素的值

Memcached::increment
Memcached::isPersistent
Memcached


Check if a persitent connection to memcache is being used

Memcached::incrementByKey
Memcached::isPristine
Memcached
PHP Manual

Memcached::isPersistent

(PECL memcached >= 2.0.0)

Memcached::isPersistent — Check if a persitent connection to memcache is being used

说明

public bool Memcached::isPersistent ( void )

Memcached::isPersistent() checks if the connections to the memcache servers are persistent connections.

参数

此函数没有参数。

返回值

Returns true if Memcache instance uses a persistent connection, false otherwise.

参见

  • Memcached::isPristine() - Check if the instance was recently created

Memcached::incrementByKey
Memcached::isPristine
Memcached


Check if the instance was recently created

Memcached::isPersistent
Memcached::prepend
Memcached
PHP Manual

Memcached::isPristine

(PECL memcached >= 2.0.0)

Memcached::isPristine — Check if the instance was recently created

说明

public bool Memcached::isPristine ( void )

Memcached::isPristine() checks if the Memcache instance was recently created.

参数

此函数没有参数。

返回值

Returns the true if instance is recently created, false otherwise.

参见

  • Memcached::isPersistent() - Check if a persitent connection to memcache is being used

Memcached::isPersistent
Memcached::prepend
Memcached


向一个已存在的元素前面追加数据

Memcached::isPristine
Memcached::prependByKey
Memcached
PHP Manual

Memcached::prepend

(PECL memcached >= 0.1.0)

Memcached::prepend — 向一个已存在的元素前面追加数据

说明

public bool Memcached::prepend ( string $key , string $value )

Memcached::prepend()向已存在元素的字符串值前追加value。 value被强制转换成字符串类型主要是因为对于mix类型的追加没有很好的定义。

Note:

如果Memcached::OPT_COMPRESSION常量开启，这个操作会失败，并引发一个警告，因为向压缩数据 后追加数据可能会导致解压不了。

参数

key

要向前追加数据的元素的key。

value

要追加的字符串。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如果key不存在，Memcached::getResultCode()返回Memcached::RES_NOTSTORED。

范例

Example #1 Memcached::prepend() 示例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);
$m->setOption(Memcached::OPT_COMPRESSION, false);

$m->set('foo', 'abc');
$m->prepend('foo', 'def');
var_dump($m->get('foo'));
?>

以上例程会输出：

string(6) "defabc"

参见

  • Memcached::prependByKey() - Prepend data to an existing item on a specific server
  • Memcached::append() - 向已存在元素后追加数据

Memcached::isPristine
Memcached::prependByKey
Memcached


Prepend data to an existing item on a specific server

Memcached::prepend
Memcached::quit
Memcached
PHP Manual

Memcached::prependByKey

(PECL memcached >= 0.1.0)

Memcached::prependByKey — Prepend data to an existing item on a specific server

说明

public bool Memcached::prependByKey ( string $server_key , string $key , string $value )

除了可以使用server_key自由的将key映射到指定服务器外， Memcached::prependByKey()在功能上等同于Memcached::prepend()。 (译注: 关于*ByKey系列方法及$server_key的工作原理请参照addByKey方法文档)

参数

server_key

本键名用于识别储存和读取值的服务器。没有将实际的键名散列到具体的项目，而是在决定与哪一个 memcached 服务器通信时将其散列为服务器键名。这使得关联的项目在单一的服务上被组合起来以提高多重操作的效率。

key

要向前追加数据的元素的key。

value

要追加的字符串。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如果key不存在，Memcached::getResultCode()返回Memcached::RES_NOTSTORED。

参见

  • Memcached::prepend() - 向一个已存在的元素前面追加数据
  • Memcached::append() - 向已存在元素后追加数据

Memcached::prepend
Memcached::quit
Memcached


关闭所有打开的链接。

Memcached::prependByKey
Memcached::replace
Memcached
PHP Manual

Memcached::quit

(PECL memcached >= 2.0.0)

Memcached::quit — 关闭所有打开的链接。

说明

public bool Memcached::quit ( void )

Memcached::quit() 关闭所有memcache服务器的链接。

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

Memcached::prependByKey
Memcached::replace
Memcached


替换已存在key下的元素

Memcached::quit
Memcached::replaceByKey
Memcached
PHP Manual

Memcached::replace

(PECL memcached >= 0.1.0)

Memcached::replace — 替换已存在key下的元素

说明

public bool Memcached::replace ( string $key , mixed $value [, int $expiration ] )

Memcached::replace()和Memcached::set()类似，但是如果 服务端不存在key， 操作将失败。

参数

key

用于存储值的键名。

value

存储的值。

expiration

到期时间，默认为 0。 更多信息请参见到期时间。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如果key不存在，Memcached::getResultCode()返回Memcached::RES_NOTSTORED。

参见

  • Memcached::replaceByKey() - Replace the item under an existing key on a specific server
  • Memcached::set() - 存储一个元素
  • Memcached::add() - 向一个新的key下面增加一个元素

Memcached::quit
Memcached::replaceByKey
Memcached


Replace the item under an existing key on a specific server

Memcached::replace
Memcached::resetServerList
Memcached
PHP Manual

Memcached::replaceByKey

(PECL memcached >= 0.1.0)

Memcached::replaceByKey — Replace the item under an existing key on a specific server

说明

public bool Memcached::replaceByKey ( string $server_key , string $key , mixed $value [, int $expiration ] )

除了可以使用server_key自由的将key映射到指定服务器外， Memcached::replaceByKey()在功能上等同于Memcached::replace()。 (译注: 关于*ByKey系列方法及$server_key的工作原理请参照addByKey方法文档)。

参数

server_key

本键名用于识别储存和读取值的服务器。没有将实际的键名散列到具体的项目，而是在决定与哪一个 memcached 服务器通信时将其散列为服务器键名。这使得关联的项目在单一的服务上被组合起来以提高多重操作的效率。

key

用于存储值的键名。

value

存储的值。

expiration

到期时间，默认为 0。 更多信息请参见到期时间。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如果key不存在，Memcached::getResultCode()返回Memcached::RES_NOTSTORED。

参见

  • Memcached::replace() - 替换已存在key下的元素
  • Memcached::set() - 存储一个元素
  • Memcached::add() - 向一个新的key下面增加一个元素

Memcached::replace
Memcached::resetServerList
Memcached


Clears all servers from the server list

Memcached::replaceByKey
Memcached::set
Memcached
PHP Manual

Memcached::resetServerList

(PECL memcached >= 2.0.0)

Memcached::resetServerList — Clears all servers from the server list

说明

public bool Memcached::resetServerList ( void )

Memcached::resetserverlist() removes all memcache servers from the known server list, reseting it back to empty.

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • Memcached::addServer() - 向服务器池中增加一个服务器
  • Memcached::addServers() - 向服务器池中增加多台服务器

Memcached::replaceByKey
Memcached::set
Memcached


存储一个元素

Memcached::resetServerList
Memcached::setByKey
Memcached
PHP Manual

Memcached::set

(PECL memcached >= 0.1.0)

Memcached::set — 存储一个元素

说明

public bool Memcached::set ( string $key , mixed $value [, int $expiration ] )

Memcached::set()将value 存储在一个memcached服务器上的key下。expiration参数 用于控制值的过期时间。

值可以是任何有效的非资源型php类型， 因为资源类型不能被序列化存储。如果Memcached::OPT_COMPRESSION 选项开启， 序列化的值同样会被压缩存储。

参数

key

用于存储值的键名。

value

存储的值。

expiration

到期时间，默认为 0。 更多信息请参见到期时间。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如需要则使用 Memcached::getResultCode()。

范例

Example #1 Memcached::set() 示例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

$m->set('int', 99);
$m->set('string', 'a simple string');
$m->set('array', array(11, 12));
/* 'object'这个key将在5分钟后过期 */
$m->set('object', new stdclass, time() + 300);

var_dump($m->get('int'));
var_dump($m->get('string'));
var_dump($m->get('array'));
var_dump($m->get('object'));
?>

以上例程的输出类似于：

int(99)
string(15) "a simple string"
array(2) {
  [0]=>
  int(11)
  [1]=>
  int(12)
}
object(stdClass)#1 (0) {
}

参见

  • Memcached::setByKey() - Store an item on a specific server
  • Memcached::add() - 向一个新的key下面增加一个元素
  • Memcached::replace() - 替换已存在key下的元素

Memcached::resetServerList
Memcached::setByKey
Memcached


Store an item on a specific server

Memcached::set
Memcached::setMulti
Memcached
PHP Manual

Memcached::setByKey

(PECL memcached >= 0.1.0)

Memcached::setByKey — Store an item on a specific server

说明

public bool Memcached::setByKey ( string $server_key , string $key , mixed $value [, int $expiration ] )

除了可以使用server_key自由的将key映射到指定服务器外， Memcached::setByKey()在功能上等同于Memcached::set()。 (译注: 关于*ByKey系列方法及$server_key的工作原理请参照addByKey方法文档)。

参数

server_key

本键名用于识别储存和读取值的服务器。没有将实际的键名散列到具体的项目，而是在决定与哪一个 memcached 服务器通信时将其散列为服务器键名。这使得关联的项目在单一的服务上被组合起来以提高多重操作的效率。

key

用于存储值的键名。

value

存储的值。

expiration

到期时间，默认为 0。 更多信息请参见到期时间。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如需要则使用 Memcached::getResultCode()。

范例

Example #1 Memcached::setByKey() 示例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

/* 保证block-ip系列key的存储在同一台服务器上。*/
$m->setByKey('api-cache', 'block-ip:169.254.253.252', 1);
$m->setByKey('api-cache', 'block-ip:169.127.127.202', 1);
?>

参见

  • Memcached::set() - 存储一个元素

Memcached::set
Memcached::setMulti
Memcached


存储多个元素

Memcached::setByKey
Memcached::setMultiByKey
Memcached
PHP Manual

Memcached::setMulti

(PECL memcached >= 0.1.0)

Memcached::setMulti — 存储多个元素

说明

public bool Memcached::setMulti ( array $items [, int $expiration ] )

Memcached::setMulti()类似于Memcached::set()， 但是使用了 参数items指定多个元素来替代单独的key/value设置以便于对多个元素的操作。expiration 参数指定的时候一次应用到所有的元素上。

参数

items

存放在服务器上的键／值对数组。

expiration

到期时间，默认为 0。 更多信息请参见到期时间。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如需要则使用 Memcached::getResultCode()。

范例

Example #1 Memcached::setMulti() 示例

<?php
$m = new Memcached();
$m->addServer('localhost', 11211);

$items = array(
    'key1' => 'value1',
    'key2' => 'value2',
    'key3' => 'value3'
);
$m->setMulti($items, time() + 300);
?>

参见

  • Memcached::setMultiByKey() - Store multiple items on a specific server
  • Memcached::set() - 存储一个元素

Memcached::setByKey
Memcached::setMultiByKey
Memcached


Store multiple items on a specific server

Memcached::setMulti
Memcached::setOption
Memcached
PHP Manual

Memcached::setMultiByKey

(PECL memcached >= 0.1.0)

Memcached::setMultiByKey — Store multiple items on a specific server

说明

public bool Memcached::setMultiByKey ( string $server_key , array $items [, int $expiration ] )

除了可以使用server_key自由的将key映射到指定服务器外， Memcached::setMultiByKey()在功能上等同于Memcached::setMulti()。 (译注: 关于*ByKey系列方法及$server_key的工作原理请参照addByKey方法文档)。

参数

server_key

本键名用于识别储存和读取值的服务器。没有将实际的键名散列到具体的项目，而是在决定与哪一个 memcached 服务器通信时将其散列为服务器键名。这使得关联的项目在单一的服务上被组合起来以提高多重操作的效率。

items

存放在服务器上的键／值对数组。

expiration

到期时间，默认为 0。 更多信息请参见到期时间。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如需要则使用 Memcached::getResultCode()。

参见

  • Memcached::setMulti() - 存储多个元素
  • Memcached::set() - 存储一个元素

Memcached::setMulti
Memcached::setOption
Memcached


设置一个memcached选项

Memcached::setMultiByKey
Memcached::setOptions
Memcached
PHP Manual

Memcached::setOption

(PECL memcached >= 0.1.0)

Memcached::setOption — 设置一个memcached选项

说明

public bool Memcached::setOption ( int $option , mixed $value )

这个方法用来设置Memcached option的值。一些选项和libmemcached中定义的类似， 还有一些则是 扩展所特有的。关于选项的更多信息请参阅Memcached Constants。

下面的选项列表需要通过特定的常量指定值。

  • Memcached::OPT_HASH需要Memcached::HASH_*系列常量值。

  • Memcached::OPT_DISTRIBUTION需要Memcached::DISTRIBUTION_*系列常量值。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 设置一个memcached选项值

<?php
$m = new Memcached();
var_dump($m->getOption(Memcached::OPT_HASH) == Memcached::HASH_DEFAULT);
$m->setOption(Memcached::OPT_HASH, Memcached::HASH_MURMUR);
$m->setOption(Memcached::OPT_PREFIX_KEY, "widgets");
echo "Prefix key is now: ", $m->getOption(Memcached::OPT_PREFIX_KEY), "\n";
?>

以上例程会输出：

bool(true)
Prefix key is now: widgets

参见

  • Memcached::getOption() - 获取Memcached的选项值

Memcached::setMultiByKey
Memcached::setOptions
Memcached


Set Memcached options

Memcached::setOption
Memcached::setSaslAuthData
Memcached
PHP Manual

Memcached::setOptions

(PECL memcached >= 2.0.0)

Memcached::setOptions — Set Memcached options

说明

public bool Memcached::setOptions ( array $options )

Memcached::setOptions() is a variation of the Memcached::setOption() that takes an array of options to be set.

参数

options

An associative array of options where the key is the option to set and the value is the new value for the option.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Setting Memcached options

<?php
$m = new Memcached();
var_dump($m->getOption(Memcached::OPT_HASH) == Memcached::HASH_DEFAULT);

$m->setOptions(array(Memcached::OPT_HASH => Memcached::HASH_MURMUR, Memcached::OPT_PREFIX_KEY => "widgets"));

var_dump($m->getOption(Memcached::OPT_HASH) == Memcached::HASH_DEFAULT);
echo "Prefix key is now: ", $m->getOption(Memcached::OPT_PREFIX_KEY), "\n";
?>

以上例程会输出：

bool(true)
bool(false)
Prefix key is now: widgets

参见

  • Memcached::getOption() - 获取Memcached的选项值
  • Memcached::setOption() - 设置一个memcached选项
  • Memcached Constants

Memcached::setOption
Memcached::setSaslAuthData
Memcached


Set the credentials to use for authentication

Memcached::setOptions
Memcached::touch
Memcached
PHP Manual

Memcached::setSaslAuthData

(PECL memcached >= 2.0.0)

Memcached::setSaslAuthData — Set the credentials to use for authentication

说明

public void Memcached::setSaslAuthData ( string $username , string $password )

Memcached::setSaslAuthData() sets the username and password that should be used for SASL authentication with the memcache servers.

This method is only available when the memcached extension is built with SASL support. Please refer to Memcached setup for how to do this.

参数

username

The username to use for authentication.

password

The password to use for authentication.

返回值

没有返回值。

Memcached::setOptions
Memcached::touch
Memcached


Set a new expiration on an item

Memcached::setSaslAuthData
Memcached::touchByKey
Memcached
PHP Manual

Memcached::touch

(PECL memcached >= 2.0.0)

Memcached::touch — Set a new expiration on an item

说明

public bool Memcached::touch ( string $key , int $expiration )

Memcached::touch() sets a new expiration value on the given key.

参数

key

用于存储值的键名。

expiration

到期时间，默认为 0。 更多信息请参见到期时间。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如需要则使用 Memcached::getResultCode()。

参见

  • Memcached::touchByKey() - Set a new expiration on an item on a specific server

Memcached::setSaslAuthData
Memcached::touchByKey
Memcached


Set a new expiration on an item on a specific server

Memcached::touch
mqseries
Memcached
PHP Manual

Memcached::touchByKey

(PECL memcached >= 2.0.0)

Memcached::touchByKey — Set a new expiration on an item on a specific server

说明

public bool Memcached::touchByKey ( string $server_key , string $key , int $expiration )

Memcached::touchByKey() is functionally equivalent to Memcached::touch(), except that the free-form server_key can be used to map the key to a specific server.

参数

server_key

本键名用于识别储存和读取值的服务器。没有将实际的键名散列到具体的项目，而是在决定与哪一个 memcached 服务器通信时将其散列为服务器键名。这使得关联的项目在单一的服务上被组合起来以提高多重操作的效率。

key

用于存储值的键名。

expiration

到期时间，默认为 0。 更多信息请参见到期时间。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 如需要则使用 Memcached::getResultCode()。

参见

  • Memcached::touch() - Set a new expiration on an item

Memcached::touch
mqseries
Memcached


mqseries

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • mqseries 函数
    • mqseries_back — MQSeries MQBACK
    • mqseries_begin — MQseries MQBEGIN
    • mqseries_close — MQSeries MQCLOSE
    • mqseries_cmit — MQSeries MQCMIT
    • mqseries_conn — MQSeries MQCONN
    • mqseries_connx — MQSeries MQCONNX
    • mqseries_disc — MQSeries MQDISC
    • mqseries_get — MQSeries MQGET
    • mqseries_inq — MQSeries MQINQ
    • mqseries_open — MQSeries MQOPEN
    • mqseries_put1 — MQSeries MQPUT1
    • mqseries_put — MQSeries MQPUT
    • mqseries_set — MQSeries MQSET
    • mqseries_strerror — Returns the error message corresponding to a result code (MQRC).
Memcached::touchByKey
简介
其它服务


简介

This extension aims to provide an interface for communicating with IBMs WebSphere MQ series Queue managers.

The interface mimics the C-API client interface of WebSphere MQ Series as close as possible. Using the same naming conventions and possibilities of the C-API. In order to understand the workings of this extension some level of understanding the C-API is required.

For MQ-options, MQ-structures, MQ-results etc. please read the WebSphere MQ Application Programming Guide and WebSphere MQ Application Programming Reference.

mqseries
安装／配置
mqseries


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
mqseries


需求

A working IBM WebSphere MQ installation. If building the extension the SDK for IBM WebSphere MQ is also required.

Note: Be aware that when running against a IBM WebSphere MQ Client installation some methods are not available. This is not a problem of the extension but just the way the WebSphere MQ Client Interface works.

Installation requirements on non windows platforms

Build the extension and put it in the PHP extension directory.

Installation requirements on Windows

No additional requirements.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/mqseries.

Note: The official name of this extension is mqseries.

There are two ways to connect to a queue manager. These depend on the way the extension is compiled and linked.

  • First one and also the default one is using the mqic libraries. Compiling and linking the extension against these IBM WebSphere MQSeries libraries allows the extension to connect to the Queue manager using the client interface. Remote connections are possible this way.

  • The other way is to compile and link against the mqm libraries. Using these libraries it is possible to make use of the transaction management of a queue manager.

Currently selecting the libraries to use is done by changing the config.m4 file.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

There are no extra configuration parameters.

安装
资源类型
安装／配置


资源类型

This extension defines a connection and object_handle resources.

The mqseries_conn() and mqseries_connx() define the connectionn handles.

The mqseries_open() defines the object handle.

运行时配置
预定义常量
安装／配置


预定义常量

For each WebSphere MQ Constant there is a mqseries counterpart.

For definitions and usage see the WebSphere MQ Application Programming Guide and WebSphere MQ Application Programming Reference red books.

The name of the mqseries counterpart is made by appending the WebSphere MQ constant with MQSERIES_, for example the CompletionCode constants are:

mqseries constants
PHP Constant | MQ Constant
MQSERIES_MQCC_OK | MQCC_OK
MQSERIES_MQCC_WARNING | MQCC_WARNING
MQSERIES_MQCC_FAILED | MQCC_FAILED
MQSERIES_MQCC_UNKNOWN | MQCC_UNKNOWN

资源类型
mqseries 函数
mqseries


mqseries 函数

Table of Contents

  • mqseries_back — MQSeries MQBACK
  • mqseries_begin — MQseries MQBEGIN
  • mqseries_close — MQSeries MQCLOSE
  • mqseries_cmit — MQSeries MQCMIT
  • mqseries_conn — MQSeries MQCONN
  • mqseries_connx — MQSeries MQCONNX
  • mqseries_disc — MQSeries MQDISC
  • mqseries_get — MQSeries MQGET
  • mqseries_inq — MQSeries MQINQ
  • mqseries_open — MQSeries MQOPEN
  • mqseries_put1 — MQSeries MQPUT1
  • mqseries_put — MQSeries MQPUT
  • mqseries_set — MQSeries MQSET
  • mqseries_strerror — Returns the error message corresponding to a result code (MQRC).
预定义常量
mqseries_back
mqseries


MQSeries MQBACK

mqseries 函数
mqseries_begin
mqseries 函数
PHP Manual

mqseries_back

(PECL mqseries >= 0.10.0)

mqseries_back — MQSeries MQBACK

说明

void mqseries_back ( resource $hconn , resource &$compCode , resource &$reason )

The mqseries_back() (MQBACK) call indicates to the queue manager that all the message gets and puts that have occurred since the last syncpoint are to be backed out. Messages put as part of a unit of work are deleted; messages retrieved as part of a unit of work are reinstated on the queue.

Using mqseries_back() only works in conjunction with mqseries_begin() and only function when connecting directly to a Queueu manager. Not via the mqclient interface.

参数

hConn

Connection handle.

This handle represents the connection to the queue manager.

compCode

Completion code.

reason

Reason code qualifying the compCode.

返回值

没有返回值。

范例

Example #1 mqseries_back() example

<?php
    mqseries_back($conn, $comp_code, $reason);

    if ($comp_code !== MQSERIES_MQCC_OK) {
        printf("CompCode:%d Reason:%d Text:%s<br>\n", $comp_code, $reason, mqseries_strerror($reason));
    }
?>

注释

Note:

mqseries_back() will not function when using MQSeries Client to connect to a Queueu Manager.

参见

  • mqseries_conn() - MQSeries MQCONN
  • mqseries_connx() - MQSeries MQCONNX
  • mqseries_begin() - MQseries MQBEGIN

mqseries 函数
mqseries_begin
mqseries 函数


MQseries MQBEGIN

mqseries_back
mqseries_close
mqseries 函数
PHP Manual

mqseries_begin

(PECL mqseries >= 0.10.0)

mqseries_begin — MQseries MQBEGIN

说明

void mqseries_begin ( resource $hconn , array $beginOptions , resource &$compCode , resource &$reason )

The mqseries_begin() (MQBEGIN) call begins a unit of work that is coordinated by the queue manager, and that may involve external resource managers.

Using mqseries_begin() starts the unit of work. Either mqseries_back() or mqseries_cmit() ends the unit of work.

参数

hConn

Connection handle.

This handle represents the connection to the queue manager.

compCode

Completion code.

reason

Reason code qualifying the compCode.

返回值

没有返回值。

范例

Example #1 mqseries_begin() example

<?php
    $mqbo = array();
    mqseries_begin( $conn,
                    $mqbo,
                    $comp_code,
                    $reason);
    if ($comp_code !== MQSERIES_MQCC_OK) {
        /* reason code 2121 is a warning for more information see MQSeries reference manual.*/
        if ($reason !== 2121) {
            printf("CompCode:%d Reason:%d Text:%s<br>\n", $comp_code, $reason, mqseries_strerror($reason));
        }
    }
?>

注释

Note:

mqseries_begin() will not function when using MQSeries Client to connect to a Queueu Manager.

参见

  • mqseries_conn() - MQSeries MQCONN
  • mqseries_connx() - MQSeries MQCONNX
  • mqseries_back() - MQSeries MQBACK
  • mqseries_cmit() - MQSeries MQCMIT

mqseries_back
mqseries_close
mqseries 函数


MQSeries MQCLOSE

mqseries_begin
mqseries_cmit
mqseries 函数
PHP Manual

mqseries_close

(PECL mqseries >= 0.10.0)

mqseries_close — MQSeries MQCLOSE

说明

void mqseries_close ( resource $hconn , resource $hobj , int $options , resource &$compCode , resource &$reason )

The mqseries_close() (MQCLOSE) call relinquishes access to an object, and is the inverse of the mqseries_open() (MQOPEN) call.

参数

hConn

Connection handle.

This handle represents the connection to the queue manager.

hObj

Object handle.

This handle represents the object to be used.

options

compCode

Completion code.

reason

Reason code qualifying the compCode.

返回值

没有返回值。

范例

Example #1 mqseries_close() example

<?php
    mqseries_close($conn, $obj, MQSERIES_MQCO_NONE, $comp_code, $reason);
    if ($comp_code !== MQSERIES_MQCC_OK) {
        printf("close CompCode:%d Reason:%d Text:%s<br>\n", $comp_code, $reason, mqseries_strerror($reason));
    }
?>

参见

  • mqseries_open() - MQSeries MQOPEN
  • mqseries_conn() - MQSeries MQCONN
  • mqseries_connx() - MQSeries MQCONNX

mqseries_begin
mqseries_cmit
mqseries 函数


MQSeries MQCMIT

mqseries_close
mqseries_conn
mqseries 函数
PHP Manual

mqseries_cmit

(PECL mqseries >= 0.10.0)

mqseries_cmit — MQSeries MQCMIT

说明

void mqseries_cmit ( resource $hconn , resource &$compCode , resource &$reason )

The mqseries_cmit() (MQCMIT) call indicates to the queue manager that the application has reached a syncpoint, and that all of the message gets and puts that have occurred since the last syncpoint are to be made permanent. Messages put as part of a unit of work are made available to other applications; messages retrieved as part of a unit of work are deleted.

参数

hConn

Connection handle.

This handle represents the connection to the queue manager.

compCode

Completion code.

reason

Reason code qualifying the compCode.

返回值

没有返回值。

范例

Example #1 mqseries_cmit() example

<?php
    mqseries_cmit($conn, $comp_code, $reason);
    if ($comp_code !== MQSERIES_MQCC_OK) {
        printf("cmit CompCode:%d Reason:%d Text:%s<br>\n", $comp_code, $reason, mqseries_strerror($reason));
    }
?>

注释

Note:

mqseries_back() will not function when using MQSeries Client to connect to a Queueu Manager.

参见

  • mqseries_begin() - MQseries MQBEGIN
  • mqseries_back() - MQSeries MQBACK
  • mqseries_conn() - MQSeries MQCONN
  • mqseries_connx() - MQSeries MQCONNX

mqseries_close
mqseries_conn
mqseries 函数


MQSeries MQCONN

mqseries_cmit
mqseries_connx
mqseries 函数
PHP Manual

mqseries_conn

(PECL mqseries >= 0.10.0)

mqseries_conn — MQSeries MQCONN

说明

void mqseries_conn ( string $qManagerName , resource &$hconn , resource &$compCode , resource &$reason )

The mqseries_conn() (MQCONN) call connects an application program to a queue manager. It provides a queue manager connection handle, which is used by the application on subsequent message queuing calls.

参数

qManagerName

Name of queue manager.

Name of the queue manager the application wishes to connect.

hConn

Connection handle.

This handle represents the connection to the queue manager.

compCode

Completion code.

reason

Reason code qualifying the compCode.

返回值

没有返回值。

范例

Example #1 mqseries_conn() example

<?php
    mqseries_conn('WMQ1', $conn, $comp_code, $reason);
    if ($comp_code !== MQSERIES_MQCC_OK) {
        printf("conn CompCode:%d Reason:%d Text:%s<br>\n", $comp_code, $reason, mqseries_strerror($reason));
        exit;
    }
?>

参见

  • mqseries_disc() - MQSeries MQDISC

mqseries_cmit
mqseries_connx
mqseries 函数


MQSeries MQCONNX

mqseries_conn
mqseries_disc
mqseries 函数
PHP Manual

mqseries_connx

(PECL mqseries >= 0.10.0)

mqseries_connx — MQSeries MQCONNX

说明

void mqseries_connx ( string $qManagerName , array &$connOptions , resource &$hconn , resource &$compCode , resource &$reason )

The mqseries_connx() (MQCONNX) call connects an application program to a queue manager. It provides a queue manager connection handle, which is used by the application on subsequent MQ calls.

The mqseries_connx() call is like the mqseries_conn() (MQCONN) call, except that MQCONNX allows options to be specified to control the way that the call works.

参数

qManagerName

Name of queue manager.

Name of the queue manager the application wishes to connect.

connOps

Options that control the action of function

See also the MQCNO structure.

hConn

Connection handle.

This handle represents the connection to the queue manager.

compCode

Completion code.

reason

Reason code qualifying the compCode.

返回值

没有返回值。

范例

Example #1 mqseries_connx() example

<?php
    $mqcno = array(
        'Version' => MQSERIES_MQCNO_VERSION_2,
        'Options' => MQSERIES_MQCNO_STANDARD_BINDING,
        'MQCD' => array('ChannelName' => 'MQNX9420.CLIENT',
        'ConnectionName' => 'localhost',
        'TransportType' => MQSERIES_MQXPT_TCP)
    );

    mqseries_connx('MQNX9420', $mqcno, $conn, $comp_code,$reason);
    if ($comp_code !== MQSERIES_MQCC_OK) {
        printf("Connx CompCode:%d Reason:%d Text:%s<br>\n", $comp_code, $reason, mqseries_strerror($reason));
        exit;
    }

?>

Example #2 mqseries_connx() example using SSL connection & OCSP Responder URL

<?php
    $mqcno = array(
        'Version' => 4, //MQCNO_VERSION_4
        'Options' => MQSERIES_MQCNO_STANDARD_BINDING,
        'MQCD' => array(
            'Version' => 7, //MQCD_VERSION_7
            'ConnectionName' => 'localhost',
            'TransportType' => MQSERIES_MQXPT_TCP,
            'ChannelName' => 'CONNECTIONCHANNEL',
            'SSLCipherSpec' => 'NULL_SHA'
        ),
        'MQSCO' => array(
            'KeyRepository' => '/var/mqm/qmgrs/QUEUEMGR/ssl/key', //Local path where the SSL key repository can be found
            'MQAIR' => array(
                'Version' => 2, //MQAIR_VERSION_2
                'AuthInfoType' => 2, //MQAIT_OCSP
                'OCSPResponderURL' => 'http://dummy.OCSP.responder'
            )
        )
    );

    mqseries_connx('QUEUEMGR', $mqcno, $conn, $comp_code,$reason);
    if ($comp_code !== MQSERIES_MQCC_OK) {
        printf("Connx CompCode:%d Reason:%d Text:%s<br>\n", $comp_code, $reason, mqseries_strerror($reason));
        exit;
    }

?>

参见

  • mqseries_disc() - MQSeries MQDISC

mqseries_conn
mqseries_disc
mqseries 函数


MQSeries MQDISC

mqseries_connx
mqseries_get
mqseries 函数
PHP Manual

mqseries_disc

(PECL mqseries >= 0.10.0)

mqseries_disc — MQSeries MQDISC

说明

void mqseries_disc ( resource $hconn , resource &$compCode , resource &$reason )

The mqseries_disc() (MQDISC) call breaks the connection between the queue manager and the application program, and is the inverse of the mqseries_conn() (MQCONN) or mqseries_connx() (MQCONNX) call.

参数

hConn

Connection handle.

This handle represents the connection to the queue manager.

compCode

Completion code.

reason

Reason code qualifying the compCode.

返回值

没有返回值。

范例

Example #1 mqseries_disc() example

<?php
    mqseries_disc($conn, $comp_code, $reason);
    if ($comp_code !== MQSERIES_MQCC_OK) {
        printf("disc CompCode:%d Reason:%d Text:%s<br>\n", $comp_code, $reason, mqseries_strerror($reason));
    }
?>

参见

  • mqseries_conn() - MQSeries MQCONN
  • mqseries_connx() - MQSeries MQCONNX

mqseries_connx
mqseries_get
mqseries 函数


MQSeries MQGET

mqseries_disc
mqseries_inq
mqseries 函数
PHP Manual

mqseries_get

(PECL mqseries >= 0.10.0)

mqseries_get — MQSeries MQGET

说明

void mqseries_get ( resource $hConn , resource $hObj , array &$md , array &$gmo , int &$bufferLength , string &$msg , int &$data_length , resource &$compCode , resource &$reason )

The mqseries_get() (MQGET) call retrieves a message from a local queue that has been opened using the mqseries_open() (MQOPEN) call

参数

hConn

Connection handle.

This handle represents the connection to the queue manager.

hObj

Object handle.

This handle represents the object to be used.

md

Message descriptor (MQMD).

gmo

Get message options (MQGMO).

bufferLength

Expected length of the result buffer

msg

Buffer holding the message that was retrieved from the object.

data_length

Actual buffer length

compCode

Completion code.

reason

Reason code qualifying the compCode.

返回值

没有返回值。

范例

Example #1 mqseries_get() example

<?php
// open connection to the queue manager
    mqseries_conn('WMQ1', $conn, $comp_code, $reason);
// $conn now hold the reference to the connection to the queue manager.

// open the connection to the testq queue
    mqseries_open(
                $conn,
                array('ObjectName' => 'TESTQ'),
                MQSERIES_MQOO_INPUT_AS_Q_DEF | MQSERIES_MQOO_FAIL_IF_QUIESCING | MQSERIES_MQOO_OUTPUT,
                $obj,
                $comp_code,
                $reason);
// $obj now holds the reference to the object (TESTQ)

// setup empty message descriptor.
    $mdg = array();
// setup get message options
    $gmo = array('Options' => MQSERIES_MQGMO_FAIL_IF_QUIESCING | MQSERIES_MQGMO_WAIT, 'WaitInterval' => 3000);

// get the message from the queueu
    mqseries_get($conn, $obj, $mdg, $gmo, 255, $msg, $data_length, $comp_code, $reason);
    if ($comp_code !== MQSERIES_MQCC_OK) {
        printf("GET CompCode:%d Reason:%d Text:%s<br>", $comp_code, $reason, mqseries_strerror($reason));
    }

// close the object reference $obj
    mqseries_close($conn, $obj, MQSERIES_MQCO_NONE, $comp_code, $reason);

// disconnect from the queue manager.
    mqseries_disc($conn, $comp_code, $reason);

?>

参见

  • mqseries_conn() - MQSeries MQCONN
  • mqseries_connx() - MQSeries MQCONNX
  • mqseries_open() - MQSeries MQOPEN
  • mqseries_put() - MQSeries MQPUT

mqseries_disc
mqseries_inq
mqseries 函数


MQSeries MQINQ

mqseries_get
mqseries_open
mqseries 函数
PHP Manual

mqseries_inq

(PECL mqseries >= 0.10.0)

mqseries_inq — MQSeries MQINQ

说明

void mqseries_inq ( resource $hconn , resource $hobj , int $selectorCount , array $selectors , int $intAttrCount , resource &$intAttr , int $charAttrLength , resource &$charAttr , resource &$compCode , resource &$reason )

The mqseries_inq() (MQINQ) call returns an array of integers and a set of character strings containing the attributes of an object.

参数

hConn

Connection handle.

This handle represents the connection to the queue manager.

hObj

Object handle.

This handle represents the object to be used.

selectorCount

Count of selectors.

selectors

Array of attribute selectors.

intAttrLength

Count of integer attributes.

intAttr

Array of integer attributes.

charAttrLength

Length of character attributes buffer.

charAttr

Character attributes.

compCode

Completion code.

reason

Reason code qualifying the compCode.

返回值

没有返回值。

范例

Example #1 mqseries_inq() example

<?php
    $int_attr = array();
    $char_attr = "";

    mqseries_inq($conn, $obj, 1, array(MQSERIES_MQCA_Q_MGR_NAME), 0, $int_attr, 48, $char_attr, $comp_code, $reason);

    if ($comp_code !== MQSERIES_MQCC_OK) {
        printf("INQ CompCode:%d Reason:%d Text:%s<br>\n", $comp_code, $reason, mqseries_strerror($reason));
    } else {
        echo "INQ QManager name result ".$char_attr."<br>\n";
    }
?>

参见

  • mqseries_conn() - MQSeries MQCONN
  • mqseries_connx() - MQSeries MQCONNX
  • mqseries_open() - MQSeries MQOPEN

mqseries_get
mqseries_open
mqseries 函数


MQSeries MQOPEN

mqseries_inq
mqseries_put1
mqseries 函数
PHP Manual

mqseries_open

(PECL mqseries >= 0.10.0)

mqseries_open — MQSeries MQOPEN

说明

void mqseries_open ( resource $hconn , array &$objDesc , int $option , resource &$hobj , resource &$compCode , resource &$reason )

The mqseries_open() (MQOPEN) call establishes access to an object.

参数

hConn

Connection handle.

This handle represents the connection to the queue manager.

objDesc

Object descriptor. (MQOD)

options

Options that control the action of the function.

hObj

Object handle.

This handle represents the object to be used.

compCode

Completion code.

reason

Reason code qualifying the compCode.

返回值

没有返回值。

范例

Example #1 mqseries_open() example

<?php
    $mqods = array('ObjectName' => 'TESTQ');
    mqseries_open(
                $conn,
                $mqods,
                MQSERIES_MQOO_INPUT_AS_Q_DEF | MQSERIES_MQOO_FAIL_IF_QUIESCING | MQSERIES_MQOO_OUTPUT,
                $obj,
                $comp_code,
                $reason);
    if ($comp_code !== MQSERIES_MQCC_OK) {
        printf("open CompCode:%d Reason:%d Text:%s<br>\n", $comp_code, $reason, mqseries_strerror($reason));
        exit;
    }
?>

参见

  • mqseries_close() - MQSeries MQCLOSE

mqseries_inq
mqseries_put1
mqseries 函数


MQSeries MQPUT1

mqseries_open
mqseries_put
mqseries 函数
PHP Manual

mqseries_put1

(PECL mqseries >= 0.10.0)

mqseries_put1 — MQSeries MQPUT1

说明

void mqseries_put1 ( resource $hconn , resource &$objDesc , resource &$msgDesc , resource &$pmo , string $buffer , resource &$compCode , resource &$reason )

The mqseries_put1() (MQPUT1) call puts one message on a queue. The queue need not be open.

You can use both the mqseries_put() and mqseries_put1() calls to put messages on a queue; which call to use depends on the circumstances. Use the mqseries_put() (MQPUT) call to place multiple messages on the same queue. Use the mqseries_put1() (MQPUT1) call to put only one message on a queue. This call encapsulates the MQOPEN, MQPUT, and MQCLOSE calls into a single call, minimizing the number of calls that must be issued.

参数

hConn

Connection handle.

This handle represents the connection to the queue manager.

objDesc

Object descriptor. (MQOD)

This is a structure which identifies the queue to which the message is added.

msgDesc

Message descriptor (MQMD).

pmo

Put message options (MQPMO).

compCode

Completion code.

reason

Reason code qualifying the compCode.

返回值

没有返回值。

参见

  • mqseries_conn() - MQSeries MQCONN
  • mqseries_connx() - MQSeries MQCONNX
  • mqseries_open() - MQSeries MQOPEN
  • mqseries_get() - MQSeries MQGET

mqseries_open
mqseries_put
mqseries 函数


MQSeries MQPUT

mqseries_put1
mqseries_set
mqseries 函数
PHP Manual

mqseries_put

(PECL mqseries >= 0.10.0)

mqseries_put — MQSeries MQPUT

说明

void mqseries_put ( resource $hConn , resource $hObj , array &$md , array &$pmo , string $message , resource &$compCode , resource &$reason )

The mqseries_put() (MQPUT) call puts a message on a queue or distribution list. The queue or distribution list must already be open.

参数

hConn

Connection handle.

This handle represents the connection to the queue manager.

hObj

Object handle.

This handle represents the object to be used.

md

Message descriptor (MQMD).

pmo

Put message options (MQPMO).

message

The actual message to put onto the queue.

compCode

Completion code.

reason

Reason code qualifying the compCode.

返回值

没有返回值。

范例

Example #1 mqseries_put() example

<?php
// open connection to the queue manager
    mqseries_conn('WMQ1', $conn, $comp_code, $reason);
// $conn now hold the reference to the connection to the queue manager.

// open the connectio to the testq queueu
    mqseries_open(
                $conn,
                array('ObjectName' => 'TESTQ'),
                MQSERIES_MQOO_INPUT_AS_Q_DEF | MQSERIES_MQOO_FAIL_IF_QUIESCING | MQSERIES_MQOO_OUTPUT,
                $obj,
                $comp_code,
                $reason);
// $obj now holds the reference to the object (TESTQ)

// setup the message descriptor array. Check MQSeries reference manuals.
    $md = array(
                'Version' => MQSERIES_MQMD_VERSION_1,
                'Expiry' => MQSERIES_MQEI_UNLIMITED,
                'Report' => MQSERIES_MQRO_NONE,
                'MsgType' => MQSERIES_MQMT_DATAGRAM,
                'Format' => MQSERIES_MQFMT_STRING,
                'Priority' => 1,
                'Persistence' => MQSERIES_MQPER_PERSISTENT);

// setup the put message options.
    $pmo = array('Options' => MQSERIES_MQPMO_NEW_MSG_ID|MQSERIES_MQPMO_SYNCPOINT);

// put the message 'Ping' on the queueu.
    mqseries_put($conn, $obj, $md, $pmo, 'Ping', $comp_code, $reason);

    if ($comp_code !== MQSERIES_MQCC_OK) {
        printf("put CompCode:%d Reason:%d Text:%s<br>\n", $comp_code, $reason, mqseries_strerror($reason));
    }

// close the object reference $obj
    mqseries_close($conn, $obj, MQSERIES_MQCO_NONE, $comp_code, $reason);

// disconnect from the queue manager.
    mqseries_disc($conn, $comp_code, $reason);

?>

参见

  • mqseries_conn() - MQSeries MQCONN
  • mqseries_connx() - MQSeries MQCONNX
  • mqseries_open() - MQSeries MQOPEN
  • mqseries_get() - MQSeries MQGET

mqseries_put1
mqseries_set
mqseries 函数


MQSeries MQSET

mqseries_put
mqseries_strerror
mqseries 函数
PHP Manual

mqseries_set

(PECL mqseries >= 0.10.0)

mqseries_set — MQSeries MQSET

说明

void mqseries_set ( resource $hConn , resource $hObj , int $selectorCount , array $selectors , int $intAttrCount , array $intAttrs , int $charAttrLength , array $charAttrs , resource &$compCode , resource &$reason )

The mqseries_set() (MQSET) call is used to change the attributes of an object represented by a handle. The object must be a queue.

参数

hConn

Connection handle.

This handle represents the connection to the queue manager.

hObj

Object handle.

This handle represents the object to be used.

selectorCount

Count of selectors.

selectors

Array of attribute selectors.

intAttrCount

Count of integer attributes.

intAttrs

Array of integer attributes.

charAttrLength

Length of character attributes buffer.

charAttrs

Character attributes.

compCode

Completion code.

reason

Reason code qualifying the compCode.

返回值

没有返回值。

参见

  • mqseries_inq() - MQSeries MQINQ

mqseries_put
mqseries_strerror
mqseries 函数


Returns the error message corresponding to a result code (MQRC).

mqseries_set
网络
mqseries 函数
PHP Manual

mqseries_strerror

(PECL mqseries >= 0.10.0)

mqseries_strerror — Returns the error message corresponding to a result code (MQRC).

说明

string mqseries_strerror ( int $reason )

mqseries_strerror() returns the message that correspond to the reason result code.

参数

reason

Reason code qualifying the compCode.

返回值

string representation of the reason code message.

范例

Example #1 mqseries_strerror() example

<?php
    if ($comp_code !== MQSERIES_MQCC_OK) {
        printf("open CompCode:%d Reason:%d Text:%s<br>\n", $comp_code, $reason, mqseries_strerror($reason));
        exit;
    }
?>

以上例程会输出：

Connx CompCode:2 Reason:2059 Text:Queue manager not available for connection.

mqseries_set
网络
mqseries 函数


网络

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 网络 函数
    • checkdnsrr — 给指定的主机（域名）或者IP地址做DNS通信检查
    • closelog — 关闭系统日志链接
    • define_syslog_variables — Initializes all syslog related variables
    • dns_check_record — 别名 checkdnsrr
    • dns_get_mx — 别名 getmxrr
    • dns_get_record — 获取指定主机的DNS记录
    • fsockopen — 打开一个网络连接或者一个Unix套接字连接
    • gethostbyaddr — 获取指定的IP地址对应的主机名
    • gethostbyname — Get the IPv4 address corresponding to a given Internet host name
    • gethostbynamel — Get a list of IPv4 addresses corresponding to a given Internet host name
    • gethostname — Gets the host name
    • getmxrr — Get MX records corresponding to a given Internet host name
    • getprotobyname — Get protocol number associated with protocol name
    • getprotobynumber — Get protocol name associated with protocol number
    • getservbyname — Get port number associated with an Internet service and protocol
    • getservbyport — Get Internet service which corresponds to port and protocol
    • header_register_callback — Call a header function
    • header_remove — Remove previously set headers
    • header — 发送原生 HTTP 头
    • headers_list — Returns a list of response headers sent (or ready to send)
    • headers_sent — Checks if or where headers have been sent
    • http_response_code — Get or Set the HTTP response code
    • inet_ntop — Converts a packed internet address to a human readable representation
    • inet_pton — Converts a human readable IP address to its packed in_addr representation
    • ip2long — 将一个IPV4的字符串互联网协议转换成数字格式
    • long2ip — Converts an long integer address into a string in (IPv4) Internet standard dotted format
    • openlog — Open connection to system logger
    • pfsockopen — 打开一个持久的网络连接或者Unix套接字连接。
    • setcookie — Send a cookie
    • setrawcookie — Send a cookie without urlencoding the cookie value
    • socket_get_status — 别名 stream_get_meta_data
    • socket_set_blocking — 别名 stream_set_blocking
    • socket_set_timeout — 别名 stream_set_timeout
    • syslog — Generate a system log message
mqseries_strerror
简介
其它服务


简介

提供一系列联网函数。

网络
安装／配置
网络


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
网络


需求

Functions checkdnsrr(), getmxrr() and dns_get_record() requires Bind on Linux.

安装／配置
安装
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Network Configuration Options
名字 | 默认 | 可修改范围 | 更新日志
define_syslog_variables | "0" | PHP_INI_ALL | Deprecated in PHP 5.3.0. Removed in PHP 5.4.0.
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

define_syslog_variables boolean

Whether or not to define the various syslog variables (e.g. $LOG_PID, $LOG_CRON, etc.). Turning it off is a good idea performance-wise. At runtime, you can define these variables by calling define_syslog_variables().

安装
资源类型
安装／配置


资源类型

This extension defines a file pointer resource returned by fsockopen() and pfsockopen().

运行时配置
预定义常量
安装／配置


预定义常量

下列常量作为 PHP 核心的一部分总是可用的。

openlog() Options
Constant | Description
LOG_CONS | if there is an error while sending data to the system logger, write directly to the system console
LOG_NDELAY | open the connection to the logger immediately
LOG_ODELAY | (default) delay opening the connection until the first message is logged
LOG_NOWAIT |
LOG_PERROR | print log message also to standard error
LOG_PID | include PID with each message
openlog() Facilities
Constant | Description
LOG_AUTH | security/authorization messages (use LOG_AUTHPRIV instead in systems where that constant is defined)
LOG_AUTHPRIV | security/authorization messages (private)
LOG_CRON | clock daemon (cron and at)
LOG_DAEMON | other system daemons
LOG_KERN | kernel messages
LOG_LOCAL0 ... LOG_LOCAL7 | reserved for local use, these are not available in Windows
LOG_LPR | line printer subsystem
LOG_MAIL | mail subsystem
LOG_NEWS | USENET news subsystem
LOG_SYSLOG | messages generated internally by syslogd
LOG_USER | generic user-level messages
LOG_UUCP | UUCP subsystem
syslog() Priorities (in descending order)
Constant | Description
LOG_EMERG | system is unusable
LOG_ALERT | action must be taken immediately
LOG_CRIT | critical conditions
LOG_ERR | error conditions
LOG_WARNING | warning conditions
LOG_NOTICE | normal, but significant, condition
LOG_INFO | informational message
LOG_DEBUG | debug-level message
dns_get_record() Options
Constant | Description
DNS_A | IPv4 Address Resource
DNS_MX | Mail Exchanger Resource
DNS_CNAME | Alias (Canonical Name) Resource
DNS_NS | Authoritative Name Server Resource
DNS_PTR | Pointer Resource
DNS_HINFO | Host Info Resource (See IANA's » Operating System Names for the meaning of these values)
DNS_SOA | Start of Authority Resource
DNS_TXT | Text Resource
DNS_ANY | Any Resource Record. On most systems this returns all resource records, however it should not be counted upon for critical uses. Try DNS_ALL instead.
DNS_AAAA | IPv6 Address Resource
DNS_ALL | Iteratively query the name server for each available record type.
资源类型
网络 函数
网络


网络 函数

Table of Contents

  • checkdnsrr — 给指定的主机（域名）或者IP地址做DNS通信检查
  • closelog — 关闭系统日志链接
  • define_syslog_variables — Initializes all syslog related variables
  • dns_check_record — 别名 checkdnsrr
  • dns_get_mx — 别名 getmxrr
  • dns_get_record — 获取指定主机的DNS记录
  • fsockopen — 打开一个网络连接或者一个Unix套接字连接
  • gethostbyaddr — 获取指定的IP地址对应的主机名
  • gethostbyname — Get the IPv4 address corresponding to a given Internet host name
  • gethostbynamel — Get a list of IPv4 addresses corresponding to a given Internet host name
  • gethostname — Gets the host name
  • getmxrr — Get MX records corresponding to a given Internet host name
  • getprotobyname — Get protocol number associated with protocol name
  • getprotobynumber — Get protocol name associated with protocol number
  • getservbyname — Get port number associated with an Internet service and protocol
  • getservbyport — Get Internet service which corresponds to port and protocol
  • header_register_callback — Call a header function
  • header_remove — Remove previously set headers
  • header — 发送原生 HTTP 头
  • headers_list — Returns a list of response headers sent (or ready to send)
  • headers_sent — Checks if or where headers have been sent
  • http_response_code — Get or Set the HTTP response code
  • inet_ntop — Converts a packed internet address to a human readable representation
  • inet_pton — Converts a human readable IP address to its packed in_addr representation
  • ip2long — 将一个IPV4的字符串互联网协议转换成数字格式
  • long2ip — Converts an long integer address into a string in (IPv4) Internet standard dotted format
  • openlog — Open connection to system logger
  • pfsockopen — 打开一个持久的网络连接或者Unix套接字连接。
  • setcookie — Send a cookie
  • setrawcookie — Send a cookie without urlencoding the cookie value
  • socket_get_status — 别名 stream_get_meta_data
  • socket_set_blocking — 别名 stream_set_blocking
  • socket_set_timeout — 别名 stream_set_timeout
  • syslog — Generate a system log message
预定义常量
checkdnsrr
网络


给指定的主机（域名）或者IP地址做DNS通信检查

网络 函数
closelog
网络 函数
PHP Manual

checkdnsrr

(PHP 4, PHP 5, PHP 7)

checkdnsrr — 给指定的主机（域名）或者IP地址做DNS通信检查

说明

bool checkdnsrr ( string $host [, string $type = "MX" ] )

根据不同记录（type）类型查询主机（host）相应的DNS记录。

参数

host

主机（host）可以是一个IP地址也可以是域名。

type

解析记录类型（type）可能是下面这些类型中的任何一个：A，MX，NS，SOA，PTR，CNAME，AAAA，A6， SRV，NAPTR，TXT 或者 ANY。

返回值

如果记录能找到，就返回TRUE；如果查找不到该DNS记录或者发生了错误，就返回FALSE。

更新日志

版本 | 说明
5.3.0 | 这个函数在Windows平台上也可以使用了。
5.2.4 | 增加了TXT的记录类型。
5.0.0 | 增加了AAAA的记录类型。

注释

Note:

出于对低版本在windows平台上的兼容性，可以试试» PEAR扩展包里面提供的 » Net_DNS类。

参见

  • dns_get_record() - 获取指定主机的DNS记录
  • getmxrr() - Get MX records corresponding to a given Internet host name
  • gethostbyaddr() - 获取指定的IP地址对应的主机名
  • gethostbyname() - Get the IPv4 address corresponding to a given Internet host name
  • gethostbynamel() - Get a list of IPv4 addresses corresponding to a given Internet host name
  • the named(8) manual page

网络 函数
closelog
网络 函数


关闭系统日志链接

checkdnsrr
define_syslog_variables
网络 函数
PHP Manual

closelog

(PHP 4, PHP 5, PHP 7)

closelog — 关闭系统日志链接

说明

bool closelog ( void )

closelog() 关闭用于通信的描述符并写入系统日志。closelog()是可选的。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • syslog() - Generate a system log message
  • openlog() - Open connection to system logger

checkdnsrr
define_syslog_variables
网络 函数


Initializes all syslog related variables

closelog
dns_check_record
网络 函数
PHP Manual

define_syslog_variables

(PHP 4, PHP 5 < 5.4.0)

define_syslog_variables — Initializes all syslog related variables

说明

void define_syslog_variables ( void )

Initializes all variables used in the syslog functions.

返回值

没有返回值。

Syslog variables
Variable | Constant equal | Meaning | Notes
$LOG_EMERG | LOG_EMERG | System is unusable |
$LOG_ALERT | LOG_ALERT | Immediate action required |
$LOG_CRIT | LOG_CRIT | Critical conditions |
$LOG_ERR | LOG_ERR |  |
$LOG_WARNING | LOG_WARNING |  |
$LOG_NOTICE | LOG_NOTICE |  |
$LOG_INFO | LOG_INFO |  |
$LOG_DEBUG | LOG_DEBUG |  |
$LOG_KERN | LOG_KERN |  |
$LOG_USER | LOG_USER | Genetic user level |
$LOG_MAIL | LOG_MAIL | Log to email |
$LOG_DAEMON | LOG_DAEMON | Other system daemons |
$LOG_AUTH | LOG_AUTH |  |
$LOG_SYSLOG | LOG_SYSLOG |  | Not available on Netware
$LOG_LPR | LOG_LPR |  |
$LOG_NEWS | LOG_NEWS | Usenet new | Not available on HP-UX
$LOG_CRON | LOG_CRON |  | Not available on all platforms
$LOG_AUTHPRIV | LOG_AUTHPRIV |  | Not available on AIX
$LOG_LOCAL0 | LOG_LOCAL0 |  | Not available on Windows and Netware
$LOG_LOCAL1 | LOG_LOCAL1 |  | Not available on Windows and Netware
$LOG_LOCAL2 | LOG_LOCAL2 |  | Not available on Windows and Netware
$LOG_LOCAL3 | LOG_LOCAL3 |  | Not available on Windows and Netware
$LOG_LOCAL4 | LOG_LOCAL4 |  | Not available on Windows and Netware
$LOG_LOCAL5 | LOG_LOCAL5 |  | Not available on Windows and Netware
$LOG_LOCAL6 | LOG_LOCAL6 |  | Not available on Windows and Netware
$LOG_LOCAL7 | LOG_LOCAL7 |  | Not available on Windows and Netware
$LOG_PID | LOG_PID |  |
$LOG_CONS | LOG_CONS |  |
$LOG_ODELAY | LOG_ODELAY |  |
$LOG_NDELAY | LOG_NDELAY |  |
$LOG_NOWAIT | LOG_NOWAIT |  | Not available on BeOS
$LOG_PERROR | LOG_PERROR |  | Not available on AIX
Warning

本函数已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

范例

Example #1 define_syslog_variables() example

<?php
// Check if syslog variables already is defined
if(!get_cfg_var('define_syslog_variables'))
{
    define_syslog_variables();
}

// Open the log
openlog('', $LOG_ODELAY, $LOG_MAIL | $LOG_USER);

// Continue script ...
?>

更新日志

版本 | 说明
5.4.0 | This function was removed from PHP.
5.3.0 | This function now throws an E_DEPRECATED notice.

参见

  • openlog() - Open connection to system logger
  • syslog() - Generate a system log message
  • closelog() - 关闭系统日志链接

closelog
dns_check_record
网络 函数


别名 checkdnsrr

define_syslog_variables
dns_get_mx
网络 函数
PHP Manual

dns_check_record

(PHP 5, PHP 7)

dns_check_record — 别名 checkdnsrr()

说明

此函数是该函数的别名： checkdnsrr().

define_syslog_variables
dns_get_mx
网络 函数


别名 getmxrr

dns_check_record
dns_get_record
网络 函数
PHP Manual

dns_get_mx

(PHP 5, PHP 7)

dns_get_mx — 别名 getmxrr()

说明

此函数是该函数的别名： getmxrr().

dns_check_record
dns_get_record
网络 函数


获取指定主机的DNS记录

dns_get_mx
fsockopen
网络 函数
PHP Manual

dns_get_record

(PHP 5, PHP 7)

dns_get_record — 获取指定主机的DNS记录

说明

array dns_get_record ( string $hostname [, int $type = DNS_ANY [, array &$authns [, array &$addtl [, bool &$raw = false ]]]] )

获取指定主机（hostname）的DNS记录。

参数

hostname

主机名（hostname）应该是一个DNS解析生效的域名，例如"www.example.com"。主机名也可以是通过对逆向解析域做DNS逆向域名解析而得到，但是在大多数情况下gethostbyaddr()更加适合做逆向域名解析。

Note:

每个DNS标准，邮件地址必须是user.host这样的格式（例如hostmaster.example.com而不是hostmaster@example.com），在使用mail()这个函数之前请检查这个值，有必要的话还需要修改。

type

默认情况下，dns_get_record()将会搜索所有与hostname相关的记录，可以通过设置type来限定查询。type的值可以是下面的其中的任何一个： DNS_A，DNS_CNAME，DNS_HINFO，DNS_MX，DNS_NS，DNS_PTR，DNS_SOA，DNS_TXT，DNS_AAAA，DNS_SRV，DNS_NAPTR，DNS_A6，DNS_ALL或者DNS_ANY。

Note:

由于dns在各个平台上表现有些不一样，DNS_ANY不会总是返回所有的记录，DNS_ALL虽然慢一些，但是会得到所有的记录，所以使用DNS_ALL更加可靠些。

authns

以引用方式传递，如果写了该参数，那么将会得到该解析记录的DNS服务器（Authoritative Name Servers）的信息。

addtl

以引用方式传递，如果填写了该参数，将会得到其他所有的DNS解析记录。

raw

在原生模式下，在进行额外的查询的时候之前我们只执行请求的DNS类型，而不是循环查询所有的类型。

返回值

这个函数返回一个关联数组，如果失败则 或者在失败时返回 FALSE。每个关联数组都至少包含了以下的这些键。 at minimum the following keys:

Basic DNS attributes
Attribute | Meaning
host | The record in the DNS namespace to which the rest of the associated data refers.
class | dns_get_record() only returns Internet class records and as such this parameter will always return IN.
type | String containing the record type. Additional attributes will also be contained in the resulting array dependant on the value of type. See table below.
ttl | "Time To Live" remaining for this record. This will not equal the record's original ttl, but will rather equal the original ttl minus whatever length of time has passed since the authoritative name server was queried.

Other keys in associative arrays dependant on 'type'
Type | Extra Columns
A | ip: An IPv4 addresses in dotted decimal notation.
MX | pri: Priority of mail exchanger. Lower numbers indicate greater priority. target: FQDN of the mail exchanger. See also dns_get_mx().
CNAME | target: FQDN of location in DNS namespace to which the record is aliased.
NS | target: FQDN of the name server which is authoritative for this hostname.
PTR | target: Location within the DNS namespace to which this record points.
TXT | txt: Arbitrary string data associated with this record.
HINFO | cpu: IANA number designating the CPU of the machine referenced by this record. os: IANA number designating the Operating System on the machine referenced by this record. See IANA's » Operating System Names for the meaning of these values.
SOA | mname: FQDN of the machine from which the resource records originated. rname: Email address of the administrative contain for this domain. serial: Serial # of this revision of the requested domain. refresh: Refresh interval (seconds) secondary name servers should use when updating remote copies of this domain. retry: Length of time (seconds) to wait after a failed refresh before making a second attempt. expire: Maximum length of time (seconds) a secondary DNS server should retain remote copies of the zone data without a successful refresh before discarding. minimum-ttl: Minimum length of time (seconds) a client can continue to use a DNS resolution before it should request a new resolution from the server. Can be overridden by individual resource records.
AAAA | ipv6: IPv6 address
A6(PHP >= 5.1.0) | masklen: Length (in bits) to inherit from the target specified by chain. ipv6: Address for this specific record to merge with chain. chain: Parent record to merge with ipv6 data.
SRV | pri: (Priority) lowest priorities should be used first. weight: Ranking to weight which of commonly prioritized targets should be chosen at random. target and port: hostname and port where the requested service can be found. For additional information see: » RFC 2782
NAPTR | order and pref: Equivalent to pri and weight above. flags, services, regex, and replacement: Parameters as defined by » RFC 2915.

更新日志

版本 | 说明
5.4.0 | 增加了参数raw。
5.3.0 | 可以是在windows平台上使用这个函数了。
5.3.0 | 在此版本之前，如果给参数authns传入值，则必须同时传入addtl的值。

范例

Example #1 使用 dns_get_record()函数

<?php
$result = dns_get_record("php.net");
print_r($result);
?>

以上例程的输出类似于：

Array
(
    [0] => Array
        (
            [host] => php.net
            [type] => MX
            [pri] => 5
            [target] => pair2.php.net
            [class] => IN
            [ttl] => 6765
        )

    [1] => Array
        (
            [host] => php.net
            [type] => A
            [ip] => 64.246.30.37
            [class] => IN
            [ttl] => 8125
        )

)

Example #2 使用dns_get_record()配合DNS_ANY的例子

由于我们经常会想获取一个邮件服务器的对应的IP地址的MX记录是否已经生效。在使用dns_get_record()函数之后，addtl能够返回一个相关的数组记录，authns参数则会返回授权服务器的列表信息。

<?php
/* Request "ANY" record for php.net,
   and create $authns and $addtl arrays
   containing list of name servers and
   any additional records which go with
   them */
$result = dns_get_record("php.net", DNS_ANY, $authns, $addtl);
echo "Result = ";
print_r($result);
echo "Auth NS = ";
print_r($authns);
echo "Additional = ";
print_r($addtl);
?>

以上例程的输出类似于：

Result = Array
(
    [0] => Array
        (
            [host] => php.net
            [type] => MX
            [pri] => 5
            [target] => pair2.php.net
            [class] => IN
            [ttl] => 6765
        )

    [1] => Array
        (
            [host] => php.net
            [type] => A
            [ip] => 64.246.30.37
            [class] => IN
            [ttl] => 8125
        )

)
Auth NS = Array
(
    [0] => Array
        (
            [host] => php.net
            [type] => NS
            [target] => remote1.easydns.com
            [class] => IN
            [ttl] => 10722
        )

    [1] => Array
        (
            [host] => php.net
            [type] => NS
            [target] => remote2.easydns.com
            [class] => IN
            [ttl] => 10722
        )

    [2] => Array
        (
            [host] => php.net
            [type] => NS
            [target] => ns1.easydns.com
            [class] => IN
            [ttl] => 10722
        )

    [3] => Array
        (
            [host] => php.net
            [type] => NS
            [target] => ns2.easydns.com
            [class] => IN
            [ttl] => 10722
        )

)
Additional = Array
(
    [0] => Array
        (
            [host] => pair2.php.net
            [type] => A
            [ip] => 216.92.131.5
            [class] => IN
            [ttl] => 6766
        )

    [1] => Array
        (
            [host] => remote1.easydns.com
            [type] => A
            [ip] => 64.39.29.212
            [class] => IN
            [ttl] => 100384
        )

    [2] => Array
        (
            [host] => remote2.easydns.com
            [type] => A
            [ip] => 212.100.224.80
            [class] => IN
            [ttl] => 81241
        )

    [3] => Array
        (
            [host] => ns1.easydns.com
            [type] => A
            [ip] => 216.220.40.243
            [class] => IN
            [ttl] => 81241
        )

    [4] => Array
        (
            [host] => ns2.easydns.com
            [type] => A
            [ip] => 216.220.40.244
            [class] => IN
            [ttl] => 81241
        )

)

注释

Note:

For compatibility with versions before PHP 5.3.0 on some operating systems, try the » PEAR class » Net_DNS.

参见

  • dns_get_mx() - 别名 getmxrr
  • dns_check_record() - 别名 checkdnsrr

dns_get_mx
fsockopen
网络 函数


打开一个网络连接或者一个Unix套接字连接

dns_get_record
gethostbyaddr
网络 函数
PHP Manual

fsockopen

(PHP 4, PHP 5, PHP 7)

fsockopen — 打开一个网络连接或者一个Unix套接字连接

说明

resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] )

初始化一个套接字连接到指定主机（hostname）。

PHP支持以下的套接字传输器类型列表 所支持的套接字传输器（Socket Transports）列表。也可以通过stream_get_transports()来获取套接字传输器支持类型。

默认情况下将以阻塞模式开启套接字连接。当然你可以通过stream_set_blocking()将它转换到非阻塞模式。

stream_socket_client()与之非常相似，而且提供了更加丰富的参数设置，包括非阻塞模式和提供上下文的的设置。

参数

hostname

如果安装了OpenSSL，那么你也许应该在你的主机名地址前面添加访问协议ssl://或者是tls://，从而可以使用基于TCP/IP协议的SSL或者TLS的客户端连接到远程主机。

port

端口号。如果对该参数传一个-1，则表示不使用端口，例如unix://。

errno

如果传入了该参数，holds the system level error number that occurred in the system-level connect() call。

如果errno的返回值为0，而且这个函数的返回值为FALSE，那么这表明该错误发生在套接字连接（connect()）调用之前，导致连接失败的原因最大的可能是初始化套接字的时候发生了错误。

errstr

错误信息将以字符串的信息返回。

timeout

设置连接的时限，单位为秒。

Note:

注意：如果你要对建立在套接字基础上的读写操作设置操作时间设置连接时限，请使用stream_set_timeout()，fsockopen()的连接时限（timeout）的参数仅仅在套接字连接的时候生效。

返回值

fsockopen()将返回一个文件句柄，之后可以被其他文件类函数调用（例如：fgets()，fgetss()，fwrite()，fclose()还有feof()）。如果调用失败，将返回FALSE。

错误／异常

如果主机（hostname）不可访问，将会抛出一个警告级别（E_WARNING）的错误提示。

更新日志

版本 | 说明
4.3.0 | 在win32系统上增加了对时限设置（timeout）参数的支持。
4.3.0 | 在TCP/IP协议的基础上增加了SSL和TLS。

范例

Example #1 fsockopen()的例子

<?php
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: www.example.com\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?>

Example #2 使用UDP连接

下面这个例子展示了怎么样在自己的机器上通过UDP套接字连接（端口号13）来检索日期和时间。

<?php
$fp = fsockopen("udp://127.0.0.1", 13, $errno, $errstr);
if (!$fp) {
    echo "ERROR: $errno - $errstr<br />\n";
} else {
    fwrite($fp, "\n");
    echo fread($fp, 26);
    fclose($fp);
}
?>

注释

Note:

因为环境的不同，某些情况下在Unix套接字连接或者自定义的连接设置连接时限（timeout）可能不会生效。

Warning

UDP套接字有些时候在即使远程主机未知的情况，也能打开，并且不发生任何错误。只有当你通过该套接字进行读写的时候才会发现错误。之所以会这样，是因为UDP是一个"非连接状态"的协议，那么这就意味着当前操作系统直到它（套接字）真正需要发送和接受数据的时候才会去尝试为其去建立连接。

Note: 当指定数值型的 IPv6 地址（例如 fe80::1）时必须用方括号将 IP 围起来——例如， tcp://[fe80::1]:80。

参见

  • pfsockopen() - 打开一个持久的网络连接或者Unix套接字连接。
  • stream_socket_client() - Open Internet or Unix domain socket connection
  • stream_set_blocking() - 为资源流设置阻塞或者阻塞模式
  • stream_set_timeout() - Set timeout period on a stream
  • fgets() - 从文件指针中读取一行
  • fgetss() - 从文件指针中读取一行并过滤掉 HTML 标记
  • fwrite() - 写入文件（可安全用于二进制文件）
  • fclose() - 关闭一个已打开的文件指针
  • feof() - 测试文件指针是否到了文件结束的位置
  • socket_connect() - 开启一个套接字连接
  • The Curl extension

dns_get_record
gethostbyaddr
网络 函数


获取指定的IP地址对应的主机名

fsockopen
gethostbyname
网络 函数
PHP Manual

gethostbyaddr

(PHP 4, PHP 5, PHP 7)

gethostbyaddr — 获取指定的IP地址对应的主机名

说明

string gethostbyaddr ( string $ip_address )

返回指定的IP地址（ip_address）对应的主机名。

参数

ip_address

主机的IP地址。

返回值

成功则返回主机名；失败则原样输出（输出IP地址）；如果输入的格式不正常，则返回FALSE。

范例

Example #1 一个使用 gethostbyaddr() 的简单例子

<?php
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);

echo $hostname;
?>

参见

  • gethostbyname() - Get the IPv4 address corresponding to a given Internet host name
  • gethostbynamel() - Get a list of IPv4 addresses corresponding to a given Internet host name

fsockopen
gethostbyname
网络 函数


Get the IPv4 address corresponding to a given Internet host name

gethostbyaddr
gethostbynamel
网络 函数
PHP Manual

gethostbyname

(PHP 4, PHP 5, PHP 7)

gethostbyname — Get the IPv4 address corresponding to a given Internet host name

说明

string gethostbyname ( string $hostname )

Returns the IPv4 address of the Internet host specified by hostname.

参数

hostname

The host name.

返回值

Returns the IPv4 address or a string containing the unmodified hostname on failure.

范例

Example #1 A simple gethostbyname() example

<?php
$ip = gethostbyname('www.example.com');

echo $ip;
?>

参见

  • gethostbyaddr() - 获取指定的IP地址对应的主机名
  • gethostbynamel() - Get a list of IPv4 addresses corresponding to a given Internet host name
  • inet_pton() - Converts a human readable IP address to its packed in_addr representation
  • inet_ntop() - Converts a packed internet address to a human readable representation

gethostbyaddr
gethostbynamel
网络 函数


Get a list of IPv4 addresses corresponding to a given Internet host name

gethostbyname
gethostname
网络 函数
PHP Manual

gethostbynamel

(PHP 4, PHP 5, PHP 7)

gethostbynamel — Get a list of IPv4 addresses corresponding to a given Internet host name

说明

array gethostbynamel ( string $hostname )

Returns a list of IPv4 addresses to which the Internet host specified by hostname resolves.

参数

hostname

The host name.

返回值

Returns an array of IPv4 addresses or FALSE if hostname could not be resolved.

范例

Example #1 gethostbynamel() example

<?php
$hosts = gethostbynamel('www.example.com');
print_r($hosts);
?>

以上例程会输出：

Array
(
    [0] => 192.0.34.166
)

参见

  • gethostbyname() - Get the IPv4 address corresponding to a given Internet host name
  • gethostbyaddr() - 获取指定的IP地址对应的主机名
  • checkdnsrr() - 给指定的主机（域名）或者IP地址做DNS通信检查
  • getmxrr() - Get MX records corresponding to a given Internet host name
  • the named(8) manual page

gethostbyname
gethostname
网络 函数


Gets the host name

gethostbynamel
getmxrr
网络 函数
PHP Manual

gethostname

(PHP >= 5.3.0)

gethostname — Gets the host name

说明

string gethostname ( void )

gethostname() gets the standard host name for the local machine.

返回值

Returns a string with the hostname on success, otherwise FALSE is returned.

范例

Example #1 A simple gethostname() example

<?php
echo gethostname(); // may output e.g,: sandie

// Or, an option that also works before PHP 5.3
echo php_uname('n'); // may output e.g,: sandie
?>

参见

  • gethostbyname() - Get the IPv4 address corresponding to a given Internet host name
  • gethostbyaddr() - 获取指定的IP地址对应的主机名
  • php_uname() - 返回运行 PHP 的系统的有关信息

gethostbynamel
getmxrr
网络 函数


Get MX records corresponding to a given Internet host name

gethostname
getprotobyname
网络 函数
PHP Manual

getmxrr

(PHP 4, PHP 5, PHP 7)

getmxrr — Get MX records corresponding to a given Internet host name

说明

bool getmxrr ( string $hostname , array &$mxhosts [, array &$weight ] )

Searches DNS for MX records corresponding to hostname.

参数

hostname

The Internet host name.

mxhosts

A list of the MX records found is placed into the array mxhosts.

weight

If the weight array is given, it will be filled with the weight information gathered.

返回值

Returns TRUE if any records are found; returns FALSE if no records were found or if an error occurred.

更新日志

版本 | 说明
5.3.0 | This function is now available on Windows platforms.

注释

Note:

This function should not be used for the purposes of address verification. Only the mailexchangers found in DNS are returned, however, according to » RFC 2821 when no mail exchangers are listed, hostname itself should be used as the only mail exchanger with a priority of 0.

Note:

For compatibility with Windows before this was implemented, then try the » PEAR class » Net_DNS.

参见

  • checkdnsrr() - 给指定的主机（域名）或者IP地址做DNS通信检查
  • dns_get_record() - 获取指定主机的DNS记录
  • gethostbyname() - Get the IPv4 address corresponding to a given Internet host name
  • gethostbynamel() - Get a list of IPv4 addresses corresponding to a given Internet host name
  • gethostbyaddr() - 获取指定的IP地址对应的主机名
  • the named(8) manual page

gethostname
getprotobyname
网络 函数


Get protocol number associated with protocol name

getmxrr
getprotobynumber
网络 函数
PHP Manual

getprotobyname

(PHP 4, PHP 5, PHP 7)

getprotobyname — Get protocol number associated with protocol name

说明

int getprotobyname ( string $name )

getprotobyname() returns the protocol number associated with the protocol name as per /etc/protocols.

参数

name

The protocol name.

返回值

Returns the protocol number, 或者在失败时返回 FALSE.

范例

Example #1 getprotobyname() example

<?php
$protocol = 'tcp';
$get_prot = getprotobyname($protocol);
if ($get_prot === FALSE) {
    echo 'Invalid Protocol';
} else {
    echo 'Protocol #' . $get_prot;
}
?>

参见

  • getprotobynumber() - Get protocol name associated with protocol number

getmxrr
getprotobynumber
网络 函数


Get protocol name associated with protocol number

getprotobyname
getservbyname
网络 函数
PHP Manual

getprotobynumber

(PHP 4, PHP 5, PHP 7)

getprotobynumber — Get protocol name associated with protocol number

说明

string getprotobynumber ( int $number )

getprotobynumber() returns the protocol name associated with protocol number as per /etc/protocols.

参数

number

The protocol number.

返回值

Returns the protocol name as a string, 或者在失败时返回 FALSE.

参见

  • getprotobyname() - Get protocol number associated with protocol name

getprotobyname
getservbyname
网络 函数


Get port number associated with an Internet service and protocol

getprotobynumber
getservbyport
网络 函数
PHP Manual

getservbyname

(PHP 4, PHP 5, PHP 7)

getservbyname — Get port number associated with an Internet service and protocol

说明

int getservbyname ( string $service , string $protocol )

getservbyname() returns the Internet port which corresponds to service for the specified protocol as per /etc/services.

参数

service

The Internet service name, as a string.

protocol

protocol is either "tcp" or "udp" (in lowercase).

返回值

Returns the port number, or FALSE if service or protocol is not found.

范例

Example #1 getservbyname() example

<?php
$services = array('http', 'ftp', 'ssh', 'telnet', 'imap',
'smtp', 'nicname', 'gopher', 'finger', 'pop3', 'www');

foreach ($services as $service) {
    $port = getservbyname($service, 'tcp');
    echo $service . ": " . $port . "<br />\n";
}
?>

参见

  • getservbyport() - Get Internet service which corresponds to port and protocol
  • » http://www.iana.org/assignments/port-numbers for a complete list of port numbers.

getprotobynumber
getservbyport
网络 函数


Get Internet service which corresponds to port and protocol

getservbyname
header_register_callback
网络 函数
PHP Manual

getservbyport

(PHP 4, PHP 5, PHP 7)

getservbyport — Get Internet service which corresponds to port and protocol

说明

string getservbyport ( int $port , string $protocol )

getservbyport() returns the Internet service associated with port for the specified protocol as per /etc/services.

参数

port

The port number.

protocol

protocol is either "tcp" or "udp" (in lowercase).

返回值

Returns the Internet service name as a string.

参见

  • getservbyname() - Get port number associated with an Internet service and protocol

getservbyname
header_register_callback
网络 函数


Call a header function

getservbyport
header_remove
网络 函数
PHP Manual

header_register_callback

(PHP 5 >= 5.4.0, PHP 7)

header_register_callback — Call a header function

说明

bool header_register_callback ( callable $callback )

Registers a function that will be called when PHP starts sending output.

The callback is executed just after PHP prepares all headers to be sent, and before any other output is sent, creating a window to manipulate the outgoing headers before being sent.

参数

callback

Function called just before the headers are sent. It gets no parameters and the return value is ignored.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 header_register_callback() example

<?php

header('Content-Type: text/plain');
header('X-Test: foo');

function foo() {
 foreach (headers_list() as $header) {
   if (strpos($header, 'X-Powered-By:') !== false) {
     header_remove('X-Powered-By');
   }
   header_remove('X-Test');
 }
}

$result = header_register_callback('foo');
echo "a";
?>

以上例程的输出类似于：

Content-Type: text/plain

a

注释

header_register_callback() is executed just as the headers are about to be sent out, so any output from this function can break output.

Note:

数据头只会在SAPI支持时得到处理和输出。

参见

  • headers_list() - Returns a list of response headers sent (or ready to send)
  • header_remove() - Remove previously set headers
  • header() - 发送原生 HTTP 头
getservbyport
header_remove
网络 函数


Remove previously set headers

header_register_callback
header
网络 函数
PHP Manual

header_remove

(PHP 5 >= 5.3.0, PHP 7)

header_remove — Remove previously set headers

说明

void header_remove ([ string $name ] )

Removes an HTTP header previously set using header().

参数

name

The header name to be removed.

Note: This parameter is case-insensitive.

返回值

没有返回值。

范例

Example #1 Unsetting specific header.

<?php
header("X-Foo: Bar");
header("X-Bar: Baz");
header_remove("X-Foo");
?>

以上例程的输出类似于：

X-Bar: Baz

Example #2 Unsetting all previously set headers.

<?php
header("X-Foo: Bar");
header("X-Bar: Baz");
header_remove();
?>

以上例程的输出类似于：

注释

Caution

    This function will remove all headers set by PHP,
    including cookies, session and the X-Powered-By headers.

Note:

 数据头只会在SAPI支持时得到处理和输出。

参见

  • header() - 发送原生 HTTP 头
    •

  • headers_sent() - Checks if or where headers have been sent
    •

header_register_callback

header

网络 函数


发送原生 HTTP 头

header_remove
headers_list
网络 函数
PHP Manual

header

(PHP 4, PHP 5, PHP 7)

header — 发送原生 HTTP 头

说明

void header ( string $string [, bool $replace = true [, int $http_response_code ]] )

header() 用于发送原生的 HTTP 头。关于 HTTP 头的更多信息请参考 » HTTP/1.1 specification。

请注意 header() 必须在任何实际输出之前调用，不管是普通的 HTML 标签，还是文件或 PHP 输出的空行，空格。这是个常见的错误，在通过include，require，或者其访问其他文件里面的函数的时候，如果在header()被调用之前，其中有空格或者空行。 同样的问题也存在于单独的 PHP/HTML 文件中。

<html>
<?php
/* This will give an error. Note the output
 * above, which is before the header() call */
header('Location: http://www.example.com/');
exit;
?>

参数

string

头字符串。

有两种特别的头。第一种以"HTTP/"开头的 (case is not significant)，将会被用来计算出将要发送的HTTP状态码。 例如在 Apache 服务器上用 PHP 脚本来处理不存在文件的请求（使用 ErrorDocument 指令）， 就会希望脚本响应了正确的状态码。

<?php
header("HTTP/1.0 404 Not Found");
?>

第二种特殊情况是"Location:"的头信息。它不仅把报文发送给浏览器，而且还将返回给浏览器一个 REDIRECT（302）的状态码，除非状态码已经事先被设置为了201或者3xx。

<?php
header("Location: http://www.example.com/"); /* Redirect browser */

/* Make sure that code below does not get executed when we redirect. */
exit;
?>

replace

可选参数 replace 表明是否用后面的头替换前面相同类型的头。 默认情况下会替换。如果传入 FALSE，就可以强制使相同的头信息并存。例如：

<?php
header('WWW-Authenticate: Negotiate');
header('WWW-Authenticate: NTLM', false);
?>

http_response_code

强制指定HTTP响应的值。注意，这个参数只有在报文字符串（string）不为空的情况下才有效。

返回值

没有返回值。

更新日志

版本 | 说明
5.1.2 | 这个函数现在可以一次性阻止多个报文信息的发送，从而作为对报文信息注入攻击的一种防护。

范例

Example #1 下载对话框

如果你想提醒用户去保存你发送的数据，例如保存一个生成的PDF文件。你可以使用» Content-Disposition的报文信息来提供一个推荐的文件名，并且强制浏览器显示一个文件下载的对话框。

<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('original.pdf');
?>

Example #2 缓存指令

PHP脚本总是会生成一些动态内容，而这些内容是不应该被缓存的，不管是客户端浏览器还是在服务器端和客户端浏览器之间的任何代理。我们可以像这样来强制设置浏览器和各个代理层不缓存数据：

<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>

Note:

也许你会遇到这样的情况，那就是即使你没使用上面这段代码，你的页面也没有被缓存。大多数情况是因为用户可以自己设置他们的浏览器从而改变浏览器默认的缓存行为。一旦发送了上面这段报文信息，那么你就应该重写那些可能用到缓存了的代码。

此外，在启用session的情况下，session_cache_limiter()和session.cache_limiter的配置可以用来自动地生成正确的缓存相关的头信息。

注释

Note:

数据头只会在SAPI支持时得到处理和输出。

Note:

你所有需要输出到浏览器的数据将会一直缓存在服务器端，直到你发送他们，这将造成比较大的资源开销。你可以是用输出缓冲来避开这个问题。你可以通过在脚本里使用ob_start()和ob_end_flush()或者直接在你的php.ini文件里设置output_buffering，也可以直接在服务器的配置文件里设置。

Note:

HTTP状态信息的报文永远都是最新被发送到客户端的，而不管header()是否是在最先发送的。报文状态码可能会被重写，当调用header()来设定新的状态码，除非HTTP报文已经被发送了。

Note:

在IE 4.01和IE 5.5里有bug，要解决就升级浏览器吧，想必也没人用那么远古的神器了吧。

Note: 如果安全模式（safe mode）被激活，那么脚本的uid将会被添加到WWW-Authenticate的realm部分，前提是你设置了这个头信息的情况下（使用 HTTP 认证）。

Note:

HTTP/1.1需要一个绝对的网络资源地址（URI）来作为一个参数供» Location:使用，在其中必须包含了协议，主机地址还有完整的路径，但是一些客户端可以接受相对的网络资源地址。你可以在一个相对的网路资源地址的基础上使用$_SERVER['HTTP_HOST']，$_SERVER['PHP_SELF']和dirname()来组装一个绝对的网路资源地址。

<?php
/* Redirect to a different page in the current directory that was requested */
$host  = $_SERVER['HTTP_HOST'];
$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'mypage.php';
header("Location: http://$host$uri/$extra");
exit;
?>

Note:

在执行Location header跳转的时候，Session ID无法通传递的，即使session.use_trans_sid是激活状态的。只能通过手动传递using SID的值来实现。

参见

  • headers_sent() - Checks if or where headers have been sent
  • setcookie() - Send a cookie
  • http_response_code() - Get or Set the HTTP response code
  • The section on HTTP authentication

header_remove
headers_list
网络 函数


Returns a list of response headers sent (or ready to send)

header
headers_sent
网络 函数
PHP Manual

headers_list

(PHP 5, PHP 7)

headers_list — Returns a list of response headers sent (or ready to send)

说明

array headers_list ( void )

headers_list() will return a list of headers to be sent to the browser / client. To determine whether or not these headers have been sent yet, use headers_sent().

返回值

Returns a numerically indexed array of headers.

范例

Example #1 Examples using headers_list()

<?php

/* setcookie() will add a response header on its own */
setcookie('foo', 'bar');

/* Define a custom response header
   This will be ignored by most clients */
header("X-Sample-Test: foo");

/* Specify plain text content in our response */
header('Content-type: text/plain');

/* What headers are going to be sent? */
var_dump(headers_list());

?>

以上例程会输出：

array(4) {
  [0]=>
  string(23) "X-Powered-By: PHP/5.1.3"
  [1]=>
  string(19) "Set-Cookie: foo=bar"
  [2]=>
  string(18) "X-Sample-Test: foo"
  [3]=>
  string(24) "Content-type: text/plain"
}

注释

Note:

数据头只会在SAPI支持时得到处理和输出。

参见

  • headers_sent() - Checks if or where headers have been sent
  • header() - 发送原生 HTTP 头
  • setcookie() - Send a cookie
  • apache_response_headers() - 获得全部 HTTP 响应头信息
  • http_response_code() - Get or Set the HTTP response code

header
headers_sent
网络 函数


Checks if or where headers have been sent

headers_list
http_response_code
网络 函数
PHP Manual

headers_sent

(PHP 4, PHP 5, PHP 7)

headers_sent — Checks if or where headers have been sent

说明

bool headers_sent ([ string &$file [, int &$line ]] )

Checks if or where headers have been sent.

You can't add any more header lines using the header() function once the header block has already been sent. Using this function you can at least prevent getting HTTP header related error messages. Another option is to use Output Buffering.

参数

file

If the optional file and line parameters are set, headers_sent() will put the PHP source file name and line number where output started in the file and line variables.

line

The line number where the output started.

返回值

headers_sent() will return FALSE if no HTTP headers have already been sent or TRUE otherwise.

范例

Example #1 Examples using headers_sent()

<?php

// If no headers are sent, send one
if (!headers_sent()) {
    header('Location: http://www.example.com/');
    exit;
}

// An example using the optional file and line parameters
// Note that $filename and $linenum are passed in for later use.
// Do not assign them values beforehand.
if (!headers_sent($filename, $linenum)) {
    header('Location: http://www.example.com/');
    exit;

// You would most likely trigger an error here.
} else {

    echo "Headers already sent in $filename on line $linenum\n" .
          "Cannot redirect, for now please click this <a " .
          "href=\"http://www.example.com\">link</a> instead\n";
    exit;
}

?>

注释

Note:

数据头只会在SAPI支持时得到处理和输出。

参见

  • ob_start() - 打开输出控制缓冲
  • trigger_error() - 产生一个用户级别的 error/warning/notice 信息
  • headers_list() - Returns a list of response headers sent (or ready to send)
  • header() - 发送原生 HTTP 头 for a more detailed discussion of the matters involved.

headers_list
http_response_code
网络 函数


Get or Set the HTTP response code

headers_sent
inet_ntop
网络 函数
PHP Manual

http_response_code

(PHP 5 >= 5.4.0, PHP 7)

http_response_code — Get or Set the HTTP response code

说明

mixed http_response_code ([ int $response_code ] )

Gets or sets the HTTP response status code.

参数

response_code

The optional response_code will set the response code.

返回值

If response_code is provided, then the previous status code will be returned. If response_code is not provided, then the current status code will be returned. Both of these values will default to a 200 status code if used in a web server environment.

FALSE will be returned if response_code is not provided and it is not invoked in a web server environment (such as from a CLI application). TRUE will be returned if response_code is provided and it is not invoked in a web server environment (but only when no previous response status has been set).

范例

Example #1 Using http_response_code() in a web server environment

<?php

// Get the current response code and set a new one
var_dump(http_response_code(404));

// Get the new response code
var_dump(http_response_code());
?>

以上例程会输出：

int(200)
int(404)

Example #2 Using http_response_code() in a CLI environment

<?php

// Get the current default response code
var_dump(http_response_code());

// Set a response code
var_dump(http_response_code(201));

// Get the new response code
var_dump(http_response_code());
?>

以上例程会输出：

bool(false)
bool(true)
int(201)

参见

  • header() - 发送原生 HTTP 头
  • headers_list() - Returns a list of response headers sent (or ready to send)

headers_sent
inet_ntop
网络 函数


Converts a packed internet address to a human readable representation

http_response_code
inet_pton
网络 函数
PHP Manual

inet_ntop

(PHP 5 >= 5.1.0, PHP 7)

inet_ntop — Converts a packed internet address to a human readable representation

说明

string inet_ntop ( string $in_addr )

This function converts a 32bit IPv4, or 128bit IPv6 address (if PHP was built with IPv6 support enabled) into an address family appropriate string representation.

参数

in_addr

A 32bit IPv4, or 128bit IPv6 address.

返回值

Returns a string representation of the address 或者在失败时返回 FALSE.

范例

Example #1 inet_ntop() Example

<?php
$packed = chr(127) . chr(0) . chr(0) . chr(1);
$expanded = inet_ntop($packed);

/* Outputs: 127.0.0.1 */
echo $expanded;

$packed = str_repeat(chr(0), 15) . chr(1);
$expanded = inet_ntop($packed);

/* Outputs: ::1 */
echo $expanded;
?>

更新日志

版本 | 说明
5.3.0 | This function is now available on Windows platforms.

参见

  • long2ip() - Converts an long integer address into a string in (IPv4) Internet standard dotted format
  • ip2long() - 将一个IPV4的字符串互联网协议转换成数字格式
  • inet_pton() - Converts a human readable IP address to its packed in_addr representation

http_response_code
inet_pton
网络 函数


Converts a human readable IP address to its packed in_addr representation

inet_ntop
ip2long
网络 函数
PHP Manual

inet_pton

(PHP 5 >= 5.1.0, PHP 7)

inet_pton — Converts a human readable IP address to its packed in_addr representation

说明

string inet_pton ( string $address )

This function converts a human readable IPv4 or IPv6 address (if PHP was built with IPv6 support enabled) into an address family appropriate 32bit or 128bit binary structure.

参数

address

A human readable IPv4 or IPv6 address.

返回值

Returns the in_addr representation of the given address, or FALSE if a syntactically invalid address is given (for example, an IPv4 address without dots or an IPv6 address without colons).

范例

Example #1 inet_pton() Example

<?php
$in_addr = inet_pton('127.0.0.1');

$in6_addr = inet_pton('::1');
?>

更新日志

版本 | 说明
5.3.0 | This function is now available on Windows platforms.

参见

  • ip2long() - 将一个IPV4的字符串互联网协议转换成数字格式
  • long2ip() - Converts an long integer address into a string in (IPv4) Internet standard dotted format
  • inet_ntop() - Converts a packed internet address to a human readable representation

inet_ntop
ip2long
网络 函数


将一个IPV4的字符串互联网协议转换成数字格式

inet_pton
long2ip
网络 函数
PHP Manual

ip2long

(PHP 4, PHP 5, PHP 7)

ip2long — 将一个IPV4的字符串互联网协议转换成数字格式

说明

int ip2long ( string $ip_address )

方法ip2long() 产生一个IPV4的互联网地址从互联网标准的格式(点字符串)表示。

ip2long() 还可以与非完整IP进行工作。 阅读 » http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/libs/commtrf2/inet_addr.htm 获得更多信息。

参数

ip_address

一个标准格式的地址。

返回值

返回IP地址转换后的数字 或 FALSE 如果 ip_address 是无效的。

更新日志

版本 | 说明
5.2.10 | 再此之前的版本, ip2long() 有时会返回即使这不是一个IPV4的标准地址的数字地址。

范例

Example #1 ip2long() 例子

<?php
$ip = gethostbyname('www.example.com');
$out = "The following URLs are equivalent:<br />\n";
$out .= 'http://www.example.com/, http://' . $ip . '/, and http://' . sprintf("%u", ip2long($ip)) . "/<br />\n";
echo $out;
?>

Example #2 显示IP地址

第二个例子说明打印一个转换后的地址使用 printf() 在PHP4和PHP5的功能:

<?php
$ip   = gethostbyname('www.example.com');
$long = ip2long($ip);

if ($long == -1 || $long === FALSE) {
    echo 'Invalid IP, please try again';
} else {
    echo $ip   . "\n";           // 192.0.34.166
    echo $long . "\n";           // -1073732954
    printf("%u\n", ip2long($ip)); // 3221234342
}
?>

注释

Note:

因为PHP的 integer 类型是有符号，并且有许多的IP地址讲导致在32位系统的情况下为复数， 你需要使用 "%u" 进行转换通过 sprintf() 或 printf() 得到的字符串来表示无符号的IP地址。

Note:

ip2long() 将返回 FALSE 在IP是 255.255.255.255 的情况，版本为 PHP 5 <= 5.0.2. 在修复后 PHP 5.0.3 会返回 -1 (与PHP4相同).

参见

  • long2ip() - Converts an long integer address into a string in (IPv4) Internet standard dotted format
  • sprintf() - Return a formatted string

inet_pton
long2ip
网络 函数


Converts an long integer address into a string in (IPv4) Internet standard dotted format

ip2long
openlog
网络 函数
PHP Manual

long2ip

(PHP 4, PHP 5, PHP 7)

long2ip — Converts an long integer address into a string in (IPv4) Internet standard dotted format

说明

string long2ip ( string $proper_address )

The function long2ip() generates an Internet address in dotted format (i.e.: aaa.bbb.ccc.ddd) from the long integer representation.

参数

proper_address

A proper address representation in long integer.

返回值

Returns the Internet IP address as a string.

参见

  • ip2long() - 将一个IPV4的字符串互联网协议转换成数字格式

ip2long
openlog
网络 函数


Open connection to system logger

long2ip
pfsockopen
网络 函数
PHP Manual

openlog

(PHP 4, PHP 5, PHP 7)

openlog — Open connection to system logger

说明

bool openlog ( string $ident , int $option , int $facility )

openlog() opens a connection to the system logger for a program.

The use of openlog() is optional. It will automatically be called by syslog() if necessary, in which case ident will default to FALSE.

参数

ident

The string ident is added to each message.

option

The option argument is used to indicate what logging options will be used when generating a log message.

openlog() Options
Constant | Description
LOG_CONS | if there is an error while sending data to the system logger, write directly to the system console
LOG_NDELAY | open the connection to the logger immediately
LOG_ODELAY | (default) delay opening the connection until the first message is logged
LOG_PERROR | print log message also to standard error
LOG_PID | include PID with each message
You can use one or more of this options. When using multiple options you need to OR them, i.e. to open the connection immediately, write to the console and include the PID in each message, you will use: LOG_CONS | LOG_NDELAY | LOG_PID

facility

The facility argument is used to specify what type of program is logging the message. This allows you to specify (in your machine's syslog configuration) how messages coming from different facilities will be handled.

openlog() Facilities
Constant | Description
LOG_AUTH | security/authorization messages (use LOG_AUTHPRIV instead in systems where that constant is defined)
LOG_AUTHPRIV | security/authorization messages (private)
LOG_CRON | clock daemon (cron and at)
LOG_DAEMON | other system daemons
LOG_KERN | kernel messages
LOG_LOCAL0 ... LOG_LOCAL7 | reserved for local use, these are not available in Windows
LOG_LPR | line printer subsystem
LOG_MAIL | mail subsystem
LOG_NEWS | USENET news subsystem
LOG_SYSLOG | messages generated internally by syslogd
LOG_USER | generic user-level messages
LOG_UUCP | UUCP subsystem

Note:

LOG_USER is the only valid log type under Windows operating systems

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • syslog() - Generate a system log message
  • closelog() - 关闭系统日志链接

long2ip
pfsockopen
网络 函数


打开一个持久的网络连接或者Unix套接字连接。

openlog
setcookie
网络 函数
PHP Manual

pfsockopen

(PHP 4, PHP 5, PHP 7)

pfsockopen — 打开一个持久的网络连接或者Unix套接字连接。

说明

resource pfsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] )

这个函数的作用与fsockopen()完全一样的，不同的地方在于当在脚本执行完后，连接一直不会关闭。可以说它是fsockopen()的长连接版本。

参数

对于其参数的信息，请参考fsockopen()的文档。

参见

  • fsockopen() - 打开一个网络连接或者一个Unix套接字连接

openlog
setcookie
网络 函数


Send a cookie

pfsockopen
setrawcookie
网络 函数
PHP Manual

setcookie

(PHP 4, PHP 5, PHP 7)

setcookie — Send a cookie

说明

bool setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )

setcookie() defines a cookie to be sent along with the rest of the HTTP headers. Like other headers, cookies must be sent before any output from your script (this is a protocol restriction). This requires that you place calls to this function prior to any output, including <html> and <head> tags as well as any whitespace.

Once the cookies have been set, they can be accessed on the next page load with the $_COOKIE array. Cookie values may also exist in $_REQUEST.

参数

» RFC 6265 provides the normative reference on how each setcookie() parameter is interpreted.

name

The name of the cookie.

value

The value of the cookie. This value is stored on the clients computer; do not store sensitive information. Assuming the name is 'cookiename', this value is retrieved through $_COOKIE['cookiename']

expire

The time the cookie expires. This is a Unix timestamp so is in number of seconds since the epoch. In other words, you'll most likely set this with the time() function plus the number of seconds before you want it to expire. Or you might use mktime(). time()+60*60*24*30 will set the cookie to expire in 30 days. If set to 0, or omitted, the cookie will expire at the end of the session (when the browser closes).

Note:

You may notice the expire parameter takes on a Unix timestamp, as opposed to the date format Wdy, DD-Mon-YYYY HH:MM:SS GMT, this is because PHP does this conversion internally.

path

The path on the server in which the cookie will be available on. If set to '/', the cookie will be available within the entire domain. If set to '/foo/', the cookie will only be available within the /foo/ directory and all sub-directories such as /foo/bar/ of domain. The default value is the current directory that the cookie is being set in.

domain

The (sub)domain that the cookie is available to. Setting this to a subdomain (such as 'www.example.com') will make the cookie available to that subdomain and all other sub-domains of it (i.e. w2.www.example.com). To make the cookie available to the whole domain (including all subdomains of it), simply set the value to the domain name ('example.com', in this case).

Older browsers still implementing the deprecated » RFC 2109 may require a leading . to match all subdomains.

secure

Indicates that the cookie should only be transmitted over a secure HTTPS connection from the client. When set to TRUE, the cookie will only be set if a secure connection exists. On the server-side, it's on the programmer to send this kind of cookie only on secure connection (e.g. with respect to $_SERVER["HTTPS"]).

httponly

When TRUE the cookie will be made accessible only through the HTTP protocol. This means that the cookie won't be accessible by scripting languages, such as JavaScript. It has been suggested that this setting can effectively help to reduce identity theft through XSS attacks (although it is not supported by all browsers), but that claim is often disputed. Added in PHP 5.2.0. TRUE or FALSE

返回值

If output exists prior to calling this function, setcookie() will fail and return FALSE. If setcookie() successfully runs, it will return TRUE. This does not indicate whether the user accepted the cookie.

范例

Some examples follow how to send cookies:

Example #1 setcookie() send example

<?php
$value = 'something from somewhere';

setcookie("TestCookie", $value);
setcookie("TestCookie", $value, time()+3600);  /* expire in 1 hour */
setcookie("TestCookie", $value, time()+3600, "/~rasmus/", "example.com", 1);
?>

Note that the value portion of the cookie will automatically be urlencoded when you send the cookie, and when it is received, it is automatically decoded and assigned to a variable by the same name as the cookie name. If you don't want this, you can use setrawcookie() instead if you are using PHP 5. To see the contents of our test cookie in a script, simply use one of the following examples:

<?php
// Print an individual cookie
echo $_COOKIE["TestCookie"];

// Another way to debug/test is to view all cookies
print_r($_COOKIE);
?>

Example #2 setcookie() delete example

When deleting a cookie you should assure that the expiration date is in the past, to trigger the removal mechanism in your browser. Examples follow how to delete cookies sent in previous example:

<?php
// set the expiration date to one hour ago
setcookie("TestCookie", "", time() - 3600);
setcookie("TestCookie", "", time() - 3600, "/~rasmus/", "example.com", 1);
?>

Example #3 setcookie() and arrays

You may also set array cookies by using array notation in the cookie name. This has the effect of setting as many cookies as you have array elements, but when the cookie is received by your script, the values are all placed in an array with the cookie's name:

<?php
// set the cookies
setcookie("cookie[three]", "cookiethree");
setcookie("cookie[two]", "cookietwo");
setcookie("cookie[one]", "cookieone");

// after the page reloads, print them out
if (isset($_COOKIE['cookie'])) {
    foreach ($_COOKIE['cookie'] as $name => $value) {
        $name = htmlspecialchars($name);
        $value = htmlspecialchars($value);
        echo "$name : $value <br />\n";
    }
}
?>

以上例程会输出：

three : cookiethree
two : cookietwo
one : cookieone

更新日志

版本 | 说明
5.5.0 | A Max-Age attribute is now included in the Set-Cookie header sent to the client.
5.2.0 | The httponly parameter was added.

注释

Note:

You can use output buffering to send output prior to the call of this function, with the overhead of all of your output to the browser being buffered in the server until you send it. You can do this by calling ob_start() and ob_end_flush() in your script, or setting the output_buffering configuration directive on in your php.ini or server configuration files.

Note:

If the PHP directive register_globals is set to on then cookie values will also be made into variables. In our examples below, $TestCookie will exist. It's recommended to use $_COOKIE.

Common Pitfalls:

  • Cookies will not become visible until the next loading of a page that the cookie should be visible for. To test if a cookie was successfully set, check for the cookie on a next loading page before the cookie expires. Expire time is set via the expire parameter. A nice way to debug the existence of cookies is by simply calling print_r($_COOKIE);.
  • Cookies must be deleted with the same parameters as they were set with. If the value argument is an empty string, or FALSE, and all other arguments match a previous call to setcookie, then the cookie with the specified name will be deleted from the remote client. This is internally achieved by setting value to 'deleted' and expiration time to one year in past.
  • Because setting a cookie with a value of FALSE will try to delete the cookie, you should not use boolean values. Instead, use 0 for FALSE and 1 for TRUE.
  • Cookies names can be set as array names and will be available to your PHP scripts as arrays but separate cookies are stored on the user's system. Consider explode() to set one cookie with multiple names and values. It is not recommended to use serialize() for this purpose, because it can result in security holes.

Multiple calls to setcookie() are performed in the order called.

参见

  • header() - 发送原生 HTTP 头
  • setrawcookie() - Send a cookie without urlencoding the cookie value
  • cookies section
  • » RFC 6265
  • » RFC 2109

pfsockopen
setrawcookie
网络 函数


Send a cookie without urlencoding the cookie value

setcookie
socket_get_status
网络 函数
PHP Manual

setrawcookie

(PHP 5, PHP 7)

setrawcookie — Send a cookie without urlencoding the cookie value

说明

bool setrawcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )

setrawcookie() is exactly the same as setcookie() except that the cookie value will not be automatically urlencoded when sent to the browser.

参数

For parameter information, see the setcookie() documentation.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.5.0 | A Max-Age attribute is now included in the Set-Cookie header sent to the client.
5.2.0 | The httponly parameter was added.

参见

  • setcookie() - Send a cookie

setcookie
socket_get_status
网络 函数


别名 stream_get_meta_data

setrawcookie
socket_set_blocking
网络 函数
PHP Manual

socket_get_status

(PHP 4, PHP 5, PHP 7)

socket_get_status — 别名 stream_get_meta_data()

说明

此函数是该函数的别名： stream_get_meta_data().

setrawcookie
socket_set_blocking
网络 函数


别名 stream_set_blocking

socket_get_status
socket_set_timeout
网络 函数
PHP Manual

socket_set_blocking

(PHP 4, PHP 5, PHP 7)

socket_set_blocking — 别名 stream_set_blocking()

说明

此函数是该函数的别名： stream_set_blocking().

socket_get_status
socket_set_timeout
网络 函数


别名 stream_set_timeout

socket_set_blocking
syslog
网络 函数
PHP Manual

socket_set_timeout

(PHP 4, PHP 5, PHP 7)

socket_set_timeout — 别名 stream_set_timeout()

说明

此函数是该函数的别名： stream_set_timeout().

socket_set_blocking
syslog
网络 函数


Generate a system log message

socket_set_timeout
RRD
网络 函数
PHP Manual

syslog

(PHP 4, PHP 5, PHP 7)

syslog — Generate a system log message

说明

bool syslog ( int $priority , string $message )

syslog() generates a log message that will be distributed by the system logger.

For information on setting up a user defined log handler, see the syslog.conf (5) Unix manual page. More information on the syslog facilities and option can be found in the man pages for syslog (3) on Unix machines.

参数

priority

priority is a combination of the facility and the level. Possible values are:

syslog() Priorities (in descending order)
Constant | Description
LOG_EMERG | system is unusable
LOG_ALERT | action must be taken immediately
LOG_CRIT | critical conditions
LOG_ERR | error conditions
LOG_WARNING | warning conditions
LOG_NOTICE | normal, but significant, condition
LOG_INFO | informational message
LOG_DEBUG | debug-level message

message

The message to send, except that the two characters %m will be replaced by the error message string (strerror) corresponding to the present value of errno.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Using syslog()

<?php
// open syslog, include the process ID and also send
// the log to standard error, and use a user defined
// logging mechanism
openlog("myScriptLog", LOG_PID | LOG_PERROR, LOG_LOCAL0);

// some code

if (authorized_client()) {
    // do something
} else {
    // unauthorized client!
    // log the attempt
    $access = date("Y/m/d H:i:s");
    syslog(LOG_WARNING, "Unauthorized client: $access {$_SERVER['REMOTE_ADDR']} ({$_SERVER['HTTP_USER_AGENT']})");
}

closelog();
?>

注释

On Windows NT, the syslog service is emulated using the Event Log.

Note:

Use of LOG_LOCAL0 through LOG_LOCAL7 for the facility parameter of openlog() is not available in Windows.

参见

  • openlog() - Open connection to system logger
  • closelog() - 关闭系统日志链接

socket_set_timeout
RRD
网络 函数


RRDtool

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Procedural PECL/rrd example
    • OOP PECL/rrd example
  • RRD 函数
    • rrd_create — Creates rrd database file
    • rrd_error — Gets latest error message.
    • rrd_fetch — Fetch the data for graph as array.
    • rrd_first — Gets the timestamp of the first sample from rrd file.
    • rrd_graph — Creates image from a data.
    • rrd_info — Gets information about rrd file
    • rrd_last — Gets unix timestamp of the last sample.
    • rrd_lastupdate — Gets information about last updated data.
    • rrd_restore — Restores the RRD file from XML dump.
    • rrd_tune — Tunes some RRD database file header options.
    • rrd_update — Updates the RRD database.
    • rrd_version — Gets information about underlying rrdtool library
    • rrd_xport — Exports the information about RRD database.
    • rrdc_disconnect — Close any outstanding connection to rrd caching daemon
  • RRDCreator — The RRDCreator class
    • RRDCreator::addArchive — Adds RRA - archive of data values for each data source.
    • RRDCreator::addDataSource — Adds data source definition for RRD database.
    • RRDCreator::__construct — Creates new RRDCreator instance
    • RRDCreator::save — Saves the RRD database to a file
  • RRDGraph — The RRDGraph class
    • RRDGraph::__construct — Creates new RRDGraph instance
    • RRDGraph::save — Saves the result of query into image
    • RRDGraph::saveVerbose — Saves the RRD database query into image and returns the verbose information about generated graph.
    • RRDGraph::setOptions — Sets the options for rrd graph export
  • RRDUpdater — The RRDUpdater class
    • RRDUpdater::__construct — Creates new RRDUpdater instance
    • RRDUpdater::update — Update the RRD database file
syslog
简介
其它服务


简介

The PECL/rrd extension provides bindings to the RRDtool C library. RRDtool is the open source industry standard, high performance data logging and graphing system for time series data.

The RRDtool homepage is » http://www.mrtg.org/rrdtool/.

RRD
安装／配置
RRD


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
RRD


需求

You need to install librrd first to be able to use PECL/rrd. Most common option is using of librrd-dev package from your favourite linux distro. PECL/rrd is tested with librrd 1.4.3, older or newer versions might or might not work for you. PECL/rrd installation is tested with PHP 5.3.2 or newer.

Warning

Librrd and hence extension itself aren't mostly thread safe. There are many global and shared states in librrd. It can be dangerous use this extension in multi threaded environments like Apache2 mpm worker. If there are many parallel requests, one request can change some global librrd state of other runnig requests.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/rrd.

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
范例
RRD


范例

Table of Contents

  • Procedural PECL/rrd example
  • OOP PECL/rrd example
预定义常量
Procedural PECL/rrd example
RRD


Procedural PECL/rrd example

Example #1 Procedural usage of rrd

<?php
$rrdFile = dirname(__FILE__) . "/speed.rrd";

//create rrd file
rrd_create($rrdFile,
 array(
  "--start",920804400,
  "DS:speed:COUNTER:600:U:U",
  "RRA:AVERAGE:0.5:1:24",
  "RRA:AVERAGE:0.5:6:10"
  )
);

//update rrd file
rrd_update($rrdFile,
 array(
  "920804700:12345",
  "920805000:12357"
  )
);

//graph output
rrd_graph(dirname(__FILE__) . "/speed.png",
 array(
  "--start", "920804400",
  "--end", "920808000",
  "--vertical-label", "m/s",
  "DEF:myspeed=$rrdFile:speed:AVERAGE",
  "CDEF:realspeed=myspeed,1000,*",
  "LINE2:realspeed#FF0000"
 )
);
?>

范例
OOP PECL/rrd example
范例


OOP PECL/rrd example

Example #1 OO usage of rrd

<?php
$rrdFile = dirname(__FILE__) . "/speed.rrd";
$outputPngFile = dirname(__FILE__) . "/speed.png";

$creator = new RRDCreator($rrdFile, "now -10d", 500);
$creator->addDataSource("speed:COUNTER:600:U:U");
$creator->addArchive("AVERAGE:0.5:1:24");
$creator->addArchive("AVERAGE:0.5:6:10");
$creator->save();

$updater = new RRDUpdater($rrdFile);
$updater->update(array("speed" => "12345"), "920804700");
$updater->update(array("speed" => "12357"), "920805000");

$graphObj = new RRDGraph($outputPngFile);
$graphObj->setOptions(
    array(
        "--start" => "920804400",
        "--end" => 920808000,
        "--vertical-label" => "m/s",
        "DEF:myspeed=$rrdFile:speed:AVERAGE",
        "CDEF:realspeed=myspeed,1000,*",
        "LINE2:realspeed#FF0000"
    )
);
$graphObj->save();
?>

Procedural PECL/rrd example
RRD 函数
范例


RRD 函数

Table of Contents

  • rrd_create — Creates rrd database file
  • rrd_error — Gets latest error message.
  • rrd_fetch — Fetch the data for graph as array.
  • rrd_first — Gets the timestamp of the first sample from rrd file.
  • rrd_graph — Creates image from a data.
  • rrd_info — Gets information about rrd file
  • rrd_last — Gets unix timestamp of the last sample.
  • rrd_lastupdate — Gets information about last updated data.
  • rrd_restore — Restores the RRD file from XML dump.
  • rrd_tune — Tunes some RRD database file header options.
  • rrd_update — Updates the RRD database.
  • rrd_version — Gets information about underlying rrdtool library
  • rrd_xport — Exports the information about RRD database.
  • rrdc_disconnect — Close any outstanding connection to rrd caching daemon
OOP PECL/rrd example
rrd_create
RRD


Creates rrd database file

RRD 函数
rrd_error
RRD 函数
PHP Manual

rrd_create

(PECL rrd >= 0.9.0)

rrd_create — Creates rrd database file

说明

bool rrd_create ( string $filename , array $options )

Creates the rdd database file.

参数

filename

Filename for newly created rrd file.

options

Options for rrd create - list of strings. See man page of rrd create for whole list of options.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

RRD 函数
rrd_error
RRD 函数


Gets latest error message.

rrd_create
rrd_fetch
RRD 函数
PHP Manual

rrd_error

(PECL rrd >= 0.9.0)

rrd_error — Gets latest error message.

说明

string rrd_error ( void )

Returns latest global rrd error message.

参数

此函数没有参数。

返回值

Latest error message.

rrd_create
rrd_fetch
RRD 函数


Fetch the data for graph as array.

rrd_error
rrd_first
RRD 函数
PHP Manual

rrd_fetch

(PECL rrd >= 0.9.0)

rrd_fetch — Fetch the data for graph as array.

说明

array rrd_fetch ( string $filename , array $options )

Gets data for graph output from RRD database file as array. This function has same result as rrd_graph(), but fetched data are returned as array, no image file is created.

参数

filename

RRD database file name.

options

Array of options for resolution specification.

返回值

Returns information about retrieved graph data.

rrd_error
rrd_first
RRD 函数


Gets the timestamp of the first sample from rrd file.

rrd_fetch
rrd_graph
RRD 函数
PHP Manual

rrd_first

(PECL rrd >= 0.9.0)

rrd_first — Gets the timestamp of the first sample from rrd file.

说明

int rrd_first ( string $file [, int $raaindex = 0 ] )

Returns the first data sample from the specified RRA of the RRD file.

参数

file

RRD database file name.

raaindex

The index number of the RRA that is to be examined. Default value is 0.

返回值

Integer number of unix timestamp, FALSE if some error occurs.

rrd_fetch
rrd_graph
RRD 函数


Creates image from a data.

rrd_first
rrd_info
RRD 函数
PHP Manual

rrd_graph

(PECL rrd >= 0.9.0)

rrd_graph — Creates image from a data.

说明

array rrd_graph ( string $filename , array $options )

Creates image for a particular data from RRD file.

参数

filename

The filename to output the graph to. This will generally end in either .png, .svg or .eps, depending on the format you want to output.

options

Options for generating image. See man page of rrd graph for all possible options. All options (data definitions, variable defintions, etc.) are allowed.

返回值

Array with information about generated image is returned, FALSE when error occurs.

rrd_first
rrd_info
RRD 函数


Gets information about rrd file

rrd_graph
rrd_last
RRD 函数
PHP Manual

rrd_info

(PECL rrd >= 0.9.0)

rrd_info — Gets information about rrd file

说明

array rrd_info ( string $filename )

Returns information about particular RRD database file.

参数

file

RRD database file name.

返回值

Array with information about requsted RRD file, FALSE when error occurs.

rrd_graph
rrd_last
RRD 函数


Gets unix timestamp of the last sample.

rrd_info
rrd_lastupdate
RRD 函数
PHP Manual

rrd_last

(PECL rrd >= 0.9.0)

rrd_last — Gets unix timestamp of the last sample.

说明

int rrd_last ( string $filename )

Returns the UNIX timestamp of the most recent update of the RRD database.

参数

filename

RRD database file name.

返回值

Integer as unix timestamp of the most recent data from the RRD database.

rrd_info
rrd_lastupdate
RRD 函数


Gets information about last updated data.

rrd_last
rrd_restore
RRD 函数
PHP Manual

rrd_lastupdate

(PECL rrd >= 0.9.0)

rrd_lastupdate — Gets information about last updated data.

说明

array rrd_lastupdate ( string $filename )

Gets array of the UNIX timestamp and the values stored for each date in the most recent update of the RRD database file.

参数

file

RRD database file name.

返回值

Array of information about last update, FALSE when error occurs.

rrd_last
rrd_restore
RRD 函数


Restores the RRD file from XML dump.

rrd_lastupdate
rrd_tune
RRD 函数
PHP Manual

rrd_restore

(PECL rrd >= 0.9.0)

rrd_restore — Restores the RRD file from XML dump.

说明

bool rrd_restore ( string $xml_file , string $rrd_file [, array $options ] )

Restores the RRD file from the XML dump.

参数

xml_file

XML filename with the dump of the original RRD database file.

rrd_file

Restored RRD database file name.

options

Array of options for restoring. See man page for rrd restore.

返回值

Returns TRUE on success, FALSE otherwise.

rrd_lastupdate
rrd_tune
RRD 函数


Tunes some RRD database file header options.

rrd_restore
rrd_update
RRD 函数
PHP Manual

rrd_tune

(PECL rrd >= 0.9.0)

rrd_tune — Tunes some RRD database file header options.

说明

bool rrd_tune ( string $filename , array $options )

Change some options in the RRD dabase header file. E.g. renames the source for the data etc.

参数

filename

RRD database file name.

options

Options with RRD database file properties which will be changed. See rrd tune man page for details.

返回值

Returns TRUE on success, FALSE otherwise.

rrd_restore
rrd_update
RRD 函数


Updates the RRD database.

rrd_tune
rrd_version
RRD 函数
PHP Manual

rrd_update

(PECL rrd >= 0.9.0)

rrd_update — Updates the RRD database.

说明

bool rrd_update ( string $filename , array $options )

Updates the RRD database file. The input data is time interpolated according to the properties of the RRD database file.

参数

filename

RRD database file name. This database will be updated.

options

Options for updating the RRD database. This is list of strings. See man page of rrd update for whole list of options.

返回值

Returns TRUE on success, FALSE when error occurs.

rrd_tune
rrd_version
RRD 函数


Gets information about underlying rrdtool library

rrd_update
rrd_xport
RRD 函数
PHP Manual

rrd_version

(PECL rrd >= 1.0.0)

rrd_version — Gets information about underlying rrdtool library

说明

string rrd_version ( void )

Returns information about underlying rrdtool library.

参数

此函数没有参数。

返回值

String with rrdtool version number e.g. "1.4.3".

rrd_update
rrd_xport
RRD 函数


Exports the information about RRD database.

rrd_version
rrdc_disconnect
RRD 函数
PHP Manual

rrd_xport

(PECL rrd >= 0.9.0)

rrd_xport — Exports the information about RRD database.

说明

array rrd_xport ( array $options )

Exports the information about RRD database file. This data can be converted to XML file via user space PHP script and then restored back as RRD database file.

参数

options

Array of options for the export, see rrd xport man page.

返回值

Array with information about RRD database file, FALSE when error occurs.

rrd_version
rrdc_disconnect
RRD 函数


Close any outstanding connection to rrd caching daemon

rrd_xport
RRDCreator
RRD 函数
PHP Manual

rrdc_disconnect

(PECL rrd >= 1.1.2)

rrdc_disconnect — Close any outstanding connection to rrd caching daemon

说明

void rrdc_disconnect ( void )

Close any outstanding connection to rrd caching daemon.

This function is automatically called when the whole PHP process is terminated. It depends on used SAPI. For example, it's called automatically at the end of command line script.

It's up user whether he wants to call this function at the end of every request or otherwise.

参数

此函数没有参数。

返回值

没有返回值。

rrd_xport
RRDCreator
RRD 函数


The RRDCreator class

(PECL rrd >= 0.9.0)

简介

Class for creation of RRD database file.

类摘要

RRDCreator {
/* 方法 */
public void addArchive ( string $description )
public void addDataSource ( string $description )
public __construct ( string $path [, string $startTime [, int $step = 0 ]] )
public bool save ( void )
}

Table of Contents

  • RRDCreator::addArchive — Adds RRA - archive of data values for each data source.
  • RRDCreator::addDataSource — Adds data source definition for RRD database.
  • RRDCreator::__construct — Creates new RRDCreator instance
  • RRDCreator::save — Saves the RRD database to a file
rrdc_disconnect
RRDCreator::addArchive
RRD


Adds RRA - archive of data values for each data source.

RRDCreator
RRDCreator::addDataSource
RRDCreator
PHP Manual

RRDCreator::addArchive

(PECL rrd >= 0.9.0)

RRDCreator::addArchive — Adds RRA - archive of data values for each data source.

说明

public void RRDCreator::addArchive ( string $description )

Adds RRA definition by description of archive. Archive consists of a number of data values or statistics for each of the defined data-sources (DS). Data sources are defined by method RRDCreator::addDataSource(). You need call this method for each requested archive.

参数

description

Definition of archive - RRA. This has same format as RRA definition in rrd create command. See man page of rrd create for more details.

返回值

没有返回值。

RRDCreator
RRDCreator::addDataSource
RRDCreator


Adds data source definition for RRD database.

RRDCreator::addArchive
RRDCreator::__construct
RRDCreator
PHP Manual

RRDCreator::addDataSource

(PECL rrd >= 0.9.0)

RRDCreator::addDataSource — Adds data source definition for RRD database.

说明

public void RRDCreator::addDataSource ( string $description )

RRD can accept input from several data sources (DS), e.g incoming and outgoing traffic. This method adds data source by description. You need call this method for each data source.

参数

description

Definition of data source - DS. This has same format as DS definition in rrd create command. See man page of rrd create for more details.

返回值

没有返回值。

RRDCreator::addArchive
RRDCreator::__construct
RRDCreator


Creates new RRDCreator instance

RRDCreator::addDataSource
RRDCreator::save
RRDCreator
PHP Manual

RRDCreator::__construct

(PECL rrd >= 0.9.0)

RRDCreator::__construct — Creates new RRDCreator instance

说明

public RRDCreator::__construct ( string $path [, string $startTime [, int $step = 0 ]] )

Creates new RRDCreator instance.

参数

path

Path for newly created RRD database file.

startTime

Time for the first value in RRD database. Parameter supports all formats which are supported by rrd create call.

intstep

Base interval in seconds with which data will be fed into the RRD database.

返回值

没有返回值。

RRDCreator::addDataSource
RRDCreator::save
RRDCreator


Saves the RRD database to a file

RRDCreator::__construct
RRDGraph
RRDCreator
PHP Manual

RRDCreator::save

(PECL rrd >= 0.9.0)

RRDCreator::save — Saves the RRD database to a file

说明

public bool RRDCreator::save ( void )

Saves the RRD database into file, which name is defined by RRDCreator::__construct().

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

RRDCreator::__construct
RRDGraph
RRDCreator


The RRDGraph class

(PECL rrd >= 0.9.0)

简介

Class for exporting data from RRD database to image file.

类摘要

RRDGraph {
/* 方法 */
public __construct ( string $path )
public array save ( void )
public array saveVerbose ( void )
public void setOptions ( array $options )
}

Table of Contents

  • RRDGraph::__construct — Creates new RRDGraph instance
  • RRDGraph::save — Saves the result of query into image
  • RRDGraph::saveVerbose — Saves the RRD database query into image and returns the verbose information about generated graph.
  • RRDGraph::setOptions — Sets the options for rrd graph export
RRDCreator::save
RRDGraph::__construct
RRD


Creates new RRDGraph instance

RRDGraph
RRDGraph::save
RRDGraph
PHP Manual

RRDGraph::__construct

(PECL rrd >= 0.9.0)

RRDGraph::__construct — Creates new RRDGraph instance

说明

public RRDGraph::__construct ( string $path )

Creates new RRDGraph instance. This instance is responsible for rendering the result of RRD database query into image.

参数

path

Full path for the newly created image.

返回值

没有返回值。

RRDGraph
RRDGraph::save
RRDGraph


Saves the result of query into image

RRDGraph::__construct
RRDGraph::saveVerbose
RRDGraph
PHP Manual

RRDGraph::save

(PECL rrd >= 0.9.0)

RRDGraph::save — Saves the result of query into image

说明

public array RRDGraph::save ( void )

Saves the result of RRD database query into image defined by RRDGraph::__construct().

参数

此函数没有参数。

返回值

Array with information about generated image is returned, FALSE if error occurs.

RRDGraph::__construct
RRDGraph::saveVerbose
RRDGraph


Saves the RRD database query into image and returns the verbose information about generated graph.

RRDGraph::save
RRDGraph::setOptions
RRDGraph
PHP Manual

RRDGraph::saveVerbose

(PECL rrd >= 0.9.0)

RRDGraph::saveVerbose — Saves the RRD database query into image and returns the verbose information about generated graph.

说明

public array RRDGraph::saveVerbose ( void )

Saves the RRD database query into image file defined by method RRDGraph::__construct() and returns the verbose information about generated graph, if "-" is used as image filename, image data are also returned in result array.

参数

此函数没有参数。

返回值

Array with detailed information about generated image is returned, optionally with image data, FALSE if error occurs.

RRDGraph::save
RRDGraph::setOptions
RRDGraph


Sets the options for rrd graph export

RRDGraph::saveVerbose
RRDUpdater
RRDGraph
PHP Manual

RRDGraph::setOptions

(PECL rrd >= 0.9.0)

RRDGraph::setOptions — Sets the options for rrd graph export

说明

public void RRDGraph::setOptions ( array $options )

参数

options

List of options for the image generation from the RRD database file. It can be list of strings or list of strings with keys for better readability. Read the rrd graph man pages for list of available options.

返回值

没有返回值。

范例

Example #1 RRDGraph::setOptions() example

<?php
$graphObj->setOptions(array(
    "--start" => "920804400",
    "--end" => 920808000,
    "--vertical-label" => "m/s",
    "DEF:myspeed=$rrdFile:speed:AVERAGE",
    "CDEF:realspeed=myspeed,1000,*",
    "LINE2:realspeed#FF0000"
));
?>

Example #2 Set multiple color options

<?php
$graphObj->setOptions(array(
    "--start" => "920804400",
    "--end" => 920808000,
    "--vertical-label" => "m/s",
    "--color=BACK#00000000",
    "--color=GRID#00000000",
    "--color=MGRID#00000000",
    "DEF:myspeed=$rrdFile:speed:AVERAGE",
    "CDEF:realspeed=myspeed,1000,*",
    "LINE2:realspeed#FF0000"
));
?>

Don't use key value syntax for same rrd option. It looks more readable, but it doesn't work.

<?php
$graphObj->setOptions(array(
    "--color" => "BACK#00000000",
    "--color" => "GRID#00000000",
    "--color" => "MGRID#00000000"
));
?>

In nature of php it's same as

<?php
$graphObj->setOptions(array(
    "--color" => "MGRID#00000000"
));
?>

RRDGraph::saveVerbose
RRDUpdater
RRDGraph


The RRDUpdater class

(PECL rrd >= 0.9.0)

简介

Class for updating RDD database file.

类摘要

RRDUpdater {
/* 方法 */
public __construct ( string $path )
public bool update ( array $values [, string $time = time() ] )
}

Table of Contents

  • RRDUpdater::__construct — Creates new RRDUpdater instance
  • RRDUpdater::update — Update the RRD database file
RRDGraph::setOptions
RRDUpdater::__construct
RRD


Creates new RRDUpdater instance

RRDUpdater
RRDUpdater::update
RRDUpdater
PHP Manual

RRDUpdater::__construct

(PECL rrd >= 0.9.0)

RRDUpdater::__construct — Creates new RRDUpdater instance

说明

public RRDUpdater::__construct ( string $path )

Creates new RRDUpdater instance. This instance is responsible for updating the RRD database file.

参数

path

Filesystem path for RRD database file, which will be updated.

返回值

没有返回值。

RRDUpdater
RRDUpdater::update
RRDUpdater


Update the RRD database file

RRDUpdater::__construct
SAM
RRDUpdater
PHP Manual

RRDUpdater::update

(PECL rrd >= 0.9.0)

RRDUpdater::update — Update the RRD database file

说明

public bool RRDUpdater::update ( array $values [, string $time = time() ] )

Updates the RRD file defined via RRDUpdater::__construct(). The file is updated with a specific values.

参数

values

Data for update. Key is data source name.

time

Time value for updating the RRD with a particulat data. Default value is current time.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Throws a Exception on error.

范例

Example #1 RRDUpdater::update() examples

<?php
$updator = new RRDUpdater("speed.rrd");
//updates the data source "speed" with value "12411"
//for time defined by timestamp "920807700"
$updator->update(array("speed" => "12411"), "920807700");
?>

RRDUpdater::__construct
SAM
RRDUpdater


Simple Asynchronous Messaging

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Connections
    • Messages
    • Messaging operations
    • Publish/Subscribe and subscriptions to topics
    • Error handling
  • SAM 函数
    • SAMConnection::commit — Commits (completes) the current unit of work.
    • SAMConnection::connect — Establishes a connection to a Messaging Server
    • SAMConnection::__construct — Creates a new connection to a Messaging Server
    • SAMConnection::disconnect — Disconnects from a Messaging Server
    • SAMConnection::errno — Contains the unique numeric error code of the last executed SAM operation.
    • SAMConnection::error — Contains the text description of the last failed SAM operation.
    • SAMConnection::isConnected — Queries whether a connection is established to a Messaging Server
    • SAMConnection::peek — Read a message from a queue without removing it from the queue.
    • SAMConnection::peekAll — Read one or more messages from a queue without removing it from the queue.
    • SAMConnection::receive — Receive a message from a queue or subscription.
    • SAMConnection::remove — Remove a message from a queue.
    • SAMConnection::rollback — Cancels (rolls back) an in-flight unit of work.
    • SAMConnection::send — Send a message to a queue or publish an item to a topic.
    • SAMConnection::setDebug — Turn on or off additional debugging output.
    • SAMConnection::subscribe — Create a subscription to a specified topic.
    • SAMConnection::unsubscribe — Cancel a subscription to a specified topic.
    • SAMMessage::body — The body of the message.
    • SAMMessage::__construct — Creates a new Message object
    • SAMMessage::header — The header properties of the message.
RRDUpdater::update
简介
其它服务


简介

This extension provides access to the functionality of messaging and queueing systems, such as the IBM WebSphere MQSeries family of products, from PHP scripts. The interface is designed to make it extremely simple to do the more commonly required tasks such as deliver simple text messages to queues while still allowing skilled users to do more complex messaging operations. For many users the complexities of setting up numerous options can be simply ignored.

The SAM extension is a framework that provides a very simple API that can be used to access a number of messaging middleware systems. Currently the package includes built-in support for the MQTT (MQ Telemetry Transport) messaging protocol and support for the IBM Messaging and Queuing middleware products. SAM is designed to be readily extended to support other messaging systems and extension modules may be written in C or PHP.

SAM
安装／配置
SAM


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
SAM


需求

The SAM extension interfaces to the IBM Messaging and Queuing middleware products using a set of libraries and some client side code referred to as XMS. This package is available as a free download in the guise of IBM support pack IA94. There is a description of this package and download links in the article » Introducing XMS - The IBM Message Service API.

If you intend to use SAM to access the Messaging and Queuing infrastructure within WebSphere MQ then you will also need to have installed a local MQ queue manager or installed the WebSphere MQ clients package. The clients package is freely available as a support pack (» MQC6).

If you are only aiming to experiment with sending messages to and from WebSphere Application Server queues using the WebSphere Platform Messaging protocol (WPM) then you do not need to install the MQC6 package.

After installing these packages you will need to ensure the XMS binary and, if you are using it, the MQ client bin directory are included in the PATH environment variable so that Apache and PHP can find the dependent .DLLs/libraries.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/sam.

The SAM framework and MQTT support can be built and used without any other prerequisites. Support for protocols other than MQTT is provided via a set of libraries and some client side code referred to as XMS.

If you only intend to use the built-in MQTT support then you can build and configure SAM as an extension or simply refer to php_sam.php with a require or require_once clause in your PHP script. In this case you need only install the code without building the extension using the pear installer:

pecl install -B SAM

Linux installation steps

The sam extension is supplied as a PECL module, which you should be able to download and install in one step as follows:

pecl install sam
(Depending on your php environment, you will probably need to be root to do this.)

Make sure that the module is loaded by PHP, by adding following line to php.ini:

extension=sam.so
If you intend to use the XMS support to access the IBM Messaging and Queuing family you must also enable the SAM XMS extension.
extension=sam_xms.so

If you cannot use the PEAR installer, you can download the extension and build it manually:

pear download sam          #downloads sam-<version>.tgz
tar -xzf sam-<version>.tgz
cd sam-<version>
phpize
./configure
make
make install               #you may need to be root for this step

To work with the very latest source, you'll need to extract it from SVN and build manually as above.

Windows installation steps

You will probably need to build the sam extension for Windows as there are only a limited range of pre-built binaries available from the SAM website. The extension can be built using the standard Windows extension build procedures.

You will need the PHP source tree for the version of PHP you wish to build the SAM extension against which you can obtain from php.net. This should be unpacked into a working directory of your choice.

You will also need the libraries and headers used by PHP extensions available from http://www.php.net/extra/win32build.zip and this should be unzipped so that is in your working directory.

You should have something like:

c:\php-build\-
              |
              |---php-5.0.5--|---build
              |              |---ext
              |              |--- ...
              |
              |---win32build--|---bin
                              |---include
                              |---lib

You will need a compiler such as the free version of Visual Studio C++ Express from the Microsoft web site. Also you need the Microsoft SDK Microsoft Windows Platform which again can be downloaded from the Microsoft web site.

Obtain the SAM extension source using pear (pecl download sam) or by using SVN and copy the files to a new "sam" directory under the "ext" directory in your PHP source tree.

To build the extension open a build environment window by going to the start

menu->all programs->microsoft platform SDK for windows->
open build environment window->windows 200 build environment->
set windows 2000 build environment (retail)

This should open a command prompt with all the environment variables set up to access the platform SDK etc. You then need to set the environment variables for Visual Studio by issuing the command vcvars32.bat in the window.

Change directory to your working directory e.g. cd c:\php-build. Then make sure the win32build tools are accessible by adding them to the PATH environment variable:

set PATH=..\win32build\bin;%PATH%

Run the buildconf.bat command. This should rebuild the configure.js file.

Run the cscript command with the appropriate options. To build just the SAM extension framework and MQTT support use:

cscript /nologo configure.js --with-sam
To build the SAM framework and the XMS support use:
cscript /nologo configure.js --with-sam --with-sam_xms="c:\program files\ibm\xms"

The additional parameter passed for sam_xms is the installation path to the XMS libraries and runtime that were installed as described under prerequisites at the top of this page.

You can specify whatever other cscript parameters you require to include or exclude items from the php build or select options.

Assuming all has gone well so far you can now finally run a make for the SAM framework!

nmake php_sam.dll
Also if you are using the XMS support you must make the sam_xms extensions:
nmake php_sam_xms.dll

If you have used Visual Studio 2005 to build the DLLs please see below for additional steps that must be carried out before proceeding further.

The DLLs created (php_sam.dll and optionally php_sam_xms.dll) can now be copied to the subdirectory appropriate for your PHP set-up. Make sure that the module(s) are loaded by PHP, by adding following line to php.ini:

extension=php_sam.dll
If you intend to use the XMS support to access the IBM Messaging and Queuing family you must also enable the SAM XMS extension.
extension=php_sam_xms.dll

Additional steps for Visual Studio 2005

If you build the SAM extension with the Microsoft Visual Studio 2005 compiler and tools you need to perform an additional step in the build process to ensure the php_sam.dll is able to link with the C runtime libraries at runtime. This step includes the dependancy manifest into the DLL. Switch to the directory where the php_sam.dll has been generated (usually Release_TS or Debug_TS below the php source directory) and issue the following magic incantation:

mt.exe -manifest php_sam.dll.manifest -outputresource:php_sam.dll;2
If you are using the XMS capabilities you will need to do the same with the SAM XMS DLL:
mt.exe -manifest php_sam_xms.dll.manifest -outputresource:php_sam_xms.dll;2

If you build the SAM extension using the compiler and libraries from Microsoft Visual Studio 2005 you will also need to ensure that the runtime components are installed on the system on which you intend to use SAM. This can be accomplished by installing Visual Studio 2005 or by using the freely distributable » runtime package.

需求
运行时配置
安装／配置


运行时配置

Protocol support and mapping

The SAM framework can be extended to support other messaging protocols and connection mechanisms. To add support for a new protocol or connection library a support class has to be defined, either as a C extension or as a PHP script, and a "factory" script must be created. The support class must implement all the methods of the SAMConnection class though it should not inherit from SAMConnection. The factory script will be called by the SAM framework to create an instance of the implemented class. The way SAM chooses which factory to call is based on the protocol specified as the first parameter of the "connect" call.

By default the built-in MQTT support will be used if a connect call specifies a protocol of SAM_MQTT ("mqtt"), for any other protocol SAM will attempt to use the XMS support extension. To add support for additional protocols or to modify the default behavior entries may be added to php.ini in the [sam] section. The default mapping is equivalent to the following entries:

[sam]
sam.factory.mqtt=mqtt
sam.factory.wmq=xms
sam.factory.wmq:client=xms
sam.factory.wmq:bindings=xms
sam.factory.wpm=xms
sam.factory.rtt=xms
As can be seen from these examples the entries take the form of "sam.factory.pppp=xxx" where pppp is the protocol string specified on the connect call and xxx is a factory suffix. Note: SAM defines constants for these protocol strings such that SAM_WMQ=wmq, SAM_WPM=wpm, SAM_RTT=rtt, SAM_MQTT=mqtt, etc.

When identifying the support code to use on a connect call SAM looks up the protocol name in the php.ini entries and then invokes a factory script named sam_factory_xxx.php. If no entry is found the support will default to XMS.

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

SAM_AUTO (string)
Automatic behaviour
SAM_BOOLEAN (string)
Type specifier used when setting properties on SAM_Message objects.
SAM_BUS (string)
Connect attribute used to set the name of the enterprise service bus to connect to.
SAM_BYTE (string)
Type specifier used when setting properties on SAM_Message objects.
SAM_BYTES (string)
Message body type descriptor.
SAM_CORRELID (string)
Attribute used on receive, send and remove requests to identify specific messages.
SAM_DELIVERYMODE (string)
Message header property.
SAM_DOUBLE (string)
Type specifier used when setting properties on SAM_Message objects.
SAM_ENDPOINTS (string)
Connect attribute used to define the possible endpoints to connect to.
SAM_FLOAT (string)
Type specifier used when setting properties on SAM_Message objects.
SAM_HOST (string)
Connect attribute used to set the hostname of the required messaging server.
SAM_INT (string)
Type specifier used when setting properties on SAM_Message objects.
SAM_LONG (string)
Type specifier used when setting properties on SAM_Message objects.
SAM_MANUAL (string)
Manual (script controlled) behaviour
SAM_MESSAGEID (string)
Attribute used on receive and remove requests to identify specific messages.
SAM_MQTT (string)
Connect protocol definition for selecting the MQTT (MQ Telemetry Transport) protocol.
SAM_MQTT_CLEANSTART (bool)
Optional connect option to indicate to an MQTT server that all previous connection data for this client should be removed and that subscriptions should be deleted when the client disconnects explicitly or unexpectedly.
SAM_NON_PERSISTENT (string)
Connect attribute value used to request messages are not made persistent on the messaging server.
SAM_PASSWORD (string)
Connect attribute used to define the password to be used for the user account being used to connect to a messaging server that requires authorisation for connections.
SAM_PERSISTENT (string)
Connect attribute value used to request messages are made persistent on the messaging server to protect against loss of messages in the event of failure.
SAM_PORT (string)
Connect attribute used to set the port number on which to communicate with the messaging server.
SAM_PRIORITY (string)
Option name used on send requests to specify a delivery priority value.
SAM_REPLY_TO (string)
Message property used to specify the queue identity on to which the script expects response or reply messages to be posted.
SAM_RTT (string)
Connect protocol definition for selecting the IBM Realtime Transport protocol for communication with a business integration messaging server.
SAM_STRING (string)
Type specifier used when setting properties on SAM_Message objects.
SAM_TARGETCHAIN (string)
Connection attribute used to set the required target chain identifier.
SAM_TEXT (string)
Message body type descriptor.
SAM_TIMETOLIVE (string)
Message send option name used to specify the length of time a message should be retained in milliseconds.
SAM_TRANSACTIONS (string)
Connection attribute used to set required transactional behaviour. May be set to SAM_AUTO (default) or SAM_MANUAL.
SAM_USERID (string)
Connect attribute used to define the account to being used to connect to a messaging server that requires authorisation for connections.
SAM_WAIT (string)
Receive property used to specify the wait timeout to be used when receiving a message from a queue or subscription.
SAM_WMQ (string)
Connect protocol definition for selecting the IBM WebSphere MQSeries protocol for communication with the desired messaging server.
SAM_WMQ_BINDINGS (string)
Connect protocol definition for selecting the IBM WebSphere MQSeries protocol for communication with a local messaging server.
SAM_WMQ_CLIENT (string)
Connect protocol definition for selecting the IBM WebSphere MQSeries protocol for communication with a remote messaging server.
SAM_WMQ_TARGET_CLIENT (string)
Option name used on send requests to specify the target client mode. This can either be default to 'jms' or 'mq'. The default is 'jms' which means an RFH2 header is sent with the message whereas the 'mq' setting means no RFH2 is included.
SAM_WPM (string)
Connect protocol definition for selecting the IBM WebSphere Platform Messaging protocol for communication with a WebSphere Application Server messaging server.
资源类型
范例
SAM


范例

Table of Contents

  • Connections
  • Messages
  • Messaging operations
  • Publish/Subscribe and subscriptions to topics
  • Error handling
预定义常量
Connections
SAM


Connections

In order to perform any messaging and queueing functions a connection must be established with a messaging server by creating a SAMConnection object and calling its "connect" method, with a set of connection properties, to connect the PHP script to the messaging server. Until such time as the SAMConnection object is destroyed the connection will be maintained and available for use. All SAMConnection objects are destroyed when the PHP script exits.

A set of default properties may be used in connecting to a messaging server but as a minimum the PHP script must specify a protocol to be used.

Example #1 Creating a connection and connecting to a remote WebSphere MQSeries Messaging Server

<?php
$conn = new SAMConnection();
$conn->connect(SAM_WMQ, array(SAM_HOST => 'myhost.mycompany.com',
                              SAM_PORT => 1506,
                              SAM_BROKER => 'mybroker'));
?>

Example #2 Creating a connection and connecting to a remote WebSphere Application Server

<?php
$conn = new SAMConnection();
$conn->connect(SAM_WPM, array(SAM_ENDPOINTS => 'localhost:7278:BootstrapBasicMessaging',
                              SAM_BUS => 'Bus1',
                              SAM_TARGETCHAIN => 'InboundBasicMessaging'));
?>

Example #3 Creating a connection and connecting to an MQTT server

<?php
$conn = new SAMConnection();
$conn->connect(SAM_MQTT, array(SAM_HOST => 'myhost.mycompany.com',
                               SAM_PORT => 1883));
?>

范例
Messages
范例


Messages

Messages sent to and received from queues are represented by the SAMMessage object. The SAMMessage object encapsulates the body of the message (if one exists) and the header properties associated with the message. A SAMMessage object is either supplied as a parameter to a messaging operation or returned as a result.

Example #1 Creating a message with a simple text body

<?php
$msg = new SAMMessage('This is a simple text message');
?>

Messages may have header properties associated with them that provide control over the transport of the message or further information to the receiving application. By default message properties are delivered to the underlying messaging system as strings and in this case they may be set with the following simple syntax:

Example #2 Setting a text format property using the default syntax

<?php
$msg->header->myPropertyName = 'textData';
?>

If it is desired to pass type information an alternative syntax may be used where the value and the type hint are passed in an associative array:

Example #3 Setting a property using a type hint

<?php
$msg->header->myPropertyName = array(3.14159, SAM_FLOAT);
?>

Properties may also be extracted from the header of a message.

Example #4 Retrieving a property from a message header

<?php
$myProperty = $msg->header->myPropertyName;
?>

Connections
Messaging operations
范例


Messaging operations

All messaging operations are performed through calls to methods on the connection object. To add a message to a queue the "send" method is used, to obtain a message from a queue the "receive" method is used. Other methods provide publish and subscribe functionality and control of transaction boundaries.

Example #1 Adding a message to a queue and receiving a response

<?php
$msg = new SAMMessage('This is a simple text message');
$msg->header->SAM_REPLY_TO = 'queue://receive/test';
$correlid = $conn->send('queue://send/test', $msg);

if (!$correlid) {
  // The Send failed!
  echo "Send failed ($conn->errno) $conn->error";
} else {
  $resp = $conn->receive('queue://receive/test', array(SAM_CORRELID => $correlid));
}
?>

Messages
Publish/Subscribe and subscriptions to topics
范例


Publish/Subscribe and subscriptions to topics

SAM allows messages to be sent either to queues or, for WebSphere MQ and WPM, to publish/subscribe topics. A topic destination is specified to SAM in the usual way, i.e. in the form 'topic://fred', rather than the form 'queue://AQUEUE' used for point to point operation. To use publish/subscribe it is simply necessary to specify the correct broker name on the SAMConnect "connect" call and the desired topic in the destination argument to the SAMConnect "send" and "receive" calls. The PHP interface is otherwise identical to the point to point model.

By default, SAM creates non-durable subscriptions when using publish/subscribe. This means that if a client application is inactive when messages are published to a topic, then it will not receive them when it subsequently restarted. SAM does also allow durable subscriptions to be made to topics when using WPM or WebSphere MQ publish/subscribe. The purpose of these subscriptions is to allow data to be received by a client application even if that client was not active at the time the data was published.

Durable subscriptions are specified by using the SAMConnect "subscribe" call. This method takes the destination topic as an input parameter and returns a subscription identifier that may be used on subsequent "receive" calls. When the subscription is no longer required the SAMConnection "unsubscribe" method should be used to delete the subscription.

Example #1 Creating a durable subscription to a topic

<?php

$subName = $conn->subscribe('topic://A');

if (!$subName) {
   echo "Subscribe failed";
} else {
   # Subscribe was OK
   // ...
}
?>

Example #2 Subscribing to a topic using a WebSphere Platform Messaging (WPM) server

<?php
$conn = new SAMConnection();
// Note: For pub/sub on WPM, when connecting the name of a messaging engine
//   to hold the durable subscription (SAM_WPM_DUR_SUB_HOME) must be specified.
$conn->connect(SAM_WMQ, array(SAM_ENDPOINTS => 'localhost:7278:BootstrapBasicMessaging',
                              SAM_BUS => 'Bus1',
                              SAM_TARGETCHAIN => 'InboundBasicMessaging',
                              SAM_WPM_DUR_SUB_HOME => 'MyMachineNode01.server1-Bus1'));

$subName = $conn->subscribe('topic://A');

if (!$subName) {
   echo "Subscribe failed";
} else {
   # Subscribe was OK
   // ...
}
?>

Example #3 Receiving published data using a durable subscription

<?php

$msg = $conn->receive($subName);
if ($msg) {
   echo "Received a message OK";
} else {
   echo "The receive failed";
}

?>

Example #4 Deleting a durable subscription to a topic

<?php

if (!$conn->unsubscribe($subName)) {
   echo "Unsubscribe failed";
}

?>

Messaging operations
Error handling
范例


Error handling

All SAMConnection methods that provide access to messaging operations return FALSE if an error occurred in processing the request. In addition the SAMConnection object has two properties, "errno" and "error", that provide respectively the error number and text description of the last error to occur on the connection.

Example #1 Handling an error from a method that returns no result

<?php
if (!$conn->commit()) {
    // The commit failed!
    echo "Commit failed ($conn->errno) $conn->error";
}
?>

Example #2 Handling an error from a method that returns a result

<?php
$correlid = $conn->send('queue://send/test', $msg);

if (!$correlid) {
  // The Send failed!
  echo "Send failed ($conn->errno) $conn->error";
} else {
  /* ... */
}
?>

Publish/Subscribe and subscriptions to topics
SAM 函数
范例


SAM 函数

预定义类

SAMConnection

Object representing a connection to a Messaging Server

构造函数

  • new SAMConnection - construct a new connection object to allow connection to a messaging infrastructure.

方法

  • commit - a method that commits (successfully completes) an in-flight unit of work.

  • connect - a method that connects a PHP script to a messaging server.

  • disconnect - a method that disconnects a PHP script from a messaging server.

  • isConnected - a method that checks whether a PHP script is connected to a messaging server.

  • peek - a method that receives a message from a queue without removing it from the queue.

  • peekAll - a method that receives one or messages from a queue without removing them from the queue.

  • receive - a method that receives a message from a queue or subscription.

  • remove - a method that removes a message from a queue.

  • rollback - a method that cancels (rolls back) an in-flight unit of work.

  • send - a method that sends a message to a queue or posts to a topic

  • setDebug - a method that switches additional debugging output on or off

  • subscribe - a method that creates a subscription to one or more topics

  • unsubscribe - a method that destroys a subscription to one or more topics

属性

  • errno - the numeric error code for the last encountered error on this connection. This property is set to 0 if the last operation was successful.

  • error - the text description for the last encountered error on this connection

SAMMessage

Object representing a message to be sent or received

构造函数

  • new SAMMessage - construct a new message.

属性

  • body - the body of the message.

  • header - the header properties of the message.

Table of Contents

  • SAMConnection::commit — Commits (completes) the current unit of work.
  • SAMConnection::connect — Establishes a connection to a Messaging Server
  • SAMConnection::__construct — Creates a new connection to a Messaging Server
  • SAMConnection::disconnect — Disconnects from a Messaging Server
  • SAMConnection::errno — Contains the unique numeric error code of the last executed SAM operation.
  • SAMConnection::error — Contains the text description of the last failed SAM operation.
  • SAMConnection::isConnected — Queries whether a connection is established to a Messaging Server
  • SAMConnection::peek — Read a message from a queue without removing it from the queue.
  • SAMConnection::peekAll — Read one or more messages from a queue without removing it from the queue.
  • SAMConnection::receive — Receive a message from a queue or subscription.
  • SAMConnection::remove — Remove a message from a queue.
  • SAMConnection::rollback — Cancels (rolls back) an in-flight unit of work.
  • SAMConnection::send — Send a message to a queue or publish an item to a topic.
  • SAMConnection::setDebug — Turn on or off additional debugging output.
  • SAMConnection::subscribe — Create a subscription to a specified topic.
  • SAMConnection::unsubscribe — Cancel a subscription to a specified topic.
  • SAMMessage::body — The body of the message.
  • SAMMessage::__construct — Creates a new Message object
  • SAMMessage::header — The header properties of the message.
Error handling
SAMConnection::commit
SAM


Commits (completes) the current unit of work.

SAM 函数
SAMConnection::connect
SAM 函数
PHP Manual

SAMConnection::commit

(PECL sam >= 0.1.0)

SAMConnection::commit — Commits (completes) the current unit of work.

说明

bool SAMConnection::commit ( void )

Calling the "commit" method on a Connection object commits (completes) all in-flight transactions that are part of the current unit of work.

返回值

This method returns FALSE if an error occurs.

范例

Example #1 Committing the current unit of work

<?php
  if (!$conn->commit()) {
    // The commit failed!
    echo "Commit failed ($conn->errno) $conn->error";
  }
?>

参见

  • SAMConnection::rollback

SAM 函数
SAMConnection::connect
SAM 函数


Establishes a connection to a Messaging Server

SAMConnection::commit
SAMConnection::__construct
SAM 函数
PHP Manual

SAMConnection::connect

(PECL sam >= 0.1.0)

SAMConnection::connect — Establishes a connection to a Messaging Server

说明

bool SAMConnection::connect ( string $protocol [, array $properties ] )

Calling the "connect" method on a SAMConnection object connects the PHP script to a messaging server. No messages can be sent or received until a connection is made.

参数

返回值

This method returns FALSE if an error occurs.

范例

Example #1 Creating a connection to a Messaging Server using the IBM MQSeries protocol (WMQ)

<?php

$conn->connect(SAM_WMQ, array(SAM_HOST => 'Myhost.myco.com', SAM_PORT => 1506, SAM_BROKER => 'MyBroker'));

?>

Example #2 Creating a connection with application transaction control and default host and port values

<?php

$conn->connect(SAM_WMQ, array(SAM_BROKER => 'MyBroker', SAM_TRANSACTIONS => SAM_MANUAL));

?>

Example #3 Creating a connection to a Messaging Server using the IBM WebSphere Platform Messaging protocol (WPM)

<?php

$conn->connect(SAM_WPM, array(SAM_ENDPOINTS => 'localhost:7278:BootstrapBasicMessaging',
                              SAM_BUS => 'Bus1', SAM_TARGETCHAIN => 'InboundBasicMessaging'));

?>

参见

  • SAMConnection::isConnected
  • SAMConnection::disconnect

SAMConnection::commit
SAMConnection::__construct
SAM 函数


Creates a new connection to a Messaging Server

SAMConnection::connect
SAMConnection::disconnect
SAM 函数
PHP Manual

SAMConnection::__construct

(PECL sam >= 0.1.0)

SAMConnection::__construct — Creates a new connection to a Messaging Server

说明

SAMConnection::__construct ( void )

Creates a new SAMConnection object.

范例

Example #1 Creating a connection object and connecting to a Messaging Server

<?php

$conn = new SAMConnection();
$conn->connect(SAM_WMQ, array(SAM_HOST => localhost, SAM_PORT => 1414, SAM_BROKER => 'bull'));

?>

SAMConnection::connect
SAMConnection::disconnect
SAM 函数


Disconnects from a Messaging Server

SAMConnection::__construct
SAMConnection::errno
SAM 函数
PHP Manual

SAMConnection::disconnect

(PECL sam >= 0.1.0)

SAMConnection::disconnect — Disconnects from a Messaging Server

说明

bool SAMConnection::disconnect ( void )

Calling the "disconnect" method on a SAMConnection object disconnects the PHP script from a messaging server. No messages can be sent or received after a connection has been disconnected.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Disconnecting from a Messaging Server

<?php

$conn->disconnect();

?>

参见

  • SAMConnection::isConnected
  • SAMConnection::connect

SAMConnection::__construct
SAMConnection::errno
SAM 函数


Contains the unique numeric error code of the last executed SAM operation.

SAMConnection::disconnect
SAMConnection::error
SAM 函数
PHP Manual

SAMConnection::errno

(PECL sam >= 0.1.0)

SAMConnection::errno — Contains the unique numeric error code of the last executed SAM operation.

Description

int $SAMConnection->errno;

Contains the numeric error code of the last executed SAM operation on this connection. If the last operation completed successfully this property contains 0.

返回值

An integer greater than zero indicates the last error type encountered on the connection. Zero indicates that the last operation on this connection completed successfully.

范例

Example #1 Using the error number and description properties

<?php
$conn = new SAMConnection();
$conn->connect(SAM_WMQ, array(SAM_HOST => 'localhost', SAM_PORT => 1506));
$msg = new SAMMessage('This is a simple text item');
if (!$conn->send('topic://test', $msg)) {
    // The Send failed!
    echo "Send failed ($conn->errno) $conn->error";
}
?>

参见

  • SAMConnection::error

SAMConnection::disconnect
SAMConnection::error
SAM 函数


Contains the text description of the last failed SAM operation.

SAMConnection::errno
SAMConnection::isConnected
SAM 函数
PHP Manual

SAMConnection::error

(PECL sam >= 0.1.0)

SAMConnection::error — Contains the text description of the last failed SAM operation.

说明

string $SAMConnection->error;

Contains the text description of the last failed SAM operation on this connection. If the last operation completed successfully this property contains an empty string.

返回值

A string containing the text description of the last error type encountered on the connection. An empty string indicates that the last operation on this connection completed successfully.

范例

Example #1 Using the error number and description properties

<?php
$conn = new SAMConnection();
$conn->connect(SAM_WMQ, array(SAM_HOST => 'localhost', SAM_PORT => 1506));
$msg = new SAMMessage('This is a simple text item');
if (!$conn->send('topic://test', $msg)) {
    // The Send failed!
    echo "Send failed ($conn->errno) $conn->error";
}
?>

参见

  • SAMConnection::errno

SAMConnection::errno
SAMConnection::isConnected
SAM 函数


Queries whether a connection is established to a Messaging Server

SAMConnection::error
SAMConnection::peek
SAM 函数
PHP Manual

SAMConnection::isConnected

(PECL sam >= 0.1.0)

SAMConnection::isConnected — Queries whether a connection is established to a Messaging Server

说明

bool SAMConnection::isConnected ( void )

Calling the "isConnected" method on a Connection object will check whether the PHP script is connected to a messaging server. No messages can be sent or received unless a connection has been established with a Messaging server.

返回值

This method returns TRUE if the SAMConnection object is successfully connected to a Messaging server or FALSE otherwise.

范例

Example #1 Checking whether there us a connection to a Messaging Server

<?php

if ($conn->isConnected()) {
  echo 'Connection is active.';
} else {
  echo 'No active connection!';
}

?>

参见

  • SAMConnection::disconnect
  • SAMConnection::connect

SAMConnection::error
SAMConnection::peek
SAM 函数


Read a message from a queue without removing it from the queue.

SAMConnection::isConnected
SAMConnection::peekAll
SAM 函数
PHP Manual

SAMConnection::peek

(PECL sam >= 0.1.0)

SAMConnection::peek — Read a message from a queue without removing it from the queue.

说明

SAMMessage SAMConnection::peek ( string $target [, array $properties ] )

参数

target

The identity of the queue from which to peek the message.

properties

An optional associative array of properties describing other parameters to control the peek operation.

Property name | Possible values
SAM_CORRELID | This is the target correlation id string of the message. This would typically have been returned by a "send" request.
SAM_MESSAGEID | This is the message id string of the message which is to be peeked.

返回值

This method returns a SAMMessage object or FALSE if an error occurs.

范例

Example #1 Retrieve the next message from a queue without removing it

<?php
$msg = $conn->peek('queue://receive/test');

if (!$msg) {
  // The peek failed!
  echo "Peek failed ($conn->errno) $conn->error";
}
?>

Example #2 Retrieve a specific message from a queue without removing it from the queue

<?php

$msg = $conn->peek('queue://receive/test', array(SAM_MESSAGEID => $messageId));

?>

参见

  • SAMConnection::peekAll

SAMConnection::isConnected
SAMConnection::peekAll
SAM 函数


Read one or more messages from a queue without removing it from the queue.

SAMConnection::peek
SAMConnection::receive
SAM 函数
PHP Manual

SAMConnection::peekAll

(PECL sam >= 0.2.0)

SAMConnection::peekAll — Read one or more messages from a queue without removing it from the queue.

说明

array SAMConnection::peekAll ( string $target [, array $properties ] )

参数

target

The identity of the queue from which messages should be peeked.

properties

An optional associative array of properties describing other parameters to control the peek operation.

Property name | Possible values
SAM_CORRELID | This is the target correlation id string of messages to be peeked. This would typically have been returned by a "send" request.
SAM_MESSAGEID | This is the message id string of a message which is to be peeked.

返回值

This method returns an array of SAMMessage objects or FALSE if an error occurs.

范例

Example #1 Retrieve all messages in a queue without removing them

<?php
$msgArray = $conn->peekAll('queue://receive/test');
if ($msgArray) {
   foreach ( $msgArray as $key => $msg) {
       echo "Message $key: body = $msg->body\n";
   }
} else {
   echo "PeekAll failed ($conn->errno) $conn->error";
}
?>

Example #2 Retrieve all messages from a queue with a matching correlation id

<?php

   $msgArray = $conn->peekAll('queue://receive/test', array(SAM_CORRELID => $correlId ));
   if ($msgArray) {

      foreach ( $msgArray as $key => $msg) {
            echo "Message $key: body = $msg->body\n";
         }
   } else {
      echo "PeekAll failed ($conn->errno) $conn->error";
   }

?>

参见

  • SAMConnection::peek

SAMConnection::peek
SAMConnection::receive
SAM 函数


Receive a message from a queue or subscription.

SAMConnection::peekAll
SAMConnection::remove
SAM 函数
PHP Manual

SAMConnection::receive

(PECL sam >= 0.1.0)

SAMConnection::receive — Receive a message from a queue or subscription.

说明

SAMMessage SAMConnection::receive ( string $target [, array $properties ] )

参数

target

The identity of the queue, topic or subscription from which to receive the message.

properties

An optional associative array of properties describing other parameters to control the receive operation.

Property name | Possible values
SAM_CORRELID | Used to request selection of the message to receive based upon the correlation id string of the message.
SAM_MESSAGEID | Used to request selection of the message to receive based upon the message id string of the message.
SAM_WAIT | Timeout value in milliseconds to control how long the request should block waiting to receive a message before returning with a failure if no message is available on the queue or topic. The default value is 0 meaning wait indefinitely and should be used with caution as the request may wait until the overall PHP script processing time limit has expired if no message becomes available.

返回值

This method returns a SAMMessage object or FALSE if an error occurs.

范例

Example #1 Receiving a message from a queue

<?php
$msg = $conn->receive('queue://receive/test');

if (!$msg) {
  // The receive failed!
  echo "Receive failed ($conn->errno) $conn->error";
}
?>

Example #2 Receiving a message from a queue with options

In this example the SAM_CORRELID option is used to specify a correlation id string to be used to identify the message to receive. A wait timeout of 10 seconds is also specified.

<?php

$msg = $conn->receive('queue://receive/test', array(SAM_CORRELID => $token, SAM_WAIT => 10000));

?>

Example #3 Receiving a message from a subscription

In this example we show how to receive a message from a subscription id.

<?php
$msg = $conn->receive($subscriptionName);

if (!$msg) {
  // The receive failed!
  echo "Receive failed ($conn->errno) $conn->error";
}
?>

Please note that $subscriptionName is a subscription id returned from an earlier subscribe call.

参见

  • SAMConnection::send

SAMConnection::peekAll
SAMConnection::remove
SAM 函数


Remove a message from a queue.

SAMConnection::receive
SAMConnection::rollback
SAM 函数
PHP Manual

SAMConnection::remove

(PECL sam >= 0.1.0)

SAMConnection::remove — Remove a message from a queue.

说明

SAMMessage SAMConnection::remove ( string $target [, array $properties ] )

Removes a message from a queue.

参数

target

The identity of the queue from which to remove the message.

properties

An optional associative array of properties describing other parameters to control the remove operation.

Property name | Possible values
SAM_CORRELID | This is the target correlation id string of the message. This would typically have been returned by a "send" request.
SAM_MESSAGEID | This is the message id string of the message which is to be removed.

返回值

This method returns FALSE if an error occurs.

范例

Example #1 Removing a message from a queue by message id

<?php
if (!$conn->remove('queue://receive/test', array(SAM_MESSAGEID => $messageId))) {
  // The remove failed!
  echo "Remove failed ($conn->errno) $conn->error";
}
?>

SAMConnection::receive
SAMConnection::rollback
SAM 函数


Cancels (rolls back) an in-flight unit of work.

SAMConnection::remove
SAMConnection::send
SAM 函数
PHP Manual

SAMConnection::rollback

(PECL sam >= 0.1.0)

SAMConnection::rollback — Cancels (rolls back) an in-flight unit of work.

说明

bool SAMConnection::rollback ( void )

Rolls back an in-flight unit of work.

返回值

This method returns FALSE if an error occurs.

范例

Example #1 Cancelling an in-flight unit of work

<?php
if (!$conn->rollback()) {
  // The rollback failed!
  echo "Rollback failed ($conn->errno) $conn->error";
}
?>

参见

  • SAMConnection::commit

SAMConnection::remove
SAMConnection::send
SAM 函数


Send a message to a queue or publish an item to a topic.

SAMConnection::rollback
SAMConnection::setDebug
SAM 函数
PHP Manual

SAMConnection::send

(PECL sam >= 0.1.0)

SAMConnection::send — Send a message to a queue or publish an item to a topic.

说明

string SAMConnection::send ( string $target , SAMMessage $msg [, array $properties ] )

The "send" method is used to send a message to a specific queue or to publish to a specific topic. The method returns a correlation id that can be used as a selector to identify reply or response messages when these are requested.

参数

target

If sending a message, the identity of the queue (queue://queuename) or if publishing to a topic the identity of the topic (topic://topicname) to which the message is to be delivered.

msg

The message to be sent or published.

properties

An optional associative array of properties describing other parameters to control the receive operation.

Property name | Possible values
SAM_DELIVERYMODE | Indicates whether the messaging server should ensure delivery or whether it is acceptable for messages to be lost in the case of system failures. The value of this property may be set to either SAM_PERSISTENT, to indicate that message loss is not acceptable, or SAM_NON_PERSISTENT, if message loss is acceptable. The resulting behaviour of the send will vary depending on the capabilities of the messaging server the PHP script is currently connected to. If the server does not support persistent messages and SAM_PERSISTENT is specified the send request will fail with an error indication showing the capability is not available.
SAM_PRIORITY | A numeric value between 0 and 9 indicating the desired message delivery priority. A priority value of 0 indicates the lowest priority while 9 indicates highest priority. If no priority is specified a default will be assigned which is dependent on the messaging server being used.
SAM_CORRELID | A string to be assigned as a correlation id for this message. If no value is given the messaging server may assign a value automatically.
SAM_TIMETOLIVE | A time in milliseconds indicating how long the messaging server should retain the message on a queue before discarding it. The default value is 0 indicating the message should be retained indefinitely.
SAM_WMQ_TARGET_CLIENT | This property is only valid when using WebSphere MQ and indicates whether or not an RFH2 header should be included with the message. This option may be set to either 'jms' or 'mq'. The default is 'jms' which means that an RFH2 header is included. If the value 'mq' is specified then no RFH2 is included with the message.

返回值

A correlation id string that can be used in a subsequent receive call as a selector to obtain any reply or response that has been requested or FALSE if an error occurred.

Note:

A correlation id will only be returned for a successful send to a queue destination (queue://xxxx) in which case it will reflect the message identity of the message on the queue. In the case of a send being used to publish data to a topic the return value will be TRUE as no correlation id is available for return.

范例

Example #1 Send a message to a queue

<?php
$msg = new SAMMessage('This is a simple text message');
$correlId = $conn->send('queue://send/test', $msg);
if (!$correlId) {
    // The send failed!
    echo "Send failed ($conn->errno) $conn->error";
}

?>

Example #2 Publish a message to a topic

<?php
$msg = new SAMMessage('This is a simple text item');
if (!$conn->send('topic://test', $msg)) {
    // The Send failed!
    echo "Send failed ($conn->errno) $conn->error";
}
?>

Example #3 Send a request and receive a response

<?php
$msg = new SAMMessage('This is a simple text message');
$msg->header->SAM_REPLY_TO = 'queue://receive/test';
$correlid = $conn->send('queue://send/test', $msg);

if (!$correlid) {
    // The Send failed!
    echo "Send failed ($conn->errno) $conn->error";
} else {
    $resp = $conn->receive('queue://receive/test', array(SAM_CORRELID => $correlid));
}
?>

参见

  • SAMConnection::receive

SAMConnection::rollback
SAMConnection::setDebug
SAM 函数


Turn on or off additional debugging output.

SAMConnection::send
SAMConnection::subscribe
SAM 函数
PHP Manual

SAMConnection::setDebug

(PECL sam >= 1.1.0)

SAMConnection::setDebug — Turn on or off additional debugging output.

说明

The "setdebug" method is used to turn on or off additional debugging output. The SAM framework will provide method/function entry and exit trace data plus additional information. Protocol specific implementations also provide extra output.

void SAMConnection::setDebug ( bool $switch )

参数

switch

If this parameter is set to TRUE additional debugging output will be provided. If the value is set to FALSE output of additional information will be stopped.

返回值

没有返回值。

范例

Example #1 Turn on debugging output

<?php
$conn->setdebug(TRUE);
?>

Example #2 Turn off debugging output

<?php
$conn->setdebug(FALSE);
?>

SAMConnection::send
SAMConnection::subscribe
SAM 函数


Create a subscription to a specified topic.

SAMConnection::setDebug
SAMConnection::unsubscribe
SAM 函数
PHP Manual

SAMConnection::subscribe

(PECL sam >= 0.1.0)

SAMConnection::subscribe — Create a subscription to a specified topic.

说明

string SAMConnection::subscribe ( string $targetTopic )

The "subscribe" method is used to create a new subscription to a specified topic.

参数

targetTopic

The identity of the topic (topic://topicname) to subscribe to.

返回值

A subscription identifier that can be used in a subsequent receive call as a selector to obtain any topic data or FALSE if an error occurred. The subscription identifier should be used in the receive call in place of the simple topic name.

范例

Example #1 Subscribe to a topic

<?php
$subid = $conn->subscribe('topic://A');
if (!$subid) {
  // The subscribe failed!
  echo "Subscribe failed ($conn->errno) $conn->error";
}
?>

参见

  • SAMConnection::unsubscribe

SAMConnection::setDebug
SAMConnection::unsubscribe
SAM 函数


Cancel a subscription to a specified topic.

SAMConnection::subscribe
SAMMessage::body
SAM 函数
PHP Manual

SAMConnection::unsubscribe

(PECL sam >= 0.1.0)

SAMConnection::unsubscribe — Cancel a subscription to a specified topic.

说明

bool SAMConnection::unsubscribe ( string $subscriptionId [, string $targetTopic ] )

The "unsubscribe" method is used to delete an existing subscription to a specified topic.

参数

subscriptionId

The identifier of an existing subscription as returned by a call to the subscribe method.

返回值

This method returns FALSE if an error occurs.

范例

Example #1 Delete a subscription

<?php
if (!$conn->unsubscribe($subid)) {
    // The unsubscribe failed!
    echo "Unsubscribe failed ($conn->errno) $conn->error";
}
?>

参见

  • SAMConnection::subscribe

SAMConnection::subscribe
SAMMessage::body
SAM 函数


The body of the message.

SAMConnection::unsubscribe
SAMMessage::__construct
SAM 函数
PHP Manual

SAMMessage::body

(PECL sam >= 0.1.0)

SAMMessage::body — The body of the message.

说明

string $SAMMessage->body;

The "body" property contains the actual body of the message. It may not always be set.

范例

Example #1 Setting a text string into the body of a message

<?php
$msg = new SAMMessage();
$msg->body = 'This is a simple message';

?>

参见

  • SAMMessage::header

SAMConnection::unsubscribe
SAMMessage::__construct
SAM 函数


Creates a new Message object

SAMMessage::body
SAMMessage::header
SAM 函数
PHP Manual

SAMMessage::__construct

(PECL sam >= 0.1.0)

SAMMessage::__construct — Creates a new Message object

说明

SAMMessage::__construct ([ mixed $body ] )

Creates a new SAMMessage object optionally specifying a message body.

参数

body

The optional body for the message.

范例

Example #1 Creating a message

<?php

$msg = new SAMMessage();

?>

Example #2 Creating a message with a simple text payload

<?php

$msg = new SAMMessage('This is a simple text message');

?>

SAMMessage::body
SAMMessage::header
SAM 函数


The header properties of the message.

SAMMessage::__construct
SNMP
SAM 函数
PHP Manual

SAMMessage::header

(PECL sam >= 0.1.0)

SAMMessage::header — The header properties of the message.

说明

object $SAMMessage->header;

The header property is a container for any system or user properties that area associated with the message.

Properties may be assigned by the sender of a message to control the way the messaging systems handles it or may be assigned by the messaging system itself to tell the recipient extra information about the message or the way in which it has been handled.

Some properties are understood by SAM in which case constants have been defined for them. The majority of properties however are ignored by the SAM implementation and simply passed through to the underlying messaging systems allowing the application to use messaging specific property names or to define its own "user" properties.

The SAM defined properties are as follows:

Property name | Possible values
SAM_MESSAGEID | When a message is received this field contains the unique identifier of the message as allocated by the underlying messaging system. When sending a message this field is ignored.
SAM_REPLY_TO | A string providing the identity of the queue on to which responses to this message should be posted.
SAM_TYPE

An indication of the type of message to be sent. The value may be SAM_TEXT indicating the contents of the message body is a text string, or SAM_BYTES indicating the contents of the message body are some application defined format.

The way in which this property is used may depend on the underlying messaging server. For instance a messaging server that supports the JMS (Java Message Service) specification may interpret this value and send messages of type "jms_text" and "jms_bytes". In addition, if the SAM_TYPE property is set to SAM_TEXT the data provided for the message body is expected to be a UTF8 encoded string.

When setting the values of properties it is often useful to give a hint as to the format in which the property should be delivered to the messaging system. By default property values are delivered as text and the following simple syntax may be used to set a value:

Example #1 Setting a text format property using the default syntax

<?php
$msg = new SAMMessage();

$msg->header->myPropertyName = 'textData';
?>

If it is desired to pass type information an alternative syntax may be used where the value and the type hint are passed in an associative array:

Example #2 Setting a text format property using a type hint

<?php
$msg = new SAMMessage();

$msg->header->myPropertyName = array('textData', SAM_STRING);
?>

When passing a type hint the type entry should be one of the SAM defined constant values as defined by the following table:

Constant | Type description
SAM_BOOLEAN | Any value passed will be interpreted as logical true or false. If the value cannot be interpreted as a PHP boolean value the value passed to the messaging system is undefined.
SAM_BYTE | An 8-bit signed integer value. SAM will attempt to convert the property value specified into a single byte value to pass to the messaging system. If a string value is passed an attempt will be made to interpret the string as a numeric value. If the numeric value cannot be expressed as an 8-bit signed binary value data may be lost in the conversion.
SAM_DOUBLE | A long floating point value. SAM will attempt to convert the property value specified into a floating point value with 15 digits of precision. If a string value is passed an attempt will be made to interpret the string as a numeric value. If the passed value cannot be expressed as a 15 digit floating point value data may be lost in the conversion.
SAM_FLOAT | A short floating point value. SAM will attempt to convert the property value specified into a floating point value with 7 digits of precision. If a string value is passed an attempt will be made to interpret the string as a numeric value. If the passed value cannot be expressed as a 7 digit floating point value data may be lost in the conversion.
SAM_INT | An 32-bit signed integer value. SAM will attempt to convert the property value specified into a 32-bit value to pass to the messaging system. If a string value is passed an attempt will be made to interpret the string as a numeric value. If the numeric value cannot be expressed as an 32-bit signed binary value data may be lost in the conversion.
SAM_LONG | An 64-bit signed integer value. SAM will attempt to convert the property value specified into a 64-bit value to pass to the messaging system. If a string value is passed an attempt will be made to interpret the string as a numeric value. If the numeric value cannot be expressed as an 64-bit signed binary value data may be lost in the conversion.
SAM_STRING | SAM will interpret the property value specified as a string and pass it to the messaging system accordingly.

范例

Example #3 Setting properties as the sender of a message

<?php
$msg = new SAMMessage('This is a test message');

// defining SAM specific properties...
$msg->header->SAM_REPLY_TO = 'queue://test/replyQueue';

// defining arbitrary properties...
//
// a default string property
$msg->header->myStringProp1 = 'a string property';
// a string property with a type hint
$msg->header->myStringProp2 = array('another string property', SAM_STRING);

// a boolean property
$msg->header->myBoolProp = array(FALSE, SAM_BOOL);

// numeric format properties
$msg->header->myIntProp = array(32768, SAM_INT);
$msg->header->myLongProp = array(9876543, SAM_LONG);
$msg->header->myByteProp1 = array(123, SAM_BYTE);
$msg->header->myByteProp2 = array('12', SAM_BYTE);
$msg->header->myFloatProp = array(3.141592, SAM_FLOAT);
$msg->header->myDoubleProp = array(3.14159265358979, SAM_DOUBLE);
?>

Example #4 Retreiving property values from a message

<?php

// accessing an application specific property
$intProp = $msg->header->MyIntProp;

// accessing a messaging system specific property
$encoding = $msg->header->JMS_IBM_Msgtype;

?>

参见

  • SAMMessage::body

SAMMessage::__construct
SNMP
SAM 函数


SNMP

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • SNMP 函数
    • snmp_get_quick_print — 返回 UCD 库中 quick_print 设置的当前值
    • snmp_get_valueretrieval — Return the method how the SNMP values will be returned
    • snmp_read_mib — Reads and parses a MIB file into the active MIB tree
    • snmp_set_enum_print — Return all values that are enums with their enum value instead of the raw integer
    • snmp_set_oid_numeric_print — Set the OID output format
    • snmp_set_oid_output_format — Set the OID output format
    • snmp_set_quick_print — 设置 UCD SNMP 库中 quick_print 的值
    • snmp_set_valueretrieval — Specify the method how the SNMP values will be returned
    • snmp2_get — Fetch an SNMP object
    • snmp2_getnext — Fetch the SNMP object which follows the given object id
    • snmp2_real_walk — Return all objects including their respective object ID within the specified one
    • snmp2_set — Set the value of an SNMP object
    • snmp2_walk — Fetch all the SNMP objects from an agent
    • snmp3_get — Fetch an SNMP object
    • snmp3_getnext — Fetch the SNMP object which follows the given object id
    • snmp3_real_walk — Return all objects including their respective object ID within the specified one
    • snmp3_set — Set the value of an SNMP object
    • snmp3_walk — Fetch all the SNMP objects from an agent
    • snmpget — 获取一个 SNMP 对象
    • snmpgetnext — Fetch the SNMP object which follows the given object id
    • snmprealwalk — 返回指定的所有对象，包括它们各自的对象 ID
    • snmpset — 设置一个 SNMP 对象
    • snmpwalk — 从代理返回所有的 SNMP 对象
    • snmpwalkoid — 查询关于网络实体的信息树
  • SNMP — The SNMP class
    • SNMP::close — Close SNMP session
    • SNMP::__construct — Creates SNMP instance representing session to remote SNMP agent
    • SNMP::get — Fetch an SNMP object
    • SNMP::getErrno — Get last error code
    • SNMP::getError — Get last error message
    • SNMP::getnext — Fetch an SNMP object which follows the given object id
    • SNMP::set — Set the value of an SNMP object
    • SNMP::setSecurity — Configures security-related SNMPv3 session parameters
    • SNMP::walk — Fetch SNMP object subtree
  • SNMPException — The SNMPException class
SAMMessage::header
简介
其它服务


简介

The SNMP extension provides a very simple and easily usable toolset for managing remote devices via the Simple Network Management Protocol.

As it is a wrapper around the underlying Net-SNMP (or UCD-SNMP on older systems) library, all basic concepts are the same and the PHP functions change their behaviour depending on the Net-SNMP configuration files and environment variables.

Beginning with PHP 5.4, an OO API is available.

More information about Net-SNMP can be found at » http://www.net-snmp.org/

SNMP
安装／配置
SNMP


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
SNMP


需求

In order to use the SNMP functions requires installation of the » Net-SNMP package. SNMPv3 functions available only when » OpenSSL package is installed too.

On Windows SNMP functions are only available on NT and not on Win95/98.

Beginning with PHP 5.4.0 Net-SNMP version 5.3+ is required for Unix installations and Net-SNMP version 5.4+ for Windows.

安装／配置
安装
安装／配置


安装

重要提示：为了使用 UCD SNMP 包，需要在编译之前将 NO_ZEROLENGTH_COMMUNITY 定义为 1。 在配置 UCD SNMP 之后，编辑 config.h 或 acconfig.h，查找 NO_ZEROLENGTH_COMMUNITY，将 #define 所在行的注释去掉。修改后应该类似这样：

#define NO_ZEROLENGTH_COMMUNITY 1
然后使用 --with-snmp[=DIR] 选项编译 PHP。

如果在组合 SNMP 命令时看到奇怪的字段错误，那就是因为没有遵从上述说明。如果不想重新编译 UCD SNMP，可以使用 --enable-ucd-snmp-hack 开关编译 PHP 以绕开上述错误。

Windows 版本在目录 mibs 中包含了支持 SNMP 的文件。此目录应该移到 DRIVE:\usr\mibs，其中 DRIVE 是安装 PHP 所在的盘符，例如 c:\usr\mibs。

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

For the snmp_set_oid_output_format()
SNMP_OID_OUTPUT_SUFFIX (integer)
As of 5.4.0
SNMP_OID_OUTPUT_MODULE (integer)
As of 5.4.0
SNMP_OID_OUTPUT_FULL (integer)
As of 5.2.0
SNMP_OID_OUTPUT_NUMERIC (integer)
As of 5.2.0
SNMP_OID_OUTPUT_UCD (integer)
As of 5.4.0
SNMP_OID_OUTPUT_NONE (integer)
As of 5.4.0
For the snmp_set_valueretrieval()
SNMP_VALUE_LIBRARY (integer)
SNMP_VALUE_PLAIN (integer)
SNMP_VALUE_OBJECT (integer)
SNMP types as returned if SNMP_VALUE_OBJECT was used with snmp_set_valueretrieval()
SNMP_BIT_STR (integer)
SNMP_OCTET_STR (integer)
SNMP_OPAQUE (integer)
SNMP_NULL (integer)
SNMP_OBJECT_ID (integer)
SNMP_IPADDRESS (integer)
SNMP_COUNTER (integer)
SNMP_UNSIGNED (integer)
SNMP_TIMETICKS (integer)
SNMP_UINTEGER (integer)
SNMP_INTEGER (integer)
SNMP_COUNTER64 (integer)
资源类型
SNMP 函数
SNMP


SNMP 函数

Table of Contents

  • snmp_get_quick_print — 返回 UCD 库中 quick_print 设置的当前值
  • snmp_get_valueretrieval — Return the method how the SNMP values will be returned
  • snmp_read_mib — Reads and parses a MIB file into the active MIB tree
  • snmp_set_enum_print — Return all values that are enums with their enum value instead of the raw integer
  • snmp_set_oid_numeric_print — Set the OID output format
  • snmp_set_oid_output_format — Set the OID output format
  • snmp_set_quick_print — 设置 UCD SNMP 库中 quick_print 的值
  • snmp_set_valueretrieval — Specify the method how the SNMP values will be returned
  • snmp2_get — Fetch an SNMP object
  • snmp2_getnext — Fetch the SNMP object which follows the given object id
  • snmp2_real_walk — Return all objects including their respective object ID within the specified one
  • snmp2_set — Set the value of an SNMP object
  • snmp2_walk — Fetch all the SNMP objects from an agent
  • snmp3_get — Fetch an SNMP object
  • snmp3_getnext — Fetch the SNMP object which follows the given object id
  • snmp3_real_walk — Return all objects including their respective object ID within the specified one
  • snmp3_set — Set the value of an SNMP object
  • snmp3_walk — Fetch all the SNMP objects from an agent
  • snmpget — 获取一个 SNMP 对象
  • snmpgetnext — Fetch the SNMP object which follows the given object id
  • snmprealwalk — 返回指定的所有对象，包括它们各自的对象 ID
  • snmpset — 设置一个 SNMP 对象
  • snmpwalk — 从代理返回所有的 SNMP 对象
  • snmpwalkoid — 查询关于网络实体的信息树
预定义常量
snmp_get_quick_print
SNMP


返回 UCD 库中 quick_print 设置的当前值

SNMP 函数
snmp_get_valueretrieval
SNMP 函数
PHP Manual

snmp_get_quick_print

(PHP 4, PHP 5, PHP 7)

snmp_get_quick_print — 返回 UCD 库中 quick_print 设置的当前值

说明

bool snmp_get_quick_print ( void )

返回保存在 UCD 库中 quick_print 的当前值。默认情况下 quick_print 为 off。

Example #1 snmp_get_quick_print() 示例

<?php
  $quickprint = snmp_get_quick_print();
?>

如果 quick_print 为 off，上边的函数调用将返回 FALSE，而如果 quick_print 为 on，则返回 TRUE。

snmp_get_quick_print() 仅在使用了 UCD SNMP 库时才可用。当使用 Windows SNMP 库时，此函数不可用。

参见 snmp_set_quick_print() 查看 quick_print 的详细说明。

SNMP 函数
snmp_get_valueretrieval
SNMP 函数


Return the method how the SNMP values will be returned

snmp_get_quick_print
snmp_read_mib
SNMP 函数
PHP Manual

snmp_get_valueretrieval

(PHP 4 >= 4.3.3, PHP 5, PHP 7)

snmp_get_valueretrieval — Return the method how the SNMP values will be returned

说明

int snmp_get_valueretrieval ( void )

返回值

OR-ed combitantion of constants ( SNMP_VALUE_LIBRARY or SNMP_VALUE_PLAIN ) with possible SNMP_VALUE_OBJECT set.

范例

Example #1 Using snmp_get_valueretrieval

<?php
 $ret = snmpget('localhost', 'public', 'IF-MIB::ifName.1');
 if (snmp_get_valueretrieval() & SNMP_VALUE_OBJECT) {
   echo $ret->value;
 } else {
   echo $ret;
 }
?>

参见

  • snmp_set_valueretrieval() - Specify the method how the SNMP values will be returned
  • 预定义常量

snmp_get_quick_print
snmp_read_mib
SNMP 函数


Reads and parses a MIB file into the active MIB tree

snmp_get_valueretrieval
snmp_set_enum_print
SNMP 函数
PHP Manual

snmp_read_mib

(PHP 5, PHP 7)

snmp_read_mib — Reads and parses a MIB file into the active MIB tree

说明

bool snmp_read_mib ( string $filename )

This function is used to load additional, e.g. vendor specific, MIBs so that human readable OIDs like VENDOR-MIB::foo.1 instead of error prone numeric OIDs can be used.

The order in which the MIBs are loaded does matter as the underlying Net-SNMP libary will print warnings if referenced objects cannot be resolved.

参数

filename

The filename of the MIB.

范例

Example #1 Using snmp_read_mib()

<?php
 print_r( snmprealwalk('localhost', 'public', '.1.3.6.1.2.1.2.3.4.5') );

 snmp_read_mib('./FOO-BAR-MIB.txt');
 print_r( snmprealwalk('localhost', 'public', 'FOO-BAR-MIB::someTable' );
?>

The above example is made up but the results would look like:

Array
(
    [iso.3.6.1.2.1.2.3.4.5.0] => Gauge32: 6
)
Array
(
    [FOO-BAR-MIB::someTable.0] => Gauge32: 6
)

snmp_get_valueretrieval
snmp_set_enum_print
SNMP 函数


Return all values that are enums with their enum value instead of the raw integer

snmp_read_mib
snmp_set_oid_numeric_print
SNMP 函数
PHP Manual

snmp_set_enum_print

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

snmp_set_enum_print — Return all values that are enums with their enum value instead of the raw integer

说明

bool snmp_set_enum_print ( int $enum_print )

This function toggles if snmpwalk/snmpget etc. should automatically lookup enum values in the MIB and return them together with their human readable string.

参数

enum_print

As the value is interpreted as boolean by the Net-SNMP library, it can only be "0" or "1".

范例

Example #1 Using snmp_set_enum_print()

<?php
 snmp_set_enum_print(0);
 echo snmpget('localhost', 'public', 'IF-MIB::ifOperStatus.3') . "\n";
 snmp_set_enum_print(1);
 echo snmpget('localhost', 'public', 'IF-MIB::ifOperStatus.3') . "\n";
?>

The above would return

 INTEGER: up(1)
 INTEGER: 1

注释

Note:

snmp_set_enum_print() is only available when using the UCD SNMP library. This function is not available when using the Windows SNMP library.

snmp_read_mib
snmp_set_oid_numeric_print
SNMP 函数


Set the OID output format

snmp_set_enum_print
snmp_set_oid_output_format
SNMP 函数
PHP Manual

snmp_set_oid_numeric_print

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

snmp_set_oid_numeric_print — Set the OID output format

说明

void snmp_set_oid_numeric_print ( int $oid_format )

此函数是该函数的别名： snmp_set_oid_output_format().

更新日志

版本 | 说明
5.2.0 | Since PHP 5.2.0.

参见

  • snmp_set_oid_output_format() - Set the OID output format

snmp_set_enum_print
snmp_set_oid_output_format
SNMP 函数


Set the OID output format

snmp_set_oid_numeric_print
snmp_set_quick_print
SNMP 函数
PHP Manual

snmp_set_oid_output_format

(PHP 5 >= 5.2.0, PHP 7)

snmp_set_oid_output_format — Set the OID output format

说明

bool snmp_set_oid_output_format ( int $oid_format = SNMP_OID_OUTPUT_MODULE )

snmp_set_oid_output_format() sets the output format to be full or numeric.

参数

oid_format
OID .1.3.6.1.2.1.1.3.0 representation for various oid_format values
SNMP_OID_OUTPUT_FULL | .iso.org.dod.internet.mgmt.mib-2.system.sysUpTime.sysUpTimeInstance
SNMP_OID_OUTPUT_NUMERIC | .1.3.6.1.2.1.1.3.0

Begining from PHP 5.4.0 four additional constants available:

SNMP_OID_OUTPUT_MODULE | DISMAN-EVENT-MIB::sysUpTimeInstance
SNMP_OID_OUTPUT_SUFFIX | sysUpTimeInstance
SNMP_OID_OUTPUT_UCD | system.sysUpTime.sysUpTimeInstance
SNMP_OID_OUTPUT_NONE | Undefined

返回值

没有返回值。

注释

Note:

snmp_set_oid_output_format() is only available when using the UCD SNMP library. This function is not available when using the Windows SNMP library.

范例

Example #1 Using snmprealwalk()

<?php

 snmp_read_mib("/usr/share/mibs/netsnmp/NET-SNMP-TC");

 // default or SNMP_OID_OUTPUT_MODULE in PHP >= 5.3.6
 print_r( snmprealwalk('localhost', 'public', 'RFC1213-MIB::sysObjectID') );

 snmp_set_oid_output_format(SNMP_OID_OUTPUT_NUMERIC);
 print_r( snmprealwalk('localhost', 'public', 'RFC1213-MIB::sysObjectID') );

 snmp_set_oid_output_format(SNMP_OID_OUTPUT_FULL);
 print_r( snmprealwalk('localhost', 'public', 'RFC1213-MIB::sysObjectID') );
?>

The above would output:

 Array
 (
    [RFC1213-MIB::sysObjectID.0] => OID: NET-SNMP-TC::linux
 )
 Array
 (
    [.1.3.6.1.2.1.1.2.0] => OID: .1.3.6.1.4.1.8072.3.2.10
 )
 Array
 (
    [.iso.org.dod.internet.mgmt.mib-2.system.sysObjectID.0] => OID: .iso.org.dod.internet.private.enterprises.netSnmp.netSnmpEnumerations.netSnmpAgentOIDs.linux
 )

snmp_set_oid_numeric_print
snmp_set_quick_print
SNMP 函数


设置 UCD SNMP 库中 quick_print 的值

snmp_set_oid_output_format
snmp_set_valueretrieval
SNMP 函数
PHP Manual

snmp_set_quick_print

(PHP 4, PHP 5, PHP 7)

snmp_set_quick_print — 设置 UCD SNMP 库中 quick_print 的值

说明

void snmp_set_quick_print ( bool $quick_print )

设置 UCD SNMP 库中 quick_print 的值。当此值被设置（1），SNMP 库将返回'快速打印'值。这意味着将只打印值。当 quick_print 被禁用时（此为默认情况），UCD SNMP 库将打印出额外信息，包括值的类型（如 IpAddress 或 OID）。此外，如果 quick_print 是禁用的，UCD SNMP 库将为所有字符串额外打印出三个或更少字符的十六进制值。

当需要使用返回的信息而不是显示它时，经常会用到设置 quick_print。

<?php
snmp_set_quick_print(0);
$a = snmpget("127.0.0.1", "public", ".1.3.6.1.2.1.2.2.1.9.1");
echo "$a< br />\n";
snmp_set_quick_print(1);
$a = snmpget("127.0.0.1", "public", ".1.3.6.1.2.1.2.2.1.9.1");
echo "$a<br />\n";
?>

第一个打印出来的值可能时：'Timeticks: (0) 0:00:00.00'，然而当设置了 quick_print 之后，只是打印 '0:00:00.00'。

默认情况下 UCD SNMP 库返回冗余的值，而 quick_print 则用来只返回值。

现时，字符串依然返回额外的引号，这将会在后续发行版中更正。

snmp_set_quick_print() 仅在使用了 UCD SNMP 库时才可用。当使用 Windows SNMP 库时，此函数不可用。

snmp_set_oid_output_format
snmp_set_valueretrieval
SNMP 函数


Specify the method how the SNMP values will be returned

snmp_set_quick_print
snmp2_get
SNMP 函数
PHP Manual

snmp_set_valueretrieval

(PHP 4 >= 4.3.3, PHP 5, PHP 7)

snmp_set_valueretrieval — Specify the method how the SNMP values will be returned

说明

bool snmp_set_valueretrieval ( int $method = SNMP_VALUE_LIBRARY )

参数

method
types
SNMP_VALUE_LIBRARY | The return values will be as returned by the Net-SNMP library.
SNMP_VALUE_PLAIN | The return values will be the plain value without the SNMP type hint.
SNMP_VALUE_OBJECT | The return values will be objects with the properties "value" and "type", where the latter is one of the SNMP_OCTET_STR, SNMP_COUNTER etc. constants. The way "value" is returned is based on which one of constants SNMP_VALUE_LIBRARY, SNMP_VALUE_PLAIN is set.

范例

Example #1 Using snmp_set_valueretrieval()

<?php
 snmp_set_valueretrieval(SNMP_VALUE_LIBRARY);
 $ret = snmpget('localhost', 'public', 'IF-MIB::ifName.1');
 // $ret = "STRING: lo"

 snmp_set_valueretrieval(SNMP_VALUE_PLAIN);
 $ret = snmpget('localhost', 'public', 'IF-MIB::ifName.1');
 // $ret = "lo";

 snmp_set_valueretrieval(SNMP_VALUE_OBJECT);
 $ret = snmpget('localhost', 'public', 'IF-MIB::ifName.1');
 // stdClass Object
 // (
 //   [type] => 4        <-- SNMP_OCTET_STR, see constants
 //   [value] => lo
 // )

 // PHP 5.4+ examples
 snmp_set_valueretrieval(SNMP_VALUE_OBJECT | SNMP_VALUE_PLAIN);
 $ret = snmpget('localhost', 'public', 'IF-MIB::ifName.1');
 // stdClass Object
 // (
 //   [type] => 4        <-- SNMP_OCTET_STR, see constants
 //   [value] => lo
 // )

 snmp_set_valueretrieval(SNMP_VALUE_OBJECT | SNMP_VALUE_LIBRARY);
 $ret = snmpget('localhost', 'public', 'IF-MIB::ifName.1');
 // stdClass Object
 // (
 //   [type] => 4        <-- SNMP_OCTET_STR, see constants
 //   [value] => STRING: lo
 // )

?>

更新日志

版本 | 说明
5.4.0 | Constants SNMP_VALUE_PLAIN or SNMP_VALUE_LIBRARY may be combined with SNMP_VALUE_OBJECT resulting different way of representing contents of value array element in return value of GET-function. If no SNMP_VALUE_{PLAIN,LIBRARY} constant is accompanying SNMP_VALUE_OBJECT, SNMP_VALUE_LIBRARY is used. Prior to 5.4.0 SNMP_VALUE_OBJECT effecively meant SNMP_VALUE_OBJECT|SNMP_VALUE_PLAIN.

参见

  • snmp_get_valueretrieval() - Return the method how the SNMP values will be returned
  • 预定义常量

snmp_set_quick_print
snmp2_get
SNMP 函数


Fetch an SNMP object

snmp_set_valueretrieval
snmp2_getnext
SNMP 函数
PHP Manual

snmp2_get

(PHP 5 >= 5.2.0, PHP 7)

snmp2_get — Fetch an SNMP object

说明

string snmp2_get ( string $host , string $community , string $object_id [, string $timeout = 1000000 [, string $retries = 5 ]] )

The snmp2_get() function is used to read the value of an SNMP object specified by the object_id.

参数

host

The SNMP agent.

community

The read community.

object_id

The SNMP object.

timeout

The number of microseconds until the first timeout.

retries

The number of times to retry if timeouts occur.

返回值

Returns SNMP object value on success or FALSE on error.

范例

Example #1 Using snmp2_get()

<?php
$syscontact = snmp2_get("127.0.0.1", "public", "system.SysContact.0");
?>

参见

  • snmp2_set() - Set the value of an SNMP object

snmp_set_valueretrieval
snmp2_getnext
SNMP 函数


Fetch the SNMP object which follows the given object id

snmp2_get
snmp2_real_walk
SNMP 函数
PHP Manual

snmp2_getnext

(PHP >= 5.2.0)

snmp2_getnext — Fetch the SNMP object which follows the given object id

说明

string snmp2_getnext ( string $host , string $community , string $object_id [, string $timeout = 1000000 [, string $retries = 5 ]] )

The snmp2_get_next() function is used to read the value of the SNMP object that follows the specified object_id.

参数

host

The hostname of the SNMP agent (server).

community

The read community.

object_id

The SNMP object id which precedes the wanted one.

timeout

The number of microseconds until the first timeout.

retries

The number of times to retry if timeouts occur.

返回值

Returns SNMP object value on success or FALSE on error. In case of an error, an E_WARNING message is shown.

范例

Example #1 Using snmp2_get_next()

<?php
$nameOfSecondInterface = snmp2_get_next('localhost', 'public', 'IF-MIB::ifName.1';
?>

参见

  • snmp2_get() - Fetch an SNMP object
  • snmp2_walk() - Fetch all the SNMP objects from an agent

snmp2_get
snmp2_real_walk
SNMP 函数


Return all objects including their respective object ID within the specified one

snmp2_getnext
snmp2_set
SNMP 函数
PHP Manual

snmp2_real_walk

(PHP >= 5.2.0)

snmp2_real_walk — Return all objects including their respective object ID within the specified one

说明

array snmp2_real_walk ( string $host , string $community , string $object_id [, string $timeout = 1000000 [, string $retries = 5 ]] )

The snmp2_real_walk() function is used to traverse over a number of SNMP objects starting from object_id and return not only their values but also their object ids.

参数

host

The hostname of the SNMP agent (server).

community

The read community.

object_id

The SNMP object id which precedes the wanted one.

timeout

The number of microseconds until the first timeout.

retries

The number of times to retry if timeouts occur.

返回值

Returns an associative array of the SNMP object ids and their values on success or FALSE on error. In case of an error, an E_WARNING message is shown.

范例

Example #1 Using snmp2_real_walk()

<?php
 print_r(snmp2_real_walk("localhost", "public", "IF-MIB::ifName"));
?>

The above will output something like:

    Array
      (
      [IF-MIB::ifName.1] => STRING: lo
      [IF-MIB::ifName.2] => STRING: eth0
      [IF-MIB::ifName.3] => STRING: eth2
      [IF-MIB::ifName.4] => STRING: sit0
      [IF-MIB::ifName.5] => STRING: sixxs
    )

参见

  • snmp2_walk() - Fetch all the SNMP objects from an agent

snmp2_getnext
snmp2_set
SNMP 函数


Set the value of an SNMP object

snmp2_real_walk
snmp2_walk
SNMP 函数
PHP Manual

snmp2_set

(PHP >= 5.2.0)

snmp2_set — Set the value of an SNMP object

说明

bool snmp2_set ( string $host , string $community , string $object_id , string $type , string $value [, string $timeout = 1000000 [, string $retries = 5 ]] )

snmp2_set() is used to set the value of an SNMP object specified by the object_id.

参数

host

The hostname of the SNMP agent (server).

community

The write community.

object_id

The SNMP object id.

type

MIB 定义了各个对象 id 的类型。必须是下面列出的单个字符之一。

类型
= MIB类型
i | INTEGER
u | INTEGER
s | STRING
x | HEX STRING
d | DECIMAL STRING
n | NULLOBJ
o | OBJID
t | TIMETICKS
a | IPADDRESS
b | BITS

如果在编译 SNMP 库时定义了 OPAQUE_SPECIAL_TYPES，那么下列值是合法的：

types
U | unsigned int64
I | signed int64
F | float
D | double

这些值大都会使用与 ASN.1 相符的类型。's'，'x'，'d' 以及 'b' 都是指定一个八字节字符串值的方式。并且 'u' 无符号类型也可用于处理 Gauge32 值。

如果 MIB 文件是用 "snmp_read_mib" 或者通过在 libsnmp config 中指定而加载入 MIB 树时， '=' 可以被用作为所有对象的 type 参数，因为 type 可以被自动从 MIB 中读取。

注意有两种方式可以设定 BITS 类型的变量，例如 "SYNTAX BITS {telnet(0), ftp(1), http(2), icmp(3), snmp(4), ssh(5), https(6)}":

  • 使用 "b" 类型以及一个位数的列表。不推荐使用此方法，因为 GET 查询对同一个 OID 将会返回例如 0xF8。
  • 使用 "x" 类型以及一个十六进制数但是不需要通常的 "0x" 前缀。

更多细节见范例部分。

value

The new value.

timeout

The number of microseconds until the first timeout.

retries

The number of times to retry if timeouts occur.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

If the SNMP host rejects the data type, an E_WARNING message like "Warning: Error in packet. Reason: (badValue) The value given has the wrong type or length." is shown. If an unknown or invalid OID is specified the warning probably reads "Could not add variable".

范例

Example #1 Using snmp2_set()

<?php
  snmp2_set("localhost", "public", "IF-MIB::ifAlias.3", "s", "foo");
?>

Example #2 Using snmp2_set() for setting BITS SNMP object id

<?php
  snmp2_set("localhost", "public", 'FOO-MIB::bar.42', 'b', '0 1 2 3 4');
// or
  snmp2_set("localhost", "public", 'FOO-MIB::bar.42', 'x', 'F0');
?>

参见

  • snmp2_get() - Fetch an SNMP object

snmp2_real_walk
snmp2_walk
SNMP 函数


Fetch all the SNMP objects from an agent

snmp2_set
snmp3_get
SNMP 函数
PHP Manual

snmp2_walk

(PHP >= 5.2.0)

snmp2_walk — Fetch all the SNMP objects from an agent

说明

array snmp2_walk ( string $host , string $community , string $object_id [, string $timeout = 1000000 [, string $retries = 5 ]] )

snmp2_walk() function is used to read all the values from an SNMP agent specified by the hostname.

参数

host

The SNMP agent (server).

community

The read community.

object_id

If NULL, object_id is taken as the root of the SNMP objects tree and all objects under that tree are returned as an array.

If object_id is specified, all the SNMP objects below that object_id are returned.

timeout

The number of microseconds until the first timeout.

retries

The number of times to retry if timeouts occur.

返回值

Returns an array of SNMP object values starting from the object_id as root or FALSE on error.

范例

Example #1 snm2_pwalk() Example

<?php
$a = snmp2_walk("127.0.0.1", "public", "");

foreach ($a as $val) {
    echo "$val\n";
}

?>

Above function call would return all the SNMP objects from the SNMP agent running on localhost. One can step through the values with a loop

参见

  • snmp2_real_walk() - Return all objects including their respective object ID within the specified one

snmp2_set
snmp3_get
SNMP 函数


Fetch an SNMP object

snmp2_walk
snmp3_getnext
SNMP 函数
PHP Manual

snmp3_get

(PHP 4, PHP 5, PHP 7)

snmp3_get — Fetch an SNMP object

说明

string snmp3_get ( string $host , string $sec_name , string $sec_level , string $auth_protocol , string $auth_passphrase , string $priv_protocol , string $priv_passphrase , string $object_id [, string $timeout = 1000000 [, string $retries = 5 ]] )

The snmp3_get() function is used to read the value of an SNMP object specified by the object_id.

参数

host

The hostname of the SNMP agent (server).

sec_name

the security name, usually some kind of username

sec_level

the security level (noAuthNoPriv|authNoPriv|authPriv)

auth_protocol

the authentication protocol (MD5 or SHA)

auth_passphrase

the authentication pass phrase

priv_protocol

the privacy protocol (DES or AES)

priv_passphrase

the privacy pass phrase

object_id

The SNMP object id.

timeout

The number of microseconds until the first timeout.

retries

The number of times to retry if timeouts occur.

返回值

Returns SNMP object value on success or FALSE on error.

范例

Example #1 Using snmp3_get()

<?php
$nameOfSecondInterface = snmp3_get('localhost', 'james', 'authPriv', 'SHA', 'secret007', 'AES', 'secret007', 'IF-MIB::ifName.2');
?>

参见

  • snmp3_set() - Set the value of an SNMP object

snmp2_walk
snmp3_getnext
SNMP 函数


Fetch the SNMP object which follows the given object id

snmp3_get
snmp3_real_walk
SNMP 函数
PHP Manual

snmp3_getnext

(PHP 5, PHP 7)

snmp3_getnext — Fetch the SNMP object which follows the given object id

说明

string snmp3_getnext ( string $host , string $sec_name , string $sec_level , string $auth_protocol , string $auth_passphrase , string $priv_protocol , string $priv_passphrase , string $object_id [, string $timeout = 1000000 [, string $retries = 5 ]] )

The snmp3_getnext() function is used to read the value of the SNMP object that follows the specified object_id.

参数

host

The hostname of the SNMP agent (server).

sec_name

the security name, usually some kind of username

sec_level

the security level (noAuthNoPriv|authNoPriv|authPriv)

auth_protocol

the authentication protocol (MD5 or SHA)

auth_passphrase

the authentication pass phrase

priv_protocol

the privacy protocol (DES or AES)

priv_passphrase

the privacy pass phrase

object_id

The SNMP object id.

timeout

The number of microseconds until the first timeout.

retries

The number of times to retry if timeouts occur.

返回值

Returns SNMP object value on success or FALSE on error. In case of an error, an E_WARNING message is shown.

范例

Example #1 Using snmp3_getnext()

<?php
$nameOfSecondInterface = snmp3_getnext('localhost', 'james', 'authPriv', 'SHA', 'secret007', 'AES', 'secret007', 'IF-MIB::ifName.1');
?>

参见

  • snmp3_get() - Fetch an SNMP object
  • snmp3_walk() - Fetch all the SNMP objects from an agent

snmp3_get
snmp3_real_walk
SNMP 函数


Return all objects including their respective object ID within the specified one

snmp3_getnext
snmp3_set
SNMP 函数
PHP Manual

snmp3_real_walk

(PHP 4, PHP 5, PHP 7)

snmp3_real_walk — Return all objects including their respective object ID within the specified one

说明

array snmp3_real_walk ( string $host , string $sec_name , string $sec_level , string $auth_protocol , string $auth_passphrase , string $priv_protocol , string $priv_passphrase , string $object_id [, string $timeout = 1000000 [, string $retries = 5 ]] )

The snmp3_real_walk() function is used to traverse over a number of SNMP objects starting from object_id and return not only their values but also their object ids.

参数

host

The hostname of the SNMP agent (server).

sec_name

the security name, usually some kind of username

sec_level

the security level (noAuthNoPriv|authNoPriv|authPriv)

auth_protocol

the authentication protocol (MD5 or SHA)

auth_passphrase

the authentication pass phrase

priv_protocol

the privacy protocol (DES or AES)

priv_passphrase

the privacy pass phrase

object_id

The SNMP object id.

timeout

The number of microseconds until the first timeout.

retries

The number of times to retry if timeouts occur.

返回值

Returns an associative array of the SNMP object ids and their values on success or FALSE on error. In case of an error, an E_WARNING message is shown.

范例

Example #1 Using snmp3_real_walk()

<?php
 var_export(snmp3_real_walk('localhost', 'james', 'authPriv', 'SHA', 'secret007', 'AES', 'secret007', 'IF-MIB::ifName'));
?>

The above will output something like:

array (
  'IF-MIB::ifName.1' => 'STRING: lo',
  'IF-MIB::ifName.2' => 'STRING: eth0',
  'IF-MIB::ifName.3' => 'STRING: eth2',
  'IF-MIB::ifName.4' => 'STRING: sit0',
  'IF-MIB::ifName.5' => 'STRING: sixxs',
)

参见

  • snmpwalk() - 从代理返回所有的 SNMP 对象

snmp3_getnext
snmp3_set
SNMP 函数


Set the value of an SNMP object

snmp3_real_walk
snmp3_walk
SNMP 函数
PHP Manual

snmp3_set

(PHP 4, PHP 5, PHP 7)

snmp3_set — Set the value of an SNMP object

说明

bool snmp3_set ( string $host , string $sec_name , string $sec_level , string $auth_protocol , string $auth_passphrase , string $priv_protocol , string $priv_passphrase , string $object_id , string $type , string $value [, int $timeout = 1000000 [, int $retries = 5 ]] )

snmp3_set() is used to set the value of an SNMP object specified by the object_id.

Even if the security level does not use an auth or priv protocol/password valid values have to be specified.

参数

host

The hostname of the SNMP agent (server).

sec_name

the security name, usually some kind of username

sec_level

the security level (noAuthNoPriv|authNoPriv|authPriv)

auth_protocol

the authentication protocol (MD5 or SHA)

auth_passphrase

the authentication pass phrase

priv_protocol

the privacy protocol (DES or AES)

priv_passphrase

the privacy pass phrase

object_id

The SNMP object id.

type

MIB 定义了各个对象 id 的类型。必须是下面列出的单个字符之一。

类型
= MIB类型
i | INTEGER
u | INTEGER
s | STRING
x | HEX STRING
d | DECIMAL STRING
n | NULLOBJ
o | OBJID
t | TIMETICKS
a | IPADDRESS
b | BITS

如果在编译 SNMP 库时定义了 OPAQUE_SPECIAL_TYPES，那么下列值是合法的：

types
U | unsigned int64
I | signed int64
F | float
D | double

这些值大都会使用与 ASN.1 相符的类型。's'，'x'，'d' 以及 'b' 都是指定一个八字节字符串值的方式。并且 'u' 无符号类型也可用于处理 Gauge32 值。

如果 MIB 文件是用 "snmp_read_mib" 或者通过在 libsnmp config 中指定而加载入 MIB 树时， '=' 可以被用作为所有对象的 type 参数，因为 type 可以被自动从 MIB 中读取。

注意有两种方式可以设定 BITS 类型的变量，例如 "SYNTAX BITS {telnet(0), ftp(1), http(2), icmp(3), snmp(4), ssh(5), https(6)}":

  • 使用 "b" 类型以及一个位数的列表。不推荐使用此方法，因为 GET 查询对同一个 OID 将会返回例如 0xF8。
  • 使用 "x" 类型以及一个十六进制数但是不需要通常的 "0x" 前缀。

更多细节见范例部分。

value

The new value

timeout

The number of microseconds until the first timeout.

retries

The number of times to retry if timeouts occur.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

If the SNMP host rejects the data type, an E_WARNING message like "Warning: Error in packet. Reason: (badValue) The value given has the wrong type or length." is shown. If an unknown or invalid OID is specified the warning probably reads "Could not add variable".

范例

Example #1 Using snmp3_set()

<?php
  snmp3_set('localhost', 'james', 'authPriv', 'SHA', 'secret007', 'AES', 'secret007', 'IF-MIB::ifAlias.3', 's', "foo");
?>

Example #2 Using snmp3_set() for setting BITS SNMP object id

<?php
  snmp3_set('localhost', 'james', 'authPriv', 'SHA', 'secret007', 'AES', 'secret007', 'FOO-MIB::bar.42', 'b', '0 1 2 3 4');
// or
  snmp3_set('localhost', 'james', 'authPriv', 'SHA', 'secret007', 'AES', 'secret007', 'FOO-MIB::bar.42', 'x', 'F0');
?>
snmp3_real_walk
snmp3_walk
SNMP 函数


Fetch all the SNMP objects from an agent

snmp3_set
snmpget
SNMP 函数
PHP Manual

snmp3_walk

(PHP 4, PHP 5, PHP 7)

snmp3_walk — Fetch all the SNMP objects from an agent

说明

array snmp3_walk ( string $host , string $sec_name , string $sec_level , string $auth_protocol , string $auth_passphrase , string $priv_protocol , string $priv_passphrase , string $object_id [, string $timeout = 1000000 [, string $retries = 5 ]] )

snmp3_walk() function is used to read all the values from an SNMP agent specified by the hostname.

Even if the security level does not use an auth or priv protocol/password valid values have to be specified.

参数

host

The hostname of the SNMP agent (server).

sec_name

the security name, usually some kind of username

sec_level

the security level (noAuthNoPriv|authNoPriv|authPriv)

auth_protocol

the authentication protocol (MD5 or SHA)

auth_passphrase

the authentication pass phrase

priv_protocol

the privacy protocol (DES or AES)

priv_passphrase

the privacy pass phrase

object_id

If NULL, object_id is taken as the root of the SNMP objects tree and all objects under that tree are returned as an array.

If object_id is specified, all the SNMP objects below that object_id are returned.

timeout

The number of microseconds until the first timeout.

retries

The number of times to retry if timeouts occur.

返回值

Returns an array of SNMP object values starting from the object_id as root or FALSE on error.

范例

Example #1 snmp3_walk() Example

<?php
$ret = snmp3_walk('localhost', 'james', 'authPriv', 'SHA', 'secret007', 'AES', 'secret007', 'IF-MIB::ifName');
var_export($ret);
?>

Above function call would return all the SNMP objects from the SNMP agent running on localhost:

array (
  0 => 'STRING: lo',
  1 => 'STRING: eth0',
  2 => 'STRING: eth2',
  3 => 'STRING: sit0',
  4 => 'STRING: sixxs',
)

参见

  • snmp3_real_walk() - Return all objects including their respective object ID within the specified one

snmp3_set
snmpget
SNMP 函数


获取一个 SNMP 对象

snmp3_walk
snmpgetnext
SNMP 函数
PHP Manual

snmpget

(PHP 4, PHP 5, PHP 7)

snmpget — 获取一个 SNMP 对象

说明

string snmpget ( string $hostname , string $community , string $object_id [, int $timeout [, int $retries ]] )

成功则返回 SNMP 的对象值，失败则返回 FALSE。

函数 snmpget() 用于读取由 object_id 指定的 SNMP 对象值。hostname 指定 SNMP 代理，而 community 参数指定具有读权限的域的名字。

<?php
$syscontact = snmpget("127.0.0.1", "public", "system.SysContact.0");
?>

snmp3_walk
snmpgetnext
SNMP 函数


Fetch the SNMP object which follows the given object id

snmpget
snmprealwalk
SNMP 函数
PHP Manual

snmpgetnext

(PHP 5, PHP 7)

snmpgetnext — Fetch the SNMP object which follows the given object id

说明

string snmpgetnext ( string $host , string $community , string $object_id [, int $timeout = 1000000 [, int $retries = 5 ]] )

The snmpgetnext() function is used to read the value of the SNMP object that follows the specified object_id.

参数

host

The hostname of the SNMP agent (server).

community

The read community.

object_id

The SNMP object id which precedes the wanted one.

timeout

The number of microseconds until the first timeout.

retries

The number of times to retry if timeouts occur.

返回值

Returns SNMP object value on success or FALSE on error. In case of an error, an E_WARNING message is shown.

范例

Example #1 Using snmpgetnext()

<?php
$nameOfSecondInterface = snmpgetnetxt('localhost', 'public', 'IF-MIB::ifName.1';
?>

参见

  • snmpget() - 获取一个 SNMP 对象
  • snmpwalk() - 从代理返回所有的 SNMP 对象

snmpget
snmprealwalk
SNMP 函数


返回指定的所有对象，包括它们各自的对象 ID

snmpgetnext
snmpset
SNMP 函数
PHP Manual

snmprealwalk

(PHP 4, PHP 5, PHP 7)

snmprealwalk — 返回指定的所有对象，包括它们各自的对象 ID

说明

array snmprealwalk ( string $host , string $community , string $object_id [, int $timeout = 1000000 [, int $retries = 5 ]] )

The snmprealwalk() function is used to traverse over a number of SNMP objects starting from object_id and return not only their values but also their object ids.

参数

host

The hostname of the SNMP agent (server).

community

The read community.

object_id

The SNMP object id which precedes the wanted one.

timeout

The number of microseconds until the first timeout.

retries

The number of times to retry if timeouts occur.

返回值

Returns an associative array of the SNMP object ids and their values on success or FALSE on error. In case of an error, an E_WARNING message is shown.

范例

Example #1 Using snmprealwalk()

<?php
 print_r(snmprealwalk("localhost", "public", "IF-MIB::ifName"));
?>

The above will output something like:

    Array
      (
      [IF-MIB::ifName.1] => STRING: lo
      [IF-MIB::ifName.2] => STRING: eth0
      [IF-MIB::ifName.3] => STRING: eth2
      [IF-MIB::ifName.4] => STRING: sit0
      [IF-MIB::ifName.5] => STRING: sixxs
    )

参见

  • snmpwalk() - 从代理返回所有的 SNMP 对象

snmpgetnext
snmpset
SNMP 函数


设置一个 SNMP 对象

snmprealwalk
snmpwalk
SNMP 函数
PHP Manual

snmpset

(PHP 4, PHP 5, PHP 7)

snmpset — 设置一个 SNMP 对象

说明

bool snmpset ( string $hostname , string $community , string $object_id , string $type , mixed $value [, int $timeout [, int $retries ]] )

设置指定的 SNMP 对象的值，成功返回 TRUE，错误则返回 FALSE。

函数 snmpset() 用于设置由 object_id 指定的 SNMP 对象的值。hostname 指定 SNMP 代理，而 community 参数指定具有读权限的域。

snmprealwalk
snmpwalk
SNMP 函数


从代理返回所有的 SNMP 对象

snmpset
snmpwalkoid
SNMP 函数
PHP Manual

snmpwalk

(PHP 4, PHP 5, PHP 7)

snmpwalk — 从代理返回所有的 SNMP 对象

说明

array snmpwalk ( string $hostname , string $community , string $object_id [, int $timeout [, int $retries ]] )

返回由 object_id 作为根的 SNMP 对象值所组成的数组，错误则返回 FALSE。

snmpwalk() 函数是用来读取所有由 hostname 指定的 SNMP 代理的值。Community 指定该代理中具有读权限的域。一个为 NULL 的 object_id 将被看作 SNMP 对象树的根，而在此树下的所有对象将作为一个数组被返回。如果指定了 object_id，则返回所有在 object_id 下的 SNMP 对象。

<?php
$a = snmpwalk("127.0.0.1", "public", "");
?>

上边的函数调用将从运行于本机的 SNMP 代理那里返回所有的 SNMP 对象。可使用循环遍历这些值。

<?php
foreach ($a as $val) {
    echo "$val\n";
}
?>

snmpset
snmpwalkoid
SNMP 函数


查询关于网络实体的信息树

snmpwalk
SNMP
SNMP 函数
PHP Manual

snmpwalkoid

(PHP 4, PHP 5, PHP 7)

snmpwalkoid — 查询关于网络实体的信息树

说明

array snmpwalkoid ( string $hostname , string $community , string $object_id [, int $timeout [, int $retries ]] )

返回一个包含对象 id 及它们各自对象值的关联数组，这些对象以 object_id 作为根，错误则返回 FALSE。

snmpwalkoid() 用于从 hostname 所指定的 SNMP 代理那里读取所有对象 id 及它们各自的值。community 指定对于该代理有读权限的域。一个为 NULL 的 object_id 将被看作 SNMP 对象树的根，而在此树下的所有对象将作为一个数组被返回。如果指定了 object_id，则返回所有在 object_id 下的 SNMP 对象。

snmpwalkoid() 和 snmpwalk() 的同时存在出于历史原因。提供两个函数是为了向后兼容。

<?php
$a = snmpwalkoid("127.0.0.1", "public", "");
?>

上边的函数调用将从运行于本机的 SNMP 代理那里返回所有的 SNMP 对象。可使用循环遍历这些值。

<?php
for (reset($a); $i = key($a); next($a)) {
    echo "$i: $a[$i]<br />\n";
}
?>

snmpwalk
SNMP
SNMP 函数


The SNMP class

(PHP 5 >= 5.4.0, PHP 7)

简介

Represents SNMP session.

类摘要

SNMP {
/* 属性 */
public int $max_oids ;
public int $valueretrieval ;
public bool $quick_print ;
public bool $enum_print ;
public int $oid_output_format ;
public bool $oid_increasing_check ;
public int $exceptions_enabled ;
public array $info ;
/* 方法 */
public __construct ( int $version , string $hostname , string $community [, int $timeout = 1000000 [, int $retries = 5 ]] )
public bool close ( void )
public mixed get ( mixed $object_id [, bool $preserve_keys = false ] )
public int getErrno ( void )
public string getError ( void )
public mixed getnext ( mixed $object_id )
public bool set ( mixed $object_id , mixed $type , mixed $value )
public bool setSecurity ( string $sec_level [, string $auth_protocol = [, string $auth_passphrase = [, string $priv_protocol = [, string $priv_passphrase = [, string $contextName = [, string $contextEngineID = ]]]]]] )
public array walk ( string $object_id [, bool $suffix_as_key = FALSE [, int $max_repetitions [, int $non_repeaters ]]] )
/* 常量 */
const integer ERRNO_NOERROR = 0 ;
const integer ERRNO_GENERIC = 2 ;
const integer ERRNO_TIMEOUT = 4 ;
const integer ERRNO_ERROR_IN_REPLY = 8 ;
const integer ERRNO_OID_NOT_INCREASING = 16 ;
const integer ERRNO_OID_PARSING_ERROR = 32 ;
const integer ERRNO_MULTIPLE_SET_QUERIES = 64 ;
const integer ERRNO_ANY = 126 ;
const integer VERSION_1 = 0 ;
const integer VERSION_2C = 1 ;
const integer VERSION_2c = 1 ;
const integer VERSION_3 = 3 ;
}

属性

max_oids

Maximum OID per GET/SET/GETBULK request

valueretrieval

Controls the method how the SNMP values will be returned

SNMP_VALUE_LIBRARY | The return values will be as returned by the Net-SNMP library.
SNMP_VALUE_PLAIN | The return values will be the plain value without the SNMP type hint.
SNMP_VALUE_OBJECT | The return values will be objects with the properties "value" and "type", where the latter is one of the SNMP_OCTET_STR, SNMP_COUNTER etc. constants. The way "value" is returned is based on which one of SNMP_VALUE_LIBRARY, SNMP_VALUE_PLAIN is set
quick_print

Value of quick_print within the NET-SNMP library

Sets the value of quick_print within the NET-SNMP library. When this is set (1), the SNMP library will return 'quick printed' values. This means that just the value will be printed. When quick_print is not enabled (default) the UCD SNMP library prints extra information including the type of the value (i.e. IpAddress or OID). Additionally, if quick_print is not enabled, the library prints additional hex values for all strings of three characters or less.

enum_print

Controls the way enum values are printed

Parameter toggles if walk/get etc. should automatically lookup enum values in the MIB and return them together with their human readable string.

oid_output_format

Controls OID output format

OID .1.3.6.1.2.1.1.3.0 representation for various oid_output_format values
SNMP_OID_OUTPUT_FULL | .iso.org.dod.internet.mgmt.mib-2.system.sysUpTime.sysUpTimeInstance
SNMP_OID_OUTPUT_NUMERIC | .1.3.6.1.2.1.1.3.0
SNMP_OID_OUTPUT_MODULE | DISMAN-EVENT-MIB::sysUpTimeInstance
SNMP_OID_OUTPUT_SUFFIX | sysUpTimeInstance
SNMP_OID_OUTPUT_UCD | system.sysUpTime.sysUpTimeInstance
SNMP_OID_OUTPUT_NONE | Undefined
oid_increasing_check

Controls disabling check for increasing OID while walking OID tree

Some SNMP agents are known for returning OIDs out of order but can complete the walk anyway. Other agents return OIDs that are out of order and can cause SNMP::walk() to loop indefinitely until memory limit will be reached. PHP SNMP library by default performs OID increasing check and stops walking on OID tree when it detects possible loop with issuing warning about non-increasing OID faced. Set oid_increasing_check to FALSE to disable this check.

exceptions_enabled

Controls which failures will raise SNMPException instead of warning. Use bitwise OR'ed SNMP::ERRNO_* constants. By default all SNMP exceptions are disabled.

info

Read-only property with remote agent configuration: hostname, port, default timeout, default retries count

预定义常量

SNMP Error Types

SNMP::ERRNO_NOERROR

No SNMP-specific error occurred.

SNMP::ERRNO_GENERIC

A generic SNMP error occurred.

SNMP::ERRNO_TIMEOUT

Request to SNMP agent timed out.

SNMP::ERRNO_ERROR_IN_REPLY

SNMP agent returned an error in reply.

SNMP::ERRNO_OID_NOT_INCREASING

SNMP agent faced OID cycling reporning non-increasing OID while executing (BULK)WALK command. This indicates bogus remote SNMP agent.

SNMP::ERRNO_OID_PARSING_ERROR

Library failed while parsing OID (and/or type for SET command). No queries has been made.

SNMP::ERRNO_MULTIPLE_SET_QUERIES

Library will use multiple queries for SET operation requested. That means that operation will be performed in a non-transaction manner and second or subsequent chunks may fail if a type or value failure will be faced.

SNMP::ERRNO_ANY

All SNMP::ERRNO_* codes bitwise OR'ed.

SNMP Protocol Versions

SNMP::VERSION_1

SNMP::VERSION_2C, SNMP::VERSION_2c

SNMP::VERSION_3

Table of Contents

  • SNMP::close — Close SNMP session
  • SNMP::__construct — Creates SNMP instance representing session to remote SNMP agent
  • SNMP::get — Fetch an SNMP object
  • SNMP::getErrno — Get last error code
  • SNMP::getError — Get last error message
  • SNMP::getnext — Fetch an SNMP object which follows the given object id
  • SNMP::set — Set the value of an SNMP object
  • SNMP::setSecurity — Configures security-related SNMPv3 session parameters
  • SNMP::walk — Fetch SNMP object subtree
snmpwalkoid
SNMP::close
SNMP


Close SNMP session

SNMP
SNMP::__construct
SNMP
PHP Manual

SNMP::close

(PHP 5 >= 5.4.0, PHP 7)

SNMP::close — Close SNMP session

说明

public bool SNMP::close ( void )

Frees previously allocated SNMP session object.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 SNMP::close() example

<?php
  $session = new SNMP(SNMP::VERSION_1, "127.0.0.1", "public");
  # ...
  # get, walk, etc goes here
  # ...
  $session->close();
?>

参见

  • SNMP::__construct() - Creates SNMP instance representing session to remote SNMP agent
SNMP
SNMP::__construct
SNMP


Creates SNMP instance representing session to remote SNMP agent

SNMP::close
SNMP::get
SNMP
PHP Manual

SNMP::__construct

(PHP 5 >= 5.4.0, PHP 7)

SNMP::__construct — Creates SNMP instance representing session to remote SNMP agent

说明

public SNMP::__construct ( int $version , string $hostname , string $community [, int $timeout = 1000000 [, int $retries = 5 ]] )

The function description goes here.

参数

version

SNMP protocol version:
SNMP::VERSION_1,
SNMP::VERSION_2C,
SNMP::VERSION_3.

hostname

The SNMP agent. hostname may be suffixed with optional SNMP agent port after colon. IPv6 addresses must be enclosed in square brackets if used with port. If FQDN is used for hostname it will be resolved by php-snmp library, not by Net-SNMP engine. Usage of IPv6 addresses when specifying FQDN may be forced by enclosing FQDN into square brackets. Here it is some examples:

IPv4 with default port | 127.0.0.1
IPv6 with default port | ::1 or [::1]
IPv4 with specific port | 127.0.0.1:1161
IPv6 with specific port | [::1]:1161
FQDN with default port | host.domain
FQDN with specific port | host.domain:1161
FQDN with default port, force usage of IPv6 address | [host.domain]
FQDN with specific port, force usage of IPv6 address | [host.domain]:1161

community

The purpuse of community is SNMP version specific:

SNMP::VERSION_1 | SNMP community
SNMP::VERSION_2C | SNMP community
SNMP::VERSION_3 | SNMPv3 securityName
timeout

The number of microseconds until the first timeout.

retries

The number of retries in case timeout occurs.

返回值

Returns SNMP object representing remote SNMP agent.

错误／异常

SNMP::__construct() throws an exception when parameters count or types are wrong or unknown SNMP protocol version specified.

范例

Example #1 Fetching sysLocation

<?php
  $session = new SNMP(SNMP::VERSION_1, "127.0.0.1", "public");
  $sysdescr = $session->get("sysDescr.0");
  echo "$sysdescr\n";
?>

以上例程的输出类似于：

STRING: Test server

参见

  • SNMP::close() - Close SNMP session
SNMP::close
SNMP::get
SNMP


Fetch an SNMP object

SNMP::__construct
SNMP::getErrno
SNMP
PHP Manual

SNMP::get

(PHP 5 >= 5.4.0, PHP 7)

SNMP::get — Fetch an SNMP object

说明

public mixed SNMP::get ( mixed $object_id [, bool $preserve_keys = false ] )

Fetch an SNMP object specified in object_id using GET query.

参数

If object_id is a string, then SNMP::get() will return SNMP object as string. If object_id is a array, all requested SNMP objects will be returned as associative array of the SNMP object ids and their values.

object_id

The SNMP object (OID) or objects

preserve_keys

When object_id is a array and preserve_keys set to TRUE keys in results will be taken exactly as in object_id, otherwise SNMP::oid_output_format property is used to determinate the form of keys.

返回值

Returns SNMP objects requested as string or array depending on object_id type or FALSE on error.

错误／异常

本方法默认不抛出任何异常。如果要在某些库出错时抛出 SNMPException 异常，用户需要将 SNMP 类参数 exceptions_enabled 设定为相应的值。更多细节见 SNMP::$exceptions_enabled 的解释。

范例

Example #1 Single SNMP object

Single SNMP object may be requested in two ways: as string resulting string return value or as single-element array with associative array as output.

<?php
  $session = new SNMP(SNMP::VERSION_1, "127.0.0.1", "public");
  $sysdescr = $session->get("sysDescr.0");
  echo "$sysdescr\n";
  $sysdescr = $session->get(array("sysDescr.0"));
  print_r($sysdescr);
?>

以上例程的输出类似于：

STRING: Test server
Array
(
    [SNMPv2-MIB::sysDescr.0] => STRING: Test server
)

Example #2 Multiple SNMP objects

$session = new SNMP(SNMP::VERSION_1, "127.0.0.1", "public");
  $results = $session->get(array("sysDescr.0", "sysName.0"));
  print_r($results);
  $session->close();

以上例程的输出类似于：

Array
(
    [SNMPv2-MIB::sysDescr.0] => STRING: Test server
    [SNMPv2-MIB::sysName.0] => STRING: myhost.nodomain
)

参见

  • SNMP::getErrno() - Get last error code
  • SNMP::getError() - Get last error message
SNMP::__construct
SNMP::getErrno
SNMP


Get last error code

SNMP::get
SNMP::getError
SNMP
PHP Manual

SNMP::getErrno

(PHP 5 >= 5.4.0, PHP 7)

SNMP::getErrno — Get last error code

说明

public int SNMP::getErrno ( void )

Returns error code from last SNMP request.

返回值

Returns one of SNMP error code values described in constants chapter.

范例

Example #1 SNMP::getErrno() example

<?php
$session = new SNMP(SNMP::VERSION_2c, '127.0.0.1', 'boguscommunity');
var_dump(@$session->get('.1.3.6.1.2.1.1.1.0'));
var_dump($session->getErrno() == SNMP::ERRNO_TIMEOUT);
?>

以上例程会输出：

bool(false)
bool(true)

参见

  • SNMP::getError() - Get last error message
SNMP::get
SNMP::getError
SNMP


Get last error message

SNMP::getErrno
SNMP::getnext
SNMP
PHP Manual

SNMP::getError

(PHP 5 >= 5.4.0, PHP 7)

SNMP::getError — Get last error message

说明

public string SNMP::getError ( void )

Returns string with error from last SNMP request.

返回值

String describing error from last SNMP request.

范例

Example #1 SNMP::getError() example

<?php
$session = new SNMP(SNMP::VERSION_2c, '127.0.0.1', 'boguscommunity');
var_dump(@$session->get('.1.3.6.1.2.1.1.1.0'));
var_dump($session->getError());
?>

以上例程会输出：

bool(false)
string(26) "No response from 127.0.0.1"

参见

  • SNMP::getErrno() - Get last error code
SNMP::getErrno
SNMP::getnext
SNMP


Fetch an SNMP object which follows the given object id

SNMP::getError
SNMP::set
SNMP
PHP Manual

SNMP::getnext

(PHP 5 >= 5.4.0, PHP 7)

SNMP::getnext — Fetch an SNMP object which follows the given object id

说明

public mixed SNMP::getnext ( mixed $object_id )

Fetch an SNMP object that follows specified object_id.

参数

If object_id is a string, then SNMP::getnext() will return SNMP object as string. If object_id is a array, all requested SNMP objects will be returned as associative array of the SNMP object ids and their values.

object_id

The SNMP object (OID) or objects

返回值

Returns SNMP objects requested as string or array depending on object_id type or FALSE on error.

错误／异常

本方法默认不抛出任何异常。如果要在某些库出错时抛出 SNMPException 异常，用户需要将 SNMP 类参数 exceptions_enabled 设定为相应的值。更多细节见 SNMP::$exceptions_enabled 的解释。

范例

Example #1 Single SNMP object

Single SNMP object may be requested in two ways: as string resulting string return value or as single-element array with associative array as output.

<?php
  $session = new SNMP(SNMP::VERSION_1, "127.0.0.1", "public");
  $nsysdescr = $session->getnext("sysDescr.0");
  echo "$nsysdescr\n";
  $nsysdescr = $session->getnext(array("sysDescr.0"));
  print_r($nsysdescr);
?>

以上例程的输出类似于：

OID: NET-SNMP-MIB::netSnmpAgentOIDs.8
Array
(
    [SNMPv2-MIB::sysObjectID.0] => OID: NET-SNMP-MIB::netSnmpAgentOIDs.8
)

Example #2 Miltiple SNMP objects

<?php
  $session = new SNMP(SNMP::VERSION_1, "127.0.0.1", "public");
  $results = $session->getnext(array("sysDescr.0", "sysName.0"));
  print_r($results);
  $session->close();
?>

以上例程的输出类似于：

Array
(
    [SNMPv2-MIB::sysObjectID.0] => OID: NET-SNMP-MIB::netSnmpAgentOIDs.8
    [SNMPv2-MIB::sysLocation.0] => STRING: Nowhere
)

参见

  • SNMP::getErrno() - Get last error code
  • SNMP::getError() - Get last error message
SNMP::getError
SNMP::set
SNMP


Set the value of an SNMP object

SNMP::getnext
SNMP::setSecurity
SNMP
PHP Manual

SNMP::set

(PHP 5 >= 5.4.0, PHP 7)

SNMP::set — Set the value of an SNMP object

说明

public bool SNMP::set ( mixed $object_id , mixed $type , mixed $value )

Requests remote SNMP agent setting the value of one or more SNMP objects specified by the object_id.

参数

If object_id is string, both type and value must be string too. If object_id is array value must be equal-sized array containing corresponding values, type may be either string (it's value will be used for all object_id-value pairs) or equal-sized array with per-OID value. When any other parameters' combinations are used, a number of E_WARNING messages may be shown with detailed description.

object_id

The SNMP object id

When count of OIDs in object_id array is greater than max_oids object property set method will have to use multiple queries to perform requested value updates. In this case type and value checks are made per-chunk so second or subsequent requests may fail due to wrong type or value for OID requested. To mark this a warning is raised when count of OIDs in object_id array is greater than max_oids.

type

MIB 定义了各个对象 id 的类型。必须是下面列出的单个字符之一。

类型
= MIB类型
i | INTEGER
u | INTEGER
s | STRING
x | HEX STRING
d | DECIMAL STRING
n | NULLOBJ
o | OBJID
t | TIMETICKS
a | IPADDRESS
b | BITS

如果在编译 SNMP 库时定义了 OPAQUE_SPECIAL_TYPES，那么下列值是合法的：

types
U | unsigned int64
I | signed int64
F | float
D | double

这些值大都会使用与 ASN.1 相符的类型。's'，'x'，'d' 以及 'b' 都是指定一个八字节字符串值的方式。并且 'u' 无符号类型也可用于处理 Gauge32 值。

如果 MIB 文件是用 "snmp_read_mib" 或者通过在 libsnmp config 中指定而加载入 MIB 树时， '=' 可以被用作为所有对象的 type 参数，因为 type 可以被自动从 MIB 中读取。

注意有两种方式可以设定 BITS 类型的变量，例如 "SYNTAX BITS {telnet(0), ftp(1), http(2), icmp(3), snmp(4), ssh(5), https(6)}":

  • 使用 "b" 类型以及一个位数的列表。不推荐使用此方法，因为 GET 查询对同一个 OID 将会返回例如 0xF8。
  • 使用 "x" 类型以及一个十六进制数但是不需要通常的 "0x" 前缀。

更多细节见范例部分。

value

The new value.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

本方法默认不抛出任何异常。如果要在某些库出错时抛出 SNMPException 异常，用户需要将 SNMP 类参数 exceptions_enabled 设定为相应的值。更多细节见 SNMP::$exceptions_enabled 的解释。

范例

Example #1 Set single SNMP object id

<?php
  $session = new SNMP(SNMP::VERSION_2C, "127.0.0.1", "private");
  $session->set('SNMPv2-MIB::sysContact.0', 's', "Nobody");
?>

Example #2 Set multiple values using single SNMP::set() call

<?php
  $session = new SNMP(SNMP::VERSION_2C, "127.0.0.1", "private");
  $session->set(array('SNMPv2-MIB::sysContact.0', 'SNMPv2-MIB::sysLocation.0'), array('s', 's'), array("Nobody", "Nowhere"));
// or
  $session->set(array('SNMPv2-MIB::sysContact.0', 'SNMPv2-MIB::sysLocation.0'), 's', array("Nobody", "Nowhere"));
?>

Example #3 Using SNMP::set() for setting BITS SNMP object id

<?php
  $session = new SNMP(SNMP::VERSION_2C, "127.0.0.1", "private");
  $session->set('FOO-MIB::bar.42', 'b', '0 1 2 3 4');
// or
  $session->set('FOO-MIB::bar.42', 'x', 'F0');
?>

参见

  • SNMP::get() - Fetch an SNMP object

SNMP::getnext
SNMP::setSecurity
SNMP


Configures security-related SNMPv3 session parameters

SNMP::set
SNMP::walk
SNMP
PHP Manual

SNMP::setSecurity

(PHP 5 >= 5.4.0, PHP 7)

SNMP::setSecurity — Configures security-related SNMPv3 session parameters

说明

public bool SNMP::setSecurity ( string $sec_level [, string $auth_protocol = [, string $auth_passphrase = [, string $priv_protocol = [, string $priv_passphrase = [, string $contextName = [, string $contextEngineID = ]]]]]] )

setSecurity configures security-related session parameters used in SNMP protocol version 3

参数

sec_level

the security level (noAuthNoPriv|authNoPriv|authPriv)

auth_protocol

the authentication protocol (MD5 or SHA)

auth_passphrase

the authentication pass phrase

priv_protocol

the privacy protocol (DES or AES)

priv_passphrase

the privacy pass phrase

contextName

the context name

contextEngineID

the context EngineID

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 SNMP::setSecurity() example

<?php
  $session = new SNMP(SNMP::VERSION_3, $hostname, $rwuser, $timeout, $retries);
  $session->setSecurity('authPriv', 'MD5', $auth_pass, 'AES', $priv_pass, '', 'aeeeff');
?>

参见

  • SNMP::__construct() - Creates SNMP instance representing session to remote SNMP agent
SNMP::set
SNMP::walk
SNMP


Fetch SNMP object subtree

SNMP::setSecurity
SNMPException
SNMP
PHP Manual

SNMP::walk

(PHP 5 >= 5.4.0, PHP 7)

SNMP::walk — Fetch SNMP object subtree

说明

public array SNMP::walk ( string $object_id [, bool $suffix_as_key = FALSE [, int $max_repetitions [, int $non_repeaters ]]] )

SNMP::walk() is used to read SNMP subtree rooted at specified object_id.

参数

object_id

Root of subtree to be fetched

suffix_as_key

By default full OID notation is used for keys in output array. If set to TRUE subtree prefix will be removed from keys leaving only suffix of object_id.

non_repeaters

This specifies the number of supplied variables that should not be iterated over. The default is to use this value from SNMP object.

max_repetitions

This specifies the maximum number of iterations over the repeating variables. The default is to use this value from SNMP object.

返回值

Returns an associative array of the SNMP object ids and their values on success or FALSE on error. When a SNMP error occures SNMP::getErrno() and SNMP::getError() can be used for retrieving error number (specific to SNMP extension, see class constants) and error message respectively.

错误／异常

本方法默认不抛出任何异常。如果要在某些库出错时抛出 SNMPException 异常，用户需要将 SNMP 类参数 exceptions_enabled 设定为相应的值。更多细节见 SNMP::$exceptions_enabled 的解释。

范例

Example #1 SNMP::walk() example

<?php
  $session = new SNMP(SNMP::VERSION_1, "127.0.0.1", "public");
  $fulltree = $session->walk(".");
  print_r($fulltree);
  $session->close();
?>

以上例程的输出类似于：

Array
(
    [SNMPv2-MIB::sysDescr.0] => STRING: Test server
    [SNMPv2-MIB::sysObjectID.0] => OID: NET-SNMP-MIB::netSnmpAgentOIDs.8
    [DISMAN-EVENT-MIB::sysUpTimeInstance] => Timeticks: (1150681750) 133 days, 4:20:17.50
    [SNMPv2-MIB::sysContact.0] => STRING: Nobody
    [SNMPv2-MIB::sysName.0] => STRING: server.localdomain
    ...
)

Example #2 suffix_as_key example

suffix_as_key may be used when merging multiple SNMP subtrees into one. This example maps interface names to their type.

<?php
  $session = new SNMP(SNMP::VERSION_1, "127.0.0.1", "public");
  $session->valueretrieval = SNMP_VALUE_PLAIN;
  $ifDescr = $session->walk(".1.3.6.1.2.1.2.2.1.2", TRUE);
  $session->valueretrieval = SNMP_VALUE_LIBRARY;
  $ifType = $session->walk(".1.3.6.1.2.1.2.2.1.3", TRUE);
  print_r($ifDescr);
  print_r($ifType);
  $result = array();
  foreach($ifDescr as $i => $n) {
    $result[$n] = $ifType[$i];
  }
  print_r($result);
?>

以上例程的输出类似于：

Array
(
    [1] => igb0
    [2] => igb1
    [3] => ipfw0
    [4] => lo0
    [5] => lagg0
)
Array
(
    [1] => INTEGER: ieee8023adLag(161)
    [2] => INTEGER: ieee8023adLag(161)
    [3] => INTEGER: ethernetCsmacd(6)
    [4] => INTEGER: softwareLoopback(24)
    [5] => INTEGER: ethernetCsmacd(6)
)
Array
(
    [igb0] => INTEGER: ieee8023adLag(161)
    [igb1] => INTEGER: ieee8023adLag(161)
    [ipfw0] => INTEGER: ethernetCsmacd(6)
    [lo0] => INTEGER: softwareLoopback(24)
    [lagg0] => INTEGER: ethernetCsmacd(6)
)

参见

  • SNMP::getErrno() - Get last error code
  • SNMP::getError() - Get last error message
SNMP::setSecurity
SNMPException
SNMP


The SNMPException class

(PHP 5 >= 5.4.0, PHP 7)

简介

Represents an error raised by SNMP. You should not throw a SNMPException from your own code. See Exceptions for more information about Exceptions in PHP.

类摘要

SNMPException extends RuntimeException {
/* 属性 */
protected string $code ;
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}

属性

code

SNMPlibrary error code. Use Exception::getCode() to access it.

SNMP::walk
Sockets
SNMP


Sockets

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • Socket Errors
  • Socket 函数
    • socket_accept — Accepts a connection on a socket
    • socket_bind — 给套接字绑定名字
    • socket_clear_error — 清除套接字或者最后的错误代码上的错误
    • socket_close — 关闭套接字资源
    • socket_cmsg_space — Calculate message buffer size
    • socket_connect — 开启一个套接字连接
    • socket_create_listen — Opens a socket on port to accept connections
    • socket_create_pair — Creates a pair of indistinguishable sockets and stores them in an array
    • socket_create — 创建一个套接字（通讯节点）
    • socket_get_option — Gets socket options for the socket
    • socket_getopt — 别名 socket_get_option
    • socket_getpeername — Queries the remote side of the given socket which may either result in host/port or in a Unix filesystem path, dependent on its type
    • socket_getsockname — Queries the local side of the given socket which may either result in host/port or in a Unix filesystem path, dependent on its type
    • socket_import_stream — Import a stream
    • socket_last_error — Returns the last error on the socket
    • socket_listen — Listens for a connection on a socket
    • socket_read — Reads a maximum of length bytes from a socket
    • socket_recv — 从已连接的socket接收数据
    • socket_recvfrom — Receives data from a socket whether or not it is connection-oriented
    • socket_recvmsg — Read a message
    • socket_select — Runs the select() system call on the given arrays of sockets with a specified timeout
    • socket_send — Sends data to a connected socket
    • socket_sendmsg — Send a message
    • socket_sendto — Sends a message to a socket, whether it is connected or not
    • socket_set_block — Sets blocking mode on a socket resource
    • socket_set_nonblock — Sets nonblocking mode for file descriptor fd
    • socket_set_option — Sets socket options for the socket
    • socket_setopt — 别名 socket_set_option
    • socket_shutdown — Shuts down a socket for receiving, sending, or both
    • socket_strerror — Return a string describing a socket error
    • socket_write — Write to a socket
SNMPException
简介
其它服务


简介

Socket扩展是基于流行的BSD sockets，实现了和socket通讯功能的底层接口，它可以和客户端一样当做一个socket服务器。

想了解更通用的客户端socket接口，请看
stream_socket_client(),
stream_socket_server(),
fsockopen(), 和
pfsockopen()。

使用这些函数时请注意，虽然他们中有很多和C函数同名的，但声明却很可能不同。未避免混淆，请仔细阅读函数描述。

不熟悉socket编程的可以在Unix手册上找到很多有用的信息，网上也有很多C socket编程方面的教程，简单修改一下就可以应用于PHP socket编程。» Unix Socket FAQ是一个不错的入门。

Sockets
安装／配置
Sockets


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Sockets


安装

这里描述的socket函数只是PHP扩展的一部分，编译PHP时必须在配置中添加--enable-sockets 配置项来启用。

Note: 在 PHP 5.0.0 开始加入了对 IPv6 的支持。

需求
运行时配置
安装／配置


资源类型

socket_accept(),
socket_create_listen() 和
socket_create() 返回socket资源类型。

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

AF_UNIX (integer)
AF_INET (integer)
AF_INET6 (integer)
只有在编译时加入 IPv6 支持的时候才有效。
SOCK_STREAM (integer)
SOCK_DGRAM (integer)
SOCK_RAW (integer)
SOCK_SEQPACKET (integer)
SOCK_RDM (integer)
MSG_OOB (integer)
MSG_WAITALL (integer)
MSG_PEEK (integer)
MSG_DONTROUTE (integer)
MSG_EOR (integer)
在 Windows 平台上无效。
MSG_EOF (integer)
在 Windows 平台上无效。
SO_DEBUG (integer)
SO_REUSEADDR (integer)
SO_REUSEPORT (integer)
该常量在PHP5.4.10及以上版本，并且支持SO_REUSEPORTsocket选项的平台上可用。包括Mac OS X和FreeBSD，不包括Linux和Windows。
SO_KEEPALIVE (integer)
SO_DONTROUTE (integer)
SO_LINGER (integer)
SO_BROADCAST (integer)
SO_OOBINLINE (integer)
SO_SNDBUF (integer)
SO_RCVBUF (integer)
SO_SNDLOWAT (integer)
SO_RCVLOWAT (integer)
SO_SNDTIMEO (integer)
SO_RCVTIMEO (integer)
SO_TYPE (integer)
SO_ERROR (integer)
TCP_NODELAY (integer)
Used to disable Nagle TCP algorithm. Added in PHP 5.2.7.
SOL_SOCKET (integer)
PHP_NORMAL_READ (integer)
PHP_BINARY_READ (integer)
SOL_TCP (integer)
SOL_UDP (integer)

以下常量在Windows和类UNIX平台上被定义。每个常量只有在平台上有该常量值的时候才会被定义。

SOCKET_EINTR (integer)
中断系统调用。
SOCKET_EBADF (integer)
坏文件编号。
SOCKET_EACCES (integer)
拒绝访问。
SOCKET_EFAULT (integer)
错误的地址。
SOCKET_EINVAL (integer)
无效的参数。
SOCKET_EMFILE (integer)
打开的文件太多。
SOCKET_ENAMETOOLONG (integer)
文件名过长。
SOCKET_ENOTEMPTY (integer)
目录不为空。
SOCKET_ELOOP (integer)
Too many symbolic links encountered.
SOCKET_EWOULDBLOCK (integer)
操作将阻塞。
SOCKET_EREMOTE (integer)
对象是远程。
SOCKET_EUSERS (integer)
太多用户。
SOCKET_ENOTSOCK (integer)
非socket套接字操作。
SOCKET_EDESTADDRREQ (integer)
需要目的地址。
SOCKET_EMSGSIZE (integer)
消息太长。
SOCKET_EPROTOTYPE (integer)
socket协议类型错误。
SOCKET_EPROTONOSUPPORT (integer)
不支持的协议。
SOCKET_ESOCKTNOSUPPORT (integer)
不支持的socket类型。
SOCKET_EOPNOTSUPP (integer)
传输断点不支持的操作。
SOCKET_EPFNOSUPPORT (integer)
不支持的协议族。
SOCKET_EAFNOSUPPORT (integer)
协议不支持的地址族。
SOCKET_EADDRNOTAVAIL (integer)
不能分配请求的地址。
SOCKET_ENETDOWN (integer)
网络出现故障。
SOCKET_ENETUNREACH (integer)
网络不可达。
SOCKET_ENETRESET (integer)
复位，网络掉线。
SOCKET_ECONNABORTED (integer)
软件导致连接中止。
SOCKET_ECONNRESET (integer)
对方重置连接。
SOCKET_ENOBUFS (integer)
无可用的缓存区空间。
SOCKET_EISCONN (integer)
传输端点已经连接。
SOCKET_ENOTCONN (integer)
传输端点未连接。
SOCKET_ESHUTDOWN (integer)
传输端点关闭，无法发送。
SOCKET_ETIMEDOUT (integer)
连接超时。
SOCKET_ECONNREFUSED (integer)
连接被拒绝。
SOCKET_EHOSTDOWN (integer)
主机已关闭。
SOCKET_EHOSTUNREACH (integer)
没有路由到主机。
SOCKET_EALREADY (integer)
操作已在进行中。
SOCKET_EINPROGRESS (integer)
操作正在进行中。

以下常量只能在windows中定义。

SOCKET_ENOPROTOOPT (integer)
SOCKET_EADDRINUSE (integer)
SOCKET_ETOOMYREFS (integer)
SOCKET_EPROCLIM (integer)
SOCKET_EDUOT (integer)
SOCKET_ESTALE (integer)
SOCKET_EDISCON (integer)
SOCKET_SYSNOTREADY (integer)
SOCKET_VERNOTSUPPORTED (integer)
SOCKET_NOTINITIALISED (integer)
SOCKET_HOST_NOT_FOUND (integer)
SOCKET_TRY_AGAIN (integer)
SOCKET_NO_RECOVERY (integer)
SOCKET_NO_DATA (integer)
SOCKET_NO_ADDRESS (integer)

以下常量仅适用于类UNIX。 每个常量只有在该平台上此值可用时被定义。

SOCKET_EPERM (integer)
操作不允许。
SOCKET_ENOENT (integer)
文件或目录不存在。
SOCKET_EIO (integer)
I/O错误。
SOCKET_ENXIO (integer)
未找到设备或地址。
SOCKET_E2BIG (integer)
参数列表太长。
SOCKET_EAGAIN (integer)
请重试。
SOCKET_ENOMEM (integer)
内存不足。
SOCKET_ENOTBLK (integer)
需要块设备。
SOCKET_EBUSY (integer)
设备或资源忙。
SOCKET_EEXIST (integer)
文件存在。
SOCKET_EXDEV (integer)
跨设备链路。
SOCKET_ENODEV (integer)
设备不存在。
SOCKET_ENOTDIR (integer)
非目录。
SOCKET_EISDIR (integer)
是目录。
SOCKET_ENFILE (integer)
文件表溢出。
SOCKET_ENOTTY (integer)
不是打字机。
SOCKET_ENOSPC (integer)
设备上没有剩余空间。
SOCKET_ESPIPE (integer)
非法查找。
SOCKET_EROFS (integer)
文件系统只读。
SOCKET_EMLINK (integer)
链路太多。
SOCKET_EPIPE (integer)
管道断开。
SOCKET_ENOLCK (integer)
无可用的记录锁。
SOCKET_ENOSYS (integer)
函数未实现。
SOCKET_ENOMSG (integer)
无需要类型的消息。
SOCKET_EIDRM (integer)
标识符被删除。
SOCKET_ECHRNG (integer)
通道数超出范围。
SOCKET_EL2NSYNC (integer)
2级未同步。
SOCKET_EL3HLT (integer)
3级停止。
SOCKET_EL3RST (integer)
3级重置。
SOCKET_ELNRNG (integer)
链接数超出范围。
SOCKET_EUNATCH (integer)
协议驱动没有安装。
SOCKET_ENOCSI (integer)
没有可用的CSI结构。
SOCKET_EL2HLT (integer)
2级停止。
SOCKET_EBADE (integer)
无效的交换。
SOCKET_EBADR (integer)
无效的请求描述符。
SOCKET_EXFULL (integer)
交换满了。
SOCKET_ENOANO (integer)
无阳极。
SOCKET_EBADRQC (integer)
无效的请求代码。
SOCKET_EBADSLT (integer)
无效的插槽。
SOCKET_ENOSTR (integer)
设备不是流。
SOCKET_ENODATA (integer)
无可用的数据。
SOCKET_ETIME (integer)
计时器过期。
SOCKET_ENOSR (integer)
流资源不够用。
SOCKET_ENONET (integer)
机器不在网络上。
SOCKET_ENOLINK (integer)
链接已被切断。
SOCKET_EADV (integer)
通知错误。
SOCKET_ESRMNT (integer)
Srmount错误。
SOCKET_ECOMM (integer)
发送时通信错误。
SOCKET_EPROTO (integer)
协议错误。
SOCKET_EMULTIHOP (integer)
多跳尝试。
SOCKET_EBADMSG (integer)
不是一个数据消息。
SOCKET_ENOTUNIQ (integer)
名称在网络上不唯一。
SOCKET_EBADFD (integer)
文件描述符处于错误状态。
SOCKET_EREMCHG (integer)
远程地址改变。
SOCKET_ERESTART (integer)
中断的系统调用应该被重新启动。
SOCKET_ESTRPIPE (integer)
流管道错误。
SOCKET_EPROTOOPT (integer)
协议不可用。
SOCKET_ADDRINUSE (integer)
地址已经被占用。
SOCKET_ETOOMANYREFS (integer)
过多的引用：无法接合。
SOCKET_EISNAM (integer)
是一个已命名类型的文件。
SOCKET_EREMOTEIO (integer)
远程I/O错误。
SOCKET_EDQUOT (integer)
超过配额。
SOCKET_ENOMEDIUM (integer)
未找到媒体。
SOCKET_EMEDIUMTYPE (integer)
错误的媒体类型。
资源类型
范例
Sockets


范例

Example #1 Socket举例：简单的TCP/IP服务器

这个例子展示了一个简单的对讲服务器。改变地址和端口以满足你的设置和执行。 你可以使用类似于这样的命令：telnet 192.168.1.53 10000连接到服务器，（这里是你设置的地址和端口）。 你输入任何东西都会在服务器端输出来，然后回显给你。断开连接，请输入'quit'。

#!/usr/local/bin/php -q
<?php
error_reporting(E_ALL);

/* Allow the script to hang around waiting for connections. */
set_time_limit(0);

/* Turn on implicit output flushing so we see what we're getting
 * as it comes in. */
ob_implicit_flush();

$address = '192.168.1.53';
$port = 10000;

if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
}

if (socket_bind($sock, $address, $port) === false) {
    echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
}

if (socket_listen($sock, 5) === false) {
    echo "socket_listen() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
}

do {
    if (($msgsock = socket_accept($sock)) === false) {
        echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
        break;
    }
    /* Send instructions. */
    $msg = "\nWelcome to the PHP Test Server. \n" .
        "To quit, type 'quit'. To shut down the server type 'shutdown'.\n";
    socket_write($msgsock, $msg, strlen($msg));

    do {
        if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
            echo "socket_read() failed: reason: " . socket_strerror(socket_last_error($msgsock)) . "\n";
            break 2;
        }
        if (!$buf = trim($buf)) {
            continue;
        }
        if ($buf == 'quit') {
            break;
        }
        if ($buf == 'shutdown') {
            socket_close($msgsock);
            break 2;
        }
        $talkback = "PHP: You said '$buf'.\n";
        socket_write($msgsock, $talkback, strlen($talkback));
        echo "$buf\n";
    } while (true);
    socket_close($msgsock);
} while (true);

socket_close($sock);
?>

Example #2 Socket举例：简单的TCP/IP客户端

这个例子展示了一个简单的，一次性的HTTP客户端。 它只是连接到一个页面，提交一个HEAD请求，输出回复，然后退出。

<?php
error_reporting(E_ALL);

echo "<h2>TCP/IP Connection</h2>\n";

/* Get the port for the WWW service. */
$service_port = getservbyname('www', 'tcp');

/* Get the IP address for the target host. */
$address = gethostbyname('www.example.com');

/* Create a TCP/IP socket. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
} else {
    echo "OK.\n";
}

echo "Attempting to connect to '$address' on port '$service_port'...";
$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
    echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
} else {
    echo "OK.\n";
}

$in = "HEAD / HTTP/1.1\r\n";
$in .= "Host: www.example.com\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';

echo "Sending HTTP HEAD request...";
socket_write($socket, $in, strlen($in));
echo "OK.\n";

echo "Reading response:\n\n";
while ($out = socket_read($socket, 2048)) {
    echo $out;
}

echo "Closing socket...";
socket_close($socket);
echo "OK.\n\n";
?>

预定义常量
Socket Errors
Sockets


Socket Errors

Socket扩展编写的目的是提供一个面向功能强大的BSD Socket的可用的接口。它能确保这些函数在Win32和Unix平台上都能很好的工作。 在特定条件下，大部分socket函数如果发生错误都会发出一个 E_WARNING信息描述错误内容。有时可能并不会如开发者所愿。例如，因为连接突然中断， socket_read()函数可能会突然发出一个 E_WARNING。 通常会使用@操作符来压制异常，然后在程序中用socket_last_error()来捕获错误代码。 你可以调用socket_strerror()函数通过错误代码获取错误描述。查看函数描述获取更多信息。

Note:

Socket扩展发出的E_WARNING信息都是英文的，但获取到的错误描述会根据当前的locale展示。 (LC_MESSAGES):

Warning - socket_bind() unable to bind address [98]: Die Adresse wird bereits verwendet

范例
Socket 函数
Sockets


Socket 函数

Table of Contents

  • socket_accept — Accepts a connection on a socket
  • socket_bind — 给套接字绑定名字
  • socket_clear_error — 清除套接字或者最后的错误代码上的错误
  • socket_close — 关闭套接字资源
  • socket_cmsg_space — Calculate message buffer size
  • socket_connect — 开启一个套接字连接
  • socket_create_listen — Opens a socket on port to accept connections
  • socket_create_pair — Creates a pair of indistinguishable sockets and stores them in an array
  • socket_create — 创建一个套接字（通讯节点）
  • socket_get_option — Gets socket options for the socket
  • socket_getopt — 别名 socket_get_option
  • socket_getpeername — Queries the remote side of the given socket which may either result in host/port or in a Unix filesystem path, dependent on its type
  • socket_getsockname — Queries the local side of the given socket which may either result in host/port or in a Unix filesystem path, dependent on its type
  • socket_import_stream — Import a stream
  • socket_last_error — Returns the last error on the socket
  • socket_listen — Listens for a connection on a socket
  • socket_read — Reads a maximum of length bytes from a socket
  • socket_recv — 从已连接的socket接收数据
  • socket_recvfrom — Receives data from a socket whether or not it is connection-oriented
  • socket_recvmsg — Read a message
  • socket_select — Runs the select() system call on the given arrays of sockets with a specified timeout
  • socket_send — Sends data to a connected socket
  • socket_sendmsg — Send a message
  • socket_sendto — Sends a message to a socket, whether it is connected or not
  • socket_set_block — Sets blocking mode on a socket resource
  • socket_set_nonblock — Sets nonblocking mode for file descriptor fd
  • socket_set_option — Sets socket options for the socket
  • socket_setopt — 别名 socket_set_option
  • socket_shutdown — Shuts down a socket for receiving, sending, or both
  • socket_strerror — Return a string describing a socket error
  • socket_write — Write to a socket
Socket Errors
socket_accept
Sockets


Accepts a connection on a socket

Socket 函数
socket_bind
Socket 函数
PHP Manual

socket_accept

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_accept — Accepts a connection on a socket

说明

resource socket_accept ( resource $socket )

After the socket socket has been created using socket_create(), bound to a name with socket_bind(), and told to listen for connections with socket_listen(), this function will accept incoming connections on that socket. Once a successful connection is made, a new socket resource is returned, which may be used for communication. If there are multiple connections queued on the socket, the first will be used. If there are no pending connections, socket_accept() will block until a connection becomes present. If socket has been made non-blocking using socket_set_blocking() or socket_set_nonblock(), FALSE will be returned.

The socket resource returned by socket_accept() may not be used to accept new connections. The original listening socket socket, however, remains open and may be reused.

参数

socket

A valid socket resource created with socket_create().

返回值

Returns a new socket resource on success, or FALSE on error. The actual error code can be retrieved by calling socket_last_error(). This error code may be passed to socket_strerror() to get a textual explanation of the error.

参见

  • socket_connect() - 开启一个套接字连接
  • socket_listen() - Listens for a connection on a socket
  • socket_create() - 创建一个套接字（通讯节点）
  • socket_bind() - 给套接字绑定名字
  • socket_strerror() - Return a string describing a socket error

Socket 函数
socket_bind
Socket 函数


给套接字绑定名字

socket_accept
socket_clear_error
Socket 函数
PHP Manual

socket_bind

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_bind — 给套接字绑定名字

说明

bool socket_bind ( resource $socket , string $address [, int $port = 0 ] )

绑定 address 到 socket。 该操作必须是在使用 socket_connect() 或者 socket_listen() 建立一个连接之前。

参数

socket

用 socket_create() 创建的一个有效的套接字资源。

address

如果套接字是 AF_INET 族，那么 address 必须是一个四点分法的 IP 地址（例如 127.0.0.1 ）。

如果套接字是 AF_UNIX 族，那么 address 是 Unix 套接字一部分（例如 /tmp/my.sock ）。

port （可选）

参数 port 仅仅用于 AF_INET 套接字连接的时候，并且指定连接中需要监听的端口号。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误代码会传入 socket_last_error() ，如果将此参数传入 socket_strerror() 则可以得到错误的文字说明。

范例

Example #1 使用 socket_bind() 来设置套接字资源地址

<?php
// Create a new socket
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

// An example list of IP addresses owned by the computer
$sourceips['kevin']    = '127.0.0.1';
$sourceips['madcoder'] = '127.0.0.2';

// Bind the source address
socket_bind($sock, $sourceips['madcoder']);

// Connect to destination address
socket_connect($sock, '127.0.0.1', 80);

// Write
$request = 'GET / HTTP/1.1' . "\r\n" .
           'Host: example.com' . "\r\n\r\n";
socket_write($sock, $request);

// Close
socket_close($sock);

?>

注释

Note:

该函数必须在 socket_connect() 之前使用。

Note:

Windows 9x/ME 兼容性注意点: 如果尝试绑定套接字资源到一个错误的地址，而这个地址不是本机的地址，那么 socket_last_error() 可能会返回一个无效的错误代码。

参见

  • socket_connect() - 开启一个套接字连接
  • socket_listen() - Listens for a connection on a socket
  • socket_create() - 创建一个套接字（通讯节点）
  • socket_last_error() - Returns the last error on the socket
  • socket_strerror() - Return a string describing a socket error

socket_accept
socket_clear_error
Socket 函数


清除套接字或者最后的错误代码上的错误

socket_bind
socket_close
Socket 函数
PHP Manual

socket_clear_error

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

socket_clear_error — 清除套接字或者最后的错误代码上的错误

说明

void socket_clear_error ([ resource $socket ] )

这个函数清除给定的套接字上的错误代码或是最后一个全局的套接字如果套接字没有指定的话

这个函数允许明确的重置错误代码值 不论是一个套接字或者最后全局错误代码的扩展， 这对在检测应用的一部分是否有错误发生是十分有用的

参数

socket

用socket_create()创建的有效的套接字资源。

返回值

没有返回值。

参见

  • socket_last_error() - Returns the last error on the socket
  • socket_strerror() - Return a string describing a socket error

socket_bind
socket_close
Socket 函数


关闭套接字资源

socket_clear_error
socket_cmsg_space
Socket 函数
PHP Manual

socket_close

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_close — 关闭套接字资源

说明

void socket_close ( resource $socket )

socket_close() 会关闭掉给定的 socket 资源。 这个函数只针对套接字资源有效，不能用在其他类型的资源类型上。

参数

socket

由 socket_create() 或者是 socket_accept() 创建的有效的套接字资源。

返回值

没有返回值。

参见

  • socket_bind() - 给套接字绑定名字
  • socket_listen() - Listens for a connection on a socket
  • socket_create() - 创建一个套接字（通讯节点）
  • socket_strerror() - Return a string describing a socket error

socket_clear_error
socket_cmsg_space
Socket 函数


Calculate message buffer size

socket_close
socket_connect
Socket 函数
PHP Manual

socket_cmsg_space

(PHP 5 >= 5.5.0, PHP 7)

socket_cmsg_space — Calculate message buffer size

说明

int socket_cmsg_space ( int $level , int $type )

Calculates the size of the buffer that should be allocated for receiving the ancillary data.

Warning

本函数还未编写文档，仅有参数列表。

参数

level

type

返回值

参见

  • socket_recvmsg() - Read a message
  • socket_sendmsg() - Send a message

socket_close
socket_connect
Socket 函数


开启一个套接字连接

socket_cmsg_space
socket_create_listen
Socket 函数
PHP Manual

socket_connect

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_connect — 开启一个套接字连接

说明

bool socket_connect ( resource $socket , string $address [, int $port = 0 ] )

用 socket_create() 创建的有效的套接字资源来连接到 address 。

参数

socket

address

如果参数 socket 是 AF_INET ， 那么参数 address 则可以是一个点分四组表示法（例如 127.0.0.1 ） 的 IPv4 地址； 如果支持 IPv6 并且 socket 是 AF_INET6，那么 address 也可以是有效的 IPv6 地址（例如 ::1）；如果套接字类型为 AF_UNIX ，那么 address 也可以是一个Unix 套接字。

port

参数 port 仅仅用于 AF_INET 和 AF_INET6 套接字连接的时候，并且是在此情况下是需要强制说明连接对应的远程服务器上的端口号。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 错误代码会传入 socket_last_error() ，如果将此参数传入 socket_strerror() 则可以得到错误的文字说明。

Note:

If the socket is non-blocking then this function returns FALSE with an error Operation now in progress.

参见

  • socket_bind() - 给套接字绑定名字
  • socket_listen() - Listens for a connection on a socket
  • socket_create() - 创建一个套接字（通讯节点）
  • socket_last_error() - Returns the last error on the socket
  • socket_strerror() - Return a string describing a socket error

socket_cmsg_space
socket_create_listen
Socket 函数


Opens a socket on port to accept connections

socket_connect
socket_create_pair
Socket 函数
PHP Manual

socket_create_listen

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_create_listen — Opens a socket on port to accept connections

说明

resource socket_create_listen ( int $port [, int $backlog = 128 ] )

socket_create_listen() creates a new socket resource of type AF_INET listening on all local interfaces on the given port waiting for new connections.

This function is meant to ease the task of creating a new socket which only listens to accept new connections.

参数

port

The port on which to listen on all interfaces.

backlog

The backlog parameter defines the maximum length the queue of pending connections may grow to. SOMAXCONN may be passed as backlog parameter, see socket_listen() for more information.

返回值

socket_create_listen() returns a new socket resource on success or FALSE on error. The error code can be retrieved with socket_last_error(). This code may be passed to socket_strerror() to get a textual explanation of the error.

注释

Note:

If you want to create a socket which only listens on a certain interface you need to use socket_create(), socket_bind() and socket_listen().

参见

  • socket_create() - 创建一个套接字（通讯节点）
  • socket_create_pair() - Creates a pair of indistinguishable sockets and stores them in an array
  • socket_bind() - 给套接字绑定名字
  • socket_listen() - Listens for a connection on a socket
  • socket_last_error() - Returns the last error on the socket
  • socket_strerror() - Return a string describing a socket error

socket_connect
socket_create_pair
Socket 函数


Creates a pair of indistinguishable sockets and stores them in an array

socket_create_listen
socket_create
Socket 函数
PHP Manual

socket_create_pair

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_create_pair — Creates a pair of indistinguishable sockets and stores them in an array

说明

bool socket_create_pair ( int $domain , int $type , int $protocol , array &$fd )

socket_create_pair() creates two connected and indistinguishable sockets, and stores them in fd. This function is commonly used in IPC (InterProcess Communication).

参数

domain

The domain parameter specifies the protocol family to be used by the socket. See socket_create() for the full list.

type

The type parameter selects the type of communication to be used by the socket. See socket_create() for the full list.

protocol

The protocol parameter sets the specific protocol within the specified domain to be used when communicating on the returned socket. The proper value can be retrieved by name by using getprotobyname(). If the desired protocol is TCP, or UDP the corresponding constants SOL_TCP, and SOL_UDP can also be used.

See socket_create() for the full list of supported protocols.

fd

Reference to an array in which the two socket resources will be inserted.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.3.0 | This function is now re-enabled on Windows platforms.
4.3.0 | This function was due to a bug made unavailable on Windows platforms.

范例

Example #1 socket_create_pair() example

<?php
$sockets = array();

/* On Windows we need to use AF_INET */
$domain = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN' ? AF_INET : AF_UNIX);

/* Setup socket pair */
if (socket_create_pair($domain, SOCK_STREAM, 0, $sockets) === false) {
    echo "socket_create_pair failed. Reason: ".socket_strerror(socket_last_error());
}
/* Send and Recieve Data */
if (socket_write($sockets[0], "ABCdef123\n", strlen("ABCdef123\n")) === false) {
    echo "socket_write() failed. Reason: ".socket_strerror(socket_last_error($sockets[0]));
}
if (($data = socket_read($sockets[1], strlen("ABCdef123\n"), PHP_BINARY_READ)) === false) {
    echo "socket_read() failed. Reason: ".socket_strerror(socket_last_error($sockets[1]));
}
var_dump($data);

/* Close sockets */
socket_close($sockets[0]);
socket_close($sockets[1]);
?>

Example #2 socket_create_pair() IPC example

<?php
$ary = array();
$strone = 'Message From Parent.';
$strtwo = 'Message From Child.';

if (socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $ary) === false) {
    echo "socket_create_pair() failed. Reason: ".socket_strerror(socket_last_error());
}
$pid = pcntl_fork();
if ($pid == -1) {
    echo 'Could not fork Process.';
} elseif ($pid) {
    /*parent*/
    socket_close($ary[0]);
    if (socket_write($ary[1], $strone, strlen($strone)) === false) {
        echo "socket_write() failed. Reason: ".socket_strerror(socket_last_error($ary[1]));
    }
    if (socket_read($ary[1], strlen($strtwo), PHP_BINARY_READ) == $strtwo) {
        echo "Recieved $strtwo\n";
    }
    socket_close($ary[1]);
} else {
    /*child*/
    socket_close($ary[1]);
    if (socket_write($ary[0], $strtwo, strlen($strtwo)) === false) {
        echo "socket_write() failed. Reason: ".socket_strerror(socket_last_error($ary[0]));
    }
    if (socket_read($ary[0], strlen($strone), PHP_BINARY_READ) == $strone) {
        echo "Recieved $strone\n";
    }
    socket_close($ary[0]);
}
?>

参见

  • socket_create() - 创建一个套接字（通讯节点）
  • socket_create_listen() - Opens a socket on port to accept connections
  • socket_bind() - 给套接字绑定名字
  • socket_listen() - Listens for a connection on a socket
  • socket_last_error() - Returns the last error on the socket
  • socket_strerror() - Return a string describing a socket error

socket_create_listen
socket_create
Socket 函数


创建一个套接字（通讯节点）

socket_create_pair
socket_get_option
Socket 函数
PHP Manual

socket_create

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_create — 创建一个套接字（通讯节点）

说明

resource socket_create ( int $domain , int $type , int $protocol )

创建并返回一个套接字，也称作一个通讯节点。一个典型的网络连接由 2 个套接字构成，一个运行在客户端，另一个运行在服务器端。

参数

domain

domain 参数指定哪个协议用在当前套接字上。

可用的地址/协议
Domain | 描述
AF_INET | IPv4 网络协议。TCP 和 UDP 都可使用此协议。
AF_INET6 | IPv6 网络协议。TCP 和 UDP 都可使用此协议。
AF_UNIX | 本地通讯协议。具有高性能和低成本的 IPC（进程间通讯）。
type

type 参数用于选择套接字使用的类型。

可用的套接字类型
类型 | 描述
SOCK_STREAM | 提供一个顺序化的、可靠的、全双工的、基于连接的字节流。支持数据传送流量控制机制。TCP 协议即基于这种流式套接字。
SOCK_DGRAM | 提供数据报文的支持。(无连接，不可靠、固定最大长度).UDP协议即基于这种数据报文套接字。
SOCK_SEQPACKET | 提供一个顺序化的、可靠的、全双工的、面向连接的、固定最大长度的数据通信；数据端通过接收每一个数据段来读取整个数据包。
SOCK_RAW | 提供读取原始的网络协议。这种特殊的套接字可用于手工构建任意类型的协议。一般使用这个套接字来实现 ICMP 请求（例如 ping）。
SOCK_RDM | 提供一个可靠的数据层，但不保证到达顺序。一般的操作系统都未实现此功能。
protocol

protocol 参数，是设置指定 domain 套接字下的具体协议。这个值可以使用 getprotobyname() 函数进行读取。如果所需的协议是 TCP 或 UDP，可以直接使用常量 SOL_TCP 和 SOL_UDP 。

常见协议
名称 | 描述
icmp | Internet Control Message Protocol 主要用于网关和主机报告错误的数据通信。例如"ping"命令（在目前大部分的操作系统中）就是使用 ICMP 协议实现的。
udp | User Datagram Protocol 是一个无连接的、不可靠的、具有固定最大长度的报文协议。由于这些特性，UDP 协议拥有最小的协议开销。
tcp | Transmission Control Protocol 是一个可靠的、基于连接的、面向数据流的全双工协议。TCP 能够保障所有的数据包是按照其发送顺序而接收的。如果任意数据包在通讯时丢失，TCP 将自动重发数据包直到目标主机应答已接收。因为可靠性和性能的原因，TCP 在数据传输层使用 8bit 字节边界。因此，TCP 应用程序必须允许传送部分报文的可能。

返回值

socket_create() 正确时返回一个套接字，失败时返回 FALSE。要读取错误代码，可以调用 socket_last_error()。这个错误代码可以通过 socket_strerror() 读取文字的错误说明。

更新日志

版本 | 说明
5.0.0 | 增加 AF_INET6 支持。

错误／异常

如果使用一个无效的 domain 或 type，socket_create() 会使用 AF_INET 和 SOCK_STREAM 替代无效参数，同时会发出 E_WARNING 警告信息。

参见

  • socket_accept() - Accepts a connection on a socket
  • socket_bind() - 给套接字绑定名字
  • socket_connect() - 开启一个套接字连接
  • socket_listen() - Listens for a connection on a socket
  • socket_last_error() - Returns the last error on the socket
  • socket_strerror() - Return a string describing a socket error

socket_create_pair
socket_get_option
Socket 函数


Gets socket options for the socket

socket_create
socket_getopt
Socket 函数
PHP Manual

socket_get_option

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

socket_get_option — Gets socket options for the socket

说明

mixed socket_get_option ( resource $socket , int $level , int $optname )

The socket_get_option() function retrieves the value for the option specified by the optname parameter for the specified socket.

参数

socket

A valid socket resource created with socket_create() or socket_accept().

level

The level parameter specifies the protocol level at which the option resides. For example, to retrieve options at the socket level, a level parameter of SOL_SOCKET would be used. Other levels, such as TCP, can be used by specifying the protocol number of that level. Protocol numbers can be found by using the getprotobyname() function.

optname
Available Socket Options
Option | Description | Type
SO_DEBUG | Reports whether debugging information is being recorded. | int
SO_BROADCAST | Reports whether transmission of broadcast messages is supported. | int
SO_REUSEADDR | Reports whether local addresses can be reused. | int
SO_KEEPALIVE | Reports whether connections are kept active with periodic transmission of messages. If the connected socket fails to respond to these messages, the connection is broken and processes writing to that socket are notified with a SIGPIPE signal. | int
SO_LINGER

Reports whether the socket lingers on socket_close() if data is present. By default, when the socket is closed, it attempts to send all unsent data. In the case of a connection-oriented socket, socket_close() will wait for its peer to acknowledge the data.

If l_onoff is non-zero and l_linger is zero, all the unsent data will be discarded and RST (reset) is sent to the peer in the case of a connection-oriented socket.

On the other hand, if l_onoff is non-zero and l_linger is non-zero, socket_close() will block until all the data is sent or the time specified in l_linger elapses. If the socket is non-blocking, socket_close() will fail and return an error.

array. The array will contain two keys: l_onoff and l_linger.
SO_OOBINLINE | Reports whether the socket leaves out-of-band data inline. | int
SO_SNDBUF | Reports the size of the send buffer. | int
SO_RCVBUF | Reports the size of the receive buffer. | int
SO_ERROR | Reports information about error status and clears it. | int (cannot be set by socket_set_option())
SO_TYPE | Reports the socket type (e.g. SOCK_STREAM). | int (cannot be set by socket_set_option())
SO_DONTROUTE | Reports whether outgoing messages bypass the standard routing facilities. | int
SO_RCVLOWAT | Reports the minimum number of bytes to process for socket input operations. | int
SO_RCVTIMEO | Reports the timeout value for input operations. | array. The array will contain two keys: sec which is the seconds part on the timeout value and usec which is the microsecond part of the timeout value.
SO_SNDTIMEO | Reports the timeout value specifying the amount of time that an output function blocks because flow control prevents data from being sent. | array. The array will contain two keys: sec which is the seconds part on the timeout value and usec which is the microsecond part of the timeout value.
SO_SNDLOWAT | Reports the minimum number of bytes to process for socket output operations. | int
TCP_NODELAY | Reports whether the Nagle TCP algorithm is disabled. | int
MCAST_JOIN_GROUP | Joins a multicast group. (added in PHP 5.4) | array with keys "group", specifying a string with an IPv4 or IPv6 multicast address and "interface", specifying either an interface number (type int) or a string with the interface name, like "eth0". 0 can be specified to indicate the interface should be selected using routing rules. (can only be used in socket_set_option())
MCAST_LEAVE_GROUP | Leaves a multicast group. (added in PHP 5.4) | array. See MCAST_JOIN_GROUP for more information. (can only be used in socket_set_option())
MCAST_BLOCK_SOURCE | Blocks packets arriving from a specific source to a specific multicast group, which must have been previously joined. (added in PHP 5.4) | array with the same keys as MCAST_JOIN_GROUP, plus one extra key, source, which maps to a string specifying an IPv4 or IPv6 address of the source to be blocked. (can only be used in socket_set_option())
MCAST_UNBLOCK_SOURCE | Unblocks (start receiving again) packets arriving from a specific source address to a specific multicast group, which must have been previously joined. (added in PHP 5.4) | array with the same format as MCAST_BLOCK_SOURCE. (can only be used in socket_set_option())
MCAST_JOIN_SOURCE_GROUP | Receive packets destined to a specific multicast group whose source address matches a specific value. (added in PHP 5.4) | array with the same format as MCAST_BLOCK_SOURCE. (can only be used in socket_set_option())
MCAST_LEAVE_SOURCE_GROUP | Stop receiving packets destined to a specific multicast group whose soure address matches a specific value. (added in PHP 5.4) | array with the same format as MCAST_BLOCK_SOURCE. (can only be used in socket_set_option())
IP_MULTICAST_IF | The outgoing interface for IPv4 multicast packets. (added in PHP 5.4) | Either int specifying the interface number or a string with an interface name, like eth0. The value 0 can be used to indicate the routing table is to used in the interface selection. The function socket_get_option() returns an interface index. Note that, unlike the C API, this option does NOT take an IP address. This eliminates the interface difference between IP_MULTICAST_IF and IPV6_MULTICAST_IF.
IPV6_MULTICAST_IF | The outgoing interface for IPv6 multicast packets. (added in PHP 5.4) | The same as IP_MULTICAST_IF.
IP_MULTICAST_LOOP | The multicast loopback policy for IPv4 packets, which determines whether multicast packets sent by this socket also reach receivers in the same host that have joined the same multicast group on the outgoing interface used by this socket. This is the case by default. (added in PHP 5.4) | int (either 0 or 1). For socket_set_option() any value will be accepted and will be converted to a boolean following the usual PHP rules.
IPV6_MULTICAST_LOOP | Analogous to IP_MULTICAST_LOOP, but for IPv6. (added in PHP 5.4) | int. See IP_MULTICAST_LOOP.
IP_MULTICAST_TTL | The time-to-live of outgoing IPv4 multicast packets. This should be a value between 0 (don't leave the interface) and 255. The default value is 1 (only the local network is reached). (added in PHP 5.4) | int between 0 and 255.
IPV6_MULTICAST_HOPS | Analogous to IP_MULTICAST_TTL, but for IPv6 packets. The value -1 is also accepted, meaning the route default should be used. (added in PHP 5.4) | int between -1 and 255.

返回值

Returns the value of the given option, or FALSE on errors.

范例

Example #1 socket_get_option() example

<?php
$socket = socket_create_listen(1223);

$linger = array('l_linger' => 1, 'l_onoff' => 1);
socket_set_option($socket, SOL_SOCKET, SO_LINGER, $linger);

var_dump(socket_get_option($socket, SOL_SOCKET, SO_REUSEADDR));
?>

参见

  • socket_create_listen() - Opens a socket on port to accept connections
  • socket_set_option() - Sets socket options for the socket

socket_create
socket_getopt
Socket 函数


别名 socket_get_option

socket_get_option
socket_getpeername
Socket 函数
PHP Manual

socket_getopt

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_getopt — 别名 socket_get_option()

说明

此函数是该函数的别名： socket_get_option().

socket_get_option
socket_getpeername
Socket 函数


Queries the remote side of the given socket which may either result in host/port or in a Unix filesystem path, dependent on its type

socket_getopt
socket_getsockname
Socket 函数
PHP Manual

socket_getpeername

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_getpeername — Queries the remote side of the given socket which may either result in host/port or in a Unix filesystem path, dependent on its type

说明

bool socket_getpeername ( resource $socket , string &$address [, int &$port ] )

Queries the remote side of the given socket which may either result in host/port or in a Unix filesystem path, dependent on its type.

参数

socket

A valid socket resource created with socket_create() or socket_accept().

address

If the given socket is of type AF_INET or AF_INET6, socket_getpeername() will return the peers (remote) IP address in appropriate notation (e.g. 127.0.0.1 or fe80::1) in the address parameter and, if the optional port parameter is present, also the associated port.

If the given socket is of type AF_UNIX, socket_getpeername() will return the Unix filesystem path (e.g. /var/run/daemon.sock) in the address parameter.

port

If given, this will hold the port associated to address.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 socket_getpeername() may also return FALSE if the socket type is not any of AF_INET, AF_INET6, or AF_UNIX, in which case the last socket error code is not updated.

注释

Note:

socket_getpeername() should not be used with AF_UNIX sockets created with socket_accept(). Only sockets created with socket_connect() or a primary server socket following a call to socket_bind() will return meaningful values.

Note:

For having socket_getpeername() to return a meaningful value, the socket it is applied upon must of course be one for which the concept of "peer" makes sense.

参见

  • socket_getsockname() - Queries the local side of the given socket which may either result in host/port or in a Unix filesystem path, dependent on its type
  • socket_last_error() - Returns the last error on the socket
  • socket_strerror() - Return a string describing a socket error

socket_getopt
socket_getsockname
Socket 函数


Queries the local side of the given socket which may either result in host/port or in a Unix filesystem path, dependent on its type

socket_getpeername
socket_import_stream
Socket 函数
PHP Manual

socket_getsockname

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_getsockname — Queries the local side of the given socket which may either result in host/port or in a Unix filesystem path, dependent on its type

说明

bool socket_getsockname ( resource $socket , string &$addr [, int &$port ] )

Note: socket_getsockname() should not be used with AF_UNIX sockets created with socket_connect(). Only sockets created with socket_accept() or a primary server socket following a call to socket_bind() will return meaningful values.

参数

socket

A valid socket resource created with socket_create() or socket_accept().

addr

If the given socket is of type AF_INET or AF_INET6, socket_getsockname() will return the local IP address in appropriate notation (e.g. 127.0.0.1 or fe80::1) in the address parameter and, if the optional port parameter is present, also the associated port.

If the given socket is of type AF_UNIX, socket_getsockname() will return the Unix filesystem path (e.g. /var/run/daemon.sock) in the address parameter.

port

If provided, this will hold the associated port.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 socket_getsockname() may also return FALSE if the socket type is not any of AF_INET, AF_INET6, or AF_UNIX, in which case the last socket error code is not updated.

参见

  • socket_getpeername() - Queries the remote side of the given socket which may either result in host/port or in a Unix filesystem path, dependent on its type
  • socket_last_error() - Returns the last error on the socket
  • socket_strerror() - Return a string describing a socket error

socket_getpeername
socket_import_stream
Socket 函数


Import a stream

socket_getsockname
socket_last_error
Socket 函数
PHP Manual

socket_import_stream

(PHP 5 >= 5.4.0, PHP 7)

socket_import_stream — Import a stream

说明

resource socket_import_stream ( resource $stream )

Imports a stream that encapsulates a socket into a socket extension resource.

参数

stream

The stream resource to import.

返回值

Returns FALSE or NULL on failure.

范例

Example #1 socket_import_stream() example

<?php
$stream = stream_socket_server("udp://0.0.0.0:58380", $errno, $errstr, STREAM_SERVER_BIND);
$sock   = socket_import_stream($stream);
?>

参见

  • stream_socket_server() - Create an Internet or Unix domain server socket

socket_getsockname
socket_last_error
Socket 函数


Returns the last error on the socket

socket_import_stream
socket_listen
Socket 函数
PHP Manual

socket_last_error

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_last_error — Returns the last error on the socket

说明

int socket_last_error ([ resource $socket ] )

If a socket resource is passed to this function, the last error which occurred on this particular socket is returned. If the socket resource is omitted, the error code of the last failed socket function is returned. The latter is particularly helpful for functions like socket_create() which don't return a socket on failure and socket_select() which can fail for reasons not directly tied to a particular socket. The error code is suitable to be fed to socket_strerror() which returns a string describing the given error code.

If no error had occurred, or the error had been cleared with socket_clear_error(), the function returns 0.

参数

socket

A valid socket resource created with socket_create().

返回值

This function returns a socket error code.

范例

Example #1 socket_last_error() example

<?php
$socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

if ($socket === false) {
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);

    die("Couldn't create socket: [$errorcode] $errormsg");
}
?>

注释

Note:

socket_last_error() does not clear the error code, use socket_clear_error() for this purpose.

socket_import_stream
socket_listen
Socket 函数


Listens for a connection on a socket

socket_last_error
socket_read
Socket 函数
PHP Manual

socket_listen

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_listen — Listens for a connection on a socket

说明

bool socket_listen ( resource $socket [, int $backlog = 0 ] )

After the socket socket has been created using socket_create() and bound to a name with socket_bind(), it may be told to listen for incoming connections on socket.

socket_listen() is applicable only to sockets of type SOCK_STREAM or SOCK_SEQPACKET.

参数

socket

A valid socket resource created with socket_create().

backlog

A maximum of backlog incoming connections will be queued for processing. If a connection request arrives with the queue full the client may receive an error with an indication of ECONNREFUSED, or, if the underlying protocol supports retransmission, the request may be ignored so that retries may succeed.

Note:

The maximum number passed to the backlog parameter highly depends on the underlying platform. On Linux, it is silently truncated to SOMAXCONN. On win32, if passed SOMAXCONN, the underlying service provider responsible for the socket will set the backlog to a maximum reasonable value. There is no standard provision to find out the actual backlog value on this platform.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 The error code can be retrieved with socket_last_error(). This code may be passed to socket_strerror() to get a textual explanation of the error.

参见

  • socket_accept() - Accepts a connection on a socket
  • socket_bind() - 给套接字绑定名字
  • socket_connect() - 开启一个套接字连接
  • socket_create() - 创建一个套接字（通讯节点）
  • socket_strerror() - Return a string describing a socket error

socket_last_error
socket_read
Socket 函数


Reads a maximum of length bytes from a socket

socket_listen
socket_recv
Socket 函数
PHP Manual

socket_read

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_read — Reads a maximum of length bytes from a socket

说明

string socket_read ( resource $socket , int $length [, int $type = PHP_BINARY_READ ] )

The function socket_read() reads from the socket resource socket created by the socket_create() or socket_accept() functions.

参数

socket

A valid socket resource created with socket_create() or socket_accept().

length

The maximum number of bytes read is specified by the length parameter. Otherwise you can use \r, \n, or \0 to end reading (depending on the type parameter, see below).

type

Optional type parameter is a named constant:

  • PHP_BINARY_READ (Default) - use the system recv() function. Safe for reading binary data.
  • PHP_NORMAL_READ - reading stops at \n or \r.

返回值

socket_read() returns the data as a string on success, or FALSE on error (including if the remote host has closed the connection). The error code can be retrieved with socket_last_error(). This code may be passed to socket_strerror() to get a textual representation of the error.

Note:

socket_read() returns a zero length string ("") when there is no more data to read.

参见

  • socket_accept() - Accepts a connection on a socket
  • socket_bind() - 给套接字绑定名字
  • socket_connect() - 开启一个套接字连接
  • socket_listen() - Listens for a connection on a socket
  • socket_last_error() - Returns the last error on the socket
  • socket_strerror() - Return a string describing a socket error
  • socket_write() - Write to a socket

socket_listen
socket_recv
Socket 函数


从已连接的socket接收数据

socket_read
socket_recvfrom
Socket 函数
PHP Manual

socket_recv

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_recv — 从已连接的socket接收数据

说明

int socket_recv ( resource $socket , string &$buf , int $len , int $flags )

函数 socket_recv() 从 socket 中接受长度为 len 字节的数据，并保存在 buf 中。 socket_recv() 用于从已连接的socket中接收数据。除此之外，可以设定一个或多个 flags 来控制函数的具体行为。

buf 以引用形式传递，因此必须是一个以声明的有效的变量。从 socket 中接收到的数据将会保存在 buf 中。

参数

socket

参数 socket 必须是一个由 socket_create() 创建的socket资源。

buf

从socket中获取的数据将被保存在由 buf 制定的变量中。 如果有错误发生，如链接被重置，数据不可用等等， buf 将被设为 NULL。

len

长度最多为 len 字节的数据将被接收。

flags

flags 的值可以为下列任意flag的组合。使用按位或运算符(|)来 组合不同的flag。

可用的 flags 值
Flag | 描述
MSG_OOB | 处理超出边界的数据
MSG_PEEK | 从接受队列的起始位置接收数据，但不将他们从接受队列中移除。
MSG_WAITALL | 在接收到至少 len 字节的数据之前，造成一个阻塞，并暂停脚本运行（block）。但是， 如果接收到中断信号，或远程服务器断开连接，该函数将返回少于 len 字节的数据。
MSG_DONTWAIT | 如果制定了该flag，函数将不会造成阻塞，即使在全局设置中指定了阻塞设置。

返回值

socket_recv() 返回一个数字，表示接收到的字节数。如果发生了错误，则返回 FALSE 错误码可使用 socket_last_error() 接收。也可使用函数 socket_strerror() 来取得关于错误的文字描述。

范例

Example #1 socket_recv() 范例

该范例简单地使用 socket_recv() 重写了 范例 中的 第一个例子。

<?php
error_reporting(E_ALL);

echo "<h2>TCP/IP Connection</h2>\n";

/* Get the port for the WWW service. */
$service_port = getservbyname('www', 'tcp');

/* Get the IP address for the target host. */
$address = gethostbyname('www.example.com');

/* Create a TCP/IP socket. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
} else {
    echo "OK.\n";
}

echo "Attempting to connect to '$address' on port '$service_port'...";
$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
    echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
} else {
    echo "OK.\n";
}

$in = "HEAD / HTTP/1.1\r\n";
$in .= "Host: www.example.com\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';

echo "Sending HTTP HEAD request...";
socket_write($socket, $in, strlen($in));
echo "OK.\n";

echo "Reading response:\n\n";
$buf = 'This is my buffer.';
if (false !== ($bytes = socket_recv($socket, $buf, 2048, MSG_WAITALL))) {
    echo "Read $bytes bytes from socket_recv(). Closing socket...";
} else {
    echo "socket_recv() failed; reason: " . socket_strerror(socket_last_error($socket)) . "\n";
}
socket_close($socket);

echo $buf . "\n";
echo "OK.\n\n";
?>

The above example will produce something like:

<h2>TCP/IP Connection</h2>
OK.
Attempting to connect to '208.77.188.166' on port '80'...OK.
Sending HTTP HEAD request...OK.
Reading response:

Read 123 bytes from socket_recv(). Closing socket...HTTP/1.1 200 OK
Date: Mon, 14 Sep 2009 08:56:36 GMT
Server: Apache/2.2.3 (Red Hat)
Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT
ETag: "b80f4-1b6-80bfd280"
Accept-Ranges: bytes
Content-Length: 438
Connection: close
Content-Type: text/html; CHARSET=gb2312

OK.

socket_read
socket_recvfrom
Socket 函数


Receives data from a socket whether or not it is connection-oriented

socket_recv
socket_recvmsg
Socket 函数
PHP Manual

socket_recvfrom

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_recvfrom — Receives data from a socket whether or not it is connection-oriented

说明

int socket_recvfrom ( resource $socket , string &$buf , int $len , int $flags , string &$name [, int &$port ] )

The socket_recvfrom() function receives len bytes of data in buf from name on port port (if the socket is not of type AF_UNIX) using socket. socket_recvfrom() can be used to gather data from both connected and unconnected sockets. Additionally, one or more flags can be specified to modify the behaviour of the function.

The name and port must be passed by reference. If the socket is not connection-oriented, name will be set to the internet protocol address of the remote host or the path to the UNIX socket. If the socket is connection-oriented, name is NULL. Additionally, the port will contain the port of the remote host in the case of an unconnected AF_INET or AF_INET6 socket.

参数

socket

The socket must be a socket resource previously created by socket_create().

buf

The data received will be fetched to the variable specified with buf.

len

Up to len bytes will be fetched from remote host.

flags

The value of flags can be any combination of the following flags, joined with the binary OR (|) operator.

Possible values for flags
Flag | Description
MSG_OOB | Process out-of-band data.
MSG_PEEK | Receive data from the beginning of the receive queue without removing it from the queue.
MSG_WAITALL | Block until at least len are received. However, if a signal is caught or the remote host disconnects, the function may return less data.
MSG_DONTWAIT | With this flag set, the function returns even if it would normally have blocked.
name

If the socket is of the type AF_UNIX type, name is the path to the file. Else, for unconnected sockets, name is the IP address of, the remote host, or NULL if the socket is connection-oriented.

port

This argument only applies to AF_INET and AF_INET6 sockets, and specifies the remote port from which the data is received. If the socket is connection-oriented, port will be NULL.

返回值

socket_recvfrom() returns the number of bytes received, or FALSE if there was an error. The actual error code can be retrieved by calling socket_last_error(). This error code may be passed to socket_strerror() to get a textual explanation of the error.

范例

Example #1 socket_recvfrom() example

<?php
error_reporting(E_ALL | E_STRICT);

$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_bind($socket, '127.0.0.1', 1223);

$from = '';
$port = 0;
socket_recvfrom($socket, $buf, 12, 0, $from, $port);

echo "Received $buf from remote address $from and remote port $port" . PHP_EOL;
?>

This example will initiate a UDP socket on port 1223 of 127.0.0.1 and print at most 12 characters received from a remote host.

更新日志

版本 | 说明
4.3.0 | socket_recvfrom() is now binary safe.

参见

  • socket_recv() - 从已连接的socket接收数据
  • socket_send() - Sends data to a connected socket
  • socket_sendto() - Sends a message to a socket, whether it is connected or not
  • socket_create() - 创建一个套接字（通讯节点）

socket_recv
socket_recvmsg
Socket 函数


Read a message

socket_recvfrom
socket_select
Socket 函数
PHP Manual

socket_recvmsg

(PHP 5 >= 5.5.0, PHP 7)

socket_recvmsg — Read a message

说明

int socket_recvmsg ( resource $socket , string $message [, int $flags ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

socket

message

flags

返回值

参见

  • socket_sendmsg() - Send a message
  • socket_cmsg_space() - Calculate message buffer size

socket_recvfrom
socket_select
Socket 函数


Runs the select() system call on the given arrays of sockets with a specified timeout

socket_recvmsg
socket_send
Socket 函数
PHP Manual

socket_select

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_select — Runs the select() system call on the given arrays of sockets with a specified timeout

说明

int socket_select ( array &$read , array &$write , array &$except , int $tv_sec [, int $tv_usec = 0 ] )

socket_select() accepts arrays of sockets and waits for them to change status. Those coming with BSD sockets background will recognize that those socket resource arrays are in fact the so-called file descriptor sets. Three independent arrays of socket resources are watched.

参数

read

The sockets listed in the read array will be watched to see if characters become available for reading (more precisely, to see if a read will not block - in particular, a socket resource is also ready on end-of-file, in which case a socket_read() will return a zero length string).

write

The sockets listed in the write array will be watched to see if a write will not block.

except

The sockets listed in the except array will be watched for exceptions.

tv_sec

The tv_sec and tv_usec together form the timeout parameter. The timeout is an upper bound on the amount of time elapsed before socket_select() return. tv_sec may be zero , causing socket_select() to return immediately. This is useful for polling. If tv_sec is NULL (no timeout), socket_select() can block indefinitely.

tv_usec

Warning

On exit, the arrays are modified to indicate which socket resource actually changed status.

You do not need to pass every array to socket_select(). You can leave it out and use an empty array or NULL instead. Also do not forget that those arrays are passed by reference and will be modified after socket_select() returns.

Note:

Due a limitation in the current Zend Engine it is not possible to pass a constant modifier like NULL directly as a parameter to a function which expects this parameter to be passed by reference. Instead use a temporary variable or an expression with the leftmost member being a temporary variable:

Example #1 Using NULL with socket_select()

<?php
$e = NULL;
socket_select($r, $w, $e, 0);
?>

返回值

On success socket_select() returns the number of socket resources contained in the modified arrays, which may be zero if the timeout expires before anything interesting happens. On error FALSE is returned. The error code can be retrieved with socket_last_error().

Note:

Be sure to use the === operator when checking for an error. Since the socket_select() may return 0 the comparison with == would evaluate to TRUE:

Example #2 Understanding socket_select()'s result

<?php
$e = NULL;
if (false === socket_select($r, $w, $e, 0)) {
    echo "socket_select() failed, reason: " .
        socket_strerror(socket_last_error()) . "\n";
}
?>

范例

Example #3 socket_select() example

<?php
/* Prepare the read array */
$read   = array($socket1, $socket2);
$write  = NULL;
$except = NULL;
$num_changed_sockets = socket_select($read, $write, $except, 0);

if ($num_changed_sockets === false) {
    /* Error handling */
} else if ($num_changed_sockets > 0) {
    /* At least at one of the sockets something interesting happened */
}
?>

注释

Note:

Be aware that some socket implementations need to be handled very carefully. A few basic rules:

  • You should always try to use socket_select() without timeout. Your program should have nothing to do if there is no data available. Code that depends on timeouts is not usually portable and difficult to debug.
  • No socket resource must be added to any set if you do not intend to check its result after the socket_select() call, and respond appropriately. After socket_select() returns, all socket resources in all arrays must be checked. Any socket resource that is available for writing must be written to, and any socket resource available for reading must be read from.
  • If you read/write to a socket returns in the arrays be aware that they do not necessarily read/write the full amount of data you have requested. Be prepared to even only be able to read/write a single byte.
  • It's common to most socket implementations that the only exception caught with the except array is out-of-bound data received on a socket.

参见

  • socket_read() - Reads a maximum of length bytes from a socket
  • socket_write() - Write to a socket
  • socket_last_error() - Returns the last error on the socket
  • socket_strerror() - Return a string describing a socket error

socket_recvmsg
socket_send
Socket 函数


Sends data to a connected socket

socket_select
socket_sendmsg
Socket 函数
PHP Manual

socket_send

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_send — Sends data to a connected socket

说明

int socket_send ( resource $socket , string $buf , int $len , int $flags )

The function socket_send() sends len bytes to the socket socket from buf.

参数

socket

A valid socket resource created with socket_create() or socket_accept().

buf

A buffer containing the data that will be sent to the remote host.

len

The number of bytes that will be sent to the remote host from buf.

flags

The value of flags can be any combination of the following flags, joined with the binary OR (|) operator.

Possible values for flags
MSG_OOB | Send OOB (out-of-band) data.
MSG_EOR | Indicate a record mark. The sent data completes the record.
MSG_EOF | Close the sender side of the socket and include an appropriate notification of this at the end of the sent data. The sent data completes the transaction.
MSG_DONTROUTE | Bypass routing, use direct interface.

返回值

socket_send() returns the number of bytes sent, or FALSE on error.

参见

  • socket_sendto() - Sends a message to a socket, whether it is connected or not

socket_select
socket_sendmsg
Socket 函数


Send a message

socket_send
socket_sendto
Socket 函数
PHP Manual

socket_sendmsg

(PHP 5 >= 5.5.0, PHP 7)

socket_sendmsg — Send a message

说明

int socket_sendmsg ( resource $socket , array $message , int $flags )

Warning

本函数还未编写文档，仅有参数列表。

参数

socket

message

flags

返回值

Returns the number of bytes sent, 或者在失败时返回 FALSE.

参见

  • socket_recvmsg() - Read a message
  • socket_cmsg_space() - Calculate message buffer size

socket_send
socket_sendto
Socket 函数


Sends a message to a socket, whether it is connected or not

socket_sendmsg
socket_set_block
Socket 函数
PHP Manual

socket_sendto

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_sendto — Sends a message to a socket, whether it is connected or not

说明

int socket_sendto ( resource $socket , string $buf , int $len , int $flags , string $addr [, int $port = 0 ] )

The function socket_sendto() sends len bytes from buf through the socket socket to the port at the address addr.

参数

socket

A valid socket resource created using socket_create().

buf

The sent data will be taken from buffer buf.

len

len bytes from buf will be sent.

flags

The value of flags can be any combination of the following flags, joined with the binary OR (|) operator.

Possible values for flags
MSG_OOB | Send OOB (out-of-band) data.
MSG_EOR | Indicate a record mark. The sent data completes the record.
MSG_EOF | Close the sender side of the socket and include an appropriate notification of this at the end of the sent data. The sent data completes the transaction.
MSG_DONTROUTE | Bypass routing, use direct interface.

addr

IP address of the remote host.

port

port is the remote port number at which the data will be sent.

返回值

socket_sendto() returns the number of bytes sent to the remote host, or FALSE if an error occurred.

范例

Example #1 socket_sendto() Example

<?php
    $sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);

    $msg = "Ping !";
    $len = strlen($msg);

    socket_sendto($sock, $msg, $len, 0, '127.0.0.1', 1223);
    socket_close($sock);
?>

参见

  • socket_send() - Sends data to a connected socket

socket_sendmsg
socket_set_block
Socket 函数


Sets blocking mode on a socket resource

socket_sendto
socket_set_nonblock
Socket 函数
PHP Manual

socket_set_block

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

socket_set_block — Sets blocking mode on a socket resource

说明

bool socket_set_block ( resource $socket )

The socket_set_block() function removes the O_NONBLOCK flag on the socket specified by the socket parameter.

When an operation (e.g. receive, send, connect, accept, ...) is performed on a blocking socket, the script will pause its execution until it receives a signal or it can perform the operation.

参数

socket

A valid socket resource created with socket_create() or socket_accept().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 socket_set_block() example

<?php
$socket = socket_create_listen(1223);
socket_set_block($socket);

socket_accept($socket);
?>

This example creates a listening socket on all interfaces on port 1223 and sets the socket to O_BLOCK mode. socket_accept() will hang until there is a connection to accept.

参见

  • socket_set_nonblock() - Sets nonblocking mode for file descriptor fd
  • socket_set_option() - Sets socket options for the socket

socket_sendto
socket_set_nonblock
Socket 函数


Sets nonblocking mode for file descriptor fd

socket_set_block
socket_set_option
Socket 函数
PHP Manual

socket_set_nonblock

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_set_nonblock — Sets nonblocking mode for file descriptor fd

说明

bool socket_set_nonblock ( resource $socket )

The socket_set_nonblock() function sets the O_NONBLOCK flag on the socket specified by the socket parameter.

When an operation (e.g. receive, send, connect, accept, ...) is performed on a non-blocking socket, the script will not pause its execution until it receives a signal or it can perform the operation. Rather, if the operation would result in a block, the called function will fail.

参数

socket

A valid socket resource created with socket_create() or socket_accept().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 socket_set_nonblock() example

<?php
$socket = socket_create_listen(1223);
socket_set_nonblock($socket);

socket_accept($socket);
?>

This example creates a listening socket on all interfaces on port 1223 and sets the socket to O_NONBLOCK mode. socket_accept() will immediately fail unless there is a pending connection exactly at this moment.

参见

  • socket_set_block() - Sets blocking mode on a socket resource
  • socket_set_option() - Sets socket options for the socket
  • stream_set_blocking() - 为资源流设置阻塞或者阻塞模式

socket_set_block
socket_set_option
Socket 函数


Sets socket options for the socket

socket_set_nonblock
socket_setopt
Socket 函数
PHP Manual

socket_set_option

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

socket_set_option — Sets socket options for the socket

说明

bool socket_set_option ( resource $socket , int $level , int $optname , mixed $optval )

The socket_set_option() function sets the option specified by the optname parameter, at the specified protocol level, to the value pointed to by the optval parameter for the socket.

参数

socket

A valid socket resource created with socket_create() or socket_accept().

level

The level parameter specifies the protocol level at which the option resides. For example, to retrieve options at the socket level, a level parameter of SOL_SOCKET would be used. Other levels, such as TCP, can be used by specifying the protocol number of that level. Protocol numbers can be found by using the getprotobyname() function.

optname

The available socket options are the same as those for the socket_get_option() function.

optval

The option value.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 socket_set_option() example

<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

if (!is_resource($socket)) {
    echo 'Unable to create socket: '. socket_strerror(socket_last_error()) . PHP_EOL;
}

if (!socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1)) {
    echo 'Unable to set option on socket: '. socket_strerror(socket_last_error()) . PHP_EOL;
}

if (!socket_bind($socket, '127.0.0.1', 1223)) {
    echo 'Unable to bind socket: '. socket_strerror(socket_last_error()) . PHP_EOL;
}

$rval = socket_get_option($socket, SOL_SOCKET, SO_REUSEADDR);

if ($rval === false) {
    echo 'Unable to get socket option: '. socket_strerror(socket_last_error()) . PHP_EOL;
} else if ($rval !== 0) {
    echo 'SO_REUSEADDR is set on socket !' . PHP_EOL;
}
?>

参见

  • socket_create() - 创建一个套接字（通讯节点）
  • socket_bind() - 给套接字绑定名字
  • socket_strerror() - Return a string describing a socket error
  • socket_last_error() - Returns the last error on the socket
  • socket_get_option() - Gets socket options for the socket

socket_set_nonblock
socket_setopt
Socket 函数


别名 socket_set_option

socket_set_option
socket_shutdown
Socket 函数
PHP Manual

socket_setopt

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_setopt — 别名 socket_set_option()

说明

此函数是该函数的别名： socket_set_option().

socket_set_option
socket_shutdown
Socket 函数


Shuts down a socket for receiving, sending, or both

socket_setopt
socket_strerror
Socket 函数
PHP Manual

socket_shutdown

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_shutdown — Shuts down a socket for receiving, sending, or both

说明

bool socket_shutdown ( resource $socket [, int $how = 2 ] )

The socket_shutdown() function allows you to stop incoming, outgoing or all data (the default) from being sent through the socket

Note:

The associated buffer, or buffers, may or may not be emptied.

参数

socket

A valid socket resource created with socket_create().

how

The value of how can be one of the following:

possible values for how
0 | Shutdown socket reading
1 | Shutdown socket writing
2 | Shutdown socket reading and writing

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

socket_setopt
socket_strerror
Socket 函数


Return a string describing a socket error

socket_shutdown
socket_write
Socket 函数
PHP Manual

socket_strerror

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_strerror — Return a string describing a socket error

说明

string socket_strerror ( int $errno )

socket_strerror() takes as its errno parameter a socket error code as returned by socket_last_error() and returns the corresponding explanatory text.

Note:

Although the error messages generated by the socket extension are in English, the system messages retrieved with this function will appear depending on the current locale (LC_MESSAGES).

参数

errno

A valid socket error number, likely produced by socket_last_error().

返回值

Returns the error message associated with the errno parameter.

范例

Example #1 socket_strerror() example

<?php
if (false == ($socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP))) {
   echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
}

if (false == (@socket_bind($socket, '127.0.0.1', 80))) {
   echo "socket_bind() failed: reason: " . socket_strerror(socket_last_error($socket)) . "\n";
}
?>

The expected output from the above example (assuming the script is not run with root privileges):

socket_bind() failed: reason: Permission denied

参见

  • socket_accept() - Accepts a connection on a socket
  • socket_bind() - 给套接字绑定名字
  • socket_connect() - 开启一个套接字连接
  • socket_listen() - Listens for a connection on a socket
  • socket_create() - 创建一个套接字（通讯节点）

socket_shutdown
socket_write
Socket 函数


Write to a socket

socket_strerror
SSH2
Socket 函数
PHP Manual

socket_write

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_write — Write to a socket

说明

int socket_write ( resource $socket , string $buffer [, int $length ] )

The function socket_write() writes to the socket from the given buffer.

参数

socket

buffer

The buffer to be written.

length

The optional parameter length can specify an alternate length of bytes written to the socket. If this length is greater than the buffer length, it is silently truncated to the length of the buffer.

返回值

Returns the number of bytes successfully written to the socket 或者在失败时返回 FALSE. The error code can be retrieved with socket_last_error(). This code may be passed to socket_strerror() to get a textual explanation of the error.

Note:

It is perfectly valid for socket_write() to return zero which means no bytes have been written. Be sure to use the === operator to check for FALSE in case of an error.

注释

Note:

socket_write() does not necessarily write all bytes from the given buffer. It's valid that, depending on the network buffers etc., only a certain amount of data, even one byte, is written though your buffer is greater. You have to watch out so you don't unintentionally forget to transmit the rest of your data.

参见

  • socket_accept() - Accepts a connection on a socket
  • socket_bind() - 给套接字绑定名字
  • socket_connect() - 开启一个套接字连接
  • socket_listen() - Listens for a connection on a socket
  • socket_read() - Reads a maximum of length bytes from a socket
  • socket_strerror() - Return a string describing a socket error

socket_strerror
SSH2
Socket 函数


Secure Shell2

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • SSH2 函数
    • ssh2_auth_agent — Authenticate over SSH using the ssh agent
    • ssh2_auth_hostbased_file — Authenticate using a public hostkey
    • ssh2_auth_none — Authenticate as "none"
    • ssh2_auth_password — Authenticate over SSH using a plain password
    • ssh2_auth_pubkey_file — Authenticate using a public key
    • ssh2_connect — Connect to an SSH server
    • ssh2_exec — Execute a command on a remote server
    • ssh2_fetch_stream — Fetch an extended data stream
    • ssh2_fingerprint — Retrieve fingerprint of remote server
    • ssh2_methods_negotiated — Return list of negotiated methods
    • ssh2_publickey_add — Add an authorized publickey
    • ssh2_publickey_init — Initialize Publickey subsystem
    • ssh2_publickey_list — List currently authorized publickeys
    • ssh2_publickey_remove — Remove an authorized publickey
    • ssh2_scp_recv — Request a file via SCP
    • ssh2_scp_send — Send a file via SCP
    • ssh2_sftp_chmod — Changes file mode
    • ssh2_sftp_lstat — Stat a symbolic link
    • ssh2_sftp_mkdir — Create a directory
    • ssh2_sftp_readlink — Return the target of a symbolic link
    • ssh2_sftp_realpath — Resolve the realpath of a provided path string
    • ssh2_sftp_rename — Rename a remote file
    • ssh2_sftp_rmdir — Remove a directory
    • ssh2_sftp_stat — Stat a file on a remote filesystem
    • ssh2_sftp_symlink — Create a symlink
    • ssh2_sftp_unlink — Delete a file
    • ssh2_sftp — Initialize SFTP subsystem
    • ssh2_shell — Request an interactive shell
    • ssh2_tunnel — Open a tunnel through a remote server
socket_write
简介
其它服务


简介

Bindings to the » libssh2 library which provide access to resources (shell, remote exec, tunneling, file transfer) on a remote machine using a secure cryptographic transport.

SSH2
安装／配置
SSH2


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
SSH2


需求

The » OpenSSL and » libssh2 libraries are required. Ensure that the development libraries are installed, where a typical package name might be openssl-dev.

Version 1.2 or newer of the libssh2 library is required, although it's possible newer releases of pecl/ssh2 may require newer versions (see the release notes).

The ssh2_auth_agent() function will only be available with libssh >= 1.2.3.

support for stream_set_timeout() to channel streams will only be available with libssh >= 1.2.9.

Libssh2 comes in two flavours: gcrypt or openssl. Some linux distributions build libssh2 with the gcrypt library, some use openssl. Libssh2 has some issues when compiled with gcrypt, please use openssl.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/ssh2.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

SSH2_FINGERPRINT_MD5 (integer)
Flag to ssh2_fingerprint() requesting hostkey fingerprint as an MD5 hash.
SSH2_FINGERPRINT_SHA1 (integer)
Flag to ssh2_fingerprint() requesting hostkey fingerprint as an SHA1 hash.
SSH2_FINGERPRINT_HEX (integer)
Flag to ssh2_fingerprint() requesting hostkey fingerprint as a string of hexits.
SSH2_FINGERPRINT_RAW (integer)
Flag to ssh2_fingerprint() requesting hostkey fingerprint as a raw string of 8-bit characters.
SSH2_TERM_UNIT_CHARS (integer)
Flag to ssh2_shell() specifying that width and height are provided as character sizes.
SSH2_TERM_UNIT_PIXELS (integer)
Flag to ssh2_shell() specifying that width and height are provided in pixel units.
SSH2_DEFAULT_TERM_WIDTH (integer)
Default terminal width requested by ssh2_shell().
SSH2_DEFAULT_TERM_HEIGHT (integer)
Default terminal height requested by ssh2_shell().
SSH2_DEFAULT_TERM_UNIT (integer)
Default terminal units requested by ssh2_shell().
SSH2_STREAM_STDIO (integer)
Flag to ssh2_fetch_stream() requesting STDIO subchannel.
SSH2_STREAM_STDERR (integer)
Flag to ssh2_fetch_stream() requesting STDERR subchannel.
SSH2_DEFAULT_TERMINAL (string)
Default terminal type (e.g. vt102, ansi, xterm, vanilla) requested by ssh2_shell().
资源类型
SSH2 函数
SSH2


SSH2 函数

Table of Contents

  • ssh2_auth_agent — Authenticate over SSH using the ssh agent
  • ssh2_auth_hostbased_file — Authenticate using a public hostkey
  • ssh2_auth_none — Authenticate as "none"
  • ssh2_auth_password — Authenticate over SSH using a plain password
  • ssh2_auth_pubkey_file — Authenticate using a public key
  • ssh2_connect — Connect to an SSH server
  • ssh2_exec — Execute a command on a remote server
  • ssh2_fetch_stream — Fetch an extended data stream
  • ssh2_fingerprint — Retrieve fingerprint of remote server
  • ssh2_methods_negotiated — Return list of negotiated methods
  • ssh2_publickey_add — Add an authorized publickey
  • ssh2_publickey_init — Initialize Publickey subsystem
  • ssh2_publickey_list — List currently authorized publickeys
  • ssh2_publickey_remove — Remove an authorized publickey
  • ssh2_scp_recv — Request a file via SCP
  • ssh2_scp_send — Send a file via SCP
  • ssh2_sftp_chmod — Changes file mode
  • ssh2_sftp_lstat — Stat a symbolic link
  • ssh2_sftp_mkdir — Create a directory
  • ssh2_sftp_readlink — Return the target of a symbolic link
  • ssh2_sftp_realpath — Resolve the realpath of a provided path string
  • ssh2_sftp_rename — Rename a remote file
  • ssh2_sftp_rmdir — Remove a directory
  • ssh2_sftp_stat — Stat a file on a remote filesystem
  • ssh2_sftp_symlink — Create a symlink
  • ssh2_sftp_unlink — Delete a file
  • ssh2_sftp — Initialize SFTP subsystem
  • ssh2_shell — Request an interactive shell
  • ssh2_tunnel — Open a tunnel through a remote server
预定义常量
ssh2_auth_agent
SSH2


Authenticate over SSH using the ssh agent

SSH2 函数
ssh2_auth_hostbased_file
SSH2 函数
PHP Manual

ssh2_auth_agent

(PECL ssh2 >= 0.12)

ssh2_auth_agent — Authenticate over SSH using the ssh agent

说明

bool ssh2_auth_agent ( resource $session , string $username )

Authenticate over SSH using the ssh agent

Note: The ssh2_auth_agent() function will only be available when the ssh2 extension is compiled with libssh >= 1.2.3.

参数

session

An SSH connection link identifier, obtained from a call to ssh2_connect().

username

Remote user name.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Authenticating with a ssh agent

<?php
$connection = ssh2_connect('shell.example.com', 22);

if (ssh2_auth_agent($connection, 'username')) {
  echo "Authentication Successful!\n";
} else {
  die('Authentication Failed...');
}
?>

SSH2 函数
ssh2_auth_hostbased_file
SSH2 函数


Authenticate using a public hostkey

ssh2_auth_agent
ssh2_auth_none
SSH2 函数
PHP Manual

ssh2_auth_hostbased_file

(PECL ssh2 >= 0.9.0)

ssh2_auth_hostbased_file — Authenticate using a public hostkey

说明

bool ssh2_auth_hostbased_file ( resource $session , string $username , string $hostname , string $pubkeyfile , string $privkeyfile [, string $passphrase [, string $local_username ]] )

Authenticate using a public hostkey read from a file.

参数

session

An SSH connection link identifier, obtained from a call to ssh2_connect().

username

hostname

pubkeyfile

privkeyfile

passphrase

If privkeyfile is encrypted (which it should be), the passphrase must be provided.

local_username

If local_username is omitted, then the value for username will be used for it.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Authentication using a public hostkey

<?php
$connection = ssh2_connect('shell.example.com', 22, array('hostkey'=>'ssh-rsa'));

if (ssh2_auth_hostbased_file($connection, 'remoteusername', 'myhost.example.com',
                             '/usr/local/etc/hostkey_rsa.pub',
                             '/usr/local/etc/hostkey_rsa', 'secret',
                             'localusername')) {
  echo "Public Key Hostbased Authentication Successful\n";
} else {
  die('Public Key Hostbased Authentication Failed');
}
?>

注释

Note:

ssh2_auth_hostbased_file() requires libssh2 >= 0.7 and PHP/SSH2 >= 0.7

ssh2_auth_agent
ssh2_auth_none
SSH2 函数


Authenticate as "none"

ssh2_auth_hostbased_file
ssh2_auth_password
SSH2 函数
PHP Manual

ssh2_auth_none

(PECL ssh2 >= 0.9.0)

ssh2_auth_none — Authenticate as "none"

说明

mixed ssh2_auth_none ( resource $session , string $username )

Attempt "none" authentication which usually will (and should) fail. As part of the failure, this function will return an array of accepted authentication methods.

参数

session

An SSH connection link identifier, obtained from a call to ssh2_connect().

username

Remote user name.

返回值

Returns TRUE if the server does accept "none" as an authentication method, or an array of accepted authentication methods on failure.

范例

Example #1 Retrieving a list of authentication methods

<?php
$connection = ssh2_connect('shell.example.com', 22);

$auth_methods = ssh2_auth_none($connection, 'user');

if (in_array('password', $auth_methods)) {
  echo "Server supports password based authentication\n";
}
?>

ssh2_auth_hostbased_file
ssh2_auth_password
SSH2 函数


Authenticate over SSH using a plain password

ssh2_auth_none
ssh2_auth_pubkey_file
SSH2 函数
PHP Manual

ssh2_auth_password

(PECL ssh2 >= 0.9.0)

ssh2_auth_password — Authenticate over SSH using a plain password

说明

bool ssh2_auth_password ( resource $session , string $username , string $password )

Authenticate over SSH using a plain password. Since version 0.12 this function also supports keyboard_interactive method.

参数

session

An SSH connection link identifier, obtained from a call to ssh2_connect().

username

Remote user name.

password

Password for username

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Authenticating with a password

<?php
$connection = ssh2_connect('shell.example.com', 22);

if (ssh2_auth_password($connection, 'username', 'secret')) {
  echo "Authentication Successful!\n";
} else {
  die('Authentication Failed...');
}
?>

ssh2_auth_none
ssh2_auth_pubkey_file
SSH2 函数


Authenticate using a public key

ssh2_auth_password
ssh2_connect
SSH2 函数
PHP Manual

ssh2_auth_pubkey_file

(PECL ssh2 >= 0.9.0)

ssh2_auth_pubkey_file — Authenticate using a public key

说明

bool ssh2_auth_pubkey_file ( resource $session , string $username , string $pubkeyfile , string $privkeyfile [, string $passphrase ] )

Authenticate using a public key read from a file.

参数

session

An SSH connection link identifier, obtained from a call to ssh2_connect().

username

pubkeyfile

The public key file needs to be in OpenSSH's format. It should look something like:

ssh-rsa AAAAB3NzaC1yc2EAAA....NX6sqSnHA8= rsa-key-20121110

privkeyfile

passphrase

If privkeyfile is encrypted (which it should be), the passphrase must be provided.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Authentication using a public key

<?php
$connection = ssh2_connect('shell.example.com', 22, array('hostkey'=>'ssh-rsa'));

if (ssh2_auth_pubkey_file($connection, 'username',
                          '/home/username/.ssh/id_rsa.pub',
                          '/home/username/.ssh/id_rsa', 'secret')) {
  echo "Public Key Authentication Successful\n";
} else {
  die('Public Key Authentication Failed');
}
?>

注释

Note:

The underlying libssh library doesn't support partial auths very cleanly That is, if you need to supply both a public key and a password it will appear as if this function has failed. In this particular case a failure from this call may just mean that auth hasn't been completed yet. You would need to ignore this failure and continue on and call ssh2_auth_password() in order to complete authentication.

ssh2_auth_password
ssh2_connect
SSH2 函数


Connect to an SSH server

ssh2_auth_pubkey_file
ssh2_exec
SSH2 函数
PHP Manual

ssh2_connect

(PECL ssh2 >= 0.9.0)

ssh2_connect — Connect to an SSH server

说明

resource ssh2_connect ( string $host [, int $port = 22 [, array $methods [, array $callbacks ]]] )

Establish a connection to a remote SSH server.

Once connected, the client should verify the server's hostkey using ssh2_fingerprint(), then authenticate using either password or public key.

参数

host

port

methods

methods may be an associative array with up to four parameters as described below.

methods may be an associative array with any or all of the following parameters.
Index | Meaning | Supported Values*
kex | List of key exchange methods to advertise, comma separated in order of preference. | diffie-hellman-group1-sha1, diffie-hellman-group14-sha1, and diffie-hellman-group-exchange-sha1
hostkey | List of hostkey methods to advertise, comma separated in order of preference. | ssh-rsa and ssh-dss
client_to_server | Associative array containing crypt, compression, and message authentication code (MAC) method preferences for messages sent from client to server.
server_to_client | Associative array containing crypt, compression, and message authentication code (MAC) method preferences for messages sent from server to client.

* - Supported Values are dependent on methods supported by underlying library. See » libssh2 documentation for additional information.

client_to_server and server_to_client may be an associative array with any or all of the following parameters.
Index | Meaning | Supported Values*
crypt | List of crypto methods to advertise, comma separated in order of preference. | rijndael-cbc@lysator.liu.se, aes256-cbc, aes192-cbc, aes128-cbc, 3des-cbc, blowfish-cbc, cast128-cbc, arcfour, and none**
comp | List of compression methods to advertise, comma separated in order of preference. | zlib and none
mac | List of MAC methods to advertise, comma separated in order of preference. | hmac-sha1, hmac-sha1-96, hmac-ripemd160, hmac-ripemd160@openssh.com, and none**

Note: Crypt and MAC method "none"

For security reasons, none is disabled by the underlying » libssh2 library unless explicitly enabled during build time by using the appropriate ./configure options. See documentation for the underlying library for more information.

callbacks

callbacks may be an associative array with any or all of the following parameters.

Callbacks parameters
Index | Meaning | Prototype
ignore | Name of function to call when an SSH2_MSG_IGNORE packet is received | void ignore_cb($message)
debug | Name of function to call when an SSH2_MSG_DEBUG packet is received | void debug_cb($message, $language, $always_display)
macerror | Name of function to call when a packet is received but the message authentication code failed. If the callback returns TRUE, the mismatch will be ignored, otherwise the connection will be terminated. | bool macerror_cb($packet)
disconnect | Name of function to call when an SSH2_MSG_DISCONNECT packet is received | void disconnect_cb($reason, $message, $language)

返回值

Returns a resource on success, or FALSE on error.

范例

Example #1 ssh2_connect() example

Open a connection forcing 3des-cbc when sending packets, any strength aes cipher when receiving packets, no compression in either direction, and Group1 key exchange.

<?php
/* Notify the user if the server terminates the connection */
function my_ssh_disconnect($reason, $message, $language) {
  printf("Server disconnected with reason code [%d] and message: %s\n",
         $reason, $message);
}

$methods = array(
  'kex' => 'diffie-hellman-group1-sha1',
  'client_to_server' => array(
    'crypt' => '3des-cbc',
    'comp' => 'none'),
  'server_to_client' => array(
    'crypt' => 'aes256-cbc,aes192-cbc,aes128-cbc',
    'comp' => 'none'));

$callbacks = array('disconnect' => 'my_ssh_disconnect');

$connection = ssh2_connect('shell.example.com', 22, $methods, $callbacks);
if (!$connection) die('Connection failed');
?>

参见

  • ssh2_fingerprint() - Retrieve fingerprint of remote server
  • ssh2_auth_none() - Authenticate as "none"
  • ssh2_auth_password() - Authenticate over SSH using a plain password
  • ssh2_auth_pubkey_file() - Authenticate using a public key

ssh2_auth_pubkey_file
ssh2_exec
SSH2 函数


Execute a command on a remote server

ssh2_connect
ssh2_fetch_stream
SSH2 函数
PHP Manual

ssh2_exec

(PECL ssh2 >= 0.9.0)

ssh2_exec — Execute a command on a remote server

说明

resource ssh2_exec ( resource $session , string $command [, string $pty [, array $env [, int $width = 80 [, int $height = 25 [, int $width_height_type = SSH2_TERM_UNIT_CHARS ]]]]] )

Execute a command at the remote end and allocate a channel for it.

参数

session

An SSH connection link identifier, obtained from a call to ssh2_connect().

command

pty

env

env may be passed as an associative array of name/value pairs to set in the target environment.

width

Width of the virtual terminal.

height

Height of the virtual terminal.

width_height_type

width_height_type should be one of SSH2_TERM_UNIT_CHARS or SSH2_TERM_UNIT_PIXELS.

返回值

Returns a stream on success 或者在失败时返回 FALSE.

范例

Example #1 Executing a command

<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');

$stream = ssh2_exec($connection, '/usr/local/bin/php -i');
?>

参见

  • ssh2_connect() - Connect to an SSH server
  • ssh2_shell() - Request an interactive shell
  • ssh2_tunnel() - Open a tunnel through a remote server

ssh2_connect
ssh2_fetch_stream
SSH2 函数


Fetch an extended data stream

ssh2_exec
ssh2_fingerprint
SSH2 函数
PHP Manual

ssh2_fetch_stream

(PECL ssh2 >= 0.9.0)

ssh2_fetch_stream — Fetch an extended data stream

说明

resource ssh2_fetch_stream ( resource $channel , int $streamid )

Fetches an alternate substream associated with an SSH2 channel stream. The SSH2 protocol currently defines only one substream, STDERR, which has a substream ID of SSH2_STREAM_STDERR (defined as 1).

参数

channel

streamid

An SSH2 channel stream.

返回值

Returns the requested stream resource.

范例

Example #1 Opening a shell and retrieving the stderr stream associated with it

<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');

$stdio_stream = ssh2_shell($connection);
$stderr_stream = ssh2_fetch_stream($stdio_stream, SSH2_STREAM_STDERR);
?>

参见

  • ssh2_shell() - Request an interactive shell
  • ssh2_exec() - Execute a command on a remote server
  • ssh2_connect() - Connect to an SSH server

ssh2_exec
ssh2_fingerprint
SSH2 函数


Retrieve fingerprint of remote server

ssh2_fetch_stream
ssh2_methods_negotiated
SSH2 函数
PHP Manual

ssh2_fingerprint

(PECL ssh2 >= 0.9.0)

ssh2_fingerprint — Retrieve fingerprint of remote server

说明

string ssh2_fingerprint ( resource $session [, int $flags = SSH2_FINGERPRINT_MD5 | SSH2_FINGERPRINT_HEX ] )

Returns a server hostkey hash from an active session.

参数

session

An SSH connection link identifier, obtained from a call to ssh2_connect().

flags

flags may be either of SSH2_FINGERPRINT_MD5 or SSH2_FINGERPRINT_SHA1 logically ORed with SSH2_FINGERPRINT_HEX or SSH2_FINGERPRINT_RAW.

返回值

Returns the hostkey hash as a string.

范例

Example #1 Checking the fingerprint against a known value

<?php
$known_host = '6F89C2F0A719B30CC38ABDF90755F2E4';

$connection = ssh2_connect('shell.example.com', 22);

$fingerprint = ssh2_fingerprint($connection,
               SSH2_FINGERPRINT_MD5 | SSH2_FINGERPRINT_HEX);

if ($fingerprint != $known_host) {
  die("HOSTKEY MISMATCH!\n" .
      "Possible Man-In-The-Middle Attack?");
}
?>

ssh2_fetch_stream
ssh2_methods_negotiated
SSH2 函数


Return list of negotiated methods

ssh2_fingerprint
ssh2_publickey_add
SSH2 函数
PHP Manual

ssh2_methods_negotiated

(PECL ssh2 >= 0.9.0)

ssh2_methods_negotiated — Return list of negotiated methods

说明

array ssh2_methods_negotiated ( resource $session )

Returns list of negotiated methods.

参数

session

An SSH connection link identifier, obtained from a call to ssh2_connect().

返回值

范例

Example #1 Determining what methods were negotiated

<?php
$connection = ssh2_connect('shell.example.com', 22);
$methods = ssh2_methods_negotiated($connection);

echo "Encryption keys were negotiated using: {$methods['kex']}\n";
echo "Server identified using an {$methods['hostkey']} with ";
echo "fingerprint: " . ssh2_fingerprint($connection) . "\n";

echo "Client to Server packets will use methods:\n";
echo "\tCrypt: {$methods['client_to_server']['crypt']}\n";
echo "\tComp: {$methods['client_to_server']['comp']}\n";
echo "\tMAC: {$methods['client_to_server']['mac']}\n";

echo "Server to Client packets will use methods:\n";
echo "\tCrypt: {$methods['server_to_client']['crypt']}\n";
echo "\tComp: {$methods['server_to_client']['comp']}\n";
echo "\tMAC: {$methods['server_to_client']['mac']}\n";

?>

参见

  • ssh2_connect() - Connect to an SSH server

ssh2_fingerprint
ssh2_publickey_add
SSH2 函数


Add an authorized publickey

ssh2_methods_negotiated
ssh2_publickey_init
SSH2 函数
PHP Manual

ssh2_publickey_add

(PECL ssh2 >= 0.10)

ssh2_publickey_add — Add an authorized publickey

说明

bool ssh2_publickey_add ( resource $pkey , string $algoname , string $blob [, bool $overwrite = false [, array $attributes ]] )

Note: 公钥子系统用于管理服务器到已被认证的客户端的公钥。要用公钥认证方法来认证远程系统，应使用 ssh2_auth_pubkey_file() 函数。

参数

pkey

Publickey Subsystem resource created by ssh2_publickey_init().

algoname

Publickey algorithm (e.g.): ssh-dss, ssh-rsa

blob

Publickey blob as raw binary data

overwrite

If the specified key already exists, should it be overwritten?

attributes

Associative array of attributes to assign to this public key. Refer to ietf-secsh-publickey-subsystem for a list of supported attributes. To mark an attribute as mandatory, precede its name with an asterisk. If the server is unable to support an attribute marked mandatory, it will abort the add process.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Adding a publickey with ssh2_publickey_add()

<?php
$ssh2 = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($ssh2, 'jdoe', 'password');
$pkey = ssh2_publickey_init($ssh2);

$keyblob = base64_decode('
AAAAB3NzaC1yc2EAAAABIwAAAIEA5HVt6VqSGd5PTrLRdjNONxXH1tVFGn0
Bd26BF0aCP9qyJRlvdJ3j4WBeX4ZmrveGrjMgkseSYc4xZ26sDHwfL351xj
zaLpipu\BGRrw17mWVBhuCExo476ri5tQFzbTc54VEHYckxQ16CjSTibI5X
69GmnYC9PNqEYq/1TP+HF10=');

ssh2_publickey_add($pkey, 'ssh-rsa', $keyblob, false, array('comment'=>"John's Key"));
?>

参见

  • ssh2_publickey_init() - Initialize Publickey subsystem
  • ssh2_publickey_remove() - Remove an authorized publickey
  • ssh2_publickey_list() - List currently authorized publickeys

ssh2_methods_negotiated
ssh2_publickey_init
SSH2 函数


Initialize Publickey subsystem

ssh2_publickey_add
ssh2_publickey_list
SSH2 函数
PHP Manual

ssh2_publickey_init

(PECL ssh2 >= 0.10)

ssh2_publickey_init — Initialize Publickey subsystem

说明

resource ssh2_publickey_init ( resource $session )

Request the Publickey subsystem from an already connected SSH2 server.

The publickey subsystem allows an already connected and authenticated client to manage the list of authorized public keys stored on the target server in an implementation agnostic manner. If the remote server does not support the publickey subsystem, the ssh2_publickey_init() function will return FALSE.

参数

session

返回值

Returns an SSH2 Publickey Subsystem resource for use with all other ssh2_publickey_*() methods 或者在失败时返回 FALSE.

注释

Note: 公钥子系统用于管理服务器到已被认证的客户端的公钥。要用公钥认证方法来认证远程系统，应使用 ssh2_auth_pubkey_file() 函数。

参见

  • ssh2_publickey_add() - Add an authorized publickey
  • ssh2_publickey_remove() - Remove an authorized publickey
  • ssh2_publickey_list() - List currently authorized publickeys

ssh2_publickey_add
ssh2_publickey_list
SSH2 函数


List currently authorized publickeys

ssh2_publickey_init
ssh2_publickey_remove
SSH2 函数
PHP Manual

ssh2_publickey_list

(PECL ssh2 >= 0.10)

ssh2_publickey_list — List currently authorized publickeys

说明

array ssh2_publickey_list ( resource $pkey )

List currently authorized publickeys.

参数

pkey

Publickey Subsystem resource

返回值

Returns a numerically indexed array of keys, each of which is an associative array containing: name, blob, and attrs elements.

Publickey elements
Array Key | Meaning
name | Name of algorithm used by this publickey, for example: ssh-dss or ssh-rsa.
blob | Publickey blob as raw binary data.
attrs | Attributes assigned to this publickey. The most common attribute, and the only one supported by publickey version 1 servers, is comment, which may be any freeform string.

范例

Example #1 Listing authorized keys with ssh2_publickey_list()

<?php
$ssh2 = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($ssh2, 'jdoe', 'secret');
$pkey = ssh2_publickey_init($ssh2);

$list = ssh2_publickey_list($pkey);

foreach($list as $key) {
  echo "Key: {$key['name']}\n";
  echo "Blob: " . chunk_split(base64_encode($key['blob']), 40, "\n") . "\n";
  echo "Comment: {$key['attrs']['comment']}\n\n";
}
?>

以上例程会输出：

Key: ssh-rsa
Blob: AAAAB3NzaC1yc2EAAAABIwAAAIEA5HVt6VqSGd5P
TrLRdjNONxXH1tVFGn0Bd26BF0aCP9qyJRlvdJ3j
4WBeX4ZmrveGrjMgkseSYc4xZ26sDHwfL351xjza
Lpipu\BGRrw17mWVBhuCExo476ri5tQFzbTc54VE
HYckxQ16CjSTibI5X69GmnYC9PNqEYq/1TP+HF10
Comment: John's Key

Key: ssh-rsa
Blob: AAAAB3NzaHVt6VqSGd5C1yc2EAAAABIwA232dnJA
AIEA5HVt6VqSGd5PTrLRdjNONxX/1TP+HF1HVt6V
qSGd50H1tVFGn0BB3NzaC1yc2EAd26BF0aCP9qyJ
RlvdJ3j4WBeX4ZmrveGrjMgkseSYc4xZ26HVt6Vq
SGd5sDHwfL351xjzaLpipu\BGB3NzaC1yc2EA/1T
Comment: Alice's Key

注释

Note: 公钥子系统用于管理服务器到已被认证的客户端的公钥。要用公钥认证方法来认证远程系统，应使用 ssh2_auth_pubkey_file() 函数。

参见

  • ssh2_publickey_init() - Initialize Publickey subsystem
  • ssh2_publickey_add() - Add an authorized publickey
  • ssh2_publickey_remove() - Remove an authorized publickey

ssh2_publickey_init
ssh2_publickey_remove
SSH2 函数


Remove an authorized publickey

ssh2_publickey_list
ssh2_scp_recv
SSH2 函数
PHP Manual

ssh2_publickey_remove

(PECL ssh2 >= 0.10)

ssh2_publickey_remove — Remove an authorized publickey

说明

bool ssh2_publickey_remove ( resource $pkey , string $algoname , string $blob )

Removes an authorized publickey.

参数

pkey

Publickey Subsystem Resource

algoname

Publickey algorithm (e.g.): ssh-dss, ssh-rsa

blob

Publickey blob as raw binary data

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note: 公钥子系统用于管理服务器到已被认证的客户端的公钥。要用公钥认证方法来认证远程系统，应使用 ssh2_auth_pubkey_file() 函数。

参见

  • ssh2_publickey_init() - Initialize Publickey subsystem
  • ssh2_publickey_add() - Add an authorized publickey
  • ssh2_publickey_list() - List currently authorized publickeys

ssh2_publickey_list
ssh2_scp_recv
SSH2 函数


Request a file via SCP

ssh2_publickey_remove
ssh2_scp_send
SSH2 函数
PHP Manual

ssh2_scp_recv

(PECL ssh2 >= 0.9.0)

ssh2_scp_recv — Request a file via SCP

说明

bool ssh2_scp_recv ( resource $session , string $remote_file , string $local_file )

Copy a file from the remote server to the local filesystem using the SCP protocol.

参数

session

An SSH connection link identifier, obtained from a call to ssh2_connect().

remote_file

Path to the remote file.

local_file

Path to the local file.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Downloading a file via SCP

<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');

ssh2_scp_recv($connection, '/remote/filename', '/local/filename');
?>

参见

  • ssh2_scp_send() - Send a file via SCP
  • copy() - 拷贝文件

ssh2_publickey_remove
ssh2_scp_send
SSH2 函数


Send a file via SCP

ssh2_scp_recv
ssh2_sftp_chmod
SSH2 函数
PHP Manual

ssh2_scp_send

(PECL ssh2 >= 0.9.0)

ssh2_scp_send — Send a file via SCP

说明

bool ssh2_scp_send ( resource $session , string $local_file , string $remote_file [, int $create_mode = 0644 ] )

Copy a file from the local filesystem to the remote server using the SCP protocol.

参数

session

An SSH connection link identifier, obtained from a call to ssh2_connect().

local_file

Path to the local file.

remote_file

Path to the remote file.

create_mode

The file will be created with the mode specified by create_mode.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Uploading a file via SCP

<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');

ssh2_scp_send($connection, '/local/filename', '/remote/filename', 0644);
?>

参见

  • ssh2_scp_recv() - Request a file via SCP
  • copy() - 拷贝文件

ssh2_scp_recv
ssh2_sftp_chmod
SSH2 函数


Changes file mode

ssh2_scp_send
ssh2_sftp_lstat
SSH2 函数
PHP Manual

ssh2_sftp_chmod

(PECL ssh2 >= 0.12)

ssh2_sftp_chmod — Changes file mode

说明

bool ssh2_sftp_chmod ( resource $sftp , string $filename , int $mode )

Attempts to change the mode of the specified file to that given in mode.

参数

sftp

An SSH2 SFTP resource opened by ssh2_sftp().

filename

Path to the file.

mode

Permissions on the file. See the chmod() for more details on this parameter.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Changing the mode of a file on a remote server

<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$sftp = ssh2_sftp($connection);

ssh2_sftp_chmod($sftp, '/somedir/somefile', 0755);
?>

参见

  • chmod() - 改变文件模式
  • ssh2_sftp() - Initialize SFTP subsystem
  • ssh2_connect() - Connect to an SSH server

ssh2_scp_send
ssh2_sftp_lstat
SSH2 函数


Stat a symbolic link

ssh2_sftp_chmod
ssh2_sftp_mkdir
SSH2 函数
PHP Manual

ssh2_sftp_lstat

(PECL ssh2 >= 0.9.0)

ssh2_sftp_lstat — Stat a symbolic link

说明

array ssh2_sftp_lstat ( resource $sftp , string $path )

Stats a symbolic link on the remote filesystem without following the link.

This function is similar to using the lstat() function with the ssh2.sftp:// wrapper in PHP 5 and returns the same values.

参数

sftp

An SSH2 SFTP resource opened by ssh2_sftp().

path

Path to the remote symbolic link.

返回值

See the documentation for stat() for details on the values which may be returned.

范例

Example #1 Stating a symbolic link via SFTP

<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');

$sftp = ssh2_sftp($connection);
$statinfo = ssh2_sftp_lstat($sftp, '/path/to/symlink');

$filesize = $statinfo['size'];
$group = $statinfo['gid'];
$owner = $statinfo['uid'];
$atime = $statinfo['atime'];
$mtime = $statinfo['mtime'];
$mode = $statinfo['mode'];
?>

参见

  • ssh2_sftp_stat() - Stat a file on a remote filesystem
  • lstat() - 给出一个文件或符号连接的信息
  • stat() - 给出文件的信息

ssh2_sftp_chmod
ssh2_sftp_mkdir
SSH2 函数


Create a directory

ssh2_sftp_lstat
ssh2_sftp_readlink
SSH2 函数
PHP Manual

ssh2_sftp_mkdir

(PECL ssh2 >= 0.9.0)

ssh2_sftp_mkdir — Create a directory

说明

bool ssh2_sftp_mkdir ( resource $sftp , string $dirname [, int $mode = 0777 [, bool $recursive = false ]] )

Creates a directory on the remote file server with permissions set to mode.

This function is similar to using mkdir() with the ssh2.sftp:// wrapper.

参数

sftp

An SSH2 SFTP resource opened by ssh2_sftp().

dirname

Path of the new directory.

mode

Permissions on the new directory.

recursive

If recursive is TRUE any parent directories required for dirname will be automatically created as well.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Creating a directory on a remote server

<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$sftp = ssh2_sftp($connection);

ssh2_sftp_mkdir($sftp, '/home/username/newdir');
/* Or:  mkdir("ssh2.sftp://$sftp/home/username/newdir"); */
?>

参见

  • mkdir() - 新建目录
  • ssh2_sftp_rmdir() - Remove a directory

ssh2_sftp_lstat
ssh2_sftp_readlink
SSH2 函数


Return the target of a symbolic link

ssh2_sftp_mkdir
ssh2_sftp_realpath
SSH2 函数
PHP Manual

ssh2_sftp_readlink

(PECL ssh2 >= 0.9.0)

ssh2_sftp_readlink — Return the target of a symbolic link

说明

string ssh2_sftp_readlink ( resource $sftp , string $link )

Returns the target of a symbolic link.

参数

sftp

An SSH2 SFTP resource opened by ssh2_sftp().

link

Path of the symbolic link.

返回值

Returns the target of the symbolic link.

范例

Example #1 Reading a symbolic link

<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$sftp = ssh2_sftp($connection);

$target = ssh2_sftp_readlink($sftp, '/tmp/mysql.sock');
/* $target is now (e.g.): '/var/run/mysql.sock' */
?>

参见

  • readlink() - 返回符号连接指向的目标
  • ssh2_sftp_symlink() - Create a symlink

ssh2_sftp_mkdir
ssh2_sftp_realpath
SSH2 函数


Resolve the realpath of a provided path string

ssh2_sftp_readlink
ssh2_sftp_rename
SSH2 函数
PHP Manual

ssh2_sftp_realpath

(PECL ssh2 >= 0.9.0)

ssh2_sftp_realpath — Resolve the realpath of a provided path string

说明

string ssh2_sftp_realpath ( resource $sftp , string $filename )

Translates filename into the effective real path on the remote filesystem.

参数

sftp

An SSH2 SFTP resource opened by ssh2_sftp().

filename

返回值

Returns the real path as a string.

范例

Example #1 Resolving a pathname

<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$sftp = ssh2_sftp($connection);

$realpath = ssh2_sftp_realpath($sftp, '/home/username/../../../..//./usr/../etc/passwd');
/* $realpath is now: '/etc/passwd' */
?>

参见

  • realpath() - 返回规范化的绝对路径名
  • ssh2_sftp_symlink() - Create a symlink
  • ssh2_sftp_readlink() - Return the target of a symbolic link

ssh2_sftp_readlink
ssh2_sftp_rename
SSH2 函数


Rename a remote file

ssh2_sftp_realpath
ssh2_sftp_rmdir
SSH2 函数
PHP Manual

ssh2_sftp_rename

(PECL ssh2 >= 0.9.0)

ssh2_sftp_rename — Rename a remote file

说明

bool ssh2_sftp_rename ( resource $sftp , string $from , string $to )

Renames a file on the remote filesystem.

参数

sftp

An SSH2 SFTP resource opened by ssh2_sftp().

from

The current file that is being renamed.

to

The new file name that replaces from.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Renaming a file via sftp

<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$sftp = ssh2_sftp($connection);

ssh2_sftp_rename($sftp, '/home/username/oldname', '/home/username/newname');
?>

参见

  • rename() - 重命名一个文件或目录

ssh2_sftp_realpath
ssh2_sftp_rmdir
SSH2 函数


Remove a directory

ssh2_sftp_rename
ssh2_sftp_stat
SSH2 函数
PHP Manual

ssh2_sftp_rmdir

(PECL ssh2 >= 0.9.0)

ssh2_sftp_rmdir — Remove a directory

说明

bool ssh2_sftp_rmdir ( resource $sftp , string $dirname )

Removes a directory from the remote file server.

This function is similar to using rmdir() with the ssh2.sftp:// wrapper.

参数

sftp

An SSH2 SFTP resource opened by ssh2_sftp().

dirname

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Removing a directory on a remote server

<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$sftp = ssh2_sftp($connection);

ssh2_sftp_rmdir($sftp, '/home/username/deltodel');
/* Or:  rmdir("ssh2.sftp://$sftp/home/username/dirtodel"); */
?>

参见

  • rmdir() - 删除目录
  • ssh2_sftp_mkdir() - Create a directory

ssh2_sftp_rename
ssh2_sftp_stat
SSH2 函数


Stat a file on a remote filesystem

ssh2_sftp_rmdir
ssh2_sftp_symlink
SSH2 函数
PHP Manual

ssh2_sftp_stat

(PECL ssh2 >= 0.9.0)

ssh2_sftp_stat — Stat a file on a remote filesystem

说明

array ssh2_sftp_stat ( resource $sftp , string $path )

Stats a file on the remote filesystem following any symbolic links.

This function is similar to using the stat() function with the ssh2.sftp:// wrapper in PHP 5 and returns the same values.

参数

sftp

An SSH2 SFTP resource opened by ssh2_sftp().

path

返回值

See the documentation for stat() for details on the values which may be returned.

范例

Example #1 Stating a file via SFTP

<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');

$sftp = ssh2_sftp($connection);
$statinfo = ssh2_sftp_stat($sftp, '/path/to/file');

$filesize = $statinfo['size'];
$group = $statinfo['gid'];
$owner = $statinfo['uid'];
$atime = $statinfo['atime'];
$mtime = $statinfo['mtime'];
$mode = $statinfo['mode'];
?>

参见

  • ssh2_sftp_lstat() - Stat a symbolic link
  • lstat() - 给出一个文件或符号连接的信息
  • stat() - 给出文件的信息

ssh2_sftp_rmdir
ssh2_sftp_symlink
SSH2 函数


Create a symlink

ssh2_sftp_stat
ssh2_sftp_unlink
SSH2 函数
PHP Manual

ssh2_sftp_symlink

(PECL ssh2 >= 0.9.0)

ssh2_sftp_symlink — Create a symlink

说明

bool ssh2_sftp_symlink ( resource $sftp , string $target , string $link )

Creates a symbolic link named link on the remote filesystem pointing to target.

参数

sftp

An SSH2 SFTP resource opened by ssh2_sftp().

target

Target of the symbolic link.

link

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Creating a symbolic link

<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$sftp = ssh2_sftp($connection);

ssh2_sftp_symlink($sftp, '/var/run/mysql.sock', '/tmp/mysql.sock');
?>

参见

  • ssh2_sftp_readlink() - Return the target of a symbolic link
  • symlink() - 建立符号连接

ssh2_sftp_stat
ssh2_sftp_unlink
SSH2 函数


Delete a file

ssh2_sftp_symlink
ssh2_sftp
SSH2 函数
PHP Manual

ssh2_sftp_unlink

(PECL ssh2 >= 0.9.0)

ssh2_sftp_unlink — Delete a file

说明

bool ssh2_sftp_unlink ( resource $sftp , string $filename )

Deletes a file on the remote filesystem.

参数

sftp

An SSH2 SFTP resource opened by ssh2_sftp().

filename

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Deleting a file

<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$sftp = ssh2_sftp($connection);

ssh2_sftp_unlink($sftp, '/home/username/stale_file');
?>

参见

  • unlink() - 删除文件

ssh2_sftp_symlink
ssh2_sftp
SSH2 函数


Initialize SFTP subsystem

ssh2_sftp_unlink
ssh2_shell
SSH2 函数
PHP Manual

ssh2_sftp

(PECL ssh2 >= 0.9.0)

ssh2_sftp — Initialize SFTP subsystem

说明

resource ssh2_sftp ( resource $session )

Request the SFTP subsystem from an already connected SSH2 server.

参数

session

An SSH connection link identifier, obtained from a call to ssh2_connect().

返回值

This method returns an SSH2 SFTP resource for use with all other ssh2_sftp_*() methods and the ssh2.sftp:// fopen wrapper.

范例

Example #1 Opening a file via SFTP

<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');

$sftp = ssh2_sftp($connection);

$stream = fopen("ssh2.sftp://$sftp/path/to/file", 'r');
?>

参见

  • ssh2_scp_recv() - Request a file via SCP
  • ssh2_scp_send() - Send a file via SCP

ssh2_sftp_unlink
ssh2_shell
SSH2 函数


Request an interactive shell

ssh2_sftp
ssh2_tunnel
SSH2 函数
PHP Manual

ssh2_shell

(PECL ssh2 >= 0.9.0)

ssh2_shell — Request an interactive shell

说明

resource ssh2_shell ( resource $session [, string $term_type = "vanilla" [, array $env [, int $width = 80 [, int $height = 25 [, int $width_height_type = SSH2_TERM_UNIT_CHARS ]]]]] )

Open a shell at the remote end and allocate a stream for it.

参数

session

An SSH connection link identifier, obtained from a call to ssh2_connect().

term_type

term_type should correspond to one of the entries in the target system's /etc/termcap file.

env

env may be passed as an associative array of name/value pairs to set in the target environment.

width

Width of the virtual terminal.

height

Height of the virtual terminal.

width_height_type

width_height_type should be one of SSH2_TERM_UNIT_CHARS or SSH2_TERM_UNIT_PIXELS.

返回值

范例

Example #1 Requesting an interactive shell

<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');

$stream = ssh2_shell($connection, 'vt102', null, 80, 24, SSH2_TERM_UNIT_CHARS);
?>

参见

  • ssh2_exec() - Execute a command on a remote server
  • ssh2_tunnel() - Open a tunnel through a remote server
  • ssh2_fetch_stream() - Fetch an extended data stream

ssh2_sftp
ssh2_tunnel
SSH2 函数


Open a tunnel through a remote server

ssh2_shell
Stomp
SSH2 函数
PHP Manual

ssh2_tunnel

(PECL ssh2 >= 0.9.0)

ssh2_tunnel — Open a tunnel through a remote server

说明

resource ssh2_tunnel ( resource $session , string $host , int $port )

Open a socket stream to an arbitrary host/port by way of the currently connected SSH server.

参数

session

An SSH connection link identifier, obtained from a call to ssh2_connect().

host

port

返回值

范例

Example #1 Opening a tunnel to an arbitrary host

<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_pubkey_file($connection, 'username', 'id_dsa.pub', 'id_dsa');

$tunnel = ssh2_tunnel($connection, '10.0.0.101', 12345);
?>

参见

  • ssh2_connect() - Connect to an SSH server
  • fsockopen() - 打开一个网络连接或者一个Unix套接字连接

ssh2_shell
Stomp
SSH2 函数


Stomp Client

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 范例
  • Stomp 函数
    • stomp_connect_error — Returns a string description of the last connect error
    • stomp_version — Gets the current stomp extension version
  • Stomp — The Stomp class
    • Stomp::abort — Rolls back a transaction in progress
    • Stomp::ack — Acknowledges consumption of a message
    • Stomp::begin — Starts a transaction
    • Stomp::commit — Commits a transaction in progress
    • Stomp::__construct — 打开一个连接
    • Stomp::__destruct — Closes stomp connection
    • Stomp::error — Gets the last stomp error
    • Stomp::getReadTimeout — Gets read timeout
    • Stomp::getSessionId — Gets the current stomp session ID
    • Stomp::hasFrame — Indicates whether or not there is a frame ready to read
    • Stomp::readFrame — Reads the next frame
    • Stomp::send — Sends a message
    • Stomp::setReadTimeout — Sets read timeout
    • Stomp::subscribe — Registers to listen to a given destination
    • Stomp::unsubscribe — Removes an existing subscription
  • StompFrame — The StompFrame class
    • StompFrame::__construct — Constructor
  • StompException — The StompException class
    • StompException::getDetails — Get exception details
ssh2_tunnel
简介
其它服务


简介

This extension allows php applications to communicate with any Stomp compliant Message Brokers through easy object oriented and procedural interfaces. » Stomp official site

Stomp
安装／配置
Stomp


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Stomp


需求

PECL/stomp requires PHP 5.2.2 or newer.

The » OpenSSL package >= 0.9.6 and the openssl extension may also be required to use stomp over SSL.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/stomp

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Stomp 配置选项
名字 | 默认 | 可修改范围 | 更新日志
stomp.default_broker | tcp://localhost:61613 | PHP_INI_ALL |
stomp.default_connection_timeout_sec | 2 | PHP_INI_ALL |
stomp.default_connection_timeout_usec | 0 | PHP_INI_ALL |
stomp.default_read_timeout_sec | 2 | PHP_INI_ALL |
stomp.default_read_timeout_usec | 0 | PHP_INI_ALL |

这是配置指令的简短说明。

stomp.default_broker string

The default broker URI to use when connecting to the message broker if no other URI is specified.

stomp.default_connection_timeout_sec integer

The seconds part of the default connection timeout.

stomp.default_connection_timeout_usec integer

The microseconds part of the default connection timeout.

stomp.default_read_timeout_sec integer

The seconds part of the default reading timeout.

stomp.default_read_timeout_usec integer

The microseconds part of the default reading timeout.

安装
资源类型
安装／配置


资源类型

There is only one resource type used in the stomp extension - it's the link identifier for a stomp connection.

运行时配置
范例
安装／配置


范例

Example #1 面向对象风格

<?php

$queue  = '/queue/foo';
$msg    = 'bar';

/* connection */
try {
    $stomp = new Stomp('tcp://localhost:61613');
} catch(StompException $e) {
    die('Connection failed: ' . $e->getMessage());
}

/* send a message to the queue 'foo' */
$stomp->send($queue, $msg);

/* subscribe to messages from the queue 'foo' */
$stomp->subscribe($queue);

/* read a frame */
$frame = $stomp->readFrame();

if ($frame->body === $msg) {
    var_dump($frame);

    /* acknowledge that the frame was received */
    $stomp->ack($frame);
}

/* close connection */
unset($stomp);

?>

以上例程的输出类似于：

object(StompFrame)#2 (3) {
  ["command"]=>
  string(7) "MESSAGE"
  ["headers"]=>
  array(5) {
    ["message-id"]=>
    string(41) "ID:php.net-55293-1257226743606-4:2:-1:1:1"
    ["destination"]=>
    string(10) "/queue/foo"
    ["timestamp"]=>
    string(13) "1257226805828"
    ["expires"]=>
    string(1) "0"
    ["priority"]=>
    string(1) "0"
  }
  ["body"]=>
  string(3) "bar"
}

Example #2 过程化风格

<?php

$queue  = '/queue/foo';
$msg    = 'bar';

/* connection */
$link = stomp_connect('ssl://localhost:61612');

/* check connection */
if (!$link) {
    die('Connection failed: ' . stomp_connect_error());
}

/* begin a transaction */
stomp_begin($link, 't1');

/* send a message to the queue 'foo' */
stomp_send($link, $queue, $msg, array('transaction' => 't1'));

/* commit a transaction */
stomp_commit($link, 't1');

/* subscribe to messages from the queue 'foo' */
stomp_subscribe($link, $queue);

/* read a frame */
$frame = stomp_read_frame($link);

if ($frame['body'] === $msg) {
    var_dump($frame);

    /* acknowledge that the frame was received */
    stomp_ack($link, $frame['headers']['message-id']);
}

/* close connection */
stomp_close($link);

?>

以上例程的输出类似于：

array(3) {
  ["command"]=>
  string(7) "MESSAGE"
  ["body"]=>
  string(3) "bar"
  ["headers"]=>
  array(6) {
    ["transaction"]=>
    string(2) "t1"
    ["message-id"]=>
    string(41) "ID:php.net-55293-1257226743606-4:3:-1:1:1"
    ["destination"]=>
    string(10) "/queue/foo"
    ["timestamp"]=>
    string(13) "1257227037059"
    ["expires"]=>
    string(1) "0"
    ["priority"]=>
    string(1) "0"
  }
}

资源类型
Stomp 函数
Stomp


Stomp 函数

Table of Contents

  • stomp_connect_error — Returns a string description of the last connect error
  • stomp_version — Gets the current stomp extension version
范例
stomp_connect_error
Stomp


Returns a string description of the last connect error

Stomp 函数
stomp_version
Stomp 函数
PHP Manual

stomp_connect_error

(PECL stomp >= 0.3.0)

stomp_connect_error — Returns a string description of the last connect error

说明

string stomp_connect_error ( void )

Returns a string description of the last connect error.

参数

此函数没有参数。

返回值

A string that describes the error, or NULL if no error occurred.

范例

Example #1 stomp_connect_error() example

<?php
$link = stomp_connect('http://localhost:61613');

if(!$link) {
    die('Connection failed: ' . stomp_connect_error());
}
?>

以上例程的输出类似于：

Connection failed: Invalid Broker URI scheme

Stomp 函数
stomp_version
Stomp 函数


Gets the current stomp extension version

stomp_connect_error
Stomp
Stomp 函数
PHP Manual

stomp_version

(PECL stomp >= 0.1.0)

stomp_version — Gets the current stomp extension version

说明

string stomp_version ( void )

Returns a string containing the version of the current stomp extension.

参数

此函数没有参数。

返回值

It returns the current stomp extension version

范例

Example #1 stomp_version() example

<?php

var_dump(stomp_version());

?>

以上例程的输出类似于：

string(5) "0.2.0"

stomp_connect_error
Stomp
Stomp 函数


The Stomp class

(PECL stomp >= 0.1.0)

简介

Represents a connection between PHP and a Stomp compliant Message Broker.

类摘要

Stomp {
/* 方法 */
public bool abort ( string $transaction_id [, array $headers ] )
public bool ack ( mixed $msg [, array $headers ] )
public bool begin ( string $transaction_id [, array $headers ] )
public bool commit ( string $transaction_id [, array $headers ] )
public __construct ([ string $broker = ini_get("stomp.default_broker_uri") [, string $username [, string $password [, array $headers ]]]] )
public bool __destruct ( void )
public string error ( void )
public array getReadTimeout ( void )
public string getSessionId ( void )
public bool hasFrame ( void )
public stompframe readFrame ([ string $class_name = "stompFrame" ] )
public bool send ( string $destination , mixed $msg [, array $headers ] )
public void setReadTimeout ( int $seconds [, int $microseconds ] )
public bool subscribe ( string $destination [, array $headers ] )
public bool unsubscribe ( string $destination [, array $headers ] )
}

Table of Contents

  • Stomp::abort — Rolls back a transaction in progress
  • Stomp::ack — Acknowledges consumption of a message
  • Stomp::begin — Starts a transaction
  • Stomp::commit — Commits a transaction in progress
  • Stomp::__construct — 打开一个连接
  • Stomp::__destruct — Closes stomp connection
  • Stomp::error — Gets the last stomp error
  • Stomp::getReadTimeout — Gets read timeout
  • Stomp::getSessionId — Gets the current stomp session ID
  • Stomp::hasFrame — Indicates whether or not there is a frame ready to read
  • Stomp::readFrame — Reads the next frame
  • Stomp::send — Sends a message
  • Stomp::setReadTimeout — Sets read timeout
  • Stomp::subscribe — Registers to listen to a given destination
  • Stomp::unsubscribe — Removes an existing subscription
stomp_version
Stomp::abort
Stomp


Rolls back a transaction in progress

Stomp
Stomp::ack
Stomp
PHP Manual

Stomp::abort

stomp_abort

(PECL stomp >= 0.1.0)

Stomp::abort -- stomp_abort — Rolls back a transaction in progress

说明

面向对象风格 (method):

public bool Stomp::abort ( string $transaction_id [, array $headers ] )

过程化风格:

bool stomp_abort ( resource $link , string $transaction_id [, array $headers ] )

Rolls back a transaction in progress.

参数

link

仅对过程化样式：由 stomp_connect() 返回的 stomp 连接标识符。

transaction_id

The transaction to abort.

headers

关联数组包含附加的头信息（例如： receipt）。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Tip

Stomp is inherently asynchronous. Synchronous communication can be implemented adding a receipt header. This will cause methods to not return anything until the server has acknowledged receipt of the message or until read timeout was reached.

范例

Example #1 面向对象风格

<?php

/* connection */
try {
    $stomp = new Stomp('tcp://localhost:61613');
} catch(StompException $e) {
    die('Connection failed: ' . $e->getMessage());
}

/* begin a transaction */
$stomp->begin('t1');

/* send a message to the queue */
$stomp->send('/queue/foo', 'bar', array('transaction' => 't1'));

/* rollback */
$stomp->abort('t1');

/* close connection */
unset($stomp);
?>

Example #2 过程化风格

<?php

/* connection */
$link = stomp_connect('tcp://localhost:61613');

/* check connection */
if (!$link) {
    die('Connection failed: ' . stomp_connect_error());
}

/* begin a transaction */
stomp_begin($link, 't1');

/* send a message to the queue 'foo' */
stomp_send($link, '/queue/foo', 'bar', array('transaction' => 't1'));

/* rollback */
stomp_abort($link, 't1');

/* close connection */
stomp_close($link);

?>

Stomp
Stomp::ack
Stomp


Acknowledges consumption of a message

Stomp::abort
Stomp::begin
Stomp
PHP Manual

Stomp::ack

stomp_ack

(PECL stomp >= 0.1.0)

Stomp::ack -- stomp_ack — Acknowledges consumption of a message

说明

面向对象风格 (method):

public bool Stomp::ack ( mixed $msg [, array $headers ] )

过程化风格:

bool stomp_ack ( resource $link , mixed $msg [, array $headers ] )

Acknowledges consumption of a message from a subscription using client acknowledgment.

参数

link

仅对过程化样式：由 stomp_connect() 返回的 stomp 连接标识符。

msg

The message/messageId to be acknowledged.

headers

关联数组包含附加的头信息（例如： receipt）。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note:

A transaction header may be specified, indicating that the message acknowledgment should be part of the named transaction.

Tip

Stomp is inherently asynchronous. Synchronous communication can be implemented adding a receipt header. This will cause methods to not return anything until the server has acknowledged receipt of the message or until read timeout was reached.

范例

Example #1 面向对象风格

<?php

$queue  = '/queue/foo';
$msg    = 'bar';

/* connection */
try {
    $stomp = new Stomp('tcp://localhost:61613');
} catch(StompException $e) {
    die('Connection failed: ' . $e->getMessage());
}

/* send a message to the queue 'foo' */
$stomp->send($queue, $msg);

/* subscribe to messages from the queue 'foo' */
$stomp->subscribe($queue);

/* read a frame */
$frame = $stomp->readFrame();

if ($frame->body === $msg) {
    /* acknowledge that the frame was received */
    $stomp->ack($frame);
}

/* remove the subscription */
$stomp->unsubscribe($queue);

/* close connection */
unset($stomp);

?>

Example #2 过程化风格

<?php

$queue  = '/queue/foo';
$msg    = 'bar';

/* connection */
$link = stomp_connect('ssl://localhost:61612');

/* check connection */
if (!$link) {
    die('Connection failed: ' . stomp_connect_error());
}

/* begin a transaction */
stomp_begin($link, 't1');

/* send a message to the queue 'foo' */
stomp_send($link, $queue, $msg, array('transaction' => 't1'));

/* commit a transaction */
stomp_commit($link, 't1');

/* subscribe to messages from the queue 'foo' */
stomp_subscribe($link, $queue);

/* read a frame */
$frame = stomp_read_frame($link);

if ($frame['body'] === $msg) {
    /* acknowledge that the frame was received */
    stomp_ack($link, $frame['headers']['message-id']);
}

/* remove the subscription */
stomp_unsubscribe($link, $queue);

/* close connection */
stomp_close($link);

?>

Stomp::abort
Stomp::begin
Stomp


Starts a transaction

Stomp::ack
Stomp::commit
Stomp
PHP Manual

Stomp::begin

stomp_begin

(PECL stomp >= 0.1.0)

Stomp::begin -- stomp_begin — Starts a transaction

说明

面向对象风格 (method):

public bool Stomp::begin ( string $transaction_id [, array $headers ] )

过程化风格:

bool stomp_begin ( resource $link , string $transaction_id [, array $headers ] )

Starts a transaction.

参数

link

仅对过程化样式：由 stomp_connect() 返回的 stomp 连接标识符。

transaction_id

The transaction id.

headers

关联数组包含附加的头信息（例如： receipt）。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Tip

Stomp is inherently asynchronous. Synchronous communication can be implemented adding a receipt header. This will cause methods to not return anything until the server has acknowledged receipt of the message or until read timeout was reached.

范例

See stomp_commit() or stomp_abort().

Stomp::ack
Stomp::commit
Stomp


Commits a transaction in progress

Stomp::begin
Stomp::__construct
Stomp
PHP Manual

Stomp::commit

stomp_commit

(PECL stomp >= 0.1.0)

Stomp::commit -- stomp_commit — Commits a transaction in progress

说明

面向对象风格 (method):

public bool Stomp::commit ( string $transaction_id [, array $headers ] )

过程化风格:

bool stomp_commit ( resource $link , string $transaction_id [, array $headers ] )

Commits a transaction in progress.

参数

link

仅对过程化样式：由 stomp_connect() 返回的 stomp 连接标识符。

transaction_id

The transaction id.

headers

关联数组包含附加的头信息（例如： receipt）。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Tip

Stomp is inherently asynchronous. Synchronous communication can be implemented adding a receipt header. This will cause methods to not return anything until the server has acknowledged receipt of the message or until read timeout was reached.

范例

Example #1 面向对象风格

<?php

/* connection */
try {
    $stomp = new Stomp('tcp://localhost:61613');
} catch(StompException $e) {
    die('Connection failed: ' . $e->getMessage());
}

/* begin a transaction */
$stomp->begin('t1');

/* send a message to the queue */
$stomp->send('/queue/foo', 'bar', array('transaction' => 't1'));

/* commit */
$stomp->commit('t1');

/* close connection */
unset($stomp);

?>

Example #2 过程化风格

<?php

/* connection */
$link = stomp_connect('tcp://localhost:61613');

/* check connection */
if (!$link) {
    die('Connection failed: ' . stomp_connect_error());
}

/* begin a transaction */
stomp_begin($link, 't1');

/* send a message to the queue 'foo' */
stomp_send($link, '/queue/foo', 'bar', array('transaction' => 't1'));

/* commit */
stomp_commit($link, 't1');

/* close connection */
stomp_close($link);

?>

Stomp::begin
Stomp::__construct
Stomp


打开一个连接

Stomp::commit
Stomp::__destruct
Stomp
PHP Manual

Stomp::__construct

stomp_connect

(PECL stomp >= 0.1.0)

Stomp::__construct -- stomp_connect — 打开一个连接

说明

面向对象风格 (constructor):

public Stomp::__construct ([ string $broker = ini_get("stomp.default_broker_uri") [, string $username [, string $password [, array $headers ]]]] )

过程化风格:

resource stomp_connect ([ string $broker = ini_get("stomp.default_broker_uri") [, string $username [, string $password [, array $headers ]]]] )

打开一个到兼容stomp通讯协议的消息代理服务器的连接.

参数

broker

代理服务器的统一资源标识符（URI）。

username

用户名.

password

密码.

headers

关联数组包含附加的头信息（例如： receipt）。

返回值

Note:

A transaction header may be specified, indicating that the message acknowledgment should be part of the named transaction.

更新日志

版本 | 说明
1.0.1 | 增加了headers 参数

范例

Example #1 面向对象风格

<?php

/* connection */
try {
    $stomp = new Stomp('tcp://localhost:61613');
} catch(StompException $e) {
    die('Connection failed: ' . $e->getMessage());
}

/* close connection */
unset($stomp);

?>

Example #2 过程化风格

<?php

/* connection */
$link = stomp_connect('ssl://localhost:61612');

/* check connection */
if (!$link) {
    die('Connection failed: ' . stomp_connect_error());
}

/* close connection */
stomp_close($link);

?>

Stomp::commit
Stomp::__destruct
Stomp


Closes stomp connection

Stomp::__construct
Stomp::error
Stomp
PHP Manual

Stomp::__destruct

stomp_close

(PECL stomp >= 0.1.0)

Stomp::__destruct -- stomp_close — Closes stomp connection

说明

面向对象风格 (destructor):

public bool Stomp::__destruct ( void )

过程化风格:

bool stomp_close ( resource $link )

Closes a previously opened connection.

参数

link

仅对过程化样式：由 stomp_connect() 返回的 stomp 连接标识符。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

See stomp_connect().

Stomp::__construct
Stomp::error
Stomp


Gets the last stomp error

Stomp::__destruct
Stomp::getReadTimeout
Stomp
PHP Manual

Stomp::error

stomp_error

(PECL stomp >= 0.1.0)

Stomp::error -- stomp_error — Gets the last stomp error

说明

面向对象风格 (method):

public string Stomp::error ( void )

过程化风格:

string stomp_error ( resource $link )

Gets the last stomp error.

参数

link

仅对过程化样式：由 stomp_connect() 返回的 stomp 连接标识符。

返回值

Returns an error string or FALSE if no error occurred.

范例

Example #1 面向对象风格

<?php

/* connection */
try {
    $stomp = new Stomp('tcp://localhost:61613');
} catch(StompException $e) {
    die('Connection failed: ' . $e->getMessage());
}

var_dump($stomp->error());

if (!$stomp->abort('unknown-transaction', array('receipt' => 'foo'))) {
    var_dump($stomp->error());
}

/* close connection */
unset($stomp);

?>

以上例程的输出类似于：

bool(false)
string(43) "Invalid transaction id: unknown-transaction"

Example #2 过程化风格

<?php

/* connection */
$link = stomp_connect('ssl://localhost:61612');

/* check connection */
if (!$link) {
    die('Connection failed: ' . stomp_connect_error());
}

var_dump(stomp_error($link));

if (!stomp_abort($link, 'unknown-transaction', array('receipt' => 'foo'))) {
    var_dump(stomp_error($link));
}

/* close connection */
stomp_close($link);

?>

以上例程的输出类似于：

bool(false)
string(43) "Invalid transaction id: unknown-transaction"

Stomp::__destruct
Stomp::getReadTimeout
Stomp


Gets read timeout

Stomp::error
Stomp::getSessionId
Stomp
PHP Manual

Stomp::getReadTimeout

stomp_get_read_timeout

(PECL stomp >= 0.3.0)

Stomp::getReadTimeout -- stomp_get_read_timeout — Gets read timeout

说明

面向对象风格 (method):

public array Stomp::getReadTimeout ( void )

过程化风格:

array stomp_get_read_timeout ( resource $link )

Gets read timeout

参数

link

仅对过程化样式：由 stomp_connect() 返回的 stomp 连接标识符。

返回值

Returns an array with 2 elements: sec and usec.

范例

Example #1 面向对象风格

<?php

/* connection */
try {
    $stomp = new Stomp('tcp://localhost:61613');
} catch(StompException $e) {
    die('Connection failed: ' . $e->getMessage());
}

var_dump($stomp->getReadTimeout());

/* close connection */
unset($stomp);

?>

以上例程的输出类似于：

array(2) {
  ["sec"]=>
  int(2)
  ["usec"]=>
  int(0)
}

Example #2 过程化风格

<?php

/* connection */
$link = stomp_connect('ssl://localhost:61612');

/* check connection */
if (!$link) {
    die('Connection failed: ' . stomp_connect_error());
}

var_dump(stomp_get_read_timeout($link));

/* close connection */
stomp_close($link);

?>

以上例程的输出类似于：

array(2) {
  ["sec"]=>
  int(2)
  ["usec"]=>
  int(0)
}

Stomp::error
Stomp::getSessionId
Stomp


Gets the current stomp session ID

Stomp::getReadTimeout
Stomp::hasFrame
Stomp
PHP Manual

Stomp::getSessionId

stomp_get_session_id

(PECL stomp >= 0.1.0)

Stomp::getSessionId -- stomp_get_session_id — Gets the current stomp session ID

说明

面向对象风格 (method):

public string Stomp::getSessionId ( void )

过程化风格:

string stomp_get_session_id ( resource $link )

Gets the current stomp session ID.

参数

link

仅对过程化样式：由 stomp_connect() 返回的 stomp 连接标识符。

返回值

string session id on success 或者在失败时返回 FALSE.

范例

Example #1 面向对象风格

<?php

/* connection */
try {
    $stomp = new Stomp('tcp://localhost:61613');
} catch(StompException $e) {
    die('Connection failed: ' . $e->getMessage());
}

var_dump($stomp->getSessionId());

/* close connection */
unset($stomp);

?>

以上例程的输出类似于：

string(35) "ID:php.net-52873-1257291895530-4:14"

Example #2 过程化风格

<?php

/* connection */
$link = stomp_connect('ssl://localhost:61612');

/* check connection */
if (!$link) {
    die('Connection failed: ' . stomp_connect_error());
}

var_dump(stomp_get_session_id($link));

/* close connection */
stomp_close($link);

?>

以上例程的输出类似于：

string(35) "ID:php.net-52873-1257291895530-4:14"

Stomp::getReadTimeout
Stomp::hasFrame
Stomp


Indicates whether or not there is a frame ready to read

Stomp::getSessionId
Stomp::readFrame
Stomp
PHP Manual

Stomp::hasFrame

stomp_has_frame

(PECL stomp >= 0.1.0)

Stomp::hasFrame -- stomp_has_frame — Indicates whether or not there is a frame ready to read

说明

面向对象风格 (method):

public bool Stomp::hasFrame ( void )

过程化风格:

bool stomp_has_frame ( resource $link )

Indicates whether or not there is a frame ready to read.

参数

link

仅对过程化样式：由 stomp_connect() 返回的 stomp 连接标识符。

返回值

Returns TRUE if a frame is ready to read, or FALSE otherwise.

Stomp::getSessionId
Stomp::readFrame
Stomp


Reads the next frame

Stomp::hasFrame
Stomp::send
Stomp
PHP Manual

Stomp::readFrame

stomp_read_frame

(PECL stomp >= 0.1.0)

Stomp::readFrame -- stomp_read_frame — Reads the next frame

说明

面向对象风格 (method):

public stompframe Stomp::readFrame ([ string $class_name = "stompFrame" ] )

过程化风格:

array stomp_read_frame ( resource $link )

Reads the next frame. It is possible to instantiate an object of a specific class, and pass parameters to that class's constructor.

参数

link

仅对过程化样式：由 stomp_connect() 返回的 stomp 连接标识符。

class_name

The name of the class to instantiate. If not specified, a stompFrame object is returned.

返回值

Note:

A transaction header may be specified, indicating that the message acknowledgment should be part of the named transaction.

更新日志

版本 | 说明
Stomp 0.4.0 | class_name parameter was added.

范例

Example #1 面向对象风格

<?php

/* connection */
try {
    $stomp = new Stomp('tcp://localhost:61613');
} catch(StompException $e) {
    die('Connection failed: ' . $e->getMessage());
}

/* subscribe to messages from the queue 'foo' */
$stomp->subscribe('/queue/foo');

/* read a frame */
var_dump($stomp->readFrame());

/* close connection */
unset($stomp);

?>

以上例程的输出类似于：

object(StompFrame)#2 (3) {
  ["command"]=>
  string(7) "MESSAGE"
  ["headers"]=>
  array(5) {
    ["message-id"]=>
    string(41) "ID:php.net-55293-1257226743606-4:2:-1:1:1"
    ["destination"]=>
    string(10) "/queue/foo"
    ["timestamp"]=>
    string(13) "1257226805828"
    ["expires"]=>
    string(1) "0"
    ["priority"]=>
    string(1) "0"
  }
  ["body"]=>
  string(3) "bar"
}

Example #2 过程化风格

<?php

/* connection */
$link = stomp_connect('ssl://localhost:61612');

/* check connection */
if (!$link) {
    die('Connection failed: ' . stomp_connect_error());
}

/* subscribe to messages from the queue 'foo' */
stomp_subscribe($link, '/queue/foo');

/* read a frame */
$frame = stomp_read_frame($link);

/* close connection */
stomp_close($link);

?>

以上例程的输出类似于：

array(3) {
  ["command"]=>
  string(7) "MESSAGE"
  ["body"]=>
  string(3) "bar"
  ["headers"]=>
  array(6) {
    ["transaction"]=>
    string(2) "t1"
    ["message-id"]=>
    string(41) "ID:php.net-55293-1257226743606-4:3:-1:1:1"
    ["destination"]=>
    string(10) "/queue/foo"
    ["timestamp"]=>
    string(13) "1257227037059"
    ["expires"]=>
    string(1) "0"
    ["priority"]=>
    string(1) "0"
  }
}

Stomp::hasFrame
Stomp::send
Stomp


Sends a message

Stomp::readFrame
Stomp::setReadTimeout
Stomp
PHP Manual

Stomp::send

stomp_send

(PECL stomp >= 0.1.0)

Stomp::send -- stomp_send — Sends a message

说明

面向对象风格 (method):

public bool Stomp::send ( string $destination , mixed $msg [, array $headers ] )

过程化风格:

bool stomp_send ( resource $link , string $destination , mixed $msg [, array $headers ] )

Sends a message to the Message Broker.

参数

link

仅对过程化样式：由 stomp_connect() 返回的 stomp 连接标识符。

destination

Where to send the message

msg

Message to send.

headers

关联数组包含附加的头信息（例如： receipt）。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note:

A transaction header may be specified, indicating that the message acknowledgment should be part of the named transaction.

Tip

Stomp is inherently asynchronous. Synchronous communication can be implemented adding a receipt header. This will cause methods to not return anything until the server has acknowledged receipt of the message or until read timeout was reached.

范例

See stomp_ack().

Stomp::readFrame
Stomp::setReadTimeout
Stomp


Sets read timeout

Stomp::send
Stomp::subscribe
Stomp
PHP Manual

Stomp::setReadTimeout

stomp_set_read_timeout

(PECL stomp >= 0.3.0)

Stomp::setReadTimeout -- stomp_set_read_timeout — Sets read timeout

说明

面向对象风格 (method):

public void Stomp::setReadTimeout ( int $seconds [, int $microseconds ] )

过程化风格:

void stomp_set_read_timeout ( resource $link , int $seconds [, int $microseconds ] )

Sets read timeout.

参数

link

仅对过程化样式：由 stomp_connect() 返回的 stomp 连接标识符。

seconds

The seconds part of the timeout to be set.

microseconds

The microseconds part of the timeout to be set.

范例

Example #1 面向对象风格

<?php

/* connection */
try {
    $stomp = new Stomp('tcp://localhost:61613');
} catch(StompException $e) {
    die('Connection failed: ' . $e->getMessage());
}

$stomp->setReadTimeout(10);

/* close connection */
unset($stomp);

?>

Example #2 过程化风格

<?php

/* connection */
$link = stomp_connect('ssl://localhost:61612');

/* check connection */
if (!$link) {
    die('Connection failed: ' . stomp_connect_error());
}

stomp_set_read_timeout($link, 10);

/* close connection */
stomp_close($link);

?>

Stomp::send
Stomp::subscribe
Stomp


Registers to listen to a given destination

Stomp::setReadTimeout
Stomp::unsubscribe
Stomp
PHP Manual

Stomp::subscribe

stomp_subscribe

(PECL stomp >= 0.1.0)

Stomp::subscribe -- stomp_subscribe — Registers to listen to a given destination

说明

面向对象风格 (method):

public bool Stomp::subscribe ( string $destination [, array $headers ] )

过程化风格:

bool stomp_subscribe ( resource $link , string $destination [, array $headers ] )

Registers to listen to a given destination.

参数

link

仅对过程化样式：由 stomp_connect() 返回的 stomp 连接标识符。

destination

Destination to subscribe to.

headers

关联数组包含附加的头信息（例如： receipt）。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Tip

Stomp is inherently asynchronous. Synchronous communication can be implemented adding a receipt header. This will cause methods to not return anything until the server has acknowledged receipt of the message or until read timeout was reached.

范例

See stomp_ack().

Stomp::setReadTimeout
Stomp::unsubscribe
Stomp


Removes an existing subscription

Stomp::subscribe
StompFrame
Stomp
PHP Manual

Stomp::unsubscribe

stomp_unsubscribe

(PECL stomp >= 0.1.0)

Stomp::unsubscribe -- stomp_unsubscribe — Removes an existing subscription

说明

面向对象风格 (method):

public bool Stomp::unsubscribe ( string $destination [, array $headers ] )

过程化风格:

bool stomp_unsubscribe ( resource $link , string $destination [, array $headers ] )

Removes an existing subscription.

参数

link

仅对过程化样式：由 stomp_connect() 返回的 stomp 连接标识符。

destination

Subscription to remove.

headers

关联数组包含附加的头信息（例如： receipt）。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Tip

Stomp is inherently asynchronous. Synchronous communication can be implemented adding a receipt header. This will cause methods to not return anything until the server has acknowledged receipt of the message or until read timeout was reached.

范例

See stomp_ack().

Stomp::subscribe
StompFrame
Stomp


The StompFrame class

(PECL stomp >= 0.1.0)

简介

Represents a message which was sent or received from a Stomp compliant Message Broker.

类摘要

StompFrame {
/* 属性 */
public $command ;
public $headers ;
public $body ;
/* 方法 */
__construct ([ string $command [, array $headers [, string $body ]]] )
}

属性

command

Frame command.

headers

Frame headers (array).

body

Frame body.

Table of Contents

  • StompFrame::__construct — Constructor
Stomp::unsubscribe
StompFrame::__construct
Stomp


Constructor

StompFrame
StompException
StompFrame
PHP Manual

StompFrame::__construct

(PECL stomp >= 0.1.0)

StompFrame::__construct — Constructor

说明

StompFrame::__construct ([ string $command [, array $headers [, string $body ]]] )

Constructor.

参数

command

Frame command

headers

Frame headers (array).

body

Frame body.

StompFrame
StompException
StompFrame


The StompException class

(PECL stomp >= 0.1.0)

简介

Represents an error raised by the stomp extension. See Exceptions for more information about Exceptions in PHP.

类摘要

StompException extends Exception {
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
/* 方法 */
public string getDetails ( void )
}

Table of Contents

  • StompException::getDetails — Get exception details
StompFrame::__construct
StompException::getDetails
Stomp


Get exception details

StompException
SVM
StompException
PHP Manual

StompException::getDetails

(PECL stomp >= 0.1.0)

StompException::getDetails — Get exception details

说明

public string StompException::getDetails ( void )

Get exception details.

返回值

string containing the error details.

StompException
SVM
StompException


支持向量机

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 范例
  • SVM — The SVM class
    • SVM::__construct — Construct a new SVM object
    • SVM::crossvalidate — Test training params on subsets of the training data.
    • SVM::getOptions — Return the current training parameters
    • SVM::setOptions — Set training parameters
    • SVM::train — Create a SVMModel based on training data
  • SVMModel — The SVMModel class
    • SVMModel::checkProbabilityModel — Returns true if the model has probability information
    • SVMModel::__construct — Construct a new SVMModel
    • SVMModel::getLabels — Get the labels the model was trained on
    • SVMModel::getNrClass — Returns the number of classes the model was trained with
    • SVMModel::getSvmType — Get the SVM type the model was trained with
    • SVMModel::getSvrProbability — Get the sigma value for regression types
    • SVMModel::load — Load a saved SVM Model
    • SVMModel::predict_probability — Return class probabilities for previous unseen data
    • SVMModel::predict — Predict a value for previously unseen data
    • SVMModel::save — Save a model to a file
StompException::getDetails
简介
其它服务


简介

LibSVM 是SVM分类和回归问题的有效解决方案。这里的以php接口封装的svm扩展是为了在php脚本中更方便的应用。

SVM
安装／配置
SVM


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
SVM


需求

Libsvm itself is required, and is available through some package management - libsvm-devel for RPM based system or libsvm-dev for Debian based ones. Alternatively it is available direct from the website. If installing from the » official website then some steps will need to be taken as the package does not install automatically. For example, assuming the latest version is 3.1:

wget http://www.csie.ntu.edu.tw/~cjlin/cgi-bin/libsvm.cgi?+http://www.csie.ntu.edu.tw/~cjlin/libsvm+tar.gz
tar xvzf libsvm-3.1.tar.gz
cd libsvm-3.1
make lib
cp libsvm.so.1 /usr/lib
ln -s libsvm.so.1 libsvm.so
ldconfig
ldconfig --print | grep libsvm

This last step should show libsvm is installed.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/svm

需求
运行时配置
安装／配置


范例

The basic process is to define parameters, supply training data to generate a model on, then make predictions based on the model. There are a default set of parameters that should get some results with most any input, so we'll start by looking at the data.

Data is supplied in either a file, a stream, or as an array. If supplied in a file or a stream, it must contain one line per training example, which must be formatted as an integer class (usually 1 and -1) followed by a series of feature/value pairs, in increasing feature order. The features are integers, the values floats, usually scaled 0-1. For example:

-1 1:0.43 3:0.12 9284:0.2

In a document classification problem, say a spam checker, each line would represent a document. There would be two classes, -1 for spam, 1 for ham. Each feature would represent some word, and the value would represent that importance of that word to the document (perhaps the frequency count, with the total scaled to unit length). Features that were 0 (e.g. the word did not appear in the document at all) would simply not be included.

In array mode, the data must be passed as an array of arrays. Each sub-array must have the class as the first element, then key => value sets for the feature values pairs.

This data is passed to the SVM class's train function, which will return an SVM model is successful.

Once a model has been generated, it can be used to make predictions about previously unseen data. This can be passed as an array to the model's predict function, in the same format as before, but without the label. The response will be the class.

Models can be saved and restored as required, using the save and load functions, which both take a file location.

Example #1 Train from array

<?php
$data = array(
    array(-1, 1 => 0.43, 3 => 0.12, 9284 => 0.2),
    array(1, 1 => 0.22, 5 => 0.01, 94 => 0.11),
);

$svm = new SVM();
$model = $svm->train($data);

$data = array(1 => 0.43, 3 => 0.12, 9284 => 0.2);
$result = $model->predict($data);
var_dump($result);
$model->save('model.svm');
?>

以上例程的输出类似于：

int(-1)

Example #2 Train from a file

<?php
$svm = new SVM();
$model = $svm->train("traindata.txt");
?>

资源类型
SVM
SVM


The SVM class

(PECL svm >= 0.1.0)

简介

类摘要

SVM {
/* Constants */
const integer C_SVC = 0 ;
const integer NU_SVC = 1 ;
const integer ONE_CLASS = 2 ;
const integer EPSILON_SVR = 3 ;
const integer NU_SVR = 4 ;
const integer KERNEL_LINEAR = 0 ;
const integer KERNEL_POLY = 1 ;
const integer KERNEL_RBF = 2 ;
const integer KERNEL_SIGMOID = 3 ;
const integer KERNEL_PRECOMPUTED = 4 ;
const integer OPT_TYPE = 101 ;
const integer OPT_KERNEL_TYPE = 102 ;
const integer OPT_DEGREE = 103 ;
const integer OPT_SHRINKING = 104 ;
const integer OPT_PROPABILITY = 105 ;
const integer OPT_GAMMA = 201 ;
const integer OPT_NU = 202 ;
const integer OPT_EPS = 203 ;
const integer OPT_P = 204 ;
const integer OPT_COEF_ZERO = 205 ;
const integer OPT_C = 206 ;
const integer OPT_CACHE_SIZE = 207 ;
/* Methods */
public __construct ( void )
public float svm::crossvalidate ( array $problem , int $number_of_folds )
public array getOptions ( void )
public bool setOptions ( array $params )
public SVMModel svm::train ( array $problem [, array $weights ] )
}

预定义常量

SVM Constants

SVM::C_SVC

The basic C_SVC SVM type. The default, and a good starting point

SVM::NU_SVC

The NU_SVC type uses a different, more flexible, error weighting

SVM::ONE_CLASS

One class SVM type. Train just on a single class, using outliers as negative examples

SVM::EPSILON_SVR

A SVM type for regression (predicting a value rather than just a class)

SVM::NU_SVR

A NU style SVM regression type

SVM::KERNEL_LINEAR

A very simple kernel, can work well on large document classification problems

SVM::KERNEL_POLY

A polynomial kernel

SVM::KERNEL_RBF

The common Gaussian RBD kernel. Handles non-linear problems well and is a good default for classification

SVM::KERNEL_SIGMOID

A kernel based on the sigmoid function. Using this makes the SVM very similar to a two layer sigmoid based neural network

SVM::KERNEL_PRECOMPUTED

A precomputed kernel - currently unsupported.

SVM::OPT_TYPE

The options key for the SVM type

SVM::OPT_KERNEL_TYPE

The options key for the kernel type

SVM::OPT_DEGREE

SVM::OPT_SHRINKING

Training parameter, boolean, for whether to use the shrinking heuristics

SVM::OPT_PROBABILITY

Training parameter, boolean, for whether to collect and use probability estimates

SVM::OPT_GAMMA

Algorithm parameter for Poly, RBF and Sigmoid kernel types.

SVM::OPT_NU

The option key for the nu parameter, only used in the NU_ SVM types

SVM::OPT_EPS

The option key for the Epsilon parameter, used in epsilon regression

SVM::OPT_P

Training parameter used by Episilon SVR regression

SVM::OPT_COEF_ZERO

Algorithm parameter for poly and sigmoid kernels

SVM::OPT_C

The option for the cost parameter that controls tradeoff between errors and generality - effectively the penalty for misclassifying training examples.

SVM::OPT_CACHE_SIZE

Memory cache size, in MB

Table of Contents

  • SVM::__construct — Construct a new SVM object
  • SVM::crossvalidate — Test training params on subsets of the training data.
  • SVM::getOptions — Return the current training parameters
  • SVM::setOptions — Set training parameters
  • SVM::train — Create a SVMModel based on training data
范例
SVM::__construct
SVM


Construct a new SVM object

SVM
SVM::crossvalidate
SVM
PHP Manual

SVM::__construct

(PECL svm >= 0.1.0)

SVM::__construct — Construct a new SVM object

说明

public SVM::__construct ( void )

Constructs a new SVM object ready to accept training data.

参数

此函数没有参数。

返回值

Throws SVMException if the libsvm library could not be loaded

SVM
SVM::crossvalidate
SVM


Test training params on subsets of the training data.

SVM::__construct
SVM::getOptions
SVM
PHP Manual

SVM::crossvalidate

(PECL svm >= 0.1.0)

SVM::crossvalidate — Test training params on subsets of the training data.

说明

public float svm::crossvalidate ( array $problem , int $number_of_folds )

Crossvalidate can be used to test the effectiveness of the current parameter set on a subset of the training data. Given a problem set and a n "folds", it separates the problem set into n subsets, and the repeatedly trains on one subset and tests on another. While the accuracy will generally be lower than a SVM trained on the enter data set, the accuracy score returned should be relatively useful, so it can be used to test different training parameters.

参数

problem

The problem data. This can either be in the form of an array, the URL of an SVMLight formatted file, or a stream to an opened SVMLight formatted datasource.

number_of_folds

The number of sets the data should be divided into and cross tested. A higher number means smaller training sets and less reliability. 5 is a good number to start with.

返回值

The correct percentage, expressed as a floating point number from 0-1. In the case of NU_SVC or EPSILON_SVR kernels the mean squared error will returned instead.

参见

  • SVM::train() - Create a SVMModel based on training data

SVM::__construct
SVM::getOptions
SVM


Return the current training parameters

SVM::crossvalidate
SVM::setOptions
SVM
PHP Manual

SVM::getOptions

(PECL svm >= 0.1.0)

SVM::getOptions — Return the current training parameters

说明

public array SVM::getOptions ( void )

Retrieve an array containing the training parameters. The parameters will be keyed on the predefined SVM constants.

参数

此函数没有参数。

返回值

Returns an array of configuration settings.

SVM::crossvalidate
SVM::setOptions
SVM


Set training parameters

SVM::getOptions
SVM::train
SVM
PHP Manual

SVM::setOptions

(PECL svm >= 0.1.0)

SVM::setOptions — Set training parameters

说明

public bool SVM::setOptions ( array $params )

Set one or more training parameters.

参数

params

An array of training parameters, keyed on the SVM constants.

返回值

Return true on success, throws SVMException on error.

SVM::getOptions
SVM::train
SVM


Create a SVMModel based on training data

SVM::setOptions
SVMModel
SVM
PHP Manual

SVM::train

(PECL svm >= 0.1.0)

SVM::train — Create a SVMModel based on training data

说明

public SVMModel svm::train ( array $problem [, array $weights ] )

Train a support vector machine based on the supplied training data.

参数

problem

The problem can be provided in three different ways. An array, where the data should start with the class label (usually 1 or -1) then followed by a sparse data set of dimension => data pairs. A URL to a file containing a SVM Light formatted problem, with the each line being a new training example, the start of each line containing the class (1, -1) then a series of tab separated data values shows as key:value. A opened stream pointing to a data source formatted as in the file above.

weights

Weights are an optional set of weighting parameters for the different classes, to help account for unbalanced training sets. For example, if the classes were 1 and -1, and -1 had significantly more example than one, the weight for -1 could be 0.5. Weights should be in the range 0-1.

返回值

Returns an SVMModel that can be used to classify previously unseen data. Throws SVMException on error

SVM::setOptions
SVMModel
SVM


The SVMModel class

(PECL svm >= 0.1.0)

简介

The SVMModel is the end result of the training process. It can be used to classify previously unseen data.

类摘要

SVMModel {
/* Methods */
public bool checkProbabilityModel ( void )
public __construct ([ string $filename ] )
public array getLabels ( void )
public int getNrClass ( void )
public int getSvmType ( void )
public float getSvrProbability ( void )
public bool load ( string $filename )
public float predict_probability ( array $data )
public float predict ( array $data )
public bool save ( string $filename )
}

Table of Contents

  • SVMModel::checkProbabilityModel — Returns true if the model has probability information
  • SVMModel::__construct — Construct a new SVMModel
  • SVMModel::getLabels — Get the labels the model was trained on
  • SVMModel::getNrClass — Returns the number of classes the model was trained with
  • SVMModel::getSvmType — Get the SVM type the model was trained with
  • SVMModel::getSvrProbability — Get the sigma value for regression types
  • SVMModel::load — Load a saved SVM Model
  • SVMModel::predict_probability — Return class probabilities for previous unseen data
  • SVMModel::predict — Predict a value for previously unseen data
  • SVMModel::save — Save a model to a file
SVM::train
SVMModel::checkProbabilityModel
SVM


Returns true if the model has probability information

SVMModel
SVMModel::__construct
SVMModel
PHP Manual

SVMModel::checkProbabilityModel

(PECL svm >= 0.1.5)

SVMModel::checkProbabilityModel — Returns true if the model has probability information

说明

public bool SVMModel::checkProbabilityModel ( void )

Returns true if the model contains probability information.

参数

此函数没有参数。

返回值

Return a boolean value

SVMModel
SVMModel::__construct
SVMModel


Construct a new SVMModel

SVMModel::checkProbabilityModel
SVMModel::getLabels
SVMModel
PHP Manual

SVMModel::__construct

(PECL svm >= 0.1.0)

SVMModel::__construct — Construct a new SVMModel

说明

public SVMModel::__construct ([ string $filename ] )

Build a new SVMModel. Models will usually be created from the SVM::train function, but then saved models may be restored directly.

参数

filename

The filename for the saved model file this model should load.

返回值

Throws SVMException on error

参见

  • SVMModel::load() - Load a saved SVM Model

SVMModel::checkProbabilityModel
SVMModel::getLabels
SVMModel


Get the labels the model was trained on

SVMModel::__construct
SVMModel::getNrClass
SVMModel
PHP Manual

SVMModel::getLabels

(PECL svm >= 0.1.5)

SVMModel::getLabels — Get the labels the model was trained on

说明

public array SVMModel::getLabels ( void )

Return an array of labels that the model was trained on. For regression and one class models an empty array is returned.

参数

此函数没有参数。

返回值

Return an array of labels

参见

  • SVMModel::getNrClass() - Returns the number of classes the model was trained with

SVMModel::__construct
SVMModel::getNrClass
SVMModel


Returns the number of classes the model was trained with

SVMModel::getLabels
SVMModel::getSvmType
SVMModel
PHP Manual

SVMModel::getNrClass

(PECL svm >= 0.1.5)

SVMModel::getNrClass — Returns the number of classes the model was trained with

说明

public int SVMModel::getNrClass ( void )

Returns the number of classes the model was trained with, will return 2 for one class and regression models.

参数

此函数没有参数。

返回值

Return an integer number of classes

SVMModel::getLabels
SVMModel::getSvmType
SVMModel


Get the SVM type the model was trained with

SVMModel::getNrClass
SVMModel::getSvrProbability
SVMModel
PHP Manual

SVMModel::getSvmType

(PECL svm >= 0.1.5)

SVMModel::getSvmType — Get the SVM type the model was trained with

说明

public int SVMModel::getSvmType ( void )

Returns an integer value representing the type of the SVM model used, e.g SVM::C_SVC.

参数

此函数没有参数。

返回值

Return an integer SVM type

SVMModel::getNrClass
SVMModel::getSvrProbability
SVMModel


Get the sigma value for regression types

SVMModel::getSvmType
SVMModel::load
SVMModel
PHP Manual

SVMModel::getSvrProbability

(PECL svm >= 0.1.5)

SVMModel::getSvrProbability — Get the sigma value for regression types

说明

public float SVMModel::getSvrProbability ( void )

For regression models, returns a sigma value. If there is no probability information or the model is not SVR, 0 is returned.

参数

此函数没有参数。

返回值

Returns a sigma value

SVMModel::getSvmType
SVMModel::load
SVMModel


Load a saved SVM Model

SVMModel::getSvrProbability
SVMModel::predict_probability
SVMModel
PHP Manual

SVMModel::load

(PECL svm >= 0.1.00.1.0)

SVMModel::load — Load a saved SVM Model

说明

public bool SVMModel::load ( string $filename )

Load a model file ready for classification or regression.

参数

filename

The filename of the model.

返回值

Throws SVMException on error. Returns true on success.

参见

  • SVMModel::save() - Save a model to a file

SVMModel::getSvrProbability
SVMModel::predict_probability
SVMModel


Return class probabilities for previous unseen data

SVMModel::load
SVMModel::predict
SVMModel
PHP Manual

SVMModel::predict_probability

(PECL svm >= 0.1.4)

SVMModel::predict_probability — Return class probabilities for previous unseen data

说明

public float SVMModel::predict_probability ( array $data )

This function accepts an array of data and attempts to predict the class, as with the predict function. Additionally, however, this function returns an array of probabilities, one per class in the model, which represent the estimated chance of the data supplied being a member of that class. Requires that the model to be used has been trained with the probability parameter set to true.

参数

data

The array to be classified. This should be a series of key => value pairs in increasing key order, but not necessarily continuous.

probabilities

The supplied value will be filled with the probabilities. This will be either null, in the case of a model without probability information, or an array where the index is the class name and the value the predicted probability.

返回值

Float the predicted value. This will be a class label in the case of classification, a real value in the case of regression. Throws SVMException on error

参见

  • SVM::predict()

SVMModel::load
SVMModel::predict
SVMModel


Predict a value for previously unseen data

SVMModel::predict_probability
SVMModel::save
SVMModel
PHP Manual

SVMModel::predict

(PECL svm >= 0.1.0)

SVMModel::predict — Predict a value for previously unseen data

说明

public float SVMModel::predict ( array $data )

This function accepts an array of data and attempts to predict the class or regression value based on the model extracted from previously trained data.

参数

data

The array to be classified. This should be a series of key => value pairs in increasing key order, but not necessarily continuous.

返回值

Float the predicted value. This will be a class label in the case of classification, a real value in the case of regression. Throws SVMException on error

参见

  • SVM::train() - Create a SVMModel based on training data

SVMModel::predict_probability
SVMModel::save
SVMModel


Save a model to a file

SVMModel::predict
SVN
SVMModel
PHP Manual

SVMModel::save

(PECL svm >= 0.1.0)

SVMModel::save — Save a model to a file

说明

public bool SVMModel::save ( string $filename )

Save the model data to a file, for later use.

参数

filename

The file to save the model to.

返回值

Throws SVMException on error. Returns true on success.

参见

  • SVMModel::load() - Load a saved SVM Model

SVMModel::predict
SVN
SVMModel


Subversion

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • SVN 函数
    • svn_add — 计划在工作目录添加项
    • svn_auth_get_parameter — Retrieves authentication parameter
    • svn_auth_set_parameter — Sets an authentication parameter
    • svn_blame — Get the SVN blame for a file
    • svn_cat — Returns the contents of a file in a repository
    • svn_checkout — Checks out a working copy from the repository
    • svn_cleanup — Recursively cleanup a working copy directory, finishing incomplete operations and removing locks
    • svn_client_version — Returns the version of the SVN client libraries
    • svn_commit — 将修改的本地文件副本发送至版本库
    • svn_delete — Delete items from a working copy or repository.
    • svn_diff — Recursively diffs two paths
    • svn_export — Export the contents of a SVN directory
    • svn_fs_abort_txn — Abort a transaction, returns true if everything is okay, false otherwise
    • svn_fs_apply_text — Creates and returns a stream that will be used to replace
    • svn_fs_begin_txn2 — Create a new transaction
    • svn_fs_change_node_prop — Return true if everything is ok, false otherwise
    • svn_fs_check_path — Determines what kind of item lives at path in a given repository fsroot
    • svn_fs_contents_changed — Return true if content is different, false otherwise
    • svn_fs_copy — Copies a file or a directory, returns true if all is ok, false otherwise
    • svn_fs_delete — Deletes a file or a directory, return true if all is ok, false otherwise
    • svn_fs_dir_entries — Enumerates the directory entries under path; returns a hash of dir names to file type
    • svn_fs_file_contents — Returns a stream to access the contents of a file from a given version of the fs
    • svn_fs_file_length — Returns the length of a file from a given version of the fs
    • svn_fs_is_dir — Return true if the path points to a directory, false otherwise
    • svn_fs_is_file — Return true if the path points to a file, false otherwise
    • svn_fs_make_dir — Creates a new empty directory, returns true if all is ok, false otherwise
    • svn_fs_make_file — Creates a new empty file, returns true if all is ok, false otherwise
    • svn_fs_node_created_rev — Returns the revision in which path under fsroot was created
    • svn_fs_node_prop — Returns the value of a property for a node
    • svn_fs_props_changed — Return true if props are different, false otherwise
    • svn_fs_revision_prop — Fetches the value of a named property
    • svn_fs_revision_root — Get a handle on a specific version of the repository root
    • svn_fs_txn_root — Creates and returns a transaction root
    • svn_fs_youngest_rev — Returns the number of the youngest revision in the filesystem
    • svn_import — Imports an unversioned path into a repository
    • svn_log — Returns the commit log messages of a repository URL
    • svn_ls — Returns list of directory contents in repository URL, optionally at revision number
    • svn_mkdir — Creates a directory in a working copy or repository
    • svn_repos_create — Create a new subversion repository at path
    • svn_repos_fs_begin_txn_for_commit — Create a new transaction
    • svn_repos_fs_commit_txn — Commits a transaction and returns the new revision
    • svn_repos_fs — Gets a handle on the filesystem for a repository
    • svn_repos_hotcopy — Make a hot-copy of the repos at repospath; copy it to destpath
    • svn_repos_open — Open a shared lock on a repository.
    • svn_repos_recover — Run recovery procedures on the repository located at path.
    • svn_revert — Revert changes to the working copy
    • svn_status — Returns the status of working copy files and directories
    • svn_update — Update working copy
SVMModel::save
简介
其它服务


简介

This extension implements PHP bindings for » Subversion (SVN), a version control system, allowing PHP scripts to communicate with SVN repositories and working copies without direct command line calls to the svn executable.

Warning

此扩展是实验性 的。 此扩展的表象，包括其函数名称以及其他此扩展的相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本扩展风险自担 。

SVN
安装／配置
SVN


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
SVN


需求

The Subversion binaries are not necessary to use this extension. However, when compiling the extension, libsvn (the Subversion headers) must be available.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/svn

If ./configure is having trouble finding the SVN files (for example, Subversion was installed with a different prefix directory), use ./configure --with-svn=$USR_PATH to specify the directory where the include/subversion-1/ folder is located.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

Warning

If the extension is compiled against libsvn 1.3, functions that work with working copies will fail when used on working copies created by Subversion 1.4.

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

SVN_REVISION_HEAD (integer)
Magic number (-1) specifying the HEAD revision
Constants usable with svn_auth_set_parameter()
SVN_AUTH_PARAM_DEFAULT_USERNAME (string)
Property for default username to use when performing basic authentication
SVN_AUTH_PARAM_DEFAULT_PASSWORD (string)
Property for default password to use when performing basic authentication
SVN_AUTH_PARAM_NON_INTERACTIVE (string)
SVN_AUTH_PARAM_DONT_STORE_PASSWORDS (string)
SVN_AUTH_PARAM_NO_AUTH_CACHE (string)
SVN_AUTH_PARAM_SSL_SERVER_FAILURES (string)
SVN_AUTH_PARAM_SSL_SERVER_CERT_INFO (string)
SVN_AUTH_PARAM_CONFIG (string)
SVN_AUTH_PARAM_SERVER_GROUP (string)
SVN_AUTH_PARAM_CONFIG_DIR (string)
PHP_SVN_AUTH_PARAM_IGNORE_SSL_VERIFY_ERRORS (string)
Custom property for ignoring SSL cert verification errors
Filesystem constants
SVN_FS_CONFIG_FS_TYPE (string)
Configuration key that determines filesystem type
SVN_FS_TYPE_BDB (string)
Filesystem is Berkeley-DB implementation
SVN_FS_TYPE_FSFS (string)
Filesystem is native-filesystem implementation
Reserved property constants
SVN_PROP_REVISION_DATE (string)
svn:date
SVN_PROP_REVISION_ORIG_DATE (string)
svn:original-date
SVN_PROP_REVISION_AUTHOR (string)
svn:author
SVN_PROP_REVISION_LOG (string)
svn:log
Working copy status constants
SVN_WC_STATUS_NONE (int)
Status does not exist
SVN_WC_STATUS_UNVERSIONED (int)
Item is not versioned in working copy
SVN_WC_STATUS_NORMAL (int)
Item exists, nothing else is happening
SVN_WC_STATUS_ADDED (int)
Item is scheduled for addition
SVN_WC_STATUS_MISSING (int)
Item is versioned but missing from the working copy
SVN_WC_STATUS_DELETED (int)
Item is scheduled for deletion
SVN_WC_STATUS_REPLACED (int)
Item was deleted and then re-added
SVN_WC_STATUS_MODIFIED (int)
Item (text or properties) was modified
SVN_WC_STATUS_MERGED (int)
Item's local modifications were merged with repository modifications
SVN_WC_STATUS_CONFLICTED (int)
Item's local modifications conflicted with repository modifications
SVN_WC_STATUS_IGNORED (int)
Item is unversioned but configured to be ignored
SVN_WC_STATUS_OBSTRUCTED (int)
Unversioned item is in the way of a versioned resource
SVN_WC_STATUS_EXTERNAL (int)
Unversioned path that is populated using svn:externals
SVN_WC_STATUS_INCOMPLETE (int)
Directory does not contain complete entries list
Node type constants
SVN_NODE_NONE (int)
Absent
SVN_NODE_FILE (int)
File
SVN_NODE_DIR (int)
Directory
SVN_NODE_UNKNOWN (int)
Something Subversion cannot identify
资源类型
SVN 函数
SVN


SVN 函数

Table of Contents

  • svn_add — 计划在工作目录添加项
  • svn_auth_get_parameter — Retrieves authentication parameter
  • svn_auth_set_parameter — Sets an authentication parameter
  • svn_blame — Get the SVN blame for a file
  • svn_cat — Returns the contents of a file in a repository
  • svn_checkout — Checks out a working copy from the repository
  • svn_cleanup — Recursively cleanup a working copy directory, finishing incomplete operations and removing locks
  • svn_client_version — Returns the version of the SVN client libraries
  • svn_commit — 将修改的本地文件副本发送至版本库
  • svn_delete — Delete items from a working copy or repository.
  • svn_diff — Recursively diffs two paths
  • svn_export — Export the contents of a SVN directory
  • svn_fs_abort_txn — Abort a transaction, returns true if everything is okay, false otherwise
  • svn_fs_apply_text — Creates and returns a stream that will be used to replace
  • svn_fs_begin_txn2 — Create a new transaction
  • svn_fs_change_node_prop — Return true if everything is ok, false otherwise
  • svn_fs_check_path — Determines what kind of item lives at path in a given repository fsroot
  • svn_fs_contents_changed — Return true if content is different, false otherwise
  • svn_fs_copy — Copies a file or a directory, returns true if all is ok, false otherwise
  • svn_fs_delete — Deletes a file or a directory, return true if all is ok, false otherwise
  • svn_fs_dir_entries — Enumerates the directory entries under path; returns a hash of dir names to file type
  • svn_fs_file_contents — Returns a stream to access the contents of a file from a given version of the fs
  • svn_fs_file_length — Returns the length of a file from a given version of the fs
  • svn_fs_is_dir — Return true if the path points to a directory, false otherwise
  • svn_fs_is_file — Return true if the path points to a file, false otherwise
  • svn_fs_make_dir — Creates a new empty directory, returns true if all is ok, false otherwise
  • svn_fs_make_file — Creates a new empty file, returns true if all is ok, false otherwise
  • svn_fs_node_created_rev — Returns the revision in which path under fsroot was created
  • svn_fs_node_prop — Returns the value of a property for a node
  • svn_fs_props_changed — Return true if props are different, false otherwise
  • svn_fs_revision_prop — Fetches the value of a named property
  • svn_fs_revision_root — Get a handle on a specific version of the repository root
  • svn_fs_txn_root — Creates and returns a transaction root
  • svn_fs_youngest_rev — Returns the number of the youngest revision in the filesystem
  • svn_import — Imports an unversioned path into a repository
  • svn_log — Returns the commit log messages of a repository URL
  • svn_ls — Returns list of directory contents in repository URL, optionally at revision number
  • svn_mkdir — Creates a directory in a working copy or repository
  • svn_repos_create — Create a new subversion repository at path
  • svn_repos_fs_begin_txn_for_commit — Create a new transaction
  • svn_repos_fs_commit_txn — Commits a transaction and returns the new revision
  • svn_repos_fs — Gets a handle on the filesystem for a repository
  • svn_repos_hotcopy — Make a hot-copy of the repos at repospath; copy it to destpath
  • svn_repos_open — Open a shared lock on a repository.
  • svn_repos_recover — Run recovery procedures on the repository located at path.
  • svn_revert — Revert changes to the working copy
  • svn_status — Returns the status of working copy files and directories
  • svn_update — Update working copy
预定义常量
svn_add
SVN


计划在工作目录添加项

SVN 函数
svn_auth_get_parameter
SVN 函数
PHP Manual

svn_add

(PECL svn >= 0.1.0)

svn_add — 计划在工作目录添加项

说明

bool svn_add ( string $path [, bool $recursive = true [, bool $force = false ]] )

添加文件, 目录或者链接在路径 到工作目录。将在下一次执行svn_commit() 时把工作副本添加到项目中。

参数

path

添加项的路径。

Note: 相对路径将会以PHP执行文件所在目录作为当前工作目录进行解析。如果希望依据脚本所在目录解析, 使用realpath() 或 dirname(__FILE__)。

recursive

如果添加项为目录是否递归目录下所有文件。 默认为 TRUE

force

If true, Subversion will recurse into already versioned directories in order to add unversioned files that may be hiding in those directories. Default is FALSE

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

范例

Example #1 svn_add() 例子

在工作目录使用命令 svn status 返回值:

$ svn status
?      foobar.txt

...代码:

<?php
svn_add('foobar.txt');
?>

...计划 foobar.txt 文件添加到版本库。

参见

  • » SVN documentation on svn add

SVN 函数
svn_auth_get_parameter
SVN 函数


Retrieves authentication parameter

svn_add
svn_auth_set_parameter
SVN 函数
PHP Manual

svn_auth_get_parameter

(PECL svn >= 0.1.0)

svn_auth_get_parameter — Retrieves authentication parameter

说明

string svn_auth_get_parameter ( string $key )

Retrieves authentication parameter at key. For a list of valid keys and their meanings, consult the authentication constants list.

参数

key

String key name. Use the authentication constants defined by this extension to specify a key.

返回值

Returns the string value of the parameter at key; returns NULL if parameter does not exist.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • svn_auth_set_parameter() - Sets an authentication parameter
  • Authentication constants

svn_add
svn_auth_set_parameter
SVN 函数


Sets an authentication parameter

svn_auth_get_parameter
svn_blame
SVN 函数
PHP Manual

svn_auth_set_parameter

(PECL svn >= 0.1.0)

svn_auth_set_parameter — Sets an authentication parameter

说明

void svn_auth_set_parameter ( string $key , string $value )

Sets authentication parameter at key to value. For a list of valid keys and their meanings, consult the authentication constants list.

参数

key

String key name. Use the authentication constants defined by this extension to specify a key.

value

String value to set to parameter at key. Format of value varies with the parameter.

返回值

没有返回值。

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

范例

Example #1 Default authentication example

This example configures SVN so that the default username to use is 'Bob' and the default password is 'abc123':

<?php
svn_auth_set_parameter(SVN_AUTH_PARAM_DEFAULT_USERNAME, 'Bob');
svn_auth_set_parameter(SVN_AUTH_PARAM_DEFAULT_PASSWORD, 'abc123');
?>

参见

  • svn_auth_get_parameter() - Retrieves authentication parameter
  • Authentication constants

svn_auth_get_parameter
svn_blame
SVN 函数


Get the SVN blame for a file

svn_auth_set_parameter
svn_cat
SVN 函数
PHP Manual

svn_blame

(PECL svn >= 0.3.0)

svn_blame — Get the SVN blame for a file

说明

array svn_blame ( string $repository_url [, int $revision_no = SVN_REVISION_HEAD ] )

Get the SVN blame of a file from a repository URL.

参数

repository_url

The repository URL.

revision_no

The revision number.

返回值

An array of SVN blame information separated by line which includes the revision number, line number, line of code, author, and date.

范例

Example #1 svn_blame() example

<?php
$svnurl = 'http://svn.example.org/svnroot/foo/trunk/index.php';

print_r( svn_blame($svnurl) );

?>

以上例程的输出类似于：

Array
(
    [0] = Array
          (
           [rev] = 1
           [line_no] = 1
           [line] = Hello World
           [author] = joesmith
           [date] = 2007-07-02T05:51:26.628396Z
          )
    [1] = Array
          ...

参见

  • svn_diff() - Recursively diffs two paths
  • svn_logs()
  • svn_status() - Returns the status of working copy files and directories

svn_auth_set_parameter
svn_cat
SVN 函数


Returns the contents of a file in a repository

svn_blame
svn_checkout
SVN 函数
PHP Manual

svn_cat

(PECL svn >= 0.1.0)

svn_cat — Returns the contents of a file in a repository

说明

string svn_cat ( string $repos_url [, int $revision_no ] )

Returns the contents of the URL repos_url to a file in the repository, optionally at revision number revision_no.

参数

repos_url

String URL path to item in a repository.

revision_no

Integer revision number of item to retrieve, default is the HEAD revision.

返回值

Returns the string contents of the item from the repository on success, and FALSE on failure.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

范例

Example #1 Basic example

This example retrieves the contents of a file at revision 28:

<?php
$contents = svn_cat('http://www.example.com/svnroot/calc/gui.c', 28)
?>

参见

  • svn_list()
  • » SVN documentation on svn cat

svn_blame
svn_checkout
SVN 函数


Checks out a working copy from the repository

svn_cat
svn_cleanup
SVN 函数
PHP Manual

svn_checkout

(PECL svn >= 0.1.0)

svn_checkout — Checks out a working copy from the repository

说明

bool svn_checkout ( string $repos , string $targetpath [, int $revision [, int $flags = 0 ]] )

Checks out a working copy from the repository at repos to targetpath at revision revision.

参数

repos

String URL path to directory in repository to check out.

targetpath

String local path to directory to check out in to

Note: 相对路径将会以PHP执行文件所在目录作为当前工作目录进行解析。如果希望依据脚本所在目录解析, 使用realpath() 或 dirname(__FILE__)。

revision

Integer revision number of repository to check out. Default is HEAD, the most recent revision.

flags

Any combination of SVN_NON_RECURSIVE and SVN_IGNORE_EXTERNALS.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

范例

Example #1 Basic example

This example demonstrates how to check out a directory from a repository to a directory named calc:

<?php
svn_checkout('http://www.example.com/svnroot/calc/trunk', dirname(__FILE__) . '/calc');
?>

The dirname(__FILE__) call is necessary in order to convert the calc relative path into an absolute one. If calc exists, you can also use realpath() to retrieve an absolute path.

参见

  • svn_add() - 计划在工作目录添加项
  • svn_commit() - 将修改的本地文件副本发送至版本库
  • svn_status() - Returns the status of working copy files and directories
  • svn_update() - Update working copy
  • » SVN documentation on svn checkout

svn_cat
svn_cleanup
SVN 函数


Recursively cleanup a working copy directory, finishing incomplete operations and removing locks

svn_checkout
svn_client_version
SVN 函数
PHP Manual

svn_cleanup

(PECL svn >= 0.1.0)

svn_cleanup — Recursively cleanup a working copy directory, finishing incomplete operations and removing locks

说明

bool svn_cleanup ( string $workingdir )

Recursively cleanup working copy directory workingdir, finishing any incomplete operations and removing working copy locks. Use when a working copy is in limbo and needs to be usable again.

参数

workingdir

String path to local working directory to cleanup

Note: 相对路径将会以PHP执行文件所在目录作为当前工作目录进行解析。如果希望依据脚本所在目录解析, 使用realpath() 或 dirname(__FILE__)。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

范例

Example #1 Basic example

This example demonstrates clean up of a working copy in a directory named help-me:

<?php
svn_cleanup(realpath('help-me'));
?>

The realpath() call is necessary due to SVN's quirky handling of relative paths.

参见

  • update()
  • » SVN documentation on svn cleanup

svn_checkout
svn_client_version
SVN 函数


Returns the version of the SVN client libraries

svn_cleanup
svn_commit
SVN 函数
PHP Manual

svn_client_version

(PECL svn >= 0.1.0)

svn_client_version — Returns the version of the SVN client libraries

说明

string svn_client_version ( void )

Returns the version of the SVN client libraries

返回值

String version number, usually in form of x.y.z.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

范例

Example #1 Basic example

<?php
echo svn_client_version();
?>

以上例程的输出类似于：

1.3.1

svn_cleanup
svn_commit
SVN 函数


将修改的本地文件副本发送至版本库

svn_client_version
svn_delete
SVN 函数
PHP Manual

svn_commit

(PECL svn >= 0.1.0)

svn_commit — 将修改的本地文件副本发送至版本库

说明

array svn_commit ( string $log , array $targets [, bool $recursive = true ] )

提交本地文件副本的改变使用参数 targets ，使用 log 参数作为提交日志，targets 参数默认使用递归，recursive 参数设置为 FALSE 将不使用递归。

Note: 此方法没有指定任何认证参数，用户名和密码必须使用 svn_auth_set_parameter()

参数

log

长文本的提交日志

targets

本地文件路径数组

Warning

此参数必须是一个数组，一个单一字符串是不被接收的。

Note: 相对路径将会以PHP执行文件所在目录作为当前工作目录进行解析。如果希望依据脚本所在目录解析, 使用realpath() 或 dirname(__FILE__)。

recursive

布尔类型，是否禁用 targets 递归。默认值为 TRUE

返回值

返回数组信息如下:

array(
    0 => 提交版本号
    1 => ISO 8601 格式的提交时间
    2 => 提交者
)

失败返回 FALSE

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

范例

Example #1 基本示例

这个例子是将一个计算程序目录提交到一个版本库，使用用户名为 Bob 以及密码为 abc123 (提倡可以使用强密码)

<?php
svn_auth_set_parameter(SVN_AUTH_PARAM_DEFAULT_USERNAME, 'Bob');
svn_auth_set_parameter(SVN_AUTH_PARAM_DEFAULT_PASSWORD, 'abc123');
var_dump(svn_commit('Log message of Bob\'s commit', array(realpath('calculator'))));
?>

以上例程会输出：

array(
  0 => 1415,
  1 => '2007-05-26T01:44:28.453125Z',
  2 => 'Bob'
)

参见

  • svn_auth_set_parameter() - Sets an authentication parameter
  • » 参见 svn 官方文档

svn_client_version
svn_delete
SVN 函数


Delete items from a working copy or repository.

svn_commit
svn_diff
SVN 函数
PHP Manual

svn_delete

(PECL svn >= 0.4.0)

svn_delete — Delete items from a working copy or repository.

说明

bool svn_delete ( string $path [, bool $force = false ] )

Deletes the file, directory or symbolic link at path from the working directory. The item will be deleted from the repository the next time you call svn_commit() on the working copy.

参数

path

Path of item to delete.

Note: 相对路径将会以PHP执行文件所在目录作为当前工作目录进行解析。如果希望依据脚本所在目录解析, 使用realpath() 或 dirname(__FILE__)。

force

If TRUE, the file will be deleted even if it has local modifications. Otherwise, local modifications will result in a failure. Default is FALSE

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参见

  • » SVN documentation on svn delete

svn_commit
svn_diff
SVN 函数


Recursively diffs two paths

svn_delete
svn_export
SVN 函数
PHP Manual

svn_diff

(PECL svn >= 0.1.0)

svn_diff — Recursively diffs two paths

说明

array svn_diff ( string $path1 , int $rev1 , string $path2 , int $rev2 )

Recursively diffs two paths, path1 and path2.

Note:

This is not a general-purpose diff utility. Only local files that are versioned may be diffed: other files will fail.

参数

path1

First path to diff. This can be a URL to a file/directory in an SVN repository or a local file/directory path.

Note: 相对路径将会以PHP执行文件所在目录作为当前工作目录进行解析。如果希望依据脚本所在目录解析, 使用realpath() 或 dirname(__FILE__)。

Warning

If a local file path has only backslashes and no forward slashes, this extension will fail to find the path. Always replace all backslashes with forward slashes when using this function.

rev1

First path's revision number. Use SVN_REVISION_HEAD to specify the most recent revision.

path2

Second path to diff. See path1 for description.

rev2

Second path's revision number. See rev1 for description.

返回值

Returns an array-list consisting of two streams: the first is the diff output and the second contains error stream output. The streams can be read using fread(). Returns FALSE or NULL on error.

The diff output will, by default, be in the form of Subversion's custom unified diff format, but an » external diff engine may be used depending on Subversion's configuration.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

范例

Example #1 Basic example

This example demonstrates the basic usage of this function, and the retrieval of contents from the stream:

<?php
list($diff, $errors) = svn_diff(
    'http://www.example.com/svnroot/trunk/foo', SVN_REVISION_HEAD,
    'http://www.example.com/svnroot/branches/dev/foo', SVN_REVISION_HEAD
);
if (!$diff) exit;
$contents = '';
while (!feof($diff)) {
  $contents .= fread($diff, 8192);
}
fclose($diff);
fclose($errors);
var_dump($contents);
?>

以上例程会输出：

Index: http://www.example.com/svnroot/trunk/foo
===================================================================
--- http://www.example.com/svnroot/trunk/foo        (.../foo) (revision 23)
+++ http://www.example.com/svnroot/branches/dev/foo (.../foo) (revision 27)
 // further diff output

Example #2 Diffing two revisions of a repository path

This example implements a wrapper function that allows a user to easily diff two revisions of the same item using an external repository path (the default syntax is somewhat verbose):

<?php
function svn_diff_same_item($path, $rev1, $rev2) {
    return svn_diff($path, $rev1, $path, $rev2);
}
?>

Example #3 Portably diffing two local files

This example implements a wrapper function that portably diffs two local files, compensating for the realpath() fix and the backslashes bug:

<?php
function svn_diff_local($path1, $rev1, $path2, $rev2) {
    $path1 = str_replace('\\', '/', realpath($path1));
    $path2 = str_replace('\\', '/', realpath($path2));
    return svn_diff($path1, $rev1, $path2, $rev2);
}
?>

参见

  • » SVN documentation on svn diff

svn_delete
svn_export
SVN 函数


Export the contents of a SVN directory

svn_diff
svn_fs_abort_txn
SVN 函数
PHP Manual

svn_export

(PECL svn >= 0.3.0)

svn_export — Export the contents of a SVN directory

说明

bool svn_export ( string $frompath , string $topath [, bool $working_copy = true [, int $revision_no = -1 ]] )

Export the contents of either a working copy or repository into a 'clean' directory.

参数

frompath

The path to the current repository.

topath

The path to the new repository.

working_copy

If TRUE, it will export uncommitted files from the working copy.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 svn_export() example

<?php
$working_dir     = '../';
$new_working_dir = '/home/user/devel/foo/trunk';

svn_export($working_dir, $new_working_dir);
?>

参见

  • svn_import() - Imports an unversioned path into a repository

svn_diff
svn_fs_abort_txn
SVN 函数


Abort a transaction, returns true if everything is okay, false otherwise

svn_export
svn_fs_apply_text
SVN 函数
PHP Manual

svn_fs_abort_txn

(PECL svn >= 0.2.0)

svn_fs_abort_txn — Abort a transaction, returns true if everything is okay, false otherwise

说明

bool svn_fs_abort_txn ( resource $txn )
Warning

本函数还未编写文档，仅有参数列表。

Abort a transaction, returns true if everything is okay, false otherwise

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_export
svn_fs_apply_text
SVN 函数


Creates and returns a stream that will be used to replace

svn_fs_abort_txn
svn_fs_begin_txn2
SVN 函数
PHP Manual

svn_fs_apply_text

(PECL svn >= 0.2.0)

svn_fs_apply_text — Creates and returns a stream that will be used to replace

说明

resource svn_fs_apply_text ( resource $root , string $path )
Warning

本函数还未编写文档，仅有参数列表。

Creates and returns a stream that will be used to replace

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_fs_abort_txn
svn_fs_begin_txn2
SVN 函数


Create a new transaction

svn_fs_apply_text
svn_fs_change_node_prop
SVN 函数
PHP Manual

svn_fs_begin_txn2

(PECL svn >= 0.2.0)

svn_fs_begin_txn2 — Create a new transaction

说明

resource svn_fs_begin_txn2 ( resource $repos , int $rev )
Warning

本函数还未编写文档，仅有参数列表。

Create a new transaction

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_fs_apply_text
svn_fs_change_node_prop
SVN 函数


Return true if everything is ok, false otherwise

svn_fs_begin_txn2
svn_fs_check_path
SVN 函数
PHP Manual

svn_fs_change_node_prop

(PECL svn >= 0.2.0)

svn_fs_change_node_prop — Return true if everything is ok, false otherwise

说明

bool svn_fs_change_node_prop ( resource $root , string $path , string $name , string $value )
Warning

本函数还未编写文档，仅有参数列表。

Return true if everything is ok, false otherwise

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_fs_begin_txn2
svn_fs_check_path
SVN 函数


Determines what kind of item lives at path in a given repository fsroot

svn_fs_change_node_prop
svn_fs_contents_changed
SVN 函数
PHP Manual

svn_fs_check_path

(PECL svn >= 0.1.0)

svn_fs_check_path — Determines what kind of item lives at path in a given repository fsroot

说明

int svn_fs_check_path ( resource $fsroot , string $path )
Warning

本函数还未编写文档，仅有参数列表。

Determines what kind of item lives at path in a given repository fsroot

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_fs_change_node_prop
svn_fs_contents_changed
SVN 函数


Return true if content is different, false otherwise

svn_fs_check_path
svn_fs_copy
SVN 函数
PHP Manual

svn_fs_contents_changed

(PECL svn >= 0.2.0)

svn_fs_contents_changed — Return true if content is different, false otherwise

说明

bool svn_fs_contents_changed ( resource $root1 , string $path1 , resource $root2 , string $path2 )
Warning

本函数还未编写文档，仅有参数列表。

Return true if content is different, false otherwise

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_fs_check_path
svn_fs_copy
SVN 函数


Copies a file or a directory, returns true if all is ok, false otherwise

svn_fs_contents_changed
svn_fs_delete
SVN 函数
PHP Manual

svn_fs_copy

(PECL svn >= 0.2.0)

svn_fs_copy — Copies a file or a directory, returns true if all is ok, false otherwise

说明

bool svn_fs_copy ( resource $from_root , string $from_path , resource $to_root , string $to_path )
Warning

本函数还未编写文档，仅有参数列表。

Copies a file or a directory, returns true if all is ok, false otherwise

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_fs_contents_changed
svn_fs_delete
SVN 函数


Deletes a file or a directory, return true if all is ok, false otherwise

svn_fs_copy
svn_fs_dir_entries
SVN 函数
PHP Manual

svn_fs_delete

(PECL svn >= 0.2.0)

svn_fs_delete — Deletes a file or a directory, return true if all is ok, false otherwise

说明

bool svn_fs_delete ( resource $root , string $path )
Warning

本函数还未编写文档，仅有参数列表。

Deletes a file or a directory, return true if all is ok, false otherwise

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_fs_copy
svn_fs_dir_entries
SVN 函数


Enumerates the directory entries under path; returns a hash of dir names to file type

svn_fs_delete
svn_fs_file_contents
SVN 函数
PHP Manual

svn_fs_dir_entries

(PECL svn >= 0.1.0)

svn_fs_dir_entries — Enumerates the directory entries under path; returns a hash of dir names to file type

说明

array svn_fs_dir_entries ( resource $fsroot , string $path )
Warning

本函数还未编写文档，仅有参数列表。

Enumerates the directory entries under path; returns a hash of dir names to file type

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_fs_delete
svn_fs_file_contents
SVN 函数


Returns a stream to access the contents of a file from a given version of the fs

svn_fs_dir_entries
svn_fs_file_length
SVN 函数
PHP Manual

svn_fs_file_contents

(PECL svn >= 0.1.0)

svn_fs_file_contents — Returns a stream to access the contents of a file from a given version of the fs

说明

resource svn_fs_file_contents ( resource $fsroot , string $path )
Warning

本函数还未编写文档，仅有参数列表。

Returns a stream to access the contents of a file from a given version of the fs

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_fs_dir_entries
svn_fs_file_length
SVN 函数


Returns the length of a file from a given version of the fs

svn_fs_file_contents
svn_fs_is_dir
SVN 函数
PHP Manual

svn_fs_file_length

(PECL svn >= 0.1.0)

svn_fs_file_length — Returns the length of a file from a given version of the fs

说明

int svn_fs_file_length ( resource $fsroot , string $path )
Warning

本函数还未编写文档，仅有参数列表。

Returns the length of a file from a given version of the fs

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_fs_file_contents
svn_fs_is_dir
SVN 函数


Return true if the path points to a directory, false otherwise

svn_fs_file_length
svn_fs_is_file
SVN 函数
PHP Manual

svn_fs_is_dir

(PECL svn >= 0.2.0)

svn_fs_is_dir — Return true if the path points to a directory, false otherwise

说明

bool svn_fs_is_dir ( resource $root , string $path )
Warning

本函数还未编写文档，仅有参数列表。

Return true if the path points to a directory, false otherwise

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_fs_file_length
svn_fs_is_file
SVN 函数


Return true if the path points to a file, false otherwise

svn_fs_is_dir
svn_fs_make_dir
SVN 函数
PHP Manual

svn_fs_is_file

(PECL svn >= 0.2.0)

svn_fs_is_file — Return true if the path points to a file, false otherwise

说明

bool svn_fs_is_file ( resource $root , string $path )
Warning

本函数还未编写文档，仅有参数列表。

Return true if the path points to a file, false otherwise

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_fs_is_dir
svn_fs_make_dir
SVN 函数


Creates a new empty directory, returns true if all is ok, false otherwise

svn_fs_is_file
svn_fs_make_file
SVN 函数
PHP Manual

svn_fs_make_dir

(PECL svn >= 0.2.0)

svn_fs_make_dir — Creates a new empty directory, returns true if all is ok, false otherwise

说明

bool svn_fs_make_dir ( resource $root , string $path )
Warning

本函数还未编写文档，仅有参数列表。

Creates a new empty directory, returns true if all is ok, false otherwise

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_fs_is_file
svn_fs_make_file
SVN 函数


Creates a new empty file, returns true if all is ok, false otherwise

svn_fs_make_dir
svn_fs_node_created_rev
SVN 函数
PHP Manual

svn_fs_make_file

(PECL svn >= 0.2.0)

svn_fs_make_file — Creates a new empty file, returns true if all is ok, false otherwise

说明

bool svn_fs_make_file ( resource $root , string $path )
Warning

本函数还未编写文档，仅有参数列表。

Creates a new empty file, returns true if all is ok, false otherwise

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_fs_make_dir
svn_fs_node_created_rev
SVN 函数


Returns the revision in which path under fsroot was created

svn_fs_make_file
svn_fs_node_prop
SVN 函数
PHP Manual

svn_fs_node_created_rev

(PECL svn >= 0.1.0)

svn_fs_node_created_rev — Returns the revision in which path under fsroot was created

说明

int svn_fs_node_created_rev ( resource $fsroot , string $path )
Warning

本函数还未编写文档，仅有参数列表。

Returns the revision in which path under fsroot was created

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_fs_make_file
svn_fs_node_prop
SVN 函数


Returns the value of a property for a node

svn_fs_node_created_rev
svn_fs_props_changed
SVN 函数
PHP Manual

svn_fs_node_prop

(PECL svn >= 0.1.0)

svn_fs_node_prop — Returns the value of a property for a node

说明

string svn_fs_node_prop ( resource $fsroot , string $path , string $propname )
Warning

本函数还未编写文档，仅有参数列表。

Returns the value of a property for a node

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_fs_node_created_rev
svn_fs_props_changed
SVN 函数


Return true if props are different, false otherwise

svn_fs_node_prop
svn_fs_revision_prop
SVN 函数
PHP Manual

svn_fs_props_changed

(PECL svn >= 0.2.0)

svn_fs_props_changed — Return true if props are different, false otherwise

说明

bool svn_fs_props_changed ( resource $root1 , string $path1 , resource $root2 , string $path2 )
Warning

本函数还未编写文档，仅有参数列表。

Return true if props are different, false otherwise

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_fs_node_prop
svn_fs_revision_prop
SVN 函数


Fetches the value of a named property

svn_fs_props_changed
svn_fs_revision_root
SVN 函数
PHP Manual

svn_fs_revision_prop

(PECL svn >= 0.1.0)

svn_fs_revision_prop — Fetches the value of a named property

说明

string svn_fs_revision_prop ( resource $fs , int $revnum , string $propname )
Warning

本函数还未编写文档，仅有参数列表。

Fetches the value of a named property

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_fs_props_changed
svn_fs_revision_root
SVN 函数


Get a handle on a specific version of the repository root

svn_fs_revision_prop
svn_fs_txn_root
SVN 函数
PHP Manual

svn_fs_revision_root

(PECL svn >= 0.1.0)

svn_fs_revision_root — Get a handle on a specific version of the repository root

说明

resource svn_fs_revision_root ( resource $fs , int $revnum )
Warning

本函数还未编写文档，仅有参数列表。

Get a handle on a specific version of the repository root

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_fs_revision_prop
svn_fs_txn_root
SVN 函数


Creates and returns a transaction root

svn_fs_revision_root
svn_fs_youngest_rev
SVN 函数
PHP Manual

svn_fs_txn_root

(PECL svn >= 0.2.0)

svn_fs_txn_root — Creates and returns a transaction root

说明

resource svn_fs_txn_root ( resource $txn )
Warning

本函数还未编写文档，仅有参数列表。

Creates and returns a transaction root

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_fs_revision_root
svn_fs_youngest_rev
SVN 函数


Returns the number of the youngest revision in the filesystem

svn_fs_txn_root
svn_import
SVN 函数
PHP Manual

svn_fs_youngest_rev

(PECL svn >= 0.1.0)

svn_fs_youngest_rev — Returns the number of the youngest revision in the filesystem

说明

int svn_fs_youngest_rev ( resource $fs )
Warning

本函数还未编写文档，仅有参数列表。

Returns the number of the youngest revision in the filesystem

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_fs_txn_root
svn_import
SVN 函数


Imports an unversioned path into a repository

svn_fs_youngest_rev
svn_log
SVN 函数
PHP Manual

svn_import

(PECL svn >= 0.2.0)

svn_import — Imports an unversioned path into a repository

说明

bool svn_import ( string $path , string $url , bool $nonrecursive )

Commits unversioned path into repository at url. If path is a directory and nonrecursive is FALSE, the directory will be imported recursively.

参数

path

Path of file or directory to import.

Note: 相对路径将会以PHP执行文件所在目录作为当前工作目录进行解析。如果希望依据脚本所在目录解析, 使用realpath() 或 dirname(__FILE__)。

url

Repository URL to import into.

nonrecursive

Whether or not to refrain from recursively processing directories.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

范例

Example #1 Basic example

This example demonstrates a basic use-case of this function. To import a directory named new-files into the repository at http://www.example.com/svnroot/incoming/abc, use:

<?php
svn_import(realpath('new-files'), 'http://www.example.com/svnroot/incoming/abc', false);
?>

参见

  • svn_add() - 计划在工作目录添加项
  • » SVN documentation for svn import

svn_fs_youngest_rev
svn_log
SVN 函数


Returns the commit log messages of a repository URL

svn_import
svn_ls
SVN 函数
PHP Manual

svn_log

(PECL svn >= 0.1.0)

svn_log — Returns the commit log messages of a repository URL

说明

array svn_log ( string $repos_url [, int $start_revision [, int $end_revision [, int $limit = 0 [, int $flags = SVN_DISCOVER_CHANGED_PATHS | SVN_STOP_ON_COPY ]]]] )

svn_log() returns the complete history of the item at the repository URL repos_url, or the history of a specific revision if start_revision is set. This function is equivalent to svn log --verbose -r $start_revision $repos_url.

参数

repos_url

Repository URL of the item to retrieve log history from.

start_revision

Revision number of the first log to retrieve. Use SVN_REVISION_HEAD to retrieve the log from the most recent revision.

end_revision

Revision number of the last log to retrieve. Defaults to start_revision if specified or to SVN_REVISION_INITIAL otherwise.

limit

Number of logs to retrieve.

flags

Any combination of SVN_OMIT_MESSAGES, SVN_DISCOVER_CHANGED_PATHS and SVN_STOP_ON_COPY.

返回值

On success, this function returns an array file listing in the format of:

[0] => Array, ordered most recent (highest) revision first
(
    [rev] => integer revision number
    [author] => string author name
    [msg] => string log message
    [date] => string date formatted per ISO 8601, i.e. date('c')
    [paths] => Array, describing changed files
        (
            [0] => Array
                (
                    [action] => string letter signifying change
                    [path] =>  absolute repository path of changed file
                )
            [1] => ...
        )
)
[1] => ...

Note:

The output will always be a numerically indexed array of arrays, even when there are none or only one log message(s).

The value of action is a subset of the » status output in the first column, where possible values are:

Actions
Letter | Description
M | Item/props was modified
A | Item was added
D | Item was deleted
R | Item was replaced

If no changes were made to the item, an empty array is returned.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

范例

Example #1 svn_log() example

<?php
print_r( svn_log('http://www.example.com/', 23) );
?>

以上例程的输出类似于：

Array
(
    [0] => Array
    (
        [rev] => 23
        [author] => 'joe'
        [msg] => 'Add cheese and salami to our sandwich.'
        [date] => '2007-04-06T16:00:27-04:00'
        [paths] => Array
            (
                [0] => Array
                    (
                        [action] => 'M'
                        [path] =>  '/sandwich.txt'
                    )
            )
    )
)

参见

  • » SVN documentation on svn log

svn_import
svn_ls
SVN 函数


Returns list of directory contents in repository URL, optionally at revision number

svn_log
svn_mkdir
SVN 函数
PHP Manual

svn_ls

(PECL svn >= 0.1.0)

svn_ls — Returns list of directory contents in repository URL, optionally at revision number

说明

array svn_ls ( string $repos_url [, int $revision_no = SVN_REVISION_HEAD [, bool $recurse = false [, bool $peg = false ]]] )

This function queries the repository URL and returns a list of files and directories, optionally from a specific revision. This is equivalent to svn list $repos_url[@$revision_no]

Note:

This function does not work with working copies. repos_url must be a repository URL.

参数

url

URL of the repository, eg. http://www.example.com/svnroot. To access a local Subversion repository via filesystem, use the file URI scheme, eg. file:///home/user/svn-repos

revision

Integer revision number to retrieve listing of. When omitted, the HEAD revision is used.

recurse

Enables recursion.

返回值

On success, this function returns an array file listing in the format of:

[0] => Array
    (
        [created_rev] => integer revision number of last edit
        [last_author] => string author name of last edit
        [size] => integer byte file size of file
        [time] => string date of last edit in form 'M d H:i'
                  or 'M d Y', depending on how old the file is
        [time_t] => integer unix timestamp of last edit
        [name] => name of file/directory
        [type] => type, can be 'file' or 'dir'
    )
[1] => ...

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

范例

Example #1 svn_ls() example

<?php
print_r( svn_ls('http://www.example.com/svnroot/') );
?>

以上例程的输出类似于：

Array
(
    [0] => Array
        (
            [created_rev] => 20
            [last_author] => Joe
            [size] => 0
            [time] => Apr 02 09:28
            [time_t] => 1175520529
            [name] => tags
            [type] => dir
        )
    [1] => Array
        (
            [created_rev] => 23
            [last_author] => Bob
            [size] => 0
            [time] => Apr 02 15:15
            [time_t] => 1175541322
            [name] => trunk
            [type] => dir
        )
)

参见

  • » SVN documentation on svn list

svn_log
svn_mkdir
SVN 函数


Creates a directory in a working copy or repository

svn_ls
svn_repos_create
SVN 函数
PHP Manual

svn_mkdir

(PECL svn >= 0.4.0)

svn_mkdir — Creates a directory in a working copy or repository

说明

bool svn_mkdir ( string $path [, string $log_message ] )

Creates a directory in a working copy or repository.

参数

path

The path to the working copy or repository.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • svn_add() - 计划在工作目录添加项
  • svn_copy()

svn_ls
svn_repos_create
SVN 函数


Create a new subversion repository at path

svn_mkdir
svn_repos_fs_begin_txn_for_commit
SVN 函数
PHP Manual

svn_repos_create

(PECL svn >= 0.1.0)

svn_repos_create — Create a new subversion repository at path

说明

resource svn_repos_create ( string $path [, array $config [, array $fsconfig ]] )
Warning

本函数还未编写文档，仅有参数列表。

Create a new subversion repository at path

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_mkdir
svn_repos_fs_begin_txn_for_commit
SVN 函数


Create a new transaction

svn_repos_create
svn_repos_fs_commit_txn
SVN 函数
PHP Manual

svn_repos_fs_begin_txn_for_commit

(PECL svn >= 0.2.0)

svn_repos_fs_begin_txn_for_commit — Create a new transaction

说明

resource svn_repos_fs_begin_txn_for_commit ( resource $repos , int $rev , string $author , string $log_msg )
Warning

本函数还未编写文档，仅有参数列表。

Create a new transaction

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_repos_create
svn_repos_fs_commit_txn
SVN 函数


Commits a transaction and returns the new revision

svn_repos_fs_begin_txn_for_commit
svn_repos_fs
SVN 函数
PHP Manual

svn_repos_fs_commit_txn

(PECL svn >= 0.2.0)

svn_repos_fs_commit_txn — Commits a transaction and returns the new revision

说明

int svn_repos_fs_commit_txn ( resource $txn )
Warning

本函数还未编写文档，仅有参数列表。

Commits a transaction and returns the new revision

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_repos_fs_begin_txn_for_commit
svn_repos_fs
SVN 函数


Gets a handle on the filesystem for a repository

svn_repos_fs_commit_txn
svn_repos_hotcopy
SVN 函数
PHP Manual

svn_repos_fs

(PECL svn >= 0.1.0)

svn_repos_fs — Gets a handle on the filesystem for a repository

说明

resource svn_repos_fs ( resource $repos )
Warning

本函数还未编写文档，仅有参数列表。

Gets a handle on the filesystem for a repository

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_repos_fs_commit_txn
svn_repos_hotcopy
SVN 函数


Make a hot-copy of the repos at repospath; copy it to destpath

svn_repos_fs
svn_repos_open
SVN 函数
PHP Manual

svn_repos_hotcopy

(PECL svn >= 0.1.0)

svn_repos_hotcopy — Make a hot-copy of the repos at repospath; copy it to destpath

说明

bool svn_repos_hotcopy ( string $repospath , string $destpath , bool $cleanlogs )
Warning

本函数还未编写文档，仅有参数列表。

Make a hot-copy of the repos at repospath; copy it to destpath

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_repos_fs
svn_repos_open
SVN 函数


Open a shared lock on a repository.

svn_repos_hotcopy
svn_repos_recover
SVN 函数
PHP Manual

svn_repos_open

(PECL svn >= 0.1.0)

svn_repos_open — Open a shared lock on a repository.

说明

resource svn_repos_open ( string $path )
Warning

本函数还未编写文档，仅有参数列表。

Open a shared lock on a repository.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_repos_hotcopy
svn_repos_recover
SVN 函数


Run recovery procedures on the repository located at path.

svn_repos_open
svn_revert
SVN 函数
PHP Manual

svn_repos_recover

(PECL svn >= 0.1.0)

svn_repos_recover — Run recovery procedures on the repository located at path.

说明

bool svn_repos_recover ( string $path )
Warning

本函数还未编写文档，仅有参数列表。

Run recovery procedures on the repository located at path.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

svn_repos_open
svn_revert
SVN 函数


Revert changes to the working copy

svn_repos_recover
svn_status
SVN 函数
PHP Manual

svn_revert

(PECL svn >= 0.3.0)

svn_revert — Revert changes to the working copy

说明

bool svn_revert ( string $path [, bool $recursive = false ] )

Revert any local changes to the path in a working copy.

参数

path

The path to the working repository.

recursive

Optionally make recursive changes.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • svn_delete() - Delete items from a working copy or repository.
  • svn_export() - Export the contents of a SVN directory

svn_repos_recover
svn_status
SVN 函数


Returns the status of working copy files and directories

svn_revert
svn_update
SVN 函数
PHP Manual

svn_status

(PECL svn >= 0.1.0)

svn_status — Returns the status of working copy files and directories

说明

array svn_status ( string $path [, int $flags = 0 ] )

Returns the status of working copy files and directories, giving modifications, additions, deletions and other changes to items in the working copy.

参数

path

Local path to file or directory to retrieve status of.

Note: 相对路径将会以PHP执行文件所在目录作为当前工作目录进行解析。如果希望依据脚本所在目录解析, 使用realpath() 或 dirname(__FILE__)。

flags

Any combination of SVN_NON_RECURSIVE, SVN_ALL (regardless of modification status), SVN_SHOW_UPDATES (entries will be added for items that are out-of-date), SVN_NO_IGNORE (disregard svn:ignore properties when scanning for new files) and SVN_IGNORE_EXTERNALS.

返回值

Returns a numerically indexed array of associative arrays detailing the status of items in the repository:

Array (
    [0] => Array (
        // information on item
    )
    [1] => ...
)

The information on the item is an associative array that can contain the following keys:

path
String path to file/directory of this entry on local filesystem.
text_status
Status of item's text. 参见 状态常量列表 获得可能的值.
repos_text_status
Status of item's text in repository. Only accurate if update was set to TRUE. 参见 状态常量列表 获得可能的值.
prop_status
Status of item's properties. 参见 状态常量列表 获得可能的值.
repos_prop_status
Status of item's property in repository. Only accurate if update was set to TRUE. 参见 状态常量列表 获得可能的值.
locked
Whether or not the item is locked. (Only set if TRUE.)
copied
Whether or not the item was copied (scheduled for addition with history). (Only set if TRUE.)
switched
Whether or not the item was switched using the switch command. (Only set if TRUE)

These keys are only set if the item is versioned:

name
Base name of item in repository.
url
URL of item in repository.
repos
Base URL of repository.
revision
Integer revision of item in working copy.
kind
Type of item, i.e. file or directory. 参见 类型常量列表 获取可能的值.
schedule
Scheduled action for item, i.e. addition or deletion. Constants for these magic numbers are not available, they can be emulated by using:
<?php
if (!defined('svn_wc_schedule_normal')) {
    define('svn_wc_schedule_normal',  0); // nothing special
    define('svn_wc_schedule_add',     1); // item will be added
    define('svn_wc_schedule_delete',  2); // item will be deleted
    define('svn_wc_schedule_replace', 3); // item will be added and deleted
}
?>
deleted
Whether or not the item was deleted, but parent revision lags behind. (Only set if TRUE.)
absent
Whether or not the item is absent, that is, Subversion knows that there should be something there but there isn't. (Only set if TRUE.)
incomplete
Whether or not the entries file for a directory is incomplete. (Only set if TRUE.)
cmt_date
Integer Unix timestamp of last commit date. (Unaffected by update.)
cmt_rev
Integer revision of last commit. (Unaffected by update.)
cmt_author
String author of last commit. (Unaffected by update.)
prop_time
Integer Unix timestamp of last up-to-date time for properties
text_time
Integer Unix timestamp of last up-to-date time for text

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

范例

Example #1 Basic example

This example demonstrates a basic, theoretical usage of this function.

<?php
print_r(svn_status(realpath('wc')));
?>

以上例程的输出类似于：

Array (
    [0] => Array (
        [path] => /home/bob/wc/sandwich.txt
        [text_status] => 8 // item was modified
        [repos_text_status] => 1 // no information available, use update
        [prop_status] => 3 // no changes
        [repos_prop_status] => 1 // no information available, use update
        [name] => sandwich.txt
        [url] => http://www.example.com/svnroot/deli/trunk/sandwich.txt
        [repos] => http://www.example.com/svnroot/
        [revision] => 123
        [kind] => 1 // file
        [schedule] => 0 // no special actions scheduled
        [cmt_date] => 1165543135
        [cmt_rev] => 120
        [cmt_author] => Alice
        [prop_time] => 1180201728
        [text_time] => 1180201729
    )
)

参见

  • svn_update() - Update working copy
  • svn_log() - Returns the commit log messages of a repository URL
  • » SVN documentation for svn status

svn_revert
svn_update
SVN 函数


Update working copy

svn_status
TCP
SVN 函数
PHP Manual

svn_update

(PECL svn >= 0.1.0)

svn_update — Update working copy

说明

int svn_update ( string $path [, int $revno = SVN_REVISION_HEAD [, bool $recurse = true ]] )

Update working copy at path to revision revno. If recurse is true, directories will be recursively updated.

参数

path

Path to local working copy.

Note: 相对路径将会以PHP执行文件所在目录作为当前工作目录进行解析。如果希望依据脚本所在目录解析, 使用realpath() 或 dirname(__FILE__)。

revno

Revision number to update to, default is SVN_REVISION_HEAD.

recurse

Whether or not to recursively update directories.

返回值

Returns new revision number on success, returns FALSE on failure.

注释

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

范例

Example #1 Basic example

This example demonstrates basic usage of this function:

<?php
echo svn_update(realpath('working-copy'));
?>

以上例程的输出类似于：

234

参见

  • svn_checkout() - Checks out a working copy from the repository
  • svn_commit() - 将修改的本地文件副本发送至版本库
  • » SVN documentation for svn update

svn_status
TCP
SVN 函数


TCP Wrappers

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • TCP 函数
    • tcpwrap_check — Performs a tcpwrap check
svn_update
简介
其它服务


简介

The TCP wrappers provides a classical Unix mechanism which has been designed to check if the remote client is able to connect from the given IP address.

TCP
安装／配置
TCP


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
TCP


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/tcpwrap.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
TCP 函数
TCP


TCP 函数

Table of Contents

  • tcpwrap_check — Performs a tcpwrap check
预定义常量
tcpwrap_check
TCP


Performs a tcpwrap check

TCP 函数
Varnish
TCP 函数
PHP Manual

tcpwrap_check

(PECL tcpwrap >= 0.1.0)

tcpwrap_check — Performs a tcpwrap check

说明

bool tcpwrap_check ( string $daemon , string $address [, string $user [, bool $nodns = false ]] )

This function consults the /etc/hosts.allow and /etc/hosts.deny files to check if access to service daemon should be granted or denied for a client.

参数

daemon

The service name.

address

The client remote address. Can be either an IP address or a domain name.

user

An optional user name.

nodns

If address looks like domain name then DNS is used to resolve it to IP address; set nodns to TRUE to avoid this.

返回值

This function returns TRUE if access should be granted, FALSE otherwise.

范例

Example #1 Deny all connections from localhost

If your /etc/hosts.deny file contains:

php: 127.0.0.1

And your code looks like:

<?php
if (!tcpwrap_check('php', $_SERVER['REMOTE_ADDR'])) {
  die('You are not welcome here');
}
?>

参见

For more details please consult hosts_access(3) man page.

TCP 函数
Varnish
TCP 函数


Varnish

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Basic VarnishAdmin usage
    • Basic VarnishStat usage
    • Basic VarnishLog usage
  • VarnishAdmin — The VarnishAdmin class
    • VarnishAdmin::auth — Authenticate on a varnish instance
    • VarnishAdmin::ban — Ban URLs using a VCL expression
    • VarnishAdmin::banUrl — Ban an URL using a VCL expression
    • VarnishAdmin::clearPanic — Clear varnish instance panic messages
    • VarnishAdmin::connect — Connect to a varnish instance administration interface
    • VarnishAdmin::__construct — VarnishAdmin constructor
    • VarnishAdmin::disconnect — Disconnect from a varnish instance administration interface
    • VarnishAdmin::getPanic — Get the last panic message on a varnish instance
    • VarnishAdmin::getParams — Fetch current varnish instance configuration parameters
    • VarnishAdmin::isRunning — Check if the varnish slave process is currently running
    • VarnishAdmin::setCompat — Set the class compat configuration param
    • VarnishAdmin::setHost — Set the class host configuration param
    • VarnishAdmin::setIdent — Set the class ident configuration param
    • VarnishAdmin::setParam — Set configuration param on the current varnish instance
    • VarnishAdmin::setPort — Set the class port configuration param
    • VarnishAdmin::setSecret — Set the class secret configuration param
    • VarnishAdmin::setTimeout — Set the class timeout configuration param
    • VarnishAdmin::start — Start varnish worker process
    • VarnishAdmin::stop — Stop varnish worker process
  • VarnishStat — The VarnishStat class
    • VarnishStat::__construct — VarnishStat constructor
    • VarnishStat::getSnapshot — Get the current varnish instance statistics snapshot
  • VarnishLog — The VarnishLog class
    • VarnishLog::__construct — Varnishlog constructor
    • VarnishLog::getLine — Get next log line
    • VarnishLog::getTagName — Get the log tag string representation by its index
tcpwrap_check
简介
其它服务


简介

Varnish Cache is an open source, state of the art web application accelerator. The extension makes it possible to interact with a running varnish instance through TCP socket or shared memory.

Varnish
安装／配置
Varnish


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Varnish


需求

To use this extension, you will need Varnish Cache of the version >=3.0 installed, available on the » Varnish Cache homepage

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/varnish.

A DLL for this PECL extension is available under » http://windows.php.net/downloads/pecl/releases/varnish/.

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

VARNISH_STATUS_SYNTAX (integer)
VARNISH_STATUS_UNKNOWN (integer)
VARNISH_STATUS_UNIMPL (integer)
VARNISH_STATUS_TOOFEW (integer)
VARNISH_STATUS_TOOMANY (integer)
VARNISH_STATUS_PARAM (integer)
VARNISH_STATUS_AUTH (integer)
VARNISH_STATUS_OK (integer)
VARNISH_STATUS_CANT (integer)
VARNISH_STATUS_COMMS (integer)
VARNISH_STATUS_CLOSE (integer)
VARNISH_CONFIG_IDENT (string)
VARNISH_CONFIG_HOST (string)
VARNISH_CONFIG_PORT (string)
VARNISH_CONFIG_TIMEOUT (string)
VARNISH_CONFIG_SECRET (string)
VARNISH_CONFIG_COMPAT (string)
VARNISH_COMPAT_2 (integer)
VARNISH_COMPAT_3 (integer)

资源类型
范例
Varnish


范例

Table of Contents

  • Basic VarnishAdmin usage
  • Basic VarnishStat usage
  • Basic VarnishLog usage
预定义常量
Basic VarnishAdmin usage
Varnish


Basic VarnishAdmin usage

The example illustrates a simple usage of the ban functionality

Example #1 Ban an URL

<?php

$args = array(
    VARNISH_CONFIG_HOST    => "::1",
    VARNISH_CONFIG_PORT    => 6082,
    VARNISH_CONFIG_SECRET  => "5174826b-8595-4958-aa7a-0609632ad7ca",
    VARNISH_CONFIG_TIMEOUT => 300,
);

$va = new VarnishAdmin($args);

try {
    if(!$va->connect()) {
        throw new VarnishException("Connection failed\n");
    }
} catch (VarnishException $e) {
    echo $e->getMessage();
    exit(3);
}

try {
    if(!$va->auth()) {
        throw new VarnishException("Auth failed\n");
    }
} catch (VarnishException $e) {
    echo $e->getMessage();
    exit(3);
}

try {
    $status = $va->ban('req.url ~ "^/$"');
    if (VARNISH_STATUS_OK != $status) {
        throw new VarnishException("Ban method returned $status status\n");
    }
} catch (VarnishException $e) {
    echo $e->getMessage();
    exit(3);
}

exit(0);

?>
范例
Basic VarnishStat usage
范例


Basic VarnishStat usage

The example illustrates getting varnish statistic snapshot from shared memory

Example #1 Get statistic snapshot

<?php

$vs = new VarnishStat;

try {
    $data = $vs->getSnapshot();
} catch (VarnishException $e) {
    echo $e->getMessage();
    exit(3);
}

exit(0);
?>
Basic VarnishAdmin usage
Basic VarnishLog usage
范例


Basic VarnishLog usage

The example illustrates reading varnish log lines from shared memory

Example #1 Read varnish shared memory log

<?php

$vl = new VarnishLog;
while(1) {
    $line = $vl->getLine();
    printf("%s %d %s", VarnishLog::getTagName($line['tag'], $line['id'],
    $line['data']);
}

exit(0);
?>
Basic VarnishStat usage
VarnishAdmin
范例


The VarnishAdmin class

(PECL varnish >= 0.3)

简介

类摘要

VarnishAdmin {
/* 方法 */
public bool auth ( void )
public int ban ( string $vcl_regex )
public int banUrl ( string $vcl_regex )
public int clearPanic ( void )
public bool connect ( void )
public __construct ([ array $args ] )
public bool disconnect ( void )
public string getPanic ( void )
public array getParams ( void )
public bool isRunning ( void )
public void setCompat ( int $compat )
public void setHost ( string $host )
public void setIdent ( string $ident )
public int setParam ( string $name , string|integer $value )
public void setPort ( int $port )
public void setSecret ( string $secret )
public void setTimeout ( int $timeout )
public int start ( void )
public int stop ( void )
}

Table of Contents

  • VarnishAdmin::auth — Authenticate on a varnish instance
  • VarnishAdmin::ban — Ban URLs using a VCL expression
  • VarnishAdmin::banUrl — Ban an URL using a VCL expression
  • VarnishAdmin::clearPanic — Clear varnish instance panic messages
  • VarnishAdmin::connect — Connect to a varnish instance administration interface
  • VarnishAdmin::__construct — VarnishAdmin constructor
  • VarnishAdmin::disconnect — Disconnect from a varnish instance administration interface
  • VarnishAdmin::getPanic — Get the last panic message on a varnish instance
  • VarnishAdmin::getParams — Fetch current varnish instance configuration parameters
  • VarnishAdmin::isRunning — Check if the varnish slave process is currently running
  • VarnishAdmin::setCompat — Set the class compat configuration param
  • VarnishAdmin::setHost — Set the class host configuration param
  • VarnishAdmin::setIdent — Set the class ident configuration param
  • VarnishAdmin::setParam — Set configuration param on the current varnish instance
  • VarnishAdmin::setPort — Set the class port configuration param
  • VarnishAdmin::setSecret — Set the class secret configuration param
  • VarnishAdmin::setTimeout — Set the class timeout configuration param
  • VarnishAdmin::start — Start varnish worker process
  • VarnishAdmin::stop — Stop varnish worker process
Basic VarnishLog usage
VarnishAdmin::auth
Varnish


Authenticate on a varnish instance

VarnishAdmin
VarnishAdmin::ban
VarnishAdmin
PHP Manual

VarnishAdmin::auth

(PECL varnish >= 0.3)

VarnishAdmin::auth — Authenticate on a varnish instance

说明

public bool VarnishAdmin::auth ( void )

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

VarnishAdmin
VarnishAdmin::ban
VarnishAdmin


Ban URLs using a VCL expression

VarnishAdmin::auth
VarnishAdmin::banUrl
VarnishAdmin
PHP Manual

VarnishAdmin::ban

(PECL varnish >= 0.3)

VarnishAdmin::ban — Ban URLs using a VCL expression

说明

public int VarnishAdmin::ban ( string $vcl_regex )

参数

vcl_regex

Varnish VCL expression. It's based on the varnish ban command.

返回值

Returns the varnish command status.

VarnishAdmin::auth
VarnishAdmin::banUrl
VarnishAdmin


Ban an URL using a VCL expression

VarnishAdmin::ban
VarnishAdmin::clearPanic
VarnishAdmin
PHP Manual

VarnishAdmin::banUrl

(PECL varnish >= 0.3)

VarnishAdmin::banUrl — Ban an URL using a VCL expression

说明

public int VarnishAdmin::banUrl ( string $vcl_regex )

参数

vcl_regex

URL regular expression in PCRE compatible syntax. It's based on the ban.url varnish command.

返回值

Returns the varnish command status.

VarnishAdmin::ban
VarnishAdmin::clearPanic
VarnishAdmin


Clear varnish instance panic messages

VarnishAdmin::banUrl
VarnishAdmin::connect
VarnishAdmin
PHP Manual

VarnishAdmin::clearPanic

(PECL varnish >= 0.4)

VarnishAdmin::clearPanic — Clear varnish instance panic messages

说明

public int VarnishAdmin::clearPanic ( void )

参数

此函数没有参数。

返回值

Returns the varnish command status.

VarnishAdmin::banUrl
VarnishAdmin::connect
VarnishAdmin


Connect to a varnish instance administration interface

VarnishAdmin::clearPanic
VarnishAdmin::__construct
VarnishAdmin
PHP Manual

VarnishAdmin::connect

(PECL varnish >= 0.3)

VarnishAdmin::connect — Connect to a varnish instance administration interface

说明

public bool VarnishAdmin::connect ( void )

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

VarnishAdmin::clearPanic
VarnishAdmin::__construct
VarnishAdmin


VarnishAdmin constructor

VarnishAdmin::connect
VarnishAdmin::disconnect
VarnishAdmin
PHP Manual

VarnishAdmin::__construct

(PECL varnish >= 0.3)

VarnishAdmin::__construct — VarnishAdmin constructor

说明

public VarnishAdmin::__construct ([ array $args ] )

参数

args

Configuration arguments. The possible keys are:

VARNISH_CONFIG_IDENT - local varnish instance ident
VARNISH_CONFIG_HOST - varnish instance ip
VARNISH_CONFIG_PORT - varnish instance port
VARNISH_CONFIG_SECRET - varnish instance secret
VARNISH_CONFIG_TIMEOUT - connection read timeout
VARNISH_CONFIG_COMPAT - varnish major version compatibility

返回值

范例

Example #1 VarnishAdmin::__construct() example

<?php
    $args = array(
        VARNISH_CONFIG_HOST => "::1",
        VARNISH_CONFIG_PORT => 6082,
        VARNISH_CONFIG_SECRET => "5174826b-8595-4958-aa7a-0609632ad7ca",
        VARNISH_CONFIG_TIMEOUT => 300,
    );
    $va = new VarnishAdmin($args);
?>
VarnishAdmin::connect
VarnishAdmin::disconnect
VarnishAdmin


Disconnect from a varnish instance administration interface

VarnishAdmin::__construct
VarnishAdmin::getPanic
VarnishAdmin
PHP Manual

VarnishAdmin::disconnect

(PECL varnish >= 1.0.0)

VarnishAdmin::disconnect — Disconnect from a varnish instance administration interface

说明

public bool VarnishAdmin::disconnect ( void )

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

VarnishAdmin::__construct
VarnishAdmin::getPanic
VarnishAdmin


Get the last panic message on a varnish instance

VarnishAdmin::disconnect
VarnishAdmin::getParams
VarnishAdmin
PHP Manual

VarnishAdmin::getPanic

(PECL varnish >= 0.4)

VarnishAdmin::getPanic — Get the last panic message on a varnish instance

说明

public string VarnishAdmin::getPanic ( void )

参数

此函数没有参数。

返回值

Returns the last panic message on the current varnish instance.

VarnishAdmin::disconnect
VarnishAdmin::getParams
VarnishAdmin


Fetch current varnish instance configuration parameters

VarnishAdmin::getPanic
VarnishAdmin::isRunning
VarnishAdmin
PHP Manual

VarnishAdmin::getParams

(PECL varnish >= 0.4)

VarnishAdmin::getParams — Fetch current varnish instance configuration parameters

说明

public array VarnishAdmin::getParams ( void )

参数

此函数没有参数。

返回值

Returns an array with the varnish configuration parameters.

VarnishAdmin::getPanic
VarnishAdmin::isRunning
VarnishAdmin


Check if the varnish slave process is currently running

VarnishAdmin::getParams
VarnishAdmin::setCompat
VarnishAdmin
PHP Manual

VarnishAdmin::isRunning

(PECL varnish >= 0.3)

VarnishAdmin::isRunning — Check if the varnish slave process is currently running

说明

public bool VarnishAdmin::isRunning ( void )

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

VarnishAdmin::getParams
VarnishAdmin::setCompat
VarnishAdmin


Set the class compat configuration param

VarnishAdmin::isRunning
VarnishAdmin::setHost
VarnishAdmin
PHP Manual

VarnishAdmin::setCompat

(PECL varnish >= 0.9.2)

VarnishAdmin::setCompat — Set the class compat configuration param

说明

public void VarnishAdmin::setCompat ( int $compat )

参数

compat

Varnish compatibility option.

返回值

VarnishAdmin::isRunning
VarnishAdmin::setHost
VarnishAdmin


Set the class host configuration param

VarnishAdmin::setCompat
VarnishAdmin::setIdent
VarnishAdmin
PHP Manual

VarnishAdmin::setHost

(PECL varnish >= 0.8)

VarnishAdmin::setHost — Set the class host configuration param

说明

public void VarnishAdmin::setHost ( string $host )

参数

host

Connection host configuration parameter.

返回值

VarnishAdmin::setCompat
VarnishAdmin::setIdent
VarnishAdmin


Set the class ident configuration param

VarnishAdmin::setHost
VarnishAdmin::setParam
VarnishAdmin
PHP Manual

VarnishAdmin::setIdent

(PECL varnish >= 0.8)

VarnishAdmin::setIdent — Set the class ident configuration param

说明

public void VarnishAdmin::setIdent ( string $ident )

参数

ident

Connection ident configuration parameter.

返回值

VarnishAdmin::setHost
VarnishAdmin::setParam
VarnishAdmin


Set configuration param on the current varnish instance

VarnishAdmin::setIdent
VarnishAdmin::setPort
VarnishAdmin
PHP Manual

VarnishAdmin::setParam

(PECL varnish >= 0.4)

VarnishAdmin::setParam — Set configuration param on the current varnish instance

说明

public int VarnishAdmin::setParam ( string $name , string|integer $value )

参数

name

Varnish configuration param name.

value

Varnish configuration param value.

返回值

Returns the varnish command status.

VarnishAdmin::setIdent
VarnishAdmin::setPort
VarnishAdmin


Set the class port configuration param

VarnishAdmin::setParam
VarnishAdmin::setSecret
VarnishAdmin
PHP Manual

VarnishAdmin::setPort

(PECL varnish >= 0.8)

VarnishAdmin::setPort — Set the class port configuration param

说明

public void VarnishAdmin::setPort ( int $port )

参数

port

Connection port configuration parameter.

返回值

VarnishAdmin::setParam
VarnishAdmin::setSecret
VarnishAdmin


Set the class secret configuration param

VarnishAdmin::setPort
VarnishAdmin::setTimeout
VarnishAdmin
PHP Manual

VarnishAdmin::setSecret

(PECL varnish >= 0.8)

VarnishAdmin::setSecret — Set the class secret configuration param

说明

public void VarnishAdmin::setSecret ( string $secret )

参数

secret

Connection secret configuration parameter.

返回值

VarnishAdmin::setPort
VarnishAdmin::setTimeout
VarnishAdmin


Set the class timeout configuration param

VarnishAdmin::setSecret
VarnishAdmin::start
VarnishAdmin
PHP Manual

VarnishAdmin::setTimeout

(PECL varnish >= 0.8)

VarnishAdmin::setTimeout — Set the class timeout configuration param

说明

public void VarnishAdmin::setTimeout ( int $timeout )

参数

timeout

Connection timeout configuration parameter.

返回值

VarnishAdmin::setSecret
VarnishAdmin::start
VarnishAdmin


Start varnish worker process

VarnishAdmin::setTimeout
VarnishAdmin::stop
VarnishAdmin
PHP Manual

VarnishAdmin::start

(PECL varnish >= 0.3)

VarnishAdmin::start — Start varnish worker process

说明

public int VarnishAdmin::start ( void )

参数

此函数没有参数。

返回值

Returns the varnish command status.

VarnishAdmin::setTimeout
VarnishAdmin::stop
VarnishAdmin


Stop varnish worker process

VarnishAdmin::start
VarnishStat
VarnishAdmin
PHP Manual

VarnishAdmin::stop

(PECL varnish >= 0.3)

VarnishAdmin::stop — Stop varnish worker process

说明

public int VarnishAdmin::stop ( void )

参数

此函数没有参数。

返回值

Returns the varnish command status.

VarnishAdmin::start
VarnishStat
VarnishAdmin


The VarnishStat class

(PECL varnish >= 0.3)

简介

类摘要

VarnishStat {
/* 方法 */
public __construct ([ array $args ] )
public array getSnapshot ( void )
}

Table of Contents

  • VarnishStat::__construct — VarnishStat constructor
  • VarnishStat::getSnapshot — Get the current varnish instance statistics snapshot
VarnishAdmin::stop
VarnishStat::__construct
Varnish


VarnishStat constructor

VarnishStat
VarnishStat::getSnapshot
VarnishStat
PHP Manual

VarnishStat::__construct

(PECL varnish >= 0.3)

VarnishStat::__construct — VarnishStat constructor

说明

public VarnishStat::__construct ([ array $args ] )

参数

args

Configuration arguments. The possible keys are:

VARNISH_CONFIG_IDENT - local varnish instance ident path

返回值

VarnishStat
VarnishStat::getSnapshot
VarnishStat


Get the current varnish instance statistics snapshot

VarnishStat::__construct
VarnishLog
VarnishStat
PHP Manual

VarnishStat::getSnapshot

(PECL varnish >= 0.3)

VarnishStat::getSnapshot — Get the current varnish instance statistics snapshot

说明

public array VarnishStat::getSnapshot ( void )

参数

此函数没有参数。

返回值

Array with the varnish statistic snapshot. The array keys are identical to that in the varnishstat tool.

VarnishStat::__construct
VarnishLog
VarnishStat


The VarnishLog class

(PECL varnish >= 0.6)

简介

类摘要

VarnishLog {
/* Constants */
const integer TAG_Debug = 0 ;
const integer TAG_Error = 1 ;
const integer TAG_CLI = 2 ;
const integer TAG_StatSess = 3 ;
const integer TAG_ReqEnd = 4 ;
const integer TAG_SessionOpen = 5 ;
const integer TAG_SessionClose = 6 ;
const integer TAG_BackendOpen = 7 ;
const integer TAG_BackendXID = 8 ;
const integer TAG_BackendReuse = 9 ;
const integer TAG_BackendClose = 10 ;
const integer TAG_HttpGarbage = 11 ;
const integer TAG_Backend = 12 ;
const integer TAG_Length = 13 ;
const integer TAG_FetchError = 14 ;
const integer TAG_RxRequest = 15 ;
const integer TAG_RxResponse = 16 ;
const integer TAG_RxStatus = 17 ;
const integer TAG_RxURL = 18 ;
const integer TAG_RxProtocol = 19 ;
const integer TAG_RxHeader = 20 ;
const integer TAG_TxRequest = 21 ;
const integer TAG_TxResponse = 22 ;
const integer TAG_TxStatus = 23 ;
const integer TAG_TxURL = 24 ;
const integer TAG_TxProtocol = 25 ;
const integer TAG_TxHeader = 26 ;
const integer TAG_ObjRequest = 27 ;
const integer TAG_ObjResponse = 28 ;
const integer TAG_ObjStatus = 29 ;
const integer TAG_ObjURL = 30 ;
const integer TAG_ObjProtocol = 31 ;
const integer TAG_ObjHeader = 32 ;
const integer TAG_LostHeader = 33 ;
const integer TAG_TTL = 34 ;
const integer TAG_Fetch_Body = 35 ;
const integer TAG_VCL_acl = 36 ;
const integer TAG_VCL_call = 37 ;
const integer TAG_VCL_trace = 38 ;
const integer TAG_VCL_return = 39 ;
const integer TAG_VCL_error = 40 ;
const integer TAG_ReqStart = 41 ;
const integer TAG_Hit = 42 ;
const integer TAG_HitPass = 43 ;
const integer TAG_ExpBan = 44 ;
const integer TAG_ExpKill = 45 ;
const integer TAG_WorkThread = 46 ;
const integer TAG_ESI_xmlerror = 47 ;
const integer TAG_Hash = 48 ;
const integer TAG_Backend_health = 49 ;
const integer TAG_VCL_Log = 50 ;
const integer TAG_Gzip = 51 ;
/* 方法 */
public __construct ([ array $args ] )
public array getLine ( void )
public static string getTagName ( int $index )
}

预定义常量

VarnishLog::TAG_Debug

VarnishLog::TAG_Error

VarnishLog::TAG_CLI

VarnishLog::TAG_StatSess

VarnishLog::TAG_ReqEnd

VarnishLog::TAG_SessionOpen

VarnishLog::TAG_SessionClose

VarnishLog::TAG_BackendOpen

VarnishLog::TAG_BackendXID

VarnishLog::TAG_BackendReuse

VarnishLog::TAG_BackendClose

VarnishLog::TAG_HttpGarbage

VarnishLog::TAG_Backend

VarnishLog::TAG_Length

VarnishLog::TAG_FetchError

VarnishLog::TAG_RxRequest

VarnishLog::TAG_RxResponse

VarnishLog::TAG_RxStatus

VarnishLog::TAG_RxURL

VarnishLog::TAG_RxProtocol

VarnishLog::TAG_RxHeader

VarnishLog::TAG_TxRequest

VarnishLog::TAG_TxResponse

VarnishLog::TAG_TxStatus

VarnishLog::TAG_TxURL

VarnishLog::TAG_TxProtocol

VarnishLog::TAG_TxHeader

VarnishLog::TAG_ObjRequest

VarnishLog::TAG_ObjResponse

VarnishLog::TAG_ObjStatus

VarnishLog::TAG_ObjURL

VarnishLog::TAG_ObjProtocol

VarnishLog::TAG_ObjHeader

VarnishLog::TAG_LostHeader

VarnishLog::TAG_TTL

VarnishLog::TAG_Fetch_Body

VarnishLog::TAG_VCL_acl

VarnishLog::TAG_VCL_call

VarnishLog::TAG_VCL_trace

VarnishLog::TAG_VCL_return

VarnishLog::TAG_VCL_error

VarnishLog::TAG_ReqStart

VarnishLog::TAG_Hit

VarnishLog::TAG_HitPass

VarnishLog::TAG_ExpBan

VarnishLog::TAG_ExpKill

VarnishLog::TAG_WorkThread

VarnishLog::TAG_ESI_xmlerror

VarnishLog::TAG_Hash

VarnishLog::TAG_Backend_health

VarnishLog::TAG_VCL_Log

VarnishLog::TAG_Gzip

Table of Contents

  • VarnishLog::__construct — Varnishlog constructor
  • VarnishLog::getLine — Get next log line
  • VarnishLog::getTagName — Get the log tag string representation by its index
VarnishStat::getSnapshot
VarnishLog::__construct
Varnish


Varnishlog constructor

VarnishLog
VarnishLog::getLine
VarnishLog
PHP Manual

VarnishLog::__construct

(PECL varnish >= 0.6)

VarnishLog::__construct — Varnishlog constructor

说明

public VarnishLog::__construct ([ array $args ] )

参数

args

Configuration arguments. The possible keys are:

VARNISH_CONFIG_IDENT - local varnish instance ident path

返回值

VarnishLog
VarnishLog::getLine
VarnishLog


Get next log line

VarnishLog::__construct
VarnishLog::getTagName
VarnishLog
PHP Manual

VarnishLog::getLine

(PECL varnish >= 0.6)

VarnishLog::getLine — Get next log line

说明

public array VarnishLog::getLine ( void )

参数

此函数没有参数。

返回值

Returns an array with the log line data.

VarnishLog::__construct
VarnishLog::getTagName
VarnishLog


Get the log tag string representation by its index

VarnishLog::getLine
YAZ
VarnishLog
PHP Manual

VarnishLog::getTagName

(PECL varnish >= 0.6)

VarnishLog::getTagName — Get the log tag string representation by its index

说明

public static string VarnishLog::getTagName ( int $index )

参数

index

Log tag index.

返回值

Returns the log tag name as string.

VarnishLog::getLine
YAZ
VarnishLog


YAZ

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • YAZ 函数
    • yaz_addinfo — Returns additional error information
    • yaz_ccl_conf — Configure CCL parser
    • yaz_ccl_parse — Invoke CCL Parser
    • yaz_close — Close YAZ connection
    • yaz_connect — Prepares for a connection to a Z39.50 server
    • yaz_database — Specifies the databases within a session
    • yaz_element — Specifies Element-Set Name for retrieval
    • yaz_errno — Returns error number
    • yaz_error — Returns error description
    • yaz_es_result — Inspects Extended Services Result
    • yaz_es — Prepares for an Extended Service Request
    • yaz_get_option — Returns value of option for connection
    • yaz_hits — Returns number of hits for last search
    • yaz_itemorder — Prepares for Z39.50 Item Order with an ILL-Request package
    • yaz_present — Prepares for retrieval (Z39.50 present)
    • yaz_range — Specifies a range of records to retrieve
    • yaz_record — Returns a record
    • yaz_scan_result — Returns Scan Response result
    • yaz_scan — Prepares for a scan
    • yaz_schema — Specifies schema for retrieval
    • yaz_search — Prepares for a search
    • yaz_set_option — Sets one or more options for connection
    • yaz_sort — Sets sorting criteria
    • yaz_syntax — Specifies the preferred record syntax for retrieval
    • yaz_wait — Wait for Z39.50 requests to complete
VarnishLog::getTagName
简介
其它服务


简介

This extension offers a PHP interface to the YAZ toolkit that implements the » Z39.50 Protocol for Information Retrieval. With this extension you can easily implement a Z39.50 origin (client) that searches or scans Z39.50 targets (servers) in parallel.

The module hides most of the complexity of Z39.50 so it should be fairly easy to use. It supports persistent stateless connections very similar to those offered by the various RDB APIs that are available for PHP. This means that sessions are stateless but shared among users, thus saving the connect and initialize phase steps in most cases.

YAZ is available at » http://www.indexdata.dk/yaz/. You can find news information, example scripts, etc. for this extension at » http://www.indexdata.dk/phpyaz/.

Note:

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.0.0.

YAZ
安装／配置
YAZ


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
YAZ


需求

Obtain YAZ (ANSI/NISO Z39.50 support) and install it. YAZ can be fetched in source or in various prebuilt packages from the » YAZ archive. Systems such as Debian GNU/Linux, Suse Linux, FreeBSD also has YAZ as part of their distribution.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/yaz

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

Note: Information specific to Windows users

php_yaz.dll depends on yaz.dll. The yaz.dll is part of the Win32 ZIP from the PHP site. It is also part of the Windows YAZ install available from the » YAZ WIN32 area.

On windows, don't forget to add the PHP directory to the PATH, so that the yaz.dll file can be found by the system.

Warning

IMAP，recode，YAZ 和 Cyrus 扩展不能同时使用，因为它们共享了相同 的内部符号。注意：Yaz 2.0 及以上版本不存在此问题。

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
范例
YAZ


范例

PHP/YAZ keeps track of connections with targets (Z-Associations). A resource represents a connection to a target.

The script below demonstrates the parallel searching feature of the API. When invoked with no arguments it prints a query form; else (arguments are supplied) it searches the targets as given in array host.

Example #1 Parallel searching using Yaz

<?php
$host=$_REQUEST[host];
$query=$_REQUEST[query];
$num_hosts = count($host);
if (empty($query) || count($host) == 0) {
    echo '<form method="get">
    <input type="checkbox"
    name="host[]" value="bagel.indexdata.dk/gils" />
        GILS test
    <input type="checkbox"
    name="host[]" value="localhost:9999/Default" />
        local test
    <input type="checkbox" checked="checked"
    name="host[]" value="z3950.loc.gov:7090/voyager" />
        Library of Congress
    <br />
    RPN Query:
    <input type="text" size="30" name="query" />
    <input type="submit" name="action" value="Search" />
    </form>
    ';
} else {
    echo 'You searched for ' . htmlspecialchars($query) . '<br />';
    for ($i = 0; $i < $num_hosts; $i++) {
        $id[] = yaz_connect($host[$i]);
        yaz_syntax($id[$i], "usmarc");
        yaz_range($id[$i], 1, 10);
        yaz_search($id[$i], "rpn", $query);
    }
    yaz_wait();
    for ($i = 0; $i < $num_hosts; $i++) {
        echo '<hr />' . $host[$i] . ':';
        $error = yaz_error($id[$i]);
        if (!empty($error)) {
            echo "Error: $error";
        } else {
            $hits = yaz_hits($id[$i]);
            echo "Result Count $hits";
        }
        echo '<dl>';
        for ($p = 1; $p <= 10; $p++) {
            $rec = yaz_record($id[$i], $p, "string");
            if (empty($rec)) continue;
            echo "<dt><b>$p</b></dt><dd>";
            echo nl2br($rec);
            echo "</dd>";
        }
        echo '</dl>';
    }
}
?>

预定义常量
YAZ 函数
YAZ


YAZ 函数

Table of Contents

  • yaz_addinfo — Returns additional error information
  • yaz_ccl_conf — Configure CCL parser
  • yaz_ccl_parse — Invoke CCL Parser
  • yaz_close — Close YAZ connection
  • yaz_connect — Prepares for a connection to a Z39.50 server
  • yaz_database — Specifies the databases within a session
  • yaz_element — Specifies Element-Set Name for retrieval
  • yaz_errno — Returns error number
  • yaz_error — Returns error description
  • yaz_es_result — Inspects Extended Services Result
  • yaz_es — Prepares for an Extended Service Request
  • yaz_get_option — Returns value of option for connection
  • yaz_hits — Returns number of hits for last search
  • yaz_itemorder — Prepares for Z39.50 Item Order with an ILL-Request package
  • yaz_present — Prepares for retrieval (Z39.50 present)
  • yaz_range — Specifies a range of records to retrieve
  • yaz_record — Returns a record
  • yaz_scan_result — Returns Scan Response result
  • yaz_scan — Prepares for a scan
  • yaz_schema — Specifies schema for retrieval
  • yaz_search — Prepares for a search
  • yaz_set_option — Sets one or more options for connection
  • yaz_sort — Sets sorting criteria
  • yaz_syntax — Specifies the preferred record syntax for retrieval
  • yaz_wait — Wait for Z39.50 requests to complete
范例
yaz_addinfo
YAZ


Returns additional error information

YAZ 函数
yaz_ccl_conf
YAZ 函数
PHP Manual

yaz_addinfo

(PHP 4 >= 4.0.1, PECL yaz >= 0.9.0)

yaz_addinfo — Returns additional error information

说明

string yaz_addinfo ( resource $id )

Returns additional error information for the last request on the server.

With some servers, this function may return the same string as yaz_error().

参数

id

The connection resource returned by yaz_connect().

返回值

A string containing additional error information or an empty string if the last operation was successful or if no additional information was provided by the server.

参见

  • yaz_error() - Returns error description
  • yaz_errno() - Returns error number

YAZ 函数
yaz_ccl_conf
YAZ 函数


Configure CCL parser

yaz_addinfo
yaz_ccl_parse
YAZ 函数
PHP Manual

yaz_ccl_conf

(PHP 4 >= 4.0.5, PECL yaz >= 0.9.0)

yaz_ccl_conf — Configure CCL parser

说明

void yaz_ccl_conf ( resource $id , array $config )

This function configures the CCL query parser for a server with definitions of access points (CCL qualifiers) and their mapping to RPN.

To map a specific CCL query to RPN afterwards call the yaz_ccl_parse() function.

参数

id

The connection resource returned by yaz_connect().

config

An array of configuration. Each key of the array is the name of a CCL field and the corresponding value holds a string that specifies a mapping to RPN.

The mapping is a sequence of attribute-type, attribute-value pairs. Attribute-type and attribute-value is separated by an equal sign (=). Each pair is separated by white space.

Additional information can be found on the » CCL page.

返回值

没有返回值。

范例

In the example below, the CCL parser is configured to support three CCL fields: ti, au and isbn. Each field is mapped to their BIB-1 equivalent. It is assumed that variable $id is the connection ID.

Example #1 CCL configuration

<?php
$fields = array(
  "ti" => "1=4",
  "au"   => "1=1",
  "isbn" => "1=7"
);
yaz_ccl_conf($id, $fields);
?>

参见

  • yaz_ccl_parse() - Invoke CCL Parser

yaz_addinfo
yaz_ccl_parse
YAZ 函数


Invoke CCL Parser

yaz_ccl_conf
yaz_close
YAZ 函数
PHP Manual

yaz_ccl_parse

(PHP 4 >= 4.0.5, PECL yaz >= 0.9.0)

yaz_ccl_parse — Invoke CCL Parser

说明

bool yaz_ccl_parse ( resource $id , string $query , array &$result )

This function invokes a CCL parser. It converts a given CCL FIND query to an RPN query which may be passed to the yaz_search() function to perform a search.

To define a set of valid CCL fields call yaz_ccl_conf() prior to this function.

参数

id

The connection resource returned by yaz_connect().

query

The CCL FIND query.

result

If the function was executed successfully, this will be an array containing the valid RPN query under the key rpn.

Upon failure, three indexes are set in this array to indicate the cause of failure:

  • errorcode - the CCL error code (integer)

  • errorstring - the CCL error string

  • errorpos - approximate position in query of failure (integer is character position)

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 CCL Parsing

We will try to search using CCL. In the example below, $ccl is a CCL query.

<?php

yaz_ccl_conf($id, $fields);  // see example for yaz_ccl_conf
if (!yaz_ccl_parse($id, $ccl, &$cclresult)) {
    echo 'Error: ' . $cclresult["errorstring"];
} else {
    $rpn = $cclresult["rpn"];
    yaz_search($id, "rpn", $rpn);
}
?>
yaz_ccl_conf
yaz_close
YAZ 函数


Close YAZ connection

yaz_ccl_parse
yaz_connect
YAZ 函数
PHP Manual

yaz_close

(PHP 4 >= 4.0.1, PECL yaz >= 0.9.0)

yaz_close — Close YAZ connection

说明

bool yaz_close ( resource $id )

Closes the connection given by parameter id.

Note:

This function will only close a non-persistent connection opened by setting the persistent option to FALSE with yaz_connect().

参数

id

The connection resource returned by yaz_connect().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • yaz_connect() - Prepares for a connection to a Z39.50 server

yaz_ccl_parse
yaz_connect
YAZ 函数


Prepares for a connection to a Z39.50 server

yaz_close
yaz_database
YAZ 函数
PHP Manual

yaz_connect

(PHP 4 >= 4.0.1, PECL yaz >= 0.9.0)

yaz_connect — Prepares for a connection to a Z39.50 server

说明

mixed yaz_connect ( string $zurl [, mixed $options ] )

This function returns a connection resource on success, zero on failure.

yaz_connect() prepares for a connection to a Z39.50 server. This function is non-blocking and does not attempt to establish a connection - it merely prepares a connect to be performed later when yaz_wait() is called.

Note:

The » YAZ proxy is a freely available Z39.50 proxy.

参数

zurl

A string that takes the form host[:port][/database]. If port is omitted, port 210 is used. If database is omitted Default is used.

options

If given as a string, it is treated as the Z39.50 V2 authentication string (OpenAuth).

If given as an array, the contents of the array serves as options.

user

Username for authentication.

group

Group for authentication.

password

Password for authentication.

cookie

Cookie for session (YAZ proxy).

proxy

Proxy for connection (YAZ proxy).

persistent

A boolean. If TRUE the connection is persistent; If FALSE the connection is not persistent. By default connections are persistent.

Note:

If you open a persistent connection, you won't be able to close it later with yaz_close().

piggyback

A boolean. If TRUE piggyback is enabled for searches; If FALSE piggyback is disabled. By default piggyback is enabled.

Enabling piggyback is more efficient and usually saves a network-round-trip for first time fetches of records. However, a few Z39.50 servers do not support piggyback or they ignore element set names. For those, piggyback should be disabled.

charset

A string that specifies character set to be used in Z39.50 language and character set negotiation. Use strings such as: ISO-8859-1, UTF-8, UTF-16.

Most Z39.50 servers do not support this feature (and thus, this is ignored). Many servers use the ISO-8859-1 encoding for queries and messages. MARC21/USMARC records are not affected by this setting.

preferredMessageSize

An integer that specifies the maximum byte size of all records to be returned by a target during retrieval. See the » Z39.50 standard for more information.

Note:

This option is supported in PECL YAZ 1.0.5 or later.

maximumRecordSize

An integer that specifies the maximum byte size of a single record to be returned by a target during retrieval. This entity is referred to as Exceptional-record-size in the » Z39.50 standard.

Note:

This option is supported in PECL YAZ 1.0.5 or later.

返回值

A connection resource on success, FALSE on error.

更新日志

版本 | 说明
4.1.0 | The parameter options was added.

参见

  • yaz_close() - Close YAZ connection

yaz_close
yaz_database
YAZ 函数


Specifies the databases within a session

yaz_connect
yaz_element
YAZ 函数
PHP Manual

yaz_database

(PHP 4 >= 4.0.6, PECL yaz >= 0.9.0)

yaz_database — Specifies the databases within a session

说明

bool yaz_database ( resource $id , string $databases )

This function allows you to change databases within a session by specifying one or more databases to be used in search, retrieval, etc. - overriding databases specified in call to yaz_connect().

参数

id

The connection resource returned by yaz_connect().

databases

A string containing one or more databases. Multiple databases are separated by a plus sign +.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

yaz_connect
yaz_element
YAZ 函数


Specifies Element-Set Name for retrieval

yaz_database
yaz_errno
YAZ 函数
PHP Manual

yaz_element

(PHP 4 >= 4.0.1, PECL yaz >= 0.9.0)

yaz_element — Specifies Element-Set Name for retrieval

说明

bool yaz_element ( resource $id , string $elementset )

This function sets the element set name for retrieval.

Call this function before yaz_search() or yaz_present() to specify the element set name for records to be retrieved.

Note:

If this function appears to have no effect, see the description of the piggybacking option in yaz_connect().

参数

id

The connection resource returned by yaz_connect().

elementset

Most servers support F (for full records) and B (for brief records).

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

yaz_database
yaz_errno
YAZ 函数


Returns error number

yaz_element
yaz_error
YAZ 函数
PHP Manual

yaz_errno

(PHP 4 >= 4.0.1, PECL yaz >= 0.9.0)

yaz_errno — Returns error number

说明

int yaz_errno ( resource $id )

Returns an error number for the server (last request) identified by id.

yaz_errno() should be called after network activity for each server - (after yaz_wait() returns) to determine the success or failure of the last operation (e.g. search).

参数

id

The connection resource returned by yaz_connect().

返回值

Returns an error code. The error code is either a Z39.50 diagnostic code (usually a Bib-1 diagnostic) or a client side error code which is generated by PHP/YAZ itself, such as "Connect failed", "Init Rejected", etc.

参见

  • yaz_error() - Returns error description
  • yaz_addinfo() - Returns additional error information

yaz_element
yaz_error
YAZ 函数


Returns error description

yaz_errno
yaz_es_result
YAZ 函数
PHP Manual

yaz_error

(PHP 4 >= 4.0.1, PECL yaz >= 0.9.0)

yaz_error — Returns error description

说明

string yaz_error ( resource $id )

yaz_error() returns an English text message corresponding to the last error number as returned by yaz_errno().

参数

id

The connection resource returned by yaz_connect().

返回值

Returns an error text message for server (last request), identified by parameter id. An empty string is returned if the last operation was successful.

参见

  • yaz_errno() - Returns error number
  • yaz_addinfo() - Returns additional error information

yaz_errno
yaz_es_result
YAZ 函数


Inspects Extended Services Result

yaz_error
yaz_es
YAZ 函数
PHP Manual

yaz_es_result

(PHP 4 >= 4.2.0, PECL yaz >= 0.9.0)

yaz_es_result — Inspects Extended Services Result

说明

array yaz_es_result ( resource $id )

This function inspects the last returned Extended Service result from a server. An Extended Service is initiated by either yaz_item_order() or yaz_es().

参数

id

The connection resource returned by yaz_connect().

返回值

Returns array with element targetReference for the reference for the extended service operation (generated and returned from the server).

参见

  • yaz_es() - Prepares for an Extended Service Request

yaz_error
yaz_es
YAZ 函数


Prepares for an Extended Service Request

yaz_es_result
yaz_get_option
YAZ 函数
PHP Manual

yaz_es

(PECL yaz >= 0.9.0)

yaz_es — Prepares for an Extended Service Request

说明

void yaz_es ( resource $id , string $type , array $args )

This function prepares for an Extended Service Request. Extended Services is family of various Z39.50 facilities, such as Record Update, Item Order, Database administration etc.

Note:

Many Z39.50 Servers do not support Extended Services.

The yaz_es() creates an Extended Service Request packages and puts it into a queue of operations. Use yaz_wait() to send the request(s) to the server. After completion of yaz_wait() the result of the Extended Service operation should be expected with a call to yaz_es_result().

参数

id

The connection resource returned by yaz_connect().

type

A string which represents the type of the Extended Service: itemorder (Item Order), create (Create Database), drop (Drop Database), commit (Commit Operation), update (Update Record), xmlupdate (XML Update). Each type is specified in the following section.

args

An array with extended service options plus package specific options. The options are identical to those offered in the C API of ZOOM C. Refer to the ZOOM » Extended Services.

返回值

没有返回值。

范例

Example #1 Record Update

<?php
$con = yaz_connect("myhost/database");
$args = array (
    "record" => "<gils><title>some title</title></gils>",
    "syntax" => "xml",
    "action" => "specialUpdate"
);
yaz_es($con, "update", $args);
yaz_wait();
$result = yaz_es_result($id);
?>

参见

  • yaz_es_result() - Inspects Extended Services Result

yaz_es_result
yaz_get_option
YAZ 函数


Returns value of option for connection

yaz_es
yaz_hits
YAZ 函数
PHP Manual

yaz_get_option

(PECL yaz >= 0.9.0)

yaz_get_option — Returns value of option for connection

说明

string yaz_get_option ( resource $id , string $name )

Returns the value of the option specified with name.

参数

id

The connection resource returned by yaz_connect().

name

The option name.

返回值

Returns the value of the specified option or an empty string if the option wasn't set.

参见

  • The description of yaz_set_option() - Sets one or more options for connection for available options

yaz_es
yaz_hits
YAZ 函数


Returns number of hits for last search

yaz_get_option
yaz_itemorder
YAZ 函数
PHP Manual

yaz_hits

(PHP 4 >= 4.0.1, PECL yaz >= 0.9.0)

yaz_hits — Returns number of hits for last search

说明

int yaz_hits ( resource $id [, array &$searchresult ] )

yaz_hits() returns the number of hits for the last search.

参数

id

The connection resource returned by yaz_connect().

searchresult

Result array for detailed search result information.

返回值

Returns the number of hits for the last search or 0 if no search was performed.

The search result array (if supplied) holds information that is returned by a Z39.50 server in the SearchResult-1 format part of a search response. The SearchResult-1 format can be used to obtain information about hit counts for various parts of the query (subquery). In particular, it is possible to obtain hit counts for the individual search terms in a query. Information for first subquery is in $array[0], second subquery in $array[1], and so forth.

searchresult members
Element | Description
id | Sub query ID2 (string)
count | Result count / hits (integer)
subquery.term | Sub query term (string)
interpretation.term | Interpretated sub query term (string)
recommendation.term | Recommended sub query term (string)

Note:

The SearchResult facility requires PECL YAZ 1.0.5 or later and YAZ 2.1.9 or later.

Note:

Very few Z39.50 implementations support the SearchResult facility.

yaz_get_option
yaz_itemorder
YAZ 函数


Prepares for Z39.50 Item Order with an ILL-Request package

yaz_hits
yaz_present
YAZ 函数
PHP Manual

yaz_itemorder

(PHP 4 >= 4.0.5, PECL yaz >= 0.9.0)

yaz_itemorder — Prepares for Z39.50 Item Order with an ILL-Request package

说明

void yaz_itemorder ( resource $id , array $args )

This function prepares for an Extended Services request using the Profile for the Use of Z39.50 Item Order Extended Service to Transport ILL (Profile/1). See » this and the » specification.

参数

id

The connection resource returned by yaz_connect().

args

Must be an associative array with information about the Item Order request to be sent. The key of the hash is the name of the corresponding ASN.1 tag path. For example, the ISBN below the Item-ID has the key item-id,ISBN.

The ILL-Request parameters are:

protocol-version-num
transaction-id,initial-requester-id,person-or-institution-symbol,person
transaction-id,initial-requester-id,person-or-institution-symbol,institution
transaction-id,initial-requester-id,name-of-person-or-institution,name-of-person
transaction-id,initial-requester-id,name-of-person-or-institution,name-of-institution
transaction-id,transaction-group-qualifier
transaction-id,transaction-qualifier
transaction-id,sub-transaction-qualifier
service-date-time,this,date
service-date-time,this,time
service-date-time,original,date
service-date-time,original,time
requester-id,person-or-institution-symbol,person
requester-id,person-or-institution-symbol,institution
requester-id,name-of-person-or-institution,name-of-person
requester-id,name-of-person-or-institution,name-of-institution
responder-id,person-or-institution-symbol,person
responder-id,person-or-institution-symbol,institution
responder-id,name-of-person-or-institution,name-of-person
responder-id,name-of-person-or-institution,name-of-institution
transaction-type
delivery-address,postal-address,name-of-person-or-institution,name-of-person
delivery-address,postal-address,name-of-person-or-institution,name-of-institution
delivery-address,postal-address,extended-postal-delivery-address
delivery-address,postal-address,street-and-number
delivery-address,postal-address,post-office-box
delivery-address,postal-address,city
delivery-address,postal-address,region
delivery-address,postal-address,country
delivery-address,postal-address,postal-code
delivery-address,electronic-address,telecom-service-identifier
delivery-address,electronic-address,telecom-service-addreess
billing-address,postal-address,name-of-person-or-institution,name-of-person
billing-address,postal-address,name-of-person-or-institution,name-of-institution
billing-address,postal-address,extended-postal-delivery-address
billing-address,postal-address,street-and-number
billing-address,postal-address,post-office-box
billing-address,postal-address,city
billing-address,postal-address,region
billing-address,postal-address,country
billing-address,postal-address,postal-code
billing-address,electronic-address,telecom-service-identifier
billing-address,electronic-address,telecom-service-addreess
ill-service-type
requester-optional-messages,can-send-RECEIVED
requester-optional-messages,can-send-RETURNED
requester-optional-messages,requester-SHIPPED
requester-optional-messages,requester-CHECKED-IN
search-type,level-of-service
search-type,need-before-date
search-type,expiry-date
search-type,expiry-flag
place-on-hold
client-id,client-name
client-id,client-status
client-id,client-identifier
item-id,item-type
item-id,call-number
item-id,author
item-id,title
item-id,sub-title
item-id,sponsoring-body
item-id,place-of-publication
item-id,publisher
item-id,series-title-number
item-id,volume-issue
item-id,edition
item-id,publication-date
item-id,publication-date-of-component
item-id,author-of-article
item-id,title-of-article
item-id,pagination
item-id,ISBN
item-id,ISSN
item-id,additional-no-letters
item-id,verification-reference-source
copyright-complicance
retry-flag
forward-flag
requester-note
forward-note

There are also a few parameters that are part of the Extended Services Request package and the ItemOrder package:

package-name
user-id
contact-name
contact-phone
contact-email
itemorder-item

返回值

没有返回值。

yaz_hits
yaz_present
YAZ 函数


Prepares for retrieval (Z39.50 present)

yaz_itemorder
yaz_range
YAZ 函数
PHP Manual

yaz_present

(PHP 4 >= 4.0.5, PECL yaz >= 0.9.0)

yaz_present — Prepares for retrieval (Z39.50 present)

说明

bool yaz_present ( resource $id )

This function prepares for retrieval of records after a successful search.

The yaz_range() function should be called prior to this function to specify the range of records to be retrieved.

参数

id

The connection resource returned by yaz_connect().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

yaz_itemorder
yaz_range
YAZ 函数


Specifies a range of records to retrieve

yaz_present
yaz_record
YAZ 函数
PHP Manual

yaz_range

(PHP 4 >= 4.0.1, PECL yaz >= 0.9.0)

yaz_range — Specifies a range of records to retrieve

说明

void yaz_range ( resource $id , int $start , int $number )

Specifies a range of records to retrieve.

This function should be called before yaz_search() or yaz_present().

参数

id

The connection resource returned by yaz_connect().

start

Specifies the position of the first record to be retrieved. The records numbers goes from 1 to yaz_hits().

number

Specifies the number of records to be retrieved.

返回值

没有返回值。

yaz_present
yaz_record
YAZ 函数


Returns a record

yaz_range
yaz_scan_result
YAZ 函数
PHP Manual

yaz_record

(PHP 4 >= 4.0.1, PECL yaz >= 0.9.0)

yaz_record — Returns a record

说明

string yaz_record ( resource $id , int $pos , string $type )

The yaz_record() function inspects a record in the current result set at the position specified by parameter pos.

参数

id

The connection resource returned by yaz_connect().

pos

The record position. Records positions in a result set are numbered 1, 2, ... $hits where $hits is the count returned by yaz_hits().

type

The type specifies the form of the returned record.

Note:

It is the application which is responsible for actually ensuring that the records are returned from the Z39.50/SRW server in the proper format. The type given only specifies a conversion to take place on the client side (in PHP/YAZ).

Besides conversion of the transfer record to a string/array, PHP/YAZ it is also possible to perform a character set conversion of the record. Especially for USMARC/MARC21 that is recommended since these are typically returned in the character set MARC-8 that is not supported by browsers, etc. To specify a conversion, add ; charset=from, to where from is the original character set of the record and to is the resulting character set (as seen by PHP).

string

The record is returned as a string for simple display. In this mode, all MARC records are converted to a line-by-line format since ISO2709 is hardly readable. XML records and SUTRS are returned in their original format. GRS-1 are returned in a (ugly) line-by-line format.

This format is suitable if records are to be displayed in a quick way - for debugging - or because it is not feasible to perform proper display.

xml

The record is returned as an XML string if possible. In this mode, all MARC records are converted to » MARCXML. XML records and SUTRS are returned in their original format. GRS-1 is not supported.

This format is similar to string except that MARC records are converted to MARCXML

This format is suitable if records are processed by an XML parser or XSLT processor afterwards.

raw

The record is returned as a string in its original form. This type is suitable for MARC, XML and SUTRS. It does not work for GRS-1.

MARC records are returned as a ISO2709 string. XML and SUTRS are returned as strings.

syntax

The syntax of the record is returned as a string, i.e. USmarc, GRS-1, XML, etc.

database

The name of database associated with record at the position is returned as a string.

array

The record is returned as an array that reflects the GRS-1 structure. This type is suitable for MARC and GRS-1. XML, SUTRS are not supported and if the actual record is XML or SUTRS an empty string will be returned.

The array returned consists of a list corresponding to each leaf/internal node of GRS-1. Each list item consists a sub list with first element path and data (if data is available).

The path which is a string holds a list of each tree component (of the structured GRS-1 record) from root to leaf. Each component is a tag type, tag value pair of the form (type, value

String tags normally has a corresponding tag type 3. MARC can also be returned as an array (they are converted to GRS-1 internally).

返回值

Returns the record at position pos or an empty string if no record exists at the given position.

If no database record exists at the given position an empty string is returned.

范例

Example #1 Array for GRS-1 record

Consider this GRS-1 record:

(4,52)Robert M. Pirsig
(4,70)
      (4,90)
            (2,7)Transworld Publishers, ltd.
This record has two nodes at root level. First element at root level is (4,52) [tag type 4, tag value 52], and has data Robert M. Pirsig. Second element at root level (4,70) has a subtree with a single element (4,90). (4,90) has yet another sub tree (2,7) with data Transworld Publishers, ltd..

If this record is present at position $p, then

<?php

$ar = yaz_record($id, $p, "array");
print_r($ar);

?>
will output:
Array
(
    [0] => Array
        (
            [0] => (4,52)
            [1] => Robert M. Pirsig
        )
    [1] => Array
        (
            [0] => (4,70)
        )
    [2] => Array
        (
            [0] => (4,70)(4,90)
        )
    [3] => Array
        (
            [0] => (4,70)(4,90)(2,7)
            [1] => Transworld Publishers, ltd.
        )
)

Example #2 Working with MARCXML

The following PHP snippet returns a MARC21/USMARC record as MARCXML. The original record is returned in marc-8 (unknown to most XML parsers), so we convert it to UTF-8 (which all XML parsers must support).

<?php
$rec = yaz_record($id, $p, "xml; charset=marc-8,utf-8");
?>

The record $rec can be processed with the Sablotron XSLT processor as follows:

<?php

$xslfile = 'display.xsl';
$processor = xslt_create();
$parms = array('/_xml' => $rec);
$res = xslt_process($processor, 'arg:/_xml', $xslfile, NULL, $parms);
xslt_free($processor);
$res = preg_replace("'</?html[^>]*>'", '', $res);
echo $res;

?>

For PHP 5 the XSL extension must be used instead of Sablotron XSLT.

yaz_range
yaz_scan_result
YAZ 函数


Returns Scan Response result

yaz_record
yaz_scan
YAZ 函数
PHP Manual

yaz_scan_result

(PHP 4 >= 4.0.5, PECL yaz >= 0.9.0)

yaz_scan_result — Returns Scan Response result

说明

array yaz_scan_result ( resource $id [, array &$result ] )

yaz_scan_result() returns terms and associated information as received from the server in the last performed yaz_scan().

参数

id

The connection resource returned by yaz_connect().

result

If given, this array will be modified to hold additional information taken from the Scan Response:

  • number - Number of entries returned

  • stepsize - Step size

  • position - Position of term

  • status - Scan status

返回值

Returns an array (0..n-1) where n is the number of terms returned. Each value is a pair where the first item is the term, and the second item is the result-count.

yaz_record
yaz_scan
YAZ 函数


Prepares for a scan

yaz_scan_result
yaz_schema
YAZ 函数
PHP Manual

yaz_scan

(PHP 4 >= 4.0.5, PECL yaz >= 0.9.0)

yaz_scan — Prepares for a scan

说明

void yaz_scan ( resource $id , string $type , string $startterm [, array $flags ] )

This function prepares for a Z39.50 Scan Request on the specified connection.

To actually transfer the Scan Request to the server and receive the Scan Response, yaz_wait() must be called. Upon completion of yaz_wait() call yaz_error() and yaz_scan_result() to handle the response.

参数

id

The connection resource returned by yaz_connect().

type

Currently only type rpn is supported.

startterm

Starting term point for the scan.

The form in which the starting term is specified is given by parameter type.

The syntax this parameter is similar to the RPN query as described in yaz_search(). It consists of zero or more @attr-operator specifications, then followed by exactly one token.

flags

This optional parameter specifies additional information to control the behaviour of the scan request. Three indexes are currently read from the flags array: number (number of terms requested), position (preferred position of term) and stepSize (preferred step size).

返回值

没有返回值。

范例

Example #1 PHP function that scans titles

<?php
function scan_titles($id, $startterm)
{
  yaz_scan($id, "rpn", "@attr 1=4 " . $startterm);
  yaz_wait();
  $errno = yaz_errno($id);
  if ($errno == 0) {
    $ar = yaz_scan_result($id, $options);
    echo 'Scan ok; ';
    foreach ($options as $key => $val) {
      echo "$key = $val &nbsp;";
    }
    echo '<br /><table>';
    while (list($key, list($k, $term, $tcount)) = each($ar)) {
      if (empty($k)) continue;
      echo "<tr><td>$term</td><td>$tcount</td></tr>";
    }
    echo '</table>';
  } else {
    echo "Scan failed. Error: " . yaz_error($id) . "<br />";
  }
}
?>

yaz_scan_result
yaz_schema
YAZ 函数


Specifies schema for retrieval

yaz_scan
yaz_search
YAZ 函数
PHP Manual

yaz_schema

(PHP 4 >= 4.2.0, PECL yaz >= 0.9.0)

yaz_schema — Specifies schema for retrieval

说明

void yaz_schema ( resource $id , string $schema )

yaz_schema() specifies the schema for retrieval.

This function should be called before yaz_search() or yaz_present().

参数

id

The connection resource returned by yaz_connect().

schema

Must be specified as an OID (Object Identifier) in a raw dot-notation (like 1.2.840.10003.13.4) or as one of the known registered schemas: GILS-schema, Holdings, Zthes, ...

返回值

没有返回值。

yaz_scan
yaz_search
YAZ 函数


Prepares for a search

yaz_schema
yaz_set_option
YAZ 函数
PHP Manual

yaz_search

(PHP 4 >= 4.0.1, PECL yaz >= 0.9.0)

yaz_search — Prepares for a search

说明

bool yaz_search ( resource $id , string $type , string $query )

yaz_search() prepares for a search on the given connection.

Like yaz_connect() this function is non-blocking and only prepares for a search to be executed later when yaz_wait() is called.

参数

id

The connection resource returned by yaz_connect().

type

This parameter represents the query type - only "rpn" is supported now in which case the third argument specifies a Type-1 query in prefix query notation.

query

The RPN query is a textual representation of the Type-1 query as defined by the Z39.50 standard. However, in the text representation as used by YAZ a prefix notation is used, that is the operator precedes the operands. The query string is a sequence of tokens where white space is ignored unless surrounded by double quotes. Tokens beginning with an at-character (@) are considered operators, otherwise they are treated as search terms.

RPN Operators
Construct | Description
@and query1 query2 | intersection of query1 and query2
@or query1 query2 | union of query1 and query2
@not query1 query2 | query1 and not query2
@set name | result set reference
@attrset set query | specifies attribute-set for query. This construction is only allowed once - in the beginning of the whole query
@attr [set] type=value query | applies attribute to query. The type and value are integers specifying the attribute-type and attribute-value respectively. The set, if given, specifies the attribute-set.

You can find information about attributes at the » Z39.50 Maintenance Agency site.

Note:

If you would like to use a more friendly notation, use the CCL parser - functions yaz_ccl_conf() and yaz_ccl_parse().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Query Examples

You can search for simple terms, like this:

computer
which matches documents where "computer" occur. No attributes are specified.

The query

"knuth donald"
matches documents where "knuth donald" occur (provided that the server supports phrase search).

This query applies two attributes for the same phrase.

@attr 1=1003 @attr 4=1 "knuth donald"
First attribute is type 1 (Bib-1 use), attribute value is 1003 (Author). Second attribute has is type 4 (structure), value 1 (phrase), so this should match documents where Donald Knuth is author.

The query

@and @or a b @not @or c d e
would in infix notation look like (a or b) and ((c or d) not e).

Another, more complex, one:

@attrset gils @and @attr 1=4 art @attr 1=2000 company
The query as a whole uses the GILS attributeset. The query matches documents where art occur in the title (GILS,BIB-1) and in which company occur as Distributor (GILS).

yaz_schema
yaz_set_option
YAZ 函数


Sets one or more options for connection

yaz_search
yaz_sort
YAZ 函数
PHP Manual

yaz_set_option

(PECL yaz >= 0.9.0)

yaz_set_option — Sets one or more options for connection

说明

void yaz_set_option ( resource $id , string $name , string $value )
void yaz_set_option ( resource $id , array $options )

Sets one or more options on the given connection.

参数

id

The connection resource returned by yaz_connect().

name or options

May be either a string or an array.

If given as a string, this will be the name of the option to set. You'll need to give it's value.

If given as an array, this will be an associative array (option name => option value).

PHP/YAZ Connection Options
Name | Description
implementationName | implementation name of server
implementationVersion | implementation version of server
implementationId | implementation ID of server
schema | schema for retrieval. By default, no schema is used. Setting this option is equivalent to using function yaz_schema()
preferredRecordSyntax | record syntax for retrieval. By default, no syntax is used. Setting this option is equivalent to using function yaz_syntax()
start | offset for first record to be retrieved via yaz_search() or yaz_present(). First record is numbered has a start value of 0. Second record has start value 1. Setting this option in combination with option count has the same effect as calling yaz_range() except that records are numbered from 1 in yaz_range()
count | maximum number of records to be retrieved via yaz_search() or yaz_present().
elementSetName | element-set-name for retrieval. Setting this option is equivalent to calling yaz_element().
value

The new value of the option. Use this only if the previous argument is a string.

返回值

没有返回值。

yaz_search
yaz_sort
YAZ 函数


Sets sorting criteria

yaz_set_option
yaz_syntax
YAZ 函数
PHP Manual

yaz_sort

(PHP 4 >= 4.0.7, PECL yaz >= 0.9.0)

yaz_sort — Sets sorting criteria

说明

void yaz_sort ( resource $id , string $criteria )

This function sets sorting criteria and enables Z39.50 Sort.

Call this function before yaz_search(). Using this function alone does not have any effect. When used in conjunction with yaz_search(), a Z39.50 Sort will be sent after a search response has been received and before any records are retrieved with Z39.50 Present (yaz_present().

参数

id

The connection resource returned by yaz_connect().

criteria

A string that takes the form field1 flags1 field2 flags2 where field1 specifies the primary attributes for sort, field2 seconds, etc..

The field specifies either a numerical attribute combinations consisting of type=value pairs separated by comma (e.g. 1=4,2=1) ; or the field may specify a plain string criteria (e.g. title. The flags is a sequence of the following characters which may not be separated by any white space.

Sort Flags
a

Sort ascending

d

Sort descending

i

Case insensitive sorting

s

Case sensitive sorting

返回值

没有返回值。

范例

Example #1 Sort Criterias

To sort on Bib1 attribute title, case insensitive, and ascending you would use the following sort criteria:

1=4 ia

If the secondary sorting criteria should be author, case sensitive and ascending you would use:

1=4 ia 1=1003 sa

yaz_set_option
yaz_syntax
YAZ 函数


Specifies the preferred record syntax for retrieval

yaz_sort
yaz_wait
YAZ 函数
PHP Manual

yaz_syntax

(PHP 4 >= 4.0.1, PECL yaz >= 0.9.0)

yaz_syntax — Specifies the preferred record syntax for retrieval

说明

void yaz_syntax ( resource $id , string $syntax )

yaz_syntax() specifies the preferred record syntax for retrieval

This function should be called before yaz_search() or yaz_present().

参数

id

The connection resource returned by yaz_connect().

syntax

The syntax must be specified as an OID (Object Identifier) in a raw dot-notation (like 1.2.840.10003.5.10) or as one of the known registered record syntaxes (sutrs, usmarc, grs1, xml, etc.).

返回值

没有返回值。

yaz_sort
yaz_wait
YAZ 函数


Wait for Z39.50 requests to complete

yaz_syntax
YP/NIS
YAZ 函数
PHP Manual

yaz_wait

(PHP 4 >= 4.0.1, PECL yaz >= 0.9.0)

yaz_wait — Wait for Z39.50 requests to complete

说明

mixed yaz_wait ([ array &$options ] )

This function carries out networked (blocked) activity for outstanding
requests which have been prepared by the functions
yaz_connect(), yaz_search(),
yaz_present(), yaz_scan() and
yaz_itemorder().

yaz_wait() returns when all servers have either completed all requests or aborted (in case of errors).

参数

options

An associative array of options:

timeout

Sets timeout in seconds. If a server has not responded within the timeout it is considered dead and yaz_wait() returns. The default value for timeout is 15 seconds.

event

A boolean.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 In event mode, returns resource 或者在失败时返回 FALSE.

yaz_syntax
YP/NIS
YAZ 函数


YP/NIS

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • YP/NIS 函数
    • yp_all — Traverse the map and call a function on each entry
    • yp_cat — Return an array containing the entire map
    • yp_err_string — Returns the error string associated with the given error code
    • yp_errno — Returns the error code of the previous operation
    • yp_first — Returns the first key-value pair from the named map
    • yp_get_default_domain — Fetches the machine's default NIS domain
    • yp_master — Returns the machine name of the master NIS server for a map
    • yp_match — Returns the matched line
    • yp_next — Returns the next key-value pair in the named map
    • yp_order — Returns the order number for a map
yaz_wait
简介
其它服务


简介

NIS (formerly called Yellow Pages) allows network management of important administrative files (e.g. the password file). For more information refer to the NIS manpage and » The Linux NIS(YP)/NYS/NIS+ HOWTO. There is also a book called » Managing NFS and NIS by Hal Stern.

Note:

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.1.0.

Note: 此扩展在 Windows 平台上不可用。

YP/NIS
安装／配置
YP/NIS


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
YP/NIS


需求

None besides functions from standard Unix libraries which are always available (either libc or libnsl, configure will detect which one to use).

安装／配置
安装
安装／配置


安装

此扩展被认为已无人维护及已消亡。然而，此扩展的源代码还可在 PECL SVN 找到： » http://svn.php.net/viewvc/pecl/yp

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

YPERR_ACCESS (integer)
access violation (this has only been added recently and is only available from PECL SVN for now)
YPERR_BADARGS (integer)
The function arguments are bad
YPERR_BADDB (integer)
YP database is bad
YPERR_BUSY (integer)
Database busy
YPERR_DOMAIN (integer)
cannot bind to server in this domain
YPERR_KEY (integer)
no such key in map
YPERR_MAP (integer)
no such map in server's domain
YPERR_NODOM (integer)
Local domain name not set
YPERR_NOMORE (integer)
No more records in map database
YPERR_PMAP (integer)
Can't communicate with portmapper
YPERR_RESRC (integer)
resource allocation failure
YPERR_RPC (integer)
RPC failure - domain has been unbound
YPERR_YPBIND (integer)
Can't communicate with ypbind
YPERR_YPERR (integer)
internal yp server or client error
YPERR_YPSERV (integer)
Can't communicate with ypserv
YPERR_VERS (integer)
YP version mismatch
资源类型
YP/NIS 函数
YP/NIS


YP/NIS 函数

Table of Contents

  • yp_all — Traverse the map and call a function on each entry
  • yp_cat — Return an array containing the entire map
  • yp_err_string — Returns the error string associated with the given error code
  • yp_errno — Returns the error code of the previous operation
  • yp_first — Returns the first key-value pair from the named map
  • yp_get_default_domain — Fetches the machine's default NIS domain
  • yp_master — Returns the machine name of the master NIS server for a map
  • yp_match — Returns the matched line
  • yp_next — Returns the next key-value pair in the named map
  • yp_order — Returns the order number for a map
预定义常量
yp_all
YP/NIS


Traverse the map and call a function on each entry

YP/NIS 函数
yp_cat
YP/NIS 函数
PHP Manual

yp_all

(PHP 4 >= 4.0.6, PHP 5 <= 5.0.5)

yp_all — Traverse the map and call a function on each entry

说明

void yp_all ( string $domain , string $map , string $callback )

Warning

本函数还未编写文档，仅有参数列表。

参数

domain

The NIS domain name.

map

The NIS map.

callback

返回值

没有返回值。

YP/NIS 函数
yp_cat
YP/NIS 函数


Return an array containing the entire map

yp_all
yp_err_string
YP/NIS 函数
PHP Manual

yp_cat

(PHP 4 >= 4.0.6, PHP 5 <= 5.0.5)

yp_cat — Return an array containing the entire map

说明

array yp_cat ( string $domain , string $map )

Returns all map entries.

参数

domain

The NIS domain name.

map

The NIS map.

返回值

Returns an array of all map entries, the maps key values as array indices and the maps entries as array data.

yp_all
yp_err_string
YP/NIS 函数


Returns the error string associated with the given error code

yp_cat
yp_errno
YP/NIS 函数
PHP Manual

yp_err_string

(PHP 4 >= 4.0.6, PHP 5 <= 5.0.5)

yp_err_string — Returns the error string associated with the given error code

说明

string yp_err_string ( int $errorcode )

Returns the error message associated with the given error code. Useful to indicate what exactly went wrong.

参数

errorcode

The error code.

返回值

Returns the error message, as a string.

范例

Example #1 Example for NIS errors

<?php
echo "Error: " . yp_err_string(yp_errno());
?>

参见

  • yp_errno() - Returns the error code of the previous operation

yp_cat
yp_errno
YP/NIS 函数


Returns the error code of the previous operation

yp_err_string
yp_first
YP/NIS 函数
PHP Manual

yp_errno

(PHP 4 >= 4.0.6, PHP 5 <= 5.0.5)

yp_errno — Returns the error code of the previous operation

说明

int yp_errno ( void )

Returns the error code of the previous operation.

返回值

Returns one of the YPERR_XXX error constants.

参见

  • yp_err_string() - Returns the error string associated with the given error code

yp_err_string
yp_first
YP/NIS 函数


Returns the first key-value pair from the named map

yp_errno
yp_get_default_domain
YP/NIS 函数
PHP Manual

yp_first

(PHP 4, PHP 5 <= 5.0.5)

yp_first — Returns the first key-value pair from the named map

说明

array yp_first ( string $domain , string $map )

Gets the first key-value pair from the named map in the named domain.

参数

domain

The NIS domain name.

map

The NIS map.

返回值

Returns the first key-value pair as an array on success, or FALSE on errors.

范例

Example #1 Example for the NIS first

<?php
$entry = yp_first($domain, "passwd.byname");

$key = key($entry);
$value = $entry[$key];

echo "First entry in this map has key " . $key . " and value " . $value;
?>

参见

  • yp_next() - Returns the next key-value pair in the named map
  • yp_get_default_domain() - Fetches the machine's default NIS domain

yp_errno
yp_get_default_domain
YP/NIS 函数


Fetches the machine's default NIS domain

yp_first
yp_master
YP/NIS 函数
PHP Manual

yp_get_default_domain

(PHP 4, PHP 5 <= 5.0.5)

yp_get_default_domain — Fetches the machine's default NIS domain

说明

string yp_get_default_domain ( void )

Returns the default domain of the node. Can be used as the domain parameter for successive NIS calls.

A NIS domain can be described a group of NIS maps. Every host that needs to look up information binds itself to a certain domain. Refer to the documents mentioned at the beginning for more detailed information.

返回值

Returns the default domain of the node or FALSE. Can be used as the domain parameter for successive NIS calls.

范例

Example #1 Example for the default domain

<?php
$domain = yp_get_default_domain();
echo "Default NIS domain is: " . $domain;
?>

yp_first
yp_master
YP/NIS 函数


Returns the machine name of the master NIS server for a map

yp_get_default_domain
yp_match
YP/NIS 函数
PHP Manual

yp_master

(PHP 4, PHP 5 <= 5.0.5)

yp_master — Returns the machine name of the master NIS server for a map

说明

string yp_master ( string $domain , string $map )

Returns the machine name of the master NIS server for a map.

参数

domain

The NIS domain name.

map

The NIS map.

返回值

范例

Example #1 Example for the NIS master

<?php
$number = yp_master($domain, $mapname);
echo "Master for this map is: " . $master;
?>

参见

  • yp_get_default_domain() - Fetches the machine's default NIS domain

yp_get_default_domain
yp_match
YP/NIS 函数


Returns the matched line

yp_master
yp_next
YP/NIS 函数
PHP Manual

yp_match

(PHP 4, PHP 5 <= 5.0.5)

yp_match — Returns the matched line

说明

string yp_match ( string $domain , string $map , string $key )

Returns the value associated with the passed key out of the specified map.

参数

domain

The NIS domain name.

map

The NIS map.

key

This key must be exact.

返回值

Returns the value, or FALSE on errors.

范例

Example #1 Example for NIS match

<?php
$entry = yp_match($domain, "passwd.byname", "joe");
echo "Matched entry is: " . $entry;
?>

以上例程的输出类似于：

joe:##joe:11111:100:Joe User:/home/j/joe:/usr/local/bin/bash

参见

  • yp_get_default_domain() - Fetches the machine's default NIS domain

yp_master
yp_next
YP/NIS 函数


Returns the next key-value pair in the named map

yp_match
yp_order
YP/NIS 函数
PHP Manual

yp_next

(PHP 4, PHP 5 <= 5.0.5)

yp_next — Returns the next key-value pair in the named map

说明

array yp_next ( string $domain , string $map , string $key )

Returns the next key-value pair in the named map after the specified key.

参数

domain

map

key

返回值

Returns the next key-value pair as an array, or FALSE on errors.

范例

Example #1 Example for NIS next

<?php
$entry = yp_next($domain, "passwd.byname", "joe");

if (!$entry) {
    echo "No more entries found\n";
    echo "<!--" . yp_errno() . ": " . yp_err_string() . "-->";
}

$key = key($entry);

echo "The next entry after joe has key " . $key
      . " and value " . $entry[$key];
?>

参见

  • yp_first() - Returns the first key-value pair from the named map
  • yp_get_default_domain() - Fetches the machine's default NIS domain

yp_match
yp_order
YP/NIS 函数


Returns the order number for a map

yp_next
0MQ消息系统
YP/NIS 函数
PHP Manual

yp_order

(PHP 4, PHP 5 <= 5.0.5)

yp_order — Returns the order number for a map

说明

int yp_order ( string $domain , string $map )

Gets the order number for a map.

参数

domain

map

返回值

Returns the order number for a map or FALSE on error.

范例

Example #1 Example for the NIS order

<?php
    $number = yp_order($domain, $mapname);
    echo "Order number for this map is: " . $number;
?>

参见

  • yp_get_default_domain() - Fetches the machine's default NIS domain

yp_next
0MQ消息系统
YP/NIS 函数


ZMQ

  • 简介
  • 安装／配置
    • 需求
  • ZMQ — The ZMQ class
    • ZMQ::__construct — ZMQ constructor
  • ZMQContext — The ZMQContext class
    • ZMQContext::__construct — Construct a new ZMQContext object
    • ZMQContext::getOpt — Get context option
    • ZMQContext::getSocket — Create a new socket
    • ZMQContext::isPersistent — Whether the context is persistent
    • ZMQContext::setOpt — Set a socket option
  • ZMQSocket — The ZMQSocket class
    • ZMQSocket::bind — Bind the socket
    • ZMQSocket::connect — Connect the socket
    • ZMQSocket::__construct — Construct a new ZMQSocket
    • ZMQSocket::disconnect — Disconnect a socket
    • ZMQSocket::getEndpoints — Get list of endpoints
    • ZMQSocket::getPersistentId — Get the persistent id
    • ZMQSocket::getSocketType — Get the socket type
    • ZMQSocket::getSockOpt — Get socket option
    • ZMQSocket::isPersistent — Whether the socket is persistent
    • ZMQSocket::recv — Receives a message
    • ZMQSocket::recvMulti — Receives a multipart message
    • ZMQSocket::send — Sends a message
    • ZMQSocket::sendmulti — Sends a multipart message
    • ZMQSocket::setSockOpt — Set a socket option
    • ZMQSocket::unbind — Unbind the socket
  • ZMQPoll — The ZMQPoll class
    • ZMQPoll::add — Add item to the poll set
    • ZMQPoll::clear — Clear the poll set
    • ZMQPoll::count — Count items in the poll set
    • ZMQPoll::getLastErrors — Get poll errors
    • ZMQPoll::poll — Poll the items
    • ZMQPoll::remove — Remove item from poll set
  • ZMQDevice — The ZMQDevice class
    • ZMQDevice::__construct — Construct a new device
    • ZMQDevice::getIdleTimeout — Get the idle timeout
    • ZMQDevice::getTimerTimeout — Get the timer timeout
    • ZMQDevice::run — Run the new device
    • ZMQDevice::setIdleCallback — Set the idle callback function
    • ZMQDevice::setIdleTimeout — Set the idle timeout
    • ZMQDevice::setTimerCallback — Set the timer callback function
    • ZMQDevice::setTimerTimeout — Set the timer timeout
yp_order
简介
其它服务


简介

"?MQ 是一个能让你快速设计、开发基于消息应用的函数库。"——0MQ官网

关于 0MQ 的更多信息，请参考 » http://zeromq.org/。

0MQ消息系统
安装／配置
0MQ消息系统


安装／配置

Table of Contents

  • 需求
简介
需求
0MQ消息系统


需求

ZMQ扩展需要 0MQ 2.0.7及以上版本。 0MQ 可以在这里下载 » http://zeromq.org/area:download。

安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/zmq

安装／配置
ZMQ
安装／配置


The ZMQ class

(No version information available, might only be in Git)

简介

类摘要

ZMQ {
/* Constants */
const integer SOCKET_PAIR ;
const integer SOCKET_PUB ;
const integer SOCKET_SUB ;
const integer SOCKET_REQ ;
const integer SOCKET_REP ;
const integer SOCKET_XREQ ;
const integer SOCKET_XREP ;
const integer SOCKET_PUSH ;
const integer SOCKET_PULL ;
const integer SOCKET_ROUTER ;
const integer SOCKET_DEALER ;
const integer SOCKET_XPUB ;
const integer SOCKET_XSUB ;
const integer SOCKET_STREAM ;
const integer SOCKOPT_HWM ;
const integer SOCKOPT_SNDHWM ;
const integer SOCKOPT_RCVHWM ;
const integer SOCKOPT_AFFINITY ;
const integer SOCKOPT_IDENTITY ;
const integer SOCKOPT_SUBSCRIBE ;
const integer SOCKOPT_UNSUBSCRIBE ;
const integer SOCKOPT_RATE ;
const integer SOCKOPT_RECOVERY_IVL ;
const integer SOCKOPT_RECONNECT_IVL ;
const integer SOCKOPT_RECONNECT_IVL_MAX ;
const integer SOCKOPT_MCAST_LOOP ;
const integer SOCKOPT_SNDBUF ;
const integer SOCKOPT_RCVBUF ;
const integer SOCKOPT_RCVMORE ;
const integer SOCKOPT_TYPE ;
const integer SOCKOPT_LINGER ;
const integer SOCKOPT_BACKLOG ;
const integer SOCKOPT_MAXMSGSIZE ;
const integer SOCKOPT_SNDTIMEO ;
const integer SOCKOPT_RCVTIMEO ;
const integer SOCKOPT_IPV4ONLY ;
const integer SOCKOPT_LAST_ENDPOINT ;
const integer SOCKOPT_TCP_KEEPALIVE_IDLE ;
const integer SOCKOPT_TCP_KEEPALIVE_CNT ;
const integer SOCKOPT_TCP_KEEPALIVE_INTVL ;
const integer SOCKOPT_TCP_ACCEPT_FILTER ;
const integer SOCKOPT_TCP_ACCEPT_FILTER ;
const integer SOCKOPT_DELAY_ATTACH_ON_CONNECT ;
const integer SOCKOPT_XPUB_VERBOSE ;
const integer SOCKOPT_ROUTER_RAW ;
const integer SOCKOPT_IPV6 ;
const integer CTXOPT_MAX_SOCKETS ;
const integer POLL_IN ;
const integer POLL_OUT ;
const integer MODE_NOBLOCK ;
const integer MODE_DONTWAIT ;
const integer MODE_SNDMORE ;
const integer ERR_INTERNAL ;
const integer ERR_EAGAIN ;
const integer ERR_ENOTSUP ;
const integer ERR_EFSM ;
const integer ERR_ETERM ;
/* Methods */
private__construct ( void )
}

预定义常量

ZMQ Constant Types

ZMQ::SOCKET_PAIR

Exclusive pair pattern

ZMQ::SOCKET_PUB

Publisher socket

ZMQ::SOCKET_SUB

Subscriber socket

ZMQ::SOCKET_REQ

Request socket

ZMQ::SOCKET_REP

Reply socket

ZMQ::SOCKET_XREQ

Alias for SOCKET_DEALER

ZMQ::SOCKET_XREP

Alias for SOCKET_ROUTER

ZMQ::SOCKET_PUSH

Pipeline upstream push socket

ZMQ::SOCKET_PULL

Pipeline downstream pull socket

ZMQ::SOCKET_ROUTER

Extended REP socket that can route replies to requesters

ZMQ::SOCKET_DEALER

Extended REQ socket that load balances to all connected peers

ZMQ::SOCKET_XPUB

Similar to SOCKET_PUB, except you can receive subscriptions as messages. The subscription message is 0 (unsubscribe) or 1 (subscribe) followed by the topic.

ZMQ::SOCKET_XSUB

Similar to SOCKET_SUB, except you can send subscriptions as messages. See SOCKET_XPUB for format.

ZMQ::SOCKET_STREAM

Used to send and receive TCP data from a non-?MQ peer. Available if compiled against ZeroMQ 4.x or higher (Value: integer).

ZMQ::SOCKOPT_HWM

The high water mark for inbound and outbound messages is a hard limit on the maximum number of outstanding messages ?MQ shall queue in memory for any single peer that the specified socket is communicating with. Setting this option on a socket will only affect connections made after the option has been set. On ZeroMQ 3.x this is a wrapper for setting both SNDHWM and RCVHWM. (Value: integer).

ZMQ::SOCKOPT_SNDHWM

The ZMQ_SNDHWM option shall set the high water mark for outbound messages on the specified socket. Available if compiled against ZeroMQ 3.x or higher (Value: integer).

ZMQ::SOCKOPT_RCVHWM

The ZMQ_SNDHWM option shall set the high water mark for inbound messages on the specified socket. Available if compiled against ZeroMQ 3.x or higher (Value: integer).

ZMQ::SOCKOPT_AFFINITY

Set I/O thread affinity (Value: integer)

ZMQ::SOCKOPT_IDENTITY

Set socket identity (Value: string)

ZMQ::SOCKOPT_SUBSCRIBE

Establish message filter. Valid for subscriber socket (Value: string)

ZMQ::SOCKOPT_UNSUBSCRIBE

Remove message filter. Valid for subscriber socket (Value: string)

ZMQ::SOCKOPT_RATE

Set rate for multicast sockets (pgm) (Value: integer >= 0)

ZMQ::SOCKOPT_RECOVERY_IVL

Set multicast recovery interval (Value: integer >= 0)

ZMQ::SOCKOPT_RECONNECT_IVL

Set the initial reconnection interval (Value: integer >= 0)

ZMQ::SOCKOPT_RECONNECT_IVL_MAX

Set the max reconnection interval (Value: integer >= 0)

ZMQ::SOCKOPT_MCAST_LOOP

Control multicast loopback (Value: integer >= 0)

ZMQ::SOCKOPT_SNDBUF

Set kernel transmit buffer size (Value: integer >= 0)

ZMQ::SOCKOPT_RCVBUF

Set kernel receive buffer size (Value: integer >= 0)

ZMQ::SOCKOPT_RCVMORE

Receive multi-part messages (Value: integer)

ZMQ::SOCKOPT_TYPE

Get the socket type. Valid for getSockOpt (Value: integer)

ZMQ::SOCKOPT_LINGER

The linger value of the socket. Specifies how long the socket blocks trying flush messages after it has been closed (Value: integer)

ZMQ::SOCKOPT_BACKLOG

The SOCKOPT_BACKLOG option shall set the maximum length of the queue of outstanding peer connections for the specified socket; this only applies to connection-oriented transports. (Value: integer)

ZMQ::SOCKOPT_MAXMSGSIZE

Limits the maximum size of the inbound message. Value -1 means no limit. Available if compiled against ZeroMQ 3.x or higher (Value: integer)

ZMQ::SOCKOPT_SNDTIMEO

Sets the timeout for send operation on the socket. Value -1 means no limit. Available if compiled against ZeroMQ 3.x or higher (Value: integer)

ZMQ::SOCKOPT_RCVTIMEO

Sets the timeout for receive operation on the socket. Value -1 means no limit. Available if compiled against ZeroMQ 3.x or higher (Value: integer)

ZMQ::SOCKOPT_IPV4ONLY

Disable IPV6 support if 1. Available if compiled against ZeroMQ 3.x (Value: integer)

ZMQ::SOCKOPT_LAST_ENDPOINT

Retrieve the last connected endpoint - for use with * wildcard ports. Available if compiled against ZeroMQ 3.x or higher (Value: string)

ZMQ::SOCKOPT_TCP_KEEPALIVE_IDLE

Idle time for TCP keepalive. Available if compiled against ZeroMQ 3.x or higher (Value: integer)

ZMQ::SOCKOPT_TCP_KEEPALIVE_CNT

Count time for TCP keepalive. Available if compiled against ZeroMQ 3.x or higher (Value: integer)

ZMQ::SOCKOPT_TCP_KEEPALIVE_INTVL

Interval for TCP keepalive. Available if compiled against ZeroMQ 3.x or higher (Value: integer)

ZMQ::SOCKOPT_DELAY_ATTACH_ON_CONNECT

Set a CIDR string to match against incoming TCP connections. Available if compiled against ZeroMQ 3.x or higher (Value: string)

ZMQ::SOCKOPT_TCP_ACCEPT_FILTER

Set a CIDR string to match against incoming TCP connections. Available if compiled against ZeroMQ 3.x or higher (Value: string)

ZMQ::SOCKOPT_XPUB_VERBOSE

Set the XPUB to receive an application message on each instance of a subscription. Available if compiled against ZeroMQ 3.x or higher (Value: string)

ZMQ::SOCKOPT_ROUTER_RAW

Sets the raw mode on the ROUTER, when set to 1. In raw mode when using tcp:// transport the socket will read and write without ZeroMQ framing. Available if compiled against ZeroMQ 4.0 or higher (Value: string)

ZMQ::SOCKOPT_IPV6

Enable IPV6. Available if compiled against ZeroMQ 4.0 or higher (Value: string)

ZMQ::CTXOPT_MAX_SOCKETS

The socket limit for this context. Available if compiled against ZeroMQ 3.x or higher (Value: integer)

ZMQ::POLL_IN

Poll for incoming data

ZMQ::POLL_OUT

Poll for outgoing data

ZMQ::MODE_NOBLOCK

Non-blocking operation. Deprecated, use ZMQ::MODE_DONTWAIT instead

ZMQ::MODE_DONTWAIT

Non-blocking operation

ZMQ::MODE_SNDMORE

Send multi-part message

ZMQ::DEVICE_FORWARDER

Forwarder device

ZMQ::DEVICE_QUEUE

Queue device

ZMQ::DEVICE_STREAMER

Streamer device

ZMQ::ERR_INTERNAL

ZMQ extension internal error

ZMQ::ERR_EAGAIN

Implies that the operation would block when ZMQ::MODE_DONTWAIT is used

ZMQ::ERR_ENOTSUP

The operation is not supported by the socket type

ZMQ::ERR_EFSM

The operation can not be executed because the socket is not in correct state

ZMQ::ERR_ETERM

The context has been terminated

Table of Contents

  • ZMQ::__construct — ZMQ constructor
需求
ZMQ::__construct
0MQ消息系统


ZMQ constructor

ZMQ
ZMQContext
ZMQ
PHP Manual

ZMQ::__construct

(PECL zmq >= 0.5.0)

ZMQ::__construct — ZMQ constructor

说明

privateZMQ::__construct ( void )

Private constructor to prevent direct initialization. This class holds the constants for ZMQ extension.

参数

此函数没有参数。

返回值

ZMQ
ZMQContext
ZMQ


The ZMQContext class

(No version information available, might only be in Git)

简介

类摘要

ZMQContext {
/* Methods */
__construct ([ integer $io_threads = 1 [, boolean $is_persistent = true ]] )
public mixed getOpt ( string $key )
public ZMQSocket getSocket ( integer $type [, string $persistent_id = null [, callback $on_new_socket = null ]] )
public boolean isPersistent ( void )
public ZMQContext setOpt ( integer $key , mixed $value )
}

Table of Contents

  • ZMQContext::__construct — Construct a new ZMQContext object
  • ZMQContext::getOpt — Get context option
  • ZMQContext::getSocket — Create a new socket
  • ZMQContext::isPersistent — Whether the context is persistent
  • ZMQContext::setOpt — Set a socket option
ZMQ::__construct
ZMQContext::__construct
0MQ消息系统


Construct a new ZMQContext object

ZMQContext
ZMQContext::getOpt
ZMQContext
PHP Manual

ZMQContext::__construct

(PECL zmq >= 0.5.0)

ZMQContext::__construct — Construct a new ZMQContext object

说明

ZMQContext::__construct ([ integer $io_threads = 1 [, boolean $is_persistent = true ]] )

Constructs a new ZMQ context. The context is used to initialize sockets. A persistent context is required to initialize persistent sockets.

参数

io_threads

Number of io-threads in the context.

is_persistent

Whether the context is persistent. Persistent context is stored over multiple requests and is a requirement for persistent sockets.

范例

Example #1 A ZMQContext() example

Construct a new context and allocate request socket from it

<?php
/* Allocate a new context */
$context = new ZMQContext();

/* Create a new socket */
$socket = $context->getSocket(ZMQ::SOCKET_REQ, 'my sock');

/* Connect the socket */
$socket->connect("tcp://example.com:1234");

/* Send a request */
$socket->send("Hello there");

/* Receive back the response */
$message = $socket->recv();
?>

返回值

Throws ZMQContextException if context initialization fails.

ZMQContext
ZMQContext::getOpt
ZMQContext


Get context option

ZMQContext::__construct
ZMQContext::getSocket
ZMQContext
PHP Manual

ZMQContext::getOpt

(PECL zmq >= 1.0.4)

ZMQContext::getOpt — Get context option

说明

public mixed ZMQContext::getOpt ( string $key )

Returns the value of a context option.

参数

key

An integer representing the option. See the ZMQ::CTXOPT_* constants.

返回值

Returns either a string or an integer depending on key. Throws ZMQContextException on error.

ZMQContext::__construct
ZMQContext::getSocket
ZMQContext


Create a new socket

ZMQContext::getOpt
ZMQContext::isPersistent
ZMQContext
PHP Manual

ZMQContext::getSocket

(PECL zmq >= 0.5.0)

ZMQContext::getSocket — Create a new socket

说明

public ZMQSocket ZMQContext::getSocket ( integer $type [, string $persistent_id = null [, callback $on_new_socket = null ]] )

Shortcut for creating new sockets from the context. If the context is not persistent the persistent_id parameter is ignored and the socket falls back to being non-persistent. The on_new_socket is called only when a new underlying socket structure is created.

参数

type

ZMQ::SOCKET_* constant to specify socket type.

persistent_id

If persistent_id is specified the socket will be persisted over multiple requests.

on_new_socket

Callback function, which is executed when a new socket structure is created. This function does not get invoked if the underlying persistent connection is re-used. The callback takes ZMQSocket and persistent_id as two arguments.

范例

Example #1 A ZMQContext() example

Basic usage

<?php
/* Allocate a new context */
$context = new ZMQContext();

/* Create a new socket */
$socket = $context->getSocket(ZMQ::SOCKET_REQ, 'my sock');

/* Connect the socket */
$socket->connect("tcp://example.com:1234");

/* Send a request */
$socket->send("Hello there");

/* Receive back the response */
$message = $socket->recv();
echo "Received message: {$message}\n";
?>

返回值

Returns a ZMQSocket object on success. Throws ZMQSocketException on error.

ZMQContext::getOpt
ZMQContext::isPersistent
ZMQContext


Whether the context is persistent

ZMQContext::getSocket
ZMQContext::setOpt
ZMQContext
PHP Manual

ZMQContext::isPersistent

(PECL zmq >= 0.5.0)

ZMQContext::isPersistent — Whether the context is persistent

说明

public boolean ZMQContext::isPersistent ( void )

Whether the context is persistent. Persistent context is needed for persistent connections as each socket is allocated from a context.

参数

此函数没有参数。

返回值

Returns TRUE if the context is persistent and FALSE if the context is non-persistent.

ZMQContext::getSocket
ZMQContext::setOpt
ZMQContext


Set a socket option

ZMQContext::isPersistent
ZMQSocket
ZMQContext
PHP Manual

ZMQContext::setOpt

(PECL zmq >= 1.0.4)

ZMQContext::setOpt — Set a socket option

说明

public ZMQContext ZMQContext::setOpt ( integer $key , mixed $value )

Sets a ZMQ context option. The type of the value depends on the key. See ZMQ Constant Types for more information.

参数

key

One of the ZMQ::CTXOPT_* constants.

value

The value of the parameter.

返回值

Returns the current object. Throws ZMQContextException on error.

ZMQContext::isPersistent
ZMQSocket
ZMQContext


The ZMQSocket class

(No version information available, might only be in Git)

简介

类摘要

ZMQSocket {
/* Methods */
public ZMQSocket bind ( string $dsn [, boolean $force = false ] )
public ZMQSocket connect ( string $dsn [, boolean $force = false ] )
__construct ( ZMQContext $context , int $type [, string $persistent_id = null [, callback $on_new_socket = null ]] )
public ZMQSocket disconnect ( string $dsn )
public array getEndpoints ( void )
public string getPersistentId ( void )
public integer getSocketType ( void )
public mixed getSockOpt ( string $key )
public boolean isPersistent ( void )
public string recv ([ integer $mode = 0 ] )
public string recvMulti ([ integer $mode = 0 ] )
public ZMQSocket send ( string $message [, integer $mode = 0 ] )
public ZMQSocket send ( array $message [, integer $mode = 0 ] )
public ZMQSocket setSockOpt ( integer $key , mixed $value )
public ZMQSocket unbind ( string $dsn )
}

Table of Contents

  • ZMQSocket::bind — Bind the socket
  • ZMQSocket::connect — Connect the socket
  • ZMQSocket::__construct — Construct a new ZMQSocket
  • ZMQSocket::disconnect — Disconnect a socket
  • ZMQSocket::getEndpoints — Get list of endpoints
  • ZMQSocket::getPersistentId — Get the persistent id
  • ZMQSocket::getSocketType — Get the socket type
  • ZMQSocket::getSockOpt — Get socket option
  • ZMQSocket::isPersistent — Whether the socket is persistent
  • ZMQSocket::recv — Receives a message
  • ZMQSocket::recvMulti — Receives a multipart message
  • ZMQSocket::send — Sends a message
  • ZMQSocket::sendmulti — Sends a multipart message
  • ZMQSocket::setSockOpt — Set a socket option
  • ZMQSocket::unbind — Unbind the socket
ZMQContext::setOpt
ZMQSocket::bind
0MQ消息系统


Bind the socket

ZMQSocket
ZMQSocket::connect
ZMQSocket
PHP Manual

ZMQSocket::bind

(PECL zmq >= 0.5.0)

ZMQSocket::bind — Bind the socket

说明

public ZMQSocket ZMQSocket::bind ( string $dsn [, boolean $force = false ] )

Bind the socket to an endpoint. The endpoint is defined in format transport://address where transport is one of the following: inproc, ipc, tcp, pgm or epgm.

参数

dsn

The bind dsn, for example transport://address.

force

Tries to bind even if the socket has already been bound to the given endpoint.

返回值

Returns the current object. Throws ZMQSocketException on error.

ZMQSocket
ZMQSocket::connect
ZMQSocket


Connect the socket

ZMQSocket::bind
ZMQSocket::__construct
ZMQSocket
PHP Manual

ZMQSocket::connect

(PECL zmq >= 0.5.0)

ZMQSocket::connect — Connect the socket

说明

public ZMQSocket ZMQSocket::connect ( string $dsn [, boolean $force = false ] )

Connect the socket to a remote endpoint. The endpoint is defined in format transport://address where transport is one of the following: inproc, ipc, tcp, pgm or epgm.

参数

dsn

The connect dsn, for example transport://address.

force

Tries to connect even if the socket has already been connected to given endpoint.

范例

Example #1 A ZMQContext() example

Construct a new context and allocate request socket from it

<?php
/* Server hostname */
$dsn = "tcp://127.0.0.1:5555";

/* Create a socket */
$socket = new ZMQSocket(new ZMQContext(), ZMQ::SOCKET_REQ, 'my socket');

/* Get list of connected endpoints */
$endpoints = $socket->getEndpoints();

/* Check if the socket is connected */
if (!in_array($dsn, $endpoints['connect'])) {
    echo "<p>Connecting to $dsn</p>";
    $socket->connect($dsn);
} else {
    echo "<p>Already connected to $dsn</p>";
}

/* Send and receive */
$socket->send("Hello!");
$message = $socket->recv();

echo "<p>Server said: {$message}</p>";
?>

返回值

Returns the current object. Throws ZMQSocketException on error.

ZMQSocket::bind
ZMQSocket::__construct
ZMQSocket


Construct a new ZMQSocket

ZMQSocket::connect
ZMQSocket::disconnect
ZMQSocket
PHP Manual

ZMQSocket::__construct

(PECL zmq >= 0.5.0)

ZMQSocket::__construct — Construct a new ZMQSocket

说明

ZMQSocket::__construct ( ZMQContext $context , int $type [, string $persistent_id = null [, callback $on_new_socket = null ]] )

Constructs a ZMQSocket object. persistent_id parameter can be used to allocated a persistent socket. A persistent socket has to be allocated from a persistent context and it stays connected over multiple requests. The persistent_id parameter can be used to recall the same socket over multiple requests. The on_new_socket is called only when a new underlying socket structure is created.

参数

context

ZMQContext object.

type

The socket type. See ZMQ::SOCKET_* constants.

persistent_id

If persistent_id is specified the socket will be persisted over multiple requests. If context is not persistent the socket falls back to non-persistent mode.

on_new_socket

Callback function, which is executed when a new socket structure is created. This function does not get invoked if the underlying persistent connection is re-used.

范例

Example #1 A ZMQSocket() example

Using callback the bind/connect socket

<?php

/*
  The socket is persistent so this function is called only on the
  first request to the script.
*/
function on_new_socket_cb(ZMQSocket $socket, $persistent_id = null)
{
    if ($persistent_id === 'server') {
        $socket->bind("tcp://localhost:12122");
    } else {
        $socket->connect("tcp://localhost:12122");
    }
}

/* Allocate a new context */
$context = new ZMQContext();

/* Create a new socket */
$socket = $context->getSocket(ZMQ::SOCKET_REP, 'server', 'on_new_socket_cb');

$message = $socket->recv();
echo "Received message: {$message}\n";
?>

The callback signature

Note:

function on_new_socket_cb(ZMQSocket $socket, string $persistent_id = null);

返回值

Throws ZMQSocketException on error.

ZMQSocket::connect
ZMQSocket::disconnect
ZMQSocket


Disconnect a socket

ZMQSocket::__construct
ZMQSocket::getEndpoints
ZMQSocket
PHP Manual

ZMQSocket::disconnect

(PECL zmq >= 1.0.4)

ZMQSocket::disconnect — Disconnect a socket

说明

public ZMQSocket ZMQSocket::disconnect ( string $dsn )

Disconnect the socket from a previously connected remote endpoint. The endpoint is defined in format transport://address where transport is one of the following: inproc, ipc, tcp, pgm or epgm.

参数

dsn

The connect dsn, for example transport://address.

返回值

Returns the current object. Throws ZMQSocketException on error.

ZMQSocket::__construct
ZMQSocket::getEndpoints
ZMQSocket


Get list of endpoints

ZMQSocket::disconnect
ZMQSocket::getPersistentId
ZMQSocket
PHP Manual

ZMQSocket::getEndpoints

(PECL zmq >= 0.5.0)

ZMQSocket::getEndpoints — Get list of endpoints

说明

public array ZMQSocket::getEndpoints ( void )

Returns a list of endpoints where the socket is connected or bound to.

参数

此函数没有参数。

返回值

Returns an array containing elements 'bind' and 'connect'.

ZMQSocket::disconnect
ZMQSocket::getPersistentId
ZMQSocket


Get the persistent id

ZMQSocket::getEndpoints
ZMQSocket::getSocketType
ZMQSocket
PHP Manual

ZMQSocket::getPersistentId

(PECL zmq >= 0.5.0)

ZMQSocket::getPersistentId — Get the persistent id

说明

public string ZMQSocket::getPersistentId ( void )

Returns the persistent id of the socket.

参数

此函数没有参数。

返回值

Returns the persistent id string assigned of the object and NULL if socket is not persistent.

ZMQSocket::getEndpoints
ZMQSocket::getSocketType
ZMQSocket


Get the socket type

ZMQSocket::getPersistentId
ZMQSocket::getSockOpt
ZMQSocket
PHP Manual

ZMQSocket::getSocketType

(PECL zmq >= 0.5.0)

ZMQSocket::getSocketType — Get the socket type

说明

public integer ZMQSocket::getSocketType ( void )

Gets the socket type.

参数

此函数没有参数。

返回值

Returns an integer representing the socket type. The integer can be compared against ZMQ::SOCKET_* constants.

ZMQSocket::getPersistentId
ZMQSocket::getSockOpt
ZMQSocket


Get socket option

ZMQSocket::getSocketType
ZMQSocket::isPersistent
ZMQSocket
PHP Manual

ZMQSocket::getSockOpt

(PECL zmq >= 0.5.0)

ZMQSocket::getSockOpt — Get socket option

说明

public mixed ZMQSocket::getSockOpt ( string $key )

Returns the value of a socket option.

参数

key

An integer representing the option. See the ZMQ::SOCKOPT_* constants.

返回值

Returns either a string or an integer depending on key. Throws ZMQSocketException on error.

ZMQSocket::getSocketType
ZMQSocket::isPersistent
ZMQSocket


Whether the socket is persistent

ZMQSocket::getSockOpt
ZMQSocket::recv
ZMQSocket
PHP Manual

ZMQSocket::isPersistent

(PECL zmq >= 0.5.0)

ZMQSocket::isPersistent — Whether the socket is persistent

说明

public boolean ZMQSocket::isPersistent ( void )

Check whether the socket is persistent.

参数

此函数没有参数。

返回值

Returns a boolean based on whether the socket is persistent or not.

ZMQSocket::getSockOpt
ZMQSocket::recv
ZMQSocket


Receives a message

ZMQSocket::isPersistent
ZMQSocket::recvMulti
ZMQSocket
PHP Manual

ZMQSocket::recv

(PECL zmq >= 0.5.0)

ZMQSocket::recv — Receives a message

说明

public string ZMQSocket::recv ([ integer $mode = 0 ] )

Receive a message from a socket. By default receiving will block until a message is available unless ZMQ::MODE_NOBLOCK flag is used. ZMQ::SOCKOPT_RCVMORE socket option can be used for receiving multi-part messages. See ZMQSocket::setSockOpt() for more information.

参数

mode

Pass mode flags to receive multipart messages or non-blocking operation. See ZMQ::MODE_* constants.

范例

Example #1 A send/recv example

Non-blocking send / receive

<?php

/* Create new queue object, there needs to be a server at the other end */
$queue = new ZMQSocket(new ZMQContext(), ZMQ::SOCKET_REQ);
$queue->connect("tcp://127.0.0.1:5555");

/* Assign socket 1 to the queue, send and receive */
$retries = 5;
$sending = true;

/* Start a loop */
do {
    try {
        /* Try to send / receive */
        if ($sending) {
            echo "Sending message\n";
            $queue->send("This is a message", ZMQ::MODE_NOBLOCK);
            $sending = false;
        } else {
            echo "Got response: " . $queue->recv(ZMQ::MODE_NOBLOCK) . "\n";
            break;
        }
    } catch (ZMQSocketException $e) {
        /* EAGAIN means that the operation would have blocked, retry */
        if ($e->getCode() === ZMQ::ERR_EAGAIN) {
            echo " - Got EAGAIN, retrying ($retries)\n";
        } else {
            die(" - Error: " . $e->getMessage());
        }
    }
    /* Sleep a bit between operations */
    usleep(5);
} while (--$retries);
?>

以上例程的输出类似于：

Sending message
 - Unable to execute operation, retrying (4)
Got response: This is a message

返回值

Returns the message. Throws ZMQSocketException in error. If ZMQ::MODE_NOBLOCK is used and the operation would block boolean false shall be returned.

ZMQSocket::isPersistent
ZMQSocket::recvMulti
ZMQSocket


Receives a multipart message

ZMQSocket::recv
ZMQSocket::send
ZMQSocket
PHP Manual

ZMQSocket::recvMulti

(PECL zmq >= 0.8.0)

ZMQSocket::recvMulti — Receives a multipart message

说明

public string ZMQSocket::recvMulti ([ integer $mode = 0 ] )

Receive an array multipart message from a socket. By default receiving will block until a message is available unless ZMQ::MODE_NOBLOCK flag is used.

参数

mode

Pass mode flags to receive multipart messages or non-blocking operation. See ZMQ::MODE_* constants.

返回值

Returns the array of message parts. Throws ZMQSocketException in error. If ZMQ::MODE_NOBLOCK is used and the operation would block boolean false shall be returned.

ZMQSocket::recv
ZMQSocket::send
ZMQSocket


Sends a message

ZMQSocket::recvMulti
ZMQSocket::sendmulti
ZMQSocket
PHP Manual

ZMQSocket::send

(PECL zmq >= 0.5.0)

ZMQSocket::send — Sends a message

说明

public ZMQSocket ZMQSocket::send ( string $message [, integer $mode = 0 ] )

Send a message using the socket. The operation can block unless ZMQ::MODE_NOBLOCK is used.

参数

message

The message to send.

mode

Pass mode flags to receive multipart messages or non-blocking operation. See ZMQ::MODE_* constants.

返回值

Returns the current object. Throws ZMQSocketException on error. If ZMQ::MODE_NOBLOCK is used and the operation would block boolean false shall be returned.

ZMQSocket::recvMulti
ZMQSocket::sendmulti
ZMQSocket


Sends a multipart message

ZMQSocket::send
ZMQSocket::setSockOpt
ZMQSocket
PHP Manual

ZMQSocket::sendmulti

(PECL zmq >= 0.8.0)

ZMQSocket::sendmulti — Sends a multipart message

说明

public ZMQSocket ZMQSocket::send ( array $message [, integer $mode = 0 ] )

Send a multipart message using the socket. The operation can block unless ZMQ::MODE_NOBLOCK is used.

参数

message

The message to send - an array of strings

mode

Pass mode flags to receive multipart messages or non-blocking operation. See ZMQ::MODE_* constants.

返回值

Returns the current object. Throws ZMQSocketException on error. If ZMQ::MODE_NOBLOCK is used and the operation would block boolean false shall be returned.

ZMQSocket::send
ZMQSocket::setSockOpt
ZMQSocket


Set a socket option

ZMQSocket::sendmulti
ZMQSocket::unbind
ZMQSocket
PHP Manual

ZMQSocket::setSockOpt

(PECL zmq >= 0.5.0)

ZMQSocket::setSockOpt — Set a socket option

说明

public ZMQSocket ZMQSocket::setSockOpt ( integer $key , mixed $value )

Sets a ZMQ socket option. The type of the value depends on the key. See ZMQ Constant Types for more information.

参数

key

One of the ZMQ::SOCKOPT_* constants.

value

The value of the parameter.

返回值

Returns the current object. Throws ZMQSocketException on error.

ZMQSocket::sendmulti
ZMQSocket::unbind
ZMQSocket


Unbind the socket

ZMQSocket::setSockOpt
ZMQPoll
ZMQSocket
PHP Manual

ZMQSocket::unbind

(PECL zmq >= 1.0.4)

ZMQSocket::unbind — Unbind the socket

说明

public ZMQSocket ZMQSocket::unbind ( string $dsn )

Unbind the socket from an endpoint. The endpoint is defined in format transport://address where transport is one of the following: inproc, ipc, tcp, pgm or epgm.

参数

dsn

The previously bound dsn, for example transport://address.

返回值

Returns the current object. Throws ZMQSocketException on error.

ZMQSocket::setSockOpt
ZMQPoll
ZMQSocket


The ZMQPoll class

(No version information available, might only be in Git)

简介

类摘要

ZMQPoll {
/* Methods */
public string add ( mixed $entry , integer $type )
public ZMQPoll clear ( void )
public integer count ( void )
public array getLastErrors ( void )
public integer poll ( array &$readable , array &$writable [, integer $timeout = -1 ] )
public boolean remove ( mixed $item )
}

Table of Contents

  • ZMQPoll::add — Add item to the poll set
  • ZMQPoll::clear — Clear the poll set
  • ZMQPoll::count — Count items in the poll set
  • ZMQPoll::getLastErrors — Get poll errors
  • ZMQPoll::poll — Poll the items
  • ZMQPoll::remove — Remove item from poll set
ZMQSocket::unbind
ZMQPoll::add
0MQ消息系统


Add item to the poll set

ZMQPoll
ZMQPoll::clear
ZMQPoll
PHP Manual

ZMQPoll::add

(PECL zmq >= 0.5.0)

ZMQPoll::add — Add item to the poll set

说明

public string ZMQPoll::add ( mixed $entry , integer $type )

Adds a new item to the poll set and returns the internal id of the added item. The item can be removed from the poll set using the returned string id.

参数

entry

ZMQSocket object or a PHP stream resource

type

Defines what activity the socket is polled for. See ZMQ::POLL_IN and ZMQ::POLL_OUT constants.

返回值

Returns a string id of the added item which can be later used to remove the item. Throws ZMQPollException on error.

ZMQPoll
ZMQPoll::clear
ZMQPoll


Clear the poll set

ZMQPoll::add
ZMQPoll::count
ZMQPoll
PHP Manual

ZMQPoll::clear

(PECL zmq >= 0.5.0)

ZMQPoll::clear — Clear the poll set

说明

public ZMQPoll ZMQPoll::clear ( void )

Clears all elements from the poll set.

参数

此函数没有参数。

返回值

Returns the current object.

ZMQPoll::add
ZMQPoll::count
ZMQPoll


Count items in the poll set

ZMQPoll::clear
ZMQPoll::getLastErrors
ZMQPoll
PHP Manual

ZMQPoll::count

(PECL zmq >= 0.5.0)

ZMQPoll::count — Count items in the poll set

说明

public integer ZMQPoll::count ( void )

Count the items in the poll set.

参数

此函数没有参数。

返回值

Returns an integer representing the amount of items in the poll set.

ZMQPoll::clear
ZMQPoll::getLastErrors
ZMQPoll


Get poll errors

ZMQPoll::count
ZMQPoll::poll
ZMQPoll
PHP Manual

ZMQPoll::getLastErrors

(PECL zmq >= 0.5.0)

ZMQPoll::getLastErrors — Get poll errors

说明

public array ZMQPoll::getLastErrors ( void )

Returns the ids of the objects that had errors in the last poll.

参数

此函数没有参数。

返回值

Returns an array containing ids for the items that had errors in the last poll. Empty array is returned if there were no errors.

ZMQPoll::count
ZMQPoll::poll
ZMQPoll


Poll the items

ZMQPoll::getLastErrors
ZMQPoll::remove
ZMQPoll
PHP Manual

ZMQPoll::poll

(PECL zmq >= 0.5.0)

ZMQPoll::poll — Poll the items

说明

public integer ZMQPoll::poll ( array &$readable , array &$writable [, integer $timeout = -1 ] )

Polls the items in the current poll set. The readable and writable items are returned in the readable and writable parameters. ZMQPoll::getLastErrors() can be used to check if there were errors.

参数

readable

Array where readable ZMQSockets/PHP streams are returned. The array will be cleared at the beginning of the operation.

writable

Array where writable ZMQSockets/PHP streams are returned. The array will be cleared at the beginning of the operation.

timeout

Timeout for the operation. -1 means that poll waits until at least one item has activity. Please note that starting from version 1.0.0 the poll timeout is defined in milliseconds, rather than microseconds.

范例

Example #1 A ZMQPoll() example

Create a simple poll server

<?php

/* Create socket, request-reply pattern (reply socket) */
$context = new ZMQContext();
$server  = $context->getSocket(ZMQ::SOCKET_REP);

/* Bind to port 5555 on 127.0.0.1 */
$server->bind("tcp://127.0.0.1:5555");

/* Create new pollset for incoming/outgoing message */
$poll = new ZMQPoll();

/* Add the object and listen for poll in/out */
$id = $poll->add($server, ZMQ::POLL_IN | ZMQ::POLL_OUT);
echo "Added object with id " . $id . "\n";

/* Initialise readable and writable arrays */
$readable = array();
$writable = array();

while (true) {
   /* Amount of events retrieved */
   $events = 0;

   try {
       /* Poll until there is something to do */
       $events = $poll->poll($readable, $writable, -1);
       $errors = $poll->getLastErrors();

       if (count($errors) > 0) {
           foreach ($errors as $error) {
               echo "Error polling object " . $error . "\n";
           }
       }
   } catch (ZMQPollException $e) {
       echo "poll failed: " . $e->getMessage() . "\n";
   }

   if ($events > 0) {
       /* Loop through readable objects and recv messages */
       foreach ($readable as $r) {
           try {
               echo "Received message: " . $r->recv() . "\n";
           } catch (ZMQException $e) {
               echo "recv failed: " . $e->getMessage() . "\n";
           }
       }

       /* Loop through writable and send back messages */
       foreach ($writable as $w) {
           try {
               $w->send("Got it!");
           } catch (ZMQException $e) {
               echo "send failed: " . $e->getMessage() . "\n";
           }
       }
   }
}
?>

返回值

Returns an integer representing amount of items with activity. Throws ZMQPollException on error.

ZMQPoll::getLastErrors
ZMQPoll::remove
ZMQPoll


Remove item from poll set

ZMQPoll::poll
ZMQDevice
ZMQPoll
PHP Manual

ZMQPoll::remove

(PECL zmq >= 0.5.0)

ZMQPoll::remove — Remove item from poll set

说明

public boolean ZMQPoll::remove ( mixed $item )

Remove item from the poll set. The item parameter can be ZMQSocket object, a stream resource or the id returned from ZMQPoll::add() method.

参数

item

The ZMQSocket object, PHP stream or string id of the item.

返回值

Returns true if the item was removed and false if the object with given id does not exist in the poll set.

ZMQPoll::poll
ZMQDevice
ZMQPoll


The ZMQDevice class

(No version information available, might only be in Git)

简介

类摘要

ZMQDevice {
/* Methods */
__construct ( ZMQSocket $frontend , ZMQSocket $backend [, ZMQSocket $listener ] )
public ZMQDevice getIdleTimeout ( void )
public ZMQDevice getTimerTimeout ( void )
public void run ( void )
public ZMQDevice setIdleCallback ( callable $cb_func , integer $timeout [, mixed $user_data ] )
public ZMQDevice setIdleTimeout ( integer $timeout )
public ZMQDevice setTimerCallback ( callable $cb_func , integer $timeout [, mixed $user_data ] )
public ZMQDevice setTimerTimeout ( integer $timeout )
}

Table of Contents

  • ZMQDevice::__construct — Construct a new device
  • ZMQDevice::getIdleTimeout — Get the idle timeout
  • ZMQDevice::getTimerTimeout — Get the timer timeout
  • ZMQDevice::run — Run the new device
  • ZMQDevice::setIdleCallback — Set the idle callback function
  • ZMQDevice::setIdleTimeout — Set the idle timeout
  • ZMQDevice::setTimerCallback — Set the timer callback function
  • ZMQDevice::setTimerTimeout — Set the timer timeout
ZMQPoll::remove
ZMQDevice::__construct
0MQ消息系统


Construct a new device

ZMQDevice
ZMQDevice::getIdleTimeout
ZMQDevice
PHP Manual

ZMQDevice::__construct

(PECL zmq >= 0.5.0)

ZMQDevice::__construct — Construct a new device

说明

ZMQDevice::__construct ( ZMQSocket $frontend , ZMQSocket $backend [, ZMQSocket $listener ] )

"?MQ devices can do intermediation of addresses, services, queues, or any other abstraction you care to define above the message and socket layers." -- zguide

参数

frontend

Frontend parameter for the devices. Usually where there messages are coming.

backend

Backend parameter for the devices. Usually where there messages going to.

listener

Listener socket, which receives a copy of all messages going both directions. The type of this socket should be SUB, PULL or DEALER.

返回值

Call to this method will prepare the device. Usually devices are very long running processes so running this method from interactive script is not recommended. This method throw ZMQDeviceException if the device cannot be started.

ZMQDevice
ZMQDevice::getIdleTimeout
ZMQDevice


Get the idle timeout

ZMQDevice::__construct
ZMQDevice::getTimerTimeout
ZMQDevice
PHP Manual

ZMQDevice::getIdleTimeout

(No version information available, might only be in Git)

ZMQDevice::getIdleTimeout — Get the idle timeout

说明

public ZMQDevice ZMQDevice::getIdleTimeout ( void )

Gets the idle callback timeout value. Added in ZMQ extension version 1.1.0.

返回值

This method returns the idle callback timeout value.

ZMQDevice::__construct
ZMQDevice::getTimerTimeout
ZMQDevice


Get the timer timeout

ZMQDevice::getIdleTimeout
ZMQDevice::run
ZMQDevice
PHP Manual

ZMQDevice::getTimerTimeout

(No version information available, might only be in Git)

ZMQDevice::getTimerTimeout — Get the timer timeout

说明

public ZMQDevice ZMQDevice::getTimerTimeout ( void )

Gets the timer callback timeout value. Added in ZMQ extension version 1.1.0.

返回值

This method returns the timer timeout value.

ZMQDevice::getIdleTimeout
ZMQDevice::run
ZMQDevice


Run the new device

ZMQDevice::getTimerTimeout
ZMQDevice::setIdleCallback
ZMQDevice
PHP Manual

ZMQDevice::run

(No version information available, might only be in Git)

ZMQDevice::run — Run the new device

说明

public void ZMQDevice::run ( void )

Runs the device.

参数

此函数没有参数。

返回值

Call to this method will block until the device is running. It is not recommended that devices are used from interactive scripts. On failure this method will throw ZMQDeviceException.

ZMQDevice::getTimerTimeout
ZMQDevice::setIdleCallback
ZMQDevice


Set the idle callback function

ZMQDevice::run
ZMQDevice::setIdleTimeout
ZMQDevice
PHP Manual

ZMQDevice::setIdleCallback

(No version information available, might only be in Git)

ZMQDevice::setIdleCallback — Set the idle callback function

说明

public ZMQDevice ZMQDevice::setIdleCallback ( callable $cb_func , integer $timeout [, mixed $user_data ] )

Sets the idle callback function. If idle timeout is defined the idle callback function shall be called if the internal poll loop times out without events. If the callback function returns false or a value that evaluates to false the device is stopped. The callback function signature is callback (mixed $user_data).

参数

cb_func

Callback function to invoke when the device is idle. Returning false or a value that evaluates to false from this function will cause the device to stop.

timeout

How often to invoke the idle callback in milliseconds. The idle callback is invoked periodically when there is no activity on the device. The timeout value guarantees that there is at least this amount of milliseconds between invocations of the callback function.

user_data

Additional data to pass to the callback function.

返回值

On success this method returns the current object.

ZMQDevice::run
ZMQDevice::setIdleTimeout
ZMQDevice


Set the idle timeout

ZMQDevice::setIdleCallback
ZMQDevice::setTimerCallback
ZMQDevice
PHP Manual

ZMQDevice::setIdleTimeout

(No version information available, might only be in Git)

ZMQDevice::setIdleTimeout — Set the idle timeout

说明

public ZMQDevice ZMQDevice::setIdleTimeout ( integer $timeout )

Sets the idle callback timeout value. The idle callback is invoked periodically when the device is idle.

参数

timeout

The idle callback timeout value.

返回值

On success this method returns the current object.

ZMQDevice::setIdleCallback
ZMQDevice::setTimerCallback
ZMQDevice


Set the timer callback function

ZMQDevice::setIdleTimeout
ZMQDevice::setTimerTimeout
ZMQDevice
PHP Manual

ZMQDevice::setTimerCallback

(No version information available, might only be in Git)

ZMQDevice::setTimerCallback — Set the timer callback function

说明

public ZMQDevice ZMQDevice::setTimerCallback ( callable $cb_func , integer $timeout [, mixed $user_data ] )

Sets the timer callback function. The timer callback will be invoked after timeout has passed. The difference between idle and timer callbacks are that idle callback is invoked only when the device is idle. The callback function signature is callback (mixed $user_data). Added in ZMQ extension version 1.1.0.

参数

cb_func

Callback function to invoke when the device is idle. Returning false or a value that evaluates to false from this function will cause the device to stop.

timeout

How often to invoke the idle callback in milliseconds. The idle callback is invoked periodically when there is no activity on the device. The timeout value guarantees that there is at least this amount of milliseconds between invocations of the callback function.

user_data

Additional data to pass to the callback function.

返回值

On success this method returns the current object.

ZMQDevice::setIdleTimeout
ZMQDevice::setTimerTimeout
ZMQDevice


Set the timer timeout

ZMQDevice::setTimerCallback
ZooKeeper
ZMQDevice
PHP Manual

ZMQDevice::setTimerTimeout

(No version information available, might only be in Git)

ZMQDevice::setTimerTimeout — Set the timer timeout

说明

public ZMQDevice ZMQDevice::setTimerTimeout ( integer $timeout )

Sets the timer callback timeout value. The timer callback is invoked periodically if it's set. Added in ZMQ extension version 1.1.0.

参数

timeout

The timer callback timeout value.

返回值

On success this method returns the current object.

ZMQDevice::setTimerCallback
ZooKeeper
ZMQDevice


ZooKeeper

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • ZooKeeper — The ZooKeeper class
    • Zookeeper::addAuth — Specify application credentials.
    • Zookeeper::connect — Create a handle to used communicate with zookeeper.
    • Zookeeper::__construct — Create a handle to used communicate with zookeeper.
    • Zookeeper::create — Create a node synchronously.
    • Zookeeper::delete — Delete a node in zookeeper synchronously.
    • Zookeeper::exists — Checks the existence of a node in zookeeper synchronously.
    • Zookeeper::get — Gets the data associated with a node synchronously.
    • Zookeeper::getAcl — Gets the acl associated with a node synchronously.
    • Zookeeper::getClientId — return the client session id, only valid if the connections is currently connected (ie. last watcher state is ZOO_CONNECTED_STATE)
    • Zookeeper::getRecvTimeout — Return the timeout for this session, only valid if the connections is currently connected (ie. last watcher state is ZOO_CONNECTED_STATE). This value may change after a server re-connect.
    • Zookeeper::getState — Get the state of the zookeeper connection.
    • Zookeeper::isRecoverable — Checks if the current zookeeper connection state can be recovered.
    • Zookeeper::set — Sets the data associated with a node.
    • Zookeeper::setAcl — Sets the acl associated with a node synchronously.
    • Zookeeper::setDebugLevel — Sets the debugging level for the library.
    • Zookeeper::setDeterministicConnOrder — Enable/disable quorum endpoint order randomization.
    • Zookeeper::setLogStream — Sets the stream to be used by the library for logging.
    • Zookeeper::setWatcher — Set a watcher function.
ZMQDevice::setTimerTimeout
简介
其它服务


简介

This extension uses libzookeeper library to provide API for communicating with ZooKeeper service.

ZooKeeper is an Apache project that enables centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.

ZooKeeper
安装／配置
ZooKeeper


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
ZooKeeper


需求

This extension requires » ZooKeeper C Binding (version 3.4.1 or greater). For more information, see » ZooKeeper Programmer's Guide.

This extension requires PHP version 5.2.0 or higher.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/zookeeper.

To enable zookeeper support, configure with --with-libzookeeper-dir=DIR . DIR is the install prefix of ZooKeeper C Binding, which must contain the include/zookeeper/zookeeper.h

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Zookeeper 配置选项
名字 | 默认 | 可修改范围 | Changelog
zookeeper.recv_timeout | 10000 | PHP_INI_ALL |
zookeeper.session_lock | 1 | PHP_INI_SYSTEM |
zookeeper.sess_lock_wait | 150000 | PHP_INI_ALL |
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

zookeeper.recv_timeout integer

Default the timeout for any ZooKeeper session.

zookeeper.session_lock integer

Enable PHP session locking.

zookeeper.sess_lock_wait integer

PHP Session spin lock retry wait time in microseconds. Be carefull when setting this value. Valid values are integers, where 0 is interpreted as the default value. Negative values result in a reduces locking to a try lock.

安装
资源类型
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
ZooKeeper
ZooKeeper


预定义常量
Zookeeper::addAuth
ZooKeeper
PHP Manual

The ZooKeeper class

(PECL zookeeper >= 0.1.0)

简介

Represents ZooKeeper session.

类摘要

Zookeeper {
/* 方法 */
public __construct ([ string $host = '' [, callable $watcher_cb = null [, int $recv_timeout = 10000 ]]] )
public bool addAuth ( string $scheme , string $cert [, callable $completion_cb = null ] )
public void connect ( string $host [, callable $watcher_cb = null [, int $recv_timeout = 10000 ]] )
public string create ( string $path , string $value , array $acls [, int $flags = null ] )
public bool delete ( string $path [, int $version = -1 ] )
public bool exists ( string $path [, callable $watcher_cb = null ] )
public string get ( string $path [, callable $watcher_cb = null [, array &$stat = null [, int $max_size = 0 ]]] )
public array getAcl ( string $path )
public int getClientId ( void )
public int getRecvTimeout ( void )
public int getState ( void )
public bool isRecoverable ( void )
public bool set ( string $path , string $value [, int $version = -1 [, array &$stat = null ]] )
public bool setAcl ( string $path , int $version , array $acl )
public static bool setDebugLevel ( int $logLevel )
public static bool setDeterministicConnOrder ( bool $yesOrNo )
public bool setLogStream ( resource $stream )
public bool setWatcher ( callable $watcher_cb )
/* 常量 */
const integer PERM_READ = 1 ;
const integer PERM_WRITE = 2 ;
const integer PERM_CREATE = 4 ;
const integer PERM_DELETE = 8 ;
const integer PERM_ADMIN = 16 ;
const integer PERM_ALL = 31 ;
const integer LOG_LEVEL_ERROR = 1 ;
const integer LOG_LEVEL_WARN = 2 ;
const integer LOG_LEVEL_INFO = 3 ;
const integer LOG_LEVEL_DEBUG = 4 ;
const integer EXPIRED_SESSION_STATE = -112 ;
const integer AUTH_FAILED_STATE = -113 ;
const integer CONNECTING_STATE = 1 ;
const integer ASSOCIATING_STATE = 2 ;
const integer CONNECTED_STATE = 3 ;
const integer READONLY_STATE = 5 ;
const integer NOTCONNECTED_STATE = 999 ;
}

预定义常量

ZooKeeper Permissions

Zookeeper::PERM_READ

Can read nodes value and list its children

Zookeeper::PERM_WRITE

Can set the nodes value

Zookeeper::PERM_CREATE

Can create children

Zookeeper::PERM_DELETE

Can delete children

Zookeeper::PERM_ADMIN

Can execute set_acl()

Zookeeper::PERM_ALL

All of the above flags ORd together

ZooKeeper Log Levels

Zookeeper::LOG_LEVEL_ERROR

Outputs only error mesages

Zookeeper::LOG_LEVEL_WARN

Outputs errors/warnings

Zookeeper::LOG_LEVEL_INFO

Outputs big action messages besides errors/warnings

Zookeeper::LOG_LEVEL_DEBUG

Outputs all

ZooKeeper States

Zookeeper::EXPIRED_SESSION_STATE

Connected but session expired

Zookeeper::AUTH_FAILED_STATE

Connected but auth failed

Zookeeper::CONNECTING_STATE

Connecting

Zookeeper::ASSOCIATING_STATE

Associating

Zookeeper::CONNECTED_STATE

Connected

Zookeeper::READONLY_STATE

TODO: help us improve this extension.

Zookeeper::NOTCONNECTED_STATE

Connection failed

Table of Contents

  • Zookeeper::addAuth — Specify application credentials.
  • Zookeeper::connect — Create a handle to used communicate with zookeeper.
  • Zookeeper::__construct — Create a handle to used communicate with zookeeper.
  • Zookeeper::create — Create a node synchronously.
  • Zookeeper::delete — Delete a node in zookeeper synchronously.
  • Zookeeper::exists — Checks the existence of a node in zookeeper synchronously.
  • Zookeeper::get — Gets the data associated with a node synchronously.
  • Zookeeper::getAcl — Gets the acl associated with a node synchronously.
  • Zookeeper::getClientId — return the client session id, only valid if the connections is currently connected (ie. last watcher state is ZOO_CONNECTED_STATE)
  • Zookeeper::getRecvTimeout — Return the timeout for this session, only valid if the connections is currently connected (ie. last watcher state is ZOO_CONNECTED_STATE). This value may change after a server re-connect.
  • Zookeeper::getState — Get the state of the zookeeper connection.
  • Zookeeper::isRecoverable — Checks if the current zookeeper connection state can be recovered.
  • Zookeeper::set — Sets the data associated with a node.
  • Zookeeper::setAcl — Sets the acl associated with a node synchronously.
  • Zookeeper::setDebugLevel — Sets the debugging level for the library.
  • Zookeeper::setDeterministicConnOrder — Enable/disable quorum endpoint order randomization.
  • Zookeeper::setLogStream — Sets the stream to be used by the library for logging.
  • Zookeeper::setWatcher — Set a watcher function.
预定义常量
Zookeeper::addAuth
ZooKeeper


Specify application credentials.

ZooKeeper
Zookeeper::connect
ZooKeeper
PHP Manual

Zookeeper::addAuth

(PECL zookeeper >= 0.1.0)

Zookeeper::addAuth — Specify application credentials.

说明

public bool Zookeeper::addAuth ( string $scheme , string $cert [, callable $completion_cb = null ] )

The application calls this function to specify its credentials for purposes of authentication. The server will use the security provider specified by the scheme parameter to authenticate the client connection. If the authentication request has failed: - the server connection is dropped. - the watcher is called with the ZOO_AUTH_FAILED_STATE value as the state parameter.

参数

scheme

The id of authentication scheme. Natively supported: "digest" password-based authentication

cert

Application credentials. The actual value depends on the scheme.

completion_cb

The routine to invoke when the request completes. One of the following result codes may be passed into the completion callback: - ZOK operation completed successfully - ZAUTHFAILED authentication failed

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

This method emits PHP error/warning when parameters count or types are wrong or operation fails.

范例

Example #1 Zookeeper::addAuth() example

Add auth before requesting node value.

<?php
$zookeeper = new Zookeeper('locahost:2181');
$path = '/path/to/node';
$value = 'nodevalue';
$zookeeper->set($path, $value);

$zookeeper->addAuth('digest', 'user0:passwd0');
$r = $zookeeper->get($path);
if ($r)
  echo $r;
else
  echo 'ERR';
?>

以上例程会输出：

nodevalue

参见

  • Zookeeper::create() - Create a node synchronously.
  • Zookeeper::setAcl() - Sets the acl associated with a node synchronously.
  • Zookeeper::getAcl() - Gets the acl associated with a node synchronously.
  • ZooKeeper States
ZooKeeper
Zookeeper::connect
ZooKeeper


Create a handle to used communicate with zookeeper.

Zookeeper::addAuth
Zookeeper::__construct
ZooKeeper
PHP Manual

Zookeeper::connect

(PECL zookeeper >= 0.2.0)

Zookeeper::connect — Create a handle to used communicate with zookeeper.

说明

public void Zookeeper::connect ( string $host [, callable $watcher_cb = null [, int $recv_timeout = 10000 ]] )

This method creates a new handle and a zookeeper session that corresponds to that handle. Session establishment is asynchronous, meaning that the session should not be considered established until (and unless) an event of state ZOO_CONNECTED_STATE is received.

参数

host

Comma separated host:port pairs, each corresponding to a zk server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002"

watcher_cb

The global watcher callback function. When notifications are triggered this function will be invoked.

recv_timeout

The timeout for this session, only valid if the connections is currently connected (ie. last watcher state is ZOO_CONNECTED_STATE).

错误／异常

This method emits PHP error/warning when parameters count or types are wrong or could not init instance.

参见

  • Zookeeper::__construct() - Create a handle to used communicate with zookeeper.
Zookeeper::addAuth
Zookeeper::__construct
ZooKeeper


Create a handle to used communicate with zookeeper.

Zookeeper::connect
Zookeeper::create
ZooKeeper
PHP Manual

Zookeeper::__construct

(PECL zookeeper >= 0.1.0)

Zookeeper::__construct — Create a handle to used communicate with zookeeper.

说明

public Zookeeper::__construct ([ string $host = '' [, callable $watcher_cb = null [, int $recv_timeout = 10000 ]]] )

This method creates a new handle and a zookeeper session that corresponds to that handle. Session establishment is asynchronous, meaning that the session should not be considered established until (and unless) an event of state ZOO_CONNECTED_STATE is received.

参数

host

comma separated host:port pairs, each corresponding to a zk server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002"

watcher_cb

the global watcher callback function. When notifications are triggered this function will be invoked.

recv_timeout

the timeout for this session, only valid if the connections is currently connected (ie. last watcher state is ZOO_CONNECTED_STATE).

错误／异常

This method emits PHP error/warning when parameters count or types are wrong or could not init instance.

参见

  • Zookeeper::connect() - Create a handle to used communicate with zookeeper.
Zookeeper::connect
Zookeeper::create
ZooKeeper


Create a node synchronously.

Zookeeper::__construct
Zookeeper::delete
ZooKeeper
PHP Manual

Zookeeper::create

(PECL zookeeper >= 0.1.0)

Zookeeper::create — Create a node synchronously.

说明

public string Zookeeper::create ( string $path , string $value , array $acls [, int $flags = null ] )

This method will create a node in ZooKeeper. A node can only be created if it does not already exists. The Create Flags affect the creation of nodes. If ZOO_EPHEMERAL flag is set, the node will automatically get removed if the client session goes away. If the ZOO_SEQUENCE flag is set, a unique monotonically increasing sequence number is appended to the path name.

参数

path

The name of the node. Expressed as a file name with slashes separating ancestors of the node.

value

The data to be stored in the node.

acls

The initial ACL of the node. The ACL must not be null or empty.

flags

this parameter can be set to 0 for normal create or an OR of the Create Flags

返回值

Returns the path of the new node (this might be different than the supplied path because of the ZOO_SEQUENCE flag) on success, and false on failure.

错误／异常

This method emits PHP error/warning when parameters count or types are wrong or fail to create node.

范例

Example #1 Zookeeper::create() example

Create a new node.

<?php
$zookeeper = new Zookeeper('locahost:2181');
$aclArray = array(
  array(
    'perms'  => Zookeeper::PERM_ALL,
    'scheme' => 'world',
    'id'     => 'anyone',
  )
);
$path = '/path/to/newnode';
$realPath = $zookeeper->create($path, null, $aclArray);
if ($realPath)
  echo $realPath;
else
  echo 'ERR';
?>

以上例程会输出：

/path/to/newnode

参见

  • Zookeeper::delete() - Delete a node in zookeeper synchronously.
  • ZooKeeper Permissions
Zookeeper::__construct
Zookeeper::delete
ZooKeeper


Delete a node in zookeeper synchronously.

Zookeeper::create
Zookeeper::exists
ZooKeeper
PHP Manual

Zookeeper::delete

(PECL zookeeper >= 0.2.0)

Zookeeper::delete — Delete a node in zookeeper synchronously.

说明

public bool Zookeeper::delete ( string $path [, int $version = -1 ] )

参数

path

The name of the node. Expressed as a file name with slashes separating ancestors of the node.

version

The expected version of the node. The function will fail if the actual version of the node does not match the expected version. If -1 is used the version check will not take place.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

This method emits PHP error/warning when parameters count or types are wrong or fail to delete node.

范例

Example #1 Zookeeper::delete() example

Delete a existing node.

<?php
$zookeeper = new Zookeeper('locahost:2181');
$path = '/path/to/node';
$r = $zookeeper->delete($path);
if ($r)
  echo 'SUCCESS';
else
  echo 'ERR';
?>

以上例程会输出：

SUCCESS

参见

  • Zookeeper::create() - Create a node synchronously.
Zookeeper::create
Zookeeper::exists
ZooKeeper


Checks the existence of a node in zookeeper synchronously.

Zookeeper::delete
Zookeeper::get
ZooKeeper
PHP Manual

Zookeeper::exists

(PECL zookeeper >= 0.1.0)

Zookeeper::exists — Checks the existence of a node in zookeeper synchronously.

说明

public bool Zookeeper::exists ( string $path [, callable $watcher_cb = null ] )

参数

path

The name of the node. Expressed as a file name with slashes separating ancestors of the node.

watcher_cb

if nonzero, a watch will be set at the server to notify the client if the node changes. The watch will be set even if the node does not

返回值

Returns true/false on success, and false on failure.

错误／异常

This method emits PHP error/warning when parameters count or types are wrong or fail to check the existence of a node.

范例

Example #1 Zookeeper::exists() example

Check the existence of a node.

<?php
$zookeeper = new Zookeeper('locahost:2181');
$path = '/path/to/node';
$r = $zookeeper->exists($path);
if ($r)
  echo 'EXISTS';
else
  echo 'N/A or ERR';
?>

以上例程会输出：

EXISTS

参见

  • Zookeeper::get() - Gets the data associated with a node synchronously.
Zookeeper::delete
Zookeeper::get
ZooKeeper


Gets the data associated with a node synchronously.

Zookeeper::exists
Zookeeper::getAcl
ZooKeeper
PHP Manual

Zookeeper::get

(PECL zookeeper >= 0.1.0)

Zookeeper::get — Gets the data associated with a node synchronously.

说明

public string Zookeeper::get ( string $path [, callable $watcher_cb = null [, array &$stat = null [, int $max_size = 0 ]]] )

参数

path

The name of the node. Expressed as a file name with slashes separating ancestors of the node.

watcher_cb

If nonzero, a watch will be set at the server to notify the client if the node changes.

stat

If not NULL, will hold the value of stat for the path on return.

max_size

Max size of the data. If 0 is used, this method will return the whole data.

返回值

Returns the data on success, and false on failure.

错误／异常

This method emits PHP error/warning when parameters count or types are wrong or fail to get value from node.

范例

Example #1 Zookeeper::get() example

Get value from node.

<?php
$zookeeper = new Zookeeper('locahost:2181');
$path = '/path/to/node';
$value = 'nodevalue';
$zookeeper->set($path, $value);

$r = $zookeeper->get($path);
if ($r)
  echo $r;
else
  echo 'ERR';
?>

以上例程会输出：

nodevalue

参见

  • Zookeeper::set() - Sets the data associated with a node.
Zookeeper::exists
Zookeeper::getAcl
ZooKeeper


Gets the acl associated with a node synchronously.

Zookeeper::get
Zookeeper::getClientId
ZooKeeper
PHP Manual

Zookeeper::getAcl

(PECL zookeeper >= 0.1.0)

Zookeeper::getAcl — Gets the acl associated with a node synchronously.

说明

public array Zookeeper::getAcl ( string $path )

参数

path

The name of the node. Expressed as a file name with slashes separating ancestors of the node.

返回值

Return acl array on success and false on failure.

错误／异常

This method emits PHP error/warning when parameters count or types are wrong or fail to get ACL of a node.

范例

Example #1 Zookeeper::getAcl() example

Get ACL of a node.

<?php
$zookeeper = new Zookeeper('locahost:2181');
$aclArray = array(
  array(
    'perms'  => Zookeeper::PERM_ALL,
    'scheme' => 'world',
    'id'     => 'anyone',
  )
);
$path = '/path/to/newnode';
$zookeeper->setAcl($path, $aclArray);

$r = $zookeeper->getAcl($path);
if ($r)
  var_dump($r);
else
  echo 'ERR';
?>

以上例程会输出：

array(1) {
  [0]=>
  array(3) {
    ["perms"]=>
    int(31)
    ["scheme"]=>
    string(5) "world"
    ["id"]=>
    string(6) "anyone"
  }
}

参见

  • Zookeeper::create() - Create a node synchronously.
  • Zookeeper::setAcl() - Sets the acl associated with a node synchronously.
  • ZooKeeper Permissions
Zookeeper::get
Zookeeper::getClientId
ZooKeeper


return the client session id, only valid if the connections is currently connected (ie. last watcher state is ZOO_CONNECTED_STATE)

Zookeeper::getAcl
Zookeeper::getRecvTimeout
ZooKeeper
PHP Manual

Zookeeper::getClientId

(PECL zookeeper >= 0.1.0)

Zookeeper::getClientId — return the client session id, only valid if the connections is currently connected (ie. last watcher state is ZOO_CONNECTED_STATE)

说明

public int Zookeeper::getClientId ( void )

返回值

Returns the client session id on success, and false on failure.

错误／异常

This method emits PHP error/warning when it could not get client session id.

参见

  • Zookeeper::__construct() - Create a handle to used communicate with zookeeper.
  • Zookeeper::connect() - Create a handle to used communicate with zookeeper.
  • Zookeeper::getState() - Get the state of the zookeeper connection.
  • ZooKeeper States
Zookeeper::getAcl
Zookeeper::getRecvTimeout
ZooKeeper


Return the timeout for this session, only valid if the connections is currently connected (ie. last watcher state is ZOO_CONNECTED_STATE). This value may change after a server re-connect.

Zookeeper::getClientId
Zookeeper::getState
ZooKeeper
PHP Manual

Zookeeper::getRecvTimeout

(PECL zookeeper >= 0.1.0)

Zookeeper::getRecvTimeout — Return the timeout for this session, only valid if the connections is currently connected (ie. last watcher state is ZOO_CONNECTED_STATE). This value may change after a server re-connect.

说明

public int Zookeeper::getRecvTimeout ( void )

返回值

Returns the timeout for this session on success, and false on failure.

错误／异常

This method emits PHP error/warning when operation fails.

参见

  • Zookeeper::__construct() - Create a handle to used communicate with zookeeper.
  • Zookeeper::connect() - Create a handle to used communicate with zookeeper.
Zookeeper::getClientId
Zookeeper::getState
ZooKeeper


Get the state of the zookeeper connection.

Zookeeper::getRecvTimeout
Zookeeper::isRecoverable
ZooKeeper
PHP Manual

Zookeeper::getState

(PECL zookeeper >= 0.1.0)

Zookeeper::getState — Get the state of the zookeeper connection.

说明

public int Zookeeper::getState ( void )

返回值

Returns the state of zookeeper connection on success, and false on failure.

错误／异常

This method emits PHP error/warning when it fails to get state of zookeeper connection.

参见

  • Zookeeper::__construct() - Create a handle to used communicate with zookeeper.
  • Zookeeper::connect() - Create a handle to used communicate with zookeeper.
  • Zookeeper::getClientId() - return the client session id, only valid if the connections is currently connected (ie. last watcher state is ZOO_CONNECTED_STATE)
  • ZooKeeper States
Zookeeper::getRecvTimeout
Zookeeper::isRecoverable
ZooKeeper


Checks if the current zookeeper connection state can be recovered.

Zookeeper::getState
Zookeeper::set
ZooKeeper
PHP Manual

Zookeeper::isRecoverable

(PECL zookeeper >= 0.1.0)

Zookeeper::isRecoverable — Checks if the current zookeeper connection state can be recovered.

说明

public bool Zookeeper::isRecoverable ( void )

The application must close the zhandle and try to reconnect.

返回值

Returns true/false on success, and false on failure.

错误／异常

This method emits PHP error/warning when operation fails.

参见

  • Zookeeper::__construct() - Create a handle to used communicate with zookeeper.
  • Zookeeper::connect() - Create a handle to used communicate with zookeeper.
  • Zookeeper::getClientId() - return the client session id, only valid if the connections is currently connected (ie. last watcher state is ZOO_CONNECTED_STATE)
  • ZooKeeper States
Zookeeper::getState
Zookeeper::set
ZooKeeper


Sets the data associated with a node.

Zookeeper::isRecoverable
Zookeeper::setAcl
ZooKeeper
PHP Manual

Zookeeper::set

(PECL zookeeper >= 0.1.0)

Zookeeper::set — Sets the data associated with a node.

说明

public bool Zookeeper::set ( string $path , string $value [, int $version = -1 [, array &$stat = null ]] )

参数

path

The name of the node. Expressed as a file name with slashes separating ancestors of the node.

value

The data to be stored in the node.

version

The expected version of the node. The function will fail if the actual version of the node does not match the expected version. If -1 is used the version check will not take place.

stat

If not NULL, will hold the value of stat for the path on return.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

This method emits PHP error/warning when parameters count or types are wrong or fail to save value to node.

范例

Example #1 Zookeeper::set() example

Save value to node.

<?php
$zookeeper = new Zookeeper('locahost:2181');
$path = '/path/to/node';
$value = 'nodevalue';
$r = $zookeeper->set($path, $value);
if ($r)
  echo 'SUCCESS';
else
  echo 'ERR';
?>

以上例程会输出：

SUCCESS

参见

  • Zookeeper::create() - Create a node synchronously.
  • Zookeeper::get() - Gets the data associated with a node synchronously.
Zookeeper::isRecoverable
Zookeeper::setAcl
ZooKeeper


Sets the acl associated with a node synchronously.

Zookeeper::set
Zookeeper::setDebugLevel
ZooKeeper
PHP Manual

Zookeeper::setAcl

(PECL zookeeper >= 0.1.0)

Zookeeper::setAcl — Sets the acl associated with a node synchronously.

说明

public bool Zookeeper::setAcl ( string $path , int $version , array $acl )

参数

path

The name of the node. Expressed as a file name with slashes separating ancestors of the node.

version

The expected version of the path.

acl

The acl to be set on the path.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

This method emits PHP error/warning when parameters count or types are wrong or fail to set ACL for a node.

范例

Example #1 Zookeeper::setAcl() example

Set ACL for a node.

<?php
$zookeeper = new Zookeeper('locahost:2181');
$aclArray = array(
  array(
    'perms'  => Zookeeper::PERM_ALL,
    'scheme' => 'world',
    'id'     => 'anyone',
  )
);
$path = '/path/to/newnode';
$zookeeper->setAcl($path, $aclArray);

$r = $zookeeper->getAcl($path);
if ($r)
  var_dump($r);
else
  echo 'ERR';
?>

以上例程会输出：

array(1) {
  [0]=>
  array(3) {
    ["perms"]=>
    int(31)
    ["scheme"]=>
    string(5) "world"
    ["id"]=>
    string(6) "anyone"
  }
}

参见

  • Zookeeper::create() - Create a node synchronously.
  • Zookeeper::getAcl() - Gets the acl associated with a node synchronously.
  • ZooKeeper Permissions
Zookeeper::set
Zookeeper::setDebugLevel
ZooKeeper


Sets the debugging level for the library.

Zookeeper::setAcl
Zookeeper::setDeterministicConnOrder
ZooKeeper
PHP Manual

Zookeeper::setDebugLevel

(PECL zookeeper >= 0.1.0)

Zookeeper::setDebugLevel — Sets the debugging level for the library.

说明

public static bool Zookeeper::setDebugLevel ( int $logLevel )

参数

logLevel

ZooKeeper log level constants.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

This method emits PHP error/warning when parameters count or types are wrong or fail to set debug level.

范例

Example #1 Zookeeper::setDebugLevel() example

Set debugl level.

<?php
$r = Zookeeper::setDebugLevel(Zookeeper::LOG_LEVEL_WARN);
if ($r)
  echo 'SUCCESS';
else
  echo 'ERR';
?>
?>

以上例程会输出：

SUCCESS

参见

  • ZooKeeper Log Levels
Zookeeper::setAcl
Zookeeper::setDeterministicConnOrder
ZooKeeper


Enable/disable quorum endpoint order randomization.

Zookeeper::setDebugLevel
Zookeeper::setLogStream
ZooKeeper
PHP Manual

Zookeeper::setDeterministicConnOrder

(PECL zookeeper >= 0.1.0)

Zookeeper::setDeterministicConnOrder — Enable/disable quorum endpoint order randomization.

说明

public static bool Zookeeper::setDeterministicConnOrder ( bool $yesOrNo )

If passed a non-zero value, will make the client connect to quorum peers in the order as specified in the zookeeper_init() call. A zero value causes zookeeper_init() to permute the peer endpoints which is good for more even client connection distribution among the quorum peers.

参数

yesOrNo

Enable/disable quorum endpoint order randomization.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

This method emits PHP error/warning when parameters count or types are wrong or operation fails.

注释

Caution

Note: typically this method should NOT be used outside of testing.

Note: 因为是一个语言构造器而不是一个函数，不能被 可变函数 调用。

Warning

此函数（还）不能安全地适用于二进制对象！

Note: register_globals 重要说明：

自 PHP 4.2.0 起，PHP 指令 register_globals 的默认值为 off。PHP 社区鼓励开发者不要依赖于此指令, 用其他手段替代，例如superglobals。

参见

  • Zookeeper::__construct() - Create a handle to used communicate with zookeeper.
  • Zookeeper::connect() - Create a handle to used communicate with zookeeper.
Zookeeper::setDebugLevel
Zookeeper::setLogStream
ZooKeeper


Sets the stream to be used by the library for logging.

Zookeeper::setDeterministicConnOrder
Zookeeper::setWatcher
ZooKeeper
PHP Manual

Zookeeper::setLogStream

(PECL zookeeper >= 0.1.0)

Zookeeper::setLogStream — Sets the stream to be used by the library for logging.

说明

public bool Zookeeper::setLogStream ( resource $stream )

The zookeeper library uses stderr as its default log stream. Application must make sure the stream is writable. Passing in NULL resets the stream to its default value (stderr).

参数

stream

The stream to be used by the library for logging.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

This method emits PHP error/warning when parameters count or types are wrong or operation fails.

参见

  • Zookeeper::setDebugLevel() - Sets the debugging level for the library.
Zookeeper::setDeterministicConnOrder
Zookeeper::setWatcher
ZooKeeper


Set a watcher function.

Zookeeper::setLogStream
搜索引擎扩展
ZooKeeper
PHP Manual

Zookeeper::setWatcher

(PECL zookeeper >= 0.1.0)

Zookeeper::setWatcher — Set a watcher function.

说明

public bool Zookeeper::setWatcher ( callable $watcher_cb )

参数

watcher_cb

A watch will be set at the server to notify the client if the node changes.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

This method emits PHP error/warning when parameters count or types are wrong or fail to set watcher.

参见

  • Zookeeper::exists() - Checks the existence of a node in zookeeper synchronously.
  • Zookeeper::get() - Gets the data associated with a node synchronously.
Zookeeper::setLogStream
搜索引擎扩展
ZooKeeper


搜索引擎扩展

  • mnoGoSearch
    • 简介
    • 安装／配置
    • 预定义常量
    • mnoGoSearch 函数
  • Solr — Apache Solr
    • 简介
    • 安装／配置
    • 预定义常量
    • Solr 函数
    • 范例
    • SolrUtils — The SolrUtils class
    • SolrInputDocument — The SolrInputDocument class
    • SolrDocument — The SolrDocument class
    • SolrDocumentField — The SolrDocumentField class
    • SolrObject — The SolrObject class
    • SolrClient — The SolrClient class
    • SolrResponse — The SolrResponse class
    • SolrQueryResponse — The SolrQueryResponse class
    • SolrUpdateResponse — The SolrUpdateResponse class
    • SolrPingResponse — The SolrPingResponse class
    • SolrGenericResponse — The SolrGenericResponse class
    • SolrParams — The SolrParams class
    • SolrModifiableParams — The SolrModifiableParams class
    • SolrQuery — The SolrQuery class
    • SolrDisMaxQuery — The SolrDisMaxQuery class
    • SolrCollapseFunction — The SolrCollapseFunction class
    • SolrException — The SolrException class
    • SolrClientException — The SolrClientException class
    • SolrServerException — The SolrServerException class
    • SolrIllegalArgumentException — The SolrIllegalArgumentException class
    • SolrIllegalOperationException — The SolrIllegalOperationException class
    • SolrMissingMandatoryParameterException — The SolrMissingMandatoryParameterException class
  • Sphinx — Sphinx 客户端
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • SphinxClient — SphinxClient 类
  • Swish — Swish Indexing
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Swish 函数
Zookeeper::setWatcher
mnoGoSearch
函数参考


mnoGoSearch

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • mnoGoSearch 函数
    • udm_add_search_limit — Add various search limits
    • udm_alloc_agent_array — Allocate mnoGoSearch session
    • udm_alloc_agent — Allocate mnoGoSearch session
    • udm_api_version — Get mnoGoSearch API version
    • udm_cat_list — Get all the categories on the same level with the current one
    • udm_cat_path — Get the path to the current category
    • udm_check_charset — Check if the given charset is known to mnogosearch
    • udm_clear_search_limits — Clear all mnoGoSearch search restrictions
    • udm_crc32 — Return CRC32 checksum of given string
    • udm_errno — Get mnoGoSearch error number
    • udm_error — Get mnoGoSearch error message
    • udm_find — Perform search
    • udm_free_agent — Free mnoGoSearch session
    • udm_free_ispell_data — Free memory allocated for ispell data
    • udm_free_res — Free mnoGoSearch result
    • udm_get_doc_count — Get total number of documents in database
    • udm_get_res_field — Fetch a result field
    • udm_get_res_param — Get mnoGoSearch result parameters
    • udm_hash32 — Return Hash32 checksum of given string
    • udm_load_ispell_data — Load ispell data
    • udm_set_agent_param — Set mnoGoSearch agent session parameters
搜索引擎扩展
简介
搜索引擎扩展


简介

These functions allow you to access the mnoGoSearch (former UdmSearch) free search engine. mnoGoSearch is a full-featured search engine software for intranet and internet servers, distributed under the GNU license. mnoGoSearch has a number of unique features, which makes it appropriate for a wide range of applications from search within your site to a specialized search system such as cooking recipes or newspaper search, FTP archive search, news articles search, etc. It offers full-text indexing and searching for HTML, PDF, and text documents. mnoGoSearch consists of two parts. The first is an indexing mechanism (indexer). The purpose of the indexer is to walk through HTTP, FTP, NEWS servers or local files, recursively grabbing all the documents and storing meta-data about that documents in an SQL database in a smart and effective manner. After every document is referenced by its corresponding URL, meta-data is collected by the indexer for later use in a search process. The search is performed via Web interface. C, CGI, PHP and Perl search front ends are included.

More information about mnoGoSearch can be found at » http://www.mnogosearch.org/.

Note:

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.1.0.

Note: 此扩展在 Windows 平台上不可用。

mnoGoSearch
安装／配置
mnoGoSearch


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
mnoGoSearch


需求

Download mnoGosearch from » http://www.mnogosearch.org/ and install it on your system. You need at least version 3.1.10 of mnoGoSearch installed to use these functions.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/mnogosearch.

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.1.0

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

Note:

PHP contains built-in MySQL access library, which can be used to access MySQL. It is known that mnoGoSearch is not compatible with this built-in library and can work only with generic MySQL libraries. Thus, if you use mnoGoSearch with MySQL, during PHP configuration you have to indicate the directory of your MySQL installation, that was used during mnoGoSearch configuration, i.e. for example: --with-mnogosearch --with-mysql=/usr .

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

UDM_FIELD_URLID (integer)
UDM_FIELD_URL (integer)
UDM_FIELD_CONTENT (integer)
UDM_FIELD_TITLE (integer)
UDM_FIELD_KEYWORDS (integer)
UDM_FIELD_DESC (integer)
UDM_FIELD_DESCRIPTION (integer)
UDM_FIELD_TEXT (integer)
UDM_FIELD_SIZE (integer)
UDM_FIELD_RATING (integer)
UDM_FIELD_SCORE (integer)
UDM_FIELD_MODIFIED (integer)
UDM_FIELD_ORDER (integer)
UDM_FIELD_CRC (integer)
UDM_FIELD_CATEGORY (integer)
UDM_FIELD_LANG (integer)
UDM_FIELD_CHARSET (integer)
UDM_PARAM_PAGE_SIZE (integer)
UDM_PARAM_PAGE_NUM (integer)
UDM_PARAM_SEARCH_MODE (integer)
UDM_PARAM_CACHE_MODE (integer)
UDM_PARAM_TRACK_MODE (integer)
UDM_PARAM_PHRASE_MODE (integer)
UDM_PARAM_CHARSET (integer)
UDM_PARAM_LOCAL_CHARSET (integer)
UDM_PARAM_BROWSER_CHARSET (integer)
UDM_PARAM_STOPTABLE (integer)
UDM_PARAM_STOP_TABLE (integer)
UDM_PARAM_STOPFILE (integer)
UDM_PARAM_STOP_FILE (integer)
UDM_PARAM_WEIGHT_FACTOR (integer)
UDM_PARAM_WORD_MATCH (integer)
UDM_PARAM_MAX_WORD_LEN (integer)
UDM_PARAM_MAX_WORDLEN (integer)
UDM_PARAM_MIN_WORD_LEN (integer)
UDM_PARAM_MIN_WORDLEN (integer)
UDM_PARAM_ISPELL_PREFIXES (integer)
UDM_PARAM_ISPELL_PREFIX (integer)
UDM_PARAM_PREFIXES (integer)
UDM_PARAM_PREFIX (integer)
UDM_PARAM_CROSS_WORDS (integer)
UDM_PARAM_CROSSWORDS (integer)
UDM_PARAM_VARDIR (integer)
UDM_PARAM_DATADIR (integer)
UDM_PARAM_HLBEG (integer)
UDM_PARAM_HLEND (integer)
UDM_PARAM_SYNONYM (integer)
UDM_PARAM_SEARCHD (integer)
UDM_PARAM_QSTRING (integer)
UDM_PARAM_REMOTE_ADDR (integer)
UDM_LIMIT_CAT (integer)
UDM_LIMIT_URL (integer)
UDM_LIMIT_TAG (integer)
UDM_LIMIT_LANG (integer)
UDM_LIMIT_DATE (integer)
UDM_PARAM_FOUND (integer)
UDM_PARAM_NUM_ROWS (integer)
UDM_PARAM_WORDINFO (integer)
UDM_PARAM_WORD_INFO (integer)
UDM_PARAM_SEARCHTIME (integer)
UDM_PARAM_SEARCH_TIME (integer)
UDM_PARAM_FIRST_DOC (integer)
UDM_PARAM_LAST_DOC (integer)
UDM_MODE_ALL (integer)
UDM_MODE_ANY (integer)
UDM_MODE_BOOL (integer)
UDM_MODE_PHRASE (integer)
UDM_CACHE_ENABLED (integer)
UDM_CACHE_DISABLED (integer)
UDM_TRACK_ENABLED (integer)
UDM_TRACK_DISABLED (integer)
UDM_PHRASE_ENABLED (integer)
UDM_PHRASE_DISABLED (integer)
UDM_CROSS_WORDS_ENABLED (integer)
UDM_CROSSWORDS_ENABLED (integer)
UDM_CROSS_WORDS_DISABLED (integer)
UDM_CROSSWORDS_DISABLED (integer)
UDM_PREFIXES_ENABLED (integer)
UDM_PREFIX_ENABLED (integer)
UDM_ISPELL_PREFIXES_ENABLED (integer)
UDM_ISPELL_PREFIX_ENABLED (integer)
UDM_PREFIXES_DISABLED (integer)
UDM_PREFIX_DISABLED (integer)
UDM_ISPELL_PREFIXES_DISABLED (integer)
UDM_ISPELL_PREFIX_DISABLED (integer)
UDM_ISPELL_TYPE_AFFIX (integer)
UDM_ISPELL_TYPE_SPELL (integer)
UDM_ISPELL_TYPE_DB (integer)
UDM_ISPELL_TYPE_SERVER (integer)
UDM_MATCH_WORD (integer)
UDM_MATCH_BEGIN (integer)
UDM_MATCH_SUBSTR (integer)
UDM_MATCH_END (integer)
资源类型
mnoGoSearch 函数
mnoGoSearch


mnoGoSearch 函数

Table of Contents

  • udm_add_search_limit — Add various search limits
  • udm_alloc_agent_array — Allocate mnoGoSearch session
  • udm_alloc_agent — Allocate mnoGoSearch session
  • udm_api_version — Get mnoGoSearch API version
  • udm_cat_list — Get all the categories on the same level with the current one
  • udm_cat_path — Get the path to the current category
  • udm_check_charset — Check if the given charset is known to mnogosearch
  • udm_clear_search_limits — Clear all mnoGoSearch search restrictions
  • udm_crc32 — Return CRC32 checksum of given string
  • udm_errno — Get mnoGoSearch error number
  • udm_error — Get mnoGoSearch error message
  • udm_find — Perform search
  • udm_free_agent — Free mnoGoSearch session
  • udm_free_ispell_data — Free memory allocated for ispell data
  • udm_free_res — Free mnoGoSearch result
  • udm_get_doc_count — Get total number of documents in database
  • udm_get_res_field — Fetch a result field
  • udm_get_res_param — Get mnoGoSearch result parameters
  • udm_hash32 — Return Hash32 checksum of given string
  • udm_load_ispell_data — Load ispell data
  • udm_set_agent_param — Set mnoGoSearch agent session parameters
预定义常量
udm_add_search_limit
mnoGoSearch


Add various search limits

mnoGoSearch 函数
udm_alloc_agent_array
mnoGoSearch 函数
PHP Manual

udm_add_search_limit

(PHP 4 >= 4.0.5, PHP 5 <= 5.0.5, PECL mnogosearch >= 1.0.0)

udm_add_search_limit — Add various search limits

说明

bool udm_add_search_limit ( resource $agent , int $var , string $val )

udm_add_search_limit() adds search restrictions.

参数

agent

A link to Agent, received after call to udm_alloc_agent().

var

Defines the parameter, indicating limits. Possible var values:

  • UDM_LIMIT_URL - defines document URL limitations to limit the search through subsection of the database. It supports SQL % and _ LIKE wildcards, where % matches any number of characters, even zero characters, and _ matches exactly one character. E.g. http://www.example.___/catalog may stand for http://www.example.com/catalog and http://www.example.net/catalog.
  • UDM_LIMIT_TAG - defines site TAG limitations. In indexer-conf you can assign specific TAGs to various sites and parts of a site. Tags in mnoGoSearch 3.1.x are lines, that may contain metasymbols % and _. Metasymbols allow searching among groups of tags. E.g. there are links with tags ABCD and ABCE, and search restriction is by ABC_ - the search will be made among both of the tags.
  • UDM_LIMIT_LANG - defines document language limitations.
  • UDM_LIMIT_CAT - defines document category limitations. Categories are similar to tag feature, but nested. So you can have one category inside another and so on. You have to use two characters for each level. Use a hex number going from 0-F or a 36 base number going from 0-Z. Therefore a top-level category like 'Auto' would be 01. If it has a subcategory like 'Ford', then it would be 01 (the parent category) and then 'Ford' which we will give 01. Put those together and you get 0101. If 'Auto' had another subcategory named 'VW', then it's id would be 01 because it belongs to the 'Ford' category and then 02 because it's the next category. So it's id would be 0102. If VW had a sub category called 'Engine' then it's id would start at 01 again and it would get the 'VW' id 02 and 'Auto' id of 01, making it 010201. If you want to search for sites under that category then you pass it cat=010201 in the URL.

  • UDM_LIMIT_DATE - defines limitation by date the document was modified.

    Format of parameter value: a string with first character < or >, then with no space - date in unixtime format, for example:

    <?php
    udm_add_search_limit    ($udm, UDM_LIMIT_DATE, "&lt;908012006");
    ?>

    If > character is used, then the search will be restricted to those documents having a modification date greater than entered, if <, then smaller.

val

Defines the value of the current parameter.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

mnoGoSearch 函数
udm_alloc_agent_array
mnoGoSearch 函数


Allocate mnoGoSearch session

udm_add_search_limit
udm_alloc_agent
mnoGoSearch 函数
PHP Manual

udm_alloc_agent_array

(PHP 4 >= 4.3.3, PHP 5 <= 5.0.5, PECL mnogosearch >= 1.0.0)

udm_alloc_agent_array — Allocate mnoGoSearch session

说明

resource udm_alloc_agent_array ( array $databases )

udm_alloc_agent_array() will create an agent with multiple database connections.

参数

databases

The array databases must contain one database URL per element, analog to the first parameter of udm_alloc_agent().

返回值

Returns a resource link identifier on success 或者在失败时返回 FALSE.

参见

  • udm_alloc_agent() - Allocate mnoGoSearch session

udm_add_search_limit
udm_alloc_agent
mnoGoSearch 函数


Allocate mnoGoSearch session

udm_alloc_agent_array
udm_api_version
mnoGoSearch 函数
PHP Manual

udm_alloc_agent

(PHP 4 >= 4.0.5, PHP 5 <= 5.0.5, PECL mnogosearch >= 1.0.0)

udm_alloc_agent — Allocate mnoGoSearch session

说明

resource udm_alloc_agent ( string $dbaddr [, string $dbmode ] )

Allocate a mnoGoSearch session.

参数

dbaddr

dbaddr - URL-style database description, with options (type, host, database name, port, user and password) to connect to SQL database. Do not matter for built-in text files support. Format for dbaddr: DBType:[//[DBUser[:DBPass]@]DBHost[:DBPort]]/DBName/. Currently supported DBType values are: mysql, pgsql, msql, solid, mssql, oracle, and ibase. Actually, it does not matter for native libraries support, but ODBC users should specify one of the supported values. If your database type is not supported, you may use unknown instead.

dbmode

dbmode - You may select the SQL database mode of words storage. Possible values of dbmode are: single, multi, crc, or crc-multi. When single is specified, all words are stored in the same table. If multi is selected, words will be located in different tables depending of their lengths. "multi" mode is usually faster, but requires more tables in the database. If "crc" mode is selected, mnoGoSearch will store 32 bit integer word IDs calculated by CRC32 algorithm instead of words. This mode requires less disk space and it is faster comparing with "single" and "multi" modes. crc-multi uses the same storage structure with the "crc" mode, but also stores words in different tables depending on words lengths like in "multi" mode.

Note:

dbaddr and dbmode must match those used during indexing.

返回值

Returns a mnogosearch agent identifier on success, FALSE on failure. This function creates a session with database parameters.

注释

Note:

In fact this function does not open a connection to the database and thus does not check the entered login and password. Establishing a connection to the database and login/password verification is done by udm_find().

udm_alloc_agent_array
udm_api_version
mnoGoSearch 函数


Get mnoGoSearch API version

udm_alloc_agent
udm_cat_list
mnoGoSearch 函数
PHP Manual

udm_api_version

(PHP 4 >= 4.0.5, PHP 5 <= 5.0.5, PECL mnogosearch >= 1.0.0)

udm_api_version — Get mnoGoSearch API version

说明

int udm_api_version ( void )

Gets the mnoGoSearch API version.

This function allows the user to identify which API functions are available, e.g. udm_get_doc_count() function is only available in mnoGoSearch 3.1.11 or later.

返回值

udm_api_version() returns the mnoGoSearch API version number. E.g. if mnoGoSearch 3.1.10 API is used, this function will return 30110.

范例

Example #1 udm_api_version() example

<?php
if (udm_api_version() >= 30111) {
    echo  "Total number of URLs in database: " . udm_get_doc_count($udm) . "<br />\n";
}
?>

udm_alloc_agent
udm_cat_list
mnoGoSearch 函数


Get all the categories on the same level with the current one

udm_api_version
udm_cat_path
mnoGoSearch 函数
PHP Manual

udm_cat_list

(PHP 4 >= 4.0.6, PHP 5 <= 5.0.5, PECL mnogosearch >= 1.0.0)

udm_cat_list — Get all the categories on the same level with the current one

说明

array udm_cat_list ( resource $agent , string $category )

Gets all the categories on the same level with the current one.

The function can be useful for developing categories tree browser.

参数

agent

A link to Agent, received after call to udm_alloc_agent().

category

返回值

Returns an array listing all categories of the same level as the current category in the categories tree.

The returned array consists of pairs. Elements with even index numbers contain the category paths, odd elements contain the corresponding category names.

$array[0] will contain '020300'
  $array[1] will contain 'Audi'
  $array[2] will contain '020301'
  $array[3] will contain 'BMW'
  $array[4] will contain '020302'
  $array[5] will contain 'Opel'
  ...
 etc.

范例

Following is an example of displaying links of the current level in format:

Audi
  BMW
  Opel
  ...

Example #1 udm_cat_list()example

<?php
 $cat_list_arr = udm_cat_list($udm_agent, $cat);
 $cat_list = '';
 for ($i=0; $i<count($cat_list_arr); $i+=2) {
    $path = $cat_list_arr[$i];
    $name = $cat_list_arr[$i+1];
    $cat_list .= "<a href=\"$_SERVER[PHP_SELF]?cat=$path\">$name</a><br />";
 }
?>

参见

  • udm_cat_path() - Get the path to the current category

udm_api_version
udm_cat_path
mnoGoSearch 函数


Get the path to the current category

udm_cat_list
udm_check_charset
mnoGoSearch 函数
PHP Manual

udm_cat_path

(PHP 4 >= 4.0.6, PHP 5 <= 5.0.5, PECL mnogosearch >= 1.0.0)

udm_cat_path — Get the path to the current category

说明

array udm_cat_path ( resource $agent , string $category )

Returns an array describing the path in the categories tree from the tree root to the current one, specified by category.

参数

agent

A link to Agent, received after call to udm_alloc_agent().

category

返回值

The returned array consists of pairs. Elements with even index numbers contain the category paths, odd elements contain the corresponding category names.

For example, the call $array=udm_cat_path($agent, '02031D'); may return the following array:

 $array[0] will contain ''
 $array[1] will contain 'Root'
 $array[2] will contain '02'
 $array[3] will contain 'Sport'
 $array[4] will contain '0203'
 $array[5] will contain 'Auto'
 $array[4] will contain '02031D'
 $array[5] will contain 'Ferrari'

范例

Example #1 Specifying path to the current category in the following format: '> Root > Sport > Auto > Ferrari'

<?php
  $cat_path_arr = udm_cat_path($udm_agent, $cat);
  $cat_path = '';
  for ($i=0; $i<count($cat_path_arr); $i+=2) {
    $path = $cat_path_arr[$i];
    $name = $cat_path_arr[$i+1];
    $cat_path .= " > <a href=\"$_SERVER[PHP_SELF]?cat=$path\">$name</a> ";
  }
?>

参见

  • udm_cat_list() - Get all the categories on the same level with the current one

udm_cat_list
udm_check_charset
mnoGoSearch 函数


Check if the given charset is known to mnogosearch

udm_cat_path
udm_clear_search_limits
mnoGoSearch 函数
PHP Manual

udm_check_charset

(PHP 4 >= 4.2.0, PHP 5 <= 5.0.5, PECL mnogosearch >= 1.0.0)

udm_check_charset — Check if the given charset is known to mnogosearch

说明

bool udm_check_charset ( resource $agent , string $charset )

Warning

本函数还未编写文档，仅有参数列表。

udm_cat_path
udm_clear_search_limits
mnoGoSearch 函数


Clear all mnoGoSearch search restrictions

udm_check_charset
udm_crc32
mnoGoSearch 函数
PHP Manual

udm_clear_search_limits

(PHP 4 >= 4.0.5, PHP 5 <= 5.0.5, PECL mnogosearch >= 1.0.0)

udm_clear_search_limits — Clear all mnoGoSearch search restrictions

说明

bool udm_clear_search_limits ( resource $agent )

udm_clear_search_limits() resets defined search limitations.

参数

agent

A link to Agent, received after call to udm_alloc_agent().

返回值

Returns TRUE.

参见

  • udm_add_search_limit() - Add various search limits

udm_check_charset
udm_crc32
mnoGoSearch 函数


Return CRC32 checksum of given string

udm_clear_search_limits
udm_errno
mnoGoSearch 函数
PHP Manual

udm_crc32

(PHP 4 >= 4.2.0, PHP 5 <= 5.0.5, PECL mnogosearch >= 1.0.0)

udm_crc32 — Return CRC32 checksum of given string

说明

int udm_crc32 ( resource $agent , string $str )

Warning

本函数还未编写文档，仅有参数列表。

udm_clear_search_limits
udm_errno
mnoGoSearch 函数


Get mnoGoSearch error number

udm_crc32
udm_error
mnoGoSearch 函数
PHP Manual

udm_errno

(PHP 4 >= 4.0.5, PHP 5 <= 5.0.5, PECL mnogosearch >= 1.0.0)

udm_errno — Get mnoGoSearch error number

说明

int udm_errno ( resource $agent )

Receiving numeric agent error code.

参数

agent

A link to Agent, received after call to udm_alloc_agent().

返回值

Returns the mnoGoSearch error number, zero if no error.

udm_crc32
udm_error
mnoGoSearch 函数


Get mnoGoSearch error message

udm_errno
udm_find
mnoGoSearch 函数
PHP Manual

udm_error

(PHP 4 >= 4.0.5, PHP 5 <= 5.0.5, PECL mnogosearch >= 1.0.0)

udm_error — Get mnoGoSearch error message

说明

string udm_error ( resource $agent )

Gets the agent error message.

参数

agent

A link to Agent, received after call to udm_alloc_agent().

返回值

udm_error() returns mnoGoSearch error message, empty string if no error.

udm_errno
udm_find
mnoGoSearch 函数


Perform search

udm_error
udm_free_agent
mnoGoSearch 函数
PHP Manual

udm_find

(PHP 4 >= 4.0.5, PHP 5 <= 5.0.5, PECL mnogosearch >= 1.0.0)

udm_find — Perform search

说明

resource udm_find ( resource $agent , string $query )

Performs a search.

The search itself. The first argument - session, the next one - query itself. To find something just type words you want to find and press SUBMIT button. For example, "mysql odbc". You should not use quotes " in query, they are written here only to divide a query from other text. mnoGoSearch will find all documents that contain word "mysql" and/or word "odbc". Best documents having bigger weights will be displayed first. If you use search mode ALL, search will return documents that contain both (or more) words you entered. In case you use mode ANY, the search will return list of documents that contain any of the words you entered. If you want more advanced results you may use query language. You should select "bool" match mode in the search from.

参数

agent

A link to Agent, received after call to udm_alloc_agent().

query

mnoGoSearch understands the following boolean operators:

& - logical AND. For example, "mysql & odbc". mnoGoSearch will find any URLs that contain both "mysql" and "odbc".

| - logical OR. For example "mysql|odbc". mnoGoSearch will find any URLs, that contain word "mysql" or word "odbc".

~ - logical NOT. For example "mysql & ~odbc". mnoGoSearch will find URLs that contain word "mysql" and do not contain word "odbc" at the same time. Note that ~ just excludes given word from results. Query "~odbc" will find nothing!

() - group command to compose more complex queries. For example "(mysql | msql) & ~postgres". Query language is simple and powerful at the same time. Just consider query as usual boolean expression.

返回值

Returns a result link identifier on success 或者在失败时返回 FALSE.

udm_error
udm_free_agent
mnoGoSearch 函数


Free mnoGoSearch session

udm_find
udm_free_ispell_data
mnoGoSearch 函数
PHP Manual

udm_free_agent

(PHP 4 >= 4.0.5, PHP 5 <= 5.0.5, PECL mnogosearch >= 1.0.0)

udm_free_agent — Free mnoGoSearch session

说明

int udm_free_agent ( resource $agent )

Freeing up memory allocated for agent session.

参数

agent

A link to Agent, received after call to udm_alloc_agent().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

udm_find
udm_free_ispell_data
mnoGoSearch 函数


Free memory allocated for ispell data

udm_free_agent
udm_free_res
mnoGoSearch 函数
PHP Manual

udm_free_ispell_data

(PHP 4 >= 4.0.5, PHP 5 <= 5.0.5, PECL mnogosearch >= 1.0.0)

udm_free_ispell_data — Free memory allocated for ispell data

说明

bool udm_free_ispell_data ( int $agent )

Frees the memory allocated for ispell data.

参数

agent

A link to Agent, received after call to udm_alloc_agent().

返回值

udm_free_ispell_data() always returns TRUE.

注释

Note:

This function is supported beginning from version 3.1.12 of mnoGoSearch and it does not do anything in previous versions.

udm_free_agent
udm_free_res
mnoGoSearch 函数


Free mnoGoSearch result

udm_free_ispell_data
udm_get_doc_count
mnoGoSearch 函数
PHP Manual

udm_free_res

(PHP 4 >= 4.0.5, PHP 5 <= 5.0.5, PECL mnogosearch >= 1.0.0)

udm_free_res — Free mnoGoSearch result

说明

bool udm_free_res ( resource $res )

Freeing up memory allocated for results.

参数

res

A link to a result identifier, received after call to udm_find().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

udm_free_ispell_data
udm_get_doc_count
mnoGoSearch 函数


Get total number of documents in database

udm_free_res
udm_get_res_field
mnoGoSearch 函数
PHP Manual

udm_get_doc_count

(PHP 4 >= 4.0.5, PHP 5 <= 5.0.5, PECL mnogosearch >= 1.0.0)

udm_get_doc_count — Get total number of documents in database

说明

int udm_get_doc_count ( resource $agent )

udm_get_doc_count() returns the number of documents in the database.

参数

agent

A link to Agent, received after call to udm_alloc_agent().

返回值

Returns the number of documents.

注释

Note:

This function is supported only in mnoGoSearch 3.1.11 or later.

udm_free_res
udm_get_res_field
mnoGoSearch 函数


Fetch a result field

udm_get_doc_count
udm_get_res_param
mnoGoSearch 函数
PHP Manual

udm_get_res_field

(PHP 4 >= 4.0.5, PHP 5 <= 5.0.5, PECL mnogosearch >= 1.0.0)

udm_get_res_field — Fetch a result field

说明

string udm_get_res_field ( resource $res , int $row , int $field )

Fetch a mnoGoSearch result field.

参数

res

res - a link to result identifier, received after call to udm_find().

row

row - the number of the link on the current page. May have values from 0 to UDM_PARAM_NUM_ROWS-1.

field

field - field identifier, may have the following values:

  • UDM_FIELD_URL - document URL field
  • UDM_FIELD_CONTENT - document Content-type field (for example, text/html).
  • UDM_FIELD_CATEGORY - document category field. Use udm_cat_path() to get full path to current category from the categories tree root. (This parameter is available only in PHP 4.0.6 or later).
  • UDM_FIELD_TITLE - document title field.
  • UDM_FIELD_KEYWORDS - document keywords field (from META KEYWORDS tag).
  • UDM_FIELD_DESC - document description field (from META DESCRIPTION tag).
  • UDM_FIELD_TEXT - document body text (the first couple of lines to give an idea of what the document is about).
  • UDM_FIELD_SIZE - document size.
  • UDM_FIELD_URLID - unique URL ID of the link.
  • UDM_FIELD_RATING - page rating (as calculated by mnoGoSearch).
  • UDM_FIELD_MODIFIED - last-modified field in unixtime format.
  • UDM_FIELD_ORDER - the number of the current document in set of found documents.
  • UDM_FIELD_CRC - document CRC.

返回值

udm_get_res_field() returns result field value on success, FALSE on error.

udm_get_doc_count
udm_get_res_param
mnoGoSearch 函数


Get mnoGoSearch result parameters

udm_get_res_field
udm_hash32
mnoGoSearch 函数
PHP Manual

udm_get_res_param

(PHP 4 >= 4.0.5, PHP 5 <= 5.0.5, PECL mnogosearch >= 1.0.0)

udm_get_res_param — Get mnoGoSearch result parameters

说明

string udm_get_res_param ( resource $res , int $param )

Gets the mnoGoSearch result parameters.

参数

res

res - a link to result identifier, received after call to udm_find().

param

param - parameter identifier, may have the following values:

  • UDM_PARAM_NUM_ROWS - number of received found links on the current page. It is equal to UDM_PARAM_PAGE_SIZE for all search pages, on the last page - the rest of links.
  • UDM_PARAM_FOUND - total number of results matching the query.
  • UDM_PARAM_WORDINFO - information on the words found. E.g. search for "a good book" will return "a: stopword, good:5637, book: 120"
  • UDM_PARAM_SEARCHTIME - search time in seconds.
  • UDM_PARAM_FIRST_DOC - the number of the first document displayed on current page.
  • UDM_PARAM_LAST_DOC - the number of the last document displayed on current page.

返回值

udm_get_res_param() returns result parameter value on success, FALSE on error.

udm_get_res_field
udm_hash32
mnoGoSearch 函数


Return Hash32 checksum of given string

udm_get_res_param
udm_load_ispell_data
mnoGoSearch 函数
PHP Manual

udm_hash32

(PHP 4 >= 4.3.3, PHP 5 <= 5.0.5, PECL mnogosearch >= 1.0.0)

udm_hash32 — Return Hash32 checksum of given string

说明

int udm_hash32 ( resource $agent , string $str )

udm_hash32() will take a string str and return a quite unique 32-bit hash number from it.

参数

agent

A link to Agent, received after call to udm_alloc_agent().

str

The input string.

返回值

Returns a 32-bit hash number.

参见

  • udm_alloc_agent() - Allocate mnoGoSearch session

udm_get_res_param
udm_load_ispell_data
mnoGoSearch 函数


Load ispell data

udm_hash32
udm_set_agent_param
mnoGoSearch 函数
PHP Manual

udm_load_ispell_data

(PHP 4 >= 4.0.5, PHP 5 <= 5.0.5, PECL mnogosearch >= 1.0.0)

udm_load_ispell_data — Load ispell data

说明

bool udm_load_ispell_data ( resource $agent , int $var , string $val1 , string $val2 , int $flag )

udm_load_ispell_data() loads ispell data.

After using this function to free memory allocated for ispell data, please use udm_free_ispell_data(), even if you use UDM_ISPELL_TYPE_SERVER mode.

参数

agent

A link to Agent, received after call to udm_alloc_agent().

var

Indicates the source for ispell data. May have the following values:

  • UDM_ISPELL_TYPE_DB - indicates that ispell data should be loaded from SQL. In this case, parameters val1 and val2 are ignored and should be left blank. flag should be equal to 1.

    Note:

    flag indicates that after loading ispell data from defined source it should be sorted (it is necessary for correct functioning of ispell). In case of loading ispell data from files there may be several calls to udm_load_ispell_data(), and there is no sense to sort data after every call, but only after the last one. Since in db mode all the data is loaded by one call, this parameter should have the value 1. In this mode in case of error, e.g. if ispell tables are absent, the function will return FALSE and code and error message will be accessible through udm_error() and udm_errno().

  • UDM_ISPELL_TYPE_AFFIX - indicates that ispell data should be loaded from file and initiates loading affixes file. In this case val1 defines double letter language code for which affixes are loaded, and val2 - file path. Please note, that if a relative path entered, the module looks for the file not in UDM_CONF_DIR, but in relation to current path, i.e. to the path where the script is executed. In case of error in this mode, e.g. if file is absent, the function will return FALSE, and an error message will be displayed. Error message text cannot be accessed through udm_error() and udm_errno(), since those functions can only return messages associated with SQL. Please, see flag parameter description in UDM_ISPELL_TYPE_DB.

    Example #1 udm_load_ispell_data() example

    <?php
    if ((! udm_load_ispell_data($udm, UDM_ISPELL_TYPE_AFFIX, 'en', '/opt/ispell/en.aff', 0)) ||
        (!     udm_load_ispell_data($udm, UDM_ISPELL_TYPE_AFFIX, 'ru', '/opt/ispell/ru.aff', 0)) ||
        (!     udm_load_ispell_data($udm, UDM_ISPELL_TYPE_SPELL, 'en', '/opt/ispell/en.dict', 0)) ||
        (!     udm_load_ispell_data($udm, UDM_ISPELL_TYPE_SPELL, 'ru', '/opt/ispell/ru.dict', 1))) {
        exit;
    }
    ?>

    Note:

    flag is equal to 1 only in the last call.

  • UDM_ISPELL_TYPE_SPELL - indicates that ispell data should be loaded from file and initiates loading of ispell dictionary file. In this case val1 defines double letter language code for which affixes are loaded, and val2 - file path. Please note, that if a relative path entered, the module looks for the file not in UDM_CONF_DIR, but in relation to current path, i.e. to the path where the script is executed. In case of error in this mode, e.g. if file is absent, the function will return FALSE, and an error message will be displayed. Error message text cannot be accessed through udm_error() and udm_errno(), since those functions can only return messages associated with SQL. Please, see flag parameter description in UDM_ISPELL_TYPE_DB.

    <?php
    if ((! udm_load_ispell_data($udm, UDM_ISPELL_TYPE_AFFIX, 'en', '/opt/ispell/en.aff', 0)) ||
       (!     udm_load_ispell_data($udm, UDM_ISPELL_TYPE_AFFIX, 'ru', '/opt/ispell/ru.aff', 0)) ||
       (!     udm_load_ispell_data($udm, UDM_ISPELL_TYPE_SPELL, 'en', '/opt/ispell/en.dict', 0)) ||
       (!     udm_load_ispell_data($udm, UDM_ISPELL_TYPE_SPELL, 'ru', '/opt/ispell/ru.dict', 1))) {
     exit;
     }
    ?>

    Note:

    flag is equal to 1 only in the last call.

  • UDM_ISPELL_TYPE_SERVER - enables spell server support. val1 parameter indicates address of the host running spell server. val2 ` is not used yet, but in future releases it is going to indicate number of port used by spell server. flag parameter in this case is not needed since ispell data is stored on spellserver already sorted.

    Spelld server reads spell-data from a separate configuration file (/usr/local/mnogosearch/etc/spelld.conf by default), sorts it and stores in memory. With clients server communicates in two ways: to indexer all the data is transferred (so that indexer starts faster), from search.cgi server receives word to normalize and then passes over to client (search.cgi) list of normalized word forms. This allows fastest, compared to db and text modes processing of search queries (by omitting loading and sorting all the spell data).

    udm_load_ispell_data() function in UDM_ISPELL_TYPE_SERVER mode does not actually load ispell data, but only defines server address. In fact, server is automatically used by udm_find() function when performing search. In case of errors, e.g. if spellserver is not running or invalid host indicated, there are no messages returned and ispell conversion does not work.

    Note:

    This function is available in mnoGoSearch 3.1.12 or later.

    Example:
    <?php
    if (!udm_load_ispell_data($udm, UDM_ISPELL_TYPE_SERVER, '', '', 1)) {
        echo     "Error loading ispell data from server<br />\n";
        exit;
    }
    ?>

The fastest mode is UDM_ISPELL_TYPE_SERVER. UDM_ISPELL_TYPE_TEXT is slower and UDM_ISPELL_TYPE_DB is the slowest. The above pattern is TRUE for mnoGoSearch 3.1.10 - 3.1.11. It is planned to speed up DB mode in future versions and it is going to be faster than TEXT mode.

val1

val2

flag

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #2 udm_load_ispell_data() example

<?php
if (! udm_load_ispell_data($udm, UDM_ISPELL_TYPE_DB, '', '', 1)) {
  printf("Error #%d: '%s'\n", udm_errno($udm), udm_error($udm));
  exit;
}
?>

udm_hash32
udm_set_agent_param
mnoGoSearch 函数


Set mnoGoSearch agent session parameters

udm_load_ispell_data
Solr
mnoGoSearch 函数
PHP Manual

udm_set_agent_param

(PHP 4 >= 4.0.5, PHP 5 <= 5.0.5, PECL mnogosearch >= 1.0.0)

udm_set_agent_param — Set mnoGoSearch agent session parameters

说明

bool udm_set_agent_param ( resource $agent , int $var , string $val )

Defines mnoGoSearch session parameters.

参数

agent

A link to Agent, received after call to udm_alloc_agent().

var

The following parameters and their values are available:

  • UDM_PARAM_PAGE_NUM - used to choose search results page number (results are returned by pages beginning from 0, with UDM_PARAM_PAGE_SIZE results per page).
  • UDM_PARAM_PAGE_SIZE - number of search results displayed on one page.
  • UDM_PARAM_SEARCH_MODE - search mode. The following values available: UDM_MODE_ALL - search for all words; UDM_MODE_ANY - search for any word; UDM_MODE_PHRASE - phrase search; UDM_MODE_BOOL - boolean search. See udm_find() for details on boolean search.
  • UDM_PARAM_CACHE_MODE - turns on or off search result cache mode. When enabled, the search engine will store search results to disk. In case a similar search is performed later, the engine will take results from the cache for faster performance. Available values: UDM_CACHE_ENABLED, UDM_CACHE_DISABLED.
  • UDM_PARAM_TRACK_MODE - turns on or off trackquery mode. Since version 3.1.2 mnoGoSearch has a query tracking support. Note that tracking is implemented in SQL version only and not available in built-in database. To use tracking, you have to create tables for tracking support. For MySQL, use create/mysql/track.txt. When doing a search, front-end uses those tables to store query words, a number of found documents and current Unix timestamp in seconds. Available values: UDM_TRACK_ENABLED, UDM_TRACK_DISABLED.
  • UDM_PARAM_PHRASE_MODE - defines whether index database using phrases ("phrase" parameter in indexer.conf). Possible values: UDM_PHRASE_ENABLED and UDM_PHRASE_DISABLED. Please note, that if phrase search is enabled (UDM_PHRASE_ENABLED), it is still possible to do search in any mode (ANY, ALL, BOOL or PHRASE). In 3.1.10 version of mnoGoSearch phrase search is supported only in sql and built-in database modes, while beginning with 3.1.11 phrases are supported in cachemode as well. Examples of phrase search: "Arizona desert" - This query returns all indexed documents that contain "Arizona desert" as a phrase. Notice that you need to put double quotes around the phrase
  • UDM_PARAM_CHARSET - defines local charset. Available values: set of charsets supported by mnoGoSearch, e.g. koi8-r, cp1251, ...
  • UDM_PARAM_STOPFILE - Defines name and path to stopwords file. (There is a small difference with mnoGoSearch - while in mnoGoSearch if relative path or no path entered, it looks for this file in relation to UDM_CONF_DIR, the module looks for the file in relation to current path, i.e. to the path where the PHP script is executed.)
  • UDM_PARAM_STOPTABLE - Load stop words from the given SQL table. You may use several StopwordTable commands. This command has no effect when compiled without SQL database support.
  • UDM_PARAM_WEIGHT_FACTOR - represents weight factors for specific document parts. Currently body, title, keywords, description, url are supported. To activate this feature please use degrees of 2 in *Weight commands of the indexer.conf. Let's imagine that we have these weights:
          URLWeight     1
      BodyWeight    2
      TitleWeight   4
      KeywordWeight 8
      DescWeight    16
    As far as indexer uses bit OR operation for word weights when some word presents several time in the same document, it is possible at search time to detect word appearance in different document parts. Word which appears only in the body will have 00000010 aggregate weight (in binary notation). Word used in all document parts will have 00011111 aggregate weight. This parameter's value is a string of hex digits ABCDE. Each digit is a factor for corresponding bit in word weight. For the given above weights configuration:
           E is a factor for weight 1  (URL Weight bit)
       D is a factor for weight 2  (BodyWeight bit)
       C is a factor for weight 4  (TitleWeight bit)
       B is a factor for weight 8  (KeywordWeight bit)
       A is a factor for weight 16 (DescWeight bit)
    Examples: UDM_PARAM_WEIGHT_FACTOR=00001 will search through URLs only. UDM_PARAM_WEIGHT_FACTOR=00100 will search through Titles only. UDM_PARAM_WEIGHT_FACTOR=11100 will search through Title,Keywords,Description but not through URL and Body. UDM_PARAM_WEIGHT_FACTOR=F9421 will search through:
            Description with factor 15  (F hex)
        Keywords with factor 9
        Title with factor  4
        Body with factor 2
        URL with factor 1
    If UDM_PARAM_WEIGHT_FACTOR variable is omitted, original weight value is taken to sort results. For a given above weight configuration it means that document description has a most big weight 16.
  • UDM_PARAM_WORD_MATCH - word match. You may use this parameter to choose word match type. This feature works only in "single" and "multi" modes using SQL based and built-in database. It does not work in cachemode and other modes since they use word CRC and do not support substring search. Available values: UDM_MATCH_BEGIN - word beginning match; UDM_MATCH_END - word ending match; UDM_MATCH_WORD - whole word match; UDM_MATCH_SUBSTR - word substring match.
  • UDM_PARAM_MIN_WORD_LEN - defines minimal word length. Any word shorter this limit is considered to be a stopword. Please note that this parameter value is inclusive, i.e. if UDM_PARAM_MIN_WORD_LEN=3, a word 3 characters long will not be considered a stopword, while a word 2 characters long will be. Default value is 1.
  • UDM_PARAM_ISPELL_PREFIXES - Possible values: UDM_PREFIXES_ENABLED and UDM_PREFIXES_DISABLED, that respectively enable or disable using prefixes. E.g. if a word "tested" is in search query, also words like "test", "testing", etc. Only suffixes are supported by default. Prefixes usually change word meanings, for example if somebody is searching for the word "tested" one hardly wants "untested" to be found. Prefixes support may also be found useful for site's spelling checking purposes. In order to enable ispell, you have to load ispell data with udm_load_ispell_data().
  • UDM_PARAM_CROSS_WORDS - enables or disables crosswords support. Possible values: UDM_CROSS_WORDS_ENABLED and UDM_CROSS_WORDS_DISABLED. The crosswords feature allows to assign words between <a href="xxx"> and </a> also to a document this link leads to. It works in SQL database mode and is not supported in built-in database and Cachemode.
  • UDM_PARAM_VARDIR - specifies a custom path to directory where indexer stores data when using built-in database and in cache mode. By default /var directory of mnoGoSearch installation is used. Can have only string values.

val

更新日志

版本 | 说明
4.1.0 | UDM_PARAM_VARDIR was added.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note: Crosswords are supported only in mnoGoSearch 3.1.11 or later.

udm_load_ispell_data
Solr
mnoGoSearch 函数


Apache Solr

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Solr 函数
    • solr_get_version — 返回当前Solr扩展的版本
  • 范例
  • SolrUtils — The SolrUtils class
    • SolrUtils::digestXmlResponse — Parses an response XML string into a SolrObject
    • SolrUtils::escapeQueryChars — Escapes a lucene query string
    • SolrUtils::getSolrVersion — Returns the current version of the Solr extension
    • SolrUtils::queryPhrase — Prepares a phrase from an unescaped lucene string
  • SolrInputDocument — The SolrInputDocument class
    • SolrInputDocument::addChildDocument — Adds a child document for block indexing
    • SolrInputDocument::addChildDocuments — Adds an array of child documents
    • SolrInputDocument::addField — Adds a field to the document
    • SolrInputDocument::clear — Resets the input document
    • SolrInputDocument::__clone — Creates a copy of a SolrDocument
    • SolrInputDocument::__construct — Constructor
    • SolrInputDocument::deleteField — Removes a field from the document
    • SolrInputDocument::__destruct — Destructor
    • SolrInputDocument::fieldExists — Checks if a field exists
    • SolrInputDocument::getBoost — Retrieves the current boost value for the document
    • SolrInputDocument::getChildDocuments — Returns an array of child documents (SolrInputDocument)
    • SolrInputDocument::getChildDocumentsCount — Returns the number of child documents
    • SolrInputDocument::getField — Retrieves a field by name
    • SolrInputDocument::getFieldBoost — Retrieves the boost value for a particular field
    • SolrInputDocument::getFieldCount — Returns the number of fields in the document
    • SolrInputDocument::getFieldNames — Returns an array containing all the fields in the document
    • SolrInputDocument::hasChildDocuments — Returns true if the document has any child documents
    • SolrInputDocument::merge — Merges one input document into another
    • SolrInputDocument::reset — This is an alias of SolrInputDocument::clear
    • SolrInputDocument::setBoost — Sets the boost value for this document
    • SolrInputDocument::setFieldBoost — Sets the index-time boost value for a field
    • SolrInputDocument::sort — Sorts the fields within the document
    • SolrInputDocument::toArray — Returns an array representation of the input document
  • SolrDocument — The SolrDocument class
    • SolrDocument::addField — Adds a field to the document
    • SolrDocument::clear — Drops all the fields in the document
    • SolrDocument::__clone — Creates a copy of a SolrDocument object
    • SolrDocument::__construct — Constructor
    • SolrDocument::current — Retrieves the current field
    • SolrDocument::deleteField — Removes a field from the document
    • SolrDocument::__destruct — Destructor
    • SolrDocument::fieldExists — Checks if a field exists in the document
    • SolrDocument::__get — Access the field as a property
    • SolrDocument::getChildDocuments — Returns an array of child documents (SolrDocument)
    • SolrDocument::getChildDocumentsCount — Returns the number of child documents
    • SolrDocument::getField — Retrieves a field by name
    • SolrDocument::getFieldCount — Returns the number of fields in this document
    • SolrDocument::getFieldNames — Returns an array of fields names in the document
    • SolrDocument::getInputDocument — Returns a SolrInputDocument equivalent of the object
    • SolrDocument::hasChildDocuments — Checks whether the document has any child documents
    • SolrDocument::__isset — Checks if a field exists
    • SolrDocument::key — Retrieves the current key
    • SolrDocument::merge — Merges source to the current SolrDocument
    • SolrDocument::next — Moves the internal pointer to the next field
    • SolrDocument::offsetExists — Checks if a particular field exists
    • SolrDocument::offsetGet — Retrieves a field
    • SolrDocument::offsetSet — Adds a field to the document
    • SolrDocument::offsetUnset — Removes a field
    • SolrDocument::reset — This is an alias to SolrDocument::clear()
    • SolrDocument::rewind — Resets the internal pointer to the beginning
    • SolrDocument::serialize — Used for custom serialization
    • SolrDocument::__set — Adds another field to the document
    • SolrDocument::sort — Sorts the fields in the document
    • SolrDocument::toArray — Returns an array representation of the document
    • SolrDocument::unserialize — Custom serialization of SolrDocument objects
    • SolrDocument::__unset — Removes a field from the document
    • SolrDocument::valid — Checks if the current position internally is still valid
  • SolrDocumentField — The SolrDocumentField class
    • SolrDocumentField::__construct — Constructor
    • SolrDocumentField::__destruct — Destructor
  • SolrObject — The SolrObject class
    • SolrObject::__construct — Creates Solr object
    • SolrObject::__destruct — Destructor
    • SolrObject::getPropertyNames — Returns an array of all the names of the properties
    • SolrObject::offsetExists — Checks if the property exists
    • SolrObject::offsetGet — Used to retrieve a property
    • SolrObject::offsetSet — Sets the value for a property
    • SolrObject::offsetUnset — Unsets the value for the property
  • SolrClient — The SolrClient class
    • SolrClient::addDocument — Adds a document to the index
    • SolrClient::addDocuments — Adds a collection of SolrInputDocument instances to the index
    • SolrClient::commit — Finalizes all add/deletes made to the index
    • SolrClient::__construct — Constructor for the SolrClient object
    • SolrClient::deleteById — Delete by Id
    • SolrClient::deleteByIds — Deletes by Ids
    • SolrClient::deleteByQueries — Removes all documents matching any of the queries
    • SolrClient::deleteByQuery — Deletes all documents matching the given query
    • SolrClient::__destruct — Destructor for SolrClient
    • SolrClient::getById — Get Document By Id. Utilizes Solr Realtime Get (RTG).
    • SolrClient::getByIds — Get Documents by their Ids. Utilizes Solr Realtime Get (RTG).
    • SolrClient::getDebug — Returns the debug data for the last connection attempt
    • SolrClient::getOptions — Returns the client options set internally
    • SolrClient::optimize — Defragments the index
    • SolrClient::ping — Checks if Solr server is still up
    • SolrClient::query — Sends a query to the server
    • SolrClient::request — Sends a raw update request
    • SolrClient::rollback — Rollbacks all add/deletes made to the index since the last commit
    • SolrClient::setResponseWriter — Sets the response writer used to prepare the response from Solr
    • SolrClient::setServlet — Changes the specified servlet type to a new value
    • SolrClient::system — Retrieve Solr Server information
    • SolrClient::threads — Checks the threads status
  • SolrResponse — The SolrResponse class
    • SolrResponse::getDigestedResponse — Returns the XML response as serialized PHP data
    • SolrResponse::getHttpStatus — Returns the HTTP status of the response
    • SolrResponse::getHttpStatusMessage — Returns more details on the HTTP status
    • SolrResponse::getRawRequest — Returns the raw request sent to the Solr server
    • SolrResponse::getRawRequestHeaders — Returns the raw request headers sent to the Solr server
    • SolrResponse::getRawResponse — Returns the raw response from the server
    • SolrResponse::getRawResponseHeaders — Returns the raw response headers from the server
    • SolrResponse::getRequestUrl — Returns the full URL the request was sent to
    • SolrResponse::getResponse — Returns a SolrObject representing the XML response from the server
    • SolrResponse::setParseMode — Sets the parse mode
    • SolrResponse::success — Was the request a success
  • SolrQueryResponse — The SolrQueryResponse class
    • SolrQueryResponse::__construct — Constructor
    • SolrQueryResponse::__destruct — Destructor
  • SolrUpdateResponse — The SolrUpdateResponse class
    • SolrUpdateResponse::__construct — Constructor
    • SolrUpdateResponse::__destruct — Destructor
  • SolrPingResponse — The SolrPingResponse class
    • SolrPingResponse::__construct — Constructor
    • SolrPingResponse::__destruct — Destructor
    • SolrPingResponse::getResponse — Returns the response from the server
  • SolrGenericResponse — The SolrGenericResponse class
    • SolrGenericResponse::__construct — Constructor
    • SolrGenericResponse::__destruct — Destructor
  • SolrParams — The SolrParams class
    • SolrParams::add — This is an alias for SolrParams::addParam
    • SolrParams::addParam — Adds a parameter to the object
    • SolrParams::get — This is an alias for SolrParams::getParam
    • SolrParams::getParam — Returns a parameter value
    • SolrParams::getParams — Returns an array of non URL-encoded parameters
    • SolrParams::getPreparedParams — Returns an array of URL-encoded parameters
    • SolrParams::serialize — Used for custom serialization
    • SolrParams::set — An alias of SolrParams::setParam
    • SolrParams::setParam — Sets the parameter to the specified value
    • SolrParams::toString — Returns all the name-value pair parameters in the object
    • SolrParams::unserialize — Used for custom serialization
  • SolrModifiableParams — The SolrModifiableParams class
    • SolrModifiableParams::__construct — Constructor
    • SolrModifiableParams::__destruct — Destructor
  • SolrQuery — The SolrQuery class
    • SolrQuery::addExpandFilterQuery — Overrides main filter query, determines which documents to include in the main group.
    • SolrQuery::addExpandSortField — Orders the documents within the expanded groups (expand.sort parameter).
    • SolrQuery::addFacetDateField — Maps to facet.date
    • SolrQuery::addFacetDateOther — Adds another facet.date.other parameter
    • SolrQuery::addFacetField — Adds another field to the facet
    • SolrQuery::addFacetQuery — Adds a facet query
    • SolrQuery::addField — Specifies which fields to return in the result
    • SolrQuery::addFilterQuery — Specifies a filter query
    • SolrQuery::addGroupField — Add a field to be used to group results.
    • SolrQuery::addGroupFunction — Allows grouping results based on the unique values of a function query (group.func parameter).
    • SolrQuery::addGroupQuery — Allows grouping of documents that match the given query.
    • SolrQuery::addGroupSortField — Add a group sort field (group.sort parameter).
    • SolrQuery::addHighlightField — Maps to hl.fl
    • SolrQuery::addMltField — Sets a field to use for similarity
    • SolrQuery::addMltQueryField — Maps to mlt.qf
    • SolrQuery::addSortField — Used to control how the results should be sorted
    • SolrQuery::addStatsFacet — Requests a return of sub results for values within the given facet
    • SolrQuery::addStatsField — Maps to stats.field parameter
    • SolrQuery::collapse — Collapses the result set to a single document per group
    • SolrQuery::__construct — Constructor
    • SolrQuery::__destruct — Destructor
    • SolrQuery::getExpand — Returns true if group expanding is enabled
    • SolrQuery::getExpandFilterQueries — Returns the expand filter queries
    • SolrQuery::getExpandQuery — Returns the expand query expand.q parameter
    • SolrQuery::getExpandRows — Returns The number of rows to display in each group (expand.rows)
    • SolrQuery::getExpandSortFields — Returns an array of fields
    • SolrQuery::getFacet — Returns the value of the facet parameter
    • SolrQuery::getFacetDateEnd — Returns the value for the facet.date.end parameter
    • SolrQuery::getFacetDateFields — Returns all the facet.date fields
    • SolrQuery::getFacetDateGap — Returns the value of the facet.date.gap parameter
    • SolrQuery::getFacetDateHardEnd — Returns the value of the facet.date.hardend parameter
    • SolrQuery::getFacetDateOther — Returns the value for the facet.date.other parameter
    • SolrQuery::getFacetDateStart — Returns the lower bound for the first date range for all date faceting on this field
    • SolrQuery::getFacetFields — Returns all the facet fields
    • SolrQuery::getFacetLimit — Returns the maximum number of constraint counts that should be returned for the facet fields
    • SolrQuery::getFacetMethod — Returns the value of the facet.method parameter
    • SolrQuery::getFacetMinCount — Returns the minimum counts for facet fields should be included in the response
    • SolrQuery::getFacetMissing — Returns the current state of the facet.missing parameter
    • SolrQuery::getFacetOffset — Returns an offset into the list of constraints to be used for pagination
    • SolrQuery::getFacetPrefix — Returns the facet prefix
    • SolrQuery::getFacetQueries — Returns all the facet queries
    • SolrQuery::getFacetSort — Returns the facet sort type
    • SolrQuery::getFields — Returns the list of fields that will be returned in the response
    • SolrQuery::getFilterQueries — Returns an array of filter queries
    • SolrQuery::getGroup — Returns true if grouping is enabled
    • SolrQuery::getGroupCachePercent — Returns group cache percent value
    • SolrQuery::getGroupFacet — Returns the group.facet parameter value
    • SolrQuery::getGroupFields — Returns group fields (group.field parameter values)
    • SolrQuery::getGroupFormat — Returns the group.format value
    • SolrQuery::getGroupFunctions — Returns group functions (group.func parameter values)
    • SolrQuery::getGroupLimit — Returns the group.limit value
    • SolrQuery::getGroupMain — Returns the group.main value
    • SolrQuery::getGroupNGroups — Returns the group.ngroups value
    • SolrQuery::getGroupOffset — Returns the group.offset value
    • SolrQuery::getGroupQueries — Returns all the group.query parameter values
    • SolrQuery::getGroupSortFields — Returns the group.sort value
    • SolrQuery::getGroupTruncate — Returns the group.truncate value
    • SolrQuery::getHighlight — Returns the state of the hl parameter
    • SolrQuery::getHighlightAlternateField — Returns the highlight field to use as backup or default
    • SolrQuery::getHighlightFields — Returns all the fields that Solr should generate highlighted snippets for
    • SolrQuery::getHighlightFormatter — Returns the formatter for the highlighted output
    • SolrQuery::getHighlightFragmenter — Returns the text snippet generator for highlighted text
    • SolrQuery::getHighlightFragsize — Returns the number of characters of fragments to consider for highlighting
    • SolrQuery::getHighlightHighlightMultiTerm — Returns whether or not to enable highlighting for range/wildcard/fuzzy/prefix queries
    • SolrQuery::getHighlightMaxAlternateFieldLength — Returns the maximum number of characters of the field to return
    • SolrQuery::getHighlightMaxAnalyzedChars — Returns the maximum number of characters into a document to look for suitable snippets
    • SolrQuery::getHighlightMergeContiguous — Returns whether or not the collapse contiguous fragments into a single fragment
    • SolrQuery::getHighlightRegexMaxAnalyzedChars — Returns the maximum number of characters from a field when using the regex fragmenter
    • SolrQuery::getHighlightRegexPattern — Returns the regular expression for fragmenting
    • SolrQuery::getHighlightRegexSlop — Returns the deviation factor from the ideal fragment size
    • SolrQuery::getHighlightRequireFieldMatch — Returns if a field will only be highlighted if the query matched in this particular field
    • SolrQuery::getHighlightSimplePost — Returns the text which appears after a highlighted term
    • SolrQuery::getHighlightSimplePre — Returns the text which appears before a highlighted term
    • SolrQuery::getHighlightSnippets — Returns the maximum number of highlighted snippets to generate per field
    • SolrQuery::getHighlightUsePhraseHighlighter — Returns the state of the hl.usePhraseHighlighter parameter
    • SolrQuery::getMlt — Returns whether or not MoreLikeThis results should be enabled
    • SolrQuery::getMltBoost — Returns whether or not the query will be boosted by the interesting term relevance
    • SolrQuery::getMltCount — Returns the number of similar documents to return for each result
    • SolrQuery::getMltFields — Returns all the fields to use for similarity
    • SolrQuery::getMltMaxNumQueryTerms — Returns the maximum number of query terms that will be included in any generated query
    • SolrQuery::getMltMaxNumTokens — Returns the maximum number of tokens to parse in each document field that is not stored with TermVector support
    • SolrQuery::getMltMaxWordLength — Returns the maximum word length above which words will be ignored
    • SolrQuery::getMltMinDocFrequency — Returns the treshold frequency at which words will be ignored which do not occur in at least this many docs
    • SolrQuery::getMltMinTermFrequency — Returns the frequency below which terms will be ignored in the source document
    • SolrQuery::getMltMinWordLength — Returns the minimum word length below which words will be ignored
    • SolrQuery::getMltQueryFields — Returns the query fields and their boosts
    • SolrQuery::getQuery — Returns the main query
    • SolrQuery::getRows — Returns the maximum number of documents
    • SolrQuery::getSortFields — Returns all the sort fields
    • SolrQuery::getStart — Returns the offset in the complete result set
    • SolrQuery::getStats — Returns whether or not stats is enabled
    • SolrQuery::getStatsFacets — Returns all the stats facets that were set
    • SolrQuery::getStatsFields — Returns all the statistics fields
    • SolrQuery::getTerms — Returns whether or not the TermsComponent is enabled
    • SolrQuery::getTermsField — Returns the field from which the terms are retrieved
    • SolrQuery::getTermsIncludeLowerBound — Returns whether or not to include the lower bound in the result set
    • SolrQuery::getTermsIncludeUpperBound — Returns whether or not to include the upper bound term in the result set
    • SolrQuery::getTermsLimit — Returns the maximum number of terms Solr should return
    • SolrQuery::getTermsLowerBound — Returns the term to start at
    • SolrQuery::getTermsMaxCount — Returns the maximum document frequency
    • SolrQuery::getTermsMinCount — Returns the minimum document frequency to return in order to be included
    • SolrQuery::getTermsPrefix — Returns the term prefix
    • SolrQuery::getTermsReturnRaw — Whether or not to return raw characters
    • SolrQuery::getTermsSort — Returns an integer indicating how terms are sorted
    • SolrQuery::getTermsUpperBound — Returns the term to stop at
    • SolrQuery::getTimeAllowed — Returns the time in milliseconds allowed for the query to finish
    • SolrQuery::removeExpandFilterQuery — Removes an expand filter query
    • SolrQuery::removeExpandSortField — Removes an expand sort field from the expand.sort parameter.
    • SolrQuery::removeFacetDateField — Removes one of the facet date fields
    • SolrQuery::removeFacetDateOther — Removes one of the facet.date.other parameters
    • SolrQuery::removeFacetField — Removes one of the facet.date parameters
    • SolrQuery::removeFacetQuery — Removes one of the facet.query parameters
    • SolrQuery::removeField — Removes a field from the list of fields
    • SolrQuery::removeFilterQuery — Removes a filter query
    • SolrQuery::removeHighlightField — Removes one of the fields used for highlighting
    • SolrQuery::removeMltField — Removes one of the moreLikeThis fields
    • SolrQuery::removeMltQueryField — Removes one of the moreLikeThis query fields
    • SolrQuery::removeSortField — Removes one of the sort fields
    • SolrQuery::removeStatsFacet — Removes one of the stats.facet parameters
    • SolrQuery::removeStatsField — Removes one of the stats.field parameters
    • SolrQuery::setEchoHandler — Toggles the echoHandler parameter
    • SolrQuery::setEchoParams — Determines what kind of parameters to include in the response
    • SolrQuery::setExpand — Enables/Disables the Expand Component
    • SolrQuery::setExpandQuery — Sets the expand.q parameter
    • SolrQuery::setExpandRows — Sets the number of rows to display in each group (expand.rows). Server Default 5
    • SolrQuery::setExplainOther — Sets the explainOther common query parameter
    • SolrQuery::setFacet — Maps to the facet parameter. Enables or disables facetting
    • SolrQuery::setFacetDateEnd — Maps to facet.date.end
    • SolrQuery::setFacetDateGap — Maps to facet.date.gap
    • SolrQuery::setFacetDateHardEnd — Maps to facet.date.hardend
    • SolrQuery::setFacetDateStart — Maps to facet.date.start
    • SolrQuery::setFacetEnumCacheMinDefaultFrequency — Sets the minimum document frequency used for determining term count
    • SolrQuery::setFacetLimit — Maps to facet.limit
    • SolrQuery::setFacetMethod — Specifies the type of algorithm to use when faceting a field
    • SolrQuery::setFacetMinCount — Maps to facet.mincount
    • SolrQuery::setFacetMissing — Maps to facet.missing
    • SolrQuery::setFacetOffset — Sets the offset into the list of constraints to allow for pagination
    • SolrQuery::setFacetPrefix — Specifies a string prefix with which to limits the terms on which to facet
    • SolrQuery::setFacetSort — Determines the ordering of the facet field constraints
    • SolrQuery::setGroup — Enable/Disable result grouping (group parameter)
    • SolrQuery::setGroupCachePercent — Enables caching for result grouping
    • SolrQuery::setGroupFacet — Sets group.facet parameter
    • SolrQuery::setGroupFormat — Sets the group format, result structure (group.format parameter).
    • SolrQuery::setGroupLimit — Specifies the number of results to return for each group. The server default value is 1.
    • SolrQuery::setGroupMain — If true, the result of the first field grouping command is used as the main result list in the response, using group.format=simple.
    • SolrQuery::setGroupNGroups — If true, Solr includes the number of groups that have matched the query in the results.
    • SolrQuery::setGroupOffset — Sets the group.offset parameter.
    • SolrQuery::setGroupTruncate — If true, facet counts are based on the most relevant document of each group matching the query.
    • SolrQuery::setHighlight — Enables or disables highlighting
    • SolrQuery::setHighlightAlternateField — Specifies the backup field to use
    • SolrQuery::setHighlightFormatter — Specify a formatter for the highlight output
    • SolrQuery::setHighlightFragmenter — Sets a text snippet generator for highlighted text
    • SolrQuery::setHighlightFragsize — The size of fragments to consider for highlighting
    • SolrQuery::setHighlightHighlightMultiTerm — Use SpanScorer to highlight phrase terms
    • SolrQuery::setHighlightMaxAlternateFieldLength — Sets the maximum number of characters of the field to return
    • SolrQuery::setHighlightMaxAnalyzedChars — Specifies the number of characters into a document to look for suitable snippets
    • SolrQuery::setHighlightMergeContiguous — Whether or not to collapse contiguous fragments into a single fragment
    • SolrQuery::setHighlightRegexMaxAnalyzedChars — Specify the maximum number of characters to analyze
    • SolrQuery::setHighlightRegexPattern — Specify the regular expression for fragmenting
    • SolrQuery::setHighlightRegexSlop — Sets the factor by which the regex fragmenter can stray from the ideal fragment size
    • SolrQuery::setHighlightRequireFieldMatch — Require field matching during highlighting
    • SolrQuery::setHighlightSimplePost — Sets the text which appears after a highlighted term
    • SolrQuery::setHighlightSimplePre — Sets the text which appears before a highlighted term
    • SolrQuery::setHighlightSnippets — Sets the maximum number of highlighted snippets to generate per field
    • SolrQuery::setHighlightUsePhraseHighlighter — Whether to highlight phrase terms only when they appear within the query phrase
    • SolrQuery::setMlt — Enables or disables moreLikeThis
    • SolrQuery::setMltBoost — Set if the query will be boosted by the interesting term relevance
    • SolrQuery::setMltCount — Set the number of similar documents to return for each result
    • SolrQuery::setMltMaxNumQueryTerms — Sets the maximum number of query terms included
    • SolrQuery::setMltMaxNumTokens — Specifies the maximum number of tokens to parse
    • SolrQuery::setMltMaxWordLength — Sets the maximum word length
    • SolrQuery::setMltMinDocFrequency — Sets the mltMinDoc frequency
    • SolrQuery::setMltMinTermFrequency — Sets the frequency below which terms will be ignored in the source docs
    • SolrQuery::setMltMinWordLength — Sets the minimum word length
    • SolrQuery::setOmitHeader — Exclude the header from the returned results
    • SolrQuery::setQuery — Sets the search query
    • SolrQuery::setRows — Specifies the maximum number of rows to return in the result
    • SolrQuery::setShowDebugInfo — Flag to show debug information
    • SolrQuery::setStart — Specifies the number of rows to skip
    • SolrQuery::setStats — Enables or disables the Stats component
    • SolrQuery::setTerms — Enables or disables the TermsComponent
    • SolrQuery::setTermsField — Sets the name of the field to get the Terms from
    • SolrQuery::setTermsIncludeLowerBound — Include the lower bound term in the result set
    • SolrQuery::setTermsIncludeUpperBound — Include the upper bound term in the result set
    • SolrQuery::setTermsLimit — Sets the maximum number of terms to return
    • SolrQuery::setTermsLowerBound — Specifies the Term to start from
    • SolrQuery::setTermsMaxCount — Sets the maximum document frequency
    • SolrQuery::setTermsMinCount — Sets the minimum document frequency
    • SolrQuery::setTermsPrefix — Restrict matches to terms that start with the prefix
    • SolrQuery::setTermsReturnRaw — Return the raw characters of the indexed term
    • SolrQuery::setTermsSort — Specifies how to sort the returned terms
    • SolrQuery::setTermsUpperBound — Sets the term to stop at
    • SolrQuery::setTimeAllowed — The time allowed for search to finish
  • SolrDisMaxQuery — The SolrDisMaxQuery class
    • SolrDisMaxQuery::addBigramPhraseField — Adds a Phrase Bigram Field (pf2 parameter)
    • SolrDisMaxQuery::addBoostQuery — Adds a boost query field with value and optional boost (bq parameter)
    • SolrDisMaxQuery::addPhraseField — Adds a Phrase Field (pf parameter)
    • SolrDisMaxQuery::addQueryField — Add a query field with optional boost (qf parameter)
    • SolrDisMaxQuery::addTrigramPhraseField — Adds a Trigram Phrase Field (pf3 parameter)
    • SolrDisMaxQuery::addUserField — Adds a field to User Fields Parameter (uf)
    • SolrDisMaxQuery::__construct — Class Constructor
    • SolrDisMaxQuery::removeBigramPhraseField — Removes phrase bigram field (pf2 parameter)
    • SolrDisMaxQuery::removeBoostQuery — Removes a boost query partial by field name (bq)
    • SolrDisMaxQuery::removePhraseField — Removes a Phrase Field (pf parameter)
    • SolrDisMaxQuery::removeQueryField — Removes a Query Field (qf parameter)
    • SolrDisMaxQuery::removeTrigramPhraseField — Removes a Trigram Phrase Field (pf3 parameter)
    • SolrDisMaxQuery::removeUserField — Removes a field from The User Fields Parameter (uf)
    • SolrDisMaxQuery::setBigramPhraseFields — Sets Bigram Phrase Fields and their boosts (and slops) using pf2 parameter
    • SolrDisMaxQuery::setBigramPhraseSlop — Sets Bigram Phrase Slop (ps2 parameter)
    • SolrDisMaxQuery::setBoostFunction — Sets a Boost Function (bf parameter).
    • SolrDisMaxQuery::setBoostQuery — Directly Sets Boost Query Parameter (bq)
    • SolrDisMaxQuery::setMinimumMatch — Set Minimum "Should" Match (mm)
    • SolrDisMaxQuery::setPhraseFields — Sets Phrase Fields and their boosts (and slops) using pf2 parameter
    • SolrDisMaxQuery::setPhraseSlop — Sets the default slop on phrase queries (ps parameter)
    • SolrDisMaxQuery::setQueryAlt — Set Query Alternate (q.alt parameter)
    • SolrDisMaxQuery::setQueryPhraseSlop — specifies the amount of slop permitted on phrase queries explicitly included in the user's query string (qf parameter)
    • SolrDisMaxQuery::setTieBreaker — Sets Tie Breaker parameter (tie parameter)
    • SolrDisMaxQuery::setTrigramPhraseFields — Directly Sets Trigram Phrase Fields (pf3 parameter)
    • SolrDisMaxQuery::setTrigramPhraseSlop — Sets Trigram Phrase Slop (ps3 parameter)
    • SolrDisMaxQuery::setUserFields — Sets User Fields parameter (uf)
    • SolrDisMaxQuery::useDisMaxQueryParser — Switch QueryParser to be DisMax Query Parser
    • SolrDisMaxQuery::useEDisMaxQueryParser — Switch QueryParser to be EDisMax
  • SolrCollapseFunction — The SolrCollapseFunction class
    • SolrCollapseFunction::__construct — Constructor
    • SolrCollapseFunction::getField — Returns the field that is being collapsed on.
    • SolrCollapseFunction::getHint — Returns collapse hint
    • SolrCollapseFunction::getMax — Returns max parameter
    • SolrCollapseFunction::getMin — Returns min parameter
    • SolrCollapseFunction::getNullPolicy — Returns null policy
    • SolrCollapseFunction::getSize — Returns size parameter
    • SolrCollapseFunction::setField — Sets the field to collapse on
    • SolrCollapseFunction::setHint — Sets collapse hint
    • SolrCollapseFunction::setMax — Selects the group heads by the max value of a numeric field or function query.
    • SolrCollapseFunction::setMin — Sets the initial size of the collapse data structures when collapsing on a numeric field only
    • SolrCollapseFunction::setNullPolicy — Sets the NULL Policy
    • SolrCollapseFunction::setSize — Sets the initial size of the collapse data structures when collapsing on a numeric field only.
    • SolrCollapseFunction::__toString — Returns a string representing the constructed collapse function
  • SolrException — The SolrException class
    • SolrException::getInternalInfo — Returns internal information where the Exception was thrown
  • SolrClientException — The SolrClientException class
    • SolrClientException::getInternalInfo — Returns internal information where the Exception was thrown
  • SolrServerException — The SolrServerException class
    • SolrServerException::getInternalInfo — Returns internal information where the Exception was thrown
  • SolrIllegalArgumentException — The SolrIllegalArgumentException class
    • SolrIllegalArgumentException::getInternalInfo — Returns internal information where the Exception was thrown
  • SolrIllegalOperationException — The SolrIllegalOperationException class
    • SolrIllegalOperationException::getInternalInfo — Returns internal information where the Exception was thrown
  • SolrMissingMandatoryParameterException — The SolrMissingMandatoryParameterException class
udm_set_agent_param
简介
搜索引擎扩展


简介

The Solr extension allows you to communicate effectively with the Apache Solr Server in PHP.

The Solr extension is an extremely fast, light-weight, feature-rich library that allows PHP developers to communicate effectively with Solr server instances.

Versions 1.x of The PECL Extension supports Apache Solr Server 1.3-3.x

Versions 2.x of The PECL Extension supports Apache Solr Server 4.0+

There are built-in tools to add documents and make updates to the solr server.

It also contains tools that allows you to build advanced queries to the server when searching for documents.

Solr
安装／配置
Solr


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Solr


需求

PHP version 5.2.11 or later is required.

The libxml and curl extensions must also be enabled for the Apache Solr extension to be available.

libxml2 2.6.31 or later is required.

libcurl 7.18.0 or later is also required.

The above library versions are required and attempting to hack the code to make it compile is strongly discouraged. It will fail, possibly with errors that could be hard to debug

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/solr.

For help and support, please visit the extension google group. » Apache Solr PHP Extension

Windows binaries (DLL files) for this PECL extension are available from the PECL website.

Note:

The solr module can be compiled in debug mode by passing the --enable-solr-debug flag to configure

When building manually, be sure to include curl and libxml support within the build.

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

SOLR_MAJOR_VERSION (integer)
SOLR_MINOR_VERSION (integer)
SOLR_PATCH_VERSION (integer)
SOLR_EXTENSION_VERSION (string)

资源类型
Solr 函数
Solr


Solr 函数

Table of Contents

  • solr_get_version — 返回当前Solr扩展的版本
预定义常量
solr_get_version
Solr


返回当前Solr扩展的版本

Solr 函数
范例
Solr 函数
PHP Manual

solr_get_version

(PECL solr >= 0.9.1)

solr_get_version — 返回当前Solr扩展的版本

说明

string solr_get_version ( void )

函数已字符串形式返回扩展的当前版本。

参数

此函数没有参数。

返回值

获取成功则返回版本号，否则返回 FALSE 。

错误／异常

此函数不抛出异常

范例

Example #1 solr_get_version() example

<?php

$solr_version = solr_get_version();

print $solr_version;

?>

以上例程的输出类似于：

0.9.6

参见

  • SolrUtils::getSolrVersion() - Returns the current version of the Solr extension

Solr 函数
范例
Solr 函数


范例

Examples of how to use the Apache Solr extension in PHP

Example #1 Contents of the BootStrap file

<?php

/* Domain name of the Solr server */
define('SOLR_SERVER_HOSTNAME', 'solr.example.com');

/* Whether or not to run in secure mode */
define('SOLR_SECURE', true);

/* HTTP Port to connection */
define('SOLR_SERVER_PORT', ((SOLR_SECURE) ? 8443 : 8983));

/* HTTP Basic Authentication Username */
define('SOLR_SERVER_USERNAME', 'admin');

/* HTTP Basic Authentication password */
define('SOLR_SERVER_PASSWORD', 'changeit');

/* HTTP connection timeout */
/* This is maximum time in seconds allowed for the http data transfer operation. Default value is 30 seconds */
define('SOLR_SERVER_TIMEOUT', 10);

/* File name to a PEM-formatted private key + private certificate (concatenated in that order) */
define('SOLR_SSL_CERT', 'certs/combo.pem');

/* File name to a PEM-formatted private certificate only */
define('SOLR_SSL_CERT_ONLY', 'certs/solr.crt');

/* File name to a PEM-formatted private key */
define('SOLR_SSL_KEY', 'certs/solr.key');

/* Password for PEM-formatted private key file */
define('SOLR_SSL_KEYPASSWORD', 'StrongAndSecurePassword');

/* Name of file holding one or more CA certificates to verify peer with*/
define('SOLR_SSL_CAINFO', 'certs/cacert.crt');

/* Name of directory holding multiple CA certificates to verify peer with */
define('SOLR_SSL_CAPATH', 'certs/');

?>

Example #2 Adding a document to the index

<?php

include "bootstrap.php";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);

$doc = new SolrInputDocument();

$doc->addField('id', 334455);
$doc->addField('cat', 'Software');
$doc->addField('cat', 'Lucene');

$updateResponse = $client->addDocument($doc);

print_r($updateResponse->getResponse());

?>

以上例程的输出类似于：

SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => 0
            [QTime] => 446
        )

)

Example #3 Merging one document into another document

<?php

include "bootstrap.php";

$doc = new SolrDocument();

$second_doc = new SolrDocument();

$doc->addField('id', 1123);

$doc->features = "PHP Client Side";
$doc->features = "Fast development cycles";

$doc['cat'] = 'Software';
$doc['cat'] = 'Custom Search';
$doc->cat   = 'Information Technology';

$second_doc->addField('cat', 'Lucene Search');

$second_doc->merge($doc, true);

print_r($second_doc->toArray());

?>

以上例程的输出类似于：

Array
(
    [document_boost] => 0
    [field_count] => 3
    [fields] => Array
        (
            [0] => SolrDocumentField Object
                (
                    [name] => cat
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => Software
                            [1] => Custom Search
                            [2] => Information Technology
                        )

                )

            [1] => SolrDocumentField Object
                (
                    [name] => id
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => 1123
                        )

                )

            [2] => SolrDocumentField Object
                (
                    [name] => features
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => PHP Client Side
                            [1] => Fast development cycles
                        )

                )

        )

)

Example #4 Searching for documents - SolrObject responses

<?php

include "bootstrap.php";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);

$query = new SolrQuery();

$query->setQuery('lucene');

$query->setStart(0);

$query->setRows(50);

$query->addField('cat')->addField('features')->addField('id')->addField('timestamp');

$query_response = $client->query($query);

$response = $query_response->getResponse();

print_r($response);

?>

以上例程的输出类似于：

SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => 0
            [QTime] => 1
            [params] => SolrObject Object
                (
                    [wt] => xml
                    [rows] => 50
                    [start] => 0
                    [indent] => on
                    [q] => lucene
                    [fl] => cat,features,id,timestamp
                    [version] => 2.2
                )

        )

    [response] => SolrObject Object
        (
            [numFound] => 3
            [start] => 0
            [docs] => Array
                (
                    [0] => SolrObject Object
                        (
                            [cat] => Array
                                (
                                    [0] => Software
                                    [1] => Lucene
                                )

                            [id] => 334456
                        )

                    [1] => SolrObject Object
                        (
                            [cat] => Array
                                (
                                    [0] => Software
                                    [1] => Lucene
                                )

                            [id] => 334455
                        )

                    [2] => SolrObject Object
                        (
                            [cat] => Array
                                (
                                    [0] => software
                                    [1] => search
                                )

                            [features] => Array
                                (
                                    [0] => Advanced Full-Text Search Capabilities using Lucene
                                    [1] => Optimized for High Volume Web Traffic
                                    [2] => Standards Based Open Interfaces - XML and HTTP
                                    [3] => Comprehensive HTML Administration Interfaces
                                    [4] => Scalability - Efficient Replication to other Solr Search Servers
                                    [5] => Flexible and Adaptable with XML configuration and Schema
                                    [6] => Good unicode support: héllo (hello with an accent over the e)
                                )

                            [id] => SOLR1000
                            [timestamp] => 2009-09-04T20:38:55.906
                        )

                )

        )

)

Example #5 Searching for documents - SolrDocument responses

<?php

include "bootstrap.php";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);

$query = new SolrQuery();

$query->setQuery('lucene');

$query->setStart(0);

$query->setRows(50);

$query->addField('cat')->addField('features')->addField('id')->addField('timestamp');

$query_response = $client->query($query);

$query_response->setParseMode(SolrQueryResponse::PARSE_SOLR_DOC);

$response = $query_response->getResponse();

print_r($response);

?>

以上例程的输出类似于：

SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => 0
            [QTime] => 1
            [params] => SolrObject Object
                (
                    [wt] => xml
                    [rows] => 50
                    [start] => 0
                    [indent] => on
                    [q] => lucene
                    [fl] => cat,features,id,timestamp
                    [version] => 2.2
                )

        )

    [response] => SolrObject Object
        (
            [numFound] => 3
            [start] => 0
            [docs] => Array
                (
                    [0] => SolrDocument Object
                        (
                            [_hashtable_index:SolrDocument:private] => 19740
                        )

                    [1] => SolrDocument Object
                        (
                            [_hashtable_index:SolrDocument:private] => 25485
                        )

                    [2] => SolrDocument Object
                        (
                            [_hashtable_index:SolrDocument:private] => 25052
                        )

                )

        )

)

Example #6 Simple TermsComponent example - basic

<?php

include "bootstrap.php";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);

$query = new SolrQuery();

$query->setTerms(true);

$query->setTermsField('cat');

$updateResponse = $client->query($query);

print_r($updateResponse->getResponse());

?>

以上例程的输出类似于：

SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => 0
            [QTime] => 2
        )

    [terms] => SolrObject Object
        (
            [cat] => SolrObject Object
                (
                    [electronics] => 14
                    [Lucene] => 4
                    [Software] => 4
                    [memory] => 3
                    [card] => 2
                    [connector] => 2
                    [drive] => 2
                    [graphics] => 2
                    [hard] => 2
                    [monitor] => 2
                )

        )

)

Example #7 Simple TermsComponent example - using a prefix

<?php

include "bootstrap.php";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);

$query = new SolrQuery();

$query->setTerms(true);

/* Return only terms starting with $prefix */
$prefix = 'c';

$query->setTermsField('cat')->setTermsPrefix($prefix);

$updateResponse = $client->query($query);

print_r($updateResponse->getResponse());

?>

以上例程的输出类似于：

SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => 0
            [QTime] => 1
        )

    [terms] => SolrObject Object
        (
            [cat] => SolrObject Object
                (
                    [card] => 2
                    [connector] => 2
                    [camera] => 1
                    [copier] => 1
                )

        )

)

Example #8 Simple TermsComponent example - specifying a minimum frequency

<?php

include "bootstrap.php";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);

$query = new SolrQuery();

$query->setTerms(true);

/* Return only terms starting with $prefix */
$prefix = 'c';

/* Return only terms with a frequency of 2 or greater */
$min_frequency = 2;

$query->setTermsField('cat')->setTermsPrefix($prefix)->setTermsMinCount($min_frequency);

$updateResponse = $client->query($query);

print_r($updateResponse->getResponse());

?>

以上例程的输出类似于：

SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => 0
            [QTime] => 0
        )

    [terms] => SolrObject Object
        (
            [cat] => SolrObject Object
                (
                    [card] => 2
                    [connector] => 2
                )

        )

)

Example #9 Simple Facet Example

<?php

include "bootstrap.php";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);

$query = new SolrQuery('*:*');

$query->setFacet(true);

$query->addFacetField('cat')->addFacetField('name')->setFacetMinCount(2);

$updateResponse = $client->query($query);

$response_array = $updateResponse->getResponse();

$facet_data = $response_array->facet_counts->facet_fields;

print_r($facet_data);

?>

以上例程的输出类似于：

SolrObject Object
(
    [cat] => SolrObject Object
        (
            [electronics] => 14
            [memory] => 3
            [Lucene] => 2
            [Software] => 2
            [card] => 2
            [connector] => 2
            [drive] => 2
            [graphics] => 2
            [hard] => 2
            [monitor] => 2
            [search] => 2
            [software] => 2
        )

    [name] => SolrObject Object
        (
            [gb] => 6
            [1] => 3
            [184] => 3
            [2] => 3
            [3200] => 3
            [400] => 3
            [500] => 3
            [ddr] => 3
            [i] => 3
            [ipod] => 3
            [memori] => 3
            [pc] => 3
            [pin] => 3
            [pod] => 3
            [sdram] => 3
            [system] => 3
            [unbuff] => 3
            [canon] => 2
            [corsair] => 2
            [drive] => 2
            [hard] => 2
            [mb] => 2
            [n] => 2
            [power] => 2
            [retail] => 2
            [video] => 2
            [x] => 2
        )

)

Example #10 Simple Facet Example - with optional field override for mincount

<?php

include "bootstrap.php";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);

$query = new SolrQuery('*:*');

$query->setFacet(true);

$query->addFacetField('cat')->addFacetField('name')->setFacetMinCount(2)->setFacetMinCount(4, 'name');

$updateResponse = $client->query($query);

$response_array = $updateResponse->getResponse();

$facet_data = $response_array->facet_counts->facet_fields;

print_r($facet_data);

?>

以上例程的输出类似于：

SolrObject Object
(
    [cat] => SolrObject Object
        (
            [electronics] => 14
            [memory] => 3
            [Lucene] => 2
            [Software] => 2
            [card] => 2
            [connector] => 2
            [drive] => 2
            [graphics] => 2
            [hard] => 2
            [monitor] => 2
            [search] => 2
            [software] => 2
        )

    [name] => SolrObject Object
        (
            [gb] => 6
        )

)

Example #11 Facet Date Example

<?php

include "bootstrap.php";

$options = array
(
        'hostname' => SOLR_SERVER_HOSTNAME,
        'login'    => SOLR_SERVER_USERNAME,
        'password' => SOLR_SERVER_PASSWORD,
        'port'     => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);

$query = new SolrQuery('*:*');

$query->setFacet(true);

$query->addFacetDateField('manufacturedate_dt');

$query->setFacetDateStart('2006-02-13T00:00:00Z');

$query->setFacetDateEnd('2012-02-13T00:00:00Z');

$query->setFacetDateGap('+1YEAR');

$query->setFacetDateHardEnd(1);

$query->addFacetDateOther('before');

$updateResponse = $client->query($query);

$response_array = $updateResponse->getResponse();

$facet_data = $response_array->facet_counts->facet_dates;

print_r($facet_data);

?>

以上例程的输出类似于：

SolrObject Object
(
    [manufacturedate_dt] => SolrObject Object
        (
            [2006-02-13T00:00:00Z] => 9
            [2007-02-13T00:00:00Z] => 0
            [2008-02-13T00:00:00Z] => 0
            [2009-02-13T00:00:00Z] => 0
            [2010-02-13T00:00:00Z] => 0
            [2011-02-13T00:00:00Z] => 0
            [gap] => +1YEAR
            [start] => 2006-02-13T00:00:00Z
            [end] => 2012-02-13T00:00:00Z
            [before] => 2
        )

)

Example #12 Connecting to SSL-Enabled Server

<?php

include "bootstrap.php";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'timeout'  => SOLR_SERVER_TIMEOUT,
    'secure'   => SOLR_SECURE,
    'ssl_cert' => SOLR_SSL_CERT_ONLY,
    'ssl_key'  => SOLR_SSL_KEY,
    'ssl_keypassword' => SOLR_SSL_KEYPASSWORD,
    'ssl_cainfo' => SOLR_SSL_CAINFO,
);

$client = new SolrClient($options);

$query = new SolrQuery('*:*');

$query->setFacet(true);

$query->addFacetField('cat')->addFacetField('name')->setFacetMinCount(2)->setFacetMinCount(4, 'name');

$updateResponse = $client->query($query);

$response_array = $updateResponse->getResponse();

$facet_data = $response_array->facet_counts->facet_fields;

print_r($facet_data);

?>

以上例程的输出类似于：

SolrObject Object
(
    [cat] => SolrObject Object
        (
            [electronics] => 14
            [memory] => 3
            [Lucene] => 2
            [Software] => 2
            [card] => 2
            [connector] => 2
            [drive] => 2
            [graphics] => 2
            [hard] => 2
            [monitor] => 2
            [search] => 2
            [software] => 2
        )

    [name] => SolrObject Object
        (
            [gb] => 6
        )

)

Example #13 Collapsing a SolrQuery

<?php
include "bootstrap.php";

$options = array
(
        'hostname' => SOLR_SERVER_HOSTNAME,
        'login'    => SOLR_SERVER_USERNAME,
        'password' => SOLR_SERVER_PASSWORD,
        'port'     => SOLR_SERVER_PORT,
        'path'     => SOLR_SERVER_PATH
);

$client = new SolrClient($options);

$query = new SolrQuery('*:*');

$collapseFunction = new SolrCollapseFunction('manu_id_s');

$collapseFunction
->setSize(2)
->setNullPolicy(SolrCollapseFunction::NULLPOLICY_IGNORE);

$query
->collapse($collapseFunction)
->setRows(4);

$queryResponse = $client->query($query);

$response = $queryResponse->getResponse();

print_r($response);
?>

以上例程的输出类似于：

SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => 0
            [QTime] => 1
            [params] => SolrObject Object
                (
                    [q] => *:*
                    [indent] => on
                    [fq] => {!collapse field=manu_id_s size=2 nullPolicy=ignore}
                    [rows] => 4
                    [version] => 2.2
                    [wt] => xml
                )

        )

    [response] => SolrObject Object
        (
            [numFound] => 14
            [start] => 0
            [docs] => Array
                (
                    [0] => SolrObject Object
                        (
                            [id] => SP2514N
                            [name] => Array
                                (
                                    [0] => Samsung SpinPoint P120 SP2514N - hard drive - 250 GB - ATA-133
                                )

                            [manu] => Array
                                (
                                    [0] => Samsung Electronics Co. Ltd.
                                )

                            [manu_id_s] => samsung
                            [cat] => Array
                                (
                                    [0] => electronics
                                    [1] => hard drive
                                )

                            [features] => Array
                                (
                                    [0] => 7200RPM, 8MB cache, IDE Ultra ATA-133
                                    [1] => NoiseGuard, SilentSeek technology, Fluid Dynamic Bearing (FDB) motor
                                )

                            [price] => Array
                                (
                                    [0] => 92
                                )

                            [popularity] => Array
                                (
                                    [0] => 6
                                )

                            [inStock] => Array
                                (
                                    [0] => 1
                                )

                            [manufacturedate_dt] => 2006-02-13T15:26:37Z
                            [store] => Array
                                (
                                    [0] => 35.0752,-97.032
                                )

                            [_version_] => 1510294336412057600
                        )

                    [1] => SolrObject Object
                        (
                            [id] => 6H500F0
                            [name] => Array
                                (
                                    [0] => Maxtor DiamondMax 11 - hard drive - 500 GB - SATA-300
                                )

                            [manu] => Array
                                (
                                    [0] => Maxtor Corp.
                                )

                            [manu_id_s] => maxtor
                            [cat] => Array
                                (
                                    [0] => electronics
                                    [1] => hard drive
                                )

                            [features] => Array
                                (
                                    [0] => SATA 3.0Gb/s, NCQ
                                    [1] => 8.5ms seek
                                    [2] => 16MB cache
                                )

                            [price] => Array
                                (
                                    [0] => 350
                                )

                            [popularity] => Array
                                (
                                    [0] => 6
                                )

                            [inStock] => Array
                                (
                                    [0] => 1
                                )

                            [store] => Array
                                (
                                    [0] => 45.17614,-93.87341
                                )

                            [manufacturedate_dt] => 2006-02-13T15:26:37Z
                            [_version_] => 1510294336449806336
                        )

                    [2] => SolrObject Object
                        (
                            [id] => F8V7067-APL-KIT
                            [name] => Array
                                (
                                    [0] => Belkin Mobile Power Cord for iPod w/ Dock
                                )

                            [manu] => Array
                                (
                                    [0] => Belkin
                                )

                            [manu_id_s] => belkin
                            [cat] => Array
                                (
                                    [0] => electronics
                                    [1] => connector
                                )

                            [features] => Array
                                (
                                    [0] => car power adapter, white
                                )

                            [weight] => Array
                                (
                                    [0] => 4
                                )

                            [price] => Array
                                (
                                    [0] => 19.95
                                )

                            [popularity] => Array
                                (
                                    [0] => 1
                                )

                            [inStock] => Array
                                (
                                    [0] =>
                                )

                            [store] => Array
                                (
                                    [0] => 45.18014,-93.87741
                                )

                            [manufacturedate_dt] => 2005-08-01T16:30:25Z
                            [_version_] => 1510294336458194944
                        )

                    [3] => SolrObject Object
                        (
                            [id] => MA147LL/A
                            [name] => Array
                                (
                                    [0] => Apple 60 GB iPod with Video Playback Black
                                )

                            [manu] => Array
                                (
                                    [0] => Apple Computer Inc.
                                )

                            [manu_id_s] => apple
                            [cat] => Array
                                (
                                    [0] => electronics
                                    [1] => music
                                )

                            [features] => Array
                                (
                                    [0] => iTunes, Podcasts, Audiobooks
                                    [1] => Stores up to 15,000 songs, 25,000 photos, or 150 hours of video
                                    [2] => 2.5-inch, 320x240 color TFT LCD display with LED backlight
                                    [3] => Up to 20 hours of battery life
                                    [4] => Plays AAC, MP3, WAV, AIFF, Audible, Apple Lossless, H.264 video
                                    [5] => Notes, Calendar, Phone book, Hold button, Date display, Photo wallet, Built-in games, JPEG photo playback, Upgradeable firmware, USB 2.0 compatibility, Playback speed control, Rechargeable capability, Battery level indication
                                )

                            [includes] => Array
                                (
                                    [0] => earbud headphones, USB cable
                                )

                            [weight] => Array
                                (
                                    [0] => 5.5
                                )

                            [price] => Array
                                (
                                    [0] => 399
                                )

                            [popularity] => Array
                                (
                                    [0] => 10
                                )

                            [inStock] => Array
                                (
                                    [0] => 1
                                )

                            [store] => Array
                                (
                                    [0] => 37.7752,-100.0232
                                )

                            [manufacturedate_dt] => 2005-10-12T08:00:00Z
                            [_version_] => 1510294336562003968
                        )

                )

        )

)

Example #14 Solr Real Time Get (RTG) example SolrClient::getById()

<?php

include "bootstrap.php";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'     => SOLR_SERVER_PATH
);

$client = new SolrClient($options);
$response = $client->getById('GB18030TEST');
print_r($response->getResponse());

?>

以上例程的输出类似于：

SolrObject Object
(
    [doc] => SolrObject Object
        (
            [id] => GB18030TEST
            [name] => Array
                (
                    [0] => Test with some GB18030 encoded characters
                )

            [features] => Array
                (
                    [0] => No accents here
                    [1] => 这是一个功能
                    [2] => This is a feature (translated)
                    [3] => 这份文件是很有光泽
                    [4] => This document is very shiny (translated)
                )

            [price] => Array
                (
                    [0] => 0
                )

            [inStock] => Array
                (
                    [0] => 1
                )

            [_version_] => 1510294336239042560
        )

)
solr_get_version
SolrUtils
Solr


The SolrUtils class

(PECL solr >= 0.9.2)

简介

Contains utility methods for retrieving the current extension version and preparing query phrases.

Also contains method for escaping query strings and parsing XML responses.

类摘要

abstract SolrUtils {
/* 方法 */
public static SolrObject digestXmlResponse ( string $xmlresponse [, int $parse_mode = 0 ] )
public static string escapeQueryChars ( string $str )
public static string getSolrVersion ( void )
public static string queryPhrase ( string $str )
}

Table of Contents

  • SolrUtils::digestXmlResponse — Parses an response XML string into a SolrObject
  • SolrUtils::escapeQueryChars — Escapes a lucene query string
  • SolrUtils::getSolrVersion — Returns the current version of the Solr extension
  • SolrUtils::queryPhrase — Prepares a phrase from an unescaped lucene string
范例
SolrUtils::digestXmlResponse
Solr


Parses an response XML string into a SolrObject

SolrUtils
SolrUtils::escapeQueryChars
SolrUtils
PHP Manual

SolrUtils::digestXmlResponse

(PECL solr >= 0.9.2)

SolrUtils::digestXmlResponse — Parses an response XML string into a SolrObject

说明

public static SolrObject SolrUtils::digestXmlResponse ( string $xmlresponse [, int $parse_mode = 0 ] )

This method parses an response XML string from the Apache Solr server into a SolrObject. It throws a SolrException if there was an error.

参数

xmlresponse

The XML response string from the Solr server.

parse_mode

Use SolrResponse::PARSE_SOLR_OBJ or SolrResponse::PARSE_SOLR_DOC

返回值

Returns the SolrObject representing the XML response.

If the parse_mode parameter is set to SolrResponse::PARSE_SOLR_OBJ Solr documents will be parses as SolrObject instances.

If it is set to SolrResponse::PARSE_SOLR_DOC, they will be parsed as SolrDocument instances.

SolrUtils
SolrUtils::escapeQueryChars
SolrUtils


Escapes a lucene query string

SolrUtils::digestXmlResponse
SolrUtils::getSolrVersion
SolrUtils
PHP Manual

SolrUtils::escapeQueryChars

(PECL solr >= 0.9.2)

SolrUtils::escapeQueryChars — Escapes a lucene query string

说明

public static string SolrUtils::escapeQueryChars ( string $str )

Lucene supports escaping special characters that are part of the query syntax.

The current list special characters are:

+ - && || ! ( ) { } [ ] ^ " ~ * ? : \ /

These characters are part of the query syntax and must be escaped

参数

str

This is the query string to be escaped.

返回值

Returns the escaped string 或者在失败时返回 FALSE.

SolrUtils::digestXmlResponse
SolrUtils::getSolrVersion
SolrUtils


Returns the current version of the Solr extension

SolrUtils::escapeQueryChars
SolrUtils::queryPhrase
SolrUtils
PHP Manual

SolrUtils::getSolrVersion

(PECL solr >= 0.9.2)

SolrUtils::getSolrVersion — Returns the current version of the Solr extension

说明

public static string SolrUtils::getSolrVersion ( void )

Returns the current Solr version.

参数

此函数没有参数。

返回值

The current version of the Apache Solr extension.

SolrUtils::escapeQueryChars
SolrUtils::queryPhrase
SolrUtils


Prepares a phrase from an unescaped lucene string

SolrUtils::getSolrVersion
SolrInputDocument
SolrUtils
PHP Manual

SolrUtils::queryPhrase

(PECL solr >= 0.9.2)

SolrUtils::queryPhrase — Prepares a phrase from an unescaped lucene string

说明

public static string SolrUtils::queryPhrase ( string $str )

Prepares a phrase from an unescaped lucene string.

参数

str

The lucene phrase.

返回值

Returns the phrase contained in double quotes.

SolrUtils::getSolrVersion
SolrInputDocument
SolrUtils


The SolrInputDocument class

(PECL solr >= 0.9.2)

简介

This class represents a Solr document that is about to be submitted to the Solr index.

类摘要

final SolrInputDocument {
/* 常量 */
const integer SORT_DEFAULT = 1 ;
const integer SORT_ASC = 1 ;
const integer SORT_DESC = 2 ;
const integer SORT_FIELD_NAME = 1 ;
const integer SORT_FIELD_VALUE_COUNT = 2 ;
const integer SORT_FIELD_BOOST_VALUE = 4 ;
/* 方法 */
public void addChildDocument ( SolrInputDocument $child )
public void addChildDocuments ( array &$docs )
public bool addField ( string $fieldName , string $fieldValue [, float $fieldBoostValue = 0.0 ] )
public bool clear ( void )
public void __clone ( void )
public __construct ( void )
public bool deleteField ( string $fieldName )
public void __destruct ( void )
public bool fieldExists ( string $fieldName )
public float getBoost ( void )
public array getChildDocuments ( void )
public integer getChildDocumentsCount ( void )
public SolrDocumentField getField ( string $fieldName )
public float getFieldBoost ( string $fieldName )
public int getFieldCount ( void )
public array getFieldNames ( void )
public boolean hasChildDocuments ( void )
public bool merge ( SolrInputDocument $sourceDoc [, bool $overwrite = true ] )
public bool reset ( void )
public bool setBoost ( float $documentBoostValue )
public bool setFieldBoost ( string $fieldName , float $fieldBoostValue )
public bool sort ( int $sortOrderBy [, int $sortDirection = SolrInputDocument::SORT_ASC ] )
public array toArray ( void )
}

预定义常量

SolrInputDocument Class Constants

SolrInputDocument::SORT_DEFAULT

Sorts the fields in ascending order.

SolrInputDocument::SORT_ASC

Sorts the fields in ascending order.

SolrInputDocument::SORT_DESC

Sorts the fields in descending order.

SolrInputDocument::SORT_FIELD_NAME

Sorts the fields by name

SolrInputDocument::SORT_FIELD_VALUE_COUNT

Sorts the fields by number of values.

SolrInputDocument::SORT_FIELD_BOOST_VALUE

Sorts the fields by boost value.

Table of Contents

  • SolrInputDocument::addChildDocument — Adds a child document for block indexing
  • SolrInputDocument::addChildDocuments — Adds an array of child documents
  • SolrInputDocument::addField — Adds a field to the document
  • SolrInputDocument::clear — Resets the input document
  • SolrInputDocument::__clone — Creates a copy of a SolrDocument
  • SolrInputDocument::__construct — Constructor
  • SolrInputDocument::deleteField — Removes a field from the document
  • SolrInputDocument::__destruct — Destructor
  • SolrInputDocument::fieldExists — Checks if a field exists
  • SolrInputDocument::getBoost — Retrieves the current boost value for the document
  • SolrInputDocument::getChildDocuments — Returns an array of child documents (SolrInputDocument)
  • SolrInputDocument::getChildDocumentsCount — Returns the number of child documents
  • SolrInputDocument::getField — Retrieves a field by name
  • SolrInputDocument::getFieldBoost — Retrieves the boost value for a particular field
  • SolrInputDocument::getFieldCount — Returns the number of fields in the document
  • SolrInputDocument::getFieldNames — Returns an array containing all the fields in the document
  • SolrInputDocument::hasChildDocuments — Returns true if the document has any child documents
  • SolrInputDocument::merge — Merges one input document into another
  • SolrInputDocument::reset — This is an alias of SolrInputDocument::clear
  • SolrInputDocument::setBoost — Sets the boost value for this document
  • SolrInputDocument::setFieldBoost — Sets the index-time boost value for a field
  • SolrInputDocument::sort — Sorts the fields within the document
  • SolrInputDocument::toArray — Returns an array representation of the input document
SolrUtils::queryPhrase
SolrInputDocument::addChildDocument
Solr


Adds a child document for block indexing

SolrInputDocument
SolrInputDocument::addChildDocuments
SolrInputDocument
PHP Manual

SolrInputDocument::addChildDocument

(PECL solr >= 2.3.0)

SolrInputDocument::addChildDocument — Adds a child document for block indexing

说明

public void SolrInputDocument::addChildDocument ( SolrInputDocument $child )

Adds a child document to construct a document block with nested documents.

参数

child

A SolrInputDocument object.

错误／异常

Throws SolrIllegalArgumentException on failure.

Throws SolrException on internal failure.

返回值

范例

Example #1 SolrInputDocument::addChildDocument() example

<?php

include "bootstrap.php";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'     => SOLR_SERVER_STORE_PATH,
);

$client = new SolrClient($options);

$product = new SolrInputDocument();

$product->addField('id', 'P-BLACK');
$product->addField('cat', 'tshirt');
$product->addField('cat', 'polo');
$product->addField('content_type', 'product');

$small = new SolrInputDocument();
$small->addField('id', 'TS-BLK-S');
$small->addField('content_type', 'sku');
$small->addField('size', 'S');
$small->addField('inventory', 100);

$medium = new SolrInputDocument();
$medium->addField('id', 'TS-BLK-M');
$medium->addField('content_type', 'sku');
$medium->addField('size', 'M');
$medium->addField('inventory', 200);

$large = new SolrInputDocument();
$large->addField('id', 'TS-BLK-L');
$large->addField('content_type', 'sku');
$large->addField('size', 'L');
$large->addField('inventory', 300);

// add child documents
$product->addChildDocument($small);
$product->addChildDocument($medium);
$product->addChildDocument($large);

// add product document block to the index
$updateResponse = $client->addDocument(
        $product,
        true, // overwrite if the document exists
        10000 // commit within 10 seconds
);

print_r($updateResponse->getResponse());

以上例程的输出类似于：

SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => 0
            [QTime] => 5
        )
)

参见

  • SolrInputDocument::addChildDocuments() - Adds an array of child documents
  • SolrInputDocument::hasChildDocuments() - Returns true if the document has any child documents
  • SolrInputDocument::getChildDocuments() - Returns an array of child documents (SolrInputDocument)
  • SolrInputDocument::getChildDocumentsCount() - Returns the number of child documents
SolrInputDocument
SolrInputDocument::addChildDocuments
SolrInputDocument


Adds an array of child documents

SolrInputDocument::addChildDocument
SolrInputDocument::addField
SolrInputDocument
PHP Manual

SolrInputDocument::addChildDocuments

(PECL solr >= 2.3.0)

SolrInputDocument::addChildDocuments — Adds an array of child documents

说明

public void SolrInputDocument::addChildDocuments ( array &$docs )

Adds an array of child documents to the current input document.

参数

docs

An array of SolrInputDocument objects.

错误／异常

Throws SolrIllegalArgumentException on failure.

Throws SolrException on internal failure.

返回值

范例

Example #1 SolrInputDocument::addChildDocuments() example

<?php

include "bootstrap.php";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'     => SOLR_SERVER_STORE_PATH,
);

$client = new SolrClient($options);

$product = new SolrInputDocument();

$product->addField('id', 'P-BLACK');
$product->addField('cat', 'tshirt');
$product->addField('cat', 'polo');
$product->addField('content_type', 'product');

$small = new SolrInputDocument();
$small->addField('id', 'TS-BLK-S');
$small->addField('content_type', 'sku');
$small->addField('size', 'S');
$small->addField('inventory', 100);

$medium = new SolrInputDocument();
$medium->addField('id', 'TS-BLK-M');
$medium->addField('content_type', 'sku');
$medium->addField('size', 'M');
$medium->addField('inventory', 200);

$large = new SolrInputDocument();
$large->addField('id', 'TS-BLK-L');
$large->addField('content_type', 'sku');
$large->addField('size', 'L');
$large->addField('inventory', 300);

// add child documents
$skus = [$small, $medium, $large];
$product->addChildDocuments($skus);

// add the product document block to the index
$updateResponse = $client->addDocument(
        $product,
        true, // overwrite if the document exists
        10000 // commit within 10 seconds
);

print_r($updateResponse->getResponse());

以上例程的输出类似于：

SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => 0
            [QTime] => 5
        )
)

参见

  • SolrInputDocument::addChildDocument() - Adds a child document for block indexing
  • SolrInputDocument::hasChildDocuments() - Returns true if the document has any child documents
  • SolrInputDocument::getChildDocuments() - Returns an array of child documents (SolrInputDocument)
  • SolrInputDocument::getChildDocumentsCount() - Returns the number of child documents
SolrInputDocument::addChildDocument
SolrInputDocument::addField
SolrInputDocument


Adds a field to the document

SolrInputDocument::addChildDocuments
SolrInputDocument::clear
SolrInputDocument
PHP Manual

SolrInputDocument::addField

(PECL solr >= 0.9.2)

SolrInputDocument::addField — Adds a field to the document

说明

public bool SolrInputDocument::addField ( string $fieldName , string $fieldValue [, float $fieldBoostValue = 0.0 ] )

For multi-value fields, if a valid boost value is specified, the specified value will be multiplied by the current boost value for this field.

参数

fieldName

The name of the field

fieldValue

The value for the field.

fieldBoostValue

The index time boost for the field. Though this cannot be negative, you can still pass values less than 1.0 but they must be greater than zero.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SolrInputDocument::addChildDocuments
SolrInputDocument::clear
SolrInputDocument


Resets the input document

SolrInputDocument::addField
SolrInputDocument::__clone
SolrInputDocument
PHP Manual

SolrInputDocument::clear

(PECL solr >= 0.9.2)

SolrInputDocument::clear — Resets the input document

说明

public bool SolrInputDocument::clear ( void )

Resets the document by dropping all the fields and resets the document boost to zero.

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SolrInputDocument::addField
SolrInputDocument::__clone
SolrInputDocument


Creates a copy of a SolrDocument

SolrInputDocument::clear
SolrInputDocument::__construct
SolrInputDocument
PHP Manual

SolrInputDocument::__clone

(PECL solr >= 0.9.2)

SolrInputDocument::__clone — Creates a copy of a SolrDocument

说明

public void SolrInputDocument::__clone ( void )

Should not be called directly. It is used to create a deep copy of a SolrInputDocument.

参数

此函数没有参数。

返回值

Creates a new SolrInputDocument instance.

SolrInputDocument::clear
SolrInputDocument::__construct
SolrInputDocument


Constructor

SolrInputDocument::__clone
SolrInputDocument::deleteField
SolrInputDocument
PHP Manual

SolrInputDocument::__construct

(PECL solr >= 0.9.2)

SolrInputDocument::__construct — Constructor

说明

public SolrInputDocument::__construct ( void )

Constructor.

参数

此函数没有参数。

返回值

None.

SolrInputDocument::__clone
SolrInputDocument::deleteField
SolrInputDocument


Removes a field from the document

SolrInputDocument::__construct
SolrInputDocument::__destruct
SolrInputDocument
PHP Manual

SolrInputDocument::deleteField

(PECL solr >= 0.9.2)

SolrInputDocument::deleteField — Removes a field from the document

说明

public bool SolrInputDocument::deleteField ( string $fieldName )

Removes a field from the document.

参数

fieldName

The name of the field.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SolrInputDocument::__construct
SolrInputDocument::__destruct
SolrInputDocument


Destructor

SolrInputDocument::deleteField
SolrInputDocument::fieldExists
SolrInputDocument
PHP Manual

SolrInputDocument::__destruct

(PECL solr >= 0.9.2)

SolrInputDocument::__destruct — Destructor

说明

public void SolrInputDocument::__destruct ( void )

Destructor

参数

此函数没有参数。

返回值

None.

SolrInputDocument::deleteField
SolrInputDocument::fieldExists
SolrInputDocument


Checks if a field exists

SolrInputDocument::__destruct
SolrInputDocument::getBoost
SolrInputDocument
PHP Manual

SolrInputDocument::fieldExists

(PECL solr >= 0.9.2)

SolrInputDocument::fieldExists — Checks if a field exists

说明

public bool SolrInputDocument::fieldExists ( string $fieldName )

Checks if a field exists

参数

fieldName

Name of the field.

返回值

Returns TRUE if the field was found and FALSE if it was not found.

SolrInputDocument::__destruct
SolrInputDocument::getBoost
SolrInputDocument


Retrieves the current boost value for the document

SolrInputDocument::fieldExists
SolrInputDocument::getChildDocuments
SolrInputDocument
PHP Manual

SolrInputDocument::getBoost

(PECL solr >= 0.9.2)

SolrInputDocument::getBoost — Retrieves the current boost value for the document

说明

public float SolrInputDocument::getBoost ( void )

Retrieves the current boost value for the document.

参数

此函数没有参数。

返回值

Returns the boost value on success and FALSE on failure.

SolrInputDocument::fieldExists
SolrInputDocument::getChildDocuments
SolrInputDocument


Returns an array of child documents (SolrInputDocument)

SolrInputDocument::getBoost
SolrInputDocument::getChildDocumentsCount
SolrInputDocument
PHP Manual

SolrInputDocument::getChildDocuments

(PECL solr >= 2.3.0)

SolrInputDocument::getChildDocuments — Returns an array of child documents (SolrInputDocument)

说明

public array SolrInputDocument::getChildDocuments ( void )

Returns an array of child documents (SolrInputDocument)

参数

此函数没有参数。

返回值

参见

  • SolrInputDocument::addChildDocument() - Adds a child document for block indexing
  • SolrInputDocument::addChildDocuments() - Adds an array of child documents
  • SolrInputDocument::hasChildDocuments() - Returns true if the document has any child documents
  • SolrInputDocument::getChildDocumentsCount() - Returns the number of child documents
SolrInputDocument::getBoost
SolrInputDocument::getChildDocumentsCount
SolrInputDocument


Returns the number of child documents

SolrInputDocument::getChildDocuments
SolrInputDocument::getField
SolrInputDocument
PHP Manual

SolrInputDocument::getChildDocumentsCount

(PECL solr >= 2.3.0)

SolrInputDocument::getChildDocumentsCount — Returns the number of child documents

说明

public integer SolrInputDocument::getChildDocumentsCount ( void )

Returns the number of child documents

参数

此函数没有参数。

返回值

参见

  • SolrInputDocument::addChildDocument() - Adds a child document for block indexing
  • SolrInputDocument::addChildDocuments() - Adds an array of child documents
  • SolrInputDocument::hasChildDocuments() - Returns true if the document has any child documents
  • SolrInputDocument::getChildDocuments() - Returns an array of child documents (SolrInputDocument)
SolrInputDocument::getChildDocuments
SolrInputDocument::getField
SolrInputDocument


Retrieves a field by name

SolrInputDocument::getChildDocumentsCount
SolrInputDocument::getFieldBoost
SolrInputDocument
PHP Manual

SolrInputDocument::getField

(PECL solr >= 0.9.2)

SolrInputDocument::getField — Retrieves a field by name

说明

public SolrDocumentField SolrInputDocument::getField ( string $fieldName )

Retrieves a field in the document.

参数

fieldName

The name of the field.

返回值

Returns a SolrDocumentField object on success and FALSE on failure.

SolrInputDocument::getChildDocumentsCount
SolrInputDocument::getFieldBoost
SolrInputDocument


Retrieves the boost value for a particular field

SolrInputDocument::getField
SolrInputDocument::getFieldCount
SolrInputDocument
PHP Manual

SolrInputDocument::getFieldBoost

(PECL solr >= 0.9.2)

SolrInputDocument::getFieldBoost — Retrieves the boost value for a particular field

说明

public float SolrInputDocument::getFieldBoost ( string $fieldName )

Retrieves the boost value for a particular field.

参数

fieldName

The name of the field.

返回值

Returns the boost value for the field or FALSE if there was an error.

SolrInputDocument::getField
SolrInputDocument::getFieldCount
SolrInputDocument


Returns the number of fields in the document

SolrInputDocument::getFieldBoost
SolrInputDocument::getFieldNames
SolrInputDocument
PHP Manual

SolrInputDocument::getFieldCount

(PECL solr >= 0.9.2)

SolrInputDocument::getFieldCount — Returns the number of fields in the document

说明

public int SolrInputDocument::getFieldCount ( void )

Returns the number of fields in the document.

参数

此函数没有参数。

返回值

Returns an integer on success 或者在失败时返回 FALSE.

SolrInputDocument::getFieldBoost
SolrInputDocument::getFieldNames
SolrInputDocument


Returns an array containing all the fields in the document

SolrInputDocument::getFieldCount
SolrInputDocument::hasChildDocuments
SolrInputDocument
PHP Manual

SolrInputDocument::getFieldNames

(PECL solr >= 0.9.2)

SolrInputDocument::getFieldNames — Returns an array containing all the fields in the document

说明

public array SolrInputDocument::getFieldNames ( void )

Returns an array containing all the fields in the document.

参数

此函数没有参数。

返回值

Returns an array on success and FALSE on failure.

SolrInputDocument::getFieldCount
SolrInputDocument::hasChildDocuments
SolrInputDocument


Returns true if the document has any child documents

SolrInputDocument::getFieldNames
SolrInputDocument::merge
SolrInputDocument
PHP Manual

SolrInputDocument::hasChildDocuments

(PECL solr >= 2.3.0)

SolrInputDocument::hasChildDocuments — Returns true if the document has any child documents

说明

public boolean SolrInputDocument::hasChildDocuments ( void )

Checks whether the document has any child documents

参数

此函数没有参数。

返回值

参见

  • SolrInputDocument::addChildDocument() - Adds a child document for block indexing
  • SolrInputDocument::addChildDocuments() - Adds an array of child documents
  • SolrInputDocument::getChildDocuments() - Returns an array of child documents (SolrInputDocument)
  • SolrInputDocument::getChildDocumentsCount() - Returns the number of child documents
SolrInputDocument::getFieldNames
SolrInputDocument::merge
SolrInputDocument


Merges one input document into another

SolrInputDocument::hasChildDocuments
SolrInputDocument::reset
SolrInputDocument
PHP Manual

SolrInputDocument::merge

(PECL solr >= 0.9.2)

SolrInputDocument::merge — Merges one input document into another

说明

public bool SolrInputDocument::merge ( SolrInputDocument $sourceDoc [, bool $overwrite = true ] )

Merges one input document into another.

参数

sourceDoc

The source document.

overwrite

If this is TRUE it will replace matching fields in the destination document.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 In the future, this will be modified to return the number of fields in the new document.

SolrInputDocument::hasChildDocuments
SolrInputDocument::reset
SolrInputDocument


This is an alias of SolrInputDocument::clear

SolrInputDocument::merge
SolrInputDocument::setBoost
SolrInputDocument
PHP Manual

SolrInputDocument::reset

(PECL solr >= 0.9.2)

SolrInputDocument::reset — This is an alias of SolrInputDocument::clear

说明

public bool SolrInputDocument::reset ( void )

This is an alias of SolrInputDocument::clear

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SolrInputDocument::merge
SolrInputDocument::setBoost
SolrInputDocument


Sets the boost value for this document

SolrInputDocument::reset
SolrInputDocument::setFieldBoost
SolrInputDocument
PHP Manual

SolrInputDocument::setBoost

(PECL solr >= 0.9.2)

SolrInputDocument::setBoost — Sets the boost value for this document

说明

public bool SolrInputDocument::setBoost ( float $documentBoostValue )

Sets the boost value for this document.

参数

documentBoostValue

The index-time boost value for this document.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SolrInputDocument::reset
SolrInputDocument::setFieldBoost
SolrInputDocument


Sets the index-time boost value for a field

SolrInputDocument::setBoost
SolrInputDocument::sort
SolrInputDocument
PHP Manual

SolrInputDocument::setFieldBoost

(PECL solr >= 0.9.2)

SolrInputDocument::setFieldBoost — Sets the index-time boost value for a field

说明

public bool SolrInputDocument::setFieldBoost ( string $fieldName , float $fieldBoostValue )

Sets the index-time boost value for a field. This replaces the current boost value for this field.

参数

fieldName

The name of the field.

fieldBoostValue

The index time boost value.

SolrInputDocument::setBoost
SolrInputDocument::sort
SolrInputDocument


Sorts the fields within the document

SolrInputDocument::setFieldBoost
SolrInputDocument::toArray
SolrInputDocument
PHP Manual

SolrInputDocument::sort

(PECL solr >= 0.9.2)

SolrInputDocument::sort — Sorts the fields within the document

说明

public bool SolrInputDocument::sort ( int $sortOrderBy [, int $sortDirection = SolrInputDocument::SORT_ASC ] )

The fields are rearranged according to the specified criteria and sort direction

   Fields can be sorted by boost values, field names and number of values.

   The $order_by parameter must be one of :

   * SolrInputDocument::SORT_FIELD_NAME
   * SolrInputDocument::SORT_FIELD_BOOST_VALUE
   * SolrInputDocument::SORT_FIELD_VALUE_COUNT

   The sort direction can be one of :

   * SolrInputDocument::SORT_DEFAULT
   * SolrInputDocument::SORT_ASC
   * SolrInputDocument::SORT_DESC

参数

sortOrderBy

The sort criteria

sortDirection

The sort direction

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SolrInputDocument::setFieldBoost
SolrInputDocument::toArray
SolrInputDocument


Returns an array representation of the input document

SolrInputDocument::sort
SolrDocument
SolrInputDocument
PHP Manual

SolrInputDocument::toArray

(PECL solr >= 0.9.2)

SolrInputDocument::toArray — Returns an array representation of the input document

说明

public array SolrInputDocument::toArray ( void )

Returns an array representation of the input document.

参数

此函数没有参数。

返回值

Returns an array containing the fields. It returns FALSE on failure.

SolrInputDocument::sort
SolrDocument
SolrInputDocument


The SolrDocument class

(PECL solr >= 0.9.2)

简介

Represents a Solr document retrieved from a query response.

类摘要

final SolrDocument implements ArrayAccess , Iterator , Serializable {
/* 常量 */
const integer SORT_DEFAULT = 1 ;
const integer SORT_ASC = 1 ;
const integer SORT_DESC = 2 ;
const integer SORT_FIELD_NAME = 1 ;
const integer SORT_FIELD_VALUE_COUNT = 2 ;
const integer SORT_FIELD_BOOST_VALUE = 4 ;
/* 方法 */
public bool addField ( string $fieldName , string $fieldValue )
public bool clear ( void )
public void __clone ( void )
public __construct ( void )
public SolrDocumentField current ( void )
public bool deleteField ( string $fieldName )
public void __destruct ( void )
public bool fieldExists ( string $fieldName )
public SolrDocumentField __get ( string $fieldName )
public array getChildDocuments ( void )
public integer getChildDocumentsCount ( void )
public SolrDocumentField getField ( string $fieldName )
public int getFieldCount ( void )
public array getFieldNames ( void )
public SolrInputDocument getInputDocument ( void )
public bool hasChildDocuments ( void )
public bool __isset ( string $fieldName )
public string key ( void )
public bool merge ( SolrDocument $sourceDoc [, bool $overwrite = true ] )
public void next ( void )
public bool offsetExists ( string $fieldName )
public SolrDocumentField offsetGet ( string $fieldName )
public void offsetSet ( string $fieldName , string $fieldValue )
public void offsetUnset ( string $fieldName )
public bool reset ( void )
public void rewind ( void )
public string serialize ( void )
public bool __set ( string $fieldName , string $fieldValue )
public bool sort ( int $sortOrderBy [, int $sortDirection = SolrDocument::SORT_ASC ] )
public array toArray ( void )
public void unserialize ( string $serialized )
public bool __unset ( string $fieldName )
public bool valid ( void )
}

预定义常量

SolrDocument::SORT_DEFAULT

Default mode for sorting fields within the document.

SolrDocument::SORT_ASC

Sorts the fields in ascending order

SolrDocument::SORT_DESC

Sorts the fields in descending order

SolrDocument::SORT_FIELD_NAME

Sorts the fields by field name.

SolrDocument::SORT_FIELD_VALUE_COUNT

Sorts the fields by number of values in each field.

SolrDocument::SORT_FIELD_BOOST_VALUE

Sorts the fields by thier boost values.

Table of Contents

  • SolrDocument::addField — Adds a field to the document
  • SolrDocument::clear — Drops all the fields in the document
  • SolrDocument::__clone — Creates a copy of a SolrDocument object
  • SolrDocument::__construct — Constructor
  • SolrDocument::current — Retrieves the current field
  • SolrDocument::deleteField — Removes a field from the document
  • SolrDocument::__destruct — Destructor
  • SolrDocument::fieldExists — Checks if a field exists in the document
  • SolrDocument::__get — Access the field as a property
  • SolrDocument::getChildDocuments — Returns an array of child documents (SolrDocument)
  • SolrDocument::getChildDocumentsCount — Returns the number of child documents
  • SolrDocument::getField — Retrieves a field by name
  • SolrDocument::getFieldCount — Returns the number of fields in this document
  • SolrDocument::getFieldNames — Returns an array of fields names in the document
  • SolrDocument::getInputDocument — Returns a SolrInputDocument equivalent of the object
  • SolrDocument::hasChildDocuments — Checks whether the document has any child documents
  • SolrDocument::__isset — Checks if a field exists
  • SolrDocument::key — Retrieves the current key
  • SolrDocument::merge — Merges source to the current SolrDocument
  • SolrDocument::next — Moves the internal pointer to the next field
  • SolrDocument::offsetExists — Checks if a particular field exists
  • SolrDocument::offsetGet — Retrieves a field
  • SolrDocument::offsetSet — Adds a field to the document
  • SolrDocument::offsetUnset — Removes a field
  • SolrDocument::reset — This is an alias to SolrDocument::clear()
  • SolrDocument::rewind — Resets the internal pointer to the beginning
  • SolrDocument::serialize — Used for custom serialization
  • SolrDocument::__set — Adds another field to the document
  • SolrDocument::sort — Sorts the fields in the document
  • SolrDocument::toArray — Returns an array representation of the document
  • SolrDocument::unserialize — Custom serialization of SolrDocument objects
  • SolrDocument::__unset — Removes a field from the document
  • SolrDocument::valid — Checks if the current position internally is still valid
SolrInputDocument::toArray
SolrDocument::addField
Solr


Adds a field to the document

SolrDocument
SolrDocument::clear
SolrDocument
PHP Manual

SolrDocument::addField

(PECL solr >= 0.9.2)

SolrDocument::addField — Adds a field to the document

说明

public bool SolrDocument::addField ( string $fieldName , string $fieldValue )

This method adds a field to the SolrDocument instance.

参数

fieldName

The name of the field

fieldValue

The value of the field.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SolrDocument
SolrDocument::clear
SolrDocument


Drops all the fields in the document

SolrDocument::addField
SolrDocument::__clone
SolrDocument
PHP Manual

SolrDocument::clear

(PECL solr >= 0.9.2)

SolrDocument::clear — Drops all the fields in the document

说明

public bool SolrDocument::clear ( void )

Resets the current object. Discards all the fields and resets the document boost to zero.

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SolrDocument::addField
SolrDocument::__clone
SolrDocument


Creates a copy of a SolrDocument object

SolrDocument::clear
SolrDocument::__construct
SolrDocument
PHP Manual

SolrDocument::__clone

(PECL solr >= 0.9.2)

SolrDocument::__clone — Creates a copy of a SolrDocument object

说明

public void SolrDocument::__clone ( void )

Creates a copy of a SolrDocument object. Not to be called directly.

参数

此函数没有参数。

返回值

None.

SolrDocument::clear
SolrDocument::__construct
SolrDocument


Constructor

SolrDocument::__clone
SolrDocument::current
SolrDocument
PHP Manual

SolrDocument::__construct

(PECL solr >= 0.9.2)

SolrDocument::__construct — Constructor

说明

public SolrDocument::__construct ( void )

Constructor for SolrDocument

参数

此函数没有参数。

返回值

SolrDocument::__clone
SolrDocument::current
SolrDocument


Retrieves the current field

SolrDocument::__construct
SolrDocument::deleteField
SolrDocument
PHP Manual

SolrDocument::current

(PECL solr >= 0.9.2)

SolrDocument::current — Retrieves the current field

说明

public SolrDocumentField SolrDocument::current ( void )

Retrieves the current field

参数

此函数没有参数。

返回值

Returns the field

SolrDocument::__construct
SolrDocument::deleteField
SolrDocument


Removes a field from the document

SolrDocument::current
SolrDocument::__destruct
SolrDocument
PHP Manual

SolrDocument::deleteField

(PECL solr >= 0.9.2)

SolrDocument::deleteField — Removes a field from the document

说明

public bool SolrDocument::deleteField ( string $fieldName )

Removes a field from the document.

参数

fieldName

Name of the field

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SolrDocument::current
SolrDocument::__destruct
SolrDocument


Destructor

SolrDocument::deleteField
SolrDocument::fieldExists
SolrDocument
PHP Manual

SolrDocument::__destruct

(PECL solr >= 0.9.2)

SolrDocument::__destruct — Destructor

说明

public void SolrDocument::__destruct ( void )

Destructor for SolrDocument.

参数

此函数没有参数。

返回值

SolrDocument::deleteField
SolrDocument::fieldExists
SolrDocument


Checks if a field exists in the document

SolrDocument::__destruct
SolrDocument::__get
SolrDocument
PHP Manual

SolrDocument::fieldExists

(PECL solr >= 0.9.2)

SolrDocument::fieldExists — Checks if a field exists in the document

说明

public bool SolrDocument::fieldExists ( string $fieldName )

Checks if the requested field as a valid fieldname in the document.

参数

fieldName

The name of the field.

返回值

Returns TRUE if the field is present and FALSE if it does not.

SolrDocument::__destruct
SolrDocument::__get
SolrDocument


Access the field as a property

SolrDocument::fieldExists
SolrDocument::getChildDocuments
SolrDocument
PHP Manual

SolrDocument::__get

(PECL solr >= 0.9.2)

SolrDocument::__get — Access the field as a property

说明

public SolrDocumentField SolrDocument::__get ( string $fieldName )

Magic method for accessing the field as a property.

参数

fieldName

The name of the field.

返回值

Returns a SolrDocumentField instance.

SolrDocument::fieldExists
SolrDocument::getChildDocuments
SolrDocument


Returns an array of child documents (SolrDocument)

SolrDocument::__get
SolrDocument::getChildDocumentsCount
SolrDocument
PHP Manual

SolrDocument::getChildDocuments

(PECL solr >= 2.3.0)

SolrDocument::getChildDocuments — Returns an array of child documents (SolrDocument)

说明

public array SolrDocument::getChildDocuments ( void )

Returns an array of child documents (SolrDocument)

参数

此函数没有参数。

返回值

参见

  • SolrDocument::hasChildDocuments() - Checks whether the document has any child documents
  • SolrDocument::getChildDocumentsCount() - Returns the number of child documents
SolrDocument::__get
SolrDocument::getChildDocumentsCount
SolrDocument


Returns the number of child documents

SolrDocument::getChildDocuments
SolrDocument::getField
SolrDocument
PHP Manual

SolrDocument::getChildDocumentsCount

(PECL solr >= 2.3.0)

SolrDocument::getChildDocumentsCount — Returns the number of child documents

说明

public integer SolrDocument::getChildDocumentsCount ( void )

Returns the number of child documents

参数

此函数没有参数。

返回值

参见

  • SolrDocument::hasChildDocuments() - Checks whether the document has any child documents
  • SolrDocument::getChildDocuments() - Returns an array of child documents (SolrDocument)
SolrDocument::getChildDocuments
SolrDocument::getField
SolrDocument


Retrieves a field by name

SolrDocument::getChildDocumentsCount
SolrDocument::getFieldCount
SolrDocument
PHP Manual

SolrDocument::getField

(PECL solr >= 0.9.2)

SolrDocument::getField — Retrieves a field by name

说明

public SolrDocumentField SolrDocument::getField ( string $fieldName )

Retrieves a field by name.

参数

fieldName

Name of the field.

返回值

Returns a SolrDocumentField on success and FALSE on failure.

SolrDocument::getChildDocumentsCount
SolrDocument::getFieldCount
SolrDocument


Returns the number of fields in this document

SolrDocument::getField
SolrDocument::getFieldNames
SolrDocument
PHP Manual

SolrDocument::getFieldCount

(PECL solr >= 0.9.2)

SolrDocument::getFieldCount — Returns the number of fields in this document

说明

public int SolrDocument::getFieldCount ( void )

Returns the number of fields in this document. Multi-value fields are only counted once.

参数

此函数没有参数。

返回值

Returns an integer on success and FALSE on failure.

SolrDocument::getField
SolrDocument::getFieldNames
SolrDocument


Returns an array of fields names in the document

SolrDocument::getFieldCount
SolrDocument::getInputDocument
SolrDocument
PHP Manual

SolrDocument::getFieldNames

(PECL solr >= 0.9.2)

SolrDocument::getFieldNames — Returns an array of fields names in the document

说明

public array SolrDocument::getFieldNames ( void )

Returns an array of fields names in the document.

参数

此函数没有参数。

返回值

Returns an array containing the names of the fields in this document.

SolrDocument::getFieldCount
SolrDocument::getInputDocument
SolrDocument


Returns a SolrInputDocument equivalent of the object

SolrDocument::getFieldNames
SolrDocument::hasChildDocuments
SolrDocument
PHP Manual

SolrDocument::getInputDocument

(PECL solr >= 0.9.2)

SolrDocument::getInputDocument — Returns a SolrInputDocument equivalent of the object

说明

public SolrInputDocument SolrDocument::getInputDocument ( void )

Returns a SolrInputDocument equivalent of the object. This is useful if one wishes to resubmit/update a document retrieved from a query.

参数

此函数没有参数。

返回值

Returns a SolrInputDocument on success and NULL on failure.

SolrDocument::getFieldNames
SolrDocument::hasChildDocuments
SolrDocument


Checks whether the document has any child documents

SolrDocument::getInputDocument
SolrDocument::__isset
SolrDocument
PHP Manual

SolrDocument::hasChildDocuments

(PECL solr >= 2.3.0)

SolrDocument::hasChildDocuments — Checks whether the document has any child documents

说明

public bool SolrDocument::hasChildDocuments ( void )

Checks whether the document has any child documents

参数

此函数没有参数。

返回值

参见

  • SolrDocument::getChildDocuments() - Returns an array of child documents (SolrDocument)
  • SolrDocument::getChildDocumentsCount() - Returns the number of child documents
SolrDocument::getInputDocument
SolrDocument::__isset
SolrDocument


Checks if a field exists

SolrDocument::hasChildDocuments
SolrDocument::key
SolrDocument
PHP Manual

SolrDocument::__isset

(PECL solr >= 0.9.2)

SolrDocument::__isset — Checks if a field exists

说明

public bool SolrDocument::__isset ( string $fieldName )

Checks if a field exists

参数

fieldName

Name of the field.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SolrDocument::hasChildDocuments
SolrDocument::key
SolrDocument


Retrieves the current key

SolrDocument::__isset
SolrDocument::merge
SolrDocument
PHP Manual

SolrDocument::key

(PECL solr >= 0.9.2)

SolrDocument::key — Retrieves the current key

说明

public string SolrDocument::key ( void )

Retrieves the current key.

参数

此函数没有参数。

返回值

Returns the current key.

SolrDocument::__isset
SolrDocument::merge
SolrDocument


Merges source to the current SolrDocument

SolrDocument::key
SolrDocument::next
SolrDocument
PHP Manual

SolrDocument::merge

(PECL solr >= 0.9.2)

SolrDocument::merge — Merges source to the current SolrDocument

说明

public bool SolrDocument::merge ( SolrDocument $sourceDoc [, bool $overwrite = true ] )

Merges source to the current SolrDocument.

参数

sourceDoc

The source document.

overwrite

If this is TRUE then fields with the same name in the destination document will be overwritten.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SolrDocument::key
SolrDocument::next
SolrDocument


Moves the internal pointer to the next field

SolrDocument::merge
SolrDocument::offsetExists
SolrDocument
PHP Manual

SolrDocument::next

(PECL solr >= 0.9.2)

SolrDocument::next — Moves the internal pointer to the next field

说明

public void SolrDocument::next ( void )

Moves the internal pointer to the next field.

参数

此函数没有参数。

返回值

This method has no return value.

SolrDocument::merge
SolrDocument::offsetExists
SolrDocument


Checks if a particular field exists

SolrDocument::next
SolrDocument::offsetGet
SolrDocument
PHP Manual

SolrDocument::offsetExists

(PECL solr >= 0.9.2)

SolrDocument::offsetExists — Checks if a particular field exists

说明

public bool SolrDocument::offsetExists ( string $fieldName )

Checks if a particular field exists. This is used when the object is treated as an array.

参数

fieldName

The name of the field.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SolrDocument::next
SolrDocument::offsetGet
SolrDocument


Retrieves a field

SolrDocument::offsetExists
SolrDocument::offsetSet
SolrDocument
PHP Manual

SolrDocument::offsetGet

(PECL solr >= 0.9.2)

SolrDocument::offsetGet — Retrieves a field

说明

public SolrDocumentField SolrDocument::offsetGet ( string $fieldName )

This is used to retrieve the field when the object is treated as an array.

参数

fieldName

The name of the field.

返回值

Returns a SolrDocumentField object.

SolrDocument::offsetExists
SolrDocument::offsetSet
SolrDocument


Adds a field to the document

SolrDocument::offsetGet
SolrDocument::offsetUnset
SolrDocument
PHP Manual

SolrDocument::offsetSet

(PECL solr >= 0.9.2)

SolrDocument::offsetSet — Adds a field to the document

说明

public void SolrDocument::offsetSet ( string $fieldName , string $fieldValue )

Used when the object is treated as an array to add a field to the document.

参数

fieldName

The name of the field.

fieldValue

The value for this field.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SolrDocument::offsetGet
SolrDocument::offsetUnset
SolrDocument


Removes a field

SolrDocument::offsetSet
SolrDocument::reset
SolrDocument
PHP Manual

SolrDocument::offsetUnset

(PECL solr >= 0.9.2)

SolrDocument::offsetUnset — Removes a field

说明

public void SolrDocument::offsetUnset ( string $fieldName )

Removes a field from the document.

参数

fieldName

The name of the field.

返回值

No return value.

SolrDocument::offsetSet
SolrDocument::reset
SolrDocument


This is an alias to SolrDocument::clear()

SolrDocument::offsetUnset
SolrDocument::rewind
SolrDocument
PHP Manual

SolrDocument::reset

(PECL solr >= 0.9.2)

SolrDocument::reset — This is an alias to SolrDocument::clear()

说明

public bool SolrDocument::reset ( void )

This is an alias to SolrDocument::clear()

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SolrDocument::offsetUnset
SolrDocument::rewind
SolrDocument


Resets the internal pointer to the beginning

SolrDocument::reset
SolrDocument::serialize
SolrDocument
PHP Manual

SolrDocument::rewind

(PECL solr >= 0.9.2)

SolrDocument::rewind — Resets the internal pointer to the beginning

说明

public void SolrDocument::rewind ( void )

Resets the internal pointer to the beginning.

参数

此函数没有参数。

返回值

This method has no return value.

SolrDocument::reset
SolrDocument::serialize
SolrDocument


Used for custom serialization

SolrDocument::rewind
SolrDocument::__set
SolrDocument
PHP Manual

SolrDocument::serialize

(PECL solr >= 0.9.2)

SolrDocument::serialize — Used for custom serialization

说明

public string SolrDocument::serialize ( void )

Used for custom serialization.

参数

此函数没有参数。

返回值

Returns a string representing the serialized Solr document.

SolrDocument::rewind
SolrDocument::__set
SolrDocument


Adds another field to the document

SolrDocument::serialize
SolrDocument::sort
SolrDocument
PHP Manual

SolrDocument::__set

(PECL solr >= 0.9.2)

SolrDocument::__set — Adds another field to the document

说明

public bool SolrDocument::__set ( string $fieldName , string $fieldValue )

Adds another field to the document. Used to set the fields as new properties.

参数

fieldName

Name of the field.

fieldValue

Field value.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SolrDocument::serialize
SolrDocument::sort
SolrDocument


Sorts the fields in the document

SolrDocument::__set
SolrDocument::toArray
SolrDocument
PHP Manual

SolrDocument::sort

(PECL solr >= 0.9.2)

SolrDocument::sort — Sorts the fields in the document

说明

public bool SolrDocument::sort ( int $sortOrderBy [, int $sortDirection = SolrDocument::SORT_ASC ] )

The fields are rearranged according to the specified criteria and sort direction

   Fields can be sorted by boost values, field names and number of values.

   The sortOrderBy parameter must be one of :

   * SolrDocument::SORT_FIELD_NAME
   * SolrDocument::SORT_FIELD_BOOST_VALUE
   * SolrDocument::SORT_FIELD_VALUE_COUNT

   The sortDirection can be one of :

   * SolrDocument::SORT_DEFAULT
   * SolrDocument::SORT_ASC
   * SolrDocument::SORT_DESC

   The default way is to sort in ascending order.

参数

sortOrderBy

The sort criteria.

sortDirection

The sort direction.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SolrDocument::__set
SolrDocument::toArray
SolrDocument


Returns an array representation of the document

SolrDocument::sort
SolrDocument::unserialize
SolrDocument
PHP Manual

SolrDocument::toArray

(PECL solr >= 0.9.2)

SolrDocument::toArray — Returns an array representation of the document

说明

public array SolrDocument::toArray ( void )

Returns an array representation of the document.

参数

此函数没有参数。

返回值

Returns an array representation of the document.

范例

Example #1 SolrDocument::toArray() example

<?php

$doc = new SolrDocument();

$doc->addField('id', 1123);

$doc->features = "PHP Client Side";
$doc->features = "Fast development cycles";

$doc['cat'] = 'Software';
$doc['cat'] = 'Custom Search';
$doc->cat   = 'Information Technology';

print_r($doc->toArray());

?>

以上例程的输出类似于：

Array
(
    [document_boost] => 0
    [field_count] => 3
    [fields] => Array
        (
            [0] => SolrDocumentField Object
                (
                    [name] => id
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => 1123
                        )

                )

            [1] => SolrDocumentField Object
                (
                    [name] => features
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => PHP Client Side
                            [1] => Fast development cycles
                        )

                )

            [2] => SolrDocumentField Object
                (
                    [name] => cat
                    [boost] => 0
                    [values] => Array
                        (
                            [0] => Software
                            [1] => Custom Search
                            [2] => Information Technology
                        )

                )

        )

)

SolrDocument::sort
SolrDocument::unserialize
SolrDocument


Custom serialization of SolrDocument objects

SolrDocument::toArray
SolrDocument::__unset
SolrDocument
PHP Manual

SolrDocument::unserialize

(PECL solr >= 0.9.2)

SolrDocument::unserialize — Custom serialization of SolrDocument objects

说明

public void SolrDocument::unserialize ( string $serialized )

Custom serialization of SolrDocument objects

参数

serialized

An XML representation of the document.

返回值

None.

SolrDocument::toArray
SolrDocument::__unset
SolrDocument


Removes a field from the document

SolrDocument::unserialize
SolrDocument::valid
SolrDocument
PHP Manual

SolrDocument::__unset

(PECL solr >= 0.9.2)

SolrDocument::__unset — Removes a field from the document

说明

public bool SolrDocument::__unset ( string $fieldName )

Removes a field from the document when the field is access as an object property.

参数

fieldName

The name of the field.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SolrDocument::unserialize
SolrDocument::valid
SolrDocument


Checks if the current position internally is still valid

SolrDocument::__unset
SolrDocumentField
SolrDocument
PHP Manual

SolrDocument::valid

(PECL solr >= 0.9.2)

SolrDocument::valid — Checks if the current position internally is still valid

说明

public bool SolrDocument::valid ( void )

Checks if the current position internally is still valid. It is used during foreach operations.

参数

此函数没有参数。

返回值

Returns TRUE on success and FALSE if the current position is no longer valid.

SolrDocument::__unset
SolrDocumentField
SolrDocument


The SolrDocumentField class

(PECL solr >= 0.9.2)

简介

This represents a field in a Solr document. All its properties are read-only.

类摘要

final SolrDocumentField {
/* 属性 */
readonly public string $name ;
readonly public float $boost ;
readonly public array $values ;
/* 方法 */
public __construct ( void )
public void __destruct ( void )
}

属性

name

The name of the field.

boost

The boost value for the field

values

An array of values for this field

Table of Contents

  • SolrDocumentField::__construct — Constructor
  • SolrDocumentField::__destruct — Destructor
SolrDocument::valid
SolrDocumentField::__construct
Solr


Constructor

SolrDocumentField
SolrDocumentField::__destruct
SolrDocumentField
PHP Manual

SolrDocumentField::__construct

(PECL solr >= 0.9.2)

SolrDocumentField::__construct — Constructor

说明

public SolrDocumentField::__construct ( void )

Constructor.

参数

此函数没有参数。

返回值

None.

SolrDocumentField
SolrDocumentField::__destruct
SolrDocumentField


Destructor

SolrDocumentField::__construct
SolrObject
SolrDocumentField
PHP Manual

SolrDocumentField::__destruct

(PECL solr >= 0.9.2)

SolrDocumentField::__destruct — Destructor

说明

public void SolrDocumentField::__destruct ( void )

Destructor.

参数

此函数没有参数。

返回值

None.

SolrDocumentField::__construct
SolrObject
SolrDocumentField


The SolrObject class

(PECL solr >= 0.9.2)

简介

This is an object whose properties can also by accessed using the array syntax. All its properties are read-only.

类摘要

final SolrObject implements ArrayAccess {
/* 方法 */
public __construct ( void )
public void __destruct ( void )
public array getPropertyNames ( void )
public bool offsetExists ( string $property_name )
public mixed offsetGet ( string $property_name )
public void offsetSet ( string $property_name , string $property_value )
public void offsetUnset ( string $property_name )
}

Table of Contents

  • SolrObject::__construct — Creates Solr object
  • SolrObject::__destruct — Destructor
  • SolrObject::getPropertyNames — Returns an array of all the names of the properties
  • SolrObject::offsetExists — Checks if the property exists
  • SolrObject::offsetGet — Used to retrieve a property
  • SolrObject::offsetSet — Sets the value for a property
  • SolrObject::offsetUnset — Unsets the value for the property
SolrDocumentField::__destruct
SolrObject::__construct
Solr


Creates Solr object

SolrObject
SolrObject::__destruct
SolrObject
PHP Manual

SolrObject::__construct

(PECL solr >= 0.9.2)

SolrObject::__construct — Creates Solr object

说明

public SolrObject::__construct ( void )

Creates Solr object.

参数

此函数没有参数。

返回值

None

范例

Example #1 SolrObject::__construct() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

SolrObject
SolrObject::__destruct
SolrObject


Destructor

SolrObject::__construct
SolrObject::getPropertyNames
SolrObject
PHP Manual

SolrObject::__destruct

(PECL solr >= 0.9.2)

SolrObject::__destruct — Destructor

说明

public void SolrObject::__destruct ( void )

The destructor

参数

此函数没有参数。

返回值

None.

SolrObject::__construct
SolrObject::getPropertyNames
SolrObject


Returns an array of all the names of the properties

SolrObject::__destruct
SolrObject::offsetExists
SolrObject
PHP Manual

SolrObject::getPropertyNames

(PECL solr >= 0.9.2)

SolrObject::getPropertyNames — Returns an array of all the names of the properties

说明

public array SolrObject::getPropertyNames ( void )

Returns an array of all the names of the properties

参数

此函数没有参数。

返回值

Returns an array.

SolrObject::__destruct
SolrObject::offsetExists
SolrObject


Checks if the property exists

SolrObject::getPropertyNames
SolrObject::offsetGet
SolrObject
PHP Manual

SolrObject::offsetExists

(PECL solr >= 0.9.2)

SolrObject::offsetExists — Checks if the property exists

说明

public bool SolrObject::offsetExists ( string $property_name )

Checks if the property exists. This is used when the object is treated as an array.

参数

property_name

The name of the property.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SolrObject::getPropertyNames
SolrObject::offsetGet
SolrObject


Used to retrieve a property

SolrObject::offsetExists
SolrObject::offsetSet
SolrObject
PHP Manual

SolrObject::offsetGet

(PECL solr >= 0.9.2)

SolrObject::offsetGet — Used to retrieve a property

说明

public mixed SolrObject::offsetGet ( string $property_name )

Used to get the value of a property. This is used when the object is treated as an array.

参数

property_name

Name of the property.

返回值

Returns the property value.

SolrObject::offsetExists
SolrObject::offsetSet
SolrObject


Sets the value for a property

SolrObject::offsetGet
SolrObject::offsetUnset
SolrObject
PHP Manual

SolrObject::offsetSet

(PECL solr >= 0.9.2)

SolrObject::offsetSet — Sets the value for a property

说明

public void SolrObject::offsetSet ( string $property_name , string $property_value )

Sets the value for a property. This is used when the object is treated as an array. This object is read-only. This should never be attempted.

参数

property_name

The name of the property.

property_value

The new value.

返回值

None.

SolrObject::offsetGet
SolrObject::offsetUnset
SolrObject


Unsets the value for the property

SolrObject::offsetSet
SolrClient
SolrObject
PHP Manual

SolrObject::offsetUnset

(PECL solr >= 0.9.2)

SolrObject::offsetUnset — Unsets the value for the property

说明

public void SolrObject::offsetUnset ( string $property_name )

Unsets the value for the property. This is used when the object is treated as an array. This object is read-only. This should never be attempted.

参数

property_name

The name of the property.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 SolrObject::offsetUnset() example

<?php
/* ... */
?>

以上例程的输出类似于：

...

参见

  • Classname::Method()

SolrObject::offsetSet
SolrClient
SolrObject


The SolrClient class

(PECL solr >= 0.9.2)

简介

Used to send requests to a Solr server. Currently, cloning and serialization of SolrClient instances is not supported.

类摘要

final SolrClient {
/* 常量 */
const integer SEARCH_SERVLET_TYPE = 1 ;
const integer UPDATE_SERVLET_TYPE = 2 ;
const integer THREADS_SERVLET_TYPE = 4 ;
const integer PING_SERVLET_TYPE = 8 ;
const integer TERMS_SERVLET_TYPE = 16 ;
const integer SYSTEM_SERVLET_TYPE = 32 ;
const string DEFAULT_SEARCH_SERVLET = select ;
const string DEFAULT_UPDATE_SERVLET = update ;
const string DEFAULT_THREADS_SERVLET = admin/threads ;
const string DEFAULT_PING_SERVLET = admin/ping ;
const string DEFAULT_TERMS_SERVLET = terms ;
const string DEFAULT_SYSTEM_SERVLET = admin/system ;
/* 方法 */
public SolrUpdateResponse addDocument ( SolrInputDocument $doc [, bool $overwrite = true [, int $commitWithin = 0 ]] )
public void addDocuments ( array $docs [, bool $overwrite = true [, int $commitWithin = 0 ]] )
public SolrUpdateResponse commit ([ bool $softCommit = false [, bool $waitSearcher = true [, bool $expungeDeletes = false ]]] )
public __construct ( array $clientOptions )
public SolrUpdateResponse deleteById ( string $id )
public SolrUpdateResponse deleteByIds ( array $ids )
public SolrUpdateResponse deleteByQueries ( array $queries )
public SolrUpdateResponse deleteByQuery ( string $query )
public void __destruct ( void )
public SolrQueryResponse getById ( string $id )
public SolrQueryResponse getByIds ( array $ids )
public string getDebug ( void )
public array getOptions ( void )
public SolrUpdateResponse optimize ([ int $maxSegments = 1 [, bool $softCommit = true [, bool $waitSearcher = true ]]] )
public SolrPingResponse ping ( void )
public SolrQueryResponse query ( SolrParams $query )
public SolrUpdateResponse request ( string $raw_request )
public SolrUpdateResponse rollback ( void )
public void setResponseWriter ( string $responseWriter )
public bool setServlet ( int $type , string $value )
public void system ( void )
public void threads ( void )
}

预定义常量

SolrClient::SEARCH_SERVLET_TYPE

Used when updating the search servlet.

SolrClient::UPDATE_SERVLET_TYPE

Used when updating the update servlet.

SolrClient::THREADS_SERVLET_TYPE

Used when updating the threads servlet.

SolrClient::PING_SERVLET_TYPE

Used when updating the ping servlet.

SolrClient::TERMS_SERVLET_TYPE

Used when updating the terms servlet.

SolrClient::SYSTEM_SERVLET_TYPE

Used when retrieving system information from the system servlet.

SolrClient::DEFAULT_SEARCH_SERVLET

This is the intial value for the search servlet.

SolrClient::DEFAULT_UPDATE_SERVLET

This is the intial value for the update servlet.

SolrClient::DEFAULT_THREADS_SERVLET

This is the intial value for the threads servlet.

SolrClient::DEFAULT_PING_SERVLET

This is the intial value for the ping servlet.

SolrClient::DEFAULT_TERMS_SERVLET

This is the intial value for the terms servlet used for the TermsComponent

SolrClient::DEFAULT_SYSTEM_SERVLET

This is the intial value for the system servlet used to obtain Solr Server information

Table of Contents

  • SolrClient::addDocument — Adds a document to the index
  • SolrClient::addDocuments — Adds a collection of SolrInputDocument instances to the index
  • SolrClient::commit — Finalizes all add/deletes made to the index
  • SolrClient::__construct — Constructor for the SolrClient object
  • SolrClient::deleteById — Delete by Id
  • SolrClient::deleteByIds — Deletes by Ids
  • SolrClient::deleteByQueries — Removes all documents matching any of the queries
  • SolrClient::deleteByQuery — Deletes all documents matching the given query
  • SolrClient::__destruct — Destructor for SolrClient
  • SolrClient::getById — Get Document By Id. Utilizes Solr Realtime Get (RTG).
  • SolrClient::getByIds — Get Documents by their Ids. Utilizes Solr Realtime Get (RTG).
  • SolrClient::getDebug — Returns the debug data for the last connection attempt
  • SolrClient::getOptions — Returns the client options set internally
  • SolrClient::optimize — Defragments the index
  • SolrClient::ping — Checks if Solr server is still up
  • SolrClient::query — Sends a query to the server
  • SolrClient::request — Sends a raw update request
  • SolrClient::rollback — Rollbacks all add/deletes made to the index since the last commit
  • SolrClient::setResponseWriter — Sets the response writer used to prepare the response from Solr
  • SolrClient::setServlet — Changes the specified servlet type to a new value
  • SolrClient::system — Retrieve Solr Server information
  • SolrClient::threads — Checks the threads status
SolrObject::offsetUnset
SolrClient::addDocument
Solr


Adds a document to the index

SolrClient
SolrClient::addDocuments
SolrClient
PHP Manual

SolrClient::addDocument

(PECL solr >= 0.9.2)

SolrClient::addDocument — Adds a document to the index

说明

public SolrUpdateResponse SolrClient::addDocument ( SolrInputDocument $doc [, bool $overwrite = true [, int $commitWithin = 0 ]] )

This method adds a document to the index.

参数

doc

The SolrInputDocument instance.

overwrite

Whether to overwrite existing document or not. If FALSE there will be duplicates (several documents with the same ID).

Warning

PECL Solr < 2.0 $allowDups was used instead of $overwrite, which does the same functionality with exact opposite bool flag.

$allowDups = false is the same as $overwrite = true

commitWithin

Number of milliseconds within which to auto commit this document. Available since Solr 1.4 . Default (0) means disabled.

When this value specified, it leaves the control of when to do the commit to Solr itself, optimizing number of commits to a minimum while still fulfilling the update latency requirements, and Solr will automatically do a commit when the oldest add in the buffer is due.

返回值

Returns a SolrUpdateResponse object or throws an Exception on failure.

错误／异常

Throws SolrClientException if the client had failed, or there was a connection issue.

Throws SolrServerException if the Solr Server had failed to process the request.

范例

Example #1 SolrClient::addDocument() example

<?php

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);

$doc = new SolrInputDocument();

$doc->addField('id', 334455);
$doc->addField('cat', 'Software');
$doc->addField('cat', 'Lucene');

$updateResponse = $client->addDocument($doc);

// you will have to commit changes to be written if you didn't use $commitWithin
$client->commit();

print_r($updateResponse->getResponse());

?>

以上例程的输出类似于：

SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => 0
            [QTime] => 1
        )

)

Example #2 SolrClient::addDocument() example 2

<?php

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);

$doc = new SolrInputDocument();

$doc->addField('id', 334455);
$doc->addField('cat', 'Software');
$doc->addField('cat', 'Lucene');

// No need to call commit() because $commitWithin is passed, so Solr Server will auto commit within 10 seconds
$updateResponse = $client->addDocument($doc, false, 10000);

print_r($updateResponse->getResponse());

?>

以上例程的输出类似于：

SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => 0
            [QTime] => 1
        )

)

参见

  • SolrClient::addDocuments() - Adds a collection of SolrInputDocument instances to the index
  • SolrClient::commit() - Finalizes all add/deletes made to the index

SolrClient
SolrClient::addDocuments
SolrClient


Adds a collection of SolrInputDocument instances to the index

SolrClient::addDocument
SolrClient::commit
SolrClient
PHP Manual

SolrClient::addDocuments

(PECL solr >= 0.9.2)

SolrClient::addDocuments — Adds a collection of SolrInputDocument instances to the index

说明

public void SolrClient::addDocuments ( array $docs [, bool $overwrite = true [, int $commitWithin = 0 ]] )

Adds a collection of documents to the index.

参数

docs

An array containing the collection of SolrInputDocument instances. This array must be an actual variable.

overwrite

Whether to overwrite existing documents or not. If FALSE there will be duplicates (several documents with the same ID).

Warning

PECL Solr < 2.0 $allowDups was used instead of $overwrite, which does the same functionality with exact opposite bool flag.

$allowDups = false is the same as $overwrite = true

commitWithin

Number of milliseconds within which to auto commit this document. Available since Solr 1.4 . Default (0) means disabled.

When this value specified, it leaves the control of when to do the commit to Solr itself, optimizing number of commits to a minimum while still fulfilling the update latency requirements, and Solr will automatically do a commit when the oldest add in the buffer is due.

返回值

Returns a SolrUpdateResponse object or throws an exception on failure.

错误／异常

Throws SolrClientException if the client had failed, or there was a connection issue.

Throws SolrServerException if the Solr Server had failed to process the request.

范例

Example #1 SolrClient::addDocuments() example

<?php

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);

$doc = new SolrInputDocument();

$doc->addField('id', 334455);
$doc->addField('cat', 'Software');
$doc->addField('cat', 'Lucene');

$doc2 = clone $doc;

$doc2->deleteField('id');
$doc2->addField('id', 334456);

$docs = array($doc, $doc2);

$updateResponse = $client->addDocuments($docs);

// no changes will be written to disk unless $commitWithin is passed or SolrClient::commit is called

print_r($updateResponse->getResponse());

?>

以上例程的输出类似于：

SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => 0
            [QTime] => 2
        )

)

参见

  • SolrClient::addDocument() - Adds a document to the index
  • SolrClient::commit() - Finalizes all add/deletes made to the index

SolrClient::addDocument
SolrClient::commit
SolrClient


Finalizes all add/deletes made to the index

SolrClient::addDocuments
SolrClient::__construct
SolrClient
PHP Manual

SolrClient::commit

(PECL solr >= 0.9.2)

SolrClient::commit — Finalizes all add/deletes made to the index

说明

public SolrUpdateResponse SolrClient::commit ([ bool $softCommit = false [, bool $waitSearcher = true [, bool $expungeDeletes = false ]]] )

This method finalizes all add/deletes made to the index.

参数

softCommit

This will refresh the 'view' of the index in a more performant manner, but without "on-disk" guarantees. (Solr4.0+)

A soft commit is much faster since it only makes index changes visible and does not fsync index files or write a new index descriptor. If the JVM crashes or there is a loss of power, changes that occurred after the last hard commit will be lost. Search collections that have near-real-time requirements (that want index changes to be quickly visible to searches) will want to soft commit often but hard commit less frequently.

waitSearcher

block until a new searcher is opened and registered as the main query searcher, making the changes visible.

expungeDeletes

Merge segments with deletes away. (Solr1.4+)

返回值

Returns a SolrUpdateResponse object on success or throws an exception on failure.

错误／异常

Throws SolrClientException if the client had failed, or there was a connection issue.

Throws SolrServerException if the Solr Server had failed to process the request.

更新日志

版本 | 说明
1.1.0, 2.0.0 | $maxSegments removed
2.0.0b | API Changed: SolrClient::commit ([ int $maxSegments = 0 [, bool $softCommit = false [, bool $waitSearcher = true[, bool $expungeDeletes = false ]]] )
0.9.2 | Signature: SolrClient::commit ([ int $maxSegments = 1 [, bool $waitFlush = true [, bool $waitSearcher = true ]]] ). $waitFlush: Block until index changes are flushed to disk.

注释

Warning

PECL Solr >= 2.0 only supports Solr Server >= 4.0

参见

  • SolrClient::optimize() - Defragments the index
  • SolrClient::rollback() - Rollbacks all add/deletes made to the index since the last commit

SolrClient::addDocuments
SolrClient::__construct
SolrClient


Constructor for the SolrClient object

SolrClient::commit
SolrClient::deleteById
SolrClient
PHP Manual

SolrClient::__construct

(PECL solr >= 0.9.2)

SolrClient::__construct — Constructor for the SolrClient object

说明

public SolrClient::__construct ( array $clientOptions )

Constructor for the SolrClient object

参数

clientOptions

This is an array containing one of the following keys :

- secure          (Boolean value indicating whether or not to connect in secure mode)
 - hostname        (The hostname for the Solr server)
 - port            (The port number)
 - path            (The path to solr)
 - wt              (The name of the response writer e.g. xml, json)
 - login           (The username used for HTTP Authentication, if any)
 - password        (The HTTP Authentication password)
 - proxy_host      (The hostname for the proxy server, if any)
 - proxy_port      (The proxy port)
 - proxy_login     (The proxy username)
 - proxy_password  (The proxy password)
 - timeout         (This is maximum time in seconds allowed for the http data transfer operation. Default is 30 seconds)
 - ssl_cert        (File name to a PEM-formatted file containing the private key + private certificate (concatenated in that order) )
 - ssl_key         (File name to a PEM-formatted private key file only)
 - ssl_keypassword (Password for private key)
 - ssl_cainfo      (Name of file holding one or more CA certificates to verify peer with)
 - ssl_capath      (Name of directory holding multiple CA certificates to verify peer with )

 Please note the if the ssl_cert file only contains the private certificate, you have to specify a separate ssl_key file

 The ssl_keypassword option is required if the ssl_cert or ssl_key options are set.

错误／异常

Throws SolrIllegalArgumentException on failure.

范例

Example #1 SolrClient::__construct() example

<?php

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'     => SOLR_PATH_TO_SOLR,
    'wt'       => 'xml',
);

$client = new SolrClient($options);

$doc = new SolrInputDocument();

$doc->addField('id', 334455);
$doc->addField('cat', 'Software');
$doc->addField('cat', 'Lucene');

$updateResponse = $client->addDocument($doc);

?>

以上例程的输出类似于：

参见

  • SolrClient::getOptions() - Returns the client options set internally

SolrClient::commit
SolrClient::deleteById
SolrClient


Delete by Id

SolrClient::__construct
SolrClient::deleteByIds
SolrClient
PHP Manual

SolrClient::deleteById

(PECL solr >= 0.9.2)

SolrClient::deleteById — Delete by Id

说明

public SolrUpdateResponse SolrClient::deleteById ( string $id )

Deletes the document with the specified ID. Where ID is the value of the uniqueKey field declared in the schema

参数

id

The value of the uniqueKey field declared in the schema

返回值

Returns a SolrUpdateResponse on success and throws an exception on failure.

错误／异常

Throws SolrClientException if the client had failed, or there was a connection issue.

Throws SolrServerException if the Solr Server had failed to process the request.

参见

  • SolrClient::deleteByIds() - Deletes by Ids
  • SolrClient::deleteByQuery() - Deletes all documents matching the given query
  • SolrClient::deleteByQueries() - Removes all documents matching any of the queries

SolrClient::__construct
SolrClient::deleteByIds
SolrClient


Deletes by Ids

SolrClient::deleteById
SolrClient::deleteByQueries
SolrClient
PHP Manual

SolrClient::deleteByIds

(PECL solr >= 0.9.2)

SolrClient::deleteByIds — Deletes by Ids

说明

public SolrUpdateResponse SolrClient::deleteByIds ( array $ids )

Deletes a collection of documents with the specified set of ids.

参数

ids

An array of IDs representing the uniqueKey field declared in the schema for each document to be deleted. This must be an actual php variable.

返回值

Returns a SolrUpdateResponse on success and throws an exception on failure.

错误／异常

Throws SolrClientException if the client had failed, or there was a connection issue.

Throws SolrServerException if the Solr Server had failed to process the request.

参见

  • SolrClient::deleteById() - Delete by Id
  • SolrClient::deleteByQuery() - Deletes all documents matching the given query
  • SolrClient::deleteByQueries() - Removes all documents matching any of the queries

SolrClient::deleteById
SolrClient::deleteByQueries
SolrClient


Removes all documents matching any of the queries

SolrClient::deleteByIds
SolrClient::deleteByQuery
SolrClient
PHP Manual

SolrClient::deleteByQueries

(PECL solr >= 0.9.2)

SolrClient::deleteByQueries — Removes all documents matching any of the queries

说明

public SolrUpdateResponse SolrClient::deleteByQueries ( array $queries )

Removes all documents matching any of the queries

参数

queries

The array of queries. This must be an actual php variable.

返回值

Returns a SolrUpdateResponse on success and throws a SolrClientException on failure.

错误／异常

Throws SolrClientException if the client had failed, or there was a connection issue.

Throws SolrServerException if the Solr Server had failed to process the request.

参见

  • SolrClient::deleteById() - Delete by Id
  • SolrClient::deleteByIds() - Deletes by Ids
  • SolrClient::deleteByQuery() - Deletes all documents matching the given query

SolrClient::deleteByIds
SolrClient::deleteByQuery
SolrClient


Deletes all documents matching the given query

SolrClient::deleteByQueries
SolrClient::__destruct
SolrClient
PHP Manual

SolrClient::deleteByQuery

(PECL solr >= 0.9.2)

SolrClient::deleteByQuery — Deletes all documents matching the given query

说明

public SolrUpdateResponse SolrClient::deleteByQuery ( string $query )

Deletes all documents matching the given query.

参数

query

The query

返回值

Returns a SolrUpdateResponse on success and throws an exception on failure.

错误／异常

Throws SolrClientException if the client had failed, or there was a connection issue.

Throws SolrServerException if the Solr Server had failed to process the request.

范例

Example #1 SolrQuery::deleteByQuery() example

<?php

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);

//This will erase the entire index
$client->deleteByQuery("*:*");
$client->commit();

?>

参见

  • SolrClient::deleteById() - Delete by Id
  • SolrClient::deleteByIds() - Deletes by Ids
  • SolrClient::deleteByQueries() - Removes all documents matching any of the queries

SolrClient::deleteByQueries
SolrClient::__destruct
SolrClient


Destructor for SolrClient

SolrClient::deleteByQuery
SolrClient::getById
SolrClient
PHP Manual

SolrClient::__destruct

(PECL solr >= 0.9.2)

SolrClient::__destruct — Destructor for SolrClient

说明

public void SolrClient::__destruct ( void )

Destructor

参数

此函数没有参数。

返回值

Destructor for SolrClient

参见

  • SolrClient::__construct() - Constructor for the SolrClient object

SolrClient::deleteByQuery
SolrClient::getById
SolrClient


Get Document By Id. Utilizes Solr Realtime Get (RTG).

SolrClient::__destruct
SolrClient::getByIds
SolrClient
PHP Manual

SolrClient::getById

(PECL solr >= 2.2.0)

SolrClient::getById — Get Document By Id. Utilizes Solr Realtime Get (RTG).

说明

public SolrQueryResponse SolrClient::getById ( string $id )

Get Document By Id. Utilizes Solr Realtime Get (RTG).

参数

id

Document ID

返回值

SolrQueryResponse

范例

Example #1 SolrClient::getById() example

<?php

include "bootstrap.php";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'     => SOLR_SERVER_PATH
);

$client = new SolrClient($options);
$response = $client->getById('GB18030TEST');
print_r($response->getResponse());

?>

以上例程的输出类似于：

SolrObject Object
(
    [doc] => SolrObject Object
        (
            [id] => GB18030TEST
            [name] => Array
                (
                    [0] => Test with some GB18030 encoded characters
                )

            [features] => Array
                (
                    [0] => No accents here
                    [1] => 这是一个功能
                    [2] => This is a feature (translated)
                    [3] => 这份文件是很有光泽
                    [4] => This document is very shiny (translated)
                )

            [price] => Array
                (
                    [0] => 0
                )

            [inStock] => Array
                (
                    [0] => 1
                )

            [_version_] => 1510294336239042560
        )

)

参见

  • SolrClient::getByIds() - Get Documents by their Ids. Utilizes Solr Realtime Get (RTG).
SolrClient::__destruct
SolrClient::getByIds
SolrClient


Get Documents by their Ids. Utilizes Solr Realtime Get (RTG).

SolrClient::getById
SolrClient::getDebug
SolrClient
PHP Manual

SolrClient::getByIds

(PECL solr >= 2.2.0)

SolrClient::getByIds — Get Documents by their Ids. Utilizes Solr Realtime Get (RTG).

说明

public SolrQueryResponse SolrClient::getByIds ( array $ids )

Get Documents by their Ids. Utilizes Solr Realtime Get (RTG).

参数

ids

Document ids

返回值

SolrQueryResponse

范例

Example #1 SolrClient::getByIds() example

<?php

include "bootstrap.php";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'     => SOLR_SERVER_PATH
);

$client = new SolrClient($options);
$response = $client->getByIds(['GB18030TEST', '6H500F0']);

print_r($response->getResponse());

?>

以上例程的输出类似于：

SolrObject Object
(
    [response] => SolrObject Object
        (
            [numFound] => 2
            [start] => 0
            [docs] => Array
                (
                    [0] => SolrObject Object
                        (
                            [id] => GB18030TEST
                            [name] => Array
                                (
                                    [0] => Test with some GB18030 encoded characters
                                )

                            [features] => Array
                                (
                                    [0] => No accents here
                                    [1] => 这是一个功能
                                    [2] => This is a feature (translated)
                                    [3] => 这份文件是很有光泽
                                    [4] => This document is very shiny (translated)
                                )

                            [price] => Array
                                (
                                    [0] => 0
                                )

                            [inStock] => Array
                                (
                                    [0] => 1
                                )

                            [_version_] => 1510294336239042560
                        )

                    [1] => SolrObject Object
                        (
                            [id] => 6H500F0
                            [name] => Array
                                (
                                    [0] => Maxtor DiamondMax 11 - hard drive - 500 GB - SATA-300
                                )

                            [manu] => Array
                                (
                                    [0] => Maxtor Corp.
                                )

                            [manu_id_s] => maxtor
                            [cat] => Array
                                (
                                    [0] => electronics
                                    [1] => hard drive
                                )

                            [features] => Array
                                (
                                    [0] => SATA 3.0Gb/s, NCQ
                                    [1] => 8.5ms seek
                                    [2] => 16MB cache
                                )

                            [price] => Array
                                (
                                    [0] => 350
                                )

                            [popularity] => Array
                                (
                                    [0] => 6
                                )

                            [inStock] => Array
                                (
                                    [0] => 1
                                )

                            [store] => Array
                                (
                                    [0] => 45.17614,-93.87341
                                )

                            [manufacturedate_dt] => 2006-02-13T15:26:37Z
                            [_version_] => 1510294336449806336
                        )

                )

        )

)

参见

  • SolrClient::getById() - Get Document By Id. Utilizes Solr Realtime Get (RTG).
SolrClient::getById
SolrClient::getDebug
SolrClient


Returns the debug data for the last connection attempt

SolrClient::getByIds
SolrClient::getOptions
SolrClient
PHP Manual

SolrClient::getDebug

(PECL solr >= 0.9.7)

SolrClient::getDebug — Returns the debug data for the last connection attempt

说明

public string SolrClient::getDebug ( void )

Returns the debug data for the last connection attempt

参数

此函数没有参数。

返回值

Returns a string on success and null if there is nothing to return.

SolrClient::getByIds
SolrClient::getOptions
SolrClient


Returns the client options set internally

SolrClient::getDebug
SolrClient::optimize
SolrClient
PHP Manual

SolrClient::getOptions

(PECL solr >= 0.9.6)

SolrClient::getOptions — Returns the client options set internally

说明

public array SolrClient::getOptions ( void )

Returns the client options set internally. Very useful for debugging. The values returned are readonly and can only be set when the object is instantiated.

参数

此函数没有参数。

返回值

Returns an array containing all the options for the SolrClient object set internally.

参见

  • SolrClient::__construct() - Constructor for the SolrClient object

SolrClient::getDebug
SolrClient::optimize
SolrClient


Defragments the index

SolrClient::getOptions
SolrClient::ping
SolrClient
PHP Manual

SolrClient::optimize

(PECL solr >= 0.9.2)

SolrClient::optimize — Defragments the index

说明

public SolrUpdateResponse SolrClient::optimize ([ int $maxSegments = 1 [, bool $softCommit = true [, bool $waitSearcher = true ]]] )

Defragments the index for faster search performance.

参数

maxSegments

Optimizes down to at most this number of segments. Since Solr 1.3

softCommit

This will refresh the 'view' of the index in a more performant manner, but without "on-disk" guarantees. (Solr4.0+)

waitSearcher

Block until a new searcher is opened and registered as the main query searcher, making the changes visible.

返回值

Returns a SolrUpdateResponse on success or throws an exception on failure.

错误／异常

Throws SolrClientException if the client had failed, or there was a connection issue.

Throws SolrServerException if the Solr Server had failed to process the request.

注释

Warning

PECL Solr >= 2.0 only supports Solr Server >= 4.0

Prior to PECL Solr 2.0 this method used to accept these arguments "int $maxSegments, bool $waitFlush, bool $waitSearcher".

参见

  • SolrClient::commit() - Finalizes all add/deletes made to the index
  • SolrClient::rollback() - Rollbacks all add/deletes made to the index since the last commit

SolrClient::getOptions
SolrClient::ping
SolrClient


Checks if Solr server is still up

SolrClient::optimize
SolrClient::query
SolrClient
PHP Manual

SolrClient::ping

(PECL solr >= 0.9.2)

SolrClient::ping — Checks if Solr server is still up

说明

public SolrPingResponse SolrClient::ping ( void )

Checks if the Solr server is still alive. Sends a HEAD request to the Apache Solr server.

参数

此函数没有参数。

返回值

Returns a SolrPingResponse object on success and throws an exception on failure.

错误／异常

Throws SolrClientException if the client had failed, or there was a connection issue.

Throws SolrServerException if the Solr Server had failed to satisfy the request.

范例

Example #1 SolrClient::ping() example

<?php
$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);

$pingresponse = $client->ping();

?>

以上例程的输出类似于：

SolrClient::optimize
SolrClient::query
SolrClient


Sends a query to the server

SolrClient::ping
SolrClient::request
SolrClient
PHP Manual

SolrClient::query

(PECL solr >= 0.9.2)

SolrClient::query — Sends a query to the server

说明

public SolrQueryResponse SolrClient::query ( SolrParams $query )

Sends a query to the server.

参数

query

A SolrParams object. It is recommended to use SolrQuery for advanced queries.

返回值

Returns a SolrQueryResponse object on success and throws an exception on failure.

错误／异常

Throws SolrClientException if the client had failed, or there was a connection issue.

Throws SolrServerException if the Solr Server had failed to satisfy the query.

范例

Example #1 SolrClient::query() example

<?php

$options = array
(
    'hostname' => 'localhost',
    'login'    => 'username',
    'password' => 'password',
    'port'     => '8983',
);

$client = new SolrClient($options);

$query = new SolrQuery();

$query->setQuery('lucene');

$query->setStart(0);

$query->setRows(50);

$query->addField('cat')->addField('features')->addField('id')->addField('timestamp');

$query_response = $client->query($query);

$response = $query_response->getResponse();

print_r($response);

?>

以上例程的输出类似于：

SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => 0
            [QTime] => 3
            [params] => SolrObject Object
                (
                    [fl] => cat,features,id,timestamp
                    [indent] => on
                    [start] => 0
                    [q] => lucene
                    [wt] => xml
                    [version] => 2.2
                    [rows] => 50
                )

        )

    [response] => SolrObject Object
        (
            [numFound] => 1
            [start] => 0
            [docs] => Array
                (
                    [0] => SolrObject Object
                        (
                            [id] => SOLR1000
                            [cat] => Array
                                (
                                    [0] => software
                                    [1] => search
                                )

                            [features] => Array
                                (
                                    [0] => Advanced Full-Text Search Capabilities using Lucene
                                    [1] => Optimized for High Volume Web Traffic
                                    [2] => Standards Based Open Interfaces - XML and HTTP
                                    [3] => Comprehensive HTML Administration Interfaces
                                    [4] => Scalability - Efficient Replication to other Solr Search Servers
                                    [5] => Flexible and Adaptable with XML configuration and Schema
                                    [6] => Good unicode support: héllo (hello with an accent over the e)
                                )

                        )

                )

        )

)

SolrClient::ping
SolrClient::request
SolrClient


Sends a raw update request

SolrClient::query
SolrClient::rollback
SolrClient
PHP Manual

SolrClient::request

(PECL solr >= 0.9.2)

SolrClient::request — Sends a raw update request

说明

public SolrUpdateResponse SolrClient::request ( string $raw_request )

Sends a raw XML update request to the server

参数

raw_request

An XML string with the raw request to the server.

返回值

Returns a SolrUpdateResponse on success. Throws an exception on failure.

错误／异常

Throws SolrIllegalArgumentException if raw_request was an empty string

Throws SolrClientException if the client had failed, or there was a connection issue.

Throws SolrServerException if the Solr Server had failed to satisfy the query.

范例

Example #1 SolrClient::request() example

<?php
$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);

$update_response = $client->request("<commit/>");

$response = $update_response->getResponse();

print_r($response);
?>

以上例程的输出类似于：

...

SolrClient::query
SolrClient::rollback
SolrClient


Rollbacks all add/deletes made to the index since the last commit

SolrClient::request
SolrClient::setResponseWriter
SolrClient
PHP Manual

SolrClient::rollback

(PECL solr >= 0.9.2)

SolrClient::rollback — Rollbacks all add/deletes made to the index since the last commit

说明

public SolrUpdateResponse SolrClient::rollback ( void )

Rollbacks all add/deletes made to the index since the last commit. It neither calls any event listeners nor creates a new searcher.

参数

此函数没有参数。

返回值

Returns a SolrUpdateResponse on success or throws a SolrClientException on failure.

参见

  • SolrClient::commit() - Finalizes all add/deletes made to the index
  • SolrClient::optimize() - Defragments the index

SolrClient::request
SolrClient::setResponseWriter
SolrClient


Sets the response writer used to prepare the response from Solr

SolrClient::rollback
SolrClient::setServlet
SolrClient
PHP Manual

SolrClient::setResponseWriter

(PECL solr >= 0.9.11)

SolrClient::setResponseWriter — Sets the response writer used to prepare the response from Solr

说明

public void SolrClient::setResponseWriter ( string $responseWriter )

Sets the response writer used to prepare the response from Solr

参数

responseWriter

One of the following:

  • json
  • phps
  • xml

返回值

没有返回值。

范例

Example #1 SolrClient::setResponseWriter() example

<?php

// This is my custom class for objects
class SolrClass
{
   public $_properties = array();

   public function __get($property_name) {

      if (property_exists($this, $property_name)) {

          return $this->$property_name;

      } else if (isset($_properties[$property_name])) {

          return $_properties[$property_name];
      }

      return null;
   }
}

$options = array
(
  'hostname' => 'localhost',
  'port' => 8983,
  'path' => '/solr/core1'
);

$client = new SolrClient($options);

$client->setResponseWriter("json");

//$response = $client->ping();

$query = new SolrQuery();

$query->setQuery("*:*");

$query->set("objectClassName", "SolrClass");

$query->set("objectPropertiesStorageMode", 1); // 0 for independent properties, 1 for combined

try
{

$response = $client->query($query);

$resp = $response->getResponse();

print_r($response);

print_r($resp);

} catch (Exception $e) {

print_r($e);

}

?>

SolrClient::rollback
SolrClient::setServlet
SolrClient


Changes the specified servlet type to a new value

SolrClient::setResponseWriter
SolrClient::system
SolrClient
PHP Manual

SolrClient::setServlet

(PECL solr >= 0.9.2)

SolrClient::setServlet — Changes the specified servlet type to a new value

说明

public bool SolrClient::setServlet ( int $type , string $value )

Changes the specified servlet type to a new value

参数

type

One of the following :

- SolrClient::SEARCH_SERVLET_TYPE
 - SolrClient::UPDATE_SERVLET_TYPE
 - SolrClient::THREADS_SERVLET_TYPE
 - SolrClient::PING_SERVLET_TYPE
 - SolrClient::TERMS_SERVLET_TYPE

value

The new value for the servlet

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SolrClient::setResponseWriter
SolrClient::system
SolrClient


Retrieve Solr Server information

SolrClient::setServlet
SolrClient::threads
SolrClient
PHP Manual

SolrClient::system

(PECL solr >= 2.0.0)

SolrClient::system — Retrieve Solr Server information

说明

public void SolrClient::system ( void )

Retrieve Solr Server information

参数

此函数没有参数。

返回值

Returns a SolrGenericResponse object on success.

错误／异常

Emits SolrClientException if the client failed, or there was a connection issue.

Emits SolrServerException if the Solr Server failed to satisfy the query.

SolrClient::setServlet
SolrClient::threads
SolrClient


Checks the threads status

SolrClient::system
SolrResponse
SolrClient
PHP Manual

SolrClient::threads

(PECL solr >= 0.9.2)

SolrClient::threads — Checks the threads status

说明

public void SolrClient::threads ( void )

Checks the threads status

参数

此函数没有参数。

返回值

Returns a SolrGenericResponse object.

错误／异常

Throws SolrClientException if the client failed, or there was a connection issue.

throws SolrServerException if the Solr Server failed to process the request.

SolrClient::system
SolrResponse
SolrClient


The SolrResponse class

(PECL solr >= 0.9.2)

简介

Represents a response from the Solr server.

类摘要

abstract SolrResponse {
/* 常量 */
const integer PARSE_SOLR_OBJ = 0 ;
const integer PARSE_SOLR_DOC = 1 ;
/* 属性 */
protected integer $http_status ;
protected integer $parser_mode ;
protected bool $success ;
protected string $http_status_message ;
protected string $http_request_url ;
protected string $http_raw_request_headers ;
protected string $http_raw_request ;
protected string $http_raw_response_headers ;
protected string $http_raw_response ;
protected string $http_digested_response ;
/* 方法 */
public string getDigestedResponse ( void )
public int getHttpStatus ( void )
public string getHttpStatusMessage ( void )
public string getRawRequest ( void )
public string getRawRequestHeaders ( void )
public string getRawResponse ( void )
public string getRawResponseHeaders ( void )
public string getRequestUrl ( void )
public SolrObject getResponse ( void )
public bool setParseMode ([ int $parser_mode = 0 ] )
public bool success ( void )
}

属性

http_status

The http status of the response.

parser_mode

Whether to parse the solr documents as SolrObject or SolrDocument instances.

success

Was there an error during the request

http_status_message

Detailed message on http status

http_request_url

The request URL

http_raw_request_headers

A string of raw headers sent during the request.

http_raw_request

The raw request sent to the server

http_raw_response_headers

Response headers from the Solr server.

http_raw_response

The response message from the server.

http_digested_response

The response in PHP serialized format.

预定义常量

SolrResponse Class Constants

SolrResponse::PARSE_SOLR_OBJ

Documents should be parsed as SolrObject instances

SolrResponse::PARSE_SOLR_DOC

Documents should be parsed as SolrDocument instances.

Table of Contents

  • SolrResponse::getDigestedResponse — Returns the XML response as serialized PHP data
  • SolrResponse::getHttpStatus — Returns the HTTP status of the response
  • SolrResponse::getHttpStatusMessage — Returns more details on the HTTP status
  • SolrResponse::getRawRequest — Returns the raw request sent to the Solr server
  • SolrResponse::getRawRequestHeaders — Returns the raw request headers sent to the Solr server
  • SolrResponse::getRawResponse — Returns the raw response from the server
  • SolrResponse::getRawResponseHeaders — Returns the raw response headers from the server
  • SolrResponse::getRequestUrl — Returns the full URL the request was sent to
  • SolrResponse::getResponse — Returns a SolrObject representing the XML response from the server
  • SolrResponse::setParseMode — Sets the parse mode
  • SolrResponse::success — Was the request a success
SolrClient::threads
SolrResponse::getDigestedResponse
Solr


Returns the XML response as serialized PHP data

SolrResponse
SolrResponse::getHttpStatus
SolrResponse
PHP Manual

SolrResponse::getDigestedResponse

(PECL solr >= 0.9.2)

SolrResponse::getDigestedResponse — Returns the XML response as serialized PHP data

说明

public string SolrResponse::getDigestedResponse ( void )

Returns the XML response as serialized PHP data

参数

此函数没有参数。

返回值

Returns the XML response as serialized PHP data

SolrResponse
SolrResponse::getHttpStatus
SolrResponse


Returns the HTTP status of the response

SolrResponse::getDigestedResponse
SolrResponse::getHttpStatusMessage
SolrResponse
PHP Manual

SolrResponse::getHttpStatus

(PECL solr >= 0.9.2)

SolrResponse::getHttpStatus — Returns the HTTP status of the response

说明

public int SolrResponse::getHttpStatus ( void )

Returns the HTTP status of the response.

参数

此函数没有参数。

返回值

Returns the HTTP status of the response.

SolrResponse::getDigestedResponse
SolrResponse::getHttpStatusMessage
SolrResponse


Returns more details on the HTTP status

SolrResponse::getHttpStatus
SolrResponse::getRawRequest
SolrResponse
PHP Manual

SolrResponse::getHttpStatusMessage

(PECL solr >= 0.9.2)

SolrResponse::getHttpStatusMessage — Returns more details on the HTTP status

说明

public string SolrResponse::getHttpStatusMessage ( void )

Returns more details on the HTTP status.

参数

此函数没有参数。

返回值

Returns more details on the HTTP status

SolrResponse::getHttpStatus
SolrResponse::getRawRequest
SolrResponse


Returns the raw request sent to the Solr server

SolrResponse::getHttpStatusMessage
SolrResponse::getRawRequestHeaders
SolrResponse
PHP Manual

SolrResponse::getRawRequest

(PECL solr >= 0.9.2)

SolrResponse::getRawRequest — Returns the raw request sent to the Solr server

说明

public string SolrResponse::getRawRequest ( void )

Returns the raw request sent to the Solr server.

参数

此函数没有参数。

返回值

Returns the raw request sent to the Solr server

SolrResponse::getHttpStatusMessage
SolrResponse::getRawRequestHeaders
SolrResponse


Returns the raw request headers sent to the Solr server

SolrResponse::getRawRequest
SolrResponse::getRawResponse
SolrResponse
PHP Manual

SolrResponse::getRawRequestHeaders

(PECL solr >= 0.9.2)

SolrResponse::getRawRequestHeaders — Returns the raw request headers sent to the Solr server

说明

public string SolrResponse::getRawRequestHeaders ( void )

Returns the raw request headers sent to the Solr server.

参数

此函数没有参数。

返回值

Returns the raw request headers sent to the Solr server

SolrResponse::getRawRequest
SolrResponse::getRawResponse
SolrResponse


Returns the raw response from the server

SolrResponse::getRawRequestHeaders
SolrResponse::getRawResponseHeaders
SolrResponse
PHP Manual

SolrResponse::getRawResponse

(PECL solr >= 0.9.2)

SolrResponse::getRawResponse — Returns the raw response from the server

说明

public string SolrResponse::getRawResponse ( void )

Returns the raw response from the server.

参数

此函数没有参数。

返回值

Returns the raw response from the server.

SolrResponse::getRawRequestHeaders
SolrResponse::getRawResponseHeaders
SolrResponse


Returns the raw response headers from the server

SolrResponse::getRawResponse
SolrResponse::getRequestUrl
SolrResponse
PHP Manual

SolrResponse::getRawResponseHeaders

(PECL solr >= 0.9.2)

SolrResponse::getRawResponseHeaders — Returns the raw response headers from the server

说明

public string SolrResponse::getRawResponseHeaders ( void )

Returns the raw response headers from the server.

参数

此函数没有参数。

返回值

Returns the raw response headers from the server.

SolrResponse::getRawResponse
SolrResponse::getRequestUrl
SolrResponse


Returns the full URL the request was sent to

SolrResponse::getRawResponseHeaders
SolrResponse::getResponse
SolrResponse
PHP Manual

SolrResponse::getRequestUrl

(PECL solr >= 0.9.2)

SolrResponse::getRequestUrl — Returns the full URL the request was sent to

说明

public string SolrResponse::getRequestUrl ( void )

Returns the full URL the request was sent to.

参数

此函数没有参数。

返回值

Returns the full URL the request was sent to

SolrResponse::getRawResponseHeaders
SolrResponse::getResponse
SolrResponse


Returns a SolrObject representing the XML response from the server

SolrResponse::getRequestUrl
SolrResponse::setParseMode
SolrResponse
PHP Manual

SolrResponse::getResponse

(PECL solr >= 0.9.2)

SolrResponse::getResponse — Returns a SolrObject representing the XML response from the server

说明

public SolrObject SolrResponse::getResponse ( void )

Returns a SolrObject representing the XML response from the server.

参数

此函数没有参数。

返回值

Returns a SolrObject representing the XML response from the server

SolrResponse::getRequestUrl
SolrResponse::setParseMode
SolrResponse


Sets the parse mode

SolrResponse::getResponse
SolrResponse::success
SolrResponse
PHP Manual

SolrResponse::setParseMode

(PECL solr >= 0.9.2)

SolrResponse::setParseMode — Sets the parse mode

说明

public bool SolrResponse::setParseMode ([ int $parser_mode = 0 ] )

Sets the parse mode.

参数

parser_mode

SolrResponse::PARSE_SOLR_DOC parses documents in SolrDocument instances. SolrResponse::PARSE_SOLR_OBJ parses document into SolrObjects.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SolrResponse::getResponse
SolrResponse::success
SolrResponse


Was the request a success

SolrResponse::setParseMode
SolrQueryResponse
SolrResponse
PHP Manual

SolrResponse::success

(PECL solr >= 0.9.2)

SolrResponse::success — Was the request a success

说明

public bool SolrResponse::success ( void )

Used to check if the request to the server was successful.

参数

此函数没有参数。

返回值

Returns TRUE if it was successful and FALSE if it was not.

SolrResponse::setParseMode
SolrQueryResponse
SolrResponse


The SolrQueryResponse class

(PECL solr >= 0.9.2)

简介

Represents a response to a query request.

类摘要

final SolrQueryResponse extends SolrResponse {
/* 常量 */
const integer PARSE_SOLR_OBJ = 0 ;
const integer PARSE_SOLR_DOC = 1 ;
/* 继承的属性 */
const integer SolrResponse::PARSE_SOLR_OBJ = 0 ;
const integer SolrResponse::PARSE_SOLR_DOC = 1 ;
protected integer $http_status ;
protected integer $parser_mode ;
protected bool $success ;
protected string $http_status_message ;
protected string $http_request_url ;
protected string $http_raw_request_headers ;
protected string $http_raw_request ;
protected string $http_raw_response_headers ;
protected string $http_raw_response ;
protected string $http_digested_response ;
/* 方法 */
public __construct ( void )
public void __destruct ( void )
/* 继承的方法 */
public string SolrResponse::getDigestedResponse ( void )
public int SolrResponse::getHttpStatus ( void )
public string SolrResponse::getHttpStatusMessage ( void )
public string SolrResponse::getRawRequest ( void )
public string SolrResponse::getRawRequestHeaders ( void )
public string SolrResponse::getRawResponse ( void )
public string SolrResponse::getRawResponseHeaders ( void )
public string SolrResponse::getRequestUrl ( void )
public SolrObject SolrResponse::getResponse ( void )
public bool SolrResponse::setParseMode ([ int $parser_mode = 0 ] )
public bool SolrResponse::success ( void )
}

预定义常量

SolrQueryResponse Class constants

SolrQueryResponse::PARSE_SOLR_OBJ

Documents should be parsed as SolrObject instances

SolrQueryResponse::PARSE_SOLR_DOC

Documents should be parsed as SolrDocument instances.

Table of Contents

  • SolrQueryResponse::__construct — Constructor
  • SolrQueryResponse::__destruct — Destructor
SolrResponse::success
SolrQueryResponse::__construct
Solr


Constructor

SolrQueryResponse
SolrQueryResponse::__destruct
SolrQueryResponse
PHP Manual

SolrQueryResponse::__construct

(PECL solr >= 0.9.2)

SolrQueryResponse::__construct — Constructor

说明

public SolrQueryResponse::__construct ( void )

Constructor

参数

此函数没有参数。

返回值

None

SolrQueryResponse
SolrQueryResponse::__destruct
SolrQueryResponse


Destructor

SolrQueryResponse::__construct
SolrUpdateResponse
SolrQueryResponse
PHP Manual

SolrQueryResponse::__destruct

(PECL solr >= 0.9.2)

SolrQueryResponse::__destruct — Destructor

说明

public void SolrQueryResponse::__destruct ( void )

Destructor.

参数

此函数没有参数。

返回值

None

SolrQueryResponse::__construct
SolrUpdateResponse
SolrQueryResponse


The SolrUpdateResponse class

(PECL solr >= 0.9.2)

简介

Represents a response to an update request.

类摘要

final SolrUpdateResponse extends SolrResponse {
/* 常量 */
const integer PARSE_SOLR_OBJ = 0 ;
const integer PARSE_SOLR_DOC = 1 ;
/* 继承的属性 */
const integer SolrResponse::PARSE_SOLR_OBJ = 0 ;
const integer SolrResponse::PARSE_SOLR_DOC = 1 ;
protected integer $http_status ;
protected integer $parser_mode ;
protected bool $success ;
protected string $http_status_message ;
protected string $http_request_url ;
protected string $http_raw_request_headers ;
protected string $http_raw_request ;
protected string $http_raw_response_headers ;
protected string $http_raw_response ;
protected string $http_digested_response ;
/* 方法 */
public __construct ( void )
public void __destruct ( void )
/* 继承的方法 */
public string SolrResponse::getDigestedResponse ( void )
public int SolrResponse::getHttpStatus ( void )
public string SolrResponse::getHttpStatusMessage ( void )
public string SolrResponse::getRawRequest ( void )
public string SolrResponse::getRawRequestHeaders ( void )
public string SolrResponse::getRawResponse ( void )
public string SolrResponse::getRawResponseHeaders ( void )
public string SolrResponse::getRequestUrl ( void )
public SolrObject SolrResponse::getResponse ( void )
public bool SolrResponse::setParseMode ([ int $parser_mode = 0 ] )
public bool SolrResponse::success ( void )
}

预定义常量

SolrUpdateResponse Class Constants

SolrUpdateResponse::PARSE_SOLR_OBJ

Documents should be parsed as SolrObject instances

SolrUpdateResponse::PARSE_SOLR_DOC

Documents should be parsed as SolrDocument instances.

Table of Contents

  • SolrUpdateResponse::__construct — Constructor
  • SolrUpdateResponse::__destruct — Destructor
SolrQueryResponse::__destruct
SolrUpdateResponse::__construct
Solr


Constructor

SolrUpdateResponse
SolrUpdateResponse::__destruct
SolrUpdateResponse
PHP Manual

SolrUpdateResponse::__construct

(PECL solr >= 0.9.2)

SolrUpdateResponse::__construct — Constructor

说明

public SolrUpdateResponse::__construct ( void )

Constructor

参数

此函数没有参数。

返回值

None

SolrUpdateResponse
SolrUpdateResponse::__destruct
SolrUpdateResponse


Destructor

SolrUpdateResponse::__construct
SolrPingResponse
SolrUpdateResponse
PHP Manual

SolrUpdateResponse::__destruct

(PECL solr >= 0.9.2)

SolrUpdateResponse::__destruct — Destructor

说明

public void SolrUpdateResponse::__destruct ( void )

Destructor

参数

此函数没有参数。

返回值

None

SolrUpdateResponse::__construct
SolrPingResponse
SolrUpdateResponse


The SolrPingResponse class

(PECL solr >= 0.9.2)

简介

Represents a response to a ping request to the server

类摘要

final SolrPingResponse extends SolrResponse {
/* 常量 */
const integer PARSE_SOLR_OBJ = 0 ;
const integer PARSE_SOLR_DOC = 1 ;
/* 属性 */
/* 方法 */
public __construct ( void )
public void __destruct ( void )
public string getResponse ( void )
/* 继承的方法 */
public string SolrResponse::getDigestedResponse ( void )
public int SolrResponse::getHttpStatus ( void )
public string SolrResponse::getHttpStatusMessage ( void )
public string SolrResponse::getRawRequest ( void )
public string SolrResponse::getRawRequestHeaders ( void )
public string SolrResponse::getRawResponse ( void )
public string SolrResponse::getRawResponseHeaders ( void )
public string SolrResponse::getRequestUrl ( void )
public SolrObject SolrResponse::getResponse ( void )
public bool SolrResponse::setParseMode ([ int $parser_mode = 0 ] )
public bool SolrResponse::success ( void )
}

属性

http_status

The http status of the response.

parser_mode

Whether to parse the solr documents as SolrObject or SolrDocument instances.

success

Was there an error during the request

http_status_message

Detailed message on http status

http_request_url

The request URL

http_raw_request_headers

A string of raw headers sent during the request

http_raw_request

The raw request sent to the server

http_raw_response_headers

Response headers from the Solr server

http_raw_response

The response message from the server

http_digested_response

The response in PHP serialized format.

预定义常量

SolrPingResponse Class Constants

SolrPingResponse::PARSE_SOLR_OBJ

Documents should be parsed as SolrObject instances

SolrPingResponse::PARSE_SOLR_DOC

Documents should be parsed as SolrDocument instances.

Table of Contents

  • SolrPingResponse::__construct — Constructor
  • SolrPingResponse::__destruct — Destructor
  • SolrPingResponse::getResponse — Returns the response from the server
SolrUpdateResponse::__destruct
SolrPingResponse::__construct
Solr


Constructor

SolrPingResponse
SolrPingResponse::__destruct
SolrPingResponse
PHP Manual

SolrPingResponse::__construct

(PECL solr >= 0.9.2)

SolrPingResponse::__construct — Constructor

说明

public SolrPingResponse::__construct ( void )

Constructor

参数

此函数没有参数。

返回值

None

SolrPingResponse
SolrPingResponse::__destruct
SolrPingResponse


Destructor

SolrPingResponse::__construct
SolrPingResponse::getResponse
SolrPingResponse
PHP Manual

SolrPingResponse::__destruct

(PECL solr >= 0.9.2)

SolrPingResponse::__destruct — Destructor

说明

public void SolrPingResponse::__destruct ( void )

Destructor

参数

此函数没有参数。

返回值

None

SolrPingResponse::__construct
SolrPingResponse::getResponse
SolrPingResponse


Returns the response from the server

SolrPingResponse::__destruct
SolrGenericResponse
SolrPingResponse
PHP Manual

SolrPingResponse::getResponse

(PECL solr >= 0.9.2)

SolrPingResponse::getResponse — Returns the response from the server

说明

public string SolrPingResponse::getResponse ( void )

Returns the response from the server. This should be empty because the request as a HEAD request.

参数

此函数没有参数。

返回值

Returns an empty string.

SolrPingResponse::__destruct
SolrGenericResponse
SolrPingResponse


The SolrGenericResponse class

(PECL solr >= 0.9.2)

简介

Represents a response from the solr server.

类摘要

final SolrGenericResponse extends SolrResponse {
/* 常量 */
const integer PARSE_SOLR_OBJ = 0 ;
const integer PARSE_SOLR_DOC = 1 ;
/* 继承的属性 */
const integer SolrResponse::PARSE_SOLR_OBJ = 0 ;
const integer SolrResponse::PARSE_SOLR_DOC = 1 ;
protected integer $http_status ;
protected integer $parser_mode ;
protected bool $success ;
protected string $http_status_message ;
protected string $http_request_url ;
protected string $http_raw_request_headers ;
protected string $http_raw_request ;
protected string $http_raw_response_headers ;
protected string $http_raw_response ;
protected string $http_digested_response ;
/* 方法 */
public __construct ( void )
public void __destruct ( void )
/* 继承的方法 */
public string SolrResponse::getDigestedResponse ( void )
public int SolrResponse::getHttpStatus ( void )
public string SolrResponse::getHttpStatusMessage ( void )
public string SolrResponse::getRawRequest ( void )
public string SolrResponse::getRawRequestHeaders ( void )
public string SolrResponse::getRawResponse ( void )
public string SolrResponse::getRawResponseHeaders ( void )
public string SolrResponse::getRequestUrl ( void )
public SolrObject SolrResponse::getResponse ( void )
public bool SolrResponse::setParseMode ([ int $parser_mode = 0 ] )
public bool SolrResponse::success ( void )
}

预定义常量

SolrGenericResponse Class constants

SolrGenericResponse::PARSE_SOLR_OBJ

Documents should be parsed as SolrObject instances

SolrGenericResponse::PARSE_SOLR_DOC

Documents should be parsed as SolrDocument instances.

Table of Contents

  • SolrGenericResponse::__construct — Constructor
  • SolrGenericResponse::__destruct — Destructor
SolrPingResponse::getResponse
SolrGenericResponse::__construct
Solr


Constructor

SolrGenericResponse
SolrGenericResponse::__destruct
SolrGenericResponse
PHP Manual

SolrGenericResponse::__construct

(PECL solr >= 0.9.2)

SolrGenericResponse::__construct — Constructor

说明

public SolrGenericResponse::__construct ( void )

Constructor

参数

此函数没有参数。

返回值

None

SolrGenericResponse
SolrGenericResponse::__destruct
SolrGenericResponse


Destructor

SolrGenericResponse::__construct
SolrParams
SolrGenericResponse
PHP Manual

SolrGenericResponse::__destruct

(PECL solr >= 0.9.2)

SolrGenericResponse::__destruct — Destructor

说明

public void SolrGenericResponse::__destruct ( void )

Destructor.

参数

此函数没有参数。

返回值

None

SolrGenericResponse::__construct
SolrParams
SolrGenericResponse


The SolrParams class

(PECL solr >= 0.9.2)

简介

Represents a collection of name-value pairs sent to the Solr server during a request.

类摘要

abstract SolrParams implements Serializable {
/* 方法 */
final public SolrParams add ( string $name , string $value )
public SolrParams addParam ( string $name , string $value )
final public mixed get ( string $param_name )
final public mixed getParam ([ string $param_name ] )
final public array getParams ( void )
final public array getPreparedParams ( void )
final public string serialize ( void )
final public void set ( string $name , string $value )
public SolrParams setParam ( string $name , string $value )
final public string toString ([ bool $url_encode = false ] )
final public void unserialize ( string $serialized )
}

Table of Contents

  • SolrParams::add — This is an alias for SolrParams::addParam
  • SolrParams::addParam — Adds a parameter to the object
  • SolrParams::get — This is an alias for SolrParams::getParam
  • SolrParams::getParam — Returns a parameter value
  • SolrParams::getParams — Returns an array of non URL-encoded parameters
  • SolrParams::getPreparedParams — Returns an array of URL-encoded parameters
  • SolrParams::serialize — Used for custom serialization
  • SolrParams::set — An alias of SolrParams::setParam
  • SolrParams::setParam — Sets the parameter to the specified value
  • SolrParams::toString — Returns all the name-value pair parameters in the object
  • SolrParams::unserialize — Used for custom serialization
SolrGenericResponse::__destruct
SolrParams::add
Solr


This is an alias for SolrParams::addParam

SolrParams
SolrParams::addParam
SolrParams
PHP Manual

SolrParams::add

(PECL solr >= 0.9.2)

SolrParams::add — This is an alias for SolrParams::addParam

说明

final public SolrParams SolrParams::add ( string $name , string $value )

This is an alias for SolrParams::addParam

参数

name

The name of the parameter

value

The value of the parameter

返回值

Returns a SolrParams instance on success

SolrParams
SolrParams::addParam
SolrParams


Adds a parameter to the object

SolrParams::add
SolrParams::get
SolrParams
PHP Manual

SolrParams::addParam

(PECL solr >= 0.9.2)

SolrParams::addParam — Adds a parameter to the object

说明

public SolrParams SolrParams::addParam ( string $name , string $value )

Adds a parameter to the object. This is used for parameters that can be specified multiple times.

参数

name

Name of parameter

value

Value of parameter

返回值

Returns a SolrParam object on success and FALSE on failure.

SolrParams::add
SolrParams::get
SolrParams


This is an alias for SolrParams::getParam

SolrParams::addParam
SolrParams::getParam
SolrParams
PHP Manual

SolrParams::get

(PECL solr >= 0.9.2)

SolrParams::get — This is an alias for SolrParams::getParam

说明

final public mixed SolrParams::get ( string $param_name )

This is an alias for SolrParams::getParam

参数

param_name

Then name of the parameter

返回值

Returns an array or string depending on the type of parameter

SolrParams::addParam
SolrParams::getParam
SolrParams


Returns a parameter value

SolrParams::get
SolrParams::getParams
SolrParams
PHP Manual

SolrParams::getParam

(PECL solr >= 0.9.2)

SolrParams::getParam — Returns a parameter value

说明

final public mixed SolrParams::getParam ([ string $param_name ] )

Returns a parameter with name param_name

参数

param_name

The name of the parameter

返回值

Returns a string or an array depending on the type of the parameter

SolrParams::get
SolrParams::getParams
SolrParams


Returns an array of non URL-encoded parameters

SolrParams::getParam
SolrParams::getPreparedParams
SolrParams
PHP Manual

SolrParams::getParams

(PECL solr >= 0.9.2)

SolrParams::getParams — Returns an array of non URL-encoded parameters

说明

final public array SolrParams::getParams ( void )

Returns an array of non URL-encoded parameters

参数

此函数没有参数。

返回值

Returns an array of non URL-encoded parameters

SolrParams::getParam
SolrParams::getPreparedParams
SolrParams


Returns an array of URL-encoded parameters

SolrParams::getParams
SolrParams::serialize
SolrParams
PHP Manual

SolrParams::getPreparedParams

(PECL solr >= 0.9.2)

SolrParams::getPreparedParams — Returns an array of URL-encoded parameters

说明

final public array SolrParams::getPreparedParams ( void )

Returns an array on URL-encoded parameters

参数

此函数没有参数。

返回值

Returns an array on URL-encoded parameters

SolrParams::getParams
SolrParams::serialize
SolrParams


Used for custom serialization

SolrParams::getPreparedParams
SolrParams::set
SolrParams
PHP Manual

SolrParams::serialize

(PECL solr >= 0.9.2)

SolrParams::serialize — Used for custom serialization

说明

final public string SolrParams::serialize ( void )

Used for custom serialization

参数

此函数没有参数。

返回值

Used for custom serialization

SolrParams::getPreparedParams
SolrParams::set
SolrParams


An alias of SolrParams::setParam

SolrParams::serialize
SolrParams::setParam
SolrParams
PHP Manual

SolrParams::set

(PECL solr >= 0.9.2)

SolrParams::set — An alias of SolrParams::setParam

说明

final public void SolrParams::set ( string $name , string $value )

An alias of SolrParams::setParam

参数

name

Then name of the parameter

value

The parameter value

返回值

Returns an instance of the SolrParams object on success

SolrParams::serialize
SolrParams::setParam
SolrParams


Sets the parameter to the specified value

SolrParams::set
SolrParams::toString
SolrParams
PHP Manual

SolrParams::setParam

(PECL solr >= 0.9.2)

SolrParams::setParam — Sets the parameter to the specified value

说明

public SolrParams SolrParams::setParam ( string $name , string $value )

Sets the query parameter to the specified value. This is used for parameters that can only be specified once. Subsequent calls with the same parameter name will override the existing value

参数

name

Name of the parameter

value

Value of the parameter

返回值

Returns a SolrParam object on success and FALSE on value.

范例

Example #1 SolrParams::setParam() example

<?php

$param = new SolrParams();

$param->setParam('q', 'solr')->setParam('rows', 2);

?>

以上例程的输出类似于：

SolrParams::set
SolrParams::toString
SolrParams


Returns all the name-value pair parameters in the object

SolrParams::setParam
SolrParams::unserialize
SolrParams
PHP Manual

SolrParams::toString

(PECL solr >= 0.9.2)

SolrParams::toString — Returns all the name-value pair parameters in the object

说明

final public string SolrParams::toString ([ bool $url_encode = false ] )

Returns all the name-value pair parameters in the object

参数

url_encode

Whether to return URL-encoded values

返回值

Returns a string on success and FALSE on failure.

SolrParams::setParam
SolrParams::unserialize
SolrParams


Used for custom serialization

SolrParams::toString
SolrModifiableParams
SolrParams
PHP Manual

SolrParams::unserialize

(PECL solr >= 0.9.2)

SolrParams::unserialize — Used for custom serialization

说明

final public void SolrParams::unserialize ( string $serialized )

Used for custom serialization

参数

serialized

The serialized representation of the object

返回值

None

SolrParams::toString
SolrModifiableParams
SolrParams


The SolrModifiableParams class

(PECL solr >= 0.9.2)

简介

Represents a collection of name-value pairs sent to the Solr server during a request.

类摘要

SolrModifiableParams extends SolrParams implements Serializable {
/* 方法 */
public __construct ( void )
public void __destruct ( void )
/* 继承的方法 */
final public SolrParams SolrParams::add ( string $name , string $value )
public SolrParams SolrParams::addParam ( string $name , string $value )
final public mixed SolrParams::get ( string $param_name )
final public mixed SolrParams::getParam ([ string $param_name ] )
final public array SolrParams::getParams ( void )
final public array SolrParams::getPreparedParams ( void )
final public string SolrParams::serialize ( void )
final public void SolrParams::set ( string $name , string $value )
public SolrParams SolrParams::setParam ( string $name , string $value )
final public string SolrParams::toString ([ bool $url_encode = false ] )
final public void SolrParams::unserialize ( string $serialized )
}

Table of Contents

  • SolrModifiableParams::__construct — Constructor
  • SolrModifiableParams::__destruct — Destructor
SolrParams::unserialize
SolrModifiableParams::__construct
Solr


Constructor

SolrModifiableParams
SolrModifiableParams::__destruct
SolrModifiableParams
PHP Manual

SolrModifiableParams::__construct

(PECL solr >= 0.9.2)

SolrModifiableParams::__construct — Constructor

说明

public SolrModifiableParams::__construct ( void )

Constructor

参数

此函数没有参数。

返回值

None

SolrModifiableParams
SolrModifiableParams::__destruct
SolrModifiableParams


Destructor

SolrModifiableParams::__construct
SolrQuery
SolrModifiableParams
PHP Manual

SolrModifiableParams::__destruct

(PECL solr >= 0.9.2)

SolrModifiableParams::__destruct — Destructor

说明

public void SolrModifiableParams::__destruct ( void )

Destructor

参数

此函数没有参数。

返回值

None

SolrModifiableParams::__construct
SolrQuery
SolrModifiableParams


The SolrQuery class

(PECL solr >= 0.9.2)

简介

Represents a collection of name-value pairs sent to the Solr server during a request.

类摘要

SolrQuery extends SolrModifiableParams implements Serializable {
/* 常量 */
const integer ORDER_ASC = 0 ;
const integer ORDER_DESC = 1 ;
const integer FACET_SORT_INDEX = 0 ;
const integer FACET_SORT_COUNT = 1 ;
const integer TERMS_SORT_INDEX = 0 ;
const integer TERMS_SORT_COUNT = 1 ;
/* 属性 */
/* 方法 */
public SolrQuery addExpandFilterQuery ( string $fq )
public SolrQuery addExpandSortField ( string $field [, string $order ] )
public SolrQuery addFacetDateField ( string $dateField )
public SolrQuery addFacetDateOther ( string $value [, string $field_override ] )
public SolrQuery addFacetField ( string $field )
public SolrQuery addFacetQuery ( string $facetQuery )
public SolrQuery addField ( string $field )
public SolrQuery addFilterQuery ( string $fq )
public SolrQuery addGroupField ( string $value )
public SolrQuery addGroupFunction ( string $value )
public SolrQuery addGroupQuery ( string $value )
public SolrQuery addGroupSortField ( string $field [, integer $order ] )
public SolrQuery addHighlightField ( string $field )
public SolrQuery addMltField ( string $field )
public SolrQuery addMltQueryField ( string $field , float $boost )
public SolrQuery addSortField ( string $field [, int $order = SolrQuery::ORDER_DESC ] )
public SolrQuery addStatsFacet ( string $field )
public SolrQuery addStatsField ( string $field )
public SolrQuery collapse ( SolrCollapseFunction $collapseFunction )
public __construct ([ string $q ] )
public void __destruct ( void )
public bool getExpand ( void )
public array getExpandFilterQueries ( void )
public array getExpandQuery ( void )
public integer getExpandRows ( void )
public array getExpandSortFields ( void )
public bool getFacet ( void )
public string getFacetDateEnd ([ string $field_override ] )
public array getFacetDateFields ( void )
public string getFacetDateGap ([ string $field_override ] )
public string getFacetDateHardEnd ([ string $field_override ] )
public array getFacetDateOther ([ string $field_override ] )
public string getFacetDateStart ([ string $field_override ] )
public array getFacetFields ( void )
public int getFacetLimit ([ string $field_override ] )
public string getFacetMethod ([ string $field_override ] )
public int getFacetMinCount ([ string $field_override ] )
public bool getFacetMissing ([ string $field_override ] )
public int getFacetOffset ([ string $field_override ] )
public string getFacetPrefix ([ string $field_override ] )
public array getFacetQueries ( void )
public int getFacetSort ([ string $field_override ] )
public array getFields ( void )
public array getFilterQueries ( void )
public bool getGroup ( void )
public integer getGroupCachePercent ( void )
public bool getGroupFacet ( void )
public array getGroupFields ( void )
public string getGroupFormat ( void )
public array getGroupFunctions ( void )
public integer getGroupLimit ( void )
public bool getGroupMain ( void )
public bool getGroupNGroups ( void )
public integer getGroupOffset ( void )
public array getGroupQueries ( void )
public array getGroupSortFields ( void )
public bool getGroupTruncate ( void )
public bool getHighlight ( void )
public string getHighlightAlternateField ([ string $field_override ] )
public array getHighlightFields ( void )
public string getHighlightFormatter ([ string $field_override ] )
public string getHighlightFragmenter ([ string $field_override ] )
public int getHighlightFragsize ([ string $field_override ] )
public bool getHighlightHighlightMultiTerm ( void )
public int getHighlightMaxAlternateFieldLength ([ string $field_override ] )
public int getHighlightMaxAnalyzedChars ( void )
public bool getHighlightMergeContiguous ([ string $field_override ] )
public int getHighlightRegexMaxAnalyzedChars ( void )
public string getHighlightRegexPattern ( void )
public float getHighlightRegexSlop ( void )
public bool getHighlightRequireFieldMatch ( void )
public string getHighlightSimplePost ([ string $field_override ] )
public string getHighlightSimplePre ([ string $field_override ] )
public int getHighlightSnippets ([ string $field_override ] )
public bool getHighlightUsePhraseHighlighter ( void )
public bool getMlt ( void )
public bool getMltBoost ( void )
public int getMltCount ( void )
public array getMltFields ( void )
public int getMltMaxNumQueryTerms ( void )
public int getMltMaxNumTokens ( void )
public int getMltMaxWordLength ( void )
public int getMltMinDocFrequency ( void )
public int getMltMinTermFrequency ( void )
public int getMltMinWordLength ( void )
public array getMltQueryFields ( void )
public string getQuery ( void )
public int getRows ( void )
public array getSortFields ( void )
public int getStart ( void )
public bool getStats ( void )
public array getStatsFacets ( void )
public array getStatsFields ( void )
public bool getTerms ( void )
public string getTermsField ( void )
public bool getTermsIncludeLowerBound ( void )
public bool getTermsIncludeUpperBound ( void )
public int getTermsLimit ( void )
public string getTermsLowerBound ( void )
public int getTermsMaxCount ( void )
public int getTermsMinCount ( void )
public string getTermsPrefix ( void )
public bool getTermsReturnRaw ( void )
public int getTermsSort ( void )
public string getTermsUpperBound ( void )
public int getTimeAllowed ( void )
public SolrQuery removeExpandFilterQuery ( string $fq )
public SolrQuery removeExpandSortField ( string $field )
public SolrQuery removeFacetDateField ( string $field )
public SolrQuery removeFacetDateOther ( string $value [, string $field_override ] )
public SolrQuery removeFacetField ( string $field )
public SolrQuery removeFacetQuery ( string $value )
public SolrQuery removeField ( string $field )
public SolrQuery removeFilterQuery ( string $fq )
public SolrQuery removeHighlightField ( string $field )
public SolrQuery removeMltField ( string $field )
public SolrQuery removeMltQueryField ( string $queryField )
public SolrQuery removeSortField ( string $field )
public SolrQuery removeStatsFacet ( string $value )
public SolrQuery removeStatsField ( string $field )
public SolrQuery setEchoHandler ( bool $flag )
public SolrQuery setEchoParams ( string $type )
public SolrQuery setExpand ( bool $value )
public SolrQuery setExpandQuery ( string $q )
public SolrQuery setExpandRows ( integer $value )
public SolrQuery setExplainOther ( string $query )
public SolrQuery setFacet ( bool $flag )
public SolrQuery setFacetDateEnd ( string $value [, string $field_override ] )
public SolrQuery setFacetDateGap ( string $value [, string $field_override ] )
public SolrQuery setFacetDateHardEnd ( bool $value [, string $field_override ] )
public SolrQuery setFacetDateStart ( string $value [, string $field_override ] )
public SolrQuery setFacetEnumCacheMinDefaultFrequency ( int $frequency [, string $field_override ] )
public SolrQuery setFacetLimit ( int $limit [, string $field_override ] )
public SolrQuery setFacetMethod ( string $method [, string $field_override ] )
public SolrQuery setFacetMinCount ( int $mincount [, string $field_override ] )
public SolrQuery setFacetMissing ( bool $flag [, string $field_override ] )
public SolrQuery setFacetOffset ( int $offset [, string $field_override ] )
public SolrQuery setFacetPrefix ( string $prefix [, string $field_override ] )
public SolrQuery setFacetSort ( int $facetSort [, string $field_override ] )
public SolrQuery setGroup ( bool $value )
public SolrQuery setGroupCachePercent ( integer $percent )
public SolrQuery setGroupFacet ( bool $value )
public SolrQuery setGroupFormat ( string $value )
public SolrQuery setGroupLimit ( integer $value )
public SolrQuery setGroupMain ( string $value )
public SolrQuery setGroupNGroups ( bool $value )
public SolrQuery setGroupOffset ( integer $value )
public SolrQuery setGroupTruncate ( bool $value )
public SolrQuery setHighlight ( bool $flag )
public SolrQuery setHighlightAlternateField ( string $field [, string $field_override ] )
public SolrQuery setHighlightFormatter ( string $formatter [, string $field_override ] )
public SolrQuery setHighlightFragmenter ( string $fragmenter [, string $field_override ] )
public SolrQuery setHighlightFragsize ( int $size [, string $field_override ] )
public SolrQuery setHighlightHighlightMultiTerm ( bool $flag )
public SolrQuery setHighlightMaxAlternateFieldLength ( int $fieldLength [, string $field_override ] )
public SolrQuery setHighlightMaxAnalyzedChars ( int $value )
public SolrQuery setHighlightMergeContiguous ( bool $flag [, string $field_override ] )
public SolrQuery setHighlightRegexMaxAnalyzedChars ( int $maxAnalyzedChars )
public SolrQuery setHighlightRegexPattern ( string $value )
public SolrQuery setHighlightRegexSlop ( float $factor )
public SolrQuery setHighlightRequireFieldMatch ( bool $flag )
public SolrQuery setHighlightSimplePost ( string $simplePost [, string $field_override ] )
public SolrQuery setHighlightSimplePre ( string $simplePre [, string $field_override ] )
public SolrQuery setHighlightSnippets ( int $value [, string $field_override ] )
public SolrQuery setHighlightUsePhraseHighlighter ( bool $flag )
public SolrQuery setMlt ( bool $flag )
public SolrQuery setMltBoost ( bool $flag )
public SolrQuery setMltCount ( int $count )
public SolrQuery setMltMaxNumQueryTerms ( int $value )
public SolrQuery setMltMaxNumTokens ( int $value )
public SolrQuery setMltMaxWordLength ( int $maxWordLength )
public SolrQuery setMltMinDocFrequency ( int $minDocFrequency )
public SolrQuery setMltMinTermFrequency ( int $minTermFrequency )
public SolrQuery setMltMinWordLength ( int $minWordLength )
public SolrQuery setOmitHeader ( bool $flag )
public SolrQuery setQuery ( string $query )
public SolrQuery setRows ( int $rows )
public SolrQuery setShowDebugInfo ( bool $flag )
public SolrQuery setStart ( int $start )
public SolrQuery setStats ( bool $flag )
public SolrQuery setTerms ( bool $flag )
public SolrQuery setTermsField ( string $fieldname )
public SolrQuery setTermsIncludeLowerBound ( bool $flag )
public SolrQuery setTermsIncludeUpperBound ( bool $flag )
public SolrQuery setTermsLimit ( int $limit )
public SolrQuery setTermsLowerBound ( string $lowerBound )
public SolrQuery setTermsMaxCount ( int $frequency )
public SolrQuery setTermsMinCount ( int $frequency )
public SolrQuery setTermsPrefix ( string $prefix )
public SolrQuery setTermsReturnRaw ( bool $flag )
public SolrQuery setTermsSort ( int $sortType )
public SolrQuery setTermsUpperBound ( string $upperBound )
public SolrQuery setTimeAllowed ( int $timeAllowed )
/* 继承的方法 */
public SolrModifiableParams::__construct ( void )
public void SolrModifiableParams::__destruct ( void )
}

预定义常量

SolrQuery::ORDER_ASC

Used to specify that the sorting should be in acending order

SolrQuery::ORDER_DESC

Used to specify that the sorting should be in descending order

SolrQuery::FACET_SORT_INDEX

Used to specify that the facet should sort by index

SolrQuery::FACET_SORT_COUNT

Used to specify that the facet should sort by count

SolrQuery::TERMS_SORT_INDEX

Used in the TermsComponent

SolrQuery::TERMS_SORT_COUNT

Used in the TermsComponent

Table of Contents

  • SolrQuery::addExpandFilterQuery — Overrides main filter query, determines which documents to include in the main group.
  • SolrQuery::addExpandSortField — Orders the documents within the expanded groups (expand.sort parameter).
  • SolrQuery::addFacetDateField — Maps to facet.date
  • SolrQuery::addFacetDateOther — Adds another facet.date.other parameter
  • SolrQuery::addFacetField — Adds another field to the facet
  • SolrQuery::addFacetQuery — Adds a facet query
  • SolrQuery::addField — Specifies which fields to return in the result
  • SolrQuery::addFilterQuery — Specifies a filter query
  • SolrQuery::addGroupField — Add a field to be used to group results.
  • SolrQuery::addGroupFunction — Allows grouping results based on the unique values of a function query (group.func parameter).
  • SolrQuery::addGroupQuery — Allows grouping of documents that match the given query.
  • SolrQuery::addGroupSortField — Add a group sort field (group.sort parameter).
  • SolrQuery::addHighlightField — Maps to hl.fl
  • SolrQuery::addMltField — Sets a field to use for similarity
  • SolrQuery::addMltQueryField — Maps to mlt.qf
  • SolrQuery::addSortField — Used to control how the results should be sorted
  • SolrQuery::addStatsFacet — Requests a return of sub results for values within the given facet
  • SolrQuery::addStatsField — Maps to stats.field parameter
  • SolrQuery::collapse — Collapses the result set to a single document per group
  • SolrQuery::__construct — Constructor
  • SolrQuery::__destruct — Destructor
  • SolrQuery::getExpand — Returns true if group expanding is enabled
  • SolrQuery::getExpandFilterQueries — Returns the expand filter queries
  • SolrQuery::getExpandQuery — Returns the expand query expand.q parameter
  • SolrQuery::getExpandRows — Returns The number of rows to display in each group (expand.rows)
  • SolrQuery::getExpandSortFields — Returns an array of fields
  • SolrQuery::getFacet — Returns the value of the facet parameter
  • SolrQuery::getFacetDateEnd — Returns the value for the facet.date.end parameter
  • SolrQuery::getFacetDateFields — Returns all the facet.date fields
  • SolrQuery::getFacetDateGap — Returns the value of the facet.date.gap parameter
  • SolrQuery::getFacetDateHardEnd — Returns the value of the facet.date.hardend parameter
  • SolrQuery::getFacetDateOther — Returns the value for the facet.date.other parameter
  • SolrQuery::getFacetDateStart — Returns the lower bound for the first date range for all date faceting on this field
  • SolrQuery::getFacetFields — Returns all the facet fields
  • SolrQuery::getFacetLimit — Returns the maximum number of constraint counts that should be returned for the facet fields
  • SolrQuery::getFacetMethod — Returns the value of the facet.method parameter
  • SolrQuery::getFacetMinCount — Returns the minimum counts for facet fields should be included in the response
  • SolrQuery::getFacetMissing — Returns the current state of the facet.missing parameter
  • SolrQuery::getFacetOffset — Returns an offset into the list of constraints to be used for pagination
  • SolrQuery::getFacetPrefix — Returns the facet prefix
  • SolrQuery::getFacetQueries — Returns all the facet queries
  • SolrQuery::getFacetSort — Returns the facet sort type
  • SolrQuery::getFields — Returns the list of fields that will be returned in the response
  • SolrQuery::getFilterQueries — Returns an array of filter queries
  • SolrQuery::getGroup — Returns true if grouping is enabled
  • SolrQuery::getGroupCachePercent — Returns group cache percent value
  • SolrQuery::getGroupFacet — Returns the group.facet parameter value
  • SolrQuery::getGroupFields — Returns group fields (group.field parameter values)
  • SolrQuery::getGroupFormat — Returns the group.format value
  • SolrQuery::getGroupFunctions — Returns group functions (group.func parameter values)
  • SolrQuery::getGroupLimit — Returns the group.limit value
  • SolrQuery::getGroupMain — Returns the group.main value
  • SolrQuery::getGroupNGroups — Returns the group.ngroups value
  • SolrQuery::getGroupOffset — Returns the group.offset value
  • SolrQuery::getGroupQueries — Returns all the group.query parameter values
  • SolrQuery::getGroupSortFields — Returns the group.sort value
  • SolrQuery::getGroupTruncate — Returns the group.truncate value
  • SolrQuery::getHighlight — Returns the state of the hl parameter
  • SolrQuery::getHighlightAlternateField — Returns the highlight field to use as backup or default
  • SolrQuery::getHighlightFields — Returns all the fields that Solr should generate highlighted snippets for
  • SolrQuery::getHighlightFormatter — Returns the formatter for the highlighted output
  • SolrQuery::getHighlightFragmenter — Returns the text snippet generator for highlighted text
  • SolrQuery::getHighlightFragsize — Returns the number of characters of fragments to consider for highlighting
  • SolrQuery::getHighlightHighlightMultiTerm — Returns whether or not to enable highlighting for range/wildcard/fuzzy/prefix queries
  • SolrQuery::getHighlightMaxAlternateFieldLength — Returns the maximum number of characters of the field to return
  • SolrQuery::getHighlightMaxAnalyzedChars — Returns the maximum number of characters into a document to look for suitable snippets
  • SolrQuery::getHighlightMergeContiguous — Returns whether or not the collapse contiguous fragments into a single fragment
  • SolrQuery::getHighlightRegexMaxAnalyzedChars — Returns the maximum number of characters from a field when using the regex fragmenter
  • SolrQuery::getHighlightRegexPattern — Returns the regular expression for fragmenting
  • SolrQuery::getHighlightRegexSlop — Returns the deviation factor from the ideal fragment size
  • SolrQuery::getHighlightRequireFieldMatch — Returns if a field will only be highlighted if the query matched in this particular field
  • SolrQuery::getHighlightSimplePost — Returns the text which appears after a highlighted term
  • SolrQuery::getHighlightSimplePre — Returns the text which appears before a highlighted term
  • SolrQuery::getHighlightSnippets — Returns the maximum number of highlighted snippets to generate per field
  • SolrQuery::getHighlightUsePhraseHighlighter — Returns the state of the hl.usePhraseHighlighter parameter
  • SolrQuery::getMlt — Returns whether or not MoreLikeThis results should be enabled
  • SolrQuery::getMltBoost — Returns whether or not the query will be boosted by the interesting term relevance
  • SolrQuery::getMltCount — Returns the number of similar documents to return for each result
  • SolrQuery::getMltFields — Returns all the fields to use for similarity
  • SolrQuery::getMltMaxNumQueryTerms — Returns the maximum number of query terms that will be included in any generated query
  • SolrQuery::getMltMaxNumTokens — Returns the maximum number of tokens to parse in each document field that is not stored with TermVector support
  • SolrQuery::getMltMaxWordLength — Returns the maximum word length above which words will be ignored
  • SolrQuery::getMltMinDocFrequency — Returns the treshold frequency at which words will be ignored which do not occur in at least this many docs
  • SolrQuery::getMltMinTermFrequency — Returns the frequency below which terms will be ignored in the source document
  • SolrQuery::getMltMinWordLength — Returns the minimum word length below which words will be ignored
  • SolrQuery::getMltQueryFields — Returns the query fields and their boosts
  • SolrQuery::getQuery — Returns the main query
  • SolrQuery::getRows — Returns the maximum number of documents
  • SolrQuery::getSortFields — Returns all the sort fields
  • SolrQuery::getStart — Returns the offset in the complete result set
  • SolrQuery::getStats — Returns whether or not stats is enabled
  • SolrQuery::getStatsFacets — Returns all the stats facets that were set
  • SolrQuery::getStatsFields — Returns all the statistics fields
  • SolrQuery::getTerms — Returns whether or not the TermsComponent is enabled
  • SolrQuery::getTermsField — Returns the field from which the terms are retrieved
  • SolrQuery::getTermsIncludeLowerBound — Returns whether or not to include the lower bound in the result set
  • SolrQuery::getTermsIncludeUpperBound — Returns whether or not to include the upper bound term in the result set
  • SolrQuery::getTermsLimit — Returns the maximum number of terms Solr should return
  • SolrQuery::getTermsLowerBound — Returns the term to start at
  • SolrQuery::getTermsMaxCount — Returns the maximum document frequency
  • SolrQuery::getTermsMinCount — Returns the minimum document frequency to return in order to be included
  • SolrQuery::getTermsPrefix — Returns the term prefix
  • SolrQuery::getTermsReturnRaw — Whether or not to return raw characters
  • SolrQuery::getTermsSort — Returns an integer indicating how terms are sorted
  • SolrQuery::getTermsUpperBound — Returns the term to stop at
  • SolrQuery::getTimeAllowed — Returns the time in milliseconds allowed for the query to finish
  • SolrQuery::removeExpandFilterQuery — Removes an expand filter query
  • SolrQuery::removeExpandSortField — Removes an expand sort field from the expand.sort parameter.
  • SolrQuery::removeFacetDateField — Removes one of the facet date fields
  • SolrQuery::removeFacetDateOther — Removes one of the facet.date.other parameters
  • SolrQuery::removeFacetField — Removes one of the facet.date parameters
  • SolrQuery::removeFacetQuery — Removes one of the facet.query parameters
  • SolrQuery::removeField — Removes a field from the list of fields
  • SolrQuery::removeFilterQuery — Removes a filter query
  • SolrQuery::removeHighlightField — Removes one of the fields used for highlighting
  • SolrQuery::removeMltField — Removes one of the moreLikeThis fields
  • SolrQuery::removeMltQueryField — Removes one of the moreLikeThis query fields
  • SolrQuery::removeSortField — Removes one of the sort fields
  • SolrQuery::removeStatsFacet — Removes one of the stats.facet parameters
  • SolrQuery::removeStatsField — Removes one of the stats.field parameters
  • SolrQuery::setEchoHandler — Toggles the echoHandler parameter
  • SolrQuery::setEchoParams — Determines what kind of parameters to include in the response
  • SolrQuery::setExpand — Enables/Disables the Expand Component
  • SolrQuery::setExpandQuery — Sets the expand.q parameter
  • SolrQuery::setExpandRows — Sets the number of rows to display in each group (expand.rows). Server Default 5
  • SolrQuery::setExplainOther — Sets the explainOther common query parameter
  • SolrQuery::setFacet — Maps to the facet parameter. Enables or disables facetting
  • SolrQuery::setFacetDateEnd — Maps to facet.date.end
  • SolrQuery::setFacetDateGap — Maps to facet.date.gap
  • SolrQuery::setFacetDateHardEnd — Maps to facet.date.hardend
  • SolrQuery::setFacetDateStart — Maps to facet.date.start
  • SolrQuery::setFacetEnumCacheMinDefaultFrequency — Sets the minimum document frequency used for determining term count
  • SolrQuery::setFacetLimit — Maps to facet.limit
  • SolrQuery::setFacetMethod — Specifies the type of algorithm to use when faceting a field
  • SolrQuery::setFacetMinCount — Maps to facet.mincount
  • SolrQuery::setFacetMissing — Maps to facet.missing
  • SolrQuery::setFacetOffset — Sets the offset into the list of constraints to allow for pagination
  • SolrQuery::setFacetPrefix — Specifies a string prefix with which to limits the terms on which to facet
  • SolrQuery::setFacetSort — Determines the ordering of the facet field constraints
  • SolrQuery::setGroup — Enable/Disable result grouping (group parameter)
  • SolrQuery::setGroupCachePercent — Enables caching for result grouping
  • SolrQuery::setGroupFacet — Sets group.facet parameter
  • SolrQuery::setGroupFormat — Sets the group format, result structure (group.format parameter).
  • SolrQuery::setGroupLimit — Specifies the number of results to return for each group. The server default value is 1.
  • SolrQuery::setGroupMain — If true, the result of the first field grouping command is used as the main result list in the response, using group.format=simple.
  • SolrQuery::setGroupNGroups — If true, Solr includes the number of groups that have matched the query in the results.
  • SolrQuery::setGroupOffset — Sets the group.offset parameter.
  • SolrQuery::setGroupTruncate — If true, facet counts are based on the most relevant document of each group matching the query.
  • SolrQuery::setHighlight — Enables or disables highlighting
  • SolrQuery::setHighlightAlternateField — Specifies the backup field to use
  • SolrQuery::setHighlightFormatter — Specify a formatter for the highlight output
  • SolrQuery::setHighlightFragmenter — Sets a text snippet generator for highlighted text
  • SolrQuery::setHighlightFragsize — The size of fragments to consider for highlighting
  • SolrQuery::setHighlightHighlightMultiTerm — Use SpanScorer to highlight phrase terms
  • SolrQuery::setHighlightMaxAlternateFieldLength — Sets the maximum number of characters of the field to return
  • SolrQuery::setHighlightMaxAnalyzedChars — Specifies the number of characters into a document to look for suitable snippets
  • SolrQuery::setHighlightMergeContiguous — Whether or not to collapse contiguous fragments into a single fragment
  • SolrQuery::setHighlightRegexMaxAnalyzedChars — Specify the maximum number of characters to analyze
  • SolrQuery::setHighlightRegexPattern — Specify the regular expression for fragmenting
  • SolrQuery::setHighlightRegexSlop — Sets the factor by which the regex fragmenter can stray from the ideal fragment size
  • SolrQuery::setHighlightRequireFieldMatch — Require field matching during highlighting
  • SolrQuery::setHighlightSimplePost — Sets the text which appears after a highlighted term
  • SolrQuery::setHighlightSimplePre — Sets the text which appears before a highlighted term
  • SolrQuery::setHighlightSnippets — Sets the maximum number of highlighted snippets to generate per field
  • SolrQuery::setHighlightUsePhraseHighlighter — Whether to highlight phrase terms only when they appear within the query phrase
  • SolrQuery::setMlt — Enables or disables moreLikeThis
  • SolrQuery::setMltBoost — Set if the query will be boosted by the interesting term relevance
  • SolrQuery::setMltCount — Set the number of similar documents to return for each result
  • SolrQuery::setMltMaxNumQueryTerms — Sets the maximum number of query terms included
  • SolrQuery::setMltMaxNumTokens — Specifies the maximum number of tokens to parse
  • SolrQuery::setMltMaxWordLength — Sets the maximum word length
  • SolrQuery::setMltMinDocFrequency — Sets the mltMinDoc frequency
  • SolrQuery::setMltMinTermFrequency — Sets the frequency below which terms will be ignored in the source docs
  • SolrQuery::setMltMinWordLength — Sets the minimum word length
  • SolrQuery::setOmitHeader — Exclude the header from the returned results
  • SolrQuery::setQuery — Sets the search query
  • SolrQuery::setRows — Specifies the maximum number of rows to return in the result
  • SolrQuery::setShowDebugInfo — Flag to show debug information
  • SolrQuery::setStart — Specifies the number of rows to skip
  • SolrQuery::setStats — Enables or disables the Stats component
  • SolrQuery::setTerms — Enables or disables the TermsComponent
  • SolrQuery::setTermsField — Sets the name of the field to get the Terms from
  • SolrQuery::setTermsIncludeLowerBound — Include the lower bound term in the result set
  • SolrQuery::setTermsIncludeUpperBound — Include the upper bound term in the result set
  • SolrQuery::setTermsLimit — Sets the maximum number of terms to return
  • SolrQuery::setTermsLowerBound — Specifies the Term to start from
  • SolrQuery::setTermsMaxCount — Sets the maximum document frequency
  • SolrQuery::setTermsMinCount — Sets the minimum document frequency
  • SolrQuery::setTermsPrefix — Restrict matches to terms that start with the prefix
  • SolrQuery::setTermsReturnRaw — Return the raw characters of the indexed term
  • SolrQuery::setTermsSort — Specifies how to sort the returned terms
  • SolrQuery::setTermsUpperBound — Sets the term to stop at
  • SolrQuery::setTimeAllowed — The time allowed for search to finish
SolrModifiableParams::__destruct
SolrQuery::addExpandFilterQuery
Solr


Overrides main filter query, determines which documents to include in the main group.

SolrQuery
SolrQuery::addExpandSortField
SolrQuery
PHP Manual

SolrQuery::addExpandFilterQuery

(PECL solr >= 2.2.0)

SolrQuery::addExpandFilterQuery — Overrides main filter query, determines which documents to include in the main group.

说明

public SolrQuery SolrQuery::addExpandFilterQuery ( string $fq )

Overrides main filter query, determines which documents to include in the main group.

参数

fq

返回值

SolrQuery

参见

  • SolrQuery::setExpand() - Enables/Disables the Expand Component
  • SolrQuery::addExpandSortField() - Orders the documents within the expanded groups (expand.sort parameter).
  • SolrQuery::removeExpandSortField() - Removes an expand sort field from the expand.sort parameter.
  • SolrQuery::setExpandRows() - Sets the number of rows to display in each group (expand.rows). Server Default 5
  • SolrQuery::setExpandQuery() - Sets the expand.q parameter
  • SolrQuery::removeExpandFilterQuery() - Removes an expand filter query
SolrQuery
SolrQuery::addExpandSortField
SolrQuery


Orders the documents within the expanded groups (expand.sort parameter).

SolrQuery::addExpandFilterQuery
SolrQuery::addFacetDateField
SolrQuery
PHP Manual

SolrQuery::addExpandSortField

(PECL solr >= 2.2.0)

SolrQuery::addExpandSortField — Orders the documents within the expanded groups (expand.sort parameter).

说明

public SolrQuery SolrQuery::addExpandSortField ( string $field [, string $order ] )

Orders the documents within the expanded groups (expand.sort parameter).

参数

field

field name

order

Order ASC/DESC, utilizes SolrQuery::ORDER_* constants.

Default: SolrQuery::ORDER_DESC

返回值

SolrQuery

参见

  • SolrQuery::setExpand() - Enables/Disables the Expand Component
  • SolrQuery::removeExpandSortField() - Removes an expand sort field from the expand.sort parameter.
  • SolrQuery::setExpandRows() - Sets the number of rows to display in each group (expand.rows). Server Default 5
  • SolrQuery::setExpandQuery() - Sets the expand.q parameter
  • SolrQuery::addExpandFilterQuery() - Overrides main filter query, determines which documents to include in the main group.
  • SolrQuery::removeExpandFilterQuery() - Removes an expand filter query
SolrQuery::addExpandFilterQuery
SolrQuery::addFacetDateField
SolrQuery


Maps to facet.date

SolrQuery::addExpandSortField
SolrQuery::addFacetDateOther
SolrQuery
PHP Manual

SolrQuery::addFacetDateField

(PECL solr >= 0.9.2)

SolrQuery::addFacetDateField — Maps to facet.date

说明

public SolrQuery SolrQuery::addFacetDateField ( string $dateField )

This method allows you to specify a field which should be treated as a facet.

It can be used multiple times with different field names to indicate multiple facet fields

参数

dateField

The name of the date field.

返回值

Returns a SolrQuery object.

SolrQuery::addExpandSortField
SolrQuery::addFacetDateOther
SolrQuery


Adds another facet.date.other parameter

SolrQuery::addFacetDateField
SolrQuery::addFacetField
SolrQuery
PHP Manual

SolrQuery::addFacetDateOther

(PECL solr >= 0.9.2)

SolrQuery::addFacetDateOther — Adds another facet.date.other parameter

说明

public SolrQuery SolrQuery::addFacetDateOther ( string $value [, string $field_override ] )

Sets the facet.date.other parameter. Accepts an optional field override

参数

value

The value to use.

field_override

The field name for the override.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::addFacetDateField
SolrQuery::addFacetField
SolrQuery


Adds another field to the facet

SolrQuery::addFacetDateOther
SolrQuery::addFacetQuery
SolrQuery
PHP Manual

SolrQuery::addFacetField

(PECL solr >= 0.9.2)

SolrQuery::addFacetField — Adds another field to the facet

说明

public SolrQuery SolrQuery::addFacetField ( string $field )

Adds another field to the facet

参数

field

The name of the field

返回值

Returns the current SolrQuery object, if the return value is used.

范例

Example #1 SolrQuery::addFacetField() example

<?php

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);

$query = new SolrQuery();

$query->setQuery($query);

$query->addField('price')->addField('color');

$query->setFacet(true);

$query->addFacetField('price')->addFacetField('color');

$query_response = $client->query($query);

$response = $query_response->getResponse();

print_r($response['facet_counts']['facet_fields']);

?>

以上例程的输出类似于：

SolrObject Object
(
    [color] => SolrObject Object
        (
            [blue] => 20
            [green] => 100
        )

)

SolrQuery::addFacetDateOther
SolrQuery::addFacetQuery
SolrQuery


Adds a facet query

SolrQuery::addFacetField
SolrQuery::addField
SolrQuery
PHP Manual

SolrQuery::addFacetQuery

(PECL solr >= 0.9.2)

SolrQuery::addFacetQuery — Adds a facet query

说明

public SolrQuery SolrQuery::addFacetQuery ( string $facetQuery )

Adds a facet query

参数

facetQuery

The facet query

返回值

Returns the current SolrQuery object, if the return value is used.

范例

Example #1 SolrQuery::addFacetField() example

<?php

$options = array
(
        'hostname' => SOLR_SERVER_HOSTNAME,
        'login'    => SOLR_SERVER_USERNAME,
        'password' => SOLR_SERVER_PASSWORD,
        'port'     => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);

$query = new SolrQuery('*:*');

$query->setFacet(true);

$query->addFacetQuery('price:[* TO 500]')->addFacetQuery('price:[500 TO *]');

$query_response = $client->query($query);

$response = $query_response->getResponse();

print_r($response->facet_counts->facet_queries);

?>

以上例程的输出类似于：

SolrObject Object
(
    [price:[* TO 500]] => 14
    [price:[500 TO *]] => 2
)

SolrQuery::addFacetField
SolrQuery::addField
SolrQuery


Specifies which fields to return in the result

SolrQuery::addFacetQuery
SolrQuery::addFilterQuery
SolrQuery
PHP Manual

SolrQuery::addField

(PECL solr >= 0.9.2)

SolrQuery::addField — Specifies which fields to return in the result

说明

public SolrQuery SolrQuery::addField ( string $field )

This method is used to used to specify a set of fields to return, thereby restricting the amount of data returned in the response.

It should be called multiple time, once for each field name.

参数

field

The name of the field

返回值

Returns the current SolrQuery object

SolrQuery::addFacetQuery
SolrQuery::addFilterQuery
SolrQuery


Specifies a filter query

SolrQuery::addField
SolrQuery::addGroupField
SolrQuery
PHP Manual

SolrQuery::addFilterQuery

(PECL solr >= 0.9.2)

SolrQuery::addFilterQuery — Specifies a filter query

说明

public SolrQuery SolrQuery::addFilterQuery ( string $fq )

Specifies a filter query

参数

fq

The filter query

返回值

Returns the current SolrQuery object.

范例

Example #1 SolrQuery::addFilterQuery() example

<?php

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
);

$client = new SolrClient($options);

$query = new SolrQuery();

$query->setQuery('*:*');

$query->addFilterQuery('color:blue,green');

$query_response = $client->query($query);

$response = $query_response->getResponse();

print_r($response['facet_counts']['facet_fields']);

?>

以上例程的输出类似于：

 &fq=color:blue,green

SolrQuery::addField
SolrQuery::addGroupField
SolrQuery


Add a field to be used to group results.

SolrQuery::addFilterQuery
SolrQuery::addGroupFunction
SolrQuery
PHP Manual

SolrQuery::addGroupField

(PECL solr >= 2.2.0)

SolrQuery::addGroupField — Add a field to be used to group results.

说明

public SolrQuery SolrQuery::addGroupField ( string $value )

The name of the field by which to group results. The field must be single-valued, and either be indexed or a field type that has a value source and works in a function query, such as ExternalFileField. It must also be a string-based field, such as StrField or TextField Uses group.field parameter

参数

value

参见

  • SolrQuery::setGroup() - Enable/Disable result grouping (group parameter)
  • SolrQuery::addGroupFunction() - Allows grouping results based on the unique values of a function query (group.func parameter).
  • SolrQuery::addGroupQuery() - Allows grouping of documents that match the given query.
  • SolrQuery::addGroupSortField() - Add a group sort field (group.sort parameter).
  • SolrQuery::setGroupFacet() - Sets group.facet parameter
  • SolrQuery::setGroupOffset() - Sets the group.offset parameter.
  • SolrQuery::setGroupLimit() - Specifies the number of results to return for each group. The server default value is 1.
  • SolrQuery::setGroupMain() - If true, the result of the first field grouping command is used as the main result list in the response, using group.format=simple.
  • SolrQuery::setGroupNGroups() - If true, Solr includes the number of groups that have matched the query in the results.
  • SolrQuery::setGroupTruncate() - If true, facet counts are based on the most relevant document of each group matching the query.
  • SolrQuery::setGroupFormat() - Sets the group format, result structure (group.format parameter).
  • SolrQuery::setGroupCachePercent() - Enables caching for result grouping
SolrQuery::addFilterQuery
SolrQuery::addGroupFunction
SolrQuery


Allows grouping results based on the unique values of a function query (group.func parameter).

SolrQuery::addGroupField
SolrQuery::addGroupQuery
SolrQuery
PHP Manual

SolrQuery::addGroupFunction

(PECL solr >= 2.2.0)

SolrQuery::addGroupFunction — Allows grouping results based on the unique values of a function query (group.func parameter).

说明

public SolrQuery SolrQuery::addGroupFunction ( string $value )

Adds a group function (group.func parameter) Allows grouping results based on the unique values of a function query.

参数

value

返回值

SolrQuery

参见

  • SolrQuery::setGroup() - Enable/Disable result grouping (group parameter)
  • SolrQuery::addGroupField() - Add a field to be used to group results.
  • SolrQuery::addGroupQuery() - Allows grouping of documents that match the given query.
  • SolrQuery::addGroupSortField() - Add a group sort field (group.sort parameter).
  • SolrQuery::setGroupFacet() - Sets group.facet parameter
  • SolrQuery::setGroupOffset() - Sets the group.offset parameter.
  • SolrQuery::setGroupLimit() - Specifies the number of results to return for each group. The server default value is 1.
  • SolrQuery::setGroupMain() - If true, the result of the first field grouping command is used as the main result list in the response, using group.format=simple.
  • SolrQuery::setGroupNGroups() - If true, Solr includes the number of groups that have matched the query in the results.
  • SolrQuery::setGroupTruncate() - If true, facet counts are based on the most relevant document of each group matching the query.
  • SolrQuery::setGroupFormat() - Sets the group format, result structure (group.format parameter).
  • SolrQuery::setGroupCachePercent() - Enables caching for result grouping
SolrQuery::addGroupField
SolrQuery::addGroupQuery
SolrQuery


Allows grouping of documents that match the given query.

SolrQuery::addGroupFunction
SolrQuery::addGroupSortField
SolrQuery
PHP Manual

SolrQuery::addGroupQuery

(PECL solr >= 2.2.0)

SolrQuery::addGroupQuery — Allows grouping of documents that match the given query.

说明

public SolrQuery SolrQuery::addGroupQuery ( string $value )

Allows grouping of documents that match the given query. Adds query to the group.query parameter

参数

value

返回值

SolrQuery

参见

  • SolrQuery::setGroup() - Enable/Disable result grouping (group parameter)
  • SolrQuery::addGroupField() - Add a field to be used to group results.
  • SolrQuery::addGroupFunction() - Allows grouping results based on the unique values of a function query (group.func parameter).
  • SolrQuery::addGroupSortField() - Add a group sort field (group.sort parameter).
  • SolrQuery::setGroupFacet() - Sets group.facet parameter
  • SolrQuery::setGroupOffset() - Sets the group.offset parameter.
  • SolrQuery::setGroupLimit() - Specifies the number of results to return for each group. The server default value is 1.
  • SolrQuery::setGroupMain() - If true, the result of the first field grouping command is used as the main result list in the response, using group.format=simple.
  • SolrQuery::setGroupNGroups() - If true, Solr includes the number of groups that have matched the query in the results.
  • SolrQuery::setGroupTruncate() - If true, facet counts are based on the most relevant document of each group matching the query.
  • SolrQuery::setGroupFormat() - Sets the group format, result structure (group.format parameter).
  • SolrQuery::setGroupCachePercent() - Enables caching for result grouping
SolrQuery::addGroupFunction
SolrQuery::addGroupSortField
SolrQuery


Add a group sort field (group.sort parameter).

SolrQuery::addGroupQuery
SolrQuery::addHighlightField
SolrQuery
PHP Manual

SolrQuery::addGroupSortField

(PECL solr >= 2.2.0)

SolrQuery::addGroupSortField — Add a group sort field (group.sort parameter).

说明

public SolrQuery SolrQuery::addGroupSortField ( string $field [, integer $order ] )

Allow sorting group documents, using group sort field (group.sort parameter).

参数

field

Field name

order

Order ASC/DESC, utilizes SolrQuery::ORDER_* constants

返回值

范例

Example #1 SolrQuery::addGroupSortField() example

<?php

$solrQuery = new SolrQuery('*:*');
$solrQuery
    ->setGroup(true)
    ->addGroupSortField('price', SolrQuery::ORDER_ASC);

echo $solrQuery;
?>

以上例程的输出类似于：

q=*:*&group=true&group.sort=price asc

参见

  • SolrQuery::setGroup() - Enable/Disable result grouping (group parameter)
  • SolrQuery::addGroupField() - Add a field to be used to group results.
  • SolrQuery::addGroupFunction() - Allows grouping results based on the unique values of a function query (group.func parameter).
  • SolrQuery::addGroupQuery() - Allows grouping of documents that match the given query.
  • SolrQuery::setGroupFacet() - Sets group.facet parameter
  • SolrQuery::setGroupOffset() - Sets the group.offset parameter.
  • SolrQuery::setGroupLimit() - Specifies the number of results to return for each group. The server default value is 1.
  • SolrQuery::setGroupMain() - If true, the result of the first field grouping command is used as the main result list in the response, using group.format=simple.
  • SolrQuery::setGroupNGroups() - If true, Solr includes the number of groups that have matched the query in the results.
  • SolrQuery::setGroupTruncate() - If true, facet counts are based on the most relevant document of each group matching the query.
  • SolrQuery::setGroupFormat() - Sets the group format, result structure (group.format parameter).
  • SolrQuery::setGroupCachePercent() - Enables caching for result grouping
SolrQuery::addGroupQuery
SolrQuery::addHighlightField
SolrQuery


Maps to hl.fl

SolrQuery::addGroupSortField
SolrQuery::addMltField
SolrQuery
PHP Manual

SolrQuery::addHighlightField

(PECL solr >= 0.9.2)

SolrQuery::addHighlightField — Maps to hl.fl

说明

public SolrQuery SolrQuery::addHighlightField ( string $field )

Maps to hl.fl. This is used to specify that highlighted snippets should be generated for a particular field

参数

field

Name of the field

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::addGroupSortField
SolrQuery::addMltField
SolrQuery


Sets a field to use for similarity

SolrQuery::addHighlightField
SolrQuery::addMltQueryField
SolrQuery
PHP Manual

SolrQuery::addMltField

(PECL solr >= 0.9.2)

SolrQuery::addMltField — Sets a field to use for similarity

说明

public SolrQuery SolrQuery::addMltField ( string $field )

Maps to mlt.fl. It specifies that a field should be used for similarity.

参数

field

The name of the field

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::addHighlightField
SolrQuery::addMltQueryField
SolrQuery


Maps to mlt.qf

SolrQuery::addMltField
SolrQuery::addSortField
SolrQuery
PHP Manual

SolrQuery::addMltQueryField

(PECL solr >= 0.9.2)

SolrQuery::addMltQueryField — Maps to mlt.qf

说明

public SolrQuery SolrQuery::addMltQueryField ( string $field , float $boost )

Maps to mlt.qf. It is used to specify query fields and their boosts

参数

field

The name of the field

boost

Its boost value

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::addMltField
SolrQuery::addSortField
SolrQuery


Used to control how the results should be sorted

SolrQuery::addMltQueryField
SolrQuery::addStatsFacet
SolrQuery
PHP Manual

SolrQuery::addSortField

(PECL solr >= 0.9.2)

SolrQuery::addSortField — Used to control how the results should be sorted

说明

public SolrQuery SolrQuery::addSortField ( string $field [, int $order = SolrQuery::ORDER_DESC ] )

Used to control how the results should be sorted.

参数

field

The name of the field

order

The sort direction. This should be either SolrQuery::ORDER_ASC or SolrQuery::ORDER_DESC.

返回值

Returns the current SolrQuery object.

SolrQuery::addMltQueryField
SolrQuery::addStatsFacet
SolrQuery


Requests a return of sub results for values within the given facet

SolrQuery::addSortField
SolrQuery::addStatsField
SolrQuery
PHP Manual

SolrQuery::addStatsFacet

(PECL solr >= 0.9.2)

SolrQuery::addStatsFacet — Requests a return of sub results for values within the given facet

说明

public SolrQuery SolrQuery::addStatsFacet ( string $field )

Requests a return of sub results for values within the given facet. Maps to the stats.facet field

参数

field

The name of the field

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::addSortField
SolrQuery::addStatsField
SolrQuery


Maps to stats.field parameter

SolrQuery::addStatsFacet
SolrQuery::collapse
SolrQuery
PHP Manual

SolrQuery::addStatsField

(PECL solr >= 0.9.2)

SolrQuery::addStatsField — Maps to stats.field parameter

说明

public SolrQuery SolrQuery::addStatsField ( string $field )

Maps to stats.field parameter This methods adds another stats.field parameter.

参数

field

The name of the field

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::addStatsFacet
SolrQuery::collapse
SolrQuery


Collapses the result set to a single document per group

SolrQuery::addStatsField
SolrQuery::__construct
SolrQuery
PHP Manual

SolrQuery::collapse

(No version information available, might only be in Git)

SolrQuery::collapse — Collapses the result set to a single document per group

说明

public SolrQuery SolrQuery::collapse ( SolrCollapseFunction $collapseFunction )

Collapses the result set to a single document per group before it forwards the result set to the rest of the search components.

So all downstream components (faceting, highlighting, etc...) will work with the collapsed result set.

参数

collapseFunction

返回值

Returns the current SolrQuery object

范例

Example #1 SolrQuery::collapse() example

<?php

include "bootstrap.php";

$options = array
(
        'hostname' => SOLR_SERVER_HOSTNAME,
        'login'    => SOLR_SERVER_USERNAME,
        'password' => SOLR_SERVER_PASSWORD,
        'port'     => SOLR_SERVER_PORT,
        'path'     => SOLR_SERVER_PATH
);

$client = new SolrClient($options);

$query = new SolrQuery('*:*');

$collapseFunction = new SolrCollapseFunction('manu_id_s');

$collapseFunction
->setSize(2)
->setNullPolicy(SolrCollapseFunction::NULLPOLICY_IGNORE);

$query
->collapse($collapseFunction)
->setRows(4);

$queryResponse = $client->query($query);

$response = $queryResponse->getResponse();

print_r($response);

?>

以上例程的输出类似于：

SolrObject Object
(
    [responseHeader] => SolrObject Object
        (
            [status] => 0
            [QTime] => 1
            [params] => SolrObject Object
                (
                    [q] => *:*
                    [indent] => on
                    [fq] => {!collapse field=manu_id_s size=2 nullPolicy=ignore}
                    [rows] => 4
                    [version] => 2.2
                    [wt] => xml
                )

        )

    [response] => SolrObject Object
        (
            [numFound] => 14
            [start] => 0
            [docs] => Array
                (
                    [0] => SolrObject Object
                        (
                            [id] => SP2514N
                            [name] => Array
                                (
                                    [0] => Samsung SpinPoint P120 SP2514N - hard drive - 250 GB - ATA-133
                                )

                            [manu] => Array
                                (
                                    [0] => Samsung Electronics Co. Ltd.
                                )

                            [manu_id_s] => samsung
                            [cat] => Array
                                (
                                    [0] => electronics
                                    [1] => hard drive
                                )

                            [features] => Array
                                (
                                    [0] => 7200RPM, 8MB cache, IDE Ultra ATA-133
                                    [1] => NoiseGuard, SilentSeek technology, Fluid Dynamic Bearing (FDB) motor
                                )

                            [price] => Array
                                (
                                    [0] => 92
                                )

                            [popularity] => Array
                                (
                                    [0] => 6
                                )

                            [inStock] => Array
                                (
                                    [0] => 1
                                )

                            [manufacturedate_dt] => 2006-02-13T15:26:37Z
                            [store] => Array
                                (
                                    [0] => 35.0752,-97.032
                                )

                            [_version_] => 1510294336412057600
                        )

                    [1] => SolrObject Object
                        (
                            [id] => 6H500F0
                            [name] => Array
                                (
                                    [0] => Maxtor DiamondMax 11 - hard drive - 500 GB - SATA-300
                                )

                            [manu] => Array
                                (
                                    [0] => Maxtor Corp.
                                )

                            [manu_id_s] => maxtor
                            [cat] => Array
                                (
                                    [0] => electronics
                                    [1] => hard drive
                                )

                            [features] => Array
                                (
                                    [0] => SATA 3.0Gb/s, NCQ
                                    [1] => 8.5ms seek
                                    [2] => 16MB cache
                                )

                            [price] => Array
                                (
                                    [0] => 350
                                )

                            [popularity] => Array
                                (
                                    [0] => 6
                                )

                            [inStock] => Array
                                (
                                    [0] => 1
                                )

                            [store] => Array
                                (
                                    [0] => 45.17614,-93.87341
                                )

                            [manufacturedate_dt] => 2006-02-13T15:26:37Z
                            [_version_] => 1510294336449806336
                        )

                    [2] => SolrObject Object
                        (
                            [id] => F8V7067-APL-KIT
                            [name] => Array
                                (
                                    [0] => Belkin Mobile Power Cord for iPod w/ Dock
                                )

                            [manu] => Array
                                (
                                    [0] => Belkin
                                )

                            [manu_id_s] => belkin
                            [cat] => Array
                                (
                                    [0] => electronics
                                    [1] => connector
                                )

                            [features] => Array
                                (
                                    [0] => car power adapter, white
                                )

                            [weight] => Array
                                (
                                    [0] => 4
                                )

                            [price] => Array
                                (
                                    [0] => 19.95
                                )

                            [popularity] => Array
                                (
                                    [0] => 1
                                )

                            [inStock] => Array
                                (
                                    [0] =>
                                )

                            [store] => Array
                                (
                                    [0] => 45.18014,-93.87741
                                )

                            [manufacturedate_dt] => 2005-08-01T16:30:25Z
                            [_version_] => 1510294336458194944
                        )

                    [3] => SolrObject Object
                        (
                            [id] => MA147LL/A
                            [name] => Array
                                (
                                    [0] => Apple 60 GB iPod with Video Playback Black
                                )

                            [manu] => Array
                                (
                                    [0] => Apple Computer Inc.
                                )

                            [manu_id_s] => apple
                            [cat] => Array
                                (
                                    [0] => electronics
                                    [1] => music
                                )

                            [features] => Array
                                (
                                    [0] => iTunes, Podcasts, Audiobooks
                                    [1] => Stores up to 15,000 songs, 25,000 photos, or 150 hours of video
                                    [2] => 2.5-inch, 320x240 color TFT LCD display with LED backlight
                                    [3] => Up to 20 hours of battery life
                                    [4] => Plays AAC, MP3, WAV, AIFF, Audible, Apple Lossless, H.264 video
                                    [5] => Notes, Calendar, Phone book, Hold button, Date display, Photo wallet, Built-in games, JPEG photo playback, Upgradeable firmware, USB 2.0 compatibility, Playback speed control, Rechargeable capability, Battery level indication
                                )

                            [includes] => Array
                                (
                                    [0] => earbud headphones, USB cable
                                )

                            [weight] => Array
                                (
                                    [0] => 5.5
                                )

                            [price] => Array
                                (
                                    [0] => 399
                                )

                            [popularity] => Array
                                (
                                    [0] => 10
                                )

                            [inStock] => Array
                                (
                                    [0] => 1
                                )

                            [store] => Array
                                (
                                    [0] => 37.7752,-100.0232
                                )

                            [manufacturedate_dt] => 2005-10-12T08:00:00Z
                            [_version_] => 1510294336562003968
                        )

                )

        )

)
SolrQuery::addStatsField
SolrQuery::__construct
SolrQuery


Constructor

SolrQuery::collapse
SolrQuery::__destruct
SolrQuery
PHP Manual

SolrQuery::__construct

(PECL solr >= 0.9.2)

SolrQuery::__construct — Constructor

说明

public SolrQuery::__construct ([ string $q ] )

Constructor.

参数

q

Optional search query

返回值

None

错误／异常

Emits SolrIllegalArgumentException in case of an invalid parameter was passed.

更新日志

版本 | 说明
2.0.0 | If q was invalid, then a SolrIllegalArgumentException is now thrown. Previously an error was emitted.

SolrQuery::collapse
SolrQuery::__destruct
SolrQuery


Destructor

SolrQuery::__construct
SolrQuery::getExpand
SolrQuery
PHP Manual

SolrQuery::__destruct

(PECL solr >= 0.9.2)

SolrQuery::__destruct — Destructor

说明

public void SolrQuery::__destruct ( void )

Destructor

参数

此函数没有参数。

返回值

None.

SolrQuery::__construct
SolrQuery::getExpand
SolrQuery


Returns true if group expanding is enabled

SolrQuery::__destruct
SolrQuery::getExpandFilterQueries
SolrQuery
PHP Manual

SolrQuery::getExpand

(PECL solr >= 2.2.0)

SolrQuery::getExpand — Returns true if group expanding is enabled

说明

public bool SolrQuery::getExpand ( void )

Returns TRUE if group expanding is enabled

SolrQuery::__destruct
SolrQuery::getExpandFilterQueries
SolrQuery


Returns the expand filter queries

SolrQuery::getExpand
SolrQuery::getExpandQuery
SolrQuery
PHP Manual

SolrQuery::getExpandFilterQueries

(PECL solr >= 2.2.0)

SolrQuery::getExpandFilterQueries — Returns the expand filter queries

说明

public array SolrQuery::getExpandFilterQueries ( void )

Returns the expand filter queries

SolrQuery::getExpand
SolrQuery::getExpandQuery
SolrQuery


Returns the expand query expand.q parameter

SolrQuery::getExpandFilterQueries
SolrQuery::getExpandRows
SolrQuery
PHP Manual

SolrQuery::getExpandQuery

(PECL solr >= 2.2.0)

SolrQuery::getExpandQuery — Returns the expand query expand.q parameter

说明

public array SolrQuery::getExpandQuery ( void )

Returns the expand query expand.q parameter

SolrQuery::getExpandFilterQueries
SolrQuery::getExpandRows
SolrQuery


Returns The number of rows to display in each group (expand.rows)

SolrQuery::getExpandQuery
SolrQuery::getExpandSortFields
SolrQuery
PHP Manual

SolrQuery::getExpandRows

(PECL solr >= 2.2.0)

SolrQuery::getExpandRows — Returns The number of rows to display in each group (expand.rows)

说明

public integer SolrQuery::getExpandRows ( void )

Returns The number of rows to display in each group (expand.rows)

SolrQuery::getExpandQuery
SolrQuery::getExpandSortFields
SolrQuery


Returns an array of fields

SolrQuery::getExpandRows
SolrQuery::getFacet
SolrQuery
PHP Manual

SolrQuery::getExpandSortFields

(PECL solr >= 2.2.0)

SolrQuery::getExpandSortFields — Returns an array of fields

说明

public array SolrQuery::getExpandSortFields ( void )

Returns an array of fields

SolrQuery::getExpandRows
SolrQuery::getFacet
SolrQuery


Returns the value of the facet parameter

SolrQuery::getExpandSortFields
SolrQuery::getFacetDateEnd
SolrQuery
PHP Manual

SolrQuery::getFacet

(PECL solr >= 0.9.2)

SolrQuery::getFacet — Returns the value of the facet parameter

说明

public bool SolrQuery::getFacet ( void )

Returns the value of the facet parameter.

参数

此函数没有参数。

返回值

Returns a boolean on success and NULL if not set

SolrQuery::getExpandSortFields
SolrQuery::getFacetDateEnd
SolrQuery


Returns the value for the facet.date.end parameter

SolrQuery::getFacet
SolrQuery::getFacetDateFields
SolrQuery
PHP Manual

SolrQuery::getFacetDateEnd

(PECL solr >= 0.9.2)

SolrQuery::getFacetDateEnd — Returns the value for the facet.date.end parameter

说明

public string SolrQuery::getFacetDateEnd ([ string $field_override ] )

Returns the value for the facet.date.end parameter. This method accepts an optional field override

参数

field_override

The name of the field

返回值

Returns a string on success and NULL if not set

SolrQuery::getFacet
SolrQuery::getFacetDateFields
SolrQuery


Returns all the facet.date fields

SolrQuery::getFacetDateEnd
SolrQuery::getFacetDateGap
SolrQuery
PHP Manual

SolrQuery::getFacetDateFields

(PECL solr >= 0.9.2)

SolrQuery::getFacetDateFields — Returns all the facet.date fields

说明

public array SolrQuery::getFacetDateFields ( void )

Returns all the facet.date fields

参数

此函数没有参数。

返回值

Returns all the facet.date fields as an array or NULL if none was set

SolrQuery::getFacetDateEnd
SolrQuery::getFacetDateGap
SolrQuery


Returns the value of the facet.date.gap parameter

SolrQuery::getFacetDateFields
SolrQuery::getFacetDateHardEnd
SolrQuery
PHP Manual

SolrQuery::getFacetDateGap

(PECL solr >= 0.9.2)

SolrQuery::getFacetDateGap — Returns the value of the facet.date.gap parameter

说明

public string SolrQuery::getFacetDateGap ([ string $field_override ] )

Returns the value of the facet.date.gap parameter. It accepts an optional field override

参数

field_override

The name of the field

返回值

Returns a string on success and NULL if not set

SolrQuery::getFacetDateFields
SolrQuery::getFacetDateHardEnd
SolrQuery


Returns the value of the facet.date.hardend parameter

SolrQuery::getFacetDateGap
SolrQuery::getFacetDateOther
SolrQuery
PHP Manual

SolrQuery::getFacetDateHardEnd

(PECL solr >= 0.9.2)

SolrQuery::getFacetDateHardEnd — Returns the value of the facet.date.hardend parameter

说明

public string SolrQuery::getFacetDateHardEnd ([ string $field_override ] )

Returns the value of the facet.date.hardend parameter. Accepts an optional field override

参数

field_override

The name of the field

返回值

Returns a string on success and NULL if not set

SolrQuery::getFacetDateGap
SolrQuery::getFacetDateOther
SolrQuery


Returns the value for the facet.date.other parameter

SolrQuery::getFacetDateHardEnd
SolrQuery::getFacetDateStart
SolrQuery
PHP Manual

SolrQuery::getFacetDateOther

(PECL solr >= 0.9.2)

SolrQuery::getFacetDateOther — Returns the value for the facet.date.other parameter

说明

public array SolrQuery::getFacetDateOther ([ string $field_override ] )

Returns the value for the facet.date.other parameter. This method accepts an optional field override.

参数

field_override

The name of the field

返回值

Returns a string on success and NULL if not set.

SolrQuery::getFacetDateHardEnd
SolrQuery::getFacetDateStart
SolrQuery


Returns the lower bound for the first date range for all date faceting on this field

SolrQuery::getFacetDateOther
SolrQuery::getFacetFields
SolrQuery
PHP Manual

SolrQuery::getFacetDateStart

(PECL solr >= 0.9.2)

SolrQuery::getFacetDateStart — Returns the lower bound for the first date range for all date faceting on this field

说明

public string SolrQuery::getFacetDateStart ([ string $field_override ] )

Returns the lower bound for the first date range for all date faceting on this field. Accepts an optional field override

参数

field_override

The name of the field

返回值

Returns a string on success and NULL if not set

SolrQuery::getFacetDateOther
SolrQuery::getFacetFields
SolrQuery


Returns all the facet fields

SolrQuery::getFacetDateStart
SolrQuery::getFacetLimit
SolrQuery
PHP Manual

SolrQuery::getFacetFields

(PECL solr >= 0.9.2)

SolrQuery::getFacetFields — Returns all the facet fields

说明

public array SolrQuery::getFacetFields ( void )

Returns all the facet fields

参数

此函数没有参数。

返回值

Returns an array of all the fields and NULL if none was set

SolrQuery::getFacetDateStart
SolrQuery::getFacetLimit
SolrQuery


Returns the maximum number of constraint counts that should be returned for the facet fields

SolrQuery::getFacetFields
SolrQuery::getFacetMethod
SolrQuery
PHP Manual

SolrQuery::getFacetLimit

(PECL solr >= 0.9.2)

SolrQuery::getFacetLimit — Returns the maximum number of constraint counts that should be returned for the facet fields

说明

public int SolrQuery::getFacetLimit ([ string $field_override ] )

Returns the maximum number of constraint counts that should be returned for the facet fields. This method accepts an optional field override

参数

field_override

The name of the field to override for

返回值

Returns an integer on success and NULL if not set

SolrQuery::getFacetFields
SolrQuery::getFacetMethod
SolrQuery


Returns the value of the facet.method parameter

SolrQuery::getFacetLimit
SolrQuery::getFacetMinCount
SolrQuery
PHP Manual

SolrQuery::getFacetMethod

(PECL solr >= 0.9.2)

SolrQuery::getFacetMethod — Returns the value of the facet.method parameter

说明

public string SolrQuery::getFacetMethod ([ string $field_override ] )

Returns the value of the facet.method parameter. This accepts an optional field override.

参数

field_override

The name of the field

返回值

Returns a string on success and NULL if not set

SolrQuery::getFacetLimit
SolrQuery::getFacetMinCount
SolrQuery


Returns the minimum counts for facet fields should be included in the response

SolrQuery::getFacetMethod
SolrQuery::getFacetMissing
SolrQuery
PHP Manual

SolrQuery::getFacetMinCount

(PECL solr >= 0.9.2)

SolrQuery::getFacetMinCount — Returns the minimum counts for facet fields should be included in the response

说明

public int SolrQuery::getFacetMinCount ([ string $field_override ] )

Returns the minimum counts for facet fields should be included in the response. It accepts an optional field override

参数

field_override

The name of the field

返回值

Returns an integer on success and NULL if not set

SolrQuery::getFacetMethod
SolrQuery::getFacetMissing
SolrQuery


Returns the current state of the facet.missing parameter

SolrQuery::getFacetMinCount
SolrQuery::getFacetOffset
SolrQuery
PHP Manual

SolrQuery::getFacetMissing

(PECL solr >= 0.9.2)

SolrQuery::getFacetMissing — Returns the current state of the facet.missing parameter

说明

public bool SolrQuery::getFacetMissing ([ string $field_override ] )

Returns the current state of the facet.missing parameter. This accepts an optional field override

参数

field_override

The name of the field

返回值

Returns a boolean on success and NULL if not set

SolrQuery::getFacetMinCount
SolrQuery::getFacetOffset
SolrQuery


Returns an offset into the list of constraints to be used for pagination

SolrQuery::getFacetMissing
SolrQuery::getFacetPrefix
SolrQuery
PHP Manual

SolrQuery::getFacetOffset

(PECL solr >= 0.9.2)

SolrQuery::getFacetOffset — Returns an offset into the list of constraints to be used for pagination

说明

public int SolrQuery::getFacetOffset ([ string $field_override ] )

Returns an offset into the list of constraints to be used for pagination. Accepts an optional field override

参数

field_override

The name of the field to override for.

返回值

Returns an integer on success and NULL if not set

SolrQuery::getFacetMissing
SolrQuery::getFacetPrefix
SolrQuery


Returns the facet prefix

SolrQuery::getFacetOffset
SolrQuery::getFacetQueries
SolrQuery
PHP Manual

SolrQuery::getFacetPrefix

(PECL solr >= 0.9.2)

SolrQuery::getFacetPrefix — Returns the facet prefix

说明

public string SolrQuery::getFacetPrefix ([ string $field_override ] )

Returns the facet prefix

参数

field_override

The name of the field

返回值

Returns a string on success and NULL if not set.

SolrQuery::getFacetOffset
SolrQuery::getFacetQueries
SolrQuery


Returns all the facet queries

SolrQuery::getFacetPrefix
SolrQuery::getFacetSort
SolrQuery
PHP Manual

SolrQuery::getFacetQueries

(PECL solr >= 0.9.2)

SolrQuery::getFacetQueries — Returns all the facet queries

说明

public array SolrQuery::getFacetQueries ( void )

Returns all the facet queries

参数

此函数没有参数。

返回值

Returns an array on success and NULL if not set.

SolrQuery::getFacetPrefix
SolrQuery::getFacetSort
SolrQuery


Returns the facet sort type

SolrQuery::getFacetQueries
SolrQuery::getFields
SolrQuery
PHP Manual

SolrQuery::getFacetSort

(PECL solr >= 0.9.2)

SolrQuery::getFacetSort — Returns the facet sort type

说明

public int SolrQuery::getFacetSort ([ string $field_override ] )

Returns an integer (SolrQuery::FACET_SORT_INDEX or SolrQuery::FACET_SORT_COUNT)

参数

field_override

The name of the field

返回值

Returns an integer (SolrQuery::FACET_SORT_INDEX or SolrQuery::FACET_SORT_COUNT) on success or NULL if not set.

SolrQuery::getFacetQueries
SolrQuery::getFields
SolrQuery


Returns the list of fields that will be returned in the response

SolrQuery::getFacetSort
SolrQuery::getFilterQueries
SolrQuery
PHP Manual

SolrQuery::getFields

(PECL solr >= 0.9.2)

SolrQuery::getFields — Returns the list of fields that will be returned in the response

说明

public array SolrQuery::getFields ( void )

Returns the list of fields that will be returned in the response

参数

此函数没有参数。

返回值

Returns an array on success and NULL if not set.

SolrQuery::getFacetSort
SolrQuery::getFilterQueries
SolrQuery


Returns an array of filter queries

SolrQuery::getFields
SolrQuery::getGroup
SolrQuery
PHP Manual

SolrQuery::getFilterQueries

(PECL solr >= 0.9.2)

SolrQuery::getFilterQueries — Returns an array of filter queries

说明

public array SolrQuery::getFilterQueries ( void )

Returns an array of filter queries. These are queries that can be used to restrict the super set of documents that can be returned, without influencing score

参数

此函数没有参数。

返回值

Returns an array on success and NULL if not set.

SolrQuery::getFields
SolrQuery::getGroup
SolrQuery


Returns true if grouping is enabled

SolrQuery::getFilterQueries
SolrQuery::getGroupCachePercent
SolrQuery
PHP Manual

SolrQuery::getGroup

(PECL solr >= 2.2.0)

SolrQuery::getGroup — Returns true if grouping is enabled

说明

public bool SolrQuery::getGroup ( void )

Returns true if grouping is enabled

参数

此函数没有参数。

返回值

参见

  • SolrQuery::setGroup() - Enable/Disable result grouping (group parameter)
SolrQuery::getFilterQueries
SolrQuery::getGroupCachePercent
SolrQuery


Returns group cache percent value

SolrQuery::getGroup
SolrQuery::getGroupFacet
SolrQuery
PHP Manual

SolrQuery::getGroupCachePercent

(PECL solr >= 2.2.0)

SolrQuery::getGroupCachePercent — Returns group cache percent value

说明

public integer SolrQuery::getGroupCachePercent ( void )

Returns group cache percent value

参数

此函数没有参数。

返回值

参见

  • SolrQuery::setGroupCachePercent() - Enables caching for result grouping
SolrQuery::getGroup
SolrQuery::getGroupFacet
SolrQuery


Returns the group.facet parameter value

SolrQuery::getGroupCachePercent
SolrQuery::getGroupFields
SolrQuery
PHP Manual

SolrQuery::getGroupFacet

(PECL solr >= 2.2.0)

SolrQuery::getGroupFacet — Returns the group.facet parameter value

说明

public bool SolrQuery::getGroupFacet ( void )

Returns the group.facet parameter value

参数

此函数没有参数。

返回值

参见

  • SolrQuery::setGroupFacet() - Sets group.facet parameter
SolrQuery::getGroupCachePercent
SolrQuery::getGroupFields
SolrQuery


Returns group fields (group.field parameter values)

SolrQuery::getGroupFacet
SolrQuery::getGroupFormat
SolrQuery
PHP Manual

SolrQuery::getGroupFields

(PECL solr >= 2.2.0)

SolrQuery::getGroupFields — Returns group fields (group.field parameter values)

说明

public array SolrQuery::getGroupFields ( void )

Returns group fields (group.field parameter values)

参数

此函数没有参数。

返回值

参见

  • SolrQuery::addGroupField() - Add a field to be used to group results.
SolrQuery::getGroupFacet
SolrQuery::getGroupFormat
SolrQuery


Returns the group.format value

SolrQuery::getGroupFields
SolrQuery::getGroupFunctions
SolrQuery
PHP Manual

SolrQuery::getGroupFormat

(PECL solr >= 2.2.0)

SolrQuery::getGroupFormat — Returns the group.format value

说明

public string SolrQuery::getGroupFormat ( void )

Returns the group.format value

参数

此函数没有参数。

返回值

参见

  • SolrQuery::setGroupFormat() - Sets the group format, result structure (group.format parameter).
SolrQuery::getGroupFields
SolrQuery::getGroupFunctions
SolrQuery


Returns group functions (group.func parameter values)

SolrQuery::getGroupFormat
SolrQuery::getGroupLimit
SolrQuery
PHP Manual

SolrQuery::getGroupFunctions

(PECL solr >= 2.2.0)

SolrQuery::getGroupFunctions — Returns group functions (group.func parameter values)

说明

public array SolrQuery::getGroupFunctions ( void )

Returns group functions (group.func parameter values)

参数

此函数没有参数。

返回值

参见

  • SolrQuery::addGroupFunction() - Allows grouping results based on the unique values of a function query (group.func parameter).
SolrQuery::getGroupFormat
SolrQuery::getGroupLimit
SolrQuery


Returns the group.limit value

SolrQuery::getGroupFunctions
SolrQuery::getGroupMain
SolrQuery
PHP Manual

SolrQuery::getGroupLimit

(PECL solr >= 2.2.0)

SolrQuery::getGroupLimit — Returns the group.limit value

说明

public integer SolrQuery::getGroupLimit ( void )

Returns the group.limit value

参数

此函数没有参数。

返回值

参见

  • SolrQuery::setGroupLimit() - Specifies the number of results to return for each group. The server default value is 1.
SolrQuery::getGroupFunctions
SolrQuery::getGroupMain
SolrQuery


Returns the group.main value

SolrQuery::getGroupLimit
SolrQuery::getGroupNGroups
SolrQuery
PHP Manual

SolrQuery::getGroupMain

(PECL solr >= 2.2.0)

SolrQuery::getGroupMain — Returns the group.main value

说明

public bool SolrQuery::getGroupMain ( void )

Returns the group.main value

参数

此函数没有参数。

返回值

参见

  • SolrQuery::setGroupMain() - If true, the result of the first field grouping command is used as the main result list in the response, using group.format=simple.
SolrQuery::getGroupLimit
SolrQuery::getGroupNGroups
SolrQuery


Returns the group.ngroups value

SolrQuery::getGroupMain
SolrQuery::getGroupOffset
SolrQuery
PHP Manual

SolrQuery::getGroupNGroups

(PECL solr >= 2.2.0)

SolrQuery::getGroupNGroups — Returns the group.ngroups value

说明

public bool SolrQuery::getGroupNGroups ( void )

Returns the group.ngroups value

参数

此函数没有参数。

返回值

参见

  • SolrQuery::setGroupNGroups() - If true, Solr includes the number of groups that have matched the query in the results.
SolrQuery::getGroupMain
SolrQuery::getGroupOffset
SolrQuery


Returns the group.offset value

SolrQuery::getGroupNGroups
SolrQuery::getGroupQueries
SolrQuery
PHP Manual

SolrQuery::getGroupOffset

(PECL solr >= 2.2.0)

SolrQuery::getGroupOffset — Returns the group.offset value

说明

public integer SolrQuery::getGroupOffset ( void )

Returns the group.offset value

参数

此函数没有参数。

返回值

参见

  • SolrQuery::setGroupOffset() - Sets the group.offset parameter.
SolrQuery::getGroupNGroups
SolrQuery::getGroupQueries
SolrQuery


Returns all the group.query parameter values

SolrQuery::getGroupOffset
SolrQuery::getGroupSortFields
SolrQuery
PHP Manual

SolrQuery::getGroupQueries

(PECL solr >= 2.2.0)

SolrQuery::getGroupQueries — Returns all the group.query parameter values

说明

public array SolrQuery::getGroupQueries ( void )

Returns all the group.query parameter values

参数

此函数没有参数。

返回值

array

参见

  • SolrQuery::addGroupQuery() - Allows grouping of documents that match the given query.
SolrQuery::getGroupOffset
SolrQuery::getGroupSortFields
SolrQuery


Returns the group.sort value

SolrQuery::getGroupQueries
SolrQuery::getGroupTruncate
SolrQuery
PHP Manual

SolrQuery::getGroupSortFields

(PECL solr >= 2.2.0)

SolrQuery::getGroupSortFields — Returns the group.sort value

说明

public array SolrQuery::getGroupSortFields ( void )

Returns the group.sort value

参数

此函数没有参数。

返回值

参见

  • SolrQuery::addGroupSortField() - Add a group sort field (group.sort parameter).
SolrQuery::getGroupQueries
SolrQuery::getGroupTruncate
SolrQuery


Returns the group.truncate value

SolrQuery::getGroupSortFields
SolrQuery::getHighlight
SolrQuery
PHP Manual

SolrQuery::getGroupTruncate

(PECL solr >= 2.2.0)

SolrQuery::getGroupTruncate — Returns the group.truncate value

说明

public bool SolrQuery::getGroupTruncate ( void )

Returns the group.truncate value

参数

此函数没有参数。

返回值

参见

  • SolrQuery::setGroupTruncate() - If true, facet counts are based on the most relevant document of each group matching the query.
SolrQuery::getGroupSortFields
SolrQuery::getHighlight
SolrQuery


Returns the state of the hl parameter

SolrQuery::getGroupTruncate
SolrQuery::getHighlightAlternateField
SolrQuery
PHP Manual

SolrQuery::getHighlight

(PECL solr >= 0.9.2)

SolrQuery::getHighlight — Returns the state of the hl parameter

说明

public bool SolrQuery::getHighlight ( void )

Returns a boolean indicating whether or not to enable highlighted snippets to be generated in the query response.

参数

此函数没有参数。

返回值

Returns a boolean on success and NULL if not set.

SolrQuery::getGroupTruncate
SolrQuery::getHighlightAlternateField
SolrQuery


Returns the highlight field to use as backup or default

SolrQuery::getHighlight
SolrQuery::getHighlightFields
SolrQuery
PHP Manual

SolrQuery::getHighlightAlternateField

(PECL solr >= 0.9.2)

SolrQuery::getHighlightAlternateField — Returns the highlight field to use as backup or default

说明

public string SolrQuery::getHighlightAlternateField ([ string $field_override ] )

Returns the highlight field to use as backup or default. It accepts an optional override.

参数

field_override

The name of the field

返回值

Returns a string on success and NULL if not set.

SolrQuery::getHighlight
SolrQuery::getHighlightFields
SolrQuery


Returns all the fields that Solr should generate highlighted snippets for

SolrQuery::getHighlightAlternateField
SolrQuery::getHighlightFormatter
SolrQuery
PHP Manual

SolrQuery::getHighlightFields

(PECL solr >= 0.9.2)

SolrQuery::getHighlightFields — Returns all the fields that Solr should generate highlighted snippets for

说明

public array SolrQuery::getHighlightFields ( void )

Returns all the fields that Solr should generate highlighted snippets for

参数

此函数没有参数。

返回值

Returns an array on success and NULL if not set.

SolrQuery::getHighlightAlternateField
SolrQuery::getHighlightFormatter
SolrQuery


Returns the formatter for the highlighted output

SolrQuery::getHighlightFields
SolrQuery::getHighlightFragmenter
SolrQuery
PHP Manual

SolrQuery::getHighlightFormatter

(PECL solr >= 0.9.2)

SolrQuery::getHighlightFormatter — Returns the formatter for the highlighted output

说明

public string SolrQuery::getHighlightFormatter ([ string $field_override ] )

Returns the formatter for the highlighted output

参数

field_override

The name of the field

返回值

Returns a string on success and NULL if not set.

SolrQuery::getHighlightFields
SolrQuery::getHighlightFragmenter
SolrQuery


Returns the text snippet generator for highlighted text

SolrQuery::getHighlightFormatter
SolrQuery::getHighlightFragsize
SolrQuery
PHP Manual

SolrQuery::getHighlightFragmenter

(PECL solr >= 0.9.2)

SolrQuery::getHighlightFragmenter — Returns the text snippet generator for highlighted text

说明

public string SolrQuery::getHighlightFragmenter ([ string $field_override ] )

Returns the text snippet generator for highlighted text. Accepts an optional field override.

参数

field_override

The name of the field

返回值

Returns a string on success and NULL if not set.

SolrQuery::getHighlightFormatter
SolrQuery::getHighlightFragsize
SolrQuery


Returns the number of characters of fragments to consider for highlighting

SolrQuery::getHighlightFragmenter
SolrQuery::getHighlightHighlightMultiTerm
SolrQuery
PHP Manual

SolrQuery::getHighlightFragsize

(PECL solr >= 0.9.2)

SolrQuery::getHighlightFragsize — Returns the number of characters of fragments to consider for highlighting

说明

public int SolrQuery::getHighlightFragsize ([ string $field_override ] )

Returns the number of characters of fragments to consider for highlighting. Zero implies no fragmenting. The entire field should be used.

参数

field_override

The name of the field

返回值

Returns an integer on success or NULL if not set.

SolrQuery::getHighlightFragmenter
SolrQuery::getHighlightHighlightMultiTerm
SolrQuery


Returns whether or not to enable highlighting for range/wildcard/fuzzy/prefix queries

SolrQuery::getHighlightFragsize
SolrQuery::getHighlightMaxAlternateFieldLength
SolrQuery
PHP Manual

SolrQuery::getHighlightHighlightMultiTerm

(PECL solr >= 0.9.2)

SolrQuery::getHighlightHighlightMultiTerm — Returns whether or not to enable highlighting for range/wildcard/fuzzy/prefix queries

说明

public bool SolrQuery::getHighlightHighlightMultiTerm ( void )

Returns whether or not to enable highlighting for range/wildcard/fuzzy/prefix queries

参数

此函数没有参数。

返回值

Returns a boolean on success and NULL if not set.

SolrQuery::getHighlightFragsize
SolrQuery::getHighlightMaxAlternateFieldLength
SolrQuery


Returns the maximum number of characters of the field to return

SolrQuery::getHighlightHighlightMultiTerm
SolrQuery::getHighlightMaxAnalyzedChars
SolrQuery
PHP Manual

SolrQuery::getHighlightMaxAlternateFieldLength

(PECL solr >= 0.9.2)

SolrQuery::getHighlightMaxAlternateFieldLength — Returns the maximum number of characters of the field to return

说明

public int SolrQuery::getHighlightMaxAlternateFieldLength ([ string $field_override ] )

Returns the maximum number of characters of the field to return

参数

field_override

The name of the field

返回值

Returns an integer on success and NULL if not set.

SolrQuery::getHighlightHighlightMultiTerm
SolrQuery::getHighlightMaxAnalyzedChars
SolrQuery


Returns the maximum number of characters into a document to look for suitable snippets

SolrQuery::getHighlightMaxAlternateFieldLength
SolrQuery::getHighlightMergeContiguous
SolrQuery
PHP Manual

SolrQuery::getHighlightMaxAnalyzedChars

(PECL solr >= 0.9.2)

SolrQuery::getHighlightMaxAnalyzedChars — Returns the maximum number of characters into a document to look for suitable snippets

说明

public int SolrQuery::getHighlightMaxAnalyzedChars ( void )

Returns the maximum number of characters into a document to look for suitable snippets

参数

此函数没有参数。

返回值

Returns an integer on success and NULL if not set.

SolrQuery::getHighlightMaxAlternateFieldLength
SolrQuery::getHighlightMergeContiguous
SolrQuery


Returns whether or not the collapse contiguous fragments into a single fragment

SolrQuery::getHighlightMaxAnalyzedChars
SolrQuery::getHighlightRegexMaxAnalyzedChars
SolrQuery
PHP Manual

SolrQuery::getHighlightMergeContiguous

(PECL solr >= 0.9.2)

SolrQuery::getHighlightMergeContiguous — Returns whether or not the collapse contiguous fragments into a single fragment

说明

public bool SolrQuery::getHighlightMergeContiguous ([ string $field_override ] )

Returns whether or not the collapse contiguous fragments into a single fragment. Accepts an optional field override.

参数

field_override

The name of the field

返回值

Returns a boolean on success and NULL if not set.

SolrQuery::getHighlightMaxAnalyzedChars
SolrQuery::getHighlightRegexMaxAnalyzedChars
SolrQuery


Returns the maximum number of characters from a field when using the regex fragmenter

SolrQuery::getHighlightMergeContiguous
SolrQuery::getHighlightRegexPattern
SolrQuery
PHP Manual

SolrQuery::getHighlightRegexMaxAnalyzedChars

(PECL solr >= 0.9.2)

SolrQuery::getHighlightRegexMaxAnalyzedChars — Returns the maximum number of characters from a field when using the regex fragmenter

说明

public int SolrQuery::getHighlightRegexMaxAnalyzedChars ( void )

Returns the maximum number of characters from a field when using the regex fragmenter

参数

此函数没有参数。

返回值

Returns an integer on success and NULL if not set.

SolrQuery::getHighlightMergeContiguous
SolrQuery::getHighlightRegexPattern
SolrQuery


Returns the regular expression for fragmenting

SolrQuery::getHighlightRegexMaxAnalyzedChars
SolrQuery::getHighlightRegexSlop
SolrQuery
PHP Manual

SolrQuery::getHighlightRegexPattern

(PECL solr >= 0.9.2)

SolrQuery::getHighlightRegexPattern — Returns the regular expression for fragmenting

说明

public string SolrQuery::getHighlightRegexPattern ( void )

Returns the regular expression used for fragmenting

参数

此函数没有参数。

返回值

Returns a string on success and NULL if not set.

SolrQuery::getHighlightRegexMaxAnalyzedChars
SolrQuery::getHighlightRegexSlop
SolrQuery


Returns the deviation factor from the ideal fragment size

SolrQuery::getHighlightRegexPattern
SolrQuery::getHighlightRequireFieldMatch
SolrQuery
PHP Manual

SolrQuery::getHighlightRegexSlop

(PECL solr >= 0.9.2)

SolrQuery::getHighlightRegexSlop — Returns the deviation factor from the ideal fragment size

说明

public float SolrQuery::getHighlightRegexSlop ( void )

Returns the factor by which the regex fragmenter can deviate from the ideal fragment size to accomodate the regular expression

参数

此函数没有参数。

返回值

Returns a double on success and NULL if not set.

SolrQuery::getHighlightRegexPattern
SolrQuery::getHighlightRequireFieldMatch
SolrQuery


Returns if a field will only be highlighted if the query matched in this particular field

SolrQuery::getHighlightRegexSlop
SolrQuery::getHighlightSimplePost
SolrQuery
PHP Manual

SolrQuery::getHighlightRequireFieldMatch

(PECL solr >= 0.9.2)

SolrQuery::getHighlightRequireFieldMatch — Returns if a field will only be highlighted if the query matched in this particular field

说明

public bool SolrQuery::getHighlightRequireFieldMatch ( void )

Returns if a field will only be highlighted if the query matched in this particular field.

参数

此函数没有参数。

返回值

Returns a boolean on success and NULL if not set.

SolrQuery::getHighlightRegexSlop
SolrQuery::getHighlightSimplePost
SolrQuery


Returns the text which appears after a highlighted term

SolrQuery::getHighlightRequireFieldMatch
SolrQuery::getHighlightSimplePre
SolrQuery
PHP Manual

SolrQuery::getHighlightSimplePost

(PECL solr >= 0.9.2)

SolrQuery::getHighlightSimplePost — Returns the text which appears after a highlighted term

说明

public string SolrQuery::getHighlightSimplePost ([ string $field_override ] )

Returns the text which appears after a highlighted term. Accepts an optional field override

参数

field_override

The name of the field

返回值

Returns a string on success and NULL if not set.

SolrQuery::getHighlightRequireFieldMatch
SolrQuery::getHighlightSimplePre
SolrQuery


Returns the text which appears before a highlighted term

SolrQuery::getHighlightSimplePost
SolrQuery::getHighlightSnippets
SolrQuery
PHP Manual

SolrQuery::getHighlightSimplePre

(PECL solr >= 0.9.2)

SolrQuery::getHighlightSimplePre — Returns the text which appears before a highlighted term

说明

public string SolrQuery::getHighlightSimplePre ([ string $field_override ] )

Returns the text which appears before a highlighted term. Accepts an optional field override

参数

field_override

The name of the field

返回值

Returns a string on success and NULL if not set.

SolrQuery::getHighlightSimplePost
SolrQuery::getHighlightSnippets
SolrQuery


Returns the maximum number of highlighted snippets to generate per field

SolrQuery::getHighlightSimplePre
SolrQuery::getHighlightUsePhraseHighlighter
SolrQuery
PHP Manual

SolrQuery::getHighlightSnippets

(PECL solr >= 0.9.2)

SolrQuery::getHighlightSnippets — Returns the maximum number of highlighted snippets to generate per field

说明

public int SolrQuery::getHighlightSnippets ([ string $field_override ] )

Returns the maximum number of highlighted snippets to generate per field. Accepts an optional field override

参数

field_override

The name of the field

返回值

Returns an integer on success and NULL if not set.

SolrQuery::getHighlightSimplePre
SolrQuery::getHighlightUsePhraseHighlighter
SolrQuery


Returns the state of the hl.usePhraseHighlighter parameter

SolrQuery::getHighlightSnippets
SolrQuery::getMlt
SolrQuery
PHP Manual

SolrQuery::getHighlightUsePhraseHighlighter

(PECL solr >= 0.9.2)

SolrQuery::getHighlightUsePhraseHighlighter — Returns the state of the hl.usePhraseHighlighter parameter

说明

public bool SolrQuery::getHighlightUsePhraseHighlighter ( void )

Returns whether or not to use SpanScorer to highlight phrase terms only when they appear within the query phrase in the document.

参数

此函数没有参数。

返回值

Returns a boolean on success and NULL if not set.

SolrQuery::getHighlightSnippets
SolrQuery::getMlt
SolrQuery


Returns whether or not MoreLikeThis results should be enabled

SolrQuery::getHighlightUsePhraseHighlighter
SolrQuery::getMltBoost
SolrQuery
PHP Manual

SolrQuery::getMlt

(PECL solr >= 0.9.2)

SolrQuery::getMlt — Returns whether or not MoreLikeThis results should be enabled

说明

public bool SolrQuery::getMlt ( void )

Returns whether or not MoreLikeThis results should be enabled

参数

此函数没有参数。

返回值

Returns a boolean on success and NULL if not set.

SolrQuery::getHighlightUsePhraseHighlighter
SolrQuery::getMltBoost
SolrQuery


Returns whether or not the query will be boosted by the interesting term relevance

SolrQuery::getMlt
SolrQuery::getMltCount
SolrQuery
PHP Manual

SolrQuery::getMltBoost

(PECL solr >= 0.9.2)

SolrQuery::getMltBoost — Returns whether or not the query will be boosted by the interesting term relevance

说明

public bool SolrQuery::getMltBoost ( void )

Returns whether or not the query will be boosted by the interesting term relevance

参数

此函数没有参数。

返回值

Returns a boolean on success and NULL if not set.

SolrQuery::getMlt
SolrQuery::getMltCount
SolrQuery


Returns the number of similar documents to return for each result

SolrQuery::getMltBoost
SolrQuery::getMltFields
SolrQuery
PHP Manual

SolrQuery::getMltCount

(PECL solr >= 0.9.2)

SolrQuery::getMltCount — Returns the number of similar documents to return for each result

说明

public int SolrQuery::getMltCount ( void )

Returns the number of similar documents to return for each result

参数

此函数没有参数。

返回值

Returns an integer on success and NULL if not set.

SolrQuery::getMltBoost
SolrQuery::getMltFields
SolrQuery


Returns all the fields to use for similarity

SolrQuery::getMltCount
SolrQuery::getMltMaxNumQueryTerms
SolrQuery
PHP Manual

SolrQuery::getMltFields

(PECL solr >= 0.9.2)

SolrQuery::getMltFields — Returns all the fields to use for similarity

说明

public array SolrQuery::getMltFields ( void )

Returns all the fields to use for similarity

参数

此函数没有参数。

返回值

Returns an array on success and NULL if not set.

SolrQuery::getMltCount
SolrQuery::getMltMaxNumQueryTerms
SolrQuery


Returns the maximum number of query terms that will be included in any generated query

SolrQuery::getMltFields
SolrQuery::getMltMaxNumTokens
SolrQuery
PHP Manual

SolrQuery::getMltMaxNumQueryTerms

(PECL solr >= 0.9.2)

SolrQuery::getMltMaxNumQueryTerms — Returns the maximum number of query terms that will be included in any generated query

说明

public int SolrQuery::getMltMaxNumQueryTerms ( void )

Returns the maximum number of query terms that will be included in any generated query

参数

此函数没有参数。

返回值

Returns an integer on success and NULL if not set.

SolrQuery::getMltFields
SolrQuery::getMltMaxNumTokens
SolrQuery


Returns the maximum number of tokens to parse in each document field that is not stored with TermVector support

SolrQuery::getMltMaxNumQueryTerms
SolrQuery::getMltMaxWordLength
SolrQuery
PHP Manual

SolrQuery::getMltMaxNumTokens

(PECL solr >= 0.9.2)

SolrQuery::getMltMaxNumTokens — Returns the maximum number of tokens to parse in each document field that is not stored with TermVector support

说明

public int SolrQuery::getMltMaxNumTokens ( void )

Returns the maximum number of tokens to parse in each document field that is not stored with TermVector support

参数

此函数没有参数。

返回值

Returns an integer on success and NULL if not set.

SolrQuery::getMltMaxNumQueryTerms
SolrQuery::getMltMaxWordLength
SolrQuery


Returns the maximum word length above which words will be ignored

SolrQuery::getMltMaxNumTokens
SolrQuery::getMltMinDocFrequency
SolrQuery
PHP Manual

SolrQuery::getMltMaxWordLength

(PECL solr >= 0.9.2)

SolrQuery::getMltMaxWordLength — Returns the maximum word length above which words will be ignored

说明

public int SolrQuery::getMltMaxWordLength ( void )

Returns the maximum word length above which words will be ignored

参数

此函数没有参数。

返回值

Returns an integer on success and NULL if not set.

SolrQuery::getMltMaxNumTokens
SolrQuery::getMltMinDocFrequency
SolrQuery


Returns the treshold frequency at which words will be ignored which do not occur in at least this many docs

SolrQuery::getMltMaxWordLength
SolrQuery::getMltMinTermFrequency
SolrQuery
PHP Manual

SolrQuery::getMltMinDocFrequency

(PECL solr >= 0.9.2)

SolrQuery::getMltMinDocFrequency — Returns the treshold frequency at which words will be ignored which do not occur in at least this many docs

说明

public int SolrQuery::getMltMinDocFrequency ( void )

Returns the treshold frequency at which words will be ignored which do not occur in at least this many docs

参数

此函数没有参数。

返回值

Returns an integer on success and NULL if not set.

SolrQuery::getMltMaxWordLength
SolrQuery::getMltMinTermFrequency
SolrQuery


Returns the frequency below which terms will be ignored in the source document

SolrQuery::getMltMinDocFrequency
SolrQuery::getMltMinWordLength
SolrQuery
PHP Manual

SolrQuery::getMltMinTermFrequency

(PECL solr >= 0.9.2)

SolrQuery::getMltMinTermFrequency — Returns the frequency below which terms will be ignored in the source document

说明

public int SolrQuery::getMltMinTermFrequency ( void )

Returns the frequency below which terms will be ignored in the source document

参数

此函数没有参数。

返回值

Returns an integer on success and NULL if not set.

SolrQuery::getMltMinDocFrequency
SolrQuery::getMltMinWordLength
SolrQuery


Returns the minimum word length below which words will be ignored

SolrQuery::getMltMinTermFrequency
SolrQuery::getMltQueryFields
SolrQuery
PHP Manual

SolrQuery::getMltMinWordLength

(PECL solr >= 0.9.2)

SolrQuery::getMltMinWordLength — Returns the minimum word length below which words will be ignored

说明

public int SolrQuery::getMltMinWordLength ( void )

Returns the minimum word length below which words will be ignored

参数

此函数没有参数。

返回值

Returns an integer on success and NULL if not set.

SolrQuery::getMltMinTermFrequency
SolrQuery::getMltQueryFields
SolrQuery


Returns the query fields and their boosts

SolrQuery::getMltMinWordLength
SolrQuery::getQuery
SolrQuery
PHP Manual

SolrQuery::getMltQueryFields

(PECL solr >= 0.9.2)

SolrQuery::getMltQueryFields — Returns the query fields and their boosts

说明

public array SolrQuery::getMltQueryFields ( void )

Returns the query fields and their boosts

参数

此函数没有参数。

返回值

Returns an array on success and NULL if not set.

SolrQuery::getMltMinWordLength
SolrQuery::getQuery
SolrQuery


Returns the main query

SolrQuery::getMltQueryFields
SolrQuery::getRows
SolrQuery
PHP Manual

SolrQuery::getQuery

(PECL solr >= 0.9.2)

SolrQuery::getQuery — Returns the main query

说明

public string SolrQuery::getQuery ( void )

Returns the main search query

参数

此函数没有参数。

返回值

Returns a string on success and NULL if not set.

SolrQuery::getMltQueryFields
SolrQuery::getRows
SolrQuery


Returns the maximum number of documents

SolrQuery::getQuery
SolrQuery::getSortFields
SolrQuery
PHP Manual

SolrQuery::getRows

(PECL solr >= 0.9.2)

SolrQuery::getRows — Returns the maximum number of documents

说明

public int SolrQuery::getRows ( void )

Returns the maximum number of documents from the complete result set to return to the client for every request

参数

此函数没有参数。

返回值

Returns an integer on success and NULL if not set.

SolrQuery::getQuery
SolrQuery::getSortFields
SolrQuery


Returns all the sort fields

SolrQuery::getRows
SolrQuery::getStart
SolrQuery
PHP Manual

SolrQuery::getSortFields

(PECL solr >= 0.9.2)

SolrQuery::getSortFields — Returns all the sort fields

说明

public array SolrQuery::getSortFields ( void )

Returns all the sort fields

参数

此函数没有参数。

返回值

Returns an array on success and NULL if none of the parameters was set.

SolrQuery::getRows
SolrQuery::getStart
SolrQuery


Returns the offset in the complete result set

SolrQuery::getSortFields
SolrQuery::getStats
SolrQuery
PHP Manual

SolrQuery::getStart

(PECL solr >= 0.9.2)

SolrQuery::getStart — Returns the offset in the complete result set

说明

public int SolrQuery::getStart ( void )

Returns the offset in the complete result set for the queries where the set of returned documents should begin.

参数

此函数没有参数。

返回值

Returns an integer on success and NULL if not set.

SolrQuery::getSortFields
SolrQuery::getStats
SolrQuery


Returns whether or not stats is enabled

SolrQuery::getStart
SolrQuery::getStatsFacets
SolrQuery
PHP Manual

SolrQuery::getStats

(PECL solr >= 0.9.2)

SolrQuery::getStats — Returns whether or not stats is enabled

说明

public bool SolrQuery::getStats ( void )

Returns whether or not stats is enabled

参数

此函数没有参数。

返回值

Returns a boolean on success and NULL if not set.

SolrQuery::getStart
SolrQuery::getStatsFacets
SolrQuery


Returns all the stats facets that were set

SolrQuery::getStats
SolrQuery::getStatsFields
SolrQuery
PHP Manual

SolrQuery::getStatsFacets

(PECL solr >= 0.9.2)

SolrQuery::getStatsFacets — Returns all the stats facets that were set

说明

public array SolrQuery::getStatsFacets ( void )

Returns all the stats facets that were set

参数

此函数没有参数。

返回值

Returns an array on success and NULL if not set.

SolrQuery::getStats
SolrQuery::getStatsFields
SolrQuery


Returns all the statistics fields

SolrQuery::getStatsFacets
SolrQuery::getTerms
SolrQuery
PHP Manual

SolrQuery::getStatsFields

(PECL solr >= 0.9.2)

SolrQuery::getStatsFields — Returns all the statistics fields

说明

public array SolrQuery::getStatsFields ( void )

Returns all the statistics fields

参数

此函数没有参数。

返回值

Returns an array on success and NULL if not set.

SolrQuery::getStatsFacets
SolrQuery::getTerms
SolrQuery


Returns whether or not the TermsComponent is enabled

SolrQuery::getStatsFields
SolrQuery::getTermsField
SolrQuery
PHP Manual

SolrQuery::getTerms

(PECL solr >= 0.9.2)

SolrQuery::getTerms — Returns whether or not the TermsComponent is enabled

说明

public bool SolrQuery::getTerms ( void )

Returns whether or not the TermsComponent is enabled

参数

此函数没有参数。

返回值

Returns a boolean on success and NULL if not set.

SolrQuery::getStatsFields
SolrQuery::getTermsField
SolrQuery


Returns the field from which the terms are retrieved

SolrQuery::getTerms
SolrQuery::getTermsIncludeLowerBound
SolrQuery
PHP Manual

SolrQuery::getTermsField

(PECL solr >= 0.9.2)

SolrQuery::getTermsField — Returns the field from which the terms are retrieved

说明

public string SolrQuery::getTermsField ( void )

Returns the field from which the terms are retrieved

参数

此函数没有参数。

返回值

Returns a string on success and NULL if not set.

SolrQuery::getTerms
SolrQuery::getTermsIncludeLowerBound
SolrQuery


Returns whether or not to include the lower bound in the result set

SolrQuery::getTermsField
SolrQuery::getTermsIncludeUpperBound
SolrQuery
PHP Manual

SolrQuery::getTermsIncludeLowerBound

(PECL solr >= 0.9.2)

SolrQuery::getTermsIncludeLowerBound — Returns whether or not to include the lower bound in the result set

说明

public bool SolrQuery::getTermsIncludeLowerBound ( void )

Returns whether or not to include the lower bound in the result set

参数

此函数没有参数。

返回值

Returns a boolean on success and NULL if not set.

SolrQuery::getTermsField
SolrQuery::getTermsIncludeUpperBound
SolrQuery


Returns whether or not to include the upper bound term in the result set

SolrQuery::getTermsIncludeLowerBound
SolrQuery::getTermsLimit
SolrQuery
PHP Manual

SolrQuery::getTermsIncludeUpperBound

(PECL solr >= 0.9.2)

SolrQuery::getTermsIncludeUpperBound — Returns whether or not to include the upper bound term in the result set

说明

public bool SolrQuery::getTermsIncludeUpperBound ( void )

Returns whether or not to include the upper bound term in the result set

参数

此函数没有参数。

返回值

Returns a boolean on success and NULL if not set.

SolrQuery::getTermsIncludeLowerBound
SolrQuery::getTermsLimit
SolrQuery


Returns the maximum number of terms Solr should return

SolrQuery::getTermsIncludeUpperBound
SolrQuery::getTermsLowerBound
SolrQuery
PHP Manual

SolrQuery::getTermsLimit

(PECL solr >= 0.9.2)

SolrQuery::getTermsLimit — Returns the maximum number of terms Solr should return

说明

public int SolrQuery::getTermsLimit ( void )

Returns the maximum number of terms Solr should return

参数

此函数没有参数。

返回值

Returns an integer on success and NULL if not set.

SolrQuery::getTermsIncludeUpperBound
SolrQuery::getTermsLowerBound
SolrQuery


Returns the term to start at

SolrQuery::getTermsLimit
SolrQuery::getTermsMaxCount
SolrQuery
PHP Manual

SolrQuery::getTermsLowerBound

(PECL solr >= 0.9.2)

SolrQuery::getTermsLowerBound — Returns the term to start at

说明

public string SolrQuery::getTermsLowerBound ( void )

Returns the term to start at

参数

此函数没有参数。

返回值

Returns a string on success and NULL if not set.

SolrQuery::getTermsLimit
SolrQuery::getTermsMaxCount
SolrQuery


Returns the maximum document frequency

SolrQuery::getTermsLowerBound
SolrQuery::getTermsMinCount
SolrQuery
PHP Manual

SolrQuery::getTermsMaxCount

(PECL solr >= 0.9.2)

SolrQuery::getTermsMaxCount — Returns the maximum document frequency

说明

public int SolrQuery::getTermsMaxCount ( void )

Returns the maximum document frequency

参数

此函数没有参数。

返回值

Returns an integer on success and NULL if not set.

SolrQuery::getTermsLowerBound
SolrQuery::getTermsMinCount
SolrQuery


Returns the minimum document frequency to return in order to be included

SolrQuery::getTermsMaxCount
SolrQuery::getTermsPrefix
SolrQuery
PHP Manual

SolrQuery::getTermsMinCount

(PECL solr >= 0.9.2)

SolrQuery::getTermsMinCount — Returns the minimum document frequency to return in order to be included

说明

public int SolrQuery::getTermsMinCount ( void )

Returns the minimum document frequency to return in order to be included

参数

此函数没有参数。

返回值

Returns an integer on success and NULL if not set.

SolrQuery::getTermsMaxCount
SolrQuery::getTermsPrefix
SolrQuery


Returns the term prefix

SolrQuery::getTermsMinCount
SolrQuery::getTermsReturnRaw
SolrQuery
PHP Manual

SolrQuery::getTermsPrefix

(PECL solr >= 0.9.2)

SolrQuery::getTermsPrefix — Returns the term prefix

说明

public string SolrQuery::getTermsPrefix ( void )

Returns the prefix to which matching terms must be restricted. This will restrict matches to only terms that start with the prefix

参数

此函数没有参数。

返回值

Returns a string on success and NULL if not set.

SolrQuery::getTermsMinCount
SolrQuery::getTermsReturnRaw
SolrQuery


Whether or not to return raw characters

SolrQuery::getTermsPrefix
SolrQuery::getTermsSort
SolrQuery
PHP Manual

SolrQuery::getTermsReturnRaw

(PECL solr >= 0.9.2)

SolrQuery::getTermsReturnRaw — Whether or not to return raw characters

说明

public bool SolrQuery::getTermsReturnRaw ( void )

Returns a boolean indicating whether or not to return the raw characters of the indexed term, regardless of if it is human readable

参数

此函数没有参数。

返回值

Returns a boolean on success and NULL if not set.

SolrQuery::getTermsPrefix
SolrQuery::getTermsSort
SolrQuery


Returns an integer indicating how terms are sorted

SolrQuery::getTermsReturnRaw
SolrQuery::getTermsUpperBound
SolrQuery
PHP Manual

SolrQuery::getTermsSort

(PECL solr >= 0.9.2)

SolrQuery::getTermsSort — Returns an integer indicating how terms are sorted

说明

public int SolrQuery::getTermsSort ( void )

SolrQuery::TERMS_SORT_INDEX indicates that the terms are returned by index order. SolrQuery::TERMS_SORT_COUNT implies that the terms are sorted by term frequency (highest count first)

参数

此函数没有参数。

返回值

Returns an integer on success and NULL if not set.

SolrQuery::getTermsReturnRaw
SolrQuery::getTermsUpperBound
SolrQuery


Returns the term to stop at

SolrQuery::getTermsSort
SolrQuery::getTimeAllowed
SolrQuery
PHP Manual

SolrQuery::getTermsUpperBound

(PECL solr >= 0.9.2)

SolrQuery::getTermsUpperBound — Returns the term to stop at

说明

public string SolrQuery::getTermsUpperBound ( void )

Returns the term to stop at

参数

此函数没有参数。

返回值

Returns a string on success and NULL if not set.

SolrQuery::getTermsSort
SolrQuery::getTimeAllowed
SolrQuery


Returns the time in milliseconds allowed for the query to finish

SolrQuery::getTermsUpperBound
SolrQuery::removeExpandFilterQuery
SolrQuery
PHP Manual

SolrQuery::getTimeAllowed

(PECL solr >= 0.9.2)

SolrQuery::getTimeAllowed — Returns the time in milliseconds allowed for the query to finish

说明

public int SolrQuery::getTimeAllowed ( void )

Returns the time in milliseconds allowed for the query to finish.

参数

此函数没有参数。

返回值

Returns and integer on success and NULL if it is not set.

SolrQuery::getTermsUpperBound
SolrQuery::removeExpandFilterQuery
SolrQuery


Removes an expand filter query

SolrQuery::getTimeAllowed
SolrQuery::removeExpandSortField
SolrQuery
PHP Manual

SolrQuery::removeExpandFilterQuery

(PECL solr >= 2.2.0)

SolrQuery::removeExpandFilterQuery — Removes an expand filter query

说明

public SolrQuery SolrQuery::removeExpandFilterQuery ( string $fq )

Removes an expand filter query.

参数

fq

返回值

SolrQuery

参见

  • SolrQuery::setExpand() - Enables/Disables the Expand Component
  • SolrQuery::addExpandSortField() - Orders the documents within the expanded groups (expand.sort parameter).
  • SolrQuery::removeExpandSortField() - Removes an expand sort field from the expand.sort parameter.
  • SolrQuery::setExpandRows() - Sets the number of rows to display in each group (expand.rows). Server Default 5
  • SolrQuery::setExpandQuery() - Sets the expand.q parameter
  • SolrQuery::addExpandFilterQuery() - Overrides main filter query, determines which documents to include in the main group.
SolrQuery::getTimeAllowed
SolrQuery::removeExpandSortField
SolrQuery


Removes an expand sort field from the expand.sort parameter.

SolrQuery::removeExpandFilterQuery
SolrQuery::removeFacetDateField
SolrQuery
PHP Manual

SolrQuery::removeExpandSortField

(PECL solr >= 2.2.0)

SolrQuery::removeExpandSortField — Removes an expand sort field from the expand.sort parameter.

说明

public SolrQuery SolrQuery::removeExpandSortField ( string $field )

Removes an expand sort field from the expand.sort parameter.

参数

field

field name

返回值

SolrQuery

参见

  • SolrQuery::setExpand() - Enables/Disables the Expand Component
  • SolrQuery::addExpandSortField() - Orders the documents within the expanded groups (expand.sort parameter).
  • SolrQuery::setExpandRows() - Sets the number of rows to display in each group (expand.rows). Server Default 5
  • SolrQuery::setExpandQuery() - Sets the expand.q parameter
  • SolrQuery::addExpandFilterQuery() - Overrides main filter query, determines which documents to include in the main group.
  • SolrQuery::removeExpandFilterQuery() - Removes an expand filter query
SolrQuery::removeExpandFilterQuery
SolrQuery::removeFacetDateField
SolrQuery


Removes one of the facet date fields

SolrQuery::removeExpandSortField
SolrQuery::removeFacetDateOther
SolrQuery
PHP Manual

SolrQuery::removeFacetDateField

(PECL solr >= 0.9.2)

SolrQuery::removeFacetDateField — Removes one of the facet date fields

说明

public SolrQuery SolrQuery::removeFacetDateField ( string $field )

The name of the field

参数

field

The name of the date field to remove

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::removeExpandSortField
SolrQuery::removeFacetDateOther
SolrQuery


Removes one of the facet.date.other parameters

SolrQuery::removeFacetDateField
SolrQuery::removeFacetField
SolrQuery
PHP Manual

SolrQuery::removeFacetDateOther

(PECL solr >= 0.9.2)

SolrQuery::removeFacetDateOther — Removes one of the facet.date.other parameters

说明

public SolrQuery SolrQuery::removeFacetDateOther ( string $value [, string $field_override ] )

Removes one of the facet.date.other parameters

参数

value

The value

field_override

The name of the field.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::removeFacetDateField
SolrQuery::removeFacetField
SolrQuery


Removes one of the facet.date parameters

SolrQuery::removeFacetDateOther
SolrQuery::removeFacetQuery
SolrQuery
PHP Manual

SolrQuery::removeFacetField

(PECL solr >= 0.9.2)

SolrQuery::removeFacetField — Removes one of the facet.date parameters

说明

public SolrQuery SolrQuery::removeFacetField ( string $field )

Removes one of the facet.date parameters

参数

field

The name of the field

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::removeFacetDateOther
SolrQuery::removeFacetQuery
SolrQuery


Removes one of the facet.query parameters

SolrQuery::removeFacetField
SolrQuery::removeField
SolrQuery
PHP Manual

SolrQuery::removeFacetQuery

(PECL solr >= 0.9.2)

SolrQuery::removeFacetQuery — Removes one of the facet.query parameters

说明

public SolrQuery SolrQuery::removeFacetQuery ( string $value )

Removes one of the facet.query parameters.

参数

value

The value

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::removeFacetField
SolrQuery::removeField
SolrQuery


Removes a field from the list of fields

SolrQuery::removeFacetQuery
SolrQuery::removeFilterQuery
SolrQuery
PHP Manual

SolrQuery::removeField

(PECL solr >= 0.9.2)

SolrQuery::removeField — Removes a field from the list of fields

说明

public SolrQuery SolrQuery::removeField ( string $field )

Removes a field from the list of fields

参数

field

Name of the field.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::removeFacetQuery
SolrQuery::removeFilterQuery
SolrQuery


Removes a filter query

SolrQuery::removeField
SolrQuery::removeHighlightField
SolrQuery
PHP Manual

SolrQuery::removeFilterQuery

(PECL solr >= 0.9.2)

SolrQuery::removeFilterQuery — Removes a filter query

说明

public SolrQuery SolrQuery::removeFilterQuery ( string $fq )

Removes a filter query.

参数

fq

The filter query to remove

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::removeField
SolrQuery::removeHighlightField
SolrQuery


Removes one of the fields used for highlighting

SolrQuery::removeFilterQuery
SolrQuery::removeMltField
SolrQuery
PHP Manual

SolrQuery::removeHighlightField

(PECL solr >= 0.9.2)

SolrQuery::removeHighlightField — Removes one of the fields used for highlighting

说明

public SolrQuery SolrQuery::removeHighlightField ( string $field )

Removes one of the fields used for highlighting.

参数

field

The name of the field

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::removeFilterQuery
SolrQuery::removeMltField
SolrQuery


Removes one of the moreLikeThis fields

SolrQuery::removeHighlightField
SolrQuery::removeMltQueryField
SolrQuery
PHP Manual

SolrQuery::removeMltField

(PECL solr >= 0.9.2)

SolrQuery::removeMltField — Removes one of the moreLikeThis fields

说明

public SolrQuery SolrQuery::removeMltField ( string $field )

Removes one of the moreLikeThis fields.

参数

field

Name of the field

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::removeHighlightField
SolrQuery::removeMltQueryField
SolrQuery


Removes one of the moreLikeThis query fields

SolrQuery::removeMltField
SolrQuery::removeSortField
SolrQuery
PHP Manual

SolrQuery::removeMltQueryField

(PECL solr >= 0.9.2)

SolrQuery::removeMltQueryField — Removes one of the moreLikeThis query fields

说明

public SolrQuery SolrQuery::removeMltQueryField ( string $queryField )

Removes one of the moreLikeThis query fields.

参数

queryField

The query field

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::removeMltField
SolrQuery::removeSortField
SolrQuery


Removes one of the sort fields

SolrQuery::removeMltQueryField
SolrQuery::removeStatsFacet
SolrQuery
PHP Manual

SolrQuery::removeSortField

(PECL solr >= 0.9.2)

SolrQuery::removeSortField — Removes one of the sort fields

说明

public SolrQuery SolrQuery::removeSortField ( string $field )

Removes one of the sort fields

参数

field

The name of the field

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::removeMltQueryField
SolrQuery::removeStatsFacet
SolrQuery


Removes one of the stats.facet parameters

SolrQuery::removeSortField
SolrQuery::removeStatsField
SolrQuery
PHP Manual

SolrQuery::removeStatsFacet

(PECL solr >= 0.9.2)

SolrQuery::removeStatsFacet — Removes one of the stats.facet parameters

说明

public SolrQuery SolrQuery::removeStatsFacet ( string $value )

Removes one of the stats.facet parameters

参数

value

The value

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::removeSortField
SolrQuery::removeStatsField
SolrQuery


Removes one of the stats.field parameters

SolrQuery::removeStatsFacet
SolrQuery::setEchoHandler
SolrQuery
PHP Manual

SolrQuery::removeStatsField

(PECL solr >= 0.9.2)

SolrQuery::removeStatsField — Removes one of the stats.field parameters

说明

public SolrQuery SolrQuery::removeStatsField ( string $field )

Removes one of the stats.field parameters

参数

field

The name of the field.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::removeStatsFacet
SolrQuery::setEchoHandler
SolrQuery


Toggles the echoHandler parameter

SolrQuery::removeStatsField
SolrQuery::setEchoParams
SolrQuery
PHP Manual

SolrQuery::setEchoHandler

(PECL solr >= 0.9.2)

SolrQuery::setEchoHandler — Toggles the echoHandler parameter

说明

public SolrQuery SolrQuery::setEchoHandler ( bool $flag )

If set to true, Solr places the name of the handle used in the response to the client for debugging purposes.

参数

flag

TRUE or FALSE

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::removeStatsField
SolrQuery::setEchoParams
SolrQuery


Determines what kind of parameters to include in the response

SolrQuery::setEchoHandler
SolrQuery::setExpand
SolrQuery
PHP Manual

SolrQuery::setEchoParams

(PECL solr >= 0.9.2)

SolrQuery::setEchoParams — Determines what kind of parameters to include in the response

说明

public SolrQuery SolrQuery::setEchoParams ( string $type )

Instructs Solr what kinds of Request parameters should be included in the response for debugging purposes, legal values include:

- none - don't include any request parameters for debugging
- explicit - include the parameters explicitly specified by the client in the request
- all - include all parameters involved in this request, either specified explicitly by the client, or implicit because of the request handler configuration.

参数

type

The type of parameters to include

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setEchoHandler
SolrQuery::setExpand
SolrQuery


Enables/Disables the Expand Component

SolrQuery::setEchoParams
SolrQuery::setExpandQuery
SolrQuery
PHP Manual

SolrQuery::setExpand

(PECL solr >= 2.2.0)

SolrQuery::setExpand — Enables/Disables the Expand Component

说明

public SolrQuery SolrQuery::setExpand ( bool $value )

Enables/Disables the Expand Component.

参数

value

Bool flag

返回值

SolrQuery

范例

Example #1 SolrQuery::setExpand() example

<?php

$query = new SolrQuery('lucene');

$query
    ->setExpand(true)
    ->setExpandRows(50)
    ->setExpandQuery('text:product')
    ->addExpandFilterQuery('manu:apple')
    ->addExpandFilterQuery('inStock:true')
    ->addExpandSortField('score', SolrQuery::ORDER_DESC)
    ->addExpandSortField('title', SolrQuery::ORDER_ASC);

echo $query.PHP_EOL;

?>

以上例程的输出类似于：

q=lucene&expand=true&expand.rows=50&expand.q=text:product&expand.fq=manu:apple&expand.fq=inStock:true&expand.sort=score desc,title asc

参见

  • SolrQuery::addExpandSortField() - Orders the documents within the expanded groups (expand.sort parameter).
  • SolrQuery::removeExpandSortField() - Removes an expand sort field from the expand.sort parameter.
  • SolrQuery::setExpandRows() - Sets the number of rows to display in each group (expand.rows). Server Default 5
  • SolrQuery::setExpandQuery() - Sets the expand.q parameter
  • SolrQuery::addExpandFilterQuery() - Overrides main filter query, determines which documents to include in the main group.
  • SolrQuery::removeExpandFilterQuery() - Removes an expand filter query
SolrQuery::setEchoParams
SolrQuery::setExpandQuery
SolrQuery


Sets the expand.q parameter

SolrQuery::setExpand
SolrQuery::setExpandRows
SolrQuery
PHP Manual

SolrQuery::setExpandQuery

(PECL solr >= 2.2.0)

SolrQuery::setExpandQuery — Sets the expand.q parameter

说明

public SolrQuery SolrQuery::setExpandQuery ( string $q )

Sets the expand.q parameter.

Overrides the main q parameter, determines which documents to include in the main group.

参数

q

返回值

SolrQuery

参见

  • SolrQuery::setExpand() - Enables/Disables the Expand Component
  • SolrQuery::addExpandSortField() - Orders the documents within the expanded groups (expand.sort parameter).
  • SolrQuery::removeExpandSortField() - Removes an expand sort field from the expand.sort parameter.
  • SolrQuery::setExpandRows() - Sets the number of rows to display in each group (expand.rows). Server Default 5
  • SolrQuery::addExpandFilterQuery() - Overrides main filter query, determines which documents to include in the main group.
  • SolrQuery::removeExpandFilterQuery() - Removes an expand filter query
SolrQuery::setExpand
SolrQuery::setExpandRows
SolrQuery


Sets the number of rows to display in each group (expand.rows). Server Default 5

SolrQuery::setExpandQuery
SolrQuery::setExplainOther
SolrQuery
PHP Manual

SolrQuery::setExpandRows

(PECL solr >= 2.2.0)

SolrQuery::setExpandRows — Sets the number of rows to display in each group (expand.rows). Server Default 5

说明

public SolrQuery SolrQuery::setExpandRows ( integer $value )

Sets the number of rows to display in each group (expand.rows). Server Default 5

参数

value

返回值

SolrQuery

参见

  • SolrQuery::setExpand() - Enables/Disables the Expand Component
  • SolrQuery::addExpandSortField() - Orders the documents within the expanded groups (expand.sort parameter).
  • SolrQuery::removeExpandSortField() - Removes an expand sort field from the expand.sort parameter.
  • SolrQuery::setExpandQuery() - Sets the expand.q parameter
  • SolrQuery::addExpandFilterQuery() - Overrides main filter query, determines which documents to include in the main group.
  • SolrQuery::removeExpandFilterQuery() - Removes an expand filter query
SolrQuery::setExpandQuery
SolrQuery::setExplainOther
SolrQuery


Sets the explainOther common query parameter

SolrQuery::setExpandRows
SolrQuery::setFacet
SolrQuery
PHP Manual

SolrQuery::setExplainOther

(PECL solr >= 0.9.2)

SolrQuery::setExplainOther — Sets the explainOther common query parameter

说明

public SolrQuery SolrQuery::setExplainOther ( string $query )

Sets the explainOther common query parameter

参数

query

The Lucene query to identify a set of documents

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setExpandRows
SolrQuery::setFacet
SolrQuery


Maps to the facet parameter. Enables or disables facetting

SolrQuery::setExplainOther
SolrQuery::setFacetDateEnd
SolrQuery
PHP Manual

SolrQuery::setFacet

(PECL solr >= 0.9.2)

SolrQuery::setFacet — Maps to the facet parameter. Enables or disables facetting

说明

public SolrQuery SolrQuery::setFacet ( bool $flag )

Enables or disables faceting.

参数

value

TRUE enables faceting and FALSE disables it.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setExplainOther
SolrQuery::setFacetDateEnd
SolrQuery


Maps to facet.date.end

SolrQuery::setFacet
SolrQuery::setFacetDateGap
SolrQuery
PHP Manual

SolrQuery::setFacetDateEnd

(PECL solr >= 0.9.2)

SolrQuery::setFacetDateEnd — Maps to facet.date.end

说明

public SolrQuery SolrQuery::setFacetDateEnd ( string $value [, string $field_override ] )

Maps to facet.date.end

参数

value

See facet.date.end

field_override

Name of the field

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setFacet
SolrQuery::setFacetDateGap
SolrQuery


Maps to facet.date.gap

SolrQuery::setFacetDateEnd
SolrQuery::setFacetDateHardEnd
SolrQuery
PHP Manual

SolrQuery::setFacetDateGap

(PECL solr >= 0.9.2)

SolrQuery::setFacetDateGap — Maps to facet.date.gap

说明

public SolrQuery SolrQuery::setFacetDateGap ( string $value [, string $field_override ] )

Maps to facet.date.gap

参数

value

See facet.date.gap

field_override

The name of the field

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setFacetDateEnd
SolrQuery::setFacetDateHardEnd
SolrQuery


Maps to facet.date.hardend

SolrQuery::setFacetDateGap
SolrQuery::setFacetDateStart
SolrQuery
PHP Manual

SolrQuery::setFacetDateHardEnd

(PECL solr >= 0.9.2)

SolrQuery::setFacetDateHardEnd — Maps to facet.date.hardend

说明

public SolrQuery SolrQuery::setFacetDateHardEnd ( bool $value [, string $field_override ] )

Maps to facet.date.hardend

参数

value

See facet.date.hardend

field_override

The name of the field

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setFacetDateGap
SolrQuery::setFacetDateStart
SolrQuery


Maps to facet.date.start

SolrQuery::setFacetDateHardEnd
SolrQuery::setFacetEnumCacheMinDefaultFrequency
SolrQuery
PHP Manual

SolrQuery::setFacetDateStart

(PECL solr >= 0.9.2)

SolrQuery::setFacetDateStart — Maps to facet.date.start

说明

public SolrQuery SolrQuery::setFacetDateStart ( string $value [, string $field_override ] )

Maps to facet.date.start

参数

value

See facet.date.start

field_override

The name of the field.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setFacetDateHardEnd
SolrQuery::setFacetEnumCacheMinDefaultFrequency
SolrQuery


Sets the minimum document frequency used for determining term count

SolrQuery::setFacetDateStart
SolrQuery::setFacetLimit
SolrQuery
PHP Manual

SolrQuery::setFacetEnumCacheMinDefaultFrequency

(PECL solr >= 0.9.2)

SolrQuery::setFacetEnumCacheMinDefaultFrequency — Sets the minimum document frequency used for determining term count

说明

public SolrQuery SolrQuery::setFacetEnumCacheMinDefaultFrequency ( int $frequency [, string $field_override ] )

Sets the minimum document frequency used for determining term count

参数

value

The minimum frequency

field_override

The name of the field.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setFacetDateStart
SolrQuery::setFacetLimit
SolrQuery


Maps to facet.limit

SolrQuery::setFacetEnumCacheMinDefaultFrequency
SolrQuery::setFacetMethod
SolrQuery
PHP Manual

SolrQuery::setFacetLimit

(PECL solr >= 0.9.2)

SolrQuery::setFacetLimit — Maps to facet.limit

说明

public SolrQuery SolrQuery::setFacetLimit ( int $limit [, string $field_override ] )

Maps to facet.limit. Sets the maximum number of constraint counts that should be returned for the facet fields.

参数

limit

The maximum number of constraint counts

field_override

The name of the field.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setFacetEnumCacheMinDefaultFrequency
SolrQuery::setFacetMethod
SolrQuery


Specifies the type of algorithm to use when faceting a field

SolrQuery::setFacetLimit
SolrQuery::setFacetMinCount
SolrQuery
PHP Manual

SolrQuery::setFacetMethod

(PECL solr >= 0.9.2)

SolrQuery::setFacetMethod — Specifies the type of algorithm to use when faceting a field

说明

public SolrQuery SolrQuery::setFacetMethod ( string $method [, string $field_override ] )

Specifies the type of algorithm to use when faceting a field. This method accepts optional field override.

参数

method

The method to use.

field_override

The name of the field.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setFacetLimit
SolrQuery::setFacetMinCount
SolrQuery


Maps to facet.mincount

SolrQuery::setFacetMethod
SolrQuery::setFacetMissing
SolrQuery
PHP Manual

SolrQuery::setFacetMinCount

(PECL solr >= 0.9.2)

SolrQuery::setFacetMinCount — Maps to facet.mincount

说明

public SolrQuery SolrQuery::setFacetMinCount ( int $mincount [, string $field_override ] )

Sets the minimum counts for facet fields that should be included in the response

参数

mincount

The minimum count

field_override

The name of the field.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setFacetMethod
SolrQuery::setFacetMissing
SolrQuery


Maps to facet.missing

SolrQuery::setFacetMinCount
SolrQuery::setFacetOffset
SolrQuery
PHP Manual

SolrQuery::setFacetMissing

(PECL solr >= 0.9.2)

SolrQuery::setFacetMissing — Maps to facet.missing

说明

public SolrQuery SolrQuery::setFacetMissing ( bool $flag [, string $field_override ] )

Used to indicate that in addition to the Term-based constraints of a facet field, a count of all matching results which have no value for the field should be computed

参数

flag

TRUE turns this feature on. FALSE disables it.

field_override

The name of the field.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setFacetMinCount
SolrQuery::setFacetOffset
SolrQuery


Sets the offset into the list of constraints to allow for pagination

SolrQuery::setFacetMissing
SolrQuery::setFacetPrefix
SolrQuery
PHP Manual

SolrQuery::setFacetOffset

(PECL solr >= 0.9.2)

SolrQuery::setFacetOffset — Sets the offset into the list of constraints to allow for pagination

说明

public SolrQuery SolrQuery::setFacetOffset ( int $offset [, string $field_override ] )

Sets the offset into the list of constraints to allow for pagination.

参数

offset

The offset

field_override

The name of the field.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setFacetMissing
SolrQuery::setFacetPrefix
SolrQuery


Specifies a string prefix with which to limits the terms on which to facet

SolrQuery::setFacetOffset
SolrQuery::setFacetSort
SolrQuery
PHP Manual

SolrQuery::setFacetPrefix

(PECL solr >= 0.9.2)

SolrQuery::setFacetPrefix — Specifies a string prefix with which to limits the terms on which to facet

说明

public SolrQuery SolrQuery::setFacetPrefix ( string $prefix [, string $field_override ] )

Specifies a string prefix with which to limits the terms on which to facet.

参数

prefix

The prefix string

field_override

The name of the field.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setFacetOffset
SolrQuery::setFacetSort
SolrQuery


Determines the ordering of the facet field constraints

SolrQuery::setFacetPrefix
SolrQuery::setGroup
SolrQuery
PHP Manual

SolrQuery::setFacetSort

(PECL solr >= 0.9.2)

SolrQuery::setFacetSort — Determines the ordering of the facet field constraints

说明

public SolrQuery SolrQuery::setFacetSort ( int $facetSort [, string $field_override ] )

Determines the ordering of the facet field constraints

参数

facetSort

Use SolrQuery::FACET_SORT_INDEX for sorting by index order or SolrQuery::FACET_SORT_COUNT for sorting by count.

field_override

The name of the field.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setFacetPrefix
SolrQuery::setGroup
SolrQuery


Enable/Disable result grouping (group parameter)

SolrQuery::setFacetSort
SolrQuery::setGroupCachePercent
SolrQuery
PHP Manual

SolrQuery::setGroup

(PECL solr >= 2.2.0)

SolrQuery::setGroup — Enable/Disable result grouping (group parameter)

说明

public SolrQuery SolrQuery::setGroup ( bool $value )

Enable/Disable result grouping (group parameter)

参数

value

返回值

参见

  • SolrQuery::getGroup() - Returns true if grouping is enabled
  • SolrQuery::addGroupField() - Add a field to be used to group results.
  • SolrQuery::addGroupFunction() - Allows grouping results based on the unique values of a function query (group.func parameter).
  • SolrQuery::addGroupQuery() - Allows grouping of documents that match the given query.
  • SolrQuery::addGroupSortField() - Add a group sort field (group.sort parameter).
  • SolrQuery::setGroupFacet() - Sets group.facet parameter
  • SolrQuery::setGroupOffset() - Sets the group.offset parameter.
  • SolrQuery::setGroupLimit() - Specifies the number of results to return for each group. The server default value is 1.
  • SolrQuery::setGroupMain() - If true, the result of the first field grouping command is used as the main result list in the response, using group.format=simple.
  • SolrQuery::setGroupNGroups() - If true, Solr includes the number of groups that have matched the query in the results.
  • SolrQuery::setGroupTruncate() - If true, facet counts are based on the most relevant document of each group matching the query.
  • SolrQuery::setGroupFormat() - Sets the group format, result structure (group.format parameter).
  • SolrQuery::setGroupCachePercent() - Enables caching for result grouping
SolrQuery::setFacetSort
SolrQuery::setGroupCachePercent
SolrQuery


Enables caching for result grouping

SolrQuery::setGroup
SolrQuery::setGroupFacet
SolrQuery
PHP Manual

SolrQuery::setGroupCachePercent

(PECL solr >= 2.2.0)

SolrQuery::setGroupCachePercent — Enables caching for result grouping

说明

public SolrQuery SolrQuery::setGroupCachePercent ( integer $percent )

Setting this parameter to a number greater than 0 enables caching for result grouping. Result Grouping executes two searches; this option caches the second search. The server default value is 0. Testing has shown that group caching only improves search time with Boolean, wildcard, and fuzzy queries. For simple queries like term or "match all" queries, group caching degrades performance. group.cache.percent parameter

参数

percent

返回值

错误／异常

Emits SolrIllegalArgumentException in case of an invalid parameter was passed.

参见

  • SolrQuery::setGroup() - Enable/Disable result grouping (group parameter)
  • SolrQuery::addGroupField() - Add a field to be used to group results.
  • SolrQuery::addGroupFunction() - Allows grouping results based on the unique values of a function query (group.func parameter).
  • SolrQuery::addGroupQuery() - Allows grouping of documents that match the given query.
  • SolrQuery::addGroupSortField() - Add a group sort field (group.sort parameter).
  • SolrQuery::setGroupFacet() - Sets group.facet parameter
  • SolrQuery::setGroupOffset() - Sets the group.offset parameter.
  • SolrQuery::setGroupLimit() - Specifies the number of results to return for each group. The server default value is 1.
  • SolrQuery::setGroupMain() - If true, the result of the first field grouping command is used as the main result list in the response, using group.format=simple.
  • SolrQuery::setGroupNGroups() - If true, Solr includes the number of groups that have matched the query in the results.
  • SolrQuery::setGroupTruncate() - If true, facet counts are based on the most relevant document of each group matching the query.
  • SolrQuery::setGroupFormat() - Sets the group format, result structure (group.format parameter).
SolrQuery::setGroup
SolrQuery::setGroupFacet
SolrQuery


Sets group.facet parameter

SolrQuery::setGroupCachePercent
SolrQuery::setGroupFormat
SolrQuery
PHP Manual

SolrQuery::setGroupFacet

(PECL solr >= 2.2.0)

SolrQuery::setGroupFacet — Sets group.facet parameter

说明

public SolrQuery SolrQuery::setGroupFacet ( bool $value )

Determines whether to compute grouped facets for the field facets specified in facet.field parameters. Grouped facets are computed based on the first specified group.

参数

value

返回值

参见

  • SolrQuery::setGroup() - Enable/Disable result grouping (group parameter)
  • SolrQuery::addGroupField() - Add a field to be used to group results.
  • SolrQuery::addGroupFunction() - Allows grouping results based on the unique values of a function query (group.func parameter).
  • SolrQuery::addGroupQuery() - Allows grouping of documents that match the given query.
  • SolrQuery::addGroupSortField() - Add a group sort field (group.sort parameter).
  • SolrQuery::setGroupOffset() - Sets the group.offset parameter.
  • SolrQuery::setGroupLimit() - Specifies the number of results to return for each group. The server default value is 1.
  • SolrQuery::setGroupMain() - If true, the result of the first field grouping command is used as the main result list in the response, using group.format=simple.
  • SolrQuery::setGroupNGroups() - If true, Solr includes the number of groups that have matched the query in the results.
  • SolrQuery::setGroupTruncate() - If true, facet counts are based on the most relevant document of each group matching the query.
  • SolrQuery::setGroupFormat() - Sets the group format, result structure (group.format parameter).
  • SolrQuery::setGroupCachePercent() - Enables caching for result grouping
SolrQuery::setGroupCachePercent
SolrQuery::setGroupFormat
SolrQuery


Sets the group format, result structure (group.format parameter).

SolrQuery::setGroupFacet
SolrQuery::setGroupLimit
SolrQuery
PHP Manual

SolrQuery::setGroupFormat

(PECL solr >= 2.2.0)

SolrQuery::setGroupFormat — Sets the group format, result structure (group.format parameter).

说明

public SolrQuery SolrQuery::setGroupFormat ( string $value )

Sets the group.format parameter. If this parameter is set to simple, the grouped documents are presented in a single flat list, and the start and rows parameters affect the numbers of documents instead of groups. Accepts: grouped/simple

参数

value

返回值

参见

  • SolrQuery::setGroup() - Enable/Disable result grouping (group parameter)
  • SolrQuery::addGroupField() - Add a field to be used to group results.
  • SolrQuery::addGroupFunction() - Allows grouping results based on the unique values of a function query (group.func parameter).
  • SolrQuery::addGroupQuery() - Allows grouping of documents that match the given query.
  • SolrQuery::addGroupSortField() - Add a group sort field (group.sort parameter).
  • SolrQuery::setGroupFacet() - Sets group.facet parameter
  • SolrQuery::setGroupOffset() - Sets the group.offset parameter.
  • SolrQuery::setGroupLimit() - Specifies the number of results to return for each group. The server default value is 1.
  • SolrQuery::setGroupMain() - If true, the result of the first field grouping command is used as the main result list in the response, using group.format=simple.
  • SolrQuery::setGroupNGroups() - If true, Solr includes the number of groups that have matched the query in the results.
  • SolrQuery::setGroupTruncate() - If true, facet counts are based on the most relevant document of each group matching the query.
  • SolrQuery::setGroupCachePercent() - Enables caching for result grouping
SolrQuery::setGroupFacet
SolrQuery::setGroupLimit
SolrQuery


Specifies the number of results to return for each group. The server default value is 1.

SolrQuery::setGroupFormat
SolrQuery::setGroupMain
SolrQuery
PHP Manual

SolrQuery::setGroupLimit

(PECL solr >= 2.2.0)

SolrQuery::setGroupLimit — Specifies the number of results to return for each group. The server default value is 1.

说明

public SolrQuery SolrQuery::setGroupLimit ( integer $value )

Specifies the number of results to return for each group. The server default value is 1.

参数

value

返回值

参见

  • SolrQuery::setGroup() - Enable/Disable result grouping (group parameter)
  • SolrQuery::addGroupField() - Add a field to be used to group results.
  • SolrQuery::addGroupFunction() - Allows grouping results based on the unique values of a function query (group.func parameter).
  • SolrQuery::addGroupQuery() - Allows grouping of documents that match the given query.
  • SolrQuery::addGroupSortField() - Add a group sort field (group.sort parameter).
  • SolrQuery::setGroupFacet() - Sets group.facet parameter
  • SolrQuery::setGroupOffset() - Sets the group.offset parameter.
  • SolrQuery::setGroupMain() - If true, the result of the first field grouping command is used as the main result list in the response, using group.format=simple.
  • SolrQuery::setGroupNGroups() - If true, Solr includes the number of groups that have matched the query in the results.
  • SolrQuery::setGroupTruncate() - If true, facet counts are based on the most relevant document of each group matching the query.
  • SolrQuery::setGroupFormat() - Sets the group format, result structure (group.format parameter).
  • SolrQuery::setGroupCachePercent() - Enables caching for result grouping
SolrQuery::setGroupFormat
SolrQuery::setGroupMain
SolrQuery


If true, the result of the first field grouping command is used as the main result list in the response, using group.format=simple.

SolrQuery::setGroupLimit
SolrQuery::setGroupNGroups
SolrQuery
PHP Manual

SolrQuery::setGroupMain

(PECL solr >= 2.2.0)

SolrQuery::setGroupMain — If true, the result of the first field grouping command is used as the main result list in the response, using group.format=simple.

说明

public SolrQuery SolrQuery::setGroupMain ( string $value )

If true, the result of the first field grouping command is used as the main result list in the response, using group.format=simple.

参数

value

返回值

参见

参见

  • SolrQuery::setGroup() - Enable/Disable result grouping (group parameter)
  • SolrQuery::addGroupField() - Add a field to be used to group results.
  • SolrQuery::addGroupFunction() - Allows grouping results based on the unique values of a function query (group.func parameter).
  • SolrQuery::addGroupQuery() - Allows grouping of documents that match the given query.
  • SolrQuery::addGroupSortField() - Add a group sort field (group.sort parameter).
  • SolrQuery::setGroupFacet() - Sets group.facet parameter
  • SolrQuery::setGroupOffset() - Sets the group.offset parameter.
  • SolrQuery::setGroupMain()
  • SolrQuery::setGroupNGroups() - If true, Solr includes the number of groups that have matched the query in the results.
  • SolrQuery::setGroupTruncate() - If true, facet counts are based on the most relevant document of each group matching the query.
  • SolrQuery::setGroupFormat() - Sets the group format, result structure (group.format parameter).
  • SolrQuery::setGroupCachePercent() - Enables caching for result grouping
SolrQuery::setGroupLimit
SolrQuery::setGroupNGroups
SolrQuery


If true, Solr includes the number of groups that have matched the query in the results.

SolrQuery::setGroupMain
SolrQuery::setGroupOffset
SolrQuery
PHP Manual

SolrQuery::setGroupNGroups

(PECL solr >= 2.2.0)

SolrQuery::setGroupNGroups — If true, Solr includes the number of groups that have matched the query in the results.

说明

public SolrQuery SolrQuery::setGroupNGroups ( bool $value )

If true, Solr includes the number of groups that have matched the query in the results.

参数

value

返回值

参见

  • SolrQuery::setGroup() - Enable/Disable result grouping (group parameter)
  • SolrQuery::addGroupField() - Add a field to be used to group results.
  • SolrQuery::addGroupFunction() - Allows grouping results based on the unique values of a function query (group.func parameter).
  • SolrQuery::addGroupQuery() - Allows grouping of documents that match the given query.
  • SolrQuery::addGroupSortField() - Add a group sort field (group.sort parameter).
  • SolrQuery::setGroupFacet() - Sets group.facet parameter
  • SolrQuery::setGroupOffset() - Sets the group.offset parameter.
  • SolrQuery::setGroupLimit() - Specifies the number of results to return for each group. The server default value is 1.
  • SolrQuery::setGroupMain() - If true, the result of the first field grouping command is used as the main result list in the response, using group.format=simple.
  • SolrQuery::setGroupTruncate() - If true, facet counts are based on the most relevant document of each group matching the query.
  • SolrQuery::setGroupFormat() - Sets the group format, result structure (group.format parameter).
  • SolrQuery::setGroupCachePercent() - Enables caching for result grouping
SolrQuery::setGroupMain
SolrQuery::setGroupOffset
SolrQuery


Sets the group.offset parameter.

SolrQuery::setGroupNGroups
SolrQuery::setGroupTruncate
SolrQuery
PHP Manual

SolrQuery::setGroupOffset

(PECL solr >= 2.2.0)

SolrQuery::setGroupOffset — Sets the group.offset parameter.

说明

public SolrQuery SolrQuery::setGroupOffset ( integer $value )

Sets the group.offset parameter.

参数

value

返回值

参见

  • SolrQuery::setGroup() - Enable/Disable result grouping (group parameter)
  • SolrQuery::addGroupField() - Add a field to be used to group results.
  • SolrQuery::addGroupFunction() - Allows grouping results based on the unique values of a function query (group.func parameter).
  • SolrQuery::addGroupQuery() - Allows grouping of documents that match the given query.
  • SolrQuery::addGroupSortField() - Add a group sort field (group.sort parameter).
  • SolrQuery::setGroupFacet() - Sets group.facet parameter
  • SolrQuery::setGroupLimit() - Specifies the number of results to return for each group. The server default value is 1.
  • SolrQuery::setGroupMain() - If true, the result of the first field grouping command is used as the main result list in the response, using group.format=simple.
  • SolrQuery::setGroupNGroups() - If true, Solr includes the number of groups that have matched the query in the results.
  • SolrQuery::setGroupTruncate() - If true, facet counts are based on the most relevant document of each group matching the query.
  • SolrQuery::setGroupFormat() - Sets the group format, result structure (group.format parameter).
  • SolrQuery::setGroupCachePercent() - Enables caching for result grouping
SolrQuery::setGroupNGroups
SolrQuery::setGroupTruncate
SolrQuery


If true, facet counts are based on the most relevant document of each group matching the query.

SolrQuery::setGroupOffset
SolrQuery::setHighlight
SolrQuery
PHP Manual

SolrQuery::setGroupTruncate

(PECL solr >= 2.2.0)

SolrQuery::setGroupTruncate — If true, facet counts are based on the most relevant document of each group matching the query.

说明

public SolrQuery SolrQuery::setGroupTruncate ( bool $value )

If true, facet counts are based on the most relevant document of each group matching the query. The server default value is false. group.truncate parameter

参数

value

返回值

参见

  • SolrQuery::setGroup() - Enable/Disable result grouping (group parameter)
  • SolrQuery::addGroupField() - Add a field to be used to group results.
  • SolrQuery::addGroupFunction() - Allows grouping results based on the unique values of a function query (group.func parameter).
  • SolrQuery::addGroupQuery() - Allows grouping of documents that match the given query.
  • SolrQuery::addGroupSortField() - Add a group sort field (group.sort parameter).
  • SolrQuery::setGroupFacet() - Sets group.facet parameter
  • SolrQuery::setGroupOffset() - Sets the group.offset parameter.
  • SolrQuery::setGroupLimit() - Specifies the number of results to return for each group. The server default value is 1.
  • SolrQuery::setGroupMain() - If true, the result of the first field grouping command is used as the main result list in the response, using group.format=simple.
  • SolrQuery::setGroupNGroups() - If true, Solr includes the number of groups that have matched the query in the results.
  • SolrQuery::setGroupFormat() - Sets the group format, result structure (group.format parameter).
  • SolrQuery::setGroupCachePercent() - Enables caching for result grouping
SolrQuery::setGroupOffset
SolrQuery::setHighlight
SolrQuery


Enables or disables highlighting

SolrQuery::setGroupTruncate
SolrQuery::setHighlightAlternateField
SolrQuery
PHP Manual

SolrQuery::setHighlight

(PECL solr >= 0.9.2)

SolrQuery::setHighlight — Enables or disables highlighting

说明

public SolrQuery SolrQuery::setHighlight ( bool $flag )

Setting it to TRUE enables highlighted snippets to be generated in the query response.

Setting it to FALSE disables highlighting

参数

flag

Enable or disable highlighting

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setGroupTruncate
SolrQuery::setHighlightAlternateField
SolrQuery


Specifies the backup field to use

SolrQuery::setHighlight
SolrQuery::setHighlightFormatter
SolrQuery
PHP Manual

SolrQuery::setHighlightAlternateField

(PECL solr >= 0.9.2)

SolrQuery::setHighlightAlternateField — Specifies the backup field to use

说明

public SolrQuery SolrQuery::setHighlightAlternateField ( string $field [, string $field_override ] )

If a snippet cannot be generated because there were no matching terms, one can specify a field to use as the backup or default summary

参数

field

The name of the backup field

field_override

The name of the field we are overriding this setting for.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setHighlight
SolrQuery::setHighlightFormatter
SolrQuery


Specify a formatter for the highlight output

SolrQuery::setHighlightAlternateField
SolrQuery::setHighlightFragmenter
SolrQuery
PHP Manual

SolrQuery::setHighlightFormatter

(PECL solr >= 0.9.2)

SolrQuery::setHighlightFormatter — Specify a formatter for the highlight output

说明

public SolrQuery SolrQuery::setHighlightFormatter ( string $formatter [, string $field_override ] )

Specify a formatter for the highlight output.

参数

formatter

Currently the only legal value is "simple"

field_override

The name of the field.

SolrQuery::setHighlightAlternateField
SolrQuery::setHighlightFragmenter
SolrQuery


Sets a text snippet generator for highlighted text

SolrQuery::setHighlightFormatter
SolrQuery::setHighlightFragsize
SolrQuery
PHP Manual

SolrQuery::setHighlightFragmenter

(PECL solr >= 0.9.2)

SolrQuery::setHighlightFragmenter — Sets a text snippet generator for highlighted text

说明

public SolrQuery SolrQuery::setHighlightFragmenter ( string $fragmenter [, string $field_override ] )

Specify a text snippet generator for highlighted text.

参数

fragmenter

The standard fragmenter is gap. Another option is regex, which tries to create fragments that resembles a certain regular expression

field_override

The name of the field.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setHighlightFormatter
SolrQuery::setHighlightFragsize
SolrQuery


The size of fragments to consider for highlighting

SolrQuery::setHighlightFragmenter
SolrQuery::setHighlightHighlightMultiTerm
SolrQuery
PHP Manual

SolrQuery::setHighlightFragsize

(PECL solr >= 0.9.2)

SolrQuery::setHighlightFragsize — The size of fragments to consider for highlighting

说明

public SolrQuery SolrQuery::setHighlightFragsize ( int $size [, string $field_override ] )

Sets the size, in characters, of fragments to consider for highlighting. "0" indicates that the whole field value should be used (no fragmenting).

参数

size

The size, in characters, of fragments to consider for highlighting

field_override

The name of the field.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setHighlightFragmenter
SolrQuery::setHighlightHighlightMultiTerm
SolrQuery


Use SpanScorer to highlight phrase terms

SolrQuery::setHighlightFragsize
SolrQuery::setHighlightMaxAlternateFieldLength
SolrQuery
PHP Manual

SolrQuery::setHighlightHighlightMultiTerm

(PECL solr >= 0.9.2)

SolrQuery::setHighlightHighlightMultiTerm — Use SpanScorer to highlight phrase terms

说明

public SolrQuery SolrQuery::setHighlightHighlightMultiTerm ( bool $flag )

Use SpanScorer to highlight phrase terms only when they appear within the query phrase in the document.

参数

flag

Whether or not to use SpanScorer to highlight phrase terms only when they appear within the query phrase in the document.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setHighlightFragsize
SolrQuery::setHighlightMaxAlternateFieldLength
SolrQuery


Sets the maximum number of characters of the field to return

SolrQuery::setHighlightHighlightMultiTerm
SolrQuery::setHighlightMaxAnalyzedChars
SolrQuery
PHP Manual

SolrQuery::setHighlightMaxAlternateFieldLength

(PECL solr >= 0.9.2)

SolrQuery::setHighlightMaxAlternateFieldLength — Sets the maximum number of characters of the field to return

说明

public SolrQuery SolrQuery::setHighlightMaxAlternateFieldLength ( int $fieldLength [, string $field_override ] )

If SolrQuery::setHighlightAlternateField() was passed the value TRUE, this parameter specifies the maximum number of characters of the field to return

Any value less than or equal to 0 means unlimited.

参数

fieldLength

The length of the field

field_override

The name of the field.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setHighlightHighlightMultiTerm
SolrQuery::setHighlightMaxAnalyzedChars
SolrQuery


Specifies the number of characters into a document to look for suitable snippets

SolrQuery::setHighlightMaxAlternateFieldLength
SolrQuery::setHighlightMergeContiguous
SolrQuery
PHP Manual

SolrQuery::setHighlightMaxAnalyzedChars

(PECL solr >= 0.9.2)

SolrQuery::setHighlightMaxAnalyzedChars — Specifies the number of characters into a document to look for suitable snippets

说明

public SolrQuery SolrQuery::setHighlightMaxAnalyzedChars ( int $value )

Specifies the number of characters into a document to look for suitable snippets

参数

value

The number of characters into a document to look for suitable snippets

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setHighlightMaxAlternateFieldLength
SolrQuery::setHighlightMergeContiguous
SolrQuery


Whether or not to collapse contiguous fragments into a single fragment

SolrQuery::setHighlightMaxAnalyzedChars
SolrQuery::setHighlightRegexMaxAnalyzedChars
SolrQuery
PHP Manual

SolrQuery::setHighlightMergeContiguous

(PECL solr >= 0.9.2)

SolrQuery::setHighlightMergeContiguous — Whether or not to collapse contiguous fragments into a single fragment

说明

public SolrQuery SolrQuery::setHighlightMergeContiguous ( bool $flag [, string $field_override ] )

Whether or not to collapse contiguous fragments into a single fragment

参数

value

Whether or not to collapse contiguous fragments into a single fragment

field_override

The name of the field.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setHighlightMaxAnalyzedChars
SolrQuery::setHighlightRegexMaxAnalyzedChars
SolrQuery


Specify the maximum number of characters to analyze

SolrQuery::setHighlightMergeContiguous
SolrQuery::setHighlightRegexPattern
SolrQuery
PHP Manual

SolrQuery::setHighlightRegexMaxAnalyzedChars

(PECL solr >= 0.9.2)

SolrQuery::setHighlightRegexMaxAnalyzedChars — Specify the maximum number of characters to analyze

说明

public SolrQuery SolrQuery::setHighlightRegexMaxAnalyzedChars ( int $maxAnalyzedChars )

Specify the maximum number of characters to analyze from a field when using the regex fragmenter

参数

maxAnalyzedChars

The maximum number of characters to analyze from a field when using the regex fragmenter

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setHighlightMergeContiguous
SolrQuery::setHighlightRegexPattern
SolrQuery


Specify the regular expression for fragmenting

SolrQuery::setHighlightRegexMaxAnalyzedChars
SolrQuery::setHighlightRegexSlop
SolrQuery
PHP Manual

SolrQuery::setHighlightRegexPattern

(PECL solr >= 0.9.2)

SolrQuery::setHighlightRegexPattern — Specify the regular expression for fragmenting

说明

public SolrQuery SolrQuery::setHighlightRegexPattern ( string $value )

Specifies the regular expression for fragmenting. This could be used to extract sentences

参数

value

The regular expression for fragmenting. This could be used to extract sentences

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setHighlightRegexMaxAnalyzedChars
SolrQuery::setHighlightRegexSlop
SolrQuery


Sets the factor by which the regex fragmenter can stray from the ideal fragment size

SolrQuery::setHighlightRegexPattern
SolrQuery::setHighlightRequireFieldMatch
SolrQuery
PHP Manual

SolrQuery::setHighlightRegexSlop

(PECL solr >= 0.9.2)

SolrQuery::setHighlightRegexSlop — Sets the factor by which the regex fragmenter can stray from the ideal fragment size

说明

public SolrQuery SolrQuery::setHighlightRegexSlop ( float $factor )

The factor by which the regex fragmenter can stray from the ideal fragment size ( specfied by SolrQuery::setHighlightFragsize )to accommodate the regular expression

参数

factor

The factor by which the regex fragmenter can stray from the ideal fragment size

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setHighlightRegexPattern
SolrQuery::setHighlightRequireFieldMatch
SolrQuery


Require field matching during highlighting

SolrQuery::setHighlightRegexSlop
SolrQuery::setHighlightSimplePost
SolrQuery
PHP Manual

SolrQuery::setHighlightRequireFieldMatch

(PECL solr >= 0.9.2)

SolrQuery::setHighlightRequireFieldMatch — Require field matching during highlighting

说明

public SolrQuery SolrQuery::setHighlightRequireFieldMatch ( bool $flag )

If TRUE, then a field will only be highlighted if the query matched in this particular field.

This will only work if SolrQuery::setHighlightUsePhraseHighlighter() was set to TRUE

参数

flag

TRUE or FALSE

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setHighlightRegexSlop
SolrQuery::setHighlightSimplePost
SolrQuery


Sets the text which appears after a highlighted term

SolrQuery::setHighlightRequireFieldMatch
SolrQuery::setHighlightSimplePre
SolrQuery
PHP Manual

SolrQuery::setHighlightSimplePost

(PECL solr >= 0.9.2)

SolrQuery::setHighlightSimplePost — Sets the text which appears after a highlighted term

说明

public SolrQuery SolrQuery::setHighlightSimplePost ( string $simplePost [, string $field_override ] )

Sets the text which appears before a highlighted term

参数

simplePost

Sets the text which appears after a highlighted term

The default is </em>

field_override

The name of the field.

SolrQuery::setHighlightRequireFieldMatch
SolrQuery::setHighlightSimplePre
SolrQuery


Sets the text which appears before a highlighted term

SolrQuery::setHighlightSimplePost
SolrQuery::setHighlightSnippets
SolrQuery
PHP Manual

SolrQuery::setHighlightSimplePre

(PECL solr >= 0.9.2)

SolrQuery::setHighlightSimplePre — Sets the text which appears before a highlighted term

说明

public SolrQuery SolrQuery::setHighlightSimplePre ( string $simplePre [, string $field_override ] )

Sets the text which appears before a highlighted term

The default is <em>

参数

simplePre

The text which appears before a highlighted term

field_override

The name of the field.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setHighlightSimplePost
SolrQuery::setHighlightSnippets
SolrQuery


Sets the maximum number of highlighted snippets to generate per field

SolrQuery::setHighlightSimplePre
SolrQuery::setHighlightUsePhraseHighlighter
SolrQuery
PHP Manual

SolrQuery::setHighlightSnippets

(PECL solr >= 0.9.2)

SolrQuery::setHighlightSnippets — Sets the maximum number of highlighted snippets to generate per field

说明

public SolrQuery SolrQuery::setHighlightSnippets ( int $value [, string $field_override ] )

Sets the maximum number of highlighted snippets to generate per field

参数

value

The maximum number of highlighted snippets to generate per field

field_override

The name of the field.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setHighlightSimplePre
SolrQuery::setHighlightUsePhraseHighlighter
SolrQuery


Whether to highlight phrase terms only when they appear within the query phrase

SolrQuery::setHighlightSnippets
SolrQuery::setMlt
SolrQuery
PHP Manual

SolrQuery::setHighlightUsePhraseHighlighter

(PECL solr >= 0.9.2)

SolrQuery::setHighlightUsePhraseHighlighter — Whether to highlight phrase terms only when they appear within the query phrase

说明

public SolrQuery SolrQuery::setHighlightUsePhraseHighlighter ( bool $flag )

Sets whether or not to use SpanScorer to highlight phrase terms only when they appear within the query phrase in the document

参数

value

Whether or not to use SpanScorer to highlight phrase terms only when they appear within the query phrase in the document

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setHighlightSnippets
SolrQuery::setMlt
SolrQuery


Enables or disables moreLikeThis

SolrQuery::setHighlightUsePhraseHighlighter
SolrQuery::setMltBoost
SolrQuery
PHP Manual

SolrQuery::setMlt

(PECL solr >= 0.9.2)

SolrQuery::setMlt — Enables or disables moreLikeThis

说明

public SolrQuery SolrQuery::setMlt ( bool $flag )

Enables or disables moreLikeThis

参数

flag

TRUE enables it and FALSE turns it off.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setHighlightUsePhraseHighlighter
SolrQuery::setMltBoost
SolrQuery


Set if the query will be boosted by the interesting term relevance

SolrQuery::setMlt
SolrQuery::setMltCount
SolrQuery
PHP Manual

SolrQuery::setMltBoost

(PECL solr >= 0.9.2)

SolrQuery::setMltBoost — Set if the query will be boosted by the interesting term relevance

说明

public SolrQuery SolrQuery::setMltBoost ( bool $flag )

Set if the query will be boosted by the interesting term relevance

参数

value

Sets to TRUE or FALSE

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setMlt
SolrQuery::setMltCount
SolrQuery


Set the number of similar documents to return for each result

SolrQuery::setMltBoost
SolrQuery::setMltMaxNumQueryTerms
SolrQuery
PHP Manual

SolrQuery::setMltCount

(PECL solr >= 0.9.2)

SolrQuery::setMltCount — Set the number of similar documents to return for each result

说明

public SolrQuery SolrQuery::setMltCount ( int $count )

Set the number of similar documents to return for each result

参数

count

The number of similar documents to return for each result

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setMltBoost
SolrQuery::setMltMaxNumQueryTerms
SolrQuery


Sets the maximum number of query terms included

SolrQuery::setMltCount
SolrQuery::setMltMaxNumTokens
SolrQuery
PHP Manual

SolrQuery::setMltMaxNumQueryTerms

(PECL solr >= 0.9.2)

SolrQuery::setMltMaxNumQueryTerms — Sets the maximum number of query terms included

说明

public SolrQuery SolrQuery::setMltMaxNumQueryTerms ( int $value )

Sets the maximum number of query terms that will be included in any generated query.

参数

value

The maximum number of query terms that will be included in any generated query

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setMltCount
SolrQuery::setMltMaxNumTokens
SolrQuery


Specifies the maximum number of tokens to parse

SolrQuery::setMltMaxNumQueryTerms
SolrQuery::setMltMaxWordLength
SolrQuery
PHP Manual

SolrQuery::setMltMaxNumTokens

(PECL solr >= 0.9.2)

SolrQuery::setMltMaxNumTokens — Specifies the maximum number of tokens to parse

说明

public SolrQuery SolrQuery::setMltMaxNumTokens ( int $value )

Specifies the maximum number of tokens to parse in each example doc field that is not stored with TermVector support.

参数

value

The maximum number of tokens to parse

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setMltMaxNumQueryTerms
SolrQuery::setMltMaxWordLength
SolrQuery


Sets the maximum word length

SolrQuery::setMltMaxNumTokens
SolrQuery::setMltMinDocFrequency
SolrQuery
PHP Manual

SolrQuery::setMltMaxWordLength

(PECL solr >= 0.9.2)

SolrQuery::setMltMaxWordLength — Sets the maximum word length

说明

public SolrQuery SolrQuery::setMltMaxWordLength ( int $maxWordLength )

Sets the maximum word length above which words will be ignored.

参数

maxWordLength

The maximum word length above which words will be ignored

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setMltMaxNumTokens
SolrQuery::setMltMinDocFrequency
SolrQuery


Sets the mltMinDoc frequency

SolrQuery::setMltMaxWordLength
SolrQuery::setMltMinTermFrequency
SolrQuery
PHP Manual

SolrQuery::setMltMinDocFrequency

(PECL solr >= 0.9.2)

SolrQuery::setMltMinDocFrequency — Sets the mltMinDoc frequency

说明

public SolrQuery SolrQuery::setMltMinDocFrequency ( int $minDocFrequency )

The frequency at which words will be ignored which do not occur in at least this many docs.

参数

minDocFrequency

Sets the frequency at which words will be ignored which do not occur in at least this many docs.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setMltMaxWordLength
SolrQuery::setMltMinTermFrequency
SolrQuery


Sets the frequency below which terms will be ignored in the source docs

SolrQuery::setMltMinDocFrequency
SolrQuery::setMltMinWordLength
SolrQuery
PHP Manual

SolrQuery::setMltMinTermFrequency

(PECL solr >= 0.9.2)

SolrQuery::setMltMinTermFrequency — Sets the frequency below which terms will be ignored in the source docs

说明

public SolrQuery SolrQuery::setMltMinTermFrequency ( int $minTermFrequency )

Sets the frequency below which terms will be ignored in the source docs

参数

minTermFrequency

The frequency below which terms will be ignored in the source docs

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setMltMinDocFrequency
SolrQuery::setMltMinWordLength
SolrQuery


Sets the minimum word length

SolrQuery::setMltMinTermFrequency
SolrQuery::setOmitHeader
SolrQuery
PHP Manual

SolrQuery::setMltMinWordLength

(PECL solr >= 0.9.2)

SolrQuery::setMltMinWordLength — Sets the minimum word length

说明

public SolrQuery SolrQuery::setMltMinWordLength ( int $minWordLength )

Sets the minimum word length below which words will be ignored.

参数

minWordLength

The minimum word length below which words will be ignored

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setMltMinTermFrequency
SolrQuery::setOmitHeader
SolrQuery


Exclude the header from the returned results

SolrQuery::setMltMinWordLength
SolrQuery::setQuery
SolrQuery
PHP Manual

SolrQuery::setOmitHeader

(PECL solr >= 0.9.2)

SolrQuery::setOmitHeader — Exclude the header from the returned results

说明

public SolrQuery SolrQuery::setOmitHeader ( bool $flag )

Exclude the header from the returned results.

参数

flag

TRUE excludes the header from the result.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setMltMinWordLength
SolrQuery::setQuery
SolrQuery


Sets the search query

SolrQuery::setOmitHeader
SolrQuery::setRows
SolrQuery
PHP Manual

SolrQuery::setQuery

(PECL solr >= 0.9.2)

SolrQuery::setQuery — Sets the search query

说明

public SolrQuery SolrQuery::setQuery ( string $query )

Sets the search query.

参数

query

The search query

返回值

Returns the current SolrQuery object

SolrQuery::setOmitHeader
SolrQuery::setRows
SolrQuery


Specifies the maximum number of rows to return in the result

SolrQuery::setQuery
SolrQuery::setShowDebugInfo
SolrQuery
PHP Manual

SolrQuery::setRows

(PECL solr >= 0.9.2)

SolrQuery::setRows — Specifies the maximum number of rows to return in the result

说明

public SolrQuery SolrQuery::setRows ( int $rows )

Specifies the maximum number of rows to return in the result

参数

rows

The maximum number of rows to return

返回值

Returns the current SolrQuery object.

SolrQuery::setQuery
SolrQuery::setShowDebugInfo
SolrQuery


Flag to show debug information

SolrQuery::setRows
SolrQuery::setStart
SolrQuery
PHP Manual

SolrQuery::setShowDebugInfo

(PECL solr >= 0.9.2)

SolrQuery::setShowDebugInfo — Flag to show debug information

说明

public SolrQuery SolrQuery::setShowDebugInfo ( bool $flag )

Whether to show debug info

参数

flag

Whether to show debug info. TRUE or FALSE

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setRows
SolrQuery::setStart
SolrQuery


Specifies the number of rows to skip

SolrQuery::setShowDebugInfo
SolrQuery::setStats
SolrQuery
PHP Manual

SolrQuery::setStart

(PECL solr >= 0.9.2)

SolrQuery::setStart — Specifies the number of rows to skip

说明

public SolrQuery SolrQuery::setStart ( int $start )

Specifies the number of rows to skip. Useful in pagination of results.

参数

start

The number of rows to skip.

返回值

Returns the current SolrQuery object.

SolrQuery::setShowDebugInfo
SolrQuery::setStats
SolrQuery


Enables or disables the Stats component

SolrQuery::setStart
SolrQuery::setTerms
SolrQuery
PHP Manual

SolrQuery::setStats

(PECL solr >= 0.9.2)

SolrQuery::setStats — Enables or disables the Stats component

说明

public SolrQuery SolrQuery::setStats ( bool $flag )

Enables or disables the Stats component.

参数

flag

TRUE turns on the stats component and FALSE disables it.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setStart
SolrQuery::setTerms
SolrQuery


Enables or disables the TermsComponent

SolrQuery::setStats
SolrQuery::setTermsField
SolrQuery
PHP Manual

SolrQuery::setTerms

(PECL solr >= 0.9.2)

SolrQuery::setTerms — Enables or disables the TermsComponent

说明

public SolrQuery SolrQuery::setTerms ( bool $flag )

Enables or disables the TermsComponent

参数

flag

TRUE enables it. FALSE turns it off

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setStats
SolrQuery::setTermsField
SolrQuery


Sets the name of the field to get the Terms from

SolrQuery::setTerms
SolrQuery::setTermsIncludeLowerBound
SolrQuery
PHP Manual

SolrQuery::setTermsField

(PECL solr >= 0.9.2)

SolrQuery::setTermsField — Sets the name of the field to get the Terms from

说明

public SolrQuery SolrQuery::setTermsField ( string $fieldname )

Sets the name of the field to get the terms from

参数

fieldname

The field name

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setTerms
SolrQuery::setTermsIncludeLowerBound
SolrQuery


Include the lower bound term in the result set

SolrQuery::setTermsField
SolrQuery::setTermsIncludeUpperBound
SolrQuery
PHP Manual

SolrQuery::setTermsIncludeLowerBound

(PECL solr >= 0.9.2)

SolrQuery::setTermsIncludeLowerBound — Include the lower bound term in the result set

说明

public SolrQuery SolrQuery::setTermsIncludeLowerBound ( bool $flag )

Include the lower bound term in the result set.

参数

flag

Include the lower bound term in the result set

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setTermsField
SolrQuery::setTermsIncludeUpperBound
SolrQuery


Include the upper bound term in the result set

SolrQuery::setTermsIncludeLowerBound
SolrQuery::setTermsLimit
SolrQuery
PHP Manual

SolrQuery::setTermsIncludeUpperBound

(PECL solr >= 0.9.2)

SolrQuery::setTermsIncludeUpperBound — Include the upper bound term in the result set

说明

public SolrQuery SolrQuery::setTermsIncludeUpperBound ( bool $flag )

Include the upper bound term in the result set.

参数

flag

TRUE or FALSE

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setTermsIncludeLowerBound
SolrQuery::setTermsLimit
SolrQuery


Sets the maximum number of terms to return

SolrQuery::setTermsIncludeUpperBound
SolrQuery::setTermsLowerBound
SolrQuery
PHP Manual

SolrQuery::setTermsLimit

(PECL solr >= 0.9.2)

SolrQuery::setTermsLimit — Sets the maximum number of terms to return

说明

public SolrQuery SolrQuery::setTermsLimit ( int $limit )

Sets the maximum number of terms to return

参数

limit

The maximum number of terms to return. All the terms will be returned if the limit is negative.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setTermsIncludeUpperBound
SolrQuery::setTermsLowerBound
SolrQuery


Specifies the Term to start from

SolrQuery::setTermsLimit
SolrQuery::setTermsMaxCount
SolrQuery
PHP Manual

SolrQuery::setTermsLowerBound

(PECL solr >= 0.9.2)

SolrQuery::setTermsLowerBound — Specifies the Term to start from

说明

public SolrQuery SolrQuery::setTermsLowerBound ( string $lowerBound )

Specifies the Term to start from

参数

lowerBound

The lower bound Term

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setTermsLimit
SolrQuery::setTermsMaxCount
SolrQuery


Sets the maximum document frequency

SolrQuery::setTermsLowerBound
SolrQuery::setTermsMinCount
SolrQuery
PHP Manual

SolrQuery::setTermsMaxCount

(PECL solr >= 0.9.2)

SolrQuery::setTermsMaxCount — Sets the maximum document frequency

说明

public SolrQuery SolrQuery::setTermsMaxCount ( int $frequency )

Sets the maximum document frequency.

参数

frequency

The maximum document frequency.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setTermsLowerBound
SolrQuery::setTermsMinCount
SolrQuery


Sets the minimum document frequency

SolrQuery::setTermsMaxCount
SolrQuery::setTermsPrefix
SolrQuery
PHP Manual

SolrQuery::setTermsMinCount

(PECL solr >= 0.9.2)

SolrQuery::setTermsMinCount — Sets the minimum document frequency

说明

public SolrQuery SolrQuery::setTermsMinCount ( int $frequency )

Sets the minimum doc frequency to return in order to be included

参数

frequency

The minimum frequency

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setTermsMaxCount
SolrQuery::setTermsPrefix
SolrQuery


Restrict matches to terms that start with the prefix

SolrQuery::setTermsMinCount
SolrQuery::setTermsReturnRaw
SolrQuery
PHP Manual

SolrQuery::setTermsPrefix

(PECL solr >= 0.9.2)

SolrQuery::setTermsPrefix — Restrict matches to terms that start with the prefix

说明

public SolrQuery SolrQuery::setTermsPrefix ( string $prefix )

Restrict matches to terms that start with the prefix

参数

prefix

Restrict matches to terms that start with the prefix

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setTermsMinCount
SolrQuery::setTermsReturnRaw
SolrQuery


Return the raw characters of the indexed term

SolrQuery::setTermsPrefix
SolrQuery::setTermsSort
SolrQuery
PHP Manual

SolrQuery::setTermsReturnRaw

(PECL solr >= 0.9.2)

SolrQuery::setTermsReturnRaw — Return the raw characters of the indexed term

说明

public SolrQuery SolrQuery::setTermsReturnRaw ( bool $flag )

If true, return the raw characters of the indexed term, regardless of if it is human readable

参数

value

TRUE or FALSE

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setTermsPrefix
SolrQuery::setTermsSort
SolrQuery


Specifies how to sort the returned terms

SolrQuery::setTermsReturnRaw
SolrQuery::setTermsUpperBound
SolrQuery
PHP Manual

SolrQuery::setTermsSort

(PECL solr >= 0.9.2)

SolrQuery::setTermsSort — Specifies how to sort the returned terms

说明

public SolrQuery SolrQuery::setTermsSort ( int $sortType )

If SolrQuery::TERMS_SORT_COUNT, sorts the terms by the term frequency (highest count first). If SolrQuery::TERMS_SORT_INDEX, returns the terms in index order

参数

sortType

SolrQuery::TERMS_SORT_INDEX or SolrQuery::TERMS_SORT_COUNT

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setTermsReturnRaw
SolrQuery::setTermsUpperBound
SolrQuery


Sets the term to stop at

SolrQuery::setTermsSort
SolrQuery::setTimeAllowed
SolrQuery
PHP Manual

SolrQuery::setTermsUpperBound

(PECL solr >= 0.9.2)

SolrQuery::setTermsUpperBound — Sets the term to stop at

说明

public SolrQuery SolrQuery::setTermsUpperBound ( string $upperBound )

Sets the term to stop at

参数

upperBound

The term to stop at

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setTermsSort
SolrQuery::setTimeAllowed
SolrQuery


The time allowed for search to finish

SolrQuery::setTermsUpperBound
SolrDisMaxQuery
SolrQuery
PHP Manual

SolrQuery::setTimeAllowed

(PECL solr >= 0.9.2)

SolrQuery::setTimeAllowed — The time allowed for search to finish

说明

public SolrQuery SolrQuery::setTimeAllowed ( int $timeAllowed )

The time allowed for a search to finish. This value only applies to the search and not to requests in general. Time is in milliseconds. Values less than or equal to zero implies no time restriction. Partial results may be returned, if there are any.

参数

timeAllowed

The time allowed for a search to finish.

返回值

Returns the current SolrQuery object, if the return value is used.

SolrQuery::setTermsUpperBound
SolrDisMaxQuery
SolrQuery


The SolrDisMaxQuery class

(No version information available, might only be in Git)

简介

类摘要

SolrDisMaxQuery extends SolrQuery implements Serializable {
/* 继承的属性 */
const integer SolrQuery::ORDER_ASC = 0 ;
const integer SolrQuery::ORDER_DESC = 1 ;
const integer SolrQuery::FACET_SORT_INDEX = 0 ;
const integer SolrQuery::FACET_SORT_COUNT = 1 ;
const integer SolrQuery::TERMS_SORT_INDEX = 0 ;
const integer SolrQuery::TERMS_SORT_COUNT = 1 ;
/* 方法 */
public SolrDisMaxQuery addBigramPhraseField ( string $field , string $boost [, string $slop ] )
public SolrDisMaxQuery addBoostQuery ( string $field , string $value [, string $boost ] )
public SolrDisMaxQuery addPhraseField ( string $field , string $boost [, string $slop ] )
public SolrDisMaxQuery addQueryField ( string $field [, string $boost ] )
public SolrDisMaxQuery addTrigramPhraseField ( string $field , string $boost [, string $slop ] )
public SolrDisMaxQuery addUserField ( string $field )
public __construct ([ string $q ] )
public SolrDisMaxQuery removeBigramPhraseField ( string $field )
public SolrDisMaxQuery removeBoostQuery ( string $field )
public SolrDisMaxQuery removePhraseField ( string $field )
public SolrDisMaxQuery removeQueryField ( string $field )
public SolrDisMaxQuery removeTrigramPhraseField ( string $field )
public SolrDisMaxQuery removeUserField ( string $field )
public SolrDisMaxQuery setBigramPhraseFields ( string $fields )
public SolrDisMaxQuery setBigramPhraseSlop ( string $slop )
public SolrDisMaxQuery setBoostFunction ( string $function )
public SolrDisMaxQuery setBoostQuery ( string $q )
public SolrDisMaxQuery setMinimumMatch ( string $value )
public SolrDisMaxQuery setPhraseFields ( string $fields )
public SolrDisMaxQuery setPhraseSlop ( string $slop )
public SolrDisMaxQuery setQueryAlt ( string $q )
public SolrDisMaxQuery setQueryPhraseSlop ( string $slop )
public SolrDisMaxQuery setTieBreaker ( string $tieBreaker )
public SolrDisMaxQuery setTrigramPhraseFields ( string $fields )
public SolrDisMaxQuery setTrigramPhraseSlop ( string $slop )
public SolrDisMaxQuery setUserFields ( string $fields )
public SolrDisMaxQuery useDisMaxQueryParser ( void )
public SolrDisMaxQuery useEDisMaxQueryParser ( void )
/* 继承的方法 */
public SolrQuery SolrQuery::addExpandFilterQuery ( string $fq )
public SolrQuery SolrQuery::addExpandSortField ( string $field [, string $order ] )
public SolrQuery SolrQuery::addFacetDateField ( string $dateField )
public SolrQuery SolrQuery::addFacetDateOther ( string $value [, string $field_override ] )
public SolrQuery SolrQuery::addFacetField ( string $field )
public SolrQuery SolrQuery::addFacetQuery ( string $facetQuery )
public SolrQuery SolrQuery::addField ( string $field )
public SolrQuery SolrQuery::addFilterQuery ( string $fq )
public SolrQuery SolrQuery::addGroupField ( string $value )
public SolrQuery SolrQuery::addGroupFunction ( string $value )
public SolrQuery SolrQuery::addGroupQuery ( string $value )
public SolrQuery SolrQuery::addGroupSortField ( string $field [, integer $order ] )
public SolrQuery SolrQuery::addHighlightField ( string $field )
public SolrQuery SolrQuery::addMltField ( string $field )
public SolrQuery SolrQuery::addMltQueryField ( string $field , float $boost )
public SolrQuery SolrQuery::addSortField ( string $field [, int $order = SolrQuery::ORDER_DESC ] )
public SolrQuery SolrQuery::addStatsFacet ( string $field )
public SolrQuery SolrQuery::addStatsField ( string $field )
public SolrQuery SolrQuery::collapse ( SolrCollapseFunction $collapseFunction )
public SolrQuery::__construct ([ string $q ] )
public void SolrQuery::__destruct ( void )
public bool SolrQuery::getExpand ( void )
public array SolrQuery::getExpandFilterQueries ( void )
public array SolrQuery::getExpandQuery ( void )
public integer SolrQuery::getExpandRows ( void )
public array SolrQuery::getExpandSortFields ( void )
public bool SolrQuery::getFacet ( void )
public string SolrQuery::getFacetDateEnd ([ string $field_override ] )
public array SolrQuery::getFacetDateFields ( void )
public string SolrQuery::getFacetDateGap ([ string $field_override ] )
public string SolrQuery::getFacetDateHardEnd ([ string $field_override ] )
public array SolrQuery::getFacetDateOther ([ string $field_override ] )
public string SolrQuery::getFacetDateStart ([ string $field_override ] )
public array SolrQuery::getFacetFields ( void )
public int SolrQuery::getFacetLimit ([ string $field_override ] )
public string SolrQuery::getFacetMethod ([ string $field_override ] )
public int SolrQuery::getFacetMinCount ([ string $field_override ] )
public bool SolrQuery::getFacetMissing ([ string $field_override ] )
public int SolrQuery::getFacetOffset ([ string $field_override ] )
public string SolrQuery::getFacetPrefix ([ string $field_override ] )
public array SolrQuery::getFacetQueries ( void )
public int SolrQuery::getFacetSort ([ string $field_override ] )
public array SolrQuery::getFields ( void )
public array SolrQuery::getFilterQueries ( void )
public bool SolrQuery::getGroup ( void )
public integer SolrQuery::getGroupCachePercent ( void )
public bool SolrQuery::getGroupFacet ( void )
public array SolrQuery::getGroupFields ( void )
public string SolrQuery::getGroupFormat ( void )
public array SolrQuery::getGroupFunctions ( void )
public integer SolrQuery::getGroupLimit ( void )
public bool SolrQuery::getGroupMain ( void )
public bool SolrQuery::getGroupNGroups ( void )
public integer SolrQuery::getGroupOffset ( void )
public array SolrQuery::getGroupQueries ( void )
public array SolrQuery::getGroupSortFields ( void )
public bool SolrQuery::getGroupTruncate ( void )
public bool SolrQuery::getHighlight ( void )
public string SolrQuery::getHighlightAlternateField ([ string $field_override ] )
public array SolrQuery::getHighlightFields ( void )
public string SolrQuery::getHighlightFormatter ([ string $field_override ] )
public string SolrQuery::getHighlightFragmenter ([ string $field_override ] )
public int SolrQuery::getHighlightFragsize ([ string $field_override ] )
public bool SolrQuery::getHighlightHighlightMultiTerm ( void )
public int SolrQuery::getHighlightMaxAlternateFieldLength ([ string $field_override ] )
public int SolrQuery::getHighlightMaxAnalyzedChars ( void )
public bool SolrQuery::getHighlightMergeContiguous ([ string $field_override ] )
public int SolrQuery::getHighlightRegexMaxAnalyzedChars ( void )
public string SolrQuery::getHighlightRegexPattern ( void )
public float SolrQuery::getHighlightRegexSlop ( void )
public bool SolrQuery::getHighlightRequireFieldMatch ( void )
public string SolrQuery::getHighlightSimplePost ([ string $field_override ] )
public string SolrQuery::getHighlightSimplePre ([ string $field_override ] )
public int SolrQuery::getHighlightSnippets ([ string $field_override ] )
public bool SolrQuery::getHighlightUsePhraseHighlighter ( void )
public bool SolrQuery::getMlt ( void )
public bool SolrQuery::getMltBoost ( void )
public int SolrQuery::getMltCount ( void )
public array SolrQuery::getMltFields ( void )
public int SolrQuery::getMltMaxNumQueryTerms ( void )
public int SolrQuery::getMltMaxNumTokens ( void )
public int SolrQuery::getMltMaxWordLength ( void )
public int SolrQuery::getMltMinDocFrequency ( void )
public int SolrQuery::getMltMinTermFrequency ( void )
public int SolrQuery::getMltMinWordLength ( void )
public array SolrQuery::getMltQueryFields ( void )
public string SolrQuery::getQuery ( void )
public int SolrQuery::getRows ( void )
public array SolrQuery::getSortFields ( void )
public int SolrQuery::getStart ( void )
public bool SolrQuery::getStats ( void )
public array SolrQuery::getStatsFacets ( void )
public array SolrQuery::getStatsFields ( void )
public bool SolrQuery::getTerms ( void )
public string SolrQuery::getTermsField ( void )
public bool SolrQuery::getTermsIncludeLowerBound ( void )
public bool SolrQuery::getTermsIncludeUpperBound ( void )
public int SolrQuery::getTermsLimit ( void )
public string SolrQuery::getTermsLowerBound ( void )
public int SolrQuery::getTermsMaxCount ( void )
public int SolrQuery::getTermsMinCount ( void )
public string SolrQuery::getTermsPrefix ( void )
public bool SolrQuery::getTermsReturnRaw ( void )
public int SolrQuery::getTermsSort ( void )
public string SolrQuery::getTermsUpperBound ( void )
public int SolrQuery::getTimeAllowed ( void )
public SolrQuery SolrQuery::removeExpandFilterQuery ( string $fq )
public SolrQuery SolrQuery::removeExpandSortField ( string $field )
public SolrQuery SolrQuery::removeFacetDateField ( string $field )
public SolrQuery SolrQuery::removeFacetDateOther ( string $value [, string $field_override ] )
public SolrQuery SolrQuery::removeFacetField ( string $field )
public SolrQuery SolrQuery::removeFacetQuery ( string $value )
public SolrQuery SolrQuery::removeField ( string $field )
public SolrQuery SolrQuery::removeFilterQuery ( string $fq )
public SolrQuery SolrQuery::removeHighlightField ( string $field )
public SolrQuery SolrQuery::removeMltField ( string $field )
public SolrQuery SolrQuery::removeMltQueryField ( string $queryField )
public SolrQuery SolrQuery::removeSortField ( string $field )
public SolrQuery SolrQuery::removeStatsFacet ( string $value )
public SolrQuery SolrQuery::removeStatsField ( string $field )
public SolrQuery SolrQuery::setEchoHandler ( bool $flag )
public SolrQuery SolrQuery::setEchoParams ( string $type )
public SolrQuery SolrQuery::setExpand ( bool $value )
public SolrQuery SolrQuery::setExpandQuery ( string $q )
public SolrQuery SolrQuery::setExpandRows ( integer $value )
public SolrQuery SolrQuery::setExplainOther ( string $query )
public SolrQuery SolrQuery::setFacet ( bool $flag )
public SolrQuery SolrQuery::setFacetDateEnd ( string $value [, string $field_override ] )
public SolrQuery SolrQuery::setFacetDateGap ( string $value [, string $field_override ] )
public SolrQuery SolrQuery::setFacetDateHardEnd ( bool $value [, string $field_override ] )
public SolrQuery SolrQuery::setFacetDateStart ( string $value [, string $field_override ] )
public SolrQuery SolrQuery::setFacetEnumCacheMinDefaultFrequency ( int $frequency [, string $field_override ] )
public SolrQuery SolrQuery::setFacetLimit ( int $limit [, string $field_override ] )
public SolrQuery SolrQuery::setFacetMethod ( string $method [, string $field_override ] )
public SolrQuery SolrQuery::setFacetMinCount ( int $mincount [, string $field_override ] )
public SolrQuery SolrQuery::setFacetMissing ( bool $flag [, string $field_override ] )
public SolrQuery SolrQuery::setFacetOffset ( int $offset [, string $field_override ] )
public SolrQuery SolrQuery::setFacetPrefix ( string $prefix [, string $field_override ] )
public SolrQuery SolrQuery::setFacetSort ( int $facetSort [, string $field_override ] )
public SolrQuery SolrQuery::setGroup ( bool $value )
public SolrQuery SolrQuery::setGroupCachePercent ( integer $percent )
public SolrQuery SolrQuery::setGroupFacet ( bool $value )
public SolrQuery SolrQuery::setGroupFormat ( string $value )
public SolrQuery SolrQuery::setGroupLimit ( integer $value )
public SolrQuery SolrQuery::setGroupMain ( string $value )
public SolrQuery SolrQuery::setGroupNGroups ( bool $value )
public SolrQuery SolrQuery::setGroupOffset ( integer $value )
public SolrQuery SolrQuery::setGroupTruncate ( bool $value )
public SolrQuery SolrQuery::setHighlight ( bool $flag )
public SolrQuery SolrQuery::setHighlightAlternateField ( string $field [, string $field_override ] )
public SolrQuery SolrQuery::setHighlightFormatter ( string $formatter [, string $field_override ] )
public SolrQuery SolrQuery::setHighlightFragmenter ( string $fragmenter [, string $field_override ] )
public SolrQuery SolrQuery::setHighlightFragsize ( int $size [, string $field_override ] )
public SolrQuery SolrQuery::setHighlightHighlightMultiTerm ( bool $flag )
public SolrQuery SolrQuery::setHighlightMaxAlternateFieldLength ( int $fieldLength [, string $field_override ] )
public SolrQuery SolrQuery::setHighlightMaxAnalyzedChars ( int $value )
public SolrQuery SolrQuery::setHighlightMergeContiguous ( bool $flag [, string $field_override ] )
public SolrQuery SolrQuery::setHighlightRegexMaxAnalyzedChars ( int $maxAnalyzedChars )
public SolrQuery SolrQuery::setHighlightRegexPattern ( string $value )
public SolrQuery SolrQuery::setHighlightRegexSlop ( float $factor )
public SolrQuery SolrQuery::setHighlightRequireFieldMatch ( bool $flag )
public SolrQuery SolrQuery::setHighlightSimplePost ( string $simplePost [, string $field_override ] )
public SolrQuery SolrQuery::setHighlightSimplePre ( string $simplePre [, string $field_override ] )
public SolrQuery SolrQuery::setHighlightSnippets ( int $value [, string $field_override ] )
public SolrQuery SolrQuery::setHighlightUsePhraseHighlighter ( bool $flag )
public SolrQuery SolrQuery::setMlt ( bool $flag )
public SolrQuery SolrQuery::setMltBoost ( bool $flag )
public SolrQuery SolrQuery::setMltCount ( int $count )
public SolrQuery SolrQuery::setMltMaxNumQueryTerms ( int $value )
public SolrQuery SolrQuery::setMltMaxNumTokens ( int $value )
public SolrQuery SolrQuery::setMltMaxWordLength ( int $maxWordLength )
public SolrQuery SolrQuery::setMltMinDocFrequency ( int $minDocFrequency )
public SolrQuery SolrQuery::setMltMinTermFrequency ( int $minTermFrequency )
public SolrQuery SolrQuery::setMltMinWordLength ( int $minWordLength )
public SolrQuery SolrQuery::setOmitHeader ( bool $flag )
public SolrQuery SolrQuery::setQuery ( string $query )
public SolrQuery SolrQuery::setRows ( int $rows )
public SolrQuery SolrQuery::setShowDebugInfo ( bool $flag )
public SolrQuery SolrQuery::setStart ( int $start )
public SolrQuery SolrQuery::setStats ( bool $flag )
public SolrQuery SolrQuery::setTerms ( bool $flag )
public SolrQuery SolrQuery::setTermsField ( string $fieldname )
public SolrQuery SolrQuery::setTermsIncludeLowerBound ( bool $flag )
public SolrQuery SolrQuery::setTermsIncludeUpperBound ( bool $flag )
public SolrQuery SolrQuery::setTermsLimit ( int $limit )
public SolrQuery SolrQuery::setTermsLowerBound ( string $lowerBound )
public SolrQuery SolrQuery::setTermsMaxCount ( int $frequency )
public SolrQuery SolrQuery::setTermsMinCount ( int $frequency )
public SolrQuery SolrQuery::setTermsPrefix ( string $prefix )
public SolrQuery SolrQuery::setTermsReturnRaw ( bool $flag )
public SolrQuery SolrQuery::setTermsSort ( int $sortType )
public SolrQuery SolrQuery::setTermsUpperBound ( string $upperBound )
public SolrQuery SolrQuery::setTimeAllowed ( int $timeAllowed )
}

预定义常量

SolrDisMaxQuery::ORDER_ASC

Used to specify that the sorting should be in acending order (Duplicated for easier migration)

SolrDisMaxQuery::ORDER_DESC

Used to specify that the sorting should be in descending order (Duplicated for easier migration)

SolrDisMaxQuery::FACET_SORT_INDEX

Used to specify that the facet should sort by index (Duplicated for easier migration)

SolrDisMaxQuery::FACET_SORT_COUNT

Used to specify that the facet should sort by count (Duplicated for easier migration)

SolrDisMaxQuery::TERMS_SORT_INDEX

Used in the TermsComponent (Duplicated for easier migration)

SolrDisMaxQuery::TERMS_SORT_COUNT

Used in the TermsComponent (Duplicated for easier migration)

Table of Contents

  • SolrDisMaxQuery::addBigramPhraseField — Adds a Phrase Bigram Field (pf2 parameter)
  • SolrDisMaxQuery::addBoostQuery — Adds a boost query field with value and optional boost (bq parameter)
  • SolrDisMaxQuery::addPhraseField — Adds a Phrase Field (pf parameter)
  • SolrDisMaxQuery::addQueryField — Add a query field with optional boost (qf parameter)
  • SolrDisMaxQuery::addTrigramPhraseField — Adds a Trigram Phrase Field (pf3 parameter)
  • SolrDisMaxQuery::addUserField — Adds a field to User Fields Parameter (uf)
  • SolrDisMaxQuery::__construct — Class Constructor
  • SolrDisMaxQuery::removeBigramPhraseField — Removes phrase bigram field (pf2 parameter)
  • SolrDisMaxQuery::removeBoostQuery — Removes a boost query partial by field name (bq)
  • SolrDisMaxQuery::removePhraseField — Removes a Phrase Field (pf parameter)
  • SolrDisMaxQuery::removeQueryField — Removes a Query Field (qf parameter)
  • SolrDisMaxQuery::removeTrigramPhraseField — Removes a Trigram Phrase Field (pf3 parameter)
  • SolrDisMaxQuery::removeUserField — Removes a field from The User Fields Parameter (uf)
  • SolrDisMaxQuery::setBigramPhraseFields — Sets Bigram Phrase Fields and their boosts (and slops) using pf2 parameter
  • SolrDisMaxQuery::setBigramPhraseSlop — Sets Bigram Phrase Slop (ps2 parameter)
  • SolrDisMaxQuery::setBoostFunction — Sets a Boost Function (bf parameter).
  • SolrDisMaxQuery::setBoostQuery — Directly Sets Boost Query Parameter (bq)
  • SolrDisMaxQuery::setMinimumMatch — Set Minimum "Should" Match (mm)
  • SolrDisMaxQuery::setPhraseFields — Sets Phrase Fields and their boosts (and slops) using pf2 parameter
  • SolrDisMaxQuery::setPhraseSlop — Sets the default slop on phrase queries (ps parameter)
  • SolrDisMaxQuery::setQueryAlt — Set Query Alternate (q.alt parameter)
  • SolrDisMaxQuery::setQueryPhraseSlop — specifies the amount of slop permitted on phrase queries explicitly included in the user's query string (qf parameter)
  • SolrDisMaxQuery::setTieBreaker — Sets Tie Breaker parameter (tie parameter)
  • SolrDisMaxQuery::setTrigramPhraseFields — Directly Sets Trigram Phrase Fields (pf3 parameter)
  • SolrDisMaxQuery::setTrigramPhraseSlop — Sets Trigram Phrase Slop (ps3 parameter)
  • SolrDisMaxQuery::setUserFields — Sets User Fields parameter (uf)
  • SolrDisMaxQuery::useDisMaxQueryParser — Switch QueryParser to be DisMax Query Parser
  • SolrDisMaxQuery::useEDisMaxQueryParser — Switch QueryParser to be EDisMax
SolrQuery::setTimeAllowed
SolrDisMaxQuery::addBigramPhraseField
Solr


Adds a Phrase Bigram Field (pf2 parameter)

SolrDisMaxQuery
SolrDisMaxQuery::addBoostQuery
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::addBigramPhraseField

(No version information available, might only be in Git)

SolrDisMaxQuery::addBigramPhraseField — Adds a Phrase Bigram Field (pf2 parameter)

说明

public SolrDisMaxQuery SolrDisMaxQuery::addBigramPhraseField ( string $field , string $boost [, string $slop ] )

Adds a Phrase Bigram Field (pf2 parameter) output format: field~slop^boost OR field^boost Slop is optional

参数

field

boost

slop

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::addBigramPhraseField() example

<?php

$dismaxQuery = new SolrDisMaxQuery("lucene");
$dismaxQuery
    ->addBigramPhraseField('cat', 2, 5.1)
    ->addBigramPhraseField('feature', 4.5)
;
echo $dismaxQuery;

?>

以上例程的输出类似于：

q=lucene&defType=edismax&pf2=cat~5.1^2 feature^4.5

参见

  • SolrDisMaxQuery::removeBigramPhraseField() - Removes phrase bigram field (pf2 parameter)
  • SolrDisMaxQuery::setBigramPhraseFields() - Sets Bigram Phrase Fields and their boosts (and slops) using pf2 parameter
  • SolrDisMaxQuery::setBigramPhraseSlop() - Sets Bigram Phrase Slop (ps2 parameter)
SolrDisMaxQuery
SolrDisMaxQuery::addBoostQuery
SolrDisMaxQuery


Adds a boost query field with value and optional boost (bq parameter)

SolrDisMaxQuery::addBigramPhraseField
SolrDisMaxQuery::addPhraseField
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::addBoostQuery

(No version information available, might only be in Git)

SolrDisMaxQuery::addBoostQuery — Adds a boost query field with value and optional boost (bq parameter)

说明

public SolrDisMaxQuery SolrDisMaxQuery::addBoostQuery ( string $field , string $value [, string $boost ] )

Adds a Boost Query field with value [and boost] (bq parameter)

参数

field

value

boost

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::addBoostQuery() example

<?php

$dismaxQuery = new SolrDisMaxQuery("lucene");
$dismaxQuery
    ->addBoostQuery('cat', 'clothing', 2)
    ->addBoostQuery('cat', 'electronics', 5.1)
;
echo $dismaxQuery.PHP_EOL;
?>

以上例程的输出类似于：

q=lucene&defType=edismax&bq=cat:clothing^2 cat:electronics^5.1

参见

  • SolrDisMaxQuery::removeBoostQuery() - Removes a boost query partial by field name (bq)
  • SolrDisMaxQuery::setBoostQuery() - Directly Sets Boost Query Parameter (bq)
SolrDisMaxQuery::addBigramPhraseField
SolrDisMaxQuery::addPhraseField
SolrDisMaxQuery


Adds a Phrase Field (pf parameter)

SolrDisMaxQuery::addBoostQuery
SolrDisMaxQuery::addQueryField
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::addPhraseField

(No version information available, might only be in Git)

SolrDisMaxQuery::addPhraseField — Adds a Phrase Field (pf parameter)

说明

public SolrDisMaxQuery SolrDisMaxQuery::addPhraseField ( string $field , string $boost [, string $slop ] )

Adds a Phrase Field (pf parameter)

参数

field

field name

boost

slop

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::addPhraseField() example

<?php
$dismaxQuery = new SolrDisMaxQuery("lucene");
$dismaxQuery
    ->addPhraseField('cat', 3, 1)
    ->addPhraseField('third', 4, 2)
    ->addPhraseField('source', 55)
;
echo $dismaxQuery;
?>

以上例程的输出类似于：

q=lucene&defType=edismax&pf=cat~1^3 third~2^4 source^55

参见

  • SolrDisMaxQuery::removePhraseField() - Removes a Phrase Field (pf parameter)
  • SolrDisMaxQuery::setPhraseFields() - Sets Phrase Fields and their boosts (and slops) using pf2 parameter
SolrDisMaxQuery::addBoostQuery
SolrDisMaxQuery::addQueryField
SolrDisMaxQuery


Add a query field with optional boost (qf parameter)

SolrDisMaxQuery::addPhraseField
SolrDisMaxQuery::addTrigramPhraseField
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::addQueryField

(No version information available, might only be in Git)

SolrDisMaxQuery::addQueryField — Add a query field with optional boost (qf parameter)

说明

public SolrDisMaxQuery SolrDisMaxQuery::addQueryField ( string $field [, string $boost ] )

Add a query field with optional boost (qf parameter)

参数

field

field name

boost

Boost value. Boosts documents with matching terms.

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::addQueryField() example

<?php

$dismaxQuery = new SolrDisMaxQuery("lucene");
$dismaxQuery
    ->addQueryField("location", 4)
    ->addQueryField("price")
    ->addQueryField("sku")
    ->addQueryField("title",3.4)
;
echo $dismaxQuery;

?>

以上例程的输出类似于：

q=lucene&defType=edismax&qf=location^4 price sku title^3.4

参见

  • SolrDisMaxQuery::removeQueryField() - Removes a Query Field (qf parameter)
SolrDisMaxQuery::addPhraseField
SolrDisMaxQuery::addTrigramPhraseField
SolrDisMaxQuery


Adds a Trigram Phrase Field (pf3 parameter)

SolrDisMaxQuery::addQueryField
SolrDisMaxQuery::addUserField
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::addTrigramPhraseField

(No version information available, might only be in Git)

SolrDisMaxQuery::addTrigramPhraseField — Adds a Trigram Phrase Field (pf3 parameter)

说明

public SolrDisMaxQuery SolrDisMaxQuery::addTrigramPhraseField ( string $field , string $boost [, string $slop ] )

Adds a Trigram Phrase Field (pf3 parameter)

参数

field

Field Name

boost

Field Boost

slop

Field Slop

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::addTrigramPhraseField() example

<?php

$dismaxQuery = new SolrDisMaxQuery('lucene');
$dismaxQuery
->addTrigramPhraseField('cat', 2, 5.1)
->addTrigramPhraseField('feature', 4.5)
;
echo $dismaxQuery.PHP_EOL;

?>

以上例程会输出：

q=lucene&defType=%s&pf3=cat~5.1^2 feature^4.5

参见

  • SolrDisMaxQuery::removeTrigramPhraseField() - Removes a Trigram Phrase Field (pf3 parameter)
  • SolrDisMaxQuery::setTrigramPhraseFields() - Directly Sets Trigram Phrase Fields (pf3 parameter)
  • SolrDisMaxQuery::setTrigramPhraseSlop() - Sets Trigram Phrase Slop (ps3 parameter)
SolrDisMaxQuery::addQueryField
SolrDisMaxQuery::addUserField
SolrDisMaxQuery


Adds a field to User Fields Parameter (uf)

SolrDisMaxQuery::addTrigramPhraseField
SolrDisMaxQuery::__construct
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::addUserField

(No version information available, might only be in Git)

SolrDisMaxQuery::addUserField — Adds a field to User Fields Parameter (uf)

说明

public SolrDisMaxQuery SolrDisMaxQuery::addUserField ( string $field )

Adds a field to The User Fields Parameter (uf)

参数

field

Field Name

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::addUserField() example

<?php

$dismaxQuery = new SolrDisMaxQuery('lucene');
$dismaxQuery
->addUserField('cat')
->addUserField('text')
->addUserField('*_dt');

echo $dismaxQuery.PHP_EOL;

?>

以上例程的输出类似于：

q=lucene&defType=edismax&uf=cat text *_dt

参见

  • SolrDisMaxQuery::removeUserField() - Removes a field from The User Fields Parameter (uf)
  • SolrDisMaxQuery::setUserFields() - Sets User Fields parameter (uf)
SolrDisMaxQuery::addTrigramPhraseField
SolrDisMaxQuery::__construct
SolrDisMaxQuery


Class Constructor

SolrDisMaxQuery::addUserField
SolrDisMaxQuery::removeBigramPhraseField
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::__construct

(No version information available, might only be in Git)

SolrDisMaxQuery::__construct — Class Constructor

说明

public SolrDisMaxQuery::__construct ([ string $q ] )

Class constructor initializes the object and sets the q parameter if passed

参数

q

Search Query (q parameter)

返回值

错误／异常

Emits SolrIllegalArgumentException in case of an invalid parameter was passed.

范例

Example #1 SolrDisMaxQuery::__construct() example

<?php

$dismaxQuery = new SolrDisMaxQuery('lucene');
echo $dismaxQuery;

?>

以上例程会输出：

q=lucene&defType=edismax

参见

SolrDisMaxQuery::addUserField
SolrDisMaxQuery::removeBigramPhraseField
SolrDisMaxQuery


Removes phrase bigram field (pf2 parameter)

SolrDisMaxQuery::__construct
SolrDisMaxQuery::removeBoostQuery
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::removeBigramPhraseField

(No version information available, might only be in Git)

SolrDisMaxQuery::removeBigramPhraseField — Removes phrase bigram field (pf2 parameter)

说明

public SolrDisMaxQuery SolrDisMaxQuery::removeBigramPhraseField ( string $field )

Removes a Bigram Phrase Field (pf2 parameter) that was previously added using SolrDisMaxQuery::addBigramPhraseField()

参数

field

The Field Name

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::removeBigramPhraseField() example

<?php

$dismaxQuery = new SolrDisMaxQuery("lucene");
$dismaxQuery
    ->addBigramPhraseField('cat', 2, 5.1)
    ->addBigramPhraseField('feature', 4.5)
;
echo $dismaxQuery.PHP_EOL;

// remove cat from pf2
$dismaxQuery
    ->removeBigramPhraseField('cat');
echo $dismaxQuery.PHP_EOL;

?>

以上例程的输出类似于：

q=lucene&defType=edismax&pf2=cat~5.1^2 feature^4.5
q=lucene&defType=edismax&pf2=feature^4.5

参见

  • SolrDisMaxQuery::addBigramPhraseField() - Adds a Phrase Bigram Field (pf2 parameter)
  • SolrDisMaxQuery::setBigramPhraseFields() - Sets Bigram Phrase Fields and their boosts (and slops) using pf2 parameter
  • SolrDisMaxQuery::setBigramPhraseSlop() - Sets Bigram Phrase Slop (ps2 parameter)
SolrDisMaxQuery::__construct
SolrDisMaxQuery::removeBoostQuery
SolrDisMaxQuery


Removes a boost query partial by field name (bq)

SolrDisMaxQuery::removeBigramPhraseField
SolrDisMaxQuery::removePhraseField
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::removeBoostQuery

(No version information available, might only be in Git)

SolrDisMaxQuery::removeBoostQuery — Removes a boost query partial by field name (bq)

说明

public SolrDisMaxQuery SolrDisMaxQuery::removeBoostQuery ( string $field )

Removes a boost query partial from the existing query, only if SolrDisMaxQuery::addBoostQuery() was used.

参数

field

Field Name

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::removeBoostQuery() example

<?php

$dismaxQuery = new SolrDisMaxQuery("lucene");
$dismaxQuery
    ->addBoostQuery('cat', 'electronics', 5.1)
    ->addBoostQuery('cat', 'hard drive')
;
echo $dismaxQuery.PHP_EOL;
// now remove a query part with field 'cat'
$dismaxQuery
->removeBoostQuery('cat');
echo $dismaxQuery . PHP_EOL;

?>

以上例程的输出类似于：

q=lucene&defType=edismax&bq=cat:electronics^5.1 cat:hard drive
q=lucene&defType=edismax&bq=cat:hard drive

参见

  • SolrDisMaxQuery::addBoostQuery() - Adds a boost query field with value and optional boost (bq parameter)
  • SolrDisMaxQuery::setBoostQuery() - Directly Sets Boost Query Parameter (bq)
SolrDisMaxQuery::removeBigramPhraseField
SolrDisMaxQuery::removePhraseField
SolrDisMaxQuery


Removes a Phrase Field (pf parameter)

SolrDisMaxQuery::removeBoostQuery
SolrDisMaxQuery::removeQueryField
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::removePhraseField

(No version information available, might only be in Git)

SolrDisMaxQuery::removePhraseField — Removes a Phrase Field (pf parameter)

说明

public SolrDisMaxQuery SolrDisMaxQuery::removePhraseField ( string $field )

Removes a Phrase Field (pf parameter) that was previously added using SolrDisMaxQuery::addPhraseField

参数

field

Field Name

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::removePhraseField() example

<?php
$dismaxQuery = new SolrDisMaxQuery('lucene');
$dismaxQuery
    ->addPhraseField('first', 3, 1)
    ->addPhraseField('second', 4, 1)
    ->addPhraseField('cat', 55);
echo $dismaxQuery . PHP_EOL;
echo $dismaxQuery->removePhraseField('second');
?>

以上例程的输出类似于：

q=lucene&defType=edismax&pf=first~1^3 second~1^4 cat^55
q=lucene&defType=edismax&pf=first~1^3 cat^55

参见

  • SolrDisMaxQuery::addPhraseField() - Adds a Phrase Field (pf parameter)
  • SolrDisMaxQuery::setPhraseFields() - Sets Phrase Fields and their boosts (and slops) using pf2 parameter
SolrDisMaxQuery::removeBoostQuery
SolrDisMaxQuery::removeQueryField
SolrDisMaxQuery


Removes a Query Field (qf parameter)

SolrDisMaxQuery::removePhraseField
SolrDisMaxQuery::removeTrigramPhraseField
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::removeQueryField

(No version information available, might only be in Git)

SolrDisMaxQuery::removeQueryField — Removes a Query Field (qf parameter)

说明

public SolrDisMaxQuery SolrDisMaxQuery::removeQueryField ( string $field )

Removes a Query Field (qf parameter) from the field list added by SolrDisMaxQuery::addQueryField()

qf: When building DisjunctionMaxQueries from the user's query it specifies the fields to search in, and boosts for those fields.

参数

field

Field Name

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::removeQueryField() example

<?php

$dismaxQuery = new SolrDisMaxQuery('lucene');
$dismaxQuery
    ->addQueryField('first', 3)
    ->addQueryField('second', 0.2)
    ->addQueryField('cat');
echo $dismaxQuery . PHP_EOL;
// remove field 'second'
echo $dismaxQuery->removeQueryField('second');
?>

以上例程的输出类似于：

q=lucene&defType=edismax&qf=first^3 second^0.2 cat
q=lucene&defType=edismax&qf=first^3 cat

参见

  • SolrDisMaxQuery::addQueryField() - Add a query field with optional boost (qf parameter)
SolrDisMaxQuery::removePhraseField
SolrDisMaxQuery::removeTrigramPhraseField
SolrDisMaxQuery


Removes a Trigram Phrase Field (pf3 parameter)

SolrDisMaxQuery::removeQueryField
SolrDisMaxQuery::removeUserField
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::removeTrigramPhraseField

(No version information available, might only be in Git)

SolrDisMaxQuery::removeTrigramPhraseField — Removes a Trigram Phrase Field (pf3 parameter)

说明

public SolrDisMaxQuery SolrDisMaxQuery::removeTrigramPhraseField ( string $field )

Removes a Trigram Phrase Field (pf3 parameter)

参数

field

Field Name

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::removeTrigramPhraseField() example

<?php

$dismaxQuery = new SolrDisMaxQuery('lucene');
$dismaxQuery
->addTrigramPhraseField('cat', 2, 5.1)
->addTrigramPhraseField('feature', 4.5)
;
echo $dismaxQuery.PHP_EOL;
// reverse
$dismaxQuery
->removeTrigramPhraseField('cat');
echo $dismaxQuery.PHP_EOL;

?>

以上例程会输出：

q=lucene&defType=%s&pf3=cat~5.1^2 feature^4.5
q=lucene&defType=%s&pf3=feature^4.5

参见

  • SolrDisMaxQuery::addTrigramPhraseField() - Adds a Trigram Phrase Field (pf3 parameter)
  • SolrDisMaxQuery::setTrigramPhraseFields() - Directly Sets Trigram Phrase Fields (pf3 parameter)
  • SolrDisMaxQuery::setTrigramPhraseSlop() - Sets Trigram Phrase Slop (ps3 parameter)
SolrDisMaxQuery::removeQueryField
SolrDisMaxQuery::removeUserField
SolrDisMaxQuery


Removes a field from The User Fields Parameter (uf)

SolrDisMaxQuery::removeTrigramPhraseField
SolrDisMaxQuery::setBigramPhraseFields
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::removeUserField

(No version information available, might only be in Git)

SolrDisMaxQuery::removeUserField — Removes a field from The User Fields Parameter (uf)

说明

public SolrDisMaxQuery SolrDisMaxQuery::removeUserField ( string $field )

Removes a field from The User Fields Parameter (uf)

Warning

本函数还未编写文档，仅有参数列表。

参数

field

Field Name

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::removeUserField() example

<?php

$dismaxQuery = new SolrDisMaxQuery('lucene');
$dismaxQuery
->addUserField('cat')
->addUserField('text')
->addUserField('*_dt')
;
echo $dismaxQuery.PHP_EOL;

// remove field named 'text'
$dismaxQuery
->removeUserField('text');
echo $dismaxQuery.PHP_EOL;

?>

以上例程的输出类似于：

q=lucene&defType=%s&uf=cat text *_dt
q=lucene&defType=%s&uf=cat *_dt

参见

  • SolrDisMaxQuery::addUserField() - Adds a field to User Fields Parameter (uf)
  • SolrDisMaxQuery::setUserFields() - Sets User Fields parameter (uf)
SolrDisMaxQuery::removeTrigramPhraseField
SolrDisMaxQuery::setBigramPhraseFields
SolrDisMaxQuery


Sets Bigram Phrase Fields and their boosts (and slops) using pf2 parameter

SolrDisMaxQuery::removeUserField
SolrDisMaxQuery::setBigramPhraseSlop
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::setBigramPhraseFields

(No version information available, might only be in Git)

SolrDisMaxQuery::setBigramPhraseFields — Sets Bigram Phrase Fields and their boosts (and slops) using pf2 parameter

说明

public SolrDisMaxQuery SolrDisMaxQuery::setBigramPhraseFields ( string $fields )

Sets Bigram Phrase Fields (pf2) and their boosts (and slops)

参数

fields

Fields boosts (slops)

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::setBigramPhraseFields() example

<?php
$dismaxQuery = new SolrDisMaxQuery("lucene");
$dismaxQuery->setBigramPhraseFields("cat~5.1^2 feature^4.5");
echo $dismaxQuery.PHP_EOL;

?>

以上例程的输出类似于：

q=lucene&defType=edismax&pf2=cat~5.1^2 feature^4.5

参见

  • SolrDisMaxQuery::setBigramPhraseSlop() - Sets Bigram Phrase Slop (ps2 parameter)
  • SolrDisMaxQuery::addBigramPhraseFields()
  • SolrDisMaxQuery::removeBigramPhraseField() - Removes phrase bigram field (pf2 parameter)
  • SolrDisMaxQuery::setTrigramPhraseFields() - Directly Sets Trigram Phrase Fields (pf3 parameter)
SolrDisMaxQuery::removeUserField
SolrDisMaxQuery::setBigramPhraseSlop
SolrDisMaxQuery


Sets Bigram Phrase Slop (ps2 parameter)

SolrDisMaxQuery::setBigramPhraseFields
SolrDisMaxQuery::setBoostFunction
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::setBigramPhraseSlop

(No version information available, might only be in Git)

SolrDisMaxQuery::setBigramPhraseSlop — Sets Bigram Phrase Slop (ps2 parameter)

说明

public SolrDisMaxQuery SolrDisMaxQuery::setBigramPhraseSlop ( string $slop )

Sets Bigram Phrase Slop (ps2 parameter). A default slop for Bigram phrase fields.

参数

slop

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::setBigramPhraseSlop() example

<?php

$dismaxQuery = new SolrDisMaxQuery('lucene');

$dismaxQuery->setBigramPhraseSlop(5);
echo $dismaxQuery.PHP_EOL;

?>

以上例程的输出类似于：

q=lucene&defType=edismax&ps2=5

参见

SolrDisMaxQuery::setBigramPhraseFields
SolrDisMaxQuery::setBoostFunction
SolrDisMaxQuery


Sets a Boost Function (bf parameter).

SolrDisMaxQuery::setBigramPhraseSlop
SolrDisMaxQuery::setBoostQuery
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::setBoostFunction

(No version information available, might only be in Git)

SolrDisMaxQuery::setBoostFunction — Sets a Boost Function (bf parameter).

说明

public SolrDisMaxQuery SolrDisMaxQuery::setBoostFunction ( string $function )

Sets Boost Function (bf parameter).

Functions (with optional boosts) that will be included in the user's query to influence the score. Any function supported natively by Solr can be used, along with a boost value. e.g.:

recip(rord(myfield),1,2,3)^1.5

参数

function

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::setBoostFunction() example

<?php

$dismaxQuery = new SolrDisMaxQuery('lucene');

$boostRecentDocsFunction = "recip(ms(NOW,mydatefield),3.16e-11,1,1)";
$dismaxQuery->setBoostFunction($boostRecentDocsFunction);

echo $dismaxQuery.PHP_EOL;

?>

以上例程的输出类似于：

q=lucene&defType=edismax&bf=recip(ms(NOW,mydatefield),3.16e-11,1,1)

参见

SolrDisMaxQuery::setBigramPhraseSlop
SolrDisMaxQuery::setBoostQuery
SolrDisMaxQuery


Directly Sets Boost Query Parameter (bq)

SolrDisMaxQuery::setBoostFunction
SolrDisMaxQuery::setMinimumMatch
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::setBoostQuery

(No version information available, might only be in Git)

SolrDisMaxQuery::setBoostQuery — Directly Sets Boost Query Parameter (bq)

说明

public SolrDisMaxQuery SolrDisMaxQuery::setBoostQuery ( string $q )

Sets Boost Query Parameter (bq)

参数

q

query

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::setBoostQuery() example

<?php
$dismaxQuery = new SolrDisMaxQuery("lucene");

$dismaxQuery->setBoostQuery('cat:electronics manu:local^2');
echo $dismaxQuery.PHP_EOL;
?>

以上例程的输出类似于：

q=lucene&defType=edismax&bq=cat:electronics manu:local^2

参见

  • SolrDisMaxQuery::addBoostQuery() - Adds a boost query field with value and optional boost (bq parameter)
  • SolrDisMaxQuery::removeBoostQuery() - Removes a boost query partial by field name (bq)
SolrDisMaxQuery::setBoostFunction
SolrDisMaxQuery::setMinimumMatch
SolrDisMaxQuery


Set Minimum "Should" Match (mm)

SolrDisMaxQuery::setBoostQuery
SolrDisMaxQuery::setPhraseFields
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::setMinimumMatch

(No version information available, might only be in Git)

SolrDisMaxQuery::setMinimumMatch — Set Minimum "Should" Match (mm)

说明

public SolrDisMaxQuery SolrDisMaxQuery::setMinimumMatch ( string $value )

Set Minimum "Should" Match parameter (mm). If the default query operator is AND then mm=100%, if the default query operator (q.op) is OR, then mm=0%.

参数

value

Minimum match value/expression

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::setMinimumMatch() example

<?php

$dismaxQuery = new SolrDisMaxQuery("lucene");
// 75% of the query clauses must match
$dismaxQuery->setMinimumMatch("75%");
echo $dismaxQuery . PHP_EOL;

?>

以上例程会输出：

q=lucene&defType=edismax&mm=75%
SolrDisMaxQuery::setBoostQuery
SolrDisMaxQuery::setPhraseFields
SolrDisMaxQuery


Sets Phrase Fields and their boosts (and slops) using pf2 parameter

SolrDisMaxQuery::setMinimumMatch
SolrDisMaxQuery::setPhraseSlop
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::setPhraseFields

(No version information available, might only be in Git)

SolrDisMaxQuery::setPhraseFields — Sets Phrase Fields and their boosts (and slops) using pf2 parameter

说明

public SolrDisMaxQuery SolrDisMaxQuery::setPhraseFields ( string $fields )

Sets Phrase Fields (pf) and their boosts (and slops)

参数

fields

Fields, boosts [, slops]

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::setPhraseFields() example

<?php
$dismaxQuery = new SolrDisMaxQuery("lucene");
$dismaxQuery->setPhraseFields("cat~5.1^2 feature^4.5");
echo $dismaxQuery.PHP_EOL;

?>

以上例程的输出类似于：

q=lucene&defType=edismax&pf=cat~5.1^2 feature^4.5

参见

  • SolrDisMaxQuery::addPhraseFields()
  • SolrDisMaxQuery::removePhraseField() - Removes a Phrase Field (pf parameter)
SolrDisMaxQuery::setMinimumMatch
SolrDisMaxQuery::setPhraseSlop
SolrDisMaxQuery


Sets the default slop on phrase queries (ps parameter)

SolrDisMaxQuery::setPhraseFields
SolrDisMaxQuery::setQueryAlt
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::setPhraseSlop

(No version information available, might only be in Git)

SolrDisMaxQuery::setPhraseSlop — Sets the default slop on phrase queries (ps parameter)

说明

public SolrDisMaxQuery SolrDisMaxQuery::setPhraseSlop ( string $slop )

Sets the default amount of slop on phrase queries built with "pf", "pf2" and/or "pf3" fields (affects boosting). "ps" parameter

参数

slop

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::setPhraseSlop() example

<?php

$dismaxQuery = new SolrDisMaxQuery('lucene');

$dismaxQuery->setPhraseSlop(4);
echo $dismaxQuery.PHP_EOL;

?>

以上例程会输出：

q=lucene&defType=edismax&ps=4

参见

SolrDisMaxQuery::setPhraseFields
SolrDisMaxQuery::setQueryAlt
SolrDisMaxQuery


Set Query Alternate (q.alt parameter)

SolrDisMaxQuery::setPhraseSlop
SolrDisMaxQuery::setQueryPhraseSlop
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::setQueryAlt

(No version information available, might only be in Git)

SolrDisMaxQuery::setQueryAlt — Set Query Alternate (q.alt parameter)

说明

public SolrDisMaxQuery SolrDisMaxQuery::setQueryAlt ( string $q )

Set Query Alternate (q.alt parameter)

When the main q parameter is not specified or is blank. The q.alt parameter is used

参数

q

Query String

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::setQueryAlt() example

<?php

$dismaxQuery = new DisMaxQuery();
$dismaxQuery->setQueryAlt('*:*');

?>

以上例程的输出类似于：

defType=edismax&q.alt=*:*&q=
SolrDisMaxQuery::setPhraseSlop
SolrDisMaxQuery::setQueryPhraseSlop
SolrDisMaxQuery


specifies the amount of slop permitted on phrase queries explicitly included in the user's query string (qf parameter)

SolrDisMaxQuery::setQueryAlt
SolrDisMaxQuery::setTieBreaker
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::setQueryPhraseSlop

(No version information available, might only be in Git)

SolrDisMaxQuery::setQueryPhraseSlop — specifies the amount of slop permitted on phrase queries explicitly included in the user's query string (qf parameter)

说明

public SolrDisMaxQuery SolrDisMaxQuery::setQueryPhraseSlop ( string $slop )

The Query Phrase Slop is the amount of slop permitted on phrase queries explicitly included in the user's query string with the qf parameter.

slop refers to the number of positions one token needs to be moved in relation to another token in order to match a phrase specified in a query.

参数

slop

Amount of slop

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::setQueryPhraseSlop() example

<?php

$dismaxQuery = new SolrDisMaxQuery();
$dismaxQuery->setQueryPhraseSlop(3);
echo $dismaxQuery;
?>

以上例程的输出类似于：

defType=edismax&qs=3
SolrDisMaxQuery::setQueryAlt
SolrDisMaxQuery::setTieBreaker
SolrDisMaxQuery


Sets Tie Breaker parameter (tie parameter)

SolrDisMaxQuery::setQueryPhraseSlop
SolrDisMaxQuery::setTrigramPhraseFields
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::setTieBreaker

(No version information available, might only be in Git)

SolrDisMaxQuery::setTieBreaker — Sets Tie Breaker parameter (tie parameter)

说明

public SolrDisMaxQuery SolrDisMaxQuery::setTieBreaker ( string $tieBreaker )

Sets Tie Breaker parameter (tie parameter)

参数

tieBreaker

The tie parameter specifies a float value (which should be something much less than 1) to use as tiebreaker in DisMax queries.

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::setTieBreaker() example

<?php

$dismaxQuery = new SolrDisMaxQuery();
$dismaxQuery->setTieBreaker(0.1);

echo $dismaxQuery;

?>

以上例程会输出：

defType=edismax&tie=0.1
SolrDisMaxQuery::setQueryPhraseSlop
SolrDisMaxQuery::setTrigramPhraseFields
SolrDisMaxQuery


Directly Sets Trigram Phrase Fields (pf3 parameter)

SolrDisMaxQuery::setTieBreaker
SolrDisMaxQuery::setTrigramPhraseSlop
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::setTrigramPhraseFields

(No version information available, might only be in Git)

SolrDisMaxQuery::setTrigramPhraseFields — Directly Sets Trigram Phrase Fields (pf3 parameter)

说明

public SolrDisMaxQuery SolrDisMaxQuery::setTrigramPhraseFields ( string $fields )

Directly Sets Trigram Phrase Fields (pf3 parameter)

参数

fields

Trigram Phrase Fields

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::setTrigramPhraseFields() example

<?php

$dismaxQuery = new SolrDisMaxQuery('lucene');
$dismaxQuery->setTrigramPhraseFields('cat~5.1^2 feature^4.5');
echo $dismaxQuery.PHP_EOL;

?>

以上例程会输出：

q=lucene&defType=edismax&pf3=cat~5.1^2 feature^4.5

参见

  • SolrDisMaxQuery::addTrigramPhraseField() - Adds a Trigram Phrase Field (pf3 parameter)
  • SolrDisMaxQuery::removeTrigramPhraseField() - Removes a Trigram Phrase Field (pf3 parameter)
  • SolrDisMaxQuery::setTrigramPhraseSlop() - Sets Trigram Phrase Slop (ps3 parameter)
SolrDisMaxQuery::setTieBreaker
SolrDisMaxQuery::setTrigramPhraseSlop
SolrDisMaxQuery


Sets Trigram Phrase Slop (ps3 parameter)

SolrDisMaxQuery::setTrigramPhraseFields
SolrDisMaxQuery::setUserFields
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::setTrigramPhraseSlop

(No version information available, might only be in Git)

SolrDisMaxQuery::setTrigramPhraseSlop — Sets Trigram Phrase Slop (ps3 parameter)

说明

public SolrDisMaxQuery SolrDisMaxQuery::setTrigramPhraseSlop ( string $slop )

Sets Trigram Phrase Slop (ps3 parameter)

参数

slop

Phrase slop

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::setTrigramPhraseSlop() example

<?php

$dismaxQuery = new SolrDisMaxQuery('lucene');
$dismaxQuery->setTrigramPhraseSlop(2);
echo $dismaxQuery.PHP_EOL;

?>

以上例程的输出类似于：

q=lucene&defType=edismax&ps3=2

参见

  • SolrDisMaxQuery::addTrigramPhraseField() - Adds a Trigram Phrase Field (pf3 parameter)
  • SolrDisMaxQuery::removeTrigramPhraseField() - Removes a Trigram Phrase Field (pf3 parameter)
  • SolrDisMaxQuery::setTrigramPhraseFields() - Directly Sets Trigram Phrase Fields (pf3 parameter)
SolrDisMaxQuery::setTrigramPhraseFields
SolrDisMaxQuery::setUserFields
SolrDisMaxQuery


Sets User Fields parameter (uf)

SolrDisMaxQuery::setTrigramPhraseSlop
SolrDisMaxQuery::useDisMaxQueryParser
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::setUserFields

(No version information available, might only be in Git)

SolrDisMaxQuery::setUserFields — Sets User Fields parameter (uf)

说明

public SolrDisMaxQuery SolrDisMaxQuery::setUserFields ( string $fields )

Sets User Fields parameter (uf)

User Fields: Specifies which schema fields the end user shall be allowed to query.

参数

fields

Fields names separated by space

This parameter supports wildcards.

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::setUserFields() example

<?php

$dismaxQuery = new SolrDisMaxQuery('lucene');
$dismaxQuery->setUserFields('field1 field2 *_txt');
echo $dismaxQuery.PHP_EOL;

?>

以上例程的输出类似于：

q=lucene&defType=edismax&uf=field1 field2 *_txt

参见

  • SolrDisMaxQuery::addUserField() - Adds a field to User Fields Parameter (uf)
  • SolrDisMaxQuery::removeUserField() - Removes a field from The User Fields Parameter (uf)
SolrDisMaxQuery::setTrigramPhraseSlop
SolrDisMaxQuery::useDisMaxQueryParser
SolrDisMaxQuery


Switch QueryParser to be DisMax Query Parser

SolrDisMaxQuery::setUserFields
SolrDisMaxQuery::useEDisMaxQueryParser
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::useDisMaxQueryParser

(No version information available, might only be in Git)

SolrDisMaxQuery::useDisMaxQueryParser — Switch QueryParser to be DisMax Query Parser

说明

public SolrDisMaxQuery SolrDisMaxQuery::useDisMaxQueryParser ( void )

Switch QueryParser to be DisMax Query Parser

参数

此函数没有参数。

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::useDisMaxQueryParser() example

<?php

$dismaxQuery = new SolrDisMaxQuery();
$dismaxQuery->useDisMaxQueryParser();
echo $dismaxQuery;
?>

以上例程的输出类似于：

defType=dismax

参见

  • SolrDisMaxQuery::useDisMaxQueryParser()
SolrDisMaxQuery::setUserFields
SolrDisMaxQuery::useEDisMaxQueryParser
SolrDisMaxQuery


Switch QueryParser to be EDisMax

SolrDisMaxQuery::useDisMaxQueryParser
SolrCollapseFunction
SolrDisMaxQuery
PHP Manual

SolrDisMaxQuery::useEDisMaxQueryParser

(No version information available, might only be in Git)

SolrDisMaxQuery::useEDisMaxQueryParser — Switch QueryParser to be EDisMax

说明

public SolrDisMaxQuery SolrDisMaxQuery::useEDisMaxQueryParser ( void )

Switch QueryParser to be EDisMax. By default the query builder uses edismax, if it was switched using SolrDisMaxQuery::useDisMaxQueryParser(), it can be switched back using this method.

参数

此函数没有参数。

返回值

SolrDisMaxQuery

范例

Example #1 SolrDisMaxQuery::useEDisMaxQueryParser() example

<?php

$dismaxQuery = new SolrDisMaxQuery();
$dismaxQuery->useEDisMaxQueryParser();
echo $dismaxQuery;

?>

以上例程的输出类似于：

defType=edismax

参见

SolrDisMaxQuery::useDisMaxQueryParser
SolrCollapseFunction
SolrDisMaxQuery


The SolrCollapseFunction class

(PECL solr >= 2.2.0)

简介

类摘要

SolrCollapseFunction {
/* Constants */
const string NULLPOLICY_IGNORE = ignore ;
const string NULLPOLICY_EXPAND = expand ;
const string NULLPOLICY_COLLAPSE = collapse ;
/* 方法 */
public __construct ([ string $field ] )
public string getField ( void )
public string getHint ( void )
public string getMax ( void )
public string getMin ( void )
public string getNullPolicy ( void )
public integer getSize ( void )
public SolrCollapseFunction setField ( string $fieldName )
public SolrCollapseFunction setHint ( string $hint )
public SolrCollapseFunction setMax ( string $max )
public SolrCollapseFunction setMin ( string $min )
public SolrCollapseFunction setNullPolicy ( string $nullPolicy )
public SolrCollapseFunction setSize ( integer $size )
public string __toString ( void )
}

预定义常量

SolrCollapseFunction::NULLPOLICY_IGNORE

SolrCollapseFunction::NULLPOLICY_EXPAND

SolrCollapseFunction::NULLPOLICY_COLLAPSE

Table of Contents

  • SolrCollapseFunction::__construct — Constructor
  • SolrCollapseFunction::getField — Returns the field that is being collapsed on.
  • SolrCollapseFunction::getHint — Returns collapse hint
  • SolrCollapseFunction::getMax — Returns max parameter
  • SolrCollapseFunction::getMin — Returns min parameter
  • SolrCollapseFunction::getNullPolicy — Returns null policy
  • SolrCollapseFunction::getSize — Returns size parameter
  • SolrCollapseFunction::setField — Sets the field to collapse on
  • SolrCollapseFunction::setHint — Sets collapse hint
  • SolrCollapseFunction::setMax — Selects the group heads by the max value of a numeric field or function query.
  • SolrCollapseFunction::setMin — Sets the initial size of the collapse data structures when collapsing on a numeric field only
  • SolrCollapseFunction::setNullPolicy — Sets the NULL Policy
  • SolrCollapseFunction::setSize — Sets the initial size of the collapse data structures when collapsing on a numeric field only.
  • SolrCollapseFunction::__toString — Returns a string representing the constructed collapse function
SolrDisMaxQuery::useEDisMaxQueryParser
SolrCollapseFunction::__construct
Solr


Constructor

SolrCollapseFunction
SolrCollapseFunction::getField
SolrCollapseFunction
PHP Manual

SolrCollapseFunction::__construct

(PECL solr >= 2.2.0)

SolrCollapseFunction::__construct — Constructor

说明

public SolrCollapseFunction::__construct ([ string $field ] )

Collapse Function constructor

参数

field

The field name to collapse on.

In order to collapse a result. The field type must be a single valued String, Int or Float.

范例

Example #1 SolrCollapseFunction::__construct() example

<?php

include "bootstrap.php";

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'     => SOLR_SERVER_PATH
);

$client = new SolrClient($options);

$query = new SolrQuery('*:*');

$func = new SolrCollapseFunction('field_name');

$func->setMax('sum(cscore(),field(some_other_field))');
$func->setSize(100);
$func->setNullPolicy(SolrCollapseFunction::NULLPOLICY_EXPAND);

$query->collapse($func);

$queryResponse = $client->query($query);

$response = $queryResponse->getResponse();

print_r($response);

?>

参见

  • SolrQuery::collapse() - Collapses the result set to a single document per group
SolrCollapseFunction
SolrCollapseFunction::getField
SolrCollapseFunction


Returns the field that is being collapsed on.

SolrCollapseFunction::__construct
SolrCollapseFunction::getHint
SolrCollapseFunction
PHP Manual

SolrCollapseFunction::getField

(PECL solr >= 2.2.0)

SolrCollapseFunction::getField — Returns the field that is being collapsed on.

说明

public string SolrCollapseFunction::getField ( void )

Returns the field that is being collapsed on.

参数

此函数没有参数。

返回值

参见

  • SolrCollapseFunction::setField() - Sets the field to collapse on
SolrCollapseFunction::__construct
SolrCollapseFunction::getHint
SolrCollapseFunction


Returns collapse hint

SolrCollapseFunction::getField
SolrCollapseFunction::getMax
SolrCollapseFunction
PHP Manual

SolrCollapseFunction::getHint

(PECL solr >= 2.2.0)

SolrCollapseFunction::getHint — Returns collapse hint

说明

public string SolrCollapseFunction::getHint ( void )

Returns collapse hint

参数

此函数没有参数。

返回值

参见

  • SolrCollapseFunction::setHint() - Sets collapse hint
SolrCollapseFunction::getField
SolrCollapseFunction::getMax
SolrCollapseFunction


Returns max parameter

SolrCollapseFunction::getHint
SolrCollapseFunction::getMin
SolrCollapseFunction
PHP Manual

SolrCollapseFunction::getMax

(PECL solr >= 2.2.0)

SolrCollapseFunction::getMax — Returns max parameter

说明

public string SolrCollapseFunction::getMax ( void )

Returns max parameter

参数

此函数没有参数。

返回值

参见

  • SolrCollapseFunction::setMax() - Selects the group heads by the max value of a numeric field or function query.
SolrCollapseFunction::getHint
SolrCollapseFunction::getMin
SolrCollapseFunction


Returns min parameter

SolrCollapseFunction::getMax
SolrCollapseFunction::getNullPolicy
SolrCollapseFunction
PHP Manual

SolrCollapseFunction::getMin

(PECL solr >= 2.2.0)

SolrCollapseFunction::getMin — Returns min parameter

说明

public string SolrCollapseFunction::getMin ( void )

Returns min parameter

参数

此函数没有参数。

返回值

参见

  • SolrCollapseFunction::setMin() - Sets the initial size of the collapse data structures when collapsing on a numeric field only
SolrCollapseFunction::getMax
SolrCollapseFunction::getNullPolicy
SolrCollapseFunction


Returns null policy

SolrCollapseFunction::getMin
SolrCollapseFunction::getSize
SolrCollapseFunction
PHP Manual

SolrCollapseFunction::getNullPolicy

(PECL solr >= 2.2.0)

SolrCollapseFunction::getNullPolicy — Returns null policy

说明

public string SolrCollapseFunction::getNullPolicy ( void )

Returns null policy used or null

参数

此函数没有参数。

返回值

参见

  • SolrCollapseFunction::setNullPolicy() - Sets the NULL Policy
SolrCollapseFunction::getMin
SolrCollapseFunction::getSize
SolrCollapseFunction


Returns size parameter

SolrCollapseFunction::getNullPolicy
SolrCollapseFunction::setField
SolrCollapseFunction
PHP Manual

SolrCollapseFunction::getSize

(PECL solr >= 2.2.0)

SolrCollapseFunction::getSize — Returns size parameter

说明

public integer SolrCollapseFunction::getSize ( void )

Gets the initial size of the collapse data structures when collapsing on a numeric field only

参数

此函数没有参数。

返回值

参见

  • SolrCollapseFunction::setSize() - Sets the initial size of the collapse data structures when collapsing on a numeric field only.
SolrCollapseFunction::getNullPolicy
SolrCollapseFunction::setField
SolrCollapseFunction


Sets the field to collapse on

SolrCollapseFunction::getSize
SolrCollapseFunction::setHint
SolrCollapseFunction
PHP Manual

SolrCollapseFunction::setField

(PECL solr >= 2.2.0)

SolrCollapseFunction::setField — Sets the field to collapse on

说明

public SolrCollapseFunction SolrCollapseFunction::setField ( string $fieldName )

The field name to collapse on. In order to collapse a result. The field type must be a single valued String, Int or Float.

参数

fieldName

返回值

SolrCollapseFunction

SolrCollapseFunction::getSize
SolrCollapseFunction::setHint
SolrCollapseFunction


Sets collapse hint

SolrCollapseFunction::setField
SolrCollapseFunction::setMax
SolrCollapseFunction
PHP Manual

SolrCollapseFunction::setHint

(PECL solr >= 2.2.0)

SolrCollapseFunction::setHint — Sets collapse hint

说明

public SolrCollapseFunction SolrCollapseFunction::setHint ( string $hint )

Sets collapse hint

参数

hint

Currently there is only one hint available "top_fc", which stands for top level FieldCache

返回值

SolrCollapseFunction

范例

Example #1 SolrCollapseFunction::setHint() example

<?php

/* ... */

?>

以上例程的输出类似于：

...
SolrCollapseFunction::setField
SolrCollapseFunction::setMax
SolrCollapseFunction


Selects the group heads by the max value of a numeric field or function query.

SolrCollapseFunction::setHint
SolrCollapseFunction::setMin
SolrCollapseFunction
PHP Manual

SolrCollapseFunction::setMax

(PECL solr >= 2.2.0)

SolrCollapseFunction::setMax — Selects the group heads by the max value of a numeric field or function query.

说明

public SolrCollapseFunction SolrCollapseFunction::setMax ( string $max )

Selects the group heads by the max value of a numeric field or function query.

参数

max

返回值

SolrCollapseFunction

范例

Example #1 SolrCollapseFunction::setMax() example

<?php

$func = new SolrCollapseFunction('field_name');

$func->setMax('sum(cscore(),field(some_field))');

$query = new SolrQuery('*:*');

$query->collapse($func);

?>
SolrCollapseFunction::setHint
SolrCollapseFunction::setMin
SolrCollapseFunction


Sets the initial size of the collapse data structures when collapsing on a numeric field only

SolrCollapseFunction::setMax
SolrCollapseFunction::setNullPolicy
SolrCollapseFunction
PHP Manual

SolrCollapseFunction::setMin

(PECL solr >= 2.2.0)

SolrCollapseFunction::setMin — Sets the initial size of the collapse data structures when collapsing on a numeric field only

说明

public SolrCollapseFunction SolrCollapseFunction::setMin ( string $min )

Sets the initial size of the collapse data structures when collapsing on a numeric field only

参数

min

返回值

SolrCollapseFunction

SolrCollapseFunction::setMax
SolrCollapseFunction::setNullPolicy
SolrCollapseFunction


Sets the NULL Policy

SolrCollapseFunction::setMin
SolrCollapseFunction::setSize
SolrCollapseFunction
PHP Manual

SolrCollapseFunction::setNullPolicy

(PECL solr >= 2.2.0)

SolrCollapseFunction::setNullPolicy — Sets the NULL Policy

说明

public SolrCollapseFunction SolrCollapseFunction::setNullPolicy ( string $nullPolicy )

Sets the NULL Policy. One of the 3 policies defined as class constants shall be passed. Accepts ignore, expand, or collapse policies.

参数

nullPolicy

返回值

SolrCollapseFunction

SolrCollapseFunction::setMin
SolrCollapseFunction::setSize
SolrCollapseFunction


Sets the initial size of the collapse data structures when collapsing on a numeric field only.

SolrCollapseFunction::setNullPolicy
SolrCollapseFunction::__toString
SolrCollapseFunction
PHP Manual

SolrCollapseFunction::setSize

(PECL solr >= 2.2.0)

SolrCollapseFunction::setSize — Sets the initial size of the collapse data structures when collapsing on a numeric field only.

说明

public SolrCollapseFunction SolrCollapseFunction::setSize ( integer $size )

Sets the initial size of the collapse data structures when collapsing on a numeric field only.

参数

size

返回值

SolrCollapseFunction

SolrCollapseFunction::setNullPolicy
SolrCollapseFunction::__toString
SolrCollapseFunction


Returns a string representing the constructed collapse function

SolrCollapseFunction::setSize
SolrException
SolrCollapseFunction
PHP Manual

SolrCollapseFunction::__toString

(PECL solr >= 2.2.0)

SolrCollapseFunction::__toString — Returns a string representing the constructed collapse function

说明

public string SolrCollapseFunction::__toString ( void )

Returns a string representing the constructed collapse function

参数

此函数没有参数。

返回值

SolrCollapseFunction::setSize
SolrException
SolrCollapseFunction


The SolrException class

(PECL solr >= 0.9.2)

简介

This is the base class for all exception thrown by the Solr extension classes.

类摘要

SolrException extends Exception {
/* 属性 */
protected integer $sourceline ;
protected string $sourcefile ;
protected string $zif_name ;
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 方法 */
public array getInternalInfo ( void )
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}

属性

sourceline

The line in c-space source file where exception was generated

sourcefile

The c-space source file where exception was generated

zif_name

The c-space function where exception was generated

Table of Contents

  • SolrException::getInternalInfo — Returns internal information where the Exception was thrown
SolrCollapseFunction::__toString
SolrException::getInternalInfo
Solr


Returns internal information where the Exception was thrown

SolrException
SolrClientException
SolrException
PHP Manual

SolrException::getInternalInfo

(PECL solr >= 0.9.2)

SolrException::getInternalInfo — Returns internal information where the Exception was thrown

说明

public array SolrException::getInternalInfo ( void )

Returns internal information where the Exception was thrown.

参数

此函数没有参数。

返回值

Returns an array containing internal information where the error was thrown. Used only for debugging by extension developers.

SolrException
SolrClientException
SolrException


The SolrClientException class

(PECL solr >= 0.9.2)

简介

An exception thrown when there is an error while making a request to the server from the client.

类摘要

SolrClientException extends SolrException {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
protected integer $sourceline ;
protected string $sourcefile ;
protected string $zif_name ;
/* 方法 */
public array getInternalInfo ( void )
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
public array SolrException::getInternalInfo ( void )
}

Table of Contents

  • SolrClientException::getInternalInfo — Returns internal information where the Exception was thrown
SolrException::getInternalInfo
SolrClientException::getInternalInfo
Solr


Returns internal information where the Exception was thrown

SolrClientException
SolrServerException
SolrClientException
PHP Manual

SolrClientException::getInternalInfo

(PECL solr >= 0.9.2)

SolrClientException::getInternalInfo — Returns internal information where the Exception was thrown

说明

public array SolrClientException::getInternalInfo ( void )

Returns internal information where the Exception was thrown.

参数

此函数没有参数。

返回值

Returns an array containing internal information where the error was thrown. Used only for debugging by extension developers.

SolrClientException
SolrServerException
SolrClientException


The SolrServerException class

(PECL Solr >= 1.1.0, >=2.0.0)

简介

An exception thrown when there is an error produced by the Solr Server itself.

类摘要

SolrServerException extends SolrException {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
protected integer $sourceline ;
protected string $sourcefile ;
protected string $zif_name ;
/* 方法 */
public array getInternalInfo ( void )
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
public array SolrException::getInternalInfo ( void )
}

Table of Contents

  • SolrServerException::getInternalInfo — Returns internal information where the Exception was thrown
SolrClientException::getInternalInfo
SolrServerException::getInternalInfo
Solr


Returns internal information where the Exception was thrown

SolrServerException
SolrIllegalArgumentException
SolrServerException
PHP Manual

SolrServerException::getInternalInfo

(PECL solr >= 1.1.0, >=2.0.0)

SolrServerException::getInternalInfo — Returns internal information where the Exception was thrown

说明

public array SolrServerException::getInternalInfo ( void )

Returns internal information where the Exception was thrown.

参数

此函数没有参数。

返回值

Returns an array containing internal information where the error was thrown. Used only for debugging by extension developers.

SolrServerException
SolrIllegalArgumentException
SolrServerException


The SolrIllegalArgumentException class

(PECL solr >= 0.9.2)

简介

This object is thrown when an illeglal or invalid argument is passed to a method.

类摘要

SolrIllegalArgumentException extends SolrException {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
protected integer $sourceline ;
protected string $sourcefile ;
protected string $zif_name ;
/* 方法 */
public array getInternalInfo ( void )
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
public array SolrException::getInternalInfo ( void )
}

Table of Contents

  • SolrIllegalArgumentException::getInternalInfo — Returns internal information where the Exception was thrown
SolrServerException::getInternalInfo
SolrIllegalArgumentException::getInternalInfo
Solr


Returns internal information where the Exception was thrown

SolrIllegalArgumentException
SolrIllegalOperationException
SolrIllegalArgumentException
PHP Manual

SolrIllegalArgumentException::getInternalInfo

(PECL solr >= 0.9.2)

SolrIllegalArgumentException::getInternalInfo — Returns internal information where the Exception was thrown

说明

public array SolrIllegalArgumentException::getInternalInfo ( void )

Returns internal information where the Exception was thrown.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Returns an array containing internal information where the error was thrown. Used only for debugging by extension developers.

SolrIllegalArgumentException
SolrIllegalOperationException
SolrIllegalArgumentException


The SolrIllegalOperationException class

(PECL solr >= 0.9.2)

简介

This object is thrown when an illegal or unsupported operation is performed on an object.

类摘要

SolrIllegalOperationException extends SolrException {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
protected integer $sourceline ;
protected string $sourcefile ;
protected string $zif_name ;
/* 方法 */
public array getInternalInfo ( void )
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
public array SolrException::getInternalInfo ( void )
}

Table of Contents

  • SolrIllegalOperationException::getInternalInfo — Returns internal information where the Exception was thrown
SolrIllegalArgumentException::getInternalInfo
SolrIllegalOperationException::getInternalInfo
Solr


Returns internal information where the Exception was thrown

SolrIllegalOperationException
SolrMissingMandatoryParameterException
SolrIllegalOperationException
PHP Manual

SolrIllegalOperationException::getInternalInfo

(PECL solr >= 0.9.2)

SolrIllegalOperationException::getInternalInfo — Returns internal information where the Exception was thrown

说明

public array SolrIllegalOperationException::getInternalInfo ( void )

Returns internal information where the Exception was thrown.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Returns an array containing internal information where the error was thrown. Used only for debugging by extension developers.

SolrIllegalOperationException
SolrMissingMandatoryParameterException
SolrIllegalOperationException


The SolrMissingMandatoryParameterException class

(No version information available, might only be in Git)

简介

类摘要

SolrMissingMandatoryParameterException extends SolrException {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
protected integer $sourceline ;
protected string $sourcefile ;
protected string $zif_name ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
public array SolrException::getInternalInfo ( void )
}
SolrIllegalOperationException::getInternalInfo
Sphinx
Solr


Sphinx 客户端

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • SphinxClient — SphinxClient 类
    • SphinxClient::addQuery — Add query to multi-query batch
    • SphinxClient::buildExcerpts — Build text snippets
    • SphinxClient::buildKeywords — Extract keywords from query
    • SphinxClient::close — 关闭先前打开的持久连接
    • SphinxClient::__construct — Create a new SphinxClient object
    • SphinxClient::escapeString — Escape special characters
    • SphinxClient::getLastError — Get the last error message
    • SphinxClient::getLastWarning — Get the last warning
    • SphinxClient::open — 建立到搜索服务端的持久连接
    • SphinxClient::query — 执行搜索查询
    • SphinxClient::resetFilters — Clear all filters
    • SphinxClient::resetGroupBy — Clear all group-by settings
    • SphinxClient::runQueries — Run a batch of search queries
    • SphinxClient::setArrayResult — 控制搜索结果集的返回格式
    • SphinxClient::setConnectTimeout — Set connection timeout
    • SphinxClient::setFieldWeights — Set field weights
    • SphinxClient::setFilter — 增加整数值过滤器
    • SphinxClient::setFilterFloatRange — Add new float range filter
    • SphinxClient::setFilterRange — Add new integer range filter
    • SphinxClient::setGeoAnchor — Set anchor point for a geosphere distance calculations
    • SphinxClient::setGroupBy — Set grouping attribute
    • SphinxClient::setGroupDistinct — Set attribute name for per-group distinct values count calculations
    • SphinxClient::setIDRange — Set a range of accepted document IDs
    • SphinxClient::setIndexWeights — Set per-index weights
    • SphinxClient::setLimits — 设置返回结果集偏移量和数目
    • SphinxClient::setMatchMode — 设置全文查询的匹配模式
    • SphinxClient::setMaxQueryTime — Set maximum query time
    • SphinxClient::setOverride — Sets temporary per-document attribute value overrides
    • SphinxClient::setRankingMode — Set ranking mode
    • SphinxClient::setRetries — Set retry count and delay
    • SphinxClient::setSelect — Set select clause
    • SphinxClient::setServer — 设置searchd的主机名和TCP端口
    • SphinxClient::setSortMode — Set matches sorting mode
    • SphinxClient::status — Queries searchd status
    • SphinxClient::updateAttributes — Update document attributes
SolrMissingMandatoryParameterException
简介
搜索引擎扩展


简介

该扩展提供了针对Sphinx搜索客户端开发库的绑定. Sphinx是一个独立的搜索引擎系统，其目的是为其他相关程序和应用提供快速的、规模可扩展的全文搜索功能. Sphinx有着良好的设计，可以很方便的与SQL数据库结合，并使用脚本语言调用. SPhinx 以及 其客户端库 可以从 » 官方站点获取，中文用户也可以从» Coreseek获取支持中文的版本和服务。

Sphinx
安装／配置
Sphinx


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Sphinx


需求

PECL/sphinx requires PHP 5.2.2 or newer.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/sphinx.

如果 ./configure 不能正确找到 libsphinxclient 文件 (例如, 他被安装在用户自己定义的目录中), 使用 ./configure --with-sphinx=$PREFIX来制定libsphinxclient的具体位置（$PREFIX是libsphinxclient的安装位置）.

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

SEARCHD_OK (integer)
SEARCHD_ERROR (integer)
SEARCHD_RETRY (integer)
SEARCHD_WARNING (integer)
SPH_MATCH_ALL (integer)
SPH_MATCH_ANY (integer)
SPH_MATCH_PHRASE (integer)
SPH_MATCH_BOOLEAN (integer)
SPH_MATCH_EXTENDED (integer)
SPH_MATCH_FULLSCAN (integer)
SPH_MATCH_EXTENDED2 (integer)
SPH_RANK_PROXIMITY_BM25 (integer)
SPH_RANK_BM25 (integer)
SPH_RANK_NONE (integer)
SPH_RANK_WORDCOUNT (integer)
SPH_SORT_RELEVANCE (integer)
SPH_SORT_ATTR_DESC (integer)
SPH_SORT_ATTR_ASC (integer)
SPH_SORT_TIME_SEGMENTS (integer)
SPH_SORT_EXTENDED (integer)
SPH_SORT_EXPR (integer)
SPH_FILTER_VALUES (integer)
SPH_FILTER_RANGE (integer)
SPH_FILTER_FLOATRANGE (integer)
SPH_ATTR_INTEGER (integer)
SPH_ATTR_TIMESTAMP (integer)
SPH_ATTR_ORDINAL (integer)
SPH_ATTR_BOOL (integer)
SPH_ATTR_FLOAT (integer)
SPH_ATTR_MULTI (integer)
SPH_GROUPBY_DAY (integer)
SPH_GROUPBY_WEEK (integer)
SPH_GROUPBY_MONTH (integer)
SPH_GROUPBY_YEAR (integer)
SPH_GROUPBY_ATTR (integer)
SPH_GROUPBY_ATTRPAIR (integer)

资源类型
范例
Sphinx


范例

Example #1 基本使用范例

<?php

$s = new SphinxClient;
$s->setServer("localhost", 6712);
$s->setMatchMode(SPH_MATCH_ANY);
$s->setMaxQueryTime(3);

$result = $s->query("test");

var_dump($result);

?>

以上例程的输出类似于：

array(10) {
  ["error"]=>
  string(0) ""
  ["warning"]=>
  string(0) ""
  ["status"]=>
  int(0)
  ["fields"]=>
  array(3) {
    [0]=>
    string(7) "subject"
    [1]=>
    string(4) "body"
    [2]=>
    string(6) "author"
  }
  ["attrs"]=>
  array(0) {
  }
  ["matches"]=>
  array(1) {
    [3]=>
    array(2) {
      ["weight"]=>
      int(1)
      ["attrs"]=>
      array(0) {
      }
    }
  }
  ["total"]=>
  int(1)
  ["total_found"]=>
  int(1)
  ["time"]=>
  float(0)
  ["words"]=>
  array(1) {
    ["to"]=>
    array(2) {
      ["docs"]=>
      int(1)
      ["hits"]=>
      int(1)
    }
  }
}
预定义常量
SphinxClient
Sphinx


SphinxClient 类

(PECL sphinx >= 0.1.0)

简介

SphinxClient 为 Sphinx 提供了面向对象的接口.

类摘要

SphinxClient {
/* 方法 */
public int addQuery ( string $query [, string $index = "*" [, string $comment = "" ]] )
public array buildExcerpts ( array $docs , string $index , string $words [, array $opts ] )
public array buildKeywords ( string $query , string $index , bool $hits )
public bool close ( void )
public __construct ( void )
public string escapeString ( string $string )
public string getLastError ( void )
public string getLastWarning ( void )
public bool open ( void )
public array query ( string $query [, string $index = "*" [, string $comment = "" ]] )
public void resetFilters ( void )
public void resetGroupBy ( void )
public array runQueries ( void )
public bool setArrayResult ( bool $array_result = false )
public bool setConnectTimeout ( float $timeout )
public bool setFieldWeights ( array $weights )
public bool setFilter ( string $attribute , array $values [, bool $exclude = false ] )
public bool setFilterFloatRange ( string $attribute , float $min , float $max [, bool $exclude = false ] )
public bool setFilterRange ( string $attribute , int $min , int $max [, bool $exclude = false ] )
public bool setGeoAnchor ( string $attrlat , string $attrlong , float $latitude , float $longitude )
public bool setGroupBy ( string $attribute , int $func [, string $groupsort = "@group desc" ] )
public bool setGroupDistinct ( string $attribute )
public bool setIDRange ( int $min , int $max )
public bool setIndexWeights ( array $weights )
public bool setLimits ( int $offset , int $limit [, int $max_matches = 0 [, int $cutoff = 0 ]] )
public bool setMatchMode ( int $mode )
public bool setMaxQueryTime ( int $qtime )
public bool setOverride ( string $attribute , int $type , array $values )
public bool setRankingMode ( int $ranker )
public bool setRetries ( int $count [, int $delay = 0 ] )
public bool setSelect ( string $clause )
public bool setServer ( string $server , int $port )
public bool setSortMode ( int $mode [, string $sortby ] )
public array status ( void )
public int updateAttributes ( string $index , array $attributes , array $values [, bool $mva = false ] )
}

Table of Contents

  • SphinxClient::addQuery — Add query to multi-query batch
  • SphinxClient::buildExcerpts — Build text snippets
  • SphinxClient::buildKeywords — Extract keywords from query
  • SphinxClient::close — 关闭先前打开的持久连接
  • SphinxClient::__construct — Create a new SphinxClient object
  • SphinxClient::escapeString — Escape special characters
  • SphinxClient::getLastError — Get the last error message
  • SphinxClient::getLastWarning — Get the last warning
  • SphinxClient::open — 建立到搜索服务端的持久连接
  • SphinxClient::query — 执行搜索查询
  • SphinxClient::resetFilters — Clear all filters
  • SphinxClient::resetGroupBy — Clear all group-by settings
  • SphinxClient::runQueries — Run a batch of search queries
  • SphinxClient::setArrayResult — 控制搜索结果集的返回格式
  • SphinxClient::setConnectTimeout — Set connection timeout
  • SphinxClient::setFieldWeights — Set field weights
  • SphinxClient::setFilter — 增加整数值过滤器
  • SphinxClient::setFilterFloatRange — Add new float range filter
  • SphinxClient::setFilterRange — Add new integer range filter
  • SphinxClient::setGeoAnchor — Set anchor point for a geosphere distance calculations
  • SphinxClient::setGroupBy — Set grouping attribute
  • SphinxClient::setGroupDistinct — Set attribute name for per-group distinct values count calculations
  • SphinxClient::setIDRange — Set a range of accepted document IDs
  • SphinxClient::setIndexWeights — Set per-index weights
  • SphinxClient::setLimits — 设置返回结果集偏移量和数目
  • SphinxClient::setMatchMode — 设置全文查询的匹配模式
  • SphinxClient::setMaxQueryTime — Set maximum query time
  • SphinxClient::setOverride — Sets temporary per-document attribute value overrides
  • SphinxClient::setRankingMode — Set ranking mode
  • SphinxClient::setRetries — Set retry count and delay
  • SphinxClient::setSelect — Set select clause
  • SphinxClient::setServer — 设置searchd的主机名和TCP端口
  • SphinxClient::setSortMode — Set matches sorting mode
  • SphinxClient::status — Queries searchd status
  • SphinxClient::updateAttributes — Update document attributes
范例
SphinxClient::addQuery
Sphinx


Add query to multi-query batch

SphinxClient
SphinxClient::buildExcerpts
SphinxClient
PHP Manual

SphinxClient::addQuery

(PECL sphinx >= 0.1.0)

SphinxClient::addQuery — Add query to multi-query batch

说明

public int SphinxClient::addQuery ( string $query [, string $index = "*" [, string $comment = "" ]] )

Adds query with the current settings to multi-query batch. This method doesn't affect current settings (sorting, filtering, grouping etc.) in any way.

参数

query

Query string.

index

An index name (or names).

comment

返回值

Returns an index in an array of results that will be returned by SphinxClient::runQueries call or false on error.

参见

  • SphinxClient::runQueries
  • SphinxClient::query

SphinxClient
SphinxClient::buildExcerpts
SphinxClient


Build text snippets

SphinxClient::addQuery
SphinxClient::buildKeywords
SphinxClient
PHP Manual

SphinxClient::buildExcerpts

(PECL sphinx >= 0.1.0)

SphinxClient::buildExcerpts — Build text snippets

说明

public array SphinxClient::buildExcerpts ( array $docs , string $index , string $words [, array $opts ] )

Connects to searchd, requests it to generate excerpts (snippets) from the given documents, and returns the results.

参数

docs

Array of strings with documents' contents.

index

Index name.

words

Keywords to highlight.

opts

Associative array of additional highlighting options (see below).

Highlighting options
Option | Description
"before_match" | A string to insert before a keyword match. Default is "<b>".
"after_match" | A string to insert after a keyword match. Default is "</b>".
"chunk_separator" | A string to insert between snippet chunks (passages). Default is " ... ".
"limit" | Maximum snippet size, in symbols (codepoints). Integer, default is 256.
"around" | How much words to pick around each matching keywords block. Integer, default is 5.
"exact_phrase" | Whether to highlight exact query phrase matches only instead of individual keywords. Boolean, default is FALSE.
"single_passage" | Whether to extract single best passage only. Boolean, default is FALSE.

返回值

Returns array of snippets on success 或者在失败时返回 FALSE.

SphinxClient::addQuery
SphinxClient::buildKeywords
SphinxClient


Extract keywords from query

SphinxClient::buildExcerpts
SphinxClient::close
SphinxClient
PHP Manual

SphinxClient::buildKeywords

(PECL sphinx >= 0.1.0)

SphinxClient::buildKeywords — Extract keywords from query

说明

public array SphinxClient::buildKeywords ( string $query , string $index , bool $hits )

Extracts keywords from query using tokenizer settings for the given index, optionally with per-keyword occurrence statistics.

参数

query

A query to extract keywords from.

index

An index to get tokenizing settings and keyword occurrence statistics from.

hits

A boolean flag to enable/disable keyword statistics generation.

返回值

Returns an array of associative arrays with per-keyword information.

SphinxClient::buildExcerpts
SphinxClient::close
SphinxClient


关闭先前打开的持久连接

SphinxClient::buildKeywords
SphinxClient::__construct
SphinxClient
PHP Manual

SphinxClient::close

(PECL sphinx >= 1.0.3)

SphinxClient::close — 关闭先前打开的持久连接

说明

public bool SphinxClient::close ( void )

关闭先前打开的持久连接.

参数

此函数没有参数。

更新日志

PECL/sphinx 版本 | 说明
1.0.3 | 新增函数 SphinxClient::close(), 仅在编译时使用 libsphinxclient >= 0.9.9 有效.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • SphinxClient::open

SphinxClient::buildKeywords
SphinxClient::__construct
SphinxClient


Create a new SphinxClient object

SphinxClient::close
SphinxClient::escapeString
SphinxClient
PHP Manual

SphinxClient::__construct

(PECL sphinx >= 0.1.0)

SphinxClient::__construct — Create a new SphinxClient object

说明

public SphinxClient::__construct ( void )

Creates a new SphinxClient object.

参数

此函数没有参数。

SphinxClient::close
SphinxClient::escapeString
SphinxClient


Escape special characters

SphinxClient::__construct
SphinxClient::getLastError
SphinxClient
PHP Manual

SphinxClient::escapeString

(PECL sphinx >= 0.1.0)

SphinxClient::escapeString — Escape special characters

说明

public string SphinxClient::escapeString ( string $string )

Escapes characters that are treated as special operators by the query language parser.

参数

string

String to escape.

返回值

Returns escaped string.

SphinxClient::__construct
SphinxClient::getLastError
SphinxClient


Get the last error message

SphinxClient::escapeString
SphinxClient::getLastWarning
SphinxClient
PHP Manual

SphinxClient::getLastError

(PECL sphinx >= 0.1.0)

SphinxClient::getLastError — Get the last error message

说明

public string SphinxClient::getLastError ( void )

Returns string with the last error message. If there were no errors during the previous API call, empty string is returned. This method doesn't reset the error message, so you can safely call it several times.

参数

此函数没有参数。

返回值

Returns the last error message or an empty string if there were no errors.

参见

  • SphinxClient::getLastWarning

SphinxClient::escapeString
SphinxClient::getLastWarning
SphinxClient


Get the last warning

SphinxClient::getLastError
SphinxClient::open
SphinxClient
PHP Manual

SphinxClient::getLastWarning

(PECL sphinx >= 0.1.0)

SphinxClient::getLastWarning — Get the last warning

说明

public string SphinxClient::getLastWarning ( void )

Returns last warning message. If there were no warnings during the previous API call, empty string is returned. This method doesn't reset the warning, so you can safely call it several times.

参数

此函数没有参数。

返回值

Returns the last warning message or an empty string if there were no warnings.

参见

  • SphinxClient::getLastError

SphinxClient::getLastError
SphinxClient::open
SphinxClient


建立到搜索服务端的持久连接

SphinxClient::getLastWarning
SphinxClient::query
SphinxClient
PHP Manual

SphinxClient::open

(PECL sphinx >= 1.0.3)

SphinxClient::open — 建立到搜索服务端的持久连接

说明

public bool SphinxClient::open ( void )

建立到搜索服务端的持久连接.

参数

此函数没有参数。

更新日志

PECL/sphinx 版本 | 说明
1.0.3 | 新增函数 SphinxClient::open(), 仅在编译时使用 libsphinxclient >= 0.9.9 有效.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • SphinxClient::close

SphinxClient::getLastWarning
SphinxClient::query
SphinxClient


执行搜索查询

SphinxClient::open
SphinxClient::resetFilters
SphinxClient
PHP Manual

SphinxClient::query

(PECL sphinx >= 0.1.0)

SphinxClient::query — 执行搜索查询

说明

public array SphinxClient::query ( string $query [, string $index = "*" [, string $comment = "" ]] )

连接到searchd服务器，根据服务器的当前设置执行给定的查询，取得并返回结果集.

参数

query

查询字符串.

index

索引名称 (可以为多个，使用逗号分割，或者为"*"表示全部索引).

comment

发送到searchd的查询日志的注释内容

返回值

如果搜索成功, SphinxClient::query() 返回的结果集列表包含找到的全部匹配项中的一部分，以及与查询相关的统计数据. 结果集是哈希结构，包含如下键和值:

返回数据结构
键 | 值说明
"matches" | 存储文档ID以及其对应的另一个包含文档权重和属性值的hash表
"total" | 此查询在服务器检索所得的匹配文档总数（即服务器端结果集的大小，且与相关设置有关）
"total_found" | （服务器上找到和处理了的）索引中匹配文档的总数
"words" | 将查询关键字（关键字已经过大小写转换，取词干和其他处理）映射到一个包含关于关键字的统计数据（"docs"——在多少文档中出现，"hits"——共出现了多少次）的小hash表上。
"error" | searchd报告的错误信息
"warning" | searchd报告的警告信息

参见

  • SphinxClient::runQueries
  • SphinxClient::addQuery

SphinxClient::open
SphinxClient::resetFilters
SphinxClient


Clear all filters

SphinxClient::query
SphinxClient::resetGroupBy
SphinxClient
PHP Manual

SphinxClient::resetFilters

(PECL sphinx >= 0.1.0)

SphinxClient::resetFilters — Clear all filters

说明

public void SphinxClient::resetFilters ( void )

Clears all currently set filters. This call is normally required when using multi-queries. You might want to set different filters for different queries in the batch. To do that, you should call SphinxClient::resetFilters() and add new filters using the respective calls.

返回值

没有返回值。

参见

  • SphinxClient::resetGroupBy

SphinxClient::query
SphinxClient::resetGroupBy
SphinxClient


Clear all group-by settings

SphinxClient::resetFilters
SphinxClient::runQueries
SphinxClient
PHP Manual

SphinxClient::resetGroupBy

(PECL sphinx >= 0.1.0)

SphinxClient::resetGroupBy — Clear all group-by settings

说明

public void SphinxClient::resetGroupBy ( void )

Clears all currently group-by settings, and disables group-by. This call is normally required only when using multi-queries.

返回值

没有返回值。

参见

  • SphinxClient::resetGroupBy

SphinxClient::resetFilters
SphinxClient::runQueries
SphinxClient


Run a batch of search queries

SphinxClient::resetGroupBy
SphinxClient::setArrayResult
SphinxClient
PHP Manual

SphinxClient::runQueries

(PECL sphinx >= 0.1.0)

SphinxClient::runQueries — Run a batch of search queries

说明

public array SphinxClient::runQueries ( void )

Connects to searchd, runs a batch of all queries added using SphinxClient::addQuery, obtains and returns the result sets.

返回值

Returns FALSE on failure and array of result sets on success.

参见

  • SphinxClient::addQuery
  • SphinxClient::query

SphinxClient::resetGroupBy
SphinxClient::setArrayResult
SphinxClient


控制搜索结果集的返回格式

SphinxClient::runQueries
SphinxClient::setConnectTimeout
SphinxClient
PHP Manual

SphinxClient::setArrayResult

(PECL sphinx >= 0.1.0)

SphinxClient::setArrayResult — 控制搜索结果集的返回格式

说明

public bool SphinxClient::setArrayResult ( bool $array_result = false )

控制搜索结果集的返回格式（匹配项按数组返回还是按hash返回）.

参数

array_result

如果 array_result 设置为 FALSE, 匹配项以PHP hash格式返回，文档ID为键，其他信息（权重、属性）为值。如果 array_result 设置为 TRUE, 匹配项以普通数组返回，包括匹配项的全部信息（含文档ID）.

返回值

总是返回 TRUE.

SphinxClient::runQueries
SphinxClient::setConnectTimeout
SphinxClient


Set connection timeout

SphinxClient::setArrayResult
SphinxClient::setFieldWeights
SphinxClient
PHP Manual

SphinxClient::setConnectTimeout

(PECL sphinx >= 0.1.0)

SphinxClient::setConnectTimeout — Set connection timeout

说明

public bool SphinxClient::setConnectTimeout ( float $timeout )

Sets connection timeout (in seconds) for searchd connection.

参数

timeout

Timeout in seconds.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • SphinxClient::setMaxQueryTime

SphinxClient::setArrayResult
SphinxClient::setFieldWeights
SphinxClient


Set field weights

SphinxClient::setConnectTimeout
SphinxClient::setFilter
SphinxClient
PHP Manual

SphinxClient::setFieldWeights

(PECL sphinx >= 0.1.0)

SphinxClient::setFieldWeights — Set field weights

说明

public bool SphinxClient::setFieldWeights ( array $weights )

Binds per-field weights by name.

Match ranking can be affected by per-field weights. See » Sphinx documentation for an explanation on how phrase proximity ranking is affected. This call lets you specify non-default weights for full-text fields.

The weights must be positive 32-bit integers, so be careful not to hit 32-bit integer maximum. The final weight is a 32-bit integer too. Default weight value is 1. Unknown field names are silently ignored.

参数

weights

Associative array of field names and field weights.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • SphinxClient::setIndexWeights

SphinxClient::setConnectTimeout
SphinxClient::setFilter
SphinxClient


增加整数值过滤器

SphinxClient::setFieldWeights
SphinxClient::setFilterFloatRange
SphinxClient
PHP Manual

SphinxClient::setFilter

(PECL sphinx >= 0.1.0)

SphinxClient::setFilter — 增加整数值过滤器

说明

public bool SphinxClient::setFilter ( string $attribute , array $values [, bool $exclude = false ] )

在已有的过滤器列表中添加新的过滤器.

参数

attribute

属性名称.

values

整数值数组.

exclude

如果设置为 TRUE, 则匹配该过滤规则的文档会被排除在结果之外.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • SphinxClient::setFilterFloatRange
  • SphinxClient::setFilterRange
  • SphinxClient::resetFilters

SphinxClient::setFieldWeights
SphinxClient::setFilterFloatRange
SphinxClient


Add new float range filter

SphinxClient::setFilter
SphinxClient::setFilterRange
SphinxClient
PHP Manual

SphinxClient::setFilterFloatRange

(PECL sphinx >= 0.1.0)

SphinxClient::setFilterFloatRange — Add new float range filter

说明

public bool SphinxClient::setFilterFloatRange ( string $attribute , float $min , float $max [, bool $exclude = false ] )

Adds new float range filter to the existing list of filters. Only those documents which have attribute value stored in the index between min and max (including values that are exactly equal to min or max) will be matched (or rejected, if exclude is TRUE).

参数

attribute

An attribute name.

min

Minimum value.

max

Maximum value.

exclude

If set to TRUE, matching documents are excluded from the result set.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • SphinxClient::setFilterRange
  • SphinxClient::setFilter
  • SphinxClient::resetFilters

SphinxClient::setFilter
SphinxClient::setFilterRange
SphinxClient


Add new integer range filter

SphinxClient::setFilterFloatRange
SphinxClient::setGeoAnchor
SphinxClient
PHP Manual

SphinxClient::setFilterRange

(PECL sphinx >= 0.1.0)

SphinxClient::setFilterRange — Add new integer range filter

说明

public bool SphinxClient::setFilterRange ( string $attribute , int $min , int $max [, bool $exclude = false ] )

Adds new integer range filter to the existing list of filters. Only those documents which have attribute value stored in the index between min and max (including values that are exactly equal to min or max) will be matched (or rejected, if exclude is TRUE).

参数

attribute

An attribute name.

min

Minimum value.

max

Maximum value.

exclude

If set to TRUE, matching documents are excluded from the result set.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • SphinxClient::setFilterFloatRange
  • SphinxClient::setFilter
  • SphinxClient::resetFilters

SphinxClient::setFilterFloatRange
SphinxClient::setGeoAnchor
SphinxClient


Set anchor point for a geosphere distance calculations

SphinxClient::setFilterRange
SphinxClient::setGroupBy
SphinxClient
PHP Manual

SphinxClient::setGeoAnchor

(PECL sphinx >= 0.1.0)

SphinxClient::setGeoAnchor — Set anchor point for a geosphere distance calculations

说明

public bool SphinxClient::setGeoAnchor ( string $attrlat , string $attrlong , float $latitude , float $longitude )

Sets anchor point for a geosphere distance (geodistance) calculations and enables them.

Once an anchor point is set, you can use magic "@geodist" attribute name in your filters and/or sorting expressions.

参数

attrlat

Name of a latitude attribute.

attrlong

Name of a longitude attribute.

latitude

Anchor latitude in radians.

longitude

Anchor longitude in radians.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • SphinxClient::setFilterFloatRange
  • SphinxClient::setFilterRange
  • SphinxClient::setFilter
  • SphinxClient::resetFilters

SphinxClient::setFilterRange
SphinxClient::setGroupBy
SphinxClient


Set grouping attribute

SphinxClient::setGeoAnchor
SphinxClient::setGroupDistinct
SphinxClient
PHP Manual

SphinxClient::setGroupBy

(PECL sphinx >= 0.1.0)

SphinxClient::setGroupBy — Set grouping attribute

说明

public bool SphinxClient::setGroupBy ( string $attribute , int $func [, string $groupsort = "@group desc" ] )

Sets grouping attribute, function, and group sorting mode, and enables grouping.

Grouping feature is very similar to GROUP BY clause in SQL. Results produced by this function call are going to be the same as produced by the following pseudo code: SELECT ... GROUP BY $func($attribute) ORDER BY $groupsort.

参数

attribute

A string containing group-by attribute name.

func

Constant, which sets a function applied to the attribute value in order to compute group-by key.

groupsort

An optional clause controlling how the groups are sorted.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • SphinxClient::resetGroupBy
  • SphinxClient::setSortMode
  • SphinxClient::setGroupDistinct

SphinxClient::setGeoAnchor
SphinxClient::setGroupDistinct
SphinxClient


Set attribute name for per-group distinct values count calculations

SphinxClient::setGroupBy
SphinxClient::setIDRange
SphinxClient
PHP Manual

SphinxClient::setGroupDistinct

(PECL sphinx >= 0.1.0)

SphinxClient::setGroupDistinct — Set attribute name for per-group distinct values count calculations

说明

public bool SphinxClient::setGroupDistinct ( string $attribute )

Sets attribute name for per-group distinct values count calculations. Only available for grouping queries. For each group, all values of attribute will be stored, then the amount of distinct values will be calculated and returned to the client. This feature is similar to COUNT(DISTINCT) clause in SQL.

参数

attribute

A string containing group-by attribute name.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • SphinxClient::setSortMode
  • SphinxClient::setGroupBy
  • SphinxClient::resetGroupBy

SphinxClient::setGroupBy
SphinxClient::setIDRange
SphinxClient


Set a range of accepted document IDs

SphinxClient::setGroupDistinct
SphinxClient::setIndexWeights
SphinxClient
PHP Manual

SphinxClient::setIDRange

(PECL sphinx >= 0.1.0)

SphinxClient::setIDRange — Set a range of accepted document IDs

说明

public bool SphinxClient::setIDRange ( int $min , int $max )

Sets an accepted range of document IDs. Default range is from 0 to 0, i.e. no limit. Only those records that have document ID between min and max (including IDs exactly equal to min or max) will be matched.

参数

min

Minimum ID value.

max

Maximum ID value.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SphinxClient::setGroupDistinct
SphinxClient::setIndexWeights
SphinxClient


Set per-index weights

SphinxClient::setIDRange
SphinxClient::setLimits
SphinxClient
PHP Manual

SphinxClient::setIndexWeights

(PECL sphinx >= 0.1.0)

SphinxClient::setIndexWeights — Set per-index weights

说明

public bool SphinxClient::setIndexWeights ( array $weights )

Sets per-index weights and enables weighted summing of match weights across different indexes.

参数

weights

An associative array mapping string index names to integer weights. Default is empty array, i.e. weighting summing is disabled.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SphinxClient::setIDRange
SphinxClient::setLimits
SphinxClient


设置返回结果集偏移量和数目

SphinxClient::setIndexWeights
SphinxClient::setMatchMode
SphinxClient
PHP Manual

SphinxClient::setLimits

(PECL sphinx >= 0.1.0)

SphinxClient::setLimits — 设置返回结果集偏移量和数目

说明

public bool SphinxClient::setLimits ( int $offset , int $limit [, int $max_matches = 0 [, int $cutoff = 0 ]] )

给服务器端结果集设置一个偏移量 offset 从那个偏移量起向客户端返回的匹配项数目限制(limit) . 并且可以在服务器端设定当前查询的结果集大小 (max_matches) ，另有一个阈值 (cutoff)，当找到的匹配项达到这个阀值时就停止搜索。

参数

offset

结果集的偏移量.

limit

返回的匹配项数目.

max_matches

设置控制搜索过程中searchd在内存中所保持的匹配项数目.

cutoff

该设置是为高级性能优化而提供的. 它告诉searchd 在找到并处理 cutoff 个匹配后就强制停止.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SphinxClient::setIndexWeights
SphinxClient::setMatchMode
SphinxClient


设置全文查询的匹配模式

SphinxClient::setLimits
SphinxClient::setMaxQueryTime
SphinxClient
PHP Manual

SphinxClient::setMatchMode

(PECL sphinx >= 0.1.0)

SphinxClient::setMatchMode — 设置全文查询的匹配模式

说明

public bool SphinxClient::setMatchMode ( int $mode )

设置全文查询的匹配模式. mode 是以下列出的常量之一.

匹配模式
Constant | Description
SPH_MATCH_ALL | 匹配所有查询词（默认模式）.
SPH_MATCH_ANY | 匹配查询词中的任意一个.
SPH_MATCH_PHRASE | 将整个查询看作一个词组，要求按顺序完整匹配.
SPH_MATCH_BOOLEAN | 将查询看作一个布尔表达式.
SPH_MATCH_EXTENDED | 将查询看作一个Sphinx内部查询语言的表达式.
SPH_MATCH_FULLSCAN | 使用完全扫描，忽略查询词汇.
SPH_MATCH_EXTENDED2 | 类似 SPH_MATCH_EXTENDED ，并支持评分和权重.

参数

mode

匹配模式.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • SphinxClient::setRankingMode
  • SphinxClient::setSortMode

SphinxClient::setLimits
SphinxClient::setMaxQueryTime
SphinxClient


Set maximum query time

SphinxClient::setMatchMode
SphinxClient::setOverride
SphinxClient
PHP Manual

SphinxClient::setMaxQueryTime

(PECL sphinx >= 0.1.0)

SphinxClient::setMaxQueryTime — Set maximum query time

说明

public bool SphinxClient::setMaxQueryTime ( int $qtime )

Sets maximum search query time.

参数

qtime

Maximum query time, in milliseconds. It must be a non-negative integer. Default value is 0, i.e. no limit.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SphinxClient::setMatchMode
SphinxClient::setOverride
SphinxClient


Sets temporary per-document attribute value overrides

SphinxClient::setMaxQueryTime
SphinxClient::setRankingMode
SphinxClient
PHP Manual

SphinxClient::setOverride

(PECL sphinx >= 1.0.3)

SphinxClient::setOverride — Sets temporary per-document attribute value overrides

说明

public bool SphinxClient::setOverride ( string $attribute , int $type , array $values )

Sets temporary (per-query) per-document attribute value overrides. Override feature lets you "temporary" update attribute values for some documents within a single query, leaving all other queries unaffected. This might be useful for personalized data

参数

attribute

An attribute name.

type

An attribute type. Only supports scalar attributes.

values

Array of attribute values that maps document IDs to overridden attribute values.

更新日志

PECL/sphinx 版本 | 说明
1.0.3 | Added SphinxClient::setOverride(), available only if compiled with libsphinxclient >= 0.9.9.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SphinxClient::setMaxQueryTime
SphinxClient::setRankingMode
SphinxClient


Set ranking mode

SphinxClient::setOverride
SphinxClient::setRetries
SphinxClient
PHP Manual

SphinxClient::setRankingMode

(PECL sphinx >= 0.1.0)

SphinxClient::setRankingMode — Set ranking mode

说明

public bool SphinxClient::setRankingMode ( int $ranker )

Sets ranking mode. Only available in SPH_MATCH_EXTENDED2 matching mode.

Ranking modes
Constant | Description
SPH_RANK_PROXIMITY_BM25 | Default ranking mode which uses both proximity and BM25 ranking.
SPH_RANK_BM25 | Statistical ranking mode which uses BM25 ranking only (similar to most of other full-text engines). This mode is faster, but may result in worse quality on queries which contain more than 1 keyword.
SPH_RANK_NONE | Disables ranking. This mode is the fastest. It is essentially equivalent to boolean searching, a weight of 1 is assigned to all matches.

参数

ranker

Ranking mode.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • SphinxClient::setMatchMode

SphinxClient::setOverride
SphinxClient::setRetries
SphinxClient


Set retry count and delay

SphinxClient::setRankingMode
SphinxClient::setSelect
SphinxClient
PHP Manual

SphinxClient::setRetries

(PECL sphinx >= 0.1.0)

SphinxClient::setRetries — Set retry count and delay

说明

public bool SphinxClient::setRetries ( int $count [, int $delay = 0 ] )

Sets distributed retry count and delay.

On temporary failures searchd will attempt up to count retries per agent. delay is the delay between the retries, in milliseconds. Retries are disabled by default. Note that this call will not make the API itself retry on temporary failure; it only tells searchd to do so.

参数

count

Number of retries.

delay

Delay between retries, in milliseconds.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SphinxClient::setRankingMode
SphinxClient::setSelect
SphinxClient


Set select clause

SphinxClient::setRetries
SphinxClient::setServer
SphinxClient
PHP Manual

SphinxClient::setSelect

(PECL sphinx >= 1.0.1)

SphinxClient::setSelect — Set select clause

说明

public bool SphinxClient::setSelect ( string $clause )

Sets the select clause, listing specific attributes to fetch, and expressions to compute and fetch.

参数

clause

SQL-like clause.

更新日志

PECL/sphinx 版本 | 说明
1.0.1 | Added SphinxClient::setSelect(), available only if compiled with libsphinxclient >= 0.9.9.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SphinxClient::setRetries
SphinxClient::setServer
SphinxClient


设置searchd的主机名和TCP端口

SphinxClient::setSelect
SphinxClient::setSortMode
SphinxClient
PHP Manual

SphinxClient::setServer

(PECL sphinx >= 0.1.0)

SphinxClient::setServer — 设置searchd的主机名和TCP端口

说明

public bool SphinxClient::setServer ( string $server , int $port )

设置searchd的主机名和TCP端口。此后的所有请求都使用新的主机和端口设置。默认的主机和端口分别是"localhost"和3312.

参数

server

IP 或者主机名.

port

端口.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

SphinxClient::setSelect
SphinxClient::setSortMode
SphinxClient


Set matches sorting mode

SphinxClient::setServer
SphinxClient::status
SphinxClient
PHP Manual

SphinxClient::setSortMode

(PECL sphinx >= 0.1.0)

SphinxClient::setSortMode — Set matches sorting mode

说明

public bool SphinxClient::setSortMode ( int $mode [, string $sortby ] )

Sets matches sorting mode. See available modes below.

Sorting modes
Constant | Description
SPH_SORT_RELEVANCE | Sort by relevance in descending order (best matches first).
SPH_SORT_ATTR_DESC | Sort by an attribute in descending order (bigger attribute values first).
SPH_SORT_ATTR_ASC | Sort by an attribute in ascending order (smaller attribute values first).
SPH_SORT_TIME_SEGMENTS | Sort by time segments (last hour/day/week/month) in descending order, and then by relevance in descending order.
SPH_SORT_EXTENDED | Sort by SQL-like combination of columns in ASC/DESC order.
SPH_SORT_EXPR | Sort by an arithmetic expression.

参数

mode

Sorting mode.

sortby

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • SphinxClient::setMatchMode
  • SphinxClient::setSortMode

SphinxClient::setServer
SphinxClient::status
SphinxClient


Queries searchd status

SphinxClient::setSortMode
SphinxClient::updateAttributes
SphinxClient
PHP Manual

SphinxClient::status

(PECL sphinx >= 1.0.3)

SphinxClient::status — Queries searchd status

说明

public array SphinxClient::status ( void )

Queries searchd status, and returns an array of status variable name and value pairs.

参数

此函数没有参数。

更新日志

PECL/sphinx 版本 | 说明
1.0.3 | Added SphinxClient::status(), available only if compiled with libsphinxclient >= 0.9.9.

返回值

Returns an associative array of search server statistics 或者在失败时返回 FALSE.

SphinxClient::setSortMode
SphinxClient::updateAttributes
SphinxClient


Update document attributes

SphinxClient::status
Swish
SphinxClient
PHP Manual

SphinxClient::updateAttributes

(PECL sphinx >= 0.1.0)

SphinxClient::updateAttributes — Update document attributes

说明

public int SphinxClient::updateAttributes ( string $index , array $attributes , array $values [, bool $mva = false ] )

Instantly updates given attribute values in given documents.

参数

index

Name of the index (or indexes) to be updated.

attributes

Array of attribute names, listing attributes that are updated.

values

Associative array containing document IDs as keys and array of attribute values as values.

返回值

Returns number of actually updated documents (0 or more) on success, or FALSE on failure.

SphinxClient::status
Swish
SphinxClient


Swish Indexing

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Basic usage
  • Swish 函数
    • Swish::__construct — Construct a Swish object
    • Swish::getMetaList — Get the list of meta entries for the index
    • Swish::getPropertyList — Get the list of properties for the index
    • Swish::prepare — Prepare a search query
    • Swish::query — Execute a query and return results object
    • SwishResult::getMetaList — Get a list of meta entries
    • SwishResult::stem — Stems the given word
    • SwishResults::getParsedWords — Get an array of parsed words
    • SwishResults::getRemovedStopwords — Get an array of stopwords removed from the query
    • SwishResults::nextResult — Get the next search result
    • SwishResults::seekResult — Set current seek pointer to the given position
    • SwishSearch::execute — Execute the search and get the results
    • SwishSearch::resetLimit — Reset the search limits
    • SwishSearch::setLimit — Set the search limits
    • SwishSearch::setPhraseDelimiter — Set the phrase delimiter
    • SwishSearch::setSort — Set the sort order
    • SwishSearch::setStructure — Set the structure flag in the search object
SphinxClient::updateAttributes
简介
搜索引擎扩展


简介

The swish extension provides the bindings for Swish-e API. Swish-e stands for "Simple Web Indexing System for Humans - Enhanced" and is an open source system for indexing and search. Swish-e itself is licensed under GPL license, but uses a clause that allows applications to link against the library if every copy of the combined work is accompanied by the URL to Swish-e source code. Here it is: » http://swish-e.org.

Warning

此扩展是实验性 的。 此扩展的表象，包括其函数名称以及其他此扩展的相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本扩展风险自担 。

Swish
安装／配置
Swish


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Swish


需求

PECL/swish requires PHP 5.1.3 or newer.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/swish.

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

Swish::META_TYPE_UNDEF (integer)
Swish::META_TYPE_STRING (integer)
Swish::META_TYPE_ULONG (integer)
Swish::META_TYPE_DATE (integer)
Swish::IN_FILE_BIT (integer)
Swish::IN_TITLE_BIT (integer)
Swish::IN_HEAD_BIT (integer)
Swish::IN_BODY_BIT (integer)
Swish::IN_COMMENTS_BIT (integer)
Swish::IN_HEADER_BIT (integer)
Swish::IN_EMPHASIZED_BIT (integer)
Swish::IN_META_BIT (integer)
Swish::IN_FILE (integer)
Swish::IN_TITLE (integer)
Swish::IN_HEAD (integer)
Swish::IN_BODY (integer)
Swish::IN_COMMENTS (integer)
Swish::IN_HEADER (integer)
Swish::IN_EMPHASIZED (integer)
Swish::IN_META (integer)
Swish::IN_ALL (integer)
资源类型
范例
Swish


范例

Table of Contents

  • Basic usage
预定义常量
Basic usage
Swish


Basic usage

Example #1 Basic search query

<?php

try {

    $swish = new Swish("index.swish-e");
    $results = $swish->query("test OR text");

    echo "Found ", $results->hits, " results\n";
    while ($result = $results->nextResult()) {
        var_dump($result);
        break; //break after the first result
    }

} catch (SwishException $e) {
    echo "Error: ", $e->getMessage(), "\n";
}

?>

以上例程的输出类似于：

Found 9 results
object(SwishResult)#3 (8) {
  ["swishreccount"]=>
  int(1)
  ["swishrank"]=>
  int(1000)
  ["swishfilenum"]=>
  int(10)
  ["swishdbfile"]=>
  string(13) "index.swish-e"
  ["swishdocpath"]=>
  string(23) "README.SUBMITTING_PATCH"
  ["swishtitle"]=>
  NULL
  ["swishdocsize"]=>
  int(4557)
  ["swishlastmodified"]=>
  int(1072136752)
}
范例
Swish 函数
范例


Swish 函数

Table of Contents

  • Swish::__construct — Construct a Swish object
  • Swish::getMetaList — Get the list of meta entries for the index
  • Swish::getPropertyList — Get the list of properties for the index
  • Swish::prepare — Prepare a search query
  • Swish::query — Execute a query and return results object
  • SwishResult::getMetaList — Get a list of meta entries
  • SwishResult::stem — Stems the given word
  • SwishResults::getParsedWords — Get an array of parsed words
  • SwishResults::getRemovedStopwords — Get an array of stopwords removed from the query
  • SwishResults::nextResult — Get the next search result
  • SwishResults::seekResult — Set current seek pointer to the given position
  • SwishSearch::execute — Execute the search and get the results
  • SwishSearch::resetLimit — Reset the search limits
  • SwishSearch::setLimit — Set the search limits
  • SwishSearch::setPhraseDelimiter — Set the phrase delimiter
  • SwishSearch::setSort — Set the sort order
  • SwishSearch::setStructure — Set the structure flag in the search object
Basic usage
Swish::__construct
Swish


Construct a Swish object

Swish 函数
Swish::getMetaList
Swish 函数
PHP Manual

Swish::__construct

(PECL swish >= 0.1.0)

Swish::__construct — Construct a Swish object

说明

void Swish::__construct ( string $index_names )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

index_names

The list of index files separated by spaces.

返回值

没有返回值。

错误／异常

Throws SwishException on error.

范例

Example #1 A Swish::__construct() example

<?php

try {
    $swish = new Swish("index1 index2");
} catch (SwishException $e) {
    echo $e->getMessage(), "\n";
}

foreach ($swish->indexes as $index) {
    var_dump($index["name"]);
    var_dump($index["headers"]["Total Words"]);
}

?>

以上例程的输出类似于：

string(6) "index1"
int(1888)
string(6) "index2"
int(2429)

Swish 函数
Swish::getMetaList
Swish 函数


Get the list of meta entries for the index

Swish::__construct
Swish::getPropertyList
Swish 函数
PHP Manual

Swish::getMetaList

(PECL swish >= 0.1.0)

Swish::getMetaList — Get the list of meta entries for the index

说明

array Swish::getMetaList ( string $index_name )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

index_name

The name of the index file.

返回值

Returns an array of meta entries for the given index.

范例

Example #1 Basic Swish::getMetaList() example

<?php

try {

    $swish = new Swish("index.swish-e");
    var_dump($swish->getMetaList("index.swish-e"));

} catch (SwishException $e) {
    echo $e->getMessage(), "\n";
}

?>

以上例程的输出类似于：

array(1) {
  [0]=>
  array(3) {
    ["Name"]=>
    string(12) "swishdefault"
    ["Type"]=>
    int(0)
    ["ID"]=>
    int(1)
  }
}

Swish::__construct
Swish::getPropertyList
Swish 函数


Get the list of properties for the index

Swish::getMetaList
Swish::prepare
Swish 函数
PHP Manual

Swish::getPropertyList

(PECL swish >= 0.1.0)

Swish::getPropertyList — Get the list of properties for the index

说明

array Swish::getPropertyList ( string $index_name )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

index_name

The name of the index file.

返回值

Returns an array of properties for the given index.

范例

Example #1 Basic Swish::getPropertyList() example

<?php

try {

    $swish = new Swish("index.swish-e");
    $properties = $swish->getPropertyList("index.swish-e");
    foreach ($properties as $prop) {
        echo $prop["Name"],"\n";
    }

} catch (SwishException $e) {
    echo $e->getMessage(), "\n";
}

?>

以上例程的输出类似于：

swishreccount
swishrank
swishfilenum
swishdbfile
swishdocpath
swishtitle
swishdocsize
swishlastmodified

Swish::getMetaList
Swish::prepare
Swish 函数


Prepare a search query

Swish::getPropertyList
Swish::query
Swish 函数
PHP Manual

Swish::prepare

(PECL swish >= 0.1.0)

Swish::prepare — Prepare a search query

说明

object Swish::prepare ([ string $query ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Prepare and return a search object, which you can later use for unlimited number of queries.

参数

query

Optional query string. The query can be also set using SwishSearch::execute() method.

返回值

Returns SwishSearch object.

错误／异常

Throws SwishException on error.

范例

Example #1 Basic Swish::prepare() example

<?php

try {

    $swish = new Swish("index.swish-e");
    $search = $swish->prepare("search query");
    $results = $search->execute();
    echo "Found: ", $results->hits, " hits\n";

    $results = $search->execute("new search");

    echo "Found: ", $results->hits, " hits\n";
} catch (SwishException $e) {
    echo $e->getMessage(), "\n";
}

?>

以上例程的输出类似于：

Found: 2 hits
Found: 5 hits

Swish::getPropertyList
Swish::query
Swish 函数


Execute a query and return results object

Swish::prepare
SwishResult::getMetaList
Swish 函数
PHP Manual

Swish::query

(PECL swish >= 0.1.0)

Swish::query — Execute a query and return results object

说明

object Swish::query ( string $query )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

A quick method to execute a search with default parameters.

参数

query

Query string.

返回值

Returns SwishResults object.

错误／异常

Throws SwishException on error.

范例

Example #1 Basic Swish::query() example

<?php

try {

    $swish = new Swish("index.swish-e");
    $results = $swish->query("test query");

    echo "Found: ", $results->hits, " hits\n";

} catch (SwishException $e) {
    echo $e->getMessage(), "\n";
}

?>

以上例程的输出类似于：

Found: 1 hits

Swish::prepare
SwishResult::getMetaList
Swish 函数


Get a list of meta entries

Swish::query
SwishResult::stem
Swish 函数
PHP Manual

SwishResult::getMetaList

(PECL swish >= 0.1.0)

SwishResult::getMetaList — Get a list of meta entries

说明

array SwishResult::getMetaList ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

返回值

Returns the same array as swish::getmetalist(), but uses the index file from the result handle.

Swish::query
SwishResult::stem
Swish 函数


Stems the given word

SwishResult::getMetaList
SwishResults::getParsedWords
Swish 函数
PHP Manual

SwishResult::stem

(PECL swish >= 0.1.0)

SwishResult::stem — Stems the given word

说明

array SwishResult::stem ( string $word )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Stems the word based on the fuzzy mode used during indexing. Each result object is linked with its index, so the results are based on this index.

参数

word

The word to stem.

返回值

Returns array containing the stemmed word variants (usually just one).

错误／异常

Throws SwishException on error.

范例

Example #1 Basic SwishResult::stem() example

<?php

try {

    $swish = new Swish("ext/swish/tests/index.swish-e");
    $results = $swish->query("testing OR others");

    if ($result = $results->nextResult()) {
        var_dump($result->stem("testing")); //the results fully depend on the stemmer used in the index
        var_dump($result->stem("others"));
    }

} catch (SwishException $e) {
    echo "Error: ", $e->getMessage(), "\n";
}

?>

以上例程的输出类似于：

array(1) {
  [0]=>
  string(4) "test"
}
array(1) {
  [0]=>
  string(5) "other"
}

SwishResult::getMetaList
SwishResults::getParsedWords
Swish 函数


Get an array of parsed words

SwishResult::stem
SwishResults::getRemovedStopwords
Swish 函数
PHP Manual

SwishResults::getParsedWords

(PECL swish >= 0.1.0)

SwishResults::getParsedWords — Get an array of parsed words

说明

array SwishResults::getParsedWords ( string $index_name )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

indexi_name

The name of the index used to initialize Swish object.

返回值

An array of parsed words with stopwords removed. The list of parsed words may be useful for highlighting search terms in the results.

范例

Example #1 Basic SwishResults::getParsedWords() example

<?php

try {

    $swish = new Swish("index.swish-e");
    $results = $swish->query("'some characters' and numbers");

    var_dump($results->getParsedWords("index.swish-e"));
    var_dump($results->indexes[0]['parsed_words']); //same result in a different way

} catch (SwishException $e) {
    echo "Error: ", $e->getMessage(), "\n";
}

?>

以上例程的输出类似于：

array(4) {
  [0]=>
  string(4) "some"
  [1]=>
  string(10) "characters"
  [2]=>
  string(3) "and"
  [3]=>
  string(7) "numbers"
}
array(4) {
  [0]=>
  string(4) "some"
  [1]=>
  string(10) "characters"
  [2]=>
  string(3) "and"
  [3]=>
  string(7) "numbers"
}

SwishResult::stem
SwishResults::getRemovedStopwords
Swish 函数


Get an array of stopwords removed from the query

SwishResults::getParsedWords
SwishResults::nextResult
Swish 函数
PHP Manual

SwishResults::getRemovedStopwords

(PECL swish >= 0.1.0)

SwishResults::getRemovedStopwords — Get an array of stopwords removed from the query

说明

array SwishResults::getRemovedStopwords ( string $index_name )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

index_name

The name of the index used to initialize Swish object.

返回值

Returns array of stopwords removed from the query.

SwishResults::getParsedWords
SwishResults::nextResult
Swish 函数


Get the next search result

SwishResults::getRemovedStopwords
SwishResults::seekResult
Swish 函数
PHP Manual

SwishResults::nextResult

(PECL swish >= 0.1.0)

SwishResults::nextResult — Get the next search result

说明

object SwishResults::nextResult ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

返回值

Returns the next SwishResult object in the result set or FALSE if there are no more results available.

范例

Example #1 Basic SwishResults::nextResult() example

<?php

try {

    $swish = new Swish("index.swish-e");
    $search = $swish->prepare();

    $results = $search->execute("lost");
    while($result = $results->nextResult()) {
        /* do something with the result object */
    }

} catch (SwishException $e) {
    echo $e->getMessage(), "\n";
}

?>

SwishResults::getRemovedStopwords
SwishResults::seekResult
Swish 函数


Set current seek pointer to the given position

SwishResults::nextResult
SwishSearch::execute
Swish 函数
PHP Manual

SwishResults::seekResult

(PECL swish >= 0.1.0)

SwishResults::seekResult — Set current seek pointer to the given position

说明

int SwishResults::seekResult ( int $position )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

position

Zero-based position number. Cannot be less than zero.

返回值

Returns new position value on success.

错误／异常

Throws SwishException on error.

范例

Example #1 Basic SwishResults::seekResult() example

<?php

try {

    $swish = new Swish("index.swish-e");
    $search = $swish->prepare();

    $results = $search->execute("lost");

    var_dump($results->seekResult(0)); //this will succeed
    var_dump($results->seekResult(100)); //this will fail

} catch (SwishException $e) {
    echo "Error: ", $e->getMessage(), "\n";
}

?>

以上例程的输出类似于：

int(0)
Error: No more results

SwishResults::nextResult
SwishSearch::execute
Swish 函数


Execute the search and get the results

SwishResults::seekResult
SwishSearch::resetLimit
Swish 函数
PHP Manual

SwishSearch::execute

(PECL swish >= 0.1.0)

SwishSearch::execute — Execute the search and get the results

说明

object SwishSearch::execute ([ string $query ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Searches the index file(s) based on the parameters set in the search object.

参数

query

The query string is an optional parameter, it can be also set using Swish::prepare() method. The query string is preserved between executions, so you can set it once, but execute the search multiple times.

返回值

Returns SwishResults object.

错误／异常

Throws SwishException on error.

范例

Example #1 Basic SwishSearch::execute() example

<?php

try {

    $swish = new Swish("index.swish-e");
    $search = $swish->prepare();

    $results = $search->execute("query");
    echo "First query found: ", $results->hits, " hits\n";

    $results = $search->execute("new OR query");
    echo "Second query found: ", $results->hits, " hits\n";

} catch (SwishException $e) {
    echo $e->getMessage(), "\n";
}

?>

以上例程的输出类似于：

First query found: 2 hits
Second query found: 12 hits

SwishResults::seekResult
SwishSearch::resetLimit
Swish 函数


Reset the search limits

SwishSearch::execute
SwishSearch::setLimit
Swish 函数
PHP Manual

SwishSearch::resetLimit

(PECL swish >= 0.1.0)

SwishSearch::resetLimit — Reset the search limits

说明

void SwishSearch::resetLimit ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Reset the search limits previous set by SwishSearch::setLimit.

返回值

没有返回值。

范例

Example #1 Basic SwishSearch::resetLimit() example

<?php

try {

    $swish = new Swish("index.swish-e");
    $search = $swish->prepare();

    $results = $search->execute("time");
    echo "First query found: ", $results->hits, " hits\n";

    $search->setLimit("swishdocsize", "3000", "6000"); //limit by document size, from 3000 to 6000 bytes
    $results = $search->execute("time");
    echo "Second query found: ", $results->hits, " hits\n";

    $search->resetLimit();
    $results = $search->execute("time");
    echo "Third query found: ", $results->hits, " hits\n";

} catch (SwishException $e) {
    echo $e->getMessage(), "\n";
}

?>

以上例程的输出类似于：

First query found: 5 hits
Second query found: 2 hits
Third query found: 5 hits

SwishSearch::execute
SwishSearch::setLimit
Swish 函数


Set the search limits

SwishSearch::resetLimit
SwishSearch::setPhraseDelimiter
Swish 函数
PHP Manual

SwishSearch::setLimit

(PECL swish >= 0.1.0)

SwishSearch::setLimit — Set the search limits

说明

void SwishSearch::setLimit ( string $property , string $low , string $high )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

property

Search result property name.

low

The lowest value of the property.

high

The highest value of the property.

返回值

没有返回值。

错误／异常

Throws SwishException on error.

范例

Example #1 Basic SwishSearch::setLimit() example

<?php
try {

    $swish = new Swish("index.swish-e");
    $search = $swish->prepare();

    $results = $search->execute("time");
    echo "First query found: ", $results->hits, " hits\n";

    $i = 0;
    while($result = $results->nextResult()) {
        echo "Hit #", ++$i, " - ", $result->swishdocsize, " bytes\n";
    }

    $search->setLimit("swishdocsize", "3000", "6000"); //limit by document size, from 3000 to 6000 bytes
    $results = $search->execute("time");
    echo "Second query found: ", $results->hits, " hits\n";

    $i = 0;
    while($result = $results->nextResult()) {
        echo "Hit #", ++$i, " - ", $result->swishdocsize, " bytes\n";
    }

} catch (SwishException $e) {
    echo $e->getMessage(), "\n";
}

?>

以上例程的输出类似于：

First query found: 5 hits
Hit #1 - 4261 bytes
Hit #2 - 37937 bytes
Hit #3 - 7126 bytes
Hit #4 - 15427 bytes
Hit #5 - 4768 bytes
Second query found: 2 hits
Hit #1 - 4261 bytes
Hit #2 - 4768 bytes

SwishSearch::resetLimit
SwishSearch::setPhraseDelimiter
Swish 函数


Set the phrase delimiter

SwishSearch::setLimit
SwishSearch::setSort
Swish 函数
PHP Manual

SwishSearch::setPhraseDelimiter

(PECL swish >= 0.1.0)

SwishSearch::setPhraseDelimiter — Set the phrase delimiter

说明

void SwishSearch::setPhraseDelimiter ( string $delimiter )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

delimiter

Phrase delimiter character. The default delimiter is double-quotes.

返回值

没有返回值。

范例

Example #1 Basic SwishSearch::setPhraseDelimiter() example

<?php

try {

    $swish = new Swish("index.swish-e");
    $search = $swish->prepare();

    $results = $search->execute('"every time"'); //looking for "every time"
    echo "First query found: ", $results->hits, " hits\n";

    $search->setPhraseDelimiter("'");
    $results = $search->execute("'every time'"); //the same query, but using different delimiter
    echo "Second query found: ", $results->hits, " hits\n";

    $search->setPhraseDelimiter('"');
    $results = $search->execute("'every time'"); //looking for "every" and "time"
    echo "Third query found: ", $results->hits, " hits\n";

    //let's look at parsed words
    var_dump($results->getParsedWords("index.swish-e"));

} catch (SwishException $e) {
    echo $e->getMessage(), "\n";
}

?>

以上例程的输出类似于：

First query found: 1 hits
Second query found: 1 hits
Third query found: 2 hits
array(2) {
  [0]=>
  string(5) "every"
  [1]=>
  string(4) "time"
}

SwishSearch::setLimit
SwishSearch::setSort
Swish 函数


Set the sort order

SwishSearch::setPhraseDelimiter
SwishSearch::setStructure
Swish 函数
PHP Manual

SwishSearch::setSort

(PECL swish >= 0.1.0)

SwishSearch::setSort — Set the sort order

说明

void SwishSearch::setSort ( string $sort )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

sort

Sort order of the results is a string containing name of a result property combined with sort direction ("asc" or "desc"). Examples: "swishrank desc", "swishdocpath asc", "swishtitle asc", "swishdocsize desc", "swishlastmodified desc" etc.

返回值

没有返回值。

范例

Example #1 Basic SwishSearch::setSort() example

<?php

try {

    $swish = new Swish("index.swish-e");
    $search = $swish->prepare();

    $results = $search->execute("time");
    echo "First query found: ", $results->hits, " hits\n";

    $i = 0;
    while($result = $results->nextResult()) {
        echo "Hit #", ++$i, " - ", $result->swishdocsize, " bytes\n";
    }

    $search->setSort("swishdocsize desc"); //sort by document size
    $results = $search->execute("time");
    echo "Second query found: ", $results->hits, " hits\n";

    $i = 0;
    while($result = $results->nextResult()) {
        echo "Hit #", ++$i, " - ", $result->swishdocsize, " bytes\n";
    }

} catch (SwishException $e) {
    echo $e->getMessage(), "\n";
}

?>

以上例程的输出类似于：

First query found: 5 hits
Hit #1 - 4261 bytes
Hit #2 - 37937 bytes
Hit #3 - 7126 bytes
Hit #4 - 15427 bytes
Hit #5 - 4768 bytes
Second query found: 5 hits
Hit #1 - 37937 bytes
Hit #2 - 15427 bytes
Hit #3 - 7126 bytes
Hit #4 - 4768 bytes
Hit #5 - 4261 bytes

SwishSearch::setPhraseDelimiter
SwishSearch::setStructure
Swish 函数


Set the structure flag in the search object

SwishSearch::setSort
针对服务器的扩展
Swish 函数
PHP Manual

SwishSearch::setStructure

(PECL swish >= 0.1.0)

SwishSearch::setStructure — Set the structure flag in the search object

说明

void SwishSearch::setStructure ( int $structure )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

structure

The structure flag a bitmask is used to limit search to certain parts of HTML documents (like title, meta, body etc.). Its possible values are listed below. To combine several values use bitwise OR operator, see example below.

  • Swish::IN_FILE

  • Swish::IN_TITLE

  • Swish::IN_HEAD

  • Swish::IN_BODY

  • Swish::IN_COMMENTS

  • Swish::IN_HEADER

  • Swish::IN_EMPHASIZED

  • Swish::IN_META

返回值

没有返回值。

范例

Example #1 Basic SwishSearch::setStructure() example

<?php

try {

    $swish = new Swish("index.swish-e");
    $search = $swish->prepare();

    $results = $search->execute("time");
    echo "First query found: ", $results->hits, " hits\n";

    $search->setStructure(Swish::IN_TITLE|Swish::IN_HEAD); //search in title and head
    $results = $search->execute("time");
    echo "Second query found: ", $results->hits, " hits\n";

    $search->setStructure(Swish::IN_ALL); //search in whole document, the default value
    $results = $search->execute("time");
    echo "Third query found: ", $results->hits, " hits\n";

} catch (SwishException $e) {
    echo $e->getMessage(), "\n";
}

?>

以上例程的输出类似于：

First query found: 5 hits
Second query found: 0 hits
Third query found: 5 hits

SwishSearch::setSort
针对服务器的扩展
Swish 函数


针对服务器的扩展

  • Apache
    • 简介
    • 安装／配置
    • 预定义常量
    • Apache 函数
  • FastCGI 进程管理器
    • 简介
    • 安装／配置
    • FPM 函数
  • IIS — IIS Administration
    • 简介
    • 安装／配置
    • 预定义常量
    • IIS 函数
  • NSAPI
    • 简介
    • 安装／配置
    • 预定义常量
    • NSAPI 函数
SwishSearch::setStructure
Apache
函数参考


Apache

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Apache 函数
    • apache_child_terminate — 在本次请求结束后终止 apache 子进程
    • apache_get_modules — 获得已加载的Apache模块列表
    • apache_get_version — 获得Apache版本信息
    • apache_getenv — 获取 Apache subprocess_env 变量
    • apache_lookup_uri — 对指定的 URI 执行部分请求并返回所有有关信息
    • apache_note — 取得或设置 apache 请求记录
    • apache_request_headers — 获取全部 HTTP 请求头信息
    • apache_reset_timeout — 重置 Apache 写入计时器
    • apache_response_headers — 获得全部 HTTP 响应头信息
    • apache_setenv — 设置 Apache 子进程环境变量
    • getallheaders — 获取全部 HTTP 请求头信息
    • virtual — 执行 Apache 子请求
针对服务器的扩展
简介
针对服务器的扩展


简介

这些函数仅在 PHP 以 Apache 模块运行时有效。

Note: 截至 PHP 4.3.2，和Apache 1的情况下相比，PATH_TRANSLATED 在 Apache 2 的 SAPI 模式下不再隐式设定，相同的值设定在 SCRIPT_FILENAME server 变量。 该变化符合 CGI 协议， PATH_TRANSLATED 应该仅仅存在于 PATH_INFO 定义后的情况。 Apache 2 用户可以在 httpd.conf 里使用 AcceptPathInfo = On 的设定来定义 PATH_INFO。

Apache
安装／配置
Apache


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Apache


安装

PHP 安装到 Apache 参见 installation chapter。

需求
运行时配置
安装／配置


运行时配置

Apache 的 PHP 模块的行为受 php.ini 的设置影响。在 php.ini 中的设置可以被服务器配置文件或本地的 .htaccess 文件中的 php_flag 设置所覆盖。

Example #1 用 .htaccess 禁用一个目录的 PHP 解析

php_flag engine off

Apache 配置选项
名字 | 默认 | 可修改范围 | 更新日志
engine | "1" | PHP_INI_ALL | 自 PHP 4.0.5 起可用
child_terminate | "0" | PHP_INI_ALL | 自 PHP 4.0.5 起可用
last_modified | "0" | PHP_INI_ALL | 自 PHP 4.0.5 起可用
xbithack | "0" | PHP_INI_ALL | 自 PHP 4.0.5 起可用
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

engine boolean

打开或关闭 PHP 解析。本指令仅在使用 PHP 的 Apache 模块版本时才有用。可以基于目录或者虚拟主机来打开或者关闭 PHP。将 engine off 放到 httpd.conf 文件中适当的位置就可以激活或禁用 PHP。

child_terminate boolean

指定 PHP 脚本在请求结束后是否可以要求终止子进程。参见 apache_child_terminate()。

last_modified boolean

在本次请求中发送一个头信息 Last-Modified:，显示 PHP 脚本最后被修改的日期。

xbithack boolean

不管文件结尾是什么，将文件作为 PHP 以可执行位组来解析。

安装
资源类型
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
Apache 函数
Apache


Apache 函数

Table of Contents

  • apache_child_terminate — 在本次请求结束后终止 apache 子进程
  • apache_get_modules — 获得已加载的Apache模块列表
  • apache_get_version — 获得Apache版本信息
  • apache_getenv — 获取 Apache subprocess_env 变量
  • apache_lookup_uri — 对指定的 URI 执行部分请求并返回所有有关信息
  • apache_note — 取得或设置 apache 请求记录
  • apache_request_headers — 获取全部 HTTP 请求头信息
  • apache_reset_timeout — 重置 Apache 写入计时器
  • apache_response_headers — 获得全部 HTTP 响应头信息
  • apache_setenv — 设置 Apache 子进程环境变量
  • getallheaders — 获取全部 HTTP 请求头信息
  • virtual — 执行 Apache 子请求
预定义常量
apache_child_terminate
Apache


在本次请求结束后终止 apache 子进程

Apache 函数
apache_get_modules
Apache 函数
PHP Manual

apache_child_terminate

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

apache_child_terminate — 在本次请求结束后终止 apache 子进程

说明

bool apache_child_terminate ( void )

apache_child_terminate() 将把运行当前 PHP 请求的 Apache 子进程注册为终止状态，一旦结束 PHP 代码的运行此进程将终止。可以用在占用大量内存的脚本后面来终止该进程，因为通常内存只在内部释放而不会还给操作系统。

返回值

如果 PHP 以 Apache 1 模块方式运行，且 Apache 的版本是非多线程的，以及激活了 PHP 指令. child_terminate，则返回 TRUE。如果不满足上述条件则返回 FALSE 并生成一条 E_WARNING 级的错误信息。

更新日志

版本 | 说明
5.4.0 | 该函数目前也可以用于FastCGI模式了。以前，它仅在PHP作为Apapche的模块安装时支持。

注释

Note: 此函数未在 Windows 平台下实现。

参见

  • exit() - 输出一个消息并且退出当前脚本

Apache 函数
apache_get_modules
Apache 函数


获得已加载的Apache模块列表

apache_child_terminate
apache_get_version
Apache 函数
PHP Manual

apache_get_modules

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

apache_get_modules — 获得已加载的Apache模块列表

说明

array apache_get_modules ( void )

获得已加载的Apache模块列表。

返回值

包含已加载的Apache模块的数组.

更新日志

版本 | 说明
5.0.0 | 可用于Apache 1或PHP Apache 2 filter API。 在此之前, 只可用于 Apache 2 handler API。

范例

Example #1 apache_get_modules() 示例

<?php
print_r(apache_get_modules());
?>

以上例程的输出类似于：

Array
(
    [0] => core
    [1] => http_core
    [2] => mod_so
    [3] => sapi_apache2
    [4] => mod_mime
    [5] => mod_rewrite
)

apache_child_terminate
apache_get_version
Apache 函数


获得Apache版本信息

apache_get_modules
apache_getenv
Apache 函数
PHP Manual

apache_get_version

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

apache_get_version — 获得Apache版本信息

说明

string apache_get_version ( void )

获得Apache版本信息。

返回值

成功时返回 Apache 版本信息 或者在失败时返回 FALSE.

更新日志

版本 | 说明
4.3.4 | 可用于 Apache 1.
5.0.0 | 可用于 Apache 2 filter API.

范例

Example #1 apache_get_version() example

<?php
$version = apache_get_version();
echo "$version\n";
?>

以上例程的输出类似于：

Apache/1.3.29 (Unix) PHP/4.3.4

参见

  • phpinfo() - 输出关于 PHP 配置的信息

apache_get_modules
apache_getenv
Apache 函数


获取 Apache subprocess_env 变量

apache_get_version
apache_lookup_uri
Apache 函数
PHP Manual

apache_getenv

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

apache_getenv — 获取 Apache subprocess_env 变量

说明

string apache_getenv ( string $variable [, bool $walk_to_top = false ] )

获取 variable 指定的环境变量。

此函数需要 Apache 2 否则为 undefined。

参数

variable

Apache 环境变量

walk_to_top

是否获取对Apache各层可用的顶层变量

返回值

成功时返回 Apache 环境变量值，失败时返回 FALSE

范例

Example #1 apache_getenv() example

该示例显示如何取得 Apache 环境变量 SERVER_ADDR的值。

<?php
$ret = apache_getenv("SERVER_ADDR");
echo $ret;
?>

以上例程的输出类似于：

42.24.42.240

参见

  • apache_setenv() - 设置 Apache 子进程环境变量
  • getenv() - 获取一个环境变量的值
  • Superglobals

apache_get_version
apache_lookup_uri
Apache 函数


对指定的 URI 执行部分请求并返回所有有关信息

apache_getenv
apache_note
Apache 函数
PHP Manual

apache_lookup_uri

(PHP 4, PHP 5, PHP 7)

apache_lookup_uri — 对指定的 URI 执行部分请求并返回所有有关信息

说明

object apache_lookup_uri ( string $filename )

本函数对一个 URL 执行部分请求。取得所有有关给定资源的重要信息后就停手。

、 仅在将 PHP 安装为 Apache 模块时，支持此函数。

参数

filename

被请求的文件名（URI）。

返回值

一个有关 URI 信息的 object。此 object 的属性有：

  • status
  • the_request
  • status_line
  • method
  • content_type
  • handler
  • uri
  • filename
  • path_info
  • args
  • boundary
  • no_cache
  • no_local_copy
  • allowed
  • send_bodyct
  • bytes_sent
  • byterange
  • clength
  • unparsed_uri
  • mtime
  • request_time

范例

Example #1 apache_lookup_uri() 例子

<?php
$info = apache_lookup_uri('index.php?var=value');
print_r($info);

if (file_exists($info->filename)) {
    echo 'file exists!';
}
?>

以上例程的输出类似于：

stdClass Object
(
    [status] => 200
    [the_request] => GET /dir/file.php HTTP/1.1
    [method] => GET
    [mtime] => 0
    [clength] => 0
    [chunked] => 0
    [content_type] => application/x-httpd-php
    [no_cache] => 0
    [no_local_copy] => 1
    [unparsed_uri] => /dir/index.php?var=value
    [uri] => /dir/index.php
    [filename] => /home/htdocs/dir/index.php
    [args] => var=value
    [allowed] => 0
    [sent_bodyct] => 0
    [bytes_sent] => 0
    [request_time] => 1074282764
)
file exists!

apache_getenv
apache_note
Apache 函数


取得或设置 apache 请求记录

apache_lookup_uri
apache_request_headers
Apache 函数
PHP Manual

apache_note

(PHP 4, PHP 5, PHP 7)

apache_note — 取得或设置 apache 请求记录

说明

string apache_note ( string $note_name [, string $note_value = "" ] )

这个函数是 Apache table_get 和 table_set 的包装。 它编辑了请求中存在的 notes 表。 这个表的目的是允许 Apache 模块进行通讯。

apache_note() 的主要用途是在同一个请求中，从一个模块传递信息到另一个模块。

参数

note_name

note 名。

note_value

note 值。

返回值

如果只有一个参数调用，则返回记录 note_name 的当前值。如果用两个参数调用，则将记录 note_name 的值设为 note_value 并返回记录 note_name 的前一个值。如果未能获取记录，则返回 FALSE。

范例

Example #1 Passing information between PHP and Perl

<?php

apache_note('name', 'Fredrik Ekengren');

// Call perl script
virtual("/perl/some_script.pl");

$result = apache_note("resultdata");
?>
# Get Apache request object
my $r = Apache->request()->main();

# Get passed data
my $name = $r->notes('name');

# some processing

# Pass result back to PHP
$r->notes('resultdata', $result);

Example #2 Logging values in access.log

<?php

apache_note('sessionID', session_id());

?>
# "%{sessionID}n" can be used in the LogFormat directive

参见

  • virtual() - 执行 Apache 子请求

apache_lookup_uri
apache_request_headers
Apache 函数


获取全部 HTTP 请求头信息

apache_note
apache_reset_timeout
Apache 函数
PHP Manual

apache_request_headers

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

apache_request_headers — 获取全部 HTTP 请求头信息

说明

array apache_request_headers ( void )

获取当前请求的所有请求头信息

返回值

包含当前请求所有头信息的数组，失败返回 FALSE 。

更新日志

版本 | 说明
5.5.7 | 此函数可用于 CLI server。
5.4.0 | 此函数可用于 FastCGI。 此前仅在PHP以 Apache 模块方式运行时支持。
4.3.3 | 从 PHP 4.3.3 起，也可在 Netscape/iPlanet/SunONE Web 服务器的 NSAPI 服务器模块使用此函数。

范例

Example #1 apache_request_headers() 示例

<?php
$headers = apache_request_headers();

foreach ($headers as $header => $value) {
    echo "$header: $value <br />\n";
}
?>

以上例程的输出类似于：

Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0
Host: www.example.com
Connection: Keep-Alive

注释

Note:

你也可以试图从环境变量中读取普通CGI变量，PHP以Apache模块方式运行时有可能无法获得。使用phpinfo()获得可读取的变量列表。 环境变量.

参见

  • apache_response_headers() - 获得全部 HTTP 响应头信息

apache_note
apache_reset_timeout
Apache 函数


重置 Apache 写入计时器

apache_request_headers
apache_response_headers
Apache 函数
PHP Manual

apache_reset_timeout

(PHP 5 >= 5.1.0, PHP 7)

apache_reset_timeout — 重置 Apache 写入计时器

说明

bool apache_reset_timeout ( void )

apache_reset_timeout() 重置 Apache 写入计时器， 缺省为 300 秒. 通过 set_time_limit(0); ignore_user_abort(true) 和定期地调用 apache_reset_timeout()，Apache理论上可永远运行

此函数需要 Apache 1.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note: 当 PHP 运行在 安全模式 时，不能使用此函数。

参见

  • set_time_limit() - 设置脚本最大执行时间
  • ignore_user_abort() - 设置客户端断开连接时是否中断脚本的执行

apache_request_headers
apache_response_headers
Apache 函数


获得全部 HTTP 响应头信息

apache_reset_timeout
apache_setenv
Apache 函数
PHP Manual

apache_response_headers

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

apache_response_headers — 获得全部 HTTP 响应头信息

说明

array apache_response_headers ( void )

获得全部 HTTP 响应头信息。

返回值

成功时返回包含全部 Apache 响应头信息的数组， 或者在失败时返回 FALSE.

更新日志

版本 | 说明
5.5.7 | 此函数可用于 CLI server.
5.4.0 | 此函数可用于 FastCGI。 此前仅在PHP以 Apache 模块方式运行时支持。
4.3.3 | 从 PHP 4.3.3 起，也可在 Netscape/iPlanet/SunONE Web 服务器的 NSAPI 服务器模块使用此函数。

范例

Example #1 apache_response_headers() 示例

<?php
print_r(apache_response_headers());
?>

以上例程的输出类似于：

Array
(
    [Accept-Ranges] => bytes
    [X-Powered-By] => PHP/4.3.8
)

参见

  • apache_request_headers() - 获取全部 HTTP 请求头信息
  • headers_sent() - Checks if or where headers have been sent
  • headers_list() - Returns a list of response headers sent (or ready to send)

apache_reset_timeout
apache_setenv
Apache 函数


设置 Apache 子进程环境变量

apache_response_headers
getallheaders
Apache 函数
PHP Manual

apache_setenv

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

apache_setenv — 设置 Apache 子进程环境变量

说明

bool apache_setenv ( string $variable , string $value [, bool $walk_to_top = false ] )

apache_setenv() 设置由variable指定的 Apache 环境变量值。

Note:

当设置了某 Apache 环境变量, 相应的 $_SERVER 变量不会改变。

参数

variable

将被设置的环境变量。

value

新 variable 值。

walk_to_top

是否将所设置的顶层变量应用到所有 Apache 层。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 使用 apache_setenv() 设置一个 Apache 环境变量

<?php
apache_setenv("EXAMPLE_VAR", "Example Value");
?>

注释

Note:

apache_setenv() 可与 apache_getenv() 配合使用，以在不同页面间传递变量，或将 PHP 脚本中已设置变量传入 Server Side Includes (.shtml)页面。

参见

  • apache_getenv() - 获取 Apache subprocess_env 变量

apache_response_headers
getallheaders
Apache 函数


获取全部 HTTP 请求头信息

apache_setenv
virtual
Apache 函数
PHP Manual

getallheaders

(PHP 4, PHP 5, PHP 7)

getallheaders — 获取全部 HTTP 请求头信息

说明

array getallheaders ( void )

获取当前请求的所有请求头信息。

此函数是 apache_request_headers()的别名。 请阅读 apache_request_headers() 文档获得更多信息。

返回值

包含当前请求所有头信息的数组，失败返回 FALSE 。

更新日志

版本 | 说明
5.5.7 | 此函数可用于 CLI server。
5.4.0 | 此函数可用于 FastCGI。 此前仅在PHP以 Apache 模块方式运行时支持。
4.3.3 | 从 PHP 4.3.3 起，也可在 Netscape/iPlanet/SunONE Web 服务器的 NSAPI 服务器模块使用此函数。
4.3.0 | 被改名而成为 apache_request_headers() 的别名。因为此函数仅适用于 Apache 。

范例

Example #1 getallheaders() 示例

<?php

foreach (getallheaders() as $name => $value) {
    echo "$name: $value\n";
}

?>

参见

  • apache_response_headers() - 获得全部 HTTP 响应头信息

apache_setenv
virtual
Apache 函数


执行 Apache 子请求

getallheaders
FastCGI 进程管理器
Apache 函数
PHP Manual

virtual

(PHP 4, PHP 5, PHP 7)

virtual — 执行 Apache 子请求

说明

bool virtual ( string $filename )

virtual() 是一个 Apache 特有函数， 类似于 mod_include 中的 <!--#include virtual...-->。 它执行一个 Apache 子请求。可用于包含一个 CGI 脚本或 .shtml 文件，或任何其它可通过 Apache 解析的请求。注意对一个 CGI 脚本，该脚本 生成合法的 CGI 头，至少必须 生成Content-Type 头。

为运行子请求，所有缓冲将中止并刷新至浏览器，包括头信息。

、 仅在将 PHP 安装为 Apache 模块时，支持此函数。

参数

filename

virtual命令将执行的文件

返回值

成功执行 virtual 命令，或失败时返回 FALSE 。

更新日志

版本 | 说明
4.3.3 | 从 PHP 4.3.3 起，也可在 Netscape/iPlanet/SunONE Web 服务器的 NSAPI 服务器模块使用此函数。
4.0.6 | 此函数可用于 PHP 文件。但是通常使用 include 或 require 更好。

范例

示例请看 apache_note() 。

注释

Warning

查询字符串可被传递至被包含文件，但是 $_GET 是拷贝于父文件，仅有 $_SERVER['QUERY_STRING'] 将填充传递入的查询字符串。 且此查询字符串只在使用 Apache 2 时被填充。 此请求文件将不会显示在 Apache 访问日志中。

Note:

在被请求文件中设置的环境变量在原请求文件中不可见。

参见

  • apache_note() - 取得或设置 apache 请求记录

getallheaders
FastCGI 进程管理器
Apache 函数


FastCGI 进程管理器

  • 简介
  • 安装／配置
  • FPM 函数
    • fastcgi_finish_request — 冲刷(flush)所有响应的数据给客户端
virtual
简介
针对服务器的扩展


简介

FPM (FastCGI 进程管理器) 是一个可选的 PHP FastCGI 实现并且附加了一些（主要是）对高负载网站很有用的特性。

这个 SAPI 在 PHP 5.3.3 以后已经被绑定。

FastCGI 进程管理器
安装／配置
FastCGI 进程管理器


安装／配置

安装与配置 FPM 的信息可以在 PHP 手册的 installation and configuration section中被找到。

简介
FPM 函数
FastCGI 进程管理器


FPM 函数

Table of Contents

  • fastcgi_finish_request — 冲刷(flush)所有响应的数据给客户端
安装／配置
fastcgi_finish_request
FastCGI 进程管理器


冲刷(flush)所有响应的数据给客户端

FPM 函数
IIS
FPM 函数
PHP Manual

fastcgi_finish_request

(PHP 5 >= 5.3.3, PHP 7)

fastcgi_finish_request — 冲刷(flush)所有响应的数据给客户端

说明

boolean fastcgi_finish_request ( void )

此函数冲刷(flush)所有响应的数据给客户端并结束请求。 这使得客户端结束连接后，需要大量时间运行的任务能够继续运行。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

FPM 函数
IIS
FPM 函数


IIS Administration

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • IIS 函数
    • iis_add_server — Creates a new virtual web server
    • iis_get_dir_security — Gets Directory Security
    • iis_get_script_map — Gets script mapping on a virtual directory for a specific extension
    • iis_get_server_by_comment — Return the instance number associated with the Comment
    • iis_get_server_by_path — Return the instance number associated with the Path
    • iis_get_server_rights — Gets server rights
    • iis_get_service_state — Returns the state for the service defined by ServiceId
    • iis_remove_server — Removes the virtual web server indicated by ServerInstance
    • iis_set_app_settings — Creates application scope for a virtual directory
    • iis_set_dir_security — Sets Directory Security
    • iis_set_script_map — Sets script mapping on a virtual directory
    • iis_set_server_rights — Sets server rights
    • iis_start_server — Starts the virtual web server
    • iis_start_service — Starts the service defined by ServiceId
    • iis_stop_server — Stops the virtual web server
    • iis_stop_service — Stops the service defined by ServiceId
fastcgi_finish_request
简介
针对服务器的扩展


简介

This extension is available for Win32 only. It provides functions to administrate Microsoft Internet Information Server (IIS). The extension includes function to create web sites and virtual directories as well as configuring security and script mapping.

IIS
安装／配置
IIS


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
IIS


安装

此扩展被认为已无人维护及已消亡。然而，此扩展的源代码还可在 PECL SVN 找到： » http://svn.php.net/viewvc/pecl/iisfunc.

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

IIS_READ (integer)
IIS_WRITE (integer)
IIS_EXECUTE (integer)
IIS_SCRIPT (integer)
IIS_ANONYMOUS (integer)
IIS_BASIC (integer)
IIS_NTLM (integer)
IIS_STARTING (integer)
IIS_STOPPED (integer)
IIS_PAUSED (integer)
IIS_RUNNING (integer)
资源类型
IIS 函数
IIS


IIS 函数

Table of Contents

  • iis_add_server — Creates a new virtual web server
  • iis_get_dir_security — Gets Directory Security
  • iis_get_script_map — Gets script mapping on a virtual directory for a specific extension
  • iis_get_server_by_comment — Return the instance number associated with the Comment
  • iis_get_server_by_path — Return the instance number associated with the Path
  • iis_get_server_rights — Gets server rights
  • iis_get_service_state — Returns the state for the service defined by ServiceId
  • iis_remove_server — Removes the virtual web server indicated by ServerInstance
  • iis_set_app_settings — Creates application scope for a virtual directory
  • iis_set_dir_security — Sets Directory Security
  • iis_set_script_map — Sets script mapping on a virtual directory
  • iis_set_server_rights — Sets server rights
  • iis_start_server — Starts the virtual web server
  • iis_start_service — Starts the service defined by ServiceId
  • iis_stop_server — Stops the virtual web server
  • iis_stop_service — Stops the service defined by ServiceId
预定义常量
iis_add_server
IIS


Creates a new virtual web server

IIS 函数
iis_get_dir_security
IIS 函数
PHP Manual

iis_add_server

(PECL iisfunc SVN)

iis_add_server — Creates a new virtual web server

说明

int iis_add_server ( string $path , string $comment , string $server_ip , int $port , string $host_name , int $rights , int $start_server )
Warning

本函数还未编写文档，仅有参数列表。

IIS 函数
iis_get_dir_security
IIS 函数


Gets Directory Security

iis_add_server
iis_get_script_map
IIS 函数
PHP Manual

iis_get_dir_security

(PECL iisfunc SVN)

iis_get_dir_security — Gets Directory Security

说明

int iis_get_dir_security ( int $server_instance , string $virtual_path )
Warning

本函数还未编写文档，仅有参数列表。

iis_add_server
iis_get_script_map
IIS 函数


Gets script mapping on a virtual directory for a specific extension

iis_get_dir_security
iis_get_server_by_comment
IIS 函数
PHP Manual

iis_get_script_map

(PECL iisfunc SVN)

iis_get_script_map — Gets script mapping on a virtual directory for a specific extension

说明

string iis_get_script_map ( int $server_instance , string $virtual_path , string $script_extension )
Warning

本函数还未编写文档，仅有参数列表。

iis_get_dir_security
iis_get_server_by_comment
IIS 函数


Return the instance number associated with the Comment

iis_get_script_map
iis_get_server_by_path
IIS 函数
PHP Manual

iis_get_server_by_comment

(PECL iisfunc SVN)

iis_get_server_by_comment — Return the instance number associated with the Comment

说明

int iis_get_server_by_comment ( string $comment )
Warning

本函数还未编写文档，仅有参数列表。

iis_get_script_map
iis_get_server_by_path
IIS 函数


Return the instance number associated with the Path

iis_get_server_by_comment
iis_get_server_rights
IIS 函数
PHP Manual

iis_get_server_by_path

(PECL iisfunc SVN)

iis_get_server_by_path — Return the instance number associated with the Path

说明

int iis_get_server_by_path ( string $path )

Each virtual server in IIS is associated with an instance number. iis_get_server_by_path() finds the instance number from the actual path to the root directory.

参数

path

The path to the root directory

返回值

Returns the server instance number.

iis_get_server_by_comment
iis_get_server_rights
IIS 函数


Gets server rights

iis_get_server_by_path
iis_get_service_state
IIS 函数
PHP Manual

iis_get_server_rights

(PECL iisfunc SVN)

iis_get_server_rights — Gets server rights

说明

int iis_get_server_rights ( int $server_instance , string $virtual_path )
Warning

本函数还未编写文档，仅有参数列表。

iis_get_server_by_path
iis_get_service_state
IIS 函数


Returns the state for the service defined by ServiceId

iis_get_server_rights
iis_remove_server
IIS 函数
PHP Manual

iis_get_service_state

(PECL iisfunc SVN)

iis_get_service_state — Returns the state for the service defined by ServiceId

说明

int iis_get_service_state ( string $service_id )
Warning

本函数还未编写文档，仅有参数列表。

iis_get_server_rights
iis_remove_server
IIS 函数


Removes the virtual web server indicated by ServerInstance

iis_get_service_state
iis_set_app_settings
IIS 函数
PHP Manual

iis_remove_server

(PECL iisfunc SVN)

iis_remove_server — Removes the virtual web server indicated by ServerInstance

说明

int iis_remove_server ( int $server_instance )
Warning

本函数还未编写文档，仅有参数列表。

iis_get_service_state
iis_set_app_settings
IIS 函数


Creates application scope for a virtual directory

iis_remove_server
iis_set_dir_security
IIS 函数
PHP Manual

iis_set_app_settings

(PECL iisfunc SVN)

iis_set_app_settings — Creates application scope for a virtual directory

说明

int iis_set_app_settings ( int $server_instance , string $virtual_path , string $application_scope )
Warning

本函数还未编写文档，仅有参数列表。

iis_remove_server
iis_set_dir_security
IIS 函数


Sets Directory Security

iis_set_app_settings
iis_set_script_map
IIS 函数
PHP Manual

iis_set_dir_security

(PECL iisfunc SVN)

iis_set_dir_security — Sets Directory Security

说明

int iis_set_dir_security ( int $server_instance , string $virtual_path , int $directory_flags )
Warning

本函数还未编写文档，仅有参数列表。

iis_set_app_settings
iis_set_script_map
IIS 函数


Sets script mapping on a virtual directory

iis_set_dir_security
iis_set_server_rights
IIS 函数
PHP Manual

iis_set_script_map

(PECL iisfunc SVN)

iis_set_script_map — Sets script mapping on a virtual directory

说明

int iis_set_script_map ( int $server_instance , string $virtual_path , string $script_extension , string $engine_path , int $allow_scripting )
Warning

本函数还未编写文档，仅有参数列表。

iis_set_dir_security
iis_set_server_rights
IIS 函数


Sets server rights

iis_set_script_map
iis_start_server
IIS 函数
PHP Manual

iis_set_server_rights

(PECL iisfunc SVN)

iis_set_server_rights — Sets server rights

说明

int iis_set_server_rights ( int $server_instance , string $virtual_path , int $directory_flags )
Warning

本函数还未编写文档，仅有参数列表。

iis_set_script_map
iis_start_server
IIS 函数


Starts the virtual web server

iis_set_server_rights
iis_start_service
IIS 函数
PHP Manual

iis_start_server

(PECL iisfunc SVN)

iis_start_server — Starts the virtual web server

说明

int iis_start_server ( int $server_instance )
Warning

本函数还未编写文档，仅有参数列表。

iis_set_server_rights
iis_start_service
IIS 函数


Starts the service defined by ServiceId

iis_start_server
iis_stop_server
IIS 函数
PHP Manual

iis_start_service

(PECL iisfunc SVN)

iis_start_service — Starts the service defined by ServiceId

说明

int iis_start_service ( string $service_id )
Warning

本函数还未编写文档，仅有参数列表。

iis_start_server
iis_stop_server
IIS 函数


Stops the virtual web server

iis_start_service
iis_stop_service
IIS 函数
PHP Manual

iis_stop_server

(PECL iisfunc SVN)

iis_stop_server — Stops the virtual web server

说明

int iis_stop_server ( int $server_instance )
Warning

本函数还未编写文档，仅有参数列表。

iis_start_service
iis_stop_service
IIS 函数


Stops the service defined by ServiceId

iis_stop_server
NSAPI
IIS 函数
PHP Manual

iis_stop_service

(PECL iisfunc SVN)

iis_stop_service — Stops the service defined by ServiceId

说明

int iis_stop_service ( string $service_id )
Warning

本函数还未编写文档，仅有参数列表。

iis_stop_server
NSAPI
IIS 函数


NSAPI

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • NSAPI 函数
    • nsapi_request_headers — Fetch all HTTP request headers
    • nsapi_response_headers — Fetch all HTTP response headers
    • nsapi_virtual — Perform an NSAPI sub-request
iis_stop_service
简介
针对服务器的扩展


简介

These functions are only available when running PHP as a NSAPI module in Netscape/iPlanet/Sun webservers.

NSAPI
安装／配置
NSAPI


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
NSAPI


安装

For PHP installation on Netscape/iPlanet/Sun webservers see the NSAPI section (UNIX, Windows) in the installation chapter.

需求
运行时配置
安装／配置


运行时配置

The behaviour of the NSAPI PHP module is affected by settings in php.ini. Configuration settings from php.ini may be overridden by additional parameters to the php4_execute call in obj.conf

NSAPI configuration options
名字 | 默认 | 可修改范围 | 更新日志
nsapi.read_timeout | "60" | PHP_INI_ALL | Available since PHP 4.3.3.
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

nsapi.read_timeout integer

Sets the time in seconds the plugin is waiting for POST data from the client.

安装
资源类型
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
NSAPI 函数
NSAPI


NSAPI 函数

参见

NSAPI implements a subset of the functions from the Apache module for maximum compatibility.

Apache functions implemented by NSAPI
Apache function (only as alias) | NSAPI function | Description
apache_request_headers() | nsapi_request_headers() | Fetch all HTTP request headers
apache_response_headers() | nsapi_response_headers() | Fetch all HTTP response headers
getallheaders() | nsapi_request_headers() | Fetch all HTTP request headers
virtual() | nsapi_virtual() | Make NSAPI sub-request

Table of Contents

  • nsapi_request_headers — Fetch all HTTP request headers
  • nsapi_response_headers — Fetch all HTTP response headers
  • nsapi_virtual — Perform an NSAPI sub-request
预定义常量
nsapi_request_headers
NSAPI


Fetch all HTTP request headers

NSAPI 函数
nsapi_response_headers
NSAPI 函数
PHP Manual

nsapi_request_headers

(PHP 4 >= 4.3.3, PHP 5, PHP 7)

nsapi_request_headers — Fetch all HTTP request headers

说明

array nsapi_request_headers ( void )

nsapi_request_headers() gets all the HTTP headers in the current request. This is only supported when PHP runs as a NSAPI module.

Note:

Prior to PHP 4.3.3, getallheaders() was only available for the Apache servers. After PHP 4.3.3, getallheaders() is an alias for nsapi_request_headers() if you use the NSAPI module.

Note:

You can also get at the value of the common CGI variables by reading them from the $_SERVER superglobal, which works whether or not you are using PHP as a NSAPI module.

返回值

Returns an associative array with all the HTTP headers.

范例

Example #1 nsapi_request_headers() example

<?php
$headers = nsapi_request_headers();

foreach ($headers as $header => $value) {
  echo "$header: $value <br />\n";
}
?>

NSAPI 函数
nsapi_response_headers
NSAPI 函数


Fetch all HTTP response headers

nsapi_request_headers
nsapi_virtual
NSAPI 函数
PHP Manual

nsapi_response_headers

(PHP 4 >= 4.3.3, PHP 5, PHP 7)

nsapi_response_headers — Fetch all HTTP response headers

说明

array nsapi_response_headers ( void )

Gets all the NSAPI response headers.

返回值

Returns an associative array with all the NSAPI response headers.

参见

  • nsapi_request_headers() - Fetch all HTTP request headers
  • headers_sent() - Checks if or where headers have been sent

nsapi_request_headers
nsapi_virtual
NSAPI 函数


Perform an NSAPI sub-request

nsapi_response_headers
Session 扩展
NSAPI 函数
PHP Manual

nsapi_virtual

(PHP 4 >= 4.3.3, PHP 5, PHP 7)

nsapi_virtual — Perform an NSAPI sub-request

说明

bool nsapi_virtual ( string $uri )

nsapi_virtual() is an NSAPI-specific function which is equivalent to <!--#include virtual...--> in SSI (.shtml files). It does an NSAPI sub-request. It is useful for including CGI scripts or .shtml files, or anything else that you'd parse through webserver.

To run the sub-request, all buffers are terminated and flushed to the browser, pending headers are sent too.

You cannot make recursive requests with this function to other PHP scripts. If you want to include PHP scripts, use include or require.

Note:

This function depends on a undocumented feature of the Netscape/iPlanet/Sun webservers. Use phpinfo() to determine if it is available. In the Unix environment it should always work, in Windows it depends on the name of a ns-httpdXX.dll file.

Read the note about subrequests in the NSAPI section (UNIX, Windows) if you experience this problem.

参数

uri

The URI of the script.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

nsapi_response_headers
Session 扩展
NSAPI 函数


Session 扩展

  • Msession — Mohawk Software Session Handler Functions
    • 简介
    • 安装／配置
    • 预定义常量
    • Msession 函数
  • Sessions — Session Handling
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Session 上传进度
    • 会话和安全
    • Session 函数
    • SessionHandler — The SessionHandler class
    • SessionHandlerInterface — The SessionHandlerInterface class
  • Session PgSQL — PostgreSQL Session Save Handler
    • 简介
    • 安装／配置
    • Table definitions
    • 预定义常量
    • Session PgSQL 函数
nsapi_virtual
Msession
函数参考


Mohawk Software Session Handler Functions

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Msession 函数
    • msession_connect — Connect to msession server
    • msession_count — Get session count
    • msession_create — Create a session
    • msession_destroy — Destroy a session
    • msession_disconnect — Close connection to msession server
    • msession_find — Find all sessions with name and value
    • msession_get_array — Get array of msession variables
    • msession_get_data — Get data session unstructured data
    • msession_get — Get value from session
    • msession_inc — Increment value in session
    • msession_list — List all sessions
    • msession_listvar — List sessions with variable
    • msession_lock — Lock a session
    • msession_plugin — Call an escape function within the msession personality plugin
    • msession_randstr — Get random string
    • msession_set_array — Set msession variables from an array
    • msession_set_data — Set data session unstructured data
    • msession_set — Set value in session
    • msession_timeout — Set/get session timeout
    • msession_uniq — Get unique id
    • msession_unlock — Unlock a session
Session 扩展
简介
Session 扩展


简介

msession is an interface to a high speed session daemon which can run either locally or remotely. It is designed to provide consistent session management for a PHP web farm. More Information about msession and the session server software itself can be found at » http://www.mohawksoft.org/?q=node/8.

Note: 此扩展在 Windows 平台上不可用。

Note:

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.1.3.

Msession
安装／配置
Msession


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Msession


安装

此扩展被认为已无人维护及已消亡。然而，此扩展的源代码还可在 PECL SVN 找到： » http://svn.php.net/viewvc/pecl/msession.

此扩展已被移至 » PECL 资源库且不再与 PHP 捆绑。5.1.3

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
Msession 函数
Msession


Msession 函数

Table of Contents

  • msession_connect — Connect to msession server
  • msession_count — Get session count
  • msession_create — Create a session
  • msession_destroy — Destroy a session
  • msession_disconnect — Close connection to msession server
  • msession_find — Find all sessions with name and value
  • msession_get_array — Get array of msession variables
  • msession_get_data — Get data session unstructured data
  • msession_get — Get value from session
  • msession_inc — Increment value in session
  • msession_list — List all sessions
  • msession_listvar — List sessions with variable
  • msession_lock — Lock a session
  • msession_plugin — Call an escape function within the msession personality plugin
  • msession_randstr — Get random string
  • msession_set_array — Set msession variables from an array
  • msession_set_data — Set data session unstructured data
  • msession_set — Set value in session
  • msession_timeout — Set/get session timeout
  • msession_uniq — Get unique id
  • msession_unlock — Unlock a session
预定义常量
msession_connect
Msession


Connect to msession server

Msession 函数
msession_count
Msession 函数
PHP Manual

msession_connect

(PHP 4 >= 4.2.0, PHP 5 <= 5.1.2)

msession_connect — Connect to msession server

说明

bool msession_connect ( string $host , string $port )
Warning

本函数还未编写文档，仅有参数列表。

Msession 函数
msession_count
Msession 函数


Get session count

msession_connect
msession_create
Msession 函数
PHP Manual

msession_count

(PHP 4 >= 4.2.0, PHP 5 <= 5.1.2)

msession_count — Get session count

说明

int msession_count ( void )
Warning

本函数还未编写文档，仅有参数列表。

msession_connect
msession_create
Msession 函数


Create a session

msession_count
msession_destroy
Msession 函数
PHP Manual

msession_create

(PHP 4 >= 4.2.0, PHP 5 <= 5.1.2)

msession_create — Create a session

说明

bool msession_create ( string $session [, string $classname [, string $data ]] )
Warning

本函数还未编写文档，仅有参数列表。

msession_count
msession_destroy
Msession 函数


Destroy a session

msession_create
msession_disconnect
Msession 函数
PHP Manual

msession_destroy

(PHP 4 >= 4.2.0, PHP 5 <= 5.1.2)

msession_destroy — Destroy a session

说明

bool msession_destroy ( string $name )
Warning

本函数还未编写文档，仅有参数列表。

msession_create
msession_disconnect
Msession 函数


Close connection to msession server

msession_destroy
msession_find
Msession 函数
PHP Manual

msession_disconnect

(PHP 4 >= 4.2.0, PHP 5 <= 5.1.2)

msession_disconnect — Close connection to msession server

说明

void msession_disconnect ( void )
Warning

本函数还未编写文档，仅有参数列表。

msession_destroy
msession_find
Msession 函数


Find all sessions with name and value

msession_disconnect
msession_get_array
Msession 函数
PHP Manual

msession_find

(PHP 4 >= 4.2.0, PHP 5 <= 5.1.2)

msession_find — Find all sessions with name and value

说明

array msession_find ( string $name , string $value )
Warning

本函数还未编写文档，仅有参数列表。

msession_disconnect
msession_get_array
Msession 函数


Get array of msession variables

msession_find
msession_get_data
Msession 函数
PHP Manual

msession_get_array

(PHP 4 >= 4.2.0, PHP 5 <= 5.1.2)

msession_get_array — Get array of msession variables

说明

array msession_get_array ( string $session )
Warning

本函数还未编写文档，仅有参数列表。

msession_find
msession_get_data
Msession 函数


Get data session unstructured data

msession_get_array
msession_get
Msession 函数
PHP Manual

msession_get_data

(PHP 4 >= 4.2.0, PHP 5 <= 5.1.2)

msession_get_data — Get data session unstructured data

说明

string msession_get_data ( string $session )
Warning

本函数还未编写文档，仅有参数列表。

msession_get_array
msession_get
Msession 函数


Get value from session

msession_get_data
msession_inc
Msession 函数
PHP Manual

msession_get

(PHP 4 >= 4.2.0, PHP 5 <= 5.1.2)

msession_get — Get value from session

说明

string msession_get ( string $session , string $name , string $value )
Warning

本函数还未编写文档，仅有参数列表。

msession_get_data
msession_inc
Msession 函数


Increment value in session

msession_get
msession_list
Msession 函数
PHP Manual

msession_inc

(PHP 4 >= 4.2.0, PHP 5 <= 5.1.2)

msession_inc — Increment value in session

说明

string msession_inc ( string $session , string $name )
Warning

本函数还未编写文档，仅有参数列表。

msession_get
msession_list
Msession 函数


List all sessions

msession_inc
msession_listvar
Msession 函数
PHP Manual

msession_list

(PHP 4 >= 4.2.0, PHP 5 <= 5.1.2)

msession_list — List all sessions

说明

array msession_list ( void )
Warning

本函数还未编写文档，仅有参数列表。

msession_inc
msession_listvar
Msession 函数


List sessions with variable

msession_list
msession_lock
Msession 函数
PHP Manual

msession_listvar

(PHP 4 >= 4.2.0, PHP 5 <= 5.1.2)

msession_listvar — List sessions with variable

说明

array msession_listvar ( string $name )

Used for searching sessions with common attributes.

参数

name

The name being searched.

返回值

Returns an associative array of value/session for all sessions with a variable named name.

msession_list
msession_lock
Msession 函数


Lock a session

msession_listvar
msession_plugin
Msession 函数
PHP Manual

msession_lock

(PHP 4 >= 4.2.0, PHP 5 <= 5.1.2)

msession_lock — Lock a session

说明

int msession_lock ( string $name )
Warning

本函数还未编写文档，仅有参数列表。

msession_listvar
msession_plugin
Msession 函数


Call an escape function within the msession personality plugin

msession_lock
msession_randstr
Msession 函数
PHP Manual

msession_plugin

(PHP 4 >= 4.2.0, PHP 5 <= 5.1.2)

msession_plugin — Call an escape function within the msession personality plugin

说明

string msession_plugin ( string $session , string $val [, string $param ] )
Warning

本函数还未编写文档，仅有参数列表。

msession_lock
msession_randstr
Msession 函数


Get random string

msession_plugin
msession_set_array
Msession 函数
PHP Manual

msession_randstr

(PHP 4 >= 4.2.0, PHP 5 <= 5.1.2)

msession_randstr — Get random string

说明

string msession_randstr ( int $param )
Warning

本函数还未编写文档，仅有参数列表。

msession_plugin
msession_set_array
Msession 函数


Set msession variables from an array

msession_randstr
msession_set_data
Msession 函数
PHP Manual

msession_set_array

(PHP 4 >= 4.2.0, PHP 5 <= 5.1.2)

msession_set_array — Set msession variables from an array

说明

void msession_set_array ( string $session , array $tuples )
Warning

本函数还未编写文档，仅有参数列表。

msession_randstr
msession_set_data
Msession 函数


Set data session unstructured data

msession_set_array
msession_set
Msession 函数
PHP Manual

msession_set_data

(PHP 4 >= 4.2.0, PHP 5 <= 5.1.2)

msession_set_data — Set data session unstructured data

说明

bool msession_set_data ( string $session , string $value )
Warning

本函数还未编写文档，仅有参数列表。

msession_set_array
msession_set
Msession 函数


Set value in session

msession_set_data
msession_timeout
Msession 函数
PHP Manual

msession_set

(PHP 4 >= 4.2.0, PHP 5 <= 5.1.2)

msession_set — Set value in session

说明

bool msession_set ( string $session , string $name , string $value )
Warning

本函数还未编写文档，仅有参数列表。

msession_set_data
msession_timeout
Msession 函数


Set/get session timeout

msession_set
msession_uniq
Msession 函数
PHP Manual

msession_timeout

(PHP 4 >= 4.2.0, PHP 5 <= 5.1.2)

msession_timeout — Set/get session timeout

说明

int msession_timeout ( string $session [, int $param ] )
Warning

本函数还未编写文档，仅有参数列表。

msession_set
msession_uniq
Msession 函数


Get unique id

msession_timeout
msession_unlock
Msession 函数
PHP Manual

msession_uniq

(PHP 4 >= 4.2.0, PHP 5 <= 5.1.2)

msession_uniq — Get unique id

说明

string msession_uniq ( int $param [, string $classname [, string $data ]] )
Warning

本函数还未编写文档，仅有参数列表。

msession_timeout
msession_unlock
Msession 函数


Unlock a session

msession_uniq
Sessions
Msession 函数
PHP Manual

msession_unlock

(PHP 4 >= 4.2.0, PHP 5 <= 5.1.2)

msession_unlock — Unlock a session

说明

int msession_unlock ( string $session , int $key )
Warning

本函数还未编写文档，仅有参数列表。

msession_uniq
Sessions
Msession 函数


Session Handling

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • 基本用法
    • 传送会话ID
    • 自定义会话管理器
  • Session 上传进度
  • 会话和安全
  • Session 函数
    • session_abort — Discard session array changes and finish session
    • session_cache_expire — 返回当前缓存的到期时间
    • session_cache_limiter — 读取/设置缓存限制器
    • session_commit — session_write_close 的别名
    • session_create_id — Create new session id
    • session_decode — 解码会话数据
    • session_destroy — 销毁一个会话中的全部数据
    • session_encode — 将当前会话数据编码为一个字符串
    • session_gc — Perform session data garbage collection
    • session_get_cookie_params — 获取会话 cookie 参数
    • session_id — 获取/设置当前会话 ID
    • session_is_registered — 检查变量是否在会话中已经注册
    • session_module_name — 获取/设置会话模块名称
    • session_name — 读取/设置会话名称
    • session_regenerate_id — 使用新生成的会话 ID 更新现有会话 ID
    • session_register_shutdown — 关闭会话
    • session_register — Register one or more global variables with the current session
    • session_reset — Re-initialize session array with original values
    • session_save_path — 读取/设置当前会话的保存路径
    • session_set_cookie_params — 设置会话 cookie 参数
    • session_set_save_handler — 设置用户自定义会话存储函数
    • session_start — 启动新会话或者重用现有会话
    • session_status — 返回当前会话状态
    • session_unregister — Unregister a global variable from the current session
    • session_unset — 释放所有的会话变量
    • session_write_close — Write session data and end session
  • SessionHandler — The SessionHandler class
    • SessionHandler::close — Close the session
    • SessionHandler::create_sid — Return a new session ID
    • SessionHandler::destroy — Destroy a session
    • SessionHandler::gc — Cleanup old sessions
    • SessionHandler::open — Initialize session
    • SessionHandler::read — Read session data
    • SessionHandler::write — Write session data
  • SessionHandlerInterface — The SessionHandlerInterface class
    • SessionHandlerInterface::close — Close the session
    • SessionHandlerInterface::destroy — Destroy a session
    • SessionHandlerInterface::gc — Cleanup old sessions
    • SessionHandlerInterface::open — Initialize session
    • SessionHandlerInterface::read — Read session data
    • SessionHandlerInterface::write — Write session data
msession_unlock
简介
Session 扩展


简介

会话支持在 PHP 中是在并发访问时由一个方法来保存某些数据.从而使你能够构建更多的定制程序 从而提高你的 web 网站的吸引力.

一个访问者访问你的 web 网站将被分配一个唯一的 id, 就是所谓的会话 id. 这个 id 可以存储在用户端的一个 cookie 中，也可以通过 URL 进行传递.

会话支持允许你将请求中的数据保存在超全局数组$_SESSION中. 当一个访问者访问你的网站，PHP 将自动检查(如果 session.auto_start 被设置为 1）或者在你要求下检查(明确通过 session_start() 或者隐式通过 session_register()) 当前会话 id 是否是先前发送的请求创建. 如果是这种情况， 那么先前保存的环境将被重建.

Caution

如果你打开了 session.auto_start 那么 将对象放入会话的唯一方法是使用 auto_prepend_file 来加载定义这个对象的类，其中，在加载的定义的类时，你不得不使用 serialize() 你得对象，并且事后 unserialize() 它.

$_SESSION (和所有已注册得变量) 将被 PHP 使用内置的序列化方法在请求完成时 进行序列化.序列化方法可以通过 session.serialize_handler 这个 PHP 配置选项中来设置一个指定的方法.注册的变量未定义将被标记为未定义.在并发访问时,这些变量不会被会话模块 定义除非用户后来定义了它们.

Warning

因为会话数据是被序列化的，resource 变量不能被存储在会话中.

序列化句柄 (php 和 php_binary) 会受到 register_globals 的限制. 而且，数字索引或者字符串索引包含的特殊字符(| 和 !) 不能被使用. 使用这些字符将脚本执行关闭时的最后出现错误. php_serialize 没有这样的限制.php_serialize 从 PHP 5.5.4 以后可用.

Note:

请注意当会话工作时，会话的记录并没有被创建 直到一个变量已经被使用 session_register() 注册或者被添加一个新元素到 $_SESSION 全局数组中. 这点一直有效，无论是否使用 session_start() 函数 来开始会话.

Note:

在 PHP 5.2.2 有一个没有在文档中说明的特性是用文件存储时，即使是 在 open_basedir 被启用，并且 "/tmp" 没有被添加到 允许路径列表中，也能将会话存储到 "/tmp" 目录. 这个特性在 PHP 5.3.0 时已经从 PHP 中被移除了.

Sessions
安装／配置
Sessions


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Sessions


需求

构建此扩展不需要其他扩展。

Note:

你可以选择使用由 Ralf S. Engelschall 开发的 Shared Memory Allocation 来作为会话存储. 你需要到 » mm 然后安装它. 这个可选功能在 Windows 平台不可用.注意 mm 的这个会话存储模块无法保证并发访问时相同会话间正确的互锁. 它可能更多地是适用与存储会话到文件的使用在基于文件系统(比如 Solaris/Linux 的tmpfs， 或者 BSD 上的/dev/md) 的共享内存，因为他们能够正确互锁. 因为会话数据是存储在内存从而当web 服务器重启时数据将被删除.

安装／配置
安装
安装／配置


安装

会话的支持在 PHP 默认为激活。如果不想在 PHP 中加入会话支持，应在配置时指定 --disable-session 选项。要为会话存储使用共享内存分配（mm），配置 PHP 时指定 --with-mm[=DIR] 。

PHP 的 Windows 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。

Note:

默认情况下，所有与特定会话相关的数据都被存储在由 INI 选项 session.save_path 指定的目录下的一个文件中。对每个会话会建立一个文件（不论是否有数据与该会话相关）。这是由于每打开一个会话即建立一个文件，不论是否有数据写入到该文件中。注意由于和文件系统协同工作的限制，此行为有个副作用，有可能造成用户定制的会话处理器（例如用数据库）丢失了未存储数据的会话。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

会话配置选项
名字 | 默认 | 可修改范围 | 更新日志
session.save_path | "" | PHP_INI_ALL |
session.name | "PHPSESSID" | PHP_INI_ALL |
session.save_handler | "files" | PHP_INI_ALL |
session.auto_start | "0" | PHP_INI_PERDIR |
session.gc_probability | "1" | PHP_INI_ALL |
session.gc_divisor | "100" | PHP_INI_ALL | 自 PHP 4.3.2 起可用。
session.gc_maxlifetime | "1440" | PHP_INI_ALL |
session.serialize_handler | "php" | PHP_INI_ALL |
session.cookie_lifetime | "0" | PHP_INI_ALL |
session.cookie_path | "/" | PHP_INI_ALL |
session.cookie_domain | "" | PHP_INI_ALL |
session.cookie_secure | "" | PHP_INI_ALL | 自 PHP 4.0.4 起有效。
session.cookie_httponly | "" | PHP_INI_ALL | 自 PHP 5.2.0. 有效
session.use_strict_mode | "0" | PHP_INI_ALL | 自 PHP 5.5.2. 有效
session.use_cookies | "1" | PHP_INI_ALL |
session.use_only_cookies | "1" | PHP_INI_ALL | 自 PHP 4.3.0 起可用。
session.referer_check | "" | PHP_INI_ALL |
session.entropy_file | "" | PHP_INI_ALL |
session.entropy_length | "0" | PHP_INI_ALL |
session.cache_limiter | "nocache" | PHP_INI_ALL |
session.cache_expire | "180" | PHP_INI_ALL |
session.use_trans_sid | "0" | PHP_INI_ALL | 在 PHP <= 4.2.3 是 PHP_INI_ALL，在 PHP < 5 是 PHP_INI_PERDIR。自 PHP 4.0.3 起可用。
session.bug_compat_42 | "1" | PHP_INI_ALL | 自 PHP 4.3.0 起可用。
session.bug_compat_warn | "1" | PHP_INI_ALL | 自 PHP 4.3.0 起可用。
session.hash_function | "0" | PHP_INI_ALL | 自 PHP 5.0.0 起可用。
session.hash_bits_per_character | "4" | PHP_INI_ALL | 自 PHP 5.0.0 起可用。
url_rewriter.tags | "a=href,area=href,frame=src,form=,fieldset=" | PHP_INI_ALL | 自 PHP 4.0.4 起可用。
session.upload_progress.enabled | "1" | PHP_INI_PERDIR | Available since PHP 5.4.0.
session.upload_progress.cleanup | "1" | PHP_INI_PERDIR | Available since PHP 5.4.0.
session.upload_progress.prefix | "upload_progress_" | PHP_INI_PERDIR | Available since PHP 5.4.0.
session.upload_progress.name | "PHP_SESSION_UPLOAD_PROGRESS" | PHP_INI_PERDIR | Available since PHP 5.4.0.
session.upload_progress.freq | "1%" | PHP_INI_PERDIR | Available since PHP 5.4.0.
session.upload_progress.min_freq | "1" | PHP_INI_PERDIR | Available since PHP 5.4.0.
session.lazy_write | "1" | PHP_INI_ALL | Available since PHP 7.0.0.
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

会话管理系统支持许多配置选项，可以在自己的 php.ini 文件中设定。这里只是个简短的概览。

session.save_handler string
session.save_handler 定义了来存储和获取与会话关联的数据的处理器的名字。默认为 files。Note that individual extensions may register their own save_handlers; registered handlers can be obtained on a per-installation basis by referring to phpinfo(). 参见 session_set_save_handler()。
session.save_path string
session.save_path 定义了传递给存储处理器的参数。如果选择了默认的 files 文件处理器，则此值是创建文件的路径。默认为 /tmp。参见 session_save_path()。

此指令还有一个可选的 N 参数来决定会话文件分布的目录深度。例如，设定为 '5;/tmp' 将使创建的会话文件和路径类似于 /tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If。要使用 N 参数，必须在使用前先创建好这些目录。在 ext/session 目录下有个小的 shell 脚本名叫 mod_files.sh，windows 版本是 mod_files.bat 可以用来做这件事。此外注意如果使用了 N 参数并且大于 0，那么将不会执行自动垃圾回收，更多信息见 php.ini。另外如果用了 N 参数，要确保将 session.save_path 的值用双引号 "quotes" 括起来，因为分隔符分号（ ;）在 php.ini 中也是注释符号。

文件储存模块默认使用 mode 600 创建文件。通过 修改可选参数 MODE 来改变这种默认行为： N;MODE;/path ，其中 MODE 是 mode 的八进制表示。 MODE 设置不影响进程的掩码(umask)。

Warning

如果将此设定为一个全局可读的目录，例如 /tmp（默认值），服务器上的其他用户有可能通过该目录的文件列表破解会话。

Caution

使用以上描述的可选目录层级参数 N 时请注意，对于绝大多数站点，大于1或者2的值会不太合适——因为这需要创建大量的目录：例如，值设置为 3 需要在文件系统上创建 64^3 个目录，将浪费很多空间和 inode。

仅仅在绝对肯定站点足够大时，才可以设置 N 大于2。

Note: 在 PHP 4.3.6 之前，Windows 用户必须修改此选项以使用 PHP 的会话函数。必须指定一个合法路径，例如：c:/temp。

session.name string
session.name 指定会话名以用做 cookie 的名字。只能由字母数字组成，默认为 PHPSESSID。参见 session_name()。
session.auto_start boolean
session.auto_start 指定会话模块是否在请求开始时自动启动一个会话。默认为 0（不启动）。
session.serialize_handler string
session.serialize_handler 定义用来序列化／解序列化的处理器名字。 当前支持 PHP 序列化格式 (名为 php_serialize)、 PHP PHP 内部格式 (名为 php 及 php_binary) 和 WDDX (名为 wddx)。 如果 PHP 编译时加入了 WDDX 支持，则只能用 WDDX。 自 PHP 5.5.4 起可以使用 php_serialize。 php_serialize 在内部简单地直接使用 serialize/unserialize 函数，并且不会有 php 和 php_binary 所具有的限制。 使用较旧的序列化处理器导致 $_SESSION 的索引既不能是数字也不能包含特殊字符(| and !) 。 使用 php_serialize 避免脚本退出时，数字及特殊字符索引导致出错。 默认使用 php。
session.gc_probability integer
session.gc_probability 与 session.gc_divisor 合起来用来管理 gc（garbage collection 垃圾回收）进程启动的概率。默认为 1。详见 session.gc_divisor。
session.gc_divisor integer
session.gc_divisor 与 session.gc_probability 合起来定义了在每个会话初始化时启动 gc（garbage collection 垃圾回收）进程的概率。此概率用 gc_probability/gc_divisor 计算得来。例如 1/100 意味着在每个请求中有 1% 的概率启动 gc 进程。session.gc_divisor 默认为 100。
session.gc_maxlifetime integer
session.gc_maxlifetime 指定过了多少秒之后数据就会被视为"垃圾"并被清除。 垃圾搜集可能会在 session 启动的时候开始（ 取决于session.gc_probability 和 session.gc_divisor）。

Note:

如果不同的脚本具有不同的 session.gc_maxlifetime 数值但是共享了同一个地方存储会话数据，则具有最小数值的脚本会清理数据。此情况下，与 session.save_path 一起使用本指令。

session.referer_check string
session.referer_check 包含有用来检查每个 HTTP Referer 的子串。如果客户端发送了 Referer 信息但是在其中并未找到该子串，则嵌入的会话 ID 会被标记为无效。默认为空字符串。
session.entropy_file string
session.entropy_file 给出了一个到外部资源（文件）的路径，该资源将在会话 ID 创建进程中被用作附加的熵值资源。例如在许多 Unix 系统下都可以用 /dev/random 或 /dev/urandom。 在 Windows 上自 PHP 5.3.3 起加入了此功能。 设置 session.entropy_length 为非零的值将使 PHP 使用 Windows Random API 作为熵值源。

Note: 自 PHP 5.4.0 起，默认情况下， session.entropy_file 在 /dev/urandom 或 /dev/arandom 可用的时候使用它们。 在 PHP 5.3.0 中此指令默认留空。

session.entropy_length integer
session.entropy_length 指定了从上面的文件中读取的字节数。默认为 0（禁用）。
session.use_strict_mode boolean
session.use_strict_mode specifies whether the module will use strict session id mode. If this mode is enabled, the module does not accept uninitialized session ID. If uninitialized session ID is sent from browser, new session ID is sent to browser. Applications are protected from session fixation via session adoption with strict mode. Defaults to 0 (disabled).
session.use_cookies boolean
session.use_cookies 指定是否在客户端用 cookie 来存放会话 ID。默认为 1（启用）。
session.use_only_cookies boolean
session.use_only_cookies 指定是否在客户端仅仅使用 cookie 来存放会话 ID。。启用此设定可以防止有关通过 URL 传递会话 ID 的攻击。此设定是 PHP 4.3.0 添加的。自PHP 5.3.0开始，默认值改为1（启用）
session.cookie_lifetime integer
session.cookie_lifetime 以秒数指定了发送到浏览器的 cookie 的生命周期。值为 0 表示"直到关闭浏览器"。默认为 0。参见 session_get_cookie_params() 和 session_set_cookie_params()。

Note:

The expiration timestamp is set relative to the server time, which is not necessarily the same as the time in the client's browser.

session.cookie_path string
session.cookie_path 指定了要设定会话 cookie 的路径。默认为 /。参见 session_get_cookie_params() 和 session_set_cookie_params()。
session.cookie_domain string
session.cookie_domain 指定了要设定会话 cookie 的域名。默认为无，表示根据 cookie 规范产生 cookie 的主机名。参见 session_get_cookie_params() 和 session_set_cookie_params()。
session.cookie_secure boolean
session.cookie_secure 指定是否仅通过安全连接发送 cookie。默认为 off。此设定是 PHP 4.0.4 添加的。参见 session_get_cookie_params() 和 session_set_cookie_params()。
session.cookie_httponly boolean
Marks the cookie as accessible only through the HTTP protocol. This means that the cookie won't be accessible by scripting languages, such as JavaScript. This setting can effectively help to reduce identity theft through XSS attacks (although it is not supported by all browsers).
session.cache_limiter string
session.cache_limiter 指定会话页面所使用的缓冲控制方法（none/nocache/private/private_no_expire/public）。默认为 nocache。参见 session_cache_limiter()。
session.cache_expire integer
session.cache_expire 以分钟数指定缓冲的会话页面的存活期，此设定对 nocache 缓冲控制方法无效。默认为 180。参见 session_cache_expire()。
session.use_trans_sid boolean
session.use_trans_sid 指定是否启用透明 SID 支持。默认为 0（禁用）。

Note: 基于 URL 的会话管理比基于 cookie 的会话管理有更多安全风险。例如用户有可能通过 email 将一个包含有效的会话 ID 的 URL 发给他的朋友，或者用户总是有可能在收藏夹中存有一个包含会话 ID 的 URL 来以同样的会话 ID 去访问站点。

session.bug_compat_42 boolean
PHP 4.2.3 以及更低版本有一个未公开的特性／错误，它允许用户在 register_globals 被禁用的情况下在全局范围内初始化一个会话变量。PHP 4.3.0 及更高版本会在使用此特性时并且启用了 session.bug_compat_warn 时发出警告。此特性／错误可以通过关闭此选项而禁用。
session.bug_compat_warn boolean
PHP 4.2.3 以及更低版本有一个未公开的特性／错误，它允许用户在 register_globals 被禁用的情况下在全局范围内初始化一个会话变量。PHP 4.3.0 及更高版本会在使用此特性时并且同时启用了 session.bug_compat_42 和 session.bug_compat_warn 时发出警告。
session.hash_function mixed
session.hash_function 允许用户指定生成会话 ID 的散列算法。'0' 表示 MD5（128 位），'1' 表示 SHA-1（160 位）。

Since PHP 5.3.0 it is also possible to specify any of the algorithms provided by the hash extension (if it is available), like sha512 or whirlpool. A complete list of supported algorithms can be obtained with the hash_algos() function.

Note:

这是 PHP 5 引进的。

session.hash_bits_per_character integer
session.hash_bits_per_character 允许用户定义将二进制散列数据转换为可读的格式时每个字符存放多少个比特。可能值为 '4'（0-9，a-f），'5'（0-9，a-v），以及 '6'（0-9，a-z，A-Z，"-"，","）。

Note:

这是 PHP 5 引进的。

url_rewriter.tags string
url_rewriter.tags 指定在使用透明 SID 支持时哪些 HTML 标记会被修改以加入会话 ID。默认为 a=href,area=href,frame=src,input=src,form=fakeentry,fieldset=。

Note: 如果要符合 XHTML，去掉 form 项并在表单字段前后加上 <fieldset> 标记。

session.upload_progress.enabled boolean
Enables upload progress tracking, populating the $_SESSION variable. Defaults to 1, enabled.
session.upload_progress.cleanup boolean
Cleanup the progress information as soon as all POST data has been read (i.e. upload completed). Defaults to 1, enabled.

Note: It is highly recommended to keep this feature enabled.

session.upload_progress.prefix string
A prefix used for the upload progress key in the $_SESSION. This key will be concatenated with the value of $_POST[ini_get("session.upload_progress.name")] to provide a unique index. Defaults to "upload_progress_".
session.upload_progress.name string
The name of the key to be used in $_SESSION storing the progress information. See also session.upload_progress.prefix. If $_POST[ini_get("session.upload_progress.name")] is not passed or available, upload progressing will not be recorded. Defaults to "PHP_SESSION_UPLOAD_PROGRESS".
session.upload_progress.freq mixed
Defines how often the upload progress information should be updated. This can be defined in bytes (i.e. "update progress information after every 100 bytes"), or in percentages (i.e. "update progress information after receiving every 1% of the whole filesize"). Defaults to "1%".
session.upload_progress.min_freq integer
The minimum delay between updates, in seconds. Defaults to "1" (one second).
session.lazy_write boolean
session.lazy_write, when set to 1, means that session data is only rewritten if it changes. Defaults to 1, enabled.

register_globals 配置选项影响到会话变量是怎样存储和恢复的。

Upload progress will not be registered unless session.upload_progress.enabled is enabled, and the $_POST[ini_get("session.upload_progress.name")] variable is set. See Session Upload Progress for mor details on this functionality.

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

SID (string)
包含着会话名以及会话 ID 的常量，格式为 "name=ID"，或者如果会话 ID 已经在适当的会话 cookie 中设定时则为空字符串。 这和 session_id() 返回的是同一个 ID。
PHP_SESSION_DISABLED (int)
自 PHP 5.4.0 起。如果会话已禁用则返回 session_status() 的值。
PHP_SESSION_NONE (int)
自 PHP 5.4.0 起。在会话已启用但是没有会话的时候返回 session_status() 的值。
PHP_SESSION_ACTIVE (int)
自 PHP 5.4.0 起。在一个会话已启用并存在时返回 session_status() 的值。
资源类型
范例
Sessions


范例

Table of Contents

  • 基本用法
  • 传送会话ID
  • 自定义会话管理器
预定义常量
基本用法
Sessions


基本用法

通过为每个独立用户分配唯一的会话 ID，可以实现针对不同用户分别存储数据的功能。 会话通常被用来在多个页面请求之间保存及共享信息。 一般来说，会话 ID 通过 cookie 的方式发送到浏览器，并且在服务器端也是通过会话 ID 来取回会话中的数据。 如果请求中不包含会话 ID 信息，那么 PHP 就会创建一个新的会话，并为新创建的会话分配新的 ID。

会话的工作流程很简单。当开始一个会话时，PHP 会尝试从请求中查找会话 ID （通常通过会话 cookie）， 如果请求中不包含会话 ID 信息，PHP 就会创建一个新的会话。 会话开始之后，PHP 就会将会话中的数据设置到 $_SESSION 变量中。 当 PHP 停止的时候，它会自动读取 $_SESSION 中的内容，并将其进行序列化， 然后发送给会话保存管理器器来进行保存。

默认情况下，PHP 使用内置的文件会话保存管理器（files）来完成会话的保存。 也可以通过配置项 session.save_handler 来修改所要采用的会话保存管理器。 对于文件会话保存管理器，会将会话数据保存到配置项 session.save_path 所指定的位置。

可以通过调用函数 session_start() 来手动开始一个会话。 如果配置项 session.auto_start 设置为1， 那么请求开始的时候，会话会自动开始。

PHP 脚本执行完毕之后，会话会自动关闭。 同时，也可以通过调用函数 session_write_close() 来手动关闭会话。

Example #1 在 $_SESSION 中注册变量。

<?php
session_start();
if (!isset($_SESSION['count'])) {
  $_SESSION['count'] = 0;
} else {
  $_SESSION['count']++;
}
?>

Example #2 从 $_SESSION 中反注册变量。

<?php
session_start();
unset($_SESSION['count']);
?>

Caution

千万不要使用 unset($_SESSION) 来复位超级变量 $_SESSION， 因为这样会导致无法继续在 $_SESSION 中注册会话变量。

Warning

由于无法将一个引用恢复到另外一个变量， 所以不可以将引用保存到会话变量中。

Warning

如果会话中存在和全局变量同名的变量，那么 register_globals 会导致全局变量被会话变量覆盖。 更多信息请参考 注册全局变量。

Note:

无论是通过调用函数 session_start() 手动开启会话， 还是使用配置项 session.auto_start 自动开启会话， 对于基于文件的会话数据保存（PHP 的默认行为）而言， 在会话开始的时候都会给会话数据文件加锁， 直到 PHP 脚本执行完毕或者显式调用 session_write_close() 来保存会话数据。 在此期间，其他脚本不可以访问同一个会话数据文件。

对于大量使用 Ajax 或者并发请求的网站而言，这可能是一个严重的问题。 解决这个问题最简单的做法是如果修改了会话中的变量， 那么应该尽快调用 session_write_close() 来保存会话数据并释放文件锁。 还有一种选择就是使用支持并发操作的会话保存管理器来替代文件会话保存管理器。

范例
传送会话ID
范例


传送会话ID

有两种方式用来传送会话 ID：

  • Cookies
  • URL 参数

会话模块支持这两种方式。 Cookie 方式相对好一些，但是用户可能在浏览器中关闭 Cookie，所以 第二种方案就是把会话 ID 直接并入到 URL 中，以保证会话 ID 的传送。

无需开发人员干预，PHP 就可以自动处理 URL 传送会话 ID 的场景。 如果你使用 PHP 4.2.0 之前的版本，那么需要使用 --enable-trans-sid 参数来构建 PHP， 然后启用 session.use_trans_sid 选项， PHP 将会自动在相关 URI 中包含会话 ID。

Note:

arg_separator.output php.ini 配置指令允许你自定义会话 ID 参数分隔符。 可以设定为 & 来保持和 XHTML 的一致性。

会话开始之后，可以使用 SID 常量。 如果客户端未提供会话 cookie，该常量的展开形式为 session_name=session_id， 反之，该常量为空字符串。因此，可以直接在 URL 中包含此常量的展开字符串而无需考虑会话 ID 的实际传送方式。

下例演示了如何在会话中注册变量以及如何使用 SID 常量正确的链接到另一页面。

Example #1 某单一用户的点击数

<?php

session_start();

if (empty($_SESSION['count'])) {
   $_SESSION['count'] = 1;
} else {
   $_SESSION['count']++;
}
?>

<p>
Hello visitor, you have seen this page <?php echo $_SESSION['count']; ?> times.
</p>

<p>
To continue, <a href="nextpage.php?<?php echo htmlspecialchars(SID); ?>">click
here</a>.
</p>

可以使用 htmlspecialchars() 来打印 SID 常量的展开字符串以避免 XSS 相关的攻击。

如果使用 --enable-trans-sid 参数编译的 PHP， 上例中打印 SID 常量部分就可以省略。

Note:

非相对 URL 将被视为指向外部站点的链接， 从安全角度考虑，外站的链接 URL 中将 不包含 SID 常量，以避免将 SID 泄露到外部服务器的风险。

基本用法
自定义会话管理器
范例


自定义会话管理器

如果需要在数据库中或者以其他方式存储会话数据， 需要使用 session_set_save_handler() 函数来创建一系列用户级存储函数。 PHP 5.4.0 之后，你可以使用 SessionHandlerInterface 类 或者通过继承 SessionHandler 类来扩展内置的管理器， 从而达到自定义会话保存机制的目的。

函数 session_set_save_handler() 的参数即为在会话生命周期内要调用的一组回调函数： open， read， write 以及 close。 还有一些回调函数被用来完成垃圾清理：destroy 用来删除会话， gc 用来进行周期性的垃圾收集。

因此，会话保存管理器对于 PHP 而言是必需的。 默认情况下会使用内置的文件会话保存管理器。 可以通过 session_set_save_handler() 函数来设置自定义会话保存管理器。 一些 PHP 扩展也提供了内置的会话管理器，例如：sqlite， memcache 以及 memcached， 可以通过配置项 session.save_handler 来使用它们。

会话开始的时候，PHP 会调用 open 管理器，然后再调用 read 回调函数来读取内容，该回调函数返回已经经过编码的字符串。 然后 PHP 会将这个字符串解码，并且产生一个数组对象，然后保存至 $_SESSION 超级全局变量。

当 PHP 关闭的时候（或者调用了 session_write_close() 之后）， PHP 会对 $_SESSION 中的数据进行编码， 然后和会话 ID 一起传送给 write 回调函数。 write 回调函数调用完毕之后，PHP 内部将调用 close 回调函数。

销毁会话时，PHP 会调用 destroy 回调函数。

根据会话生命周期时间的设置，PHP 会不时地调用 gc 回调函数。 该函数会从持久化存储中删除超时的会话数据。 超时是指会话最后一次访问时间距离当前时间超过了 $lifetime 所指定的值。

传送会话ID
Session 上传进度
范例


Session 上传进度

当 session.upload_progress.enabled INI 选项开启时，PHP 能够在每一个文件上传时监测上传进度。 这个信息对上传请求自身并没有什么帮助，但在文件上传时应用可以发送一个POST请求到终端（例如通过XHR）来检查这个状态

当一个上传在处理中，同时POST一个与INI中设置的session.upload_progress.name同名变量时，上传进度可以在$_SESSION中获得。 当PHP检测到这种POST请求时，它会在$_SESSION中添加一组数据, 索引是 session.upload_progress.prefix 与 session.upload_progress.name连接在一起的值。 通常这些键值可以通过读取INI设置来获得，例如

<?php
$key = ini_get("session.upload_progress.prefix") . ini_get("session.upload-progress.name");
var_dump($_SESSION[$key]);
?>

通过将$_SESSION[$key]["cancel_upload"]设置为TRUE，还可以取消一个正在处理中的文件上传。 当在同一个请求中上传多个文件，它仅会取消当前正在处理的文件上传和未处理的文件上传，但是不会移除那些已经完成的上传。 当一个上传请求被这么取消时，$_FILES中的error将会被设置为 UPLOAD_ERR_EXTENSION。

session.upload_progress.freq 和 session.upload_progress.min_freq INI选项控制了上传进度信息应该多久被重新计算一次。 通过合理设置这两个选项的值，这个功能的开销几乎可以忽略不计。

Example #1 样例信息

一个上传进度数组的结构的例子

<form action="upload.php" method="POST" enctype="multipart/form-data">
 <input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="123" />
 <input type="file" name="file1" />
 <input type="file" name="file2" />
 <input type="submit" />
</form>

在session中存放的数据看上去是这样子的：

<?php
$_SESSION["upload_progress_123"] = array(
 "start_time" => 1234567890,   // The request time
 "content_length" => 57343257, // POST content length
 "bytes_processed" => 453489,  // Amount of bytes received and processed
 "done" => false,              // true when the POST handler has finished, successfully or not
 "files" => array(
  0 => array(
   "field_name" => "file1",       // Name of the <input/> field
   // The following 3 elements equals those in $_FILES
   "name" => "foo.avi",
   "tmp_name" => "/tmp/phpxxxxxx",
   "error" => 0,
   "done" => true,                // True when the POST handler has finished handling this file
   "start_time" => 1234567890,    // When this file has started to be processed
   "bytes_processed" => 57343250, // Amount of bytes received and processed for this file
  ),
  // An other file, not finished uploading, in the same request
  1 => array(
   "field_name" => "file2",
   "name" => "bar.avi",
   "tmp_name" => NULL,
   "error" => 0,
   "done" => false,
   "start_time" => 1234567899,
   "bytes_processed" => 54554,
  ),
 )
);

Warning

为了使这个正常工作，web服务器的请求缓冲区需要禁用，否则 PHP可能仅当文件完全上传完成时才能收到文件上传请求。 已知会缓冲这种大请求的程序有Nginx。

自定义会话管理器
会话和安全
Sessions


会话和安全

外部链接：» 会话固定

HTTP 会话管理是 web 应用安全的核心内容， 要采用尽可能的手段来确保会话安全。 开发人员应该合理的启用或使用可接受的设置。

  • session.cookie_lifetime=0。 0 表示特殊含义，它告知浏览器不要持久化存储 cookie 数据。 也即，关闭浏览器的时候，会话 ID cookie 会被立即删除。 如果将此项设置为非 0 的值，可能会导致会话 ID 被其他用户使用。 大部分应用应该把此项设置为"0"。 如果应用中有自动登录的功能，请自行实现一种更加安全的方式，而不要使用会话 ID 来完成自动登录。
  • session.use_cookies=On 并且 session.use_only_cookies=On。 虽然 HTTP cookie 存在一些问题， 但是它确实是实现会话 ID 管理的优选方案。 尽可能的仅使用 cookie 来进行会话 ID 管理， 而且大部分应用也确实是只使用 cookie 来记录会话 ID 的。
  • session.use_strict_mode=On。 此设置防止会话模块使用未初始化的会话 ID。 也就是说， 会话模块仅接受由它自己创建的有效的会话 ID， 而拒绝由用户自己提供的会话 ID。 使用 JavaScript 对 cookie 进行注入 就可以实现对会话 ID 的注入， 甚至可以在 URL 的查询字符串中或者表单参数中实现会话 ID 的注入。 大部分应用没理由也不应该接受由用户提供的未经初始化的会话 ID。
  • session.cookie_httponly=On。 禁止 JavaScript 访问会话 cookie。 此设置项可以保护 cookie 不被 JavaScript 窃取。 虽然可以使用会话 ID 来作为防范跨站请求伪造（CSRF）的关键数据， 但是不建议你这么做。 例如，攻击者可以把 HTML 源代码保存下来并且发送给其他用户。 为了安全起见， 开发者不应该在 web 页面中显示会话 ID。 几乎所有的应用都应该对会话 ID cookie 设置 httponly 为 On。
  • session.cookie_secure=On。 仅允许在 HTTPS 协议下访问会话 ID cookie。 如果你的 web 站点仅支持 HTTPS，那么必须将此选项设置为 On。 对于仅支持 HTTPS 的 web 站点建议考虑使用强制安全传输技术（HSTS）。
  • session.gc_maxlifetime=[尽可能的小]。 GC 的运行时机并不是精准的，带有一定的或然性，所以这个设置项并不能确保 旧的会话数据被删除。某些会话存储处理模块不使用此设置项。 更多的信息请参考会话存储模块的完整文档。 虽然开发人员不能完全依赖这个设置，但是还是建议将其设置的尽可能的小。 调整 session.gc_probability 和 session.gc_divisor 设置项 可以使得过期的会话数据在适当的周期内被删除。 如果需要使用自动登录的功能，请使用其他更加安全的方式自行实现， 而不要通过使用长生命周期的会话 ID 来实现。
  • session.use_trans_sid=Off。 如果确实需要， 你也可以使用透明的会话 ID 管理。 禁用透明会话 ID 管理可以提高安全性， 规避会话 ID 注入和泄露的风险。
  • session.referer_check=[你的源 URL] 当启用 session.use_trans_sid 设置项时， 建议尽可能的联合使用此设置项来降低会话 ID 注入的风险。 假设你的站点是 http://example.com/， 请将此设置项置为 http://example.com/。 需要注意的，如果使用 HTTPS ， 浏览器将不会发送 referrer 请求头， 因此，从安全角度考虑，此设置项并不总是可信赖的。
  • session.cache_limiter=nocache。 确保对于已经认证的会话， 其 HTTP 内容不被缓存。 你应仅允许缓存公开的内容， 否则将面临内容暴露的风险。 如果 HTTP 内容中不包含安全信息或敏感数据，可以使用"private"。 注意，"private"可能会导致客户端缓存私有数据。 仅在 HTTP 内容中不包含任何私有数据的时候，可以使用"public"。
  • session.hash_function="sha256"。 高强度的散列函数可以产生高强度的会话 ID。 虽然即使是使用 MD5 散列算法，要找到相同的散列值也是非常不易的， 但是开发人员还是应该选择 SHA-2 或者更高的散列算法， 例如可以使用 sha384 或者 sha512。

会话模块无法保证存储到会话中的数据仅能被会话创建者可见。 如果要保护会话的完整性， 你需要进行一些额外的工作。 至于如何保护会话，取决于你在会话中所存储的数据。

要保护会话中的数据，通常有额外的成本， 并且有可能影响用户使用的便利性。 例如，要想防范简单的社会工程学方式的攻击， 你需要启用 session.use_only_cookies。 这样一来， 用户需要无条件的接受 cookie， 否则会话功能将无法正常工作。

有几种方式可以将会话 ID 泄露给第三方。 会话 ID 的泄露会导致 第三方可以访问该会话 ID 所关联的所有资源。 如果从你的站点链接到外部站点， 在 URL 中所携带的会话 ID 可能会被外部站点的 "referrer"日志记录。 其次，更加主动的攻击者会尝试监听你的网络通信， 明文传输的会话 ID 可能会被攻击者从网络层面窃取。 对于这种场景的解决方案是在服务器使用 SSL 通信， 并且强制用户使用 SSL 方式访问你的服务。

自 PHP 5.5.2 开始，可以使用 session.use_strict_mode 设置项。当启用该设置项，并且会话保存管理器能够支持此设置项的话， 它会拒绝未经初始化的会话 ID 并且返回一个新创建的会话 ID。 通过强制用户使用新的会话 ID，可以避免遭受攻击。 如果启用了 session.use_trans_sid 设置项，攻击者可以发送包含会话 ID 的 URL 给受害者， 例如：http://example.com/page.php?PHPSESSID=123456789， 那么受害者将会使用攻击者提供的会话 ID 开始会话。 session.use_strict_mode 设置项可以降低这样的风险。

虽然 session.use_strict_mode 设置项可以降低风险， 攻击者依然可以使用自己创建的、已经经过初始化的会话 ID 来欺骗受害人。 只是攻击者需要在发起攻击之前初始化会话 ID 并且要保持这个会话处于活跃状态。

可以对会话 ID cookie 设置 domain，path，httponly，secure 等属性， 但是浏览器中有优先级定义， 攻击者可以利用这个特点设置可以永久使用的会话 ID。 使用 session.use_only_cookies 设置项无法解决此问题。session.use_strict_mode 设置项可以降低风险，当 session.use_strict_mode 为 "On"时，服务器将拒绝未经初始化的会话 ID， 而是返回一个新创建的会话 ID。 这可能会导致受害者面临 DoS 攻击，但是总好过账号被盗取。

session.use_strict_mode 设置项可以缓解这种情况， 但是对于已经经过认证的会话，它就有些力不从心了。 开发人员必须使用 session_regenerate_id() 来进行认证， 并且还需要在向 $_SESSION 中存储认证信息之前调用 session_regenerate_id() 函数。 session_regenerate_id() 可以确保仅在新会话中存储认证后的信息。 例如，如果在认证过程中发生错误， 可能会在旧的会话中保存认证通过的标识。

和 use_strict_mode=On 类似，使用session_regenerate_id() 函数 也可能导致 DoS 攻击（从个人角度来看），但是总好过账号被盗取。 至少应该在用户通过认证之后为其重新生成新的会话 ID。 重新生成会话 ID 可以降低被窃取的风险， 所以应该定期重新生成会话 ID。 开发人员不应依赖会话过期， 因为攻击者可以通过定期使用受害者会话 ID 发起访问以保持会话活跃。 开发人员必须自行实现针对过期会话的处理。

需要提醒的是，默认情况下，session_regenerate_id() 函数并不会删除旧的会话。 对用户而言，原有的已认证的会话可能仍然可用。 如果开发人员需要阻止其他人使用原有的已认证会话， 需要设置 delete_old_session 参数为 TRUE。 但是立即删除旧的会话可能会带来其他影响， 比如在并发访问或者网络不稳定的情况下， 可能会导致会话无效。（译注：意指浏览器携带旧的会话 ID 发起了并发的请求，如果在第一个被服务器接受和处理的请求中删除了旧的会话数据，那么后续的请求将会产生会话无效的问题） 可以在 $_SESSION 中设置一个很短的过期时间来代替直接删除旧的会话， 并且拒绝用户访问旧的会话（过期的会话）。

session.use_only_cookies 和 session_regenerate_id() 联合使用， 在某些情况下可能导致针对个人的 DoS 攻击。 如果发生这种情况， 你可以告知用户清除浏览器的 cookie 并且警告用户可能存在安全隐患。 攻击者可以利用 web 应用的弱点（例如，JavaScript 注入） 或恶意的浏览器插件生成恶意的 cookie。

开发人员一定不要使用长生命周期会话 ID 来实现自动登录的功能， 因为这样会使会话很容易被窃取。 开发人员需要自行实现自动登录的功能， 可以使用比 SHA-2 更安全的散列算法， 例如 SHA-256 或者更高， 并且包含从 /dev/urandom 产生随机数据。 如果用户尚未认证通过，就检查一次性自动登录密钥是否有效。 如果密钥有效，那么对用户进行认证，并且设置新的、安全的散列值。 自动登录密钥的生存周期比认证密钥的更长， 所以要竭尽所能来保护自动登录密钥的安全。 至于 cookie，可以使用 path/httponly/secure 等属性来进行保护。 同时，开发人员还必须为用户提供禁用自动登录以及移除不再使用的自动登录密钥 cookie 的功能。

Session 上传进度
Session 函数
Sessions


Session 函数

Table of Contents

  • session_abort — Discard session array changes and finish session
  • session_cache_expire — 返回当前缓存的到期时间
  • session_cache_limiter — 读取/设置缓存限制器
  • session_commit — session_write_close 的别名
  • session_create_id — Create new session id
  • session_decode — 解码会话数据
  • session_destroy — 销毁一个会话中的全部数据
  • session_encode — 将当前会话数据编码为一个字符串
  • session_gc — Perform session data garbage collection
  • session_get_cookie_params — 获取会话 cookie 参数
  • session_id — 获取/设置当前会话 ID
  • session_is_registered — 检查变量是否在会话中已经注册
  • session_module_name — 获取/设置会话模块名称
  • session_name — 读取/设置会话名称
  • session_regenerate_id — 使用新生成的会话 ID 更新现有会话 ID
  • session_register_shutdown — 关闭会话
  • session_register — Register one or more global variables with the current session
  • session_reset — Re-initialize session array with original values
  • session_save_path — 读取/设置当前会话的保存路径
  • session_set_cookie_params — 设置会话 cookie 参数
  • session_set_save_handler — 设置用户自定义会话存储函数
  • session_start — 启动新会话或者重用现有会话
  • session_status — 返回当前会话状态
  • session_unregister — Unregister a global variable from the current session
  • session_unset — 释放所有的会话变量
  • session_write_close — Write session data and end session
会话和安全
session_abort
Sessions


Discard session array changes and finish session

Session 函数
session_cache_expire
Session 函数
PHP Manual

session_abort

(PHP 5 >= 5.6.0, PHP 7)

session_abort — Discard session array changes and finish session

说明

void session_abort ( void )

session_abort() finishes session without saving data. Thus the original values in session data are kept.

返回值

没有返回值。

参见

  • $_SESSION
  • The session.auto_start configuration directive
  • session_start() - 启动新会话或者重用现有会话
  • session_reset() - Re-initialize session array with original values
  • session_commit() - session_write_close 的别名

Session 函数
session_cache_expire
Session 函数


返回当前缓存的到期时间

session_abort
session_cache_limiter
Session 函数
PHP Manual

session_cache_expire

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

session_cache_expire — 返回当前缓存的到期时间

说明

int session_cache_expire ([ string $new_cache_expire ] )

session_cache_expire() 返回 session.cache_expire 的设定值。

请求开始的时候，缓存到期时间会被重置为 180，并且保存在 session.cache_expire 配置项中。 因此，针对每个请求，需要在 session_start() 函数调用之前 调用 session_cache_expire() 来设置缓存到期时间。

参数

new_cache_expire

如果给定 new_cache_expire ，就使用 new_cache_expire 的值设置当前缓存到期时间。

Note: 仅在 session.cache_limiter 的设置值 不是 nocache 的时候， 才可以设置 new_cache_expire 参数。

返回值

返回 session.cache_expire 的当前设置值， 以分钟为单位，默认值是 180 （分钟）。

范例

Example #1 session_cache_expire() 示例

<?php

/* 设置缓存限制为 "private" */

session_cache_limiter('private');
$cache_limiter = session_cache_limiter();

/* 设置缓存过期时间为 30 分钟 */
session_cache_expire(30);
$cache_expire = session_cache_expire();

/* 开始会话 */

session_start();

echo "The cache limiter is now set to $cache_limiter<br />";
echo "The cached session pages expire after $cache_expire minutes";
?>

参见

  • session.cache_expire
  • session.cache_limiter
  • session_cache_limiter() - 读取/设置缓存限制器

session_abort
session_cache_limiter
Session 函数


读取/设置缓存限制器

session_cache_expire
session_commit
Session 函数
PHP Manual

session_cache_limiter

(PHP 4 >= 4.0.3, PHP 5, PHP 7)

session_cache_limiter — 读取/设置缓存限制器

说明

string session_cache_limiter ([ string $cache_limiter ] )

session_cache_limiter() 返回当前缓存限制器的名称。

缓存限制器定义了向客户端发送的 HTTP 响应头中的缓存控制策略。 客户端或者代理服务器通过检测这个响应头信息来 确定对于页面内容的缓存规则。 设置缓存限制器为 nocache 会进制客户端或者代理服务器缓存内容， public 表示允许客户端或代理服务器缓存内容， private 表示允许客户端缓存， 但是不允许代理服务器缓存内容。

在 private 模式下， 包括 Mozilla 在内的一些浏览器可能无法正确处理 Expire 响应头， 通过使用 private_no_expire 模式可以解决这个问题：在这种模式下， 不会向客户端发送 Expire 响应头。

设置为 '' 可以关闭 自动发送缓存策略响应头的功能。

请求开始的时候，缓存限制器会被重置为默认值，并且存储在 session.cache_limiter 配置项中。 因此，如果要设置缓存限制器，对于每个请求， 都需要在调用 session_start() 函数之前， 调用 session_cache_limiter() 函数来进行设置。

参数

cache_limiter

如果指定了 cache_limiter 参数， 将使用指定值作为缓存限制器的值。

可选的值
值 发送的响应头
public
Expires：（根据 session.cache_expire 的设定计算得出）
Cache-Control： public, max-age=（根据 session.cache_expire 的设定计算得出）
Last-Modified：（会话最后保存时间）
private_no_expire
Cache-Control: private, max-age=（根据 session.cache_expire 的设定计算得出）, pre-check=（根据 session.cache_expire 的设定计算得出）
Last-Modified: （会话最后保存时间）
private
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: private, max-age=（根据 session.cache_expire 的设定计算得出）, pre-check=（根据 session.cache_expire 的设定计算得出）
Last-Modified: （会话最后保存时间）
nocache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache

返回值

返回当前所用的缓存限制器名称。

范例

Example #1 session_cache_limiter() 示例

<?php

/* 设置缓存限制器为 'private' */

session_cache_limiter('private');
$cache_limiter = session_cache_limiter();

echo "The cache limiter is now set to $cache_limiter<br />";
?>

参见

  • session.cache_limiter

session_cache_expire
session_commit
Session 函数


session_write_close 的别名

session_cache_limiter
session_create_id
Session 函数
PHP Manual

session_commit

(PHP 4 >= 4.4.0, PHP 5, PHP 7)

session_commit — session_write_close() 的别名

说明

此函数是该函数的别名：session_write_close()。

session_cache_limiter
session_create_id
Session 函数


Create new session id

session_commit
session_decode
Session 函数
PHP Manual

session_create_id

(PHP 7 >= 7.1.0)

session_create_id — Create new session id

说明

string session_create_id ([ string $prefix ] )

session_create_id() is used to create new session id for the current session. It returns collision free session id.

If session is not active, collision check is omitted.

Session ID is created according to php.ini settings.

It is important to use the same user ID of your web server for GC task script. Otherwise, you may have permission problems especially with files save handler.

参数

prefix

If prefix is specified, new session id is prefixed by prefix. Not all characters are allowed within the session id. Characters in the range a-z A-Z 0-9 , (comma) and - (minus) are allowed.

返回值

session_create_id() returns new collision free session id for the current session. If it is used without active session, it omits collision check.

范例

Example #1 session_create_id() example with session_regenerate_id()

<?php
// My session start function support timestamp management
function my_session_start() {
    session_start();
    // Do not allow to use too old session ID
    if (!empty($_SESSION['deleted_time']) && $_SESSION['deleted_time'] < time() - 180) {
        session_destroy();
        session_start();
    }
}

// My session regenerate id function
function my_session_regenerate_id() {
    // Call session_create_id() while session is active to
    // make sure collision free.
    if (session_status() != PHP_SESSION_ACTIVE) {
        session_start();
    }
    // WARNING: Never use confidential strings for prefix!
    $newid = session_create_id('myprefix-');
    // Set deleted timestamp. Session data must not be deleted immediately for reasons.
    $_SESSION['deleted_time'] = time();
    // Finish session
    session_commit();
    // Make sure to accept user defined session ID
    // NOTE: You must enable use_strict_mode for normal operations.
    ini_set('session.use_strict_mode', 0);
    // Set new custome session ID
    session_id($newid);
    // Start with custome session ID
    session_start();
}

// Make sure use_strict_mode is enabled.
// use_strict_mode is mandatory for security reasons.
ini_set('session.use_strict_mode', 1);
my_session_start();

// Session ID must be regenerated when
//  - User logged in
//  - User logged out
//  - Certain period has passed
my_session_regenerate_id();

// Write useful codes
?>

参见

  • session_regenerate_id() - 使用新生成的会话 ID 更新现有会话 ID
  • session_start() - 启动新会话或者重用现有会话
  • session.use_strict_mode

session_commit
session_decode
Session 函数


解码会话数据

session_create_id
session_destroy
Session 函数
PHP Manual

session_decode

(PHP 4, PHP 5, PHP 7)

session_decode — 解码会话数据

说明

bool session_decode ( string $data )

session_decode() 对 $data 参数中的已经序列化的会话数据进行解码， 并且使用解码后的数据填充 $_SESSION 超级全局变量。

请注意，这里的反序列化方法不同于 unserialize() 函数。 序列化方法时 PHP 内置的，并且可以通过 session.serialize_handler 配置项进行修改。

参数

data

编码后的数据

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • session_encode() - 将当前会话数据编码为一个字符串
  • session.serialize_handler

session_create_id
session_destroy
Session 函数


销毁一个会话中的全部数据

session_decode
session_encode
Session 函数
PHP Manual

session_destroy

(PHP 4, PHP 5, PHP 7)

session_destroy — 销毁一个会话中的全部数据

说明

bool session_destroy ( void )

session_destroy() 销毁当前会话中的全部数据， 但是不会重置当前会话所关联的全局变量， 也不会重置会话 cookie。 如果需要再次使用会话变量， 必须重新调用 session_start() 函数。

为了彻底销毁会话，比如在用户退出登录的时候，必须同时重置会话 ID。 如果是通过 cookie 方式传送会话 ID 的，那么同时也需要 调用 setcookie() 函数来 删除客户端的会话 cookie。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 销毁会话数据以及 $_SESSION

<?php
// 初始化会话。
// 如果要使用会话，别忘了现在就调用：
session_start();

// 重置会话中的所有变量
$_SESSION = array();

// 如果要清理的更彻底，那么同时删除会话 cookie
// 注意：这样不但销毁了会话中的数据，还同时销毁了会话本身
if (ini_get("session.use_cookies")) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 42000,
        $params["path"], $params["domain"],
        $params["secure"], $params["httponly"]
    );
}

// 最后，销毁会话
session_destroy();
?>

注释

Note:

对于旧版本中不使用 $_SESSION 的代码， 仅能使用 session_unset() 来完成会话销毁工作。

参见

  • unset() - 释放给定的变量
  • setcookie() - Send a cookie

session_decode
session_encode
Session 函数


将当前会话数据编码为一个字符串

session_destroy
session_gc
Session 函数
PHP Manual

session_encode

(PHP 4, PHP 5, PHP 7)

session_encode — 将当前会话数据编码为一个字符串

说明

string session_encode ( void )

session_encode() 返回一个序列化后的字符串，包含被编码的、储存于 $_SESSION 超全局变量中的当前会话数据。

请注意，序列方法 和 serialize() 是不一样的。 该序列方法是内置于 PHP 的，能够通过设置 session.serialize_handler 来设置。

返回值

返回当前会话编码后的内容。

注释

Warning

在调用 session_decode() 之前必须先调用 session_start()。

参见

  • session_decode() - 解码会话数据
  • session.serialize_handler

session_destroy
session_gc
Session 函数


Perform session data garbage collection

session_encode
session_get_cookie_params
Session 函数
PHP Manual

session_gc

(No version information available, might only be in Git)

session_gc — Perform session data garbage collection

说明

int session_gc ( void )

session_gc() is used to perform session data GC(garbage collection). PHP does probability based session GC by default.

Probability based GC works somewhat but it has few problems. 1) Low traffic site's session data may not be deleted within preferred duration. 2) High traffic site's may have too frequent GC. 3) GC is performed on the user's request and the user will experience GC delay.

Therefore, it is recommended to execute GC periodically for production systems. e.g. Use "cron" for UNIX like systems. Make sure to disable probability based GC by setting session.gc_probability to 0.

返回值

session_gc() returns number of deleted session data for success, FALSE for failure.

Old save handlers do not return number of deleted session data, but only success/failure flag. If this is the case, number of deleted session data became 1 regardless of actually deleted data.

范例

Example #1 session_gc() example for task managers like cron

<?php
// Note: This script should be executed by the same user of web server process.

// Need active session to initialize session data storage access.
session_start();

// Executes GC immediately
session_gc();

// Clean up session ID created by session_gc()
session_destroy();
?>

Example #2 session_gc() example for user accessible script

<?php
// Note: session_gc() is recommended to be used by task manager script, but
// it may be used as follows.

// Used for last GC time check
$gc_time = '/tmp/php_session_last_gc';
$gc_period = 1800;

session_start();
// Execute GC only when GC period elapsed.
// i.e. Calling session_gc() every request is waste of resources.
if (file_exists($gc_time)) {
    if (filemtime($gc_time) < time() - $gc_period) {
        session_gc();
        touch($gc_time);
    }
} else {
    touch($gc_time);
}
?>

参见

  • session_start() - 启动新会话或者重用现有会话
  • session_destroy() - 销毁一个会话中的全部数据
  • session.gc_probability

session_encode
session_get_cookie_params
Session 函数


获取会话 cookie 参数

session_gc
session_id
Session 函数
PHP Manual

session_get_cookie_params

(PHP 4, PHP 5, PHP 7)

session_get_cookie_params — 获取会话 cookie 参数

说明

array session_get_cookie_params ( void )

获取会话 cookie 的参数。

返回值

返回一个包含当前会话 cookie 信息的数组：

  • "lifetime" - cookie 的生命周期，以秒为单位。
  • "path" - cookie 的访问路径。
  • "domain" - cookie 的域。
  • "secure" - 仅在使用安全连接时发送 cookie。
  • "httponly" - 只能通过 http 协议访问 cookie

更新日志

版本 | 说明
5.2.0 | 在返回数组中加入 "httponly"。
4.0.4 | 在返回数组中加入 "secure"。

参见

  • session.cookie_lifetime
  • session.cookie_path
  • session.cookie_domain
  • session.cookie_secure
  • session.cookie_httponly
  • session_set_cookie_params() - 设置会话 cookie 参数

session_gc
session_id
Session 函数


获取/设置当前会话 ID

session_get_cookie_params
session_is_registered
Session 函数
PHP Manual

session_id

(PHP 4, PHP 5, PHP 7)

session_id — 获取/设置当前会话 ID

说明

string session_id ([ string $id ] )

session_id() 可以用来获取/设置 当前会话 ID。

为了能够将会话 ID 很方便的附加到 URL 之后， 你可以使用常量 SID 获取以字符串格式表达的会话名称和 ID。 请参考 会话处理。

参数

id

如果指定了 id 参数的值， 则使用指定值作为会话 ID。 必须在调用 session_start() 函数之前调用 session_id() 函数。 不同的会话管理器对于会话 ID 中可以使用的字符有不同的限制。 例如文件会话管理器仅允许会话 ID 中使用以下字符：a-z A-Z 0-9 , （逗号）和 - （减号）

Note: 如果使用 cookie 方式传送会话 ID，并且指定了 id 参数， 在调用 session_start() 之后都会向客户端发送新的 cookie， 无论当前的会话 ID 和新指定的会话 ID 是否相同。

返回值

session_id() 返回当前会话ID。 如果当前没有会话，则返回空字符串（""）。

参见

  • session_regenerate_id() - 使用新生成的会话 ID 更新现有会话 ID
  • session_start() - 启动新会话或者重用现有会话
  • session_set_save_handler() - 设置用户自定义会话存储函数
  • session.save_handler

session_get_cookie_params
session_is_registered
Session 函数


检查变量是否在会话中已经注册

session_id
session_module_name
Session 函数
PHP Manual

session_is_registered

(PHP 4, PHP 5 < 5.4.0)

session_is_registered — 检查变量是否在会话中已经注册

说明

bool session_is_registered ( string $name )

检查变量是否已经在会话中注册。

Warning

本函数已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

参数

name

变量名称。

返回值

session_is_registered() 返回 TRUE 则表示 name 变量已经在当前会话中注册使用，否则返回 FALSE 。

注释

Note:

如果使用 $_SESSION (或 $HTTP_SESSION_VARS for PHP 4.0.6 or less),可以使用 isset() 检查变量是否在 $_SESSION 中注册使用。

Caution

如果使用 $_SESSION
(或 $HTTP_SESSION_VARS), 则不要使用
session_register(),
session_is_registered() 和
session_unregister().

session_id
session_module_name
Session 函数


获取/设置会话模块名称

session_is_registered
session_name
Session 函数
PHP Manual

session_module_name

(PHP 4, PHP 5, PHP 7)

session_module_name — 获取/设置会话模块名称

说明

string session_module_name ([ string $module ] )

session_module_name() 获取或设置会话模块名称。

参数

module

如果指定 module 参数，则使用 指定值作为会话模块。

返回值

返回当前所用的会话模块名称。

session_is_registered
session_name
Session 函数


读取/设置会话名称

session_module_name
session_regenerate_id
Session 函数
PHP Manual

session_name

(PHP 4, PHP 5, PHP 7)

session_name — 读取/设置会话名称

说明

string session_name ([ string $name ] )

session_name() 函数返回当前会话名称。 如果指定 name 参数， session_name() 函数会更新会话名称， 并返回 原来的 会话名称。

请求开始的时候，会话名称会被重置并且存储到 session.name 配置项。 因此，要想设置会话名称，那么对于每个请求，都需要在 调用 session_start() 或者 session_register() 函数 之前调用 session_name() 函数。

参数

name

用在 cookie 或者 URL 中的会话名称， 例如：PHPSESSID。 只能使用字母和数字作为会话名称，建议尽可能的短一些， 并且是望文知意的名字（对于启用了 cookie 警告的用户来说，方便其判断是否要允许此 cookie）。 如果指定了 name 参数， 那么当前会话也会使用指定值作为名称。

Warning

会话名称至少需要一个字母，不能全部都使用数字， 否则，每次都会生成一个新的会话 ID。

返回值

返回当前会话名称。如果指定 name 参数，那么此函数会更新会话名称，并且 返回 原来的 会话名称。

范例

Example #1 session_name() 示例

<?php

/* 设置会话名称为 WebsiteID */

$previous_name = session_name("WebsiteID");

echo "The previous session name was $previous_name<br />";
?>

参见

  • session.name 配置指示

session_module_name
session_regenerate_id
Session 函数


使用新生成的会话 ID 更新现有会话 ID

session_name
session_register_shutdown
Session 函数
PHP Manual

session_regenerate_id

(PHP 4 >= 4.3.2, PHP 5, PHP 7)

session_regenerate_id — 使用新生成的会话 ID 更新现有会话 ID

说明

bool session_regenerate_id ([ bool $delete_old_session = false ] )

session_regenerate_id() 在不修改当前会话中数据的前提下使用新的 ID 替换原有会话 ID。

如果启用了 session.use_trans_sid 选项， 那么必须在调用 session_regenerate_id() 函数之后开始进行输出工作， 否则会导致使用原有的会话 ID。

参数

delete_old_session

是否删除原 ID 所关联的会话存储文件。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
4.3.3 | 如果启用会话 cookie， 调用 session_regenerate_id() 函数 会使用新的会话 ID 来生成 cookie 并发送给客户端。
5.1.0 | 加入 delete_old_session 参数。

范例

Example #1 A session_regenerate_id() 示例

<?php
session_start();

$old_sessionid = session_id();

session_regenerate_id();

$new_sessionid = session_id();

echo "Old Session: $old_sessionid<br />";
echo "New Session: $new_sessionid<br />";

print_r($_SESSION);
?>

参见

  • session_id() - 获取/设置当前会话 ID
  • session_start() - 启动新会话或者重用现有会话
  • session_name() - 读取/设置会话名称

session_name
session_register_shutdown
Session 函数


关闭会话

session_regenerate_id
session_register
Session 函数
PHP Manual

session_register_shutdown

(PHP >=5.4.0)

session_register_shutdown — 关闭会话

说明

void session_register_shutdown ( void )

将 session_write_close() 函数注册为关闭会话的函数。

参数

此函数没有参数。

返回值

没有返回值。

错误／异常

如果函数调用失败，触发 E_WARNING 级别的错误。

session_regenerate_id
session_register
Session 函数


Register one or more global variables with the current session

session_register_shutdown
session_reset
Session 函数
PHP Manual

session_register

(PHP 4, PHP 5 < 5.4.0)

session_register — Register one or more global variables with the current session

说明

bool session_register ( mixed $name [, mixed $... ] )

session_register() accepts a variable number of arguments, any of which can be either a string holding the name of a variable or an array consisting of variable names or other arrays. For each name, session_register() registers the global variable with that name in the current session.

You can also create a session variable by simply setting the appropriate member of the $_SESSION array.

<?php
// Use of session_register() is deprecated
$barney = "A big purple dinosaur.";
session_register("barney");

// Use of $_SESSION is preferred
$_SESSION["zim"] = "An invader from another planet.";
?>

If session_start() was not called before this function is called, an implicit call to session_start() with no parameters will be made. $_SESSION does not mimic this behavior and requires session_start() before use.

Warning

本函数已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

参数

name

A string holding the name of a variable or an array consisting of variable names or other arrays.

...

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Caution

If you want your script to work regardless of register_globals, you need to instead use the $_SESSION array as $_SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where the PHP directive register_globals is disabled.

Note: register_globals 重要说明：

自 PHP 4.2.0 起，PHP 指令 register_globals 的默认值为 off。PHP 社区鼓励开发者不要依赖于此指令, 用其他手段替代，例如superglobals。

Caution

This registers a global variable. If you want to register a session variable from within a function, you need to make sure to make it global using the global keyword or the $GLOBALS[] array, or use the special session arrays as noted below.

Caution

If you are using $_SESSION, do not use
session_register(),
session_is_registered(), and
session_unregister().

Note:

It is currently impossible to register resource variables in a session. For example, you cannot create a connection to a database and store the connection id as a session variable and expect the connection to still be valid the next time the session is restored. PHP functions that return a resource are identified by having a return type of resource in their function definition. A list of functions that return resources are available in the resource types appendix.

If $_SESSION is used, assign values to $_SESSION. For example: $_SESSION['var'] = 'ABC';

参见

  • session_is_registered() - 检查变量是否在会话中已经注册
  • session_unregister() - Unregister a global variable from the current session
  • $_SESSION

session_register_shutdown
session_reset
Session 函数


Re-initialize session array with original values

session_register
session_save_path
Session 函数
PHP Manual

session_reset

(PHP 5 >= 5.6.0, PHP 7)

session_reset — Re-initialize session array with original values

说明

void session_reset ( void )

session_reset() reinitializes a session with original values stored in session storage. This function requires an active session and discards changes in $_SESSION.

返回值

没有返回值。

参见

  • $_SESSION
  • The session.auto_start configuration directive
  • session_start() - 启动新会话或者重用现有会话
  • session_abort() - Discard session array changes and finish session
  • session_commit() - session_write_close 的别名

session_register
session_save_path
Session 函数


读取/设置当前会话的保存路径

session_reset
session_set_cookie_params
Session 函数
PHP Manual

session_save_path

(PHP 4, PHP 5, PHP 7)

session_save_path — 读取/设置当前会话的保存路径

说明

string session_save_path ([ string $path ] )

session_save_path() 返回当前会话的保存路径。

参数

path

指定会话数据保存的路径。 必须在调用 session_start() 函数之前调用 session_save_path() 函数。

Note:

在某些操作系统上，建议使用可以高效处理 大量小尺寸文件的文件系统上的路径来保存会话数据。 例如，在 Linux 平台上，对于会话数据保存的工作而言，reiserfs 文件系统会比 ext2fs 文件系统能够提供更好的性能。

返回值

返回保存会话数据的路径。

参见

  • session.save_path 配置指示。

session_reset
session_set_cookie_params
Session 函数


设置会话 cookie 参数

session_save_path
session_set_save_handler
Session 函数
PHP Manual

session_set_cookie_params

(PHP 4, PHP 5, PHP 7)

session_set_cookie_params — 设置会话 cookie 参数

说明

void session_set_cookie_params ( int $lifetime [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]] )

Cookie 参数可以在 php.ini 文件中定义，本函数仅在当前脚本执行过程中有效。 因此，如果要通过函数修改 cookie 参数，需要对每个请求都要 在调用 session_start() 函数之前调用 session_set_cookie_params() 函数。

本函数会修改运行期 ini 设置值， 可以通过 ini_get() 函数获取这些值。

参数

lifetime

Cookie 的 生命周期，以秒为单位。

path

此 cookie 的有效 路径。 on the domain where 设置为"/"表示对于本域上所有的路径此 cookie 都可用。

domain

Cookie 的作用 域。 例如："www.php.net"。 如果要让 cookie 在所有的子域中都可用，此参数必须以点（.）开头，例如：".php.net"。

secure

设置为 TRUE 表示 cookie 仅在使用 安全 链接时可用。

httponly

设置为 TRUE 表示 PHP 发送 cookie 的时候会使用 httponly 标记。

返回值

没有返回值。

更新日志

版本 | 说明
5.2.0 | 加入 httponly 参数。

参见

  • session.cookie_lifetime
  • session.cookie_path
  • session.cookie_domain
  • session.cookie_secure
  • session.cookie_httponly
  • session_get_cookie_params() - 获取会话 cookie 参数

session_save_path
session_set_save_handler
Session 函数


设置用户自定义会话存储函数

session_set_cookie_params
session_start
Session 函数
PHP Manual

session_set_save_handler

(PHP 4, PHP 5, PHP 7)

session_set_save_handler — 设置用户自定义会话存储函数

说明

bool session_set_save_handler ( callable $open , callable $close , callable $read , callable $write , callable $destroy , callable $gc [, callable $create_sid ] )

自 PHP 5.4 开始，可以使用下面的方式来注册自定义会话存储函数：

bool session_set_save_handler ( SessionHandlerInterface $sessionhandler [, bool $register_shutdown = true ] )

session_set_save_handler() 设置用户自定义 会话存储函数。 如果想使用 PHP 内置的会话存储机制之外的方式， 可以使用本函数。 例如，可以自定义会话存储函数来将会话数据存储到数据库。

参数

本函数有 2 种原型：

sessionhandler

实现了 SessionHandlerInterface 接口的对象， 例如 SessionHandler。 自 PHP 5.4 之后可以使用。

register_shutdown

将函数 session_write_close() 注册为 register_shutdown_function() 函数。

或者
open(string $savePath, string $sessionName)

open 回调函数类似于类的构造函数， 在会话打开的时候会被调用。 这是自动开始会话或者通过调用 session_start() 手动开始会话 之后第一个被调用的回调函数。 此回调函数操作成功返回 TRUE，反之返回 FALSE。

close()

close 回调函数类似于类的析构函数。 在 write 回调函数调用之后调用。 当调用 session_write_close() 函数之后，也会调用 close 回调函数。 此回调函数操作成功返回 TRUE，反之返回 FALSE。

read(string $sessionId)

如果会话中有数据，read 回调函数必须返回将会话数据编码（序列化）后的字符串。 如果会话中没有数据，read 回调函数返回空字符串。

在自动开始会话或者通过调用 session_start() 函数手动开始会话之后，PHP 内部调用 read 回调函数来获取会话数据。 在调用 read 之前，PHP 会调用 open 回调函数。

read 回调返回的序列化之后的字符串格式必须与 write 回调函数保存数据时的格式完全一致。 PHP 会自动反序列化返回的字符串并填充 $_SESSION 超级全局变量。 虽然数据看起来和 serialize() 函数很相似， 但是需要提醒的是，它们是不同的。 请参考： session.serialize_handler。

write(string $sessionId, string $data)

在会话保存数据时会调用 write 回调函数。 此回调函数接收当前会话 ID 以及 $_SESSION 中数据序列化之后的字符串作为参数。 序列化会话数据的过程由 PHP 根据 session.serialize_handler 设定值来完成。

序列化后的数据将和会话 ID 关联在一起进行保存。 当调用 read 回调函数获取数据时，所返回的数据必须要和 传入 write 回调函数的数据完全保持一致。

PHP 会在脚本执行完毕或调用 session_write_close() 函数之后调用此回调函数。 注意，在调用完此回调函数之后，PHP 内部会调用 close 回调函数。

Note:

PHP 会在输出流写入完毕并且关闭之后 才调用 write 回调函数， 所以在 write 回调函数中的调试信息不会输出到浏览器中。 如果需要在 write 回调函数中使用调试输出， 建议将调试输出写入到文件。

destroy($sessionId)

当调用 session_destroy() 函数， 或者调用 session_regenerate_id() 函数并且设置 destroy 参数为 TRUE 时， 会调用此回调函数。此回调函数操作成功返回 TRUE，反之返回 FALSE。

gc($lifetime)

为了清理会话中的旧数据，PHP 会不时的调用垃圾收集回调函数。 调用周期由 session.gc_probability 和 session.gc_divisor 参数控制。 传入到此回调函数的 lifetime 参数由 session.gc_maxlifetime 设置。 此回调函数操作成功返回 TRUE，反之返回 FALSE。

create_sid()

当需要新的会话 ID 时被调用的回调函数。 回调函数被调用时无传入参数， 其返回值应该是一个字符串格式的、有效的会话 ID。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 自定义会话管理器： 完整代码请参见 SessionHandlerInterface。

下列代码适用于 PHP 5.4.0 及以上版本。 这里仅列出了调用方式，完整代码请参见 SessionHandlerInterface。

这里使用了 session_set_save_handler() 函数的 OOP 原型 并且使用第二个参数来注册 shutdown 函数。 当将对象注册为会话保存管理器时，建议使用这种方式。

<?php
class MySessionHandler implements SessionHandlerInterface
{
    // 在这里实现接口
}

$handler = new MySessionHandler();
session_set_save_handler($handler, true);
session_start();

// 现在可以使用 $_SESSION 保存以及获取数据了

Example #2 使用对象自定义会话保存管理器

下列代码适用于 PHP 5.4.0 之前的版本。

下例演示了基于文件的会话数据存储， 和 PHP 默认的 files 存储器很相似。 通过对此示例代码进行扩展， 你可以很方便的实现使用数据库保存会话数据的功能。

针对于 PHP 5.4.0 之前的版本， 通过调用 register_shutdown_function() 函数 来注册 session_write_close() 回调函数。 这也是我们建议的方式。

<?php
class FileSessionHandler
{
    private $savePath;

    function open($savePath, $sessionName)
    {
        $this->savePath = $savePath;
        if (!is_dir($this->savePath)) {
            mkdir($this->savePath, 0777);
        }

        return true;
    }

    function close()
    {
        return true;
    }

    function read($id)
    {
        return (string)@file_get_contents("$this->savePath/sess_$id");
    }

    function write($id, $data)
    {
        return file_put_contents("$this->savePath/sess_$id", $data) === false ? false : true;
    }

    function destroy($id)
    {
        $file = "$this->savePath/sess_$id";
        if (file_exists($file)) {
            unlink($file);
        }

        return true;
    }

    function gc($maxlifetime)
    {
        foreach (glob("$this->savePath/sess_*") as $file) {
            if (filemtime($file) + $maxlifetime < time() && file_exists($file)) {
                unlink($file);
            }
        }

        return true;
    }
}

$handler = new FileSessionHandler();
session_set_save_handler(
    array($handler, 'open'),
    array($handler, 'close'),
    array($handler, 'read'),
    array($handler, 'write'),
    array($handler, 'destroy'),
    array($handler, 'gc')
    );

// 下面这行代码可以防止使用对象作为会话保存管理器时可能引发的非预期行为
register_shutdown_function('session_write_close');

session_start();
// 现在可以使用 $_SESSION 保存以及获取数据了

注释

Warning

在脚本执行完毕之后，PHP 内部会清除对象， 所以有可能不调用 write 和 close 回调函数。 这样可能会引发非预期的行为，所以当使用对象作为会话保存管理器时， 需要通过注册 shutdown 回调函数来规避风险。 通常，你可以通过调用 register_shutdown_function() 函数 来注册 'session_write_close' 回调函数。

在 PHP 5.4.0 中，可以调用 session_register_shutdown() 函数来注册 shutdown 回调函数。 如果你使用 session_set_save_handler() 的 OOP 原型， 那么仅需设置 "register shutdown" 为 TRUE 即可。

Warning

在 PHP 5.0.5 中，在对象销毁之后才会调用 write 和 close 回调函数， 所以，在这两个回调函数中不可以使用对象，也不可以抛出异常。 如果在函数中抛出异常，PHP 既不会捕获它，也不会跟踪它， 这样会导致程序异常终止。 但是对象析构函数可以使用会话。

可以在析构函数中调用 session_write_close() 函数来解决这个问题。 但是注册 shutdown 回调函数才是更加可靠的做法。

Warning

如果会话在脚本结束后关闭，对于某些 SAPI 而言，当前工作目录可能已经被改变。 可以调用 session_write_close() 函数在脚本执行结束之前关闭会话。

更新日志

版本 | 说明
5.5.1 | 加入可选参数 create_sid。
5.4.0 | 加入 SessionHandlerInterface 接口以及 SessionHandler 类，以方便用户实现自定义的会话保存管理器。

参见

  • session.save_handler 配置指示
  • session.serialize_handler 配置指示
  • register_shutdown_function() - Register a function for execution on shutdown
  • session_register_shutdown() - 关闭会话 PHP 5.4.0+

session_set_cookie_params
session_start
Session 函数


启动新会话或者重用现有会话

session_set_save_handler
session_status
Session 函数
PHP Manual

session_start

(PHP 4, PHP 5, PHP 7)

session_start — 启动新会话或者重用现有会话

说明

bool session_start ([ array $options = [] ] )

session_start() 会创建新会话或者重用现有会话。 如果通过 GET 或者 POST 方式，或者使用 cookie 提交了会话 ID， 则会重用现有会话。

当会话自动开始或者通过 session_start() 手动开始的时候， PHP 内部会调用会话管理器的 open 和 read 回调函数。 会话管理器可能是 PHP 默认的， 也可能是扩展提供的（SQLite 或者 Memcached 扩展）， 也可能是通过 session_set_save_handler() 设定的用户自定义会话管理器。 通过 read 回调函数返回的现有会话数据（使用特殊的序列化格式存储）， PHP 会自动反序列化数据并且填充 $_SESSION 超级全局变量。

要想使用命名会话，请在调用 session_start() 函数 之前调用 session_name() 函数。

如果启用了 session.use_trans_sid 选项， session_start() 函数会注册一个内部输出管理器， 该输出管理器完成 URL 重写的工作。

如果用户联合使用 ob_start() 和 ob_gzhandler 函数， 那么函数的调用顺序会影响输出结果。 例如，必须在开始会话之前调用 ob_gzhandler 函数完成注册。

参数

options

此参数是一个关联数组，如果提供，那么会用其中的项目覆盖 会话配置指示 中的配置项。此数组中的键无需包含 session. 前缀。

除了常规的会话配置指示项， 还可以在此数组中包含 read_and_close 选项。如果将此选项的值设置为 TRUE， 那么会话文件会在读取完毕之后马上关闭， 因此，可以在会话数据没有变动的时候，避免不必要的文件锁。

返回值

成功开始会话返回 TRUE ，反之返回 FALSE

更新日志

版本 | 说明
7.0.0 | 新加 options 参数。
5.3.0 | 如果函数调用失败返回 FALSE， 之前版本返回了 TRUE。
4.3.3 | 在 PHP 4.3.3 中， 会话开始之后调用 session_start() 函数 会引发 E_NOTICE 级别的错误， 并且第二次请求开始会话的调用会被忽略。

范例

基本的会话示例

Example #1 page1.php

<?php
// page1.php

session_start();

echo 'Welcome to page #1';

$_SESSION['favcolor'] = 'green';
$_SESSION['animal']   = 'cat';
$_SESSION['time']     = time();

// 如果使用 cookie 方式传送会话 ID
echo '<br /><a href="page2.php">page 2</a>';

// 如果不是使用 cookie 方式传送会话 ID，则使用 URL 改写的方式传送会话 ID
echo '<br /><a href="page2.php?' . SID . '">page 2</a>';
?>

请求 page1.php 页面之后， 第二个页面 page2.php 会包含会话数据。 请查阅 会话参考 获取更多关于 会话 ID 传送的信息， 在该参考页面中有关于常量 SID 的详细说明。

Example #2 page2.php

<?php
// page2.php

session_start();

echo 'Welcome to page #2<br />';

echo $_SESSION['favcolor']; // green
echo $_SESSION['animal'];   // cat
echo date('Y m d H:i:s', $_SESSION['time']);

// 类似 page1.php 中的代码，你可能需要在这里处理使用 SID 的场景
echo '<br /><a href="page1.php">page 1</a>';
?>

调用 session_start() 的时候指定选项

Example #3 覆盖 Cookie 超时时间设定

<?php
// 设置 cookie 的有效时间为 1 天
session_start([
    'cookie_lifetime' => 86400,
]);
?>

Example #4 读取会话之后立即关闭会话存储文件

<?php
// 如果确定不修改会话中的数据，
// 我们可以在会话文件读取完毕之后立即关闭它
// 来避免由于给会话文件加锁导致其他页面阻塞
session_start([
    'cookie_lifetime' => 86400,
    'read_and_close'  => true,
]);

注释

Note:

要使用基于 cookie 的会话， 必须在输出开始之前调用 session_start() 函数。

Note:

建议使用 zlib.output_compression 来替代 ob_gzhandler()。

Note:

根据配置不同，本函数会发送几个 HTTP 响应头。 参考 session_cache_limiter() 来自定义 HTTP 响应头。

参见

  • $_SESSION
  • session.auto_start 配置指示
  • session_id() - 获取/设置当前会话 ID

session_set_save_handler
session_status
Session 函数


返回当前会话状态

session_start
session_unregister
Session 函数
PHP Manual

session_status

(PHP >=5.4.0)

session_status — 返回当前会话状态

说明

int session_status ( void )

session_status() 被用于返回当前会话状态。

返回值

  • PHP_SESSION_DISABLED 会话是被禁用的。
  • PHP_SESSION_NONE 会话是启用的，但不存在当前会话。
  • PHP_SESSION_ACTIVE 会话是启用的，而且存在当前会话。

参见

  • session_start() - 启动新会话或者重用现有会话
session_start
session_unregister
Session 函数


Unregister a global variable from the current session

session_status
session_unset
Session 函数
PHP Manual

session_unregister

(PHP 4, PHP 5 < 5.4.0)

session_unregister — Unregister a global variable from the current session

说明

bool session_unregister ( string $name )

session_unregister() unregisters the global variable named name from the current session.

Warning

本函数已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

参数

name

The variable name.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note:

If $_SESSION is used, use unset() to unregister a session variable. Do not unset() $_SESSION itself as this will disable the special function of the $_SESSION superglobal.

Caution

This function does not unset the corresponding global variable for name, it only prevents the variable from being saved as part of the session. You must call unset() to remove the corresponding global variable.

Caution

If you are using $_SESSION (or
$HTTP_SESSION_VARS), do not use
session_register(),
session_is_registered() and
session_unregister().

session_status
session_unset
Session 函数


释放所有的会话变量

session_unregister
session_write_close
Session 函数
PHP Manual

session_unset

(PHP 4, PHP 5, PHP 7)

session_unset — 释放所有的会话变量

说明

void session_unset ( void )

session_unset() 会释放当前会话注册的所有会话变量。

返回值

没有返回值。

注释

Note:

如果使用的是 $_SESSION (或者PHP 4.0.6或更早版本的 $HTTP_SESSION_VARS ) ，请使用 unset() 去 注销会话变量，即 unset ($_SESSION['varname']);.

Caution

请不要使用unset($_SESSION)来释放整个$_SESSION， 因为它将会禁用通过全局$_SESSION去注册会话变量

session_unregister
session_write_close
Session 函数


Write session data and end session

session_unset
SessionHandler
Session 函数
PHP Manual

session_write_close

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

session_write_close — Write session data and end session

说明

void session_write_close ( void )

End the current session and store session data.

Session data is usually stored after your script terminated without the need to call session_write_close(), but as session data is locked to prevent concurrent writes only one script may operate on a session at any time. When using framesets together with sessions you will experience the frames loading one by one due to this locking. You can reduce the time needed to load all the frames by ending the session as soon as all changes to session variables are done.

返回值

没有返回值。

参见

  • The session_register_shutdown() - 关闭会话

session_unset
SessionHandler
Session 函数


The SessionHandler class

(PHP 5 >= 5.4.0, PHP 7)

简介

SessionHandler is a special class that can be used to expose the current internal PHP session save handler by inheritance. There are seven methods which wrap the seven internal session save handler callbacks (open, close, read, write, destroy, gc and create_sid). By default, this class will wrap whatever internal save handler is set as defined by the session.save_handler configuration directive which is usually files by default. Other internal session save handlers are provided by PHP extensions such as SQLite (as sqlite), Memcache (as memcache), and Memcached (as memcached).

When a plain instance of SessionHandler is set as the save handler using session_set_save_handler() it will wrap the current save handlers. A class extending from SessionHandler allows you to override the methods or intercept or filter them by calls the parent class methods which ultimately wrap the interal PHP session handlers.

This allows you, for example, to intercept the read and write methods to encrypt/decrypt the session data and then pass the result to and from the parent class. Alternatively one might chose to entirely override a method like the garbage collection callback gc.

Because the SessionHandler wraps the current internal save handler methods, the above example of encryption can be applied to any internal save handler without having to know the internals of the handlers.

To use this class, first set the save handler you wish to expose using session.save_handler and then pass an instance of SessionHandler or one extending it to session_set_save_handler().

Please note the callback methods of this class are designed to be called internally by PHP and are not meant to be called from user-space code. The return values are equally processed internally by PHP. For more information on the session workflow, please refer session_set_save_handler().

类摘要

SessionHandler implements SessionHandlerInterface {
/* 方法 */
public bool close ( void )
public string create_sid ( void )
public bool destroy ( string $session_id )
public bool gc ( int $maxlifetime )
public bool open ( string $save_path , string $session_name )
public string read ( string $session_id )
public bool write ( string $session_id , string $session_data )
}
Warning

This class is designed to expose the current internal PHP session save handler, if you want to write your own custom save handlers, please implement the SessionHandlerInterface interface instead of extending from SessionHandler.

更新日志

版本 | 说明
5.5.1 | Added SessionHandler::create_sid().

Example #1 Using SessionHandler to add encryption to internal PHP save handlers.

<?php

 /**
  * decrypt AES 256
  *
  * @param data $edata
  * @param string $password
  * @return decrypted data
  */
function decrypt($edata, $password) {
    $data = base64_decode($edata);
    $salt = substr($data, 0, 16);
    $ct = substr($data, 16);

    $rounds = 3; // depends on key length
    $data00 = $password.$salt;
    $hash = array();
    $hash[0] = hash('sha256', $data00, true);
    $result = $hash[0];
    for ($i = 1; $i < $rounds; $i++) {
        $hash[$i] = hash('sha256', $hash[$i - 1].$data00, true);
        $result .= $hash[$i];
    }
    $key = substr($result, 0, 32);
    $iv  = substr($result, 32,16);

    return openssl_decrypt($ct, 'AES-256-CBC', $key, true, $iv);
  }

/**
 * crypt AES 256
 *
 * @param data $data
 * @param string $password
 * @return base64 encrypted data
 */
function encrypt($data, $password) {
    // Set a random salt
    $salt = openssl_random_pseudo_bytes(16);

    $salted = '';
    $dx = '';
    // Salt the key(32) and iv(16) = 48
    while (strlen($salted) < 48) {
      $dx = hash('sha256', $dx.$password.$salt, true);
      $salted .= $dx;
    }

    $key = substr($salted, 0, 32);
    $iv  = substr($salted, 32,16);

    $encrypted_data = openssl_encrypt($data, 'AES-256-CBC', $key, true, $iv);
    return base64_encode($salt . $encrypted_data);
}

class EncryptedSessionHandler extends SessionHandler
{
    private $key;

    public function __construct($key)
    {
        $this->key = $key;
    }

    public function read($id)
    {
        $data = parent::read($id);

        if (!$data) {
            return "";
        } else {
            return decrypt($data, $this->key);
        }
    }

    public function write($id, $data)
    {
        $data = encrypt($data, $this->key);

        return parent::write($id, $data);
    }
}

// we'll intercept the native 'files' handler, but will equally work
// with other internal native handlers like 'sqlite', 'memcache' or 'memcached'
// which are provided by PHP extensions.
ini_set('session.save_handler', 'files');

$key = 'secret_string';
$handler = new EncryptedSessionHandler($key);
session_set_save_handler($handler, true);
session_start();

// proceed to set and retrieve values by key from $_SESSION

Note:

Since this class' methods are designed to be called internally by PHP as part of the normal session workflow, child class calls to parent methods (i.e. the actual internal native handlers) will return FALSE unless the session has actually been started (either automatically, or by explicit session_start(). This is important to consider when writing unit tests where the class methods might be invoked manually.

Table of Contents

  • SessionHandler::close — Close the session
  • SessionHandler::create_sid — Return a new session ID
  • SessionHandler::destroy — Destroy a session
  • SessionHandler::gc — Cleanup old sessions
  • SessionHandler::open — Initialize session
  • SessionHandler::read — Read session data
  • SessionHandler::write — Write session data
session_write_close
SessionHandler::close
Sessions


Close the session

SessionHandler
SessionHandler::create_sid
SessionHandler
PHP Manual

SessionHandler::close

(PHP 5 >= 5.4.0, PHP 7)

SessionHandler::close — Close the session

说明

public bool SessionHandler::close ( void )

Closes the current session. This method is automatically executed internally by PHP when closing the session, or explicitly via session_write_close() (which first calls the SessionHandler::write()).

This method wraps the internal PHP save handler defined in the session.save_handler ini setting that was set before this handler was activated by session_set_save_handler().

If this class is extended by inheritiance, calling the parent close method will invoke the wrapper for this method and therefor invoke the associated internal callback. This allows the method to be overidden and or intercepted.

For more information on what this method is expected to do, please refer to the documentation at SessionHandlerInterface::close().

参数

此函数没有参数。

返回值

会话存储的返回值（通常成功返回 0，失败返回 1）。

SessionHandler
SessionHandler::create_sid
SessionHandler


Return a new session ID

SessionHandler::close
SessionHandler::destroy
SessionHandler
PHP Manual

SessionHandler::create_sid

(PHP 5 >= 5.5.1, PHP 7)

SessionHandler::create_sid — Return a new session ID

说明

public string SessionHandler::create_sid ( void )

Generates and returns a new session ID.

返回值

A session ID valid for the default session handler.

参见

  • session_id() - 获取/设置当前会话 ID

SessionHandler::close
SessionHandler::destroy
SessionHandler


Destroy a session

SessionHandler::create_sid
SessionHandler::gc
SessionHandler
PHP Manual

SessionHandler::destroy

(PHP 5 >= 5.4.0, PHP 7)

SessionHandler::destroy — Destroy a session

说明

public bool SessionHandler::destroy ( string $session_id )

Destroys a session. Called internally by PHP with session_regenerate_id() (assuming the $destroy is set to TRUE, by session_destroy() or when session_decode() fails.

This method wraps the internal PHP save handler defined in the session.save_handler ini setting that was set before this handler was set by session_set_save_handler().

If this class is extended by inheritiance, calling the parent destroy method will invoke the wrapper for this method and therefor invoke the associated internal callback. This allows this method to be overidden and or intercepted and filtered.

For more information on what this method is expected to do, please refer to the documentation at SessionHandlerInterface::destroy().

参数

session_id

The session ID being destroyed.

返回值

会话存储的返回值（通常成功返回 0，失败返回 1）。

SessionHandler::create_sid
SessionHandler::gc
SessionHandler


Cleanup old sessions

SessionHandler::destroy
SessionHandler::open
SessionHandler
PHP Manual

SessionHandler::gc

(PHP 5 >= 5.4.0, PHP 7)

SessionHandler::gc — Cleanup old sessions

说明

public bool SessionHandler::gc ( int $maxlifetime )

Cleans up expired sessions. Called randomly by PHP internally when a session starts or when session_start() is invoked. The frequency this is called is based on the session.gc_divisor and session.gc_probability configuration directives.

This method wraps the internal PHP save handler defined in the session.save_handler ini setting that was set before this handler was set by session_set_save_handler().

If this class is extended by inheritiance, calling the parent gc method will invoke the wrapper for this method and therefore invoke the associated internal callback. This allows this method to be overidden and or intercepted and filtered.

For more information on what this method is expected to do, please refer to the documentation at SessionHandlerInterface::gc().

参数

maxlifetime

Sessions that have not updated for the last maxlifetime seconds will be removed.

返回值

会话存储的返回值（通常成功返回 0，失败返回 1）。

SessionHandler::destroy
SessionHandler::open
SessionHandler


Initialize session

SessionHandler::gc
SessionHandler::read
SessionHandler
PHP Manual

SessionHandler::open

(PHP 5 >= 5.4.0, PHP 7)

SessionHandler::open — Initialize session

说明

public bool SessionHandler::open ( string $save_path , string $session_name )

Create new session, or re-initialize existing session. Called internally by PHP when a session starts either automatically or when session_start() is invoked.

This method wraps the internal PHP save handler defined in the session.save_handler ini setting that was set before this handler was set by session_set_save_handler().

If this class is extended by inheritiance, calling the parent open method will invoke the wrapper for this method and therefor invoke the associated internal callback. This allows this method to be overidden and or intercepted and filtered.

For more information on what this method is expected to do, please refer to the documentation at SessionHandlerInterface::open().

参数

save_path

The path where to store/retrieve the session.

session_name

The session name.

返回值

会话存储的返回值（通常成功返回 0，失败返回 1）。

参见

  • The session.auto-start configuration directive.

SessionHandler::gc
SessionHandler::read
SessionHandler


Read session data

SessionHandler::open
SessionHandler::write
SessionHandler
PHP Manual

SessionHandler::read

(PHP 5 >= 5.4.0, PHP 7)

SessionHandler::read — Read session data

说明

public string SessionHandler::read ( string $session_id )

Reads the session data from the session storage, and returns the result back to PHP for internal processing. This method is called automatically by PHP when a session is started (either automatically or explicity with session_start() and is preceeded by an internal call to the SessionHandler::open().

This method wraps the internal PHP save handler defined in the session.save_handler ini setting that was set before this handler was set by session_set_save_handler().

If this class is extended by inheritiance, calling the parent read method will invoke the wrapper for this method and therefor invoke the associated internal callback. This allows the method to be overidden and or intercepted and filtered (for example, decrypting $data value returned by the parent read method).

For more information on what this method is expected to do, please refer to the documentation at SessionHandlerInterface::read().

参数

session_id

The session id to read data for.

返回值

Returns an encoded string of the read data. If nothing was read, it must return an empty string. Note this value is returned internally to PHP for processing.

参见

  • The session.serialize_handler configuration directive.

SessionHandler::open
SessionHandler::write
SessionHandler


Write session data

SessionHandler::read
SessionHandlerInterface
SessionHandler
PHP Manual

SessionHandler::write

(PHP 5 >= 5.4.0, PHP 7)

SessionHandler::write — Write session data

说明

public bool SessionHandler::write ( string $session_id , string $session_data )

Writes the session data to the session storage. Called by normal PHP shutdown, by session_write_close(), or when session_register_shutdown() fails. PHP will call SessionHandler::close() immediately after this method returns.

This method wraps the internal PHP save handler defined in the session.save_handler ini setting that was set before this handler was set by session_set_save_handler().

If this class is extended by inheritiance, calling the parent write method will invoke the wrapper for this method and therefor invoke the associated internal callback. This allows this method to be overidden and or intercepted and filtered (for example, encrypting the $data value before sending it to the parent write method).

For more information on what this method is expected to do, please refer to the documentation at SessionHandlerInterface::write().

参数

session_id

The session id.

session_data

The encoded session data. This data is the result of the PHP internally encoding the $_SESSION superglobal to a serialized string and passing it as this parameter. Please note sessions use an alternative serialization method.

返回值

会话存储的返回值（通常成功返回 0，失败返回 1）。

参见

  • The session.serialize_handler configuration directive.

SessionHandler::read
SessionHandlerInterface
SessionHandler


The SessionHandlerInterface class

(PHP 5 >= 5.4.0, PHP 7)

简介

SessionHandlerInterface is an interface which defines a prototype for creating a custom session handler. In order to pass a custom session handler to session_set_save_handler() using its OOP invocation, the class must implement this interface.

Please note the callback methods of this class are designed to be called internally by PHP and are not meant to be called from user-space code.

类摘要

SessionHandlerInterface {
/* 方法 */
abstract public bool close ( void )
abstract public bool destroy ( string $session_id )
abstract public bool gc ( int $maxlifetime )
abstract public bool open ( string $save_path , string $session_name )
abstract public string read ( string $session_id )
abstract public bool write ( string $session_id , string $session_data )
}

Example #1 Example using SessionHandlerInterface

The following example provides file based session storage similar to the PHP sessions default save handler files. This example could easily be extended to cover database storage using your favorite PHP supported database engine.

Note we use the OOP prototype with session_set_save_handler() and register the shutdown function using the function's parameter flag. This is generally advised when registering objects as session save handlers.

<?php
class MySessionHandler implements SessionHandlerInterface
{
    private $savePath;

    public function open($savePath, $sessionName)
    {
        $this->savePath = $savePath;
        if (!is_dir($this->savePath)) {
            mkdir($this->savePath, 0777);
        }

        return true;
    }

    public function close()
    {
        return true;
    }

    public function read($id)
    {
        return (string)@file_get_contents("$this->savePath/sess_$id");
    }

    public function write($id, $data)
    {
        return file_put_contents("$this->savePath/sess_$id", $data) === false ? false : true;
    }

    public function destroy($id)
    {
        $file = "$this->savePath/sess_$id";
        if (file_exists($file)) {
            unlink($file);
        }

        return true;
    }

    public function gc($maxlifetime)
    {
        foreach (glob("$this->savePath/sess_*") as $file) {
            if (filemtime($file) + $maxlifetime < time() && file_exists($file)) {
                unlink($file);
            }
        }

        return true;
    }
}

$handler = new MySessionHandler();
session_set_save_handler($handler, true);
session_start();

// proceed to set and retrieve values by key from $_SESSION

Table of Contents

  • SessionHandlerInterface::close — Close the session
  • SessionHandlerInterface::destroy — Destroy a session
  • SessionHandlerInterface::gc — Cleanup old sessions
  • SessionHandlerInterface::open — Initialize session
  • SessionHandlerInterface::read — Read session data
  • SessionHandlerInterface::write — Write session data
SessionHandler::write
SessionHandlerInterface::close
Sessions


Close the session

SessionHandlerInterface
SessionHandlerInterface::destroy
SessionHandlerInterface
PHP Manual

SessionHandlerInterface::close

(PHP 5 >= 5.4.0, PHP 7)

SessionHandlerInterface::close — Close the session

说明

abstract public bool SessionHandlerInterface::close ( void )

Closes the current session. This function is automatically executed when closing the session, or explicitly via session_write_close().

参数

此函数没有参数。

返回值

会话存储的返回值（通常成功返回 0，失败返回 1）。

SessionHandlerInterface
SessionHandlerInterface::destroy
SessionHandlerInterface


Destroy a session

SessionHandlerInterface::close
SessionHandlerInterface::gc
SessionHandlerInterface
PHP Manual

SessionHandlerInterface::destroy

(PHP 5 >= 5.4.0, PHP 7)

SessionHandlerInterface::destroy — Destroy a session

说明

abstract public bool SessionHandlerInterface::destroy ( string $session_id )

Destroys a session. Called by session_regenerate_id() (with $destroy = TRUE), session_destroy() and when session_decode() fails.

参数

session_id

The session ID being destroyed.

返回值

会话存储的返回值（通常成功返回 0，失败返回 1）。

SessionHandlerInterface::close
SessionHandlerInterface::gc
SessionHandlerInterface


Cleanup old sessions

SessionHandlerInterface::destroy
SessionHandlerInterface::open
SessionHandlerInterface
PHP Manual

SessionHandlerInterface::gc

(PHP 5 >= 5.4.0, PHP 7)

SessionHandlerInterface::gc — Cleanup old sessions

说明

abstract public bool SessionHandlerInterface::gc ( int $maxlifetime )

Cleans up expired sessions. Called by session_start(), based on session.gc_divisor, session.gc_probability and session.gc_maxlifetime settings.

参数

maxlifetime

Sessions that have not updated for the last maxlifetime seconds will be removed.

返回值

会话存储的返回值（通常成功返回 0，失败返回 1）。

SessionHandlerInterface::destroy
SessionHandlerInterface::open
SessionHandlerInterface


Initialize session

SessionHandlerInterface::gc
SessionHandlerInterface::read
SessionHandlerInterface
PHP Manual

SessionHandlerInterface::open

(PHP 5 >= 5.4.0, PHP 7)

SessionHandlerInterface::open — Initialize session

说明

abstract public bool SessionHandlerInterface::open ( string $save_path , string $session_name )

Re-initialize existing session, or creates a new one. Called when a session starts or when session_start() is invoked.

参数

save_path

The path where to store/retrieve the session.

session_name

The session name.

返回值

会话存储的返回值（通常成功返回 0，失败返回 1）。

参见

  • session_name() - 读取/设置会话名称
  • The session.auto-start configuration directive.

SessionHandlerInterface::gc
SessionHandlerInterface::read
SessionHandlerInterface


Read session data

SessionHandlerInterface::open
SessionHandlerInterface::write
SessionHandlerInterface
PHP Manual

SessionHandlerInterface::read

(PHP 5 >= 5.4.0, PHP 7)

SessionHandlerInterface::read — Read session data

说明

abstract public string SessionHandlerInterface::read ( string $session_id )

Reads the session data from the session storage, and returns the results. Called right after the session starts or when session_start() is called. Please note that before this method is called SessionHandlerInterface::open() is invoked.

This method is called by PHP itself when the session is started. This method should retrieve the session data from storage by the session ID provided. The string returned by this method must be in the same serialized format as when originally passed to the SessionHandlerInterface::write() If the record was not found, return an empty string.

The data returned by this method will be decoded internally by PHP using the unserialization method specified in session.serialize_handler. The resulting data will be used to populate the $_SESSION superglobal.

Note that the serialization scheme is not the same as unserialize() and can be accessed by session_decode().

参数

session_id

The session id.

返回值

Returns an encoded string of the read data. If nothing was read, it must return an empty string. Note this value is returned internally to PHP for processing.

参见

  • The session.serialize_handler configuration directive.

SessionHandlerInterface::open
SessionHandlerInterface::write
SessionHandlerInterface


Write session data

SessionHandlerInterface::read
Session PgSQL
SessionHandlerInterface
PHP Manual

SessionHandlerInterface::write

(PHP 5 >= 5.4.0, PHP 7)

SessionHandlerInterface::write — Write session data

说明

abstract public bool SessionHandlerInterface::write ( string $session_id , string $session_data )

Writes the session data to the session storage. Called by session_write_close(), when session_register_shutdown() fails, or during a normal shutdown. Note: SessionHandlerInterface::close() is called immediately after this function.

PHP will call this method when the session is ready to be saved and closed. It encodes the session data from the $_SESSION superglobal to a serialized string and passes this along with the session ID to this method for storage. The serialization method used is specified in the session.serialize_handler setting.

Note this method is normally called by PHP after the output buffers have been closed unless explicitly called by session_write_close()

参数

session_id

The session id.

session_data

The encoded session data. This data is the result of the PHP internally encoding the $_SESSION superglobal to a serialized string and passing it as this parameter. Please note sessions use an alternative serialization method.

返回值

会话存储的返回值（通常成功返回 0，失败返回 1）。

参见

  • The session.serialize_handler configuration directive.

SessionHandlerInterface::read
Session PgSQL
SessionHandlerInterface


PostgreSQL Session Save Handler

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • Table definitions
  • 预定义常量
  • Session PgSQL 函数
    • session_pgsql_add_error — Increments error counts and sets last error message
    • session_pgsql_get_error — Returns number of errors and last error message
    • session_pgsql_get_field — Get custom field value
    • session_pgsql_reset — Reset connection to session database servers
    • session_pgsql_set_field — Set custom field value
    • session_pgsql_status — Get current save handler status
SessionHandlerInterface::write
简介
Session 扩展


简介

Note: 此扩展在 Windows 平台上不可用。

This module provides an additional session save handler for the session module using » PostgreSQL as a storage system. A user-level session storage function may also be used - session_set_save_handler(), but this module is written in C and therefore could be twice as fast, compared to a session save handler written in PHP.

Session PgSQL is designed to scale any size of web sites and offers some advanced features:

  • session tables are created automatically
  • automatic session table vacuum
  • better garbage collection
  • multiple PostgreSQL servers support
  • automatic database server failover (switching)
  • automatic database server load balancing if there are multiple PostgreSQL servers.
  • short circuit UPDATE

Session PgSQL
安装／配置
Session PgSQL


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Session PgSQL


需求

You need at least PHP >= 4.3.0, and PostgreSQL >=7.2.0 as database server. libpq that comes with PostgreSQL 7.2.0 or later (and header files to build) and » libmm (and header files).

安装／配置
安装
安装／配置


安装

此扩展被认为已无人维护及已消亡。然而，此扩展的源代码还可在 PECL SVN 找到： » http://svn.php.net/viewvc/pecl/session_pgsql.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

PostgreSQL session save handler is still under development. Refer to the README file in the source distribution for configuration details.

安装
资源类型
安装／配置


资源类型

此扩展没有定义资源类型。

运行时配置
Table definitions
安装／配置


Table definitions

Session table definition

CREATE TABLE php_session (
 sess_id            text,
 sess_name          text,
 sess_data          text,
 sess_created       integer,
 sess_modified      integer,
 sess_expire        integer,
 sess_addr_created  text,
 sess_addr_modified text,
 sess_counter       integer,
 sess_error         integer,
 sess_warning       integer,
 sess_notice        integer,
 sess_err_message   text,
 sess_custom        text
);

CREATE INDEX php_session_idx ON php_session USING BTREE (sess_id);

Warning

If you use HASH for INDEX, you'll have a deadlock problem when the server load is very high. Even if it's unlikely to have a deadlock under normal operation, it can occur. Do not use HASH for INDEX.

You may change the session table as long as all fields are defined.

Application variables table definition

CREATE TABLE php_app_vars (
 app_modified       integer,
 app_name           text,
 app_vars           text
);

资源类型
预定义常量
Session PgSQL


预定义常量

此扩展没有定义常量。

Table definitions
Session PgSQL 函数
Session PgSQL


Session PgSQL 函数

Contact Information

I have at the moment not very much time to further develop this extension. I will implement more and more features in the near future.

If you have comments, bug fixes, enhancements or want to help developing this, you can drop me a mail at » yohgaki@php.net. Any help is very welcome.

Table of Contents

  • session_pgsql_add_error — Increments error counts and sets last error message
  • session_pgsql_get_error — Returns number of errors and last error message
  • session_pgsql_get_field — Get custom field value
  • session_pgsql_reset — Reset connection to session database servers
  • session_pgsql_set_field — Set custom field value
  • session_pgsql_status — Get current save handler status
预定义常量
session_pgsql_add_error
Session PgSQL


Increments error counts and sets last error message

Session PgSQL 函数
session_pgsql_get_error
Session PgSQL 函数
PHP Manual

session_pgsql_add_error

(PECL session_pgsql SVN)

session_pgsql_add_error — Increments error counts and sets last error message

说明

bool session_pgsql_add_error ( int $error_level [, string $error_message ] )
Warning

本函数还未编写文档，仅有参数列表。

参数

error_level

error_message

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • session_pgsql_get_error() - Returns number of errors and last error message

Session PgSQL 函数
session_pgsql_get_error
Session PgSQL 函数


Returns number of errors and last error message

session_pgsql_add_error
session_pgsql_get_field
Session PgSQL 函数
PHP Manual

session_pgsql_get_error

(PECL session_pgsql SVN)

session_pgsql_get_error — Returns number of errors and last error message

说明

array session_pgsql_get_error ([ bool $with_error_message = false ] )

Get the number of errors and optional the error messages.

参数

with_error_message

Set to TRUE the literal error message for each error is also returned.

返回值

The number of errors are returned as array.

参见

  • session_pgsql_add_error() - Increments error counts and sets last error message

session_pgsql_add_error
session_pgsql_get_field
Session PgSQL 函数


Get custom field value

session_pgsql_get_error
session_pgsql_reset
Session PgSQL 函数
PHP Manual

session_pgsql_get_field

(PECL session_pgsql SVN)

session_pgsql_get_field — Get custom field value

说明

string session_pgsql_get_field ( void )
Warning

本函数还未编写文档，仅有参数列表。

参见

  • session_pgsql_set_field() - Set custom field value

session_pgsql_get_error
session_pgsql_reset
Session PgSQL 函数


Reset connection to session database servers

session_pgsql_get_field
session_pgsql_set_field
Session PgSQL 函数
PHP Manual

session_pgsql_reset

(PECL session_pgsql SVN)

session_pgsql_reset — Reset connection to session database servers

说明

bool session_pgsql_reset ( void )

Reset the connection to the session database servers.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

session_pgsql_get_field
session_pgsql_set_field
Session PgSQL 函数


Set custom field value

session_pgsql_reset
session_pgsql_status
Session PgSQL 函数
PHP Manual

session_pgsql_set_field

(PECL session_pgsql SVN)

session_pgsql_set_field — Set custom field value

说明

bool session_pgsql_set_field ( string $value )
Warning

本函数还未编写文档，仅有参数列表。

参数

value

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • session_pgsql_get_field() - Get custom field value

session_pgsql_reset
session_pgsql_status
Session PgSQL 函数


Get current save handler status

session_pgsql_set_field
文本处理
Session PgSQL 函数
PHP Manual

session_pgsql_status

(PECL session_pgsql SVN)

session_pgsql_status — Get current save handler status

说明

array session_pgsql_status ( void )
Warning

本函数还未编写文档，仅有参数列表。

session_pgsql_set_field
文本处理
Session PgSQL 函数


文本处理

  • BBCode — Bulletin Board Code
    • 简介
    • 安装／配置
    • 预定义常量
    • BBCode 函数
  • PCRE — 正则表达式(兼容 Perl)
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • PCRE模式
    • PCRE 函数
  • POSIX Regex — Regular Expression (POSIX Extended)
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • POSIX Regex 函数
  • ssdeep — ssdeep Fuzzy Hashing
    • 简介
    • 安装／配置
    • 预定义常量
    • ssdeep 函数
  • 字符串
    • 简介
    • 安装／配置
    • 预定义常量
    • 字符串 函数
    • 更新日志
session_pgsql_status
BBCode
函数参考


Bulletin Board Code

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • BBCode 函数
    • bbcode_add_element — Adds a bbcode element
    • bbcode_add_smiley — Adds a smiley to the parser
    • bbcode_create — Create a BBCode Resource
    • bbcode_destroy — Close BBCode_container resource
    • bbcode_parse — Parse a string following a given rule set
    • bbcode_set_arg_parser — Attach another parser in order to use another rule set for argument parsing
    • bbcode_set_flags — Set or alter parser options
文本处理
简介
文本处理


简介

This extension aims to help parse BBCode text in order to convert it to HTML or another markup language. It uses one pass parsing and provides great speed improvement over the common approach based on regular expressions. Further more, it helps provide valid HTML by reordering open / close tags and by automatically closing unclosed tags.

Since 0.10.1 It supports argument quoting with single quotes, double quotes and HTML escaped double quotes.

BBCode
安装／配置
BBCode


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
BBCode


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/bbcode

An alternative solution, written in PHP, is the PEAR package » HTML_BBCodeParser.

需求
运行时配置
安装／配置


资源类型

One resource is used in the BBCode extension: a BBCode_Container returned by bbcode_create().

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

BBCODE_TYPE_NOARG (integer)
This BBCode tag does not accept any arguments.
BBCODE_TYPE_SINGLE (integer)
This BBCode tag does not have a corresponding close tag.
BBCODE_TYPE_ARG (integer)
This BBCode tag need an argument.
BBCODE_TYPE_OPTARG (integer)
This BBCode tag accept an optional argument.
BBCODE_TYPE_ROOT (integer)
This BBCode tag is the special tag root (nesting level 0).
BBCODE_FLAGS_ARG_PARSING (integer)
This BBCode tag require argument sub-parsing (the argument is also parsed by the BBCode extension). As Of 0.10.2 another parser can be used as argument parser.
BBCODE_FLAGS_CDATA_NOT_ALLOWED (integer)
This BBCode Tag does not accept content (it voids it automatically).
BBCODE_FLAGS_SMILEYS_ON (integer) - since 0.10.2
This BBCode Tag accepts smileys.
BBCODE_FLAGS_SMILEYS_OFF (integer) - since 0.10.2
This BBCode Tag does not accept smileys.
BBCODE_FLAGS_ONE_OPEN_PER_LEVEL (integer) - since 0.10.2
This BBCode Tag automatically closes if another tag of the same type is found at the same nesting level.
BBCODE_FLAGS_REMOVE_IF_EMPTY (integer) - since 0.10.2
This BBCode Tag is automatically removed if content is empty it allows to produce lighter HTML.
BBCODE_FLAGS_DENY_REOPEN_CHILD (integer) - since 0.10.3
This BBCode Tag does not allow unclosed children to reopen when automatically closed.
BBCODE_ARG_DOUBLE_QUOTE (integer) - since 0.10.2
This is a parser option allowing argument quoting with double quotes (")
BBCODE_ARG_SINGLE_QUOTE (integer) - since 0.10.2
This is a parser option allowing argument quoting with single quotes (')
BBCODE_ARG_HTML_QUOTE (integer) - since 0.10.2
This is a parser option allowing argument quoting with HTML version of double quotes (&quot;)
BBCODE_ARG_QUOTE_ESCAPING (integer) - since 1.0.2
This is a parser option allowing argument quotes to be escaped this permit the quote delimiter to be found in the string escaping character is \ it can escape any quoting character or itself, if found in front of a non escapable character, it will be dropped. Default behaviour is not to use escaping.
BBCODE_AUTO_CORRECT (integer) - since 0.10.2
This is a parser option changing the way errors are treated. It automatically closes tag in the order they are opened. And treat tags with only an open tag as if there were a close tag present.
BBCODE_CORRECT_REOPEN_TAGS (integer) - since 0.10.2
This is a parser option changing the way errors are treated. It automatically reopens tag if close tags are not in the good order.
BBCODE_DISABLE_TREE_BUILD (integer) - since 0.10.2
This is a parser option disabling the BBCode parsing it can be useful if only the "smiley" replacement must be used.
BBCODE_DEFAULT_SMILEYS_ON (integer) - since 0.10.2
This is a parser option setting smileys to ON if no flag is given at tag level.
BBCODE_DEFAULT_SMILEYS_OFF (integer) - since 0.10.2
This is a parser option setting smileys to OFF if no flag is given at tag level.
BBCODE_FORCE_SMILEYS_OFF (integer) - since 0.10.2
This is a parser option disabling completely the smileys parsing.
BBCODE_SMILEYS_CASE_INSENSITIVE (integer) - since 0.10.3
Use a case insensitive Detection for smileys instead of a simple binary search.
BBCODE_SET_FLAGS_SET (integer) - since 0.10.2
This permits to SET the complete flag set on a parser.
BBCODE_SET_FLAGS_ADD (integer) - since 0.10.2
This permits to switch a flag set ON on a parser.
BBCODE_SET_FLAGS_REMOVE (integer) - since 0.10.2
This permits to switch a flag set OFF on a parser.
资源类型
BBCode 函数
BBCode


BBCode 函数

Table of Contents

  • bbcode_add_element — Adds a bbcode element
  • bbcode_add_smiley — Adds a smiley to the parser
  • bbcode_create — Create a BBCode Resource
  • bbcode_destroy — Close BBCode_container resource
  • bbcode_parse — Parse a string following a given rule set
  • bbcode_set_arg_parser — Attach another parser in order to use another rule set for argument parsing
  • bbcode_set_flags — Set or alter parser options
预定义常量
bbcode_add_element
BBCode


Adds a bbcode element

BBCode 函数
bbcode_add_smiley
BBCode 函数
PHP Manual

bbcode_add_element

(PECL bbcode >= 0.9.0)

bbcode_add_element — Adds a bbcode element

说明

bool bbcode_add_element ( resource $bbcode_container , string $tag_name , array $tag_rules )

Adds a tag to an existing BBCode_Container tag_set using tag_rules.

参数

bbcode_container

BBCode_Container resource, returned by bbcode_create().

tag_name

The new tag to add to the BBCode_Container tag_set.

tag_rules

An associative array containing the parsing rules; see bbcode_create() for the available keys.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

BBCode 函数
bbcode_add_smiley
BBCode 函数


Adds a smiley to the parser

bbcode_add_element
bbcode_create
BBCode 函数
PHP Manual

bbcode_add_smiley

(PECL bbcode >= 0.10.2)

bbcode_add_smiley — Adds a smiley to the parser

说明

bool bbcode_add_smiley ( resource $bbcode_container , string $smiley , string $replace_by )

Adds a smiley to the parser

参数

bbcode_container

BBCode_Container resource, returned by bbcode_create().

smiley

The string that will be replaced when found.

replace_by

The string that replace smiley when found.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 bbcode_add_smiley() usage example

<?php
/*
 * Prepare the rule set
 */
$arrayBBCode=array(
    ''=>         array('type'=>BBCODE_TYPE_ROOT,
                       'childs'=>'!i'),
    'b'=>        array('type'=>BBCODE_TYPE_NOARG,
                       'open_tag'=>'<b>',
                       'close_tag'=>'</b>'),
    'u'=>        array('type'=>BBCODE_TYPE_NOARG,
                       'open_tag'=>'<u>',
                       'close_tag'=>'</u>',
                       'flags'=>BBCODE_FLAGS_SMILEYS_OFF),
    'i'=>        array('type'=>BBCODE_TYPE_NOARG,
                       'open_tag'=>'<i>',
                       'close_tag'=>'</i>',
                       'childs'=>'b'),
);
/*
 * Parsed Text
 */
$text=<<<EOF
[i] No parse Test [/i] :)
[b] Parsed, with smiley :( [/b]
[u] Parsed, with no smiley :D [/u]
EOF;
/*
 * Init the parser
 */
$BBHandler=bbcode_create($arrayBBCode);
/*
 * Add Smiley rules to parser
 */
bbcode_add_smiley($BBHandler, ":)", "<img src=\"smiley.gif\" alt=\":)\" />");
bbcode_add_smiley($BBHandler, ":(", "<img src=\"sad.gif\" alt=\":(\" />");
bbcode_add_smiley($BBHandler, ":D", "<img src=\"happy.gif\" alt=\":D\" />");
bbcode_add_smiley($BBHandler, ":p", "<img src=\"tong.gif\" alt=\":p\" />");
bbcode_add_smiley($BBHandler, ":|", "<img src=\"special.gif\" alt=\":|\" />");
bbcode_add_smiley($BBHandler, ":6:", "<img src=\"six.gif\" alt=\":6:\" />");
/*
 * Parse the text
 */
echo bbcode_parse($BBHandler,$text);
?>

以上例程会输出：

<i> No parse Test </i> <img src="smiley.gif" alt=":)" />
<b> Parsed, with smiley <img src="sad.gif" alt=":(" /> </b>
<u> Parsed, with no smiley :D </u>

bbcode_add_element
bbcode_create
BBCode 函数


Create a BBCode Resource

bbcode_add_smiley
bbcode_destroy
BBCode 函数
PHP Manual

bbcode_create

(PECL bbcode >= 0.9.0)

bbcode_create — Create a BBCode Resource

说明

resource bbcode_create ([ array $bbcode_initial_tags = NULL ] )

This function returns a new BBCode Resource used to parse BBCode strings.

参数

bbcode_initial_tags

An associative array containing the tag names as keys and parameters required to correctly parse BBCode as their value. The following key/value pairs are supported:

  • flags optional - a flag set based on the BBCODE_FLAGS_* constants.
  • type required - an int indicating the type of tag. Use the BBCODE_TYPE_* constants.
  • open_tag required - the HTML replacement string for the open tag.
  • close_tag required - the HTML replacement string for the close tag.
  • default_arg optional - use this value as the default argument if none is provided and tag_type is of type OPTARG.
  • content_handling optional - Gives the callback used for modification of the content. Object Oriented Notation supported only since 0.10.1 callback prototype is string name(string $content, string $argument)
  • param_handling optional - Gives the callback used for modification of the argument. Object Oriented Notation supported only since 0.10.1 callback prototype is string name(string $content, string $argument)
  • childs optional - List of accepted children for the tag. The format of the list is a comma separated string. If the list starts with ! it will be the list of rejected children for the tag.
  • parent optional - List of accepted parents for the tag. The format of the list is a comma separated string.

返回值

Returns a BBCode_Container

范例

Example #1 bbcode_create() example

<?php
$arrayBBCode=array(
    ''=>         array('type'=>BBCODE_TYPE_ROOT,  'childs'=>'!i'),
    'i'=>        array('type'=>BBCODE_TYPE_NOARG, 'open_tag'=>'<i>',
                    'close_tag'=>'</i>', 'childs'=>'b'),
    'url'=>      array('type'=>BBCODE_TYPE_OPTARG,
                    'open_tag'=>'<a href="{PARAM}">', 'close_tag'=>'</a>',
                    'default_arg'=>'{CONTENT}',
                    'childs'=>'b,i'),
    'img'=>      array('type'=>BBCODE_TYPE_NOARG,
                    'open_tag'=>'<img src="', 'close_tag'=>'" />',
                    'childs'=>''),
    'b'=>        array('type'=>BBCODE_TYPE_NOARG, 'open_tag'=>'<b>',
                    'close_tag'=>'</b>'),
);
$text=<<<EOF
[b]Bold Text[/b]
[i]Italic Text[/i]
[url]http://www.php.net/[/url]
[url=http://pecl.php.net/][b]Content Text[/b][/url]
[img]http://static.php.net/www.php.net/images/php.gif[/img]
[url=http://www.php.net/]
[img]http://static.php.net/www.php.net/images/php.gif[/img]
[/url]
EOF;
$BBHandler=bbcode_create($arrayBBCode);
echo bbcode_parse($BBHandler,$text);
?>

以上例程会输出：

<b>Bold Text</b>
[i]Italic Text[/i]
<a href="http://www.php.net/">http://www.php.net/</a>
<a href="http://pecl.php.net/"><b>Content Text</b></a>
<img src="http://static.php.net/www.php.net/images/php.gif" />
<a href="http://www.php.net/">
[img]http://static.php.net/www.php.net/images/php.gif[/img]
</a>

bbcode_add_smiley
bbcode_destroy
BBCode 函数


Close BBCode_container resource

bbcode_create
bbcode_parse
BBCode 函数
PHP Manual

bbcode_destroy

(PECL bbcode >= 0.9.0)

bbcode_destroy — Close BBCode_container resource

说明

bool bbcode_destroy ( resource $bbcode_container )

This function closes the resource opened by bbcode_create().

参数

bbcode_container

BBCode_Container resource returned by bbcode_create().

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

bbcode_create
bbcode_parse
BBCode 函数


Parse a string following a given rule set

bbcode_destroy
bbcode_set_arg_parser
BBCode 函数
PHP Manual

bbcode_parse

(PECL bbcode >= 0.9.0)

bbcode_parse — Parse a string following a given rule set

说明

string bbcode_parse ( resource $bbcode_container , string $to_parse )

This function parse the string to_parse following the rules in the bbcode_container created by bbcode_create()

参数

bbcode_container

BBCode_Container resource returned by bbcode_create().

to_parse

The string we need to parse.

返回值

Returns the parsed string, 或者在失败时返回 FALSE.

bbcode_destroy
bbcode_set_arg_parser
BBCode 函数


Attach another parser in order to use another rule set for argument parsing

bbcode_parse
bbcode_set_flags
BBCode 函数
PHP Manual

bbcode_set_arg_parser

(PECL bbcode >= 0.10.2)

bbcode_set_arg_parser — Attach another parser in order to use another rule set for argument parsing

说明

bool bbcode_set_arg_parser ( resource $bbcode_container , resource $bbcode_arg_parser )

Attaches another parser to the bbcode_container. This parser is used only when arguments must be parsed. If this function is not used, the default argument parser is the parser itself.

参数

bbcode_container

BBCode_Container resource, returned by bbcode_create().

bbcode_arg_parser

BBCode_Container resource, returned by bbcode_create(). It will be used only for parsed arguments

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 bbcode_set_arg_parser() usage example

<?php
/*
 * Generating bbcode ruleset for main parser
 */
$arrayBBCode=array(
    'quote'=>    array('type'=>BBCODE_TYPE_ARG,
                       'open_tag'=>'<quote><h4>Source: {PARAM}</h4>',
                       'close_tag'=>'</quote>',
                       'flags'=>BBCODE_FLAGS_REMOVE_IF_EMPTY|BBCODE_FLAGS_ARG_PARSING),
    'b'=>        array('type'=>BBCODE_TYPE_NOARG,
                       'open_tag'=>'<b>', 'close_tag'=>'</b>',
                       'flags'=>BBCODE_FLAGS_REMOVE_IF_EMPTY),
    'u'=>        array('type'=>BBCODE_TYPE_NOARG,
                       'open_tag'=>'<u>', 'close_tag'=>'</u>',
                       'flags'=>BBCODE_FLAGS_SMILEYS_OFF | BBCODE_FLAGS_REMOVE_IF_EMPTY | BBCODE_FLAGS_SMILEYS_OFF),
    'i'=>        array('type'=>BBCODE_TYPE_NOARG,
                       'open_tag'=>'<i>', 'close_tag'=>'</i>',
                       'flags'=>BBCODE_FLAGS_REMOVE_IF_EMPTY),
);
/*
 * Generating bbcode ruleset for argument parser
 */
$arrayBBCode_arg=array(
    'b'=>        array('type'=>BBCODE_TYPE_NOARG,
                       'open_tag'=>'<b class="sub">', 'close_tag'=>'</b>',
                       'flags'=>BBCODE_FLAGS_REMOVE_IF_EMPTY),
    'u'=>        array('type'=>BBCODE_TYPE_NOARG,
                       'open_tag'=>'<u>', 'close_tag'=>'</u>',
                       'flags'=>BBCODE_FLAGS_SMILEYS_OFF | BBCODE_FLAGS_REMOVE_IF_EMPTY | BBCODE_FLAGS_SMILEYS_OFF),
    'i'=>        array('type'=>BBCODE_TYPE_NOARG,
                       'open_tag'=>'<i>', 'close_tag'=>'</i>',
                       'flags'=>BBCODE_FLAGS_REMOVE_IF_EMPTY),
);
/*
 * Text we are going to parse
 */
$text=<<<EOF
[quote="[b]Test[/b]"]
Foo :)
[/quote]
[b]Bar example :)[/b] :)
EOF;
/*
 * Init the two parsers
 */
$BBHandler=bbcode_create($arrayBBCode);
$BBArgHandler=bbcode_create($arrayBBCode_arg);
/*
 * Setting Flags on the parsers
 */
bbcode_set_flags($BBHandler,
                 BBCODE_CORRECT_REOPEN_TAGS|BBCODE_DEFAULT_SMILEYS_ON|BBCODE_ARG_DOUBLE_QUOTE|
                 BBCODE_ARG_SINGLE_QUOTE|BBCODE_ARG_HTML_QUOTE,BBCODE_SET_FLAGS_SET);
bbcode_set_flags($BBArgHandler,
                 BBCODE_CORRECT_REOPEN_TAGS|BBCODE_DEFAULT_SMILEYS_ON|BBCODE_ARG_DOUBLE_QUOTE|
                 BBCODE_ARG_SINGLE_QUOTE|BBCODE_ARG_HTML_QUOTE,BBCODE_SET_FLAGS_SET);
/*
 * Setting $BBArgHandler as the BBHandler argument parser
 */
bbcode_set_arg_parser($BBHandler,$BBArgHandler);
/*
 * Adding Smileys handling rules to Main parser
 */
bbcode_add_smiley($BBHandler, ":)", "<img src=\"smiley.gif\" alt=\":)\" />");
/*
 * Use the main parser to parse text
 */
echo bbcode_parse($BBHandler,$text);
?>

以上例程会输出：

<quote><h4>Source: <b class="sub">Test</b></h4>
Foo <img src="smiley.gif" alt=":)" />
</quote>
<b>Bar example :)</b> <img src="smiley.gif" alt=":)" />

bbcode_parse
bbcode_set_flags
BBCode 函数


Set or alter parser options

bbcode_set_arg_parser
PCRE
BBCode 函数
PHP Manual

bbcode_set_flags

(PECL bbcode >= 0.10.2)

bbcode_set_flags — Set or alter parser options

说明

bool bbcode_set_flags ( resource $bbcode_container , int $flags [, int $mode = BBCODE_SET_FLAGS_SET ] )

Set or alter parser options

参数

bbcode_container

BBCode_Container resource, returned by bbcode_create().

flags

The flag set that must be applied to the bbcode_container options

mode

One of the BBCODE_SET_FLAGS_* constant to set, unset a specific flag set or to replace the flag set by flags.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 bbcode_set_flags() usage example

<?php
/*
 * Preparing RuleSet
 */
$arrayBBCode=array(
    'b'=>        array('type'=>BBCODE_TYPE_NOARG,
                       'open_tag'=>'<b>', 'close_tag'=>'</b>'),
    'u'=>        array('type'=>BBCODE_TYPE_NOARG,
                       'open_tag'=>'<u>', 'close_tag'=>'</u>'),
    'i'=>        array('type'=>BBCODE_TYPE_NOARG,
                       'open_tag'=>'<i>', 'close_tag'=>'</i>'),
);
/*
 * Paired incorrectly nested BBCode
 */
$text="[i] Parser [b] Auto Correction [/i] at work [/b]\n";
$BBHandler=bbcode_create($arrayBBCode);
echo bbcode_parse($BBHandler,$text);
// Enabling reopening of automatically closed elements
bbcode_set_flags($BBHandler,BBCODE_CORRECT_REOPEN_TAGS,
                 BBCODE_SET_FLAGS_SET);
echo bbcode_parse($BBHandler,$text);

/*
 * Unpaired incorrectly nested BBCode
 */
$text="[i] Parser [b] Auto Correction [/i] at work\n";
echo bbcode_parse($BBHandler,$text);
// Enabling automatic close of pending tags
bbcode_set_flags($BBHandler,
                 BBCODE_CORRECT_REOPEN_TAGS|BBCODE_AUTO_CORRECT,
                 BBCODE_SET_FLAGS_SET);
echo bbcode_parse($BBHandler,$text);
?>

以上例程会输出：

<i> Parser <b> Auto Correction </b></i> at work
<i> Parser <b> Auto Correction </b></i><b> at work </b>
<i> Parser [b] Auto Correction </i> at work
<i> Parser <b> Auto Correction </b></i><b> at work
</b>

bbcode_set_arg_parser
PCRE
BBCode 函数


正则表达式(兼容 Perl)

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • PCRE模式
    • PCRE 正则语法 — 模式语法
    • 正则表达式模式中可用的模式修饰符 — 模式修饰符
    • 与 perl 的不同之处
    • 与POSIX正则表达式的不同
  • PCRE 函数
    • preg_filter — 执行一个正则表达式搜索和替换
    • preg_grep — 返回匹配模式的数组条目
    • preg_last_error — 返回最后一个PCRE正则执行产生的错误代码
    • preg_match_all — 执行一个全局正则表达式匹配
    • preg_match — 执行一个正则表达式匹配
    • preg_quote — 转义正则表达式字符
    • preg_replace_callback_array — Perform a regular expression search and replace using callbacks
    • preg_replace_callback — 执行一个正则表达式搜索并且使用一个回调进行替换
    • preg_replace — 执行一个正则表达式的搜索和替换
    • preg_split — 通过一个正则表达式分隔字符串
bbcode_set_flags
简介
文本处理


简介

这些函数中使用的模式语法非常类似 perl。表达式必须用分隔符闭合，比如一个正斜杠(/)。 分隔符可以使任意非字母数字，除反斜杠(\)和空字节之外的非空白 ascii 字符。 如果分隔符 在表达式中使用，需要使用反斜线进行转义。自php 4.0.4开始，可以使用 perl 样式的()、 {}、 [] 以及 <> 作为分隔符。 更详细的解释参见模式语法。

结束分隔符后面可以紧跟模式修饰符来影响匹配效果。 参见模式修饰符。

PHP也支持使用 POSIX 扩展正则表达式函数 的 POSIX 扩展语法的正则表达式。

Note:

这个扩展维护了一个已编译正则表达式的全局线程化缓存(最大4096)。

Warning

你应该知道一些 PCRE 的限制。阅读» http://www.pcre.org/pcre.txt 获取更详细信息。

PCRE 库是一个实现了与 perl 5 在语法和语义上略有差异(详见下文)的正则表达式模式匹配功能的函数集。 当前的实现对应于 perl 5.005。

PCRE
安装／配置
PCRE


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
PCRE


安装

从 PHP 4.2.0 开始这些函数是默认启用的。可以通过--without-pcre-regex 禁用 pcre 函数。如果不使用捆绑的库, 使用--with-pcre-regex=DIR 指定 PCRE 包含文件和库文件路径。早期版本如果想使用这些函数可以在配置编译 php 时使用 --with-pcre-regex[=DIR] 。

PHP 的 Windows 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。

Note:

php 5.3.0 起这个扩展不能被禁用，因此它总是存在的。

但它仍然可以通过 --with-pcre-regex=DIR 指定 一个外部的 PCRE 库进行编译。

PCRE 是一个活跃的项目，作为它的一个演变，PHP功能依赖于它。 php 文档的某些部分 可能会过期, 因为它可能不包括 PCRE 提供的一些新功能. 关于修正的清单，请查阅 » PCRE library changelog， 下面是绑定的 PCRE 库的历史记录：

绑定 PCRE 库升级历史
PHP 版本 | Updated PCRE 版本 | Notes
5.5.0 / 5.4.14 / 5.3.24 | 8.32 |
5.4.9 / 5.3.19 | 8.31 |
5.3.7 | 8.12 |
5.3.6 | 8.11 |
5.3.4 | 8.10 |
5.3.3 | 8.02 |
5.3.2 | 8.00 |
5.3.0 | 7.9 |
5.2.7 | 7.8 |
5.2.6 | 7.6 |
5.2.5 | 7.3 |
5.2.4 | 7.2 |
5.2.2 | 7.0 |
5.2.0 | 6.7 |
5.1.0 | 6.2 |
5.0.5 | 5.0 |
5.0.0 | 4.5 |
4.4.7 | 7.7 |

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

PCRE配置选项
名字 | 默认 | 可修改范围 | 更新日志
pcre.backtrack_limit | "100000" | PHP_INI_ALL | php 5.2.0可用.
pcre.recursion_limit | "100000" | PHP_INI_ALL | php 5.2.0可用.
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

pcre.backtrack_limit integer

PCRE的回溯限制.

pcre.recursion_limit integer

PCRE的递归限制. 请注意, 如果 讲这个值设置为一个很大的数字, 你可能会消耗掉 所有的进程可用堆栈, 最终导致php崩溃(直到达到系统限制的堆栈大小).

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

PREG 常量
常量 | 描述 | 自哪个版本起
PREG_PATTERN_ORDER | 结果按照"规则"排序，仅用于preg_match_all()， 即$matches[0]是完整规则的匹配结果， $matches[1]是第一个子组匹配的结果，等等。 | since
PREG_SET_ORDER | 结果按照"集合"排序，仅用于preg_match_all()， 即$matches[0]保存第一次匹配结果的所有结果(包含子组)信息, $matches[1]保存第二次的结果信息，等等。 |
PREG_OFFSET_CAPTURE | 查看PREG_SPLIT_OFFSET_CAPTURE的描述。 | 4.3.0
PREG_SPLIT_NO_EMPTY | 这个标记告诉preg_split()进返回非空部分。 |
PREG_SPLIT_DELIM_CAPTURE | 这个标记告诉preg_split()同时捕获括号表达式匹配到的内容。 | 4.0.5
PREG_SPLIT_OFFSET_CAPTURE | 如果设置了这个标记，每次出现的匹配子串的偏移量也会被返回。注意，这会改变返回数组中的值， 每个元素都是由匹配子串作为第0个元素，它相对目标字符串的偏移量作为第1个元素的数组。这个 标记只能用于preg_split()。 | 4.3.0
PREG_NO_ERROR | 没有匹配错误时调用 preg_last_error() 返回。 | 5.2.0
PREG_INTERNAL_ERROR | 如果有PCRE内部错误时调用 preg_last_error() 返回。 | 5.2.0
PREG_BACKTRACK_LIMIT_ERROR | 如果调用回溯限制超出， 调用preg_last_error()时返回。 | 5.2.0
PREG_RECURSION_LIMIT_ERROR | 如果递归限制超出， 调用preg_last_error()时返回。 | 5.2.0
PREG_BAD_UTF8_ERROR | 如果最后一个错误时由于异常的utf-8数据(仅在运行在 UTF-8 模式正则表达式下可用)。 导致的，调用preg_last_error()返回。 | 5.2.0
PREG_BAD_UTF8_OFFSET_ERROR | 如果偏移量与合法的urf-8代码不匹配(仅在运行在 UTF-8 模式正则表达式下可用)。 调用preg_last_error()返回。 | 5.3.0
PCRE_VERSION | PCRE版本号和发布日期(比如： "7.0 18-Dec-2006")。 | 5.2.4
资源类型
范例
PCRE


范例

Example #1 合法模式示例

  • /<\/\w+>/
  • |(\d{3})-\d+|Sm
  • /^(?i)php[34]/
  • {^\s+(\s+)?$}

Example #2 非法模式示例

  • /href='(.*)' - 缺失结束分隔符
  • /\w+\s*\w+/J - 未知模式修饰符"J"
  • 1-\d3-\d3-\d4| - 缺失开始分隔符

预定义常量
PCRE模式
PCRE


PCRE模式

Table of Contents

  • PCRE 正则语法
  • 正则表达式模式中可用的模式修饰符
  • 与 perl 的不同之处
  • 与POSIX正则表达式的不同
范例
PCRE 正则语法
PCRE


模式语法

Table of Contents

  • 简介
  • 分隔符
  • 元字符
  • 转义序列(反斜线)
  • Unicode字符属性
  • 锚
  • 句点
  • 字符类(方括号)
  • 可选路径(|)
  • 内部选项设置
  • 子组(子模式)
  • 重复/量词
  • 后向引用
  • 断言
  • 一次性子组
  • 条件子组
  • 注释
  • 递归模式
  • 性能
PCRE模式
简介
PCRE模式


简介

下面描述的是 PCRE 支持的正则表达式语法和语义。正则表达式在 perl 的文档 和另外一些书籍中也有讨论, 其中一些会有丰富的示例。O'Reilly(ISBN 1-56592-257-3) 出版的 Jeffrey Friedl 的《精通正则表达式》一书非常详细的讨论了这些内容。 这里的描述仅作为一个参考手册。

正则表达式是一个从左到右匹配目标字符串的模式。大多数字符自身就代表一个匹配 它们自身的模式。 作为一个简单的例子，模式 The quick brown fox 匹配目标字符串中与其相同的部分。

PCRE 正则语法
分隔符
PCRE 正则语法


分隔符

当使用 PCRE 函数的时候，模式需要由分隔符闭合包裹。分隔符可以使任意非字母数字、非反斜线、非空白字符。

经常使用的分隔符是正斜线(/)、hash符号(#) 以及取反符号(~)。下面的例子都是使用合法分隔符的模式。

/foo bar/
#^[^0-9]$#
+php+
%[a-zA-Z0-9_-]%

如果分隔符需要在模式内进行匹配，它必须使用反斜线进行转义。如果分隔符经常在 模式内出现， 一个更好的选择就是是用其他分隔符来提高可读性。

/http:\/\//
#http://#
需要将一个字符串放入模式中使用时，可以用 preg_quote() 函数对其进行 转义，它的第二个参数(可选)可以用于指定需要被转义的分隔符。

除了上面提到的分隔符，也可以使用括号样式的分隔符，左括号和右括号分别作为开始和结束 分隔符。

{this is a pattern}

可以在结束分隔符后面增加模式修饰符。 下面的例子是一个大小写不敏感的匹配：

#[a-z]#i

简介
元字符
PCRE 正则语法


元字符

正则表达式的威力源于它可以在模式中拥有选择和重复的能力。 一些字符被赋予 特殊的涵义，使其不再单纯的代表自己，模式中的这种有特殊涵义的编码字符 称为 元字符。

共有两种不同的元字符：一种是可以在模式中方括号外任何地方使用的，另外一种 是需要在方括号内使用的。 在方括号外使用的元字符如下：

\
一般用于转义字符
^
断言目标的开始位置(或在多行模式下是行首)
$
断言目标的结束位置(或在多行模式下是行尾)
.
匹配除换行符外的任何字符(默认)
[
开始字符类定义
]
结束字符类定义
|
开始一个可选分支
(
子组的开始标记
)
子组的结束标记
?
作为量词，表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性。 (查阅量词)
*
量词，0 次或多次匹配
+
量词，1 次或多次匹配
{
自定义量词开始标记
}
自定义量词结束标记
模式中方括号内的部分称为"字符类"。 在一个字符类中仅有以下可用元字符：
\
转义字符
^
仅在作为第一个字符(方括号内)时，表明字符类取反
-
标记字符范围
下面部分描述每个元字符的用法。

分隔符
转义序列(反斜线)
PCRE 正则语法


转义序列(反斜线)

反斜线有多种用法。首先，如果紧接着是一个非字母数字字符，表明取消 该字符所代表的特殊涵义。这种将反斜线作为转义字符的用法在字符类 内部和外部都可用。

比如，如果你希望匹配一个 "*" 字符，就需要在模式中写为 "\*"。 这适用于一个字符在不进行转义会有特殊含义的情况下。 但是， 对于非数字字母的字符，总是在需要其进行原文匹配的时候在它前面增加一个反斜线， 来声明它代表自己，这是安全的。如果要匹配一个反斜线，那么在模式中使用 "\\"。

Note:

反斜线在单引号字符串和双引号字符串 中都有特殊含义，因此要匹配一个反斜线， 模式中必须写为 "\\\\"。 译注： "/\\/"， 首先它作为字符串，反斜线会进行转义， 那么转义后的结果是/\/，这个才是正则表达式引擎拿到的模式， 而正则表达式引擎也认为 \ 是转义标记，它会将分隔符 / 进行转义， 从而得到的是一个错误，因此，需要 4 个反斜线才可以匹配一个反斜线。

如果一个模式被使用 PCRE_EXTENDED 选项编译， 模式中的空白字符(除了字符类中的)和未转义的#到行末的所有字符都会被忽略。 要在这种情况下使用空白字符或者#，就需要对其进行转义。

反斜线的第二种用途提供了一种对非打印字符进行可见编码的控制手段。 除了二进制的 0 会终结一个模式外，并不会严格的限制非打印字符(自身)的出现， 但是当一个模式以文本编辑器的方式编辑准备的时候， 使用下面的转义序列相比使用二进制字符会更加容易。

\a
响铃字符(十六进制 07)
\cx
"control-x"，x 是任意字符
\e
转义 (十六进制 1B)
\f
换页 (十六进制 0C)
\n
换行 (十六进制 0A)
\p{xx}
一个符合 xx 属性的字符，详细查看unicode properties 属性
\P{xx}
一个不符合xx属性的字符，详细查看unicode properties 属性
\r
回车 (十六进制 0D)
\t
水平制表符 (十六进制 09)
\xhh
hh十六进制编码的字符，详细查看unicode properties 属性
\ddd
ddd八进制编码的字符，或者后向引用

\cx的确切效果如下： 如果x是一个小写字母，它被转换为大写。接着， 将字符的第6位(十六进制 40，右数第一个位为第0位)取反。 比如\cz成为十六进制的1A，\c{成为十六进制3B， \c;成为十六进制7B。

在"\x"后面，读取两个十六进制数(字母可以是大写或小写)。 在UTF-8模式， "\x{...}"允许使用， 花括号内的内容是十六进制有效数字。 它将给出的十六进制数字解释为 UTF-8 字符代码。原来的十六进制转义序列， \xhh， 匹配一个双字节的UTF-8字符，如果它的值大于127

在"\0"之后， 读取两个八进制数。所有情况下，如果数少于2个，则直接使用。 序列 "\0\x\07" 指定了两个二进制 0 紧跟着一个 BEL 字符。 请确保初始的 0 之后的两个数字是合法的八进制数。

处理一个反斜线紧跟着的不是0的数字的情况比较复杂。在字符类外部， PCRE 读取它并以十进制读取紧随其后的数字。 如果数值小于 10， 或者之前捕获到了该数字能够代表的左括号(子组)， 整个数字序列被认为是后向引用。后向引用如何工作在后面描述， 接下来就会讨论括号子组。

在一个字符类里面，或者十进制数大于 9 并且没有那么多的子组被捕获， PCRE 重新读取反斜线后的第三个 8 进制数字，并且从最低的 8 位生成单字节值。 任何的后续数字都代表它们自身。例如：

\040
空格的另外一种用法
\40
当提供了少于40个子组时也认为是空格。
\7
始终是后向引用
\11
可能是后向引用，也可能是制表符
\011
总是一个制表符
\0113
一个制表符紧跟着一个3(因为每次最多只读取3个8进制位
\113
八进制113代表的字符
\377
8进制377是10进制255， 因此代表一个全1的字符
\81
一个后向引用或者一个二进制 0 紧跟着两个数字 8 和 1(因为8不是8进制有效数字)

注意，八进制值的 100 或者更大的值必须没有前置的0引导， 因为每次最多读取3个8进制位.

所有序列定义的单字节值都可以在字符类内部或外部使用。另外，在字符类中, 序列 "\b" 解释为退格字符。字符类外它又有不同的意义(下面有描述)

反斜线的第三种用法是用来描述特定的字符类：

\d
任意十进制数字
\D
任意非十进制数字
\h
任意水平空白字符(since PHP 5.2.4)
\H
任意非水平空白字符(since PHP 5.2.4)
\s
任意空白字符
\S
任意非空白字符
\v
任意垂直空白字符(since PHP 5.2.4)
\V
任意非垂直空白字符(since PHP 5.2.4)
\w
任意单词字符
\W
任意非单词字符

上面每一对转义序列都代表了完整字符集中两个不相交的部分， 任意字符一定会匹配其中一个，同时一定不会匹配另外一个。

单词字符指的是任意字母、数字、下划线。 也就是说任意可以组成perl单词的字符。 字母和数字的定义通过PCRE字符表控制，可以通过指定地域设置使其匹配改变。比如， 在法国 (fr) 地域设置中，一些超过 128 的字符代码被用于重音字母， 它们可以实用 \w 匹配。

这些字符类序列在字符类内部或外部都可以出现。 他们每次匹配所代表的字符类型中的一个字符。 如果当前匹配点位于目标字符串末尾， 它们中的所有字符都匹配失败， 因为没有字符让它们匹配了。

反斜线的第四种用法是一些简单的断言。 一个断言指定一个必须在特定位置匹配的条件， 它们不会从目标字符串中消耗任何字符。 接下来我们会讨论使用子组的更加复杂的断言。 反斜线断言包括：

\b
单词边界
\B
非单词边界
\A
目标的开始位置(独立于多行模式)
\Z
目标的结束位置或结束处的换行符(独立于多行模式)
\z
目标的结束位置(独立于多行模式)
\G
在目标中首次匹配位置

这些断言不能出现在字符类中(但是注意， "\b"在字符类中有不同的意义， 表示的是退格(backspace)字符)

一个单词边界表示的是在目标字符串中， 当前字符和前一个字符不同时匹配\w或\W(一个比配\w, 一个匹配\W)， 或者作为字符串开始或结尾字符的时候当前字符匹配\w。

\A， \Z， \z断言不同于传统的^和$(详见下文)， 因为他们永远匹配目标字符串的开始和结尾，而不会受模式修饰符的限制。 它们不受PCRE_MULTILINE，PCRE_DOLLAR_ENDONLY选项的影响。 \Z 和 \z 之间的不同在于当字符串结束字符时换行符时 \Z 会将其看做字符串结尾匹配, 而 \z 只匹配字符串结尾。

\G 断言在指定了$offset 参数的preg_match() 调用中， 仅在当前匹配位置在匹配开始点的时候才是成功的。 当 $offset 的值不为 0 的时候， 它与 \A 是不同的。 译注：另外一点与 \A 的不同之处在于使用 preg_match_all() 时， 每次匹配 \G 只是断言是否是匹配结果的开始位置， 而 \A 断言的则是匹配结果的开始位置是否在目标字符串开始位置。

自 PHP 4.3.3开始， \Q 和 \E 可以用于在模式中忽略正则表达式元字符。比如： \w+\Q.$.\E$ 会匹配一个或多个单词字符，紧接着一个点号，一个$，一个点号， 最后锚向字符串末尾。

自 PHP 5.2.4 开始。 \K 可以用于重置匹配。 比如， foot\Kbar 匹配"footbar"。 但是得到的匹配结果是 "bar"。但是， \K 的使用不会干预到子组内的内容， 比如 (foot)\Kbar 匹配 "footbar"，第一个子组内的结果仍然会是 "foo"。译注： \K 放在子组和子组外面的效果是一样的。

元字符
Unicode字符属性
PCRE 正则语法


Unicode字符属性

自从 PHP 4.4.0 和 5.1.0， 三个额外的转义序列在选用 UTF-8模式时用于匹配通用字符类型。他们是：

\p{xx}
一个有属性 xx 的字符
\P{xx}
一个没有属性 xx 的字符
\X
一个扩展的 Unicode 字符

上面 xx 代表的属性名用于限制 Unicode 通常的类别属性。 每个字符都有一个这样的确定的属性，通过两个缩写的字母指定。 为了与 perl 兼容， 可以在左花括号 { 后面增加 ^ 表示取反。比如： \p{^Lu} 就等同于 \P{Lu}。

如果通过 \p 或 \P 仅指定了一个字母，它包含所有以这个字母开头的属性。 在这种情况下，花括号的转义序列是可选的。

\p{L}
\pL

支持的Unicode属性
Property | Matches | Notes
C | Other |
Cc | Control |
Cf | Format |
Cn | Unassigned |
Co | Private use |
Cs | Surrogate |
L | Letter | Includes the following properties: Ll, Lm, Lo, Lt and Lu.
Ll | Lower case letter |
Lm | Modifier letter |
Lo | Other letter |
Lt | Title case letter |
Lu | Upper case letter |
M | Mark |
Mc | Spacing mark |
Me | Enclosing mark |
Mn | Non-spacing mark |
N | Number |
Nd | Decimal number |
Nl | Letter number |
No | Other number |
P | Punctuation |
Pc | Connector punctuation |
Pd | Dash punctuation |
Pe | Close punctuation |
Pf | Final punctuation |
Pi | Initial punctuation |
Po | Other punctuation |
Ps | Open punctuation |
S | Symbol |
Sc | Currency symbol |
Sk | Modifier symbol |
Sm | Mathematical symbol |
So | Other symbol |
Z | Separator |
Zl | Line separator |
Zp | Paragraph separator |
Zs | Space separator |

InMusicalSymbols 等扩展属性在 PCRE 中不支持

指定大小写不敏感匹配对这些转义序列不会产生影响，比如， \p{Lu} 始终匹配大写字母。

Unicode 字符集在具体文字中定义。使用文字名可以匹配这些字符集中的一个字符。例如：

  • \p{Greek}
  • \P{Han}

不在确定文字中的则被集中到 Common。当前的文字列表中有：

支持的文字
Arabic | Armenian | Avestan | Balinese | Bamum
Batak | Bengali | Bopomofo | Brahmi | Braille
Buginese | Buhid | Canadian_Aboriginal | Carian | Chakma
Cham | Cherokee | Common | Coptic | Cuneiform
Cypriot | Cyrillic | Deseret | Devanagari | Egyptian_Hieroglyphs
Ethiopic | Georgian | Glagolitic | Gothic | Greek
Gujarati | Gurmukhi | Han | Hangul | Hanunoo
Hebrew | Hiragana | Imperial_Aramaic | Inherited | Inscriptional_Pahlavi
Inscriptional_Parthian | Javanese | Kaithi | Kannada | Katakana
Kayah_Li | Kharoshthi | Khmer | Lao | Latin
Lepcha | Limbu | Linear_B | Lisu | Lycian
Lydian | Malayalam | Mandaic | Meetei_Mayek | Meroitic_Cursive
Meroitic_Hieroglyphs | Miao | Mongolian | Myanmar | New_Tai_Lue
Nko | Ogham | Old_Italic | Old_Persian | Old_South_Arabian
Old_Turkic | Ol_Chiki | Oriya | Osmanya | Phags_Pa
Phoenician | Rejang | Runic | Samaritan | Saurashtra
Sharada | Shavian | Sinhala | Sora_Sompeng | Sundanese
Syloti_Nagri | Syriac | Tagalog | Tagbanwa | Tai_Le
Tai_Tham | Tai_Viet | Takri | Tamil | Telugu
Thaana | Thai | Tibetan | Tifinagh | Ugaritic
Vai | Yi |  |  |

\X 转义匹配任意数量的 Unicode 字符。 \X 等价于 (?>\PM\pM*)

也就是说，它匹配一个没有 "mark" 属性的字符，紧接着任意多个由 "mark" 属性的字符。 并将这个序列认为是一个原子组(详见下文)。 典型的有 "mark" 属性的字符是影响到前面的字符的重音符。

用 Unicode 属性来匹配字符并不快， 因为 PCRE 需要去搜索一个包含超过 15000 字符的数据结构。 这就是为什么在 PCRE中 要使用传统的转义序列\d、 \w 而不使用 Unicode 属性的原因。

转义序列(反斜线)
锚
PCRE 正则语法


锚

在一个字符类外面，在默认匹配模式下， ^ 是一个断言当前匹配点位于目标字符串开始处的断言。在一个字符类内部， ^ 表明这个字符类中描述的字符取反(详见下文)。

^ 并不一定要是模式的第一个字符， 但是如果处于某个可选分支时， 它应该是该分支的首字符。如果所有选择分支都以 ^ 开头，这就是说， 如果模式限制为只匹配目标的开头， 它被称为是一个 "紧固" 模式。(同样也有其他方式可以构造出紧固模式)

$ 是用于断言当前匹配点位于目标字符串末尾， 或当目标字符串以换行符结尾时当前匹配点位于该换行符位置(默认情况)。 $ 不一定要作为模式的最后一个字符，但是如果它在某个可选分支中时， 就应该位于该分支的末尾。 $ 在字符类中没有特殊的意义。

$ 的意义可以通过在编译或匹配时设置 PCRE_DOLLAR_ENDONLY 改变为只匹配字符串末尾。 这不会影响 \Z 断言的行为。

^ 和 $ 字符的意义在 PCRE_MULTILINE 选项被设置时会发生变化。 当在这种情况下时， 它们匹配每一个换行符后面的和前面的字符，另外， 也会匹配目标字符串的开始和结束。比如, 模式 /^abc$/ 在多行模式下会成功匹配目标字符串 "def\nabc"， 而正常情况下不会。因此，由于所有的可选分支都以 ^ 开始， 在单行模式下这成为紧固模式，然而在多行模式下，这是非紧固的。 PCRE_DOLLAR_ENDONLY 选项在PCRE_MULTILINE 设置后失效。

注意： \A、\Z、 \z 等转义序列可以在任何模式下用于匹配目标字符串的开始和结束位置。 并且如果模式的所有分支都以 \A 开始，它同样是紧固的， 而与 PCRE_MULTILINE 是否设置无关。

Unicode字符属性
句点
PCRE 正则语法


句点

在字符类外部，模式中的句点匹配目标字符串中的任意字符，包括非打印字符， 但是(默认)不包括换行符。如果 PCRE_DOTALL 被设置，句点就会匹配换行符。 句点的处理和^、$的处理没有关联，它们唯一的关系是它们都涉及到了换行符。 句点在字符类中没有任何意义。

\C可以被用于匹配单字节， 也就是说在UTF-8模式下，句点可以匹配多字节字符。

锚
字符类(方括号)
PCRE 正则语法


字符类(方括号)

左方括号开始一个字符类的描述，并以方中括号结束。 单独的一个右方括号没有特殊含义。如果一个右方括号需要作为一个字符类中的成员, 那么可以将它写在字符类的首字符处(如果使用了^取反， 那么是第二个)或者使用转义符。

一个字符类在目标字符串中匹配一个单独的字符； 该字符必须是字符类中定义的字符集合的其中一个, 除非使用了 ^ 对字符类取反。 如果^需要作为一个字符类的成员，确保它不是该字符类的首字符， 或者对其进行转义即可。

例如，字符类[aeiou]匹配所有的小写元音字母， 而[^aeiou]匹配所有非元音字母的字符。注意： ^只是一个通过枚举指定那些不存在字符类之中的字符的便利符号。而不是断言， 它仍然会从目标字符串中消耗一个字符，并且如果当前匹配点在目标字符串末尾， 匹配将会失败。

当大小写无关匹配被设置后，任意字符类都同时代表大小写两种版本，因此对于例子， 一个大小写不敏感的[aeiou]同时匹配"A"和"a"， 并且大小写不敏感的[^aeiou]同时不匹配 "A"。

换行符在字符类中没有任何特殊涵义， 与 PCRE_DOTALL 或 PCRE_MULTILINE 选项都无关。 一个字符类比如 [^a] 始终会匹配换行符。

在字符类中，一个中划线(减号 -)可以用于指定从一个字符到另一个字符的范围。 比如，[d-m]匹配d到m之间的所有字符，这个集合时闭合的。 如果中划线自身要在一个字符类中描述， 它必须被转移或者出现在一个不会被解释为一个范围的位置， 典型的比如字符类开始或结束位置。

在一个字符范围描述后面不能使用右中括号。 比如一个模式 [W-]46] 被解释为一个包含 W 和 - 的字符类，后面紧跟字符串 "46]"， 因此它可以匹配 "W46]" 或 "-46]"。然而， 如果中括号是经过转义的， 它将会被解释为范围的终点， 因此 [W-\]46] 就会被解释为一个单独的包含 W 至 ] 范围内所有字符以及 4、6 的字符类。 8 进制或 16 进制描述的中括号同样可以用于作为范围的终点。

范围操作以 ASCII 整理排序。它们可以用于为字符指定数值，比如 [\000-\037]。 如果在大小写不敏感匹配模式下使用一个包含字母的范围， 则同时匹配它的大小写形式。 比如 [W-c] 在不区分大小写匹配时等价于 [][\^_`wxyzabc]，并且， 如果使用了 "fr"(法国) 的地域设置字符表时， [\xc8-xcb] 将会在所有模式下匹配重音E字符。

字符类\d、\D、 \s、\S、\w 和 \W 也可以出现在一个字符类中， 用以将其匹配的字符类加入到新的自定义字符类中。比如， [\dABCDEF] 匹配任意合法的 16 进制数。用 ^ 可以很方便的制定严格的字符类， 比如 [^\W_] 匹配任何字母或数字，但不匹配下划线。

所有非字母数字字符除了\、-、 ^(在起始位置)以及结束的]在字符类中都是非特殊字符， 没有转义也不会有危害。模式结束符在表达式中总是特殊字符，必须进行转义。

Perl 支持 POSIX 字符类符号。这种字符类使用[:和:]闭合。 PCRE 同样支持这些字符类， 比如，[01[:alpha:]%]匹配 "0"、"1"、任意字母或"%"。 支持的字符类如下：

Character classes
alnum | 字母和数字
alpha | 字母
ascii | 0 - 127的ascii字符
blank | 空格和水平制表符
cntrl | 控制字符
digit | 十进制数(same as \d)
graph | 打印字符, 不包括空格
lower | 小写字母
print | 打印字符,包含空格
punct | 打印字符, 不包括字母和数字
space | 空白字符 (比\s多垂直制表符)
upper | 大写字母
word | 单词字符(same as \w)
xdigit | 十六进制数字
空白字符有HT(9)、 LF(10)、VT(11)、 FF(12)、CR(13)、space(32)。 注意， 这个列表包含了垂直制表符。这使得space不同于\s， 因为它不包含垂直制表符(为了向 perl 兼容)

[:word:]是一个 perl扩展，[:blank:]是一个从 Perl5.8 中来的 GNU 扩展。 另外一个 perl 扩展是取反，通过前置一个^。 比如， [12[:^digit:]] 匹配"1", "2" 或任何非数字字符

在 UTF-8 模式，大于 128 的字符值不会匹配任何 POSIX 字符类。

句点
可选路径(|)
PCRE 正则语法


可选路径(|)

竖线字符用于分离模式中的可选路径。 比如模式gilbert|Sullivan匹配 "gilbert" 或者 "sullivan"。 竖线可以在模式中出现任意多个，并且允许有空的可选路径(匹配空字符串)。 匹配的处理从左到右尝试每一个可选路径，并且使用第一个成功匹配的。 如果可选路径在子组(下面定义)中， 则"成功匹配"表示同时匹配了子模式中的分支以及主模式中的其他部分。

字符类(方括号)
内部选项设置
PCRE 正则语法


内部选项设置

PCRE_CASELESS, PCRE_MULTILINE, PCRE_DOTALL, PCRE_UNGREEDY, PCRE_EXTRA, PCRE_EXTENDED and PCRE_DUPNAMES 等模式修饰符设置可以在模式内部通过一个 perl 选项字符序列来设置， 语法为:(?修饰符)，可用的修饰符有：

Internal option letters
i | for PCRE_CASELESS
m | for PCRE_MULTILINE
s | for PCRE_DOTALL
x | for PCRE_EXTENDED
U | for PCRE_UNGREEDY
X | for PCRE_EXTRA
J | for PCRE_INFO_JCHANGED

比如，(?im) 设置表明多行大小写不敏感匹配。同样可以用它来取消这些设置， 比如 (?im-sx) 设置了 PCRE_CASELESS，PCRE_MULTILINE， 但是同时取消了 PCRE_DOTALL 和 PCRE_EXTENDED。 如果一个字母即出现在 - 之前, 也出现在 - 之后，这个选项被取消设置。

当一个选项在模式的最上级(也就是说不在子组中)时， 这个改变会影响模式中剩余部分。比如 /ab(?i)c/ 仅仅匹配 "abc" 和 "abC"。 这个形式在 PCRE 4.0(PHP 4.3.3) 中被改变。在此之前的版本中， /ab(?i)c/ 行为和 /abc/i 完全一致。

如果一个选项在子组中设置，产生的影响是不同的。这是 perl 5.005 中行为的一个变种。 一个选项在子组内部设置，仅仅改变子组中剩余的部分， 因此 (a(?i)b)c 仅仅匹配 "abc" 和 "aBc" (假设没有使用 PCRE_CASELESS 选项)。 这就意味着选项在模式的不同位置可以造成不同的影响。 在同一个子模式中， 一个分支的选项设置回穿透到后面剩余的其他分支中去。 比如 (a(?i)b|c) 匹配"ab"， "aB"， "c" 和 "C"。 尽管在匹配 "C" 时第一个分支会在选项被设定前就被丢弃。 这是因为选项的设定是在编译期确定的，否则可能会带来非常怪异的行为。

PCRE 专用选项 PCRE_UNGREEDY 和 PCRE_EXTRA 可以和 perl 兼容选项以同样的方式来改变， 分别使用字母 U 和 X. (?X) 标记设定有些特殊，它必须出现在任何其他特性之前， 最好放在最开头的位置。

可选路径(|)
子组(子模式)
PCRE 正则语法


子组(子模式)

子组通过圆括号分隔界定，并且它们可以嵌套。 将一个模式中的一部分标记为子组(子模式)主要是来做两件事情：

  1. 将可选分支局部化。比如，模式cat(arcat|erpillar|)匹配 "cat"， "cataract"， "caterpillar" 中的一个，如果没有圆括号的话，它匹配的则是 "cataract"， "erpillar" 以及空字符串。

  2. 将子组设定为捕获子组(向上面定义的). 当整个模式匹配后， 目标字符串中匹配子组的部分将会通过 pcre_exec()() 的 ovector 参数回传给调用者。 左括号从左至右出现的次序就是对应子组的下标(从 1 开始)， 可以通过这些下标数字来获取捕获子模式匹配结果。

比如，如果字符串 "the red king" 使用模式((red|white) (king|queen)) 进行匹配， 模式匹配到的结果是 array("red king"， "red king", "red", "king") 的形式， 其中第 0 个元素是整个模式匹配的结果，后面的三个元素依次为三个子组匹配的结果。 它们的下表分别为 1， 2， 3。

事实上，圆括号履行的两种功能并不总是有用的。 经常我们会有一种需求需要使用子组进行分组， 但又不需要(单独的)捕获它们。 在子组定义的左括号后面紧跟字符串 "?:" 会使得该子组不被单独捕获， 并且不会对其后子组序号的计算产生影响。比如, 如果字符串 "the white queen" 匹配模式 ((?:red|white) (king|queen))，匹配到的结果会是 array("white queen"、"white queen"、"white queen")，的和 king|queen 这两个子组。 捕获子组序号的最大值是 99， 最大允许拥有的所有子组(包括捕获的和非捕获的)的最大数量为 200。

为了方便简写，如果需要在非捕获子组开始位置设置选项， 选项字母可以位于 ? 和 : 之间，比如：

(?i:saturday|sunday)
(?:(?i)saturday|sunday)

上面两种写法实际上是相同的模式。因为可选分支会从左到右尝试每个分支， 并且选项没有在子模式结束前被重置， 并且由于选项的设置会穿透对后面的其他分支产生影响，因此， 上面的模式都会匹配 "SUNDAY" 以及 "Saturday"。

在 PHP 4.3.3 中，可以对子组使用 (?P<name>pattern) 的语法进行命名。 这个子模式将会在匹配结果中同时以其名称和顺序(数字下标)出现， PHP 5.2.2中又增加了两种味子组命名的语法： (?<name>pattern) 和 (?'name'pattern)。

有时需要多个匹配可以在一个正则表达式中选用子组。 为了让多个子组可以共用一个后向引用数字的问题， (?| 语法允许复制数字。 考虑下面的正则表达式匹配Sunday：

(?:(Sat)ur|(Sun))day

这里当后向引用 1 空时Sun 存储在后向引用 2 中. 当后向引用 2 不存在的时候 Sat 存储在后向引用 1中。 使用 (?|修改模式来修复这个问题：

(?|(Sat)ur|(Sun))day

使用这个模式， Sun和Sat都会被存储到后向引用1中。

内部选项设置
重复/量词
PCRE 正则语法


重复/量词

重复次数是通过量词指定的，可以紧跟在下面元素之后：

  • 单独的字符, 可以是经过转义的
  • 元字符。
  • 字符类
  • 后向引用(参加下一部分)
  • 子组(除非它是一个断言)

一般的重复量词指定了一个最小数值和一个最大数值的匹配次数， 通过花括号包裹两个数字，两个数字之间用逗号隔开的语法定义。 两个数值都必须小于 65536， 并且第一个数字必须小于等于第二个。 比如： z{2,4} 匹配 "zz"， "zzz"， "zzzz"。 单个的右花括号不是特殊字符。 如果第二个数字被省略，但是逗号仍然存在，就代表没有上限； 如果第二个数字和逗号都被省略，那么这个量词就限定的是一个确定次数的匹配。 比如 [aeiou]{3,} 匹配至少三个连续的元音字母，但是同时也可以匹配更多， 而 \d{8} 则只能匹配 8 个数字。 左花括号出现在不允许使用量词的位置或者与量词语法不匹配时， 被认为是一个普通字符，对它自身进行原文匹配。 比如，{,6}就不是一个量词， 会按照原文匹配四个字符 "{,6}"。

量词 {0} 是被授权的，它会导致的行为是认为前面的项和量词不存在。

为了方便(以及历史的兼容性)，最常用的三个量词都有单字符缩写。

单字符量词
* | 等价于 {0,}
+ | 等价于 {1,}
? | 等价于 {0,1}

可以通过一个不匹配任何字符的子模式后面紧跟一个匹配 0 或多个字符的量词来构造一个没有上限的无限循环。 比如：(a?)*

早期版本的 perl 和 pcre 对于这种模式会在编译期得到一个错误。然而， 由于这在某些情况下是有用的，因此现在也接受这种模式了， 但是如果任何子模式的重复确实匹配不到任何字符，循环会被强制跳出。

默认情况下，量词都是"贪婪"的，也就是说， 它们会在不导致模式匹配失败的前提下，尽可能多的匹配字符(直到最大允许的匹配次数)。 这种问题的典型示例就是尝试匹配C语言的注释。 出现在 /* 和 */ 之间的所有内容都被认为是注释， 在注释中间， 可以允许出现单独的 * 和 /。 对C注释匹配的一个尝试是使用模式 /\*.*\*/， 假设将此模式应用在字符串 "/* first comment*/ not comment /*second comment*/" 它会匹配到错误的结果，也就是整个字符串， 这是因为量词的贪婪性导致的，它会尝试尽可能多的匹配字符。

然而，如果一个量词紧跟着一个 ?(问号) 标记，它就会成为懒惰(非贪婪)模式， 它不再尽可能多的匹配，而是尽可能少的匹配。 因此模式 /\*.*?\*/ 在 C 的注释匹配上将会正确的执行。 各个量词自身的意义并不会改变，而是由于加入了 ? 使其首选的匹配次数发生改变。 不要将 ? 的这个用法和它作为量词的用法混淆。因为它又两种用法， 因此有时它会出现量词，比如 \d??\d 会更倾向于匹配一个数字， 但同时如果为了达到整个模式匹配的目的，它也可以接受两个数字的匹配。译注： 以模式 \w\d??\d\w 为例，对于字符串 "a33a"，虽然 \d?? 是非贪婪的， 但由于如果使用贪婪会导致整个模式不匹配，所以， 最终它选择的仍然是匹配到一个数字。

如果 PCRE_UNGREEDY 选项被设置(一个在 perl 中不可用的选项)， 那么量词默认情况下就是非贪婪的了。但是， 单个的量词可以通过紧跟一个 ? 来使其成为贪婪的。换句话说， PCRE_UNGREEDY 这个选项逆转了贪婪的默认行为。

量词后面紧跟一个 "+" 是"占有"性。它会吃掉尽可能多的字符， 并且不关注后面的其他模式，比如 .*abc 匹配 "aabc"， 但是 .*+abc 不会匹配， 因为 .*+ 会吃掉整个字符串，从而导致后面剩余的模式得不到匹配。 自PHP 4.3.3 起， 可以使用占有符 (+) 修饰量词来达到提升速度的目的。

当一个子组受最小数量大于 1 或有一个最大数量限制的量词修饰时， 按照最小或最大的数量的比例需要更多的存储用于编译模式。

如果一个模式以 .* 或 .{0,} 开始并且 PCRE_DOTALL 选项开启(等价于 perl 的/s)， 也就是允许.匹配换行符，那么模式会隐式的紧固，因为不管怎么样， 接下来都会对目标字符串中的每个字符位置进行尝试，因此在第一次之后， 在任何位置都不会有一个对所有匹配重试的点。 PCRE 会想对待 \A 一样处理这个模式。 在我们已知目标字符串没有包含换行符的情况下， 当模式以 .* 开始的时候我们为了获得这个优化，值得设置 PCRE_DOTALL， 或者选择使用 ^ 明确指明锚定。

译注：这里的优化指模式不匹配之后，不会回头再来查找下一个位置， 比如没有设置 PCRE_DOTALL，并且目标字符串第一个字符时换行符， 那么模式尝试第一个字符，发现不匹配， 会重新用模式从第二个字符位置开始进行尝试。 而使用了PCRE_DOTALL后， 是肯定匹配的....同理，当使用了 ^ 或者 /A的限定是，模式一旦不匹配，都可以直接退出， 而不用在目标字符串下一个位置再一次开始整个模式的匹配。

当一个捕获子组时重复的时，捕获到的该子组的结果是最后一次迭代捕获的值。比如， (tweedle[dume]{3}\s*)+匹配字符串 "tweedledum tweedledee"， 得到的的子组捕获结果是 "tweedledee"。然而，如果是嵌套的捕获子组， 相应的捕获值可能会被设置到之前的迭代中。比如，/(a|(b))+/ 匹配字符串 "aba"， 第二个捕获子组得到的结果会是 "b"。译注：不理解然而之后的部分，以例子说明， b 是第二个子组最后一次捕获到的结果，所以， 第二个子组最后结果是 b， 这是符合"然而"之前描述的规则的。

子组(子模式)
后向引用
PCRE 正则语法


后向引用

在一个字符类外面， 反斜线紧跟一个大于 0 (可能还有一位数)的数字就是一个到模式中之前出现的某个捕获组的后向引用。

如果紧跟反斜线的数字小于 10， 它总是一个后向引用， 并且如果在模式中没有这么多的捕获组会引发一个错误。 换一种说法， 被引用的括号不能少于被引用的小于 10 的数量。 查看上面的"反斜线"部分查看具体的数字处理方式。

一个后向引用会直接匹配被引用捕获组在目标字符串中实际捕获到的内容， 而不是匹配子组模式的内容。因此，模式(sens|respons)e and \1ibility将会匹配 "sense and sensibility" 和 "response and responsibility"， 而不会匹配 "sense and responsibility"。 如果在后向引用时被强制进行了大小写敏感匹配, 比如 ((?i)rah)\s+\1 匹配 "rah rah"和"RAH RAH"，但是不会匹配 "RAH rah"， 即使原始捕获子组自身是不区分大小写的。 译注： 这里其实要考虑的是后向引用期望得到的内容是和那个被引用的捕获子组得到的内容是完全一致的(当然， 我们可以通过在后向引用之前设定内部选项使其不区分大小写，或者增加模式修饰符， 同样可以达到不区分大小写的目的，但是, 这种做法实际上是从外部对其行为进行了控制。)

可能会有超过一个的后向引用引用相同的子组。 一个子组可能并不会真正的用于特定的匹配，此时， 任何对这个子组的后向引用也都会失败。 比如， 模式 (a|(bc))\2 总是在匹配 "a" 开头而不是 "bc" 开头的字符串时失败。 因为可能会有多达 99 个后向引用， 所有紧跟反斜线后的数字都可能是一个潜在的后向引用计数。 如果模式在后向引用之后紧接着还是一个数值字符， 那么必须使用一些分隔符用于终结后向引用语法。 如果 PCRE_EXTENDED 选项被设置了， 可以使用空格来做。其他情况下可以使用一个空的注释。

如果一个后向引用出现在它所引用的子组内部， 它的匹配就会失败。比如， (a\1) 就不会得到任何匹配。然而这种引用可以用于内部的子模式重复。比如， 模式 (a|b\1)+ 会匹配任意数量的 "a" 组成的字符串以及 "aba"， "ababba" 等等(译注： 因为子组内部有一个可选路径，可选路径中有一条路能够完成匹配，在匹配完成后， 后向引用就能够引用到内容了)。在每次子模式的迭代过程中， 后向引用匹配上一次迭代时这个子组匹配到的字符串。为了做这种工作， 模式必须满足这样一个条件，模式在第一次迭代的时候， 必须能够保证不需要匹配后向引用。 这种条件可以像上面的例子用可选路径来实现，也可以通过使用最小值为 0 的量词修饰后向引用的方式来完成。

在 PHP 5.2.2之后， \g 转义序列可以用于子模式的绝对和相对引用。 这个转义序列必须紧跟一个无符号数字或一个负数， 可以选择性的使用括号对数字进行包裹。 序列\1， \g1，\g{1} 之间是同义词关系。 这种用法可以消除使用反斜线紧跟数值描述反向引用时候产生的歧义。 这种转义序列有利于区分后向引用和八进制数字字符， 也使得后向引用后面紧跟一个原文匹配数字变的更明了，比如 \g{2}1。

\g 转义序列紧跟一个负数代表一个相对的后向引用。比如： (foo)(bar)\g{-1} 可以匹配字符串 "foobarbar"， (foo)(bar)\g{2} 可以匹配 "foobarfoo"。 这在长的模式中作为一个可选方案， 用来保持对之前一个特定子组的引用的子组序号的追踪。

后向引用也支持使用子组名称的语法方式描述, 比如 (?P=name) 或者 PHP 5.2.2 开始可以实用\k<name> 或 \k'name'。 另外在 PHP 5.2.4 中加入了对\k{name} 和 \g{name} 的支持。

重复/量词
断言
PCRE 正则语法


断言

一个断言就是一个对当前匹配位置之前或之后的字符的测试， 它不会实际消耗任何字符。简单的断言代码有\b、\B、 \A、 \Z、\z、 ^、$ 等等。 更加复杂的断言以子组的方式编码。 它有两种类型： 前瞻断言(从当前位置向前测试)和后瞻断言(从当前位置向后测试)。

一个断言子组的匹配还是通过普通方式进行的， 不同在于它不会导致当前的匹配点发生改变。 前瞻断言中的正面断言(断言此匹配为真)以 "(?=" 开始，消极断言以 "(?!" 开头。比如， \w+(?=;) 匹配一个单词紧跟着一个分号但是匹配结果不会包含分号， foo(?!bar) 匹配所有后面没有紧跟 "bar" 的 "foo" 字符串。 注意一个类似的模式 (?!foo)bar， 它不能用于查找之前出现所有不是 "foo" 的 "bar" 匹配， 它会查找到任意的 "bar" 出现的情况， 因为 (?!foo) 这个断言在接下来三个字符时 "bar" 的时候是永远都 TRUE 的。 前瞻断言需要达到的就是这样的效果。

后瞻断言中的正面断言以"(?<="开始, 消极断言以"(?<!"开始。比如， (?<!foo)bar 用于查找任何前面不是 "foo" 的 "bar"。 后瞻断言的内容被严格限制为只能用于匹配定长字符串。但是，如果有多个可选分支， 它们不需要拥有相同的长度。比如 (?<=bullock|donkey) 是允许的， 但是 (?<!dogs?|cats?) 将会引发一个编译期的错误。在最上级分支可以匹配不同长度的字符串是允许的。 相比较于 perl 5.005 而言，它会要求多个分支使用相同长度的字符串匹配。 (?<=ab(c|de)) 这样的断言是不允许的， 因为它单个的顶级分支可以匹配两个不同的长度， 但是它可以接受使用两个顶级分支的写法 (?<=abc|abde) 这样的断言实现， 对于每个可选分支，暂时将当前位置移动到尝试匹配的当前位置之前的固定宽度处。 如果在当前没有足够的字符就视为匹配失败。后瞻断言与一次性子组结合使用可以用来匹配字符串结尾； 一个例子就是在一次性子组上给出字符串结尾。

多个断言(任意顺序)可以同时出现。 比如 (?<=\d{3})(?<!999)foo 匹配前面有三个数字但不是 "999" 的字符串 "foo"。注意， 每个断言独立应用到对目标字符串该点的匹配。 首先它会检查前面的三位都是数字， 然后检查这三位不是 "999"。 这个模式不能匹配 "foo" 前面有三位数字然后紧跟 3 位非 999 共 6 个字符的字符串，比如， 它不匹配 "123abcfoo"。 匹配 "123abcfoo" 这个字符串的模式可以是(?<=\d{3}...)(?<!999)foo。

这种情况下，第一个断言查看(当前匹配点)前面的 6 个字符，检查前三个是数字， 然后第二个断言检查(当前匹配点)前三个字符不是 "999"。

断言可以以任意复杂度嵌套。 比如 (?<=(?<!foo)bar)baz 匹配前面有 "bar" 但是 "bar" 前面没有 "foo" 的 "baz"。 另外一个模式 (?<=\d{3}...(?<!999))foo 则匹配前面有三个数字字符紧跟 3 个不是 999 的任意字符的 "foo"。

断言子组时非捕获子组，并且不能用量词修饰， 因为对同一件事做多次断言是没有意义的.如果所有的断言都包含一个捕获子组， 那么为了在整个模式中捕获子组计数的目的，它们都会被计算在内。然而， 子字符串的捕获仅可以用于正面断言，因为对于消极的断言是没有意义的。

将断言计算在内，可以拥有的最大子组数量是 200 个。

后向引用
一次性子组
PCRE 正则语法


一次性子组

对于同时有最大值和最小值量词限制的重复项， 在匹配失败后， 紧接着会以另外一个重复次数重新评估是否能使模式匹配。 当模式的作者明确知道执行上没有问题时， 通过改变匹配的行为或者使其更早的匹配失败以阻止这种行为是很有用的。

考虑一个例子，模式 \d+foo 应用到目标行 123456bar 时：

在匹配了 6 个数字后匹配 "foo" 时失败，通常的行为时匹配器尝试使 \d+ 只匹配 5 个数字， 只匹配 4 个数字，在最终失败之前依次进行尝试。 一次性子组提供了一种特殊的意义， 当模式的一部分得到匹配后，不再对其进行重新评估， 因此匹配器在第一次匹配 "foo" 失败后就能立刻失败。语法符号是另外一种特殊的括号， 以 (?> 开始，比如 (?>\d+)bar。

这种括号对模式的一部分提供了"锁定"，当它包含一个匹配之后， 会阻止未来模式失败后对它内部的后向回溯。后向回溯在这里失效， 其他工作照常进行。

换一种说法，如果在目标字符串中当前匹配点是锚点， 这种类型的子组匹配的字符串等同于一个独立的模式匹配。

一次性子组不是捕获子组。如上面的例子，简单而言， 就是尽其所能吃掉尽可能多的匹配字符。因此， 尽管 \d+ 和 \d+? 都会调整要匹配的数字的个数以便模式的其他部分匹配， (?>\d+) 却仅能匹配整个数字序列。

这个(语法)结构可以包含任意复杂度的字符， 也可以嵌套。

一次性子组可以和后瞻断言结合使用来指定在目标字符串末尾的有效匹配。 考虑当一个简单的模式比如abcd$应用到一个不匹配的长字符串上。 由于匹配时从左到右处理的， PCRE会从目标中查找每一个 "a" 然后查看是否紧接着会匹配模式的剩余部分。 如果模式是^.*abcd$， 那么初始的 .* 将首先匹配整个字符串，但是当它失败后(因为紧接着不是 "a")， 它会回溯所有的匹配，依次吐出最后 1 个字符，倒数第 2 个字符等等。 从右向左查找整个字符串中的 "a"， 因此，我们不能很好的退出。然而， 如果模式写作 ^(?>.*)(?<=abcd) 那么它就不会回溯 .* 这一部分， 它仅仅用于匹配整个字符串。后瞻断言对字符串末尾的后四个字符做了一个测试。 如果它失败，匹配立即失败。对于长字符串， 这个模式将会带来显著的处理时间上的性能提升。

当一个模式中包含一个子组自己可以无限重复并且内部有无限重复元素时， 使用一次性子组是避免一些失败匹配消耗大量时间的唯一途径。 模式 (\D+|<\d+>)*[!?] 匹配一个不限制数目的非数字字符或由 <> 闭合的数字字符紧跟着 ! 或 ?。 当它匹配的时候，运行时快速的。然而， 如果它应用到 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" 上将会在报告错误之前消耗很多时间。 这是因为字符串可以用于两种重复规则，并且需要为两种重复规则都分配进行尝试。 (示例的结尾使用 [!?] 而不是单个的字符， 是因为 PCRE 和 perl 都会对模式最后是一个单独字符时的快速报错有优化。 它们会记录最后需要匹配的单个字符，当它们没有出现在字符串中时快速报错。) 如果模式修改为 ((?>\D+)|<\d+>)*[!?] 就会快速得到报错。(译注： 对于这里给出的模式，当目标字符串更长的时候，消耗时间会迅速增加，慎用。)

断言
条件子组
PCRE 正则语法


条件子组

可以使匹配器根据一个断言的结果， 或者之前的一个捕获子组是否匹配来条件式的匹配一个子组或者在两个可选子组中选择。 条件子组的两种语法如下：

(?(condition)yes-pattern)
(?(condition)yes-pattern|no-pattern)

如果条件满足，使用 yes-pattern，其他情况使用 no-pattern(如果指定了)。 如果有超过 2 个的可选子组，会产生给一个编译期错误。

条件一共有两种。如果在(condition)的括号内是数字组成的文本， 条件在该数字代表的(之前的)子组得到匹配时满足(即使用 yes-pattern)。 考虑下面的模式， 为了使其易于阅读其中增加了一些空白字符(查看PCRE_EXTENDED 选项)并且将其分为三个部分： ( \( )? [^()]+ (?(1) \) )

模式的第一部分匹配一个可选的左括号，并且如果该字符出现， 设置其为第一个子组的捕获子串。第二部分匹配一个或多个非括号字符。 第三部分是一个条件子组，它会测试第一个子组是否匹配，如果匹配到了， 也就是说目标字符串以左括号开始，条件为TRUE， 那么使用 yes-pattern 也就是这里需要匹配一个右括号。其他情况下， 既然 no-pattern 没有出现，这个子组就不匹配任何东西。换句话说， 这个模式匹配一个没有括号的或者闭合括号包裹的字符序列。

如果条件式字符串 (R)，它在得到对模式或子模式的递归调用时满足。 在"最上级"， 条件总是false。

如果条件不是数字序列或(R)，它就必须是一个断言。这里的断言可以使任意的，积极， 消极，正向，后向都是可以的。考虑这个模式， 同样为了方便阅读， 增加了一些空白字符，并且在第二行有两个可选路径。

(?(?=[^a-z]*[a-z])
\d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} )

条件式一个正向积极断言，匹配一个可选的非小写字母字符序列紧接着一个小写字母。 换一种说法，它测试目标中至少出现一个小写字母，如果小写字母发现， 目标匹配第一个可选分支，其他情况下它匹配第二个分支。 这个模式匹配两种格式的字符串：dd-aaa-dd 或 dd-dd-dd。aaa 代表小写字母， dd 是数字。

一次性子组
注释
PCRE 正则语法


注释

字符序列(?#标记开始一个注释直到遇到一个右括号。不允许嵌套括号。 注释中的字符不会作为模式的一部分参与匹配。

如果设置了 PCRE_EXTENDED 选项， 一个字符类外部的未转义的 # 字符就代表本行剩余部分为注释。

条件子组
递归模式
PCRE 正则语法


递归模式

考虑匹配圆括号内字符串的问题，允许无限嵌套括号。如果不使用递归， 最好的方式是使用一个模式匹配固定深度的嵌套。它不能处理任意深度的嵌套。 perl 5.6 提供了一个实验性的功能允许正则表达式递归。 特殊项 (?R) 提供了递归的这种特殊用法。 这个PCRE模式解决了圆括号问题(假设 PCRE_EXTENDED 选项被设置了， 因此空白字符被忽略)： \( ( (?>[^()]+) | (?R) )* \)。

首先，它匹配一个左括号。 然后它匹配任意数量的非括号字符序列或一个模式自身的递归匹配(比如， 一个正确的括号子串)，最终，匹配一个右括号。

这个例子模式包含无限重复的嵌套，因此使用了一次性子组匹配非括号字符， 这在模式应用到模式不匹配的字符串时非常重要。比如， 当它应用到 (aaaaaaaaaaaaaaaaaaaaaaaaaaaaa() 时就会很快的产生"不匹配"结果。 然而，如果不使用一次性子组，这个匹配将会运行很长时间， 因为有很多途径让 + 和 * 重复限定分隔目标字符串， 并且在报告失败之前需要测试所有路径。

所有捕获子组最终被设置的捕获值都是从递归最外层子模式捕获的值。 如果上面的模式匹配 (ab(cd)ef)，捕获子组最终被设置的值为 "ef"， 即顶级得到的最后一个值。如果增加了额外的括号，\( ( ( (?>[^()]+) | (?R) )* ) \)，捕获到的字符串就是顶层括号的匹配内容 "ab(cd)ef"。 如果在模式中有超过 15 个捕获括号， PCRE 在递归期间就会使用 pcre_malloc 分配额外的内存来存储数据， 随后通过 pcre_free 释放他们。如果没有内存可被分配，它就仅保存前 15 个捕获括号， 在递归内部无法给出内存不够用的错误。

从 PHP 4.3.3 开始, (?1)、(?2) 等可以用于递归子组。这同样可以用于命名子组： (?P>name) 或 (?P&name)。

如果递归子组语法在它提到的子组括号外部使用(无论是子组数字序号还是子组名称)， 这个操作就相当于程序设计语言中的子程序。 前面一些有一个例子指出模式 (sens|respons)e and \1ibility 匹配 "sense and responsibility" 和 "response and responsibility"，但是不匹配 "sense and responsibility"。如果用模式 (sens|respons)e and (?1)ibility 替代， 它会像匹配那两个字符串一样匹配 "sense and responsibility"。 这种引用方式意义是紧接着匹配引用的子模式。(译注: 后向引用只匹配引用的子组之前匹配的结果, 这里的递归语法引用是拿引用的子模式重新匹配。)

目标字符串的最大长度是 int 型变量可以存储的最大正整数。然而， PCRE 使用递归处理子组和无限重复。 这就是说对于某些模式可用的栈空间可能会受目标字符串限制。

注释
性能
PCRE 正则语法


性能

模式中一些项可能比其他一些更加高效。 比如使用 [aeiou] 这样的字符类会比可选路径 (a|e|i|o|u) 高效。 一般而言， 用尽可能简单的构造描述需求是最搞笑的。 Jeffrey Friedl 书(精通正则表达式)中包含了很多关于正则表达式性能的讨论。

当一个模式以 .* 开始并且设置了 PCRE_DOTALL 选项时，模式通过PCRE隐式锚定， 因为它可以匹配字符串的开始。然而，如果 PCRE_DOTALL 没有设置， PCRE 不能做这个优化，因为.元字符不能匹配换行符，如果目标字符串包含换行符， 模式可能会从一个换行符后面开始匹配，而不是最开始位置。 比如，模式 (.*) second 匹配目标字符串 "first\nand second"(\n 是一个换行符)第一个捕获子组结果是 "and"。为了这样做， PCRE 尝试从目标字符串中每个换行符后开始匹配。

如果你使用模式匹配没有换行符的目标字符串， 可以通过设置 PCRE_DOTALL 或以 ^.* 开始的模式明确指示锚定以获取最佳性能。 这样节省了 PCRE 沿目标字符串扫描查找换行符重新开始的时间。

小心模式中的无限重复嵌套。这在应用到不匹配字符串时可能会导致运行时间很长。 考虑模式片段 (a+)*。

这个模式可以有 33 种方式匹配 "aaaa"， 并且这个数字会随着字符串的长度的增加迅速增加. (*重复可以匹配0,1,2,3,4次, 并且除了0外每种情况+都有不同次数的匹配对应)。 当模式的剩余部分导致整个匹配失败的时候， PCRE原则上回尝试每种可能的变化， 这将会非常耗时。

对于一些简单的情况的优化是像 (a+)*b 这样紧接着使用原文字符串.。 在着手正式匹配工作之前，PCRE 检查目标字符串后面是否有 "b" 字符， 如果没有就立即失败。然而当紧接着没有原文字符的时候这个优化是不可用的。 你可以比较观察 (a+)*\d 和上面模式的行为差异。 前者在应用到整行的 "a" 组成的字符串时几乎是立即报告失败， 而后者在目标字符串长于 20 个字符时，时间消耗就相当可观。

递归模式
正则表达式模式中可用的模式修饰符
PCRE 正则语法


模式修饰符

下面列出了当前可用的 PCRE 修饰符。括号中提到的名字是 PCRE 内部这些修饰符的名称。 模式修饰符中的空格，换行符会被忽略，其他字符会导致错误。

i (PCRE_CASELESS)
如果设置了这个修饰符，模式中的字母会进行大小写不敏感匹配。
m (PCRE_MULTILINE)
默认情况下，PCRE 认为目标字符串是由单行字符组成的(然而实际上它可能会包含多行)， "行首"元字符 (^) 仅匹配字符串的开始位置， 而"行末"元字符 ($) 仅匹配字符串末尾， 或者最后的换行符(除非设置了 D 修饰符)。这个行为和 perl 相同。 当这个修饰符设置之后，"行首"和"行末"就会匹配目标字符串中任意换行符之前或之后，另外， 还分别匹配目标字符串的最开始和最末尾位置。这等同于 perl 的 /m 修饰符。如果目标字符串 中没有 "\n" 字符，或者模式中没有出现 ^ 或 $，设置这个修饰符不产生任何影响。
s (PCRE_DOTALL)
如果设置了这个修饰符，模式中的点号元字符匹配所有字符，包含换行符。如果没有这个 修饰符，点号不匹配换行符。这个修饰符等同于 perl 中的/s修饰符。 一个取反字符类比如 [^a] 总是匹配换行符，而不依赖于这个修饰符的设置。
x (PCRE_EXTENDED)
如果设置了这个修饰符，模式中的没有经过转义的或不在字符类中的空白数据字符总会被忽略， 并且位于一个未转义的字符类外部的#字符和下一个换行符之间的字符也被忽略。 这个修饰符 等同于 perl 中的 /x 修饰符，使被编译模式中可以包含注释。 注意：这仅用于数据字符。 空白字符 还是不能在模式的特殊字符序列中出现，比如序列 (?( 引入了一个条件子组(译注: 这种语法定义的 特殊字符序列中如果出现空白字符会导致编译错误。 比如(?(就会导致错误)。
e (PREG_REPLACE_EVAL)
Warning

本特性已自 PHP 5.5.0 起废弃。强烈建议不要使用本特性。

如果设置了这个被弃用的修饰符， preg_replace() 在进行了对替换字符串的 后向引用替换之后, 将替换后的字符串作为php 代码评估执行(eval 函数方式)，并使用执行结果 作为实际参与替换的字符串。单引号、双引号、反斜线(\)和 NULL 字符在 后向引用替换时会被用反斜线转义.
Caution

The addslashes() function is run on each matched backreference before the substitution takes place. As such, when the backreference is used as a quoted string, escaped characters will be converted to literals. However, characters which are escaped, which would normally not be converted, will retain their slashes. This makes use of this modifier very complicated.

Caution

请确保 replacement 参数由合法 php 代码字符串组成，否则 php 将会 在preg_replace() 调用的行上产生一个解释错误。

Caution

Use of this modifier is discouraged, as it can easily introduce security vulnerabilites:

<?php
$html = $_POST['html'];

// uppercase headings
$html = preg_replace(
    '(<h([1-6])>(.*?)</h\1>)e',
    '"<h$1>" . strtoupper("$2") . "</h$1>"',
    $html
);

The above example code can be easily exploited by passing in a string such as <h1>{${eval($_GET[php_code])}}</h1>. This gives the attacker the ability to execute arbitrary PHP code and as such gives him nearly complete access to your server.

To prevent this kind of remote code execution vulnerability the preg_replace_callback() function should be used instead:

<?php
$html = $_POST['html'];

// uppercase headings
$html = preg_replace_callback(
    '(<h([1-6])>(.*?)</h\1>)',
    function ($m) {
        return "<h$m[1]>" . strtoupper($m[2]) . "</h$m[1]>";
    },
    $html
);

Note:

仅 preg_replace() 使用此修饰符，其他 PCRE 函数忽略此修饰符。

A (PCRE_ANCHORED)
如果设置了这个修饰符，模式被强制为"锚定"模式，也就是说约束匹配使其仅从 目标字符串的开始位置搜索。这个效果同样可以使用适当的模式构造出来，并且 这也是 perl 种实现这种模式的唯一途径。
D (PCRE_DOLLAR_ENDONLY)
如果这个修饰符被设置，模式中的元字符美元符号仅仅匹配目标字符串的末尾。如果这个修饰符 没有设置，当字符串以一个换行符结尾时， 美元符号还会匹配该换行符(但不会匹配之前的任何换行符)。 如果设置了修饰符m，这个修饰符被忽略. 在 perl 中没有与此修饰符等同的修饰符。
S
当一个模式需要多次使用的时候，为了得到匹配速度的提升，值得花费一些时间 对其进行一些额外的分析。如果设置了这个修饰符，这个额外的分析就会执行。当前， 这种对一个模式的分析仅仅适用于非锚定模式的匹配(即没有单独的固定开始字符)。
U (PCRE_UNGREEDY)
这个修饰符逆转了量词的"贪婪"模式。 使量词默认为非贪婪的，通过量词后紧跟? 的方式可以使其成为贪婪的。这和 perl 是不兼容的。 它同样可以使用 模式内修饰符设置 (?U)进行设置， 或者在量词后以问号标记其非贪婪(比如.*?)。

Note:

在非贪婪模式，通常不能匹配超过 pcre.backtrack_limit 的字符。

X (PCRE_EXTRA)
这个修饰符打开了 PCRE 与 perl 不兼容的附件功能。模式中的任意反斜线后就 ingen 一个 没有特殊含义的字符都会导致一个错误，以此保留这些字符以保证向后兼容性。 默认情况下，在 perl 中，反斜线紧跟一个没有特殊含义的字符被认为是该字符的原文。 当前没有其他特性由这个修饰符控制。
J (PCRE_INFO_JCHANGED)
内部选项设置(?J)修改本地的PCRE_DUPNAMES选项。允许子组重名， (译注：只能通过内部选项设置，外部的 /J 设置会产生错误。)
u (PCRE_UTF8)
此修正符打开一个与 perl 不兼容的附加功能。 模式字符串被认为是utf-8的. 这个修饰符 从 unix 版php 4.1.0 或更高，win32版 php 4.2.3 开始可用。 php 4.3.5 开始检查模式的 utf-8 合法性。

性能
与 perl 的不同之处
PCRE模式


与 perl 的不同之处

这里讨论的不同之处是与 perl 5.005相比的。

  1. 尽管可以使用字符类编译 pcre 进行替代，但仍然默认使用 c 库函数 isspace() 判定一个字符是否是空白字符。通常 isspace() 匹配空格、换页符、换行符、 回车符、水平制表符和垂直制表符。 Perl5 不再将垂直制表符包括到空白字符集中。 \v 这个转义实际上在很长时间都没有得到 perl 文档的承认。然而，这个字符自身 被认为是一个空白字符至少是在 5.002 以上。 在 5.004 和 5.005 它不和 \s 匹配。
  2. PCRE 不允许前瞻断言的量词修饰，perl 允许这样做，但是这并不是你想象的那样。 例如，(?!a){3}并不意味着接下来 3 个字符不是 a，而是断言下一个字符不是 a 并进行了 3 次断言.
  3. 捕获子组发生在消极前瞻断言中时被计算在内，但是在偏移向量中并没有设置它们的条目。 Perl 从断言失败之前匹配得到的这些模式匹配结果中设置了它的数值变量(因此是成功的)， 但这也仅在消极前瞻断言只有一个分支的时候。
  4. 尽管目标字符串中支持二进制 0 字符，但是它们在模式字符串中是不允许的，因为它们是通过普通的 c 字符串传递的，而 c 字符串是以 0 字符结束的。转义序列"\x00"可以在模式中表示二进制 0 字符。
  5. 不支持下面的 perl 转义序列：\l、\u、 \L、 \U。 实际上这些都是通过 perl 一般的字符串处理来实现 的，而不是模式匹配引擎的一部分。
  6. 不支持 perl 的 \G 断言，因为它与单模式匹配没有关系。
  7. 很显然，PCRE不支持(?{code}) 和 (??{code})的结构，但是它支持递归模式。
  8. 在 perl 5.005_2 中档设置为捕获字符串的模式中有部分重复的时候会有一些古怪的现象发生， 比如: /^(a(b)?)+$/ 捕获 aba 的时候， $2 会被设置为 b，然而，如果把模式修改为/^(aa(bb)?)+$/， 用aabbaa去匹配，$2讲不会得到匹配结果。 如果将模式修改为 /^(aa(b(b))?)+$/， $2 和 $3 又都能 得到匹配结果。在 perl 5.004 中 $2 在这几种情况下都能够得到匹配结果，并且 pcre 也是这样。如果 未来 perl 修改为一致那就不同了。pcre 可能接下来会修改.
  9. 还有一个没有解决的差异是 perl 5.005_02中，模式 /^(a)?(?(1)a|b)+$/ 会匹配字符串 "a"， 而 pcre 中不会，然而，perl 和 pcre 中 /^(a)?a/ 匹配 "a" 都会得到相同的结果，$1 都未被设置。

  10. PCRE 提供了一些对 perl 正则表达式的扩展：

    1. 虽然后瞻断言要求必须匹配固定长度的字符串，然而后瞻断言的每个可选分支 还是可以使用不同长度的字符串的，而perl 5.005 中要求它们必须拥有同样 的长度。
    2. 如果设置了 PCRE_DOLLAR_ENDONLY 并且没有设置 PCRE_MULTILINE， 元字符 $ 仅仅匹配字符串的末尾(而不是某个换行符之前)。
    3. 如果设置了 PCRE_EXTRA， 反斜线后紧跟一个没有特殊含义的字符讲会导致错误。
    4. 如果设置了 PCRE_UNGREEDY， 贪婪量词修饰被逆转，也就是说，默认它们都是非贪婪的了，但如果紧跟一个问号它们就会变成 贪婪的。(译注：既完全将贪婪模式逆转。)

正则表达式模式中可用的模式修饰符
与POSIX正则表达式的不同
PCRE模式


与POSIX正则表达式的不同

自 PHP 5.3.0起， POSIX 正则表达式扩展被废弃。在 POSIX 正则和 PCRE 正则之间有一些不同，本页列出了在转向PCRE 时最显著的需要知道的不同点。

  1. PCRE 函数需要模式以分隔符闭合。
  2. 不像POSIX，PCRE 扩展没有专门用于大小写不敏感匹配的函数。取而代之的是，支持使用i (PCRE_CASELESS) 模式修饰符完成同样的工作。 其他模式修饰符同样可用于改变匹配策略。
  3. POSIX 函数从最左面开始寻找最长的匹配，但是 PCRE 在第一个合法匹配后停止。如果字符串 不匹配这没有什么区别，但是如果匹配，两者在结果和速度上都会有差别。 为了说明这个不同, 考虑下面的例子(来自Jeffrey Friedl 的《精通正则表达式》一书)。 使用模式 one(self)?(selfsufficient)? 在字符串oneselfsufficient 上匹配，PCRE 会匹配到oneself，但是使用 POSIX，结果将是整个字符串 oneselfsufficient。 两个子串都匹配原始字符串，但是 POSIX 将 最长的最为结果。

函数对照表
POSIX | PCRE
ereg_replace() | preg_replace()
ereg() | preg_match()
eregi_replace() | preg_replace()
eregi() | preg_match()
split() | preg_split()
spliti() | preg_split()
sql_regcase() | 无对等函数

与 perl 的不同之处
PCRE 函数
PCRE模式


PCRE 函数

Table of Contents

  • preg_filter — 执行一个正则表达式搜索和替换
  • preg_grep — 返回匹配模式的数组条目
  • preg_last_error — 返回最后一个PCRE正则执行产生的错误代码
  • preg_match_all — 执行一个全局正则表达式匹配
  • preg_match — 执行一个正则表达式匹配
  • preg_quote — 转义正则表达式字符
  • preg_replace_callback_array — Perform a regular expression search and replace using callbacks
  • preg_replace_callback — 执行一个正则表达式搜索并且使用一个回调进行替换
  • preg_replace — 执行一个正则表达式的搜索和替换
  • preg_split — 通过一个正则表达式分隔字符串
与POSIX正则表达式的不同
preg_filter
PCRE


执行一个正则表达式搜索和替换

PCRE 函数
preg_grep
PCRE 函数
PHP Manual

preg_filter

(PHP 5 >= 5.3.0, PHP 7)

preg_filter — 执行一个正则表达式搜索和替换

说明

mixed preg_filter ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

preg_filter()等价于preg_replace() 除了它仅仅返回(可能经过转化)与目标匹配的结果. 这个函数怎样工作的更详细信息请阅读 preg_replace()文档.

返回值

如果subject是一个数组，返回一个数组， 其他情况返回一个字符串。

如果没有找到匹配或者发生了错误，当subject是数组 时返回一个空数组，其他情况返回NULL。

范例

Example #1 比较preg_filter() 和preg_replace()的示例

<?php
$subject = array('1', 'a', '2', 'b', '3', 'A', 'B', '4');
$pattern = array('/\d/', '/[a-z]/', '/[1a]/');
$replace = array('A:$0', 'B:$0', 'C:$0');

echo "preg_filter returns\n";
print_r(preg_filter($pattern, $replace, $subject));

echo "preg_replace returns\n";
print_r(preg_replace($pattern, $replace, $subject));
?>

以上例程会输出：

preg_filter returns
Array
(
    [0] => A:C:1
    [1] => B:C:a
    [2] => A:2
    [3] => B:b
    [4] => A:3
    [7] => A:4
)
preg_replace returns
Array
(
    [0] => A:C:1
    [1] => B:C:a
    [2] => A:2
    [3] => B:b
    [4] => A:3
    [5] => A
    [6] => B
    [7] => A:4
)

参见

  • PCRE Patterns
  • preg_replace() - 执行一个正则表达式的搜索和替换
  • preg_replace_callback() - 执行一个正则表达式搜索并且使用一个回调进行替换
  • preg_grep() - 返回匹配模式的数组条目
  • preg_last_error() - 返回最后一个PCRE正则执行产生的错误代码

PCRE 函数
preg_grep
PCRE 函数


返回匹配模式的数组条目

preg_filter
preg_last_error
PCRE 函数
PHP Manual

preg_grep

(PHP 4, PHP 5, PHP 7)

preg_grep — 返回匹配模式的数组条目

说明

array preg_grep ( string $pattern , array $input [, int $flags = 0 ] )

返回给定数组input中与模式pattern 匹配的元素组成的数组.

参数

pattern

要搜索的模式, 字符串形式.

input

输入数组.

flags

如果设置为PREG_GREP_INVERT, 这个函数返回输入数组中与 给定模式pattern 不匹配的元素组成的数组.

返回值

返回使用input中key做索引的数组.

更新日志

版本 | 说明
4.2.0 | 增加了参数flags.
4.0.4 | 在此版本之前, 返回数组的索引与input数组的key无关. 如果你想仿照这种旧有的行为, 在返回数组上使用array_values()重建索引.

范例

Example #1 preg_grep() 示例

<?php
// 返回所有包含浮点数的元素
$fl_array = preg_grep("/^(\d+)?\.\d+$/", $array);
?>

参见

  • PCRE Patterns
  • preg_match_all() - 执行一个全局正则表达式匹配
  • preg_filter() - 执行一个正则表达式搜索和替换
  • preg_last_error() - 返回最后一个PCRE正则执行产生的错误代码

preg_filter
preg_last_error
PCRE 函数


返回最后一个PCRE正则执行产生的错误代码

preg_grep
preg_match_all
PCRE 函数
PHP Manual

preg_last_error

(PHP 5 >= 5.2.0, PHP 7)

preg_last_error — 返回最后一个PCRE正则执行产生的错误代码

说明

int preg_last_error ( void )

返回最后一次PCRE正则执行的错误代码。

Example #1 preg_last_error() 示例

<?php

preg_match('/(?:\D+|<\d+>)*[!?]/', 'foobar foobar foobar');

if (preg_last_error() == PREG_BACKTRACK_LIMIT_ERROR) {
    print 'Backtrack limit was exhausted!';
}

?>

以上例程会输出：

Backtrack limit was exhausted!

返回值

返回下面常量中的一个(查看它们自身的解释):

  • PREG_NO_ERROR
  • PREG_INTERNAL_ERROR
  • PREG_BACKTRACK_LIMIT_ERROR （参见 pcre.backtrack_limit）
  • PREG_RECURSION_LIMIT_ERROR （参见 pcre.recursion_limit）
  • PREG_BAD_UTF8_ERROR
  • PREG_BAD_UTF8_OFFSET_ERROR （自 PHP 5.3.0 起）

preg_grep
preg_match_all
PCRE 函数


执行一个全局正则表达式匹配

preg_last_error
preg_match
PCRE 函数
PHP Manual

preg_match_all

(PHP 4, PHP 5, PHP 7)

preg_match_all — 执行一个全局正则表达式匹配

说明

int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )

搜索subject中所有匹配pattern给定正则表达式 的匹配结果并且将它们以flag指定顺序输出到matches中.

在第一个匹配找到后, 子序列继续从最后一次匹配位置搜索.

参数

pattern

要搜索的模式，字符串形式。

subject

输入字符串。

matches

多维数组，作为输出参数输出所有匹配结果, 数组排序通过flags指定。

flags

可以结合下面标记使用(注意不能同时使用PREG_PATTERN_ORDER和 PREG_SET_ORDER)：

PREG_PATTERN_ORDER

结果排序为$matches[0]保存完整模式的所有匹配, $matches[1] 保存第一个子组的所有匹配，以此类推。

<?php
preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
    "<b>example: </b><div align=left>this is a test</div>",
    $out, PREG_PATTERN_ORDER);
echo $out[0][0] . ", " . $out[0][1] . "\n";
echo $out[1][0] . ", " . $out[1][1] . "\n";
?>

以上例程会输出：

<b>example: </b>, <div align=left>this is a test</div>
example: , this is a test

因此, $out[0]是包含匹配完整模式的字符串的数组， $out[1]是包含闭合标签内的字符串的数组。

PREG_SET_ORDER

结果排序为$matches[0]包含第一次匹配得到的所有匹配(包含子组)， $matches[1]是包含第二次匹配到的所有匹配(包含子组)的数组，以此类推。

<?php
preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
    "<b>example: </b><div align=\"left\">this is a test</div>",
    $out, PREG_SET_ORDER);
echo $out[0][0] . ", " . $out[0][1] . "\n";
echo $out[1][0] . ", " . $out[1][1] . "\n";
?>

以上例程会输出：

<b>example: </b>, example:
<div align="left">this is a test</div>, this is a test

PREG_OFFSET_CAPTURE

如果这个标记被传递，每个发现的匹配返回时会增加它相对目标字符串的偏移量。 注意这会改变matches中的每一个匹配结果字符串元素，使其 成为一个第0个元素为匹配结果字符串，第1个元素为 匹配结果字符串在subject中的偏移量。

如果没有给定排序标记，假定设置为PREG_PATTERN_ORDER。

offset

通常， 查找时从目标字符串的开始位置开始。可选参数offset用于 从目标字符串中指定位置开始搜索(单位是字节)。

Note:

使用 offset 参数不同于传递 substr($subject, $offset) 的 结果到 preg_match_all() 作为目标字符串，因为 pattern 可以包含断言比如^， $ 或者 (?<=x) 。 示例查看 preg_match()。

返回值

返回完整匹配次数（可能是0），或者如果发生错误返回FALSE。

更新日志

版本 | 说明
5.4.0 | 参数matches成为可选的。
5.3.6 | 如果 offset 大于 subject 的程度，将返回 FALSE。
5.2.2 | 子命名分组语法可以接受(?<name>)，(?'name')以及 (?P<name>)了。 之前版本仅接受(?P<name>)方式。
4.3.3 | 增加了offset参数。
4.3.0 | 增加了PREG_OFFSET_CAPTURE标记。

范例

Example #1 查找所有文本中的电话号码。

<?php
preg_match_all("/\(?  (\d{3})?  \)?  (?(1)  [\-\s] ) \d{3}-\d{4}/x",
                "Call 555-1212 or 1-800-555-1212", $phones);
?>

Example #2 查找匹配的HTML标签（贪婪）

<?php
//\\2是一个后向引用的示例. 这会告诉pcre它必须匹配正则表达式中第二个圆括号(这里是([\w]+))
//匹配到的结果. 这里使用两个反斜线是因为这里使用了双引号.
$html = "<b>bold text</b><a href=howdy.html>click me</a>";

preg_match_all("/(<([\w]+)[^>]*>)(.*?)(<\/\\2>)/", $html, $matches, PREG_SET_ORDER);

foreach ($matches as $val) {
    echo "matched: " . $val[0] . "\n";
    echo "part 1: " . $val[1] . "\n";
    echo "part 2: " . $val[2] . "\n";
    echo "part 3: " . $val[3] . "\n";
    echo "part 4: " . $val[4] . "\n\n";
}
?>

以上例程会输出：

matched: <b>bold text</b>
part 1: <b>
part 2: b
part 3: bold text
part 4: </b>

matched: <a href=howdy.html>click me</a>
part 1: <a href=howdy.html>
part 2: a
part 3: click me
part 4: </a>

Example #3 使用子命名组

<?php

$str = <<<FOO
a: 1
b: 2
c: 3
FOO;

preg_match_all('/(?P<name>\w+): (?P<digit>\d+)/', $str, $matches);

/* 下面代码在php 5.2.2(pcre 7.0)或更高版本下工作, 不过, 为了向后兼容
 * 推荐使用上面的方式. */
// preg_match_all('/(?<name>\w+): (?<digit>\d+)/', $str, $matches);

print_r($matches);

?>

以上例程会输出：

Array
(
    [0] => Array
        (
            [0] => a: 1
            [1] => b: 2
            [2] => c: 3
        )

    [name] => Array
        (
            [0] => a
            [1] => b
            [2] => c
        )

    [1] => Array
        (
            [0] => a
            [1] => b
            [2] => c
        )

    [digit] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [2] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

)

参见

  • PCRE 匹配
  • preg_match() - 执行一个正则表达式匹配
  • preg_replace() - 执行一个正则表达式的搜索和替换
  • preg_split() - 通过一个正则表达式分隔字符串
  • preg_last_error() - 返回最后一个PCRE正则执行产生的错误代码

preg_last_error
preg_match
PCRE 函数


执行一个正则表达式匹配

preg_match_all
preg_quote
PCRE 函数
PHP Manual

preg_match

(PHP 4, PHP 5, PHP 7)

preg_match — 执行一个正则表达式匹配

说明

int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

搜索subject与pattern给定的正则表达式的一个匹配.

参数

pattern

要搜索的模式，字符串类型。

subject

输入字符串。

matches

如果提供了参数matches，它将被填充为搜索结果。 $matches[0]将包含完整模式匹配到的文本， $matches[1] 将包含第一个捕获子组匹配到的文本，以此类推。

flags

flags可以被设置为以下标记值：

PREG_OFFSET_CAPTURE
如果传递了这个标记，对于每一个出现的匹配返回时会附加字符串偏移量(相对于目标字符串的)。 注意：这会改变填充到matches参数的数组，使其每个元素成为一个由 第0个元素是匹配到的字符串，第1个元素是该匹配字符串 在目标字符串subject中的偏移量。

offset

通常，搜索从目标字符串的开始位置开始。可选参数 offset 用于 指定从目标字符串的某个未知开始搜索(单位是字节)。

Note:

使用offset参数不同于向preg_match() 传递按照位置通过substr($subject, $offset)截取目标字符串结果， 因为pattern可以包含断言比如^， $ 或者(?<=x)。 比较：

<?php
$subject = "abcdef";
$pattern = '/^def/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE, 3);
print_r($matches);
?>

以上例程会输出：

Array
(
)

当这个示例使用截取后传递时

<?php
$subject = "abcdef";
$pattern = '/^def/';
preg_match($pattern, substr($subject,3), $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
?>

将会产生匹配

Array
(
    [0] => Array
        (
            [0] => def
            [1] => 0
        )

)

返回值

preg_match()返回 pattern 的匹配次数。 它的值将是0次（不匹配）或1次，因为preg_match()在第一次匹配后 将会停止搜索。preg_match_all()不同于此，它会一直搜索subject 直到到达结尾。 如果发生错误preg_match()返回 FALSE。

更新日志

版本 | 说明
5.3.6 | 如果 offset 比 subject 的长度还要大则返回 FALSE。
5.2.2 | 命名子组可以接受(?<name>)， (?'name') 以及(?P<name>)语法。之前版本仅接受(?P<name>)语法。
4.3.3 | 增加了参数offset.
4.3.0 | 增加了标记PREG_OFFSET_CAPTURE。
4.3.0 | 增加了参数flags。

范例

Example #1 查找文本字符串"php"

<?php
//模式分隔符后的"i"标记这是一个大小写不敏感的搜索
if (preg_match("/php/i", "PHP is the web scripting language of choice.")) {
    echo "A match was found.";
} else {
    echo "A match was not found.";
}
?>

Example #2 查找单词"word"

<?php
/* 模式中的\b标记一个单词边界，所以只有独立的单词"web"会被匹配，而不会匹配
 * 单词的部分内容比如"webbing" 或 "cobweb" */
if (preg_match("/\bweb\b/i", "PHP is the web scripting language of choice.")) {
    echo "A match was found.";
} else {
    echo "A match was not found.";
}

if (preg_match("/\bweb\b/i", "PHP is the website scripting language of choice.")) {
    echo "A match was found.";
} else {
    echo "A match was not found.";
}
?>

Example #3 获取URL中的域名

<?php
//从URL中获取主机名称
preg_match('@^(?:http://)?([^/]+)@i',
    "http://www.php.net/index.html", $matches);
$host = $matches[1];

//获取主机名称的后面两部分
preg_match('/[^.]+\.[^.]+$/', $host, $matches);
echo "domain name is: {$matches[0]}\n";
?>

以上例程会输出：

domain name is: php.net

Example #4 使用命名子组

<?php

$str = 'foobar: 2008';

preg_match('/(?P<name>\w+): (?P<digit>\d+)/', $str, $matches);

/* 下面例子在php 5.2.2(pcre 7.0)或更新版本下工作, 然而, 为了后向兼容, 上面的方式是推荐写法. */
// preg_match('/(?<name>\w+): (?<digit>\d+)/', $str, $matches);

print_r($matches);

?>

以上例程会输出：

Array
(
    [0] => foobar: 2008
    [name] => foobar
    [1] => foobar
    [digit] => 2008
    [2] => 2008
)

注释

Tip

如果你仅仅想要检查一个字符串是否包含另外一个字符串，不要使用preg_match()。 使用strpos()或strstr()替代完成工作会更快。

参见

  • PCRE 模式
  • preg_match_all() - 执行一个全局正则表达式匹配
  • preg_replace() - 执行一个正则表达式的搜索和替换
  • preg_split() - 通过一个正则表达式分隔字符串
  • preg_last_error() - 返回最后一个PCRE正则执行产生的错误代码

preg_match_all
preg_quote
PCRE 函数


转义正则表达式字符

preg_match
preg_replace_callback_array
PCRE 函数
PHP Manual

preg_quote

(PHP 4, PHP 5, PHP 7)

preg_quote — 转义正则表达式字符

说明

string preg_quote ( string $str [, string $delimiter = NULL ] )

preg_quote()需要参数 str 并向其中 每个正则表达式语法中的字符前增加一个反斜线。 这通常用于你有一些运行时字符串 需要作为正则表达式进行匹配的时候。

正则表达式特殊字符有： . \ + * ? [ ^ ] $ ( ) { } = ! < > | : -

参数

str

输入字符串

delimiter

如果指定了可选参数 delimiter，它也会被转义。这通常用于 转义PCRE函数使用的分隔符。 /是最通用的分隔符。

返回值

返回转义后的字符串。

更新日志

版本 | 说明
5.3.0 | 字符 - 被增加为需要转义的。

范例

Example #1 preg_quote()示例

<?php
$keywords = '$40 for a g3/400';
$keywords = preg_quote($keywords, '/');
echo $keywords; // 返回 \$40 for a g3\/400
?>

Example #2 将文本中的单词替换为斜体

<?php
//在这个例子中，preg_quote($word) 用于保持星号原文涵义，使其不使用正则表达式中的特殊语义。

$textbody = "This book is *very* difficult to find.";
$word = "*very*";
$textbody = preg_replace ("/" . preg_quote($word) . "/",
                          "<i>" . $word . "</i>",
                          $textbody);
?>

注释

Note: 此函数可安全用于二进制对象。

参见

  • PCRE 模式
  • escapeshellcmd() - shell 元字符转义

preg_match
preg_replace_callback_array
PCRE 函数


Perform a regular expression search and replace using callbacks

preg_quote
preg_replace_callback
PCRE 函数
PHP Manual

preg_replace_callback_array

(PHP 7)

preg_replace_callback_array — Perform a regular expression search and replace using callbacks

说明

mixed preg_replace_callback_array ( array $patterns_and_callbacks , mixed $subject [, int $limit = -1 [, int &$count ]] )

The behavior of this function is similar to preg_replace_callback(), except that callbacks are executed on a per-pattern basis.

参数

patterns_and_callbacks

An associative array mapping patterns (keys) to callbacks (values).

subject

The string or an array with strings to search and replace.

limit

The maximum possible replacements for each pattern in each subject string. Defaults to -1 (no limit).

count

If specified, this variable will be filled with the number of replacements done.

返回值

preg_replace_callback_array() returns an array if the subject parameter is an array, or a string otherwise. On errors the return value is NULL

If matches are found, the new subject will be returned, otherwise subject will be returned unchanged.

范例

Example #1 preg_replace_callback_array() example

<?php
$subject = 'Aaaaaa Bbb';

preg_replace_callback_array(
    [
        '~[a]+~i' => function ($match) {
            echo strlen($match[0]), ' matches for "a" found', PHP_EOL;
        },
        '~[b]+~i' => function ($match) {
            echo strlen($match[0]), ' matches for "b" found', PHP_EOL;
        }
    ],
    $subject
);
?>

以上例程会输出：

6 matches for "a" found
3 matches for "b" found

参见

  • PCRE Patterns
  • preg_replace_callback() - 执行一个正则表达式搜索并且使用一个回调进行替换
  • preg_quote() - 转义正则表达式字符
  • preg_replace() - 执行一个正则表达式的搜索和替换
  • preg_last_error() - 返回最后一个PCRE正则执行产生的错误代码
  • Anonymous functions
  • callback 类型的信息

preg_quote
preg_replace_callback
PCRE 函数


执行一个正则表达式搜索并且使用一个回调进行替换

preg_replace_callback_array
preg_replace
PCRE 函数
PHP Manual

preg_replace_callback

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

preg_replace_callback — 执行一个正则表达式搜索并且使用一个回调进行替换

说明

mixed preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] )

这个函数的行为除了 可以指定一个 callback 替代 replacement 进行替换 字符串的计算，其他方面等同于 preg_replace()。

参数

pattern

要搜索的模式，可以使字符串或一个字符串数组。

callback

一个回调函数，在每次需要替换时调用，调用时函数得到的参数是从subject 中匹配到的结果。回调函数返回真正参与替换的字符串。这是该回调函数的签名：

string handler ( array $matches )

你可能经常会需要callback函数而 仅用于preg_replace_callback()一个地方的调用。在这种情况下，你可以 使用匿名函数来定义一个匿名函数作 为preg_replace_callback()调用时的回调。 这样做你可以保留所有 调用信息在同一个位置并且不会因为一个不在任何其他地方使用的回调函数名称而污染函数名称空间。

Example #1 preg_replace_callback() 和 匿名函数

<?php
/* 一个unix样式的命令行过滤器，用于将段落开始部分的大写字母转换为小写。 */
$fp = fopen("php://stdin", "r") or die("can't read stdin");
while (!feof($fp)) {
    $line = fgets($fp);
    $line = preg_replace_callback(
        '|<p>\s*\w|',
        function ($matches) {
            return strtolower($matches[0]);
        },
        $line
    );
    echo $line;
}
fclose($fp);
?>

subject

要搜索替换的目标字符串或字符串数组。

limit

对于每个模式用于每个 subject 字符串的最大可替换次数。 默认是-1（无限制）。

count

如果指定，这个变量将被填充为替换执行的次数。

返回值

如果subject是一个数组， preg_replace_callback()返回一个数组，其他情况返回字符串。 错误发生时返回 NULL。

如果查找到了匹配，返回替换后的目标字符串（或字符串数组）， 其他情况subject 将会无变化返回。

更新日志

版本 | 说明
5.1.0 | 增加了参数count。

范例

Example #2 preg_replace_callback()示例

<?php
// 将文本中的年份增加一年.
$text = "April fools day is 04/01/2002\n";
$text.= "Last christmas was 12/24/2001\n";
// 回调函数
function next_year($matches)
{
  // 通常: $matches[0]是完成的匹配
  // $matches[1]是第一个捕获子组的匹配
  // 以此类推
  return $matches[1].($matches[2]+1);
}
echo preg_replace_callback(
            "|(\d{2}/\d{2}/)(\d{4})|",
            "next_year",
            $text);

?>

以上例程会输出：

April fools day is 04/01/2003
Last christmas was 12/24/2002

Example #3 preg_replace_callback()使用递归构造处理BB码的封装

<?php
$input = "plain [indent] deep [indent] deeper [/indent] deep [/indent] plain";

function parseTagsRecursive($input)
{
     /* 译注: 对此正则表达式分段分析
     * 首尾两个#是正则分隔符
     * \[indent] 匹配一个原文的[indent]
     * ((?:[^[]|\[(?!/?indent])|(?R))+)分析:
     *   (?:[^[]|\[(?!/?indent])分析:
     *  首先它是一个非捕获子组
     *   两个可选路径, 一个是非[字符, 另一个是[字符但后面紧跟着不是/indent或indent.
     *   (?R) 正则表达式递归
     *     \[/indent] 匹配结束的[/indent]
     * /
    $regex = '#\[indent]((?:[^[]|\[(?!/?indent])|(?R))+)\[/indent]#';

    if (is_array($input)) {
        $input = '<div style="margin-left: 10px">'.$input[1].'</div>';
    }

    return preg_replace_callback($regex, 'parseTagsRecursive', $input);
}

$output = parseTagsRecursive($input);

echo $output;
?>

参见

  • PCRE 模式
  • preg_replace() - 执行一个正则表达式的搜索和替换
  • preg_last_error() - 返回最后一个PCRE正则执行产生的错误代码
  • 匿名函数
  • callback 类型的信息

preg_replace_callback_array
preg_replace
PCRE 函数


执行一个正则表达式的搜索和替换

preg_replace_callback
preg_split
PCRE 函数
PHP Manual

preg_replace

(PHP 4, PHP 5, PHP 7)

preg_replace — 执行一个正则表达式的搜索和替换

说明

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

搜索subject中匹配pattern的部分， 以replacement进行替换。

参数

pattern

要搜索的模式。可以使一个字符串或字符串数组。

可以使用一些PCRE修饰符， 包括被弃用的'e'(PREG_REPLACE_EVAL)，可以为这个函数指定。

replacement

用于替换的字符串或字符串数组。如果这个参数是一个字符串，并且pattern 是一个数组，那么所有的模式都使用这个字符串进行替换。如果pattern和replacement 都是数组，每个pattern使用replacement中对应的 元素进行替换。如果replacement中的元素比pattern中的少， 多出来的pattern使用空字符串进行替换。

replacement中可以包含后向引用\\n 或(php 4.0.4以上可用)$n，语法上首选后者。 每个 这样的引用将被匹配到的第n个捕获子组捕获到的文本替换。 n 可以是0-99，\\0和$0代表完整的模式匹配文本。 捕获子组的序号计数方式为：代表捕获子组的左括号从左到右， 从1开始数。如果要在replacement 中使用反斜线，必须使用4个("\\\\"，译注：因为这首先是php的字符串，经过转义后，是两个，再经过 正则表达式引擎后才被认为是一个原文反斜线)。

当在替换模式下工作并且后向引用后面紧跟着需要是另外一个数字(比如：在一个匹配模式后紧接着增加一个原文数字)， 不能使用\\1这样的语法来描述后向引用。比如， \\11将会使preg_replace() 不能理解你希望的是一个\\1后向引用紧跟一个原文1，还是 一个\\11后向引用后面不跟任何东西。 这种情况下解决方案是使用\${1}1。 这创建了一个独立的$1后向引用, 一个独立的原文1。

当使用被弃用的 e 修饰符时, 这个函数会转义一些字符(即：'、"、 \ 和 NULL) 然后进行后向引用替换。当这些完成后请确保后向引用解析完后没有单引号或 双引号引起的语法错误(比如： 'strlen(\'$1\')+strlen("$2")')。确保符合PHP的 字符串语法，并且符合eval语法。因为在完成替换后， 引擎会将结果字符串作为php代码使用eval方式进行评估并将返回值作为最终参与替换的字符串。

subject

要进行搜索和替换的字符串或字符串数组。

如果subject是一个数组，搜索和替换回在subject 的每一个元素上进行, 并且返回值也会是一个数组。

limit

每个模式在每个subject上进行替换的最大次数。默认是 -1(无限)。

count

如果指定，将会被填充为完成的替换次数。

返回值

如果subject是一个数组， preg_replace()返回一个数组， 其他情况下返回一个字符串。

如果匹配被查找到，替换后的subject被返回，其他情况下 返回没有改变的 subject。如果发生错误，返回 NULL 。

错误／异常

当传入 "\e" 修饰符的时候，会产生一个 E_DEPRECATED 级别的错误。

更新日志

版本 | 说明
5.5.0 | /e 修饰符已经被弃用了。使用 preg_replace_callback() 代替。参见文档中 PREG_REPLACE_EVAL 关于安全风险的更多信息。
5.1.0 | 增加参数count.
4.0.4 | 增加replacement参数中的'$n'用法。
4.0.2 | 增加了参数limit

范例

Example #1 使用后向引用紧跟数值原文

<?php
$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '${1}1,$3';
echo preg_replace($pattern, $replacement, $string);
?>

以上例程会输出：

April1,2003

Example #2 preg_replace()中使用基于索引的数组

<?php
$string = 'The quick brown fox jumped over the lazy dog.';
$patterns = array();
$patterns[0] = '/quick/';
$patterns[1] = '/brown/';
$patterns[2] = '/fox/';
$replacements = array();
$replacements[2] = 'bear';
$replacements[1] = 'black';
$replacements[0] = 'slow';
echo preg_replace($patterns, $replacements, $string);
?>

以上例程会输出：

The bear black slow jumped over the lazy dog.

对模式和替换内容按key进行排序我们可以得到期望的结果。

<?php
ksort($patterns);
ksort($replacements);
echo preg_replace($patterns, $replacements, $string);
?>

以上例程会输出：

The slow black bear jumped over the lazy dog.

Example #3 替换一些值

<?php
$patterns = array ('/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/',
                   '/^\s*{(\w+)}\s*=/');
$replace = array ('\3/\4/\1\2', '$\1 =');
echo preg_replace($patterns, $replace, '{startDate} = 1999-5-27');
?>

以上例程会输出：

$startDate = 5/27/1999

Example #4 剥离空白字符

这个例子剥离多余的空白字符

<?php
$str = 'foo   o';
$str = preg_replace('/\s\s+/', ' ', $str);
// 将会改变为'foo o'
echo $str;
?>

Example #5 使用参数count

<?php
$count = 0;

echo preg_replace(array('/\d/', '/\s/'), '*', 'xp 4 to', -1 , $count);
echo $count; //3
?>

以上例程会输出：

xp***to
3

注释

Note:

当使用数组形式的pattern和replacement时, 将会按照key在数组中出现的顺序进行处理. 这不一定和数组的索引顺序一致. 如果你期望使用索引对等方式用replacement对pattern 进行替换, 你可以在调用preg_replace()之前对两个数组各进行一次ksort()排序.

参见

  • PCRE 模式
  • preg_filter() - 执行一个正则表达式搜索和替换
  • preg_match() - 执行一个正则表达式匹配
  • preg_replace_callback() - 执行一个正则表达式搜索并且使用一个回调进行替换
  • preg_split() - 通过一个正则表达式分隔字符串
  • preg_last_error() - 返回最后一个PCRE正则执行产生的错误代码

preg_replace_callback
preg_split
PCRE 函数


通过一个正则表达式分隔字符串

preg_replace
POSIX Regex
PCRE 函数
PHP Manual

preg_split

(PHP 4, PHP 5, PHP 7)

preg_split — 通过一个正则表达式分隔字符串

说明

array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )

通过一个正则表达式分隔给定字符串.

参数

pattern

用于搜索的模式，字符串形式。

subject

输入字符串

limit

如果指定，将限制分隔得到的子串最多只有limit个，返回的最后一个 子串将包含所有剩余部分。limit值为-1， 0或null时都代表"不限制"， 作为php的标准，你可以使用null跳过对flags的设置。

flags

flags 可以是任何下面标记的组合(以位或运算 | 组合)：

PREG_SPLIT_NO_EMPTY
如果这个标记被设置， preg_split() 将进返回分隔后的非空部分。
PREG_SPLIT_DELIM_CAPTURE
如果这个标记设置了，用于分隔的模式中的括号表达式将被捕获并返回。
PREG_SPLIT_OFFSET_CAPTURE

如果这个标记被设置, 对于每一个出现的匹配返回时将会附加字符串偏移量. 注意：这将会改变返回数组中的每一个元素, 使其每个元素成为一个由第0 个元素为分隔后的子串，第1个元素为该子串在subject 中的偏移量组成的数组。

返回值

返回一个使用 pattern 边界分隔 subject 后得到 的子串组成的数组。

更新日志

版本 | 说明
4.3.0 | 增加了标记PREG_SPLIT_OFFSET_CAPTURE。
4.0.5 | 增加了标记PREG_SPLIT_DELIM_CAPTURE。

范例

Example #1 preg_split()示例：获取搜索字符串的部分

<?php
//使用逗号或空格(包含" ", \r, \t, \n, \f)分隔短语
$keywords = preg_split("/[\s,]+/", "hypertext language, programming");
print_r($keywords);
?>

以上例程会输出：

Array
(
    [0] => hypertext
    [1] => language
    [2] => programming
)

Example #2 将一个字符串分隔为组成它的字符

<?php
$str = 'string';
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($chars);
?>

以上例程会输出：

Array
(
    [0] => s
    [1] => t
    [2] => r
    [3] => i
    [4] => n
    [5] => g
)

Example #3 分隔一个字符串并获取每部分的偏移量

<?php
$str = 'hypertext language programming';
$chars = preg_split('/ /', $str, -1, PREG_SPLIT_OFFSET_CAPTURE);
print_r($chars);
?>

以上例程会输出：

Array
(
    [0] => Array
        (
            [0] => hypertext
            [1] => 0
        )

    [1] => Array
        (
            [0] => language
            [1] => 10
        )

    [2] => Array
        (
            [0] => programming
            [1] => 19
        )

)

注释

Tip

如果你不需要正则表达式功能，可以有更快(并且更简单)的选择比如 explode() 或 str_split()。

Tip

如果没有成功匹配，将会返回一个数组，包含了单个元素，即输入的字符串。

参见

  • PCRE 模式
  • implode() - 将一个一维数组的值转化为字符串
  • preg_match() - 执行一个正则表达式匹配
  • preg_match_all() - 执行一个全局正则表达式匹配
  • preg_replace() - 执行一个正则表达式的搜索和替换
  • preg_last_error() - 返回最后一个PCRE正则执行产生的错误代码

preg_replace
POSIX Regex
PCRE 函数


Regular Expression (POSIX Extended)

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • POSIX Regex 函数
    • ereg_replace — 正则表达式替换
    • ereg — 正则表达式匹配
    • eregi_replace — 不区分大小写的正则表达式替换
    • eregi — 不区分大小写的正则表达式匹配
    • split — 用正则表达式将字符串分割到数组中
    • spliti — 用正则表达式不区分大小写将字符串分割到数组中
    • sql_regcase — 产生用于不区分大小的匹配的正则表达式
preg_split
简介
文本处理


简介

Tip

PHP also supports regular expressions using a Perl-compatible syntax using the PCRE functions. Those functions support non-greedy matching, assertions, conditional subpatterns, and a number of other features not supported by the POSIX-extended regular expression syntax.

Warning

These regular expression functions are not binary-safe. The PCRE functions are.

Note:

从PHP5.3.0开始本扩展不再建议使用，所有调用本扩展中函数都将提示E_DEPRECATED 错误。

Regular expressions are used for complex string manipulation. PHP uses the POSIX extended regular expressions as defined by POSIX 1003.2. For a full description of POSIX regular expressions see the » regex man pages included in the regex directory in the PHP distribution. It's in manpage format, so you'll want to do something along the lines of man /usr/local/src/regex/regex.7 in order to read it.

POSIX Regex
安装／配置
POSIX Regex


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
POSIX Regex


安装

Warning

除非知道自己在做什么，否则不要改变 TYPE。

要激活 regexp 的支持在配置 PHP 时加上 --with-regex[=TYPE] 。TYPE 可以是 system，apache 或 php 之一。默认使用 php。

PHP 的 Windows 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
范例
POSIX Regex


范例

Example #1 Regular Expression Examples

<?php
// Returns true if "abc" is found anywhere in $string.
ereg("abc", $string);

// Returns true if "abc" is found at the beginning of $string.
ereg("^abc", $string);

// Returns true if "abc" is found at the end of $string.
ereg("abc$", $string);

// Returns true if client browser is Netscape 2, 3 or MSIE 3.
eregi("(ozilla.[23]|MSIE.3)", $_SERVER["HTTP_USER_AGENT"]);

// Places three space separated words into $regs[1], $regs[2] and $regs[3].
ereg("([[:alnum:]]+) ([[:alnum:]]+) ([[:alnum:]]+)", $string, $regs);

// Put a <br /> tag at the beginning of $string.
$string = ereg_replace("^", "<br />", $string);

// Put a <br /> tag at the end of $string.
$string = ereg_replace("$", "<br />", $string);

// Get rid of any newline characters in $string.
$string = ereg_replace("\n", "", $string);
?>

预定义常量
POSIX Regex 函数
POSIX Regex


POSIX Regex 函数

参见

Warning

This feature was DEPRECATED in PHP 5.3.0, and REMOVED in PHP 7.0.0.

Alternatives to this feature include:

  • PCRE (for full regular expression support)
  • fnmatch() (for simpler shell style wildcard pattern matching)

Table of Contents

  • ereg_replace — 正则表达式替换
  • ereg — 正则表达式匹配
  • eregi_replace — 不区分大小写的正则表达式替换
  • eregi — 不区分大小写的正则表达式匹配
  • split — 用正则表达式将字符串分割到数组中
  • spliti — 用正则表达式不区分大小写将字符串分割到数组中
  • sql_regcase — 产生用于不区分大小的匹配的正则表达式
范例
ereg_replace
POSIX Regex


正则表达式替换

POSIX Regex 函数
ereg
POSIX Regex 函数
PHP Manual

ereg_replace

(PHP 4, PHP 5)

ereg_replace — 正则表达式替换

说明

string ereg_replace ( string $pattern , string $replacement , string $string )

本函数在 string 中扫描与 pattern 匹配的部分，并将其替换为 replacement。

返回替换后的字符串。（如果没有可供替换的匹配项则会返回原字符串。）

如果 pattern 包含有括号内的子串，则 replacement 可以包含形如 \\digit 的子串，这些子串将被替换为数字表示的的第几个括号内的子串；\\0 则包含了字符串的整个内容。最多可以用九个子串。括号可以嵌套，此情形下以左圆括号来计算顺序。

如果未在 string 中找到匹配项，则 string 将原样返回。

例如，下面的代码片断输出 "This was a test" 三次：

Example #1 ereg_replace() 例子

<?php
$string = "This is a test";
echo str_replace(" is", " was", $string);
echo ereg_replace("( )is", "\\1was", $string);
echo ereg_replace("(( )is)", "\\2was", $string);
?>

要注意的一点是如果在 replacement 参数中使用了整数值，则可能得不到所期望的结果。这是因为 ereg_replace() 将把数字作为字符的序列值来解释并应用之。例如：

Example #2 ereg_replace() 例子

<?php
/* 不能产生出期望的结果 */
$num = 4;
$string = "This string has four words.";
$string = ereg_replace('four', $num, $string);
echo $string;   /* Output: 'This string has   words.' */

/* 本例工作正常 */
$num = '4';
$string = "This string has four words.";
$string = ereg_replace('four', $num, $string);
echo $string;   /* Output: 'This string has 4 words.' */
?>

Example #3 将 URL 替换为超连接

<?php
$text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
                     "<a href=\"\\0\">\\0</a>", $text);
?>

Tip

preg_replace() 函数使用了 Perl 兼容正则表达式语法，通常是比 ereg_replace() 更快的替代方案。

参见 ereg()，eregi()，eregi_replace()，str_replace() 和 preg_match()。

POSIX Regex 函数
ereg
POSIX Regex 函数


正则表达式匹配

ereg_replace
eregi_replace
POSIX Regex 函数
PHP Manual

ereg

(PHP 4, PHP 5)

ereg — 正则表达式匹配

说明

int ereg ( string $pattern , string $string [, array &$regs ] )

Note:

使用 Perl 兼容正则表达式语法的 preg_match() 函数通常是比 ereg() 更快的替代方案。

以区分大小写的方式在 string 中寻找与给定的正则表达式 pattern 所匹配的子串。

如果找到与 pattern 中圆括号内的子模式相匹配的子串并且函数调用给出了第三个参数 regs，则匹配项将被存入 regs 数组中。$regs[1] 包含第一个左圆括号开始的子串，$regs[2] 包含第二个子串，以此类推。$regs[0] 包含整个匹配的字符串。

Note: 直到 PHP 4.1.0 为止，$regs 将被填充为正好十个单元，即使实际匹配的子串少于十个。这并不影响 ereg() 匹配更多子串的能力。如果没有找到匹配，则 $regs 不会被 ereg() 更改。

如果在 string 中找到 pattern 模式的匹配则返回 所匹配字符串的长度，如果没有找到匹配或出错则返回 FALSE。如果没有传递入可选参数 regs 或者所匹配的字符串长度为 0，则本函数返回 1。

以下代码片断接受 ISO 格式的日期（YYYY-MM-DD）然后以 DD.MM.YYYY 格式显示：

Example #1 ereg() 例子

<?php
if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) {
    echo "$regs[3].$regs[2].$regs[1]";
} else {
    echo "Invalid date format: $date";
}
?>

参见 eregi()，ereg_replace()，eregi_replace()，preg_match()，strpos() 和 strstr()。

ereg_replace
eregi_replace
POSIX Regex 函数


不区分大小写的正则表达式替换

ereg
eregi
POSIX Regex 函数
PHP Manual

eregi_replace

(PHP 4, PHP 5)

eregi_replace — 不区分大小写的正则表达式替换

说明

string eregi_replace ( string $pattern , string $replacement , string $string )

本函数和 ereg_replace() 完全相同，只除了在匹配字母字符时忽略大小写的区别。

Example #1 高亮搜索结果

<?php
$pattern = '(>[^<]*)('. quotemeta($_GET['search']) .')';
$replacement = '\\1<span class="search">\\2</span>';
$body = eregi_replace($pattern, $replacement, $body);
?>

参见 ereg()，eregi() 和 ereg_replace()。

ereg
eregi
POSIX Regex 函数


不区分大小写的正则表达式匹配

eregi_replace
split
POSIX Regex 函数
PHP Manual

eregi

(PHP 4, PHP 5)

eregi — 不区分大小写的正则表达式匹配

说明

int eregi ( string $pattern , string $string [, array &$regs ] )

本函数和 ereg() 完全相同，只除了在匹配字母字符时忽略大小写的区别。

Example #1 eregi() 例子

<?php
$string = 'XYZ';
   if (eregi('z', $string)) {
    echo "'$string' contains a 'z' or 'Z'!";
}
?>

参见 ereg()，ereg_replace()，eregi_replace()，stripos() 和 stristr()。

eregi_replace
split
POSIX Regex 函数


用正则表达式将字符串分割到数组中

eregi
spliti
POSIX Regex 函数
PHP Manual

split

(PHP 4, PHP 5)

split — 用正则表达式将字符串分割到数组中

说明

array split ( string $pattern , string $string [, int $limit ] )
Tip

preg_split() 函数使用了 Perl 兼容正则表达式语法，通常是比 split() 更快的替代方案。如果不需要正则表达式的威力，则使用 explode() 更快，这样就不会招致正则表达式引擎的浪费。

本函数返回一个字符串数组，每个单元为 string 经区分大小写的正则表达式 pattern 作为边界分割出的子串。如果设定了 limit，则返回的数组最多包含 limit 个单元，而其中最后一个单元包含了 string 中剩余的所有部分。如果出错，则 split() 返回 FALSE。

将 /etc/passwd 中的前四个字段分割出来：

Example #1 split() 例子

<?php
list($user, $pass, $uid, $gid, $extra) =
    split (":", $passwd_line, 5);
?>

如果字符串中有 n 个与 pattern 匹配的项目，则返回的数组将包含 n+1 个单元。例如，如果没有找到 pattern，则会返回一个只有一个单元的数组。当然，如果 string 为空也是这样。

解析可能用斜线，点，或横线分割的日期：

Example #2 split() 例子

<?php
// 分隔符可以是斜线，点，或横线
$date = "04/30/1973";
list($month, $day, $year) = split ('[/.-]', $date);
echo "Month: $month; Day: $day; Year: $year<br />\n";
?>

想仿效 Perl 中类似的 @chars = split('', $str) 行为，请参考 preg_split() 或 str_split() 函数中的例子。

注意 pattern 是一个正则表达式。如果想要用的分割字符是正则表达式中的特殊字符，要先将其转义。如果觉得 split()（或其它任何 regex 函数）行为古怪的话，请阅读包含在 PHP 发行包中 regex/ 子目录下的 regex.7 文件。该文件是手册页面格式，可以用类似 man /usr/local/src/regex/regex.7 的命令来阅读。

参见 preg_split()，spliti()，str_split()，explode()，implode()，chunk_split() 和 wordwrap()。

eregi
spliti
POSIX Regex 函数


用正则表达式不区分大小写将字符串分割到数组中

split
sql_regcase
POSIX Regex 函数
PHP Manual

spliti

(PHP 4 >= 4.0.1, PHP 5)

spliti — 用正则表达式不区分大小写将字符串分割到数组中

说明

array spliti ( string $pattern , string $string [, int $limit = -1 ] )

用正则表达式将一个 string 分割成数组。

本函数和 split() 相同，只除了在匹配字母字符时忽略大小写的区别。

Warning

自 PHP 5.3.0 起，已经废弃此函数。强烈建议不要应用此函数 。

参数

pattern

大小写不敏感的正则表达式。

If you want to split on any of the characters which are considered special by regular expressions, you'll need to escape them first. If you think spliti() (or any other regex function, for that matter) is doing something weird, please read the file regex.7, included in the regex/ subdirectory of the PHP distribution. It's in manpage format, so you'll want to do something along the lines of man /usr/local/src/regex/regex.7 in order to read it.

string

输入的字符。

limit

如果设置了 limit，返回的数组最多会包含 limit 个元素，最后一个元素包含了剩下的全部 string。

返回值

Returns an array of strings, each of which is a substring of string formed by splitting it on boundaries formed by the case insensitive regular expression pattern.

If there are n occurrences of pattern, the returned array will contain n+1 items. For example, if there is no occurrence of pattern, an array with only one element will be returned. Of course, this is also true if string is empty. If an error occurs, spliti() returns FALSE.

范例

本例用 'a' 做分隔符来分割一个字符串：

Example #1 spliti() 例子

<?php
$string = "aBBBaCCCADDDaEEEaGGGA";
$chunks = spliti ("a", $string, 5);
print_r($chunks);
?>

以上例程会输出：

Array
(
  [0] =>
  [1] => BBB
  [2] => CCC
  [3] => DDD
  [4] => EEEaGGGA
)

注释

Note:

在 PHP 5.3.0 中，已放弃使用 regex 扩展而建议使用 PCRE 扩展。调用此函数将会发出 E_DEPRECATED 通知。参见"差异列表"可帮助你转为使用 PCRE。

参见

  • preg_split() - 通过一个正则表达式分隔字符串
  • split() - 用正则表达式将字符串分割到数组中
  • explode() - 使用一个字符串分割另一个字符串
  • implode() - 将一个一维数组的值转化为字符串

split
sql_regcase
POSIX Regex 函数


产生用于不区分大小的匹配的正则表达式

spliti
ssdeep
POSIX Regex 函数
PHP Manual

sql_regcase

(PHP 4, PHP 5)

sql_regcase — 产生用于不区分大小的匹配的正则表达式

说明

string sql_regcase ( string $string )

产生用于不区分大小的匹配的正则表达式

Warning

自 PHP 5.3.0 起，已经废弃此函数。强烈建议不要应用此函数 。

参数

string

输入的字符。

返回值

返回与 string 相匹配的正则表达式，不论大小写字母。返回的表达式是将 string 中的每个字母字符转换为方括号表达式，该方括号表达式包含了该字母的大小写形式。其它字符保留不变。

范例

Example #1 sql_regcase() 例子

<?php
echo sql_regcase("Foo - bar.");
?>

以上例程会输出：

[Ff][Oo][Oo] - [Bb][Aa][Rr].

可以用于在仅支持区分大小写正则表达式的产品中完成不区分大小写的模式匹配。

注释

Note:

在 PHP 5.3.0 中，已放弃使用 regex 扩展而建议使用 PCRE 扩展。调用此函数将会发出 E_DEPRECATED 通知。参见"差异列表"可帮助你转为使用 PCRE。

spliti
ssdeep
POSIX Regex 函数


ssdeep Fuzzy Hashing

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • ssdeep 函数
    • ssdeep_fuzzy_compare — Calculates the match score between two fuzzy hash signatures
    • ssdeep_fuzzy_hash_filename — Create a fuzzy hash from a file
    • ssdeep_fuzzy_hash — Create a fuzzy hash from a string
sql_regcase
简介
文本处理


简介

ssdeep is a utility for creating and comparing fuzzy hashes or » context-triggered piecewise hashing.

Fuzzy hashing can match signatures which have "...sequences of identical bytes in the same order, although bytes in between these sequences may be different in both content and length". (» ssdeep project page)

This extension provides functions for creating and comparing fuzzy hashes.

ssdeep
安装／配置
ssdeep


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
ssdeep


需求

This extension requires the » ssdeep library.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/ssdeep.

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
ssdeep 函数
ssdeep


ssdeep 函数

Table of Contents

  • ssdeep_fuzzy_compare — Calculates the match score between two fuzzy hash signatures
  • ssdeep_fuzzy_hash_filename — Create a fuzzy hash from a file
  • ssdeep_fuzzy_hash — Create a fuzzy hash from a string
预定义常量
ssdeep_fuzzy_compare
ssdeep


Calculates the match score between two fuzzy hash signatures

ssdeep 函数
ssdeep_fuzzy_hash_filename
ssdeep 函数
PHP Manual

ssdeep_fuzzy_compare

(PECL ssdeep >= 1.0.0)

ssdeep_fuzzy_compare — Calculates the match score between two fuzzy hash signatures

说明

int ssdeep_fuzzy_compare ( string $signature1 , string $signature2 )

Calculates the match score between signature1 and signature2 using » context-triggered piecewise hashing, and returns the match score.

参数

signature1

The first fuzzy hash signature string.

signature2

The second fuzzy hash signature string.

返回值

Returns an integer from 0 to 100 on success, FALSE otherwise.

ssdeep 函数
ssdeep_fuzzy_hash_filename
ssdeep 函数


Create a fuzzy hash from a file

ssdeep_fuzzy_compare
ssdeep_fuzzy_hash
ssdeep 函数
PHP Manual

ssdeep_fuzzy_hash_filename

(PECL ssdeep >= 1.0.0)

ssdeep_fuzzy_hash_filename — Create a fuzzy hash from a file

说明

string ssdeep_fuzzy_hash_filename ( string $file_name )

ssdeep_fuzzy_hash_filename() calculates the hash of the file specified by file_name using » context-triggered piecewise hashing, and returns that hash.

参数

file_name

The filename of the file to hash.

返回值

Returns a string on success, FALSE otherwise.

ssdeep_fuzzy_compare
ssdeep_fuzzy_hash
ssdeep 函数


Create a fuzzy hash from a string

ssdeep_fuzzy_hash_filename
字符串
ssdeep 函数
PHP Manual

ssdeep_fuzzy_hash

(PECL ssdeep >= 1.0.0)

ssdeep_fuzzy_hash — Create a fuzzy hash from a string

说明

string ssdeep_fuzzy_hash ( string $to_hash )

ssdeep_fuzzy_hash() calculates the hash of to_hash using » context-triggered piecewise hashing, and returns that hash.

参数

to_hash

The input string.

返回值

Returns a string on success, FALSE otherwise.

ssdeep_fuzzy_hash_filename
字符串
ssdeep 函数


字符串

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 字符串 函数
    • addcslashes — 以 C 语言风格使用反斜线转义字符串中的字符
    • addslashes — 使用反斜线引用字符串
    • bin2hex — 函数把包含数据的二进制字符串转换为十六进制值
    • chop — rtrim 的别名
    • chr — 返回指定的字符
    • chunk_split — 将字符串分割成小块
    • convert_cyr_string — 将字符由一种 Cyrillic 字符转换成另一种
    • convert_uudecode — 解码一个 uuencode 编码的字符串
    • convert_uuencode — 使用 uuencode 编码一个字符串
    • count_chars — 返回字符串所用字符的信息
    • crc32 — 计算一个字符串的 crc32 多项式
    • crypt — 单向字符串散列
    • echo — 输出一个或多个字符串
    • explode — 使用一个字符串分割另一个字符串
    • fprintf — 将格式化后的字符串写入到流
    • get_html_translation_table — 返回使用 htmlspecialchars 和 htmlentities 后的转换表
    • hebrev — 将逻辑顺序希伯来文（logical-Hebrew）转换为视觉顺序希伯来文（visual-Hebrew）
    • hebrevc — 将逻辑顺序希伯来文（logical-Hebrew）转换为视觉顺序希伯来文（visual-Hebrew），并且转换换行符
    • hex2bin — 转换十六进制字符串为二进制字符串
    • html_entity_decode — Convert all HTML entities to their applicable characters
    • htmlentities — Convert all applicable characters to HTML entities
    • htmlspecialchars_decode — 将特殊的 HTML 实体转换回普通字符
    • htmlspecialchars — Convert special characters to HTML entities
    • implode — 将一个一维数组的值转化为字符串
    • join — 别名 implode
    • lcfirst — 使一个字符串的第一个字符小写
    • levenshtein — 计算两个字符串之间的编辑距离
    • localeconv — Get numeric formatting information
    • ltrim — 删除字符串开头的空白字符（或其他字符）
    • md5_file — 计算指定文件的 MD5 散列值
    • md5 — 计算字符串的 MD5 散列值
    • metaphone — Calculate the metaphone key of a string
    • money_format — 将数字格式化成货币字符串
    • nl_langinfo — Query language and locale information
    • nl2br — 在字符串所有新行之前插入 HTML 换行标记
    • number_format — 以千位分隔符方式格式化一个数字
    • ord — 返回字符的 ASCII 码值
    • parse_str — 将字符串解析成多个变量
    • print — 输出字符串
    • printf — 输出格式化字符串
    • quoted_printable_decode — 将 quoted-printable 字符串转换为 8-bit 字符串
    • quoted_printable_encode — 将 8-bit 字符串转换成 quoted-printable 字符串
    • quotemeta — 转义元字符集
    • rtrim — 删除字符串末端的空白字符（或者其他字符）
    • setlocale — 设置地区信息
    • sha1_file — 计算文件的 sha1 散列值
    • sha1 — 计算字符串的 sha1 散列值
    • similar_text — 计算两个字符串的相似度
    • soundex — Calculate the soundex key of a string
    • sprintf — Return a formatted string
    • sscanf — 根据指定格式解析输入的字符
    • str_getcsv — 解析 CSV 字符串为一个数组
    • str_ireplace — str_replace 的忽略大小写版本
    • str_pad — 使用另一个字符串填充字符串为指定长度
    • str_repeat — 重复一个字符串
    • str_replace — 子字符串替换
    • str_rot13 — 对字符串执行 ROT13 转换
    • str_shuffle — 随机打乱一个字符串
    • str_split — 将字符串转换为数组
    • str_word_count — 返回字符串中单词的使用情况
    • strcasecmp — 二进制安全比较字符串（不区分大小写）
    • strchr — 别名 strstr
    • strcmp — 二进制安全字符串比较
    • strcoll — 基于区域设置的字符串比较
    • strcspn — 获取不匹配遮罩的起始子字符串的长度
    • strip_tags — 从字符串中去除 HTML 和 PHP 标记
    • stripcslashes — 反引用一个使用 addcslashes 转义的字符串
    • stripos — 查找字符串首次出现的位置（不区分大小写）
    • stripslashes — 反引用一个引用字符串
    • stristr — strstr 函数的忽略大小写版本
    • strlen — 获取字符串长度
    • strnatcasecmp — 使用“自然顺序”算法比较字符串（不区分大小写）
    • strnatcmp — 使用自然排序算法比较字符串
    • strncasecmp — 二进制安全比较字符串开头的若干个字符（不区分大小写）
    • strncmp — 二进制安全比较字符串开头的若干个字符
    • strpbrk — 在字符串中查找一组字符的任何一个字符
    • strpos — 查找字符串首次出现的位置
    • strrchr — 查找指定字符在字符串中的最后一次出现
    • strrev — 反转字符串
    • strripos — 计算指定字符串在目标字符串中最后一次出现的位置（不区分大小写）
    • strrpos — 计算指定字符串在目标字符串中最后一次出现的位置
    • strspn — 计算字符串中全部字符都存在于指定字符集合中的第一段子串的长度。
    • strstr — 查找字符串的首次出现
    • strtok — 标记分割字符串
    • strtolower — 将字符串转化为小写
    • strtoupper — 将字符串转化为大写
    • strtr — 转换指定字符
    • substr_compare — 二进制安全比较字符串（从偏移位置比较指定长度）
    • substr_count — 计算字串出现的次数
    • substr_replace — 替换字符串的子串
    • substr — 返回字符串的子串
    • trim — 去除字符串首尾处的空白字符（或者其他字符）
    • ucfirst — 将字符串的首字母转换为大写
    • ucwords — 将字符串中每个单词的首字母转换为大写
    • vfprintf — 将格式化字符串写入流
    • vprintf — 输出格式化字符串
    • vsprintf — 返回格式化字符串
    • wordwrap — 打断字符串为指定数量的字串
  • 更新日志
ssdeep_fuzzy_hash
简介
文本处理


简介

这些都是以各种方式处理字符串的函数。还有一些专门的章节位于正则表达式和 URL 处理部分。

关于字符串的运转机制，特别是关于单引号、双引号、转义序列的信息，参见本手册的字符串条目，其位于手册中的类型章节。

字符串
安装／配置
字符串


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
字符串


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

CRYPT_SALT_LENGTH integer
CRYPT_STD_DES integer
CRYPT_EXT_DES integer
CRYPT_MD5 integer
CRYPT_BLOWFISH integer
HTML_SPECIALCHARS (integer)
HTML_ENTITIES (integer)
ENT_COMPAT (integer)
ENT_QUOTES (integer)
ENT_NOQUOTES (integer)
ENT_IGNORE (integer)
ENT_SUBSTITUTE (integer)
ENT_DISALLOWED (integer)
ENT_HTML401 (integer)
ENT_XML1 (integer)
ENT_XHTML (integer)
ENT_HTML5 (integer)
CHAR_MAX (integer)
LC_CTYPE (integer)
LC_NUMERIC (integer)
LC_TIME (integer)
LC_COLLATE (integer)
LC_MONETARY (integer)
LC_ALL (integer)
LC_MESSAGES (integer)
STR_PAD_LEFT (integer)
STR_PAD_RIGHT (integer)
STR_PAD_BOTH (integer)
资源类型
字符串 函数
字符串


字符串 函数

参见

更多强大的字符串处理函数，参见 POSIX 正则表达式函数和 Perl 兼容正则表达式函数。

Table of Contents

  • addcslashes — 以 C 语言风格使用反斜线转义字符串中的字符
  • addslashes — 使用反斜线引用字符串
  • bin2hex — 函数把包含数据的二进制字符串转换为十六进制值
  • chop — rtrim 的别名
  • chr — 返回指定的字符
  • chunk_split — 将字符串分割成小块
  • convert_cyr_string — 将字符由一种 Cyrillic 字符转换成另一种
  • convert_uudecode — 解码一个 uuencode 编码的字符串
  • convert_uuencode — 使用 uuencode 编码一个字符串
  • count_chars — 返回字符串所用字符的信息
  • crc32 — 计算一个字符串的 crc32 多项式
  • crypt — 单向字符串散列
  • echo — 输出一个或多个字符串
  • explode — 使用一个字符串分割另一个字符串
  • fprintf — 将格式化后的字符串写入到流
  • get_html_translation_table — 返回使用 htmlspecialchars 和 htmlentities 后的转换表
  • hebrev — 将逻辑顺序希伯来文（logical-Hebrew）转换为视觉顺序希伯来文（visual-Hebrew）
  • hebrevc — 将逻辑顺序希伯来文（logical-Hebrew）转换为视觉顺序希伯来文（visual-Hebrew），并且转换换行符
  • hex2bin — 转换十六进制字符串为二进制字符串
  • html_entity_decode — Convert all HTML entities to their applicable characters
  • htmlentities — Convert all applicable characters to HTML entities
  • htmlspecialchars_decode — 将特殊的 HTML 实体转换回普通字符
  • htmlspecialchars — Convert special characters to HTML entities
  • implode — 将一个一维数组的值转化为字符串
  • join — 别名 implode
  • lcfirst — 使一个字符串的第一个字符小写
  • levenshtein — 计算两个字符串之间的编辑距离
  • localeconv — Get numeric formatting information
  • ltrim — 删除字符串开头的空白字符（或其他字符）
  • md5_file — 计算指定文件的 MD5 散列值
  • md5 — 计算字符串的 MD5 散列值
  • metaphone — Calculate the metaphone key of a string
  • money_format — 将数字格式化成货币字符串
  • nl_langinfo — Query language and locale information
  • nl2br — 在字符串所有新行之前插入 HTML 换行标记
  • number_format — 以千位分隔符方式格式化一个数字
  • ord — 返回字符的 ASCII 码值
  • parse_str — 将字符串解析成多个变量
  • print — 输出字符串
  • printf — 输出格式化字符串
  • quoted_printable_decode — 将 quoted-printable 字符串转换为 8-bit 字符串
  • quoted_printable_encode — 将 8-bit 字符串转换成 quoted-printable 字符串
  • quotemeta — 转义元字符集
  • rtrim — 删除字符串末端的空白字符（或者其他字符）
  • setlocale — 设置地区信息
  • sha1_file — 计算文件的 sha1 散列值
  • sha1 — 计算字符串的 sha1 散列值
  • similar_text — 计算两个字符串的相似度
  • soundex — Calculate the soundex key of a string
  • sprintf — Return a formatted string
  • sscanf — 根据指定格式解析输入的字符
  • str_getcsv — 解析 CSV 字符串为一个数组
  • str_ireplace — str_replace 的忽略大小写版本
  • str_pad — 使用另一个字符串填充字符串为指定长度
  • str_repeat — 重复一个字符串
  • str_replace — 子字符串替换
  • str_rot13 — 对字符串执行 ROT13 转换
  • str_shuffle — 随机打乱一个字符串
  • str_split — 将字符串转换为数组
  • str_word_count — 返回字符串中单词的使用情况
  • strcasecmp — 二进制安全比较字符串（不区分大小写）
  • strchr — 别名 strstr
  • strcmp — 二进制安全字符串比较
  • strcoll — 基于区域设置的字符串比较
  • strcspn — 获取不匹配遮罩的起始子字符串的长度
  • strip_tags — 从字符串中去除 HTML 和 PHP 标记
  • stripcslashes — 反引用一个使用 addcslashes 转义的字符串
  • stripos — 查找字符串首次出现的位置（不区分大小写）
  • stripslashes — 反引用一个引用字符串
  • stristr — strstr 函数的忽略大小写版本
  • strlen — 获取字符串长度
  • strnatcasecmp — 使用“自然顺序”算法比较字符串（不区分大小写）
  • strnatcmp — 使用自然排序算法比较字符串
  • strncasecmp — 二进制安全比较字符串开头的若干个字符（不区分大小写）
  • strncmp — 二进制安全比较字符串开头的若干个字符
  • strpbrk — 在字符串中查找一组字符的任何一个字符
  • strpos — 查找字符串首次出现的位置
  • strrchr — 查找指定字符在字符串中的最后一次出现
  • strrev — 反转字符串
  • strripos — 计算指定字符串在目标字符串中最后一次出现的位置（不区分大小写）
  • strrpos — 计算指定字符串在目标字符串中最后一次出现的位置
  • strspn — 计算字符串中全部字符都存在于指定字符集合中的第一段子串的长度。
  • strstr — 查找字符串的首次出现
  • strtok — 标记分割字符串
  • strtolower — 将字符串转化为小写
  • strtoupper — 将字符串转化为大写
  • strtr — 转换指定字符
  • substr_compare — 二进制安全比较字符串（从偏移位置比较指定长度）
  • substr_count — 计算字串出现的次数
  • substr_replace — 替换字符串的子串
  • substr — 返回字符串的子串
  • trim — 去除字符串首尾处的空白字符（或者其他字符）
  • ucfirst — 将字符串的首字母转换为大写
  • ucwords — 将字符串中每个单词的首字母转换为大写
  • vfprintf — 将格式化字符串写入流
  • vprintf — 输出格式化字符串
  • vsprintf — 返回格式化字符串
  • wordwrap — 打断字符串为指定数量的字串
预定义常量
addcslashes
字符串


以 C 语言风格使用反斜线转义字符串中的字符

字符串 函数
addslashes
字符串 函数
PHP Manual

addcslashes

(PHP 4, PHP 5, PHP 7)

addcslashes — 以 C 语言风格使用反斜线转义字符串中的字符

说明

string addcslashes ( string $str , string $charlist )

返回字符串，该字符串在属于参数 charlist 列表中的字符前都加上了反斜线。

参数

str

要转义的字符。

charlist

如果 charlist 中包含有 \n，\r 等字符，将以 C 语言风格转换，而其它非字母数字且 ASCII 码低于 32 以及高于 126 的字符均转换成使用八进制表示。

当定义 charlist 参数中的字符序列时，需要确实知道介于自己设置的开始及结束范围之内的都是些什么字符。

<?php
echo addcslashes('foo[ ]', 'A..z');
// 输出：\f\o\o\[ \]
// 所有大小写字母均被转义
// ... 但 [\]^_` 以及分隔符、换行符、回车符等也一并被转义了。
?>
另外，如果设置范围中的结束字符 ASCII 码高于开始字符，则不会创建范围，只是将开始字符、结束字符以及其间的字符逐个转义。可使用 ord() 函数获取字符的 ASCII 码值。
<?php
echo addcslashes("zoo['.']", 'z..A');
// 输出：\zoo['\.']
?>

当选择对字符 0，a，b，f，n，r，t 和 v 进行转义时需要小心，它们将被转换成 \0，\a，\b，\f，\n，\r，\t 和 \v。在 PHP 中，只有 \0（NULL），\r（回车符），\n（换行符）和 \t（制表符）是预定义的转义序列， 而在 C 语言中，上述的所有转换后的字符都是预定义的转义序列。

返回值

返回转义后的字符。

更新日志

版本 | 说明
5.2.5 | The escape sequences \v and \f were added.

范例

charlist 参数，如"\0..\37"，将转义所有 ASCII 码介于 0 和 31 之间的字符。

Example #1 addcslashes() 例子

<?php
$escaped = addcslashes($not_escaped, "\0..\37!@\177..\377");
?>

参见

  • stripcslashes() - 反引用一个使用 addcslashes 转义的字符串
  • stripslashes() - 反引用一个引用字符串
  • addslashes() - 使用反斜线引用字符串
  • htmlspecialchars() - Convert special characters to HTML entities
  • quotemeta() - 转义元字符集

字符串 函数
addslashes
字符串 函数


使用反斜线引用字符串

addcslashes
bin2hex
字符串 函数
PHP Manual

addslashes

(PHP 4, PHP 5, PHP 7)

addslashes — 使用反斜线引用字符串

说明

string addslashes ( string $str )

返回字符串，该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号（'）、双引号（"）、反斜线（\）与 NUL（NULL 字符）。

一个使用 addslashes() 的例子是当你要往数据库中输入数据时。 例如，将名字 O'reilly 插入到数据库中，这就需要对其进行转义。 强烈建议使用 DBMS 指定的转义函数 （比如 MySQL 是 mysqli_real_escape_string()，PostgreSQL 是 pg_escape_string()），但是如果你使用的 DBMS 没有一个转义函数，并且使用 \ 来转义特殊字符，你可以使用这个函数。 仅仅是为了获取插入数据库的数据，额外的 \ 并不会插入。 当 PHP 指令 magic_quotes_sybase 被设置成 on 时，意味着插入 ' 时将使用 ' 进行转义。

PHP 5.4 之前 PHP 指令 magic_quotes_gpc 默认是 on， 实际上所有的 GET、POST 和 COOKIE 数据都用被 addslashes() 了。 不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes()，因为这样会导致双层转义。 遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

参数

str

要转义的字符。

返回值

返回转义后的字符。

范例

Example #1 一个 addslashes() 例子

<?php
$str = "Is your name O'reilly?";

// 输出： Is your name O\'reilly?
echo addslashes($str);
?>

参见

  • stripcslashes() - 反引用一个使用 addcslashes 转义的字符串
  • stripslashes() - 反引用一个引用字符串
  • addcslashes() - 以 C 语言风格使用反斜线转义字符串中的字符
  • htmlspecialchars() - Convert special characters to HTML entities
  • quotemeta() - 转义元字符集
  • get_magic_quotes_gpc() - 获取当前 magic_quotes_gpc 的配置选项设置

addcslashes
bin2hex
字符串 函数


函数把包含数据的二进制字符串转换为十六进制值

addslashes
chop
字符串 函数
PHP Manual

bin2hex

(PHP 4, PHP 5, PHP 7)

bin2hex — 函数把包含数据的二进制字符串转换为十六进制值

说明

string bin2hex ( string $str )

把二进制的参数 str 转换为的十六进制的字符串。转换使用字节方式，高四位字节优先。

参数

str

二进制字符串。

返回值

返回指定字符串十六进制的表示。

参见

  • hex2bin() - 转换十六进制字符串为二进制字符串
  • pack() - Pack data into binary string

addslashes
chop
字符串 函数


rtrim 的别名

bin2hex
chr
字符串 函数
PHP Manual

chop

(PHP 4, PHP 5, PHP 7)

chop — rtrim() 的别名

说明

此函数是该函数的别名：rtrim()。

注释

Note:

chop() 与 Perl 的 chop() 函数有所不同，它会删除字符串的最后一个字符。

bin2hex
chr
字符串 函数


返回指定的字符

chop
chunk_split
字符串 函数
PHP Manual

chr

(PHP 4, PHP 5, PHP 7)

chr — 返回指定的字符

说明

string chr ( int $ascii )

返回相对应于 ascii 所指定的单个字符。

此函数与 ord() 是互补的。

参数

ascii

Ascii 码。

返回值

返回规定的字符。

范例

Example #1 chr() 例子

<?php
$str = "The string ends in escape: ";
$str .= chr(27); /* 在 $str 后边增加换码符 */

/* 通常这样更有用 */

$str = sprintf("The string ends in escape: %c", 27);
?>

参见

  • sprintf() - Return a formatted string 如何使用格式字符串 %c。
  • ord()
  • 可以在此处找到 ASCII 码表：» http://www.asciitable.com。

chop
chunk_split
字符串 函数


将字符串分割成小块

chr
convert_cyr_string
字符串 函数
PHP Manual

chunk_split

(PHP 4, PHP 5, PHP 7)

chunk_split — 将字符串分割成小块

说明

string chunk_split ( string $body [, int $chunklen = 76 [, string $end = "\r\n" ]] )

使用此函数将字符串分割成小块非常有用。例如将 base64_encode() 的输出转换成符合 RFC 2045 语义的字符串。它会在每 chunklen 个字符后边插入 end。

参数

body

要分割的字符。

chunklen

分割的尺寸。

end

行尾序列符号。

返回值

返回分割后的字符。

范例

Example #1 chunk_split() 例子

<?php
// 使用 RFC 2045 语义格式化 $data
$new_string = chunk_split(base64_encode($data));
?>

参见

  • str_split() - 将字符串转换为数组
  • explode() - 使用一个字符串分割另一个字符串
  • split() - 用正则表达式将字符串分割到数组中
  • wordwrap() - 打断字符串为指定数量的字串
  • » RFC 2045

chr
convert_cyr_string
字符串 函数


将字符由一种 Cyrillic 字符转换成另一种

chunk_split
convert_uudecode
字符串 函数
PHP Manual

convert_cyr_string

(PHP 4, PHP 5, PHP 7)

convert_cyr_string — 将字符由一种 Cyrillic 字符转换成另一种

说明

string convert_cyr_string ( string $str , string $from , string $to )

此函数将给定的字符串从一种 Cyrillic 字符转换成另一种，返回转换之后的字符串。

参数

str

要转换的字符。

from

单个字符，代表源 Cyrillic 字符集。

to

单个字符，代表了目标 Cyrillic 字符集。

支持的类型有：

  • k - koi8-r
  • w - windows-1251
  • i - iso8859-5
  • a - x-cp866
  • d - x-cp866
  • m - x-mac-cyrillic

返回值

返回转换后的字符串。

注释

Note: 此函数可安全用于二进制对象。

chunk_split
convert_uudecode
字符串 函数


解码一个 uuencode 编码的字符串

convert_cyr_string
convert_uuencode
字符串 函数
PHP Manual

convert_uudecode

(PHP 5, PHP 7)

convert_uudecode — 解码一个 uuencode 编码的字符串

说明

string convert_uudecode ( string $data )

convert_uudecode() 解码一个 uuencode 编码的字符串。

参数

data

uuencode 编码后的数据

返回值

返回解码后的字符串数据， 或者在失败时返回 FALSE.。

范例

Example #1 convert_uudecode() 例子

<?php
/* 你猜会输出啥？:) */
echo convert_uudecode("+22!L;W9E(%!(4\"$`\n`");
?>

参见

  • convert_uuencode() - 使用 uuencode 编码一个字符串

convert_cyr_string
convert_uuencode
字符串 函数


使用 uuencode 编码一个字符串

convert_uudecode
count_chars
字符串 函数
PHP Manual

convert_uuencode

(PHP 5, PHP 7)

convert_uuencode — 使用 uuencode 编码一个字符串

说明

string convert_uuencode ( string $data )

convert_uuencode() 使用 uuencode 算法对一个字符串进行编码。

uuencode 算法会将所有（含二进制）字符串转化为可输出的字符， 并且可以被安全的应用于网络传输。使用 uuencode 编码后的数据 将会比源数据大35%左右

参数

data

需要被编码的数据。

返回值

返回 uuencode 编码后的数据 或者在失败时返回 FALSE。

范例

Example #1 convert_uuencode() 例子

<?php
$some_string = "test\ntext text\r\n";

echo convert_uuencode($some_string);
?>

参见

  • convert_uudecode() - 解码一个 uuencode 编码的字符串
  • base64_encode() - 使用 MIME base64 对数据进行编码

convert_uudecode
count_chars
字符串 函数


返回字符串所用字符的信息

convert_uuencode
crc32
字符串 函数
PHP Manual

count_chars

(PHP 4, PHP 5, PHP 7)

count_chars — 返回字符串所用字符的信息

说明

mixed count_chars ( string $string [, int $mode = 0 ] )

统计 string 中每个字节值（0..255）出现的次数，使用多种模式返回结果。

参数

string

需要统计的字符串。

mode

参见返回的值。

返回值

根据不同的 mode，count_chars() 返回下列不同的结果：

  • 0 - 以所有的每个字节值作为键名，出现次数作为值的数组。
  • 1 - 与 0 相同，但只列出出现次数大于零的字节值。
  • 2 - 与 0 相同，但只列出出现次数等于零的字节值。
  • 3 - 返回由所有使用了的字节值组成的字符串。
  • 4 - 返回由所有未使用的字节值组成的字符串。

范例

Example #1 count_chars() 示例

<?php
$data = "Two Ts and one F.";

foreach (count_chars($data, 1) as $i => $val) {
   echo "There were $val instance(s) of \"" , chr($i) , "\" in the string.\n";
}
?>

以上例程会输出：

There were 4 instance(s) of " " in the string.
There were 1 instance(s) of "." in the string.
There were 1 instance(s) of "F" in the string.
There were 2 instance(s) of "T" in the string.
There were 1 instance(s) of "a" in the string.
There were 1 instance(s) of "d" in the string.
There were 1 instance(s) of "e" in the string.
There were 2 instance(s) of "n" in the string.
There were 2 instance(s) of "o" in the string.
There were 1 instance(s) of "s" in the string.
There were 1 instance(s) of "w" in the string.

参见

  • strpos() - 查找字符串首次出现的位置
  • substr_count() - 计算字串出现的次数

convert_uuencode
crc32
字符串 函数


计算一个字符串的 crc32 多项式

count_chars
crypt
字符串 函数
PHP Manual

crc32

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

crc32 — 计算一个字符串的 crc32 多项式

说明

int crc32 ( string $str )

生成 str 的 32 位循环冗余校验码多项式。这通常用于检查传输的数据是否完整。

Warning

由于 PHP 的整数是带符号的，所以在 32 位系统上许多 crc32 校验码将返回负整数。 尽管在 64 位上所有 crc32() 的结果将都是正整数。

因此你需要使用 sprintf() 或 printf() 的"%u"格式符来获取表示无符号 crc32 校验码的字符串。

For a hexadecimal representation of the checksum you can either use the "%x" formatter of sprintf() or printf() or the dechex() conversion functions, both of these also take care of converting the crc32() result to an unsigned integer.

Having 64bit installations also return negative integers for higher result values was considered but would break the hexadecimal conversion as negatives would get an extra 0xFFFFFFFF######## offset then. As hexadecimal representation seems to be the most common use case we decided to not break this even if it breaks direct decimal comparisons in about 50% of the cases when moving from 32 to 64bits.

In retrospect having the function return an integer maybe wasn't the best idea and returning a hex string representation right away (as e.g. md5() does) might have been a better plan to begin with.

For a more portable solution you may also consider the generic hash(). hash("crc32b", $str) will return the same string as dechex(crc32($str)).

参数

str

要校验的数据。

返回值

返回 str crc32 校验的整数。

范例

Example #1 显示一个 crc32 校验码

示例中的第二行演示了如何使用 printf() 函数转换校验码：

<?php
$checksum = crc32("The quick brown fox jumped over the lazy dog.");
printf("%u\n", $checksum);
?>

参见

  • hash() - 生成哈希值 （消息摘要）
  • md5() - 计算字符串的 MD5 散列值
  • sha1() - 计算字符串的 sha1 散列值

count_chars
crypt
字符串 函数


单向字符串散列

crc32
echo
字符串 函数
PHP Manual

crypt

(PHP 4, PHP 5, PHP 7)

crypt — 单向字符串散列

说明

string crypt ( string $str [, string $salt ] )

crypt() 返回一个基于标准 UNIX DES 算法或系统上其他可用的替代算法的散列字符串。

salt 参数是可选的。然而，如果没有salt的话，crypt()创建出来的会是弱密码。 php 5.6及之后的版本会在没有它的情况下抛出一个 E_NOTICE 级别的错误。为了更好的安全性，请确保指定一个足够强度的盐值。

password_hash()使用了一个强的哈希算法，来产生足够强的盐值，并且会自动进行合适的轮次。password_hash()是crypt()的一个简单封装，并且完全与现有的密码哈希兼容。推荐使用password_hash()。

有些系统支持不止一种散列类型。实际上，有时候，基于 MD5 的算法被用来替代基于标准 DES 的算法。这种散列类型由盐值参数触发。在 5.3 之前，PHP 在安装时根据系统的 crypt() 决定可用的算法。如果没有提供盐值，PHP 将自动生成一个 2 个字符（DES）或者 12 个字符（MD5）的盐值 ，这取决于 MD5 crypt() 的可用性。PHP 设置了一个名为 CRYPT_SALT_LENGTH 的常量，用来表示可用散列允许的最长可用盐值。

基于标准 DES 算法的 crypt() 在输出内容的开始位置返回两个字符的盐值。它也只使用 str 的开始 8 个字符，所以更长的以相同 8 个字符开始的字符串也将生成相同的结果（当使用了相同的盐值时）。

在 crypt() 函数支持多重散列的系统上，下面的常量根据相应的类型是否可用被设置为 0 或 1：

  • CRYPT_STD_DES - 基于标准 DES 算法的散列使用 "./0-9A-Za-z" 字符中的两个字符作为盐值。在盐值中使用非法的字符将导致 crypt() 失败。
  • CRYPT_EXT_DES - 扩展的基于 DES 算法的散列。其盐值为 9 个字符的字符串，由 1 个下划线后面跟着 4 字节循环次数和 4 字节盐值组成。它们被编码成可打印字符，每个字符 6 位，有效位最少的优先。0 到 63 被编码为 "./0-9A-Za-z"。在盐值中使用非法的字符将导致 crypt() 失败。
  • CRYPT_MD5 - MD5 散列使用一个以 $1$ 开始的 12 字符的字符串盐值。
  • CRYPT_BLOWFISH - Blowfish 算法使用如下盐值："$2a$"，一个两位 cost 参数，"$" 以及 64 位由 "./0-9A-Za-z" 中的字符组合而成的字符串。在盐值中使用此范围之外的字符将导致 crypt() 返回一个空字符串。两位 cost 参数是循环次数以 2 为底的对数，它的范围是 04-31，超出这个范围将导致 crypt() 失败。 PHP 5.3.7 之前只支持 "$2a$" 作为盐值的前缀，PHP 5.3.7 开始引入了新的前缀来修正一个在Blowfish实现上的安全风险。可以参考» this document来了解关于这个修复的更多信息。总而言之，开发者如果仅针对 PHP 5.3.7及之后版本进行开发，那应该使用 "$2y$" 而非 "$2a$"
  • CRYPT_SHA256 - SHA-256 算法使用一个以 $5$ 开头的 16 字符字符串盐值进行散列。如果盐值字符串以 "rounds=<N>$" 开头，N 的数字值将被用来指定散列循环的执行次数，这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 5000，最小是 1000，最大是 999,999,999。超出这个范围的 N 将会被转换为最接近的值。
  • CRYPT_SHA512 - SHA-512 算法使用一个以 $6$ 开头的 16 字符字符串盐值进行散列。如果盐值字符串以 "rounds=<N>$" 开头，N 的数字值将被用来指定散列循环的执行次数，这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 5000，最小是 1000，最大是 999,999,999。超出这个范围的 N 将会被转换为最接近的值。

Note:

从 PHP 5.3.0 起，PHP 包含了它自己的实现，并将在系统缺乏相应算法支持的时候使用它自己的实现。

参数

str

待散列的字符串。

Caution

使用 CRYPT_BLOWFISH 算法将导致str被裁剪为一个最长72个字符的字符串。

salt

可选的盐值字符串。如果没有提供，算法行为将由不同的算法实现决定，并可能导致不可预料的结束。

返回值

返回散列后的字符串或一个少于 13 字符的字符串，从而保证在失败时与盐值区分开来。

Warning

当校验密码时，应该使用一个不容易被时间攻击的字符串比较函数来比较crypt()的输出与之前已知的哈希。出于这个目的，PHP5.6开始提供了hash_equals()。

更新日志

版本 | 说明
5.6.5 | When the failure string "*0" is given as the salt, "*1" will now be returned for consistency with other crypt implementations. Prior to this version, PHP 5.6 would incorrectly return a DES hash.
5.6.0 | Raise E_NOTICE security warning if salt is omitted.
5.5.21 | When the failure string "*0" is given as the salt, "*1" will now be returned for consistency with other crypt implementations. Prior to this version, PHP 5.5 (and earlier branches) would incorrectly return a DES hash.
5.3.7 | Added $2x$ and $2y$ Blowfish modes to deal with potential high-bit attacks.
5.3.2 | 基于 Ulrich Drepper 的» 实现，新增基于 SHA-256 算法和 SHA-512 算法的 crypt。
5.3.2 | 修正了 Blowfish 算法由于非法循环导致的问题，返回"失败"字符串（"*0" 或 "*1"）而不是转而使用 DES 算法。
5.3.0 | PHP 现在包含了它自己的 MD5 Crypt 实现，包括标准 DES 算法，扩展的 DES 算法以及 Blowfish 算法。如果系统缺乏相应的实现，那么 PHP 将使用它自己的实现。

范例

Example #1 crypt() 范例

<?php
$hashed_password = crypt('mypassword'); // 自动生成盐值

/* 你应当使用 crypt() 得到的完整结果作为盐值进行密码校验，以此来避免使用不同散列算法导致的问题。（如上所述，基于标准 DES 算法的密码散列使用 2 字符盐值，但是基于 MD5 算法的散列使用 12 个字符盐值。）*/
if (hash_equals($hashed_password, crypt($user_input, $hashed_password))) {
   echo "Password verified!";
}
?>

Example #2 利用 htpasswd 进行 crypt() 加密

<?php
// 设置密码
$password = 'mypassword';

// 获取散列值，使用自动盐值
$hash = crypt($password);
?>

Example #3 以不同散列类型使用 crypt()

<?php
if (CRYPT_STD_DES == 1) {
    echo 'Standard DES: ' . crypt('rasmuslerdorf', 'rl') . "\n";
}

if (CRYPT_EXT_DES == 1) {
    echo 'Extended DES: ' . crypt('rasmuslerdorf', '_J9..rasm') . "\n";
}

if (CRYPT_MD5 == 1) {
    echo 'MD5:          ' . crypt('rasmuslerdorf', '$1$rasmusle$') . "\n";
}

if (CRYPT_BLOWFISH == 1) {
    echo 'Blowfish:     ' . crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$') . "\n";
}

if (CRYPT_SHA256 == 1) {
    echo 'SHA-256:      ' . crypt('rasmuslerdorf', '$5$rounds=5000$usesomesillystringforsalt$') . "\n";
}

if (CRYPT_SHA512 == 1) {
    echo 'SHA-512:      ' . crypt('rasmuslerdorf', '$6$rounds=5000$usesomesillystringforsalt$') . "\n";
}
?>

以上例程的输出类似于：

Standard DES: rl.3StKT.4T8M
Extended DES: _J9..rasmBYk8r9AiWNc
MD5:          $1$rasmusle$rISCgZzpwk3UhDidwXvin0
Blowfish:     $2a$07$usesomesillystringfore2uDLvp1Ii2e./U9C8sBjqp8I90dH6hi
SHA-256:      $5$rounds=5000$usesomesillystri$KqJWpanXZHKq2BOB43TSaYhEWsQ1Lr5QNyPCDH/Tp.6
SHA-512:      $6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21

注释

Note: 由于 crypt() 使用的是单向算法，因此不存在 decrypt 函数。

参见

  • hash_equals() - 可防止时序攻击的字符串比较
  • password_hash() - 创建密码的哈希（hash）
  • md5() - 计算字符串的 MD5 散列值
  • Mcrypt 扩展
  • 更多关于 crypt 函数的信息，请阅读 Unix man 页面

crc32
echo
字符串 函数


输出一个或多个字符串

crypt
explode
字符串 函数
PHP Manual

echo

(PHP 4, PHP 5, PHP 7)

echo — 输出一个或多个字符串

说明

void echo ( string $arg1 [, string $... ] )

输出所有参数。不会换行。

echo 不是一个函数（它是一个语言结构）， 因此你不一定要使用小括号来指明参数，单引号，双引号都可以。 echo （不像其他语言构造）不表现得像一个函数， 所以不能总是使用一个函数的上下文。 另外，如果你想给echo 传递多个参数， 那么就不能使用小括号。

echo 也有一个快捷用法，你可以在打开标记前直接用一个等号。在 PHP 5.4.0 之前，必须在php.ini 里面启用 short_open_tag 才有效。

I have <?=$foo?> foo.

和 print 的唯一不同之处是， echo 接受参数列表。

参数

arg1

要输出的参数

...

返回值

没有返回值。

范例

Example #1 echo 例子

<?php
echo "Hello World";

echo "This spans
multiple lines. The newlines will be
output as well";

echo "This spans\nmultiple lines. The newlines will be\noutput as well.";

echo "Escaping characters is done \"Like this\".";

// You can use variables inside of an echo statement
$foo = "foobar";
$bar = "barbaz";

echo "foo is $foo"; // foo is foobar

// You can also use arrays
$baz = array("value" => "foo");

echo "this is {$baz['value']} !"; // this is foo !

// Using single quotes will print the variable name, not the value
echo 'foo is $foo'; // foo is $foo

// If you are not using any other characters, you can just echo variables
echo $foo;          // foobar
echo $foo,$bar;     // foobarbarbaz

// Strings can either be passed individually as multiple arguments or
// concatenated together and passed as a single argument
echo 'This ', 'string ', 'was ', 'made ', 'with multiple parameters.', chr(10);
echo 'This ' . 'string ' . 'was ' . 'made ' . 'with concatenation.' . "\n";

echo <<<END
This uses the "here document" syntax to output
multiple lines with $variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon. no extra whitespace!
END;

// Because echo does not behave like a function, the following code is invalid.
($some_var) ? echo 'true' : echo 'false';

// However, the following examples will work:
($some_var) ? print 'true' : print 'false'; // print is also a construct, but
                                            // it behaves like a function, so
                                            // it may be used in this context.
echo $some_var ? 'true': 'false'; // changing the statement around
?>

注释

Note: 因为是一个语言构造器而不是一个函数，不能被 可变函数 调用。

Tip

相对 echo 中拼接字符串而言，传递多个参数比较好，考虑到了 PHP 中连接运算符（"."）的优先级。 传入多个参数，不需要圆括号保证优先级：

<?php
echo "Sum: ", 1 + 2;
echo "Hello ", isset($name) ? $name : "John Doe", "!";

如果是拼接的，相对于加号和三目元算符，连接运算符（"."）具有更高优先级。为了正确性，必须使用圆括号：

<?php
echo 'Sum: ' . (1 + 2);
echo 'Hello ' . (isset($name) ? $name : 'John Doe') . '!';

参见

  • print - 输出字符串
  • printf() - 输出格式化字符串
  • flush() - 刷新输出缓冲
  • Heredoc 语法

crypt
explode
字符串 函数


使用一个字符串分割另一个字符串

echo
fprintf
字符串 函数
PHP Manual

explode

(PHP 4, PHP 5, PHP 7)

explode — 使用一个字符串分割另一个字符串

说明

array explode ( string $delimiter , string $string [, int $limit ] )

此函数返回由字符串组成的数组，每个元素都是 string 的一个子串，它们被字符串 delimiter 作为边界点分割出来。

参数

delimiter

边界上的分隔字符。

string

输入的字符串。

limit

如果设置了 limit 参数并且是正数，则返回的数组包含最多 limit 个元素，而最后那个元素将包含 string 的剩余部分。

如果 limit 参数是负数，则返回除了最后的 -limit 个元素外的所有元素。

如果 limit 是 0，则会被当做 1。

由于历史原因，虽然 implode() 可以接收两种参数顺序，但是 explode() 不行。你必须保证 separator 参数在 string 参数之前才行。

返回值

此函数返回由字符串组成的 array，每个元素都是 string 的一个子串，它们被字符串 delimiter 作为边界点分割出来。

如果 delimiter 为空字符串（""），explode() 将返回 FALSE。 如果 delimiter 所包含的值在 string 中找不到，并且使用了负数的 limit ， 那么会返回空的 array， 否则返回包含 string 单个元素的数组。

更新日志

版本 | 说明
5.1.0 | 支持负数的 limit
4.0.1 | 增加了参数 limit

范例

Example #1 explode() 例子

<?php
// 示例 1
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2

// 示例 2
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // foo
echo $pass; // *

?>

Example #2 explode() return examples

<?php
/* A string that doesn't contain the delimiter will simply return a one-length array of the original string. */
$input1 = "hello";
$input2 = "hello,there";
var_dump( explode( ',', $input1 ) );
var_dump( explode( ',', $input2 ) );

?>

以上例程会输出：

array(1)
(
    [0] => string(5) "hello"
)
array(2)
(
    [0] => string(5) "hello"
    [1] => string(5) "there"
)

Example #3 limit 参数的例子

<?php
$str = 'one|two|three|four';

// 正数的 limit
print_r(explode('|', $str, 2));

// 负数的 limit（自 PHP 5.1 起）
print_r(explode('|', $str, -1));
?>

以上例程会输出：

Array
(
    [0] => one
    [1] => two|three|four
)
Array
(
    [0] => one
    [1] => two
    [2] => three
)

注释

Note: 此函数可安全用于二进制对象。

参见

  • preg_split() - 通过一个正则表达式分隔字符串
  • str_split() - 将字符串转换为数组
  • mb_split() - 使用正则表达式分割多字节字符串
  • str_word_count() - 返回字符串中单词的使用情况
  • strtok() - 标记分割字符串
  • implode() - 将一个一维数组的值转化为字符串

echo
fprintf
字符串 函数


将格式化后的字符串写入到流

explode
get_html_translation_table
字符串 函数
PHP Manual

fprintf

(PHP 5, PHP 7)

fprintf — 将格式化后的字符串写入到流

说明

int fprintf ( resource $handle , string $format [, mixed $args [, mixed $... ]] )

写入一个根据 format 格式化后的字符串到 由 handle 句柄打开的流中。

参数

handle

文件系统指针，是典型地由 fopen() 创建的 resource(资源)。

format

参见 sprintf() 中对 format 的描述。

args

...

返回值

返回写入的字符串长度。

范例

Example #1 fprintf(): zero-padded integers

<?php
if (!($fp = fopen('date.txt', 'w'))) {
    return;
}

fprintf($fp, "%04d-%02d-%02d", $year, $month, $day);
// will write the formatted ISO date to date.txt
?>

Example #2 fprintf(): formatting currency

<?php
if (!($fp = fopen('currency.txt', 'w'))) {
    return;
}

$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// echo $money will output "123.1";
$len = fprintf($fp, '%01.2f', $money);
// will write "123.10" to currency.txt

echo "wrote $len bytes to currency.txt";
// use the return value of fprintf to determine how many bytes we wrote
?>

参见

  • printf() - 输出格式化字符串
  • sprintf() - Return a formatted string
  • sscanf() - 根据指定格式解析输入的字符
  • fscanf() - 从文件中格式化输入
  • vsprintf() - 返回格式化字符串
  • number_format() - 以千位分隔符方式格式化一个数字

explode
get_html_translation_table
字符串 函数


返回使用 htmlspecialchars 和 htmlentities 后的转换表

fprintf
hebrev
字符串 函数
PHP Manual

get_html_translation_table

(PHP 4, PHP 5, PHP 7)

get_html_translation_table — 返回使用 htmlspecialchars() 和 htmlentities() 后的转换表

说明

array get_html_translation_table ([ int $table = HTML_SPECIALCHARS [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = 'UTF-8' ]]] )

get_html_translation_table() 将返回 htmlspecialchars() 和 htmlentities() 处理后的转换表。

Note:

特殊字符可以使用多种转换方式。 例如： " 可以被转换成 &quot;, &#34; 或者 &#x22. get_html_translation_table() 返回其中最常用的。

参数

table

有两个新的常量 (HTML_ENTITIES, HTML_SPECIALCHARS) 允许你指定你想要的表。

flags

A bitmask of one or more of the following flags, which specify which quotes the table will contain as well as which document type the table is for. The default is ENT_COMPAT | ENT_HTML401.

Available flags constants
Constant Name | Description
ENT_COMPAT | Table will contain entities for double-quotes, but not for single-quotes.
ENT_QUOTES | Table will contain entities for both double and single quotes.
ENT_NOQUOTES | Table will neither contain entities for single quotes nor for double quotes.
ENT_HTML401 | Table for HTML 4.01.
ENT_XML1 | Table for XML 1.
ENT_XHTML | Table for XHTML.
ENT_HTML5 | Table for HTML 5.

encoding

Encoding to use. If omitted, the default value for this argument is ISO-8859-1 in versions of PHP prior to 5.4.0, and UTF-8 from PHP 5.4.0 onwards.

支持以下字符集：

支持的字符集列表
字符集 | 别名 | 描述
ISO-8859-1 | ISO8859-1 | 西欧，Latin-1
ISO-8859-5 | ISO8859-5 | Little used cyrillic charset (Latin/Cyrillic).
ISO-8859-15 | ISO8859-15 | 西欧，Latin-9。增加欧元符号，法语和芬兰语字母在 Latin-1(ISO-8859-1) 中缺失。
UTF-8 | ASCII 兼容的多字节 8 位 Unicode。
cp866 | ibm866, 866 | DOS 特有的西里尔编码。本字符集在 4.3.2 版本中得到支持。
cp1251 | Windows-1251, win-1251, 1251 | Windows 特有的西里尔编码。本字符集在 4.3.2 版本中得到支持。
cp1252 | Windows-1252, 1252 | Windows 特有的西欧编码。
KOI8-R | koi8-ru, koi8r | 俄语。本字符集在 4.3.2 版本中得到支持。
BIG5 | 950 | 繁体中文，主要用于中国台湾省。
GB2312 | 936 | 简体中文，中国国家标准字符集。
BIG5-HKSCS | 繁体中文，附带香港扩展的 Big5 字符集。
Shift_JIS | SJIS, 932 | 日语
EUC-JP | EUCJP | 日语
MacRoman | Mac OS 使用的字符串。
'' An empty string activates detection from script encoding (Zend multibyte), default_charset and current locale (see nl_langinfo() and setlocale()), in this order. Not recommended.

Note: 其他字符集没有认可。将会使用默认编码并抛出异常。

返回值

将转换表作为一个数组返回。

更新日志

版本 | 说明
5.4.0 | The default value for the encoding parameter was changed to UTF-8.
5.4.0 | The constants ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
5.3.4 | The encoding parameter was added.

范例

Example #1 Translation Table Example

<?php
var_dump(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES | ENT_HTML5));
?>

以上例程的输出类似于：

array(1510) {
  ["
"]=>
  string(9) "&NewLine;"
  ["!"]=>
  string(6) "&excl;"
  ["""]=>
  string(6) "&quot;"
  ["#"]=>
  string(5) "&num;"
  ["$"]=>
  string(8) "&dollar;"
  ["%"]=>
  string(8) "&percnt;"
  ["&"]=>
  string(5) "&amp;"
  ["'"]=>
  string(6) "&apos;"
  // ...
}

参见

  • htmlspecialchars() - Convert special characters to HTML entities
  • htmlentities() - Convert all applicable characters to HTML entities
  • html_entity_decode() - Convert all HTML entities to their applicable characters

fprintf
hebrev
字符串 函数


将逻辑顺序希伯来文（logical-Hebrew）转换为视觉顺序希伯来文（visual-Hebrew）

get_html_translation_table
hebrevc
字符串 函数
PHP Manual

hebrev

(PHP 4, PHP 5, PHP 7)

hebrev — 将逻辑顺序希伯来文（logical-Hebrew）转换为视觉顺序希伯来文（visual-Hebrew）

说明

string hebrev ( string $hebrew_text [, int $max_chars_per_line = 0 ] )

将逻辑顺序希伯来文（logical-Hebrew）转换为视觉顺序希伯来文（visual-Hebrew）

函数将会尝试避免破坏单词。

参数

hebrew_text

逻辑顺序希伯来文字符串。

max_chars_per_line

可选参数，表示每行可返回的最多字符数。

返回值

返回视觉顺序字符串。

参见

  • hebrevc() - 将逻辑顺序希伯来文（logical-Hebrew）转换为视觉顺序希伯来文（visual-Hebrew），并且转换换行符

get_html_translation_table
hebrevc
字符串 函数


将逻辑顺序希伯来文（logical-Hebrew）转换为视觉顺序希伯来文（visual-Hebrew），并且转换换行符

hebrev
hex2bin
字符串 函数
PHP Manual

hebrevc

(PHP 4, PHP 5, PHP 7)

hebrevc — 将逻辑顺序希伯来文（logical-Hebrew）转换为视觉顺序希伯来文（visual-Hebrew），并且转换换行符

说明

string hebrevc ( string $hebrew_text [, int $max_chars_per_line = 0 ] )

本函数与hebrev() 一样，唯一的区别是 本函数会额外将换行符(\n)转换为"<br>\n"。

函数将会尝试避免破坏单词。

参数

hebrew_text

逻辑顺序希伯来文字符串。

max_chars_per_line

可选参数，表示每行可返回的最多字符数。

返回值

返回视觉顺序字符串。

参见

  • hebrev() - 将逻辑顺序希伯来文（logical-Hebrew）转换为视觉顺序希伯来文（visual-Hebrew）

hebrev
hex2bin
字符串 函数


转换十六进制字符串为二进制字符串

hebrevc
html_entity_decode
字符串 函数
PHP Manual

hex2bin

(PHP >= 5.4.0)

hex2bin — 转换十六进制字符串为二进制字符串

说明

string hex2bin ( string $data )

转换十六进制字符串为二进制字符串。

Caution

这个函数不是 转换十六进制数字为二进制数字。这种转换可以使用base_convert() 函数。

参数

data

十六进制表示的数据

返回值

返回给定数据的二进制表示 或者在失败时返回 FALSE。

错误／异常

如果输入的十六进制字符串是奇数长数或者无效的十六进制字符串将会抛出 E_WARNING 级别的错误。

更新日志

版本 | 说明
5.5.1 | 如果输入的字符串是无效的十六进制字符串则抛出一个警告，
5.4.4 | 如果输入的字符串有多余将抛出异常。 PHP 5.4.0 起字符串将被静默地接受，但是最后的字节会被截断。

范例

Example #1 hex2bin() 例子

<?php
$hex = hex2bin("6578616d706c65206865782064617461");
var_dump($hex);
?>

以上例程的输出类似于：

string(16) "example hex data"

参见

  • bin2hex() - 函数把包含数据的二进制字符串转换为十六进制值
  • unpack() - Unpack data from binary string

hebrevc
html_entity_decode
字符串 函数


Convert all HTML entities to their applicable characters

hex2bin
htmlentities
字符串 函数
PHP Manual

html_entity_decode

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

html_entity_decode — Convert all HTML entities to their applicable characters

说明

string html_entity_decode ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") ]] )

html_entity_decode() is the opposite of htmlentities() in that it converts all HTML entities in the string to their applicable characters.

More precisely, this function decodes all the entities (including all numeric entities) that a) are necessarily valid for the chosen document type — i.e., for XML, this function does not decode named entities that might be defined in some DTD — and b) whose character or characters are in the coded character set associated with the chosen encoding and are permitted in the chosen document type. All other entities are left as is.

参数

string

The input string.

flags

A bitmask of one or more of the following flags, which specify how to handle quotes and which document type to use. The default is ENT_COMPAT | ENT_HTML401.

Available flags constants
Constant Name | Description
ENT_COMPAT | Will convert double-quotes and leave single-quotes alone.
ENT_QUOTES | Will convert both double and single quotes.
ENT_NOQUOTES | Will leave both double and single quotes unconverted.
ENT_HTML401 | Handle code as HTML 4.01.
ENT_XML1 | Handle code as XML 1.
ENT_XHTML | Handle code as XHTML.
ENT_HTML5 | Handle code as HTML 5.

encoding

An optional argument defining the encoding used when converting characters.

If omitted, the default value of the encoding varies depending on the PHP version in use. In PHP 5.6 and later, the default_charset configuration option is used as the default value. PHP 5.4 and 5.5 will use UTF-8 as the default. Earlier versions of PHP use ISO-8859-1.

Although this argument is technically optional, you are highly encouraged to specify the correct value for your code if you are using PHP 5.5 or earlier, or if your default_charset configuration option may be set incorrectly for the given input.

支持以下字符集：

支持的字符集列表
字符集 | 别名 | 描述
ISO-8859-1 | ISO8859-1 | 西欧，Latin-1
ISO-8859-5 | ISO8859-5 | Little used cyrillic charset (Latin/Cyrillic).
ISO-8859-15 | ISO8859-15 | 西欧，Latin-9。增加欧元符号，法语和芬兰语字母在 Latin-1(ISO-8859-1) 中缺失。
UTF-8 | ASCII 兼容的多字节 8 位 Unicode。
cp866 | ibm866, 866 | DOS 特有的西里尔编码。本字符集在 4.3.2 版本中得到支持。
cp1251 | Windows-1251, win-1251, 1251 | Windows 特有的西里尔编码。本字符集在 4.3.2 版本中得到支持。
cp1252 | Windows-1252, 1252 | Windows 特有的西欧编码。
KOI8-R | koi8-ru, koi8r | 俄语。本字符集在 4.3.2 版本中得到支持。
BIG5 | 950 | 繁体中文，主要用于中国台湾省。
GB2312 | 936 | 简体中文，中国国家标准字符集。
BIG5-HKSCS | 繁体中文，附带香港扩展的 Big5 字符集。
Shift_JIS | SJIS, 932 | 日语
EUC-JP | EUCJP | 日语
MacRoman | Mac OS 使用的字符串。
'' An empty string activates detection from script encoding (Zend multibyte), default_charset and current locale (see nl_langinfo() and setlocale()), in this order. Not recommended.

Note: 其他字符集没有认可。将会使用默认编码并抛出异常。

返回值

Returns the decoded string.

更新日志

版本 | 说明
5.6.0 | The default value for the encoding parameter was changed to be the value of the default_charset configuration option.
5.4.0 | Default encoding changed from ISO-8859-1 to UTF-8.
5.4.0 | The constants ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.

范例

Example #1 Decoding HTML entities

<?php
$orig = "I'll \"walk\" the <b>dog</b> now";

$a = htmlentities($orig);

$b = html_entity_decode($a);

echo $a; // I'll &quot;walk&quot; the &lt;b&gt;dog&lt;/b&gt; now

echo $b; // I'll "walk" the <b>dog</b> now
?>

注释

Note:

You might wonder why trim(html_entity_decode('&nbsp;')); doesn't reduce the string to an empty string, that's because the '&nbsp;' entity is not ASCII code 32 (which is stripped by trim()) but ASCII code 160 (0xa0) in the default ISO 8859-1 encoding.

参见

  • htmlentities() - Convert all applicable characters to HTML entities
  • htmlspecialchars() - Convert special characters to HTML entities
  • get_html_translation_table() - 返回使用 htmlspecialchars 和 htmlentities 后的转换表
  • urldecode() - 解码已编码的 URL 字符串

hex2bin
htmlentities
字符串 函数


Convert all applicable characters to HTML entities

html_entity_decode
htmlspecialchars_decode
字符串 函数
PHP Manual

htmlentities

(PHP 4, PHP 5, PHP 7)

htmlentities — Convert all applicable characters to HTML entities

说明

string htmlentities ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )

This function is identical to htmlspecialchars() in all ways, except with htmlentities(), all characters which have HTML character entity equivalents are translated into these entities.

If you want to decode instead (the reverse) you can use html_entity_decode().

参数

string

The input string.

flags

A bitmask of one or more of the following flags, which specify how to handle quotes, invalid code unit sequences and the used document type. The default is ENT_COMPAT | ENT_HTML401.

Available flags constants
Constant Name | Description
ENT_COMPAT | Will convert double-quotes and leave single-quotes alone.
ENT_QUOTES | Will convert both double and single quotes.
ENT_NOQUOTES | Will leave both double and single quotes unconverted.
ENT_IGNORE | Silently discard invalid code unit sequences instead of returning an empty string. Using this flag is discouraged as it » may have security implications.
ENT_SUBSTITUTE | Replace invalid code unit sequences with a Unicode Replacement Character U+FFFD (UTF-8) or &#FFFD; (otherwise) instead of returning an empty string.
ENT_DISALLOWED | Replace invalid code points for the given document type with a Unicode Replacement Character U+FFFD (UTF-8) or &#FFFD; (otherwise) instead of leaving them as is. This may be useful, for instance, to ensure the well-formedness of XML documents with embedded external content.
ENT_HTML401 | Handle code as HTML 4.01.
ENT_XML1 | Handle code as XML 1.
ENT_XHTML | Handle code as XHTML.
ENT_HTML5 | Handle code as HTML 5.

encoding

An optional argument defining the encoding used when converting characters.

If omitted, the default value of the encoding varies depending on the PHP version in use. In PHP 5.6 and later, the default_charset configuration option is used as the default value. PHP 5.4 and 5.5 will use UTF-8 as the default. Earlier versions of PHP use ISO-8859-1.

Although this argument is technically optional, you are highly encouraged to specify the correct value for your code if you are using PHP 5.5 or earlier, or if your default_charset configuration option may be set incorrectly for the given input.

支持以下字符集：

支持的字符集列表
字符集 | 别名 | 描述
ISO-8859-1 | ISO8859-1 | 西欧，Latin-1
ISO-8859-5 | ISO8859-5 | Little used cyrillic charset (Latin/Cyrillic).
ISO-8859-15 | ISO8859-15 | 西欧，Latin-9。增加欧元符号，法语和芬兰语字母在 Latin-1(ISO-8859-1) 中缺失。
UTF-8 | ASCII 兼容的多字节 8 位 Unicode。
cp866 | ibm866, 866 | DOS 特有的西里尔编码。本字符集在 4.3.2 版本中得到支持。
cp1251 | Windows-1251, win-1251, 1251 | Windows 特有的西里尔编码。本字符集在 4.3.2 版本中得到支持。
cp1252 | Windows-1252, 1252 | Windows 特有的西欧编码。
KOI8-R | koi8-ru, koi8r | 俄语。本字符集在 4.3.2 版本中得到支持。
BIG5 | 950 | 繁体中文，主要用于中国台湾省。
GB2312 | 936 | 简体中文，中国国家标准字符集。
BIG5-HKSCS | 繁体中文，附带香港扩展的 Big5 字符集。
Shift_JIS | SJIS, 932 | 日语
EUC-JP | EUCJP | 日语
MacRoman | Mac OS 使用的字符串。
'' An empty string activates detection from script encoding (Zend multibyte), default_charset and current locale (see nl_langinfo() and setlocale()), in this order. Not recommended.

Note: 其他字符集没有认可。将会使用默认编码并抛出异常。

double_encode

When double_encode is turned off PHP will not encode existing html entities. The default is to convert everything.

返回值

Returns the encoded string.

If the input string contains an invalid code unit sequence within the given encoding an empty string will be returned, unless either the ENT_IGNORE or ENT_SUBSTITUTE flags are set.

更新日志

版本 | 说明
5.6.0 | The default value for the encoding parameter was changed to be the value of the default_charset configuration option.
5.4.0 | The default value for the encoding parameter was changed to UTF-8.
5.4.0 | The constants ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
5.3.0 | The constant ENT_IGNORE was added.
5.2.3 | The double_encode parameter was added.

范例

Example #1 A htmlentities() example

<?php
$str = "A 'quote' is <b>bold</b>";

// Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt;
echo htmlentities($str);

// Outputs: A &#039;quote&#039; is &lt;b&gt;bold&lt;/b&gt;
echo htmlentities($str, ENT_QUOTES);
?>

Example #2 Usage of ENT_IGNORE

<?php
$str = "\x8F!!!";

// Outputs an empty string
echo htmlentities($str, ENT_QUOTES, "UTF-8");

// Outputs "!!!"
echo htmlentities($str, ENT_QUOTES | ENT_IGNORE, "UTF-8");
?>

参见

  • html_entity_decode() - Convert all HTML entities to their applicable characters
  • get_html_translation_table() - 返回使用 htmlspecialchars 和 htmlentities 后的转换表
  • htmlspecialchars() - Convert special characters to HTML entities
  • nl2br() - 在字符串所有新行之前插入 HTML 换行标记
  • urlencode() - 编码 URL 字符串

html_entity_decode
htmlspecialchars_decode
字符串 函数


将特殊的 HTML 实体转换回普通字符

htmlentities
htmlspecialchars
字符串 函数
PHP Manual

htmlspecialchars_decode

(PHP 5 >= 5.1.0, PHP 7)

htmlspecialchars_decode — 将特殊的 HTML 实体转换回普通字符

说明

string htmlspecialchars_decode ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 ] )

此函数的作用和 htmlspecialchars() 刚好相反。它将特殊的HTML实体转换回普通字符。

被转换的实体有： &amp;， &quot; （没有设置ENT_NOQUOTES 时）, &#039; （设置了 ENT_QUOTES 时）， &lt; 以及&gt;。

参数

string

要解码的字符串

flags

用下列标记中的一个或多个作为一个位掩码，来指定如何处理引号和使用哪种文档类型。默认为 ENT_COMPAT | ENT_HTML401。

有效的 flags 常量
常量名 | 说明
ENT_COMPAT | 转换双引号，不转换单引号。
ENT_QUOTES | 单引号和双引号都转换。
ENT_NOQUOTES | 单引号和双引号都不转换。
ENT_HTML401 | 作为HTML 4.01编码处理。
ENT_XML1 | 作为XML 1编码处理。
ENT_XHTML | 作为XHTML编码处理。
ENT_HTML5 | 作为HTML 5编码处理。

返回值

返回解码后的字符串。

更新日志

版本 | 说明
5.4.0 | 增加了 ENT_HTML401、ENT_XML1、 ENT_XHTML 和 ENT_HTML5 等常量。

范例

Example #1 一个 htmlspecialchars_decode() 的例子

<?php
$str = "<p>this -&gt; &quot;</p>\n";

echo htmlspecialchars_decode($str);

// 注意，这里的引号不会被转换
echo htmlspecialchars_decode($str, ENT_NOQUOTES);
?>

以上例程会输出：

<p>this -> "</p>
<p>this -> &quot;</p>

参见

  • htmlspecialchars() - Convert special characters to HTML entities
  • html_entity_decode() - Convert all HTML entities to their applicable characters
  • get_html_translation_table() - 返回使用 htmlspecialchars 和 htmlentities 后的转换表

htmlentities
htmlspecialchars
字符串 函数


Convert special characters to HTML entities

htmlspecialchars_decode
implode
字符串 函数
PHP Manual

htmlspecialchars

(PHP 4, PHP 5, PHP 7)

htmlspecialchars — Convert special characters to HTML entities

说明

string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )

Certain characters have special significance in HTML, and should be represented by HTML entities if they are to preserve their meanings. This function returns a string with these conversions made. If you require all input substrings that have associated named entities to be translated, use htmlentities() instead.

If the input string passed to this function and the final document share the same character set, this function is sufficient to prepare input for inclusion in most contexts of an HTML document. If, however, the input can represent characters that are not coded in the final document character set and you wish to retain those characters (as numeric or named entities), both this function and htmlentities() (which only encodes substrings that have named entity equivalents) may be insufficient. You may have to use mb_encode_numericentity() instead.

Performed translations
Character | Replacement
& (ampersand) | &amp;
" (double quote) | &quot;, unless ENT_NOQUOTES is set
' (single quote) | &#039; (for ENT_HTML401) or &apos; (for ENT_XML1, ENT_XHTML or ENT_HTML5), but only when ENT_QUOTES is set
< (less than) | &lt;
> (greater than) | &gt;

参数

string

The string being converted.

flags

A bitmask of one or more of the following flags, which specify how to handle quotes, invalid code unit sequences and the used document type. The default is ENT_COMPAT | ENT_HTML401.

Available flags constants
Constant Name | Description
ENT_COMPAT | Will convert double-quotes and leave single-quotes alone.
ENT_QUOTES | Will convert both double and single quotes.
ENT_NOQUOTES | Will leave both double and single quotes unconverted.
ENT_IGNORE | Silently discard invalid code unit sequences instead of returning an empty string. Using this flag is discouraged as it » may have security implications.
ENT_SUBSTITUTE | Replace invalid code unit sequences with a Unicode Replacement Character U+FFFD (UTF-8) or &#xFFFD; (otherwise) instead of returning an empty string.
ENT_DISALLOWED | Replace invalid code points for the given document type with a Unicode Replacement Character U+FFFD (UTF-8) or &#xFFFD; (otherwise) instead of leaving them as is. This may be useful, for instance, to ensure the well-formedness of XML documents with embedded external content.
ENT_HTML401 | Handle code as HTML 4.01.
ENT_XML1 | Handle code as XML 1.
ENT_XHTML | Handle code as XHTML.
ENT_HTML5 | Handle code as HTML 5.

encoding

An optional argument defining the encoding used when converting characters.

If omitted, the default value of the encoding varies depending on the PHP version in use. In PHP 5.6 and later, the default_charset configuration option is used as the default value. PHP 5.4 and 5.5 will use UTF-8 as the default. Earlier versions of PHP use ISO-8859-1.

Although this argument is technically optional, you are highly encouraged to specify the correct value for your code if you are using PHP 5.5 or earlier, or if your default_charset configuration option may be set incorrectly for the given input.

For the purposes of this function, the encodings ISO-8859-1, ISO-8859-15, UTF-8, cp866, cp1251, cp1252, and KOI8-R are effectively equivalent, provided the string itself is valid for the encoding, as the characters affected by htmlspecialchars() occupy the same positions in all of these encodings.

支持以下字符集：

支持的字符集列表
字符集 | 别名 | 描述
ISO-8859-1 | ISO8859-1 | 西欧，Latin-1
ISO-8859-5 | ISO8859-5 | Little used cyrillic charset (Latin/Cyrillic).
ISO-8859-15 | ISO8859-15 | 西欧，Latin-9。增加欧元符号，法语和芬兰语字母在 Latin-1(ISO-8859-1) 中缺失。
UTF-8 | ASCII 兼容的多字节 8 位 Unicode。
cp866 | ibm866, 866 | DOS 特有的西里尔编码。本字符集在 4.3.2 版本中得到支持。
cp1251 | Windows-1251, win-1251, 1251 | Windows 特有的西里尔编码。本字符集在 4.3.2 版本中得到支持。
cp1252 | Windows-1252, 1252 | Windows 特有的西欧编码。
KOI8-R | koi8-ru, koi8r | 俄语。本字符集在 4.3.2 版本中得到支持。
BIG5 | 950 | 繁体中文，主要用于中国台湾省。
GB2312 | 936 | 简体中文，中国国家标准字符集。
BIG5-HKSCS | 繁体中文，附带香港扩展的 Big5 字符集。
Shift_JIS | SJIS, 932 | 日语
EUC-JP | EUCJP | 日语
MacRoman | Mac OS 使用的字符串。
'' An empty string activates detection from script encoding (Zend multibyte), default_charset and current locale (see nl_langinfo() and setlocale()), in this order. Not recommended.

Note: 其他字符集没有认可。将会使用默认编码并抛出异常。

double_encode

When double_encode is turned off PHP will not encode existing html entities, the default is to convert everything.

返回值

The converted string.

If the input string contains an invalid code unit sequence within the given encoding an empty string will be returned, unless either the ENT_IGNORE or ENT_SUBSTITUTE flags are set.

更新日志

版本 | 说明
5.6.0 | The default value for the encoding parameter was changed to be the value of the default_charset configuration option.
5.4.0 | The default value for the encoding parameter was changed to UTF-8.
5.4.0 | The constants ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
5.3.0 | The constant ENT_IGNORE was added.
5.2.3 | The double_encode parameter was added.

范例

Example #1 htmlspecialchars() example

<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
?>

注释

Note:

Note that this function does not translate anything beyond what is listed above. For full entity translation, see htmlentities().

参见

  • get_html_translation_table() - 返回使用 htmlspecialchars 和 htmlentities 后的转换表
  • htmlspecialchars_decode() - 将特殊的 HTML 实体转换回普通字符
  • strip_tags() - 从字符串中去除 HTML 和 PHP 标记
  • htmlentities() - Convert all applicable characters to HTML entities
  • nl2br() - 在字符串所有新行之前插入 HTML 换行标记

htmlspecialchars_decode
implode
字符串 函数


将一个一维数组的值转化为字符串

htmlspecialchars
join
字符串 函数
PHP Manual

implode

(PHP 4, PHP 5, PHP 7)

implode — 将一个一维数组的值转化为字符串

说明

string implode ( string $glue , array $pieces )
string implode ( array $pieces )

用 glue 将一维数组的值连接为一个字符串。

Note:

因为历史原因，implode() 可以接收两种参数顺序，但是 explode() 不行。不过按文档中的顺序可以避免混淆。

参数

glue

默认为空的字符串。

pieces

你想要转换的数组。

返回值

返回一个字符串，其内容为由 glue 分割开的数组的值。

范例

Example #1 implode() 例子

<?php

$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);

echo $comma_separated; // lastname,email,phone

// Empty string when using an empty array:
var_dump(implode('hello', array())); // string(0) ""

?>

注释

Note: 此函数可安全用于二进制对象。

参见

  • explode() - 使用一个字符串分割另一个字符串
  • preg_split() - 通过一个正则表达式分隔字符串
  • http_build_query() - 生成 URL-encode 之后的请求字符串

htmlspecialchars
join
字符串 函数


别名 implode

implode
lcfirst
字符串 函数
PHP Manual

join

(PHP 4, PHP 5, PHP 7)

join — 别名 implode()

说明

此函数是该函数的别名： implode().

implode
lcfirst
字符串 函数


使一个字符串的第一个字符小写

join
levenshtein
字符串 函数
PHP Manual

lcfirst

(PHP 5 >= 5.3.0, PHP 7)

lcfirst — 使一个字符串的第一个字符小写

说明

string lcfirst ( string $str )

返回str的第一个字符小写了的字符串。如果str的第一个字符是字母，则将其转换为小写。

需要注意的是"字母"是由当前语言区域决定的。比如，在默认的"C"区域像日耳曼语系中的元音变音a (?) 将不会被转换。

参数

str

输入的字符串。

返回值

返回转换后的字符串。

范例

Example #1 lcfirst() 例子：

<?php
$foo = 'HelloWorld';
$foo = lcfirst($foo);             // helloWorld

$bar = 'HELLO WORLD!';
$bar = lcfirst($bar);             // hELLO WORLD!
$bar = lcfirst(strtoupper($bar)); // hELLO WORLD!
?>

参见

  • ucfirst() - 将字符串的首字母转换为大写
  • strtolower() - 将字符串转化为小写
  • strtoupper() - 将字符串转化为大写
  • ucwords() - 将字符串中每个单词的首字母转换为大写

join
levenshtein
字符串 函数


计算两个字符串之间的编辑距离

lcfirst
localeconv
字符串 函数
PHP Manual

levenshtein

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

levenshtein — 计算两个字符串之间的编辑距离

说明

int levenshtein ( string $str1 , string $str2 )
int levenshtein ( string $str1 , string $str2 , int $cost_ins , int $cost_rep , int $cost_del )

编辑距离，是指两个字串之间，通过替换、插入、删除等操作将字符串str1转换成str2所需要操作的最少字符数量。 该算法的复杂度是 O(m*n)，其中 n 和 m 分别是str1 和str2的长度 （当和算法复杂度为O(max(n,m)**3)的similar_text()相比时，此函数还是相当不错的，尽管仍然很耗时。）。

在最简单的形式中，该函数只以两个字符串作为参数，并计算通过插入、替换和删除等操作将str1转换成str2所需要的操作次数。

第二种变体将采用三个额外的参数来定义插入、替换和删除操作的次数。此变体比第一种更加通用和适应，但效率不高。

参数

str1

求编辑距离中的其中一个字符串

str2

求编辑距离中的另一个字符串

cost_ins

定义插入次数

cost_rep

定义替换次数

cost_del

定义删除次数

返回值

此函数返回两个字符串参数之间的编辑距离，如果其中一个字符串参数长度大于限制的255个字符时，返回-1。

范例

Example #1 levenshtein() 例子：

<?php
// 输入拼写错误的单词
$input = 'carrrot';

// 要检查的单词数组
$words  = array('apple','pineapple','banana','orange',
                'radish','carrot','pea','bean','potato');

// 目前没有找到最短距离
$shortest = -1;

// 遍历单词来找到最接近的
foreach ($words as $word) {

    // 计算输入单词与当前单词的距离
    $lev = levenshtein($input, $word);

    // 检查完全的匹配
    if ($lev == 0) {

        // 最接近的单词是这个（完全匹配）
        $closest = $word;
        $shortest = 0;

        // 退出循环；我们已经找到一个完全的匹配
        break;
    }

    // 如果此次距离比上次找到的要短
    // 或者还没找到接近的单词
    if ($lev <= $shortest || $shortest < 0) {
        // 设置最接近的匹配以及它的最短距离
        $closest  = $word;
        $shortest = $lev;
    }
}

echo "Input word: $input\n";
if ($shortest == 0) {
    echo "Exact match found: $closest\n";
} else {
    echo "Did you mean: $closest?\n";
}

?>

以上例程会输出：

Input word: carrrot
Did you mean: carrot?

参见

  • soundex() - Calculate the soundex key of a string
  • similar_text() - 计算两个字符串的相似度
  • metaphone() - Calculate the metaphone key of a string

lcfirst
localeconv
字符串 函数


Get numeric formatting information

levenshtein
ltrim
字符串 函数
PHP Manual

localeconv

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

localeconv — Get numeric formatting information

说明

array localeconv ( void )

Returns an associative array containing localized numeric and monetary formatting information.

返回值

localeconv() returns data based upon the current locale as set by setlocale(). The associative array that is returned contains the following fields:

Array element | Description
decimal_point | Decimal point character
thousands_sep | Thousands separator
grouping | Array containing numeric groupings
int_curr_symbol | International currency symbol (i.e. USD)
currency_symbol | Local currency symbol (i.e. $)
mon_decimal_point | Monetary decimal point character
mon_thousands_sep | Monetary thousands separator
mon_grouping | Array containing monetary groupings
positive_sign | Sign for positive values
negative_sign | Sign for negative values
int_frac_digits | International fractional digits
frac_digits | Local fractional digits
p_cs_precedes | TRUE if currency_symbol precedes a positive value, FALSE if it succeeds one
p_sep_by_space | TRUE if a space separates currency_symbol from a positive value, FALSE otherwise
n_cs_precedes | TRUE if currency_symbol precedes a negative value, FALSE if it succeeds one
n_sep_by_space | TRUE if a space separates currency_symbol from a negative value, FALSE otherwise
p_sign_posn
  • 0 - Parentheses surround the quantity and currency_symbol
  • 1 - The sign string precedes the quantity and currency_symbol
  • 2 - The sign string succeeds the quantity and currency_symbol
  • 3 - The sign string immediately precedes the currency_symbol
  • 4 - The sign string immediately succeeds the currency_symbol
n_sign_posn
  • 0 - Parentheses surround the quantity and currency_symbol
  • 1 - The sign string precedes the quantity and currency_symbol
  • 2 - The sign string succeeds the quantity and currency_symbol
  • 3 - The sign string immediately precedes the currency_symbol
  • 4 - The sign string immediately succeeds the currency_symbol

The p_sign_posn, and n_sign_posn contain a string of formatting options. Each number representing one of the above listed conditions.

The grouping fields contain arrays that define the way numbers should be grouped. For example, the monetary grouping field for the nl_NL locale (in UTF-8 mode with the euro sign), would contain a 2 item array with the values 3 and 3. The higher the index in the array, the farther left the grouping is. If an array element is equal to CHAR_MAX, no further grouping is done. If an array element is equal to 0, the previous element should be used.

范例

Example #1 localeconv() example

<?php
if (false !== setlocale(LC_ALL, 'nl_NL.UTF-8@euro')) {
    $locale_info = localeconv();
    print_r($locale_info);
}
?>

以上例程会输出：

Array
(
    [decimal_point] => .
    [thousands_sep] =>
    [int_curr_symbol] => EUR
    [currency_symbol] => �
    [mon_decimal_point] => ,
    [mon_thousands_sep] =>
    [positive_sign] =>
    [negative_sign] => -
    [int_frac_digits] => 2
    [frac_digits] => 2
    [p_cs_precedes] => 1
    [p_sep_by_space] => 1
    [n_cs_precedes] => 1
    [n_sep_by_space] => 1
    [p_sign_posn] => 1
    [n_sign_posn] => 2
    [grouping] => Array
        (
        )

    [mon_grouping] => Array
        (
            [0] => 3
            [1] => 3
        )

)

参见

  • setlocale() - 设置地区信息

levenshtein
ltrim
字符串 函数


删除字符串开头的空白字符（或其他字符）

localeconv
md5_file
字符串 函数
PHP Manual

ltrim

(PHP 4, PHP 5, PHP 7)

ltrim — 删除字符串开头的空白字符（或其他字符）

说明

string ltrim ( string $str [, string $character_mask ] )

删除字符串开头的空白字符（或其他字符）

参数

str

输入的字符串。

character_mask

通过参数 character_mask，你也可以指定想要删除的字符，简单地列出你想要删除的所有字符即可。使用..，可以指定字符的范围。

返回值

该函数返回一个删除了 str 最左边的空白字符的字符串。 如果不使用第二个参数， ltrim() 仅删除以下字符：

  • " " (ASCII 32 (0x20))，普通空白字符。
  • "\t" (ASCII 9 (0x09))， 制表符.
  • "\n" (ASCII 10 (0x0A))，换行符。
  • "\r" (ASCII 13 (0x0D))，回车符。
  • "\0" (ASCII 0 (0x00))， NUL空字节符。
  • "\x0B" (ASCII 11 (0x0B))，垂直制表符。

范例

Example #1 ltrim()的使用范例

<?php

$text = "\t\tThese are a few words :) ...  ";
$binary = "\x09Example string\x0A";
$hello  = "Hello World";
var_dump($text, $binary, $hello);

print "\n";

$trimmed = ltrim($text);
var_dump($trimmed);

$trimmed = ltrim($text, " \t.");
var_dump($trimmed);

$trimmed = ltrim($hello, "Hdle");
var_dump($trimmed);

// 删除 $binary 开头的 ASCII 控制字符
// (从 0 到 31，包括 0 和 31)
$clean = ltrim($binary, "\x00..\x1F");
var_dump($clean);

?>

以上例程会输出：

string(32) "        These are a few words :) ...  "
string(16) "    Example string
"
string(11) "Hello World"

string(30) "These are a few words :) ...  "
string(30) "These are a few words :) ...  "
string(7) "o World"
string(15) "Example string
"

参见

  • trim() - 去除字符串首尾处的空白字符（或者其他字符）
  • rtrim() - 删除字符串末端的空白字符（或者其他字符）

localeconv
md5_file
字符串 函数


计算指定文件的 MD5 散列值

ltrim
md5
字符串 函数
PHP Manual

md5_file

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

md5_file — 计算指定文件的 MD5 散列值

说明

string md5_file ( string $filename [, bool $raw_output = false ] )

使用 » RSA 数据安全公司的 MD5 报文算法计算 filename 文件的 MD5 散列值并返回。该散列值为 32 字符的十六进制数字。

参数

filename

文件名

raw_output

如果被设置为 TRUE，那么报文摘要将以原始的 16 位二进制格式返回。

返回值

成功返回字符串，否则返回 FALSE。

更新日志

版本 | 说明
5.1.0 | 函数改用流 API。这意味着能够配合封装器使用该函数，比如 md5_file('http://example.com/..')。

范例

Example #1 md5_file() 使用范例

<?php
$file = 'php-5.3.0alpha2-Win32-VC9-x64.zip';

echo 'MD5 file hash of ' . $file . ': ' . md5_file($file);
?>

参见

  • md5() - 计算字符串的 MD5 散列值
  • sha1_file() - 计算文件的 sha1 散列值
  • crc32() - 计算一个字符串的 crc32 多项式

ltrim
md5
字符串 函数


计算字符串的 MD5 散列值

md5_file
metaphone
字符串 函数
PHP Manual

md5

(PHP 4, PHP 5, PHP 7)

md5 — 计算字符串的 MD5 散列值

说明

string md5 ( string $str [, bool $raw_output = false ] )

使用 » RSA 数据安全公司的 MD5 报文算法计算 str 的 MD5 散列值。

参数

str

原始字符串。

raw_output

如果可选的 raw_output 被设置为 TRUE，那么 MD5 报文摘要将以16字节长度的原始二进制格式返回。

返回值

以 32 字符十六进制数字形式返回散列值。

更新日志

版本 | 说明
5.0.0 | 新增 raw_output 参数。

范例

Example #1 md5() 范例

<?php
$str = 'apple';

if (md5($str) === '1f3870be274f6c49b3e31a0c6728957f') {
    echo "Would you like a green or red apple?";
}
?>

注释

Note: Secure password hashing

由于此函数依赖的算法已不足够复杂,不推荐使用此函数对明文密码加密。详细内容参见这里。

参见

  • md5_file() - 计算指定文件的 MD5 散列值
  • sha1_file() - 计算文件的 sha1 散列值
  • crc32() - 计算一个字符串的 crc32 多项式
  • sha1() - 计算字符串的 sha1 散列值
  • hash() - 生成哈希值 （消息摘要）

md5_file
metaphone
字符串 函数


Calculate the metaphone key of a string

md5
money_format
字符串 函数
PHP Manual

metaphone

(PHP 4, PHP 5, PHP 7)

metaphone — Calculate the metaphone key of a string

说明

string metaphone ( string $str [, int $phonemes = 0 ] )

Calculates the metaphone key of str.

Similar to soundex() metaphone creates the same key for similar sounding words. It's more accurate than soundex() as it knows the basic rules of English pronunciation. The metaphone generated keys are of variable length.

Metaphone was developed by Lawrence Philips <lphilips at verity dot com>. It is described in ["Practical Algorithms for Programmers", Binstock & Rex, Addison Wesley, 1995].

参数

str

The input string.

phonemes

This parameter restricts the returned metaphone key to phonemes characters in length. The default value of 0 means no restriction.

返回值

Returns the metaphone key as a string, 或者在失败时返回 FALSE.

范例

Example #1 metaphone() basic example

<?php
var_dump(metaphone('programming'));
var_dump(metaphone('programmer'));
?>

以上例程的输出类似于：

string(7) "PRKRMNK"
string(6) "PRKRMR"

Example #2 Using the phonemes parameter

<?php
var_dump(metaphone('programming', 5));
var_dump(metaphone('programmer', 5));
?>

以上例程的输出类似于：

string(5) "PRKRM"
string(5) "PRKRM"

md5
money_format
字符串 函数


将数字格式化成货币字符串

metaphone
nl_langinfo
字符串 函数
PHP Manual

money_format

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

money_format — 将数字格式化成货币字符串

说明

string money_format ( string $format , float $number )

money_format() 返回格式化好的 number 版本。 此函数包装了 C 函数库中的 strfmon()，不同之处是：此实现每次只能转化一个数字。

参数

format

格式字符串由以下几部分组成：

  • 单个 % 字符

  • 可选的标记（flags）

  • 可选的字段宽度

  • 可选的，左侧精度

  • 可选的，右侧精度

  • 必选的，单个转化字符

标记(Flags)

可选多个标记，分别是：

=f

字符：=，并紧跟一个字符（单字节） f，用于数字填充。默认的填充字符是空格。

^

禁用分组字符（比如金额中的逗号。在本地区域设置 locale 中定义）。

+ or (

正负数字的格式。使用 +，将使用区域设置（locale）中相当于 + 和 - 的符号。 如果使用 (，负数将被圆括号围绕。不设置的话，默认为 +。

!

不输出货币符号（比如 ￥）。

-

有这个符号的时候，将使字段左对齐（填充到右边），默认是相反的，是右对齐的（填充到左边）。

字段宽度

w

十进制数值字符串的宽度。字段将右对齐，除非使用了 - 标记。默认值 0。

左侧精度

#n

小数字符（比如小数点）前的最大位数 (n)。 常用于同一列中的格式对齐。 如果位数小于 n 则使用填充字符填满。 如果实际位数大于 n，此设置将被忽略。

如果没用 ^ 标识禁用分组，分组分隔符会在添加填充字符之前插入（如果有的话）。 分组分隔符不会应用到填充字符里，哪怕填充字符是个数字。

为了保证对齐，出现在之前或者之后的字符，都会填充必要的空格，保证正负情况下长度都一样。

右侧精度

.p

小数点后的一段数字 (p)。 如果 p 的值是 0（零），小数点右侧的数值将被删除。 如果不使用这个标记，默认展现取决于当前的区域设置。 小数点后指定位数的数字，四舍五入格式化。

转化字符

i

根据国际化区域设置中的货币格式，格式化数值。（比如，locale 是 USA：USD 1,234.56）。

n

根据国际化区域设置中国家的货币格式，格式化数值。（比如，locale 是 de_DE：EU1.234,56）。

%

返回字符 %。

number

需要格式化的数字。

返回值

返回格式化后的字符。格式字符串前后的字符将原封不动返回。 传入的 number 如果不是数字，将返回 NULL 并且产生 E_WARNING。

注释

Note:

具有 strfmon 的系统才有 money_format() 函数。 例如 Windows 不具备，所以 Windows 系统上 money_format() 未定义。

Note:

locale 设置中， LC_MONETARY 会影响此函数的行为。 在使用函数前，首先要用 setlocale() 来设置合适的区域设置（locale）。

范例

Example #1 money_format() 例子

使用不同的 locale 和格式字符串，来说明此函数的用法。

<?php

$number = 1234.56;

// 让我们打印 en_US locale 的国际化格式
setlocale(LC_MONETARY, 'en_US');
echo money_format('%i', $number) . "\n";
// USD 1,234.56

// 意大利国家的格式，带两位浮点小数`
setlocale(LC_MONETARY, 'it_IT');
echo money_format('%.2n', $number) . "\n";
// Eu 1.234,56

// 负数的使用
$number = -1234.5672;

// 美国国家的格式，使用圆括号 () 标记负数。
// 左侧精度使用十位
setlocale(LC_MONETARY, 'en_US');
echo money_format('%(#10n', $number) . "\n";
// ($        1,234.57)

// 相似的格式，添加了右侧两位小数点的精度，同时用 * 来填充
echo money_format('%=*(#10.2n', $number) . "\n";
// ($********1,234.57)

// 让我们左对齐，14位宽，左侧八位，右侧两位，不带分组字符
// de_DE 的国际化格式
setlocale(LC_MONETARY, 'de_DE');
echo money_format('%=*^-14#8.2i', 1234.56) . "\n";
// Eu 1234,56****

// 让我们在格式字符串前后，添加一些简介
setlocale(LC_MONETARY, 'en_GB');
$fmt = 'The final value is %i (after a 10%% discount)';
echo money_format($fmt, 1234.56) . "\n";
// The final value is  GBP 1,234.56 (after a 10% discount)

?>

参见

  • setlocale() - 设置地区信息
  • sscanf() - 根据指定格式解析输入的字符
  • sprintf() - Return a formatted string
  • printf() - 输出格式化字符串
  • number_format() - 以千位分隔符方式格式化一个数字

metaphone
nl_langinfo
字符串 函数


Query language and locale information

money_format
nl2br
字符串 函数
PHP Manual

nl_langinfo

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

nl_langinfo — Query language and locale information

说明

string nl_langinfo ( int $item )

nl_langinfo() is used to access individual elements of the locale categories. Unlike localeconv(), which returns all of the elements, nl_langinfo() allows you to select any specific element.

参数

item

item may be an integer value of the element or the constant name of the element. The following is a list of constant names for item that may be used and their description. Some of these constants may not be defined or hold no value for certain locales.

nl_langinfo Constants
Constant | Description
LC_TIME Category Constants
ABDAY_(1-7) | Abbreviated name of n-th day of the week.
DAY_(1-7) | Name of the n-th day of the week (DAY_1 = Sunday).
ABMON_(1-12) | Abbreviated name of the n-th month of the year.
MON_(1-12) | Name of the n-th month of the year.
AM_STR | String for Ante meridian.
PM_STR | String for Post meridian.
D_T_FMT | String that can be used as the format string for strftime() to represent time and date.
D_FMT | String that can be used as the format string for strftime() to represent date.
T_FMT | String that can be used as the format string for strftime() to represent time.
T_FMT_AMPM | String that can be used as the format string for strftime() to represent time in 12-hour format with ante/post meridian.
ERA | Alternate era.
ERA_YEAR | Year in alternate era format.
ERA_D_T_FMT | Date and time in alternate era format (string can be used in strftime()).
ERA_D_FMT | Date in alternate era format (string can be used in strftime()).
ERA_T_FMT | Time in alternate era format (string can be used in strftime()).
LC_MONETARY Category Constants
INT_CURR_SYMBOL | International currency symbol.
CURRENCY_SYMBOL | Local currency symbol.
CRNCYSTR | Same value as CURRENCY_SYMBOL.
MON_DECIMAL_POINT | Decimal point character.
MON_THOUSANDS_SEP | Thousands separator (groups of three digits).
MON_GROUPING | Like "grouping" element.
POSITIVE_SIGN | Sign for positive values.
NEGATIVE_SIGN | Sign for negative values.
INT_FRAC_DIGITS | International fractional digits.
FRAC_DIGITS | Local fractional digits.
P_CS_PRECEDES | Returns 1 if CURRENCY_SYMBOL precedes a positive value.
P_SEP_BY_SPACE | Returns 1 if a space separates CURRENCY_SYMBOL from a positive value.
N_CS_PRECEDES | Returns 1 if CURRENCY_SYMBOL precedes a negative value.
N_SEP_BY_SPACE | Returns 1 if a space separates CURRENCY_SYMBOL from a negative value.
P_SIGN_POSN
  • Returns 0 if parentheses surround the quantity and CURRENCY_SYMBOL.
  • Returns 1 if the sign string precedes the quantity and CURRENCY_SYMBOL.
  • Returns 2 if the sign string follows the quantity and CURRENCY_SYMBOL.
  • Returns 3 if the sign string immediately precedes the CURRENCY_SYMBOL.
  • Returns 4 if the sign string immediately follows the CURRENCY_SYMBOL.
N_SIGN_POSN
LC_NUMERIC Category Constants
DECIMAL_POINT | Decimal point character.
RADIXCHAR | Same value as DECIMAL_POINT.
THOUSANDS_SEP | Separator character for thousands (groups of three digits).
THOUSEP | Same value as THOUSANDS_SEP.
GROUPING
LC_MESSAGES Category Constants
YESEXPR | Regex string for matching "yes" input.
NOEXPR | Regex string for matching "no" input.
YESSTR | Output string for "yes".
NOSTR | Output string for "no".
LC_CTYPE Category Constants
CODESET | Return a string with the name of the character encoding.

返回值

Returns the element as a string, or FALSE if item is not valid.

注释

Note: 此函数未在 Windows 平台下实现。

参见

  • setlocale() - 设置地区信息
  • localeconv() - Get numeric formatting information

money_format
nl2br
字符串 函数


在字符串所有新行之前插入 HTML 换行标记

nl_langinfo
number_format
字符串 函数
PHP Manual

nl2br

(PHP 4, PHP 5, PHP 7)

nl2br — 在字符串所有新行之前插入 HTML 换行标记

说明

string nl2br ( string $string [, bool $is_xhtml = true ] )

在字符串 string 所有新行之前插入 '<br />' 或 '<br>'，并返回。

参数

string

输入字符串。

is_xhtml

是否使用 XHTML 兼容换行符。

返回值

返回调整后的字符串。

范例

Example #1 nl2br() 使用范例

<?php
echo nl2br("foo isn't\n bar");
?>

以上例程会输出：

foo isn't<br />
 bar

Example #2 使用 is_xhtml 生成合法的 HTML 标记

<?php
echo nl2br("Welcome\r\nThis is my HTML document", false);
?>

以上例程会输出：

Welcome<br>
This is my HTML document

Example #3 各种换行分隔符

<?php
$string = "This\r\nis\n\ra\nstring\r";
echo nl2br($string);
?>

以上例程会输出：

This<br />
is<br />
a<br />
string<br />

更新日志

版本 | 说明
5.3.0 | 新增可选的 is_xhtml 参数。
4.0.5 | nl2br() 成为 XHTML 兼容的操作。所有的旧版本都会在 string 的新行之前插入 '<br>' 而不是 '<br />'。

参见

  • htmlspecialchars() - Convert special characters to HTML entities
  • htmlentities() - Convert all applicable characters to HTML entities
  • wordwrap() - 打断字符串为指定数量的字串
  • str_replace() - 子字符串替换

nl_langinfo
number_format
字符串 函数


以千位分隔符方式格式化一个数字

nl2br
ord
字符串 函数
PHP Manual

number_format

(PHP 4, PHP 5, PHP 7)

number_format — 以千位分隔符方式格式化一个数字

说明

string number_format ( float $number [, int $decimals = 0 ] )
string number_format ( float $number , int $decimals = 0 , string $dec_point = "." , string $thousands_sep = "," )

本函数可以接受1个、2个或者4个参数（注意：不能是3个）:

如果只提供第一个参数，number的小数部分会被去掉 并且每个千位分隔符都是英文小写逗号","

如果提供两个参数，number将保留小数点后的位数到你设定的值，其余同楼上

如果提供了四个参数，number 将保留decimals个长度的小数部分, 小数点被替换为dec_point，千位分隔符替换为thousands_sep

参数

number

你要格式化的数字

decimals

要保留的小数位数

dec_point

指定小数点显示的字符

thousands_sep

指定千位分隔符显示的字符

返回值

格式化以后的 number.

更新日志

版本 | 说明
5.4.0 | This function now supports multiple bytes in dec_point and thousands_sep. Only the first byte of each separator was used in older versions.

范例

Example #1 number_format() Example

For instance, French notation usually use two decimals, comma (',') as decimal separator, and space (' ') as thousand separator. This is achieved with this line :

<?php

$number = 1234.56;

// english notation (default)
$english_format_number = number_format($number);
// 1,235

// French notation
$nombre_format_francais = number_format($number, 2, ',', ' ');
// 1 234,56

$number = 1234.5678;

// english notation without thousands separator
$english_format_number = number_format($number, 2, '.', '');
// 1234.57

?>

参见

  • money_format() - 将数字格式化成货币字符串
  • sprintf() - Return a formatted string
  • printf() - 输出格式化字符串
  • sscanf() - 根据指定格式解析输入的字符

nl2br
ord
字符串 函数


返回字符的 ASCII 码值

number_format
parse_str
字符串 函数
PHP Manual

ord

(PHP 4, PHP 5, PHP 7)

ord — 返回字符的 ASCII 码值

说明

int ord ( string $string )

返回字符串 string 第一个字符的 ASCII 码值。

该函数是 chr() 的互补函数。

参数

string

一个字符。

返回值

返回整型的 ASCII 码值。

范例

Example #1 ord() 范例

<?php
$str = "\n";
if (ord($str) == 10) {
    echo "The first character of \$str is a line feed.\n";
}
?>

参见

  • chr() - 返回指定的字符
  • » ASCII 码表

number_format
parse_str
字符串 函数


将字符串解析成多个变量

ord
print
字符串 函数
PHP Manual

parse_str

(PHP 4, PHP 5, PHP 7)

parse_str — 将字符串解析成多个变量

说明

void parse_str ( string $str [, array &$arr ] )

如果 str 是 URL 传递入的查询字符串（query string），则将它解析为变量并设置到当前作用域。

Note:

获取当前的 QUERY_STRING，你可以使用 $_SERVER['QUERY_STRING'] 变量。 同时，你也许该阅读 来自 PHP 之外的变量 这一节。

Note:

magic_quotes_gpc 影响到了 parse_str() 这个函数的输出，和 PHP 用于填充 $_GET、 $_POST 及其他变量的机制一致。

参数

str

输入的字符串。

arr

如果设置了第二个变量 arr，变量将会以数组元素的形式存入到这个数组，作为替代。

返回值

没有返回值。

范例

Example #1 parse_str() 的使用

<?php
$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
echo $first;  // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz

parse_str($str, $output);
echo $output['first'];  // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz

?>

参见

  • parse_url() - 解析 URL，返回其组成部分
  • pathinfo() - 返回文件路径的信息
  • http_build_query() - 生成 URL-encode 之后的请求字符串
  • get_magic_quotes_gpc() - 获取当前 magic_quotes_gpc 的配置选项设置
  • urldecode() - 解码已编码的 URL 字符串

ord
print
字符串 函数


输出字符串

parse_str
printf
字符串 函数
PHP Manual

print

(PHP 4, PHP 5, PHP 7)

print — 输出字符串

说明

int print ( string $arg )

输出 arg。

print 实际上不是一个函数（它是一个语言结构），因此你可以不必使用圆括号来括起它的参数列表。

参数

arg

输入数据。

返回值

总是返回 1。

范例

Example #1 print 范例

<?php
print("Hello World");

print "print() also works without parentheses.";

print "This spans
multiple lines. The newlines will be
output as well";

print "This spans\nmultiple lines. The newlines will be\noutput as well.";

print "escaping characters is done \"Like this\".";

// 可以在打印语句中使用变量
$foo = "foobar";
$bar = "barbaz";

print "foo is $foo"; // foo is foobar

// 也可以使用数组
$bar = array("value" => "foo");

print "this is {$bar['value']} !"; // this is foo !

// 使用单引号将打印变量名，而不是变量的值
print 'foo is $foo'; // foo is $foo

// 如果没有使用任何其他字符，可以仅打印变量
print $foo;          // foobar

print <<<END
This uses the "here document" syntax to output
multiple lines with $variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon no extra whitespace!
END;
?>

注释

Note: 因为是一个语言构造器而不是一个函数，不能被 可变函数 调用。

参见

  • echo - 输出一个或多个字符串
  • printf() - 输出格式化字符串
  • flush() - 刷新输出缓冲
  • Heredoc syntax

parse_str
printf
字符串 函数


输出格式化字符串

print
quoted_printable_decode
字符串 函数
PHP Manual

printf

(PHP 4, PHP 5, PHP 7)

printf — 输出格式化字符串

说明

int printf ( string $format [, mixed $args [, mixed $... ]] )

依据 format 格式参数产生输出。

参数

format

format 描述信息，请参见 sprintf()。

args

...

返回值

返回输出字符串的长度。

参见

  • print - 输出字符串
  • sprintf() - Return a formatted string
  • vprintf() - 输出格式化字符串
  • sscanf() - 根据指定格式解析输入的字符
  • fscanf() - 从文件中格式化输入
  • flush() - 刷新输出缓冲

print
quoted_printable_decode
字符串 函数


将 quoted-printable 字符串转换为 8-bit 字符串

printf
quoted_printable_encode
字符串 函数
PHP Manual

quoted_printable_decode

(PHP 4, PHP 5, PHP 7)

quoted_printable_decode — 将 quoted-printable 字符串转换为 8-bit 字符串

说明

string quoted_printable_decode ( string $str )

该函数返回 quoted-printable 解码之后的 8-bit 字符串 (参考 » RFC2045 的6.7章节，而不是 » RFC2821 的4.5.2章节，so additional periods are not stripped from the beginning of line)

该函数与 imap_qprint() 函数十分相似，但是该函数不需要依赖 IMAP 模块。

参数

str

输入的字符串。

返回值

返回的 8-bit 二进制字符串。

参见

  • quoted_printable_encode() - 将 8-bit 字符串转换成 quoted-printable 字符串

printf
quoted_printable_encode
字符串 函数


将 8-bit 字符串转换成 quoted-printable 字符串

quoted_printable_decode
quotemeta
字符串 函数
PHP Manual

quoted_printable_encode

(PHP 5 >= 5.3.0, PHP 7)

quoted_printable_encode — 将 8-bit 字符串转换成 quoted-printable 字符串

说明

string quoted_printable_encode ( string $str )

返回 quoted-printable 格式的字符，该格式由 » RFC2045 6.7.章节里制定。

该函数与 imap_8bit() 函数十分相似，不同的是该函数不需要 IMAP 模块就能运行。

参数

str

输入的字符串。

返回值

返回编码之后的字符串。

参见

  • quoted_printable_decode() - 将 quoted-printable 字符串转换为 8-bit 字符串
  • iconv_mime_encode() - Composes a MIME header field

quoted_printable_decode
quotemeta
字符串 函数


转义元字符集

quoted_printable_encode
rtrim
字符串 函数
PHP Manual

quotemeta

(PHP 4, PHP 5, PHP 7)

quotemeta — 转义元字符集

说明

string quotemeta ( string $str )

返回 在下面这些特殊字符前加 反斜线(\) 转义后的字符串。 这些特殊字符包含：

. \ + * ? [ ^ ] ( $ )

参数

str

输入字符串

返回值

返回 元字符集被转义后的 字符串，如果输入字符串str为空， 则返回 FALSE。

注释

Note: 此函数可安全用于二进制对象。

参见

  • addslashes() - 使用反斜线引用字符串
  • addcslashes() - 以 C 语言风格使用反斜线转义字符串中的字符
  • htmlentities() - Convert all applicable characters to HTML entities
  • htmlspecialchars() - Convert special characters to HTML entities
  • nl2br() - 在字符串所有新行之前插入 HTML 换行标记
  • stripslashes() - 反引用一个引用字符串
  • stripcslashes() - 反引用一个使用 addcslashes 转义的字符串
  • ereg() - 正则表达式匹配
  • preg_quote() - 转义正则表达式字符

quoted_printable_encode
rtrim
字符串 函数


删除字符串末端的空白字符（或者其他字符）

quotemeta
setlocale
字符串 函数
PHP Manual

rtrim

(PHP 4, PHP 5, PHP 7)

rtrim — 删除字符串末端的空白字符（或者其他字符）

说明

string rtrim ( string $str [, string $character_mask ] )

该函数删除 str 末端的空白字符并返回。

不使用第二个参数，rtrim() 仅删除以下字符：

  • " " (ASCII 32 (0x20))，普通空白符。
  • "\t" (ASCII 9 (0x09))，制表符。
  • "\n" (ASCII 10 (0x0A))，换行符。
  • "\r" (ASCII 13 (0x0D))，回车符。
  • "\0" (ASCII 0 (0x00))，NUL 空字节符。
  • "\x0B" (ASCII 11 (0x0B))，垂直制表符。

参数

str

输入字符串。

character_mask

通过指定 character_mask，可以指定想要删除的字符列表。简单地列出你想要删除的全部字符。使用 .. 格式，可以指定一个范围。

返回值

返回改变后的字符串。

范例

Example #1 rtrim() 使用范例

<?php

$text = "\t\tThese are a few words :) ...  ";
$binary = "\x09Example string\x0A";
$hello  = "Hello World";
var_dump($text, $binary, $hello);

print "\n";

$trimmed = rtrim($text);
var_dump($trimmed);

$trimmed = rtrim($text, " \t.");
var_dump($trimmed);

$trimmed = rtrim($hello, "Hdle");
var_dump($trimmed);

// 删除 $binary 末端的 ASCII 码控制字符
// (包括 0 - 31)
$clean = rtrim($binary, "\x00..\x1F");
var_dump($clean);

?>

以上例程会输出：

string(32) "        These are a few words :) ...  "
string(16) "    Example string
"
string(11) "Hello World"

string(30) "        These are a few words :) ..."
string(26) "        These are a few words :)"
string(9) "Hello Wor"
string(15) "    Example string"

参见

  • trim() - 去除字符串首尾处的空白字符（或者其他字符）
  • ltrim() - 删除字符串开头的空白字符（或其他字符）

quotemeta
setlocale
字符串 函数


设置地区信息

rtrim
sha1_file
字符串 函数
PHP Manual

setlocale

(PHP 4, PHP 5, PHP 7)

setlocale — 设置地区信息

说明

string setlocale ( int $category , string $locale [, string $... ] )
string setlocale ( int $category , array $locale )

设置地区信息。

参数

category

category 命名常量指定的受区域设置的功能类别:

  • LC_ALL 所有的设置
  • LC_COLLATE 字符串比较, 详见 strcoll()
  • LC_CTYPE 字符串的分类与转换, 参见例子 strtoupper()
  • LC_MONETARY 等同 localeconv()
  • LC_NUMERIC 对于小数点的分隔 (另请参见 localeconv())
  • LC_TIME 时间与格式 strftime()
  • LC_MESSAGES 系统响应 (如果PHP使用libintl编译)

locale

If locale is NULL or the empty string "", the locale names will be set from the values of environment variables with the same names as the above categories, or from "LANG".

If locale is "0", the locale setting is not affected, only the current setting is returned.

If locale is an array or followed by additional parameters then each array element or parameter is tried to be set as new locale until success. This is useful if a locale is known under different names on different systems or for providing a fallback for a possibly not available locale.

...

(可使用字符串或数组参数进行尝试直到设置成功。)

Note:

在Windows中，setlocale(LC_ALL, '')要从系统中的区域/语言设置(通过控制面板访问) 。

返回值

Returns the new current locale, or FALSE if the locale functionality is not implemented on your platform, the specified locale does not exist or the category name is invalid.

An invalid category name also causes a warning message. Category/locale names can be found in » RFC 1766 and » ISO 639. Different systems have different naming schemes for locales.

Note:

The return value of setlocale() depends on the system that PHP is running. It returns exactly what the system setlocale function returns.

更新日志

版本 | 说明
5.3.0 | This function now throws an E_DEPRECATED notice if a string is passed to the category parameter instead of one of the LC_* constants.

范例

Example #1 setlocale() Examples

<?php
/* Set locale to Dutch */
setlocale(LC_ALL, 'nl_NL');

/* Output: vrijdag 22 december 1978 */
echo strftime("%A %e %B %Y", mktime(0, 0, 0, 12, 22, 1978));

/* try different possible locale names for german as of PHP 4.3.0 */
$loc_de = setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
echo "Preferred locale for german on this system is '$loc_de'";
?>

Example #2 setlocale() Examples for Windows

<?php
/* Set locale to Dutch */
setlocale(LC_ALL, 'nld_nld');

/* Output: vrijdag 22 december 1978 */
echo strftime("%A %d %B %Y", mktime(0, 0, 0, 12, 22, 1978));

/* try different possible locale names for german as of PHP 4.3.0 */
$loc_de = setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'deu_deu');
echo "Preferred locale for german on this system is '$loc_de'";
?>

注释

Warning

The locale information is maintained per process, not per thread. If you are running PHP on a multithreaded server API like IIS or Apache on Windows, you may experience sudden changes in locale settings while a script is running, though the script itself never called setlocale(). This happens due to other scripts running in different threads of the same process at the same time, changing the process-wide locale using setlocale().

Tip

Windows users will find useful information about locale strings at Microsoft's MSDN website. Supported language strings can be found in the » language strings documentation and supported country/region strings in the » country/region strings documentation.

rtrim
sha1_file
字符串 函数


计算文件的 sha1 散列值

setlocale
sha1
字符串 函数
PHP Manual

sha1_file

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

sha1_file — 计算文件的 sha1 散列值

说明

string sha1_file ( string $filename [, bool $raw_output = false ] )

利用» 美国安全散列算法 1，计算并返回由 filename 指定的文件的 sha1 散列值。该散列值是一个 40 字符长度的十六进制数字。

参数

filename

要散列的文件的文件名。

raw_output

如果被设置为 TRUE，sha1 摘要将以 20 字符长度的原始格式返回。

返回值

成功返回一个字符串，否则返回 FALSE。

范例

Example #1 sha1_file() 范例

<?php
foreach(glob('/home/Kalle/myproject/*.php') as $ent)
{
    if(is_dir($ent))
    {
        continue;
    }

    echo $ent . ' (SHA1: ' . sha1_file($ent) . ')', PHP_EOL;
}
?>

更新日志

版本 | 说明
5.1.0 | 改变函数以使用流 API。这意味着可以使用包装器，比如 sha1_file('http://example.com/..')。

参见

  • sha1() - 计算字符串的 sha1 散列值
  • md5_file() - 计算指定文件的 MD5 散列值
  • crc32() - 计算一个字符串的 crc32 多项式

setlocale
sha1
字符串 函数


计算字符串的 sha1 散列值

sha1_file
similar_text
字符串 函数
PHP Manual

sha1

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

sha1 — 计算字符串的 sha1 散列值

说明

string sha1 ( string $str [, bool $raw_output = false ] )

利用» 美国安全散列算法 1 计算字符串的 sha1 散列值。

参数

str

输入字符串。

raw_output

如果可选的 raw_output 参数被设置为 TRUE，那么 sha1 摘要将以 20 字符长度的原始格式返回，否则返回值是一个 40 字符长度的十六进制数字。

返回值

返回 sha1 散列值字符串。

更新日志

版本 | 说明
5.0.0 | 新增 raw_output 参数。

范例

Example #1 sha1() 范例

<?php
$str = 'apple';

if (sha1($str) === 'd0be2dc421be4fcd0172e5afceea3970e2f3d940') {
    echo "Would you like a green or red apple?";
}
?>

注释

Note: Secure password hashing

由于此函数依赖的算法已不足够复杂,不推荐使用此函数对明文密码加密。详细内容参见这里。

参见

  • sha1_file() - 计算文件的 sha1 散列值
  • crc32() - 计算一个字符串的 crc32 多项式
  • md5() - 计算字符串的 MD5 散列值
  • hash() - 生成哈希值 （消息摘要）

sha1_file
similar_text
字符串 函数


计算两个字符串的相似度

sha1
soundex
字符串 函数
PHP Manual

similar_text

(PHP 4, PHP 5, PHP 7)

similar_text — 计算两个字符串的相似度

说明

int similar_text ( string $first , string $second [, float &$percent ] )

两个字符串的相似程度计算依据 Programming Classics: Implementing the World's Best Algorithms by Oliver (ISBN 0-131-00413-1) 的描述进行。注意该实现没有使用 Oliver 虚拟码中的堆栈，但是却进行了递归调用，这个做法可能会导致整个过程变慢或变快。也请注意，该算法的复杂度是 O(N**3)，N 是最长字符串的长度。

参数

first

第一个字符串。

second

第二个字符串。

percent

通过引用方式传递第三个参数，similar_text() 将计算相似程度百分数。

返回值

返回在两个字符串中匹配字符的数目。

参见

  • levenshtein() - 计算两个字符串之间的编辑距离
  • soundex() - Calculate the soundex key of a string

sha1
soundex
字符串 函数


Calculate the soundex key of a string

similar_text
sprintf
字符串 函数
PHP Manual

soundex

(PHP 4, PHP 5, PHP 7)

soundex — Calculate the soundex key of a string

说明

string soundex ( string $str )

Calculates the soundex key of str.

Soundex keys have the property that words pronounced similarly produce the same soundex key, and can thus be used to simplify searches in databases where you know the pronunciation but not the spelling. This soundex function returns a string 4 characters long, starting with a letter.

This particular soundex function is one described by Donald Knuth in "The Art Of Computer Programming, vol. 3: Sorting And Searching", Addison-Wesley (1973), pp. 391-392.

参数

str

The input string.

返回值

Returns the soundex key as a string.

范例

Example #1 Soundex Examples

<?php
soundex("Euler")       == soundex("Ellery");    // E460
soundex("Gauss")       == soundex("Ghosh");     // G200
soundex("Hilbert")     == soundex("Heilbronn"); // H416
soundex("Knuth")       == soundex("Kant");      // K530
soundex("Lloyd")       == soundex("Ladd");      // L300
soundex("Lukasiewicz") == soundex("Lissajous"); // L222
?>

参见

  • levenshtein() - 计算两个字符串之间的编辑距离
  • metaphone() - Calculate the metaphone key of a string
  • similar_text() - 计算两个字符串的相似度

similar_text
sprintf
字符串 函数


Return a formatted string

soundex
sscanf
字符串 函数
PHP Manual

sprintf

(PHP 4, PHP 5, PHP 7)

sprintf — Return a formatted string

说明

string sprintf ( string $format [, mixed $args [, mixed $... ]] )

Returns a string produced according to the formatting string format.

参数

format

The format string is composed of zero or more directives: ordinary characters (excluding %) that are copied directly to the result, and conversion specifications, each of which results in fetching its own parameter. This applies to both sprintf() and printf().

Each conversion specification consists of a percent sign (%), followed by one or more of these elements, in order:

  1. An optional sign specifier that forces a sign (- or +) to be used on a number. By default, only the - sign is used on a number if it's negative. This specifier forces positive numbers to have the + sign attached as well.
  2. An optional padding specifier that says what character will be used for padding the results to the right string size. This may be a space character or a 0 (zero character). The default is to pad with spaces. An alternate padding character can be specified by prefixing it with a single quote ('). See the examples below.
  3. An optional alignment specifier that says if the result should be left-justified or right-justified. The default is right-justified; a - character here will make it left-justified.
  4. An optional number, a width specifier that says how many characters (minimum) this conversion should result in.
  5. An optional precision specifier in the form of a period (.) followed by an optional decimal digit string that says how many decimal digits should be displayed for floating-point numbers. When using this specifier on a string, it acts as a cutoff point, setting a maximum character limit to the string. Additionally, the character to use when padding a number may optionally be specified between the period and the digit.

  6. A type specifier that says what type the argument data should be treated as. Possible types:

    • % - a literal percent character. No argument is required.
    • b - the argument is treated as an integer, and presented as a binary number.
    • c - the argument is treated as an integer, and presented as the character with that ASCII value.
    • d - the argument is treated as an integer, and presented as a (signed) decimal number.
    • e - the argument is treated as scientific notation (e.g. 1.2e+2). The precision specifier stands for the number of digits after the decimal point since PHP 5.2.1. In earlier versions, it was taken as number of significant digits (one less).
    • E - like %e but uses uppercase letter (e.g. 1.2E+2).
    • f - the argument is treated as a float, and presented as a floating-point number (locale aware).
    • F - the argument is treated as a float, and presented as a floating-point number (non-locale aware). Available since PHP 5.0.3.
    • g - shorter of %e and %f.
    • G - shorter of %E and %f.
    • o - the argument is treated as an integer, and presented as an octal number.
    • s - the argument is treated as and presented as a string.
    • u - the argument is treated as an integer, and presented as an unsigned decimal number.
    • x - the argument is treated as an integer and presented as a hexadecimal number (with lowercase letters).
    • X - the argument is treated as an integer and presented as a hexadecimal number (with uppercase letters).

Variables will be co-erced to a suitable type for the specifier:

Type Handling
Type | Specifiers
string | s
integer | d, u, c, o, x, X, b
double | g, G, e, E, f, F

Warning

Attempting to use a combination of the string and width specifiers with character sets that require more than one byte per character may result in unexpected results

The format string supports argument numbering/swapping. Here is an example:

Example #1 Argument swapping

<?php
$num = 5;
$location = 'tree';

$format = 'There are %d monkeys in the %s';
echo sprintf($format, $num, $location);
?>
This will output "There are 5 monkeys in the tree". But imagine we are creating a format string in a separate file, commonly because we would like to internationalize it and we rewrite it as:

Example #2 Argument swapping

<?php
$format = 'The %s contains %d monkeys';
echo sprintf($format, $num, $location);
?>
We now have a problem. The order of the placeholders in the format string does not match the order of the arguments in the code. We would like to leave the code as is and simply indicate in the format string which arguments the placeholders refer to. We would write the format string like this instead:

Example #3 Argument swapping

<?php
$format = 'The %2$s contains %1$d monkeys';
echo sprintf($format, $num, $location);
?>
An added benefit here is that you can repeat the placeholders without adding more arguments in the code. For example:

Example #4 Argument swapping

<?php
$format = 'The %2$s contains %1$d monkeys.
           That\'s a nice %2$s full of %1$d monkeys.';
echo sprintf($format, $num, $location);
?>
When using argument swapping, the n$ position specifier must come immediately after the percent sign (%), before any other specifiers, as shown in the example below.

Example #5 Specifying padding character

<?php
echo sprintf("%'.9d\n", 123);
echo sprintf("%'.09d\n", 123);
?>

以上例程会输出：

......123
000000123

Example #6 Position specifier with other specifiers

<?php
$format = 'The %2$s contains %1$04d monkeys';
echo sprintf($format, $num, $location);
?>

以上例程会输出：

The tree contains 0005 monkeys

Note:

Attempting to use a position specifier greater than PHP_INT_MAX will result in sprintf() generating warnings.

Warning

The c type specifier ignores padding and width

args

...

返回值

Returns a string produced according to the formatting string format, 或者在失败时返回 FALSE.

范例

Example #7 printf(): various examples

<?php
$n =  43951789;
$u = -43951789;
$c = 65; // ASCII 65 is 'A'

// notice the double %%, this prints a literal '%' character
printf("%%b = '%b'\n", $n); // binary representation
printf("%%c = '%c'\n", $c); // print the ascii character, same as chr() function
printf("%%d = '%d'\n", $n); // standard integer representation
printf("%%e = '%e'\n", $n); // scientific notation
printf("%%u = '%u'\n", $n); // unsigned integer representation of a positive integer
printf("%%u = '%u'\n", $u); // unsigned integer representation of a negative integer
printf("%%f = '%f'\n", $n); // floating point representation
printf("%%o = '%o'\n", $n); // octal representation
printf("%%s = '%s'\n", $n); // string representation
printf("%%x = '%x'\n", $n); // hexadecimal representation (lower-case)
printf("%%X = '%X'\n", $n); // hexadecimal representation (upper-case)

printf("%%+d = '%+d'\n", $n); // sign specifier on a positive integer
printf("%%+d = '%+d'\n", $u); // sign specifier on a negative integer
?>

以上例程会输出：

%b = '10100111101010011010101101'
%c = 'A'
%d = '43951789'
%e = '4.39518e+7'
%u = '43951789'
%u = '4251015507'
%f = '43951789.000000'
%o = '247523255'
%s = '43951789'
%x = '29ea6ad'
%X = '29EA6AD'
%+d = '+43951789'
%+d = '-43951789'

Example #8 printf(): string specifiers

<?php
$s = 'monkey';
$t = 'many monkeys';

printf("[%s]\n",      $s); // standard string output
printf("[%10s]\n",    $s); // right-justification with spaces
printf("[%-10s]\n",   $s); // left-justification with spaces
printf("[%010s]\n",   $s); // zero-padding works on strings too
printf("[%'#10s]\n",  $s); // use the custom padding character '#'
printf("[%10.10s]\n", $t); // left-justification but with a cutoff of 10 characters
?>

以上例程会输出：

[monkey]
[    monkey]
[monkey    ]
[0000monkey]
[####monkey]
[many monke]

Example #9 sprintf(): zero-padded integers

<?php
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
?>

Example #10 sprintf(): formatting currency

<?php
$money1 = 68.75;
$money2 = 54.35;
$money = $money1 + $money2;
// echo $money will output "123.1";
$formatted = sprintf("%01.2f", $money);
// echo $formatted will output "123.10"
?>

Example #11 sprintf(): scientific notation

<?php
$number = 362525200;

echo sprintf("%.3e", $number); // outputs 3.625e+8
?>

参见

  • printf() - 输出格式化字符串
  • sscanf() - 根据指定格式解析输入的字符
  • fscanf() - 从文件中格式化输入
  • vsprintf() - 返回格式化字符串
  • number_format() - 以千位分隔符方式格式化一个数字
  • date() - 格式化一个本地时间／日期

soundex
sscanf
字符串 函数


根据指定格式解析输入的字符

sprintf
str_getcsv
字符串 函数
PHP Manual

sscanf

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

sscanf — 根据指定格式解析输入的字符

说明

mixed sscanf ( string $str , string $format [, mixed &$... ] )

这个函数 sscanf() 输入类似
printf()。 sscanf()
读取字符串str 然后根据指定格式format解析, 格式的描述文档见 sprintf()。

指定的格式字符串中的任意空白匹配输入字符串的任意空白.也就是说即使是格式字符串中的一个制表符 \t 也能匹配输入 字符串中的一个单一空格字符

参数

str

将要被解析的 字符串.

format

The interpreted format for 解析str的格式, 除了以下不同外，其余的见 sprintf()的描述文档:

  • 函数不区分语言地区
  • F, g, G 和 b 不被支持.
  • D 表示十进制数字.
  • i stands for integer with base detection.
  • n stands for number of characters processed so far.

...

可以选参数将以引用方式传入，它们的值将被设置为解析匹配的值

返回值

如果仅传入了两个参数给这个函数，解析后将返回一个数组，否则，如果可选参数被传入，这个函数将返回被设置了值的个数

如果format存在的子字符串比 str内可用的多, -1 将被返回.

范例

Example #1 sscanf() 例子

<?php
// getting the serial number
list($serial) = sscanf("SN/2350001", "SN/%d");
// and the date of manufacturing
$mandate = "January 01 2000";
list($month, $day, $year) = sscanf($mandate, "%s %d %d");
echo "Item $serial was manufactured on: $year-" . substr($month, 0, 3) . "-$day\n";
?>

If optional parameters are passed, the function will return the number of assigned values.

Example #2 sscanf() - using optional parameters

<?php
// get author info and generate DocBook entry
$auth = "24\tLewis Carroll";
$n = sscanf($auth, "%d\t%s %s", $id, $first, $last);
echo "<author id='$id'>
    <firstname>$first</firstname>
    <surname>$last</surname>
</author>\n";
?>

参见

  • fscanf() - 从文件中格式化输入
  • printf() - 输出格式化字符串
  • sprintf() - Return a formatted string

sprintf
str_getcsv
字符串 函数


解析 CSV 字符串为一个数组

sscanf
str_ireplace
字符串 函数
PHP Manual

str_getcsv

(PHP 5 >= 5.3.0, PHP 7)

str_getcsv — 解析 CSV 字符串为一个数组

说明

array str_getcsv ( string $input [, string $delimiter = "," [, string $enclosure = '"' [, string $escape = "\\" ]]] )

以 CSV 字段格式解析字符串输入，并返回包含读取字段的数组。

参数

input

待解析的字符串。

delimiter

设定字段界定符（仅单个字符）。

enclosure

设定字段包裹字符（仅单个字符）。

escape

设置转义字符（仅单个字符）。默认为反斜线（\）。

返回值

返回一个包含读取到的字段的索引数组。

参见

  • fgetcsv() - 从文件指针中读入一行并解析 CSV 字段

sscanf
str_ireplace
字符串 函数


str_replace 的忽略大小写版本

str_getcsv
str_pad
字符串 函数
PHP Manual

str_ireplace

(PHP 5, PHP 7)

str_ireplace — str_replace() 的忽略大小写版本

说明

mixed str_ireplace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

该函数返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换（忽略大小写）之后的结果。如果没有一些特殊的替换规则，你应该使用该函数替换带有 i 修正符的 preg_replace() 函数。

参数

如果 search 和 replace 为数组，那么 str_replace() 将对 subject 做二者的映射替换。如果 replace 的值的个数少于 search 的个数，多余的替换将使用空字符串来进行。如果 search 是一个数组而 replace 是一个字符串，那么 search 中每个元素的替换将始终使用这个字符串。

如果 search 或 replace 是数组，他们的元素将从头到尾一个个处理。

search

要搜索的值，就像是 needle。可以使用 array 来提供多个 needle。

replace

The replacement value that replaces found search values. An array may be used to designate multiple replacements.

subject

要被搜索和替换的字符串或数组，就像是 haystack。

如果 subject 是一个数组，替换操作将遍历整个 subject，并且也将返回一个数组。

count

如果设定了，将会设置执行替换的次数。

返回值

返回替换后的字符串或者数组。

范例

Example #1 str_ireplace() 范例

<?php
$bodytag = str_ireplace("%body%", "black", "<body text=%BODY%>");
?>

注释

Note: 此函数可安全用于二进制对象。

Caution

Replacement order gotcha

Because str_ireplace() replaces left to right, it might replace a previously inserted value when doing multiple replacements. Example #2 in the str_replace() documentation demonstrates how this may affect you in practice.

参见

  • str_replace() - 子字符串替换
  • preg_replace() - 执行一个正则表达式的搜索和替换
  • strtr() - 转换指定字符

str_getcsv
str_pad
字符串 函数


使用另一个字符串填充字符串为指定长度

str_ireplace
str_repeat
字符串 函数
PHP Manual

str_pad

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

str_pad — 使用另一个字符串填充字符串为指定长度

说明

string str_pad ( string $input , int $pad_length [, string $pad_string = " " [, int $pad_type = STR_PAD_RIGHT ]] )

该函数返回 input 被从左端、右端或者同时两端被填充到制定长度后的结果。如果可选的 pad_string 参数没有被指定，input 将被空格字符填充，否则它将被 pad_string 填充到指定长度。

参数

input

输入字符串。

pad_length

如果 pad_length 的值是负数，小于或者等于输入字符串的长度，不会发生任何填充。

pad_string

Note:

如果填充字符的长度不能被 pad_string 整除，那么 pad_string 可能会被缩短。

pad_type

可选的 pad_type 参数的可能值为 STR_PAD_RIGHT，STR_PAD_LEFT 或 STR_PAD_BOTH。如果没有指定 pad_type，则假定它是 STR_PAD_RIGHT。

返回值

返回填充后的字符串。

范例

Example #1 str_pad() 范例

<?php
$input = "Alien";
echo str_pad($input, 10);                      // 输出 "Alien     "
echo str_pad($input, 10, "-=", STR_PAD_LEFT);  // 输出 "-=-=-Alien"
echo str_pad($input, 10, "_", STR_PAD_BOTH);   // 输出 "__Alien___"
echo str_pad($input, 6 , "___");               // 输出 "Alien_"
?>

str_ireplace
str_repeat
字符串 函数


重复一个字符串

str_pad
str_replace
字符串 函数
PHP Manual

str_repeat

(PHP 4, PHP 5, PHP 7)

str_repeat — 重复一个字符串

说明

string str_repeat ( string $input , int $multiplier )

返回 input 重复 multiplier 次后的结果。

参数

input

待操作的字符串。

multiplier

input 被重复的次数。

multiplier 必须大于等于 0。如果 multiplier 被设置为 0，函数返回空字符串。

返回值

返回重复后的字符串。

范例

Example #1 str_repeat() 范例

<?php
echo str_repeat("-=", 10);
?>

以上例程会输出：

-=-=-=-=-=-=-=-=-=-=

参见

  • for
  • str_pad() - 使用另一个字符串填充字符串为指定长度
  • substr_count() - 计算字串出现的次数

str_pad
str_replace
字符串 函数


子字符串替换

str_repeat
str_rot13
字符串 函数
PHP Manual

str_replace

(PHP 4, PHP 5, PHP 7)

str_replace — 子字符串替换

说明

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

该函数返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果。

如果没有一些特殊的替换需求（比如正则表达式），你应该使用该函数替换 ereg_replace() 和 preg_replace()。

参数

如果 search 和 replace 为数组，那么 str_replace() 将对 subject 做二者的映射替换。如果 replace 的值的个数少于 search 的个数，多余的替换将使用空字符串来进行。如果 search 是一个数组而 replace 是一个字符串，那么 search 中每个元素的替换将始终使用这个字符串。该转换不会改变大小写。

如果 search 和 replace 都是数组，它们的值将会被依次处理。

search

查找的目标值，也就是 needle。一个数组可以指定多个目标。

replace

search 的替换值。一个数组可以被用来指定多重替换。

subject

执行替换的数组或者字符串。也就是 haystack。

如果 subject 是一个数组，替换操作将遍历整个 subject，返回值也将是一个数组。

count

如果被指定，它的值将被设置为替换发生的次数。

返回值

该函数返回替换后的数组或者字符串。

范例

Example #1 str_replace() 基本范例

<?php
// 赋值: <body text='black'>
$bodytag = str_replace("%body%", "black", "<body text='%body%'>");

// 赋值: Hll Wrld f PHP
$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
$onlyconsonants = str_replace($vowels, "", "Hello World of PHP");

// 赋值: You should eat pizza, beer, and ice cream every day
$phrase  = "You should eat fruits, vegetables, and fiber every day.";
$healthy = array("fruits", "vegetables", "fiber");
$yummy   = array("pizza", "beer", "ice cream");

$newphrase = str_replace($healthy, $yummy, $phrase);

// 赋值: 2
$str = str_replace("ll", "", "good golly miss molly!", $count);
echo $count;
?>

Example #2 可能的 str_replace() 替换范例

<?php
// 替换顺序
$str     = "Line 1\nLine 2\rLine 3\r\nLine 4\n";
$order   = array("\r\n", "\n", "\r");
$replace = '<br />';

// 首先替换 \r\n 字符，因此它们不会被两次转换
$newstr = str_replace($order, $replace, $str);

// 输出 F ，因为 A 被 B 替换，B 又被 C 替换，以此类推...
// 由于从左到右依次替换，最终 E 被 F 替换
$search  = array('A', 'B', 'C', 'D', 'E');
$replace = array('B', 'C', 'D', 'E', 'F');
$subject = 'A';
echo str_replace($search, $replace, $subject);

// 输出: apearpearle pear
// 由于上面提到的原因
$letters = array('a', 'p');
$fruit   = array('apple', 'pear');
$text    = 'a p';
$output  = str_replace($letters, $fruit, $text);
echo $output;
?>

注释

Note: 此函数可安全用于二进制对象。

Caution

了解替换顺序

由于 str_replace() 的替换时从左到右依次进行的，进行多重替换的时候可能会替换掉之前插入的值。参见该文档的范例。

Note:

该函数区分大小写。使用 str_ireplace() 可以进行不区分大小写的替换。

参见

  • str_ireplace() - str_replace 的忽略大小写版本
  • substr_replace() - 替换字符串的子串
  • preg_replace() - 执行一个正则表达式的搜索和替换
  • strtr() - 转换指定字符

str_repeat
str_rot13
字符串 函数


对字符串执行 ROT13 转换

str_replace
str_shuffle
字符串 函数
PHP Manual

str_rot13

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

str_rot13 — 对字符串执行 ROT13 转换

说明

string str_rot13 ( string $str )

对 str 参数执行 ROT13 编码并将结果字符串返回。

ROT13 编码简单地使用字母表中后面第 13 个字母替换当前字母，同时忽略非字母表中的字符。编码和解码都使用相同的函数，传递一个编码过的字符串作为参数，将得到原始字符串。

参数

str

输入字符串。

返回值

返回给定字符串的 ROT13 版本。

范例

Example #1 str_rot13() 范例

<?php

echo str_rot13('PHP 4.3.0'); // CUC 4.3.0

?>

str_replace
str_shuffle
字符串 函数


随机打乱一个字符串

str_rot13
str_split
字符串 函数
PHP Manual

str_shuffle

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

str_shuffle — 随机打乱一个字符串

说明

string str_shuffle ( string $str )

str_shuffle() 函数打乱一个字符串，使用任何一种可能的排序方案。

参数

str

输入字符串。

返回值

返回打乱后的字符串。

范例

Example #1 str_shuffle() 范例

<?php
$str = 'abcdef';
$shuffled = str_shuffle($str);

// 输出类似于: bfdaec
echo $shuffled;
?>

参见

  • shuffle() - 将数组打乱
  • rand() - 产生一个随机整数

str_rot13
str_split
字符串 函数


将字符串转换为数组

str_shuffle
str_word_count
字符串 函数
PHP Manual

str_split

(PHP 5, PHP 7)

str_split — 将字符串转换为数组

说明

array str_split ( string $string [, int $split_length = 1 ] )

将一个字符串转换为数组。

参数

string

输入字符串。

split_length

每一段的长度。

返回值

如果指定了可选的 split_length 参数，返回数组中的每个元素均为一个长度为 split_length 的字符块，否则每个字符块为单个字符。

如果 split_length 小于 1，返回 FALSE。如果 split_length 参数超过了 string 超过了字符串 string 的长度，整个字符串将作为数组仅有的一个元素返回。

范例

Example #1 str_split() 使用范例

<?php

$str = "Hello Friend";

$arr1 = str_split($str);
$arr2 = str_split($str, 3);

print_r($arr1);
print_r($arr2);

?>

以上例程会输出：

Array
(
    [0] => H
    [1] => e
    [2] => l
    [3] => l
    [4] => o
    [5] =>
    [6] => F
    [7] => r
    [8] => i
    [9] => e
    [10] => n
    [11] => d
)

Array
(
    [0] => Hel
    [1] => lo
    [2] => Fri
    [3] => end
)

参见

  • chunk_split() - 将字符串分割成小块
  • preg_split() - 通过一个正则表达式分隔字符串
  • explode() - 使用一个字符串分割另一个字符串
  • count_chars() - 返回字符串所用字符的信息
  • str_word_count() - 返回字符串中单词的使用情况
  • for

str_shuffle
str_word_count
字符串 函数


返回字符串中单词的使用情况

str_split
strcasecmp
字符串 函数
PHP Manual

str_word_count

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

str_word_count — 返回字符串中单词的使用情况

说明

mixed str_word_count ( string $string [, int $format = 0 [, string $charlist ]] )

统计 string 中单词的数量。如果可选的参数 format 没有被指定，那么返回值是一个代表单词数量的整型数。如果指定了 format 参数，返回值将是一个数组，数组的内容则取决于 format 参数。format 的可能值和相应的输出结果如下所列。

对于这个函数的目的来说，单词的定义是一个与区域设置相关的字符串。这个字符串可以包含字母字符，也可以包含 "'" 和 "-" 字符（但不能以这两个字符开始）。

参数

string

字符串。

format

指定函数的返回值。当前支持的值如下：

  • 0 - 返回单词数量
  • 1 - 返回一个包含 string 中全部单词的数组
  • 2 - 返回关联数组。数组的键是单词在 string 中出现的数值位置，数组的值是这个单词

charlist

附加的字符串列表，其中的字符将被视为单词的一部分。

返回值

返回一个数组或整型数，这取决于 format 参数的选择。

更新日志

版本 | 说明
5.1.0 | 新增 charlist 参数。

范例

Example #1 str_word_count() 范例

<?php

$str = "Hello fri3nd, you're
       looking          good today!";

print_r(str_word_count($str, 1));
print_r(str_word_count($str, 2));
print_r(str_word_count($str, 1, 'àá??3'));

echo str_word_count($str);

?>

以上例程会输出：

Array
(
    [0] => Hello
    [1] => fri
    [2] => nd
    [3] => you're
    [4] => looking
    [5] => good
    [6] => today
)

Array
(
    [0] => Hello
    [6] => fri
    [10] => nd
    [14] => you're
    [29] => looking
    [46] => good
    [51] => today
)

Array
(
    [0] => Hello
    [1] => fri3nd
    [2] => you're
    [3] => looking
    [4] => good
    [5] => today
)

7

参见

  • explode() - 使用一个字符串分割另一个字符串
  • preg_split() - 通过一个正则表达式分隔字符串
  • split() - 用正则表达式将字符串分割到数组中
  • count_chars() - 返回字符串所用字符的信息
  • substr_count() - 计算字串出现的次数

str_split
strcasecmp
字符串 函数


二进制安全比较字符串（不区分大小写）

str_word_count
strchr
字符串 函数
PHP Manual

strcasecmp

(PHP 4, PHP 5, PHP 7)

strcasecmp — 二进制安全比较字符串（不区分大小写）

说明

int strcasecmp ( string $str1 , string $str2 )

二进制安全比较字符串（不区分大小写）。

参数

str1

第一个字符串。

str2

第二个字符串。

返回值

如果 str1 小于 str2 返回 < 0； 如果 str1 大于 str2 返回 > 0；如果两者相等，返回 0。

范例

Example #1 strcasecmp() 范例

<?php
$var1 = "Hello";
$var2 = "hello";
if (strcasecmp($var1, $var2) == 0) {
    echo '$var1 is equal to $var2 in a case-insensitive string comparison';
}
?>

参见

  • strcmp() - 二进制安全字符串比较
  • preg_match() - 执行一个正则表达式匹配
  • substr_compare() - 二进制安全比较字符串（从偏移位置比较指定长度）
  • strncasecmp() - 二进制安全比较字符串开头的若干个字符（不区分大小写）
  • stristr() - strstr 函数的忽略大小写版本
  • substr() - 返回字符串的子串

str_word_count
strchr
字符串 函数


别名 strstr

strcasecmp
strcmp
字符串 函数
PHP Manual

strchr

(PHP 4, PHP 5, PHP 7)

strchr — 别名 strstr()

说明

此函数是该函数的别名： strstr().

strcasecmp
strcmp
字符串 函数


二进制安全字符串比较

strchr
strcoll
字符串 函数
PHP Manual

strcmp

(PHP 4, PHP 5, PHP 7)

strcmp — 二进制安全字符串比较

说明

int strcmp ( string $str1 , string $str2 )

注意该比较区分大小写。

参数

str1

第一个字符串。

str2

第二个字符串。

返回值

如果 str1 小于 str2 返回 < 0； 如果 str1 大于 str2 返回 > 0；如果两者相等，返回 0。

范例

Example #1 strcmp() 例子

<?php
$var1 = "Hello";
$var2 = "hello";
if (strcmp($var1, $var2) !== 0) {
    echo '$var1 is not equal to $var2 in a case sensitive string comparison';
}
?>

参见

  • strcasecmp() - 二进制安全比较字符串（不区分大小写）
  • preg_match() - 执行一个正则表达式匹配
  • substr_compare() - 二进制安全比较字符串（从偏移位置比较指定长度）
  • strncmp() - 二进制安全比较字符串开头的若干个字符
  • strstr() - 查找字符串的首次出现
  • substr() - 返回字符串的子串

strchr
strcoll
字符串 函数


基于区域设置的字符串比较

strcmp
strcspn
字符串 函数
PHP Manual

strcoll

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

strcoll — 基于区域设置的字符串比较

说明

int strcoll ( string $str1 , string $str2 )

注意该比较区分大小写。和 strcmp() 不同，该函数不是二进制安全的。

strcoll() 使用当前区域设置进行比较。如果当前区域为 C 或 POSIX，该函数等同于 strcmp()。

参数

str1

第一个字符串。

str2

第二个字符串。

返回值

如果 str1 小于 str2 返回 < 0； 如果 str1 大于 str2 返回 > 0；如果两者相等，返回 0。

更新日志

版本 | 说明
4.2.3 | 函数在 Win32 平台可用。

参见

  • preg_match() - 执行一个正则表达式匹配
  • strcmp() - 二进制安全字符串比较
  • strcasecmp() - 二进制安全比较字符串（不区分大小写）
  • substr() - 返回字符串的子串
  • stristr() - strstr 函数的忽略大小写版本
  • strncasecmp() - 二进制安全比较字符串开头的若干个字符（不区分大小写）
  • strncmp() - 二进制安全比较字符串开头的若干个字符
  • strstr() - 查找字符串的首次出现
  • setlocale() - 设置地区信息

strcmp
strcspn
字符串 函数


获取不匹配遮罩的起始子字符串的长度

strcoll
strip_tags
字符串 函数
PHP Manual

strcspn

(PHP 4, PHP 5, PHP 7)

strcspn — 获取不匹配遮罩的起始子字符串的长度

说明

int strcspn ( string $str1 , string $str2 [, int $start [, int $length ]] )

返回 str1 中，所有字符都不存在于 str2 范围的起始子字符串的长度。

参数

str1

第一个字符串。

str2

第二个字符串。

start

查找的起始位置。

length

查找的长度。

返回值

以整型数返回子串的长度。

范例

Example #1 strcspn() example

<?php
$a = strcspn('abcd',  'apple');
$b = strcspn('abcd',  'banana');
$c = strcspn('hello', 'l');
$d = strcspn('hello', 'world');

var_dump($a);
var_dump($b);
var_dump($c);
var_dump($d);
?>

以上例程会输出：

int(0)
int(0)
int(2)
int(2)

注释

Note: 此函数可安全用于二进制对象。

参见

  • strspn() - 计算字符串中全部字符都存在于指定字符集合中的第一段子串的长度。

strcoll
strip_tags
字符串 函数


从字符串中去除 HTML 和 PHP 标记

strcspn
stripcslashes
字符串 函数
PHP Manual

strip_tags

(PHP 4, PHP 5, PHP 7)

strip_tags — 从字符串中去除 HTML 和 PHP 标记

说明

string strip_tags ( string $str [, string $allowable_tags ] )

该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。它使用与函数 fgetss() 一样的机制去除标记。

参数

str

输入字符串。

allowable_tags

使用可选的第二个参数指定不被去除的字符列表。

Note:

HTML 注释和 PHP 标签也会被去除。这里是硬编码处理的，所以无法通过 allowable_tags 参数进行改变。

Note:

This parameter should not contain whitespace. strip_tags() sees a tag as a case-insensitive string between < and the first whitespace or >. It means that strip_tags("<br/>", "<br>") returns an empty string.

返回值

返回处理后的字符串。

更新日志

版本 | 说明
5.0.0 | strip_tags() 变为二进制安全的。

范例

Example #1 strip_tags() 范例

<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";

// 允许 <p> 和 <a>
echo strip_tags($text, '<p><a>');
?>

以上例程会输出：

Test paragraph. Other text
<p>Test paragraph.</p> <a href="#fragment">Other text</a>

注释

Warning

由于 strip_tags() 无法实际验证 HTML，不完整或者破损标签将导致更多的数据被删除。

Warning

该函数不会修改 allowable_tags 参数中指定的允许标记的任何属性，包括 style 和 onmouseover 属性，用户可能会在提交的内容中恶意滥用这些属性，从而展示给其他用户。

Note:

输入 HTML 标签名字如果大于 1023 字节(bytes)将会被认为是无效的，无论 allowable_tags 参数是怎样的。

参见

  • htmlspecialchars() - Convert special characters to HTML entities

strcspn
stripcslashes
字符串 函数


反引用一个使用 addcslashes 转义的字符串

strip_tags
stripos
字符串 函数
PHP Manual

stripcslashes

(PHP 4, PHP 5, PHP 7)

stripcslashes — 反引用一个使用 addcslashes() 转义的字符串

说明

string stripcslashes ( string $str )

返回反转义后的字符串。可识别类似 C 语言的 \n，\r，... 八进制以及十六进制的描述。

参数

str

需要反转义的字符串。

返回值

返回反转义后的字符串。

参见

  • addcslashes() - 以 C 语言风格使用反斜线转义字符串中的字符

strip_tags
stripos
字符串 函数


查找字符串首次出现的位置（不区分大小写）

stripcslashes
stripslashes
字符串 函数
PHP Manual

stripos

(PHP 5, PHP 7)

stripos — 查找字符串首次出现的位置（不区分大小写）

说明

int stripos ( string $haystack , string $needle [, int $offset = 0 ] )

返回在字符串 haystack 中 needle 首次出现的数字位置。

与 strpos() 不同，stripos() 不区分大小写。

参数

haystack

在该字符串中查找。

needle

注意 needle 可以是一个单字符或者多字符的字符串。

如果 needle 不是一个字符串，那么它将被转换为整型并被视为字符顺序值。

offset

可选的 offset 参数允许你指定从 haystack 中的哪个字符开始查找。返回的位置数字值仍然相对于 haystack 的起始位置。

返回值

返回 needle 存在于 haystack 字符串开始的位置(独立于偏移量)。同时注意字符串位置起始于 0，而不是 1。

如果未发现 needle 将返回 FALSE。

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

范例

Example #1 stripos() 范例

<?php
$findme    = 'a';
$mystring1 = 'xyz';
$mystring2 = 'ABC';

$pos1 = stripos($mystring1, $findme);
$pos2 = stripos($mystring2, $findme);

// 'a' 当然不在 'xyz' 中
if ($pos1 === false) {
    echo "The string '$findme' was not found in the string '$mystring1'";
}

// 注意这里使用的是 ===。简单的 == 不能像我们期望的那样工作，
// 因为 'a' 的位置是 0（第一个字符）。
if ($pos2 !== false) {
    echo "We found '$findme' in '$mystring2' at position $pos2";
}
?>

注释

Note: 此函数可安全用于二进制对象。

参见

  • mb_stripos() - 大小写不敏感地查找字符串在另一个字符串中首次出现的位置
  • strpos() - 查找字符串首次出现的位置
  • strrpos() - 计算指定字符串在目标字符串中最后一次出现的位置
  • strripos() - 计算指定字符串在目标字符串中最后一次出现的位置（不区分大小写）
  • stristr() - strstr 函数的忽略大小写版本
  • substr() - 返回字符串的子串
  • str_ireplace() - str_replace 的忽略大小写版本

stripcslashes
stripslashes
字符串 函数


反引用一个引用字符串

stripos
stristr
字符串 函数
PHP Manual

stripslashes

(PHP 4, PHP 5, PHP 7)

stripslashes — 反引用一个引用字符串

说明

string stripslashes ( string $str )

反引用一个引用字符串。

Note:

如果 magic_quotes_sybase 项开启，反斜线将被去除，但是两个反斜线将会被替换成一个。

一个使用范例是使用 PHP 检测 magic_quotes_gpc 配置项的 开启情况（在 PHP 5.4之 前默认是开启的）并且你不需要将数据插入到一个需要转义的位置（例如数据库）。例如，你只是简单地将表单数据直接输出。

参数

str

输入字符串。

返回值

返回一个去除转义反斜线后的字符串（\' 转换为 ' 等等）。双反斜线（\\）被转换为单个反斜线（\）。

范例

Example #1 stripslashes() 范例

<?php
$str = "Is your name O\'reilly?";

// 输出: Is your name O'reilly?
echo stripslashes($str);
?>

Note:

stripslashes() 是非递归的。如果你想要在多维数组中使用该函数，你需要使用递归函数。

Example #2 对数组使用 stripslashes()

<?php
function stripslashes_deep($value)
{
    $value = is_array($value) ?
                array_map('stripslashes_deep', $value) :
                stripslashes($value);

    return $value;
}

// 范例
$array = array("f\\'oo", "b\\'ar", array("fo\\'o", "b\\'ar"));
$array = stripslashes_deep($array);

// 输出
print_r($array);
?>

以上例程会输出：

Array
(
    [0] => f'oo
    [1] => b'ar
    [2] => Array
        (
            [0] => fo'o
            [1] => b'ar
        )

)

参见

  • addslashes() - 使用反斜线引用字符串
  • get_magic_quotes_gpc() - 获取当前 magic_quotes_gpc 的配置选项设置

stripos
stristr
字符串 函数


strstr 函数的忽略大小写版本

stripslashes
strlen
字符串 函数
PHP Manual

stristr

(PHP 4, PHP 5, PHP 7)

stristr — strstr() 函数的忽略大小写版本

说明

string stristr ( string $haystack , mixed $needle [, bool $before_needle = false ] )

返回 haystack 字符串从 needle 第一次出现的位置开始到结尾的字符串。

参数

haystack

在该字符串中查找。

needle

如果 needle 不是一个字符串，那么它将被转换为整型并被视为字符顺序值。

before_needle

若为 TRUE，strstr() 将返回 needle 在 haystack 中的位置之前的部分(不包括 needle)。

参数 needle 和 haystack 将以不区分大小写的方式对待。

返回值

返回匹配的子字符串。如果 needle 未找到，返回 FALSE。

更新日志

版本 | 说明
5.3.0 | 新增可选的 before_needle 参数。
4.3.0 | stristr() 变为二进制安全的。

范例

Example #1 stristr() 范例

<?php
  $email = 'USER@EXAMPLE.com';
  echo stristr($email, 'e'); // 输出 ER@EXAMPLE.com
  echo stristr($email, 'e', true); // 自 PHP 5.3.0 起，输出 US
?>

Example #2 测试字符串的存在与否

<?php
  $string = 'Hello World!';
  if(stristr($string, 'earth') === FALSE) {
    echo '"earth" not found in string';
  }
// 输出: "earth" not found in string
?>

Example #3 使用非字符串 needle

<?php
  $string = 'APPLE';
  echo stristr($string, 97); // 97 = 小写字母 a
// 输出: APPLE
?>

注释

Note: 此函数可安全用于二进制对象。

参见

  • strstr() - 查找字符串的首次出现
  • strrchr() - 查找指定字符在字符串中的最后一次出现
  • stripos() - 查找字符串首次出现的位置（不区分大小写）
  • strpbrk() - 在字符串中查找一组字符的任何一个字符
  • preg_match() - 执行一个正则表达式匹配

stripslashes
strlen
字符串 函数


获取字符串长度

stristr
strnatcasecmp
字符串 函数
PHP Manual

strlen

(PHP 4, PHP 5, PHP 7)

strlen — 获取字符串长度

说明

int strlen ( string $string )

返回给定的字符串 string 的长度。

参数

string

需要计算长度的字符串。

返回值

成功则返回字符串 string 的长度；如果 string 为空，则返回 0。

更新日志

版本 | 说明
5.3.0 | Prior versions treated arrays as the string Array, thus returning a string length of 5 and emitting an E_NOTICE level error.

范例

Example #1 strlen() 范例

<?php
$str = 'abcdef';
echo strlen($str); // 6

$str = ' ab cd ';
echo strlen($str); // 7
?>

注释

Note:

strlen() returns the number of bytes rather than the number of characters in a string.

Note:

strlen() returns NULL when executed on arrays, and an E_WARNING level error is emitted.

参见

  • count() - 计算数组中的单元数目或对象中的属性个数
  • mb_strlen() - 获取字符串的长度

stristr
strnatcasecmp
字符串 函数


使用“自然顺序”算法比较字符串（不区分大小写）

strlen
strnatcmp
字符串 函数
PHP Manual

strnatcasecmp

(PHP 4, PHP 5, PHP 7)

strnatcasecmp — 使用"自然顺序"算法比较字符串（不区分大小写）

说明

int strnatcasecmp ( string $str1 , string $str2 )

该函数实现了以人类习惯对数字型字符串进行排序的比较算法。除了不区分大小写，该函数的行为与 strnatcmp() 类似。更多信息，参见：Martin Pool 的» 自然顺序的字符串比较页面。

参数

str1

第一个字符串。

str2

第二个字符串。

返回值

与其他字符串比较函数类似，如果 str1 小于 str2 返回 < 0； 如果 str1 大于 str2 返回 > 0；如果两者相等，返回 0。

参见

  • preg_match() - 执行一个正则表达式匹配
  • strcmp() - 二进制安全字符串比较
  • strcasecmp() - 二进制安全比较字符串（不区分大小写）
  • substr() - 返回字符串的子串
  • stristr() - strstr 函数的忽略大小写版本
  • strncasecmp() - 二进制安全比较字符串开头的若干个字符（不区分大小写）
  • strncmp() - 二进制安全比较字符串开头的若干个字符
  • strstr() - 查找字符串的首次出现
  • setlocale() - 设置地区信息

strlen
strnatcmp
字符串 函数


使用自然排序算法比较字符串

strnatcasecmp
strncasecmp
字符串 函数
PHP Manual

strnatcmp

(PHP 4, PHP 5, PHP 7)

strnatcmp — 使用自然排序算法比较字符串

说明

int strnatcmp ( string $str1 , string $str2 )

该函数实现了以人类习惯对数字型字符串进行排序的比较算法，这就是"自然顺序"。注意该比较区分大小写。

参数

str1

第一个字符串。

str2

第二个字符串。

返回值

与其他字符串比较函数类似，如果 str1 小于 str2 返回 < 0； 如果 str1 大于 str2 返回 > 0；如果两者相等，返回 0。

范例

下面的例子展示了该算法与计算机常规字符串比较算法（ strcmp() 所使用的）的区别：

<?php
$arr1 = $arr2 = array("img12.png", "img10.png", "img2.png", "img1.png");
echo "Standard string comparison\n";
usort($arr1, "strcmp");
print_r($arr1);
echo "\nNatural order string comparison\n";
usort($arr2, "strnatcmp");
print_r($arr2);
?>

以上例程会输出：

Standard string comparison
Array
(
    [0] => img1.png
    [1] => img10.png
    [2] => img12.png
    [3] => img2.png
)

Natural order string comparison
Array
(
    [0] => img1.png
    [1] => img2.png
    [2] => img10.png
    [3] => img12.png
)
更多信息，参见：Martin Pool 的» 自然顺序的字符串比较 page.

参见

  • preg_match() - 执行一个正则表达式匹配
  • strcasecmp() - 二进制安全比较字符串（不区分大小写）
  • substr() - 返回字符串的子串
  • stristr() - strstr 函数的忽略大小写版本
  • strcmp() - 二进制安全字符串比较
  • strncmp() - 二进制安全比较字符串开头的若干个字符
  • strncasecmp() - 二进制安全比较字符串开头的若干个字符（不区分大小写）
  • strnatcasecmp() - 使用“自然顺序”算法比较字符串（不区分大小写）
  • strstr() - 查找字符串的首次出现
  • natsort() - 用“自然排序”算法对数组排序
  • natcasesort() - 用“自然排序”算法对数组进行不区分大小写字母的排序

strnatcasecmp
strncasecmp
字符串 函数


二进制安全比较字符串开头的若干个字符（不区分大小写）

strnatcmp
strncmp
字符串 函数
PHP Manual

strncasecmp

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

strncasecmp — 二进制安全比较字符串开头的若干个字符（不区分大小写）

说明

int strncasecmp ( string $str1 , string $str2 , int $len )

该函数与 strcasecmp() 类似，不同之处在于你可以指定两个字符串比较时使用的长度（即最大比较长度）。

参数

str1

第一个字符串。

str2

第二个字符串。

len

最大比较长度。

返回值

如果 str1 小于 str2 返回 < 0； 如果 str1 大于 str2 返回 > 0；如果两者相等，返回 0。

参见

  • strncmp() - 二进制安全比较字符串开头的若干个字符
  • preg_match() - 执行一个正则表达式匹配
  • substr_compare() - 二进制安全比较字符串（从偏移位置比较指定长度）
  • strcasecmp() - 二进制安全比较字符串（不区分大小写）
  • stristr() - strstr 函数的忽略大小写版本
  • substr() - 返回字符串的子串

strnatcmp
strncmp
字符串 函数


二进制安全比较字符串开头的若干个字符

strncasecmp
strpbrk
字符串 函数
PHP Manual

strncmp

(PHP 4, PHP 5, PHP 7)

strncmp — 二进制安全比较字符串开头的若干个字符

说明

int strncmp ( string $str1 , string $str2 , int $len )

该函数与 strcmp() 类似，不同之处在于你可以指定两个字符串比较时使用的长度（即最大比较长度）。

注意该比较区分大小写。

参数

str1

第一个字符串。

str2

第二个字符串。

len

最大比较长度。

返回值

如果 str1 小于 str2 返回 < 0； 如果 str1 大于 str2 返回 > 0；如果两者相等，返回 0。

参见

  • strncasecmp() - 二进制安全比较字符串开头的若干个字符（不区分大小写）
  • preg_match() - 执行一个正则表达式匹配
  • substr_compare() - 二进制安全比较字符串（从偏移位置比较指定长度）
  • strcmp() - 二进制安全字符串比较
  • strstr() - 查找字符串的首次出现
  • substr() - 返回字符串的子串

strncasecmp
strpbrk
字符串 函数


在字符串中查找一组字符的任何一个字符

strncmp
strpos
字符串 函数
PHP Manual

strpbrk

(PHP 5, PHP 7)

strpbrk — 在字符串中查找一组字符的任何一个字符

说明

string strpbrk ( string $haystack , string $char_list )

strpbrk() 函数在 haystack 字符串中查找 char_list 中的字符。

参数

haystack

在此字符串中查找 char_list。

char_list

该参数区分大小写。

返回值

返回一个以找到的字符开始的子字符串。如果没有找到，则返回 FALSE。

范例

Example #1 strpbrk() 范例

<?php

$text = 'This is a Simple text.';

// 输出 "is is a Simple text."，因为 'i' 先被匹配
echo strpbrk($text, 'mi');

// 输出 "Simple text."，因为字符区分大小写
echo strpbrk($text, 'S');
?>

参见

  • strpos() - 查找字符串首次出现的位置
  • strstr() - 查找字符串的首次出现
  • preg_match() - 执行一个正则表达式匹配

strncmp
strpos
字符串 函数


查找字符串首次出现的位置

strpbrk
strrchr
字符串 函数
PHP Manual

strpos

(PHP 4, PHP 5, PHP 7)

strpos — 查找字符串首次出现的位置

说明

mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

返回 needle 在 haystack 中首次出现的数字位置。

参数

haystack

在该字符串中进行查找。

needle

如果 needle 不是一个字符串，那么它将被转换为整型并被视为字符的顺序值。

offset

如果提供了此参数，搜索会从字符串该字符数的起始位置开始统计。和 strrpos()、 strripos()不一样，这个偏移量不能是负数。

返回值

返回 needle 存在于 haystack 字符串起始的位置(独立于 offset)。同时注意字符串位置是从0开始，而不是从1开始的。

如果没找到 needle，将返回 FALSE。

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

范例

Example #1 使用 ===

<?php
$mystring = 'abc';
$findme   = 'a';
$pos = strpos($mystring, $findme);

// 注意这里使用的是 ===。简单的 == 不能像我们期待的那样工作，
// 因为 'a' 是第 0 位置上的（第一个）字符。
if ($pos === false) {
    echo "The string '$findme' was not found in the string '$mystring'";
} else {
    echo "The string '$findme' was found in the string '$mystring'";
    echo " and exists at position $pos";
}
?>

Example #2 使用 !==

<?php
$mystring = 'abc';
$findme   = 'a';
$pos = strpos($mystring, $findme);

// 使用 !== 操作符。使用 != 不能像我们期待的那样工作，
// 因为 'a' 的位置是 0。语句 (0 != false) 的结果是 false。
if ($pos !== false) {
     echo "The string '$findme' was found in the string '$mystring'";
         echo " and exists at position $pos";
} else {
     echo "The string '$findme' was not found in the string '$mystring'";
}
?>

Example #3 使用位置偏移量

<?php
// 忽视位置偏移量之前的字符进行查找
$newstring = 'abcdef abcdef';
$pos = strpos($newstring, 'a', 1); // $pos = 7, 不是 0
?>

注释

Note: 此函数可安全用于二进制对象。

参见

  • stripos() - 查找字符串首次出现的位置（不区分大小写）
  • strrpos() - 计算指定字符串在目标字符串中最后一次出现的位置
  • strripos() - 计算指定字符串在目标字符串中最后一次出现的位置（不区分大小写）
  • strstr() - 查找字符串的首次出现
  • strpbrk() - 在字符串中查找一组字符的任何一个字符
  • substr() - 返回字符串的子串
  • preg_match() - 执行一个正则表达式匹配

strpbrk
strrchr
字符串 函数


查找指定字符在字符串中的最后一次出现

strpos
strrev
字符串 函数
PHP Manual

strrchr

(PHP 4, PHP 5, PHP 7)

strrchr — 查找指定字符在字符串中的最后一次出现

说明

string strrchr ( string $haystack , mixed $needle )

该函数返回 haystack 字符串中的一部分，这部分以 needle 的最后出现位置开始，直到 haystack 末尾。

参数

haystack

在该字符串中查找。

needle

如果 needle 包含了不止一个字符，那么仅使用第一个字符。该行为不同于 strstr()。

如果 needle 不是一个字符串，那么将被转化为整型并被视为字符顺序值。

返回值

该函数返回字符串的一部分。如果 needle 未被找到，返回 FALSE。

更新日志

版本 | 说明
4.3.0 | 该函数是二进制安全的。

范例

Example #1 strrchr() 范例

<?php
// 获取 $PATH 中不含磁盘符号的目录
$dir = substr(strrchr($PATH, ":"), 1);

// 获取最后一行内容
$text = "Line 1\nLine 2\nLine 3";
$last = substr(strrchr($text, 10), 1 );
?>

注释

Note: 此函数可安全用于二进制对象。

参见

  • strstr() - 查找字符串的首次出现
  • strrpos() - 计算指定字符串在目标字符串中最后一次出现的位置

strpos
strrev
字符串 函数


反转字符串

strrchr
strripos
字符串 函数
PHP Manual

strrev

(PHP 4, PHP 5, PHP 7)

strrev — 反转字符串

说明

string strrev ( string $string )

返回 string 反转后的字符串。

参数

string

待反转的原始字符串。

返回值

返回反转后的字符串。

范例

Example #1 使用 strrev() 反转字符串

<?php
echo strrev("Hello world!"); // 输出 "!dlrow olleH"
?>

strrchr
strripos
字符串 函数


计算指定字符串在目标字符串中最后一次出现的位置（不区分大小写）

strrev
strrpos
字符串 函数
PHP Manual

strripos

(PHP 5, PHP 7)

strripos — 计算指定字符串在目标字符串中最后一次出现的位置（不区分大小写）

说明

int strripos ( string $haystack , string $needle [, int $offset = 0 ] )

以不区分大小写的方式查找指定字符串在目标字符串中最后一次出现的位置。与 strrpos() 不同，strripos() 不区分大小写。

参数

haystack

在此字符串中进行查找。

needle

注意 needle 可以是一个单字符或者多字符的字符串。

offset

参数 offset 可以被指定来查找字符串中任意长度的子字符串。

负数偏移量将使得查找从字符串的起始位置开始，到 offset 位置为止。

返回值

返回 needle 相对于 haystack 字符串的位置(和搜索的方向和偏移量无关)。同时注意字符串的起始位置为 0 而非 1。

如果 needle 未被发现，返回 FALSE。

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

范例

Example #1 strripos() 简单范例

<?php
$haystack = 'ababcd';
$needle   = 'aB';

$pos      = strripos($haystack, $needle);

if ($pos === false) {
    echo "Sorry, we did not find ($needle) in ($haystack)";
} else {
    echo "Congratulations!\n";
    echo "We found the last ($needle) in ($haystack) at position ($pos)";
}
?>

以上例程会输出：

   Congratulations!
   We found the last (aB) in (ababcd) at position (2)

参见

  • strpos() - 查找字符串首次出现的位置
  • stripos() - 查找字符串首次出现的位置（不区分大小写）
  • strrchr() - 查找指定字符在字符串中的最后一次出现
  • substr() - 返回字符串的子串
  • stristr() - strstr 函数的忽略大小写版本
  • strstr() - 查找字符串的首次出现

strrev
strrpos
字符串 函数


计算指定字符串在目标字符串中最后一次出现的位置

strripos
strspn
字符串 函数
PHP Manual

strrpos

(PHP 4, PHP 5, PHP 7)

strrpos — 计算指定字符串在目标字符串中最后一次出现的位置

说明

int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )

返回字符串 haystack 中 needle 最后一次出现的数字位置。注意 PHP4 中，needle 只能为单个字符。如果 needle 被指定为一个字符串，那么将仅使用第一个字符。

参数

haystack

在此字符串中进行查找。

needle

如果 needle不是一个字符串，它将被转换为整型并被视为字符的顺序值。

offset

或许会查找字符串中任意长度的子字符串。负数值将导致查找在字符串结尾处开始的计数位置处结束。

返回值

返回 needle 存在的位置。如果没有找到，返回 FALSE。 Also note that string positions start at 0, and not 1.

Returns FALSE if the needle was not found.

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

更新日志

版本 | 说明
5.0.0 | 参数 needle 可以是一个多字符的字符串。
5.0.0 | 引入 offset 参数。

范例

Example #1 检查字串是否存在

很容易将"在位置 0 处找到"和"未发现字符串"这两种情况搞错。这是检测区别的办法：

<?php

$pos = strrpos($mystring, "b");
if ($pos === false) { // 注意: 三个等号
    // 未发现...
}

?>

Example #2 使用偏移位置进行查找

<?php
$foo = "0123456789a123456789b123456789c";

var_dump(strrpos($foo, '7', -5));  // 从尾部第 5 个位置开始查找
                                   // 结果: int(17)

var_dump(strrpos($foo, '7', 20));  // 从第 20 个位置开始查找
                                   // 结果: int(27)

var_dump(strrpos($foo, '7', 28));  // 结果: bool(false)
?>

参见

  • strpos() - 查找字符串首次出现的位置
  • stripos() - 查找字符串首次出现的位置（不区分大小写）
  • strripos() - 计算指定字符串在目标字符串中最后一次出现的位置（不区分大小写）
  • strrchr() - 查找指定字符在字符串中的最后一次出现
  • substr() - 返回字符串的子串

strripos
strspn
字符串 函数


计算字符串中全部字符都存在于指定字符集合中的第一段子串的长度。

strrpos
strstr
字符串 函数
PHP Manual

strspn

(PHP 4, PHP 5, PHP 7)

strspn — 计算字符串中全部字符都存在于指定字符集合中的第一段子串的长度。

说明

int strspn ( string $subject , string $mask [, int $start [, int $length ]] )

返回 subject 中全部字符仅存在于 mask 中的第一组连续字符(子字符串)的长度。

如果省略了 start 和 length 参数，则检查整个 subject 字符串；如果指定了这两个参数，则效果等同于调用 strspn(substr($subject, $start, $length), $mask)（更多信息，参见 substr ）。

代码行：

<?php
$var = strspn("42 is the answer to the 128th question.", "1234567890");
?>
$var 将被指派为 2，因为 '42' 是 subject 中第一段全部字符都存在于 '1234567890' 的连续字符。

参数

subject

待检查的字符串。

mask

检查字符列表。

start

subject 的开始检查位置。

如果 start 被设置并且是非负的，strspn() 将从 subject 的第 start 个位置开始检查。例如，在字符串 'abcdef' 中，第 0 个位置的字符是 'a'，第二个位置的字符是 'c'，等等。

如果 start 被设置并且为负数，strspn() 将从 subject 的尾部倒数第 start 个位置开始检查 subject。

length

subject 中检查的长度。

如果 length 被设置并且为非负数，那么将从起始位置开始，检查 subject 的 length 个长度的字符。

如果 length 被设置并且为负数，那么将从起始位置开始，直到从 subject 尾部开始第 length 个位置，对 subject 进行检查。

返回值

返回 str1 中第一段全部字符都存在于 str2 范围的字符串的长度。

更新日志

版本 | 说明
4.3.0 | 新增 start 和 length 参数。

范例

Example #1 strspn() 范例

<?php
echo strspn("foo", "o", 1, 2); // 打印: 2
?>

以上例程会输出：

int(0)
int(2)
int(1)

注释

Note: 此函数可安全用于二进制对象。

参见

  • strcspn() - 获取不匹配遮罩的起始子字符串的长度

strrpos
strstr
字符串 函数


查找字符串的首次出现

strspn
strtok
字符串 函数
PHP Manual

strstr

(PHP 4, PHP 5, PHP 7)

strstr — 查找字符串的首次出现

说明

string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )

返回 haystack 字符串从 needle 第一次出现的位置开始到 haystack 结尾的字符串。

Note:

该函数区分大小写。如果想要不区分大小写，请使用 stristr()。

Note:

如果你仅仅想确定 needle 是否存在于 haystack 中，请使用速度更快、耗费内存更少的 strpos() 函数。

参数

haystack

输入字符串。

needle

如果 needle 不是一个字符串，那么它将被转化为整型并且作为字符的序号来使用。

before_needle

若为 TRUE，strstr() 将返回 needle 在 haystack 中的位置之前的部分。

返回值

返回字符串的一部分或者 FALSE（如果未发现 needle）。

更新日志

版本 | 说明
5.3.0 | 新增可选的 before_needle 参数。
4.3.0 | strstr() 成为二进制安全的。

范例

Example #1 strstr() 范例

<?php
$email  = 'name@example.com';
$domain = strstr($email, '@');
echo $domain; // 打印 @example.com

$user = strstr($email, '@', true); // 从 PHP 5.3.0 起
echo $user; // 打印 name
?>

参见

  • preg_match() - 执行一个正则表达式匹配
  • stristr() - strstr 函数的忽略大小写版本
  • strpos() - 查找字符串首次出现的位置
  • strrchr() - 查找指定字符在字符串中的最后一次出现
  • substr() - 返回字符串的子串

strspn
strtok
字符串 函数


标记分割字符串

strstr
strtolower
字符串 函数
PHP Manual

strtok

(PHP 4, PHP 5, PHP 7)

strtok — 标记分割字符串

说明

string strtok ( string $str , string $token )
string strtok ( string $token )

strtok() 将字符串 str 分割为若干子字符串，每个子字符串以 token 中的字符分割。这也就意味着，如果有个字符串是 "This is an example string"，你可以使用空格字符将这句话分割成独立的单词。

注意仅第一次调用 strtok 函数时使用 string 参数。后来每次调用 strtok，都将只使用 token 参数，因为它会记住它在字符串 string 中的位置。如果要重新开始分割一个新的字符串，你需要再次使用 string 来调用 strtok 函数，以便完成初始化工作。注意可以在 token 参数中使用多个字符。字符串将被该参数中任何一个字符分割。

参数

str

被分成若干子字符串的原始字符串。

token

分割 str 时使用的分界字符。

返回值

标记后的字符串。

范例

Example #1 strtok() 范例

<?php
$string = "This is\tan example\nstring";
/* 使用制表符和换行符作为分界符 */
$tok = strtok($string, " \n\t");

while ($tok !== false) {
    echo "Word=$tok<br />";
    $tok = strtok(" \n\t");
}
?>

对于空串的处理机制，PHP 从 4.1.0 开始发生了变化。旧的运行机制返回空字符串，而新的运行机制选择恰当地跳过这一部分：

Example #2 旧的 strtok() 运行机制

<?php
$first_token  = strtok('/something', '/');
$second_token = strtok('/');
var_dump($first_token, $second_token);
?>

以上例程会输出：

    string(0) ""
    string(9) "something"

Example #3 新的 strtok() 运行机制

<?php
$first_token  = strtok('/something', '/');
$second_token = strtok('/');
var_dump($first_token, $second_token);
?>

以上例程会输出：

    string(9) "something"
    bool(false)

注释

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

参见

  • split() - 用正则表达式将字符串分割到数组中
  • explode() - 使用一个字符串分割另一个字符串

strstr
strtolower
字符串 函数


将字符串转化为小写

strtok
strtoupper
字符串 函数
PHP Manual

strtolower

(PHP 4, PHP 5, PHP 7)

strtolower — 将字符串转化为小写

说明

string strtolower ( string $string )

将 string 中所有的字母字符转换为小写并返回。

注意 "字母" 与当前所在区域有关。例如，在默认的 "C" 区域，字符 umlaut-A（?）就不会被转换。

参数

string

输入字符串。

返回值

返回转换后的小写字符串。

范例

Example #1 strtolower() 范例

<?php
$str = "Mary Had A Little Lamb and She LOVED It So";
$str = strtolower($str);
echo $str; // 打印 mary had a little lamb and she loved it so
?>

注释

Note: 此函数可安全用于二进制对象。

参见

  • strtoupper() - 将字符串转化为大写
  • ucfirst() - 将字符串的首字母转换为大写
  • ucwords() - 将字符串中每个单词的首字母转换为大写
  • mb_strtolower() - 使字符串小写

strtok
strtoupper
字符串 函数


将字符串转化为大写

strtolower
strtr
字符串 函数
PHP Manual

strtoupper

(PHP 4, PHP 5, PHP 7)

strtoupper — 将字符串转化为大写

说明

string strtoupper ( string $string )

将 string 中所有的字母字符转换为大写并返回。

注意 "字母" 与当前所在区域有关。例如，在默认的 "C" 区域，字符 umlaut-a（?）就不会被转换。

参数

string

输入字符串。

返回值

返回转换后的大写字符串。

范例

Example #1 strtoupper() 范例

<?php
$str = "Mary Had A Little Lamb and She LOVED It So";
$str = strtoupper($str);
echo $str; // 打印 MARY HAD A LITTLE LAMB AND SHE LOVED IT SO
?>

注释

Note: 此函数可安全用于二进制对象。

参见

  • strtolower() - 将字符串转化为小写
  • ucfirst() - 将字符串的首字母转换为大写
  • ucwords() - 将字符串中每个单词的首字母转换为大写
  • mb_strtoupper() - 使字符串大写

strtolower
strtr
字符串 函数


转换指定字符

strtoupper
substr_compare
字符串 函数
PHP Manual

strtr

(PHP 4, PHP 5, PHP 7)

strtr — 转换指定字符

说明

string strtr ( string $str , string $from , string $to )
string strtr ( string $str , array $replace_pairs )

该函数返回 str 的一个副本，并将在 from 中指定的字符转换为 to 中相应的字符。 比如， $from[$n]中每次的出现都会被替换为 $to[$n]，其中 $n 是两个参数都有效的位移(offset)。

如果 from 与 to 长度不相等，那么多余的字符部分将被忽略。 str 的长度将会和返回的值一样。

If given two arguments, the second should be an array in the form array('from' => 'to', ...). The return value is a string where all the occurrences of the array keys have been replaced by the corresponding values. The longest keys will be tried first. Once a substring has been replaced, its new value will not be searched again.

In this case, the keys and the values may have any length, provided that there is no empty key; additionally, the length of the return value may differ from that of str. However, this function will be the most efficient when all the keys have the same size.

参数

str

待转换的字符串。

from

字符串中与将要被转换的目的字符 to 相对应的源字符。

to

字符串中与将要被转换的字符 from 相对应的目的字符。

replace_pairs

参数 replace_pairs 可以用来取代 to 和 from 参数，因为它是以 array('from' => 'to', ...) 格式出现的数组。

返回值

返回转换后的字符串。

如果 replace_pairs 中包含一个空字符串（""）键，那么将返回 FALSE。 If the str is not a scalar then it is not typecasted into a string, instead a warning is raised and NULL is returned.

范例

Example #1 strtr() 范例

<?php
$addr = strtr($addr, "???", "aao");
?>

The next example shows the behavior of strtr() when called with only two arguments. Note the preference of the replacements ("h" is not picked because there are longer matches) and how replaced text was not searched again.

Example #2 使用两个参数的 strtr() 范例

<?php
$trans = array("hello" => "hi", "hi" => "hello");
echo strtr("hi all, I said hello", $trans);
?>

以上例程会输出：

hello all, I said hi

The two modes of behavior are substantially different. With three arguments, strtr() will replace bytes; with two, it may replace longer substrings.

Example #3 strtr() behavior comparison

<?php
echo strtr("baab", "ab", "01"),"\n";

$trans = array("ab" => "01");
echo strtr("baab", $trans);
?>

以上例程会输出：

1001
ba01

参见

  • str_replace() - 子字符串替换
  • preg_replace() - 执行一个正则表达式的搜索和替换

strtoupper
substr_compare
字符串 函数


二进制安全比较字符串（从偏移位置比较指定长度）

strtr
substr_count
字符串 函数
PHP Manual

substr_compare

(PHP 5, PHP 7)

substr_compare — 二进制安全比较字符串（从偏移位置比较指定长度）

说明

int substr_compare ( string $main_str , string $str , int $offset [, int $length [, bool $case_insensitivity = false ]] )

substr_compare() 从偏移位置 offset 开始比较 main_str 与 str，比较长度为 length 个字符。

参数

main_str

待比较的第一个字符串。

str

待比较的第二个字符串。

offset

比较开始的位置。如果为负数，则从字符串结尾处开始算起。

length

比较的长度。默认值为 str 的长度与 main_str 的长度减去位置偏移量 offset 后二者中的较大者。

case_insensitivity

如果 case_insensitivity 为 TRUE，比较将不区分大小写。

返回值

如果 main_str 从偏移位置 offset 起的子字符串小于 str，则返回小于 0 的数；如果大于 str，则返回大于 0 的数；如果二者相等，则返回 0。如果 offset 大于等于 main_str 的长度或 length 被设置为小于 1 的值（ PHP 5.6 之前的版本），substr_compare() 将打印出一条警告信息并且返回 FALSE。

更新日志

版本 | 说明
5.6.0 | length 可以是 0。
5.1.0 | 允许使用负数的 offset 参数。

范例

Example #1 substr_compare() 范例

<?php
echo substr_compare("abcde", "bc", 1, 2); // 0
echo substr_compare("abcde", "de", -2, 2); // 0
echo substr_compare("abcde", "bcg", 1, 2); // 0
echo substr_compare("abcde", "BC", 1, 2, true); // 0
echo substr_compare("abcde", "bc", 1, 3); // 1
echo substr_compare("abcde", "cd", 1, 2); // -1
echo substr_compare("abcde", "abc", 5, 1); // warning
?>

参见

  • strncmp() - 二进制安全比较字符串开头的若干个字符

strtr
substr_count
字符串 函数


计算字串出现的次数

substr_compare
substr_replace
字符串 函数
PHP Manual

substr_count

(PHP 4, PHP 5, PHP 7)

substr_count — 计算字串出现的次数

说明

int substr_count ( string $haystack , string $needle [, int $offset = 0 [, int $length ]] )

substr_count() 返回子字符串needle 在字符串 haystack 中出现的次数。注意 needle 区分大小写。

Note:

该函数不会计算重叠字符串。参见下面的例子。

参数

haystack

在此字符串中进行搜索。

needle

要搜索的字符串。

offset

开始计数的偏移位置。

length

指定偏移位置之后的最大搜索长度。如果偏移量加上这个长度的和大于 haystack 的总长度，则打印警告信息。

返回值

该函数返回整型。

更新日志

版本 | 说明
5.1.0 | 新增 offset 和 length 参数。

范例

Example #1 substr_count() 范例

<?php
$text = 'This is a test';
echo strlen($text); // 14

echo substr_count($text, 'is'); // 2

// 字符串被简化为 's is a test'，因此输出 1
echo substr_count($text, 'is', 3);

// 字符串被简化为 's i'，所以输出 0
echo substr_count($text, 'is', 3, 3);

// 因为 5+10 > 14，所以生成警告
echo substr_count($text, 'is', 5, 10);

// 输出 1，因为该函数不计算重叠字符串
$text2 = 'gcdgcdgcd';
echo substr_count($text2, 'gcdgcd');
?>

参见

  • count_chars() - 返回字符串所用字符的信息
  • strpos() - 查找字符串首次出现的位置
  • substr() - 返回字符串的子串
  • strstr() - 查找字符串的首次出现

substr_compare
substr_replace
字符串 函数


替换字符串的子串

substr_count
substr
字符串 函数
PHP Manual

substr_replace

(PHP 4, PHP 5, PHP 7)

substr_replace — 替换字符串的子串

说明

mixed substr_replace ( mixed $string , mixed $replacement , mixed $start [, mixed $length ] )

substr_replace() 在字符串 string 的副本中将由 start 和可选的 length 参数限定的子字符串使用 replacement 进行替换。

参数

string

输入字符串。

An array of strings can be provided, in which case the replacements will occur on each string in turn. In this case, the replacement, start and length parameters may be provided either as scalar values to be applied to each input string in turn, or as arrays, in which case the corresponding array element will be used for each input string.

replacement

替换字符串。

start

如果 start 为正数，替换将从 string 的 start 位置开始。

如果 start 为负数，替换将从 string 的倒数第 start 个位置开始。

length

如果设定了这个参数并且为正数，表示 string 中被替换的子字符串的长度。如果设定为负数，它表示待替换的子字符串结尾处距离 string 末端的字符个数。如果没有提供此参数，那么它默认为 strlen( string ) （字符串的长度）。当然，如果 length 为 0，那么这个函数的功能为将 replacement 插入到 string 的 start 位置处。

返回值

返回结果字符串。如果 string 是个数组，那么也将返回一个数组。

更新日志

版本 | 说明
4.3.3 | All parameters now accept arrays.

范例

Example #1 substr_replace() 范例

<?php
$var = 'ABCDEFGH:/MNRPQR/';
echo "Original: $var<hr />\n";

/* 这两个例子使用 "bob" 替换整个 $var。*/
echo substr_replace($var, 'bob', 0) . "<br />\n";
echo substr_replace($var, 'bob', 0, strlen($var)) . "<br />\n";

/* 将 "bob" 插入到 $var 的开头处。*/
echo substr_replace($var, 'bob', 0, 0) . "<br />\n";

/* 下面两个例子使用 "bob" 替换 $var 中的 "MNRPQR"。*/
echo substr_replace($var, 'bob', 10, -1) . "<br />\n";
echo substr_replace($var, 'bob', -7, -1) . "<br />\n";

/* 从 $var 中删除 "MNRPQR"。*/
echo substr_replace($var, '', 10, -1) . "<br />\n";
?>

Example #2 Using substr_replace() to replace multiple strings at once

<?php
$input = array('A: XXX', 'B: XXX', 'C: XXX');

// A simple case: replace XXX in each string with YYY.
echo implode('; ', substr_replace($input, 'YYY', 3, 3))."\n";

// A more complicated case where each replacement is different.
$replace = array('AAA', 'BBB', 'CCC');
echo implode('; ', substr_replace($input, $replace, 3, 3))."\n";

// Replace a different number of characters each time.
$length = array(1, 2, 3);
echo implode('; ', substr_replace($input, $replace, 3, $length))."\n";
?>

以上例程会输出：

A: YYY; B: YYY; C: YYY
A: AAA; B: BBB; C: CCC
A: AAAXX; B: BBBX; C: CCC

注释

Note: 此函数可安全用于二进制对象。

参见

  • str_replace() - 子字符串替换
  • substr() - 返回字符串的子串
  • 字符串访问与修改

substr_count
substr
字符串 函数


返回字符串的子串

substr_replace
trim
字符串 函数
PHP Manual

substr

(PHP 4, PHP 5, PHP 7)

substr — 返回字符串的子串

说明

string substr ( string $string , int $start [, int $length ] )

返回字符串 string 由 start 和 length 参数指定的子字符串。

参数

string

输入字符串。必须至少有一个字符。

start

如果 start 是非负数，返回的字符串将从 string 的 start 位置开始，从 0 开始计算。例如，在字符串 "abcdef" 中，在位置 0 的字符是 "a"，位置 2 的字符串是 "c" 等等。

如果 start 是负数，返回的字符串将从 string 结尾处向前数第 start 个字符开始。

如果 string 的长度小于 start，将返回 FALSE。

Example #1 使用负数 start

<?php
$rest = substr("abcdef", -1);    // 返回 "f"
$rest = substr("abcdef", -2);    // 返回 "ef"
$rest = substr("abcdef", -3, 1); // 返回 "d"
?>

length

如果提供了正数的 length，返回的字符串将从 start 处开始最多包括 length 个字符（取决于 string 的长度）。

如果提供了负数的 length，那么 string 末尾处的 length 个字符将会被省略（若 start 是负数则从字符串尾部算起）。如果 start 不在这段文本中，那么将返回 FALSE。

如果提供了值为 0，FALSE 或 NULL 的 length，那么将返回一个空字符串。

如果没有提供 length，返回的子字符串将从 start 位置开始直到字符串结尾。

Example #2 使用负数 length

<?php
$rest = substr("abcdef", 0, -1);  // 返回 "abcde"
$rest = substr("abcdef", 2, -1);  // 返回 "cde"
$rest = substr("abcdef", 4, -4);  // 返回 ""
$rest = substr("abcdef", -3, -1); // 返回 "de"
?>

返回值

返回提取的子字符串， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
7.0.0 | 如果 string 的字符串长度与 start 相同时将返回一个空字符串。在之前的版本中，这种情况将返回 FALSE 。
5.2.2 - 5.2.6 | If the start parameter indicates the position of a negative truncation or beyond, false is returned. Other versions get the string from start.

范例

Example #3 substr() 基本用法

<?php
echo substr('abcdef', 1);     // bcdef
echo substr('abcdef', 1, 3);  // bcd
echo substr('abcdef', 0, 4);  // abcd
echo substr('abcdef', 0, 8);  // abcdef
echo substr('abcdef', -1, 1); // f

// 访问字符串中的单个字符
// 也可以使用中括号
$string = 'abcdef';
echo $string[0];                 // a
echo $string[3];                 // d
echo $string[strlen($string)-1]; // f
?>

Example #4 substr() casting behaviour

<?php
class apple {
    public function __toString() {
        return "green";
    }
}

echo "1) ".var_export(substr("pear", 0, 2), true).PHP_EOL;
echo "2) ".var_export(substr(54321, 0, 2), true).PHP_EOL;
echo "3) ".var_export(substr(new apple(), 0, 2), true).PHP_EOL;
echo "4) ".var_export(substr(true, 0, 1), true).PHP_EOL;
echo "5) ".var_export(substr(false, 0, 1), true).PHP_EOL;
echo "6) ".var_export(substr("", 0, 1), true).PHP_EOL;
echo "7) ".var_export(substr(1.2e3, 0, 4), true).PHP_EOL;
?>

Output of the above example in PHP 7:

1) 'pe'
2) '54'
3) 'gr'
4) '1'
5) false
6) false
7) '1200'

Output of the above example in PHP 5:

1) 'pe'
2) '54'
3) 'gr'
4) '1'
5) false
6) false
7) '1200'

错误／异常

错误时返回 FALSE。

<?php
var_dump(substr('a', 2)); // bool(false)
?>

参见

  • strrchr() - 查找指定字符在字符串中的最后一次出现
  • substr_replace() - 替换字符串的子串
  • preg_match() - 执行一个正则表达式匹配
  • trim() - 去除字符串首尾处的空白字符（或者其他字符）
  • mb_substr() - 获取部分字符串
  • wordwrap() - 打断字符串为指定数量的字串
  • 字符串访问和修改

substr_replace
trim
字符串 函数


去除字符串首尾处的空白字符（或者其他字符）

substr
ucfirst
字符串 函数
PHP Manual

trim

(PHP 4, PHP 5, PHP 7)

trim — 去除字符串首尾处的空白字符（或者其他字符）

说明

string trim ( string $str [, string $charlist = " \t\n\r\0\x0B" ] )

此函数返回字符串 str 去除首尾空白字符后的结果。如果不指定第二个参数，trim() 将去除这些字符：

  • " " (ASCII 32 (0x20))，普通空格符。
  • "\t" (ASCII 9 (0x09))，制表符。
  • "\n" (ASCII 10 (0x0A))，换行符。
  • "\r" (ASCII 13 (0x0D))，回车符。
  • "\0" (ASCII 0 (0x00))，空字节符。
  • "\x0B" (ASCII 11 (0x0B))，垂直制表符。

参数

str

待处理的字符串。

charlist

可选参数，过滤字符也可由 charlist 参数指定。一般要列出所有希望过滤的字符，也可以使用 ".." 列出一个字符范围。

返回值

过滤后的字符串。

更新日志

版本 | 说明
4.1.0 | 新增可选的 charlist 参数。

范例

Example #1 trim() 使用范例

<?php

$text   = "\t\tThese are a few words :) ...  ";
$binary = "\x09Example string\x0A";
$hello  = "Hello World";
var_dump($text, $binary, $hello);

print "\n";

$trimmed = trim($text);
var_dump($trimmed);

$trimmed = trim($text, " \t.");
var_dump($trimmed);

$trimmed = trim($hello, "Hdle");
var_dump($trimmed);

// 清除 $binary 首位的 ASCII 控制字符
// （包括 0-31）
$clean = trim($binary, "\x00..\x1F");
var_dump($clean);

?>

以上例程会输出：

string(32) "        These are a few words :) ...  "
string(16) "    Example string
"
string(11) "Hello World"

string(28) "These are a few words :) ..."
string(24) "These are a few words :)"
string(5) "o Wor"
string(14) "Example string"

Example #2 使用 trim() 清理数组值

<?php
function trim_value(&$value)
{
    $value = trim($value);
}

$fruit = array('apple','banana ', ' cranberry ');
var_dump($fruit);

array_walk($fruit, 'trim_value');
var_dump($fruit);

?>

以上例程会输出：

array(3) {
  [0]=>
  string(5) "apple"
  [1]=>
  string(7) "banana "
  [2]=>
  string(11) " cranberry "
}
array(3) {
  [0]=>
  string(5) "apple"
  [1]=>
  string(6) "banana"
  [2]=>
  string(9) "cranberry"
}

注释

Note: Possible gotcha: removing middle characters

Because trim() trims characters from the beginning and end of a string, it may be confusing when characters are (or are not) removed from the middle. trim('abc', 'bad') removes both 'a' and 'b' because it trims 'a' thus moving 'b' to the beginning to also be trimmed. So, this is why it "works" whereas trim('abc', 'b') seemingly does not.

参见

  • ltrim() - 删除字符串开头的空白字符（或其他字符）
  • rtrim() - 删除字符串末端的空白字符（或者其他字符）
  • str_replace() - 子字符串替换

substr
ucfirst
字符串 函数


将字符串的首字母转换为大写

trim
ucwords
字符串 函数
PHP Manual

ucfirst

(PHP 4, PHP 5, PHP 7)

ucfirst — 将字符串的首字母转换为大写

说明

string ucfirst ( string $str )

将 str 的首字符（如果首字符是字母）转换为大写字母，并返回这个字符串。

注意字母的定义取决于当前区域设定。例如，在默认的 "C" 区域，字符 umlaut-a（?）将不会被转换。

参数

str

输入字符串。

返回值

返回结果字符串。

范例

Example #1 ucfirst() 范例

<?php
$foo = 'hello world!';
$foo = ucfirst($foo);             // Hello world!

$bar = 'HELLO WORLD!';
$bar = ucfirst($bar);             // HELLO WORLD!
$bar = ucfirst(strtolower($bar)); // Hello world!
?>

参见

  • lcfirst() - 使一个字符串的第一个字符小写
  • strtolower() - 将字符串转化为小写
  • strtoupper() - 将字符串转化为大写
  • ucwords() - 将字符串中每个单词的首字母转换为大写

trim
ucwords
字符串 函数


将字符串中每个单词的首字母转换为大写

ucfirst
vfprintf
字符串 函数
PHP Manual

ucwords

(PHP 4, PHP 5, PHP 7)

ucwords — 将字符串中每个单词的首字母转换为大写

说明

string ucwords ( string $str )

将 str 中每个单词的首字符（如果首字符是字母）转换为大写字母，并返回这个字符串。

这里单词的定义是紧跟在空白字符（空格符、制表符、换行符、回车符、水平线以及竖线）之后的子字符串。

参数

str

输入字符串。

返回值

返回转换后的字符串。

范例

Example #1 ucwords() 范例

<?php
$foo = 'hello world!';
$foo = ucwords($foo);             // Hello World!

$bar = 'HELLO WORLD!';
$bar = ucwords($bar);             // HELLO WORLD!
$bar = ucwords(strtolower($bar)); // Hello World!
?>

注释

Note: 此函数可安全用于二进制对象。

参见

  • strtoupper() - 将字符串转化为大写
  • strtolower() - 将字符串转化为小写
  • ucfirst() - 将字符串的首字母转换为大写
  • mb_convert_case() - 对字符串进行大小写转换

ucfirst
vfprintf
字符串 函数


将格式化字符串写入流

ucwords
vprintf
字符串 函数
PHP Manual

vfprintf

(PHP 5, PHP 7)

vfprintf — 将格式化字符串写入流

说明

int vfprintf ( resource $handle , string $format , array $args )

向由 handle 指定的流资源句柄中写入根据 format 格式化后的字符串。

作用与 fprintf() 函数类似，但是接收一个数组参数，而不是一系列可变数量的参数。

参数

handle

format

关于 format 的描述，参见 sprintf()。

args

返回值

返回输出字符串的长度。

范例

Example #1 vfprintf(): 前导 0 的整数

<?php
if (!($fp = fopen('date.txt', 'w')))
    return;

vfprintf($fp, "%04d-%02d-%02d", array($year, $month, $day));
// 将向 date.txt 写入格式化的 ISO 标准日期
?>

参见

  • printf() - 输出格式化字符串
  • sprintf() - Return a formatted string
  • sscanf() - 根据指定格式解析输入的字符
  • fscanf() - 从文件中格式化输入
  • vsprintf() - 返回格式化字符串
  • number_format() - 以千位分隔符方式格式化一个数字

ucwords
vprintf
字符串 函数


输出格式化字符串

vfprintf
vsprintf
字符串 函数
PHP Manual

vprintf

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

vprintf — 输出格式化字符串

说明

int vprintf ( string $format , array $args )

根据 format （sprintf() 函数文档中有相关描述）参数指定的格式，在一个格式化字符串中显示多个值。

作用与 printf() 函数类似，但是接收一个数组参数，而不是一系列可变数量的参数。

参数

format

关于 format 的描述，参见 sprintf()。

args

返回值

返回输出字符串的长度。

范例

Example #1 vprintf(): 前导 0 的整数

<?php
vprintf("%04d-%02d-%02d", explode('-', '1988-8-1')); // 1988-08-01
?>

参见

  • printf() - 输出格式化字符串
  • sprintf() - Return a formatted string
  • vsprintf() - 返回格式化字符串

vfprintf
vsprintf
字符串 函数


返回格式化字符串

vprintf
wordwrap
字符串 函数
PHP Manual

vsprintf

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

vsprintf — 返回格式化字符串

说明

string vsprintf ( string $format , array $args )

作用与 sprintf() 函数类似，但是接收一个数组参数，而不是一系列可变数量的参数。

参数

format

关于 format 的描述，参见 sprintf()。

args

返回值

根据 format （sprintf() 函数文档中有相关描述）参数指定的格式，在一个字符串中返回一系列值。

范例

Example #1 vsprintf(): 前导 0 的整数

<?php
print vsprintf("%04d-%02d-%02d", explode('-', '1988-8-1')); // 1988-08-01
?>

参见

  • sprintf() - Return a formatted string
  • vprintf() - 输出格式化字符串

vprintf
wordwrap
字符串 函数


打断字符串为指定数量的字串

vsprintf
更新日志
字符串 函数
PHP Manual

wordwrap

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

wordwrap — 打断字符串为指定数量的字串

说明

string wordwrap ( string $str [, int $width = 75 [, string $break = "\n" [, bool $cut = false ]]] )

使用字符串断点将字符串打断为指定数量的字串。

参数

str

输入字符串。

width

列宽度。

break

使用可选的 break 参数打断字符串。

cut

如果 cut 设置为 TRUE，字符串总是在指定的宽度或者之前位置被打断。因此，如果有的单词宽度超过了给定的宽度，它将被分隔开来。（参见第二个范例）。

返回值

返回打断后的字符串。

范例

Example #1 wordwrap() 范例

<?php
$text = "The quick brown fox jumped over the lazy dog.";
$newtext = wordwrap($text, 20, "<br />\n");

echo $newtext;
?>

以上例程会输出：

The quick brown fox<br />
jumped over the lazy<br />
dog.

Example #2 wordwrap() 范例

<?php
$text = "A very long woooooooooooord.";
$newtext = wordwrap($text, 8, "\n", true);

echo "$newtext\n";
?>

以上例程会输出：

A very
long
wooooooo
ooooord.

参见

  • nl2br() - 在字符串所有新行之前插入 HTML 换行标记
  • chunk_split() - 将字符串分割成小块

vsprintf
更新日志
字符串 函数


更新日志

对本扩展的类／函数／方法有以下更新。

Version | Function | Description
7.0.0 | substr | 如果 string 的字符串长度与 start 相同时将返回一个空字符串。在之前的版本中，这种情况将返回 FALSE 。
5.6.5 | crypt | When the failure string "*0" is given as the salt, "*1" will now be returned for consistency with other crypt implementations. Prior to this version, PHP 5.6 would incorrectly return a DES hash.
5.6.0 | crypt | Raise E_NOTICE security warning if salt is omitted.
 | html_entity_decode | The default value for the encoding parameter was changed to be the value of the default_charset configuration option.
 | htmlentities | The default value for the encoding parameter was changed to be the value of the default_charset configuration option.
 | htmlspecialchars | The default value for the encoding parameter was changed to be the value of the default_charset configuration option.
 | substr_compare | length 可以是 0。
5.5.21 | crypt | When the failure string "*0" is given as the salt, "*1" will now be returned for consistency with other crypt implementations. Prior to this version, PHP 5.5 (and earlier branches) would incorrectly return a DES hash.
5.5.1 | hex2bin | 如果输入的字符串是无效的十六进制字符串则抛出一个警告，
5.4.4 | hex2bin | 如果输入的字符串有多余将抛出异常。 PHP 5.4.0 起字符串将被静默地接受，但是最后的字节会被截断。
5.4.0 | get_html_translation_table | The constants ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
 | get_html_translation_table | The default value for the encoding parameter was changed to UTF-8.
 | html_entity_decode | The constants ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
 | html_entity_decode | Default encoding changed from ISO-8859-1 to UTF-8.
 | htmlentities | The constants ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
 | htmlentities | The default value for the encoding parameter was changed to UTF-8.
 | htmlspecialchars | The constants ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
 | htmlspecialchars | The default value for the encoding parameter was changed to UTF-8.
 | htmlspecialchars_decode | 增加了 ENT_HTML401、ENT_XML1、 ENT_XHTML 和 ENT_HTML5 等常量。
 | number_format | This function now supports multiple bytes in dec_point and thousands_sep. Only the first byte of each separator was used in older versions.
5.3.7 | crypt | Added $2x$ and $2y$ Blowfish modes to deal with potential high-bit attacks.
5.3.4 | get_html_translation_table | The encoding parameter was added.
5.3.2 | crypt | 基于 Ulrich Drepper 的实现，新增基于 SHA-256 算法和 SHA-512 算法的 crypt。
 | crypt | 修正了 Blowfish 算法由于非法循环导致的问题，返回“失败”字符串（“*0” 或 “*1”）而不是转而使用 DES 算法。
5.3.0 | crypt | PHP 现在包含了它自己的 MD5 Crypt 实现，包括标准 DES 算法，扩展的 DES 算法以及 Blowfish 算法。如果系统缺乏相应的实现，那么 PHP 将使用它自己的实现。
 | htmlentities | The constant ENT_IGNORE was added.
 | htmlspecialchars | The constant ENT_IGNORE was added.
 | nl2br | 新增可选的 is_xhtml 参数。
 | setlocale | This function now throws an E_DEPRECATED notice if a string is passed to the category parameter instead of one of the LC_* constants.
 | stristr | 新增可选的 before_needle 参数。
 | strlen | Prior versions treated arrays as the string Array, thus returning a string length of 5 and emitting an E_NOTICE level error.
 | strstr | 新增可选的 before_needle 参数。
5.2.5 | addcslashes | The escape sequences \v and \f were added.
5.2.3 | htmlentities | The double_encode parameter was added.
 | htmlspecialchars | The double_encode parameter was added.
5.2.2 - 5.2.6 | substr | If the start parameter indicates the position of a negative truncation or beyond, false is returned. Other versions get the string from start.
5.1.0 | explode | 支持负数的 limit
 | md5_file | 函数改用流 API。这意味着能够配合封装器使用该函数，比如 md5_file('http://example.com/..')。
 | sha1_file | 改变函数以使用流 API。这意味着可以使用包装器，比如 sha1_file('http://example.com/..')。
 | str_word_count | 新增 charlist 参数。
 | substr_compare | 允许使用负数的 offset 参数。
 | substr_count | 新增 offset 和 length 参数。
5.0.0 | md5 | 新增 raw_output 参数。
 | sha1 | 新增 raw_output 参数。
 | strip_tags | strip_tags 变为二进制安全的。
 | strrpos | 参数 needle 可以是一个多字符的字符串。
 | strrpos | 引入 offset 参数。
4.3.3 | substr_replace | All parameters now accept arrays.
4.3.0 | stristr | stristr 变为二进制安全的。
 | strrchr | 该函数是二进制安全的。
 | strspn | 新增 start 和 length 参数。
 | strstr | strstr 成为二进制安全的。
4.2.3 | strcoll | 函数在 Win32 平台可用。
4.1.0 | trim | 新增可选的 charlist 参数。
4.0.5 | nl2br | nl2br 成为 XHTML 兼容的操作。所有的旧版本都会在 string 的新行之前插入 '<br>' 而不是 '<br />'。
4.0.1 | explode | 增加了参数 limit
wordwrap
变量与类型相关扩展
字符串


变量与类型相关扩展

  • 数组
    • 简介
    • 安装／配置
    • 预定义常量
    • 对数组进行排序
    • 数组 函数
  • 类/对象 — 类/对象的信息
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • 类/对象 函数
  • Classkit
    • 简介
    • 安装／配置
    • 预定义常量
    • Classkit 函数
  • Ctype — 字符类型检测
    • 简介
    • 安装／配置
    • 预定义常量
    • Ctype 函数
  • Data Structures
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Collection — The Collection interface
    • Hashable — The Hashable interface
    • Sequence — The Sequence interface
    • Vector — The Vector class
    • Deque — The Deque class
    • Map — The Map class
    • Pair — The Pair class
    • Set — The Set class
    • Stack — The Stack class
    • Queue — The Queue class
    • PriorityQueue — The PriorityQueue class
  • Filter — Data Filtering
    • 简介
    • 安装／配置
    • Types of filters
    • 预定义常量
    • 范例
    • Filter 函数
  • Function Handling
    • 简介
    • 安装／配置
    • 预定义常量
    • Function handling 函数
  • Quickhash
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • QuickHashIntSet — The QuickHashIntSet class
    • QuickHashIntHash — The QuickHashIntHash class
    • QuickHashStringIntHash — The QuickHashStringIntHash class
    • QuickHashIntStringHash — The QuickHashIntStringHash class
  • 反射
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • 扩展
    • Reflection — Reflection 类
    • ReflectionClass — ReflectionClass 类
    • ReflectionZendExtension — ReflectionZendExtension 类
    • ReflectionExtension — ReflectionExtension 类
    • ReflectionFunction — ReflectionFunction 类
    • ReflectionFunctionAbstract — ReflectionFunctionAbstract 类
    • ReflectionMethod — ReflectionMethod 类
    • ReflectionObject — ReflectionObject 类
    • ReflectionParameter — ReflectionParameter 类
    • ReflectionProperty — ReflectionProperty 类
    • Reflector — Reflector 接口
    • ReflectionException — ReflectionException 类
  • Variable handling
    • 简介
    • 安装／配置
    • 预定义常量
    • Variable handling 函数
更新日志
数组
函数参考


数组

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 对数组进行排序
  • 数组 函数
    • array_change_key_case — 返回字符串键名全为小写或大写的数组
    • array_chunk — 将一个数组分割成多个
    • array_column — 返回数组中指定的一列
    • array_combine — 创建一个数组，用一个数组的值作为其键名，另一个数组的值作为其值
    • array_count_values — 统计数组中所有的值出现的次数
    • array_diff_assoc — 带索引检查计算数组的差集
    • array_diff_key — 使用键名比较计算数组的差集
    • array_diff_uassoc — 用用户提供的回调函数做索引检查来计算数组的差集
    • array_diff_ukey — 用回调函数对键名比较计算数组的差集
    • array_diff — 计算数组的差集
    • array_fill_keys — 使用指定的键和值填充数组
    • array_fill — 用给定的值填充数组
    • array_filter — 用回调函数过滤数组中的单元
    • array_flip — 交换数组中的键和值
    • array_intersect_assoc — 带索引检查计算数组的交集
    • array_intersect_key — 使用键名比较计算数组的交集
    • array_intersect_uassoc — 带索引检查计算数组的交集，用回调函数比较索引
    • array_intersect_ukey — 用回调函数比较键名来计算数组的交集
    • array_intersect — 计算数组的交集
    • array_key_exists — 检查给定的键名或索引是否存在于数组中
    • array_keys — 返回数组中部分的或所有的键名
    • array_map — 为数组的每个元素应用回调函数
    • array_merge_recursive — 递归地合并一个或多个数组
    • array_merge — 合并一个或多个数组
    • array_multisort — 对多个数组或多维数组进行排序
    • array_pad — 用值将数组填补到指定长度
    • array_pop — 将数组最后一个单元弹出（出栈）
    • array_product — 计算数组中所有值的乘积
    • array_push — 将一个或多个单元压入数组的末尾（入栈）
    • array_rand — 从数组中随机取出一个或多个单元
    • array_reduce — 用回调函数迭代地将数组简化为单一的值
    • array_replace_recursive — 使用传递的数组递归替换第一个数组的元素
    • array_replace — 使用传递的数组替换第一个数组的元素
    • array_reverse — 返回一个单元顺序相反的数组
    • array_search — 在数组中搜索给定的值，如果成功则返回相应的键名
    • array_shift — 将数组开头的单元移出数组
    • array_slice — 从数组中取出一段
    • array_splice — 把数组中的一部分去掉并用其它值取代
    • array_sum — 计算数组中所有值的和
    • array_udiff_assoc — 带索引检查计算数组的差集，用回调函数比较数据
    • array_udiff_uassoc — 带索引检查计算数组的差集，用回调函数比较数据和索引
    • array_udiff — 用回调函数比较数据来计算数组的差集
    • array_uintersect_assoc — 带索引检查计算数组的交集，用回调函数比较数据
    • array_uintersect_uassoc — 带索引检查计算数组的交集，用回调函数比较数据和索引
    • array_uintersect — 计算数组的交集，用回调函数比较数据
    • array_unique — 移除数组中重复的值
    • array_unshift — 在数组开头插入一个或多个单元
    • array_values — 返回数组中所有的值
    • array_walk_recursive — 对数组中的每个成员递归地应用用户函数
    • array_walk — 使用用户自定义函数对数组中的每个元素做回调处理
    • array — 新建一个数组
    • arsort — 对数组进行逆向排序并保持索引关系
    • asort — 对数组进行排序并保持索引关系
    • compact — 建立一个数组，包括变量名和它们的值
    • count — 计算数组中的单元数目或对象中的属性个数
    • current — 返回数组中的当前单元
    • each — 返回数组中当前的键／值对并将数组指针向前移动一步
    • end — 将数组的内部指针指向最后一个单元
    • extract — 从数组中将变量导入到当前的符号表
    • in_array — 检查数组中是否存在某个值
    • key_exists — 别名 array_key_exists
    • key — 从关联数组中取得键名
    • krsort — 对数组按照键名逆向排序
    • ksort — 对数组按照键名排序
    • list — 把数组中的值赋给一些变量
    • natcasesort — 用“自然排序”算法对数组进行不区分大小写字母的排序
    • natsort — 用“自然排序”算法对数组排序
    • next — 将数组中的内部指针向前移动一位
    • pos — current 的别名
    • prev — 将数组的内部指针倒回一位
    • range — 建立一个包含指定范围单元的数组
    • reset — 将数组的内部指针指向第一个单元
    • rsort — 对数组逆向排序
    • shuffle — 将数组打乱
    • sizeof — count 的别名
    • sort — 对数组排序
    • uasort — 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
    • uksort — 使用用户自定义的比较函数对数组中的键名进行排序
    • usort — 使用用户自定义的比较函数对数组中的值进行排序
变量与类型相关扩展
简介
变量与类型相关扩展


简介

这些函数允许你通过不同的方式来使用和操作数组。数组是存储、管理和操作变量组的必不可少的工具。

PHP 支持简单数组和多维数组，数组可由用户自己创建也可以由其它函数创建。有很多特殊的数据库处理函数可以从数据库查询中返回数组以及一些返回数组的函数。

请参考手册中有关数组的章节来详细了解 PHP 中数组是如何实现及使用的。也可以参考 数组操作符来了解操作数组的一些其它方式。

数组
安装／配置
数组


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
数组


预定义常量

下列常量作为 PHP 核心的一部分总是可用的。

CASE_LOWER (integer)
CASE_LOWER 用在 array_change_key_case() 中将数组的键名转换成小写字母。这也是 array_change_key_case() 的默认值。
CASE_UPPER (integer)
CASE_UPPER 用在 array_change_key_case() 中将数组的键名转换成大写字母。

排序顺序标识：

SORT_ASC (integer)
SORT_ASC 用在 array_multisort() 函数中，使其升序排列。
SORT_DESC (integer)
SORT_DESC 用在 array_multisort() 函数中，使其降序排列。

排序类型标识：用于各种排序函数

SORT_REGULAR (integer)
SORT_REGULAR 用于对对象进行通常比较。
SORT_NUMERIC (integer)
SORT_NUMERIC 用于对对象进行数值比较。
SORT_STRING (integer)
SORT_STRING 用于对对象进行字符串比较。
SORT_LOCALE_STRING (integer)
SORT_LOCALE_STRING 基于当前区域来对对象进行字符串比较。PHP 4.4.0 和 5.0.2 新加。

COUNT_NORMAL (integer)
COUNT_RECURSIVE (integer)
EXTR_OVERWRITE (integer)
EXTR_SKIP (integer)
EXTR_PREFIX_SAME (integer)
EXTR_PREFIX_ALL (integer)
EXTR_PREFIX_INVALID (integer)
EXTR_PREFIX_IF_EXISTS (integer)
EXTR_IF_EXISTS (integer)
EXTR_REFS (integer)
资源类型
对数组进行排序
数组


对数组进行排序

PHP 有一些用来排序数组的函数， 这个文档会把它们列出来。

主要区别有：

  • 有些函数基于 array 的键来排序， 而其他的基于值来排序的：$array['key'] = 'value';。
  • 排序之后键和值之间的关联关系是否能够保持， 是指排序之后数组的键可能 会被重置为数字型的（0,1,2 ...）。
  • 排序的顺序有：字母表顺序， 由低到高（升序）， 由高到低（降序），数字排序，自然排序，随机顺序或者用户自定义排序。
  • 注意：下列的所有排序函数都是直接作用于数组本身， 而不是返回一个新的有序的数组。
  • 以下函数对于数组中相等的元素，它们在排序后的顺序是未定义的。 （也即相等元素之间的顺序是不稳定的）。

排序函数属性
函数名称 | 排序依据 | 数组索引键保持 | 排序的顺序 | 相关函数
array_multisort() | 值 | 键值关联的保持，数字类型的不保持 | 第一个数组或者由选项指定 | array_walk()
asort() | 值 | 是 | 由低到高 | arsort()
arsort() | 值 | 是 | 由高到低 | asort()
krsort() | 键 | 是 | 由高到低 | ksort()
ksort() | 键 | 是 | 由低到高 | asort()
natcasesort() | 值 | 是 | 自然排序，大小写不敏感 | natsort()
natsort() | 值 | 是 | 自然排序 | natcasesort()
rsort() | 值 | 否 | 由高到低 | sort()
shuffle() | 值 | 否 | 随机 | array_rand()
sort() | 值 | 否 | 由高到低 | rsort()
uasort() | 值 | 是 | 由用户定义 | uksort()
uksort() | 键 | 是 | 由用户定义 | uasort()
usort() | 值 | 否 | 由用户定义 | uasort()

预定义常量
数组 函数
数组


数组 函数

参见

参考 is_array(), explode(),
implode(), split(),
preg_split(), and unset().

Table of Contents

  • array_change_key_case — 返回字符串键名全为小写或大写的数组
  • array_chunk — 将一个数组分割成多个
  • array_column — 返回数组中指定的一列
  • array_combine — 创建一个数组，用一个数组的值作为其键名，另一个数组的值作为其值
  • array_count_values — 统计数组中所有的值出现的次数
  • array_diff_assoc — 带索引检查计算数组的差集
  • array_diff_key — 使用键名比较计算数组的差集
  • array_diff_uassoc — 用用户提供的回调函数做索引检查来计算数组的差集
  • array_diff_ukey — 用回调函数对键名比较计算数组的差集
  • array_diff — 计算数组的差集
  • array_fill_keys — 使用指定的键和值填充数组
  • array_fill — 用给定的值填充数组
  • array_filter — 用回调函数过滤数组中的单元
  • array_flip — 交换数组中的键和值
  • array_intersect_assoc — 带索引检查计算数组的交集
  • array_intersect_key — 使用键名比较计算数组的交集
  • array_intersect_uassoc — 带索引检查计算数组的交集，用回调函数比较索引
  • array_intersect_ukey — 用回调函数比较键名来计算数组的交集
  • array_intersect — 计算数组的交集
  • array_key_exists — 检查给定的键名或索引是否存在于数组中
  • array_keys — 返回数组中部分的或所有的键名
  • array_map — 为数组的每个元素应用回调函数
  • array_merge_recursive — 递归地合并一个或多个数组
  • array_merge — 合并一个或多个数组
  • array_multisort — 对多个数组或多维数组进行排序
  • array_pad — 用值将数组填补到指定长度
  • array_pop — 将数组最后一个单元弹出（出栈）
  • array_product — 计算数组中所有值的乘积
  • array_push — 将一个或多个单元压入数组的末尾（入栈）
  • array_rand — 从数组中随机取出一个或多个单元
  • array_reduce — 用回调函数迭代地将数组简化为单一的值
  • array_replace_recursive — 使用传递的数组递归替换第一个数组的元素
  • array_replace — 使用传递的数组替换第一个数组的元素
  • array_reverse — 返回一个单元顺序相反的数组
  • array_search — 在数组中搜索给定的值，如果成功则返回相应的键名
  • array_shift — 将数组开头的单元移出数组
  • array_slice — 从数组中取出一段
  • array_splice — 把数组中的一部分去掉并用其它值取代
  • array_sum — 计算数组中所有值的和
  • array_udiff_assoc — 带索引检查计算数组的差集，用回调函数比较数据
  • array_udiff_uassoc — 带索引检查计算数组的差集，用回调函数比较数据和索引
  • array_udiff — 用回调函数比较数据来计算数组的差集
  • array_uintersect_assoc — 带索引检查计算数组的交集，用回调函数比较数据
  • array_uintersect_uassoc — 带索引检查计算数组的交集，用回调函数比较数据和索引
  • array_uintersect — 计算数组的交集，用回调函数比较数据
  • array_unique — 移除数组中重复的值
  • array_unshift — 在数组开头插入一个或多个单元
  • array_values — 返回数组中所有的值
  • array_walk_recursive — 对数组中的每个成员递归地应用用户函数
  • array_walk — 使用用户自定义函数对数组中的每个元素做回调处理
  • array — 新建一个数组
  • arsort — 对数组进行逆向排序并保持索引关系
  • asort — 对数组进行排序并保持索引关系
  • compact — 建立一个数组，包括变量名和它们的值
  • count — 计算数组中的单元数目或对象中的属性个数
  • current — 返回数组中的当前单元
  • each — 返回数组中当前的键／值对并将数组指针向前移动一步
  • end — 将数组的内部指针指向最后一个单元
  • extract — 从数组中将变量导入到当前的符号表
  • in_array — 检查数组中是否存在某个值
  • key_exists — 别名 array_key_exists
  • key — 从关联数组中取得键名
  • krsort — 对数组按照键名逆向排序
  • ksort — 对数组按照键名排序
  • list — 把数组中的值赋给一些变量
  • natcasesort — 用“自然排序”算法对数组进行不区分大小写字母的排序
  • natsort — 用“自然排序”算法对数组排序
  • next — 将数组中的内部指针向前移动一位
  • pos — current 的别名
  • prev — 将数组的内部指针倒回一位
  • range — 建立一个包含指定范围单元的数组
  • reset — 将数组的内部指针指向第一个单元
  • rsort — 对数组逆向排序
  • shuffle — 将数组打乱
  • sizeof — count 的别名
  • sort — 对数组排序
  • uasort — 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
  • uksort — 使用用户自定义的比较函数对数组中的键名进行排序
  • usort — 使用用户自定义的比较函数对数组中的值进行排序
对数组进行排序
array_change_key_case
数组


返回字符串键名全为小写或大写的数组

数组 函数
array_chunk
数组 函数
PHP Manual

array_change_key_case

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

array_change_key_case — 返回字符串键名全为小写或大写的数组

说明

array array_change_key_case ( array $input [, int $case = CASE_LOWER ] )

array_change_key_case() 将 input 数组中的所有键名改为全小写或大写。改变是根据后一个选项 case 参数来进行的。本函数不改变数字索引。

参数

input

需要操作的数组。

case

可以在这里用两个常量，CASE_UPPER 或 CASE_LOWER（默认值）。

返回值

返回一个键全是小写或者全是大写的数组；如果输入值（input）不是一个数组，那么返回FALSE

错误／异常

如果输入值（input）不是一个数组，就会抛出一个错误警告（E_WARNING）。

范例

Example #1 array_change_key_case()例一

<?php
$input_array = array("FirSt" => 1, "SecOnd" => 4);
print_r(array_change_key_case($input_array, CASE_UPPER));
?>

以上例程会输出：

Array
(
    [FIRST] => 1
    [SECOND] => 4
)

注释

Note:

如果一个数组中的多个键名经过本函数后变成一样的话（例如 "keY" 和 "kEY"），最后一个值将覆盖其它的值。

数组 函数
array_chunk
数组 函数


将一个数组分割成多个

array_change_key_case
array_column
数组 函数
PHP Manual

array_chunk

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

array_chunk — 将一个数组分割成多个

说明

array array_chunk ( array $input , int $size [, bool $preserve_keys = false ] )

将一个数组分割成多个数组，其中每个数组的单元数目由 size 决定。最后一个数组的单元数目可能会少于 size 个。

参数

input

需要操作的数组

size

每个数组的单元数目

preserve_keys

设为 TRUE，可以使 PHP 保留输入数组中原来的键名。如果你指定了 FALSE，那每个结果数组将用从零开始的新数字索引。默认值是 FALSE。

返回值

得到的数组是一个多维数组中的单元，其索引从零开始，每一维包含了 size 个元素。

错误／异常

如果 size 小于 1，会抛出一个 E_WARNING 错误并返回 NULL。

范例

Example #1 array_chunk() 例子

<?php
$input_array = array('a', 'b', 'c', 'd', 'e');
print_r(array_chunk($input_array, 2));
print_r(array_chunk($input_array, 2, true));
?>

以上例程会输出：

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => c
            [1] => d
        )

    [2] => Array
        (
            [0] => e
        )

)
Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [2] => c
            [3] => d
        )

    [2] => Array
        (
            [4] => e
        )

)

参见

  • array_slice() - 从数组中取出一段

array_change_key_case
array_column
数组 函数


返回数组中指定的一列

array_chunk
array_combine
数组 函数
PHP Manual

array_column

(PHP 5 >= 5.5.0, PHP 7)

array_column — 返回数组中指定的一列

说明

array array_column ( array $input , mixed $column_key [, mixed $index_key ] )

array_column() 返回input数组中键值为column_key的列， 如果指定了可选参数index_key，那么input数组中的这一列的值将作为返回数组中对应值的键。

参数

input

需要取出数组列的多维数组（或结果集）

column_key

需要返回值的列，它可以是索引数组的列索引，或者是关联数组的列的键。 也可以是NULL，此时将返回整个数组（配合index_key参数来重置数组键的时候，非常管用）

index_key

作为返回数组的索引/键的列，它可以是该列的整数索引，或者字符串键值。

返回值

从多维数组中返回单列数组

范例

Example #1 从结果集中取出first names列

<?php
// Array representing a possible record set returned from a database
$records = array(
    array(
        'id' => 2135,
        'first_name' => 'John',
        'last_name' => 'Doe',
    ),
    array(
        'id' => 3245,
        'first_name' => 'Sally',
        'last_name' => 'Smith',
    ),
    array(
        'id' => 5342,
        'first_name' => 'Jane',
        'last_name' => 'Jones',
    ),
    array(
        'id' => 5623,
        'first_name' => 'Peter',
        'last_name' => 'Doe',
    )
);

$first_names = array_column($records, 'first_name');
print_r($first_names);
?>

以上例程会输出：

Array
(
    [0] => John
    [1] => Sally
    [2] => Jane
    [3] => Peter
)

Example #2 从结果集中总取出last names列，用相应的id作为键值

<?php
// Using the $records array from Example #1
$last_names = array_column($records, 'last_name', 'id');
print_r($last_names);
?>

以上例程会输出：

Array
(
    [2135] => Doe
    [3245] => Smith
    [5342] => Jones
    [5623] => Doe
)

array_chunk
array_combine
数组 函数


创建一个数组，用一个数组的值作为其键名，另一个数组的值作为其值

array_column
array_count_values
数组 函数
PHP Manual

array_combine

(PHP 5, PHP 7)

array_combine — 创建一个数组，用一个数组的值作为其键名，另一个数组的值作为其值

说明

array array_combine ( array $keys , array $values )

返回一个 array，用来自 keys 数组的值作为键名，来自 values 数组的值作为相应的值。

参数

keys

将被作为新数组的键。非法的值将会被转换为字符串类型（string）。

values

将被作为数组的值。

返回值

返回合并的 array，如果两个数组的单元数不同则返回 FALSE。

错误／异常

如果作为keys的数组和作为values的数组的元素个数不一样，将会抛出一个警告错误（E_WARNING）。

更新日志

版本 | 说明
5.4.0 | （修复）早期版本中如果是空数组就报E_WARNING的错并且返回FALSE。

范例

Example #1 一个 array_combine() 简单的例子

<?php
$a = array('green', 'red', 'yellow');
$b = array('avocado', 'apple', 'banana');
$c = array_combine($a, $b);

print_r($c);
?>

以上例程会输出：

Array
(
    [green]  => avocado
    [red]    => apple
    [yellow] => banana
)

参见

  • array_merge() - 合并一个或多个数组
  • array_walk() - 使用用户自定义函数对数组中的每个元素做回调处理
  • array_values() - 返回数组中所有的值

array_column
array_count_values
数组 函数


统计数组中所有的值出现的次数

array_combine
array_diff_assoc
数组 函数
PHP Manual

array_count_values

(PHP 4, PHP 5, PHP 7)

array_count_values — 统计数组中所有的值出现的次数

说明

array array_count_values ( array $input )

array_count_values() 返回一个数组，该数组用 input 数组中的值作为键名，该值在 input 数组中出现的次数作为值。

参数

input

统计这个数组的值

返回值

返回一个关联数组，用 input 数组中的值作为键名，该值在数组中出现的次数作为值。

错误／异常

对数组里面的每个不是 string 和 integer 类型的元素抛出一个警告错误（E_WARNING）。

范例

Example #1 array_count_values() 例子

<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?>

以上例程会输出：

Array
(
    [1] => 2
    [hello] => 2
    [world] => 1
)

参见

  • count() - 计算数组中的单元数目或对象中的属性个数
  • array_unique() - 移除数组中重复的值
  • array_values() - 返回数组中所有的值
  • count_chars() - 返回字符串所用字符的信息

array_combine
array_diff_assoc
数组 函数


带索引检查计算数组的差集

array_count_values
array_diff_key
数组 函数
PHP Manual

array_diff_assoc

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

array_diff_assoc — 带索引检查计算数组的差集

说明

array array_diff_assoc ( array $array1 , array $array2 [, array $... ] )

array_diff_assoc() 返回一个数组，该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意和 array_diff() 不同的是键名也用于比较。

参数

array1

The array to compare from

array2

An array to compare against

...

More arrays to compare against

返回值

Returns an array containing all the values from array1 that are not present in any of the other arrays.

范例

Example #1 array_diff_assoc() 例子

上面的例子中可以看到键值对 "a" => "green" 在两个数组中都有，因此不在本函数的输出中。与此不同，键值对 0 => "red" 出现在输出中是因为第二个参数中的 "red" 的键名是 1。

<?php
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_diff_assoc($array1, $array2);
print_r($result);
?>

以上例程会输出：

Array
(
    [b] => brown
    [c] => blue
    [0] => red
)

Example #2 array_diff_assoc() example

键值对 key => value 中的两个值仅在 (string) $elem1 === (string) $elem2 时被认为相等。也就是说使用了严格检查，字符串的表达必须相同。

<?php
$array1 = array(0, 1, 2);
$array2 = array("00", "01", "2");
$result = array_diff_assoc($array1, $array2);
print_r($result);
?>

以上例程会输出：

Array
(
    [0] => 0
    [1] => 1
    )

注释

Note: 注意本函数只检查了多维数组中的一维。当然可以用 array_diff_assoc($array1[0], $array2[0]); 检查更深的维度。

参见

  • array_diff() - 计算数组的差集
  • array_intersect() - 计算数组的交集
  • array_intersect_assoc() - 带索引检查计算数组的交集

array_count_values
array_diff_key
数组 函数


使用键名比较计算数组的差集

array_diff_assoc
array_diff_uassoc
数组 函数
PHP Manual

array_diff_key

(PHP 5 >= 5.1.0, PHP 7)

array_diff_key — 使用键名比较计算数组的差集

说明

array array_diff_key ( array $array1 , array $array2 [, array $... ] )

根据 array1 中的键名和 array2 进行比较，返回不同键名的项。 本函数和 array_diff() 相同只除了比较是根据键名而不是值来进行的。

参数

array1

从这个数组进行比较

array2

针对此数组进行比较

...

更多比较数组

返回值

array_diff_key() 返回一个数组，该数组包括了所有出现在 array1 中但是未出现在任何其它参数数组中的键名的值。

范例

Example #1 array_diff_key() 例

在 key => value 对中的两个键名仅在 (string) $key1 === (string) $key2 时被认为相等。换句话说，执行的是严格类型检查，因此字符串的表达必须完全一样。

<?php
$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);

var_dump(array_diff_key($array1, $array2));
?>

以上例程会输出：

array(2) {
  ["red"]=>
  int(2)
  ["purple"]=>
  int(4)
}

注释

Note:

注意本函数只检查了多维数组中的一维。当然，可以用 array_diff_key($array1[0], $array2[0]); 来检查更深的维度。

参见

  • array_diff() - 计算数组的差集
  • array_udiff() - 用回调函数比较数据来计算数组的差集
  • array_diff_assoc() - 带索引检查计算数组的差集
  • array_diff_uassoc() - 用用户提供的回调函数做索引检查来计算数组的差集
  • array_udiff_assoc() - 带索引检查计算数组的差集，用回调函数比较数据
  • array_udiff_uassoc() - 带索引检查计算数组的差集，用回调函数比较数据和索引
  • array_diff_ukey() - 用回调函数对键名比较计算数组的差集
  • array_intersect() - 计算数组的交集
  • array_intersect_assoc() - 带索引检查计算数组的交集
  • array_intersect_uassoc() - 带索引检查计算数组的交集，用回调函数比较索引
  • array_intersect_key() - 使用键名比较计算数组的交集
  • array_intersect_ukey() - 用回调函数比较键名来计算数组的交集

array_diff_assoc
array_diff_uassoc
数组 函数


用用户提供的回调函数做索引检查来计算数组的差集

array_diff_key
array_diff_ukey
数组 函数
PHP Manual

array_diff_uassoc

(PHP 5, PHP 7)

array_diff_uassoc — 用用户提供的回调函数做索引检查来计算数组的差集

说明

array array_diff_uassoc ( array $array1 , array $array2 [, array $... ], callable $key_compare_func )

对比了 array1 和 array2 并返回不同之处。 注意和 array_diff() 不同的是键名也用于比较。

和 array_diff_assoc() 不同的是使用了用户自定义的回调函数，而不是内置的函数。

参数

array1

待比较的数组

array2

和这个数组进行比较

...

更多比较的数组

key_compare_func

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )

返回值

返回一个 array，该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。

范例

Example #1 array_diff_uassoc() 例子

上面的例子中 "a" => "green" 出现在两个数组中因此不在函数的输出中。但是 0 => "red" 却在输出中，因为第二个参数中的 "red" 的键名是 1。

<?php
function key_compare_func($a, $b)
{
    if ($a === $b) {
        return 0;
    }
    return ($a > $b)? 1:-1;
}

$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_diff_uassoc($array1, $array2, "key_compare_func");
print_r($result);
?>

以上例程会输出：

Array
(
    [b] => brown
    [c] => blue
    [0] => red
)

The equality of 2 indices is checked by the user supplied callback function.

注释

Note:

注意本函数只检查了多维数组中的一维。当然可以用 array_diff_uassoc($array1[0], $array2[0], "key_compare_func"); 检查更深的维度。

参见

  • array_diff() - 计算数组的差集
  • array_diff_assoc() - 带索引检查计算数组的差集
  • array_udiff() - 用回调函数比较数据来计算数组的差集
  • array_udiff_assoc() - 带索引检查计算数组的差集，用回调函数比较数据
  • array_udiff_uassoc() - 带索引检查计算数组的差集，用回调函数比较数据和索引
  • array_intersect() - 计算数组的交集
  • array_intersect_assoc() - 带索引检查计算数组的交集
  • array_uintersect() - 计算数组的交集，用回调函数比较数据
  • array_uintersect_assoc() - 带索引检查计算数组的交集，用回调函数比较数据
  • array_uintersect_uassoc() - 带索引检查计算数组的交集，用回调函数比较数据和索引

array_diff_key
array_diff_ukey
数组 函数


用回调函数对键名比较计算数组的差集

array_diff_uassoc
array_diff
数组 函数
PHP Manual

array_diff_ukey

(PHP 5 >= 5.1.0, PHP 7)

array_diff_ukey — 用回调函数对键名比较计算数组的差集

说明

array array_diff_ukey ( array $array1 , array $array2 [, array $ ... ], callable $key_compare_func )

array_diff_ukey() 返回一个数组，该数组包括了所有出现在 array1 中但是未出现在任何其它参数数组中的键名的值。注意关联关系保留不变。本函数和 array_diff() 相同只除了比较是根据键名而不是值来进行的。

此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于，等于，或大于第二个参数时必须分别返回一个小于零，等于零，或大于零的整数。

参数

array1

The array to compare from

array2

An array to compare against

...

More arrays to compare against

key_compare_func

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )

返回值

Returns an array containing all the entries from array1 that are not present in any of the other arrays.

范例

Example #1 array_diff_ukey() 例子

<?php
function key_compare_func($key1, $key2)
{
    if ($key1 == $key2)
        return 0;
    else if ($key1 > $key2)
        return 1;
    else
        return -1;
}

$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);

var_dump(array_diff_ukey($array1, $array2, 'key_compare_func'));
?>

以上例程会输出：

array(2) {
  ["red"]=>
  int(2)
  ["purple"]=>
  int(4)
}

注释

Note:

注意本函数只检查了多维数组中的一维。当然，可以用 array_diff_ukey($array1[0], $array2[0], 'callback_func'); 来检查更深的维度。

参见

  • array_diff() - 计算数组的差集
  • array_udiff() - 用回调函数比较数据来计算数组的差集
  • array_diff_assoc() - 带索引检查计算数组的差集
  • array_diff_uassoc() - 用用户提供的回调函数做索引检查来计算数组的差集
  • array_udiff_assoc() - 带索引检查计算数组的差集，用回调函数比较数据
  • array_udiff_uassoc() - 带索引检查计算数组的差集，用回调函数比较数据和索引
  • array_diff_key() - 使用键名比较计算数组的差集
  • array_intersect() - 计算数组的交集
  • array_intersect_assoc() - 带索引检查计算数组的交集
  • array_intersect_uassoc() - 带索引检查计算数组的交集，用回调函数比较索引
  • array_intersect_key() - 使用键名比较计算数组的交集
  • array_intersect_ukey() - 用回调函数比较键名来计算数组的交集

array_diff_uassoc
array_diff
数组 函数


计算数组的差集

array_diff_ukey
array_fill_keys
数组 函数
PHP Manual

array_diff

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

array_diff — 计算数组的差集

说明

array array_diff ( array $array1 , array $array2 [, array $... ] )

对比返回在 array1 中但是不在 array2 及任何其它参数数组中的值。

参数

array1

要被对比的数组

array2

和这个数组进行比较

...

更多相比较的数组

返回值

返回一个数组，该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变。

范例

Example #1 array_diff() 例子

<?php
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);

print_r($result);
?>

在 $array1 中多次出现的值一样处理，输出结果为：

Array
(
    [1] => blue
)

注释

Note:

两个单元仅在 (string) $elem1 === (string) $elem2 时被认为是相同的。也就是说，当字符串的表达是一样的时候。

Note:

注意本函数只检查了多维数组中的一维。当然可以用 array_diff($array1[0], $array2[0]); 检查更深的维度。

参见

  • array_diff_assoc() - 带索引检查计算数组的差集
  • array_intersect() - 计算数组的交集
  • array_intersect_assoc() - 带索引检查计算数组的交集

array_diff_ukey
array_fill_keys
数组 函数


使用指定的键和值填充数组

array_diff
array_fill
数组 函数
PHP Manual

array_fill_keys

(PHP 5 >= 5.2.0, PHP 7)

array_fill_keys — 使用指定的键和值填充数组

说明

array array_fill_keys ( array $keys , mixed $value )

使用 value 参数的值作为值，使用 keys 数组的值作为键来填充一个数组。

参数

keys

使用该数组的值作为键。非法值将被转换为字符串。

value

填充使用的值。

返回值

返回填充后的数组。

范例

Example #1 array_fill_keys() 范例

<?php
$keys = array('foo', 5, 10, 'bar');
$a = array_fill_keys($keys, 'banana');
print_r($a);
?>

以上例程会输出：

Array
(
    [foo] => banana
    [5] => banana
    [10] => banana
    [bar] => banana
)

参见

  • array_fill() - 用给定的值填充数组
  • array_combine() - 创建一个数组，用一个数组的值作为其键名，另一个数组的值作为其值

array_diff
array_fill
数组 函数


用给定的值填充数组

array_fill_keys
array_filter
数组 函数
PHP Manual

array_fill

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

array_fill — 用给定的值填充数组

说明

array array_fill ( int $start_index , int $num , mixed $value )

array_fill() 用 value 参数的值将一个数组填充 num 个条目，键名由 start_index 参数指定的开始。

参数

start_index

返回的数组的第一个索引值。

如果 start_index 是负数， 那么返回的数组的第一个索引将会是 start_index ，而后面索引则从0开始。 (参见 例子)。

num

插入元素的数量。 必须大于 0。

value

用来填充的值。

返回值

返回填充后的数组。

错误／异常

如果 num 少于一个，将会抛出 E_WARNING。

范例

Example #1 array_fill() 例子

<?php
$a = array_fill(5, 6, 'banana');
$b = array_fill(-2, 4, 'pear');
print_r($a);
print_r($b);
?>

以上例程会输出：

Array
(
    [5]  => banana
    [6]  => banana
    [7]  => banana
    [8]  => banana
    [9]  => banana
    [10] => banana
)
Array
(
    [-2] => pear
    [0] => pear
    [1] => pear
    [2] => pear
)

注释

参见手册上 数组 一节里关于负数的键的详细解释。

参见

  • array_fill_keys() - 使用指定的键和值填充数组
  • str_repeat() - 重复一个字符串
  • range() - 建立一个包含指定范围单元的数组

array_fill_keys
array_filter
数组 函数


用回调函数过滤数组中的单元

array_fill
array_flip
数组 函数
PHP Manual

array_filter

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

array_filter — 用回调函数过滤数组中的单元

说明

array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )

依次将 array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 TRUE，则 input 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。

参数

array

要循环的数组

callback

使用的回调函数

如果没有提供 callback 函数， 将删除 input 中所有等值为 FALSE 的条目。更多信息见转换为布尔值。

flag

决定callback接收的参数形式:

  • ARRAY_FILTER_USE_KEY - callback接受键名作为的唯一参数
  • ARRAY_FILTER_USE_BOTH - callback同时接受键名和键值

返回值

返回过滤后的数组。

范例

Example #1 array_filter() 例子

<?php
function odd($var)
{
    // returns whether the input integer is odd
    return($var & 1);
}

function even($var)
{
    // returns whether the input integer is even
    return(!($var & 1));
}

$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array(6, 7, 8, 9, 10, 11, 12);

echo "Odd :\n";
print_r(array_filter($array1, "odd"));
echo "Even:\n";
print_r(array_filter($array2, "even"));
?>

以上例程会输出：

Odd :
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Even:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)

Example #2 array_filter() 无 callback

<?php

$entry = array(
             0 => 'foo',
             1 => false,
             2 => -1,
             3 => null,
             4 => ''
          );

print_r(array_filter($entry));
?>

以上例程会输出：

Array
(
    [0] => foo
    [2] => -1
)

注释

Caution

用户不应在回调函数中修改数组本身。例如增加／删除单元或者对 array_filter() 正在作用的数组进行 unset。如果数组改变了，此函数的行为将不可预测。

参见

  • array_map() - 为数组的每个元素应用回调函数
  • array_reduce() - 用回调函数迭代地将数组简化为单一的值
  • array_walk() - 使用用户自定义函数对数组中的每个元素做回调处理

array_fill
array_flip
数组 函数


交换数组中的键和值

array_filter
array_intersect_assoc
数组 函数
PHP Manual

array_flip

(PHP 4, PHP 5, PHP 7)

array_flip — 交换数组中的键和值

说明

array array_flip ( array $trans )

array_flip() 返回一个反转后的 array，例如 trans 中的键名变成了值，而 trans 中的值成了键名。

注意 trans 中的值需要能够作为合法的键名，例如需要是 integer 或者 string。如果值的类型不对将发出一个警告，并且有问题的键／值对将不会反转。

如果同一个值出现了多次，则最后一个键名将作为它的值，所有其它的都丢失了。

参数

trans

要交换键/值对的数组。

返回值

成功时返回交换后的数组，如果失败返回 NULL。

范例

Example #1 array_flip() 例子

<?php
$trans = array_flip($trans);
$original = strtr($str, $trans);
?>

Example #2 array_flip() 例子：冲突

<?php
$trans = array("a" => 1, "b" => 1, "c" => 2);
$trans = array_flip($trans);
print_r($trans);
?>

现在 $trans 是：

Array
(
    [1] => b
    [2] => c
)

参见

  • array_values() - 返回数组中所有的值
  • array_keys() - 返回数组中部分的或所有的键名
  • array_reverse() - 返回一个单元顺序相反的数组

array_filter
array_intersect_assoc
数组 函数


带索引检查计算数组的交集

array_flip
array_intersect_key
数组 函数
PHP Manual

array_intersect_assoc

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

array_intersect_assoc — 带索引检查计算数组的交集

说明

array array_intersect_assoc ( array $array1 , array $array2 [, array $ ... ] )

array_intersect_assoc() 返回一个数组，该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意和 array_intersect() 不同的是键名也用于比较。

参数

array1

The array with master values to check.

array2

An array to compare values against.

array

要对比的数组变量的列表。

返回值

返回一个数组，该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。

范例

Example #1 array_intersect_assoc() 例子

<?php
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "b" => "yellow", "blue", "red");
$result_array = array_intersect_assoc($array1, $array2);
print_r($result_array);
?>

以上例程会输出：

Array
(
    [a] => green
)

上面例子中可以看到只有键值对 "a" => "green" 在两个数组中都存在从而被返回。值 "red" 没有被返回是因为在 $array1 中它的键名是 0 而在 $array2 中 "red" 的键名是 1，键 "b" 没有返回的原因是它的值和其他数组不同。

键值对 key => value 中的两个值仅在 (string) $elem1 === (string) $elem2 时被认为相等。也就是说使用了严格检查，字符串的表达必须相同。

参见

  • array_intersect() - 计算数组的交集
  • array_uintersect_assoc() - 带索引检查计算数组的交集，用回调函数比较数据
  • array_intersect_uassoc() - 带索引检查计算数组的交集，用回调函数比较索引
  • array_uintersect_uassoc() - 带索引检查计算数组的交集，用回调函数比较数据和索引
  • array_diff() - 计算数组的差集
  • array_diff_assoc() - 带索引检查计算数组的差集
array_flip
array_intersect_key
数组 函数


使用键名比较计算数组的交集

array_intersect_assoc
array_intersect_uassoc
数组 函数
PHP Manual

array_intersect_key

(PHP 5 >= 5.1.0, PHP 7)

array_intersect_key — 使用键名比较计算数组的交集

说明

array array_intersect_key ( array $array1 , array $array2 [, array $ ... ] )

array_intersect_key() 返回一个数组，该数组包含了所有出现在 array1 中并同时出现在所有其它参数数组中的键名的值。

参数

array1

The array with master keys to check.

array2

An array to compare keys against.

array

A variable list of arrays to compare.

返回值

Returns an associative array containing all the entries of array1 which have keys that are present in all arguments.

范例

Example #1 array_intersect_key() 例子

<?php
$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);

var_dump(array_intersect_key($array1, $array2));
?>

以上例程会输出：

array(2) {
  ["blue"]=>
  int(1)
  ["green"]=>
  int(3)
}

上例中可以看到只有 'blue' 和 'green' 两个键名出现在两个数组中，因此被返回。此外注意 'blue' 和 'green' 的值在两个数组中是不同的。但因为只检查键名，因此还是匹配。返回的值只是 array1 中的。

在 key => value 对中的两个键名仅在 (string) $key1 === (string) $key2 时被认为相等。换句话说，执行的是严格类型检查，因此字符串的表达必须完全一样。

参见

  • array_diff() - 计算数组的差集
  • array_udiff() - 用回调函数比较数据来计算数组的差集
  • array_diff_assoc() - 带索引检查计算数组的差集
  • array_diff_uassoc() - 用用户提供的回调函数做索引检查来计算数组的差集
  • array_udiff_assoc() - 带索引检查计算数组的差集，用回调函数比较数据
  • array_udiff_uassoc() - 带索引检查计算数组的差集，用回调函数比较数据和索引
  • array_diff_key() - 使用键名比较计算数组的差集
  • array_diff_ukey() - 用回调函数对键名比较计算数组的差集
  • array_intersect() - 计算数组的交集
  • array_intersect_assoc() - 带索引检查计算数组的交集
  • array_intersect_uassoc() - 带索引检查计算数组的交集，用回调函数比较索引
  • array_intersect_ukey() - 用回调函数比较键名来计算数组的交集

array_intersect_assoc
array_intersect_uassoc
数组 函数


带索引检查计算数组的交集，用回调函数比较索引

array_intersect_key
array_intersect_ukey
数组 函数
PHP Manual

array_intersect_uassoc

(PHP 5, PHP 7)

array_intersect_uassoc — 带索引检查计算数组的交集，用回调函数比较索引

说明

array array_intersect_uassoc ( array $array1 , array $array2 [, array $ ... ], callable $key_compare_func )

array_intersect_uassoc() 返回一个数组，该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意和 array_intersect() 不同的是键名也用于比较。

参数

array1

Initial array for comparison of the arrays.

array2

First array to compare keys against.

array

Variable list of array arguments to compare values against.

key_compare_func

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )

返回值

Returns the values of array1 whose values exist in all of the arguments.

范例

Example #1 array_intersect_uassoc() 例子

<?php
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "GREEN", "B" => "brown", "yellow", "red");

print_r(array_intersect_uassoc($array1, $array2, "strcasecmp"));
?>

以上例程会输出：

Array
(
    [b] => brown
)

参见

  • array_intersect() - 计算数组的交集
  • array_intersect_assoc() - 带索引检查计算数组的交集
  • array_uintersect_assoc() - 带索引检查计算数组的交集，用回调函数比较数据
  • array_uintersect_uassoc() - 带索引检查计算数组的交集，用回调函数比较数据和索引
  • array_intersect_key() - 使用键名比较计算数组的交集
  • array_intersect_ukey() - 用回调函数比较键名来计算数组的交集

array_intersect_key
array_intersect_ukey
数组 函数


用回调函数比较键名来计算数组的交集

array_intersect_uassoc
array_intersect
数组 函数
PHP Manual

array_intersect_ukey

(PHP 5 >= 5.1.0, PHP 7)

array_intersect_ukey — 用回调函数比较键名来计算数组的交集

说明

array array_intersect_ukey ( array $array1 , array $array2 [, array $... ], callable $key_compare_func )

array_intersect_ukey() 返回一个数组，该数组包含了所有出现在 array1 中并同时出现在所有其它参数数组中的键名的值。

参数

array1

Initial array for comparison of the arrays.

array2

First array to compare keys against.

array

Variable list of array arguments to compare keys against.

key_compare_func

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )

返回值

Returns the values of array1 whose keys exist in all the arguments.

范例

Example #1 array_intersect_ukey() 例子

<?php
function key_compare_func($key1, $key2)
{
    if ($key1 == $key2)
        return 0;
    else if ($key1 > $key2)
        return 1;
    else
        return -1;
}

$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);

var_dump(array_intersect_ukey($array1, $array2, 'key_compare_func'));
?>

以上例程会输出：

array(2) {
  ["blue"]=>
  int(1)
  ["green"]=>
  int(3)
}

上例中可以看到只有 'blue' 和 'green' 两个键名出现在两个数组中，因此被返回。此外注意 'blue' 和 'green' 的值在两个数组中是不同的。但因为只检查键名，因此还是匹配。返回的值只是 array1 中的。

参见

  • array_diff() - 计算数组的差集
  • array_udiff() - 用回调函数比较数据来计算数组的差集
  • array_diff_assoc() - 带索引检查计算数组的差集
  • array_diff_uassoc() - 用用户提供的回调函数做索引检查来计算数组的差集
  • array_udiff_assoc() - 带索引检查计算数组的差集，用回调函数比较数据
  • array_udiff_uassoc() - 带索引检查计算数组的差集，用回调函数比较数据和索引
  • array_diff_key() - 使用键名比较计算数组的差集
  • array_diff_ukey() - 用回调函数对键名比较计算数组的差集
  • array_intersect() - 计算数组的交集
  • array_intersect_assoc() - 带索引检查计算数组的交集
  • array_intersect_uassoc() - 带索引检查计算数组的交集，用回调函数比较索引
  • array_intersect_key() - 使用键名比较计算数组的交集

array_intersect_uassoc
array_intersect
数组 函数


计算数组的交集

array_intersect_ukey
array_key_exists
数组 函数
PHP Manual

array_intersect

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

array_intersect — 计算数组的交集

说明

array array_intersect ( array $array1 , array $array2 [, array $ ... ] )

array_intersect() 返回一个数组，该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。

参数

array1

The array with master values to check.

array2

An array to compare values against.

array

A variable list of arrays to compare.

返回值

返回一个数组，该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。

范例

Example #1 array_intersect() example

<?php
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
print_r($result);
?>

以上例程会输出：

Array
(
    [a] => green
    [0] => red
)

注释

Note: 两个单元仅在 (string) $elem1 === (string) $elem2 时被认为是相同的。也就是说，当字符串的表达是一样的时候。

参见

  • array_intersect_assoc() - 带索引检查计算数组的交集
  • array_diff() - 计算数组的差集
  • array_diff_assoc() - 带索引检查计算数组的差集

array_intersect_ukey
array_key_exists
数组 函数


检查给定的键名或索引是否存在于数组中

array_intersect
array_keys
数组 函数
PHP Manual

array_key_exists

(PHP 4 >= 4.0.7, PHP 5, PHP 7)

array_key_exists — 检查给定的键名或索引是否存在于数组中

说明

bool array_key_exists ( mixed $key , array $search )

array_key_exists() 在给定的 key 存在于数组中时返回 TRUE。key 可以是任何能作为数组索引的值。array_key_exists() 也可用于对象。

参数

key

要检查的键。

search

一个数组，包含待检查的键。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 array_key_exists() 例子

<?php
$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) {
    echo "The 'first' element is in the array";
}
?>

Example #2 array_key_exists() 与 isset() 的对比

isset() 对于数组中为 NULL 的值不会返回 TRUE，而 array_key_exists() 会。

<?php
$search_array = array('first' => null, 'second' => 4);

// returns false
isset($search_array['first']);

// returns true
array_key_exists('first', $search_array);
?>

注释

Note:

为了向下兼容，可以使用下列已废弃的别名： key_exists()

Note:

For backward compatibility reasons, array_key_exists() will also return TRUE if key is a property defined within an object given as search. This behaviour should not be relied upon, and care should be taken to ensure that search is an array.

To check whether a property exists in an object, use property_exists().

参见

  • isset() - 检测变量是否设置
  • array_keys() - 返回数组中部分的或所有的键名
  • in_array() - 检查数组中是否存在某个值
  • property_exists() - 检查对象或类是否具有该属性

array_intersect
array_keys
数组 函数


返回数组中部分的或所有的键名

array_key_exists
array_map
数组 函数
PHP Manual

array_keys

(PHP 4, PHP 5, PHP 7)

array_keys — 返回数组中部分的或所有的键名

说明

array array_keys ( array $array [, mixed $search_value [, bool $strict = false ]] )

array_keys() 返回 input 数组中的数字或者字符串的键名。

如果指定了可选参数 search_value，则只返回该值的键名。否则 input 数组中的所有键名都会被返回。

参数

input

一个数组，包含了要返回的键。

search_value

如果指定了这个参数，只有包含这些值的键才会返回。

strict

判断在搜索的时候是否该使用严格的比较（===）。

返回值

返回 input 里的所有键。

范例

Example #1 array_keys() 例子

<?php
$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));

$array = array("blue", "red", "green", "blue", "blue");
print_r(array_keys($array, "blue"));

$array = array("color" => array("blue", "red", "green"),
               "size"  => array("small", "medium", "large"));
print_r(array_keys($array));
?>

以上例程会输出：

Array
(
    [0] => 0
    [1] => color
)
Array
(
    [0] => 0
    [1] => 3
    [2] => 4
)
Array
(
    [0] => color
    [1] => size
)

参见

  • array_values() - 返回数组中所有的值
  • array_key_exists() - 检查给定的键名或索引是否存在于数组中
  • array_search() - 在数组中搜索给定的值，如果成功则返回相应的键名

array_key_exists
array_map
数组 函数


为数组的每个元素应用回调函数

array_keys
array_merge_recursive
数组 函数
PHP Manual

array_map

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

array_map — 为数组的每个元素应用回调函数

说明

array array_map ( callable $callback , array $array1 [, array $... ] )

array_map()：返回数组，是为 array1 每个元素应用 callback函数之后的数组。 callback 函数形参的数量和传给 array_map() 数组数量，两者必须一样。

参数

callback

回调函数，应用到每个数组里的每个元素。

array1

数组，遍历运行 callback 函数。

...

数组列表，每个都遍历运行 callback 函数。

返回值

返回数组，包含 callback 函数处理之后 array1 的所有元素。

范例

Example #1 array_map() 例子

<?php
function cube($n)
{
    return($n * $n * $n);
}

$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
print_r($b);
?>

这使得 $b 成为：

Array
(
    [0] => 1
    [1] => 8
    [2] => 27
    [3] => 64
    [4] => 125
)

Example #2 array_map() 使用匿名函数 (PHP 5.3.0 起)

<?php
$func = function($value) {
    return $value * 2;
};

print_r(array_map($func, range(1, 5)));
?>
Array
(
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 10
)

Example #3 array_map()：使用更多的数组

<?php
function show_Spanish($n, $m)
{
    return("The number $n is called $m in Spanish");
}

function map_Spanish($n, $m)
{
    return(array($n => $m));
}

$a = array(1, 2, 3, 4, 5);
$b = array("uno", "dos", "tres", "cuatro", "cinco");

$c = array_map("show_Spanish", $a, $b);
print_r($c);

$d = array_map("map_Spanish", $a , $b);
print_r($d);
?>

以上例程会输出：

// printout of $c
Array
(
    [0] => The number 1 is called uno in Spanish
    [1] => The number 2 is called dos in Spanish
    [2] => The number 3 is called tres in Spanish
    [3] => The number 4 is called cuatro in Spanish
    [4] => The number 5 is called cinco in Spanish
)

// printout of $d
Array
(
    [0] => Array
        (
            [1] => uno
        )

    [1] => Array
        (
            [2] => dos
        )

    [2] => Array
        (
            [3] => tres
        )

    [3] => Array
        (
            [4] => cuatro
        )

    [4] => Array
        (
            [5] => cinco
        )

)

传入两个及以上的数组时，它们元素数量将会相同。因为回调函数会并行地处理相互对应的元素。 如果几个数组的元素数量不一致：空元素会扩展短那个数组，直到长度和最长的数组一样。

此函数有个有趣的用法：传入 NULL 作为回调函数的名称，将创建多维数组（一个数组，内部包含数组。）

Example #4 多维数组：创建数组，内部包含数组

<?php
$a = array(1, 2, 3, 4, 5);
$b = array("one", "two", "three", "four", "five");
$c = array("uno", "dos", "tres", "cuatro", "cinco");

$d = array_map(null, $a, $b, $c);
print_r($d);
?>

以上例程会输出：

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => one
            [2] => uno
        )

    [1] => Array
        (
            [0] => 2
            [1] => two
            [2] => dos
        )

    [2] => Array
        (
            [0] => 3
            [1] => three
            [2] => tres
        )

    [3] => Array
        (
            [0] => 4
            [1] => four
            [2] => cuatro
        )

    [4] => Array
        (
            [0] => 5
            [1] => five
            [2] => cinco
        )

)

如果仅传入一个数组，键（key）会保留；传入多个数组，键（key）是整型数字的序列。

Example #5 array_map() 键（key）是 string

<?php
$arr = array("stringkey" => "value");
function cb1($a) {
    return array ($a);
}
function cb2($a, $b) {
    return array ($a, $b);
}
var_dump(array_map("cb1", $arr));
var_dump(array_map("cb2", $arr, $arr));
var_dump(array_map(null,  $arr));
var_dump(array_map(null, $arr, $arr));
?>

以上例程会输出：

array(1) {
  ["stringkey"]=>
  array(1) {
    [0]=>
    string(5) "value"
  }
}
array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(5) "value"
    [1]=>
    string(5) "value"
  }
}
array(1) {
  ["stringkey"]=>
  string(5) "value"
}
array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(5) "value"
    [1]=>
    string(5) "value"
  }
}

参见

  • array_filter() - 用回调函数过滤数组中的单元
  • array_reduce() - 用回调函数迭代地将数组简化为单一的值
  • array_walk() - 使用用户自定义函数对数组中的每个元素做回调处理
  • callback 类型的信息

array_keys
array_merge_recursive
数组 函数


递归地合并一个或多个数组

array_map
array_merge
数组 函数
PHP Manual

array_merge_recursive

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

array_merge_recursive — 递归地合并一个或多个数组

说明

array array_merge_recursive ( array $array1 [, array $... ] )

array_merge_recursive() 将一个或多个数组的单元合并起来，一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

如果输入的数组中有相同的字符串键名，则这些值会被合并到一个数组中去，这将递归下去，因此如果一个值本身是一个数组，本函数将按照相应的条目把它合并为另一个数组。然而，如果数组具有相同的数组键名，后一个值将不会覆盖原来的值，而是附加到后面。

参数

array1

要合并的初始数组。

...

数组变量列表，进行递归合并。

返回值

一个结果数组，其中的值合并自附加的参数。

范例

Example #1 array_merge_recursive() 例子

<?php
$ar1 = array("color" => array("favorite" => "red"), 5);
$ar2 = array(10, "color" => array("favorite" => "green", "blue"));
$result = array_merge_recursive($ar1, $ar2);
print_r($result);
?>

以上例程会输出：

Array
(
    [color] => Array
        (
            [favorite] => Array
                (
                    [0] => red
                    [1] => green
                )

            [0] => blue
        )

    [0] => 5
    [1] => 10
)

参见

  • array_merge() - 合并一个或多个数组

array_map
array_merge
数组 函数


合并一个或多个数组

array_merge_recursive
array_multisort
数组 函数
PHP Manual

array_merge

(PHP 4, PHP 5, PHP 7)

array_merge — 合并一个或多个数组

说明

array array_merge ( array $array1 [, array $... ] )

array_merge() 将一个或多个数组的单元合并起来，一个数组中的值附加在前一个数组的后面。返回作为结果的数组。

如果输入的数组中有相同的字符串键名，则该键名后面的值将覆盖前一个值。然而，如果数组包含数字键名，后面的值将不会覆盖原来的值，而是附加到后面。

如果只给了一个数组并且该数组是数字索引的，则键名会以连续方式重新索引。

参数

array1

Initial array to merge.

...

Variable list of arrays to merge.

返回值

返回结果数组。

更新日志

版本 说明
5.0.0
Warning

array_merge() 的行为在 PHP 5 中被修改了。和 PHP 4 不同，array_merge() 现在只接受 array 类型的参数。不过可以用强制转换来合并其它类型。请看下面的例子。

Example #1 array_merge() PHP 5 例子

<?php
$beginning = 'foo';
$end = array(1 => 'bar');
$result = array_merge((array)$beginning, (array)$end);
print_r($result);
?>

以上例程会输出：

    Array
    (
        [0] => foo
        [1] => bar
    )

范例

Example #2 array_merge() 例子

<?php
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
?>

以上例程会输出：

Array
(
    [color] => green
    [0] => 2
    [1] => 4
    [2] => a
    [3] => b
    [shape] => trapezoid
    [4] => 4
)

Example #3 Simple array_merge() 例子

<?php
$array1 = array();
$array2 = array(1 => "data");
$result = array_merge($array1, $array2);
?>

别忘了数字键名将会被重新编号！

Array
(
    [0] => data
)

如果你想完全保留原有数组并只想新的数组附加到后面，用 + 运算符：

<?php
$array1 = array(0 => 'zero_a', 2 => 'two_a', 3 => 'three_a');
$array2 = array(1 => 'one_b', 3 => 'three_b', 4 => 'four_b');
$result = $array1 + $array2;
var_dump($result);
?>

The keys from the first array will be preserved. If an array key exists in both arrays, then the element from the first array will be used and the matching key's element from the second array will be ignored.

array(5) {
  [0]=>
  string(6) "zero_a"
  [2]=>
  string(5) "two_a"
  [3]=>
  string(7) "three_a"
  [1]=>
  string(5) "one_b"
  [4]=>
  string(6) "four_b"
}

参见

  • array_merge_recursive() - 递归地合并一个或多个数组
  • array_combine() - 创建一个数组，用一个数组的值作为其键名，另一个数组的值作为其值
  • array operators

array_merge_recursive
array_multisort
数组 函数


对多个数组或多维数组进行排序

array_merge
array_pad
数组 函数
PHP Manual

array_multisort

(PHP 4, PHP 5, PHP 7)

array_multisort — 对多个数组或多维数组进行排序

说明

bool array_multisort ( array &$arr [, mixed $arg = SORT_ASC [, mixed $arg = SORT_REGULAR [, mixed $... ]]] )

array_multisort() 可以用来一次对多个数组进行排序，或者根据某一维或多维对多维数组进行排序。

关联（string）键名保持不变，但数字键名会被重新索引。

排序顺序标志：

  • SORT_ASC - 按照上升顺序排序
  • SORT_DESC - 按照下降顺序排序

排序类型标志：

  • SORT_REGULAR - 将项目按照通常方法比较
  • SORT_NUMERIC - 将项目按照数值比较
  • SORT_STRING - 将项目按照字符串比较

每个数组之后不能指定两个同类的排序标志。每个数组后指定的排序标志仅对该数组有效 - 在此之前为默认值 SORT_ASC 和 SORT_REGULAR。

输入数组被当成一个表的列并以行来排序——这类似于 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行（值）比较为相同的话就按照下一个输入数组中相应值的大小来排序，依此类推。

本函数的参数结构有些不同寻常，但是非常灵活。第一个参数必须是一个数组。接下来的每个参数可以是数组或者是下面列出的排序标志。

参数

arr

要排序的一个 array。

arg

接下来的每个参数可以是另一个 array 或者是为之前 array 排序标志选项参数： SORT_ASC, SORT_DESC, SORT_REGULAR, SORT_NUMERIC, SORT_STRING.

...

Additional arg's.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Sorting multiple arrays

<?php
$ar1 = array(10, 100, 100, 0);
$ar2 = array(1, 3, 2, 4);
array_multisort($ar1, $ar2);

var_dump($ar1);
var_dump($ar2);
?>

In this example, after sorting, the first array will contain 0, 10, 100, 100. The second array will contain 4, 1, 2, 3. The entries in the second array corresponding to the identical entries in the first array (100 and 100) were sorted as well.

array(4) {
  [0]=> int(0)
  [1]=> int(10)
  [2]=> int(100)
  [3]=> int(100)
}
array(4) {
  [0]=> int(4)
  [1]=> int(1)
  [2]=> int(2)
  [3]=> int(3)
}

Example #2 排序多维数组

<?php
$ar = array(
       array("10", 11, 100, 100, "a"),
       array(   1,  2, "2",   3,   1)
      );
array_multisort($ar[0], SORT_ASC, SORT_STRING,
                $ar[1], SORT_NUMERIC, SORT_DESC);
var_dump($ar);
?>

本例中在排序后，第一个数组将变成 "10"，100，100，11，"a"（被当作字符串以升序排列）。第二个数组将包含 1, 3, "2", 2, 1（被当作数字以降序排列）。

array(2) {
  [0]=> array(5) {
    [0]=> string(2) "10"
    [1]=> int(100)
    [2]=> int(100)
    [3]=> int(11)
    [4]=> string(1) "a"
  }
  [1]=> array(5) {
    [0]=> int(1)
    [1]=> int(3)
    [2]=> string(1) "2"
    [3]=> int(2)
    [4]=> int(1)
  }
}

Example #3 对数据库结果进行排序

本例中 data 数组中的每个单元表示一个表中的一行。这是典型的数据库记录的数据集合。

例子中的数据如下：

volume | edition
-------+--------
    67 |       2
    86 |       1
    85 |       6
    98 |       2
    86 |       6
    67 |       7

数据全都存放在名为 data 的数组中。这通常是通过循环从数据库取得的结果，例如 mysql_fetch_assoc()。

<?php
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
?>

本例中将把 volume 降序排列，把 edition 升序排列。

现在有了包含有行的数组，但是 array_multisort() 需要一个包含列的数组，因此用以下代码来取得列，然后排序。

<?php
// 取得列的列表
foreach ($data as $key => $row) {
    $volume[$key]  = $row['volume'];
    $edition[$key] = $row['edition'];
}

// 将数据根据 volume 降序排列，根据 edition 升序排列
// 把 $data 作为最后一个参数，以通用键排序
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
?>

数据集合现在排好序了，结果如下：

volume | edition
-------+--------
    98 |       2
    86 |       1
    86 |       6
    85 |       6
    67 |       2
    67 |       7

Example #4 不区分大小写字母排序

SORT_STRING 和 SORT_REGULAR 都是区分大小写字母的，大写字母会排在小写字母之前。

要进行不区分大小写的排序，就要按照原数组的小写字母拷贝来排序。

<?php
$array = array('Alpha', 'atomic', 'Beta', 'bank');
$array_lowercase = array_map('strtolower', $array);

array_multisort($array_lowercase, SORT_ASC, SORT_STRING, $array);

print_r($array);
?>

以上例程会输出：

Array
(
    [0] => Alpha
    [1] => atomic
    [2] => bank
    [3] => Beta
)

【译者注】本函数相当有用，为有助于理解，请再看下面这个例子：

Example #5 名次排列

<?php
$grade = array("score" => array(70, 95, 70.0, 60, "70"),
               "name" => array("Zhang San", "Li Si", "Wang Wu",
                               "Zhao Liu", "Liu Qi"));
array_multisort($grade["score"], SORT_NUMERIC, SORT_DESC,
                // 将分数作为数值，由高到低排序
                $grade["name"], SORT_STRING, SORT_ASC);
                // 将名字作为字符串，由小到大排序
var_dump($grade);
?>

以上例程会输出：

array(2) {
  ["score"]=>
  array(5) {
    [0]=>
    int(95)
    [1]=>
    string(2) "70"
    [2]=>
    float(70)
    [3]=>
    int(70)
    [4]=>
    int(60)
  }
  ["name"]=>
  array(5) {
    [0]=>
    string(5) "Li Si"
    [1]=>
    string(6) "Liu Qi"
    [2]=>
    string(7) "Wang Wu"
    [3]=>
    string(9) "Zhang San"
    [4]=>
    string(8) "Zhao Liu"
  }
}

本例中对包含成绩的数组 $grade 按照分数（score）由高到低进行排序，分数相同的人则按照名字（name）由小到大排序。排序后李四 95 分为第一名，赵六 60 分为第五名没有异议。张三、王五和刘七都是 70 分，他们的名次则由其姓名的字母顺序排列，Liu 在前，Wang 在后而 Zhang 在最后。为了区别，三个 70 分分别用了整数，浮点数和字符串来表示，可以在程序输出中清楚地看到它们排序的结果。

参见

  • usort() - 使用用户自定义的比较函数对数组中的值进行排序
  • 数组排序函数对比

array_merge
array_pad
数组 函数


用值将数组填补到指定长度

array_multisort
array_pop
数组 函数
PHP Manual

array_pad

(PHP 4, PHP 5, PHP 7)

array_pad — 用值将数组填补到指定长度

说明

array array_pad ( array $input , int $pad_size , mixed $pad_value )

array_pad() 返回 input 的一个拷贝，并用 pad_value 将其填补到 pad_size 指定的长度。如果 pad_size 为正，则填补到数组的右侧，如果为负则从左侧开始填补。如果 pad_size 的绝对值小于或等于 input 数组的长度则没有任何填补。有可能一次最多填补 1048576 个单元。

参数

input

需要被填充的原始数组。

pad_size

新数组的长度。

pad_value

将被填充的值，只有在 input 的现有长度小于 pad_size 的长度时才有效。

返回值

返回 input 用 pad_value 填充到 pad_size 指定的长度之后的一个副本。 如果 pad_size 为正，则填补到数组的右侧，如果为负则从左侧开始填补。 如果 pad_size 的绝对值小于或等于 input 数组的长度则没有任何填补。

范例

Example #1 array_pad() 例子

<?php
$input = array(12, 10, 9);

$result = array_pad($input, 5, 0);
// result is array(12, 10, 9, 0, 0)

$result = array_pad($input, -7, -1);
// result is array(-1, -1, -1, -1, 12, 10, 9)

$result = array_pad($input, 2, "noop");
// not padded
?>

参见

  • array_fill() - 用给定的值填充数组
  • range() - 建立一个包含指定范围单元的数组

array_multisort
array_pop
数组 函数


将数组最后一个单元弹出（出栈）

array_pad
array_product
数组 函数
PHP Manual

array_pop

(PHP 4, PHP 5, PHP 7)

array_pop — 将数组最后一个单元弹出（出栈）

说明

mixed array_pop ( array &$array )

array_pop() 弹出并返回 array 数组的最后一个单元，并将数组 array 的长度减一。如果 array 为空（或者不是数组）将返回 NULL。 此外如果被调用不是一个数则会产生一个 Warning。

Note: 使用此函数后会重置（reset()）array 指针。

参数

array

需要做出栈的数组。

返回值

返回 array 的最后一个值。如果 array 是空（如果不是一个数组），将会返回 NULL 。

范例

Example #1 array_pop() 例子

<?php
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_pop($stack);
print_r($stack);
?>

经过此操作后，$stack 将只有 3 个单元：

Array
(
    [0] => orange
    [1] => banana
    [2] => apple
)

并且 rasberry 将被赋给 $fruit。

参见

  • array_push() - 将一个或多个单元压入数组的末尾（入栈）
  • array_shift() - 将数组开头的单元移出数组
  • array_unshift() - 在数组开头插入一个或多个单元

array_pad
array_product
数组 函数


计算数组中所有值的乘积

array_pop
array_push
数组 函数
PHP Manual

array_product

(PHP 5 >= 5.1.0, PHP 7)

array_product — 计算数组中所有值的乘积

说明

number array_product ( array $array )

array_product() 以整数或浮点数返回一个数组中所有值的乘积。

参数

array

这个数组。

返回值

以整数或浮点数返回一个数组中所有值的乘积。

范例

Example #1 array_product() 例子

<?php

$a = array(2, 4, 6, 8);
echo "product(a) = " . array_product($a) . "\n";
echo "product(array()) = " . array_product(array()) . "\n";

?>

以上例程会输出：

product(a) = 384
product(array()) = 1

array_pop
array_push
数组 函数


将一个或多个单元压入数组的末尾（入栈）

array_product
array_rand
数组 函数
PHP Manual

array_push

(PHP 4, PHP 5, PHP 7)

array_push — 将一个或多个单元压入数组的末尾（入栈）

说明

int array_push ( array &$array , mixed $var [, mixed $... ] )

array_push() 将 array 当成一个栈，并将传入的变量压入 array 的末尾。array 的长度将根据入栈变量的数目增加。和如下效果相同：

<?php
$array[] = $var;
?>
并对每个 var 重复以上动作。

Note: 如果用 array_push() 来给数组增加一个单元，还不如用 $array[] = ，因为这样没有调用函数的额外负担。

Note: 如果第一个参数不是数组，array_push() 将发出一条警告。这和 $var[] 的行为不同，后者会新建一个数组。

参数

array

输入的数组。

var

要压入的值。

返回值

返回处理之后数组的元素个数。

范例

Example #1 array_push() 例子

<?php
$stack = array("orange", "banana");
array_push($stack, "apple", "raspberry");
print_r($stack);
?>

以上例程会输出：

Array
(
    [0] => orange
    [1] => banana
    [2] => apple
    [3] => raspberry
)

参见

  • array_pop() - 将数组最后一个单元弹出（出栈）
  • array_shift() - 将数组开头的单元移出数组
  • array_unshift() - 在数组开头插入一个或多个单元

array_product
array_rand
数组 函数


从数组中随机取出一个或多个单元

array_push
array_reduce
数组 函数
PHP Manual

array_rand

(PHP 4, PHP 5, PHP 7)

array_rand — 从数组中随机取出一个或多个单元

说明

mixed array_rand ( array $input [, int $num_req = 1 ] )

从数组中取出一个或多个随机的单元，并返回随机条目的一个或多个键。

参数

input

输入的数组。

num_req

指明了你想取出多少个单元。如果指定的数目超过了数组里的数量将会产生一个 E_WARNING 级别的错误。

返回值

如果你只取出一个，array_rand() 返回一个随机单元的键名，否则就返回一个包含随机键名的数组。这样你就可以随机从数组中取出键名和值。

更新日志

版本 | 说明
5.2.10 | The resulting array of keys is no longer shuffled.
4.2.0 | 随机数发生器自动进行播种。

范例

Example #1 array_rand() 例子

<?php
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand($input, 2);
echo $input[$rand_keys[0]] . "\n";
echo $input[$rand_keys[1]] . "\n";
?>

参见

  • shuffle() - 将数组打乱

array_push
array_reduce
数组 函数


用回调函数迭代地将数组简化为单一的值

array_rand
array_replace_recursive
数组 函数
PHP Manual

array_reduce

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

array_reduce — 用回调函数迭代地将数组简化为单一的值

说明

mixed array_reduce ( array $input , callable $function [, mixed $initial = NULL ] )

array_reduce() 将回调函数 function 迭代地作用到 input 数组中的每一个单元中，从而将数组简化为单一的值。

参数

input

The input array.

function

The callback function.

mixed callback ( mixed &$result , mixed $item )
initial

如果指定了可选参数 initial，该参数将被当成是数组中的第一个值来处理，或者如果数组为空的话就作为最终返回值。

返回值

返回结果值。

initial 参数，array_reduce() 返回 NULL。

更新日志

版本 | 说明
5.3.0 | Changed initial to allow mixed, previously integer.

范例

Example #1 array_reduce() 例子

<?php
function rsum($v, $w)
{
    $v += $w;
    return $v;
}

function rmul($v, $w)
{
    $v *= $w;
    return $v;
}

$a = array(1, 2, 3, 4, 5);
$x = array();
$b = array_reduce($a, "rsum");
$c = array_reduce($a, "rmul", 10);
$d = array_reduce($x, "rsum", "No data to reduce");
?>

这将使 $b 的值为 15，$c 的值为 1200（= 10*1*2*3*4*5），以及 $d 的值为 1。

参见

  • array_filter() - 用回调函数过滤数组中的单元
  • array_map() - 为数组的每个元素应用回调函数
  • array_unique() - 移除数组中重复的值
  • array_count_values() - 统计数组中所有的值出现的次数

array_rand
array_replace_recursive
数组 函数


使用传递的数组递归替换第一个数组的元素

array_reduce
array_replace
数组 函数
PHP Manual

array_replace_recursive

(PHP 5 >= 5.3.0, PHP 7)

array_replace_recursive — 使用传递的数组递归替换第一个数组的元素

说明

array array_replace_recursive ( array $array1 , array $array2 [, array $... ] )

array_replace_recursive() 使用后面数组元素的值替换数组 array1 的值。 如果一个键存在于第一个数组同时也存在于第二个数组，它的值将被第二个数组中的值替换。 如果一个键存在于第二个数组，但是不存在于第一个数组，则会在第一个数组中创建这个元素。 如果一个键仅存在于第一个数组，它将保持不变。 如果传递了多个替换数组，它们将被按顺序依次处理，后面的数组将覆盖之前的值。

array_replace_recursive() 是递归的：它将遍历数组并将相同的处理应用到数组的内部值。

如果数组 array1 中的值是标量，它的值将被第二个数组 array2 中的值替换，它可能是一个标量或者数组。如果 array1 和 array2 中的值都是数组，array_replace_recursive() 函数将递归地替换它们各自的值。

参数

array1

替换该数组的值。

array2

从此数组中提取替换值。

...

可选项。更多包含要提取元素的数组。

返回值

返回一个数组。如果发生错误，将返回 NULL。

范例

Example #1 array_replace_recursive() 范例

<?php
$base = array('citrus' => array( "orange") , 'berries' => array("blackberry", "raspberry"), );
$replacements = array('citrus' => array('pineapple'), 'berries' => array('blueberry'));

$basket = array_replace_recursive($base, $replacements);
print_r($basket);

$basket = array_replace($base, $replacements);
print_r($basket);
?>

以上例程会输出：

Array
(
    [citrus] => Array
        (
            [0] => pineapple
        )

    [berries] => Array
        (
            [0] => blueberry
            [1] => raspberry
        )

)
Array
(
    [citrus] => Array
        (
            [0] => pineapple
        )

    [berries] => Array
        (
            [0] => blueberry
        )

)

Example #2 array_replace_recursive() 及其递归表现

<?php
$base = array('citrus' => array("orange") , 'berries' => array("blackberry", "raspberry"), 'others' => 'banana' );
$replacements = array('citrus' => 'pineapple', 'berries' => array('blueberry'), 'others' => array('litchis'));
$replacements2 = array('citrus' => array('pineapple'), 'berries' => array('blueberry'), 'others' => 'litchis');

$basket = array_replace_recursive($base, $replacements, $replacements2);
print_r($basket);

?>

以上例程会输出：

Array
(
    [citrus] => Array
        (
            [0] => pineapple
        )

    [berries] => Array
        (
            [0] => blueberry
            [1] => raspberry
        )

    [others] => litchis
)

参见

  • array_replace() - 使用传递的数组替换第一个数组的元素
  • array_merge_recursive() - 递归地合并一个或多个数组

array_reduce
array_replace
数组 函数


使用传递的数组替换第一个数组的元素

array_replace_recursive
array_reverse
数组 函数
PHP Manual

array_replace

(PHP 5 >= 5.3.0, PHP 7)

array_replace — 使用传递的数组替换第一个数组的元素

说明

array array_replace ( array $array1 , array $array2 [, array $... ] )

array_replace() 函数使用后面数组元素相同 key 的值替换 array1 数组的值。如果一个键存在于第一个数组同时也存在于第二个数组，它的值将被第二个数组中的值替换。如果一个键存在于第二个数组，但是不存在于第一个数组，则会在第一个数组中创建这个元素。如果一个键仅存在于第一个数组，它将保持不变。如果传递了多个替换数组，它们将被按顺序依次处理，后面的数组将覆盖之前的值。

array_replace() 是非递归的：它将第一个数组的值进行替换而不管第二个数组中是什么类型。

参数

array1

替换该数组的值。

array2

从此数组中提取替换值。

...

包含要提取元素的更多数组。 后面的数组里的值会覆盖前面的值。

返回值

返回一个数组。如果发生错误，将返回 NULL。

范例

Example #1 array_replace() 范例

<?php
$base = array("orange", "banana", "apple", "raspberry");
$replacements = array(0 => "pineapple", 4 => "cherry");
$replacements2 = array(0 => "grape");

$basket = array_replace($base, $replacements, $replacements2);
print_r($basket);
?>

以上例程会输出：

Array
(
    [0] => grape
    [1] => banana
    [2] => apple
    [3] => raspberry
    [4] => cherry
)

参见

  • array_replace_recursive() - 使用传递的数组递归替换第一个数组的元素
  • array_merge() - 合并一个或多个数组

array_replace_recursive
array_reverse
数组 函数


返回一个单元顺序相反的数组

array_replace
array_search
数组 函数
PHP Manual

array_reverse

(PHP 4, PHP 5, PHP 7)

array_reverse — 返回一个单元顺序相反的数组

说明

array array_reverse ( array $array [, bool $preserve_keys = false ] )

array_reverse() 接受数组 array 作为输入并返回一个单元为相反顺序的新数组。

参数

array

输入的数组。

preserve_keys

如果设置为 TRUE 会保留数字的键。 非数字的键则不受这个设置的影响，总是会被保留。

返回值

返回反转后的数组。

更新日志

版本 | 说明
4.0.3 | 添加了参数 preserve_keys 。

范例

Example #1 array_reverse() 例子

<?php
$input  = array("php", 4.0, array("green", "red"));
$result = array_reverse($input);
$result_keyed = array_reverse($input, true);
?>

这将使 $result 和 $result_keyed 具有相同的单元，但是注意键名的区别。$result 和 $result_keyed 的打印输出显示分别为：

Array
(
    [0] => Array
        (
            [0] => green
            [1] => red
        )

    [1] => 4
    [2] => php
)
Array
(
    [2] => Array
        (
            [0] => green
            [1] => red
        )

    [1] => 4
    [0] => php
)

参见

  • array_flip() - 交换数组中的键和值

array_replace
array_search
数组 函数


在数组中搜索给定的值，如果成功则返回相应的键名

array_reverse
array_shift
数组 函数
PHP Manual

array_search

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

array_search — 在数组中搜索给定的值，如果成功则返回相应的键名

说明

mixed array_search ( mixed $needle , array $haystack [, bool $strict = false ] )

在 haystack 中搜索 needle 参数。

参数

needle

搜索的值。

Note:

如果 needle 是字符串，则比较以区分大小写的方式进行。

haystack

这个数组。

strict

如果可选的第三个参数 strict 为 TRUE，则 array_search() 将在 haystack 中检查完全相同的元素。 这意味着同样检查 haystack 里 needle 的 类型，并且对象需是同一个实例。

返回值

如果找到了 needle 则返回它的键，否则返回 FALSE。

如果 needle 在 haystack 中出现不止一次，则返回第一个匹配的键。要返回所有匹配值的键，应该用 array_keys() 加上可选参数 search_value 来代替。

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

更新日志

版本 | 说明
5.3.0 | As with all internal PHP functions as of 5.3.0, array_search() returns NULL if invalid parameters are passed to it.
4.2.0 | 在 PHP 4.2.0 之前，array_search() 在失败时返回 NULL 而不是 FALSE。

范例

Example #1 array_search() 例子

<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array);   // $key = 1;
?>

参见

  • array_keys() - 返回数组中部分的或所有的键名
  • array_values() - 返回数组中所有的值
  • array_key_exists() - 检查给定的键名或索引是否存在于数组中
  • in_array() - 检查数组中是否存在某个值

array_reverse
array_shift
数组 函数


将数组开头的单元移出数组

array_search
array_slice
数组 函数
PHP Manual

array_shift

(PHP 4, PHP 5, PHP 7)

array_shift — 将数组开头的单元移出数组

说明

mixed array_shift ( array &$array )

array_shift() 将 array 的第一个单元移出并作为结果返回，将 array 的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始计数，文字键名将不变。

Note: 使用此函数后会重置（reset()）array 指针。

参数

array

输入的数组。

返回值

返回移出的值，如果 array 为 空或不是一个数组则返回 NULL。

范例

Example #1 array_shift() 例子

<?php
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_shift($stack);
print_r($stack);
?>

以上例程会输出：

Array
(
    [0] => banana
    [1] => apple
    [2] => raspberry
)

并且 orange 被赋给了 $fruit。

参见

  • array_unshift() - 在数组开头插入一个或多个单元
  • array_push() - 将一个或多个单元压入数组的末尾（入栈）
  • array_pop() - 将数组最后一个单元弹出（出栈）

array_search
array_slice
数组 函数


从数组中取出一段

array_shift
array_splice
数组 函数
PHP Manual

array_slice

(PHP 4, PHP 5, PHP 7)

array_slice — 从数组中取出一段

说明

array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )

array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。

参数

array

输入的数组。

offset

如果 offset 非负，则序列将从 array 中的此偏移量开始。如果 offset 为负，则序列将从 array 中距离末端这么远的地方开始。

length

如果给出了 length 并且为正，则序列中将具有这么多的单元。如果给出了 length 并且为负，则序列将终止在距离数组末端这么远的地方。如果省略，则序列将从 offset 开始一直到 array 的末端。

preserve_keys

注意 array_slice() 默认会重新排序并重置数组的数字索引。你可以通过将 preserve_keys 设为 TRUE 来改变此行为。

返回值

返回其中一段。

更新日志

版本 | 说明
5.0.2 | 增加了可选参数 preserve_keys 。

范例

Example #1 array_slice() 例子

<?php
$input = array("a", "b", "c", "d", "e");

$output = array_slice($input, 2);      // returns "c", "d", and "e"
$output = array_slice($input, -2, 1);  // returns "d"
$output = array_slice($input, 0, 3);   // returns "a", "b", and "c"

// note the differences in the array keys
print_r(array_slice($input, 2, -1));
print_r(array_slice($input, 2, -1, true));
?>

以上例程会输出：

Array
(
    [0] => c
    [1] => d
)
Array
(
    [2] => c
    [3] => d
)

参见

  • array_splice() - 把数组中的一部分去掉并用其它值取代
  • unset() - 释放给定的变量
  • array_chunk() - 将一个数组分割成多个

array_shift
array_splice
数组 函数


把数组中的一部分去掉并用其它值取代

array_slice
array_sum
数组 函数
PHP Manual

array_splice

(PHP 4, PHP 5, PHP 7)

array_splice — 把数组中的一部分去掉并用其它值取代

说明

array array_splice ( array &$input , int $offset [, int $length = 0 [, mixed $replacement ]] )

把 input 数组中由 offset 和 length 指定的单元去掉，如果提供了 replacement 参数，则用其中的单元取代。

注意 input 中的数字键名不被保留。

Note: If replacement is not an array, it will be typecast to one (i.e. (array) $parameter). This may result in unexpected behavior when using an object or NULL replacement.

参数

input

输入的数组。

offset

如果 offset 为正，则从 input 数组中该值指定的偏移量开始移除。如果 offset 为负，则从 input 末尾倒数该值指定的偏移量开始移除。

length

如果省略 length，则移除数组中从 offset 到结尾的所有部分。如果指定了 length 并且为正值，则移除这么多单元。如果指定了 length 并且为负值，则移除从 offset 到数组末尾倒数 length 为止中间所有的单元。小窍门：当给出了 replacement 时要移除从 offset 到数组末尾所有单元时，用 count($input) 作为 length。

replacement

如果给出了 replacement 数组，则被移除的单元被此数组中的单元替代。

如果 offset 和 length 的组合结果是不会移除任何值，则 replacement 数组中的单元将被插入到 offset 指定的位置。 注意替换数组中的键名不保留。

如果用来替换 replacement 只有一个单元，那么不需要给它加上 array()，除非该单元本身就是一个数组、一个对象或者 NULL。

返回值

返回一个包含有被移除单元的数组。

范例

Example #1 array_splice() 例子

<?php
$input = array("red", "green", "blue", "yellow");
array_splice($input, 2);
// $input is now array("red", "green")

$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, -1);
// $input is now array("red", "yellow")

$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, count($input), "orange");
// $input is now array("red", "orange")

$input = array("red", "green", "blue", "yellow");
array_splice($input, -1, 1, array("black", "maroon"));
// $input is now array("red", "green",
//          "blue", "black", "maroon")

$input = array("red", "green", "blue", "yellow");
array_splice($input, 3, 0, "purple");
// $input is now array("red", "green",
//          "blue", "purple", "yellow");
?>

Example #2 array_splice() 例子

以下表达式以同样方式修改了 $input：

<?php
array_push($input, $x, $y);
array_splice($input, count($input), 0, array($x, $y));
array_pop($input);
array_splice($input, -1);
array_shift($input);
array_splice($input, 0, 1);
array_unshift($input, $x, $y);
array_splice($input, 0, 0, array($x, $y));
$input[$x] = $y; // 对于键名和偏移量等值的数组
array_splice($input, $x, 1, $y);
?>

参见

  • array_slice() - 从数组中取出一段
  • unset() - 释放给定的变量
  • array_merge() - 合并一个或多个数组

array_slice
array_sum
数组 函数


计算数组中所有值的和

array_splice
array_udiff_assoc
数组 函数
PHP Manual

array_sum

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

array_sum — 计算数组中所有值的和

说明

number array_sum ( array $array )

array_sum() 将数组中的所有值的和以整数或浮点数的结果返回。

参数

array

输入的数组。

返回值

所有值的和以整数或浮点数的结果返回。

更新日志

版本 | 说明
4.2.1 | PHP 4.2.1 之前的版本修改了传入的数组本身，将其中的字符串值转换成数值（大多数情况下都转换成了零，根据具体值而定）。

范例

Example #1 array_sum() 例子

<?php
$a = array(2, 4, 6, 8);
echo "sum(a) = " . array_sum($a) . "\n";

$b = array("a" => 1.2, "b" => 2.3, "c" => 3.4);
echo "sum(b) = " . array_sum($b) . "\n";
?>

以上例程会输出：

sum(a) = 20
sum(b) = 6.9

array_splice
array_udiff_assoc
数组 函数


带索引检查计算数组的差集，用回调函数比较数据

array_sum
array_udiff_uassoc
数组 函数
PHP Manual

array_udiff_assoc

(PHP 5, PHP 7)

array_udiff_assoc — 带索引检查计算数组的差集，用回调函数比较数据

说明

array array_udiff_assoc ( array $array1 , array $array2 [, array $ ... ], callable $data_compare_func )

此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于，等于，或大于第二个参数时必须分别返回一个小于零，等于零，或大于零的整数。

Note: 注意本函数只检查了多维数组中的一维。当然，可以用 array_udiff_assoc($array1[0], $array2[0], "some_comparison_func"); 来检查更深的维度。

参数

array1

第一个数组。

array2

第二个数组。

data_compare_func

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )

返回值

array_udiff_assoc() 返回一个数组，该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意和 array_diff() 与 array_udiff() 不同的是键名也用于比较。数组数据的比较是用用户提供的回调函数进行的。在此方面和 array_diff_assoc() 的行为正好相反，后者是用内部函数进行比较的。

范例

Example #1 array_udiff_assoc() 例子

<?php
class cr {
    private $priv_member;
    function cr($val)
    {
        $this->priv_member = $val;
    }

    static function comp_func_cr($a, $b)
    {
        if ($a->priv_member === $b->priv_member) return 0;
        return ($a->priv_member > $b->priv_member)? 1:-1;
    }
}

$a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1=> new cr(4), 2 => new cr(-15),);
$b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr(3), 1=> new cr(4), 2 => new cr(-15),);

$result = array_udiff_assoc($a, $b, array("cr", "comp_func_cr"));
print_r($result);
?>

以上例程会输出：

Array
(
    [0.1] => cr Object
        (
            [priv_member:private] => 9
        )

    [0.5] => cr Object
        (
            [priv_member:private] => 12
        )

    [0] => cr Object
        (
            [priv_member:private] => 23
        )
)

上例中可以看到键值对 "1" => new cr(4) 同时出现在两个数组中因此不在本函数的输出中。

参见

  • array_diff() - 计算数组的差集
  • array_diff_assoc() - 带索引检查计算数组的差集
  • array_diff_uassoc() - 用用户提供的回调函数做索引检查来计算数组的差集
  • array_udiff() - 用回调函数比较数据来计算数组的差集
  • array_udiff_uassoc() - 带索引检查计算数组的差集，用回调函数比较数据和索引
  • array_intersect() - 计算数组的交集
  • array_intersect_assoc() - 带索引检查计算数组的交集
  • array_uintersect() - 计算数组的交集，用回调函数比较数据
  • array_uintersect_assoc() - 带索引检查计算数组的交集，用回调函数比较数据
  • array_uintersect_uassoc() - 带索引检查计算数组的交集，用回调函数比较数据和索引

array_sum
array_udiff_uassoc
数组 函数


带索引检查计算数组的差集，用回调函数比较数据和索引

array_udiff_assoc
array_udiff
数组 函数
PHP Manual

array_udiff_uassoc

(PHP 5, PHP 7)

array_udiff_uassoc — 带索引检查计算数组的差集，用回调函数比较数据和索引

说明

array array_udiff_uassoc ( array $array1 , array $array2 [, array $ ... ], callable $data_compare_func , callable $key_compare_func )

array_udiff_uassoc() 返回一个数组，该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。

注意和 array_diff() 与 array_udiff() 不同的是键名也用于比较。

参数

array1

第一个数组。

array2

第二个数组。

data_compare_func

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )
key_compare_func

对键名（索引）的检查也是由回调函数 key_compare_func 进行的。这和 array_udiff_assoc() 的行为不同，后者是用内部函数比较索引的。

返回值

Returns an array containing all the values from array1 that are not present in any of the other arguments.

范例

Example #1 array_udiff_uassoc() 例子

<?php
class cr {
    private $priv_member;
    function cr($val)
    {
        $this->priv_member = $val;
    }

    static function comp_func_cr($a, $b)
    {
        if ($a->priv_member === $b->priv_member) return 0;
        return ($a->priv_member > $b->priv_member)? 1:-1;
    }

    static function comp_func_key($a, $b)
    {
        if ($a === $b) return 0;
        return ($a > $b)? 1:-1;
    }
}
$a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1=> new cr(4), 2 => new cr(-15),);
$b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr(3), 1=> new cr(4), 2 => new cr(-15),);

$result = array_udiff_uassoc($a, $b, array("cr", "comp_func_cr"), array("cr", "comp_func_key"));
print_r($result);
?>

以上例程会输出：

Array
(
    [0.1] => cr Object
        (
            [priv_member:private] => 9
        )

    [0.5] => cr Object
        (
            [priv_member:private] => 12
        )

    [0] => cr Object
        (
            [priv_member:private] => 23
        )
)

在上例中键值对 "1" => new cr(4) 同时出现在两个数组中，因此不在本函数的输出中。要记住必须提供两个回调函数。

注释

Note: 注意本函数只检查了多维数组中的一维。当然，可以用 array_udiff_uassoc($array1[0], $array2[0], "data_compare_func", "key_compare_func"); 来检查更深的维度。

参见

  • array_diff() - 计算数组的差集
  • array_diff_assoc() - 带索引检查计算数组的差集
  • array_udiff() - 用回调函数比较数据来计算数组的差集
  • array_udiff_assoc() - 带索引检查计算数组的差集，用回调函数比较数据
  • array_intersect() - 计算数组的交集
  • array_intersect_assoc() - 带索引检查计算数组的交集
  • array_uintersect() - 计算数组的交集，用回调函数比较数据
  • array_uintersect_assoc() - 带索引检查计算数组的交集，用回调函数比较数据
  • array_uintersect_uassoc() - 带索引检查计算数组的交集，用回调函数比较数据和索引

array_udiff_assoc
array_udiff
数组 函数


用回调函数比较数据来计算数组的差集

array_udiff_uassoc
array_uintersect_assoc
数组 函数
PHP Manual

array_udiff

(PHP 5, PHP 7)

array_udiff — 用回调函数比较数据来计算数组的差集

说明

array array_udiff ( array $array1 , array $array2 [, array $ ... ], callable $data_compare_func )

array_udiff() 返回一个数组，该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保持不变。数据的比较是用 data_compare_func 进行的。如果认为第一个参数小于，等于，或大于第二个参数时必须分别返回一个小于零，等于零，或大于零的整数。这和 array_diff() 不同，后者使用了内部函数来比较数据。

参数

array1

第一个数组。

array2

第二个数组。

data_compare_func

回调对照函数。

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )

返回值

Returns an array containing all the values of array1 that are not present in any of the other arguments.

范例

Example #1 array_udiff() 例子

<?php
class cr {
    private $priv_member;
    function cr($val)
    {
        $this->priv_member = $val;
    }

    static function comp_func_cr($a, $b)
    {
        if ($a->priv_member === $b->priv_member) return 0;
        return ($a->priv_member > $b->priv_member)? 1:-1;
    }
}
$a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1=> new cr(4), 2 => new cr(-15),);
$b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr(3), 1=> new cr(4), 2 => new cr(-15),);

$result = array_udiff($a, $b, array("cr", "comp_func_cr"));
print_r($result);
?>

以上例程会输出：

Array
(
    [0.5] => cr Object
        (
            [priv_member:private] => 12
        )

    [0] => cr Object
        (
            [priv_member:private] => 23
        )

)

注释

Note: 注意本函数只检查了多维数组中的一维。当然，可以用 array_udiff($array1[0], $array2[0], "data_compare_func"); 来检查更深的维度。

参见

  • array_diff() - 计算数组的差集
  • array_diff_assoc() - 带索引检查计算数组的差集
  • array_diff_uassoc() - 用用户提供的回调函数做索引检查来计算数组的差集
  • array_udiff_assoc() - 带索引检查计算数组的差集，用回调函数比较数据
  • array_udiff_uassoc() - 带索引检查计算数组的差集，用回调函数比较数据和索引
  • array_intersect() - 计算数组的交集
  • array_intersect_assoc() - 带索引检查计算数组的交集
  • array_uintersect() - 计算数组的交集，用回调函数比较数据
  • array_uintersect_assoc() - 带索引检查计算数组的交集，用回调函数比较数据
  • array_uintersect_uassoc() - 带索引检查计算数组的交集，用回调函数比较数据和索引

array_udiff_uassoc
array_uintersect_assoc
数组 函数


带索引检查计算数组的交集，用回调函数比较数据

array_udiff
array_uintersect_uassoc
数组 函数
PHP Manual

array_uintersect_assoc

(PHP 5, PHP 7)

array_uintersect_assoc — 带索引检查计算数组的交集，用回调函数比较数据

说明

array array_uintersect_assoc ( array $array1 , array $array2 [, array $ ... ], callable $data_compare_func )

此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于，等于，或大于第二个参数时必须分别返回一个小于零，等于零，或大于零的整数。

注意和 array_uintersect() 不同的是键名也要比较。数据是用回调函数比较的。

参数

array1

第一个数组。

array2

第二个数组。

data_compare_func

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )

返回值

返回一个数组，该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。

范例

Example #1 array_uintersect_assoc() 例子

<?php
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "GREEN", "B" => "brown", "yellow", "red");

print_r(array_uintersect_assoc($array1, $array2, "strcasecmp"));
?>

以上例程会输出：

Array
(
    [a] => green
)

参见

  • array_uintersect() - 计算数组的交集，用回调函数比较数据
  • array_intersect_assoc() - 带索引检查计算数组的交集
  • array_intersect_uassoc() - 带索引检查计算数组的交集，用回调函数比较索引
  • array_uintersect_uassoc() - 带索引检查计算数组的交集，用回调函数比较数据和索引

array_udiff
array_uintersect_uassoc
数组 函数


带索引检查计算数组的交集，用回调函数比较数据和索引

array_uintersect_assoc
array_uintersect
数组 函数
PHP Manual

array_uintersect_uassoc

(PHP 5, PHP 7)

array_uintersect_uassoc — 带索引检查计算数组的交集，用回调函数比较数据和索引

说明

array array_uintersect_uassoc ( array $array1 , array $array2 [, array $ ... ], callable $data_compare_func , callable $key_compare_func )

通过额外的索引检查、回调函数比较数据和索引来返回多个数组的交集。注意和 array_uintersect() 不同的是键名也要比较。数据和索引都是用回调函数比较的。

参数

array1

第一个数组。

array2

第二个数组。

data_compare_func

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )
key_compare_func

键名比较的回调函数。

返回值

返回一个数组，该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。

范例

Example #1 array_uintersect_uassoc() 例子

<?php
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "GREEN", "B" => "brown", "yellow", "red");

print_r(array_uintersect_uassoc($array1, $array2, "strcasecmp", "strcasecmp"));
?>

以上例程会输出：

Array
(
    [a] => green
    [b] => brown
)

参见

  • array_uintersect() - 计算数组的交集，用回调函数比较数据
  • array_intersect_assoc() - 带索引检查计算数组的交集
  • array_intersect_uassoc() - 带索引检查计算数组的交集，用回调函数比较索引
  • array_uintersect_assoc() - 带索引检查计算数组的交集，用回调函数比较数据

array_uintersect_assoc
array_uintersect
数组 函数


计算数组的交集，用回调函数比较数据

array_uintersect_uassoc
array_unique
数组 函数
PHP Manual

array_uintersect

(PHP 5, PHP 7)

array_uintersect — 计算数组的交集，用回调函数比较数据

说明

array array_uintersect ( array $array1 , array $array2 [, array $ ... ], callable $data_compare_func )

array_uintersect() 返回一个数组，该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。数据比较是用回调函数进行的。 此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于，等于，或大于第二个参数时必须分别返回一个小于零，等于零，或大于零的整数。

参数

array1

第一个数组。

array2

第二个数组。

data_compare_func

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )

返回值

Returns an array containing all the values of array1 that are present in all the arguments.

范例

Example #1 array_uintersect() 例子

<?php
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "GREEN", "B" => "brown", "yellow", "red");

print_r(array_uintersect($array1, $array2, "strcasecmp"));
?>

以上例程会输出：

Array
(
    [a] => green
    [b] => brown
    [0] => red
)

参见

  • array_intersect() - 计算数组的交集
  • array_intersect_assoc() - 带索引检查计算数组的交集
  • array_uintersect_assoc() - 带索引检查计算数组的交集，用回调函数比较数据
  • array_uintersect_uassoc() - 带索引检查计算数组的交集，用回调函数比较数据和索引

array_uintersect_uassoc
array_unique
数组 函数


移除数组中重复的值

array_uintersect
array_unshift
数组 函数
PHP Manual

array_unique

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

array_unique — 移除数组中重复的值

说明

array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )

array_unique() 接受 array 作为输入并返回没有重复值的新数组。

注意键名保留不变。array_unique() 先将值作为字符串排序，然后对每个值只保留第一个遇到的键名，接着忽略所有后面的键名。这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留。

Note: 当且仅当 (string) $elem1 === (string) $elem2 时两个单元被认为相同。就是说，当字符串的表达一样时。 第一个单元将被保留。

参数

array

输入的数组。

sort_flags

The optional second parameter sort_flags may be used to modify the sorting behavior using these values:

Sorting type flags:

  • SORT_REGULAR - compare items normally (don't change types)
  • SORT_NUMERIC - compare items numerically
  • SORT_STRING - compare items as strings
  • SORT_LOCALE_STRING - compare items as strings, based on the current locale.

返回值

Returns the filtered array.

更新日志

版本 | 说明
5.2.10 | Changed the default value of sort_flags back to SORT_STRING.
5.2.9 | Added the optional sort_flags defaulting to SORT_REGULAR. Prior to 5.2.9, this function used to sort the array with SORT_STRING internally.

范例

Example #1 array_unique() 例子

<?php
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique($input);
print_r($result);
?>

以上例程会输出：

Array
(
    [a] => green
    [0] => red
    [1] => blue
)

Example #2 array_unique() 和类型

<?php
$input = array(4, "4", "3", 4, 3, "3");
$result = array_unique($input);
var_dump($result);
?>

以上例程会输出：

array(2) {
  [0] => int(4)
  [2] => string(1) "3"
}

参见

  • array_count_values() - 统计数组中所有的值出现的次数

注释

Note: Note that array_unique() is not intended to work on multi dimensional arrays.

array_uintersect
array_unshift
数组 函数


在数组开头插入一个或多个单元

array_unique
array_values
数组 函数
PHP Manual

array_unshift

(PHP 4, PHP 5, PHP 7)

array_unshift — 在数组开头插入一个或多个单元

说明

int array_unshift ( array &$array , mixed $var [, mixed $... ] )

array_unshift() 将传入的单元插入到 array 数组的开头。注意单元是作为整体被插入的，因此传入单元将保持同样的顺序。所有的数值键名将修改为从零开始重新计数，所有的文字键名保持不变。

参数

array

输入的数组。

var

开头插入的变量。

返回值

返回 array 数组新的单元数目。

范例

Example #1 array_unshift() 例子

<?php
$queue = array("orange", "banana");
array_unshift($queue, "apple", "raspberry");
print_r($queue);
?>

以上例程会输出：

Array
(
    [0] => apple
    [1] => raspberry
    [2] => orange
    [3] => banana
)

参见

  • array_shift() - 将数组开头的单元移出数组
  • array_push() - 将一个或多个单元压入数组的末尾（入栈）
  • array_pop() - 将数组最后一个单元弹出（出栈）

array_unique
array_values
数组 函数


返回数组中所有的值

array_unshift
array_walk_recursive
数组 函数
PHP Manual

array_values

(PHP 4, PHP 5, PHP 7)

array_values — 返回数组中所有的值

说明

array array_values ( array $input )

array_values() 返回 input 数组中所有的值并给其建立数字索引。

参数

input

数组。

返回值

返回含所有值的索引数组。

范例

Example #1 array_values() 例子

<?php
$array = array("size" => "XL", "color" => "gold");
print_r(array_values($array));
?>

以上例程会输出：

Array
(
    [0] => XL
    [1] => gold
)

参见

  • array_keys() - 返回数组中部分的或所有的键名

array_unshift
array_walk_recursive
数组 函数


对数组中的每个成员递归地应用用户函数

array_values
array_walk
数组 函数
PHP Manual

array_walk_recursive

(PHP 5, PHP 7)

array_walk_recursive — 对数组中的每个成员递归地应用用户函数

说明

bool array_walk_recursive ( array &$input , callable $funcname [, mixed $userdata = NULL ] )

将用户自定义函数 funcname 应用到 array 数组中的每个单元。本函数会递归到更深层的数组中去。

参数

input

输入的数组。

funcname

典型情况下 funcname 接受两个参数。input 参数的值作为第一个，键名作为第二个。

Note:

如果 funcname 需要直接作用于数组中的值，则给 funcname 的第一个参数指定为引用。这样任何对这些单元的改变也将会改变原始数组本身。

userdata

如果提供了可选参数 userdata，将被作为第三个参数传递给 callback funcname。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 array_walk_recursive() example

<?php
$sweet = array('a' => 'apple', 'b' => 'banana');
$fruits = array('sweet' => $sweet, 'sour' => 'lemon');

function test_print($item, $key)
{
    echo "$key holds $item\n";
}

array_walk_recursive($fruits, 'test_print');
?>

以上例程会输出：

a holds apple
b holds banana
sour holds lemon

注意上例中的键 'sweet' 并没有显示出来。任何其值为 array 的键都不会被传递到回调函数中去。

参见

  • array_walk() - 使用用户自定义函数对数组中的每个元素做回调处理
  • callback 类型的信息

array_values
array_walk
数组 函数


使用用户自定义函数对数组中的每个元素做回调处理

array_walk_recursive
array
数组 函数
PHP Manual

array_walk

(PHP 4, PHP 5, PHP 7)

array_walk — 使用用户自定义函数对数组中的每个元素做回调处理

说明

bool array_walk ( array &$array , callable $callback [, mixed $userdata = NULL ] )

将用户自定义函数 funcname 应用到 array 数组中的每个单元。

array_walk() 不会受到 array 内部数组指针的影响。array_walk() 会遍历整个数组而不管指针的位置。

参数

array

输入的数组。

callback

典型情况下 callback 接受两个参数。array 参数的值作为第一个，键名作为第二个。

Note:

如果 callback 需要直接作用于数组中的值，则给 callback 的第一个参数指定为引用。这样任何对这些单元的改变也将会改变原始数组本身。

Note:

参数数量超过预期，传入内置函数 (例如 strtolower())， 将抛出警告，所以不适合当做 funcname。

只有 array 的值才可以被改变，用户不应在回调函数中改变该数组本身的结构。例如增加/删除单元，unset 单元等等。如果 array_walk() 作用的数组改变了，则此函数的的行为未经定义，且不可预期。

userdata

如果提供了可选参数 userdata，将被作为第三个参数传递给 callback funcname。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

如果 callback 函数需要的参数比给出的多，则每次 array_walk() 调用 callback 时都会产生一个 E_WARNING 级的错误。

范例

Example #1 array_walk() 例子

<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");

function test_alter(&$item1, $key, $prefix)
{
    $item1 = "$prefix: $item1";
}

function test_print($item2, $key)
{
    echo "$key. $item2<br />\n";
}

echo "Before ...:\n";
array_walk($fruits, 'test_print');

array_walk($fruits, 'test_alter', 'fruit');
echo "... and after:\n";

array_walk($fruits, 'test_print');
?>

以上例程会输出：

Before ...:
d. lemon
a. orange
b. banana
c. apple
... and after:
d. fruit: lemon
a. fruit: orange
b. fruit: banana
c. fruit: apple

参见

  • array_walk_recursive() - 对数组中的每个成员递归地应用用户函数
  • iterator_apply() - 为迭代器中每个元素调用一个用户自定义函数
  • list() - 把数组中的值赋给一些变量
  • each() - 返回数组中当前的键／值对并将数组指针向前移动一步
  • call_user_func_array() - 调用回调函数，并把一个数组参数作为回调函数的参数
  • array_map() - 为数组的每个元素应用回调函数
  • callback 类型的信息
  • foreach

array_walk_recursive
array
数组 函数


新建一个数组

array_walk
arsort
数组 函数
PHP Manual

array

(PHP 4, PHP 5, PHP 7)

array — 新建一个数组

说明

array array ([ mixed $... ] )

创建一个数组。关于数组是什么的信息请阅读数组一节。

参数

...

语法"index => values"，用逗号分开，定义了索引和值。索引可以是字符串或数字。如果省略了索引，会自动产生从 0 开始的整数索引。如果索引是整数，则下一个产生的索引将是目前最大的整数索引 + 1。注意如果定义了两个完全一样的索引，则后面一个会覆盖前一个。

在最后一个定义的数组项目之后加一个逗号虽然不常见，却是合法的语法。

返回值

返回根据参数建立的数组。参数可以用 => 运算符给出索引。关于数组是什么的信息请阅读数组一节。

范例

下面的例子演示了怎样建立一个二维数组，怎样给相应的数组指定键名，以及怎样在普通数组中略过和继续数字索引。

Example #1 array() 例子

<?php
$fruits = array (
    "fruits"  => array("a" => "orange", "b" => "banana", "c" => "apple"),
    "numbers" => array(1, 2, 3, 4, 5, 6),
    "holes"   => array("first", 5 => "second", "third")
);
?>

Example #2 array() 的自动索引

<?php
$array = array(1, 1, 1, 1,  1, 8 => 1,  4 => 1, 19, 3 => 13);
print_r($array);
?>

以上例程会输出：

Array
(
    [0] => 1
    [1] => 1
    [2] => 1
    [3] => 13
    [4] => 1
    [8] => 1
    [9] => 19
)

注意索引 3 被定义了两次，保留了最后的值 13。索引 4 在 索引 8 之后定义，下一个自动生成的索引（值为 19 那个）为 9，因为最大的索引是 8。

本例建立了从 1 开始的数组。

Example #3 从 1 开始索引的 array()

<?php
$firstquarter = array(1 => 'January', 'February', 'March');
print_r($firstquarter);
?>

以上例程会输出：

Array
(
    [1] => January
    [2] => February
    [3] => March
)

在 Perl 中，可以访问在双引号内的数组的值。但在 PHP 中需要将数组用花括号括起来。

Example #4 访问双引号内的数组

<?php

$foo = array('bar' => 'baz');
echo "Hello {$foo['bar']}!"; // Hello baz!

?>

注释

Note:

array() 是一个语言结构，用于字面上表示数组，不是常规的函数。

参见

  • array_pad() - 用值将数组填补到指定长度
  • list() - 把数组中的值赋给一些变量
  • count() - 计算数组中的单元数目或对象中的属性个数
  • range() - 建立一个包含指定范围单元的数组
  • foreach
  • The array type

array_walk
arsort
数组 函数


对数组进行逆向排序并保持索引关系

array
asort
数组 函数
PHP Manual

arsort

(PHP 4, PHP 5, PHP 7)

arsort — 对数组进行逆向排序并保持索引关系

说明

bool arsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

本函数对数组进行排序，数组的索引保持和单元的关联。

主要用于对那些单元顺序很重要的结合数组进行排序。

参数

array

输入的数组。

sort_flags

可以用可选的参数 sort_flags 改变排序的行为，详情见 sort()。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 arsort() 例子

<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
arsort($fruits);
foreach ($fruits as $key => $val) {
    echo "$key = $val\n";
}
?>

以上例程会输出：

a = orange
d = lemon
b = banana
c = apple

fruits 被按照字母顺序逆向排序，并且单元的索引关系不变。

参见

  • asort() - 对数组进行排序并保持索引关系
  • 数组排序函数对比

array
asort
数组 函数


对数组进行排序并保持索引关系

arsort
compact
数组 函数
PHP Manual

asort

(PHP 4, PHP 5, PHP 7)

asort — 对数组进行排序并保持索引关系

说明

bool asort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

本函数对数组进行排序，数组的索引保持和单元的关联。主要用于对那些单元顺序很重要的结合数组进行排序。

参数

array

输入的数组。

sort_flags

可以用可选的参数 sort_flags 改变排序的行为，详情见 sort()。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 asort() 例子

<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
asort($fruits);
foreach ($fruits as $key => $val) {
    echo "$key = $val\n";
}
?>

以上例程会输出：

c = apple
b = banana
d = lemon
a = orange

fruits 被按照字母顺序排序，并且单元的索引关系不变。

参见

  • arsort() - 对数组进行逆向排序并保持索引关系
  • 数组排序函数对比

arsort
compact
数组 函数


建立一个数组，包括变量名和它们的值

asort
count
数组 函数
PHP Manual

compact

(PHP 4, PHP 5, PHP 7)

compact — 建立一个数组，包括变量名和它们的值

说明

array compact ( mixed $varname [, mixed $... ] )

创建一个包含变量与其值的数组。

对每个参数，compact() 在当前的符号表中查找该变量名并将它添加到输出的数组中，变量名成为键名而变量的内容成为该键的值。简单说，它做的事和 extract() 正好相反。返回将所有变量添加进去后的数组。

任何没有变量名与之对应的字符串都被略过。

参数

varname

compact() 接受可变的参数数目。每个参数可以是一个包括变量名的字符串或者是一个包含变量名的数组，该数组中还可以包含其它单元内容为变量名的数组， compact() 可以递归处理。

返回值

返回输出的数组，包含了添加的所有变量。

范例

Example #1 compact() 例子

<?php
$city  = "San Francisco";
$state = "CA";
$event = "SIGGRAPH";

$location_vars = array("city", "state");

$result = compact("event", "nothing_here", $location_vars);
print_r($result);
?>

以上例程会输出：

Array
(
    [event] => SIGGRAPH
    [city] => San Francisco
    [state] => CA
)

注释

Note: Gotcha

因为可变变量也许不能在函数内部用于 PHP 的超全局数组，此时不能将超全局数组传递入 compact() 中。

参见

  • extract() - 从数组中将变量导入到当前的符号表

asort
count
数组 函数


计算数组中的单元数目或对象中的属性个数

compact
current
数组 函数
PHP Manual

count

(PHP 4, PHP 5, PHP 7)

count — 计算数组中的单元数目或对象中的属性个数

说明

int count ( mixed $var [, int $mode = COUNT_NORMAL ] )

统计一个数组里的所有元素，或者一个对象里的东西。

对于对象，如果安装了 SPL，可以通过实现 Countable 接口来调用 count()。该接口只有一个方法 Countable::count()，此方法返回 count() 函数的返回值。

关于 PHP 中如何实现和使用数组可以参考手册中数组章节中的详细描述。

参数

var

数组或者对象。

mode

如果可选的 mode 参数设为 COUNT_RECURSIVE（或 1），count() 将递归地对数组计数。对计算多维数组的所有单元尤其有用。mode 的默认值是 0。count() 识别不了无限递归。

返回值

返回 var 中的单元数目。 如果 var 不是数组类型或者实现了 Countable 接口的对象，将返回 1，有一个例外，如果 var 是 NULL 则结果是 0。

Caution

count() 对没有初始化的变量返回 0，但对于空的数组也会返回 0。用 isset() 来测试变量是否已经初始化。

更新日志

版本 | 说明
4.2.0 | 添加了可选的 mode 参数。

范例

Example #1 count() 例子

<?php
$a[0] = 1;
$a[1] = 3;
$a[2] = 5;
$result = count($a);
// $result == 3

$b[0]  = 7;
$b[5]  = 9;
$b[10] = 11;
$result = count($b);
// $result == 3

$result = count(null);
// $result == 0

$result = count(false);
// $result == 1
?>

Example #2 递归 count() 例子

<?php
$food = array('fruits' => array('orange', 'banana', 'apple'),
              'veggie' => array('carrot', 'collard', 'pea'));

// recursive count
echo count($food, COUNT_RECURSIVE); // output 8

// normal count
echo count($food); // output 2

?>

参见

  • is_array() - 检测变量是否是数组
  • isset() - 检测变量是否设置
  • strlen() - 获取字符串长度

compact
current
数组 函数


返回数组中的当前单元

count
each
数组 函数
PHP Manual

current

(PHP 4, PHP 5, PHP 7)

current — 返回数组中的当前单元

说明

mixed current ( array &$array )

每个数组中都有一个内部的指针指向它"当前的"单元，初始指向插入到数组中的第一个单元。

参数

array

这个数组。

返回值

current() 函数返回当前被内部指针指向的数组单元的值，并不移动指针。如果内部指针指向超出了单元列表的末端，current() 返回 FALSE。

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

范例

Example #1 使用 current() 系列函数的例子

<?php
$transport = array('foot', 'bike', 'car', 'plane');
$mode = current($transport); // $mode = 'foot';
$mode = next($transport);    // $mode = 'bike';
$mode = current($transport); // $mode = 'bike';
$mode = prev($transport);    // $mode = 'foot';
$mode = end($transport);     // $mode = 'plane';
$mode = current($transport); // $mode = 'plane';

$arr = array();
var_dump(current($arr)); // bool(false)

$arr = array(array());
var_dump(current($arr)); // array(0) { }
?>

注释

Note: 如果数组包含 boolean FALSE 的单元则本函数在碰到这个单元时也返回 FALSE，使得不可能判断是否到了此数组列表的末端。 要正确遍历可能含有空单元的数组，用 each() 函数。

参见

  • end() - 将数组的内部指针指向最后一个单元
  • key() - 从关联数组中取得键名
  • each() - 返回数组中当前的键／值对并将数组指针向前移动一步
  • prev() - 将数组的内部指针倒回一位
  • reset() - 将数组的内部指针指向第一个单元
  • next() - 将数组中的内部指针向前移动一位

count
each
数组 函数


返回数组中当前的键／值对并将数组指针向前移动一步

current
end
数组 函数
PHP Manual

each

(PHP 4, PHP 5, PHP 7)

each — 返回数组中当前的键／值对并将数组指针向前移动一步

说明

array each ( array &$array )

返回数组中当前的键／值对并将数组指针向前移动一步

在执行 each() 之后，数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。如果要再用 each 遍历数组，必须使用 reset()。

参数

array

输入的数组。

返回值

返回 array 数组中当前指针位置的键／值对并向前移动数组指针。键值对被返回为四个单元的数组，键名为0，1，key和 value。单元 0 和 key 包含有数组单元的键名，1 和 value 包含有数据。

如果内部指针越过了数组的末端，则 each() 返回 FALSE。

范例

Example #1 each() 例子

<?php
$foo = array("bob", "fred", "jussi", "jouni", "egon", "marliese");
$bar = each($foo);
print_r($bar);
?>

$bar 现在包含有如下的键／值对：

Array
(
    [1] => bob
    [value] => bob
    [0] => 0
    [key] => 0
)

<?php
$foo = array("Robert" => "Bob", "Seppo" => "Sepi");
$bar = each($foo);
print_r($bar);
?>

$bar 现在包含有如下的键／值对：

Array
(
    [1] => Bob
    [value] => Bob
    [0] => Robert
    [key] => Robert
)

each() 经常和 list() 结合使用来遍历数组，例如：

Example #2 用 each() 遍历数组

<?php
$fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');

reset($fruit);
while (list($key, $val) = each($fruit)) {
    echo "$key => $val\n";
}
?>

以上例程会输出：

a => apple
b => banana
c => cranberry

Caution

因为将一个数组赋值给另一个数组时会重置原来的数组指针，因此在上边的例子中如果我们在循环内部将 $fruit 赋给了另一个变量的话将会导致无限循环。

Warning

each() will also accept objects, but may return unexpected results. Its therefore not recommended to iterate though object properties with each().

参见

  • key() - 从关联数组中取得键名
  • list() - 把数组中的值赋给一些变量
  • current() - 返回数组中的当前单元
  • reset() - 将数组的内部指针指向第一个单元
  • next() - 将数组中的内部指针向前移动一位
  • prev() - 将数组的内部指针倒回一位
  • foreach
  • Object Iteration

current
end
数组 函数


将数组的内部指针指向最后一个单元

each
extract
数组 函数
PHP Manual

end

(PHP 4, PHP 5, PHP 7)

end — 将数组的内部指针指向最后一个单元

说明

mixed end ( array &$array )

end() 将 array 的内部指针移动到最后一个单元并返回其值。

参数

array

这个数组。 该数组是通过引用传递的，因为它会被这个函数修改。 这意味着你必须传入一个真正的变量，而不是函数返回的数组，因为只有真正的变量才能以引用传递。

返回值

返回最后一个元素的值，或者如果是空数组则返回 FALSE。

范例

Example #1 end() 例子

<?php

$fruits = array('apple', 'banana', 'cranberry');
echo end($fruits); // cranberry

?>

参见

  • current() - 返回数组中的当前单元
  • each() - 返回数组中当前的键／值对并将数组指针向前移动一步
  • prev() - 将数组的内部指针倒回一位
  • reset() - 将数组的内部指针指向第一个单元
  • next() - 将数组中的内部指针向前移动一位

each
extract
数组 函数


从数组中将变量导入到当前的符号表

end
in_array
数组 函数
PHP Manual

extract

(PHP 4, PHP 5, PHP 7)

extract — 从数组中将变量导入到当前的符号表

说明

int extract ( array &$var_array [, int $extract_type = EXTR_OVERWRITE [, string $prefix = NULL ]] )

本函数用来将变量从数组中导入到当前的符号表中。

检查每个键名看是否可以作为一个合法的变量名，同时也检查和符号表中已有的变量名的冲突。

参数

var_array

一个关联数组。此函数会将键名当作变量名，值作为变量的值。 对每个键／值对都会在当前的符号表中建立变量，并受到 extract_type 和 prefix 参数的影响。

必须使用关联数组，数字索引的数组将不会产生结果，除非用了 EXTR_PREFIX_ALL 或者 EXTR_PREFIX_INVALID。

extract_type

对待非法／数字和冲突的键名的方法将根据 extract_type 参数决定。可以是以下值之一：

EXTR_OVERWRITE
如果有冲突，覆盖已有的变量。
EXTR_SKIP
如果有冲突，不覆盖已有的变量。
EXTR_PREFIX_SAME
如果有冲突，在变量名前加上前缀 prefix。
EXTR_PREFIX_ALL
给所有变量名加上前缀 prefix。
EXTR_PREFIX_INVALID
仅在非法／数字的变量名前加上前缀 prefix。
EXTR_IF_EXISTS
仅在当前符号表中已有同名变量时，覆盖它们的值。其它的都不处理。 举个例子，以下情况非常有用：定义一些有效变量，然后从 $_REQUEST 中仅导入这些已定义的变量。
EXTR_PREFIX_IF_EXISTS
仅在当前符号表中已有同名变量时，建立附加了前缀的变量名，其它的都不处理。
EXTR_REFS
将变量作为引用提取。这有力地表明了导入的变量仍然引用了 var_array 参数的值。可以单独使用这个标志或者在 extract_type 中用 OR 与其它任何标志结合使用。

如果没有指定 extract_type，则被假定为 EXTR_OVERWRITE。

prefix

注意 prefix 仅在 extract_type 的值是 EXTR_PREFIX_SAME，EXTR_PREFIX_ALL，EXTR_PREFIX_INVALID 或 EXTR_PREFIX_IF_EXISTS 时需要。 如果附加了前缀后的结果不是合法的变量名，将不会导入到符号表中。前缀和数组键名之间会自动加上一个下划线。

返回值

返回成功导入到符号表中的变量数目。

更新日志

版本 | 说明
4.3.0 | 增加了 EXTR_REFS。
4.2.0 | 引进 EXTR_IF_EXISTS 和 EXTR_PREFIX_IF_EXISTS 。
4.0.5 | 函数可以返回被提取的变量数目。 增加了 EXTR_PREFIX_INVALID。 从这时起 EXTR_PREFIX_ALL 也包括了对数字索引的处理。

范例

Example #1 extract() 例子

extract() 的一种可能用法是将 wddx_deserialize() 返回的结合数组中的内容导入到符号表变量中去。

<?php

/* 假定 $var_array 是 wddx_deserialize 返回的数组*/

$size = "large";
$var_array = array("color" => "blue",
                   "size"  => "medium",
                   "shape" => "sphere");
extract($var_array, EXTR_PREFIX_SAME, "wddx");

echo "$color, $size, $shape, $wddx_size\n";

?>

以上例程会输出：

blue, large, sphere, medium

$size 没有被覆盖，因为指定了 EXTR_PREFIX_SAME，这使得 $wddx_size 被建立。如果指定了 EXTR_SKIP，则 $wddx_size 也不会被建立。EXTR_OVERWRITE 将使 $size 的值为"medium"，EXTR_PREFIX_ALL 将建立新变量 $wddx_color，$wddx_size 和 $wddx_shape。

注释

Warning

不要对不能信任的数据使用 extract()，例如用户的输入（$_GET， $_FILES，...）。如果这样做，举例说，要临时运行依赖于 register_globals 的老代码，要确保使用不会覆盖的 extract_type 值，例如 EXTR_SKIP，并且要留意应该按照 variables_order 在 php.ini 里 定义的顺序来提取。

Note:

If you have register_globals turned on and you use extract() on $_FILES and specify EXTR_SKIP, you may be surprised at the results.

Warning

This is not recommended practice and is only documented here for completeness. The use of register_globals is deprecated and calling extract() on untrusted data such as $_FILES is, as noted above, a potential security risk. If you encounter this issue, it means that you are using at least two poor coding practices.

<?php

/* Suppose that $testfile is the name of a file upload input
   and that register_globals is turned on. */

var_dump($testfile);
extract($_FILES, EXTR_SKIP);
var_dump($testfile);
var_dump($testfile['tmp_name']);

?>
You might expect to see something like the following:
string(14) "/tmp/phpgCCPX8"
array(5) {
  ["name"]=>
  string(10) "somefile.txt"
  ["type"]=>
  string(24) "application/octet-stream"
  ["tmp_name"]=>
  string(14) "/tmp/phpgCCPX8"
  ["error"]=>
  int(0)
  ["size"]=>
  int(4208)
}
string(14) "/tmp/phpgCCPX8"
However, you would instead see something like this:
string(14) "/tmp/phpgCCPX8"
string(14) "/tmp/phpgCCPX8"
string(1) "/"

This is due to the fact that since register_globals is turned on, $testfile already exists in the global scope when extract() is called. And since EXTR_SKIP is specified, $testfile is not overwritten with the contents of the $_FILES array so $testfile remains a string. Because strings may be accessed using array syntax and the non-numeric string tmp_name is interpreted as 0, PHP sees $testfile['tmp_name'] as $testfile[0].

参见

  • compact() - 建立一个数组，包括变量名和它们的值
  • list() - 把数组中的值赋给一些变量

end
in_array
数组 函数


检查数组中是否存在某个值

extract
key_exists
数组 函数
PHP Manual

in_array

(PHP 4, PHP 5, PHP 7)

in_array — 检查数组中是否存在某个值

说明

bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )

在 haystack 中搜索 needle，如果没有设置 strict 则使用宽松的比较。

参数

needle

待搜索的值。

Note:

如果 needle 是字符串，则比较是区分大小写的。

haystack

这个数组。

strict

如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 haystack 中的相同。

返回值

如果找到 needle 则返回 TRUE，否则返回 FALSE。

更新日志

版本 | 说明
4.2.0 | 在 PHP 版本 4.2.0 之前，needle 不允许是一个数组。

范例

Example #1 in_array() 例子

<?php
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
    echo "Got Irix";
}
if (in_array("mac", $os)) {
    echo "Got mac";
}
?>

第二个条件失败，因为 in_array() 是区分大小写的，所以以上程序显示为：

Got Irix

Example #2 in_array() 严格类型检查例子

<?php
$a = array('1.10', 12.4, 1.13);

if (in_array('12.4', $a, true)) {
    echo "'12.4' found with strict check\n";
}

if (in_array(1.13, $a, true)) {
    echo "1.13 found with strict check\n";
}
?>

以上例程会输出：

1.13 found with strict check

Example #3 in_array() 中用数组作为 needle

<?php
$a = array(array('p', 'h'), array('p', 'r'), 'o');

if (in_array(array('p', 'h'), $a)) {
    echo "'ph' was found\n";
}

if (in_array(array('f', 'i'), $a)) {
    echo "'fi' was found\n";
}

if (in_array('o', $a)) {
    echo "'o' was found\n";
}
?>

以上例程会输出：

  'ph' was found
  'o' was found

参见

  • array_search() - 在数组中搜索给定的值，如果成功则返回相应的键名
  • isset() - 检测变量是否设置
  • array_key_exists() - 检查给定的键名或索引是否存在于数组中

extract
key_exists
数组 函数


别名 array_key_exists

in_array
key
数组 函数
PHP Manual

key_exists

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

key_exists — 别名 array_key_exists()

说明

此函数是该函数的别名： array_key_exists().

in_array
key
数组 函数


从关联数组中取得键名

key_exists
krsort
数组 函数
PHP Manual

key

(PHP 4, PHP 5, PHP 7)

key — 从关联数组中取得键名

说明

mixed key ( array &$array )

key() 返回数组中当前单元的键名。

参数

array

该数组。

返回值

key() 函数返回数组中内部指针指向的当前单元的键名。 但它不会移动指针。如果内部指针超过了元素列表尾部，或者数组是空的，key() 会返回 NULL。

范例

Example #1 key() 例子

<?php
$array = array(
    'fruit1' => 'apple',
    'fruit2' => 'orange',
    'fruit3' => 'grape',
    'fruit4' => 'apple',
    'fruit5' => 'apple');

// this cycle echoes all associative array
// key where value equals "apple"
while ($fruit_name = current($array)) {
    if ($fruit_name == 'apple') {
        echo key($array).'<br />';
    }
    next($array);
}
?>

以上例程会输出：

fruit1<br />
fruit4<br />
fruit5<br />

参见

  • current() - 返回数组中的当前单元
  • next() - 将数组中的内部指针向前移动一位
  • foreach

key_exists
krsort
数组 函数


对数组按照键名逆向排序

key
ksort
数组 函数
PHP Manual

krsort

(PHP 4, PHP 5, PHP 7)

krsort — 对数组按照键名逆向排序

说明

bool krsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

对数组按照键名逆向排序，保留键名到数据的关联。主要用于结合数组。

参数

array

输入的数组。

sort_flags

可以用可选参数 sort_flags 改变排序的行为，详情见 sort()。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 krsort() 例子

<?php
$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
krsort($fruits);
foreach ($fruits as $key => $val) {
    echo "$key = $val\n";
}
?>

以上例程会输出：

d = lemon
c = apple
b = banana
a = orange

参见

  • arsort() - 对数组进行逆向排序并保持索引关系
  • ksort() - 对数组按照键名排序
  • 数组排序函数对比

key
ksort
数组 函数


对数组按照键名排序

krsort
list
数组 函数
PHP Manual

ksort

(PHP 4, PHP 5, PHP 7)

ksort — 对数组按照键名排序

说明

bool ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

对数组按照键名排序，保留键名到数据的关联。本函数主要用于关联数组。

参数

array

输入的数组。

sort_flags

可以用可选参数 sort_flags 改变排序的行为，详情见 sort()。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ksort() 例子

<?php
$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
ksort($fruits);
foreach ($fruits as $key => $val) {
    echo "$key = $val\n";
}
?>

以上例程会输出：

a = orange
b = banana
c = apple
d = lemon

参见

  • asort() - 对数组进行排序并保持索引关系
  • 数组排序函数对比

krsort
list
数组 函数


把数组中的值赋给一些变量

ksort
natcasesort
数组 函数
PHP Manual

list

(PHP 4, PHP 5, PHP 7)

list — 把数组中的值赋给一些变量

说明

array list ( mixed $varname [, mixed $... ] )

像 array() 一样，这不是真正的函数，而是语言结构。list() 用一步操作给一组变量进行赋值。

参数

varname

一个变量。

返回值

返回指定的数组。

范例

Example #1 list() 例子

<?php

$info = array('coffee', 'brown', 'caffeine');

// 列出所有变量
list($drink, $color, $power) = $info;
echo "$drink is $color and $power makes it special.\n";

// 列出他们的其中一个
list($drink, , $power) = $info;
echo "$drink has $power.\n";

// 或者让我们跳到仅第三个
list( , , $power) = $info;
echo "I need $power!\n";

// list() 不能对字符串起作用
list($bar) = "abcde";
var_dump($bar); // NULL
?>

Example #2 list() 用法的一个例子

<table>
 <tr>
  <th>Employee name</th>
  <th>Salary</th>
 </tr>

<?php

$result = mysql_query("SELECT id, name, salary FROM employees", $conn);
while (list($id, $name, $salary) = mysql_fetch_row($result)) {
    echo " <tr>\n" .
          "  <td><a href=\"info.php?id=$id\">$name</a></td>\n" .
          "  <td>$salary</td>\n" .
          " </tr>\n";
}

?>

</table>

Example #3 使用嵌套的 list()

<?php

list($a, list($b, $c)) = array(1, array(2, 3));

var_dump($a, $b, $c);

?>
int(1)
int(2)
int(3)

Example #4 在 list() 中使用数组索引

<?php

$info = array('coffee', 'brown', 'caffeine');

list($a[0], $a[1], $a[2]) = $info;

var_dump($a);

?>

产生如下输出（注意单元顺序和 list() 语法中所写的顺序的比较）：

array(3) {
  [2]=>
  string(8) "caffeine"
  [1]=>
  string(5) "brown"
  [0]=>
  string(6) "coffee"
}

注释

Warning

list() 从最右边一个参数开始赋值。如果你用单纯的变量，不用担心这一点。 但是如果你用了具有索引的数组，通常你期望得到的结果和在 list() 中写的一样是从左到右的，但实际上不是。 它是以相反顺序赋值的。

Warning

在 list() 执行过程中修改数组（比如使用 list($a, $b) = $b）将会产生不可预知的结果。

Note:

list() 仅能用于数字索引的数组并假定数字索引从 0 开始。

参见

  • each() - 返回数组中当前的键／值对并将数组指针向前移动一步
  • array() - 新建一个数组
  • extract() - 从数组中将变量导入到当前的符号表

ksort
natcasesort
数组 函数


用“自然排序”算法对数组进行不区分大小写字母的排序

list
natsort
数组 函数
PHP Manual

natcasesort

(PHP 4, PHP 5, PHP 7)

natcasesort — 用"自然排序"算法对数组进行不区分大小写字母的排序

说明

bool natcasesort ( array &$array )

natcasesort() 是 natsort() 函数的不区分大小写字母的版本。

本函数实现了一个和人们通常对字母数字字符串进行排序的方法一样的排序算法并保持原有键／值的关联，这被称为"自然排序"。

参数

array

输入的数组。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 natcasesort() 例子

<?php
$array1 = $array2 = array('IMG0.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG3.png');

sort($array1);
echo "Standard sorting\n";
print_r($array1);

natcasesort($array2);
echo "\nNatural order sorting (case-insensitive)\n";
print_r($array2);
?>

以上例程会输出：

Standard sorting
Array
(
    [0] => IMG0.png
    [1] => IMG3.png
    [2] => img1.png
    [3] => img10.png
    [4] => img12.png
    [5] => img2.png
)

Natural order sorting (case-insensitive)
Array
(
    [0] => IMG0.png
    [4] => img1.png
    [3] => img2.png
    [5] => IMG3.png
    [2] => img10.png
    [1] => img12.png
)

更多信息见 Martin Pool 的 » Natural Order String Comparison 页面。

参见

  • natsort() - 用“自然排序”算法对数组排序
  • 数组排序函数对比
  • strnatcmp() - 使用自然排序算法比较字符串
  • strnatcasecmp() - 使用“自然顺序”算法比较字符串（不区分大小写）

list
natsort
数组 函数


用“自然排序”算法对数组排序

natcasesort
next
数组 函数
PHP Manual

natsort

(PHP 4, PHP 5, PHP 7)

natsort — 用"自然排序"算法对数组排序

说明

bool natsort ( array &$array )

本函数实现了一个和人们通常对字母数字字符串进行排序的方法一样的排序算法并保持原有键／值的关联，这被称为"自然排序"。本算法和通常的计算机字符串排序算法（用于 sort()）的区别见下面示例。

参数

array

输入的 array。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.2.10 | Zero padded numeric strings (e.g., '00005') now essentially ignore the 0 padding.

范例

Example #1 natsort() examples demonstrating basic usage

<?php
$array1 = $array2 = array("img12.png", "img10.png", "img2.png", "img1.png");

asort($array1);
echo "Standard sorting\n";
print_r($array1);

natsort($array2);
echo "\nNatural order sorting\n";
print_r($array2);
?>

以上例程会输出：

Standard sorting
Array
(
    [3] => img1.png
    [1] => img10.png
    [0] => img12.png
    [2] => img2.png
)

Natural order sorting
Array
(
    [3] => img1.png
    [2] => img2.png
    [1] => img10.png
    [0] => img12.png
)

For more information see: Martin Pool's » Natural Order String Comparison page.

Example #2 natsort() examples demonstrating potential gotchas

<?php
echo "Negative numbers\n";
$negative = array('-5','3','-2','0','-1000','9','1');
print_r($negative);
natsort($negative);
print_r($negative);

echo "Zero padding\n";
$zeros = array('09', '8', '10', '009', '011', '0');
print_r($zeros);
natsort($zeros);
print_r($zeros);

echo "Other characters interfering\n";
$images_oops = array('image_1.jpg','image_12.jpg', 'image_21.jpg', 'image_4.jpg');
print_r($images_oops);
natsort($images_oops);
print_r($images_oops);

echo "Sort by keys\n";
$smoothie = array('orange' => 1, 'apple' => 1, 'yogurt' => 4, 'banana' => 4);
print_r($smoothie);
uksort( $smoothie, 'strnatcmp');
print_r($smoothie);
?>

以上例程会输出：

Negative numbers
Array
(
    [0] => -5
    [1] => 3
    [2] => -2
    [3] => 0
    [4] => -1000
    [5] => 9
    [6] => 1
)
Array
(
    [2] => -2
    [0] => -5
    [4] => -1000
    [3] => 0
    [6] => 1
    [1] => 3
    [5] => 9
)

Zero padding
Array
(
    [0] => 09
    [1] => 8
    [2] => 10
    [3] => 009
    [4] => 011
    [5] => 0
)
Array
(
    [5] => 0
    [1] => 8
    [3] => 009
    [0] => 09
    [2] => 10
    [4] => 011
)

Other characters interfering
Array
(
    [0] => image_1.jpg
    [1] => image_12.jpg
    [2] => image_21.jpg
    [3] => image_4.jpg
)
Array
(
    [0] => image_1.jpg
    [3] => image_4.jpg
    [1] => image_12.jpg
    [2] => image_21.jpg
)

Sort by keys
Array
(
    [orange] => 1
    [apple]  => 1
    [yogurt] => 4
    [banana] => 4
)
Array
(
    [apple]  => 1
    [banana] => 4
    [orange] => 1
    [yogurt] => 4
)

参见

  • natcasesort() - 用“自然排序”算法对数组进行不区分大小写字母的排序
  • 数组排序函数对比
  • strnatcmp() - 使用自然排序算法比较字符串
  • strnatcasecmp() - 使用“自然顺序”算法比较字符串（不区分大小写）

natcasesort
next
数组 函数


将数组中的内部指针向前移动一位

natsort
pos
数组 函数
PHP Manual

next

(PHP 4, PHP 5, PHP 7)

next — 将数组中的内部指针向前移动一位

说明

mixed next ( array &$array )

next() 和 current() 的行为类似，只有一点区别，在返回值之前将内部指针向前移动一位。这意味着它返回的是下一个数组单元的值并将数组指针向前移动了一位。

参数

array

受影响的 array 。

返回值

返回数组内部指针指向的下一个单元的值，或当没有更多单元时返回 FALSE。

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

范例

Example #1 next() 及相关函数的用法示例

<?php
$transport = array('foot', 'bike', 'car', 'plane');
$mode = current($transport); // $mode = 'foot';
$mode = next($transport);    // $mode = 'bike';
$mode = next($transport);    // $mode = 'car';
$mode = prev($transport);    // $mode = 'bike';
$mode = end($transport);     // $mode = 'plane';
?>

注释

Note: 你将无法区别包含数组尾以及 boolean FALSE 单元的数组。要正确遍历可能含有空单元或者单元值为 0 的数组，参见 each() 函数。

参见

  • current() - 返回数组中的当前单元
  • end() - 将数组的内部指针指向最后一个单元
  • prev() - 将数组的内部指针倒回一位
  • reset() - 将数组的内部指针指向第一个单元
  • each() - 返回数组中当前的键／值对并将数组指针向前移动一步

natsort
pos
数组 函数


current 的别名

next
prev
数组 函数
PHP Manual

pos

(PHP 4, PHP 5, PHP 7)

pos — current() 的别名

说明

此函数是该函数的别名：current()。

next
prev
数组 函数


将数组的内部指针倒回一位

pos
range
数组 函数
PHP Manual

prev

(PHP 4, PHP 5, PHP 7)

prev — 将数组的内部指针倒回一位

说明

mixed prev ( array &$array )

将数组的内部指针倒回一位。

prev() 和 next() 的行为类似，只除了它将内部指针倒回一位而不是前移一位。

参数

array

The input array.

返回值

返回数组内部指针指向的前一个单元的值，或当没有更多单元时返回 FALSE。

范例

Example #1 prev() 及相关函数用法示例

<?php
$transport = array('foot', 'bike', 'car', 'plane');
$mode = current($transport); // $mode = 'foot';
$mode = next($transport);    // $mode = 'bike';
$mode = next($transport);    // $mode = 'car';
$mode = prev($transport);    // $mode = 'bike';
$mode = end($transport);     // $mode = 'plane';
?>

注释

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

Note: 你会无法区分包含 boolean FALSE 单元的数组开头。要正确遍历可能含有空单元或者单元值为 0 的数组，参见 each() 函数。

参见

  • current() - 返回数组中的当前单元
  • end() - 将数组的内部指针指向最后一个单元
  • next() - 将数组中的内部指针向前移动一位
  • reset() - 将数组的内部指针指向第一个单元
  • each() - 返回数组中当前的键／值对并将数组指针向前移动一步

pos
range
数组 函数


建立一个包含指定范围单元的数组

prev
reset
数组 函数
PHP Manual

range

(PHP 4, PHP 5, PHP 7)

range — 建立一个包含指定范围单元的数组

说明

array range ( mixed $start , mixed $limit [, number $step = 1 ] )

建立一个包含指定范围单元的数组。

参数

start

序列的第一个值。

limit

序列结束于 limit 的值。

step

如果给出了 step 的值，它将被作为单元之间的步进值。step 应该为正值。如果未指定，step 则默认为 1。

返回值

返回的数组中从 start 到 limit 的单元，包括它们本身。

更新日志

版本 | 说明
5.0.0 | 添加了可选参数 step。
4.1.0 to 4.3.2 | 在 PHP 版本 4.1.0 到 4.3.2 中，range() 将数字字符串看作字符串而不是整数，因此将会被作为字符序列使用。例如，"4242" 会被当作 "4" 来对待。
4.1.0 | 在版本 4.1.0 之前 range() 函数只产生递增的整数数组。对于字符序列和递减数组的支持是 4.1.0 加入的。字符序列值的长度限定为一。如果输入的长度超过一，则只使用第一个字符。

范例

Example #1 range() 例子

<?php
// array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
foreach (range(0, 12) as $number) {
    echo $number;
}

// The step parameter was introduced in 5.0.0
// array(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
foreach (range(0, 100, 10) as $number) {
    echo $number;
}

// Use of character sequences introduced in 4.1.0
// array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i');
foreach (range('a', 'i') as $letter) {
    echo $letter;
}
// array('c', 'b', 'a');
foreach (range('c', 'a') as $letter) {
    echo $letter;
}
?>

参见

  • shuffle() - 将数组打乱
  • array_fill() - 用给定的值填充数组
  • foreach

prev
reset
数组 函数


将数组的内部指针指向第一个单元

range
rsort
数组 函数
PHP Manual

reset

(PHP 4, PHP 5, PHP 7)

reset — 将数组的内部指针指向第一个单元

说明

mixed reset ( array &$array )

reset() 将 array 的内部指针倒回到第一个单元并返回第一个数组单元的值。

参数

array

输入的数组。

返回值

返回数组第一个单元的值，如果数组为空则返回 FALSE。

范例

Example #1 reset() 例子

<?php

$array = array('step one', 'step two', 'step three', 'step four');

// by default, the pointer is on the first element
echo current($array) . "<br />\n"; // "step one"

// skip two steps
next($array);
next($array);
echo current($array) . "<br />\n"; // "step three"

// reset pointer, start again on step one
reset($array);
echo current($array) . "<br />\n"; // "step one"

?>

参见

  • current() - 返回数组中的当前单元
  • each() - 返回数组中当前的键／值对并将数组指针向前移动一步
  • end() - 将数组的内部指针指向最后一个单元
  • next() - 将数组中的内部指针向前移动一位
  • prev() - 将数组的内部指针倒回一位

range
rsort
数组 函数


对数组逆向排序

reset
shuffle
数组 函数
PHP Manual

rsort

(PHP 4, PHP 5, PHP 7)

rsort — 对数组逆向排序

说明

bool rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

本函数对数组进行逆向排序（最高到最低）。

参数

array

输入的数组。

sort_flags

可以用可选参数 sort_flags 改变排序的行为，详情见 sort()。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 rsort() 例

<?php
$fruits = array("lemon", "orange", "banana", "apple");
rsort($fruits);
foreach ($fruits as $key => $val) {
    echo "$key = $val\n";
}
?>

以上例程会输出：

0 = orange
1 = lemon
2 = banana
3 = apple

fruits 被按照字母顺序逆向排序。

注释

Note: 此函数为 array 中的元素赋与新的键名。这将删除原有的键名，而不是仅仅将键名重新排序。

参见

  • arsort() - 对数组进行逆向排序并保持索引关系
  • krsort() - 对数组按照键名逆向排序
  • 数组排序函数对比

reset
shuffle
数组 函数


将数组打乱

rsort
sizeof
数组 函数
PHP Manual

shuffle

(PHP 4, PHP 5, PHP 7)

shuffle — 将数组打乱

说明

bool shuffle ( array &$array )

本函数打乱（随机排列单元的顺序）一个数组。它使用的是假随机数，并不适合密码学的场合。

Note:

If two members compare as equal, their relative order in the sorted array is undefined.

参数

array

待操作的数组。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 shuffle() 例子

<?php
$numbers = range(1, 20);
shuffle($numbers);
foreach ($numbers as $number) {
    echo "$number ";
}
?>

注释

Note: 此函数为 array 中的元素赋与新的键名。这将删除原有的键名，而不是仅仅将键名重新排序。

参见

  • array_rand() - 从数组中随机取出一个或多个单元
  • 数组排序函数对比

rsort
sizeof
数组 函数


count 的别名

shuffle
sort
数组 函数
PHP Manual

sizeof

(PHP 4, PHP 5, PHP 7)

sizeof — count() 的别名

说明

此函数是该函数的别名：count()。

shuffle
sort
数组 函数


对数组排序

sizeof
uasort
数组 函数
PHP Manual

sort

(PHP 4, PHP 5, PHP 7)

sort — 对数组排序

说明

bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )

本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。

Note:

If two members compare as equal, their relative order in the sorted array is undefined.

参数

array

要排序的数组。

sort_flags

可选的第二个参数 sort_flags 可以用以下值改变排序的行为：

排序类型标记：

  • SORT_REGULAR - 正常比较单元（不改变类型）
  • SORT_NUMERIC - 单元被作为数字来比较
  • SORT_STRING - 单元被作为字符串来比较
  • SORT_LOCALE_STRING - 根据当前的区域（locale）设置来把单元当作字符串比较，可以用 setlocale() 来改变。
  • SORT_NATURAL - 和 natsort() 类似对每个单元以"自然的顺序"对字符串进行排序。 PHP 5.4.0 中新增的。
  • SORT_FLAG_CASE - 能够与 SORT_STRING 或 SORT_NATURAL 合并（OR 位运算），不区分大小写排序字符串。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.4.0 | 添加了 sort_flags 内 SORT_NATURAL 和 SORT_FLAG_CASE 的支持。
5.0.2 | 添加了 SORT_LOCALE_STRING。

范例

Example #1 sort() 例子

<?php

$fruits = array("lemon", "orange", "banana", "apple");
sort($fruits);
foreach ($fruits as $key => $val) {
    echo "fruits[" . $key . "] = " . $val . "\n";
}

?>

以上例程会输出：

fruits[0] = apple
fruits[1] = banana
fruits[2] = lemon
fruits[3] = orange

fruits 被按照字母顺序排序。

Example #2 使用不区分大小写自然排序的 sort() 例子

<?php

$fruits = array(
    "Orange1", "orange2", "Orange3", "orange20"
);
sort($fruits, SORT_NATURAL | SORT_FLAG_CASE);
foreach ($fruits as $key => $val) {
    echo "fruits[" . $key . "] = " . $val . "\n";
}

?>

以上例程会输出：

fruits[0] = Orange1
fruits[1] = orange2
fruits[2] = Orange3
fruits[3] = orange20

fruits 排序得像 natcasesort() 的结果。

注释

Note: 此函数为 array 中的元素赋与新的键名。这将删除原有的键名，而不是仅仅将键名重新排序。

Note: 和大多数 PHP 排序函数一样，sort() 使用了 » Quicksort 实现的。 The pivot is chosen in the middle of the partition resulting in an optimal time for already sorted arrays. This is however an implementation detail you shouldn't rely on.

Warning

在对含有混合类型值的数组排序时要小心，因为 sort() 可能会产生不可预知的结果。

参见

  • asort() - 对数组进行排序并保持索引关系
  • 数组排序函数对比

sizeof
uasort
数组 函数


使用用户自定义的比较函数对数组中的值进行排序并保持索引关联

sort
uksort
数组 函数
PHP Manual

uasort

(PHP 4, PHP 5, PHP 7)

uasort — 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联

说明

bool uasort ( array &$array , callable $cmp_function )

本函数对数组排序并保持索引和单元之间的关联。

主要用于对那些单元顺序很重要的结合数组进行排序。比较函数是用户自定义的。

参数

array

输入的数组。

cmp_function

用户自定义比较函数的例子请参考 usort() 和 uksort()。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 uasort() 的基本例子

<?php
// Comparison function
function cmp($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

// Array to be sorted
$array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4);
print_r($array);

// Sort and print the resulting array
uasort($array, 'cmp');
print_r($array);
?>

以上例程会输出：

Array
(
    [a] => 4
    [b] => 8
    [c] => -1
    [d] => -9
    [e] => 2
    [f] => 5
    [g] => 3
    [h] => -4
)
Array
(
    [d] => -9
    [h] => -4
    [c] => -1
    [e] => 2
    [g] => 3
    [a] => 4
    [f] => 5
    [b] => 8
)

参见

  • usort() - 使用用户自定义的比较函数对数组中的值进行排序
  • 数组排序函数对比

sort
uksort
数组 函数


使用用户自定义的比较函数对数组中的键名进行排序

uasort
usort
数组 函数
PHP Manual

uksort

(PHP 4, PHP 5, PHP 7)

uksort — 使用用户自定义的比较函数对数组中的键名进行排序

说明

bool uksort ( array &$array , callable $cmp_function )

uksort() 函数将使用用户提供的比较函数对数组中的键名进行排序。如果要排序的数组需要用一种不寻常的标准进行排序，那么应该使用此函数。

参数

array

输入的数组。

cmp_function

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 uksort() 例子

<?php
function cmp($a, $b)
{
    $a = preg_replace('@^(a|an|the) @', '', $a);
    $b = preg_replace('@^(a|an|the) @', '', $b);
    return strcasecmp($a, $b);
}

$a = array("John" => 1, "the Earth" => 2, "an apple" => 3, "a banana" => 4);

uksort($a, "cmp");

foreach ($a as $key => $value) {
    echo "$key: $value\n";
}
?>

以上例程会输出：

an apple: 3
a banana: 4
the Earth: 2
John: 1

参见

  • usort() - 使用用户自定义的比较函数对数组中的值进行排序
  • 数组排序函数对比

uasort
usort
数组 函数


使用用户自定义的比较函数对数组中的值进行排序

uksort
类/对象
数组 函数
PHP Manual

usort

(PHP 4, PHP 5, PHP 7)

usort — 使用用户自定义的比较函数对数组中的值进行排序

说明

bool usort ( array &$array , callable $cmp_function )

本函数将用用户自定义的比较函数对一个数组中的值进行排序。如果要排序的数组需要用一种不寻常的标准进行排序，那么应该使用此函数。

Note:

如果两个成员比较结果相同，则它们在排序后的数组中的顺序未经定义。

Note: 此函数为 array 中的元素赋与新的键名。这将删除原有的键名，而不是仅仅将键名重新排序。

参数

array

输入的数组

cmp_function

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )
Caution

Returning non-integer values from the comparison function, such as float, will result in an internal cast to integer of the callback's return value. So values such as 0.99 and 0.1 will both be cast to an integer value of 0, which will compare such values as equal.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
4.1.0 | 引进了新的排序算法。用户自定义函数 cmp_function 将不再保留这些单元的原有顺序。

范例

Example #1 usort() 例子

<?php
function cmp($a, $b)
{
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

$a = array(3, 2, 5, 6, 1);

usort($a, "cmp");

foreach ($a as $key => $value) {
    echo "$key: $value\n";
}
?>

以上例程会输出：

0: 1
1: 2
2: 3
3: 5
4: 6

Note:

很明显在这个小例子中用 sort() 函数更合适。

Example #2 使用多维数组的 usort() 例子

<?php
function cmp($a, $b)
{
    return strcmp($a["fruit"], $b["fruit"]);
}

$fruits[0]["fruit"] = "lemons";
$fruits[1]["fruit"] = "apples";
$fruits[2]["fruit"] = "grapes";

usort($fruits, "cmp");

while (list($key, $value) = each($fruits)) {
    echo "$fruits[$key]: " . $value["fruit"] . "\n";
}
?>

当排序多维数组时，$a 和 $b 包含到数组第一个索引的引用。

以上例程会输出：

$fruits[0]: apples
$fruits[1]: grapes
$fruits[2]: lemons

Example #3 usort() example using a member function of an object

<?php
class TestObj {
    var $name;

    function TestObj($name)
    {
        $this->name = $name;
    }

    /* This is the static comparing function: */
    static function cmp_obj($a, $b)
    {
        $al = strtolower($a->name);
        $bl = strtolower($b->name);
        if ($al == $bl) {
            return 0;
        }
        return ($al > $bl) ? +1 : -1;
    }
}

$a[] = new TestObj("c");
$a[] = new TestObj("b");
$a[] = new TestObj("d");

usort($a, array("TestObj", "cmp_obj"));

foreach ($a as $item) {
    echo $item->name . "\n";
}
?>

以上例程会输出：

b
c
d

Example #4 usort() example using a closure to sort a multi-dimensional array

<?php
$array[0] = array('key_a' => 'z', 'key_b' => 'c');
$array[1] = array('key_a' => 'x', 'key_b' => 'b');
$array[2] = array('key_a' => 'y', 'key_b' => 'a');

function build_sorter($key) {
    return function ($a, $b) use ($key) {
        return strnatcmp($a[$key], $b[$key]);
    };
}

usort($array, build_sorter('key_b'));

foreach ($array as $item) {
    echo $item['key_a'] . ', ' . $item['key_b'] . "\n";
}
?>

以上例程会输出：

y, a
x, b
z, c

参见

  • uasort() - 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
  • 数组排序函数对比

uksort
类/对象
数组 函数


类/对象的信息

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • 类/对象 函数
    • __autoload — 尝试加载未定义的类
    • call_user_method_array — 调用一个用户方法，同时传递参数数组（已废弃）
    • call_user_method — 对特定对象调用用户方法（已废弃）
    • class_alias — 为一个类创建别名
    • class_exists — 检查类是否已定义
    • get_called_class — 后期静态绑定（"Late Static Binding"）类的名称
    • get_class_methods — 返回由类的方法名组成的数组
    • get_class_vars — 返回由类的默认属性组成的数组
    • get_class — 返回对象的类名
    • get_declared_classes — 返回由已定义类的名字所组成的数组
    • get_declared_interfaces — 返回一个数组包含所有已声明的接口
    • get_declared_traits — 返回所有已定义的 traits 的数组
    • get_object_vars — 返回由对象属性组成的关联数组
    • get_parent_class — 返回对象或类的父类名
    • interface_exists — 检查接口是否已被定义
    • is_a — 如果对象属于该类或该类是此对象的父类则返回 TRUE
    • is_subclass_of — 如果此对象是该类的子类，则返回 TRUE
    • method_exists — 检查类的方法是否存在
    • property_exists — 检查对象或类是否具有该属性
    • trait_exists — 检查指定的 trait 是否存在
usort
简介
变量与类型相关扩展


简介

这些函数允许你获得类和对象实例的相关信息。 你可以获取对象所属的类名，也可以是它的成员属性和方法。 通过使用这些函数，你不仅可以找到对象和类的关系，也可以是它们的继承关系（例如，对象类继承自哪个类）。

请参见手册中对象一节来查看在 PHP 里，对象和类如何实现和使用的详细描述。

类/对象
安装／配置
类/对象


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
类/对象


预定义常量

此扩展没有定义常量。

资源类型
范例
类/对象


范例

在这个例子中，我们首先定义了一个基类和该类的扩展。 这个基类描述了普通的蔬菜，关于它是否可食用及其颜色。 子类 Spinach 添加了烹饪的方法和另一个检查是否已烹饪的方法。

Example #1 classes.inc

<?php

// base class with member properties and methods
class Vegetable {

   var $edible;
   var $color;

   function Vegetable($edible, $color="green")
   {
       $this->edible = $edible;
       $this->color = $color;
   }

   function is_edible()
   {
       return $this->edible;
   }

   function what_color()
   {
       return $this->color;
   }

} // end of class Vegetable

// extends the base class
class Spinach extends Vegetable {

   var $cooked = false;

   function Spinach()
   {
       $this->Vegetable(true, "green");
   }

   function cook_it()
   {
       $this->cooked = true;
   }

   function is_cooked()
   {
       return $this->cooked;
   }

} // end of class Spinach

?>

接下来我们从这些类中实例化了两个对象，并打印了他们的信息，包括了他们类的继承关系。 同时我们也定了一些实用函数，主要为了漂亮地打印出这些变量。

Example #2 test_script.php

<pre>
<?php

include "classes.inc";

// 实用函数

function print_vars($obj)
{
foreach (get_object_vars($obj) as $prop => $val) {
    echo "\t$prop = $val\n";
}
}

function print_methods($obj)
{
$arr = get_class_methods(get_class($obj));
foreach ($arr as $method) {
    echo "\tfunction $method()\n";
}
}

function class_parentage($obj, $class)
{
if (is_subclass_of($GLOBALS[$obj], $class)) {
    echo "Object $obj belongs to class " . get_class($$obj);
    echo " a subclass of $class\n";
} else {
    echo "Object $obj does not belong to a subclass of $class\n";
}
}

// 实例化 2 对象

$veggie = new Vegetable(true, "blue");
$leafy = new Spinach();

// 打印这些对象的信息
echo "veggie: CLASS " . get_class($veggie) . "\n";
echo "leafy: CLASS " . get_class($leafy);
echo ", PARENT " . get_parent_class($leafy) . "\n";

// 显示蔬菜的属性
echo "\nveggie: Properties\n";
print_vars($veggie);

// and leafy methods
echo "\nleafy: Methods\n";
print_methods($leafy);

echo "\nParentage:\n";
class_parentage("leafy", "Spinach");
class_parentage("leafy", "Vegetable");
?>
</pre>

一个重要的东西是注意在上面的例子中，对象 $leafy 是 Spinach 的实例（Vegetable 的子类），另外脚本的最后部分会输出以下信息：

   [...]
Parentage:
Object leafy does not belong to a subclass of Spinach
Object leafy belongs to class spinach a subclass of Vegetable

预定义常量
类/对象 函数
类/对象


类/对象 函数

Table of Contents

  • __autoload — 尝试加载未定义的类
  • call_user_method_array — 调用一个用户方法，同时传递参数数组（已废弃）
  • call_user_method — 对特定对象调用用户方法（已废弃）
  • class_alias — 为一个类创建别名
  • class_exists — 检查类是否已定义
  • get_called_class — 后期静态绑定（"Late Static Binding"）类的名称
  • get_class_methods — 返回由类的方法名组成的数组
  • get_class_vars — 返回由类的默认属性组成的数组
  • get_class — 返回对象的类名
  • get_declared_classes — 返回由已定义类的名字所组成的数组
  • get_declared_interfaces — 返回一个数组包含所有已声明的接口
  • get_declared_traits — 返回所有已定义的 traits 的数组
  • get_object_vars — 返回由对象属性组成的关联数组
  • get_parent_class — 返回对象或类的父类名
  • interface_exists — 检查接口是否已被定义
  • is_a — 如果对象属于该类或该类是此对象的父类则返回 TRUE
  • is_subclass_of — 如果此对象是该类的子类，则返回 TRUE
  • method_exists — 检查类的方法是否存在
  • property_exists — 检查对象或类是否具有该属性
  • trait_exists — 检查指定的 trait 是否存在
范例
__autoload
类/对象


尝试加载未定义的类

类/对象 函数
call_user_method_array
类/对象 函数
PHP Manual

__autoload

(PHP 5, PHP 7)

__autoload — 尝试加载未定义的类

说明

void __autoload ( string $class )

你可以通过定义这个函数来启用类的自动加载。

参数

class

待加载的类名。

返回值

没有返回值。

参见

  • spl_autoload_register() - 注册给定的函数作为 __autoload 的实现

类/对象 函数
call_user_method_array
类/对象 函数


调用一个用户方法，同时传递参数数组（已废弃）

__autoload
call_user_method
类/对象 函数
PHP Manual

call_user_method_array

(PHP 4 >= 4.0.5, PHP 5)

call_user_method_array — 调用一个用户方法，同时传递参数数组（已废弃）

说明

mixed call_user_method_array ( string $method_name , object &$obj , array $paramarr )
Warning

call_user_method_array()
函数自 PHP 4.1.0 起已废弃，使用  call_user_func_array()
函数和  array(&$obj, "method_name")
语法代替。

从用户定义的 obj 对象中调用 method_name 所指的方法，同时使用 paramarr 中的参数。

参见 call_user_func_array() 和 call_user_func()。

__autoload
call_user_method
类/对象 函数


对特定对象调用用户方法（已废弃）

call_user_method_array
class_alias
类/对象 函数
PHP Manual

call_user_method

(PHP 4, PHP 5)

call_user_method — 对特定对象调用用户方法（已废弃）

说明

mixed call_user_method ( string $method_name , object &$obj [, mixed $parameter [, mixed $... ]] )
Warning

call_user_method()
函数从 PHP 4.1.0 开始已经停用，使用 call_user_func()
函数和 array(&$obj, "method_name")
语法代替。

从用户定义的 obj 对象中调用 method_name 指的方法。下边是用法示例，我们定义了一个类，接着创建了一个对象实例，然后使用 call_user_method() 间接调用它的 print_info 方法。

<?php
class Country {
    var $NAME;
    var $TLD;

    function Country($name, $tld)
    {
        $this->NAME = $name;
        $this->TLD = $tld;
    }

    function print_info($prestr="")
    {
        echo $prestr . "Country: " . $this->NAME . "\n";
        echo $prestr . "Top Level Domain: " . $this->TLD . "\n";
    }
}

$cntry = new Country("Peru", "pe");

echo "* Calling the object method directly\n";
$cntry->print_info();

echo "\n* Calling the same method indirectly\n";
call_user_method("print_info", $cntry, "\t");
?>

参见 call_user_func_array() 和 call_user_func()。

call_user_method_array
class_alias
类/对象 函数


为一个类创建别名

call_user_method
class_exists
类/对象 函数
PHP Manual

class_alias

(PHP 5 >= 5.3.0, PHP 7)

class_alias — 为一个类创建别名

说明

bool class_alias ( string $original , string $alias [, bool $autoload = TRUE ] )

基于用户定义的类 original 创建别名 alias。 这个别名类和原有的类完全相同。

参数

original

原有的类。

alias

类的别名。

autoload

如果原始类没有加载，是否使用自动加载（autoload）。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 class_alias() 例子

<?php

class foo { }

class_alias('foo', 'bar');

$a = new foo;
$b = new bar;

// the objects are the same
var_dump($a == $b, $a === $b);
var_dump($a instanceof $b);

// the classes are the same
var_dump($a instanceof foo);
var_dump($a instanceof bar);

var_dump($b instanceof foo);
var_dump($b instanceof bar);

?>

以上例程会输出：

bool(true)
bool(false)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)

参见

  • get_parent_class() - 返回对象或类的父类名
  • is_subclass_of() - 如果此对象是该类的子类，则返回 TRUE

call_user_method
class_exists
类/对象 函数


检查类是否已定义

class_alias
get_called_class
类/对象 函数
PHP Manual

class_exists

(PHP 4, PHP 5, PHP 7)

class_exists — 检查类是否已定义

说明

bool class_exists ( string $class_name [, bool $autoload = true ] )

检查指定的类是否已定义。

参数

class_name

类名。名字的匹配是不分区大小写的。

autoload

是否默认调用 __autoload。

返回值

如果由 class_name 所指的类已经定义，此函数返回 TRUE，否则返回 FALSE。

更新日志

版本 | 说明
5.0.2 | 不再为已定义的 interface 返回 TRUE。请使用 interface_exists()。

范例

Example #1 class_exists() 例子

<?php
// 使用前检查类是否存在
if (class_exists('MyClass')) {
    $myclass = new MyClass();
}

?>

Example #2 autoload parameter 例子

<?php
function __autoload($class)
{
    include($class . '.php');

    // Check to see whether the include declared the class
    if (!class_exists($class, false)) {
        trigger_error("Unable to load class: $class", E_USER_WARNING);
    }
}

if (class_exists('MyClass')) {
    $myclass = new MyClass();
}

?>

参见

  • function_exists() - 如果给定的函数已经被定义就返回 TRUE
  • interface_exists() - 检查接口是否已被定义
  • get_declared_classes() - 返回由已定义类的名字所组成的数组

class_alias
get_called_class
类/对象 函数


后期静态绑定（"Late Static Binding"）类的名称

class_exists
get_class_methods
类/对象 函数
PHP Manual

get_called_class

(PHP 5 >= 5.3.0, PHP 7)

get_called_class — 后期静态绑定（"Late Static Binding"）类的名称

说明

string get_called_class ( void )

获取静态方法调用的类名。

返回值

返回类的名称，如果不是在类中调用则返回 FALSE。

范例

Example #1 get_called_class() 的使用

<?php

class foo {
    static public function test() {
        var_dump(get_called_class());
    }
}

class bar extends foo {
}

foo::test();
bar::test();

?>

以上例程会输出：

string(3) "foo"
string(3) "bar"

参见

  • get_parent_class() - 返回对象或类的父类名
  • get_class() - 返回对象的类名
  • is_subclass_of() - 如果此对象是该类的子类，则返回 TRUE

class_exists
get_class_methods
类/对象 函数


返回由类的方法名组成的数组

get_called_class
get_class_vars
类/对象 函数
PHP Manual

get_class_methods

(PHP 4, PHP 5, PHP 7)

get_class_methods — 返回由类的方法名组成的数组

说明

array get_class_methods ( mixed $class_name )

返回由类的方法名组成的数组。

参数

class_name

类名或者对象实例。

返回值

返回由 class_name 指定的类中定义的方法名所组成的数组。如果出错，则返回 NULL。

更新日志

版本 | 说明
5.0.0 | 自 PHP 5 起，本函数按照方法被定义的名字返回（区分大小写）。在 PHP 4 中总是返回小写的。
4.0.6 | 从这个版本开始，可以指定对象本身来代替类名。

范例

Example #1 get_class_methods() 示例

<?php

class myclass {
    // constructor
    function myclass()
    {
        return(true);
    }

    // method 1
    function myfunc1()
    {
        return(true);
    }

    // method 2
    function myfunc2()
    {
        return(true);
    }
}

$class_methods = get_class_methods('myclass');
// or
$class_methods = get_class_methods(new myclass());

foreach ($class_methods as $method_name) {
    echo "$method_name\n";
}

?>

以上例程会输出：

myclass
myfunc1
myfunc2

参见

  • get_class() - 返回对象的类名
  • get_class_vars() - 返回由类的默认属性组成的数组
  • get_object_vars() - 返回由对象属性组成的关联数组

get_called_class
get_class_vars
类/对象 函数


返回由类的默认属性组成的数组

get_class_methods
get_class
类/对象 函数
PHP Manual

get_class_vars

(PHP 4, PHP 5, PHP 7)

get_class_vars — 返回由类的默认属性组成的数组

说明

array get_class_vars ( string $class_name )

返回由类的默认公有属性组成的关联数组，此数组的元素以 varname => value 的形式存在。

Note:

在 PHP 4.2.0 之前，get_class_vars() 不会包含未初始化的类变量。

Example #1 get_class_vars() 示例

<?php

class myclass {

    var $var1; // 此变量没有默认值......
    var $var2 = "xyz";
    var $var3 = 100;
    private $var4; // PHP 5

    // constructor
    function myclass() {
        // change some properties
        $this->var1 = "foo";
        $this->var2 = "bar";
        return true;
    }

}

$my_class = new myclass();

$class_vars = get_class_vars(get_class($my_class));

foreach ($class_vars as $name => $value) {
    echo "$name : $value\n";
}

?>

以上例程会输出：

// 在 PHP 4.2.0 之前
var2 : xyz
var3 : 100

// 从 PHP 4.2.0 开始
var1 :
var2 : xyz
var3 : 100

参见 get_class_methods()、 get_object_vars()

参数

class_name

The class name

返回值

Returns an associative array of declared properties visible from the current scope, with their default value. The resulting array elements are in the form of varname => value. In case of an error, it returns FALSE.

更新日志

版本 | 说明
5.0.3 | Depending on the scope, get_class_vars() will only return the properties that can be accessed from the current scope.
5.0.2 | Calling get_class_vars() will now expose all the properties as an array, unlike previous behaviour where protected and private properties were prefixed with nul bytes.
5.0.1 | Calling get_class_vars() will expose all properties, as when converting an object to a class.
Prior to 4.2.0 | Uninitialized class variables will not be reported by get_class_vars()

范例

Example #2 get_class_vars() example

<?php

class myclass {

    var $var1; // this has no default value...
    var $var2 = "xyz";
    var $var3 = 100;
    private $var4; // PHP 5

    // constructor
    function myclass() {
        // change some properties
        $this->var1 = "foo";
        $this->var2 = "bar";
        return true;
    }

}

$my_class = new myclass();

$class_vars = get_class_vars(get_class($my_class));

foreach ($class_vars as $name => $value) {
    echo "$name : $value\n";
}

?>

以上例程会输出：

// Before PHP 4.2.0
var2 : xyz
var3 : 100

// As of PHP 4.2.0
var1 :
var2 : xyz
var3 : 100

Example #3 get_class_vars() and scoping behaviour

<?php
function format($array)
{
    return implode('|', array_keys($array)) . "\r\n";
}

class TestCase
{
    public $a    = 1;
    protected $b = 2;
    private $c   = 3;

    public static function expose()
    {
        echo format(get_class_vars(__CLASS__));
    }
}

TestCase::expose();
echo format(get_class_vars('TestCase'));
?>

以上例程会输出：

// 5.0.0
a| * b| TestCase c
a| * b| TestCase c

// 5.0.1 - 5.0.2
a|b|c
a|b|c

// 5.0.3 +
a|b|c
a

参见

  • get_class_methods() - 返回由类的方法名组成的数组
  • get_object_vars() - 返回由对象属性组成的关联数组

get_class_methods
get_class
类/对象 函数


返回对象的类名

get_class_vars
get_declared_classes
类/对象 函数
PHP Manual

get_class

(PHP 4, PHP 5, PHP 7)

get_class — 返回对象的类名

说明

string get_class ([ object $obj ] )

返回对象实例 obj 所属类的名字。如果 obj 不是一个对象则返回 FALSE。

Note: 在 PHP 扩展库中定义的类返回其原始定义的名字。在 PHP 4 中 get_class() 返回用户定义的类名的小写形式，但是在 PHP 5 中将返回类名定义时的名字，如同扩展库中的类名一样。

Note:

自 PHP 5 起，如果在对象的方法中调用则 obj 为可选项。

Example #1 使用 get_class()

<?php

class foo {
    function foo()
    {
    // implements some logic
    }

    function name()
    {
        echo "My name is " , get_class($this) , "\n";
    }
}

// create an object
$bar = new foo();

// external call
echo "Its name is " , get_class($bar) , "\n";

// internal call
$bar->name();

?>

以上例程会输出：

Its name is foo
My name is foo

参见 get_parent_class()、
gettype() 和
is_subclass_of()。

参数

object

The tested object. This parameter may be omitted when inside a class.

返回值

Returns the name of the class of which object is an instance. Returns FALSE if object is not an object.

If object is omitted when inside a class, the name of that class is returned.

错误／异常

If get_class() is called with anything other than an object, an E_WARNING level error is raised.

更新日志

版本 | 说明
Since 5.3.0 | NULL became the default value for object, so passing NULL to object now has the same result as not passing any value.
Since 5.0.0 | The class name is returned in its original notation.
Since 5.0.0 | The object parameter is optional if called from the object's method.

范例

Example #2 Using get_class()

<?php

class foo {
    function name()
    {
        echo "My name is " , get_class($this) , "\n";
    }
}

// create an object
$bar = new foo();

// external call
echo "Its name is " , get_class($bar) , "\n";

// internal call
$bar->name();

?>

以上例程会输出：

Its name is foo
My name is foo

Example #3 Using get_class() in superclass

<?php

abstract class bar {
    public function __construct()
    {
        var_dump(get_class($this));
        var_dump(get_class());
    }
}

class foo extends bar {
}

new foo;

?>

以上例程会输出：

string(3) "foo"
string(3) "bar"

参见

  • get_called_class() - 后期静态绑定（"Late Static Binding"）类的名称
  • get_parent_class() - 返回对象或类的父类名
  • gettype() - 获取变量的类型
  • is_subclass_of() - 如果此对象是该类的子类，则返回 TRUE

get_class_vars
get_declared_classes
类/对象 函数


返回由已定义类的名字所组成的数组

get_class
get_declared_interfaces
类/对象 函数
PHP Manual

get_declared_classes

(PHP 4, PHP 5, PHP 7)

get_declared_classes — 返回由已定义类的名字所组成的数组

说明

array get_declared_classes ( void )

返回由当前脚本中已定义类的名字组成的数组。

返回值

返回由当前脚本中已定义类的名字组成的数组。

Note:

需要注意的是额外类的出现依赖于你已编译到 PHP 中的库。这意味着你不能使用这些类名定义自己的类。在附录的 预定义类 部分有预定义类的列表。

范例

Example #1 get_declared_classes() 例子

<?php
print_r(get_declared_classes());
?>

以上例程的输出类似于：

Array
(
    [0] => stdClass
    [1] => __PHP_Incomplete_Class
    [2] => Directory
)

参见

  • class_exists() - 检查类是否已定义
  • get_declared_interfaces() - 返回一个数组包含所有已声明的接口
  • get_defined_functions() - Returns an array of all defined functions

get_class
get_declared_interfaces
类/对象 函数


返回一个数组包含所有已声明的接口

get_declared_classes
get_declared_traits
类/对象 函数
PHP Manual

get_declared_interfaces

(PHP 5, PHP 7)

get_declared_interfaces — 返回一个数组包含所有已声明的接口

说明

array get_declared_interfaces ( void )

返回一个数组包含所有已声明的接口。

返回值

本函数返回一个数组，其内容是当前脚本中所有已声明的接口的名字。

范例

Example #1 get_declared_interfaces() 例子

<?php
print_r(get_declared_interfaces());
?>

以上例程的输出类似于：

Array
(
    [0] => Traversable
    [1] => IteratorAggregate
    [2] => Iterator
    [3] => ArrayAccess
    [4] => reflector
    [5] => RecursiveIterator
    [6] => SeekableIterator
)

参见

  • interface_exists() - 检查接口是否已被定义
  • get_declared_classes() - 返回由已定义类的名字所组成的数组
  • class_implements() - 返回指定的类实现的所有接口。

get_declared_classes
get_declared_traits
类/对象 函数


返回所有已定义的 traits 的数组

get_declared_interfaces
get_object_vars
类/对象 函数
PHP Manual

get_declared_traits

(PHP 5 >= 5.4.0, PHP 7)

get_declared_traits — 返回所有已定义的 traits 的数组

说明

array get_declared_traits ( void )

参数

此函数没有参数。

返回值

返回一个数组，其值包含了所有已定义的 traits 的名称。 在失败的情况下返回 NULL。

参见

  • class_uses() - Return the traits used by the given class

get_declared_interfaces
get_object_vars
类/对象 函数


返回由对象属性组成的关联数组

get_declared_traits
get_parent_class
类/对象 函数
PHP Manual

get_object_vars

(PHP 4, PHP 5, PHP 7)

get_object_vars — 返回由对象属性组成的关联数组

说明

array get_object_vars ( object $obj )

返回由 obj 指定的对象中定义的属性组成的关联数组。

Note:

在 PHP 4.2.0 之前的版本中，如果在 obj 对象实例中声明的变量没有被赋值，则它们将不会在返回的数组中。而在 PHP 4.2.0 之后，这些变量作为键名将被赋予 NULL 值。

Example #1 使用 get_object_vars()

<?php
class Point2D {
    var $x, $y;
    var $label;

    function Point2D($x, $y)
    {
        $this->x = $x;
        $this->y = $y;
    }

    function setLabel($label)
    {
        $this->label = $label;
    }

    function getPoint()
    {
        return array("x" => $this->x,
                     "y" => $this->y,
                     "label" => $this->label);
    }
}

// "$label" is declared but not defined
$p1 = new Point2D(1.233, 3.445);
print_r(get_object_vars($p1));

$p1->setLabel("point #1");
print_r(get_object_vars($p1));

?>

以上例程会输出：

 Array
 (
     [x] => 1.233
     [y] => 3.445
     [label] =>
 )

 Array
 (
     [x] => 1.233
     [y] => 3.445
     [label] => point #1
 )

参见 get_class_methods() 和 get_class_vars()。

参数

object

An object instance.

返回值

Returns an associative array of defined object accessible non-static properties for the specified object in scope. If a property have not been assigned a value, it will be returned with a NULL value.

更新日志

版本 | 说明
5.3.0 | This function now returns NULL if the object isn't an object.
prior to 5.3.0 | If the object isn't an object, then get_object_vars() would return FALSE
prior to 4.2.0 | If the variables declared in the class of which the object is an instance, have not been assigned a value, those will not be returned in the array

范例

Example #2 Use of get_object_vars()

<?php

class foo {
    private $a;
    public $b = 1;
    public $c;
    private $d;
    static $e;

    public function test() {
        var_dump(get_object_vars($this));
    }
}

$test = new foo;
var_dump(get_object_vars($test));

$test->test();

?>

以上例程会输出：

array(2) {
  ["b"]=>
  int(1)
  ["c"]=>
  NULL
}
array(4) {
  ["a"]=>
  NULL
  ["b"]=>
  int(1)
  ["c"]=>
  NULL
  ["d"]=>
  NULL
}

参见

  • get_class_methods() - 返回由类的方法名组成的数组
  • get_class_vars() - 返回由类的默认属性组成的数组

get_declared_traits
get_parent_class
类/对象 函数


返回对象或类的父类名

get_object_vars
interface_exists
类/对象 函数
PHP Manual

get_parent_class

(PHP 4, PHP 5, PHP 7)

get_parent_class — 返回对象或类的父类名

说明

string get_parent_class ([ mixed $obj ] )

如果 obj 是对象，则返回对象实例 obj 所属类的父类名。

如果 obj 是字符串，则返回以此字符串为名的类的父类名。此功能是在 PHP 4.0.5 中增加的。

Note:

自 PHP 5 起，如果在对象的方法内调用，则 obj 为可选项。

Example #1 使用 get_parent_class()

<?php

class dad {
    function dad()
    {
    // implements some logic
    }
}

class child extends dad {
    function child()
    {
        echo "I'm " , get_parent_class($this) , "'s son\n";
    }
}

class child2 extends dad {
    function child2()
    {
        echo "I'm " , get_parent_class('child2') , "'s son too\n";
    }
}

$foo = new child();
$bar = new child2();

?>

以上例程会输出：

I'm dad's son
I'm dad's son too

参见 get_class() 和 is_subclass_of()。

参数

object

The tested object or class name

返回值

Returns the name of the parent class of the class of which object is an instance or the name.

Note:

If the object does not have a parent or the class given does not exist FALSE will be returned.

If called without parameter outside object, this function returns FALSE.

更新日志

版本 | 说明
Before 5.1.0 | If called without parameter outside object, this function would have returned NULL with a warning.
Since 5.0.0 | The object parameter is optional if called from the object's method.
Since 4.0.5 | If object is a string, returns the name of the parent class of the class with that name.

范例

Example #2 Using get_parent_class()

<?php

class dad {
    function dad()
    {
    // implements some logic
    }
}

class child extends dad {
    function child()
    {
        echo "I'm " , get_parent_class($this) , "'s son\n";
    }
}

class child2 extends dad {
    function child2()
    {
        echo "I'm " , get_parent_class('child2') , "'s son too\n";
    }
}

$foo = new child();
$bar = new child2();

?>

以上例程会输出：

I'm dad's son
I'm dad's son too

参见

  • get_class() - 返回对象的类名
  • is_subclass_of() - 如果此对象是该类的子类，则返回 TRUE

get_object_vars
interface_exists
类/对象 函数


检查接口是否已被定义

get_parent_class
is_a
类/对象 函数
PHP Manual

interface_exists

(PHP 5 >= 5.0.2, PHP 7)

interface_exists — 检查接口是否已被定义

说明

bool interface_exists ( string $interface_name [, bool $autoload = true ] )

检查接口是否已被定义。

参数

interface_name

接口名。

autoload

默认是否调用 __autoload。

返回值

本函数在由 interface_name 给出的接口已定义时返回 TRUE，否则返回 FALSE。

范例

Example #1 interface_exists() 例子

<?php
// 在尝试使用前先检查接口是否存在
if (interface_exists('MyInterface')) {
    class MyClass implements MyInterface
    {
        // Methods
    }
}

?>

参见

  • get_declared_interfaces() - 返回一个数组包含所有已声明的接口
  • class_implements() - 返回指定的类实现的所有接口。
  • class_exists() - 检查类是否已定义

get_parent_class
is_a
类/对象 函数


如果对象属于该类或该类是此对象的父类则返回 TRUE

interface_exists
is_subclass_of
类/对象 函数
PHP Manual

is_a

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

is_a — 如果对象属于该类或该类是此对象的父类则返回 TRUE

说明

bool is_a ( object $object , string $class_name [, bool $allow_string = FALSE ] )

如果 object 是该类或该类是此对象的父类。

参数

object

The tested object

class_name

The class name

allow_string

If this parameter set to FALSE, string class name as object is not allowed. This also prevents from calling autoloader if the class doesn't exist.

返回值

Returns TRUE if the object is of this class or has this class as one of its parents, FALSE otherwise.

更新日志

版本 | 说明
5.3.9 | Added allow_string parameter
5.3.0 | This function is no longer deprecated, and will therefore no longer throw E_STRICT warnings.
5.0.0 | This function became deprecated in favour of the instanceof operator. Calling this function will result in an E_STRICT warning.

范例

Example #1 is_a() 例子

<?php
// define a class
class WidgetFactory
{
  var $oink = 'moo';
}

// create a new object
$WF = new WidgetFactory();

if (is_a($WF, 'WidgetFactory')) {
  echo "yes, \$WF is still a WidgetFactory\n";
}
?>

Example #2 在 PHP 5 中使用 instanceof 运算符

<?php
if ($WF instanceof WidgetFactory) {
    echo 'Yes, $WF is a WidgetFactory';
}
?>

参见

  • get_class() - 返回对象的类名
  • get_parent_class() - 返回对象或类的父类名
  • is_subclass_of() - 如果此对象是该类的子类，则返回 TRUE

interface_exists
is_subclass_of
类/对象 函数


如果此对象是该类的子类，则返回 TRUE

is_a
method_exists
类/对象 函数
PHP Manual

is_subclass_of

(PHP 4, PHP 5, PHP 7)

is_subclass_of — 如果此对象是该类的子类，则返回 TRUE

说明

bool is_subclass_of ( object $object , string $class_name )

如果对象 object 所属类是类 class_name 的子类，则返回 TRUE，否则返回 FALSE。

Note:

自 PHP 5.0.3 起也可以用一个字符串来指定 object 参数（类名）。

Example #1 is_subclass_of() 例子

<?php
// define a class
class WidgetFactory
{
  var $oink = 'moo';
}

// define a child class
class WidgetFactory_Child extends WidgetFactory
{
  var $oink = 'oink';
}

// create a new object
$WF = new WidgetFactory();
$WFC = new WidgetFactory_Child();

if (is_subclass_of($WFC, 'WidgetFactory')) {
  echo "yes, \$WFC is a subclass of WidgetFactory\n";
} else {
  echo "no, \$WFC is not a subclass of WidgetFactory\n";
}

if (is_subclass_of($WF, 'WidgetFactory')) {
  echo "yes, \$WF is a subclass of WidgetFactory\n";
} else {
  echo "no, \$WF is not a subclass of WidgetFactory\n";
}

// usable only since PHP 5.0.3
if (is_subclass_of('WidgetFactory_Child', 'WidgetFactory')) {
  echo "yes, WidgetFactory_Child is a subclass of WidgetFactory\n";
} else {
  echo "no, WidgetFactory_Child is not a subclass of WidgetFactory\n";
}
?>

以上例程会输出：

yes, $WFC is a subclass of WidgetFactory
no, $WF is not a subclass of WidgetFactory
yes, WidgetFactory_Child is a subclass of WidgetFactory

参见 get_class()、
get_parent_class() 和
is_a()。

参数

object

A class name or an object instance

class_name

The class name

allow_string

If this parameter set to false, string class name as object is not allowed. This also prevents from calling autoloader if the class doesn't exist.

返回值

This function returns TRUE if the object object, belongs to a class which is a subclass of class_name, FALSE otherwise.

更新日志

版本 | 说明
5.3.9 | Added allow_string parameter
5.0.3 | You may also specify the object parameter as a string (the name of the class)

范例

Example #2 is_subclass_of() example

<?php
// define a class
class WidgetFactory
{
  var $oink = 'moo';
}

// define a child class
class WidgetFactory_Child extends WidgetFactory
{
  var $oink = 'oink';
}

// create a new object
$WF = new WidgetFactory();
$WFC = new WidgetFactory_Child();

if (is_subclass_of($WFC, 'WidgetFactory')) {
  echo "yes, $WFC is a subclass of WidgetFactory\n";
} else {
  echo "no, $WFC is not a subclass of WidgetFactory\n";
}

if (is_subclass_of($WF, 'WidgetFactory')) {
  echo "yes, $WF is a subclass of WidgetFactory\n";
} else {
  echo "no, $WF is not a subclass of WidgetFactory\n";
}

// usable only since PHP 5.0.3
if (is_subclass_of('WidgetFactory_Child', 'WidgetFactory')) {
  echo "yes, WidgetFactory_Child is a subclass of WidgetFactory\n";
} else {
  echo "no, WidgetFactory_Child is not a subclass of WidgetFactory\n";
}
?>

以上例程会输出：

yes, $WFC is a subclass of WidgetFactory
no, $WF is not a subclass of WidgetFactory
yes, WidgetFactory_Child is a subclass of WidgetFactory

注释

Note:

如果此类不是已知类，使用此函数会使用任何已注册的 autoloader。

参见

  • get_class() - 返回对象的类名
  • get_parent_class() - 返回对象或类的父类名
  • is_a() - 如果对象属于该类或该类是此对象的父类则返回 TRUE
  • class_parents() - 返回指定类的父类。

is_a
method_exists
类/对象 函数


检查类的方法是否存在

is_subclass_of
property_exists
类/对象 函数
PHP Manual

method_exists

(PHP 4, PHP 5, PHP 7)

method_exists — 检查类的方法是否存在

说明

bool method_exists ( mixed $object , string $method_name )

检查类的方法是否存在于指定的 object中。

参数

object

对象示例或者类名。

method_name

方法名。

返回值

如果 method_name 所指的方法在 object 所指的对象类中已定义，则返回 TRUE，否则返回 FALSE。

注释

Note:

如果此类不是已知类，使用此函数会使用任何已注册的 autoloader。

范例

Example #1 method_exists() 例子

<?php
$directory = new Directory('.');
var_dump(method_exists($directory,'read'));
?>

以上例程会输出：

bool(true)

Example #2 Static method_exists() 例子

<?php
var_dump(method_exists('Directory','read'));
?>

以上例程会输出：

bool(true)

参见

  • function_exists() - 如果给定的函数已经被定义就返回 TRUE
  • is_callable() - 检测参数是否为合法的可调用结构
  • class_exists() - 检查类是否已定义

is_subclass_of
property_exists
类/对象 函数


检查对象或类是否具有该属性

method_exists
trait_exists
类/对象 函数
PHP Manual

property_exists

(PHP 5 >= 5.1.0, PHP 7)

property_exists — 检查对象或类是否具有该属性

说明

bool property_exists ( mixed $class , string $property )

本函数检查给出的 property 是否存在于指定的类中（以及是否能在当前范围内访问）。

Note:

As opposed with isset(), property_exists() returns TRUE even if the property has the value NULL.

参数

class

字符串形式的类名或要检查的类的一个对象

property

属性的名字

返回值

如果该属性存在则返回 TRUE，如果不存在则返回 FALSE，出错返回 NULL。

注释

Note:

如果此类不是已知类，使用此函数会使用任何已注册的 autoloader。

Note:

The property_exists() function cannot detect properties that are magically accessible using the __get magic method.

更新日志

版本 | 说明
5.3.0 | This function checks the existence of a property independent of accessibility.

范例

Example #1 A property_exists() example

<?php

class myClass {
    public $mine;
    private $xpto;
    static protected $test;

    static function test() {
        var_dump(property_exists('myClass', 'xpto')); //true
    }
}

var_dump(property_exists('myClass', 'mine'));   //true
var_dump(property_exists(new myClass, 'mine')); //true
var_dump(property_exists('myClass', 'xpto'));   //true, as of PHP 5.3.0
var_dump(property_exists('myClass', 'bar'));    //false
var_dump(property_exists('myClass', 'test'));   //true, as of PHP 5.3.0
myClass::test();

?>

参见

  • method_exists() - 检查类的方法是否存在

method_exists
trait_exists
类/对象 函数


检查指定的 trait 是否存在

property_exists
Classkit
类/对象 函数
PHP Manual

trait_exists

(PHP 5 >= 5.4.0, PHP 7)

trait_exists — 检查指定的 trait 是否存在

说明

bool trait_exists ( string $traitname [, bool $autoload ] )

参数

traitname

待检查的 trait 的名称

autoload

如果尚未加载，是否使用自动加载（autoload）。

返回值

如果 trait 存在返回 TRUE，不存在则返回 FALSE。发生错误的时候返回 NULL。

property_exists
Classkit
类/对象 函数


Classkit

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Classkit 函数
    • classkit_import — Import new class method definitions from a file
    • classkit_method_add — Dynamically adds a new method to a given class
    • classkit_method_copy — Copies a method from class to another
    • classkit_method_redefine — Dynamically changes the code of the given method
    • classkit_method_remove — Dynamically removes the given method
    • classkit_method_rename — Dynamically changes the name of the given method
trait_exists
简介
变量与类型相关扩展


简介

These functions allow the dynamic manipulation of PHP classes, at runtime.

Note:

This extension has been replaced by runkit, which is not limited to class manipulation but has function manipulation, as well.

Classkit
安装／配置
Classkit


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Classkit


安装

此扩展被认为已无人维护及已消亡。然而，此扩展的源代码还可在 PECL SVN 找到： » http://svn.php.net/viewvc/pecl/classkit.

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

CLASSKIT_ACC_PRIVATE (int)
将方法标记为 private
CLASSKIT_ACC_PROTECTED (int)
将方法标记为 protected
CLASSKIT_ACC_PUBLIC (int)
将方法标记为 public

资源类型
Classkit 函数
Classkit


Classkit 函数

Table of Contents

  • classkit_import — Import new class method definitions from a file
  • classkit_method_add — Dynamically adds a new method to a given class
  • classkit_method_copy — Copies a method from class to another
  • classkit_method_redefine — Dynamically changes the code of the given method
  • classkit_method_remove — Dynamically removes the given method
  • classkit_method_rename — Dynamically changes the name of the given method
预定义常量
classkit_import
Classkit


Import new class method definitions from a file

Classkit 函数
classkit_method_add
Classkit 函数
PHP Manual

classkit_import

(PECL classkit >= 0.3)

classkit_import — Import new class method definitions from a file

说明

array classkit_import ( string $filename )

Note: 此函数不能用来操作当前正常运行（或运行链上）的方法。

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

filename

The filename of the class method definitions to import

返回值

Associative array of imported methods

范例

Example #1 classkit_import() example

<?php
// file: newclass.php
class Example {
    function foo() {
        return "bar!\n";
    }
}
?>
<?php
// requires newclass.php (see above)
class Example {
    function foo() {
        return "foo!\n";
    }
}

$e = new Example();

// output original
echo $e->foo();

// import replacement method
classkit_import('newclass.php');

// output imported
echo $e->foo();

?>

以上例程会输出：

foo!
bar!

参见

  • classkit_method_add() - Dynamically adds a new method to a given class
  • classkit_method_copy() - Copies a method from class to another

Classkit 函数
classkit_method_add
Classkit 函数


Dynamically adds a new method to a given class

classkit_import
classkit_method_copy
Classkit 函数
PHP Manual

classkit_method_add

(PECL classkit >= 0.1)

classkit_method_add — Dynamically adds a new method to a given class

说明

bool classkit_method_add ( string $classname , string $methodname , string $args , string $code [, int $flags = CLASSKIT_ACC_PUBLIC ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

classname

The class to which this method will be added

methodname

The name of the method to add

args

Comma-delimited list of arguments for the newly-created method

code

The code to be evaluated when methodname is called

flags

The type of method to create, can be CLASSKIT_ACC_PUBLIC, CLASSKIT_ACC_PROTECTED or CLASSKIT_ACC_PRIVATE

Note:

This parameter is only used as of PHP 5, because, prior to this, all methods were public.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 classkit_method_add() example

<?php
class Example {
    function foo() {
        echo "foo!\n";
    }
}

// create an Example object
$e = new Example();

// Add a new public method
classkit_method_add(
    'Example',
    'add',
    '$num1, $num2',
    'return $num1 + $num2;',
    CLASSKIT_ACC_PUBLIC
);

// add 12 + 4
echo $e->add(12, 4);
?>

以上例程会输出：

16

参见

  • classkit_method_copy() - Copies a method from class to another
  • classkit_method_redefine() - Dynamically changes the code of the given method
  • classkit_method_remove() - Dynamically removes the given method
  • classkit_method_rename() - Dynamically changes the name of the given method
  • create_function() - Create an anonymous (lambda-style) function

classkit_import
classkit_method_copy
Classkit 函数


Copies a method from class to another

classkit_method_add
classkit_method_redefine
Classkit 函数
PHP Manual

classkit_method_copy

(PECL classkit >= 0.2)

classkit_method_copy — Copies a method from class to another

说明

bool classkit_method_copy ( string $dClass , string $dMethod , string $sClass [, string $sMethod ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

dClass

Destination class for copied method

dMethod

Destination method name

sClass

Source class of the method to copy

sMethod

Name of the method to copy from the source class. If this parameter is omitted, the value of dMethod is assumed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 classkit_method_copy() example

<?php
class Foo {
    function example() {
        return "foo!\n";
    }
}

class Bar {
    // initially, no methods
}

// copy the example() method from the Foo class to the Bar class, as baz()
classkit_method_copy('Bar', 'baz', 'Foo', 'example');

// output copied function
echo Bar::baz();
?>

以上例程会输出：

foo!

参见

  • classkit_method_add() - Dynamically adds a new method to a given class
  • classkit_method_redefine() - Dynamically changes the code of the given method
  • classkit_method_remove() - Dynamically removes the given method
  • classkit_method_rename() - Dynamically changes the name of the given method

classkit_method_add
classkit_method_redefine
Classkit 函数


Dynamically changes the code of the given method

classkit_method_copy
classkit_method_remove
Classkit 函数
PHP Manual

classkit_method_redefine

(PECL classkit >= 0.1)

classkit_method_redefine — Dynamically changes the code of the given method

说明

bool classkit_method_redefine ( string $classname , string $methodname , string $args , string $code [, int $flags = CLASSKIT_ACC_PUBLIC ] )

Note: 此函数不能用来操作当前正常运行（或运行链上）的方法。

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

classname

The class in which to redefine the method

methodname

The name of the method to redefine

args

Comma-delimited list of arguments for the redefined method

code

The new code to be evaluated when methodname is called

flags

The redefined method can be CLASSKIT_ACC_PUBLIC, CLASSKIT_ACC_PROTECTED or CLASSKIT_ACC_PRIVATE

Note:

This parameter is only used as of PHP 5, because, prior to this, all methods were public.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 classkit_method_redefine() example

<?php
class Example {
    function foo() {
        return "foo!\n";
    }
}

// create an Example object
$e = new Example();

// output Example::foo() (before redefine)
echo "Before: " . $e->foo();

// Redefine the 'foo' method
classkit_method_redefine(
    'Example',
    'foo',
    '',
    'return "bar!\n";',
    CLASSKIT_ACC_PUBLIC
);

// output Example::foo() (after redefine)
echo "After: " . $e->foo();
?>

以上例程会输出：

Before: foo!
After: bar!

参见

  • classkit_method_add() - Dynamically adds a new method to a given class
  • classkit_method_copy() - Copies a method from class to another
  • classkit_method_remove() - Dynamically removes the given method
  • classkit_method_rename() - Dynamically changes the name of the given method

classkit_method_copy
classkit_method_remove
Classkit 函数


Dynamically removes the given method

classkit_method_redefine
classkit_method_rename
Classkit 函数
PHP Manual

classkit_method_remove

(PECL classkit >= 0.1)

classkit_method_remove — Dynamically removes the given method

说明

bool classkit_method_remove ( string $classname , string $methodname )

Note: 此函数不能用来操作当前正常运行（或运行链上）的方法。

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

classname

The class in which to remove the method

methodname

The name of the method to remove

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 classkit_method_remove() example

<?php
class Example {
    function foo() {
        return "foo!\n";
    }

    function bar() {
        return "bar!\n";
    }
}

// Remove the 'foo' method
classkit_method_remove(
    'Example',
    'foo'
);

echo implode(' ', get_class_methods('Example'));

?>

以上例程会输出：

bar

参见

  • classkit_method_add() - Dynamically adds a new method to a given class
  • classkit_method_copy() - Copies a method from class to another
  • classkit_method_redefine() - Dynamically changes the code of the given method
  • classkit_method_rename() - Dynamically changes the name of the given method

classkit_method_redefine
classkit_method_rename
Classkit 函数


Dynamically changes the name of the given method

classkit_method_remove
Ctype
Classkit 函数
PHP Manual

classkit_method_rename

(PECL classkit >= 0.1)

classkit_method_rename — Dynamically changes the name of the given method

说明

bool classkit_method_rename ( string $classname , string $methodname , string $newname )

Note: 此函数不能用来操作当前正常运行（或运行链上）的方法。

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

classname

The class in which to rename the method

methodname

The name of the method to rename

newname

The new name to give to the renamed method

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 classkit_method_rename() example

<?php
class Example {
    function foo() {
        return "foo!\n";
    }
}

// Rename the 'foo' method to 'bar'
classkit_method_rename(
    'Example',
    'foo',
    'bar'
);

// output renamed function
echo Example::bar();
?>

以上例程会输出：

foo!

参见

  • classkit_method_add() - Dynamically adds a new method to a given class
  • classkit_method_copy() - Copies a method from class to another
  • classkit_method_redefine() - Dynamically changes the code of the given method
  • classkit_method_remove() - Dynamically removes the given method

classkit_method_remove
Ctype
Classkit 函数


字符类型检测

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Ctype 函数
    • ctype_alnum — 做字母和数字字符检测
    • ctype_alpha — 做纯字符检测
    • ctype_cntrl — 做控制字符检测
    • ctype_digit — 做纯数字检测
    • ctype_graph — 做可打印字符串检测，空格除外
    • ctype_lower — 做小写字符检测
    • ctype_print — 做可打印字符检测
    • ctype_punct — 检测可打印的字符是不是不包含空白、数字和字母
    • ctype_space — 做空白字符检测
    • ctype_upper — 做大写字母检测
    • ctype_xdigit — 检测字符串是否只包含十六进制字符
classkit_method_rename
简介
变量与类型相关扩展


简介

该扩展所提供的函数用来检测 在当前的区域设定下（参见 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 库，所以会有明显的性能优势。

Note:

这些函数和 Python 中的 "ctypes" 库没有任何关系。 ctype 的名字源自对应的 C 语言中的头文件 ctype.h。

实际上，这个扩展是先于 Python 的 "ctypes" 的， 如果这个命名给你带来困扰，那也不是我们的错误 ...

Ctype
安装／配置
Ctype


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Ctype


需求

无额外需求，因为标准 C 库中的函数总是可用的。

安装／配置
安装
安装／配置


安装

从 PHP 4.2.0 版本开始，这些函数是默认启用的。 更早的版本，请使用 --enable-ctype 选项来配置和编译 PHP。 也可以使用 --disable-ctype 配置项来禁用 ctype 扩展。

PHP 的 Windows 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。

Note: 从 PHP 4.3.0 开始是内建支持的

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
Ctype 函数
Ctype


Ctype 函数

Table of Contents

  • ctype_alnum — 做字母和数字字符检测
  • ctype_alpha — 做纯字符检测
  • ctype_cntrl — 做控制字符检测
  • ctype_digit — 做纯数字检测
  • ctype_graph — 做可打印字符串检测，空格除外
  • ctype_lower — 做小写字符检测
  • ctype_print — 做可打印字符检测
  • ctype_punct — 检测可打印的字符是不是不包含空白、数字和字母
  • ctype_space — 做空白字符检测
  • ctype_upper — 做大写字母检测
  • ctype_xdigit — 检测字符串是否只包含十六进制字符
预定义常量
ctype_alnum
Ctype


做字母和数字字符检测

Ctype 函数
ctype_alpha
Ctype 函数
PHP Manual

ctype_alnum

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

ctype_alnum — 做字母和数字字符检测

说明

bool ctype_alnum ( string $text )

检查提供的string,text 是否全部为字母和(或)数字字符。

参数

text

测试字符串。

返回值

如果text中所有的字符全部是字母和(或者)数字，返回 TRUE 否则返回FALSE

范例

Example #1 A ctype_alnum() 示例 (使用默认的区域设置)

<?php
$strings = array('AbCd1zyZ9', 'foo!#$bar');
foreach ($strings as $testcase) {
    if (ctype_alnum($testcase)) {
        echo "The string $testcase consists of all letters or digits.\n";
    } else {
        echo "The string $testcase does not consist of all letters or digits.\n";
    }
}
?>

以上例程会输出：

The string AbCd1zyZ9 consists of all letters or digits.
The string foo!#$bar does not consist of all letters or digits.

注释

Note:

如果给出一个 -128 到 255 之间(含)的整数, 将会被解释为该值对应的ASCII字符 (负值将加上 256 以支持扩展ASCII字符). 其它整数将会被解释为该值对应的十进制字符串.

参见

  • ctype_alpha() - 做纯字符检测
  • ctype_digit() - 做纯数字检测
  • setlocale() - 设置地区信息

Ctype 函数
ctype_alpha
Ctype 函数


做纯字符检测

ctype_alnum
ctype_cntrl
Ctype 函数
PHP Manual

ctype_alpha

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

ctype_alpha — 做纯字符检测

说明

bool ctype_alpha ( string $text )

查看提供的string，text里面的所有字符是否只包含字符。 在标准的 C 语言环境下，字母仅仅是指 [A-Za-z] ， ctype_alpha() 等同于 (ctype_upper($text) || ctype_lower($text)) 如果 text 是简单的单个字符串还好，但是在其他语言中有些字母被认为既不是大写也不是小写。

参数

text

被测试的字符串。

返回值

如果在当前语言环境中 text 里的每个字符都是一个字母，那么就返回TRUE，反之则返回FALSE。

范例

Example #1 一个 ctype_alpha() 例子（使用默认的语言环境）

<?php
$strings = array('KjgWZC', 'arf12');
foreach ($strings as $testcase) {
    if (ctype_alpha($testcase)) {
        echo "The string $testcase consists of all letters.\n";
    } else {
        echo "The string $testcase does not consist of all letters.\n";
    }
}
?>

以上例程会输出：

The string KjgWZC consists of all letters.
The string arf12 does not consist of all letters.

注释

Note:

如果给出一个 -128 到 255 之间(含)的整数, 将会被解释为该值对应的ASCII字符 (负值将加上 256 以支持扩展ASCII字符). 其它整数将会被解释为该值对应的十进制字符串.

参见

  • ctype_upper() - 做大写字母检测
  • ctype_lower() - 做小写字符检测
  • setlocale() - 设置地区信息

ctype_alnum
ctype_cntrl
Ctype 函数


做控制字符检测

ctype_alpha
ctype_digit
Ctype 函数
PHP Manual

ctype_cntrl

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

ctype_cntrl — 做控制字符检测

说明

bool ctype_cntrl ( string $text )

检查提供的 string 和 text 里面的字符是不是都是控制字符。 控制字符就是例如：换行、缩进、空格。

参数

text

需要被测试的字符串。

返回值

如果在当前的语言环境下 text 里面的每个字符都是控制字符，就返回 TRUE ；反之就返回 FALSE 。

范例

Example #1 一个 ctype_cntrl() 例子

<?php
$strings = array('string1' => "\n\r\t", 'string2' => 'arf12');
foreach ($strings as $name => $testcase) {
    if (ctype_cntrl($testcase)) {
        echo "The string '$name' consists of all control characters.\n";
    } else {
        echo "The string '$name' does not consist of all control characters.\n";
    }
}
?>

以上例程会输出：

The string 'string1' consists of all control characters.
The string 'string2' does not consist of all control characters.

注释

Note:

如果给出一个 -128 到 255 之间(含)的整数, 将会被解释为该值对应的ASCII字符 (负值将加上 256 以支持扩展ASCII字符). 其它整数将会被解释为该值对应的十进制字符串.

参见

  • ctype_print() - 做可打印字符检测

ctype_alpha
ctype_digit
Ctype 函数


做纯数字检测

ctype_cntrl
ctype_graph
Ctype 函数
PHP Manual

ctype_digit

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

ctype_digit — 做纯数字检测

说明

bool ctype_digit ( string $text )

检查提供的 string 和 text 里面的字符是不是都是数字。

参数

text

需要被测试的字符串。

返回值

如果 text 字符串是一个十进制数字，就返回 TRUE ；反之就返回 FALSE 。

更新日志

版本 | 说明
5.1.0 | 在 PHP 5.1.0 之前，当 text 是一个空字符串的时候，该函数将返回 TRUE 。

范例

Example #1 一个 ctype_digit() 例子

<?php
$strings = array('1820.20', '10002', 'wsl!12');
foreach ($strings as $testcase) {
    if (ctype_digit($testcase)) {
        echo "The string $testcase consists of all digits.\n";
    } else {
        echo "The string $testcase does not consist of all digits.\n";
    }
}
?>

以上例程会输出：

The string 1820.20 does not consist of all digits.
The string 10002 consists of all digits.
The string wsl!12 does not consist of all digits.

Example #2 一个通过 ctype_digit() 来比对字符和整数的例子。

<?php

$numeric_string = '42';
$integer        = 42;

ctype_digit($numeric_string);  // true
ctype_digit($integer);         // false (ASCII 42 is the * character)

is_numeric($numeric_string);   // true
is_numeric($integer);          // true
?>

注释

Note:

这个函数的参数要求是一个 string 这一点是非常有用的，因此当你传入一个 integer 的参数也许不能得到期望的结果。然后，同样需要注意HTML表单将会返回数字字符串而不是一个整型。 看下手册的 types 章节。

Note:

如果给出一个 -128 到 255 之间(含)的整数, 将会被解释为该值对应的ASCII字符 (负值将加上 256 以支持扩展ASCII字符). 其它整数将会被解释为该值对应的十进制字符串.

参见

  • ctype_alnum() - 做字母和数字字符检测
  • ctype_xdigit() - 检测字符串是否只包含十六进制字符
  • is_numeric() - 检测变量是否为数字或数字字符串
  • is_int() - 检测变量是否是整数
  • is_string() - 检测变量是否是字符串

ctype_cntrl
ctype_graph
Ctype 函数


做可打印字符串检测，空格除外

ctype_digit
ctype_lower
Ctype 函数
PHP Manual

ctype_graph

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

ctype_graph — 做可打印字符串检测，空格除外

说明

bool ctype_graph ( string $text )

检查提供的 string 和 text 里面的字符输出都是可见的。

参数

text

需要被测试的字符串。

返回值

如果 text 里面的每个字符都是输出可见的（没有空白），就返回 TRUE ；反之就返回 FALSE 。

范例

Example #1 一个 ctype_graph() 例子

<?php
$strings = array('string1' => "asdf\n\r\t", 'string2' => 'arf12', 'string3' => 'LKA#@%.54');
foreach ($strings as $name => $testcase) {
    if (ctype_graph($testcase)) {
        echo "The string '$name' consists of all (visibly) printable characters.\n";
    } else {
        echo "The string '$name' does not consist of all (visibly) printable characters.\n";
    }
}
?>

以上例程会输出：

The string 'string1' does not consist of all (visibly) printable characters.
The string 'string2' consists of all (visibly) printable characters.
The string 'string3' consists of all (visibly) printable characters.

注释

Note:

如果给出一个 -128 到 255 之间(含)的整数, 将会被解释为该值对应的ASCII字符 (负值将加上 256 以支持扩展ASCII字符). 其它整数将会被解释为该值对应的十进制字符串.

参见

  • ctype_alnum() - 做字母和数字字符检测
  • ctype_print() - 做可打印字符检测
  • ctype_punct() - 检测可打印的字符是不是不包含空白、数字和字母

ctype_digit
ctype_lower
Ctype 函数


做小写字符检测

ctype_graph
ctype_print
Ctype 函数
PHP Manual

ctype_lower

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

ctype_lower — 做小写字符检测

说明

bool ctype_lower ( string $text )

检查提供的 string 和 text 里面的字符是不是都是小写字母。

参数

text

需要被测试的字符串。

返回值

如果在当前的语言环境下 text 里面的每个字符都是小写字母，就返回 TRUE ；反之就返回 FALSE 。

范例

Example #1 一个 ctype_lower() 例子 (使用默认的语言环境)

<?php
$strings = array('aac123', 'qiutoas', 'QASsdks');
foreach ($strings as $testcase) {
    if (ctype_lower($testcase)) {
        echo "The string $testcase consists of all lowercase letters.\n";
    } else {
        echo "The string $testcase does not consist of all lowercase letters.\n";
    }
}
?>

以上例程会输出：

The string aac123 does not consist of all lowercase letters.
The string qiutoas consists of all lowercase letters.
The string QASsdks does not consist of all lowercase letters.

注释

Note:

如果给出一个 -128 到 255 之间(含)的整数, 将会被解释为该值对应的ASCII字符 (负值将加上 256 以支持扩展ASCII字符). 其它整数将会被解释为该值对应的十进制字符串.

参见

  • ctype_alpha() - 做纯字符检测
  • ctype_upper() - 做大写字母检测
  • setlocale() - 设置地区信息

ctype_graph
ctype_print
Ctype 函数


做可打印字符检测

ctype_lower
ctype_punct
Ctype 函数
PHP Manual

ctype_print

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

ctype_print — 做可打印字符检测

说明

bool ctype_print ( string $text )

检查提供的 string 和 text 里面的字符是不是都是可以打印出来。

参数

text

需要被测试的字符串。

返回值

如果在当前的语言环境下 text 里面的每个字符都能被实际输出（包括空白），就返回 TRUE ；如果 text 里面包含控制字符或者那些根本不会有任何输出的字符串，就返回 FALSE 。

范例

Example #1 一个 ctype_print() 例子

<?php
$strings = array('string1' => "asdf\n\r\t", 'string2' => 'arf12', 'string3' => 'LKA#@%.54');
foreach ($strings as $name => $testcase) {
    if (ctype_print($testcase)) {
        echo "The string '$name' consists of all printable characters.\n";
    } else {
        echo "The string '$name' does not consist of all printable characters.\n";
    }
}
?>

以上例程会输出：

The string 'string1' does not consist of all printable characters.
The string 'string2' consists of all printable characters.
The string 'string3' consists of all printable characters.

注释

Note:

如果给出一个 -128 到 255 之间(含)的整数, 将会被解释为该值对应的ASCII字符 (负值将加上 256 以支持扩展ASCII字符). 其它整数将会被解释为该值对应的十进制字符串.

参见

  • ctype_cntrl() - 做控制字符检测
  • ctype_graph() - 做可打印字符串检测，空格除外
  • ctype_punct() - 检测可打印的字符是不是不包含空白、数字和字母

ctype_lower
ctype_punct
Ctype 函数


检测可打印的字符是不是不包含空白、数字和字母

ctype_print
ctype_space
Ctype 函数
PHP Manual

ctype_punct

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

ctype_punct — 检测可打印的字符是不是不包含空白、数字和字母

说明

bool ctype_punct ( string $text )

检查提供的 string 和 text 里面的字符是不是都是标点符号。

参数

text

需要被测试的字符串。

返回值

如果在 text 里面的每个字符都是能打印的，但不是字母、数字，也不是空白，那么就返回 TRUE ；反之则返回 FALSE 。

范例

Example #1 一个 ctype_punct() 的例子

<?php
$strings = array('ABasdk!@!$#', '!@ # $', '*&$()');
foreach ($strings as $testcase) {
    if (ctype_punct($testcase)) {
        echo "The string $testcase consists of all punctuation.\n";
    } else {
        echo "The string $testcase does not consist of all punctuation.\n";
    }
}
?>

以上例程会输出：

The string ABasdk!@!$# does not consist of all punctuation.
The string !@ # $ does not consist of all punctuation.
The string *&$() consists of all punctuation.

注释

Note:

如果给出一个 -128 到 255 之间(含)的整数, 将会被解释为该值对应的ASCII字符 (负值将加上 256 以支持扩展ASCII字符). 其它整数将会被解释为该值对应的十进制字符串.

参见

  • ctype_cntrl() - 做控制字符检测
  • ctype_graph() - 做可打印字符串检测，空格除外

ctype_print
ctype_space
Ctype 函数


做空白字符检测

ctype_punct
ctype_upper
Ctype 函数
PHP Manual

ctype_space

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

ctype_space — 做空白字符检测

说明

bool ctype_space ( string $text )

检查提供的 string 和 text 里面的字符是否包含空白。

参数

text

需要被测试的字符串。

返回值

如果 text 里面的每个字符最终被实际输出的时候都是某种形式的空白，就返回 TRUE ；否则返回 FALSE 。 除了空白字符，还包括缩进，垂直制表符，换行符，回车和换页字符。

范例

Example #1 一个 ctype_space() 例子

<?php
$strings = array('string1' => "\n\r\t", 'string2' => "\narf12", 'string3' => '\n\r\t');
foreach ($strings as $name => $testcase) {
    if (ctype_space($testcase)) {
        echo "The string '$name' consists of all whitespace characters.\n";
    } else {
        echo "The string '$name' does not consist of all whitespace characters.\n";
    }
}
?>

以上例程会输出：

The string 'string1' consists of all whitespace characters.
The string 'string2' does not consist of all whitespace characters.
The string 'string3' does not consist of all whitespace characters.

注释

Note:

如果给出一个 -128 到 255 之间(含)的整数, 将会被解释为该值对应的ASCII字符 (负值将加上 256 以支持扩展ASCII字符). 其它整数将会被解释为该值对应的十进制字符串.

参见

  • ctype_cntrl() - 做控制字符检测
  • ctype_graph() - 做可打印字符串检测，空格除外
  • ctype_punct() - 检测可打印的字符是不是不包含空白、数字和字母

ctype_punct
ctype_upper
Ctype 函数


做大写字母检测

ctype_space
ctype_xdigit
Ctype 函数
PHP Manual

ctype_upper

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

ctype_upper — 做大写字母检测

说明

bool ctype_upper ( string $text )

检查 string 和 text 里面的字符是不是都是大写字母。

参数

text

需要被测试的字符串。

返回值

在当前语言环境下，如果 text 里面的每个字符都是大写字母，就返回 TRUE。

范例

Example #1 一个 ctype_upper() 例子 （使用当前默认语言环境）

<?php
$strings = array('AKLWC139', 'LMNSDO', 'akwSKWsm');
foreach ($strings as $testcase) {
    if (ctype_upper($testcase)) {
        echo "The string $testcase consists of all uppercase letters.\n";
    } else {
        echo "The string $testcase does not consist of all uppercase letters.\n";
    }
}
?>

以上例程会输出：

The string AKLWC139 does not consist of all uppercase letters.
The string LMNSDO consists of all uppercase letters.
The string akwSKWsm does not consist of all uppercase letters.

注释

Note:

如果给出一个 -128 到 255 之间(含)的整数, 将会被解释为该值对应的ASCII字符 (负值将加上 256 以支持扩展ASCII字符). 其它整数将会被解释为该值对应的十进制字符串.

参见

  • ctype_alpha() - 做纯字符检测
  • ctype_lower() - 做小写字符检测
  • setlocale() - 设置地区信息

ctype_space
ctype_xdigit
Ctype 函数


检测字符串是否只包含十六进制字符

ctype_upper
Data Structures
Ctype 函数
PHP Manual

ctype_xdigit

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

ctype_xdigit — 检测字符串是否只包含十六进制字符

说明

bool ctype_xdigit ( string $text )

检查 string 和 text 里面的字符是不是都是十六进制字符串。

参数

text

需要被测试的字符串。

返回值

如果 text 里面的每个字符都是十六进制字符。也就是只能包含十进制的树枝和 [A-Fa-f] 的字母。否则，返回 FALSE 。

范例

Example #1 一个 ctype_xdigit() 的例子

<?php
$strings = array('AB10BC99', 'AR1012', 'ab12bc99');
foreach ($strings as $testcase) {
    if (ctype_xdigit($testcase)) {
        echo "The string $testcase consists of all hexadecimal digits.\n";
    } else {
        echo "The string $testcase does not consist of all hexadecimal digits.\n";
    }
}
?>

以上例程会输出：

The string AB10BC99 consists of all hexadecimal digits.
The string AR1012 does not consist of all hexadecimal digits.
The string ab12bc99 consists of all hexadecimal digits.

注释

Note:

如果给出一个 -128 到 255 之间(含)的整数, 将会被解释为该值对应的ASCII字符 (负值将加上 256 以支持扩展ASCII字符). 其它整数将会被解释为该值对应的十进制字符串.

参见

  • ctype_digit() - 做纯数字检测

ctype_upper
Data Structures
Ctype 函数


Data Structures

  • 简介
  • 安装／配置
    • 需求
    • 安装
  • 预定义常量
  • 范例
  • Collection — The Collection interface
    • Ds\Collection::clear — Removes all values.
    • Ds\Collection::copy — Returns a shallow copy of the collection.
    • Ds\Collection::isEmpty — Returns whether the collection is empty
    • Ds\Collection::toArray — Converts the collection to an array.
  • Hashable — The Hashable interface
    • Ds\Hashable::equals — Determines whether an object is equal to the current instance.
    • Ds\Hashable::hash — Returns a scalar value to be used as a hash value.
  • Sequence — The Sequence interface
    • Ds\Sequence::allocate — Allocates enough memory for a required capacity.
    • Ds\Sequence::apply — Updates all values by applying a callback function to each value.
    • Ds\Sequence::capacity — Returns the current capacity.
    • Ds\Sequence::contains — Determines if the sequence contains given values.
    • Ds\Sequence::filter — Creates a new sequence using a callable to determine which values to include.
    • Ds\Sequence::find — Attempts to find a value's index.
    • Ds\Sequence::first — Returns the first value in the sequence.
    • Ds\Sequence::get — Returns the value at a given index.
    • Ds\Sequence::insert — Inserts values at a given index.
    • Ds\Sequence::join — Joins all values together as a string.
    • Ds\Sequence::last — Returns the last value.
    • Ds\Sequence::map — Returns the result of applying a callback to each value.
    • Ds\Sequence::merge — Returns the result of adding all given values to the sequence.
    • Ds\Sequence::pop — Removes and returns the last value.
    • Ds\Sequence::push — Adds values to the end of the sequence.
    • Ds\Sequence::reduce — Reduces the sequence to a single value using a callback function.
    • Ds\Sequence::remove — Removes and returns a value by index.
    • Ds\Sequence::reverse — Reverses the sequence in-place.
    • Ds\Sequence::reversed — Returns a reversed copy.
    • Ds\Sequence::rotate — Rotates the sequence by a given number of rotations.
    • Ds\Sequence::set — Updates a value at a given index.
    • Ds\Sequence::shift — Removes and returns the first value.
    • Ds\Sequence::slice — Returns a sub-sequence of a given range.
    • Ds\Sequence::sort — Sorts the sequence in-place.
    • Ds\Sequence::sorted — Returns a sorted copy.
    • Ds\Sequence::sum — Returns the sum of all values in the sequence.
    • Ds\Sequence::unshift — Adds values to the front of the sequence.
  • Vector — The Vector class
    • Ds\Vector::allocate — Allocates enough memory for a required capacity.
    • Ds\Vector::apply — Updates all values by applying a callback function to each value.
    • Ds\Vector::capacity — Returns the current capacity.
    • Ds\Vector::clear — Removes all values.
    • Ds\Vector::__construct — Creates a new instance.
    • Ds\Vector::contains — Determines if the vector contains given values.
    • Ds\Vector::copy — Returns a shallow copy of the vector.
    • Ds\Vector::count — Returns the number of values in the collection.
    • Ds\Vector::filter — Creates a new vector using a callable to determine which values to include.
    • Ds\Vector::find — Attempts to find a value's index.
    • Ds\Vector::first — Returns the first value in the vector.
    • Ds\Vector::get — Returns the value at a given index.
    • Ds\Vector::insert — Inserts values at a given index.
    • Ds\Vector::isEmpty — Returns whether the vector is empty
    • Ds\Vector::join — Joins all values together as a string.
    • Ds\Vector::jsonSerialize — Returns a representation that can be converted to JSON.
    • Ds\Vector::last — Returns the last value.
    • Ds\Vector::map — Returns the result of applying a callback to each value.
    • Ds\Vector::merge — Returns the result of adding all given values to the vector.
    • Ds\Vector::pop — Removes and returns the last value.
    • Ds\Vector::push — Adds values to the end of the vector.
    • Ds\Vector::reduce — Reduces the vector to a single value using a callback function.
    • Ds\Vector::remove — Removes and returns a value by index.
    • Ds\Vector::reverse — Reverses the vector in-place.
    • Ds\Vector::reversed — Returns a reversed copy.
    • Ds\Vector::rotate — Rotates the vector by a given number of rotations.
    • Ds\Vector::set — Updates a value at a given index.
    • Ds\Vector::shift — Removes and returns the first value.
    • Ds\Vector::slice — Returns a sub-vector of a given range.
    • Ds\Vector::sort — Sorts the vector in-place.
    • Ds\Vector::sorted — Returns a sorted copy.
    • Ds\Vector::sum — Returns the sum of all values in the vector.
    • Ds\Vector::toArray — Converts the vector to an array.
    • Ds\Vector::unshift — Adds values to the front of the vector.
  • Deque — The Deque class
    • Ds\Deque::allocate — Allocates enough memory for a required capacity.
    • Ds\Deque::apply — Updates all values by applying a callback function to each value.
    • Ds\Deque::capacity — Returns the current capacity.
    • Ds\Deque::clear — Removes all values from the deque.
    • Ds\Deque::__construct — Creates a new instance.
    • Ds\Deque::contains — Determines if the deque contains given values.
    • Ds\Deque::copy — Returns a shallow copy of the deque.
    • Ds\Deque::count — Returns the number of values in the collection.
    • Ds\Deque::filter — Creates a new deque using a callable to determine which values to include.
    • Ds\Deque::find — Attempts to find a value's index.
    • Ds\Deque::first — Returns the first value in the deque.
    • Ds\Deque::get — Returns the value at a given index.
    • Ds\Deque::insert — Inserts values at a given index.
    • Ds\Deque::isEmpty — Returns whether the deque is empty
    • Ds\Deque::join — Joins all values together as a string.
    • Ds\Deque::jsonSerialize — Returns a representation that can be converted to JSON.
    • Ds\Deque::last — Returns the last value.
    • Ds\Deque::map — Returns the result of applying a callback to each value.
    • Ds\Deque::merge — Returns the result of adding all given values to the deque.
    • Ds\Deque::pop — Removes and returns the last value.
    • Ds\Deque::push — Adds values to the end of the deque.
    • Ds\Deque::reduce — Reduces the deque to a single value using a callback function.
    • Ds\Deque::remove — Removes and returns a value by index.
    • Ds\Deque::reverse — Reverses the deque in-place.
    • Ds\Deque::reversed — Returns a reversed copy.
    • Ds\Deque::rotate — Rotates the deque by a given number of rotations.
    • Ds\Deque::set — Updates a value at a given index.
    • Ds\Deque::shift — Removes and returns the first value.
    • Ds\Deque::slice — Returns a sub-deque of a given range.
    • Ds\Deque::sort — Sorts the deque in-place.
    • Ds\Deque::sorted — Returns a sorted copy.
    • Ds\Deque::sum — Returns the sum of all values in the deque.
    • Ds\Deque::toArray — Converts the deque to an array.
    • Ds\Deque::unshift — Adds values to the front of the deque.
  • Map — The Map class
    • Ds\Map::allocate — Allocates enough memory for a required capacity.
    • Ds\Map::apply — Updates all values by applying a callback function to each value.
    • Ds\Map::capacity — Returns the current capacity.
    • Ds\Map::clear — Removes all values.
    • Ds\Map::__construct — Creates a new instance.
    • Ds\Map::copy — Returns a shallow copy of the map.
    • Ds\Map::count — Returns the number of values in the map.
    • Ds\Map::diff — Creates a new map using keys that aren't in another map.
    • Ds\Map::filter — Creates a new map using a callable to determine which pairs to include.
    • Ds\Map::first — Returns the first pair in the map.
    • Ds\Map::get — Returns the value for a given key.
    • Ds\Map::hasKey — Determines whether the map contains a given key.
    • Ds\Map::hasValue — Determines whether the map contains a given value.
    • Ds\Map::intersect — Creates a new map by intersecting keys with another map.
    • Ds\Map::isEmpty — Returns whether the map is empty
    • Ds\Map::jsonSerialize — Returns a representation that can be converted to JSON.
    • Ds\Map::keys — Returns a set of the map's keys.
    • Ds\Map::ksort — Sorts the map in-place by key.
    • Ds\Map::ksorted — Returns a copy, sorted by key.
    • Ds\Map::last — Returns the last pair of the map.
    • Ds\Map::map — Returns the result of applying a callback to each value.
    • Ds\Map::merge — Returns the result of adding all given associations.
    • Ds\Map::pairs — Returns a sequence containing all the pairs of the map.
    • Ds\Map::put — Associates a key with a value.
    • Ds\Map::putAll — Associates all key-value pairs of a traversable object or array.
    • Ds\Map::reduce — Reduces the map to a single value using a callback function.
    • Ds\Map::remove — Removes and returns a value by key.
    • Ds\Map::reverse — Reverses the map in-place.
    • Ds\Map::reversed — Returns a reversed copy.
    • Ds\Map::skip — Returns the pair at a given positional index.
    • Ds\Map::slice — Returns a subset of the map defined by a starting index and length.
    • Ds\Map::sort — Sorts the map in-place by value.
    • Ds\Map::sorted — Returns a copy, sorted by value.
    • Ds\Map::sum — Returns the sum of all values in the map.
    • Ds\Map::toArray — Converts the map to an array.
    • Ds\Map::union — Creates a new map using values from the current instance and another map.
    • Ds\Map::values — Returns a sequence of the map's values.
    • Ds\Map::xor — Creates a new map using keys of either the current instance or of another map, but not of both.
  • Pair — The Pair class
    • Ds\Pair::clear — Removes all values.
    • Ds\Pair::__construct — Creates a new instance.
    • Ds\Pair::copy — Returns a shallow copy of the pair.
    • Ds\Pair::isEmpty — Returns whether the pair is empty
    • Ds\Pair::jsonSerialize — Returns a representation that can be converted to JSON.
    • Ds\Pair::toArray — Converts the pair to an array.
  • Set — The Set class
    • Ds\Set::add — Adds values to the set.
    • Ds\Set::allocate — Allocates enough memory for a required capacity.
    • Ds\Set::capacity — Returns the current capacity.
    • Ds\Set::clear — Removes all values.
    • Ds\Set::__construct — Creates a new instance.
    • Ds\Set::contains — Determines if the set contains all values.
    • Ds\Set::copy — Returns a shallow copy of the set.
    • Ds\Set::count — Returns the number of values in the set.
    • Ds\Set::diff — Creates a new set using values that aren't in another set.
    • Ds\Set::filter — Creates a new set using a callable to determine which values to include.
    • Ds\Set::first — Returns the first value in the set.
    • Ds\Set::get — Returns the value at a given index.
    • Ds\Set::intersect — Creates a new set by intersecting values with another set.
    • Ds\Set::isEmpty — Returns whether the set is empty
    • Ds\Set::join — Joins all values together as a string.
    • Ds\Set::jsonSerialize — Returns a representation that can be converted to JSON.
    • Ds\Set::last — Returns the last value in the set.
    • Ds\Set::merge — Returns the result of adding all given values to the set.
    • Ds\Set::reduce — Reduces the set to a single value using a callback function.
    • Ds\Set::remove — Removes all given values from the set.
    • Ds\Set::reverse — Reverses the set in-place.
    • Ds\Set::reversed — Returns a reversed copy.
    • Ds\Set::slice — Returns a sub-set of a given range.
    • Ds\Set::sort — Sorts the set in-place.
    • Ds\Set::sorted — Returns a sorted copy.
    • Ds\Set::sum — Returns the sum of all values in the set.
    • Ds\Set::toArray — Converts the set to an array.
    • Ds\Set::union — Creates a new set using values from the current instance and another set.
    • Ds\Set::xor — Creates a new set using values in either the current instance or in another set, but not in both.
  • Stack — The Stack class
    • Ds\Stack::allocate — Allocates enough memory for a required capacity.
    • Ds\Stack::capacity — Returns the current capacity.
    • Ds\Stack::clear — Removes all values.
    • Ds\Stack::__construct — Creates a new instance.
    • Ds\Stack::copy — Returns a shallow copy of the stack.
    • Ds\Stack::count — Returns the number of values in the stack.
    • Ds\Stack::isEmpty — Returns whether the stack is empty
    • Ds\Stack::jsonSerialize — Returns a representation that can be converted to JSON.
    • Ds\Stack::peek — Returns the value at the top of the stack.
    • Ds\Stack::pop — Removes and returns the value at the top of the stack.
    • Ds\Stack::push — Pushes values onto the stack.
    • Ds\Stack::toArray — Converts the stack to an array.
  • Queue — The Queue class
    • Ds\Queue::allocate — Allocates enough memory for a required capacity.
    • Ds\Queue::capacity — Returns the current capacity.
    • Ds\Queue::clear — Removes all values.
    • Ds\Queue::__construct — Creates a new instance.
    • Ds\Queue::copy — Returns a shallow copy of the queue.
    • Ds\Queue::count — Returns the number of values in the queue.
    • Ds\Queue::isEmpty — Returns whether the queue is empty
    • Ds\Queue::jsonSerialize — Returns a representation that can be converted to JSON.
    • Ds\Queue::peek — Returns the value at the front of the queue.
    • Ds\Queue::pop — Removes and returns the value at the front of the queue.
    • Ds\Queue::push — Pushes values into the queue.
    • Ds\Queue::toArray — Converts the queue to an array.
  • PriorityQueue — The PriorityQueue class
    • Ds\PriorityQueue::allocate — Allocates enough memory for a required capacity.
    • Ds\PriorityQueue::capacity — Returns the current capacity.
    • Ds\PriorityQueue::clear — Removes all values.
    • Ds\PriorityQueue::__construct — Creates a new instance.
    • Ds\PriorityQueue::copy — Returns a shallow copy of the queue.
    • Ds\PriorityQueue::count — Returns the number of values in the queue.
    • Ds\PriorityQueue::isEmpty — Returns whether the queue is empty
    • Ds\PriorityQueue::jsonSerialize — Returns a representation that can be converted to JSON.
    • Ds\PriorityQueue::peek — Returns the value at the front of the queue.
    • Ds\PriorityQueue::pop — Removes and returns the value with the highest priority.
    • Ds\PriorityQueue::push — Pushes values into the queue.
    • Ds\PriorityQueue::toArray — Converts the queue to an array.
ctype_xdigit
简介
变量与类型相关扩展


简介

Efficient data structures for PHP 7, provided as an alternative to the array.

See » this blog post for benchmarks, discussion and frequently asked questions.

Data Structures
安装／配置
Data Structures


安装／配置

Table of Contents

  • 需求
  • 安装
简介
需求
Data Structures


需求

PHP 7 is required by both the extension and the compatibility polyfill.

安装／配置
安装
安装／配置


安装

The easiest way to install the extension is via » PECL

pecl install ds

You can also build directly from source:

# Dependencies you might need to install
# sudo apt-get install git build-essential php7.0-dev

git clone https://github.com/php-ds/extension "php-ds"
cd php-ds

# Build and install the extension
phpize
./configure
make
make install

# Clean up the build files
make clean
phpize --clean

If you're on Windows, you can » download a compiled .dll on PECL

Note:

If you're using Composer, it's highly recommended that you include » php-ds/php-ds in your project so that your code is still functional in an environment where the extension is not installed. The extension will take priority if installed.

需求
预定义常量
安装／配置


预定义常量

此扩展没有定义常量。

安装
范例
Data Structures


范例

Example #1 Vector

<?php

$vector = new \Ds\Vector();

$vector->push('a');
$vector->push('b', 'c');

$vector[] = 'd';

print_r($vector);

?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
)

Example #2 Map

<?php

$map = new \Ds\Map();

$map->put('a', 1);
$map->put('b', 2);

$map['c'] = 3;

print_r($map);

?>

以上例程的输出类似于：

Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => a
            [value] => 1
        )

    [1] => Ds\Pair Object
        (
            [key] => b
            [value] => 2
        )

    [2] => Ds\Pair Object
        (
            [key] => c
            [value] => 3
        )

)
预定义常量
Collection
Data Structures


The Collection interface

(No version information available, might only be in Git)

简介

Collection is the base interface which covers functionality common to all the data structures in this library. It guarantees that all structures are traversable, countable, and can be converted to json using json_encode().

接口摘要

Ds\Collection implements Traversable , Countable , JsonSerializable {
/* 方法 */
abstract public void clear ( void )
abstract public Ds\Collection copy ( void )
abstract public bool isEmpty ( void )
abstract public array toArray ( void )
}

Table of Contents

  • Ds\Collection::clear — Removes all values.
  • Ds\Collection::copy — Returns a shallow copy of the collection.
  • Ds\Collection::isEmpty — Returns whether the collection is empty
  • Ds\Collection::toArray — Converts the collection to an array.
范例
Ds\Collection::clear
Data Structures


Removes all values.

Collection
Ds\Collection::copy
Collection
PHP Manual

Ds\Collection::clear

(PECL ds >= 1.0.0)

Ds\Collection::clear — Removes all values.

说明

abstract public void Ds\Collection::clear ( void )

Removes all values from the collection.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 Ds\Collection::clear() example

<?php
$collection = new \Ds\Vector([1, 2, 3]);
print_r($collection);

$collection->clear();
print_r($collection);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => 1
    [1] => 2
    [2] => 3
)
Ds\Vector Object
(
)
Collection
Ds\Collection::copy
Collection


Returns a shallow copy of the collection.

Ds\Collection::clear
Ds\Collection::isEmpty
Collection
PHP Manual

Ds\Collection::copy

(PECL ds >= 1.0.0)

Ds\Collection::copy — Returns a shallow copy of the collection.

说明

abstract public Ds\Collection Ds\Collection::copy ( void )

Returns a shallow copy of the collection.

参数

此函数没有参数。

返回值

Returns a shallow copy of the collection.

范例

Example #1 Ds\Collection::copy() example

<?php
$a = new \Ds\Vector([1, 2, 3]);
$b = $a->copy();

$b->push(4);

print_r($a);
print_r($b);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => 1
    [1] => 2
    [2] => 3
)
Ds\Vector Object
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
Ds\Collection::clear
Ds\Collection::isEmpty
Collection


Returns whether the collection is empty

Ds\Collection::copy
Ds\Collection::toArray
Collection
PHP Manual

Ds\Collection::isEmpty

(PECL ds >= 1.0.0)

Ds\Collection::isEmpty — Returns whether the collection is empty

说明

abstract public bool Ds\Collection::isEmpty ( void )

Returns whether the collection is empty.

参数

此函数没有参数。

返回值

Returns TRUE if the collection is empty, FALSE otherwise.

范例

Example #1 Ds\Collection::isEmpty() example

<?php
$a = new \Ds\Vector([1, 2, 3]);
$b = new \Ds\Vector();

var_dump($a->isEmpty());
var_dump($b->isEmpty());
?>

以上例程的输出类似于：

bool(false)
bool(true)
Ds\Collection::copy
Ds\Collection::toArray
Collection


Converts the collection to an array.

Ds\Collection::isEmpty
Hashable
Collection
PHP Manual

Ds\Collection::toArray

(PECL ds >= 1.0.0)

Ds\Collection::toArray — Converts the collection to an array.

说明

abstract public array Ds\Collection::toArray ( void )

Converts the collection to an array.

Note:

Casting to an array is not supported yet.

参数

此函数没有参数。

返回值

An array containing all the values in the same order as the collection.

范例

Example #1 Ds\Collection::toArray() example

<?php
$collection = new \Ds\Vector([1, 2, 3]);

var_dump($collection->toArray());
?>

以上例程的输出类似于：

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
Ds\Collection::isEmpty
Hashable
Collection


The Hashable interface

(No version information available, might only be in Git)

简介

Hashable is an interface which allows objects to be used as keys. It's an alternative to spl_object_hash(), which determines an object's hash based on its handle: this means that two objects that are considered equal by an implicit definition would not treated as equal because they are not the same instance.

hash() is used to return a scalar value to be used as the object's hash value, which determines where it goes in the hash table. While this value does not have to be unique, objects which are equal must have the same hash value.

equals() is used to determine if two objects are equal. It's guaranteed that the comparing object will be an instance of the same class as the subject.

接口摘要

Ds\Hashable {
/* 方法 */
abstract public bool equals ( object $obj )
abstract public mixed hash ( void )
}

Table of Contents

  • Ds\Hashable::equals — Determines whether an object is equal to the current instance.
  • Ds\Hashable::hash — Returns a scalar value to be used as a hash value.
Ds\Collection::toArray
Ds\Hashable::equals
Data Structures


Determines whether an object is equal to the current instance.

Hashable
Ds\Hashable::hash
Hashable
PHP Manual

Ds\Hashable::equals

(PECL ds >= 1.0.0)

Ds\Hashable::equals — Determines whether an object is equal to the current instance.

说明

abstract public bool Ds\Hashable::equals ( object $obj )

Determines whether another object is equal to the current instance.

This method allows objects to be used as keys in structures such as Ds\Map and Ds\Set, or any other lookup structure that honors this interface.

Note:

It's guaranteed that obj is an instance of the same class.

Caution

It's important that objects which are equal also have the same hash value. See Ds\Hashable::hash().

参数

obj

The object to compare the current instance to, which is always an instance of the same class.

返回值

TRUE if equal, FALSE otherwise.

Hashable
Ds\Hashable::hash
Hashable


Returns a scalar value to be used as a hash value.

Ds\Hashable::equals
Sequence
Hashable
PHP Manual

Ds\Hashable::hash

(PECL ds >= 1.0.0)

Ds\Hashable::hash — Returns a scalar value to be used as a hash value.

说明

abstract public mixed Ds\Hashable::hash ( void )

Returns a scalar value to be used as the hash value of the objects.

While the hash value does not define equality, all objects that are equal according to Ds\Hashable::equals() must have the same hash value. Hash values of equal objects don't have to be unique, for example you could just return TRUE for all objects and nothing would break - the only implication would be that hash tables then turn into linked lists because all your objects will be hashed to the same bucket. It's therefore very important that you pick a good hash value, such as an ID or email address.

This method allows objects to be used as keys in structures such as Ds\Map and Ds\Set, or any other lookup structure that honors this interface.

Caution

Do not pick a value that might change within the object, such as a public property. Hash table lookups would fail because the hash has changed.

Caution

All objects that are equal must have the same hash value.

参数

此函数没有参数。

返回值

A scalar value to be used as this object's hash value.

范例

Example #1 Ds\Hashable::hash() example

<?php
class HashableObject implements \Ds\Hashable
{
    private $name;
    private $email;

    public function __construct($name, $email)
    {
        $this->name  = $name;
        $this->email = $email;
    }

    /**
     * Should return the same value for all equal objects, but doesn't have to
     * be unique. This value will not be used to determine equality.
     */
    public function hash()
    {
        return $this->email;
    }

    /**
     * This determines equality, usually during a hash table lookup to determine
     * if the bucket's key matches the lookup key. The hash has to be equal if
     * the objects are equal, otherwise this determination wouldn't be reached.
     */
    public function equals($obj): bool
    {
        return $this->name  === $obj->name
            && $this->email === $obj->email;
    }
}
?>
Ds\Hashable::equals
Sequence
Hashable


The Sequence interface

(No version information available, might only be in Git)

简介

A Sequence describes the behaviour of values arranged in a single, linear dimension. Some languages refer to this as a "List". It's similar to an array that uses incremental integer keys, with the exception of a few characteristics:

  • Values will always be indexed as [0, 1, 2, ..., size - 1].
  • Only allowed to access values by index in the range [0, size - 1].

Use cases:

  • Wherever you would use an array as a list (not concerned with keys).
  • A more efficient alternative to SplDoublyLinkedList and SplFixedArray.

接口摘要

Ds\Sequence implements Ds\Collection {
/* 方法 */
abstract public void allocate ( int $capacity )
abstract public void apply ( callable $callback )
abstract public int capacity ( void )
abstract public bool contains ([ mixed $...values ] )
abstract public Ds\Sequence filter ([ callable $callback ] )
abstract public mixed find ( mixed $value )
abstract public mixed first ( void )
abstract public mixed get ( int $index )
abstract public void insert ( int $index [, mixed $...values ] )
abstract public string join ([ string $glue ] )
abstract public mixed last ( void )
abstract public Ds\Sequence map ( callable $callback )
abstract public Ds\Sequence merge ( mixed $values )
abstract public mixed pop ( void )
abstract public void push ([ mixed $...values ] )
abstract public mixed reduce ( callable $callback [, mixed $initial ] )
abstract public mixed remove ( int $index )
abstract public void reverse ( void )
abstract public Ds\Sequence reversed ( void )
abstract public void rotate ( int $rotations )
abstract public void set ( int $index , mixed $value )
abstract public mixed shift ( void )
abstract public Ds\Sequence slice ( int $index [, int $length ] )
abstract public void sort ([ callable $comparator ] )
abstract public Ds\Sequence sorted ([ callable $comparator ] )
abstract public number sum ( void )
abstract public void unshift ([ mixed $values ] )
}

Table of Contents

  • Ds\Sequence::allocate — Allocates enough memory for a required capacity.
  • Ds\Sequence::apply — Updates all values by applying a callback function to each value.
  • Ds\Sequence::capacity — Returns the current capacity.
  • Ds\Sequence::contains — Determines if the sequence contains given values.
  • Ds\Sequence::filter — Creates a new sequence using a callable to determine which values to include.
  • Ds\Sequence::find — Attempts to find a value's index.
  • Ds\Sequence::first — Returns the first value in the sequence.
  • Ds\Sequence::get — Returns the value at a given index.
  • Ds\Sequence::insert — Inserts values at a given index.
  • Ds\Sequence::join — Joins all values together as a string.
  • Ds\Sequence::last — Returns the last value.
  • Ds\Sequence::map — Returns the result of applying a callback to each value.
  • Ds\Sequence::merge — Returns the result of adding all given values to the sequence.
  • Ds\Sequence::pop — Removes and returns the last value.
  • Ds\Sequence::push — Adds values to the end of the sequence.
  • Ds\Sequence::reduce — Reduces the sequence to a single value using a callback function.
  • Ds\Sequence::remove — Removes and returns a value by index.
  • Ds\Sequence::reverse — Reverses the sequence in-place.
  • Ds\Sequence::reversed — Returns a reversed copy.
  • Ds\Sequence::rotate — Rotates the sequence by a given number of rotations.
  • Ds\Sequence::set — Updates a value at a given index.
  • Ds\Sequence::shift — Removes and returns the first value.
  • Ds\Sequence::slice — Returns a sub-sequence of a given range.
  • Ds\Sequence::sort — Sorts the sequence in-place.
  • Ds\Sequence::sorted — Returns a sorted copy.
  • Ds\Sequence::sum — Returns the sum of all values in the sequence.
  • Ds\Sequence::unshift — Adds values to the front of the sequence.
Ds\Hashable::hash
Ds\Sequence::allocate
Data Structures


Allocates enough memory for a required capacity.

Sequence
Ds\Sequence::apply
Sequence
PHP Manual

Ds\Sequence::allocate

(PECL ds >= 1.0.0)

Ds\Sequence::allocate — Allocates enough memory for a required capacity.

说明

abstract public void Ds\Sequence::allocate ( int $capacity )

Ensures that enough memory is allocated for a required capacity. This removes the need to reallocate the internal as values are added.

参数

capacity

The number of values for which capacity should be allocated.

Note:

Capacity will stay the same if this value is less than or equal to the current capacity.

返回值

没有返回值。

范例

Example #1 Ds\Sequence::allocate() example

<?php
$sequence = new \Ds\Vector();
var_dump($sequence->capacity());

$vector->allocate(100);
var_dump($sequence->capacity());
?>

以上例程的输出类似于：

int(10)
int(100)
Sequence
Ds\Sequence::apply
Sequence


Updates all values by applying a callback function to each value.

Ds\Sequence::allocate
Ds\Sequence::capacity
Sequence
PHP Manual

Ds\Sequence::apply

(PECL ds >= 1.0.0)

Ds\Sequence::apply — Updates all values by applying a callback function to each value.

说明

abstract public void Ds\Sequence::apply ( callable $callback )

Updates all values by applying a callback function to each value in the sequence.

参数

callback

mixed callback ( mixed $value )

A callable to apply to each value in the sequence.

The callback should return what the value should be replaced by.

返回值

没有返回值。

范例

Example #1 Ds\Sequence::apply() example

<?php
$sequence = new \Ds\Sequence([1, 2, 3]);
$sequence->apply(function($value) { return $value * 2; });

print_r($sequence);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => 2
    [1] => 4
    [2] => 6
)
Ds\Sequence::allocate
Ds\Sequence::capacity
Sequence


Returns the current capacity.

Ds\Sequence::apply
Ds\Sequence::contains
Sequence
PHP Manual

Ds\Sequence::capacity

(PECL ds >= 1.0.0)

Ds\Sequence::capacity — Returns the current capacity.

说明

abstract public int Ds\Sequence::capacity ( void )

Returns the current capacity.

参数

此函数没有参数。

返回值

The current capacity.

范例

Example #1 Ds\Sequence::capacity() example

<?php
$sequence = new \Ds\Vector();
var_dump($sequence->capacity());

$sequence->push(...range(1, 50));
var_dump($sequence->capacity());

$sequence[] = "a";
var_dump($sequence->capacity());
?>

以上例程的输出类似于：

int(10)
int(50)
int(75)
Ds\Sequence::apply
Ds\Sequence::contains
Sequence


Determines if the sequence contains given values.

Ds\Sequence::capacity
Ds\Sequence::filter
Sequence
PHP Manual

Ds\Sequence::contains

(PECL ds >= 1.0.0)

Ds\Sequence::contains — Determines if the sequence contains given values.

说明

abstract public bool Ds\Sequence::contains ([ mixed $...values ] )

Determines if the sequence contains all values.

参数

values

Values to check.

返回值

FALSE if any of the provided values are not in the sequence, TRUE otherwise.

范例

Example #1 Ds\Sequence::contains() example

<?php
$sequence = new \Ds\Vector(['a', 'b', 'c', 1, 2, 3]);

var_dump($sequence->contains('a'));                // true
var_dump($sequence->contains('a', 'b'));           // true
var_dump($sequence->contains('c', 'd'));           // false

var_dump($sequence->contains(...['c', 'b', 'a'])); // true

// Always strict
var_dump($sequence->contains(1));                  // true
var_dump($sequence->contains('1'));                // false

var_dump($sequece->contains(...[]));               // true
?>

以上例程的输出类似于：

bool(true)
bool(true)
bool(false)
bool(true)
bool(true)
bool(false)
bool(true)
Ds\Sequence::capacity
Ds\Sequence::filter
Sequence


Creates a new sequence using a callable to determine which values to include.

Ds\Sequence::contains
Ds\Sequence::find
Sequence
PHP Manual

Ds\Sequence::filter

(PECL ds >= 1.0.0)

Ds\Sequence::filter — Creates a new sequence using a callable to determine which values to include.

说明

abstract public Ds\Sequence Ds\Sequence::filter ([ callable $callback ] )

Creates a new sequence using a callable to determine which values to include.

参数

callback

bool callback ( mixed $value )

Optional callable which returns TRUE if the value should be included, FALSE otherwise.

If a callback is not provided, only values which are TRUE (see converting to boolean) will be included.

返回值

A new sequence containing all the values for which either the callback returned TRUE, or all values that convert to TRUE if a callback was not provided.

范例

Example #1 Ds\Sequence::filter() example using callback function

<?php
$sequence = new \Ds\Vector([1, 2, 3, 4, 5]);

var_dump($sequence->filter(function($value) {
    return $value % 2 == 0;
}));
?>

以上例程的输出类似于：

object(Ds\Vector)#3 (2) {
  [0]=>
  int(2)
  [1]=>
  int(4)
}

Example #2 Ds\Sequence::filter() example without a callback function

<?php
$sequence = new \Ds\Vector([0, 1, 'a', true, false]);

var_dump($sequence->filter());
?>

以上例程的输出类似于：

object(Ds\Vector)#2 (3) {
  [0]=>
  int(1)
  [1]=>
  string(1) "a"
  [2]=>
  bool(true)
}
Ds\Sequence::contains
Ds\Sequence::find
Sequence


Attempts to find a value's index.

Ds\Sequence::filter
Ds\Sequence::first
Sequence
PHP Manual

Ds\Sequence::find

(PECL ds >= 1.0.0)

Ds\Sequence::find — Attempts to find a value's index.

说明

abstract public mixed Ds\Sequence::find ( mixed $value )

Returns the index of the value, or FALSE if not found.

参数

value

The value to find.

返回值

The index of the value, or FALSE if not found.

Note:

Values will be compared by value and by type.

范例

Example #1 Ds\Sequence::find() example

<?php
$sequence = new \Ds\Vector(["a", 1, true]);

var_dump($sequence->find("a")); // 0
var_dump($sequence->find("b")); // false
var_dump($sequence->find("1")); // false
var_dump($sequence->find(1));   // 1
?>

以上例程的输出类似于：

int(0)
bool(false)
bool(false)
int(1)
Ds\Sequence::filter
Ds\Sequence::first
Sequence


Returns the first value in the sequence.

Ds\Sequence::find
Ds\Sequence::get
Sequence
PHP Manual

Ds\Sequence::first

(PECL ds >= 1.0.0)

Ds\Sequence::first — Returns the first value in the sequence.

说明

abstract public mixed Ds\Sequence::first ( void )

Returns the first value in the sequence.

参数

此函数没有参数。

返回值

The first value in the sequence.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\Sequence::first() example

<?php
$sequence = new \Ds\Vector([1, 2, 3]);
var_dump($sequence->first());
?>

以上例程的输出类似于：

int(1)
Ds\Sequence::find
Ds\Sequence::get
Sequence


Returns the value at a given index.

Ds\Sequence::first
Ds\Sequence::insert
Sequence
PHP Manual

Ds\Sequence::get

(PECL ds >= 1.0.0)

Ds\Sequence::get — Returns the value at a given index.

说明

abstract public mixed Ds\Sequence::get ( int $index )

Returns the value at a given index.

参数

index

The index to access, starting at 0.

返回值

The value at the requested index.

错误／异常

OutOfRangeException if the index is not valid.

范例

Example #1 Ds\Sequence::get() example

<?php
$sequence = new \Ds\Vector(["a", "b", "c"]);

var_dump($sequence->get(0));
var_dump($sequence->get(1));
var_dump($sequence->get(2));
?>

以上例程的输出类似于：

string(1) "a"
string(1) "b"
string(1) "c"

Example #2 Ds\Sequence::get() example using array syntax

<?php
$sequence = new \Ds\Vector(["a", "b", "c"]);

var_dump($sequence[0]);
var_dump($sequence[1]);
var_dump($sequence[2]);
?>

以上例程的输出类似于：

string(1) "a"
string(1) "b"
string(1) "c"
Ds\Sequence::first
Ds\Sequence::insert
Sequence


Inserts values at a given index.

Ds\Sequence::get
Ds\Sequence::join
Sequence
PHP Manual

Ds\Sequence::insert

(PECL ds >= 1.0.0)

Ds\Sequence::insert — Inserts values at a given index.

说明

abstract public void Ds\Sequence::insert ( int $index [, mixed $...values ] )

Inserts values into the sequence at a given index.

参数

index

The index at which to insert. 0 <= index <= count

Note:

You can insert at the index equal to the number of values.

values

The value or values to insert.

返回值

没有返回值。

错误／异常

OutOfRangeException if the index is not valid.

范例

Example #1 Ds\Sequence::insert() example

<?php
$sequence = new \Ds\Vector();

$sequence->insert(0, "e");             // [e]
$sequence->insert(1, "f");             // [e, f]
$sequence->insert(2, "g");             // [e, f, g]
$sequence->insert(0, "a", "b");        // [a, b, e, f, g]
$sequence->insert(2, ...["c", "d"]);   // [a, b, c, d, e, f, g]

var_dump($sequence);
?>

以上例程的输出类似于：

object(Ds\Vector)#1 (7) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  [2]=>
  string(1) "c"
  [3]=>
  string(1) "d"
  [4]=>
  string(1) "e"
  [5]=>
  string(1) "f"
  [6]=>
  string(1) "g"
}
Ds\Sequence::get
Ds\Sequence::join
Sequence


Joins all values together as a string.

Ds\Sequence::insert
Ds\Sequence::last
Sequence
PHP Manual

Ds\Sequence::join

(PECL ds >= 1.0.0)

Ds\Sequence::join — Joins all values together as a string.

说明

abstract public string Ds\Sequence::join ([ string $glue ] )

Joins all values together as a string using an optional separator between each value.

参数

glue

An optional string to separate each value.

返回值

All values of the sequence joined together as a string.

范例

Example #1 Ds\Sequence::join() example using a separator string

<?php
$sequence = new \Ds\Vector(["a", "b", "c", 1, 2, 3]);

var_dump($sequence->join("|"));
?>

以上例程的输出类似于：

string(11) "a|b|c|1|2|3"

Example #2 Ds\Sequence::join() example without a separator string

<?php
$sequence = new \Ds\Vector(["a", "b", "c", 1, 2, 3]);

var_dump($sequence->join());
?>

以上例程的输出类似于：

string(11) "abc123"
Ds\Sequence::insert
Ds\Sequence::last
Sequence


Returns the last value.

Ds\Sequence::join
Ds\Sequence::map
Sequence
PHP Manual

Ds\Sequence::last

(PECL ds >= 1.0.0)

Ds\Sequence::last — Returns the last value.

说明

abstract public mixed Ds\Sequence::last ( void )

Returns the last value in the sequence.

参数

此函数没有参数。

返回值

The last value in the sequence.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\Sequence::last() example

<?php
$sequence = new \Ds\Vector([1, 2, 3]);
var_dump($sequence->last());
?>

以上例程的输出类似于：

int(3)
Ds\Sequence::join
Ds\Sequence::map
Sequence


Returns the result of applying a callback to each value.

Ds\Sequence::last
Ds\Sequence::merge
Sequence
PHP Manual

Ds\Sequence::map

(PECL ds >= 1.0.0)

Ds\Sequence::map — Returns the result of applying a callback to each value.

说明

abstract public Ds\Sequence Ds\Sequence::map ( callable $callback )

Returns the result of applying a callback function to each value in the sequence.

参数

callback

mixed callback ( mixed $value )

A callable to apply to each value in the sequence.

The callable should return what the new value will be in the new sequence.

返回值

The result of applying a callback to each value in the sequence.

Note:

The values of the current instance won't be affected.

范例

Example #1 Ds\Sequence::map() example

<?php
$sequence = new \Ds\Vector([1, 2, 3]);

print_r($sequence->map(function($value) { return $value * 2; }));
print_r($sequence);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => 2
    [1] => 4
    [2] => 6
)
Ds\Vector Object
(
    [0] => 1
    [1] => 2
    [2] => 3
)
Ds\Sequence::last
Ds\Sequence::merge
Sequence


Returns the result of adding all given values to the sequence.

Ds\Sequence::map
Ds\Sequence::pop
Sequence
PHP Manual

Ds\Sequence::merge

(PECL ds >= 1.0.0)

Ds\Sequence::merge — Returns the result of adding all given values to the sequence.

说明

abstract public Ds\Sequence Ds\Sequence::merge ( mixed $values )

Returns the result of adding all given values to the sequence.

参数

values

A traversable object or an array.

返回值

The result of adding all given values to the sequence, effectively the same as adding the values to a copy, then returning that copy.

Note:

The current instance won't be affected.

范例

Example #1 Ds\Sequence::merge() example

<?php
$sequence = new \Ds\Vector([1, 2, 3]);

var_dump($sequence->merge([4, 5, 6]));
var_dump($sequence);
?>

以上例程的输出类似于：

object(Ds\Vector)#2 (6) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
  [5]=>
  int(6)
}
object(Ds\Vector)#1 (3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
Ds\Sequence::map
Ds\Sequence::pop
Sequence


Removes and returns the last value.

Ds\Sequence::merge
Ds\Sequence::push
Sequence
PHP Manual

Ds\Sequence::pop

(PECL ds >= 1.0.0)

Ds\Sequence::pop — Removes and returns the last value.

说明

abstract public mixed Ds\Sequence::pop ( void )

Removes and returns the last value.

参数

此函数没有参数。

返回值

The removed last value.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\Sequence::pop() example

<?php
$sequence = new \Ds\Vector([1, 2, 3]);

var_dump($sequence->pop());
var_dump($sequence->pop());
var_dump($sequence->pop());
?>

以上例程的输出类似于：

int(3)
int(2)
int(1)
Ds\Sequence::merge
Ds\Sequence::push
Sequence


Adds values to the end of the sequence.

Ds\Sequence::pop
Ds\Sequence::reduce
Sequence
PHP Manual

Ds\Sequence::push

(PECL ds >= 1.0.0)

Ds\Sequence::push — Adds values to the end of the sequence.

说明

abstract public void Ds\Sequence::push ([ mixed $...values ] )

Adds values to the end of the sequence.

参数

values

The values to add.

返回值

没有返回值。

范例

Example #1 Ds\Sequence::push() example

<?php
$sequence = new \Ds\Vector();

$sequence->push("a");
$sequence->push("b");
$sequence->push("c", "d");
$sequence->push(...["e", "f"]);

print_r($sequence);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
    [5] => f
)
Ds\Sequence::pop
Ds\Sequence::reduce
Sequence


Reduces the sequence to a single value using a callback function.

Ds\Sequence::push
Ds\Sequence::remove
Sequence
PHP Manual

Ds\Sequence::reduce

(PECL ds >= 1.0.0)

Ds\Sequence::reduce — Reduces the sequence to a single value using a callback function.

说明

abstract public mixed Ds\Sequence::reduce ( callable $callback [, mixed $initial ] )

Reduces the sequence to a single value using a callback function.

参数

callback
mixed callback ( mixed $carry , mixed $value )
carry

The return value of the previous callback, or initial if it's the first iteration.

value

The value of the current iteration.

initial

The initial value of the carry value. Can be NULL.

返回值

The return value of the final callback.

范例

Example #1 Ds\Sequence::reduce() with initial value example

<?php
$sequence = new \Ds\Vector([1, 2, 3]);

$callback = function($carry, $value) {
    return $carry * $value;
};

var_dump($sequence->reduce($callback, 5));

// Iterations:
//
// $carry = $initial = 5
//
// $carry = $carry * 1 =  5
// $carry = $carry * 2 = 10
// $carry = $carry * 3 = 30
?>

以上例程的输出类似于：

int(30)

Example #2 Ds\Sequence::reduce() without an initial value example

<?php
$sequence = new \Ds\Vector([1, 2, 3]);

var_dump($sequence->reduce(function($carry, $value) {
    return $carry + $value + 5;
}));

// Iterations:
//
// $carry = $initial = null
//
// $carry = $carry + 1 + 5 =  6
// $carry = $carry + 2 + 5 = 13
// $carry = $carry + 3 + 5 = 21
?>

以上例程的输出类似于：

int(21)
Ds\Sequence::push
Ds\Sequence::remove
Sequence


Removes and returns a value by index.

Ds\Sequence::reduce
Ds\Sequence::reverse
Sequence
PHP Manual

Ds\Sequence::remove

(PECL ds >= 1.0.0)

Ds\Sequence::remove — Removes and returns a value by index.

说明

abstract public mixed Ds\Sequence::remove ( int $index )

Removes and returns a value by index.

参数

index

The index of the value to remove.

返回值

The value that was removed.

错误／异常

OutOfRangeException if the index is not valid.

范例

Example #1 Ds\Sequence::remove() example

<?php
$sequence = new \Ds\Vector(["a", "b", "c"]);

var_dump($sequence->remove(1));
var_dump($sequence->remove(0));
var_dump($sequence->remove(0));
?>

以上例程的输出类似于：

string(1) "b"
string(1) "a"
string(1) "c"
Ds\Sequence::reduce
Ds\Sequence::reverse
Sequence


Reverses the sequence in-place.

Ds\Sequence::remove
Ds\Sequence::reversed
Sequence
PHP Manual

Ds\Sequence::reverse

(PECL ds >= 1.0.0)

Ds\Sequence::reverse — Reverses the sequence in-place.

说明

abstract public void Ds\Sequence::reverse ( void )

Reverses the sequence in-place.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 Ds\Sequence::reverse() example

<?php
$sequence = new \Ds\Vector(["a", "b", "c"]);
$sequence->reverse();

print_r($sequence);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => c
    [1] => b
    [2] => a
)
Ds\Sequence::remove
Ds\Sequence::reversed
Sequence


Returns a reversed copy.

Ds\Sequence::reverse
Ds\Sequence::rotate
Sequence
PHP Manual

Ds\Sequence::reversed

(PECL ds >= 1.0.0)

Ds\Sequence::reversed — Returns a reversed copy.

说明

abstract public Ds\Sequence Ds\Sequence::reversed ( void )

Returns a reversed copy of the sequence.

参数

此函数没有参数。

返回值

A reversed copy of the sequence.

Note:

The current instance is not affected.

范例

Example #1 Ds\Sequence::reversed() example

<?php
$sequence = new \Ds\Vector(["a", "b", "c"]);

print_r($sequence->reversed());
print_r($sequence);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => c
    [1] => b
    [2] => a
)
Ds\Vector Object
(
    [0] => a
    [1] => b
    [2] => c
)
Ds\Sequence::reverse
Ds\Sequence::rotate
Sequence


Rotates the sequence by a given number of rotations.

Ds\Sequence::reversed
Ds\Sequence::set
Sequence
PHP Manual

Ds\Sequence::rotate

(PECL ds >= 1.0.0)

Ds\Sequence::rotate — Rotates the sequence by a given number of rotations.

说明

abstract public void Ds\Sequence::rotate ( int $rotations )

Rotates the sequence by a given number of rotations, which is equivalent to successively calling $sequence->push($sequence->shift()) if the number of rotations is positive, or $sequence->unshift($sequence->pop()) if negative.

参数

rotations

The number of times the sequence should be rotated.

返回值

没有返回值。. The sequence of the current instance will be rotated.

范例

Example #1 Ds\Sequence::rotate() example

<?php
$sequence = new \Ds\Vector(["a", "b", "c", "d"]);

$sequence->rotate(1);  // "a" is shifted, then pushed.
print_r($sequence);

$sequence->rotate(2);  // "b" and "c" are both shifted, the pushed.
print_r($sequence);
?>

以上例程的输出类似于：

(
    [0] => b
    [1] => c
    [2] => d
    [3] => a
)
Ds\Vector Object
(
    [0] => d
    [1] => a
    [2] => b
    [3] => c
)
Ds\Sequence::reversed
Ds\Sequence::set
Sequence


Updates a value at a given index.

Ds\Sequence::rotate
Ds\Sequence::shift
Sequence
PHP Manual

Ds\Sequence::set

(PECL ds >= 1.0.0)

Ds\Sequence::set — Updates a value at a given index.

说明

abstract public void Ds\Sequence::set ( int $index , mixed $value )

Updates a value at a given index.

参数

index

The index of the value to update.

value

The new value.

返回值

没有返回值。

错误／异常

OutOfRangeException if the index is not valid.

范例

Example #1 Ds\Sequence::set() example

<?php
$sequence = new \Ds\Vector(["a", "b", "c"]);

$sequence->set(1, "_");
print_r($sequence);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => a
    [1] => _
    [2] => c
)

Example #2 Ds\Sequence::set() example using array syntax

<?php
$sequence = new \Ds\Vector(["a", "b", "c"]);

$sequence[1] = "_";
print_r($sequence);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => a
    [1] => _
    [2] => c
)
Ds\Sequence::rotate
Ds\Sequence::shift
Sequence


Removes and returns the first value.

Ds\Sequence::set
Ds\Sequence::slice
Sequence
PHP Manual

Ds\Sequence::shift

(PECL ds >= 1.0.0)

Ds\Sequence::shift — Removes and returns the first value.

说明

abstract public mixed Ds\Sequence::shift ( void )

Removes and returns the first value.

参数

此函数没有参数。

返回值

The first value, which was removed.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\Sequence::shift() example

<?php
$sequence = new \Ds\Vector(["a", "b", "c"]);

var_dump($sequence->shift());
var_dump($sequence->shift());
var_dump($sequence->shift());
?>

以上例程的输出类似于：

string(1) "a"
string(1) "b"
string(1) "c"
Ds\Sequence::set
Ds\Sequence::slice
Sequence


Returns a sub-sequence of a given range.

Ds\Sequence::shift
Ds\Sequence::sort
Sequence
PHP Manual

Ds\Sequence::slice

(PECL ds >= 1.0.0)

Ds\Sequence::slice — Returns a sub-sequence of a given range.

说明

abstract public Ds\Sequence Ds\Sequence::slice ( int $index [, int $length ] )

Creates a sub-sequence of a given range.

参数

index

The index at which the sub-sequence starts.

If positive, the sequence will start at that index in the sequence. If negative, the sequence will start that far from the end.

length

If a length is given and is positive, the resulting sequence will have up to that many values in it. If the length results in an overflow, only values up to the end of the sequence will be included. If a length is given and is negative, the sequence will stop that many values from the end. If a length is not provided, the resulting sequence will contain all values between the index and the end of the sequence.

返回值

A sub-sequence of the given range.

范例

Example #1 Ds\Sequence::slice() example

<?php
$sequence = new \Ds\Vector(["a", "b", "c", "d", "e"]);

// Slice from 2 onwards
print_r($sequence->slice(2));

// Slice from 1, for a length of 3
print_r($sequence->slice(1, 3));

// Slice from 1 onwards
print_r($sequence->slice(1));

// Slice from 2 from the end onwards
print_r($sequence->slice(-2));

// Slice from 1 to 1 from the end
print_r($sequence->slice(1, -1));
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => c
    [1] => d
    [2] => e
)
Ds\Vector Object
(
    [0] => b
    [1] => c
    [2] => d
)
Ds\Vector Object
(
    [0] => b
    [1] => c
    [2] => d
    [3] => e
)
Ds\Vector Object
(
    [0] => d
    [1] => e
)
Ds\Vector Object
(
    [0] => b
    [1] => c
    [2] => d
)
Ds\Sequence::shift
Ds\Sequence::sort
Sequence


Sorts the sequence in-place.

Ds\Sequence::slice
Ds\Sequence::sorted
Sequence
PHP Manual

Ds\Sequence::sort

(PECL ds >= 1.0.0)

Ds\Sequence::sort — Sorts the sequence in-place.

说明

abstract public void Ds\Sequence::sort ([ callable $comparator ] )

Sorts the sequence in-place, using an optional comparator function.

参数

comparator

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )
Caution

Returning non-integer values from the comparison function, such as float, will result in an internal cast to integer of the callback's return value. So values such as 0.99 and 0.1 will both be cast to an integer value of 0, which will compare such values as equal.

返回值

没有返回值。

范例

Example #1 Ds\Sequence::sort() example

<?php
$sequence = new \Ds\Vector([4, 5, 1, 3, 2]);
$sequence->sort();

print_r($sequence);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)

Example #2 Ds\Sequence::sort() example using a comparator

<?php
$sequence = new \Ds\Vector([4, 5, 1, 3, 2]);

$sequence->sort(function($a, $b) {
    return $b <=> $a;
});

print_r($sequence);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => 5
    [1] => 4
    [2] => 3
    [3] => 2
    [4] => 1
)
Ds\Sequence::slice
Ds\Sequence::sorted
Sequence


Returns a sorted copy.

Ds\Sequence::sort
Ds\Sequence::sum
Sequence
PHP Manual

Ds\Sequence::sorted

(PECL ds >= 1.0.0)

Ds\Sequence::sorted — Returns a sorted copy.

说明

abstract public Ds\Sequence Ds\Sequence::sorted ([ callable $comparator ] )

Returns a sorted copy, using an optional comparator function.

参数

comparator

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )
Caution

Returning non-integer values from the comparison function, such as float, will result in an internal cast to integer of the callback's return value. So values such as 0.99 and 0.1 will both be cast to an integer value of 0, which will compare such values as equal.

返回值

Returns a sorted copy of the sequence.

范例

Example #1 Ds\Sequence::sorted() example

<?php
$sequence = new \Ds\Vector([4, 5, 1, 3, 2]);

print_r($sequence->sorted());
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)

Example #2 Ds\Sequence::sorted() example using a comparator

<?php
$sequence = new \Ds\Vector([4, 5, 1, 3, 2]);

$sorted = $sequence->sorted(function($a, $b) {
    return $b <=> $a;
});

print_r($sorted);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => 5
    [1] => 4
    [2] => 3
    [3] => 2
    [4] => 1
)
Ds\Sequence::sort
Ds\Sequence::sum
Sequence


Returns the sum of all values in the sequence.

Ds\Sequence::sorted
Ds\Sequence::unshift
Sequence
PHP Manual

Ds\Sequence::sum

(PECL ds >= 1.0.0)

Ds\Sequence::sum — Returns the sum of all values in the sequence.

说明

abstract public number Ds\Sequence::sum ( void )

Returns the sum of all values in the sequence.

Note:

Arrays and objects are considered equal to zero when calculating the sum.

参数

此函数没有参数。

返回值

The sum of all the values in the sequence as either a float or int depending on the values in the sequence.

范例

Example #1 Ds\Sequence::sum() integer example

<?php
$sequence = new \Ds\Vector([1, 2, 3]);
var_dump($sequence->sum());
?>

以上例程的输出类似于：

int(6)

Example #2 Ds\Sequence::sum() float example

<?php
$sequence = new \Ds\Vector([1, 2.5, 3]);
var_dump($sequence->sum());
?>

以上例程的输出类似于：

float(6.5)
Ds\Sequence::sorted
Ds\Sequence::unshift
Sequence


Adds values to the front of the sequence.

Ds\Sequence::sum
Vector
Sequence
PHP Manual

Ds\Sequence::unshift

(PECL ds >= 1.0.0)

Ds\Sequence::unshift — Adds values to the front of the sequence.

说明

abstract public void Ds\Sequence::unshift ([ mixed $values ] )

Adds values to the front of the sequence, moving all the current values forward to make room for the new values.

参数

values

The values to add to the front of the sequence.

Note:

Multiple values will be added in the same order that they are passed.

返回值

没有返回值。

范例

Example #1 Ds\Sequence::unshift() example

<?php
$sequence = new \Ds\Vector([1, 2, 3]);

$sequence->unshift("a");
$sequence->unshift("b", "c");

print_r($sequence);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => b
    [1] => c
    [2] => a
    [3] => 1
    [4] => 2
    [5] => 3
)
Ds\Sequence::sum
Vector
Sequence


The Vector class

(No version information available, might only be in Git)

简介

A Vector is a sequence of values in a contiguous buffer that grows and shrinks automatically. It's the most efficient sequential structure because a value's index is a direct mapping to its index in the buffer, and the growth factor isn't bound to a specific multiple or exponent.

Strengths

  • Supports array syntax (square brackets).
  • Uses less overall memory than an array for the same number of values.
  • Automatically frees allocated memory when its size drops low enough.
  • Capacity does not have to be a power of 2.
  • get(),
set(),
push(),
pop() are all O(1).

Weaknesses

  • shift(),
unshift(),
insert() and
remove() are all O(n).

类摘要

Ds\Vector implements Ds\Sequence {
/* Constants */
const int MIN_CAPACITY = 10 ;
/* 方法 */
public void allocate ( int $capacity )
public void apply ( callable $callback )
public int capacity ( void )
public void clear ( void )
public bool contains ([ mixed $...values ] )
public Ds\Vector copy ( void )
public Ds\Vector filter ([ callable $callback ] )
public mixed find ( mixed $value )
public mixed first ( void )
public mixed get ( int $index )
public void insert ( int $index [, mixed $...values ] )
public bool isEmpty ( void )
public string join ([ string $glue ] )
public mixed last ( void )
public Ds\Vector map ( callable $callback )
public Ds\Vector merge ( mixed $values )
public mixed pop ( void )
public void push ([ mixed $...values ] )
public mixed reduce ( callable $callback [, mixed $initial ] )
public mixed remove ( int $index )
public void reverse ( void )
public Ds\Vector reversed ( void )
public void rotate ( int $rotations )
public void set ( int $index , mixed $value )
public mixed shift ( void )
public Ds\Vector slice ( int $index [, int $length ] )
public void sort ([ callable $comparator ] )
public Ds\Vector sorted ([ callable $comparator ] )
public number sum ( void )
public array toArray ( void )
public void unshift ([ mixed $values ] )
}

预定义常量

Ds\Vector::MIN_CAPACITY

Table of Contents

  • Ds\Vector::allocate — Allocates enough memory for a required capacity.
  • Ds\Vector::apply — Updates all values by applying a callback function to each value.
  • Ds\Vector::capacity — Returns the current capacity.
  • Ds\Vector::clear — Removes all values.
  • Ds\Vector::__construct — Creates a new instance.
  • Ds\Vector::contains — Determines if the vector contains given values.
  • Ds\Vector::copy — Returns a shallow copy of the vector.
  • Ds\Vector::count — Returns the number of values in the collection.
  • Ds\Vector::filter — Creates a new vector using a callable to determine which values to include.
  • Ds\Vector::find — Attempts to find a value's index.
  • Ds\Vector::first — Returns the first value in the vector.
  • Ds\Vector::get — Returns the value at a given index.
  • Ds\Vector::insert — Inserts values at a given index.
  • Ds\Vector::isEmpty — Returns whether the vector is empty
  • Ds\Vector::join — Joins all values together as a string.
  • Ds\Vector::jsonSerialize — Returns a representation that can be converted to JSON.
  • Ds\Vector::last — Returns the last value.
  • Ds\Vector::map — Returns the result of applying a callback to each value.
  • Ds\Vector::merge — Returns the result of adding all given values to the vector.
  • Ds\Vector::pop — Removes and returns the last value.
  • Ds\Vector::push — Adds values to the end of the vector.
  • Ds\Vector::reduce — Reduces the vector to a single value using a callback function.
  • Ds\Vector::remove — Removes and returns a value by index.
  • Ds\Vector::reverse — Reverses the vector in-place.
  • Ds\Vector::reversed — Returns a reversed copy.
  • Ds\Vector::rotate — Rotates the vector by a given number of rotations.
  • Ds\Vector::set — Updates a value at a given index.
  • Ds\Vector::shift — Removes and returns the first value.
  • Ds\Vector::slice — Returns a sub-vector of a given range.
  • Ds\Vector::sort — Sorts the vector in-place.
  • Ds\Vector::sorted — Returns a sorted copy.
  • Ds\Vector::sum — Returns the sum of all values in the vector.
  • Ds\Vector::toArray — Converts the vector to an array.
  • Ds\Vector::unshift — Adds values to the front of the vector.
Ds\Sequence::unshift
Ds\Vector::allocate
Data Structures


Allocates enough memory for a required capacity.

Vector
Ds\Vector::apply
Vector
PHP Manual

Ds\Vector::allocate

(PECL ds >= 1.0.0)

Ds\Vector::allocate — Allocates enough memory for a required capacity.

说明

public void Ds\Vector::allocate ( int $capacity )

Ensures that enough memory is allocated for a required capacity. This removes the need to reallocate the internal as values are added.

参数

capacity

The number of values for which capacity should be allocated.

Note:

Capacity will stay the same if this value is less than or equal to the current capacity.

返回值

没有返回值。

范例

Example #1 Ds\Vector::allocate() example

<?php
$vector = new \Ds\Vector();
var_dump($vector->capacity());

$vector->allocate(100);
var_dump($vector->capacity());
?>

以上例程的输出类似于：

int(10)
int(100)
Vector
Ds\Vector::apply
Vector


Updates all values by applying a callback function to each value.

Ds\Vector::allocate
Ds\Vector::capacity
Vector
PHP Manual

Ds\Vector::apply

(PECL ds >= 1.0.0)

Ds\Vector::apply — Updates all values by applying a callback function to each value.

说明

public void Ds\Vector::apply ( callable $callback )

Updates all values by applying a callback function to each value in the vector.

参数

callback

mixed callback ( mixed $value )

A callable to apply to each value in the vector.

The callback should return what the value should be replaced by.

返回值

没有返回值。

范例

Example #1 Ds\Vector::apply() example

<?php
$vector = new \Ds\Vector([1, 2, 3]);
$vector->apply(function($value) { return $value * 2; });

print_r($vector);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => 2
    [1] => 4
    [2] => 6
)
Ds\Vector::allocate
Ds\Vector::capacity
Vector


Returns the current capacity.

Ds\Vector::apply
Ds\Vector::clear
Vector
PHP Manual

Ds\Vector::capacity

(PECL ds >= 1.0.0)

Ds\Vector::capacity — Returns the current capacity.

说明

public int Ds\Vector::capacity ( void )

Returns the current capacity.

参数

此函数没有参数。

返回值

The current capacity.

范例

Example #1 Ds\Vector::capacity() example

<?php
$vector = new \Ds\Vector();
var_dump($vector->capacity());

$vector->push(...range(1, 50));
var_dump($vector->capacity());

$vector[] = "a";
var_dump($vector->capacity());
?>

以上例程的输出类似于：

int(10)
int(50)
int(75)
Ds\Vector::apply
Ds\Vector::clear
Vector


Removes all values.

Ds\Vector::capacity
Ds\Vector::__construct
Vector
PHP Manual

Ds\Vector::clear

(PECL ds >= 1.0.0)

Ds\Vector::clear — Removes all values.

说明

public void Ds\Vector::clear ( void )

Removes all values from the vector.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 Ds\Vector::clear() example

<?php
$vector = new \Ds\Vector([1, 2, 3]);
print_r($vector);

$vector->clear();
print_r($vector);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => 1
    [1] => 2
    [2] => 3
)
Ds\Vector Object
(
)
Ds\Vector::capacity
Ds\Vector::__construct
Vector


Creates a new instance.

Ds\Vector::clear
Ds\Vector::contains
Vector
PHP Manual

Ds\Vector::__construct

(PECL ds >= 1.0.0)

Ds\Vector::__construct — Creates a new instance.

说明

public Ds\Vector::__construct ([ mixed $values ] )

Creates a new instance, using either a traversable object or an array for the initial values.

参数

values

A traversable object or an array to use for the initial values.

范例

Example #1 Ds\Vector::__construct() example

<?php
$vector = new \Ds\Vector();
var_dump($vector);

$vector = new \Ds\Vector([1, 2, 3]);
var_dump($vector);
?>

以上例程的输出类似于：

object(Ds\Vector)#2 (0) {
}
object(Ds\Vector)#2 (3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
Ds\Vector::clear
Ds\Vector::contains
Vector


Determines if the vector contains given values.

Ds\Vector::__construct
Ds\Vector::copy
Vector
PHP Manual

Ds\Vector::contains

(PECL ds >= 1.0.0)

Ds\Vector::contains — Determines if the vector contains given values.

说明

public bool Ds\Vector::contains ([ mixed $...values ] )

Determines if the vector contains all values.

参数

values

Values to check.

返回值

FALSE if any of the provided values are not in the vector, TRUE otherwise.

范例

Example #1 Ds\Vector::contains() example

<?php
$vector = new \Ds\Vector(['a', 'b', 'c', 1, 2, 3]);

var_dump($vector->contains('a'));                // true
var_dump($vector->contains('a', 'b'));           // true
var_dump($vector->contains('c', 'd'));           // false

var_dump($vector->contains(...['c', 'b', 'a'])); // true

// Always strict
var_dump($vector->contains(1));                  // true
var_dump($vector->contains('1'));                // false

var_dump($sequece->contains(...[]));               // true
?>

以上例程的输出类似于：

bool(true)
bool(true)
bool(false)
bool(true)
bool(true)
bool(false)
bool(true)
Ds\Vector::__construct
Ds\Vector::copy
Vector


Returns a shallow copy of the vector.

Ds\Vector::contains
Ds\Vector::count
Vector
PHP Manual

Ds\Vector::copy

(PECL ds >= 1.0.0)

Ds\Vector::copy — Returns a shallow copy of the vector.

说明

public Ds\Vector Ds\Vector::copy ( void )

Returns a shallow copy of the vector.

参数

此函数没有参数。

返回值

Returns a shallow copy of the vector.

范例

Example #1 Ds\Vector::copy() example

<?php
$a = new \Ds\Vector([1, 2, 3]);
$b = $a->copy();

// Updating the copy doesn't affect the original
$b->push(4);

print_r($a);
print_r($b);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => 1
    [1] => 2
    [2] => 3
)
Ds\Vector Object
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
Ds\Vector::contains
Ds\Vector::count
Vector


Returns the number of values in the collection.

Ds\Vector::copy
Ds\Vector::filter
Vector
PHP Manual

Ds\Vector::count

(PECL ds >= 1.0.0)

Ds\Vector::count — Returns the number of values in the collection.

See Countable::count()

Ds\Vector::copy
Ds\Vector::filter
Vector


Creates a new vector using a callable to determine which values to include.

Ds\Vector::count
Ds\Vector::find
Vector
PHP Manual

Ds\Vector::filter

(PECL ds >= 1.0.0)

Ds\Vector::filter — Creates a new vector using a callable to determine which values to include.

说明

public Ds\Vector Ds\Vector::filter ([ callable $callback ] )

Creates a new vector using a callable to determine which values to include.

参数

callback

bool callback ( mixed $value )

Optional callable which returns TRUE if the value should be included, FALSE otherwise.

If a callback is not provided, only values which are TRUE (see converting to boolean) will be included.

返回值

A new vector containing all the values for which either the callback returned TRUE, or all values that convert to TRUE if a callback was not provided.

范例

Example #1 Ds\Vector::filter() example using callback function

<?php
$vector = new \Ds\Vector([1, 2, 3, 4, 5]);

var_dump($vector->filter(function($value) {
    return $value % 2 == 0;
}));
?>

以上例程的输出类似于：

object(Ds\Vector)#3 (2) {
  [0]=>
  int(2)
  [1]=>
  int(4)
}

Example #2 Ds\Vector::filter() example without a callback function

<?php
$vector = new \Ds\Vector([0, 1, 'a', true, false]);

var_dump($vector->filter());
?>

以上例程的输出类似于：

object(Ds\Vector)#2 (3) {
  [0]=>
  int(1)
  [1]=>
  string(1) "a"
  [2]=>
  bool(true)
}
Ds\Vector::count
Ds\Vector::find
Vector


Attempts to find a value's index.

Ds\Vector::filter
Ds\Vector::first
Vector
PHP Manual

Ds\Vector::find

(PECL ds >= 1.0.0)

Ds\Vector::find — Attempts to find a value's index.

说明

public mixed Ds\Vector::find ( mixed $value )

Returns the index of the value, or FALSE if not found.

参数

value

The value to find.

返回值

The index of the value, or FALSE if not found.

Note:

Values will be compared by value and by type.

范例

Example #1 Ds\Vector::find() example

<?php
$vector = new \Ds\Vector(["a", 1, true]);

var_dump($vector->find("a")); // 0
var_dump($vector->find("b")); // false
var_dump($vector->find("1")); // false
var_dump($vector->find(1));   // 1
?>

以上例程的输出类似于：

int(0)
bool(false)
bool(false)
int(1)
Ds\Vector::filter
Ds\Vector::first
Vector


Returns the first value in the vector.

Ds\Vector::find
Ds\Vector::get
Vector
PHP Manual

Ds\Vector::first

(PECL ds >= 1.0.0)

Ds\Vector::first — Returns the first value in the vector.

说明

public mixed Ds\Vector::first ( void )

Returns the first value in the vector.

参数

此函数没有参数。

返回值

The first value in the vector.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\Vector::first() example

<?php
$vector = new \Ds\Vector([1, 2, 3]);
var_dump($vector->first());
?>

以上例程的输出类似于：

int(1)
Ds\Vector::find
Ds\Vector::get
Vector


Returns the value at a given index.

Ds\Vector::first
Ds\Vector::insert
Vector
PHP Manual

Ds\Vector::get

(PECL ds >= 1.0.0)

Ds\Vector::get — Returns the value at a given index.

说明

public mixed Ds\Vector::get ( int $index )

Returns the value at a given index.

参数

index

The index to access, starting at 0.

返回值

The value at the requested index.

错误／异常

OutOfRangeException if the index is not valid.

范例

Example #1 Ds\Vector::get() example

<?php
$vector = new \Ds\Vector(["a", "b", "c"]);

var_dump($vector->get(0));
var_dump($vector->get(1));
var_dump($vector->get(2));
?>

以上例程的输出类似于：

string(1) "a"
string(1) "b"
string(1) "c"

Example #2 Ds\Vector::get() example using array syntax

<?php
$vector = new \Ds\Vector(["a", "b", "c"]);

var_dump($vector[0]);
var_dump($vector[1]);
var_dump($vector[2]);
?>

以上例程的输出类似于：

string(1) "a"
string(1) "b"
string(1) "c"
Ds\Vector::first
Ds\Vector::insert
Vector


Inserts values at a given index.

Ds\Vector::get
Ds\Vector::isEmpty
Vector
PHP Manual

Ds\Vector::insert

(PECL ds >= 1.0.0)

Ds\Vector::insert — Inserts values at a given index.

说明

public void Ds\Vector::insert ( int $index [, mixed $...values ] )

Inserts values into the vector at a given index.

参数

index

The index at which to insert. 0 <= index <= count

Note:

You can insert at the index equal to the number of values.

values

The value or values to insert.

返回值

没有返回值。

错误／异常

OutOfRangeException if the index is not valid.

范例

Example #1 Ds\Vector::insert() example

<?php
$vector = new \Ds\Vector();

$vector->insert(0, "e");             // [e]
$vector->insert(1, "f");             // [e, f]
$vector->insert(2, "g");             // [e, f, g]
$vector->insert(0, "a", "b");        // [a, b, e, f, g]
$vector->insert(2, ...["c", "d"]);   // [a, b, c, d, e, f, g]

var_dump($vector);
?>

以上例程的输出类似于：

object(Ds\Vector)#1 (7) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  [2]=>
  string(1) "c"
  [3]=>
  string(1) "d"
  [4]=>
  string(1) "e"
  [5]=>
  string(1) "f"
  [6]=>
  string(1) "g"
}
Ds\Vector::get
Ds\Vector::isEmpty
Vector


Returns whether the vector is empty

Ds\Vector::insert
Ds\Vector::join
Vector
PHP Manual

Ds\Vector::isEmpty

(PECL ds >= 1.0.0)

Ds\Vector::isEmpty — Returns whether the vector is empty

说明

public bool Ds\Vector::isEmpty ( void )

Returns whether the vector is empty.

参数

此函数没有参数。

返回值

Returns TRUE if the vector is empty, FALSE otherwise.

范例

Example #1 Ds\Vector::isEmpty() example

<?php
$a = new \Ds\Vector([1, 2, 3]);
$b = new \Ds\Vector();

var_dump($a->isEmpty());
var_dump($b->isEmpty());
?>

以上例程的输出类似于：

bool(false)
bool(true)
Ds\Vector::insert
Ds\Vector::join
Vector


Joins all values together as a string.

Ds\Vector::isEmpty
Ds\Vector::jsonSerialize
Vector
PHP Manual

Ds\Vector::join

(PECL ds >= 1.0.0)

Ds\Vector::join — Joins all values together as a string.

说明

public string Ds\Vector::join ([ string $glue ] )

Joins all values together as a string using an optional separator between each value.

参数

glue

An optional string to separate each value.

返回值

All values of the vector joined together as a string.

范例

Example #1 Ds\Vector::join() example using a separator string

<?php
$vector = new \Ds\Vector(["a", "b", "c", 1, 2, 3]);

var_dump($vector->join("|"));
?>

以上例程的输出类似于：

string(11) "a|b|c|1|2|3"

Example #2 Ds\Vector::join() example without a separator string

<?php
$vector = new \Ds\Vector(["a", "b", "c", 1, 2, 3]);

var_dump($vector->join());
?>

以上例程的输出类似于：

string(11) "abc123"
Ds\Vector::isEmpty
Ds\Vector::jsonSerialize
Vector


Returns a representation that can be converted to JSON.

Ds\Vector::join
Ds\Vector::last
Vector
PHP Manual

Ds\Vector::jsonSerialize

(PECL ds >= 1.0.0)

Ds\Vector::jsonSerialize — Returns a representation that can be converted to JSON.

See JsonSerializable::jsonSerialize()

Note:

You should never need to call this directly.

Ds\Vector::join
Ds\Vector::last
Vector


Returns the last value.

Ds\Vector::jsonSerialize
Ds\Vector::map
Vector
PHP Manual

Ds\Vector::last

(PECL ds >= 1.0.0)

Ds\Vector::last — Returns the last value.

说明

public mixed Ds\Vector::last ( void )

Returns the last value in the vector.

参数

此函数没有参数。

返回值

The last value in the vector.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\Vector::last() example

<?php
$vector = new \Ds\Vector([1, 2, 3]);
var_dump($vector->last());
?>

以上例程的输出类似于：

int(3)
Ds\Vector::jsonSerialize
Ds\Vector::map
Vector


Returns the result of applying a callback to each value.

Ds\Vector::last
Ds\Vector::merge
Vector
PHP Manual

Ds\Vector::map

(PECL ds >= 1.0.0)

Ds\Vector::map — Returns the result of applying a callback to each value.

说明

public Ds\Vector Ds\Vector::map ( callable $callback )

Returns the result of applying a callback function to each value in the vector.

参数

callback

mixed callback ( mixed $value )

A callable to apply to each value in the vector.

The callable should return what the new value will be in the new vector.

返回值

The result of applying a callback to each value in the vector.

Note:

The values of the current instance won't be affected.

范例

Example #1 Ds\Vector::map() example

<?php
$vector = new \Ds\Vector([1, 2, 3]);

print_r($vector->map(function($value) { return $value * 2; }));
print_r($vector);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => 2
    [1] => 4
    [2] => 6
)
Ds\Vector Object
(
    [0] => 1
    [1] => 2
    [2] => 3
)
Ds\Vector::last
Ds\Vector::merge
Vector


Returns the result of adding all given values to the vector.

Ds\Vector::map
Ds\Vector::pop
Vector
PHP Manual

Ds\Vector::merge

(PECL ds >= 1.0.0)

Ds\Vector::merge — Returns the result of adding all given values to the vector.

说明

public Ds\Vector Ds\Vector::merge ( mixed $values )

Returns the result of adding all given values to the vector.

参数

values

A traversable object or an array.

返回值

The result of adding all given values to the vector, effectively the same as adding the values to a copy, then returning that copy.

Note:

The current instance won't be affected.

范例

Example #1 Ds\Vector::merge() example

<?php
$vector = new \Ds\Vector([1, 2, 3]);

var_dump($vector->merge([4, 5, 6]));
var_dump($vector);
?>

以上例程的输出类似于：

object(Ds\Vector)#2 (6) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
  [5]=>
  int(6)
}
object(Ds\Vector)#1 (3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
Ds\Vector::map
Ds\Vector::pop
Vector


Removes and returns the last value.

Ds\Vector::merge
Ds\Vector::push
Vector
PHP Manual

Ds\Vector::pop

(PECL ds >= 1.0.0)

Ds\Vector::pop — Removes and returns the last value.

说明

public mixed Ds\Vector::pop ( void )

Removes and returns the last value.

参数

此函数没有参数。

返回值

The removed last value.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\Vector::pop() example

<?php
$vector = new \Ds\Vector([1, 2, 3]);

var_dump($vector->pop());
var_dump($vector->pop());
var_dump($vector->pop());
?>

以上例程的输出类似于：

int(3)
int(2)
int(1)
Ds\Vector::merge
Ds\Vector::push
Vector


Adds values to the end of the vector.

Ds\Vector::pop
Ds\Vector::reduce
Vector
PHP Manual

Ds\Vector::push

(PECL ds >= 1.0.0)

Ds\Vector::push — Adds values to the end of the vector.

说明

public void Ds\Vector::push ([ mixed $...values ] )

Adds values to the end of the vector.

参数

values

The values to add.

返回值

没有返回值。

范例

Example #1 Ds\Vector::push() example

<?php
$vector = new \Ds\Vector();

$vector->push("a");
$vector->push("b");
$vector->push("c", "d");
$vector->push(...["e", "f"]);

print_r($vector);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
    [5] => f
)
Ds\Vector::pop
Ds\Vector::reduce
Vector


Reduces the vector to a single value using a callback function.

Ds\Vector::push
Ds\Vector::remove
Vector
PHP Manual

Ds\Vector::reduce

(PECL ds >= 1.0.0)

Ds\Vector::reduce — Reduces the vector to a single value using a callback function.

说明

public mixed Ds\Vector::reduce ( callable $callback [, mixed $initial ] )

Reduces the vector to a single value using a callback function.

参数

callback
mixed callback ( mixed $carry , mixed $value )
carry

The return value of the previous callback, or initial if it's the first iteration.

value

The value of the current iteration.

initial

The initial value of the carry value. Can be NULL.

返回值

The return value of the final callback.

范例

Example #1 Ds\Vector::reduce() with initial value example

<?php
$vector = new \Ds\Vector([1, 2, 3]);

$callback = function($carry, $value) {
    return $carry * $value;
};

var_dump($vector->reduce($callback, 5));

// Iterations:
//
// $carry = $initial = 5
//
// $carry = $carry * 1 =  5
// $carry = $carry * 2 = 10
// $carry = $carry * 3 = 30
?>

以上例程的输出类似于：

int(30)

Example #2 Ds\Vector::reduce() without an initial value example

<?php
$vector = new \Ds\Vector([1, 2, 3]);

var_dump($vector->reduce(function($carry, $value) {
    return $carry + $value + 5;
}));

// Iterations:
//
// $carry = $initial = null
//
// $carry = $carry + 1 + 5 =  6
// $carry = $carry + 2 + 5 = 13
// $carry = $carry + 3 + 5 = 21
?>

以上例程的输出类似于：

int(21)
Ds\Vector::push
Ds\Vector::remove
Vector


Removes and returns a value by index.

Ds\Vector::reduce
Ds\Vector::reverse
Vector
PHP Manual

Ds\Vector::remove

(PECL ds >= 1.0.0)

Ds\Vector::remove — Removes and returns a value by index.

说明

public mixed Ds\Vector::remove ( int $index )

Removes and returns a value by index.

参数

index

The index of the value to remove.

返回值

The value that was removed.

错误／异常

OutOfRangeException if the index is not valid.

范例

Example #1 Ds\Vector::remove() example

<?php
$vector = new \Ds\Vector(["a", "b", "c"]);

var_dump($vector->remove(1));
var_dump($vector->remove(0));
var_dump($vector->remove(0));
?>

以上例程的输出类似于：

string(1) "b"
string(1) "a"
string(1) "c"
Ds\Vector::reduce
Ds\Vector::reverse
Vector


Reverses the vector in-place.

Ds\Vector::remove
Ds\Vector::reversed
Vector
PHP Manual

Ds\Vector::reverse

(PECL ds >= 1.0.0)

Ds\Vector::reverse — Reverses the vector in-place.

说明

public void Ds\Vector::reverse ( void )

Reverses the vector in-place.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 Ds\Vector::reverse() example

<?php
$vector = new \Ds\Vector(["a", "b", "c"]);
$vector->reverse();

print_r($vector);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => c
    [1] => b
    [2] => a
)
Ds\Vector::remove
Ds\Vector::reversed
Vector


Returns a reversed copy.

Ds\Vector::reverse
Ds\Vector::rotate
Vector
PHP Manual

Ds\Vector::reversed

(PECL ds >= 1.0.0)

Ds\Vector::reversed — Returns a reversed copy.

说明

public Ds\Vector Ds\Vector::reversed ( void )

Returns a reversed copy of the vector.

参数

此函数没有参数。

返回值

A reversed copy of the vector.

Note:

The current instance is not affected.

范例

Example #1 Ds\Vector::reversed() example

<?php
$vector = new \Ds\Vector(["a", "b", "c"]);

print_r($vector->reversed());
print_r($vector);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => c
    [1] => b
    [2] => a
)
Ds\Vector Object
(
    [0] => a
    [1] => b
    [2] => c
)
Ds\Vector::reverse
Ds\Vector::rotate
Vector


Rotates the vector by a given number of rotations.

Ds\Vector::reversed
Ds\Vector::set
Vector
PHP Manual

Ds\Vector::rotate

(PECL ds >= 1.0.0)

Ds\Vector::rotate — Rotates the vector by a given number of rotations.

说明

public void Ds\Vector::rotate ( int $rotations )

Rotates the vector by a given number of rotations, which is equivalent to successively calling $vector->push($vector->shift()) if the number of rotations is positive, or $vector->unshift($vector->pop()) if negative.

参数

rotations

The number of times the vector should be rotated.

返回值

没有返回值。. The vector of the current instance will be rotated.

范例

Example #1 Ds\Vector::rotate() example

<?php
$vector = new \Ds\Vector(["a", "b", "c", "d"]);

$vector->rotate(1);  // "a" is shifted, then pushed.
print_r($vector);

$vector->rotate(2);  // "b" and "c" are both shifted, the pushed.
print_r($vector);
?>

以上例程的输出类似于：

(
    [0] => b
    [1] => c
    [2] => d
    [3] => a
)
Ds\Vector Object
(
    [0] => d
    [1] => a
    [2] => b
    [3] => c
)
Ds\Vector::reversed
Ds\Vector::set
Vector


Updates a value at a given index.

Ds\Vector::rotate
Ds\Vector::shift
Vector
PHP Manual

Ds\Vector::set

(PECL ds >= 1.0.0)

Ds\Vector::set — Updates a value at a given index.

说明

public void Ds\Vector::set ( int $index , mixed $value )

Updates a value at a given index.

参数

index

The index of the value to update.

value

The new value.

返回值

没有返回值。

错误／异常

OutOfRangeException if the index is not valid.

范例

Example #1 Ds\Vector::set() example

<?php
$vector = new \Ds\Vector(["a", "b", "c"]);

$vector->set(1, "_");
print_r($vector);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => a
    [1] => _
    [2] => c
)

Example #2 Ds\Vector::set() example using array syntax

<?php
$vector = new \Ds\Vector(["a", "b", "c"]);

$vector[1] = "_";
print_r($vector);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => a
    [1] => _
    [2] => c
)
Ds\Vector::rotate
Ds\Vector::shift
Vector


Removes and returns the first value.

Ds\Vector::set
Ds\Vector::slice
Vector
PHP Manual

Ds\Vector::shift

(PECL ds >= 1.0.0)

Ds\Vector::shift — Removes and returns the first value.

说明

public mixed Ds\Vector::shift ( void )

Removes and returns the first value.

参数

此函数没有参数。

返回值

The first value, which was removed.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\Vector::shift() example

<?php
$vector = new \Ds\Vector(["a", "b", "c"]);

var_dump($vector->shift());
var_dump($vector->shift());
var_dump($vector->shift());
?>

以上例程的输出类似于：

string(1) "a"
string(1) "b"
string(1) "c"
Ds\Vector::set
Ds\Vector::slice
Vector


Returns a sub-vector of a given range.

Ds\Vector::shift
Ds\Vector::sort
Vector
PHP Manual

Ds\Vector::slice

(PECL ds >= 1.0.0)

Ds\Vector::slice — Returns a sub-vector of a given range.

说明

public Ds\Vector Ds\Vector::slice ( int $index [, int $length ] )

Creates a sub-vector of a given range.

参数

index

The index at which the sub-vector starts.

If positive, the vector will start at that index in the vector. If negative, the vector will start that far from the end.

length

If a length is given and is positive, the resulting vector will have up to that many values in it. If the length results in an overflow, only values up to the end of the vector will be included. If a length is given and is negative, the vector will stop that many values from the end. If a length is not provided, the resulting vector will contain all values between the index and the end of the vector.

返回值

A sub-vector of the given range.

范例

Example #1 Ds\Vector::slice() example

<?php
$vector = new \Ds\Vector(["a", "b", "c", "d", "e"]);

// Slice from 2 onwards
print_r($vector->slice(2));

// Slice from 1, for a length of 3
print_r($vector->slice(1, 3));

// Slice from 1 onwards
print_r($vector->slice(1));

// Slice from 2 from the end onwards
print_r($vector->slice(-2));

// Slice from 1 to 1 from the end
print_r($vector->slice(1, -1));
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => c
    [1] => d
    [2] => e
)
Ds\Vector Object
(
    [0] => b
    [1] => c
    [2] => d
)
Ds\Vector Object
(
    [0] => b
    [1] => c
    [2] => d
    [3] => e
)
Ds\Vector Object
(
    [0] => d
    [1] => e
)
Ds\Vector Object
(
    [0] => b
    [1] => c
    [2] => d
)
Ds\Vector::shift
Ds\Vector::sort
Vector


Sorts the vector in-place.

Ds\Vector::slice
Ds\Vector::sorted
Vector
PHP Manual

Ds\Vector::sort

(PECL ds >= 1.0.0)

Ds\Vector::sort — Sorts the vector in-place.

说明

public void Ds\Vector::sort ([ callable $comparator ] )

Sorts the vector in-place, using an optional comparator function.

参数

comparator

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )
Caution

Returning non-integer values from the comparison function, such as float, will result in an internal cast to integer of the callback's return value. So values such as 0.99 and 0.1 will both be cast to an integer value of 0, which will compare such values as equal.

返回值

没有返回值。

范例

Example #1 Ds\Vector::sort() example

<?php
$vector = new \Ds\Vector([4, 5, 1, 3, 2]);
$vector->sort();

print_r($vector);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)

Example #2 Ds\Vector::sort() example using a comparator

<?php
$vector = new \Ds\Vector([4, 5, 1, 3, 2]);

$vector->sort(function($a, $b) {
    return $b <=> $a;
});

print_r($vector);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => 5
    [1] => 4
    [2] => 3
    [3] => 2
    [4] => 1
)
Ds\Vector::slice
Ds\Vector::sorted
Vector


Returns a sorted copy.

Ds\Vector::sort
Ds\Vector::sum
Vector
PHP Manual

Ds\Vector::sorted

(PECL ds >= 1.0.0)

Ds\Vector::sorted — Returns a sorted copy.

说明

public Ds\Vector Ds\Vector::sorted ([ callable $comparator ] )

Returns a sorted copy, using an optional comparator function.

参数

comparator

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )
Caution

Returning non-integer values from the comparison function, such as float, will result in an internal cast to integer of the callback's return value. So values such as 0.99 and 0.1 will both be cast to an integer value of 0, which will compare such values as equal.

返回值

Returns a sorted copy of the vector.

范例

Example #1 Ds\Vector::sorted() example

<?php
$vector = new \Ds\Vector([4, 5, 1, 3, 2]);

print_r($vector->sorted());
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)

Example #2 Ds\Vector::sorted() example using a comparator

<?php
$vector = new \Ds\Vector([4, 5, 1, 3, 2]);

$sorted = $vector->sorted(function($a, $b) {
    return $b <=> $a;
});

print_r($sorted);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => 5
    [1] => 4
    [2] => 3
    [3] => 2
    [4] => 1
)
Ds\Vector::sort
Ds\Vector::sum
Vector


Returns the sum of all values in the vector.

Ds\Vector::sorted
Ds\Vector::toArray
Vector
PHP Manual

Ds\Vector::sum

(PECL ds >= 1.0.0)

Ds\Vector::sum — Returns the sum of all values in the vector.

说明

public number Ds\Vector::sum ( void )

Returns the sum of all values in the vector.

Note:

Arrays and objects are considered equal to zero when calculating the sum.

参数

此函数没有参数。

返回值

The sum of all the values in the vector as either a float or int depending on the values in the vector.

范例

Example #1 Ds\Vector::sum() integer example

<?php
$vector = new \Ds\Vector([1, 2, 3]);
var_dump($vector->sum());
?>

以上例程的输出类似于：

int(6)

Example #2 Ds\Vector::sum() float example

<?php
$vector = new \Ds\Vector([1, 2.5, 3]);
var_dump($vector->sum());
?>

以上例程的输出类似于：

float(6.5)
Ds\Vector::sorted
Ds\Vector::toArray
Vector


Converts the vector to an array.

Ds\Vector::sum
Ds\Vector::unshift
Vector
PHP Manual

Ds\Vector::toArray

(PECL ds >= 1.0.0)

Ds\Vector::toArray — Converts the vector to an array.

说明

public array Ds\Vector::toArray ( void )

Converts the vector to an array.

Note:

Casting to an array is not supported yet.

参数

此函数没有参数。

返回值

An array containing all the values in the same order as the vector.

范例

Example #1 Ds\Vector::toArray() example

<?php
$vector = new \Ds\Vector([1, 2, 3]);

var_dump($vector->toArray());
?>

以上例程的输出类似于：

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
Ds\Vector::sum
Ds\Vector::unshift
Vector


Adds values to the front of the vector.

Ds\Vector::toArray
Deque
Vector
PHP Manual

Ds\Vector::unshift

(PECL ds >= 1.0.0)

Ds\Vector::unshift — Adds values to the front of the vector.

说明

public void Ds\Vector::unshift ([ mixed $values ] )

Adds values to the front of the vector, moving all the current values forward to make room for the new values.

参数

values

The values to add to the front of the vector.

Note:

Multiple values will be added in the same order that they are passed.

返回值

没有返回值。

范例

Example #1 Ds\Vector::unshift() example

<?php
$vector = new \Ds\Vector([1, 2, 3]);

$vector->unshift("a");
$vector->unshift("b", "c");

print_r($vector);
?>

以上例程的输出类似于：

Ds\Vector Object
(
    [0] => b
    [1] => c
    [2] => a
    [3] => 1
    [4] => 2
    [5] => 3
)
Ds\Vector::toArray
Deque
Vector


The Deque class

(No version information available, might only be in Git)

简介

A Deque (pronounced "deck") is a sequence of values in a contiguous buffer that grows and shrinks automatically. The name is a common abbreviation of "double-ended queue" and is used internally by Ds\Queue.

Two pointers are used to keep track of a head and a tail. The pointers can "wrap around" the end of the buffer, which avoids the need to move other values around to make room. This makes shift and unshift very fast?—? something a Ds\Vector can't compete with.

Accessing a value by index requires a translation between the index and its corresponding position in the buffer: ((head + position) % capacity).

Strengths

  • Supports array syntax (square brackets).
  • Uses less overall memory than an array for the same number of values.
  • Automatically frees allocated memory when its size drops low enough.
  • get(),
set(),
push(),
pop(),
shift(), and
unshift() are all O(1).

Weaknesses

  • Capacity must be a power of 2.
  • insert() and remove() are O(n).

类摘要

Ds\Deque implements Ds\Sequence {
/* Constants */
const int MIN_CAPACITY = 8 ;
/* 方法 */
public void allocate ( int $capacity )
public void apply ( callable $callback )
public int capacity ( void )
public void clear ( void )
public bool contains ([ mixed $...values ] )
public Ds\Deque copy ( void )
public Ds\Deque filter ([ callable $callback ] )
public mixed find ( mixed $value )
public mixed first ( void )
public mixed get ( int $index )
public void insert ( int $index [, mixed $...values ] )
public bool isEmpty ( void )
public string join ([ string $glue ] )
public mixed last ( void )
public Ds\Deque map ( callable $callback )
public Ds\Deque merge ( mixed $values )
public mixed pop ( void )
public void push ([ mixed $...values ] )
public mixed reduce ( callable $callback [, mixed $initial ] )
public mixed remove ( int $index )
public void reverse ( void )
public Ds\Deque reversed ( void )
public void rotate ( int $rotations )
public void set ( int $index , mixed $value )
public mixed shift ( void )
public Ds\Deque slice ( int $index [, int $length ] )
public void sort ([ callable $comparator ] )
public Ds\Deque sorted ([ callable $comparator ] )
public number sum ( void )
public array toArray ( void )
public void unshift ([ mixed $values ] )
}

预定义常量

Ds\Deque::MIN_CAPACITY

Table of Contents

  • Ds\Deque::allocate — Allocates enough memory for a required capacity.
  • Ds\Deque::apply — Updates all values by applying a callback function to each value.
  • Ds\Deque::capacity — Returns the current capacity.
  • Ds\Deque::clear — Removes all values from the deque.
  • Ds\Deque::__construct — Creates a new instance.
  • Ds\Deque::contains — Determines if the deque contains given values.
  • Ds\Deque::copy — Returns a shallow copy of the deque.
  • Ds\Deque::count — Returns the number of values in the collection.
  • Ds\Deque::filter — Creates a new deque using a callable to determine which values to include.
  • Ds\Deque::find — Attempts to find a value's index.
  • Ds\Deque::first — Returns the first value in the deque.
  • Ds\Deque::get — Returns the value at a given index.
  • Ds\Deque::insert — Inserts values at a given index.
  • Ds\Deque::isEmpty — Returns whether the deque is empty
  • Ds\Deque::join — Joins all values together as a string.
  • Ds\Deque::jsonSerialize — Returns a representation that can be converted to JSON.
  • Ds\Deque::last — Returns the last value.
  • Ds\Deque::map — Returns the result of applying a callback to each value.
  • Ds\Deque::merge — Returns the result of adding all given values to the deque.
  • Ds\Deque::pop — Removes and returns the last value.
  • Ds\Deque::push — Adds values to the end of the deque.
  • Ds\Deque::reduce — Reduces the deque to a single value using a callback function.
  • Ds\Deque::remove — Removes and returns a value by index.
  • Ds\Deque::reverse — Reverses the deque in-place.
  • Ds\Deque::reversed — Returns a reversed copy.
  • Ds\Deque::rotate — Rotates the deque by a given number of rotations.
  • Ds\Deque::set — Updates a value at a given index.
  • Ds\Deque::shift — Removes and returns the first value.
  • Ds\Deque::slice — Returns a sub-deque of a given range.
  • Ds\Deque::sort — Sorts the deque in-place.
  • Ds\Deque::sorted — Returns a sorted copy.
  • Ds\Deque::sum — Returns the sum of all values in the deque.
  • Ds\Deque::toArray — Converts the deque to an array.
  • Ds\Deque::unshift — Adds values to the front of the deque.
Ds\Vector::unshift
Ds\Deque::allocate
Data Structures


Allocates enough memory for a required capacity.

Deque
Ds\Deque::apply
Deque
PHP Manual

Ds\Deque::allocate

(PECL ds >= 1.0.0)

Ds\Deque::allocate — Allocates enough memory for a required capacity.

说明

public void Ds\Deque::allocate ( int $capacity )

Ensures that enough memory is allocated for a required capacity. This removes the need to reallocate the internal as values are added.

参数

capacity

The number of values for which capacity should be allocated.

Note:

Capacity will stay the same if this value is less than or equal to the current capacity.

Note:

Capacity will always be rounded up to the nearest power of 2.

返回值

没有返回值。

范例

Example #1 Ds\Deque::allocate() example

<?php
$deque = new \Ds\Deque();
var_dump($deque->capacity());

$deque->allocate(100);
var_dump($deque->capacity());
?>

以上例程的输出类似于：

int(8)
int(128)
Deque
Ds\Deque::apply
Deque


Updates all values by applying a callback function to each value.

Ds\Deque::allocate
Ds\Deque::capacity
Deque
PHP Manual

Ds\Deque::apply

(PECL ds >= 1.0.0)

Ds\Deque::apply — Updates all values by applying a callback function to each value.

说明

public void Ds\Deque::apply ( callable $callback )

Updates all values by applying a callback function to each value in the deque.

参数

callback

mixed callback ( mixed $value )

A callable to apply to each value in the deque.

The callback should return what the value should be replaced by.

返回值

没有返回值。

范例

Example #1 Ds\Deque::apply() example

<?php
$deque = new \Ds\Deque([1, 2, 3]);
$deque->apply(function($value) { return $value * 2; });

print_r($deque);
?>

以上例程的输出类似于：

Ds\Deque Object
(
    [0] => 2
    [1] => 4
    [2] => 6
)
Ds\Deque::allocate
Ds\Deque::capacity
Deque


Returns the current capacity.

Ds\Deque::apply
Ds\Deque::clear
Deque
PHP Manual

Ds\Deque::capacity

(PECL ds >= 1.0.0)

Ds\Deque::capacity — Returns the current capacity.

说明

public int Ds\Deque::capacity ( void )

Returns the current capacity.

参数

此函数没有参数。

返回值

The current capacity.

范例

Example #1 Ds\Deque::capacity() example

<?php
$deque = new \Ds\Deque();
var_dump($deque->capacity());

$deque->push(...range(1, 50));
var_dump($deque->capacity());
?>

以上例程的输出类似于：

int(8)
int(64)
Ds\Deque::apply
Ds\Deque::clear
Deque


Removes all values from the deque.

Ds\Deque::capacity
Ds\Deque::__construct
Deque
PHP Manual

Ds\Deque::clear

(PECL ds >= 1.0.0)

Ds\Deque::clear — Removes all values from the deque.

说明

public void Ds\Deque::clear ( void )

Removes all values from the deque.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 Ds\Deque::clear() example

<?php
$deque = new \Ds\Deque([1, 2, 3]);
print_r($deque);

$deque->clear();
print_r($deque);
?>

以上例程的输出类似于：

Ds\Deque Object
(
    [0] => 1
    [1] => 2
    [2] => 3
)
Ds\Deque Object
(
)
Ds\Deque::capacity
Ds\Deque::__construct
Deque


Creates a new instance.

Ds\Deque::clear
Ds\Deque::contains
Deque
PHP Manual

Ds\Deque::__construct

(PECL ds >= 1.0.0)

Ds\Deque::__construct — Creates a new instance.

说明

public Ds\Deque::__construct ([ mixed $values ] )

Creates a new instance, using either a traversable object or an array for the initial values.

参数

values

A traversable object or an array to use for the initial values.

范例

Example #1 Ds\Deque::__construct() example

<?php
$deque = new \Ds\Deque();
var_dump($deque);

$deque = new \Ds\Deque([1, 2, 3]);
var_dump($deque);
?>

以上例程的输出类似于：

object(Ds\Deque)#2 (0) {
}
object(Ds\Deque)#2 (3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
Ds\Deque::clear
Ds\Deque::contains
Deque


Determines if the deque contains given values.

Ds\Deque::__construct
Ds\Deque::copy
Deque
PHP Manual

Ds\Deque::contains

(PECL ds >= 1.0.0)

Ds\Deque::contains — Determines if the deque contains given values.

说明

public bool Ds\Deque::contains ([ mixed $...values ] )

Determines if the deque contains all values.

参数

values

Values to check.

返回值

FALSE if any of the provided values are not in the deque, TRUE otherwise.

范例

Example #1 Ds\Deque::contains() example

<?php
$deque = new \Ds\Deque(['a', 'b', 'c', 1, 2, 3]);

var_dump($deque->contains('a'));                // true
var_dump($deque->contains('a', 'b'));           // true
var_dump($deque->contains('c', 'd'));           // false

var_dump($deque->contains(...['c', 'b', 'a'])); // true

// Always strict
var_dump($deque->contains(1));                  // true
var_dump($deque->contains('1'));                // false

var_dump($sequece->contains(...[]));               // true
?>

以上例程的输出类似于：

bool(true)
bool(true)
bool(false)
bool(true)
bool(true)
bool(false)
bool(true)
Ds\Deque::__construct
Ds\Deque::copy
Deque


Returns a shallow copy of the deque.

Ds\Deque::contains
Ds\Deque::count
Deque
PHP Manual

Ds\Deque::copy

(PECL ds >= 1.0.0)

Ds\Deque::copy — Returns a shallow copy of the deque.

说明

public Ds\Deque Ds\Deque::copy ( void )

Returns a shallow copy of the deque.

参数

此函数没有参数。

返回值

A shallow copy of the deque.

范例

Example #1 Ds\Deque::copy() example

<?php
$a = new \Ds\Deque([1, 2, 3]);
$b = $a->copy();

$b->push(4);

print_r($a);
print_r($b);
?>

以上例程的输出类似于：

Ds\Deque Object
(
    [0] => 1
    [1] => 2
    [2] => 3
)
Ds\Deque Object
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
Ds\Deque::contains
Ds\Deque::count
Deque


Returns the number of values in the collection.

Ds\Deque::copy
Ds\Deque::filter
Deque
PHP Manual

Ds\Deque::count

(PECL ds >= 1.0.0)

Ds\Deque::count — Returns the number of values in the collection.

See Countable::count()

Ds\Deque::copy
Ds\Deque::filter
Deque


Creates a new deque using a callable to determine which values to include.

Ds\Deque::count
Ds\Deque::find
Deque
PHP Manual

Ds\Deque::filter

(PECL ds >= 1.0.0)

Ds\Deque::filter — Creates a new deque using a callable to determine which values to include.

说明

public Ds\Deque Ds\Deque::filter ([ callable $callback ] )

Creates a new deque using a callable to determine which values to include.

参数

callback

bool callback ( mixed $value )

Optional callable which returns TRUE if the value should be included, FALSE otherwise.

If a callback is not provided, only values which are TRUE (see converting to boolean) will be included.

返回值

A new deque containing all the values for which either the callback returned TRUE, or all values that convert to TRUE if a callback was not provided.

范例

Example #1 Ds\Deque::filter() example using callback function

<?php
$deque = new \Ds\Deque([1, 2, 3, 4, 5]);

var_dump($deque->filter(function($value) {
    return $value % 2 == 0;
}));
?>

以上例程的输出类似于：

object(Ds\Deque)#3 (2) {
  [0]=>
  int(2)
  [1]=>
  int(4)
}

Example #2 Ds\Deque::filter() example without a callback function

<?php
$deque = new \Ds\Deque([0, 1, 'a', true, false]);

var_dump($deque->filter());
?>

以上例程的输出类似于：

object(Ds\Deque)#2 (3) {
  [0]=>
  int(1)
  [1]=>
  string(1) "a"
  [2]=>
  bool(true)
}
Ds\Deque::count
Ds\Deque::find
Deque


Attempts to find a value's index.

Ds\Deque::filter
Ds\Deque::first
Deque
PHP Manual

Ds\Deque::find

(PECL ds >= 1.0.0)

Ds\Deque::find — Attempts to find a value's index.

说明

public mixed Ds\Deque::find ( mixed $value )

Returns the index of the value, or FALSE if not found.

参数

value

The value to find.

返回值

The index of the value, or FALSE if not found.

Note:

Values will be compared by value and by type.

范例

Example #1 Ds\Deque::find() example

<?php
$deque = new \Ds\Deque(["a", 1, true]);

var_dump($deque->find("a")); // 0
var_dump($deque->find("b")); // false
var_dump($deque->find("1")); // false
var_dump($deque->find(1));   // 1
?>

以上例程的输出类似于：

int(0)
bool(false)
bool(false)
int(1)
Ds\Deque::filter
Ds\Deque::first
Deque


Returns the first value in the deque.

Ds\Deque::find
Ds\Deque::get
Deque
PHP Manual

Ds\Deque::first

(PECL ds >= 1.0.0)

Ds\Deque::first — Returns the first value in the deque.

说明

public mixed Ds\Deque::first ( void )

Returns the first value in the deque.

参数

此函数没有参数。

返回值

The first value in the deque.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\Deque::first() example

<?php
$deque = new \Ds\Deque([1, 2, 3]);
var_dump($deque->first());
?>

以上例程的输出类似于：

int(1)
Ds\Deque::find
Ds\Deque::get
Deque


Returns the value at a given index.

Ds\Deque::first
Ds\Deque::insert
Deque
PHP Manual

Ds\Deque::get

(PECL ds >= 1.0.0)

Ds\Deque::get — Returns the value at a given index.

说明

public mixed Ds\Deque::get ( int $index )

Returns the value at a given index.

参数

index

The index to access, starting at 0.

返回值

The value at the requested index.

错误／异常

OutOfRangeException if the index is not valid.

范例

Example #1 Ds\Deque::get() example

<?php
$deque = new \Ds\Deque(["a", "b", "c"]);

var_dump($deque->get(0));
var_dump($deque->get(1));
var_dump($deque->get(2));
?>

以上例程的输出类似于：

string(1) "a"
string(1) "b"
string(1) "c"

Example #2 Ds\Deque::get() example using array syntax

<?php
$deque = new \Ds\Deque(["a", "b", "c"]);

var_dump($deque[0]);
var_dump($deque[1]);
var_dump($deque[2]);
?>

以上例程的输出类似于：

string(1) "a"
string(1) "b"
string(1) "c"
Ds\Deque::first
Ds\Deque::insert
Deque


Inserts values at a given index.

Ds\Deque::get
Ds\Deque::isEmpty
Deque
PHP Manual

Ds\Deque::insert

(PECL ds >= 1.0.0)

Ds\Deque::insert — Inserts values at a given index.

说明

public void Ds\Deque::insert ( int $index [, mixed $...values ] )

Inserts values into the deque at a given index.

参数

index

The index at which to insert. 0 <= index <= count

Note:

You can insert at the index equal to the number of values.

values

The value or values to insert.

返回值

没有返回值。

错误／异常

OutOfRangeException if the index is not valid.

范例

Example #1 Ds\Deque::insert() example

<?php
$deque = new \Ds\Deque();

$deque->insert(0, "e");             // [e]
$deque->insert(1, "f");             // [e, f]
$deque->insert(2, "g");             // [e, f, g]
$deque->insert(0, "a", "b");        // [a, b, e, f, g]
$deque->insert(2, ...["c", "d"]);   // [a, b, c, d, e, f, g]

var_dump($deque);
?>

以上例程的输出类似于：

object(Ds\Deque)#1 (7) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  [2]=>
  string(1) "c"
  [3]=>
  string(1) "d"
  [4]=>
  string(1) "e"
  [5]=>
  string(1) "f"
  [6]=>
  string(1) "g"
}
Ds\Deque::get
Ds\Deque::isEmpty
Deque


Returns whether the deque is empty

Ds\Deque::insert
Ds\Deque::join
Deque
PHP Manual

Ds\Deque::isEmpty

(PECL ds >= 1.0.0)

Ds\Deque::isEmpty — Returns whether the deque is empty

说明

public bool Ds\Deque::isEmpty ( void )

Returns whether the deque is empty.

参数

此函数没有参数。

返回值

Returns TRUE if the deque is empty, FALSE otherwise.

范例

Example #1 Ds\Deque::isEmpty() example

<?php
$a = new \Ds\Deque([1, 2, 3]);
$b = new \Ds\Deque();

var_dump($a->isEmpty());
var_dump($b->isEmpty());
?>

以上例程的输出类似于：

bool(false)
bool(true)
Ds\Deque::insert
Ds\Deque::join
Deque


Joins all values together as a string.

Ds\Deque::isEmpty
Ds\Deque::jsonSerialize
Deque
PHP Manual

Ds\Deque::join

(PECL ds >= 1.0.0)

Ds\Deque::join — Joins all values together as a string.

说明

public string Ds\Deque::join ([ string $glue ] )

Joins all values together as a string using an optional separator between each value.

参数

glue

An optional string to separate each value.

返回值

All values of the deque joined together as a string.

范例

Example #1 Ds\Deque::join() example using a separator string

<?php
$deque = new \Ds\Deque(["a", "b", "c", 1, 2, 3]);

var_dump($deque->join("|"));
?>

以上例程的输出类似于：

string(11) "a|b|c|1|2|3"

Example #2 Ds\Deque::join() example without a separator string

<?php
$deque = new \Ds\Deque(["a", "b", "c", 1, 2, 3]);

var_dump($deque->join());
?>

以上例程的输出类似于：

string(11) "abc123"
Ds\Deque::isEmpty
Ds\Deque::jsonSerialize
Deque


Returns a representation that can be converted to JSON.

Ds\Deque::join
Ds\Deque::last
Deque
PHP Manual

Ds\Deque::jsonSerialize

(PECL ds >= 1.0.0)

Ds\Deque::jsonSerialize — Returns a representation that can be converted to JSON.

See JsonSerializable::jsonSerialize()

Note:

You should never need to call this directly.

Ds\Deque::join
Ds\Deque::last
Deque


Returns the last value.

Ds\Deque::jsonSerialize
Ds\Deque::map
Deque
PHP Manual

Ds\Deque::last

(PECL ds >= 1.0.0)

Ds\Deque::last — Returns the last value.

说明

public mixed Ds\Deque::last ( void )

Returns the last value in the deque.

参数

此函数没有参数。

返回值

The last value in the deque.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\Deque::last() example

<?php
$deque = new \Ds\Deque([1, 2, 3]);
var_dump($deque->last());
?>

以上例程的输出类似于：

int(3)
Ds\Deque::jsonSerialize
Ds\Deque::map
Deque


Returns the result of applying a callback to each value.

Ds\Deque::last
Ds\Deque::merge
Deque
PHP Manual

Ds\Deque::map

(PECL ds >= 1.0.0)

Ds\Deque::map — Returns the result of applying a callback to each value.

说明

public Ds\Deque Ds\Deque::map ( callable $callback )

Returns the result of applying a callback function to each value in the deque.

参数

callback

mixed callback ( mixed $value )

A callable to apply to each value in the deque.

The callable should return what the new value will be in the new deque.

返回值

The result of applying a callback to each value in the deque.

Note:

The values of the current instance won't be affected.

范例

Example #1 Ds\Deque::map() example

<?php
$deque = new \Ds\Deque([1, 2, 3]);

print_r($deque->map(function($value) { return $value * 2; }));
print_r($deque);
?>

以上例程的输出类似于：

Ds\Deque Object
(
    [0] => 2
    [1] => 4
    [2] => 6
)
Ds\Deque Object
(
    [0] => 1
    [1] => 2
    [2] => 3
)
Ds\Deque::last
Ds\Deque::merge
Deque


Returns the result of adding all given values to the deque.

Ds\Deque::map
Ds\Deque::pop
Deque
PHP Manual

Ds\Deque::merge

(PECL ds >= 1.0.0)

Ds\Deque::merge — Returns the result of adding all given values to the deque.

说明

public Ds\Deque Ds\Deque::merge ( mixed $values )

Returns the result of adding all given values to the deque.

参数

values

A traversable object or an array.

返回值

The result of adding all given values to the deque, effectively the same as adding the values to a copy, then returning that copy.

Note:

The current instance won't be affected.

范例

Example #1 Ds\Deque::merge() example

<?php
$deque = new \Ds\Deque([1, 2, 3]);

var_dump($deque->merge([4, 5, 6]));
var_dump($deque);
?>

以上例程的输出类似于：

object(Ds\Deque)#2 (6) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
  [5]=>
  int(6)
}
object(Ds\Deque)#1 (3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
Ds\Deque::map
Ds\Deque::pop
Deque


Removes and returns the last value.

Ds\Deque::merge
Ds\Deque::push
Deque
PHP Manual

Ds\Deque::pop

(PECL ds >= 1.0.0)

Ds\Deque::pop — Removes and returns the last value.

说明

public mixed Ds\Deque::pop ( void )

Removes and returns the last value.

参数

此函数没有参数。

返回值

The removed last value.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\Deque::pop() example

<?php
$deque = new \Ds\Deque([1, 2, 3]);

var_dump($deque->pop());
var_dump($deque->pop());
var_dump($deque->pop());
?>

以上例程的输出类似于：

int(3)
int(2)
int(1)
Ds\Deque::merge
Ds\Deque::push
Deque


Adds values to the end of the deque.

Ds\Deque::pop
Ds\Deque::reduce
Deque
PHP Manual

Ds\Deque::push

(PECL ds >= 1.0.0)

Ds\Deque::push — Adds values to the end of the deque.

说明

public void Ds\Deque::push ([ mixed $...values ] )

Adds values to the end of the deque.

参数

values

The values to add.

返回值

没有返回值。

范例

Example #1 Ds\Deque::push() example

<?php
$deque = new \Ds\Deque();

$deque->push("a");
$deque->push("b");
$deque->push("c", "d");
$deque->push(...["e", "f"]);

print_r($deque);
?>

以上例程的输出类似于：

Ds\Deque Object
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
    [5] => f
)
Ds\Deque::pop
Ds\Deque::reduce
Deque


Reduces the deque to a single value using a callback function.

Ds\Deque::push
Ds\Deque::remove
Deque
PHP Manual

Ds\Deque::reduce

(PECL ds >= 1.0.0)

Ds\Deque::reduce — Reduces the deque to a single value using a callback function.

说明

public mixed Ds\Deque::reduce ( callable $callback [, mixed $initial ] )

Reduces the deque to a single value using a callback function.

参数

callback
mixed callback ( mixed $carry , mixed $value )
carry

The return value of the previous callback, or initial if it's the first iteration.

value

The value of the current iteration.

initial

The initial value of the carry value. Can be NULL.

返回值

The return value of the final callback.

范例

Example #1 Ds\Deque::reduce() with initial value example

<?php
$deque = new \Ds\Deque([1, 2, 3]);

$callback = function($carry, $value) {
    return $carry * $value;
};

var_dump($deque->reduce($callback, 5));

// Iterations:
//
// $carry = $initial = 5
//
// $carry = $carry * 1 =  5
// $carry = $carry * 2 = 10
// $carry = $carry * 3 = 30
?>

以上例程的输出类似于：

int(30)

Example #2 Ds\Deque::reduce() without an initial value example

<?php
$deque = new \Ds\Deque([1, 2, 3]);

var_dump($deque->reduce(function($carry, $value) {
    return $carry + $value + 5;
}));

// Iterations:
//
// $carry = $initial = null
//
// $carry = $carry + 1 + 5 =  6
// $carry = $carry + 2 + 5 = 13
// $carry = $carry + 3 + 5 = 21
?>

以上例程的输出类似于：

int(21)
Ds\Deque::push
Ds\Deque::remove
Deque


Removes and returns a value by index.

Ds\Deque::reduce
Ds\Deque::reverse
Deque
PHP Manual

Ds\Deque::remove

(PECL ds >= 1.0.0)

Ds\Deque::remove — Removes and returns a value by index.

说明

public mixed Ds\Deque::remove ( int $index )

Removes and returns a value by index.

参数

index

The index of the value to remove.

返回值

The value that was removed.

错误／异常

OutOfRangeException if the index is not valid.

范例

Example #1 Ds\Deque::remove() example

<?php
$deque = new \Ds\Deque(["a", "b", "c"]);

var_dump($deque->remove(1));
var_dump($deque->remove(0));
var_dump($deque->remove(0));
?>

以上例程的输出类似于：

string(1) "b"
string(1) "a"
string(1) "c"
Ds\Deque::reduce
Ds\Deque::reverse
Deque


Reverses the deque in-place.

Ds\Deque::remove
Ds\Deque::reversed
Deque
PHP Manual

Ds\Deque::reverse

(PECL ds >= 1.0.0)

Ds\Deque::reverse — Reverses the deque in-place.

说明

public void Ds\Deque::reverse ( void )

Reverses the deque in-place.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 Ds\Deque::reverse() example

<?php
$deque = new \Ds\Deque(["a", "b", "c"]);
$deque->reverse();

print_r($deque);
?>

以上例程的输出类似于：

Ds\Deque Object
(
    [0] => c
    [1] => b
    [2] => a
)
Ds\Deque::remove
Ds\Deque::reversed
Deque


Returns a reversed copy.

Ds\Deque::reverse
Ds\Deque::rotate
Deque
PHP Manual

Ds\Deque::reversed

(PECL ds >= 1.0.0)

Ds\Deque::reversed — Returns a reversed copy.

说明

public Ds\Deque Ds\Deque::reversed ( void )

Returns a reversed copy of the deque.

参数

此函数没有参数。

返回值

A reversed copy of the deque.

Note:

The current instance is not affected.

范例

Example #1 Ds\Deque::reversed() example

<?php
$deque = new \Ds\Deque(["a", "b", "c"]);

print_r($deque->reversed());
print_r($deque);
?>

以上例程的输出类似于：

Ds\Deque Object
(
    [0] => c
    [1] => b
    [2] => a
)
Ds\Deque Object
(
    [0] => a
    [1] => b
    [2] => c
)
Ds\Deque::reverse
Ds\Deque::rotate
Deque


Rotates the deque by a given number of rotations.

Ds\Deque::reversed
Ds\Deque::set
Deque
PHP Manual

Ds\Deque::rotate

(PECL ds >= 1.0.0)

Ds\Deque::rotate — Rotates the deque by a given number of rotations.

说明

public void Ds\Deque::rotate ( int $rotations )

Rotates the deque by a given number of rotations, which is equivalent to successively calling $deque->push($deque->shift()) if the number of rotations is positive, or $deque->unshift($deque->pop()) if negative.

参数

rotations

The number of times the deque should be rotated.

返回值

没有返回值。. The deque of the current instance will be rotated.

范例

Example #1 Ds\Deque::rotate() example

<?php
$deque = new \Ds\Deque(["a", "b", "c", "d"]);

$deque->rotate(1);  // "a" is shifted, then pushed.
print_r($deque);

$deque->rotate(2);  // "b" and "c" are both shifted, the pushed.
print_r($deque);
?>

以上例程的输出类似于：

(
    [0] => b
    [1] => c
    [2] => d
    [3] => a
)
Ds\Deque Object
(
    [0] => d
    [1] => a
    [2] => b
    [3] => c
)
Ds\Deque::reversed
Ds\Deque::set
Deque


Updates a value at a given index.

Ds\Deque::rotate
Ds\Deque::shift
Deque
PHP Manual

Ds\Deque::set

(PECL ds >= 1.0.0)

Ds\Deque::set — Updates a value at a given index.

说明

public void Ds\Deque::set ( int $index , mixed $value )

Updates a value at a given index.

参数

index

The index of the value to update.

value

The new value.

返回值

没有返回值。

错误／异常

OutOfRangeException if the index is not valid.

范例

Example #1 Ds\Deque::set() example

<?php
$deque = new \Ds\Deque(["a", "b", "c"]);

$deque->set(1, "_");
print_r($deque);
?>

以上例程的输出类似于：

Ds\Deque Object
(
    [0] => a
    [1] => _
    [2] => c
)

Example #2 Ds\Deque::set() example using array syntax

<?php
$deque = new \Ds\Deque(["a", "b", "c"]);

$deque[1] = "_";
print_r($deque);
?>

以上例程的输出类似于：

Ds\Deque Object
(
    [0] => a
    [1] => _
    [2] => c
)
Ds\Deque::rotate
Ds\Deque::shift
Deque


Removes and returns the first value.

Ds\Deque::set
Ds\Deque::slice
Deque
PHP Manual

Ds\Deque::shift

(PECL ds >= 1.0.0)

Ds\Deque::shift — Removes and returns the first value.

说明

public mixed Ds\Deque::shift ( void )

Removes and returns the first value.

参数

此函数没有参数。

返回值

The first value, which was removed.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\Deque::shift() example

<?php
$deque = new \Ds\Deque(["a", "b", "c"]);

var_dump($deque->shift());
var_dump($deque->shift());
var_dump($deque->shift());
?>

以上例程的输出类似于：

string(1) "a"
string(1) "b"
string(1) "c"
Ds\Deque::set
Ds\Deque::slice
Deque


Returns a sub-deque of a given range.

Ds\Deque::shift
Ds\Deque::sort
Deque
PHP Manual

Ds\Deque::slice

(PECL ds >= 1.0.0)

Ds\Deque::slice — Returns a sub-deque of a given range.

说明

public Ds\Deque Ds\Deque::slice ( int $index [, int $length ] )

Creates a sub-deque of a given range.

参数

index

The index at which the sub-deque starts.

If positive, the deque will start at that index in the deque. If negative, the deque will start that far from the end.

length

If a length is given and is positive, the resulting deque will have up to that many values in it. If the length results in an overflow, only values up to the end of the deque will be included. If a length is given and is negative, the deque will stop that many values from the end. If a length is not provided, the resulting deque will contain all values between the index and the end of the deque.

返回值

A sub-deque of the given range.

范例

Example #1 Ds\Deque::slice() example

<?php
$deque = new \Ds\Deque(["a", "b", "c", "d", "e"]);

// Slice from 2 onwards
print_r($deque->slice(2));

// Slice from 1, for a length of 3
print_r($deque->slice(1, 3));

// Slice from 1 onwards
print_r($deque->slice(1));

// Slice from 2 from the end onwards
print_r($deque->slice(-2));

// Slice from 1 to 1 from the end
print_r($deque->slice(1, -1));
?>

以上例程的输出类似于：

Ds\Deque Object
(
    [0] => c
    [1] => d
    [2] => e
)
Ds\Deque Object
(
    [0] => b
    [1] => c
    [2] => d
)
Ds\Deque Object
(
    [0] => b
    [1] => c
    [2] => d
    [3] => e
)
Ds\Deque Object
(
    [0] => d
    [1] => e
)
Ds\Deque Object
(
    [0] => b
    [1] => c
    [2] => d
)
Ds\Deque::shift
Ds\Deque::sort
Deque


Sorts the deque in-place.

Ds\Deque::slice
Ds\Deque::sorted
Deque
PHP Manual

Ds\Deque::sort

(PECL ds >= 1.0.0)

Ds\Deque::sort — Sorts the deque in-place.

说明

public void Ds\Deque::sort ([ callable $comparator ] )

Sorts the deque in-place, using an optional comparator function.

参数

comparator

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )
Caution

Returning non-integer values from the comparison function, such as float, will result in an internal cast to integer of the callback's return value. So values such as 0.99 and 0.1 will both be cast to an integer value of 0, which will compare such values as equal.

返回值

没有返回值。

范例

Example #1 Ds\Deque::sort() example

<?php
$deque = new \Ds\Deque([4, 5, 1, 3, 2]);
$deque->sort();

print_r($deque);
?>

以上例程的输出类似于：

Ds\Deque Object
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)

Example #2 Ds\Deque::sort() example using a comparator

<?php
$deque = new \Ds\Deque([4, 5, 1, 3, 2]);

$deque->sort(function($a, $b) {
    return $b <=> $a;
});

print_r($deque);
?>

以上例程的输出类似于：

Ds\Deque Object
(
    [0] => 5
    [1] => 4
    [2] => 3
    [3] => 2
    [4] => 1
)
Ds\Deque::slice
Ds\Deque::sorted
Deque


Returns a sorted copy.

Ds\Deque::sort
Ds\Deque::sum
Deque
PHP Manual

Ds\Deque::sorted

(PECL ds >= 1.0.0)

Ds\Deque::sorted — Returns a sorted copy.

说明

public Ds\Deque Ds\Deque::sorted ([ callable $comparator ] )

Returns a sorted copy, using an optional comparator function.

参数

comparator

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )
Caution

Returning non-integer values from the comparison function, such as float, will result in an internal cast to integer of the callback's return value. So values such as 0.99 and 0.1 will both be cast to an integer value of 0, which will compare such values as equal.

返回值

Returns a sorted copy of the deque.

范例

Example #1 Ds\Deque::sorted() example

<?php
$deque = new \Ds\Deque([4, 5, 1, 3, 2]);

print_r($deque->sorted());
?>

以上例程的输出类似于：

Ds\Deque Object
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)

Example #2 Ds\Deque::sorted() example using a comparator

<?php
$deque = new \Ds\Deque([4, 5, 1, 3, 2]);

$sorted = $deque->sorted(function($a, $b) {
    return $b <=> $a;
});

print_r($sorted);
?>

以上例程的输出类似于：

Ds\Deque Object
(
    [0] => 5
    [1] => 4
    [2] => 3
    [3] => 2
    [4] => 1
)
Ds\Deque::sort
Ds\Deque::sum
Deque


Returns the sum of all values in the deque.

Ds\Deque::sorted
Ds\Deque::toArray
Deque
PHP Manual

Ds\Deque::sum

(PECL ds >= 1.0.0)

Ds\Deque::sum — Returns the sum of all values in the deque.

说明

public number Ds\Deque::sum ( void )

Returns the sum of all values in the deque.

Note:

Arrays and objects are considered equal to zero when calculating the sum.

参数

此函数没有参数。

返回值

The sum of all the values in the deque as either a float or int depending on the values in the deque.

范例

Example #1 Ds\Deque::sum() integer example

<?php
$deque = new \Ds\Deque([1, 2, 3]);
var_dump($deque->sum());
?>

以上例程的输出类似于：

int(6)

Example #2 Ds\Deque::sum() float example

<?php
$deque = new \Ds\Deque([1, 2.5, 3]);
var_dump($deque->sum());
?>

以上例程的输出类似于：

float(6.5)
Ds\Deque::sorted
Ds\Deque::toArray
Deque


Converts the deque to an array.

Ds\Deque::sum
Ds\Deque::unshift
Deque
PHP Manual

Ds\Deque::toArray

(PECL ds >= 1.0.0)

Ds\Deque::toArray — Converts the deque to an array.

说明

public array Ds\Deque::toArray ( void )

Converts the deque to an array.

Note:

Casting to an array is not supported yet.

参数

此函数没有参数。

返回值

An array containing all the values in the same order as the deque.

范例

Example #1 Ds\Deque::toArray() example

<?php
$deque = new \Ds\Deque([1, 2, 3]);

var_dump($deque->toArray());
?>

以上例程的输出类似于：

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
Ds\Deque::sum
Ds\Deque::unshift
Deque


Adds values to the front of the deque.

Ds\Deque::toArray
Map
Deque
PHP Manual

Ds\Deque::unshift

(PECL ds >= 1.0.0)

Ds\Deque::unshift — Adds values to the front of the deque.

说明

public void Ds\Deque::unshift ([ mixed $values ] )

Adds values to the front of the deque, moving all the current values forward to make room for the new values.

参数

values

The values to add to the front of the deque.

Note:

Multiple values will be added in the same order that they are passed.

返回值

没有返回值。

范例

Example #1 Ds\Deque::unshift() example

<?php
$deque = new \Ds\Deque([1, 2, 3]);

$deque->unshift("a");
$deque->unshift("b", "c");

print_r($deque);
?>

以上例程的输出类似于：

Ds\Deque Object
(
    [0] => b
    [1] => c
    [2] => a
    [3] => 1
    [4] => 2
    [5] => 3
)
Ds\Deque::toArray
Map
Deque


The Map class

(No version information available, might only be in Git)

简介

A Map is a sequential collection of key-value pairs, almost identical to an array used in a similar context. Keys can be any type, but must be unique. Values are replaced if added to the map using the same key.

Strengths

  • Keys and values can be any type, including objects.
  • Supports array syntax (square brackets).
  • Insertion order is preserved.
  • Performance and memory efficiency is very similar to an array.
  • Automatically frees allocated memory when its size drops low enough.

Weaknesses

  • Can't be converted to an array when objects are used as keys.

类摘要

Ds\Map implements Ds\Collection {
/* Constants */
const int MIN_CAPACITY = 16 ;
/* 方法 */
public void allocate ( int $capacity )
public void apply ( callable $callback )
public int capacity ( void )
public void clear ( void )
public Ds\Map copy ( void )
public Ds\Map diff ( Ds\Map $map )
public Ds\Map filter ([ callable $callback ] )
public Ds\Pair first ( void )
public mixed get ( mixed $key [, mixed $default ] )
public bool hasKey ( mixed $key )
public bool hasValue ( mixed $value )
public Ds\Map intersect ( Ds\Map $map )
public bool isEmpty ( void )
public Ds\Set keys ( void )
public void ksort ([ callable $comparator ] )
public Ds\Map ksorted ([ callable $comparator ] )
public Ds\Pair last ( void )
public Ds\Map map ( callable $callback )
public Ds\Map merge ( mixed $values )
public Ds\Sequence pairs ( void )
public void put ( mixed $key , mixed $value )
public void putAll ( mixed $pairs )
public mixed reduce ( callable $callback [, mixed $initial ] )
public mixed remove ( mixed $key [, mixed $default ] )
public void reverse ( void )
public Ds\Map reversed ( void )
public Ds\Pair skip ( int $position )
public Ds\Map slice ( int $index [, int $length ] )
public void sort ([ callable $comparator ] )
public Ds\Map sorted ([ callable $comparator ] )
public number sum ( void )
public array toArray ( void )
public Ds\Map union ( Ds\Map $map )
public Ds\Sequence values ( void )
public Ds\Map xor ( Ds\Map $map )
}

预定义常量

Ds\Map::MIN_CAPACITY

Table of Contents

  • Ds\Map::allocate — Allocates enough memory for a required capacity.
  • Ds\Map::apply — Updates all values by applying a callback function to each value.
  • Ds\Map::capacity — Returns the current capacity.
  • Ds\Map::clear — Removes all values.
  • Ds\Map::__construct — Creates a new instance.
  • Ds\Map::copy — Returns a shallow copy of the map.
  • Ds\Map::count — Returns the number of values in the map.
  • Ds\Map::diff — Creates a new map using keys that aren't in another map.
  • Ds\Map::filter — Creates a new map using a callable to determine which pairs to include.
  • Ds\Map::first — Returns the first pair in the map.
  • Ds\Map::get — Returns the value for a given key.
  • Ds\Map::hasKey — Determines whether the map contains a given key.
  • Ds\Map::hasValue — Determines whether the map contains a given value.
  • Ds\Map::intersect — Creates a new map by intersecting keys with another map.
  • Ds\Map::isEmpty — Returns whether the map is empty
  • Ds\Map::jsonSerialize — Returns a representation that can be converted to JSON.
  • Ds\Map::keys — Returns a set of the map's keys.
  • Ds\Map::ksort — Sorts the map in-place by key.
  • Ds\Map::ksorted — Returns a copy, sorted by key.
  • Ds\Map::last — Returns the last pair of the map.
  • Ds\Map::map — Returns the result of applying a callback to each value.
  • Ds\Map::merge — Returns the result of adding all given associations.
  • Ds\Map::pairs — Returns a sequence containing all the pairs of the map.
  • Ds\Map::put — Associates a key with a value.
  • Ds\Map::putAll — Associates all key-value pairs of a traversable object or array.
  • Ds\Map::reduce — Reduces the map to a single value using a callback function.
  • Ds\Map::remove — Removes and returns a value by key.
  • Ds\Map::reverse — Reverses the map in-place.
  • Ds\Map::reversed — Returns a reversed copy.
  • Ds\Map::skip — Returns the pair at a given positional index.
  • Ds\Map::slice — Returns a subset of the map defined by a starting index and length.
  • Ds\Map::sort — Sorts the map in-place by value.
  • Ds\Map::sorted — Returns a copy, sorted by value.
  • Ds\Map::sum — Returns the sum of all values in the map.
  • Ds\Map::toArray — Converts the map to an array.
  • Ds\Map::union — Creates a new map using values from the current instance and another map.
  • Ds\Map::values — Returns a sequence of the map's values.
  • Ds\Map::xor — Creates a new map using keys of either the current instance or of another map, but not of both.
Ds\Deque::unshift
Ds\Map::allocate
Data Structures


Allocates enough memory for a required capacity.

Map
Ds\Map::apply
Map
PHP Manual

Ds\Map::allocate

(PECL ds >= 1.0.0)

Ds\Map::allocate — Allocates enough memory for a required capacity.

说明

public void Ds\Map::allocate ( int $capacity )

Allocates enough memory for a required capacity.

参数

capacity

The number of values for which capacity should be allocated.

Note:

Capacity will stay the same if this value is less than or equal to the current capacity.

Note:

Capacity will always be rounded up to the nearest power of 2.

返回值

没有返回值。

范例

Example #1 Ds\Map::allocate() example

<?php
$map = new \Ds\Map();
var_dump($map->capacity());

$map->allocate(100);
var_dump($map->capacity());
?>

以上例程的输出类似于：

int(16)
int(128)
Map
Ds\Map::apply
Map


Updates all values by applying a callback function to each value.

Ds\Map::allocate
Ds\Map::capacity
Map
PHP Manual

Ds\Map::apply

(PECL ds >= 1.0.0)

Ds\Map::apply — Updates all values by applying a callback function to each value.

说明

public void Ds\Map::apply ( callable $callback )

Updates all values by applying a callback function to each value in the map.

参数

callback

mixed callback ( mixed $key , mixed $value )

A callable to apply to each value in the map.

The callback should return what the value should be replaced by.

返回值

没有返回值。

范例

Example #1 Ds\Map::apply() example

<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);
$map->apply(function($key, $value) { return $value * 2; });

print_r($map);
?>

以上例程的输出类似于：

Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => a
            [value] => 2
        )

    [1] => Ds\Pair Object
        (
            [key] => b
            [value] => 4
        )

    [2] => Ds\Pair Object
        (
            [key] => c
            [value] => 6
        )

)
Ds\Map::allocate
Ds\Map::capacity
Map


Returns the current capacity.

Ds\Map::apply
Ds\Map::clear
Map
PHP Manual

Ds\Map::capacity

(PECL ds >= 1.0.0)

Ds\Map::capacity — Returns the current capacity.

说明

public int Ds\Map::capacity ( void )

Returns the current capacity.

参数

此函数没有参数。

返回值

The current capacity.

范例

Example #1 Ds\Map::capacity() example

<?php
$map = new \Ds\Map();
var_dump($map->capacity());
?>

以上例程的输出类似于：

int(16)
Ds\Map::apply
Ds\Map::clear
Map


Removes all values.

Ds\Map::capacity
Ds\Map::__construct
Map
PHP Manual

Ds\Map::clear

(PECL ds >= 1.0.0)

Ds\Map::clear — Removes all values.

说明

public void Ds\Map::clear ( void )

Removes all values from the map.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 Ds\Map::clear() example

<?php
$map = new \Ds\Map([
    "a" => 1,
    "b" => 2,
    "c" => 3,
]);
print_r($map);

$map->clear();
print_r($map);
?>

以上例程的输出类似于：

Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => a
            [value] => 1
        )

    [1] => Ds\Pair Object
        (
            [key] => b
            [value] => 2
        )

    [2] => Ds\Pair Object
        (
            [key] => c
            [value] => 3
        )

)
Ds\Map Object
(
)
Ds\Map::capacity
Ds\Map::__construct
Map


Creates a new instance.

Ds\Map::clear
Ds\Map::copy
Map
PHP Manual

Ds\Map::__construct

(PECL ds >= 1.0.0)

Ds\Map::__construct — Creates a new instance.

说明

public Ds\Map::__construct ([ mixed $...values ] )

Creates a new instance, using either a traversable object or an array for the initial values.

参数

values

A traversable object or an array to use for the initial values.

范例

Example #1 Ds\Map::__construct() example

<?php
$map = new \Ds\Map();
var_dump($map);

$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);
var_dump($map);
?>

以上例程的输出类似于：

object(Ds\Map)#1 (0) {
}
object(Ds\Map)#2 (3) {
  [0]=>
  object(Ds\Pair)#1 (2) {
    ["key"]=>
    string(1) "a"
    ["value"]=>
    int(1)
  }
  [1]=>
  object(Ds\Pair)#3 (2) {
    ["key"]=>
    string(1) "b"
    ["value"]=>
    int(2)
  }
  [2]=>
  object(Ds\Pair)#4 (2) {
    ["key"]=>
    string(1) "c"
    ["value"]=>
    int(3)
  }
}
Ds\Map::clear
Ds\Map::copy
Map


Returns a shallow copy of the map.

Ds\Map::__construct
Ds\Map::count
Map
PHP Manual

Ds\Map::copy

(PECL ds >= 1.0.0)

Ds\Map::copy — Returns a shallow copy of the map.

说明

public Ds\Map Ds\Map::copy ( void )

Returns a shallow copy of the map.

参数

此函数没有参数。

返回值

Returns a shallow copy of the map.

范例

Example #1 Ds\Map::copy() example

<?php
$map = new \Ds\Map([
    "a" => 1,
    "b" => 2,
    "c" => 3,
]);

print_r($map->copy());
?>

以上例程的输出类似于：

Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => a
            [value] => 1
        )

    [1] => Ds\Pair Object
        (
            [key] => b
            [value] => 2
        )

    [2] => Ds\Pair Object
        (
            [key] => c
            [value] => 3
        )

)
Ds\Map::__construct
Ds\Map::count
Map


Returns the number of values in the map.

Ds\Map::copy
Ds\Map::diff
Map
PHP Manual

Ds\Map::count

(PECL ds >= 1.0.0)

Ds\Map::count — Returns the number of values in the map.

See Countable::count()

Ds\Map::copy
Ds\Map::diff
Map


Creates a new map using keys that aren't in another map.

Ds\Map::count
Ds\Map::filter
Map
PHP Manual

Ds\Map::diff

(PECL ds >= 1.0.0)

Ds\Map::diff — Creates a new map using keys that aren't in another map.

说明

public Ds\Map Ds\Map::diff ( Ds\Map $map )

Returns the result of removing all keys from the current instance that are present in a given map.

A \ B = {x ∈ A | x ? B}

参数

map

The map containing the keys to exclude in the resulting map.

返回值

The result of removing all keys from the current instance that are present in a given map.

See Also

  • » Compliment on Wikipedia

范例

Example #1 Ds\Map::diff() example

<?php
$a = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);
$b = new \Ds\Map(["b" => 4, "c" => 5, "d" => 6]);

var_dump($a->diff($b));
?>

以上例程的输出类似于：

object(Ds\Map)#3 (1) {
  [0]=>
  object(Ds\Pair)#4 (2) {
    ["key"]=>
    string(1) "a"
    ["value"]=>
    int(1)
  }
}
Ds\Map::count
Ds\Map::filter
Map


Creates a new map using a callable to determine which pairs to include.

Ds\Map::diff
Ds\Map::first
Map
PHP Manual

Ds\Map::filter

(PECL ds >= 1.0.0)

Ds\Map::filter — Creates a new map using a callable to determine which pairs to include.

说明

public Ds\Map Ds\Map::filter ([ callable $callback ] )

Creates a new map using a callable to determine which pairs to include.

参数

callback

bool callback ( mixed $key , mixed $value )

Optional callable which returns TRUE if the pair should be included, FALSE otherwise.

If a callback is not provided, only values which are TRUE (see converting to boolean) will be included.

返回值

A new map containing all the pairs for which either the callback returned TRUE, or all values that convert to TRUE if a callback was not provided.

范例

Example #1 Ds\Map::filter() example using callback function

<?php
$map = new \Ds\Map(["a", "b", "c", "d", "e"]);

var_dump($map->filter(function($key, $value) {
    return $key % 2 == 0;
}));
?>

以上例程的输出类似于：

object(Ds\Map)#3 (3) {
  [0]=>
  object(Ds\Pair)#2 (2) {
    ["key"]=>
    int(0)
    ["value"]=>
    string(1) "a"
  }
  [1]=>
  object(Ds\Pair)#4 (2) {
    ["key"]=>
    int(2)
    ["value"]=>
    string(1) "c"
  }
  [2]=>
  object(Ds\Pair)#5 (2) {
    ["key"]=>
    int(4)
    ["value"]=>
    string(1) "e"
  }
}

Example #2 Ds\Map::filter() example without a callback function

<?php
$map = new \Ds\Map(["a" => 0, "b" => 1, "c" => true, "d" => false]);

var_dump($map->filter());
?>

以上例程的输出类似于：

object(Ds\Map)#2 (3) {
  [0]=>
  int(1)
  [1]=>
  string(1) "a"
  [2]=>
  bool(true)
}
Ds\Map::diff
Ds\Map::first
Map


Returns the first pair in the map.

Ds\Map::filter
Ds\Map::get
Map
PHP Manual

Ds\Map::first

(PECL ds >= 1.0.0)

Ds\Map::first — Returns the first pair in the map.

说明

public Ds\Pair Ds\Map::first ( void )

Returns the first pair in the map.

参数

此函数没有参数。

返回值

The first pair in the map.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\Map::first() example

<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);
var_dump($map->first());
?>

以上例程的输出类似于：

object(Ds\Pair)#2 (2) {
  ["key"]=>
  string(1) "a"
  ["value"]=>
  int(1)
}
Ds\Map::filter
Ds\Map::get
Map


Returns the value for a given key.

Ds\Map::first
Ds\Map::hasKey
Map
PHP Manual

Ds\Map::get

(PECL ds >= 1.0.0)

Ds\Map::get — Returns the value for a given key.

说明

public mixed Ds\Map::get ( mixed $key [, mixed $default ] )

Returns the value for a given key, or an optional default value if the key could not be found.

Note:

Keys of type object are supported. If an object implements Ds\Hashable, equality will be determined by the object's equals function. If an object does not implement Ds\Hashable, objects must be references to the same instance to be considered equal.

Note:

You can also use array syntax to access values by key, eg. $map["key"].

Caution

Be careful when using array syntax. Scalar keys will be coerced to integers by the engine. For example, $map["1"] will attempt to access int(1), while $map->get("1") will correctly look up the string key.

See Arrays.

参数

key

The key to look up.

default

The optional default value, returned if the key could not be found.

返回值

The value mapped to the given key, or the default value if provided and the key could not be found in the map.

错误／异常

OutOfBoundsException if the key could not be found and a default value was not provided.

范例

Example #1 Ds\Map::get() example

<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);

var_dump($map->get("a"));       // 1
var_dump($map->get("d", 10));   // 10 (default used)
?>

以上例程的输出类似于：

int(1)
int(10)

Example #2 Ds\Map::get() example using array syntax

<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);

var_dump($map["a"])); // 1
?>

以上例程的输出类似于：

int(1)
Ds\Map::first
Ds\Map::hasKey
Map


Determines whether the map contains a given key.

Ds\Map::get
Ds\Map::hasValue
Map
PHP Manual

Ds\Map::hasKey

(PECL ds >= 1.0.0)

Ds\Map::hasKey — Determines whether the map contains a given key.

说明

public bool Ds\Map::hasKey ( mixed $key )

Determines whether the map contains a given key.

参数

key

The key to look for.

返回值

Returns TRUE if the key could found, FALSE otherwise.

范例

Example #1 Ds\Map::hasKey() example

<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);

var_dump($map->hasKey("a")); // true
var_dump($map->hasKey("e")); // false
?>

以上例程的输出类似于：

bool(true)
bool(false)
Ds\Map::get
Ds\Map::hasValue
Map


Determines whether the map contains a given value.

Ds\Map::hasKey
Ds\Map::intersect
Map
PHP Manual

Ds\Map::hasValue

(PECL ds >= 1.0.0)

Ds\Map::hasValue — Determines whether the map contains a given value.

说明

public bool Ds\Map::hasValue ( mixed $value )

Determines whether the map contains a given value.

参数

value

The value to look for.

返回值

Returns TRUE if the value could found, FALSE otherwise.

范例

Example #1 Ds\Map::hasValue() example

<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);

var_dump($map->hasValue(1)); // true
var_dump($map->hasValue(4)); // false
?>

以上例程的输出类似于：

bool(true)
bool(false)
Ds\Map::hasKey
Ds\Map::intersect
Map


Creates a new map by intersecting keys with another map.

Ds\Map::hasValue
Ds\Map::isEmpty
Map
PHP Manual

Ds\Map::intersect

(PECL ds >= 1.0.0)

Ds\Map::intersect — Creates a new map by intersecting keys with another map.

说明

public Ds\Map Ds\Map::intersect ( Ds\Map $map )

Creates a new map containing the pairs of the current instance whose keys are also present in the given map. In other words, returns a copy of the current instance with all keys removed that are not also in the other map.

A ∩ B = {x : x ∈ A ∧ x ∈ B}

Note:

Values from the current instance will be kept.

参数

map

The other map, containing the keys to intersect with.

返回值

The key intersection of the current instance and another map.

See Also

  • » Intersection on Wikipedia

范例

Example #1 Ds\Map::intersect() example

<?php
$a = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);
$b = new \Ds\Map(["b" => 4, "c" => 5, "d" => 6]);

var_dump($a->intersect($b));
?>

以上例程的输出类似于：

object(Ds\Map)#3 (2) {
  [0]=>
  object(Ds\Pair)#4 (2) {
    ["key"]=>
    string(1) "b"
    ["value"]=>
    int(2)
  }
  [1]=>
  object(Ds\Pair)#5 (2) {
    ["key"]=>
    string(1) "c"
    ["value"]=>
    int(3)
  }
}
Ds\Map::hasValue
Ds\Map::isEmpty
Map


Returns whether the map is empty

Ds\Map::intersect
Ds\Map::jsonSerialize
Map
PHP Manual

Ds\Map::isEmpty

(PECL ds >= 1.0.0)

Ds\Map::isEmpty — Returns whether the map is empty

说明

public bool Ds\Map::isEmpty ( void )

Returns whether the map is empty.

参数

此函数没有参数。

返回值

Returns TRUE if the map is empty, FALSE otherwise.

范例

Example #1 Ds\Map::isEmpty() example

<?php
$a = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);
$b = new \Ds\Map();

var_dump($a->isEmpty());
var_dump($b->isEmpty());
?>

以上例程的输出类似于：

bool(false)
bool(true)
Ds\Map::intersect
Ds\Map::jsonSerialize
Map


Returns a representation that can be converted to JSON.

Ds\Map::isEmpty
Ds\Map::keys
Map
PHP Manual

Ds\Map::jsonSerialize

(PECL ds >= 1.0.0)

Ds\Map::jsonSerialize — Returns a representation that can be converted to JSON.

See JsonSerializable::jsonSerialize()

Note:

You should never need to call this directly.

Ds\Map::isEmpty
Ds\Map::keys
Map


Returns a set of the map's keys.

Ds\Map::jsonSerialize
Ds\Map::ksort
Map
PHP Manual

Ds\Map::keys

(PECL ds >= 1.0.0)

Ds\Map::keys — Returns a set of the map's keys.

说明

public Ds\Set Ds\Map::keys ( void )

Returns a set containing all the keys of the map, in the same order.

参数

此函数没有参数。

返回值

A Ds\Set containing all the keys of the map.

范例

Example #1 Ds\Map::keys() example

<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);
var_dump($map->keys());
?>

以上例程的输出类似于：

object(Ds\Set)#2 (3) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  [2]=>
  string(1) "c"
}
Ds\Map::jsonSerialize
Ds\Map::ksort
Map


Sorts the map in-place by key.

Ds\Map::keys
Ds\Map::ksorted
Map
PHP Manual

Ds\Map::ksort

(PECL ds >= 1.0.0)

Ds\Map::ksort — Sorts the map in-place by key.

说明

public void Ds\Map::ksort ([ callable $comparator ] )

Sorts the map in-place by key, using an optional comparator function.

参数

comparator

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )
Caution

Returning non-integer values from the comparison function, such as float, will result in an internal cast to integer of the callback's return value. So values such as 0.99 and 0.1 will both be cast to an integer value of 0, which will compare such values as equal.

返回值

没有返回值。

范例

Example #1 Ds\Map::ksort() example

<?php
$map = new \Ds\Map(["b" => 2, "c" => 3, "a" => 1]);
$map->ksort();

print_r($map);
?>

以上例程的输出类似于：

Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => a
            [value] => 1
        )

    [1] => Ds\Pair Object
        (
            [key] => b
            [value] => 2
        )

    [2] => Ds\Pair Object
        (
            [key] => c
            [value] => 3
        )

)

Example #2 Ds\Map::ksort() example using a comparator

<?php
$map = new \Ds\Map([1 => "x", 2 => "y", 0 => "z"]);

// Reverse
$map->ksort(function($a, $b) {
    return $b <=> $a;
});

print_r($map);
?>

以上例程的输出类似于：

Ds\Map Object
Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => 2
            [value] => y
        )

    [1] => Ds\Pair Object
        (
            [key] => 1
            [value] => x
        )

    [2] => Ds\Pair Object
        (
            [key] => 0
            [value] => z
        )

)
Ds\Map::keys
Ds\Map::ksorted
Map


Returns a copy, sorted by key.

Ds\Map::ksort
Ds\Map::last
Map
PHP Manual

Ds\Map::ksorted

(No version information available, might only be in Git)

Ds\Map::ksorted — Returns a copy, sorted by key.

说明

public Ds\Map Ds\Map::ksorted ([ callable $comparator ] )

Returns a copy sorted by key, using an optional comparator function.

参数

comparator

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )
Caution

Returning non-integer values from the comparison function, such as float, will result in an internal cast to integer of the callback's return value. So values such as 0.99 and 0.1 will both be cast to an integer value of 0, which will compare such values as equal.

返回值

Returns a copy of the map, sorted by key.

范例

Example #1 Ds\Map::ksorted() example

<?php
$map = new \Ds\Map(["b" => 2, "c" => 3, "a" => 1]);

print_r($map->ksorted());
?>

以上例程的输出类似于：

Ds\Map Object
Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => a
            [value] => 1
        )

    [1] => Ds\Pair Object
        (
            [key] => b
            [value] => 2
        )

    [2] => Ds\Pair Object
        (
            [key] => c
            [value] => 3
        )

)

Example #2 Ds\Map::ksorted() example using a comparator

<?php
$map = new \Ds\Map([1 => "x", 2 => "y", 0 => "z"]);

// Reverse
$sorted = $map->ksorted(function($a, $b) {
    return $b <=> $a;
});

print_r($sorted);
?>

以上例程的输出类似于：

Ds\Map Object
Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => 2
            [value] => y
        )

    [1] => Ds\Pair Object
        (
            [key] => 1
            [value] => x
        )

    [2] => Ds\Pair Object
        (
            [key] => 0
            [value] => z
        )

)
Ds\Map::ksort
Ds\Map::last
Map


Returns the last pair of the map.

Ds\Map::ksorted
Ds\Map::map
Map
PHP Manual

Ds\Map::last

(PECL ds >= 1.0.0)

Ds\Map::last — Returns the last pair of the map.

说明

public Ds\Pair Ds\Map::last ( void )

Returns the last pair of the map.

参数

此函数没有参数。

返回值

The last pair of the map.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\Map::last() example

<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);
var_dump($map->last());
?>

以上例程的输出类似于：

object(Ds\Pair)#2 (2) {
  ["key"]=>
  string(1) "c"
  ["value"]=>
  int(3)
}
Ds\Map::ksorted
Ds\Map::map
Map


Returns the result of applying a callback to each value.

Ds\Map::last
Ds\Map::merge
Map
PHP Manual

Ds\Map::map

(PECL ds >= 1.0.0)

Ds\Map::map — Returns the result of applying a callback to each value.

说明

public Ds\Map Ds\Map::map ( callable $callback )

Returns the result of applying a callback function to each value of the map.

参数

callback

mixed callback ( mixed $key , mixed $value )

A callable to apply to each value in the map.

The callable should return what the key will be mapped to in the resulting map.

返回值

The result of applying a callback to each value in the map.

Note:

The keys and values of the current instance won't be affected.

范例

Example #1 Ds\Map::map() example

<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);

print_r($map->map(function($key, $value) { return $value * 2; }));
print_r($map);
?>

以上例程的输出类似于：

(
    [0] => Ds\Pair Object
        (
            [key] => a
            [value] => 2
        )

    [1] => Ds\Pair Object
        (
            [key] => b
            [value] => 4
        )

    [2] => Ds\Pair Object
        (
            [key] => c
            [value] => 6
        )

)
Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => a
            [value] => 1
        )

    [1] => Ds\Pair Object
        (
            [key] => b
            [value] => 2
        )

    [2] => Ds\Pair Object
        (
            [key] => c
            [value] => 3
        )

)
Ds\Map::last
Ds\Map::merge
Map


Returns the result of adding all given associations.

Ds\Map::map
Ds\Map::pairs
Map
PHP Manual

Ds\Map::merge

(PECL ds >= 1.0.0)

Ds\Map::merge — Returns the result of adding all given associations.

说明

public Ds\Map Ds\Map::merge ( mixed $values )

Returns the result of associating all keys of a given traversable object or array with their corresponding values, combined with the current instance.

Note:

Values of the current instance will be overwritten by those provided where keys are equal.

参数

values

A traversable object or an array.

返回值

The result of associating all keys of a given traversable object or array with their corresponding values, combined with the current instance.

Note:

The current instance won't be affected.

范例

Example #1 Ds\Map::merge() example

<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);

print_r($map->merge(["a" => 10, "e" => 50]));
?>

以上例程的输出类似于：

Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => a
            [value] => 10
        )

    [1] => Ds\Pair Object
        (
            [key] => b
            [value] => 2
        )

    [2] => Ds\Pair Object
        (
            [key] => c
            [value] => 3
        )

    [3] => Ds\Pair Object
        (
            [key] => e
            [value] => 50
        )

)
Ds\Map::map
Ds\Map::pairs
Map


Returns a sequence containing all the pairs of the map.

Ds\Map::merge
Ds\Map::put
Map
PHP Manual

Ds\Map::pairs

(PECL ds >= 1.0.0)

Ds\Map::pairs — Returns a sequence containing all the pairs of the map.

说明

public Ds\Sequence Ds\Map::pairs ( void )

Returns a Ds\Sequence containing all the pairs of the map.

参数

此函数没有参数。

返回值

Ds\Sequence containing all the pairs of the map.

范例

Example #1 Ds\Map::pairs() example

<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);

var_dump($map->pairs());
?>

以上例程的输出类似于：

object(Ds\Map)#8 (3) {
  [0]=>
  object(Ds\Pair)#5 (2) {
    ["key"]=>
    string(1) "a"
    ["value"]=>
    int(1)
  }
  [1]=>
  object(Ds\Pair)#6 (2) {
    ["key"]=>
    string(1) "b"
    ["value"]=>
    int(2)
  }
  [2]=>
  object(Ds\Pair)#7 (2) {
    ["key"]=>
    string(1) "c"
    ["value"]=>
    int(3)
  }
}
p
Ds\Map::merge
Ds\Map::put
Map


Associates a key with a value.

Ds\Map::pairs
Ds\Map::putAll
Map
PHP Manual

Ds\Map::put

(PECL ds >= 1.0.0)

Ds\Map::put — Associates a key with a value.

说明

public void Ds\Map::put ( mixed $key , mixed $value )

Associates a key with a value, overwriting a previous association if one exists.

Note:

Keys of type object are supported. If an object implements Ds\Hashable, equality will be determined by the object's equals function. If an object does not implement Ds\Hashable, objects must be references to the same instance to be considered equal.

Note:

You can also use array syntax to associate values by key, eg. $map["key"] = $value.

Caution

Be careful when using array syntax. Scalar keys will be coerced to integers by the engine. For example, $map["1"] will attempt to access int(1), while $map->get("1") will correctly look up the string key.

See Arrays.

参数

key

The key to associate the value with.

value

The value to be associated with the key.

返回值

没有返回值。

范例

Example #1 Ds\Map::put() example

<?php
$map = new \Ds\Map();

$map->put("a", 1);
$map->put("b", 2);
$map->put("c", 3);

print_r($map);
?>

以上例程的输出类似于：

Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => a
            [value] => 1
        )

    [1] => Ds\Pair Object
        (
            [key] => b
            [value] => 2
        )

    [2] => Ds\Pair Object
        (
            [key] => c
            [value] => 3
        )

)

Example #2 Ds\Map::put() example using objects as keys

<?php
class HashableObject implements \Ds\Hashable
{
    /**
     * An arbitrary value to use as the hash value. Does not define equality.
     */
    private $value;

    public function __construct($value)
    {
        $this->value = $value;
    }

    public function hash()
    {
        return $this->value;
    }

    public function equals($obj): bool
    {
        return $this->value === $obj->value;
    }
}

$map = new \Ds\Map();

$obj = new \ArrayIterator([]);

// Using the same instance multiple times will overwrite the previous value.
$map->put($obj, 1);
$map->put($obj, 2);

// Using multiple instances of the same object will create new associations.
$map->put(new \stdClass(), 3);
$map->put(new \stdClass(), 4);

// Using multiple instances of equal hashable objects will overwrite previous values.
$map->put(new \HashableObject(1), 5);
$map->put(new \HashableObject(1), 6);
$map->put(new \HashableObject(2), 7);
$map->put(new \HashableObject(2), 8);

var_dump($map);
?>

以上例程的输出类似于：

object(Ds\Map)#1 (5) {
  [0]=>
  object(Ds\Pair)#7 (2) {
    ["key"]=>
    object(ArrayIterator)#2 (1) {
      ["storage":"ArrayIterator":private]=>
      array(0) {
      }
    }
    ["value"]=>
    int(2)
  }
  [1]=>
  object(Ds\Pair)#8 (2) {
    ["key"]=>
    object(stdClass)#3 (0) {
    }
    ["value"]=>
    int(3)
  }
  [2]=>
  object(Ds\Pair)#9 (2) {
    ["key"]=>
    object(stdClass)#4 (0) {
    }
    ["value"]=>
    int(4)
  }
  [3]=>
  object(Ds\Pair)#10 (2) {
    ["key"]=>
    object(HashableObject)#5 (1) {
      ["value":"HashableObject":private]=>
      int(1)
    }
    ["value"]=>
    int(6)
  }
  [4]=>
  object(Ds\Pair)#11 (2) {
    ["key"]=>
    object(HashableObject)#6 (1) {
      ["value":"HashableObject":private]=>
      int(2)
    }
    ["value"]=>
    int(8)
  }
}
Ds\Map::pairs
Ds\Map::putAll
Map


Associates all key-value pairs of a traversable object or array.

Ds\Map::put
Ds\Map::reduce
Map
PHP Manual

Ds\Map::putAll

(PECL ds >= 1.0.2)

Ds\Map::putAll — Associates all key-value pairs of a traversable object or array.

说明

public void Ds\Map::putAll ( mixed $pairs )

Associates all key-value pairs of a traversable object or array.

Note:

Keys of type object are supported. If an object implements Ds\Hashable, equality will be determined by the object's equals function. If an object does not implement Ds\Hashable, objects must be references to the same instance to be considered equal.

参数

pairs

traversable object or array.

返回值

没有返回值。

范例

Example #1 Ds\Map::putAll() example

<?php
$map = new \Ds\Map();

$map->putAll([
    "a" => 1,
    "b" => 2,
    "c" => 3,
]);

print_r($map);
?>

以上例程的输出类似于：

Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => a
            [value] => 1
        )

    [1] => Ds\Pair Object
        (
            [key] => b
            [value] => 2
        )

    [2] => Ds\Pair Object
        (
            [key] => c
            [value] => 3
        )

)
Ds\Map::put
Ds\Map::reduce
Map


Reduces the map to a single value using a callback function.

Ds\Map::putAll
Ds\Map::remove
Map
PHP Manual

Ds\Map::reduce

(PECL ds >= 1.0.0)

Ds\Map::reduce — Reduces the map to a single value using a callback function.

说明

public mixed Ds\Map::reduce ( callable $callback [, mixed $initial ] )

Reduces the map to a single value using a callback function.

参数

callback
mixed callback ( mixed $carry , mixed $key , mixed $value )
carry

The return value of the previous callback, or initial if it's the first iteration.

key

The key of the current iteration.

value

The value of the current iteration.

initial

The initial value of the carry value. Can be NULL.

返回值

The return value of the final callback.

范例

Example #1 Ds\Map::reduce() with initial value example

<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);

$callback = function($carry, $key, $value) {
    return $carry * $value;
};

var_dump($map->reduce($callback, 5));

// Iterations:
//
// $carry = $initial = 5
//
// $carry = $carry * 1 =  5
// $carry = $carry * 2 = 10
// $carry = $carry * 3 = 30
?>

以上例程的输出类似于：

int(30)

Example #2 Ds\Map::reduce() without an initial value example

<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);

var_dump($map->reduce(function($carry, $key, $value) {
    return $carry + $value + 5;
}));

// Iterations:
//
// $carry = $initial = null
//
// $carry = $carry + 1 + 5 =  6
// $carry = $carry + 2 + 5 = 13
// $carry = $carry + 3 + 5 = 21
?>

以上例程的输出类似于：

int(21)
Ds\Map::putAll
Ds\Map::remove
Map


Removes and returns a value by key.

Ds\Map::reduce
Ds\Map::reverse
Map
PHP Manual

Ds\Map::remove

(PECL ds >= 1.0.0)

Ds\Map::remove — Removes and returns a value by key.

说明

public mixed Ds\Map::remove ( mixed $key [, mixed $default ] )

Removes and returns a value by key, or return an optional default value if the key could not be found.

Note:

Keys of type object are supported. If an object implements Ds\Hashable, equality will be determined by the object's equals function. If an object does not implement Ds\Hashable, objects must be references to the same instance to be considered equal.

Note:

You can also use array syntax to access values by key, eg. $map["key"].

Caution

Be careful when using array syntax. Scalar keys will be coerced to integers by the engine. For example, $map["1"] will attempt to access int(1), while $map->get("1") will correctly look up the string key.

See Arrays.

参数

key

The key to remove.

default

The optional default value, returned if the key could not be found.

返回值

The value that was removed, or the default value if provided and the key could not be found in the map.

错误／异常

OutOfBoundsException if the key could not be found and a default value was not provided.

范例

Example #1 Ds\Map::remove() example

<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);

var_dump($map->remove("a"));      //  1
var_dump($map->remove("e", 10));  // 10 (default used)
?>

以上例程的输出类似于：

int(1)
int(10)
Ds\Map::reduce
Ds\Map::reverse
Map


Reverses the map in-place.

Ds\Map::remove
Ds\Map::reversed
Map
PHP Manual

Ds\Map::reverse

(PECL ds >= 1.0.0)

Ds\Map::reverse — Reverses the map in-place.

说明

public void Ds\Map::reverse ( void )

Reverses the map in-place.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 Ds\Map::reverse() example

<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);
$map->reverse();

print_r($map);
?>

以上例程的输出类似于：

Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => c
            [value] => 3
        )

    [1] => Ds\Pair Object
        (
            [key] => b
            [value] => 2
        )

    [2] => Ds\Pair Object
        (
            [key] => a
            [value] => 1
        )

)
Ds\Map::remove
Ds\Map::reversed
Map


Returns a reversed copy.

Ds\Map::reverse
Ds\Map::skip
Map
PHP Manual

Ds\Map::reversed

(PECL ds >= 1.0.0)

Ds\Map::reversed — Returns a reversed copy.

说明

public Ds\Map Ds\Map::reversed ( void )

Returns a reversed copy of the map.

参数

此函数没有参数。

返回值

A reversed copy of the map.

Note:

The current instance is not affected.

范例

Example #1 Ds\Map::reversed() example

<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);

print_r($map->reversed());
?>

以上例程的输出类似于：

Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => c
            [value] => 3
        )

    [1] => Ds\Pair Object
        (
            [key] => b
            [value] => 2
        )

    [2] => Ds\Pair Object
        (
            [key] => a
            [value] => 1
        )

)
Ds\Map::reverse
Ds\Map::skip
Map


Returns the pair at a given positional index.

Ds\Map::reversed
Ds\Map::slice
Map
PHP Manual

Ds\Map::skip

(PECL ds >= 1.0.0)

Ds\Map::skip — Returns the pair at a given positional index.

说明

public Ds\Pair Ds\Map::skip ( int $position )

Returns the pair at a given zero-based position.

参数

position

The zero-based positional index to return.

返回值

Returns the Ds\Pair at the given position.

错误／异常

OutOfRangeException if the position is not valid.

范例

Example #1 Ds\Map::skip() example

<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);

var_dump($map->skip(1));
?>

以上例程的输出类似于：

object(Ds\Pair)#2 (2) {
  ["key"]=>
  string(1) "b"
  ["value"]=>
  int(2)
}
Ds\Map::reversed
Ds\Map::slice
Map


Returns a subset of the map defined by a starting index and length.

Ds\Map::skip
Ds\Map::sort
Map
PHP Manual

Ds\Map::slice

(PECL ds >= 1.0.0)

Ds\Map::slice — Returns a subset of the map defined by a starting index and length.

说明

public Ds\Map Ds\Map::slice ( int $index [, int $length ] )

Returns a subset of the map defined by a starting index and length.

参数

index

The index at which the range starts.

If positive, the range will start at that index in the map. If negative, the range will start that far from the end.

length

If a length is given and is positive, the resulting map will have up to that many pairs in it. If a length is given and is negative, the range will stop that many pairs from the end. If the length results in an overflow, only pairs up to the end of the map will be included. If a length is not provided, the resulting map will contain all pairs between the index and the end of the map.

返回值

A subset of the map defined by a starting index and length.

范例

Example #1 Ds\Map::slice() example

<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3, "d" => 4, "e" => 5]);

// Slice from 2 onwards
print_r($map->slice(2)->toArray());

// Slice from 1, for a length of 3
print_r($map->slice(1, 3)->toArray());

// Slice from 1 onwards
print_r($map->slice(1)->toArray());

// Slice from 2 from the end onwards
print_r($map->slice(-2)->toArray());

// Slice from 1 to 1 from the end
print_r($map->slice(1, -1)->toArray());
?>

以上例程的输出类似于：

Array
(
    [c] => 3
    [d] => 4
    [e] => 5
)
Array
(
    [b] => 2
    [c] => 3
    [d] => 4
)
Array
(
    [b] => 2
    [c] => 3
    [d] => 4
    [e] => 5
)
Array
(
    [d] => 4
    [e] => 5
)
Array
(
    [b] => 2
    [c] => 3
    [d] => 4
)
Ds\Map::skip
Ds\Map::sort
Map


Sorts the map in-place by value.

Ds\Map::slice
Ds\Map::sorted
Map
PHP Manual

Ds\Map::sort

(PECL ds >= 1.0.0)

Ds\Map::sort — Sorts the map in-place by value.

说明

public void Ds\Map::sort ([ callable $comparator ] )

Sorts the map in-place by value, using an optional comparator function.

参数

comparator

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )
Caution

Returning non-integer values from the comparison function, such as float, will result in an internal cast to integer of the callback's return value. So values such as 0.99 and 0.1 will both be cast to an integer value of 0, which will compare such values as equal.

返回值

没有返回值。

范例

Example #1 Ds\Map::sort() example

<?php
$map = new \Ds\Map(["a" => 2, "b" => 3, "c" => 1]);
$map->sort();

print_r($map);
?>

以上例程的输出类似于：

Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => c
            [value] => 1
        )

    [1] => Ds\Pair Object
        (
            [key] => a
            [value] => 2
        )

    [2] => Ds\Pair Object
        (
            [key] => b
            [value] => 3
        )

)

Example #2 Ds\Map::sort() example using a comparator

<?php
$map = new \Ds\Map(["a" => 2, "b" => 3, "c" => 1]);

$map->sort(function($a, $b) {
    return $b <=> $a;
});

print_r($map);
?>

以上例程的输出类似于：

Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => b
            [value] => 3
        )

    [1] => Ds\Pair Object
        (
            [key] => a
            [value] => 2
        )

    [2] => Ds\Pair Object
        (
            [key] => c
            [value] => 1
        )

)
Ds\Map::slice
Ds\Map::sorted
Map


Returns a copy, sorted by value.

Ds\Map::sort
Ds\Map::sum
Map
PHP Manual

Ds\Map::sorted

(PECL ds >= 1.0.0)

Ds\Map::sorted — Returns a copy, sorted by value.

说明

public Ds\Map Ds\Map::sorted ([ callable $comparator ] )

Returns a copy, sorted by value using an optional comparator function.

参数

comparator

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )
Caution

Returning non-integer values from the comparison function, such as float, will result in an internal cast to integer of the callback's return value. So values such as 0.99 and 0.1 will both be cast to an integer value of 0, which will compare such values as equal.

返回值

Returns a copy of the map, sorted by value.

范例

Example #1 Ds\Map::sort() example

<?php
$map = new \Ds\Map(["a" => 2, "b" => 3, "c" => 1]);

print_r($map->sorted());
?>

以上例程的输出类似于：

Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => c
            [value] => 1
        )

    [1] => Ds\Pair Object
        (
            [key] => a
            [value] => 2
        )

    [2] => Ds\Pair Object
        (
            [key] => b
            [value] => 3
        )

)

Example #2 Ds\Map::sort() example using a comparator

<?php
$map = new \Ds\Map(["a" => 2, "b" => 3, "c" => 1]);

// Reverse
$sorted = $map->sorted(function($a, $b) {
    return $b <=> $a;
});

print_r($sorted);
?>

以上例程的输出类似于：

Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => b
            [value] => 3
        )

    [1] => Ds\Pair Object
        (
            [key] => a
            [value] => 2
        )

    [2] => Ds\Pair Object
        (
            [key] => c
            [value] => 1
        )

)
Ds\Map::sort
Ds\Map::sum
Map


Returns the sum of all values in the map.

Ds\Map::sorted
Ds\Map::toArray
Map
PHP Manual

Ds\Map::sum

(No version information available, might only be in Git)

Ds\Map::sum — Returns the sum of all values in the map.

说明

public number Ds\Map::sum ( void )

Returns the sum of all values in the map.

Note:

Arrays and objects are considered equal to zero when calculating the sum.

参数

此函数没有参数。

返回值

The sum of all the values in the map as either a float or int depending on the values in the map.

范例

Example #1 Ds\Map::sum() integer example

<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);
var_dump($map->sum());
?>

以上例程的输出类似于：

int(6)

Example #2 Ds\Map::sum() float example

<?php
$map = new \Ds\Map(["a" => 1, "b" => 2.5, "c" => 3]);
var_dump($map->sum());
?>

以上例程的输出类似于：

float(6.5)
Ds\Map::sorted
Ds\Map::toArray
Map


Converts the map to an array.

Ds\Map::sum
Ds\Map::union
Map
PHP Manual

Ds\Map::toArray

(PECL ds >= 1.0.0)

Ds\Map::toArray — Converts the map to an array.

说明

public array Ds\Map::toArray ( void )

Converts the map to an array.

Caution

Maps where non-scalar keys are can't be converted to an array.

Caution

An array will treat all numeric keys as integers, eg. "1" and 1 as keys in the map will only result in 1 being included in the array.

Note:

Casting to an array is not supported yet.

参数

此函数没有参数。

返回值

An array containing all the values in the same order as the map.

范例

Example #1 Ds\Map::toArray() example

<?php
$map = new \Ds\Map([
    "a" => 1,
    "b" => 2,
    "c" => 3,
]);

var_dump($map->toArray());
?>

以上例程的输出类似于：

array(3) {
  ["a"]=>
  int(1)
  ["b"]=>
  int(2)
  ["c"]=>
  int(3)
}
Ds\Map::sum
Ds\Map::union
Map


Creates a new map using values from the current instance and another map.

Ds\Map::toArray
Ds\Map::values
Map
PHP Manual

Ds\Map::union

(PECL ds >= 1.0.0)

Ds\Map::union — Creates a new map using values from the current instance and another map.

说明

public Ds\Map Ds\Map::union ( Ds\Map $map )

Creates a new map that contains the pairs of the current instance as well as the pairs of another map.

A ∪ B = {x: x ∈ A ∨ x ∈ B}

Note:

Values of the current instance will be overwritten by those provided where keys are equal.

参数

map

The other map, to combine with the current instance.

返回值

A new map containing all the pairs of the current instance as well as another map.

See Also

  • » Union on Wikipedia

范例

Example #1 Ds\Map::union() example

<?php
$a = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);
$b = new \Ds\Map(["b" => 3, "c" => 4, "d" => 5]);

print_r($a->union($b));
?>

以上例程的输出类似于：

Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => a
            [value] => 1
        )

    [1] => Ds\Pair Object
        (
            [key] => b
            [value] => 3
        )

    [2] => Ds\Pair Object
        (
            [key] => c
            [value] => 4
        )

    [3] => Ds\Pair Object
        (
            [key] => d
            [value] => 5
        )

)
Ds\Map::toArray
Ds\Map::values
Map


Returns a sequence of the map's values.

Ds\Map::union
Ds\Map::xor
Map
PHP Manual

Ds\Map::values

(PECL ds >= 1.0.0)

Ds\Map::values — Returns a sequence of the map's values.

说明

public Ds\Sequence Ds\Map::values ( void )

Returns a sequence containing all the values of the map, in the same order.

参数

此函数没有参数。

返回值

A Ds\Sequence containing all the values of the map.

范例

Example #1 Ds\Map::values() example

<?php
$map = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);
var_dump($map->values());
?>

以上例程的输出类似于：

object(Ds\Map)#2 (3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
Ds\Map::union
Ds\Map::xor
Map


Creates a new map using keys of either the current instance or of another map, but not of both.

Ds\Map::values
Pair
Map
PHP Manual

Ds\Map::xor

(PECL ds >= 1.0.0)

Ds\Map::xor — Creates a new map using keys of either the current instance or of another map, but not of both.

说明

public Ds\Map Ds\Map::xor ( Ds\Map $map )

Creates a new map containing keys of the current instance as well as another map, but not of both.

A ? B = {x : x ∈ (A \ B) ∪ (B \ A)}

参数

map

The other map.

返回值

A new map containing keys in the current instance as well as another map, but not in both.

See Also

  • » Symmetric Difference on Wikipedia

范例

Example #1 Ds\Map::xor() example

<?php
$a = new \Ds\Map(["a" => 1, "b" => 2, "c" => 3]);
$b = new \Ds\Map(["b" => 4, "c" => 5, "d" => 6]);

print_r($a->xor($b));
?>

以上例程的输出类似于：

Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => a
            [value] => 1
        )

    [1] => Ds\Pair Object
        (
            [key] => d
            [value] => 6
        )

)
Ds\Map::values
Pair
Map


The Pair class

(No version information available, might only be in Git)

简介

A pair is used by Ds\Map to pair keys with values.

类摘要

Ds\Pair implements JsonSerializable {
/* 方法 */
public __construct ([ mixed $key [, mixed $value ]] )
}

Table of Contents

  • Ds\Pair::clear — Removes all values.
  • Ds\Pair::__construct — Creates a new instance.
  • Ds\Pair::copy — Returns a shallow copy of the pair.
  • Ds\Pair::isEmpty — Returns whether the pair is empty
  • Ds\Pair::jsonSerialize — Returns a representation that can be converted to JSON.
  • Ds\Pair::toArray — Converts the pair to an array.
Ds\Map::xor
Ds\Pair::clear
Data Structures


Removes all values.

Pair
Ds\Pair::__construct
Pair
PHP Manual

Ds\Pair::clear

(No version information available, might only be in Git)

Ds\Pair::clear — Removes all values.

说明

public void Ds\Pair::clear ( void )

Removes all values from the pair.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 Ds\Pair::clear() example

<?php
$pair = new \Ds\Pair("a", 1);
print_r($pair);

$pair->clear();
print_r($pair);
?>

以上例程的输出类似于：

Ds\Pair Object
(
    [0] => 1
    [1] => 2
    [2] => 3
)
Ds\Pair Object
(
)
Pair
Ds\Pair::__construct
Pair


Creates a new instance.

Ds\Pair::clear
Ds\Pair::copy
Pair
PHP Manual

Ds\Pair::__construct

(PECL ds >= 1.0.0)

Ds\Pair::__construct — Creates a new instance.

说明

public Ds\Pair::__construct ([ mixed $key [, mixed $value ]] )

Creates a new instance using a given key and value.

参数

key

The key.

value

The value.

Ds\Pair::clear
Ds\Pair::copy
Pair


Returns a shallow copy of the pair.

Ds\Pair::__construct
Ds\Pair::isEmpty
Pair
PHP Manual

Ds\Pair::copy

(No version information available, might only be in Git)

Ds\Pair::copy — Returns a shallow copy of the pair.

说明

public Ds\Pair Ds\Pair::copy ( void )

Returns a shallow copy of the pair.

参数

此函数没有参数。

返回值

Returns a shallow copy of the pair.

范例

Example #1 Ds\Pair::copy() example

<?php
$a = new \Ds\Pair("a", 1);
$b = $a->copy();

$a->key = "x";

print_r($a);
print_r($b);
?>

以上例程的输出类似于：

Ds\Pair Object
(
    [key] => x
    [value] => 1
)
Ds\Pair Object
(
    [key] => a
    [value] => 1
)
Ds\Pair::__construct
Ds\Pair::isEmpty
Pair


Returns whether the pair is empty

Ds\Pair::copy
Ds\Pair::jsonSerialize
Pair
PHP Manual

Ds\Pair::isEmpty

(No version information available, might only be in Git)

Ds\Pair::isEmpty — Returns whether the pair is empty

说明

public bool Ds\Pair::isEmpty ( void )

Returns whether the pair is empty.

参数

此函数没有参数。

返回值

Returns TRUE if the pair is empty, FALSE otherwise.

范例

Example #1 Ds\Pair::isEmpty() example

<?php
$a = new \Ds\Pair("a", 1);
$b = new \Ds\Pair();

var_dump($a->isEmpty());
var_dump($b->isEmpty());
?>

以上例程的输出类似于：

bool(false)
bool(true)
Ds\Pair::copy
Ds\Pair::jsonSerialize
Pair


Returns a representation that can be converted to JSON.

Ds\Pair::isEmpty
Ds\Pair::toArray
Pair
PHP Manual

Ds\Pair::jsonSerialize

(PECL ds >= 1.0.0)

Ds\Pair::jsonSerialize — Returns a representation that can be converted to JSON.

See JsonSerializable::jsonSerialize()

Note:

You should never need to call this directly.

Ds\Pair::isEmpty
Ds\Pair::toArray
Pair


Converts the pair to an array.

Ds\Pair::jsonSerialize
Set
Pair
PHP Manual

Ds\Pair::toArray

(PECL ds >= 1.0.0)

Ds\Pair::toArray — Converts the pair to an array.

说明

public array Ds\Pair::toArray ( void )

Converts the pair to an array.

Note:

Casting to an array is not supported yet.

参数

此函数没有参数。

返回值

An array containing all the values in the same order as the pair.

范例

Example #1 Ds\Pair::toArray() example

<?php
$pair = new \Ds\Pair("a", 1);

var_dump($pair->toArray());
?>

以上例程的输出类似于：

array(2) {
  ["key"]=>
  string(1) "a"
  ["value"]=>
  int(1)
}
Ds\Pair::jsonSerialize
Set
Pair


The Set class

(No version information available, might only be in Git)

简介

A Set is a sequence of unique values. This implementation uses the same hash table as Ds\Map, where values are used as keys and the mapped value is ignored.

Strengths

  • Values can be any type, including objects.
  • Supports array syntax (square brackets).
  • Insertion order is preserved.
  • Automatically frees allocated memory when its size drops low enough.
  • add(),
remove() and
contains() are all O(1).

Weaknesses

  • Doesn't support
                push(),
                pop(),
                insert(),
                shift(), or
                unshift().
  • get() is O(n) if there are deleted values in the buffer before the accessed index, O(1) otherwise.

类摘要

Ds\Set implements Ds\Collection {
/* Constants */
const int MIN_CAPACITY = 16 ;
/* 方法 */
public void add ([ mixed $...values ] )
public void allocate ( int $capacity )
public int capacity ( void )
public void clear ( void )
public bool contains ([ mixed $...values ] )
public Ds\Set copy ( void )
public Ds\Set diff ( Ds\Set $set )
public Ds\Set filter ([ callable $callback ] )
public void first ( void )
public mixed get ( int $index )
public Ds\Set intersect ( Ds\Set $set )
public bool isEmpty ( void )
public string join ([ string $glue ] )
public void last ( void )
public Ds\Set merge ( mixed $values )
public mixed reduce ( callable $callback [, mixed $initial ] )
public void remove ([ mixed $...values ] )
public void reverse ( void )
public Ds\Set reversed ( void )
public Ds\Set slice ( int $index [, int $length ] )
public void sort ([ callable $comparator ] )
public Ds\Set sorted ([ callable $comparator ] )
public number sum ( void )
public array toArray ( void )
public Ds\Set union ( Ds\Set $set )
public Ds\Set xor ( Ds\Set $set )
}

预定义常量

Ds\Set::MIN_CAPACITY

Table of Contents

  • Ds\Set::add — Adds values to the set.
  • Ds\Set::allocate — Allocates enough memory for a required capacity.
  • Ds\Set::capacity — Returns the current capacity.
  • Ds\Set::clear — Removes all values.
  • Ds\Set::__construct — Creates a new instance.
  • Ds\Set::contains — Determines if the set contains all values.
  • Ds\Set::copy — Returns a shallow copy of the set.
  • Ds\Set::count — Returns the number of values in the set.
  • Ds\Set::diff — Creates a new set using values that aren't in another set.
  • Ds\Set::filter — Creates a new set using a callable to determine which values to include.
  • Ds\Set::first — Returns the first value in the set.
  • Ds\Set::get — Returns the value at a given index.
  • Ds\Set::intersect — Creates a new set by intersecting values with another set.
  • Ds\Set::isEmpty — Returns whether the set is empty
  • Ds\Set::join — Joins all values together as a string.
  • Ds\Set::jsonSerialize — Returns a representation that can be converted to JSON.
  • Ds\Set::last — Returns the last value in the set.
  • Ds\Set::merge — Returns the result of adding all given values to the set.
  • Ds\Set::reduce — Reduces the set to a single value using a callback function.
  • Ds\Set::remove — Removes all given values from the set.
  • Ds\Set::reverse — Reverses the set in-place.
  • Ds\Set::reversed — Returns a reversed copy.
  • Ds\Set::slice — Returns a sub-set of a given range.
  • Ds\Set::sort — Sorts the set in-place.
  • Ds\Set::sorted — Returns a sorted copy.
  • Ds\Set::sum — Returns the sum of all values in the set.
  • Ds\Set::toArray — Converts the set to an array.
  • Ds\Set::union — Creates a new set using values from the current instance and another set.
  • Ds\Set::xor — Creates a new set using values in either the current instance or in another set, but not in both.
Ds\Pair::toArray
Ds\Set::add
Data Structures


Adds values to the set.

Set
Ds\Set::allocate
Set
PHP Manual

Ds\Set::add

(PECL ds >= 1.0.0)

Ds\Set::add — Adds values to the set.

说明

public void Ds\Set::add ([ mixed $...values ] )

Adds all given values to the set that haven't already been added.

Note:

Values of type object are supported. If an object implements Ds\Hashable, equality will be determined by the object's equals function. If an object does not implement Ds\Hashable, objects must be references to the same instance to be considered equal.

Caution

All comparisons are strict (type and value).

参数

values

Values to add to the set.

返回值

没有返回值。

范例

Example #1 Ds\Set::add() example using integers

<?php
$set = new \Ds\Set();

$set->add(1);
$set->add(1);
$set->add(2);
$set->add(3);

// Strict comparison would not treat these the same as int(1)
$set->add("1");
$set->add(true);

var_dump($set);
?>

以上例程的输出类似于：

object(Ds\Set)#1 (5) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  string(1) "1"
  [4]=>
  bool(true)
}

Example #2 Ds\Set::add() example using objects

<?php
class HashableObject implements \Ds\Hashable
{
    /**
     * An arbitrary value to use as the hash value. Does not define equality.
     */
    private $value;

    public function __construct($value)
    {
        $this->value = $value;
    }

    public function hash()
    {
        return $this->value;
    }

    public function equals($obj): bool
    {
        return $this->value === $obj->value;
    }
}

$set = new \Ds\Set();

$obj = new \ArrayIterator([]);

// Adding the same instance multiple times will only add the first.
$set->add($obj);
$set->add($obj);

// Adding multiple instances of the same object will add them all.
$set->add(new \stdClass());
$set->add(new \stdClass());

// Adding multiple instances of equal hashable objects will only add the first.
$set->add(new \HashableObject(1));
$set->add(new \HashableObject(1));
$set->add(new \HashableObject(2));
$set->add(new \HashableObject(2));

var_dump($set);
?>

以上例程的输出类似于：

object(Ds\Set)#1 (5) {
  [0]=>
  object(ArrayIterator)#2 (1) {
    ["storage":"ArrayIterator":private]=>
    array(0) {
    }
  }
  [1]=>
  object(stdClass)#3 (0) {
  }
  [2]=>
  object(stdClass)#4 (0) {
  }
  [3]=>
  object(HashableObject)#5 (1) {
    ["value":"HashableObject":private]=>
    int(1)
  }
  [4]=>
  object(HashableObject)#6 (1) {
    ["value":"HashableObject":private]=>
    int(2)
  }
}
Set
Ds\Set::allocate
Set


Allocates enough memory for a required capacity.

Ds\Set::add
Ds\Set::capacity
Set
PHP Manual

Ds\Set::allocate

(PECL ds >= 1.0.0)

Ds\Set::allocate — Allocates enough memory for a required capacity.

说明

public void Ds\Set::allocate ( int $capacity )

Allocates enough memory for a required capacity.

参数

capacity

The number of values for which capacity should be allocated.

Note:

Capacity will stay the same if this value is less than or equal to the current capacity.

Note:

Capacity will always be rounded up to the nearest power of 2.

返回值

没有返回值。

范例

Example #1 Ds\Set::allocate() example

<?php
$set = new \Ds\Set();
var_dump($set->capacity());

$set->allocate(100);
var_dump($set->capacity());
?>

以上例程的输出类似于：

int(16)
int(128)
Ds\Set::add
Ds\Set::capacity
Set


Returns the current capacity.

Ds\Set::allocate
Ds\Set::clear
Set
PHP Manual

Ds\Set::capacity

(PECL ds >= 1.0.0)

Ds\Set::capacity — Returns the current capacity.

说明

public int Ds\Set::capacity ( void )

Returns the current capacity.

参数

此函数没有参数。

返回值

The current capacity.

范例

Example #1 Ds\Set::capacity() example

<?php
$set = new \Ds\Set();
var_dump($set->capacity());

$set->push(...range(1, 50));
var_dump($set->capacity());
?>

以上例程的输出类似于：

int(16)
int(64)
Ds\Set::allocate
Ds\Set::clear
Set


Removes all values.

Ds\Set::capacity
Ds\Set::__construct
Set
PHP Manual

Ds\Set::clear

(PECL ds >= 1.0.0)

Ds\Set::clear — Removes all values.

说明

public void Ds\Set::clear ( void )

Removes all values from the set.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 Ds\Set::clear() example

<?php
$set = new \Ds\Set([1, 2, 3]);
print_r($set);

$set->clear();
print_r($set);
?>

以上例程的输出类似于：

Ds\Set Object
(
    [0] => 1
    [1] => 2
    [2] => 3
)
Ds\Set Object
(
)
Ds\Set::capacity
Ds\Set::__construct
Set


Creates a new instance.

Ds\Set::clear
Ds\Set::contains
Set
PHP Manual

Ds\Set::__construct

(PECL ds >= 1.0.0)

Ds\Set::__construct — Creates a new instance.

说明

public Ds\Set::__construct ([ mixed $...values ] )

Creates a new instance, using either a traversable object or an array for the initial values.

参数

values

A traversable object or an array to use for the initial values.

范例

Example #1 Ds\Set::__construct() example

<?php
$set = new \Ds\Set();
var_dump($set);

$set = new \Ds\Set([1, 2, 3]);
var_dump($set);
?>

以上例程的输出类似于：

object(Ds\Set)#1 (0) {
}
object(Ds\Set)#2 (3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
Ds\Set::clear
Ds\Set::contains
Set


Determines if the set contains all values.

Ds\Set::__construct
Ds\Set::copy
Set
PHP Manual

Ds\Set::contains

(PECL ds >= 1.0.0)

Ds\Set::contains — Determines if the set contains all values.

说明

public bool Ds\Set::contains ([ mixed $...values ] )

Determines if the set contains all values.

Note:

Values of type object are supported. If an object implements Ds\Hashable, equality will be determined by the object's equals function. If an object does not implement Ds\Hashable, objects must be references to the same instance to be considered equal.

Caution

All comparisons are strict (type and value).

参数

values

Values to check.

返回值

FALSE if any of the provided values are not in the set, TRUE otherwise.

范例

Example #1 Ds\Set::contains() example

<?php
$set = new \Ds\Set([1, 2, 3]);

var_dump($set->contains(1));                // true
var_dump($set->contains(1, 2));             // true
var_dump($set->contains(...[1, 2]));        // true

var_dump($set->contains("1"));              // false
var_dump($set->contains(...[1, 2, 3, 4]));  // false

var_dump($set->contains(...[]));            // true
?>

以上例程的输出类似于：

bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
bool(true)
Ds\Set::__construct
Ds\Set::copy
Set


Returns a shallow copy of the set.

Ds\Set::contains
Ds\Set::count
Set
PHP Manual

Ds\Set::copy

(PECL ds >= 1.0.0)

Ds\Set::copy — Returns a shallow copy of the set.

说明

public Ds\Set Ds\Set::copy ( void )

Returns a shallow copy of the set.

参数

此函数没有参数。

返回值

Returns a shallow copy of the set.

范例

Example #1 Ds\Set::copy() example

<?php
$a = new \Ds\Set([1, 2, 3]);
$b = $a->copy();

// Updating the copy doesn't affect the original
$b->add(4);

print_r($a);
print_r($b);
?>

以上例程的输出类似于：

Ds\Set Object
(
    [0] => 1
    [1] => 2
    [2] => 3
)
Ds\Set Object
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
Ds\Set::contains
Ds\Set::count
Set


Returns the number of values in the set.

Ds\Set::copy
Ds\Set::diff
Set
PHP Manual

Ds\Set::count

(PECL ds >= 1.0.0)

Ds\Set::count — Returns the number of values in the set.

See Countable::count()

Ds\Set::copy
Ds\Set::diff
Set


Creates a new set using values that aren't in another set.

Ds\Set::count
Ds\Set::filter
Set
PHP Manual

Ds\Set::diff

(PECL ds >= 1.0.0)

Ds\Set::diff — Creates a new set using values that aren't in another set.

说明

public Ds\Set Ds\Set::diff ( Ds\Set $set )

Creates a new set using values that aren't in another set.

A \ B = {x ∈ A | x ? B}

参数

set

Set containing the values to exclude.

返回值

A new set containing all values that were not in the other set.

See Also

  • » Compliment on Wikipedia

范例

Example #1 Ds\Set::diff() example

<?php
$a = new \Ds\Set([1, 2, 3]);
$b = new \Ds\Set([3, 4, 5]);

var_dump($a->diff($b));
?>

以上例程的输出类似于：

object(Ds\Set)#3 (2) {
  [0]=>
  int(1)
  [1]=>
  int(2)
}
Ds\Set::count
Ds\Set::filter
Set


Creates a new set using a callable to determine which values to include.

Ds\Set::diff
Ds\Set::first
Set
PHP Manual

Ds\Set::filter

(PECL ds >= 1.0.0)

Ds\Set::filter — Creates a new set using a callable to determine which values to include.

说明

public Ds\Set Ds\Set::filter ([ callable $callback ] )

Creates a new set using a callable to determine which values to include.

参数

callback

bool callback ( mixed $value )

Optional callable which returns TRUE if the value should be included, FALSE otherwise.

If a callback is not provided, only values which are TRUE (see converting to boolean) will be included.

返回值

A new set containing all the values for which either the callback returned TRUE, or all values that convert to TRUE if a callback was not provided.

范例

Example #1 Ds\Set::filter() example using callback function

<?php
$set = new \Ds\Set([1, 2, 3, 4, 5]);

var_dump($set->filter(function($value) {
    return $value % 2 == 0;
}));
?>

以上例程的输出类似于：

object(Ds\Set)#3 (2) {
  [0]=>
  int(2)
  [1]=>
  int(4)
}

Example #2 Ds\Set::filter() example without a callback function

<?php
$set = new \Ds\Set([0, 1, 'a', true, false]);

var_dump($set->filter());
?>

以上例程的输出类似于：

object(Ds\Set)#2 (3) {
  [0]=>
  int(1)
  [1]=>
  string(1) "a"
  [2]=>
  bool(true)
}
Ds\Set::diff
Ds\Set::first
Set


Returns the first value in the set.

Ds\Set::filter
Ds\Set::get
Set
PHP Manual

Ds\Set::first

(PECL ds >= 1.0.0)

Ds\Set::first — Returns the first value in the set.

说明

public void Ds\Set::first ( void )

Returns the first value in the set.

参数

此函数没有参数。

返回值

The first value in the set.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\Set::first() example

<?php
$set = new \Ds\Set([1, 2, 3]);
var_dump($set->first());
?>

以上例程的输出类似于：

int(1)
Ds\Set::filter
Ds\Set::get
Set


Returns the value at a given index.

Ds\Set::first
Ds\Set::intersect
Set
PHP Manual

Ds\Set::get

(PECL ds >= 1.0.0)

Ds\Set::get — Returns the value at a given index.

说明

public mixed Ds\Set::get ( int $index )

Returns the value at a given index.

参数

index

The index to access, starting at 0.

返回值

The value at the requested index.

错误／异常

OutOfRangeException if the index is not valid.

范例

Example #1 Ds\Set::get() example

<?php
$set = new \Ds\Set(["a", "b", "c"]);

var_dump($set->get(0));
var_dump($set->get(1));
var_dump($set->get(2));
?>

以上例程的输出类似于：

string(1) "a"
string(1) "b"
string(1) "c"

Example #2 Ds\Set::get() example using array syntax

<?php
$set = new \Ds\Set(["a", "b", "c"]);

var_dump($set[0]);
var_dump($set[1]);
var_dump($set[2]);
?>

以上例程的输出类似于：

string(1) "a"
string(1) "b"
string(1) "c"
Ds\Set::first
Ds\Set::intersect
Set


Creates a new set by intersecting values with another set.

Ds\Set::get
Ds\Set::isEmpty
Set
PHP Manual

Ds\Set::intersect

(PECL ds >= 1.0.0)

Ds\Set::intersect — Creates a new set by intersecting values with another set.

说明

public Ds\Set Ds\Set::intersect ( Ds\Set $set )

Creates a new set using values common to both the current instance and another set. In other words, returns a copy of the current instance with all values removed that are not in the other set.

A ∩ B = {x : x ∈ A ∧ x ∈ B}

参数

set

The other set.

返回值

The intersection of the current instance and another set.

See Also

  • » Intersection on Wikipedia

范例

Example #1 Ds\Set::intersect() example

<?php
$a = new \Ds\Set([1, 2, 3]);
$b = new \Ds\Set([3, 4, 5]);

var_dump($a->intersect($b));
?>

以上例程的输出类似于：

object(Ds\Set)#3 (1) {
  [0]=>
  int(3)
}
Ds\Set::get
Ds\Set::isEmpty
Set


Returns whether the set is empty

Ds\Set::intersect
Ds\Set::join
Set
PHP Manual

Ds\Set::isEmpty

(PECL ds >= 1.0.0)

Ds\Set::isEmpty — Returns whether the set is empty

说明

public bool Ds\Set::isEmpty ( void )

Returns whether the set is empty.

参数

此函数没有参数。

返回值

Returns TRUE if the set is empty, FALSE otherwise.

范例

Example #1 Ds\Set::isEmpty() example

<?php
$a = new \Ds\Set([1, 2, 3]);
$b = new \Ds\Set();

var_dump($a->isEmpty());
var_dump($b->isEmpty());
?>

以上例程的输出类似于：

bool(false)
bool(true)
Ds\Set::intersect
Ds\Set::join
Set


Joins all values together as a string.

Ds\Set::isEmpty
Ds\Set::jsonSerialize
Set
PHP Manual

Ds\Set::join

(PECL ds >= 1.0.0)

Ds\Set::join — Joins all values together as a string.

说明

public string Ds\Set::join ([ string $glue ] )

Joins all values together as a string using an optional separator between each value.

参数

glue

An optional string to separate each value.

返回值

All values of the set joined together as a string.

范例

Example #1 Ds\Set::join() example using a separator string

<?php
$set = new \Ds\Set(["a", "b", "c", 1, 2, 3]);

var_dump($set->join("|"));
?>

以上例程的输出类似于：

string(11) "a|b|c|1|2|3"

Example #2 Ds\Set::join() example without a separator string

<?php
$set = new \Ds\Set(["a", "b", "c", 1, 2, 3]);

var_dump($set->join());
?>

以上例程的输出类似于：

string(11) "abc123"
Ds\Set::isEmpty
Ds\Set::jsonSerialize
Set


Returns a representation that can be converted to JSON.

Ds\Set::join
Ds\Set::last
Set
PHP Manual

Ds\Set::jsonSerialize

(PECL ds >= 1.0.0)

Ds\Set::jsonSerialize — Returns a representation that can be converted to JSON.

See JsonSerializable::jsonSerialize()

Note:

You should never need to call this directly.

Ds\Set::join
Ds\Set::last
Set


Returns the last value in the set.

Ds\Set::jsonSerialize
Ds\Set::merge
Set
PHP Manual

Ds\Set::last

(PECL ds >= 1.0.0)

Ds\Set::last — Returns the last value in the set.

说明

public void Ds\Set::last ( void )

Returns the last value in the set.

参数

此函数没有参数。

返回值

The last value in the set.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\Set::last() example

<?php
$set = new \Ds\Set([1, 2, 3]);
var_dump($set->last());
?>

以上例程的输出类似于：

int(3)
Ds\Set::jsonSerialize
Ds\Set::merge
Set


Returns the result of adding all given values to the set.

Ds\Set::last
Ds\Set::reduce
Set
PHP Manual

Ds\Set::merge

(PECL ds >= 1.0.3)

Ds\Set::merge — Returns the result of adding all given values to the set.

说明

public Ds\Set Ds\Set::merge ( mixed $values )

Returns the result of adding all given values to the set.

参数

values

A traversable object or an array.

返回值

The result of adding all given values to the set, effectively the same as adding the values to a copy, then returning that copy.

Note:

The current instance won't be affected.

范例

Example #1 Ds\Set::merge() example

<?php
$set = new \Ds\Set([1, 2, 3]);

var_dump($set->merge([3, 4, 5]));
var_dump($set);
?>

以上例程的输出类似于：

object(Ds\Set)#2 (6) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
}
object(Ds\Set)#1 (3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
Ds\Set::last
Ds\Set::reduce
Set


Reduces the set to a single value using a callback function.

Ds\Set::merge
Ds\Set::remove
Set
PHP Manual

Ds\Set::reduce

(PECL ds >= 1.0.0)

Ds\Set::reduce — Reduces the set to a single value using a callback function.

说明

public mixed Ds\Set::reduce ( callable $callback [, mixed $initial ] )

Reduces the set to a single value using a callback function.

参数

callback
mixed callback ( mixed $carry , mixed $value )
carry

The return value of the previous callback, or initial if it's the first iteration.

value

The value of the current iteration.

initial

The initial value of the carry value. Can be NULL.

返回值

The return value of the final callback.

范例

Example #1 Ds\Set::reduce() with initial value example

<?php
$set = new \Ds\Set([1, 2, 3]);

$callback = function($carry, $value) {
    return $carry * $value;
};

var_dump($set->reduce($callback, 5));

// Iterations:
//
// $carry = $initial = 5
//
// $carry = $carry * 1 =  5
// $carry = $carry * 2 = 10
// $carry = $carry * 3 = 30
?>

以上例程的输出类似于：

int(30)

Example #2 Ds\Set::reduce() without an initial value example

<?php
$set = new \Ds\Set([1, 2, 3]);

var_dump($set->reduce(function($carry, $value) {
    return $carry + $value + 5;
}));

// Iterations:
//
// $carry = $initial = null
//
// $carry = $carry + 1 + 5 =  6
// $carry = $carry + 2 + 5 = 13
// $carry = $carry + 3 + 5 = 21
?>

以上例程的输出类似于：

int(21)
Ds\Set::merge
Ds\Set::remove
Set


Removes all given values from the set.

Ds\Set::reduce
Ds\Set::reverse
Set
PHP Manual

Ds\Set::remove

(PECL ds >= 1.0.0)

Ds\Set::remove — Removes all given values from the set.

说明

public void Ds\Set::remove ([ mixed $...values ] )

Removes all given values from the set, ignoring any that are not in the set.

参数

values

The values to remove.

返回值

没有返回值。

范例

Example #1 Ds\Set::remove() example

<?php
$set = new \Ds\Set([1, 2, 3, 4, 5]);

$set->remove(1);            // Remove 1
$set->remove(1, 2);         // Can't find 1, but remove 2
$set->remove(...[3, 4]);    // Remove 3 and 4

var_dump($set);
?>

以上例程的输出类似于：

object(Ds\Set)#1 (1) {
  [0]=>
  int(5)
}
Ds\Set::reduce
Ds\Set::reverse
Set


Reverses the set in-place.

Ds\Set::remove
Ds\Set::reversed
Set
PHP Manual

Ds\Set::reverse

(PECL ds >= 1.0.0)

Ds\Set::reverse — Reverses the set in-place.

说明

public void Ds\Set::reverse ( void )

Reverses the set in-place.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 Ds\Set::reverse() example

<?php
$set = new \Ds\Set(["a", "b", "c"]);
$set->reverse();

print_r($set);
?>

以上例程的输出类似于：

Ds\Set Object
(
    [0] => c
    [1] => b
    [2] => a
)
Ds\Set::remove
Ds\Set::reversed
Set


Returns a reversed copy.

Ds\Set::reverse
Ds\Set::slice
Set
PHP Manual

Ds\Set::reversed

(PECL ds >= 1.0.0)

Ds\Set::reversed — Returns a reversed copy.

说明

public Ds\Set Ds\Set::reversed ( void )

Returns a reversed copy of the set.

参数

此函数没有参数。

返回值

A reversed copy of the set.

Note:

The current instance is not affected.

范例

Example #1 Ds\Set::reversed() example

<?php
$set = new \Ds\Set(["a", "b", "c"]);

print_r($set->reversed());
print_r($set);
?>

以上例程的输出类似于：

Ds\Set Object
(
    [0] => c
    [1] => b
    [2] => a
)
Ds\Set Object
(
    [0] => a
    [1] => b
    [2] => c
)
Ds\Set::reverse
Ds\Set::slice
Set


Returns a sub-set of a given range.

Ds\Set::reversed
Ds\Set::sort
Set
PHP Manual

Ds\Set::slice

(PECL ds >= 1.0.0)

Ds\Set::slice — Returns a sub-set of a given range.

说明

public Ds\Set Ds\Set::slice ( int $index [, int $length ] )

Creates a sub-set of a given range.

参数

index

The index at which the sub-set starts.

If positive, the set will start at that index in the set. If negative, the set will start that far from the end.

length

If a length is given and is positive, the resulting set will have up to that many values in it. If the length results in an overflow, only values up to the end of the set will be included. If a length is given and is negative, the set will stop that many values from the end. If a length is not provided, the resulting set will contain all values between the index and the end of the set.

返回值

A sub-set of the given range.

范例

Example #1 Ds\Set::slice() example

<?php
$set = new \Ds\Set(["a", "b", "c", "d", "e"]);

// Slice from 2 onwards
print_r($set->slice(2));

// Slice from 1, for a length of 3
print_r($set->slice(1, 3));

// Slice from 1 onwards
print_r($set->slice(1));

// Slice from 2 from the end onwards
print_r($set->slice(-2));

// Slice from 1 to 1 from the end
print_r($set->slice(1, -1));
?>

以上例程的输出类似于：

Ds\Set Object
(
    [0] => c
    [1] => d
    [2] => e
)
Ds\Set Object
(
    [0] => b
    [1] => c
    [2] => d
)
Ds\Set Object
(
    [0] => b
    [1] => c
    [2] => d
    [3] => e
)
Ds\Set Object
(
    [0] => d
    [1] => e
)
Ds\Set Object
(
    [0] => b
    [1] => c
    [2] => d
)
Ds\Set::reversed
Ds\Set::sort
Set


Sorts the set in-place.

Ds\Set::slice
Ds\Set::sorted
Set
PHP Manual

Ds\Set::sort

(PECL ds >= 1.0.0)

Ds\Set::sort — Sorts the set in-place.

说明

public void Ds\Set::sort ([ callable $comparator ] )

Sorts the set in-place, using an optional comparator function.

参数

comparator

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )
Caution

Returning non-integer values from the comparison function, such as float, will result in an internal cast to integer of the callback's return value. So values such as 0.99 and 0.1 will both be cast to an integer value of 0, which will compare such values as equal.

返回值

没有返回值。

范例

Example #1 Ds\Set::sort() example

<?php
$set = new \Ds\Set([4, 5, 1, 3, 2]);
$set->sort();

print_r($set);
?>

以上例程的输出类似于：

Ds\Set Object
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)

Example #2 Ds\Set::sort() example using a comparator

<?php
$set = new \Ds\Set([4, 5, 1, 3, 2]);

$set->sort(function($a, $b) {
    return $b <=> $a;
});

print_r($set);
?>

以上例程的输出类似于：

Ds\Set Object
(
    [0] => 5
    [1] => 4
    [2] => 3
    [3] => 2
    [4] => 1
)
Ds\Set::slice
Ds\Set::sorted
Set


Returns a sorted copy.

Ds\Set::sort
Ds\Set::sum
Set
PHP Manual

Ds\Set::sorted

(PECL ds >= 1.0.0)

Ds\Set::sorted — Returns a sorted copy.

说明

public Ds\Set Ds\Set::sorted ([ callable $comparator ] )

Returns a sorted copy, using an optional comparator function.

参数

comparator

在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

int callback ( mixed $a, mixed $b )
Caution

Returning non-integer values from the comparison function, such as float, will result in an internal cast to integer of the callback's return value. So values such as 0.99 and 0.1 will both be cast to an integer value of 0, which will compare such values as equal.

返回值

Returns a sorted copy of the set.

范例

Example #1 Ds\Set::sorted() example

<?php
$set = new \Ds\Set([4, 5, 1, 3, 2]);

print_r($set->sorted());
?>

以上例程的输出类似于：

Ds\Set Object
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)

Example #2 Ds\Set::sorted() example using a comparator

<?php
$set = new \Ds\Set([4, 5, 1, 3, 2]);

$sorted = $set->sorted(function($a, $b) {
    return $b <=> $a;
});

print_r($sorted);
?>

以上例程的输出类似于：

Ds\Set Object
(
    [0] => 5
    [1] => 4
    [2] => 3
    [3] => 2
    [4] => 1
)
Ds\Set::sort
Ds\Set::sum
Set


Returns the sum of all values in the set.

Ds\Set::sorted
Ds\Set::toArray
Set
PHP Manual

Ds\Set::sum

(PECL ds >= 1.0.0)

Ds\Set::sum — Returns the sum of all values in the set.

说明

public number Ds\Set::sum ( void )

Returns the sum of all values in the set.

Note:

Arrays and objects are considered equal to zero when calculating the sum.

参数

此函数没有参数。

返回值

The sum of all the values in the set as either a float or int depending on the values in the set.

范例

Example #1 Ds\Set::sum() integer example

<?php
$set = new \Ds\Set([1, 2, 3]);
var_dump($set->sum());
?>

以上例程的输出类似于：

int(6)

Example #2 Ds\Set::sum() float example

<?php
$set = new \Ds\Set([1, 2.5, 3]);
var_dump($set->sum());
?>

以上例程的输出类似于：

float(6.5)
Ds\Set::sorted
Ds\Set::toArray
Set


Converts the set to an array.

Ds\Set::sum
Ds\Set::union
Set
PHP Manual

Ds\Set::toArray

(PECL ds >= 1.0.0)

Ds\Set::toArray — Converts the set to an array.

说明

public array Ds\Set::toArray ( void )

Converts the set to an array.

Note:

Casting to an array is not supported yet.

参数

此函数没有参数。

返回值

An array containing all the values in the same order as the set.

范例

Example #1 Ds\Set::toArray() example

<?php
$set = new \Ds\Set([1, 2, 3]);

var_dump($set->toArray());
?>

以上例程的输出类似于：

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
Ds\Set::sum
Ds\Set::union
Set


Creates a new set using values from the current instance and another set.

Ds\Set::toArray
Ds\Set::xor
Set
PHP Manual

Ds\Set::union

(PECL ds >= 1.0.0)

Ds\Set::union — Creates a new set using values from the current instance and another set.

说明

public Ds\Set Ds\Set::union ( Ds\Set $set )

Creates a new set that contains the values of the current instance as well as the values of another set.

A ∪ B = {x: x ∈ A ∨ x ∈ B}

参数

set

The other set, to combine with the current instance.

返回值

A new set containing all the values of the current instance as well as another set.

See Also

  • » Union on Wikipedia

范例

Example #1 Ds\Set::union() example

<?php
$a = new \Ds\Set([1, 2, 3]);
$b = new \Ds\Set([3, 4, 5]);

var_dump($a->union($b));
?>

以上例程的输出类似于：

object(Ds\Set)#3 (5) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
}
Ds\Set::toArray
Ds\Set::xor
Set


Creates a new set using values in either the current instance or in another set, but not in both.

Ds\Set::union
Stack
Set
PHP Manual

Ds\Set::xor

(PECL ds >= 1.0.0)

Ds\Set::xor — Creates a new set using values in either the current instance or in another set, but not in both.

说明

public Ds\Set Ds\Set::xor ( Ds\Set $set )

Creates a new set containing values in the current instance as well as another set, but not in both.

A ? B = {x : x ∈ (A \ B) ∪ (B \ A)}

参数

set

The other set.

返回值

A new set containing values in the current instance as well as another set, but not in both.

See Also

  • » Symmetric Difference on Wikipedia

范例

Example #1 Ds\Set::xor() example

<?php
$a = new \Ds\Set([1, 2, 3]);
$b = new \Ds\Set([3, 4, 5]);

var_dump($a->xor($b));
?>

以上例程的输出类似于：

object(Ds\Set)#3 (4) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(4)
  [3]=>
  int(5)
}
Ds\Set::union
Stack
Set


The Stack class

(No version information available, might only be in Git)

简介

A Stack is a "last in, first out" or "LIFO" collection that only allows access to the value at the top of the structure and iterates in that order, destructively.

Uses a Ds\Vector internally.

类摘要

Ds\Stack implements Ds\Collection {
/* 方法 */
public void allocate ( int $capacity )
public int capacity ( void )
public void clear ( void )
public Ds\Stack copy ( void )
public bool isEmpty ( void )
public mixed peek ( void )
public mixed pop ( void )
public void push ([ mixed $...values ] )
public array toArray ( void )
}

Table of Contents

  • Ds\Stack::allocate — Allocates enough memory for a required capacity.
  • Ds\Stack::capacity — Returns the current capacity.
  • Ds\Stack::clear — Removes all values.
  • Ds\Stack::__construct — Creates a new instance.
  • Ds\Stack::copy — Returns a shallow copy of the stack.
  • Ds\Stack::count — Returns the number of values in the stack.
  • Ds\Stack::isEmpty — Returns whether the stack is empty
  • Ds\Stack::jsonSerialize — Returns a representation that can be converted to JSON.
  • Ds\Stack::peek — Returns the value at the top of the stack.
  • Ds\Stack::pop — Removes and returns the value at the top of the stack.
  • Ds\Stack::push — Pushes values onto the stack.
  • Ds\Stack::toArray — Converts the stack to an array.
Ds\Set::xor
Ds\Stack::allocate
Data Structures


Allocates enough memory for a required capacity.

Stack
Ds\Stack::capacity
Stack
PHP Manual

Ds\Stack::allocate

(PECL ds >= 1.0.0)

Ds\Stack::allocate — Allocates enough memory for a required capacity.

说明

public void Ds\Stack::allocate ( int $capacity )

Ensures that enough memory is allocated for a required capacity. This removes the need to reallocate the internal as values are added.

参数

capacity

The number of values for which capacity should be allocated.

Note:

Capacity will stay the same if this value is less than or equal to the current capacity.

返回值

没有返回值。

Stack
Ds\Stack::capacity
Stack


Returns the current capacity.

Ds\Stack::allocate
Ds\Stack::clear
Stack
PHP Manual

Ds\Stack::capacity

(PECL ds >= 1.0.0)

Ds\Stack::capacity — Returns the current capacity.

说明

public int Ds\Stack::capacity ( void )

Returns the current capacity.

参数

此函数没有参数。

返回值

The current capacity.

Ds\Stack::allocate
Ds\Stack::clear
Stack


Removes all values.

Ds\Stack::capacity
Ds\Stack::__construct
Stack
PHP Manual

Ds\Stack::clear

(PECL ds >= 1.0.0)

Ds\Stack::clear — Removes all values.

说明

public void Ds\Stack::clear ( void )

Removes all values from the stack.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 Ds\Stack::clear() example

<?php
$stack = new \Ds\Stack([1, 2, 3]);
print_r($stack);

$stack->clear();
print_r($stack);
?>

以上例程的输出类似于：

Ds\Stack Object
(
    [0] => 3
    [1] => 2
    [2] => 1
)
Ds\Stack Object
(
)
Ds\Stack::capacity
Ds\Stack::__construct
Stack


Creates a new instance.

Ds\Stack::clear
Ds\Stack::copy
Stack
PHP Manual

Ds\Stack::__construct

(PECL ds >= 1.0.0)

Ds\Stack::__construct — Creates a new instance.

说明

public Ds\Stack::__construct ([ mixed $values ] )

Creates a new instance, using either a traversable object or an array for the initial values.

参数

values

A traversable object or an array to use for the initial values.

范例

Example #1 Ds\Stack::__construct() example

<?php
$stack = new \Ds\Stack();
print_r($stack);

$stack = new \Ds\Stack([1, 2, 3]);
print_r($stack);
?>

以上例程的输出类似于：

Ds\Stack Object
(
)
Ds\Stack Object
(
    [0] => 3
    [1] => 2
    [2] => 1
)
Ds\Stack::clear
Ds\Stack::copy
Stack


Returns a shallow copy of the stack.

Ds\Stack::__construct
Ds\Stack::count
Stack
PHP Manual

Ds\Stack::copy

(PECL ds >= 1.0.0)

Ds\Stack::copy — Returns a shallow copy of the stack.

说明

public Ds\Stack Ds\Stack::copy ( void )

Returns a shallow copy of the stack.

参数

此函数没有参数。

返回值

Returns a shallow copy of the stack.

范例

Example #1 Ds\Stack::copy() example

<?php
$a = new \Ds\Stack([1, 2, 3]);
$b = $a->copy();

// Updating the copy doesn't affect the original
$b->push(4);

print_r($a);
print_r($b);
?>

以上例程的输出类似于：

Ds\Stack Object
(
    [0] => 3
    [1] => 2
    [2] => 1
)
Ds\Stack Object
(
    [0] => 4
    [1] => 3
    [2] => 2
    [3] => 1
)
Ds\Stack::__construct
Ds\Stack::count
Stack


Returns the number of values in the stack.

Ds\Stack::copy
Ds\Stack::isEmpty
Stack
PHP Manual

Ds\Stack::count

(PECL ds >= 1.0.0)

Ds\Stack::count — Returns the number of values in the stack.

See Countable::count()

Ds\Stack::copy
Ds\Stack::isEmpty
Stack


Returns whether the stack is empty

Ds\Stack::count
Ds\Stack::jsonSerialize
Stack
PHP Manual

Ds\Stack::isEmpty

(PECL ds >= 1.0.0)

Ds\Stack::isEmpty — Returns whether the stack is empty

说明

public bool Ds\Stack::isEmpty ( void )

Returns whether the stack is empty.

参数

此函数没有参数。

返回值

Returns TRUE if the stack is empty, FALSE otherwise.

范例

Example #1 Ds\Stack::isEmpty() example

<?php
$a = new \Ds\Stack([1, 2, 3]);
$b = new \Ds\Stack();

var_dump($a->isEmpty());
var_dump($b->isEmpty());
?>

以上例程的输出类似于：

bool(false)
bool(true)
Ds\Stack::count
Ds\Stack::jsonSerialize
Stack


Returns a representation that can be converted to JSON.

Ds\Stack::isEmpty
Ds\Stack::peek
Stack
PHP Manual

Ds\Stack::jsonSerialize

(PECL ds >= 1.0.0)

Ds\Stack::jsonSerialize — Returns a representation that can be converted to JSON.

See JsonSerializable::jsonSerialize()

Note:

You should never need to call this directly.

Ds\Stack::isEmpty
Ds\Stack::peek
Stack


Returns the value at the top of the stack.

Ds\Stack::jsonSerialize
Ds\Stack::pop
Stack
PHP Manual

Ds\Stack::peek

(PECL ds >= 1.0.0)

Ds\Stack::peek — Returns the value at the top of the stack.

说明

public mixed Ds\Stack::peek ( void )

Returns the value at the top of the stack, but does not remove it.

参数

此函数没有参数。

返回值

The value at the top of the stack.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\Stack::peek() example

<?php
$stack = new \Ds\Stack();

$stack->push("a");
$stack->push("b");
$stack->push("c");

var_dump($stack->peek());
?>

以上例程的输出类似于：

string(1) "c"
Ds\Stack::jsonSerialize
Ds\Stack::pop
Stack


Removes and returns the value at the top of the stack.

Ds\Stack::peek
Ds\Stack::push
Stack
PHP Manual

Ds\Stack::pop

(PECL ds >= 1.0.0)

Ds\Stack::pop — Removes and returns the value at the top of the stack.

说明

public mixed Ds\Stack::pop ( void )

Removes and returns the value at the top of the stack.

参数

此函数没有参数。

返回值

The removed value which was at the top of the stack.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\Stack::pop() example

<?php
$stack = new \Ds\Stack();

$stack->push("a");
$stack->push("b");
$stack->push("c");

var_dump($stack->pop());
var_dump($stack->pop());
var_dump($stack->pop());
?>

以上例程的输出类似于：

string(1) "c"
string(1) "b"
string(1) "a"
Ds\Stack::peek
Ds\Stack::push
Stack


Pushes values onto the stack.

Ds\Stack::pop
Ds\Stack::toArray
Stack
PHP Manual

Ds\Stack::push

(PECL ds >= 1.0.0)

Ds\Stack::push — Pushes values onto the stack.

说明

public void Ds\Stack::push ([ mixed $...values ] )

Pushes values onto the stack.

参数

values

The values to push onto the stack.

返回值

没有返回值。

范例

Example #1 Ds\Stack::push() example

<?php
$stack = new \Ds\Stack();

$stack->push("a");
$stack->push("b");
$stack->push("c", "d");
$stack->push(...["e", "f"]);

print_r($stack);
?>

以上例程的输出类似于：

Ds\Stack Object
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
    [5] => f
)
Ds\Stack::pop
Ds\Stack::toArray
Stack


Converts the stack to an array.

Ds\Stack::push
Queue
Stack
PHP Manual

Ds\Stack::toArray

(PECL ds >= 1.0.0)

Ds\Stack::toArray — Converts the stack to an array.

说明

public array Ds\Stack::toArray ( void )

Converts the stack to an array.

Note:

Casting to an array is not supported yet.

参数

此函数没有参数。

返回值

An array containing all the values in the same order as the stack.

范例

Example #1 Ds\Stack::toArray() example

<?php
$stack = new \Ds\Stack([1, 2, 3]);

var_dump($stack->toArray());
?>

以上例程的输出类似于：

array(3) {
  [0]=>
  int(3)
  [1]=>
  int(2)
  [2]=>
  int(1)
}
Ds\Stack::push
Queue
Stack


The Queue class

(No version information available, might only be in Git)

简介

A Queue is a "first in, first out" or "FIFO" collection that only allows access to the value at the front of the queue and iterates in that order, destructively.

类摘要

Ds\Queue implements Ds\Collection {
/* Constants */
const int MIN_CAPACITY = 8 ;
/* 方法 */
public void allocate ( int $capacity )
public int capacity ( void )
public void clear ( void )
public Ds\Queue copy ( void )
public bool isEmpty ( void )
public mixed peek ( void )
public mixed pop ( void )
public void push ([ mixed $...values ] )
public array toArray ( void )
}

预定义常量

Ds\Queue::MIN_CAPACITY

Table of Contents

  • Ds\Queue::allocate — Allocates enough memory for a required capacity.
  • Ds\Queue::capacity — Returns the current capacity.
  • Ds\Queue::clear — Removes all values.
  • Ds\Queue::__construct — Creates a new instance.
  • Ds\Queue::copy — Returns a shallow copy of the queue.
  • Ds\Queue::count — Returns the number of values in the queue.
  • Ds\Queue::isEmpty — Returns whether the queue is empty
  • Ds\Queue::jsonSerialize — Returns a representation that can be converted to JSON.
  • Ds\Queue::peek — Returns the value at the front of the queue.
  • Ds\Queue::pop — Removes and returns the value at the front of the queue.
  • Ds\Queue::push — Pushes values into the queue.
  • Ds\Queue::toArray — Converts the queue to an array.
Ds\Stack::toArray
Ds\Queue::allocate
Data Structures


Allocates enough memory for a required capacity.

Queue
Ds\Queue::capacity
Queue
PHP Manual

Ds\Queue::allocate

(PECL ds >= 1.0.0)

Ds\Queue::allocate — Allocates enough memory for a required capacity.

说明

public void Ds\Queue::allocate ( int $capacity )

Ensures that enough memory is allocated for a required capacity. This removes the need to reallocate the internal as values are added.

Note:

Capacity will always be rounded up to the nearest power of 2.

参数

capacity

The number of values for which capacity should be allocated.

Note:

Capacity will stay the same if this value is less than or equal to the current capacity.

Note:

Capacity will always be rounded up to the nearest power of 2.

返回值

没有返回值。

范例

Example #1 Ds\Queue::allocate() example

<?php
$queue = new \Ds\Queue();
var_dump($queue->capacity());

$queue->allocate(100);
var_dump($queue->capacity());
?>

以上例程的输出类似于：

int(8)
int(128)
Queue
Ds\Queue::capacity
Queue


Returns the current capacity.

Ds\Queue::allocate
Ds\Queue::clear
Queue
PHP Manual

Ds\Queue::capacity

(PECL ds >= 1.0.0)

Ds\Queue::capacity — Returns the current capacity.

说明

public int Ds\Queue::capacity ( void )

Returns the current capacity.

参数

此函数没有参数。

返回值

The current capacity.

范例

Example #1 Ds\Queue::capacity() example

<?php
$queue = new \Ds\Queue();
var_dump($queue->capacity());

$queue->push(...range(1, 50));
var_dump($queue->capacity());
?>

以上例程的输出类似于：

int(8)
int(64)
Ds\Queue::allocate
Ds\Queue::clear
Queue


Removes all values.

Ds\Queue::capacity
Ds\Queue::__construct
Queue
PHP Manual

Ds\Queue::clear

(PECL ds >= 1.0.0)

Ds\Queue::clear — Removes all values.

说明

public void Ds\Queue::clear ( void )

Removes all values from the queue.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 Ds\Queue::clear() example

<?php
$queue = new \Ds\Queue([1, 2, 3]);
print_r($queue);

$queue->clear();
print_r($queue);
?>

以上例程的输出类似于：

Ds\Queue Object
(
    [0] => 1
    [1] => 2
    [2] => 3
)
Ds\Queue Object
(
)
Ds\Queue::capacity
Ds\Queue::__construct
Queue


Creates a new instance.

Ds\Queue::clear
Ds\Queue::copy
Queue
PHP Manual

Ds\Queue::__construct

(PECL ds >= 1.0.0)

Ds\Queue::__construct — Creates a new instance.

说明

public Ds\Queue::__construct ([ mixed $values ] )

Creates a new instance, using either a traversable object or an array for the initial values.

参数

values

A traversable object or an array to use for the initial values.

范例

Example #1 Ds\Queue::__construct() example

<?php
$queue = new \Ds\Queue();
var_dump($queue);

$queue = new \Ds\Queue([1, 2, 3]);
var_dump($queue);
?>

以上例程的输出类似于：

object(Ds\Queue)#2 (0) {
}
object(Ds\Queue)#2 (3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
Ds\Queue::clear
Ds\Queue::copy
Queue


Returns a shallow copy of the queue.

Ds\Queue::__construct
Ds\Queue::count
Queue
PHP Manual

Ds\Queue::copy

(PECL ds >= 1.0.0)

Ds\Queue::copy — Returns a shallow copy of the queue.

说明

public Ds\Queue Ds\Queue::copy ( void )

Returns a shallow copy of the queue.

参数

此函数没有参数。

返回值

Returns a shallow copy of the queue.

范例

Example #1 Ds\Queue::copy() example

<?php
$a = new \Ds\Queue([1, 2, 3]);
$b = $a->copy();

// Updating the copy doesn't affect the original
$b->push(4);

print_r($a);
print_r($b);
?>

以上例程的输出类似于：

Ds\Queue Object
(
    [0] => 1
    [1] => 2
    [2] => 3
)
Ds\Queue Object
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
Ds\Queue::__construct
Ds\Queue::count
Queue


Returns the number of values in the queue.

Ds\Queue::copy
Ds\Queue::isEmpty
Queue
PHP Manual

Ds\Queue::count

(PECL ds >= 1.0.0)

Ds\Queue::count — Returns the number of values in the queue.

See Countable::count()

Ds\Queue::copy
Ds\Queue::isEmpty
Queue


Returns whether the queue is empty

Ds\Queue::count
Ds\Queue::jsonSerialize
Queue
PHP Manual

Ds\Queue::isEmpty

(PECL ds >= 1.0.0)

Ds\Queue::isEmpty — Returns whether the queue is empty

说明

public bool Ds\Queue::isEmpty ( void )

Returns whether the queue is empty.

参数

此函数没有参数。

返回值

Returns TRUE if the queue is empty, FALSE otherwise.

范例

Example #1 Ds\Queue::isEmpty() example

<?php
$a = new \Ds\Queue([1, 2, 3]);
$b = new \Ds\Queue();

var_dump($a->isEmpty());
var_dump($b->isEmpty());
?>

以上例程的输出类似于：

bool(false)
bool(true)
Ds\Queue::count
Ds\Queue::jsonSerialize
Queue


Returns a representation that can be converted to JSON.

Ds\Queue::isEmpty
Ds\Queue::peek
Queue
PHP Manual

Ds\Queue::jsonSerialize

(PECL ds >= 1.0.0)

Ds\Queue::jsonSerialize — Returns a representation that can be converted to JSON.

See JsonSerializable::jsonSerialize()

Note:

You should never need to call this directly.

Ds\Queue::isEmpty
Ds\Queue::peek
Queue


Returns the value at the front of the queue.

Ds\Queue::jsonSerialize
Ds\Queue::pop
Queue
PHP Manual

Ds\Queue::peek

(PECL ds >= 1.0.0)

Ds\Queue::peek — Returns the value at the front of the queue.

说明

public mixed Ds\Queue::peek ( void )

Returns the value at the front of the queue, but does not remove it.

参数

此函数没有参数。

返回值

The value at the front of the queue.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\Queue::peek() example

<?php
$queue = new \Ds\Queue();

$queue->push("a");
$queue->push("b");
$queue->push("c");

var_dump($queue->peek());
?>

以上例程的输出类似于：

string(1) "a"
Ds\Queue::jsonSerialize
Ds\Queue::pop
Queue


Removes and returns the value at the front of the queue.

Ds\Queue::peek
Ds\Queue::push
Queue
PHP Manual

Ds\Queue::pop

(PECL ds >= 1.0.0)

Ds\Queue::pop — Removes and returns the value at the front of the queue.

说明

public mixed Ds\Queue::pop ( void )

Removes and returns the value at the front of the queue.

参数

此函数没有参数。

返回值

The removed value which was at the front of the queue.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\Queue::pop() example

<?php
$queue = new \Ds\Queue();

$queue->push("a");
$queue->push("b");
$queue->push("c");

var_dump($queue->pop());
var_dump($queue->pop());
var_dump($queue->pop());
?>

以上例程的输出类似于：

string(1) "a"
string(1) "b"
string(1) "c"
Ds\Queue::peek
Ds\Queue::push
Queue


Pushes values into the queue.

Ds\Queue::pop
Ds\Queue::toArray
Queue
PHP Manual

Ds\Queue::push

(PECL ds >= 1.0.0)

Ds\Queue::push — Pushes values into the queue.

说明

public void Ds\Queue::push ([ mixed $...values ] )

Pushes values into the queue.

参数

values

The values to push into the queue.

返回值

没有返回值。

范例

Example #1 Ds\Queue::push() example

<?php
$queue = new \Ds\Queue();

$queue->push("a");
$queue->push("b");
$queue->push("c", "d");
$queue->push(...["e", "f"]);

print_r($queue);
?>

以上例程的输出类似于：

Ds\Queue Object
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
    [5] => f
)
Ds\Queue::pop
Ds\Queue::toArray
Queue


Converts the queue to an array.

Ds\Queue::push
PriorityQueue
Queue
PHP Manual

Ds\Queue::toArray

(PECL ds >= 1.0.0)

Ds\Queue::toArray — Converts the queue to an array.

说明

public array Ds\Queue::toArray ( void )

Converts the queue to an array.

Note:

Casting to an array is not supported yet.

Note:

This method is not destructive.

参数

此函数没有参数。

返回值

An array containing all the values in the same order as the queue.

范例

Example #1 Ds\Queue::toArray() example

<?php
$queue = new \Ds\Queue([1, 2, 3]);

var_dump($queue->toArray());
?>

以上例程的输出类似于：

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
Ds\Queue::push
PriorityQueue
Queue


The PriorityQueue class

(No version information available, might only be in Git)

简介

A PriorityQueue is very similar to a Queue. Values are pushed into the queue with an assigned priority, and the value with the highest priority will always be at the front of the queue.

Implemented using a max heap.

Note:

"First in, first out" ordering is preserved for values with the same priority.

Note:

Iterating over a PriorityQueue is destructive, equivalent to successive pop operations until the queue is empty.

类摘要

Ds\PriorityQueue implements Ds\Collection {
/* Constants */
const int MIN_CAPACITY = 8 ;
/* 方法 */
public void allocate ( int $capacity )
public int capacity ( void )
public void clear ( void )
public Ds\PriorityQueue copy ( void )
public bool isEmpty ( void )
public mixed peek ( void )
public mixed pop ( void )
public void push ( mixed $value , int $priority )
public array toArray ( void )
}

预定义常量

Ds\PriorityQueue::MIN_CAPACITY

Table of Contents

  • Ds\PriorityQueue::allocate — Allocates enough memory for a required capacity.
  • Ds\PriorityQueue::capacity — Returns the current capacity.
  • Ds\PriorityQueue::clear — Removes all values.
  • Ds\PriorityQueue::__construct — Creates a new instance.
  • Ds\PriorityQueue::copy — Returns a shallow copy of the queue.
  • Ds\PriorityQueue::count — Returns the number of values in the queue.
  • Ds\PriorityQueue::isEmpty — Returns whether the queue is empty
  • Ds\PriorityQueue::jsonSerialize — Returns a representation that can be converted to JSON.
  • Ds\PriorityQueue::peek — Returns the value at the front of the queue.
  • Ds\PriorityQueue::pop — Removes and returns the value with the highest priority.
  • Ds\PriorityQueue::push — Pushes values into the queue.
  • Ds\PriorityQueue::toArray — Converts the queue to an array.
Ds\Queue::toArray
Ds\PriorityQueue::allocate
Data Structures


Allocates enough memory for a required capacity.

PriorityQueue
Ds\PriorityQueue::capacity
PriorityQueue
PHP Manual

Ds\PriorityQueue::allocate

(PECL ds >= 1.0.0)

Ds\PriorityQueue::allocate — Allocates enough memory for a required capacity.

说明

public void Ds\PriorityQueue::allocate ( int $capacity )

Ensures that enough memory is allocated for a required capacity. This removes the need to reallocate the internal as values are added.

参数

capacity

The number of values for which capacity should be allocated.

Note:

Capacity will stay the same if this value is less than or equal to the current capacity.

Note:

Capacity will always be rounded up to the nearest power of 2.

返回值

没有返回值。

范例

Example #1 Ds\PriorityQueue::allocate() example

<?php
$queue = new \Ds\PriorityQueue();
var_dump($queue->capacity());

$queue->allocate(100);
var_dump($queue->capacity());
?>

以上例程的输出类似于：

int(8)
int(128)
PriorityQueue
Ds\PriorityQueue::capacity
PriorityQueue


Returns the current capacity.

Ds\PriorityQueue::allocate
Ds\PriorityQueue::clear
PriorityQueue
PHP Manual

Ds\PriorityQueue::capacity

(PECL ds >= 1.0.0)

Ds\PriorityQueue::capacity — Returns the current capacity.

说明

public int Ds\PriorityQueue::capacity ( void )

Returns the current capacity.

参数

此函数没有参数。

返回值

The current capacity.

范例

Example #1 Ds\PriorityQueue::capacity() example

<?php
$queue = new \Ds\PriorityQueue();
var_dump($queue->capacity());
?>

以上例程的输出类似于：

int(8)
Ds\PriorityQueue::allocate
Ds\PriorityQueue::clear
PriorityQueue


Removes all values.

Ds\PriorityQueue::capacity
Ds\PriorityQueue::__construct
PriorityQueue
PHP Manual

Ds\PriorityQueue::clear

(PECL ds >= 1.0.0)

Ds\PriorityQueue::clear — Removes all values.

说明

public void Ds\PriorityQueue::clear ( void )

Removes all values from the queue.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 Ds\PriorityQueue::clear() example

<?php
$queue = new \Ds\PriorityQueue();

$queue->push("a",  5);
$queue->push("b", 15);
$queue->push("c", 10);

$queue->clear();
print_r($queue);
?>

以上例程的输出类似于：

Ds\PriorityQueue Object
(
)
Ds\PriorityQueue::capacity
Ds\PriorityQueue::__construct
PriorityQueue


Creates a new instance.

Ds\PriorityQueue::clear
Ds\PriorityQueue::copy
PriorityQueue
PHP Manual

Ds\PriorityQueue::__construct

(PECL ds >= 1.0.0)

Ds\PriorityQueue::__construct — Creates a new instance.

说明

public Ds\PriorityQueue::__construct ( void )

Creates a new instance.

范例

Example #1 Ds\PriorityQueue::__construct() example

<?php
$queue = new \Ds\PriorityQueue();
var_dump($queue);
?>

以上例程的输出类似于：

object(Ds\PriorityQueue)#1 (0) {
}
Ds\PriorityQueue::clear
Ds\PriorityQueue::copy
PriorityQueue


Returns a shallow copy of the queue.

Ds\PriorityQueue::__construct
Ds\PriorityQueue::count
PriorityQueue
PHP Manual

Ds\PriorityQueue::copy

(PECL ds >= 1.0.0)

Ds\PriorityQueue::copy — Returns a shallow copy of the queue.

说明

public Ds\PriorityQueue Ds\PriorityQueue::copy ( void )

Returns a shallow copy of the queue.

参数

此函数没有参数。

返回值

Returns a shallow copy of the queue.

范例

Example #1 Ds\PriorityQueue::copy() example

<?php
$queue = new \Ds\PriorityQueue();

$queue->push("a",  5);
$queue->push("b", 15);
$queue->push("c", 10);

print_r($queue->copy());
?>

以上例程的输出类似于：

Ds\PriorityQueue Object
(
    [0] => b
    [1] => c
    [2] => a
)
Ds\PriorityQueue::__construct
Ds\PriorityQueue::count
PriorityQueue


Returns the number of values in the queue.

Ds\PriorityQueue::copy
Ds\PriorityQueue::isEmpty
PriorityQueue
PHP Manual

Ds\PriorityQueue::count

(PECL ds >= 1.0.0)

Ds\PriorityQueue::count — Returns the number of values in the queue.

See Countable::count()

Ds\PriorityQueue::copy
Ds\PriorityQueue::isEmpty
PriorityQueue


Returns whether the queue is empty

Ds\PriorityQueue::count
Ds\PriorityQueue::jsonSerialize
PriorityQueue
PHP Manual

Ds\PriorityQueue::isEmpty

(PECL ds >= 1.0.0)

Ds\PriorityQueue::isEmpty — Returns whether the queue is empty

说明

public bool Ds\PriorityQueue::isEmpty ( void )

Returns whether the queue is empty.

参数

此函数没有参数。

返回值

Returns TRUE if the queue is empty, FALSE otherwise.

范例

Example #1 Ds\PriorityQueue::isEmpty() example

<?php
$a = new \Ds\PriorityQueue();
$b = new \Ds\PriorityQueue();

$a->push("a",  5);
$a->push("b", 15);
$a->push("c", 10);

var_dump($a->isEmpty());
var_dump($b->isEmpty());
?>

以上例程的输出类似于：

bool(false)
bool(true)
Ds\PriorityQueue::count
Ds\PriorityQueue::jsonSerialize
PriorityQueue


Returns a representation that can be converted to JSON.

Ds\PriorityQueue::isEmpty
Ds\PriorityQueue::peek
PriorityQueue
PHP Manual

Ds\PriorityQueue::jsonSerialize

(PECL ds >= 1.0.0)

Ds\PriorityQueue::jsonSerialize — Returns a representation that can be converted to JSON.

See JsonSerializable::jsonSerialize()

Note:

You should never need to call this directly.

Ds\PriorityQueue::isEmpty
Ds\PriorityQueue::peek
PriorityQueue


Returns the value at the front of the queue.

Ds\PriorityQueue::jsonSerialize
Ds\PriorityQueue::pop
PriorityQueue
PHP Manual

Ds\PriorityQueue::peek

(PECL ds >= 1.0.0)

Ds\PriorityQueue::peek — Returns the value at the front of the queue.

说明

public mixed Ds\PriorityQueue::peek ( void )

Returns the value at the front of the queue, but does not remove it.

参数

此函数没有参数。

返回值

The value at the front of the queue.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\PriorityQueue::peek() example

<?php
$queue = new \Ds\PriorityQueue();

$queue->push("a",  5);
$queue->push("b", 15);
$queue->push("c", 10);

var_dump($queue->peek());
?>

以上例程的输出类似于：

string(1) "b"
Ds\PriorityQueue::jsonSerialize
Ds\PriorityQueue::pop
PriorityQueue


Removes and returns the value with the highest priority.

Ds\PriorityQueue::peek
Ds\PriorityQueue::push
PriorityQueue
PHP Manual

Ds\PriorityQueue::pop

(PECL ds >= 1.0.0)

Ds\PriorityQueue::pop — Removes and returns the value with the highest priority.

说明

public mixed Ds\PriorityQueue::pop ( void )

Removes and returns the value at the front of the queue, ie. the value with the highest priority.

Note:

Values with equal priority fall back to FIFO (first in first out).

参数

此函数没有参数。

返回值

The removed value which was at the front of the queue.

错误／异常

UnderflowException if empty.

范例

Example #1 Ds\PriorityQueue::pop() example

<?php
$queue = new \Ds\PriorityQueue();

$queue->push("a",  5);
$queue->push("b", 15);
$queue->push("c", 10);

print_r($queue->pop());
print_r($queue->pop());
print_r($queue->pop());
?>

以上例程的输出类似于：

string(1) "a"
string(1) "b"
string(1) "c"
Ds\PriorityQueue::peek
Ds\PriorityQueue::push
PriorityQueue


Pushes values into the queue.

Ds\PriorityQueue::pop
Ds\PriorityQueue::toArray
PriorityQueue
PHP Manual

Ds\PriorityQueue::push

(PECL ds >= 1.0.0)

Ds\PriorityQueue::push — Pushes values into the queue.

说明

public void Ds\PriorityQueue::push ( mixed $value , int $priority )

Pushes a value with a given priority into the queue.

参数

value

The value to push into the queue.

priority

The priority associated with the value.

返回值

没有返回值。

范例

Example #1 Ds\PriorityQueue::push() example

<?php
$queue = new \Ds\PriorityQueue();

$queue->push("a",  5);
$queue->push("b", 15);
$queue->push("c", 10);

print_r($queue->pop());
print_r($queue->pop());
print_r($queue->pop());
?>

以上例程的输出类似于：

string(1) "b"
string(1) "c"
string(1) "a"
Ds\PriorityQueue::pop
Ds\PriorityQueue::toArray
PriorityQueue


Converts the queue to an array.

Ds\PriorityQueue::push
Filter
PriorityQueue
PHP Manual

Ds\PriorityQueue::toArray

(PECL ds >= 1.0.0)

Ds\PriorityQueue::toArray — Converts the queue to an array.

说明

public array Ds\PriorityQueue::toArray ( void )

Converts the queue to an array.

Note:

This method is not destructive.

Note:

Casting to an array is not supported yet.

参数

此函数没有参数。

返回值

An array containing all the values in the same order as the queue.

范例

Example #1 Ds\PriorityQueue::toArray() example

<?php
$queue = new \Ds\PriorityQueue();

$queue->push("a",  5);
$queue->push("b", 15);
$queue->push("c", 10);

var_dump($queue->toArray());
?>

以上例程的输出类似于：

array(3) {
  [0]=>
  string(1) "b"
  [1]=>
  string(1) "c"
  [2]=>
  string(1) "a"
}
Ds\PriorityQueue::push
Filter
PriorityQueue


Data Filtering

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • Types of filters
    • Validate filters
    • Sanitize filters
    • Other filters
    • Filter flags
  • 预定义常量
  • 范例
    • Validation
    • Sanitization
  • Filter 函数
    • filter_has_var — Checks if variable of specified type exists
    • filter_id — 返回与某个特定名称的过滤器相关联的id
    • filter_input_array — 获取一系列外部变量，并且可以通过过滤器处理它们
    • filter_input — 通过名称获取特定的外部变量，并且可以通过过滤器处理它
    • filter_list — 返回所支持的过滤器列表
    • filter_var_array — 获取多个变量并且过滤它们
    • filter_var — 使用特定的过滤器过滤一个变量
Ds\PriorityQueue::toArray
简介
变量与类型相关扩展


简介

This extension filters data by either validating or sanitizing it. This is especially useful when the data source contains unknown (or foreign) data, like user supplied input. For example, this data may come from an HTML form.

There are two main types of filtering: validation and sanitization.

Validation is used to validate or check if the data meets certain qualifications. For example, passing in FILTER_VALIDATE_EMAIL will determine if the data is a valid email address, but will not change the data itself.

Sanitization will sanitize the data, so it may alter it by removing undesired characters. For example, passing in FILTER_SANITIZE_EMAIL will remove characters that are inappropriate for an email address to contain. That said, it does not validate the data.

Flags are optionally used with both validation and sanitization to tweak behaviour according to need. For example, passing in FILTER_FLAG_PATH_REQUIRED while filtering an URL will require a path (like /foo in http://example.org/foo) to be present.

Filter
安装／配置
Filter


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Filter


安装

The filter extension is enabled by default as of PHP 5.2.0. Before this time an experimental PECL extension was used, however, the PECL version is no longer recommended or updated.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Filter Configuration Options
名字 | 默认 | 可修改范围 | 更新日志
filter.default | "unsafe_raw" | PHP_INI_PERDIR | PHP_INI_ALL in filter <= 0.9.4. Available since PHP 5.2.0.
filter.default_flags | NULL | PHP_INI_PERDIR | PHP_INI_ALL in filter <= 0.9.4. Available since PHP 5.2.0.
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

filter.default string

Filter all $_GET, $_POST, $_COOKIE, $_REQUEST and $_SERVER data by this filter. Original data can be accessed through filter_input().

Accepts the name of the filter you like to use by default. See the existing filter list for the list of the filter names.

Note:

Be careful about the default flags for the default filters. You should explicitly set them to the value you want. For example, to configure the default filter to behave exactly like htmlspecialchars() you need to set them default flags to 0 as shown below.

Example #1 Configuring the default filter to act like htmlspecialchars

filter.default = full_special_chars
filter.default_flags = 0

filter.default_flags integer

Default flags to apply when the default filter is set. This is set to FILTER_FLAG_NO_ENCODE_QUOTES by default for backwards compatibility reasons. See the flag list for the list of all the flag names.

安装
资源类型
安装／配置


资源类型

此扩展没有定义资源类型。

运行时配置
Types of filters
安装／配置


Types of filters

Table of Contents

  • Validate filters
  • Sanitize filters
  • Other filters
  • Filter flags
资源类型
Validate filters
Filter


Validate filters

Listing of filters for validation
ID | Name | Options | Flags | Description
FILTER_VALIDATE_BOOLEAN | "boolean" | default | FILTER_NULL_ON_FAILURE | Returns TRUE for "1", "true", "on" and "yes". Returns FALSE otherwise. If FILTER_NULL_ON_FAILURE is set, FALSE is returned only for "0", "false", "off", "no", and "", and NULL is returned for all non-boolean values.
FILTER_VALIDATE_EMAIL | "validate_email" | default | FILTER_FLAG_EMAIL_UNICODE | Validates whether the value is a valid e-mail address. In general, this validates e-mail addresses against the syntax in RFC 822, with the exceptions that comments and whitespace folding and dotless domain names are not supported.
FILTER_VALIDATE_FLOAT | "float" | default, decimal | FILTER_FLAG_ALLOW_THOUSAND | Validates value as float, and converts to float on success.
FILTER_VALIDATE_INT | "int" | default, min_range, max_range | FILTER_FLAG_ALLOW_OCTAL, FILTER_FLAG_ALLOW_HEX | Validates value as integer, optionally from the specified range, and converts to int on success.
FILTER_VALIDATE_IP | "validate_ip" | default | FILTER_FLAG_IPV4, FILTER_FLAG_IPV6, FILTER_FLAG_NO_PRIV_RANGE, FILTER_FLAG_NO_RES_RANGE | Validates value as IP address, optionally only IPv4 or IPv6 or not from private or reserved ranges.
FILTER_VALIDATE_MAC | "validate_mac_address" | default |  | Validates value as MAC address.
FILTER_VALIDATE_REGEXP | "validate_regexp" | default, regexp |  | Validates value against regexp, a Perl-compatible regular expression.
FILTER_VALIDATE_URL | "validate_url" | default | FILTER_FLAG_SCHEME_REQUIRED, FILTER_FLAG_HOST_REQUIRED, FILTER_FLAG_PATH_REQUIRED, FILTER_FLAG_QUERY_REQUIRED | Validates value as URL (according to » http://www.faqs.org/rfcs/rfc2396), optionally with required components. Beware a valid URL may not specify the HTTP protocol http:// so further validation may be required to determine the URL uses an expected protocol, e.g. ssh:// or mailto:. Note that the function will only find ASCII URLs to be valid; internationalized domain names (containing non-ASCII characters) will fail.

Note:

As of PHP 5.4.11, the numbers +0 and -0 validate as both integers as well as floats (using FILTER_VALIDATE_FLOAT and FILTER_VALIDATE_INT). Before PHP 5.4.11 they only validated as floats (using FILTER_VALIDATE_FLOAT).

When default is set to option, default's value is used if value is not validated.

更新日志

版本 | 说明
5.5.0 | Added FILTER_VALIDATE_MAC
5.2.1 | FILTER_VALIDATE_URL now defaults to FILTER_FLAG_SCHEME_REQUIRED and FILTER_FLAG_HOST_REQUIRED.

Types of filters
Sanitize filters
Types of filters


Sanitize filters

List of filters for sanitization
ID | Name | Flags | Description
FILTER_SANITIZE_EMAIL | "email" |  | Remove all characters except letters, digits and !#$%&'*+-=?^_`{|}~@.[].
FILTER_SANITIZE_ENCODED | "encoded" | FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_STRIP_BACKTICK, FILTER_FLAG_ENCODE_LOW, FILTER_FLAG_ENCODE_HIGH | URL-encode string, optionally strip or encode special characters.
FILTER_SANITIZE_MAGIC_QUOTES | "magic_quotes" |  | Apply addslashes().
FILTER_SANITIZE_NUMBER_FLOAT | "number_float" | FILTER_FLAG_ALLOW_FRACTION, FILTER_FLAG_ALLOW_THOUSAND, FILTER_FLAG_ALLOW_SCIENTIFIC | Remove all characters except digits, +- and optionally .,eE.
FILTER_SANITIZE_NUMBER_INT | "number_int" |  | Remove all characters except digits, plus and minus sign.
FILTER_SANITIZE_SPECIAL_CHARS | "special_chars" | FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_STRIP_BACKTICK, FILTER_FLAG_ENCODE_HIGH | HTML-escape '"<>& and characters with ASCII value less than 32, optionally strip or encode other special characters.
FILTER_SANITIZE_FULL_SPECIAL_CHARS | "full_special_chars" | FILTER_FLAG_NO_ENCODE_QUOTES, | Equivalent to calling htmlspecialchars() with ENT_QUOTES set. Encoding quotes can be disabled by setting FILTER_FLAG_NO_ENCODE_QUOTES. Like htmlspecialchars(), this filter is aware of the default_charset and if a sequence of bytes is detected that makes up an invalid character in the current character set then the entire string is rejected resulting in a 0-length string. When using this filter as a default filter, see the warning below about setting the default flags to 0.
FILTER_SANITIZE_STRING | "string" | FILTER_FLAG_NO_ENCODE_QUOTES, FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_STRIP_BACKTICK, FILTER_FLAG_ENCODE_LOW, FILTER_FLAG_ENCODE_HIGH, FILTER_FLAG_ENCODE_AMP | Strip tags, optionally strip or encode special characters.
FILTER_SANITIZE_STRIPPED | "stripped" |  | Alias of "string" filter.
FILTER_SANITIZE_URL | "url" |  | Remove all characters except letters, digits and $-_.+!*'(),{}|\\^~[]`<>#%";/?:@&=.
FILTER_UNSAFE_RAW | "unsafe_raw" | FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_STRIP_BACKTICK, FILTER_FLAG_ENCODE_LOW, FILTER_FLAG_ENCODE_HIGH, FILTER_FLAG_ENCODE_AMP | Do nothing, optionally strip or encode special characters. This filter is also aliased to FILTER_DEFAULT.

Warning

When using one of these filters as a default filter either through your ini file or through your web server's configuration, the default flags is set to FILTER_FLAG_NO_ENCODE_QUOTES. You need to explicitly set filter.default_flags to 0 to have quotes encoded by default. Like this:

Example #1 Configuring the default filter to act like htmlspecialchars

filter.default = full_special_chars
filter.default_flags = 0

更新日志

版本 | 说明
5.2.11/5.3.1 | Slashes (/) are removed by FILTER_SANITIZE_EMAIL. Prior they were retained.

Validate filters
Other filters
Types of filters


Other filters

List of miscellaneous filters
ID | Name | Options | Flags | Description
FILTER_CALLBACK | "callback" | callable function or method |  | Call user-defined function to filter data.

Sanitize filters
Filter flags
Types of filters


Filter flags

List of filter flags
ID | Used with | Description
FILTER_FLAG_STRIP_LOW | FILTER_SANITIZE_ENCODED, FILTER_SANITIZE_SPECIAL_CHARS, FILTER_SANITIZE_STRING, FILTER_UNSAFE_RAW | Strips characters that have a numerical value <32.
FILTER_FLAG_STRIP_HIGH | FILTER_SANITIZE_ENCODED, FILTER_SANITIZE_SPECIAL_CHARS, FILTER_SANITIZE_STRING, FILTER_UNSAFE_RAW | Strips characters that have a numerical value >127.
FILTER_FLAG_STRIP_BACKTICK | FILTER_SANITIZE_ENCODED, FILTER_SANITIZE_SPECIAL_CHARS, FILTER_SANITIZE_STRING, FILTER_UNSAFE_RAW | Strips backtick characters.
FILTER_FLAG_ALLOW_FRACTION | FILTER_SANITIZE_NUMBER_FLOAT | Allows a period (.) as a fractional separator in numbers.
FILTER_FLAG_ALLOW_THOUSAND | FILTER_SANITIZE_NUMBER_FLOAT, FILTER_VALIDATE_FLOAT | Allows a comma (,) as a thousands separator in numbers.
FILTER_FLAG_ALLOW_SCIENTIFIC | FILTER_SANITIZE_NUMBER_FLOAT | Allows an e or E for scientific notation in numbers.
FILTER_FLAG_NO_ENCODE_QUOTES | FILTER_SANITIZE_STRING | If this flag is present, single (') and double (") quotes will not be encoded.
FILTER_FLAG_ENCODE_LOW | FILTER_SANITIZE_ENCODED, FILTER_SANITIZE_STRING, FILTER_SANITIZE_RAW | Encodes all characters with a numerical value <32.
FILTER_FLAG_ENCODE_HIGH | FILTER_SANITIZE_ENCODED, FILTER_SANITIZE_SPECIAL_CHARS, FILTER_SANITIZE_STRING, FILTER_SANITIZE_RAW | Encodes all characters with a numerical value >127.
FILTER_FLAG_ENCODE_AMP | FILTER_SANITIZE_STRING, FILTER_SANITIZE_RAW | Encodes ampersands (&).
FILTER_NULL_ON_FAILURE | FILTER_VALIDATE_BOOLEAN | Returns NULL for unrecognized boolean values.
FILTER_FLAG_ALLOW_OCTAL | FILTER_VALIDATE_INT | Regards inputs starting with a zero (0) as octal numbers. This only allows the succeeding digits to be 0-7.
FILTER_FLAG_ALLOW_HEX | FILTER_VALIDATE_INT | Regards inputs starting with 0x or 0X as hexadecimal numbers. This only allows succeeding characters to be a-fA-F0-9.
FILTER_FLAG_EMAIL_UNICODE | FILTER_VALIDATE_EMAIL | Allows the local part of the email address to contain Unicode characters.
FILTER_FLAG_IPV4 | FILTER_VALIDATE_IP | Allows the IP address to be in IPv4 format.
FILTER_FLAG_IPV6 | FILTER_VALIDATE_IP | Allows the IP address to be in IPv6 format.
FILTER_FLAG_NO_PRIV_RANGE | FILTER_VALIDATE_IP | Fails validation for the following private IPv4 ranges: 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16. Fails validation for the IPv6 addresses starting with FD or FC.
FILTER_FLAG_NO_RES_RANGE | FILTER_VALIDATE_IP | Fails validation for the following reserved IPv4 ranges: 0.0.0.0/8, 169.254.0.0/16, 127.0.0.0/8 and 240.0.0.0/4. Fails validation for the following reserved IPv6 ranges: ::1/128, ::/128, ::ffff:0:0/96 and fe80::/10.
FILTER_FLAG_SCHEME_REQUIRED | FILTER_VALIDATE_URL | Requires the URL to contain a scheme part.
FILTER_FLAG_HOST_REQUIRED | FILTER_VALIDATE_URL | Requires the URL to contain a host part.
FILTER_FLAG_PATH_REQUIRED | FILTER_VALIDATE_URL | Requires the URL to contain a path part.
FILTER_FLAG_QUERY_REQUIRED | FILTER_VALIDATE_URL | Requires the URL to contain a query string.
FILTER_REQUIRE_SCALAR |  | Requires the value to be scalar.
FILTER_REQUIRE_ARRAY |  | Requires the value to be an array.
FILTER_FORCE_ARRAY |  | If the value is a scalar, it is treated as array with the scalar value as only element.

更新日志

版本 | 说明
5.3.2 | FILTER_FLAG_STRIP_BACKTICK has been added.
5.2.10 | FILTER_FLAG_NO_RES_RANGE supports also IPv6 addresses.

Other filters
预定义常量
Types of filters


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

INPUT_POST (integer)
POST variables.
INPUT_GET (integer)
GET variables.
INPUT_COOKIE (integer)
COOKIE variables.
INPUT_ENV (integer)
ENV variables.
INPUT_SERVER (integer)
SERVER variables.
INPUT_SESSION (integer)
SESSION variables. (not implemented yet)
INPUT_REQUEST (integer)
REQUEST variables. (not implemented yet)
FILTER_FLAG_NONE (integer)
No flags.
FILTER_REQUIRE_SCALAR (integer)
Flag used to require scalar as input
FILTER_REQUIRE_ARRAY (integer)
Require an array as input.
FILTER_FORCE_ARRAY (integer)
Always returns an array.
FILTER_NULL_ON_FAILURE (integer)
Use NULL instead of FALSE on failure.
FILTER_VALIDATE_INT (integer)
ID of "int" filter.
FILTER_VALIDATE_BOOLEAN (integer)
ID of "boolean" filter.
FILTER_VALIDATE_FLOAT (integer)
ID of "float" filter.
FILTER_VALIDATE_REGEXP (integer)
ID of "validate_regexp" filter.
FILTER_VALIDATE_URL (integer)
ID of "validate_url" filter.
FILTER_VALIDATE_EMAIL (integer)
ID of "validate_email" filter.
FILTER_VALIDATE_IP (integer)
ID of "validate_ip" filter.
FILTER_VALIDATE_MAC (integer)
ID of "validate_mac_address" filter. (Available as of PHP 5.5.0)
FILTER_DEFAULT (integer)
ID of default ("unsafe_raw") filter. This is equivalent to FILTER_UNSAFE_RAW.
FILTER_UNSAFE_RAW (integer)
ID of "unsafe_raw" filter.
FILTER_SANITIZE_STRING (integer)
ID of "string" filter.
FILTER_SANITIZE_STRIPPED (integer)
ID of "stripped" filter.
FILTER_SANITIZE_ENCODED (integer)
ID of "encoded" filter.
FILTER_SANITIZE_SPECIAL_CHARS (integer)
ID of "special_chars" filter.
FILTER_SANITIZE_EMAIL (integer)
ID of "email" filter.
FILTER_SANITIZE_URL (integer)
ID of "url" filter.
FILTER_SANITIZE_NUMBER_INT (integer)
ID of "number_int" filter.
FILTER_SANITIZE_NUMBER_FLOAT (integer)
ID of "number_float" filter.
FILTER_SANITIZE_MAGIC_QUOTES (integer)
ID of "magic_quotes" filter.
FILTER_CALLBACK (integer)
ID of "callback" filter.
FILTER_FLAG_ALLOW_OCTAL (integer)
Allow octal notation (0[0-7]+) in "int" filter.
FILTER_FLAG_ALLOW_HEX (integer)
Allow hex notation (0x[0-9a-fA-F]+) in "int" filter.
FILTER_FLAG_STRIP_LOW (integer)
Strip characters with ASCII value less than 32.
FILTER_FLAG_STRIP_HIGH (integer)
Strip characters with ASCII value greater than 127.
FILTER_FLAG_ENCODE_LOW (integer)
Encode characters with ASCII value less than 32.
FILTER_FLAG_ENCODE_HIGH (integer)
Encode characters with ASCII value greater than 127.
FILTER_FLAG_ENCODE_AMP (integer)
Encode &.
FILTER_FLAG_NO_ENCODE_QUOTES (integer)
Don't encode ' and ".
FILTER_FLAG_EMPTY_STRING_NULL (integer)
(No use for now.)
FILTER_FLAG_ALLOW_FRACTION (integer)
Allow fractional part in "number_float" filter.
FILTER_FLAG_ALLOW_THOUSAND (integer)
Allow thousand separator (,) in "number_float" filter.
FILTER_FLAG_ALLOW_SCIENTIFIC (integer)
Allow scientific notation (e, E) in "number_float" filter.
FILTER_FLAG_PATH_REQUIRED (integer)
Require path in "validate_url" filter.
FILTER_FLAG_QUERY_REQUIRED (integer)
Require query in "validate_url" filter.
FILTER_FLAG_IPV4 (integer)
Allow only IPv4 address in "validate_ip" filter.
FILTER_FLAG_IPV6 (integer)
Allow only IPv6 address in "validate_ip" filter.
FILTER_FLAG_NO_RES_RANGE (integer)
Deny reserved addresses in "validate_ip" filter.
FILTER_FLAG_NO_PRIV_RANGE (integer)
Deny private addresses in "validate_ip" filter.
FILTER_FLAG_EMAIL_UNICODE (integer)
Accepts Unicode characters in the local part in "validate_email" filter. (Available as of PHP 7.1.0)
Filter flags
范例
Filter


范例

Table of Contents

  • Validation
  • Sanitization
预定义常量
Validation
Filter


Validation

Example #1 Validating email addresses with filter_var()

<?php
$email_a = 'joe@example.com';
$email_b = 'bogus';

if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
    echo "This ($email_a) email address is considered valid.\n";
}
if (filter_var($email_b, FILTER_VALIDATE_EMAIL)) {
    echo "This ($email_b) email address is considered valid.\n";
} else {
    echo "This ($email_b) email address is considered invalid.\n";
}
?>

以上例程会输出：

This (joe@example.com) email address is considered valid.
This (bogus) email address is considered invalid.

Example #2 Validating IP addresses with filter_var()

<?php
$ip_a = '127.0.0.1';
$ip_b = '42.42';

if (filter_var($ip_a, FILTER_VALIDATE_IP)) {
    echo "This (ip_a) IP address is considered valid.";
}
if (filter_var($ip_b, FILTER_VALIDATE_IP)) {
    echo "This (ip_b) IP address is considered valid.";
}
?>

以上例程会输出：

This (ip_a) IP address is considered valid.

Example #3 Passing options to filter_var()

<?php
$int_a = '1';
$int_b = '-1';
$int_c = '4';
$options = array(
    'options' => array(
                      'min_range' => 0,
                      'max_range' => 3,
                      )
);
if (filter_var($int_a, FILTER_VALIDATE_INT, $options) !== FALSE) {
    echo "This (int_a) integer is considered valid (between 0 and 3).\n";
}
if (filter_var($int_b, FILTER_VALIDATE_INT, $options) !== FALSE) {
    echo "This (int_b) integer is considered valid (between 0 and 3).\n";
}
if (filter_var($int_c, FILTER_VALIDATE_INT, $options) !== FALSE) {
    echo "This (int_c) integer is considered valid (between 0 and 3).\n";
}

$options['options']['default'] = 1;
if (($int_c = filter_var($int_c, FILTER_VALIDATE_INT, $options)) !== FALSE) {
    echo "This (int_c) integer is considered valid (between 0 and 3) and is $int_c.";
}
?>

以上例程会输出：

This (int_a) integer is considered valid (between 0 and 3).
This (int_c) integer is considered valid (between 0 and 3) and is 1.

范例
Sanitization
范例


Sanitization

Example #1 Sanitizing and validating email addresses

<?php
$a = 'joe@example.org';
$b = 'bogus - at - example dot org';
$c = '(bogus@example.org)';

$sanitized_a = filter_var($a, FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized_a, FILTER_VALIDATE_EMAIL)) {
    echo "This (a) sanitized email address is considered valid.\n";
}

$sanitized_b = filter_var($b, FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized_b, FILTER_VALIDATE_EMAIL)) {
    echo "This sanitized email address is considered valid.";
} else {
    echo "This (b) sanitized email address is considered invalid.\n";
}

$sanitized_c = filter_var($c, FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized_c, FILTER_VALIDATE_EMAIL)) {
    echo "This (c) sanitized email address is considered valid.\n";
    echo "Before: $c\n";
    echo "After:  $sanitized_c\n";
}
?>

以上例程会输出：

This (a) sanitized email address is considered valid.
This (b) sanitized email address is considered invalid.
This (c) sanitized email address is considered valid.
Before: (bogus@example.org)
After: bogus@example.org

Example #2 Configuring a default filter

filter.default = full_special_chars
filter.default_flags = 0

Validation
Filter 函数
范例


Filter 函数

Table of Contents

  • filter_has_var — Checks if variable of specified type exists
  • filter_id — 返回与某个特定名称的过滤器相关联的id
  • filter_input_array — 获取一系列外部变量，并且可以通过过滤器处理它们
  • filter_input — 通过名称获取特定的外部变量，并且可以通过过滤器处理它
  • filter_list — 返回所支持的过滤器列表
  • filter_var_array — 获取多个变量并且过滤它们
  • filter_var — 使用特定的过滤器过滤一个变量
Sanitization
filter_has_var
Filter


Checks if variable of specified type exists

Filter 函数
filter_id
Filter 函数
PHP Manual

filter_has_var

(PHP 5 >= 5.2.0, PHP 7)

filter_has_var — Checks if variable of specified type exists

说明

bool filter_has_var ( int $type , string $variable_name )

参数

type

One of INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, or INPUT_ENV.

variable_name

Name of a variable to check.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

Filter 函数
filter_id
Filter 函数


返回与某个特定名称的过滤器相关联的id

filter_has_var
filter_input_array
Filter 函数
PHP Manual

filter_id

(PHP 5 >= 5.2.0, PHP 7)

filter_id — 返回与某个特定名称的过滤器相关联的id

说明

int filter_id ( string $filtername )

参数

filtername

待获取的过滤器名称

返回值

如果获取成功则返回过滤器id，如果过滤器不存在则返回 FALSE 。

参见

  • filter_list() - 返回所支持的过滤器列表

filter_has_var
filter_input_array
Filter 函数


获取一系列外部变量，并且可以通过过滤器处理它们

filter_id
filter_input
Filter 函数
PHP Manual

filter_input_array

(PHP 5 >= 5.2.0, PHP 7)

filter_input_array — 获取一系列外部变量，并且可以通过过滤器处理它们

说明

mixed filter_input_array ( int $type [, mixed $definition [, bool $add_empty = true ]] )

这个函数当需要获取很多变量却不想重复调用filter_input()时很有用。

参数

type

INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, or INPUT_ENV之一。

definition

一个定义参数的数组。一个有效的键必须是一个包含变量名的string，一个有效的值要么是一个filter type，或者是一个array 指明了过滤器、标示和选项。如果值是一个数组，那么它的有效的键可以是 filter， 用于指明 filter type，flags 用于指明任何想要用于过滤器的标示，或者 options 用于指明任何想要用于过滤器的选项。 参考下面的例子来更好的理解这段说明。

这个参数也可以是一个filter constant的整数。那么数组中的所有变量都会被这个过滤器所过滤。

add_empty

在返回值中添加 NULL 作为不存在的键。

返回值

如果成功的话返回一个所请求的变量的数组，如果失败的话返回 FALSE 。对于数组的值，如果过滤失败则返回 FALSE ，如果variable_name 不存在的话则返回 NULL 。 如果标示 FILTER_NULL_ON_FAILURE 被使用了，那么当变量不存在时返回 FALSE ，当过滤失败时返回 NULL 。

范例

Example #1 一个 filter_input_array() 的例子

<?php
error_reporting(E_ALL | E_STRICT);
/* data actually came from POST
$_POST = array(
    'product_id'    => 'libgd<script>',
    'component'     => '10',
    'versions'      => '2.0.33',
    'testscalar'    => array('2', '23', '10', '12'),
    'testarray'     => '2',
);
*/

$args = array(
    'product_id'   => FILTER_SANITIZE_ENCODED,
    'component'    => array('filter'    => FILTER_VALIDATE_INT,
                            'flags'     => FILTER_REQUIRE_ARRAY,
                            'options'   => array('min_range' => 1, 'max_range' => 10)
                           ),
    'versions'     => FILTER_SANITIZE_ENCODED,
    'doesnotexist' => FILTER_VALIDATE_INT,
    'testscalar'   => array(
                            'filter' => FILTER_VALIDATE_INT,
                            'flags'  => FILTER_REQUIRE_SCALAR,
                           ),
    'testarray'    => array(
                            'filter' => FILTER_VALIDATE_INT,
                            'flags'  => FILTER_REQUIRE_ARRAY,
                           )

);

$myinputs = filter_input_array(INPUT_POST, $args);

var_dump($myinputs);
echo "\n";
?>

以上例程会输出：

array(6) {
  ["product_id"]=>
  array(1) {
    [0]=>
    string(17) "libgd%3Cscript%3E"
  }
  ["component"]=>
  array(1) {
    [0]=>
    int(10)
  }
  ["versions"]=>
  array(1) {
    [0]=>
    string(6) "2.0.33"
  }
  ["doesnotexist"]=>
  NULL
  ["testscalar"]=>
  bool(false)
  ["testarray"]=>
  array(1) {
    [0]=>
    int(2)
  }
}

更新日志

版本 | 说明
5.4.0 | 添加 add_empty 参数.

注释

Note:

在 INPUT_SERVER 数组中并没有 REQUEST_TIME ，因为它是被稍后插入到$_SERVER 中的。

参见

  • filter_input() - 通过名称获取特定的外部变量，并且可以通过过滤器处理它
  • filter_var_array() - 获取多个变量并且过滤它们
  • Types of filters

filter_id
filter_input
Filter 函数


通过名称获取特定的外部变量，并且可以通过过滤器处理它

filter_input_array
filter_list
Filter 函数
PHP Manual

filter_input

(PHP 5 >= 5.2.0, PHP 7)

filter_input — 通过名称获取特定的外部变量，并且可以通过过滤器处理它

说明

mixed filter_input ( int $type , string $variable_name [, int $filter = FILTER_DEFAULT [, mixed $options ]] )

参数

type

INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER或 INPUT_ENV之一。

variable_name

待获取的变量名。

filter

The ID of the filter to apply. The Types of filters manual page lists the available filters.

If omitted, FILTER_DEFAULT will be used, which is equivalent to FILTER_UNSAFE_RAW. This will result in no filtering taking place by default.

options

一个选项的关联数组，或者按位区分的标示。如果过滤器接受选项，可以通过数组的 "flags" 位去提供这些标示。

返回值

如果成功的话返回所请求的变量。如果过滤失败则返回 FALSE ，如果variable_name 不存在的话则返回 NULL 。 如果标示 FILTER_NULL_ON_FAILURE 被使用了，那么当变量不存在时返回 FALSE ，当过滤失败时返回 NULL 。

范例

Example #1 一个 filter_input() 的例子

<?php
$search_html = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_SPECIAL_CHARS);
$search_url = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_ENCODED);
echo "You have searched for $search_html.\n";
echo "<a href='?search=$search_url'>Search again.</a>";
?>

以上例程的输出类似于：

You have searched for Me &#38; son.
<a href='?search=Me%20%26%20son'>Search again.</a>

参见

  • filter_var() - 使用特定的过滤器过滤一个变量
  • filter_input_array() - 获取一系列外部变量，并且可以通过过滤器处理它们
  • filter_var_array() - 获取多个变量并且过滤它们
  • Types of filters

filter_input_array
filter_list
Filter 函数


返回所支持的过滤器列表

filter_input
filter_var_array
Filter 函数
PHP Manual

filter_list

(PHP 5 >= 5.2.0, PHP 7)

filter_list — 返回所支持的过滤器列表

说明

array filter_list ( void )

返回值

返回一个所支持的过滤器的名称的列表，如果没有这样子的过滤器的话则返回空数组。这个数组的索引不是过滤器id， 你可以通过 filter_id() 去根据名称获取它们。

范例

Example #1 一个 filter_list() 的例子

<?php
print_r(filter_list());
?>

以上例程的输出类似于：

Array
(
    [0] => int
    [1] => boolean
    [2] => float
    [3] => validate_regexp
    [4] => validate_url
    [5] => validate_email
    [6] => validate_ip
    [7] => string
    [8] => stripped
    [9] => encoded
    [10] => special_chars
    [11] => unsafe_raw
    [12] => email
    [13] => url
    [14] => number_int
    [15] => number_float
    [16] => magic_quotes
    [17] => callback
)

filter_input
filter_var_array
Filter 函数


获取多个变量并且过滤它们

filter_list
filter_var
Filter 函数
PHP Manual

filter_var_array

(PHP 5 >= 5.2.0, PHP 7)

filter_var_array — 获取多个变量并且过滤它们

说明

mixed filter_var_array ( array $data [, mixed $definition [, bool $add_empty = true ]] )

这个函数当需要获取很多变量却不想重复调用filter_var()时很有用。

参数

data

一个键为字符串，值为待过滤的数据的数组。

definition

一个定义参数的数组。一个有效的键必须是一个包含变量名的string，一个有效的值要么是一个filter type，或者是一个array 指明了过滤器、标示和选项。如果值是一个数组，那么它的有效的键可以是 filter， 用于指明 filter type，flags 用于指明任何想要用于过滤器的标示，或者 options 用于指明任何想要用于过滤器的选项。 参考下面的例子来更好的理解这段说明。

这个参数也可以是一个filter constant的整数。那么数组中的所有值都会被这个过滤器所过滤。

add_empty

在返回值中添加 NULL 作为不存在的键。

返回值

如果成功则返回一个包含所请求变量的数组，或者当失败时返回 FALSE 。 一个数组的值如果过滤失败则为 FALSE ，或者为 NULL 如果变量不存在的话。

范例

Example #1 一个 filter_var_array() 的例子

<?php
error_reporting(E_ALL | E_STRICT);
$data = array(
    'product_id'    => 'libgd<script>',
    'component'     => '10',
    'versions'      => '2.0.33',
    'testscalar'    => array('2', '23', '10', '12'),
    'testarray'     => '2',
);

$args = array(
    'product_id'   => FILTER_SANITIZE_ENCODED,
    'component'    => array('filter'    => FILTER_VALIDATE_INT,
                            'flags'     => FILTER_FORCE_ARRAY,
                            'options'   => array('min_range' => 1, 'max_range' => 10)
                           ),
    'versions'     => FILTER_SANITIZE_ENCODED,
    'doesnotexist' => FILTER_VALIDATE_INT,
    'testscalar'   => array(
                            'filter' => FILTER_VALIDATE_INT,
                            'flags'  => FILTER_REQUIRE_SCALAR,
                           ),
    'testarray'    => array(
                            'filter' => FILTER_VALIDATE_INT,
                            'flags'  => FILTER_FORCE_ARRAY,
                           )

);

$myinputs = filter_var_array($data, $args);

var_dump($myinputs);
echo "\n";
?>

以上例程会输出：

array(6) {
  ["product_id"]=>
  array(1) {
    [0]=>
    string(17) "libgd%3Cscript%3E"
  }
  ["component"]=>
  array(1) {
    [0]=>
    int(10)
  }
  ["versions"]=>
  array(1) {
    [0]=>
    string(6) "2.0.33"
  }
  ["doesnotexist"]=>
  NULL
  ["testscalar"]=>
  bool(false)
  ["testarray"]=>
  array(1) {
    [0]=>
    int(2)
  }
}

更新日志

版本 | 说明
5.4.0 | 添加 add_empty 参数.

参见

  • filter_input_array() - 获取一系列外部变量，并且可以通过过滤器处理它们
  • filter_var() - 使用特定的过滤器过滤一个变量
  • filter_input() - 通过名称获取特定的外部变量，并且可以通过过滤器处理它
  • Types of filters

filter_list
filter_var
Filter 函数


使用特定的过滤器过滤一个变量

filter_var_array
Function Handling
Filter 函数
PHP Manual

filter_var

(PHP 5 >= 5.2.0, PHP 7)

filter_var — 使用特定的过滤器过滤一个变量

说明

mixed filter_var ( mixed $variable [, int $filter = FILTER_DEFAULT [, mixed $options ]] )

参数

variable

待过滤的变量

filter

The ID of the filter to apply. The Types of filters manual page lists the available filters.

If omitted, FILTER_DEFAULT will be used, which is equivalent to FILTER_UNSAFE_RAW. This will result in no filtering taking place by default.

options

一个选项的关联数组，或者按位区分的标示。如果过滤器接受选项，可以通过数组的 "flags" 位去提供这些标示。 对于回调型的过滤器，应该传入 callable。这个回调函数必须接受一个参数，即待过滤的值，并且 返回一个在过滤/净化后的值。

<?php
// for filters that accept options, use this format
$options = array(
    'options' => array(
        'default' => 3, // value to return if the filter fails
        // other options here
        'min_range' => 0
    ),
    'flags' => FILTER_FLAG_ALLOW_OCTAL,
);
$var = filter_var('0755', FILTER_VALIDATE_INT, $options);

// for filter that only accept flags, you can pass them directly
$var = filter_var('oops', FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);

// for filter that only accept flags, you can also pass as an array
$var = filter_var('oops', FILTER_VALIDATE_BOOLEAN,
                  array('flags' => FILTER_NULL_ON_FAILURE));

// callback validate filter
function foo($value)
{
    // Expected format: Surname, GivenNames
    if (strpos($value, ", ") === false) return false;
    list($surname, $givennames) = explode(", ", $value, 2);
    $empty = (empty($surname) || empty($givennames));
    $notstrings = (!is_string($surname) || !is_string($givennames));
    if ($empty || $notstrings) {
        return false;
    } else {
        return $value;
    }
}
$var = filter_var('Doe, Jane Sue', FILTER_CALLBACK, array('options' => 'foo'));
?>

返回值

Returns the filtered data, or FALSE if the filter fails.

范例

Example #1 一个 filter_var() 的例子

<?php
var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL));
var_dump(filter_var('http://example.com', FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED));
?>

以上例程会输出：

string(15) "bob@example.com"
bool(false)

参见

  • filter_var_array() - 获取多个变量并且过滤它们
  • filter_input() - 通过名称获取特定的外部变量，并且可以通过过滤器处理它
  • filter_input_array() - 获取一系列外部变量，并且可以通过过滤器处理它们
  • Types of filters
  • callback 类型的信息

filter_var_array
Function Handling
Filter 函数


Function Handling

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Function handling 函数
    • call_user_func_array — 调用回调函数，并把一个数组参数作为回调函数的参数
    • call_user_func — 把第一个参数作为回调函数调用
    • create_function — Create an anonymous (lambda-style) function
    • forward_static_call_array — Call a static method and pass the arguments as array
    • forward_static_call — Call a static method
    • func_get_arg — 返回参数列表的某一项
    • func_get_args — 返回一个包含函数参数列表的数组
    • func_num_args — Returns the number of arguments passed to the function
    • function_exists — 如果给定的函数已经被定义就返回 TRUE
    • get_defined_functions — Returns an array of all defined functions
    • register_shutdown_function — Register a function for execution on shutdown
    • register_tick_function — Register a function for execution on each tick
    • unregister_tick_function — De-register a function for execution on each tick
filter_var
简介
变量与类型相关扩展


简介

These functions all handle various operations involved in working with functions.

Function Handling
安装／配置
Function Handling


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Function Handling


预定义常量

此扩展没有定义常量。

资源类型
Function handling 函数
Function Handling


Function handling 函数

Table of Contents

  • call_user_func_array — 调用回调函数，并把一个数组参数作为回调函数的参数
  • call_user_func — 把第一个参数作为回调函数调用
  • create_function — Create an anonymous (lambda-style) function
  • forward_static_call_array — Call a static method and pass the arguments as array
  • forward_static_call — Call a static method
  • func_get_arg — 返回参数列表的某一项
  • func_get_args — 返回一个包含函数参数列表的数组
  • func_num_args — Returns the number of arguments passed to the function
  • function_exists — 如果给定的函数已经被定义就返回 TRUE
  • get_defined_functions — Returns an array of all defined functions
  • register_shutdown_function — Register a function for execution on shutdown
  • register_tick_function — Register a function for execution on each tick
  • unregister_tick_function — De-register a function for execution on each tick
预定义常量
call_user_func_array
Function Handling


调用回调函数，并把一个数组参数作为回调函数的参数

Function handling 函数
call_user_func
Function handling 函数
PHP Manual

call_user_func_array

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

call_user_func_array — 调用回调函数，并把一个数组参数作为回调函数的参数

说明

mixed call_user_func_array ( callable $callback , array $param_arr )

把第一个参数作为回调函数（callback）调用，把参数数组作（param_arr）为回调函数的的参数传入。

参数

callback

被调用的回调函数。

param_arr

要被传入回调函数的数组，这个数组得是索引数组。

返回值

返回回调函数的结果。如果出错的话就返回FALSE

更新日志

版本 | 说明
5.3.0 | 对面向对象里面的关键字的解析有所增强。在此之前，使用双引号来来连接一个类和里面的一个方法，把之作为参数来作为回调函数的会，将会发出一个E_STRICT的警告，因为这个传入的参数被视为静态方法。

范例

Example #1 call_user_func_array()例子

<?php
function foobar($arg, $arg2) {
    echo __FUNCTION__, " got $arg and $arg2\n";
}
class foo {
    function bar($arg, $arg2) {
        echo __METHOD__, " got $arg and $arg2\n";
    }
}

// Call the foobar() function with 2 arguments
call_user_func_array("foobar", array("one", "two"));

// Call the $foo->bar() method with 2 arguments
$foo = new foo;
call_user_func_array(array($foo, "bar"), array("three", "four"));
?>

以上例程的输出类似于：

foobar got one and two
foo::bar got three and four

Example #2 call_user_func_array()使用命名空间的情况

<?php

namespace Foobar;

class Foo {
    static public function test($name) {
        print "Hello {$name}!\n";
    }
}

// As of PHP 5.3.0
call_user_func_array(__NAMESPACE__ .'\Foo::test', array('Hannes'));

// As of PHP 5.3.0
call_user_func_array(array(__NAMESPACE__ .'\Foo', 'test'), array('Philip'));

?>

以上例程的输出类似于：

Hello Hannes!
Hello Philip!

Example #3 把完整的函数作为回调传入call_user_func_array()

<?php

$func = function($arg1, $arg2) {
    return $arg1 * $arg2;
};

var_dump(call_user_func_array($func, array(2, 4))); /* As of PHP 5.3.0 */

?>

以上例程会输出：

int(8)

注释

Note:

PHP 5.4之前，如果param_arr里面的参数是引用传值，那么不管原函数默认的各个参数是不是引用传值，都会以引用方式传入到回调函数。虽然以引用传值这种方式来传递参数给回调函数，不会发出不支持的警告，但是不管怎么说，这样做还是不被支持的。并且在PHP 5.4里面被去掉了。而且，这也不适用于内部函数，for which the function signature is honored。如果回调函数默认设置需要接受的参数是引用传递的时候，按值传递，结果将会输出一个警告。call_user_func() 将会返回 FALSE（there is, however, an exception for passed values with reference count = 1, such as in literals, as these can be turned into references without ill effects — but also without writes to that value having any effect —; do not rely in this behavior, though, as the reference count is an implementation detail and the soundness of this behavior is questionable）。

Note:

在函数中注册有多个回调内容时(如使用 call_user_func() 与 call_user_func_array())，如在前一个回调中有未捕获的异常，其后的将不再被调用。

参见

  • call_user_func() - 把第一个参数作为回调函数调用
  • callback 类型的信息
  • ReflectionFunction::invokeArgs() - Invokes function args
  • ReflectionMethod::invokeArgs() - 带参数执行

Function handling 函数
call_user_func
Function handling 函数


把第一个参数作为回调函数调用

call_user_func_array
create_function
Function handling 函数
PHP Manual

call_user_func

(PHP 4, PHP 5, PHP 7)

call_user_func — 把第一个参数作为回调函数调用

说明

mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )

第一个参数 callback 是被调用的回调函数，其余参数是回调函数的参数。

参数

callback

将被调用的回调函数（callable）。

parameter

0个或以上的参数，被传入回调函数。

Note:

请注意，传入call_user_func()的参数不能为引用传递。

Example #1 call_user_func() 的参考例子

<?php
error_reporting(E_ALL);
function increment(&$var)
{
    $var++;
}

$a = 0;
call_user_func('increment', $a);
echo $a."\n";

call_user_func_array('increment', array(&$a)); // You can use this instead before PHP 5.3
echo $a."\n";
?>

以上例程会输出：

0
1

返回值

返回回调函数的返回值，如果错误则返回FALSE。

更新日志

版本 | 说明
5.3.0 | 对面向对象里面的关键字的解析有所增强。在此之前，使用双引号来来连接一个类和里面的一个方法，把之作为参数来作为回调函数的会，将会发出一个E_STRICT的警告，因为这个传入的参数被视为静态方法。

范例

Example #2 call_user_func() 的例子

<?php
function barber($type)
{
    echo "You wanted a $type haircut, no problem\n";
}
call_user_func('barber', "mushroom");
call_user_func('barber', "shave");
?>

以上例程会输出：

You wanted a mushroom haircut, no problem
You wanted a shave haircut, no problem

Example #3 call_user_func() 命名空间的使用

<?php

namespace Foobar;

class Foo {
    static public function test() {
        print "Hello world!\n";
    }
}

call_user_func(__NAMESPACE__ .'\Foo::test'); // As of PHP 5.3.0
call_user_func(array(__NAMESPACE__ .'\Foo', 'test')); // As of PHP 5.3.0

?>

以上例程会输出：

Hello world!
Hello world!

Example #4 用call_user_func()来调用一个类里面的方法

<?php

class myclass {
    static function say_hello()
    {
        echo "Hello!\n";
    }
}

$classname = "myclass";

call_user_func(array($classname, 'say_hello'));
call_user_func($classname .'::say_hello'); // As of 5.2.3

$myobject = new myclass();

call_user_func(array($myobject, 'say_hello'));

?>

以上例程会输出：

Hello!
Hello!
Hello!

Example #5 把完整的函数作为回调传入call_user_func()

<?php
call_user_func(function($arg) { print "[$arg]\n"; }, 'test'); /* As of PHP 5.3.0 */
?>

以上例程会输出：

[test]

注释

Note:

在函数中注册有多个回调内容时(如使用 call_user_func() 与 call_user_func_array())，如在前一个回调中有未捕获的异常，其后的将不再被调用。

参见

  • call_user_func_array() - 调用回调函数，并把一个数组参数作为回调函数的参数
  • is_callable() - 检测参数是否为合法的可调用结构
  • callback 类型的信息
  • ReflectionFunction::invoke() - Invokes function
  • ReflectionMethod::invoke() - Invoke

call_user_func_array
create_function
Function handling 函数


Create an anonymous (lambda-style) function

call_user_func
forward_static_call_array
Function handling 函数
PHP Manual

create_function

(PHP 4 >= 4.0.1, PHP 5, PHP 7)

create_function — Create an anonymous (lambda-style) function

说明

string create_function ( string $args , string $code )

Creates an anonymous function from the parameters passed, and returns a unique name for it.

Caution

This function internally performs an eval() and as such has the same security issues as eval(). Additionally it has bad performance and memory usage characteristics.

If you are using PHP 5.3.0 or newer a native anonymous function should be used instead.

参数

Usually these parameters will be passed as single quote delimited strings. The reason for using single quoted strings, is to protect the variable names from parsing, otherwise, if you use double quotes there will be a need to escape the variable names, e.g. \$avar.

args

The function arguments.

code

The function code.

返回值

Returns a unique function name as a string, or FALSE on error.

范例

Example #1 Creating an anonymous function with create_function()

You can use this function, to (for example) create a function from information gathered at run time:

<?php
$newfunc = create_function('$a,$b', 'return "ln($a) + ln($b) = " . log($a * $b);');
echo "New anonymous function: $newfunc\n";
echo $newfunc(2, M_E) . "\n";
// outputs
// New anonymous function: lambda_1
// ln(2) + ln(2.718281828459) = 1.6931471805599
?>

Or, perhaps to have general handler function that can apply a set of operations to a list of parameters:

Example #2 Making a general processing function with create_function()

<?php
function process($var1, $var2, $farr)
{
    foreach ($farr as $f) {
        echo $f($var1, $var2) . "\n";
    }
}

// create a bunch of math functions
$f1 = 'if ($a >=0) {return "b*a^2 = ".$b*sqrt($a);} else {return false;}';
$f2 = "return \"min(b^2+a, a^2,b) = \".min(\$a*\$a+\$b,\$b*\$b+\$a);";
$f3 = 'if ($a > 0 && $b != 0) {return "ln(a)/b = ".log($a)/$b; } else { return false; }';
$farr = array(
    create_function('$x,$y', 'return "some trig: ".(sin($x) + $x*cos($y));'),
    create_function('$x,$y', 'return "a hypotenuse: ".sqrt($x*$x + $y*$y);'),
    create_function('$a,$b', $f1),
    create_function('$a,$b', $f2),
    create_function('$a,$b', $f3)
    );

echo "\nUsing the first array of anonymous functions\n";
echo "parameters: 2.3445, M_PI\n";
process(2.3445, M_PI, $farr);

// now make a bunch of string processing functions
$garr = array(
    create_function('$b,$a', 'if (strncmp($a, $b, 3) == 0) return "** \"$a\" '.
    'and \"$b\"\n** Look the same to me! (looking at the first 3 chars)";'),
    create_function('$a,$b', '; return "CRCs: " . crc32($a) . ", ".crc32($b);'),
    create_function('$a,$b', '; return "similar(a,b) = " . similar_text($a, $b, &$p) . "($p%)";')
    );
echo "\nUsing the second array of anonymous functions\n";
process("Twas brilling and the slithy toves", "Twas the night", $garr);
?>

以上例程会输出：

Using the first array of anonymous functions
parameters: 2.3445, M_PI
some trig: -1.6291725057799
a hypotenuse: 3.9199852871011
b*a^2 = 4.8103313314525
min(b^2+a, a^2,b) = 8.6382729035898
ln(a)/b = 0.27122299212594

Using the second array of anonymous functions
** "Twas the night" and "Twas brilling and the slithy toves"
** Look the same to me! (looking at the first 3 chars)
CRCs: -725381282, 342550513
similar(a,b) = 11(45.833333333333%)

But perhaps the most common use for of lambda-style (anonymous) functions is to create callback functions, for example when using array_walk() or usort()

Example #3 Using anonymous functions as callback functions

<?php
$av = array("the ", "a ", "that ", "this ");
array_walk($av, create_function('&$v,$k', '$v = $v . "mango";'));
print_r($av);
?>

以上例程会输出：

Array
(
  [0] => the mango
  [1] => a mango
  [2] => that mango
  [3] => this mango
)

an array of strings ordered from shorter to longer

<?php

$sv = array("small", "larger", "a big string", "it is a string thing");
print_r($sv);

?>

以上例程会输出：

Array
(
  [0] => small
  [1] => larger
  [2] => a big string
  [3] => it is a string thing
)

sort it from longer to shorter

<?php

usort($sv, create_function('$a,$b','return strlen($b) - strlen($a);'));
print_r($sv);

?>

以上例程会输出：

Array
(
  [0] => it is a string thing
  [1] => a big string
  [2] => larger
  [3] => small
)

参见

  • Anonymous functions

call_user_func
forward_static_call_array
Function handling 函数


Call a static method and pass the arguments as array

create_function
forward_static_call
Function handling 函数
PHP Manual

forward_static_call_array

(PHP 5 >= 5.3.0, PHP 7)

forward_static_call_array — Call a static method and pass the arguments as array

说明

mixed forward_static_call_array ( callable $function , array $parameters )

Calls a user defined function or method given by the function parameter. This function must be called within a method context, it can't be used outside a class. It uses the late static binding. All arguments of the forwarded method are passed as values, and as an array, similarly to call_user_func_array().

参数

function

The function or method to be called. This parameter may be an array, with the name of the class, and the method, or a string, with a function name.

parameter

One parameter, gathering all the method parameter in one array.

Note:

Note that the parameters for forward_static_call_array() are not passed by reference.

返回值

Returns the function result, or FALSE on error.

范例

Example #1 forward_static_call_array() example

<?php

class A
{
    const NAME = 'A';
    public static function test() {
        $args = func_get_args();
        echo static::NAME, " ".join(',', $args)." \n";
    }
}

class B extends A
{
    const NAME = 'B';

    public static function test() {
        echo self::NAME, "\n";
        forward_static_call_array(array('A', 'test'), array('more', 'args'));
        forward_static_call_array( 'test', array('other', 'args'));
    }
}

B::test('foo');

function test() {
        $args = func_get_args();
        echo "C ".join(',', $args)." \n";
    }

?>

以上例程会输出：

B
B more,args
C other,args

参见

  • forward_static_call() - Call a static method
  • call_user_func() - 把第一个参数作为回调函数调用
  • call_user_func_array() - 调用回调函数，并把一个数组参数作为回调函数的参数
  • is_callable() - 检测参数是否为合法的可调用结构
  • callback 类型的信息

create_function
forward_static_call
Function handling 函数


Call a static method

forward_static_call_array
func_get_arg
Function handling 函数
PHP Manual

forward_static_call

(PHP 5 >= 5.3.0, PHP 7)

forward_static_call — Call a static method

说明

mixed forward_static_call ( callable $function [, mixed $parameter [, mixed $... ]] )

Calls a user defined function or method given by the function parameter, with the following arguments. This function must be called within a method context, it can't be used outside a class. It uses the late static binding.

参数

function

The function or method to be called. This parameter may be an array, with the name of the class, and the method, or a string, with a function name.

parameter

Zero or more parameters to be passed to the function.

返回值

Returns the function result, or FALSE on error.

范例

Example #1 forward_static_call() example

<?php

class A
{
    const NAME = 'A';
    public static function test() {
        $args = func_get_args();
        echo static::NAME, " ".join(',', $args)." \n";
    }
}

class B extends A
{
    const NAME = 'B';

    public static function test() {
        echo self::NAME, "\n";
        forward_static_call(array('A', 'test'), 'more', 'args');
        forward_static_call( 'test', 'other', 'args');
    }
}

B::test('foo');

function test() {
        $args = func_get_args();
        echo "C ".join(',', $args)." \n";
    }

?>

以上例程会输出：

B
B more,args
C other,args

参见

  • forward_static_call_array() - Call a static method and pass the arguments as array
  • call_user_func_array() - 调用回调函数，并把一个数组参数作为回调函数的参数
  • call_user_func() - 把第一个参数作为回调函数调用
  • is_callable() - 检测参数是否为合法的可调用结构
  • callback 类型的信息

forward_static_call_array
func_get_arg
Function handling 函数


返回参数列表的某一项

forward_static_call
func_get_args
Function handling 函数
PHP Manual

func_get_arg

(PHP 4, PHP 5, PHP 7)

func_get_arg — 返回参数列表的某一项

说明

mixed func_get_arg ( int $arg_num )

从用户自定义函数的参数列表中获取某个指定的参数。

该函数可以配合 func_get_args() 和 func_num_args() 一起使用，从而使得用户自定义函数可以接受自定义个数的参数列表。

参数

arg_num

参数的偏移量。函数的参数是从0开始计数的。

返回值

返回指定的参数，错误则返回 FALSE 。

更新日志

版本 | 说明
5.3.0 | 该函数可以在参数列表中使用。
5.3.0 | If this function is called from the outermost scope of a file which has been included by calling include or require from within a function in the calling file, it now generates a warning and returns FALSE. （不知道如何翻译跟好，直接参考例2即可明白）

错误／异常

当在自定义函数的外面调用的该函数的时候会发出一个警告， 或者是当 arg_num 比实际传入的参数的数目大的时候也会发出一个警告。

范例

Example #1 func_get_arg() 例子

<?php
function foo()
{
     $numargs = func_num_args();
     echo "Number of arguments: $numargs<br />\n";
     if ($numargs >= 2) {
         echo "Second argument is: " . func_get_arg(1) . "<br />\n";
     }
}

foo (1, 2, 3);
?>

Example #2 func_get_arg() PHP 5.3 前后对比的例子

test.php
<?php
function foo() {
    include './fga.inc';
}

foo('First arg', 'Second arg');
?>

fga.inc
<?php

$arg = func_get_arg(1);
var_export($arg);

?>

PHP 5.3 版本之前的输出：

'Second arg'

PHP 5.3 和之后的版本的输出:

Warning: func_get_arg():  Called from the global scope - no function
context in /home/torben/Desktop/code/ml/fga.inc on line 3
false

Example #3 func_get_arg() example of byref and byval arguments

<?php
function byVal($arg) {
    echo 'As passed     : ', var_export(func_get_arg(0)), PHP_EOL;
    $arg = 'baz';
    echo 'After change  : ', var_export(func_get_arg(0)), PHP_EOL;
}

function byRef(&$arg) {
    echo 'As passed     : ', var_export(func_get_arg(0)), PHP_EOL;
    $arg = 'baz';
    echo 'After change  : ', var_export(func_get_arg(0)), PHP_EOL;
}

$arg = 'bar';
byVal($arg);
byRef($arg);
?>

以上例程会输出：

As passed : 'bar'
After change : 'bar'
As passed : 'bar'
After change : 'baz'

注释

Note:

因为函数依赖于当前作用域以确定参数的细节，所以在 5.3.0 以前的版本中不能用作函数的参数。如必须传递此值时，可将结果赋与一个变量，然后用此变量进行传递。

Note:

如果参数以引用方式传递，函数对该参数的任何改变将在函数返回后保留。

Note: This function returns a copy of the passed arguments only, and does not account for default (non-passed) arguments.

参见

  • func_get_args() - 返回一个包含函数参数列表的数组
  • func_num_args() - Returns the number of arguments passed to the function

forward_static_call
func_get_args
Function handling 函数


返回一个包含函数参数列表的数组

func_get_arg
func_num_args
Function handling 函数
PHP Manual

func_get_args

(PHP 4, PHP 5, PHP 7)

func_get_args — 返回一个包含函数参数列表的数组

说明

array func_get_args ( void )

获取函数参数列表的数组。

该函数可以配合 func_get_arg() 和 func_num_args() 一起使用，从而使得用户自定义函数可以接受自定义个数的参数列表。

返回值

返回一个数组，其中每个元素都是目前用户自定义函数的参数列表的相应元素的副本。

更新日志

版本 | 说明
5.3.0 | 该函数可以在参数列表中使用。
5.3.0 | If this function is called from the outermost scope of a file which has been included by calling include or require from within a function in the calling file, it now generates a warning and returns FALSE. （不知道如何翻译跟好，直接参考例2即可明白）

错误／异常

在用户自定义函数外调用则会出现错误警告。

范例

Example #1 func_get_args() 例子

<?php
function foo()
{
    $numargs = func_num_args();
    echo "Number of arguments: $numargs<br />\n";
    if ($numargs >= 2) {
        echo "Second argument is: " . func_get_arg(1) . "<br />\n";
    }
    $arg_list = func_get_args();
    for ($i = 0; $i < $numargs; $i++) {
        echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
    }
}

foo(1, 2, 3);
?>

以上例程会输出：

Number of arguments: 3<br />
Second argument is: 2<br />
Argument 0 is: 1<br />
Argument 1 is: 2<br />
Argument 2 is: 3<br />

Example #2 PHP 5.3 前后使用 func_get_args() 在的对比

test.php
<?php
function foo() {
    include './fga.inc';
}

foo('First arg', 'Second arg');
?>

fga.inc
<?php

$args = func_get_args();
var_export($args);

?>

PHP 5.3 版本之前的输出：

array (
  0 => 'First arg',
  1 => 'Second arg',
)

PHP 5.3 和之后的版本的输出:

Warning: func_get_args():  Called from the global scope - no function
context in /home/torben/Desktop/code/ml/fga.inc on line 3
false

Example #3 func_get_args() example of byref and byval arguments

<?php
function byVal($arg) {
    echo 'As passed     : ', var_export(func_get_args()), PHP_EOL;
    $arg = 'baz';
    echo 'After change  : ', var_export(func_get_args()), PHP_EOL;
}

function byRef(&$arg) {
    echo 'As passed     : ', var_export(func_get_args()), PHP_EOL;
    $arg = 'baz';
    echo 'After change  : ', var_export(func_get_args()), PHP_EOL;
}

$arg = 'bar';
byVal($arg);
byRef($arg);
?>

以上例程会输出：

As passed : array (
0 => 'bar',
)
After change : array (
0 => 'bar',
)
As passed : array (
0 => 'bar',
)
After change : array (
0 => 'baz',
)

注释

Note:

因为函数依赖于当前作用域以确定参数的细节，所以在 5.3.0 以前的版本中不能用作函数的参数。如必须传递此值时，可将结果赋与一个变量，然后用此变量进行传递。

Note:

如果参数以引用方式传递，函数对该参数的任何改变将在函数返回后保留。

Note: 该函数仅仅是返回传递参数的一个副本，并且不包含没有传入的默认参数。

参见

  • func_get_arg() - 返回参数列表的某一项
  • func_num_args() - Returns the number of arguments passed to the function
  • ReflectionFunctionAbstract::getParameters() - 获取参数

func_get_arg
func_num_args
Function handling 函数


Returns the number of arguments passed to the function

func_get_args
function_exists
Function handling 函数
PHP Manual

func_num_args

(PHP 4, PHP 5, PHP 7)

func_num_args — Returns the number of arguments passed to the function

说明

int func_num_args ( void )

Gets the number of arguments passed to the function.

This function may be used in conjunction with func_get_arg() and func_get_args() to allow user-defined functions to accept variable-length argument lists.

返回值

Returns the number of arguments passed into the current user-defined function.

更新日志

版本 | 说明
5.3.0 | This function can now be used in parameter lists.
5.3.0 | If this function is called from the outermost scope of a file which has been included by calling include or require from within a function in the calling file, it now generates a warning and returns -1.

错误／异常

Generates a warning if called from outside of a user-defined function.

范例

Example #1 func_num_args() example

<?php
function foo()
{
    $numargs = func_num_args();
    echo "Number of arguments: $numargs\n";
}

foo(1, 2, 3);
?>

以上例程会输出：

Number of arguments: 3

Example #2 func_num_args() example before and after PHP 5.3

test.php
<?php
function foo() {
    include './fna.php';
}

foo('First arg', 'Second arg');
?>

fna.php
<?php

$num_args = func_num_args();
var_export($num_args);

?>

Output previous to PHP 5.3:

2

Output in PHP 5.3 and later will be something similar to:

Warning: func_num_args():  Called from the global scope - no function
context in /home/torben/Desktop/code/ml/fna.php on line 3
-1

注释

Note:

因为函数依赖于当前作用域以确定参数的细节，所以在 5.3.0 以前的版本中不能用作函数的参数。如必须传递此值时，可将结果赋与一个变量，然后用此变量进行传递。

参见

  • func_get_arg() - 返回参数列表的某一项
  • func_get_args() - 返回一个包含函数参数列表的数组
  • ReflectionFunctionAbstract::getNumberOfParameters() - 获取参数数目

func_get_args
function_exists
Function handling 函数


如果给定的函数已经被定义就返回 TRUE

func_num_args
get_defined_functions
Function handling 函数
PHP Manual

function_exists

(PHP 4, PHP 5, PHP 7)

function_exists — 如果给定的函数已经被定义就返回 TRUE

说明

bool function_exists ( string $function_name )

在已经定义的函数列表（包括系统自带的函数和用户自定义的函数）中查找 function_name。

参数

function_name

函数名，必须为一个字符串。

返回值

如果 function_name 存在且的确是一个函数就返回 TRUE ，反之则返回 FALSE 。

Note:

对于语法结构的判断，例如 include_once 和 echo 将会返回 FALSE 。

范例

Example #1 function_exists() 的例子

<?php
if (function_exists('imap_open')) {
    echo "IMAP functions are available.<br />\n";
} else {
    echo "IMAP functions are not available.<br />\n";
}
?>

注释

Note:

当本配置或者编译或编译选项禁用某函数时，该函数名也可能存在（ image 就是一个现成的例子）

参见

  • method_exists() - 检查类的方法是否存在
  • is_callable() - 检测参数是否为合法的可调用结构
  • get_defined_functions() - Returns an array of all defined functions
  • class_exists() - 检查类是否已定义
  • extension_loaded() - 检查一个扩展是否已经加载

func_num_args
get_defined_functions
Function handling 函数


Returns an array of all defined functions

function_exists
register_shutdown_function
Function handling 函数
PHP Manual

get_defined_functions

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

get_defined_functions — Returns an array of all defined functions

说明

array get_defined_functions ( void )

Gets an array of all defined functions.

返回值

Returns a multidimensional array containing a list of all defined functions, both built-in (internal) and user-defined. The internal functions will be accessible via $arr["internal"], and the user defined ones using $arr["user"] (see example below).

范例

Example #1 get_defined_functions() example

<?php
function myrow($id, $data)
{
    return "<tr><th>$id</th><td>$data</td></tr>\n";
}

$arr = get_defined_functions();

print_r($arr);
?>

以上例程的输出类似于：

Array
(
    [internal] => Array
        (
            [0] => zend_version
            [1] => func_num_args
            [2] => func_get_arg
            [3] => func_get_args
            [4] => strlen
            [5] => strcmp
            [6] => strncmp
            ...
            [750] => bcscale
            [751] => bccomp
        )

    [user] => Array
        (
            [0] => myrow
        )

)

参见

  • function_exists() - 如果给定的函数已经被定义就返回 TRUE
  • get_defined_vars() - 返回由所有已定义变量所组成的数组
  • get_defined_constants() - 返回所有常量的关联数组，键是常量名，值是常量值
  • get_declared_classes() - 返回由已定义类的名字所组成的数组

function_exists
register_shutdown_function
Function handling 函数


Register a function for execution on shutdown

get_defined_functions
register_tick_function
Function handling 函数
PHP Manual

register_shutdown_function

(PHP 4, PHP 5, PHP 7)

register_shutdown_function — Register a function for execution on shutdown

说明

void register_shutdown_function ( callable $callback [, mixed $parameter [, mixed $... ]] )

Registers a callback to be executed after script execution finishes or exit() is called.

Multiple calls to register_shutdown_function() can be made, and each will be called in the same order as they were registered. If you call exit() within one registered shutdown function, processing will stop completely and no other registered shutdown functions will be called.

参数

callback

The shutdown callback to register.

The shutdown callbacks are executed as the part of the request, so it's possible to send output from them and access output buffers.

parameter

It is possible to pass parameters to the shutdown function by passing additional parameters.

...

返回值

没有返回值。

错误／异常

If the passed callback is not callable a E_WARNING level error will be generated.

更新日志

版本 | 说明
4.1.0 | The shutdown functions are now called as a part of the request. In earlier versions under Apache, the registered shutdown functions were called after the request has been completed (including sending any output buffers), so it was not possible to send output to the browser using echo or print, or retrieve the contents of any output buffers using ob_get_contents(). Headers were also always already sent.

范例

Example #1 register_shutdown_function() example

<?php
function shutdown()
{
    // This is our shutdown function, in
    // here we can do any last operations
    // before the script is complete.

    echo 'Script executed with success', PHP_EOL;
}

register_shutdown_function('shutdown');
?>

注释

Note:

Working directory of the script can change inside the shutdown function under some web servers, e.g. Apache.

Note:

Shutdown functions will not be executed if the process is killed with a SIGTERM or SIGKILL signal. While you cannot intercept a SIGKILL, you can use pcntl_signal() to install a handler for a SIGTERM which uses exit() to end cleanly.

参见

  • auto_append_file
  • exit() - 输出一个消息并且退出当前脚本
  • The section on connection handling

get_defined_functions
register_tick_function
Function handling 函数


Register a function for execution on each tick

register_shutdown_function
unregister_tick_function
Function handling 函数
PHP Manual

register_tick_function

(PHP 4 >= 4.0.3, PHP 5, PHP 7)

register_tick_function — Register a function for execution on each tick

说明

bool register_tick_function ( callable $function [, mixed $arg [, mixed $... ]] )

Registers the given function to be executed when a tick is called.

参数

function

The function name as a string, or an array consisting of an object and a method.

arg

...

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 register_tick_function() example

<?php
declare(ticks=1);

// using a function as the callback
register_tick_function('my_function', true);

// using an object->method
$object = new my_class();
register_tick_function(array(&$object, 'my_method'), true);
?>

更新日志

版本 | 说明
5.3.0 | Ticks are now supported on threaded web server modules.

注释

Warning

register_tick_function() should not be used with threaded web server modules with PHP 5.2 or lower.

参见

  • declare
  • unregister_tick_function() - De-register a function for execution on each tick

register_shutdown_function
unregister_tick_function
Function handling 函数


De-register a function for execution on each tick

register_tick_function
Quickhash
Function handling 函数
PHP Manual

unregister_tick_function

(PHP 4 >= 4.0.3, PHP 5, PHP 7)

unregister_tick_function — De-register a function for execution on each tick

说明

void unregister_tick_function ( string $function_name )

De-registers the function named by function_name so it is no longer executed when a tick is called.

参数

function_name

The function name, as a string.

返回值

没有返回值。

参见

  • register_tick_function() - Register a function for execution on each tick

register_tick_function
Quickhash
Function handling 函数


Quickhash

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
  • 预定义常量
  • 范例
  • QuickHashIntSet — The QuickHashIntSet class
    • QuickHashIntSet::add — This method adds a new entry to the set
    • QuickHashIntSet::__construct — Creates a new QuickHashIntSet object
    • QuickHashIntSet::delete — This method deletes an entry from the set
    • QuickHashIntSet::exists — This method checks whether a key is part of the set
    • QuickHashIntSet::getSize — Returns the number of elements in the set
    • QuickHashIntSet::loadFromFile — This factory method creates a set from a file
    • QuickHashIntSet::loadFromString — This factory method creates a set from a string
    • QuickHashIntSet::saveToFile — This method stores an in-memory set to disk
    • QuickHashIntSet::saveToString — This method returns a serialized version of the set
  • QuickHashIntHash — The QuickHashIntHash class
    • QuickHashIntHash::add — This method adds a new entry to the hash
    • QuickHashIntHash::__construct — Creates a new QuickHashIntHash object
    • QuickHashIntHash::delete — This method deletes am entry from the hash
    • QuickHashIntHash::exists — This method checks whether a key is part of the hash
    • QuickHashIntHash::get — This method retrieves a value from the hash by its key
    • QuickHashIntHash::getSize — Returns the number of elements in the hash
    • QuickHashIntHash::loadFromFile — This factory method creates a hash from a file
    • QuickHashIntHash::loadFromString — This factory method creates a hash from a string
    • QuickHashIntHash::saveToFile — This method stores an in-memory hash to disk
    • QuickHashIntHash::saveToString — This method returns a serialized version of the hash
    • QuickHashIntHash::set — This method updates an entry in the hash with a new value, or adds a new one if the entry doesn't exist
    • QuickHashIntHash::update — This method updates an entry in the hash with a new value
  • QuickHashStringIntHash — The QuickHashStringIntHash class
    • QuickHashStringIntHash::add — This method adds a new entry to the hash
    • QuickHashStringIntHash::__construct — Creates a new QuickHashStringIntHash object
    • QuickHashStringIntHash::delete — This method deletes am entry from the hash
    • QuickHashStringIntHash::exists — This method checks whether a key is part of the hash
    • QuickHashStringIntHash::get — This method retrieves a value from the hash by its key
    • QuickHashStringIntHash::getSize — Returns the number of elements in the hash
    • QuickHashStringIntHash::loadFromFile — This factory method creates a hash from a file
    • QuickHashStringIntHash::loadFromString — This factory method creates a hash from a string
    • QuickHashStringIntHash::saveToFile — This method stores an in-memory hash to disk
    • QuickHashStringIntHash::saveToString — This method returns a serialized version of the hash
    • QuickHashStringIntHash::set — This method updates an entry in the hash with a new value, or adds a new one if the entry doesn't exist
    • QuickHashStringIntHash::update — This method updates an entry in the hash with a new value
  • QuickHashIntStringHash — The QuickHashIntStringHash class
    • QuickHashIntStringHash::add — This method adds a new entry to the hash
    • QuickHashIntStringHash::__construct — Creates a new QuickHashIntStringHash object
    • QuickHashIntStringHash::delete — This method deletes am entry from the hash
    • QuickHashIntStringHash::exists — This method checks whether a key is part of the hash
    • QuickHashIntStringHash::get — This method retrieves a value from the hash by its key
    • QuickHashIntStringHash::getSize — Returns the number of elements in the hash
    • QuickHashIntStringHash::loadFromFile — This factory method creates a hash from a file
    • QuickHashIntStringHash::loadFromString — This factory method creates a hash from a string
    • QuickHashIntStringHash::saveToFile — This method stores an in-memory hash to disk
    • QuickHashIntStringHash::saveToString — This method returns a serialized version of the hash
    • QuickHashIntStringHash::set — This method updates an entry in the hash with a new value, or adds a new one if the entry doesn't exist
    • QuickHashIntStringHash::update — This method updates an entry in the hash with a new value
unregister_tick_function
简介
变量与类型相关扩展


简介

The quickhash extension contains a set of specific strongly-typed classes to deal with specific set and hash implementations.

Quickhash
安装／配置
Quickhash


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
简介
需求
Quickhash


需求

This extension requires no additional libraries.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/quickhash

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

运行时配置
范例
Quickhash


范例

Example #1 Quickhash Example

<?php
$set = new QuickHashIntSet( 1024, QuickHashIntSet::CHECK_FOR_DUPES );
$set->add( 1 );
$set->add( 3 );

var_dump( $set->exists( 3 ) );
var_dump( $set->exists( 4 ) );

$set->saveToFile( "/tmp/test-set.set" );

$newSet = QuickHashIntSet::loadFromFile(
    "/tmp/test-set.set"
);

var_dump( $newSet->exists( 3 ) );
var_dump( $newSet->exists( 4 ) );
?>

以上例程的输出类似于：

bool(true)
bool(false)
bool(true)
bool(false)

Example #2 Quickhash ArrayAccess Example

<?php
$hash = new QuickHashIntHash( 64 );

// Adding and updating hash entries.
$hash[3] = 145926;
$hash[3] = 1415926;
$hash[2] = 72;

// Checking if keys exist
var_dump( isset( $hash[3] ) );

// Removing hash entries
unset( $hash[2] );

// Retrieving the value stored for a hash
echo $hash[3], "\n";
?>

以上例程的输出类似于：

bool(true)
1415926

Example #3 Quickhash Iterator Example

<?php
$hash = new QuickHashIntHash( 64 );

// Adding hash entries.
$hash[1] = 145926;
$hash[2] = 1415926;
$hash[3] = 72;
$hash[4] = 712314;
$hash[5] = -4234;

foreach( $hash as $key => $value )
{
    echo $key, ' => ', $value, "\n";
}
?>

以上例程的输出类似于：

5 => -4234
4 => 712314
1 => 145926
2 => 1415926
3 => 72

Example #4 Quickhash String Values Example

<?php
$hash = new QuickHashIntStringHash( 64 );

// Adding hash entries.
$hash[1] = "one million four hundred fifteen thousand nine hundred twenty six";
$hash->add( 2, "one more" );

foreach( $hash as $key => $value )
{
    echo $key, ' => ', $value, "\n";
}
?>

以上例程的输出类似于：

1 => one million four hundred fifteen thousand nine hundred twenty six
2 => one more
预定义常量
QuickHashIntSet
Quickhash


The QuickHashIntSet class

(PECL quickhash >= Unknown)

简介

This class wraps around a set containing integer numbers.

Sets can also be iterated over with foreach as the Iterator interface is implemented as well. The order of which elements are returned in is not guaranteed.

类摘要

QuickHashIntSet {
/* Constants */
const integer CHECK_FOR_DUPES = 1 ;
const integer DO_NOT_USE_ZEND_ALLOC = 2 ;
const integer HASHER_NO_HASH = 256 ;
const integer HASHER_JENKINS1 = 512 ;
const integer HASHER_JENKINS2 = 1024 ;
/* Methods */
public bool add ( int $key )
public __construct ( int $size [, int $options ] )
public bool delete ( int $key )
public bool exists ( int $key )
publicint getSize ( void )
public static QuickHashIntSet loadFromFile ( string $filename [, int $size [, int $options ]] )
public static QuickHashIntSet loadFromString ( string $contents [, int $size [, int $options ]] )
public void saveToFile ( string $filename )
public string saveToString ( void )
}

预定义常量

QuickHashIntSet::CHECK_FOR_DUPES

If enabled, adding duplicate elements to a set (through either add() or loadFromFile()) will result in those elements to be dropped from the set. This will take up extra time, so only used when it is required.

QuickHashIntSet::DO_NOT_USE_ZEND_ALLOC

Disables the use of PHP's internal memory manager for internal set structures. With this option enabled, internal allocations will not count towards the memory_limit settings.

QuickHashIntSet::HASHER_NO_HASH

Selects to not use a hashing function, but merely use a modulo to find the bucket list index. This is not faster than normal hashing, and gives more collisions.

QuickHashIntSet::HASHER_JENKINS1

This is the default hashing function to turn the integer hashes into bucket list indexes.

QuickHashIntSet::HASHER_JENKINS2

Selects a variant hashing algorithm.

Table of Contents

  • QuickHashIntSet::add — This method adds a new entry to the set
  • QuickHashIntSet::__construct — Creates a new QuickHashIntSet object
  • QuickHashIntSet::delete — This method deletes an entry from the set
  • QuickHashIntSet::exists — This method checks whether a key is part of the set
  • QuickHashIntSet::getSize — Returns the number of elements in the set
  • QuickHashIntSet::loadFromFile — This factory method creates a set from a file
  • QuickHashIntSet::loadFromString — This factory method creates a set from a string
  • QuickHashIntSet::saveToFile — This method stores an in-memory set to disk
  • QuickHashIntSet::saveToString — This method returns a serialized version of the set
范例
QuickHashIntSet::add
Quickhash


This method adds a new entry to the set

QuickHashIntSet
QuickHashIntSet::__construct
QuickHashIntSet
PHP Manual

QuickHashIntSet::add

(PECL quickhash >= Unknown)

QuickHashIntSet::add — This method adds a new entry to the set

说明

public bool QuickHashIntSet::add ( int $key )

This method adds a new entry to the set, and returns whether the entry was added. Entries are by default always added unless QuickHashIntSet::CHECK_FOR_DUPES has been passed when the set was created.

参数

key

The key of the entry to add.

返回值

TRUE when the entry was added, and FALSE if the entry was not added.

范例

Example #1 QuickHashIntSet::add() example

<?php
echo "without dupe checking\n";
$set = new QuickHashIntSet( 1024 );
var_dump( $set->exists( 4 ) );
var_dump( $set->add( 4 ) );
var_dump( $set->exists( 4 ) );
var_dump( $set->add( 4 ) );

echo "\nwith dupe checking\n";
$set = new QuickHashIntSet( 1024, QuickHashIntSet::CHECK_FOR_DUPES );
var_dump( $set->exists( 4 ) );
var_dump( $set->add( 4 ) );
var_dump( $set->exists( 4 ) );
var_dump( $set->add( 4 ) );
?>

以上例程的输出类似于：

without dupe checking
bool(false)
bool(true)
bool(true)
bool(true)

with dupe checking
bool(false)
bool(true)
bool(true)
bool(false)

QuickHashIntSet
QuickHashIntSet::__construct
QuickHashIntSet


Creates a new QuickHashIntSet object

QuickHashIntSet::add
QuickHashIntSet::delete
QuickHashIntSet
PHP Manual

QuickHashIntSet::__construct

(PECL quickhash >= Unknown)

QuickHashIntSet::__construct — Creates a new QuickHashIntSet object

说明

public QuickHashIntSet::__construct ( int $size [, int $options ] )

This constructor creates a new QuickHashIntSet. The size is the amount of bucket lists to create. The more lists there are, the less collisions you will have. Options are also supported.

参数

size

The amount of bucket lists to configure. The number you pass in will be automatically rounded up to the next power of two. It is also automatically limited from 4 to 4194304.

options

The options that you can pass in are: QuickHashIntSet::CHECK_FOR_DUPES, which makes sure no duplicate entries are added to the set; QuickHashIntSet::DO_NOT_USE_ZEND_ALLOC to not use PHP's internal memory manager as well as one of QuickHashIntSet::HASHER_NO_HASH, QuickHashIntSet::HASHER_JENKINS1 or QuickHashIntSet::HASHER_JENKINS2. These last three configure which hashing algorithm to use. All options can be combined using bitmasks.

返回值

Returns a new QuickHashIntSet object.

范例

Example #1 QuickHashIntSet::__construct() example

<?php
var_dump( new QuickHashIntSet( 1024 ) );
var_dump( new QuickHashIntSet( 1024, QuickHashIntSet::CHECK_FOR_DUPES ) );
var_dump(
    new QuickHashIntSet(
        1024,
        QuickHashIntSet::DO_NOT_USE_ZEND_ALLOC | QuickHashIntSet::HASHER_JENKINS2
    )
);
?>

QuickHashIntSet::add
QuickHashIntSet::delete
QuickHashIntSet


This method deletes an entry from the set

QuickHashIntSet::__construct
QuickHashIntSet::exists
QuickHashIntSet
PHP Manual

QuickHashIntSet::delete

(PECL quickhash >= Unknown)

QuickHashIntSet::delete — This method deletes an entry from the set

说明

public bool QuickHashIntSet::delete ( int $key )

This method deletes an entry from the set, and returns whether the entry was deleted or not. Associated memory structures will not be freed immediately, but rather when the set itself is freed.

参数

key

The key of the entry to delete.

返回值

TRUE when the entry was deleted, and FALSE if the entry was not deleted.

范例

Example #1 QuickHashIntSet::delete() example

<?php
$set = new QuickHashIntSet( 1024 );
var_dump( $set->exists( 4 ) );
var_dump( $set->add( 4 ) );
var_dump( $set->delete( 4 ) );
var_dump( $set->exists( 4 ) );
var_dump( $set->delete( 4 ) );
?>

以上例程的输出类似于：

bool(false)
bool(true)
bool(true)
bool(false)
bool(false)

QuickHashIntSet::__construct
QuickHashIntSet::exists
QuickHashIntSet


This method checks whether a key is part of the set

QuickHashIntSet::delete
QuickHashIntSet::getSize
QuickHashIntSet
PHP Manual

QuickHashIntSet::exists

(PECL quickhash >= Unknown)

QuickHashIntSet::exists — This method checks whether a key is part of the set

说明

public bool QuickHashIntSet::exists ( int $key )

This method checks whether an entry with the provided key exists in the set.

参数

key

The key of the entry to check for whether it exists in the set.

返回值

Returns TRUE when the entry was found, or FALSE when the entry is not found.

范例

Example #1 QuickHashIntSet::exists() example

<?php
//generate 200000 elements
$array = range( 0, 199999 );
$existingEntries = array_rand( array_flip( $array ), 180000 );
$testForEntries = array_rand( array_flip( $array ), 1000 );
$foundCount = 0;

echo "Creating set: ", microtime( true ), "\n";
$set = new QuickHashIntSet( 100000 );
echo "Adding elements: ", microtime( true ), "\n";
foreach( $existingEntries as $key )
{
     $set->add( $key );
}

echo "Doing 1000 tests: ", microtime( true ), "\n";
foreach( $testForEntries as $key )
{
     $foundCount += $set->exists( $key );
}
echo "Done, $foundCount found: ", microtime( true ), "\n";
?>

以上例程的输出类似于：

Creating set: 1263588703.0748
Adding elements: 1263588703.0757
Doing 1000 tests: 1263588703.7851
Done, 898 found: 1263588703.7897

QuickHashIntSet::delete
QuickHashIntSet::getSize
QuickHashIntSet


Returns the number of elements in the set

QuickHashIntSet::exists
QuickHashIntSet::loadFromFile
QuickHashIntSet
PHP Manual

QuickHashIntSet::getSize

(PECL quickhash >= Unknown)

QuickHashIntSet::getSize — Returns the number of elements in the set

说明

publicint QuickHashIntSet::getSize ( void )

Returns the number of elements in the set.

参数

key

The key of the entry to add.

返回值

The number of elements in the set.

范例

Example #1 QuickHashIntSet::getSize() example

<?php
$set = new QuickHashIntSet( 8 );
var_dump( $set->add( 2 ) );
var_dump( $set->add( 3 ) );
var_dump( $set->getSize() );
?>

以上例程的输出类似于：

bool(true)
bool(true)
int(2)

QuickHashIntSet::exists
QuickHashIntSet::loadFromFile
QuickHashIntSet


This factory method creates a set from a file

QuickHashIntSet::getSize
QuickHashIntSet::loadFromString
QuickHashIntSet
PHP Manual

QuickHashIntSet::loadFromFile

(PECL quickhash >= Unknown)

QuickHashIntSet::loadFromFile — This factory method creates a set from a file

说明

public static QuickHashIntSet QuickHashIntSet::loadFromFile ( string $filename [, int $size [, int $options ]] )

This factory method creates a new set from a definition file on disk. The file format consists of 32 bit signed integers packed together in the Endianness that the system that the code runs on uses.

参数

filename

The filename of the file to read the set from.

size

The amount of bucket lists to configure. The number you pass in will be automatically rounded up to the next power of two. It is also automatically limited from 4 to 4194304.

options

The same options that the class' constructor takes; except that the size option is ignored. It is automatically calculated to be the same as the number of entries in the set, rounded up to the nearest power of two with a maximum limit of 4194304.

返回值

Returns a new QuickHashIntSet.

范例

Example #1 QuickHashIntSet::loadFromFile() example

<?php
$file = dirname( __FILE__ ) . "/simple.set";
$set = QuickHashIntSet::loadFromFile(
    $file,
    QuickHashIntSet::DO_NOT_USE_ZEND_ALLOC
);
foreach( range( 0, 0x0f ) as $key )
{
    printf( "Key %3d (%2x) is %s\n",
        $key, $key,
        $set->exists( $key ) ? 'set' : 'unset'
    );
}
?>

以上例程的输出类似于：

Key   0 ( 0) is unset
Key   1 ( 1) is set
Key   2 ( 2) is set
Key   3 ( 3) is set
Key   4 ( 4) is unset
Key   5 ( 5) is set
Key   6 ( 6) is unset
Key   7 ( 7) is set
Key   8 ( 8) is unset
Key   9 ( 9) is unset
Key  10 ( a) is unset
Key  11 ( b) is set
Key  12 ( c) is unset
Key  13 ( d) is set
Key  14 ( e) is unset
Key  15 ( f) is unset

QuickHashIntSet::getSize
QuickHashIntSet::loadFromString
QuickHashIntSet


This factory method creates a set from a string

QuickHashIntSet::loadFromFile
QuickHashIntSet::saveToFile
QuickHashIntSet
PHP Manual

QuickHashIntSet::loadFromString

(PECL quickhash >= Unknown)

QuickHashIntSet::loadFromString — This factory method creates a set from a string

说明

public static QuickHashIntSet QuickHashIntSet::loadFromString ( string $contents [, int $size [, int $options ]] )

This factory method creates a new set from a definition in a string. The file format consists of 32 bit signed integers packed together in the Endianness that the system that the code runs on uses.

参数

contents

The string containing a serialized format of the set.

size

The amount of bucket lists to configure. The number you pass in will be automatically rounded up to the next power of two. It is also automatically limited from 4 to 4194304.

options

The same options that the class' constructor takes; except that the size option is ignored. It is automatically calculated to be the same as the number of entries in the set, rounded up to the nearest power of two automatically limited from 64 to 4194304.

返回值

Returns a new QuickHashIntSet.

范例

Example #1 QuickHashIntSet::loadFromString() example

<?php
$contents = file_get_contents( dirname( __FILE__ ) . "/simple.set" );
$set = QuickHashIntSet::loadFromString(
    $contents,
    QuickHashIntSet::DO_NOT_USE_ZEND_ALLOC
);
foreach( range( 0, 0x0f ) as $key )
{
    printf( "Key %3d (%2x) is %s\n",
        $key, $key,
        $set->exists( $key ) ? 'set' : 'unset'
    );
}
?>

以上例程的输出类似于：

Key   0 ( 0) is unset
Key   1 ( 1) is set
Key   2 ( 2) is set
Key   3 ( 3) is set
Key   4 ( 4) is unset
Key   5 ( 5) is set
Key   6 ( 6) is unset
Key   7 ( 7) is set
Key   8 ( 8) is unset
Key   9 ( 9) is unset
Key  10 ( a) is unset
Key  11 ( b) is set
Key  12 ( c) is unset
Key  13 ( d) is set
Key  14 ( e) is unset
Key  15 ( f) is unset

QuickHashIntSet::loadFromFile
QuickHashIntSet::saveToFile
QuickHashIntSet


This method stores an in-memory set to disk

QuickHashIntSet::loadFromString
QuickHashIntSet::saveToString
QuickHashIntSet
PHP Manual

QuickHashIntSet::saveToFile

(PECL quickhash >= Unknown)

QuickHashIntSet::saveToFile — This method stores an in-memory set to disk

说明

public void QuickHashIntSet::saveToFile ( string $filename )

This method stores an existing set to a file on disk, in the same format that loadFromFile() can read.

参数

filename

The filename of the file to store the hash in.

返回值

没有返回值。

范例

Example #1 QuickHashIntSet::saveToFile() example

<?php
$set = new QuickHashIntSet( 1024 );
var_dump( $set->exists( 4 ) );
var_dump( $set->add( 4 ) );
var_dump( $set->exists( 4 ) );
var_dump( $set->add( 4 ) );

$set->saveToFile( '/tmp/test.set' );
?>

QuickHashIntSet::loadFromString
QuickHashIntSet::saveToString
QuickHashIntSet


This method returns a serialized version of the set

QuickHashIntSet::saveToFile
QuickHashIntHash
QuickHashIntSet
PHP Manual

QuickHashIntSet::saveToString

(PECL quickhash >= Unknown)

QuickHashIntSet::saveToString — This method returns a serialized version of the set

说明

public string QuickHashIntSet::saveToString ( void )

This method returns a serialized version of the set in the same format that loadFromString() can read.

返回值

This method returns a string containing a serialized format of the set. Each element is stored as a four byte value in the Endianness that the current system uses.

范例

Example #1 QuickHashIntSet::saveToString() example

<?php
$set = new QuickHashIntSet( 1024 );
var_dump( $set->exists( 4 ) );
var_dump( $set->add( 4 ) );
var_dump( $set->exists( 4 ) );
var_dump( $set->add( 4 ) );

var_dump( $set->saveToString() );
?>

QuickHashIntSet::saveToFile
QuickHashIntHash
QuickHashIntSet


The QuickHashIntHash class

(PECL quickhash >= Unknown)

简介

This class wraps around a hash containing integer numbers, where the values are also integer numbers. Hashes are also available as implementation of the ArrayAccess interface.

Hashes can also be iterated over with foreach as the Iterator interface is implemented as well. The order of which elements are returned in is not guaranteed.

类摘要

QuickHashIntHash {
/* Constants */
const integer CHECK_FOR_DUPES = 1 ;
const integer DO_NOT_USE_ZEND_ALLOC = 2 ;
const integer HASHER_NO_HASH = 256 ;
const integer HASHER_JENKINS1 = 512 ;
const integer HASHER_JENKINS2 = 1024 ;
/* Methods */
public bool add ( int $key [, int $value ] )
public __construct ( int $size [, int $options ] )
public bool delete ( int $key )
public bool exists ( int $key )
public int get ( int $key )
public int getSize ( void )
public static QuickHashIntHash loadFromFile ( string $filename [, int $options ] )
public static QuickHashIntHash loadFromString ( string $contents [, int $options ] )
public void saveToFile ( string $filename )
public string saveToString ( void )
public bool set ( int $key , int $value )
public bool update ( int $key , int $value )
}

预定义常量

QuickHashIntHash::CHECK_FOR_DUPES

If enabled, adding duplicate elements to a set (through either add() or loadFromFile()) will result in those elements to be dropped from the set. This will take up extra time, so only used when it is required.

QuickHashIntHash::DO_NOT_USE_ZEND_ALLOC

Disables the use of PHP's internal memory manager for internal set structures. With this option enabled, internal allocations will not count towards the memory_limit settings.

QuickHashIntHash::HASHER_NO_HASH

Selects to not use a hashing function, but merely use a modulo to find the bucket list index. This is not faster than normal hashing, and gives more collisions.

QuickHashIntHash::HASHER_JENKINS1

This is the default hashing function to turn the integer hashes into bucket list indexes.

QuickHashIntHash::HASHER_JENKINS2

Selects a variant hashing algorithm.

Table of Contents

  • QuickHashIntHash::add — This method adds a new entry to the hash
  • QuickHashIntHash::__construct — Creates a new QuickHashIntHash object
  • QuickHashIntHash::delete — This method deletes am entry from the hash
  • QuickHashIntHash::exists — This method checks whether a key is part of the hash
  • QuickHashIntHash::get — This method retrieves a value from the hash by its key
  • QuickHashIntHash::getSize — Returns the number of elements in the hash
  • QuickHashIntHash::loadFromFile — This factory method creates a hash from a file
  • QuickHashIntHash::loadFromString — This factory method creates a hash from a string
  • QuickHashIntHash::saveToFile — This method stores an in-memory hash to disk
  • QuickHashIntHash::saveToString — This method returns a serialized version of the hash
  • QuickHashIntHash::set — This method updates an entry in the hash with a new value, or adds a new one if the entry doesn't exist
  • QuickHashIntHash::update — This method updates an entry in the hash with a new value
QuickHashIntSet::saveToString
QuickHashIntHash::add
Quickhash


This method adds a new entry to the hash

QuickHashIntHash
QuickHashIntHash::__construct
QuickHashIntHash
PHP Manual

QuickHashIntHash::add

(PECL quickhash >= Unknown)

QuickHashIntHash::add — This method adds a new entry to the hash

说明

public bool QuickHashIntHash::add ( int $key [, int $value ] )

This method adds a new entry to the hash, and returns whether the entry was added. Entries are by default always added unless QuickHashIntHash::CHECK_FOR_DUPES has been passed when the hash was created.

参数

key

The key of the entry to add.

value

The optional value of the entry to add. If no value is specified, 1 will be used.

返回值

TRUE when the entry was added, and FALSE if the entry was not added.

范例

Example #1 QuickHashIntHash::add() example

<?php
echo "without dupe checking\n";
$hash = new QuickHashIntHash( 1024 );
var_dump( $hash->exists( 4 ) );
var_dump( $hash->get( 4 ) );
var_dump( $hash->add( 4, 22 ) );
var_dump( $hash->exists( 4 ) );
var_dump( $hash->get( 4 ) );
var_dump( $hash->add( 4, 12 ) );

echo "\nwith dupe checking\n";
$hash = new QuickHashIntHash( 1024, QuickHashIntHash::CHECK_FOR_DUPES );
var_dump( $hash->exists( 4 ) );
var_dump( $hash->get( 4 ) );
var_dump( $hash->add( 4, 78 ) );
var_dump( $hash->exists( 4 ) );
var_dump( $hash->get( 4 ) );
var_dump( $hash->add( 4, 9 ) );

echo "\ndefault value\n";
var_dump( $hash->add( 5 ) );
var_dump( $hash->get( 5 ) );
?>

以上例程的输出类似于：

without dupe checking
bool(false)
bool(false)
bool(true)
bool(true)
int(22)
bool(true)

with dupe checking
bool(false)
bool(false)
bool(true)
bool(true)
int(78)
bool(false)

default value
bool(true)
int(1)

QuickHashIntHash
QuickHashIntHash::__construct
QuickHashIntHash


Creates a new QuickHashIntHash object

QuickHashIntHash::add
QuickHashIntHash::delete
QuickHashIntHash
PHP Manual

QuickHashIntHash::__construct

(PECL quickhash >= Unknown)

QuickHashIntHash::__construct — Creates a new QuickHashIntHash object

说明

public QuickHashIntHash::__construct ( int $size [, int $options ] )

This constructor creates a new QuickHashIntHash. The size is the amount of bucket lists to create. The more lists there are, the less collisions you will have. Options are also supported.

参数

size

The amount of bucket lists to configure. The number you pass in will be automatically rounded up to the next power of two. It is also automatically limited from 64 to 4194304.

options

The options that you can pass in are: QuickHashIntHash::CHECK_FOR_DUPES, which makes sure no duplicate entries are added to the hash; QuickHashIntHash::DO_NOT_USE_ZEND_ALLOC to not use PHP's internal memory manager as well as one of QuickHashIntHash::HASHER_NO_HASH, QuickHashIntHash::HASHER_JENKINS1 or QuickHashIntHash::HASHER_JENKINS2. These last three configure which hashing algorithm to use. All options can be combined using bitmasks.

返回值

Returns a new QuickHashIntHash object.

范例

Example #1 QuickHashIntHash::__construct() example

<?php
var_dump( new QuickHashIntHash( 1024 ) );
var_dump( new QuickHashIntHash( 1024, QuickHashIntHash::CHECK_FOR_DUPES ) );
var_dump(
    new QuickHashIntHash(
        1024,
        QuickHashIntHash::DO_NOT_USE_ZEND_ALLOC | QuickHashIntHash::HASHER_JENKINS2
    )
);
?>

QuickHashIntHash::add
QuickHashIntHash::delete
QuickHashIntHash


This method deletes am entry from the hash

QuickHashIntHash::__construct
QuickHashIntHash::exists
QuickHashIntHash
PHP Manual

QuickHashIntHash::delete

(PECL quickhash >= Unknown)

QuickHashIntHash::delete — This method deletes am entry from the hash

说明

public bool QuickHashIntHash::delete ( int $key )

This method deletes an entry from the hash, and returns whether the entry was deleted or not. Associated memory structures will not be freed immediately, but rather when the hash itself is freed.

Elements can not be deleted when the hash is used in an iterator. The method will not throw an exception, but simply return FALSE like would happen with any other deletion failure.

参数

key

The key of the entry to delete.

返回值

TRUE when the entry was deleted, and FALSE if the entry was not deleted.

范例

Example #1 QuickHashIntHash::delete() example

<?php
$hash = new QuickHashIntHash( 1024 );
var_dump( $hash->exists( 4 ) );
var_dump( $hash->add( 4, 5 ) );
var_dump( $hash->delete( 4 ) );
var_dump( $hash->exists( 4 ) );
var_dump( $hash->delete( 4 ) );
?>

以上例程的输出类似于：

bool(false)
bool(true)
bool(true)
bool(false)
bool(false)

QuickHashIntHash::__construct
QuickHashIntHash::exists
QuickHashIntHash


This method checks whether a key is part of the hash

QuickHashIntHash::delete
QuickHashIntHash::get
QuickHashIntHash
PHP Manual

QuickHashIntHash::exists

(PECL quickhash >= Unknown)

QuickHashIntHash::exists — This method checks whether a key is part of the hash

说明

public bool QuickHashIntHash::exists ( int $key )

This method checks whether an entry with the provided key exists in the hash.

参数

key

The key of the entry to check for whether it exists in the hash.

返回值

Returns TRUE when the entry was found, or FALSE when the entry is not found.

范例

Example #1 QuickHashIntHash::exists() example

<?php
//generate 200000 elements
$array = range( 0, 199999 );
$existingEntries = array_rand( array_flip( $array ), 180000 );
$testForEntries = array_rand( array_flip( $array ), 1000 );
$foundCount = 0;

echo "Creating hash: ", microtime( true ), "\n";
$hash = new QuickHashIntHash( 100000 );
echo "Adding elements: ", microtime( true ), "\n";
foreach( $existingEntries as $key )
{
     $hash->add( $key, 56 );
}

echo "Doing 1000 tests: ", microtime( true ), "\n";
foreach( $testForEntries as $key )
{
     $foundCount += $hash->exists( $key );
}
echo "Done, $foundCount found: ", microtime( true ), "\n";
?>

以上例程的输出类似于：

Creating hash: 1263588703.0748
Adding elements: 1263588703.0757
Doing 1000 tests: 1263588703.7851
Done, 898 found: 1263588703.7897

QuickHashIntHash::delete
QuickHashIntHash::get
QuickHashIntHash


This method retrieves a value from the hash by its key

QuickHashIntHash::exists
QuickHashIntHash::getSize
QuickHashIntHash
PHP Manual

QuickHashIntHash::get

(PECL quickhash >= Unknown)

QuickHashIntHash::get — This method retrieves a value from the hash by its key

说明

public int QuickHashIntHash::get ( int $key )

This method retrieves a value from the hash by its key.

参数

key

The key of the entry to add.

返回值

The value if the key exists, or NULL if the key wasn't part of the hash.

范例

Example #1 QuickHashIntHash::get() example

<?php
$hash = new QuickHashIntHash( 8 );
var_dump( $hash->get( 1 ) );

var_dump( $hash->add( 2 ) );
var_dump( $hash->get( 2 ) );

var_dump( $hash->add( 3, 5 ) );
var_dump( $hash->get( 3 ) );
?>

以上例程的输出类似于：

bool(false)
bool(true)
int(1)
bool(true)
int(5)

QuickHashIntHash::exists
QuickHashIntHash::getSize
QuickHashIntHash


Returns the number of elements in the hash

QuickHashIntHash::get
QuickHashIntHash::loadFromFile
QuickHashIntHash
PHP Manual

QuickHashIntHash::getSize

(PECL quickhash >= Unknown)

QuickHashIntHash::getSize — Returns the number of elements in the hash

说明

public int QuickHashIntHash::getSize ( void )

Returns the number of elements in the hash.

参数

key

The key of the entry to add.

返回值

The number of elements in the hash.

范例

Example #1 QuickHashIntHash::getSize() example

<?php
$hash = new QuickHashIntHash( 8 );
var_dump( $hash->add( 2 ) );
var_dump( $hash->add( 3, 5 ) );
var_dump( $hash->getSize() );
?>

以上例程的输出类似于：

bool(true)
bool(true)
int(2)

QuickHashIntHash::get
QuickHashIntHash::loadFromFile
QuickHashIntHash


This factory method creates a hash from a file

QuickHashIntHash::getSize
QuickHashIntHash::loadFromString
QuickHashIntHash
PHP Manual

QuickHashIntHash::loadFromFile

(PECL quickhash >= Unknown)

QuickHashIntHash::loadFromFile — This factory method creates a hash from a file

说明

public static QuickHashIntHash QuickHashIntHash::loadFromFile ( string $filename [, int $options ] )

This factory method creates a new hash from a definition file on disk. The file format consists of a signature 'QH\0x11\0', the number of elements as a 32 bit signed integer in system Endianness, followed by 32 bit signed integers packed together in the Endianness that the system that the code runs on uses. For each hash element there are two 32 bit signed integers stored. The first of each element is the key, and the second is the value belonging to the key. An example could be:

Example #1 QuickHash IntHash file format

00000000  51 48 11 00 02 00 00 00  01 00 00 00 01 00 00 00  |QH..............|
00000010  03 00 00 00 09 00 00 00                           |........|
00000018

Example #2 QuickHash IntHash file format

header signature ('QH'; key type: 1; value type: 1; filler: \0x00)
00000000  51 48 11 00

number of elements:
00000004  02 00 00 00

data string:
00000000  01 00 00 00 01 00 00 00  03 00 00 00 09 00 00 00

key/value 1 (key = 1, value = 1)
01 00 00 00  01 00 00 00

key/value 2 (key = 3, value = 9)
03 00 00 00  09 00 00 00

参数

filename

The filename of the file to read the hash from.

options

The same options that the class' constructor takes; except that the size option is ignored. It is automatically calculated to be the same as the number of entries in the hash, rounded up to the nearest power of two with a maximum limit of 4194304.

返回值

Returns a new QuickHashIntHash.

范例

Example #3 QuickHashIntHash::loadFromFile() example

<?php
$file = dirname( __FILE__ ) . "/simple.hash";
$hash = QuickHashIntHash::loadFromFile(
    $file,
    QuickHashIntHash::DO_NOT_USE_ZEND_ALLOC
);
foreach( range( 0, 0x0f ) as $key )
{
    printf( "Key %3d (%2x) is %s\n",
        $key, $key,
        $hash->exists( $key ) ? 'set' : 'unset'
    );
}
?>

以上例程的输出类似于：

Key   0 ( 0) is unset
Key   1 ( 1) is set
Key   2 ( 2) is set
Key   3 ( 3) is set
Key   4 ( 4) is unset
Key   5 ( 5) is set
Key   6 ( 6) is unset
Key   7 ( 7) is set
Key   8 ( 8) is unset
Key   9 ( 9) is unset
Key  10 ( a) is unset
Key  11 ( b) is set
Key  12 ( c) is unset
Key  13 ( d) is set
Key  14 ( e) is unset
Key  15 ( f) is unset

QuickHashIntHash::getSize
QuickHashIntHash::loadFromString
QuickHashIntHash


This factory method creates a hash from a string

QuickHashIntHash::loadFromFile
QuickHashIntHash::saveToFile
QuickHashIntHash
PHP Manual

QuickHashIntHash::loadFromString

(PECL quickhash >= Unknown)

QuickHashIntHash::loadFromString — This factory method creates a hash from a string

说明

public static QuickHashIntHash QuickHashIntHash::loadFromString ( string $contents [, int $options ] )

This factory method creates a new hash from a definition in a string. The file format consists of 32 bit signed integers packed together in the Endianness that the system that the code runs on uses. For each element there are two 32 bit signed integers stored. The first of each element is the key, and the second is the value belonging to the key.

参数

contents

The string containing a serialized format of the hash.

options

The same options that the class' constructor takes; except that the size option is ignored. It is automatically calculated to be the same as the number of entries in the hash, rounded up to the nearest power of two with a maximum limit of 4194304.

返回值

Returns a new QuickHashIntHash.

范例

Example #1 QuickHashIntHash::loadFromString() example

<?php
$contents = file_get_contents( dirname( __FILE__ ) . "/simple.hash" );
$hash = QuickHashIntHash::loadFromString(
    $contents,
    QuickHashIntHash::DO_NOT_USE_ZEND_ALLOC
);
foreach( range( 0, 0x0f ) as $key )
{
    printf( "Key %3d (%2x) is %s\n",
        $key, $key,
        $hash->exists( $key ) ? 'set' : 'unset'
    );
}
?>

以上例程的输出类似于：

Key   0 ( 0) is unset
Key   1 ( 1) is set
Key   2 ( 2) is set
Key   3 ( 3) is set
Key   4 ( 4) is unset
Key   5 ( 5) is set
Key   6 ( 6) is unset
Key   7 ( 7) is set
Key   8 ( 8) is unset
Key   9 ( 9) is unset
Key  10 ( a) is unset
Key  11 ( b) is set
Key  12 ( c) is unset
Key  13 ( d) is set
Key  14 ( e) is unset
Key  15 ( f) is unset

QuickHashIntHash::loadFromFile
QuickHashIntHash::saveToFile
QuickHashIntHash


This method stores an in-memory hash to disk

QuickHashIntHash::loadFromString
QuickHashIntHash::saveToString
QuickHashIntHash
PHP Manual

QuickHashIntHash::saveToFile

(PECL quickhash >= Unknown)

QuickHashIntHash::saveToFile — This method stores an in-memory hash to disk

说明

public void QuickHashIntHash::saveToFile ( string $filename )

This method stores an existing hash to a file on disk, in the same format that loadFromFile() can read.

参数

filename

The filename of the file to store the hash in.

返回值

没有返回值。

范例

Example #1 QuickHashIntHash::saveToFile() example

<?php
$hash = new QuickHashIntHash( 1024 );
var_dump( $hash->exists( 4 ) );
var_dump( $hash->add( 4, 43 ) );
var_dump( $hash->exists( 4 ) );
var_dump( $hash->add( 4, 52 ) );

$hash->saveToFile( '/tmp/test.hash' );
?>

QuickHashIntHash::loadFromString
QuickHashIntHash::saveToString
QuickHashIntHash


This method returns a serialized version of the hash

QuickHashIntHash::saveToFile
QuickHashIntHash::set
QuickHashIntHash
PHP Manual

QuickHashIntHash::saveToString

(PECL quickhash >= Unknown)

QuickHashIntHash::saveToString — This method returns a serialized version of the hash

说明

public string QuickHashIntHash::saveToString ( void )

This method returns a serialized version of the hash in the same format that loadFromString() can read.

返回值

This method returns a string containing a serialized format of the hash. Each element is stored as a four byte value in the Endianness that the current system uses.

范例

Example #1 QuickHashIntHash::saveToString() example

<?php
$hash = new QuickHashIntHash( 1024 );
var_dump( $hash->exists( 4 ) );
var_dump( $hash->add( 4, 34 ) );
var_dump( $hash->exists( 4 ) );
var_dump( $hash->add( 4, 55 ) );

var_dump( $hash->saveToString() );
?>

QuickHashIntHash::saveToFile
QuickHashIntHash::set
QuickHashIntHash


This method updates an entry in the hash with a new value, or adds a new one if the entry doesn't exist

QuickHashIntHash::saveToString
QuickHashIntHash::update
QuickHashIntHash
PHP Manual

QuickHashIntHash::set

(PECL quickhash >= Unknown)

QuickHashIntHash::set — This method updates an entry in the hash with a new value, or adds a new one if the entry doesn't exist

说明

public bool QuickHashIntHash::set ( int $key , int $value )

This method tries to update an entry with a new value. In case the entry did not yet exist, it will instead add a new entry. It returns whether the entry was added or update. If there are duplicate keys, only the first found element will get an updated value. Use QuickHashIntHash::CHECK_FOR_DUPES during hash creation to prevent duplicate keys from being part of the hash.

参数

key

The key of the entry to add or update.

value

The new value to set the entry with.

返回值

2 if the entry was found and updated, 1 if the entry was newly added or 0 if there was an error.

范例

Example #1 QuickHashIntHash::set() example

<?php
$hash = new QuickHashIntHash( 1024 );

echo "Set->Add\n";
var_dump( $hash->get( 46692 ) );
var_dump( $hash->set( 46692, 16091 ) );
var_dump( $hash->get( 46692 ) );

echo "Set->Update\n";
var_dump( $hash->set( 46692, 29906 ) );
var_dump( $hash->get( 46692 ) );
?>

以上例程的输出类似于：

bool(false)
int(2)
int(16091)
Set->Update
int(1)
int(29906)

QuickHashIntHash::saveToString
QuickHashIntHash::update
QuickHashIntHash


This method updates an entry in the hash with a new value

QuickHashIntHash::set
QuickHashStringIntHash
QuickHashIntHash
PHP Manual

QuickHashIntHash::update

(PECL quickhash >= Unknown)

QuickHashIntHash::update — This method updates an entry in the hash with a new value

说明

public bool QuickHashIntHash::update ( int $key , int $value )

This method updates an entry with a new value, and returns whether the entry was update. If there are duplicate keys, only the first found element will get an updated value. Use QuickHashIntHash::CHECK_FOR_DUPES during hash creation to prevent duplicate keys from being part of the hash.

参数

key

The key of the entry to add.

value

The new value to update the entry with.

返回值

TRUE when the entry was found and updated, and FALSE if the entry was not part of the hash already.

范例

Example #1 QuickHashIntHash::update() example

<?php
$hash = new QuickHashIntHash( 1024 );

var_dump( $hash->add( 141421, 173205 ) );
var_dump( $hash->update( 141421, 223606 ) );
var_dump( $hash->get( 141421 ) );
?>

以上例程的输出类似于：

bool(true)
bool(true)
int(223606)

QuickHashIntHash::set
QuickHashStringIntHash
QuickHashIntHash


The QuickHashStringIntHash class

(No version information available, might only be in Git)

简介

This class wraps around a hash containing strings, where the values are integer numbers. Hashes are also available as implementation of the ArrayAccess interface.

Hashes can also be iterated over with foreach as the Iterator interface is implemented as well. The order of which elements are returned in is not guaranteed.

类摘要

QuickHashStringIntHash {
/* Constants */
const integer CHECK_FOR_DUPES = 1 ;
const integer DO_NOT_USE_ZEND_ALLOC = 2 ;
/* Methods */
public bool add ( string $key , int $value )
public __construct ( int $size [, int $options = 0 ] )
public bool delete ( string $key )
public bool exists ( string $key )
public mixed get ( string $key )
public int getSize ( void )
public static QuickHashStringIntHash loadFromFile ( string $filename [, int $size = 0 [, int $options = 0 ]] )
public static QuickHashStringIntHash loadFromString ( string $contents [, int $size = 0 [, int $options = 0 ]] )
public void saveToFile ( string $filename )
public string saveToString ( void )
public int set ( string $key , int $value )
public bool update ( string $key , int $value )
}

预定义常量

QuickHashStringIntHash::CHECK_FOR_DUPES

If enabled, adding duplicate elements to a set (through either add() or loadFromFile()) will result in those elements to be dropped from the set. This will take up extra time, so only used when it is required.

QuickHashStringIntHash::DO_NOT_USE_ZEND_ALLOC

Disables the use of PHP's internal memory manager for internal set structures. With this option enabled, internal allocations will not count towards the memory_limit settings.

Table of Contents

  • QuickHashStringIntHash::add — This method adds a new entry to the hash
  • QuickHashStringIntHash::__construct — Creates a new QuickHashStringIntHash object
  • QuickHashStringIntHash::delete — This method deletes am entry from the hash
  • QuickHashStringIntHash::exists — This method checks whether a key is part of the hash
  • QuickHashStringIntHash::get — This method retrieves a value from the hash by its key
  • QuickHashStringIntHash::getSize — Returns the number of elements in the hash
  • QuickHashStringIntHash::loadFromFile — This factory method creates a hash from a file
  • QuickHashStringIntHash::loadFromString — This factory method creates a hash from a string
  • QuickHashStringIntHash::saveToFile — This method stores an in-memory hash to disk
  • QuickHashStringIntHash::saveToString — This method returns a serialized version of the hash
  • QuickHashStringIntHash::set — This method updates an entry in the hash with a new value, or adds a new one if the entry doesn't exist
  • QuickHashStringIntHash::update — This method updates an entry in the hash with a new value
QuickHashIntHash::update
QuickHashStringIntHash::add
Quickhash


This method adds a new entry to the hash

QuickHashStringIntHash
QuickHashStringIntHash::__construct
QuickHashStringIntHash
PHP Manual

QuickHashStringIntHash::add

(No version information available, might only be in Git)

QuickHashStringIntHash::add — This method adds a new entry to the hash

说明

public bool QuickHashStringIntHash::add ( string $key , int $value )

This method adds a new entry to the hash, and returns whether the entry was added. Entries are by default always added unless QuickHashStringIntHash::CHECK_FOR_DUPES has been passed when the hash was created.

参数

key

The key of the entry to add.

value

The value of the entry to add.

返回值

TRUE when the entry was added, and FALSE if the entry was not added.

范例

Example #1 QuickHashStringIntHash::add() example

<?php
echo "without dupe checking\n";
$hash = new QuickHashStringIntHash( 1024 );
var_dump( $hash );
var_dump( $hash->exists( "four" ) );
var_dump( $hash->get( "four" ) );
var_dump( $hash->add( "four", 22 ) );
var_dump( $hash->exists( "four" ) );
var_dump( $hash->get( "four" ) );
var_dump( $hash->add( "four", 12 ) );

echo "\nwith dupe checking\n";
$hash = new QuickHashStringIntHash( 1024, QuickHashStringIntHash::CHECK_FOR_DUPES );
var_dump( $hash );
var_dump( $hash->exists( "four" ) );
var_dump( $hash->get( "four" ) );
var_dump( $hash->add( "four", 78 ) );
var_dump( $hash->exists( "four" ) );
var_dump( $hash->get( "four" ) );
var_dump( $hash->add( "four", 9 ) );
?>

以上例程的输出类似于：

without dupe checking
object(QuickHashStringIntHash)#1 (0) {
}
bool(false)
bool(false)
bool(true)
bool(true)
int(22)
bool(true)

with dupe checking
object(QuickHashStringIntHash)#2 (0) {
}
bool(false)
bool(false)
bool(true)
bool(true)
int(78)
bool(false)

QuickHashStringIntHash
QuickHashStringIntHash::__construct
QuickHashStringIntHash


Creates a new QuickHashStringIntHash object

QuickHashStringIntHash::add
QuickHashStringIntHash::delete
QuickHashStringIntHash
PHP Manual

QuickHashStringIntHash::__construct

(No version information available, might only be in Git)

QuickHashStringIntHash::__construct — Creates a new QuickHashStringIntHash object

说明

public QuickHashStringIntHash::__construct ( int $size [, int $options = 0 ] )

This constructor creates a new QuickHashStringIntHash. The size is the amount of bucket lists to create. The more lists there are, the less collisions you will have. Options are also supported.

参数

size

The amount of bucket lists to configure. The number you pass in will be automatically rounded up to the next power of two. It is also automatically limited from 64 to 4194304.

options

The options that you can pass in are: QuickHashStringIntHash::CHECK_FOR_DUPES, which makes sure no duplicate entries are added to the hash and QuickHashStringIntHash::DO_NOT_USE_ZEND_ALLOC to not use PHP's internal memory manager.

返回值

Returns a new QuickHashStringIntHash object.

范例

Example #1 QuickHashStringIntHash::__construct() example

<?php
var_dump( new QuickHashStringIntHash( 1024 ) );
var_dump( new QuickHashStringIntHash( 1024, QuickHashStringIntHash::CHECK_FOR_DUPES ) );
?>

QuickHashStringIntHash::add
QuickHashStringIntHash::delete
QuickHashStringIntHash


This method deletes am entry from the hash

QuickHashStringIntHash::__construct
QuickHashStringIntHash::exists
QuickHashStringIntHash
PHP Manual

QuickHashStringIntHash::delete

(No version information available, might only be in Git)

QuickHashStringIntHash::delete — This method deletes am entry from the hash

说明

public bool QuickHashStringIntHash::delete ( string $key )

This method deletes an entry from the hash, and returns whether the entry was deleted or not. Associated memory structures will not be freed immediately, but rather when the hash itself is freed.

Elements can not be deleted when the hash is used in an iterator. The method will not throw an exception, but simply return FALSE like would happen with any other deletion failure.

参数

key

The key of the entry to delete.

返回值

TRUE when the entry was deleted, and FALSE if the entry was not deleted.

范例

Example #1 QuickHashStringIntHash::delete() example

<?php
$hash = new QuickHashStringIntHash( 1024 );
var_dump( $hash->exists( 'four' ) );
var_dump( $hash->add( 'four', 5 ) );
var_dump( $hash->get( 'four' ) );
var_dump( $hash->delete( 'four' ) );
var_dump( $hash->exists( 'four' ) );
var_dump( $hash->get( 'four' ) );
var_dump( $hash->delete( 'four' ) );
?>

以上例程的输出类似于：

bool(false)
bool(true)
int(5)
bool(true)
bool(false)
bool(false)
bool(false)

QuickHashStringIntHash::__construct
QuickHashStringIntHash::exists
QuickHashStringIntHash


This method checks whether a key is part of the hash

QuickHashStringIntHash::delete
QuickHashStringIntHash::get
QuickHashStringIntHash
PHP Manual

QuickHashStringIntHash::exists

(No version information available, might only be in Git)

QuickHashStringIntHash::exists — This method checks whether a key is part of the hash

说明

public bool QuickHashStringIntHash::exists ( string $key )

This method checks whether an entry with the provided key exists in the hash.

参数

key

The key of the entry to check for whether it exists in the hash.

返回值

Returns TRUE when the entry was found, or FALSE when the entry is not found.

QuickHashStringIntHash::delete
QuickHashStringIntHash::get
QuickHashStringIntHash


This method retrieves a value from the hash by its key

QuickHashStringIntHash::exists
QuickHashStringIntHash::getSize
QuickHashStringIntHash
PHP Manual

QuickHashStringIntHash::get

(No version information available, might only be in Git)

QuickHashStringIntHash::get — This method retrieves a value from the hash by its key

说明

public mixed QuickHashStringIntHash::get ( string $key )

This method retrieves a value from the hash by its key.

参数

key

The key of the entry to add.

返回值

The value if the key exists, or NULL if the key wasn't part of the hash.

范例

Example #1 QuickHashStringIntHash::get() example

<?php
$hash = new QuickHashStringIntHash( 8 );
var_dump( $hash->get( "one" ) );

var_dump( $hash->add( "two", 2 ) );
var_dump( $hash->get( "two" ) );
?>

以上例程的输出类似于：

bool(false)
bool(true)
int(2)

QuickHashStringIntHash::exists
QuickHashStringIntHash::getSize
QuickHashStringIntHash


Returns the number of elements in the hash

QuickHashStringIntHash::get
QuickHashStringIntHash::loadFromFile
QuickHashStringIntHash
PHP Manual

QuickHashStringIntHash::getSize

(No version information available, might only be in Git)

QuickHashStringIntHash::getSize — Returns the number of elements in the hash

说明

public int QuickHashStringIntHash::getSize ( void )

Returns the number of elements in the hash.

参数

key

The key of the entry to add.

返回值

The number of elements in the hash.

范例

Example #1 QuickHashStringIntHash::getSize() example

<?php
$hash = new QuickHashStringIntHash( 8 );
var_dump( $hash->add( "two", 2 ) );
var_dump( $hash->add( "three", 5 ) );
var_dump( $hash->getSize() );
?>

以上例程的输出类似于：

bool(true)
bool(true)
int(2)

QuickHashStringIntHash::get
QuickHashStringIntHash::loadFromFile
QuickHashStringIntHash


This factory method creates a hash from a file

QuickHashStringIntHash::getSize
QuickHashStringIntHash::loadFromString
QuickHashStringIntHash
PHP Manual

QuickHashStringIntHash::loadFromFile

(No version information available, might only be in Git)

QuickHashStringIntHash::loadFromFile — This factory method creates a hash from a file

说明

public static QuickHashStringIntHash QuickHashStringIntHash::loadFromFile ( string $filename [, int $size = 0 [, int $options = 0 ]] )

This factory method creates a new hash from a definition file on disk. The file format consists of a signature 'QH\0x21\0', the number of elements as a 32 bit signed integer in system Endianness, an unsigned 32 bit integer containing the number of element data to follow in characters. This element data contains all the strings. The follows another signed 32 bit integer containing the number of bucket lists. After the header and the strings, the elements follow. They are ordered by bucket list so that the keys don't have to be hashed in order to restore the hash. For each bucket list, the following information is stored (all as 32 bit integers): the bucket list index, the number of elements in that list, and then in pairs of two unsigned 32 bit integers the elements, where the first one is the index into the string list containing the keys, and the second one the value. An example could be:

Example #1 QuickHash StringIntHash file format

00000000  51 48 21 00 02 00 00 00  09 00 00 00 40 00 00 00  |QH!.........@...|
00000010  4f 4e 45 00 4e 49 4e 45  00 07 00 00 00 01 00 00  |ONE.NINE........|
00000020  00 00 00 00 00 01 00 00  00 2f 00 00 00 01 00 00  |........./......|
00000030  00 04 00 00 00 03 00 00  00                       |.........|
00000039

Example #2 QuickHash IntHash file format

header signature ('QH'; key type: 2; value type: 1; filler: \0x00)
00000000  51 48 21 00

number of elements:
00000004  02 00 00 00

length of string values (9 characters):
00000008  09 00 00 00

number of hash bucket lists (this is configured for hashes as argument to the
constructor normally, 64 in this case):
0000000C  40 00 00 00

string values:
00000010  4f 4e 45 00 4e 49 4e 45  00

bucket lists:
  bucket list 1 (with key 7, and 1 element):
    header:
    07 00 00 00 01 00 00 00
    elements (key index: 0 ('ONE'), value = 0):
    00 00 00 00 01 00 00 00
  bucket list 2 (with key 0x2f, and 1 element):
    header:
    2f 00 00 00 01 00 00 00
    elements (key index: 4 ('NINE'), value = 3):
    04 00 00 00 03 00 00 00

参数

filename

The filename of the file to read the hash from.

size

The amount of bucket lists to configure. The number you pass in will be automatically rounded up to the next power of two. It is also automatically limited from 4 to 4194304.

options

The same options that the class' constructor takes; except that the size option is ignored. It is read from the file format (unlike the QuickHashIntHash and QuickHashIntStringHash classes, where it is automatically calculated from the number of entries in the hash.)

返回值

Returns a new QuickHashStringIntHash.

范例

Example #3 QuickHashStringIntHash::loadFromFile() example

<?php
$file = dirname( __FILE__ ) . "/simple.hash.string";
$hash = QuickHashStringIntHash::loadFromFile(
    $file,
    QuickHashStringIntHash::DO_NOT_USE_ZEND_ALLOC
);
foreach( range( 0, 0x0f ) as $key )
{
    $i = 48712 + $key * 1631;
    $k = base_convert( $i, 10, 36 );
    echo $k, ' => ', $hash->get( $k ), "\n";
}
?>

以上例程的输出类似于：

11l4 => 48712
12uf => 50343
143q => 51974
15d1 => 53605
16mc => 55236
17vn => 56867
194y => 58498
1ae9 => 60129
1bnk => 61760
1cwv => 63391
1e66 => 65022
1ffh => 66653
1gos => 68284
1hy3 => 69915
1j7e => 71546
1kgp => 73177

QuickHashStringIntHash::getSize
QuickHashStringIntHash::loadFromString
QuickHashStringIntHash


This factory method creates a hash from a string

QuickHashStringIntHash::loadFromFile
QuickHashStringIntHash::saveToFile
QuickHashStringIntHash
PHP Manual

QuickHashStringIntHash::loadFromString

(No version information available, might only be in Git)

QuickHashStringIntHash::loadFromString — This factory method creates a hash from a string

说明

public static QuickHashStringIntHash QuickHashStringIntHash::loadFromString ( string $contents [, int $size = 0 [, int $options = 0 ]] )

This factory method creates a new hash from a definition in a string. The format is the same as the one used in "loadFromFile".

参数

contents

The string containing a serialized format of the hash.

size

The amount of bucket lists to configure. The number you pass in will be automatically rounded up to the next power of two. It is also automatically limited from 4 to 4194304.

options

The same options that the class' constructor takes; except that the size option is ignored. It is automatically calculated to be the same as the number of entries in the hash, rounded up to the nearest power of two with a maximum limit of 4194304.

返回值

Returns a new QuickHashStringIntHash.

范例

Example #1 QuickHashStringIntHash::loadFromString() example

<?php
$contents = file_get_contents( dirname( __FILE__ ) . "/simple.hash.string" );
$hash = QuickHashStringIntHash::loadFromString(
    $contents,
    QuickHashStringIntHash::DO_NOT_USE_ZEND_ALLOC
);
foreach( range( 0, 0x0f ) as $key )
{
    $i = 48712 + $key * 1631;
    $k = base_convert( $i, 10, 36 );
    echo $k, ' => ', $hash->get( $k ), "\n";
}
?>

以上例程的输出类似于：

11l4 => 48712
12uf => 50343
143q => 51974
15d1 => 53605
16mc => 55236
17vn => 56867
194y => 58498
1ae9 => 60129
1bnk => 61760
1cwv => 63391
1e66 => 65022
1ffh => 66653
1gos => 68284
1hy3 => 69915
1j7e => 71546
1kgp => 73177

QuickHashStringIntHash::loadFromFile
QuickHashStringIntHash::saveToFile
QuickHashStringIntHash


This method stores an in-memory hash to disk

QuickHashStringIntHash::loadFromString
QuickHashStringIntHash::saveToString
QuickHashStringIntHash
PHP Manual

QuickHashStringIntHash::saveToFile

(No version information available, might only be in Git)

QuickHashStringIntHash::saveToFile — This method stores an in-memory hash to disk

说明

public void QuickHashStringIntHash::saveToFile ( string $filename )

This method stores an existing hash to a file on disk, in the same format that loadFromFile() can read.

参数

filename

The filename of the file to store the hash in.

返回值

没有返回值。

范例

Example #1 QuickHashStringIntHash::saveToFile() example

<?php
$hash = new QuickHashStringIntHash( 1024 );
var_dump( $hash->add( "fourty three", 42 ) );
var_dump( $hash->add( "fifty two", 52 ) );

$hash->saveToFile( '/tmp/test.hash.string' );
?>

QuickHashStringIntHash::loadFromString
QuickHashStringIntHash::saveToString
QuickHashStringIntHash


This method returns a serialized version of the hash

QuickHashStringIntHash::saveToFile
QuickHashStringIntHash::set
QuickHashStringIntHash
PHP Manual

QuickHashStringIntHash::saveToString

(No version information available, might only be in Git)

QuickHashStringIntHash::saveToString — This method returns a serialized version of the hash

说明

public string QuickHashStringIntHash::saveToString ( void )

This method returns a serialized version of the hash in the same format that loadFromString() can read.

返回值

This method returns a serialized format of an existing hash, in the same format that loadFromString() can read.

范例

Example #1 QuickHashStringIntHash::saveToString() example

<?php
$hash = new QuickHashStringIntHash( 1024 );
var_dump( $hash->add( "fourty three", 42 ) );
var_dump( $hash->add( "fifty two", 52 ) );

var_dump( $hash->saveToString() );
?>

QuickHashStringIntHash::saveToFile
QuickHashStringIntHash::set
QuickHashStringIntHash


This method updates an entry in the hash with a new value, or adds a new one if the entry doesn't exist

QuickHashStringIntHash::saveToString
QuickHashStringIntHash::update
QuickHashStringIntHash
PHP Manual

QuickHashStringIntHash::set

(No version information available, might only be in Git)

QuickHashStringIntHash::set — This method updates an entry in the hash with a new value, or adds a new one if the entry doesn't exist

说明

public int QuickHashStringIntHash::set ( string $key , int $value )

This method tries to update an entry with a new value. In case the entry did not yet exist, it will instead add a new entry. It returns whether the entry was added or update. If there are duplicate keys, only the first found element will get an updated value. Use QuickHashStringIntHash::CHECK_FOR_DUPES during hash creation to prevent duplicate keys from being part of the hash.

参数

key

The key of the entry to add or update.

value

The value of the entry to add. If a non-string is passed, it will be converted to a string automatically if possible.

返回值

2 if the entry was found and updated, 1 if the entry was newly added or 0 if there was an error.

范例

Example #1 QuickHashStringIntHash::set() example

<?php
$hash = new QuickHashStringIntHash( 1024 );

echo "Set->Add\n";
var_dump( $hash->get( "fourty six thousand six hundred ninety two" ) );
var_dump( $hash->set( "fourty six thousand six hundred ninety two", 16091 ) );
var_dump( $hash->get( "fourty six thousand six hundred ninety two" ) );

echo "Set->Update\n";
var_dump( $hash->set( "fourty six thousand six hundred ninety two", 29906 ) );
var_dump( $hash->get( "fourty six thousand six hundred ninety two" ) );
?>

以上例程的输出类似于：

Set->Add
bool(false)
int(2)
int(16091)
Set->Update
int(1)
int(29906)

QuickHashStringIntHash::saveToString
QuickHashStringIntHash::update
QuickHashStringIntHash


This method updates an entry in the hash with a new value

QuickHashStringIntHash::set
QuickHashIntStringHash
QuickHashStringIntHash
PHP Manual

QuickHashStringIntHash::update

(No version information available, might only be in Git)

QuickHashStringIntHash::update — This method updates an entry in the hash with a new value

说明

public bool QuickHashStringIntHash::update ( string $key , int $value )

This method updates an entry with a new value, and returns whether the entry was update. If there are duplicate keys, only the first found element will get an updated value. Use QuickHashStringIntHash::CHECK_FOR_DUPES during hash creation to prevent duplicate keys from being part of the hash.

参数

key

The key of the entry to add.

value

The new value for the entry. If a non-string is passed, it will be converted to a string automatically if possible.

返回值

TRUE when the entry was found and updated, and FALSE if the entry was not part of the hash already.

范例

Example #1 QuickHashStringIntHash::update() example

<?php
$hash = new QuickHashStringIntHash( 1024 );

$hash->add( 'six', 314159265 );
$hash->add( "a lot", 314159265 );

echo $hash->get( 'six' ), "\n";
echo $hash->get( 'a lot' ), "\n";

var_dump( $hash->update( 'a lot', 314159266 ) );
var_dump( $hash->update( "a lot plus one", 314159999 ) );

echo $hash->get( 'six' ), "\n";
echo $hash->get( 'a lot' ), "\n";
?>

以上例程的输出类似于：

314159265
314159265
bool(true)
bool(false)
314159265
314159266

QuickHashStringIntHash::set
QuickHashIntStringHash
QuickHashStringIntHash


The QuickHashIntStringHash class

(PECL quickhash >= Unknown)

简介

This class wraps around a hash containing integer numbers, where the values are strings. Hashes are also available as implementation of the ArrayAccess interface.

Hashes can also be iterated over with foreach as the Iterator interface is implemented as well. The order of which elements are returned in is not guaranteed.

类摘要

QuickHashIntStringHash {
/* Constants */
const integer CHECK_FOR_DUPES = 1 ;
const integer DO_NOT_USE_ZEND_ALLOC = 2 ;
const integer HASHER_NO_HASH = 256 ;
const integer HASHER_JENKINS1 = 512 ;
const integer HASHER_JENKINS2 = 1024 ;
/* Methods */
public bool add ( int $key , string $value )
public __construct ( int $size [, int $options = 0 ] )
public bool delete ( int $key )
public bool exists ( int $key )
public mixed get ( int $key )
public int getSize ( void )
public static QuickHashIntStringHash loadFromFile ( string $filename [, int $size = 0 [, int $options = 0 ]] )
public static QuickHashIntStringHash loadFromString ( string $contents [, int $size = 0 [, int $options = 0 ]] )
public void saveToFile ( string $filename )
public string saveToString ( void )
public int set ( int $key , string $value )
public bool update ( int $key , string $value )
}

预定义常量

QuickHashIntStringHash::CHECK_FOR_DUPES

If enabled, adding duplicate elements to a set (through either add() or loadFromFile()) will result in those elements to be dropped from the set. This will take up extra time, so only used when it is required.

QuickHashIntStringHash::DO_NOT_USE_ZEND_ALLOC

Disables the use of PHP's internal memory manager for internal set structures. With this option enabled, internal allocations will not count towards the memory_limit settings.

QuickHashIntStringHash::HASHER_NO_HASH

Selects to not use a hashing function, but merely use a modulo to find the bucket list index. This is not faster than normal hashing, and gives more collisions.

QuickHashIntStringHash::HASHER_JENKINS1

This is the default hashing function to turn the integer hashes into bucket list indexes.

QuickHashIntStringHash::HASHER_JENKINS2

Selects a variant hashing algorithm.

Table of Contents

  • QuickHashIntStringHash::add — This method adds a new entry to the hash
  • QuickHashIntStringHash::__construct — Creates a new QuickHashIntStringHash object
  • QuickHashIntStringHash::delete — This method deletes am entry from the hash
  • QuickHashIntStringHash::exists — This method checks whether a key is part of the hash
  • QuickHashIntStringHash::get — This method retrieves a value from the hash by its key
  • QuickHashIntStringHash::getSize — Returns the number of elements in the hash
  • QuickHashIntStringHash::loadFromFile — This factory method creates a hash from a file
  • QuickHashIntStringHash::loadFromString — This factory method creates a hash from a string
  • QuickHashIntStringHash::saveToFile — This method stores an in-memory hash to disk
  • QuickHashIntStringHash::saveToString — This method returns a serialized version of the hash
  • QuickHashIntStringHash::set — This method updates an entry in the hash with a new value, or adds a new one if the entry doesn't exist
  • QuickHashIntStringHash::update — This method updates an entry in the hash with a new value
QuickHashStringIntHash::update
QuickHashIntStringHash::add
Quickhash


This method adds a new entry to the hash

QuickHashIntStringHash
QuickHashIntStringHash::__construct
QuickHashIntStringHash
PHP Manual

QuickHashIntStringHash::add

(PECL quickhash >= Unknown)

QuickHashIntStringHash::add — This method adds a new entry to the hash

说明

public bool QuickHashIntStringHash::add ( int $key , string $value )

This method adds a new entry to the hash, and returns whether the entry was added. Entries are by default always added unless QuickHashIntStringHash::CHECK_FOR_DUPES has been passed when the hash was created.

参数

key

The key of the entry to add.

value

The value of the entry to add. If a non-string is passed, it will be converted to a string automatically if possible.

返回值

TRUE when the entry was added, and FALSE if the entry was not added.

范例

Example #1 QuickHashIntStringHash::add() example

<?php
echo "without dupe checking\n";
$hash = new QuickHashIntStringHash( 1024 );
var_dump( $hash->exists( 4 ) );
var_dump( $hash->get( 4 ) );
var_dump( $hash->add( 4, "twenty two" ) );
var_dump( $hash->exists( 4 ) );
var_dump( $hash->get( 4 ) );
var_dump( $hash->add( 4, "twelve" ) );

echo "\nwith dupe checking\n";
$hash = new QuickHashIntStringHash( 1024, QuickHashIntStringHash::CHECK_FOR_DUPES );
var_dump( $hash->exists( 4 ) );
var_dump( $hash->get( 4 ) );
var_dump( $hash->add( 4, "seventy eight" ) );
var_dump( $hash->exists( 4 ) );
var_dump( $hash->get( 4 ) );
var_dump( $hash->add( 4, "nine" ) );
?>

以上例程的输出类似于：

without dupe checking
bool(false)
bool(false)
bool(true)
bool(true)
string(10) "twenty two"
bool(true)

with dupe checking
bool(false)
bool(false)
bool(true)
bool(true)
string(13) "seventy eight"
bool(false)

QuickHashIntStringHash
QuickHashIntStringHash::__construct
QuickHashIntStringHash


Creates a new QuickHashIntStringHash object

QuickHashIntStringHash::add
QuickHashIntStringHash::delete
QuickHashIntStringHash
PHP Manual

QuickHashIntStringHash::__construct

(PECL quickhash >= Unknown)

QuickHashIntStringHash::__construct — Creates a new QuickHashIntStringHash object

说明

public QuickHashIntStringHash::__construct ( int $size [, int $options = 0 ] )

This constructor creates a new QuickHashIntStringHash. The size is the amount of bucket lists to create. The more lists there are, the less collisions you will have. Options are also supported.

参数

size

The amount of bucket lists to configure. The number you pass in will be automatically rounded up to the next power of two. It is also automatically limited from 64 to 4194304.

options

The options that you can pass in are: QuickHashIntStringHash::CHECK_FOR_DUPES, which makes sure no duplicate entries are added to the hash; QuickHashIntStringHash::DO_NOT_USE_ZEND_ALLOC to not use PHP's internal memory manager as well as one of QuickHashIntStringHash::HASHER_NO_HASH, QuickHashIntStringHash::HASHER_JENKINS1 or QuickHashIntStringHash::HASHER_JENKINS2. These last three configure which hashing algorithm to use. All options can be combined using bitmasks.

返回值

Returns a new QuickHashIntStringHash object.

范例

Example #1 QuickHashIntStringHash::__construct() example

<?php
var_dump( new QuickHashIntStringHash( 1024 ) );
var_dump( new QuickHashIntStringHash( 1024, QuickHashIntStringHash::CHECK_FOR_DUPES ) );
var_dump(
    new QuickHashIntStringHash(
        1024,
        QuickHashIntStringHash::DO_NOT_USE_ZEND_ALLOC | QuickHashIntStringHash::HASHER_JENKINS2
    )
);
?>

QuickHashIntStringHash::add
QuickHashIntStringHash::delete
QuickHashIntStringHash


This method deletes am entry from the hash

QuickHashIntStringHash::__construct
QuickHashIntStringHash::exists
QuickHashIntStringHash
PHP Manual

QuickHashIntStringHash::delete

(PECL quickhash >= Unknown)

QuickHashIntStringHash::delete — This method deletes am entry from the hash

说明

public bool QuickHashIntStringHash::delete ( int $key )

This method deletes an entry from the hash, and returns whether the entry was deleted or not. Associated memory structures will not be freed immediately, but rather when the hash itself is freed.

Elements can not be deleted when the hash is used in an iterator. The method will not throw an exception, but simply return FALSE like would happen with any other deletion failure.

参数

key

The key of the entry to delete.

返回值

TRUE when the entry was deleted, and FALSE if the entry was not deleted.

范例

Example #1 QuickHashIntStringHash::delete() example

<?php
$hash = new QuickHashIntStringHash( 1024 );
var_dump( $hash->exists( 4 ) );
var_dump( $hash->add( 4, "five" ) );
var_dump( $hash->delete( 4 ) );
var_dump( $hash->exists( 4 ) );
var_dump( $hash->delete( 4 ) );
?>

以上例程的输出类似于：

bool(false)
bool(true)
bool(true)
bool(false)
bool(false)

QuickHashIntStringHash::__construct
QuickHashIntStringHash::exists
QuickHashIntStringHash


This method checks whether a key is part of the hash

QuickHashIntStringHash::delete
QuickHashIntStringHash::get
QuickHashIntStringHash
PHP Manual

QuickHashIntStringHash::exists

(PECL quickhash >= Unknown)

QuickHashIntStringHash::exists — This method checks whether a key is part of the hash

说明

public bool QuickHashIntStringHash::exists ( int $key )

This method checks whether an entry with the provided key exists in the hash.

参数

key

The key of the entry to check for whether it exists in the hash.

返回值

Returns TRUE when the entry was found, or FALSE when the entry is not found.

QuickHashIntStringHash::delete
QuickHashIntStringHash::get
QuickHashIntStringHash


This method retrieves a value from the hash by its key

QuickHashIntStringHash::exists
QuickHashIntStringHash::getSize
QuickHashIntStringHash
PHP Manual

QuickHashIntStringHash::get

(PECL quickhash >= Unknown)

QuickHashIntStringHash::get — This method retrieves a value from the hash by its key

说明

public mixed QuickHashIntStringHash::get ( int $key )

This method retrieves a value from the hash by its key.

参数

key

The key of the entry to add.

返回值

The value if the key exists, or NULL if the key wasn't part of the hash.

范例

Example #1 QuickHashIntStringHash::get() example

<?php
$hash = new QuickHashIntStringHash( 8 );
var_dump( $hash->get( 1 ) );

var_dump( $hash->add( 2, "two" ) );
var_dump( $hash->get( 2 ) );

var_dump( $hash->add( 3, 5 ) );
var_dump( $hash->get( 3 ) );
?>

以上例程的输出类似于：

bool(false)
bool(true)
string(3) "two"
bool(true)
string(1) "5"

QuickHashIntStringHash::exists
QuickHashIntStringHash::getSize
QuickHashIntStringHash


Returns the number of elements in the hash

QuickHashIntStringHash::get
QuickHashIntStringHash::loadFromFile
QuickHashIntStringHash
PHP Manual

QuickHashIntStringHash::getSize

(PECL quickhash >= Unknown)

QuickHashIntStringHash::getSize — Returns the number of elements in the hash

说明

public int QuickHashIntStringHash::getSize ( void )

Returns the number of elements in the hash.

返回值

The number of elements in the hash.

范例

Example #1 QuickHashIntStringHash::getSize() example

<?php
$hash = new QuickHashIntStringHash( 8 );
var_dump( $hash->add( 2, "two" ) );
var_dump( $hash->add( 3, 5 ) );
var_dump( $hash->getSize() );
?>

以上例程的输出类似于：

bool(true)
bool(true)
int(2)

QuickHashIntStringHash::get
QuickHashIntStringHash::loadFromFile
QuickHashIntStringHash


This factory method creates a hash from a file

QuickHashIntStringHash::getSize
QuickHashIntStringHash::loadFromString
QuickHashIntStringHash
PHP Manual

QuickHashIntStringHash::loadFromFile

(PECL quickhash >= Unknown)

QuickHashIntStringHash::loadFromFile — This factory method creates a hash from a file

说明

public static QuickHashIntStringHash QuickHashIntStringHash::loadFromFile ( string $filename [, int $size = 0 [, int $options = 0 ]] )

This factory method creates a new hash from a definition file on disk. The file format consists of a signature 'QH\0x12\0', the number of elements as a 32 bit signed integer in system Endianness, an unsigned 32 bit integer containing the number of element data to follow in characters. This element data contains all the strings. After the header and the strings, the elements follow in pairs of two unsigned 32 bit integers where the first one is the key, and the second one the index in the element data string. An example could be:

Example #1 QuickHash IntString file format

00000000  51 48 12 00 02 00 00 00  09 00 00 00 4f 4e 45 00  |QH..........ONE.|
00000010  4e 49 4e 45 00 01 00 00  00 00 00 00 00 03 00 00  |NINE............|
00000020  00 04 00 00 00                                    |.....|
00000025

Example #2 QuickHash IntString file format

header signature ('QH'; key type: 1; value type: 2; filler: \0x00)
00000000  51 48 12 00

number of elements:
00000004  02 00 00 00

length of string values (9 characters):
00000008  09 00 00 00

string values:
0000000C  4f 4e 45 00 4e 49 4e 45  00

data string:
00000015  01 00 00 00 00 00 00 00  03 00 00 00 04 00 00 00

key/value 1 (key = 1, string index = 0 ("ONE")):
01 00 00 00  00 00 00 00

key/value 2 (key = 3, string index = 4 ("NINE")):
03 00 00 00  04 00 00 00

参数

filename

The filename of the file to read the hash from.

size

The amount of bucket lists to configure. The number you pass in will be automatically rounded up to the next power of two. It is also automatically limited from 4 to 4194304.

options

The same options that the class' constructor takes; except that the size option is ignored. It is automatically calculated to be the same as the number of entries in the hash, rounded up to the nearest power of two with a maximum limit of 4194304.

返回值

Returns a new QuickHashIntStringHash.

范例

Example #3 QuickHashIntStringHash::loadFromFile() example

<?php
$file = dirname( __FILE__ ) . "/simple.string.hash";
$hash = QuickHashIntStringHash::loadFromFile(
    $file,
    QuickHashIntStringHash::DO_NOT_USE_ZEND_ALLOC
);
foreach( range( 0, 0x0f ) as $key )
{
    printf( "Key %3d (%2x) is %s\n",
        $key, $key,
        $hash->exists( $key ) ? 'set' : 'unset'
    );
}
?>

以上例程的输出类似于：

Key   0 ( 0) is unset
Key   1 ( 1) is set
Key   2 ( 2) is set
Key   3 ( 3) is set
Key   4 ( 4) is unset
Key   5 ( 5) is set
Key   6 ( 6) is unset
Key   7 ( 7) is set
Key   8 ( 8) is unset
Key   9 ( 9) is unset
Key  10 ( a) is unset
Key  11 ( b) is set
Key  12 ( c) is unset
Key  13 ( d) is set
Key  14 ( e) is unset
Key  15 ( f) is unset

QuickHashIntStringHash::getSize
QuickHashIntStringHash::loadFromString
QuickHashIntStringHash


This factory method creates a hash from a string

QuickHashIntStringHash::loadFromFile
QuickHashIntStringHash::saveToFile
QuickHashIntStringHash
PHP Manual

QuickHashIntStringHash::loadFromString

(PECL quickhash >= Unknown)

QuickHashIntStringHash::loadFromString — This factory method creates a hash from a string

说明

public static QuickHashIntStringHash QuickHashIntStringHash::loadFromString ( string $contents [, int $size = 0 [, int $options = 0 ]] )

This factory method creates a new hash from a definition in a string. The format is the same as the one used in "loadFromFile".

参数

contents

The string containing a serialized format of the hash.

size

The amount of bucket lists to configure. The number you pass in will be automatically rounded up to the next power of two. It is also automatically limited from 4 to 4194304.

options

The same options that the class' constructor takes; except that the size option is ignored. It is automatically calculated to be the same as the number of entries in the hash, rounded up to the nearest power of two with a maximum limit of 4194304.

返回值

Returns a new QuickHashIntStringHash.

范例

Example #1 QuickHashIntStringHash::loadFromString() example

<?php
$contents = file_get_contents( dirname( __FILE__ ) . "/simple.hash" );
$hash = QuickHashIntStringHash::loadFromString(
    $contents,
    QuickHashIntStringHash::DO_NOT_USE_ZEND_ALLOC
);
foreach( range( 0, 0x0f ) as $key )
{
    printf( "Key %3d (%2x) is %s\n",
        $key, $key,
        $hash->exists( $key ) ? 'set' : 'unset'
    );
}
?>

以上例程的输出类似于：

Key   0 ( 0) is unset
Key   1 ( 1) is set
Key   2 ( 2) is set
Key   3 ( 3) is set
Key   4 ( 4) is unset
Key   5 ( 5) is set
Key   6 ( 6) is unset
Key   7 ( 7) is set
Key   8 ( 8) is unset
Key   9 ( 9) is unset
Key  10 ( a) is unset
Key  11 ( b) is set
Key  12 ( c) is unset
Key  13 ( d) is set
Key  14 ( e) is unset
Key  15 ( f) is unset

QuickHashIntStringHash::loadFromFile
QuickHashIntStringHash::saveToFile
QuickHashIntStringHash


This method stores an in-memory hash to disk

QuickHashIntStringHash::loadFromString
QuickHashIntStringHash::saveToString
QuickHashIntStringHash
PHP Manual

QuickHashIntStringHash::saveToFile

(PECL quickhash >= Unknown)

QuickHashIntStringHash::saveToFile — This method stores an in-memory hash to disk

说明

public void QuickHashIntStringHash::saveToFile ( string $filename )

This method stores an existing hash to a file on disk, in the same format that loadFromFile() can read.

参数

filename

The filename of the file to store the hash in.

返回值

没有返回值。

范例

Example #1 QuickHashIntStringHash::saveToFile() example

<?php
$hash = new QuickHashIntStringHash( 1024 );
var_dump( $hash->exists( 4 ) );
var_dump( $hash->add( 4, "fourty three" ) );
var_dump( $hash->exists( 4 ) );
var_dump( $hash->add( 4, "fifty two" ) );

$hash->saveToFile( '/tmp/test.string.hash' );
?>

QuickHashIntStringHash::loadFromString
QuickHashIntStringHash::saveToString
QuickHashIntStringHash


This method returns a serialized version of the hash

QuickHashIntStringHash::saveToFile
QuickHashIntStringHash::set
QuickHashIntStringHash
PHP Manual

QuickHashIntStringHash::saveToString

(PECL quickhash >= Unknown)

QuickHashIntStringHash::saveToString — This method returns a serialized version of the hash

说明

public string QuickHashIntStringHash::saveToString ( void )

This method returns a serialized version of the hash in the same format that loadFromString() can read.

返回值

This method returns a string containing a serialized format of the hash. Each element is stored as a four byte value in the Endianness that the current system uses.

范例

Example #1 QuickHashIntStringHash::saveToString() example

<?php
$hash = new QuickHashIntStringHash( 1024 );
var_dump( $hash->exists( 4 ) );
var_dump( $hash->add( 4, "thirty four" ) );
var_dump( $hash->exists( 4 ) );
var_dump( $hash->add( 5, "fifty five" ) );

var_dump( $hash->saveToString() );
?>

QuickHashIntStringHash::saveToFile
QuickHashIntStringHash::set
QuickHashIntStringHash


This method updates an entry in the hash with a new value, or adds a new one if the entry doesn't exist

QuickHashIntStringHash::saveToString
QuickHashIntStringHash::update
QuickHashIntStringHash
PHP Manual

QuickHashIntStringHash::set

(PECL quickhash >= Unknown)

QuickHashIntStringHash::set — This method updates an entry in the hash with a new value, or adds a new one if the entry doesn't exist

说明

public int QuickHashIntStringHash::set ( int $key , string $value )

This method tries to update an entry with a new value. In case the entry did not yet exist, it will instead add a new entry. It returns whether the entry was added or update. If there are duplicate keys, only the first found element will get an updated value. Use QuickHashIntStringHash::CHECK_FOR_DUPES during hash creation to prevent duplicate keys from being part of the hash.

参数

key

The key of the entry to add or update.

value

The value of the entry to add. If a non-string is passed, it will be converted to a string automatically if possible.

返回值

2 if the entry was found and updated, 1 if the entry was newly added or 0 if there was an error.

范例

Example #1 QuickHashIntStringHash::set() example

<?php
$hash = new QuickHashIntStringHash( 1024 );

echo "Set->Add\n";
var_dump( $hash->get( 46692 ) );
var_dump( $hash->set( 46692, "sixteen thousand ninety one" ) );
var_dump( $hash->get( 46692 ) );

echo "Set->Update\n";
var_dump( $hash->set( 46692, "twenty nine thousand nine hundred six" ) );
var_dump( $hash->get( 46692 ) );
?>

以上例程的输出类似于：

Set->Add
bool(false)
int(2)
string(27) "sixteen thousand ninety one"
Set->Update
int(1)
string(37) "twenty nine thousand nine hundred six"

QuickHashIntStringHash::saveToString
QuickHashIntStringHash::update
QuickHashIntStringHash


This method updates an entry in the hash with a new value

QuickHashIntStringHash::set
反射
QuickHashIntStringHash
PHP Manual

QuickHashIntStringHash::update

(PECL quickhash >= Unknown)

QuickHashIntStringHash::update — This method updates an entry in the hash with a new value

说明

public bool QuickHashIntStringHash::update ( int $key , string $value )

This method updates an entry with a new value, and returns whether the entry was update. If there are duplicate keys, only the first found element will get an updated value. Use QuickHashIntStringHash::CHECK_FOR_DUPES during hash creation to prevent duplicate keys from being part of the hash.

参数

key

The key of the entry to add.

value

The new value for the entry. If a non-string is passed, it will be converted to a string automatically if possible.

返回值

TRUE when the entry was found and updated, and FALSE if the entry was not part of the hash already.

范例

Example #1 QuickHashIntStringHash::update() example

<?php
$hash->add( 161803398, "--" );
$hash->add( 314159265, "a lot" );

echo $hash->get( 161803398 ), "\n";
echo $hash->get( 314159265 ), "\n";

var_dump( $hash->update( 314159265, "a lot plus one" ) );
var_dump( $hash->update( 314159999, "a lot plus one" ) );

echo $hash->get( 161803398 ), "\n";
echo $hash->get( 314159265 ), "\n";
?>

以上例程的输出类似于：

--
a lot
bool(true)
bool(false)
--
a lot plus one

QuickHashIntStringHash::set
反射
QuickHashIntStringHash


反射

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • 扩展
  • Reflection — Reflection 类
    • Reflection::export — Exports
    • Reflection::getModifierNames — 获取修饰符的名称
  • ReflectionClass — ReflectionClass 类
    • ReflectionClass::__construct — 构造一个 ReflectionClass 类
    • ReflectionClass::export — 导出一个类
    • ReflectionClass::getConstant — 获取定义过的一个常量
    • ReflectionClass::getConstants — 获取一组常量
    • ReflectionClass::getConstructor — 获取类的构造函数
    • ReflectionClass::getDefaultProperties — 获取默认属性
    • ReflectionClass::getDocComment — 获取文档注释
    • ReflectionClass::getEndLine — 获取最后一行的行数
    • ReflectionClass::getExtension — 根据已定义的类获取所在扩展的 ReflectionExtension 对象
    • ReflectionClass::getExtensionName — 获取定义的类所在的扩展的名称
    • ReflectionClass::getFileName — 获取定义类的文件名
    • ReflectionClass::getInterfaceNames — 获取接口（interface）名称
    • ReflectionClass::getInterfaces — 获取接口
    • ReflectionClass::getMethod — 获取一个类方法的 ReflectionMethod。
    • ReflectionClass::getMethods — 获取方法的数组
    • ReflectionClass::getModifiers — 获取修饰符
    • ReflectionClass::getName — 获取类名
    • ReflectionClass::getNamespaceName — 获取命名空间的名称
    • ReflectionClass::getParentClass — 获取父类
    • ReflectionClass::getProperties — 获取一组属性
    • ReflectionClass::getProperty — 获取类的一个属性的 ReflectionProperty
    • ReflectionClass::getShortName — 获取短名
    • ReflectionClass::getStartLine — 获取起始行号
    • ReflectionClass::getStaticProperties — 获取静态（static）属性
    • ReflectionClass::getStaticPropertyValue — 获取静态（static）属性的值
    • ReflectionClass::getTraitAliases — 返回 trait 别名的一个数组
    • ReflectionClass::getTraitNames — 返回这个类所使用 traits 的名称的数组
    • ReflectionClass::getTraits — 返回这个类所使用的 traits 数组
    • ReflectionClass::hasConstant — 检查常量是否已经定义
    • ReflectionClass::hasMethod — 检查方法是否已定义
    • ReflectionClass::hasProperty — 检查属性是否已定义
    • ReflectionClass::implementsInterface — 接口的实现
    • ReflectionClass::inNamespace — 检查是否位于命名空间中
    • ReflectionClass::isAbstract — 检查类是否是抽象类（abstract）
    • ReflectionClass::isAnonymous — 检查类是否是匿名类
    • ReflectionClass::isCloneable — 返回了一个类是否可复制
    • ReflectionClass::isFinal — 检查类是否声明为 final
    • ReflectionClass::isInstance — 检查类的实例
    • ReflectionClass::isInstantiable — 检查类是否可实例化
    • ReflectionClass::isInterface — 检查类是否是一个接口（interface）
    • ReflectionClass::isInternal — 检查类是否由扩展或核心在内部定义
    • ReflectionClass::isIterateable — 检查是否可迭代（iterateable）
    • ReflectionClass::isSubclassOf — 检查是否为一个子类
    • ReflectionClass::isTrait — 返回了是否为一个 trait
    • ReflectionClass::isUserDefined — 检查是否由用户定义的
    • ReflectionClass::newInstance — 从指定的参数创建一个新的类实例
    • ReflectionClass::newInstanceArgs — 从给出的参数创建一个新的类实例。
    • ReflectionClass::newInstanceWithoutConstructor — 创建一个新的类实例而不调用它的构造函数
    • ReflectionClass::setStaticPropertyValue — 设置静态属性的值
    • ReflectionClass::__toString — 返回 ReflectionClass 对象字符串的表示形式。
  • ReflectionZendExtension — ReflectionZendExtension 类
    • ReflectionZendExtension::__clone — Clone handler
    • ReflectionZendExtension::__construct — Constructor
    • ReflectionZendExtension::export — Export
    • ReflectionZendExtension::getAuthor — Gets author
    • ReflectionZendExtension::getCopyright — Gets copyright
    • ReflectionZendExtension::getName — Gets name
    • ReflectionZendExtension::getURL — Gets URL
    • ReflectionZendExtension::getVersion — Gets version
    • ReflectionZendExtension::__toString — To string handler
  • ReflectionExtension — ReflectionExtension 类
    • ReflectionExtension::__clone — Clones
    • ReflectionExtension::__construct — Constructs a ReflectionExtension
    • ReflectionExtension::export — Export
    • ReflectionExtension::getClasses — Gets classes
    • ReflectionExtension::getClassNames — 获取类名称
    • ReflectionExtension::getConstants — 获取常量
    • ReflectionExtension::getDependencies — 获取依赖
    • ReflectionExtension::getFunctions — 获取扩展中的函数
    • ReflectionExtension::getINIEntries — 获取ini配置
    • ReflectionExtension::getName — 获取扩展名称
    • ReflectionExtension::getVersion — 获取扩展版本号
    • ReflectionExtension::info — 输出扩展信息
    • ReflectionExtension::isPersistent — 返回扩展是否持久化载入
    • ReflectionExtension::isTemporary — 返回扩展是否是临时载入
    • ReflectionExtension::__toString — To string
  • ReflectionFunction — ReflectionFunction 类
    • ReflectionFunction::__construct — Constructs a ReflectionFunction object
    • ReflectionFunction::export — Exports function
    • ReflectionFunction::getClosure — Returns a dynamically created closure for the function
    • ReflectionFunction::invoke — Invokes function
    • ReflectionFunction::invokeArgs — Invokes function args
    • ReflectionFunction::isDisabled — Checks if function is disabled
    • ReflectionFunction::__toString — To string
  • ReflectionFunctionAbstract — ReflectionFunctionAbstract 类
    • ReflectionFunctionAbstract::__clone — 复制函数
    • ReflectionFunctionAbstract::getClosureScopeClass — Returns the scope associated to the closure
    • ReflectionFunctionAbstract::getClosureThis — 返回本身的匿名函数
    • ReflectionFunctionAbstract::getDocComment — 获取注释内容
    • ReflectionFunctionAbstract::getEndLine — 获取结束行号
    • ReflectionFunctionAbstract::getExtension — 获取扩展信息
    • ReflectionFunctionAbstract::getExtensionName — 获取扩展名称
    • ReflectionFunctionAbstract::getFileName — 获取文件名称
    • ReflectionFunctionAbstract::getName — 获取函数名称
    • ReflectionFunctionAbstract::getNamespaceName — 获取命名空间
    • ReflectionFunctionAbstract::getNumberOfParameters — 获取参数数目
    • ReflectionFunctionAbstract::getNumberOfRequiredParameters — 获取必须输入参数个数
    • ReflectionFunctionAbstract::getParameters — 获取参数
    • ReflectionFunctionAbstract::getReturnType — Gets the specified return type of a function
    • ReflectionFunctionAbstract::getShortName — 获取函数短名称
    • ReflectionFunctionAbstract::getStartLine — 获取开始行号
    • ReflectionFunctionAbstract::getStaticVariables — 获取静态变量
    • ReflectionFunctionAbstract::hasReturnType — Checks if the function has a specified return type
    • ReflectionFunctionAbstract::inNamespace — 检查是否处于命名空间
    • ReflectionFunctionAbstract::isClosure — 检查是否是匿名函数
    • ReflectionFunctionAbstract::isDeprecated — 检查是否已经弃用
    • ReflectionFunctionAbstract::isGenerator — 判断函数是否是一个生成器函数
    • ReflectionFunctionAbstract::isInternal — 判断函数是否是内置函数
    • ReflectionFunctionAbstract::isUserDefined — 检查是否是用户定义
    • ReflectionFunctionAbstract::isVariadic — Checks if the function is variadic
    • ReflectionFunctionAbstract::returnsReference — 检查是否返回参考信息
    • ReflectionFunctionAbstract::__toString — 字符串化
  • ReflectionMethod — ReflectionMethod 类
    • ReflectionMethod::__construct — ReflectionMethod 的构造函数
    • ReflectionMethod::export — 输出一个回调方法
    • ReflectionMethod::getClosure — 返回一个动态建立的方法调用接口，译者注：可以使用这个返回值直接调用非公开方法。
    • ReflectionMethod::getDeclaringClass — 获取反射函数调用参数的类表达
    • ReflectionMethod::getModifiers — 获取方法的修饰符
    • ReflectionMethod::getPrototype — 返回方法原型 (如果存在)
    • ReflectionMethod::invoke — Invoke
    • ReflectionMethod::invokeArgs — 带参数执行
    • ReflectionMethod::isAbstract — 判断方法是否是抽象方法
    • ReflectionMethod::isConstructor — 判断方法是否是构造方法
    • ReflectionMethod::isDestructor — 判断方法是否是析构方法
    • ReflectionMethod::isFinal — 判断方法是否定义 final
    • ReflectionMethod::isPrivate — 判断方法是否是私有方法
    • ReflectionMethod::isProtected — 判断方法是否是保护方法 (protected)
    • ReflectionMethod::isPublic — 判断方法是否是公开方法
    • ReflectionMethod::isStatic — 判断方法是否是静态方法
    • ReflectionMethod::setAccessible — 设置方法是否访问
    • ReflectionMethod::__toString — 返回反射方法对象的字符串表达
  • ReflectionObject — ReflectionObject 类
    • ReflectionObject::__construct — Constructs a ReflectionObject
    • ReflectionObject::export — Export
  • ReflectionParameter — ReflectionParameter 类
    • ReflectionParameter::allowsNull — Checks if null is allowed
    • ReflectionParameter::canBePassedByValue — Returns whether this parameter can be passed by value
    • ReflectionParameter::__clone — Clone
    • ReflectionParameter::__construct — Construct
    • ReflectionParameter::export — Exports
    • ReflectionParameter::getClass — Get the type hinted class
    • ReflectionParameter::getDeclaringClass — Gets declaring class
    • ReflectionParameter::getDeclaringFunction — Gets declaring function
    • ReflectionParameter::getDefaultValue — Gets default parameter value
    • ReflectionParameter::getDefaultValueConstantName — Returns the default value's constant name if default value is constant or null
    • ReflectionParameter::getName — Gets parameter name
    • ReflectionParameter::getPosition — Gets parameter position
    • ReflectionParameter::getType — Gets a parameter's type
    • ReflectionParameter::hasType — Checks if parameter has a type
    • ReflectionParameter::isArray — Checks if parameter expects an array
    • ReflectionParameter::isCallable — Returns whether parameter MUST be callable
    • ReflectionParameter::isDefaultValueAvailable — Checks if a default value is available
    • ReflectionParameter::isDefaultValueConstant — Returns whether the default value of this parameter is constant
    • ReflectionParameter::isOptional — Checks if optional
    • ReflectionParameter::isPassedByReference — Checks if passed by reference
    • ReflectionParameter::isVariadic — Checks if the parameter is variadic
    • ReflectionParameter::__toString — To string
  • ReflectionProperty — ReflectionProperty 类
    • ReflectionProperty::__clone — Clone
    • ReflectionProperty::__construct — Construct a ReflectionProperty object
    • ReflectionProperty::export — Export
    • ReflectionProperty::getDeclaringClass — Gets declaring class
    • ReflectionProperty::getDocComment — Gets the property doc comment
    • ReflectionProperty::getModifiers — Gets modifiers
    • ReflectionProperty::getName — Gets property name
    • ReflectionProperty::getValue — Gets value
    • ReflectionProperty::isDefault — Checks if property is a default property
    • ReflectionProperty::isPrivate — Checks if property is private
    • ReflectionProperty::isProtected — Checks if property is protected
    • ReflectionProperty::isPublic — Checks if property is public
    • ReflectionProperty::isStatic — Checks if property is static
    • ReflectionProperty::setAccessible — Set property accessibility
    • ReflectionProperty::setValue — Set property value
    • ReflectionProperty::__toString — To string
  • Reflector — Reflector 接口
    • Reflector::export — Exports
    • Reflector::__toString — 转化成字符串
  • ReflectionException — ReflectionException 类
QuickHashIntStringHash::update
简介
变量与类型相关扩展


简介

PHP 5 具有完整的反射 API，添加了对类、接口、函数、方法和扩展进行反向工程的能力。 此外，反射 API 提供了方法来取出函数、类和方法中的文档注释。

请注意部分内部 API 丢失了反射扩展工作所需的代码。 例如，一个内置的 PHP 类可能丢失了反射属性的数据。这些少数的情况被认为是错误，不过， 正因为如此，它们应该被发现和修复。

反射
安装／配置
反射


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
反射


预定义常量

每个类描述了它自己的常量。

资源类型
范例
反射


范例

在反射文档中存在很多例子，通常位于每个类的 __construct 文档中。

Example #1 Shell 里的一个反射例子（一个终端）

$ php --rf strlen
$ php --rc finfo
$ php --re json
$ php --ri dom

以上例程的输出类似于：

Function [ <internal:Core> function strlen ] {

  - Parameters [1] {
    Parameter #0 [ <required> $str ]
  }
}

Class [ <internal:fileinfo> class finfo ] {

  - Constants [0] {
  }

  - Static properties [0] {
  }

  - Static methods [0] {
  }

  - Properties [0] {
  }

  - Methods [4] {
    Method [ <internal:fileinfo, ctor> public method finfo ] {

      - Parameters [2] {
        Parameter #0 [ <optional> $options ]
        Parameter #1 [ <optional> $arg ]
      }
    }

    Method [ <internal:fileinfo> public method set_flags ] {

      - Parameters [1] {
        Parameter #0 [ <required> $options ]
      }
    }

    Method [ <internal:fileinfo> public method file ] {

      - Parameters [3] {
        Parameter #0 [ <required> $filename ]
        Parameter #1 [ <optional> $options ]
        Parameter #2 [ <optional> $context ]
      }
    }

    Method [ <internal:fileinfo> public method buffer ] {

      - Parameters [3] {
        Parameter #0 [ <required> $string ]
        Parameter #1 [ <optional> $options ]
        Parameter #2 [ <optional> $context ]
      }
    }
  }
}

Extension [ <persistent> extension #23 json version 1.2.1 ] {

  - Constants [10] {
    Constant [ integer JSON_HEX_TAG ] { 1 }
    Constant [ integer JSON_HEX_AMP ] { 2 }
    Constant [ integer JSON_HEX_APOS ] { 4 }
    Constant [ integer JSON_HEX_QUOT ] { 8 }
    Constant [ integer JSON_FORCE_OBJECT ] { 16 }
    Constant [ integer JSON_ERROR_NONE ] { 0 }
    Constant [ integer JSON_ERROR_DEPTH ] { 1 }
    Constant [ integer JSON_ERROR_STATE_MISMATCH ] { 2 }
    Constant [ integer JSON_ERROR_CTRL_CHAR ] { 3 }
    Constant [ integer JSON_ERROR_SYNTAX ] { 4 }
  }

  - Functions {
    Function [ <internal:json> function json_encode ] {

      - Parameters [2] {
        Parameter #0 [ <required> $value ]
        Parameter #1 [ <optional> $options ]
      }
    }
    Function [ <internal:json> function json_decode ] {

      - Parameters [3] {
        Parameter #0 [ <required> $json ]
        Parameter #1 [ <optional> $assoc ]
        Parameter #2 [ <optional> $depth ]
      }
    }
    Function [ <internal:json> function json_last_error ] {

      - Parameters [0] {
      }
    }
  }
}

dom

DOM/XML => enabled
DOM/XML API Version => 20031129
libxml Version => 2.7.3
HTML Support => enabled
XPath Support => enabled
XPointer Support => enabled
Schema Support => enabled
RelaxNG Support => enabled
预定义常量
扩展
反射


扩展

如果你想创建内建类的专门版本（比如说，在创建并导出高亮 HTML 时，以易于访问的成员变量来取代方法或使用实用的方法）， 你可以继续并扩展它们。

Example #1 扩展内置的类

<?php
/**
 * My Reflection_Method class
 */
class My_Reflection_Method extends ReflectionMethod
{
    public $visibility = array();

    public function __construct($o, $m)
    {
        parent::__construct($o, $m);
        $this->visibility = Reflection::getModifierNames($this->getModifiers());
    }
}

/**
 * Demo class #1
 *
 */
class T {
    protected function x() {}
}

/**
 * Demo class #2
 *
 */
class U extends T {
    function x() {}
}

// 输出信息
var_dump(new My_Reflection_Method('U', 'x'));
?>

以上例程的输出类似于：

object(My_Reflection_Method)#1 (3) {
  ["visibility"]=>
  array(1) {
    [0]=>
    string(6) "public"
  }
  ["name"]=>
  string(1) "x"
  ["class"]=>
  string(1) "U"
}
Caution

如果你重写了构造函数，记住在写任何插入的代码之前要先调用父类的构造函数。 不这么做将会导致以下的结果： Fatal error: Internal error: Failed to retrieve the reflection object

范例
Reflection
反射


Reflection 类

(PHP 5, PHP 7)

简介

反射（reflection）类。

类摘要

Reflection {
/* 方法 */
public static string export ( Reflector $reflector [, bool $return = false ] )
public static array getModifierNames ( int $modifiers )
}

Table of Contents

  • Reflection::export — Exports
  • Reflection::getModifierNames — 获取修饰符的名称
扩展
Reflection::export
反射


Exports

Reflection
Reflection::getModifierNames
Reflection
PHP Manual

Reflection::export

(PHP 5, PHP 7)

Reflection::export — Exports

说明

public static string Reflection::export ( Reflector $reflector [, bool $return = false ] )

导出一个反射（reflection）。

Warning

本函数还未编写文档，仅有参数列表。

参数

reflector

导出的反射。

return

设为 TRUE 时返回导出结果，设为 FALSE（默认值）则忽略返回。

返回值

如果参数 return 设为 TRUE，导出结果将作为 string 返回，否则返回 NULL。

参见

  • Reflection::getModifierNames() - 获取修饰符的名称

Reflection
Reflection::getModifierNames
Reflection


获取修饰符的名称

Reflection::export
ReflectionClass
Reflection
PHP Manual

Reflection::getModifierNames

(PHP 5, PHP 7)

Reflection::getModifierNames — 获取修饰符的名称

说明

public static array Reflection::getModifierNames ( int $modifiers )

获取修饰符的名称。

Warning

本函数还未编写文档，仅有参数列表。

参数

modifiers

根据数字的值获取修饰符。

返回值

修饰符名称的一个数组。

参见

  • Reflection::export() - Exports

Reflection::export
ReflectionClass
Reflection


ReflectionClass 类

(PHP 5, PHP 7)

简介

ReflectionClass 类报告了一个类的有关信息。

类摘要

ReflectionClass implements Reflector {
/* 常量 */
const integer IS_IMPLICIT_ABSTRACT = 16 ;
const integer IS_EXPLICIT_ABSTRACT = 32 ;
const integer IS_FINAL = 64 ;
/* 属性 */
public $name ;
/* 方法 */
public __construct ( mixed $argument )
public static string export ( mixed $argument [, bool $return = false ] )
public mixed getConstant ( string $name )
public array getConstants ( void )
public ReflectionMethod getConstructor ( void )
public array getDefaultProperties ( void )
public string getDocComment ( void )
public int getEndLine ( void )
public ReflectionExtension getExtension ( void )
public string getExtensionName ( void )
public string getFileName ( void )
public array getInterfaceNames ( void )
public array getInterfaces ( void )
public ReflectionMethod getMethod ( string $name )
public array getMethods ([ int $filter ] )
public int getModifiers ( void )
public string getName ( void )
public string getNamespaceName ( void )
public object getParentClass ( void )
public array getProperties ([ int $filter ] )
public ReflectionProperty getProperty ( string $name )
public string getShortName ( void )
public int getStartLine ( void )
public array getStaticProperties ( void )
public mixed getStaticPropertyValue ( string $name [, mixed &$def_value ] )
public array getTraitAliases ( void )
public array getTraitNames ( void )
public array getTraits ( void )
public bool hasConstant ( string $name )
public bool hasMethod ( string $name )
public bool hasProperty ( string $name )
public bool implementsInterface ( string $interface )
public bool inNamespace ( void )
public bool isAbstract ( void )
public bool isAnonymous ( void )
public bool isCloneable ( void )
public bool isFinal ( void )
public bool isInstance ( object $object )
public bool isInstantiable ( void )
public bool isInterface ( void )
public bool isInternal ( void )
public bool isIterateable ( void )
public bool isSubclassOf ( string $class )
public bool isTrait ( void )
public bool isUserDefined ( void )
public object newInstance ( mixed $args [, mixed $... ] )
public object newInstanceArgs ([ array $args ] )
public object newInstanceWithoutConstructor ( void )
public void setStaticPropertyValue ( string $name , string $value )
public string __toString ( void )
}

属性

name

类的名称。只读，并在尝试赋值的时候会抛出 ReflectionException。

预定义常量

ReflectionClass 修饰符

ReflectionClass::IS_IMPLICIT_ABSTRACT

指示了类是一个抽象类（abstract）， 因为它有抽象（abstract）方法。

ReflectionClass::IS_EXPLICIT_ABSTRACT

指示了类是一个抽象类（abstract）， 因为它已明确定义。

ReflectionClass::IS_FINAL

指示这是一个 final 类。

Table of Contents

  • ReflectionClass::__construct — 构造一个 ReflectionClass 类
  • ReflectionClass::export — 导出一个类
  • ReflectionClass::getConstant — 获取定义过的一个常量
  • ReflectionClass::getConstants — 获取一组常量
  • ReflectionClass::getConstructor — 获取类的构造函数
  • ReflectionClass::getDefaultProperties — 获取默认属性
  • ReflectionClass::getDocComment — 获取文档注释
  • ReflectionClass::getEndLine — 获取最后一行的行数
  • ReflectionClass::getExtension — 根据已定义的类获取所在扩展的 ReflectionExtension 对象
  • ReflectionClass::getExtensionName — 获取定义的类所在的扩展的名称
  • ReflectionClass::getFileName — 获取定义类的文件名
  • ReflectionClass::getInterfaceNames — 获取接口（interface）名称
  • ReflectionClass::getInterfaces — 获取接口
  • ReflectionClass::getMethod — 获取一个类方法的 ReflectionMethod。
  • ReflectionClass::getMethods — 获取方法的数组
  • ReflectionClass::getModifiers — 获取修饰符
  • ReflectionClass::getName — 获取类名
  • ReflectionClass::getNamespaceName — 获取命名空间的名称
  • ReflectionClass::getParentClass — 获取父类
  • ReflectionClass::getProperties — 获取一组属性
  • ReflectionClass::getProperty — 获取类的一个属性的 ReflectionProperty
  • ReflectionClass::getShortName — 获取短名
  • ReflectionClass::getStartLine — 获取起始行号
  • ReflectionClass::getStaticProperties — 获取静态（static）属性
  • ReflectionClass::getStaticPropertyValue — 获取静态（static）属性的值
  • ReflectionClass::getTraitAliases — 返回 trait 别名的一个数组
  • ReflectionClass::getTraitNames — 返回这个类所使用 traits 的名称的数组
  • ReflectionClass::getTraits — 返回这个类所使用的 traits 数组
  • ReflectionClass::hasConstant — 检查常量是否已经定义
  • ReflectionClass::hasMethod — 检查方法是否已定义
  • ReflectionClass::hasProperty — 检查属性是否已定义
  • ReflectionClass::implementsInterface — 接口的实现
  • ReflectionClass::inNamespace — 检查是否位于命名空间中
  • ReflectionClass::isAbstract — 检查类是否是抽象类（abstract）
  • ReflectionClass::isAnonymous — 检查类是否是匿名类
  • ReflectionClass::isCloneable — 返回了一个类是否可复制
  • ReflectionClass::isFinal — 检查类是否声明为 final
  • ReflectionClass::isInstance — 检查类的实例
  • ReflectionClass::isInstantiable — 检查类是否可实例化
  • ReflectionClass::isInterface — 检查类是否是一个接口（interface）
  • ReflectionClass::isInternal — 检查类是否由扩展或核心在内部定义
  • ReflectionClass::isIterateable — 检查是否可迭代（iterateable）
  • ReflectionClass::isSubclassOf — 检查是否为一个子类
  • ReflectionClass::isTrait — 返回了是否为一个 trait
  • ReflectionClass::isUserDefined — 检查是否由用户定义的
  • ReflectionClass::newInstance — 从指定的参数创建一个新的类实例
  • ReflectionClass::newInstanceArgs — 从给出的参数创建一个新的类实例。
  • ReflectionClass::newInstanceWithoutConstructor — 创建一个新的类实例而不调用它的构造函数
  • ReflectionClass::setStaticPropertyValue — 设置静态属性的值
  • ReflectionClass::__toString — 返回 ReflectionClass 对象字符串的表示形式。
Reflection::getModifierNames
ReflectionClass::__construct
反射


构造一个 ReflectionClass 类

ReflectionClass
ReflectionClass::export
ReflectionClass
PHP Manual

ReflectionClass::__construct

(PHP 5, PHP 7)

ReflectionClass::__construct — 构造一个 ReflectionClass 类

说明

public ReflectionClass::__construct ( mixed $argument )

构造一个新的 ReflectionClass 对象。

Warning

本函数还未编写文档，仅有参数列表。

参数

argument

既可以是一个包含类名的字符串（string）也可以是一个对象（object）。

返回值

没有返回值。

范例

Example #1 ReflectionClass 的基本用法

<?php
Reflection::export(new ReflectionClass('Exception'));
?>

以上例程的输出类似于：

Class [ <internal:Core> class Exception ] {

  - Constants [0] {
  }

  - Static properties [0] {
  }

  - Static methods [0] {
  }

  - Properties [7] {
    Property [ <default> protected $message ]
    Property [ <default> private $string ]
    Property [ <default> protected $code ]
    Property [ <default> protected $file ]
    Property [ <default> protected $line ]
    Property [ <default> private $trace ]
    Property [ <default> private $previous ]
  }

  - Methods [10] {
    Method [ <internal:Core> final private method __clone ] {
    }

    Method [ <internal:Core, ctor> public method __construct ] {

      - Parameters [3] {
        Parameter #0 [ <optional> $message ]
        Parameter #1 [ <optional> $code ]
        Parameter #2 [ <optional> $previous ]
      }
    }

    Method [ <internal:Core> final public method getMessage ] {
    }

    Method [ <internal:Core> final public method getCode ] {
    }

    Method [ <internal:Core> final public method getFile ] {
    }

    Method [ <internal:Core> final public method getLine ] {
    }

    Method [ <internal:Core> final public method getTrace ] {
    }

    Method [ <internal:Core> final public method getPrevious ] {
    }

    Method [ <internal:Core> final public method getTraceAsString ] {
    }

    Method [ <internal:Core> public method __toString ] {
    }
  }
}

参见

  • ReflectionObject::__construct() - Constructs a ReflectionObject
  • Constructors

ReflectionClass
ReflectionClass::export
ReflectionClass


导出一个类

ReflectionClass::__construct
ReflectionClass::getConstant
ReflectionClass
PHP Manual

ReflectionClass::export

(PHP 5, PHP 7)

ReflectionClass::export — 导出一个类

说明

public static string ReflectionClass::export ( mixed $argument [, bool $return = false ] )

导出一个反射后的类。

参数

argument

导出的反射。

return

设为 TRUE 时返回导出结果，设为 FALSE（默认值）则忽略返回。

返回值

如果参数 return 设为 TRUE，导出结果将作为 string 返回，否则返回 NULL。

范例

Example #1 ReflectionClass::export() 的基本用法

<?php
class Apple {
    public $var1;
    public $var2 = 'Orange';

    public function type() {
        return 'Apple';
    }
}
ReflectionClass::export('Apple');
?>

以上例程的输出类似于：

Class [ <user> class Apple ] {
  @@ php shell code 1-8

  - Constants [0] {
  }

  - Static properties [0] {
  }

  - Static methods [0] {
  }

  - Properties [2] {
    Property [ <default> public $var1 ]
    Property [ <default> public $var2 ]
  }

  - Methods [1] {
    Method [ <user> public method type ] {
      @@ php shell code 5 - 7
    }
  }
}

参见

  • ReflectionClass::getName() - 获取类名

ReflectionClass::__construct
ReflectionClass::getConstant
ReflectionClass


获取定义过的一个常量

ReflectionClass::export
ReflectionClass::getConstants
ReflectionClass
PHP Manual

ReflectionClass::getConstant

(PHP 5, PHP 7)

ReflectionClass::getConstant — 获取定义过的一个常量

说明

public mixed ReflectionClass::getConstant ( string $name )

获取定义过的一个常量。

Warning

本函数还未编写文档，仅有参数列表。

参数

name

常量的名称。

返回值

常量的值。

参见

  • ReflectionClass::getConstants() - 获取一组常量

ReflectionClass::export
ReflectionClass::getConstants
ReflectionClass


获取一组常量

ReflectionClass::getConstant
ReflectionClass::getConstructor
ReflectionClass
PHP Manual

ReflectionClass::getConstants

(PHP 5, PHP 7)

ReflectionClass::getConstants — 获取一组常量

说明

public array ReflectionClass::getConstants ( void )

获取一个类中所有已定义的常量。

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

常量的数组，常量名是数组的键，常量的值是数组的值。

参见

  • ReflectionClass::getConstant() - 获取定义过的一个常量

ReflectionClass::getConstant
ReflectionClass::getConstructor
ReflectionClass


获取类的构造函数

ReflectionClass::getConstants
ReflectionClass::getDefaultProperties
ReflectionClass
PHP Manual

ReflectionClass::getConstructor

(PHP 5, PHP 7)

ReflectionClass::getConstructor — 获取类的构造函数

说明

public ReflectionMethod ReflectionClass::getConstructor ( void )

获取已反射的类的构造函数。

参数

此函数没有参数。

返回值

一个 ReflectionMethod 对象，反射了类的构造函数，或者当类不存在构造函数时返回 NULL。

范例

Example #1 ReflectionClass::getConstructor() 的基本用法

<?php
$class = new ReflectionClass('ReflectionClass');
$constructor = $class->getConstructor();
var_dump($constructor);
?>

以上例程会输出：

object(ReflectionMethod)#2 (2) {
  ["name"]=>
  string(11) "__construct"
  ["class"]=>
  string(15) "ReflectionClass"
}

参见

  • ReflectionClass::getName() - 获取类名

ReflectionClass::getConstants
ReflectionClass::getDefaultProperties
ReflectionClass


获取默认属性

ReflectionClass::getConstructor
ReflectionClass::getDocComment
ReflectionClass
PHP Manual

ReflectionClass::getDefaultProperties

(PHP 5, PHP 7)

ReflectionClass::getDefaultProperties — 获取默认属性

说明

public array ReflectionClass::getDefaultProperties ( void )

获取类的默认属性（包括了继承的属性）。

Note:

This method only works for static properties when used on internal classes. The default value of a static class property can not be tracked when using this method on user defined classes.

参数

此函数没有参数。

返回值

默认属性的数组，其键是属性的名称，其值是属性的默认值或者在属性没有默认值时是 NULL。 这个函数不区分静态和非静态属性，也不考虑可见性修饰符。

范例

Example #1 ReflectionClass::getDefaultProperties() 例子

<?php
class Bar {
    protected $inheritedProperty = 'inheritedDefault';
}

class Foo extends Bar {
    public $property = 'propertyDefault';
    private $privateProperty = 'privatePropertyDefault';
    public static $staticProperty = 'staticProperty';
    public $defaultlessProperty;
}

$reflectionClass = new ReflectionClass('Foo');
var_dump($reflectionClass->getDefaultProperties());
?>

以上例程会输出：

array(5) {
   ["staticProperty"]=>
   string(14) "staticProperty"
   ["property"]=>
   string(15) "propertyDefault"
   ["privateProperty"]=>
   string(22) "privatePropertyDefault"
   ["defaultlessProperty"]=>
   NULL
   ["inheritedProperty"]=>
   string(16) "inheritedDefault"
}

参见

  • ReflectionClass::getProperties() - 获取一组属性
  • ReflectionClass::getStaticProperties() - 获取静态（static）属性
  • ReflectionClass::getProperty() - 获取类的一个属性的 ReflectionProperty

ReflectionClass::getConstructor
ReflectionClass::getDocComment
ReflectionClass


获取文档注释

ReflectionClass::getDefaultProperties
ReflectionClass::getEndLine
ReflectionClass
PHP Manual

ReflectionClass::getDocComment

(PHP 5 >= 5.1.0, PHP 7)

ReflectionClass::getDocComment — 获取文档注释

说明

public string ReflectionClass::getDocComment ( void )

从一个类中获取文档注释。

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

如果存在则返回文档注释，否则返回 FALSE。

范例

Example #1 ReflectionClass::getDocComment() 例子

<?php
/**
* A test class
*
* @param  foo bar
* @return baz
*/
class TestClass { }

$rc = new ReflectionClass('TestClass');
var_dump($rc->getDocComment())
?>

以上例程会输出：

string(55) "/**
* A test class
*
* @param  foo bar
* @return baz
*/"

参见

  • ReflectionClass::getName() - 获取类名

ReflectionClass::getDefaultProperties
ReflectionClass::getEndLine
ReflectionClass


获取最后一行的行数

ReflectionClass::getDocComment
ReflectionClass::getExtension
ReflectionClass
PHP Manual

ReflectionClass::getEndLine

(PHP 5, PHP 7)

ReflectionClass::getEndLine — 获取最后一行的行数

说明

public int ReflectionClass::getEndLine ( void )

从用户定义的类获取其最后一行的行数。

参数

此函数没有参数。

返回值

返回用户定义的类最后一行的行数，如果未知则返回 FALSE。

范例

Example #1 ReflectionClass::getEndLine() 例子

<?php
// Test Class
class TestClass { }

$rc = new ReflectionClass('TestClass');

echo $rc->getEndLine();
?>

以上例程会输出：

3

参见

  • ReflectionClass::getStartLine() - 获取起始行号

ReflectionClass::getDocComment
ReflectionClass::getExtension
ReflectionClass


根据已定义的类获取所在扩展的 ReflectionExtension 对象

ReflectionClass::getEndLine
ReflectionClass::getExtensionName
ReflectionClass
PHP Manual

ReflectionClass::getExtension

(PHP 5, PHP 7)

ReflectionClass::getExtension — 根据已定义的类获取所在扩展的 ReflectionExtension 对象

说明

public ReflectionExtension ReflectionClass::getExtension ( void )

获取已定义类的扩展的 ReflectionExtension 对象。

参数

此函数没有参数。

返回值

类所处的扩展的 ReflectionExtension 对象的表示，如果是用户定义的类则返回 NULL。

范例

Example #1 ReflectionClass::getExtension() 的基本用法

<?php
$class = new ReflectionClass('ReflectionClass');
$extension = $class->getExtension();
var_dump($extension);
?>

以上例程会输出：

object(ReflectionExtension)#2 (1) {
  ["name"]=>
  string(10) "Reflection"
}

参见

  • ReflectionClass::getExtensionName() - 获取定义的类所在的扩展的名称

ReflectionClass::getEndLine
ReflectionClass::getExtensionName
ReflectionClass


获取定义的类所在的扩展的名称

ReflectionClass::getExtension
ReflectionClass::getFileName
ReflectionClass
PHP Manual

ReflectionClass::getExtensionName

(PHP 5, PHP 7)

ReflectionClass::getExtensionName — 获取定义的类所在的扩展的名称

说明

public string ReflectionClass::getExtensionName ( void )

获取定义的类所在的扩展的名称。

参数

此函数没有参数。

返回值

获取定义的类所在的扩展的名称，如果是用户定义的类，则返回 FALSE。

范例

Example #1 ReflectionClass::getExtensionName() 的基本用法

<?php
$class = new ReflectionClass('ReflectionClass');
$extension = $class->getExtensionName();
var_dump($extension);
?>

以上例程会输出：

string(10) "Reflection"

参见

  • ReflectionClass::getExtension() - 根据已定义的类获取所在扩展的 ReflectionExtension 对象

ReflectionClass::getExtension
ReflectionClass::getFileName
ReflectionClass


获取定义类的文件名

ReflectionClass::getExtensionName
ReflectionClass::getInterfaceNames
ReflectionClass
PHP Manual

ReflectionClass::getFileName

(PHP 5, PHP 7)

ReflectionClass::getFileName — 获取定义类的文件名

说明

public string ReflectionClass::getFileName ( void )

获取类被定义的文件的文件名。

参数

此函数没有参数。

返回值

返回类所定义的文件名。如果这个类是在 PHP 核心或 PHP 扩展中定义的，则返回 FALSE。

参见

  • ReflectionClass::getExtensionName() - 获取定义的类所在的扩展的名称

ReflectionClass::getExtensionName
ReflectionClass::getInterfaceNames
ReflectionClass


获取接口（interface）名称

ReflectionClass::getFileName
ReflectionClass::getInterfaces
ReflectionClass
PHP Manual

ReflectionClass::getInterfaceNames

(PHP 5 >= 5.2.0, PHP 7)

ReflectionClass::getInterfaceNames — 获取接口（interface）名称

说明

public array ReflectionClass::getInterfaceNames ( void )

获取接口（interface）名称。

参数

此函数没有参数。

返回值

一个数值数组，接口（interface）的名称是数组的值。

范例

Example #1 ReflectionClass::getInterfaceNames() 例子

<?php
interface Foo { }

interface Bar { }

class Baz implements Foo, Bar { }

$rc1 = new ReflectionClass("Baz");

print_r($rc1->getInterfaceNames());
?>

以上例程的输出类似于：

Array
(
    [0] => Foo
    [1] => Bar
)

参见

  • ReflectionClass::getInterfaces() - 获取接口

ReflectionClass::getFileName
ReflectionClass::getInterfaces
ReflectionClass


获取接口

ReflectionClass::getInterfaceNames
ReflectionClass::getMethod
ReflectionClass
PHP Manual

ReflectionClass::getInterfaces

(PHP 5, PHP 7)

ReflectionClass::getInterfaces — 获取接口

说明

public array ReflectionClass::getInterfaces ( void )

获取接口。

参数

此函数没有参数。

返回值

接口的关联数组，数组键是接口（interface）的名称，数组的值是 ReflectionClass 对象。

范例

Example #1 ReflectionClass::getInterfaces() 例子

<?php
interface Foo { }

interface Bar { }

class Baz implements Foo, Bar { }

$rc1 = new ReflectionClass("Baz");

print_r($rc1->getInterfaces());
?>

以上例程的输出类似于：

Array
(
    [Foo] => ReflectionClass Object
        (
            [name] => Foo
        )

    [Bar] => ReflectionClass Object
        (
            [name] => Bar
        )

)

参见

  • ReflectionClass::getInterfaceNames() - 获取接口（interface）名称

ReflectionClass::getInterfaceNames
ReflectionClass::getMethod
ReflectionClass


获取一个类方法的 ReflectionMethod。

ReflectionClass::getInterfaces
ReflectionClass::getMethods
ReflectionClass
PHP Manual

ReflectionClass::getMethod

(PHP 5, PHP 7)

ReflectionClass::getMethod — 获取一个类方法的 ReflectionMethod。

说明

public ReflectionMethod ReflectionClass::getMethod ( string $name )

获取一个类方法的 ReflectionMethod。

参数

name

要反射的方法名称。

返回值

一个 ReflectionMethod。

错误／异常

如果方法不存在则会抛出 ReflectionException 异常。

范例

Example #1 ReflectionClass::getMethod() 的基本用法

<?php
$class = new ReflectionClass('ReflectionClass');
$method = $class->getMethod('getMethod');
var_dump($method);
?>

以上例程会输出：

object(ReflectionMethod)#2 (2) {
  ["name"]=>
  string(9) "getMethod"
  ["class"]=>
  string(15) "ReflectionClass"
}

参见

  • ReflectionClass::getMethods() - 获取方法的数组

ReflectionClass::getInterfaces
ReflectionClass::getMethods
ReflectionClass


获取方法的数组

ReflectionClass::getMethod
ReflectionClass::getModifiers
ReflectionClass
PHP Manual

ReflectionClass::getMethods

(PHP 5, PHP 7)

ReflectionClass::getMethods — 获取方法的数组

说明

public array ReflectionClass::getMethods ([ int $filter ] )

获取类的方法的一个数组。

参数

filter

过滤结果为仅包含某些属性的方法。默认不过滤。

ReflectionMethod::IS_STATIC、
ReflectionMethod::IS_PUBLIC、
ReflectionMethod::IS_PROTECTED、
ReflectionMethod::IS_PRIVATE、
ReflectionMethod::IS_ABSTRACT、
ReflectionMethod::IS_FINAL 的任意组合。

返回值

包含每个方法 ReflectionMethod 对象的数组。

范例

Example #1 ReflectionClass::getMethods() 的基本用法

<?php
class Apple {
    public function firstMethod() { }
    final protected function secondMethod() { }
    private static function thirdMethod() { }
}

$class = new ReflectionClass('Apple');
$methods = $class->getMethods();
var_dump($methods);
?>

以上例程会输出：

array(3) {
  [0]=>
  &object(ReflectionMethod)#2 (2) {
    ["name"]=>
    string(11) "firstMethod"
    ["class"]=>
    string(5) "Apple"
  }
  [1]=>
  &object(ReflectionMethod)#3 (2) {
    ["name"]=>
    string(12) "secondMethod"
    ["class"]=>
    string(5) "Apple"
  }
  [2]=>
  &object(ReflectionMethod)#4 (2) {
    ["name"]=>
    string(11) "thirdMethod"
    ["class"]=>
    string(5) "Apple"
  }
}

Example #2 从 ReflectionClass::getMethods() 中过滤结果

<?php
class Apple {
    public function firstMethod() { }
    final protected function secondMethod() { }
    private static function thirdMethod() { }
}

$class = new ReflectionClass('Apple');
$methods = $class->getMethods(ReflectionMethod::IS_STATIC | ReflectionMethod::IS_FINAL);
var_dump($methods);
?>

以上例程会输出：

array(2) {
  [0]=>
  &object(ReflectionMethod)#2 (2) {
    ["name"]=>
    string(12) "secondMethod"
    ["class"]=>
    string(5) "Apple"
  }
  [1]=>
  &object(ReflectionMethod)#3 (2) {
    ["name"]=>
    string(11) "thirdMethod"
    ["class"]=>
    string(5) "Apple"
  }
}

参见

  • ReflectionClass::getMethod() - 获取一个类方法的 ReflectionMethod。

ReflectionClass::getMethod
ReflectionClass::getModifiers
ReflectionClass


获取修饰符

ReflectionClass::getMethods
ReflectionClass::getName
ReflectionClass
PHP Manual

ReflectionClass::getModifiers

(PHP 5, PHP 7)

ReflectionClass::getModifiers — 获取修饰符

说明

public int ReflectionClass::getModifiers ( void )

返回这个类访问修饰符的位字段。

参数

此函数没有参数。

返回值

返回 修饰符常量 的位掩码。

参见

  • ReflectionClass::getProperties() - 获取一组属性

ReflectionClass::getMethods
ReflectionClass::getName
ReflectionClass


获取类名

ReflectionClass::getModifiers
ReflectionClass::getNamespaceName
ReflectionClass
PHP Manual

ReflectionClass::getName

(PHP 5, PHP 7)

ReflectionClass::getName — 获取类名

说明

public string ReflectionClass::getName ( void )

获取类的名称。

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The class name.

范例

Example #1 ReflectionClass::getName() 例子

<?php
namespace A\B;

class Foo { }

$function = new \ReflectionClass('stdClass');

var_dump($function->inNamespace());
var_dump($function->getName());
var_dump($function->getNamespaceName());
var_dump($function->getShortName());

$function = new \ReflectionClass('A\\B\\Foo');

var_dump($function->inNamespace());
var_dump($function->getName());
var_dump($function->getNamespaceName());
var_dump($function->getShortName());
?>

以上例程会输出：

bool(false)
string(8) "stdClass"
string(0) ""
string(8) "stdClass"

bool(true)
string(7) "A\B\Foo"
string(3) "A\B"
string(3) "Foo"

参见

  • ReflectionClass::getNamespaceName() - 获取命名空间的名称

ReflectionClass::getModifiers
ReflectionClass::getNamespaceName
ReflectionClass


获取命名空间的名称

ReflectionClass::getName
ReflectionClass::getParentClass
ReflectionClass
PHP Manual

ReflectionClass::getNamespaceName

(PHP 5 >= 5.3.0, PHP 7)

ReflectionClass::getNamespaceName — 获取命名空间的名称

说明

public string ReflectionClass::getNamespaceName ( void )

获取命名空间（namespace）的名称。

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

命名空间的名称。

范例

Example #1 ReflectionClass::getNamespaceName() 例子

<?php
namespace A\B;

class Foo { }

$class = new \ReflectionClass('stdClass');

var_dump($class->inNamespace());
var_dump($class->getName());
var_dump($class->getNamespaceName());
var_dump($class->getShortName());

$class = new \ReflectionClass('A\\B\\Foo');

var_dump($class->inNamespace());
var_dump($class->getName());
var_dump($class->getNamespaceName());
var_dump($class->getShortName());
?>

以上例程会输出：

bool(false)
string(8) "stdClass"
string(0) ""
string(8) "stdClass"

bool(true)
string(7) "A\B\Foo"
string(3) "A\B"
string(3) "Foo"

参见

  • ReflectionClass::getParentClass() - 获取父类
  • namespaces

ReflectionClass::getName
ReflectionClass::getParentClass
ReflectionClass


获取父类

ReflectionClass::getNamespaceName
ReflectionClass::getProperties
ReflectionClass
PHP Manual

ReflectionClass::getParentClass

(PHP 5, PHP 7)

ReflectionClass::getParentClass — 获取父类

说明

public object ReflectionClass::getParentClass ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

一个 ReflectionClass。

参见

  • ReflectionClass::__construct() - 构造一个 ReflectionClass 类

ReflectionClass::getNamespaceName
ReflectionClass::getProperties
ReflectionClass


获取一组属性

ReflectionClass::getParentClass
ReflectionClass::getProperty
ReflectionClass
PHP Manual

ReflectionClass::getProperties

(PHP 5, PHP 7)

ReflectionClass::getProperties — 获取一组属性

说明

public array ReflectionClass::getProperties ([ int $filter ] )

获取反射过的属性。

参数

filter

可选的过滤器，过滤为所需类型的属性。它使用 ReflectionProperty 常量 来配置，默认获取所有类型的属性。

返回值

ReflectionProperty 对象的数组。

范例

Example #1 ReflectionClass::getProperties() 过滤例子

这个例子延时了可选 filter 参数的用法，例子里实际上忽略了私有属性。

<?php
class Foo {
    public    $foo  = 1;
    protected $bar  = 2;
    private   $baz  = 3;
}

$foo = new Foo();

$reflect = new ReflectionClass($foo);
$props   = $reflect->getProperties(ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PROTECTED);

foreach ($props as $prop) {
    print $prop->getName() . "\n";
}

var_dump($props);

?>

以上例程的输出类似于：

foo
bar
array(2) {
  [0]=>
  object(ReflectionProperty)#3 (2) {
    ["name"]=>
    string(3) "foo"
    ["class"]=>
    string(3) "Foo"
  }
  [1]=>
  object(ReflectionProperty)#4 (2) {
    ["name"]=>
    string(3) "bar"
    ["class"]=>
    string(3) "Foo"
  }
}

参见

  • ReflectionClass::getProperty() - 获取类的一个属性的 ReflectionProperty
  • ReflectionProperty
  • ReflectionProperty 修饰符常量

ReflectionClass::getParentClass
ReflectionClass::getProperty
ReflectionClass


获取类的一个属性的 ReflectionProperty

ReflectionClass::getProperties
ReflectionClass::getShortName
ReflectionClass
PHP Manual

ReflectionClass::getProperty

(PHP 5, PHP 7)

ReflectionClass::getProperty — 获取类的一个属性的 ReflectionProperty

说明

public ReflectionProperty ReflectionClass::getProperty ( string $name )

获取类的一个属性的 ReflectionProperty。

参数

name

属性名。

返回值

一个 ReflectionProperty。

范例

Example #1 ReflectionClass::getProperty() 的基本用法

<?php
$class = new ReflectionClass('ReflectionClass');
$property = $class->getProperty('name');
var_dump($property);
?>

以上例程会输出：

object(ReflectionProperty)#2 (2) {
  ["name"]=>
  string(4) "name"
  ["class"]=>
  string(15) "ReflectionClass"
}

参见

  • ReflectionClass::getProperties() - 获取一组属性

ReflectionClass::getProperties
ReflectionClass::getShortName
ReflectionClass


获取短名

ReflectionClass::getProperty
ReflectionClass::getStartLine
ReflectionClass
PHP Manual

ReflectionClass::getShortName

(PHP 5 >= 5.3.0, PHP 7)

ReflectionClass::getShortName — 获取短名

说明

public string ReflectionClass::getShortName ( void )

获取类的短名，就是不含命名空间（namespace）的那一部分。

参数

此函数没有参数。

返回值

类的短名。

范例

Example #1 ReflectionClass::getShortName() 例子

<?php
namespace A\B;

class Foo { }

$function = new \ReflectionClass('stdClass');

var_dump($function->inNamespace());
var_dump($function->getName());
var_dump($function->getNamespaceName());
var_dump($function->getShortName());

$function = new \ReflectionClass('A\\B\\Foo');

var_dump($function->inNamespace());
var_dump($function->getName());
var_dump($function->getNamespaceName());
var_dump($function->getShortName());
?>

以上例程会输出：

bool(false)
string(8) "stdClass"
string(0) ""
string(8) "stdClass"

bool(true)
string(7) "A\B\Foo"
string(3) "A\B"
string(3) "Foo"

参见

  • ReflectionClass::getName() - 获取类名

ReflectionClass::getProperty
ReflectionClass::getStartLine
ReflectionClass


获取起始行号

ReflectionClass::getShortName
ReflectionClass::getStaticProperties
ReflectionClass
PHP Manual

ReflectionClass::getStartLine

(PHP 5, PHP 7)

ReflectionClass::getStartLine — 获取起始行号

说明

public int ReflectionClass::getStartLine ( void )

获取起始的行号。

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

起始的行号，类型是 integer 的。

参见

  • ReflectionClass::getEndLine() - 获取最后一行的行数

ReflectionClass::getShortName
ReflectionClass::getStaticProperties
ReflectionClass


获取静态（static）属性

ReflectionClass::getStartLine
ReflectionClass::getStaticPropertyValue
ReflectionClass
PHP Manual

ReflectionClass::getStaticProperties

(PHP 5, PHP 7)

ReflectionClass::getStaticProperties — 获取静态（static）属性

说明

public array ReflectionClass::getStaticProperties ( void )

获取静态（static）属性。

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

静态（static）的属性，类型是 array。

参见

  • ReflectionClass::getStaticPropertyValue() - 获取静态（static）属性的值
  • ReflectionClass::setStaticPropertyValue() - 设置静态属性的值

ReflectionClass::getStartLine
ReflectionClass::getStaticPropertyValue
ReflectionClass


获取静态（static）属性的值

ReflectionClass::getStaticProperties
ReflectionClass::getTraitAliases
ReflectionClass
PHP Manual

ReflectionClass::getStaticPropertyValue

(PHP 5 >= 5.1.0, PHP 7)

ReflectionClass::getStaticPropertyValue — 获取静态（static）属性的值

说明

public mixed ReflectionClass::getStaticPropertyValue ( string $name [, mixed &$def_value ] )

获取这个类里静态（static）属性的值。

参数

name

静态属性的名称，来返回它的值。

def_value

假如类没有定义 name 的 static 属性，将返回一个默认值。 如果属性不存在，并且省略了此参数，将会抛出 ReflectionException 。

返回值

静态属性的值。

范例

Example #1 ReflectionClass::getStaticPropertyValue() 的基本用法

<?php
class Apple {
    public static $color = 'Red';
}

$class = new ReflectionClass('Apple');
var_dump($class->getStaticPropertyValue('color'));
?>

以上例程会输出：

string(3) "Red"

参见

  • ReflectionClass::getStaticProperties() - 获取静态（static）属性
  • ReflectionClass::setStaticPropertyValue() - 设置静态属性的值

ReflectionClass::getStaticProperties
ReflectionClass::getTraitAliases
ReflectionClass


返回 trait 别名的一个数组

ReflectionClass::getStaticPropertyValue
ReflectionClass::getTraitNames
ReflectionClass
PHP Manual

ReflectionClass::getTraitAliases

(PHP >= 5.4.0)

ReflectionClass::getTraitAliases — 返回 trait 别名的一个数组

说明

public array ReflectionClass::getTraitAliases ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

返回了一个数组，新的方法名位于键中，原始名称（格式是 "TraitName::original"）位于数组的值中。 出现一个错误的情况下返回 NULL。

ReflectionClass::getStaticPropertyValue
ReflectionClass::getTraitNames
ReflectionClass


返回这个类所使用 traits 的名称的数组

ReflectionClass::getTraitAliases
ReflectionClass::getTraits
ReflectionClass
PHP Manual

ReflectionClass::getTraitNames

(PHP >= 5.4.0)

ReflectionClass::getTraitNames — 返回这个类所使用 traits 的名称的数组

说明

public array ReflectionClass::getTraitNames ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

返回的数组的值包含了 trait 的名称。 出现错误的情况下返回 NULL。

ReflectionClass::getTraitAliases
ReflectionClass::getTraits
ReflectionClass


返回这个类所使用的 traits 数组

ReflectionClass::getTraitNames
ReflectionClass::hasConstant
ReflectionClass
PHP Manual

ReflectionClass::getTraits

(PHP >= 5.4.0)

ReflectionClass::getTraits — 返回这个类所使用的 traits 数组

说明

public array ReflectionClass::getTraits ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

返回了一个数组，键是 trait 的名称，值是 trait 实例的 ReflectionClass。 出现错误的情况下返回 NULL。

ReflectionClass::getTraitNames
ReflectionClass::hasConstant
ReflectionClass


检查常量是否已经定义

ReflectionClass::getTraits
ReflectionClass::hasMethod
ReflectionClass
PHP Manual

ReflectionClass::hasConstant

(PHP 5 >= 5.1.0, PHP 7)

ReflectionClass::hasConstant — 检查常量是否已经定义

说明

public bool ReflectionClass::hasConstant ( string $name )

检查类中是否已经定义了指定的常量。

参数

name

要被检查的常量名称。

返回值

如果已定义返回 TRUE，否则返回 FALSE。

范例

Example #1 ReflectionClass::hasConstant() 例子

<?php
class Foo {
    const c1 = 1;
}

$class = new ReflectionClass("Foo");

var_dump($class->hasConstant("c1"));
var_dump($class->hasConstant("c2"));
?>

以上例程的输出类似于：

bool(true)
bool(false)

参见

  • ReflectionClass::hasMethod() - 检查方法是否已定义
  • ReflectionClass::hasProperty() - 检查属性是否已定义

ReflectionClass::getTraits
ReflectionClass::hasMethod
ReflectionClass


检查方法是否已定义

ReflectionClass::hasConstant
ReflectionClass::hasProperty
ReflectionClass
PHP Manual

ReflectionClass::hasMethod

(PHP 5 >= 5.1.0, PHP 7)

ReflectionClass::hasMethod — 检查方法是否已定义

说明

public bool ReflectionClass::hasMethod ( string $name )

检查一个类中指定的方法是否已定义。

参数

name

要检查的方法的名称。

返回值

如果有这个方法返回 TRUE，否则返回 FALSE。

范例

Example #1 ReflectionClass::hasMethod() 例子

<?php
Class C {
    public function publicFoo() {
        return true;
    }

    protected function protectedFoo() {
        return true;
    }

    private function privateFoo() {
        return true;
    }

    static function staticFoo() {
        return true;
    }
}

$rc = new ReflectionClass("C");

var_dump($rc->hasMethod('publicFoo'));

var_dump($rc->hasMethod('protectedFoo'));

var_dump($rc->hasMethod('privateFoo'));

var_dump($rc->hasMethod('staticFoo'));

// C should not have method bar
var_dump($rc->hasMethod('bar'));

// Method names are case insensitive
var_dump($rc->hasMethod('PUBLICfOO'));
?>

以上例程会输出：

bool(true)
bool(true)
bool(true)
bool(true)
bool(false)
bool(true)

参见

  • ReflectionClass::hasConstant() - 检查常量是否已经定义
  • ReflectionClass::hasProperty() - 检查属性是否已定义

ReflectionClass::hasConstant
ReflectionClass::hasProperty
ReflectionClass


检查属性是否已定义

ReflectionClass::hasMethod
ReflectionClass::implementsInterface
ReflectionClass
PHP Manual

ReflectionClass::hasProperty

(PHP 5 >= 5.1.0, PHP 7)

ReflectionClass::hasProperty — 检查属性是否已定义

说明

public bool ReflectionClass::hasProperty ( string $name )

检查指定的属性是否已定义。

参数

name

待检查的属性的名称。

返回值

如果有这个属性返回 TRUE，否则返回 FALSE。

范例

Example #1 ReflectionClass::hasProperty() 例子

<?php
class Foo {
    public    $p1;
    protected $p2;
    private   $p3;

}

$obj = new ReflectionObject(new Foo());

var_dump($obj->hasProperty("p1"));
var_dump($obj->hasProperty("p2"));
var_dump($obj->hasProperty("p3"));
var_dump($obj->hasProperty("p4"));
?>

以上例程的输出类似于：

bool(true)
bool(true)
bool(true)
bool(false)

参见

  • ReflectionClass::hasConstant() - 检查常量是否已经定义
  • ReflectionClass::hasMethod() - 检查方法是否已定义

ReflectionClass::hasMethod
ReflectionClass::implementsInterface
ReflectionClass


接口的实现

ReflectionClass::hasProperty
ReflectionClass::inNamespace
ReflectionClass
PHP Manual

ReflectionClass::implementsInterface

(PHP 5, PHP 7)

ReflectionClass::implementsInterface — 接口的实现

说明

public bool ReflectionClass::implementsInterface ( string $interface )

检查它是否实现了一个接口（interface）。

参数

interface

接口（interface）的名称。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ReflectionClass::isInterface() - 检查类是否是一个接口（interface）
  • ReflectionClass::isSubclassOf() - 检查是否为一个子类
  • interface_exists() - 检查接口是否已被定义
  • Object Interfaces

ReflectionClass::hasProperty
ReflectionClass::inNamespace
ReflectionClass


检查是否位于命名空间中

ReflectionClass::implementsInterface
ReflectionClass::isAbstract
ReflectionClass
PHP Manual

ReflectionClass::inNamespace

(PHP 5 >= 5.3.0, PHP 7)

ReflectionClass::inNamespace — 检查是否位于命名空间中

说明

public bool ReflectionClass::inNamespace ( void )

检查这个类是否定义于一个命名空间中里。

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ReflectionClass::inNamespace() 例子

<?php
namespace A\B;

class Foo { }

$function = new \ReflectionClass('stdClass');

var_dump($function->inNamespace());
var_dump($function->getName());
var_dump($function->getNamespaceName());
var_dump($function->getShortName());

$function = new \ReflectionClass('A\\B\\Foo');

var_dump($function->inNamespace());
var_dump($function->getName());
var_dump($function->getNamespaceName());
var_dump($function->getShortName());
?>

以上例程会输出：

bool(false)
string(8) "stdClass"
string(0) ""
string(8) "stdClass"

bool(true)
string(7) "A\B\Foo"
string(3) "A\B"
string(3) "Foo"

参见

  • ReflectionClass::getNamespaceName() - 获取命名空间的名称
  • PHP Namespaces

ReflectionClass::implementsInterface
ReflectionClass::isAbstract
ReflectionClass


检查类是否是抽象类（abstract）

ReflectionClass::inNamespace
ReflectionClass::isAnonymous
ReflectionClass
PHP Manual

ReflectionClass::isAbstract

(PHP 5, PHP 7)

ReflectionClass::isAbstract — 检查类是否是抽象类（abstract）

说明

public bool ReflectionClass::isAbstract ( void )

检查这个类是否是抽象类（abstract）。

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ReflectionClass::isAbstract() 例子

<?php
class          TestClass { }
abstract class TestAbstractClass { }

$testClass     = new ReflectionClass('TestClass');
$abstractClass = new ReflectionClass('TestAbstractClass');

var_dump($testClass->isAbstract());
var_dump($abstractClass->isAbstract());
?>

以上例程会输出：

bool(false)
bool(true)

参见

  • ReflectionClass::isInterface() - 检查类是否是一个接口（interface）
  • 类的抽象

ReflectionClass::inNamespace
ReflectionClass::isAnonymous
ReflectionClass


检查类是否是匿名类

ReflectionClass::isAbstract
ReflectionClass::isCloneable
ReflectionClass
PHP Manual

ReflectionClass::isAnonymous

(PHP 7)

ReflectionClass::isAnonymous — 检查类是否是匿名类

说明

public bool ReflectionClass::isAnonymous ( void )

检查类是否是匿名类。

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ReflectionClass::isAnonymous() example

<?php
class TestClass {}
$anonClass = new class {};

$normalClass = new ReflectionClass('TestClass');
$anonClass  = new ReflectionClass($anonClass);

var_dump($normalClass->isAnonymous());
var_dump($anonClass->isAnonymous());

?>

以上例程会输出：

bool(false)
bool(true)

参见

  • ReflectionClass::isFinal() - 检查类是否声明为 final

ReflectionClass::isAbstract
ReflectionClass::isCloneable
ReflectionClass


返回了一个类是否可复制

ReflectionClass::isAnonymous
ReflectionClass::isFinal
ReflectionClass
PHP Manual

ReflectionClass::isCloneable

(PHP >= 5.4.0)

ReflectionClass::isCloneable — 返回了一个类是否可复制

说明

public bool ReflectionClass::isCloneable ( void )

返回了这个类是否可复制。

参数

此函数没有参数。

返回值

如果这个类可以复制返回 TRUE，否则返回 FALSE。

范例

Example #1 ReflectionClass::isCloneable() 的基本用法

<?php
class NotCloneable {
    public $var1;

    private function __clone() {
    }
}

class Cloneable {
    public $var1;
}

$notCloneable = new ReflectionClass('NotCloneable');
$cloneable = new ReflectionClass('Cloneable');

var_dump($notCloneable->isCloneable());
var_dump($cloneable->isCloneable());
?>

以上例程会输出：

bool(false)
bool(true)

ReflectionClass::isAnonymous
ReflectionClass::isFinal
ReflectionClass


检查类是否声明为 final

ReflectionClass::isCloneable
ReflectionClass::isInstance
ReflectionClass
PHP Manual

ReflectionClass::isFinal

(PHP 5, PHP 7)

ReflectionClass::isFinal — 检查类是否声明为 final

说明

public bool ReflectionClass::isFinal ( void )

检查类是否声明为 final。

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ReflectionClass::isAbstract() 例子

<?php
class       TestClass { }
final class TestFinalClass { }

$normalClass = new ReflectionClass('TestClass');
$finalClass  = new ReflectionClass('TestFinalClass');

var_dump($normalClass->isFinal());
var_dump($finalClass->isFinal());

?>

以上例程会输出：

bool(false)
bool(true)

参见

  • ReflectionClass::isAbstract() - 检查类是否是抽象类（abstract）
  • Final 关键字

ReflectionClass::isCloneable
ReflectionClass::isInstance
ReflectionClass


检查类的实例

ReflectionClass::isFinal
ReflectionClass::isInstantiable
ReflectionClass
PHP Manual

ReflectionClass::isInstance

(PHP 5, PHP 7)

ReflectionClass::isInstance — 检查类的实例

说明

public bool ReflectionClass::isInstance ( object $object )

检查对象是否为一个类的实例。

参数

object

待比较的对象。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ReflectionClass::isInstance() 相关例子

<?php
// Example usage
$class = new ReflectionClass('Foo');

if ($class->isInstance($arg)) {
    echo "Yes";
}

// Equivalent to
if ($arg instanceof Foo) {
    echo "Yes";
}

// Equivalent to
if (is_a($arg, 'Foo')) {
    echo "Yes";
}
?>

以上例程的输出类似于：

Yes
Yes
Yes

参见

  • ReflectionClass::isInterface() - 检查类是否是一个接口（interface）
  • 类型运算符（instanceof）
  • 对象接口
  • is_a() - 如果对象属于该类或该类是此对象的父类则返回 TRUE

ReflectionClass::isFinal
ReflectionClass::isInstantiable
ReflectionClass


检查类是否可实例化

ReflectionClass::isInstance
ReflectionClass::isInterface
ReflectionClass
PHP Manual

ReflectionClass::isInstantiable

(PHP 5, PHP 7)

ReflectionClass::isInstantiable — 检查类是否可实例化

说明

public bool ReflectionClass::isInstantiable ( void )

检查这个类是否可实例化。

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ReflectionClass::isInstantiable() 例子

<?php
class C { }

interface iface {
    function f1();
}

class ifaceImpl implements iface {
    function f1() {}
}

abstract class abstractClass {
    function f1() { }
    abstract function f2();
}

class D extends abstractClass {
    function f2() { }
}

class privateConstructor {
    private function __construct() { }
}

$classes = array(
    "C",
    "iface",
    "ifaceImpl",
    "abstractClass",
    "D",
    "privateConstructor",
);

foreach($classes  as $class ) {
    $reflectionClass = new ReflectionClass($class);
    echo "Is $class instantiable?  ";
    var_dump($reflectionClass->IsInstantiable());
}

?>

以上例程会输出：

Is C instantiable?  bool(true)
Is iface instantiable?  bool(false)
Is ifaceImpl instantiable?  bool(true)
Is abstractClass instantiable?  bool(false)
Is D instantiable?  bool(true)
Is privateConstructor instantiable?  bool(false)

参见

  • ReflectionClass::isInstance() - 检查类的实例

ReflectionClass::isInstance
ReflectionClass::isInterface
ReflectionClass


检查类是否是一个接口（interface）

ReflectionClass::isInstantiable
ReflectionClass::isInternal
ReflectionClass
PHP Manual

ReflectionClass::isInterface

(PHP 5, PHP 7)

ReflectionClass::isInterface — 检查类是否是一个接口（interface）

说明

public bool ReflectionClass::isInterface ( void )

检查类是否是一个接口（interface）。

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ReflectionClass::isInterface() 基本用法

<?php
interface SomeInterface {
    public function interfaceMethod();
}

$class = new ReflectionClass('SomeInterface');
var_dump($class->isInterface());
?>

以上例程会输出：

bool(true)

参见

  • ReflectionClass::isInstance() - 检查类的实例

ReflectionClass::isInstantiable
ReflectionClass::isInternal
ReflectionClass


检查类是否由扩展或核心在内部定义

ReflectionClass::isInterface
ReflectionClass::isIterateable
ReflectionClass
PHP Manual

ReflectionClass::isInternal

(PHP 5, PHP 7)

ReflectionClass::isInternal — 检查类是否由扩展或核心在内部定义

说明

public bool ReflectionClass::isInternal ( void )

检查类是否由扩展或核心在内部定义，与用户定义相反。

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ReflectionClass::isInternal() 的基本用法

<?php
$internalclass = new ReflectionClass('ReflectionClass');

class Apple {}
$userclass = new ReflectionClass('Apple');

var_dump($internalclass->isInternal());
var_dump($userclass->isInternal());
?>

以上例程会输出：

bool(true)
bool(false)

参见

  • ReflectionClass::isUserDefined() - 检查是否由用户定义的

ReflectionClass::isInterface
ReflectionClass::isIterateable
ReflectionClass


检查是否可迭代（iterateable）

ReflectionClass::isInternal
ReflectionClass::isSubclassOf
ReflectionClass
PHP Manual

ReflectionClass::isIterateable

(PHP 5, PHP 7)

ReflectionClass::isIterateable — 检查是否可迭代（iterateable）

说明

public bool ReflectionClass::isIterateable ( void )

检查一个类是否可迭代（iterateable）。

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 ReflectionClass::isIterateable() 例子

<?php

class IteratorClass implements Iterator {
    public function __construct() { }
    public function key() { }
    public function current() { }
    function next() { }
    function valid() { }
    function rewind() { }
}
class DerivedClass extends IteratorClass { }
class NonIterator { }

function dump_iterateable($class) {
    $reflection = new ReflectionClass($class);
    var_dump($reflection->isIterateable());
}

$classes = array("ArrayObject", "IteratorClass", "DerivedClass", "NonIterator");

foreach ($classes as $class) {
    echo "Is $class iterateable? ";
    dump_iterateable($class);
}
?>

以上例程会输出：

Is ArrayObject iterateable? bool(true)
Is IteratorClass iterateable? bool(true)
Is DerivedClass iterateable? bool(true)
Is NonIterator iterateable? bool(false)

参见

  • ReflectionClass::__construct() - 构造一个 ReflectionClass 类

ReflectionClass::isInternal
ReflectionClass::isSubclassOf
ReflectionClass


检查是否为一个子类

ReflectionClass::isIterateable
ReflectionClass::isTrait
ReflectionClass
PHP Manual

ReflectionClass::isSubclassOf

(PHP 5, PHP 7)

ReflectionClass::isSubclassOf — 检查是否为一个子类

说明

public bool ReflectionClass::isSubclassOf ( string $class )

检查一个类是否为指定类的子类，或者实现了指定的接口。

参数

class

被检查的类名。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ReflectionClass::isInterface() - 检查类是否是一个接口（interface）
  • ReflectionClass::implementsInterface() - 接口的实现
  • is_subclass_of() - 如果此对象是该类的子类，则返回 TRUE
  • get_parent_class() - 返回对象或类的父类名

ReflectionClass::isIterateable
ReflectionClass::isTrait
ReflectionClass


返回了是否为一个 trait

ReflectionClass::isSubclassOf
ReflectionClass::isUserDefined
ReflectionClass
PHP Manual

ReflectionClass::isTrait

(PHP >= 5.4.0)

ReflectionClass::isTrait — 返回了是否为一个 trait

说明

public bool ReflectionClass::isTrait ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

如果是 trait 返回 TRUE，否则返回 FALSE。 在出现错误的情况下，将会返回 NULL。

ReflectionClass::isSubclassOf
ReflectionClass::isUserDefined
ReflectionClass


检查是否由用户定义的

ReflectionClass::isTrait
ReflectionClass::newInstance
ReflectionClass
PHP Manual

ReflectionClass::isUserDefined

(PHP 5, PHP 7)

ReflectionClass::isUserDefined — 检查是否由用户定义的

说明

public bool ReflectionClass::isUserDefined ( void )

检查一个类是否由用户定义，和内置相对。

参数

此函数没有参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • ReflectionClass::isInternal() - 检查类是否由扩展或核心在内部定义

ReflectionClass::isTrait
ReflectionClass::newInstance
ReflectionClass


从指定的参数创建一个新的类实例

ReflectionClass::isUserDefined
ReflectionClass::newInstanceArgs
ReflectionClass
PHP Manual

ReflectionClass::newInstance

(PHP 5, PHP 7)

ReflectionClass::newInstance — 从指定的参数创建一个新的类实例

说明

public object ReflectionClass::newInstance ( mixed $args [, mixed $... ] )

创建类的新的实例。给出的参数将会传递到类的构造函数。

参数

args

接受可变数目的参数，用于传递到类的构造函数，和 call_user_func() 很相似。

返回值

错误／异常

如果类的构造函数不是 public 的将会导致一个 ReflectionException。

当 args 指定了一个或多个参数，而类不具有构造函数时,将导致一个 ReflectionException。

参见

  • ReflectionClass::newInstanceArgs() - 从给出的参数创建一个新的类实例。
  • ReflectionClass::newInstanceWithoutConstructor() - 创建一个新的类实例而不调用它的构造函数

ReflectionClass::isUserDefined
ReflectionClass::newInstanceArgs
ReflectionClass


从给出的参数创建一个新的类实例。

ReflectionClass::newInstance
ReflectionClass::newInstanceWithoutConstructor
ReflectionClass
PHP Manual

ReflectionClass::newInstanceArgs

(PHP 5 >= 5.1.3, PHP 7)

ReflectionClass::newInstanceArgs — 从给出的参数创建一个新的类实例。

说明

public object ReflectionClass::newInstanceArgs ([ array $args ] )

创建一个类的新实例，给出的参数将传递到类的构造函数。

参数

args

这个参数以 array 形式传递到类的构造函数。

返回值

返回类的新实例。

范例

Example #1 ReflectionClass::newInstanceArgs() 的基本用法

<?php
$class = new ReflectionClass('ReflectionFunction');
$instance = $class->newInstanceArgs(array('substr'));
var_dump($instance);
?>

以上例程会输出：

object(ReflectionFunction)#2 (1) {
  ["name"]=>
  string(6) "substr"
}

错误／异常

如果类的构造函数不是 public 的将导致产生一个 ReflectionException。

当 args 指定了一个或多个参数，而类不具有构造函数时,将导致一个 ReflectionException。

参见

  • ReflectionClass::newInstance() - 从指定的参数创建一个新的类实例
  • ReflectionClass::newInstanceWithoutConstructor() - 创建一个新的类实例而不调用它的构造函数

ReflectionClass::newInstance
ReflectionClass::newInstanceWithoutConstructor
ReflectionClass


创建一个新的类实例而不调用它的构造函数

ReflectionClass::newInstanceArgs
ReflectionClass::setStaticPropertyValue
ReflectionClass
PHP Manual

ReflectionClass::newInstanceWithoutConstructor

(PHP >= 5.4.0)

ReflectionClass::newInstanceWithoutConstructor — 创建一个新的类实例而不调用它的构造函数

说明

public object ReflectionClass::newInstanceWithoutConstructor ( void )

创建一个新的类的实例而不调用它的构造函数。

参数

返回值

更新日志

版本 | 说明
5.6.0 | All internal classes can now be instantiated except for those declared final.

错误／异常

如果这个类是一个不能不调用构造函数来实例化的内置类，将导致一个 ReflectionException。在 PHP 5.6.0 及更高版本中，此异常仅限于 final 的内置类。

参见

  • ReflectionClass::newInstance() - 从指定的参数创建一个新的类实例
  • ReflectionClass::newInstanceArgs() - 从给出的参数创建一个新的类实例。

ReflectionClass::newInstanceArgs
ReflectionClass::setStaticPropertyValue
ReflectionClass


设置静态属性的值

ReflectionClass::newInstanceWithoutConstructor
ReflectionClass::__toString
ReflectionClass
PHP Manual

ReflectionClass::setStaticPropertyValue

(PHP 5 >= 5.1.0, PHP 7)

ReflectionClass::setStaticPropertyValue — 设置静态属性的值

说明

public void ReflectionClass::setStaticPropertyValue ( string $name , string $value )

设置静态属性的值。

Warning

本函数还未编写文档，仅有参数列表。

参数

name

属性的名称。

value

属性的值。

返回值

没有返回值。

参见

  • ReflectionClass::getStaticPropertyValue() - 获取静态（static）属性的值

ReflectionClass::newInstanceWithoutConstructor
ReflectionClass::__toString
ReflectionClass


返回 ReflectionClass 对象字符串的表示形式。

ReflectionClass::setStaticPropertyValue
ReflectionZendExtension
ReflectionClass
PHP Manual

ReflectionClass::__toString

(PHP 5, PHP 7)

ReflectionClass::__toString — 返回 ReflectionClass 对象字符串的表示形式。

说明

public string ReflectionClass::__toString ( void )

返回 ReflectionClass 对象字符串的表示形式。

参数

此函数没有参数。

返回值

ReflectionClass 实例的一个字符串表示形式。

范例

Example #1 ReflectionClass::__toString() 例子

<?php
$reflectionClass = new ReflectionClass('Exception');
echo $reflectionClass->__toString();
?>

以上例程会输出：

Class [ <internal:Core> class Exception ] {

  - Constants [0] {
  }

  - Static properties [0] {
  }

  - Static methods [0] {
  }

  - Properties [7] {
    Property [ <default> protected $message ]
    Property [ <default> private $string ]
    Property [ <default> protected $code ]
    Property [ <default> protected $file ]
    Property [ <default> protected $line ]
    Property [ <default> private $trace ]
    Property [ <default> private $previous ]
  }

  - Methods [10] {
    Method [ <internal:Core> final private method __clone ] {
    }

    Method [ <internal:Core, ctor> public method __construct ] {

      - Parameters [3] {
        Parameter #0 [ <optional> $message ]
        Parameter #1 [ <optional> $code ]
        Parameter #2 [ <optional> $previous ]
      }
    }

    Method [ <internal:Core> final public method getMessage ] {
    }

    Method [ <internal:Core> final public method getCode ] {
    }

    Method [ <internal:Core> final public method getFile ] {
    }

    Method [ <internal:Core> final public method getLine ] {
    }

    Method [ <internal:Core> final public method getTrace ] {
    }

    Method [ <internal:Core> final public method getPrevious ] {
    }

    Method [ <internal:Core> final public method getTraceAsString ] {
    }

    Method [ <internal:Core> public method __toString ] {
    }
  }
}

参见

  • ReflectionClass::export() - 导出一个类
  • __toString()

ReflectionClass::setStaticPropertyValue
ReflectionZendExtension
ReflectionClass


ReflectionZendExtension 类

(PHP >= 5.4.0)

简介

类摘要

ReflectionZendExtension implements Reflector {
/* 属性 */
public $name ;
/* 方法 */
final private void __clone ( void )
public __construct ( string $name )
public static string export ( string $name [, string $return ] )
public string getAuthor ( void )
public string getCopyright ( void )
public string getName ( void )
public string getURL ( void )
public string getVersion ( void )
public string __toString ( void )
}

属性

name

扩展的名称。只读，并在尝试赋值的时候抛出 ReflectionException。

Table of Contents

  • ReflectionZendExtension::__clone — Clone handler
  • ReflectionZendExtension::__construct — Constructor
  • ReflectionZendExtension::export — Export
  • ReflectionZendExtension::getAuthor — Gets author
  • ReflectionZendExtension::getCopyright — Gets copyright
  • ReflectionZendExtension::getName — Gets name
  • ReflectionZendExtension::getURL — Gets URL
  • ReflectionZendExtension::getVersion — Gets version
  • ReflectionZendExtension::__toString — To string handler
ReflectionClass::__toString
ReflectionZendExtension::__clone
反射


Clone handler

ReflectionZendExtension
ReflectionZendExtension::__construct
ReflectionZendExtension
PHP Manual

ReflectionZendExtension::__clone

(PHP >= 5.4.0)

ReflectionZendExtension::__clone — Clone handler

说明

final private void ReflectionZendExtension::__clone ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

ReflectionZendExtension
ReflectionZendExtension::__construct
ReflectionZendExtension


Constructor

ReflectionZendExtension::__clone
ReflectionZendExtension::export
ReflectionZendExtension
PHP Manual

ReflectionZendExtension::__construct

(PHP >= 5.4.0)

ReflectionZendExtension::__construct — Constructor

说明

public ReflectionZendExtension::__construct ( string $name )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

返回值

ReflectionZendExtension::__clone
ReflectionZendExtension::export
ReflectionZendExtension


Export

ReflectionZendExtension::__construct
ReflectionZendExtension::getAuthor
ReflectionZendExtension
PHP Manual

ReflectionZendExtension::export

(PHP >= 5.4.0)

ReflectionZendExtension::export — Export

说明

public static string ReflectionZendExtension::export ( string $name [, string $return ] )

Warning

本函数还未编写文档，仅有参数列表。

参数

name

return

返回值

ReflectionZendExtension::__construct
ReflectionZendExtension::getAuthor
ReflectionZendExtension


Gets author

ReflectionZendExtension::export
ReflectionZendExtension::getCopyright
ReflectionZendExtension
PHP Manual

ReflectionZendExtension::getAuthor

(PHP >= 5.4.0)

ReflectionZendExtension::getAuthor — Gets author

说明

public string ReflectionZendExtension::getAuthor ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

ReflectionZendExtension::export
ReflectionZendExtension::getCopyright
ReflectionZendExtension


Gets copyright

ReflectionZendExtension::getAuthor
ReflectionZendExtension::getName
ReflectionZendExtension
PHP Manual

ReflectionZendExtension::getCopyright

(PHP >= 5.4.0)

ReflectionZendExtension::getCopyright — Gets copyright

说明

public string ReflectionZendExtension::getCopyright ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

ReflectionZendExtension::getAuthor
ReflectionZendExtension::getName
ReflectionZendExtension


Gets name

ReflectionZendExtension::getCopyright
ReflectionZendExtension::getURL
ReflectionZendExtension
PHP Manual

ReflectionZendExtension::getName

(PHP >= 5.4.0)

ReflectionZendExtension::getName — Gets name

说明

public string ReflectionZendExtension::getName ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

ReflectionZendExtension::getCopyright
ReflectionZendExtension::getURL
ReflectionZendExtension


Gets URL

ReflectionZendExtension::getName
ReflectionZendExtension::getVersion
ReflectionZendExtension
PHP Manual

ReflectionZendExtension::getURL

(PHP >= 5.4.0)

ReflectionZendExtension::getURL — Gets URL

说明

public string ReflectionZendExtension::getURL ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

ReflectionZendExtension::getName
ReflectionZendExtension::getVersion
ReflectionZendExtension


Gets version

ReflectionZendExtension::getURL
ReflectionZendExtension::__toString
ReflectionZendExtension
PHP Manual

ReflectionZendExtension::getVersion

(PHP >= 5.4.0)

ReflectionZendExtension::getVersion — Gets version

说明

public string ReflectionZendExtension::getVersion ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

ReflectionZendExtension::getURL
ReflectionZendExtension::__toString
ReflectionZendExtension


To string handler

ReflectionZendExtension::getVersion
ReflectionExtension
ReflectionZendExtension
PHP Manual

ReflectionZendExtension::__toString

(PHP >= 5.4.0)

ReflectionZendExtension::__toString — To string handler

说明

public string ReflectionZendExtension::__toString ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

ReflectionZendExtension::getVersion
ReflectionExtension
ReflectionZendExtension


ReflectionExtension 类

(PHP 5, PHP 7)

简介

ReflectionExtension 报告了一个扩展（extension）的有关信息。

类摘要

ReflectionExtension implements Reflector {
/* 属性 */
public $name ;
/* 方法 */
final private void __clone ( void )
public __construct ( string $name )
public static string export ( string $name [, string $return = false ] )
public array getClasses ( void )
public array getClassNames ( void )
public array getConstants ( void )
public array getDependencies ( void )
public array getFunctions ( void )
public array getINIEntries ( void )
public string getName ( void )
public string getVersion ( void )
public void info ( void )
public void isPersistent ( void )
public void isTemporary ( void )
public string __toString ( void )
}

属性

name

扩展的名称，和 ReflectionExtension::getName() 方法所返回的一样。

Table of Contents

  • ReflectionExtension::__clone — Clones
  • ReflectionExtension::__construct — Constructs a ReflectionExtension
  • ReflectionExtension::export — Export
  • ReflectionExtension::getClasses — Gets classes
  • ReflectionExtension::getClassNames — 获取类名称
  • ReflectionExtension::getConstants — 获取常量
  • ReflectionExtension::getDependencies — 获取依赖
  • ReflectionExtension::getFunctions — 获取扩展中的函数
  • ReflectionExtension::getINIEntries — 获取ini配置
  • ReflectionExtension::getName — 获取扩展名称
  • ReflectionExtension::getVersion — 获取扩展版本号
  • ReflectionExtension::info — 输出扩展信息
  • ReflectionExtension::isPersistent — 返回扩展是否持久化载入
  • ReflectionExtension::isTemporary — 返回扩展是否是临时载入
  • ReflectionExtension::__toString — To string
ReflectionZendExtension::__toString
ReflectionExtension::__clone
反射


Clones

ReflectionExtension
ReflectionExtension::__construct
ReflectionExtension
PHP Manual

ReflectionExtension::__clone

(PHP 5, PHP 7)

ReflectionExtension::__clone — Clones

说明

final private void ReflectionExtension::__clone ( void )

clone方法阻止实例克隆。反射类实例不允许被克隆。

参数

此函数没有参数。

返回值

没有返回值，如果被调用将产生fatal错误。

参见

  • ReflectionExtension::__construct() - Constructs a ReflectionExtension
  • Object cloning

ReflectionExtension
ReflectionExtension::__construct
ReflectionExtension


Constructs a ReflectionExtension

ReflectionExtension::__clone
ReflectionExtension::export
ReflectionExtension
PHP Manual

ReflectionExtension::__construct

(PHP 5, PHP 7)

ReflectionExtension::__construct — Constructs a ReflectionExtension

说明

public ReflectionExtension::__construct ( string $name )

Construct a ReflectionExtension object.

参数

name

扩展的名称。

返回值

A ReflectionExtension object.

范例

Example #1 ReflectionExtension example

<?php
$ext = new ReflectionExtension('Reflection');

printf('Extension: %s (version: %s)', $ext->getName(), $ext->getVersion());
?>

以上例程的输出类似于：

Extension: Reflection (version: $Revision: 338648 $)

参见

  • ReflectionExtension::info() - 输出扩展信息
  • Constructors

ReflectionExtension::__clone
ReflectionExtension::export
ReflectionExtension


Export

ReflectionExtension::__construct
ReflectionExtension::getClasses
ReflectionExtension
PHP Manual

ReflectionExtension::export

(PHP 5, PHP 7)

ReflectionExtension::export — Export

说明

public static string ReflectionExtension::export ( string $name [, string $return = false ] )

导出可以被反射的扩展。输出格式同CLI argument --re [extension].

参数

name

导出的反射。

return

设为 TRUE 时返回导出结果，设为 FALSE（默认值）则忽略返回。

返回值

如果参数 return 设为 TRUE，导出结果将作为 string 返回，否则返回 NULL。

参见

  • ReflectionExtension::info() - 输出扩展信息

ReflectionExtension::__construct
ReflectionExtension::getClasses
ReflectionExtension


Gets classes

ReflectionExtension::export
ReflectionExtension::getClassNames
ReflectionExtension
PHP Manual

ReflectionExtension::getClasses

(PHP 5, PHP 7)

ReflectionExtension::getClasses — Gets classes

说明

public array ReflectionExtension::getClasses ( void )

从扩展中获取类列表。

参数

此函数没有参数。

返回值

返回一个ReflectionClass对象数组，包括扩展中所有类。如果扩展中没有类声明，将返回空数组。

范例

Example #1 ReflectionExtension::getClasses() example

<?php
$ext = new ReflectionExtension('XMLWriter');
var_dump($ext->getClasses());
?>

以上例程的输出类似于：

array(1) {
  ["XMLWriter"]=>
  &object(ReflectionClass)#2 (1) {
    ["name"]=>
    string(9) "XMLWriter"
  }
}

参见

  • ReflectionExtension::getClassNames() - 获取类名称

ReflectionExtension::export
ReflectionExtension::getClassNames
ReflectionExtension


获取类名称

ReflectionExtension::getClasses
ReflectionExtension::getConstants
ReflectionExtension
PHP Manual

ReflectionExtension::getClassNames

(PHP 5, PHP 7)

ReflectionExtension::getClassNames — 获取类名称

说明

public array ReflectionExtension::getClassNames ( void )

获取扩展中的类名称列表。

参数

此函数没有参数。

返回值

返回类名称数组。如果扩展中没有类声明，将返回空数组。

范例

Example #1 ReflectionExtension::getClassNames() example

<?php
$ext = new ReflectionExtension('XMLWriter');
var_dump($ext->getClassNames());
?>

以上例程的输出类似于：

array(1) {
  [0]=>
  string(9) "XMLWriter"
}

参见

  • ReflectionExtension::getClasses() - Gets classes
  • ReflectionExtension::getName() - 获取扩展名称

ReflectionExtension::getClasses
ReflectionExtension::getConstants
ReflectionExtension


获取常量

ReflectionExtension::getClassNames
ReflectionExtension::getDependencies
ReflectionExtension
PHP Manual

ReflectionExtension::getConstants

(PHP 5, PHP 7)

ReflectionExtension::getConstants — 获取常量

说明

public array ReflectionExtension::getConstants ( void )

获取扩展中定义的常量。

参数

此函数没有参数。

返回值

返回一个以常量名称为索引的数组。

范例

Example #1 ReflectionExtension::getConstants() example

<?php
$ext = new ReflectionExtension('DOM');

print_r($ext->getConstants());
?>

以上例程的输出类似于：

Array
(
    [XML_ELEMENT_NODE] => 1
    [XML_ATTRIBUTE_NODE] => 2
    [XML_TEXT_NODE] => 3
    [XML_CDATA_SECTION_NODE] => 4
    [XML_ENTITY_REF_NODE] => 5
    [XML_ENTITY_NODE] => 6
    [XML_PI_NODE] => 7
    [XML_COMMENT_NODE] => 8
    [XML_DOCUMENT_NODE] => 9
    [XML_DOCUMENT_TYPE_NODE] => 10
    [XML_DOCUMENT_FRAG_NODE] => 11
    [XML_NOTATION_NODE] => 12
    [XML_HTML_DOCUMENT_NODE] => 13
    [XML_DTD_NODE] => 14
    [XML_ELEMENT_DECL_NODE] => 15
    [XML_ATTRIBUTE_DECL_NODE] => 16
    [XML_ENTITY_DECL_NODE] => 17
    [XML_NAMESPACE_DECL_NODE] => 18
    [XML_LOCAL_NAMESPACE] => 18
    [XML_ATTRIBUTE_CDATA] => 1
    [XML_ATTRIBUTE_ID] => 2
    [XML_ATTRIBUTE_IDREF] => 3
    [XML_ATTRIBUTE_IDREFS] => 4
    [XML_ATTRIBUTE_ENTITY] => 6
    [XML_ATTRIBUTE_NMTOKEN] => 7
    [XML_ATTRIBUTE_NMTOKENS] => 8
    [XML_ATTRIBUTE_ENUMERATION] => 9
    [XML_ATTRIBUTE_NOTATION] => 10
    [DOM_PHP_ERR] => 0
    [DOM_INDEX_SIZE_ERR] => 1
    [DOMSTRING_SIZE_ERR] => 2
    [DOM_HIERARCHY_REQUEST_ERR] => 3
    [DOM_WRONG_DOCUMENT_ERR] => 4
    [DOM_INVALID_CHARACTER_ERR] => 5
    [DOM_NO_DATA_ALLOWED_ERR] => 6
    [DOM_NO_MODIFICATION_ALLOWED_ERR] => 7
    [DOM_NOT_FOUND_ERR] => 8
    [DOM_NOT_SUPPORTED_ERR] => 9
    [DOM_INUSE_ATTRIBUTE_ERR] => 10
    [DOM_INVALID_STATE_ERR] => 11
    [DOM_SYNTAX_ERR] => 12
    [DOM_INVALID_MODIFICATION_ERR] => 13
    [DOM_NAMESPACE_ERR] => 14
    [DOM_INVALID_ACCESS_ERR] => 15
    [DOM_VALIDATION_ERR] => 16
)

参见

  • ReflectionExtension::getINIEntries() - 获取ini配置

ReflectionExtension::getClassNames
ReflectionExtension::getDependencies
ReflectionExtension


获取依赖

ReflectionExtension::getConstants
ReflectionExtension::getFunctions
ReflectionExtension
PHP Manual

ReflectionExtension::getDependencies

(PHP 5, PHP 7)

ReflectionExtension::getDependencies — 获取依赖

说明

public array ReflectionExtension::getDependencies ( void )

获取依赖，包括必需的、冲突的、可选的。 Gets dependencies, by listing both required and conflicting dependencies.

参数

此函数没有参数。

返回值

返回一个以依赖的扩展名称为索引的数组，每一项的取值为 Required、Optional 或者 Conflicts。

范例

Example #1 ReflectionExtension::getDependencies() example

<?php
$dom = new ReflectionExtension('dom');

print_r($dom->getDependencies());
?>

以上例程的输出类似于：

Array
(
    [libxml] => Required
    [domxml] => Conflicts
)

参见

  • ReflectionClass::getVersion()

ReflectionExtension::getConstants
ReflectionExtension::getFunctions
ReflectionExtension


获取扩展中的函数

ReflectionExtension::getDependencies
ReflectionExtension::getINIEntries
ReflectionExtension
PHP Manual

ReflectionExtension::getFunctions

(PHP 5, PHP 7)

ReflectionExtension::getFunctions — 获取扩展中的函数

说明

public array ReflectionExtension::getFunctions ( void )

获取扩展中定义的函数。

参数

此函数没有参数。

返回值

返回一个ReflectionFunction对象数组，数组索引为函数名。如果扩展中没有定义函数，将返回空数组。

范例

Example #1 ReflectionExtension::getFunctions() example

<?php
$dom = new ReflectionExtension('SimpleXML');

print_r($dom->getFunctions());
?>

以上例程的输出类似于：

Array
(
    [simplexml_load_file] => ReflectionFunction Object
        (
            [name] => simplexml_load_file
        )

    [simplexml_load_string] => ReflectionFunction Object
        (
            [name] => simplexml_load_string
        )

    [simplexml_import_dom] => ReflectionFunction Object
        (
            [name] => simplexml_import_dom
        )

)

参见

  • ReflectionExtension::getClasses() - Gets classes
  • get_extension_funcs() - 返回模块函数名称的数组

ReflectionExtension::getDependencies
ReflectionExtension::getINIEntries
ReflectionExtension


获取ini配置

ReflectionExtension::getFunctions
ReflectionExtension::getName
ReflectionExtension
PHP Manual

ReflectionExtension::getINIEntries

(PHP 5, PHP 7)

ReflectionExtension::getINIEntries — 获取ini配置

说明

public array ReflectionExtension::getINIEntries ( void )

获取扩展在ini配置文件中的配置。

参数

此函数没有参数。

返回值

返回一个数组，数组索引是配置名称，值是配置值。

范例

Example #1 ReflectionExtension::getINIEntries() example

<?php
$ext = new ReflectionExtension('mysql');

print_r($ext->getINIEntries());
?>

以上例程的输出类似于：

Array
(
    [mysql.allow_persistent] => 1
    [mysql.max_persistent] => -1
    [mysql.max_links] => -1
    [mysql.default_host] =>
    [mysql.default_user] =>
    [mysql.default_password] =>
    [mysql.default_port] =>
    [mysql.default_socket] =>
    [mysql.connect_timeout] => 60
    [mysql.trace_mode] =>
    [mysql.allow_local_infile] => 1
    [mysql.cache_size] => 2000
)

参见

  • ini_get_all() - 获取所有配置选项
  • ReflectionExtension::getConstants() - 获取常量

ReflectionExtension::getFunctions
ReflectionExtension::getName
ReflectionExtension


获取扩展名称

ReflectionExtension::getINIEntries
ReflectionExtension::getVersion
ReflectionExtension
PHP Manual

ReflectionExtension::getName

(PHP 5, PHP 7)

ReflectionExtension::getName — 获取扩展名称

说明

public string ReflectionExtension::getName ( void )

获取扩展名称。

参数

此函数没有参数。

返回值

扩展名称。

范例

Example #1 ReflectionExtension::getName() example

<?php
$ext = new ReflectionExtension('mysqli');
var_dump($ext->getName());
?>

以上例程的输出类似于：

string(6) "mysqli"

参见

  • ReflectionExtension::getClassNames() - 获取类名称

ReflectionExtension::getINIEntries
ReflectionExtension::getVersion
ReflectionExtension


获取扩展版本号

ReflectionExtension::getName
ReflectionExtension::info
ReflectionExtension
PHP Manual

ReflectionExtension::getVersion

(PHP 5, PHP 7)

ReflectionExtension::getVersion — 获取扩展版本号

说明

public string ReflectionExtension::getVersion ( void )

获取扩展的版本号。

参数

此函数没有参数。

返回值

扩展的版本号。

范例

Example #1 ReflectionExtension::getVersion() example

<?php
$ext = new ReflectionExtension('mysqli');
var_dump($ext->getVersion());
?>

以上例程的输出类似于：

string(3) "0.1"

参见

  • ReflectionExtension::info() - 输出扩展信息

ReflectionExtension::getName
ReflectionExtension::info
ReflectionExtension


输出扩展信息

ReflectionExtension::getVersion
ReflectionExtension::isPersistent
ReflectionExtension
PHP Manual

ReflectionExtension::info

(PHP 5, PHP 7)

ReflectionExtension::info — 输出扩展信息

说明

public void ReflectionExtension::info ( void )

输出"phpinfo()"信息中的扩展信息。

参数

此函数没有参数。

返回值

扩展信息。

范例

Example #1 ReflectionExtension::info() example

<?php
$ext = new ReflectionExtension('mysqli');
$ext->info();
?>

以上例程的输出类似于：

mysqli

MysqlI Support => enabled
Client API library version => mysqlnd 5.0.5-dev - 081106 - $Revision: 339009 $
Active Persistent Links => 0
Inactive Persistent Links => 0
Active Links => 0
Persistent cache => enabled
put_hits => 0
put_misses => 0
get_hits => 0
get_misses => 0
size => 2000
free_items => 2000
references => 2

Directive => Local Value => Master Value
mysqli.max_links => Unlimited => Unlimited
mysqli.max_persistent => Unlimited => Unlimited
mysqli.allow_persistent => On => On
mysqli.default_host => no value => no value
mysqli.default_user => no value => no value
mysqli.default_pw => no value => no value
mysqli.default_port => 3306 => 3306
mysqli.default_socket => no value => no value
mysqli.reconnect => Off => Off
mysqli.allow_local_infile => On => On
mysqli.cache_size => 2000 => 2000

参见

  • ReflectionExtension::getName() - 获取扩展名称
  • phpinfo() - 输出关于 PHP 配置的信息

ReflectionExtension::getVersion
ReflectionExtension::isPersistent
ReflectionExtension


返回扩展是否持久化载入

ReflectionExtension::info
ReflectionExtension::isTemporary
ReflectionExtension
PHP Manual

ReflectionExtension::isPersistent

(PHP >= 5.4.0)

ReflectionExtension::isPersistent — 返回扩展是否持久化载入

说明

public void ReflectionExtension::isPersistent ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

扩展在extension配置中被载入返回TRUE ，否则返回 FALSE。

参见

  • ReflectionExtension::isTemporary() - 返回扩展是否是临时载入

ReflectionExtension::info
ReflectionExtension::isTemporary
ReflectionExtension


返回扩展是否是临时载入

ReflectionExtension::isPersistent
ReflectionExtension::__toString
ReflectionExtension
PHP Manual

ReflectionExtension::isTemporary

(PHP >= 5.4.0)

ReflectionExtension::isTemporary — 返回扩展是否是临时载入

说明

public void ReflectionExtension::isTemporary ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

如果扩展被dl()载入则返回TRUE ，否则返回 FALSE 。

参见

  • ReflectionExtension::isPersistent() - 返回扩展是否持久化载入

ReflectionExtension::isPersistent
ReflectionExtension::__toString
ReflectionExtension


To string

ReflectionExtension::isTemporary
ReflectionFunction
ReflectionExtension
PHP Manual

ReflectionExtension::__toString

(PHP 5, PHP 7)

ReflectionExtension::__toString — To string

说明

public string ReflectionExtension::__toString ( void )

以string形式返回扩展的反射信息。同ReflectionExtension::export()return参数设置为TRUE。

参数

此函数没有参数。

返回值

返回扩展的反射信息，同ReflectionExtension::export()。

参见

  • ReflectionExtension::__construct() - Constructs a ReflectionExtension
  • ReflectionExtension::export() - Export
  • __toString()

ReflectionExtension::isTemporary
ReflectionFunction
ReflectionExtension


ReflectionFunction 类

(PHP 5, PHP 7)

简介

ReflectionFunction 类报告了一个函数的有关信息。

类摘要

ReflectionFunction extends ReflectionFunctionAbstract implements Reflector {
/* 常量 */
const integer IS_DEPRECATED = 262144 ;
/* 属性 */
public $name ;
/* 方法 */
public __construct ( mixed $name )
public static string export ( string $name [, string $return ] )
public Closure getClosure ( void )
public mixed invoke ([ mixed $parameter [, mixed $... ]] )
public mixed invokeArgs ( array $args )
public bool isDisabled ( void )
public string __toString ( void )
/* 继承的方法 */
final private void ReflectionFunctionAbstract::__clone ( void )
public ReflectionClass ReflectionFunctionAbstract::getClosureScopeClass ( void )
public object ReflectionFunctionAbstract::getClosureThis ( void )
public string ReflectionFunctionAbstract::getDocComment ( void )
public int ReflectionFunctionAbstract::getEndLine ( void )
public ReflectionExtension ReflectionFunctionAbstract::getExtension ( void )
public string ReflectionFunctionAbstract::getExtensionName ( void )
public string ReflectionFunctionAbstract::getFileName ( void )
public string ReflectionFunctionAbstract::getName ( void )
public string ReflectionFunctionAbstract::getNamespaceName ( void )
public int ReflectionFunctionAbstract::getNumberOfParameters ( void )
public int ReflectionFunctionAbstract::getNumberOfRequiredParameters ( void )
public array ReflectionFunctionAbstract::getParameters ( void )
public ReflectionType ReflectionFunctionAbstract::getReturnType ( void )
public string ReflectionFunctionAbstract::getShortName ( void )
public int ReflectionFunctionAbstract::getStartLine ( void )
public array ReflectionFunctionAbstract::getStaticVariables ( void )
public bool ReflectionFunctionAbstract::hasReturnType ( void )
public bool ReflectionFunctionAbstract::inNamespace ( void )
public bool ReflectionFunctionAbstract::isClosure ( void )
public bool ReflectionFunctionAbstract::isDeprecated ( void )
public bool ReflectionFunctionAbstract::isGenerator ( void )
public bool ReflectionFunctionAbstract::isInternal ( void )
public bool ReflectionFunctionAbstract::isUserDefined ( void )
public bool ReflectionFunctionAbstract::isVariadic ( void )
public bool ReflectionFunctionAbstract::returnsReference ( void )
abstract public void ReflectionFunctionAbstract::__toString ( void )
}

属性

name

函数的名称。只读，并在尝试赋值的时候会抛出 ReflectionException。

预定义常量

ReflectionFunction 修饰符

ReflectionFunction::IS_DEPRECATED

指示了不建议使用的函数。

Table of Contents

  • ReflectionFunction::__construct — Constructs a ReflectionFunction object
  • ReflectionFunction::export — Exports function
  • ReflectionFunction::getClosure — Returns a dynamically created closure for the function
  • ReflectionFunction::invoke — Invokes function
  • ReflectionFunction::invokeArgs — Invokes function args
  • ReflectionFunction::isDisabled — Checks if function is disabled
  • ReflectionFunction::__toString — To string
ReflectionExtension::__toString
ReflectionFunction::__construct
反射


Constructs a ReflectionFunction object

ReflectionFunction
ReflectionFunction::export
ReflectionFunction
PHP Manual

ReflectionFunction::__construct

(PHP 5, PHP 7)

ReflectionFunction::__construct — Constructs a ReflectionFunction object

说明

public ReflectionFunction::__construct ( mixed $name )

Constructs a ReflectionFunction object.

参数

name

The name of the function to reflect or a closure.

返回值

没有返回值。

错误／异常

A ReflectionException if the name parameter does not contain a valid function.

更新日志

版本 | 说明
5.3.0 | name can now be a closure.

范例

Example #1 ReflectionFunction::__construct() example

<?php
/**
 * A simple counter
 *
 * @return    int
 */
function counter1()
{
    static $c = 0;
    return ++$c;
}

/**
 * Another simple counter
 *
 * @return    int
 */
$counter2 = function()
{
    static $d = 0;
    return ++$d;

};

function dumpReflectionFunction($func)
{
    // Print out basic information
    printf(
        "\n\n===> The %s function '%s'\n".
        "     declared in %s\n".
        "     lines %d to %d\n",
        $func->isInternal() ? 'internal' : 'user-defined',
        $func->getName(),
        $func->getFileName(),
        $func->getStartLine(),
        $func->getEndline()
    );

    // Print documentation comment
    printf("---> Documentation:\n %s\n", var_export($func->getDocComment(), 1));

    // Print static variables if existant
    if ($statics = $func->getStaticVariables())
    {
        printf("---> Static variables: %s\n", var_export($statics, 1));
    }
}

// Create an instance of the ReflectionFunction class
dumpReflectionFunction(new ReflectionFunction('counter1'));
dumpReflectionFunction(new ReflectionFunction($counter2));
?>

以上例程的输出类似于：

===> The user-defined function 'counter1'
     declared in Z:\reflectcounter.php
     lines 7 to 11
---> Documentation:
 '/**
 * A simple counter
 *
 * @return    int
 */'
---> Static variables: array (
  'c' => 0,
)

===> The user-defined function '{closure}'
     declared in Z:\reflectcounter.php
     lines 18 to 23
---> Documentation:
 '/**
 * Another simple counter
 *
 * @return    int
 */'
---> Static variables: array (
  'd' => 0,
)

参见

  • ReflectionMethod::__construct() - ReflectionMethod 的构造函数
  • Constructors

ReflectionFunction
ReflectionFunction::export
ReflectionFunction


Exports function

ReflectionFunction::__construct
ReflectionFunction::getClosure
ReflectionFunction
PHP Manual

ReflectionFunction::export

(PHP 5, PHP 7)

ReflectionFunction::export — Exports function

说明

public static string ReflectionFunction::export ( string $name [, string $return ] )

Exports a Reflected function.

参数

name

导出的反射。

return

设为 TRUE 时返回导出结果，设为 FALSE（默认值）则忽略返回。

返回值

如果参数 return 设为 TRUE，导出结果将作为 string 返回，否则返回 NULL。

参见

  • ReflectionFunction::invoke() - Invokes function

ReflectionFunction::__construct
ReflectionFunction::getClosure
ReflectionFunction


Returns a dynamically created closure for the function

ReflectionFunction::export
ReflectionFunction::invoke
ReflectionFunction
PHP Manual

ReflectionFunction::getClosure

(PHP >= 5.4.0)

ReflectionFunction::getClosure — Returns a dynamically created closure for the function

说明

public Closure ReflectionFunction::getClosure ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Returns Closure. Returns NULL in case of an error.

ReflectionFunction::export
ReflectionFunction::invoke
ReflectionFunction


Invokes function

ReflectionFunction::getClosure
ReflectionFunction::invokeArgs
ReflectionFunction
PHP Manual

ReflectionFunction::invoke

(PHP 5, PHP 7)

ReflectionFunction::invoke — Invokes function

说明

public mixed ReflectionFunction::invoke ([ mixed $parameter [, mixed $... ]] )

Invokes a reflected function.

参数

args

The passed in argument list. It accepts a variable number of arguments which are passed to the function much like call_user_func() is.

返回值

Returns the result of the invoked function call.

范例

Example #1 ReflectionFunction::invoke() example

<?php
function title($title, $name)
{
    return sprintf("%s. %s\r\n", $title, $name);
}

$function = new ReflectionFunction('title');

echo $function->invoke('Dr', 'Phil');
?>

以上例程会输出：

Dr. Phil

注释

Note:

如果函数有参数需为引用，那么它们必须以引用方式传入。

参见

  • ReflectionFunction::export() - Exports function
  • __invoke()
  • call_user_func() - 把第一个参数作为回调函数调用

ReflectionFunction::getClosure
ReflectionFunction::invokeArgs
ReflectionFunction


Invokes function args

ReflectionFunction::invoke
ReflectionFunction::isDisabled
ReflectionFunction
PHP Manual

ReflectionFunction::invokeArgs

(PHP 5 >= 5.1.0, PHP 7)

ReflectionFunction::invokeArgs — Invokes function args

说明

public mixed ReflectionFunction::invokeArgs ( array $args )

Invokes the function and pass its arguments as array.

参数

args

The passed arguments to the function as an array, much like call_user_func_array() works.

返回值

Returns the result of the invoked function

范例

Example #1 ReflectionFunction::invokeArgs() example

<?php
function title($title, $name)
{
    return sprintf("%s. %s\r\n", $title, $name);
}

$function = new ReflectionFunction('title');

echo $function->invokeArgs(array('Dr', 'Phil'));
?>

以上例程会输出：

Dr. Phil

Example #2 ReflectionFunction::invokeArgs() with references example

<?php
function get_false_conditions(array $conditions, array &$false_conditions)
{
    foreach ($conditions as $condition) {
        if (!$condition) {
            $false_conditions[] = $condition;
        }
    }
}

$function_ref     = new ReflectionFunction('get_false_conditions');

$conditions       = array(true, false, -1, 0, 1);
$false_conditions = array();

$function_ref->invokeArgs(array($conditions, &$false_conditions));

var_dump($false_conditions);
?>

以上例程会输出：

array(2) {
  [0]=>
  bool(false)
  [1]=>
  int(0)
}

注释

Note:

如果函数有参数需为引用，那么它们必须以引用方式传入。

参见

  • ReflectionFunction::invoke() - Invokes function
  • ReflectionFunctionAbstract::getNumberOfParameters() - 获取参数数目
  • __invoke()
  • call_user_func_array() - 调用回调函数，并把一个数组参数作为回调函数的参数

ReflectionFunction::invoke
ReflectionFunction::isDisabled
ReflectionFunction


Checks if function is disabled

ReflectionFunction::invokeArgs
ReflectionFunction::__toString
ReflectionFunction
PHP Manual

ReflectionFunction::isDisabled

(PHP 5, PHP 7)

ReflectionFunction::isDisabled — Checks if function is disabled

说明

public bool ReflectionFunction::isDisabled ( void )

Checks if the function is disabled, via the disable_functions directive.

参数

此函数没有参数。

返回值

TRUE if it's disable, otherwise FALSE

参见

  • ReflectionFunctionAbstract::isUserDefined() - 检查是否是用户定义
  • disable_functions directive

ReflectionFunction::invokeArgs
ReflectionFunction::__toString
ReflectionFunction


To string

ReflectionFunction::isDisabled
ReflectionFunctionAbstract
ReflectionFunction
PHP Manual

ReflectionFunction::__toString

(PHP 5, PHP 7)

ReflectionFunction::__toString — To string

说明

public string ReflectionFunction::__toString ( void )

To string.

参数

此函数没有参数。

返回值

Returns ReflectionFunction::export()-like output for the function.

范例

Example #1 ReflectionFunction::__toString() example

<?php
function title($title, $name)
{
    return sprintf("%s. %s\r\n", $title, $name);
}

echo new ReflectionFunction('title');
?>

以上例程的输出类似于：

Function [ <user> function title ] {
  @@ Command line code 1 - 1

  - Parameters [2] {
    Parameter #0 [ <required> $title ]
    Parameter #1 [ <required> $name ]
  }
}

参见

  • ReflectionFunction::export() - Exports function
  • ReflectionClass::clone()
  • __toString()

ReflectionFunction::isDisabled
ReflectionFunctionAbstract
ReflectionFunction


ReflectionFunctionAbstract 类

(PHP 5, PHP 7)

简介

ReflectionFunction 的父类，详情请阅读它的描述。

类摘要

ReflectionFunctionAbstract implements Reflector {
/* 属性 */
public $name ;
/* 方法 */
final private void __clone ( void )
public ReflectionClass getClosureScopeClass ( void )
public object getClosureThis ( void )
public string getDocComment ( void )
public int getEndLine ( void )
public ReflectionExtension getExtension ( void )
public string getExtensionName ( void )
public string getFileName ( void )
public string getName ( void )
public string getNamespaceName ( void )
public int getNumberOfParameters ( void )
public int getNumberOfRequiredParameters ( void )
public array getParameters ( void )
public ReflectionType getReturnType ( void )
public string getShortName ( void )
public int getStartLine ( void )
public array getStaticVariables ( void )
public bool hasReturnType ( void )
public bool inNamespace ( void )
public bool isClosure ( void )
public bool isDeprecated ( void )
public bool isGenerator ( void )
public bool isInternal ( void )
public bool isUserDefined ( void )
public bool isVariadic ( void )
public bool returnsReference ( void )
abstract public void __toString ( void )
}

属性

name

函数的名称。只读，尝试赋值的时候将会抛出 ReflectionException。

Table of Contents

  • ReflectionFunctionAbstract::__clone — 复制函数
  • ReflectionFunctionAbstract::getClosureScopeClass — Returns the scope associated to the closure
  • ReflectionFunctionAbstract::getClosureThis — 返回本身的匿名函数
  • ReflectionFunctionAbstract::getDocComment — 获取注释内容
  • ReflectionFunctionAbstract::getEndLine — 获取结束行号
  • ReflectionFunctionAbstract::getExtension — 获取扩展信息
  • ReflectionFunctionAbstract::getExtensionName — 获取扩展名称
  • ReflectionFunctionAbstract::getFileName — 获取文件名称
  • ReflectionFunctionAbstract::getName — 获取函数名称
  • ReflectionFunctionAbstract::getNamespaceName — 获取命名空间
  • ReflectionFunctionAbstract::getNumberOfParameters — 获取参数数目
  • ReflectionFunctionAbstract::getNumberOfRequiredParameters — 获取必须输入参数个数
  • ReflectionFunctionAbstract::getParameters — 获取参数
  • ReflectionFunctionAbstract::getReturnType — Gets the specified return type of a function
  • ReflectionFunctionAbstract::getShortName — 获取函数短名称
  • ReflectionFunctionAbstract::getStartLine — 获取开始行号
  • ReflectionFunctionAbstract::getStaticVariables — 获取静态变量
  • ReflectionFunctionAbstract::hasReturnType — Checks if the function has a specified return type
  • ReflectionFunctionAbstract::inNamespace — 检查是否处于命名空间
  • ReflectionFunctionAbstract::isClosure — 检查是否是匿名函数
  • ReflectionFunctionAbstract::isDeprecated — 检查是否已经弃用
  • ReflectionFunctionAbstract::isGenerator — 判断函数是否是一个生成器函数
  • ReflectionFunctionAbstract::isInternal — 判断函数是否是内置函数
  • ReflectionFunctionAbstract::isUserDefined — 检查是否是用户定义
  • ReflectionFunctionAbstract::isVariadic — Checks if the function is variadic
  • ReflectionFunctionAbstract::returnsReference — 检查是否返回参考信息
  • ReflectionFunctionAbstract::__toString — 字符串化
ReflectionFunction::__toString
ReflectionFunctionAbstract::__clone
反射


复制函数

ReflectionFunctionAbstract
ReflectionFunctionAbstract::getClosureScopeClass
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::__clone

(PHP 5, PHP 7)

ReflectionFunctionAbstract::__clone — 复制函数

说明

final private void ReflectionFunctionAbstract::__clone ( void )

复制函数

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

参见

  • Object cloning

ReflectionFunctionAbstract
ReflectionFunctionAbstract::getClosureScopeClass
ReflectionFunctionAbstract


Returns the scope associated to the closure

ReflectionFunctionAbstract::__clone
ReflectionFunctionAbstract::getClosureThis
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::getClosureScopeClass

(PHP >= 5.4.0)

ReflectionFunctionAbstract::getClosureScopeClass — Returns the scope associated to the closure

说明

public ReflectionClass ReflectionFunctionAbstract::getClosureScopeClass ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Returns the class on success or NULL on failure.

ReflectionFunctionAbstract::__clone
ReflectionFunctionAbstract::getClosureThis
ReflectionFunctionAbstract


返回本身的匿名函数

ReflectionFunctionAbstract::getClosureScopeClass
ReflectionFunctionAbstract::getDocComment
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::getClosureThis

(PHP >= 5.4.0)

ReflectionFunctionAbstract::getClosureThis — 返回本身的匿名函数

说明

public object ReflectionFunctionAbstract::getClosureThis ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

返回 $this 指向，产生错误返回 NULL

ReflectionFunctionAbstract::getClosureScopeClass
ReflectionFunctionAbstract::getDocComment
ReflectionFunctionAbstract


获取注释内容

ReflectionFunctionAbstract::getClosureThis
ReflectionFunctionAbstract::getEndLine
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::getDocComment

(PHP 5 >= 5.1.0, PHP 7)

ReflectionFunctionAbstract::getDocComment — 获取注释内容

说明

public string ReflectionFunctionAbstract::getDocComment ( void )

获取函数的注释文本

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

如果存在注释文本返回其内容，否则返回 FALSE

参见

  • ReflectionFunctionAbstract::getStartLine() - 获取开始行号

ReflectionFunctionAbstract::getClosureThis
ReflectionFunctionAbstract::getEndLine
ReflectionFunctionAbstract


获取结束行号

ReflectionFunctionAbstract::getDocComment
ReflectionFunctionAbstract::getExtension
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::getEndLine

(PHP 5, PHP 7)

ReflectionFunctionAbstract::getEndLine — 获取结束行号

说明

public int ReflectionFunctionAbstract::getEndLine ( void )

获取结束行号

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

获取用户定义函数的结束行号，如果未知返回 FALSE

参见

  • ReflectionFunctionAbstract::getStartLine() - 获取开始行号

ReflectionFunctionAbstract::getDocComment
ReflectionFunctionAbstract::getExtension
ReflectionFunctionAbstract


获取扩展信息

ReflectionFunctionAbstract::getEndLine
ReflectionFunctionAbstract::getExtensionName
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::getExtension

(PHP 5, PHP 7)

ReflectionFunctionAbstract::getExtension — 获取扩展信息

说明

public ReflectionExtension ReflectionFunctionAbstract::getExtension ( void )

获取函数的扩展信息

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

返回 ReflectionExtension 对象，包含扩展信息

参见

  • ReflectionFunctionAbstract::getExtensionName() - 获取扩展名称

ReflectionFunctionAbstract::getEndLine
ReflectionFunctionAbstract::getExtensionName
ReflectionFunctionAbstract


获取扩展名称

ReflectionFunctionAbstract::getExtension
ReflectionFunctionAbstract::getFileName
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::getExtensionName

(PHP 5, PHP 7)

ReflectionFunctionAbstract::getExtensionName — 获取扩展名称

说明

public string ReflectionFunctionAbstract::getExtensionName ( void )

获取扩展名称

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

返回扩展名称

参见

  • ReflectionFunctionAbstract::getExtension() - 获取扩展信息

ReflectionFunctionAbstract::getExtension
ReflectionFunctionAbstract::getFileName
ReflectionFunctionAbstract


获取文件名称

ReflectionFunctionAbstract::getExtensionName
ReflectionFunctionAbstract::getName
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::getFileName

(PHP 5, PHP 7)

ReflectionFunctionAbstract::getFileName — 获取文件名称

说明

public string ReflectionFunctionAbstract::getFileName ( void )

获取函数定义的文件名称

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The file name.

参见

  • ReflectionFunctionAbstract::getNamespaceName() - 获取命名空间

ReflectionFunctionAbstract::getExtensionName
ReflectionFunctionAbstract::getName
ReflectionFunctionAbstract


获取函数名称

ReflectionFunctionAbstract::getFileName
ReflectionFunctionAbstract::getNamespaceName
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::getName

(PHP 5, PHP 7)

ReflectionFunctionAbstract::getName — 获取函数名称

说明

public string ReflectionFunctionAbstract::getName ( void )

获取函数名称

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

返回函数名称

参见

  • ReflectionFunctionAbstract::getExtensionName() - 获取扩展名称
  • ReflectionFunctionAbstract::isUserDefined() - 检查是否是用户定义

ReflectionFunctionAbstract::getFileName
ReflectionFunctionAbstract::getNamespaceName
ReflectionFunctionAbstract


获取命名空间

ReflectionFunctionAbstract::getName
ReflectionFunctionAbstract::getNumberOfParameters
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::getNamespaceName

(PHP 5 >= 5.3.0, PHP 7)

ReflectionFunctionAbstract::getNamespaceName — 获取命名空间

说明

public string ReflectionFunctionAbstract::getNamespaceName ( void )

获取类定义所属的命名空间

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

返回命名空间

参见

  • ReflectionFunctionAbstract::getFileName() - 获取文件名称
  • namespaces

ReflectionFunctionAbstract::getName
ReflectionFunctionAbstract::getNumberOfParameters
ReflectionFunctionAbstract


获取参数数目

ReflectionFunctionAbstract::getNamespaceName
ReflectionFunctionAbstract::getNumberOfRequiredParameters
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::getNumberOfParameters

(PHP 5 >= 5.0.3, PHP 7)

ReflectionFunctionAbstract::getNumberOfParameters — 获取参数数目

说明

public int ReflectionFunctionAbstract::getNumberOfParameters ( void )

获取函数定义的参数数目，包括可选参数

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

参数的个数

参见

  • ReflectionFunctionAbstract::getNumberOfRequiredParameters() - 获取必须输入参数个数
  • func_num_args() - Returns the number of arguments passed to the function

ReflectionFunctionAbstract::getNamespaceName
ReflectionFunctionAbstract::getNumberOfRequiredParameters
ReflectionFunctionAbstract


获取必须输入参数个数

ReflectionFunctionAbstract::getNumberOfParameters
ReflectionFunctionAbstract::getParameters
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::getNumberOfRequiredParameters

(PHP 5 >= 5.0.3, PHP 7)

ReflectionFunctionAbstract::getNumberOfRequiredParameters — 获取必须输入参数个数

说明

public int ReflectionFunctionAbstract::getNumberOfRequiredParameters ( void )

获取函数定义中，必须输入的参数个数

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

必须输入的参数个数

参见

  • ReflectionFunctionAbstract::getNumberOfParameters() - 获取参数数目

ReflectionFunctionAbstract::getNumberOfParameters
ReflectionFunctionAbstract::getParameters
ReflectionFunctionAbstract


获取参数

ReflectionFunctionAbstract::getNumberOfRequiredParameters
ReflectionFunctionAbstract::getReturnType
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::getParameters

(PHP 5, PHP 7)

ReflectionFunctionAbstract::getParameters — 获取参数

说明

public array ReflectionFunctionAbstract::getParameters ( void )

通过 ReflectionParameter 数组返回参数列表

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

一组 ReflectionParameter 对象表示每一参数

参见

  • ReflectionFunctionAbstract::getNumberOfParameters() - 获取参数数目
  • func_get_args() - 返回一个包含函数参数列表的数组

ReflectionFunctionAbstract::getNumberOfRequiredParameters
ReflectionFunctionAbstract::getReturnType
ReflectionFunctionAbstract


Gets the specified return type of a function

ReflectionFunctionAbstract::getParameters
ReflectionFunctionAbstract::getShortName
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::getReturnType

(PHP 7)

ReflectionFunctionAbstract::getReturnType — Gets the specified return type of a function

说明

public ReflectionType ReflectionFunctionAbstract::getReturnType ( void )

Gets the specified return type of a reflected function.

参数

此函数没有参数。

返回值

Returns a ReflectionType object if a return type is specified, NULL otherwise.

范例

Example #1 ReflectionFunctionAbstract::getReturnType() example

<?php

function to_int($param) : int {
    return (int) $param;
}

$reflection1 = new ReflectionFunction('to_int');
echo $reflection1->getReturnType();

以上例程会输出：

int

Example #2 Usage on built-in functions

<?php

$reflection2 = new ReflectionFunction('array_merge');

var_dump($reflection2->getReturnType());

以上例程会输出：

null

This is because many internal functions do not have types specified for their parameters or return values. It is therefore best to avoid using this method on built-in functions.

参见

  • ReflectionFunctionAbstract::hasReturnType() - Checks if the function has a specified return type
  • ReflectionType::__toString()

ReflectionFunctionAbstract::getParameters
ReflectionFunctionAbstract::getShortName
ReflectionFunctionAbstract


获取函数短名称

ReflectionFunctionAbstract::getReturnType
ReflectionFunctionAbstract::getStartLine
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::getShortName

(PHP 5 >= 5.3.0, PHP 7)

ReflectionFunctionAbstract::getShortName — 获取函数短名称

说明

public string ReflectionFunctionAbstract::getShortName ( void )

获取函数的段名称 (没有命名空间定义)

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

函数短名称

参见

  • ReflectionFunctionAbstract::getNamespaceName() - 获取命名空间
  • namespaces

ReflectionFunctionAbstract::getReturnType
ReflectionFunctionAbstract::getStartLine
ReflectionFunctionAbstract


获取开始行号

ReflectionFunctionAbstract::getShortName
ReflectionFunctionAbstract::getStaticVariables
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::getStartLine

(PHP 5, PHP 7)

ReflectionFunctionAbstract::getStartLine — 获取开始行号

说明

public int ReflectionFunctionAbstract::getStartLine ( void )

获取函数定义的开始行号

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

开始行号

参见

  • ReflectionFunctionAbstract::getEndLine() - 获取结束行号

ReflectionFunctionAbstract::getShortName
ReflectionFunctionAbstract::getStaticVariables
ReflectionFunctionAbstract


获取静态变量

ReflectionFunctionAbstract::getStartLine
ReflectionFunctionAbstract::hasReturnType
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::getStaticVariables

(PHP 5, PHP 7)

ReflectionFunctionAbstract::getStaticVariables — 获取静态变量

说明

public array ReflectionFunctionAbstract::getStaticVariables ( void )

获取静态变量

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

返回一个静态变量的 array

参见

  • ReflectionFunctionAbstract::getParameters() - 获取参数

ReflectionFunctionAbstract::getStartLine
ReflectionFunctionAbstract::hasReturnType
ReflectionFunctionAbstract


Checks if the function has a specified return type

ReflectionFunctionAbstract::getStaticVariables
ReflectionFunctionAbstract::inNamespace
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::hasReturnType

(PHP 7)

ReflectionFunctionAbstract::hasReturnType — Checks if the function has a specified return type

说明

public bool ReflectionFunctionAbstract::hasReturnType ( void )

Checks whether the reflected function has a return type specified.

参数

此函数没有参数。

返回值

Returns TRUE if the function is a specified return type, otherwise FALSE.

范例

Example #1 ReflectionFunctionAbstract::hasReturnType() example

<?php

function to_int($param) : int {
    return (int) $param;
}

$reflection1 = new ReflectionFunction('to_int');
var_dump($reflection1->hasReturnType());

以上例程会输出：

bool(true)

Example #2 Usage on built-in functions

<?php

$reflection2 = new ReflectionFunction('array_merge');

var_dump($reflection2->hasReturnType());

以上例程会输出：

bool(false)

This is because many internal functions do not have types specified for their parameters or return values. It is therefore best to avoid using this method on built-in functions.

参见

  • ReflectionFunctionAbstract::getReturnType() - Gets the specified return type of a function

ReflectionFunctionAbstract::getStaticVariables
ReflectionFunctionAbstract::inNamespace
ReflectionFunctionAbstract


检查是否处于命名空间

ReflectionFunctionAbstract::hasReturnType
ReflectionFunctionAbstract::isClosure
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::inNamespace

(PHP 5 >= 5.3.0, PHP 7)

ReflectionFunctionAbstract::inNamespace — 检查是否处于命名空间

说明

public bool ReflectionFunctionAbstract::inNamespace ( void )

检查函数是否在命名空间内定义

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

在命名空间内返回 TRUE，否则返回 FALSE

参见

  • ReflectionFunctionAbstract::getNamespaceName() - 获取命名空间
  • namespaces

ReflectionFunctionAbstract::hasReturnType
ReflectionFunctionAbstract::isClosure
ReflectionFunctionAbstract


检查是否是匿名函数

ReflectionFunctionAbstract::inNamespace
ReflectionFunctionAbstract::isDeprecated
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::isClosure

(PHP 5 >= 5.3.0, PHP 7)

ReflectionFunctionAbstract::isClosure — 检查是否是匿名函数

说明

public bool ReflectionFunctionAbstract::isClosure ( void )

检查是否是匿名函数

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

匿名函数返回 TRUE，否则返回 FALSE

参见

  • ReflectionFunctionAbstract::()

ReflectionFunctionAbstract::inNamespace
ReflectionFunctionAbstract::isDeprecated
ReflectionFunctionAbstract


检查是否已经弃用

ReflectionFunctionAbstract::isClosure
ReflectionFunctionAbstract::isGenerator
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::isDeprecated

(PHP 5, PHP 7)

ReflectionFunctionAbstract::isDeprecated — 检查是否已经弃用

说明

public bool ReflectionFunctionAbstract::isDeprecated ( void )

检查函数是否已经被弃用

参数

此函数没有参数。

返回值

弃用返回 TRUE，否则返回 FALSE

范例

Example #1 ReflectionFunctionAbstract::isDeprecated() example

<?php
$rf = new ReflectionFunction('ereg');
var_dump($rf->isDeprecated());
?>

以上例程会输出：

bool(true)

参见

  • ReflectionFunctionAbstract::getDocComment() - 获取注释内容

ReflectionFunctionAbstract::isClosure
ReflectionFunctionAbstract::isGenerator
ReflectionFunctionAbstract


判断函数是否是一个生成器函数

ReflectionFunctionAbstract::isDeprecated
ReflectionFunctionAbstract::isInternal
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::isGenerator

(PHP 5 >= 5.5.0, PHP 7)

ReflectionFunctionAbstract::isGenerator — 判断函数是否是一个生成器函数

说明

public bool ReflectionFunctionAbstract::isGenerator ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

生成器函数返回 TRUE，否则返回 FALSE on failure.

ReflectionFunctionAbstract::isDeprecated
ReflectionFunctionAbstract::isInternal
ReflectionFunctionAbstract


判断函数是否是内置函数

ReflectionFunctionAbstract::isGenerator
ReflectionFunctionAbstract::isUserDefined
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::isInternal

(PHP 5, PHP 7)

ReflectionFunctionAbstract::isInternal — 判断函数是否是内置函数

说明

public bool ReflectionFunctionAbstract::isInternal ( void )

判断函数是否是内置函数，与用户自定义函数相反

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

内置函数返回 TRUE，否则返回 FALSE

参见

  • ReflectionFunctionAbstract::isUserDefined() - 检查是否是用户定义

ReflectionFunctionAbstract::isGenerator
ReflectionFunctionAbstract::isUserDefined
ReflectionFunctionAbstract


检查是否是用户定义

ReflectionFunctionAbstract::isInternal
ReflectionFunctionAbstract::isVariadic
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::isUserDefined

(PHP 5, PHP 7)

ReflectionFunctionAbstract::isUserDefined — 检查是否是用户定义

说明

public bool ReflectionFunctionAbstract::isUserDefined ( void )

检查函数是否是用户自定义，也就是说不是 PHP 自己内置函数

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

用户自定义函数返回 TRUE，否则返回 FALSE

参见

  • ReflectionFunctionAbstract::isInternal() - 判断函数是否是内置函数

ReflectionFunctionAbstract::isInternal
ReflectionFunctionAbstract::isVariadic
ReflectionFunctionAbstract


Checks if the function is variadic

ReflectionFunctionAbstract::isUserDefined
ReflectionFunctionAbstract::returnsReference
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::isVariadic

(PHP 5 >= 5.6.0, PHP 7)

ReflectionFunctionAbstract::isVariadic — Checks if the function is variadic

说明

public bool ReflectionFunctionAbstract::isVariadic ( void )

Checks if the function is variadic.

参数

此函数没有参数。

返回值

Returns TRUE if the function is variadic, otherwise FALSE.

ReflectionFunctionAbstract::isUserDefined
ReflectionFunctionAbstract::returnsReference
ReflectionFunctionAbstract


检查是否返回参考信息

ReflectionFunctionAbstract::isVariadic
ReflectionFunctionAbstract::__toString
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::returnsReference

(PHP 5, PHP 7)

ReflectionFunctionAbstract::returnsReference — 检查是否返回参考信息

说明

public bool ReflectionFunctionAbstract::returnsReference ( void )

检查是否返回参考信息

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

返回参考信息返回 TRUE，否则返回 FALSE

参见

  • ReflectionFunctionAbstract::isClosure() - 检查是否是匿名函数

ReflectionFunctionAbstract::isVariadic
ReflectionFunctionAbstract::__toString
ReflectionFunctionAbstract


字符串化

ReflectionFunctionAbstract::returnsReference
ReflectionMethod
ReflectionFunctionAbstract
PHP Manual

ReflectionFunctionAbstract::__toString

(PHP 5, PHP 7)

ReflectionFunctionAbstract::__toString — 字符串化

说明

abstract public void ReflectionFunctionAbstract::__toString ( void )

To string.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The string.

参见

  • ReflectionClass::clone()
  • __toString()

ReflectionFunctionAbstract::returnsReference
ReflectionMethod
ReflectionFunctionAbstract


ReflectionMethod 类

(PHP 5, PHP 7)

简介

ReflectionMethod 类报告了一个方法的有关信息。

类摘要

ReflectionMethod extends ReflectionFunctionAbstract implements Reflector {
/* 常量 */
const integer IS_STATIC = 1 ;
const integer IS_PUBLIC = 256 ;
const integer IS_PROTECTED = 512 ;
const integer IS_PRIVATE = 1024 ;
const integer IS_ABSTRACT = 2 ;
const integer IS_FINAL = 4 ;
/* 属性 */
public $name ;
public $class ;
/* 方法 */
public __construct ( mixed $class , string $name )
public static string export ( string $class , string $name [, bool $return = false ] )
public Closure getClosure ( object $object )
public ReflectionClass getDeclaringClass ( void )
public int getModifiers ( void )
public ReflectionMethod getPrototype ( void )
public mixed invoke ( object $object [, mixed $parameter [, mixed $... ]] )
public mixed invokeArgs ( object $object , array $args )
public bool isAbstract ( void )
public bool isConstructor ( void )
public bool isDestructor ( void )
public bool isFinal ( void )
public bool isPrivate ( void )
public bool isProtected ( void )
public bool isPublic ( void )
public bool isStatic ( void )
public void setAccessible ( bool $accessible )
public string __toString ( void )
/* 继承的方法 */
final private void ReflectionFunctionAbstract::__clone ( void )
public ReflectionClass ReflectionFunctionAbstract::getClosureScopeClass ( void )
public object ReflectionFunctionAbstract::getClosureThis ( void )
public string ReflectionFunctionAbstract::getDocComment ( void )
public int ReflectionFunctionAbstract::getEndLine ( void )
public ReflectionExtension ReflectionFunctionAbstract::getExtension ( void )
public string ReflectionFunctionAbstract::getExtensionName ( void )
public string ReflectionFunctionAbstract::getFileName ( void )
public string ReflectionFunctionAbstract::getName ( void )
public string ReflectionFunctionAbstract::getNamespaceName ( void )
public int ReflectionFunctionAbstract::getNumberOfParameters ( void )
public int ReflectionFunctionAbstract::getNumberOfRequiredParameters ( void )
public array ReflectionFunctionAbstract::getParameters ( void )
public ReflectionType ReflectionFunctionAbstract::getReturnType ( void )
public string ReflectionFunctionAbstract::getShortName ( void )
public int ReflectionFunctionAbstract::getStartLine ( void )
public array ReflectionFunctionAbstract::getStaticVariables ( void )
public bool ReflectionFunctionAbstract::hasReturnType ( void )
public bool ReflectionFunctionAbstract::inNamespace ( void )
public bool ReflectionFunctionAbstract::isClosure ( void )
public bool ReflectionFunctionAbstract::isDeprecated ( void )
public bool ReflectionFunctionAbstract::isGenerator ( void )
public bool ReflectionFunctionAbstract::isInternal ( void )
public bool ReflectionFunctionAbstract::isUserDefined ( void )
public bool ReflectionFunctionAbstract::isVariadic ( void )
public bool ReflectionFunctionAbstract::returnsReference ( void )
abstract public void ReflectionFunctionAbstract::__toString ( void )
}

属性

name

Method name

class

Class name

预定义常量

ReflectionMethod 修饰符

ReflectionMethod::IS_STATIC

指示一个方法是静态（static）的。

ReflectionMethod::IS_PUBLIC

指示一个方法是 public 的。

ReflectionMethod::IS_PROTECTED

指示一个方法是 protected 的。

ReflectionMethod::IS_PRIVATE

指示一个方法是 private 的。

ReflectionMethod::IS_ABSTRACT

指示一个方法是 abstract 的。

ReflectionMethod::IS_FINAL

指示一个方法是 final 的。

Table of Contents

  • ReflectionMethod::__construct — ReflectionMethod 的构造函数
  • ReflectionMethod::export — 输出一个回调方法
  • ReflectionMethod::getClosure — 返回一个动态建立的方法调用接口，译者注：可以使用这个返回值直接调用非公开方法。
  • ReflectionMethod::getDeclaringClass — 获取反射函数调用参数的类表达
  • ReflectionMethod::getModifiers — 获取方法的修饰符
  • ReflectionMethod::getPrototype — 返回方法原型 (如果存在)
  • ReflectionMethod::invoke — Invoke
  • ReflectionMethod::invokeArgs — 带参数执行
  • ReflectionMethod::isAbstract — 判断方法是否是抽象方法
  • ReflectionMethod::isConstructor — 判断方法是否是构造方法
  • ReflectionMethod::isDestructor — 判断方法是否是析构方法
  • ReflectionMethod::isFinal — 判断方法是否定义 final
  • ReflectionMethod::isPrivate — 判断方法是否是私有方法
  • ReflectionMethod::isProtected — 判断方法是否是保护方法 (protected)
  • ReflectionMethod::isPublic — 判断方法是否是公开方法
  • ReflectionMethod::isStatic — 判断方法是否是静态方法
  • ReflectionMethod::setAccessible — 设置方法是否访问
  • ReflectionMethod::__toString — 返回反射方法对象的字符串表达
ReflectionFunctionAbstract::__toString
ReflectionMethod::__construct
反射


ReflectionMethod 的构造函数

ReflectionMethod
ReflectionMethod::export
ReflectionMethod
PHP Manual

ReflectionMethod::__construct

(PHP 5, PHP 7)

ReflectionMethod::__construct — ReflectionMethod 的构造函数

说明

public ReflectionMethod::__construct ( mixed $class , string $name )
public ReflectionMethod::__construct ( string $class_method )

构造一个新的 ReflectionMethod

参数

class

包含方法的类名称或者这个类的一个实例

name

方法的名称

class_method

类名称和方法名称，之间使用 :: 分隔

返回值

没有返回值。

错误／异常

如果指定的方法不存在，那么抛出一个 ReflectionException

范例

Example #1 ReflectionMethod::__construct() example

<?php
class Counter
{
    private static $c = 0;

    /**
     * Increment counter
     *
     * @final
     * @static
     * @access  public
     * @return  int
     */
    final public static function increment()
    {
        return ++self::$c;
    }
}

// Create an instance of the ReflectionMethod class
$method = new ReflectionMethod('Counter', 'increment');

// Print out basic information
printf(
    "===> The %s%s%s%s%s%s%s method '%s' (which is %s)\n" .
    "     declared in %s\n" .
    "     lines %d to %d\n" .
    "     having the modifiers %d[%s]\n",
        $method->isInternal() ? 'internal' : 'user-defined',
        $method->isAbstract() ? ' abstract' : '',
        $method->isFinal() ? ' final' : '',
        $method->isPublic() ? ' public' : '',
        $method->isPrivate() ? ' private' : '',
        $method->isProtected() ? ' protected' : '',
        $method->isStatic() ? ' static' : '',
        $method->getName(),
        $method->isConstructor() ? 'the constructor' : 'a regular method',
        $method->getFileName(),
        $method->getStartLine(),
        $method->getEndline(),
        $method->getModifiers(),
        implode(' ', Reflection::getModifierNames($method->getModifiers()))
);

// 打印注释文档
printf("---> Documentation:\n %s\n", var_export($method->getDocComment(), 1));

// 打印存在的静态变量
if ($statics= $method->getStaticVariables()) {
    printf("---> Static variables: %s\n", var_export($statics, 1));
}

// 执行方法
printf("---> Invocation results in: ");
var_dump($method->invoke(NULL));
?>

以上例程的输出类似于：

===> The user-defined final public static method 'increment' (which is a regular method)
     declared in /Users/philip/cvs/phpdoc/test.php
     lines 14 to 17
     having the modifiers 261[final public static]
---> Documentation:
 '/**
     * Increment counter
     *
     * @final
     * @static
     * @access  public
     * @return  int
     */'
---> Invocation results in: int(1)

参见

  • ReflectionMethod::export() - 输出一个回调方法
  • Constructors

ReflectionMethod
ReflectionMethod::export
ReflectionMethod


输出一个回调方法

ReflectionMethod::__construct
ReflectionMethod::getClosure
ReflectionMethod
PHP Manual

ReflectionMethod::export

(PHP 5, PHP 7)

ReflectionMethod::export — 输出一个回调方法

说明

public static string ReflectionMethod::export ( string $class , string $name [, bool $return = false ] )

Exports a ReflectionMethod.

Warning

本函数还未编写文档，仅有参数列表。

参数

class

类名称

name

方法名称

return

设为 TRUE 时返回导出结果，设为 FALSE（默认值）则忽略返回。

返回值

如果参数 return 设为 TRUE，导出结果将作为 string 返回，否则返回 NULL。

参见

  • ReflectionMethod::__construct() - ReflectionMethod 的构造函数
  • ReflectionMethod::__toString() - 返回反射方法对象的字符串表达

ReflectionMethod::__construct
ReflectionMethod::getClosure
ReflectionMethod


返回一个动态建立的方法调用接口，译者注：可以使用这个返回值直接调用非公开方法。

ReflectionMethod::export
ReflectionMethod::getDeclaringClass
ReflectionMethod
PHP Manual

ReflectionMethod::getClosure

(PHP >= 5.4.0)

ReflectionMethod::getClosure — 返回一个动态建立的方法调用接口，译者注：可以使用这个返回值直接调用非公开方法。

说明

public Closure ReflectionMethod::getClosure ( object $object )

Warning

本函数还未编写文档，仅有参数列表。

参数

object

不可以使用静态方法，需要其他类型的方法

返回值

返回 Closure 如果产生任何错误返回 NULL

ReflectionMethod::export
ReflectionMethod::getDeclaringClass
ReflectionMethod


获取反射函数调用参数的类表达

ReflectionMethod::getClosure
ReflectionMethod::getModifiers
ReflectionMethod
PHP Manual

ReflectionMethod::getDeclaringClass

(PHP 5, PHP 7)

ReflectionMethod::getDeclaringClass — 获取反射函数调用参数的类表达

说明

public ReflectionClass ReflectionMethod::getDeclaringClass ( void )

获取反射函数参数的一个表达类。 译者注：应该是将这个方法作为一个类返回，他的参数将成为类属性， 执行内容变成什么不知道，下面的范例能够说明一些问题

参数

此函数没有参数。

返回值

返回 ReflectionClass 对象，其中包含这个方法。

范例

Example #1 ReflectionMethod::getDeclaringClass() example

<?php
class HelloWorld {

    protected function sayHelloTo($name) {
        return 'Hello ' . $name;
    }

}

$reflectionMethod = new ReflectionMethod(new HelloWorld(), 'sayHelloTo');
var_dump($reflectionMethod->getDeclaringClass());
?>

以上例程会输出：

object(ReflectionClass)#2 (1) {
  ["name"]=>
  string(10) "HelloWorld"
}

参见

  • ReflectionMethod::isAbstract() - 判断方法是否是抽象方法

ReflectionMethod::getClosure
ReflectionMethod::getModifiers
ReflectionMethod


获取方法的修饰符

ReflectionMethod::getDeclaringClass
ReflectionMethod::getPrototype
ReflectionMethod
PHP Manual

ReflectionMethod::getModifiers

(PHP 5, PHP 7)

ReflectionMethod::getModifiers — 获取方法的修饰符

说明

public int ReflectionMethod::getModifiers ( void )

返回一个方法的修饰符，返回值是一个位标

参数

此函数没有参数。

返回值

使用一个数字表示方法修饰符，具体数字的含义可以参考 predefined constants 中的说明。

范例

Example #1 ReflectionMethod::getModifiers() example

<?php
class Testing
{
    final public static function foo()
    {
        return;
    }
    public function bar()
    {
        return;
    }
}

$foo = new ReflectionMethod('Testing', 'foo');

echo "Modifiers for method foo():\n";
echo $foo->getModifiers() . "\n";
echo implode(' ', Reflection::getModifierNames($foo->getModifiers())) . "\n";

$bar = new ReflectionMethod('Testing', 'bar');

echo "Modifiers for method bar():\n";
echo $bar->getModifiers() . "\n";
echo implode(' ', Reflection::getModifierNames($bar->getModifiers()));
?>

以上例程的输出类似于：

Modifiers for method foo():
261
final public static
Modifiers for method bar():
65792
public

参见

  • Reflection::getModifierNames() - 获取修饰符的名称

ReflectionMethod::getDeclaringClass
ReflectionMethod::getPrototype
ReflectionMethod


返回方法原型 (如果存在)

ReflectionMethod::getModifiers
ReflectionMethod::invoke
ReflectionMethod
PHP Manual

ReflectionMethod::getPrototype

(PHP 5, PHP 7)

ReflectionMethod::getPrototype — 返回方法原型 (如果存在)

说明

public ReflectionMethod ReflectionMethod::getPrototype ( void )

返回方法原型

参数

此函数没有参数。

返回值

方法原型的一个 ReflectionMethod 实例

错误／异常

如果方法没有原型，产生一个 ReflectionException

范例

Example #1 ReflectionMethod::getPrototype() example

<?php
class Hello {

    public function sayHelloTo($name) {
        return 'Hello ' . $name;
    }

}
class HelloWorld extends Hello {

    public function sayHelloTo($name) {
        return 'Hello world: ' . $name;
    }

}

$reflectionMethod = new ReflectionMethod('HelloWorld', 'sayHelloTo');
var_dump($reflectionMethod->getPrototype());
?>

以上例程会输出：

object(ReflectionMethod)#2 (2) {
  ["name"]=>
  string(10) "sayHelloTo"
  ["class"]=>
  string(5) "Hello"
}

参见

  • ReflectionMethod::getModifiers() - 获取方法的修饰符

ReflectionMethod::getModifiers
ReflectionMethod::invoke
ReflectionMethod


Invoke

ReflectionMethod::getPrototype
ReflectionMethod::invokeArgs
ReflectionMethod
PHP Manual

ReflectionMethod::invoke

(PHP 5, PHP 7)

ReflectionMethod::invoke — Invoke

说明

public mixed ReflectionMethod::invoke ( object $object [, mixed $parameter [, mixed $... ]] )

执行一个反射的方法。

参数

object

如果执行的方法是静态类，那么这个参数传送 null。

parameter

0，或者传送给方法的参数列表。可以通过这个参数，给方法传送大量的参数。

返回值

返回方法的返回值

错误／异常

如果 object 并没有包含一个可以使用的类实例，那么将产生 一个 ReflectionException。

如果方法调用失败，也会产生一个 ReflectionException。

范例

Example #1 ReflectionMethod::invoke() example

<?php
class HelloWorld {

    public function sayHelloTo($name) {
        return 'Hello ' . $name;
    }

}

$reflectionMethod = new ReflectionMethod('HelloWorld', 'sayHelloTo');
echo $reflectionMethod->invoke(new HelloWorld(), 'Mike');
?>

以上例程会输出：

Hello Mike

注释

Note:

如果函数有参数需为引用，那么它们必须以引用方式传入。

参见

  • ReflectionMethod::invokeArgs() - 带参数执行
  • __invoke()
  • call_user_func() - 把第一个参数作为回调函数调用

ReflectionMethod::getPrototype
ReflectionMethod::invokeArgs
ReflectionMethod


带参数执行

ReflectionMethod::invoke
ReflectionMethod::isAbstract
ReflectionMethod
PHP Manual

ReflectionMethod::invokeArgs

(PHP 5 >= 5.1.0, PHP 7)

ReflectionMethod::invokeArgs — 带参数执行

说明

public mixed ReflectionMethod::invokeArgs ( object $object , array $args )

使用数组给方法传送参数，并执行他。

参数

object

调用方法的对象，如果是静态对象，设置为 null

args

使用 array 传送的方法参数。

返回值

返回方法返回值

错误／异常

如果 object 指定的实例无法执行方法，那么产生 ReflectionException 异常。

如果方法调用失败，产生 ReflectionException

范例

Example #1 ReflectionMethod::invokeArgs() example

<?php
class HelloWorld {

    public function sayHelloTo($name) {
        return 'Hello ' . $name;
    }

}

$reflectionMethod = new ReflectionMethod('HelloWorld', 'sayHelloTo');
echo $reflectionMethod->invokeArgs(new HelloWorld(), array('Mike'));
?>

以上例程会输出：

Hello Mike

注释

Note:

如果函数有参数需为引用，那么它们必须以引用方式传入。

参见

  • ReflectionMethod::invoke() - Invoke
  • __invoke()
  • call_user_func_array() - 调用回调函数，并把一个数组参数作为回调函数的参数

ReflectionMethod::invoke
ReflectionMethod::isAbstract
ReflectionMethod


判断方法是否是抽象方法

ReflectionMethod::invokeArgs
ReflectionMethod::isConstructor
ReflectionMethod
PHP Manual

ReflectionMethod::isAbstract

(PHP 5, PHP 7)

ReflectionMethod::isAbstract — 判断方法是否是抽象方法

说明

public bool ReflectionMethod::isAbstract ( void )

判断方法是否是抽象方法

参数

此函数没有参数。

返回值

如果是抽象方法返回 TRUE，否则返回 FALSE

参见

  • ReflectionMethod::getDeclaringClass() - 获取反射函数调用参数的类表达

ReflectionMethod::invokeArgs
ReflectionMethod::isConstructor
ReflectionMethod


判断方法是否是构造方法

ReflectionMethod::isAbstract
ReflectionMethod::isDestructor
ReflectionMethod
PHP Manual

ReflectionMethod::isConstructor

(PHP 5, PHP 7)

ReflectionMethod::isConstructor — 判断方法是否是构造方法

说明

public bool ReflectionMethod::isConstructor ( void )

判断方法是否是构造方法

参数

此函数没有参数。

返回值

如果是构造方法返回 TRUE，否则返回 FALSE

参见

  • ReflectionMethod::__construct() - ReflectionMethod 的构造函数
  • ReflectionMethod::isAbstract() - 判断方法是否是抽象方法
  • ReflectionMethod::isDestructor() - 判断方法是否是析构方法

ReflectionMethod::isAbstract
ReflectionMethod::isDestructor
ReflectionMethod


判断方法是否是析构方法

ReflectionMethod::isConstructor
ReflectionMethod::isFinal
ReflectionMethod
PHP Manual

ReflectionMethod::isDestructor

(PHP 5, PHP 7)

ReflectionMethod::isDestructor — 判断方法是否是析构方法

说明

public bool ReflectionMethod::isDestructor ( void )

判断方法是否是析构方法

参数

此函数没有参数。

返回值

如果是析构方法返回 TRUE，否则返回 FALSE

参见

  • ReflectionMethod::isConstructor() - 判断方法是否是构造方法

ReflectionMethod::isConstructor
ReflectionMethod::isFinal
ReflectionMethod


判断方法是否定义 final

ReflectionMethod::isDestructor
ReflectionMethod::isPrivate
ReflectionMethod
PHP Manual

ReflectionMethod::isFinal

(PHP 5, PHP 7)

ReflectionMethod::isFinal — 判断方法是否定义 final

说明

public bool ReflectionMethod::isFinal ( void )

判断方法是否定义 final

参数

此函数没有参数。

返回值

如果是 final 返回 TRUE，否则返回 FALSE

参见

  • ReflectionMethod::isStatic() - 判断方法是否是静态方法

ReflectionMethod::isDestructor
ReflectionMethod::isPrivate
ReflectionMethod


判断方法是否是私有方法

ReflectionMethod::isFinal
ReflectionMethod::isProtected
ReflectionMethod
PHP Manual

ReflectionMethod::isPrivate

(PHP 5, PHP 7)

ReflectionMethod::isPrivate — 判断方法是否是私有方法

说明

public bool ReflectionMethod::isPrivate ( void )

判断方法是否是私有方法

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

私有方法返回 TRUE，否则返回 FALSE

参见

  • ReflectionMethod::isPublic() - 判断方法是否是公开方法

ReflectionMethod::isFinal
ReflectionMethod::isProtected
ReflectionMethod


判断方法是否是保护方法 (protected)

ReflectionMethod::isPrivate
ReflectionMethod::isPublic
ReflectionMethod
PHP Manual

ReflectionMethod::isProtected

(PHP 5, PHP 7)

ReflectionMethod::isProtected — 判断方法是否是保护方法 (protected)

说明

public bool ReflectionMethod::isProtected ( void )

判断方法是否是保护方法

参数

此函数没有参数。

返回值

保护方法返回 TRUE，否则返回 FALSE

参见

  • ReflectionMethod::isPrivate() - 判断方法是否是私有方法

ReflectionMethod::isPrivate
ReflectionMethod::isPublic
ReflectionMethod


判断方法是否是公开方法

ReflectionMethod::isProtected
ReflectionMethod::isStatic
ReflectionMethod
PHP Manual

ReflectionMethod::isPublic

(PHP 5, PHP 7)

ReflectionMethod::isPublic — 判断方法是否是公开方法

说明

public bool ReflectionMethod::isPublic ( void )

判断方法是否是公开方法

参数

此函数没有参数。

返回值

公开方法返回 TRUE，否则返回 FALSE

参见

  • ReflectionMethod::isPrivate() - 判断方法是否是私有方法

ReflectionMethod::isProtected
ReflectionMethod::isStatic
ReflectionMethod


判断方法是否是静态方法

ReflectionMethod::isPublic
ReflectionMethod::setAccessible
ReflectionMethod
PHP Manual

ReflectionMethod::isStatic

(PHP 5, PHP 7)

ReflectionMethod::isStatic — 判断方法是否是静态方法

说明

public bool ReflectionMethod::isStatic ( void )

判断方法是否是静态方法

参数

此函数没有参数。

返回值

静态方法返回 TRUE，否则返回 FALSE

参见

  • ReflectionMethod::isFinal() - 判断方法是否定义 final

ReflectionMethod::isPublic
ReflectionMethod::setAccessible
ReflectionMethod


设置方法是否访问

ReflectionMethod::isStatic
ReflectionMethod::__toString
ReflectionMethod
PHP Manual

ReflectionMethod::setAccessible

(PHP 5 >= 5.3.2, PHP 7)

ReflectionMethod::setAccessible — 设置方法是否访问

说明

public void ReflectionMethod::setAccessible ( bool $accessible )

设置方法是否可以访问，例如通过设置可以访问能够执行私有方法和保护方法

参数

accessible

可以访问设置 TRUE，否则设置 FALSE

返回值

没有返回值。

参见

  • ReflectionMethod::isPrivate() - 判断方法是否是私有方法
  • ReflectionMethod::isProtected() - 判断方法是否是保护方法 (protected)

ReflectionMethod::isStatic
ReflectionMethod::__toString
ReflectionMethod


返回反射方法对象的字符串表达

ReflectionMethod::setAccessible
ReflectionObject
ReflectionMethod
PHP Manual

ReflectionMethod::__toString

(PHP 5, PHP 7)

ReflectionMethod::__toString — 返回反射方法对象的字符串表达

说明

public string ReflectionMethod::__toString ( void )

返回反射方法对象的字符串表达

参数

此函数没有参数。

返回值

ReflectionMethod 实例的字符串表达，也就是字符串

范例

Example #1 ReflectionMethod::__toString() example

<?php
class HelloWorld {

    public function sayHelloTo($name) {
        return 'Hello ' . $name;
    }

}

$reflectionMethod = new ReflectionMethod(new HelloWorld(), 'sayHelloTo');
echo $reflectionMethod;
?>

以上例程会输出：

Method [ <user> public method sayHelloTo ] {
  @@ /var/www/examples/reflection.php 16 - 18

  - Parameters [1] {
    Parameter #0 [ <required> $name ]
  }
}

参见

  • ReflectionMethod::export() - 输出一个回调方法
  • __toString()

ReflectionMethod::setAccessible
ReflectionObject
ReflectionMethod


ReflectionObject 类

(PHP 5, PHP 7)

简介

ReflectionObject 类报告了一个对象（object）的相关信息。

类摘要

ReflectionObject extends ReflectionClass implements Reflector {
/* 常量 */
const integer IS_IMPLICIT_ABSTRACT = 16 ;
const integer IS_EXPLICIT_ABSTRACT = 32 ;
const integer IS_FINAL = 64 ;
/* 属性 */
public $name ;
/* 方法 */
public __construct ( object $argument )
public static string export ( string $argument [, bool $return ] )
/* 继承的方法 */
public ReflectionClass::__construct ( mixed $argument )
public static string ReflectionClass::export ( mixed $argument [, bool $return = false ] )
public mixed ReflectionClass::getConstant ( string $name )
public array ReflectionClass::getConstants ( void )
public ReflectionMethod ReflectionClass::getConstructor ( void )
public array ReflectionClass::getDefaultProperties ( void )
public string ReflectionClass::getDocComment ( void )
public int ReflectionClass::getEndLine ( void )
public ReflectionExtension ReflectionClass::getExtension ( void )
public string ReflectionClass::getExtensionName ( void )
public string ReflectionClass::getFileName ( void )
public array ReflectionClass::getInterfaceNames ( void )
public array ReflectionClass::getInterfaces ( void )
public ReflectionMethod ReflectionClass::getMethod ( string $name )
public array ReflectionClass::getMethods ([ int $filter ] )
public int ReflectionClass::getModifiers ( void )
public string ReflectionClass::getName ( void )
public string ReflectionClass::getNamespaceName ( void )
public object ReflectionClass::getParentClass ( void )
public array ReflectionClass::getProperties ([ int $filter ] )
public ReflectionProperty ReflectionClass::getProperty ( string $name )
public string ReflectionClass::getShortName ( void )
public int ReflectionClass::getStartLine ( void )
public array ReflectionClass::getStaticProperties ( void )
public mixed ReflectionClass::getStaticPropertyValue ( string $name [, mixed &$def_value ] )
public array ReflectionClass::getTraitAliases ( void )
public array ReflectionClass::getTraitNames ( void )
public array ReflectionClass::getTraits ( void )
public bool ReflectionClass::hasConstant ( string $name )
public bool ReflectionClass::hasMethod ( string $name )
public bool ReflectionClass::hasProperty ( string $name )
public bool ReflectionClass::implementsInterface ( string $interface )
public bool ReflectionClass::inNamespace ( void )
public bool ReflectionClass::isAbstract ( void )
public bool ReflectionClass::isAnonymous ( void )
public bool ReflectionClass::isCloneable ( void )
public bool ReflectionClass::isFinal ( void )
public bool ReflectionClass::isInstance ( object $object )
public bool ReflectionClass::isInstantiable ( void )
public bool ReflectionClass::isInterface ( void )
public bool ReflectionClass::isInternal ( void )
public bool ReflectionClass::isIterateable ( void )
public bool ReflectionClass::isSubclassOf ( string $class )
public bool ReflectionClass::isTrait ( void )
public bool ReflectionClass::isUserDefined ( void )
public object ReflectionClass::newInstance ( mixed $args [, mixed $... ] )
public object ReflectionClass::newInstanceArgs ([ array $args ] )
public object ReflectionClass::newInstanceWithoutConstructor ( void )
public void ReflectionClass::setStaticPropertyValue ( string $name , string $value )
public string ReflectionClass::__toString ( void )
}

属性

name

对象的类名。只读，在尝试赋值的时候会抛出 ReflectionException。

Table of Contents

  • ReflectionObject::__construct — Constructs a ReflectionObject
  • ReflectionObject::export — Export
ReflectionMethod::__toString
ReflectionObject::__construct
反射


Constructs a ReflectionObject

ReflectionObject
ReflectionObject::export
ReflectionObject
PHP Manual

ReflectionObject::__construct

(PHP 5, PHP 7)

ReflectionObject::__construct — Constructs a ReflectionObject

说明

public ReflectionObject::__construct ( object $argument )

Constructs a ReflectionObject.

Warning

本函数还未编写文档，仅有参数列表。

参数

argument

An object instance.

返回值

没有返回值。

参见

  • ReflectionObject::export() - Export
  • Constructors

ReflectionObject
ReflectionObject::export
ReflectionObject


Export

ReflectionObject::__construct
ReflectionParameter
ReflectionObject
PHP Manual

ReflectionObject::export

(PHP 5, PHP 7)

ReflectionObject::export — Export

说明

public static string ReflectionObject::export ( string $argument [, bool $return ] )

Exports a reflection.

Warning

本函数还未编写文档，仅有参数列表。

参数

argument

导出的反射。

return

设为 TRUE 时返回导出结果，设为 FALSE（默认值）则忽略返回。

返回值

如果参数 return 设为 TRUE，导出结果将作为 string 返回，否则返回 NULL。

参见

  • ReflectionObject::__construct() - Constructs a ReflectionObject

ReflectionObject::__construct
ReflectionParameter
ReflectionObject


ReflectionParameter 类

(PHP 5, PHP 7)

简介

ReflectionParameter 取回了函数或方法参数的相关信息。

要自行检查函数的参数，首先创建一个 ReflectionFunction 或 ReflectionMethod 的实例，然后使用它们的 ReflectionFunctionAbstract::getParameters() 方法来获取参数的数组。

类摘要

ReflectionParameter implements Reflector {
/* 属性 */
public $name ;
/* 方法 */
public bool allowsNull ( void )
public bool canBePassedByValue ( void )
final private void __clone ( void )
public __construct ( string $function , string $parameter )
public static string export ( string $function , string $parameter [, bool $return ] )
public ReflectionClass getClass ( void )
public ReflectionClass getDeclaringClass ( void )
public ReflectionFunctionAbstract getDeclaringFunction ( void )
public mixed getDefaultValue ( void )
public string getDefaultValueConstantName ( void )
public string getName ( void )
public int getPosition ( void )
public ReflectionType getType ( void )
public bool hasType ( void )
public bool isArray ( void )
public bool isCallable ( void )
public bool isDefaultValueAvailable ( void )
public bool isDefaultValueConstant ( void )
public bool isOptional ( void )
public bool isPassedByReference ( void )
public bool isVariadic ( void )
public string __toString ( void )
}

属性

name

参数的名称。只读，在尝试赋值的时候会抛出 ReflectionException。

Table of Contents

  • ReflectionParameter::allowsNull — Checks if null is allowed
  • ReflectionParameter::canBePassedByValue — Returns whether this parameter can be passed by value
  • ReflectionParameter::__clone — Clone
  • ReflectionParameter::__construct — Construct
  • ReflectionParameter::export — Exports
  • ReflectionParameter::getClass — Get the type hinted class
  • ReflectionParameter::getDeclaringClass — Gets declaring class
  • ReflectionParameter::getDeclaringFunction — Gets declaring function
  • ReflectionParameter::getDefaultValue — Gets default parameter value
  • ReflectionParameter::getDefaultValueConstantName — Returns the default value's constant name if default value is constant or null
  • ReflectionParameter::getName — Gets parameter name
  • ReflectionParameter::getPosition — Gets parameter position
  • ReflectionParameter::getType — Gets a parameter's type
  • ReflectionParameter::hasType — Checks if parameter has a type
  • ReflectionParameter::isArray — Checks if parameter expects an array
  • ReflectionParameter::isCallable — Returns whether parameter MUST be callable
  • ReflectionParameter::isDefaultValueAvailable — Checks if a default value is available
  • ReflectionParameter::isDefaultValueConstant — Returns whether the default value of this parameter is constant
  • ReflectionParameter::isOptional — Checks if optional
  • ReflectionParameter::isPassedByReference — Checks if passed by reference
  • ReflectionParameter::isVariadic — Checks if the parameter is variadic
  • ReflectionParameter::__toString — To string
ReflectionObject::export
ReflectionParameter::allowsNull
反射


Checks if null is allowed

ReflectionParameter
ReflectionParameter::canBePassedByValue
ReflectionParameter
PHP Manual

ReflectionParameter::allowsNull

(PHP 5, PHP 7)

ReflectionParameter::allowsNull — Checks if null is allowed

说明

public bool ReflectionParameter::allowsNull ( void )

Checks whether the parameter allows NULL.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

TRUE if NULL is allowed, otherwise FALSE

参见

  • ReflectionParameter::isOptional() - Checks if optional

ReflectionParameter
ReflectionParameter::canBePassedByValue
ReflectionParameter


Returns whether this parameter can be passed by value

ReflectionParameter::allowsNull
ReflectionParameter::__clone
ReflectionParameter
PHP Manual

ReflectionParameter::canBePassedByValue

(PHP >= 5.4.0)

ReflectionParameter::canBePassedByValue — Returns whether this parameter can be passed by value

说明

public bool ReflectionParameter::canBePassedByValue ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Returns TRUE if the parameter can be passed by value, FALSE otherwise. Returns NULL in case of an error.

ReflectionParameter::allowsNull
ReflectionParameter::__clone
ReflectionParameter


Clone

ReflectionParameter::canBePassedByValue
ReflectionParameter::__construct
ReflectionParameter
PHP Manual

ReflectionParameter::__clone

(PHP 5, PHP 7)

ReflectionParameter::__clone — Clone

说明

final private void ReflectionParameter::__clone ( void )

Clones.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

参见

  • ReflectionParameter::toString()
  • Object cloning

ReflectionParameter::canBePassedByValue
ReflectionParameter::__construct
ReflectionParameter


Construct

ReflectionParameter::__clone
ReflectionParameter::export
ReflectionParameter
PHP Manual

ReflectionParameter::__construct

(PHP 5, PHP 7)

ReflectionParameter::__construct — Construct

说明

public ReflectionParameter::__construct ( string $function , string $parameter )

Constructs a ReflectionParameter class.

Warning

本函数还未编写文档，仅有参数列表。

参数

function

The function to reflect parameters from.

parameter

The parameter.

返回值

没有返回值。

范例

Example #1 Using the ReflectionParameter class

<?php
function foo($a, $b, $c) { }
function bar(Exception $a, &$b, $c) { }
function baz(ReflectionFunction $a, $b = 1, $c = null) { }
function abc() { }

$reflect = new ReflectionFunction('foo');

echo $reflect;

foreach ($reflect->getParameters() as $i => $param) {
    printf(
        "-- Parameter #%d: %s {\n".
        "   Class: %s\n".
        "   Allows NULL: %s\n".
        "   Passed to by reference: %s\n".
        "   Is optional?: %s\n".
        "}\n",
        $i, // $param->getPosition() can be used from PHP 5.2.3
        $param->getName(),
        var_export($param->getClass(), 1),
        var_export($param->allowsNull(), 1),
        var_export($param->isPassedByReference(), 1),
        $param->isOptional() ? 'yes' : 'no'
    );
}
?>

以上例程的输出类似于：

Function [ <user> function foo ] {
  @@ /Users/philip/cvs/phpdoc/a 2 - 2

  - Parameters [3] {
    Parameter #0 [ <required> $a ]
    Parameter #1 [ <required> $b ]
    Parameter #2 [ <required> $c ]
  }
}
-- Parameter #0: a {
   Class: NULL
   Allows NULL: true
   Passed to by reference: false
   Is optional?: no
}
-- Parameter #1: b {
   Class: NULL
   Allows NULL: true
   Passed to by reference: false
   Is optional?: no
}
-- Parameter #2: c {
   Class: NULL
   Allows NULL: true
   Passed to by reference: false
   Is optional?: no
}

参见

  • ReflectionFunction::__construct() - Constructs a ReflectionFunction object
  • ReflectionMethod::__construct() - ReflectionMethod 的构造函数
  • Constructors

ReflectionParameter::__clone
ReflectionParameter::export
ReflectionParameter


Exports

ReflectionParameter::__construct
ReflectionParameter::getClass
ReflectionParameter
PHP Manual

ReflectionParameter::export

(PHP 5, PHP 7)

ReflectionParameter::export — Exports

说明

public static string ReflectionParameter::export ( string $function , string $parameter [, bool $return ] )

Exports.

Warning

本函数还未编写文档，仅有参数列表。

参数

function

The function name.

parameter

The parameter name.

return

设为 TRUE 时返回导出结果，设为 FALSE（默认值）则忽略返回。

返回值

The exported reflection.

参见

  • ReflectionParameter::toString()

ReflectionParameter::__construct
ReflectionParameter::getClass
ReflectionParameter


Get the type hinted class

ReflectionParameter::export
ReflectionParameter::getDeclaringClass
ReflectionParameter
PHP Manual

ReflectionParameter::getClass

(PHP 5, PHP 7)

ReflectionParameter::getClass — Get the type hinted class

说明

public ReflectionClass ReflectionParameter::getClass ( void )

Gets the class type hinted for the parameter as a ReflectionClass object.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

A ReflectionClass object.

范例

Example #1 Using the ReflectionParameter class

<?php
function foo(Exception $a) { }

$functionReflection = new ReflectionFunction('foo');
$parameters = $functionReflection->getParameters();
$aParameter = $parameters[0];

echo $aParameter->getClass()->name;
?>

以上例程会输出：

Exception

参见

  • ReflectionParameter::getDeclaringClass() - Gets declaring class

ReflectionParameter::export
ReflectionParameter::getDeclaringClass
ReflectionParameter


Gets declaring class

ReflectionParameter::getClass
ReflectionParameter::getDeclaringFunction
ReflectionParameter
PHP Manual

ReflectionParameter::getDeclaringClass

(PHP 5, PHP 7)

ReflectionParameter::getDeclaringClass — Gets declaring class

说明

public ReflectionClass ReflectionParameter::getDeclaringClass ( void )

Gets the declaring class.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

A ReflectionClass object.

范例

Example #1 Getting the class that declared the method

<?php
class Foo
{
    public function bar(\DateTime $datetime)
    {
    }
}

class Baz extends Foo
{
}

$param = new \ReflectionParameter(['Baz', 'bar'], 0);

var_dump($param->getDeclaringClass());

以上例程会输出：

object(ReflectionClass)#2 (1) {
  ["name"]=>
  string(3) "Foo"
}

参见

  • ReflectionParameter::getClass() - Get the type hinted class

ReflectionParameter::getClass
ReflectionParameter::getDeclaringFunction
ReflectionParameter


Gets declaring function

ReflectionParameter::getDeclaringClass
ReflectionParameter::getDefaultValue
ReflectionParameter
PHP Manual

ReflectionParameter::getDeclaringFunction

(PHP 5 >= 5.2.3, PHP 7)

ReflectionParameter::getDeclaringFunction — Gets declaring function

说明

public ReflectionFunctionAbstract ReflectionParameter::getDeclaringFunction ( void )

Gets the declaring function.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

A ReflectionFunction object.

参见

  • ReflectionParameter::getDeclaringClass() - Gets declaring class

ReflectionParameter::getDeclaringClass
ReflectionParameter::getDefaultValue
ReflectionParameter


Gets default parameter value

ReflectionParameter::getDeclaringFunction
ReflectionParameter::getDefaultValueConstantName
ReflectionParameter
PHP Manual

ReflectionParameter::getDefaultValue

(PHP 5 >= 5.0.3, PHP 7)

ReflectionParameter::getDefaultValue — Gets default parameter value

说明

public mixed ReflectionParameter::getDefaultValue ( void )

Gets the default value of the parameter for a user-defined function or method. If the parameter is not optional a ReflectionException will be thrown.

参数

此函数没有参数。

返回值

The parameters default value.

范例

Example #1 Getting

<?php
function foo($test, $bar = 'baz')
{
    echo $test . $bar;
}

$function = new ReflectionFunction('foo');

foreach ($function->getParameters() as $param) {
    echo 'Name: ' . $param->getName() . PHP_EOL;
    if ($param->isOptional()) {
        echo 'Default value: ' . $param->getDefaultValue() . PHP_EOL;
    }
    echo PHP_EOL;
}
?>

以上例程会输出：

Name: test

Name: bar
Default value: baz

注释

Note:

Due to implementation details, it is not possible to get the default value of built-in functions or methods of built-in classes. Trying to do this will result a ReflectionException being thrown.

参见

  • ReflectionParameter::isOptional() - Checks if optional
  • ReflectionParameter::isPassedByReference() - Checks if passed by reference

ReflectionParameter::getDeclaringFunction
ReflectionParameter::getDefaultValueConstantName
ReflectionParameter


Returns the default value's constant name if default value is constant or null

ReflectionParameter::getDefaultValue
ReflectionParameter::getName
ReflectionParameter
PHP Manual

ReflectionParameter::getDefaultValueConstantName

(PHP 5 >= 5.4.6, PHP 7)

ReflectionParameter::getDefaultValueConstantName — Returns the default value's constant name if default value is constant or null

说明

public string ReflectionParameter::getDefaultValueConstantName ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Returns string on success or NULL on failure.

ReflectionParameter::getDefaultValue
ReflectionParameter::getName
ReflectionParameter


Gets parameter name

ReflectionParameter::getDefaultValueConstantName
ReflectionParameter::getPosition
ReflectionParameter
PHP Manual

ReflectionParameter::getName

(PHP 5, PHP 7)

ReflectionParameter::getName — Gets parameter name

说明

public string ReflectionParameter::getName ( void )

Gets the name of the parameter.

参数

此函数没有参数。

返回值

The name of the reflected parameter.

参见

  • ReflectionParameter::getValue()

ReflectionParameter::getDefaultValueConstantName
ReflectionParameter::getPosition
ReflectionParameter


Gets parameter position

ReflectionParameter::getName
ReflectionParameter::getType
ReflectionParameter
PHP Manual

ReflectionParameter::getPosition

(PHP 5 >= 5.2.3, PHP 7)

ReflectionParameter::getPosition — Gets parameter position

说明

public int ReflectionParameter::getPosition ( void )

Gets the position of the parameter.

参数

此函数没有参数。

返回值

The position of the parameter, left to right, starting at position #0.

参见

  • ReflectionParameter::getName() - Gets parameter name

ReflectionParameter::getName
ReflectionParameter::getType
ReflectionParameter


Gets a parameter's type

ReflectionParameter::getPosition
ReflectionParameter::hasType
ReflectionParameter
PHP Manual

ReflectionParameter::getType

(PHP 7)

ReflectionParameter::getType — Gets a parameter's type

说明

public ReflectionType ReflectionParameter::getType ( void )

Gets the associated type of a parameter.

参数

此函数没有参数。

返回值

Returns a ReflectionType object if a parameter type is specified, NULL otherwise.

范例

Example #1 ReflectionParameter::getType() example

<?php
function someFunction(int $param, $param2) {}

$reflectionFunc = new ReflectionFunction('someFunction');
$reflectionParams = $reflectionFunc->getParameters();
$reflectionType1 = $reflectionParams[0]->getType();
$reflectionType2 = $reflectionParams[1]->getType();

echo $reflectionType1;
var_dump($reflectionType2);

以上例程的输出类似于：

int
null

参见

  • ReflectionParameter::hasType() - Checks if parameter has a type
  • ReflectionType::__toString()

ReflectionParameter::getPosition
ReflectionParameter::hasType
ReflectionParameter


Checks if parameter has a type

ReflectionParameter::getType
ReflectionParameter::isArray
ReflectionParameter
PHP Manual

ReflectionParameter::hasType

(PHP 7)

ReflectionParameter::hasType — Checks if parameter has a type

说明

public bool ReflectionParameter::hasType ( void )

Checks if the parameter has a type associated with it.

参数

此函数没有参数。

返回值

TRUE if a type is specified, FALSE otherwise.

范例

Example #1 ReflectionParameter::hasType() example

<?php
function someFunction(string $param, $param2 = null) {}

$reflectionFunc = new ReflectionFunction('someFunction');
$reflectionParams = $reflectionFunc->getParameters();

var_dump($reflectionParams[0]->hasType());
var_dump($reflectionParams[1]->hasType());

以上例程的输出类似于：

bool(true)
bool(false)

参见

  • ReflectionParameter::getType() - Gets a parameter's type

ReflectionParameter::getType
ReflectionParameter::isArray
ReflectionParameter


Checks if parameter expects an array

ReflectionParameter::hasType
ReflectionParameter::isCallable
ReflectionParameter
PHP Manual

ReflectionParameter::isArray

(PHP 5 >= 5.1.0, PHP 7)

ReflectionParameter::isArray — Checks if parameter expects an array

说明

public bool ReflectionParameter::isArray ( void )

Checks if the parameter expects an array.

参数

此函数没有参数。

返回值

TRUE if an array is expected, FALSE otherwise.

参见

  • ReflectionParameter::isOptional() - Checks if optional

ReflectionParameter::hasType
ReflectionParameter::isCallable
ReflectionParameter


Returns whether parameter MUST be callable

ReflectionParameter::isArray
ReflectionParameter::isDefaultValueAvailable
ReflectionParameter
PHP Manual

ReflectionParameter::isCallable

(PHP 5 >= 5.4.0, PHP 7)

ReflectionParameter::isCallable — Returns whether parameter MUST be callable

说明

public bool ReflectionParameter::isCallable ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Returns TRUE if the parameter is callable, FALSE if it is not or NULL on failure.

ReflectionParameter::isArray
ReflectionParameter::isDefaultValueAvailable
ReflectionParameter


Checks if a default value is available

ReflectionParameter::isCallable
ReflectionParameter::isDefaultValueConstant
ReflectionParameter
PHP Manual

ReflectionParameter::isDefaultValueAvailable

(PHP 5 >= 5.0.3, PHP 7)

ReflectionParameter::isDefaultValueAvailable — Checks if a default value is available

说明

public bool ReflectionParameter::isDefaultValueAvailable ( void )

Checks if a default value for the parameter is available.

参数

此函数没有参数。

返回值

TRUE if a default value is available, otherwise FALSE

参见

  • ReflectionParameter::getDefaultValue() - Gets default parameter value
  • ReflectionParameter::getName() - Gets parameter name

ReflectionParameter::isCallable
ReflectionParameter::isDefaultValueConstant
ReflectionParameter


Returns whether the default value of this parameter is constant

ReflectionParameter::isDefaultValueAvailable
ReflectionParameter::isOptional
ReflectionParameter
PHP Manual

ReflectionParameter::isDefaultValueConstant

(PHP 5 >= 5.4.6, PHP 7)

ReflectionParameter::isDefaultValueConstant — Returns whether the default value of this parameter is constant

说明

public bool ReflectionParameter::isDefaultValueConstant ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

Returns TRUE if the default value is constant, FALSE if it is not or NULL on failure.

ReflectionParameter::isDefaultValueAvailable
ReflectionParameter::isOptional
ReflectionParameter


Checks if optional

ReflectionParameter::isDefaultValueConstant
ReflectionParameter::isPassedByReference
ReflectionParameter
PHP Manual

ReflectionParameter::isOptional

(PHP 5 >= 5.0.3, PHP 7)

ReflectionParameter::isOptional — Checks if optional

说明

public bool ReflectionParameter::isOptional ( void )

Checks if the parameter is optional.

参数

此函数没有参数。

返回值

TRUE if the parameter is optional, otherwise FALSE

参见

  • ReflectionParameter::getName() - Gets parameter name

ReflectionParameter::isDefaultValueConstant
ReflectionParameter::isPassedByReference
ReflectionParameter


Checks if passed by reference

ReflectionParameter::isOptional
ReflectionParameter::isVariadic
ReflectionParameter
PHP Manual

ReflectionParameter::isPassedByReference

(PHP 5, PHP 7)

ReflectionParameter::isPassedByReference — Checks if passed by reference

说明

public bool ReflectionParameter::isPassedByReference ( void )

Checks if the parameter is passed in by reference.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

TRUE if the parameter is passed in by reference, otherwise FALSE

参见

  • ReflectionParameter::getName() - Gets parameter name

ReflectionParameter::isOptional
ReflectionParameter::isVariadic
ReflectionParameter


Checks if the parameter is variadic

ReflectionParameter::isPassedByReference
ReflectionParameter::__toString
ReflectionParameter
PHP Manual

ReflectionParameter::isVariadic

(PHP 5 >= 5.6.0, PHP 7)

ReflectionParameter::isVariadic — Checks if the parameter is variadic

说明

public bool ReflectionParameter::isVariadic ( void )

Checks if the parameter was declared as a variadic parameter.

参数

此函数没有参数。

返回值

Returns TRUE if the parameter is variadic, otherwise FALSE.

ReflectionParameter::isPassedByReference
ReflectionParameter::__toString
ReflectionParameter


To string

ReflectionParameter::isVariadic
ReflectionProperty
ReflectionParameter
PHP Manual

ReflectionParameter::__toString

(PHP 5, PHP 7)

ReflectionParameter::__toString — To string

说明

public string ReflectionParameter::__toString ( void )

To string.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

参见

  • ReflectionParameter::export() - Exports
  • __toString()

ReflectionParameter::isVariadic
ReflectionProperty
ReflectionParameter


ReflectionProperty 类

(PHP 5, PHP 7)

简介

ReflectionProperty 类报告了类的属性的相关信息。

类摘要

ReflectionProperty implements Reflector {
/* 常量 */
const integer IS_STATIC = 1 ;
const integer IS_PUBLIC = 256 ;
const integer IS_PROTECTED = 512 ;
const integer IS_PRIVATE = 1024 ;
/* 属性 */
public $name ;
public $class ;
/* 方法 */
final private void __clone ( void )
public __construct ( mixed $class , string $name )
public static string export ( mixed $class , string $name [, bool $return ] )
public ReflectionClass getDeclaringClass ( void )
public string getDocComment ( void )
public int getModifiers ( void )
public string getName ( void )
public mixed getValue ([ object $object ] )
public bool isDefault ( void )
public bool isPrivate ( void )
public bool isProtected ( void )
public bool isPublic ( void )
public bool isStatic ( void )
public void setAccessible ( bool $accessible )
public void setValue ( object $object , mixed $value )
public string __toString ( void )
}

属性

name

属性的名称。只读，在尝试赋值的时候抛出 ReflectionException。

class

定义的属性所在的类。只读，在尝试赋值的时候抛出 ReflectionException。

预定义常量

ReflectionProperty 修饰符

ReflectionProperty::IS_STATIC

指示了 static 的属性。

ReflectionProperty::IS_PUBLIC

指示了 public 的属性。

ReflectionProperty::IS_PROTECTED

指示了 protected 的属性。

ReflectionProperty::IS_PRIVATE

指示了 private 的属性。

Table of Contents

  • ReflectionProperty::__clone — Clone
  • ReflectionProperty::__construct — Construct a ReflectionProperty object
  • ReflectionProperty::export — Export
  • ReflectionProperty::getDeclaringClass — Gets declaring class
  • ReflectionProperty::getDocComment — Gets the property doc comment
  • ReflectionProperty::getModifiers — Gets modifiers
  • ReflectionProperty::getName — Gets property name
  • ReflectionProperty::getValue — Gets value
  • ReflectionProperty::isDefault — Checks if property is a default property
  • ReflectionProperty::isPrivate — Checks if property is private
  • ReflectionProperty::isProtected — Checks if property is protected
  • ReflectionProperty::isPublic — Checks if property is public
  • ReflectionProperty::isStatic — Checks if property is static
  • ReflectionProperty::setAccessible — Set property accessibility
  • ReflectionProperty::setValue — Set property value
  • ReflectionProperty::__toString — To string
ReflectionParameter::__toString
ReflectionProperty::__clone
反射


Clone

ReflectionProperty
ReflectionProperty::__construct
ReflectionProperty
PHP Manual

ReflectionProperty::__clone

(PHP 5, PHP 7)

ReflectionProperty::__clone — Clone

说明

final private void ReflectionProperty::__clone ( void )

Clones.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

参见

  • ReflectionProperty::export() - Export
  • Object cloning

ReflectionProperty
ReflectionProperty::__construct
ReflectionProperty


Construct a ReflectionProperty object

ReflectionProperty::__clone
ReflectionProperty::export
ReflectionProperty
PHP Manual

ReflectionProperty::__construct

(PHP 5, PHP 7)

ReflectionProperty::__construct — Construct a ReflectionProperty object

说明

public ReflectionProperty::__construct ( mixed $class , string $name )

Warning

本函数还未编写文档，仅有参数列表。

参数

class

The class name, that contains the property.

name

The name of the property being reflected.

返回值

没有返回值。

错误／异常

Trying to get or set private or protected class property's values will result in an exception being thrown.

范例

Example #1 ReflectionProperty::__construct() example

<?php
class Str
{
    public $length  = 5;
}

// Create an instance of the ReflectionProperty class
$prop = new ReflectionProperty('Str', 'length');

// Print out basic information
printf(
    "===> The%s%s%s%s property '%s' (which was %s)\n" .
    "     having the modifiers %s\n",
        $prop->isPublic() ? ' public' : '',
        $prop->isPrivate() ? ' private' : '',
        $prop->isProtected() ? ' protected' : '',
        $prop->isStatic() ? ' static' : '',
        $prop->getName(),
        $prop->isDefault() ? 'declared at compile-time' : 'created at run-time',
        var_export(Reflection::getModifierNames($prop->getModifiers()), 1)
);

// Create an instance of Str
$obj= new Str();

// Get current value
printf("---> Value is: ");
var_dump($prop->getValue($obj));

// Change value
$prop->setValue($obj, 10);
printf("---> Setting value to 10, new value is: ");
var_dump($prop->getValue($obj));

// Dump object
var_dump($obj);
?>

以上例程的输出类似于：

===> The public property 'length' (which was declared at compile-time)
     having the modifiers array (
  0 => 'public',
)
---> Value is: int(5)
---> Setting value to 10, new value is: int(10)
object(Str)#2 (1) {
  ["length"]=>
  int(10)
}

Example #2 Getting value from private and protected properties using ReflectionProperty class

<?php

class Foo {
    public $x = 1;
    protected $y = 2;
    private $z = 3;
}

$obj = new Foo;

$prop = new ReflectionProperty('Foo', 'y');
$prop->setAccessible(true); /* As of PHP 5.3.0 */
var_dump($prop->getValue($obj)); // int(2)

$prop = new ReflectionProperty('Foo', 'z');
$prop->setAccessible(true); /* As of PHP 5.3.0 */
var_dump($prop->getValue($obj)); // int(2)

?>

以上例程的输出类似于：

int(2)
int(3)

参见

  • ReflectionProperty::getName() - Gets property name
  • Constructors

ReflectionProperty::__clone
ReflectionProperty::export
ReflectionProperty


Export

ReflectionProperty::__construct
ReflectionProperty::getDeclaringClass
ReflectionProperty
PHP Manual

ReflectionProperty::export

(PHP 5, PHP 7)

ReflectionProperty::export — Export

说明

public static string ReflectionProperty::export ( mixed $class , string $name [, bool $return ] )

Exports a reflection.

Warning

本函数还未编写文档，仅有参数列表。

参数

argument

导出的反射。

name

The property name.

return

设为 TRUE 时返回导出结果，设为 FALSE（默认值）则忽略返回。

返回值

参见

  • ReflectionProperty::toString()

ReflectionProperty::__construct
ReflectionProperty::getDeclaringClass
ReflectionProperty


Gets declaring class

ReflectionProperty::export
ReflectionProperty::getDocComment
ReflectionProperty
PHP Manual

ReflectionProperty::getDeclaringClass

(PHP 5, PHP 7)

ReflectionProperty::getDeclaringClass — Gets declaring class

说明

public ReflectionClass ReflectionProperty::getDeclaringClass ( void )

Gets the declaring class.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

A ReflectionClass object.

参见

  • ReflectionProperty::getName() - Gets property name

ReflectionProperty::export
ReflectionProperty::getDocComment
ReflectionProperty


Gets the property doc comment

ReflectionProperty::getDeclaringClass
ReflectionProperty::getModifiers
ReflectionProperty
PHP Manual

ReflectionProperty::getDocComment

(PHP 5 >= 5.1.0, PHP 7)

ReflectionProperty::getDocComment — Gets the property doc comment

说明

public string ReflectionProperty::getDocComment ( void )

Gets the doc comment for a property.

参数

此函数没有参数。

返回值

The property doc comment.

范例

Example #1 ReflectionProperty::getDocComment() example

<?php
class Str
{
    /**
     * @var int  The length of the string
     */
    public $length = 5;
}

$prop = new ReflectionProperty('Str', 'length');

var_dump($prop->getDocComment());

?>

以上例程的输出类似于：

string(53) "/**
     * @var int  The length of the string
     */"

参见

  • ReflectionProperty::getModifiers() - Gets modifiers
  • ReflectionProperty::getName() - Gets property name
  • ReflectionProperty::getValue() - Gets value

ReflectionProperty::getDeclaringClass
ReflectionProperty::getModifiers
ReflectionProperty


Gets modifiers

ReflectionProperty::getDocComment
ReflectionProperty::getName
ReflectionProperty
PHP Manual

ReflectionProperty::getModifiers

(PHP 5, PHP 7)

ReflectionProperty::getModifiers — Gets modifiers

说明

public int ReflectionProperty::getModifiers ( void )

Gets the modifiers.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

A numeric representation of the modifiers.

参见

  • ReflectionProperty::isPrivate() - Checks if property is private
  • Reflection::getModifierNames() - 获取修饰符的名称

ReflectionProperty::getDocComment
ReflectionProperty::getName
ReflectionProperty


Gets property name

ReflectionProperty::getModifiers
ReflectionProperty::getValue
ReflectionProperty
PHP Manual

ReflectionProperty::getName

(PHP 5, PHP 7)

ReflectionProperty::getName — Gets property name

说明

public string ReflectionProperty::getName ( void )

Gets the properties name.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

The name of the reflected property.

参见

  • ReflectionProperty::getValue() - Gets value

ReflectionProperty::getModifiers
ReflectionProperty::getValue
ReflectionProperty


Gets value

ReflectionProperty::getName
ReflectionProperty::isDefault
ReflectionProperty
PHP Manual

ReflectionProperty::getValue

(PHP 5, PHP 7)

ReflectionProperty::getValue — Gets value

说明

public mixed ReflectionProperty::getValue ([ object $object ] )

Gets the property's value.

参数

object

If the property is non-static an object must be provided to fetch the property from. If you want to fetch the default property without providing an object use ReflectionClass::getDefaultProperties() instead.

返回值

The current value of the property.

错误／异常

Throws a ReflectionException if the property is inaccessible. You can make a protected or private property accessible using ReflectionProperty::setAccessible().

范例

Example #1 ReflectionProperty::getValue() example

<?php
class Foo {
    public static $staticProperty = 'foobar';

    public $property = 'barfoo';
    protected $privateProperty = 'foofoo';
}

$reflectionClass = new ReflectionClass('Foo');

var_dump($reflectionClass->getProperty('staticProperty')->getValue());
var_dump($reflectionClass->getProperty('property')->getValue(new Foo));

$reflectionProperty = $reflectionClass->getProperty('privateProperty');
$reflectionProperty->setAccessible(true);
var_dump($reflectionProperty->getValue(new Foo));
?>

以上例程会输出：

string(6) "foobar"
string(6) "barfoo"
string(6) "foofoo"

参见

  • ReflectionProperty::setValue() - Set property value
  • ReflectionProperty::setAccessible() - Set property accessibility
  • ReflectionClass::getDefaultProperties() - 获取默认属性
  • ReflectionClass::getStaticPropertyValue() - 获取静态（static）属性的值

ReflectionProperty::getName
ReflectionProperty::isDefault
ReflectionProperty


Checks if property is a default property

ReflectionProperty::getValue
ReflectionProperty::isPrivate
ReflectionProperty
PHP Manual

ReflectionProperty::isDefault

(PHP 5, PHP 7)

ReflectionProperty::isDefault — Checks if property is a default property

说明

public bool ReflectionProperty::isDefault ( void )

Checks whether the property was declared at compile-time, or whether the property was dynamically declared at run-time.

参数

此函数没有参数。

返回值

TRUE if the property was declared at compile-time, or FALSE if it was created at run-time.

范例

Example #1 ReflectionClass::isDefault() example

<?php
class Foo {
    public $bar;
}

$o = new Foo();
$o->bar = 42;
$o->baz = 42;

$ro = new ReflectionObject($o);
var_dump($ro->getProperty('bar')->isDefault());
var_dump($ro->getProperty('baz')->isDefault());
?>

以上例程会输出：

bool(true)
bool(false)

参见

  • ReflectionProperty::getValue() - Gets value

ReflectionProperty::getValue
ReflectionProperty::isPrivate
ReflectionProperty


Checks if property is private

ReflectionProperty::isDefault
ReflectionProperty::isProtected
ReflectionProperty
PHP Manual

ReflectionProperty::isPrivate

(PHP 5, PHP 7)

ReflectionProperty::isPrivate — Checks if property is private

说明

public bool ReflectionProperty::isPrivate ( void )

Checks whether the property is private.

参数

此函数没有参数。

返回值

TRUE if the property is private, FALSE otherwise.

参见

  • ReflectionProperty::isPublic() - Checks if property is public
  • ReflectionProperty::isProtected() - Checks if property is protected
  • ReflectionProperty::isStatic() - Checks if property is static

ReflectionProperty::isDefault
ReflectionProperty::isProtected
ReflectionProperty


Checks if property is protected

ReflectionProperty::isPrivate
ReflectionProperty::isPublic
ReflectionProperty
PHP Manual

ReflectionProperty::isProtected

(PHP 5, PHP 7)

ReflectionProperty::isProtected — Checks if property is protected

说明

public bool ReflectionProperty::isProtected ( void )

Checks whether the property is protected.

参数

此函数没有参数。

返回值

TRUE if the property is protected, FALSE otherwise.

参见

  • ReflectionProperty::isPublic() - Checks if property is public
  • ReflectionProperty::isPrivate() - Checks if property is private
  • ReflectionProperty::isStatic() - Checks if property is static

ReflectionProperty::isPrivate
ReflectionProperty::isPublic
ReflectionProperty


Checks if property is public

ReflectionProperty::isProtected
ReflectionProperty::isStatic
ReflectionProperty
PHP Manual

ReflectionProperty::isPublic

(PHP 5, PHP 7)

ReflectionProperty::isPublic — Checks if property is public

说明

public bool ReflectionProperty::isPublic ( void )

Checks whether the property is public.

参数

此函数没有参数。

返回值

TRUE if the property is public, FALSE otherwise.

参见

  • ReflectionProperty::isProtected() - Checks if property is protected
  • ReflectionProperty::isPrivate() - Checks if property is private
  • ReflectionProperty::isStatic() - Checks if property is static

ReflectionProperty::isProtected
ReflectionProperty::isStatic
ReflectionProperty


Checks if property is static

ReflectionProperty::isPublic
ReflectionProperty::setAccessible
ReflectionProperty
PHP Manual

ReflectionProperty::isStatic

(PHP 5, PHP 7)

ReflectionProperty::isStatic — Checks if property is static

说明

public bool ReflectionProperty::isStatic ( void )

Checks whether the property is static.

参数

此函数没有参数。

返回值

TRUE if the property is static, FALSE otherwise.

参见

  • ReflectionProperty::isPublic() - Checks if property is public
  • ReflectionProperty::isProtected() - Checks if property is protected
  • ReflectionProperty::isPrivate() - Checks if property is private

ReflectionProperty::isPublic
ReflectionProperty::setAccessible
ReflectionProperty


Set property accessibility

ReflectionProperty::isStatic
ReflectionProperty::setValue
ReflectionProperty
PHP Manual

ReflectionProperty::setAccessible

(PHP 5 >= 5.3.0, PHP 7)

ReflectionProperty::setAccessible — Set property accessibility

说明

public void ReflectionProperty::setAccessible ( bool $accessible )

Sets a property to be accessible. For example, it may allow protected and private properties to be accessed.

参数

accessible

TRUE to allow accessibility, or FALSE.

返回值

没有返回值。

参见

  • ReflectionProperty::isPrivate() - Checks if property is private
  • ReflectionProperty::isProtected() - Checks if property is protected

ReflectionProperty::isStatic
ReflectionProperty::setValue
ReflectionProperty


Set property value

ReflectionProperty::setAccessible
ReflectionProperty::__toString
ReflectionProperty
PHP Manual

ReflectionProperty::setValue

(PHP 5, PHP 7)

ReflectionProperty::setValue — Set property value

说明

public void ReflectionProperty::setValue ( object $object , mixed $value )
public void ReflectionProperty::setValue ( mixed $value )

Sets (changes) the property's value.

参数

object

If the property is non-static an object must be provided to change the property on. If the property is static this parameter is left out and only value needs to be provided.

value

The new value.

返回值

没有返回值。

错误／异常

Throws a ReflectionException if the property is inaccessible. You can make a protected or private property accessible using ReflectionProperty::setAccessible().

范例

Example #1 ReflectionProperty::setValue() example

<?php
class Foo {
    public static $staticProperty;

    public $property;
    protected $privateProperty;
}

$reflectionClass = new ReflectionClass('Foo');

$reflectionClass->getProperty('staticProperty')->setValue('foo');
var_dump(Foo::$staticProperty);

$foo = new Foo;

$reflectionClass->getProperty('property')->setValue($foo, 'bar');
var_dump($foo->property);

$reflectionProperty = $reflectionClass->getProperty('privateProperty');
$reflectionProperty->setAccessible(true);
$reflectionProperty->setValue($foo, 'foobar');
var_dump($reflectionProperty->getValue($foo));
?>

以上例程会输出：

string(3) "foo"
string(3) "bar"
string(6) "foobar"

参见

  • ReflectionProperty::getValue() - Gets value
  • ReflectionProperty::setAccessible() - Set property accessibility
  • ReflectionClass::setStaticPropertyValue() - 设置静态属性的值

ReflectionProperty::setAccessible
ReflectionProperty::__toString
ReflectionProperty


To string

ReflectionProperty::setValue
Reflector
ReflectionProperty
PHP Manual

ReflectionProperty::__toString

(PHP 5, PHP 7)

ReflectionProperty::__toString — To string

说明

public string ReflectionProperty::__toString ( void )

To string.

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

参见

  • __toString()

ReflectionProperty::setValue
Reflector
ReflectionProperty


Reflector 接口

(PHP 5, PHP 7)

简介

Reflector 是一个接口，被所有可导出的反射类所实现（implement）。

类摘要

Reflector {
/* 方法 */
public static string export ( void )
public string __toString ( void )
}

Table of Contents

  • Reflector::export — Exports
  • Reflector::__toString — 转化成字符串
ReflectionProperty::__toString
Reflector::export
反射


Exports

Reflector
Reflector::__toString
Reflector
PHP Manual

Reflector::export

(PHP 5, PHP 7)

Reflector::export — Exports

说明

public static string Reflector::export ( void )

输出。

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

参见

  • Reflection::__toString()

Reflector
Reflector::__toString
Reflector


转化成字符串

Reflector::export
ReflectionException
Reflector
PHP Manual

Reflector::__toString

(PHP 5, PHP 7)

Reflector::__toString — 转化成字符串

说明

public string Reflector::__toString ( void )

转化成字符串。

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

参见

  • ReflectionProperty::export() - Export
  • __toString()

Reflector::export
ReflectionException
Reflector


ReflectionException 类

(PHP 5, PHP 7)

简介

ReflectionException 类。

类摘要

ReflectionException extends Exception {
/* 属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
Reflector::__toString
Variable handling
反射


Variable handling

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Variable handling 函数
    • boolval — 获取变量的布尔值
    • debug_zval_dump — Dumps a string representation of an internal zend value to output
    • doubleval — floatval 的别名
    • empty — 检查一个变量是否为空
    • floatval — 获取变量的浮点值
    • get_defined_vars — 返回由所有已定义变量所组成的数组
    • get_resource_type — 返回资源（resource）类型
    • gettype — 获取变量的类型
    • import_request_variables — 将 GET／POST／Cookie 变量导入到全局作用域中
    • intval — 获取变量的整数值
    • is_array — 检测变量是否是数组
    • is_bool — 检测变量是否是布尔型
    • is_callable — 检测参数是否为合法的可调用结构
    • is_double — is_float 的别名
    • is_float — 检测变量是否是浮点型
    • is_int — 检测变量是否是整数
    • is_integer — is_int 的别名
    • is_long — is_int 的别名
    • is_null — 检测变量是否为 NULL
    • is_numeric — 检测变量是否为数字或数字字符串
    • is_object — 检测变量是否是一个对象
    • is_real — is_float 的别名
    • is_resource — 检测变量是否为资源类型
    • is_scalar — 检测变量是否是一个标量
    • is_string — 检测变量是否是字符串
    • isset — 检测变量是否设置
    • print_r — 打印关于变量的易于理解的信息。
    • serialize — 产生一个可存储的值的表示
    • settype — 设置变量的类型
    • strval — 获取变量的字符串值
    • unserialize — 从已存储的表示中创建 PHP 的值
    • unset — 释放给定的变量
    • var_dump — 打印变量的相关信息
    • var_export — 输出或返回一个变量的字符串表示
ReflectionException
简介
变量与类型相关扩展


简介

For information on how variables behave, see the Variables entry in the Language Reference section of the manual.

Variable handling
安装／配置
Variable handling


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Variable handling


运行时配置

这些函数的行为受 php.ini 中的设置影响。

变量配置选项
名字 | 默认 | 可修改范围 | 更新日志
unserialize_callback_func | NULL | PHP_INI_ALL | 自 PHP 4.2.0 起可用。
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

unserialize_callback_func string

如果解串行器发现有未定义类要被实例化，将会调用 unserialize() 回调函数（用该未定义类名作为参数）。如果指定函数不存在，或者此函数没有包含／实现该未定义类，则显示警告。所以仅在确实需要实现这样的回调函数时才设置该选项。

参见 unserialize() 和 Autoloading Objects.

安装
资源类型
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
Variable handling 函数
Variable handling


Variable handling 函数

Table of Contents

  • boolval — 获取变量的布尔值
  • debug_zval_dump — Dumps a string representation of an internal zend value to output
  • doubleval — floatval 的别名
  • empty — 检查一个变量是否为空
  • floatval — 获取变量的浮点值
  • get_defined_vars — 返回由所有已定义变量所组成的数组
  • get_resource_type — 返回资源（resource）类型
  • gettype — 获取变量的类型
  • import_request_variables — 将 GET／POST／Cookie 变量导入到全局作用域中
  • intval — 获取变量的整数值
  • is_array — 检测变量是否是数组
  • is_bool — 检测变量是否是布尔型
  • is_callable — 检测参数是否为合法的可调用结构
  • is_double — is_float 的别名
  • is_float — 检测变量是否是浮点型
  • is_int — 检测变量是否是整数
  • is_integer — is_int 的别名
  • is_long — is_int 的别名
  • is_null — 检测变量是否为 NULL
  • is_numeric — 检测变量是否为数字或数字字符串
  • is_object — 检测变量是否是一个对象
  • is_real — is_float 的别名
  • is_resource — 检测变量是否为资源类型
  • is_scalar — 检测变量是否是一个标量
  • is_string — 检测变量是否是字符串
  • isset — 检测变量是否设置
  • print_r — 打印关于变量的易于理解的信息。
  • serialize — 产生一个可存储的值的表示
  • settype — 设置变量的类型
  • strval — 获取变量的字符串值
  • unserialize — 从已存储的表示中创建 PHP 的值
  • unset — 释放给定的变量
  • var_dump — 打印变量的相关信息
  • var_export — 输出或返回一个变量的字符串表示
预定义常量
boolval
Variable handling


获取变量的布尔值

Variable handling 函数
debug_zval_dump
Variable handling 函数
PHP Manual

boolval

(PHP 5 >= 5.5.0, PHP 7)

boolval — 获取变量的布尔值

说明

boolean boolval ( mixed $var )

返回var变量的布尔值 .

参数

var

标量类型会被转化成布尔类型.

返回值

var变量的布尔值.

范例

Example #1 boolval() examples

<?php
echo '0:        '.(boolval(0) ? 'true' : 'false')."\n";
echo '42:       '.(boolval(42) ? 'true' : 'false')."\n";
echo '0.0:      '.(boolval(0.0) ? 'true' : 'false')."\n";
echo '4.2:      '.(boolval(4.2) ? 'true' : 'false')."\n";
echo '"":       '.(boolval("") ? 'true' : 'false')."\n";
echo '"string": '.(boolval("string") ? 'true' : 'false')."\n";
echo '"0":      '.(boolval("0") ? 'true' : 'false')."\n";
echo '"1":      '.(boolval("1") ? 'true' : 'false')."\n";
echo '[1, 2]:   '.(boolval([1, 2]) ? 'true' : 'false')."\n";
echo '[]:       '.(boolval([]) ? 'true' : 'false')."\n";
echo 'stdClass: '.(boolval(new stdClass) ? 'true' : 'false')."\n";
?>

以上例程会输出：

0:        false
42:       true
0.0:      false
4.2:      true
"":       false
"string": true
"0":      false
"1":      true
[1, 2]:   true
[]:       false
stdClass: true

参见

  • floatval() - 获取变量的浮点值
  • intval() - 获取变量的整数值
  • strval() - 获取变量的字符串值
  • settype() - 设置变量的类型
  • is_bool() - 检测变量是否是布尔型
  • Type juggling

Variable handling 函数
debug_zval_dump
Variable handling 函数


Dumps a string representation of an internal zend value to output

boolval
doubleval
Variable handling 函数
PHP Manual

debug_zval_dump

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

debug_zval_dump — Dumps a string representation of an internal zend value to output

说明

void debug_zval_dump ( mixed $variable [, mixed $... ] )

Dumps a string representation of an internal zend value to output.

参数

variable

The variable being evaluated.

返回值

没有返回值。

范例

Example #1 debug_zval_dump() example

<?php
$var1 = 'Hello World';
$var2 = '';

$var2 =& $var1;

debug_zval_dump(&$var1);
?>

以上例程会输出：

&string(11) "Hello World" refcount(3)

Note: Beware the refcount

The refcount value returned by this function is non-obvious in certain circumstances. For example, a developer might expect the above example to indicate a refcount of 2. The third reference is created when actually calling debug_zval_dump().

This behavior is further compounded when a variable is not passed to debug_zval_dump() by reference. To illustrate, consider a slightly modified version of the above example:

<?php
$var1 = 'Hello World';
$var2 = '';

$var2 =& $var1;

debug_zval_dump($var1); // not passed by reference, this time
?>

以上例程会输出：

string(11) "Hello World" refcount(1)

Why refcount(1)? Because a copy of $var1 is being made, when the function is called.

This function becomes even more confusing when a variable with a refcount of 1 is passed (by copy/value):

<?php
$var1 = 'Hello World';

debug_zval_dump($var1);
?>

以上例程会输出：

string(11) "Hello World" refcount(2)

A refcount of 2, here, is extremely non-obvious. Especially considering the above examples. So what's happening?

When a variable has a single reference (as did $var1 before it was used as an argument to debug_zval_dump()), PHP's engine optimizes the manner in which it is passed to a function. Internally, PHP treats $var1 like a reference (in that the refcount is increased for the scope of this function), with the caveat that if the passed reference happens to be written to, a copy is made, but only at the moment of writing. This is known as "copy on write."

So, if debug_zval_dump() happened to write to its sole parameter (and it doesn't), then a copy would be made. Until then, the parameter remains a reference, causing the refcount to be incremented to 2 for the scope of the function call.

参见

  • var_dump() - 打印变量的相关信息
  • debug_backtrace() - 产生一条回溯跟踪(backtrace)
  • References Explained
  • » References Explained (by Derick Rethans)

boolval
doubleval
Variable handling 函数


floatval 的别名

debug_zval_dump
empty
Variable handling 函数
PHP Manual

doubleval

(PHP 4, PHP 5, PHP 7)

doubleval — floatval() 的别名

描述

此函数是 floatval() 的别名。

Note:

此别名是函数改名之后的遗留问题。在 PHP 旧的版本中由于还没有 floatval() 函数，所以你可能需要用到这个 floatval() 的别名函数。

debug_zval_dump
empty
Variable handling 函数


检查一个变量是否为空

doubleval
floatval
Variable handling 函数
PHP Manual

empty

(PHP 4, PHP 5, PHP 7)

empty — 检查一个变量是否为空

说明

bool empty ( mixed $var )

判断一个变量是否被认为是空的。当一个变量并不存在，或者它的值等同于FALSE，那么它会被认为不存在。如果变量不存在的话，empty()并不会产生警告。

参数

var

待检查的变量

Note:

在 PHP 5.5 之前，empty() 仅支持变量；任何其他东西将会导致一个解析错误。换言之，下列代码不会生效： empty(trim($name))。 作为替代，应该使用trim($name) == false.

没有警告会产生，哪怕变量并不存在。 这意味着 empty() 本质上与 !isset($var) || $var == false 等价。

返回值

当var存在，并且是一个非空非零的值时返回 FALSE 否则返回 TRUE.

以下的东西被认为是空的：

  • "" (空字符串)
  • 0 (作为整数的0)
  • 0.0 (作为浮点数的0)
  • "0" (作为字符串的0)
  • NULL
  • FALSE
  • array() (一个空数组)
  • $var; (一个声明了，但是没有值的变量)

更新日志

版本 | 说明
5.5.0 | empty() 现在支持表达式了，而不仅仅是变量。
5.4.0 | 检查非数字的字符串偏移量会返回 TRUE.

范例

Example #1 一个简单的 empty() 与 isset() 的比较。

<?php
$var = 0;

// Evaluates to true because $var is empty
if (empty($var)) {
    echo '$var is either 0, empty, or not set at all';
}

// Evaluates as true because $var is set
if (isset($var)) {
    echo '$var is set even though it is empty';
}
?>

Example #2 在字符串偏移量上使用empty()

PHP 5.4 修改了当传入的是字符串偏移量时， empty() 的行为

<?php
$expected_array_got_string = 'somestring';
var_dump(empty($expected_array_got_string['some_key']));
var_dump(empty($expected_array_got_string[0]));
var_dump(empty($expected_array_got_string['0']));
var_dump(empty($expected_array_got_string[0.5]));
var_dump(empty($expected_array_got_string['0.5']));
var_dump(empty($expected_array_got_string['0 Mostel']));
?>

以上例程在PHP 5.3中的输出：

bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)

以上例程在PHP 5.4中的输出：

bool(true)
bool(false)
bool(false)
bool(false)
bool(true)
bool(true)

注释

Note: 因为是一个语言构造器而不是一个函数，不能被 可变函数 调用。

Note:

当对一个不可见的对象属性使用 empty() 时， __isset() 方法如果存在的话，它将会被调用。

参见

  • isset() - 检测变量是否设置
  • __isset()
  • unset() - 释放给定的变量
  • array_key_exists() - 检查给定的键名或索引是否存在于数组中
  • count() - 计算数组中的单元数目或对象中的属性个数
  • strlen() - 获取字符串长度
  • The type comparison tables

doubleval
floatval
Variable handling 函数


获取变量的浮点值

empty
get_defined_vars
Variable handling 函数
PHP Manual

floatval

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

floatval — 获取变量的浮点值

描述

float floatval ( mixed $var )

返回变量 var 的 float 数值。

var 可以是任何标量类型。你不能将 floatval() 用于数组或对象。

<?php
$var = '122.34343The';
$float_value_of_var = floatval ($var);
print $float_value_of_var; // 打印出 122.34343
?>

参见 intval()、strval()、settype() 和 类型戏法。

empty
get_defined_vars
Variable handling 函数


返回由所有已定义变量所组成的数组

floatval
get_resource_type
Variable handling 函数
PHP Manual

get_defined_vars

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

get_defined_vars — 返回由所有已定义变量所组成的数组

描述

array get_defined_vars ( void )

此函数返回一个包含所有已定义变量列表的多维数组，这些变量包括环境变量、服务器变量和用户定义的变量。

<?php
$b = array(1,1,2,3,5,8);

$arr = get_defined_vars();

// 打印 $b
print_r($arr["b"]);

// 打印 PHP 解释程序的路径（如果 PHP 作为 CGI 使用的话）
// 例如：/usr/local/bin/php
echo $arr["_"];

// 打印命令行参数（如果有的话）
print_r($arr["argv"]);

// 打印所有服务器变量
print_r($arr["_SERVER"]);

// 打印变量数组的所有可用键值
print_r(array_keys(get_defined_vars()));
?>

参见 get_defined_functions() 和 get_defined_constants()。

floatval
get_resource_type
Variable handling 函数


返回资源（resource）类型

get_defined_vars
gettype
Variable handling 函数
PHP Manual

get_resource_type

(PHP 4 >= 4.0.2, PHP 5, PHP 7)

get_resource_type — 返回资源（resource）类型

描述

string get_resource_type ( resource $handle )

此函数返回一个字符串，用于表示传递给它的 resource 的类型。如果参数不是合法的 resource，将产生错误。

<?php
$c = mysql_connect();
echo get_resource_type($c)."\n";
// 打印：mysql link

$fp = fopen("foo","w");
echo get_resource_type($fp)."\n";
// 打印：file

$doc = new_xmldoc("1.0");
echo get_resource_type($doc->doc)."\n";
// 打印：domxml document
?>

get_defined_vars
gettype
Variable handling 函数


获取变量的类型

get_resource_type
import_request_variables
Variable handling 函数
PHP Manual

gettype

(PHP 4, PHP 5, PHP 7)

gettype — 获取变量的类型

描述

string gettype ( mixed $var )

返回 PHP 变量的类型 var.

Warning

不要使用 gettype() 来测试某种类型，因为其返回的字符串在未来的版本中可能需要改变。此外，由于包含了字符串的比较，它的运行也是较慢的。

使用 is_* 函数代替。

返回的字符串的可能值为：

  • "boolean"（从 PHP 4 起）
  • "integer"
  • "double"（由于历史原因，如果是 float 则返回"double"，而不是"float"）
  • "string"
  • "array"
  • "object"
  • "resource"（从 PHP 4 起）
  • "NULL"（从 PHP 4 起）
  • "user function"（只用于 PHP 3，现已停用）
  • "unknown type"

对于 PHP 4，你应该使用 function_exists()
和 method_exists()
取代先前将 gettype()
作用于函数的用法。

参见 settype()、is_array()、is_bool()、is_float()、is_integer()、is_null()、is_numeric()、is_object()、is_resource()、is_scalar() 和 is_string()。

get_resource_type
import_request_variables
Variable handling 函数


将 GET／POST／Cookie 变量导入到全局作用域中

gettype
intval
Variable handling 函数
PHP Manual

import_request_variables

(PHP 4 >= 4.1.0, PHP 5 < 5.4.0)

import_request_variables — 将 GET／POST／Cookie 变量导入到全局作用域中

描述

bool import_request_variables ( string $types [, string $prefix ] )

将 GET／POST／Cookie 变量导入到全局作用域中。如果你禁止了 register_globals，但又想用到一些全局变量，那么此函数就很有用。

你可以使用 types 参数指定需要导入的变量。可以用字母'G'、'P'和'C'分别表示 GET、POST 和 Cookie。这些字母不区分大小写，所以你可以使用'g'、'p'和'c'的任何组合。POST 包含了通过 POST 方法上传的文件信息。注意这些字母的顺序，当使用"gp"时，POST 变量将使用相同的名字覆盖 GET 变量。任何 GPC 以外的字母都将被忽略。

prefix 参数作为变量名的前缀，置于所有被导入到全局作用域的变量之前。所以如果你有个名为"userid"的 GET 变量，同时提供了"pref_"作为前缀，那么你将获得一个名为 $pref_userid 的全局变量。

如果你对导入其它全局变量（例如 SERVER 变量）感兴趣，请考虑使用 extract()。

Note:

虽然 prefix 参数是可选的，但如果不指定前缀，或者指定一个空字符串作为前缀，你将获得一个 E_NOTICE 级别的错误。使用默认错误报告级别是不显示注意（Notice）级别的错误的。

<?php
// 此处将导入 GET 和 POST 变量
// 使用"rvar_"作为前缀
import_request_variables("gP", "rvar_");

echo $rvar_foo;
?>

参见 $_REQUEST、register_globals、预定义变量 和 extract()。

gettype
intval
Variable handling 函数


获取变量的整数值

import_request_variables
is_array
Variable handling 函数
PHP Manual

intval

(PHP 4, PHP 5, PHP 7)

intval — 获取变量的整数值

说明

int intval ( mixed $var [, int $base = 10 ] )

通过使用指定的进制 base 转换（默认是十进制），返回变量 var 的 integer 数值。 intval() 不能用于 object，否则会产生 E_NOTICE 错误并返回 1。

参数

var

要转换成 integer 的数量值

base

转化所使用的进制

Note:

如果 base 是 0，通过检测 var 的格式来决定使用的进制：

  • 如果字符串包括了 "0x" (或 "0X") 的前缀，使用 16 进制 (hex)；否则，
  • 如果字符串以 "0" 开始，使用 8 进制(octal)；否则，
  • 将使用 10 进制 (decimal)。

返回值

成功时返回 var 的 integer 值，失败时返回 0。 空的 array 返回 0，非空的 array 返回 1。

最大的值取决于操作系统。 32 位系统最大带符号的 integer 范围是 -2147483648 到 2147483647。举例，在这样的系统上， intval('1000000000000') 会返回 2147483647。64 位系统上，最大带符号的 integer 值是 9223372036854775807。

字符串有可能返回 0，虽然取决于字符串最左侧的字符。 使用 整型转换 的共同规则。

范例

Example #1 intval() 例子

下面的例子运行于 32 位系统上。

<?php
echo intval(42);                      // 42
echo intval(4.2);                     // 4
echo intval('42');                    // 42
echo intval('+42');                   // 42
echo intval('-42');                   // -42
echo intval(042);                     // 34
echo intval('042');                   // 42
echo intval(1e10);                    // 1410065408
echo intval('1e10');                  // 1
echo intval(0x1A);                    // 26
echo intval(42000000);                // 42000000
echo intval(420000000000000000000);   // 0
echo intval('420000000000000000000'); // 2147483647
echo intval(42, 8);                   // 42
echo intval('42', 8);                 // 34
echo intval(array());                 // 0
echo intval(array('foo', 'bar'));     // 1
?>

注释

Note:

除非 var 是一个字符串，否则 base 不会起作用。

更新日志

版本 | 说明
5.1.0 | 当传入的 var 是 object，将会抛出 E_NOTICE 并返回 1。

参见

  • boolval() - 获取变量的布尔值
  • floatval() - 获取变量的浮点值
  • strval() - 获取变量的字符串值
  • settype() - 设置变量的类型
  • is_numeric() - 检测变量是否为数字或数字字符串
  • 类型转换的判别
  • BCMath 任意精度数学函数

import_request_variables
is_array
Variable handling 函数


检测变量是否是数组

intval
is_bool
Variable handling 函数
PHP Manual

is_array

(PHP 4, PHP 5, PHP 7)

is_array — 检测变量是否是数组

描述

bool is_array ( mixed $var )

如果 var 是 array，则返回 TRUE，否则返回 FALSE。

参见 is_float()、is_int()、is_integer()、is_string() 和 is_object()。

intval
is_bool
Variable handling 函数


检测变量是否是布尔型

is_array
is_callable
Variable handling 函数
PHP Manual

is_bool

(PHP 4, PHP 5, PHP 7)

is_bool — 检测变量是否是布尔型

描述

bool is_bool ( mixed $var )

如果 var 是 boolean 则返回 TRUE。

Example #1 is_bool() 示例

<?php
$a = false;
$b = 0;

// 因为 $a 是布尔型，所以结果为真
if (is_bool($a)) {
    print "Yes, this is a boolean";
}

// 因为 $b 不是布尔型，所以结果为非真
if (is_bool($b)) {
    print "Yes, this is a boolean";
}
?>

参见 is_array()、is_float()、is_int()、is_integer()、is_string() 和 is_object()。

is_array
is_callable
Variable handling 函数


检测参数是否为合法的可调用结构

is_bool
is_double
Variable handling 函数
PHP Manual

is_callable

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

is_callable — 检测参数是否为合法的可调用结构

说明

bool is_callable ( callable $name [, bool $syntax_only = false [, string &$callable_name ]] )

验证变量的内容能否作为函数调用。 这可以检查包含有效函数名的变量，或者一个数组，包含了正确编码的对象以及函数名。

参数

name

要检查的回调函数。

syntax_only

如果设置为 TRUE，这个函数仅仅验证 name 可能是函数或方法。 它仅仅拒绝非字符，或者未包含能用于回调函数的有效结构。有效的应该包含两个元素，第一个是一个对象或者字符，第二个元素是个字符。

callable_name

接受"可调用的名称"。下面的例子是"someClass::someMethod"。 注意，尽管 someClass::SomeMethod() 的含义是可调用的静态方法，但例子的情况并不是这样的。

返回值

如果 name 可调用则返回 TRUE，否则返回 FALSE。

范例

Example #1 is_callable() 例子

<?php
//  How to check a variable to see if it can be called
//  as a function.

//
//  Simple variable containing a function
//

function someFunction()
{
}

$functionVariable = 'someFunction';

var_dump(is_callable($functionVariable, false, $callable_name));  // bool(true)

echo $callable_name, "\n";  // someFunction

//
//  Array containing a method
//

class someClass {

  function someMethod()
  {
  }

}

$anObject = new someClass();

$methodVariable = array($anObject, 'someMethod');

var_dump(is_callable($methodVariable, true, $callable_name));  //  bool(true)

echo $callable_name, "\n";  //  someClass::someMethod

?>

参见

  • function_exists() - 如果给定的函数已经被定义就返回 TRUE
  • method_exists() - 检查类的方法是否存在

is_bool
is_double
Variable handling 函数


is_float 的别名

is_callable
is_float
Variable handling 函数
PHP Manual

is_double

(PHP 4, PHP 5, PHP 7)

is_double — is_float() 的别名

描述

此函数是 is_float() 的别名函数。

is_callable
is_float
Variable handling 函数


检测变量是否是浮点型

is_double
is_int
Variable handling 函数
PHP Manual

is_float

(PHP 4, PHP 5, PHP 7)

is_float — 检测变量是否是浮点型

描述

bool is_float ( mixed $var )

如果 var 是 float 则返回 TRUE，否则返回 FALSE。

Note:

若想测试一个变量是否是数字或数字字符串（如表单输入，它们通常为字符串），必须使用 is_numeric()。

参见 is_bool()、is_int()、is_integer()、is_numeric()、is_string()、is_array() 和 is_object()。

is_double
is_int
Variable handling 函数


检测变量是否是整数

is_float
is_integer
Variable handling 函数
PHP Manual

is_int

(PHP 4, PHP 5, PHP 7)

is_int — 检测变量是否是整数

描述

bool is_int ( mixed $var )

如果 var 是 integer 则返回 TRUE，否则返回 FALSE。

Note:

若想测试一个变量是否是数字或数字字符串（如表单输入，它们通常为字符串），必须使用 is_numeric()。

参见 is_bool()、is_float()、is_integer()、is_numeric()、is_string()、is_array() 和 is_object()。

is_float
is_integer
Variable handling 函数


is_int 的别名

is_int
is_long
Variable handling 函数
PHP Manual

is_integer

(PHP 4, PHP 5, PHP 7)

is_integer — is_int() 的别名

描述

此函数是 is_int() 的别名函数。

is_int
is_long
Variable handling 函数


is_int 的别名

is_integer
is_null
Variable handling 函数
PHP Manual

is_long

(PHP 4, PHP 5, PHP 7)

is_long — is_int() 的别名

描述

此函数是 is_int() 的别名函数。

is_integer
is_null
Variable handling 函数


检测变量是否为 NULL

is_long
is_numeric
Variable handling 函数
PHP Manual

is_null

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

is_null — 检测变量是否为 NULL

描述

bool is_null ( mixed $var )

如果 var 是 null 则返回 TRUE，否则返回 FALSE。

查看 NULL 类型获知变量什么时候被认为是 NULL，而什么时候不是。

参见 NULL、is_bool()、is_numeric()、is_float()、is_int()、is_string()、is_object()、is_array()、is_integer() 和 is_real()。

is_long
is_numeric
Variable handling 函数


检测变量是否为数字或数字字符串

is_null
is_object
Variable handling 函数
PHP Manual

is_numeric

(PHP 4, PHP 5, PHP 7)

is_numeric — 检测变量是否为数字或数字字符串

描述

bool is_numeric ( mixed $var )

如果 var 是数字和数字字符串则返回 TRUE，否则返回 FALSE。

参见 is_bool()、is_float()、is_int()、is_string()、is_object()、is_array() 和 is_integer()。

is_null
is_object
Variable handling 函数


检测变量是否是一个对象

is_numeric
is_real
Variable handling 函数
PHP Manual

is_object

(PHP 4, PHP 5, PHP 7)

is_object — 检测变量是否是一个对象

描述

bool is_object ( mixed $var )

如果 var 是一个 object 则返回 TRUE，否则返回 FALSE。

参见 is_bool()、is_int()、is_integer()、is_float()、is_string() 和 is_array()。

is_numeric
is_real
Variable handling 函数


is_float 的别名

is_object
is_resource
Variable handling 函数
PHP Manual

is_real

(PHP 4, PHP 5, PHP 7)

is_real — is_float() 的别名

描述

此函数是 is_float() 的别名函数。

is_object
is_resource
Variable handling 函数


检测变量是否为资源类型

is_real
is_scalar
Variable handling 函数
PHP Manual

is_resource

(PHP 4, PHP 5, PHP 7)

is_resource — 检测变量是否为资源类型

描述

bool is_resource ( mixed $var )

如果给出的参数 var 是 resource 类型，is_resource() 返回 TRUE，否则返回 FALSE。

查看 resource 类型文档获取更多的信息。

is_real
is_scalar
Variable handling 函数


检测变量是否是一个标量

is_resource
is_string
Variable handling 函数
PHP Manual

is_scalar

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

is_scalar — 检测变量是否是一个标量

描述

bool is_scalar ( mixed $var )

如果给出的变量参数 var 是一个标量，is_scalar() 返回 TRUE，否则返回 FALSE。

标量变量是指那些包含了 integer、float、string 或 boolean的变量，而 array、object 和 resource 则不是标量。

<?php
function show_var($var) {
    if (is_scalar($var)) {
        echo $var;
    } else {
        var_dump($var);
    }
}
$pi = 3.1416;
$proteins = array("hemoglobin", "cytochrome c oxidase", "ferredoxin");

show_var($pi);
// 打印：3.1416

show_var($proteins)
// 打印：
// array(3) {
//   [0]=>
//   string(10) "hemoglobin"
//   [1]=>
//   string(20) "cytochrome c oxidase"
//   [2]=>
//   string(10) "ferredoxin"
// }
?>

Note:

尽管当前的 resource 类型是居于整数的，但 is_scalar() 不会把它们当作是标量，因为资源是抽象数据类型。不能依赖于执行细节，因为它可能会改变。

参见 is_bool()、is_numeric()、is_float()、is_int()、is_real()、is_string()、is_object()、is_array() 和 is_integer()。

is_resource
is_string
Variable handling 函数


检测变量是否是字符串

is_scalar
isset
Variable handling 函数
PHP Manual

is_string

(PHP 4, PHP 5, PHP 7)

is_string — 检测变量是否是字符串

描述

bool is_string ( mixed $var )

如果 var 是 string 则返回 TRUE，否则返回 FALSE。

参见 is_bool()、is_int()、is_integer()、is_float()、is_real()、is_object() 和 is_array()。

is_scalar
isset
Variable handling 函数


检测变量是否设置

is_string
print_r
Variable handling 函数
PHP Manual

isset

(PHP 4, PHP 5, PHP 7)

isset — 检测变量是否设置

说明

bool isset ( mixed $var [, mixed $... ] )

检测变量是否设置，并且不是 NULL。

如果已经使用 unset() 释放了一个变量之后，它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量，将返回 FALSE。同时要注意的是一个 NULL 字节（"\0"）并不等同于 PHP 的 NULL 常数。

If multiple parameters are supplied then isset() will return TRUE only if all of the parameters are set. Evaluation goes from left to right and stops as soon as an unset variable is encountered.

参数

var

要检查的变量。

...

其他变量。

返回值

如果 var 存在并且值不是 NULL 则返回 TRUE，否则返回 FALSE。

更新日志

版本 | 说明
5.4.0 | 检查字符的非数字偏移量将会返回 FALSE。

范例

Example #1 isset() 例子

<?php

$var = '';

// 结果为 TRUE，所以后边的文本将被打印出来。
if (isset($var)) {
    echo "This var is set so I will print.";
}

// 在后边的例子中，我们将使用 var_dump 输出 isset() 的返回值。
// the return value of isset().

$a = "test";
$b = "anothertest";

var_dump(isset($a));      // TRUE
var_dump(isset($a, $b)); // TRUE

unset ($a);

var_dump(isset($a));     // FALSE
var_dump(isset($a, $b)); // FALSE

$foo = NULL;
var_dump(isset($foo));   // FALSE

?>

这对于数组中的元素也同样有效：

<?php

$a = array ('test' => 1, 'hello' => NULL, 'pie' => array('a' => 'apple'));

var_dump(isset($a['test']));            // TRUE
var_dump(isset($a['foo']));             // FALSE
var_dump(isset($a['hello']));           // FALSE

// 键 'hello' 的值等于 NULL，所以被认为是未置值的。
// 如果想检测 NULL 键值，可以试试下边的方法。
var_dump(array_key_exists('hello', $a)); // TRUE

// Checking deeper array values
var_dump(isset($a['pie']['a']));        // TRUE
var_dump(isset($a['pie']['b']));        // FALSE
var_dump(isset($a['cake']['a']['b']));  // FALSE

?>

Example #2 isset() on String Offsets

PHP 5.4 changes how isset() behaves when passed string offsets.

<?php
$expected_array_got_string = 'somestring';
var_dump(isset($expected_array_got_string['some_key']));
var_dump(isset($expected_array_got_string[0]));
var_dump(isset($expected_array_got_string['0']));
var_dump(isset($expected_array_got_string[0.5]));
var_dump(isset($expected_array_got_string['0.5']));
var_dump(isset($expected_array_got_string['0 Mostel']));
?>

以上例程在PHP 5.3中的输出：

bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)

以上例程在PHP 5.4中的输出：

bool(false)
bool(true)
bool(true)
bool(true)
bool(false)
bool(false)

注释

Warning

isset() 只能用于变量，因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置，可使用 defined() 函数。

Note: 因为是一个语言构造器而不是一个函数，不能被 可变函数 调用。

Note:

如果使用 isset() 来检查对象无法访问的属性，如果 __isset() 方法已经定义则会调用这个重载方法。

参见

  • empty() - 检查一个变量是否为空
  • __isset()
  • unset() - 释放给定的变量
  • defined() - 检查某个名称的常量是否存在
  • the type comparison tables
  • array_key_exists() - 检查给定的键名或索引是否存在于数组中
  • is_null() - 检测变量是否为 NULL
  • 错误控制 @ 运算符。

is_string
print_r
Variable handling 函数


打印关于变量的易于理解的信息。

isset
serialize
Variable handling 函数
PHP Manual

print_r

(PHP 4, PHP 5, PHP 7)

print_r — 打印关于变量的易于理解的信息。

描述

bool print_r ( mixed $expression [, bool $return ] )

Note: 参数 return 是在 PHP 4.3.0 的时候加上的

print_r() 显示关于一个变量的易于理解的信息。如果给出的是 string、integer 或 float，将打印变量值本身。如果给出的是 array，将会按照一定格式显示键和元素。object 与数组类似。

记住，print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处。

<pre>
<?php
    $a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x','y','z'));
    print_r ($a);
?>
</pre>

上边的代码将输出：

<pre>
Array
(
    [a] => apple
    [b] => banana
    [c] => Array
        (
            [0] => x
            [1] => y
            [2] => z
        )
)
</pre>

如果想捕捉 print_r() 的输出，可使用 return 参数。若此参数设为 TRUE，print_r() 将不打印结果（此为默认动作），而是返回其输出。

Example #1 return 参数示例

<?php
    $b = array ('m' => 'monkey', 'foo' => 'bar', 'x' => array ('x', 'y', 'z'));
    $results = print_r ($b, true); //$results 包含了 print_r 的输出结果
?>

Note: 如果想在 PHP 4.3.0 之前的版本中捕捉 print_r() 的输出，可使用输出控制函数。

Note: 在 PHP 4.0.4 之前的版本中，如果给出的 array 或 object 包含了直接或间接指向自身的引用，print_r() 将永远继续下去。print_r($GLOBALS) 就是一个例子，因为 $GLOBALS 自身即是全局变量，其包含了指向自身的引用。

参见 ob_start()、var_dump() 和 var_export()。

isset
serialize
Variable handling 函数


产生一个可存储的值的表示

print_r
settype
Variable handling 函数
PHP Manual

serialize

(PHP 4, PHP 5, PHP 7)

serialize — 产生一个可存储的值的表示

描述

string serialize ( mixed $value )

serialize() 返回字符串，此字符串包含了表示 value 的字节流，可以存储于任何地方。

这有利于存储或传递 PHP 的值，同时不丢失其类型和结构。

想要将已序列化的字符串变回 PHP 的值，可使用 unserialize()。serialize() 可处理除了 resource 之外的任何类型。甚至可以 serialize() 那些包含了指向其自身引用的数组。你正 serialize() 的数组／对象中的引用也将被存储。

当序列化对象时，PHP 将试图在序列动作之前调用该对象的成员函数
__sleep()。这样就允许对象在被序列化之前做任何清除操作。类似的，当使用
unserialize() 恢复对象时， 将调用
__wakeup() 成员函数。

Note:

在 PHP 3 中，对象属性将被序列化，但是方法则会丢失。PHP 4 打破了此限制，可以同时存储属性和方法。请参见类与对象中的序列化对象部分获取更多信息。

Example #1 serialize() 示例

<?php
// $session_data 是包含了当前用户 session 信息的多维数组。
// 我们使用 serialize() 在请求结束之前将其存储到数据库中。

$conn = odbc_connect ("webdb", "php", "chicken");
$stmt = odbc_prepare ($conn,
      "UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $PHP_AUTH_USER);
if (!odbc_execute ($stmt, &$sqldata)) {
    $stmt = odbc_prepare($conn,
     "INSERT INTO sessions (id, data) VALUES(?, ?)");
    if (!odbc_execute($stmt, &$sqldata)) {
    /* 出错 */
    }
}
?>

参见：unserialize()。

print_r
settype
Variable handling 函数


设置变量的类型

serialize
strval
Variable handling 函数
PHP Manual

settype

(PHP 4, PHP 5, PHP 7)

settype — 设置变量的类型

说明

bool settype ( mixed &$var , string $type )

将变量 var 的类型设置成 type。

参数

var

要转换的变量。

type

type 的可能值为：

  • "boolean" （或为"bool"，从 PHP 4.2.0 起）
  • "integer" （或为"int"，从 PHP 4.2.0 起）
  • "float" （只在 PHP 4.2.0 之后可以使用，对于旧版本中使用的"double"现已停用）
  • "string"
  • "array"
  • "object"
  • "null" （从 PHP 4.2.0 起）

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 settype() 示例

<?php
$foo = "5bar"; // string
$bar = true;   // boolean

settype($foo, "integer"); // $foo 现在是 5   (integer)
settype($bar, "string");  // $bar 现在是 "1" (string)
?>

注释

Note:

Maximum value for "int" is PHP_INT_MAX.

参见

  • gettype() - 获取变量的类型
  • 类型转换
  • 类型戏法

serialize
strval
Variable handling 函数


获取变量的字符串值

settype
unserialize
Variable handling 函数
PHP Manual

strval

(PHP 4, PHP 5, PHP 7)

strval — 获取变量的字符串值

描述

string strval ( mixed $var )

返回 var 的 string 值。 参见 string 文档获取更多关于字符串转换的信息。

var 可以是任何标量类型。不能将 strval() 用于数组或对象。

参见 floatval()、intval()、settype() 和类型戏法。

settype
unserialize
Variable handling 函数


从已存储的表示中创建 PHP 的值

strval
unset
Variable handling 函数
PHP Manual

unserialize

(PHP 4, PHP 5, PHP 7)

unserialize — 从已存储的表示中创建 PHP 的值

说明

mixed unserialize ( string $str )

unserialize() 对单一的已序列化的变量进行操作，将其转换回 PHP 的值。

参数

str

序列化后的字符串。

若被解序列化的变量是一个对象，在成功地重新构造对象之后，PHP 会自动地试图去调用 __wakeup() 成员函数（如果存在的话）。

Note: unserialize_callback_func 指令

如果在解序列化的时候需要实例化一个未定义类，则可以设置回调函数以供调用（以免得到的是不完整的 object "__PHP_Incomplete_Class"）。可通过 php.ini、ini_set() 或 .htaccess 定义'unserialize_callback_func'。每次实例化一个未定义类时它都会被调用。若要禁止这个特性，只需置空此设定。

返回值

返回的是转换之后的值，可为 integer、float、string、array 或 object。

如果传递的字符串不可解序列化，则返回 FALSE，并产生一个 E_NOTICE。

更新日志

版本 | 说明
4.2.0 | 添加了 unserialize_callback_func 指令。

范例

Example #1 unserialize() 例子

<?php
// 这里，我们使用 unserialize() 装载来自数据库的 $session_data 数组中的会话数据。
// 此例是描述 serialize() 的那个例子的补充。

$conn = odbc_connect("webdb", "php", "chicken");
$stmt = odbc_prepare($conn, "SELECT data FROM sessions WHERE id = ?");
$sqldata = array($_SERVER['PHP_AUTH_USER']);
if (!odbc_execute($stmt, $sqldata) || !odbc_fetch_into($stmt, $tmp)) {
    // 如果执行出错或返回错误，则初始化为空数组
    $session_data = array();
} else {
    // 现在我们需要的是 $tmp[0] 中已序列化的数据。
    $session_data = unserialize($tmp[0]);
    if (!is_array($session_data)) {
        // 出错，初始化为空数组
        $session_data = array();
    }
}
?>

Example #2 unserialize_callback_func 例子

<?php
$serialized_object='O:1:"a":1:{s:5:"value";s:3:"100";}';

// unserialize_callback_func 从 PHP 4.2.0 起可用
ini_set('unserialize_callback_func', 'mycallback'); // 设置您的回调函数

function mycallback($classname)
{
   // 只需包含含有类定义的文件
   // $classname 指出需要的是哪一个类
}
?>

注释

Warning

如果反序列化了 FALSE 的值，或者在过程中发生了错误，都会返回 FALSE。 可以通过 str 和 serialize(false) 进行比较，或者捕捉 E_NOTICE 错误来判断这种特殊情况。

参见

  • serialize() - 产生一个可存储的值的表示
  • 自动加载对象
  • unserialize_callback_func
  • __wakeup()

strval
unset
Variable handling 函数


释放给定的变量

unserialize
var_dump
Variable handling 函数
PHP Manual

unset

(PHP 4, PHP 5, PHP 7)

unset — 释放给定的变量

说明

void unset ( mixed $var [, mixed $... ] )

unset() 销毁指定的变量。

unset() 在函数中的行为会依赖于想要销毁的变量的类型而有所不同。

如果在函数中 unset() 一个全局变量，则只是局部变量被销毁，而在调用环境中的变量将保持调用 unset() 之前一样的值。

<?php
function destroy_foo() {
    global $foo;
    unset($foo);
}

$foo = 'bar';
destroy_foo();
echo $foo;
?>

以上例程会输出：

bar

如果您想在函数中 unset() 一个全局变量，可使用 $GLOBALS 数组来实现：

<?php
function foo()
{
    unset($GLOBALS['bar']);
}

$bar = "something";
foo();
?>

如果在函数中 unset() 一个通过引用传递的变量，则只是局部变量被销毁，而在调用环境中的变量将保持调用 unset() 之前一样的值。

<?php
function foo(&$bar) {
    unset($bar);
    $bar = "blah";
}

$bar = 'something';
echo "$bar\n";

foo($bar);
echo "$bar\n";
?>

以上例程会输出：

something
something

如果在函数中 unset() 一个静态变量，那么在函数内部此静态变量将被销毁。但是，当再次调用此函数时，此静态变量将被复原为上次被销毁之前的值。

<?php
function foo()
{
    static $bar;
    $bar++;
    echo "Before unset: $bar, ";
    unset($bar);
    $bar = 23;
    echo "after unset: $bar\n";
}

foo();
foo();
foo();
?>

以上例程会输出：

Before unset: 1, after unset: 23
Before unset: 2, after unset: 23
Before unset: 3, after unset: 23

参数

var

要销毁的变量。

...

其他变量......

返回值

没有返回值。

更新日志

版本 | 说明
4.0.1 | 添加了多个参数的支持。

范例

Example #1 unset() 示例

<?php
// 销毁单个变量
unset ($foo);

// 销毁单个数组元素
unset ($bar['quux']);

// 销毁一个以上的变量
unset($foo1, $foo2, $foo3);
?>

Example #2 使用 (unset) 类型强制转换

(unset) 类型强制转换常常和函数 unset() 引起困惑。 为了完整性，(unset) 是作为一个 NULL 类型的强制转换。它不会改变变量的类型。

<?php
$name = 'Felipe';

var_dump((unset) $name);
var_dump($name);
?>

以上例程会输出：

NULL
string(6) "Felipe"

注释

Note: 因为是一个语言构造器而不是一个函数，不能被 可变函数 调用。

Note:

It is possible to unset even object properties visible in current context.

Note:

在 PHP 5 之前无法在对象里销毁 $this。

Note:

在 unset() 一个无法访问的对象属性时，如果定义了 __unset() 则对调用这个重载方法。

参见

  • isset() - 检测变量是否设置
  • empty() - 检查一个变量是否为空
  • __unset()
  • array_splice() - 把数组中的一部分去掉并用其它值取代

unserialize
var_dump
Variable handling 函数


打印变量的相关信息

unset
var_export
Variable handling 函数
PHP Manual

var_dump

(PHP 4, PHP 5, PHP 7)

var_dump — 打印变量的相关信息

说明

void var_dump ( mixed $expression [, mixed $... ] )

此函数显示关于一个或多个表达式的结构信息，包括表达式的类型与值。数组将递归展开值，通过缩进显示其结构。

In PHP 5 all public, private and protected properties of objects will be returned in the output.

Tip

和直接将结果输出到浏览器一样，可使用输出控制函数来捕获当前函数的输出，然后(例如)保存到一个 string 中。

参数

expression

你要打印的变量。

返回值

没有返回值。

范例

Example #1 var_dump() 例子

<?php
$a = array(1, 2, array("a", "b", "c"));
var_dump($a);
?>

以上例程会输出：

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
    [2]=>
    string(1) "c"
  }
}
<?php

$b = 3.1;
$c = true;
var_dump($b, $c);

?>

以上例程会输出：

float(3.1)
bool(true)

参见

  • var_export() - 输出或返回一个变量的字符串表示
  • print_r() - 打印关于变量的易于理解的信息。

unset
var_export
Variable handling 函数


输出或返回一个变量的字符串表示

var_dump
Web 服务
Variable handling 函数
PHP Manual

var_export

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

var_export — 输出或返回一个变量的字符串表示

描述

mixed var_export ( mixed $expression [, bool $return ] )

此函数返回关于传递给该函数的变量的结构信息，它和 var_dump() 类似，不同的是其返回的表示是合法的 PHP 代码。

您可以通过将函数的第二个参数设置为 TRUE，从而返回变量的表示。

比较 var_export() 和 var_dump().

<pre>
<?php
$a = array (1, 2, array ("a", "b", "c"));
var_export ($a);

/* 输出：
array (
  0 => 1,
  1 => 2,
  2 =>
  array (
    0 => 'a',
    1 => 'b',
    2 => 'c',
  ),
)
*/

$b = 3.1;
$v = var_export($b, TRUE);
echo $v;

/* 输出：
3.1
*/
?>
</pre>

var_dump
Web 服务
Variable handling 函数


Web 服务

  • OAuth
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • OAuth 函数
    • OAuth — OAuth 类
    • OAuthProvider — OAuthProvider 类
    • OAuthException — OAuthException 类
  • SCA
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • SCA 函数
  • SOAP
    • 简介
    • 安装／配置
    • 预定义常量
    • SOAP 函数
    • SoapClient — The SoapClient class
    • SoapServer — The SoapServer class
    • SoapFault — The SoapFault class
    • SoapHeader — The SoapHeader class
    • SoapParam — The SoapParam class
    • SoapVar — The SoapVar class
  • Yar — Yet Another RPC Framework
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Yar_Server — The Yar_Server class
    • Yar_Client — The Yar_Client class
    • Yar_Concurrent_Client — The Yar_Concurrent_Client class
    • Yar_Server_Exception — The Yar_Server_Exception class
    • Yar_Client_Exception — The Yar_Client_Exception class
  • XML-RPC
    • 简介
    • 安装／配置
    • 预定义常量
    • XML-RPC 函数
var_export
OAuth
函数参考


OAuth

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • FireEagle
  • OAuth 函数
    • oauth_get_sbs — 生成一个签名字符基串
    • oauth_urlencode — 将 URI 编码为 RFC 3986 规范
  • OAuth — OAuth 类
    • OAuth::__construct — 新建一个 OAuth 对象
    • OAuth::__destruct — 析构函数
    • OAuth::disableDebug — 关闭详细的调试
    • OAuth::disableRedirects — 关闭重定向
    • OAuth::disableSSLChecks — 关闭 SSL 检查
    • OAuth::enableDebug — 启用详细调试
    • OAuth::enableRedirects — 启用重定向
    • OAuth::enableSSLChecks — 启用 SSL 检查
    • OAuth::fetch — 获取一个 OAuth 受保护的资源
    • OAuth::generateSignature — 生成一个签名
    • OAuth::getAccessToken — 获取一个访问令牌
    • OAuth::getCAPath — 获取 CA 信息
    • OAuth::getLastResponse — 获取最后一次的响应
    • OAuth::getLastResponseHeaders — 获取最后一次响应的头信息
    • OAuth::getLastResponseInfo — 获取关于最后一次响应的 HTTP 信息
    • OAuth::getRequestHeader — 生成 OAuth 头信息字符串签名
    • OAuth::getRequestToken — 获取一个请求令牌
    • OAuth::setAuthType — 设置授权类型
    • OAuth::setCAPath — 设置 CA 路径和信息
    • OAuth::setNonce — 为后续请求设置现时标志
    • OAuth::setRequestEngine — 设置目标请求引擎
    • OAuth::setRSACertificate — 设置 RSA 证书
    • OAuth::setSSLChecks — 调整特定的SSL请求检查
    • OAuth::setTimestamp — 设置时间戳
    • OAuth::setToken — 设置令牌和 secret
    • OAuth::setVersion — 设置 OAuth 版本
  • OAuthProvider — OAuthProvider 类
    • OAuthProvider::addRequiredParameter — 添加必需的参数
    • OAuthProvider::callconsumerHandler — 调用 consumerNonceHandler 回调函数
    • OAuthProvider::callTimestampNonceHandler — 调用 timestampNonceHandler 回调函数
    • OAuthProvider::calltokenHandler — 调用 tokenNonceHandler 回调函数
    • OAuthProvider::checkOAuthRequest — 检查一个 oauth 请求
    • OAuthProvider::__construct — 新建一个 OAuthProvider 对象
    • OAuthProvider::consumerHandler — 设置 consumerHandler 句柄回调函数
    • OAuthProvider::generateToken — 生成一个随机令牌
    • OAuthProvider::is2LeggedEndpoint — is2LeggedEndpoint
    • OAuthProvider::isRequestTokenEndpoint — 设置 isRequestTokenEndpoint
    • OAuthProvider::removeRequiredParameter — 移除一个必需的参数
    • OAuthProvider::reportProblem — 报告问题
    • OAuthProvider::setParam — 设置一个参数
    • OAuthProvider::setRequestTokenPath — 设置请求令牌路径
    • OAuthProvider::timestampNonceHandler — 设置 timestampNonceHandler 句柄回调函数
    • OAuthProvider::tokenHandler — 设置 tokenHandler 句柄回调函数
  • OAuthException — OAuthException 类
Web 服务
简介
Web 服务


简介

此扩展提供 OAuth 消费方和提供方之间的绑定。OAuth 是一种建立在 HTTP 之上的授权协议，用于允许应用程序安全访问数据而无需存储用户名和密码。

OAuth
安装／配置
OAuth


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
OAuth


需求

PECL/oauth 需要 PHP 5.1 或更高版本，以及 ext/hash 和 ext/pcre 。

如果在构建时选择 PECL/oauth 则可选择性地需要 libcurl 。如果使用 libcurl 配置，则必须构建 HTTPS 支持。

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pear.php.net/package/oauth

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

这些常量牵涉到的大部分问题也都在官方的 OAuth » 问题报告 文档里有描述。但是要注意，这些常量名是特定于 PHP 的，尽管这些命名规则看上去相似。

OAUTH_SIG_METHOD_RSASHA1 (字符串)
OAuth RSA-SHA1 签名方法。
OAUTH_SIG_METHOD_HMACSHA1 (字符串)

OAuth HMAC-SHA1 签名方法。

OAUTH_SIG_METHOD_HMACSHA256 (字符串)
OAuth HMAC-SHA256 签名方法。
OAUTH_AUTH_TYPE_AUTHORIZATION (字符串)

此常量代表把 OAuth 参数放在 Authorization 头部。

OAUTH_AUTH_TYPE_NONE (字符串)

此常量标志着一个 NoAuth OAuth 请求。

OAUTH_AUTH_TYPE_URI (字符串)

此常量表示将 OAuth 参数放在请求中。 URI.

OAUTH_AUTH_TYPE_FORM (字符串)

此常量表示将 OAuth 参数作为 HTTP POST 主体的一部分。

OAUTH_HTTP_METHOD_GET (字符串)

为 OAuth 请求使用 GET 方法。

OAUTH_HTTP_METHOD_POST (字符串)

为 OAuth 请求使用 POST 方法。

OAUTH_HTTP_METHOD_PUT (字符串)

为 OAuth 请求使用 PUT 方法。

OAUTH_HTTP_METHOD_HEAD (字符串)

为 OAuth 请求使用 HEAD 方法。

OAUTH_HTTP_METHOD_DELETE (字符串)
为 OAuth 请求使用 DELETE 方法。
OAUTH_REQENGINE_STREAMS (整型)
使用 OAuth::setRequestEngine() 来设置引擎为 PHP 流，与用 OAUTH_REQENGINE_CURL 的 Curl 截然相反。
OAUTH_REQENGINE_CURL (整型)
使用 OAuth::setRequestEngine() 来设置引擎为 Curl，与用 OAUTH_REQENGINE_STREAMS 的 PHP 流 截然相反。
OAUTH_OK (整型)
一切良好。
OAUTH_BAD_NONCE (整型)
oauth_nonce 值已经用于上一个上一个请求，因此现在不能使用了。
OAUTH_BAD_TIMESTAMP (整型)
oauth_timestamp 值不能被服务提供者接受。这种情况下，响应应该也包含 oauth_acceptable_timestamps 参数。
OAUTH_CONSUMER_KEY_UNKNOWN (整型)
oauth_consumer_key 暂时不能被服务提供者接受。比如，服务提供者限流了使用者。
OAUTH_CONSUMER_KEY_REFUSED (整型)
使用者密钥遭拒绝。
OAUTH_INVALID_SIGNATURE (整型)
oauth_signature 无效，因为和服务提供者的签名计算不匹配。
OAUTH_TOKEN_USED (整型)
oauth_token 已经被消费。此令牌不能再被使用，因为在上一次请求中已经使用过。
OAUTH_TOKEN_EXPIRED (整型)
oauth_token 已经过期。
OAUTH_TOKEN_REVOKED (整型)
oauth_token 已经被撤销，且将决不再接受。
OAUTH_TOKEN_REJECTED (整型)
oauth_token 被服务提供者拒绝。原因未知，也许是因为令牌从未发布、已经消费、过期、或服务提供者忘记了。
OAUTH_VERIFIER_INVALID (整型)
oauth_verifier 不正确。
OAUTH_PARAMETER_ABSENT (整型)
一个必需的参数没有接收到。这种情况下，响应也应该包含 oauth_parameters_absent 参数。
OAUTH_SIGNATURE_METHOD_REJECTED (整型)
oauth_signature_method 不能被服务提供者接受。

资源类型
范例
OAuth


范例

Table of Contents

  • FireEagle
预定义常量
FireEagle
OAuth


FireEagle

<?php
$req_url = 'https://fireeagle.yahooapis.com/oauth/request_token';
$authurl = 'https://fireeagle.yahoo.net/oauth/authorize';
$acc_url = 'https://fireeagle.yahooapis.com/oauth/access_token';
$api_url = 'https://fireeagle.yahooapis.com/api/0.1';
$conskey = 'your_consumer_key';
$conssec = 'your_consumer_secret';

session_start();

//  当 state=1 则下次请求应该包含一个 oauth_token 。
//  如果没有则返回 0
if(!isset($_GET['oauth_token']) && $_SESSION['state']==1) $_SESSION['state'] = 0;
try {
  $oauth = new OAuth($conskey,$conssec,OAUTH_SIG_METHOD_HMACSHA1,OAUTH_AUTH_TYPE_URI);
  $oauth->enableDebug();
  if(!isset($_GET['oauth_token']) && !$_SESSION['state']) {
    $request_token_info = $oauth->getRequestToken($req_url);
    $_SESSION['secret'] = $request_token_info['oauth_token_secret'];
    $_SESSION['state'] = 1;
    header('Location: '.$authurl.'?oauth_token='.$request_token_info['oauth_token']);
    exit;
  } else if($_SESSION['state']==1) {
    $oauth->setToken($_GET['oauth_token'],$_SESSION['secret']);
    $access_token_info = $oauth->getAccessToken($acc_url);
    $_SESSION['state'] = 2;
    $_SESSION['token'] = $access_token_info['oauth_token'];
    $_SESSION['secret'] = $access_token_info['oauth_token_secret'];
  }
  $oauth->setToken($_SESSION['token'],$_SESSION['secret']);
  $oauth->fetch("$api_url/user.json");
  $json = json_decode($oauth->getLastResponse());
  print_r($json);
} catch(OAuthException $E) {
  print_r($E);
}
?>

范例
OAuth 函数
范例


OAuth 函数

Table of Contents

  • oauth_get_sbs — 生成一个签名字符基串
  • oauth_urlencode — 将 URI 编码为 RFC 3986 规范
FireEagle
oauth_get_sbs
OAuth


生成一个签名字符基串

OAuth 函数
oauth_urlencode
OAuth 函数
PHP Manual

oauth_get_sbs

(PECL OAuth >=0.99.7)

oauth_get_sbs — 生成一个签名字符基串

说明

string oauth_get_sbs ( string $http_method , string $uri [, array $request_parameters ] )

根据 pecl/oauth 生成一个签名字符基串。

参数

http_method

HTTP 方法。

uri

将要编码的 URI 。

request_parameters

请求参数的数组。

返回值

返回一个签名字符基串。

OAuth 函数
oauth_urlencode
OAuth 函数


将 URI 编码为 RFC 3986 规范

oauth_get_sbs
OAuth
OAuth 函数
PHP Manual

oauth_urlencode

(PECL OAuth >=0.99.2)

oauth_urlencode — 将 URI 编码为 RFC 3986 规范

说明

string oauth_urlencode ( string $uri )

将 URI 编码为 » RFC 3986 规范。

参数

uri

将要编码的 URI 。

返回值

返回一个 » RFC 3986 规范的编码字符串。

oauth_get_sbs
OAuth
OAuth 函数


OAuth 类

(PECL OAuth >= 0.99.1)

简介

此 OAuth 扩展提供一个简单接口使用 OAuth HTTP 规范与数据提供者互动，以便保护私有资源。

类摘要

OAuth {
/* 属性 */
public $debug ;
public $sslChecks ;
public $debugInfo ;
/* 方法 */
public __construct ( string $consumer_key , string $consumer_secret [, string $signature_method = OAUTH_SIG_METHOD_HMACSHA1 [, int $auth_type = 0 ]] )
public void __destruct ( void )
public bool disableDebug ( void )
public bool disableRedirects ( void )
public bool disableSSLChecks ( void )
public bool enableDebug ( void )
public bool enableRedirects ( void )
public bool enableSSLChecks ( void )
public mixed fetch ( string $protected_resource_url [, array $extra_parameters [, string $http_method [, array $http_headers ]]] )
public string generateSignature ( string $http_method , string $url [, mixed $extra_parameters ] )
public array getAccessToken ( string $access_token_url [, string $auth_session_handle [, string $verifier_token ]] )
public array getCAPath ( void )
public string getLastResponse ( void )
public string getLastResponseHeaders ( void )
public array getLastResponseInfo ( void )
public string getRequestHeader ( string $http_method , string $url [, mixed $extra_parameters ] )
public array getRequestToken ( string $request_token_url [, string $callback_url ] )
public mixed setAuthType ( int $auth_type )
public mixed setCAPath ([ string $ca_path [, string $ca_info ]] )
public mixed setNonce ( string $nonce )
public void setRequestEngine ( int $reqengine )
public mixed setRSACertificate ( string $cert )
public bool setSSLChecks ( int $sslcheck )
public mixed setTimestamp ( string $timestamp )
public bool setToken ( string $token , string $token_secret )
public bool setVersion ( string $version )
}

属性

debug

sslChecks

debugInfo

Table of Contents

  • OAuth::__construct — 新建一个 OAuth 对象
  • OAuth::__destruct — 析构函数
  • OAuth::disableDebug — 关闭详细的调试
  • OAuth::disableRedirects — 关闭重定向
  • OAuth::disableSSLChecks — 关闭 SSL 检查
  • OAuth::enableDebug — 启用详细调试
  • OAuth::enableRedirects — 启用重定向
  • OAuth::enableSSLChecks — 启用 SSL 检查
  • OAuth::fetch — 获取一个 OAuth 受保护的资源
  • OAuth::generateSignature — 生成一个签名
  • OAuth::getAccessToken — 获取一个访问令牌
  • OAuth::getCAPath — 获取 CA 信息
  • OAuth::getLastResponse — 获取最后一次的响应
  • OAuth::getLastResponseHeaders — 获取最后一次响应的头信息
  • OAuth::getLastResponseInfo — 获取关于最后一次响应的 HTTP 信息
  • OAuth::getRequestHeader — 生成 OAuth 头信息字符串签名
  • OAuth::getRequestToken — 获取一个请求令牌
  • OAuth::setAuthType — 设置授权类型
  • OAuth::setCAPath — 设置 CA 路径和信息
  • OAuth::setNonce — 为后续请求设置现时标志
  • OAuth::setRequestEngine — 设置目标请求引擎
  • OAuth::setRSACertificate — 设置 RSA 证书
  • OAuth::setSSLChecks — 调整特定的SSL请求检查
  • OAuth::setTimestamp — 设置时间戳
  • OAuth::setToken — 设置令牌和 secret
  • OAuth::setVersion — 设置 OAuth 版本
oauth_urlencode
OAuth::__construct
OAuth


新建一个 OAuth 对象

OAuth
OAuth::__destruct
OAuth
PHP Manual

OAuth::__construct

(PECL OAuth >= 0.99.1)

OAuth::__construct — 新建一个 OAuth 对象

说明

public OAuth::__construct ( string $consumer_key , string $consumer_secret [, string $signature_method = OAUTH_SIG_METHOD_HMACSHA1 [, int $auth_type = 0 ]] )

新建一个 OAuth 对象

参数

consumer_key

由服务提供者提供的 consumer key 。

consumer_secret

由服务提供者提供的 consumer secret 。

signature_method

可选参数，用来定义使用哪种签名方法，默认为 OAUTH_SIG_METHOD_HMACSHA1 （HMAC-SHA1）。

auth_type

可选参数，用来定义如何传递 OAuth 参数给消费方，默认为OAUTH_AUTH_TYPE_AUTHORIZATION （在 Authorization 头部）。

OAuth
OAuth::__destruct
OAuth


析构函数

OAuth::__construct
OAuth::disableDebug
OAuth
PHP Manual

OAuth::__destruct

(PECL OAuth >= 0.99.9)

OAuth::__destruct — 析构函数

说明

public void OAuth::__destruct ( void )

析构函数。

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

参见

  • OAuth::__construct() - 新建一个 OAuth 对象
OAuth::__construct
OAuth::disableDebug
OAuth


关闭详细的调试

OAuth::__destruct
OAuth::disableRedirects
OAuth
PHP Manual

OAuth::disableDebug

(PECL OAuth >= 0.99.3)

OAuth::disableDebug — 关闭详细的调试

说明

public bool OAuth::disableDebug ( void )

关闭详细的请求信息（默认为关闭）。或者，将 调试 属性设置为 FALSE 值来关闭调试。

参数

此函数没有参数。

返回值

TRUE

更新日志

版本 | 说明
0.99.8 | 增加相关 调试 属性。

参见

  • OAuth::enableDebug() - 启用详细调试

OAuth::__destruct
OAuth::disableRedirects
OAuth


关闭重定向

OAuth::disableDebug
OAuth::disableSSLChecks
OAuth
PHP Manual

OAuth::disableRedirects

(PECL OAuth >= 0.99.9)

OAuth::disableRedirects — 关闭重定向

说明

public bool OAuth::disableRedirects ( void )

禁用自动跟随其后的重定向，这样，手动重定向请求。

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

TRUE

参见

  • OAuth::enableRedirects() - 启用重定向
OAuth::disableDebug
OAuth::disableSSLChecks
OAuth


关闭 SSL 检查

OAuth::disableRedirects
OAuth::enableDebug
OAuth
PHP Manual

OAuth::disableSSLChecks

(PECL OAuth >= 0.99.5)

OAuth::disableSSLChecks — 关闭 SSL 检查

说明

public bool OAuth::disableSSLChecks ( void )

关闭通常的 SSL 对等证书和主机检查，但不用于生产环境。或者，设置 sslChecks 成员为 FALSE 来关闭 SSL 检查。

参数

此函数没有参数。

返回值

TRUE

更新日志

版本 | 说明
0.99.8 | 增加了 sslChecks 成员

参见

  • OAuth::enableSSLChecks() - 启用 SSL 检查

OAuth::disableRedirects
OAuth::enableDebug
OAuth


启用详细调试

OAuth::disableSSLChecks
OAuth::enableRedirects
OAuth
PHP Manual

OAuth::enableDebug

(PECL OAuth >= 0.99.3)

OAuth::enableDebug — 启用详细调试

说明

public bool OAuth::enableDebug ( void )

打开用于调试的详细请求信息，调试信息存储在 debugInfo 成员中。或者，可以设置 debug 成员为一个非 FALSE 值来打开启用调试。

参数

此函数没有参数。

返回值

TRUE

更新日志

版本 | 说明
0.99.8 | 增加了 debug 和 debugInfo 成员

参见

  • OAuth::disableDebug() - 关闭详细的调试

OAuth::disableSSLChecks
OAuth::enableRedirects
OAuth


启用重定向

OAuth::enableDebug
OAuth::enableSSLChecks
OAuth
PHP Manual

OAuth::enableRedirects

(PECL OAuth >= 0.99.9)

OAuth::enableRedirects — 启用重定向

说明

public bool OAuth::enableRedirects ( void )

启用自动重定向，此项默认为启用。

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

TRUE

参见

  • OAuth::disableRedirects() - 关闭重定向
OAuth::enableDebug
OAuth::enableSSLChecks
OAuth


启用 SSL 检查

OAuth::enableRedirects
OAuth::fetch
OAuth
PHP Manual

OAuth::enableSSLChecks

(PECL OAuth >= 0.99.5)

OAuth::enableSSLChecks — 启用 SSL 检查

说明

public bool OAuth::enableSSLChecks ( void )

启用通常的l SSL 对等证书和主机检查（默认为启用）。或者，可以设置 sslChecks 成员为一个非 FALSE 值来启用 SSL 检查。

参数

此函数没有参数。

返回值

TRUE

更新日志

版本 | 说明
0.99.8 | 增加 sslChecks 成员

参见

  • OAuth::disableSSLChecks() - 关闭 SSL 检查

OAuth::enableRedirects
OAuth::fetch
OAuth


获取一个 OAuth 受保护的资源

OAuth::enableSSLChecks
OAuth::generateSignature
OAuth
PHP Manual

OAuth::fetch

(PECL OAuth >= 0.99.1)

OAuth::fetch — 获取一个 OAuth 受保护的资源

说明

public mixed OAuth::fetch ( string $protected_resource_url [, array $extra_parameters [, string $http_method [, array $http_headers ]]] )

获取一个资源。

参数

protected_resource_url

OAuth 受保护资源的URL

extra_parameters

和资源请求一起发送的额外参数。

http_method

OAUTH_HTTP_METHOD_* 系列 OAUTH 常量之一，GET、POST、PUT、HEAD 或 DELETE 其中的一个。

HEAD （OAUTH_HTTP_METHOD_HEAD ）可以用于先于请求发现信息（如果 OAuth 证书在 Authorization 头部）。

http_headers

HTTP 客户端头信息（像 User-Agent， Accept 等等这样的）。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
1.0.0 | 以前失败时返回 NULL，而不是 FALSE。
0.99.5 | 新增 http_method 参数
0.99.8 | 新增 http_headers 参数

范例

Example #1 OAuth::fetch() example

<?php
try {
    $oauth = new OAuth("consumer_key","consumer_secret",OAUTH_SIG_METHOD_HMACSHA1,OAUTH_AUTH_TYPE_AUTHORIZATION);
    $oauth->setToken("access_token","access_token_secret");

    $oauth->fetch("http://photos.example.net/photo?file=vacation.jpg");

    $response_info = $oauth->getLastResponseInfo();
    header("Content-Type: {$response_info["content_type"]}");
    echo $oauth->getLastResponse();
} catch(OAuthException $E) {
    echo "Exception caught!\n";
    echo "Response: ". $E->lastResponse . "\n";
}
?>

参见

  • OAuth::getLastResponse() - 获取最后一次的响应
  • OAuth::getLastResponseInfo() - 获取关于最后一次响应的 HTTP 信息
  • OAuth::setToken() - 设置令牌和 secret

OAuth::enableSSLChecks
OAuth::generateSignature
OAuth


生成一个签名

OAuth::fetch
OAuth::getAccessToken
OAuth
PHP Manual

OAuth::generateSignature

(No version information available, might only be in Git)

OAuth::generateSignature — 生成一个签名

说明

public string OAuth::generateSignature ( string $http_method , string $url [, mixed $extra_parameters ] )

生成一个基于最终 HTTP 方法、URL 和 一个字符串/数组参数的签名。

参数

http_method

用来请求的 HTTP 方法

url

用来请求的 URL

extra_parameters

字符串或数组的附加参数

返回值

一个包含签名的字符串 或者在失败时返回 FALSE

OAuth::fetch
OAuth::getAccessToken
OAuth


获取一个访问令牌

OAuth::generateSignature
OAuth::getCAPath
OAuth
PHP Manual

OAuth::getAccessToken

(PECL OAuth >= 0.99.1)

OAuth::getAccessToken — 获取一个访问令牌

说明

public array OAuth::getAccessToken ( string $access_token_url [, string $auth_session_handle [, string $verifier_token ]] )

从服务提供者获取一个访问令牌、secret以及一些附带的响应参数 。

参数

access_token_url

用于访问令牌 API 的 URL。

auth_session_handle

授权会话句柄，此参数在 OAuth 规范核心中没有任何引用， 但可能被大的提供者实现。» 参见 ScalableOAuth 获取更多信息。

verifier_token

对于支持 1.0a 的服务提供者， 当交换请求令牌和访问令牌时，必须传递 verifier_token 。如果 verifier_token 存在于 $_GET 或 $_POST 中，它将被自动传递，且调用者不需要指定一个 verifier_token （通常如果访问令牌在 oauth_callback URL 上被交换 ）。 » 参见 ScalableOAuth 获取更多信息。

返回值

成功则返回一个包含解析过的 OAuth 响应的数组， 失败则返回 FALSE 。

更新日志

版本 | 说明
1.0.0 | 以前失败时返回 NULL，而不是 FALSE。
0.99.9 | 新增 verifier_token 参数

范例

Example #1 OAuth::getAccessToken() 例子

<?php
try {
    $oauth = new OAuth(OAUTH_CONSUMER_KEY,OAUTH_CONSUMER_SECRET);
    $oauth->setToken($request_token,$request_token_secret);
    $access_token_info = $oauth->getAccessToken("https://example.com/oauth/access_token");
    if(!empty($access_token_info)) {
        print_r($access_token_info);
    } else {
        print "Failed fetching access token, response was: " . $oauth->getLastResponse();
    }
} catch(OAuthException $E) {
    echo "Response: ". $E->lastResponse . "\n";
}
?>

以上例程的输出类似于：

Array
(
    [oauth_token] => some_token
    [oauth_token_secret] => some_token_secret
)

参见

  • OAuth::getLastResponse() - 获取最后一次的响应
  • OAuth::getLastResponseInfo() - 获取关于最后一次响应的 HTTP 信息
  • OAuth::setToken() - 设置令牌和 secret

OAuth::generateSignature
OAuth::getCAPath
OAuth


获取 CA 信息

OAuth::getAccessToken
OAuth::getLastResponse
OAuth
PHP Manual

OAuth::getCAPath

(PECL OAuth >= 0.99.8)

OAuth::getCAPath — 获取 CA 信息

说明

public array OAuth::getCAPath ( void )

获取证书授权的信息，其中包括通过 OAuth::setCaPath() 设置的 ca_path 和 ca_info 。

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

返回一个证书授权信息的 数组 ，在返回的关联数组中明确地包含 ca_path 和 ca_info 键。

参见

  • OAuth::setCAPath() - 设置 CA 路径和信息
  • OAuth::getLastResponseInfo() - 获取关于最后一次响应的 HTTP 信息
OAuth::getAccessToken
OAuth::getLastResponse
OAuth


获取最后一次的响应

OAuth::getCAPath
OAuth::getLastResponseHeaders
OAuth
PHP Manual

OAuth::getLastResponse

(PECL OAuth >= 0.99.1)

OAuth::getLastResponse — 获取最后一次的响应

说明

public string OAuth::getLastResponse ( void )

获取最近一次请求的原始响应。

参数

此函数没有参数。

返回值

返回一个最后一次响应的字符串。

参见

  • OAuth::getLastResponseInfo() - 获取关于最后一次响应的 HTTP 信息
  • OAuth::fetch() - 获取一个 OAuth 受保护的资源

OAuth::getCAPath
OAuth::getLastResponseHeaders
OAuth


获取最后一次响应的头信息

OAuth::getLastResponse
OAuth::getLastResponseInfo
OAuth
PHP Manual

OAuth::getLastResponseHeaders

(No version information available, might only be in Git)

OAuth::getLastResponseHeaders — 获取最后一次响应的头信息

说明

public string OAuth::getLastResponseHeaders ( void )

获取最后一次响应的头信息。

参数

此函数没有参数。

返回值

返回一个包含最后一次响应头信息的字符串 或者在失败时返回 FALSE 。

OAuth::getLastResponse
OAuth::getLastResponseInfo
OAuth


获取关于最后一次响应的 HTTP 信息

OAuth::getLastResponseHeaders
OAuth::getRequestHeader
OAuth
PHP Manual

OAuth::getLastResponseInfo

(PECL OAuth >= 0.99.1)

OAuth::getLastResponseInfo — 获取关于最后一次响应的 HTTP 信息

说明

public array OAuth::getLastResponseInfo ( void )

获取关于最后一次响应的 HTTP 信息。

参数

此函数没有参数。

返回值

返回一个包含最后一次请求响应信息的数组。可以用到来自 curl_getinfo() 的常量。

参见

  • OAuth::fetch() - 获取一个 OAuth 受保护的资源
  • OAuth::getLastResponse() - 获取最后一次的响应

OAuth::getLastResponseHeaders
OAuth::getRequestHeader
OAuth


生成 OAuth 头信息字符串签名

OAuth::getLastResponseInfo
OAuth::getRequestToken
OAuth
PHP Manual

OAuth::getRequestHeader

(No version information available, might only be in Git)

OAuth::getRequestHeader — 生成 OAuth 头信息字符串签名

说明

public string OAuth::getRequestHeader ( string $http_method , string $url [, mixed $extra_parameters ] )

生成基于最终 HTTP 方法、URL 和 一个字符串/数组附加参数的 OAuth 头信息字符串签名。

参数

http_method

请求的 HTTP 方法。

url

请求的 URL 。

extra_parameters

字符串或数组类型的附带参数。

返回值

返回 一个包含生成的请求头信息的字符串 r 或者在失败时返回 FALSE

OAuth::getLastResponseInfo
OAuth::getRequestToken
OAuth


获取一个请求令牌

OAuth::getRequestHeader
OAuth::setAuthType
OAuth
PHP Manual

OAuth::getRequestToken

(PECL OAuth >= 0.99.1)

OAuth::getRequestToken — 获取一个请求令牌

说明

public array OAuth::getRequestToken ( string $request_token_url [, string $callback_url ] )

从服务提供者那里获取一个请求令牌、secret 、以及一些附带的响应参数。

参数

request_token_url

请求令牌 API 的 URL。

callback_url

OAuth 回调 URL。 如果传递了 callback_url 且为空值，则将其设置为"oob"即到 OAuth 2009.1 咨询的地址。

返回值

成功则返回一个包含解析过了的 OAuth 响应的数组，失败则返回 FALSE 。

更新日志

版本 | 说明
1.0.0 | 以前失败时返回 NULL，而不是 FALSE。
0.99.9 | 增加 callback_url 参数。

范例

Example #1 OAuth::getRequestToken() 例子

<?php
try {
    $oauth = new OAuth(OAUTH_CONSUMER_KEY,OAUTH_CONSUMER_SECRET);
    $request_token_info = $oauth->getRequestToken("https://example.com/oauth/request_token");
    if(!empty($request_token_info)) {
        print_r($request_token_info);
    } else {
        print "Failed fetching request token, response was: " . $oauth->getLastResponse();
    }
} catch(OAuthException $E) {
    echo "Response: ". $E->lastResponse . "\n";
}
?>

以上例程的输出类似于：

Array
(
    [oauth_token] => some_token
    [oauth_token_secret] => some_token_secret
)

参见

  • OAuth::getLastResponse() - 获取最后一次的响应
  • OAuth::getLastResponseInfo() - 获取关于最后一次响应的 HTTP 信息

OAuth::getRequestHeader
OAuth::setAuthType
OAuth


设置授权类型

OAuth::getRequestToken
OAuth::setCAPath
OAuth
PHP Manual

OAuth::setAuthType

(PECL OAuth >= 0.99.1)

OAuth::setAuthType — 设置授权类型

说明

public mixed OAuth::setAuthType ( int $auth_type )

设置 OAuth 参数应该放在哪里传递。

参数

auth_type

auth_type可能是下列标志之一（在 OAuth 1.0 规范的第 5.2 章节中按优先级降序排列）：

OAUTH_AUTH_TYPE_AUTHORIZATION
在 HTTP Authorization 头部传递 OAuth 参数。
OAUTH_AUTH_TYPE_FORM
将 OAuth 参数附加到 HTTP POST 请求主体中。
OAUTH_AUTH_TYPE_URI
将 OAuth 参数附加到请求的 URI 后面 。
OAUTH_AUTH_TYPE_NONE
无。

返回值

如果参数设置正确则返回 TRUE ，否则返回 FALSE （比如，传递进一个无效的 auth_type ）。

更新日志

版本 | 说明
1.0.0 | 以前失败时返回 NULL，而不是 FALSE。

OAuth::getRequestToken
OAuth::setCAPath
OAuth


设置 CA 路径和信息

OAuth::setAuthType
OAuth::setNonce
OAuth
PHP Manual

OAuth::setCAPath

(PECL OAuth >= 0.99.8)

OAuth::setCAPath — 设置 CA 路径和信息

说明

public mixed OAuth::setCAPath ([ string $ca_path [, string $ca_info ]] )

设置证书授权中心（CA ）的路径和信息。

Warning

本函数还未编写文档，仅有参数列表。

参数

ca_path

要设置的 CA 路径。

ca_info

要设置的 CA 信息。

返回值

成功则返回 TRUE ，如果 ca_path 或 ca_info 其中之一被认为无效则返回 FALSE 。

更新日志

版本 | 说明
1.0.0 | 以前失败时返回 NULL，而不是 FALSE。

参见

  • OAuth::getCaPath() - 获取 CA 信息
OAuth::setAuthType
OAuth::setNonce
OAuth


为后续请求设置现时标志

OAuth::setCAPath
OAuth::setRequestEngine
OAuth
PHP Manual

OAuth::setNonce

(PECL OAuth >= 0.99.1)

OAuth::setNonce — 为后续请求设置现时标志

说明

public mixed OAuth::setNonce ( string $nonce )

为所有后续请求设置现时标志。

参数

nonce

oauth_nonce 的值。

返回值

成功返回 TRUE ，如果 nonce 被认为无效，则返回 FALSE 。

更新日志

版本 | 说明
1.0.0 | 以前失败时返回 NULL，而不是 FALSE。

参见

  • OAuth::setToken() - 设置令牌和 secret
  • OAuth::setAuthType() - 设置授权类型
  • OAuth::setVersion() - 设置 OAuth 版本

OAuth::setCAPath
OAuth::setRequestEngine
OAuth


设置目标请求引擎

OAuth::setNonce
OAuth::setRSACertificate
OAuth
PHP Manual

OAuth::setRequestEngine

(PECL OAuth >= 1.0.0)

OAuth::setRequestEngine — 设置目标请求引擎

说明

public void OAuth::setRequestEngine ( int $reqengine )

设置请求引擎，用于发送 HTTP 请求。

Warning

本函数还未编写文档，仅有参数列表。

参数

reqengine

想要的请求引擎。 设为 OAUTH_REQENGINE_STREAMS 则使用 PHP 流，设为 OAUTH_REQENGINE_CURL 则使用 Curl。

返回值

没有返回值。

错误／异常

如果选择了一个无效的请求引擎，则发出一个 OAuthException 异常。

范例

Example #1 OAuth::setRequestEngine() 例子

<?php
$consumer = new OAuth();

$consumer->setRequestEngine(OAUTH_REQENGINE_STREAMS);
?>

参见

  • Curl
  • PHP 流
  • OAuthException
OAuth::setNonce
OAuth::setRSACertificate
OAuth


设置 RSA 证书

OAuth::setRequestEngine
OAuth::setSSLChecks
OAuth
PHP Manual

OAuth::setRSACertificate

(PECL OAuth >= 1.0.0)

OAuth::setRSACertificate — 设置 RSA 证书

说明

public mixed OAuth::setRSACertificate ( string $cert )

设置 RSA 证书。

Warning

本函数还未编写文档，仅有参数列表。

参数

cert

RSA 证书。

返回值

成功则返回 TRUE ，失败返回 FALSE （例如，RSA证书不能被传递）。

更新日志

版本 | 说明
1.0.0 | 以前失败时返回 NULL，而不是 FALSE。

范例

Example #1 一个 OAuth::setRsaCertificate() 例子

<?php
$consume = new OAuth('1234', '', OAUTH_SIG_METHOD_RSASHA1);

$consume->setRSACertificate(file_get_contents('test.pem'));
?>

参见

  • OAuth::setCaPath() - 设置 CA 路径和信息
OAuth::setRequestEngine
OAuth::setSSLChecks
OAuth


调整特定的SSL请求检查

OAuth::setRSACertificate
OAuth::setTimestamp
OAuth
PHP Manual

OAuth::setSSLChecks

(No version information available, might only be in Git)

OAuth::setSSLChecks — 调整特定的SSL请求检查

说明

public bool OAuth::setSSLChecks ( int $sslcheck )

调整特定的SSL请求检查。

Warning

本函数还未编写文档，仅有参数列表。

参数

sslcheck

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

OAuth::setRSACertificate
OAuth::setTimestamp
OAuth


设置时间戳

OAuth::setSSLChecks
OAuth::setToken
OAuth
PHP Manual

OAuth::setTimestamp

(PECL OAuth >= 1.0.0)

OAuth::setTimestamp — 设置时间戳

说明

public mixed OAuth::setTimestamp ( string $timestamp )

为后续请求设置时间戳。

Warning

本函数还未编写文档，仅有参数列表。

参数

timestamp

时间戳。

返回值

返回 TRUE ，除非 timestamp 无效，则返回 FALSE 。

更新日志

版本 | 说明
1.0.0 | 以前失败时返回 NULL，而不是 FALSE。

参见

  • OAuth::setNonce() - 为后续请求设置现时标志
OAuth::setSSLChecks
OAuth::setToken
OAuth


设置令牌和 secret

OAuth::setTimestamp
OAuth::setVersion
OAuth
PHP Manual

OAuth::setToken

(PECL OAuth >= 0.99.1)

OAuth::setToken — 设置令牌和 secret

说明

public bool OAuth::setToken ( string $token , string $token_secret )

为后续请求设置令牌和 secret。

参数

token

OAuth 令牌

token_secret

OAuth 令牌 secret。

返回值

TRUE

范例

Example #1 OAuth::setToken() 例子

<?php
$oauth = new OAuth(OAUTH_CONSUMER_KEY,OAUTH_CONSUMER_SECRET);
$oauth->setToken("token","token-secret");
?>

OAuth::setTimestamp
OAuth::setVersion
OAuth


设置 OAuth 版本

OAuth::setToken
OAuthProvider
OAuth
PHP Manual

OAuth::setVersion

(PECL OAuth >= 0.99.1)

OAuth::setVersion — 设置 OAuth 版本

说明

public bool OAuth::setVersion ( string $version )

为随后请求设置 OAuth 版本

参数

version

OAuth 版本，默认值为 "1.0"

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

OAuth::setToken
OAuthProvider
OAuth


OAuthProvider 类

(PECL OAuth >= 1.0.0)

简介

管理一个 OAuth 提供者类。

参考一个外部的深入教程 » 写一个 OAuth 提供者服务，用来亲自实践提供服务。也可以参考 OAuth 扩展源代码里的 » OAuth 提供者例子 。

类摘要

OAuthProvider {
/* 方法 */
final public bool addRequiredParameter ( string $req_params )
public void callconsumerHandler ( void )
public void callTimestampNonceHandler ( void )
public void calltokenHandler ( void )
public void checkOAuthRequest ([ string $uri [, string $method ]] )
public __construct ([ array $params_array ] )
public void consumerHandler ( callable $callback_function )
final public static string generateToken ( int $size [, bool $strong = false ] )
public void is2LeggedEndpoint ( mixed $params_array )
public void isRequestTokenEndpoint ( bool $will_issue_request_token )
final public bool removeRequiredParameter ( string $req_params )
final public static string reportProblem ( string $oauthexception [, bool $send_headers = true ] )
final public bool setParam ( string $param_key [, mixed $param_val ] )
final public bool setRequestTokenPath ( string $path )
public void timestampNonceHandler ( callable $callback_function )
public void tokenHandler ( callable $callback_function )
}

Table of Contents

  • OAuthProvider::addRequiredParameter — 添加必需的参数
  • OAuthProvider::callconsumerHandler — 调用 consumerNonceHandler 回调函数
  • OAuthProvider::callTimestampNonceHandler — 调用 timestampNonceHandler 回调函数
  • OAuthProvider::calltokenHandler — 调用 tokenNonceHandler 回调函数
  • OAuthProvider::checkOAuthRequest — 检查一个 oauth 请求
  • OAuthProvider::__construct — 新建一个 OAuthProvider 对象
  • OAuthProvider::consumerHandler — 设置 consumerHandler 句柄回调函数
  • OAuthProvider::generateToken — 生成一个随机令牌
  • OAuthProvider::is2LeggedEndpoint — is2LeggedEndpoint
  • OAuthProvider::isRequestTokenEndpoint — 设置 isRequestTokenEndpoint
  • OAuthProvider::removeRequiredParameter — 移除一个必需的参数
  • OAuthProvider::reportProblem — 报告问题
  • OAuthProvider::setParam — 设置一个参数
  • OAuthProvider::setRequestTokenPath — 设置请求令牌路径
  • OAuthProvider::timestampNonceHandler — 设置 timestampNonceHandler 句柄回调函数
  • OAuthProvider::tokenHandler — 设置 tokenHandler 句柄回调函数
OAuth::setVersion
OAuthProvider::addRequiredParameter
OAuth


添加必需的参数

OAuthProvider
OAuthProvider::callconsumerHandler
OAuthProvider
PHP Manual

OAuthProvider::addRequiredParameter

(PECL OAuth >= 1.0.0)

OAuthProvider::addRequiredParameter — 添加必需的参数

说明

final public bool OAuthProvider::addRequiredParameter ( string $req_params )

添加必需的 oauth 提供者参数。

Warning

本函数还未编写文档，仅有参数列表。

参数

req_params

必需的参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • OAuthProvider::removeRequiredParameter() - 移除一个必需的参数
OAuthProvider
OAuthProvider::callconsumerHandler
OAuthProvider


调用 consumerNonceHandler 回调函数

OAuthProvider::addRequiredParameter
OAuthProvider::callTimestampNonceHandler
OAuthProvider
PHP Manual

OAuthProvider::callconsumerHandler

(No version information available, might only be in Git)

OAuthProvider::callconsumerHandler — 调用 consumerNonceHandler 回调函数

说明

public void OAuthProvider::callconsumerHandler ( void )

调用注册的消费者句柄回调函数，此回调函数通过 OAuthProvider::consumerHandler() 设置。

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

错误／异常

如回调函数无法被调用或未被指定，会引发一个 E_ERROR 级别的错误。

参见

  • OAuthProvider::consumerHandler() - 设置 consumerHandler 句柄回调函数
OAuthProvider::addRequiredParameter
OAuthProvider::callTimestampNonceHandler
OAuthProvider


调用 timestampNonceHandler 回调函数

OAuthProvider::callconsumerHandler
OAuthProvider::calltokenHandler
OAuthProvider
PHP Manual

OAuthProvider::callTimestampNonceHandler

(PECL OAuth >= 1.0.0)

OAuthProvider::callTimestampNonceHandler — 调用 timestampNonceHandler 回调函数

说明

public void OAuthProvider::callTimestampNonceHandler ( void )

调用注册的时间戳句柄回调函数，此回调函数通过 OAuthProvider::timestampNonceHandler() 设置。

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

错误／异常

如回调函数无法被调用或未被指定，会引发一个 E_ERROR 级别的错误。

参见

  • OAuthProvider::timestampNonceHandler() - 设置 timestampNonceHandler 句柄回调函数
OAuthProvider::callconsumerHandler
OAuthProvider::calltokenHandler
OAuthProvider


调用 tokenNonceHandler 回调函数

OAuthProvider::callTimestampNonceHandler
OAuthProvider::checkOAuthRequest
OAuthProvider
PHP Manual

OAuthProvider::calltokenHandler

(PECL OAuth >= 1.0.0)

OAuthProvider::calltokenHandler — 调用 tokenNonceHandler 回调函数

说明

public void OAuthProvider::calltokenHandler ( void )

调用注册的令牌句柄回调函数，此回调函数通过 OAuthProvider::tokenHandler() 设置。

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

没有返回值。

错误／异常

如回调函数无法被调用或未被指定，会引发一个 E_ERROR 级别的错误。

参见

  • OAuthProvider::tokenHandler() - 设置 tokenHandler 句柄回调函数
OAuthProvider::callTimestampNonceHandler
OAuthProvider::checkOAuthRequest
OAuthProvider


检查一个 oauth 请求

OAuthProvider::calltokenHandler
OAuthProvider::__construct
OAuthProvider
PHP Manual

OAuthProvider::checkOAuthRequest

(PECL OAuth >= 1.0.0)

OAuthProvider::checkOAuthRequest — 检查一个 oauth 请求

说明

public void OAuthProvider::checkOAuthRequest ([ string $uri [, string $method ]] )

检查一个 OAuth 请求。

Warning

本函数还未编写文档，仅有参数列表。

参数

uri

可选的 URI 或终点。

method

HTTP 方法。 可选 OAUTH_HTTP_METHOD_* OAuth 常量 其中之一传递。

返回值

没有返回值。

错误／异常

如果不能检测到 HTTP 方法，则发出一个 E_ERROR 级别的错误。

参见

  • OAuthProvider::reportProblem() - 报告问题
OAuthProvider::calltokenHandler
OAuthProvider::__construct
OAuthProvider


新建一个 OAuthProvider 对象

OAuthProvider::checkOAuthRequest
OAuthProvider::consumerHandler
OAuthProvider
PHP Manual

OAuthProvider::__construct

(PECL OAuth >= 1.0.0)

OAuthProvider::__construct — 新建一个 OAuthProvider 对象

说明

public OAuthProvider::__construct ([ array $params_array ] )

发起一个新的 OAuthProvider 对象。

Warning

本函数还未编写文档，仅有参数列表。

参数

params_array

设置限制 CLI SAPI 的可选参数。

返回值

返回一个 OAuthProvider 对象。

范例

Example #1 OAuthProvider::__construct() 例子

<?php
try {

    $op = new OAuthProvider();

    // 使用用户定义的回调函数
    $op->consumerHandler(array($this, 'lookupConsumer'));
    $op->timestampNonceHandler(array($this, 'timestampNonceChecker'));
    $op->tokenHandler(array($this, 'myTokenHandler'));

    // 忽略 foo_uri 参数
    $op->setParam('foo_uri', NULL);

    // 对于终点不需要令牌
    $op->setRequestTokenPath('/v1/oauth/request_token');

    $op->checkOAuthRequest();

} catch (OAuthException $e) {

    echo OAuthProvider::reportProblem($e);
}
?>

参见

  • OAuthProvider::setParam() - 设置一个参数
OAuthProvider::checkOAuthRequest
OAuthProvider::consumerHandler
OAuthProvider


设置 consumerHandler 句柄回调函数

OAuthProvider::__construct
OAuthProvider::generateToken
OAuthProvider
PHP Manual

OAuthProvider::consumerHandler

(PECL OAuth >= 1.0.0)

OAuthProvider::consumerHandler — 设置 consumerHandler 句柄回调函数

说明

public void OAuthProvider::consumerHandler ( callable $callback_function )

设置消费者句柄回调函数，并将在后面通过 OAuthProvider::callConsumerHandler() 被调用。

Warning

本函数还未编写文档，仅有参数列表。

参数

callback_function

回调类型 函数名。

返回值

没有返回值。

范例

Example #1 OAuthProvider::consumerHandler() 回调的例子

<?php
function lookupConsumer($provider) {

    if ($provider->consumer_key === 'unknown') {
        return OAUTH_CONSUMER_KEY_UNKNOWN;
    } else if($provider->consumer_key == 'blacklisted' || $provider->consumer_key === 'throttled') {
        return OAUTH_CONSUMER_KEY_REFUSED;
    }

    $provider->consumer_secret = "the_consumers_secret";

    return OAUTH_OK;
}
?>

参见

  • OAuthProvider::callConsumerHandler() - 调用 consumerNonceHandler 回调函数
OAuthProvider::__construct
OAuthProvider::generateToken
OAuthProvider


生成一个随机令牌

OAuthProvider::consumerHandler
OAuthProvider::is2LeggedEndpoint
OAuthProvider
PHP Manual

OAuthProvider::generateToken

(PECL OAuth >= 1.0.0)

OAuthProvider::generateToken — 生成一个随机令牌

说明

final public static string OAuthProvider::generateToken ( int $size [, bool $strong = false ] )

生成一个伪随机字节的 字符串 。

参数

size

想要的令牌长度，单位为字节。

strong

设置为 TRUE 则意味着将对熵使用 /dev/random ，否则使用非阻塞的 /dev/urandom。在 Windows 平台将忽略此参数。

返回值

生成的令牌，一个以字节为单位的 字符串 。

错误／异常

如果 strong 参数为 TRUE ， 则当回退到用 rand() 来实现填充剩余的随机字节的时候，将触发一个 E_WARNING 级别的错误（比如，当最初找不到足够的随机数据的时候）。

范例

Example #1 OAuthProvider::generateToken() 例子

<?php
$p = new OAuthProvider();

$t = $p->generateToken(4);

echo strlen($t),  PHP_EOL;
echo bin2hex($t), PHP_EOL;

?>

以上例程的输出类似于：

4
b6a82c27

注释

Note:

当系统没有足够的随机数据可用的时候，此函数将使用 PHP 内部的 rand() 来实现填充剩余的随机字节。

参见

  • openssl_random_pseudo_bytes() - Generate a pseudo-random string of bytes
  • mcrypt_create_iv() - 从随机源创建初始向量
OAuthProvider::consumerHandler
OAuthProvider::is2LeggedEndpoint
OAuthProvider


is2LeggedEndpoint

OAuthProvider::generateToken
OAuthProvider::isRequestTokenEndpoint
OAuthProvider
PHP Manual

OAuthProvider::is2LeggedEndpoint

(PECL OAuth >= 1.0.0)

OAuthProvider::is2LeggedEndpoint — is2LeggedEndpoint

说明

public void OAuthProvider::is2LeggedEndpoint ( mixed $params_array )

2-legged 流程，或请求签名。不需要令牌。

Warning

本函数还未编写文档，仅有参数列表。

参数

params_array

返回值

返回一个 OAuthProvider 对象.

范例

Example #1 OAuthProvider::is2LeggedEndpoint() 例子

<?php

$provider = new OAuthProvider();

$provider->is2LeggedEndpoint(true);

?>

参见

  • OAuthProvider::__construct() - 新建一个 OAuthProvider 对象
OAuthProvider::generateToken
OAuthProvider::isRequestTokenEndpoint
OAuthProvider


设置 isRequestTokenEndpoint

OAuthProvider::is2LeggedEndpoint
OAuthProvider::removeRequiredParameter
OAuthProvider
PHP Manual

OAuthProvider::isRequestTokenEndpoint

(PECL OAuth >= 1.0.0)

OAuthProvider::isRequestTokenEndpoint — 设置 isRequestTokenEndpoint

说明

public void OAuthProvider::isRequestTokenEndpoint ( bool $will_issue_request_token )

Warning

本函数还未编写文档，仅有参数列表。

参数

will_issue_request_token

设置是否发布一个请求令牌，从而决定 OAuthProvider::tokenHandler() 是否需要被调用。

返回值

没有返回值。

参见

  • OAuthProvider::setRequestTokenPath() - 设置请求令牌路径
  • OAuthProvider::reportProblem() - 报告问题
OAuthProvider::is2LeggedEndpoint
OAuthProvider::removeRequiredParameter
OAuthProvider


移除一个必需的参数

OAuthProvider::isRequestTokenEndpoint
OAuthProvider::reportProblem
OAuthProvider
PHP Manual

OAuthProvider::removeRequiredParameter

(PECL OAuth >= 1.0.0)

OAuthProvider::removeRequiredParameter — 移除一个必需的参数

说明

final public bool OAuthProvider::removeRequiredParameter ( string $req_params )

移除一个必需的参数。

Warning

本函数还未编写文档，仅有参数列表。

参数

req_params

要被移除的必需参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • OAuthProvider::setParam() - 设置一个参数
  • OAuthProvider::addRequiredParameter() - 添加必需的参数
OAuthProvider::isRequestTokenEndpoint
OAuthProvider::reportProblem
OAuthProvider


报告问题

OAuthProvider::removeRequiredParameter
OAuthProvider::setParam
OAuthProvider
PHP Manual

OAuthProvider::reportProblem

(PECL OAuth >= 1.0.0)

OAuthProvider::reportProblem — 报告问题

说明

final public static string OAuthProvider::reportProblem ( string $oauthexception [, bool $send_headers = true ] )

将问题作为一个 OAuthException 异常传入，可能出现的问题在 OAuth 常量 章节里已列出。

Warning

本函数还未编写文档，仅有参数列表。

参数

oauthexception

OAuthException 类。

返回值

没有返回值。

参见

  • OAuthProvider::checkOAuthRequest() - 检查一个 oauth 请求
  • OAuthProvider::isRequestTokenEndpoint() - 设置 isRequestTokenEndpoint
OAuthProvider::removeRequiredParameter
OAuthProvider::setParam
OAuthProvider


设置一个参数

OAuthProvider::reportProblem
OAuthProvider::setRequestTokenPath
OAuthProvider
PHP Manual

OAuthProvider::setParam

(PECL OAuth >= 1.0.0)

OAuthProvider::setParam — 设置一个参数

说明

final public bool OAuthProvider::setParam ( string $param_key [, mixed $param_val ] )

设置一个参数。

Warning

本函数还未编写文档，仅有参数列表。

参数

param_key

参数的 key 。

param_val

参数的值，此为可选项。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • OAuthProvider::addRequiredParameter() - 添加必需的参数
OAuthProvider::reportProblem
OAuthProvider::setRequestTokenPath
OAuthProvider


设置请求令牌路径

OAuthProvider::setParam
OAuthProvider::timestampNonceHandler
OAuthProvider
PHP Manual

OAuthProvider::setRequestTokenPath

(PECL OAuth >= 1.0.0)

OAuthProvider::setRequestTokenPath — 设置请求令牌路径

说明

final public bool OAuthProvider::setRequestTokenPath ( string $path )

设置请求令牌路径。

Warning

本函数还未编写文档，仅有参数列表。

参数

path

路径。

返回值

TRUE

参见

  • OAuthProvider::tokenHandler() - 设置 tokenHandler 句柄回调函数
OAuthProvider::setParam
OAuthProvider::timestampNonceHandler
OAuthProvider


设置 timestampNonceHandler 句柄回调函数

OAuthProvider::setRequestTokenPath
OAuthProvider::tokenHandler
OAuthProvider
PHP Manual

OAuthProvider::timestampNonceHandler

(PECL OAuth >= 1.0.0)

OAuthProvider::timestampNonceHandler — 设置 timestampNonceHandler 句柄回调函数

说明

public void OAuthProvider::timestampNonceHandler ( callable $callback_function )

设置时间戳 nonce 句柄回调函数，此函数将在后面被 OAuthProvider::callTimestampNonceHandler() 调用。跟时间戳/nonce相关的错误将被抛给此回调函数。

Warning

本函数还未编写文档，仅有参数列表。

参数

callback_function

回调类型 的函数名。

返回值

没有返回值。

范例

Example #1 OAuthProvider::timestampNonceHandler() 回调的例子

<?php
function timestampNonceChecker($provider) {

    if ($provider->nonce === 'bad') {
        return OAUTH_BAD_NONCE;
    } elseif ($provider->timestamp == '0') {
        return OAUTH_BAD_TIMESTAMP;
    }

    return OAUTH_OK;
}
?>

参见

  • OAuthProvider::callTimestampNonceHandler() - 调用 timestampNonceHandler 回调函数
OAuthProvider::setRequestTokenPath
OAuthProvider::tokenHandler
OAuthProvider


设置 tokenHandler 句柄回调函数

OAuthProvider::timestampNonceHandler
OAuthException
OAuthProvider
PHP Manual

OAuthProvider::tokenHandler

(PECL OAuth >= 1.0.0)

OAuthProvider::tokenHandler — 设置 tokenHandler 句柄回调函数

说明

public void OAuthProvider::tokenHandler ( callable $callback_function )

设置令牌句柄的回调函数，此回调函数将在后面被 OAuthProvider::callTokenHandler() 调用。

Warning

本函数还未编写文档，仅有参数列表。

参数

callback_function

回调类型 的函数名。

返回值

没有返回值。

范例

Example #1 OAuthProvider::tokenHandler() 回调的例子

<?php
function tokenHandler($provider) {

    if ($provider->token === 'rejected') {
        return OAUTH_TOKEN_REJECTED;
    } elseif ($provider->token === 'revoked') {
        return OAUTH_TOKEN_REVOKED;
    }

    $provider->token_secret = "the_tokens_secret";
    return OAUTH_OK;
}
?>

参见

  • OAuthProvider::callTokenHandler() - 调用 tokenNonceHandler 回调函数
OAuthProvider::timestampNonceHandler
OAuthException
OAuthProvider


OAuthException 类

(PECL OAuth >= 0.99.1)

简介

当使用 OAuth 扩展发生异常错误时，抛出此异常和包含了一些有用的调试信息。

类摘要

OAuthException extends Exception {
/* 属性 */
public $lastResponse ;
public $debugInfo ;
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}

属性

lastResponse

发生异常时的响应，如果有的话

debugInfo

OAuthProvider::tokenHandler
SCA
OAuth


SCA

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • The structure of a Service Component
    • Obtaining a proxy for another Service Component
    • Calling another Service Component
    • Locating and calling services from a script which is not an SCA Component
    • Exposing a Service Component as a Web service
    • Deploying an SCA component
    • Obtaining the WSDL for an SCA component offering a Service as a Web service
    • Understanding how the WSDL is generated
    • Working with Data Structures
    • Error handling
  • SCA 函数
    • SCA::createDataObject — create an SDO
    • SCA::getService — Obtain a proxy for a service
    • SCA_LocalProxy::createDataObject — create an SDO
    • SCA_SoapProxy::createDataObject — create an SDO
OAuthException
简介
Web 服务


简介

Warning

此扩展是实验性 的。 此扩展的表象，包括其函数名称以及其他此扩展的相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本扩展风险自担 。

SCA for PHP makes it possible for a PHP programmer to write reusable components, which can be called in a variety of ways, with an identical interface and with a minimum of fuss. At present components can call each other either locally or via Web services, but in the future it is expected that other ways will be possible. It provides the programmer with a way of doing this which will look as natural as possible in PHP.

SCA components use phpDocumentor-style (see http://www.phpdoc.org/) annotations to declare dependencies on other SCA components or Web services. The SCA for PHP runtime resolves these dependencies at runtime on behalf of the components, and thus allows the PHP programmer to focus on the business logic rather than on locating and obtaining references to dependencies.

The SCA for PHP programming model can be extended to support a number of service types, such as REST and Atompub. However, Web services (more accurately, WSDL defined, SOAP/HTTP services), are the only type currently specified.

Components also use annotations to define the interface which they expose as a service. The SCA for PHP runtime will automatically generate WSDL from these annotations, so that an SCA component is easily exposed as a web service. These annotations are a natural extension to those provided by phpDocumentor. Deploying a Web service can be as simple as placing a PHP component under the document root of a web server.

Components also use annotations to specify data structures (expressed using XML schema complex types) which are then handled using Service Data Objects (SDOs).

A PHP script which is not an SCA component and which contains no annotations can use the services of an SCA component. A PHP script or component can make calls to a web service that is not an SCA component, but using the same system of calls or annotations to obtain a reference.

First we show a single SCA component, ConvertedStockQuote which illustrates many of the features of SCA for PHP. It has one method, getQuote(), which given a stock "ticker" obtains a price quote for that stock, converted to a given currency. We shall be using this example as a basis for explaining the SCA for PHP throughout the rest of this document.

Example #1 A sample SCA component

<?php

include "SCA/SCA.php";

/**
 * Calculate a stock price for a given ticker symbol in a given currency.
 *
 * @service
 * @binding.soap
 */
class ConvertedStockQuote {

    /**
     * The currency exchange rate service to use.
     *
     * @reference
     * @binding.php ../ExchangeRate/ExchangeRate.php
     */
    public $exchange_rate;

    /**
     * The stock quote service to use.
     *
     * @reference
     * @binding.soap ../StockQuote/StockQuote.wsdl
     */
    public $stock_quote;

    /**
     * Get a stock quote for a given ticker symbol in a given currency.
     *
     * @param string $ticker The ticker symbol.
     * @param string $currency What currency to convert the value to.
     * @return float The stock value is the target currency.
     */
    function getQuote($ticker, $currency)
    {
        $quote  = $this->stock_quote->getQuote($ticker);
        $rate   = $this->exchange_rate->getRate($currency);
        return  $rate * $quote;
    }
}
?>

In this example, we see that an SCA component is implemented by a script containing a PHP class and includes SCA.php. The class contains a mixture of business logic and references to other components or services. In the illustrated getQuote() method there is only business logic, but it relies on the instance variables $stock_quote and $exchange_rate having been initialized. These refer to two other components and will be initialized by the SCA runtime with proxies for these two services, whenever this component executes. The annotations for these two services show one to be a local component, which will be called within the same PHP runtime, and one to be a remote component which will be called via a SOAP request. This component also exposes the getQuote() method both locally and as a web service, so it in turn can be called either locally or remotely.

SCA
安装／配置
SCA


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
SCA


需求

If you want to use SCA to consume or produce Web services then you need PHP 5.2.0 or later, built with the soap extension enabled. If you just want to use local components, and do not wish to use the Web service bindings, then this version of SCA for PHP will also run with PHP 5.1.6.

SCA is packaged along with SDO in one combined package on PECL. See http://www.php.net/sdo#sdo.installation for installing the SCA_SDO package from PECL. The SCA code must be on the include path of your PHP installation, for example if it is installed as /usr/local/lib/php/SCA, the include_path directive must include /usr/local/lib/php

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/sca.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
范例
SCA


范例

Table of Contents

  • The structure of a Service Component
  • Obtaining a proxy for another Service Component
  • Calling another Service Component
  • Locating and calling services from a script which is not an SCA Component
  • Exposing a Service Component as a Web service
  • Deploying an SCA component
  • Obtaining the WSDL for an SCA component offering a Service as a Web service
  • Understanding how the WSDL is generated
  • Working with Data Structures
  • Error handling

The examples in the subsequent sections illustrate the following aspects of PHP for SCA:

  • How PHP annotations are used to define PHP classes as SCA components, and how annotations are used to define the services.

  • How an SCA component can be exposed as a Web service

  • How an SCA component can consume a Web service, whether provided by another SCA component or by some other service which knows nothing of SCA

  • How an SCA component can call another SCA component locally (within the same process and on the same call stack)

  • How a client script which is not an SCA component can use the getService call to obtain a proxy for an SCA component.

  • How data structures such as Addresses, or Puchase Orders, are represented as Service Data Objects, and handled.

  • How SCA components are deployed, and in particular how and when WSDL is generated for a service.

  • How parameters are always passed by value (and not by reference) between components, even when the calls are local. This ensures that the semantics of a call do not change depending on the location of a component.

  • How positional parameters to a service are supported, even when the underlying WSDL is document literal wrapped, and naturally supports only named parameters.

  • How business and runtime exceptions are handled.

预定义常量
The structure of a Service Component
SCA


The structure of a Service Component

A service component is implemented by a class. To identify it as a service component, it contains an @service annotation. The SCA runtime will use the file name of the script to determine the component name, by convention. The class and script file must therefore share the same name.

PHP SCA components always expose a service, and there is no way for a component to be invoked other than to be called as a result of a Web service request, or called directly from another component or from a script. For this reason a valid PHP SCA component will always contain an @service annotation and at least one public method.

Each SCA Component requires that the SCA.php script is included. As well as containing the definition of the SCA class, this script contains executable PHP code that will run whenever the script is called, and which will be responsible for making the component behave as needed.

Caution

It is very important that if your file contains other includes, they come before the include for SCA.php. If there are includes after the include for SCA.php, they will not have been processed when the SCA runtime runs your class.

The example below illustrates this overall structure

Example #1 The structure of an SCA for PHP component

<?php

// any includes

include "SCA/SCA.php";

/**
 * @service
 */

class ConvertedStockQuote {

       // instance variables, business logic, including at least one public method

}
?>

范例
Obtaining a proxy for another Service Component
范例


Obtaining a proxy for another Service Component

One SCA component can call the service provided by another SCA component. The service a component provides is made up of all of its public methods. SCA for PHP currently provides two ways for one component to call another: either locally (i.e. within the same PHP run-time, and on the same call stack) or remotely if the called component exposes a Web service binding.

In order for one component to call another, the calling component needs a proxy for the called component. This proxy is usually provided as an instance variable in the calling component, though proxies can also be obtained with the SCA::getService() call, as we shall see later. When a component is constructed, proxies are constructed for any instance variable which refer to another component, and these proxies are "injected" into the instance variables. Proxies are always used, whether the component is local or remote, in order to provide identical calling behavior between remote and local calls (for example, local calls are made to always pass data by-value). The proxies know how to locate the required component and to pass the calls made on to them.

Instance variables which are intended to hold proxies for services are indicated by the two PHPDocumentor-style annotations, @reference and @binding. Both annotations are placed in the documentation section for a class instance variable, as shown by the code below.

The @reference annotation before an instance variable indicates that the instance variable is to be initialized with a proxy to a component.

The @binding annotation has two forms @binding.php and @binding.soap, and indicates that the proxy is either for a local component or for a Web service respectively. For both @binding.php and @binding.soap, the annotation gives a target URI.

At the moment, with the annotation-based method of specifying dependencies, the only way to alter the intended target of a reference is to alter the annotation within the component.

In our ConvertedStockQuote example, the $exchange_rate instance variable will be initialized with a proxy to the local ExchangeRate component whenever an instance of the ConvertedStockQuote is constructed.

Example #1 Obtaining a proxy for a local PHP class

<?php
   /**
     * The currency exchange rate service to use.
     *
     * @reference
     * @binding.php ../ExchangeRate/ExchangeRate.php
     */
    public $exchange_rate;
?>

For @binding.php, the URI identifies the location of the script containing the implementation of the component. The component will be called locally. The service provided is the set of public methods of the component. The URI must be a simple pathname, either absolute or relative. The component will be loaded with the PHP include directive, after testing to see if it is already loaded with class_exists(). If the URI is a relative path, it is resolved relative to the component containing the annotation. Note that this is different from the normal PHP behaviour where scripts would be looked for along the PHP include_path, This is intended to provide some location-independence for cross-component references.

If this ExchangeRate service were remote and to be called as a Web service, only the @binding line changes. Instead of giving the location of a PHP class, it gives the location of the WSDL describing the web service. In our example component, this is illustrated by the second reference:

Example #2 Obtaining a proxy for a web service

<?php
/**
     * The stock quote service to use.
     *
     * @reference
     * @binding.soap ../StockQuote/StockQuote.wsdl
     */
    public $stock_quote;
?>

The StockQuote component will be called via a Web service request. In this case the URI for the WSDL can be a simple pathname, or may contain a PHP wrapper and begin, for example, with file:// or http://. In the event that it is a simple pathname, it can be absolute or relative, and if relative will be resolved relative to the component containing the annotation. Note that this is like the behaviour for @binding.php, and different from the normal PHP behaviour where the file would be looked for relative to the PHP current working directory, which would usually be the location of the first script to be called. This behaviour is intended to give consistency across the different bindings and to provide some location-independence for references between components.

The structure of a Service Component
Calling another Service Component
范例


Calling another Service Component

The ConvertedStockQuote example also calls the proxies for the two components to which it refers.

Example #1 Calling services

<?php
$quote  = $this->stock_quote->getQuote($ticker);
$rate   = $this->exchange_rate->getRate($currency);
?>

The call to the StockQuote service is a call to a local service; the call to the ExchangeRate service is a call to a remote service. Note that the way the call is made looks the same regardless of whether the call is to a local service or a remote one.

The proxies which have been injected ensure that the way calls to components look and behave are the same way regardless of whether they are to a local or remote service, so that components are not sensitive to whether a call is to a local or a remote service. For example, the proxy for a local service takes copies of the arguments and passes only those copies, to ensure that calls are made to be pass-by-value, as they would be for a remote call. Also, the proxy for a remote service takes the arguments from a positional parameter list and ensures they are packaged properly in a SOAP request and converted back to a positional parameter list at the far end.

In the example above, the $ticker and $currency are clearly PHP scalar types. Components can pass the PHP scalar types string, integer, float and boolean, but data structures on service calls are always passed as Service Data Objects (SDOs). A later section describes how a component can create an SDO to pass on a local or Web service call, or how a component can create an SDO to return. The PHP SDO project documentation describes how to work with the SDO APIs (see the SDO pages).

Obtaining a proxy for another Service Component
Locating and calling services from a script which is not an SCA Component
范例


Locating and calling services from a script which is not an SCA Component

SCA components obtain proxies for other components or services as instance variables annotated with @reference, but this is not possible for a script that is not itself also a component. A client script which is not a component must use the SCA::getService() static method to obtain a proxy for a service, whether local or remote. The getService() method takes a URI as the argument. Typically this is the location of a local PHP script containing a component, or of a wsdl file, and is used in exactly the same way as the targets of the @binding annotations described in the previous section: that is, relative URIs are resolved against the location of the client script and not against the PHP include_path or current working directory.

For example, a script that needed to obtain proxies for the ExchangeRate and StockQuote services but was not a component would use the getService() method as follows:

Example #1 Obtaining a proxy using getService

<?php
$exchange_rate = SCA::getService('../ExchangeRate/ExchangeRate.php');
$stock_quote   = SCA::getService('../StockQuote/StockQuote.wsdl');
?>

Methods on services can then be called on the returned proxy, just as they can in a component.

Example #2 Making calls on the proxy

<?php
$quote  = $stock_quote->getQuote($ticker);
$rate   = $exchange_rate->getRate($currency);
?>

Calling another Service Component
Exposing a Service Component as a Web service
范例


Exposing a Service Component as a Web service

SCA for PHP can generate WSDL from the annotations within a service component, so that it can be easily deployed and exposed as a Web service. To provide SCA with the information it needs to generate the WSDL, it is necessary to add the annotation @binding.soap under the @service annotation and to specify the parameters and return values of the methods using the @param and @return annotations. These annotations will be read when WSDL is generated, and the order and types of the parameters determine the contents of the <schema> section of the WSDL.

SCA for PHP always generates document/literal wrapped WSDL for components that are exposing a Web service. Note that this does not stop components from consuming Web services which are not SCA components and which are documented with WSDL written in a different style.

The scalar types which can be used in the @param annotation are the four common PHP scalar types: boolean, integer, float and string. These are simply mapped to the XML schema types of the same name in the WSDL. The example below, which is a trivial implementation of the StockQuote service that the ConvertedStockQuote component calls, illustrates string and float types.

Example #1 StockQuote Service

<?php

include "SCA/SCA.php";

/**
 * Scaffold implementation for a remote StockQuote Web service.
 *
 * @service
 * @binding.soap
 *
 */
class StockQuote {

    /**
     * Get a stock quote for a given ticker symbol.
     *
     * @param string $ticker The ticker symbol.
     * @return float The stock quote.
     */
    function getQuote($ticker) {
        return 80.9;
  }
}
?>

WSDL much like the following (though with a service location other than 'localhost', probably) would be generated from this service:

Example #2 Generated WSDL

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xsi:type="tDefinitions"
    xmlns:tns2="http://StockQuote" xmlns:tns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:tns3="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://StockQuote">
  <types>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
      targetNamespace="http://StockQuote">
      <xs:element name="getQuote">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ticker" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="getQuoteResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="getQuoteReturn" type="xs:float"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>
  </types>

  <message name="getQuoteRequest">
    <part name="getQuoteRequest" element="tns2:getQuote"/>
  </message>
  <message name="getQuoteResponse">
    <part name="return" element="tns2:getQuoteResponse"/>
  </message>
  <portType name="StockQuotePortType">
    <operation name="getQuote">
      <input message="tns2:getQuoteRequest"/>
      <output message="tns2:getQuoteResponse"/>
    </operation>
  </portType>
  <binding name="StockQuoteBinding" type="tns2:StockQuotePortType">
    <operation name="getQuote">
      <input>
        <tns3:body xsi:type="tBody" use="literal"/>
      </input>
      <output>
        <tns3:body xsi:type="tBody" use="literal"/>
      </output>
      <tns3:operation xsi:type="tOperation" soapAction=""/>
    </operation>
    <tns3:binding xsi:type="tBinding" transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
  </binding>
  <service name="StockQuoteService">
    <port name="StockQuotePort" binding="tns2:StockQuoteBinding">
      <tns3:address xsi:type="tAddress" location="http://localhost/StockQuote/StockQuote.php"/>
    </port>
  </service>
</definitions>

<!-- this line identifies this file as WSDL generated by SCA for PHP. Do not remove -->

Locating and calling services from a script which is not an SCA Component
Deploying an SCA component
范例


Deploying an SCA component

There are no special steps needed to deploy a PHP SCA component. It is sufficient to place the component PHP script in its proper place under the web server document root, just like any other PHP script. It is the SCA::initComponent() executable line within each component that will be executed whenever the script is called, and which will be responsible for making the component respond appropriately to Web service calls, local calls, or requests for WSDL.

Exposing a Service Component as a Web service
Obtaining the WSDL for an SCA component offering a Service as a Web service
范例


Obtaining the WSDL for an SCA component offering a Service as a Web service

SCA components that expose a Web service interface (i.e. have an @binding.soap annotation) will return their WSDL definition in response to an HTTP request with a get parameter of "wsdl". The usual way to obtain this is with "?wsdl" on the end of a URL. The example below uses file_get_contents() to obtain WSDL from a service and writes it to a temporary file before then obtaining a proxy for the service in the usual way. You could of course also obtain the WSDL in a browser, or by some other means, and save the file yourself.

Example #1 Generated WSDL

<?php
$wsdl = file_get_contents('http://www.example.com/Services/Example.php?wsdl');
file_put_contents("service.wsdl",$wsdl); //write the wsdl to a file
$service = SCA::getService('service.wsdl');
?>

NOTE: If the wsdl requires imported xsds, these will need to be fetched separately.

Deploying an SCA component
Understanding how the WSDL is generated
范例


Understanding how the WSDL is generated

SCA for PHP generates WSDL for components which contain an @binding.soap annotation after the @service annotation. To generate WSDL, the SCA runtime reflects on the component and examines the @param and @return annotations for each public method, as well as any @types annotations within the component. The information from the @param and @return annotations is used to build the <types> section of the WSDL. Any @types annotations which specify a separate schema file will result in an <import> element for that schema within the WSDL.

Location attribute of the <service> element

At the bottom of the WSDL is the <service> element which uses the location attribute to identify the URL of the service. For example this might look as follows:

Example #1 location attribute

<service name="ConvertedStockQuote"
...
location="http://localhost/ConvertedStockQuote/ConvertedStockQuote.php"/>

Note that this location is relative to the document root of the web server, and cannot be worked out in advance. It can only be worked out once the component is in its proper place under a running web server, when the hostname and port can be known and placed in the WSDL. Detail from the URL that requests the WSDL is used, so for example if the WSDL is generated in response to a request to http://www.example.com:1111/ConvertedStockQuote/ConvertedStockQuote.php?wsdl, a location of http://www.example.com:1111/ConvertedStockQuote/ConvertedStockQuote.php is what will be inserted into the location attribute in the WSDL.

Document/literal wrapped WSDL and positional parameters

SCA for PHP generates WSDL in the document/literal wrapped style. This style encloses the parameters and return types of a method in 'wrappers' which are named after the corresponding method. The <types> element at the top of the WSDL defines each of these wrappers. If we consider the getQuote() method of the ConvertedStockQuote example:

Example #2 method with two arguments

<?php
   /**
     * Get a stock quote for a given ticker symbol in a given currency.
     *
     * @param string $ticker The ticker symbol.
     * @param string $currency What currency to convert the value to.
     * @return float The stock value is the target currency.
     */
    function getQuote($ticker, $currency)
    {
        $quote  = $this->stock_quote->getQuote($ticker);
        $rate   = $this->exchange_rate->getRate($currency);
        return  $rate * $quote;
    }
?>

The WSDL generated to define this method will name both the method and the parameters, and give an XML schema type for the parameters. The types section of the WSDL looks like this:

Example #3 types section illustrating named parameters

<types>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
      targetNamespace="http://ConvertedStockQuote">
      <xs:element name="getQuote">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ticker" type="xs:string"/>
            <xs:element name="currency" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="getQuoteResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="getQuoteReturn" type="xs:float"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>
  </types>

The SCA run-time has special processing to handle how positional parameter lists in the interface are converted to XML containing named parameters in the soap request, and then back to positional parameter lists again. To see why this matters, consider how a PHP script which used a different interface to make a SOAP call would need to construct the parameter list. A PHP script using the PHP SoapClient, for example, would need to pass the SoapClient a single parameter giving the values for "ticker" and "currency", perhaps as an associative array. To insist that SCA components construct parameter lists to make Web service calls in this way would be to make local and remote calls look different, so a different approach is needed.

When SCA generates WSDL for an SCA component it includes a comment in the WSDL which marks that WSDL as being the interface for an SCA component. In this case, when one SCA component calls another through a Web service, the SCA runtime on the calling end takes the positional parameter list from the call and assigns the values one by one to the named elements in the soap message. For example a call to the getQuote() method defined above that passes the values 'IBM' and 'USD' and looks like this:

<?php
  $quote = $remote_service->getQuote('IBM','USD');
?>

will result in a soap message containing the following:

<getQuote>
  <ticker>IBM</ticker>
  <currency>USD</currency>
</getQuote>

On the service-providing end, the SCA run-time takes the parameters one by one from the soap message and forms a positional parameter list from them, re-forming the argument list ('IBM','USD').

Caution

At both ends the SCA runtime relies on the order in which the parameters appear in the soap message being the same as that in the target method's parameter list. This is ultimately determined by the order of the @param annotations: this determines the order in which the parameters appear in the WSDL and thereby the order in which they appear in the soap message. Therefore it is essential that the order of the @param annotations matches that of the parameters in the method's parameter list.

Obtaining the WSDL for an SCA component offering a Service as a Web service
Working with Data Structures
范例


Working with Data Structures

SCA components can pass and return the four PHP scalar types boolean, integer, float and string, but to pass or return data structures, SCA components use Service Data Objects (SDOs). SDOs are described in much more detail in the SDO pages of this manual. Readers familiar with SDOs will know that they are suitable for representing the sort of structured and semi-structured data that is frequently modeled in XML, and that they serialize very naturally for passing between remote components, or in Web services. SDOs are presently the only supported way to pass and return data structures. It is not possible to pass or return PHP objects, or PHP arrays.

The SCA runtime always assures data is passed by-value, even for local calls. To do this, the SCA runtime copies any SDOs in the parameter list before passing them on, just as it does for scalar types.

How data structures are defined to SCA components

Currently the only mechanism for specifying the location of a data structure definition is by specifying the types in an XML schema file. However, in the future it may be possible to define types in other ways, such as based on PHP classes or interfaces, or based on definitions expressed as associative arrays.

To illustrate the use of SDOs we introduce a new component. The PortfolioMangement service below returns an SDO representing a stock portfolio for a given customer.

Example #1 A Component that uses Data Structures

<?php

include "SCA/SCA.php";

/**
 * Manage the portfolio for a customer.
 *
 * @service
 * @binding.soap
 *
 * @types http://www.example.org/Portfolio PortfolioTypes.xsd
 *
 */
class PortfolioManagement {

    /**
     * Get the stock portfolio for a given customer.
     *
     * @param integer $customer_id The id for the customer
     * @return Portfolio http://www.example.org/Portfolio The stock portfolio (symbols and quantities)
     */
    function getPortfolio($customer_id) {
        // Pretend we just got this from a database
        $portfolio = SCA::createDataObject('http://www.example.org/Portfolio', 'Portfolio');
        $holding = $portfolio->createDataObject('holding');
        $holding->ticker = 'AAPL';
        $holding->number = 100.5;
        $holding = $portfolio->createDataObject('holding');
        $holding->ticker = 'INTL';
        $holding->number = 100.5;
        $holding = $portfolio->createDataObject('holding');
        $holding->ticker = 'IBM';
        $holding->number = 100.5;
        return $portfolio;
    }

}
?>

The @types annotation:

<?php
@types http://www.example.org/Portfolio PortfolioTypes.xsd
?>

indicates that types in the namespace http://www.example.org/Portfolio will be found in the schema file located by the URI PortfolioTypes.xsd. The generated WSDL would reproduce this information with an import statement as follows:

<xs:import schemaLocation="PortfolioTypes.xsd"
                      namespace="http://www.example.org/Portfolio"/>

so the URI, absolute or relative, must be one that can be resolved when included in the schemaLocation attribute.

Creating SDOs

Readers familiar with SDOs will know that they are always created according to a description of the permitted structure (sometimes referred to as the 'schema' or 'model') and that, rather than creating them directly using 'new', some form of data factory is needed. Often, an existing data object can be used as the data factory, but sometimes, and especially in order to get the first data object, something else must act as the data factory.

In SCA, either the SCA runtime class or the proxies for services, whether local or remote, can act as the data factories for SDOs. The choice of which to use, and when, is described in the next two sections.

We switch to a new example in order to illustrate the creation of SDOs, both to pass to a service, and to be returned from a service.

Creating an SDO to pass to a service

A caller of a service which requires a data structure to be passed in to it uses the proxy to the service as the data factory for the corresponding SDOs. For example, suppose a component makes use of a proxy for a service provided by a local AddressBook component.

<?php
/**
 * @reference
 * @binding.local AddressBook.php
 */
$address_book;
?>

The AddressBook component that it wishes to call is defined as follows:

<?php
/**
* @service
* @binding.soap
* @types http://addressbook ../AddressBook/AddressBook.xsd
*/
class AddressBook {

    /**
     * @param personType $person http://addressbook (a person object)
     * @return addressType http://addressbook (the address object for the person object)
     */
    function lookupAddress($person)  {
        ...
    }
}
?>

The AddressBook component provides a service method called lookupAddress() which uses types from the http://addressbook namespace. The lookupAddress method takes a personType data structure and returns an addressType. Both types are defined in the schema file addressbook.xsd.

Once the component that wishes to use the AddressBook component has been constructed, so that the $address_book instance variable contains a proxy for the service, the calling component can use the proxy in $address_book to create the person SDO, as shown below:

<?php
$william_shakespeare        = $address_book->createDataObject('http://addressbook','personType');
$william_shakespeare ->name = "William Shakespeare";
$address                    = $address_book->lookupAddress($william_shakespeare);
?>

Note, the use of the proxy as the means to create the SDO is not limited to SCA components. If a service is being called from a general PHP script, and the proxy was obtained with getService() then the same approach is used.

<?php
$address_book = SCA::getService('AddressBook.php');
$william_shakespeare = $address_book->createDataObject('http://addressbook','personType');
?>

Creating an SDO to return from a component

A component that needs to create a data object for return to a caller will not have a proxy to use as a data object, In this case it uses the createDataObject() static method on SCA.php. Hence if the AddressBook component described above needed to create an object of type addressType within the namespace http://addressbook, it might do so as follows:

<?php
$address = SCA::createDataObject('http://addressbook','addressType');
?>

Understanding how the WSDL is generated
Error handling
范例


Error handling

This section describes how errors are handled. There are two types of errors:

  • SCA runtime exceptions are those that signal problems in the management of the execution of components, and in the interaction with remote services. These might occur due to network or configuration problems.

  • Business exceptions are those that are defined by the programmer. They extend the PHP Exception class, and are thrown and caught deliberately as part of the business logic.

Handling of Runtime exceptions

There are two types of SCA runtime exception:

  • SCA_RuntimeException - signals a problem found by or perhaps occurring within the SCA runtime. This can be thrown for a variety of reasons, many of which can occur regardless of whether a connection is being made to a local or a remote service: an error in one of the annotations within a component, a missing WSDL or php file, and so on. In the case of Web services, an SCA_RuntimeException can also be thrown if a SoapFault is received from a remote Web service and the fault code in the SoapFault indicates that a retry is unlikely to be successful.

  • SCA_ServiceUnavailableException - this is a subclass of SCA_RuntimeException and signals a problem in connecting to or using a remote service, but one which might succeed if retried. In the case of Web services, this exception is thrown if a SoapFault is received with a fault code that indicates that a retry might be successful.

Handling of Business exceptions

Business exceptions may be defined and thrown by a component in the normal way, regardless of whether the component has been called locally or remotely. The SCA runtime does not catch business exceptions that have been thrown by a component called locally, so they will be returned to a caller in the normal way. If a component has been called via a Web service, on the other hand, the SCA runtime on the service providing end does catch business exceptions, and will ensure these are passed back to the calling end and re-thrown. Assuming that the calling end has a definition of the exception (that is, is able to include a file containing the PHP class defining the exception) the re-thrown exception will contain the same details as the original, so that the getLine() and getFile() methods for example will contain the location where the exception was thrown within the business logic. The exception will be passed in the detail field of a soap fault with a fault code of "Client".

Working with Data Structures
SCA 函数
范例


Error handling
SCA::createDataObject
SCA
PHP Manual

SCA 函数

预定义类

Most of the interface to SCA is through the annotations within SCA components so there are few public classes and methods. The only SCA classes that scripts or components can call are the SCA class itself, and the proxy classes SCA_LocalProxy and SCA_SoapProxy.

SCA

Much of the work of the SCA class is performed when the file SCA.php is included within an SCA component. However, a PHP script may include SCA.php and call the getService() method on the SCA class in order to obtain a proxy for a service. A component will not need to do this as proxies are obtained instead by defining an instance variable with the @reference annotation.

Components that need to create an SDO to return to a caller will need a data factory to call. For this purpose the SCA class supports the createDataObject() method, which will create an SDO according to the model defined by the component's @types annotations. The arguments to createDataObject() are the same as those to SDO's XML Data Access Service.

方法

  • getService - obtain a proxy for a service

  • createDataObject - create an SDO

SCA_LocalProxy

When getService() is called with the target of a local PHP component, a local proxy is returned. A local proxy is also injected into the instance variables of a component that are defined with an @reference and an @binding.php anotation. When the script or component makes calls on the local proxy, they are passed on to the target component itself.

Components that need to create an SDO to pass to a component will need a data factory to call. For this purpose the SCA_LocalProxy class supports the createDataObject() method, which will create an SDO according to the model defined by the components' @types annotations. The arguments to the createDataObject() are the same as those to SDO's XML Data Access Service.

方法

  • createDataObject - create an SDO

SCA_SoapProxy

When getService() is called with the target of a WSDL file, a SOAP proxy is returned. A SOAP proxy is also injected into the instance variables of a component that are defined with an @reference and an @binding.soap anotations. When the script or component makes calls on the SOAP proxy, they are formed into Web service SOAP requests and passed on to the target component, with the help of the PHP Soap extension.

Components that need to create an SDO to pass to a component will need a data factory to call. For this purpose the SCA_SoapProxy class supports the createDataObject() method, which will create an SDO according to the model defined within the target WSDL. The arguments to the createDataObject() are the same as those to SDO's XML Data Access Service.

方法

  • createDataObject - create an SDO

Table of Contents

  • SCA::createDataObject — create an SDO
  • SCA::getService — Obtain a proxy for a service
  • SCA_LocalProxy::createDataObject — create an SDO
  • SCA_SoapProxy::createDataObject — create an SDO
Error handling
SCA::createDataObject
SCA
PHP Manual


create an SDO

SCA 函数
SCA::getService
SCA 函数
PHP Manual

SCA::createDataObject

(PECL SDO >= 0.5.0)

SCA::createDataObject — create an SDO

说明

SDO_DataObject SCA::createDataObject ( string $type_namespace_uri , string $type_name )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

This method is used inside an SCA component that needs to create an SDO to return. The parameters are the desired SDO's namespace URI and type name. The namespace and type must be defined in one of the schema files which are specified on the @types annotation within the component.

参数

type_namespace_uri

The namespace of the type.

type_name

The name of the type.

返回值

Returns the newly created SDO_DataObject.

错误／异常

SDO_TypeNotFoundException

Thrown if the namespaceURI and typeName do not correspond to a type in any of the schema files specified in the @types annotations.

SCA 函数
SCA::getService
SCA 函数


Obtain a proxy for a service

SCA::createDataObject
SCA_LocalProxy::createDataObject
SCA 函数
PHP Manual

SCA::getService

(PECL SDO >= 0.5.0)

SCA::getService — Obtain a proxy for a service

说明

mixed SCA::getService ( string $target [, string $binding [, array $config ]] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Examine the target and initialize and return a proxy of the appropriate sort. If the target is for a local PHP component the returned proxy will be an SCA_LocalProxy. If the target is for a WSDL file, the returned proxy will be a SCA_SoapProxy.

参数

target

An absolute or relative path to the target service or service description (e.g. a URL to a json-rpc service description, a PHP component, a WSDL file, and so on.). A relative path, if specified, is resolved relative to the location of the script issuing the getService() call, and not against the include_path or current working directory.

binding

The binding (i.e. protocol) to use to communicate with the service (e.g binding.jsonrpc for a json-rpc service). Note, some service types can be deduced from the target parameter (e.g. if the target parameter ends in .wsdl then SCA will assume binding.soap). Any binding which can be specified in an annotation can be specified here. For example 'binding.soap' is equivalent to the '@binding.soap' annotation.

config

Any additional configuration properties for the binding (e.g. array('location' => 'http://example.org')). Any binding configuration which can be specified in an annotation can be specified here. For example, 'location' is equivalent to the '@location' annotation to configure the location of a target soap service.

返回值

The SCA_LocalProxy or SCA_SoapProxy.

范例

Example #1 An SCA::getService() example

This example shows how to get a proxy to an email soap service described by EmailService.wsdl and located at http://example.org.

<?php
include 'SCA/SCA.php';
$service = SCA::getService('EmailService.wsdl', 'binding.soap', array('location' => 'http://example.org'));
$service->send(...);
?>

以上例程会输出：

SCA::createDataObject
SCA_LocalProxy::createDataObject
SCA 函数


create an SDO

SCA::getService
SCA_SoapProxy::createDataObject
SCA 函数
PHP Manual

SCA_LocalProxy::createDataObject

(PECL SDO >= 0.5.0)

SCA_LocalProxy::createDataObject — create an SDO

说明

SDO_DataObject SCA_LocalProxy::createDataObject ( string $type_namespace_uri , string $type_name )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

This method is used inside either an ordinary PHP script or an SCA component that needs to create an SDO to pass to a local service. The parameters are the desired SDO's namespace URI and type name. The namespace and type must be defined in the interface of the component that is to be called, so the namespace and type must be defined in one of the schema files which are specified on the @types annotation within the component for which the SCA_LocalProxy object is a proxy.

参数

type_namespace_uri

The namespace of the type.

type_name

The name of the type.

返回值

Returns the newly created SDO_DataObject.

错误／异常

SDO_TypeNotFoundException

Thrown if the namespaceURI and typeName do not correspond to a type in any of the schema files specified in the @types annotations within the component for which the SCA_LocalProxy object is a proxy..

SCA::getService
SCA_SoapProxy::createDataObject
SCA 函数


create an SDO

SCA_LocalProxy::createDataObject
SOAP
SCA 函数
PHP Manual

SCA_SoapProxy::createDataObject

(PECL SDO >= 0.5.0)

SCA_SoapProxy::createDataObject — create an SDO

说明

SDO_DataObject SCA_SoapProxy::createDataObject ( string $type_namespace_uri , string $type_name )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

This method is used inside either an ordinary PHP script or an SCA component that needs to create an SDO to pass to a web service. The parameters are the desired SDO's namespace URI and type name. The namespace and type must be defined in the interface of the component that is to be called, so the namespace and type must be defined within the WSDL for the web service. If the web service is also an SCA component then the types will have been defined within one of the schema files which are specified on the @types annotation within the component for which the SCA_SoapProxy object is a proxy.

参数

type_namespace_uri

The namespace of the type.

type_name

The name of the type.

返回值

Returns the newly created SDO_DataObject.

错误／异常

SDO_TypeNotFoundException

Thrown if the namespaceURI and typeName do not correspond to a type found in the WSDL that was used to initialise this SCA_SoapProxy.

SCA_LocalProxy::createDataObject
SOAP
SCA 函数


SOAP

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • SOAP 函数
    • is_soap_fault — Checks if a SOAP call has failed
    • use_soap_error_handler — Set whether to use the SOAP error handler
  • SoapClient — The SoapClient class
    • SoapClient::__call — Calls a SOAP function (deprecated)
    • SoapClient::__construct — SoapClient constructor
    • SoapClient::__doRequest — Performs a SOAP request
    • SoapClient::__getFunctions — Returns list of available SOAP functions
    • SoapClient::__getLastRequest — Returns last SOAP request
    • SoapClient::__getLastRequestHeaders — Returns the SOAP headers from the last request
    • SoapClient::__getLastResponse — Returns last SOAP response
    • SoapClient::__getLastResponseHeaders — Returns the SOAP headers from the last response
    • SoapClient::__getTypes — Returns a list of SOAP types
    • SoapClient::__setCookie — The __setCookie purpose
    • SoapClient::__setLocation — Sets the location of the Web service to use
    • SoapClient::__setSoapHeaders — Sets SOAP headers for subsequent calls
    • SoapClient::__soapCall — Calls a SOAP function
    • SoapClient::SoapClient — SoapClient constructor
  • SoapServer — The SoapServer class
    • SoapServer::addFunction — 添加一个或多个函数来处理SOAP请求
    • SoapServer::addSoapHeader — Add a SOAP header to the response
    • SoapServer::__construct — SoapServer constructor
    • SoapServer::fault — Issue SoapServer fault indicating an error
    • SoapServer::getFunctions — Returns list of defined functions
    • SoapServer::handle — Handles a SOAP request
    • SoapServer::setClass — Sets the class which handles SOAP requests
    • SoapServer::setObject — Sets the object which will be used to handle SOAP requests
    • SoapServer::setPersistence — Sets SoapServer persistence mode
    • SoapServer::SoapServer — SoapServer constructor
  • SoapFault — The SoapFault class
    • SoapFault::__construct — SoapFault constructor
    • SoapFault::SoapFault — SoapFault constructor
    • SoapFault::__toString — Obtain a string representation of a SoapFault
  • SoapHeader — The SoapHeader class
    • SoapHeader::__construct — SoapHeader constructor
    • SoapHeader::SoapHeader — SoapHeader constructor
  • SoapParam — The SoapParam class
    • SoapParam::__construct — SoapParam constructor
    • SoapParam::SoapParam — SoapParam constructor
  • SoapVar — The SoapVar class
    • SoapVar::__construct — SoapVar constructor
    • SoapVar::SoapVar — SoapVar constructor
SCA_SoapProxy::createDataObject
简介
Web 服务


简介

The SOAP extension can be used to write SOAP Servers and Clients. It supports subsets of » SOAP 1.1, » SOAP 1.2 and » WSDL 1.1 specifications.

SOAP
安装／配置
SOAP


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
SOAP


需求

此扩展需要 libxml PHP 扩展。这表示需要使用 --enable-libxml ，尽管这将隐式完成因为 libxml 是缺省开启的。

安装／配置
安装
安装／配置


安装

To enable SOAP support, configure PHP with --enable-soap .

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

SOAP 配置选项
名字 | 默认 | 可修改范围 | 更新日志
soap.wsdl_cache_enabled | 1 | PHP_INI_ALL |
soap.wsdl_cache_dir | /tmp | PHP_INI_ALL |
soap.wsdl_cache_ttl | 86400 | PHP_INI_ALL |
soap.wsdl_cache | 1 | PHP_INI_ALL |
soap.wsdl_cache_limit | 5 | PHP_INI_ALL |

这是配置指令的简短说明。

soap.wsdl_cache_enabled integer

Enables or disables the WSDL caching feature.

soap.wsdl_cache_dir string

Sets the directory name where the SOAP extension will put cache files.

soap.wsdl_cache_ttl integer

Sets the number of seconds (time to live) that cached files will be used instead of the originals.

soap.wsdl_cache integer

If soap.wsdl_cache_enabled is on, this setting determines the type of caching. It can be any of: WSDL_CACHE_NONE (0), WSDL_CACHE_DISK (1), WSDL_CACHE_MEMORY (2) or WSDL_CACHE_BOTH (3). This can also be set via the options array in the SoapClient or SoapServer constructor.

soap.wsdl_cache_limit integer

Maximum number of in-memory cached WSDL files. Adding further files into a full memory cache will delete the oldest files from it.

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

SOAP constants
Constant | Value | Description
SOAP_1_1 (integer) | 1 |
SOAP_1_2 (integer) | 2 |
SOAP_PERSISTENCE_SESSION (integer) | 1 |
SOAP_PERSISTENCE_REQUEST (integer) | 2 |
SOAP_FUNCTIONS_ALL (integer) | 999 |
SOAP_ENCODED (integer) | 1 |
SOAP_LITERAL (integer) | 2 |
SOAP_RPC (integer) | 1 |
SOAP_DOCUMENT (integer) | 2 |
SOAP_ACTOR_NEXT (integer) | 1 |
SOAP_ACTOR_NONE (integer) | 2 |
SOAP_ACTOR_UNLIMATERECEIVER (integer) | 3 |
SOAP_COMPRESSION_ACCEPT (integer) | 32 |
SOAP_COMPRESSION_GZIP (integer) | 0 |
SOAP_COMPRESSION_DEFLATE (integer) | 16 |
SOAP_AUTHENTICATION_BASIC (integer) | 0 |
SOAP_AUTHENTICATION_DIGEST (integer) | 1 |
SOAP_SSL_METHOD_TLS (integer) | 0 | Since PHP 5.5.0.
SOAP_SSL_METHOD_SSLv2 (integer) | 1 | Since PHP 5.5.0.
SOAP_SSL_METHOD_SSLv3 (integer) | 2 | Since PHP 5.5.0.
SOAP_SSL_METHOD_SSLv23 (integer) | 3 | Since PHP 5.5.0.
UNKNOWN_TYPE (integer) | 999998 |
XSD_STRING (integer) | 101 |
XSD_BOOLEAN (integer) | 102 |
XSD_DECIMAL (integer) | 103 |
XSD_FLOAT (integer) | 104 |
XSD_DOUBLE (integer) | 105 |
XSD_DURATION (integer) | 106 |
XSD_DATETIME (integer) | 107 |
XSD_TIME (integer) | 108 |
XSD_DATE (integer) | 109 |
XSD_GYEARMONTH (integer) | 110 |
XSD_GYEAR (integer) | 111 |
XSD_GMONTHDAY (integer) | 112 |
XSD_GDAY (integer) | 113 |
XSD_GMONTH (integer) | 114 |
XSD_HEXBINARY (integer) | 115 |
XSD_BASE64BINARY (integer) | 116 |
XSD_ANYURI (integer) | 117 |
XSD_QNAME (integer) | 118 |
XSD_NOTATION (integer) | 119 |
XSD_NORMALIZEDSTRING (integer) | 120 |
XSD_TOKEN (integer) | 121 |
XSD_LANGUAGE (integer) | 122 |
XSD_NMTOKEN (integer) | 123 |
XSD_NAME (integer) | 124 |
XSD_NCNAME (integer) | 125 |
XSD_ID (integer) | 126 |
XSD_IDREF (integer) | 127 |
XSD_IDREFS (integer) | 128 |
XSD_ENTITY (integer) | 129 |
XSD_ENTITIES (integer) | 130 |
XSD_INTEGER (integer) | 131 |
XSD_NONPOSITIVEINTEGER (integer) | 132 |
XSD_NEGATIVEINTEGER (integer) | 133 |
XSD_LONG (integer) | 134 |
XSD_INT (integer) | 135 |
XSD_SHORT (integer) | 136 |
XSD_BYTE (integer) | 137 |
XSD_NONNEGATIVEINTEGER (integer) | 138 |
XSD_UNSIGNEDLONG (integer) | 139 |
XSD_UNSIGNEDINT (integer) | 140 |
XSD_UNSIGNEDSHORT (integer) | 141 |
XSD_UNSIGNEDBYTE (integer) | 142 |
XSD_POSITIVEINTEGER (integer) | 143 |
XSD_NMTOKENS (integer) | 144 |
XSD_ANYTYPE (integer) | 145 |
XSD_ANYXML (integer) | 147 |
APACHE_MAP (integer) | 200 |
SOAP_ENC_OBJECT (integer) | 301 |
SOAP_ENC_ARRAY (integer) | 300 |
XSD_1999_TIMEINSTANT (integer) | 401 |
XSD_NAMESPACE (integer) | http://www.w3.org/2001/XMLSchema |
XSD_1999_NAMESPACE (integer) | http://www.w3.org/1999/XMLSchema |
SOAP_SINGLE_ELEMENT_ARRAYS (integer) | 1 |
SOAP_WAIT_ONE_WAY_CALLS (integer) | 2 |
SOAP_USE_XSI_ARRAY_TYPE (integer) | 4 |
WSDL_CACHE_NONE (integer) | 0 |
WSDL_CACHE_DISK (integer) | 1 |
WSDL_CACHE_MEMORY (integer) | 2 |
WSDL_CACHE_BOTH (integer) | 3 |
资源类型
SOAP 函数
SOAP


SOAP 函数

Table of Contents

  • is_soap_fault — Checks if a SOAP call has failed
  • use_soap_error_handler — Set whether to use the SOAP error handler
预定义常量
is_soap_fault
SOAP


Checks if a SOAP call has failed

SOAP 函数
use_soap_error_handler
SOAP 函数
PHP Manual

is_soap_fault

(Unknown)

is_soap_fault — Checks if a SOAP call has failed

说明

bool is_soap_fault ( mixed $object )

This function is useful to check if the SOAP call failed, but without using exceptions. To use it, create a SoapClient object with the exceptions option set to zero or FALSE. In this case, the SOAP method will return a special SoapFault object which encapsulates the fault details (faultcode, faultstring, faultactor and faultdetails).

If exceptions is not set then SOAP call will throw an exception on error. is_soap_fault() checks if the given parameter is a SoapFault object.

参数

object

The object to test.

返回值

This will return TRUE on error, and FALSE otherwise.

范例

Example #1 is_soap_fault() example

<?php
$client = new SoapClient("some.wsdl", array('exceptions' => 0));
$result = $client->SomeFunction();
if (is_soap_fault($result)) {
    trigger_error("SOAP Fault: (faultcode: {$result->faultcode}, faultstring: {$result->faultstring})", E_USER_ERROR);
}
?>

Example #2 SOAP's standard method for error reporting is exceptions

<?php
try {
    $client = new SoapClient("some.wsdl");
    $result = $client->SomeFunction(/* ... */);
} catch (SoapFault $fault) {
    trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR);
}
?>

参见

  • SoapClient::SoapClient() - SoapClient constructor
  • SoapFault::SoapFault() - SoapFault constructor

SOAP 函数
use_soap_error_handler
SOAP 函数


Set whether to use the SOAP error handler

is_soap_fault
SoapClient
SOAP 函数
PHP Manual

use_soap_error_handler

(Unknown)

use_soap_error_handler — Set whether to use the SOAP error handler

说明

bool use_soap_error_handler ([ bool $handler = true ] )

This function sets whether or not to use the SOAP error handler in the SOAP server. It will return the previous value. If set to TRUE, details of errors in a SoapServer application will be sent to the client as a SOAP fault message. If FALSE, the standard PHP error handler is used. The default is to send error to the client as SOAP fault message.

参数

handler

Set to TRUE to send error details to clients.

返回值

Returns the original value.

参见

  • set_error_handler() - 设置一个用户定义的错误处理函数
  • set_exception_handler() - 设置一个用户定义的异常处理函数。

is_soap_fault
SoapClient
SOAP 函数


The SoapClient class

(PHP 5 >= 5.0.1, PHP 7)

简介

The SoapClient class provides a client for » SOAP 1.1, » SOAP 1.2 servers. It can be used in WSDL or non-WSDL mode.

类摘要

SoapClient {
/* 方法 */
public mixed __call ( string $function_name , string $arguments )
public SoapClient ( mixed $wsdl [, array $options ] )
public string __doRequest ( string $request , string $location , string $action , int $version [, int $one_way = 0 ] )
public array __getFunctions ( void )
public string __getLastRequest ( void )
public string __getLastRequestHeaders ( void )
public string __getLastResponse ( void )
public string __getLastResponseHeaders ( void )
public array __getTypes ( void )
public void __setCookie ( string $name [, string $value ] )
public string __setLocation ([ string $new_location ] )
public bool __setSoapHeaders ([ mixed $soapheaders ] )
public mixed __soapCall ( string $function_name , array $arguments [, array $options [, mixed $input_headers [, array &$output_headers ]]] )
public SoapClient ( mixed $wsdl [, array $options ] )
}

Table of Contents

  • SoapClient::__call — Calls a SOAP function (deprecated)
  • SoapClient::__construct — SoapClient constructor
  • SoapClient::__doRequest — Performs a SOAP request
  • SoapClient::__getFunctions — Returns list of available SOAP functions
  • SoapClient::__getLastRequest — Returns last SOAP request
  • SoapClient::__getLastRequestHeaders — Returns the SOAP headers from the last request
  • SoapClient::__getLastResponse — Returns last SOAP response
  • SoapClient::__getLastResponseHeaders — Returns the SOAP headers from the last response
  • SoapClient::__getTypes — Returns a list of SOAP types
  • SoapClient::__setCookie — The __setCookie purpose
  • SoapClient::__setLocation — Sets the location of the Web service to use
  • SoapClient::__setSoapHeaders — Sets SOAP headers for subsequent calls
  • SoapClient::__soapCall — Calls a SOAP function
  • SoapClient::SoapClient — SoapClient constructor
use_soap_error_handler
SoapClient::__call
SOAP


Calls a SOAP function (deprecated)

SoapClient
SoapClient::__construct
SoapClient
PHP Manual

SoapClient::__call

(PHP 5 >= 5.0.1, PHP 7)

SoapClient::__call — Calls a SOAP function (deprecated)

说明

public mixed SoapClient::__call ( string $function_name , string $arguments )

Calling this method directly is deprecated. Usually, SOAP functions can be called as methods of the SoapClient object; in situations where this is not possible or additional options are needed, use SoapClient::__soapCall().

SoapClient
SoapClient::__construct
SoapClient


SoapClient constructor

SoapClient::__call
SoapClient::__doRequest
SoapClient
PHP Manual

SoapClient::__construct

(PHP 5 >= 5.0.1, PHP 7)

SoapClient::__construct — SoapClient constructor

说明

public SoapClient::SoapClient ( mixed $wsdl [, array $options ] )

此函数是该函数的别名： SoapClient::SoapClient()

SoapClient::__call
SoapClient::__doRequest
SoapClient


Performs a SOAP request

SoapClient::__construct
SoapClient::__getFunctions
SoapClient
PHP Manual

SoapClient::__doRequest

(PHP 5 >= 5.0.1, PHP 7)

SoapClient::__doRequest — Performs a SOAP request

说明

public string SoapClient::__doRequest ( string $request , string $location , string $action , int $version [, int $one_way = 0 ] )

Performs SOAP request over HTTP.

This method can be overridden in subclasses to implement different transport layers, perform additional XML processing or other purpose.

参数

request

The XML SOAP request.

location

The URL to request.

action

The SOAP action.

version

The SOAP version.

one_way

If one_way is set to 1, this method returns nothing. Use this where a response is not expected.

返回值

The XML SOAP response.

更新日志

版本 | 说明
5.1.3 | The one_way parameter was added.

范例

Example #1 SoapClient::__doRequest() example

<?php
function Add($x,$y) {
  return $x+$y;
}

class LocalSoapClient extends SoapClient {

  function __construct($wsdl, $options) {
    parent::__construct($wsdl, $options);
    $this->server = new SoapServer($wsdl, $options);
    $this->server->addFunction('Add');
  }

  function __doRequest($request, $location, $action, $version, $one_way = 0) {
    ob_start();
    $this->server->handle($request);
    $response = ob_get_contents();
    ob_end_clean();
    return $response;
  }

}

$x = new LocalSoapClient(NULL,array('location'=>'test://',
                                   'uri'=>'http://testuri.org'));
var_dump($x->Add(3,4));
?>

SoapClient::__construct
SoapClient::__getFunctions
SoapClient


Returns list of available SOAP functions

SoapClient::__doRequest
SoapClient::__getLastRequest
SoapClient
PHP Manual

SoapClient::__getFunctions

(PHP 5 >= 5.0.1, PHP 7)

SoapClient::__getFunctions — Returns list of available SOAP functions

说明

public array SoapClient::__getFunctions ( void )

Returns an array of functions described in the WSDL for the Web service.

Note:

此函数仅在 WSDL 模式下生效。

参数

此函数没有参数。

返回值

The array of SOAP function prototypes, detailing the return type, the function name and type-hinted parameters.

范例

Example #1 SoapClient::__getFunctions() example

<?php
$client = new SoapClient('http://soap.amazon.com/schemas3/AmazonWebServices.wsdl');
var_dump($client->__getFunctions());
?>

以上例程会输出：

array(26) {
  [0]=>
  string(70) "ProductInfo KeywordSearchRequest(KeywordRequest $KeywordSearchRequest)"
  [1]=>
  string(79) "ProductInfo TextStreamSearchRequest(TextStreamRequest $TextStreamSearchRequest)"
  [2]=>
  string(64) "ProductInfo PowerSearchRequest(PowerRequest $PowerSearchRequest)"
...
  [23]=>
  string(107) "ShoppingCart RemoveShoppingCartItemsRequest(RemoveShoppingCartItemsRequest $RemoveShoppingCartItemsRequest)"
  [24]=>
  string(107) "ShoppingCart ModifyShoppingCartItemsRequest(ModifyShoppingCartItemsRequest $ModifyShoppingCartItemsRequest)"
  [25]=>
  string(118) "GetTransactionDetailsResponse GetTransactionDetailsRequest(GetTransactionDetailsRequest $GetTransactionDetailsRequest)"
}

参见

  • SoapClient::SoapClient() - SoapClient constructor

SoapClient::__doRequest
SoapClient::__getLastRequest
SoapClient


Returns last SOAP request

SoapClient::__getFunctions
SoapClient::__getLastRequestHeaders
SoapClient
PHP Manual

SoapClient::__getLastRequest

(PHP 5 >= 5.0.1, PHP 7)

SoapClient::__getLastRequest — Returns last SOAP request

说明

public string SoapClient::__getLastRequest ( void )

Returns the XML sent in the last SOAP request.

Note:

This method works only if the SoapClient object was created with the trace option set to TRUE.

参数

此函数没有参数。

返回值

The last SOAP request, as an XML string.

范例

Example #1 SoapClient::__getLastRequest() example

<?php
$client = new SoapClient("some.wsdl", array('trace' => 1));
$result = $client->SomeFunction();
echo "REQUEST:\n" . $client->__getLastRequest() . "\n";
?>

参见

  • SoapClient::__getLastRequestHeaders() - Returns the SOAP headers from the last request
  • SoapClient::__getLastResponse() - Returns last SOAP response
  • SoapClient::__getLastResponseHeaders() - Returns the SOAP headers from the last response

SoapClient::__getFunctions
SoapClient::__getLastRequestHeaders
SoapClient


Returns the SOAP headers from the last request

SoapClient::__getLastRequest
SoapClient::__getLastResponse
SoapClient
PHP Manual

SoapClient::__getLastRequestHeaders

(PHP 5 >= 5.0.1, PHP 7)

SoapClient::__getLastRequestHeaders — Returns the SOAP headers from the last request

说明

public string SoapClient::__getLastRequestHeaders ( void )

Returns the SOAP headers from the last request.

Note:

This function only works if the SoapClient object was created with the trace option set to TRUE.

参数

此函数没有参数。

返回值

The last SOAP request headers.

范例

Example #1 SoapClient::__getLastRequestHeaders() example

<?php
$client = SoapClient("some.wsdl", array('trace' => 1));
$result = $client->SomeFunction();
echo "REQUEST HEADERS:\n" . $client->__getLastRequestHeaders() . "\n";
?>

参见

  • SoapClient::__getLastResponseHeaders() - Returns the SOAP headers from the last response
  • SoapClient::__getLastRequest() - Returns last SOAP request
  • SoapClient::__getLastResponse() - Returns last SOAP response

SoapClient::__getLastRequest
SoapClient::__getLastResponse
SoapClient


Returns last SOAP response

SoapClient::__getLastRequestHeaders
SoapClient::__getLastResponseHeaders
SoapClient
PHP Manual

SoapClient::__getLastResponse

(PHP 5 >= 5.0.1, PHP 7)

SoapClient::__getLastResponse — Returns last SOAP response

说明

public string SoapClient::__getLastResponse ( void )

Returns the XML received in the last SOAP response.

Note:

This method works only if the SoapClient object was created with the trace option set to TRUE.

参数

此函数没有参数。

返回值

The last SOAP response, as an XML string.

范例

Example #1 SoapClient::__getLastResponse() example

<?php
$client = SoapClient("some.wsdl", array('trace' => 1));
$result = $client->SomeFunction();
echo "Response:\n" . $client->__getLastResponse() . "\n";
?>

参见

  • SoapClient::__getLastResponseHeaders() - Returns the SOAP headers from the last response
  • SoapClient::__getLastRequest() - Returns last SOAP request
  • SoapClient::__getLastRequestHeaders() - Returns the SOAP headers from the last request

SoapClient::__getLastRequestHeaders
SoapClient::__getLastResponseHeaders
SoapClient


Returns the SOAP headers from the last response

SoapClient::__getLastResponse
SoapClient::__getTypes
SoapClient
PHP Manual

SoapClient::__getLastResponseHeaders

(PHP 5 >= 5.0.1, PHP 7)

SoapClient::__getLastResponseHeaders — Returns the SOAP headers from the last response

说明

public string SoapClient::__getLastResponseHeaders ( void )

Returns the SOAP headers from the last response.

Note:

This function only works if the SoapClient object was created with the trace option set to TRUE.

参数

此函数没有参数。

返回值

The last SOAP response headers.

范例

Example #1 SoapClient::__getLastResponse() example

<?php
$client = SoapClient("some.wsdl", array('trace' => 1));
$result = $client->SomeFunction();
echo "RESPONSE HEADERS:\n" . $client->__getLastResponseHeaders() . "\n";
?>

参见

  • SoapClient::__getLastRequestHeaders() - Returns the SOAP headers from the last request
  • SoapClient::__getLastRequest() - Returns last SOAP request
  • SoapClient::__getLastResponse() - Returns last SOAP response

SoapClient::__getLastResponse
SoapClient::__getTypes
SoapClient


Returns a list of SOAP types

SoapClient::__getLastResponseHeaders
SoapClient::__setCookie
SoapClient
PHP Manual

SoapClient::__getTypes

(PHP 5 >= 5.0.1, PHP 7)

SoapClient::__getTypes — Returns a list of SOAP types

说明

public array SoapClient::__getTypes ( void )

Returns an array of types described in the WSDL for the Web service.

Note:

此函数仅在 WSDL 模式下生效。

参数

此函数没有参数。

返回值

The array of SOAP types, detailing all structures and types.

范例

Example #1 SoapClient::__getTypes() example

<?php
$client = new SoapClient('http://soap.amazon.com/schemas3/AmazonWebServices.wsdl');
var_dump($client->__getTypes());
?>

以上例程会输出：

array(88) {
  [0]=>
  string(30) "ProductLine ProductLineArray[]"
  [1]=>
  string(85) "struct ProductLine {
 string Mode;
 string RelevanceRank;
 ProductInfo ProductInfo;
}"
  [2]=>
  string(105) "struct ProductInfo {
 string TotalResults;
 string TotalPages;
 string ListName;
 DetailsArray Details;
}"
...
  [85]=>
  string(32) "ShortSummary ShortSummaryArray[]"
  [86]=>
  string(121) "struct GetTransactionDetailsRequest {
 string tag;
 string devtag;
 string key;
 OrderIdArray OrderIds;
 string locale;
}"
  [87]=>
  string(75) "struct GetTransactionDetailsResponse {
 ShortSummaryArray ShortSummaries;
}"
}

参见

  • SoapClient::SoapClient() - SoapClient constructor

SoapClient::__getLastResponseHeaders
SoapClient::__setCookie
SoapClient


The __setCookie purpose

SoapClient::__getTypes
SoapClient::__setLocation
SoapClient
PHP Manual

SoapClient::__setCookie

(PHP 5 >= 5.0.4, PHP 7)

SoapClient::__setCookie — The __setCookie purpose

说明

public void SoapClient::__setCookie ( string $name [, string $value ] )

Defines a cookie to be sent along with the SOAP requests.

Note:

Calling this method will affect all following calls to SoapClient methods.

参数

name

The name of the cookie.

value

The value of the cookie. If not specified, the cookie will be deleted.

返回值

没有返回值。

SoapClient::__getTypes
SoapClient::__setLocation
SoapClient


Sets the location of the Web service to use

SoapClient::__setCookie
SoapClient::__setSoapHeaders
SoapClient
PHP Manual

SoapClient::__setLocation

(PHP 5 >= 5.0.1, PHP 7)

SoapClient::__setLocation — Sets the location of the Web service to use

说明

public string SoapClient::__setLocation ([ string $new_location ] )

Sets the endpoint URL that will be touched by following SOAP requests. This is equivalent to specifying the location option when constructing the SoapClient.

Note:

Calling this method is optional. The SoapClient uses the endpoint from the WSDL file by default.

参数

new_location

The new endpoint URL.

返回值

The old endpoint URL.

范例

Example #1 SoapClient::__setLocation() example

<?php
$client = new SoapClient('http://example.com/webservice.php?wsdl');

$client->__setLocation('http://www.somethirdparty.com');

$old_location = $client->__setLocation(); // unsets the location option

echo $old_location;

?>

以上例程的输出类似于：

http://www.somethirdparty.com

参见

  • SoapClient::SoapClient() - SoapClient constructor

SoapClient::__setCookie
SoapClient::__setSoapHeaders
SoapClient


Sets SOAP headers for subsequent calls

SoapClient::__setLocation
SoapClient::__soapCall
SoapClient
PHP Manual

SoapClient::__setSoapHeaders

(PHP 5 >= 5.0.5, PHP 7)

SoapClient::__setSoapHeaders — Sets SOAP headers for subsequent calls

说明

public bool SoapClient::__setSoapHeaders ([ mixed $soapheaders ] )

Defines headers to be sent along with the SOAP requests.

Note:

Calling this method will replace any previous values.

参数

soapheaders

The headers to be set. It could be SoapHeader object or array of SoapHeader objects. If not specified or set to NULL, the headers will be deleted.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 SoapClient::__setSoapHeaders() example

<?php

$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
                                     'uri'      => "http://test-uri/"));
$header = new SoapHeader('http://soapinterop.org/echoheader/',
                            'echoMeStringRequest',
                            'hello world');

$client->__setSoapHeaders($header);

$client->__soapCall("echoVoid", null);
?>

Example #2 Set Multiple Headers

<?php

$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
                                     'uri'      => "http://test-uri/"));
$headers = array();

$headers[] = new SoapHeader('http://soapinterop.org/echoheader/',
                            'echoMeStringRequest',
                            'hello world');

$headers[] = new SoapHeader('http://soapinterop.org/echoheader/',
                            'echoMeStringRequest',
                            'hello world again');

$client->__setSoapHeaders($headers);

$client->__soapCall("echoVoid", null);
?>

SoapClient::__setLocation
SoapClient::__soapCall
SoapClient


Calls a SOAP function

SoapClient::__setSoapHeaders
SoapClient::SoapClient
SoapClient
PHP Manual

SoapClient::__soapCall

(PHP 5 >= 5.0.1, PHP 7)

SoapClient::__soapCall — Calls a SOAP function

说明

public mixed SoapClient::__soapCall ( string $function_name , array $arguments [, array $options [, mixed $input_headers [, array &$output_headers ]]] )

This is a low level API function that is used to make a SOAP call. Usually, in WSDL mode, SOAP functions can be called as methods of the SoapClient object. This method is useful in non-WSDL mode when soapaction is unknown, uri differs from the default or when sending and/or receiving SOAP Headers.

On error, a call to a SOAP function can cause PHP to throw exceptions or return a SoapFault object if exceptions are disabled. To check if the function call failed to catch the SoapFault exceptions, check the result with is_soap_fault().

参数

function_name

The name of the SOAP function to call.

arguments

An array of the arguments to pass to the function. This can be either an ordered or an associative array. Note that most SOAP servers require parameter names to be provided, in which case this must be an associative array.

options

An associative array of options to pass to the client.

The location option is the URL of the remote Web service.

The uri option is the target namespace of the SOAP service.

The soapaction option is the action to call.

input_headers

An array of headers to be sent along with the SOAP request.

output_headers

If supplied, this array will be filled with the headers from the SOAP response.

返回值

SOAP functions may return one, or multiple values. If only one value is returned by the SOAP function, the return value of __soapCall will be a simple value (e.g. an integer, a string, etc). If multiple values are returned, __soapCall will return an associative array of named output parameters.

On error, if the SoapClient object was constructed with the exceptions option set to FALSE, a SoapFault object will be returned.

范例

Example #1 SoapClient::__soapCall() example

<?php

$client = new SoapClient("some.wsdl");
$client->SomeFunction($a, $b, $c);

$client->__soapCall("SomeFunction", array($a, $b, $c));
$client->__soapCall("SomeFunction", array($a, $b, $c), NULL,
                    new SoapHeader(), $output_headers);

$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
                                     'uri'      => "http://test-uri/"));
$client->SomeFunction($a, $b, $c);
$client->__soapCall("SomeFunction", array($a, $b, $c));
$client->__soapCall("SomeFunction", array($a, $b, $c),
                    array('soapaction' => 'some_action',
                          'uri'        => 'some_uri'));
?>

参见

  • SoapClient::SoapClient() - SoapClient constructor
  • SoapParam::SoapParam() - SoapParam constructor
  • SoapVar::SoapVar() - SoapVar constructor
  • SoapHeader::SoapHeader() - SoapHeader constructor
  • SoapFault::SoapFault() - SoapFault constructor
  • is_soap_fault() - Checks if a SOAP call has failed

SoapClient::__setSoapHeaders
SoapClient::SoapClient
SoapClient


SoapClient constructor

SoapClient::__soapCall
SoapServer
SoapClient
PHP Manual

SoapClient::SoapClient

(PHP 5 >= 5.0.1, PHP 7)

SoapClient::SoapClient — SoapClient constructor

说明

public SoapClient::SoapClient ( mixed $wsdl [, array $options ] )

This constructor creates SoapClient objects in WSDL or non-WSDL mode.

参数

wsdl

URI of the WSDL file or NULL if working in non-WSDL mode.

Note:

During development, WSDL caching may be disabled by the use of the soap.wsdl_cache_ttl php.ini setting otherwise changes made to the WSDL file will have no effect until soap.wsdl_cache_ttl is expired.

options

An array of options. If working in WSDL mode, this parameter is optional. If working in non-WSDL mode, the location and uri options must be set, where location is the URL of the SOAP server to send the request to, and uri is the target namespace of the SOAP service.

The style and use options only work in non-WSDL mode. In WSDL mode, they come from the WSDL file.

The soap_version option should be one of either SOAP_1_1 or SOAP_1_2 to select SOAP 1.1 or 1.2, respectively. If omitted, 1.1 is used.

For HTTP authentication, the login and password options can be used to supply credentials. For making an HTTP connection through a proxy server, the options proxy_host, proxy_port, proxy_login and proxy_password are also available. For HTTPS client certificate authentication use local_cert and passphrase options. An authentication may be supplied in the authentication option. The authentication method may be either SOAP_AUTHENTICATION_BASIC (default) or SOAP_AUTHENTICATION_DIGEST.

The compression option allows to use compression of HTTP SOAP requests and responses.

The encoding option defines internal character encoding. This option does not change the encoding of SOAP requests (it is always utf-8), but converts strings into it.

The trace option enables tracing of request so faults can be backtraced. This defaults to FALSE

The classmap option can be used to map some WSDL types to PHP classes. This option must be an array with WSDL types as keys and names of PHP classes as values.

Setting the boolean trace option enables use of the
methods
SoapClient->__getLastRequest,

SoapClient->__getLastRequestHeaders,

SoapClient->__getLastResponse and

SoapClient->__getLastResponseHeaders.

The exceptions option is a boolean value defining whether soap errors throw exceptions of type SoapFault.

The connection_timeout option defines a timeout in seconds for the connection to the SOAP service. This option does not define a timeout for services with slow responses. To limit the time to wait for calls to finish the default_socket_timeout setting is available.

The typemap option is an array of type mappings. Type mapping is an array with keys type_name, type_ns (namespace URI), from_xml (callback accepting one string parameter) and to_xml (callback accepting one object parameter).

The cache_wsdl option is one of WSDL_CACHE_NONE, WSDL_CACHE_DISK, WSDL_CACHE_MEMORY or WSDL_CACHE_BOTH.

The user_agent option specifies string to use in User-Agent header.

The stream_context option is a resource for context.

The features option is a bitmask of SOAP_SINGLE_ELEMENT_ARRAYS, SOAP_USE_XSI_ARRAY_TYPE, SOAP_WAIT_ONE_WAY_CALLS.

The keep_alive option is a boolean value defining whether to send the Connection: Keep-Alive header or Connection: close.

The ssl_method option is one of SOAP_SSL_METHOD_TLS, SOAP_SSL_METHOD_SSLv2, SOAP_SSL_METHOD_SSLv3 or SOAP_SSL_METHOD_SSLv23.

错误／异常

SoapClient::SoapClient() will generate an E_ERROR error if the location and uri options aren't provided in non-WSDL mode.

A SoapFault exception will be thrown if the wsdl URI cannot be loaded.

更新日志

版本 | 说明
5.5.0 | New ssl_method option.
5.4.0 | New keep_alive option.

范例

Example #1 SoapClient::SoapClient() example

<?php

$client = new SoapClient("some.wsdl");

$client = new SoapClient("some.wsdl", array('soap_version'   => SOAP_1_2));

$client = new SoapClient("some.wsdl", array('login'          => "some_name",
                                            'password'       => "some_password"));

$client = new SoapClient("some.wsdl", array('proxy_host'     => "localhost",
                                            'proxy_port'     => 8080));

$client = new SoapClient("some.wsdl", array('proxy_host'     => "localhost",
                                            'proxy_port'     => 8080,
                                            'proxy_login'    => "some_name",
                                            'proxy_password' => "some_password"));

$client = new SoapClient("some.wsdl", array('local_cert'     => "cert_key.pem"));

$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
                                     'uri'      => "http://test-uri/"));

$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
                                     'uri'      => "http://test-uri/",
                                     'style'    => SOAP_DOCUMENT,
                                     'use'      => SOAP_LITERAL));

$client = new SoapClient("some.wsdl",
  array('compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP));

$client = new SoapClient("some.wsdl", array('encoding'=>'ISO-8859-1'));

class MyBook {
    public $title;
    public $author;
}

$client = new SoapClient("books.wsdl", array('classmap' => array('book' => "MyBook")));

?>

SoapClient::__soapCall
SoapServer
SoapClient


The SoapServer class

(PHP 5 >= 5.0.1, PHP 7)

简介

The SoapServer class provides a server for the » SOAP 1.1 and » SOAP 1.2 protocols. It can be used with or without a WSDL service description.

类摘要

SoapServer {
/* 方法 */
public void addFunction ( mixed $functions )
public void addSoapHeader ( SoapHeader $object )
public __construct ( mixed $wsdl [, array $options ] )
public void fault ( string $code , string $string [, string $actor [, string $details [, string $name ]]] )
public array getFunctions ( void )
public void handle ([ string $soap_request ] )
public void setClass ( string $class_name [, mixed $args [, mixed $... ]] )
public void setObject ( object $object )
public void setPersistence ( int $mode )
public SoapServer ( mixed $wsdl [, array $options ] )
}

Table of Contents

  • SoapServer::addFunction — 添加一个或多个函数来处理SOAP请求
  • SoapServer::addSoapHeader — Add a SOAP header to the response
  • SoapServer::__construct — SoapServer constructor
  • SoapServer::fault — Issue SoapServer fault indicating an error
  • SoapServer::getFunctions — Returns list of defined functions
  • SoapServer::handle — Handles a SOAP request
  • SoapServer::setClass — Sets the class which handles SOAP requests
  • SoapServer::setObject — Sets the object which will be used to handle SOAP requests
  • SoapServer::setPersistence — Sets SoapServer persistence mode
  • SoapServer::SoapServer — SoapServer constructor
SoapClient::SoapClient
SoapServer::addFunction
SOAP


添加一个或多个函数来处理SOAP请求

SoapServer
SoapServer::addSoapHeader
SoapServer
PHP Manual

SoapServer::addFunction

(PHP 5 >= 5.0.1, PHP 7)

SoapServer::addFunction — 添加一个或多个函数来处理SOAP请求

说明

public void SoapServer::addFunction ( mixed $functions )

为远程客户端导出一个或多个函数

参数

functions

导出一个函数，将函数名作为字符串传递给这个参数。

导出多个函数，将一组函数名作为数组传递。

导出所有函数，传递特殊常量 SOAP_FUNCTIONS_ALL.

Note:

functions 接收的所有输入参数必须同时和WSDL文件中定义的 顺序一样（它们不应该接收任何输出变量作为参数）并且返回一个或多个值。如果要返回多个 值，它们必须返回一组被命名的输出参数作为数组。

返回值

没有返回值。

范例

Example #1 SoapServer::addFunction() example

<?php

function echoString($inputString)
{
    return $inputString;
}

$server->addFunction("echoString");

function echoTwoStrings($inputString1, $inputString2)
{
    return array("outputString1" => $inputString1,
                 "outputString2" => $inputString2);
}
$server->addFunction(array("echoString", "echoTwoStrings"));

$server->addFunction(SOAP_FUNCTIONS_ALL);

?>

参见

  • SoapServer::SoapServer() - SoapServer constructor
  • SoapServer::setClass() - Sets the class which handles SOAP requests

SoapServer
SoapServer::addSoapHeader
SoapServer


Add a SOAP header to the response

SoapServer::addFunction
SoapServer::__construct
SoapServer
PHP Manual

SoapServer::addSoapHeader

(PHP 5 >= 5.0.1, PHP 7)

SoapServer::addSoapHeader — Add a SOAP header to the response

说明

public void SoapServer::addSoapHeader ( SoapHeader $object )

Adds a SOAP header to be returned with the response to the current request.

参数

object

The header to be returned.

返回值

没有返回值。

SoapServer::addFunction
SoapServer::__construct
SoapServer


SoapServer constructor

SoapServer::addSoapHeader
SoapServer::fault
SoapServer
PHP Manual

SoapServer::__construct

(PHP 5 >= 5.0.1, PHP 7)

SoapServer::__construct — SoapServer constructor

说明

public SoapServer::__construct ( mixed $wsdl [, array $options ] )

此函数是该函数的别名： SoapServer::SoapServer()

SoapServer::addSoapHeader
SoapServer::fault
SoapServer


Issue SoapServer fault indicating an error

SoapServer::__construct
SoapServer::getFunctions
SoapServer
PHP Manual

SoapServer::fault

(PHP 5 >= 5.0.1, PHP 7)

SoapServer::fault — Issue SoapServer fault indicating an error

说明

public void SoapServer::fault ( string $code , string $string [, string $actor [, string $details [, string $name ]]] )

Sends a response to the client of the current request indicating an error.

Note:

This can only be called when handling a request.

参数

code

The error code to return

string

A brief description of the error

actor

A string identifying the actor that caused the fault.

details

More details of the fault

name

The name of the fault. This can be used to select a name from a WSDL file.

返回值

没有返回值。

参见

  • SoapFault::SoapFault() - SoapFault constructor

SoapServer::__construct
SoapServer::getFunctions
SoapServer


Returns list of defined functions

SoapServer::fault
SoapServer::handle
SoapServer
PHP Manual

SoapServer::getFunctions

(PHP 5 >= 5.0.1, PHP 7)

SoapServer::getFunctions — Returns list of defined functions

说明

public array SoapServer::getFunctions ( void )

Returns a list of the defined functions in the SoapServer object. This method returns the list of all functions added by SoapServer::addFunction() or SoapServer::setClass().

参数

此函数没有参数。

返回值

An array of the defined functions.

范例

Example #1 SoapServer::getFunctions() example

<?php
$server = new SoapServer(NULL, array("uri" => "http://test-uri"));
$server->addFunction(SOAP_FUNCTIONS_ALL);
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $server->handle();
} else {
  echo "This SOAP server can handle following functions: ";
  $functions = $server->getFunctions();
  foreach($functions as $func) {
    echo $func . "\n";
  }
}
?>

参见

  • SoapServer::SoapServer() - SoapServer constructor
  • SoapServer::addFunction() - 添加一个或多个函数来处理SOAP请求
  • SoapServer::setClass() - Sets the class which handles SOAP requests

SoapServer::fault
SoapServer::handle
SoapServer


Handles a SOAP request

SoapServer::getFunctions
SoapServer::setClass
SoapServer
PHP Manual

SoapServer::handle

(PHP 5 >= 5.0.1, PHP 7)

SoapServer::handle — Handles a SOAP request

说明

public void SoapServer::handle ([ string $soap_request ] )

Processes a SOAP request, calls necessary functions, and sends a response back.

参数

soap_request

The SOAP request. If this argument is omitted, the request is assumed to be in the raw POST data of the HTTP request.

返回值

没有返回值。

范例

Example #1 SoapServer::handle() example

<?php
function test($x)
{
    return $x;
}

$server = new SoapServer(null, array('uri' => "http://test-uri/"));
$server->addFunction("test");
$server->handle();
?>

参见

  • SoapServer::SoapServer() - SoapServer constructor

SoapServer::getFunctions
SoapServer::setClass
SoapServer


Sets the class which handles SOAP requests

SoapServer::handle
SoapServer::setObject
SoapServer
PHP Manual

SoapServer::setClass

(PHP 5 >= 5.0.1, PHP 7)

SoapServer::setClass — Sets the class which handles SOAP requests

说明

public void SoapServer::setClass ( string $class_name [, mixed $args [, mixed $... ]] )

Exports all methods from specified class.

The object can be made persistent across request for a given PHP session with the SoapServer::setPersistence() method.

参数

class_name

The name of the exported class.

args

These optional parameters will be passed to the default class constructor during object creation.

返回值

没有返回值。

参见

  • SoapServer::SoapServer() - SoapServer constructor
  • SoapServer::addFunction() - 添加一个或多个函数来处理SOAP请求
  • SoapServer::setPersistence() - Sets SoapServer persistence mode

SoapServer::handle
SoapServer::setObject
SoapServer


Sets the object which will be used to handle SOAP requests

SoapServer::setClass
SoapServer::setPersistence
SoapServer
PHP Manual

SoapServer::setObject

(PHP 5 >= 5.2.0, PHP 7)

SoapServer::setObject — Sets the object which will be used to handle SOAP requests

说明

public void SoapServer::setObject ( object $object )

This sets a specific object as the handler for SOAP requests, rather than just a class as in SoapServer::setClass().

参数

object

The object to handle the requests.

返回值

没有返回值。

参见

  • SoapServer::setClass() - Sets the class which handles SOAP requests

SoapServer::setClass
SoapServer::setPersistence
SoapServer


Sets SoapServer persistence mode

SoapServer::setObject
SoapServer::SoapServer
SoapServer
PHP Manual

SoapServer::setPersistence

(PHP 5 >= 5.1.2, PHP 7)

SoapServer::setPersistence — Sets SoapServer persistence mode

说明

public void SoapServer::setPersistence ( int $mode )

This function allows changing the persistence state of a SoapServer object between requests. This function allows saving data between requests utilizing PHP sessions. This method only has an affect on a SoapServer after it has exported functions utilizing SoapServer::setClass().

Note:

The persistence of SOAP_PERSISTENCE_SESSION makes only objects of the given class persistent, but not the class static data. In this case, use $this->bar instead of self::$bar.

Note:

SOAP_PERSISTENCE_SESSION serializes data on the class object between requests. In order to properly utilize resources (e.g. PDO), __wakeup() and __sleep() magic methods should be utilized.

参数

mode

One of the SOAP_PERSISTENCE_XXX constants.

SOAP_PERSISTENCE_REQUEST - SoapServer data does not persist between requests. This is the default behavior of any SoapServer object after setClass is called.

SOAP_PERSISTENCE_SESSION - SoapServer data persists between requests. This is accomplished by serializing the SoapServer class data into $_SESSION['_bogus_session_name'], because of this session_start() must be called before this persistence mode is set.

返回值

没有返回值。

范例

Example #1 SoapServer::setPersistence() example

<?php
 class MyFirstPersistentSoapServer {
     private $resource; // (Such as PDO, mysqli, etc..)
     public $myvar1;
     public $myvar2;

     public function __construct() {
         $this->__wakeup(); // We're calling our wakeup to handle starting our resource
     }

     public function __wakeup() {
         $this->resource = CodeToStartOurResourceUp();
     }

     public function __sleep() {
         // We make sure to leave out $resource here, so our session data remains persistent
         // Failure to do so will result in the failure during the unserialization of data
         // on the next request; thus, our SoapObject would not be persistent across requests.
         return array('myvar1','myvar2');
     }
 }

 try {
     session_start();
     $server = new SoapServer(null, array('uri' => $_SERVER['REQUEST_URI']));
     $server->setClass('MyFirstPersistentSoapServer');
     // setPersistence MUST be called after setClass, because setClass's
     // behavior sets SESSION_PERSISTENCE_REQUEST upon enacting the method.
     $server->setPersistence(SOAP_PERSISTENCE_SESSION);
     $server->handle();
 } catch(SoapFault $e) {
     error_log("SOAP ERROR: ". $e->getMessage());
 }
?>

参见

  • SoapServer::setClass() - Sets the class which handles SOAP requests

SoapServer::setObject
SoapServer::SoapServer
SoapServer


SoapServer constructor

SoapServer::setPersistence
SoapFault
SoapServer
PHP Manual

SoapServer::SoapServer

(PHP 5 >= 5.0.1, PHP 7)

SoapServer::SoapServer — SoapServer constructor

说明

public SoapServer::SoapServer ( mixed $wsdl [, array $options ] )

This constructor allows the creation of SoapServer objects in WSDL or non-WSDL mode.

参数

wsdl

To use the SoapServer in WSDL mode, pass the URI of a WSDL file. Otherwise, pass NULL and set the uri option to the target namespace for the server.

options

Allow setting a default SOAP version (soap_version), internal character encoding (encoding), and actor URI (actor).

The classmap option can be used to map some WSDL types to PHP classes. This option must be an array with WSDL types as keys and names of PHP classes as values.

The typemap option is an array of type mappings. Type mapping is an array with keys type_name, type_ns (namespace URI), from_xml (callback accepting one string parameter) and to_xml (callback accepting one object parameter).

The cache_wsdl option is one of WSDL_CACHE_NONE, WSDL_CACHE_DISK, WSDL_CACHE_MEMORY or WSDL_CACHE_BOTH.

There is also a features option which can be set to SOAP_WAIT_ONE_WAY_CALLS, SOAP_SINGLE_ELEMENT_ARRAYS, SOAP_USE_XSI_ARRAY_TYPE.

The send_errors option can be set to FALSE to sent a generic error message ("Internal error") instead of the specific error message sent otherwise.

范例

Example #1 SoapServer::SoapServer() example

<?php

$server = new SoapServer("some.wsdl");

$server = new SoapServer("some.wsdl", array('soap_version' => SOAP_1_2));

$server = new SoapServer("some.wsdl", array('actor' => "http://example.org/ts-tests/C"));

$server = new SoapServer("some.wsdl", array('encoding'=>'ISO-8859-1'));

$server = new SoapServer(null, array('uri' => "http://test-uri/"));

class MyBook {
    public $title;
    public $author;
}

$server = new SoapServer("books.wsdl", array('classmap' => array('book' => "MyBook")));

?>

更新日志

版本 | 说明
5.2.0 | Added the typemap option.

参见

  • SoapClient::SoapClient() - SoapClient constructor

SoapServer::setPersistence
SoapFault
SoapServer


The SoapFault class

(PHP 5 >= 5.0.1, PHP 7)

简介

Represents a SOAP fault.

类摘要

SoapFault extends Exception {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 方法 */
__construct ( string $faultcode , string $faultstring [, string $faultactor [, string $detail [, string $faultname [, string $headerfault ]]]] )
SoapFault ( string $faultcode , string $faultstring [, string $faultactor [, string $detail [, string $faultname [, string $headerfault ]]]] )
public string __toString ( void )
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}

Table of Contents

  • SoapFault::__construct — SoapFault constructor
  • SoapFault::SoapFault — SoapFault constructor
  • SoapFault::__toString — Obtain a string representation of a SoapFault
SoapServer::SoapServer
SoapFault::__construct
SOAP


SoapFault constructor

SoapFault
SoapFault::SoapFault
SoapFault
PHP Manual

SoapFault::__construct

(PHP 5 >= 5.0.1, PHP 7)

SoapFault::__construct — SoapFault constructor

说明

SoapFault::__construct ( string $faultcode , string $faultstring [, string $faultactor [, string $detail [, string $faultname [, string $headerfault ]]]] )

此函数是该函数的别名： SoapFault::SoapFault()

SoapFault
SoapFault::SoapFault
SoapFault


SoapFault constructor

SoapFault::__construct
SoapFault::__toString
SoapFault
PHP Manual

SoapFault::SoapFault

(PHP 5 >= 5.0.1, PHP 7)

SoapFault::SoapFault — SoapFault constructor

说明

SoapFault::SoapFault ( string $faultcode , string $faultstring [, string $faultactor [, string $detail [, string $faultname [, string $headerfault ]]]] )

This class is used to send SOAP fault responses from the PHP handler. faultcode, faultstring, faultactor and detail are standard elements of a SOAP Fault.

参数

faultcode

The error code of the SoapFault.

faultstring

The error message of the SoapFault.

faultactor

A string identifying the actor that caused the error.

detail

More details about the cause of the error.

faultname

Can be used to select the proper fault encoding from WSDL.

headerfault

Can be used during SOAP header handling to report an error in the response header.

范例

Example #1 Some examples

<?php
function test($x)
{
    return new SoapFault("Server", "Some error message");
}

$server = new SoapServer(null, array('uri' => "http://test-uri/"));
$server->addFunction("test");
$server->handle();
?>

It is possible to use PHP exception mechanism to throw SOAP Fault.

Example #2 Some examples

<?php
function test($x)
{
    throw new SoapFault("Server", "Some error message");
}

$server = new SoapServer(null, array('uri' => "http://test-uri/"));
$server->addFunction("test");
$server->handle();
?>

参见

  • SoapServer::fault() - Issue SoapServer fault indicating an error
  • is_soap_fault() - Checks if a SOAP call has failed

SoapFault::__construct
SoapFault::__toString
SoapFault


Obtain a string representation of a SoapFault

SoapFault::SoapFault
SoapHeader
SoapFault
PHP Manual

SoapFault::__toString

(PHP 5 >= 5.0.1, PHP 7)

SoapFault::__toString — Obtain a string representation of a SoapFault

说明

public string SoapFault::__toString ( void )

Returns a string representation of the SoapFault.

参数

此函数没有参数。

返回值

A string describing the SoapFault.

SoapFault::SoapFault
SoapHeader
SoapFault


The SoapHeader class

(PHP 5 >= 5.0.1, PHP 7)

简介

Represents a SOAP header.

类摘要

SoapHeader {
/* 方法 */
__construct ( string $namespace , string $name [, mixed $data [, bool $mustunderstand [, string $actor ]]] )
SoapHeader ( string $namespace , string $name [, mixed $data [, bool $mustunderstand = false [, string $actor ]]] )
}

Table of Contents

  • SoapHeader::__construct — SoapHeader constructor
  • SoapHeader::SoapHeader — SoapHeader constructor
SoapFault::__toString
SoapHeader::__construct
SOAP


SoapHeader constructor

SoapHeader
SoapHeader::SoapHeader
SoapHeader
PHP Manual

SoapHeader::__construct

(PHP 5 >= 5.0.1, PHP 7)

SoapHeader::__construct — SoapHeader constructor

说明

SoapHeader::__construct ( string $namespace , string $name [, mixed $data [, bool $mustunderstand [, string $actor ]]] )

此函数是该函数的别名： SoapHeader::SoapHeader()

SoapHeader
SoapHeader::SoapHeader
SoapHeader


SoapHeader constructor

SoapHeader::__construct
SoapParam
SoapHeader
PHP Manual

SoapHeader::SoapHeader

(PHP 5 >= 5.0.1, PHP 7)

SoapHeader::SoapHeader — SoapHeader constructor

说明

SoapHeader::SoapHeader ( string $namespace , string $name [, mixed $data [, bool $mustunderstand = false [, string $actor ]]] )

Constructs a new SoapHeader object.

参数

namespace

The namespace of the SOAP header element.

name

The name of the SoapHeader object.

data

A SOAP header's content. It can be a PHP value or a SoapVar object.

mustUnderstand

Value of the mustUnderstand attribute of the SOAP header element.

actor

Value of the actor attribute of the SOAP header element.

范例

Example #1 SoapHeader::SoapHeader() example

<?php
$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
                                     'uri'      => "http://test-uri/"));
$client->__soapCall("echoVoid", null, null,
                new SoapHeader('http://soapinterop.org/echoheader/',
                               'echoMeStringRequest',
                               'hello world'));
?>

参见

  • SoapClient::__soapCall() - Calls a SOAP function
  • SoapVar::SoapVar() - SoapVar constructor
  • SoapParam::SoapParam() - SoapParam constructor
  • SoapServer::addSoapHeader() - Add a SOAP header to the response

SoapHeader::__construct
SoapParam
SoapHeader


The SoapParam class

(PHP 5 >= 5.0.1, PHP 7)

简介

Represents parameter to a SOAP call.

类摘要

SoapParam {
/* 方法 */
__construct ( mixed $data , string $name )
SoapParam ( mixed $data , string $name )
}

Table of Contents

  • SoapParam::__construct — SoapParam constructor
  • SoapParam::SoapParam — SoapParam constructor
SoapHeader::SoapHeader
SoapParam::__construct
SOAP


SoapParam constructor

SoapParam
SoapParam::SoapParam
SoapParam
PHP Manual

SoapParam::__construct

(PHP 5 >= 5.0.1, PHP 7)

SoapParam::__construct — SoapParam constructor

说明

SoapParam::__construct ( mixed $data , string $name )

此函数是该函数的别名： SoapParam::SoapParam()

SoapParam
SoapParam::SoapParam
SoapParam


SoapParam constructor

SoapParam::__construct
SoapVar
SoapParam
PHP Manual

SoapParam::SoapParam

(PHP 5 >= 5.0.1, PHP 7)

SoapParam::SoapParam — SoapParam constructor

说明

SoapParam::SoapParam ( mixed $data , string $name )

Constructs a new SoapParam object.

参数

data

The data to pass or return. This parameter can be passed directly as PHP value, but in this case it will be named as paramN and the SOAP service may not understand it.

name

The parameter name.

范例

Example #1 SoapParam::SoapParam() example

<?php
$client = new SoapClient(null,array('location' => "http://localhost/soap.php",
                                    'uri'      => "http://test-uri/"));
$client->SomeFunction(new SoapParam($a, "a"),
                      new SoapParam($b, "b"),
                      new SoapParam($c, "c"));
?>

参见

  • SoapClient::__soapCall() - Calls a SOAP function
  • SoapVar::SoapVar() - SoapVar constructor

SoapParam::__construct
SoapVar
SoapParam


The SoapVar class

(PHP 5 >= 5.0.1, PHP 7)

简介

A class representing a variable or object for use with SOAP services.

类摘要

SoapVar {
/* 方法 */
__construct ( mixed $data , string $encoding [, string $type_name [, string $type_namespace [, string $node_name [, string $node_namespace ]]]] )
SoapVar ( mixed $data , string $encoding [, string $type_name [, string $type_namespace [, string $node_name [, string $node_namespace ]]]] )
}

Table of Contents

  • SoapVar::__construct — SoapVar constructor
  • SoapVar::SoapVar — SoapVar constructor
SoapParam::SoapParam
SoapVar::__construct
SOAP


SoapVar constructor

SoapVar
SoapVar::SoapVar
SoapVar
PHP Manual

SoapVar::__construct

(PHP 5 >= 5.0.1, PHP 7)

SoapVar::__construct — SoapVar constructor

说明

SoapVar::__construct ( mixed $data , string $encoding [, string $type_name [, string $type_namespace [, string $node_name [, string $node_namespace ]]]] )

此函数是该函数的别名： SoapVar::SoapVar()

SoapVar
SoapVar::SoapVar
SoapVar


SoapVar constructor

SoapVar::__construct
Yar
SoapVar
PHP Manual

SoapVar::SoapVar

(PHP 5 >= 5.0.1, PHP 7)

SoapVar::SoapVar — SoapVar constructor

说明

SoapVar::SoapVar ( mixed $data , string $encoding [, string $type_name [, string $type_namespace [, string $node_name [, string $node_namespace ]]]] )

Constructs a new SoapVar object.

参数

data

The data to pass or return.

encoding

The encoding ID, one of the XSD_... constants.

type_name

The type name.

type_namespace

The type namespace.

node_name

The XML node name.

node_namespace

The XML node namespace.

范例

Example #1 SoapVar::SoapVar() example

<?php
class SOAPStruct {
    function SOAPStruct($s, $i, $f)
    {
        $this->varString = $s;
        $this->varInt = $i;
        $this->varFloat = $f;
    }
}
$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
                                     'uri'      => "http://test-uri/"));
$struct = new SOAPStruct('arg', 34, 325.325);
$soapstruct = new SoapVar($struct, SOAP_ENC_OBJECT, "SOAPStruct", "http://soapinterop.org/xsd");
$client->echoStruct(new SoapParam($soapstruct, "inputStruct"));
?>

参见

  • SoapClient::__soapCall() - Calls a SOAP function
  • SoapParam::SoapParam() - SoapParam constructor

SoapVar::__construct
Yar
SoapVar


Yet Another RPC Framework

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • Yar_Server — The Yar_Server class
    • Yar_Server::__construct — 创建一个HTTP RPC Server
    • Yar_Server::handle — 启动HTTP RPC Server
  • Yar_Client — The Yar_Client class
    • Yar_Client::__call — 调用远程服务
    • Yar_Client::__construct — 创建一个客户端实例
    • Yar_Client::setOpt — 设置调用的配置
  • Yar_Concurrent_Client — The Yar_Concurrent_Client class
    • Yar_Concurrent_Client::call — 注册一个并行的服务调用
    • Yar_Concurrent_Client::loop — 发送所有注册的并行调用
  • Yar_Server_Exception — The Yar_Server_Exception class
    • Yar_Server_Exception::getType — 获取异常的原始类型
  • Yar_Client_Exception — The Yar_Client_Exception class
    • Yar_Client_Exception::getType — The getType purpose
SoapVar::SoapVar
简介
Web 服务


简介

Yar 是一个轻量级, 高效的RPC框架, 它提供了一种简单方法来让PHP项目之间可以互相远程调用对方的本地方法. 并且Yar也提供了并行调用的能力. 可以支持同时调用多个远程服务的方法.

Yar
安装／配置
Yar


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
Yar


需求

如果需要使用Msgpack作为打包协议, 则需要在configure的时候加上--enable-msgpack, 并且要保证Msgpack扩展也安装到PHP内.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/yar.

PECL 扩展的 DLL 当前不可用。参见 在 Windows 上构建章节。

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

Yar 配置选项
名字 | 默认 | 可修改范围 | 更新日志
yar.packager | php | PHP_INI_SYSTEM |
yar.debug | Off | PHP_INI_ALL |
yar.connect_timeout | 1000 | PHP_INI_ALL |
yar.timeout | 5000 | PHP_INI_ALL |
yar.expose_info | On | PHP_INI_SYS |

这是配置指令的简短说明。

yar.packager string

设置Yar的打包工具, 可以是PHP(serialize), JSON, Msgpack(这个需要编译的时候指定--enable-msgpack).

yar.debug string

打开的时候, Yar会把请求过程的日志都打印出来(到stderr).

yar.connect_timeout integer

连接超时(毫秒为单位)

yar.timeout integer

处理超时(毫秒为单位)

yar.expose_info bool

如果关闭, 则当通过浏览器访问Server的时候, 不会出现Server Info信息.

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

YAR_VERSION (string)
YAR_CLIENT_PROTOCOL_HTTP (integer)
YAR_CLIENT_OPT_PACKAGER (integer)
YAR_CLIENT_OPT_TIMEOUT (integer)
YAR_CLIENT_OPT_CONNECT_TIMEOUT (integer)
YAR_PACKAGER_PHP (string)
YAR_PACKAGER_JSON (string)
YAR_ERR_OKEY (integer)
YAR_ERR_OUTPUT (integer)
YAR_ERR_TRANSPORT (integer)
YAR_ERR_REQUEST (integer)
YAR_ERR_PROTOCOL (integer)
YAR_ERR_PACKAGER (integer)
YAR_ERR_EXCEPTION (integer)

资源类型
范例
Yar


范例

Example #1 Yar Server示例

<?php

/* 假设这个页面的访问路径是: http://example.com/operator.php */

class Operator {

    /**
     * Add two operands
     * @param interge
     * @return interge
     */
    public function add($a, $b) {
        return $this->_add($a, $b);
    }

    /**
     * Sub
     */
    public function sub($a, $b) {
        return $a - $b;
    }

    /**
     * Mul
     */
    public function mul($a, $b) {
        return $a * $b;
    }

    /**
     * Protected methods will not be exposed
     * @param interge
     * @return interge
     */
    protected function _add($a, $b) {
        return $a + $b;
    }
}

$server = new Yar_Server(new Operator());
$server->handle();
?>

Example #2 通过浏览器访问(GET请求)

以上例程的输出类似于：

Yar Server Info

Example #3 Yar Client示例

<?php
$client = new yar_client("http://example.com/operator.php");

/* call directly */
var_dump($client->add(1, 2));

/* call via call */
var_dump($client->call("add", array(3, 2)));

/* __add can not be called */
var_dump($client->_add(1, 2));
?>

以上例程的输出类似于：

int(3)
int(5)
PHP Fatal error:  Uncaught exception 'Yar_Server_Exception' with message 'call to api Operator::_add() failed' in *

Example #4 Yar Concurrent Client示例

<?php
function callback($ret, $callinfo) {
    echo $callinfo['method'] , " result: ", $ret , "\n";
}

/* 注册一个异步调用 */
Yar_Concurrent_Client::call("http://example.com/operator.php", "add", array(1, 2), "callback");
Yar_Concurrent_Client::call("http://example.com/operator.php", "sub", array(2, 1), "callback");
Yar_Concurrent_Client::call("http://example.com/operator.php", "mul", array(2, 2), "callback");

/* 发送所有注册的调用, 等待返回, 返回后Yar会调用callback回掉函数 */
Yar_Concurrent_Client::loop();
?>

以上例程的输出类似于：

mul result: 4
sub result: 1
add result: 3
预定义常量
Yar_Server
Yar


The Yar_Server class

(No version information available, might only be in Git)

简介

类摘要

Yar_Server {
/* 属性 */
protected $_executor ;
/* 方法 */
final public __construct ( Object $obj )
public boolean handle ( void )
}

属性

_executor

Table of Contents

  • Yar_Server::__construct — 创建一个HTTP RPC Server
  • Yar_Server::handle — 启动HTTP RPC Server
范例
Yar_Server::__construct
Yar


创建一个HTTP RPC Server

Yar_Server
Yar_Server::handle
Yar_Server
PHP Manual

Yar_Server::__construct

(PECL yar >= 1.0.0)

Yar_Server::__construct — 创建一个HTTP RPC Server

说明

final public Yar_Server::__construct ( Object $obj )

创建一个Yar的HTTP RPC服务，参数 $obj 对象的所有公开方法都会被注册为服务函数， 可以被RPC调用。

参数

obj

一个对象实例, 这个对象的所有公开方法都会被注册为服务函数.

返回值

返回一个Yar_Server的实例。

范例

Example #1 Yar_Server::__construct()示例

<?php
class API {
    /**
     * the doc info will be generated automatically into service info page.
     * @params
     * @return
     */
    public function some_method($parameter, $option = "foo") {
         return "some_method";
    }

    protected function client_can_not_see() {
    }
}

$service = new Yar_Server(new API());
$service->handle();
?>

以上例程的输出类似于：

参见

  • Yar_Server::handle() - 启动HTTP RPC Server
    •

Yar_Server

Yar_Server::handle

Yar_Server


启动HTTP RPC Server

Yar_Server::__construct
Yar_Client
Yar_Server
PHP Manual

Yar_Server::handle

(PECL yar >= 1.0.0)

Yar_Server::handle — 启动HTTP RPC Server

说明

public boolean Yar_Server::handle ( void )

启动服务, 开始接受客户端的调用请求.

Note:

来自客户端的调用, 都是通过POST请求发送过来的. 如果一个GET请求访问到这个Server, 那在yar.expose_info开启的情况下, 这个服务的Server Info信息会被展现.

参数

此函数没有参数。

返回值

boolean

范例

Example #1 Yar_Server::handle()示例

<?php
class API {
    /**
     * the doc info will be generated automatically into service info page.
     * @params
     * @return
     */
    public function some_method($parameter, $option = "foo") {
    }

    protected function client_can_not_see() {
    }
}

$service = new Yar_Server(new API());
$service->handle();
?>

以上例程的输出类似于：

参见

  • Yar_Server::__construct() - 创建一个HTTP RPC Server
    •

Yar_Server::__construct

Yar_Client

Yar_Server


The Yar_Client class

(No version information available, might only be in Git)

简介

类摘要

Yar_Client {
/* 属性 */
protected $_protocol ;
protected $_uri ;
protected $_options ;
protected $_running ;
/* 方法 */
public void __call ( string $method , array $parameters )
final public __construct ( string $url )
public boolean setOpt ( number $name , mixed $value )
}

属性

_protocol

_uri

_options

_running

Table of Contents

  • Yar_Client::__call — 调用远程服务
  • Yar_Client::__construct — 创建一个客户端实例
  • Yar_Client::setOpt — 设置调用的配置
Yar_Server::handle
Yar_Client::__call
Yar


调用远程服务

Yar_Client
Yar_Client::__construct
Yar_Client
PHP Manual

Yar_Client::__call

(PECL yar >= 1.0.0)

Yar_Client::__call — 调用远程服务

说明

public void Yar_Client::__call ( string $method , array $parameters )

发起一个RPC调用, 并且得到返回值. 如果服务端的远程调用抛出异常, 那么本地也会相应的抛出一个Yar_Server_Exception异常.

参数

method

远程服务的名字.

parameters

调用参数.

返回值

范例

Example #1 Yar_Client::__call() example

<?php

$client = new Yar_Client("http://host/api/");

/* 调用远程服务的some_method服务 */
$result = $client->some_method("parameter");

?>

以上例程的输出类似于：

参见

  • Yar_Client::setOpt() - 设置调用的配置
    •

Yar_Client

Yar_Client::__construct

Yar_Client


创建一个客户端实例

Yar_Client::__call
Yar_Client::setOpt
Yar_Client
PHP Manual

Yar_Client::__construct

(PECL yar >= 1.0.0)

Yar_Client::__construct — 创建一个客户端实例

说明

final public Yar_Client::__construct ( string $url )

创建一个Yar_Client 到一个 Yar_Server的实例.

参数

url

服务端的HTTP URL路径.

返回值

Yar_Client实例.

范例

Example #1 Yar_Client::__construct()示例

<?php
$client = new Yar_Client("http://host/api/");
?>

以上例程的输出类似于：

参见

  • Yar_Client::__call() - 调用远程服务
    •

  • Yar_Client::setOpt() - 设置调用的配置
    •

Yar_Client::__call

Yar_Client::setOpt

Yar_Client


设置调用的配置

Yar_Client::__construct
Yar_Concurrent_Client
Yar_Client
PHP Manual

Yar_Client::setOpt

(PECL yar >= 1.0.0)

Yar_Client::setOpt — 设置调用的配置

说明

public boolean Yar_Client::setOpt ( number $name , mixed $value )

设置调用远程服务的一些配置, 比如超时值, 打包类型等.

参数

name

可以是: YAR_OPT_PACKAGER, YAR_OPT_PERSISTENT (需要服务端支持keepalive), YAR_OPT_TIMEOUT, YAR_OPT_CONNECT_TIMEOUT

value

返回值

范例

Example #1 Yar_Client::setOpt()示例

<?php

$cient = new Yar_Client("http://host/api/");

//Set timeout to 1s
$client->SetOpt(YAR_OPT_CONNECT_TIMEOUT, 1000);

//Set packager to JSON
$client->SetOpt(YAR_OPT_PACKAGER, "json");

/* call remote service */
$result = $client->some_method("parameter");
?>

以上例程的输出类似于：

参见

  • Yar_Client::__call() - 调用远程服务
    •

Yar_Client::__construct

Yar_Concurrent_Client

Yar_Client


The Yar_Concurrent_Client class

(No version information available, might only be in Git)

简介

类摘要

Yar_Concurrent_Client {
/* 属性 */
static $_callstack ;
static $_callback ;
static $_error_callback ;
/* 方法 */
public static int call ( string $uri , string $method , array $parameters [, callable $callback ] )
public static boolean loop ([ callable $callback [, callable $error_callback ]] )
}

属性

_callstack

_callback

_error_callback

Table of Contents

  • Yar_Concurrent_Client::call — 注册一个并行的服务调用
  • Yar_Concurrent_Client::loop — 发送所有注册的并行调用
Yar_Client::setOpt
Yar_Concurrent_Client::call
Yar


注册一个并行的服务调用

Yar_Concurrent_Client
Yar_Concurrent_Client::loop
Yar_Concurrent_Client
PHP Manual

Yar_Concurrent_Client::call

(PECL yar >= 1.0.0)

Yar_Concurrent_Client::call — 注册一个并行的服务调用

说明

public static int Yar_Concurrent_Client::call ( string $uri , string $method , array $parameters [, callable $callback ] )

注册一个并行的(异步的)远程服务调用, 不过这个调用请求不会被立即发出, 而是会在接下来调用 Yar_Concurrent_Client::loop()的时候才真正的发送出去.

参数

uri

RPC 服务的 URI(http 或 tcp).

method

调用的服务名字(也就是服务方法名).

parameters

调用的参数.

callback

回调函数, 在远程服务的返回到达的时候被Yar调用, 从而可以处理返回内容.

返回值

唯一 ID， 可用于区分到底是那个调用的返回.

范例

Example #1 Yar_Concurrent_Client::call()示例

<?php
function callback($retval, $callinfo) {
     var_dump($retval);
}

function error_callback($type, $error, $callinfo) {
    error_log($error);
}

Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"), "callback");
Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"));   // if the callback is not specificed,
                                                                               // callback in loop will be used
Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_PACKAGER => "json"));
                                                                               //this server accept json packager
Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_TIMEOUT=>1));
                                                                               //custom timeout

// 这个时候请求都还没有发出
?>

以上例程的输出类似于：

参见

  • Yar_Concurrent_Client::loop() - 发送所有注册的并行调用
    •

  • Yar_Concurrent_Client::reset()
    •

  • Yar_Server::__construct() - 创建一个HTTP RPC Server
    •

  • Yar_Server::handle() - 启动HTTP RPC Server
    •

Yar_Concurrent_Client

Yar_Concurrent_Client::loop

Yar_Concurrent_Client


发送所有注册的并行调用

Yar_Concurrent_Client::call
Yar_Server_Exception
Yar_Concurrent_Client
PHP Manual

Yar_Concurrent_Client::loop

(PECL yar >= 1.0.0)

Yar_Concurrent_Client::loop — 发送所有注册的并行调用

说明

public static boolean Yar_Concurrent_Client::loop ([ callable $callback [, callable $error_callback ]] )

发送所有的已经通过 Yar_Concurrent_Client::call()注册的并行调用, 并且等待返回.

参数

callback

如果这个回掉函数被设置, 那么Yar在发送出所有的请求之后立即调用一次这个回掉函数(此时还没有任何请求返回), 调用的时候$callinfo参数是NULL.

如果在注册并行调用的时候制定了callback, 那么那个callback有更高的优先级.

error_callback

错误回掉函数, 如果设置了, 那么Yar在出错的时候会调用这个回掉函数.

返回值

范例

Example #1 Yar_Concurrent_Client::loop() example

<?php
function callback($retval, $callinfo) {
     if ($callinfo == NULL) {
        echo "现在, 所有的请求都发出去了, 还没有任何请求返回\n";
     } else {
              echo "这是一个远程调用的返回, 调用的服务名是", $callinfo["method"],
                      ". 调用的sequence是 " , $callinfo["sequence"] , "\n";
        var_dump($retval);
     }
}

function error_callback($type, $error, $callinfo) {
    error_log($error);
}

Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"), "callback");
Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"));   // if the callback is not specificed,
                                                                               // callback in loop will be used
Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_PACKAGER => "json"));
                                                                               //this server accept json packager
Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_TIMEOUT=>1));
                                                                               //custom timeout

Yar_Concurrent_Client::loop("callback", "error_callback"); //send the requests,
                                                           //the error_callback is optional
?>

以上例程的输出类似于：

现在, 所有的请求都发出去了, 还没有任何请求返回
这是一个远程调用的返回, 调用的服务名是some_method, 调用的sequence是 4
string(11) "some_method"
这是一个远程调用的返回, 调用的服务名是some_method, 调用的sequence是 1
string(11) "some_method"
这是一个远程调用的返回, 调用的服务名是some_method, 调用的sequence是 2
string(11) "some_method"
这是一个远程调用的返回, 调用的服务名是some_method, 调用的sequence是 3
string(11) "some_method"

参见

  • Yar_Concurrent_Client::call() - 注册一个并行的服务调用
  • Yar_Server::__construct() - 创建一个HTTP RPC Server
  • Yar_Server::handle() - 启动HTTP RPC Server
Yar_Concurrent_Client::call
Yar_Server_Exception
Yar_Concurrent_Client


The Yar_Server_Exception class

(No version information available, might only be in Git)

简介

If service threw exceptions, A Yar_Server_Exception will be threw in client side.

类摘要

Yar_Server_Exception extends Exception {
/* 属性 */
protected $_type ;
/* 方法 */
public string getType ( void )
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}

属性

message

code

file

line

_type

Table of Contents

  • Yar_Server_Exception::getType — 获取异常的原始类型
Yar_Concurrent_Client::loop
Yar_Server_Exception::getType
Yar


获取异常的原始类型

Yar_Server_Exception
Yar_Client_Exception
Yar_Server_Exception
PHP Manual

Yar_Server_Exception::getType

(PECL yar >= 1.0.0)

Yar_Server_Exception::getType — 获取异常的原始类型

说明

public string Yar_Server_Exception::getType ( void )

当服务端的服务函数抛出异常的时候, 客户端本地会响应的抛出一个Yar_Server_Exception异常. 有一个属性, 标明了服务端异常的类型. 这个方法就是获取这个异常类型.

参数

此函数没有参数。

返回值

string

范例

Example #1 Yar_Server_Exception::getType()示例

//Server.php
<?php
class Custom_Exception extends Exception {};

class API {
    public function throw_exception($name) {
        throw new Custom_Exception($name);
    }
}

$service = new Yar_Server(new API());
$service->handle();
?>

//Client.php
<?php
$client = new Yar_Client("http://host/api.php");

try {
    $client->throw_exception("client");
} catch (Yar_Server_Exception $e) {
    var_dump($e->getType());
    var_dump($e->getMessage());
}

以上例程的输出类似于：

string(16) "Custom_Exception"
string(6) "client"

参见

Yar_Server_Exception
Yar_Client_Exception
Yar_Server_Exception


The Yar_Client_Exception class

(No version information available, might only be in Git)

简介

类摘要

Yar_Client_Exception extends Exception {
/* 属性 */
/* 方法 */
public void getType ( void )
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}

属性

message

code

file

line

Table of Contents

  • Yar_Client_Exception::getType — The getType purpose
Yar_Server_Exception::getType
Yar_Client_Exception::getType
Yar


The getType purpose

Yar_Client_Exception
XML-RPC
Yar_Client_Exception
PHP Manual

Yar_Client_Exception::getType

(PECL yar >= 1.0.0)

Yar_Client_Exception::getType — The getType purpose

说明

public void Yar_Client_Exception::getType ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

范例

Example #1 Yar_Client_Exception::getType() example

<?php

/* ... */

?>

以上例程的输出类似于：

...

参见

Yar_Client_Exception
XML-RPC
Yar_Client_Exception


XML-RPC

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • XML-RPC 函数
    • xmlrpc_decode_request — 将 XML 译码为 PHP 本身的类型
    • xmlrpc_decode — 将 XML 译码为 PHP 本身的类型
    • xmlrpc_encode_request — 为 PHP 的值生成 XML
    • xmlrpc_encode — 为 PHP 的值生成 XML
    • xmlrpc_get_type — 为 PHP 的值获取 xmlrpc 的类型
    • xmlrpc_is_fault — Determines if an array value represents an XMLRPC fault
    • xmlrpc_parse_method_descriptions — 将 XML 译码成方法描述的列表
    • xmlrpc_server_add_introspection_data — 添加自我描述的文档
    • xmlrpc_server_call_method — 解析 XML 请求同时调用方法
    • xmlrpc_server_create — 创建一个 xmlrpc 服务端
    • xmlrpc_server_destroy — 销毁服务端资源
    • xmlrpc_server_register_introspection_callback — 注册一个 PHP 函数用于生成文档
    • xmlrpc_server_register_method — 注册一个 PHP 函数用于匹配 xmlrpc 方法名
    • xmlrpc_set_type — 为一个 PHP 字符串值设置 xmlrpc 的类型、base64 或日期时间
Yar_Client_Exception::getType
简介
Web 服务


简介

These functions can be used to write XML-RPC servers and clients. You can find more information about XML-RPC at » http://www.xmlrpc.com/, and more documentation on this extension and its functions at » http://xmlrpc-epi.sourceforge.net/.

Warning

此扩展是实验性 的。 此扩展的表象，包括其函数名称以及其他此扩展的相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本扩展风险自担 。

XML-RPC
安装／配置
XML-RPC


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
XML-RPC


安装

默认情况下在 PHP 中是不能使用 XML-RPC 支持的。你需要使用 --with-xmlrpc[=DIR] 配置选项编译 PHP 才能够使用 XML-RPC 支持。从 PHP 4.1.0 开始附带了此扩展。

需求
运行时配置
安装／配置


资源类型

This extension defines a XML-RPC server resource returned by xmlrpc_server_create().

运行时配置
预定义常量
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
XML-RPC 函数
XML-RPC


XML-RPC 函数

Table of Contents

  • xmlrpc_decode_request — 将 XML 译码为 PHP 本身的类型
  • xmlrpc_decode — 将 XML 译码为 PHP 本身的类型
  • xmlrpc_encode_request — 为 PHP 的值生成 XML
  • xmlrpc_encode — 为 PHP 的值生成 XML
  • xmlrpc_get_type — 为 PHP 的值获取 xmlrpc 的类型
  • xmlrpc_is_fault — Determines if an array value represents an XMLRPC fault
  • xmlrpc_parse_method_descriptions — 将 XML 译码成方法描述的列表
  • xmlrpc_server_add_introspection_data — 添加自我描述的文档
  • xmlrpc_server_call_method — 解析 XML 请求同时调用方法
  • xmlrpc_server_create — 创建一个 xmlrpc 服务端
  • xmlrpc_server_destroy — 销毁服务端资源
  • xmlrpc_server_register_introspection_callback — 注册一个 PHP 函数用于生成文档
  • xmlrpc_server_register_method — 注册一个 PHP 函数用于匹配 xmlrpc 方法名
  • xmlrpc_set_type — 为一个 PHP 字符串值设置 xmlrpc 的类型、base64 或日期时间
预定义常量
xmlrpc_decode_request
XML-RPC


将 XML 译码为 PHP 本身的类型

XML-RPC 函数
xmlrpc_decode
XML-RPC 函数
PHP Manual

xmlrpc_decode_request

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

xmlrpc_decode_request — 将 XML 译码为 PHP 本身的类型

说明

mixed xmlrpc_decode_request ( string $xml , string &$method [, string $encoding ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

XML-RPC 函数
xmlrpc_decode
XML-RPC 函数


将 XML 译码为 PHP 本身的类型

xmlrpc_decode_request
xmlrpc_encode_request
XML-RPC 函数
PHP Manual

xmlrpc_decode

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

xmlrpc_decode — 将 XML 译码为 PHP 本身的类型

说明

mixed xmlrpc_decode ( string $xml [, string $encoding = "iso-8859-1" ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

xml

XML response returned by XMLRPC method.

encoding

Input encoding supported by iconv.

返回值

Returns either an array, or an integer, or a string, or a boolean according to the response returned by the XMLRPC method.

范例

See example by xmlrpc_encode_request().

参见

  • xmlrpc_encode_request() - 为 PHP 的值生成 XML
  • xmlrpc_is_fault() - Determines if an array value represents an XMLRPC fault

xmlrpc_decode_request
xmlrpc_encode_request
XML-RPC 函数


为 PHP 的值生成 XML

xmlrpc_decode
xmlrpc_encode
XML-RPC 函数
PHP Manual

xmlrpc_encode_request

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

xmlrpc_encode_request — 为 PHP 的值生成 XML

说明

string xmlrpc_encode_request ( string $method , mixed $params [, array $output_options ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

method

Name of the method to call.

params

Method parameters compatible with method signature.

output_options

Array specifying output options may contain (default values are emphasised):

  • output_type: php, xml

  • verbosity: no_white_space, newlines_only, pretty

  • escaping: cdata, non-ascii, non-print, markup (may be a string with one value or an array with multiple values)

  • version: simple, xmlrpc, soap 1.1, auto

  • encoding: iso-8859-1, other character set supported by iconv

返回值

Returns a string containing the XML representation of the request.

范例

Example #1 XMLRPC client functions example

<?php
$request = xmlrpc_encode_request("method", array(1, 2, 3));
$context = stream_context_create(array('http' => array(
    'method' => "POST",
    'header' => "Content-Type: text/xml",
    'content' => $request
)));
$file = file_get_contents("http://www.example.com/xmlrpc", false, $context);
$response = xmlrpc_decode($file);
if ($response && xmlrpc_is_fault($response)) {
    trigger_error("xmlrpc: $response[faultString] ($response[faultCode])");
} else {
    print_r($response);
}
?>

参见

  • stream_context_create() - 创建资源流上下文
  • file_get_contents() - 将整个文件读入一个字符串
  • xmlrpc_decode() - 将 XML 译码为 PHP 本身的类型

xmlrpc_decode
xmlrpc_encode
XML-RPC 函数


为 PHP 的值生成 XML

xmlrpc_encode_request
xmlrpc_get_type
XML-RPC 函数
PHP Manual

xmlrpc_encode

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

xmlrpc_encode — 为 PHP 的值生成 XML

说明

string xmlrpc_encode ( mixed $value )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

xmlrpc_encode_request
xmlrpc_get_type
XML-RPC 函数


为 PHP 的值获取 xmlrpc 的类型

xmlrpc_encode
xmlrpc_is_fault
XML-RPC 函数
PHP Manual

xmlrpc_get_type

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

xmlrpc_get_type — 为 PHP 的值获取 xmlrpc 的类型

说明

string xmlrpc_get_type ( mixed $value )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

该函数对于 base64 与日期时间字符串特别有用。

参数

value

PHP value

返回值

Returns the XML-RPC type.

范例

Example #1 XML-RPC type example

<?php
echo xmlrpc_get_type(null) . "\n"; // base64
echo xmlrpc_get_type(false) . "\n"; // boolean
echo xmlrpc_get_type(1) . "\n"; // int
echo xmlrpc_get_type(1.0) . "\n"; // double
echo xmlrpc_get_type("") . "\n"; // string
echo xmlrpc_get_type(array()) . "\n"; // array
echo xmlrpc_get_type(new stdClass) . "\n"; // array
echo xmlrpc_get_type(STDIN) . "\n"; // int
?>

参见

  • xmlrpc_set_type() - 为一个 PHP 字符串值设置 xmlrpc 的类型、base64 或日期时间

xmlrpc_encode
xmlrpc_is_fault
XML-RPC 函数


Determines if an array value represents an XMLRPC fault

xmlrpc_get_type
xmlrpc_parse_method_descriptions
XML-RPC 函数
PHP Manual

xmlrpc_is_fault

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

xmlrpc_is_fault — Determines if an array value represents an XMLRPC fault

说明

bool xmlrpc_is_fault ( array $arg )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

arg

Array returned by xmlrpc_decode().

返回值

Returns TRUE if the argument means fault, FALSE otherwise. Fault description is available in $arg["faultString"], fault code is in $arg["faultCode"].

范例

See example by xmlrpc_encode_request().

参见

  • xmlrpc_decode() - 将 XML 译码为 PHP 本身的类型

xmlrpc_get_type
xmlrpc_parse_method_descriptions
XML-RPC 函数


将 XML 译码成方法描述的列表

xmlrpc_is_fault
xmlrpc_server_add_introspection_data
XML-RPC 函数
PHP Manual

xmlrpc_parse_method_descriptions

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

xmlrpc_parse_method_descriptions — 将 XML 译码成方法描述的列表

说明

array xmlrpc_parse_method_descriptions ( string $xml )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

xmlrpc_is_fault
xmlrpc_server_add_introspection_data
XML-RPC 函数


添加自我描述的文档

xmlrpc_parse_method_descriptions
xmlrpc_server_call_method
XML-RPC 函数
PHP Manual

xmlrpc_server_add_introspection_data

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

xmlrpc_server_add_introspection_data — 添加自我描述的文档

说明

int xmlrpc_server_add_introspection_data ( resource $server , array $desc )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

xmlrpc_parse_method_descriptions
xmlrpc_server_call_method
XML-RPC 函数


解析 XML 请求同时调用方法

xmlrpc_server_add_introspection_data
xmlrpc_server_create
XML-RPC 函数
PHP Manual

xmlrpc_server_call_method

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

xmlrpc_server_call_method — 解析 XML 请求同时调用方法

说明

string xmlrpc_server_call_method ( resource $server , string $xml , mixed $user_data [, array $output_options ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

xmlrpc_server_add_introspection_data
xmlrpc_server_create
XML-RPC 函数


创建一个 xmlrpc 服务端

xmlrpc_server_call_method
xmlrpc_server_destroy
XML-RPC 函数
PHP Manual

xmlrpc_server_create

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

xmlrpc_server_create — 创建一个 xmlrpc 服务端

说明

resource xmlrpc_server_create ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

xmlrpc_server_call_method
xmlrpc_server_destroy
XML-RPC 函数


销毁服务端资源

xmlrpc_server_create
xmlrpc_server_register_introspection_callback
XML-RPC 函数
PHP Manual

xmlrpc_server_destroy

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

xmlrpc_server_destroy — 销毁服务端资源

说明

int xmlrpc_server_destroy ( resource $server )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

xmlrpc_server_create
xmlrpc_server_register_introspection_callback
XML-RPC 函数


注册一个 PHP 函数用于生成文档

xmlrpc_server_destroy
xmlrpc_server_register_method
XML-RPC 函数
PHP Manual

xmlrpc_server_register_introspection_callback

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

xmlrpc_server_register_introspection_callback — 注册一个 PHP 函数用于生成文档

说明

bool xmlrpc_server_register_introspection_callback ( resource $server , string $function )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

xmlrpc_server_destroy
xmlrpc_server_register_method
XML-RPC 函数


注册一个 PHP 函数用于匹配 xmlrpc 方法名

xmlrpc_server_register_introspection_callback
xmlrpc_set_type
XML-RPC 函数
PHP Manual

xmlrpc_server_register_method

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

xmlrpc_server_register_method — 注册一个 PHP 函数用于匹配 xmlrpc 方法名

说明

bool xmlrpc_server_register_method ( resource $server , string $method_name , string $function )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Warning

本函数还未编写文档，仅有参数列表。

xmlrpc_server_register_introspection_callback
xmlrpc_set_type
XML-RPC 函数


为一个 PHP 字符串值设置 xmlrpc 的类型、base64 或日期时间

xmlrpc_server_register_method
Windows 专用扩展
XML-RPC 函数
PHP Manual

xmlrpc_set_type

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

xmlrpc_set_type — 为一个 PHP 字符串值设置 xmlrpc 的类型、base64 或日期时间

说明

bool xmlrpc_set_type ( string &$value , string $type )

为一个 PHP 字符串值设置 xmlrpc 的类型、base64 或日期时间

Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

参数

value

Value to set the type

type

'base64' or 'datetime'

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 If successful, value is converted to an object.

范例

Example #1 A xmlrpc_set_type() example

<?php

$params = date("Ymd\TH:i:s", time());
xmlrpc_set_type($params, 'datetime');
echo xmlrpc_encode($params);

?>

以上例程的输出类似于：

<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <dateTime.iso8601>20090322T23:43:03</dateTime.iso8601>
 </value>
</param>
</params>

错误／异常

Issues E_WARNING with type unsupported by XMLRPC.

xmlrpc_server_register_method
Windows 专用扩展
XML-RPC 函数


Windows 专用扩展

  • COM — COM and .Net (Windows)
    • 简介
    • 安装／配置
    • 预定义常量
    • Errors and error handling
    • 范例
    • COM — The COM class
    • DOTNET — The DOTNET class
    • VARIANT — VARIANT class
    • COM 函数
  • win32ps
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • win32ps 函数
  • win32service
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • win32service 函数
xmlrpc_set_type
COM
函数参考


COM and .Net (Windows)

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Errors and error handling
  • 范例
    • For Each
    • Arrays and Array-style COM properties
  • COM — The COM class
  • DOTNET — The DOTNET class
  • VARIANT — VARIANT class
  • COM 函数
    • com_create_guid — Generate a globally unique identifier (GUID)
    • com_event_sink — Connect events from a COM object to a PHP object
    • com_get_active_object — Returns a handle to an already running instance of a COM object
    • com_load_typelib — 装载一个 Typelib
    • com_message_pump — Process COM messages, sleeping for up to timeoutms milliseconds
    • com_print_typeinfo — Print out a PHP class definition for a dispatchable interface
    • variant_abs — Returns the absolute value of a variant
    • variant_add — "Adds" two variant values together and returns the result
    • variant_and — Performs a bitwise AND operation between two variants
    • variant_cast — Convert a variant into a new variant object of another type
    • variant_cat — concatenates two variant values together and returns the result
    • variant_cmp — Compares two variants
    • variant_date_from_timestamp — Returns a variant date representation of a Unix timestamp
    • variant_date_to_timestamp — Converts a variant date/time value to Unix timestamp
    • variant_div — Returns the result from dividing two variants
    • variant_eqv — Performs a bitwise equivalence on two variants
    • variant_fix — Returns the integer portion of a variant
    • variant_get_type — Returns the type of a variant object
    • variant_idiv — Converts variants to integers and then returns the result from dividing them
    • variant_imp — Performs a bitwise implication on two variants
    • variant_int — Returns the integer portion of a variant
    • variant_mod — Divides two variants and returns only the remainder
    • variant_mul — Multiplies the values of the two variants
    • variant_neg — Performs logical negation on a variant
    • variant_not — Performs bitwise not negation on a variant
    • variant_or — Performs a logical disjunction on two variants
    • variant_pow — Returns the result of performing the power function with two variants
    • variant_round — Rounds a variant to the specified number of decimal places
    • variant_set_type — Convert a variant into another type "in-place"
    • variant_set — Assigns a new value for a variant object
    • variant_sub — Subtracts the value of the right variant from the left variant value
    • variant_xor — Performs a logical exclusion on two variants
Windows 专用扩展
简介
Windows 专用扩展


简介

COM is an acronym for Component Object Model; it is an object orientated layer (and associated services) on top of DCE RPC (an open standard) and defines a common calling convention that enables code written in any language to call and interoperate with code written in any other language (provided those languages are COM aware). Not only can the code be written in any language, but it need not even be part of the same executable; the code can be loaded from a DLL, be found in another process running on the same machine, or, with DCOM (Distributed COM), be found in another process on a remote machine, all without your code even needing to know where a component resides.

There is a subset of COM known as OLE Automation which comprises a set of COM interfaces that allow loose binding to COM objects, so that they can be introspected and called at run-time without compile-time knowledge of how the object works. The PHP COM extension utilizes the OLE Automation interfaces to allow you to create and call compatible objects from your scripts. Technically speaking, this should really be called the "OLE Automation Extension for PHP", since not all COM objects are OLE compatible.

Now, why would or should you use COM? COM is one of the main ways to glue applications and components together on the Windows platform; using COM you can launch Microsoft Word, fill in a document template and save the result as a Word document and send it to a visitor of your web site. You can also use COM to perform administrative tasks for your network and to configure your IIS; these are just the most common uses; you can do much more with COM.

Starting with PHP 5, this extension (and this documentation) was rewritten from scratch and much of the old confusing and bogus cruft has been removed. Additionally, we support the instantiation and creation of .Net assemblies using the COM interoperability layer provided by Microsoft.

Please read » this article for an overview of the changes in this extension in PHP 5.

COM
安装／配置
COM


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
COM


需求

COM functions are only available for the Windows version of PHP.

.Net support requires PHP 5 and the .Net runtime.

安装／配置
安装
安装／配置


安装

As of PHP 5.3.15 / 5.4.5, this extension requires php_com_dotnet.dll to be enabled inside of php.ini in order to use these functions. Previous versions of PHP enabled these extensions by default.

You are responsible for installing support for the various COM objects that you intend to use (such as MS Word); we don't and can't bundle all of those with PHP.

需求
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

COM 配置选项
名字 | 默认 | 可修改范围 | 更新日志
com.allow_dcom | "0" | PHP_INI_SYSTEM | 自 PHP 4.0.5 起可用
com.autoregister_typelib | "0" | PHP_INI_ALL | 在 PHP 4 中是 PHP_INI_SYSTEM。自 PHP 4.1.0 起可用
com.autoregister_verbose | "0" | PHP_INI_ALL | 在 PHP 4 中是 PHP_INI_SYSTEM。自 PHP 4.1.0 起可用
com.autoregister_casesensitive | "1" | PHP_INI_ALL | 在 PHP 4 中是 PHP_INI_SYSTEM。自 PHP 4.1.0 起可用
com.code_page | "" | PHP_INI_ALL | 自 PHP 5.0.0 起可用
com.typelib_file | "" | PHP_INI_SYSTEM | 自 PHP 4.0.5 起可用
有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

这是配置指令的简短说明。

com.allow_dcom

如果打开此选项，PHP 将被允许以一个 D-COM（Distributed COM）客户方式操作并允许 PHP 脚本在远程服务器上实例化 COM 对象。

com.autoregister_typelib

When this is turned on, PHP will attempt to register constants from the typelibrary of objects that it instantiates, if those objects implement the interfaces required to obtain that information. The case sensitivity of the constants it registers is controlled by the configuration directive.

com.autoregister_verbose

When this is turned on, any problems with loading a typelibrary during object instantiation will be reported using the PHP error mechanism. The default is off, which does not emit any indication if there was an error finding or loading the type library.

com.autoregister_casesensitive

When this is turned on (the default), constants found in auto-loaded type libraries will be registered case sensitively. See com_load_typelib() for more details.

com.code_page

It controls the default character set code-page to use when passing strings to and from COM objects. If set to an empty string, PHP will assume that you want CP_ACP, which is the default system ANSI code page.

If the text in your scripts is encoded using a different encoding/character set by default, setting this directive will save you from having to pass the code page as a parameter to the COM class constructor. Please note that by using this directive (as with any PHP configuration directive), your PHP script becomes less portable; you should use the COM constructor parameter whenever possible.

Note: This configuration directive was introduced with PHP 5.

com.typelib_file

When set, this should hold the path to a file that contains a list of typelibraries that should be loaded on startup. Each line of the file will be treated as the type library name and loaded as though you had called com_load_typelib(). The constants will be registered persistently, so that the library only needs to be loaded once. If a type library name ends with the string #cis or #case_insensitive, then the constants from that library will be registered case insensitively.

安装
资源类型
安装／配置


资源类型

This extension defines a reference to a COM component returned by deprecated com_load() (this function does not exist in PHP 5; use the COM class instead).

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

CLSCTX_INPROC_SERVER (integer)
CLSCTX_INPROC_HANDLER (integer)
CLSCTX_LOCAL_SERVER (integer)
CLSCTX_REMOTE_SERVER (integer)
CLSCTX_SERVER (integer)
CLSCTX_ALL (integer)
VT_NULL (integer)
VT_EMPTY (integer)
VT_UI1 (integer)
VT_I2 (integer)
VT_I4 (integer)
VT_R4 (integer)
VT_R8 (integer)
VT_BOOL (integer)
VT_ERROR (integer)
VT_CY (integer)
VT_DATE (integer)
VT_BSTR (integer)
VT_DECIMAL (integer)
VT_UNKNOWN (integer)
VT_DISPATCH (integer)
VT_VARIANT (integer)
VT_I1 (integer)
VT_UI2 (integer)
VT_UI4 (integer)
VT_INT (integer)
VT_UINT (integer)
VT_ARRAY (integer)
VT_BYREF (integer)
CP_ACP (integer)
CP_MACCP (integer)
CP_OEMCP (integer)
CP_UTF7 (integer)
CP_UTF8 (integer)
CP_SYMBOL (integer)
CP_THREAD_ACP (integer)
VARCMP_LT (integer)
VARCMP_EQ (integer)
VARCMP_GT (integer)
VARCMP_NULL (integer)
NORM_IGNORECASE (integer)
NORM_IGNORENONSPACE (integer)
NORM_IGNORESYMBOLS (integer)
NORM_IGNOREWIDTH (integer)
NORM_IGNOREKANATYPE (integer)
NORM_IGNOREKASHIDA (integer)
DISP_E_DIVBYZERO (integer)
DISP_E_OVERFLOW (integer)
MK_E_UNAVAILABLE (integer)
资源类型
Errors and error handling
COM


Errors and error handling

Exceptions (PHP 5)

This extension will throw instances of the class com_exception whenever there is a potentially fatal error reported by COM. All COM exceptions have a well-defined code property that corresponds to the HRESULT return value from the various COM operations. You may use this code to make programmatic decisions on how to handle the exception.

预定义常量
范例
COM


范例

Table of Contents

  • For Each
  • Arrays and Array-style COM properties
Errors and error handling
For Each
COM


For Each

Starting with PHP 5, you may use PHP's own foreach statement to iterate over the contents of a standard COM/OLE IEnumVariant. In layman's terms, this means that you can use foreach in places where you would have used For Each in VB/ASP code.

Example #1 For Each in ASP

<%
Set domainObject = GetObject("WinNT://Domain")
For Each obj in domainObject
  Response.Write obj.Name & "<br />"
Next
%>

Example #2 foreach in PHP

<?php
$domainObject = new COM("WinNT://Domain");
foreach ($domainObject as $obj) {
   echo $obj->Name . "<br />";
}
?>

范例
Arrays and Array-style COM properties
范例


Arrays and Array-style COM properties

Many COM objects expose their properties as arrays, or using array-style access. In PHP 4, you may use PHP array syntax to read/write such a property, but only a single dimension is allowed. If you want to read a multi-dimensional property, you could instead make the property access into a function call, with each parameter representing each dimension of the array access, but there is no way to write to such a property.

PHP 5 introduces the following new features to make your life easier:

  • Access multi-dimensional arrays, or COM properties that require multiple parameters using PHP array syntax. You can also write or set properties using this technique.

  • Iterate SafeArrays ("true" arrays) using the foreach control structure. This works because SafeArrays include information about their size. If an array-style property implements IEnumVariant then you can also use foreach for that property too; take a look at For Each for more information on this topic.

For Each
COM
范例


The COM class

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

Description

The COM class allows you to instantiate an OLE compatible COM object and call its methods and access its properties.

$obj = new COM("Application.ID")

Methods

COM::__construct ( string $module_name [, mixed $server_name [, int $codepage [, string $typelib ]]] )

COM class constructor. The parameters have the following meanings:

module_name
Can be a ProgID, Class ID or Moniker that names the component to load. A ProgID is typically the application or DLL name, followed by a period, followed by the object name. e.g: Word.Application. A Class ID is the UUID that uniquely identifies a given class. A Moniker is a special form of naming, similar in concept to a URL scheme, that identifies a resource and specifies how it should be loaded. As an example, you could load up Word and get an object representing a word document by specifying the full path to the word document as the module name, or you can use LDAP: as a moniker to use the ADSI interface to LDAP.
server_name
The name of the DCOM server on which the component should be loaded and run. If NULL, the object is run using the default for the application. The default is typically to run it on the local machine, although the administrator might have configured the application to launch on a different machine. If you specify a non-NULL value for server, PHP will refuse to load the object unless the configuration option is set to TRUE.

If server_name is an array, it should contain the following elements (case sensitive!). Note that they are all optional (although you need to specify both Username and Password together); if you omit the Server setting, the default server will be used (as mentioned above), and the instantiation of the object will not be affected by the directive.

DCOM server name
server_name key | type | description
Server | string | The name of the server.
Username | string | The username to connect as.
Password | string | The password for Username.
Flags | integer | One or more of the following constants, logically OR'd together: CLSCTX_INPROC_SERVER, CLSCTX_INPROC_HANDLER, CLSCTX_LOCAL_SERVER, CLSCTX_REMOTE_SERVER, CLSCTX_SERVER and CLSCTX_ALL. The default value if not specified here is CLSCTX_SERVER if you also omit Server, or CLSCTX_REMOTE_SERVER if you do specify a server. You should consult the Microsoft documentation for CoCreateInstance for more information on the meaning of these constants; you will typically never have to use them.

codepage
Specifies the codepage that is used to convert strings to unicode-strings and vice versa. The conversion is applied whenever a PHP string is passed as a parameter or returned from a method of this COM object. The code page is sticky in PHP 5, which means that it will propagate to objects and variants returned from the object. Possible values are CP_ACP (use system default ANSI code page - the default if this parameter is omitted), CP_MACCP, CP_OEMCP, CP_SYMBOL, CP_THREAD_ACP (use codepage/locale set for the current executing thread), CP_UTF7 and CP_UTF8. You may also use the number for a given codepage; consult the Microsoft documentation for more details on codepages and their numeric values.

Overloaded Methods

The returned object is an overloaded object, which means that PHP does not see any fixed methods as it does with regular classes; instead, any property or method accesses are passed through to COM.

Starting with PHP 5, PHP will automatically detect methods that accept parameters by reference, and will automatically convert regular PHP variables to a form that can be passed by reference. This means that you can call the method very naturally; you needn't go to any extra effort in your code.

Pseudo Methods

In PHP versions prior to 5, a number of not very pleasant hacks meant that the following method names were not passed through to COM and were handled directly by PHP. PHP 5 eliminates these things; read the details below to determine how to fix your scripts. These magic method names are case insensitive.

void COM::AddRef ( void )

Artificially adds a reference count to the COM object.

Warning

You should never need to use this method. It exists as a logical complement to the Release() method below.

void COM::Release ( void )

Artificially removes a reference count from the COM object.

Warning

You should never need to use this method. Its existence in PHP is a bug designed to work around a bug that keeps COM objects running longer than they should.

Pseudo Methods for Iterating

These pseudo methods are only available if com_isenum() returns TRUE, in which case, they hide any methods with the same names that might otherwise be provided by the COM object. These methods have all been eliminated in PHP 5, and you should use For Each instead.

variant COM::All ( void )

Returns a variant representing a SafeArray that has 10 elements; each element will be an empty/null variant. This function was supposed to return an array containing all the elements from the iterator, but was never completed. Do not use.

variant COM::Next ( void )

Returns a variant representing the next element available from the iterator, or FALSE when there are no more elements.

variant COM::Prev ( void )

Returns a variant representing the previous element available from the iterator, or FALSE when there are no more elements.

void COM::Reset ( void )

Rewinds the iterator back to the start.

COM examples

Example #1 COM example (1)

<?php
// starting word
$word = new COM("word.application") or die("Unable to instantiate Word");
echo "Loaded Word, version {$word->Version}\n";

//bring it to front
$word->Visible = 1;

//open an empty document
$word->Documents->Add();

//do some weird stuff
$word->Selection->TypeText("This is a test...");
$word->Documents[1]->SaveAs("Useless test.doc");

//closing word
$word->Quit();

//free the object
$word = null;
?>

Example #2 COM example (2)

<?php

$conn = new COM("ADODB.Connection") or die("Cannot start ADO");
$conn->Open("Provider=SQLOLEDB; Data Source=localhost;
Initial Catalog=database; User ID=user; Password=password");

$rs = $conn->Execute("SELECT * FROM sometable");    // Recordset

$num_columns = $rs->Fields->Count();
echo $num_columns . "\n";

for ($i=0; $i < $num_columns; $i++) {
    $fld[$i] = $rs->Fields($i);
}

$rowcount = 0;
while (!$rs->EOF) {
    for ($i=0; $i < $num_columns; $i++) {
        echo $fld[$i]->value . "\t";
    }
    echo "\n";
    $rowcount++;            // increments rowcount
    $rs->MoveNext();
}

$rs->Close();
$conn->Close();

$rs = null;
$conn = null;

?>

Arrays and Array-style COM properties
DOTNET
COM


The DOTNET class

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

Description

The DOTNET class allows you to instantiate a class from a .Net assembly and call its methods and access its properties.

$obj = new DOTNET("assembly", "classname")

Methods

DOTNET::__construct ( string $assembly_name , string $class_name [, int $codepage ] )

DOTNET class constructor. assembly_name specifies which assembly should be loaded, and class_name specifices which class in that assembly to instantiate. You may optionally specify a codepage to use for unicode string transformations; see the COM class for more details on code pages.

The returned object is an overloaded object, which means that PHP does not see any fixed methods as it does with regular classes; instead, any property or method accesses are passed through to COM and from there to DOTNET. In other words, the .Net object is mapped through the COM interoperability layer provided by the .Net runtime.

Once you have created a DOTNET object, PHP treats it identically to any other COM object; all the same rules apply.

Example #1 DOTNET example

<?php
 $stack = new DOTNET("mscorlib", "System.Collections.Stack");
 $stack->Push(".Net");
 $stack->Push("Hello ");
 echo $stack->Pop() . $stack->Pop();
?>

Note:

You need to install the .Net runtime on your web server to take advantage of this feature.

COM
VARIANT
COM


VARIANT class

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

Description

The VARIANT is COM's equivalent of the PHP zval; it is a structure that can contain a value with a range of different possible types. The VARIANT class provided by the COM extension allows you to have more control over the way that PHP passes values to and from COM.

$vVar = new VARIANT($var)

Methods

VARIANT::__construct ([ mixed $value [, int $type [, int $codepage ]]] )

VARIANT class constructor. Parameters:

value
initial value. if omitted, or set to NULL an VT_EMPTY object is created.
type
specifies the content type of the VARIANT object. Possible values are one of the VT_XXX 预定义常量. In PHP versions prior to PHP 5, you could force PHP to pass a variant object by reference by OR'ing VT_BYREF with the type. In PHP 5, this hack is not supported; instead, PHP 5 can detect parameters passed by reference automatically; they do not even need to be passed as VARIANT objects. Consult the MSDN library for additional information on the VARIANT type.
codepage
specifies the codepage that is used to convert strings to unicode. See the parameter of the same name in the COM class for more information.

PHP versions prior to PHP 5 define a number of (undocumented) virtual properties for instances of the VARIANT class; these properties have all been removed in PHP 5 in favour of its more natural syntax; these differences are best highlighted by example:

Example #1 Variant example, PHP 4.x style

<?php
$v = new VARIANT(42);
print "The type is " . $v->type . "<br/>";
print "The value is " . $v->value . "<br/>";
?>

Example #2 Variant example, PHP 5 style

<?php
$v = new VARIANT(42);
print "The type is " . variant_get_type($v) . "<br/>";
print "The value is " . $v . "<br/>";
?>

The reason for the change is that, internally, the COM extension sees VARIANT, COM and DOTNET classes as the same thing, and the design philosophy for these classes is that all property and member accesses are passed through to COM with no interference. The new syntax is more natural and less effort, and most of the removed virtual properties didn't make any sense in a PHP context in any case.

Note:

PHP 5 takes a much simpler approach to handling VARIANTs; when returning a value or fetching a variant property, the variant is converted to a PHP value only when there is a direct mapping between the types that would not result in a loss of information. In all other cases, the result is returned as an instance of the VARIANT class. You can force PHP to convert or evaluate the variant as a PHP native type by using a casting operator explicitly, or implicitly casting to a string by printing it. You may use the wide range of variant functions to perform arithmetic operations on variants without forcing a conversion or risking a loss of data.

See also variant_get_type().

DOTNET
COM 函数
COM


COM 函数

参见

For further information on COM read the » COM specification. You might find some additional useful information in our FAQ for PHP 和 COM. If you're thinking of using MS Office applications on the server side, you should read the information here: » Considerations for Server-Side Automation of Office.

Table of Contents

  • com_create_guid — Generate a globally unique identifier (GUID)
  • com_event_sink — Connect events from a COM object to a PHP object
  • com_get_active_object — Returns a handle to an already running instance of a COM object
  • com_load_typelib — 装载一个 Typelib
  • com_message_pump — Process COM messages, sleeping for up to timeoutms milliseconds
  • com_print_typeinfo — Print out a PHP class definition for a dispatchable interface
  • variant_abs — Returns the absolute value of a variant
  • variant_add — "Adds" two variant values together and returns the result
  • variant_and — Performs a bitwise AND operation between two variants
  • variant_cast — Convert a variant into a new variant object of another type
  • variant_cat — concatenates two variant values together and returns the result
  • variant_cmp — Compares two variants
  • variant_date_from_timestamp — Returns a variant date representation of a Unix timestamp
  • variant_date_to_timestamp — Converts a variant date/time value to Unix timestamp
  • variant_div — Returns the result from dividing two variants
  • variant_eqv — Performs a bitwise equivalence on two variants
  • variant_fix — Returns the integer portion of a variant
  • variant_get_type — Returns the type of a variant object
  • variant_idiv — Converts variants to integers and then returns the result from dividing them
  • variant_imp — Performs a bitwise implication on two variants
  • variant_int — Returns the integer portion of a variant
  • variant_mod — Divides two variants and returns only the remainder
  • variant_mul — Multiplies the values of the two variants
  • variant_neg — Performs logical negation on a variant
  • variant_not — Performs bitwise not negation on a variant
  • variant_or — Performs a logical disjunction on two variants
  • variant_pow — Returns the result of performing the power function with two variants
  • variant_round — Rounds a variant to the specified number of decimal places
  • variant_set_type — Convert a variant into another type "in-place"
  • variant_set — Assigns a new value for a variant object
  • variant_sub — Subtracts the value of the right variant from the left variant value
  • variant_xor — Performs a logical exclusion on two variants
VARIANT
com_create_guid
COM


Generate a globally unique identifier (GUID)

COM 函数
com_event_sink
COM 函数
PHP Manual

com_create_guid

(PHP 5, PHP 7)

com_create_guid — Generate a globally unique identifier (GUID)

说明

string com_create_guid ( void )

Generates a Globally Unique Identifier (GUID).

A GUID is generated in the same way as DCE UUID's, except that the Microsoft convention is to enclose a GUID in curly braces.

返回值

Returns the GUID as a string.

参见

  • uuid_create() in the PECL uuid extension

COM 函数
com_event_sink
COM 函数


Connect events from a COM object to a PHP object

com_create_guid
com_get_active_object
COM 函数
PHP Manual

com_event_sink

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

com_event_sink — Connect events from a COM object to a PHP object

说明

bool com_event_sink ( variant $comobject , object $sinkobject [, mixed $sinkinterface ] )

Instructs COM to sink events generated by comobject into the PHP object sinkobject.

Be careful how you use this feature; if you are doing something similar to the example below, then it doesn't really make sense to run it in a web server context.

参数

comobject

sinkobject

sinkobject should be an instance of a class with methods named after those of the desired dispinterface; you may use com_print_typeinfo() to help generate a template class for this purpose.

sinkinterface

PHP will attempt to use the default dispinterface type specified by the typelibrary associated with comobject, but you may override this choice by setting sinkinterface to the name of the dispinterface that you want to use.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 COM event sink example

<?php
class IEEventSinker {
    var $terminated = false;

   function ProgressChange($progress, $progressmax) {
      echo "Download progress: $progress / $progressmax\n";
    }

    function DocumentComplete(&$dom, $url) {
      echo "Document $url complete\n";
    }

    function OnQuit() {
      echo "Quit!\n";
      $this->terminated = true;
    }
}
$ie = new COM("InternetExplorer.Application");
// note that you don't need the & for PHP 5!
$sink = new IEEventSinker();
com_event_sink($ie, $sink, "DWebBrowserEvents2");
$ie->Visible = true;
$ie->Navigate("http://www.example.org");
while(!$sink->terminated) {
  com_message_pump(4000);
}
$ie = null;
?>

参见

  • com_print_typeinfo() - Print out a PHP class definition for a dispatchable interface
  • com_message_pump() - Process COM messages, sleeping for up to timeoutms milliseconds

com_create_guid
com_get_active_object
COM 函数


Returns a handle to an already running instance of a COM object

com_event_sink
com_load_typelib
COM 函数
PHP Manual

com_get_active_object

(PHP 5, PHP 7)

com_get_active_object — Returns a handle to an already running instance of a COM object

说明

variant com_get_active_object ( string $progid [, int $code_page ] )

com_get_active_object() is similar to creating a new instance of a COM object, except that it will only return an object to your script if the object is already running. OLE applications use something known as the "Running Object Table" to allow well-known applications to be launched only once; this function exposes the COM library function GetActiveObject() to get a handle on a running instance.

参数

progid

progid must be either the ProgID or CLSID for the object that you want to access (for example Word.Application).

code_page

Acts in precisely the same way that it does for the COM class.

返回值

If the requested object is running, it will be returned to your script just like any other COM object.

错误／异常

There are a variety of reasons why this function might fail, the most common being that the object is not already running. In that situation, the exception error code will be MK_E_UNAVAILABLE; you can use the getCode method of the exception object to check the exception code.

注释

Warning

Using com_get_active_object() in a web server context is not always a smart idea. Most COM/OLE applications are not designed to handle more than one client concurrently, even (or especially!) Microsoft Office. You should read » Considerations for Server-Side Automation of Office for more information on the general issues involved.

com_event_sink
com_load_typelib
COM 函数


装载一个 Typelib

com_get_active_object
com_message_pump
COM 函数
PHP Manual

com_load_typelib

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

com_load_typelib — 装载一个 Typelib

说明

bool com_load_typelib ( string $typelib_name [, bool $case_insensitive = true ] )

Loads a type-library and registers its constants in the engine, as though they were defined using define().

Note that it is much more efficient to use the configuration setting to pre-load and register the constants, although not so flexible.

If you have turned on , then PHP will attempt to automatically register the constants associated with a COM object when you instantiate it. This depends on the interfaces provided by the COM object itself, and may not always be possible.

参数

typelib_name

typelib_name can be one of the following:

  • The filename of a .tlb file or the executable module that contains the type library.

  • The type library GUID, followed by its version number, for example {00000200-0000-0010-8000-00AA006D2EA4},2,0.

  • The type library name, e.g. Microsoft OLE DB ActiveX Data Objects 1.0 Library.

PHP will attempt to resolve the type library in this order, as the process gets more and more expensive as you progress down the list; searching for the type library by name is handled by physically enumerating the registry until we find a match.

case_insensitive

The case_insensitive behaves in the same way as the parameter with the same name in the define() function.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

com_get_active_object
com_message_pump
COM 函数


Process COM messages, sleeping for up to timeoutms milliseconds

com_load_typelib
com_print_typeinfo
COM 函数
PHP Manual

com_message_pump

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

com_message_pump — Process COM messages, sleeping for up to timeoutms milliseconds

说明

bool com_message_pump ([ int $timeoutms = 0 ] )

This function will sleep for up to timeoutms milliseconds, or until a message arrives in the queue.

The purpose of this function is to route COM calls between apartments and handle various synchronization issues. This allows your script to wait efficiently for events to be triggered, while still handling other events or running other code in the background. You should use it in a loop, as demonstrated by the example in the com_event_sink() function, until you are finished using event bound COM objects.

参数

timeoutms

The timeout, in milliseconds.

If you do not specify a value for timeoutms, then 0 will be assumed. A 0 value means that no waiting will be performed; if there are messages pending they will be dispatched as before; if there are no messages pending, the function will return FALSE immediately without sleeping.

返回值

If a message or messages arrives before the timeout, they will be dispatched, and the function will return TRUE. If the timeout occurs and no messages were processed, the return value will be FALSE.

com_load_typelib
com_print_typeinfo
COM 函数


Print out a PHP class definition for a dispatchable interface

com_message_pump
variant_abs
COM 函数
PHP Manual

com_print_typeinfo

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

com_print_typeinfo — Print out a PHP class definition for a dispatchable interface

说明

bool com_print_typeinfo ( object $comobject [, string $dispinterface [, bool $wantsink = false ]] )

The purpose of this function is to help generate a skeleton class for use as an event sink. You may also use it to generate a dump of any COM object, provided that it supports enough of the introspection interfaces, and that you know the name of the interface you want to display.

参数

comobject

comobject should be either an instance of a COM object, or be the name of a typelibrary (which will be resolved according to the rules set out in com_load_typelib()).

dispinterface

The name of an IDispatch descendant interface that you want to display.

wantsink

If set to TRUE, the corresponding sink interface will be displayed instead.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • com_event_sink() - Connect events from a COM object to a PHP object
  • com_load_typelib() - 装载一个 Typelib

com_message_pump
variant_abs
COM 函数


Returns the absolute value of a variant

com_print_typeinfo
variant_add
COM 函数
PHP Manual

variant_abs

(PHP 5, PHP 7)

variant_abs — Returns the absolute value of a variant

说明

mixed variant_abs ( mixed $val )

Returns the absolute value of a variant.

参数

val

The variant.

Note:

对于所有变量运算函数，本函数的参数可以是 PHP 内置的类型（整数，字符串，浮点数，布尔型或者 NULL），或者是一个 COM，VARIANT 或者 DOTNET 类的实例。PHP 内置类型将会使用和构造VARIANT类相同的规则转换成变量。COM 和 DOTNET 对象的值将会取其默认属性并被当成变量值使用。

变量运算函数是同名函数在 COM 库中的外包；有关此类函数的更多信息参见 MSDN 库。PHP 函数命名有少许区别，例如 PHP 中的 variant_add() 对应于 MSDN 文档中的 VarAdd()。

返回值

Returns the absolute value of val.

参见

  • abs() - 绝对值

com_print_typeinfo
variant_add
COM 函数


"Adds" two variant values together and returns the result

variant_abs
variant_and
COM 函数
PHP Manual

variant_add

(PHP 5, PHP 7)

variant_add — "Adds" two variant values together and returns the result

说明

mixed variant_add ( mixed $left , mixed $right )

Adds left to right using the following rules (taken from the MSDN library), which correspond to those of Visual Basic:

Variant Addition Rules
If | Then
Both expressions are of the string type | Concatenation
One expression is a string type and the other a character | Addition
One expression is numeric and the other is a string | Addition
Both expressions are numeric | Addition
Either expression is NULL | NULL is returned
Both expressions are empty | Integer subtype is returned

参数

left

The left operand.

right

The right operand.

Note:

对于所有变量运算函数，本函数的参数可以是 PHP 内置的类型（整数，字符串，浮点数，布尔型或者 NULL），或者是一个 COM，VARIANT 或者 DOTNET 类的实例。PHP 内置类型将会使用和构造VARIANT类相同的规则转换成变量。COM 和 DOTNET 对象的值将会取其默认属性并被当成变量值使用。

变量运算函数是同名函数在 COM 库中的外包；有关此类函数的更多信息参见 MSDN 库。PHP 函数命名有少许区别，例如 PHP 中的 variant_add() 对应于 MSDN 文档中的 VarAdd()。

返回值

Returns the result.

参见

  • variant_sub() - Subtracts the value of the right variant from the left variant value

variant_abs
variant_and
COM 函数


Performs a bitwise AND operation between two variants

variant_add
variant_cast
COM 函数
PHP Manual

variant_and

(PHP 5, PHP 7)

variant_and — Performs a bitwise AND operation between two variants

说明

mixed variant_and ( mixed $left , mixed $right )

Performs a bitwise AND operation. Note that this is slightly different from a regular AND operation.

参数

left

The left operand.

right

The right operand.

Note:

对于所有变量运算函数，本函数的参数可以是 PHP 内置的类型（整数，字符串，浮点数，布尔型或者 NULL），或者是一个 COM，VARIANT 或者 DOTNET 类的实例。PHP 内置类型将会使用和构造VARIANT类相同的规则转换成变量。COM 和 DOTNET 对象的值将会取其默认属性并被当成变量值使用。

变量运算函数是同名函数在 COM 库中的外包；有关此类函数的更多信息参见 MSDN 库。PHP 函数命名有少许区别，例如 PHP 中的 variant_add() 对应于 MSDN 文档中的 VarAdd()。

返回值

Variant AND Rules
If left is | If right is | then the result is
TRUE | TRUE | TRUE
TRUE | FALSE | FALSE
TRUE | NULL | NULL
FALSE | TRUE | FALSE
FALSE | FALSE | FALSE
FALSE | NULL | FALSE
NULL | TRUE | NULL
NULL | FALSE | FALSE
NULL | NULL | NULL

参见

  • variant_or() - Performs a logical disjunction on two variants

variant_add
variant_cast
COM 函数


Convert a variant into a new variant object of another type

variant_and
variant_cat
COM 函数
PHP Manual

variant_cast

(PHP 5, PHP 7)

variant_cast — Convert a variant into a new variant object of another type

说明

variant variant_cast ( variant $variant , int $type )

This function makes a copy of variant and then performs a variant cast operation to force the copy to have the type given by type.

This function wraps VariantChangeType() in the COM library; consult MSDN for more information.

参数

variant

The variant.

type

type should be one of the VT_XXX constants.

返回值

Returns a variant of given type.

参见

  • variant_set_type() - Convert a variant into another type "in-place"

variant_and
variant_cat
COM 函数


concatenates two variant values together and returns the result

variant_cast
variant_cmp
COM 函数
PHP Manual

variant_cat

(PHP 5, PHP 7)

variant_cat — concatenates two variant values together and returns the result

说明

mixed variant_cat ( mixed $left , mixed $right )

Concatenates left with right and returns the result.

This function is notionally equivalent to $left . $right.

参数

left

The left operand.

right

The right operand.

Note:

对于所有变量运算函数，本函数的参数可以是 PHP 内置的类型（整数，字符串，浮点数，布尔型或者 NULL），或者是一个 COM，VARIANT 或者 DOTNET 类的实例。PHP 内置类型将会使用和构造VARIANT类相同的规则转换成变量。COM 和 DOTNET 对象的值将会取其默认属性并被当成变量值使用。

变量运算函数是同名函数在 COM 库中的外包；有关此类函数的更多信息参见 MSDN 库。PHP 函数命名有少许区别，例如 PHP 中的 variant_add() 对应于 MSDN 文档中的 VarAdd()。

返回值

Returns the result of the concatenation.

参见

  • 字符串运算符 for the string concatenation operator

variant_cast
variant_cmp
COM 函数


Compares two variants

variant_cat
variant_date_from_timestamp
COM 函数
PHP Manual

variant_cmp

(PHP 5, PHP 7)

variant_cmp — Compares two variants

说明

int variant_cmp ( mixed $left , mixed $right [, int $lcid [, int $flags ]] )

Compares left with right.

This function will only compare scalar values, not arrays or variant records.

参数

left

The left operand.

right

The right operand.

lcid

A valid Locale Identifier to use when comparing strings (this affects string collation).

flags

flags can be one or more of the following values OR'd together, and affects string comparisons:

Variant Comparision Flags
value | meaning
NORM_IGNORECASE | Compare case insensitively
NORM_IGNORENONSPACE | Ignore nonspacing characters
NORM_IGNORESYMBOLS | Ignore symbols
NORM_IGNOREWIDTH | Ignore string width
NORM_IGNOREKANATYPE | Ignore Kana type
NORM_IGNOREKASHIDA | Ignore Arabic kashida characters

Note:

对于所有变量运算函数，本函数的参数可以是 PHP 内置的类型（整数，字符串，浮点数，布尔型或者 NULL），或者是一个 COM，VARIANT 或者 DOTNET 类的实例。PHP 内置类型将会使用和构造VARIANT类相同的规则转换成变量。COM 和 DOTNET 对象的值将会取其默认属性并被当成变量值使用。

变量运算函数是同名函数在 COM 库中的外包；有关此类函数的更多信息参见 MSDN 库。PHP 函数命名有少许区别，例如 PHP 中的 variant_add() 对应于 MSDN 文档中的 VarAdd()。

返回值

Returns one of the following:

Variant Comparision Results
value | meaning
VARCMP_LT | left is less than right
VARCMP_EQ | left is equal to right
VARCMP_GT | left is greater than right
VARCMP_NULL | Either left, right or both are NULL

variant_cat
variant_date_from_timestamp
COM 函数


Returns a variant date representation of a Unix timestamp

variant_cmp
variant_date_to_timestamp
COM 函数
PHP Manual

variant_date_from_timestamp

(PHP 5, PHP 7)

variant_date_from_timestamp — Returns a variant date representation of a Unix timestamp

说明

variant variant_date_from_timestamp ( int $timestamp )

Converts timestamp from a unix timestamp value into a variant of type VT_DATE. This allows easier interopability between the unix-ish parts of PHP and COM.

参数

timestamp

A unix timestamp.

返回值

Returns a VT_DATE variant.

参见

  • variant_date_to_timestamp() - Converts a variant date/time value to Unix timestamp
  • mktime() - 取得一个日期的 Unix 时间戳
  • time() - 返回当前的 Unix 时间戳

variant_cmp
variant_date_to_timestamp
COM 函数


Converts a variant date/time value to Unix timestamp

variant_date_from_timestamp
variant_div
COM 函数
PHP Manual

variant_date_to_timestamp

(PHP 5, PHP 7)

variant_date_to_timestamp — Converts a variant date/time value to Unix timestamp

说明

int variant_date_to_timestamp ( variant $variant )

Converts variant from a VT_DATE (or similar) value into a Unix timestamp. This allows easier interopability between the Unix-ish parts of PHP and COM.

参数

variant

The variant.

返回值

Returns a unix timestamp.

参见

  • variant_date_from_timestamp() - Returns a variant date representation of a Unix timestamp
  • date() - 格式化一个本地时间／日期
  • strftime() - 根据区域设置格式化本地时间／日期

variant_date_from_timestamp
variant_div
COM 函数


Returns the result from dividing two variants

variant_date_to_timestamp
variant_eqv
COM 函数
PHP Manual

variant_div

(PHP 5, PHP 7)

variant_div — Returns the result from dividing two variants

说明

mixed variant_div ( mixed $left , mixed $right )

Divides left by right and returns the result.

参数

left

The left operand.

right

The right operand.

Note:

对于所有变量运算函数，本函数的参数可以是 PHP 内置的类型（整数，字符串，浮点数，布尔型或者 NULL），或者是一个 COM，VARIANT 或者 DOTNET 类的实例。PHP 内置类型将会使用和构造VARIANT类相同的规则转换成变量。COM 和 DOTNET 对象的值将会取其默认属性并被当成变量值使用。

变量运算函数是同名函数在 COM 库中的外包；有关此类函数的更多信息参见 MSDN 库。PHP 函数命名有少许区别，例如 PHP 中的 variant_add() 对应于 MSDN 文档中的 VarAdd()。

返回值

Variant Division Rules
If | Then
Both expressions are of the string, date, character, boolean type | Double is returned
One expression is a string type and the other a character | Division and a double is returned
One expression is numeric and the other is a string | Division and a double is returned.
Both expressions are numeric | Division and a double is returned
Either expression is NULL | NULL is returned
right is empty and left is anything but empty | A com_exception with code DISP_E_DIVBYZERO is thrown
left is empty and right is anything but empty. | 0 as type double is returned
Both expressions are empty | A com_exception with code DISP_E_OVERFLOW is thrown

参见

  • variant_idiv() - Converts variants to integers and then returns the result from dividing them

variant_date_to_timestamp
variant_eqv
COM 函数


Performs a bitwise equivalence on two variants

variant_div
variant_fix
COM 函数
PHP Manual

variant_eqv

(PHP 5, PHP 7)

variant_eqv — Performs a bitwise equivalence on two variants

说明

mixed variant_eqv ( mixed $left , mixed $right )

Performs a bitwise equivalence on two variants.

参数

left

The left operand.

right

The right operand.

Note:

对于所有变量运算函数，本函数的参数可以是 PHP 内置的类型（整数，字符串，浮点数，布尔型或者 NULL），或者是一个 COM，VARIANT 或者 DOTNET 类的实例。PHP 内置类型将会使用和构造VARIANT类相同的规则转换成变量。COM 和 DOTNET 对象的值将会取其默认属性并被当成变量值使用。

变量运算函数是同名函数在 COM 库中的外包；有关此类函数的更多信息参见 MSDN 库。PHP 函数命名有少许区别，例如 PHP 中的 variant_add() 对应于 MSDN 文档中的 VarAdd()。

返回值

If each bit in left is equal to the corresponding bit in right then TRUE is returned, otherwise FALSE is returned.

variant_div
variant_fix
COM 函数


Returns the integer portion of a variant

variant_eqv
variant_get_type
COM 函数
PHP Manual

variant_fix

(PHP 5, PHP 7)

variant_fix — Returns the integer portion of a variant

说明

mixed variant_fix ( mixed $variant )

Gets the integer portion of a variant.

参数

variant

The variant.

Note:

对于所有变量运算函数，本函数的参数可以是 PHP 内置的类型（整数，字符串，浮点数，布尔型或者 NULL），或者是一个 COM，VARIANT 或者 DOTNET 类的实例。PHP 内置类型将会使用和构造VARIANT类相同的规则转换成变量。COM 和 DOTNET 对象的值将会取其默认属性并被当成变量值使用。

变量运算函数是同名函数在 COM 库中的外包；有关此类函数的更多信息参见 MSDN 库。PHP 函数命名有少许区别，例如 PHP 中的 variant_add() 对应于 MSDN 文档中的 VarAdd()。

返回值

If variant is negative, then the first negative integer greater than or equal to the variant is returned, otherwise returns the integer portion of the value of variant.

注释

Warning

This documentation is based on the MSDN documentation; it appears that this function is either the same as variant_int(), or that there is an error in the MSDN documentation.

参见

  • variant_int() - Returns the integer portion of a variant
  • variant_round() - Rounds a variant to the specified number of decimal places
  • floor() - 舍去法取整
  • ceil() - 进一法取整
  • round() - 对浮点数进行四舍五入

variant_eqv
variant_get_type
COM 函数


Returns the type of a variant object

variant_fix
variant_idiv
COM 函数
PHP Manual

variant_get_type

(PHP 5, PHP 7)

variant_get_type — Returns the type of a variant object

说明

int variant_get_type ( variant $variant )

Returns the type of a variant object.

参数

variant

The variant object.

返回值

This function returns an integer value that indicates the type of variant, which can be an instance of COM, DOTNET or VARIANT classes. The return value can be compared to one of the VT_XXX constants.

The return value for COM and DOTNET objects will usually be VT_DISPATCH; the only reason this function works for those classes is because COM and DOTNET are descendants of VARIANT.

In PHP versions prior to 5, you could obtain this information from instances of the VARIANT class ONLY, by reading a fake type property. See the VARIANT class for more information on this.

variant_fix
variant_idiv
COM 函数


Converts variants to integers and then returns the result from dividing them

variant_get_type
variant_imp
COM 函数
PHP Manual

variant_idiv

(PHP 5, PHP 7)

variant_idiv — Converts variants to integers and then returns the result from dividing them

说明

mixed variant_idiv ( mixed $left , mixed $right )

Converts left and right to integer values, and then performs integer division.

参数

left

The left operand.

right

The right operand.

Note:

对于所有变量运算函数，本函数的参数可以是 PHP 内置的类型（整数，字符串，浮点数，布尔型或者 NULL），或者是一个 COM，VARIANT 或者 DOTNET 类的实例。PHP 内置类型将会使用和构造VARIANT类相同的规则转换成变量。COM 和 DOTNET 对象的值将会取其默认属性并被当成变量值使用。

变量运算函数是同名函数在 COM 库中的外包；有关此类函数的更多信息参见 MSDN 库。PHP 函数命名有少许区别，例如 PHP 中的 variant_add() 对应于 MSDN 文档中的 VarAdd()。

返回值

Variant Integer Division Rules
If | Then
Both expressions are of the string, date, character, boolean type | Division and integer is returned
One expression is a string type and the other a character | Division
One expression is numeric and the other is a string | Division
Both expressions are numeric | Division
Either expression is NULL | NULL is returned
Both expressions are empty | A com_exception with code DISP_E_DIVBYZERO is thrown

参见

  • variant_div() - Returns the result from dividing two variants

variant_get_type
variant_imp
COM 函数


Performs a bitwise implication on two variants

variant_idiv
variant_int
COM 函数
PHP Manual

variant_imp

(PHP 5, PHP 7)

variant_imp — Performs a bitwise implication on two variants

说明

mixed variant_imp ( mixed $left , mixed $right )

Performs a bitwise implication operation.

参数

left

The left operand.

right

The right operand.

Note:

对于所有变量运算函数，本函数的参数可以是 PHP 内置的类型（整数，字符串，浮点数，布尔型或者 NULL），或者是一个 COM，VARIANT 或者 DOTNET 类的实例。PHP 内置类型将会使用和构造VARIANT类相同的规则转换成变量。COM 和 DOTNET 对象的值将会取其默认属性并被当成变量值使用。

变量运算函数是同名函数在 COM 库中的外包；有关此类函数的更多信息参见 MSDN 库。PHP 函数命名有少许区别，例如 PHP 中的 variant_add() 对应于 MSDN 文档中的 VarAdd()。

返回值

Variant Implication Table
If left is | If right is | then the result is
TRUE | TRUE | TRUE
TRUE | FALSE | TRUE
TRUE | NULL | TRUE
FALSE | TRUE | TRUE
FALSE | FALSE | TRUE
FALSE | NULL | TRUE
NULL | TRUE | TRUE
NULL | FALSE | NULL
NULL | NULL | NULL

variant_idiv
variant_int
COM 函数


Returns the integer portion of a variant

variant_imp
variant_mod
COM 函数
PHP Manual

variant_int

(PHP 5, PHP 7)

variant_int — Returns the integer portion of a variant

说明

mixed variant_int ( mixed $variant )

Gets the integer portion of a variant.

参数

variant

The variant.

Note:

对于所有变量运算函数，本函数的参数可以是 PHP 内置的类型（整数，字符串，浮点数，布尔型或者 NULL），或者是一个 COM，VARIANT 或者 DOTNET 类的实例。PHP 内置类型将会使用和构造VARIANT类相同的规则转换成变量。COM 和 DOTNET 对象的值将会取其默认属性并被当成变量值使用。

变量运算函数是同名函数在 COM 库中的外包；有关此类函数的更多信息参见 MSDN 库。PHP 函数命名有少许区别，例如 PHP 中的 variant_add() 对应于 MSDN 文档中的 VarAdd()。

返回值

If variant is negative, then the first negative integer greater than or equal to the variant is returned, otherwise returns the integer portion of the value of variant.

参见

  • variant_fix() - Returns the integer portion of a variant
  • variant_round() - Rounds a variant to the specified number of decimal places
  • floor() - 舍去法取整
  • ceil() - 进一法取整
  • round() - 对浮点数进行四舍五入

variant_imp
variant_mod
COM 函数


Divides two variants and returns only the remainder

variant_int
variant_mul
COM 函数
PHP Manual

variant_mod

(PHP 5, PHP 7)

variant_mod — Divides two variants and returns only the remainder

说明

mixed variant_mod ( mixed $left , mixed $right )

Divides left by right and returns the remainder.

参数

left

The left operand.

right

The right operand.

Note:

对于所有变量运算函数，本函数的参数可以是 PHP 内置的类型（整数，字符串，浮点数，布尔型或者 NULL），或者是一个 COM，VARIANT 或者 DOTNET 类的实例。PHP 内置类型将会使用和构造VARIANT类相同的规则转换成变量。COM 和 DOTNET 对象的值将会取其默认属性并被当成变量值使用。

变量运算函数是同名函数在 COM 库中的外包；有关此类函数的更多信息参见 MSDN 库。PHP 函数命名有少许区别，例如 PHP 中的 variant_add() 对应于 MSDN 文档中的 VarAdd()。

返回值

Returns the remainder of the division.

参见

  • variant_div() - Returns the result from dividing two variants
  • variant_idiv() - Converts variants to integers and then returns the result from dividing them

variant_int
variant_mul
COM 函数


Multiplies the values of the two variants

variant_mod
variant_neg
COM 函数
PHP Manual

variant_mul

(PHP 5, PHP 7)

variant_mul — Multiplies the values of the two variants

说明

mixed variant_mul ( mixed $left , mixed $right )

Multiplies left by right.

参数

left

The left operand.

right

The right operand.

Boolean values are converted to -1 for FALSE and 0 for TRUE.

Note:

对于所有变量运算函数，本函数的参数可以是 PHP 内置的类型（整数，字符串，浮点数，布尔型或者 NULL），或者是一个 COM，VARIANT 或者 DOTNET 类的实例。PHP 内置类型将会使用和构造VARIANT类相同的规则转换成变量。COM 和 DOTNET 对象的值将会取其默认属性并被当成变量值使用。

变量运算函数是同名函数在 COM 库中的外包；有关此类函数的更多信息参见 MSDN 库。PHP 函数命名有少许区别，例如 PHP 中的 variant_add() 对应于 MSDN 文档中的 VarAdd()。

返回值

Variant Multiplication Rules
If | Then
Both expressions are of the string, date, character, boolean type | Multiplication
One expression is a string type and the other a character | Multiplication
One expression is numeric and the other is a string | Multiplication
Both expressions are numeric | Multiplication
Either expression is NULL | NULL is returned
Both expressions are empty | Empty string is returned

参见

  • variant_div() - Returns the result from dividing two variants
  • variant_idiv() - Converts variants to integers and then returns the result from dividing them

variant_mod
variant_neg
COM 函数


Performs logical negation on a variant

variant_mul
variant_not
COM 函数
PHP Manual

variant_neg

(PHP 5, PHP 7)

variant_neg — Performs logical negation on a variant

说明

mixed variant_neg ( mixed $variant )

Performs logical negation of variant.

参数

variant

The variant.

Note:

对于所有变量运算函数，本函数的参数可以是 PHP 内置的类型（整数，字符串，浮点数，布尔型或者 NULL），或者是一个 COM，VARIANT 或者 DOTNET 类的实例。PHP 内置类型将会使用和构造VARIANT类相同的规则转换成变量。COM 和 DOTNET 对象的值将会取其默认属性并被当成变量值使用。

变量运算函数是同名函数在 COM 库中的外包；有关此类函数的更多信息参见 MSDN 库。PHP 函数命名有少许区别，例如 PHP 中的 variant_add() 对应于 MSDN 文档中的 VarAdd()。

返回值

Returns the result of the logical negation.

variant_mul
variant_not
COM 函数


Performs bitwise not negation on a variant

variant_neg
variant_or
COM 函数
PHP Manual

variant_not

(PHP 5, PHP 7)

variant_not — Performs bitwise not negation on a variant

说明

mixed variant_not ( mixed $variant )

Performs bitwise not negation on variant and returns the result.

参数

variant

The variant.

Note:

对于所有变量运算函数，本函数的参数可以是 PHP 内置的类型（整数，字符串，浮点数，布尔型或者 NULL），或者是一个 COM，VARIANT 或者 DOTNET 类的实例。PHP 内置类型将会使用和构造VARIANT类相同的规则转换成变量。COM 和 DOTNET 对象的值将会取其默认属性并被当成变量值使用。

变量运算函数是同名函数在 COM 库中的外包；有关此类函数的更多信息参见 MSDN 库。PHP 函数命名有少许区别，例如 PHP 中的 variant_add() 对应于 MSDN 文档中的 VarAdd()。

返回值

Returns the bitwise not negation. If variant is NULL, the result will also be NULL.

variant_neg
variant_or
COM 函数


Performs a logical disjunction on two variants

variant_not
variant_pow
COM 函数
PHP Manual

variant_or

(PHP 5, PHP 7)

variant_or — Performs a logical disjunction on two variants

说明

mixed variant_or ( mixed $left , mixed $right )

Performs a bitwise OR operation. Note that this is slightly different from a regular OR operation.

参数

left

The left operand.

right

The right operand.

Note:

对于所有变量运算函数，本函数的参数可以是 PHP 内置的类型（整数，字符串，浮点数，布尔型或者 NULL），或者是一个 COM，VARIANT 或者 DOTNET 类的实例。PHP 内置类型将会使用和构造VARIANT类相同的规则转换成变量。COM 和 DOTNET 对象的值将会取其默认属性并被当成变量值使用。

变量运算函数是同名函数在 COM 库中的外包；有关此类函数的更多信息参见 MSDN 库。PHP 函数命名有少许区别，例如 PHP 中的 variant_add() 对应于 MSDN 文档中的 VarAdd()。

返回值

Variant OR Rules
If left is | If right is | then the result is
TRUE | TRUE | TRUE
TRUE | FALSE | TRUE
TRUE | NULL | TRUE
FALSE | TRUE | TRUE
FALSE | FALSE | FALSE
FALSE | NULL | NULL
NULL | TRUE | TRUE
NULL | FALSE | NULL
NULL | NULL | NULL

参见

  • variant_and() - Performs a bitwise AND operation between two variants
  • variant_xor() - Performs a logical exclusion on two variants

variant_not
variant_pow
COM 函数


Returns the result of performing the power function with two variants

variant_or
variant_round
COM 函数
PHP Manual

variant_pow

(PHP 5, PHP 7)

variant_pow — Returns the result of performing the power function with two variants

说明

mixed variant_pow ( mixed $left , mixed $right )

Returns the result of left to the power of right.

参数

left

The left operand.

right

The right operand.

Note:

对于所有变量运算函数，本函数的参数可以是 PHP 内置的类型（整数，字符串，浮点数，布尔型或者 NULL），或者是一个 COM，VARIANT 或者 DOTNET 类的实例。PHP 内置类型将会使用和构造VARIANT类相同的规则转换成变量。COM 和 DOTNET 对象的值将会取其默认属性并被当成变量值使用。

变量运算函数是同名函数在 COM 库中的外包；有关此类函数的更多信息参见 MSDN 库。PHP 函数命名有少许区别，例如 PHP 中的 variant_add() 对应于 MSDN 文档中的 VarAdd()。

返回值

Returns the result of left to the power of right.

参见

  • pow() - 指数表达式

variant_or
variant_round
COM 函数


Rounds a variant to the specified number of decimal places

variant_pow
variant_set_type
COM 函数
PHP Manual

variant_round

(PHP 5, PHP 7)

variant_round — Rounds a variant to the specified number of decimal places

说明

mixed variant_round ( mixed $variant , int $decimals )

Returns the value of variant rounded to decimals decimal places.

参数

variant

The variant.

decimals

Number of decimal places.

Note:

对于所有变量运算函数，本函数的参数可以是 PHP 内置的类型（整数，字符串，浮点数，布尔型或者 NULL），或者是一个 COM，VARIANT 或者 DOTNET 类的实例。PHP 内置类型将会使用和构造VARIANT类相同的规则转换成变量。COM 和 DOTNET 对象的值将会取其默认属性并被当成变量值使用。

变量运算函数是同名函数在 COM 库中的外包；有关此类函数的更多信息参见 MSDN 库。PHP 函数命名有少许区别，例如 PHP 中的 variant_add() 对应于 MSDN 文档中的 VarAdd()。

返回值

Returns the rounded value.

参见

  • round() - 对浮点数进行四舍五入

variant_pow
variant_set_type
COM 函数


Convert a variant into another type "in-place"

variant_round
variant_set
COM 函数
PHP Manual

variant_set_type

(PHP 5, PHP 7)

variant_set_type — Convert a variant into another type "in-place"

说明

void variant_set_type ( variant $variant , int $type )

This function is similar to variant_cast() except that the variant is modified "in-place"; no new variant is created. The parameters for this function have identical meaning to those of variant_cast().

参数

variant

The variant.

type

返回值

没有返回值。

参见

  • variant_cast() - Convert a variant into a new variant object of another type

variant_round
variant_set
COM 函数


Assigns a new value for a variant object

variant_set_type
variant_sub
COM 函数
PHP Manual

variant_set

(PHP 5, PHP 7)

variant_set — Assigns a new value for a variant object

说明

void variant_set ( variant $variant , mixed $value )

Converts value to a variant and assigns it to the variant object; no new variant object is created, and the old value of variant is freed/released.

参数

variant

The variant.

value

返回值

没有返回值。

variant_set_type
variant_sub
COM 函数


Subtracts the value of the right variant from the left variant value

variant_set
variant_xor
COM 函数
PHP Manual

variant_sub

(PHP 5, PHP 7)

variant_sub — Subtracts the value of the right variant from the left variant value

说明

mixed variant_sub ( mixed $left , mixed $right )

Subtracts right from left.

参数

left

The left operand.

right

The right operand.

Note:

对于所有变量运算函数，本函数的参数可以是 PHP 内置的类型（整数，字符串，浮点数，布尔型或者 NULL），或者是一个 COM，VARIANT 或者 DOTNET 类的实例。PHP 内置类型将会使用和构造VARIANT类相同的规则转换成变量。COM 和 DOTNET 对象的值将会取其默认属性并被当成变量值使用。

变量运算函数是同名函数在 COM 库中的外包；有关此类函数的更多信息参见 MSDN 库。PHP 函数命名有少许区别，例如 PHP 中的 variant_add() 对应于 MSDN 文档中的 VarAdd()。

返回值

Variant Subtraction Rules
If | Then
Both expressions are of the string type | Subtraction
One expression is a string type and the other a character | Subtraction
One expression is numeric and the other is a string | Subtraction.
Both expressions are numeric | Subtraction
Either expression is NULL | NULL is returned
Both expressions are empty | Empty string is returned

参见

  • variant_add() - "Adds" two variant values together and returns the result

variant_set
variant_xor
COM 函数


Performs a logical exclusion on two variants

variant_sub
win32ps
COM 函数
PHP Manual

variant_xor

(PHP 5, PHP 7)

variant_xor — Performs a logical exclusion on two variants

说明

mixed variant_xor ( mixed $left , mixed $right )

Performs a logical exclusion.

参数

left

The left operand.

right

The right operand.

Note:

对于所有变量运算函数，本函数的参数可以是 PHP 内置的类型（整数，字符串，浮点数，布尔型或者 NULL），或者是一个 COM，VARIANT 或者 DOTNET 类的实例。PHP 内置类型将会使用和构造VARIANT类相同的规则转换成变量。COM 和 DOTNET 对象的值将会取其默认属性并被当成变量值使用。

变量运算函数是同名函数在 COM 库中的外包；有关此类函数的更多信息参见 MSDN 库。PHP 函数命名有少许区别，例如 PHP 中的 variant_add() 对应于 MSDN 文档中的 VarAdd()。

返回值

Variant XOR Rules
If left is | If right is | then the result is
TRUE | TRUE | FALSE
TRUE | FALSE | TRUE
FALSE | TRUE | TRUE
FALSE | FALSE | FALSE
NULL | NULL | NULL

参见

  • variant_or() - Performs a logical disjunction on two variants
  • variant_and() - Performs a bitwise AND operation between two variants

variant_sub
win32ps
COM 函数


win32ps

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Win32ps examples
  • win32ps 函数
    • win32_ps_list_procs — List running processes
    • win32_ps_stat_mem — Stat memory utilization
    • win32_ps_stat_proc — Stat process
variant_xor
简介
Windows 专用扩展


简介

The win32ps extension is a Windows specific extension that allows PHP retrieve statistics about process and memory utilization.

win32ps
安装／配置
win32ps


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
win32ps


需求

Windows NT, Windows 2000, Windows XP or Windows Server 2003. Any version of Windows derived from Windows NT should be compatible.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/win32ps.

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
范例
win32ps


范例

Table of Contents

  • Win32ps examples
预定义常量
Win32ps examples
win32ps


Win32ps examples

Example #1 Statistics about the current PHP process

<?php
print_r(win32_ps_stat_proc());
/*
    Array
    (
        [pid] => 936
        [exe] => D:\Daten\Source\php-5.1\Debug_TS\php.exe
        [mem] => Array
            (
                [page_fault_count] => 2062
                [peak_working_set_size] => 8396800
                [working_set_size] => 8396800
                [quota_peak_paged_pool_usage] => 32080
                [quota_paged_pool_usage] => 31876
                [quota_peak_non_paged_pool_usage] => 4240
                [quota_non_paged_pool_usage] => 3888
                [pagefile_usage] => 5865472
                [peak_pagefile_usage] => 5865472
            )

        [tms] => Array
            (
                [created] => 0.093
                [kernel] => 0.015
                [user] => 0.062
            )

    )
*/
?>

Example #2 Statistics about global memory utilization

<?php
print_r(win32_ps_stat_mem());
/*
    Array
    (
        [load] => 37
        [unit] => 1024
        [total_phys] => 1048096
        [avail_phys] => 649960
        [total_pagefile] => 2521368
        [avail_pagefile] => 2237940
        [total_virtual] => 2097024
        [avail_virtual] => 2057848
    )
*/
?>

范例
win32ps 函数
范例


win32ps 函数

Table of Contents

  • win32_ps_list_procs — List running processes
  • win32_ps_stat_mem — Stat memory utilization
  • win32_ps_stat_proc — Stat process
Win32ps examples
win32_ps_list_procs
win32ps


List running processes

win32ps 函数
win32_ps_stat_mem
win32ps 函数
PHP Manual

win32_ps_list_procs

(PECL win32ps >= 1.0.1)

win32_ps_list_procs — List running processes

说明

array win32_ps_list_procs ( void )

Retrieves statistics about all running processes.

返回值

Returns FALSE on failure, or an array consisting of process statistics like win32_ps_stat_proc() returns for all running processes on success.

参见

  • win32_ps_stat_proc() - Stat process

win32ps 函数
win32_ps_stat_mem
win32ps 函数


Stat memory utilization

win32_ps_list_procs
win32_ps_stat_proc
win32ps 函数
PHP Manual

win32_ps_stat_mem

(PECL win32ps >= 1.0.1)

win32_ps_stat_mem — Stat memory utilization

说明

array win32_ps_stat_mem ( void )

Retrieves statistics about the global memory utilization.

返回值

Returns FALSE on failure, or an array consisting of the following information on success:

load

The current memory load in percent of physical memory.

unit

This is always 1024, and indicates that the following values are the count of 1024 bytes.

total_phys

The amount of total physical memory.

avail_phys

The amount of still available physical memory.

total_pagefile

The amount of total pageable memory (physical memory + paging file).

avail_pagefile

The amount of still available pageable memory (physical memory + paging file).

total_virtual

The amount of total virtual memory for a process.

avail_virtual

The amount of still available virtual memory for a process.

win32_ps_list_procs
win32_ps_stat_proc
win32ps 函数


Stat process

win32_ps_stat_mem
win32service
win32ps 函数
PHP Manual

win32_ps_stat_proc

(PECL win32ps >= 1.0.1)

win32_ps_stat_proc — Stat process

说明

array win32_ps_stat_proc ([ int $pid = 0 ] )

Retrieves statistics about the process with the process id pid.

参数

pid

The process id of the process to stat. If omitted, the id of the current process.

返回值

Returns FALSE on failure, or an array consisting of the following information on success:

pid

The process id.

exe

The path to the executable image.

mem

An array containing information about the following memory utilization indicators: page_fault_count, peak_working_set_size, working_set_size, quota_peak_paged_pool_usage, quota_paged_pool_usage, quota_peak_non_paged_pool_usage, quota_non_paged_pool_usage, pagefile_usage and peak_pagefile_usage.

tms

An array containing information about the following CPU time utilization indicators: created, kernel and user.

参见

  • win32_ps_list_procs() - List running processes

win32_ps_stat_mem
win32service
win32ps 函数


win32service

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
    • Win32Service Service Type Bitmasks
    • Win32Service Service Status Constants
    • Win32Service Service Control Message Constants
    • Win32Service Service Control Message Accepted Bitmasks
    • Win32Service Service Start Type Constants
    • Win32Service Service Error Control Constants
    • Win32Service Service Flag Constants
    • Win32 Error Codes
    • Win32 Base Priority Classes
  • 范例
  • win32service 函数
    • win32_continue_service — Resumes a paused service
    • win32_create_service — Creates a new service entry in the SCM database
    • win32_delete_service — Deletes a service entry from the SCM database
    • win32_get_last_control_message — Returns the last control message that was sent to this service
    • win32_pause_service — Pauses a service
    • win32_query_service_status — Queries the status of a service
    • win32_set_service_status — Update the service status
    • win32_start_service_ctrl_dispatcher — Registers the script with the SCM, so that it can act as the service with the given name
    • win32_start_service — Starts a service
    • win32_stop_service — Stops a service
win32_ps_stat_proc
简介
Windows 专用扩展


简介

The win32service extension is a Windows specific extension that allows PHP to communicate with the Service Control Manager to start, stop, register and unregister services, and even allows your PHP scripts to run as a service.

win32service
安装／配置
win32service


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
win32service


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/win32service

需求
运行时配置
安装／配置


预定义常量

Table of Contents

  • Win32Service Service Type Bitmasks
  • Win32Service Service Status Constants
  • Win32Service Service Control Message Constants
  • Win32Service Service Control Message Accepted Bitmasks
  • Win32Service Service Start Type Constants
  • Win32Service Service Error Control Constants
  • Win32Service Service Flag Constants
  • Win32 Error Codes
  • Win32 Base Priority Classes

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

资源类型
Win32Service Service Type Bitmasks
win32service


Win32Service Service Type Bitmasks

预定义常量
Win32Service Service Status Constants
预定义常量
PHP Manual
Win32Service Service Type Bitmasks
Constant | Value | Description
WIN32_SERVICE_WIN32_OWN_PROCESS | 0x00000010 | The service runs in its own process.
WIN32_SERVICE_INTERACTIVE_PROCESS | 0x00000100 | The service can interact with the desktop. This option is not available on Windows Vista or later.
WIN32_SERVICE_WIN32_OWN_PROCESS_INTERACTIVE | 0x00000110 | The service runs in its own process and can interact with the desktop. This option is not available on Windows Vista or later.
预定义常量
Win32Service Service Status Constants
预定义常量


Win32Service Service Status Constants

Win32Service Service Type Bitmasks
Win32Service Service Control Message Constants
预定义常量
PHP Manual
Win32Service Service Status Constants
Constant | Value | Description
WIN32_SERVICE_CONTINUE_PENDING | 0x00000005 | The service continue is pending.
WIN32_SERVICE_PAUSE_PENDING | 0x00000006 | The service pause is pending.
WIN32_SERVICE_PAUSED | 0x00000007 | The service is paused.
WIN32_SERVICE_RUNNING | 0x00000004 | The service is running.
WIN32_SERVICE_START_PENDING | 0x00000002 | The service is starting.
WIN32_SERVICE_STOP_PENDING | 0x00000003 | The service is stopping.
WIN32_SERVICE_STOPPED | 0x00000001 | The service is not running.
Win32Service Service Type Bitmasks
Win32Service Service Control Message Constants
预定义常量


Win32Service Service Control Message Constants

Win32Service Service Status Constants
Win32Service Service Control Message Accepted Bitmasks
预定义常量
PHP Manual
Win32Service Service Control Message Constants
Constant | Value | Description
WIN32_SERVICE_CONTROL_CONTINUE | 0x00000003 | Notifies a paused service that it should resume.
WIN32_SERVICE_CONTROL_INTERROGATE | 0x00000004 | Notifies a service that it should report its current status information to the service control manager.
WIN32_SERVICE_CONTROL_PAUSE | 0x00000002 | Notifies a service that it should pause.
WIN32_SERVICE_CONTROL_PRESHUTDOWN | 0x0000000F | Notifies a service that the system will be shutting down. A service that handles this notification blocks system shutdown until the service stops or the preshutdown time-out interval expires. This value is not supported by Windows Server 2003 and Windows XP/2000.
WIN32_SERVICE_CONTROL_SHUTDOWN | 0x00000005 | Notifies a service that the system is shutting down so the service can perform cleanup tasks. If a service accepts this control code, it must stop after it performs its cleanup tasks. After the SCM sends this control code, it will not send other control codes to the service.
WIN32_SERVICE_CONTROL_STOP | 0x00000001 | Notifies a service that it should stop.
Win32Service Service Status Constants
Win32Service Service Control Message Accepted Bitmasks
预定义常量


Win32Service Service Control Message Accepted Bitmasks

Win32Service Service Control Message Constants
Win32Service Service Start Type Constants
预定义常量
PHP Manual
Win32Service Service Control Message Accepted Bitmasks
Constant | Value | Description
WIN32_SERVICE_ACCEPT_PAUSE_CONTINUE | 0x00000002 | The service can be paused and continued. This control code allows the service to receive WIN32_SERVICE_CONTROL_PAUSE and WIN32_SERVICE_CONTROL_CONTINUE notifications.
WIN32_SERVICE_ACCEPT_PRESHUTDOWN | 0x00000100 | The service can perform preshutdown tasks. This control code enables the service to receive WIN32_SERVICE_CONTROL_PRESHUTDOWN notifications. This value is not supported by Windows Server 2003 and Windows XP/2000.
WIN32_SERVICE_ACCEPT_SHUTDOWN | 0x00000004 | The service is notified when system shutdown occurs. This control code allows the service to receive WIN32_SERVICE_CONTROL_SHUTDOWN notifications.
WIN32_SERVICE_ACCEPT_STOP | 0x00000001 | The service can be stopped. This control code allows the service to receive WIN32_SERVICE_CONTROL_STOP notifications.
Win32Service Service Control Message Constants
Win32Service Service Start Type Constants
预定义常量


Win32Service Service Start Type Constants

Win32Service Service Control Message Accepted Bitmasks
Win32Service Service Error Control Constants
预定义常量
PHP Manual
Win32Service Service Start Type Constants
Constant | Value | Description
WIN32_SERVICE_AUTO_START | 0x00000002 | A service started automatically by the service control manager during system startup.
WIN32_SERVICE_DEMAND_START | 0x00000003 | A service started by the service control manager when a process calls the StartService function.
WIN32_SERVICE_DISABLED | 0x00000004 | A service that cannot be started. Attempts to start the service result in the error code WIN32_ERROR_SERVICE_DISABLED.
Win32Service Service Control Message Accepted Bitmasks
Win32Service Service Error Control Constants
预定义常量


Win32Service Service Error Control Constants

Win32Service Service Start Type Constants
Win32Service Service Flag Constants
预定义常量
PHP Manual
Win32Service Service Error Control Constants
Constant | Value | Description
WIN32_SERVICE_ERROR_IGNORE | 0x00000000 | The startup program ignores the error and continues the startup operation.
WIN32_SERVICE_ERROR_NORMAL | 0x00000001 | The startup program logs the error in the event log but continues the startup operation.
Win32Service Service Start Type Constants
Win32Service Service Flag Constants
预定义常量


Win32Service Service Flag Constants

Win32Service Service Error Control Constants
Win32 Error Codes
预定义常量
PHP Manual
Win32Service Service Flag Constants
Constant | Value | Description
WIN32_SERVICE_RUNS_IN_SYSTEM_PROCESS | 0x00000001 | The service runs in a system process that must always be running.
Win32Service Service Error Control Constants
Win32 Error Codes
预定义常量


Win32 Error Codes

Win32Service Service Flag Constants
Win32 Base Priority Classes
预定义常量
PHP Manual
Win32 Error Codes
Constant | Value | Description
WIN32_ERROR_ACCESS_DENIED | 0x00000005 | The handle to the SCM database does not have the appropriate access rights.
WIN32_ERROR_CIRCULAR_DEPENDENCY | 0x00000423 | A circular service dependency was specified.
WIN32_ERROR_DATABASE_DOES_NOT_EXIST | 0x00000429 | The specified database does not exist.
WIN32_ERROR_DEPENDENT_SERVICES_RUNNING | 0x0000041B | The service cannot be stopped because other running services are dependent on it.
WIN32_ERROR_DUPLICATE_SERVICE_NAME | 0x00000436 | The display name already exists in the service control manager database either as a service name or as another display name.
WIN32_ERROR_FAILED_SERVICE_CONTROLLER_CONNECT | 0x00000427 | This error is returned if the program is being run as a console application rather than as a service. If the program will be run as a console application for debugging purposes, structure it such that service-specific code is not called.
WIN32_ERROR_INSUFFICIENT_BUFFER | 0x0000007A | The buffer is too small for the service status structure. Nothing was written to the structure.
WIN32_ERROR_INVALID_DATA | 0x0000000D | The specified service status structure is invalid.
WIN32_ERROR_INVALID_HANDLE | 0x00000006 | The handle to the specified service control manager database is invalid.
WIN32_ERROR_INVALID_LEVEL | 0x0000007C | The InfoLevel parameter contains an unsupported value.
WIN32_ERROR_INVALID_NAME | 0x0000007B | The specified service name is invalid.
WIN32_ERROR_INVALID_PARAMETER | 0x00000057 | A parameter that was specified is invalid.
WIN32_ERROR_INVALID_SERVICE_ACCOUNT | 0x00000421 | The user account name specified in the user parameter does not exist. See win32_create_service().
WIN32_ERROR_INVALID_SERVICE_CONTROL | 0x0000041C | The requested control code is not valid, or it is unacceptable to the service.
WIN32_ERROR_PATH_NOT_FOUND | 0x00000003 | The service binary file could not be found.
WIN32_ERROR_SERVICE_ALREADY_RUNNING | 0x00000420 | An instance of the service is already running.
WIN32_ERROR_SERVICE_CANNOT_ACCEPT_CTRL | 0x00000425 | The requested control code cannot be sent to the service because the state of the service is WIN32_SERVICE_STOPPED, WIN32_SERVICE_START_PENDING, or WIN32_SERVICE_STOP_PENDING.
WIN32_ERROR_SERVICE_DATABASE_LOCKED | 0x0000041F | The database is locked.
WIN32_ERROR_SERVICE_DEPENDENCY_DELETED | 0x00000433 | The service depends on a service that does not exist or has been marked for deletion.
WIN32_ERROR_SERVICE_DEPENDENCY_FAIL | 0x0000042C | The service depends on another service that has failed to start.
WIN32_ERROR_SERVICE_DISABLED | 0x00000422 | The service has been disabled.
WIN32_ERROR_SERVICE_DOES_NOT_EXIST | 0x00000424 | The specified service does not exist as an installed service.
WIN32_ERROR_SERVICE_EXISTS | 0x00000431 | The specified service already exists in this database.
WIN32_ERROR_SERVICE_LOGON_FAILED | 0x0000042D | The service did not start due to a logon failure. This error occurs if the service is configured to run under an account that does not have the "Log on as a service" right.
WIN32_ERROR_SERVICE_MARKED_FOR_DELETE | 0x00000430 | The specified service has already been marked for deletion.
WIN32_ERROR_SERVICE_NO_THREAD | 0x0000041E | A thread could not be created for the service.
WIN32_ERROR_SERVICE_NOT_ACTIVE | 0x00000426 | The service has not been started.
WIN32_ERROR_SERVICE_REQUEST_TIMEOUT | 0x0000041D | The process for the service was started, but it did not call StartServiceCtrlDispatcher, or the thread that called StartServiceCtrlDispatcher may be blocked in a control handler function.
WIN32_ERROR_SHUTDOWN_IN_PROGRESS | 0x0000045B | The system is shutting down; this function cannot be called.
WIN32_NO_ERROR | 0x00000000 | No error.
Win32Service Service Flag Constants
Win32 Base Priority Classes
预定义常量


Win32 Base Priority Classes

Win32 Error Codes
范例
预定义常量
PHP Manual
Win32 Base Priority Classes
Constant | Value | Description
WIN32_ABOVE_NORMAL_PRIORITY_CLASS | 0x00008000 | Process that has priority above WIN32_NORMAL_PRIORITY_CLASS but below WIN32_HIGH_PRIORITY_CLASS.
WIN32_BELOW_NORMAL_PRIORITY_CLASS | 0x00004000 | Process that has priority above WIN32_IDLE_PRIORITY_CLASS but below WIN32_NORMAL_PRIORITY_CLASS.
WIN32_HIGH_PRIORITY_CLASS | 0x00000080 | Process that performs time-critical tasks that must be executed immediately. The threads of the process preempt the threads of normal or idle priority class processes. An example is the Task List, which must respond quickly when called by the user, regardless of the load on the operating system. Use extreme care when using the high-priority class, because a high-priority class application can use nearly all available CPU time.
WIN32_IDLE_PRIORITY_CLASS | 0x00000040 | Process whose threads run only when the system is idle. The threads of the process are preempted by the threads of any process running in a higher priority class. An example is a screen saver. The idle-priority class is inherited by child processes.
WIN32_NORMAL_PRIORITY_CLASS | 0x00000020 | Process with no special scheduling needs.
WIN32_REALTIME_PRIORITY_CLASS | 0x00000100 | Process that has the highest possible priority. The threads of the process preempt the threads of all other processes, including operating system processes performing important tasks. For example, a real-time process that executes for more than a very brief interval can cause disk caches not to flush or cause the mouse to be unresponsive.
Win32 Error Codes
范例
预定义常量


范例

Example #1 Registering a PHP script to run as a service

<?php
win32_create_service(array(
    'service'     => 'dummyphp',                                           # the name of your service
    'display'     => 'sample dummy PHP service',                           # short description
    'description' => 'This is a dummy Windows service created using PHP.', # long description
    'params'      => '"' . __FILE__ . '"  run',                            # path to the script and parameters
));
?>

Example #2 Unregistering a service

<?php
win32_delete_service('dummyphp');
?>

Example #3 Running as a service

<?php
if ($argv[1] == 'run') {
  win32_start_service_ctrl_dispatcher('dummyphp');

  while (WIN32_SERVICE_CONTROL_STOP != win32_get_last_control_message()) {
    # do your work here.
    # try not to take up more than 30 seconds before going around the loop
    # again
  }
}
?>

Win32 Base Priority Classes
win32service 函数
win32service


win32service 函数

Table of Contents

  • win32_continue_service — Resumes a paused service
  • win32_create_service — Creates a new service entry in the SCM database
  • win32_delete_service — Deletes a service entry from the SCM database
  • win32_get_last_control_message — Returns the last control message that was sent to this service
  • win32_pause_service — Pauses a service
  • win32_query_service_status — Queries the status of a service
  • win32_set_service_status — Update the service status
  • win32_start_service_ctrl_dispatcher — Registers the script with the SCM, so that it can act as the service with the given name
  • win32_start_service — Starts a service
  • win32_stop_service — Stops a service
范例
win32_continue_service
win32service


Resumes a paused service

win32service 函数
win32_create_service
win32service 函数
PHP Manual

win32_continue_service

(PECL win32service SVN)

win32_continue_service — Resumes a paused service

说明

int win32_continue_service ( string $servicename [, string $machine ] )

Resumes a paused, named service. Requires administrative privileges.

参数

servicename

The short name of the service.

machine

Optional machine name. If omitted, the local machine is used.

返回值

成功时返回 WIN32_NO_ERROR，参数错误时返回 FALSE，或失败时返回一个 Win32 错误码。

参见

  • win32_start_service() - Starts a service
  • Win32 Error Codes

win32service 函数
win32_create_service
win32service 函数


Creates a new service entry in the SCM database

win32_continue_service
win32_delete_service
win32service 函数
PHP Manual

win32_create_service

(PECL win32service SVN)

win32_create_service — Creates a new service entry in the SCM database

说明

mixed win32_create_service ( array $details [, string $machine ] )

参数

details

An array of service details:

service

The short name of the service. This is the name that you will use to control the service using the net command. The service must be unique (no two services can share the same name), and, ideally, should avoid having spaces in the name.

display

The display name of the service. This is the name that you will see in the Services Applet.

description

The long description of the service. This is the description that you will see in the Services Applet.

user

The name of the user account under which you want the service to run. If omitted, the service will run as the LocalSystem account. If the username is specified, you must also provide a password.

password

The password that corresponds to the user.

path

The full path to the executable module that will be launched when the service is started. If omitted, the path to the current PHP process will be used.

params

Command line parameters to pass to the service when it starts. If you want to run a PHP script as the service, then the first parameter should be the full path to the PHP script that you intend to run. If the script name or path contains spaces, then wrap the full path to the PHP script with ".

load_order

Controls the load_order. This is not yet fully supported.

svc_type

Sets the service type. If omitted, the default value is WIN32_SERVICE_WIN32_OWN_PROCESS. Don't change this unless you know what you're doing.

start_type

Specifies how the service should be started. The default is WIN32_SERVICE_AUTO_START which means the service will be launched when the machine starts up.

error_control

Informs the SCM what it should do when it detects a problem with the service. The default is WIN32_SERVER_ERROR_IGNORE. Changing this value is not yet fully supported.

delayed_start

If delayed_start is set to TRUE, then this will inform the SCM that this service should be started after other auto-start services are started plus a short delay.

Any service can be marked as a delayed auto-start service; however, this setting has no effect unless the service's start_type is WIN32_SERVICE_AUTO_START.

This setting is only applicable on Windows Vista and Windows Server 2008 or greater.

base_priority

To reduce the impact on processor utilisation, it may be necessary to set a base priority lower than normal.

The base_priority can be set to one of the constants define in Win32 Base Priority Classes.

machine

The optional machine name on which you want to create a service. If omitted, it will use the local machine.

返回值

成功时返回 WIN32_NO_ERROR，参数错误时返回 FALSE，或失败时返回一个 Win32 错误码。

范例

Example #1 A win32_create_service() example

Create a service with the short name 'dummyphp'.

<?php
$x = win32_create_service(array(
    'service'     => 'dummyphp',                                           # the name of your service
    'display'     => 'sample dummy PHP service',                           # short description
    'description' => 'This is a dummy Windows service created using PHP.', # long description
    'params'      => '"' . __FILE__ . '"  run',                            # path to the script and parameters
));
debug_zval_dump($x);
?>

参见

  • win32_delete_service() - Deletes a service entry from the SCM database
  • Win32 Base Priority Classes
  • Win32 Error Codes

win32_continue_service
win32_delete_service
win32service 函数


Deletes a service entry from the SCM database

win32_create_service
win32_get_last_control_message
win32service 函数
PHP Manual

win32_delete_service

(PECL win32service SVN)

win32_delete_service — Deletes a service entry from the SCM database

说明

mixed win32_delete_service ( string $servicename [, string $machine ] )

Attempts to delete a service from the SCM database. Administrative privileges are required for this to succeed.

This function really just marks the service for deletion. If other processes (such as the Services Applet) are open, then the deletion will be deferred until those applications are closed. If a service is marked for deletion, further attempts to delete it will fail, and attempts to create a new service with that name will also fail.

参数

servicename

The short name of the service.

machine

The optional machine name. If omitted, the local machine will be used.

返回值

成功时返回 WIN32_NO_ERROR，参数错误时返回 FALSE，或失败时返回一个 Win32 错误码。

范例

Example #1 A win32_delete_service() example

Deletes the dummyphp service.

<?php
win32_delete_service('dummyphp');
?>

参见

  • win32_create_service() - Creates a new service entry in the SCM database
  • Win32 Error Codes

win32_create_service
win32_get_last_control_message
win32service 函数


Returns the last control message that was sent to this service

win32_delete_service
win32_pause_service
win32service 函数
PHP Manual

win32_get_last_control_message

(PECL win32service SVN)

win32_get_last_control_message — Returns the last control message that was sent to this service

说明

int win32_get_last_control_message ( void )

Returns the control code that was last sent to this service process. When running as a service you should periodically check this to determine if your service needs to stop running.

返回值

Returns a control constant which will be one of the Win32Service Service Control Message Constants: WIN32_SERVICE_CONTROL_CONTINUE, WIN32_SERVICE_CONTROL_INTERROGATE, WIN32_SERVICE_CONTROL_PAUSE, WIN32_SERVICE_CONTROL_PRESHUTDOWN, WIN32_SERVICE_CONTROL_SHUTDOWN, WIN32_SERVICE_CONTROL_STOP.

参见

  • win32_start_service_ctrl_dispatcher() - Registers the script with the SCM, so that it can act as the service with the given name
  • Win32Service Service Control Message Constants

win32_delete_service
win32_pause_service
win32service 函数


Pauses a service

win32_get_last_control_message
win32_query_service_status
win32service 函数
PHP Manual

win32_pause_service

(PECL win32service SVN)

win32_pause_service — Pauses a service

说明

int win32_pause_service ( string $servicename [, string $machine ] )

Pauses a named service. Requires administrative privileges.

参数

servicename

The short name of the service.

machine

Optional machine name. If omitted, the local machine is used.

返回值

成功时返回 WIN32_NO_ERROR，参数错误时返回 FALSE，或失败时返回一个 Win32 错误码。

参见

  • win32_start_service() - Starts a service
  • Win32 Error Codes

win32_get_last_control_message
win32_query_service_status
win32service 函数


Queries the status of a service

win32_pause_service
win32_set_service_status
win32service 函数
PHP Manual

win32_query_service_status

(PECL win32service SVN)

win32_query_service_status — Queries the status of a service

说明

mixed win32_query_service_status ( string $servicename [, string $machine ] )

Queries the current status for a service, returning an array of information.

参数

servicename

The short name of the service.

machine

The optional machine name. If omitted, the local machine will be used.

返回值

Returns an array consisting of the following information on success，参数错误时返回 FALSE，或失败时返回一个 Win32 错误码。

ServiceType

The dwServiceType. See Win32Service Service Type Bitmasks.

CurrentState

The dwCurrentState. See Win32Service Service Status Constants.

ControlsAccepted

Which service controls are accepted by the service. See Win32Service Service Control Message Accepted Bitmasks.

Win32ExitCode

If the service exited, the return code from the process.

ServiceSpecificExitCode

If the service exited with an error condition, the service specific code that is logged in the event log is visible here.

CheckPoint

If the service is shutting down, holds the current check point number. This is used by the SCM as a kind of heart-beat to detect a wedged service process. The value of the check point is best interpreted in conjunction with the WaitHint value.

WaitHint

If the service is shutting down it will set WaitHint to a checkpoint value that will indicate 100% completion. This can be used to implement a progress indicator.

ProcessId

The Windows process identifier. If 0, the process is not running.

ServiceFlags

The dwServiceFlags. See Win32Service Service Service Flag Constants.

参见

  • Win32Service Predefined Constants

win32_pause_service
win32_set_service_status
win32service 函数


Update the service status

win32_query_service_status
win32_start_service_ctrl_dispatcher
win32service 函数
PHP Manual

win32_set_service_status

(PECL win32service SVN)

win32_set_service_status — Update the service status

说明

bool win32_set_service_status ( int $status [, int $checkpoint = 0 ] )

Informs the SCM of the current status of a running service. This call is only valid for a running service process.

参数

status

The service status code, one of WIN32_SERVICE_RUNNING, WIN32_SERVICE_STOPPED, WIN32_SERVICE_STOP_PENDING, WIN32_SERVICE_START_PENDING, WIN32_SERVICE_CONTINUE_PENDING, WIN32_SERVICE_PAUSE_PENDING, WIN32_SERVICE_PAUSED.

checkpoint

The checkpoint value the service increments periodically to report its progress during a lengthy start, stop, pause, or continue operation. For example, the service should increment this value as it completes each step of its initialization when it is starting up.

The checkpoint is only valid when the status is one of WIN32_SERVICE_STOP_PENDING, WIN32_SERVICE_START_PENDING, WIN32_SERVICE_CONTINUE_PENDING or WIN32_SERVICE_PAUSE_PENDING.

返回值

成功时返回 TRUE，参数错误时返回 FALSE，或失败时返回一个 Win32 错误码。

参见

  • win32_start_service_ctrl_dispatcher() - Registers the script with the SCM, so that it can act as the service with the given name
  • Win32Service Service Status Constants

win32_query_service_status
win32_start_service_ctrl_dispatcher
win32service 函数


Registers the script with the SCM, so that it can act as the service with the given name

win32_set_service_status
win32_start_service
win32service 函数
PHP Manual

win32_start_service_ctrl_dispatcher

(PECL win32service SVN)

win32_start_service_ctrl_dispatcher — Registers the script with the SCM, so that it can act as the service with the given name

说明

mixed win32_start_service_ctrl_dispatcher ( string $name )

When launched via the Service Control Manager, a service process is required to "check-in" with it to establish service monitoring and communication facilities. This function performs the check-in by spawning a thread to handle the lower-level communication with the service control manager.

Once started, the service process should do 2 things. The first is to tell the Service Control Manager that the service is running. This is achieved by calling win32_set_service_status() with the WIN32_SERVICE_RUNNING constant. If you need to perform some lengthy process before the service is actually running, then you can use the WIN32_SERVICE_START_PENDING constant. The second is to continue to check-in with the service control manager so that it can determine if it should terminate. This is achieved by periodically calling win32_get_last_control_message() and handling the return code appropriately.

参数

name

The short-name of the service, as registered by win32_create_service().

返回值

成功时返回 TRUE，参数错误时返回 FALSE，或失败时返回一个 Win32 错误码。

范例

Example #1 A win32_start_service_ctrl_dispatcher() example

Check if the service is runnig under the SCM.

<?php
if (!win32_start_service_ctrl_dispatcher('dummyphp')) {
  die("I'm probably not running under the service control manager");
}

win32_set_service_status(WIN32_SERVICE_START_PENDING);

// Some lengthy process to get this service up and running.

win32_set_service_status(WIN32_SERVICE_RUNNING);

while (WIN32_SERVICE_CONTROL_STOP != win32_get_last_control_message()) {
  # do some work here, trying not to take more than around 30 seconds
  # before coming back into the loop again
}
?>

参见

  • win32_set_service_status() - Update the service status
  • win32_get_last_control_message() - Returns the last control message that was sent to this service
  • Win32 Error Codes

win32_set_service_status
win32_start_service
win32service 函数


Starts a service

win32_start_service_ctrl_dispatcher
win32_stop_service
win32service 函数
PHP Manual

win32_start_service

(PECL win32service SVN)

win32_start_service — Starts a service

说明

int win32_start_service ( string $servicename [, string $machine ] )

Attempts to start the named service. Usually requires administrative privileges.

参数

servicename

The short name of the service.

machine

Optional machine name. If omitted, the local machine is used.

返回值

成功时返回 WIN32_NO_ERROR，参数错误时返回 FALSE，或失败时返回一个 Win32 错误码。

参见

  • win32_stop_service() - Stops a service
  • Win32 Error Codes

win32_start_service_ctrl_dispatcher
win32_stop_service
win32service 函数


Stops a service

win32_start_service
XML 操作
win32service 函数
PHP Manual

win32_stop_service

(PECL win32service SVN)

win32_stop_service — Stops a service

说明

int win32_stop_service ( string $servicename [, string $machine ] )

Stops a named service. Requires administrative privileges.

参数

servicename

The short name of the service.

machine

Optional machine name. If omitted, the local machine is used.

返回值

成功时返回 WIN32_NO_ERROR，参数错误时返回 FALSE，或失败时返回一个 Win32 错误码。

参见

  • win32_start_service() - Starts a service
  • Win32 Error Codes

win32_start_service
XML 操作
win32service 函数


XML 操作

  • DOM — Document Object Model
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • DOMAttr — The DOMAttr class
    • DOMCdataSection — The DOMCdataSection class
    • DOMCharacterData — The DOMCharacterData class
    • DOMComment — The DOMComment class
    • DOMDocument — The DOMDocument class
    • DOMDocumentFragment — The DOMDocumentFragment class
    • DOMDocumentType — The DOMDocumentType class
    • DOMElement — The DOMElement class
    • DOMEntity — The DOMEntity class
    • DOMEntityReference — The DOMEntityReference class
    • DOMException — The DOMException class
    • DOMImplementation — The DOMImplementation class
    • DOMNamedNodeMap — The DOMNamedNodeMap class
    • DOMNode — The DOMNode class
    • DOMNodeList — The DOMNodeList class
    • DOMNotation — The DOMNotation class
    • DOMProcessingInstruction — The DOMProcessingInstruction class
    • DOMText — The DOMText class
    • DOMXPath — The DOMXPath class
    • DOM 函数
  • libxml
    • 简介
    • 安装／配置
    • 预定义常量
    • libXMLError — The libXMLError class
    • libxml 函数
  • SDO — Service Data Objects
    • 简介
    • 安装／配置
    • 预定义常量
    • Limitations
    • 范例
    • SDO 函数
  • SDO-DAS-Relational — SDO Relational Data Access Service
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • Limitations
    • SDO-DAS-Relational 函数
  • SDO DAS XML — SDO XML Data Access Service
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • SDO DAS XML 函数
  • SimpleXML
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • SimpleXMLElement — The SimpleXMLElement class
    • SimpleXMLIterator — The SimpleXMLIterator class
    • SimpleXML 函数
  • WDDX
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • WDDX 函数
  • XMLDiff — XML diff and merge
    • 简介
    • 安装／配置
    • XMLDiff\Base — The XMLDiff\Base class
    • XMLDiff\DOM — The XMLDiff\DOM class
    • XMLDiff\Memory — The XMLDiff\Memory class
    • XMLDiff\File — The XMLDiff\File class
  • XML 解析器
    • 简介
    • 安装／配置
    • 预定义常量
    • 事件处理器
    • Case Folding(大写转换)
    • 错误代码
    • 字符编码
    • 范例
    • XML 解析器函数
  • XMLReader
    • 简介
    • 安装／配置
    • XMLReader — The XMLReader class
  • XMLWriter
    • 简介
    • 安装／配置
    • 预定义常量
    • XMLWriter 函数
  • XSL
    • 简介
    • 安装／配置
    • 预定义常量
    • 范例
    • XSLTProcessor — The XSLTProcessor class
win32_stop_service
DOM
函数参考


Document Object Model

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • DOMAttr — The DOMAttr class
    • DOMAttr::__construct — Creates a new DOMAttr object
    • DOMAttr::isId — Checks if attribute is a defined ID
  • DOMCdataSection — The DOMCdataSection class
    • DOMCdataSection::__construct — Constructs a new DOMCdataSection object
  • DOMCharacterData — The DOMCharacterData class
    • DOMCharacterData::appendData — Append the string to the end of the character data of the node
    • DOMCharacterData::deleteData — Remove a range of characters from the node
    • DOMCharacterData::insertData — Insert a string at the specified 16-bit unit offset
    • DOMCharacterData::replaceData — Replace a substring within the DOMCharacterData node
    • DOMCharacterData::substringData — Extracts a range of data from the node
  • DOMComment — The DOMComment class
    • DOMComment::__construct — Creates a new DOMComment object
  • DOMDocument — The DOMDocument class
    • DOMDocument::__construct — Creates a new DOMDocument object
    • DOMDocument::createAttribute — Create new attribute
    • DOMDocument::createAttributeNS — Create new attribute node with an associated namespace
    • DOMDocument::createCDATASection — Create new cdata node
    • DOMDocument::createComment — Create new comment node
    • DOMDocument::createDocumentFragment — Create new document fragment
    • DOMDocument::createElement — Create new element node
    • DOMDocument::createElementNS — Create new element node with an associated namespace
    • DOMDocument::createEntityReference — Create new entity reference node
    • DOMDocument::createProcessingInstruction — Creates new PI node
    • DOMDocument::createTextNode — Create new text node
    • DOMDocument::getElementById — Searches for an element with a certain id
    • DOMDocument::getElementsByTagName — Searches for all elements with given local tag name
    • DOMDocument::getElementsByTagNameNS — Searches for all elements with given tag name in specified namespace
    • DOMDocument::importNode — Import node into current document
    • DOMDocument::load — Load XML from a file
    • DOMDocument::loadHTML — Load HTML from a string
    • DOMDocument::loadHTMLFile — Load HTML from a file
    • DOMDocument::loadXML — Load XML from a string
    • DOMDocument::normalizeDocument — Normalizes the document
    • DOMDocument::registerNodeClass — Register extended class used to create base node type
    • DOMDocument::relaxNGValidate — Performs relaxNG validation on the document
    • DOMDocument::relaxNGValidateSource — Performs relaxNG validation on the document
    • DOMDocument::save — Dumps the internal XML tree back into a file
    • DOMDocument::saveHTML — Dumps the internal document into a string using HTML formatting
    • DOMDocument::saveHTMLFile — Dumps the internal document into a file using HTML formatting
    • DOMDocument::saveXML — Dumps the internal XML tree back into a string
    • DOMDocument::schemaValidate — Validates a document based on a schema
    • DOMDocument::schemaValidateSource — Validates a document based on a schema
    • DOMDocument::validate — Validates the document based on its DTD
    • DOMDocument::xinclude — Substitutes XIncludes in a DOMDocument Object
  • DOMDocumentFragment — The DOMDocumentFragment class
    • DOMDocumentFragment::appendXML — Append raw XML data
  • DOMDocumentType — The DOMDocumentType class
  • DOMElement — The DOMElement class
    • DOMElement::__construct — Creates a new DOMElement object
    • DOMElement::getAttribute — Returns value of attribute
    • DOMElement::getAttributeNode — Returns attribute node
    • DOMElement::getAttributeNodeNS — Returns attribute node
    • DOMElement::getAttributeNS — Returns value of attribute
    • DOMElement::getElementsByTagName — Gets elements by tagname
    • DOMElement::getElementsByTagNameNS — Get elements by namespaceURI and localName
    • DOMElement::hasAttribute — Checks to see if attribute exists
    • DOMElement::hasAttributeNS — Checks to see if attribute exists
    • DOMElement::removeAttribute — Removes attribute
    • DOMElement::removeAttributeNode — Removes attribute
    • DOMElement::removeAttributeNS — Removes attribute
    • DOMElement::setAttribute — Adds new attribute
    • DOMElement::setAttributeNode — Adds new attribute node to element
    • DOMElement::setAttributeNodeNS — Adds new attribute node to element
    • DOMElement::setAttributeNS — Adds new attribute
    • DOMElement::setIdAttribute — Declares the attribute specified by name to be of type ID
    • DOMElement::setIdAttributeNode — Declares the attribute specified by node to be of type ID
    • DOMElement::setIdAttributeNS — Declares the attribute specified by local name and namespace URI to be of type ID
  • DOMEntity — The DOMEntity class
  • DOMEntityReference — The DOMEntityReference class
    • DOMEntityReference::__construct — Creates a new DOMEntityReference object
  • DOMException — The DOMException class
  • DOMImplementation — The DOMImplementation class
    • DOMImplementation::__construct — Creates a new DOMImplementation object
    • DOMImplementation::createDocument — Creates a DOMDocument object of the specified type with its document element
    • DOMImplementation::createDocumentType — Creates an empty DOMDocumentType object
    • DOMImplementation::hasFeature — Test if the DOM implementation implements a specific feature
  • DOMNamedNodeMap — The DOMNamedNodeMap class
    • DOMNamedNodeMap::getNamedItem — Retrieves a node specified by name
    • DOMNamedNodeMap::getNamedItemNS — Retrieves a node specified by local name and namespace URI
    • DOMNamedNodeMap::item — Retrieves a node specified by index
  • DOMNode — The DOMNode class
    • DOMNode::appendChild — Adds new child at the end of the children
    • DOMNode::C14N — Canonicalize nodes to a string
    • DOMNode::C14NFile — Canonicalize nodes to a file
    • DOMNode::cloneNode — Clones a node
    • DOMNode::getLineNo — Get line number for a node
    • DOMNode::getNodePath — Get an XPath for a node
    • DOMNode::hasAttributes — Checks if node has attributes
    • DOMNode::hasChildNodes — Checks if node has children
    • DOMNode::insertBefore — Adds a new child before a reference node
    • DOMNode::isDefaultNamespace — Checks if the specified namespaceURI is the default namespace or not
    • DOMNode::isSameNode — Indicates if two nodes are the same node
    • DOMNode::isSupported — Checks if feature is supported for specified version
    • DOMNode::lookupNamespaceURI — Gets the namespace URI of the node based on the prefix
    • DOMNode::lookupPrefix — Gets the namespace prefix of the node based on the namespace URI
    • DOMNode::normalize — Normalizes the node
    • DOMNode::removeChild — Removes child from list of children
    • DOMNode::replaceChild — Replaces a child
  • DOMNodeList — The DOMNodeList class
    • DOMNodelist::item — Retrieves a node specified by index
  • DOMNotation — The DOMNotation class
  • DOMProcessingInstruction — The DOMProcessingInstruction class
    • DOMProcessingInstruction::__construct — Creates a new DOMProcessingInstruction object
  • DOMText — The DOMText class
    • DOMText::__construct — Creates a new DOMText object
    • DOMText::isWhitespaceInElementContent — Indicates whether this text node contains whitespace
    • DOMText::splitText — Breaks this node into two nodes at the specified offset
  • DOMXPath — The DOMXPath class
    • DOMXPath::__construct — Creates a new DOMXPath object
    • DOMXPath::evaluate — Evaluates the given XPath expression and returns a typed result if possible
    • DOMXPath::query — Evaluates the given XPath expression
    • DOMXPath::registerNamespace — Registers the namespace with the DOMXPath object
    • DOMXPath::registerPhpFunctions — Register PHP functions as XPath functions
  • DOM 函数
    • dom_import_simplexml — Gets a DOMElement object from a SimpleXMLElement object
XML 操作
简介
XML 操作


简介

The DOM extension allows you to operate on XML documents through the DOM API with PHP.

Note:

The DOM extension uses UTF-8 encoding. Use utf8_encode() and utf8_decode() to work with texts in ISO-8859-1 encoding or Iconv for other encodings.

DOM
安装／配置
DOM


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
DOM


安装

此扩展默认为启用,编译时可通过下列选项禁用： --disable-dom

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

XML constants
Constant | Value | Description
XML_ELEMENT_NODE (integer) | 1 | Node is a DOMElement
XML_ATTRIBUTE_NODE (integer) | 2 | Node is a DOMAttr
XML_TEXT_NODE (integer) | 3 | Node is a DOMText
XML_CDATA_SECTION_NODE (integer) | 4 | Node is a DOMCharacterData
XML_ENTITY_REF_NODE (integer) | 5 | Node is a DOMEntityReference
XML_ENTITY_NODE (integer) | 6 | Node is a DOMEntity
XML_PI_NODE (integer) | 7 | Node is a DOMProcessingInstruction
XML_COMMENT_NODE (integer) | 8 | Node is a DOMComment
XML_DOCUMENT_NODE (integer) | 9 | Node is a DOMDocument
XML_DOCUMENT_TYPE_NODE (integer) | 10 | Node is a DOMDocumentType
XML_DOCUMENT_FRAG_NODE (integer) | 11 | Node is a DOMDocumentFragment
XML_NOTATION_NODE (integer) | 12 | Node is a DOMNotation
XML_HTML_DOCUMENT_NODE (integer) | 13 |
XML_DTD_NODE (integer) | 14 |
XML_ELEMENT_DECL_NODE (integer) | 15 |
XML_ATTRIBUTE_DECL_NODE (integer) | 16 |
XML_ENTITY_DECL_NODE (integer) | 17 |
XML_NAMESPACE_DECL_NODE (integer) | 18 |
XML_ATTRIBUTE_CDATA (integer) | 1 |
XML_ATTRIBUTE_ID (integer) | 2 |
XML_ATTRIBUTE_IDREF (integer) | 3 |
XML_ATTRIBUTE_IDREFS (integer) | 4 |
XML_ATTRIBUTE_ENTITY (integer) | 5 |
XML_ATTRIBUTE_NMTOKEN (integer) | 7 |
XML_ATTRIBUTE_NMTOKENS (integer) | 8 |
XML_ATTRIBUTE_ENUMERATION (integer) | 9 |
XML_ATTRIBUTE_NOTATION (integer) | 10 |
DOMException constants
Constant | Value | Description
DOM_PHP_ERR (integer) | 0 | Error code not part of the DOM specification. Meant for PHP errors.
DOM_INDEX_SIZE_ERR (integer) | 1 | If index or size is negative, or greater than the allowed value.
DOMSTRING_SIZE_ERR (integer) | 2 | If the specified range of text does not fit into a DOMString.
DOM_HIERARCHY_REQUEST_ERR (integer) | 3 | If any node is inserted somewhere it doesn't belong
DOM_WRONG_DOCUMENT_ERR (integer) | 4 | If a node is used in a different document than the one that created it.
DOM_INVALID_CHARACTER_ERR (integer) | 5 | If an invalid or illegal character is specified, such as in a name.
DOM_NO_DATA_ALLOWED_ERR (integer) | 6 | If data is specified for a node which does not support data.
DOM_NO_MODIFICATION_ALLOWED_ERR (integer) | 7 | If an attempt is made to modify an object where modifications are not allowed.
DOM_NOT_FOUND_ERR (integer) | 8 | If an attempt is made to reference a node in a context where it does not exist.
DOM_NOT_SUPPORTED_ERR (integer) | 9 | If the implementation does not support the requested type of object or operation.
DOM_INUSE_ATTRIBUTE_ERR (integer) | 10 | If an attempt is made to add an attribute that is already in use elsewhere.
DOM_INVALID_STATE_ERR (integer) | 11 | If an attempt is made to use an object that is not, or is no longer, usable.
DOM_SYNTAX_ERR (integer) | 12 | If an invalid or illegal string is specified.
DOM_INVALID_MODIFICATION_ERR (integer) | 13 | If an attempt is made to modify the type of the underlying object.
DOM_NAMESPACE_ERR (integer) | 14 | If an attempt is made to create or change an object in a way which is incorrect with regard to namespaces.
DOM_INVALID_ACCESS_ERR (integer) | 15 | If a parameter or an operation is not supported by the underlying object.
DOM_VALIDATION_ERR (integer) | 16 | If a call to a method such as insertBefore or removeChild would make the Node invalid with respect to "partial validity", this exception would be raised and the operation would not be done.
资源类型
范例
DOM


范例

Many examples in this reference require an XML file. We will use book.xml that contains the following:

Example #1 book.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
]>
<book id="listing">
 <title>My lists</title>
 <chapter id="books">
  <title>My books</title>
  <para>
   <informaltable>
    <tgroup cols="4">
     <thead>
      <row>
       <entry>Title</entry>
       <entry>Author</entry>
       <entry>Language</entry>
       <entry>ISBN</entry>
      </row>
     </thead>
     <tbody>
      <row>
       <entry>The Grapes of Wrath</entry>
       <entry>John Steinbeck</entry>
       <entry>en</entry>
       <entry>0140186409</entry>
      </row>
      <row>
       <entry>The Pearl</entry>
       <entry>John Steinbeck</entry>
       <entry>en</entry>
       <entry>014017737X</entry>
      </row>
      <row>
       <entry>Samarcande</entry>
       <entry>Amine Maalouf</entry>
       <entry>fr</entry>
       <entry>2253051209</entry>
      </row>
      <!-- TODO: I have a lot of remaining books to add.. -->
     </tbody>
    </tgroup>
   </informaltable>
  </para>
 </chapter>
</book>

预定义常量
DOMAttr
DOM


The DOMAttr class

(PHP 5, PHP 7)

简介

DOMAttr represents an attribute in the DOMElement object.

类摘要

DOMAttr extends DOMNode {
/* 属性 */
public readonly string $name ;
public readonly DOMElement $ownerElement ;
public readonly bool $schemaTypeInfo ;
public readonly bool $specified ;
public string $value ;
/* 方法 */
public __construct ( string $name [, string $value ] )
public bool isId ( void )
/* 继承的方法 */
public DOMNode DOMNode::appendChild ( DOMNode $newnode )
public string DOMNode::C14N ([ bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public int DOMNode::C14NFile ( string $uri [, bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public DOMNode DOMNode::cloneNode ([ bool $deep ] )
public int DOMNode::getLineNo ( void )
public string DOMNode::getNodePath ( void )
public bool DOMNode::hasAttributes ( void )
public bool DOMNode::hasChildNodes ( void )
public DOMNode DOMNode::insertBefore ( DOMNode $newnode [, DOMNode $refnode ] )
public bool DOMNode::isDefaultNamespace ( string $namespaceURI )
public bool DOMNode::isSameNode ( DOMNode $node )
public bool DOMNode::isSupported ( string $feature , string $version )
public string DOMNode::lookupNamespaceURI ( string $prefix )
public string DOMNode::lookupPrefix ( string $namespaceURI )
public void DOMNode::normalize ( void )
public DOMNode DOMNode::removeChild ( DOMNode $oldnode )
public DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )
}

属性

name

The name of the attribute

ownerElement

The element which contains the attribute

schemaTypeInfo

Not implemented yet, always is NULL

specified

Not implemented yet, always is NULL

value

The value of the attribute

参见

  • » W3C specification of Attr

Table of Contents

  • DOMAttr::__construct — Creates a new DOMAttr object
  • DOMAttr::isId — Checks if attribute is a defined ID
范例
DOMAttr::__construct
DOM


Creates a new DOMAttr object

DOMAttr
DOMAttr::isId
DOMAttr
PHP Manual

DOMAttr::__construct

(PHP 5, PHP 7)

DOMAttr::__construct — Creates a new DOMAttr object

说明

public DOMAttr::__construct ( string $name [, string $value ] )

Creates a new DOMAttr object. This object is read only. It may be appended to a document, but additional nodes may not be appended to this node until the node is associated with a document. To create a writable node, use DOMDocument::createAttribute.

参数

name

The tag name of the attribute.

value

The value of the attribute.

范例

Example #1 Creating a new DOMAttr object

<?php

$dom = new DOMDocument('1.0', 'iso-8859-1');
$element = $dom->appendChild(new DOMElement('root'));
$attr = $element->setAttributeNode(new DOMAttr('attr', 'attrvalue'));
echo $dom->saveXML();

?>

以上例程会输出：

<?xml version="1.0" encoding="utf-8"?>
<root attr="attrvalue" />

参见

  • DOMDocument::createAttribute() - Create new attribute

DOMAttr
DOMAttr::isId
DOMAttr


Checks if attribute is a defined ID

DOMAttr::__construct
DOMCdataSection
DOMAttr
PHP Manual

DOMAttr::isId

(PHP 5, PHP 7)

DOMAttr::isId — Checks if attribute is a defined ID

说明

public bool DOMAttr::isId ( void )

This function checks if the attribute is a defined ID.

According to the DOM standard this requires a DTD which defines the attribute ID to be of type ID. You need to validate your document with DOMDocument::validate or DOMDocument::validateOnParse before using this function.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 DOMAttr::isId() Example

<?php

$doc = new DomDocument;

// We need to validate our document before refering to the id
$doc->validateOnParse = true;
$doc->Load('book.xml');

// We retrieve the attribute named id of the chapter element
$attr = $doc->getElementsByTagName('chapter')->item(0)->getAttributeNode('id');

var_dump($attr->isId()); // bool(true)

?>

DOMAttr::__construct
DOMCdataSection
DOMAttr


The DOMCdataSection class

(PHP 5, PHP 7)

简介

The DOMCdataSection inherits from DOMText for textural representation of CData constructs.

类摘要

DOMCdataSection extends DOMText {
/* Methods */
public __construct ( string $value )
/* Inherited methods */
public bool DOMText::isWhitespaceInElementContent ( void )
public DOMText DOMText::splitText ( int $offset )
}

Table of Contents

  • DOMCdataSection::__construct — Constructs a new DOMCdataSection object
DOMAttr::isId
DOMCdataSection::__construct
DOM


Constructs a new DOMCdataSection object

DOMCdataSection
DOMCharacterData
DOMCdataSection
PHP Manual

DOMCdataSection::__construct

(PHP 5, PHP 7)

DOMCdataSection::__construct — Constructs a new DOMCdataSection object

说明

public DOMCdataSection::__construct ( string $value )

Constructs a new CDATA node. This works like the DOMText class.

参数

value

The value of the CDATA node. If not supplied, an empty CDATA node is created.

范例

Example #1 Creating a new DOMCdataSection object

<?php

$dom = new DOMDocument('1.0', 'utf-8');
$element = $dom->appendChild(new DOMElement('root'));
$text = $element->appendChild(new DOMCdataSection('root value'));
echo $dom->saveXML();

?>

以上例程会输出：

<?xml version="1.0" encoding="utf-8"?>
<root><![CDATA[root value]]></root>

参见

  • DOMText::__construct() - Creates a new DOMText object
  • DOMDocument::createTextNode() - Create new text node

DOMCdataSection
DOMCharacterData
DOMCdataSection


The DOMCharacterData class

(PHP 5, PHP 7)

简介

Represents nodes with character data. No nodes directly correspond to this class, but other nodes do inherit from it.

类摘要

DOMCharacterData extends DOMNode {
/* 属性 */
public string $data ;
readonly public int $length ;
/* 方法 */
void appendData ( string $data )
void deleteData ( int $offset , int $count )
void insertData ( int $offset , string $data )
void replaceData ( int $offset , int $count , string $data )
string substringData ( int $offset , int $count )
/* 继承的方法 */
public DOMNode DOMNode::appendChild ( DOMNode $newnode )
public string DOMNode::C14N ([ bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public int DOMNode::C14NFile ( string $uri [, bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public DOMNode DOMNode::cloneNode ([ bool $deep ] )
public int DOMNode::getLineNo ( void )
public string DOMNode::getNodePath ( void )
public bool DOMNode::hasAttributes ( void )
public bool DOMNode::hasChildNodes ( void )
public DOMNode DOMNode::insertBefore ( DOMNode $newnode [, DOMNode $refnode ] )
public bool DOMNode::isDefaultNamespace ( string $namespaceURI )
public bool DOMNode::isSameNode ( DOMNode $node )
public bool DOMNode::isSupported ( string $feature , string $version )
public string DOMNode::lookupNamespaceURI ( string $prefix )
public string DOMNode::lookupPrefix ( string $namespaceURI )
public void DOMNode::normalize ( void )
public DOMNode DOMNode::removeChild ( DOMNode $oldnode )
public DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )
}

属性

data

The contents of the node.

length

The length of the contents.

参见

  • » W3C specification of CharacterData

Table of Contents

  • DOMCharacterData::appendData — Append the string to the end of the character data of the node
  • DOMCharacterData::deleteData — Remove a range of characters from the node
  • DOMCharacterData::insertData — Insert a string at the specified 16-bit unit offset
  • DOMCharacterData::replaceData — Replace a substring within the DOMCharacterData node
  • DOMCharacterData::substringData — Extracts a range of data from the node
DOMCdataSection::__construct
DOMCharacterData::appendData
DOM


Append the string to the end of the character data of the node

DOMCharacterData
DOMCharacterData::deleteData
DOMCharacterData
PHP Manual

DOMCharacterData::appendData

(PHP 5, PHP 7)

DOMCharacterData::appendData — Append the string to the end of the character data of the node

说明

void DOMCharacterData::appendData ( string $data )

Append the string data to the end of the character data of the node.

参数

data

The string to append.

返回值

没有返回值。

参见

  • DOMCharacterData::deleteData() - Remove a range of characters from the node
  • DOMCharacterData::insertData() - Insert a string at the specified 16-bit unit offset
  • DOMCharacterData::replaceData() - Replace a substring within the DOMCharacterData node
  • DOMCharacterData::substringData() - Extracts a range of data from the node

DOMCharacterData
DOMCharacterData::deleteData
DOMCharacterData


Remove a range of characters from the node

DOMCharacterData::appendData
DOMCharacterData::insertData
DOMCharacterData
PHP Manual

DOMCharacterData::deleteData

(PHP 5, PHP 7)

DOMCharacterData::deleteData — Remove a range of characters from the node

说明

void DOMCharacterData::deleteData ( int $offset , int $count )

Deletes count characters starting from position offset.

参数

offset

The offset from which to start removing.

count

The number of characters to delete. If the sum of offset and count exceeds the length, then all characters to the end of the data are deleted.

返回值

没有返回值。

错误／异常

DOM_INDEX_SIZE_ERR

Raised if offset is negative or greater than the number of 16-bit units in data, or if count is negative.

参见

  • DOMCharacterData::appendData() - Append the string to the end of the character data of the node
  • DOMCharacterData::insertData() - Insert a string at the specified 16-bit unit offset
  • DOMCharacterData::replaceData() - Replace a substring within the DOMCharacterData node
  • DOMCharacterData::substringData() - Extracts a range of data from the node

DOMCharacterData::appendData
DOMCharacterData::insertData
DOMCharacterData


Insert a string at the specified 16-bit unit offset

DOMCharacterData::deleteData
DOMCharacterData::replaceData
DOMCharacterData
PHP Manual

DOMCharacterData::insertData

(PHP 5, PHP 7)

DOMCharacterData::insertData — Insert a string at the specified 16-bit unit offset

说明

void DOMCharacterData::insertData ( int $offset , string $data )

Inserts string data at position offset.

参数

offset

The character offset at which to insert.

data

The string to insert.

返回值

没有返回值。

错误／异常

DOM_INDEX_SIZE_ERR

Raised if offset is negative or greater than the number of 16-bit units in data.

参见

  • DOMCharacterData::appendData() - Append the string to the end of the character data of the node
  • DOMCharacterData::deleteData() - Remove a range of characters from the node
  • DOMCharacterData::replaceData() - Replace a substring within the DOMCharacterData node
  • DOMCharacterData::substringData() - Extracts a range of data from the node

DOMCharacterData::deleteData
DOMCharacterData::replaceData
DOMCharacterData


Replace a substring within the DOMCharacterData node

DOMCharacterData::insertData
DOMCharacterData::substringData
DOMCharacterData
PHP Manual

DOMCharacterData::replaceData

(PHP 5, PHP 7)

DOMCharacterData::replaceData — Replace a substring within the DOMCharacterData node

说明

void DOMCharacterData::replaceData ( int $offset , int $count , string $data )

Replace count characters starting from position offset with data.

参数

offset

The offset from which to start replacing.

count

The number of characters to replace. If the sum of offset and count exceeds the length, then all characters to the end of the data are replaced.

data

The string with which the range must be replaced.

返回值

没有返回值。

错误／异常

DOM_INDEX_SIZE_ERR

Raised if offset is negative or greater than the number of 16-bit units in data, or if count is negative.

参见

  • DOMCharacterData::appendData() - Append the string to the end of the character data of the node
  • DOMCharacterData::deleteData() - Remove a range of characters from the node
  • DOMCharacterData::insertData() - Insert a string at the specified 16-bit unit offset
  • DOMCharacterData::substringData() - Extracts a range of data from the node

DOMCharacterData::insertData
DOMCharacterData::substringData
DOMCharacterData


Extracts a range of data from the node

DOMCharacterData::replaceData
DOMComment
DOMCharacterData
PHP Manual

DOMCharacterData::substringData

(PHP 5, PHP 7)

DOMCharacterData::substringData — Extracts a range of data from the node

说明

string DOMCharacterData::substringData ( int $offset , int $count )

Returns the specified substring.

参数

offset

Start offset of substring to extract.

count

The number of characters to extract.

返回值

The specified substring. If the sum of offset and count exceeds the length, then all 16-bit units to the end of the data are returned.

错误／异常

DOM_INDEX_SIZE_ERR

Raised if offset is negative or greater than the number of 16-bit units in data, or if count is negative.

参见

  • DOMCharacterData::appendData() - Append the string to the end of the character data of the node
  • DOMCharacterData::deleteData() - Remove a range of characters from the node
  • DOMCharacterData::insertData() - Insert a string at the specified 16-bit unit offset
  • DOMCharacterData::replaceData() - Replace a substring within the DOMCharacterData node

DOMCharacterData::replaceData
DOMComment
DOMCharacterData


The DOMComment class

(PHP 5, PHP 7)

简介

Represents comment nodes, characters delimited by <!-- and -->.

类摘要

DOMComment extends DOMCharacterData {
/* 方法 */
public __construct ([ string $value ] )
/* 继承的方法 */
void DOMCharacterData::appendData ( string $data )
void DOMCharacterData::deleteData ( int $offset , int $count )
void DOMCharacterData::insertData ( int $offset , string $data )
void DOMCharacterData::replaceData ( int $offset , int $count , string $data )
string DOMCharacterData::substringData ( int $offset , int $count )
public DOMNode DOMNode::appendChild ( DOMNode $newnode )
public string DOMNode::C14N ([ bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public int DOMNode::C14NFile ( string $uri [, bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public DOMNode DOMNode::cloneNode ([ bool $deep ] )
public int DOMNode::getLineNo ( void )
public string DOMNode::getNodePath ( void )
public bool DOMNode::hasAttributes ( void )
public bool DOMNode::hasChildNodes ( void )
public DOMNode DOMNode::insertBefore ( DOMNode $newnode [, DOMNode $refnode ] )
public bool DOMNode::isDefaultNamespace ( string $namespaceURI )
public bool DOMNode::isSameNode ( DOMNode $node )
public bool DOMNode::isSupported ( string $feature , string $version )
public string DOMNode::lookupNamespaceURI ( string $prefix )
public string DOMNode::lookupPrefix ( string $namespaceURI )
public void DOMNode::normalize ( void )
public DOMNode DOMNode::removeChild ( DOMNode $oldnode )
public DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )
}

参见

  • » W3C specification of Comment

Table of Contents

  • DOMComment::__construct — Creates a new DOMComment object
DOMCharacterData::substringData
DOMComment::__construct
DOM


Creates a new DOMComment object

DOMComment
DOMDocument
DOMComment
PHP Manual

DOMComment::__construct

(PHP 5, PHP 7)

DOMComment::__construct — Creates a new DOMComment object

说明

public DOMComment::__construct ([ string $value ] )

Creates a new DOMComment object. This object is read only. It may be appended to a document, but additional nodes may not be appended to this node until the node is associated with a document. To create a writeable node, use DOMDocument::createComment.

参数

value

The value of the comment.

范例

Example #1 Creating a new DOMComment

<?php

$dom = new DOMDocument('1.0', 'iso-8859-1');
$element = $dom->appendChild(new DOMElement('root'));
$comment = $element->appendChild(new DOMComment('root comment'));
echo $dom->saveXML(); /* <?xml version="1.0" encoding="iso-8859-1"?><root><!--root comment--></root> */

?>

参见

  • DOMDocument::createComment() - Create new comment node

DOMComment
DOMDocument
DOMComment


The DOMDocument class

(PHP 5, PHP 7)

简介

Represents an entire HTML or XML document; serves as the root of the document tree.

类摘要

DOMDocument extends DOMNode {
/* 属性 */
readonly public string $actualEncoding ;
readonly public DOMConfiguration $config ;
readonly public DOMDocumentType $doctype ;
readonly public DOMElement $documentElement ;
public string $documentURI ;
public string $encoding ;
public bool $formatOutput ;
readonly public DOMImplementation $implementation ;
public bool $preserveWhiteSpace = true ;
public bool $recover ;
public bool $resolveExternals ;
public bool $standalone ;
public bool $strictErrorChecking = true ;
public bool $substituteEntities ;
public bool $validateOnParse = false ;
public string $version ;
readonly public string $xmlEncoding ;
public bool $xmlStandalone ;
public string $xmlVersion ;
/* 方法 */
public __construct ([ string $version [, string $encoding ]] )
public DOMAttr createAttribute ( string $name )
public DOMAttr createAttributeNS ( string $namespaceURI , string $qualifiedName )
public DOMCDATASection createCDATASection ( string $data )
public DOMComment createComment ( string $data )
public DOMDocumentFragment createDocumentFragment ( void )
public DOMElement createElement ( string $name [, string $value ] )
public DOMElement createElementNS ( string $namespaceURI , string $qualifiedName [, string $value ] )
public DOMEntityReference createEntityReference ( string $name )
public DOMProcessingInstruction createProcessingInstruction ( string $target [, string $data ] )
public DOMText createTextNode ( string $content )
public DOMElement getElementById ( string $elementId )
public DOMNodeList getElementsByTagName ( string $name )
public DOMNodeList getElementsByTagNameNS ( string $namespaceURI , string $localName )
public DOMNode importNode ( DOMNode $importedNode [, bool $deep ] )
public mixed load ( string $filename [, int $options = 0 ] )
public bool loadHTML ( string $source [, int $options = 0 ] )
public bool loadHTMLFile ( string $filename [, int $options = 0 ] )
public mixed loadXML ( string $source [, int $options = 0 ] )
public void normalizeDocument ( void )
public bool registerNodeClass ( string $baseclass , string $extendedclass )
public bool relaxNGValidate ( string $filename )
public bool relaxNGValidateSource ( string $source )
public int save ( string $filename [, int $options ] )
public string saveHTML ([ DOMNode $node = NULL ] )
public int saveHTMLFile ( string $filename )
public string saveXML ([ DOMNode $node [, int $options ]] )
public bool schemaValidate ( string $filename [, int $flags ] )
public bool schemaValidateSource ( string $source [, int $flags ] )
public bool validate ( void )
public int xinclude ([ int $options ] )
/* 继承的方法 */
public DOMNode DOMNode::appendChild ( DOMNode $newnode )
public string DOMNode::C14N ([ bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public int DOMNode::C14NFile ( string $uri [, bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public DOMNode DOMNode::cloneNode ([ bool $deep ] )
public int DOMNode::getLineNo ( void )
public string DOMNode::getNodePath ( void )
public bool DOMNode::hasAttributes ( void )
public bool DOMNode::hasChildNodes ( void )
public DOMNode DOMNode::insertBefore ( DOMNode $newnode [, DOMNode $refnode ] )
public bool DOMNode::isDefaultNamespace ( string $namespaceURI )
public bool DOMNode::isSameNode ( DOMNode $node )
public bool DOMNode::isSupported ( string $feature , string $version )
public string DOMNode::lookupNamespaceURI ( string $prefix )
public string DOMNode::lookupPrefix ( string $namespaceURI )
public void DOMNode::normalize ( void )
public DOMNode DOMNode::removeChild ( DOMNode $oldnode )
public DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )
}

属性

actualEncoding

Deprecated. Actual encoding of the document, is a readonly equivalent to encoding.

config

Deprecated. Configuration used when DOMDocument::normalizeDocument() is invoked.

doctype

The Document Type Declaration associated with this document.

documentElement

This is a convenience attribute that allows direct access to the child node that is the document element of the document.

documentURI

The location of the document or NULL if undefined.

encoding

Encoding of the document, as specified by the XML declaration. This attribute is not present in the final DOM Level 3 specification, but is the only way of manipulating XML document encoding in this implementation.

formatOutput

Nicely formats output with indentation and extra space.

implementation

The DOMImplementation object that handles this document.

preserveWhiteSpace

Do not remove redundant white space. Default to TRUE.

recover

Proprietary. Enables recovery mode, i.e. trying to parse non-well formed documents. This attribute is not part of the DOM specification and is specific to libxml.

resolveExternals

Set it to TRUE to load external entities from a doctype declaration. This is useful for including character entities in your XML document.

standalone

Deprecated. Whether or not the document is standalone, as specified by the XML declaration, corresponds to xmlStandalone.

strictErrorChecking

Throws DOMException on errors. Default to TRUE.

substituteEntities

Proprietary. Whether or not to substitute entities. This attribute is not part of the DOM specification and is specific to libxml.

validateOnParse

Loads and validates against the DTD. Default to FALSE.

version

Deprecated. Version of XML, corresponds to xmlVersion.

xmlEncoding

An attribute specifying, as part of the XML declaration, the encoding of this document. This is NULL when unspecified or when it is not known, such as when the Document was created in memory.

xmlStandalone

An attribute specifying, as part of the XML declaration, whether this document is standalone. This is FALSE when unspecified.

xmlVersion

An attribute specifying, as part of the XML declaration, the version number of this document. If there is no declaration and if this document supports the "XML" feature, the value is "1.0".

注释

Note:

The DOM extension uses UTF-8 encoding. Use utf8_encode() and utf8_decode() to work with texts in ISO-8859-1 encoding or Iconv for other encodings.

参见

  • » W3C specification for Document

Table of Contents

  • DOMDocument::__construct — Creates a new DOMDocument object
  • DOMDocument::createAttribute — Create new attribute
  • DOMDocument::createAttributeNS — Create new attribute node with an associated namespace
  • DOMDocument::createCDATASection — Create new cdata node
  • DOMDocument::createComment — Create new comment node
  • DOMDocument::createDocumentFragment — Create new document fragment
  • DOMDocument::createElement — Create new element node
  • DOMDocument::createElementNS — Create new element node with an associated namespace
  • DOMDocument::createEntityReference — Create new entity reference node
  • DOMDocument::createProcessingInstruction — Creates new PI node
  • DOMDocument::createTextNode — Create new text node
  • DOMDocument::getElementById — Searches for an element with a certain id
  • DOMDocument::getElementsByTagName — Searches for all elements with given local tag name
  • DOMDocument::getElementsByTagNameNS — Searches for all elements with given tag name in specified namespace
  • DOMDocument::importNode — Import node into current document
  • DOMDocument::load — Load XML from a file
  • DOMDocument::loadHTML — Load HTML from a string
  • DOMDocument::loadHTMLFile — Load HTML from a file
  • DOMDocument::loadXML — Load XML from a string
  • DOMDocument::normalizeDocument — Normalizes the document
  • DOMDocument::registerNodeClass — Register extended class used to create base node type
  • DOMDocument::relaxNGValidate — Performs relaxNG validation on the document
  • DOMDocument::relaxNGValidateSource — Performs relaxNG validation on the document
  • DOMDocument::save — Dumps the internal XML tree back into a file
  • DOMDocument::saveHTML — Dumps the internal document into a string using HTML formatting
  • DOMDocument::saveHTMLFile — Dumps the internal document into a file using HTML formatting
  • DOMDocument::saveXML — Dumps the internal XML tree back into a string
  • DOMDocument::schemaValidate — Validates a document based on a schema
  • DOMDocument::schemaValidateSource — Validates a document based on a schema
  • DOMDocument::validate — Validates the document based on its DTD
  • DOMDocument::xinclude — Substitutes XIncludes in a DOMDocument Object
DOMComment::__construct
DOMDocument::__construct
DOM


Creates a new DOMDocument object

DOMDocument
DOMDocument::createAttribute
DOMDocument
PHP Manual

DOMDocument::__construct

(PHP 5, PHP 7)

DOMDocument::__construct — Creates a new DOMDocument object

说明

public DOMDocument::__construct ([ string $version [, string $encoding ]] )

Creates a new DOMDocument object.

参数

version

The version number of the document as part of the XML declaration.

encoding

The encoding of the document as part of the XML declaration.

范例

Example #1 Creating a new DOMDocument

<?php

$dom = new DOMDocument('1.0', 'iso-8859-1');

echo $dom->saveXML(); /* <?xml version="1.0" encoding="iso-8859-1"?> */

?>

参见

  • DOMImplementation::createDocument() - Creates a DOMDocument object of the specified type with its document element

DOMDocument
DOMDocument::createAttribute
DOMDocument


Create new attribute

DOMDocument::__construct
DOMDocument::createAttributeNS
DOMDocument
PHP Manual

DOMDocument::createAttribute

(PHP 5, PHP 7)

DOMDocument::createAttribute — Create new attribute

说明

public DOMAttr DOMDocument::createAttribute ( string $name )

This function creates a new instance of class DOMAttr. 此节点出现在文档中，除非是用诸如 DOMNode->appendChild() 等函数来将其插入。

参数

name

The name of the attribute.

返回值

The new DOMAttr or FALSE if an error occurred.

错误／异常

DOM_INVALID_CHARACTER_ERR

Raised if name contains an invalid character.

参见

  • DOMNode::appendChild() - Adds new child at the end of the children
  • DOMDocument::createAttributeNS() - Create new attribute node with an associated namespace
  • DOMDocument::createCDATASection() - Create new cdata node
  • DOMDocument::createComment() - Create new comment node
  • DOMDocument::createDocumentFragment() - Create new document fragment
  • DOMDocument::createElement() - Create new element node
  • DOMDocument::createElementNS() - Create new element node with an associated namespace
  • DOMDocument::createEntityReference() - Create new entity reference node
  • DOMDocument::createProcessingInstruction() - Creates new PI node
  • DOMDocument::createTextNode() - Create new text node

DOMDocument::__construct
DOMDocument::createAttributeNS
DOMDocument


Create new attribute node with an associated namespace

DOMDocument::createAttribute
DOMDocument::createCDATASection
DOMDocument
PHP Manual

DOMDocument::createAttributeNS

(PHP 5, PHP 7)

DOMDocument::createAttributeNS — Create new attribute node with an associated namespace

说明

public DOMAttr DOMDocument::createAttributeNS ( string $namespaceURI , string $qualifiedName )

This function creates a new instance of class DOMAttr. 此节点出现在文档中，除非是用诸如 DOMNode->appendChild() 等函数来将其插入。

参数

namespaceURI

The URI of the namespace.

qualifiedName

The tag name and prefix of the attribute, as prefix:tagname.

返回值

The new DOMAttr or FALSE if an error occurred.

错误／异常

DOM_INVALID_CHARACTER_ERR

Raised if qualifiedName contains an invalid character.

DOM_NAMESPACE_ERR

Raised if qualifiedName is a malformed qualified name, or if qualifiedName has a prefix and namespaceURI is NULL.

参见

  • DOMNode::appendChild() - Adds new child at the end of the children
  • DOMDocument::createAttribute() - Create new attribute
  • DOMDocument::createCDATASection() - Create new cdata node
  • DOMDocument::createComment() - Create new comment node
  • DOMDocument::createDocumentFragment() - Create new document fragment
  • DOMDocument::createElement() - Create new element node
  • DOMDocument::createElementNS() - Create new element node with an associated namespace
  • DOMDocument::createEntityReference() - Create new entity reference node
  • DOMDocument::createProcessingInstruction() - Creates new PI node
  • DOMDocument::createTextNode() - Create new text node

DOMDocument::createAttribute
DOMDocument::createCDATASection
DOMDocument


Create new cdata node

DOMDocument::createAttributeNS
DOMDocument::createComment
DOMDocument
PHP Manual

DOMDocument::createCDATASection

(PHP 5, PHP 7)

DOMDocument::createCDATASection — Create new cdata node

说明

public DOMCDATASection DOMDocument::createCDATASection ( string $data )

This function creates a new instance of class DOMCDATASection. 此节点出现在文档中，除非是用诸如 DOMNode->appendChild() 等函数来将其插入。

参数

data

The content of the cdata.

返回值

The new DOMCDATASection or FALSE if an error occurred.

参见

  • DOMNode::appendChild() - Adds new child at the end of the children
  • DOMDocument::createAttribute() - Create new attribute
  • DOMDocument::createAttributeNS() - Create new attribute node with an associated namespace
  • DOMDocument::createComment() - Create new comment node
  • DOMDocument::createDocumentFragment() - Create new document fragment
  • DOMDocument::createElement() - Create new element node
  • DOMDocument::createElementNS() - Create new element node with an associated namespace
  • DOMDocument::createEntityReference() - Create new entity reference node
  • DOMDocument::createProcessingInstruction() - Creates new PI node
  • DOMDocument::createTextNode() - Create new text node

DOMDocument::createAttributeNS
DOMDocument::createComment
DOMDocument


Create new comment node

DOMDocument::createCDATASection
DOMDocument::createDocumentFragment
DOMDocument
PHP Manual

DOMDocument::createComment

(PHP 5, PHP 7)

DOMDocument::createComment — Create new comment node

说明

public DOMComment DOMDocument::createComment ( string $data )

This function creates a new instance of class DOMComment. 此节点出现在文档中，除非是用诸如 DOMNode->appendChild() 等函数来将其插入。

参数

data

The content of the comment.

返回值

The new DOMComment or FALSE if an error occurred.

参见

  • DOMNode::appendChild() - Adds new child at the end of the children
  • DOMDocument::createAttribute() - Create new attribute
  • DOMDocument::createAttributeNS() - Create new attribute node with an associated namespace
  • DOMDocument::createCDATASection() - Create new cdata node
  • DOMDocument::createDocumentFragment() - Create new document fragment
  • DOMDocument::createElement() - Create new element node
  • DOMDocument::createElementNS() - Create new element node with an associated namespace
  • DOMDocument::createEntityReference() - Create new entity reference node
  • DOMDocument::createProcessingInstruction() - Creates new PI node
  • DOMDocument::createTextNode() - Create new text node

DOMDocument::createCDATASection
DOMDocument::createDocumentFragment
DOMDocument


Create new document fragment

DOMDocument::createComment
DOMDocument::createElement
DOMDocument
PHP Manual

DOMDocument::createDocumentFragment

(PHP 5, PHP 7)

DOMDocument::createDocumentFragment — Create new document fragment

说明

public DOMDocumentFragment DOMDocument::createDocumentFragment ( void )

This function creates a new instance of class DOMDocumentFragment. 此节点出现在文档中，除非是用诸如 DOMNode->appendChild() 等函数来将其插入。

返回值

The new DOMDocumentFragment or FALSE if an error occurred.

参见

  • DOMNode::appendChild() - Adds new child at the end of the children
  • DOMDocument::createAttribute() - Create new attribute
  • DOMDocument::createAttributeNS() - Create new attribute node with an associated namespace
  • DOMDocument::createCDATASection() - Create new cdata node
  • DOMDocument::createComment() - Create new comment node
  • DOMDocument::createElement() - Create new element node
  • DOMDocument::createElementNS() - Create new element node with an associated namespace
  • DOMDocument::createEntityReference() - Create new entity reference node
  • DOMDocument::createProcessingInstruction() - Creates new PI node
  • DOMDocument::createTextNode() - Create new text node

DOMDocument::createComment
DOMDocument::createElement
DOMDocument


Create new element node

DOMDocument::createDocumentFragment
DOMDocument::createElementNS
DOMDocument
PHP Manual

DOMDocument::createElement

(PHP 5, PHP 7)

DOMDocument::createElement — Create new element node

说明

public DOMElement DOMDocument::createElement ( string $name [, string $value ] )

This function creates a new instance of class DOMElement. 此节点出现在文档中，除非是用诸如 DOMNode->appendChild() 等函数来将其插入。

参数

name

The tag name of the element.

value

The value of the element. By default, an empty element will be created. The value can also be set later with DOMElement::$nodeValue.

The value is used verbatim except that the < and > entity references will escaped. Note that & has to be manually escaped; otherwise it is regarded as starting an entity reference. Also " won't be escaped.

返回值

Returns a new instance of class DOMElement or FALSE if an error occurred.

错误／异常

DOM_INVALID_CHARACTER_ERR

Raised if name contains an invalid character.

范例

Example #1 Creating a new element and inserting it as root

<?php

$dom = new DOMDocument('1.0', 'utf-8');

$element = $dom->createElement('test', 'This is the root element!');

// We insert the new element as root (child of the document)
$dom->appendChild($element);

echo $dom->saveXML();
?>

以上例程会输出：

<?xml version="1.0" encoding="utf-8"?>
<test>This is the root element!</test>

Example #2 Passing text containing an unescaped & as value

<?php
$dom = new DOMDocument('1.0', 'utf-8');
$element = $dom->createElement('foo', 'me & you');
$dom->appendChild($element);
echo $dom->saveXML();
?>

以上例程的输出类似于：

Warning: DOMDocument::createElement(): unterminated entity reference             you in /in/BjTCg on line 4
<?xml version="1.0" encoding="utf-8"?>
<foo/>

注释

Note:

The value will not be escaped. Use DOMDocument::createTextNode() to create a text node with escaping support.

参见

  • DOMNode::appendChild() - Adds new child at the end of the children
  • DOMDocument::createAttribute() - Create new attribute
  • DOMDocument::createAttributeNS() - Create new attribute node with an associated namespace
  • DOMDocument::createCDATASection() - Create new cdata node
  • DOMDocument::createComment() - Create new comment node
  • DOMDocument::createDocumentFragment() - Create new document fragment
  • DOMDocument::createElementNS() - Create new element node with an associated namespace
  • DOMDocument::createEntityReference() - Create new entity reference node
  • DOMDocument::createProcessingInstruction() - Creates new PI node
  • DOMDocument::createTextNode() - Create new text node

DOMDocument::createDocumentFragment
DOMDocument::createElementNS
DOMDocument


Create new element node with an associated namespace

DOMDocument::createElement
DOMDocument::createEntityReference
DOMDocument
PHP Manual

DOMDocument::createElementNS

(PHP 5, PHP 7)

DOMDocument::createElementNS — Create new element node with an associated namespace

说明

public DOMElement DOMDocument::createElementNS ( string $namespaceURI , string $qualifiedName [, string $value ] )

This function creates a new element node with an associated namespace. 此节点出现在文档中，除非是用诸如 DOMNode->appendChild() 等函数来将其插入。

参数

namespaceURI

The URI of the namespace.

qualifiedName

The qualified name of the element, as prefix:tagname.

value

The value of the element. By default, an empty element will be created. You can also set the value later with DOMElement::$nodeValue.

返回值

The new DOMElement or FALSE if an error occurred.

错误／异常

DOM_INVALID_CHARACTER_ERR

Raised if qualifiedName contains an invalid character.

DOM_NAMESPACE_ERR

Raised if qualifiedName is a maformed qualified name.

范例

Example #1 Creating a new element and inserting it as root

<?php

$dom = new DOMDocument('1.0', 'utf-8');

$element = $dom->createElementNS('http://www.example.com/XFoo', 'xfoo:test', 'This is the root element!');

// We insert the new element as root (child of the document)
$dom->appendChild($element);

echo $dom->saveXML();
?>

以上例程会输出：

<?xml version="1.0" encoding="utf-8"?>
<xfoo:test xmlns:xfoo="http://www.example.com/XFoo">This is the root element!</xfoo:test>

Example #2 A namespace prefix example

<?php
$doc  = new DOMDocument('1.0', 'utf-8');
$doc->formatOutput = true;
$root = $doc->createElementNS('http://www.w3.org/2005/Atom', 'element');
$doc->appendChild($root);
$root->setAttributeNS('http://www.w3.org/2000/xmlns/' ,'xmlns:g', 'http://base.google.com/ns/1.0');
$item = $doc->createElementNS('http://base.google.com/ns/1.0', 'g:item_type', 'house');
$root->appendChild($item);

echo $doc->saveXML(), "\n";

echo $item->namespaceURI, "\n"; // Outputs: http://base.google.com/ns/1.0
echo $item->prefix, "\n";       // Outputs: g
echo $item->localName, "\n";    // Outputs: item_type
?>

以上例程会输出：

<?xml version="1.0" encoding="utf-8"?>
<element xmlns="http://www.w3.org/2005/Atom" xmlns:g="http://base.google.com/ns/1.0">
  <g:item_type>house</g:item_type>
</element>

http://base.google.com/ns/1.0
g
item_type

参见

  • DOMNode::appendChild() - Adds new child at the end of the children
  • DOMDocument::createAttribute() - Create new attribute
  • DOMDocument::createAttributeNS() - Create new attribute node with an associated namespace
  • DOMDocument::createCDATASection() - Create new cdata node
  • DOMDocument::createComment() - Create new comment node
  • DOMDocument::createDocumentFragment() - Create new document fragment
  • DOMDocument::createElement() - Create new element node
  • DOMDocument::createEntityReference() - Create new entity reference node
  • DOMDocument::createProcessingInstruction() - Creates new PI node
  • DOMDocument::createTextNode() - Create new text node

DOMDocument::createElement
DOMDocument::createEntityReference
DOMDocument


Create new entity reference node

DOMDocument::createElementNS
DOMDocument::createProcessingInstruction
DOMDocument
PHP Manual

DOMDocument::createEntityReference

(PHP 5, PHP 7)

DOMDocument::createEntityReference — Create new entity reference node

说明

public DOMEntityReference DOMDocument::createEntityReference ( string $name )

This function creates a new instance of class DOMEntityReference. 此节点出现在文档中，除非是用诸如 DOMNode->appendChild() 等函数来将其插入。

参数

name

The content of the entity reference, e.g. the entity reference minus the leading & and the trailing ; characters.

返回值

The new DOMEntityReference or FALSE if an error occurred.

错误／异常

DOM_INVALID_CHARACTER_ERR

Raised if name contains an invalid character.

参见

  • DOMNode::appendChild() - Adds new child at the end of the children
  • DOMDocument::createAttribute() - Create new attribute
  • DOMDocument::createAttributeNS() - Create new attribute node with an associated namespace
  • DOMDocument::createCDATASection() - Create new cdata node
  • DOMDocument::createComment() - Create new comment node
  • DOMDocument::createDocumentFragment() - Create new document fragment
  • DOMDocument::createElement() - Create new element node
  • DOMDocument::createElementNS() - Create new element node with an associated namespace
  • DOMDocument::createProcessingInstruction() - Creates new PI node
  • DOMDocument::createTextNode() - Create new text node

DOMDocument::createElementNS
DOMDocument::createProcessingInstruction
DOMDocument


Creates new PI node

DOMDocument::createEntityReference
DOMDocument::createTextNode
DOMDocument
PHP Manual

DOMDocument::createProcessingInstruction

(PHP 5, PHP 7)

DOMDocument::createProcessingInstruction — Creates new PI node

说明

public DOMProcessingInstruction DOMDocument::createProcessingInstruction ( string $target [, string $data ] )

This function creates a new instance of class DOMProcessingInstruction. 此节点出现在文档中，除非是用诸如 DOMNode->appendChild() 等函数来将其插入。

参数

target

The target of the processing instruction.

data

The content of the processing instruction.

返回值

The new DOMProcessingInstruction or FALSE if an error occurred.

错误／异常

DOM_INVALID_CHARACTER_ERR

Raised if target contains an invalid character.

参见

  • DOMNode::appendChild() - Adds new child at the end of the children
  • DOMDocument::createAttribute() - Create new attribute
  • DOMDocument::createAttributeNS() - Create new attribute node with an associated namespace
  • DOMDocument::createCDATASection() - Create new cdata node
  • DOMDocument::createComment() - Create new comment node
  • DOMDocument::createDocumentFragment() - Create new document fragment
  • DOMDocument::createElement() - Create new element node
  • DOMDocument::createElementNS() - Create new element node with an associated namespace
  • DOMDocument::createEntityReference() - Create new entity reference node
  • DOMDocument::createTextNode() - Create new text node

DOMDocument::createEntityReference
DOMDocument::createTextNode
DOMDocument


Create new text node

DOMDocument::createProcessingInstruction
DOMDocument::getElementById
DOMDocument
PHP Manual

DOMDocument::createTextNode

(PHP 5, PHP 7)

DOMDocument::createTextNode — Create new text node

说明

public DOMText DOMDocument::createTextNode ( string $content )

This function creates a new instance of class DOMText. 此节点出现在文档中，除非是用诸如 DOMNode->appendChild() 等函数来将其插入。

参数

content

The content of the text.

返回值

The new DOMText or FALSE if an error occurred.

参见

  • DOMNode::appendChild() - Adds new child at the end of the children
  • DOMDocument::createAttribute() - Create new attribute
  • DOMDocument::createAttributeNS() - Create new attribute node with an associated namespace
  • DOMDocument::createCDATASection() - Create new cdata node
  • DOMDocument::createComment() - Create new comment node
  • DOMDocument::createDocumentFragment() - Create new document fragment
  • DOMDocument::createElement() - Create new element node
  • DOMDocument::createElementNS() - Create new element node with an associated namespace
  • DOMDocument::createEntityReference() - Create new entity reference node
  • DOMDocument::createProcessingInstruction() - Creates new PI node

DOMDocument::createProcessingInstruction
DOMDocument::getElementById
DOMDocument


Searches for an element with a certain id

DOMDocument::createTextNode
DOMDocument::getElementsByTagName
DOMDocument
PHP Manual

DOMDocument::getElementById

(PHP 5, PHP 7)

DOMDocument::getElementById — Searches for an element with a certain id

说明

public DOMElement DOMDocument::getElementById ( string $elementId )

This function is similar to DOMDocument::getElementsByTagName but searches for an element with a given id.

For this function to work, you will need either to set some ID attributes with DOMElement::setIdAttribute or a DTD which defines an attribute to be of type ID. In the later case, you will need to validate your document with DOMDocument::validate or DOMDocument::$validateOnParse before using this function.

参数

elementId

The unique id value for an element.

返回值

Returns the DOMElement or NULL if the element is not found.

范例

Example #1 DOMDocument::getElementById() Example

以下范例使用了 book.xml，其内容如下：

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE books [
  <!ELEMENT books   (book+)>
  <!ELEMENT book    (title, author+, xhtml:blurb?)>
  <!ELEMENT title   (#PCDATA)>
  <!ELEMENT blurb   (#PCDATA)>
  <!ELEMENT author  (#PCDATA)>
  <!ATTLIST books   xmlns        CDATA  #IMPLIED>
  <!ATTLIST books   xmlns:xhtml  CDATA  #IMPLIED>
  <!ATTLIST book    id           ID     #IMPLIED>
  <!ATTLIST author  email        CDATA  #IMPLIED>
]>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<books xmlns="http://books.php/" xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <book id="php-basics">
    <title>PHP Basics</title>
    <author email="jim.smith@basics.php">Jim Smith</author>
    <author email="jane.smith@basics.php">Jane Smith</author>
    <xhtml:blurb><![CDATA[
<p><em>PHP Basics</em> provides an introduction to PHP.</p>
]]></xhtml:blurb>
  </book>
  <book id="php-advanced">
    <title>PHP Advanced Programming</title>
    <author email="jon.doe@advanced.php">Jon Doe</author>
  </book>
</books>
<?php

$doc = new DomDocument;

// We need to validate our document before refering to the id
$doc->validateOnParse = true;
$doc->Load('book.xml');

echo "The element whose id is 'php-basics' is: " . $doc->getElementById('php-basics')->tagName . "\n";

?>

以上例程会输出：

The element whose id is 'php-basics' is: book

参见

  • DOMDocument::getElementsByTagName() - Searches for all elements with given local tag name

DOMDocument::createTextNode
DOMDocument::getElementsByTagName
DOMDocument


Searches for all elements with given local tag name

DOMDocument::getElementById
DOMDocument::getElementsByTagNameNS
DOMDocument
PHP Manual

DOMDocument::getElementsByTagName

(PHP 5, PHP 7)

DOMDocument::getElementsByTagName — Searches for all elements with given local tag name

说明

public DOMNodeList DOMDocument::getElementsByTagName ( string $name )

This function returns a new instance of class DOMNodeList containing all the elements with a given local tag name.

参数

name

The local name (without namespace) of the tag to match on. The special value * matches all tags.

返回值

A new DOMNodeList object containing all the matched elements.

范例

Example #1 Basic Usage Example

<?php
$xml = <<< XML
<?xml version="1.0" encoding="utf-8"?>
<books>
 <book>Patterns of Enterprise Application Architecture</book>
 <book>Design Patterns: Elements of Reusable Software Design</book>
 <book>Clean Code</book>
</books>
XML;

$dom = new DOMDocument;
$dom->loadXML($xml);
$books = $dom->getElementsByTagName('book');
foreach ($books as $book) {
    echo $book->nodeValue, PHP_EOL;
}
?>

以上例程会输出：

Patterns of Enterprise Application Architecture
Design Patterns: Elements of Reusable Software Design
Clean Code

参见

  • DOMDocument::getElementsByTagNameNS() - Searches for all elements with given tag name in specified namespace

DOMDocument::getElementById
DOMDocument::getElementsByTagNameNS
DOMDocument


Searches for all elements with given tag name in specified namespace

DOMDocument::getElementsByTagName
DOMDocument::importNode
DOMDocument
PHP Manual

DOMDocument::getElementsByTagNameNS

(PHP 5, PHP 7)

DOMDocument::getElementsByTagNameNS — Searches for all elements with given tag name in specified namespace

说明

public DOMNodeList DOMDocument::getElementsByTagNameNS ( string $namespaceURI , string $localName )

Returns a DOMNodeList of all elements with a given local name and a namespace URI.

参数

namespaceURI

The namespace URI of the elements to match on. The special value * matches all namespaces.

localName

The local name of the elements to match on. The special value * matches all local names.

返回值

A new DOMNodeList object containing all the matched elements.

范例

Example #1 Get all the XInclude elements

<?php

$xml = <<<EOD
<?xml version="1.0" ?>
<chapter xmlns:xi="http://www.w3.org/2001/XInclude">
<title>Books of the other guy..</title>
<para>
 <xi:include href="book.xml">
  <xi:fallback>
   <error>xinclude: book.xml not found</error>
  </xi:fallback>
 </xi:include>
 <include>
  This is another namespace
 </include>
</para>
</chapter>
EOD;
$dom = new DOMDocument;

// load the XML string defined above
$dom->loadXML($xml);

foreach ($dom->getElementsByTagNameNS('http://www.w3.org/2001/XInclude', '*') as $element) {
    echo 'local name: ', $element->localName, ', prefix: ', $element->prefix, "\n";
}
?>

以上例程会输出：

local name: include, prefix: xi
local name: fallback, prefix: xi

参见

  • DOMDocument::getElementsByTagName() - Searches for all elements with given local tag name

DOMDocument::getElementsByTagName
DOMDocument::importNode
DOMDocument


Import node into current document

DOMDocument::getElementsByTagNameNS
DOMDocument::load
DOMDocument
PHP Manual

DOMDocument::importNode

(PHP 5, PHP 7)

DOMDocument::importNode — Import node into current document

说明

public DOMNode DOMDocument::importNode ( DOMNode $importedNode [, bool $deep ] )

This function returns a copy of the node to import and associates it with the current document.

参数

importedNode

The node to import.

deep

If set to TRUE, this method will recursively import the subtree under the importedNode.

Note:

To copy the nodes attributes deep needs to be set to TRUE

返回值

The copied node or FALSE, if it cannot be copied.

错误／异常

DOMException is thrown if node cannot be imported.

范例

Example #1 DOMDocument::importNode() example

Copying nodes between documents.

<?php

$orgdoc = new DOMDocument;
$orgdoc->loadXML("<root><element><child>text in child</child></element></root>");

// The node we want to import to a new document
$node = $orgdoc->getElementsByTagName("element")->item(0);

// Create a new document
$newdoc = new DOMDocument;
$newdoc->formatOutput = true;

// Add some markup
$newdoc->loadXML("<root><someelement>text in some element</someelement></root>");

echo "The 'new document' before copying nodes into it:\n";
echo $newdoc->saveXML();

// Import the node, and all its children, to the document
$node = $newdoc->importNode($node, true);
// And then append it to the "<root>" node
$newdoc->documentElement->appendChild($node);

echo "\nThe 'new document' after copying the nodes into it:\n";
echo $newdoc->saveXML();
?>

以上例程会输出：

The 'new document' before copying nodes into it:
<?xml version="1.0"?>
<root>
  <someelement>text in some element</someelement>
</root>

The 'new document' after copying the nodes into it:
<?xml version="1.0"?>
<root>
  <someelement>text in some element</someelement>
  <element>
    <child>text in child</child>
  </element>
</root>

DOMDocument::getElementsByTagNameNS
DOMDocument::load
DOMDocument


Load XML from a file

DOMDocument::importNode
DOMDocument::loadHTML
DOMDocument
PHP Manual

DOMDocument::load

(PHP 5, PHP 7)

DOMDocument::load — Load XML from a file

说明

public mixed DOMDocument::load ( string $filename [, int $options = 0 ] )

Loads an XML document from a file.

Warning

Unix style paths with forward slashes can cause significant performance degradation on Windows systems; be sure to call realpath() in such a case.

参数

filename

The path to the XML document.

options

Bitwise OR of the libxml option constants.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 If called statically, returns a DOMDocument 或者在失败时返回 FALSE.

错误／异常

If an empty string is passed as the filename or an empty file is named, a warning will be generated. This warning is not generated by libxml and cannot be handled using libxml's error handling functions.

此方法可以被静态调用,但会抛出一个 E_STRICT 错误。

范例

Example #1 Creating a Document

<?php
$doc = new DOMDocument();
$doc->load('book.xml');
echo $doc->saveXML();
?>

参见

  • DOMDocument::loadXML() - Load XML from a string
  • DOMDocument::save() - Dumps the internal XML tree back into a file
  • DOMDocument::saveXML() - Dumps the internal XML tree back into a string

DOMDocument::importNode
DOMDocument::loadHTML
DOMDocument


Load HTML from a string

DOMDocument::load
DOMDocument::loadHTMLFile
DOMDocument
PHP Manual

DOMDocument::loadHTML

(PHP 5, PHP 7)

DOMDocument::loadHTML — Load HTML from a string

说明

public bool DOMDocument::loadHTML ( string $source [, int $options = 0 ] )

The function parses the HTML contained in the string source. Unlike loading XML, HTML does not have to be well-formed to load. This function may also be called statically to load and create a DOMDocument object. The static invocation may be used when no DOMDocument properties need to be set prior to loading.

参数

source

The HTML string.

options

Since PHP 5.4.0 and Libxml 2.6.0, you may also use the options parameter to specify additional Libxml parameters.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 If called statically, returns a DOMDocument 或者在失败时返回 FALSE.

错误／异常

If an empty string is passed as the source, a warning will be generated. This warning is not generated by libxml and cannot be handled using libxml's error handling functions.

此方法可以被静态调用,但会抛出一个 E_STRICT 错误。

尽管非正确格式化的 HTML 仍应该被成功调入，但此函数会在遇到错误标记时产生 E_WARNING 错误。libxml 错误处理函数可以用来处理这类错误。

范例

Example #1 Creating a Document

<?php
$doc = new DOMDocument();
$doc->loadHTML("<html><body>Test<br></body></html>");
echo $doc->saveHTML();
?>

更新日志

版本 | 说明
5.4.0 | Added options parameter.

参见

  • DOMDocument::loadHTMLFile() - Load HTML from a file
  • DOMDocument::saveHTML() - Dumps the internal document into a string using HTML formatting
  • DOMDocument::saveHTMLFile() - Dumps the internal document into a file using HTML formatting

DOMDocument::load
DOMDocument::loadHTMLFile
DOMDocument


Load HTML from a file

DOMDocument::loadHTML
DOMDocument::loadXML
DOMDocument
PHP Manual

DOMDocument::loadHTMLFile

(PHP 5, PHP 7)

DOMDocument::loadHTMLFile — Load HTML from a file

说明

public bool DOMDocument::loadHTMLFile ( string $filename [, int $options = 0 ] )

The function parses the HTML document in the file named filename. Unlike loading XML, HTML does not have to be well-formed to load.

参数

filename

The path to the HTML file.

options

Since PHP 5.4.0 and Libxml 2.6.0, you may also use the options parameter to specify additional Libxml parameters.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 If called statically, returns a DOMDocument 或者在失败时返回 FALSE.

错误／异常

If an empty string is passed as the filename or an empty file is named, a warning will be generated. This warning is not generated by libxml and cannot be handled using libxml's error handling functions.

此方法可以被静态调用,但会抛出一个 E_STRICT 错误。

尽管非正确格式化的 HTML 仍应该被成功调入，但此函数会在遇到错误标记时产生 E_WARNING 错误。libxml 错误处理函数可以用来处理这类错误。

范例

Example #1 Creating a Document

<?php
$doc = new DOMDocument();
$doc->loadHTMLFile("filename.html");
echo $doc->saveHTML();
?>

更新日志

版本 | 说明
5.4.0 | Added options parameter.

参见

  • DOMDocument::loadHTML() - Load HTML from a string
  • DOMDocument::saveHTML() - Dumps the internal document into a string using HTML formatting
  • DOMDocument::saveHTMLFile() - Dumps the internal document into a file using HTML formatting

DOMDocument::loadHTML
DOMDocument::loadXML
DOMDocument


Load XML from a string

DOMDocument::loadHTMLFile
DOMDocument::normalizeDocument
DOMDocument
PHP Manual

DOMDocument::loadXML

(PHP 5, PHP 7)

DOMDocument::loadXML — Load XML from a string

说明

public mixed DOMDocument::loadXML ( string $source [, int $options = 0 ] )

Loads an XML document from a string.

参数

source

The string containing the XML.

options

Bitwise OR of the libxml option constants.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 If called statically, returns a DOMDocument 或者在失败时返回 FALSE.

错误／异常

If an empty string is passed as the source, a warning will be generated. This warning is not generated by libxml and cannot be handled using libxml's error handling functions.

此方法可以被静态调用,但会抛出一个 E_STRICT 错误。

范例

Example #1 Creating a Document

<?php
$doc = new DOMDocument();
$doc->loadXML('<root><node/></root>');
echo $doc->saveXML();
?>

Example #2 Static invocation of loadXML

<?php
// Issues an E_STRICT error
$doc = DOMDocument::loadXML('<root><node/></root>');
echo $doc->saveXML();
?>

参见

  • DOMDocument::load() - Load XML from a file
  • DOMDocument::save() - Dumps the internal XML tree back into a file
  • DOMDocument::saveXML() - Dumps the internal XML tree back into a string

DOMDocument::loadHTMLFile
DOMDocument::normalizeDocument
DOMDocument


Normalizes the document

DOMDocument::loadXML
DOMDocument::registerNodeClass
DOMDocument
PHP Manual

DOMDocument::normalizeDocument

(PHP 5, PHP 7)

DOMDocument::normalizeDocument — Normalizes the document

说明

public void DOMDocument::normalizeDocument ( void )

This method acts as if you saved and then loaded the document, putting the document in a "normal" form.

返回值

没有返回值。

参见

  • » The DOM Specification
  • DOMNode::normalize() - Normalizes the node

DOMDocument::loadXML
DOMDocument::registerNodeClass
DOMDocument


Register extended class used to create base node type

DOMDocument::normalizeDocument
DOMDocument::relaxNGValidate
DOMDocument
PHP Manual

DOMDocument::registerNodeClass

(PHP 5 >= 5.2.0, PHP 7)

DOMDocument::registerNodeClass — Register extended class used to create base node type

说明

public bool DOMDocument::registerNodeClass ( string $baseclass , string $extendedclass )

This method allows you to register your own extended DOM class to be used afterward by the PHP DOM extension.

This method is not part of the DOM standard.

参数

baseclass

The DOM class that you want to extend. You can find a list of these classes in the chapter introduction.

extendedclass

Your extended class name. If NULL is provided, any previously registered class extending baseclass will be removed.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.2.2 | Prior to 5.2.2, a previously registered extendedclass had to be unregistered before being able to register a new class extending the same baseclass.

范例

Example #1 Adding a new method to DOMElement to ease our code

<?php

class myElement extends DOMElement {
   function appendElement($name) {
      return $this->appendChild(new myElement($name));
   }
}

class myDocument extends DOMDocument {
   function setRoot($name) {
      return $this->appendChild(new myElement($name));
   }
}

$doc = new myDocument();
$doc->registerNodeClass('DOMElement', 'myElement');

// From now on, adding an element to another costs only one method call !
$root = $doc->setRoot('root');
$child = $root->appendElement('child');
$child->setAttribute('foo', 'bar');

echo $doc->saveXML();

?>

以上例程会输出：

<?xml version="1.0"?>
<root><child foo="bar"/></root>

Example #2 Retrieving elements as custom class

<?php
class myElement extends DOMElement {
    public function __toString() {
        return $this->nodeValue;
    }
}

$doc = new DOMDocument;
$doc->loadXML("<root><element><child>text in child</child></element></root>");
$doc->registerNodeClass("DOMElement", "myElement");

$element = $doc->getElementsByTagName("child")->item(0);
var_dump(get_class($element));

// And take advantage of the __toString method..
echo $element;
?>

以上例程会输出：

string(9) "myElement"
text in child

Example #3 Retrieving owner document

When instantiating a custom DOMDocument the ownerDocument property will refer to the instantiated class, meaning there is no need (and in fact not possible) to use DOMDocument::registerNodeClass() with DOMDocument

<?php
class myDOMDocument extends DOMDocument {
}

class myOtherDOMDocument extends DOMDocument {
}

// Create myDOMDocument with some XML
$doc = new myDOMDocument;
$doc->loadXML("<root><element><child>text in child</child></element></root>");

$child = $doc->getElementsByTagName("child")->item(0);

// The current owner of the node is myDOMDocument
var_dump(get_class($child->ownerDocument));

// Import a node from myDOMDocument
$newdoc = new myOtherDOMDocument;
$child = $newdoc->importNode($child);

// The new owner of the node has changed to myOtherDOMDocument
var_dump(get_class($child->ownerDocument));
?>

以上例程会输出：

string(13) "myDOMDocument"
string(18) "myOtherDOMDocument"

DOMDocument::normalizeDocument
DOMDocument::relaxNGValidate
DOMDocument


Performs relaxNG validation on the document

DOMDocument::registerNodeClass
DOMDocument::relaxNGValidateSource
DOMDocument
PHP Manual

DOMDocument::relaxNGValidate

(PHP 5, PHP 7)

DOMDocument::relaxNGValidate — Performs relaxNG validation on the document

说明

public bool DOMDocument::relaxNGValidate ( string $filename )

Performs » relaxNG validation on the document based on the given RNG schema.

参数

filename

The RNG file.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • DOMDocument::relaxNGValidateSource() - Performs relaxNG validation on the document
  • DOMDocument::schemaValidate() - Validates a document based on a schema
  • DOMDocument::schemaValidateSource() - Validates a document based on a schema
  • DOMDocument::validate() - Validates the document based on its DTD

DOMDocument::registerNodeClass
DOMDocument::relaxNGValidateSource
DOMDocument


Performs relaxNG validation on the document

DOMDocument::relaxNGValidate
DOMDocument::save
DOMDocument
PHP Manual

DOMDocument::relaxNGValidateSource

(PHP 5, PHP 7)

DOMDocument::relaxNGValidateSource — Performs relaxNG validation on the document

说明

public bool DOMDocument::relaxNGValidateSource ( string $source )

Performs » relaxNG validation on the document based on the given RNG source.

参数

source

A string containing the RNG schema.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • DOMDocument::relaxNGValidate() - Performs relaxNG validation on the document
  • DOMDocument::schemaValidate() - Validates a document based on a schema
  • DOMDocument::schemaValidateSource() - Validates a document based on a schema
  • DOMDocument::validate() - Validates the document based on its DTD

DOMDocument::relaxNGValidate
DOMDocument::save
DOMDocument


Dumps the internal XML tree back into a file

DOMDocument::relaxNGValidateSource
DOMDocument::saveHTML
DOMDocument
PHP Manual

DOMDocument::save

(PHP 5, PHP 7)

DOMDocument::save — Dumps the internal XML tree back into a file

说明

public int DOMDocument::save ( string $filename [, int $options ] )

Creates an XML document from the DOM representation. This function is usually called after building a new dom document from scratch as in the example below.

参数

filename

The path to the saved XML document.

options

Additional Options. Currently only LIBXML_NOEMPTYTAG is supported.

返回值

Returns the number of bytes written or FALSE if an error occurred.

更新日志

版本 | 说明
5.1.0 | Added the options parameter

范例

Example #1 Saving a DOM tree into a file

<?php

$doc = new DOMDocument('1.0');
// we want a nice output
$doc->formatOutput = true;

$root = $doc->createElement('book');
$root = $doc->appendChild($root);

$title = $doc->createElement('title');
$title = $root->appendChild($title);

$text = $doc->createTextNode('This is the title');
$text = $title->appendChild($text);

echo 'Wrote: ' . $doc->save("/tmp/test.xml") . ' bytes'; // Wrote: 72 bytes

?>

参见

  • DOMDocument::saveXML() - Dumps the internal XML tree back into a string
  • DOMDocument::load() - Load XML from a file
  • DOMDocument::loadXML() - Load XML from a string

DOMDocument::relaxNGValidateSource
DOMDocument::saveHTML
DOMDocument


Dumps the internal document into a string using HTML formatting

DOMDocument::save
DOMDocument::saveHTMLFile
DOMDocument
PHP Manual

DOMDocument::saveHTML

(PHP 5, PHP 7)

DOMDocument::saveHTML — Dumps the internal document into a string using HTML formatting

说明

public string DOMDocument::saveHTML ([ DOMNode $node = NULL ] )

Creates an HTML document from the DOM representation. This function is usually called after building a new dom document from scratch as in the example below.

参数

node

Optional parameter to output a subset of the document.

返回值

Returns the HTML, or FALSE if an error occurred.

更新日志

版本 | 说明
5.3.6 | The node parameter was added.

范例

Example #1 Saving a HTML tree into a string

<?php

$doc = new DOMDocument('1.0');

$root = $doc->createElement('html');
$root = $doc->appendChild($root);

$head = $doc->createElement('head');
$head = $root->appendChild($head);

$title = $doc->createElement('title');
$title = $head->appendChild($title);

$text = $doc->createTextNode('This is the title');
$text = $title->appendChild($text);

echo $doc->saveHTML();

?>

参见

  • DOMDocument::saveHTMLFile() - Dumps the internal document into a file using HTML formatting
  • DOMDocument::loadHTML() - Load HTML from a string
  • DOMDocument::loadHTMLFile() - Load HTML from a file

DOMDocument::save
DOMDocument::saveHTMLFile
DOMDocument


Dumps the internal document into a file using HTML formatting

DOMDocument::saveHTML
DOMDocument::saveXML
DOMDocument
PHP Manual

DOMDocument::saveHTMLFile

(PHP 5, PHP 7)

DOMDocument::saveHTMLFile — Dumps the internal document into a file using HTML formatting

说明

public int DOMDocument::saveHTMLFile ( string $filename )

Creates an HTML document from the DOM representation. This function is usually called after building a new dom document from scratch as in the example below.

参数

filename

The path to the saved HTML document.

返回值

Returns the number of bytes written or FALSE if an error occurred.

范例

Example #1 Saving a HTML tree into a file

<?php

$doc = new DOMDocument('1.0');
// we want a nice output
$doc->formatOutput = true;

$root = $doc->createElement('html');
$root = $doc->appendChild($root);

$head = $doc->createElement('head');
$head = $root->appendChild($head);

$title = $doc->createElement('title');
$title = $head->appendChild($title);

$text = $doc->createTextNode('This is the title');
$text = $title->appendChild($text);

echo 'Wrote: ' . $doc->saveHTMLFile("/tmp/test.html") . ' bytes'; // Wrote: 129 bytes

?>

参见

  • DOMDocument::saveHTML() - Dumps the internal document into a string using HTML formatting
  • DOMDocument::loadHTML() - Load HTML from a string
  • DOMDocument::loadHTMLFile() - Load HTML from a file

DOMDocument::saveHTML
DOMDocument::saveXML
DOMDocument


Dumps the internal XML tree back into a string

DOMDocument::saveHTMLFile
DOMDocument::schemaValidate
DOMDocument
PHP Manual

DOMDocument::saveXML

(PHP 5, PHP 7)

DOMDocument::saveXML — Dumps the internal XML tree back into a string

说明

public string DOMDocument::saveXML ([ DOMNode $node [, int $options ]] )

Creates an XML document from the DOM representation. This function is usually called after building a new dom document from scratch as in the example below.

参数

node

Use this parameter to output only a specific node without XML declaration rather than the entire document.

options

Additional Options. Currently only LIBXML_NOEMPTYTAG is supported.

返回值

Returns the XML, or FALSE if an error occurred.

错误／异常

DOM_WRONG_DOCUMENT_ERR

Raised if node is from another document.

更新日志

版本 | 说明
5.1.0 | Added the options parameter

范例

Example #1 Saving a DOM tree into a string

<?php

$doc = new DOMDocument('1.0');
// we want a nice output
$doc->formatOutput = true;

$root = $doc->createElement('book');
$root = $doc->appendChild($root);

$title = $doc->createElement('title');
$title = $root->appendChild($title);

$text = $doc->createTextNode('This is the title');
$text = $title->appendChild($text);

echo "Saving all the document:\n";
echo $doc->saveXML() . "\n";

echo "Saving only the title part:\n";
echo $doc->saveXML($title);

?>

以上例程会输出：

Saving all the document:
<?xml version="1.0"?>
<book>
  <title>This is the title</title>
</book>

Saving only the title part:
<title>This is the title</title>

参见

  • DOMDocument::save() - Dumps the internal XML tree back into a file
  • DOMDocument::load() - Load XML from a file
  • DOMDocument::loadXML() - Load XML from a string

DOMDocument::saveHTMLFile
DOMDocument::schemaValidate
DOMDocument


Validates a document based on a schema

DOMDocument::saveXML
DOMDocument::schemaValidateSource
DOMDocument
PHP Manual

DOMDocument::schemaValidate

(PHP 5, PHP 7)

DOMDocument::schemaValidate — Validates a document based on a schema

说明

public bool DOMDocument::schemaValidate ( string $filename [, int $flags ] )

Validates a document based on the given schema file.

参数

filename

The path to the schema.

flags

A bitmask of Libxml schema validation flags. Currently the only supported value is LIBXML_SCHEMA_CREATE. Available since PHP 5.5.2 and Libxml 2.6.14.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.5.2 | Added the flags parameter

参见

  • DOMDocument::schemaValidateSource() - Validates a document based on a schema
  • DOMDocument::relaxNGValidate() - Performs relaxNG validation on the document
  • DOMDocument::relaxNGValidateSource() - Performs relaxNG validation on the document
  • DOMDocument::validate() - Validates the document based on its DTD

DOMDocument::saveXML
DOMDocument::schemaValidateSource
DOMDocument


Validates a document based on a schema

DOMDocument::schemaValidate
DOMDocument::validate
DOMDocument
PHP Manual

DOMDocument::schemaValidateSource

(PHP 5, PHP 7)

DOMDocument::schemaValidateSource — Validates a document based on a schema

说明

public bool DOMDocument::schemaValidateSource ( string $source [, int $flags ] )

Validates a document based on a schema defined in the given string.

参数

source

A string containing the schema.

flags

A bitmask of Libxml schema validation flags. Currently the only supported value is LIBXML_SCHEMA_CREATE. Available since PHP 5.5.2 and Libxml 2.6.14.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.5.2 | Added the flags parameter

参见

  • DOMDocument::schemaValidate() - Validates a document based on a schema
  • DOMDocument::relaxNGValidate() - Performs relaxNG validation on the document
  • DOMDocument::relaxNGValidateSource() - Performs relaxNG validation on the document
  • DOMDocument::validate() - Validates the document based on its DTD

DOMDocument::schemaValidate
DOMDocument::validate
DOMDocument


Validates the document based on its DTD

DOMDocument::schemaValidateSource
DOMDocument::xinclude
DOMDocument
PHP Manual

DOMDocument::validate

(PHP 5, PHP 7)

DOMDocument::validate — Validates the document based on its DTD

说明

public bool DOMDocument::validate ( void )

Validates the document based on its DTD.

You can also use the validateOnParse property of DOMDocument to make a DTD validation.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 If the document have no DTD attached, this method will return FALSE.

范例

Example #1 Example of DTD validation

<?php
$dom = new DOMDocument;
$dom->load('book.xml');
if ($dom->validate()) {
    echo "This document is valid!\n";
}
?>

You can also validate your XML file while loading it:

<?php
$dom = new DOMDocument;
$dom->validateOnParse = true;
$dom->load('book.xml');
?>

参见

  • DOMDocument::schemaValidate() - Validates a document based on a schema
  • DOMDocument::schemaValidateSource() - Validates a document based on a schema
  • DOMDocument::relaxNGValidate() - Performs relaxNG validation on the document
  • DOMDocument::relaxNGValidateSource() - Performs relaxNG validation on the document

DOMDocument::schemaValidateSource
DOMDocument::xinclude
DOMDocument


Substitutes XIncludes in a DOMDocument Object

DOMDocument::validate
DOMDocumentFragment
DOMDocument
PHP Manual

DOMDocument::xinclude

(PHP 5, PHP 7)

DOMDocument::xinclude — Substitutes XIncludes in a DOMDocument Object

说明

public int DOMDocument::xinclude ([ int $options ] )

This method substitutes » XIncludes in a DOMDocument object.

Note:

Due to libxml2 automatically resolving entities, this method will produce unexpected results if the included XML file have an attached DTD.

参数

options

libxml parameters. Available since PHP 5.1.0 and Libxml 2.6.7.

返回值

Returns the number of XIncludes in the document, -1 if some processing failed, or FALSE if there were no substitutions.

范例

Example #1 DOMDocument::xinclude() example

<?php

$xml = <<<EOD
<?xml version="1.0" ?>
<chapter xmlns:xi="http://www.w3.org/2001/XInclude">
 <title>Books of the other guy..</title>
 <para>
  <xi:include href="book.xml">
   <xi:fallback>
    <error>xinclude: book.xml not found</error>
   </xi:fallback>
  </xi:include>
 </para>
</chapter>
EOD;

$dom = new DOMDocument;

// let's have a nice output
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;

// load the XML string defined above
$dom->loadXML($xml);

// substitute xincludes
$dom->xinclude();

echo $dom->saveXML();

?>

以上例程的输出类似于：

<?xml version="1.0"?>
<chapter xmlns:xi="http://www.w3.org/2001/XInclude">
  <title>Books of the other guy..</title>
  <para>
    <row xml:base="/home/didou/book.xml">
       <entry>The Grapes of Wrath</entry>
       <entry>John Steinbeck</entry>
       <entry>en</entry>
       <entry>0140186409</entry>
      </row>
    <row xml:base="/home/didou/book.xml">
       <entry>The Pearl</entry>
       <entry>John Steinbeck</entry>
       <entry>en</entry>
       <entry>014017737X</entry>
      </row>
    <row xml:base="/home/didou/book.xml">
       <entry>Samarcande</entry>
       <entry>Amine Maalouf</entry>
       <entry>fr</entry>
       <entry>2253051209</entry>
      </row>
  </para>
</chapter>

DOMDocument::validate
DOMDocumentFragment
DOMDocument


The DOMDocumentFragment class

(PHP 5, PHP 7)

类摘要

DOMDocumentFragment extends DOMNode {
/* 属性 */
/* 方法 */
public bool appendXML ( string $data )
/* 继承的方法 */
public DOMNode DOMNode::appendChild ( DOMNode $newnode )
public string DOMNode::C14N ([ bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public int DOMNode::C14NFile ( string $uri [, bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public DOMNode DOMNode::cloneNode ([ bool $deep ] )
public int DOMNode::getLineNo ( void )
public string DOMNode::getNodePath ( void )
public bool DOMNode::hasAttributes ( void )
public bool DOMNode::hasChildNodes ( void )
public DOMNode DOMNode::insertBefore ( DOMNode $newnode [, DOMNode $refnode ] )
public bool DOMNode::isDefaultNamespace ( string $namespaceURI )
public bool DOMNode::isSameNode ( DOMNode $node )
public bool DOMNode::isSupported ( string $feature , string $version )
public string DOMNode::lookupNamespaceURI ( string $prefix )
public string DOMNode::lookupPrefix ( string $namespaceURI )
public void DOMNode::normalize ( void )
public DOMNode DOMNode::removeChild ( DOMNode $oldnode )
public DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )
}

Table of Contents

  • DOMDocumentFragment::appendXML — Append raw XML data
DOMDocument::xinclude
DOMDocumentFragment::appendXML
DOM


Append raw XML data

DOMDocumentFragment
DOMDocumentType
DOMDocumentFragment
PHP Manual

DOMDocumentFragment::appendXML

(PHP 5 >= 5.1.0, PHP 7)

DOMDocumentFragment::appendXML — Append raw XML data

说明

public bool DOMDocumentFragment::appendXML ( string $data )

Appends raw XML data to a DOMDocumentFragment.

This method is not part of the DOM standard. It was created as a simpler approach for appending an XML DocumentFragment in a DOMDocument.

If you want to stick to the standards, you will have to create a temporary DOMDocument with a dummy root and then loop through the child nodes of the root of your XML data to append them.

参数

data

XML to append.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Appending XML data to your document

<?php
$doc = new DOMDocument();
$doc->loadXML("<root/>");
$f = $doc->createDocumentFragment();
$f->appendXML("<foo>text</foo><bar>text2</bar>");
$doc->documentElement->appendChild($f);
echo $doc->saveXML();
?>

以上例程会输出：

<?xml version="1.0"?>
<root><foo>text</foo><bar>text2</bar></root>

DOMDocumentFragment
DOMDocumentType
DOMDocumentFragment


The DOMDocumentType class

(PHP 5, PHP 7)

简介

Each DOMDocument has a doctype attribute whose value is either NULL or a DOMDocumentType object.

类摘要

DOMDocumentType extends DOMNode {
/* 属性 */
readonly public string $publicId ;
readonly public string $systemId ;
readonly public string $name ;
readonly public DOMNamedNodeMap $entities ;
readonly public DOMNamedNodeMap $notations ;
readonly public string $internalSubset ;
/* 继承的方法 */
public DOMNode DOMNode::appendChild ( DOMNode $newnode )
public string DOMNode::C14N ([ bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public int DOMNode::C14NFile ( string $uri [, bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public DOMNode DOMNode::cloneNode ([ bool $deep ] )
public int DOMNode::getLineNo ( void )
public string DOMNode::getNodePath ( void )
public bool DOMNode::hasAttributes ( void )
public bool DOMNode::hasChildNodes ( void )
public DOMNode DOMNode::insertBefore ( DOMNode $newnode [, DOMNode $refnode ] )
public bool DOMNode::isDefaultNamespace ( string $namespaceURI )
public bool DOMNode::isSameNode ( DOMNode $node )
public bool DOMNode::isSupported ( string $feature , string $version )
public string DOMNode::lookupNamespaceURI ( string $prefix )
public string DOMNode::lookupPrefix ( string $namespaceURI )
public void DOMNode::normalize ( void )
public DOMNode DOMNode::removeChild ( DOMNode $oldnode )
public DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )
}

属性

publicId

The public identifier of the external subset.

systemId

The system identifier of the external subset. This may be an absolute URI or not.

name

The name of DTD; i.e., the name immediately following the DOCTYPE keyword.

entities

A DOMNamedNodeMap containing the general entities, both external and internal, declared in the DTD.

notations

A DOMNamedNodeMap containing the notations declared in the DTD.

internalSubset

The internal subset as a string, or null if there is none. This does not contain the delimiting square brackets.

DOMDocumentFragment::appendXML
DOMElement
DOM


The DOMElement class

(PHP 5, PHP 7)

类摘要

DOMElement extends DOMNode {
/* 属性 */
readonly public bool $schemaTypeInfo ;
readonly public string $tagName ;
/* 方法 */
public __construct ( string $name [, string $value [, string $namespaceURI ]] )
public string getAttribute ( string $name )
public DOMAttr getAttributeNode ( string $name )
public DOMAttr getAttributeNodeNS ( string $namespaceURI , string $localName )
public string getAttributeNS ( string $namespaceURI , string $localName )
public DOMNodeList getElementsByTagName ( string $name )
public DOMNodeList getElementsByTagNameNS ( string $namespaceURI , string $localName )
public bool hasAttribute ( string $name )
public bool hasAttributeNS ( string $namespaceURI , string $localName )
public bool removeAttribute ( string $name )
public bool removeAttributeNode ( DOMAttr $oldnode )
public bool removeAttributeNS ( string $namespaceURI , string $localName )
public DOMAttr setAttribute ( string $name , string $value )
public DOMAttr setAttributeNode ( DOMAttr $attr )
public DOMAttr setAttributeNodeNS ( DOMAttr $attr )
public void setAttributeNS ( string $namespaceURI , string $qualifiedName , string $value )
public void setIdAttribute ( string $name , bool $isId )
public void setIdAttributeNode ( DOMAttr $attr , bool $isId )
public void setIdAttributeNS ( string $namespaceURI , string $localName , bool $isId )
/* 继承的方法 */
public DOMNode DOMNode::appendChild ( DOMNode $newnode )
public string DOMNode::C14N ([ bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public int DOMNode::C14NFile ( string $uri [, bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public DOMNode DOMNode::cloneNode ([ bool $deep ] )
public int DOMNode::getLineNo ( void )
public string DOMNode::getNodePath ( void )
public bool DOMNode::hasAttributes ( void )
public bool DOMNode::hasChildNodes ( void )
public DOMNode DOMNode::insertBefore ( DOMNode $newnode [, DOMNode $refnode ] )
public bool DOMNode::isDefaultNamespace ( string $namespaceURI )
public bool DOMNode::isSameNode ( DOMNode $node )
public bool DOMNode::isSupported ( string $feature , string $version )
public string DOMNode::lookupNamespaceURI ( string $prefix )
public string DOMNode::lookupPrefix ( string $namespaceURI )
public void DOMNode::normalize ( void )
public DOMNode DOMNode::removeChild ( DOMNode $oldnode )
public DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )
}

属性

schemaTypeInfo

Not implemented yet, always return NULL

tagName

The element name

注释

Note:

The DOM extension uses UTF-8 encoding. Use utf8_encode() and utf8_decode() to work with texts in ISO-8859-1 encoding or Iconv for other encodings.

Table of Contents

  • DOMElement::__construct — Creates a new DOMElement object
  • DOMElement::getAttribute — Returns value of attribute
  • DOMElement::getAttributeNode — Returns attribute node
  • DOMElement::getAttributeNodeNS — Returns attribute node
  • DOMElement::getAttributeNS — Returns value of attribute
  • DOMElement::getElementsByTagName — Gets elements by tagname
  • DOMElement::getElementsByTagNameNS — Get elements by namespaceURI and localName
  • DOMElement::hasAttribute — Checks to see if attribute exists
  • DOMElement::hasAttributeNS — Checks to see if attribute exists
  • DOMElement::removeAttribute — Removes attribute
  • DOMElement::removeAttributeNode — Removes attribute
  • DOMElement::removeAttributeNS — Removes attribute
  • DOMElement::setAttribute — Adds new attribute
  • DOMElement::setAttributeNode — Adds new attribute node to element
  • DOMElement::setAttributeNodeNS — Adds new attribute node to element
  • DOMElement::setAttributeNS — Adds new attribute
  • DOMElement::setIdAttribute — Declares the attribute specified by name to be of type ID
  • DOMElement::setIdAttributeNode — Declares the attribute specified by node to be of type ID
  • DOMElement::setIdAttributeNS — Declares the attribute specified by local name and namespace URI to be of type ID
DOMDocumentType
DOMElement::__construct
DOM


Creates a new DOMElement object

DOMElement
DOMElement::getAttribute
DOMElement
PHP Manual

DOMElement::__construct

(PHP 5, PHP 7)

DOMElement::__construct — Creates a new DOMElement object

说明

public DOMElement::__construct ( string $name [, string $value [, string $namespaceURI ]] )

Creates a new DOMElement object. This object is read only. It may be appended to a document, but additional nodes may not be appended to this node until the node is associated with a document. To create a writeable node, use DOMDocument::createElement or DOMDocument::createElementNS.

参数

name

The tag name of the element. When also passing in namespaceURI, the element name may take a prefix to be associated with the URI.

value

The value of the element.

namespaceURI

A namespace URI to create the element within a specific namespace.

范例

Example #1 Creating a new DOMElement

<?php

$dom = new DOMDocument('1.0', 'iso-8859-1');
$element = $dom->appendChild(new DOMElement('root'));
$element_ns = new DOMElement('pr:node1', 'thisvalue', 'http://xyz');
$element->appendChild($element_ns);
echo $dom->saveXML(); /* <?xml version="1.0" encoding="utf-8"?>
<root><pr:node1 xmlns:pr="http://xyz">thisvalue</pr:node1></root> */

?>

参见

  • DOMDocument::createElement() - Create new element node
  • DOMDocument::createElementNS() - Create new element node with an associated namespace

DOMElement
DOMElement::getAttribute
DOMElement


Returns value of attribute

DOMElement::__construct
DOMElement::getAttributeNode
DOMElement
PHP Manual

DOMElement::getAttribute

(PHP 5, PHP 7)

DOMElement::getAttribute — Returns value of attribute

说明

public string DOMElement::getAttribute ( string $name )

Gets the value of the attribute with name name for the current node.

参数

name

The name of the attribute.

返回值

The value of the attribute, or an empty string if no attribute with the given name is found.

参见

  • DOMElement::hasAttribute() - Checks to see if attribute exists
  • DOMElement::setAttribute() - Adds new attribute
  • DOMElement::removeAttribute() - Removes attribute

DOMElement::__construct
DOMElement::getAttributeNode
DOMElement


Returns attribute node

DOMElement::getAttribute
DOMElement::getAttributeNodeNS
DOMElement
PHP Manual

DOMElement::getAttributeNode

(PHP 5, PHP 7)

DOMElement::getAttributeNode — Returns attribute node

说明

public DOMAttr DOMElement::getAttributeNode ( string $name )

Returns the attribute node with name name for the current element.

参数

name

The name of the attribute.

返回值

The attribute node. Note that for XML namespace declarations (xmlns and xmlns:* attributes) an instance of DOMNameSpaceNode is returned instead of a DOMAttr.

参见

  • DOMElement::hasAttribute() - Checks to see if attribute exists
  • DOMElement::setAttributeNode() - Adds new attribute node to element
  • DOMElement::removeAttributeNode() - Removes attribute

DOMElement::getAttribute
DOMElement::getAttributeNodeNS
DOMElement


Returns attribute node

DOMElement::getAttributeNode
DOMElement::getAttributeNS
DOMElement
PHP Manual

DOMElement::getAttributeNodeNS

(PHP 5, PHP 7)

DOMElement::getAttributeNodeNS — Returns attribute node

说明

public DOMAttr DOMElement::getAttributeNodeNS ( string $namespaceURI , string $localName )

Returns the attribute node in namespace namespaceURI with local name localName for the current node.

参数

namespaceURI

The namespace URI.

localName

The local name.

返回值

The attribute node. Note that for XML namespace declarations (xmlns and xmlns:* attributes) an instance of DOMNameSpaceNode is returned instead of a DOMAttr.

参见

  • DOMElement::hasAttributeNS() - Checks to see if attribute exists
  • DOMElement::setAttributeNodeNS() - Adds new attribute node to element
  • DOMElement::removeAttributeNode() - Removes attribute

DOMElement::getAttributeNode
DOMElement::getAttributeNS
DOMElement


Returns value of attribute

DOMElement::getAttributeNodeNS
DOMElement::getElementsByTagName
DOMElement
PHP Manual

DOMElement::getAttributeNS

(PHP 5, PHP 7)

DOMElement::getAttributeNS — Returns value of attribute

说明

public string DOMElement::getAttributeNS ( string $namespaceURI , string $localName )

Gets the value of the attribute in namespace namespaceURI with local name localName for the current node.

参数

namespaceURI

The namespace URI.

localName

The local name.

返回值

The value of the attribute, or an empty string if no attribute with the given localName and namespaceURI is found.

参见

  • DOMElement::hasAttributeNS() - Checks to see if attribute exists
  • DOMElement::setAttributeNS() - Adds new attribute
  • DOMElement::removeAttributeNS() - Removes attribute

DOMElement::getAttributeNodeNS
DOMElement::getElementsByTagName
DOMElement


Gets elements by tagname

DOMElement::getAttributeNS
DOMElement::getElementsByTagNameNS
DOMElement
PHP Manual

DOMElement::getElementsByTagName

(PHP 5, PHP 7)

DOMElement::getElementsByTagName — Gets elements by tagname

说明

public DOMNodeList DOMElement::getElementsByTagName ( string $name )

This function returns a new instance of the class DOMNodeList of all descendant elements with a given tag name, in the order in which they are encountered in a preorder traversal of this element tree.

参数

name

The tag name. Use * to return all elements within the element tree.

返回值

This function returns a new instance of the class DOMNodeList of all matched elements.

参见

  • DOMElement::getElementsByTagNameNS() - Get elements by namespaceURI and localName

DOMElement::getAttributeNS
DOMElement::getElementsByTagNameNS
DOMElement


Get elements by namespaceURI and localName

DOMElement::getElementsByTagName
DOMElement::hasAttribute
DOMElement
PHP Manual

DOMElement::getElementsByTagNameNS

(PHP 5, PHP 7)

DOMElement::getElementsByTagNameNS — Get elements by namespaceURI and localName

说明

public DOMNodeList DOMElement::getElementsByTagNameNS ( string $namespaceURI , string $localName )

This function fetch all the descendant elements with a given localName and namespaceURI.

参数

namespaceURI

The namespace URI.

localName

The local name. Use * to return all elements within the element tree.

返回值

This function returns a new instance of the class DOMNodeList of all matched elements in the order in which they are encountered in a preorder traversal of this element tree.

参见

  • DOMElement::getElementsByTagName() - Gets elements by tagname

DOMElement::getElementsByTagName
DOMElement::hasAttribute
DOMElement


Checks to see if attribute exists

DOMElement::getElementsByTagNameNS
DOMElement::hasAttributeNS
DOMElement
PHP Manual

DOMElement::hasAttribute

(PHP 5, PHP 7)

DOMElement::hasAttribute — Checks to see if attribute exists

说明

public bool DOMElement::hasAttribute ( string $name )

Indicates whether attribute named name exists as a member of the element.

参数

name

The attribute name.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • DOMElement::hasAttributeNS() - Checks to see if attribute exists
  • DOMElement::getAttribute() - Returns value of attribute
  • DOMElement::setAttribute() - Adds new attribute
  • DOMElement::removeAttribute() - Removes attribute

DOMElement::getElementsByTagNameNS
DOMElement::hasAttributeNS
DOMElement


Checks to see if attribute exists

DOMElement::hasAttribute
DOMElement::removeAttribute
DOMElement
PHP Manual

DOMElement::hasAttributeNS

(PHP 5, PHP 7)

DOMElement::hasAttributeNS — Checks to see if attribute exists

说明

public bool DOMElement::hasAttributeNS ( string $namespaceURI , string $localName )

Indicates whether attribute in namespace namespaceURI named localName exists as a member of the element.

参数

namespaceURI

The namespace URI.

localName

The local name.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • DOMElement::hasAttribute() - Checks to see if attribute exists
  • DOMElement::getAttributeNS() - Returns value of attribute
  • DOMElement::setAttributeNS() - Adds new attribute
  • DOMElement::removeAttributeNS() - Removes attribute

DOMElement::hasAttribute
DOMElement::removeAttribute
DOMElement


Removes attribute

DOMElement::hasAttributeNS
DOMElement::removeAttributeNode
DOMElement
PHP Manual

DOMElement::removeAttribute

(PHP 5, PHP 7)

DOMElement::removeAttribute — Removes attribute

说明

public bool DOMElement::removeAttribute ( string $name )

Removes attribute named name from the element.

参数

name

The name of the attribute.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

DOM_NO_MODIFICATION_ALLOWED_ERR

Raised if the node is readonly.

参见

  • DOMElement::hasAttribute() - Checks to see if attribute exists
  • DOMElement::getAttribute() - Returns value of attribute
  • DOMElement::setAttribute() - Adds new attribute

DOMElement::hasAttributeNS
DOMElement::removeAttributeNode
DOMElement


Removes attribute

DOMElement::removeAttribute
DOMElement::removeAttributeNS
DOMElement
PHP Manual

DOMElement::removeAttributeNode

(PHP 5, PHP 7)

DOMElement::removeAttributeNode — Removes attribute

说明

public bool DOMElement::removeAttributeNode ( DOMAttr $oldnode )

Removes attribute oldnode from the element.

参数

oldnode

The attribute node.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

DOM_NO_MODIFICATION_ALLOWED_ERR

Raised if the node is readonly.

DOM_NOT_FOUND_ERROR

Raised if oldnode is not an attribute of the element.

参见

  • DOMElement::hasAttribute() - Checks to see if attribute exists
  • DOMElement::getAttributeNode() - Returns attribute node
  • DOMElement::setAttributeNode() - Adds new attribute node to element

DOMElement::removeAttribute
DOMElement::removeAttributeNS
DOMElement


Removes attribute

DOMElement::removeAttributeNode
DOMElement::setAttribute
DOMElement
PHP Manual

DOMElement::removeAttributeNS

(PHP 5, PHP 7)

DOMElement::removeAttributeNS — Removes attribute

说明

public bool DOMElement::removeAttributeNS ( string $namespaceURI , string $localName )

Removes attribute is namespace namespaceURI named localName from the element.

参数

namespaceURI

The namespace URI.

localName

The local name.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

DOM_NO_MODIFICATION_ALLOWED_ERR

Raised if the node is readonly.

参见

  • DOMElement::hasAttributeNS() - Checks to see if attribute exists
  • DOMElement::getAttributeNS() - Returns value of attribute
  • DOMElement::setAttributeNS() - Adds new attribute

DOMElement::removeAttributeNode
DOMElement::setAttribute
DOMElement


Adds new attribute

DOMElement::removeAttributeNS
DOMElement::setAttributeNode
DOMElement
PHP Manual

DOMElement::setAttribute

(PHP 5, PHP 7)

DOMElement::setAttribute — Adds new attribute

说明

public DOMAttr DOMElement::setAttribute ( string $name , string $value )

Sets an attribute with name name to the given value. If the attribute does not exist, it will be created.

参数

name

The name of the attribute.

value

The value of the attribute.

返回值

The new DOMAttr or FALSE if an error occurred.

错误／异常

DOM_NO_MODIFICATION_ALLOWED_ERR

Raised if the node is readonly.

范例

Example #1 Setting an attribute

<?php
$doc = new DOMDocument("1.0");
$node = $doc->createElement("para");
$newnode = $doc->appendChild($node);
$newnode->setAttribute("align", "left");
?>

参见

  • DOMElement::hasAttribute() - Checks to see if attribute exists
  • DOMElement::getAttribute() - Returns value of attribute
  • DOMElement::removeAttribute() - Removes attribute

DOMElement::removeAttributeNS
DOMElement::setAttributeNode
DOMElement


Adds new attribute node to element

DOMElement::setAttribute
DOMElement::setAttributeNodeNS
DOMElement
PHP Manual

DOMElement::setAttributeNode

(PHP 5, PHP 7)

DOMElement::setAttributeNode — Adds new attribute node to element

说明

public DOMAttr DOMElement::setAttributeNode ( DOMAttr $attr )

Adds new attribute node attr to element.

参数

attr

The attribute node.

返回值

Returns old node if the attribute has been replaced or NULL.

错误／异常

DOM_NO_MODIFICATION_ALLOWED_ERR

Raised if the node is readonly.

参见

  • DOMElement::hasAttribute() - Checks to see if attribute exists
  • DOMElement::getAttributeNode() - Returns attribute node
  • DOMElement::removeAttributeNode() - Removes attribute

DOMElement::setAttribute
DOMElement::setAttributeNodeNS
DOMElement


Adds new attribute node to element

DOMElement::setAttributeNode
DOMElement::setAttributeNS
DOMElement
PHP Manual

DOMElement::setAttributeNodeNS

(PHP 5, PHP 7)

DOMElement::setAttributeNodeNS — Adds new attribute node to element

说明

public DOMAttr DOMElement::setAttributeNodeNS ( DOMAttr $attr )

Adds new attribute node attr to element.

参数

attr

The attribute node.

返回值

Returns the old node if the attribute has been replaced.

错误／异常

DOM_NO_MODIFICATION_ALLOWED_ERR

Raised if the node is readonly.

参见

  • DOMElement::hasAttributeNS() - Checks to see if attribute exists
  • DOMElement::getAttributeNodeNS() - Returns attribute node
  • DOMElement::removeAttributeNode() - Removes attribute

DOMElement::setAttributeNode
DOMElement::setAttributeNS
DOMElement


Adds new attribute

DOMElement::setAttributeNodeNS
DOMElement::setIdAttribute
DOMElement
PHP Manual

DOMElement::setAttributeNS

(PHP 5, PHP 7)

DOMElement::setAttributeNS — Adds new attribute

说明

public void DOMElement::setAttributeNS ( string $namespaceURI , string $qualifiedName , string $value )

Sets an attribute with namespace namespaceURI and name name to the given value. If the attribute does not exist, it will be created.

参数

namespaceURI

The namespace URI.

qualifiedName

The qualified name of the attribute, as prefix:tagname.

value

The value of the attribute.

返回值

没有返回值。

错误／异常

DOM_NO_MODIFICATION_ALLOWED_ERR

Raised if the node is readonly.

DOM_NAMESPACE_ERR

Raised if qualifiedName is a malformed qualified name, or if qualifiedName has a prefix and namespaceURI is NULL.

参见

  • DOMElement::hasAttributeNS() - Checks to see if attribute exists
  • DOMElement::getAttributeNS() - Returns value of attribute
  • DOMElement::removeAttributeNS() - Removes attribute

DOMElement::setAttributeNodeNS
DOMElement::setIdAttribute
DOMElement


Declares the attribute specified by name to be of type ID

DOMElement::setAttributeNS
DOMElement::setIdAttributeNode
DOMElement
PHP Manual

DOMElement::setIdAttribute

(PHP 5, PHP 7)

DOMElement::setIdAttribute — Declares the attribute specified by name to be of type ID

说明

public void DOMElement::setIdAttribute ( string $name , bool $isId )

Declares the attribute name to be of type ID.

参数

name

The name of the attribute.

isId

Set it to TRUE if you want name to be of type ID, FALSE otherwise.

返回值

没有返回值。

错误／异常

DOM_NO_MODIFICATION_ALLOWED_ERR

Raised if the node is readonly.

DOM_NOT_FOUND

Raised if name is not an attribute of this element.

参见

  • DOMDocument::getElementById() - Searches for an element with a certain id
  • DOMElement::setIdAttributeNode() - Declares the attribute specified by node to be of type ID
  • DOMElement::setIdAttributeNS() - Declares the attribute specified by local name and namespace URI to be of type ID

DOMElement::setAttributeNS
DOMElement::setIdAttributeNode
DOMElement


Declares the attribute specified by node to be of type ID

DOMElement::setIdAttribute
DOMElement::setIdAttributeNS
DOMElement
PHP Manual

DOMElement::setIdAttributeNode

(PHP 5, PHP 7)

DOMElement::setIdAttributeNode — Declares the attribute specified by node to be of type ID

说明

public void DOMElement::setIdAttributeNode ( DOMAttr $attr , bool $isId )

Declares the attribute specified by attr to be of type ID.

参数

attr

The attribute node.

isId

Set it to TRUE if you want name to be of type ID, FALSE otherwise.

返回值

没有返回值。

错误／异常

DOM_NO_MODIFICATION_ALLOWED_ERR

Raised if the node is readonly.

DOM_NOT_FOUND

Raised if name is not an attribute of this element.

参见

  • DOMDocument::getElementById() - Searches for an element with a certain id
  • DOMElement::setIdAttribute() - Declares the attribute specified by name to be of type ID
  • DOMElement::setIdAttributeNS() - Declares the attribute specified by local name and namespace URI to be of type ID

DOMElement::setIdAttribute
DOMElement::setIdAttributeNS
DOMElement


Declares the attribute specified by local name and namespace URI to be of type ID

DOMElement::setIdAttributeNode
DOMEntity
DOMElement
PHP Manual

DOMElement::setIdAttributeNS

(PHP 5, PHP 7)

DOMElement::setIdAttributeNS — Declares the attribute specified by local name and namespace URI to be of type ID

说明

public void DOMElement::setIdAttributeNS ( string $namespaceURI , string $localName , bool $isId )

Declares the attribute specified by localName and namespaceURI to be of type ID.

参数

namespaceURI

The namespace URI of the attribute.

localName

The local name of the attribute, as prefix:tagname.

isId

Set it to TRUE if you want name to be of type ID, FALSE otherwise.

返回值

没有返回值。

错误／异常

DOM_NO_MODIFICATION_ALLOWED_ERR

Raised if the node is readonly.

DOM_NOT_FOUND

Raised if name is not an attribute of this element.

参见

  • DOMDocument::getElementById() - Searches for an element with a certain id
  • DOMElement::setIdAttribute() - Declares the attribute specified by name to be of type ID
  • DOMElement::setIdAttributeNode() - Declares the attribute specified by node to be of type ID

DOMElement::setIdAttributeNode
DOMEntity
DOMElement


The DOMEntity class

(PHP 5, PHP 7)

简介

This interface represents a known entity, either parsed or unparsed, in an XML document.

类摘要

DOMEntity extends DOMNode {
/* 属性 */
readonly public string $publicId ;
readonly public string $systemId ;
readonly public string $notationName ;
public string $actualEncoding ;
readonly public string $encoding ;
readonly public string $version ;
/* 继承的方法 */
public DOMNode DOMNode::appendChild ( DOMNode $newnode )
public string DOMNode::C14N ([ bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public int DOMNode::C14NFile ( string $uri [, bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public DOMNode DOMNode::cloneNode ([ bool $deep ] )
public int DOMNode::getLineNo ( void )
public string DOMNode::getNodePath ( void )
public bool DOMNode::hasAttributes ( void )
public bool DOMNode::hasChildNodes ( void )
public DOMNode DOMNode::insertBefore ( DOMNode $newnode [, DOMNode $refnode ] )
public bool DOMNode::isDefaultNamespace ( string $namespaceURI )
public bool DOMNode::isSameNode ( DOMNode $node )
public bool DOMNode::isSupported ( string $feature , string $version )
public string DOMNode::lookupNamespaceURI ( string $prefix )
public string DOMNode::lookupPrefix ( string $namespaceURI )
public void DOMNode::normalize ( void )
public DOMNode DOMNode::removeChild ( DOMNode $oldnode )
public DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )
}

属性

publicId

The public identifier associated with the entity if specified, and NULL otherwise.

systemId

The system identifier associated with the entity if specified, and NULL otherwise. This may be an absolute URI or not.

notationName

For unparsed entities, the name of the notation for the entity. For parsed entities, this is NULL.

actualEncoding

An attribute specifying the encoding used for this entity at the time of parsing, when it is an external parsed entity. This is NULL if it an entity from the internal subset or if it is not known.

encoding

An attribute specifying, as part of the text declaration, the encoding of this entity, when it is an external parsed entity. This is NULL otherwise.

version

An attribute specifying, as part of the text declaration, the version number of this entity, when it is an external parsed entity. This is NULL otherwise.

DOMElement::setIdAttributeNS
DOMEntityReference
DOM


The DOMEntityReference class

(PHP 5, PHP 7)

类摘要

DOMEntityReference extends DOMNode {
/* 属性 */
/* 方法 */
public __construct ( string $name )
/* 继承的方法 */
public DOMNode DOMNode::appendChild ( DOMNode $newnode )
public string DOMNode::C14N ([ bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public int DOMNode::C14NFile ( string $uri [, bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public DOMNode DOMNode::cloneNode ([ bool $deep ] )
public int DOMNode::getLineNo ( void )
public string DOMNode::getNodePath ( void )
public bool DOMNode::hasAttributes ( void )
public bool DOMNode::hasChildNodes ( void )
public DOMNode DOMNode::insertBefore ( DOMNode $newnode [, DOMNode $refnode ] )
public bool DOMNode::isDefaultNamespace ( string $namespaceURI )
public bool DOMNode::isSameNode ( DOMNode $node )
public bool DOMNode::isSupported ( string $feature , string $version )
public string DOMNode::lookupNamespaceURI ( string $prefix )
public string DOMNode::lookupPrefix ( string $namespaceURI )
public void DOMNode::normalize ( void )
public DOMNode DOMNode::removeChild ( DOMNode $oldnode )
public DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )
}

Table of Contents

  • DOMEntityReference::__construct — Creates a new DOMEntityReference object
DOMEntity
DOMEntityReference::__construct
DOM


Creates a new DOMEntityReference object

DOMEntityReference
DOMException
DOMEntityReference
PHP Manual

DOMEntityReference::__construct

(PHP 5, PHP 7)

DOMEntityReference::__construct — Creates a new DOMEntityReference object

说明

public DOMEntityReference::__construct ( string $name )

Creates a new DOMEntityReference object.

参数

name

The name of the entity reference.

范例

Example #1 Creating a new DOMEntityReference

<?php

$dom = new DOMDocument('1.0', 'iso-8859-1');
$element = $dom->appendChild(new DOMElement('root'));
$entity = $element->appendChild(new DOMEntityReference('nbsp'));
echo $dom->saveXML(); /* <?xml version="1.0" encoding="iso-8859-1"?><root>&nbsp;</root> */

?>

参见

  • DOMDocument::createEntityReference() - Create new entity reference node

DOMEntityReference
DOMException
DOMEntityReference


The DOMException class

(PHP 5, PHP 7)

简介

DOM operations raise exceptions under particular circumstances, i.e., when an operation is impossible to perform for logical reasons.

See also 异常处理.

类摘要

DOMException extends Exception {
/* 属性 */
readonly public int $code ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}

属性

code

An integer indicating the type of error generated

DOMEntityReference::__construct
DOMImplementation
DOM


The DOMImplementation class

(PHP 5, PHP 7)

简介

The DOMImplementation interface provides a number of methods for performing operations that are independent of any particular instance of the document object model.

类摘要

DOMImplementation {
/* 属性 */
/* 方法 */
__construct ( void )
public DOMDocument createDocument ([ string $namespaceURI = NULL [, string $qualifiedName = NULL [, DOMDocumentType $doctype = NULL ]]] )
public DOMDocumentType createDocumentType ([ string $qualifiedName = NULL [, string $publicId = NULL [, string $systemId = NULL ]]] )
public bool hasFeature ( string $feature , string $version )
}

Table of Contents

  • DOMImplementation::__construct — Creates a new DOMImplementation object
  • DOMImplementation::createDocument — Creates a DOMDocument object of the specified type with its document element
  • DOMImplementation::createDocumentType — Creates an empty DOMDocumentType object
  • DOMImplementation::hasFeature — Test if the DOM implementation implements a specific feature
DOMException
DOMImplementation::__construct
DOM


Creates a new DOMImplementation object

DOMImplementation
DOMImplementation::createDocument
DOMImplementation
PHP Manual

DOMImplementation::__construct

(PHP 5, PHP 7)

DOMImplementation::__construct — Creates a new DOMImplementation object

说明

DOMImplementation::__construct ( void )

Creates a new DOMImplementation object.

DOMImplementation
DOMImplementation::createDocument
DOMImplementation


Creates a DOMDocument object of the specified type with its document element

DOMImplementation::__construct
DOMImplementation::createDocumentType
DOMImplementation
PHP Manual

DOMImplementation::createDocument

(PHP 5, PHP 7)

DOMImplementation::createDocument — Creates a DOMDocument object of the specified type with its document element

说明

public DOMDocument DOMImplementation::createDocument ([ string $namespaceURI = NULL [, string $qualifiedName = NULL [, DOMDocumentType $doctype = NULL ]]] )

Creates a DOMDocument object of the specified type with its document element.

参数

namespaceURI

The namespace URI of the document element to create.

qualifiedName

The qualified name of the document element to create.

doctype

The type of document to create or NULL.

返回值

A new DOMDocument object. If namespaceURI, qualifiedName, and doctype are null, the returned DOMDocument is empty with no document element

错误／异常

DOM_WRONG_DOCUMENT_ERR

Raised if doctype has already been used with a different document or was created from a different implementation.

DOM_NAMESPACE_ERR

Raised if there is an error with the namespace, as determined by namespaceURI and qualifiedName.

此方法可以被静态调用,但会抛出一个 E_STRICT 错误。

参见

  • DOMDocument::__construct() - Creates a new DOMDocument object
  • DOMImplementation::createDocumentType() - Creates an empty DOMDocumentType object

DOMImplementation::__construct
DOMImplementation::createDocumentType
DOMImplementation


Creates an empty DOMDocumentType object

DOMImplementation::createDocument
DOMImplementation::hasFeature
DOMImplementation
PHP Manual

DOMImplementation::createDocumentType

(PHP 5, PHP 7)

DOMImplementation::createDocumentType — Creates an empty DOMDocumentType object

说明

public DOMDocumentType DOMImplementation::createDocumentType ([ string $qualifiedName = NULL [, string $publicId = NULL [, string $systemId = NULL ]]] )

Creates an empty DOMDocumentType object. Entity declarations and notations are not made available. Entity reference expansions and default attribute additions do not occur.

参数

qualifiedName

The qualified name of the document type to create.

publicId

The external subset public identifier.

systemId

The external subset system identifier.

返回值

A new DOMDocumentType node with its ownerDocument set to NULL.

错误／异常

DOM_NAMESPACE_ERR

Raised if there is an error with the namespace, as determined by qualifiedName.

此方法可以被静态调用,但会抛出一个 E_STRICT 错误。

范例

Example #1 Creating a document with an attached DTD

<?php

// Creates an instance of the DOMImplementation class
$imp = new DOMImplementation;

// Creates a DOMDocumentType instance
$dtd = $imp->createDocumentType('graph', '', 'graph.dtd');

// Creates a DOMDocument instance
$dom = $imp->createDocument("", "", $dtd);

// Set other properties
$dom->encoding = 'UTF-8';
$dom->standalone = false;

// Create an empty element
$element = $dom->createElement('graph');

// Append the element
$dom->appendChild($element);

// Retrieve and print the document
echo $dom->saveXML();

?>

以上例程会输出：

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE graph SYSTEM "graph.dtd">
<graph/>

参见

  • DOMImplementation::createDocument() - Creates a DOMDocument object of the specified type with its document element

DOMImplementation::createDocument
DOMImplementation::hasFeature
DOMImplementation


Test if the DOM implementation implements a specific feature

DOMImplementation::createDocumentType
DOMNamedNodeMap
DOMImplementation
PHP Manual

DOMImplementation::hasFeature

(PHP 5, PHP 7)

DOMImplementation::hasFeature — Test if the DOM implementation implements a specific feature

说明

public bool DOMImplementation::hasFeature ( string $feature , string $version )

Test if the DOM implementation implements a specific feature.

You can find a list of all features in the » Conformance section of the DOM specification.

参数

feature

The feature to test.

version

The version number of the feature to test. In level 2, this can be either 2.0 or 1.0.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

此方法可以被静态调用,但会抛出一个 E_STRICT 错误。

范例

Example #1 Testing your DOM Implementation

<?php

$features = array(
  'Core'           => 'Core module',
  'XML'            => 'XML module',
  'HTML'           => 'HTML module',
  'Views'          => 'Views module',
  'Stylesheets'    => 'Style Sheets module',
  'CSS'            => 'CSS module',
  'CSS2'           => 'CSS2 module',
  'Events'         => 'Events module',
  'UIEvents'       => 'User interface Events module',
  'MouseEvents'    => 'Mouse Events module',
  'MutationEvents' => 'Mutation Events module',
  'HTMLEvents'     => 'HTML Events module',
  'Range'          => 'Range module',
  'Traversal'      => 'Traversal module'
);

foreach ($features as $key => $name) {
  if (DOMImplementation::hasFeature($key, '2.0')) {
    echo "Has feature $name\n";
  } else {
    echo "Missing feature $name\n";
  }
}

?>

参见

  • DOMNode::isSupported() - Checks if feature is supported for specified version

DOMImplementation::createDocumentType
DOMNamedNodeMap
DOMImplementation


The DOMNamedNodeMap class

(PHP 5, PHP 7)

类摘要

DOMNamedNodeMap implements Traversable {
/* 属性 */
readonly public int $length ;
/* 方法 */
DOMNode getNamedItem ( string $name )
DOMNode getNamedItemNS ( string $namespaceURI , string $localName )
DOMNode item ( int $index )
}

属性

length

The number of nodes in the map. The range of valid child node indices is 0 to length - 1 inclusive.

Table of Contents

  • DOMNamedNodeMap::getNamedItem — Retrieves a node specified by name
  • DOMNamedNodeMap::getNamedItemNS — Retrieves a node specified by local name and namespace URI
  • DOMNamedNodeMap::item — Retrieves a node specified by index
DOMImplementation::hasFeature
DOMNamedNodeMap::getNamedItem
DOM


Retrieves a node specified by name

DOMNamedNodeMap
DOMNamedNodeMap::getNamedItemNS
DOMNamedNodeMap
PHP Manual

DOMNamedNodeMap::getNamedItem

(PHP 5, PHP 7)

DOMNamedNodeMap::getNamedItem — Retrieves a node specified by name

说明

DOMNode DOMNamedNodeMap::getNamedItem ( string $name )

Retrieves a node specified by its nodeName.

参数

name

The nodeName of the node to retrieve.

返回值

A node (of any type) with the specified nodeName, or NULL if no node is found.

参见

  • DOMNamedNodeMap::getNamedItemNS() - Retrieves a node specified by local name and namespace URI

DOMNamedNodeMap
DOMNamedNodeMap::getNamedItemNS
DOMNamedNodeMap


Retrieves a node specified by local name and namespace URI

DOMNamedNodeMap::getNamedItem
DOMNamedNodeMap::item
DOMNamedNodeMap
PHP Manual

DOMNamedNodeMap::getNamedItemNS

(PHP 5, PHP 7)

DOMNamedNodeMap::getNamedItemNS — Retrieves a node specified by local name and namespace URI

说明

DOMNode DOMNamedNodeMap::getNamedItemNS ( string $namespaceURI , string $localName )

Retrieves a node specified by localName and namespaceURI.

参数

namespaceURI

The namespace URI of the node to retrieve.

localName

The local name of the node to retrieve.

返回值

A node (of any type) with the specified local name and namespace URI, or NULL if no node is found.

参见

  • DOMNamedNodeMap::getNamedItem() - Retrieves a node specified by name

DOMNamedNodeMap::getNamedItem
DOMNamedNodeMap::item
DOMNamedNodeMap


Retrieves a node specified by index

DOMNamedNodeMap::getNamedItemNS
DOMNode
DOMNamedNodeMap
PHP Manual

DOMNamedNodeMap::item

(PHP 5, PHP 7)

DOMNamedNodeMap::item — Retrieves a node specified by index

说明

DOMNode DOMNamedNodeMap::item ( int $index )

Retrieves a node specified by index within the DOMNamedNodeMap object.

参数

index

Index into this map.

返回值

The node at the indexth position in the map, or NULL if that is not a valid index (greater than or equal to the number of nodes in this map).

DOMNamedNodeMap::getNamedItemNS
DOMNode
DOMNamedNodeMap


The DOMNode class

(PHP 5, PHP 7)

类摘要

DOMNode {
/* 属性 */
public readonly string $nodeName ;
public string $nodeValue ;
public readonly int $nodeType ;
public readonly DOMNode $parentNode ;
public readonly DOMNodeList $childNodes ;
public readonly DOMNode $firstChild ;
public readonly DOMNode $lastChild ;
public readonly DOMNode $previousSibling ;
public readonly DOMNode $nextSibling ;
public readonly DOMNamedNodeMap $attributes ;
public readonly DOMDocument $ownerDocument ;
public readonly string $namespaceURI ;
public string $prefix ;
public readonly string $localName ;
public readonly string $baseURI ;
public string $textContent ;
/* 方法 */
public DOMNode appendChild ( DOMNode $newnode )
public string C14N ([ bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public int C14NFile ( string $uri [, bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public DOMNode cloneNode ([ bool $deep ] )
public int getLineNo ( void )
public string getNodePath ( void )
public bool hasAttributes ( void )
public bool hasChildNodes ( void )
public DOMNode insertBefore ( DOMNode $newnode [, DOMNode $refnode ] )
public bool isDefaultNamespace ( string $namespaceURI )
public bool isSameNode ( DOMNode $node )
public bool isSupported ( string $feature , string $version )
public string lookupNamespaceURI ( string $prefix )
public string lookupPrefix ( string $namespaceURI )
public void normalize ( void )
public DOMNode removeChild ( DOMNode $oldnode )
public DOMNode replaceChild ( DOMNode $newnode , DOMNode $oldnode )
}

属性

nodeName

Returns the most accurate name for the current node type

nodeValue

The value of this node, depending on its type. Contrary to the W3C specification, the node value of DOMElement nodes is equal to DOMNode::textContent instead of NULL.

nodeType

Gets the type of the node. One of the predefined XML_xxx_NODE constants

parentNode

The parent of this node. If there is no such node, this returns NULL.

childNodes

A DOMNodeList that contains all children of this node. If there are no children, this is an empty DOMNodeList.

firstChild

The first child of this node. If there is no such node, this returns NULL.

lastChild

The last child of this node. If there is no such node, this returns NULL.

previousSibling

The node immediately preceding this node. If there is no such node, this returns NULL.

nextSibling

The node immediately following this node. If there is no such node, this returns NULL.

attributes

A DOMNamedNodeMap containing the attributes of this node (if it is a DOMElement) or NULL otherwise.

ownerDocument

The DOMDocument object associated with this node.

namespaceURI

The namespace URI of this node, or NULL if it is unspecified.

prefix

The namespace prefix of this node, or NULL if it is unspecified.

localName

Returns the local part of the qualified name of this node.

baseURI

The absolute base URI of this node or NULL if the implementation wasn't able to obtain an absolute URI.

textContent

The text content of this node and its descendants.

注释

Note:

The DOM extension uses UTF-8 encoding. Use utf8_encode() and utf8_decode() to work with texts in ISO-8859-1 encoding or Iconv for other encodings.

更新日志

版本 | 说明
5.6.1 | The textContent property has been made writable (formerly it has been readonly).

参见

  • » W3C specification of Node

Table of Contents

  • DOMNode::appendChild — Adds new child at the end of the children
  • DOMNode::C14N — Canonicalize nodes to a string
  • DOMNode::C14NFile — Canonicalize nodes to a file
  • DOMNode::cloneNode — Clones a node
  • DOMNode::getLineNo — Get line number for a node
  • DOMNode::getNodePath — Get an XPath for a node
  • DOMNode::hasAttributes — Checks if node has attributes
  • DOMNode::hasChildNodes — Checks if node has children
  • DOMNode::insertBefore — Adds a new child before a reference node
  • DOMNode::isDefaultNamespace — Checks if the specified namespaceURI is the default namespace or not
  • DOMNode::isSameNode — Indicates if two nodes are the same node
  • DOMNode::isSupported — Checks if feature is supported for specified version
  • DOMNode::lookupNamespaceURI — Gets the namespace URI of the node based on the prefix
  • DOMNode::lookupPrefix — Gets the namespace prefix of the node based on the namespace URI
  • DOMNode::normalize — Normalizes the node
  • DOMNode::removeChild — Removes child from list of children
  • DOMNode::replaceChild — Replaces a child
DOMNamedNodeMap::item
DOMNode::appendChild
DOM


Adds new child at the end of the children

DOMNode
DOMNode::C14N
DOMNode
PHP Manual

DOMNode::appendChild

(PHP 5, PHP 7)

DOMNode::appendChild — Adds new child at the end of the children

说明

public DOMNode DOMNode::appendChild ( DOMNode $newnode )

This function appends a child to an existing list of children or creates a new list of children. The child can be created with e.g. DOMDocument::createElement(), DOMDocument::createTextNode() etc. or simply by using any other node.

参数

newnode

The appended child.

返回值

The node added.

错误／异常

DOM_NO_MODIFICATION_ALLOWED_ERR

Raised if this node is readonly or if the previous parent of the node being inserted is readonly.

DOM_HIERARCHY_REQUEST_ERR

Raised if this node is of a type that does not allow children of the type of the newnode node, or if the node to append is one of this node's ancestors or this node itself.

DOM_WRONG_DOCUMENT_ERR

Raised if newnode was created from a different document than the one that created this node.

范例

The following example will add a new element node to a fresh document.

Example #1 Adding a child

<?php

$doc = new DOMDocument;

$node = $doc->createElement("para");
$newnode = $doc->appendChild($node);

echo $doc->saveXML();
?>

参见

  • DOMNode::insertBefore() - Adds a new child before a reference node
  • DOMNode::removeChild() - Removes child from list of children
  • DOMNode::replaceChild() - Replaces a child

DOMNode
DOMNode::C14N
DOMNode


Canonicalize nodes to a string

DOMNode::appendChild
DOMNode::C14NFile
DOMNode
PHP Manual

DOMNode::C14N

(PHP 5 >= 5.2.0, PHP 7)

DOMNode::C14N — Canonicalize nodes to a string

说明

public string DOMNode::C14N ([ bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )

Canonicalize nodes to a string

参数

exclusive

Enable exclusive parsing of only the nodes matched by the provided xpath or namespace prefixes.

with_comments

Retain comments in output.

xpath

An array of xpaths to filter the nodes by.

ns_prefixes

An array of namespace prefixes to filter the nodes by.

返回值

Returns canonicalized nodes as a string 或者在失败时返回 FALSE

参见

  • DOMNode::C14NFile() - Canonicalize nodes to a file

DOMNode::appendChild
DOMNode::C14NFile
DOMNode


Canonicalize nodes to a file

DOMNode::C14N
DOMNode::cloneNode
DOMNode
PHP Manual

DOMNode::C14NFile

(PHP 5 >= 5.2.0, PHP 7)

DOMNode::C14NFile — Canonicalize nodes to a file

说明

public int DOMNode::C14NFile ( string $uri [, bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )

Canonicalize nodes to a file.

参数

uri

Path to write the output to.

exclusive

Enable exclusive parsing of only the nodes matched by the provided xpath or namespace prefixes.

with_comments

Retain comments in output.

xpath

An array of xpaths to filter the nodes by.

ns_prefixes

An array of namespace prefixes to filter the nodes by.

返回值

Number of bytes written 或者在失败时返回 FALSE

参见

  • DOMNode::C14N() - Canonicalize nodes to a string

DOMNode::C14N
DOMNode::cloneNode
DOMNode


Clones a node

DOMNode::C14NFile
DOMNode::getLineNo
DOMNode
PHP Manual

DOMNode::cloneNode

(PHP 5, PHP 7)

DOMNode::cloneNode — Clones a node

说明

public DOMNode DOMNode::cloneNode ([ bool $deep ] )

Creates a copy of the node.

参数

deep

Indicates whether to copy all descendant nodes. This parameter is defaulted to FALSE.

返回值

The cloned node.

DOMNode::C14NFile
DOMNode::getLineNo
DOMNode


Get line number for a node

DOMNode::cloneNode
DOMNode::getNodePath
DOMNode
PHP Manual

DOMNode::getLineNo

(PHP 5 >= 5.3.0, PHP 7)

DOMNode::getLineNo — Get line number for a node

说明

public int DOMNode::getLineNo ( void )

Gets line number for where the node is defined.

参数

此函数没有参数。

返回值

Always returns the line number where the node was defined in.

范例

Example #1 DOMNode::getLineNo() example

<?php
// XML dump for below example
$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<root>
    <node />
</root>
XML;

// Create a new DOMDocument instance
$dom = new DOMDocument;

// Load the XML
$dom->loadXML($xml);

// Print where the line where the 'node' element was defined in
printf('The <node> tag is defined on line %d', $dom->getElementsByTagName('node')->item(0)->getLineNo());
?>

以上例程会输出：

The <node> tag is defined in line 3

DOMNode::cloneNode
DOMNode::getNodePath
DOMNode


Get an XPath for a node

DOMNode::getLineNo
DOMNode::hasAttributes
DOMNode
PHP Manual

DOMNode::getNodePath

(PHP 5 >= 5.2.0, PHP 7)

DOMNode::getNodePath — Get an XPath for a node

说明

public string DOMNode::getNodePath ( void )

Gets an XPath location path for the node.

参数

此函数没有参数。

返回值

Returns a string containing the XPath, or NULL in case of an error.

范例

Example #1 DOMNode::getNodePath() example

<?php
// Create a new DOMDocument instance
$dom = new DOMDocument;

// Load the XML
$dom->loadXML('
<fruits>
 <apples>
  <apple>braeburn</apple>
  <apple>granny smith</apple>
 </apples>
 <pears>
  <pear>conference</pear>
 </pears>
</fruits>
');

// Print XPath for each element
foreach ($dom->getElementsByTagName('*') as $node) {
    echo $node->getNodePath() . "\n";
}
?>

以上例程会输出：

/fruits
/fruits/apples
/fruits/apples/apple[1]
/fruits/apples/apple[2]
/fruits/pears
/fruits/pears/pear

参见

  • DOMXPath

DOMNode::getLineNo
DOMNode::hasAttributes
DOMNode


Checks if node has attributes

DOMNode::getNodePath
DOMNode::hasChildNodes
DOMNode
PHP Manual

DOMNode::hasAttributes

(PHP 5, PHP 7)

DOMNode::hasAttributes — Checks if node has attributes

说明

public bool DOMNode::hasAttributes ( void )

This method checks if the node has attributes. The tested node has to be an XML_ELEMENT_NODE.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • DOMNode::hasChildNodes() - Checks if node has children

DOMNode::getNodePath
DOMNode::hasChildNodes
DOMNode


Checks if node has children

DOMNode::hasAttributes
DOMNode::insertBefore
DOMNode
PHP Manual

DOMNode::hasChildNodes

(PHP 5, PHP 7)

DOMNode::hasChildNodes — Checks if node has children

说明

public bool DOMNode::hasChildNodes ( void )

This function checks if the node has children.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • DOMNode::hasAttributes() - Checks if node has attributes

DOMNode::hasAttributes
DOMNode::insertBefore
DOMNode


Adds a new child before a reference node

DOMNode::hasChildNodes
DOMNode::isDefaultNamespace
DOMNode
PHP Manual

DOMNode::insertBefore

(PHP 5, PHP 7)

DOMNode::insertBefore — Adds a new child before a reference node

说明

public DOMNode DOMNode::insertBefore ( DOMNode $newnode [, DOMNode $refnode ] )

This function inserts a new node right before the reference node. If you plan to do further modifications on the appended child you must use the returned node.

参数

newnode

The new node.

refnode

The reference node. If not supplied, newnode is appended to the children.

返回值

The inserted node.

错误／异常

DOM_NO_MODIFICATION_ALLOWED_ERR

Raised if this node is readonly or if the previous parent of the node being inserted is readonly.

DOM_HIERARCHY_REQUEST_ERR

Raised if this node is of a type that does not allow children of the type of the newnode node, or if the node to append is one of this node's ancestors or this node itself.

DOM_WRONG_DOCUMENT_ERR

Raised if newnode was created from a different document than the one that created this node.

DOM_NOT_FOUND

Raised if refnode is not a child of this node.

参见

  • DOMNode::appendChild() - Adds new child at the end of the children

DOMNode::hasChildNodes
DOMNode::isDefaultNamespace
DOMNode


Checks if the specified namespaceURI is the default namespace or not

DOMNode::insertBefore
DOMNode::isSameNode
DOMNode
PHP Manual

DOMNode::isDefaultNamespace

(PHP 5, PHP 7)

DOMNode::isDefaultNamespace — Checks if the specified namespaceURI is the default namespace or not

说明

public bool DOMNode::isDefaultNamespace ( string $namespaceURI )

Tells whether namespaceURI is the default namespace.

参数

namespaceURI

The namespace URI to look for.

返回值

Return TRUE if namespaceURI is the default namespace, FALSE otherwise.

DOMNode::insertBefore
DOMNode::isSameNode
DOMNode


Indicates if two nodes are the same node

DOMNode::isDefaultNamespace
DOMNode::isSupported
DOMNode
PHP Manual

DOMNode::isSameNode

(PHP 5, PHP 7)

DOMNode::isSameNode — Indicates if two nodes are the same node

说明

public bool DOMNode::isSameNode ( DOMNode $node )

This function indicates if two nodes are the same node. The comparison is not based on content

参数

node

The compared node.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

DOMNode::isDefaultNamespace
DOMNode::isSupported
DOMNode


Checks if feature is supported for specified version

DOMNode::isSameNode
DOMNode::lookupNamespaceURI
DOMNode
PHP Manual

DOMNode::isSupported

(PHP 5, PHP 7)

DOMNode::isSupported — Checks if feature is supported for specified version

说明

public bool DOMNode::isSupported ( string $feature , string $version )

Checks if the asked feature is supported for the specified version.

参数

feature

The feature to test. See the example of DOMImplementation::hasFeature() for a list of features.

version

The version number of the feature to test.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • DOMImplementation::hasFeature() - Test if the DOM implementation implements a specific feature

DOMNode::isSameNode
DOMNode::lookupNamespaceURI
DOMNode


Gets the namespace URI of the node based on the prefix

DOMNode::isSupported
DOMNode::lookupPrefix
DOMNode
PHP Manual

DOMNode::lookupNamespaceURI

(PHP 5, PHP 7)

DOMNode::lookupNamespaceURI — Gets the namespace URI of the node based on the prefix

说明

public string DOMNode::lookupNamespaceURI ( string $prefix )

Gets the namespace URI of the node based on the prefix.

参数

prefix

The prefix of the namespace.

返回值

The namespace URI of the node.

参见

  • DOMNode::lookupPrefix() - Gets the namespace prefix of the node based on the namespace URI

DOMNode::isSupported
DOMNode::lookupPrefix
DOMNode


Gets the namespace prefix of the node based on the namespace URI

DOMNode::lookupNamespaceURI
DOMNode::normalize
DOMNode
PHP Manual

DOMNode::lookupPrefix

(PHP 5, PHP 7)

DOMNode::lookupPrefix — Gets the namespace prefix of the node based on the namespace URI

说明

public string DOMNode::lookupPrefix ( string $namespaceURI )

Gets the namespace prefix of the node based on the namespace URI.

参数

namespaceURI

The namespace URI.

返回值

The prefix of the namespace.

参见

  • DOMNode::lookupNamespaceURI() - Gets the namespace URI of the node based on the prefix

DOMNode::lookupNamespaceURI
DOMNode::normalize
DOMNode


Normalizes the node

DOMNode::lookupPrefix
DOMNode::removeChild
DOMNode
PHP Manual

DOMNode::normalize

(PHP 5, PHP 7)

DOMNode::normalize — Normalizes the node

说明

public void DOMNode::normalize ( void )

Remove empty text nodes and merge adjacent text nodes in this node and all its children.

返回值

没有返回值。

参见

  • » The DOM Specification
  • DOMDocument::normalizeDocument() - Normalizes the document

DOMNode::lookupPrefix
DOMNode::removeChild
DOMNode


Removes child from list of children

DOMNode::normalize
DOMNode::replaceChild
DOMNode
PHP Manual

DOMNode::removeChild

(PHP 5, PHP 7)

DOMNode::removeChild — Removes child from list of children

说明

public DOMNode DOMNode::removeChild ( DOMNode $oldnode )

This functions removes a child from a list of children.

参数

oldnode

The removed child.

返回值

If the child could be removed the function returns the old child.

错误／异常

DOM_NO_MODIFICATION_ALLOWED_ERR

Raised if this node is readonly.

DOM_NOT_FOUND

Raised if oldnode is not a child of this node.

范例

The following example will delete the chapter element of our XML document.

Example #1 Removing a child

<?php

$doc = new DOMDocument;
$doc->load('book.xml');

$book = $doc->documentElement;

// we retrieve the chapter and remove it from the book
$chapter = $book->getElementsByTagName('chapter')->item(0);
$oldchapter = $book->removeChild($chapter);

echo $doc->saveXML();
?>

以上例程会输出：

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
          "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<book id="listing">
 <title>My lists</title>

</book>

参见

  • DOMNode::appendChild() - Adds new child at the end of the children
  • DOMNode::replaceChild() - Replaces a child

DOMNode::normalize
DOMNode::replaceChild
DOMNode


Replaces a child

DOMNode::removeChild
DOMNodeList
DOMNode
PHP Manual

DOMNode::replaceChild

(PHP 5, PHP 7)

DOMNode::replaceChild — Replaces a child

说明

public DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )

This function replaces the child oldnode with the passed new node. If the newnode is already a child it will not be added a second time. If the replacement succeeds the old node is returned.

参数

newnode

The new node. It must be a member of the target document, i.e. created by one of the DOMDocument->createXXX() methods or imported in the document by DOMDocument::importNode.

oldnode

The old node.

返回值

The old node or FALSE if an error occur.

错误／异常

DOM_NO_MODIFICATION_ALLOWED_ERR

Raised if this node is readonly or if the previous parent of the node being inserted is readonly.

DOM_HIERARCHY_REQUEST_ERR

Raised if this node is of a type that does not allow children of the type of the newnode node, or if the node to put in is one of this node's ancestors or this node itself.

DOM_WRONG_DOCUMENT_ERR

Raised if newnode was created from a different document than the one that created this node.

DOM_NOT_FOUND

Raised if oldnode is not a child of this node.

参见

  • DOMNode::appendChild() - Adds new child at the end of the children
  • DOMNode::removeChild() - Removes child from list of children

DOMNode::removeChild
DOMNodeList
DOMNode


The DOMNodeList class

(PHP 5, PHP 7)

类摘要

DOMNodeList implements Traversable {
/* 属性 */
readonly public int $length ;
/* 方法 */
DOMElement DOMNodelist::item ( int $index )
}

属性

length

The number of nodes in the list. The range of valid child node indices is 0 to length - 1 inclusive.

参见

  • » W3C specification of NodeList

Table of Contents

  • DOMNodelist::item — Retrieves a node specified by index
DOMNode::replaceChild
DOMNodelist::item
DOM


Retrieves a node specified by index

DOMNodeList
DOMNotation
DOMNodeList
PHP Manual

DOMNodelist::item

(PHP 5, PHP 7)

DOMNodelist::item — Retrieves a node specified by index

说明

DOMElement DOMNodelist::item ( int $index )

Retrieves a node specified by index within the DOMNodeList object.

Tip

If you need to know the number of nodes in the collection, use the length property of the DOMNodeList object.

参数

index

Index of the node into the collection.

返回值

The node at the indexth position in the DOMNodeList, or NULL if that is not a valid index.

范例

Example #1 Traversing all the entries of the table

<?php

$doc = new DOMDocument;
$doc->load('book.xml');

$items = $doc->getElementsByTagName('entry');

for ($i = 0; $i < $items->length; $i++) {
    echo $items->item($i)->nodeValue . "\n";
}

?>

Alternatively, you can use foreach, which is a much more convenient way:

<?php

foreach ($items as $item) {
    echo $item->nodeValue . "\n";
}

?>

以上例程会输出：

Title
Author
Language
ISBN
The Grapes of Wrath
John Steinbeck
en
0140186409
The Pearl
John Steinbeck
en
014017737X
Samarcande
Amine Maalouf
fr
2253051209

DOMNodeList
DOMNotation
DOMNodeList


The DOMNotation class

(PHP 5, PHP 7)

类摘要

DOMNotation extends DOMNode {
/* 属性 */
readonly public string $publicId ;
readonly public string $systemId ;
/* 继承的方法 */
public DOMNode DOMNode::appendChild ( DOMNode $newnode )
public string DOMNode::C14N ([ bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public int DOMNode::C14NFile ( string $uri [, bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public DOMNode DOMNode::cloneNode ([ bool $deep ] )
public int DOMNode::getLineNo ( void )
public string DOMNode::getNodePath ( void )
public bool DOMNode::hasAttributes ( void )
public bool DOMNode::hasChildNodes ( void )
public DOMNode DOMNode::insertBefore ( DOMNode $newnode [, DOMNode $refnode ] )
public bool DOMNode::isDefaultNamespace ( string $namespaceURI )
public bool DOMNode::isSameNode ( DOMNode $node )
public bool DOMNode::isSupported ( string $feature , string $version )
public string DOMNode::lookupNamespaceURI ( string $prefix )
public string DOMNode::lookupPrefix ( string $namespaceURI )
public void DOMNode::normalize ( void )
public DOMNode DOMNode::removeChild ( DOMNode $oldnode )
public DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )
}

属性

publicId

systemId

DOMNodelist::item
DOMProcessingInstruction
DOM


The DOMProcessingInstruction class

(PHP 5, PHP 7)

类摘要

DOMProcessingInstruction extends DOMNode {
/* 属性 */
readonly public string $target ;
public string $data ;
/* 方法 */
public __construct ( string $name [, string $value ] )
/* 继承的方法 */
public DOMNode DOMNode::appendChild ( DOMNode $newnode )
public string DOMNode::C14N ([ bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public int DOMNode::C14NFile ( string $uri [, bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public DOMNode DOMNode::cloneNode ([ bool $deep ] )
public int DOMNode::getLineNo ( void )
public string DOMNode::getNodePath ( void )
public bool DOMNode::hasAttributes ( void )
public bool DOMNode::hasChildNodes ( void )
public DOMNode DOMNode::insertBefore ( DOMNode $newnode [, DOMNode $refnode ] )
public bool DOMNode::isDefaultNamespace ( string $namespaceURI )
public bool DOMNode::isSameNode ( DOMNode $node )
public bool DOMNode::isSupported ( string $feature , string $version )
public string DOMNode::lookupNamespaceURI ( string $prefix )
public string DOMNode::lookupPrefix ( string $namespaceURI )
public void DOMNode::normalize ( void )
public DOMNode DOMNode::removeChild ( DOMNode $oldnode )
public DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )
}

属性

target

data

Table of Contents

  • DOMProcessingInstruction::__construct — Creates a new DOMProcessingInstruction object
DOMNotation
DOMProcessingInstruction::__construct
DOM


Creates a new DOMProcessingInstruction object

DOMProcessingInstruction
DOMText
DOMProcessingInstruction
PHP Manual

DOMProcessingInstruction::__construct

(PHP 5, PHP 7)

DOMProcessingInstruction::__construct — Creates a new DOMProcessingInstruction object

说明

public DOMProcessingInstruction::__construct ( string $name [, string $value ] )

Creates a new DOMProcessingInstruction object. This object is read only. It may be appended to a document, but additional nodes may not be appended to this node until the node is associated with a document. To create a writeable node, use DOMDocument::createProcessingInstruction.

参数

name

The tag name of the processing instruction.

value

The value of the processing instruction.

范例

Example #1 Creating a new DOMProcessingInstruction object

<?php

$dom = new DOMDocument('1.0', 'UTF-8');
$html = $dom->appendChild(new DOMElement('html'));
$body = $html->appendChild(new DOMElement('body'));
$pinode = new DOMProcessingInstruction('php', 'echo "Hello World"; ');
$body->appendChild($pinode);
echo $dom->saveXML();

?>

以上例程会输出：

<?xml version="1.0" encoding="UTF-8"?>
<html><body><?php echo "Hello World"; ?></body></html>

参见

  • DOMDocument::createProcessingInstruction() - Creates new PI node

DOMProcessingInstruction
DOMText
DOMProcessingInstruction


The DOMText class

(PHP 5, PHP 7)

简介

The DOMText class inherits from DOMCharacterData and represents the textual content of a DOMElement or DOMAttr.

类摘要

DOMText extends DOMCharacterData {
/* 属性 */
readonly public string $wholeText ;
/* 方法 */
public __construct ([ string $value ] )
public bool isWhitespaceInElementContent ( void )
public DOMText splitText ( int $offset )
/* 继承的方法 */
public DOMNode DOMNode::appendChild ( DOMNode $newnode )
public string DOMNode::C14N ([ bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public int DOMNode::C14NFile ( string $uri [, bool $exclusive [, bool $with_comments [, array $xpath [, array $ns_prefixes ]]]] )
public DOMNode DOMNode::cloneNode ([ bool $deep ] )
public int DOMNode::getLineNo ( void )
public string DOMNode::getNodePath ( void )
public bool DOMNode::hasAttributes ( void )
public bool DOMNode::hasChildNodes ( void )
public DOMNode DOMNode::insertBefore ( DOMNode $newnode [, DOMNode $refnode ] )
public bool DOMNode::isDefaultNamespace ( string $namespaceURI )
public bool DOMNode::isSameNode ( DOMNode $node )
public bool DOMNode::isSupported ( string $feature , string $version )
public string DOMNode::lookupNamespaceURI ( string $prefix )
public string DOMNode::lookupPrefix ( string $namespaceURI )
public void DOMNode::normalize ( void )
public DOMNode DOMNode::removeChild ( DOMNode $oldnode )
public DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )
}

属性

wholeText

Holds all the text of logically-adjacent (not separated by Element, Comment or Processing Instruction) Text nodes.

Table of Contents

  • DOMText::__construct — Creates a new DOMText object
  • DOMText::isWhitespaceInElementContent — Indicates whether this text node contains whitespace
  • DOMText::splitText — Breaks this node into two nodes at the specified offset
DOMProcessingInstruction::__construct
DOMText::__construct
DOM


Creates a new DOMText object

DOMText
DOMText::isWhitespaceInElementContent
DOMText
PHP Manual

DOMText::__construct

(PHP 5, PHP 7)

DOMText::__construct — Creates a new DOMText object

说明

public DOMText::__construct ([ string $value ] )

Creates a new DOMText object.

参数

value

The value of the text node. If not supplied an empty text node is created.

范例

Example #1 Creating a new DOMText

<?php

$dom = new DOMDocument('1.0', 'iso-8859-1');
$element = $dom->appendChild(new DOMElement('root'));
$text = $element->appendChild(new DOMText('root value'));
echo $dom->saveXML(); /* <?xml version="1.0" encoding="iso-8859-1"?><root>root value</root> */

?>

参见

  • DOMDocument::createTextNode() - Create new text node

DOMText
DOMText::isWhitespaceInElementContent
DOMText


Indicates whether this text node contains whitespace

DOMText::__construct
DOMText::splitText
DOMText
PHP Manual

DOMText::isWhitespaceInElementContent

(PHP 5, PHP 7)

DOMText::isWhitespaceInElementContent — Indicates whether this text node contains whitespace

说明

public bool DOMText::isWhitespaceInElementContent ( void )

Indicates whether this text node contains only whitespace or it is empty. The text node is determined to contain whitespace in element content during the load of the document.

返回值

Returns TRUE if node contains zero or more whitespace characters and nothing else. Returns FALSE otherwise.

DOMText::__construct
DOMText::splitText
DOMText


Breaks this node into two nodes at the specified offset

DOMText::isWhitespaceInElementContent
DOMXPath
DOMText
PHP Manual

DOMText::splitText

(PHP 5, PHP 7)

DOMText::splitText — Breaks this node into two nodes at the specified offset

说明

public DOMText DOMText::splitText ( int $offset )

Breaks this node into two nodes at the specified offset, keeping both in the tree as siblings.

After being split, this node will contain all the content up to the offset. If the original node had a parent node, the new node is inserted as the next sibling of the original node. When the offset is equal to the length of this node, the new node has no data.

参数

offset

The offset at which to split, starting from 0.

返回值

The new node of the same type, which contains all the content at and after the offset.

DOMText::isWhitespaceInElementContent
DOMXPath
DOMText


The DOMXPath class

(PHP 5, PHP 7)

简介

Supports XPath 1.0

类摘要

DOMXPath {
/* 属性 */
public DOMDocument $document ;
/* 方法 */
public __construct ( DOMDocument $doc )
public mixed evaluate ( string $expression [, DOMNode $contextnode [, bool $registerNodeNS = true ]] )
public DOMNodeList query ( string $expression [, DOMNode $contextnode [, bool $registerNodeNS = true ]] )
public bool registerNamespace ( string $prefix , string $namespaceURI )
public void registerPhpFunctions ([ mixed $restrict ] )
}

属性

document

Table of Contents

  • DOMXPath::__construct — Creates a new DOMXPath object
  • DOMXPath::evaluate — Evaluates the given XPath expression and returns a typed result if possible
  • DOMXPath::query — Evaluates the given XPath expression
  • DOMXPath::registerNamespace — Registers the namespace with the DOMXPath object
  • DOMXPath::registerPhpFunctions — Register PHP functions as XPath functions
DOMText::splitText
DOMXPath::__construct
DOM


Creates a new DOMXPath object

DOMXPath
DOMXPath::evaluate
DOMXPath
PHP Manual

DOMXPath::__construct

(PHP 5, PHP 7)

DOMXPath::__construct — Creates a new DOMXPath object

说明

public DOMXPath::__construct ( DOMDocument $doc )

Creates a new DOMXPath object.

参数

doc

The DOMDocument associated with the DOMXPath.

DOMXPath
DOMXPath::evaluate
DOMXPath


Evaluates the given XPath expression and returns a typed result if possible

DOMXPath::__construct
DOMXPath::query
DOMXPath
PHP Manual

DOMXPath::evaluate

(PHP 5 >= 5.1.0, PHP 7)

DOMXPath::evaluate — Evaluates the given XPath expression and returns a typed result if possible

说明

public mixed DOMXPath::evaluate ( string $expression [, DOMNode $contextnode [, bool $registerNodeNS = true ]] )

Executes the given XPath expression and returns a typed result if possible.

参数

expression

The XPath expression to execute.

contextnode

The optional contextnode can be specified for doing relative XPath queries. By default, the queries are relative to the root element.

registerNodeNS

The optional registerNodeNS can be specified to disable automatic registration of the context node.

返回值

Returns a typed result if possible or a DOMNodeList containing all nodes matching the given XPath expression.

If the expression is malformed or the contextnode is invalid, DOMXPath::evaluate() returns FALSE.

更新日志

版本 | 说明
5.3.3 | The registerNodeNS parameter was added.

范例

Example #1 Getting the count of all the english books

<?php

$doc = new DOMDocument;

$doc->load('book.xml');

$xpath = new DOMXPath($doc);

$tbody = $doc->getElementsByTagName('tbody')->item(0);

// our query is relative to the tbody node
$query = 'count(row/entry[. = "en"])';

$entries = $xpath->evaluate($query, $tbody);
echo "There are $entries english books\n";

?>

以上例程会输出：

There are 2 english books

参见

  • DOMXPath::query() - Evaluates the given XPath expression

DOMXPath::__construct
DOMXPath::query
DOMXPath


Evaluates the given XPath expression

DOMXPath::evaluate
DOMXPath::registerNamespace
DOMXPath
PHP Manual

DOMXPath::query

(PHP 5, PHP 7)

DOMXPath::query — Evaluates the given XPath expression

说明

public DOMNodeList DOMXPath::query ( string $expression [, DOMNode $contextnode [, bool $registerNodeNS = true ]] )

Executes the given XPath expression.

参数

expression

The XPath expression to execute.

contextnode

The optional contextnode can be specified for doing relative XPath queries. By default, the queries are relative to the root element.

registerNodeNS

The optional registerNodeNS can be specified to disable automatic registration of the context node.

返回值

Returns a DOMNodeList containing all nodes matching the given XPath expression. Any expression which does not return nodes will return an empty DOMNodeList.

If the expression is malformed or the contextnode is invalid, DOMXPath::query() returns FALSE.

更新日志

版本 | 说明
5.3.3 | The registerNodeNS parameter was added.

范例

Example #1 Getting all the english books

<?php

$doc = new DOMDocument;

// We don't want to bother with white spaces
$doc->preserveWhiteSpace = false;

$doc->Load('book.xml');

$xpath = new DOMXPath($doc);

// We starts from the root element
$query = '//book/chapter/para/informaltable/tgroup/tbody/row/entry[. = "en"]';

$entries = $xpath->query($query);

foreach ($entries as $entry) {
    echo "Found {$entry->previousSibling->previousSibling->nodeValue}," .
         " by {$entry->previousSibling->nodeValue}\n";
}
?>

以上例程会输出：

Found The Grapes of Wrath, by John Steinbeck
Found The Pearl, by John Steinbeck

We can also use the contextnode parameter to shorten our expression:

<?php

$doc = new DOMDocument;
$doc->preserveWhiteSpace = false;

$doc->load('book.xml');

$xpath = new DOMXPath($doc);

$tbody = $doc->getElementsByTagName('tbody')->item(0);

// our query is relative to the tbody node
$query = 'row/entry[. = "en"]';

$entries = $xpath->query($query, $tbody);

foreach ($entries as $entry) {
    echo "Found {$entry->previousSibling->previousSibling->nodeValue}," .
         " by {$entry->previousSibling->nodeValue}\n";
}
?>

参见

  • DOMXPath::evaluate() - Evaluates the given XPath expression and returns a typed result if possible

DOMXPath::evaluate
DOMXPath::registerNamespace
DOMXPath


Registers the namespace with the DOMXPath object

DOMXPath::query
DOMXPath::registerPhpFunctions
DOMXPath
PHP Manual

DOMXPath::registerNamespace

(PHP 5, PHP 7)

DOMXPath::registerNamespace — Registers the namespace with the DOMXPath object

说明

public bool DOMXPath::registerNamespace ( string $prefix , string $namespaceURI )

Registers the namespaceURI and prefix with the DOMXPath object.

参数

prefix

The prefix.

namespaceURI

The URI of the namespace.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

DOMXPath::query
DOMXPath::registerPhpFunctions
DOMXPath


Register PHP functions as XPath functions

DOMXPath::registerNamespace
DOM 函数
DOMXPath
PHP Manual

DOMXPath::registerPhpFunctions

(PHP 5 >= 5.3.0, PHP 7)

DOMXPath::registerPhpFunctions — Register PHP functions as XPath functions

说明

public void DOMXPath::registerPhpFunctions ([ mixed $restrict ] )

This method enables the ability to use PHP functions within XPath expressions.

参数

restrict

Use this parameter to only allow certain functions to be called from XPath.

This parameter can be either a string (a function name) or an array of function names.

返回值

没有返回值。

范例

The following examples use book.xml which contains the following:

Example #1 book.xml

<?xml version="1.0" encoding="UTF-8"?>
<books>
 <book>
  <title>PHP Basics</title>
  <author>Jim Smith</author>
  <author>Jane Smith</author>
 </book>
 <book>
  <title>PHP Secrets</title>
  <author>Jenny Smythe</author>
 </book>
 <book>
  <title>XML basics</title>
  <author>Joe Black</author>
 </book>
</books>

Example #2 DOMXPath::registerPHPFunctions() with php:functionString

<?php
$doc = new DOMDocument;
$doc->load('book.xml');

$xpath = new DOMXPath($doc);

// Register the php: namespace (required)
$xpath->registerNamespace("php", "http://php.net/xpath");

// Register PHP functions (no restrictions)
$xpath->registerPHPFunctions();

// Call substr function on the book title
$nodes = $xpath->query('//book[php:functionString("substr", title, 0, 3) = "PHP"]');

echo "Found {$nodes->length} books starting with 'PHP':\n";
foreach ($nodes as $node) {
    $title  = $node->getElementsByTagName("title")->item(0)->nodeValue;
    $author = $node->getElementsByTagName("author")->item(0)->nodeValue;
    echo "$title by $author\n";
}

?>

以上例程的输出类似于：

Found 2 books starting with 'PHP':
PHP Basics by Jim Smith
PHP Secrets by Jenny Smythe

Example #3 DOMXPath::registerPHPFunctions() with php:function

<?php
$doc = new DOMDocument;
$doc->load('book.xml');

$xpath = new DOMXPath($doc);

// Register the php: namespace (required)
$xpath->registerNamespace("php", "http://php.net/xpath");

// Register PHP functions (has_multiple only)
$xpath->registerPHPFunctions("has_multiple");

function has_multiple($nodes) {
    // Return true if more than one author
    return count($nodes) > 1;
}
// Filter books with multiple authors
$books = $xpath->query('//book[php:function("has_multiple", author)]');

echo "Books with multiple authors:\n";
foreach ($books as $book) {
    echo $book->getElementsByTagName("title")->item(0)->nodeValue . "\n";
}

?>

以上例程的输出类似于：

Books with multiple authors:
PHP Basics

参见

  • DOMXPath::registerNamespace() - Registers the namespace with the DOMXPath object
  • DOMXPath::query() - Evaluates the given XPath expression
  • DOMXPath::evaluate() - Evaluates the given XPath expression and returns a typed result if possible

DOMXPath::registerNamespace
DOM 函数
DOMXPath


DOM 函数

Table of Contents

  • dom_import_simplexml — Gets a DOMElement object from a SimpleXMLElement object
DOMXPath::registerPhpFunctions
dom_import_simplexml
DOM


Gets a DOMElement object from a SimpleXMLElement object

DOM 函数
libxml
DOM 函数
PHP Manual

dom_import_simplexml

(PHP 5, PHP 7)

dom_import_simplexml — Gets a DOMElement object from a SimpleXMLElement object

说明

DOMElement dom_import_simplexml ( SimpleXMLElement $node )

This function takes the node node of class SimpleXML and makes it into a DOMElement node. This new object can then be used as a native DOMElement node.

参数

node

The SimpleXMLElement node.

返回值

The DOMElement node added or FALSE if any errors occur.

范例

Example #1 Import SimpleXML into DOM with dom_import_simplexml()

<?php

$sxe = simplexml_load_string('<books><book><title>blah</title></book></books>');

if ($sxe === false) {
    echo 'Error while parsing the document';
    exit;
}

$dom_sxe = dom_import_simplexml($sxe);
if (!$dom_sxe) {
    echo 'Error while converting XML';
    exit;
}

$dom = new DOMDocument('1.0');
$dom_sxe = $dom->importNode($dom_sxe, true);
$dom_sxe = $dom->appendChild($dom_sxe);

echo $dom->saveXML();

?>

参见

  • simplexml_import_dom() - Get a SimpleXMLElement object from a DOM node.

DOM 函数
libxml
DOM 函数


libxml

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • libXMLError — The libXMLError class
  • libxml 函数
    • libxml_clear_errors — Clear libxml error buffer
    • libxml_disable_entity_loader — Disable the ability to load external entities
    • libxml_get_errors — Retrieve array of errors
    • libxml_get_last_error — Retrieve last error from libxml
    • libxml_set_external_entity_loader — Changes the default external entity loader
    • libxml_set_streams_context — Set the streams context for the next libxml document load or write
    • libxml_use_internal_errors — Disable libxml errors and allow user to fetch error information as needed
dom_import_simplexml
简介
XML 操作


简介

These functions/constants are available as of PHP 5.1.0, and the following core extensions rely on this libxml extension: DOM, libxml, SimpleXML, SOAP, WDDX, XSL, XML, XMLReader, XMLRPC 和 XMLWriter.

libxml
安装／配置
libxml


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
libxml


需求

This extension requires » libxml >= 2.6.0.

安装／配置
安装
安装／配置


安装

The libxml extension is enabled by default, although it may be disabled with --disable-libxml .

The optional --with-libxml-dir directive is used to specify the location of libxml on the system that PHP is being compiled on, otherwise only the default locations are scanned. The configure process checks for libxml (specifically, xml2-config) in the following order:

  1. The location ([DIR]) specified with --with-libxml-dir ([DIR]=/bin/xml2-config)

  2. /usr/local/bin/xml2-config

  3. /usr/bin/xml2-config

If configure cannot find xml2-config in the directory specified by --with-libxml-dir , then it'll continue on and check the default locations.

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

LIBXML_BIGLINES (integer)
Allows line numbers greater than 65535 to be reported correctly.

Note:

Only available as of PHP 7.0.0 with Libxml >= 2.9.0

LIBXML_COMPACT (integer)
Activate small nodes allocation optimization. This may speed up your application without needing to change the code.

Note:

Only available in Libxml >= 2.6.21

LIBXML_DTDATTR (integer)
Default DTD attributes
LIBXML_DTDLOAD (integer)
Load the external subset
LIBXML_DTDVALID (integer)
Validate with the DTD
LIBXML_HTML_NOIMPLIED (integer)
Sets HTML_PARSE_NOIMPLIED flag, which turns off the automatic adding of implied html/body... elements.

Note:

Only available in Libxml >= 2.7.7 (as of PHP >= 5.4.0)

LIBXML_HTML_NODEFDTD (integer)
Sets HTML_PARSE_NODEFDTD flag, which prevents a default doctype being added when one is not found.

Note:

Only available in Libxml >= 2.7.8 (as of PHP >= 5.4.0)

LIBXML_NOBLANKS (integer)
Remove blank nodes
LIBXML_NOCDATA (integer)
Merge CDATA as text nodes
LIBXML_NOEMPTYTAG (integer)
Expand empty tags (e.g. <br/> to <br></br>)

Note:

This option is currently just available in the DOMDocument::save and DOMDocument::saveXML functions.

LIBXML_NOENT (integer)
Substitute entities
LIBXML_NOERROR (integer)
Suppress error reports
LIBXML_NONET (integer)
Disable network access when loading documents
LIBXML_NOWARNING (integer)
Suppress warning reports
LIBXML_NOXMLDECL (integer)
Drop the XML declaration when saving a document

Note:

Only available in Libxml >= 2.6.21

LIBXML_NSCLEAN (integer)
Remove redundant namespace declarations
LIBXML_PARSEHUGE (integer)
Sets XML_PARSE_HUGE flag, which relaxes any hardcoded limit from the parser. This affects limits like maximum depth of a document or the entity recursion, as well as limits of the size of text nodes.

Note:

Only available in Libxml >= 2.7.0 (as of PHP >= 5.3.2 and PHP >= 5.2.12)

LIBXML_PEDANTIC (integer)
Sets XML_PARSE_PEDANTIC flag, which enables pedantic error reporting.

Note:

Available as of PHP >= 5.4.0

LIBXML_XINCLUDE (integer)
Implement XInclude substitution
LIBXML_ERR_ERROR (integer)
A recoverable error
LIBXML_ERR_FATAL (integer)
A fatal error
LIBXML_ERR_NONE (integer)
No errors
LIBXML_ERR_WARNING (integer)
A simple warning
LIBXML_VERSION (integer)
libxml version like 20605 or 20617
LIBXML_DOTTED_VERSION (string)
libxml version like 2.6.5 or 2.6.17
LIBXML_SCHEMA_CREATE (integer)
Create default/fixed value nodes during XSD schema validation

Note:

Only available in Libxml >= 2.6.14 (as of PHP >= 5.5.2)

资源类型
libXMLError
libxml


The libXMLError class

(PHP 5 >= 5.1.0, PHP 7)

简介

Contains various information about errors thrown by libxml. The error codes are described within the official » xmlError API documentation.

类摘要

libXMLError {
/* 属性 */
public int $level ;
public int $code ;
public int $column ;
public string $message ;
public string $file ;
public int $line ;
}

属性

level

the severity of the error (one of the following constants: LIBXML_ERR_WARNING, LIBXML_ERR_ERROR or LIBXML_ERR_FATAL)

code

The error's code.

column

The column where the error occurred.

Note:

This property isn't entirely implemented in libxml and therefore 0 is often returned.

message

The error message, if any.

file

The filename, or empty if the XML was loaded from a string.

line

The line where the error occurred.

预定义常量
libxml 函数
libxml


libxml 函数

Table of Contents

  • libxml_clear_errors — Clear libxml error buffer
  • libxml_disable_entity_loader — Disable the ability to load external entities
  • libxml_get_errors — Retrieve array of errors
  • libxml_get_last_error — Retrieve last error from libxml
  • libxml_set_external_entity_loader — Changes the default external entity loader
  • libxml_set_streams_context — Set the streams context for the next libxml document load or write
  • libxml_use_internal_errors — Disable libxml errors and allow user to fetch error information as needed
libXMLError
libxml_clear_errors
libxml


Clear libxml error buffer

libxml 函数
libxml_disable_entity_loader
libxml 函数
PHP Manual

libxml_clear_errors

(PHP 5 >= 5.1.0, PHP 7)

libxml_clear_errors — Clear libxml error buffer

说明

void libxml_clear_errors ( void )

libxml_clear_errors() clears the libxml error buffer.

返回值

没有返回值。

参见

  • libxml_get_errors() - Retrieve array of errors
  • libxml_get_last_error() - Retrieve last error from libxml

libxml 函数
libxml_disable_entity_loader
libxml 函数


Disable the ability to load external entities

libxml_clear_errors
libxml_get_errors
libxml 函数
PHP Manual

libxml_disable_entity_loader

(PHP 5 >= 5.2.11, PHP 7)

libxml_disable_entity_loader — Disable the ability to load external entities

说明

bool libxml_disable_entity_loader ([ bool $disable = true ] )

Disable/enable the ability to load external entities.

参数

disable

Disable (TRUE) or enable (FALSE) libxml extensions (such as DOM, XMLWriter and XMLReader) to load external entities.

返回值

Returns the previous value.

参见

  • libxml_use_internal_errors() - Disable libxml errors and allow user to fetch error information as needed
  • The LIBXML_NONET constant

libxml_clear_errors
libxml_get_errors
libxml 函数


Retrieve array of errors

libxml_disable_entity_loader
libxml_get_last_error
libxml 函数
PHP Manual

libxml_get_errors

(PHP 5 >= 5.1.0, PHP 7)

libxml_get_errors — Retrieve array of errors

说明

array libxml_get_errors ( void )

Retrieve array of errors.

返回值

Returns an array with LibXMLError objects if there are any errors in the buffer, or an empty array otherwise.

范例

Example #1 A libxml_get_errors() example

This example demonstrates how to build a simple libxml error handler.

<?php

libxml_use_internal_errors(true);

$xmlstr = <<< XML
<?xml version='1.0' standalone='yes'?>
<movies>
 <movie>
  <titles>PHP: Behind the Parser</title>
 </movie>
</movies>
XML;

$doc = simplexml_load_string($xmlstr);
$xml = explode("\n", $xmlstr);

if ($doc === false) {
    $errors = libxml_get_errors();

    foreach ($errors as $error) {
        echo display_xml_error($error, $xml);
    }

    libxml_clear_errors();
}

function display_xml_error($error, $xml)
{
    $return  = $xml[$error->line - 1] . "\n";
    $return .= str_repeat('-', $error->column) . "^\n";

    switch ($error->level) {
        case LIBXML_ERR_WARNING:
            $return .= "Warning $error->code: ";
            break;
         case LIBXML_ERR_ERROR:
            $return .= "Error $error->code: ";
            break;
        case LIBXML_ERR_FATAL:
            $return .= "Fatal Error $error->code: ";
            break;
    }

    $return .= trim($error->message) .
               "\n  Line: $error->line" .
               "\n  Column: $error->column";

    if ($error->file) {
        $return .= "\n  File: $error->file";
    }

    return "$return\n\n--------------------------------------------\n\n";
}

?>

以上例程会输出：

  <titles>PHP: Behind the Parser</title>
----------------------------------------------^
Fatal Error 76: Opening and ending tag mismatch: titles line 4 and title
  Line: 4
  Column: 46

--------------------------------------------

参见

  • libxml_get_last_error() - Retrieve last error from libxml
  • libxml_clear_errors() - Clear libxml error buffer

libxml_disable_entity_loader
libxml_get_last_error
libxml 函数


Retrieve last error from libxml

libxml_get_errors
libxml_set_external_entity_loader
libxml 函数
PHP Manual

libxml_get_last_error

(PHP 5 >= 5.1.0, PHP 7)

libxml_get_last_error — Retrieve last error from libxml

说明

LibXMLError libxml_get_last_error ( void )

Retrieve last error from libxml.

返回值

Returns a LibXMLError object if there is any error in the buffer, FALSE otherwise.

参见

  • libxml_get_errors() - Retrieve array of errors
  • libxml_clear_errors() - Clear libxml error buffer

libxml_get_errors
libxml_set_external_entity_loader
libxml 函数


Changes the default external entity loader

libxml_get_last_error
libxml_set_streams_context
libxml 函数
PHP Manual

libxml_set_external_entity_loader

(PHP 5 >= 5.4.0, PHP 7)

libxml_set_external_entity_loader — Changes the default external entity loader

说明

void libxml_set_external_entity_loader ( callable $resolver_function )

Changes the default external entity loader.

参数

resolver_function

A callable that takes three arguments. Two strings, a public id and system id, and a context (an array with four keys) as the third argument. This callback should return a resource, a string from which a resource can be opened, or NULL.

返回值

没有返回值。

范例

Example #1 libxml_set_external_entity_loader() example

<?php
$xml = <<<XML
<!DOCTYPE foo PUBLIC "-//FOO/BAR" "http://example.com/foobar">
<foo>bar</foo>
XML;

$dtd = <<<DTD
<!ELEMENT foo (#PCDATA)>
DTD;

libxml_set_external_entity_loader(
    function ($public, $system, $context) use($dtd) {
        var_dump($public);
        var_dump($system);
        var_dump($context);
        $f = fopen("php://temp", "r+");
        fwrite($f, $dtd);
        rewind($f);
        return $f;
    }
);

$dd = new DOMDocument;
$r  = $dd->loadXML($xml);

var_dump($dd->validate());
?>

以上例程会输出：

string(10) "-//FOO/BAR"
string(25) "http://example.com/foobar"
array(4) {
    ["directory"]    => NULL
    ["intSubName"]   => NULL
    ["extSubURI"]    => NULL
    ["extSubSystem"] => NULL
}
bool(true)

参见

  • libxml_disable_entity_loader() - Disable the ability to load external entities

libxml_get_last_error
libxml_set_streams_context
libxml 函数


Set the streams context for the next libxml document load or write

libxml_set_external_entity_loader
libxml_use_internal_errors
libxml 函数
PHP Manual

libxml_set_streams_context

(PHP 5, PHP 7)

libxml_set_streams_context — Set the streams context for the next libxml document load or write

说明

void libxml_set_streams_context ( resource $streams_context )

Sets the streams context for the next libxml document load or write.

参数

streams_context

The stream context resource (created with stream_context_create())

返回值

没有返回值。

范例

Example #1 A libxml_set_streams_context() example

<?php

$opts = array(
    'http' => array(
        'user_agent' => 'PHP libxml agent',
    )
);

$context = stream_context_create($opts);
libxml_set_streams_context($context);

// request a file through HTTP
$doc = DOMDocument::load('http://www.example.com/file.xml');

?>

参见

  • stream_context_create() - 创建资源流上下文

libxml_set_external_entity_loader
libxml_use_internal_errors
libxml 函数


Disable libxml errors and allow user to fetch error information as needed

libxml_set_streams_context
SDO
libxml 函数
PHP Manual

libxml_use_internal_errors

(PHP 5 >= 5.1.0, PHP 7)

libxml_use_internal_errors — Disable libxml errors and allow user to fetch error information as needed

说明

bool libxml_use_internal_errors ([ bool $use_errors = false ] )

libxml_use_internal_errors() allows you to disable standard libxml errors and enable user error handling.

参数

use_errors

Enable (TRUE) user error handling or disable (FALSE) user error handling. Disabling will also clear any existing libxml errors.

返回值

This function returns the previous value of use_errors.

范例

Example #1 A libxml_use_internal_errors() example

This example demonstrates the basic usage of libxml errors and the value returned by this function.

<?php

// enable user error handling
var_dump(libxml_use_internal_errors(true));

// load the document
$doc = new DOMDocument;

if (!$doc->load('file.xml')) {
    foreach (libxml_get_errors() as $error) {
        // handle errors here
    }

    libxml_clear_errors();
}

?>

以上例程会输出：

bool(false)

参见

  • libxml_clear_errors() - Clear libxml error buffer
  • libxml_get_errors() - Retrieve array of errors

libxml_set_streams_context
SDO
libxml 函数


Service Data Objects

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • Limitations
  • 范例
    • Basic usage
    • Setting and Getting Property Values
    • Working with Sequenced Data Objects
    • Reflecting on Service Data Objects
  • SDO 函数
    • SDO_DAS_ChangeSummary::beginLogging — Begin change logging
    • SDO_DAS_ChangeSummary::endLogging — End change logging
    • SDO_DAS_ChangeSummary::getChangeType — Get the type of change made to an SDO_DataObject
    • SDO_DAS_ChangeSummary::getChangedDataObjects — Get the changed data objects from a change summary
    • SDO_DAS_ChangeSummary::getOldContainer — Get the old container for a deleted SDO_DataObject
    • SDO_DAS_ChangeSummary::getOldValues — Get the old values for a given changed SDO_DataObject
    • SDO_DAS_ChangeSummary::isLogging — Test to see whether change logging is switched on
    • SDO_DAS_DataFactory::addPropertyToType — Adds a property to a type
    • SDO_DAS_DataFactory::addType — Add a new type to a model
    • SDO_DAS_DataFactory::getDataFactory — Get a data factory instance
    • SDO_DAS_DataObject::getChangeSummary — Get a data object's change summary
    • SDO_DAS_Setting::getListIndex — Get the list index for a changed many-valued property
    • SDO_DAS_Setting::getPropertyIndex — Get the property index for a changed property
    • SDO_DAS_Setting::getPropertyName — Get the property name for a changed property
    • SDO_DAS_Setting::getValue — Get the old value for the changed property
    • SDO_DAS_Setting::isSet — Test whether a property was set prior to being modified
    • SDO_DataFactory::create — Create an SDO_DataObject
    • SDO_DataObject::clear — Clear an SDO_DataObject's properties
    • SDO_DataObject::createDataObject — Create a child SDO_DataObject
    • SDO_DataObject::getContainer — Get a data object's container
    • SDO_DataObject::getSequence — Get the sequence for a data object
    • SDO_DataObject::getTypeName — Return the name of the type for a data object.
    • SDO_DataObject::getTypeNamespaceURI — Return the namespace URI of the type for a data object.
    • SDO_Exception::getCause — Get the cause of the exception.
    • SDO_List::insert — Insert into a list
    • SDO_Model_Property::getContainingType — Get the SDO_Model_Type which contains this property
    • SDO_Model_Property::getDefault — Get the default value for the property
    • SDO_Model_Property::getName — Get the name of the SDO_Model_Property
    • SDO_Model_Property::getType — Get the SDO_Model_Type of the property
    • SDO_Model_Property::isContainment — Test to see if the property defines a containment relationship
    • SDO_Model_Property::isMany — Test to see if the property is many-valued
    • SDO_Model_ReflectionDataObject::__construct — Construct an SDO_Model_ReflectionDataObject
    • SDO_Model_ReflectionDataObject::export — Get a string describing the SDO_DataObject.
    • SDO_Model_ReflectionDataObject::getContainmentProperty — Get the property which defines the containment relationship to the data object
    • SDO_Model_ReflectionDataObject::getInstanceProperties — Get the instance properties of the SDO_DataObject
    • SDO_Model_ReflectionDataObject::getType — Get the SDO_Model_Type for the SDO_DataObject
    • SDO_Model_Type::getBaseType — Get the base type for this type
    • SDO_Model_Type::getName — Get the name of the type
    • SDO_Model_Type::getNamespaceURI — Get the namespace URI of the type
    • SDO_Model_Type::getProperties — Get the SDO_Model_Property objects defined for the type
    • SDO_Model_Type::getProperty — Get an SDO_Model_Property of the type
    • SDO_Model_Type::isAbstractType — Test to see if this SDO_Model_Type is an abstract data type
    • SDO_Model_Type::isDataType — Test to see if this SDO_Model_Type is a primitive data type
    • SDO_Model_Type::isInstance — Test for an SDO_DataObject being an instance of this SDO_Model_Type
    • SDO_Model_Type::isOpenType — Test to see if this type is an open type
    • SDO_Model_Type::isSequencedType — Test to see if this is a sequenced type
    • SDO_Sequence::getProperty — Return the property for the specified sequence index.
    • SDO_Sequence::insert — Insert into a sequence
    • SDO_Sequence::move — Move an item to another sequence position
libxml_use_internal_errors
简介
XML 操作


简介

Service Data Objects (SDOs) enable PHP applications to work with data from different sources (like a database query, an XML file, and a spreadsheet) using a single interface.

Each different kind of data source requires a Data Access Service (DAS) to provide access to the data in the data source. In your PHP application, you use a DAS to create an SDO instance that represents some data in the data source. You can then set and get values in the SDO instance using the standard SDO interface. Finally, you use a DAS to write the modified data back to a data source, typically the same one.

See the list of Data Access Services for details on those currently available. In addition to the provided DASs, SDO also provides interfaces to enable others to be implemented (see the section on SDO Data Access Services Interface for more details).

This extension is derived from concepts taken from the » Service Data Objects specification. It includes a version of the » Apache Tuscany SDO for C++ project.

The Structure of a Service Data Object

A Service Data Object instance is made up of a tree of data objects. The tree is defined by containment relationships between the data objects. For example, a Company data object might consist of a number of Department data objects and therefore the Company would have a containment relationship to the Departments.

An SDO may also have non-containment references between data objects in the tree. For example, one Employee data object might reference another Employee to identify a career mentor.

As well as data objects referencing each other, they can also have primitive properties. For example, the Company data object might have a property called "name" of type string, for holding the name of the company (for example, "Acme").

Each of these properties of a data object - containment relationships, non-containment references, or primitive properties - may be many-valued or single-valued. In the above examples, Departments is many-valued and the Company name is single-valued.

In PHP, each SDO data object is represented as a PHP object. The properties of the data object can be accessed using either object syntax or associative array syntax. We'll see some examples of this later.

SDO
安装／配置
SDO


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
SDO


需求

The SDO extension requires PHP 5.1.0 or higher. It also requires the libxml2 library. Normally libxml2 will already be installed, but if not, it can be downloaded from » http://www.xmlsoft.org/.

安装／配置
安装
安装／配置


安装

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/sca_sdo.

Note:

Earlier versions of the SDO extension required a separate shared library for the XML DAS. This is now obsolete and any references to php_sdo_das_xml.dll or sdo_das_xml.so should be removed from your php.ini.

Unix systems

  1. The three SDO components - the SDO core, the XML DAS and the Relational DAS - are packaged together with Service Component Architecture (SCA) into one PECL project, SCA_SDO, so you can download SCA and all three parts of SDO with the command:

    pecl install SCA_SDO

    This command will build the SDO shared library as well as installing the PHP files that make up SCA and the SDO Relational DAS.

    If you want to use the latest beta version, then instead run:

    pecl install SCA_SDO-beta

  2. The pecl command automatically installs the SDO module into your PHP extensions directory. To enable the SDO extension you must add the following line to php.ini:

    extension=sdo.so

    For more information about building PECL packages, consult the PECL installation section of the manual.

Building SDO on Linux

This section describes how to build the SDO core and XML DAS on Linux. You would only need to know how to do this if you wish to build a recent version that you have checked out of SVN.

  1. Change to the main extension directory: cd < wherever your sdo code is >

  2. Run phpize, which will set up the environment to compile SDO.

  3. Next, run ./configure; make; make install. Please note, you may need to login as root to install the extension.

  4. Make sure that the module is loaded by PHP, by adding extension=sdo.so to your php.ini file.

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

SDO_DAS_ChangeSummary::NONE=0 (integer)
Represents a change type of 'none'.
SDO_DAS_ChangeSummary::MODIFICATION=1 (integer)
Represents a change type of 'modification'.
SDO_DAS_ChangeSummary::ADDITION=2 (integer)
Represents a change type of 'addition'.
SDO_DAS_ChangeSummary::DELETION=3 (integer)
Represents a change type of 'deletion'.
资源类型
Limitations
SDO


Limitations

Implementation Limitations

The following are limitations in the current SDO implementation:

  1. There is no support for multi-byte character sets. This will be considered, depending on community requirements, in a Unicode-enabled version of PHP.

SDO Limitations

The following SDO 2.0 concepts are not supported in the current PHP implementation. It is not necessarily the case that these will all be added over time. Their inclusion will depend on community requirements.

  1. Bi-directional relationships.

  2. Type and property alias names.

  3. Read-only properties.

  4. The Helper classes defined in SDO 2.0 are not directly implemented. However equivalent function is provided in a more natural way for PHP. For example the function of CopyHelper::copy() is provided by applying the PHP clone keyword to a data object.

预定义常量
范例
SDO


范例

Table of Contents

  • Basic usage
  • Setting and Getting Property Values
  • Working with Sequenced Data Objects
  • Reflecting on Service Data Objects
Limitations
Basic usage
SDO


Basic usage

The examples below assume an SDO created with the schema and instance information shown below, using the XML Data Access Service.

The instance document below describes a single company, called 'MegaCorp', which contains a single department, called 'Advanced Technologies'. The Advanced Technologies department contains three employees. The company employeeOfTheMonth is referencing the second employee, 'Jane Doe'.

<?xml version="1.0" encoding="UTF-8" ?>
<company xmlns="companyNS" name="MegaCorp"
  employeeOfTheMonth="E0003">
  <departments name="Advanced Technologies" location="NY" number="123">
    <employees name="John Jones" SN="E0001"/>
    <employees name="Jane Doe" SN="E0003"/>
    <employees name="Al Smith" SN="E0004" manager="true"/>
  </departments>
</company>

The root element of the schema is a company. The company contains departments, and each department contains employees. Each element has a number of attributes to store things like name, serial number, and so on. Finally, the company also has an IDREF attribute which identifies one of the employees as the 'employeeOfTheMonth'.

<xsd:schema
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:sdo="commonj.sdo"
  xmlns:sdoxml="commonj.sdo/xml"
  xmlns:company="companyNS"
  targetNamespace="companyNS">
  <xsd:element name="company" type="company:CompanyType"/>
  <xsd:complexType name="CompanyType">
    <xsd:sequence>
      <xsd:element name="departments" type="company:DepartmentType"
        maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string"/>
    <xsd:attribute name="employeeOfTheMonth" type="xsd:IDREF"
      sdoxml:propertyType="company:EmployeeType"/>
  </xsd:complexType>
  <xsd:complexType name="DepartmentType">
    <xsd:sequence>
      <xsd:element name="employees" type="company:EmployeeType"
        maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string"/>
    <xsd:attribute name="location" type="xsd:string"/>
    <xsd:attribute name="number" type="xsd:int"/>
  </xsd:complexType>
  <xsd:complexType name="EmployeeType">
    <xsd:attribute name="name" type="xsd:string"/>
    <xsd:attribute name="SN" type="xsd:ID"/>
    <xsd:attribute name="manager" type="xsd:boolean"/>
  </xsd:complexType>
</xsd:schema>

The XML Data Access Service maps the schema to an SDO. Attributes such as "name" become primitive properties, the sequence of employees becomes a many-valued containment relationship, and so on. Note that the containment relationships are expressed as one complex type within another, whereas non-containment references are expressed in terms of ID and IDREF, with a special sdoxml:propertyType attribute specifying the type of the non-containment reference.

范例
Setting and Getting Property Values
范例


Setting and Getting Property Values

The following examples assume $company is the root of a tree of data objects created from the schema and instance document shown above.

Example #1 Access via property name

Data object properties can be accessed using the object property access syntax. The following sets the company name to 'Acme'.

<?php
$company->name = 'Acme';
?>

Example #2 Access via property name as array index

We can also access properties using associative array syntax. The simplest form of this uses the property name as the array index. For example, the following sets the company name and gets the employeeOfTheMonth.

<?php
$company['name'] = 'UltraCorp';
$eotm = $company['employeeOfTheMonth'];
?>

Example #3 Data Object iteration

We can iterate over the properties of a data object using foreach. The following iterates over the properties of the employee of the month.

<?php
  $eotm = $company->employeeOfTheMonth;
  foreach ($eotm as $name => $value) {
      echo "$name: $value\n";
  }
?>

which will output:

name: Jane Doe
SN: E0003

The 'manager' property is not output, because it has not been set.

Example #4 Access many-valued property by name

Many-valued data object properties can also be accessed using the object property name syntax. The following gets the list of departments.

<?php
$departments = $company->departments;
?>

Example #5 Many-valued element access

We can access individual elements of many-valued properties using array syntax. The following accesses the first department in the company.

<?php
$ad_tech_dept = $company->departments[0];
?>

Example #6 Many-valued property iteration

Many-valued properties can also be iterated over using foreach. The following iterates over the company's departments.

<?php
  foreach ($company->departments as $department) {
    // ...
  }
?>

Each iteration will assign the next department in the list to the variable $department.

Example #7 Chained property access

We can chain property references on a single line. The following sets and gets the name of the first department.

<?php
  $company->departments[0]->name = 'Emerging Technologies';
  $dept_name = $company->departments[0]->name;
?>

Using the associative array syntax, this is equivalent to

<?php
  $company['departments'][0]['name'] = 'Emerging Technologies';
  $dept_name = $company['departments'][0]['name'];
?>

In either case, the dept_name variable is set to 'Emerging Technologies'.

Example #8 XPath navigation

The associative array index can be an XPath-like expression. Valid expressions are defined by an augmented sub-set of XPath.

Two forms of indexing into many-valued properties are supported. The first is the standard XPath array syntax with the indexing starting at one, the second is an SDO extension to XPath with an index starting at zero. The standard syntax is:

<?php
  $jane_doe = $company["departments[1]/employees[2]"];
?>

and the SDO XPath extension syntax is:

<?php
  $jane_doe = $company["departments.0/employees.1"];
?>

Both these examples get the second employee from the first department.

Example #9 XPath querying

We can use XPath to query and identify parts of a data object based on instance data. The following retrieves the manager from the 'Advanced Technologies' department.

<?php
 $ad_tech_mgr =
  $company["departments[name='Advanced Technologies']/employees[manager=true]"];
?>

Example #10 Creating child data objects

A data object can be a factory for its child data objects. A child data object is automatically part of the data graph. The following add a new employee to the 'Advanced Technologies' department.

<?php
  $ad_tech_dept = $company["departments[name='Advanced Technologies']"];
  $new_hire = $ad_tech_dept->createDataObject('employees');
  $new_hire->name = 'John Johnson';
  $new_hire->SN = 'E0005';
  $new_hire->manager = false;
?>

Example #11 Unset a primitive property

We can use the isset() and unset() functions to test and remove items from the data object.

The following clears the name of the first department.

<?php
  unset($company->departments[0]->name);
?>

Example #12 Unset a data object

unset can also be used to remove a data object from the tree. The following example shows John Jones leaving the company.

<?php
  unset($company->departments[0]->employees[0]);
?>

Example #13 Unset a referenced data object

The following removes the 'employeeOfTheMonth' from the company. If this were a containment relationship then the employee would be removed from the company (probably not a good idea to sack your best employee each month!), but since this is a non-containment reference, the employee being referenced will remain in the department in the company, but will no longer be accessible via the employeeOfTheMonth property.

<?php
  if (isset($company->employeeOfTheMonth)) {
    unset($company->employeeOfTheMonth);
  }
?>

Example #14 Access via property index

Data object properties can be accessed via their property index using array syntax. The property index is the position at which the property's definition appears in the model (in this case the xml schema). We can see from the schema listing above that the company name attribute is the second company property (the SDO interface makes no distinction between XML attributes and elements). The following sets the company name to 'Acme', with the same result as Access via property name

<?php
  $company[1] = 'Acme';
?>

Using the index directly in this way is likely to be fragile. Normally the property name syntax should be preferred, but the property index may be required in special cases.

Basic usage
Working with Sequenced Data Objects
范例


Working with Sequenced Data Objects

Sequenced data objects are SDOs which can track property ordering across the properties of a data object. They can also contain unstructured text elements (text element which do not belong to any of the SDO's properties). Sequenced data objects are useful for working with XML documents which allow unstructured text (i.e. mixed=true) or if the elements can be interleaved (

<A/><B/><A/>
). This can occur for example when the schema defines maxOccurs>1 on a element which is a complexType with a choice order indicator.

The examples below assume an SDO created with the following schema and instance information, using the XML Data Access Service.

The schema below describes the format of a letter. The letter can optionally contain three properties; date, firstName, and lastName. The schema states mixed="true" which means that unstructured text can be interspersed between the three properties.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:letter="http://letterSchema"
  targetNamespace="http://letterSchema">
  <xsd:element name="letters" type="letter:FormLetter"/>
  <xsd:complexType name="FormLetter" mixed="true">
    <xsd:sequence>
      <xsd:element name="date" minOccurs="0" type="xsd:string"/>
      <xsd:element name="firstName" minOccurs="0" type="xsd:string"/>
      <xsd:element name="lastName" minOccurs="0" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>

The following is an instance letter document. It contains the three letter properties; date, firstName and lastName, and has unstructured text elements for the address and letter body.

<letter:letters xmlns:letter="http://letterSchema">
  <date>March 1, 2005</date>
  Mutual of Omaha
  Wild Kingdom, USA
  Dear
  <firstName>Casy</firstName>
  <lastName>Crocodile</lastName>
  Please buy more shark repellent.
  Your premium is past due.
</letter:letters>

When loaded, the letter data object will have the sequence and property indices shown in the table below:

Sequence Index | Property Index:Name | Value
0 | 0:date | March 1, 2005
1 | - | Mutual of Omaha
2 | - | Wild Kingdom, USA
3 | - | Dear
4 | 1:firstName | Casy
5 | 2:lastName | Crocodile
6 | - | Please buy more shark repellent.
7 | - | Your premium is past due.

To ensure sequence indices are maintained, sequenced data objects should be manipulated through the SDO_Sequence interface. This allows the data object's instance data to be manipulated in terms of the sequence index as opposed to the property index (shown in the table above). The following examples assume the letter instance has been loaded into a data object referenced by the variable $letter.

Example #1 Getting the SDO_Sequence interface

We obtain a data object's sequence using the getSequence() method. The follow gets the sequence for the letter data object.

<?php
  $letter_seq = $letter->getSequence();
?>

All subsequent examples assume that the $letter_seq variable has been assigned the sequence for the letter data object.

Example #2 Get/set sequence values

We can get and set individual values (including unstructured text) using the sequence index. The following sets the firstName to 'Snappy' and gets the last sequence values (the unstructured text, 'Your premium is past due.').

<?php
  $letter_seq[4] = 'Snappy';
  $text = $letter_seq[count($letter_seq) - 1];
?>

Example #3 Sequence iteration

We can iterate through the individual sequence values using foreach. The following runs through the individual values in sequence order.

<?php
foreach ($letter->getSequence() as $value) {
    // ...
}
?>

Example #4 Sequence versus Data Object

Setting values through the data object interface may result in the value not being part of the sequence. A value set through the data object will only be accessible through the sequence if the property was already part of the sequence. The following example sets the lastName through the data object and gets it through the sequence. This is fine because lastName already exists in the sequence. If it had not previously been set, then lastName would be set to 'Smith', but would not be part of the sequence.

<?php
  $letter[2] = 'Smith';
  $last_name = $letter_seq[5];
?>

Example #5 Adding to a sequence

We can add new values to a sequence using the SDO_Sequence::insert() method. The following examples assume that the 'firstName' and 'lastName' properties are initially unset.

<?php
  // Append a firstName value to the sequence
  // value: 'Smith'
  // sequence index: NULL (append)
  // propertyIdentifier: 1 (firtName property index)
  $letter_seq->insert('Smith', NULL, 1);

  // Append a lastName value to the sequence
  // value: 'Jones'
  // sequence index: NULL (append)
  // propertyIdentifier: 'lastName' (lastName property name)
  $letter_seq->insert('Jones', NULL, 'lastName');

  // Append unstructured text
  // value: 'Cancel Subscription.'
  // sequence index: absent (append)
  // propertyIdentifier: absent (unstructured text)
  $letter_seq->insert('Cancel Subscription.');

  // Insert new unstructured text.  Subsequent sequence values
  // are shifted up.
  // value: 'Care of:'
  // sequence index: 1 (insert as second element)
  // propertyIdentifier: absent (unstructured text)
  $letter_seq->insert('Care of:', 1);
?>

Example #6 Removing from a sequence

We can use the isset() and unset() functions to test and remove items from the sequence (Note: unset() currently leaves the values in the data object, but this behaviour is likely to change to also remove the data from the data object). A sequence behaves like a contiguous list; therefore, removing items from the middle will shift entries at higher indices down. The following example tests to see if the first sequence element is set and unsets it if is.

<?php
  if (isset($letter_seq[0])) {
    unset($letter_seq[0]);
  }
?>

Setting and Getting Property Values
Reflecting on Service Data Objects
范例


Reflecting on Service Data Objects

SDOs have a knowledge of the structure they have been created to represent (the model). For example, a Company SDO created using the Company XML schema above would only be permitted to contain DepartmentType data objects which in turn could only contain EmployeeType data objects.

Sometimes it is useful to be able to access this model information at runtime. For example, this could be used to automatically generate a user interface for populating a data object. The model information is accessed using reflection.

Example #1 Reflecting on a Data Object

The following example shows how we can reflect on an empty Employee data object.

<?php
  // Create the employee data object (e.g. from an XML Data Access Service)
  $employee = ...;
  $reflection = new SDO_Model_ReflectionDataObject($employee);
  print($reflection);
?>

以上例程会输出：

object(SDO_Model_ReflectionDataObject)#4 { - ROOT OBJECT - Type {
companyNS:EmployeeType[3] { commonj.sdo:String $name;
commonj.sdo:String $SN; commonj.sdo:Boolean $manager; } }

Using print on the SDO_Model_ReflectionDataObject writes out the data object's model. We can see from the output how the type companyNS:EmployeeType has three properties and we can see the names of the properties along with their types. Note, the primitive types are listed as SDO types (e.g. commonj.sdo namespace, String type). It is worth noting that this is the SDO model and when these are surfaced to an application they can be treated as the PHP equivalent types (e.g. string and boolean).

Example #2 Accessing the type information

We can query the type information of a data object using reflection. The following example checks the type corresponds to a data object rather than a primitive and then iterates through the properties of the type, writing out the name of each property ($type and $property are SDO_Model_Type and SDO_Model_Property objects, respectively).

<?php
    // Create the employee data object (e.g. from an XML Data Access Service)
    $employee = ...;
    $reflection = new SDO_Model_ReflectionDataObject($employee);
    $type = $reflection->getType();
    if (! $type->isDataType()) {
        foreach ($type->getProperties() as $property) {
            print $property->getName() . "\n";
        }
    }
?>

以上例程会输出：

name
SN
manager

Working with Sequenced Data Objects
SDO 函数
范例


SDO 函数

Data Access Services

The table below lists the currently provided SDO Data Access Services:

DAS Name | Description
SDO_DAS_XML | An XML Data Access Service supporting reading/writing SDOs as XML documents.
SDO_DAS_Relational | A PDO-based Data Access Service supporting reading/writing SDO to relational databases. Implements an optimistic concurrency policy for updates.

预定义类

SDO consists of three sets of interfaces. The first set covers those interfaces for use by typical SDO applications. These are identified by the package prefix 'SDO_'. The second set is those used to reflect on, and work with, the model of a data object. These are identified by the package prefix 'SDO_Model_'. Finally, the third set are those use by Data Access Service implementations and are identified by the package prefix 'SDO_DAS_'. The majority of SDO users will not need to use or understand the 'SDO_Model_' and 'SDO_DAS_' interfaces.

SDO Application Programmer Interface

SDO_DataObject

The main interface through which data objects are manipulated. In addition to the methods below, SDO_DataObject extends the ArrayAccess, SDO_PropertyAccess (defines __get() / __set() methods for property access overloading), Iterator, and Countable interfaces.

方法

  • getSequence - get the sequence for the data object

  • createDataObject - create a child data object

  • clear - unset the properties of a data object

  • getContainer - get the container (also known as 'parent') of this data object

  • getTypeName - get the name of the type for this data object

  • getTypeNamespaceURI - get the namespace URI of the type for this data object

SDO_Sequence

The interface through which sequenced data objects can be accessed to preserve ordering across a data object's properties and to allow unstructured text. SDO_Sequence preserves contiguous indices and therefore inserting or removing elements may shift other elements up or down. In addition to the methods below, SDO_Sequence extends the ArrayAccess, Iterator and Countable interface.

方法

  • getProperty - get the property for a given sequence index

  • move - move an element from one property index to another

  • insert - insert a new value into the sequence

SDO_List

The interface through which many-valued properties are manipulated. In addition to the method defined below, SDO_List extends ArrayAccess, Iterator and Countable. SDO_List preserves contiguous indices and therefore inserting or removing elements may shift other elements up or down.

方法

  • insert - insert a new value into the list

SDO_DataFactory

The interface through which data objects can be created. A Data Access Service is responsible for populating the model (i.e. configuring the data factory with the type and structure information for the data objects it can create.) for the factory and can then optionally return an instance of, or implement, the SDO_DataFactory interface.

方法

  • create - create a new data object

SDO_Exception

An SDO_Exception is thrown when the caller's request cannot be completed. The subclasses of SDO_Exception are:

  • SDO_PropertyNotSetException - the property specified exists but has not been set or does not have a default value

  • SDO_PropertyNotFoundException - the property specified is not part of the data object's type

  • SDO_TypeNotFoundException - the specified namespace URI or type name is unknown

  • SDO_InvalidConversionException - conversion between the types of the assignment is not possible

  • SDO_IndexOutOfBoundsException - the numeric index into a data object, sequence or list is not in the valid range

  • SDO_UnsupportedOperationException - the request cannot be completed because it is not allowed, for example an attempt to set a read-only property.

方法

One method is added to those inherited from the built in Exception class:

  • getCause - get the cause of this SDO_Exception

SDO Reflection Application Programmer Interfaces

SDO_Model_ReflectionDataObject

The main interface used to reflect on a data object instance to obtain its model type and property information. It is designed to follow the reflection pattern introduced in PHP 5.

构造函数

  • __construct - construct a new SDO_Model_ReflectionDataObject.

方法

  • export - get a string describing the data object.

  • getType - get the SDO_Model_Type for the data object.

  • getInstanceProperties - get the instance properties of the data object.

  • getContainmentProperty - get the property which defines the containment relationship to the data object.

SDO_Model_Type

The interface through which a data object's type information can be retrieved. This interface can be used to find out the type name and namespace URI of the type, whether the type allow open content, and so on.

方法

  • getName - get the name of the type.

  • getNamespaceURI - get the namespace URI of the type.

  • isInstance - test for a data object being an instance of the type.

  • getProperties - get the properties of the type.

  • getProperty - get a property of the type.

  • isDataType - test to see if this type is a primitive scalar type.

  • isSequencedType - test to see if this is a sequenced type.

  • isOpenType - test to see if this is an open type.

  • isAbstractType - test to see if this is an abstract type.

  • getBaseType - get the base type of this type (if one exists).

SDO_Model_Property

The interface through which a data object's property information can be retrieved. This interface can be used to find out the type of a property, whether a property has a default value, whether the property is contained or reference by its parent, its cardinality, and so on.

方法

  • getName - get the name of the property.

  • getType - get the type of the property.

  • isMany - test to see if the property is many-valued.

  • isContainment - test to see if the property describes a containment relationship.

  • getContainingType - get the type which contains this property.

  • getDefault - get the default value for a property.

SDO Data Access Service Developer Interfaces

SDO_DAS_DataObject

The interface through which a Data Access Service can access a data object's SDO_DAS_ChangeSummary. The change summary is used by the Data Access Service to check for conflicts when applying changes back to a data source.

方法

  • getChangeSummary - get the change summary for a data object

SDO_DAS_ChangeSummary

The interface through which the change history of a data object is accessed. The change summary holds information for any modifications on a data object which occurred since logging was activated. In the case of deletions and modifications, the old values are also held in the change summary.

If logging is no longer active then the change summary only holds changes made up to the point when logging was deactivated. Reactivating logging clears the change summary. This is useful when a set of changes have been written out by a DAS and the data object is to be reused.

方法

  • beginLogging - begin logging changes made to a data object

  • endLogging - end logging changes made to a data object

  • isLogging - test to see if change logging is on

  • getChangedDataObjects - get a list of the data objects which have been changed

  • getChangeType - get the type of change which has been made to a data object

  • getOldValues - get a list of old values for a data object

  • getOldContainer - get the old container data object for a deleted data object

SDO_DAS_Setting

The interface through which the old value for a property is accessed. A list of settings is returned by the change summary method getOldValues.

方法

  • getPropertyIndex - get the property index for the changed property

  • getPropertyName - get the property name for the changed property

  • getValue - get the old value for the changed property

  • getListIndex - get the list index for the old value if it was part of a many-valued property

  • isSet - test to see if the property was set prior to being modified

SDO_DAS_DataFactory

The interface for constructing the model for an SDO_DataObject. The SDO_DAS_DataFactory is an abstract class providing a static method which returns a concrete data factory implementation. The implementation is used by Data Access Services to create an SDO model from their model. For example, a Relational Data Access Service might create and populate an SDO_DAS_DataFactory model based on a schema for a relational database.

方法

  • getDataFactory - static methods for getting a concrete data factory instance

  • addType - add a new type to the SDO model

  • addPropertyToType - add a new property to a type definition in the SDO model

Table of Contents

  • SDO_DAS_ChangeSummary::beginLogging — Begin change logging
  • SDO_DAS_ChangeSummary::endLogging — End change logging
  • SDO_DAS_ChangeSummary::getChangeType — Get the type of change made to an SDO_DataObject
  • SDO_DAS_ChangeSummary::getChangedDataObjects — Get the changed data objects from a change summary
  • SDO_DAS_ChangeSummary::getOldContainer — Get the old container for a deleted SDO_DataObject
  • SDO_DAS_ChangeSummary::getOldValues — Get the old values for a given changed SDO_DataObject
  • SDO_DAS_ChangeSummary::isLogging — Test to see whether change logging is switched on
  • SDO_DAS_DataFactory::addPropertyToType — Adds a property to a type
  • SDO_DAS_DataFactory::addType — Add a new type to a model
  • SDO_DAS_DataFactory::getDataFactory — Get a data factory instance
  • SDO_DAS_DataObject::getChangeSummary — Get a data object's change summary
  • SDO_DAS_Setting::getListIndex — Get the list index for a changed many-valued property
  • SDO_DAS_Setting::getPropertyIndex — Get the property index for a changed property
  • SDO_DAS_Setting::getPropertyName — Get the property name for a changed property
  • SDO_DAS_Setting::getValue — Get the old value for the changed property
  • SDO_DAS_Setting::isSet — Test whether a property was set prior to being modified
  • SDO_DataFactory::create — Create an SDO_DataObject
  • SDO_DataObject::clear — Clear an SDO_DataObject's properties
  • SDO_DataObject::createDataObject — Create a child SDO_DataObject
  • SDO_DataObject::getContainer — Get a data object's container
  • SDO_DataObject::getSequence — Get the sequence for a data object
  • SDO_DataObject::getTypeName — Return the name of the type for a data object.
  • SDO_DataObject::getTypeNamespaceURI — Return the namespace URI of the type for a data object.
  • SDO_Exception::getCause — Get the cause of the exception.
  • SDO_List::insert — Insert into a list
  • SDO_Model_Property::getContainingType — Get the SDO_Model_Type which contains this property
  • SDO_Model_Property::getDefault — Get the default value for the property
  • SDO_Model_Property::getName — Get the name of the SDO_Model_Property
  • SDO_Model_Property::getType — Get the SDO_Model_Type of the property
  • SDO_Model_Property::isContainment — Test to see if the property defines a containment relationship
  • SDO_Model_Property::isMany — Test to see if the property is many-valued
  • SDO_Model_ReflectionDataObject::__construct — Construct an SDO_Model_ReflectionDataObject
  • SDO_Model_ReflectionDataObject::export — Get a string describing the SDO_DataObject.
  • SDO_Model_ReflectionDataObject::getContainmentProperty — Get the property which defines the containment relationship to the data object
  • SDO_Model_ReflectionDataObject::getInstanceProperties — Get the instance properties of the SDO_DataObject
  • SDO_Model_ReflectionDataObject::getType — Get the SDO_Model_Type for the SDO_DataObject
  • SDO_Model_Type::getBaseType — Get the base type for this type
  • SDO_Model_Type::getName — Get the name of the type
  • SDO_Model_Type::getNamespaceURI — Get the namespace URI of the type
  • SDO_Model_Type::getProperties — Get the SDO_Model_Property objects defined for the type
  • SDO_Model_Type::getProperty — Get an SDO_Model_Property of the type
  • SDO_Model_Type::isAbstractType — Test to see if this SDO_Model_Type is an abstract data type
  • SDO_Model_Type::isDataType — Test to see if this SDO_Model_Type is a primitive data type
  • SDO_Model_Type::isInstance — Test for an SDO_DataObject being an instance of this SDO_Model_Type
  • SDO_Model_Type::isOpenType — Test to see if this type is an open type
  • SDO_Model_Type::isSequencedType — Test to see if this is a sequenced type
  • SDO_Sequence::getProperty — Return the property for the specified sequence index.
  • SDO_Sequence::insert — Insert into a sequence
  • SDO_Sequence::move — Move an item to another sequence position
Reflecting on Service Data Objects
SDO_DAS_ChangeSummary::beginLogging
SDO


Begin change logging

SDO 函数
SDO_DAS_ChangeSummary::endLogging
SDO 函数
PHP Manual

SDO_DAS_ChangeSummary::beginLogging

(^)

SDO_DAS_ChangeSummary::beginLogging — Begin change logging

说明

void SDO_DAS_ChangeSummary::beginLogging ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Begin logging changes made to the SDO_DataObject.

参数

None.

返回值

None.

SDO 函数
SDO_DAS_ChangeSummary::endLogging
SDO 函数


End change logging

SDO_DAS_ChangeSummary::beginLogging
SDO_DAS_ChangeSummary::getChangeType
SDO 函数
PHP Manual

SDO_DAS_ChangeSummary::endLogging

(^)

SDO_DAS_ChangeSummary::endLogging — End change logging

说明

void SDO_DAS_ChangeSummary::endLogging ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

End logging changes made to an SDO_DataObject.

参数

None.

返回值

None.

SDO_DAS_ChangeSummary::beginLogging
SDO_DAS_ChangeSummary::getChangeType
SDO 函数


Get the type of change made to an SDO_DataObject

SDO_DAS_ChangeSummary::endLogging
SDO_DAS_ChangeSummary::getChangedDataObjects
SDO 函数
PHP Manual

SDO_DAS_ChangeSummary::getChangeType

(^)

SDO_DAS_ChangeSummary::getChangeType — Get the type of change made to an SDO_DataObject

说明

int SDO_DAS_ChangeSummary::getChangeType ( SDO_DataObject $dataObject )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Get the type of change which has been made to the supplied SDO_DataObject.

参数

dataObject

The SDO_DataObject which has been changed.

返回值

The type of change which has been made. The change type is expressed as an enumeration and will be one of the following four values:

  • SDO_DAS_ChangeSummary::NONE

  • SDO_DAS_ChangeSummary::MODIFICATION

  • SDO_DAS_ChangeSummary::ADDITION

  • SDO_DAS_ChangeSummary::DELETION

SDO_DAS_ChangeSummary::endLogging
SDO_DAS_ChangeSummary::getChangedDataObjects
SDO 函数


Get the changed data objects from a change summary

SDO_DAS_ChangeSummary::getChangeType
SDO_DAS_ChangeSummary::getOldContainer
SDO 函数
PHP Manual

SDO_DAS_ChangeSummary::getChangedDataObjects

(^)

SDO_DAS_ChangeSummary::getChangedDataObjects — Get the changed data objects from a change summary

说明

SDO_List SDO_DAS_ChangeSummary::getChangedDataObjects ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Get an SDO_List of the SDO_DataObjects which have been changed. These data objects can then be used to identify the types of change made to each, along with the old values.

参数

None.

返回值

Returns an SDO_List of SDO_DataObjects.

SDO_DAS_ChangeSummary::getChangeType
SDO_DAS_ChangeSummary::getOldContainer
SDO 函数


Get the old container for a deleted SDO_DataObject

SDO_DAS_ChangeSummary::getChangedDataObjects
SDO_DAS_ChangeSummary::getOldValues
SDO 函数
PHP Manual

SDO_DAS_ChangeSummary::getOldContainer

(^)

SDO_DAS_ChangeSummary::getOldContainer — Get the old container for a deleted SDO_DataObject

说明

SDO_DataObject SDO_DAS_ChangeSummary::getOldContainer ( SDO_DataObject $data_object )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Get the old container (SDO_DataObject) for a deleted SDO_DataObject.

参数

data_object

The SDO_DataObject which has been deleted and whose container we wish to identify.

返回值

The old containing data object of the deleted SDO_DataObject.

SDO_DAS_ChangeSummary::getChangedDataObjects
SDO_DAS_ChangeSummary::getOldValues
SDO 函数


Get the old values for a given changed SDO_DataObject

SDO_DAS_ChangeSummary::getOldContainer
SDO_DAS_ChangeSummary::isLogging
SDO 函数
PHP Manual

SDO_DAS_ChangeSummary::getOldValues

(^)

SDO_DAS_ChangeSummary::getOldValues — Get the old values for a given changed SDO_DataObject

说明

SDO_List SDO_DAS_ChangeSummary::getOldValues ( SDO_DataObject $data_object )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Get a list of the old values for a given changed SDO_DataObject. Returns a list of SDO_DAS_Settings describing the old values for the changed properties of the SDO_DataObject.

参数

data_object

The data object which has been changed.

返回值

A list of SDO_DAS_Settings describing the old values for the changed properties of the SDO_DataObject. If the change type is SDO_DAS_ChangeSummary::ADDITION, this list is empty.

SDO_DAS_ChangeSummary::getOldContainer
SDO_DAS_ChangeSummary::isLogging
SDO 函数


Test to see whether change logging is switched on

SDO_DAS_ChangeSummary::getOldValues
SDO_DAS_DataFactory::addPropertyToType
SDO 函数
PHP Manual

SDO_DAS_ChangeSummary::isLogging

(^)

SDO_DAS_ChangeSummary::isLogging — Test to see whether change logging is switched on

说明

bool SDO_DAS_ChangeSummary::isLogging ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Test to see whether change logging is switched on.

参数

None.

返回值

Returns TRUE if change logging is on, otherwise returns FALSE.

SDO_DAS_ChangeSummary::getOldValues
SDO_DAS_DataFactory::addPropertyToType
SDO 函数


Adds a property to a type

SDO_DAS_ChangeSummary::isLogging
SDO_DAS_DataFactory::addType
SDO 函数
PHP Manual

SDO_DAS_DataFactory::addPropertyToType

(^)

SDO_DAS_DataFactory::addPropertyToType — Adds a property to a type

说明

void SDO_DAS_DataFactory::addPropertyToType ( string $parent_type_namespace_uri , string $parent_type_name , string $property_name , string $type_namespace_uri , string $type_name [, array $options ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Adds a property to a type. The type must already be known to the SDO_DAS_DataFactory (i.e. have been added using addType()). The property becomes a property of the type. This is how the graph model for the structure of an SDO_DataObject is built.

参数

parent_type_namespace_uri

The namespace URI for the parent type.

parent_type_name

The type name for the parent type.

property_name

The name by which the property will be known in the parent type.

type_namespace_uri

The namespace URI for the type of the property.

type_name

The type name for the type of the property

options

This array holds one or more key=>value pairs to set attribute values for the property. The optional keywords are:

many

A flag to say whether the property is many-valued. A value of 'true' adds the property as a many-valued property (default is 'false').

readOnly

A flag to say whether the property is read-only. A value of 'true' means the property value cannot be modified through the SDO application APIs (default is 'false').

containment

A flag to say whether the property is contained by the parent. A value of 'true' means the property is contained by the parent. A value of 'false' results in a non-containment reference (default is 'true'). This flag is only interpreted when adding properties which are data object types, otherwise it is ignored.

default

A default value for the property. Omitting this key means that the property does not have a default value. A property can only have a default value if it is a single-valued data type (primitive).

返回值

None.

更新日志

版本 | 说明
0.5.2 | Optional parameters many, readOnly, and containment deprecated in favour of the options array.

范例

Example #1 A SDO_DAS_DataFactory::addPropertyToType() example

The following adds an 'addressline' property to a Person type. The person type is identified by its namespace, 'PersonNS', and type name, 'PersonType'. The type of the 'addressline' property is a many-valued SDO data type (primitive) with namespace 'commonj.sdo' and type name 'String'.

<?php
  $df->addPropertyToType('PersonNS', 'PersonType',
    'addressline', 'commonj.sdo', 'String', array('many'=>true));
?>

SDO_DAS_ChangeSummary::isLogging
SDO_DAS_DataFactory::addType
SDO 函数


Add a new type to a model

SDO_DAS_DataFactory::addPropertyToType
SDO_DAS_DataFactory::getDataFactory
SDO 函数
PHP Manual

SDO_DAS_DataFactory::addType

(^)

SDO_DAS_DataFactory::addType — Add a new type to a model

说明

void SDO_DAS_DataFactory::addType ( string $type_namespace_uri , string $type_name [, array $options ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Add a new type to the SDO_DAS_DataFactory, defined by its namespace and type name. The type becomes part of the model of data objects that the data factory can create.

参数

type_namespace_uri

The namespace of the type.

type_name

The name of the type.

options

This array holds one or more key=>value pairs to set attribute values for the type. The optional keywords are:

open

A flag to say whether the type is open. An SDO_DataObject whose type is open can have properties added to them which are not described by the type. This capability is used to support working with XML documents whose schema support open content such as that described by an <xsd:any> element. The default value is 'false'.

sequenced

A flag to say whether the type is sequenced. Sequenced types can have the ordering across properties preserved and can contain unstructured text. The default value is 'false'. For more information on sequenced types see the section on Working with Sequenced Data Objects.

basetype

If specified, an array of namespace URI and type name strings for the type from which this type is derived. An example of the use of base types is when a type derived in an XML schema inherits from another type by using <extension base="...">.

返回值

None.

范例

Example #1 A SDO_DAS_DataFactory::addType() example

The following adds a new data object type of 'CompanyType' where that type belongs to the namespace 'CompanyNS'.

<?php
  $df->addType('CompanyNS', 'CompanyType');
?>

SDO_DAS_DataFactory::addPropertyToType
SDO_DAS_DataFactory::getDataFactory
SDO 函数


Get a data factory instance

SDO_DAS_DataFactory::addType
SDO_DAS_DataObject::getChangeSummary
SDO 函数
PHP Manual

SDO_DAS_DataFactory::getDataFactory

(^)

SDO_DAS_DataFactory::getDataFactory — Get a data factory instance

说明

SDO_DAS_DataFactory SDO_DAS_DataFactory::getDataFactory ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Static method to get an instance of an SDO_DAS_DataFactory. This instance is initially only configured with the basic SDO types. A Data Access Service is responsible for populating the data factory model and then allowing PHP applications to create SDOs based on the model through the SDO_DataFactory interface. PHP applications should always obtain a data factory from a configured Data Access Service, not through this interface.

参数

None.

返回值

Returns an SDO_DAS_DataFactory.

SDO_DAS_DataFactory::addType
SDO_DAS_DataObject::getChangeSummary
SDO 函数


Get a data object's change summary

SDO_DAS_DataFactory::getDataFactory
SDO_DAS_Setting::getListIndex
SDO 函数
PHP Manual

SDO_DAS_DataObject::getChangeSummary

(^)

SDO_DAS_DataObject::getChangeSummary — Get a data object's change summary

说明

SDO_DAS_ChangeSummary SDO_DAS_DataObject::getChangeSummary ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Get the SDO_DAS_ChangeSummary for an SDO_DAS_DataObject, or NULL if it does not have one.

参数

None.

返回值

Returns the SDO_DAS_ChangeSummary for an SDO_DAS_DataObject, or NULL if it does not have one.

SDO_DAS_DataFactory::getDataFactory
SDO_DAS_Setting::getListIndex
SDO 函数


Get the list index for a changed many-valued property

SDO_DAS_DataObject::getChangeSummary
SDO_DAS_Setting::getPropertyIndex
SDO 函数
PHP Manual

SDO_DAS_Setting::getListIndex

(^)

SDO_DAS_Setting::getListIndex — Get the list index for a changed many-valued property

说明

int SDO_DAS_Setting::getListIndex ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Get the list index for a modification made to an element of a many-valued property. For example, if we modified the third element of a many-valued property we could obtain an SDO_DAS_Setting from the change summary corresponding to that modification. A call to getListIndex() on that setting would return the value 2 (lists are indexed from zero).

参数

None.

返回值

The list index for the element of the many-valued property which has been changed.

SDO_DAS_DataObject::getChangeSummary
SDO_DAS_Setting::getPropertyIndex
SDO 函数


Get the property index for a changed property

SDO_DAS_Setting::getListIndex
SDO_DAS_Setting::getPropertyName
SDO 函数
PHP Manual

SDO_DAS_Setting::getPropertyIndex

(^)

SDO_DAS_Setting::getPropertyIndex — Get the property index for a changed property

说明

int SDO_DAS_Setting::getPropertyIndex ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Returns the property index for the changed property. This index identifies the property which was modified in data object.

参数

None.

返回值

The property index for a changed property.

SDO_DAS_Setting::getListIndex
SDO_DAS_Setting::getPropertyName
SDO 函数


Get the property name for a changed property

SDO_DAS_Setting::getPropertyIndex
SDO_DAS_Setting::getValue
SDO 函数
PHP Manual

SDO_DAS_Setting::getPropertyName

(^)

SDO_DAS_Setting::getPropertyName — Get the property name for a changed property

说明

string SDO_DAS_Setting::getPropertyName ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Returns the property name for the changed property. This name identifies the property which was modified in data object.

参数

None.

返回值

The property name for a changed property.

SDO_DAS_Setting::getPropertyIndex
SDO_DAS_Setting::getValue
SDO 函数


Get the old value for the changed property

SDO_DAS_Setting::getPropertyName
SDO_DAS_Setting::isSet
SDO 函数
PHP Manual

SDO_DAS_Setting::getValue

(^)

SDO_DAS_Setting::getValue — Get the old value for the changed property

说明

mixed SDO_DAS_Setting::getValue ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Returns the old value for the changed property. This can be used by a Data Access Service when writing updates to a data source. The DAS uses the old value to detect conflicts by comparing it with the current value in the data source. If they do not match, then the data source has been updated since the data object was originally populated, and therefore writing any new updates risks compromising the integrity of the data.

参数

None.

返回值

Returns the old value of the changed property.

SDO_DAS_Setting::getPropertyName
SDO_DAS_Setting::isSet
SDO 函数


Test whether a property was set prior to being modified

SDO_DAS_Setting::getValue
SDO_DataFactory::create
SDO 函数
PHP Manual

SDO_DAS_Setting::isSet

(^)

SDO_DAS_Setting::isSet — Test whether a property was set prior to being modified

说明

bool SDO_DAS_Setting::isSet ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Test whether a property was set prior to being modified. If it was set prior to being modified then the SDO_DAS_Setting will also contain the old value.

参数

None.

返回值

Returns TRUE if the property was set prior to being modified, otherwise returns FALSE.

SDO_DAS_Setting::getValue
SDO_DataFactory::create
SDO 函数


Create an SDO_DataObject

SDO_DAS_Setting::isSet
SDO_DataObject::clear
SDO 函数
PHP Manual

SDO_DataFactory::create

(^)

SDO_DataFactory::create — Create an SDO_DataObject

说明

void SDO_DataFactory::create ( string $type_namespace_uri , string $type_name )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Create a new SDO_DataObject given the data object's namespace URI and type name.

参数

type_namespace_uri

The namespace of the type.

type_name

The name of the type.

返回值

Returns the newly created SDO_DataObject.

错误／异常

SDO_TypeNotFoundException

Thrown if the namespaceURI and typeName do not correspond to a type known to this data factory.

SDO_DAS_Setting::isSet
SDO_DataObject::clear
SDO 函数


Clear an SDO_DataObject's properties

SDO_DataFactory::create
SDO_DataObject::createDataObject
SDO 函数
PHP Manual

SDO_DataObject::clear

(^)

SDO_DataObject::clear — Clear an SDO_DataObject's properties

说明

void SDO_DataObject::clear ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Clear an SDO_DataObject's properties. Read-only properties are unaffected. Subsequent calls to isset() for the data object will return FALSE.

参数

None.

返回值

No return values.

SDO_DataFactory::create
SDO_DataObject::createDataObject
SDO 函数


Create a child SDO_DataObject

SDO_DataObject::clear
SDO_DataObject::getContainer
SDO 函数
PHP Manual

SDO_DataObject::createDataObject

(^)

SDO_DataObject::createDataObject — Create a child SDO_DataObject

说明

SDO_DataObject SDO_DataObject::createDataObject ( mixed $identifier )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Create a child SDO_DataObject of the default type for the property identified. The data object is automatically inserted into the tree and a reference to it is returned.

参数

identifier

Identifies the property for the data object type to be created. Can be either a property name (string), a property index (int), or an SDO_Model_Property.

返回值

Returns the newly created SDO_DataObject.

错误／异常

SDO_PropertyNotFoundException

Thrown if the identifier does not correspond to a property of the data object.

SDO_DataObject::clear
SDO_DataObject::getContainer
SDO 函数


Get a data object's container

SDO_DataObject::createDataObject
SDO_DataObject::getSequence
SDO 函数
PHP Manual

SDO_DataObject::getContainer

(^)

SDO_DataObject::getContainer — Get a data object's container

说明

SDO_DataObject SDO_DataObject::getContainer ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Get the data object which contains this data object.

参数

None.

返回值

Returns the SDO_DataObject which contains this SDO_DataObject, or returns NULL if this is a root SDO_DataObject (i.e. it has no container).

SDO_DataObject::createDataObject
SDO_DataObject::getSequence
SDO 函数


Get the sequence for a data object

SDO_DataObject::getContainer
SDO_DataObject::getTypeName
SDO 函数
PHP Manual

SDO_DataObject::getSequence

(^)

SDO_DataObject::getSequence — Get the sequence for a data object

说明

SDO_Sequence SDO_DataObject::getSequence ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Return the SDO_Sequence for this SDO_DataObject. Accessing the SDO_DataObject through the SDO_Sequence interface acts on the same SDO_DataObject instance data, but preserves ordering across properties.

参数

None.

返回值

The SDO_Sequence for this SDO_DataObject, or returns NULL if the SDO_DataObject is not of a type which can have a sequence.

SDO_DataObject::getContainer
SDO_DataObject::getTypeName
SDO 函数


Return the name of the type for a data object.

SDO_DataObject::getSequence
SDO_DataObject::getTypeNamespaceURI
SDO 函数
PHP Manual

SDO_DataObject::getTypeName

(^)

SDO_DataObject::getTypeName — Return the name of the type for a data object.

说明

string SDO_DataObject::getTypeName ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Return the name of the type for a data object. A convenience method corresponding to SDO_Model_ReflectionDataObject::getType().getName().

参数

None.

返回值

The name of the type for the data object.

SDO_DataObject::getSequence
SDO_DataObject::getTypeNamespaceURI
SDO 函数


Return the namespace URI of the type for a data object.

SDO_DataObject::getTypeName
SDO_Exception::getCause
SDO 函数
PHP Manual

SDO_DataObject::getTypeNamespaceURI

(^)

SDO_DataObject::getTypeNamespaceURI — Return the namespace URI of the type for a data object.

说明

string SDO_DataObject::getTypeNamespaceURI ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Return the namespace URI of the type for a data object. A convenience method corresponding to SDO_Model_ReflectionDataObject::getType().getNamespaceURI().

参数

None.

返回值

The namespace URI of the type for the data object.

SDO_DataObject::getTypeName
SDO_Exception::getCause
SDO 函数


Get the cause of the exception.

SDO_DataObject::getTypeNamespaceURI
SDO_List::insert
SDO 函数
PHP Manual

SDO_Exception::getCause

(^)

SDO_Exception::getCause — Get the cause of the exception.

说明

mixed SDO_Exception::getCause ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Returns the cause of this exception or NULL if the cause is nonexistent or unknown. Typically the cause will be an SDO_CPPException object, which may be used to obtain additional diagnostic information.

参数

None.

返回值

Returns the cause of this exception or NULL if the cause is nonexistent or unknown.

SDO_DataObject::getTypeNamespaceURI
SDO_List::insert
SDO 函数


Insert into a list

SDO_Exception::getCause
SDO_Model_Property::getContainingType
SDO 函数
PHP Manual

SDO_List::insert

(^)

SDO_List::insert — Insert into a list

说明

void SDO_List::insert ( mixed $value [, int $index ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Insert a new element at a specified position in the list. All subsequent list items are moved up.

参数

value

The new value to be inserted. This can be either a primitive or an SDO_DataObject.

index

The position at which to insert the new element. If this argument is not specified then the new value will be appended.

返回值

None.

错误／异常

SDO_IndexOutOfBoundsException

Thrown if the list index is less than zero or greater than the size of the list.

SDO_InvalidConversionException

Thrown if the type of the new value does not match the type for the list (e.g. the type of the many-valued property that the list represents).

SDO_Exception::getCause
SDO_Model_Property::getContainingType
SDO 函数


Get the SDO_Model_Type which contains this property

SDO_List::insert
SDO_Model_Property::getDefault
SDO 函数
PHP Manual

SDO_Model_Property::getContainingType

(^)

SDO_Model_Property::getContainingType — Get the SDO_Model_Type which contains this property

说明

SDO_Model_Type SDO_Model_Property::getContainingType ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Returns the SDO_Model_Type which contains this property.

参数

None.

返回值

Returns the SDO_Model_Type which contains this property.

SDO_List::insert
SDO_Model_Property::getDefault
SDO 函数


Get the default value for the property

SDO_Model_Property::getContainingType
SDO_Model_Property::getName
SDO 函数
PHP Manual

SDO_Model_Property::getDefault

(^)

SDO_Model_Property::getDefault — Get the default value for the property

说明

mixed SDO_Model_Property::getDefault ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Returns the default value for the property. Only primitive data type properties can have default values.

参数

None.

返回值

Returns the default value for the property.

SDO_Model_Property::getContainingType
SDO_Model_Property::getName
SDO 函数


Get the name of the SDO_Model_Property

SDO_Model_Property::getDefault
SDO_Model_Property::getType
SDO 函数
PHP Manual

SDO_Model_Property::getName

(^)

SDO_Model_Property::getName — Get the name of the SDO_Model_Property

说明

string SDO_Model_Property::getName ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Returns the name of the SDO_Model_Property.

参数

None.

返回值

Returns the name of the SDO_Model_Property.

SDO_Model_Property::getDefault
SDO_Model_Property::getType
SDO 函数


Get the SDO_Model_Type of the property

SDO_Model_Property::getName
SDO_Model_Property::isContainment
SDO 函数
PHP Manual

SDO_Model_Property::getType

(^)

SDO_Model_Property::getType — Get the SDO_Model_Type of the property

说明

SDO_Model_Type SDO_Model_Property::getType ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Get the SDO_Model_Type of the property. The SDO_Model_Type describes the type information for the property, such as its type name, namespace URI, whether it is a primitive data type, and so on.

参数

None.

返回值

Returns the SDO_Model_Type describing the property's type information.

SDO_Model_Property::getName
SDO_Model_Property::isContainment
SDO 函数


Test to see if the property defines a containment relationship

SDO_Model_Property::getType
SDO_Model_Property::isMany
SDO 函数
PHP Manual

SDO_Model_Property::isContainment

(^)

SDO_Model_Property::isContainment — Test to see if the property defines a containment relationship

说明

bool SDO_Model_Property::isContainment ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Test to see if the property corresponds to a containment relationship. Returns TRUE if the property defines a containment relationship, or FALSE if it is reference.

参数

None.

返回值

Returns TRUE if the property defines a containment relationship, or FALSE if it is reference.

SDO_Model_Property::getType
SDO_Model_Property::isMany
SDO 函数


Test to see if the property is many-valued

SDO_Model_Property::isContainment
SDO_Model_ReflectionDataObject::__construct
SDO 函数
PHP Manual

SDO_Model_Property::isMany

(^)

SDO_Model_Property::isMany — Test to see if the property is many-valued

说明

bool SDO_Model_Property::isMany ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Test to see if the property is many-valued. Returns TRUE if this is a many-valued property, otherwise returns FALSE.

参数

None.

返回值

Returns TRUE if this is a many-valued property, otherwise returns FALSE.

SDO_Model_Property::isContainment
SDO_Model_ReflectionDataObject::__construct
SDO 函数


Construct an SDO_Model_ReflectionDataObject

SDO_Model_Property::isMany
SDO_Model_ReflectionDataObject::export
SDO 函数
PHP Manual

SDO_Model_ReflectionDataObject::__construct

(^)

SDO_Model_ReflectionDataObject::__construct — Construct an SDO_Model_ReflectionDataObject

说明

SDO_Model_ReflectionDataObject::__construct ( SDO_DataObject $data_object )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Construct an SDO_Model_ReflectionDataObject to reflect on an SDO_DataObject. Reflecting on an SDO_DataObject gives access to information about its model. The model contains information such as the data object's type, and whether that type is sequenced (preserves ordering across properties) or open (each instance can have its model extended). The model also holds information about the data object's properties, any default values they may have, and so on.

参数

data_object

The SDO_DataObject being reflected upon.

返回值

None.

SDO_Model_Property::isMany
SDO_Model_ReflectionDataObject::export
SDO 函数


Get a string describing the SDO_DataObject.

SDO_Model_ReflectionDataObject::__construct
SDO_Model_ReflectionDataObject::getContainmentProperty
SDO 函数
PHP Manual

SDO_Model_ReflectionDataObject::export

(^)

SDO_Model_ReflectionDataObject::export — Get a string describing the SDO_DataObject.

说明

mixed SDO_Model_ReflectionDataObject::export ( SDO_Model_ReflectionDataObject $rdo [, bool $return ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Get a string describing the SDO_DataObject. The default behaviour is to print the output, but if TRUE is specified for return, it is returned as a string.

参数

rdo

An SDO_Model_ReflectionDataObject.

return

If TRUE, return the output as a string, otherwise print it.

返回值

Returns the output if TRUE is specified for return, otherwise NULL.

SDO_Model_ReflectionDataObject::__construct
SDO_Model_ReflectionDataObject::getContainmentProperty
SDO 函数


Get the property which defines the containment relationship to the data object

SDO_Model_ReflectionDataObject::export
SDO_Model_ReflectionDataObject::getInstanceProperties
SDO 函数
PHP Manual

SDO_Model_ReflectionDataObject::getContainmentProperty

(^)

SDO_Model_ReflectionDataObject::getContainmentProperty — Get the property which defines the containment relationship to the data object

说明

SDO_Model_Property SDO_Model_ReflectionDataObject::getContainmentProperty ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Get the SDO_Model_Property that contains the SDO_DataObject. This method is used to navigate up to the parent's property which contains the data object which has been reflected upon.

参数

None.

返回值

Returns the container's SDO_Model_Property which references the SDO_DataObject, or NULL if it is a root SDO_DataObject.

SDO_Model_ReflectionDataObject::export
SDO_Model_ReflectionDataObject::getInstanceProperties
SDO 函数


Get the instance properties of the SDO_DataObject

SDO_Model_ReflectionDataObject::getContainmentProperty
SDO_Model_ReflectionDataObject::getType
SDO 函数
PHP Manual

SDO_Model_ReflectionDataObject::getInstanceProperties

(^)

SDO_Model_ReflectionDataObject::getInstanceProperties — Get the instance properties of the SDO_DataObject

说明

array SDO_Model_ReflectionDataObject::getInstanceProperties ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Get the instance properties for the SDO_DataObject. The instance properties consist of all the properties defined on the data object's type, plus any instance properties from open content (if the data object is an open type).

参数

None.

返回值

An array of SDO_Model_Property objects.

SDO_Model_ReflectionDataObject::getContainmentProperty
SDO_Model_ReflectionDataObject::getType
SDO 函数


Get the SDO_Model_Type for the SDO_DataObject

SDO_Model_ReflectionDataObject::getInstanceProperties
SDO_Model_Type::getBaseType
SDO 函数
PHP Manual

SDO_Model_ReflectionDataObject::getType

(^)

SDO_Model_ReflectionDataObject::getType — Get the SDO_Model_Type for the SDO_DataObject

说明

SDO_Model_Type SDO_Model_ReflectionDataObject::getType ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Returns the SDO_Model_Type for the SDO_DataObject. The SDO_Model_Type holds all the information about the data object's type, such as namespace URI, type name, whether it is a primitive data type, and so on.

参数

None.

返回值

Returns the SDO_Model_Type for the SDO_DataObject.

SDO_Model_ReflectionDataObject::getInstanceProperties
SDO_Model_Type::getBaseType
SDO 函数


Get the base type for this type

SDO_Model_ReflectionDataObject::getType
SDO_Model_Type::getName
SDO 函数
PHP Manual

SDO_Model_Type::getBaseType

(^)

SDO_Model_Type::getBaseType — Get the base type for this type

说明

SDO_Model_Type SDO_Model_Type::getBaseType ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Get the base type for this type. Returns the SDO_Model_Type for the base type if this type inherits from another, otherwise returns NULL. An example of when base types occur is when a type defined in XML schema inherits from another type by using

<extension base="...">
.

参数

None.

返回值

Returns the SDO_Model_Type for the base type if this type inherits from another, otherwise returns NULL.

SDO_Model_ReflectionDataObject::getType
SDO_Model_Type::getName
SDO 函数


Get the name of the type

SDO_Model_Type::getBaseType
SDO_Model_Type::getNamespaceURI
SDO 函数
PHP Manual

SDO_Model_Type::getName

(^)

SDO_Model_Type::getName — Get the name of the type

说明

string SDO_Model_Type::getName ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Returns the name of the type. The combination of type name and namespace URI is used to uniquely identify the type.

参数

None.

返回值

Returns the name of the type.

SDO_Model_Type::getBaseType
SDO_Model_Type::getNamespaceURI
SDO 函数


Get the namespace URI of the type

SDO_Model_Type::getName
SDO_Model_Type::getProperties
SDO 函数
PHP Manual

SDO_Model_Type::getNamespaceURI

(^)

SDO_Model_Type::getNamespaceURI — Get the namespace URI of the type

说明

string SDO_Model_Type::getNamespaceURI ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Returns the namespace URI of the type. The combination of namespace URI and type name is used to uniquely identify the type.

参数

None.

返回值

Returns the namespace URI of the type.

SDO_Model_Type::getName
SDO_Model_Type::getProperties
SDO 函数


Get the SDO_Model_Property objects defined for the type

SDO_Model_Type::getNamespaceURI
SDO_Model_Type::getProperty
SDO 函数
PHP Manual

SDO_Model_Type::getProperties

(^)

SDO_Model_Type::getProperties — Get the SDO_Model_Property objects defined for the type

说明

array SDO_Model_Type::getProperties ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Get an array of SDO_Model_Property objects describing the properties defined for the SDO_Model_Type. Each SDO_Model_Property holds information such as the property name, default value, and so on.

参数

None.

返回值

Returns an array of SDO_Model_Property objects.

SDO_Model_Type::getNamespaceURI
SDO_Model_Type::getProperty
SDO 函数


Get an SDO_Model_Property of the type

SDO_Model_Type::getProperties
SDO_Model_Type::isAbstractType
SDO 函数
PHP Manual

SDO_Model_Type::getProperty

(^)

SDO_Model_Type::getProperty — Get an SDO_Model_Property of the type

说明

SDO_Model_Property SDO_Model_Type::getProperty ( mixed $identifier )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Get an SDO_Model_Property of the type, identified by its property index or property name.

参数

identifier

The property index or property name.

返回值

Returns the SDO_Model_Property.

SDO_Model_Type::getProperties
SDO_Model_Type::isAbstractType
SDO 函数


Test to see if this SDO_Model_Type is an abstract data type

SDO_Model_Type::getProperty
SDO_Model_Type::isDataType
SDO 函数
PHP Manual

SDO_Model_Type::isAbstractType

(^)

SDO_Model_Type::isAbstractType — Test to see if this SDO_Model_Type is an abstract data type

说明

bool SDO_Model_Type::isAbstractType ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Test to see if this SDO_Model_Type is an abstract data type. Returns TRUE if this type is abstract, that is, no SDO_DataObject of this type can be instantiated, though other types may inherit from it.

参数

None.

返回值

Returns TRUE if this type is an abstract data type, otherwise returns FALSE.

SDO_Model_Type::getProperty
SDO_Model_Type::isDataType
SDO 函数


Test to see if this SDO_Model_Type is a primitive data type

SDO_Model_Type::isAbstractType
SDO_Model_Type::isInstance
SDO 函数
PHP Manual

SDO_Model_Type::isDataType

(^)

SDO_Model_Type::isDataType — Test to see if this SDO_Model_Type is a primitive data type

说明

bool SDO_Model_Type::isDataType ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Test to see if this SDO_Model_Type is a primitive data type. Returns TRUE if this type is a primitive data type, otherwise returns FALSE.

参数

None.

返回值

Returns TRUE if this type is a primitive data type, otherwise returns FALSE.

SDO_Model_Type::isAbstractType
SDO_Model_Type::isInstance
SDO 函数


Test for an SDO_DataObject being an instance of this SDO_Model_Type

SDO_Model_Type::isDataType
SDO_Model_Type::isOpenType
SDO 函数
PHP Manual

SDO_Model_Type::isInstance

(^)

SDO_Model_Type::isInstance — Test for an SDO_DataObject being an instance of this SDO_Model_Type

说明

bool SDO_Model_Type::isInstance ( SDO_DataObject $data_object )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Test for an SDO_DataObject being an instance of this SDO_Model_Type. Returns TRUE if the SDO_DataObject provided is an instance of this SDO_Model_Type, or a derived type, otherwise returns FALSE.

参数

data_object

The SDO_DataObject to be tested.

返回值

Returns TRUE if the SDO_DataObject provided is an instance of this SDO_Model_Type, or a derived type, otherwise returns FALSE.

SDO_Model_Type::isDataType
SDO_Model_Type::isOpenType
SDO 函数


Test to see if this type is an open type

SDO_Model_Type::isInstance
SDO_Model_Type::isSequencedType
SDO 函数
PHP Manual

SDO_Model_Type::isOpenType

(^)

SDO_Model_Type::isOpenType — Test to see if this type is an open type

说明

bool SDO_Model_Type::isOpenType ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Test to see if this type is open. Returns TRUE if this type is open, otherwise returns FALSE. An SDO_DataObject whose type is open can have properties added to them which are not described by the type. This capability is used to support working with XML documents whose schema support open content, such as that defined by an

<xsd:any>
element.

参数

None.

返回值

Returns TRUE if this type is open, otherwise returns FALSE.

SDO_Model_Type::isInstance
SDO_Model_Type::isSequencedType
SDO 函数


Test to see if this is a sequenced type

SDO_Model_Type::isOpenType
SDO_Sequence::getProperty
SDO 函数
PHP Manual

SDO_Model_Type::isSequencedType

(^)

SDO_Model_Type::isSequencedType — Test to see if this is a sequenced type

说明

bool SDO_Model_Type::isSequencedType ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Test to see if this is a sequenced type. Returns TRUE if this type is sequence, otherwise returns FALSE. Sequenced types can have the ordering across properties preserved and can contain unstructured text. For more information on sequenced types see the section on Working with Sequenced Data Objects.

参数

None.

返回值

Returns TRUE if this type is sequence, otherwise return FALSE.

SDO_Model_Type::isOpenType
SDO_Sequence::getProperty
SDO 函数


Return the property for the specified sequence index.

SDO_Model_Type::isSequencedType
SDO_Sequence::insert
SDO 函数
PHP Manual

SDO_Sequence::getProperty

(^)

SDO_Sequence::getProperty — Return the property for the specified sequence index.

说明

SDO_Model_Property SDO_Sequence::getProperty ( int $sequence_index )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Return the property for the specified sequence index.

参数

sequence_index

The position of the element in the sequence.

返回值

An SDO_Model_Property. A return value of NULL means the sequence element does not belong to a property and must therefore be unstructured text.

错误／异常

SDO_IndexOutOfBoundsException

Thrown if the sequence index is less than zero or greater than the size of the sequence.

SDO_Model_Type::isSequencedType
SDO_Sequence::insert
SDO 函数


Insert into a sequence

SDO_Sequence::getProperty
SDO_Sequence::move
SDO 函数
PHP Manual

SDO_Sequence::insert

(^)

SDO_Sequence::insert — Insert into a sequence

说明

void SDO_Sequence::insert ( mixed $value [, int $sequenceIndex [, mixed $propertyIdentifier ]] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Insert a new element at a specified position in the sequence. All subsequent sequence items are moved up.

参数

value

The new value to be inserted. This can be either a primitive or an SDO_DataObject.

sequenceIndex

The position at which to insert the new element. Default is NULL, which results in the new value being appended to the sequence.

propertyIdentifier

Either a property index, a property name, or an SDO_Model_Property, used to identify a property in the sequence's corresponding SDO_DataObject. A value of NULL signifies unstructured text.

返回值

None.

错误／异常

SDO_IndexOutOfBoundsException

Thrown if the sequence index is less than zero or greater than the size of the sequence.

SDO_InvalidConversionException

Thrown if the type of the new value cannot be juggled to match the type for the specified data object property.

SDO_Sequence::getProperty
SDO_Sequence::move
SDO 函数


Move an item to another sequence position

SDO_Sequence::insert
SDO-DAS-Relational
SDO 函数
PHP Manual

SDO_Sequence::move

(^)

SDO_Sequence::move — Move an item to another sequence position

说明

void SDO_Sequence::move ( int $toIndex, int $fromIndex )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Modify the position of the item in the sequence, without altering the value of the property in the SDO_DataObject.

参数

toIndex

The destination sequence index. If this index is less than zero or greater than the size of the sequence then the value is appended.

fromIndex

The source sequence index.

返回值

None.

错误／异常

SDO_IndexOutOfBoundsException

Thrown if the fromIndex sequence index is less than zero or greater than the size of the sequence.

SDO_Sequence::insert
SDO-DAS-Relational
SDO 函数


SDO Relational Data Access Service

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Creating, retrieving, updating and deleting data
    • Specifying the metadata
    • One-table examples
    • Two-table examples
    • Three-table example
  • Limitations
  • SDO-DAS-Relational 函数
    • SDO_DAS_Relational::applyChanges — Applies the changes made to a data graph back to the database.
    • SDO_DAS_Relational::__construct — Creates an instance of a Relational Data Access Service
    • SDO_DAS_Relational::createRootDataObject — Returns the special root object in an otherwise empty data graph. Used when creating a data graph from scratch.
    • SDO_DAS_Relational::executePreparedQuery — Executes an SQL query passed as a prepared statement, with a list of values to substitute for placeholders, and return the results as a normalised data graph.
    • SDO_DAS_Relational::executeQuery — Executes a given SQL query against a relational database and returns the results as a normalised data graph.
SDO_Sequence::move
简介
XML 操作


简介

Warning

此扩展是实验性 的。 此扩展的表象，包括其函数名称以及其他此扩展的相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本扩展风险自担 。

In order to use the Relational Data Access Service for Service Data Objects, you will need to understand some of the concepts behind SDO: the data graph, the data object, the disconnected way of working, the change summary, XPath and property expressions, and so on. If you are not familiar with these ideas, you might want to look first at the section on SDO. In addition, the Relational DAS makes use of the PDO extension to isolate itself from specifics of different back-end relational databases. In order to use the Relational DAS you will need to be able to create and pass a PDO database connection; for this reason you might also want to take a look at the section on PDO.

The job of the Relational DAS is to move data between the application and a relational database. In order to do this it needs to be told the mapping between the database entities - tables, columns, primary keys and foreign keys - and the elements of the SDO model - types, properties, containment relationships and so on. You specify this information as metadata when you construct the Relational DAS.

Overview of Operation

  1. The first step is to call the Relational DAS's constructor, passing the metadata that defines the mapping between database and SDO model. There are examples of this below.

  2. The next step might be to call the executeQuery() or executePreparedQuery() methods on the Relational DAS, passing either a literal SQL statement for the DAS to prepare and execute, or a prepared statement with placeholders and a list of values to be inserted. You may also need to specify a small amount of metadata about the query itself, so that the Relational DAS knows exactly what columns will be returned from the database and in what order. You will also need to pass a PDO database connection.

    The return value from executeQuery() or executePreparedQuery() is a normalised data graph containing all the data from the result set. For a query that returns data obtained from a number of tables, this graph will contain a number of data objects, linked by SDO containment relationships. There may also be SDO non-containment references within the data.

    Once the query has been executed and the data graph constructed, there is no need for either that instance of the Relational DAS or the database connection. There are no locks held on the database. Both the Relational DAS and the PDO database connection can be garbage collected.

  3. Quite possibly the data in the data graph will go through a number of modifications. The data graph can be serialised into the PHP session and so may have a lifetime beyond just one client-server interaction. Data objects can be created and added to the graph, the data objects already in the graph can be deleted, and data objects in the graph can be modified.

  4. Finally, the changes made to the data graph can be applied back to the database using the applyChanges() method of the Relational DAS. For this, another instance of the Relational DAS must be constructed, using the same metadata, and another connection to the database obtained. The connection and the data graph are passed to applyChanges(). At this point the Relational DAS examines the change summary and generates the necessary INSERT, UPDATE and DELETE SQL statements to apply the changes. Any UPDATE and DELETE statements are qualified with the original values of the data so that should the data have changed in the database in the meantime this will be detected. Assuming no such collisions have occurred the changes will be committed to the database. The application can then continue to work with the data graph, make more changes and apply them, or can discard it.

There are other ways of working with the data in the database: it is possible to just create data objects and write them to the database without a preliminary call to executeQuery(), for example. This scenario and others are explored in the Examples section below.

SDO-DAS-Relational
安装／配置
SDO-DAS-Relational


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
SDO-DAS-Relational


需求

The Relational DAS requires that the SDO extension be installed. The SDO extension requires a version of PHP 5.1, and the Relational DAS requires a recent version that contains an important fix for PDO. The most up-to-date information about required levels of PHP should be found in the changelog for the package on PECL. At the time of writing, though, the Relational DAS requires the most recent beta level of PHP 5.1, that is PHP 5.1.0.

The Relational DAS uses PDO to access the relational database, and so should run with a variety of different relational databases. At the time of writing it has been tested in the following configurations

  • MySQL 4.1.14, on Windows. The Relational DAS operates correctly with the php_pdo_mysql driver that comes with the pre-built binaries for PHP 5.1.0.

  • MySQL 4.1.13, on Linux. It is necessary to have the most up-to-date PDO driver for MySQL, which comes built in to PHP 5.1.0. It may be necessary to uninstall the usual driver that would have come from PECL using pear uninstall pdo_mysql. You will need to configure PHP with the --with-pdo-mysql option.

  • DB2 8.2 Personal Edition, on Windows. The Relational DAS operates correctly with the php_pdo_odbc driver that comes with the pre-built binaries for PHP 5.1.0.

  • DB2 8.2 Personal Developer's Edition, on Linux. The Developer's Edition is needed because it contains the include files needed when PHP is configured and built. You will need to configure PHP with the --with-pdo-odbc=ibm-db2 option.

The Relational DAS applies changes to the database within a user-delimited transaction: that is, it issues a call to PDO::beginTransaction() before beginning to apply changes, and PDO::commit() or PDO::rollback() on completion. Whichever database is chosen, the database and the PDO driver for the database must support these calls.

安装／配置
安装
安装／配置


安装

The installation instructions for all the SDO components are in the SDO install section of the SDO documentation.

In any case, the essential facts are that the Relational DAS is written in PHP and it should be placed somewhere on the PHP include_path.

Your application will of course need to include the Relational DAS with a statement like this:

<?php
require_once 'SDO/DAS/Relational.php';
?>

需求
运行时配置
安装／配置


运行时配置

此扩展没有在 php.ini 中定义配置指令。

Tracing

You may be interested in seeing the SQL statements that are generated in order to apply changes back to the database. At the top of the SDO/DAS/Relational.php you will find a number of constants which control whether the process of constructing and executing the SQL statements is to be traced. Try setting DEBUG_EXECUTE_PLAN to TRUE to see the generated SQL statements.

安装
资源类型
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

The Relational DAS introduces no predefined constants.

资源类型
范例
SDO-DAS-Relational


范例

Table of Contents

  • Creating, retrieving, updating and deleting data
  • Specifying the metadata
  • One-table examples
  • Two-table examples
  • Three-table example
预定义常量
Creating, retrieving, updating and deleting data
SDO-DAS-Relational


Creating, retrieving, updating and deleting data

This section illustrates how the Relational DAS can be used to create, retrieve, update and delete data in a relational database. Many of the examples are illustrated with a three-table database that contains companies, departments within those companies, and employees that work in those departments. This example is used in a number of places within the SDO literature. See the examples section of the » Service Data Objects specification or the Examples section of the documentation for the SDO extension.

The Relational DAS is constructed with metadata that defines the relational database and how it should be mapped to SDO. The long section that follows describes this metadata and how to construct the Relational DAS. The examples that follow it all assume that this metadata is in an included php file.

The examples below and others can all be found in the Scenarios directory in the Relational DAS package.

The Relational DAS throws exceptions in the event that it finds errors in the metadata or errors when executing SQL statements against the database. For brevity the examples below all omit the use of try/catch blocks around the calls to the Relational DAS.

These examples all differ from the expected use of SDO in two important respects.

First, they show all interactions with the database completed within one script. In this respect these scenarios are not realistic but are chosen to illustrate just the use of the Relational DAS. It is expected that interactions with the database will be separated in time and the data graph serialized and deserialized into the PHP session one or more times as the application interacts with an end user.

Second, all queries executed against the database use hard-coded queries with no variables substituted. In this case it is safe to use the simple executeQuery() call, and this is what the examples illustrate. In practice, though, it is unlikely that the SQL statement is known entirely ahead of time. In order to allow variables to be safely substituted into the SQL queries, without running the risk of injecting SQL with unknown effects, it is safer to use the executePreparedQuery() which takes a prepared SQL statement containing placeholders and a list of values to be substituted.

范例
Specifying the metadata
范例


Specifying the metadata

This first long section describes in detail how the metadata describing the database and the required SDO model is supplied to the Relational DAS.

When the constructor for the Relational DAS is invoked, it needs to be passed several pieces of information. The bulk of the information, passed as an associative array in the first argument to the constructor, tells the Relational DAS what it needs to know about the relational database. It describes the names of the tables, columns, primary keys and foreign keys. It should be fairly easy to understand what is required, and once written it can be placed in a php file and included when needed. The remainder of the information, passed in the second and third arguments to the constructor, tells the Relational DAS what it needs to know about the relationships between objects and the shape of the data graph; it ultimately determines how the data from the database is to be normalized into a graph.

Database metadata

The first argument to the constructor describes the target relational database.

Each table is described by an associative array with up to four keys.

Key | Value
name | The name of the table.
columns | An array listing the names of the columns, in any order.
PK | The name of the column containing the primary key.
FK | An array with two entries, 'from' and 'to', which define a column containing a foreign key, and a table to which the foreign key points. If there are no foreign keys in the table then the 'FK' entry does not need to be specified. Only one foreign key can be specified. Only a foreign key pointing to the primary key of a table can be specified.

<?php
/*****************************************************************
* METADATA DEFINING THE DATABASE
******************************************************************/
$company_table = array (
  'name' => 'company',
  'columns' => array('id', 'name',  'employee_of_the_month'),
  'PK' => 'id',
  'FK' => array (
      'from' => 'employee_of_the_month',
      'to' => 'employee',
      ),
  );
$department_table = array (
  'name' => 'department',
  'columns' => array('id', 'name', 'location', 'number', 'co_id'),
  'PK' => 'id',
  'FK' => array (
      'from' => 'co_id',
      'to' => 'company',
      )
  );
$employee_table = array (
  'name' => 'employee',
  'columns' => array('id', 'name', 'SN', 'manager', 'dept_id'),
  'PK' => 'id',
  'FK' => array (
      'from' => 'dept_id',
      'to' => 'department',
      )
  );
$database_metadata = array($company_table, $department_table, $employee_table);
?>

This metadata corresponds to a relational database that might have been defined to MySQL as:

create table company (
 id integer auto_increment,
 name char(20),
 employee_of_the_month integer,
 primary key(id)
);
create table department (
 id integer auto_increment,
 name char(20),
 location char(10),
 number integer(3),
 co_id integer,
 primary key(id)
);
create table employee (
 id integer auto_increment,
 name char(20),
 SN char(4),
 manager tinyint(1),
 dept_id integer,
 primary key(id)
);

or to DB2 as:

create table company ( \
  id integer not null generated by default as identity,  \
  name varchar(20), \
  employee_of_the_month integer, \
  primary key(id) )
create table department ( \
  id integer not null generated by default as identity, \
  name varchar(20), \
  location varchar(10), \
  number integer, \
  co_id integer, \
  primary key(id) )
create table employee ( \
  id integer not null generated by default as identity, \
  name varchar(20), \
  SN char(4), \
  manager smallint, \
  dept_id integer, \
  primary key(id) )

Note that although in this example there are no foreign keys specified to the database and so the database is not expected to enforce referential integrity, the intention behind the co_id column on the department table and the dept_id column on the employee table is they should contain the primary key of their containing company or department record, respectively. So these two columns are acting as foreign keys.

There is a third foreign key in this example, that from the employee_of_the_month column of the company record to a single row of the employee table. Note the difference in intent between this foreign key and the other two. The employee_of_the_month column represents a single-valued relationship: there can be only one employee of the month for a given company. The co_id and dept_id columns represent multi-valued relationships: a company can contain many departments and a department can contain many employees. This distinction will become evident when the remainder of the metadata picks out the company-department and department-employee relationships as containment relationships.

There are a few simple rules to be followed when constructing the database metadata:

  • All tables must have primary keys, and the primary keys must be specified in the metadata. Without primary keys it is not possible to keep track of object identities. As you can see from the SQL statements that create the tables, primary keys can be auto-generated, that is, generated and assigned by the database when a record is inserted. In this case the auto-generated primary key is obtained from the database and inserted into the data object immediately after the row is inserted into the database.

  • It is not necessary to specify in the metadata all the columns that exist in the database, only those that will be used. For example, if the company table had another column that the application did not want to access with SDO, this need not be specified in the metadata. On the other hand it would have done no harm to specify it: if specified in the metadata but never retrieved, or assigned to by the application, then the unused column will not affect anything.

  • In the database metadata note that the foreign key definitions identify not the destination column in the table which is pointed to, but the table name itself. Strictly, the relational model permits the destination of a foreign key to be a non-primary key. Only foreign keys that point to a primary key are useful for constructing the SDO model, so the metadata specifies the table name. It is understood that the foreign key points to the primary key of the given table.

Given these rules, and given the SQL statements that define the database, the database metadata should be easy to construct.

What the Relational DAS does with the metadata

The Relational DAS uses the database metadata to form most of the SDO model. For each table in the database metadata, an SDO type is defined. Each column which can represent a primitive value (columns which are not defined as foreign keys) are added as properties to the SDO type.

All primitive properties are given a type of string in the SDO model, regardless of their SQL type. When writing values back to the database the Relational DAS will create SQL statements that treat the values as strings, and the database will convert them to the appropriate type.

Foreign keys are interpreted in one of two ways, depending on the metadata in the third argument to the constructor that defines the SDO containment relationships. A discussion of this is therefore deferred until the section on SDO containment relationships below.

Specifying the application root type

The second argument to the constructor is the application root type. The true root of each data graph is an object of a special root type and all application data objects come somewhere below that. Of the various application types in the SDO model, one has to be the application type immediately below the root of the data graph. If there is only one table in the database metadata, the application root type can be inferred, and this argument can be omitted.

Specifying the SDO containment relationships

The third argument to the constructor defines how the types in the model are to be linked together to form a graph. It identifies the parent-child relationships between the types which collectively form a graph. The relationships need to be supported by foreign keys to be found in the data, in a way shortly to be described.

The metadata is an array containing one or more associative arrays, each of which identifies a parent and a child. The example below shows a parent-child relationship from company to department, and another from department to employee. Each of these will become an SDO property defining a multi-valued containment relationship in the SDO model.

<?php
$department_containment = array( 'parent' => 'company', 'child' => 'department');
$employee_containment = array( 'parent' => 'department', 'child' => 'employee');

$SDO_containment_metadata = array($department_containment, $employee_containment);
?>

Foreign keys in the database metadata are interpreted as properties with either multi-valued containment relationships or single-valued non-containment references, depending on whether they have a corresponding SDO containment relationship specified in the metadata. In the example here, the foreign keys from department to company (the co_id column in the department table) and from employee to department (the dept_id column in the employee table) are interpreted as supporting the SDO containment relationships. Each containment relationship mentioned in the SDO containment relationships metadata must have a corresponding foreign key present in the database and defined in the database metadata. The values of the foreign key columns for containment relationships do not appear in the data objects, instead each is represented by a containment relationship from the parent to the child. So the co_id column in the department row in the database, for example, does not appear as a property on the department type, but instead as a containment relationship called department on the company type. Note that the foreign key and the parent-child relationship appear to have opposite senses: the foreign key points from the department to the company, but the parent-child relationship points from company to department.

The third foreign key in this example, the employee_of_the_month , is handled differently. This is not mentioned in the SDO containment relationships metadata. As a consequence this is interpreted in the second way: it becomes a single-valued non-containment reference on the company object, to which can be assigned references to SDO data objects of the employee type. It does appear as a property on the company type. The way to assign a value to it in the SDO data graph is to have a graph that contains an employee object through the containment relationships, and to assign the object to it. This is illustrated in the later examples below.

Creating, retrieving, updating and deleting data
One-table examples
范例


One-table examples

The following set of examples all use the Relational DAS to work with a data graph containing just one application data object, a single company and the data just to be found the company table. These examples do not exercise the power of SDO or the Relational DAS and of course the same result could be achieved more economically with direct SQL statements but they are intended to illustrate how to work with the Relational DAS.

For this very simple scenario it would be possible to simplify the database metadata to include just the company table - if that were done the second and third arguments to the constructor and the column specifier used in the query example would become optional.

Example #1 Creating a data object

The simplest example is that of creating a single data object and writing it to the database. In this example a single company object is created, its name is set to 'Acme', and the Relational DAS is called to write the changes to the database. The company name is set here using the property name method. See the Examples section on the SDO extension for other ways of accessing the properties of an object.

Data objects can only be created when you have a data object to start with, however. It is for that reason that the first call to the Relational DAS here is to obtain a root object. This is in effect how to ask for an empty data graph - the special root object is the true root of the tree. The company data object is then created with a call to createDataObject() on the root object. This creates the company data object and inserts it in the graph by inserting into a multi-valued containment property on the root object called 'company'.

When the Relational DAS is called to apply the changes a simple insert statement 'INSERT INTO company (name) VALUES ("Acme");' will be constructed and executed. The auto-generated primary key will be set into the data object and the change summary will be reset, so that it would be possible to continue working with the same data object, modify it, and apply the newer changes a second time.

<?php
require_once 'SDO/DAS/Relational.php';
require_once 'company_metadata.inc.php';

/**************************************************************
* Construct the DAS with the metadata
***************************************************************/
$das = new SDO_DAS_Relational ($database_metadata,'company',$SDO_containment_metadata);

/**************************************************************
* Obtain a root object and create a company object underneath.
* Make a simple change to the data object.
***************************************************************/
$root = $das  -> createRootDataObject();
$acme = $root -> createDataObject('company');

$acme->name = "Acme";

/**************************************************************
* Get a database connection and write the object to the database
***************************************************************/
$dbh = new PDO(PDO_DSN,DATABASE_USER,DATABASE_PASSWORD);
$das -> applyChanges($dbh, $root);
?>

Example #2 Retrieving a data object

In this example a single data object is retrieved from the database - or possibly more than one if there is more than one company called 'Acme'. For each company returned, the name and id properties are echoed.

In this example the third argument to executeQuery(), the column specifier is needed as there are other tables in the metadata with column names of name and id. If there were no possible ambiguity it could be omitted.

<?php
require_once 'SDO/DAS/Relational.php';
require_once 'company_metadata.inc.php';

/**************************************************************
* Construct the DAS with the metadata
***************************************************************/
$das = new SDO_DAS_Relational ($database_metadata,'company',$SDO_containment_metadata);

/**************************************************************
* Get a database connection
***************************************************************/
$dbh = new PDO(PDO_DSN,DATABASE_USER,DATABASE_PASSWORD);

/**************************************************************
* Issue a query to obtain a company object - possibly more if they exist
***************************************************************/
$root = $das->executeQuery($dbh,
         'select name, id from company where name="Acme"',
          array('company.name', 'company.id') );

/**************************************************************
* Echo name and id
***************************************************************/
foreach ($root['company'] as $company) {
  echo "Company obtained from the database has name = " .
  $company['name'] . " and id " . $company['id'] . "\n";
}
?>

Example #3 Updating a data object

This example combines the previous two, in the sense that in order to be updated the object must first be retrieved. The application code reverses the company name (so 'Acme' becomes 'emcA') and then the changes are written back to the database in the same way that they were when the object was created. Because the query searches for the name both ways round the program can be run repeatedly to find the company and reverse its name each time.

In this example the same instance of the Relational DAS is reused for the applyChanges(), as is the PDO database handle. This is quite alright; it also alright to allow the previous instances to be garbage collected and to obtain new instances. No state data regarding the graph is held the Relational DAS once it has returned a data graph to the application. All necessary data is either within the graph itself, or can be reconstructed from the metadata.

<?php
require_once 'SDO/DAS/Relational.php';
require_once 'company_metadata.inc.php';

/**************************************************************
* Construct the DAS with the metadata
***************************************************************/
$das = new SDO_DAS_Relational ($database_metadata,'company',$SDO_containment_metadata);

/**************************************************************
* Get a database connection
***************************************************************/
$dbh = new PDO(PDO_DSN,DATABASE_USER,DATABASE_PASSWORD);

/**************************************************************
* Issue a query to obtain a company object - possibly more if they exist
***************************************************************/
$root = $das->executeQuery($dbh,
  'select name, id from company where name="Acme" or name="emcA"',
  array('company.name', 'company.id') );

/**************************************************************
* Alter the name of just the first company
***************************************************************/
$company = $root['company'][0];
echo "obtained a company with name of " . $company->name . "\n";
$company->name = strrev($company->name);

/**************************************************************
* Write the change back
***************************************************************/
$das->applyChanges($dbh,$root);
?>

Example #4 Deleting a data object

Any companies called 'Acme' or its reverse 'emcA' are retrieved. They are then all deleted from the graph with unset.

In this example they are all deleted in one go by unsetting the containing property (the property defining the containment relationship). It is also possible to delete them individually.

<?php
require_once 'SDO/DAS/Relational.php';
require_once 'company_metadata.inc.php';

/**************************************************************
* Construct the DAS with the metadata
***************************************************************/
$das = new SDO_DAS_Relational ($database_metadata,'company',$SDO_containment_metadata);

/**************************************************************
* Get a database connection
***************************************************************/
$dbh = new PDO(PDO_DSN,DATABASE_USER,DATABASE_PASSWORD);

/**************************************************************
* Issue a query to obtain a company object - possibly more if they exist
***************************************************************/
$root = $das->executeQuery($dbh,
  'select name, id from company where name="Acme" or name="emcA"',
  array('company.name', 'company.id') );

/**************************************************************
* Delete any companies found from the data graph
***************************************************************/
unset($root['company']);

/**************************************************************
* Write the change(s) back
***************************************************************/
$das->applyChanges($dbh,$root);
?>

Specifying the metadata
Two-table examples
范例


Two-table examples

The following set of examples all use two tables from the company database: the company and department tables. These examples exercise more of the function of the Relational DAS.

In this series of examples a company and department are created, retrieved, updated, and finally deleted. This illustrates the lifecycle for a data graph containing more than one object. Note that this example clears out the company and department tables at the start so that the exact results of the queries can be known.

You can find these examples combined into one script called 1cd-CRUD in the Scenarios directory in the Relational DAS package.

Example #1 One company, one department - Create

As in the earlier example of creating just one company data object, the first action after constructing the Relational DAS is to call createRootDataObject() to obtain the special root object of the otherwise empty data graph. The company object is then created as a child of the root object, and the department object as a child of the company object.

When it comes to applying the changes, the Relational DAS has to perform special processing to maintain the foreign keys that support the containment relationships, especially if auto-generated primary keys are involved. In this example, the relationship between the auto-generated primary key id in the company table and the co_id column in the department table must be maintained. When inserting a company and department for the first time the Relational DAS has to first insert the company row, then call PDO's getLastInsertId() method to obtain the auto-generated primary key, then add that as the value of the co_id column when inserting the department row.

<?php
require_once 'SDO/DAS/Relational.php';
require_once 'company_metadata.inc.php';

/*************************************************************************************
* Empty out the two tables
*************************************************************************************/
$dbh = new PDO(PDO_DSN,DATABASE_USER,DATABASE_PASSWORD);
$pdo_stmt = $dbh->prepare('DELETE FROM COMPANY;');
$rows_affected = $pdo_stmt->execute();
$pdo_stmt = $dbh->prepare('DELETE FROM DEPARTMENT;');
$rows_affected = $pdo_stmt->execute();

/**************************************************************
* Create a company with name Acme and one department, the Shoe department
***************************************************************/
$dbh = new PDO(PDO_DSN,DATABASE_USER,DATABASE_PASSWORD);
$das = new SDO_DAS_Relational ($database_metadata,'company',$SDO_containment_metadata);

$root = $das -> createRootDataObject();

$acme = $root -> createDataObject('company');
$acme -> name = "Acme";

$shoe = $acme->createDataObject('department');
$shoe->name = 'Shoe';

$das -> applyChanges($dbh, $root);

?>

Example #2 One company, one department - Retrieve and Update

In this case the SQL query passed to executeQuery() performs an inner join to join the data from the company and department tables. Primary keys for both the company and department tables must be included in the query. The result set is re-normalised to form a normalised data graph. Note that a column specifier is passed as the third argument to the executeQuery() call enabling the Relational DAS to know which column is which in the result set.

Note that the co_id column although used in the query is not needed in the result set. In order to understand what the Relational DAS is doing when it builds the data graph it may be helpful to visualise what the result set looks like. Although the data in the database is normalised, so that multiple department rows can point through their foreign key to one company row, the data in the result set is non-normalised: that is, if there is one company and multiple departments, the values for the company are repeated in each row. The Relational DAS has to reverse this process and turn the result set back into a normalised data graph, with just one company object.

In this example the Relational DAS will examine the result set and column specifier, find data for both the company and department tables, find primary keys for both, and interpret each row as containing data for a department and its parent company. If it has not seen data for that company before (it uses the primary key to check) it creates a company object and then a department object underneath it. If it has seen data for that company before and has already created the company object it just creates the department object underneath.

In this way the Relational DAS can retrieve and renormalise data for multiple companies and multiple departments underneath them.

<?php
require_once 'SDO/DAS/Relational.php';
require_once 'company_metadata.inc.php';

/**************************************************************
* Retrieve the company and Shoe department, then delete Shoe and add IT
***************************************************************/
$dbh = new PDO(PDO_DSN,DATABASE_USER,DATABASE_PASSWORD);
$das = new SDO_DAS_Relational ($database_metadata,'company',$SDO_containment_metadata);

$root = $das->executeQuery($dbh,
'select c.id, c.name, d.id, d.name from company c, department d where d.co_id = c.id',
array('company.id','company.name','department.id','department.name'));

$acme = $root['company'][0];            // get the first company - will be 'Acme'
$shoe = $acme['department'][0];         // get the first department underneath - will be 'Shoe'

unset($acme['department'][0]);

$it = $acme->createDataObject('department');
$it->name = 'IT';

$das -> applyChanges($dbh, $root);
?>

Example #3 One company, two departments - Retrieve and Delete

In this example the company and department are retrieved and then deleted. It is not necessary to delete them individually (although that would be possible) - deleting the company object from the data graph also deletes any departments underneath it.

Note the way that the company object is actually deleted using the PHP unset call. The unset has to be performed on the containing property which in this case is the company property on the special root object. You must use:

<?php
unset($root['company'][0]);
?>
and not:
<?php
unset($acme); //WRONG
?>
Simply unsetting $acme would destroy the variable but leave the data in the data graph untouched.

<?php
require_once 'SDO/DAS/Relational.php';
require_once 'company_metadata.inc.php';

/**************************************************************
* Retrieve the company and IT department, then delete the whole company
***************************************************************/
$dbh = new PDO(PDO_DSN,DATABASE_USER,DATABASE_PASSWORD);
$das = new SDO_DAS_Relational ($database_metadata,'company',$SDO_containment_metadata);

$root = $das->executeQuery($dbh,
'select c.id, c.name, d.id, d.name from company c, department d where d.co_id = c.id',
array('company.id','company.name','department.id','department.name'));

$acme = $root['company'][0];
$it = $acme['department'][0];

unset($root['company'][0]);

$das -> applyChanges($dbh, $root);

?>

One-table examples
Three-table example
范例


Three-table example

The following examples use all three tables from the company database: the company, department, and employee tables. These introduce the final piece of function not exercised by the examples above: the non-containment reference employee_of_the_month.

Like the examples above for company and department, this set of examples is intended to illustrate the full lifecycle of such a data graph.

Example #1 One company, one department, one employee - Create

In this example a company is created containing one department and just one employee. Note that this example clears out all three tables at the start so that the exact results of the queries can be known.

Note how once the company, department and employee have been created, the employee_of_the_month property of the company can be made to point at the new employee. As this is a non-containment reference, this cannot be done until the employee object has been created within the graph. Non-containment references need to be managed carefully. For example if the employee were now deleted from under the department, it would not be correct to try to save the graph without first clearing or re-assigning the employee_of_the_month property. The closure rule for SDO data graphs requires that any object pointed at by a non-containment reference must also be reachable by containment relationships.

When it comes to inserting the graph into the database, the procedure is similar to the example of inserting the company and department, but employee_of_the_month introduces an extra complexity. The Relational DAS needs to insert the objects working down the tree formed by containment relationships, so company, then department, then employee. This is necessary so that it always has the auto-generated primary key of a parent on hand to include in a child row. But when the company row is inserted the employee who is employee of the month has not yet been inserted and the primary key is not known. The procedure is that after the employee record is inserted and its primary key known, a final step is performed in which the company record is updated with the employee's primary key.

<?php
require_once 'SDO/DAS/Relational.php';
require_once 'company_metadata.inc.php';

/*************************************************************************************
* Empty out the three tables
*************************************************************************************/
$dbh = new PDO(PDO_DSN,DATABASE_USER,DATABASE_PASSWORD);
$pdo_stmt = $dbh->prepare('DELETE FROM COMPANY;');
$rows_affected = $pdo_stmt->execute();
$pdo_stmt = $dbh->prepare('DELETE FROM DEPARTMENT;');
$rows_affected = $pdo_stmt->execute();
$pdo_stmt = $dbh->prepare('DELETE FROM EMPLOYEE;');
$rows_affected = $pdo_stmt->execute();

/*************************************************************************************
* Create a tiny but complete company.
* The company name is Acme.
* There is one department, Shoe.
* There is one employee, Sue.
* The employee of the month is Sue.
*************************************************************************************/
$das = new SDO_DAS_Relational ($database_metadata,'company',$SDO_containment_metadata);
$dbh = new PDO(PDO_DSN,DATABASE_USER,DATABASE_PASSWORD);

$root             = $das  -> createRootDataObject();
$acme             = $root -> createDataObject('company');
$acme -> name     = "Acme";
$shoe             = $acme -> createDataObject('department');
$shoe -> name     = 'Shoe';
$shoe -> location = 'A-block';
$sue              = $shoe -> createDataObject('employee');
$sue -> name      = 'Sue';
$acme -> employee_of_the_month = $sue;

$das -> applyChanges($dbh, $root);

echo "Wrote back Acme with one department and one employee\n";
?>

Example #2 One company, one department, one employee - Retrieve and update

The SQL statement passed to the Relational DAS is this time an inner join that retrieves data from all three tables. Otherwise this example introduces nothing that has not appeared in a previous example.

The graph is updated by the addition of a new department and employee and some alterations to the name properties of the existing objects in the graph. The combined changes are then written back. The Relational DAS will process and apply an arbitrary mixture of additions, modifications and deletions to and from the data graph.

<?php
require_once 'SDO/DAS/Relational.php';
require_once 'company_metadata.inc.php';

/*************************************************************************************
* Find the company again and change various aspects.
* Change the name of the company, department and employee.
* Add a second department and a new employee.
* Change the employee of the month.
*************************************************************************************/
$das = new SDO_DAS_Relational ($database_metadata,'company',$SDO_containment_metadata);
$dbh = new PDO(PDO_DSN,DATABASE_USER,DATABASE_PASSWORD);

$root = $das->executeQuery($dbh,
  "select c.id, c.name, c.employee_of_the_month, d.id, d.name, e.id, e.name " .
  "from company c, department d, employee e " .
  "where e.dept_id = d.id and d.co_id = c.id and c.name='Acme'",
   array('company.id','company.name','company.employee_of_the_month',
   'department.id','department.name','employee.id','employee.name'));
$acme         = $root['company'][0];

$shoe         = $acme->department[0];
$sue          = $shoe -> employee[0];

$it           = $acme->createDataObject('department');
$it->name     = 'IT';
$it->location = 'G-block';
$billy        = $it->createDataObject('employee');
$billy->name  = 'Billy';

$acme->name   = 'MegaCorp';
$shoe->name   = 'Footwear';
$sue->name    = 'Susan';

$acme->employee_of_the_month = $billy;
$das -> applyChanges($dbh, $root);
echo "Wrote back company with extra department and employee and all the names changed (Megacorp/Footwear/Susan)\n";

?>

Example #3 One company, two departments, two employees - Retrieve and delete

The company is retrieved as a complete data graph containing five data objects - the company, two departments and two employees. They are all deleted by deleting the company object. Deleting an object from the graph deletes all the object beneath it in the graph. Five SQL DELETE statements will be generated and executed. As always they will be qualified with a WHERE clause that contains all of the fields that were retrieved, so that any updates to the data in the database in the meantime by another process will be detected.

<?php
require_once 'SDO/DAS/Relational.php';
require_once 'company_metadata.inc.php';

/*************************************************************************************
* Now read it one more time and delete it.
* You can delete part, apply the changes, then carry on working with the same graph but
* care is needed to keep closure - you cannot delete the employee who is eotm without
* reassigning. For safety here we delete the company all in one go.
*************************************************************************************/
$das = new SDO_DAS_Relational ($database_metadata,'company',$SDO_containment_metadata);
$dbh = new PDO(PDO_DSN,DATABASE_USER,DATABASE_PASSWORD);

$root = $das->executeQuery($dbh,
  "select c.id, c.name, c.employee_of_the_month, d.id, d.name, e.id, e.name " .
  "from company c, department d, employee e " .
  "where e.dept_id = d.id and d.co_id = c.id and c.name='MegaCorp';",
   array('company.id','company.name','company.employee_of_the_month',
   'department.id','department.name','employee.id','employee.name'));
$megacorp = $root['company'][0];

unset($root['company']);
$das -> applyChanges($dbh, $root);

echo "Deleted the company, departments and employees all in one go.\n";

?>

Two-table examples
Limitations
范例


Limitations

There are the following limitations in the current release of the Relational DAS:

  • No support for nulls. There is no support for SQL NULL type. It is not legal to assign PHP NULL to a data object property and the Relational DAS will not write that back as a NULL to the database. If nulls are found in the database on a query, the property will remain unset.

  • Only two types of SDO relationship. The metadata described below allows the Relational DAS to model just two types of SDO relationship: multi-valued containment relationships and single-valued non-containment references. In SDO, whether a property describes a single- or multi-valued relationship, and whether it is containment or non-containment, are independent. The full range of possibilities that SDO allows cannot all be defined. There may be relationships that it would be useful to model but which the current implementation cannot manage. One example is a single-valued containment relationship.

  • No support for the full range of SDO data types. The Relational DAS defines all primitive properties in the SDO model as being of type string. SDO defines a richer set of types containing various integer, float, boolean and data and time types. String is adequate for the purposes of the Relational DAS since the combination of PHP, PDO and the database will ensure that values passed as strings will be converted to the proper type before being put in the database. This does affect some scenarios in which the Relational DAS has to work with a data graph that has come from or will go to a different DAS.

  • Only one foreign key per table. The metadata only provides the means to specify one foreign key per table. This foreign key may be mapped to one of the two types of SDO relationship supported. Obviously there are some scenarios that cannot be described under this limitation - it is not possible to have two non-containment references from one table to another for example.

Three-table example
SDO-DAS-Relational 函数
SDO-DAS-Relational


SDO-DAS-Relational 函数

预定义类

The Relational DAS provides two classes: the Relational DAS itself and the subclass of Exception that can be thrown. The Relational DAS has four publicly useful calls: the constructor, the createRootDataObject() call to obtain the root object of an empty data graph, the executeQuery() call to obtain a data graph containing data from a relational database, and the applyChanges() call to write changes made to a data graph back to the relational database.

SDO_DAS_Relational

The only object other than an SDO_DAS_Relational_Exception with which the application is expected to interact.

方法

  • __construct - construct the Relational DAS with a model derived from the passed metadata

  • createRootDataObject - obtain an otherwise empty data graph containing just the special root object

  • executeQuery - execute an SQL query passed as a literal string and return the results as a normalised data graph

  • executePreparedQuery - execute an SQL query passed as a prepared statement, with a list of values to substitute for placeholders, and return the results as a normalised data graph

  • applyChanges - examine the change summary in the data graph and apply those changes back to the database, subject to an assumption of optimistic concurrency

SDO_DAS_Relational_Exception

Is a subclass of PHP's Exception. It adds no behaviour to Exception. Thrown, with useful descriptive text, to signal errors in the metadata or unexpected failures to perform SQL operations.

Table of Contents

  • SDO_DAS_Relational::applyChanges — Applies the changes made to a data graph back to the database.
  • SDO_DAS_Relational::__construct — Creates an instance of a Relational Data Access Service
  • SDO_DAS_Relational::createRootDataObject — Returns the special root object in an otherwise empty data graph. Used when creating a data graph from scratch.
  • SDO_DAS_Relational::executePreparedQuery — Executes an SQL query passed as a prepared statement, with a list of values to substitute for placeholders, and return the results as a normalised data graph.
  • SDO_DAS_Relational::executeQuery — Executes a given SQL query against a relational database and returns the results as a normalised data graph.
Limitations
SDO_DAS_Relational::applyChanges
SDO-DAS-Relational


Applies the changes made to a data graph back to the database.

SDO-DAS-Relational 函数
SDO_DAS_Relational::__construct
SDO-DAS-Relational 函数
PHP Manual

SDO_DAS_Relational::applyChanges

(^)

SDO_DAS_Relational::applyChanges — Applies the changes made to a data graph back to the database.

说明

void SDO_DAS_Relational::applyChanges ( PDO $database_handle , SDODataObject $root_data_object )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Given a PDO database handle and the special root object of a data graph, examine the change summary in the datagraph and applies the changes to the database. The changes that it can apply can be creations of data objects, deletes of data objects, and modifications to properties of data objects.

参数

PDO_database_handle

Constructed using the PDO extension. A typical line to construct a PDO database handle might look like this:

$dbh = new PDO("mysql:dbname=COMPANYDB;host=localhost",DATABASE_USER,DATABASE_PASSWORD);

root_data_object

The special root object which is at the top of every SDO data graph.

返回值

None. Note however that the datagraph that was passed is still intact and usable. Furthermore, if data objects were created and written back to a table with autogenerated primary keys, then those primary keys will now be set in the data objects. If the changes were successfully written, then the change summary associated with the datagraph will have been cleared, so that it is possible to now make further changes to the data graph and apply those changes in turn. In this way it is possible to work with the same data graph and apply changes repeatedly.

错误／异常

SDO_DAS_Relational::applyChanges() can throw an SDO_DAS_Relational_Exception if it is unable to apply all the changes correctly.

The Relational DAS starts a database transaction before beginning to apply the changes and will commit the transaction only if they are all successful. The Relational DAS generates qualified update and delete statements which contain a where clause that specifies that the row to be updated or deleted must contain the same values that it did when the data was first retrieved. This is how the optimistic concurrency is implemented. If any of the qualified update or delete statements fails to update or delete their target row, it may be because the data has been altered in the database in the meantime. In any event, if any update fails for any reason, the transaction is rolled back and an exception thrown. The exception will contain the generated SQL statement that failed.

The Relational DAS also catches any PDO exceptions and obtains PDO diagnostic information which it includes in an SDO_DAS_Relational_Exception which it then throws.

范例

Please see the Examples section in the general information about the Relational DAS for many examples of calling this method. Please see also the section on Tracing to see how you can see what SQL statements are generated by the Relational DAS.

SDO-DAS-Relational 函数
SDO_DAS_Relational::__construct
SDO-DAS-Relational 函数


Creates an instance of a Relational Data Access Service

SDO_DAS_Relational::applyChanges
SDO_DAS_Relational::createRootDataObject
SDO-DAS-Relational 函数
PHP Manual

SDO_DAS_Relational::__construct

(^)

SDO_DAS_Relational::__construct — Creates an instance of a Relational Data Access Service

说明

SDO_DAS_Relational::__construct ( array $database_metadata [, string $application_root_type [, array $SDO_containment_references_metadata ]] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Constructs an instance of a Relational Data Access Service from the passed metadata.

参数

database_metadata

An array containing one or more table definitions, each of which is an associative array containing the keys name, columns, PK, and optionally, FK. For a full discussion of the metadata, see the metadata section in the general information about the Relational DAS.

application_root_type

The root of each data graph is an object of a special root type and the application data objects come below that. Of the various application types in the SDO model, one has to be the application type immediately below the root of the data graph. If there is only one table in the database metadata, so the application root type can be inferred, this argument can be omitted.

SDO_containment_references_metadata

An array containing one or more definitions of a containment relation, each of which is an associative array containing the keys parent and child. The containment relations describe how the types in the model are connected to form a tree. The type specified as the application root type must be present as one of the parent types in the containment references. If the application only needs to work with one table at a time, and there are no containment relations in the model, this argument can be omitted. For a full discussion of the metadata, see the metadata section in the general information about the Relational DAS.

返回值

Returns an SDO_DAS_Relational object on success.

错误／异常

SDO_DAS_Relational::__construct() throws a SDO_DAS_Relational_Exception if any problems are found in the metadata.

范例

For a full discussion of the metadata, see the metadata section in the general information about the Relational DAS.

SDO_DAS_Relational::applyChanges
SDO_DAS_Relational::createRootDataObject
SDO-DAS-Relational 函数


Returns the special root object in an otherwise empty data graph. Used when creating a data graph from scratch.

SDO_DAS_Relational::__construct
SDO_DAS_Relational::executePreparedQuery
SDO-DAS-Relational 函数
PHP Manual

SDO_DAS_Relational::createRootDataObject

(^)

SDO_DAS_Relational::createRootDataObject — Returns the special root object in an otherwise empty data graph. Used when creating a data graph from scratch.

说明

SDODataObject SDO_DAS_Relational::createRootDataObject ( void )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Returns the special root object at the top of an otherwise empty data graph. This call is used when the application wants to create a data graph from scratch, without having called executeQuery() to create a data graph.

The special root object has one multi-valued containment property, with a name of the application root type that was passed when the Relational DAS was constructed. The property can take values of only that type. The only thing that the application can usefully do with the root type is to call createDataObject() on it, passing the name of the application root type, in order to create a data object of their own application type.

参数

None.

返回值

The root object.

错误／异常

None.

范例

Please see the Examples section in the general information about the Relational DAS for many examples of calling this method.

SDO_DAS_Relational::__construct
SDO_DAS_Relational::executePreparedQuery
SDO-DAS-Relational 函数


Executes an SQL query passed as a prepared statement, with a list of values to substitute for placeholders, and return the results as a normalised data graph.

SDO_DAS_Relational::createRootDataObject
SDO_DAS_Relational::executeQuery
SDO-DAS-Relational 函数
PHP Manual

SDO_DAS_Relational::executePreparedQuery

(^)

SDO_DAS_Relational::executePreparedQuery — Executes an SQL query passed as a prepared statement, with a list of values to substitute for placeholders, and return the results as a normalised data graph.

说明

SDODataObject SDO_DAS_Relational::executePreparedQuery ( PDO $database_handle , PDOStatement $prepared_statement , array $value_list [, array $column_specifier ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Executes a given query against the relational database, using the supplied PDO database handle. Differs from the simpler executeQuery() in that it takes a prepared statement and a list of values. This is the appropriate call to use either when the statement is to executed a number of times with different arguments, and there is therefore a performance benefit to be had from preparing the statement only once, or when the SQL statement is to contain varying values taken from a source that cannot be completely trusted. In this latter case it may be unsafe to construct the SQL statement by simply concatenating the parts of the statement together, since the values may contain pieces of SQL. To guard against this, a so-called SQL injection attack, it is safer to prepare the SQL statement with placeholders (also known as parameter markers, denoted by '?') and supply a list of the values to be substituted as a separate argument. Otherwise this function is the same as executeQuery() in that it uses the model that it built from the metadata to interpret the result set and returns a data graph.

参数

PDO_database_handle

Constructed using the PDO extension. A typical line to construct a PDO database handle might look like this:

$dbh = new PDO("mysql:dbname=COMPANYDB;host=localhost",DATABASE_USER,DATABASE_PASSWORD);

prepared_statement

A prepared SQL statement to be executed against the database. This will have been prepared by PDO's prepare() method.

value_list

An array of the values to be substituted into the SQL statement in place of the placeholders. In the event that there are no placeholders or parameter markers in the SQL statement then this argument can be specified as NULL or as an empty array;

column_specifier

The Relational DAS needs to examine the result set and for every column, know which table and which column of that table it came from. In some circumstances it can find this information for itself, but sometimes it cannot. In these cases a column specifier is needed, which is an array that identifies the columns. Each entry in the array is simply a string in the form table-name.column_name.

The column specifier is needed when there are duplicate column names in the database metadata, For example, in the database used within the examples, all the tables have both a id and a name column. When the Relational DAS fetches the result set from PDO it can do so with the PDO_FETCH_ASSOC attribute, which will cause the columns in the results set to be labelled with the column name, but will not distinguish duplicates. So this will only work when there are no duplicates possible in the results set.

To summarise, specify a column specifier array whenever there is any uncertainty about which column could be from which table and only omit it when every column name in the database metadata is unique.

All of the examples in the Examples use a column specifier. There is one example in the Scenarios directory of the installation that does not: that which works with just the employee table, and because it works with just one table, there can not exist duplicate column names.

返回值

Returns a data graph. Specifically, it returns a root object of a special type. Under this root object will be the data from the result set. The root object will have a multi-valued containment property with the same name as the application root type specified on the constructor, and that property will contain one or more data objects of the application root type.

In the event that the query returns no data, the special root object will still be returned but the containment property for the application root type will be empty.

错误／异常

SDO_DAS_Relational::executePreparedQuery() can throw an SDO_DAS_Relational_Exception if it is unable to construct the data graph correctly. This can occur for a number of reasons: for example if it finds that it does not have primary keys in the result set for all the objects. It also catches any PDO exceptions and obtains PDO diagnostic information which it includes in an SDO_DAS_Relational_Exception which it then throws.

范例

Example #1 Retrieving a data object using executePreparedQuery()

In this example a single data object is retrieved from the database - or possibly more than one if there is more than one company called 'Acme'. For each company returned, the name and id properties are echoed.

Other examples of the use of executePreparedQuery() can be found in the example code supplied in sdo/DAS/Relational/Scenarios.

<?php
require_once 'SDO/DAS/Relational.php';
require_once 'company_metadata.inc.php';

/**************************************************************
 * Construct the DAS with the metadata
 ***************************************************************/
$das = new SDO_DAS_Relational ($database_metadata,'company',$SDO_reference_metadata);

/**************************************************************
 * Get a database connection
 ***************************************************************/
$dbh = new PDO(PDO_DSN,DATABASE_USER,DATABASE_PASSWORD);

/**************************************************************
 * Issue a query to obtain a company object - possibly more if they exist
 * Use a prepared query with a placeholder.
 ***************************************************************/
$name = 'Acme';
$pdo_stmt = $dbh->prepare('select name, id from company where name=?');
$root = $das->executePreparedQuery(
    $dbh,
    $pdo_stmt,
    array($name),
    array('company.name', 'company.id'));

/**************************************************************
 * Echo name and id
 ***************************************************************/
foreach ($root['company'] as $company) {
    echo "Company obtained from the database has name = " .
    $company['name'] . " and id " . $company['id'] . "\n";
}
?>

SDO_DAS_Relational::createRootDataObject
SDO_DAS_Relational::executeQuery
SDO-DAS-Relational 函数


Executes a given SQL query against a relational database and returns the results as a normalised data graph.

SDO_DAS_Relational::executePreparedQuery
SDO DAS XML
SDO-DAS-Relational 函数
PHP Manual

SDO_DAS_Relational::executeQuery

(^)

SDO_DAS_Relational::executeQuery — Executes a given SQL query against a relational database and returns the results as a normalised data graph.

说明

SDODataObject SDO_DAS_Relational::executeQuery ( PDO $database_handle , string $SQL_statement [, array $column_specifier ] )
Warning

此函数是实验性的。此函数的表象，包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担 。

Executes a given query against the relational database, using the supplied PDO database handle. Uses the model that it built from the metadata to interpret the result set. Returns a data graph.

参数

PDO_database_handle

Constructed using the PDO extension. A typical line to construct a PDO database handle might look like this:

$dbh = new PDO("mysql:dbname=COMPANYDB;host=localhost",DATABASE_USER,DATABASE_PASSWORD);

SQL_statement

The SQL statement to be executed against the database.

column_specifier

The Relational DAS needs to examine the result set and for every column, know which table and which column of that table it came from. In some circumstances it can find this information for itself, but sometimes it cannot. In these cases a column specifier is needed, which is an array that identifies the columns. Each entry in the array is simply a string in the form table-name.column_name.

The column specifier is needed when there are duplicate column names in the database metadata. For example, in the database used within the examples, all the tables have both a id and a name column. When the Relational DAS fetches the result set from PDO it can do so with the PDO_FETCH_ASSOC attribute, which will cause the columns in the results set to be labelled with the column name, but will not distinguish duplicates. So this will only work when there are no duplicates possible in the results set.

To summarise, specify a column specifier array whenever there is any uncertainty about which column could be from which table and only omit it when every column name in the database metadata is unique.

All of the examples in the Examples use a column specifier. There is one example in the Scenarios directory of the installation that does not: that which works with just the employee table, and because it works with just one table, there can not exist duplicate column names.

返回值

Returns a data graph. Specifically, it returns a root object of a special type. Under this root object will be the data from the result set. The root object will have a multi-valued containment property with the same name as the application root type specified on the constructor, and that property will contain one or more data objects of the application root type.

In the event that the query returns no data, the special root object will still be returned but the containment property for the application root type will be empty.

错误／异常

SDO_DAS_Relational::executeQuery() can throw an SDO_DAS_Relational_Exception if it is unable to construct the data graph correctly. This can occur for a number of reasons: for example if it finds that it does not have primary keys in the result set for all the objects. It also catches any PDO exceptions and obtains PDO diagnostic information which it includes in an SDO_DAS_Relational_Exception which it then throws.

范例

Please see the Examples section in the general information about the Relational DAS for many examples of calling this method.

SDO_DAS_Relational::executePreparedQuery
SDO DAS XML
SDO-DAS-Relational 函数


SDO XML Data Access Service

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
  • SDO DAS XML 函数
    • SDO_DAS_XML::addTypes — To load a second or subsequent schema file to a SDO_DAS_XML object
    • SDO_DAS_XML::create — To create SDO_DAS_XML object for a given schema file
    • SDO_DAS_XML::createDataObject — Creates SDO_DataObject for a given namespace URI and type name
    • SDO_DAS_XML::createDocument — Creates an XML Document object from scratch, without the need to load a document from a file or string.
    • SDO_DAS_XML::loadFile — Returns SDO_DAS_XML_Document object for a given path to xml instance document
    • SDO_DAS_XML::loadString — Returns SDO_DAS_XML_Document for a given xml instance string
    • SDO_DAS_XML::saveFile — Saves the SDO_DAS_XML_Document object to a file
    • SDO_DAS_XML::saveString — Saves the SDO_DAS_XML_Document object to a string
    • SDO_DAS_XML_Document::getRootDataObject — Returns the root SDO_DataObject
    • SDO_DAS_XML_Document::getRootElementName — Returns root element's name
    • SDO_DAS_XML_Document::getRootElementURI — Returns root element's URI string
    • SDO_DAS_XML_Document::setEncoding — Sets the given string as encoding
    • SDO_DAS_XML_Document::setXMLDeclaration — Sets the xml declaration
    • SDO_DAS_XML_Document::setXMLVersion — Sets the given string as xml version
SDO_DAS_Relational::executeQuery
简介
XML 操作


简介

In order to use the XML Data Access Service for Service Data Objects, you will need to understand some of the concepts behind SDO: the data graph, the data object, XPath and property expressions, and so on. If you are not familiar with these ideas, you might want to look first at the section on SDO.

The job of the XML DAS is to move data between the application and an XML data source, which can be either a file or a URL. SDOs are always created and maintained according to a model which defines type names and what property names each type may have. For data which is from XML, this SDO model is built from a schema file written in XML schema language (an xsd file). This schema file is usually passed to the create method when the XMLDAS is initialised. The » SDO 2.0 specification defines the mapping between XML types and SDO types. There are a number of small limitations in the PHP support - not everything which is in the specification can be done - and these limitations are summarised in a later section.

SDO DAS XML
安装／配置
SDO DAS XML


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
SDO DAS XML


需求

The SDO XML Data Access Service requires PHP 5.1.0 or higher. It is packaged with the SDO extension and requires SDO to have been installed. See the SDO installation instructions for the details of how to do this.

安装／配置
安装
安装／配置


安装

The XML Data Access Service is packaged and installed as part of the SDO extension. Please Refer SDO installation instructions.

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
范例
SDO DAS XML


范例

Several of the following examples are based on the letter example described in the SDO documentation. The examples assume the XML Schema for the letter is contained in a file letter.xsd and the letter instance is in the file letter.xml. These two files are reproduced here:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:letter="http://letterSchema"
  targetNamespace="http://letterSchema">
  <xsd:element name="letters" type="letter:FormLetter"/>
  <xsd:complexType name="FormLetter" mixed="true">
    <xsd:sequence>
      <xsd:element name="date" minOccurs="0" type="xsd:string"/>
      <xsd:element name="firstName" minOccurs="0" type="xsd:string"/>
      <xsd:element name="lastName" minOccurs="0" type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>

<letter:letters xmlns:letter="http://letterSchema">
  <date>March 1, 2005</date>
  Mutual of Omaha
  Wild Kingdom, USA
  Dear
  <firstName>Casy</firstName>
  <lastName>Crocodile</lastName>
  Please buy more shark repellent.
  Your premium is past due.
</letter:letters>

Example #1 Loading, altering, and saving an XML document

The following example shows how an XML document can be loaded from a file, altered, and written back.

<?php
/**
 * Load, update, and save an XML document
 */
try {
   $xmldas = SDO_DAS_XML::create("letter.xsd");
   $document = $xmldas->loadFile("letter.xml");
   $root_data_object = $document->getRootDataObject();
   $root_data_object->date = "September 03, 2004";
   $root_data_object->firstName = "Anantoju";
   $root_data_object->lastName = "Madhu";
   $xmldas->saveFile($document, "letter-out.xml");
   echo "New file has been written:\n";
   print file_get_contents("letter-out.xml");
} catch (SDO_Exception $e) {
   print($e->getMessage());
}
?>

An instance of the XML DAS is first obtained from the SDO_DAS_XML::create() method, which is a static method of the SDO_DAS_XML class. The location of the xsd is passed as a parameter. Once we have an instance of the XML DAS initialised with a given schema, we can use it to load the instance document using the loadFile() method. There is also a loadString() method if you want to load an XML instance document from a string. If the instance document loads successfully, you will be returned an object of type SDO_DAS_XML_Document, on which you can call the getRootDataObject() method to get the SDO data object which is the root of the SDO data graph. You can then use SDO operations to change the graph. In this example we alter the date, firstName, and lastName properties. Then we use the saveFile() method to write the changed document back to the file system. The saveFile method has an optional extra integer argument which if specified will cause the XML DAS to format the XML, using the integer as the amount to indent by at each change in level on the document.

This will write the following to letter-out.xml.

<?xml version="1.0" encoding="UTF-8"?>
<FormLetter xmlns="http://letterSchema" xsi:type="FormLetter" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <date>September 03, 2004</date>
  Mutual of Omaha
  Wild Kingdom, USA
  Dear
  <firstName>Anantoju</firstName>
  <lastName>Madhu</lastName>
  Please buy more shark repellent.
  Your premium is past due.
</FormLetter>

Example #2 Creating a new XML document

The previous example loaded the document from a file. This example shows how to create an SDO data graph in memory. In this example it is then saved to an XML string. Furthermore, because the letter contains both structured and unstructured content, it uses the Sequence API as well assignments to properties to construct the data graph.

<?php
/**
 * Create an XML document from scratch
 */
try {
   $xmldas = SDO_DAS_XML::create("letter.xsd");
   try {
       $doc = $xmldas->createDocument();
       $rdo = $doc->getRootDataObject();
       $seq = $rdo->getSequence();
       $seq->insert("April 09, 2005", NULL, 'date');
       $seq->insert("Acme Inc. ", NULL, NULL);
       $seq->insert("United Kingdom. ");
       $seq->insert("Dear", NULL, NULL);
       $seq->insert("Tarun", NULL, "firstName");
       $seq->insert("Nayaraaa", NULL, "lastName");
       $rdo->lastName = "Nayar";
       $seq->insert("Please note that your order number ");
       $seq->insert(12345);
       $seq->insert(" has been dispatched today. Thanks for your business with us.");
       print($xmldas->saveString($doc));
   } catch (SDO_Exception $e) {
       print($e);
   }
} catch (SDO_Exception $e) {
   print("Problem creating an XML document: " . $e->getMessage());
}
?>

The createDocument() method on the XML DAS returns a document object with a single root data object corresponding to an empty document element. The element name of the document element is known from the schema file. If there is any ambiguity about what the document element is, as there can be when more than one schema has been loaded into the same XML DAS, the element name and the namespace URI can be passed to the createDocument() method.

This will emit the following output (line breaks have been inserted for readability):

<?xml version="1.0" encoding="UTF-8"?>
<FormLetter xmlns="http://letterSchema" xsi:type="FormLetter"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<date>April 09, 2005</date>
Acme Inc. United Kingdom.
Dear
<firstName>Tarun</firstName>
<lastName>Nayar</lastName>
Please note that your order number 12345 has been
dispatched today. Thanks for your business with us.
</FormLetter>

Example #3 Setting XML document properties

This third example shows you how to set the XML version and encoding on the document object. These will be used when the XML is written out. If no XML declaration is wanted at all (perhaps you want to generate the XML as a string to embed in something) then you can use the setXMLDeclaration() method to suppress it.

<?php
/**
 * Illustrate the calls that control the XML declaration
 */
   $xmldas = SDO_DAS_XML::create("letter.xsd");
   $document = $xmldas->loadFile("letter.xml");
   $document->setXMLVersion("1.1");
   $document->setEncoding("ISO-8859-1");
   print($xmldas->saveString($document));
?>

The XML version and encoding are set in the XML declaration at the top of the XML document.

<?xml version="1.1" encoding="utf-8"?>
.../...

Example #4 Using an open type

This fourth example illustrates the use of an SDO open type and the use of the createDataObject() method. For this example we use the following two schema:

<schema
  xmlns="http://www.w3.org/2001/XMLSchema">

  <element name="jungle">
    <complexType>
      <sequence>
        <any minOccurs="0" maxOccurs="unbounded"/>
      </sequence>
    </complexType>
  </element>

</schema>

Note the presence of the any element in the definition. This first schema defines the jungle complex type as containing a sequence of any other type. The other types that the example will use are defined in a second schema file:

<schema xmlns= "http://www.w3.org/2001/XMLSchema">

   <complexType name="snakeType">
     <sequence>
       <element name= "name" type="string"/>
       <element name= "length" type="positiveInteger" />
     </sequence>
   </complexType>

   <complexType name="bearType">
     <sequence>
       <element name= "name" type="string"/>
       <element name= "weight" type="positiveInteger" />
     </sequence>
   </complexType>

   <complexType name="pantherType">
     <sequence>
       <element name= "name" type="string"/>
       <element name= "colour" type="string" />
     </sequence>
   </complexType>

</schema>

Here is the example PHP code that uses these two schema files:

<?php

/**
 * Illustrate open types and the use of the addTypes() method
 */

$xmldas = SDO_DAS_XML::create();
$xmldas->addTypes("jungle.xsd"); // this is an open type i.e. the xsd specifies it can contain "any" type
$xmldas->addTypes('animalTypes.xsd');

$baloo            = $xmldas->createDataObject('','bearType');
$baloo->name      = "Baloo";
$baloo->weight    = 800;

$bagheera         = $xmldas->createDataObject('','pantherType');
$bagheera->name   = "Bagheera";
$bagheera->colour = 'inky black';

$kaa              = $xmldas->createDataObject('','snakeType');
$kaa->name        = "Kaa";
$kaa->length      = 25;

$document         = $xmldas->createDocument();
$do               = $document->getRootDataObject();
$do->bear         = $baloo;
$do->panther      = $bagheera;
$do->snake        = $kaa;

print($xmldas->saveString($document,2));

?>

These two schema files are loaded into the XML DAS with first the create() and addTypes() methods. The createDataObject() method is used to create three separate data objects. In each case the namespaceURI and typename of the type are passed to the createDataObject() method: in this example the namespace URI is blank because no namespace is used in the schema. Once the three data objects - representing a bear, a panther and a snake - have been created, a document object is created with the createDocument() method. In this case there is no ambiguity about what the document element of the document should be - as the second schema file only defines complex types, the document element can only be the global jungle element defined in the first schema. This document will have a single root data object corresponding to an empty document element jungle. As this is an open type, properties can be added at will. When the first assignment is made to $do->bear, a property bear is added to the root data object: likewise for the next two assignments. When the document is written out by the saveString() method, the resulting document is:

<?xml version="1.0" encoding="UTF-8"?>
<jungle xsi:type="jungle" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <bear xsi:type="bearType">
    <name>Baloo</name>
    <weight>800</weight>
  </bear>
  <panther xsi:type="pantherType">
    <name>Bagheera</name>
    <colour>inky black</colour>
  </panther>
  <snake xsi:type="snakeType">
    <name>Kaa</name>
    <length>25</length>
  </snake>
</jungle>

Example #5 Finding out what you can from the document

This example is intended to illustrate how you can find the element name and namespace of the document element from the XML Document object, and the SDO type and namespace from the root data object of the XML data object, and how they relate to one another. This can be difficult to understand because there are four method calls: two can be made against the Document object, and two that can be made against any data object including the root data object. Because of the rules that define how the SDO model is derived from the XML model, when the data object concerned is the root object that represents the document object for the document, only three possible values can come back from these four method calls.

The two method calls that can be made against the document are getRootElementName() and getRootEelementURI(). These return the element name and namespace of the document element, respectively.

The two method calls that can be made against any data object are getTypeName() and getTypeNamespaceURI(). These return the SDO type name and type namespace of the data object, respectively.

Always, calling getRootElementURI() on the document object will return the same value as calling getNamespaceURI() on the root data object. Essentially, the information is all derived from the first few lines of the schema file, where there are three distinct pieces of information. For illustration, here again are the first few lines of the letter.xsd that we used above.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:letter="http://letterSchema"
            targetNamespace="http://letterSchema">

  <xsd:element name="letters" type="letter:FormLetter"/>

  <xsd:complexType name="FormLetter" mixed="true">
    .../...

The three important values are:

  • letters, the name of the document element

  • FormLetter, the name of the complex type of the document element. This is also the name of the SDO type of the root data object.

  • http://letterSchema, the namespace to which the document element belongs. This is also the namespaceURI of the SDO type of the root data object.

It is part of the XML-SDO mapping rules that when the SDO model is built from the schema file, the typename and namespaceURI of the SDO types for the root element are taken from those of the complex type of the document element, where it exists. Hence in this example the typename of the root data object is FormLetter. In the event that there is no separate complex type definition for the document element, when the type is defined inline and is anonymous, the SDO type name will be the same as the element name.

The following program loads the letter document and checks the return values from each of the four calls.

<?php
/**
 * Finding out what you can about the document and document element
 * This can be quite hard to understand because there are four calls
 * Two calls are made against the document
 * Two calls are made against the root data object and its model
 * Because of the SDO-XML mapping rules and how the SDO model is derived
 * from the XML model, only three possible values can come back from these four calls.
 * Always, $document->getRootElementURI() == (type of root data object)->namespaceURI
 * Essentially, it all comes form the first few lines of the xsd:
 * <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 *   xmlns:letter="http://letterSchema"
 *   targetNamespace="http://letterSchema">
 *   <xsd:element name="letters" type="letter:FormLetter"/>
 */

$xmldas = SDO_DAS_XML::create("letter.xsd");
$document = $xmldas->loadFile("letter.xml");
$root_do = $document->getRootDataObject();

/**
 * The "root element name" is the element name of the document element
 * in this case 'letters'
 * This matches the 'name' attribute of the document element in the xsd and matches
 * the element name from the xml
 */
echo "The document element name is " . $document->getRootElementName() . "\n";
assert($document->getRootElementName() == 'letters'); // a property of the document

/**
 * The "root element URI" is the namespace part of the element name of the document element
 * in this case 'http://letterSchema' since 'letters' is in that namespace
 * This is taken from the xsd and matches the namespace picked up from the xml
 */
echo "The document element is in the namespace " . $document->getRootElementURI() . "\n";
assert($document->getRootElementURI() == 'http://letterSchema'); // a property of the document

/**
 * The type name is taken from the SDO model
 * The XML-SDO mapping rules make this either:
 *   The name of the complexType if there is one (in this case there is)
 *   The document element name if there no complexType
 * This is taken from the xsd
 */
echo "The type name of the root data object is " . $root_do->getTypeName() . "\n";
assert($root_do->getTypeName() == 'FormLetter');

/**
 * The type's namespaceURI is taken from the SDO model
 * The XML-SDO mapping rules ensure that this will always be the same as
 * the namepace URI of the document element
 */
echo "The namespaceURI of the root data object is " . $root_do->getTypeNamespaceURI() . "\n";
assert($root_do->getTypeNamespaceURI() == 'http://letterSchema');

?>

The output from this program is as follows:

The document element name is letters
The document element is in the namespace http://letterSchema
The type name of the root data object is FormLetter
The namespaceURI of the root data object is http://letterSchema

Example #6 Printing the SDO model

The XML DAS provides a simple means to see what types and properties have been loaded. The php "print" or "echo" instruction will print out the types and properties.

<?php
/**
 * Illustrate printing out the model
 */

$xmldas = SDO_DAS_XML::create("letter.xsd");
print $xmldas;

?>

The output from this program is as follows:

object(SDO_XML_DAS)#1 {
18 types have been defined. The types and their properties are::
1. commonj.sdo:BigDecimal
2. commonj.sdo:BigInteger
3. commonj.sdo:Boolean
4. commonj.sdo:Byte
5. commonj.sdo:Bytes
6. commonj.sdo:ChangeSummary
7. commonj.sdo:Character
8. commonj.sdo:DataObject
9. commonj.sdo:Date
10. commonj.sdo:Double
11. commonj.sdo:Float
12. commonj.sdo:Integer
13. commonj.sdo:Long
14. commonj.sdo:Short
15. commonj.sdo:String
16. commonj.sdo:URI
17. http://letterSchema:FormLetter
    - date (commonj.sdo:String)
    - firstName (commonj.sdo:String)
    - lastName (commonj.sdo:String)
18. http://letterSchema:RootType
    - letters (http://letterSchema:FormLetter)
预定义常量
SDO DAS XML 函数
SDO DAS XML


SDO DAS XML 函数

预定义类

The XML DAS provides two main classes. The first is SDO_DAS_XML which is the main class used to fetch the data from the XML source and used to write the data back. The second is the SDO_DAS_XML_Document class, which represents the data in the XML document.

There are also some exception classes which can be thrown if errors are found when looking for or parsing the xsd or xml files.

SDO_DAS_XML

This is the main class of the XML DAS, which is used fetch the data from the xml source and also used to write the data back. Other than the methods to load and save xml files,

方法

  • create This is a static method available in the SDO_DAS_XML class. Used to construct an SDO_DAS_XML object.

  • addTypes Works in much the same way as create() but used to add the contents of a second or subsequent schema file to an XML DAS that has already been created.

  • createDataObject Can be used to construct an SDO data object of a given type.

  • createDocument Can be used to construct an XML Document object from scratch.

  • loadFile Loads the xml instance document from a file. This file can be at local file system or it can be on a remote host.

  • loadString same as the above method. Loads the xml instance which is available as string.

  • saveFile save SDO_DAS_XML_Document object as a xml file.

  • saveString save SDO_DAS_XML_Document object as a xml string.

SDO_DAS_XML_Document

This class can be used to get to the name and namespace of the document element, and to get to the root data object of the document. Lastly, it can also be used to set the XML version and encoding of a document on output.

方法

  • getRootDataObject gets the root DataObject.

  • getRootElementName gets the root DataObject's name.

  • getRootElementURI gets the root DataObject's URI.

  • setEncoding sets the encoding string with the given value.

  • setXMLDeclaraion to set/unset the xml declaration.

  • setXMLVersion sets the xml version with the given value.

SDO_DAS_XML_ParserException

Is a subclass of SDO_Exception. Thrown for any parser errors while loading the xsd/xml file.

SDO_DAS_XML_FileException

Is a subclass of SDO_Exception. Thrown by any of the methods that load data from a file, when the file cannot be found.

Limitations compared with SDO 2.0 specification

The » SDO 2.0 specification defines the mapping between XML types and SDO types. With Java SDO, this mapping is implemented by the XMLHelper. With SDO for PHP, this mapping is implemented by the XML Data Access Service. The XML DAS implements the mapping described in the SDO 2.0 specification with some restrictions. A detailed list is of the limitations is:

XML Simple Types

  1. Simple Type with sdoJava:instanceClass - no PHP equivalent provided.

  2. Simple Type with sdoJava:extendedInstanceClass - no PHP equivalent provided.

  3. Simple Type with list of itemType.

  4. Simple Type with union.

XML Complex Types

  1. Complex Type with sdo:aliasName - no PHP support for SDO Type aliases.

XSD Attribute

  1. Attribute with sdo:aliasName - no PHP support for SDO property aliases.

  2. Attribute with default value - no PHP support for SDO property defaults.

  3. Attribute with fixed value - no PHP support for SDO read-only properties or default values.

  4. Attribute referencing a DataObject with sdo:propertyType - no support for sdo:propertyType="...".

  5. Attribute with bi-directional property to a DataObject with sdo:oppositeProperty and sdo:propertyType - no PHP support for SDO opposite.

XSD Elements

  1. Element with sdo:aliasName - no PHP support for SDO property aliases.

  2. Element with substitution group.

XSD Elements with Simple Type

  1. Element of SimpleType with default - no PHP support for SDO defaults

  2. Element of SimpleType with fixed value - no PHP support for SDO read-only properties or default values.

  3. Element of SimpleType with sdo:string - no support for sdo:string="true".

  4. Element referencing a DataObject with sdo:propertyType - no support for sdo:propertyType="..."

  5. Element with bi-directional reference to a DataObject with sdo:oppositeProperty and sdo:propertyType - no PHP support for SDO opposite.

Table of Contents

  • SDO_DAS_XML::addTypes — To load a second or subsequent schema file to a SDO_DAS_XML object
  • SDO_DAS_XML::create — To create SDO_DAS_XML object for a given schema file
  • SDO_DAS_XML::createDataObject — Creates SDO_DataObject for a given namespace URI and type name
  • SDO_DAS_XML::createDocument — Creates an XML Document object from scratch, without the need to load a document from a file or string.
  • SDO_DAS_XML::loadFile — Returns SDO_DAS_XML_Document object for a given path to xml instance document
  • SDO_DAS_XML::loadString — Returns SDO_DAS_XML_Document for a given xml instance string
  • SDO_DAS_XML::saveFile — Saves the SDO_DAS_XML_Document object to a file
  • SDO_DAS_XML::saveString — Saves the SDO_DAS_XML_Document object to a string
  • SDO_DAS_XML_Document::getRootDataObject — Returns the root SDO_DataObject
  • SDO_DAS_XML_Document::getRootElementName — Returns root element's name
  • SDO_DAS_XML_Document::getRootElementURI — Returns root element's URI string
  • SDO_DAS_XML_Document::setEncoding — Sets the given string as encoding
  • SDO_DAS_XML_Document::setXMLDeclaration — Sets the xml declaration
  • SDO_DAS_XML_Document::setXMLVersion — Sets the given string as xml version
范例
SDO_DAS_XML::addTypes
SDO DAS XML


To load a second or subsequent schema file to a SDO_DAS_XML object

SDO DAS XML 函数
SDO_DAS_XML::create
SDO DAS XML 函数
PHP Manual

SDO_DAS_XML::addTypes

(^)

SDO_DAS_XML::addTypes — To load a second or subsequent schema file to a SDO_DAS_XML object

说明

void SDO_DAS_XML::addTypes ( string $xsd_file )

Load a second or subsequent schema file to an XML DAS that has already been created with the static method create(). Although the file may be any valid schema file, a likely reason for using this method is to add a schema file containing definitions of extra complex types, hence the name. See Example 4 of the parent document for an example.

参数

xsd_file

Path to XSD Schema file.

返回值

None if successful, otherwise throws an exception as described below.

错误／异常

SDO_TypeNotFoundException

Thrown if a type is not defined in the underlying model.

SDO_DAS_XML_ParserException

Thrown for any problems while parsing the given XSD File.

SDO_DAS_XML_FileException

Thrown if the specified file cannot be found.

SDO DAS XML 函数
SDO_DAS_XML::create
SDO DAS XML 函数


To create SDO_DAS_XML object for a given schema file

SDO_DAS_XML::addTypes
SDO_DAS_XML::createDataObject
SDO DAS XML 函数
PHP Manual

SDO_DAS_XML::create

(^)

SDO_DAS_XML::create — To create SDO_DAS_XML object for a given schema file

说明

SDO_DAS_XML SDO_DAS_XML::create ([ mixed $xsd_file [, string $key ]] )

This is the only static method of SDO_DAS_XML class. Used to instantiate SDO_DAS_XML object.

参数

xsd_file

Path to XSD Schema file. This is optional. If omitted a DAS will be created that only has the SDO base types defined. Schema files can then be loaded with the addTypes() method. Can be string or array of values.

key

返回值

Returns SDO_DAS_XML object on success otherwise throws an exception as described below.

错误／异常

SDO_TypeNotFoundException

Thrown if a type is not defined in the underlying model.

SDO_DAS_XML_ParserException

Thrown for any problems while parsing the given XSD File.

SDO_DAS_XML_FileException

Thrown if the specified file cannot be found.

SDO_DAS_XML::addTypes
SDO_DAS_XML::createDataObject
SDO DAS XML 函数


Creates SDO_DataObject for a given namespace URI and type name

SDO_DAS_XML::create
SDO_DAS_XML::createDocument
SDO DAS XML 函数
PHP Manual

SDO_DAS_XML::createDataObject

(^)

SDO_DAS_XML::createDataObject — Creates SDO_DataObject for a given namespace URI and type name

说明

SDO_DataObject SDO_DAS_XML::createDataObject ( string $namespace_uri , string $type_name )

Creates SDO_DataObject for a given namespace URI and type name. The type should be defined in the underlying model otherwise SDO_TypeNotFoundException will be thrown.

参数

namespace_uri

Namespace URI of the type name.

type_name

Type Name.

返回值

Returns SDO_DataObject on success.

错误／异常

SDO_TypeNotFoundException

Thrown if a type is not defined in the underlying model.

SDO_DAS_XML::create
SDO_DAS_XML::createDocument
SDO DAS XML 函数


Creates an XML Document object from scratch, without the need to load a document from a file or string.

SDO_DAS_XML::createDataObject
SDO_DAS_XML::loadFile
SDO DAS XML 函数
PHP Manual

SDO_DAS_XML::createDocument

(^)

SDO_DAS_XML::createDocument — Creates an XML Document object from scratch, without the need to load a document from a file or string.

说明

SDO_DAS_XML_Document SDO_DAS_XML::createDocument ([ string $document_element_name ] )
SDO_DAS_XML_Document SDO_DAS_XML::createDocument ( string $document_element_namespace_URI , string $document_element_name [, SDO_DataObject $dataobject ] )

Creates an XML Document object. This will contain just one empty root element on which none of the properties will have been set. The purpose of this call is to allow an application to create an XML document from scratch without the need to load a document from a file or string. The document that is created will be as if a document had been loaded that contained just a single empty document element with no attributes set or elements within it.

createDocument() may need to be told what the document element is. This will not be necessary in simple cases. When there is no ambiguity then no parameter need be passed to the method. However it is possible to load more than one schema file into the same XML DAS and in this case there may be more than one possible document element defined: furthermore it is even possible that there are two possible document elements that differ only in the namespace. To cope with these cases it is possible to specify either the document element name, or both the document element name and namespace to the method.

参数

document_element_name

The name of the document element. Only needed if there is more than one possibility.

document_element_namespace_URI

The namespace part of the document element name. Only needed if there is more than one possible document element with the same name.

dataobject

返回值

Returns an SDO_XML_DAS_Document object on success.

错误／异常

SDO_UnsupportedOperationException

Thrown if an element name or element name and namespace URI is passed, but not found in the underlying model.

SDO_DAS_XML::createDataObject
SDO_DAS_XML::loadFile
SDO DAS XML 函数


Returns SDO_DAS_XML_Document object for a given path to xml instance document

SDO_DAS_XML::createDocument
SDO_DAS_XML::loadString
SDO DAS XML 函数
PHP Manual

SDO_DAS_XML::loadFile

(^)

SDO_DAS_XML::loadFile — Returns SDO_DAS_XML_Document object for a given path to xml instance document

说明

SDO_XMLDocument SDO_DAS_XML::loadFile ( string $xml_file )

Constructs the tree of SDO_DataObjects from the given address to xml instance document. Returns SDO_DAS_XML_Document Object. Use SDO_DAS_XML_Document::getRootDataObject method to get root data object.

参数

xml_file

Path to Instance document. This can be a path to a local file or it can be a URL.

返回值

Returns SDO_DAS_XML_Document object on Success or throws exception as described.

错误／异常

SDO_TypeNotFoundException

Thrown if a type is not defined by the underlying model.

SDO_PropertyNotFoundException

Thrown if a property within a type is not defined in the underlying model.

SDO_DAS_XML_ParserException

Thrown for any problems while parsing the given XSD File.

SDO_DAS_XML_FileException

Thrown if the specified file cannot be found.

SDO_DAS_XML::createDocument
SDO_DAS_XML::loadString
SDO DAS XML 函数


Returns SDO_DAS_XML_Document for a given xml instance string

SDO_DAS_XML::loadFile
SDO_DAS_XML::saveFile
SDO DAS XML 函数
PHP Manual

SDO_DAS_XML::loadString

(^)

SDO_DAS_XML::loadString — Returns SDO_DAS_XML_Document for a given xml instance string

说明

SDO_DAS_XML_Document SDO_DAS_XML::loadString ( string $xml_string )

Constructs the tree of SDO_DataObjects from the given xml instance string. Returns SDO_DAS_XML_Document Object. Use SDO_DAS_XML_Document::getRootDataObject method to get root data object.

参数

xml_string

xml string.

返回值

Returns SDO_DAS_XML_Document object on Success or throws exception as described.

错误／异常

SDO_TypeNotFoundException

Thrown if a type is not defined by the underlying model.

SDO_PropertyNotFoundException

Thrown if the a property within a type is not defined in the underlying model.

SDO_DAS_XML_ParserException

Thrown for any problems while parsing the given XSD File.

SDO_DAS_XML::loadFile
SDO_DAS_XML::saveFile
SDO DAS XML 函数


Saves the SDO_DAS_XML_Document object to a file

SDO_DAS_XML::loadString
SDO_DAS_XML::saveString
SDO DAS XML 函数
PHP Manual

SDO_DAS_XML::saveFile

(^)

SDO_DAS_XML::saveFile — Saves the SDO_DAS_XML_Document object to a file

说明

void SDO_DAS_XML::saveFile ( SDO_XMLDocument $xdoc , string $xml_file [, int $indent ] )

Saves the SDO_DAS_XML_Document object to a file.

参数

xdoc

SDO_DAS_XML_Document object.

xml_file

xml file.

indent

Optional argument to specify that the xml should be formatted. A non-negative integer is the amount to indent each level of the xml. So, the integer 2, for example, will indent the xml so that each contained element is two spaces further to the right than its containing element. The integer 0 will cause the xml to be completely left-aligned. The integer -1 means no formatting - the xml will come out on one long line.

返回值

None.

错误／异常

SDO_DAS_XML_FileException

Thrown if the specified file cannot be found.

SDO_DAS_XML::loadString
SDO_DAS_XML::saveString
SDO DAS XML 函数


Saves the SDO_DAS_XML_Document object to a string

SDO_DAS_XML::saveFile
SDO_DAS_XML_Document::getRootDataObject
SDO DAS XML 函数
PHP Manual

SDO_DAS_XML::saveString

(^)

SDO_DAS_XML::saveString — Saves the SDO_DAS_XML_Document object to a string

说明

string SDO_DAS_XML::saveString ( SDO_XMLDocument $xdoc [, int $indent ] )

Saves the SDO_DAS_XML_Document object to string.

参数

xdoc

SDO_DAS_XML_Document object.

indent

Optional argument to specify that the xml should be formatted. A non-negative integer is the amount to indent each level of the xml. So, the integer 2, for example, will indent the xml so that each contained element is two spaces further to the right than its containing element. The integer 0 will cause the xml to be completely left-aligned. The integer -1 means no formatting - the xml will come out on one long line.

返回值

xml string.

SDO_DAS_XML::saveFile
SDO_DAS_XML_Document::getRootDataObject
SDO DAS XML 函数


Returns the root SDO_DataObject

SDO_DAS_XML::saveString
SDO_DAS_XML_Document::getRootElementName
SDO DAS XML 函数
PHP Manual

SDO_DAS_XML_Document::getRootDataObject

(^)

SDO_DAS_XML_Document::getRootDataObject — Returns the root SDO_DataObject

说明

SDO_DataObject SDO_DAS_XML_Document::getRootDataObject ( void )

Returns the root SDO_DataObject.

参数

返回值

Returns the root SDO_DataObject.

SDO_DAS_XML::saveString
SDO_DAS_XML_Document::getRootElementName
SDO DAS XML 函数


Returns root element's name

SDO_DAS_XML_Document::getRootDataObject
SDO_DAS_XML_Document::getRootElementURI
SDO DAS XML 函数
PHP Manual

SDO_DAS_XML_Document::getRootElementName

(^)

SDO_DAS_XML_Document::getRootElementName — Returns root element's name

说明

string SDO_DAS_XML_Document::getRootElementName ( void )

Returns root element's name.

参数

返回值

Returns root element's name.

SDO_DAS_XML_Document::getRootDataObject
SDO_DAS_XML_Document::getRootElementURI
SDO DAS XML 函数


Returns root element's URI string

SDO_DAS_XML_Document::getRootElementName
SDO_DAS_XML_Document::setEncoding
SDO DAS XML 函数
PHP Manual

SDO_DAS_XML_Document::getRootElementURI

(^)

SDO_DAS_XML_Document::getRootElementURI — Returns root element's URI string

说明

string SDO_DAS_XML_Document::getRootElementURI ( void )

Returns root element's URI string.

参数

返回值

Returns root element's URI string.

SDO_DAS_XML_Document::getRootElementName
SDO_DAS_XML_Document::setEncoding
SDO DAS XML 函数


Sets the given string as encoding

SDO_DAS_XML_Document::getRootElementURI
SDO_DAS_XML_Document::setXMLDeclaration
SDO DAS XML 函数
PHP Manual

SDO_DAS_XML_Document::setEncoding

(^)

SDO_DAS_XML_Document::setEncoding — Sets the given string as encoding

说明

void SDO_DAS_XML_Document::setEncoding ( string $encoding )

Sets the given string as encoding.

参数

encoding

Encoding string.

返回值

None.

SDO_DAS_XML_Document::getRootElementURI
SDO_DAS_XML_Document::setXMLDeclaration
SDO DAS XML 函数


Sets the xml declaration

SDO_DAS_XML_Document::setEncoding
SDO_DAS_XML_Document::setXMLVersion
SDO DAS XML 函数
PHP Manual

SDO_DAS_XML_Document::setXMLDeclaration

(^)

SDO_DAS_XML_Document::setXMLDeclaration — Sets the xml declaration

说明

void SDO_DAS_XML_Document::setXMLDeclaration ( bool $xmlDeclatation )

Controls whether an XML declaration will be generated at the start of the XML document. Set to TRUE to generate the XML declaration, or FALSE to suppress it.

参数

xmlDeclatation

Boolean value to set the XML declaration.

返回值

None.

SDO_DAS_XML_Document::setEncoding
SDO_DAS_XML_Document::setXMLVersion
SDO DAS XML 函数


Sets the given string as xml version

SDO_DAS_XML_Document::setXMLDeclaration
SimpleXML
SDO DAS XML 函数
PHP Manual

SDO_DAS_XML_Document::setXMLVersion

(^)

SDO_DAS_XML_Document::setXMLVersion — Sets the given string as xml version

说明

void SDO_DAS_XML_Document::setXMLVersion ( string $xmlVersion )

Sets the given string as xml version.

参数

xmlVersion

xml version string.

返回值

None.

SDO_DAS_XML_Document::setXMLDeclaration
SimpleXML
SDO DAS XML 函数


SimpleXML

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Basic SimpleXML usage
    • Dealing with XML errors
  • SimpleXMLElement — The SimpleXMLElement class
    • SimpleXMLElement::addAttribute — Adds an attribute to the SimpleXML element
    • SimpleXMLElement::addChild — Adds a child element to the XML node
    • SimpleXMLElement::asXML — Return a well-formed XML string based on SimpleXML element
    • SimpleXMLElement::attributes — Identifies an element's attributes
    • SimpleXMLElement::children — Finds children of given node
    • SimpleXMLElement::__construct — Creates a new SimpleXMLElement object
    • SimpleXMLElement::count — Counts the children of an element
    • SimpleXMLElement::getDocNamespaces — Returns namespaces declared in document
    • SimpleXMLElement::getName — Gets the name of the XML element
    • SimpleXMLElement::getNamespaces — Returns namespaces used in document
    • SimpleXMLElement::registerXPathNamespace — Creates a prefix/ns context for the next XPath query
    • SimpleXMLElement::saveXML — 别名 SimpleXMLElement::asXML
    • SimpleXMLElement::__toString — Returns the string content
    • SimpleXMLElement::xpath — Runs XPath query on XML data
  • SimpleXMLIterator — The SimpleXMLIterator class
    • SimpleXMLIterator::current — Returns the current element
    • SimpleXMLIterator::getChildren — Returns the sub-elements of the current element
    • SimpleXMLIterator::hasChildren — Checks whether the current element has sub elements.
    • SimpleXMLIterator::key — Return current key
    • SimpleXMLIterator::next — Move to next element
    • SimpleXMLIterator::rewind — Rewind to the first element
    • SimpleXMLIterator::valid — Check whether the current element is valid
  • SimpleXML 函数
    • simplexml_import_dom — Get a SimpleXMLElement object from a DOM node.
    • simplexml_load_file — Interprets an XML file into an object
    • simplexml_load_string — Interprets a string of XML into an object
SDO_DAS_XML_Document::setXMLVersion
简介
XML 操作


简介

SimpleXML 扩展提供了一个非常简单和易于使用的工具集，能将 XML 转换成一个带有一般属性选择器和数组迭代器的对象。

SimpleXML
安装／配置
SimpleXML


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
SimpleXML


需求

此扩展需要 libxml PHP 扩展。这表示需要使用 --enable-libxml ，尽管这将隐式完成因为 libxml 是缺省开启的。

The SimpleXML extension requires PHP 5.

安装／配置
安装
安装／配置


安装

此扩展默认为启用,编译时可通过下列选项禁用： --disable-simplexml

Note: Before PHP 5.1.2, --enable-simplexml is required to enable this extension.

需求
运行时配置
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
范例
SimpleXML


范例

Table of Contents

  • Basic SimpleXML usage
  • Dealing with XML errors
预定义常量
Basic SimpleXML usage
SimpleXML


Basic SimpleXML usage

Many examples in this reference require an XML string. Instead of repeating this string in every example, we put it into a file which we include in each example. This included file is shown in the following example section. Alternatively, you could create an XML document and read it with simplexml_load_file().

Example #1 Include file example.php with XML string

<?php
$xmlstr = <<<XML
<?xml version='1.0' standalone='yes'?>
<movies>
 <movie>
  <title>PHP: Behind the Parser</title>
  <characters>
   <character>
    <name>Ms. Coder</name>
    <actor>Onlivia Actora</actor>
   </character>
   <character>
    <name>Mr. Coder</name>
    <actor>El Act&#211;r</actor>
   </character>
  </characters>
  <plot>
   So, this language. It's like, a programming language. Or is it a
   scripting language? All is revealed in this thrilling horror spoof
   of a documentary.
  </plot>
  <great-lines>
   <line>PHP solves all my web problems</line>
  </great-lines>
  <rating type="thumbs">7</rating>
  <rating type="stars">5</rating>
 </movie>
</movies>
XML;
?>

The simplicity of SimpleXML appears most clearly when one extracts a string or number from a basic XML document.

Example #2 Getting <plot>

<?php
include 'example.php';

$movies = new SimpleXMLElement($xmlstr);

echo $movies->movie[0]->plot;
?>

以上例程会输出：

   So, this language. It's like, a programming language. Or is it a
   scripting language? All is revealed in this thrilling horror spoof
   of a documentary.

Accessing elements within an XML document that contain characters not permitted under PHP's naming convention (e.g. the hyphen) can be accomplished by encapsulating the element name within braces and the apostrophe.

Example #3 Getting <line>

<?php
include 'example.php';

$movies = new SimpleXMLElement($xmlstr);

echo $movies->movie->{'great-lines'}->line;
?>

以上例程会输出：

PHP solves all my web problems

Example #4 Accessing non-unique elements in SimpleXML

When multiple instances of an element exist as children of a single parent element, normal iteration techniques apply.

<?php
include 'example.php';

$movies = new SimpleXMLElement($xmlstr);

/* For each <character> node, we echo a separate <name>. */
foreach ($movies->movie->characters->character as $character) {
   echo $character->name, ' played by ', $character->actor, PHP_EOL;
}

?>

以上例程会输出：

Ms. Coder played by Onlivia Actora
Mr. Coder played by El Actór

Note:

Properties ($movies->movie in previous example) are not arrays. They are iterable and accessible objects.

Example #5 Using attributes

So far, we have only covered the work of reading element names and their values. SimpleXML can also access element attributes. Access attributes of an element just as you would elements of an array.

<?php
include 'example.php';

$movies = new SimpleXMLElement($xmlstr);

/* Access the <rating> nodes of the first movie.
 * Output the rating scale, too. */
foreach ($movies->movie[0]->rating as $rating) {
    switch((string) $rating['type']) { // Get attributes as element indices
    case 'thumbs':
        echo $rating, ' thumbs up';
        break;
    case 'stars':
        echo $rating, ' stars';
        break;
    }
}
?>

以上例程会输出：

7 thumbs up5 stars

Example #6 Comparing Elements and Attributes with Text

To compare an element or attribute with a string or pass it into a function that requires a string, you must cast it to a string using (string). Otherwise, PHP treats the element as an object.

<?php
include 'example.php';

$movies = new SimpleXMLElement($xmlstr);

if ((string) $movies->movie->title == 'PHP: Behind the Parser') {
    print 'My favorite movie.';
}

echo htmlentities((string) $movies->movie->title);
?>

以上例程会输出：

My favorite movie.PHP: Behind the Parser

Example #7 Comparing Two Elements

Two SimpleXMLElements are considered different even if they point to the same element since PHP 5.2.0.

<?php
include 'example.php';

$movies1 = new SimpleXMLElement($xmlstr);
$movies2 = new SimpleXMLElement($xmlstr);
var_dump($movies1 == $movies2); // false since PHP 5.2.0
?>

以上例程会输出：

bool(false)

Example #8 Using XPath

SimpleXML includes built-in XPath support. To find all <character> elements:

<?php
include 'example.php';

$movies = new SimpleXMLElement($xmlstr);

foreach ($movies->xpath('//character') as $character) {
    echo $character->name, ' played by ', $character->actor, PHP_EOL;
}
?>

'//' serves as a wildcard. To specify absolute paths, omit one of the slashes.

以上例程会输出：

Ms. Coder played by Onlivia Actora
Mr. Coder played by El Actór

Example #9 Setting values

Data in SimpleXML doesn't have to be constant. The object allows for manipulation of all of its elements.

<?php
include 'example.php';
$movies = new SimpleXMLElement($xmlstr);

$movies->movie[0]->characters->character[0]->name = 'Miss Coder';

echo $movies->asXML();
?>

以上例程会输出：

<?xml version="1.0" standalone="yes"?>
<movies>
 <movie>
  <title>PHP: Behind the Parser</title>
  <characters>
   <character>
    <name>Miss Coder</name>
    <actor>Onlivia Actora</actor>
   </character>
   <character>
    <name>Mr. Coder</name>
    <actor>El Act&#xD3;r</actor>
   </character>
  </characters>
  <plot>
   So, this language. It's like, a programming language. Or is it a
   scripting language? All is revealed in this thrilling horror spoof
   of a documentary.
  </plot>
  <great-lines>
   <line>PHP solves all my web problems</line>
  </great-lines>
  <rating type="thumbs">7</rating>
  <rating type="stars">5</rating>
 </movie>
</movies>

Example #10 Adding elements and attributes

Since PHP 5.1.3, SimpleXML has had the ability to easily add children and attributes.

<?php
include 'example.php';
$movies = new SimpleXMLElement($xmlstr);

$character = $movies->movie[0]->characters->addChild('character');
$character->addChild('name', 'Mr. Parser');
$character->addChild('actor', 'John Doe');

$rating = $movies->movie[0]->addChild('rating', 'PG');
$rating->addAttribute('type', 'mpaa');

echo $movies->asXML();
?>

以上例程会输出：

<?xml version="1.0" standalone="yes"?>
<movies>
 <movie>
  <title>PHP: Behind the Parser</title>
  <characters>
   <character>
    <name>Ms. Coder</name>
    <actor>Onlivia Actora</actor>
   </character>
   <character>
    <name>Mr. Coder</name>
    <actor>El Act&#xD3;r</actor>
   </character>
  <character><name>Mr. Parser</name><actor>John Doe</actor></character></characters>
  <plot>
   So, this language. It's like, a programming language. Or is it a
   scripting language? All is revealed in this thrilling horror spoof
   of a documentary.
  </plot>
  <great-lines>
   <line>PHP solves all my web problems</line>
  </great-lines>
  <rating type="thumbs">7</rating>
  <rating type="stars">5</rating>
 <rating type="mpaa">PG</rating></movie>
</movies>

Example #11 DOM Interoperability

PHP has a mechanism to convert XML nodes between SimpleXML and DOM formats. This example shows how one might change a DOM element to SimpleXML.

<?php
$dom = new DOMDocument;
$dom->loadXML('<books><book><title>blah</title></book></books>');
if (!$dom) {
    echo 'Error while parsing the document';
    exit;
}

$books = simplexml_import_dom($dom);

echo $books->book[0]->title;
?>

以上例程会输出：

blah

范例
Dealing with XML errors
范例


Dealing with XML errors

Dealing with XML errors when loading documents is a very simple task. Using the libxml functionality it is possible to suppress all XML errors when loading the document and then iterate over the errors.

The libXMLError object, returned by libxml_get_errors(), contains several properties including the message, line and column (position) of the error.

Example #1 Loading broken XML string

<?php
libxml_use_internal_errors(true);
$sxe = simplexml_load_string("<?xml version='1.0'><broken><xml></broken>");
if ($sxe === false) {
    echo "Failed loading XML\n";
    foreach(libxml_get_errors() as $error) {
        echo "\t", $error->message;
    }
}
?>

以上例程会输出：

Failed loading XML
    Blank needed here
    parsing XML declaration: '?>' expected
    Opening and ending tag mismatch: xml line 1 and broken
    Premature end of data in tag broken line 1

参见

  • libxml_use_internal_errors()
  • libxml_get_errors()
  • libXMLError

Basic SimpleXML usage
SimpleXMLElement
范例


The SimpleXMLElement class

(PHP 5 >= 5.0.1, PHP 7)

简介

Represents an element in an XML document.

类摘要

SimpleXMLElement implements Traversable {
/* 方法 */
final public __construct ( string $data [, int $options = 0 [, bool $data_is_url = false [, string $ns = "" [, bool $is_prefix = false ]]]] )
public void addAttribute ( string $name [, string $value [, string $namespace ]] )
public SimpleXMLElement addChild ( string $name [, string $value [, string $namespace ]] )
public mixed asXML ([ string $filename ] )
public SimpleXMLElement attributes ([ string $ns = NULL [, bool $is_prefix = false ]] )
public SimpleXMLElement children ([ string $ns [, bool $is_prefix = false ]] )
public int count ( void )
public array getDocNamespaces ([ bool $recursive = false [, bool $from_root = true ]] )
public string getName ( void )
public array getNamespaces ([ bool $recursive = false ] )
public bool registerXPathNamespace ( string $prefix , string $ns )
public string __toString ( void )
public array xpath ( string $path )
}

Table of Contents

  • SimpleXMLElement::addAttribute — Adds an attribute to the SimpleXML element
  • SimpleXMLElement::addChild — Adds a child element to the XML node
  • SimpleXMLElement::asXML — Return a well-formed XML string based on SimpleXML element
  • SimpleXMLElement::attributes — Identifies an element's attributes
  • SimpleXMLElement::children — Finds children of given node
  • SimpleXMLElement::__construct — Creates a new SimpleXMLElement object
  • SimpleXMLElement::count — Counts the children of an element
  • SimpleXMLElement::getDocNamespaces — Returns namespaces declared in document
  • SimpleXMLElement::getName — Gets the name of the XML element
  • SimpleXMLElement::getNamespaces — Returns namespaces used in document
  • SimpleXMLElement::registerXPathNamespace — Creates a prefix/ns context for the next XPath query
  • SimpleXMLElement::saveXML — 别名 SimpleXMLElement::asXML
  • SimpleXMLElement::__toString — Returns the string content
  • SimpleXMLElement::xpath — Runs XPath query on XML data
Dealing with XML errors
SimpleXMLElement::addAttribute
SimpleXML


Adds an attribute to the SimpleXML element

SimpleXMLElement
SimpleXMLElement::addChild
SimpleXMLElement
PHP Manual

SimpleXMLElement::addAttribute

(PHP 5 >= 5.1.3, PHP 7)

SimpleXMLElement::addAttribute — Adds an attribute to the SimpleXML element

说明

public void SimpleXMLElement::addAttribute ( string $name [, string $value [, string $namespace ]] )

Adds an attribute to the SimpleXML element.

参数

name

The name of the attribute to add.

value

The value of the attribute.

namespace

If specified, the namespace to which the attribute belongs.

返回值

没有返回值。

范例

Note:

Listed examples may include example.php, which refers to the XML string found in the first example of the basic usage guide.

Example #1 Add attributes and children to a SimpleXML element

<?php

include 'example.php';

$sxe = new SimpleXMLElement($xmlstr);
$sxe->addAttribute('type', 'documentary');

$movie = $sxe->addChild('movie');
$movie->addChild('title', 'PHP2: More Parser Stories');
$movie->addChild('plot', 'This is all about the people who make it work.');

$characters = $movie->addChild('characters');
$character  = $characters->addChild('character');
$character->addChild('name', 'Mr. Parser');
$character->addChild('actor', 'John Doe');

$rating = $movie->addChild('rating', '5');
$rating->addAttribute('type', 'stars');

echo $sxe->asXML();

?>

以上例程的输出类似于：

<?xml version="1.0" standalone="yes"?>
<movies type="documentary">
 <movie>
  <title>PHP: Behind the Parser</title>
  <characters>
   <character>
    <name>Ms. Coder</name>
    <actor>Onlivia Actora</actor>
   </character>
   <character>
    <name>Mr. Coder</name>
    <actor>El Act&#xD3;r</actor>
   </character>
  </characters>
  <plot>
   So, this language. It's like, a programming language. Or is it a
   scripting language? All is revealed in this thrilling horror spoof
   of a documentary.
  </plot>
  <great-lines>
   <line>PHP solves all my web problems</line>
  </great-lines>
  <rating type="thumbs">7</rating>
  <rating type="stars">5</rating>
 </movie>
 <movie>
  <title>PHP2: More Parser Stories</title>
  <plot>This is all about the people who make it work.</plot>
  <characters>
   <character>
    <name>Mr. Parser</name>
    <actor>John Doe</actor>
   </character>
  </characters>
  <rating type="stars">5</rating>
 </movie>
</movies>

参见

  • SimpleXMLElement::addChild() - Adds a child element to the XML node
  • Basic SimpleXML usage

SimpleXMLElement
SimpleXMLElement::addChild
SimpleXMLElement


Adds a child element to the XML node

SimpleXMLElement::addAttribute
SimpleXMLElement::asXML
SimpleXMLElement
PHP Manual

SimpleXMLElement::addChild

(PHP 5 >= 5.1.3, PHP 7)

SimpleXMLElement::addChild — Adds a child element to the XML node

说明

public SimpleXMLElement SimpleXMLElement::addChild ( string $name [, string $value [, string $namespace ]] )

Adds a child element to the node and returns a SimpleXMLElement of the child.

参数

name

The name of the child element to add.

value

If specified, the value of the child element.

namespace

If specified, the namespace to which the child element belongs.

返回值

The addChild method returns a SimpleXMLElement object representing the child added to the XML node.

范例

Note:

Listed examples may include example.php, which refers to the XML string found in the first example of the basic usage guide.

Example #1 Add attributes and children to a SimpleXML element

<?php

include 'example.php';

$sxe = new SimpleXMLElement($xmlstr);
$sxe->addAttribute('type', 'documentary');

$movie = $sxe->addChild('movie');
$movie->addChild('title', 'PHP2: More Parser Stories');
$movie->addChild('plot', 'This is all about the people who make it work.');

$characters = $movie->addChild('characters');
$character  = $characters->addChild('character');
$character->addChild('name', 'Mr. Parser');
$character->addChild('actor', 'John Doe');

$rating = $movie->addChild('rating', '5');
$rating->addAttribute('type', 'stars');

echo $sxe->asXML();

?>

以上例程的输出类似于：

<?xml version="1.0" standalone="yes"?>
<movies type="documentary">
 <movie>
  <title>PHP: Behind the Parser</title>
  <characters>
   <character>
    <name>Ms. Coder</name>
    <actor>Onlivia Actora</actor>
   </character>
   <character>
    <name>Mr. Coder</name>
    <actor>El Act&#xD3;r</actor>
   </character>
  </characters>
  <plot>
   So, this language. It's like, a programming language. Or is it a
   scripting language? All is revealed in this thrilling horror spoof
   of a documentary.
  </plot>
  <great-lines>
   <line>PHP solves all my web problems</line>
  </great-lines>
  <rating type="thumbs">7</rating>
  <rating type="stars">5</rating>
 </movie>
 <movie>
  <title>PHP2: More Parser Stories</title>
  <plot>This is all about the people who make it work.</plot>
  <characters>
   <character>
    <name>Mr. Parser</name>
    <actor>John Doe</actor>
   </character>
  </characters>
  <rating type="stars">5</rating>
 </movie>
</movies>

参见

  • SimpleXMLElement::addAttribute() - Adds an attribute to the SimpleXML element
  • Basic SimpleXML usage

SimpleXMLElement::addAttribute
SimpleXMLElement::asXML
SimpleXMLElement


Return a well-formed XML string based on SimpleXML element

SimpleXMLElement::addChild
SimpleXMLElement::attributes
SimpleXMLElement
PHP Manual

SimpleXMLElement::asXML

(PHP 5 >= 5.0.1, PHP 7)

SimpleXMLElement::asXML — Return a well-formed XML string based on SimpleXML element

说明

public mixed SimpleXMLElement::asXML ([ string $filename ] )

The asXML method formats the parent object's data in XML version 1.0.

参数

filename

If specified, the function writes the data to the file rather than returning it.

返回值

If the filename isn't specified, this function returns a string on success and FALSE on error. If the parameter is specified, it returns TRUE if the file was written successfully and FALSE otherwise.

范例

Example #1 Get XML

<?php
$string = <<<XML
<a>
 <b>
  <c>text</c>
  <c>stuff</c>
 </b>
 <d>
  <c>code</c>
 </d>
</a>
XML;

$xml = new SimpleXMLElement($string);

echo $xml->asXML();

?>

以上例程会输出：

<?xml version="1.0"?>
<a>
 <b>
  <c>text</c>
  <c>stuff</c>
 </b>
 <d>
  <c>code</c>
 </d>
</a>

asXML also works on Xpath results:

Example #2 Using asXML() on SimpleXMLElement::xpath() results

<?php
// Continued from example XML above.

/* Search for <a><b><c> */
$result = $xml->xpath('/a/b/c');

while(list( , $node) = each($result)) {
    echo $node->asXML();
}
?>

以上例程会输出：

<c>text</c><c>stuff</c>

参见

  • SimpleXMLElement::__toString() - Returns the string content
  • Basic SimpleXML usage

SimpleXMLElement::addChild
SimpleXMLElement::attributes
SimpleXMLElement


Identifies an element's attributes

SimpleXMLElement::asXML
SimpleXMLElement::children
SimpleXMLElement
PHP Manual

SimpleXMLElement::attributes

(PHP 5 >= 5.0.1, PHP 7)

SimpleXMLElement::attributes — Identifies an element's attributes

说明

public SimpleXMLElement SimpleXMLElement::attributes ([ string $ns = NULL [, bool $is_prefix = false ]] )

This function provides the attributes and values defined within an xml tag.

Note: SimpleXML 建起了一个给大多数方法添加迭代属性的规则。不能通过使用 var_dump() 或任何可检查对象的其它东西来查看。

参数

ns

An optional namespace for the retrieved attributes

is_prefix

Default to FALSE

返回值

Returns a SimpleXMLElement object that can be iterated over to loop through the attributes on the tag.

Returns NULL if called on a SimpleXMLElement object that already represents an attribute and not a tag.

范例

Example #1 Interpret an XML string

<?php
$string = <<<XML
<a>
 <foo name="one" game="lonely">1</foo>
</a>
XML;

$xml = simplexml_load_string($string);
foreach($xml->foo[0]->attributes() as $a => $b) {
    echo $a,'="',$b,"\"\n";
}
?>

以上例程会输出：

name="one"
game="lonely"

参见

  • Basic SimpleXML usage

SimpleXMLElement::asXML
SimpleXMLElement::children
SimpleXMLElement


Finds children of given node

SimpleXMLElement::attributes
SimpleXMLElement::__construct
SimpleXMLElement
PHP Manual

SimpleXMLElement::children

(PHP 5 >= 5.0.1, PHP 7)

SimpleXMLElement::children — Finds children of given node

说明

public SimpleXMLElement SimpleXMLElement::children ([ string $ns [, bool $is_prefix = false ]] )

This method finds the children of an element. The result follows normal iteration rules.

Note: SimpleXML 建起了一个给大多数方法添加迭代属性的规则。不能通过使用 var_dump() 或任何可检查对象的其它东西来查看。

参数

ns

An XML namespace.

is_prefix

If is_prefix is TRUE, ns will be regarded as a prefix. If FALSE, ns will be regarded as a namespace URL.

返回值

Returns a SimpleXMLElement element, whether the node has children or not.

更新日志

版本 | 说明
5.2.0 | The optional parameter is_prefix was added.

范例

Example #1 Traversing a children() pseudo-array

<?php
$xml = new SimpleXMLElement(
'<person>
 <child role="son">
  <child role="daughter"/>
 </child>
 <child role="daughter">
  <child role="son">
   <child role="son"/>
  </child>
 </child>
</person>');

foreach ($xml->children() as $second_gen) {
    echo ' The person begot a ' . $second_gen['role'];

    foreach ($second_gen->children() as $third_gen) {
        echo ' who begot a ' . $third_gen['role'] . ';';

        foreach ($third_gen->children() as $fourth_gen) {
            echo ' and that ' . $third_gen['role'] .
                ' begot a ' . $fourth_gen['role'];
        }
    }
}
?>

以上例程会输出：

The person begot a son who begot a daughter; The person
begot a daughter who begot a son; and that son begot a son

Example #2 Using namespaces

<?php
$xml = '<example xmlns:foo="my.foo.urn">
  <foo:a>Apple</foo:a>
  <foo:b>Banana</foo:b>
  <c>Cherry</c>
</example>';

$sxe = new SimpleXMLElement($xml);

$kids = $sxe->children('foo');
var_dump(count($kids));

$kids = $sxe->children('foo', TRUE);
var_dump(count($kids));

$kids = $sxe->children('my.foo.urn');
var_dump(count($kids));

$kids = $sxe->children('my.foo.urn', TRUE);
var_dump(count($kids));

$kids = $sxe->children();
var_dump(count($kids));
?>
int(0)
int(2)
int(2)
int(0)
int(1)

注释

SimpleXMLElement::children() returns a node object no matter if the current node has children or not. Use count() on the return value to see if there are any children. As of PHP 5.3.0, SimpleXMLElement::count() may be used instead.

参见

  • SimpleXMLElement::count() - Counts the children of an element
  • count() - 计算数组中的单元数目或对象中的属性个数

SimpleXMLElement::attributes
SimpleXMLElement::__construct
SimpleXMLElement


Creates a new SimpleXMLElement object

SimpleXMLElement::children
SimpleXMLElement::count
SimpleXMLElement
PHP Manual

SimpleXMLElement::__construct

(PHP 5 >= 5.0.1, PHP 7)

SimpleXMLElement::__construct — Creates a new SimpleXMLElement object

说明

final public SimpleXMLElement::__construct ( string $data [, int $options = 0 [, bool $data_is_url = false [, string $ns = "" [, bool $is_prefix = false ]]]] )

Creates a new SimpleXMLElement object.

参数

data

A well-formed XML string or the path or URL to an XML document if data_is_url is TRUE.

options

Optionally used to specify additional Libxml parameters.

Note:

It may be necessary to pass LIBXML_PARSEHUGE to be able to process deeply nested XML or very large text nodes.

data_is_url

By default, data_is_url is FALSE. Use TRUE to specify that data is a path or URL to an XML document instead of string data.

ns

Namespace prefix or URI.

is_prefix

TRUE if ns is a prefix, FALSE if it's a URI; defaults to FALSE.

返回值

Returns a SimpleXMLElement object representing data.

错误／异常

Produces an E_WARNING error message for each error found in the XML data and additionally throws an Exception if the XML data could not be parsed.

Tip

Use libxml_use_internal_errors() to suppress all XML errors, and libxml_get_errors() to iterate over them afterwards.

范例

Note:

Listed examples may include example.php, which refers to the XML string found in the first example of the basic usage guide.

Example #1 Create a SimpleXMLElement object

<?php

include 'example.php';

$sxe = new SimpleXMLElement($xmlstr);
echo $sxe->movie[0]->title;

?>

以上例程会输出：

PHP: Behind the Parser

Example #2 Create a SimpleXMLElement object from a URL

<?php

$sxe = new SimpleXMLElement('http://example.org/document.xml', NULL, TRUE);
echo $sxe->asXML();

?>

更新日志

版本 | 说明
5.2.0 | Added the ns and is_prefix parameters.
5.1.2 | Added the options and data_is_url parameters.

参见

  • Basic SimpleXML usage
  • simplexml_load_string() - Interprets a string of XML into an object
  • simplexml_load_file() - Interprets an XML file into an object
  • Dealing with XML errors
  • libxml_use_internal_errors() - Disable libxml errors and allow user to fetch error information as needed

SimpleXMLElement::children
SimpleXMLElement::count
SimpleXMLElement


Counts the children of an element

SimpleXMLElement::__construct
SimpleXMLElement::getDocNamespaces
SimpleXMLElement
PHP Manual

SimpleXMLElement::count

(PHP 5 >= 5.3.0, PHP 7)

SimpleXMLElement::count — Counts the children of an element

说明

public int SimpleXMLElement::count ( void )

This method counts the number of children of an element.

返回值

Returns the number of elements of an element.

范例

Example #1 Counting the number of children

<?php
$xml = <<<EOF
<people>
 <person name="Person 1">
  <child/>
  <child/>
  <child/>
 </person>
 <person name="Person 2">
  <child/>
  <child/>
  <child/>
  <child/>
  <child/>
 </person>
</people>
EOF;

$elem = new SimpleXMLElement($xml);

foreach ($elem as $person) {
    printf("%s has got %d children.\n", $person['name'], $person->count());
}
?>

以上例程会输出：

Person 1 has got 3 children.
Person 2 has got 5 children.

参见

  • SimpleXMLElement::children() - Finds children of given node

SimpleXMLElement::__construct
SimpleXMLElement::getDocNamespaces
SimpleXMLElement


Returns namespaces declared in document

SimpleXMLElement::count
SimpleXMLElement::getName
SimpleXMLElement
PHP Manual

SimpleXMLElement::getDocNamespaces

(PHP 5 >= 5.1.2, PHP 7)

SimpleXMLElement::getDocNamespaces — Returns namespaces declared in document

说明

public array SimpleXMLElement::getDocNamespaces ([ bool $recursive = false [, bool $from_root = true ]] )

Returns namespaces declared in document

参数

recursive

If specified, returns all namespaces declared in parent and child nodes. Otherwise, returns only namespaces declared in root node.

from_root

Allows you to recursively check namespaces under a child node instead of from the root of the XML doc.

返回值

The getDocNamespaces method returns an array of namespace names with their associated URIs.

范例

Example #1 Get document namespaces

<?php

$xml = <<<XML
<?xml version="1.0" standalone="yes"?>
<people xmlns:p="http://example.org/ns">
    <p:person id="1">John Doe</p:person>
    <p:person id="2">Susie Q. Public</p:person>
</people>
XML;

$sxe = new SimpleXMLElement($xml);

$namespaces = $sxe->getDocNamespaces();
var_dump($namespaces);

?>

以上例程会输出：

array(1) {
   ["p"]=>
   string(21) "http://example.org/ns"
}

Example #2 Working with multiple namespaces

<?php

$xml = <<<XML
<?xml version="1.0" standalone="yes"?>
<people xmlns:p="http://example.org/ns" xmlns:t="http://example.org/test">
    <p:person t:id="1">John Doe</p:person>
    <p:person t:id="2" a:addr="123 Street" xmlns:a="http://example.org/addr">
        Susie Q. Public
    </p:person>
</people>
XML;

$sxe = new SimpleXMLElement($xml);

$namespaces = $sxe->getDocNamespaces(TRUE);
var_dump($namespaces);

?>

以上例程会输出：

array(3) {
  ["p"]=>
  string(21) "http://example.org/ns"
  ["t"]=>
  string(23) "http://example.org/test"
  ["a"]=>
  string(23) "http://example.org/addr"
}

更新日志

版本 | 说明
5.4.0 | Added from_root parameter.

参见

  • SimpleXMLElement::getNamespaces() - Returns namespaces used in document
  • SimpleXMLElement::registerXPathNamespace() - Creates a prefix/ns context for the next XPath query

SimpleXMLElement::count
SimpleXMLElement::getName
SimpleXMLElement


Gets the name of the XML element

SimpleXMLElement::getDocNamespaces
SimpleXMLElement::getNamespaces
SimpleXMLElement
PHP Manual

SimpleXMLElement::getName

(PHP 5 >= 5.1.3, PHP 7)

SimpleXMLElement::getName — Gets the name of the XML element

说明

public string SimpleXMLElement::getName ( void )

Gets the name of the XML element.

返回值

The getName method returns as a string the name of the XML tag referenced by the SimpleXMLElement object.

范例

Note:

Listed examples may include example.php, which refers to the XML string found in the first example of the basic usage guide.

Example #1 Get XML element names

<?php
include 'example.php';
$sxe = new SimpleXMLElement($xmlstr);

echo $sxe->getName() . "\n";

foreach ($sxe->children() as $child)
{
    echo $child->getName() . "\n";
}

?>

以上例程会输出：

movies
movie

SimpleXMLElement::getDocNamespaces
SimpleXMLElement::getNamespaces
SimpleXMLElement


Returns namespaces used in document

SimpleXMLElement::getName
SimpleXMLElement::registerXPathNamespace
SimpleXMLElement
PHP Manual

SimpleXMLElement::getNamespaces

(PHP 5 >= 5.1.2, PHP 7)

SimpleXMLElement::getNamespaces — Returns namespaces used in document

说明

public array SimpleXMLElement::getNamespaces ([ bool $recursive = false ] )

Returns namespaces used in document

参数

recursive

If specified, returns all namespaces used in parent and child nodes. Otherwise, returns only namespaces used in root node.

返回值

The getNamespaces method returns an array of namespace names with their associated URIs.

范例

Example #1 Get document namespaces in use

<?php

$xml = <<<XML
<?xml version="1.0" standalone="yes"?>
<people xmlns:p="http://example.org/ns" xmlns:t="http://example.org/test">
    <p:person id="1">John Doe</p:person>
    <p:person id="2">Susie Q. Public</p:person>
</people>
XML;

$sxe = new SimpleXMLElement($xml);

$namespaces = $sxe->getNamespaces(true);
var_dump($namespaces);

?>

以上例程会输出：

array(1) {
  ["p"]=>
  string(21) "http://example.org/ns"
}

参见

  • SimpleXMLElement::getDocNamespaces() - Returns namespaces declared in document
  • SimpleXMLElement::registerXPathNamespace() - Creates a prefix/ns context for the next XPath query

SimpleXMLElement::getName
SimpleXMLElement::registerXPathNamespace
SimpleXMLElement


Creates a prefix/ns context for the next XPath query

SimpleXMLElement::getNamespaces
SimpleXMLElement::saveXML
SimpleXMLElement
PHP Manual

SimpleXMLElement::registerXPathNamespace

(PHP 5 >= 5.2.0, PHP 7)

SimpleXMLElement::registerXPathNamespace — Creates a prefix/ns context for the next XPath query

说明

public bool SimpleXMLElement::registerXPathNamespace ( string $prefix , string $ns )

Creates a prefix/ns context for the next XPath query. In particular, this is helpful if the provider of the given XML document alters the namespace prefixes. registerXPathNamespace will create a prefix for the associated namespace, allowing one to access nodes in that namespace without the need to change code to allow for the new prefixes dictated by the provider.

参数

prefix

The namespace prefix to use in the XPath query for the namespace given in ns.

ns

The namespace to use for the XPath query. This must match a namespace in use by the XML document or the XPath query using prefix will not return any results.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Setting a namespace prefix to use in an XPath query

<?php

$xml = <<<EOD
<book xmlns:chap="http://example.org/chapter-title">
    <title>My Book</title>
    <chapter id="1">
        <chap:title>Chapter 1</chap:title>
        <para>Donec velit. Nullam eget tellus vitae tortor gravida scelerisque.
            In orci lorem, cursus imperdiet, ultricies non, hendrerit et, orci.
            Nulla facilisi. Nullam velit nisl, laoreet id, condimentum ut,
            ultricies id, mauris.</para>
    </chapter>
    <chapter id="2">
        <chap:title>Chapter 2</chap:title>
        <para>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Proin
            gravida. Phasellus tincidunt massa vel urna. Proin adipiscing quam
            vitae odio. Sed dictum. Ut tincidunt lorem ac lorem. Duis eros
            tellus, pharetra id, faucibus eu, dapibus dictum, odio.</para>
    </chapter>
</book>
EOD;

$sxe = new SimpleXMLElement($xml);

$sxe->registerXPathNamespace('c', 'http://example.org/chapter-title');
$result = $sxe->xpath('//c:title');

foreach ($result as $title) {
  echo $title . "\n";
}

?>

以上例程会输出：

Chapter 1
Chapter 2

Notice how the XML document shown in the example sets a namespace with a prefix of chap. Imagine that this document (or another one like it) may have used a prefix of c in the past for the same namespace. Since it has changed, the XPath query will no longer return the proper results and the query will require modification. Using registerXPathNamespace avoids future modification of the query even if the provider changes the namespace prefix.

参见

  • SimpleXMLElement::xpath() - Runs XPath query on XML data
  • SimpleXMLElement::getDocNamespaces() - Returns namespaces declared in document
  • SimpleXMLElement::getNamespaces() - Returns namespaces used in document

SimpleXMLElement::getNamespaces
SimpleXMLElement::saveXML
SimpleXMLElement


别名 SimpleXMLElement::asXML

SimpleXMLElement::registerXPathNamespace
SimpleXMLElement::__toString
SimpleXMLElement
PHP Manual

SimpleXMLElement::saveXML

(PHP 5 >= 5.2.0, PHP 7)

SimpleXMLElement::saveXML — 别名 SimpleXMLElement::asXML()

说明

此方法是该方法的别名： SimpleXMLElement::asXML()

SimpleXMLElement::registerXPathNamespace
SimpleXMLElement::__toString
SimpleXMLElement


Returns the string content

SimpleXMLElement::saveXML
SimpleXMLElement::xpath
SimpleXMLElement
PHP Manual

SimpleXMLElement::__toString

(No version information available, might only be in Git)

SimpleXMLElement::__toString — Returns the string content

说明

public string SimpleXMLElement::__toString ( void )

Returns text content that is directly in this element. Does not return text content that is inside this element's children.

参数

此函数没有参数。

返回值

Returns the string content on success or an empty string on failure.

范例

Example #1 Get string content

<?php
$xml = new SimpleXMLElement('<a>1 <b>2 </b>3</a>');
echo $xml;
?>

以上例程会输出：

1 3

参见

  • SimpleXMLElement::asXML() - Return a well-formed XML string based on SimpleXML element

SimpleXMLElement::saveXML
SimpleXMLElement::xpath
SimpleXMLElement


Runs XPath query on XML data

SimpleXMLElement::__toString
SimpleXMLIterator
SimpleXMLElement
PHP Manual

SimpleXMLElement::xpath

(PHP 5 >= 5.2.0, PHP 7)

SimpleXMLElement::xpath — Runs XPath query on XML data

说明

public array SimpleXMLElement::xpath ( string $path )

The xpath method searches the SimpleXML node for children matching the XPath path.

参数

path

An XPath path

返回值

Returns an array of SimpleXMLElement objects or FALSE in case of an error.

范例

Example #1 Xpath

<?php
$string = <<<XML
<a>
 <b>
  <c>text</c>
  <c>stuff</c>
 </b>
 <d>
  <c>code</c>
 </d>
</a>
XML;

$xml = new SimpleXMLElement($string);

/* Search for <a><b><c> */
$result = $xml->xpath('/a/b/c');

while(list( , $node) = each($result)) {
    echo '/a/b/c: ',$node,"\n";
}

/* Relative paths also work... */
$result = $xml->xpath('b/c');

while(list( , $node) = each($result)) {
    echo 'b/c: ',$node,"\n";
}
?>

以上例程会输出：

/a/b/c: text
/a/b/c: stuff
b/c: text
b/c: stuff

Notice that the two results are equal.

参见

  • SimpleXMLElement::registerXPathNamespace() - Creates a prefix/ns context for the next XPath query
  • SimpleXMLElement::getDocNamespaces() - Returns namespaces declared in document
  • SimpleXMLElement::getNamespaces() - Returns namespaces used in document
  • Basic SimpleXML usage

SimpleXMLElement::__toString
SimpleXMLIterator
SimpleXMLElement


The SimpleXMLIterator class

(PHP 5 >= 5.1.0, PHP 7)

简介

The SimpleXMLIterator provides recursive iteration over all nodes of a SimpleXMLElement object.

类摘要

SimpleXMLIterator extends SimpleXMLElement implements RecursiveIterator , Countable {
/* 方法 */
public mixed current ( void )
public SimpleXMLIterator getChildren ( void )
public bool hasChildren ( void )
public mixed key ( void )
public void next ( void )
public void rewind ( void )
public bool valid ( void )
/* 继承的方法 */
final public SimpleXMLElement::__construct ( string $data [, int $options = 0 [, bool $data_is_url = false [, string $ns = "" [, bool $is_prefix = false ]]]] )
public void SimpleXMLElement::addAttribute ( string $name [, string $value [, string $namespace ]] )
public SimpleXMLElement SimpleXMLElement::addChild ( string $name [, string $value [, string $namespace ]] )
public mixed SimpleXMLElement::asXML ([ string $filename ] )
public SimpleXMLElement SimpleXMLElement::attributes ([ string $ns = NULL [, bool $is_prefix = false ]] )
public SimpleXMLElement SimpleXMLElement::children ([ string $ns [, bool $is_prefix = false ]] )
public int SimpleXMLElement::count ( void )
public array SimpleXMLElement::getDocNamespaces ([ bool $recursive = false [, bool $from_root = true ]] )
public string SimpleXMLElement::getName ( void )
public array SimpleXMLElement::getNamespaces ([ bool $recursive = false ] )
public bool SimpleXMLElement::registerXPathNamespace ( string $prefix , string $ns )
public string SimpleXMLElement::__toString ( void )
public array SimpleXMLElement::xpath ( string $path )
}

Table of Contents

  • SimpleXMLIterator::current — Returns the current element
  • SimpleXMLIterator::getChildren — Returns the sub-elements of the current element
  • SimpleXMLIterator::hasChildren — Checks whether the current element has sub elements.
  • SimpleXMLIterator::key — Return current key
  • SimpleXMLIterator::next — Move to next element
  • SimpleXMLIterator::rewind — Rewind to the first element
  • SimpleXMLIterator::valid — Check whether the current element is valid
SimpleXMLElement::xpath
SimpleXMLIterator::current
SimpleXML


Returns the current element

SimpleXMLIterator
SimpleXMLIterator::getChildren
SimpleXMLIterator
PHP Manual

SimpleXMLIterator::current

(PHP 5 >= 5.1.0, PHP 7)

SimpleXMLIterator::current — Returns the current element

说明

public mixed SimpleXMLIterator::current ( void )

This method returns the current element as a SimpleXMLIterator object or NULL.

参数

此函数没有参数。

返回值

Returns the current element as a SimpleXMLIterator object or NULL on failure.

范例

Example #1 Return the current element

<?php
$xmlIterator = new SimpleXMLIterator('<books><book>PHP basics</book><book>XML basics</book></books>');
var_dump($xmlIterator->current());

$xmlIterator->rewind(); // rewind to first element
var_dump($xmlIterator->current());
?>

以上例程会输出：

NULL
object(SimpleXMLIterator)#2 (1) {
  [0]=>
  string(10) "PHP basics"
}

参见

  • SimpleXMLIterator::key() - Return current key
  • SimpleXMLIterator::next() - Move to next element
  • SimpleXMLIterator::rewind() - Rewind to the first element
  • SimpleXMLIterator::valid() - Check whether the current element is valid
  • SimpleXMLElement

SimpleXMLIterator
SimpleXMLIterator::getChildren
SimpleXMLIterator


Returns the sub-elements of the current element

SimpleXMLIterator::current
SimpleXMLIterator::hasChildren
SimpleXMLIterator
PHP Manual

SimpleXMLIterator::getChildren

(PHP 5 >= 5.1.0, PHP 7)

SimpleXMLIterator::getChildren — Returns the sub-elements of the current element

说明

public SimpleXMLIterator SimpleXMLIterator::getChildren ( void )

This method returns a SimpleXMLIterator object containing sub-elements of the current SimpleXMLIterator element.

参数

此函数没有参数。

返回值

Returns a SimpleXMLIterator object containing the sub-elements of the current element.

范例

Example #1 Return the sub-elements of the current element

<?php
$xml = <<<XML
<books>
    <book>
        <title>PHP Basics</title>
        <author>Jim Smith</author>
    </book>
    <book>XML basics</book>
</books>
XML;

$xmlIterator = new SimpleXMLIterator($xml);
for( $xmlIterator->rewind(); $xmlIterator->valid(); $xmlIterator->next() ) {
    foreach($xmlIterator->getChildren() as $name => $data) {
    echo "The $name is '$data' from the class " . get_class($data) . "\n";
    }
}
?>

以上例程会输出：

The title is 'PHP Basics' from the class SimpleXMLIterator
The author is 'Jim Smith' from the class SimpleXMLIterator

SimpleXMLIterator::current
SimpleXMLIterator::hasChildren
SimpleXMLIterator


Checks whether the current element has sub elements.

SimpleXMLIterator::getChildren
SimpleXMLIterator::key
SimpleXMLIterator
PHP Manual

SimpleXMLIterator::hasChildren

(PHP 5 >= 5.1.0, PHP 7)

SimpleXMLIterator::hasChildren — Checks whether the current element has sub elements.

说明

public bool SimpleXMLIterator::hasChildren ( void )

This method checks whether the current SimpleXMLIterator element has sub-elements.

参数

此函数没有参数。

返回值

TRUE if the current element has sub-elements, otherwise FALSE

范例

Example #1 Check whether the current element has sub-elements

<?php
$xml = <<<XML
<books>
    <book>
        <title>PHP Basics</title>
        <author>Jim Smith</author>
    </book>
    <book>XML basics</book>
</books>
XML;

$xmlIterator = new SimpleXMLIterator( $xml );
for( $xmlIterator->rewind(); $xmlIterator->valid(); $xmlIterator->next() ) {
    if($xmlIterator->hasChildren()) {
        var_dump($xmlIterator->current());
    }
}
?>

以上例程会输出：

object(SimpleXMLIterator)#2 (2) {
  ["title"]=>
  string(10) "PHP Basics"
  ["author"]=>
  string(9) "Jim Smith"
}

SimpleXMLIterator::getChildren
SimpleXMLIterator::key
SimpleXMLIterator


Return current key

SimpleXMLIterator::hasChildren
SimpleXMLIterator::next
SimpleXMLIterator
PHP Manual

SimpleXMLIterator::key

(PHP 5 >= 5.1.0, PHP 7)

SimpleXMLIterator::key — Return current key

说明

public mixed SimpleXMLIterator::key ( void )

This method gets the XML tag name of the current element.

参数

此函数没有参数。

返回值

Returns the XML tag name of the element referenced by the current SimpleXMLIterator object or FALSE

范例

Example #1 Get the current XML tag key

<?php
$xmlIterator = new SimpleXMLIterator('<books><book>PHP basics</book><book>XML basics</book></books>');

echo var_dump($xmlIterator->key());
$xmlIterator->rewind(); // rewind to the first element
echo var_dump($xmlIterator->key());

?>

以上例程会输出：

bool(false)
string(4) "book"

SimpleXMLIterator::hasChildren
SimpleXMLIterator::next
SimpleXMLIterator


Move to next element

SimpleXMLIterator::key
SimpleXMLIterator::rewind
SimpleXMLIterator
PHP Manual

SimpleXMLIterator::next

(PHP 5 >= 5.1.0, PHP 7)

SimpleXMLIterator::next — Move to next element

说明

public void SimpleXMLIterator::next ( void )

This method moves the SimpleXMLIterator to the next element.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 Move to the next element

<?php
$xmlIterator = new SimpleXMLIterator('<books><book>PHP Basics</book><book>XML basics</book></books>');
$xmlIterator->rewind(); // rewind to the first element
$xmlIterator->next();

var_dump($xmlIterator->current());
?>

以上例程会输出：

object(SimpleXMLIterator)#2 (1) {
  [0]=>
  string(10) "XML basics"
}

SimpleXMLIterator::key
SimpleXMLIterator::rewind
SimpleXMLIterator


Rewind to the first element

SimpleXMLIterator::next
SimpleXMLIterator::valid
SimpleXMLIterator
PHP Manual

SimpleXMLIterator::rewind

(PHP 5 >= 5.1.0, PHP 7)

SimpleXMLIterator::rewind — Rewind to the first element

说明

public void SimpleXMLIterator::rewind ( void )

This method rewinds the SimpleXMLIterator to the first element.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 Rewind to the first element

<?php
$xmlIterator = new SimpleXMLIterator('<books><book>PHP Basics</book><book>XML Basics</book></books>');
$xmlIterator->rewind();

var_dump($xmlIterator->current());
?>

以上例程会输出：

object(SimpleXMLIterator)#2 (1) {
  [0]=>
  string(10) "PHP Basics"
}

SimpleXMLIterator::next
SimpleXMLIterator::valid
SimpleXMLIterator


Check whether the current element is valid

SimpleXMLIterator::rewind
SimpleXML 函数
SimpleXMLIterator
PHP Manual

SimpleXMLIterator::valid

(PHP 5 >= 5.1.0, PHP 7)

SimpleXMLIterator::valid — Check whether the current element is valid

说明

public bool SimpleXMLIterator::valid ( void )

This method checks if the current element is valid after calls to SimpleXMLIterator::rewind() or SimpleXMLIterator::next().

参数

此函数没有参数。

返回值

Returns TRUE if the current element is valid, otherwise FALSE

范例

Example #1 Check whether the current element is valid

<?php
$xmlIterator = new SimpleXMLIterator('<books><book>SQL Basics</book></books>');

$xmlIterator->rewind(); // rewind to the first element
echo var_dump($xmlIterator->valid()); // bool(true)

$xmlIterator->next(); // advance to the next element
echo var_dump($xmlIterator->valid()); // bool(false) because there is only one element
?>

SimpleXMLIterator::rewind
SimpleXML 函数
SimpleXMLIterator


SimpleXML 函数

Table of Contents

  • simplexml_import_dom — Get a SimpleXMLElement object from a DOM node.
  • simplexml_load_file — Interprets an XML file into an object
  • simplexml_load_string — Interprets a string of XML into an object
SimpleXMLIterator::valid
simplexml_import_dom
SimpleXML


Get a SimpleXMLElement object from a DOM node.

SimpleXML 函数
simplexml_load_file
SimpleXML 函数
PHP Manual

simplexml_import_dom

(PHP 5, PHP 7)

simplexml_import_dom — Get a SimpleXMLElement object from a DOM node.

说明

SimpleXMLElement simplexml_import_dom ( DOMNode $node [, string $class_name = "SimpleXMLElement" ] )

This function takes a node of a DOM document and makes it into a SimpleXML node. This new object can then be used as a native SimpleXML element.

参数

node

A DOM Element node

class_name

You may use this optional parameter so that simplexml_import_dom() will return an object of the specified class. That class should extend the SimpleXMLElement class.

返回值

Returns a SimpleXMLElement 或者在失败时返回 FALSE.

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

范例

Example #1 Importing DOM

<?php
$dom = new DOMDocument;
$dom->loadXML('<books><book><title>blah</title></book></books>');
if (!$dom) {
    echo 'Error while parsing the document';
    exit;
}

$s = simplexml_import_dom($dom);

echo $s->book[0]->title;
?>

以上例程会输出：

blah

参见

  • dom_import_simplexml() - Gets a DOMElement object from a SimpleXMLElement object
  • Basic SimpleXML usage

SimpleXML 函数
simplexml_load_file
SimpleXML 函数


Interprets an XML file into an object

simplexml_import_dom
simplexml_load_string
SimpleXML 函数
PHP Manual

simplexml_load_file

(PHP 5, PHP 7)

simplexml_load_file — Interprets an XML file into an object

说明

SimpleXMLElement simplexml_load_file ( string $filename [, string $class_name = "SimpleXMLElement" [, int $options = 0 [, string $ns = "" [, bool $is_prefix = false ]]]] )

Convert the well-formed XML document in the given file to an object.

参数

filename

Path to the XML file

Note:

Libxml 2 unescapes the URI, so if you want to pass e.g. b&c as the URI parameter a, you have to call simplexml_load_file(rawurlencode('http://example.com/?a=' . urlencode('b&c'))). Since PHP 5.1.0 you don't need to do this because PHP will do it for you.

class_name

You may use this optional parameter so that simplexml_load_file() will return an object of the specified class. That class should extend the SimpleXMLElement class.

options

Since PHP 5.1.0 and Libxml 2.6.0, you may also use the options parameter to specify additional Libxml parameters.

ns

Namespace prefix or URI.

is_prefix

TRUE if ns is a prefix, FALSE if it's a URI; defaults to FALSE.

返回值

Returns an object of class SimpleXMLElement with properties containing the data held within the XML document, 或者在失败时返回 FALSE.

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

错误／异常

Produces an E_WARNING error message for each error found in the XML data.

Tip

Use libxml_use_internal_errors() to suppress all XML errors, and libxml_get_errors() to iterate over them afterwards.

范例

Example #1 Interpret an XML document

<?php
// The file test.xml contains an XML document with a root element
// and at least an element /[root]/title.

if (file_exists('test.xml')) {
    $xml = simplexml_load_file('test.xml');

    print_r($xml);
} else {
    exit('Failed to open test.xml.');
}
?>

This script will display, on success:

SimpleXMLElement Object
(
  [title] => Example Title
  ...
)

At this point, you can go about using $xml->title and any other elements.

参见

  • simplexml_load_string() - Interprets a string of XML into an object
  • SimpleXMLElement::__construct() - Creates a new SimpleXMLElement object
  • Dealing with XML errors
  • libxml_use_internal_errors() - Disable libxml errors and allow user to fetch error information as needed
  • Basic SimpleXML usage

simplexml_import_dom
simplexml_load_string
SimpleXML 函数


Interprets a string of XML into an object

simplexml_load_file
WDDX
SimpleXML 函数
PHP Manual

simplexml_load_string

(PHP 5, PHP 7)

simplexml_load_string — Interprets a string of XML into an object

说明

SimpleXMLElement simplexml_load_string ( string $data [, string $class_name = "SimpleXMLElement" [, int $options = 0 [, string $ns = "" [, bool $is_prefix = false ]]]] )

Takes a well-formed XML string and returns it as an object.

参数

data

A well-formed XML string

class_name

You may use this optional parameter so that simplexml_load_string() will return an object of the specified class. That class should extend the SimpleXMLElement class.

options

Since PHP 5.1.0 and Libxml 2.6.0, you may also use the options parameter to specify additional Libxml parameters.

ns

Namespace prefix or URI.

is_prefix

TRUE if ns is a prefix, FALSE if it's a URI; defaults to FALSE.

返回值

Returns an object of class SimpleXMLElement with properties containing the data held within the xml document, 或者在失败时返回 FALSE.

Warning

此函数可能返回布尔值 FALSE，但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

错误／异常

Produces an E_WARNING error message for each error found in the XML data.

Tip

Use libxml_use_internal_errors() to suppress all XML errors, and libxml_get_errors() to iterate over them afterwards.

范例

Example #1 Interpret an XML string

<?php
$string = <<<XML
<?xml version='1.0'?>
<document>
 <title>Forty What?</title>
 <from>Joe</from>
 <to>Jane</to>
 <body>
  I know that's the answer -- but what's the question?
 </body>
</document>
XML;

$xml = simplexml_load_string($string);

print_r($xml);
?>

以上例程会输出：

SimpleXMLElement Object
(
  [title] => Forty What?
  [from] => Joe
  [to] => Jane
  [body] =>
   I know that's the answer -- but what's the question?
)

At this point, you can go about using $xml->body and such.

参见

  • simplexml_load_file() - Interprets an XML file into an object
  • SimpleXMLElement::__construct() - Creates a new SimpleXMLElement object
  • Dealing with XML errors
  • libxml_use_internal_errors() - Disable libxml errors and allow user to fetch error information as needed
  • Basic SimpleXML usage

simplexml_load_file
WDDX
SimpleXML 函数


WDDX

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • wddx examples
  • WDDX 函数
    • wddx_add_vars — Add variables to a WDDX packet with the specified ID
    • wddx_deserialize — Unserializes a WDDX packet
    • wddx_packet_end — Ends a WDDX packet with the specified ID
    • wddx_packet_start — Starts a new WDDX packet with structure inside it
    • wddx_serialize_value — Serialize a single value into a WDDX packet
    • wddx_serialize_vars — Serialize variables into a WDDX packet
simplexml_load_string
简介
XML 操作


简介

These functions are intended for work with » WDDX.

WDDX
安装／配置
WDDX


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
WDDX


需求

此扩展需要 libxml PHP 扩展。这表示需要使用 --enable-libxml ，尽管这将隐式完成因为 libxml 是缺省开启的。

In order to use WDDX, you will need to install the expat library (which comes with Apache 1.3.7 or higher).

安装／配置
安装
安装／配置


安装

After installing the required expat library, compile PHP with --enable-wddx , and use --with-libexpat-dir for expat.

PHP 的 Windows 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。

需求
运行时配置
安装／配置


资源类型

This extension defines a WDDX packet identifier returned by wddx_packet_start().

运行时配置
预定义常量
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
范例
WDDX


范例

Table of Contents

  • wddx examples
预定义常量
wddx examples
WDDX


wddx examples

All the functions that serialize variables use the first element of an array to determine whether the array is to be serialized into an array or structure. If the first element has string key, then it is serialized into a structure, otherwise, into an array.

Example #1 Serializing a single value with WDDX

<?php
echo wddx_serialize_value("PHP to WDDX packet example", "PHP packet");
?>

This example will produce:

<wddxPacket version='1.0'><header comment='PHP packet'/><data>
<string>PHP to WDDX packet example</string></data></wddxPacket>

Example #2 Using incremental packets with WDDX

<?php
$pi = 3.1415926;
$packet_id = wddx_packet_start("PHP");
wddx_add_vars($packet_id, "pi");

/* Suppose $cities came from database */
$cities = array("Austin", "Novato", "Seattle");
wddx_add_vars($packet_id, "cities");

$packet = wddx_packet_end($packet_id);
echo $packet;
?>

This example will produce:

<wddxPacket version='1.0'><header comment='PHP'/><data><struct>
<var name='pi'><number>3.1415926</number></var><var name='cities'>
<array length='3'><string>Austin</string><string>Novato</string>
<string>Seattle</string></array></var></struct></data></wddxPacket>

Note:

If you want to serialize non-ASCII characters you have to convert your data to UTF-8 first (see utf8_encode() and iconv()).

范例
WDDX 函数
范例


WDDX 函数

Table of Contents

  • wddx_add_vars — Add variables to a WDDX packet with the specified ID
  • wddx_deserialize — Unserializes a WDDX packet
  • wddx_packet_end — Ends a WDDX packet with the specified ID
  • wddx_packet_start — Starts a new WDDX packet with structure inside it
  • wddx_serialize_value — Serialize a single value into a WDDX packet
  • wddx_serialize_vars — Serialize variables into a WDDX packet
wddx examples
wddx_add_vars
WDDX


Add variables to a WDDX packet with the specified ID

WDDX 函数
wddx_deserialize
WDDX 函数
PHP Manual

wddx_add_vars

(PHP 4, PHP 5, PHP 7)

wddx_add_vars — Add variables to a WDDX packet with the specified ID

说明

bool wddx_add_vars ( resource $packet_id , mixed $var_name [, mixed $... ] )

Serializes the passed variables and add the result to the given packet.

参数

This function takes a variable number of parameters.

packet_id

A WDDX packet, returned by wddx_packet_start().

var_name

Can be either a string naming a variable or an array containing strings naming the variables or another array, etc.

...

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

WDDX 函数
wddx_deserialize
WDDX 函数


Unserializes a WDDX packet

wddx_add_vars
wddx_packet_end
WDDX 函数
PHP Manual

wddx_deserialize

(PHP 4, PHP 5, PHP 7)

wddx_deserialize — Unserializes a WDDX packet

说明

mixed wddx_deserialize ( string $packet )

Unserializes a WDDX packet.

参数

packet

A WDDX packet, as a string or stream.

返回值

Returns the deserialized value which can be a string, a number or an array. Note that structures are deserialized into associative arrays.

注释

Warning

Do not pass untrusted user input to wddx_deserialize(). Unserialization can result in code being loaded and executed due to object instantiation and autoloading, and a malicious user may be able to exploit this.

wddx_add_vars
wddx_packet_end
WDDX 函数


Ends a WDDX packet with the specified ID

wddx_deserialize
wddx_packet_start
WDDX 函数
PHP Manual

wddx_packet_end

(PHP 4, PHP 5, PHP 7)

wddx_packet_end — Ends a WDDX packet with the specified ID

说明

string wddx_packet_end ( resource $packet_id )

Ends and returns the given WDDX packet.

参数

packet_id

A WDDX packet, returned by wddx_packet_start().

返回值

Returns the string containing the WDDX packet.

wddx_deserialize
wddx_packet_start
WDDX 函数


Starts a new WDDX packet with structure inside it

wddx_packet_end
wddx_serialize_value
WDDX 函数
PHP Manual

wddx_packet_start

(PHP 4, PHP 5, PHP 7)

wddx_packet_start — Starts a new WDDX packet with structure inside it

说明

resource wddx_packet_start ([ string $comment ] )

Start a new WDDX packet for incremental addition of variables. It automatically creates a structure definition inside the packet to contain the variables.

参数

comment

An optional comment string.

返回值

Returns a packet ID for use in later functions, or FALSE on error.

wddx_packet_end
wddx_serialize_value
WDDX 函数


Serialize a single value into a WDDX packet

wddx_packet_start
wddx_serialize_vars
WDDX 函数
PHP Manual

wddx_serialize_value

(PHP 4, PHP 5, PHP 7)

wddx_serialize_value — Serialize a single value into a WDDX packet

说明

string wddx_serialize_value ( mixed $var [, string $comment ] )

Creates a WDDX packet from a single given value.

参数

var

The value to be serialized

comment

An optional comment string that appears in the packet header.

返回值

Returns the WDDX packet, or FALSE on error.

wddx_packet_start
wddx_serialize_vars
WDDX 函数


Serialize variables into a WDDX packet

wddx_serialize_value
XMLDiff
WDDX 函数
PHP Manual

wddx_serialize_vars

(PHP 4, PHP 5, PHP 7)

wddx_serialize_vars — Serialize variables into a WDDX packet

说明

string wddx_serialize_vars ( mixed $var_name [, mixed $... ] )

Creates a WDDX packet with a structure that contains the serialized representation of the passed variables.

参数

This function takes a variable number of parameters.

var_name

Can be either a string naming a variable or an array containing strings naming the variables or another array, etc.

...

返回值

Returns the WDDX packet, or FALSE on error.

范例

Example #1 wddx_serialize_vars() example

<?php
$a = 1;
$b = 5.5;
$c = array("blue", "orange", "violet");
$d = "colors";

$clvars = array("c", "d");
echo wddx_serialize_vars("a", "b", $clvars);
?>

以上例程会输出：

<wddxPacket version='1.0'><header/><data><struct><var name='a'><number>1</number></var>
<var name='b'><number>5.5</number></var><var name='c'><array length='3'>
<string>blue</string><string>orange</string><string>violet</string></array></var>
<var name='d'><string>colors</string></var></struct></data></wddxPacket>

wddx_serialize_value
XMLDiff
WDDX 函数


XML diff and merge

  • 简介
  • 安装／配置
    • 需求
    • 安装
  • XMLDiff\Base — The XMLDiff\Base class
    • XMLDiff\Base::__construct — Constructor
    • XMLDiff\Base::diff — Produce diff of two XML documents
    • XMLDiff\Base::merge — Produce new XML document based on diff
  • XMLDiff\DOM — The XMLDiff\DOM class
    • XMLDiff\DOM::diff — Diff two DOMDocument objects
    • XMLDiff\DOM::merge — Produce merged DOMDocument
  • XMLDiff\Memory — The XMLDiff\Memory class
    • XMLDiff\Memory::diff — Diff two XML documents
    • XMLDiff\Memory::merge — Produce merged XML document
  • XMLDiff\File — The XMLDiff\File class
    • XMLDiff\File::diff — Diff two XML files
    • XMLDiff\File::merge — Produce merged XML document
wddx_serialize_vars
简介
XML 操作


简介

The extension is able to produce diffs of two XML documents and then to apply the difference to the source document. The diff is a XML document containing copy/insert/delete instruction nodes in human readable format. DOMDocument objects, local files and strings in memory can be processed.

XMLDiff
安装／配置
XMLDiff


安装／配置

Table of Contents

  • 需求
  • 安装
简介
需求
XMLDiff


需求

libdiffmark - version 0.10 is bundled with the extension. If diffmark is available from your system packages, its usage is strongly encouraged.

libxml extension

DOM extension

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/xmldiff.

A DLL for this PECL extension is available under » http://windows.php.net/downloads/pecl/releases/xmldiff/.

需求
XMLDiff\Base
安装／配置


The XMLDiff\Base class

(PECL xmldiff >= 0.8.0)

简介

Base abstract class for all the comparsion classes in the extension.

类摘要

XMLDiff\Base {
/* 方法 */
public __construct ( string $nsname )
abstract public mixed diff ( mixed $from , mixed $to )
abstract public mixed merge ( mixed $src , mixed $diff )
}

Table of Contents

  • XMLDiff\Base::__construct — Constructor
  • XMLDiff\Base::diff — Produce diff of two XML documents
  • XMLDiff\Base::merge — Produce new XML document based on diff
安装
XMLDiff\Base::__construct
XMLDiff


Constructor

XMLDiff\Base
XMLDiff\Base::diff
XMLDiff\Base
PHP Manual

XMLDiff\Base::__construct

(PECL xmldiff >= 0.8.0)

XMLDiff\Base::__construct — Constructor

说明

public XMLDiff\Base::__construct ( string $nsname )

Base constructor for all the worker classes in the xmldiff extension.

参数

nsname

Custom namespace name for the diff document. The default namespace is http://www.locus.cz/diffmark and that's enough to avoid namespace conflicts. Use this parameter if you want to change it for some reason.

返回值

XMLDiff\Base
XMLDiff\Base::diff
XMLDiff\Base


Produce diff of two XML documents

XMLDiff\Base::__construct
XMLDiff\Base::merge
XMLDiff\Base
PHP Manual

XMLDiff\Base::diff

(PECL xmldiff >= 0.8.0)

XMLDiff\Base::diff — Produce diff of two XML documents

说明

abstract public mixed XMLDiff\Base::diff ( mixed $from , mixed $to )

Abstract diff method to be implemented by inheriting classes.

The basic purpose of this method is to produce diff of the two documents. The param order matters and will produce different output.

参数

from

Source XML document.

to

Target XML document.

返回值

Implementation dependent.

XMLDiff\Base::__construct
XMLDiff\Base::merge
XMLDiff\Base


Produce new XML document based on diff

XMLDiff\Base::diff
XMLDiff\DOM
XMLDiff\Base
PHP Manual

XMLDiff\Base::merge

(PECL xmldiff >= 0.8.0)

XMLDiff\Base::merge — Produce new XML document based on diff

说明

abstract public mixed XMLDiff\Base::merge ( mixed $src , mixed $diff )

Abstract merge method to be implemented by inheriting classes.

Basically the method purpose is to produce a new XML document based on the diff information.

参数

src

Source XML document.

diff

Document produced by the diff method.

返回值

Implementation dependent.

XMLDiff\Base::diff
XMLDiff\DOM
XMLDiff\Base


The XMLDiff\DOM class

(PECL xmldiff >= 0.8.0)

简介

类摘要

XMLDiff\DOM extends XMLDiff\Base {
/* 方法 */
public DOMDocument diff ( DOMDocument $from , DOMDocument $to )
public DOMDocument merge ( DOMDocument $src , DOMDocument $diff )
/* 继承的方法 */
public XMLDiff\Base::__construct ( string $nsname )
abstract public mixed XMLDiff\Base::diff ( mixed $from , mixed $to )
abstract public mixed XMLDiff\Base::merge ( mixed $src , mixed $diff )
}

Table of Contents

  • XMLDiff\DOM::diff — Diff two DOMDocument objects
  • XMLDiff\DOM::merge — Produce merged DOMDocument
XMLDiff\Base::merge
XMLDiff\DOM::diff
XMLDiff


Diff two DOMDocument objects

XMLDiff\DOM
XMLDiff\DOM::merge
XMLDiff\DOM
PHP Manual

XMLDiff\DOM::diff

(PECL xmldiff >= 0.8.0)

XMLDiff\DOM::diff — Diff two DOMDocument objects

说明

public DOMDocument XMLDiff\DOM::diff ( DOMDocument $from , DOMDocument $to )

Diff two DOMDocument instances and produce the new one containing the diff information.

参数

from

Source DOMDocument object.

to

Target DOMDocument object.

返回值

DOMDocument with the diff information or NULL.

XMLDiff\DOM
XMLDiff\DOM::merge
XMLDiff\DOM


Produce merged DOMDocument

XMLDiff\DOM::diff
XMLDiff\Memory
XMLDiff\DOM
PHP Manual

XMLDiff\DOM::merge

(PECL xmldiff >= 0.8.0)

XMLDiff\DOM::merge — Produce merged DOMDocument

说明

public DOMDocument XMLDiff\DOM::merge ( DOMDocument $src , DOMDocument $diff )

Create new DOMDocument based on the diff.

参数

src

Source DOMDocument object.

diff

DOMDocument object containing the diff information.

返回值

Merged DOMDocument or NULL.

XMLDiff\DOM::diff
XMLDiff\Memory
XMLDiff\DOM


The XMLDiff\Memory class

(PECL xmldiff >= 0.8.0)

简介

类摘要

XMLDiff\Memory extends XMLDiff\Base {
/* 方法 */
public string diff ( string $from , string $to )
public string merge ( string $src , string $diff )
/* 继承的方法 */
public XMLDiff\Base::__construct ( string $nsname )
abstract public mixed XMLDiff\Base::diff ( mixed $from , mixed $to )
abstract public mixed XMLDiff\Base::merge ( mixed $src , mixed $diff )
}

Table of Contents

  • XMLDiff\Memory::diff — Diff two XML documents
  • XMLDiff\Memory::merge — Produce merged XML document
XMLDiff\DOM::merge
XMLDiff\Memory::diff
XMLDiff


Diff two XML documents

XMLDiff\Memory
XMLDiff\Memory::merge
XMLDiff\Memory
PHP Manual

XMLDiff\Memory::diff

(PECL xmldiff >= 0.8.0)

XMLDiff\Memory::diff — Diff two XML documents

说明

public string XMLDiff\Memory::diff ( string $from , string $to )

Diff two strings containing XML documents and produce the diff information.

参数

from

Source XML document.

to

Target XML document.

返回值

String with the XML document containing the diff information or NULL.

XMLDiff\Memory
XMLDiff\Memory::merge
XMLDiff\Memory


Produce merged XML document

XMLDiff\Memory::diff
XMLDiff\File
XMLDiff\Memory
PHP Manual

XMLDiff\Memory::merge

(PECL xmldiff >= 0.8.0)

XMLDiff\Memory::merge — Produce merged XML document

说明

public string XMLDiff\Memory::merge ( string $src , string $diff )

Create new XML document based on diffs and source document.

参数

src

Source XML document.

diff

XML document containing diff information.

返回值

String with the new XML document or NULL.

XMLDiff\Memory::diff
XMLDiff\File
XMLDiff\Memory


The XMLDiff\File class

(PECL xmldiff >= 0.8.0)

简介

类摘要

XMLDiff\File extends XMLDiff\Base {
/* 方法 */
public string diff ( string $from , string $to )
public string merge ( string $src , string $diff )
/* 继承的方法 */
public XMLDiff\Base::__construct ( string $nsname )
abstract public mixed XMLDiff\Base::diff ( mixed $from , mixed $to )
abstract public mixed XMLDiff\Base::merge ( mixed $src , mixed $diff )
}

Table of Contents

  • XMLDiff\File::diff — Diff two XML files
  • XMLDiff\File::merge — Produce merged XML document
XMLDiff\Memory::merge
XMLDiff\File::diff
XMLDiff


Diff two XML files

XMLDiff\File
XMLDiff\File::merge
XMLDiff\File
PHP Manual

XMLDiff\File::diff

(PECL xmldiff >= 0.8.0)

XMLDiff\File::diff — Diff two XML files

说明

public string XMLDiff\File::diff ( string $from , string $to )

Diff two local XML files and produce string with the diff information.

参数

from

Path to the source document.

to

Path to the target document.

返回值

String with the XML document containing the diff information or NULL.

XMLDiff\File
XMLDiff\File::merge
XMLDiff\File


Produce merged XML document

XMLDiff\File::diff
XML 解析器
XMLDiff\File
PHP Manual

XMLDiff\File::merge

(PECL xmldiff >= 0.8.0)

XMLDiff\File::merge — Produce merged XML document

说明

public string XMLDiff\File::merge ( string $src , string $diff )

Create new XML document based on diffs and source document.

参数

src

Path to the source XML document.

diff

Path to the XML document with the diff information.

返回值

String with the new XML document or NULL.

XMLDiff\File::diff
XML 解析器
XMLDiff\File


XML 解析器

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 事件处理器
  • Case Folding(大写转换)
  • 错误代码
  • 字符编码
  • 范例
    • XML 元素结构例程
    • XML 标签映射例程
    • XML 外部实体例程
  • XML 解析器函数
    • utf8_decode — 将用 UTF-8 方式编码的 ISO-8859-1 字符串转换成单字节的 ISO-8859-1 字符串。
    • utf8_encode — 将 ISO-8859-1 编码的字符串转换为 UTF-8 编码
    • xml_error_string — 获取 XML 解析器的错误字符串
    • xml_get_current_byte_index — 获取 XML 解析器的当前字节索引
    • xml_get_current_column_number — 获取 XML 解析器的当前列号
    • xml_get_current_line_number — 获取 XML 解析器的当前行号
    • xml_get_error_code — 获取 XML 解析器错误代码
    • xml_parse_into_struct — 将 XML 数据解析到数组中
    • xml_parse — 开始解析一个 XML 文档
    • xml_parser_create_ns — 生成一个支持命名空间的 XML 解析器
    • xml_parser_create — 建立一个 XML 解析器
    • xml_parser_free — 释放指定的 XML 解析器
    • xml_parser_get_option — 从 XML 解析器获取选项设置信息
    • xml_parser_set_option — 为指定 XML 解析进行选项设置
    • xml_set_character_data_handler — 建立字符数据处理器
    • xml_set_default_handler — 建立默认处理器
    • xml_set_element_handler — 建立起始和终止元素处理器
    • xml_set_end_namespace_decl_handler — 建立终止命名空间声明处理器
    • xml_set_external_entity_ref_handler — 建立外部实体指向处理器
    • xml_set_notation_decl_handler — 建立注释声明处理器
    • xml_set_object — 在对象中使用 XML 解析器
    • xml_set_processing_instruction_handler — 建立处理指令（PI）处理器
    • xml_set_start_namespace_decl_handler — 建立起始命名空间声明处理器
    • xml_set_unparsed_entity_decl_handler — 建立未解析实体定义声明处理器
XMLDiff\File::merge
简介
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 解析器还存在少数可以调节的 参数。

XML 解析器
安装／配置
XML 解析器


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
XML 解析器


需求

此扩展需要 libxml PHP 扩展。这表示需要使用 --enable-libxml ，尽管这将隐式完成因为 libxml 是缺省开启的。

缺省情况下，此扩展使用expat compat layer 。也可使用expat， 此库位于 » http://www.jclark.com/xml/expat.html。 使用expat库中的 Makefile 是不会默认构建出库文件的，可使用以下构建规则进行构建：

libexpat.a: $(OBJS)
    ar -rc $@ $(OBJS)
    ranlib $@
expat 的源代码 RPM 安装包可在 » http://sourceforge.net/projects/expat/ 找到。

安装／配置
安装
安装／配置


安装

此扩展默认为启用,编译时可通过下列选项禁用： --disable-xml

这些函数默认为有效的，使用了捆绑的 expat 库。您可以通过参数 --disable-xml 来屏蔽 XML 的支持。如果您将 PHP 编译为 Apache 1.3.9 或更高版本的一个模块， PHP 将自动使用 Apache 捆绑的 expat 库。如果您不希望使用该捆绑的 expat 库，请在运行 PHP 的 configure 配置脚本时使用参数 --with-expat-dir=DIR ，其中 DIR 应该指向 expat 安装的根目录。

PHP 的 Windows 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。

需求
运行时配置
安装／配置


资源类型

xml_parser_create() 与 xml_parser_create_ns() 返回的 XML 资源会引用 XML 解析器实例，以被此扩展提供的函数使用。

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

XML_ERROR_NONE (integer)
XML_ERROR_NO_MEMORY (integer)
XML_ERROR_SYNTAX (integer)
XML_ERROR_NO_ELEMENTS (integer)
XML_ERROR_INVALID_TOKEN (integer)
XML_ERROR_UNCLOSED_TOKEN (integer)
XML_ERROR_PARTIAL_CHAR (integer)
XML_ERROR_TAG_MISMATCH (integer)
XML_ERROR_DUPLICATE_ATTRIBUTE (integer)
XML_ERROR_JUNK_AFTER_DOC_ELEMENT (integer)
XML_ERROR_PARAM_ENTITY_REF (integer)
XML_ERROR_UNDEFINED_ENTITY (integer)
XML_ERROR_RECURSIVE_ENTITY_REF (integer)
XML_ERROR_ASYNC_ENTITY (integer)
XML_ERROR_BAD_CHAR_REF (integer)
XML_ERROR_BINARY_ENTITY_REF (integer)
XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF (integer)
XML_ERROR_MISPLACED_XML_PI (integer)
XML_ERROR_UNKNOWN_ENCODING (integer)
XML_ERROR_INCORRECT_ENCODING (integer)
XML_ERROR_UNCLOSED_CDATA_SECTION (integer)
XML_ERROR_EXTERNAL_ENTITY_HANDLING (integer)
XML_OPTION_CASE_FOLDING (integer)
XML_OPTION_TARGET_ENCODING (integer)
XML_OPTION_SKIP_TAGSTART (integer)
XML_OPTION_SKIP_WHITE (integer)
XML_SAX_IMPL (string)
指定 SAX 实现方法。可为 libxml 或 expat.
资源类型
事件处理器
XML 解析器


事件处理器

XML 事件处理器的定义如下：

被支持的 XML 处理器
PHP 处理器函数 | 事件描述
xml_set_element_handler() | 当 XML 解析器遇到开始或结束标签时，会触发元素事件。 开始标签和结束标签有不同的处理器。
xml_set_character_data_handler() | 字符数据范指 XML 文档中所有非标记的内容，包括标签之间的空格。 注意，XML 解析器不会添加或删除任何空格，由应用程序(你)来判断空格是否有意义。
xml_set_processing_instruction_handler() | PHP 程序员必须熟练掌握处理指令(PI)。<?php ?>是处理指令， 其中php被称为"处理指令对象"。 除所有以"XML"开头的处理指令对象是系统保留的外， 其他的处理函数均是由应用程序指定的。
xml_set_default_handler() | 不执行其他处理函数，则会执行缺省的处理函数。 在缺省的处理函数中可取得如 XML 和文档类型声明等信息。
xml_set_unparsed_entity_decl_handler() | 未解析的实体声明(NDATA)会调用此处理函数。
xml_set_notation_decl_handler() | 符号声明会调用此处理函数
xml_set_external_entity_ref_handler() | 当 XML 解析器发现对外部已解析的普通实体的引用时， 会调用此处理函数。例如，引用一个文件或URL。实例可参见 XML 外部实体例程。

预定义常量
Case Folding(大写转换)
XML 解析器


Case Folding(大写转换)

元素处理函数可取得元素名称转换为 case-folded(大写字母)形式。 Case-folding 被定义为"将非大写字母替换为相对应的大写字母的字符串操作"。换句话说，在 XML 中，case-folding 就是转换为大写。

默认情况下，所有的通过处理函数的元素名都被转换为大写字母。每个 XML 解析器可分别通过xml_parser_get_option()与 xml_parser_set_option()函数来查询与控制此项功能。

事件处理器
错误代码
XML 解析器


错误代码

下列常量是 XML 相关的错误代码(xml_parse()函数的返回值):

  • XML_ERROR_NONE
  • XML_ERROR_NO_MEMORY
  • XML_ERROR_SYNTAX
  • XML_ERROR_NO_ELEMENTS
  • XML_ERROR_INVALID_TOKEN
  • XML_ERROR_UNCLOSED_TOKEN
  • XML_ERROR_PARTIAL_CHAR
  • XML_ERROR_TAG_MISMATCH
  • XML_ERROR_DUPLICATE_ATTRIBUTE
  • XML_ERROR_JUNK_AFTER_DOC_ELEMENT
  • XML_ERROR_PARAM_ENTITY_REF
  • XML_ERROR_UNDEFINED_ENTITY
  • XML_ERROR_RECURSIVE_ENTITY_REF
  • XML_ERROR_ASYNC_ENTITY
  • XML_ERROR_BAD_CHAR_REF
  • XML_ERROR_BINARY_ENTITY_REF
  • XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF
  • XML_ERROR_MISPLACED_XML_PI
  • XML_ERROR_UNKNOWN_ENCODING
  • XML_ERROR_INCORRECT_ENCODING
  • XML_ERROR_UNCLOSED_CDATA_SECTION
  • XML_ERROR_EXTERNAL_ENTITY_HANDLING

Case Folding(大写转换)
字符编码
XML 解析器


字符编码

PHP 的 XML 扩展通过几种不同的字符编码支持» Unicode 字符集。 有两类字符编码， 原始编码 和 目标编码. 在PHP的内部展现中，文档始终是使用UTF-8编码。

当 XML 被 解析 后，原始编码就完成了。 在创建 XML 解析器时, 可以指定原始编码(在XML 解析器此后的生命周期里，不能修改此编码)。 被支持的原始编码有 ISO-8859-1, US-ASCII 和 UTF-8. 前两种是单字节编码, 即每一个字符表现为一个字节。 UTF-8 可将字符编码为一串不定数量(最高21)的位(bit), 排列成1到4个字节。 PHP 中使用的默认原始编码是ISO-8859-1.

当 PHP 将数据传给 XML 处理函数时，目标编码就完成了。 在创建 XML 处理器时，目标编码被设定为与原始编码相同，但可任意修改。 目标编码会影响字符数据及标签名，与处理指令目标。

如 XML 解析器遇到原始编码所能表示的范围之外的字符时，会返回一个错误。

如 PHP 遇到在被解析的 XML 文档中不能用所指定的目标编码表示的字符时， 这个问题字符会被"降级"。通常来说，就是那些字符会被替换成问号(?)。

错误代码
范例
XML 解析器


范例

Table of Contents

  • XML 元素结构例程
  • XML 标签映射例程
  • XML 外部实体例程
字符编码
XML 元素结构例程
XML 解析器


XML 元素结构例程

第一个例程缩进显示文档中的开始元素结构。

Example #1 显示 XML 元素结构

<?php
$file = "data.xml";
$depth = array();

function startElement($parser, $name, $attrs)
{
    global $depth;
    for ($i = 0; $i < $depth[$parser]; $i++) {
        echo "  ";
    }
    echo "$name\n";
    $depth[$parser]++;
}

function endElement($parser, $name)
{
    global $depth;
    $depth[$parser]--;
}

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
if (!($fp = fopen($file, "r"))) {
    die("could not open XML input");
}

while ($data = fread($fp, 4096)) {
    if (!xml_parse($xml_parser, $data, feof($fp))) {
        die(sprintf("XML error: %s at line %d",
                    xml_error_string(xml_get_error_code($xml_parser)),
                    xml_get_current_line_number($xml_parser)));
    }
}
xml_parser_free($xml_parser);
?>

范例
XML 标签映射例程
范例


XML 标签映射例程

Example #1 将 XML 映射为 HTML

此例程直接地将 XML 标签映射为 HTML 标签。 在"map_array"中未找到的元素将被忽略。 当然，此例程只针对特定的 XML 文档类型起作用。

<?php
$file = "data.xml";
$map_array = array(
    "BOLD"     => "B",
    "EMPHASIS" => "I",
    "LITERAL"  => "TT"
);

function startElement($parser, $name, $attrs)
{
    global $map_array;
    if (isset($map_array[$name])) {
        echo "<$map_array[$name]>";
    }
}

function endElement($parser, $name)
{
    global $map_array;
    if (isset($map_array[$name])) {
        echo "</$map_array[$name]>";
    }
}

function characterData($parser, $data)
{
    echo $data;
}

$xml_parser = xml_parser_create();
// use case-folding so we are sure to find the tag in $map_array
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($file, "r"))) {
    die("could not open XML input");
}

while ($data = fread($fp, 4096)) {
    if (!xml_parse($xml_parser, $data, feof($fp))) {
        die(sprintf("XML error: %s at line %d",
                    xml_error_string(xml_get_error_code($xml_parser)),
                    xml_get_current_line_number($xml_parser)));
    }
}
xml_parser_free($xml_parser);
?>

XML 元素结构例程
XML 外部实体例程
范例


XML 外部实体例程

此例程用于加亮 XML 代码。举例说明如何使用外部实体引用来包含和解析其他文档， 及处理指令是如何被处理的，及判断处理指令所包含代码是否"可信任"的一种方法

用于此例程的 XML 文档位于此例程的下方(xmltest.xml 和 xmltest2.xml)。

Example #1 外部实体例程

<?php
$file = "xmltest.xml";

function trustedFile($file)
{
    // 仅信任本地文件
    if (!preg_match("@^([a-z]+)\:\/\/@i", $file)
        && fileowner($file) == getmyuid()) {
            return true;
    }
    return false;
}

function startElement($parser, $name, $attribs)
{
    echo "&lt;<font color=\"#0000cc\">$name</font>";
    if (count($attribs)) {
        foreach ($attribs as $k => $v) {
            echo " <font color=\"#009900\">$k</font>=\"<font
                   color=\"#990000\">$v</font>\"";
        }
    }
    echo "&gt;";
}

function endElement($parser, $name)
{
    echo "&lt;/<font color=\"#0000cc\">$name</font>&gt;";
}

function characterData($parser, $data)
{
    echo "<b>$data</b>";
}

function PIHandler($parser, $target, $data)
{
    switch (strtolower($target)) {
        case "php":
            global $parser_file;
            // 如何要解析的文档是"可信任"的, 则说明可安全
            // 地执行其内部的 PHP 代码。否则，显示代码内容。
            if (trustedFile($parser_file[$parser])) {
                eval($data);
            } else {
                printf("Untrusted PHP code: <i>%s</i>",
                        htmlspecialchars($data));
            }
            break;
    }
}

function defaultHandler($parser, $data)
{
    if (substr($data, 0, 1) == "&" && substr($data, -1, 1) == ";") {
        printf('<font color="#aa00aa">%s</font>',
                htmlspecialchars($data));
    } else {
        printf('<font size="-1">%s</font>',
                htmlspecialchars($data));
    }
}

function externalEntityRefHandler($parser, $openEntityNames, $base, $systemId,
                                  $publicId) {
    if ($systemId) {
        if (!list($parser, $fp) = new_xml_parser($systemId)) {
            printf("Could not open entity %s at %s\n", $openEntityNames,
                   $systemId);
            return false;
        }
        while ($data = fread($fp, 4096)) {
            if (!xml_parse($parser, $data, feof($fp))) {
                printf("XML error: %s at line %d while parsing entity %s\n",
                       xml_error_string(xml_get_error_code($parser)),
                       xml_get_current_line_number($parser), $openEntityNames);
                xml_parser_free($parser);
                return false;
            }
        }
        xml_parser_free($parser);
        return true;
    }
    return false;
}

function new_xml_parser($file)
{
    global $parser_file;

    $xml_parser = xml_parser_create();
    xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 1);
    xml_set_element_handler($xml_parser, "startElement", "endElement");
    xml_set_character_data_handler($xml_parser, "characterData");
    xml_set_processing_instruction_handler($xml_parser, "PIHandler");
    xml_set_default_handler($xml_parser, "defaultHandler");
    xml_set_external_entity_ref_handler($xml_parser, "externalEntityRefHandler");

    if (!($fp = @fopen($file, "r"))) {
        return false;
    }
    if (!is_array($parser_file)) {
        settype($parser_file, "array");
    }
    $parser_file[$xml_parser] = $file;
    return array($xml_parser, $fp);
}

if (!(list($xml_parser, $fp) = new_xml_parser($file))) {
    die("could not open XML input");
}

echo "<pre>";
while ($data = fread($fp, 4096)) {
    if (!xml_parse($xml_parser, $data, feof($fp))) {
        die(sprintf("XML error: %s at line %d\n",
                    xml_error_string(xml_get_error_code($xml_parser)),
                    xml_get_current_line_number($xml_parser)));
    }
}
echo "</pre>";
echo "parse complete\n";
xml_parser_free($xml_parser);

?>

Example #2 xmltest.xml

<?xml version='1.0'?>
<!DOCTYPE chapter SYSTEM "/just/a/test.dtd" [
<!ENTITY plainEntity "FOO entity">
<!ENTITY systemEntity SYSTEM "xmltest2.xml">
]>
<chapter>
 <TITLE>Title &plainEntity;</TITLE>
 <para>
  <informaltable>
   <tgroup cols="3">
    <tbody>
     <row><entry>a1</entry><entry morerows="1">b1</entry><entry>c1</entry></row>
     <row><entry>a2</entry><entry>c2</entry></row>
     <row><entry>a3</entry><entry>b3</entry><entry>c3</entry></row>
    </tbody>
   </tgroup>
  </informaltable>
 </para>
 &systemEntity;
 <section id="about">
  <title>About this Document</title>
  <para>
   <!-- this is a comment -->
   <?php echo 'Hi!  This is PHP version ' . phpversion(); ?>
  </para>
 </section>
</chapter>

此文件包含在 xmltest.xml 中:

Example #3 xmltest2.xml

<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY testEnt "test entity">
]>
<foo>
   <element attrib="value"/>
   &testEnt;
   <?php echo "This is some more PHP code being executed."; ?>
</foo>

XML 标签映射例程
XML 解析器函数
范例


XML 解析器函数

Table of Contents

  • utf8_decode — 将用 UTF-8 方式编码的 ISO-8859-1 字符串转换成单字节的 ISO-8859-1 字符串。
  • utf8_encode — 将 ISO-8859-1 编码的字符串转换为 UTF-8 编码
  • xml_error_string — 获取 XML 解析器的错误字符串
  • xml_get_current_byte_index — 获取 XML 解析器的当前字节索引
  • xml_get_current_column_number — 获取 XML 解析器的当前列号
  • xml_get_current_line_number — 获取 XML 解析器的当前行号
  • xml_get_error_code — 获取 XML 解析器错误代码
  • xml_parse_into_struct — 将 XML 数据解析到数组中
  • xml_parse — 开始解析一个 XML 文档
  • xml_parser_create_ns — 生成一个支持命名空间的 XML 解析器
  • xml_parser_create — 建立一个 XML 解析器
  • xml_parser_free — 释放指定的 XML 解析器
  • xml_parser_get_option — 从 XML 解析器获取选项设置信息
  • xml_parser_set_option — 为指定 XML 解析进行选项设置
  • xml_set_character_data_handler — 建立字符数据处理器
  • xml_set_default_handler — 建立默认处理器
  • xml_set_element_handler — 建立起始和终止元素处理器
  • xml_set_end_namespace_decl_handler — 建立终止命名空间声明处理器
  • xml_set_external_entity_ref_handler — 建立外部实体指向处理器
  • xml_set_notation_decl_handler — 建立注释声明处理器
  • xml_set_object — 在对象中使用 XML 解析器
  • xml_set_processing_instruction_handler — 建立处理指令（PI）处理器
  • xml_set_start_namespace_decl_handler — 建立起始命名空间声明处理器
  • xml_set_unparsed_entity_decl_handler — 建立未解析实体定义声明处理器
XML 外部实体例程
utf8_decode
XML 解析器


将用 UTF-8 方式编码的 ISO-8859-1 字符串转换成单字节的 ISO-8859-1 字符串。

XML 解析器函数
utf8_encode
XML 解析器函数
PHP Manual

utf8_decode

(PHP 4, PHP 5, PHP 7)

utf8_decode — 将用 UTF-8 方式编码的 ISO-8859-1 字符串转换成单字节的 ISO-8859-1 字符串。

描述

string utf8_decode ( string $data )

该函数将用 UTF-8 编码的数据解码为 ISO-8859-1 编码。

请参阅 utf8_encode() 以查看关于 UTF-8 编码的解释。

XML 解析器函数
utf8_encode
XML 解析器函数


将 ISO-8859-1 编码的字符串转换为 UTF-8 编码

utf8_decode
xml_error_string
XML 解析器函数
PHP Manual

utf8_encode

(PHP 4, PHP 5, PHP 7)

utf8_encode — 将 ISO-8859-1 编码的字符串转换为 UTF-8 编码

描述

string utf8_encode ( string $data )

该函数将 data 字符串转换为 UTF-8 编码，并返回编码后的字符串。UTF-8 是一种用于将宽字符值转换为字节流的 Unicode 的标准机制。UTF-8 对于纯 ASCII 字符来说是透明的，且是自同步的（也就是说这使得程序能够得知字符从字节流的何处开始），并可被普通字符串比较函数用以比较等操作。PHP 可将 UTF-8 编码为多达四个字节的字符，如：

UTF-8 编码
字节（bytes） | 位（bits） | 表 示
1 | 7 | 0bbbbbbb
2 | 11 | 110bbbbb 10bbbbbb
3 | 16 | 1110bbbb 10bbbbbb 10bbbbbb
4 | 21 | 11110bbb 10bbbbbb 10bbbbbb 10bbbbbb

每个 UTF-8 表示一个能被用以储存字符数据的位。

utf8_decode
xml_error_string
XML 解析器函数


获取 XML 解析器的错误字符串

utf8_encode
xml_get_current_byte_index
XML 解析器函数
PHP Manual

xml_error_string

(PHP 4, PHP 5, PHP 7)

xml_error_string — 获取 XML 解析器的错误字符串

说明

string xml_error_string ( int $code )

根据给定的 code 获得 XML 解析器错误字符串。

参数

code

由 xml_get_error_code() 返回的错误代码。

返回值

返回与 code 描述的错误代码参数对应的文本描述字符串，若没有与之对应的描述，则返回 FALSE。

参见

  • xml_get_error_code() - 获取 XML 解析器错误代码

utf8_encode
xml_get_current_byte_index
XML 解析器函数


获取 XML 解析器的当前字节索引

xml_error_string
xml_get_current_column_number
XML 解析器函数
PHP Manual

xml_get_current_byte_index

(PHP 4, PHP 5, PHP 7)

xml_get_current_byte_index — 获取 XML 解析器的当前字节索引

说明

int xml_get_current_byte_index ( resource $parser )

获取指定的 XML 解析器的当前字节索引（current byte index）。

参数

parser

指向要取得字节索引的 XML 解析器的引用。

返回值

如果 parser 没有指向一个合法的解析器，该函数将返回 FALSE，否则将返回解析器当前在其数据缓冲区中的字节索引（起始值为 0）。

注释

Warning

该函数将返回根据UTF-8编码的文本的字节索引，而不论输入是否是其他的编码。

参见

  • xml_get_current_column_index()
  • xml_get_current_line_index()

xml_error_string
xml_get_current_column_number
XML 解析器函数


获取 XML 解析器的当前列号

xml_get_current_byte_index
xml_get_current_line_number
XML 解析器函数
PHP Manual

xml_get_current_column_number

(PHP 4, PHP 5, PHP 7)

xml_get_current_column_number — 获取 XML 解析器的当前列号

说明

int xml_get_current_column_number ( resource $parser )

获得指定 XML 解析器当前的列号。

参数

parser

一个指向要获取列号的 XML 解析器的指针。

返回值

如果 parser 参数没有指向一个合法的解析器，该函数将返回 FALSE，否则将返回指定解析器所在行（由函数 xml_get_current_line_number() 给定）的当前列号。

参见

  • xml_get_current_byte_index() - 获取 XML 解析器的当前字节索引
  • xml_get_current_line_index()

xml_get_current_byte_index
xml_get_current_line_number
XML 解析器函数


获取 XML 解析器的当前行号

xml_get_current_column_number
xml_get_error_code
XML 解析器函数
PHP Manual

xml_get_current_line_number

(PHP 4, PHP 5, PHP 7)

xml_get_current_line_number — 获取 XML 解析器的当前行号

说明

int xml_get_current_line_number ( resource $parser )

获取指定 XML 解析器当前的行号。

参数

parser

一个指向要获取当前行号的 XML 解析器的指针。

返回值

如果 parser 参数没有指向一个合法的解析器，该函数将返回 FALSE，否则将返回指定解析器在其缓存中的当前行号。

参见

  • xml_get_current_column_index()
  • xml_get_current_byte_index() - 获取 XML 解析器的当前字节索引

xml_get_current_column_number
xml_get_error_code
XML 解析器函数


获取 XML 解析器错误代码

xml_get_current_line_number
xml_parse_into_struct
XML 解析器函数
PHP Manual

xml_get_error_code

(PHP 4, PHP 5, PHP 7)

xml_get_error_code — 获取 XML 解析器错误代码

说明

int xml_get_error_code ( resource $parser )

获取 XML 解析器错误代码。

参数

parser

一个指向要返回错误代码的 XML 解析器的指针

返回值

如果 parser 参数没有指向一个合法的解析器，该函数将返回 FALSE，否则将返回错误代码列表中的一个错误代码。

参见

  • xml_error_string() - 获取 XML 解析器的错误字符串

xml_get_current_line_number
xml_parse_into_struct
XML 解析器函数


将 XML 数据解析到数组中

xml_get_error_code
xml_parse
XML 解析器函数
PHP Manual

xml_parse_into_struct

(PHP 4, PHP 5, PHP 7)

xml_parse_into_struct — 将 XML 数据解析到数组中

说明

int xml_parse_into_struct ( resource $parser , string $data , array &$values [, array &$index ] )

该函数将 XML 文件解析到两个对应的数组中，index 参数含有指向 values 数组中对应值的指针。最后两个数组参数可由指针传递给函数。

Note:

xml_parse_into_struct() 失败返回 0，成功返回 1。这和 FALSE 与 TRUE 不同，使用例如 === 的运算符时要注意。

以下范例显示了由该函数生成的数组的内部结构。我们简单地将一个 note 嵌入到一个 para 标记中，解析后我们可以打印出生成的数组的结构：

Example #1 xml_parse_into_struct() 示例

<?php
$simple = "<para><note>simple note</note></para>";
$p = xml_parser_create();
xml_parse_into_struct($p, $simple, $vals, $index);
xml_parser_free($p);
echo "Index array\n";
print_r($index);
echo "\nVals array\n";
print_r($vals);
?>

运行以上代码，我们得到的输出将是：

Index array
Array
(
    [PARA] => Array
        (
            [0] => 0
            [1] => 2
        )

    [NOTE] => Array
        (
            [0] => 1
        )

)

Vals array
Array
(
    [0] => Array
        (
            [tag] => PARA
            [type] => open
            [level] => 1
        )

    [1] => Array
        (
            [tag] => NOTE
            [type] => complete
            [level] => 2
            [value] => simple note
        )

    [2] => Array
        (
            [tag] => PARA
            [type] => close
            [level] => 1
        )

)

如果您的 XML 文档很复杂，基于该文档的事件处理（Event-driven）解析（基于 expat 扩展库）也会对应的变得复杂。该函数生成的并非 DOM 风格的对象，而是横向的树状结构。因此，我们能够方便的建立表达 XML 文件数据的对象。我们假设以下 XML 文件表示一个关于氨基酸信息的小型数据库：

Example #2 moldb.xml - 分子信息的小型数据库

<?xml version="1.0"?>
<moldb>

    <molecule>
        <name>Alanine</name>
        <symbol>ala</symbol>
        <code>A</code>
        <type>hydrophobic</type>
    </molecule>

    <molecule>
        <name>Lysine</name>
        <symbol>lys</symbol>
        <code>K</code>
        <type>charged</type>
    </molecule>

</moldb>
以下是解析该文档并生成相应对象的代码：

Example #3 parsemoldb.php - 将 moldb.xml 解析到分子（molecular）对象的数组中

<?php

class AminoAcid {
    var $name;  // aa 姓名
    var $symbol;    // 三字母符号
    var $code;  // 单字母代码
    var $type;  // hydrophobic, charged 或 neutral

    function AminoAcid ($aa)
    {
        foreach ($aa as $k=>$v)
            $this->$k = $aa[$k];
    }
}

function readDatabase($filename)
{
    // 读取 aminoacids 的 XML 数据
    $data = implode("",file($filename));
    $parser = xml_parser_create();
    xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
    xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
    xml_parse_into_struct($parser, $data, $values, $tags);
    xml_parser_free($parser);

    // 遍历 XML 结构
    foreach ($tags as $key=>$val) {
        if ($key == "molecule") {
            $molranges = $val;
            // each contiguous pair of array entries are the
            // lower and upper range for each molecule definition
            for ($i=0; $i < count($molranges); $i+=2) {
                $offset = $molranges[$i] + 1;
                $len = $molranges[$i + 1] - $offset;
                $tdb[] = parseMol(array_slice($values, $offset, $len));
            }
        } else {
            continue;
        }
    }
    return $tdb;
}

function parseMol($mvalues)
{
    for ($i=0; $i < count($mvalues); $i++) {
        $mol[$mvalues[$i]["tag"]] = $mvalues[$i]["value"];
    }
    return new AminoAcid($mol);
}

$db = readDatabase("moldb.xml");
echo "** Database of AminoAcid objects:\n";
print_r($db);

?>
在执行完 parsemoldb.php 后，变量 $db 将包含有一个由 AminoAcid 对象组成的数组，该脚本的输出如下：
** Database of AminoAcid objects:
Array
(
    [0] => aminoacid Object
        (
            [name] => Alanine
            [symbol] => ala
            [code] => A
            [type] => hydrophobic
        )

    [1] => aminoacid Object
        (
            [name] => Lysine
            [symbol] => lys
            [code] => K
            [type] => charged
        )

)

xml_get_error_code
xml_parse
XML 解析器函数


开始解析一个 XML 文档

xml_parse_into_struct
xml_parser_create_ns
XML 解析器函数
PHP Manual

xml_parse

(PHP 4, PHP 5, PHP 7)

xml_parse — 开始解析一个 XML 文档

说明

int xml_parse ( resource $parser , string $data [, bool $is_final = false ] )

xml_parse() 解析 XML 文档。已配置事件的处理器根据需要被无限次调用。

参数

parser

一个指向将要使用的 XML 解析器的指针

data

需要解析的数据集。您可以多次对新的数据调用 xml_parse() 函数来分段解析一个文档；只要在解析最后一段数据时将 is_final 参数设置为 TRUE。

is_final

如果被设置为 TRUE，则 data 为当前解析中最后一段数据。

返回值

成功时返回1，失败时返回0

若解析失败，可以使用如下函数获取错误信息：
xml_get_error_code(),
xml_error_string(),
xml_get_current_line_number(),
xml_get_current_column_number() 和
xml_get_current_byte_index()。

Note:

将 is_final 参数设置为 TRUE，项目的错误将会报告在数据的末尾。

xml_parse_into_struct
xml_parser_create_ns
XML 解析器函数


生成一个支持命名空间的 XML 解析器

xml_parse
xml_parser_create
XML 解析器函数
PHP Manual

xml_parser_create_ns

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

xml_parser_create_ns — 生成一个支持命名空间的 XML 解析器

描述

resource xml_parser_create_ns ([ string $encoding [, string $sep ]] )

函数 xml_parser_create_ns() 建立一个新的支持 XML 命名空间的解析器并返回可被其它 XML 函数使用的资源句柄。

通过有命名空间支持的解析器，传递给各种各样句柄函数的标签参数将由命名空间和标签名组成。命名空间和标签名的分隔符由 seperator 参数制定的字符串决定，其默认值为":"。

可选参数 encoding 在 PHP 4 中用来指定要被解析的 XML 输入的字符编码方式。PHP 5 开始，自动侦测输入的 XML 的编码，因此 encoding 参数仅用来指定解析后输出数据的编码。在 PHP 4 总，默认输出的编码与输入数据的编码是相同的。如果传递了空字符串，解析器会尝试搜索头 3 或 4 个字节以确定文档的编码。在 PHP 5.0.0 和 5.0.1 总，默认输出的字符编码是 ISO-8859-1，而 PHP 5.0.2 及以上版本是 UTF-8。解析器支持的编码有 ISO-8859-1, UTF-8 和 US-ASCII。

请参阅函数 xml_parser_create() 和 xml_parser_free()。

xml_parse
xml_parser_create
XML 解析器函数


建立一个 XML 解析器

xml_parser_create_ns
xml_parser_free
XML 解析器函数
PHP Manual

xml_parser_create

(PHP 4, PHP 5, PHP 7)

xml_parser_create — 建立一个 XML 解析器

描述

resource xml_parser_create ([ string $encoding ] )

函数 xml_parser_create() 建立一个新的 XML 解析器并返回可被其它 XML 函数使用的资源句柄。

可选参数 encoding 在 PHP 4 中用来指定要被解析的 XML 输入的字符编码方式。PHP 5 开始，自动侦测输入的 XML 的编码，因此 encoding 参数仅用来指定解析后输出数据的编码。在 PHP 4 总，默认输出的编码与输入数据的编码是相同的。如果传递了空字符串，解析器会尝试搜索头 3 或 4 个字节以确定文档的编码。在 PHP 5.0.0 和 5.0.1 总，默认输出的字符编码是 ISO-8859-1，而 PHP 5.0.2 及以上版本是 UTF-8。解析器支持的编码有 ISO-8859-1, UTF-8 和 US-ASCII。

请参阅函数 xml_parser_create_ns() 和 xml_parser_free()。

xml_parser_create_ns
xml_parser_free
XML 解析器函数


释放指定的 XML 解析器

xml_parser_create
xml_parser_get_option
XML 解析器函数
PHP Manual

xml_parser_free

(PHP 4, PHP 5, PHP 7)

xml_parser_free — 释放指定的 XML 解析器

描述

bool xml_parser_free ( resource $parser )

parser
指向要释放的 XML 解析器的指针。

如果 parser 参数没有指向一个合法的解析器，该函数将返回 FALSE，否则将释放指定的解析器并返回 TRUE。

xml_parser_create
xml_parser_get_option
XML 解析器函数


从 XML 解析器获取选项设置信息

xml_parser_free
xml_parser_set_option
XML 解析器函数
PHP Manual

xml_parser_get_option

(PHP 4, PHP 5, PHP 7)

xml_parser_get_option — 从 XML 解析器获取选项设置信息

描述

mixed xml_parser_get_option ( resource $parser , int $option )

parser
指向要获取设置信息的 XML 解析器的指针。
option
要获取的设置选项名称。可以使用 XML_OPTION_CASE_FOLDING 和 XML_OPTION_TARGET_ENCODING 常量。其说明见 xml_parser_set_option()。

如果 parser 参数没有指向一个合法的解析器或者 option 参数无效，该函数将返回 FALSE（同时产生 E_WARNING 警告）。否则将返回指定设置选项的值。

xml_parser_free
xml_parser_set_option
XML 解析器函数


为指定 XML 解析进行选项设置

xml_parser_get_option
xml_set_character_data_handler
XML 解析器函数
PHP Manual

xml_parser_set_option

(PHP 4, PHP 5, PHP 7)

xml_parser_set_option — 为指定 XML 解析进行选项设置

说明

bool xml_parser_set_option ( resource $parser , int $option , mixed $value )

parser
指向要设置选项信息的 XML 解析器的指针。
option
要设置的选项名称。请参考下文。
value
要给选项设置的新值。

如果 parser 参数没有指向一个合法的解析器或者指定的选项无法设置，该函数将返回 FALSE，否则将会把选项设置为指定的值并返回 TRUE。

可被设置的选项如下：

XML 解析器选项
选项常量 | 数据类型 | 描述
XML_OPTION_CASE_FOLDING | integer | 控制在该 XML 解析器中 大小写折叠（case-folding） 是否有效。其默认值为有效。
XML_OPTION_SKIP_TAGSTART | integer | 指明在一个标记名前应略过几个字符。
XML_OPTION_SKIP_WHITE | integer | 是否略过由白空字符组成的值。
XML_OPTION_TARGET_ENCODING | string | 设置该 XML 解析器所使用的目标编码（target encoding）方式。其默认值和由 xml_parser_create() 函数设置的源编码（source encoding）方式相同。支持的目标编码方式有 ISO-8859-1、US-ASCII 和 UTF-8。

xml_parser_get_option
xml_set_character_data_handler
XML 解析器函数


建立字符数据处理器

xml_parser_set_option
xml_set_default_handler
XML 解析器函数
PHP Manual

xml_set_character_data_handler

(PHP 4, PHP 5, PHP 7)

xml_set_character_data_handler — 建立字符数据处理器

说明

bool xml_set_character_data_handler ( resource $parser , callable $handler )

为 parser 变量指向的 XML 解析器指定字符数据处理函数。

参数

parser

XML 解析器的引用，用于建立字符数据处理器。

handler

handler 为表示一个函数名称的字符串，该函数必须在为 parser 指定的解析器调用 xml_parse() 函数时已存在。

由 handler 参数命名的函数名必须接受两个参数：

handler ( resource $parser , string $data )
parser
第一个参数 parser 为指向要调用处理器的 XML 解析器的指针。
data
第二个参数 data 为包含有字符数据的字符串。

Character data handler is called for every piece of a text in the XML document. It can be called multiple times inside each fragment (e.g. for non-ASCII strings).

如果处理器函数名被设置为空字符串或者 FALSE，则该有问题的处理器将被屏蔽。

Note: 除了函数名，含有对象引用的数组和方法名也可以作为参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

xml_parser_set_option
xml_set_default_handler
XML 解析器函数


建立默认处理器

xml_set_character_data_handler
xml_set_element_handler
XML 解析器函数
PHP Manual

xml_set_default_handler

(PHP 4, PHP 5, PHP 7)

xml_set_default_handler — 建立默认处理器

说明

bool xml_set_default_handler ( resource $parser , callable $handler )

为 parser 指定的 XML 处理器建立默认处理函数。

参数

parser

XML 解析器的引用，用于建立默认处理器函数。

handler

handler 为表示一个函数名称的字符串，该函数必须在为 parser 指定的解析器调用 xml_parse() 函数时已存在。

由 handler 参数命名的函数名必须接受两个参数：

handler ( resource $parser , string $data )
parser
第一个参数 parser 为指向要调用处理器的 XML 解析器的指针。
data
第二个参数 data 为包含有字符数据的字符串。其内容可以是 XML 声明、文档类型声明、实体名或者其它没有已存在处理器的地数据。

如果处理器函数名被设置为空字符串或者 FALSE，则该有问题的处理器将被屏蔽。

Note: 除了函数名，含有对象引用的数组和方法名也可以作为参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

xml_set_character_data_handler
xml_set_element_handler
XML 解析器函数


建立起始和终止元素处理器

xml_set_default_handler
xml_set_end_namespace_decl_handler
XML 解析器函数
PHP Manual

xml_set_element_handler

(PHP 4, PHP 5, PHP 7)

xml_set_element_handler — 建立起始和终止元素处理器

说明

bool xml_set_element_handler ( resource $parser , callable $start_element_handler , callable $end_element_handler )

为 parser 参数指定的 XML 解析器建立元素处理器函数。参数 start_element_handler 和 end_element_handler 为表示函数名称的字符串，这些函数必须在为 parser 指定的解析器调用 xml_parse() 函数时已存在。

参数

parser

XML 解析器的引用，用于建立起始和终止元素处理器。

start_element_handler

由 start_element_handler 参数命名的函数名必须接受三个参数：

start_element_handler ( resource $parser , string $name , array $attribs )
parser
第一个参数 parser 为指向要调用处理器的 XML 解析器的指针。
name
第二个参数 name 为该处理器为之被调用的元素名。如果大小写折叠（case-folding）对该解析器有效，元素名将用大写字母表示。
attribs
第三个参数 attribs 为一个包含有对应元素的属性的数组（如果该元素有属性）。数组元素的下标为属性名，元素的值即为属性的值。属性名将以和元素名同样的标准进行大小写折叠（case-folded），其值不进行大小写折叠。 属性的原始顺序将会被参数保留，用 each() 函数遍历 attribs 时，该数组下表的顺序和属性的顺序相同。

Note: 除了函数名，含有对象引用的数组和方法名也可以作为参数。

end_element_handler

由 end_element_handler 参数命名的函数名必须接受两个参数：

end_element_handler ( resource $parser , string $name )
parser
第一个参数 parser 为指向要调用处理器的 XML 解析器的指针。
name
第二个参数 name 为该处理器为之被调用的元素名。如果大小写折叠（case-folding）对该解析器有效，元素名将用大写字母表示。

如果处理器函数名被设置为空字符串或者 FALSE，则该有问题的处理器将被屏蔽。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

xml_set_default_handler
xml_set_end_namespace_decl_handler
XML 解析器函数


建立终止命名空间声明处理器

xml_set_element_handler
xml_set_external_entity_ref_handler
XML 解析器函数
PHP Manual

xml_set_end_namespace_decl_handler

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

xml_set_end_namespace_decl_handler — 建立终止命名空间声明处理器

说明

bool xml_set_end_namespace_decl_handler ( resource $parser , callable $handler )

Set a handler to be called when leaving the scope of a namespace declaration. This will be called, for each namespace declaration, after the handler for the end tag of the element in which the namespace was declared.

参数

parser

A reference to the XML parser.

handler

handler is a string containing the name of a function that must exist when xml_parse() is called for parser.

The function named by handler must accept two parameters, and should return an integer value. If the value returned from the handler is FALSE (which it will be if no value is returned), the XML parser will stop parsing and xml_get_error_code() will return XML_ERROR_EXTERNAL_ENTITY_HANDLING.

handler ( resource $parser , string $prefix )
parser
The first parameter, parser, is a reference to the XML parser calling the handler.
prefix
The prefix is a string used to reference the namespace within an XML object.

If a handler function is set to an empty string, or FALSE, the handler in question is disabled.

Note: 除了函数名，含有对象引用的数组和方法名也可以作为参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

注释

Note:

This event is not supported under LibXML.

参见

  • xml_set_start_namespace_decl_handler() - 建立起始命名空间声明处理器

xml_set_element_handler
xml_set_external_entity_ref_handler
XML 解析器函数


建立外部实体指向处理器

xml_set_end_namespace_decl_handler
xml_set_notation_decl_handler
XML 解析器函数
PHP Manual

xml_set_external_entity_ref_handler

(PHP 4, PHP 5, PHP 7)

xml_set_external_entity_ref_handler — 建立外部实体指向处理器

说明

bool xml_set_external_entity_ref_handler ( resource $parser , callable $handler )

为 parser 参数指定的 XML 解析器建立外部实体指向处理器函数。

参数

parser

XML 解析器的引用，用于建立外部实体指向处理器。

handler

参数 handler 为表示函数名称的字符串，函数必须在为 parser 指定的解析器调用 xml_parse() 函数时已存在。

由 handler 参数命名的函数名必须接受五个参数，并应该返回一个整型值。如果处理器的返回值为 FALSE（这也是函数没有确定返回值时的返回值），XML 解析器将停止解析， xml_get_error_code() 函数将返回 XML_ERROR_EXTERNAL_ENTITY_HANDLING。

handler ( resource $parser , string $open_entity_names , string $base , string $system_id , string $public_id )
parser
第一个参数 parser 为指向要调用处理器的 XML 解析器的指针。
open_entity_names
第二个参数 open_entity_names 是为该实体的解析开放的实体名列表（包括被指向的实体名），这些实体名由空格隔开。
base
这个参数是解析外部实体的系统标识符（system_id）的基础。当前该参数通常都被设置为空字符串。
system_id
第四个参数 system_id 是在实体定义声明中指定的系统标识符。
public_id
第五个参数 public_id 是在实体定义声明中指定的公共标识符，如果未指定任何标识符，则该字符串为空。公共标识符中的空格将按照 XML 的要求被正常化。

如果处理器函数名被设置为空字符串或者 FALSE，则该有问题的处理器将被屏蔽。

Note: 除了函数名，含有对象引用的数组和方法名也可以作为参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

xml_set_end_namespace_decl_handler
xml_set_notation_decl_handler
XML 解析器函数


建立注释声明处理器

xml_set_external_entity_ref_handler
xml_set_object
XML 解析器函数
PHP Manual

xml_set_notation_decl_handler

(PHP 4, PHP 5, PHP 7)

xml_set_notation_decl_handler — 建立注释声明处理器

说明

bool xml_set_notation_decl_handler ( resource $parser , callable $handler )

为 parser 参数指定的 XML 解析器建立注释声明处理器函数。

注释声明是文档 DTD 的一部分，并有如下格式：

<!NOTATION <parameter>name</parameter>
{<parameter>system_id</parameter> | <parameter>public_id</parameter>}?>
。请参考 » XML 1.0 参考的第 4.7 节以了解注释声明的定义。

参数

parser

XML 解析器的引用，用于设置声明处理器函数。

handler

handler 为表示函数名称的字符串，函数必须在为 parser 指定的解析器调用 xml_parse() 函数时已存在。

由 handler 参数命名的函数名必须接受五个参数：

handler ( resource $parser , string $notation_name , string $base , string $system_id , string $public_id )
parser
第一个参数 parser 为指向要调用处理器的 XML 解析器的指针。
notation_name
该参数为以上注释格式定义中的 name 参数。
base
这个参数是解析注释声明的系统标识符（system_id）的基础。当前该参数通常都被设置为空字符串。
system_id
外部注释声明的系统标识符。
public_id
外部注释声明的公共标识符。

如果处理器函数名被设置为空字符串或者 FALSE，则该有问题的处理器将被屏蔽。

Note: 除了函数名，含有对象引用的数组和方法名也可以作为参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

xml_set_external_entity_ref_handler
xml_set_object
XML 解析器函数


在对象中使用 XML 解析器

xml_set_notation_decl_handler
xml_set_processing_instruction_handler
XML 解析器函数
PHP Manual

xml_set_object

(PHP 4, PHP 5, PHP 7)

xml_set_object — 在对象中使用 XML 解析器

描述

pool xml_set_object ( resource $parser , object &$object )

该函数使得 parser 指定的解析器可以被用在 object 对象中。所有的回叫函数（callback function）都可以由 xml_set_element_handler() 等函数来设置，它们被假定为 object 对象的方法。

Example #1 xml_set_object() 示例

<?php
class xml  {
    var $parser;

    function xml()
    {
        $this->parser = xml_parser_create();

        xml_set_object($this->parser, $this);
        xml_set_element_handler($this->parser, "tag_open", "tag_close");
        xml_set_character_data_handler($this->parser, "cdata");
    }

     function parse($data)
    {
        xml_parse($this->parser, $data);
    }

    function tag_open($parser, $tag, $attributes)
    {
        var_dump($parser, $tag, $attributes);
    }

    function cdata($parser, $cdata)
    {
        var_dump($parser, $cdata);
    }

    function tag_close($parser, $tag)
    {
        var_dump($parser, $tag);
    }

} // end of class xml

$xml_parser = new xml();
$xml_parser->parse("<A ID='hallo'>PHP</A>");
?>

xml_set_notation_decl_handler
xml_set_processing_instruction_handler
XML 解析器函数


建立处理指令（PI）处理器

xml_set_object
xml_set_start_namespace_decl_handler
XML 解析器函数
PHP Manual

xml_set_processing_instruction_handler

(PHP 4, PHP 5, PHP 7)

xml_set_processing_instruction_handler — 建立处理指令（PI）处理器

说明

bool xml_set_processing_instruction_handler ( resource $parser , callable $handler )

为 parser 参数指定的 XML 解析器建立处理指令（PI）处理器函数。

处理指令有如下格式：

<?
target data
?>
您可以将 PHP 代码放置在类似的标识符中，但要注意一个限制：在 XML 处理指令（PI）中，PI 的终止符（?>）不能被引号引用，因此该字符序列不应该在您用 PI 嵌入到 XML 文档中的 PHP 代码中出现。否则，剩下的 PHP 代码，包括"真正"的 PI 终止符将被当作字符数据处理。

参数

parser

XML 解析器的引用，用于建立处理指令（PI）处理器。

handler

参数 handler 为表示函数名称的字符串，函数必须在为 parser 指定的解析器调用 xml_parse() 函数时已存在。

由 handler 参数命名的函数名必须接受三个参数：

handler ( resource $parser , string $target , string $data )
parser
第一个参数 parser 为指向要调用处理器的 XML 解析器的指针。
target
第二个参数 target 为 PI 对象（PI target）。
data
第三个参数 data 包含了 PI 数据。

如果处理器函数名被设置为空字符串或者 FALSE，则该有问题的处理器将被屏蔽。

Note: 除了函数名，含有对象引用的数组和方法名也可以作为参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

xml_set_object
xml_set_start_namespace_decl_handler
XML 解析器函数


建立起始命名空间声明处理器

xml_set_processing_instruction_handler
xml_set_unparsed_entity_decl_handler
XML 解析器函数
PHP Manual

xml_set_start_namespace_decl_handler

(PHP 4 >= 4.0.5, PHP 5, PHP 7)

xml_set_start_namespace_decl_handler — 建立起始命名空间声明处理器

说明

bool xml_set_start_namespace_decl_handler ( resource $parser , callable $handler )

Set a handler to be called when a namespace is declared. Namespace declarations occur inside start tags. But the namespace declaration start handler is called before the start tag handler for each namespace declared in that start tag.

参数

parser

A reference to the XML parser.

handler

handler is a string containing the name of a function that must exist when xml_parse() is called for parser.

The function named by handler must accept three parameters, and should return an integer value. If the value returned from the handler is FALSE (which it will be if no value is returned), the XML parser will stop parsing and xml_get_error_code() will return XML_ERROR_EXTERNAL_ENTITY_HANDLING.

handler ( resource $parser , string $prefix , string $uri )
parser
The first parameter, parser, is a reference to the XML parser calling the handler.
prefix
The prefix is a string used to reference the namespace within an XML object.
uri
Uniform Resource Identifier (URI) of namespace.

If a handler function is set to an empty string, or FALSE, the handler in question is disabled.

Note: 除了函数名，含有对象引用的数组和方法名也可以作为参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • xml_set_end_namespace_decl_handler() - 建立终止命名空间声明处理器

xml_set_processing_instruction_handler
xml_set_unparsed_entity_decl_handler
XML 解析器函数


建立未解析实体定义声明处理器

xml_set_start_namespace_decl_handler
XMLReader
XML 解析器函数
PHP Manual

xml_set_unparsed_entity_decl_handler

(PHP 4, PHP 5, PHP 7)

xml_set_unparsed_entity_decl_handler — 建立未解析实体定义声明处理器

说明

bool xml_set_unparsed_entity_decl_handler ( resource $parser , callable $handler )

为 parser 参数指定的 XML 解析器建立未解析实体定义声明处理器函数。

当 XML 解析器遇到如下含有 NDATA 声明的外部实体定义声明时，该 handler 处理器将被调用：

<!ENTITY <parameter>name</parameter> {<parameter>publicId</parameter> | <parameter>systemId</parameter>}
        NDATA <parameter>notationName</parameter>

请参阅 » XML 1.0 参考的第 4.2.2 节以获取有关已声明外部实体注释定义的信息。

参数

parser

XML 解析器的引用，用于建立未解析实体定义声明处理器。

handler

参数handler 为表示函数名称的字符串，这个函数必须在为 parser 指定的解析器调用 xml_parse() 函数时已存在。

由 handler 参数命名的函数名必须接受六个参数：

handler ( resource $parser , string $entity_name , string $base , string $system_id , string $public_id , string $notation_name )
parser
第一个参数 parser 为指向要调用处理器的 XML 解析器的指针。
entity_name
将被定义的实体名。
base
这个参数是解析外部实体的系统标识符（system_id）的基础。当前该参数通常都被设置为空字符串。
system_id
外部实体的系统标识符。
public_id
外部实体的公共标识符。
notation_name
该实体的注释名（请参阅 xml_set_notation_decl_handler()）。

如果处理器函数名被设置为空字符串或者 FALSE，则该有问题的处理器将被屏蔽。

Note: 除了函数名，含有对象引用的数组和方法名也可以作为参数。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

xml_set_start_namespace_decl_handler
XMLReader
XML 解析器函数


XMLReader

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • XMLReader — The XMLReader class
    • XMLReader::close — Close the XMLReader input
    • XMLReader::expand — Returns a copy of the current node as a DOM object
    • XMLReader::getAttribute — Get the value of a named attribute
    • XMLReader::getAttributeNo — Get the value of an attribute by index
    • XMLReader::getAttributeNs — Get the value of an attribute by localname and URI
    • XMLReader::getParserProperty — Indicates if specified property has been set
    • XMLReader::isValid — Indicates if the parsed document is valid
    • XMLReader::lookupNamespace — Lookup namespace for a prefix
    • XMLReader::moveToAttribute — Move cursor to a named attribute
    • XMLReader::moveToAttributeNo — Move cursor to an attribute by index
    • XMLReader::moveToAttributeNs — Move cursor to a named attribute
    • XMLReader::moveToElement — Position cursor on the parent Element of current Attribute
    • XMLReader::moveToFirstAttribute — Position cursor on the first Attribute
    • XMLReader::moveToNextAttribute — Position cursor on the next Attribute
    • XMLReader::next — Move cursor to next node skipping all subtrees
    • XMLReader::open — Set the URI containing the XML to parse
    • XMLReader::read — Move to next node in document
    • XMLReader::readInnerXML — Retrieve XML from current node
    • XMLReader::readOuterXML — Retrieve XML from current node, including itself
    • XMLReader::readString — Reads the contents of the current node as a string
    • XMLReader::setParserProperty — Set parser options
    • XMLReader::setRelaxNGSchema — Set the filename or URI for a RelaxNG Schema
    • XMLReader::setRelaxNGSchemaSource — Set the data containing a RelaxNG Schema
    • XMLReader::setSchema — Validate document against XSD
    • XMLReader::XML — Set the data containing the XML to parse
xml_set_unparsed_entity_decl_handler
简介
XML 操作


简介

The XMLReader extension is an XML Pull parser. The reader acts as a cursor going forward on the document stream and stopping at each node on the way.

编码

It is important to note that internally, libxml uses the UTF-8 encoding and as such, the encoding of the retrieved contents will always be in UTF-8 encoding.

XMLReader
安装／配置
XMLReader


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
XMLReader


安装

The XMLReader extension was initially a PECL extension for PHP 5. It was later moved to the PHP source (bundled) as of PHP 5.1.0, and later enabled by default as of PHP 5.1.2.

此扩展默认为启用,编译时可通过下列选项禁用： --disable-xmlreader

需求
运行时配置
安装／配置


资源类型

此扩展没有定义资源类型。

运行时配置
XMLReader
安装／配置


The XMLReader class

(PHP 5 >= 5.1.0, PHP 7)

简介

The XMLReader extension is an XML Pull parser. The reader acts as a cursor going forward on the document stream and stopping at each node on the way.

类摘要

XMLReader {
/* 常量 */
const int NONE = 0 ;
const int ELEMENT = 1 ;
const int ATTRIBUTE = 2 ;
const int TEXT = 3 ;
const int CDATA = 4 ;
const int ENTITY_REF = 5 ;
const int ENTITY = 6 ;
const int PI = 7 ;
const int COMMENT = 8 ;
const int DOC = 9 ;
const int DOC_TYPE = 10 ;
const int DOC_FRAGMENT = 11 ;
const int NOTATION = 12 ;
const int WHITESPACE = 13 ;
const int SIGNIFICANT_WHITESPACE = 14 ;
const int END_ELEMENT = 15 ;
const int END_ENTITY = 16 ;
const int XML_DECLARATION = 17 ;
const int LOADDTD = 1 ;
const int DEFAULTATTRS = 2 ;
const int VALIDATE = 3 ;
const int SUBST_ENTITIES = 4 ;
/* 属性 */
public readonly int $attributeCount ;
public readonly string $baseURI ;
public readonly int $depth ;
public readonly bool $hasAttributes ;
public readonly bool $hasValue ;
public readonly bool $isDefault ;
public readonly bool $isEmptyElement ;
public readonly string $localName ;
public readonly string $name ;
public readonly string $namespaceURI ;
public readonly int $nodeType ;
public readonly string $prefix ;
public readonly string $value ;
public readonly string $xmlLang ;
/* 方法 */
public bool close ( void )
public DOMNode expand ([ DOMNode $basenode ] )
public string getAttribute ( string $name )
public string getAttributeNo ( int $index )
public string getAttributeNs ( string $localName , string $namespaceURI )
public bool getParserProperty ( int $property )
public bool isValid ( void )
public string lookupNamespace ( string $prefix )
public bool moveToAttribute ( string $name )
public bool moveToAttributeNo ( int $index )
public bool moveToAttributeNs ( string $localName , string $namespaceURI )
public bool moveToElement ( void )
public bool moveToFirstAttribute ( void )
public bool moveToNextAttribute ( void )
public bool next ([ string $localname ] )
public bool open ( string $URI [, string $encoding [, int $options = 0 ]] )
public bool read ( void )
public string readInnerXML ( void )
public string readOuterXML ( void )
public string readString ( void )
public bool setParserProperty ( int $property , bool $value )
public bool setRelaxNGSchema ( string $filename )
public bool setRelaxNGSchemaSource ( string $source )
public bool setSchema ( string $filename )
public bool xml ( string $source [, string $encoding [, int $options = 0 ]] )
}

属性

attributeCount

The number of attributes on the node

baseURI

The base URI of the node

depth

Depth of the node in the tree, starting at 0

hasAttributes

Indicates if node has attributes

hasValue

Indicates if node has a text value

isDefault

Indicates if attribute is defaulted from DTD

isEmptyElement

Indicates if node is an empty element tag

localName

The local name of the node

name

The qualified name of the node

namespaceURI

The URI of the namespace associated with the node

nodeType

The node type for the node

prefix

The prefix of the namespace associated with the node

value

The text value of the node

xmlLang

The xml:lang scope which the node resides

预定义常量

XMLReader Node Types

XMLReader::NONE

No node type

XMLReader::ELEMENT

Start element

XMLReader::ATTRIBUTE

Attribute node

XMLReader::TEXT

Text node

XMLReader::CDATA

CDATA node

XMLReader::ENTITY_REF

Entity Reference node

XMLReader::ENTITY

Entity Declaration node

XMLReader::PI

Processing Instruction node

XMLReader::COMMENT

Comment node

XMLReader::DOC

Document node

XMLReader::DOC_TYPE

Document Type node

XMLReader::DOC_FRAGMENT

Document Fragment node

XMLReader::NOTATION

Notation node

XMLReader::WHITESPACE

Whitespace node

XMLReader::SIGNIFICANT_WHITESPACE

Significant Whitespace node

XMLReader::END_ELEMENT

End Element

XMLReader::END_ENTITY

End Entity

XMLReader::XML_DECLARATION

XML Declaration node

XMLReader Parser Options

XMLReader::LOADDTD

Load DTD but do not validate

XMLReader::DEFAULTATTRS

Load DTD and default attributes but do not validate

XMLReader::VALIDATE

Load DTD and validate while parsing

XMLReader::SUBST_ENTITIES

Substitute entities and expand references

Table of Contents

  • XMLReader::close — Close the XMLReader input
  • XMLReader::expand — Returns a copy of the current node as a DOM object
  • XMLReader::getAttribute — Get the value of a named attribute
  • XMLReader::getAttributeNo — Get the value of an attribute by index
  • XMLReader::getAttributeNs — Get the value of an attribute by localname and URI
  • XMLReader::getParserProperty — Indicates if specified property has been set
  • XMLReader::isValid — Indicates if the parsed document is valid
  • XMLReader::lookupNamespace — Lookup namespace for a prefix
  • XMLReader::moveToAttribute — Move cursor to a named attribute
  • XMLReader::moveToAttributeNo — Move cursor to an attribute by index
  • XMLReader::moveToAttributeNs — Move cursor to a named attribute
  • XMLReader::moveToElement — Position cursor on the parent Element of current Attribute
  • XMLReader::moveToFirstAttribute — Position cursor on the first Attribute
  • XMLReader::moveToNextAttribute — Position cursor on the next Attribute
  • XMLReader::next — Move cursor to next node skipping all subtrees
  • XMLReader::open — Set the URI containing the XML to parse
  • XMLReader::read — Move to next node in document
  • XMLReader::readInnerXML — Retrieve XML from current node
  • XMLReader::readOuterXML — Retrieve XML from current node, including itself
  • XMLReader::readString — Reads the contents of the current node as a string
  • XMLReader::setParserProperty — Set parser options
  • XMLReader::setRelaxNGSchema — Set the filename or URI for a RelaxNG Schema
  • XMLReader::setRelaxNGSchemaSource — Set the data containing a RelaxNG Schema
  • XMLReader::setSchema — Validate document against XSD
  • XMLReader::XML — Set the data containing the XML to parse
资源类型
XMLReader::close
XMLReader


Close the XMLReader input

XMLReader
XMLReader::expand
XMLReader
PHP Manual

XMLReader::close

(PHP 5 >= 5.1.0, PHP 7)

XMLReader::close — Close the XMLReader input

说明

public bool XMLReader::close ( void )

Closes the input the XMLReader object is currently parsing.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLReader::open() - Set the URI containing the XML to parse
  • XMLReader::xml() - Set the data containing the XML to parse

XMLReader
XMLReader::expand
XMLReader


Returns a copy of the current node as a DOM object

XMLReader::close
XMLReader::getAttribute
XMLReader
PHP Manual

XMLReader::expand

(PHP 5 >= 5.1.0, PHP 7)

XMLReader::expand — Returns a copy of the current node as a DOM object

说明

public DOMNode XMLReader::expand ([ DOMNode $basenode ] )

This method copies the current node and returns the appropriate DOM object.

参数

basenode

A DOMNode defining the target DOMDocument for the created DOM object.

返回值

The resulting DOMNode or FALSE on error.

更新日志

版本 | 说明
5.3.0 | The parameter basenode was added.

XMLReader::close
XMLReader::getAttribute
XMLReader


Get the value of a named attribute

XMLReader::expand
XMLReader::getAttributeNo
XMLReader
PHP Manual

XMLReader::getAttribute

(PHP 5 >= 5.1.0, PHP 7)

XMLReader::getAttribute — Get the value of a named attribute

说明

public string XMLReader::getAttribute ( string $name )

Returns the value of a named attribute or NULL if the attribute does not exist or not positioned on an element node.

参数

name

The name of the attribute.

返回值

The value of the attribute, or NULL if no attribute with the given name is found or not positioned on an element node.

更新日志

版本 | 说明
5.1.3 | Return NULL if no attribute found. Previously, returned an empty string.

参见

  • XMLReader::getAttributeNo() - Get the value of an attribute by index
  • XMLReader::getAttributeNs() - Get the value of an attribute by localname and URI

XMLReader::expand
XMLReader::getAttributeNo
XMLReader


Get the value of an attribute by index

XMLReader::getAttribute
XMLReader::getAttributeNs
XMLReader
PHP Manual

XMLReader::getAttributeNo

(PHP 5 >= 5.1.0, PHP 7)

XMLReader::getAttributeNo — Get the value of an attribute by index

说明

public string XMLReader::getAttributeNo ( int $index )

Returns the value of an attribute based on its position or an empty string if attribute does not exist or not positioned on an element node.

参数

index

The position of the attribute.

返回值

The value of the attribute, or an empty string (before PHP 5.6) or NULL (from PHP 5.6 onwards) if no attribute exists at index or is not positioned on the element.

更新日志

版本 | 说明
5.6.0 | XMLReader::getAttributeNo() now returns NULL if the attribute doesn't exist.

参见

  • XMLReader::getAttribute() - Get the value of a named attribute
  • XMLReader::getAttributeNs() - Get the value of an attribute by localname and URI

XMLReader::getAttribute
XMLReader::getAttributeNs
XMLReader


Get the value of an attribute by localname and URI

XMLReader::getAttributeNo
XMLReader::getParserProperty
XMLReader
PHP Manual

XMLReader::getAttributeNs

(PHP 5 >= 5.1.0, PHP 7)

XMLReader::getAttributeNs — Get the value of an attribute by localname and URI

说明

public string XMLReader::getAttributeNs ( string $localName , string $namespaceURI )

Returns the value of an attribute by name and namespace URI or an empty string if attribute does not exist or not positioned on an element node.

参数

localName

The local name.

namespaceURI

The namespace URI.

返回值

The value of the attribute, or an empty string (before PHP 5.6) or NULL (from PHP 5.6 onwards) if no attribute with the given localName and namespaceURI is found or not positioned of element.

更新日志

版本 | 说明
5.6.0 | XMLReader::getAttributeNS() now returns NULL if the attribute doesn't exist.

参见

  • XMLReader::getAttribute() - Get the value of a named attribute
  • XMLReader::getAttributeNo() - Get the value of an attribute by index

XMLReader::getAttributeNo
XMLReader::getParserProperty
XMLReader


Indicates if specified property has been set

XMLReader::getAttributeNs
XMLReader::isValid
XMLReader
PHP Manual

XMLReader::getParserProperty

(PHP 5 >= 5.1.0, PHP 7)

XMLReader::getParserProperty — Indicates if specified property has been set

说明

public bool XMLReader::getParserProperty ( int $property )

Indicates if specified property has been set.

参数

property

One of the parser option constants.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLReader::setParserProperty() - Set parser options

XMLReader::getAttributeNs
XMLReader::isValid
XMLReader


Indicates if the parsed document is valid

XMLReader::getParserProperty
XMLReader::lookupNamespace
XMLReader
PHP Manual

XMLReader::isValid

(PHP 5 >= 5.1.0, PHP 7)

XMLReader::isValid — Indicates if the parsed document is valid

说明

public bool XMLReader::isValid ( void )

Returns a boolean indicating if the document being parsed is currently valid.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Validating XML

<?php
$xml = XMLReader::open('test.xml');

// The validate parser option must be enabled for
// this method to work properly
$xml->setParserProperty(XMLReader::VALIDATE, true);

var_dump($xml->isValid());
?>

注释

Note: This checks the current node, not the entire document.

参见

  • XMLReader::setParserProperty() - Set parser options
  • XMLReader::setRelaxNGSchema() - Set the filename or URI for a RelaxNG Schema
  • XMLReader::setRelaxNGSchemaSource() - Set the data containing a RelaxNG Schema
  • XMLReader::setSchema() - Validate document against XSD

XMLReader::getParserProperty
XMLReader::lookupNamespace
XMLReader


Lookup namespace for a prefix

XMLReader::isValid
XMLReader::moveToAttribute
XMLReader
PHP Manual

XMLReader::lookupNamespace

(PHP 5 >= 5.1.0, PHP 7)

XMLReader::lookupNamespace — Lookup namespace for a prefix

说明

public string XMLReader::lookupNamespace ( string $prefix )

Lookup in scope namespace for a given prefix.

参数

prefix

String containing the prefix.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

XMLReader::isValid
XMLReader::moveToAttribute
XMLReader


Move cursor to a named attribute

XMLReader::lookupNamespace
XMLReader::moveToAttributeNo
XMLReader
PHP Manual

XMLReader::moveToAttribute

(PHP 5 >= 5.1.0, PHP 7)

XMLReader::moveToAttribute — Move cursor to a named attribute

说明

public bool XMLReader::moveToAttribute ( string $name )

Positions cursor on the named attribute.

参数

name

The name of the attribute.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLReader::moveToElement() - Position cursor on the parent Element of current Attribute
  • XMLReader::moveToAttributeNo() - Move cursor to an attribute by index
  • XMLReader::moveToAttributeNs() - Move cursor to a named attribute
  • XMLReader::moveToFirstAttribute() - Position cursor on the first Attribute

XMLReader::lookupNamespace
XMLReader::moveToAttributeNo
XMLReader


Move cursor to an attribute by index

XMLReader::moveToAttribute
XMLReader::moveToAttributeNs
XMLReader
PHP Manual

XMLReader::moveToAttributeNo

(PHP 5 >= 5.1.0, PHP 7)

XMLReader::moveToAttributeNo — Move cursor to an attribute by index

说明

public bool XMLReader::moveToAttributeNo ( int $index )

Positions cursor on attribute based on its position.

参数

index

The position of the attribute.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLReader::moveToElement() - Position cursor on the parent Element of current Attribute
  • XMLReader::moveToAttribute() - Move cursor to a named attribute
  • XMLReader::moveToAttributeNs() - Move cursor to a named attribute
  • XMLReader::moveToFirstAttribute() - Position cursor on the first Attribute

XMLReader::moveToAttribute
XMLReader::moveToAttributeNs
XMLReader


Move cursor to a named attribute

XMLReader::moveToAttributeNo
XMLReader::moveToElement
XMLReader
PHP Manual

XMLReader::moveToAttributeNs

(PHP 5 >= 5.1.0, PHP 7)

XMLReader::moveToAttributeNs — Move cursor to a named attribute

说明

public bool XMLReader::moveToAttributeNs ( string $localName , string $namespaceURI )

Positions cursor on the named attribute in specified namespace.

参数

localName

The local name.

namespaceURI

The namespace URI.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLReader::moveToElement() - Position cursor on the parent Element of current Attribute
  • XMLReader::moveToAttribute() - Move cursor to a named attribute
  • XMLReader::moveToAttributeNo() - Move cursor to an attribute by index
  • XMLReader::moveToFirstAttribute() - Position cursor on the first Attribute

XMLReader::moveToAttributeNo
XMLReader::moveToElement
XMLReader


Position cursor on the parent Element of current Attribute

XMLReader::moveToAttributeNs
XMLReader::moveToFirstAttribute
XMLReader
PHP Manual

XMLReader::moveToElement

(PHP 5 >= 5.1.0, PHP 7)

XMLReader::moveToElement — Position cursor on the parent Element of current Attribute

说明

public bool XMLReader::moveToElement ( void )

Moves cursor to the parent Element of current Attribute.

返回值

Returns TRUE if successful and FALSE if it fails or not positioned on Attribute when this method is called.

参见

  • XMLReader::moveToAttribute() - Move cursor to a named attribute
  • XMLReader::moveToAttributeNo() - Move cursor to an attribute by index
  • XMLReader::moveToAttributeNs() - Move cursor to a named attribute
  • XMLReader::moveToFirstAttribute() - Position cursor on the first Attribute

XMLReader::moveToAttributeNs
XMLReader::moveToFirstAttribute
XMLReader


Position cursor on the first Attribute

XMLReader::moveToElement
XMLReader::moveToNextAttribute
XMLReader
PHP Manual

XMLReader::moveToFirstAttribute

(PHP 5 >= 5.1.0, PHP 7)

XMLReader::moveToFirstAttribute — Position cursor on the first Attribute

说明

public bool XMLReader::moveToFirstAttribute ( void )

Moves cursor to the first Attribute.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLReader::moveToElement() - Position cursor on the parent Element of current Attribute
  • XMLReader::moveToAttribute() - Move cursor to a named attribute
  • XMLReader::moveToAttributeNo() - Move cursor to an attribute by index
  • XMLReader::moveToAttributeNs() - Move cursor to a named attribute
  • XMLReader::moveToNextAttribute() - Position cursor on the next Attribute

XMLReader::moveToElement
XMLReader::moveToNextAttribute
XMLReader


Position cursor on the next Attribute

XMLReader::moveToFirstAttribute
XMLReader::next
XMLReader
PHP Manual

XMLReader::moveToNextAttribute

(PHP 5 >= 5.1.0, PHP 7)

XMLReader::moveToNextAttribute — Position cursor on the next Attribute

说明

public bool XMLReader::moveToNextAttribute ( void )

Moves cursor to the next Attribute if positioned on an Attribute or moves to first attribute if positioned on an Element.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLReader::moveToElement() - Position cursor on the parent Element of current Attribute
  • XMLReader::moveToAttribute() - Move cursor to a named attribute
  • XMLReader::moveToAttributeNo() - Move cursor to an attribute by index
  • XMLReader::moveToAttributeNs() - Move cursor to a named attribute
  • XMLReader::moveToFirstAttribute() - Position cursor on the first Attribute

XMLReader::moveToFirstAttribute
XMLReader::next
XMLReader


Move cursor to next node skipping all subtrees

XMLReader::moveToNextAttribute
XMLReader::open
XMLReader
PHP Manual

XMLReader::next

(PHP 5 >= 5.1.0, PHP 7)

XMLReader::next — Move cursor to next node skipping all subtrees

说明

public bool XMLReader::next ([ string $localname ] )

Positions cursor on the next node skipping all subtrees.

参数

localname

The name of the next node to move to.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLReader::moveToNextAttribute() - Position cursor on the next Attribute
  • XMLReader::moveToElement() - Position cursor on the parent Element of current Attribute
  • XMLReader::moveToAttribute() - Move cursor to a named attribute

XMLReader::moveToNextAttribute
XMLReader::open
XMLReader


Set the URI containing the XML to parse

XMLReader::next
XMLReader::read
XMLReader
PHP Manual

XMLReader::open

(PHP 5 >= 5.1.0, PHP 7)

XMLReader::open — Set the URI containing the XML to parse

说明

public bool XMLReader::open ( string $URI [, string $encoding [, int $options = 0 ]] )

Set the URI containing the XML document to be parsed.

参数

URI

URI pointing to the document.

encoding

The document encoding or NULL.

options

A bitmask of the LIBXML_* constants.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 If called statically, returns an XMLReader 或者在失败时返回 FALSE.

错误／异常

此方法可以被静态调用,但会抛出一个 E_STRICT 错误。

更新日志

版本 | 说明
5.2.0 | encoding and options were added.

参见

  • XMLReader::xml() - Set the data containing the XML to parse
  • XMLReader::close() - Close the XMLReader input

XMLReader::next
XMLReader::read
XMLReader


Move to next node in document

XMLReader::open
XMLReader::readInnerXML
XMLReader
PHP Manual

XMLReader::read

(PHP 5 >= 5.1.0, PHP 7)

XMLReader::read — Move to next node in document

说明

public bool XMLReader::read ( void )

Moves cursor to the next node in the document.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLReader::moveToElement() - Position cursor on the parent Element of current Attribute
  • XMLReader::moveToAttribute() - Move cursor to a named attribute
  • XMLReader::next() - Move cursor to next node skipping all subtrees

XMLReader::open
XMLReader::readInnerXML
XMLReader


Retrieve XML from current node

XMLReader::read
XMLReader::readOuterXML
XMLReader
PHP Manual

XMLReader::readInnerXML

(PHP 5 >= 5.2.0, PHP 7)

XMLReader::readInnerXML — Retrieve XML from current node

说明

public string XMLReader::readInnerXML ( void )

Reads the contents of the current node, including child nodes and markup.

参数

此函数没有参数。

返回值

Returns the contents of the current node as a string. Empty string on failure.

注释

Caution

此函数仅在 PHP 与 libxml 20620 或以上版本编译时可用。

参见

  • XMLReader::readString() - Reads the contents of the current node as a string
  • XMLReader::readOuterXML() - Retrieve XML from current node, including itself
  • XMLReader::expand() - Returns a copy of the current node as a DOM object

XMLReader::read
XMLReader::readOuterXML
XMLReader


Retrieve XML from current node, including itself

XMLReader::readInnerXML
XMLReader::readString
XMLReader
PHP Manual

XMLReader::readOuterXML

(PHP 5 >= 5.2.0, PHP 7)

XMLReader::readOuterXML — Retrieve XML from current node, including itself

说明

public string XMLReader::readOuterXML ( void )

Reads the contents of the current node, including the node itself.

参数

此函数没有参数。

返回值

Returns the contents of current node, including itself, as a string. Empty string on failure.

注释

Caution

此函数仅在 PHP 与 libxml 20620 或以上版本编译时可用。

参见

  • XMLReader::readString() - Reads the contents of the current node as a string
  • XMLReader::readInnerXML() - Retrieve XML from current node
  • XMLReader::expand() - Returns a copy of the current node as a DOM object

XMLReader::readInnerXML
XMLReader::readString
XMLReader


Reads the contents of the current node as a string

XMLReader::readOuterXML
XMLReader::setParserProperty
XMLReader
PHP Manual

XMLReader::readString

(PHP 5 >= 5.2.0, PHP 7)

XMLReader::readString — Reads the contents of the current node as a string

说明

public string XMLReader::readString ( void )

Reads the contents of the current node as a string.

参数

此函数没有参数。

返回值

Returns the content of the current node as a string. Empty string on failure.

注释

Caution

此函数仅在 PHP 与 libxml 20620 或以上版本编译时可用。

参见

  • XMLReader::readOuterXML() - Retrieve XML from current node, including itself
  • XMLReader::readInnerXML() - Retrieve XML from current node
  • XMLReader::expand() - Returns a copy of the current node as a DOM object

XMLReader::readOuterXML
XMLReader::setParserProperty
XMLReader


Set parser options

XMLReader::readString
XMLReader::setRelaxNGSchema
XMLReader
PHP Manual

XMLReader::setParserProperty

(PHP 5 >= 5.1.0, PHP 7)

XMLReader::setParserProperty — Set parser options

说明

public bool XMLReader::setParserProperty ( int $property , bool $value )

Set parser options. The options must be set after
XMLReader::open() or
XMLReader::xml() are called and before
the first XMLReader::read() call.

参数

property

One of the parser option constants.

value

If set to TRUE the option will be enabled otherwise will be disabled.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

XMLReader::readString
XMLReader::setRelaxNGSchema
XMLReader


Set the filename or URI for a RelaxNG Schema

XMLReader::setParserProperty
XMLReader::setRelaxNGSchemaSource
XMLReader
PHP Manual

XMLReader::setRelaxNGSchema

(PHP 5 >= 5.2.0, PHP 7)

XMLReader::setRelaxNGSchema — Set the filename or URI for a RelaxNG Schema

说明

public bool XMLReader::setRelaxNGSchema ( string $filename )

Set the filename or URI for the RelaxNG Schema to use for validation.

参数

filename

filename or URI pointing to a RelaxNG Schema.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLReader::setRelaxNGSchemaSource() - Set the data containing a RelaxNG Schema
  • XMLReader::setSchema() - Validate document against XSD
  • XMLReader::isValid() - Indicates if the parsed document is valid

XMLReader::setParserProperty
XMLReader::setRelaxNGSchemaSource
XMLReader


Set the data containing a RelaxNG Schema

XMLReader::setRelaxNGSchema
XMLReader::setSchema
XMLReader
PHP Manual

XMLReader::setRelaxNGSchemaSource

(PHP 5 >= 5.1.0, PHP 7)

XMLReader::setRelaxNGSchemaSource — Set the data containing a RelaxNG Schema

说明

public bool XMLReader::setRelaxNGSchemaSource ( string $source )

Set the data containing a RelaxNG Schema to use for validation.

参数

source

String containing the RelaxNG Schema.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLReader::setRelaxNGSchema() - Set the filename or URI for a RelaxNG Schema
  • XMLReader::setSchema() - Validate document against XSD
  • XMLReader::isValid() - Indicates if the parsed document is valid

XMLReader::setRelaxNGSchema
XMLReader::setSchema
XMLReader


Validate document against XSD

XMLReader::setRelaxNGSchemaSource
XMLReader::XML
XMLReader
PHP Manual

XMLReader::setSchema

(PHP 5 >= 5.2.0, PHP 7)

XMLReader::setSchema — Validate document against XSD

说明

public bool XMLReader::setSchema ( string $filename )

Use W3C XSD schema to validate the document as it is processed. Activation is only possible before the first Read().

参数

filename

The filename of the XSD schema.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

错误／异常

Issues E_WARNING if libxml was built without schema support, the schema contains errors or if XMLReader::read() has already been called.

注释

Caution

此函数仅在 PHP 与 libxml 20620 或以上版本编译时可用。

参见

  • XMLReader::setRelaxNGSchema() - Set the filename or URI for a RelaxNG Schema
  • XMLReader::setRelaxNGSchemaSource() - Set the data containing a RelaxNG Schema
  • XMLReader::isValid() - Indicates if the parsed document is valid

XMLReader::setRelaxNGSchemaSource
XMLReader::XML
XMLReader


Set the data containing the XML to parse

XMLReader::setSchema
XMLWriter
XMLReader
PHP Manual

XMLReader::XML

(PHP 5 >= 5.1.0, PHP 7)

XMLReader::XML — Set the data containing the XML to parse

说明

public bool XMLReader::xml ( string $source [, string $encoding [, int $options = 0 ]] )

Set the data containing the XML to parse.

参数

source

String containing the XML to be parsed.

encoding

The document encoding or NULL.

options

A bitmask of the LIBXML_* constants.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。 If called statically, returns an XMLReader 或者在失败时返回 FALSE.

错误／异常

此方法可以被静态调用,但会抛出一个 E_STRICT 错误。

更新日志

版本 | 说明
5.2.0 | encoding and options were added.

参见

  • XMLReader::open() - Set the URI containing the XML to parse
  • XMLReader::close() - Close the XMLReader input

XMLReader::setSchema
XMLWriter
XMLReader


XMLWriter

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • XMLWriter 函数
    • XMLWriter::endAttribute — End attribute
    • XMLWriter::endCData — End current CDATA
    • XMLWriter::endComment — Create end comment
    • XMLWriter::endDocument — End current document
    • XMLWriter::endDTDAttlist — End current DTD AttList
    • XMLWriter::endDTDElement — End current DTD element
    • XMLWriter::endDTDEntity — End current DTD Entity
    • XMLWriter::endDTD — End current DTD
    • XMLWriter::endElement — End current element
    • XMLWriter::endPI — End current PI
    • XMLWriter::flush — Flush current buffer
    • XMLWriter::fullEndElement — End current element
    • XMLWriter::openMemory — Create new xmlwriter using memory for string output
    • XMLWriter::openURI — Create new xmlwriter using source uri for output
    • XMLWriter::outputMemory — Returns current buffer
    • XMLWriter::setIndentString — Set string used for indenting
    • XMLWriter::setIndent — Toggle indentation on/off
    • XMLWriter::startAttributeNS — Create start namespaced attribute
    • XMLWriter::startAttribute — Create start attribute
    • XMLWriter::startCData — Create start CDATA tag
    • XMLWriter::startComment — Create start comment
    • XMLWriter::startDocument — Create document tag
    • XMLWriter::startDTDAttlist — Create start DTD AttList
    • XMLWriter::startDTDElement — Create start DTD element
    • XMLWriter::startDTDEntity — Create start DTD Entity
    • XMLWriter::startDTD — Create start DTD tag
    • XMLWriter::startElementNS — Create start namespaced element tag
    • XMLWriter::startElement — Create start element tag
    • XMLWriter::startPI — Create start PI tag
    • XMLWriter::text — Write text
    • XMLWriter::writeAttributeNS — Write full namespaced attribute
    • XMLWriter::writeAttribute — Write full attribute
    • XMLWriter::writeCData — Write full CDATA tag
    • XMLWriter::writeComment — Write full comment tag
    • XMLWriter::writeDTDAttlist — Write full DTD AttList tag
    • XMLWriter::writeDTDElement — Write full DTD element tag
    • XMLWriter::writeDTDEntity — Write full DTD Entity tag
    • XMLWriter::writeDTD — Write full DTD tag
    • XMLWriter::writeElementNS — Write full namespaced element tag
    • XMLWriter::writeElement — Write full element tag
    • XMLWriter::writePI — Writes a PI
    • XMLWriter::writeRaw — Write a raw XML text
XMLReader::XML
简介
XML 操作


简介

This is the XMLWriter extension. It wraps the libxml xmlWriter API.

This extension represents a writer that provides a non-cached, forward-only means of generating streams or files containing XML data.

This extension can be used in an object oriented style or a procedural one. Every method documented describes the alternative procedural call.

XMLWriter
安装／配置
XMLWriter


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
XMLWriter


安装

The XMLWriter extension was initially a PECL extension for PHP 5. It was later added to the PHP source (bundled) as of PHP 5.1.2. This extension is enabled by default.

此扩展默认为启用,编译时可通过下列选项禁用： --disable-xmlwriter

需求
运行时配置
安装／配置


资源类型

There is one resource used by the procedural version of the XMLWriter extension: returned by xmlwriter_open_memory() or xmlwriter_open_uri().

运行时配置
预定义常量
安装／配置


预定义常量

此扩展没有定义常量。

资源类型
XMLWriter 函数
XMLWriter


XMLWriter 函数

Table of Contents

  • XMLWriter::endAttribute — End attribute
  • XMLWriter::endCData — End current CDATA
  • XMLWriter::endComment — Create end comment
  • XMLWriter::endDocument — End current document
  • XMLWriter::endDTDAttlist — End current DTD AttList
  • XMLWriter::endDTDElement — End current DTD element
  • XMLWriter::endDTDEntity — End current DTD Entity
  • XMLWriter::endDTD — End current DTD
  • XMLWriter::endElement — End current element
  • XMLWriter::endPI — End current PI
  • XMLWriter::flush — Flush current buffer
  • XMLWriter::fullEndElement — End current element
  • XMLWriter::openMemory — Create new xmlwriter using memory for string output
  • XMLWriter::openURI — Create new xmlwriter using source uri for output
  • XMLWriter::outputMemory — Returns current buffer
  • XMLWriter::setIndentString — Set string used for indenting
  • XMLWriter::setIndent — Toggle indentation on/off
  • XMLWriter::startAttributeNS — Create start namespaced attribute
  • XMLWriter::startAttribute — Create start attribute
  • XMLWriter::startCData — Create start CDATA tag
  • XMLWriter::startComment — Create start comment
  • XMLWriter::startDocument — Create document tag
  • XMLWriter::startDTDAttlist — Create start DTD AttList
  • XMLWriter::startDTDElement — Create start DTD element
  • XMLWriter::startDTDEntity — Create start DTD Entity
  • XMLWriter::startDTD — Create start DTD tag
  • XMLWriter::startElementNS — Create start namespaced element tag
  • XMLWriter::startElement — Create start element tag
  • XMLWriter::startPI — Create start PI tag
  • XMLWriter::text — Write text
  • XMLWriter::writeAttributeNS — Write full namespaced attribute
  • XMLWriter::writeAttribute — Write full attribute
  • XMLWriter::writeCData — Write full CDATA tag
  • XMLWriter::writeComment — Write full comment tag
  • XMLWriter::writeDTDAttlist — Write full DTD AttList tag
  • XMLWriter::writeDTDElement — Write full DTD element tag
  • XMLWriter::writeDTDEntity — Write full DTD Entity tag
  • XMLWriter::writeDTD — Write full DTD tag
  • XMLWriter::writeElementNS — Write full namespaced element tag
  • XMLWriter::writeElement — Write full element tag
  • XMLWriter::writePI — Writes a PI
  • XMLWriter::writeRaw — Write a raw XML text
预定义常量
XMLWriter::endAttribute
XMLWriter


End attribute

XMLWriter 函数
XMLWriter::endCData
XMLWriter 函数
PHP Manual

XMLWriter::endAttribute

xmlwriter_end_attribute

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::endAttribute -- xmlwriter_end_attribute — End attribute

说明

面向对象风格

bool XMLWriter::endAttribute ( void )

过程化风格

bool xmlwriter_end_attribute ( resource $xmlwriter )

Ends the current attribute.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::startAttribute() - Create start attribute
  • XMLWriter::startAttributeNS() - Create start namespaced attribute
  • XMLWriter::writeAttribute() - Write full attribute
  • XMLWriter::writeAttributeNS() - Write full namespaced attribute

XMLWriter 函数
XMLWriter::endCData
XMLWriter 函数


End current CDATA

XMLWriter::endAttribute
XMLWriter::endComment
XMLWriter 函数
PHP Manual

XMLWriter::endCData

xmlwriter_end_cdata

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::endCData -- xmlwriter_end_cdata — End current CDATA

说明

面向对象风格

bool XMLWriter::endCData ( void )

过程化风格

bool xmlwriter_end_cdata ( resource $xmlwriter )

Ends the current CDATA section.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::startCData() - Create start CDATA tag
  • XMLWriter::writeCData() - Write full CDATA tag

XMLWriter::endAttribute
XMLWriter::endComment
XMLWriter 函数


Create end comment

XMLWriter::endCData
XMLWriter::endDocument
XMLWriter 函数
PHP Manual

XMLWriter::endComment

xmlwriter_end_comment

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 1.0.0)

XMLWriter::endComment -- xmlwriter_end_comment — Create end comment

说明

面向对象风格

bool XMLWriter::endComment ( void )

过程化风格

bool xmlwriter_end_comment ( resource $xmlwriter )

Ends the current comment.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::startComment() - Create start comment
  • XMLWriter::writeComment() - Write full comment tag

XMLWriter::endCData
XMLWriter::endDocument
XMLWriter 函数


End current document

XMLWriter::endComment
XMLWriter::endDTDAttlist
XMLWriter 函数
PHP Manual

XMLWriter::endDocument

xmlwriter_end_document

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::endDocument -- xmlwriter_end_document — End current document

说明

面向对象风格

bool XMLWriter::endDocument ( void )

过程化风格

bool xmlwriter_end_document ( resource $xmlwriter )

Ends the current document.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::startDocument() - Create document tag

XMLWriter::endComment
XMLWriter::endDTDAttlist
XMLWriter 函数


End current DTD AttList

XMLWriter::endDocument
XMLWriter::endDTDElement
XMLWriter 函数
PHP Manual

XMLWriter::endDTDAttlist

xmlwriter_end_dtd_attlist

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::endDTDAttlist -- xmlwriter_end_dtd_attlist — End current DTD AttList

说明

面向对象风格

bool XMLWriter::endDTDAttlist ( void )

过程化风格

bool xmlwriter_end_dtd_attlist ( resource $xmlwriter )

Ends the current DTD attribute list.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::startDTDAttlist() - Create start DTD AttList
  • XMLWriter::writeDTDAttlist() - Write full DTD AttList tag

XMLWriter::endDocument
XMLWriter::endDTDElement
XMLWriter 函数


End current DTD element

XMLWriter::endDTDAttlist
XMLWriter::endDTDEntity
XMLWriter 函数
PHP Manual

XMLWriter::endDTDElement

xmlwriter_end_dtd_element

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::endDTDElement -- xmlwriter_end_dtd_element — End current DTD element

说明

面向对象风格

bool XMLWriter::endDTDElement ( void )

过程化风格

bool xmlwriter_end_dtd_element ( resource $xmlwriter )

Ends the current DTD element.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::startDTDElement() - Create start DTD element
  • XMLWriter::writeDTDElement() - Write full DTD element tag

XMLWriter::endDTDAttlist
XMLWriter::endDTDEntity
XMLWriter 函数


End current DTD Entity

XMLWriter::endDTDElement
XMLWriter::endDTD
XMLWriter 函数
PHP Manual

XMLWriter::endDTDEntity

xmlwriter_end_dtd_entity

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::endDTDEntity -- xmlwriter_end_dtd_entity — End current DTD Entity

说明

面向对象风格

bool XMLWriter::endDTDEntity ( void )

过程化风格

bool xmlwriter_end_dtd_entity ( resource $xmlwriter )

Ends the current DTD entity.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::startDTDEntity() - Create start DTD Entity
  • XMLWriter::writeDTDEntity() - Write full DTD Entity tag

XMLWriter::endDTDElement
XMLWriter::endDTD
XMLWriter 函数


End current DTD

XMLWriter::endDTDEntity
XMLWriter::endElement
XMLWriter 函数
PHP Manual

XMLWriter::endDTD

xmlwriter_end_dtd

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::endDTD -- xmlwriter_end_dtd — End current DTD

说明

面向对象风格

bool XMLWriter::endDTD ( void )

过程化风格

bool xmlwriter_end_dtd ( resource $xmlwriter )

Ends the DTD of the document.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::startDTD() - Create start DTD tag
  • XMLWriter::writeDTD() - Write full DTD tag

XMLWriter::endDTDEntity
XMLWriter::endElement
XMLWriter 函数


End current element

XMLWriter::endDTD
XMLWriter::endPI
XMLWriter 函数
PHP Manual

XMLWriter::endElement

xmlwriter_end_element

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::endElement -- xmlwriter_end_element — End current element

说明

面向对象风格

bool XMLWriter::endElement ( void )

过程化风格

bool xmlwriter_end_element ( resource $xmlwriter )

Ends the current element.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::startElement() - Create start element tag
  • XMLWriter::writeElement() - Write full element tag

XMLWriter::endDTD
XMLWriter::endPI
XMLWriter 函数


End current PI

XMLWriter::endElement
XMLWriter::flush
XMLWriter 函数
PHP Manual

XMLWriter::endPI

xmlwriter_end_pi

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::endPI -- xmlwriter_end_pi — End current PI

说明

面向对象风格

bool XMLWriter::endPI ( void )

过程化风格

bool xmlwriter_end_pi ( resource $xmlwriter )

Ends the current processing instruction.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::startPI() - Create start PI tag
  • XMLWriter::writePI() - Writes a PI

XMLWriter::endElement
XMLWriter::flush
XMLWriter 函数


Flush current buffer

XMLWriter::endPI
XMLWriter::fullEndElement
XMLWriter 函数
PHP Manual

XMLWriter::flush

xmlwriter_flush

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 1.0.0)

XMLWriter::flush -- xmlwriter_flush — Flush current buffer

说明

面向对象风格

mixed XMLWriter::flush ([ bool $empty = true ] )

过程化风格

mixed xmlwriter_flush ( resource $xmlwriter [, bool $empty = true ] )

Flushes the current buffer.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

empty

Whether to empty the buffer or not. Default is TRUE.

返回值

If you opened the writer in memory, this function returns the generated XML buffer, Else, if using URI, this function will write the buffer and return the number of written bytes.

XMLWriter::endPI
XMLWriter::fullEndElement
XMLWriter 函数


End current element

XMLWriter::flush
XMLWriter::openMemory
XMLWriter 函数
PHP Manual

XMLWriter::fullEndElement

xmlwriter_full_end_element

(PHP 5 >= 5.2.0, PHP 7, PECL xmlwriter >= 2.0.4)

XMLWriter::fullEndElement -- xmlwriter_full_end_element — End current element

说明

面向对象风格

bool XMLWriter::fullEndElement ( void )

过程化风格

bool xmlwriter_full_end_element ( resource $xmlwriter )

End the current xml element. Writes an end tag even if the element is empty.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::endElement() - End current element

XMLWriter::flush
XMLWriter::openMemory
XMLWriter 函数


Create new xmlwriter using memory for string output

XMLWriter::fullEndElement
XMLWriter::openURI
XMLWriter 函数
PHP Manual

XMLWriter::openMemory

xmlwriter_open_memory

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::openMemory -- xmlwriter_open_memory — Create new xmlwriter using memory for string output

说明

面向对象风格

bool XMLWriter::openMemory ( void )

过程化风格

resource xmlwriter_open_memory ( void )

Creates a new XMLWriter using memory for string output.

参数

返回值

面向对象风格: 成功时返回 TRUE， 或者在失败时返回 FALSE。

过程化风格: Returns a new xmlwriter 资源(resource) for later use with the xmlwriter functions on success, FALSE on error.

参见

  • XMLWriter::openURI() - Create new xmlwriter using source uri for output

XMLWriter::fullEndElement
XMLWriter::openURI
XMLWriter 函数


Create new xmlwriter using source uri for output

XMLWriter::openMemory
XMLWriter::outputMemory
XMLWriter 函数
PHP Manual

XMLWriter::openURI

xmlwriter_open_uri

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::openURI -- xmlwriter_open_uri — Create new xmlwriter using source uri for output

说明

面向对象风格

bool XMLWriter::openURI ( string $uri )

过程化风格

resource xmlwriter_open_uri ( string $uri )

Creates a new XMLWriter using uri for the output.

参数

uri

The URI of the resource for the output.

返回值

面向对象风格: 成功时返回 TRUE， 或者在失败时返回 FALSE。

过程化风格: Returns a new xmlwriter 资源(resource) for later use with the xmlwriter functions on success, FALSE on error.

参见

  • XMLWriter::openMemory() - Create new xmlwriter using memory for string output

XMLWriter::openMemory
XMLWriter::outputMemory
XMLWriter 函数


Returns current buffer

XMLWriter::openURI
XMLWriter::setIndentString
XMLWriter 函数
PHP Manual

XMLWriter::outputMemory

xmlwriter_output_memory

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::outputMemory -- xmlwriter_output_memory — Returns current buffer

说明

面向对象风格

string XMLWriter::outputMemory ([ bool $flush = true ] )

过程化风格

string xmlwriter_output_memory ( resource $xmlwriter [, bool $flush = true ] )

Returns the current buffer.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

flush

Whether to flush the output buffer or not. Default is TRUE.

返回值

Returns the current buffer as a string.

参见

  • XMLWriter::flush() - Flush current buffer

XMLWriter::openURI
XMLWriter::setIndentString
XMLWriter 函数


Set string used for indenting

XMLWriter::outputMemory
XMLWriter::setIndent
XMLWriter 函数
PHP Manual

XMLWriter::setIndentString

xmlwriter_set_indent_string

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::setIndentString -- xmlwriter_set_indent_string — Set string used for indenting

说明

面向对象风格

bool XMLWriter::setIndentString ( string $indentString )

过程化风格

bool xmlwriter_set_indent_string ( resource $xmlwriter , string $indentString )

Sets the string which will be used to indent each element/attribute of the resulting xml.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

indentString

The indentation string.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::setIndent() - Toggle indentation on/off

XMLWriter::outputMemory
XMLWriter::setIndent
XMLWriter 函数


Toggle indentation on/off

XMLWriter::setIndentString
XMLWriter::startAttributeNS
XMLWriter 函数
PHP Manual

XMLWriter::setIndent

xmlwriter_set_indent

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::setIndent -- xmlwriter_set_indent — Toggle indentation on/off

说明

面向对象风格

bool XMLWriter::setIndent ( bool $indent )

过程化风格

bool xmlwriter_set_indent ( resource $xmlwriter , bool $indent )

Toggles indentation on or off.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

indent

Whether indentation is enabled.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::setIndentString() - Set string used for indenting

XMLWriter::setIndentString
XMLWriter::startAttributeNS
XMLWriter 函数


Create start namespaced attribute

XMLWriter::setIndent
XMLWriter::startAttribute
XMLWriter 函数
PHP Manual

XMLWriter::startAttributeNS

xmlwriter_start_attribute_ns

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::startAttributeNS -- xmlwriter_start_attribute_ns — Create start namespaced attribute

说明

面向对象风格

bool XMLWriter::startAttributeNS ( string $prefix , string $name , string $uri )

过程化风格

bool xmlwriter_start_attribute_ns ( resource $xmlwriter , string $prefix , string $name , string $uri )

Starts a namespaced attribute.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

prefix

The namespace prefix.

name

The attribute name.

uri

The namespace URI.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::startAttribute() - Create start attribute
  • XMLWriter::endAttribute() - End attribute
  • XMLWriter::writeAttribute() - Write full attribute
  • XMLWriter::writeAttributeNS() - Write full namespaced attribute

XMLWriter::setIndent
XMLWriter::startAttribute
XMLWriter 函数


Create start attribute

XMLWriter::startAttributeNS
XMLWriter::startCData
XMLWriter 函数
PHP Manual

XMLWriter::startAttribute

xmlwriter_start_attribute

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::startAttribute -- xmlwriter_start_attribute — Create start attribute

说明

面向对象风格

bool XMLWriter::startAttribute ( string $name )

过程化风格

bool xmlwriter_start_attribute ( resource $xmlwriter , string $name )

Starts an attribute.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

name

The attribute name.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::startAttributeNS() - Create start namespaced attribute
  • XMLWriter::endAttribute() - End attribute
  • XMLWriter::writeAttribute() - Write full attribute
  • XMLWriter::writeAttributeNS() - Write full namespaced attribute

XMLWriter::startAttributeNS
XMLWriter::startCData
XMLWriter 函数


Create start CDATA tag

XMLWriter::startAttribute
XMLWriter::startComment
XMLWriter 函数
PHP Manual

XMLWriter::startCData

xmlwriter_start_cdata

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::startCData -- xmlwriter_start_cdata — Create start CDATA tag

说明

面向对象风格

bool XMLWriter::startCData ( void )

过程化风格

bool xmlwriter_start_cdata ( resource $xmlwriter )

Starts a CDATA.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::endCData() - End current CDATA
  • XMLWriter::writeCData() - Write full CDATA tag

XMLWriter::startAttribute
XMLWriter::startComment
XMLWriter 函数


Create start comment

XMLWriter::startCData
XMLWriter::startDocument
XMLWriter 函数
PHP Manual

XMLWriter::startComment

xmlwriter_start_comment

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 1.0.0)

XMLWriter::startComment -- xmlwriter_start_comment — Create start comment

说明

面向对象风格

bool XMLWriter::startComment ( void )

过程化风格

bool xmlwriter_start_comment ( resource $xmlwriter )

Starts a comment.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::endComment() - Create end comment
  • XMLWriter::writeComment() - Write full comment tag

XMLWriter::startCData
XMLWriter::startDocument
XMLWriter 函数


Create document tag

XMLWriter::startComment
XMLWriter::startDTDAttlist
XMLWriter 函数
PHP Manual

XMLWriter::startDocument

xmlwriter_start_document

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::startDocument -- xmlwriter_start_document — Create document tag

说明

面向对象风格

bool XMLWriter::startDocument ([ string $version = 1.0 [, string $encoding = NULL [, string $standalone ]]] )

过程化风格

bool xmlwriter_start_document ( resource $xmlwriter [, string $version = 1.0 [, string $encoding = NULL [, string $standalone ]]] )

Starts a document.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

version

The version number of the document as part of the XML declaration.

encoding

The encoding of the document as part of the XML declaration.

standalone

yes or no.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::endDocument() - End current document

XMLWriter::startComment
XMLWriter::startDTDAttlist
XMLWriter 函数


Create start DTD AttList

XMLWriter::startDocument
XMLWriter::startDTDElement
XMLWriter 函数
PHP Manual

XMLWriter::startDTDAttlist

xmlwriter_start_dtd_attlist

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::startDTDAttlist -- xmlwriter_start_dtd_attlist — Create start DTD AttList

说明

面向对象风格

bool XMLWriter::startDTDAttlist ( string $name )

过程化风格

bool xmlwriter_start_dtd_attlist ( resource $xmlwriter , string $name )

Starts a DTD attribute list.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

name

The attribute list name.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::endDTDAttlist() - End current DTD AttList
  • XMLWriter::writeDTDAttlist() - Write full DTD AttList tag

XMLWriter::startDocument
XMLWriter::startDTDElement
XMLWriter 函数


Create start DTD element

XMLWriter::startDTDAttlist
XMLWriter::startDTDEntity
XMLWriter 函数
PHP Manual

XMLWriter::startDTDElement

xmlwriter_start_dtd_element

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::startDTDElement -- xmlwriter_start_dtd_element — Create start DTD element

说明

面向对象风格

bool XMLWriter::startDTDElement ( string $qualifiedName )

过程化风格

bool xmlwriter_start_dtd_element ( resource $xmlwriter , string $qualifiedName )

Starts a DTD element.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

qualifiedName

The qualified name of the document type to create.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::endDTDElement() - End current DTD element
  • XMLWriter::writeDTDElement() - Write full DTD element tag

XMLWriter::startDTDAttlist
XMLWriter::startDTDEntity
XMLWriter 函数


Create start DTD Entity

XMLWriter::startDTDElement
XMLWriter::startDTD
XMLWriter 函数
PHP Manual

XMLWriter::startDTDEntity

xmlwriter_start_dtd_entity

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::startDTDEntity -- xmlwriter_start_dtd_entity — Create start DTD Entity

说明

面向对象风格

bool XMLWriter::startDTDEntity ( string $name , bool $isparam )

过程化风格

bool xmlwriter_start_dtd_entity ( resource $xmlwriter , string $name , bool $isparam )

Starts a DTD entity.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

name

The name of the entity.

isparam

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::endDTDEntity() - End current DTD Entity
  • XMLWriter::writeDTDEntity() - Write full DTD Entity tag

XMLWriter::startDTDElement
XMLWriter::startDTD
XMLWriter 函数


Create start DTD tag

XMLWriter::startDTDEntity
XMLWriter::startElementNS
XMLWriter 函数
PHP Manual

XMLWriter::startDTD

xmlwriter_start_dtd

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::startDTD -- xmlwriter_start_dtd — Create start DTD tag

说明

面向对象风格

bool XMLWriter::startDTD ( string $qualifiedName [, string $publicId [, string $systemId ]] )

过程化风格

bool xmlwriter_start_dtd ( resource $xmlwriter , string $qualifiedName [, string $publicId [, string $systemId ]] )

Starts a DTD.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

qualifiedName

The qualified name of the document type to create.

publicId

The external subset public identifier.

systemId

The external subset system identifier.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::endDTD() - End current DTD
  • XMLWriter::writeDTD() - Write full DTD tag

XMLWriter::startDTDEntity
XMLWriter::startElementNS
XMLWriter 函数


Create start namespaced element tag

XMLWriter::startDTD
XMLWriter::startElement
XMLWriter 函数
PHP Manual

XMLWriter::startElementNS

xmlwriter_start_element_ns

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::startElementNS -- xmlwriter_start_element_ns — Create start namespaced element tag

说明

面向对象风格

bool XMLWriter::startElementNS ( string $prefix , string $name , string $uri )

过程化风格

bool xmlwriter_start_element_ns ( resource $xmlwriter , string $prefix , string $name , string $uri )

Starts a namespaced element.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

prefix

The namespace prefix.

name

The element name.

uri

The namespace URI.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::endElement() - End current element
  • XMLWriter::writeElementNS() - Write full namespaced element tag

XMLWriter::startDTD
XMLWriter::startElement
XMLWriter 函数


Create start element tag

XMLWriter::startElementNS
XMLWriter::startPI
XMLWriter 函数
PHP Manual

XMLWriter::startElement

xmlwriter_start_element

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::startElement -- xmlwriter_start_element — Create start element tag

说明

面向对象风格

bool XMLWriter::startElement ( string $name )

过程化风格

bool xmlwriter_start_element ( resource $xmlwriter , string $name )

Starts an element.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

name

The element name.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::endElement() - End current element
  • XMLWriter::writeElement() - Write full element tag

XMLWriter::startElementNS
XMLWriter::startPI
XMLWriter 函数


Create start PI tag

XMLWriter::startElement
XMLWriter::text
XMLWriter 函数
PHP Manual

XMLWriter::startPI

xmlwriter_start_pi

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::startPI -- xmlwriter_start_pi — Create start PI tag

说明

面向对象风格

bool XMLWriter::startPI ( string $target )

过程化风格

bool xmlwriter_start_pi ( resource $xmlwriter , string $target )

Starts a processing instruction tag.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

target

The target of the processing instruction.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::endPI() - End current PI
  • XMLWriter::writePI() - Writes a PI

XMLWriter::startElement
XMLWriter::text
XMLWriter 函数


Write text

XMLWriter::startPI
XMLWriter::writeAttributeNS
XMLWriter 函数
PHP Manual

XMLWriter::text

xmlwriter_text

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::text -- xmlwriter_text — Write text

说明

面向对象风格

bool XMLWriter::text ( string $content )

过程化风格

bool xmlwriter_text ( resource $xmlwriter , string $content )

Writes a text.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

content

The contents of the text.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

XMLWriter::startPI
XMLWriter::writeAttributeNS
XMLWriter 函数


Write full namespaced attribute

XMLWriter::text
XMLWriter::writeAttribute
XMLWriter 函数
PHP Manual

XMLWriter::writeAttributeNS

xmlwriter_write_attribute_ns

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::writeAttributeNS -- xmlwriter_write_attribute_ns — Write full namespaced attribute

说明

面向对象风格

bool XMLWriter::writeAttributeNS ( string $prefix , string $name , string $uri , string $content )

过程化风格

bool xmlwriter_write_attribute_ns ( resource $xmlwriter , string $prefix , string $name , string $uri , string $content )

Writes a full namespaced attribute.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

prefix

The namespace prefix.

name

The attribute name.

uri

The namespace URI.

content

The attribute value.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::writeAttribute() - Write full attribute
  • XMLWriter::startAttribute() - Create start attribute
  • XMLWriter::startAttributeNS() - Create start namespaced attribute
  • XMLWriter::endAttribute() - End attribute

XMLWriter::text
XMLWriter::writeAttribute
XMLWriter 函数


Write full attribute

XMLWriter::writeAttributeNS
XMLWriter::writeCData
XMLWriter 函数
PHP Manual

XMLWriter::writeAttribute

xmlwriter_write_attribute

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::writeAttribute -- xmlwriter_write_attribute — Write full attribute

说明

面向对象风格

bool XMLWriter::writeAttribute ( string $name , string $value )

过程化风格

bool xmlwriter_write_attribute ( resource $xmlwriter , string $name , string $value )

Writes a full attribute.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

name

The name of the attribute.

value

The value of the attribute.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::writeAttributeNS() - Write full namespaced attribute
  • XMLWriter::startAttribute() - Create start attribute
  • XMLWriter::startAttributeNS() - Create start namespaced attribute
  • XMLWriter::endAttribute() - End attribute

XMLWriter::writeAttributeNS
XMLWriter::writeCData
XMLWriter 函数


Write full CDATA tag

XMLWriter::writeAttribute
XMLWriter::writeComment
XMLWriter 函数
PHP Manual

XMLWriter::writeCData

xmlwriter_write_cdata

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::writeCData -- xmlwriter_write_cdata — Write full CDATA tag

说明

面向对象风格

bool XMLWriter::writeCData ( string $content )

过程化风格

bool xmlwriter_write_cdata ( resource $xmlwriter , string $content )

Writes a full CDATA.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

content

The contents of the CDATA.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::startCData() - Create start CDATA tag
  • XMLWriter::endCData() - End current CDATA

XMLWriter::writeAttribute
XMLWriter::writeComment
XMLWriter 函数


Write full comment tag

XMLWriter::writeCData
XMLWriter::writeDTDAttlist
XMLWriter 函数
PHP Manual

XMLWriter::writeComment

xmlwriter_write_comment

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::writeComment -- xmlwriter_write_comment — Write full comment tag

说明

面向对象风格

bool XMLWriter::writeComment ( string $content )

过程化风格

bool xmlwriter_write_comment ( resource $xmlwriter , string $content )

Writes a full comment.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

content

The contents of the comment.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::startComment() - Create start comment
  • XMLWriter::endComment() - Create end comment

XMLWriter::writeCData
XMLWriter::writeDTDAttlist
XMLWriter 函数


Write full DTD AttList tag

XMLWriter::writeComment
XMLWriter::writeDTDElement
XMLWriter 函数
PHP Manual

XMLWriter::writeDTDAttlist

xmlwriter_write_dtd_attlist

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::writeDTDAttlist -- xmlwriter_write_dtd_attlist — Write full DTD AttList tag

说明

面向对象风格

bool XMLWriter::writeDTDAttlist ( string $name , string $content )

过程化风格

bool xmlwriter_write_dtd_attlist ( resource $xmlwriter , string $name , string $content )

Writes a DTD attribute list.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

name

The name of the DTD attribute list.

content

The content of the DTD attribute list.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::startDTDAttlist() - Create start DTD AttList
  • XMLWriter::endDTDAttlist() - End current DTD AttList

XMLWriter::writeComment
XMLWriter::writeDTDElement
XMLWriter 函数


Write full DTD element tag

XMLWriter::writeDTDAttlist
XMLWriter::writeDTDEntity
XMLWriter 函数
PHP Manual

XMLWriter::writeDTDElement

xmlwriter_write_dtd_element

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::writeDTDElement -- xmlwriter_write_dtd_element — Write full DTD element tag

说明

面向对象风格

bool XMLWriter::writeDTDElement ( string $name , string $content )

过程化风格

bool xmlwriter_write_dtd_element ( resource $xmlwriter , string $name , string $content )

Writes a full DTD element.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

name

The name of the DTD element.

content

The content of the element.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::startDTDElement() - Create start DTD element
  • XMLWriter::endDTDElement() - End current DTD element

XMLWriter::writeDTDAttlist
XMLWriter::writeDTDEntity
XMLWriter 函数


Write full DTD Entity tag

XMLWriter::writeDTDElement
XMLWriter::writeDTD
XMLWriter 函数
PHP Manual

XMLWriter::writeDTDEntity

xmlwriter_write_dtd_entity

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::writeDTDEntity -- xmlwriter_write_dtd_entity — Write full DTD Entity tag

说明

面向对象风格

bool XMLWriter::writeDTDEntity ( string $name , string $content , bool $pe , string $pubid , string $sysid , string $ndataid )

过程化风格

bool xmlwriter_write_dtd_entity ( resource $xmlwriter , string $name , string $content , bool $pe , string $pubid , string $sysid , string $ndataid )

Writes a full DTD entity.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

name

The name of the entity.

content

The content of the entity.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::startDTDEntity() - Create start DTD Entity
  • XMLWriter::endDTDEntity() - End current DTD Entity

XMLWriter::writeDTDElement
XMLWriter::writeDTD
XMLWriter 函数


Write full DTD tag

XMLWriter::writeDTDEntity
XMLWriter::writeElementNS
XMLWriter 函数
PHP Manual

XMLWriter::writeDTD

xmlwriter_write_dtd

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::writeDTD -- xmlwriter_write_dtd — Write full DTD tag

说明

面向对象风格

bool XMLWriter::writeDTD ( string $name [, string $publicId [, string $systemId [, string $subset ]]] )

过程化风格

bool xmlwriter_write_dtd ( resource $xmlwriter , string $name [, string $publicId [, string $systemId [, string $subset ]]] )

Writes a full DTD.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

name

The DTD name.

publicId

The external subset public identifier.

systemId

The external subset system identifier.

subset

The content of the DTD.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::startDTD() - Create start DTD tag
  • XMLWriter::endDTD() - End current DTD

XMLWriter::writeDTDEntity
XMLWriter::writeElementNS
XMLWriter 函数


Write full namespaced element tag

XMLWriter::writeDTD
XMLWriter::writeElement
XMLWriter 函数
PHP Manual

XMLWriter::writeElementNS

xmlwriter_write_element_ns

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::writeElementNS -- xmlwriter_write_element_ns — Write full namespaced element tag

说明

面向对象风格

bool XMLWriter::writeElementNS ( string $prefix , string $name , string $uri [, string $content ] )

过程化风格

bool xmlwriter_write_element_ns ( resource $xmlwriter , string $prefix , string $name , string $uri [, string $content ] )

Writes a full namespaced element tag.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

prefix

The namespace prefix.

name

The element name.

uri

The namespace URI.

content

The element contents.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.2.3 | The content parameter became optional.

参见

  • XMLWriter::startElementNS() - Create start namespaced element tag
  • XMLWriter::endElement() - End current element
  • XMLWriter::writeElement() - Write full element tag

XMLWriter::writeDTD
XMLWriter::writeElement
XMLWriter 函数


Write full element tag

XMLWriter::writeElementNS
XMLWriter::writePI
XMLWriter 函数
PHP Manual

XMLWriter::writeElement

xmlwriter_write_element

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::writeElement -- xmlwriter_write_element — Write full element tag

说明

面向对象风格

bool XMLWriter::writeElement ( string $name [, string $content ] )

过程化风格

bool xmlwriter_write_element ( resource $xmlwriter , string $name [, string $content ] )

Writes a full element tag.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

name

The element name.

content

The element contents.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.2.3 | The content parameter became optional.

参见

  • XMLWriter::startElement() - Create start element tag
  • XMLWriter::endElement() - End current element
  • XMLWriter::writeElementNS() - Write full namespaced element tag

XMLWriter::writeElementNS
XMLWriter::writePI
XMLWriter 函数


Writes a PI

XMLWriter::writeElement
XMLWriter::writeRaw
XMLWriter 函数
PHP Manual

XMLWriter::writePI

xmlwriter_write_pi

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::writePI -- xmlwriter_write_pi — Writes a PI

说明

面向对象风格

bool XMLWriter::writePI ( string $target , string $content )

过程化风格

bool xmlwriter_write_pi ( resource $xmlwriter , string $target , string $content )

Writes a processing instruction.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

target

The target of the processing instruction.

content

The content of the processing instruction.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::startPI() - Create start PI tag
  • XMLWriter::endPI() - End current PI

XMLWriter::writeElement
XMLWriter::writeRaw
XMLWriter 函数


Write a raw XML text

XMLWriter::writePI
XSL
XMLWriter 函数
PHP Manual

XMLWriter::writeRaw

xmlwriter_write_raw

(PHP 5 >= 5.2.0, PHP 7, PECL xmlwriter >= 2.0.4)

XMLWriter::writeRaw -- xmlwriter_write_raw — Write a raw XML text

说明

面向对象风格

bool XMLWriter::writeRaw ( string $content )

过程化风格

bool xmlwriter_write_raw ( resource $xmlwriter , string $content )

Writes a raw xml text.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri() 或 xmlwriter_open_memory() 的调用。

content

The text string to write.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XMLWriter::text() - Write text

XMLWriter::writePI
XSL
XMLWriter 函数


XSL

  • 简介
  • 安装／配置
    • 需求
    • 安装
    • 运行时配置
    • 资源类型
  • 预定义常量
  • 范例
    • Example collection.xml and collection.xsl files
    • Error handling with libxml error handling functions
  • XSLTProcessor — The XSLTProcessor class
    • XSLTProcessor::__construct — Creates a new XSLTProcessor object
    • XSLTProcessor::getParameter — Get value of a parameter
    • XsltProcessor::getSecurityPrefs — Get security preferences
    • XSLTProcessor::hasExsltSupport — Determine if PHP has EXSLT support
    • XSLTProcessor::importStylesheet — Import stylesheet
    • XSLTProcessor::registerPHPFunctions — Enables the ability to use PHP functions as XSLT functions
    • XSLTProcessor::removeParameter — Remove parameter
    • XSLTProcessor::setParameter — Set value for a parameter
    • XSLTProcessor::setProfiling — Sets profiling output file
    • XsltProcessor::setSecurityPrefs — Set security preferences
    • XSLTProcessor::transformToDoc — Transform to a DOMDocument
    • XSLTProcessor::transformToUri — Transform to URI
    • XSLTProcessor::transformToXML — Transform to XML
XMLWriter::writeRaw
简介
XML 操作


简介

The XSL extension implements the XSL standard, performing » XSLT transformations using the » libxslt library

XSL
安装／配置
XSL


安装／配置

Table of Contents

  • 需求
  • 安装
  • 运行时配置
  • 资源类型
简介
需求
XSL


需求

此扩展需要 libxml PHP 扩展。这表示需要使用 --enable-libxml ，尽管这将隐式完成因为 libxml 是缺省开启的。

This extension uses libxslt which can be found at » http://xmlsoft.org/XSLT/. libxslt version 1.1.0 or greater is required.

安装／配置
安装
安装／配置


安装

PHP 5 includes the XSL extension by default and can be enabled by adding the argument --with-xsl[=DIR] to your configure line (DIR being the libxslt installation directory).

需求
运行时配置
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

XSL_CLONE_AUTO (integer)
XSL_CLONE_NEVER (integer)
XSL_CLONE_ALWAYS (integer)
LIBXSLT_VERSION (integer)
libxslt version like 10117. Available as of PHP 5.1.2.
LIBXSLT_DOTTED_VERSION (string)
libxslt version like 1.1.17. Available as of PHP 5.1.2.
LIBEXSLT_VERSION (integer)
libexslt version like 813. Available as of PHP 5.1.2.
LIBEXSLT_DOTTED_VERSION (string)
libexslt version like 1.1.17. Available as of PHP 5.1.2.
XSL_SECPREF_NONE (integer)
Deactivate all security restrictions.
XSL_SECPREF_READ_FILE (integer)
Disallows reading files.
XSL_SECPREF_WRITE_FILE (integer)
Disallows writing files.
XSL_SECPREF_CREATE_DIRECTORY (integer)
Disallows creating directories.
XSL_SECPREF_READ_NETWORK (integer)
Disallows reading network files.
XSL_SECPREF_WRITE_NETWORK (integer)
Disallows writing network files.
XSL_SECPREF_DEFAULT (integer)
Disallows all write access, i.e. a bitmask of XSL_SECPREF_WRITE_NETWORK | XSL_SECPREF_CREATE_DIRECTORY | XSL_SECPREF_WRITE_FILE.
资源类型
范例
XSL


范例

Table of Contents

  • Example collection.xml and collection.xsl files
  • Error handling with libxml error handling functions
预定义常量
Example collection.xml and collection.xsl files
XSL


Example collection.xml and collection.xsl files

Many examples in this reference require both an XML and an XSL file. We will use collection.xml and collection.xsl that contains the following:

Example #1 collection.xml

<collection>
 <cd>
  <title>Fight for your mind</title>
  <artist>Ben Harper</artist>
  <year>1995</year>
 </cd>
 <cd>
  <title>Electric Ladyland</title>
  <artist>Jimi Hendrix</artist>
  <year>1997</year>
 </cd>
</collection>

Example #2 collection.xsl

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:param name="owner" select="'Nicolas Eliaszewicz'"/>
 <xsl:output method="html" encoding="iso-8859-1" indent="no"/>
 <xsl:template match="collection">
  Hey! Welcome to <xsl:value-of select="$owner"/>'s sweet CD collection!
  <xsl:apply-templates/>
 </xsl:template>
 <xsl:template match="cd">
  <h1><xsl:value-of select="title"/></h1>
  <h2>by <xsl:value-of select="artist"/> - <xsl:value-of select="year"/></h2>
  <hr />
 </xsl:template>
</xsl:stylesheet>

范例
Error handling with libxml error handling functions
范例


Error handling with libxml error handling functions

libxml offers a number of functions for handling errors, which can be employed to capture and deal with errors in XSLT processing.

Example #1 fruits.xml

A valid XML file.

<fruits>
 <fruit>Apple</fruit>
 <fruit>Banana</fruit>
 <fruit>Cherry</fruit>
</fruits>

Example #2 fruits.xsl

Contains an invalid select expression.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="html" encoding="utf-8" indent="no"/>
 <xsl:template match="fruits">
  <ul>
   <xsl:apply-templates/>
  </ul>
 </xsl:template>
 <xsl:template match="fruit">
  <li><xsl:value-of select="THIS IS A DELIBERATE ERROR!"/></li>
 </xsl:template>
</xsl:stylesheet>

Example #3 Collating and printing errors

The example below captures and displays libxml errors raised when calling XSLTProcessor::importStyleSheet() with a stylesheet containing an error.

<?php

$xmldoc = new DOMDocument();
$xsldoc = new DOMDocument();
$xsl = new XSLTProcessor();

$xmldoc->loadXML('fruits.xml');
$xsldoc->loadXML('fruits.xsl');

libxml_use_internal_errors(true);
$result = $xsl->importStyleSheet($xsldoc);
if (!$result) {
    foreach (libxml_get_errors() as $error) {
        echo "Libxml error: {$error->message}\n";
    }
}
libxml_use_internal_errors(false);

if ($result) {
    echo $xsl->transformToXML($xmldoc);
}

?>

以上例程的输出类似于：

Libxml error: Invalid expression

Libxml error: compilation error: file fruits.xsl line 9 element value-of
Libxml error: xsl:value-of : could not compile select expression 'THIS IS A DELIBERATE ERROR!'

Example collection.xml and collection.xsl files
XSLTProcessor
范例


The XSLTProcessor class

(PHP 5, PHP 7)

简介

类摘要

XSLTProcessor {
/* 方法 */
string getParameter ( string $namespaceURI , string $localName )
public int XsltProcessor::getSecurityPrefs ( void )
bool hasExsltSupport ( void )
public bool importStylesheet ( object $stylesheet )
void registerPHPFunctions ([ mixed $restrict ] )
bool removeParameter ( string $namespaceURI , string $localName )
bool setParameter ( string $namespace , string $name , string $value )
bool setProfiling ( string $filename )
public int XsltProcessor::setSecurityPrefs ( int $securityPrefs )
DOMDocument transformToDoc ( DOMNode $doc )
int transformToURI ( DOMDocument $doc , string $uri )
string transformToXML ( object $doc )
}

Table of Contents

  • XSLTProcessor::__construct — Creates a new XSLTProcessor object
  • XSLTProcessor::getParameter — Get value of a parameter
  • XsltProcessor::getSecurityPrefs — Get security preferences
  • XSLTProcessor::hasExsltSupport — Determine if PHP has EXSLT support
  • XSLTProcessor::importStylesheet — Import stylesheet
  • XSLTProcessor::registerPHPFunctions — Enables the ability to use PHP functions as XSLT functions
  • XSLTProcessor::removeParameter — Remove parameter
  • XSLTProcessor::setParameter — Set value for a parameter
  • XSLTProcessor::setProfiling — Sets profiling output file
  • XsltProcessor::setSecurityPrefs — Set security preferences
  • XSLTProcessor::transformToDoc — Transform to a DOMDocument
  • XSLTProcessor::transformToUri — Transform to URI
  • XSLTProcessor::transformToXML — Transform to XML
Error handling with libxml error handling functions
XSLTProcessor::__construct
XSL


Creates a new XSLTProcessor object

XSLTProcessor
XSLTProcessor::getParameter
XSLTProcessor
PHP Manual

XSLTProcessor::__construct

(PHP 5, PHP 7)

XSLTProcessor::__construct — Creates a new XSLTProcessor object

说明

XSLTProcessor::__construct ( void )

Creates a new XSLTProcessor object.

参数

此函数没有参数。

返回值

没有返回值。

范例

Example #1 Creating an XSLTProcessor

<?php

$xsldoc = new DOMDocument();
$xsldoc->load($xsl_filename);

$xmldoc = new DOMDocument();
$xmldoc->load($xml_filename);

$xsl = new XSLTProcessor();
$xsl->importStyleSheet($xsldoc);
echo $xsl->transformToXML($xmldoc);

?>

XSLTProcessor
XSLTProcessor::getParameter
XSLTProcessor


Get value of a parameter

XSLTProcessor::__construct
XsltProcessor::getSecurityPrefs
XSLTProcessor
PHP Manual

XSLTProcessor::getParameter

(PHP 5, PHP 7)

XSLTProcessor::getParameter — Get value of a parameter

说明

string XSLTProcessor::getParameter ( string $namespaceURI , string $localName )

Gets a parameter if previously set by XSLTProcessor::setParameter().

参数

namespaceURI

The namespace URI of the XSLT parameter.

localName

The local name of the XSLT parameter.

返回值

The value of the parameter (as a string), or FALSE if it's not set.

参见

  • XSLTProcessor::setParameter() - Set value for a parameter
  • XSLTProcessor::removeParameter() - Remove parameter

XSLTProcessor::__construct
XsltProcessor::getSecurityPrefs
XSLTProcessor


Get security preferences

XSLTProcessor::getParameter
XSLTProcessor::hasExsltSupport
XSLTProcessor
PHP Manual

XsltProcessor::getSecurityPrefs

(PHP >= 5.4.0)

XsltProcessor::getSecurityPrefs — Get security preferences

说明

public int XsltProcessor::getSecurityPrefs ( void )

Gets the security preferences.

参数

此函数没有参数。

返回值

A bitmask consisting of XSL_SECPREF_READ_FILE, XSL_SECPREF_WRITE_FILE, XSL_SECPREF_CREATE_DIRECTORY, XSL_SECPREF_READ_NETWORK, XSL_SECPREF_WRITE_NETWORK.

XSLTProcessor::getParameter
XSLTProcessor::hasExsltSupport
XSLTProcessor


Determine if PHP has EXSLT support

XsltProcessor::getSecurityPrefs
XSLTProcessor::importStylesheet
XSLTProcessor
PHP Manual

XSLTProcessor::hasExsltSupport

(PHP 5 >= 5.0.4, PHP 7)

XSLTProcessor::hasExsltSupport — Determine if PHP has EXSLT support

说明

bool XSLTProcessor::hasExsltSupport ( void )

This method determines if PHP was built with the » EXSLT library.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Testing EXSLT support

<?php

$proc = new XSLTProcessor;
if (!$proc->hasExsltSupport()) {
    die('EXSLT support not available');
}

// do EXSLT stuff here ..

?>

XsltProcessor::getSecurityPrefs
XSLTProcessor::importStylesheet
XSLTProcessor


Import stylesheet

XSLTProcessor::hasExsltSupport
XSLTProcessor::registerPHPFunctions
XSLTProcessor
PHP Manual

XSLTProcessor::importStylesheet

(PHP 5, PHP 7)

XSLTProcessor::importStylesheet — Import stylesheet

说明

public bool XSLTProcessor::importStylesheet ( object $stylesheet )

This method imports the stylesheet into the XSLTProcessor for transformations.

参数

stylesheet

The imported style sheet as a DOMDocument or SimpleXMLElement object.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

更新日志

版本 | 说明
5.2.8 | Accepts SimpleXMLElement again which was broken since PHP 5.2.6.

XSLTProcessor::hasExsltSupport
XSLTProcessor::registerPHPFunctions
XSLTProcessor


Enables the ability to use PHP functions as XSLT functions

XSLTProcessor::importStylesheet
XSLTProcessor::removeParameter
XSLTProcessor
PHP Manual

XSLTProcessor::registerPHPFunctions

(PHP 5 >= 5.0.4, PHP 7)

XSLTProcessor::registerPHPFunctions — Enables the ability to use PHP functions as XSLT functions

说明

void XSLTProcessor::registerPHPFunctions ([ mixed $restrict ] )

This method enables the ability to use PHP functions as XSLT functions within XSL stylesheets.

参数

restrict

Use this parameter to only allow certain functions to be called from XSLT.

This parameter can be either a string (a function name) or an array of functions.

返回值

没有返回值。

范例

Example #1 Simple PHP Function call from a stylesheet

<?php
$xml = <<<EOB
<allusers>
 <user>
  <uid>bob</uid>
 </user>
 <user>
  <uid>joe</uid>
 </user>
</allusers>
EOB;
$xsl = <<<EOB
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns:php="http://php.net/xsl">
<xsl:output method="html" encoding="utf-8" indent="yes"/>
 <xsl:template match="allusers">
  <html><body>
    <h2>Users</h2>
    <table>
    <xsl:for-each select="user">
      <tr><td>
        <xsl:value-of
             select="php:function('ucfirst',string(uid))"/>
      </td></tr>
    </xsl:for-each>
    </table>
  </body></html>
 </xsl:template>
</xsl:stylesheet>
EOB;
$xmldoc = DOMDocument::loadXML($xml);
$xsldoc = DOMDocument::loadXML($xsl);

$proc = new XSLTProcessor();
$proc->registerPHPFunctions();
$proc->importStyleSheet($xsldoc);
echo $proc->transformToXML($xmldoc);
?>

更新日志

版本 | 说明
5.1.0 | The restrict parameter was added.

XSLTProcessor::importStylesheet
XSLTProcessor::removeParameter
XSLTProcessor


Remove parameter

XSLTProcessor::registerPHPFunctions
XSLTProcessor::setParameter
XSLTProcessor
PHP Manual

XSLTProcessor::removeParameter

(PHP 5, PHP 7)

XSLTProcessor::removeParameter — Remove parameter

说明

bool XSLTProcessor::removeParameter ( string $namespaceURI , string $localName )

Removes a parameter, if set. This will make the processor use the default value for the parameter as specified in the stylesheet.

参数

namespaceURI

The namespace URI of the XSLT parameter.

localName

The local name of the XSLT parameter.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

参见

  • XSLTProcessor::setParameter() - Set value for a parameter
  • XSLTProcessor::getParameter() - Get value of a parameter

XSLTProcessor::registerPHPFunctions
XSLTProcessor::setParameter
XSLTProcessor


Set value for a parameter

XSLTProcessor::removeParameter
XSLTProcessor::setProfiling
XSLTProcessor
PHP Manual

XSLTProcessor::setParameter

(PHP 5, PHP 7)

XSLTProcessor::setParameter — Set value for a parameter

说明

bool XSLTProcessor::setParameter ( string $namespace , string $name , string $value )
bool XSLTProcessor::setParameter ( string $namespace , array $options )

Sets the value of one or more parameters to be used in subsequent transformations with XSLTProcessor. If the parameter doesn't exist in the stylesheet it will be ignored.

参数

namespace

The namespace URI of the XSLT parameter.

name

The local name of the XSLT parameter.

value

The new value of the XSLT parameter.

options

An array of name => value pairs. This syntax is available since PHP 5.1.0.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Changing the owner before the transformation

<?php

$collections = array(
    'Marc Rutkowski' => 'marc',
    'Olivier Parmentier' => 'olivier'
);

$xsl = new DOMDocument;
$xsl->load('collection.xsl');

// Configure the transformer
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl); // attach the xsl rules

foreach ($collections as $name => $file) {
    // Load the XML source
    $xml = new DOMDocument;
    $xml->load('collection_' . $file . '.xml');

    $proc->setParameter('', 'owner', $name);
    $proc->transformToURI($xml, 'file:///tmp/' . $file . '.html');
}

?>

参见

  • XSLTProcessor::getParameter() - Get value of a parameter
  • XSLTProcessor::removeParameter() - Remove parameter

XSLTProcessor::removeParameter
XSLTProcessor::setProfiling
XSLTProcessor


Sets profiling output file

XSLTProcessor::setParameter
XsltProcessor::setSecurityPrefs
XSLTProcessor
PHP Manual

XSLTProcessor::setProfiling

(PHP >= 5.3.0)

XSLTProcessor::setProfiling — Sets profiling output file

说明

bool XSLTProcessor::setProfiling ( string $filename )

Sets the file to output profiling information when processing a stylesheet.

参数

filename

Path to the file to dump profiling information.

返回值

成功时返回 TRUE， 或者在失败时返回 FALSE。

范例

Example #1 Example profiling output

<?php
// Load the XML source
$xml = new DOMDocument;
$xml->load('collection.xml');

$xsl = new DOMDocument;
$xsl->load('collection.xsl');

// Configure the transformer
$proc = new XSLTProcessor;
$proc->setProfiling('profiling.txt');
$proc->importStyleSheet($xsl); // attach the xsl rules

echo trim($proc->transformToDoc($xml)->firstChild->wholeText);
?>

The above code will produce the following information in the profiling file:

number               match                name      mode  Calls Tot 100us Avg

    0                   cd                                    2      3      1
    1           collection                                    1      1      1

                         Total                                3      4

XSLTProcessor::setParameter
XsltProcessor::setSecurityPrefs
XSLTProcessor


Set security preferences

XSLTProcessor::setProfiling
XSLTProcessor::transformToDoc
XSLTProcessor
PHP Manual

XsltProcessor::setSecurityPrefs

(PHP >= 5.4.0)

XsltProcessor::setSecurityPrefs — Set security preferences

说明

public int XsltProcessor::setSecurityPrefs ( int $securityPrefs )

Sets the security preferences.

参数

securityPrefs

The new security preferences. The following constants can be ORed: XSL_SECPREF_READ_FILE, XSL_SECPREF_WRITE_FILE, XSL_SECPREF_CREATE_DIRECTORY, XSL_SECPREF_READ_NETWORK, XSL_SECPREF_WRITE_NETWORK. Alternatively, XSL_SECPREF_NONE or XSL_SECPREF_DEFAULT can be passed.

返回值

Returns the old security preferences.

XSLTProcessor::setProfiling
XSLTProcessor::transformToDoc
XSLTProcessor


Transform to a DOMDocument

XsltProcessor::setSecurityPrefs
XSLTProcessor::transformToUri
XSLTProcessor
PHP Manual

XSLTProcessor::transformToDoc

(PHP 5, PHP 7)

XSLTProcessor::transformToDoc — Transform to a DOMDocument

说明

DOMDocument XSLTProcessor::transformToDoc ( DOMNode $doc )

Transforms the source node to a DOMDocument applying the stylesheet given by the XSLTProcessor::importStylesheet() method.

参数

doc

The node to be transformed.

返回值

The resulting DOMDocument or FALSE on error.

范例

Example #1 Transforming to a DOMDocument

<?php

// Load the XML source
$xml = new DOMDocument;
$xml->load('collection.xml');

$xsl = new DOMDocument;
$xsl->load('collection.xsl');

// Configure the transformer
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl); // attach the xsl rules

echo trim($proc->transformToDoc($xml)->firstChild->wholeText);

?>

以上例程会输出：

Hey! Welcome to Nicolas Eliaszewicz's sweet CD collection!

参见

  • XSLTProcessor::transformToUri() - Transform to URI
  • XSLTProcessor::transformToXml() - Transform to XML

XsltProcessor::setSecurityPrefs
XSLTProcessor::transformToUri
XSLTProcessor


Transform to URI

XSLTProcessor::transformToDoc
XSLTProcessor::transformToXML
XSLTProcessor
PHP Manual

XSLTProcessor::transformToUri

(PHP 5, PHP 7)

XSLTProcessor::transformToUri — Transform to URI

说明

int XSLTProcessor::transformToURI ( DOMDocument $doc , string $uri )

Transforms the source node to an URI applying the stylesheet given by the XSLTProcessor::importStylesheet() method.

参数

doc

The document to transform.

uri

The target URI for the transformation.

返回值

Returns the number of bytes written or FALSE if an error occurred.

范例

Example #1 Transforming to a HTML file

<?php

// Load the XML source
$xml = new DOMDocument;
$xml->load('collection.xml');

$xsl = new DOMDocument;
$xsl->load('collection.xsl');

// Configure the transformer
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl); // attach the xsl rules

$proc->transformToURI($xml, 'file:///tmp/out.html');

?>

参见

  • XSLTProcessor::transformToDoc() - Transform to a DOMDocument
  • XSLTProcessor::transformToXml() - Transform to XML

XSLTProcessor::transformToDoc
XSLTProcessor::transformToXML
XSLTProcessor


Transform to XML

XSLTProcessor::transformToUri
图形用户界面(GUI) 扩展
XSLTProcessor
PHP Manual

XSLTProcessor::transformToXML

(PHP 5, PHP 7)

XSLTProcessor::transformToXML — Transform to XML

说明

string XSLTProcessor::transformToXML ( object $doc )

Transforms the source node to a string applying the stylesheet given by the xsltprocessor::importStylesheet() method.

参数

doc

The DOMDocument or SimpleXMLElement object to be transformed.

返回值

The result of the transformation as a string or FALSE on error.

范例

Example #1 Transforming to a string

<?php

// Load the XML source
$xml = new DOMDocument;
$xml->load('collection.xml');

$xsl = new DOMDocument;
$xsl->load('collection.xsl');

// Configure the transformer
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl); // attach the xsl rules

echo $proc->transformToXML($xml);

?>

以上例程会输出：

Hey! Welcome to Nicolas Eliaszewicz's sweet CD collection!

<h1>Fight for your mind</h1><h2>by Ben Harper - 1995</h2><hr>
<h1>Electric Ladyland</h1><h2>by Jimi Hendrix - 1997</h2><hr>

参见

  • XSLTProcessor::transformToDoc() - Transform to a DOMDocument
  • XSLTProcessor::transformToUri() - Transform to URI

XSLTProcessor::transformToUri
图形用户界面(GUI) 扩展
XSLTProcessor


图形用户界面(GUI) 扩展

  • UI
    • 简介
    • 安装／配置
    • UI\Point — Represents a position (x,y)
    • UI\Size — Represents dimenstions (width, height)
    • UI\Window — Window
    • UI\Control — Control
    • UI\Menu — Menu
    • UI\MenuItem — Menu Item
    • UI\Area — Area
    • UI\Executor — Execution Scheduler
    • UI\Controls\Tab — Tab Control
    • UI\Controls\Check — Check Control
    • UI\Controls\Button — Button Control
    • UI\Controls\ColorButton — ColorButton Control
    • UI\Controls\Label — Label Control
    • UI\Controls\Entry — Entry Control
    • UI\Controls\MultilineEntry — MultilineEntry Control
    • UI\Controls\Spin — Spin Control
    • UI\Controls\Slider — Slider Control
    • UI\Controls\Progress — Progress Control
    • UI\Controls\Separator — Control Separator
    • UI\Controls\Combo — Combo Control
    • UI\Controls\EditableCombo — EdiableCombo Control
    • UI\Controls\Radio — Radio Control
    • UI\Controls\Picker — Picker Control
    • UI\Controls\Form — Control Form (Arrangement)
    • UI\Controls\Grid — Control Grid (Arrangement)
    • UI\Controls\Group — Control Group (Arrangement)
    • UI\Controls\Box — Control Box (Arrangement)
    • UI\Draw\Pen — Draw Pen
    • UI\Draw\Path — Draw Path
    • UI\Draw\Matrix — Draw Matrix
    • UI\Draw\Color — Color Representation
    • UI\Draw\Stroke — Draw Stroke
    • UI\Draw\Brush — Brushes
    • UI\Draw\Brush\Gradient — Gradient Brushes
    • UI\Draw\Brush\LinearGradient — Linear Gradient
    • UI\Draw\Brush\RadialGradient — Radial Gradient
    • UI\Draw\Text\Layout — Represents Text Layout
    • UI\Draw\Text\Font — Represents a Font
    • UI\Draw\Text\Font\Descriptor — Font Descriptor
    • UI 函数
    • UI\Draw\Text\Font\Weight — Font Weight Settings
    • UI\Draw\Text\Font\Italic — Italic Font Settings
    • UI\Draw\Text\Font\Stretch — Font Stretch Settings
    • UI\Draw\Line\Cap — Line Cap Settings
    • UI\Draw\Line\Join — Line Join Settings
    • UI\Key — Key Identifiers
    • UI\Exception\InvalidArgumentException — InvalidArgumentException
    • UI\Exception\RuntimeException — RuntimeException
XSLTProcessor::transformToXML
UI
函数参考


UI

  • 简介
  • 安装／配置
    • 需求
    • 安装
  • UI\Point — Represents a position (x,y)
    • UI\Point::at — Size Coercion
    • UI\Point::__construct — Construct a new Point
    • UI\Point::getX — Retrieves X
    • UI\Point::getY — Retrieves Y
    • UI\Point::setX — Set X
    • UI\Point::setY — Set Y
  • UI\Size — Represents dimenstions (width, height)
    • UI\Size::__construct — Construct a new Size
    • UI\Size::getHeight — Retrieves Height
    • UI\Size::getWidth — Retrives Width
    • UI\Size::of — Point Coercion
    • UI\Size::setHeight — Set Height
    • UI\Size::setWidth — Set Width
  • UI\Window — Window
    • UI\Window::add — Add a Control
    • UI\Window::__construct — Construct a new Window
    • UI\Window::error — Show Error Box
    • UI\Window::getSize — Get Window Size
    • UI\Window::getTitle — Get Title
    • UI\Window::hasBorders — Border Detection
    • UI\Window::hasMargin — Margin Detection
    • UI\Window::isFullScreen — Full Screen Detection
    • UI\Window::msg — Show Message Box
    • UI\Window::onClosing — Closing Callback
    • UI\Window::open — Open Dialog
    • UI\Window::save — Save Dialog
    • UI\Window::setBorders — Border Use
    • UI\Window::setFullScreen — Full Screen Use
    • UI\Window::setMargin — Margin Use
    • UI\Window::setSize — Set Size
    • UI\Window::setTitle — Window Title
  • UI\Control — Control
    • UI\Control::destroy — Destroy Control
    • UI\Control::disable — Disable Control
    • UI\Control::enable — Enable Control
    • UI\Control::getParent — Get Parent Control
    • UI\Control::getTopLevel — Get Top Level
    • UI\Control::hide — Hide Control
    • UI\Control::isEnabled — Determine if Control is enabled
    • UI\Control::isVisible — Determine if Control is visible
    • UI\Control::setParent — Set Parent Control
    • UI\Control::show — Control Show
  • UI\Menu — Menu
    • UI\Menu::append — Append Menu Item
    • UI\Menu::appendAbout — Append About Menu Item
    • UI\Menu::appendCheck — Append Checkable Menu Item
    • UI\Menu::appendPreferences — Append Preferences Menu Item
    • UI\Menu::appendQuit — Append Quit Menu Item
    • UI\Menu::appendSeparator — Append Menu Item Separator
    • UI\Menu::__construct — Construct a new Menu
  • UI\MenuItem — Menu Item
    • UI\MenuItem::disable — Disable Menu Item
    • UI\MenuItem::enable — Enable Menu Item
    • UI\MenuItem::isChecked — Detect Checked
    • UI\MenuItem::onClick — On Click Callback
    • UI\MenuItem::setChecked — Set Checked
  • UI\Area — Area
    • UI\Area::onDraw — Draw Callback
    • UI\Area::onKey — Key Callback
    • UI\Area::onMouse — Mouse Callback
    • UI\Area::redraw — Redraw Area
    • UI\Area::scrollTo — Area Scroll
    • UI\Area::setSize — Set Size
  • UI\Executor — Execution Scheduler
    • UI\Executor::__construct — Construct a new Executor
    • UI\Executor::kill — Stop Executor
    • UI\Executor::onExecute — Execution Callback
    • UI\Executor::setInterval — Interval Manipulation
  • UI\Controls\Tab — Tab Control
    • UI\Controls\Tab::append — Append Page
    • UI\Controls\Tab::delete — Delete Page
    • UI\Controls\Tab::hasMargin — Margin Detection
    • UI\Controls\Tab::insertAt — Insert Page
    • UI\Controls\Tab::pages — Page Count
    • UI\Controls\Tab::setMargin — Set Margin
  • UI\Controls\Check — Check Control
    • UI\Controls\Check::__construct — Construct a new Check
    • UI\Controls\Check::getText — Get Text
    • UI\Controls\Check::isChecked — Checked Detection
    • UI\Controls\Check::onToggle — Toggle Callback
    • UI\Controls\Check::setChecked — Set Checked
    • UI\Controls\Check::setText — Set Text
  • UI\Controls\Button — Button Control
    • UI\Controls\Button::__construct — Construct a new Button
    • UI\Controls\Button::getText — Get Text
    • UI\Controls\Button::onClick — Click Handler
    • UI\Controls\Button::setText — Set Text
  • UI\Controls\ColorButton — ColorButton Control
    • UI\Controls\ColorButton::getColor — Get Color
    • UI\Controls\ColorButton::onChange — Change Handler
    • UI\Controls\ColorButton::setColor — Set Color
  • UI\Controls\Label — Label Control
    • UI\Controls\Label::__construct — Construct a new Label
    • UI\Controls\Label::getText — Get Text
    • UI\Controls\Label::setText — Set Text
  • UI\Controls\Entry — Entry Control
    • UI\Controls\Entry::__construct — Construct a new Entry
    • UI\Controls\Entry::getText — Get Text
    • UI\Controls\Entry::isReadOnly — Detect Read Only
    • UI\Controls\Entry::onChange — Change Handler
    • UI\Controls\Entry::setReadOnly — Set Read Only
    • UI\Controls\Entry::setText — Set Text
  • UI\Controls\MultilineEntry — MultilineEntry Control
    • UI\Controls\MultilineEntry::append — Append Text
    • UI\Controls\MultilineEntry::__construct — Construct a new Multiline Entry
    • UI\Controls\MultilineEntry::getText — Get Text
    • UI\Controls\MultilineEntry::isReadOnly — Read Only Detection
    • UI\Controls\MultilineEntry::onChange — Change Handler
    • UI\Controls\MultilineEntry::setReadOnly — Set Read Only
    • UI\Controls\MultilineEntry::setText — Set Text
  • UI\Controls\Spin — Spin Control
    • UI\Controls\Spin::__construct — Construct a new Spin
    • UI\Controls\Spin::getValue — Get Value
    • UI\Controls\Spin::onChange — Change Handler
    • UI\Controls\Spin::setValue — Set Value
  • UI\Controls\Slider — Slider Control
    • UI\Controls\Slider::__construct — Construct a new Slider
    • UI\Controls\Slider::getValue — Get Value
    • UI\Controls\Slider::onChange — Change Handler
    • UI\Controls\Slider::setValue — Set Value
  • UI\Controls\Progress — Progress Control
    • UI\Controls\Progress::getValue — Get Value
    • UI\Controls\Progress::setValue — Set Value
  • UI\Controls\Separator — Control Separator
    • UI\Controls\Separator::__construct — Construct a new Separator
  • UI\Controls\Combo — Combo Control
    • UI\Controls\Combo::append — Append Option
    • UI\Controls\Combo::getSelected — Get Selected Option
    • UI\Controls\Combo::onSelected — Selected Handler
    • UI\Controls\Combo::setSelected — Set Selected Option
  • UI\Controls\EditableCombo — EdiableCombo Control
    • UI\Controls\EditableCombo::append — Append Option
    • UI\Controls\EditableCombo::getText — Get Text
    • UI\Controls\EditableCombo::onChange — Change Handler
    • UI\Controls\EditableCombo::setText — Set Text
  • UI\Controls\Radio — Radio Control
    • UI\Controls\Radio::append — Append Option
    • UI\Controls\Radio::getSelected — Get Selected Option
    • UI\Controls\Radio::onSelected — Selected Handler
    • UI\Controls\Radio::setSelected — Set Selected Option
  • UI\Controls\Picker — Picker Control
    • UI\Controls\Picker::__construct — Construct a new Picker
  • UI\Controls\Form — Control Form (Arrangement)
    • UI\Controls\Form::append — Append Control
    • UI\Controls\Form::delete — Delete Control
    • UI\Controls\Form::isPadded — Padding Detection
    • UI\Controls\Form::setPadded — Set Padding
  • UI\Controls\Grid — Control Grid (Arrangement)
    • UI\Controls\Grid::append — Append Control
    • UI\Controls\Grid::isPadded — Padding Detection
    • UI\Controls\Grid::setPadded — Set Padding
  • UI\Controls\Group — Control Group (Arrangement)
    • UI\Controls\Group::append — Append Control
    • UI\Controls\Group::__construct — Construct a new Group
    • UI\Controls\Group::getTitle — Get Title
    • UI\Controls\Group::hasMargin — Margin Detection
    • UI\Controls\Group::setMargin — Set Margin
    • UI\Controls\Group::setTitle — Set Title
  • UI\Controls\Box — Control Box (Arrangement)
    • UI\Controls\Box::append — Append Control
    • UI\Controls\Box::__construct — Construct a new Box
    • UI\Controls\Box::delete — Delete Control
    • UI\Controls\Box::getOrientation — Get Orientation
    • UI\Controls\Box::isPadded — Padding Detection
    • UI\Controls\Box::setPadded — Set Padding
  • UI\Draw\Pen — Draw Pen
    • UI\Draw\Pen::clip — Clip a Path
    • UI\Draw\Pen::fill — Fill a Path
    • UI\Draw\Pen::restore — Restore
    • UI\Draw\Pen::save — Save
    • UI\Draw\Pen::stroke — Stroke a Path
    • UI\Draw\Pen::transform — Matrix Transform
    • UI\Draw\Pen::write — Draw Text at Point
  • UI\Draw\Path — Draw Path
    • UI\Draw\Path::addRectangle — Draw a Rectangle
    • UI\Draw\Path::arcTo — Draw an Arc
    • UI\Draw\Path::bezierTo — Draw Bezier Curve
    • UI\Draw\Path::closeFigure — Close Figure
    • UI\Draw\Path::__construct — Construct a new Path
    • UI\Draw\Path::end — Finalize Path
    • UI\Draw\Path::lineTo — Draw a Line
    • UI\Draw\Path::newFigure — Draw Figure
    • UI\Draw\Path::newFigureWithArc — Draw Figure with Arc
  • UI\Draw\Matrix — Draw Matrix
    • UI\Draw\Matrix::invert — Invert Matrix
    • UI\Draw\Matrix::isInvertible — Invertible Detection
    • UI\Draw\Matrix::multiply — Multiply Matrix
    • UI\Draw\Matrix::rotate — Rotate Matrix
    • UI\Draw\Matrix::scale — Scale Matrix
    • UI\Draw\Matrix::skew — Skew Matrix
    • UI\Draw\Matrix::translate — Translate Matrix
  • UI\Draw\Color — Color Representation
    • UI\Draw\Color::__construct — Construct new Color
    • UI\Draw\Color::getChannel — Color Manipulation
    • UI\Draw\Color::setChannel — Color Manipulation
  • UI\Draw\Stroke — Draw Stroke
    • UI\Draw\Stroke::__construct — Construct a new Stroke
    • UI\Draw\Stroke::getCap — Get Line Cap
    • UI\Draw\Stroke::getJoin — Get Line Join
    • UI\Draw\Stroke::getMiterLimit — Get Miter Limit
    • UI\Draw\Stroke::getThickness — Get Thickness
    • UI\Draw\Stroke::setCap — Set Line Cap
    • UI\Draw\Stroke::setJoin — Set Line Join
    • UI\Draw\Stroke::setMiterLimit — Set Miter Limit
    • UI\Draw\Stroke::setThickness — Set Thickness
  • UI\Draw\Brush — Brushes
    • UI\Draw\Brush::__construct — Construct a new Brush
    • UI\Draw\Brush::getColor — Get Color
    • UI\Draw\Brush::setColor — Set Color
  • UI\Draw\Brush\Gradient — Gradient Brushes
    • UI\Draw\Brush\Gradient::addStop — Stop Manipulation
    • UI\Draw\Brush\Gradient::delStop — Stop Manipulation
    • UI\Draw\Brush\Gradient::setStop — Stop Manipulation
  • UI\Draw\Brush\LinearGradient — Linear Gradient
    • UI\Draw\Brush\LinearGradient::__construct — Construct a Linear Gradient
  • UI\Draw\Brush\RadialGradient — Radial Gradient
    • UI\Draw\Brush\RadialGradient::__construct — Construct a new Radial Gradient
  • UI\Draw\Text\Layout — Represents Text Layout
    • UI\Draw\Text\Layout::__construct — Construct a new Text Layout
    • UI\Draw\Text\Layout::setColor — Set Color
    • UI\Draw\Text\Layout::setWidth — Set Width
  • UI\Draw\Text\Font — Represents a Font
    • UI\Draw\Text\Font::__construct — Construct a new Font
    • UI\Draw\Text\Font::getAscent — Font Metrics
    • UI\Draw\Text\Font::getDescent — Font Metrics
    • UI\Draw\Text\Font::getLeading — Font Metrics
    • UI\Draw\Text\Font::getUnderlinePosition — Font Metrics
    • UI\Draw\Text\Font::getUnderlineThickness — Font Metrics
  • UI\Draw\Text\Font\Descriptor — Font Descriptor
    • UI\Draw\Text\Font\Descriptor::__construct — Construct a new Font Descriptor
    • UI\Draw\Text\Font\Descriptor::getFamily — Get Font Family
    • UI\Draw\Text\Font\Descriptor::getItalic — Style Detection
    • UI\Draw\Text\Font\Descriptor::getSize — Size Detection
    • UI\Draw\Text\Font\Descriptor::getStretch — Style Detection
    • UI\Draw\Text\Font\Descriptor::getWeight — Weight Detection
  • UI 函数
    • UI\Draw\Text\Font\fontFamilies — Retrieve Font Families
    • UI\quit — Quit UI Loop
    • UI\run — Enter UI Loop
  • UI\Draw\Text\Font\Weight — Font Weight Settings
  • UI\Draw\Text\Font\Italic — Italic Font Settings
  • UI\Draw\Text\Font\Stretch — Font Stretch Settings
  • UI\Draw\Line\Cap — Line Cap Settings
  • UI\Draw\Line\Join — Line Join Settings
  • UI\Key — Key Identifiers
  • UI\Exception\InvalidArgumentException — InvalidArgumentException
  • UI\Exception\RuntimeException — RuntimeException
图形用户界面(GUI) 扩展
简介
图形用户界面(GUI) 扩展


简介

This extension wraps libui to provide an OO API for the cross platform development of native look-and-feel user interfaces .

UI
安装／配置
UI


安装／配置

Table of Contents

  • 需求
  • 安装
简介
需求
UI


需求

Installation requires the libui library, and PHP 7 or newer.

This extension requires the » libui library version 0.1.0 or higher to be installed. See the libui documentation for a list of prerequisites.

安装／配置
安装
安装／配置


安装

此 » PECL 扩展未与 PHP 捆绑。

安装此 PECL 扩展相关的信息可在手册中标题为 PECL 扩展的安装章节中找到。更多信息如新的发行版本、下载、源文件、 维护人员信息及变更日志等，都在此处： » http://pecl.php.net/package/ui.

Windows binaries (DLL files) for this PECL extension are available from the PECL website.

需求
UI\Point
安装／配置


Represents a position (x,y)

(PHP 7, UI 0.9.9)

简介

Points are used throughout UI to represent co-ordinates on a screen, control, or area.

类摘要

final UI\Point {
/* 属性 */
public $x ;
public $y ;
/* Constructor */
public __construct ( float $x , float $y )
/* 方法 */
public static UI\Point at ( float $point )
public static UI\Point at ( UI\Size $size )
public float getX ( void )
public float getY ( void )
public setX ( float $point )
public setY ( float $point )
}

属性

x

Holds the X co-ordinate, can be read/written directly

y

Holds the Y co-ordinate, can be read/written directly

Table of Contents

  • UI\Point::at — Size Coercion
  • UI\Point::__construct — Construct a new Point
  • UI\Point::getX — Retrieves X
  • UI\Point::getY — Retrieves Y
  • UI\Point::setX — Set X
  • UI\Point::setY — Set Y
安装
UI\Point::at
UI


Size Coercion

UI\Point
UI\Point::__construct
UI\Point
PHP Manual

UI\Point::at

(PHP 7, UI 1.0.2)

UI\Point::at — Size Coercion

说明

public static UI\Point UI\Point::at ( float $point )
public static UI\Point UI\Point::at ( UI\Size $size )

Shall return a UI\Point object where x and y are equal to those supplied, either in float or UI\Size form

参数

point

The value for x and y

size

The Size to convert

返回值

The resulting Point

UI\Point
UI\Point::__construct
UI\Point


Construct a new Point

UI\Point::at
UI\Point::getX
UI\Point
PHP Manual

UI\Point::__construct

(PHP 7, UI 0.9.9)

UI\Point::__construct — Construct a new Point

说明

public UI\Point::__construct ( float $x , float $y )

Construct a new Point using new co-ordinates

参数

x

The new X co-ordinate

y

The new Y co-ordinate

UI\Point::at
UI\Point::getX
UI\Point


Retrieves X

UI\Point::__construct
UI\Point::getY
UI\Point
PHP Manual

UI\Point::getX

(PHP 7, UI 0.9.9)

UI\Point::getX — Retrieves X

说明

public float UI\Point::getX ( void )

Retrieves the X co-ordinate

参数

此函数没有参数。

返回值

The current X co-ordinate

UI\Point::__construct
UI\Point::getY
UI\Point


Retrieves Y

UI\Point::getX
UI\Point::setX
UI\Point
PHP Manual

UI\Point::getY

(PHP 7, UI 0.9.9)

UI\Point::getY — Retrieves Y

说明

public float UI\Point::getY ( void )

Retrieves the Y co-ordinate

参数

此函数没有参数。

返回值

The current Y co-ordinate

UI\Point::getX
UI\Point::setX
UI\Point


Set X

UI\Point::getY
UI\Point::setY
UI\Point
PHP Manual

UI\Point::setX

(PHP 7, UI 0.9.9)

UI\Point::setX — Set X

说明

public UI\Point::setX ( float $point )

Set the X co-ordinate

参数

point

The new X co-ordinate

返回值

UI\Point::getY
UI\Point::setY
UI\Point


Set Y

UI\Point::setX
UI\Size
UI\Point
PHP Manual

UI\Point::setY

(PHP 7, UI 0.9.9)

UI\Point::setY — Set Y

说明

public UI\Point::setY ( float $point )

Set the Y co-ordinate

参数

point

The new Y co-ordinate

返回值

UI\Point::setX
UI\Size
UI\Point


Represents dimenstions (width, height)

(PHP 7, UI 0.9.9)

简介

Sizes are used throughout UI to represent the size of a screen, control, or area.

类摘要

final UI\Size {
/* 属性 */
public $width ;
public $height ;
/* Constructor */
public __construct ( float $width , float $height )
/* 方法 */
public float getHeight ( void )
public float getWidth ( void )
public static UI\Size of ( float $size )
public static UI\Size of ( UI\Point $point )
public setHeight ( float $size )
public setWidth ( float $size )
}

属性

width

Holds the width, can be read/written directly

height

Holds the height, can be read/written directly

Table of Contents

  • UI\Size::__construct — Construct a new Size
  • UI\Size::getHeight — Retrieves Height
  • UI\Size::getWidth — Retrives Width
  • UI\Size::of — Point Coercion
  • UI\Size::setHeight — Set Height
  • UI\Size::setWidth — Set Width
UI\Point::setY
UI\Size::__construct
UI


Construct a new Size

UI\Size
UI\Size::getHeight
UI\Size
PHP Manual

UI\Size::__construct

(PHP 7, UI 0.9.9)

UI\Size::__construct — Construct a new Size

说明

public UI\Size::__construct ( float $width , float $height )

Construct a new Size using new width and height

参数

width

The new width

height

The new height

UI\Size
UI\Size::getHeight
UI\Size


Retrieves Height

UI\Size::__construct
UI\Size::getWidth
UI\Size
PHP Manual

UI\Size::getHeight

(PHP 7, UI 0.9.9)

UI\Size::getHeight — Retrieves Height

说明

public float UI\Size::getHeight ( void )

Retrieves the Height

参数

此函数没有参数。

返回值

The current Height

UI\Size::__construct
UI\Size::getWidth
UI\Size


Retrives Width

UI\Size::getHeight
UI\Size::of
UI\Size
PHP Manual

UI\Size::getWidth

(PHP 7, UI 0.9.9)

UI\Size::getWidth — Retrives Width

说明

public float UI\Size::getWidth ( void )

Retrieves the Width

参数

此函数没有参数。

返回值

The current Width

UI\Size::getHeight
UI\Size::of
UI\Size


Point Coercion

UI\Size::getWidth
UI\Size::setHeight
UI\Size
PHP Manual

UI\Size::of

(PHP 7, UI 1.0.2)

UI\Size::of — Point Coercion

说明

public static UI\Size UI\Size::of ( float $size )
public static UI\Size UI\Size::of ( UI\Point $point )

Shall return a UI\Size object where width and height are equal to those supplied, either in float or UI\Point form

参数

size

The value for width and height

point

The Point to convert

返回值

The resulting Size

UI\Size::getWidth
UI\Size::setHeight
UI\Size


Set Height

UI\Size::of
UI\Size::setWidth
UI\Size
PHP Manual

UI\Size::setHeight

(PHP 7, UI 0.9.9)

UI\Size::setHeight — Set Height

说明

public UI\Size::setHeight ( float $size )

Set new Height

参数

size

The new Height

返回值

UI\Size::of
UI\Size::setWidth
UI\Size


Set Width

UI\Size::setHeight
UI\Window
UI\Size
PHP Manual

UI\Size::setWidth

(PHP 7, UI 0.9.9)

UI\Size::setWidth — Set Width

说明

public UI\Size::setWidth ( float $size )

Set new Width

参数

size

The new Width

返回值

UI\Size::setHeight
UI\Window
UI\Size


Window

(PHP 7, UI 0.9.9)

简介

Represents a UI Window

类摘要

UI\Window extends UI\Control {
/* 属性 */
protected $controls ;
/* Constructor */
public __construct ( string $title , Size $size [, boolean $menu = false ] )
/* 方法 */
public add ( UI\Control $control )
public error ( string $title , string $msg )
public UI\Size getSize ( void )
public string getTitle ( void )
public bool hasBorders ( void )
public bool hasMargin ( void )
public bool isFullScreen ( void )
public msg ( string $title , string $msg )
protected int onClosing ( void )
public string open ( void )
public string save ( void )
public setBorders ( boolean $borders )
public setFullScreen ( boolean $full )
public setMargin ( boolean $margin )
public setSize ( UI\Size $size )
public setTitle ( string $title )
/* 继承的方法 */
public UI\Control::destroy ( void )
public UI\Control::disable ( void )
public UI\Control::enable ( void )
public UI\Control UI\Control::getParent ( void )
public int UI\Control::getTopLevel ( void )
public UI\Control::hide ( void )
public bool UI\Control::isEnabled ( void )
public bool UI\Control::isVisible ( void )
public UI\Control::setParent ( UI\Control $parent )
public UI\Control::show ( void )
}

属性

controls

Contains controls, should not be manipulated directly

Table of Contents

  • UI\Window::add — Add a Control
  • UI\Window::__construct — Construct a new Window
  • UI\Window::error — Show Error Box
  • UI\Window::getSize — Get Window Size
  • UI\Window::getTitle — Get Title
  • UI\Window::hasBorders — Border Detection
  • UI\Window::hasMargin — Margin Detection
  • UI\Window::isFullScreen — Full Screen Detection
  • UI\Window::msg — Show Message Box
  • UI\Window::onClosing — Closing Callback
  • UI\Window::open — Open Dialog
  • UI\Window::save — Save Dialog
  • UI\Window::setBorders — Border Use
  • UI\Window::setFullScreen — Full Screen Use
  • UI\Window::setMargin — Margin Use
  • UI\Window::setSize — Set Size
  • UI\Window::setTitle — Window Title
UI\Size::setWidth
UI\Window::add
UI


Add a Control

UI\Window
UI\Window::__construct
UI\Window
PHP Manual

UI\Window::add

(PHP 7, UI 0.9.9)

UI\Window::add — Add a Control

说明

public UI\Window::add ( UI\Control $control )

Shall add a Control to this Window

参数

control

The Control to add

返回值

UI\Window
UI\Window::__construct
UI\Window


Construct a new Window

UI\Window::add
UI\Window::error
UI\Window
PHP Manual

UI\Window::__construct

(PHP 7, UI 0.9.9)

UI\Window::__construct — Construct a new Window

说明

public UI\Window::__construct ( string $title , Size $size [, boolean $menu = false ] )

Shall construct a new Window

参数

title

The title of the Window

size

The size of the Window

menu

Menu switch

UI\Window::add
UI\Window::error
UI\Window


Show Error Box

UI\Window::__construct
UI\Window::getSize
UI\Window
PHP Manual

UI\Window::error

(PHP 7, UI 0.9.9)

UI\Window::error — Show Error Box

说明

public UI\Window::error ( string $title , string $msg )

Shall show an error box

参数

title

The title of the error box

msg

The message for the error box

UI\Window::__construct
UI\Window::getSize
UI\Window


Get Window Size

UI\Window::error
UI\Window::getTitle
UI\Window
PHP Manual

UI\Window::getSize

(PHP 7, UI 0.9.9)

UI\Window::getSize — Get Window Size

说明

public UI\Size UI\Window::getSize ( void )

Shall return the size of this Window

参数

此函数没有参数。

返回值

UI\Window::error
UI\Window::getTitle
UI\Window


Get Title

UI\Window::getSize
UI\Window::hasBorders
UI\Window
PHP Manual

UI\Window::getTitle

(PHP 7, UI 0.9.9)

UI\Window::getTitle — Get Title

说明

public string UI\Window::getTitle ( void )

Shall retrieve the title of this Window

参数

此函数没有参数。

返回值

UI\Window::getSize
UI\Window::hasBorders
UI\Window


Border Detection

UI\Window::getTitle
UI\Window::hasMargin
UI\Window
PHP Manual

UI\Window::hasBorders

(PHP 7, UI 0.9.9)

UI\Window::hasBorders — Border Detection

说明

public bool UI\Window::hasBorders ( void )

Shall detect if borders are used on this Window

参数

此函数没有参数。

返回值

UI\Window::getTitle
UI\Window::hasMargin
UI\Window


Margin Detection

UI\Window::hasBorders
UI\Window::isFullScreen
UI\Window
PHP Manual

UI\Window::hasMargin

(PHP 7, UI 0.9.9)

UI\Window::hasMargin — Margin Detection

说明

public bool UI\Window::hasMargin ( void )

Shall detect if margins are used on this Window

参数

此函数没有参数。

返回值

UI\Window::hasBorders
UI\Window::isFullScreen
UI\Window


Full Screen Detection

UI\Window::hasMargin
UI\Window::msg
UI\Window
PHP Manual

UI\Window::isFullScreen

(PHP 7, UI 0.9.9)

UI\Window::isFullScreen — Full Screen Detection

说明

public bool UI\Window::isFullScreen ( void )

Shall detect if this Window us using the whole screen

参数

此函数没有参数。

返回值

UI\Window::hasMargin
UI\Window::msg
UI\Window


Show Message Box

UI\Window::isFullScreen
UI\Window::onClosing
UI\Window
PHP Manual

UI\Window::msg

(PHP 7, UI 0.9.9)

UI\Window::msg — Show Message Box

说明

public UI\Window::msg ( string $title , string $msg )

Shall show a message box

参数

title

The title of the message box

msg

The message

UI\Window::isFullScreen
UI\Window::onClosing
UI\Window


Closing Callback

UI\Window::msg
UI\Window::open
UI\Window
PHP Manual

UI\Window::onClosing

(PHP 7, UI 0.9.9)

UI\Window::onClosing — Closing Callback

说明

protected int UI\Window::onClosing ( void )

Should gracefully destroy this Window

参数

此函数没有参数。

返回值

UI\Window::msg
UI\Window::open
UI\Window


Open Dialog

UI\Window::onClosing
UI\Window::save
UI\Window
PHP Manual

UI\Window::open

(PHP 7, UI 0.9.9)

UI\Window::open — Open Dialog

说明

public string UI\Window::open ( void )

Shall show an open file dialog

参数

此函数没有参数。

返回值

Returns the name of the file selected for opening

UI\Window::onClosing
UI\Window::save
UI\Window


Save Dialog

UI\Window::open
UI\Window::setBorders
UI\Window
PHP Manual

UI\Window::save

(PHP 7, UI 0.9.9)

UI\Window::save — Save Dialog

说明

public string UI\Window::save ( void )

Shall show a save dialog

参数

此函数没有参数。

返回值

Returns the file name selecting for saving

UI\Window::open
UI\Window::setBorders
UI\Window


Border Use

UI\Window::save
UI\Window::setFullScreen
UI\Window
PHP Manual

UI\Window::setBorders

(PHP 7, UI 0.9.9)

UI\Window::setBorders — Border Use

说明

public UI\Window::setBorders ( boolean $borders )

Shall enable or disable the use of borders on this Window

参数

borders

UI\Window::save
UI\Window::setFullScreen
UI\Window


Full Screen Use

UI\Window::setBorders
UI\Window::setMargin
UI\Window
PHP Manual

UI\Window::setFullScreen

(PHP 7, UI 0.9.9)

UI\Window::setFullScreen — Full Screen Use

说明

public UI\Window::setFullScreen ( boolean $full )

Shall enable or disable the use of the full screen for this Window

Warning

本函数还未编写文档，仅有参数列表。

参数

full

UI\Window::setBorders
UI\Window::setMargin
UI\Window


Margin Use

UI\Window::setFullScreen
UI\Window::setSize
UI\Window
PHP Manual

UI\Window::setMargin

(PHP 7, UI 0.9.9)

UI\Window::setMargin — Margin Use

说明

public UI\Window::setMargin ( boolean $margin )

Shall enable or disable the use of margins for this Window

参数

margin

UI\Window::setFullScreen
UI\Window::setSize
UI\Window


Set Size

UI\Window::setMargin
UI\Window::setTitle
UI\Window
PHP Manual

UI\Window::setSize

(PHP 7, UI 0.9.9)

UI\Window::setSize — Set Size

说明

public UI\Window::setSize ( UI\Size $size )

Shall set the size of this Window

参数

size

返回值

UI\Window::setMargin
UI\Window::setTitle
UI\Window


Window Title

UI\Window::setSize
UI\Control
UI\Window
PHP Manual

UI\Window::setTitle

(PHP 7, UI 0.9.9)

UI\Window::setTitle — Window Title

说明

public UI\Window::setTitle ( string $title )

Shall set the title for this Window

参数

title

The new title

UI\Window::setSize
UI\Control
UI\Window


Control

(PHP 7, UI 0.9.9)

简介

This is the closed base class for all UI Controls.

类摘要

final UI\Control {
/* 方法 */
public destroy ( void )
public disable ( void )
public enable ( void )
public UI\Control getParent ( void )
public int getTopLevel ( void )
public hide ( void )
public bool isEnabled ( void )
public bool isVisible ( void )
public setParent ( UI\Control $parent )
public show ( void )
}

Table of Contents

  • UI\Control::destroy — Destroy Control
  • UI\Control::disable — Disable Control
  • UI\Control::enable — Enable Control
  • UI\Control::getParent — Get Parent Control
  • UI\Control::getTopLevel — Get Top Level
  • UI\Control::hide — Hide Control
  • UI\Control::isEnabled — Determine if Control is enabled
  • UI\Control::isVisible — Determine if Control is visible
  • UI\Control::setParent — Set Parent Control
  • UI\Control::show — Control Show
UI\Window::setTitle
UI\Control::destroy
UI


Destroy Control

UI\Control
UI\Control::disable
UI\Control
PHP Manual

UI\Control::destroy

(PHP 7, UI 0.9.9)

UI\Control::destroy — Destroy Control

说明

public UI\Control::destroy ( void )

Shall destroy this Control

参数

此函数没有参数。

返回值

UI\Control
UI\Control::disable
UI\Control


Disable Control

UI\Control::destroy
UI\Control::enable
UI\Control
PHP Manual

UI\Control::disable

(PHP 7, UI 0.9.9)

UI\Control::disable — Disable Control

说明

public UI\Control::disable ( void )

Shall disable this Control

参数

此函数没有参数。

返回值

UI\Control::destroy
UI\Control::enable
UI\Control


Enable Control

UI\Control::disable
UI\Control::getParent
UI\Control
PHP Manual

UI\Control::enable

(PHP 7, UI 0.9.9)

UI\Control::enable — Enable Control

说明

public UI\Control::enable ( void )

Shall enable this Control

参数

此函数没有参数。

返回值

UI\Control::disable
UI\Control::getParent
UI\Control


Get Parent Control

UI\Control::enable
UI\Control::getTopLevel
UI\Control
PHP Manual

UI\Control::getParent

(PHP 7, UI 0.9.9)

UI\Control::getParent — Get Parent Control

说明

public UI\Control UI\Control::getParent ( void )

Shall return the parent Control

参数

此函数没有参数。

返回值

UI\Control::enable
UI\Control::getTopLevel
UI\Control


Get Top Level

UI\Control::getParent
UI\Control::hide
UI\Control
PHP Manual

UI\Control::getTopLevel

(PHP 7, UI 0.9.9)

UI\Control::getTopLevel — Get Top Level

说明

public int UI\Control::getTopLevel ( void )

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

UI\Control::getParent
UI\Control::hide
UI\Control


Hide Control

UI\Control::getTopLevel
UI\Control::isEnabled
UI\Control
PHP Manual

UI\Control::hide

(PHP 7, UI 0.9.9)

UI\Control::hide — Hide Control

说明

public UI\Control::hide ( void )

Shall hide this Control

参数

此函数没有参数。

返回值

UI\Control::getTopLevel
UI\Control::isEnabled
UI\Control


Determine if Control is enabled

UI\Control::hide
UI\Control::isVisible
UI\Control
PHP Manual

UI\Control::isEnabled

(PHP 7, UI 0.9.9)

UI\Control::isEnabled — Determine if Control is enabled

说明

public bool UI\Control::isEnabled ( void )

Shall detect if this Control is enabled

参数

此函数没有参数。

返回值

UI\Control::hide
UI\Control::isVisible
UI\Control


Determine if Control is visible

UI\Control::isEnabled
UI\Control::setParent
UI\Control
PHP Manual

UI\Control::isVisible

(PHP 7, UI 0.9.9)

UI\Control::isVisible — Determine if Control is visible

说明

public bool UI\Control::isVisible ( void )

Shall detect if this Control is visible

参数

此函数没有参数。

返回值

UI\Control::isEnabled
UI\Control::setParent
UI\Control


Set Parent Control

UI\Control::isVisible
UI\Control::show
UI\Control
PHP Manual

UI\Control::setParent

(PHP 7, UI 0.9.9)

UI\Control::setParent — Set Parent Control

说明

public UI\Control::setParent ( UI\Control $parent )

Shall set the parent Control of this Control

参数

parent

The parent Control

返回值

UI\Control::isVisible
UI\Control::show
UI\Control


Control Show

UI\Control::setParent
UI\Menu
UI\Control
PHP Manual

UI\Control::show

(PHP 7, UI 0.9.9)

UI\Control::show — Control Show

说明

public UI\Control::show ( void )

Shall show this Control

参数

此函数没有参数。

返回值

UI\Control::setParent
UI\Menu
UI\Control


Menu

(PHP 7, UI 0.9.9)

简介

Menus must be constructed before the first Window, and can be shown on any Window

类摘要

UI\Menu {
/* Constructor */
public __construct ( string $name )
/* 方法 */
public UI\MenuItem append ( string $name [, string $type = UI\MenuItem::class ] )
public UI\MenuItem appendAbout ([ string $type = UI\MenuItem::class ] )
public UI\MenuItem appendCheck ( string $name [, string $type = UI\MenuItem::class ] )
public UI\MenuItem appendPreferences ([ string $type = UI\MenuItem::class ] )
public UI\MenuItem appendQuit ([ string $type = UI\MenuItem::class ] )
public appendSeparator ( void )
}

Table of Contents

  • UI\Menu::append — Append Menu Item
  • UI\Menu::appendAbout — Append About Menu Item
  • UI\Menu::appendCheck — Append Checkable Menu Item
  • UI\Menu::appendPreferences — Append Preferences Menu Item
  • UI\Menu::appendQuit — Append Quit Menu Item
  • UI\Menu::appendSeparator — Append Menu Item Separator
  • UI\Menu::__construct — Construct a new Menu
UI\Control::show
UI\Menu::append
UI


Append Menu Item

UI\Menu
UI\Menu::appendAbout
UI\Menu
PHP Manual

UI\Menu::append

(PHP 7, UI 0.9.9)

UI\Menu::append — Append Menu Item

说明

public UI\MenuItem UI\Menu::append ( string $name [, string $type = UI\MenuItem::class ] )

Shall append a new Menu Item

参数

name

The name (text) for the new item

type

The type for the new item

返回值

A constructed object of the given type

UI\Menu
UI\Menu::appendAbout
UI\Menu


Append About Menu Item

UI\Menu::append
UI\Menu::appendCheck
UI\Menu
PHP Manual

UI\Menu::appendAbout

(PHP 7, UI 0.9.9)

UI\Menu::appendAbout — Append About Menu Item

说明

public UI\MenuItem UI\Menu::appendAbout ([ string $type = UI\MenuItem::class ] )

Shall append an About menu item

参数

type

The type for the new item

返回值

A constructed About menu item of the given type

UI\Menu::append
UI\Menu::appendCheck
UI\Menu


Append Checkable Menu Item

UI\Menu::appendAbout
UI\Menu::appendPreferences
UI\Menu
PHP Manual

UI\Menu::appendCheck

(PHP 7, UI 0.9.9)

UI\Menu::appendCheck — Append Checkable Menu Item

说明

public UI\MenuItem UI\Menu::appendCheck ( string $name [, string $type = UI\MenuItem::class ] )

Shall append a checkable menu item

参数

name

The name (text) for the new item

type

The type for the new item

返回值

A constructed checkable menu item of the given type

UI\Menu::appendAbout
UI\Menu::appendPreferences
UI\Menu


Append Preferences Menu Item

UI\Menu::appendCheck
UI\Menu::appendQuit
UI\Menu
PHP Manual

UI\Menu::appendPreferences

(PHP 7, UI 0.9.9)

UI\Menu::appendPreferences — Append Preferences Menu Item

说明

public UI\MenuItem UI\Menu::appendPreferences ([ string $type = UI\MenuItem::class ] )

Shall append a Preferences menu item

参数

type

The type for the new item

返回值

A constructed Preferences menu item of the given type

UI\Menu::appendCheck
UI\Menu::appendQuit
UI\Menu


Append Quit Menu Item

UI\Menu::appendPreferences
UI\Menu::appendSeparator
UI\Menu
PHP Manual

UI\Menu::appendQuit

(PHP 7, UI 0.9.9)

UI\Menu::appendQuit — Append Quit Menu Item

说明

public UI\MenuItem UI\Menu::appendQuit ([ string $type = UI\MenuItem::class ] )

Shall append a Quit menu item

参数

type

The type for the new item

返回值

A constructed Quit menu item of the given type

UI\Menu::appendPreferences
UI\Menu::appendSeparator
UI\Menu


Append Menu Item Separator

UI\Menu::appendQuit
UI\Menu::__construct
UI\Menu
PHP Manual

UI\Menu::appendSeparator

(PHP 7, UI 0.9.9)

UI\Menu::appendSeparator — Append Menu Item Separator

说明

public UI\Menu::appendSeparator ( void )

Shall append a separator

参数

此函数没有参数。

UI\Menu::appendQuit
UI\Menu::__construct
UI\Menu


Construct a new Menu

UI\Menu::appendSeparator
UI\MenuItem
UI\Menu
PHP Manual

UI\Menu::__construct

(PHP 7, UI 0.9.9)

UI\Menu::__construct — Construct a new Menu

说明

public UI\Menu::__construct ( string $name )

Shall construct a new Menu

参数

name

The name (text) for the menu

UI\Menu::appendSeparator
UI\MenuItem
UI\Menu


Menu Item

(PHP 7, UI 0.9.9)

简介

Menu Items should only be created by the Menu

类摘要

UI\MenuItem {
/* 方法 */
public disable ( void )
public enable ( void )
public bool isChecked ( void )
protected onClick ( void )
public setChecked ( boolean $checked )
}

Table of Contents

  • UI\MenuItem::disable — Disable Menu Item
  • UI\MenuItem::enable — Enable Menu Item
  • UI\MenuItem::isChecked — Detect Checked
  • UI\MenuItem::onClick — On Click Callback
  • UI\MenuItem::setChecked — Set Checked
UI\Menu::__construct
UI\MenuItem::disable
UI


Disable Menu Item

UI\MenuItem
UI\MenuItem::enable
UI\MenuItem
PHP Manual

UI\MenuItem::disable

(PHP 7, UI 0.9.9)

UI\MenuItem::disable — Disable Menu Item

说明

public UI\MenuItem::disable ( void )

Shall disable this Menu Item

参数

此函数没有参数。

UI\MenuItem
UI\MenuItem::enable
UI\MenuItem


Enable Menu Item

UI\MenuItem::disable
UI\MenuItem::isChecked
UI\MenuItem
PHP Manual

UI\MenuItem::enable

(PHP 7, UI 0.9.9)

UI\MenuItem::enable — Enable Menu Item

说明

public UI\MenuItem::enable ( void )

Shall enable this Menu Item

参数

此函数没有参数。

UI\MenuItem::disable
UI\MenuItem::isChecked
UI\MenuItem


Detect Checked

UI\MenuItem::enable
UI\MenuItem::onClick
UI\MenuItem
PHP Manual

UI\MenuItem::isChecked

(PHP 7, UI 0.9.9)

UI\MenuItem::isChecked — Detect Checked

说明

public bool UI\MenuItem::isChecked ( void )

Shall detect if this Menu Item is checked

参数

此函数没有参数。

UI\MenuItem::enable
UI\MenuItem::onClick
UI\MenuItem


On Click Callback

UI\MenuItem::isChecked
UI\MenuItem::setChecked
UI\MenuItem
PHP Manual

UI\MenuItem::onClick

(PHP 7, UI 0.9.9)

UI\MenuItem::onClick — On Click Callback

说明

protected UI\MenuItem::onClick ( void )

Shall be executed when this Menu Item is clicked

参数

此函数没有参数。

UI\MenuItem::isChecked
UI\MenuItem::setChecked
UI\MenuItem


Set Checked

UI\MenuItem::onClick
UI\Area
UI\MenuItem
PHP Manual

UI\MenuItem::setChecked

(PHP 7, UI 0.9.9)

UI\MenuItem::setChecked — Set Checked

说明

public UI\MenuItem::setChecked ( boolean $checked )

Shall set the checked status of this Menu Item

参数

checked

The new status

UI\MenuItem::onClick
UI\Area
UI\MenuItem


Area

(PHP 7, UI 0.9.9)

简介

An Area represents a canvas which can be used to draw, and respond to mouse and key events.

类摘要

UI\Area extends UI\Control {
/* Constants */
const integer Ctrl ;
const integer Alt ;
const integer Shift ;
const integer Super ;
const integer Down ;
const integer Up ;
/* 方法 */
protected onDraw ( UI\Draw\Pen $pen , UI\Size $areaSize , UI\Point $clipPoint , UI\Size $clipSize )
protected onKey ( string $key , integer $ext , integer $flags )
protected onMouse ( UI\Point $areaPoint , UI\Size $areaSize , integer $flags )
public redraw ( void )
public scrollTo ( UI\Point $point , UI\Size $size )
public setSize ( UI\Size $size )
/* 继承的方法 */
public UI\Control::destroy ( void )
public UI\Control::disable ( void )
public UI\Control::enable ( void )
public UI\Control UI\Control::getParent ( void )
public int UI\Control::getTopLevel ( void )
public UI\Control::hide ( void )
public bool UI\Control::isEnabled ( void )
public bool UI\Control::isVisible ( void )
public UI\Control::setParent ( UI\Control $parent )
public UI\Control::show ( void )
}

预定义常量

UI\Area::Ctrl

Shall be set in the modifiers passed to key and mouse events when the CTRL key is active

UI\Area::Alt

Shall be set in the modifiers passed to key and mouse events when the ALT key is active

UI\Area::Shift

Shall be set in the modifiers passed to key and mouse events when the SHIFT key is active

UI\Area::Super

UI\Area::Down

Shall be set in the modifiers passed to key and mouse events

UI\Area::Up

Shall be set in the modifiers passed to key and mouse events

Table of Contents

  • UI\Area::onDraw — Draw Callback
  • UI\Area::onKey — Key Callback
  • UI\Area::onMouse — Mouse Callback
  • UI\Area::redraw — Redraw Area
  • UI\Area::scrollTo — Area Scroll
  • UI\Area::setSize — Set Size
UI\MenuItem::setChecked
UI\Area::onDraw
UI


Draw Callback

UI\Area
UI\Area::onKey
UI\Area
PHP Manual

UI\Area::onDraw

(PHP 7, UI 0.9.9)

UI\Area::onDraw — Draw Callback

说明

protected UI\Area::onDraw ( UI\Draw\Pen $pen , UI\Size $areaSize , UI\Point $clipPoint , UI\Size $clipSize )

Shall be invoked when this Area requires redrawing

参数

pen

A Pen suitable for drawing in this Area

areaSize

The size of the Area

clipPoint

The clip point of the Area

clipSize

The clip size of the Area

UI\Area
UI\Area::onKey
UI\Area


Key Callback

UI\Area::onDraw
UI\Area::onMouse
UI\Area
PHP Manual

UI\Area::onKey

(PHP 7, UI 0.9.9)

UI\Area::onKey — Key Callback

说明

protected UI\Area::onKey ( string $key , integer $ext , integer $flags )

Shall be executed on key events

参数

key

The key pressed

ext

The extended key pressed

flags

Event modifiers

返回值

UI\Area::onDraw
UI\Area::onMouse
UI\Area


Mouse Callback

UI\Area::onKey
UI\Area::redraw
UI\Area
PHP Manual

UI\Area::onMouse

(PHP 7, UI 0.9.9)

UI\Area::onMouse — Mouse Callback

说明

protected UI\Area::onMouse ( UI\Point $areaPoint , UI\Size $areaSize , integer $flags )

Shall be executed on mouse events

参数

areaPoint

The co-ordinates of the event

areaSize

The size of the area of the event

flags

Event modifiers

UI\Area::onKey
UI\Area::redraw
UI\Area


Redraw Area

UI\Area::onMouse
UI\Area::scrollTo
UI\Area
PHP Manual

UI\Area::redraw

(PHP 7, UI 0.9.9)

UI\Area::redraw — Redraw Area

说明

public UI\Area::redraw ( void )

Requests that this Area is redrawn

参数

此函数没有参数。

返回值

UI\Area::onMouse
UI\Area::scrollTo
UI\Area


Area Scroll

UI\Area::redraw
UI\Area::setSize
UI\Area
PHP Manual

UI\Area::scrollTo

(PHP 7, UI 0.9.9)

UI\Area::scrollTo — Area Scroll

说明

public UI\Area::scrollTo ( UI\Point $point , UI\Size $size )

Scroll this Area

参数

point

The point to scroll to

size

The size of the scroll pane

UI\Area::redraw
UI\Area::setSize
UI\Area


Set Size

UI\Area::scrollTo
UI\Executor
UI\Area
PHP Manual

UI\Area::setSize

(PHP 7, UI 0.9.9)

UI\Area::setSize — Set Size

说明

public UI\Area::setSize ( UI\Size $size )

Sets the size of this Area

参数

size

The new size

UI\Area::scrollTo
UI\Executor
UI\Area


Execution Scheduler

(PHP 7, UI 2.0.0)

简介

This facility schedules repetitive execution of a callback, useful for animations and other such activities.

类摘要

abstract UI\Executor {
/* Constructor */
public __construct ( void )
public __construct ( integer $microseconds )
public __construct ( integer $seconds , integer $microseconds )
/* 方法 */
public void kill ( void )
abstract protected void onExecute ( void )
public bool setInterval ( integer $microseconds )
public bool setInterval ( integer $seconds , integer $microseconds )
}

Table of Contents

  • UI\Executor::__construct — Construct a new Executor
  • UI\Executor::kill — Stop Executor
  • UI\Executor::onExecute — Execution Callback
  • UI\Executor::setInterval — Interval Manipulation
UI\Area::setSize
UI\Executor::__construct
UI


Construct a new Executor

UI\Executor
UI\Executor::kill
UI\Executor
PHP Manual

UI\Executor::__construct

(PHP 7, UI 2.0.0)

UI\Executor::__construct — Construct a new Executor

说明

public UI\Executor::__construct ( void )
public UI\Executor::__construct ( integer $microseconds )
public UI\Executor::__construct ( integer $seconds , integer $microseconds )

Shall construct an executor with the given interval, will not start executing until main loop is entered

参数

seconds

Seconds between executions

microseconds

Microseconds between executions

UI\Executor
UI\Executor::kill
UI\Executor


Stop Executor

UI\Executor::__construct
UI\Executor::onExecute
UI\Executor
PHP Manual

UI\Executor::kill

(PHP 7, UI 2.0.0)

UI\Executor::kill — Stop Executor

说明

public void UI\Executor::kill ( void )

Shall stop an executor, the executor cannot be restarted

参数

此函数没有参数。

返回值

UI\Executor::__construct
UI\Executor::onExecute
UI\Executor


Execution Callback

UI\Executor::kill
UI\Executor::setInterval
UI\Executor
PHP Manual

UI\Executor::onExecute

(PHP 7, UI 2.0.0)

UI\Executor::onExecute — Execution Callback

说明

abstract protected void UI\Executor::onExecute ( void )

Shall be repetitively queued for execution in the main thread

参数

此函数没有参数。

返回值

UI\Executor::kill
UI\Executor::setInterval
UI\Executor


Interval Manipulation

UI\Executor::onExecute
UI\Controls\Tab
UI\Executor
PHP Manual

UI\Executor::setInterval

(PHP 7, UI 2.0.0)

UI\Executor::setInterval — Interval Manipulation

说明

public bool UI\Executor::setInterval ( integer $microseconds )
public bool UI\Executor::setInterval ( integer $seconds , integer $microseconds )

Shall set the new interval. An interval of 0 will pause the executor until a new interval has been set

参数

seconds

microseconds

返回值

Indication of success

UI\Executor::onExecute
UI\Controls\Tab
UI\Executor


Tab Control

(PHP 7, UI 0.9.9)

简介

A Tab can contain many pages of Controls, each with a title, each selectable by the user.

类摘要

UI\Controls\Tab extends UI\Control {
/* 属性 */
protected $controls ;
/* 方法 */
public integer append ( string $name , UI\Control $control )
public boolean delete ( integer $index )
public bool hasMargin ( integer $page )
public insertAt ( string $name , integer $page , UI\Control $control )
public integer pages ( void )
public setMargin ( integer $page , boolean $margin )
/* 继承的方法 */
public UI\Control::destroy ( void )
public UI\Control::disable ( void )
public UI\Control::enable ( void )
public UI\Control UI\Control::getParent ( void )
public int UI\Control::getTopLevel ( void )
public UI\Control::hide ( void )
public bool UI\Control::isEnabled ( void )
public bool UI\Control::isVisible ( void )
public UI\Control::setParent ( UI\Control $parent )
public UI\Control::show ( void )
}

属性

controls

Contains controls, should not be manipulated directly

Table of Contents

  • UI\Controls\Tab::append — Append Page
  • UI\Controls\Tab::delete — Delete Page
  • UI\Controls\Tab::hasMargin — Margin Detection
  • UI\Controls\Tab::insertAt — Insert Page
  • UI\Controls\Tab::pages — Page Count
  • UI\Controls\Tab::setMargin — Set Margin
UI\Executor::setInterval
UI\Controls\Tab::append
UI


Append Page

UI\Controls\Tab
UI\Controls\Tab::delete
UI\Controls\Tab
PHP Manual

UI\Controls\Tab::append

(PHP 7, UI 0.9.9)

UI\Controls\Tab::append — Append Page

说明

public integer UI\Controls\Tab::append ( string $name , UI\Control $control )

Append a new page to this Tab

参数

name

The name for the new page

control

The control for the new page

返回值

Shall return the index of the appended control, may be 0

UI\Controls\Tab
UI\Controls\Tab::delete
UI\Controls\Tab


Delete Page

UI\Controls\Tab::append
UI\Controls\Tab::hasMargin
UI\Controls\Tab
PHP Manual

UI\Controls\Tab::delete

(PHP 7, UI 0.9.9)

UI\Controls\Tab::delete — Delete Page

说明

public boolean UI\Controls\Tab::delete ( integer $index )

Shall remove the selected page from this Tab

参数

index

The index of the page to remove

返回值

Indication of success

UI\Controls\Tab::append
UI\Controls\Tab::hasMargin
UI\Controls\Tab


Margin Detection

UI\Controls\Tab::delete
UI\Controls\Tab::insertAt
UI\Controls\Tab
PHP Manual

UI\Controls\Tab::hasMargin

(PHP 7, UI 0.9.9)

UI\Controls\Tab::hasMargin — Margin Detection

说明

public bool UI\Controls\Tab::hasMargin ( integer $page )

Shall detect if the given page has a margin.

参数

page

The index of the page

返回值

UI\Controls\Tab::delete
UI\Controls\Tab::insertAt
UI\Controls\Tab


Insert Page

UI\Controls\Tab::hasMargin
UI\Controls\Tab::pages
UI\Controls\Tab
PHP Manual

UI\Controls\Tab::insertAt

(PHP 7, UI 0.9.9)

UI\Controls\Tab::insertAt — Insert Page

说明

public UI\Controls\Tab::insertAt ( string $name , integer $page , UI\Control $control )

Shall insert a new page into this Tab

参数

name

The name for the new page

page

The index to perform the insertion before

control

The control for the new page

UI\Controls\Tab::hasMargin
UI\Controls\Tab::pages
UI\Controls\Tab


Page Count

UI\Controls\Tab::insertAt
UI\Controls\Tab::setMargin
UI\Controls\Tab
PHP Manual

UI\Controls\Tab::pages

(PHP 7, UI 0.9.9)

UI\Controls\Tab::pages — Page Count

说明

public integer UI\Controls\Tab::pages ( void )

Shall return the number of pages in this Tab

参数

此函数没有参数。

返回值

The number of pages in this Tab

UI\Controls\Tab::insertAt
UI\Controls\Tab::setMargin
UI\Controls\Tab


Set Margin

UI\Controls\Tab::pages
UI\Controls\Check
UI\Controls\Tab
PHP Manual

UI\Controls\Tab::setMargin

(PHP 7, UI 0.9.9)

UI\Controls\Tab::setMargin — Set Margin

说明

public UI\Controls\Tab::setMargin ( integer $page , boolean $margin )

Shall enable or disable margins on the selected page

参数

page

The page to select

margin

Margin switch

UI\Controls\Tab::pages
UI\Controls\Check
UI\Controls\Tab


Check Control

(PHP 7, UI 0.9.9)

简介

A Check is a labelled checkable box

类摘要

UI\Controls\Check extends UI\Control {
/* Constructor */
public __construct ( string $text )
/* 方法 */
public string getText ( void )
public bool isChecked ( void )
protected onToggle ( void )
public setChecked ( boolean $checked )
public setText ( string $text )
/* 继承的方法 */
public UI\Control::destroy ( void )
public UI\Control::disable ( void )
public UI\Control::enable ( void )
public UI\Control UI\Control::getParent ( void )
public int UI\Control::getTopLevel ( void )
public UI\Control::hide ( void )
public bool UI\Control::isEnabled ( void )
public bool UI\Control::isVisible ( void )
public UI\Control::setParent ( UI\Control $parent )
public UI\Control::show ( void )
}

Table of Contents

  • UI\Controls\Check::__construct — Construct a new Check
  • UI\Controls\Check::getText — Get Text
  • UI\Controls\Check::isChecked — Checked Detection
  • UI\Controls\Check::onToggle — Toggle Callback
  • UI\Controls\Check::setChecked — Set Checked
  • UI\Controls\Check::setText — Set Text
UI\Controls\Tab::setMargin
UI\Controls\Check::__construct
UI


Construct a new Check

UI\Controls\Check
UI\Controls\Check::getText
UI\Controls\Check
PHP Manual

UI\Controls\Check::__construct

(PHP 7, UI 0.9.9)

UI\Controls\Check::__construct — Construct a new Check

说明

public UI\Controls\Check::__construct ( string $text )

Shall construct a new Check

参数

text

The text (label) for the Check box

UI\Controls\Check
UI\Controls\Check::getText
UI\Controls\Check


Get Text

UI\Controls\Check::__construct
UI\Controls\Check::isChecked
UI\Controls\Check
PHP Manual

UI\Controls\Check::getText

(PHP 7, UI 0.9.9)

UI\Controls\Check::getText — Get Text

说明

public string UI\Controls\Check::getText ( void )

Shall return the text (label) for this Check

参数

此函数没有参数。

返回值

The current text (label)

UI\Controls\Check::__construct
UI\Controls\Check::isChecked
UI\Controls\Check


Checked Detection

UI\Controls\Check::getText
UI\Controls\Check::onToggle
UI\Controls\Check
PHP Manual

UI\Controls\Check::isChecked

(PHP 7, UI 0.9.9)

UI\Controls\Check::isChecked — Checked Detection

说明

public bool UI\Controls\Check::isChecked ( void )

Shall detect the status of this Check

参数

此函数没有参数。

UI\Controls\Check::getText
UI\Controls\Check::onToggle
UI\Controls\Check


Toggle Callback

UI\Controls\Check::isChecked
UI\Controls\Check::setChecked
UI\Controls\Check
PHP Manual

UI\Controls\Check::onToggle

(PHP 7, UI 0.9.9)

UI\Controls\Check::onToggle — Toggle Callback

说明

protected UI\Controls\Check::onToggle ( void )

Shall be executed when the status of this Check is changed

参数

此函数没有参数。

UI\Controls\Check::isChecked
UI\Controls\Check::setChecked
UI\Controls\Check


Set Checked

UI\Controls\Check::onToggle
UI\Controls\Check::setText
UI\Controls\Check
PHP Manual

UI\Controls\Check::setChecked

(PHP 7, UI 0.9.9)

UI\Controls\Check::setChecked — Set Checked

说明

public UI\Controls\Check::setChecked ( boolean $checked )

Shall change the status of this Check

参数

checked

The new status

UI\Controls\Check::onToggle
UI\Controls\Check::setText
UI\Controls\Check


Set Text

UI\Controls\Check::setChecked
UI\Controls\Button
UI\Controls\Check
PHP Manual

UI\Controls\Check::setText

(PHP 7, UI 0.9.9)

UI\Controls\Check::setText — Set Text

说明

public UI\Controls\Check::setText ( string $text )

Shall set the text (label) for this Check

参数

text

The new text (label)

UI\Controls\Check::setChecked
UI\Controls\Button
UI\Controls\Check


Button Control

(PHP 7, UI 0.9.9)

简介

Represents a labelled clickable button

类摘要

UI\Controls\Button extends UI\Control {
/* Constructor */
public __construct ( string $text )
/* 方法 */
public string getText ( void )
protected onClick ( void )
public setText ( string $text )
/* 继承的方法 */
public UI\Control::destroy ( void )
public UI\Control::disable ( void )
public UI\Control::enable ( void )
public UI\Control UI\Control::getParent ( void )
public int UI\Control::getTopLevel ( void )
public UI\Control::hide ( void )
public bool UI\Control::isEnabled ( void )
public bool UI\Control::isVisible ( void )
public UI\Control::setParent ( UI\Control $parent )
public UI\Control::show ( void )
}

Table of Contents

  • UI\Controls\Button::__construct — Construct a new Button
  • UI\Controls\Button::getText — Get Text
  • UI\Controls\Button::onClick — Click Handler
  • UI\Controls\Button::setText — Set Text
UI\Controls\Check::setText
UI\Controls\Button::__construct
UI


Construct a new Button

UI\Controls\Button
UI\Controls\Button::getText
UI\Controls\Button
PHP Manual

UI\Controls\Button::__construct

(PHP 7, UI 0.9.9)

UI\Controls\Button::__construct — Construct a new Button

说明

public UI\Controls\Button::__construct ( string $text )

Shall construct a new Button

参数

text

The text (label) for this Button

UI\Controls\Button
UI\Controls\Button::getText
UI\Controls\Button


Get Text

UI\Controls\Button::__construct
UI\Controls\Button::onClick
UI\Controls\Button
PHP Manual

UI\Controls\Button::getText

(PHP 7, UI 0.9.9)

UI\Controls\Button::getText — Get Text

说明

public string UI\Controls\Button::getText ( void )

Shall retrieve the text (label) for this Button

参数

此函数没有参数。

返回值

The current text (label)

UI\Controls\Button::__construct
UI\Controls\Button::onClick
UI\Controls\Button


Click Handler

UI\Controls\Button::getText
UI\Controls\Button::setText
UI\Controls\Button
PHP Manual

UI\Controls\Button::onClick

(PHP 7, UI 0.9.9)

UI\Controls\Button::onClick — Click Handler

说明

protected UI\Controls\Button::onClick ( void )

Shall be executed when this Button is clicked

参数

此函数没有参数。

UI\Controls\Button::getText
UI\Controls\Button::setText
UI\Controls\Button


Set Text

UI\Controls\Button::onClick
UI\Controls\ColorButton
UI\Controls\Button
PHP Manual

UI\Controls\Button::setText

(PHP 7, UI 0.9.9)

UI\Controls\Button::setText — Set Text

说明

public UI\Controls\Button::setText ( string $text )

Shall set the text (label) for this Button

参数

text

The new text (label)

UI\Controls\Button::onClick
UI\Controls\ColorButton
UI\Controls\Button


ColorButton Control

(PHP 7, UI 0.9.9)

简介

A Color Button is a button which displays a color picker when clicked

类摘要

UI\Controls\ColorButton extends UI\Control {
/* 方法 */
public UI\Color getColor ( void )
protected onChange ( void )
public setColor ( UI\Draw\Color $color )
public setColor ( integer $color )
/* 继承的方法 */
public UI\Control::destroy ( void )
public UI\Control::disable ( void )
public UI\Control::enable ( void )
public UI\Control UI\Control::getParent ( void )
public int UI\Control::getTopLevel ( void )
public UI\Control::hide ( void )
public bool UI\Control::isEnabled ( void )
public bool UI\Control::isVisible ( void )
public UI\Control::setParent ( UI\Control $parent )
public UI\Control::show ( void )
}

Table of Contents

  • UI\Controls\ColorButton::getColor — Get Color
  • UI\Controls\ColorButton::onChange — Change Handler
  • UI\Controls\ColorButton::setColor — Set Color
UI\Controls\Button::setText
UI\Controls\ColorButton::getColor
UI


Get Color

UI\Controls\ColorButton
UI\Controls\ColorButton::onChange
UI\Controls\ColorButton
PHP Manual

UI\Controls\ColorButton::getColor

(PHP 7, UI 0.9.9)

UI\Controls\ColorButton::getColor — Get Color

说明

public UI\Color UI\Controls\ColorButton::getColor ( void )

Shall retrieve the currently selected Color

参数

此函数没有参数。

返回值

UI\Controls\ColorButton
UI\Controls\ColorButton::onChange
UI\Controls\ColorButton


Change Handler

UI\Controls\ColorButton::getColor
UI\Controls\ColorButton::setColor
UI\Controls\ColorButton
PHP Manual

UI\Controls\ColorButton::onChange

(PHP 7, UI 0.9.9)

UI\Controls\ColorButton::onChange — Change Handler

说明

protected UI\Controls\ColorButton::onChange ( void )

Shall be executed when the selected Color is changed

参数

此函数没有参数。

UI\Controls\ColorButton::getColor
UI\Controls\ColorButton::setColor
UI\Controls\ColorButton


Set Color

UI\Controls\ColorButton::onChange
UI\Controls\Label
UI\Controls\ColorButton
PHP Manual

UI\Controls\ColorButton::setColor

(PHP 7, UI 0.9.9)

UI\Controls\ColorButton::setColor — Set Color

说明

public UI\Controls\ColorButton::setColor ( UI\Draw\Color $color )
public UI\Controls\ColorButton::setColor ( integer $color )

Shall set the currently selected Color

参数

color

The new color

UI\Controls\ColorButton::onChange
UI\Controls\Label
UI\Controls\ColorButton


Label Control

(PHP 7, UI 0.9.9)

简介

A Label is a single line of text, meant to identify, for the user, some element of the interface.

类摘要

UI\Controls\Label extends UI\Control {
/* Constructor */
public __construct ( string $text )
/* 方法 */
public string getText ( void )
public setText ( string $text )
/* 继承的方法 */
public UI\Control::destroy ( void )
public UI\Control::disable ( void )
public UI\Control::enable ( void )
public UI\Control UI\Control::getParent ( void )
public int UI\Control::getTopLevel ( void )
public UI\Control::hide ( void )
public bool UI\Control::isEnabled ( void )
public bool UI\Control::isVisible ( void )
public UI\Control::setParent ( UI\Control $parent )
public UI\Control::show ( void )
}

Table of Contents

  • UI\Controls\Label::__construct — Construct a new Label
  • UI\Controls\Label::getText — Get Text
  • UI\Controls\Label::setText — Set Text
UI\Controls\ColorButton::setColor
UI\Controls\Label::__construct
UI


Construct a new Label

UI\Controls\Label
UI\Controls\Label::getText
UI\Controls\Label
PHP Manual

UI\Controls\Label::__construct

(PHP 7, UI 0.9.9)

UI\Controls\Label::__construct — Construct a new Label

说明

public UI\Controls\Label::__construct ( string $text )

Shall construct a new Label

参数

text

The text for this label

UI\Controls\Label
UI\Controls\Label::getText
UI\Controls\Label


Get Text

UI\Controls\Label::__construct
UI\Controls\Label::setText
UI\Controls\Label
PHP Manual

UI\Controls\Label::getText

(PHP 7, UI 0.9.9)

UI\Controls\Label::getText — Get Text

说明

public string UI\Controls\Label::getText ( void )

Shall return the current text for this Label

Warning

本函数还未编写文档，仅有参数列表。

参数

此函数没有参数。

返回值

UI\Controls\Label::__construct
UI\Controls\Label::setText
UI\Controls\Label


Set Text

UI\Controls\Label::getText
UI\Controls\Entry
UI\Controls\Label
PHP Manual

UI\Controls\Label::setText

(PHP 7, UI 0.9.9)

UI\Controls\Label::setText — Set Text

说明

public UI\Controls\Label::setText ( string $text )

Shall set the text for this Label

参数

text

The new text

UI\Controls\Label::getText
UI\Controls\Entry
UI\Controls\Label


Entry Control

(PHP 7, UI 0.9.9)

简介

An Entry is a text entry control, suitable for entering plain text, passwords, or search terms.

类摘要

UI\Controls\Entry extends UI\Control {
/* Constants */
const integer Normal ;
const integer Password ;
const integer Search ;
/* Constructor */
public __construct ([ integer $type = UI\Controls\Entry::Normal ] )
/* 方法 */
public string getText ( void )
public bool isReadOnly ( void )
protected onChange ( void )
public setReadOnly ( boolean $readOnly )
public setText ( string $text )
/* 继承的方法 */
public UI\Control::destroy ( void )
public UI\Control::disable ( void )
public UI\Control::enable ( void )
public UI\Control UI\Control::getParent ( void )
public int UI\Control::getTopLevel ( void )
public UI\Control::hide ( void )
public bool UI\Control::isEnabled ( void )
public bool UI\Control::isVisible ( void )
public UI\Control::setParent ( UI\Control $parent )
public UI\Control::show ( void )
}

预定义常量

UI\Controls\Entry::Normal

A normal single line entry

UI\Controls\Entry::Password

A password entry

UI\Controls\Entry::Search

A search entry

Table of Contents

  • UI\Controls\Entry::__construct — Construct a new Entry
  • UI\Controls\Entry::getText — Get Text
  • UI\Controls\Entry::isReadOnly — Detect Read Only
  • UI\Controls\Entry::onChange — Change Handler
  • UI\Controls\Entry::setReadOnly — Set Read Only
  • UI\Controls\Entry::setText — Set Text
UI\Controls\Label::setText
UI\Controls\Entry::__construct
UI


Construct a new Entry

UI\Controls\Entry
UI\Controls\Entry::getText
UI\Controls\Entry
PHP Manual

UI\Controls\Entry::__construct

(PHP 7, UI 0.9.9)

UI\Controls\Entry::__construct — Construct a new Entry

说明

public UI\Controls\Entry::__construct ([ integer $type = UI\Controls\Entry::Normal ] )

Construct a new entry of the given type

参数

type

Entry::Normal, Entry::Password, or Entry::Search

UI\Controls\Entry
UI\Controls\Entry::getText
UI\Controls\Entry


Get Text

UI\Controls\Entry::__construct
UI\Controls\Entry::isReadOnly
UI\Controls\Entry
PHP Manual

UI\Controls\Entry::getText

(PHP 7, UI 0.9.9)

UI\Controls\Entry::getText — Get Text

说明

public string UI\Controls\Entry::getText ( void )

Shall return the current text from this Entry

参数

此函数没有参数。

返回值

The current text

UI\Controls\Entry::__construct
UI\Controls\Entry::isReadOnly
UI\Controls\Entry


Detect Read Only

UI\Controls\Entry::getText
UI\Controls\Entry::onChange
UI\Controls\Entry
PHP Manual

UI\Controls\Entry::isReadOnly

(PHP 7, UI 0.9.9)

UI\Controls\Entry::isReadOnly — Detect Read Only

说明

public bool UI\Controls\Entry::isReadOnly ( void )

Shall detect if this Entry is read only

参数

此函数没有参数。

返回值

UI\Controls\Entry::getText
UI\Controls\Entry::onChange
UI\Controls\Entry


Change Handler

UI\Controls\Entry::isReadOnly
UI\Controls\Entry::setReadOnly
UI\Controls\Entry
PHP Manual

UI\Controls\Entry::onChange

(PHP 7, UI 0.9.9)

UI\Controls\Entry::onChange — Change Handler

说明

protected UI\Controls\Entry::onChange ( void )

Shall be executed when the text in this Entry changes

参数

此函数没有参数。

UI\Controls\Entry::isReadOnly
UI\Controls\Entry::setReadOnly
UI\Controls\Entry


Set Read Only

UI\Controls\Entry::onChange
UI\Controls\Entry::setText
UI\Controls\Entry
PHP Manual

UI\Controls\Entry::setReadOnly

(PHP 7, UI 0.9.9)

UI\Controls\Entry::setReadOnly — Set Read Only

说明

public UI\Controls\Entry::setReadOnly ( boolean $readOnly )

Shall enable or disable read only for this Entry

参数

readOnly

UI\Controls\Entry::onChange
UI\Controls\Entry::setText
UI\Controls\Entry


Set Text

UI\Controls\Entry::setReadOnly
UI\Controls\MultilineEntry
UI\Controls\Entry
PHP Manual

UI\Controls\Entry::setText

(PHP 7, UI 0.9.9)

UI\Controls\Entry::setText — Set Text

说明

public UI\Controls\Entry::setText ( string $text )

Shall set the text for this Entry

参数

text

The new text

UI\Controls\Entry::setReadOnly
UI\Controls\MultilineEntry
UI\Controls\Entry


MultilineEntry Control

(PHP 7, UI 0.9.9)

简介

A Multiline Entry is a text entry control able to hold multiple lines of text, with or without wrapping.

类摘要

UI\Controls\MultilineEntry extends UI\Control {
/* Constants */
const integer Wrap ;
const integer NoWrap ;
/* Constructor */
public __construct ([ integer $type ] )
/* 方法 */
public append ( string $text )
public string getText ( void )
public bool isReadOnly ( void )
protected onChange ( void )
public setReadOnly ( boolean $readOnly )
public setText ( string $text )
/* 继承的方法 */
public UI\Control::destroy ( void )
public UI\Control::disable ( void )
public UI\Control::enable ( void )
public UI\Control UI\Control::getParent ( void )
public int UI\Control::getTopLevel ( void )
public UI\Control::hide ( void )
public bool UI\Control::isEnabled ( void )
public bool UI\Control::isVisible ( void )
public UI\Control::setParent ( UI\Control $parent )
public UI\Control::show ( void )
}

预定义常量

UI\Controls\MultilineEntry::Wrap

Allow lines to wrap

UI\Controls\MultilineEntry::NoWrap

Do not allow lines to wrap

Table of Contents

  • UI\Controls\MultilineEntry::append — Append Text
  • UI\Controls\MultilineEntry::__construct — Construct a new Multiline Entry
  • UI\Controls\MultilineEntry::getText — Get Text
  • UI\Controls\MultilineEntry::isReadOnly — Read Only Detection
  • UI\Controls\MultilineEntry::onChange — Change Handler
  • UI\Controls\MultilineEntry::setReadOnly — Set Read Only
  • UI\Controls\MultilineEntry::setText — Set Text
UI\Controls\Entry::setText
UI\Controls\MultilineEntry::append
UI


Append Text

UI\Controls\MultilineEntry
UI\Controls\MultilineEntry::__construct
UI\Controls\MultilineEntry
PHP Manual

UI\Controls\MultilineEntry::append

(PHP 7, UI 0.9.9)

UI\Controls\MultilineEntry::append — Append Text

说明

public UI\Controls\MultilineEntry::append ( string $text )

Shall append the given text to the text in this Multiline Entry

参数

text

The text to append

UI\Controls\MultilineEntry
UI\Controls\MultilineEntry::__construct
UI\Controls\MultilineEntry


Construct a new Multiline Entry

UI\Controls\MultilineEntry::append
UI\Controls\MultilineEntry::getText
UI\Controls\MultilineEntry
PHP Manual

UI\Controls\MultilineEntry::__construct

(PHP 7, UI 0.9.9)

UI\Controls\MultilineEntry::__construct — Construct a new Multiline Entry

说明

public UI\Controls\MultilineEntry::__construct ([ integer $type ] )

Shall construct a new Multiline Entry of the given type

参数

type

MultilineEntry::Wrap or MultilineEntry::NoWrap

UI\Controls\MultilineEntry::append
UI\Controls\MultilineEntry::getText
UI\Controls\MultilineEntry


Get Text

UI\Controls\MultilineEntry::__construct
UI\Controls\MultilineEntry::isReadOnly
UI\Controls\MultilineEntry
PHP Manual

UI\Controls\MultilineEntry::getText

(PHP 7, UI 0.9.9)

UI\Controls\MultilineEntry::getText — Get Text

说明

public string UI\Controls\MultilineEntry::getText ( void )

Shall return the text in this Multiline Entry

参数

此函数没有参数。

UI\Controls\MultilineEntry::__construct
UI\Controls\MultilineEntry::isReadOnly
UI\Controls\MultilineEntry


Read Only Detection

UI\Controls\MultilineEntry::getText
UI\Controls\MultilineEntry::onChange
UI\Controls\MultilineEntry
PHP Manual

UI\Controls\MultilineEntry::isReadOnly

(PHP 7, UI 0.9.9)

UI\Controls\MultilineEntry::isReadOnly — Read Only Detection

说明

public bool UI\Controls\MultilineEntry::isReadOnly ( void )

Shall detect if this Multiline Entry is read only

参数

此函数没有参数。

UI\Controls\MultilineEntry::getText
UI\Controls\MultilineEntry::onChange
UI\Controls\MultilineEntry


Change Handler

UI\Controls\MultilineEntry::isReadOnly
UI\Controls\MultilineEntry::setReadOnly
UI\Controls\MultilineEntry
PHP Manual

UI\Controls\MultilineEntry::onChange

(PHP 7, UI 0.9.9)

UI\Controls\MultilineEntry::onChange — Change Handler

说明

protected UI\Controls\MultilineEntry::onChange ( void )

Shall be executed when the text in this Multiline Entry is changed

参数

此函数没有参数。

UI\Controls\MultilineEntry::isReadOnly
UI\Controls\MultilineEntry::setReadOnly
UI\Controls\MultilineEntry


Set Read Only

UI\Controls\MultilineEntry::onChange
UI\Controls\MultilineEntry::setText
UI\Controls\MultilineEntry
PHP Manual

UI\Controls\MultilineEntry::setReadOnly

(PHP 7, UI 0.9.9)

UI\Controls\MultilineEntry::setReadOnly — Set Read Only

说明

public UI\Controls\MultilineEntry::setReadOnly ( boolean $readOnly )

Shall enable or disable read only on this Multiline Entry

参数

readOnly

UI\Controls\MultilineEntry::onChange
UI\Controls\MultilineEntry::setText
UI\Controls\MultilineEntry


Set Text

UI\Controls\MultilineEntry::setReadOnly
UI\Controls\Spin
UI\Controls\MultilineEntry
PHP Manual

UI\Controls\MultilineEntry::setText

(PHP 7, UI 0.9.9)

UI\Controls\MultilineEntry::setText — Set Text

说明

public UI\Controls\MultilineEntry::setText ( string $text )

Shall set the text in this Multiline Entry

参数

text

The new text

UI\Controls\MultilineEntry::setReadOnly
UI\Controls\Spin
UI\Controls\MultilineEntry


Spin Control

(PHP 7, UI 0.9.9)

简介

A Spin box is a text box with an up-down control which changes the integer value in the box, within a defined range

类摘要

UI\Controls\Spin extends UI\Control {
/* Constructor */
public __construct ( integer $min , integer $max )
/* 方法 */
public int getValue ( void )
protected onChange ( void )
public setValue ( integer $value )
/* 继承的方法 */
public UI\Control::destroy ( void )
public UI\Control::disable ( void )
public UI\Control::enable ( void )
public UI\Control UI\Control::getParent ( void )
public int UI\Control::getTopLevel ( void )
public UI\Control::hide ( void )
public bool UI\Control::isEnabled ( void )
public bool UI\Control::isVisible ( void )
public UI\Control::setParent ( UI\Control $parent )
public UI\Control::show ( void )
}

Table of Contents

  • UI\Controls\Spin::__construct — Construct a new Spin
  • UI\Controls\Spin::getValue — Get Value
  • UI\Controls\Spin::onChange — Change Handler
  • UI\Controls\Spin::setValue — Set Value
UI\Controls\MultilineEntry::setText
UI\Controls\Spin::__construct
UI


Construct a new Spin

UI\Controls\Spin
UI\Controls\Spin::getValue
UI\Controls\Spin
PHP Manual

UI\Controls\Spin::__construct

(PHP 7, UI 0.9.9)

UI\Controls\Spin::__construct — Construct a new Spin

说明

public UI\Controls\Spin::__construct ( integer $min , integer $max )

Constructs a new Spin with the given range

参数

min

The minimum value allowed

max

The maximum value allowed

UI\Controls\Spin
UI\Controls\Spin::getValue
UI\Controls\Spin


Get Value

UI\Controls\Spin::__construct
UI\Controls\Spin::onChange
UI\Controls\Spin
PHP Manual

UI\Controls\Spin::getValue

(PHP 7, UI 0.9.9)

UI\Controls\Spin::getValue — Get Value

说明

public int UI\Controls\Spin::getValue ( void )

Get the value in this Spin

参数

此函数没有参数。

UI\Controls\Spin::__construct
UI\Controls\Spin::onChange
UI\Controls\Spin


Change Handler

UI\Controls\Spin::getValue
UI\Controls\Spin::setValue
UI\Controls\Spin
PHP Manual

UI\Controls\Spin::onChange

(PHP 7, UI 0.9.9)

UI\Controls\Spin::onChange — Change Handler

说明

protected UI\Controls\Spin::onChange ( void )

Shall be executed when the value in this Spin changes

参数

此函数没有参数。

UI\Controls\Spin::getValue
UI\Controls\Spin::setValue
UI\Controls\Spin


Set Value

UI\Controls\Spin::onChange
UI\Controls\Slider
UI\Controls\Spin
PHP Manual

UI\Controls\Spin::setValue

(PHP 7, UI 0.9.9)

UI\Controls\Spin::setValue — Set Value

说明

public UI\Controls\Spin::setValue ( integer $value )

Set the value in this Spin

参数

value

The new value

UI\Controls\Spin::onChange
UI\Controls\Slider
UI\Controls\Spin


Slider Control

(PHP 7, UI 0.9.9)

简介

A Slider is a control which represents a range, and a current value in the range. The sliding element of the control (sometimes called the "thumb") reflects the value, and can be adjusted within the range.

类摘要

UI\Controls\Slider extends UI\Control {
/* Constructor */
public __construct ( integer $min , integer $max )
/* 方法 */
public integer getValue ( void )
protected onChange ( void )
public setValue ( integer $value )
/* 继承的方法 */
public UI\Control::destroy ( void )
public UI\Control::disable ( void )
public UI\Control::enable ( void )
public UI\Control UI\Control::getParent ( void )
public int UI\Control::getTopLevel ( void )
public UI\Control::hide ( void )
public bool UI\Control::isEnabled ( void )
public bool UI\Control::isVisible ( void )
public UI\Control::setParent ( UI\Control $parent )
public UI\Control::show ( void )
}

Table of Contents

  • UI\Controls\Slider::__construct — Construct a new Slider
  • UI\Controls\Slider::getValue — Get Value
  • UI\Controls\Slider::onChange — Change Handler
  • UI\Controls\Slider::setValue — Set Value
UI\Controls\Spin::setValue
UI\Controls\Slider::__construct
UI


Construct a new Slider

UI\Controls\Slider
UI\Controls\Slider::getValue
UI\Controls\Slider
PHP Manual

UI\Controls\Slider::__construct

(PHP 7, UI 0.9.9)

UI\Controls\Slider::__construct — Construct a new Slider

说明

public UI\Controls\Slider::__construct ( integer $min , integer $max )

Construct a new Slider with the given range

参数

min

The minimum allowed value

max

The maximum allowed value

UI\Controls\Slider
UI\Controls\Slider::getValue
UI\Controls\Slider


Get Value

UI\Controls\Slider::__construct
UI\Controls\Slider::onChange
UI\Controls\Slider
PHP Manual

UI\Controls\Slider::getValue

(PHP 7, UI 0.9.9)

UI\Controls\Slider::getValue — Get Value

说明

public integer UI\Controls\Slider::getValue ( void )

Get the value from this Slider

参数

此函数没有参数。

UI\Controls\Slider::__construct
UI\Controls\Slider::onChange
UI\Controls\Slider


Change Handler

UI\Controls\Slider::getValue
UI\Controls\Slider::setValue
UI\Controls\Slider
PHP Manual

UI\Controls\Slider::onChange

(PHP 7, UI 0.9.9)

UI\Controls\Slider::onChange — Change Handler

说明

protected UI\Controls\Slider::onChange ( void )

Shall be executed when the value of this Slider changes

参数

此函数没有参数。

UI\Controls\Slider::getValue
UI\Controls\Slider::setValue
UI\Controls\Slider


Set Value

UI\Controls\Slider::onChange
UI\Controls\Progress
UI\Controls\Slider
PHP Manual

UI\Controls\Slider::setValue

(PHP 7, UI 0.9.9)

UI\Controls\Slider::setValue — Set Value

说明

public UI\Controls\Slider::setValue ( integer $value )

Shall set the value for this Slider

参数

value

The new value

UI\Controls\Slider::onChange
UI\Controls\Progress
UI\Controls\Slider


Progress Control

(PHP 7, UI 0.9.9)

简介

A Progress control is a familiar Progress bar: It represents progress as a percentage, with a possible range of 0 to 100 (inclusive).

类摘要

UI\Controls\Progress extends UI\Control {
/* 方法 */
public int getValue ( void )
public setValue ( integer $value )
/* 继承的方法 */
public UI\Control::destroy ( void )
public UI\Control::disable ( void )
public UI\Control::enable ( void )
public UI\Control UI\Control::getParent ( void )
public int UI\Control::getTopLevel ( void )
public UI\Control::hide ( void )
public bool UI\Control::isEnabled ( void )
public bool UI\Control::isVisible ( void )
public UI\Control::setParent ( UI\Control $parent )
public UI\Control::show ( void )
}

Table of Contents

  • UI\Controls\Progress::getValue — Get Value
  • UI\Controls\Progress::setValue — Set Value
UI\Controls\Slider::setValue
UI\Controls\Progress::getValue
UI


Get Value

UI\Controls\Progress
UI\Controls\Progress::setValue
UI\Controls\Progress
PHP Manual

UI\Controls\Progress::getValue

(PHP 7, UI 0.9.9)

UI\Controls\Progress::getValue — Get Value

说明

public int UI\Controls\Progress::getValue ( void )

Shall retrieve the current value of this Progress bar

参数

此函数没有参数。

UI\Controls\Progress
UI\Controls\Progress::setValue
UI\Controls\Progress


Set Value

UI\Controls\Progress::getValue
UI\Controls\Separator
UI\Controls\Progress
PHP Manual

UI\Controls\Progress::setValue

(PHP 7, UI 0.9.9)

UI\Controls\Progress::setValue — Set Value

说明

public UI\Controls\Progress::setValue ( integer $value )

Shall set the value for this Progress bar

参数

value

An integer between 0 and 100 (inclusive)

UI\Controls\Progress::getValue
UI\Controls\Separator
UI\Controls\Progress


Control Separator

(PHP 7, UI 0.9.9)

简介

A Separator represents a control separator, it has no other function.

类摘要

UI\Controls\Separator extends UI\Control {
/* Constants */
const integer Horizontal ;
const integer Vertical ;
/* Constructor */
public __construct ([ integer $type = UI\Controls\Separator::Horizontal ] )
/* 继承的方法 */
public UI\Control::destroy ( void )
public UI\Control::disable ( void )
public UI\Control::enable ( void )
public UI\Control UI\Control::getParent ( void )
public int UI\Control::getTopLevel ( void )
public UI\Control::hide ( void )
public bool UI\Control::isEnabled ( void )
public bool UI\Control::isVisible ( void )
public UI\Control::setParent ( UI\Control $parent )
public UI\Control::show ( void )
}

预定义常量

UI\Controls\Separator::Horizontal

A Horizontal Separator

UI\Controls\Separator::Vertical

A Vertical Separator

Table of Contents

  • UI\Controls\Separator::__construct — Construct a new Separator
UI\Controls\Progress::setValue
UI\Controls\Separator::__construct
UI


Construct a new Separator

UI\Controls\Separator
UI\Controls\Combo
UI\Controls\Separator
PHP Manual

UI\Controls\Separator::__construct

(PHP 7, UI 0.9.9)

UI\Controls\Separator::__construct — Construct a new Separator

说明

public UI\Controls\Separator::__construct ([ integer $type = UI\Controls\Separator::Horizontal ] )

Shall construct a new Separator of the given type

参数

type

Separator::Horizonal or Separator::Vertical

UI\Controls\Separator
UI\Controls\Combo
UI\Controls\Separator


Combo Control

(PHP 7, UI 0.9.9)

简介

A Combo control represents a list of options, like the familiar select HTML element.

类摘要

UI\Controls\Combo extends UI\Control {
/* 方法 */
public append ( string $text )
public integer getSelected ( void )
protected onSelected ( void )
public setSelected ( integer $index )
/* 继承的方法 */
public UI\Control::destroy ( void )
public UI\Control::disable ( void )
public UI\Control::enable ( void )
public UI\Control UI\Control::getParent ( void )
public int UI\Control::getTopLevel ( void )
public UI\Control::hide ( void )
public bool UI\Control::isEnabled ( void )
public bool UI\Control::isVisible ( void )
public UI\Control::setParent ( UI\Control $parent )
public UI\Control::show ( void )
}

Table of Contents

  • UI\Controls\Combo::append — Append Option
  • UI\Controls\Combo::getSelected — Get Selected Option
  • UI\Controls\Combo::onSelected — Selected Handler
  • UI\Controls\Combo::setSelected — Set Selected Option
UI\Controls\Separator::__construct
UI\Controls\Combo::append
UI


Append Option

UI\Controls\Combo
UI\Controls\Combo::getSelected
UI\Controls\Combo
PHP Manual

UI\Controls\Combo::append

(PHP 7, UI 0.9.9)

UI\Controls\Combo::append — Append Option

说明

public UI\Controls\Combo::append ( string $text )

Append an option to this Combo

参数

text

The text for the new option

UI\Controls\Combo
UI\Controls\Combo::getSelected
UI\Controls\Combo


Get Selected Option

UI\Controls\Combo::append
UI\Controls\Combo::onSelected
UI\Controls\Combo
PHP Manual

UI\Controls\Combo::getSelected

(PHP 7, UI 0.9.9)

UI\Controls\Combo::getSelected — Get Selected Option

说明

public integer UI\Controls\Combo::getSelected ( void )

Shall retrieve the index of the option selected in this Combo

参数

此函数没有参数。

UI\Controls\Combo::append
UI\Controls\Combo::onSelected
UI\Controls\Combo


Selected Handler

UI\Controls\Combo::getSelected
UI\Controls\Combo::setSelected
UI\Controls\Combo
PHP Manual

UI\Controls\Combo::onSelected

(PHP 7, UI 0.9.9)

UI\Controls\Combo::onSelected — Selected Handler

说明

protected UI\Controls\Combo::onSelected ( void )

Shall be executed when an option is selected in this Combo

参数

此函数没有参数。

UI\Controls\Combo::getSelected
UI\Controls\Combo::setSelected
UI\Controls\Combo


Set Selected Option

UI\Controls\Combo::onSelected
UI\Controls\EditableCombo
UI\Controls\Combo
PHP Manual

UI\Controls\Combo::setSelected

(PHP 7, UI 0.9.9)

UI\Controls\Combo::setSelected — Set Selected Option

说明

public UI\Controls\Combo::setSelected ( integer $index )

Shall set the currently selected option in this Combo

参数

index

The index of the option to select

UI\Controls\Combo::onSelected
UI\Controls\EditableCombo
UI\Controls\Combo


EdiableCombo Control

(PHP 7, UI 0.9.9)

简介

An Editable Combo is a Combo which allows the user to enter custom options

类摘要

UI\Controls\EditableCombo extends UI\Control {
/* 方法 */
public append ( string $text )
public string getText ( void )
protected onChange ( void )
public setText ( string $text )
/* 继承的方法 */
public UI\Control::destroy ( void )
public UI\Control::disable ( void )
public UI\Control::enable ( void )
public UI\Control UI\Control::getParent ( void )
public int UI\Control::getTopLevel ( void )
public UI\Control::hide ( void )
public bool UI\Control::isEnabled ( void )
public bool UI\Control::isVisible ( void )
public UI\Control::setParent ( UI\Control $parent )
public UI\Control::show ( void )
}

Table of Contents

  • UI\Controls\EditableCombo::append — Append Option
  • UI\Controls\EditableCombo::getText — Get Text
  • UI\Controls\EditableCombo::onChange — Change Handler
  • UI\Controls\EditableCombo::setText — Set Text
UI\Controls\Combo::setSelected
UI\Controls\EditableCombo::append
UI


Append Option

UI\Controls\EditableCombo
UI\Controls\EditableCombo::getText
UI\Controls\EditableCombo
PHP Manual

UI\Controls\EditableCombo::append

(PHP 7, UI 0.9.9)

UI\Controls\EditableCombo::append — Append Option

说明

public UI\Controls\EditableCombo::append ( string $text )

Shall append a new option to this Editable Combo

参数

text

The text for the new option

UI\Controls\EditableCombo
UI\Controls\EditableCombo::getText
UI\Controls\EditableCombo


Get Text

UI\Controls\EditableCombo::append
UI\Controls\EditableCombo::onChange
UI\Controls\EditableCombo
PHP Manual

UI\Controls\EditableCombo::getText

(PHP 7, UI 0.9.9)

UI\Controls\EditableCombo::getText — Get Text

说明

public string UI\Controls\EditableCombo::getText ( void )

Get the value of the currently selected option in this Editable Combo

参数

此函数没有参数。

UI\Controls\EditableCombo::append
UI\Controls\EditableCombo::onChange
UI\Controls\EditableCombo


Change Handler

UI\Controls\EditableCombo::getText
UI\Controls\EditableCombo::setText
UI\Controls\EditableCombo
PHP Manual

UI\Controls\EditableCombo::onChange

(PHP 7, UI 0.9.9)

UI\Controls\EditableCombo::onChange — Change Handler

说明

protected UI\Controls\EditableCombo::onChange ( void )

Shall be executed when the value of this Editable Combobox changes

参数

此函数没有参数。

UI\Controls\EditableCombo::getText
UI\Controls\EditableCombo::setText
UI\Controls\EditableCombo


Set Text

UI\Controls\EditableCombo::onChange
UI\Controls\Radio
UI\Controls\EditableCombo
PHP Manual

UI\Controls\EditableCombo::setText

(PHP 7, UI 0.9.9)

UI\Controls\EditableCombo::setText — Set Text

说明

public UI\Controls\EditableCombo::setText ( string $text )

Shall set the text of the currently selected option in this Editable Combo

参数

text

The new text

UI\Controls\EditableCombo::onChange
UI\Controls\Radio
UI\Controls\EditableCombo


Radio Control

(PHP 7, UI 0.9.9)

简介

A Radio is similar to the radio input type familiar from HTML

类摘要

UI\Controls\Radio extends UI\Control {
/* 方法 */
public append ( string $text )
public integer getSelected ( void )
protected onSelected ( void )
public setSelected ( integer $index )
/* 继承的方法 */
public UI\Control::destroy ( void )
public UI\Control::disable ( void )
public UI\Control::enable ( void )
public UI\Control UI\Control::getParent ( void )
public int UI\Control::getTopLevel ( void )
public UI\Control::hide ( void )
public bool UI\Control::isEnabled ( void )
public bool UI\Control::isVisible ( void )
public UI\Control::setParent ( UI\Control $parent )
public UI\Control::show ( void )
}

Table of Contents

  • UI\Controls\Radio::append — Append Option
  • UI\Controls\Radio::getSelected — Get Selected Option
  • UI\Controls\Radio::onSelected — Selected Handler
  • UI\Controls\Radio::setSelected — Set Selected Option
UI\Controls\EditableCombo::setText
UI\Controls\Radio::append
UI


Append Option

UI\Controls\Radio
UI\Controls\Radio::getSelected
UI\Controls\Radio
PHP Manual

UI\Controls\Radio::append

(PHP 7, UI 0.9.9)

UI\Controls\Radio::append — Append Option

说明

public UI\Controls\Radio::append ( string $text )

Shall append a new option to this Radio

参数

text

The text (label) for the option

UI\Controls\Radio
UI\Controls\Radio::getSelected
UI\Controls\Radio


Get Selected Option

UI\Controls\Radio::append
UI\Controls\Radio::onSelected
UI\Controls\Radio
PHP Manual

UI\Controls\Radio::getSelected

(PHP 7, UI 0.9.9)

UI\Controls\Radio::getSelected — Get Selected Option

说明

public integer UI\Controls\Radio::getSelected ( void )

Shall retrieve the index of the currently selected option in this Radio

参数

此函数没有参数。

UI\Controls\Radio::append
UI\Controls\Radio::onSelected
UI\Controls\Radio


Selected Handler

UI\Controls\Radio::getSelected
UI\Controls\Radio::setSelected
UI\Controls\Radio
PHP Manual

UI\Controls\Radio::onSelected

(PHP 7, UI 0.9.9)

UI\Controls\Radio::onSelected — Selected Handler

说明

protected UI\Controls\Radio::onSelected ( void )

Shall be executed when the option selected in this Radio changes

参数

此函数没有参数。

UI\Controls\Radio::getSelected
UI\Controls\Radio::setSelected
UI\Controls\Radio


Set Selected Option

UI\Controls\Radio::onSelected
UI\Controls\Picker
UI\Controls\Radio
PHP Manual

UI\Controls\Radio::setSelected

(PHP 7, UI 0.9.9)

UI\Controls\Radio::setSelected — Set Selected Option

说明

public UI\Controls\Radio::setSelected ( integer $index )

Shall set the currently selected option in this Radio

参数

index

The index of the option to select

UI\Controls\Radio::onSelected
UI\Controls\Picker
UI\Controls\Radio


Picker Control

(PHP 7, UI 0.9.9)

简介

A Picker represents a button which when clicked presents a native Date/Time/DateTime Picker interface to the user.

类摘要

UI\Controls\Picker extends UI\Control {
/* Constants */
const integer Date ;
const integer Time ;
const integer DateTime ;
/* Constructor */
public __construct ([ integer $type = UI\Controls\Picker::Date ] )
/* 继承的方法 */
public UI\Control::destroy ( void )
public UI\Control::disable ( void )
public UI\Control::enable ( void )
public UI\Control UI\Control::getParent ( void )
public int UI\Control::getTopLevel ( void )
public UI\Control::hide ( void )
public bool UI\Control::isEnabled ( void )
public bool UI\Control::isVisible ( void )
public UI\Control::setParent ( UI\Control $parent )
public UI\Control::show ( void )
}

预定义常量

UI\Controls\Picker::Date

A Date Picker

UI\Controls\Picker::Time

A Time Picker

UI\Controls\Picker::DateTime

A Date and Time Picker

Table of Contents

  • UI\Controls\Picker::__construct — Construct a new Picker
UI\Controls\Radio::setSelected
UI\Controls\Picker::__construct
UI


Construct a new Picker

UI\Controls\Picker
UI\Controls\Form
UI\Controls\Picker
PHP Manual

UI\Controls\Picker::__construct

(PHP 7, UI 0.9.9)

UI\Controls\Picker::__construct — Construct a new Picker

说明

public UI\Controls\Picker::__construct ([ integer $type = UI\Controls\Picker::Date ] )

Construct a new Picker of the given type

参数

type

Picker::Date, Picker::Time, or Picker::DateTime

UI\Controls\Picker
UI\Controls\Form
UI\Controls\Picker


Control Form (Arrangement)

(PHP 7, UI 0.9.9)

简介

A Form is a control which allows the arrangement of other controls into a familiar layout (the form).

类摘要

UI\Controls\Form extends UI\Control {
/* 属性 */
protected $controls ;
/* 方法 */
public integer append ( string $label , UI\Control $control [, boolean $stretchy = false ] )
public boolean delete ( integer $index )
public bool isPadded ( void )
public setPadded ( boolean $padded )
/* 继承的方法 */
public UI\Control::destroy ( void )
public UI\Control::disable ( void )
public UI\Control::enable ( void )
public UI\Control UI\Control::getParent ( void )
public int UI\Control::getTopLevel ( void )
public UI\Control::hide ( void )
public bool UI\Control::isEnabled ( void )
public bool UI\Control::isVisible ( void )
public UI\Control::setParent ( UI\Control $parent )
public UI\Control::show ( void )
}

属性

controls

Contains controls, should not be manipulated directly

Table of Contents

  • UI\Controls\Form::append — Append Control
  • UI\Controls\Form::delete — Delete Control
  • UI\Controls\Form::isPadded — Padding Detection
  • UI\Controls\Form::setPadded — Set Padding
UI\Controls\Picker::__construct
UI\Controls\Form::append
UI


Append Control

UI\Controls\Form
UI\Controls\Form::delete
UI\Controls\Form
PHP Manual

UI\Controls\Form::append

(PHP 7, UI 0.9.9)

UI\Controls\Form::append — Append Control

说明

public integer UI\Controls\Form::append ( string $label , UI\Control $control [, boolean $stretchy = false ] )

Shall append the control to the form, and set the label

参数

label

The text for the label

control

A control

stretchy

Should be set true to stretch the control

返回值

Shall return the index of the appended control, may be 0

UI\Controls\Form
UI\Controls\Form::delete
UI\Controls\Form


Delete Control

UI\Controls\Form::append
UI\Controls\Form::isPadded
UI\Controls\Form
PHP Manual

UI\Controls\Form::delete

(PHP 7, UI 0.9.9)

UI\Controls\Form::delete — Delete Control

说明

public boolean UI\Controls\Form::delete ( integer $index )

Shall delete the control at the given index in this Form

参数

index

The index of the control to remove

返回值

Indication of succcess

UI\Controls\Form::append
UI\Controls\Form::isPadded
UI\Controls\Form


Padding Detection

UI\Controls\Form::delete
UI\Controls\Form::setPadded
UI\Controls\Form
PHP Manual

UI\Controls\Form::isPadded

(PHP 7, UI 0.9.9)

UI\Controls\Form::isPadded — Padding Detection

说明

public bool UI\Controls\Form::isPadded ( void )

Shall detect if padding is enabled on this Form

参数

此函数没有参数。

UI\Controls\Form::delete
UI\Controls\Form::setPadded
UI\Controls\Form


Set Padding

UI\Controls\Form::isPadded
UI\Controls\Grid
UI\Controls\Form
PHP Manual

UI\Controls\Form::setPadded

(PHP 7, UI 0.9.9)

UI\Controls\Form::setPadded — Set Padding

说明

public UI\Controls\Form::setPadded ( boolean $padded )

Shall enable or disable padding on this Form

参数

padded

UI\Controls\Form::isPadded
UI\Controls\Grid
UI\Controls\Form


Control Grid (Arrangement)

(PHP 7, UI 0.9.9)

简介

A Grid is a control which is allows the arrangement of children into a grid

类摘要

UI\Controls\Grid extends UI\Control {
/* Constants */
const integer Fill ;
const integer Start ;
const integer Center ;
const integer End ;
const integer Leading ;
const integer Top ;
const integer Trailing ;
const integer Bottom ;
/* 属性 */
protected $controls ;
/* 方法 */
public append ( UI\Control $control , integer $left , integer $top , integer $xspan , integer $yspan , boolean $hexpand , integer $halign , boolean $vexpand , integer $valign )
public bool isPadded ( void )
public setPadded ( boolean $padding )
/* 继承的方法 */
public UI\Control::destroy ( void )
public UI\Control::disable ( void )
public UI\Control::enable ( void )
public UI\Control UI\Control::getParent ( void )
public int UI\Control::getTopLevel ( void )
public UI\Control::hide ( void )
public bool UI\Control::isEnabled ( void )
public bool UI\Control::isVisible ( void )
public UI\Control::setParent ( UI\Control $parent )
public UI\Control::show ( void )
}

预定义常量

UI\Controls\Grid::Fill

UI\Controls\Grid::Start

UI\Controls\Grid::Center

UI\Controls\Grid::End

UI\Controls\Grid::Leading

UI\Controls\Grid::Top

UI\Controls\Grid::Trailing

UI\Controls\Grid::Bottom

属性

controls

Contains controls, should not be manipulated directly

Table of Contents

  • UI\Controls\Grid::append — Append Control
  • UI\Controls\Grid::isPadded — Padding Detection
  • UI\Controls\Grid::setPadded — Set Padding
UI\Controls\Form::setPadded
UI\Controls\Grid::append
UI


Append Control

UI\Controls\Grid
UI\Controls\Grid::isPadded
UI\Controls\Grid
PHP Manual

UI\Controls\Grid::append

(PHP 7, UI 0.9.9)

UI\Controls\Grid::append — Append Control

说明

public UI\Controls\Grid::append ( UI\Control $control , integer $left , integer $top , integer $xspan , integer $yspan , boolean $hexpand , integer $halign , boolean $vexpand , integer $valign )

Warning

本函数还未编写文档，仅有参数列表。

参数

control

The Control to append

left

top

xspan

yspan

hexpand

halign

vexpand

valign

返回值

UI\Controls\Grid
UI\Controls\Grid::isPadded
UI\Controls\Grid


Padding Detection

UI\Controls\Grid::append
UI\Controls\Grid::setPadded
UI\Controls\Grid
PHP Manual

UI\Controls\Grid::isPadded

(PHP 7, UI 0.9.9)

UI\Controls\Grid::isPadded — Padding Detection

说明

public bool UI\Controls\Grid::isPadded ( void )

Shall detect if padding is enabled on this Grid

参数

此函数没有参数。

UI\Controls\Grid::append
UI\Controls\Grid::setPadded
UI\Controls\Grid


Set Padding

UI\Controls\Grid::isPadded
UI\Controls\Group
UI\Controls\Grid
PHP Manual

UI\Controls\Grid::setPadded

(PHP 7, UI 0.9.9)

UI\Controls\Grid::setPadded — Set Padding

说明

public UI\Controls\Grid::setPadded ( boolean $padding )

Shall enable or disable padding for this Grid

参数

padding

UI\Controls\Grid::isPadded
UI\Controls\Group
UI\Controls\Grid


Control Group (Arrangement)

(PHP 7, UI 0.9.9)

简介

A Group is a titled container for child controls

类摘要

UI\Controls\Group extends UI\Control {
/* 属性 */
protected $controls ;
/* Constructor */
public __construct ( string $title )
/* 方法 */
public append ( UI\Control $control )
public string getTitle ( void )
public bool hasMargin ( void )
public setMargin ( boolean $margin )
public setTitle ( string $title )
/* 继承的方法 */
public UI\Control::destroy ( void )
public UI\Control::disable ( void )
public UI\Control::enable ( void )
public UI\Control UI\Control::getParent ( void )
public int UI\Control::getTopLevel ( void )
public UI\Control::hide ( void )
public bool UI\Control::isEnabled ( void )
public bool UI\Control::isVisible ( void )
public UI\Control::setParent ( UI\Control $parent )
public UI\Control::show ( void )
}

属性

controls

Contains controls, should not be manipulated directly

Table of Contents

  • UI\Controls\Group::append — Append Control
  • UI\Controls\Group::__construct — Construct a new Group
  • UI\Controls\Group::getTitle — Get Title
  • UI\Controls\Group::hasMargin — Margin Detection
  • UI\Controls\Group::setMargin — Set Margin
  • UI\Controls\Group::setTitle — Set Title
UI\Controls\Grid::setPadded
UI\Controls\Group::append
UI


Append Control

UI\Controls\Group
UI\Controls\Group::__construct
UI\Controls\Group
PHP Manual

UI\Controls\Group::append

(No version information available, might only be in Git)

UI\Controls\Group::append — Append Control

说明

public UI\Controls\Group::append ( UI\Control $control )

Shall append a control to this Group

参数

control

The control to append

UI\Controls\Group
UI\Controls\Group::__construct
UI\Controls\Group


Construct a new Group

UI\Controls\Group::append
UI\Controls\Group::getTitle
UI\Controls\Group
PHP Manual

UI\Controls\Group::__construct

(PHP 7, UI 0.9.9)

UI\Controls\Group::__construct — Construct a new Group

说明

public UI\Controls\Group::__construct ( string $title )

Shall construct a new Group with the given title

参数

title

The text for the title label

UI\Controls\Group::append
UI\Controls\Group::getTitle
UI\Controls\Group


Get Title

UI\Controls\Group::__construct
UI\Controls\Group::hasMargin
UI\Controls\Group
PHP Manual

UI\Controls\Group::getTitle

(PHP 7, UI 0.9.9)

UI\Controls\Group::getTitle — Get Title

说明

public string UI\Controls\Group::getTitle ( void )

Shall return the current title for this Group

参数

此函数没有参数。

返回值

The current title

UI\Controls\Group::__construct
UI\Controls\Group::hasMargin
UI\Controls\Group


Margin Detection

UI\Controls\Group::getTitle
UI\Controls\Group::setMargin
UI\Controls\Group
PHP Manual

UI\Controls\Group::hasMargin

(PHP 7, UI 0.9.9)

UI\Controls\Group::hasMargin — Margin Detection

说明

public bool UI\Controls\Group::hasMargin ( void )

Shall detect if this Group has a margin

参数

此函数没有参数。

UI\Controls\Group::getTitle
UI\Controls\Group::setMargin
UI\Controls\Group


Set Margin

UI\Controls\Group::hasMargin
UI\Controls\Group::setTitle
UI\Controls\Group
PHP Manual

UI\Controls\Group::setMargin

(PHP 7, UI 0.9.9)

UI\Controls\Group::setMargin — Set Margin

说明

public UI\Controls\Group::setMargin ( boolean $margin )

Shall enable or disable margins for this Group

参数

margin

UI\Controls\Group::hasMargin
UI\Controls\Group::setTitle
UI\Controls\Group


Set Title

UI\Controls\Group::setMargin
UI\Controls\Box
UI\Controls\Group
PHP Manual

UI\Controls\Group::setTitle

(PHP 7, UI 0.9.9)

UI\Controls\Group::setTitle — Set Title

说明

public UI\Controls\Group::setTitle ( string $title )

Shall set the title for this Group

参数

title

The text for the new title

UI\Controls\Group::setMargin
UI\Controls\Box
UI\Controls\Group


Control Box (Arrangement)

(PHP 7, UI 0.9.9)

简介

A Box allows the arrangement of other controls

类摘要

UI\Controls\Box extends UI\Control {
/* Constants */
const integer Vertical ;
const integer Horizontal ;
/* 属性 */
protected $controls ;
/* Constructor */
public __construct ([ integer $orientation = UI\Controls\Box::Horizontal ] )
/* 方法 */
public integer append ( Control $control [, boolean $stretchy = false ] )
public boolean delete ( integer $index )
public integer getOrientation ( void )
public bool isPadded ( void )
public setPadded ( boolean $padded )
/* 继承的方法 */
public UI\Control::destroy ( void )
public UI\Control::disable ( void )
public UI\Control::enable ( void )
public UI\Control UI\Control::getParent ( void )
public int UI\Control::getTopLevel ( void )
public UI\Control::hide ( void )
public bool UI\Control::isEnabled ( void )
public bool UI\Control::isVisible ( void )
public UI\Control::setParent ( UI\Control $parent )
public UI\Control::show ( void )
}

属性

controls

Contains controls, should not be manipulated directly

预定义常量

UI\Controls\Box::Vertical

UI\Controls\Box::Horizontal

Table of Contents

  • UI\Controls\Box::append — Append Control
  • UI\Controls\Box::__construct — Construct a new Box
  • UI\Controls\Box::delete — Delete Control
  • UI\Controls\Box::getOrientation — Get Orientation
  • UI\Controls\Box::isPadded — Padding Detection
  • UI\Controls\Box::setPadded — Set Padding
UI\Controls\Group::setTitle
UI\Controls\Box::append
UI


Append Control

UI\Controls\Box
UI\Controls\Box::__construct
UI\Controls\Box
PHP Manual

UI\Controls\Box::append

(PHP 7, UI 0.9.9)

UI\Controls\Box::append — Append Control

说明

public integer UI\Controls\Box::append ( Control $control [, boolean $stretchy = false ] )

Shall append the given control to this Box

参数

control

The control to append

stretchy

Set true to stretch the control

返回值

Shall return the index of the appended control, may be 0

UI\Controls\Box
UI\Controls\Box::__construct
UI\Controls\Box


Construct a new Box

UI\Controls\Box::append
UI\Controls\Box::delete
UI\Controls\Box
PHP Manual

UI\Controls\Box::__construct

(PHP 7, UI 0.9.9)

UI\Controls\Box::__construct — Construct a new Box

说明

public UI\Controls\Box::__construct ([ integer $orientation = UI\Controls\Box::Horizontal ] )

Shall construct a new box

参数

orientation

Box::Horizontal or Box::Vertical

UI\Controls\Box::append
UI\Controls\Box::delete
UI\Controls\Box


Delete Control

UI\Controls\Box::__construct
UI\Controls\Box::getOrientation
UI\Controls\Box
PHP Manual

UI\Controls\Box::delete

(PHP 7, UI 0.9.9)

UI\Controls\Box::delete — Delete Control

说明

public boolean UI\Controls\Box::delete ( integer $index )

Shall delete the control at the given index from this Box

参数

index

The index of the control to delete

返回值

Indication of success

UI\Controls\Box::__construct
UI\Controls\Box::getOrientation
UI\Controls\Box


Get Orientation

UI\Controls\Box::delete
UI\Controls\Box::isPadded
UI\Controls\Box
PHP Manual

UI\Controls\Box::getOrientation

(PHP 7, UI 0.9.9)

UI\Controls\Box::getOrientation — Get Orientation

说明

public integer UI\Controls\Box::getOrientation ( void )

Shall retrieve the orientation of this Box

参数

此函数没有参数。

UI\Controls\Box::delete
UI\Controls\Box::isPadded
UI\Controls\Box


Padding Detection

UI\Controls\Box::getOrientation
UI\Controls\Box::setPadded
UI\Controls\Box
PHP Manual

UI\Controls\Box::isPadded

(PHP 7, UI 0.9.9)

UI\Controls\Box::isPadded — Padding Detection

说明

public bool UI\Controls\Box::isPadded ( void )

Shall detect if padding is enabled on this Box

参数

此函数没有参数。

UI\Controls\Box::getOrientation
UI\Controls\Box::setPadded
UI\Controls\Box


Set Padding

UI\Controls\Box::isPadded
UI\Draw\Pen
UI\Controls\Box
PHP Manual

UI\Controls\Box::setPadded

(PHP 7, UI 0.9.9)

UI\Controls\Box::setPadded — Set Padding

说明

public UI\Controls\Box::setPadded ( boolean $padded )

Shall enable or disable padding on this Box

参数

padded

UI\Controls\Box::isPadded
UI\Draw\Pen
UI\Controls\Box


Draw Pen

(PHP 7, UI 0.9.9)

简介

The Pen is passed to the Area Draw event handler, it is used for clipping, filling, stroking, and writing to Draw Paths.

类摘要

final UI\Draw\Pen {
/* 方法 */
public clip ( UI\Draw\Path $path )
public fill ( UI\Draw\Path $path , UI\Draw\Brush $with )
public fill ( UI\Draw\Path $path , UI\Draw\Color $with )
public fill ( UI\Draw\Path $path , integer $with )
public restore ( void )
public save ( void )
public stroke ( UI\Draw\Path $path , UI\Draw\Brush $with , UI\Draw\Stroke $stroke )
public stroke ( UI\Draw\Path $path , UI\Draw\Color $with , UI\Draw\Stroke $stroke )
public stroke ( UI\Draw\Path $path , integer $with , UI\Draw\Stroke $stroke )
public transform ( UI\Draw\Matrix $matrix )
public write ( UI\Point $point , UI\Draw\Text\Layout $layout )
}

Table of Contents

  • UI\Draw\Pen::clip — Clip a Path
  • UI\Draw\Pen::fill — Fill a Path
  • UI\Draw\Pen::restore — Restore
  • UI\Draw\Pen::save — Save
  • UI\Draw\Pen::stroke — Stroke a Path
  • UI\Draw\Pen::transform — Matrix Transform
  • UI\Draw\Pen::write — Draw Text at Point
UI\Controls\Box::setPadded
UI\Draw\Pen::clip
UI


Clip a Path

UI\Draw\Pen
UI\Draw\Pen::fill
UI\Draw\Pen
PHP Manual

UI\Draw\Pen::clip

(PHP 7, UI 0.9.9)

UI\Draw\Pen::clip — Clip a Path

说明

public UI\Draw\Pen::clip ( UI\Draw\Path $path )

Shall clip the given Path

参数

path

The path to clip

UI\Draw\Pen
UI\Draw\Pen::fill
UI\Draw\Pen


Fill a Path

UI\Draw\Pen::clip
UI\Draw\Pen::restore
UI\Draw\Pen
PHP Manual

UI\Draw\Pen::fill

(PHP 7, UI 0.9.9)

UI\Draw\Pen::fill — Fill a Path

说明

public UI\Draw\Pen::fill ( UI\Draw\Path $path , UI\Draw\Brush $with )
public UI\Draw\Pen::fill ( UI\Draw\Path $path , UI\Draw\Color $with )
public UI\Draw\Pen::fill ( UI\Draw\Path $path , integer $with )

Shall fill the given path

参数

path

The path to fill

with

The color or brush to fill with

UI\Draw\Pen::clip
UI\Draw\Pen::restore
UI\Draw\Pen


Restore

UI\Draw\Pen::fill
UI\Draw\Pen::save
UI\Draw\Pen
PHP Manual

UI\Draw\Pen::restore

(PHP 7, UI 0.9.9)

UI\Draw\Pen::restore — Restore

说明

public UI\Draw\Pen::restore ( void )

Shall restore a previously saved Pen

参数

此函数没有参数。

UI\Draw\Pen::fill
UI\Draw\Pen::save
UI\Draw\Pen


Save

UI\Draw\Pen::restore
UI\Draw\Pen::stroke
UI\Draw\Pen
PHP Manual

UI\Draw\Pen::save

(PHP 7, UI 0.9.9)

UI\Draw\Pen::save — Save

说明

public UI\Draw\Pen::save ( void )

Shall save the Pen

参数

此函数没有参数。

UI\Draw\Pen::restore
UI\Draw\Pen::stroke
UI\Draw\Pen


Stroke a Path

UI\Draw\Pen::save
UI\Draw\Pen::transform
UI\Draw\Pen
PHP Manual

UI\Draw\Pen::stroke

(PHP 7, UI 0.9.9)

UI\Draw\Pen::stroke — Stroke a Path

说明

public UI\Draw\Pen::stroke ( UI\Draw\Path $path , UI\Draw\Brush $with , UI\Draw\Stroke $stroke )
public UI\Draw\Pen::stroke ( UI\Draw\Path $path , UI\Draw\Color $with , UI\Draw\Stroke $stroke )
public UI\Draw\Pen::stroke ( UI\Draw\Path $path , integer $with , UI\Draw\Stroke $stroke )

Shall stroke the given path

参数

path

The path to stroke

with

The color or brush to stroke with

stroke

The configuration of the stroke

UI\Draw\Pen::save
UI\Draw\Pen::transform
UI\Draw\Pen


Matrix Transform

UI\Draw\Pen::stroke
UI\Draw\Pen::write
UI\Draw\Pen
PHP Manual

UI\Draw\Pen::transform

(PHP 7, UI 0.9.9)

UI\Draw\Pen::transform — Matrix Transform

说明

public UI\Draw\Pen::transform ( UI\Draw\Matrix $matrix )

Shall perform matrix transformation

参数

matrix

The matrix to use

UI\Draw\Pen::stroke
UI\Draw\Pen::write
UI\Draw\Pen


Draw Text at Point

UI\Draw\Pen::transform
UI\Draw\Path
UI\Draw\Pen
PHP Manual

UI\Draw\Pen::write

(PHP 7, UI 0.9.9)

UI\Draw\Pen::write — Draw Text at Point

说明

public UI\Draw\Pen::write ( UI\Point $point , UI\Draw\Text\Layout $layout )

Shall draw the given text layout at the given point

参数

point

The point to perform the drawing

layout

The layout of the text to draw

UI\Draw\Pen::transform
UI\Draw\Path
UI\Draw\Pen


Draw Path

(PHP 7, UI 0.9.9)

简介

A Draw Path guides a Draw Pen, telling the Pen where to draw on an Area.

类摘要

UI\Draw\Path {
/* Constants */
const integer Winding ;
const integer Alternate ;
/* Constructor */
public __construct ([ integer $mode = UI\Draw\Path::Winding ] )
/* 方法 */
public addRectangle ( UI\Point $point , UI\Size $size )
public arcTo ( UI\Point $point , float $radius , float $angle , float $sweep , float $negative )
public bezierTo ( UI\Point $point , float $radius , float $angle , float $sweep , float $negative )
public closeFigure ( void )
public end ( void )
public lineTo ( UI\Point $point , float $radius , float $angle , float $sweep , float $negative )
public newFigure ( UI\Point $point )
public newFigureWithArc ( UI\Point $point , float $radius , float $angle , float $sweep , float $negative )
}

预定义常量

UI\Draw\Path::Winding

This is the default draw path mode

UI\Draw\Path::Alternate

This is the alternate draw path mode

Table of Contents

  • UI\Draw\Path::addRectangle — Draw a Rectangle
  • UI\Draw\Path::arcTo — Draw an Arc
  • UI\Draw\Path::bezierTo — Draw Bezier Curve
  • UI\Draw\Path::closeFigure — Close Figure
  • UI\Draw\Path::__construct — Construct a new Path
  • UI\Draw\Path::end — Finalize Path
  • UI\Draw\Path::lineTo — Draw a Line
  • UI\Draw\Path::newFigure — Draw Figure
  • UI\Draw\Path::newFigureWithArc — Draw Figure with Arc
UI\Draw\Pen::write
UI\Draw\Path::addRectangle
UI


Draw a Rectangle

UI\Draw\Path
UI\Draw\Path::arcTo
UI\Draw\Path
PHP Manual

UI\Draw\Path::addRectangle

(PHP 7, UI 0.9.9)

UI\Draw\Path::addRectangle — Draw a Rectangle

说明

public UI\Draw\Path::addRectangle ( UI\Point $point , UI\Size $size )

Shall map the path of a rectangle of the given size, at the given point

参数

point

The point to begin the shape

size

The size of the rectangle

UI\Draw\Path
UI\Draw\Path::arcTo
UI\Draw\Path


Draw an Arc

UI\Draw\Path::addRectangle
UI\Draw\Path::bezierTo
UI\Draw\Path
PHP Manual

UI\Draw\Path::arcTo

(PHP 7, UI 0.9.9)

UI\Draw\Path::arcTo — Draw an Arc

说明

public UI\Draw\Path::arcTo ( UI\Point $point , float $radius , float $angle , float $sweep , float $negative )

Shall map the path for an arc

参数

point

The point to begin mapping

radius

The radius of the arc

angle

The angle of the arc

sweep

The sweep of the arc

negative

返回值

UI\Draw\Path::addRectangle
UI\Draw\Path::bezierTo
UI\Draw\Path


Draw Bezier Curve

UI\Draw\Path::arcTo
UI\Draw\Path::closeFigure
UI\Draw\Path
PHP Manual

UI\Draw\Path::bezierTo

(PHP 7, UI 0.9.9)

UI\Draw\Path::bezierTo — Draw Bezier Curve

说明

public UI\Draw\Path::bezierTo ( UI\Point $point , float $radius , float $angle , float $sweep , float $negative )

Shall draw a bezier curve

参数

point

The point at which to begin mapping

radius

The radius of the curve

angle

The angle of the curve

sweep

The sweep of the curve

negative

UI\Draw\Path::arcTo
UI\Draw\Path::closeFigure
UI\Draw\Path


Close Figure

UI\Draw\Path::bezierTo
UI\Draw\Path::__construct
UI\Draw\Path
PHP Manual

UI\Draw\Path::closeFigure

(PHP 7, UI 0.9.9)

UI\Draw\Path::closeFigure — Close Figure

说明

public UI\Draw\Path::closeFigure ( void )

Shall close the current figure

参数

此函数没有参数。

UI\Draw\Path::bezierTo
UI\Draw\Path::__construct
UI\Draw\Path


Construct a new Path

UI\Draw\Path::closeFigure
UI\Draw\Path::end
UI\Draw\Path
PHP Manual

UI\Draw\Path::__construct

(PHP 7, UI 0.9.9)

UI\Draw\Path::__construct — Construct a new Path

说明

public UI\Draw\Path::__construct ([ integer $mode = UI\Draw\Path::Winding ] )

Shall construct a new path in the given mode

参数

mode

Path::Winding or Path::Alternate

UI\Draw\Path::closeFigure
UI\Draw\Path::end
UI\Draw\Path


Finalize Path

UI\Draw\Path::__construct
UI\Draw\Path::lineTo
UI\Draw\Path
PHP Manual

UI\Draw\Path::end

(PHP 7, UI 0.9.9)

UI\Draw\Path::end — Finalize Path

说明

public UI\Draw\Path::end ( void )

Shall finalize this Path

参数

此函数没有参数。

UI\Draw\Path::__construct
UI\Draw\Path::lineTo
UI\Draw\Path


Draw a Line

UI\Draw\Path::end
UI\Draw\Path::newFigure
UI\Draw\Path
PHP Manual

UI\Draw\Path::lineTo

(PHP 7, UI 0.9.9)

UI\Draw\Path::lineTo — Draw a Line

说明

public UI\Draw\Path::lineTo ( UI\Point $point , float $radius , float $angle , float $sweep , float $negative )

Shall map the path for a line

参数

point

The point to begin mapping

radius

angle

sweep

negative

返回值

UI\Draw\Path::end
UI\Draw\Path::newFigure
UI\Draw\Path


Draw Figure

UI\Draw\Path::lineTo
UI\Draw\Path::newFigureWithArc
UI\Draw\Path
PHP Manual

UI\Draw\Path::newFigure

(PHP 7, UI 0.9.9)

UI\Draw\Path::newFigure — Draw Figure

说明

public UI\Draw\Path::newFigure ( UI\Point $point )

Shall map a new figure at the given point

参数

point

The point to begin mapping

UI\Draw\Path::lineTo
UI\Draw\Path::newFigureWithArc
UI\Draw\Path


Draw Figure with Arc

UI\Draw\Path::newFigure
UI\Draw\Matrix
UI\Draw\Path
PHP Manual

UI\Draw\Path::newFigureWithArc

(PHP 7, UI 0.9.9)

UI\Draw\Path::newFigureWithArc — Draw Figure with Arc

说明

public UI\Draw\Path::newFigureWithArc ( UI\Point $point , float $radius , float $angle , float $sweep , float $negative )

参数

point

radius

angle

sweep

negative

返回值

UI\Draw\Path::newFigure
UI\Draw\Matrix
UI\Draw\Path


Draw Matrix

(PHP 7, UI 0.9.9)

简介

类摘要

UI\Draw\Matrix {
/* 方法 */
public invert ( void )
public bool isInvertible ( void )
public UI\Draw\Matrix multiply ( UI\Draw\Matrix $matrix )
public rotate ( UI\Point $point , float $amount )
public scale ( UI\Point $center , UI\Point $point )
public skew ( UI\Point $point , UI\Point $amount )
public translate ( UI\Point $point )
}

Table of Contents

  • UI\Draw\Matrix::invert — Invert Matrix
  • UI\Draw\Matrix::isInvertible — Invertible Detection
  • UI\Draw\Matrix::multiply — Multiply Matrix
  • UI\Draw\Matrix::rotate — Rotate Matrix
  • UI\Draw\Matrix::scale — Scale Matrix
  • UI\Draw\Matrix::skew — Skew Matrix
  • UI\Draw\Matrix::translate — Translate Matrix
UI\Draw\Path::newFigureWithArc
UI\Draw\Matrix::invert
UI


Invert Matrix

UI\Draw\Matrix
UI\Draw\Matrix::isInvertible
UI\Draw\Matrix
PHP Manual

UI\Draw\Matrix::invert

(PHP 7, UI 0.9.9)

UI\Draw\Matrix::invert — Invert Matrix

说明

public UI\Draw\Matrix::invert ( void )

Shall invert this matrix

参数

此函数没有参数。

UI\Draw\Matrix
UI\Draw\Matrix::isInvertible
UI\Draw\Matrix


Invertible Detection

UI\Draw\Matrix::invert
UI\Draw\Matrix::multiply
UI\Draw\Matrix
PHP Manual

UI\Draw\Matrix::isInvertible

(PHP 7, UI 0.9.9)

UI\Draw\Matrix::isInvertible — Invertible Detection

说明

public bool UI\Draw\Matrix::isInvertible ( void )

Shall detect if this Matrix may be inverted

参数

此函数没有参数。

UI\Draw\Matrix::invert
UI\Draw\Matrix::multiply
UI\Draw\Matrix


Multiply Matrix

UI\Draw\Matrix::isInvertible
UI\Draw\Matrix::rotate
UI\Draw\Matrix
PHP Manual

UI\Draw\Matrix::multiply

(PHP 7, UI 0.9.9)

UI\Draw\Matrix::multiply — Multiply Matrix

说明

public UI\Draw\Matrix UI\Draw\Matrix::multiply ( UI\Draw\Matrix $matrix )

Shall multiply this matrix with the given matrix

参数

此函数没有参数。

返回值

The new Matrix

UI\Draw\Matrix::isInvertible
UI\Draw\Matrix::rotate
UI\Draw\Matrix


Rotate Matrix

UI\Draw\Matrix::multiply
UI\Draw\Matrix::scale
UI\Draw\Matrix
PHP Manual

UI\Draw\Matrix::rotate

(PHP 7, UI 0.9.9)

UI\Draw\Matrix::rotate — Rotate Matrix

说明

public UI\Draw\Matrix::rotate ( UI\Point $point , float $amount )

Shall rotate this Matrix

参数

point

amount

UI\Draw\Matrix::multiply
UI\Draw\Matrix::scale
UI\Draw\Matrix


Scale Matrix

UI\Draw\Matrix::rotate
UI\Draw\Matrix::skew
UI\Draw\Matrix
PHP Manual

UI\Draw\Matrix::scale

(PHP 7, UI 0.9.9)

UI\Draw\Matrix::scale — Scale Matrix

说明

public UI\Draw\Matrix::scale ( UI\Point $center , UI\Point $point )

Shall scale this Matrix

参数

center

point

UI\Draw\Matrix::rotate
UI\Draw\Matrix::skew
UI\Draw\Matrix


Skew Matrix

UI\Draw\Matrix::scale
UI\Draw\Matrix::translate
UI\Draw\Matrix
PHP Manual

UI\Draw\Matrix::skew

(PHP 7, UI 0.9.9)

UI\Draw\Matrix::skew — Skew Matrix

说明

public UI\Draw\Matrix::skew ( UI\Point $point , UI\Point $amount )

Shall skew this Matrix

参数

point

amount

UI\Draw\Matrix::scale
UI\Draw\Matrix::translate
UI\Draw\Matrix


Translate Matrix

UI\Draw\Matrix::skew
UI\Draw\Color
UI\Draw\Matrix
PHP Manual

UI\Draw\Matrix::translate

(PHP 7, UI 0.9.9)

UI\Draw\Matrix::translate — Translate Matrix

说明

public UI\Draw\Matrix::translate ( UI\Point $point )

Shall translate this Matrix

参数

point

UI\Draw\Matrix::skew
UI\Draw\Color
UI\Draw\Matrix


Color Representation

(PHP 7, UI 0.9.9)

简介

Represents RGBA colours, individual channels are accessible via public properties.

类摘要

UI\Draw\Color {
/* Constants */
const integer Red ;
const integer Green ;
const integer Blue ;
const integer Alpha ;
/* 属性 */
public $r ;
public $g ;
public $b ;
public $a ;
/* Constructor */
public __construct ([ UI\Draw\Color $color ] )
public __construct ([ integer $color ] )
/* 方法 */
public float getChannel ( integer $channel )
public void setChannel ( integer $channel , float $value )
}

属性

r

Provides access to the red channel

g

Provides access to the green channel

b

Provides access to the blue channel

a

Provides access to the alpha channel

预定义常量

UI\Draw\Color::Red

Identifies the red channel

UI\Draw\Color::Green

Identifies the green channel

UI\Draw\Color::Blue

Identifies the blue channel

UI\Draw\Color::Alpha

Identifies the alpha channel

Table of Contents

  • UI\Draw\Color::__construct — Construct new Color
  • UI\Draw\Color::getChannel — Color Manipulation
  • UI\Draw\Color::setChannel — Color Manipulation
UI\Draw\Matrix::translate
UI\Draw\Color::__construct
UI


Construct new Color

UI\Draw\Color
UI\Draw\Color::getChannel
UI\Draw\Color
PHP Manual

UI\Draw\Color::__construct

(PHP 7, UI 0.9.9)

UI\Draw\Color::__construct — Construct new Color

说明

public UI\Draw\Color::__construct ([ UI\Draw\Color $color ] )
public UI\Draw\Color::__construct ([ integer $color ] )

Shall construct a new color

参数

color

May be UI\Draw\Color or RRGGBBAA

UI\Draw\Color
UI\Draw\Color::getChannel
UI\Draw\Color


Color Manipulation

UI\Draw\Color::__construct
UI\Draw\Color::setChannel
UI\Draw\Color
PHP Manual

UI\Draw\Color::getChannel

(PHP 7, UI 0.9.9)

UI\Draw\Color::getChannel — Color Manipulation

说明

public float UI\Draw\Color::getChannel ( integer $channel )

Shall retrieve the value for a channel

参数

channel

Constant channel identity

返回值

The current value of the requested channel

UI\Draw\Color::__construct
UI\Draw\Color::setChannel
UI\Draw\Color


Color Manipulation

UI\Draw\Color::getChannel
UI\Draw\Stroke
UI\Draw\Color
PHP Manual

UI\Draw\Color::setChannel

(PHP 7, UI 0.9.9)

UI\Draw\Color::setChannel — Color Manipulation

说明

public void UI\Draw\Color::setChannel ( integer $channel , float $value )

Shall set the selected channel to the given value

参数

channel

Constant channel identity

value

The new value for the selected channel

返回值

UI\Draw\Color::getChannel
UI\Draw\Stroke
UI\Draw\Color


Draw Stroke

(PHP 7, UI 0.9.9)

简介

Holds the configuration for the Pen to perform a stroke

类摘要

UI\Draw\Stroke {
/* Constructor */
public __construct ([ integer $cap = UI\Draw\Line\Cap::Flat [, integer $join = UI\Draw\Line\Join::Miter [, float $thickness = 1 [, float $miterLimit = 10 ]]]] )
/* 方法 */
public integer getCap ( void )
public integer getJoin ( void )
public float getMiterLimit ( void )
public float getThickness ( void )
public setCap ( integer $cap )
public setJoin ( integer $join )
public setMiterLimit ( float $limit )
public setThickness ( float $thickness )
}

Table of Contents

  • UI\Draw\Stroke::__construct — Construct a new Stroke
  • UI\Draw\Stroke::getCap — Get Line Cap
  • UI\Draw\Stroke::getJoin — Get Line Join
  • UI\Draw\Stroke::getMiterLimit — Get Miter Limit
  • UI\Draw\Stroke::getThickness — Get Thickness
  • UI\Draw\Stroke::setCap — Set Line Cap
  • UI\Draw\Stroke::setJoin — Set Line Join
  • UI\Draw\Stroke::setMiterLimit — Set Miter Limit
  • UI\Draw\Stroke::setThickness — Set Thickness
UI\Draw\Color::setChannel
UI\Draw\Stroke::__construct
UI


Construct a new Stroke

UI\Draw\Stroke
UI\Draw\Stroke::getCap
UI\Draw\Stroke
PHP Manual

UI\Draw\Stroke::__construct

(PHP 7, UI 0.9.9)

UI\Draw\Stroke::__construct — Construct a new Stroke

说明

public UI\Draw\Stroke::__construct ([ integer $cap = UI\Draw\Line\Cap::Flat [, integer $join = UI\Draw\Line\Join::Miter [, float $thickness = 1 [, float $miterLimit = 10 ]]]] )

Shall construct a new Stroke

参数

cap

UI\Draw\Line\Cap::Flat, UI\Draw\Line\Cap::Round, or UI\Draw\Line\Cap::Square

join

UI\Draw\Line\Join::Miter, UI\Draw\Line\Join::Round, or UI\Draw\Line\Join::Bevel

thickness

The thickness of the stroke

miterLimit

Miter limit (default is sensible for all supported platforms)

UI\Draw\Stroke
UI\Draw\Stroke::getCap
UI\Draw\Stroke


Get Line Cap

UI\Draw\Stroke::__construct
UI\Draw\Stroke::getJoin
UI\Draw\Stroke
PHP Manual

UI\Draw\Stroke::getCap

(PHP 7, UI 0.9.9)

UI\Draw\Stroke::getCap — Get Line Cap

说明

public integer UI\Draw\Stroke::getCap ( void )

Shall retrieve the line cap setting of this Stroke

参数

此函数没有参数。

返回值

UI\Draw\Line\Cap::Flat, UI\Draw\Line\Cap::Round, or UI\Draw\Line\Cap::Square

UI\Draw\Stroke::__construct
UI\Draw\Stroke::getJoin
UI\Draw\Stroke


Get Line Join

UI\Draw\Stroke::getCap
UI\Draw\Stroke::getMiterLimit
UI\Draw\Stroke
PHP Manual

UI\Draw\Stroke::getJoin

(PHP 7, UI 0.9.9)

UI\Draw\Stroke::getJoin — Get Line Join

说明

public integer UI\Draw\Stroke::getJoin ( void )

Shall retrieve the line join setting of this Stroke

参数

此函数没有参数。

返回值

UI\Draw\Line\Join::Miter, UI\Draw\Line\Join::Round, or UI\Draw\Line\Join::Bevel

UI\Draw\Stroke::getCap
UI\Draw\Stroke::getMiterLimit
UI\Draw\Stroke


Get Miter Limit

UI\Draw\Stroke::getJoin
UI\Draw\Stroke::getThickness
UI\Draw\Stroke
PHP Manual

UI\Draw\Stroke::getMiterLimit

(PHP 7, UI 0.9.9)

UI\Draw\Stroke::getMiterLimit — Get Miter Limit

说明

public float UI\Draw\Stroke::getMiterLimit ( void )

Shall retrieve the miter limit of this Stroke

参数

此函数没有参数。

返回值

The current miter limit

UI\Draw\Stroke::getJoin
UI\Draw\Stroke::getThickness
UI\Draw\Stroke


Get Thickness

UI\Draw\Stroke::getMiterLimit
UI\Draw\Stroke::setCap
UI\Draw\Stroke
PHP Manual

UI\Draw\Stroke::getThickness

(PHP 7, UI 0.9.9)

UI\Draw\Stroke::getThickness — Get Thickness

说明

public float UI\Draw\Stroke::getThickness ( void )

Shall retrieve the thickness of this Stroke

参数

此函数没有参数。

返回值

The current thickness

UI\Draw\Stroke::getMiterLimit
UI\Draw\Stroke::setCap
UI\Draw\Stroke


Set Line Cap

UI\Draw\Stroke::getThickness
UI\Draw\Stroke::setJoin
UI\Draw\Stroke
PHP Manual

UI\Draw\Stroke::setCap

(PHP 7, UI 0.9.9)

UI\Draw\Stroke::setCap — Set Line Cap

说明

public UI\Draw\Stroke::setCap ( integer $cap )

Shall set the line cap setting for this Stroke

参数

cap

UI\Draw\Line\Cap::Flat, UI\Draw\Line\Cap::Round, or UI\Draw\Line\Cap::Square

UI\Draw\Stroke::getThickness
UI\Draw\Stroke::setJoin
UI\Draw\Stroke


Set Line Join

UI\Draw\Stroke::setCap
UI\Draw\Stroke::setMiterLimit
UI\Draw\Stroke
PHP Manual

UI\Draw\Stroke::setJoin

(PHP 7, UI 0.9.9)

UI\Draw\Stroke::setJoin — Set Line Join

说明

public UI\Draw\Stroke::setJoin ( integer $join )

Shall set the line join setting for this Stroke

参数

join

UI\Draw\Line\Join::Miter, UI\Draw\Line\Join::Round, or UI\Draw\Line\Join::Bevel

返回值

UI\Draw\Stroke::setCap
UI\Draw\Stroke::setMiterLimit
UI\Draw\Stroke


Set Miter Limit

UI\Draw\Stroke::setJoin
UI\Draw\Stroke::setThickness
UI\Draw\Stroke
PHP Manual

UI\Draw\Stroke::setMiterLimit

(PHP 7, UI 0.9.9)

UI\Draw\Stroke::setMiterLimit — Set Miter Limit

说明

public UI\Draw\Stroke::setMiterLimit ( float $limit )

Set the miter limit for this Stroke

参数

limit

The new limit

UI\Draw\Stroke::setJoin
UI\Draw\Stroke::setThickness
UI\Draw\Stroke


Set Thickness

UI\Draw\Stroke::setMiterLimit
UI\Draw\Brush
UI\Draw\Stroke
PHP Manual

UI\Draw\Stroke::setThickness

(PHP 7, UI 0.9.9)

UI\Draw\Stroke::setThickness — Set Thickness

说明

public UI\Draw\Stroke::setThickness ( float $thickness )

Shall set the thickness for this Stroke

参数

thickness

The new thickness

UI\Draw\Stroke::setMiterLimit
UI\Draw\Brush
UI\Draw\Stroke


Brushes

(PHP 7, UI 0.9.9)

简介

Represents a solid color brush

类摘要

UI\Draw\Brush {
/* Constructor */
public __construct ( UI\Draw\Color $color )
public __construct ( integer $color )
/* 方法 */
public UI\Draw\Color getColor ( void )
public void setColor ( UI\Draw\Color $color )
public void setColor ( integer $color )
}

Table of Contents

  • UI\Draw\Brush::__construct — Construct a new Brush
  • UI\Draw\Brush::getColor — Get Color
  • UI\Draw\Brush::setColor — Set Color
UI\Draw\Stroke::setThickness
UI\Draw\Brush::__construct
UI


Construct a new Brush

UI\Draw\Brush
UI\Draw\Brush::getColor
UI\Draw\Brush
PHP Manual

UI\Draw\Brush::__construct

(PHP 7, UI 0.9.9)

UI\Draw\Brush::__construct — Construct a new Brush

说明

public UI\Draw\Brush::__construct ( UI\Draw\Color $color )
public UI\Draw\Brush::__construct ( integer $color )

Shall construct a solid brush using the given color

参数

color

Can be a UI\Draw\Color or RRGGBBAA

UI\Draw\Brush
UI\Draw\Brush::getColor
UI\Draw\Brush


Get Color

UI\Draw\Brush::__construct
UI\Draw\Brush::setColor
UI\Draw\Brush
PHP Manual

UI\Draw\Brush::getColor

(PHP 7, UI 0.9.9)

UI\Draw\Brush::getColor — Get Color

说明

public UI\Draw\Color UI\Draw\Brush::getColor ( void )

Shall return a UI\Draw\Color for this brush

参数

此函数没有参数。

返回值

The current color of the brush

UI\Draw\Brush::__construct
UI\Draw\Brush::setColor
UI\Draw\Brush


Set Color

UI\Draw\Brush::getColor
UI\Draw\Brush\Gradient
UI\Draw\Brush
PHP Manual

UI\Draw\Brush::setColor

(PHP 7, UI 0.9.9)

UI\Draw\Brush::setColor — Set Color

说明

public void UI\Draw\Brush::setColor ( UI\Draw\Color $color )
public void UI\Draw\Brush::setColor ( integer $color )

Shall set the color of this brush to the color provided

参数

color

Can be a UI\Draw\Color or RRGGBBAA

返回值

UI\Draw\Brush::getColor
UI\Draw\Brush\Gradient
UI\Draw\Brush


Gradient Brushes

(PHP 7, UI 2.0.0)

简介

Abstract for gradient brushes

类摘要

abstract UI\Draw\Brush\Gradient extends UI\Draw\Brush {
/* 方法 */
public integer addStop ( float $position , UI\Draw\Color $color )
public integer addStop ( float $position , integer $color )
public integer delStop ( integer $index )
public boolean setStop ( integer $index , float $position , UI\Draw\Color $color )
public boolean setStop ( integer $index , float $position , integer $color )
/* 继承的方法 */
public UI\Draw\Color UI\Draw\Brush::getColor ( void )
public void UI\Draw\Brush::setColor ( UI\Draw\Color $color )
public void UI\Draw\Brush::setColor ( integer $color )
}

Table of Contents

  • UI\Draw\Brush\Gradient::addStop — Stop Manipulation
  • UI\Draw\Brush\Gradient::delStop — Stop Manipulation
  • UI\Draw\Brush\Gradient::setStop — Stop Manipulation
UI\Draw\Brush::setColor
UI\Draw\Brush\Gradient::addStop
UI


Stop Manipulation

UI\Draw\Brush\Gradient
UI\Draw\Brush\Gradient::delStop
UI\Draw\Brush\Gradient
PHP Manual

UI\Draw\Brush\Gradient::addStop

(PHP 7, UI 2.0.0)

UI\Draw\Brush\Gradient::addStop — Stop Manipulation

说明

public integer UI\Draw\Brush\Gradient::addStop ( float $position , UI\Draw\Color $color )
public integer UI\Draw\Brush\Gradient::addStop ( float $position , integer $color )

Shall at a stop of the given color at the given position

参数

position

The position for the new stop

color

The color for the new stop, may be UI\Draw\Color or RRGGBBAA

返回值

Total number of stops

UI\Draw\Brush\Gradient
UI\Draw\Brush\Gradient::delStop
UI\Draw\Brush\Gradient


Stop Manipulation

UI\Draw\Brush\Gradient::addStop
UI\Draw\Brush\Gradient::setStop
UI\Draw\Brush\Gradient
PHP Manual

UI\Draw\Brush\Gradient::delStop

(PHP 7, UI 2.0.0)

UI\Draw\Brush\Gradient::delStop — Stop Manipulation

说明

public integer UI\Draw\Brush\Gradient::delStop ( integer $index )

Warning

本函数还未编写文档，仅有参数列表。

参数

index

返回值

Total number of stops

UI\Draw\Brush\Gradient::addStop
UI\Draw\Brush\Gradient::setStop
UI\Draw\Brush\Gradient


Stop Manipulation

UI\Draw\Brush\Gradient::delStop
UI\Draw\Brush\LinearGradient
UI\Draw\Brush\Gradient
PHP Manual

UI\Draw\Brush\Gradient::setStop

(PHP 7, UI 2.0.0)

UI\Draw\Brush\Gradient::setStop — Stop Manipulation

说明

public boolean UI\Draw\Brush\Gradient::setStop ( integer $index , float $position , UI\Draw\Color $color )
public boolean UI\Draw\Brush\Gradient::setStop ( integer $index , float $position , integer $color )

参数

index

The index of the stop to set

position

The position for the stop

color

The color for the stop, may be UI\Draw\Color or RRGGBBAA

返回值

Indication of success

UI\Draw\Brush\Gradient::delStop
UI\Draw\Brush\LinearGradient
UI\Draw\Brush\Gradient


Linear Gradient

(PHP 7, UI 2.0.0)

简介

类摘要

UI\Draw\Brush\LinearGradient extends UI\Draw\Brush\Gradient {
/* Constructor */
public __construct ( UI\Point $start , UI\Point $end )
/* 继承的方法 */
public integer UI\Draw\Brush\Gradient::addStop ( float $position , UI\Draw\Color $color )
public integer UI\Draw\Brush\Gradient::addStop ( float $position , integer $color )
public integer UI\Draw\Brush\Gradient::delStop ( integer $index )
public boolean UI\Draw\Brush\Gradient::setStop ( integer $index , float $position , UI\Draw\Color $color )
public boolean UI\Draw\Brush\Gradient::setStop ( integer $index , float $position , integer $color )
}

Table of Contents

  • UI\Draw\Brush\LinearGradient::__construct — Construct a Linear Gradient
UI\Draw\Brush\Gradient::setStop
UI\Draw\Brush\LinearGradient::__construct
UI


Construct a Linear Gradient

UI\Draw\Brush\LinearGradient
UI\Draw\Brush\RadialGradient
UI\Draw\Brush\LinearGradient
PHP Manual

UI\Draw\Brush\LinearGradient::__construct

(PHP 7, UI 2.0.0)

UI\Draw\Brush\LinearGradient::__construct — Construct a Linear Gradient

说明

public UI\Draw\Brush\LinearGradient::__construct ( UI\Point $start , UI\Point $end )

Shall construct a new linear gradient

参数

start

end

UI\Draw\Brush\LinearGradient
UI\Draw\Brush\RadialGradient
UI\Draw\Brush\LinearGradient


Radial Gradient

(PHP 7, UI 2.0.0)

简介

类摘要

UI\Draw\Brush\RadialGradient extends UI\Draw\Brush\Gradient {
/* Constructor */
public __construct ( UI\Point $start , UI\Point $outer , float $radius )
/* 继承的方法 */
public integer UI\Draw\Brush\Gradient::addStop ( float $position , UI\Draw\Color $color )
public integer UI\Draw\Brush\Gradient::addStop ( float $position , integer $color )
public integer UI\Draw\Brush\Gradient::delStop ( integer $index )
public boolean UI\Draw\Brush\Gradient::setStop ( integer $index , float $position , UI\Draw\Color $color )
public boolean UI\Draw\Brush\Gradient::setStop ( integer $index , float $position , integer $color )
}

Table of Contents

  • UI\Draw\Brush\RadialGradient::__construct — Construct a new Radial Gradient
UI\Draw\Brush\LinearGradient::__construct
UI\Draw\Brush\RadialGradient::__construct
UI


Construct a new Radial Gradient

UI\Draw\Brush\RadialGradient
UI\Draw\Text\Layout
UI\Draw\Brush\RadialGradient
PHP Manual

UI\Draw\Brush\RadialGradient::__construct

(PHP 7, UI 2.0.0)

UI\Draw\Brush\RadialGradient::__construct — Construct a new Radial Gradient

说明

public UI\Draw\Brush\RadialGradient::__construct ( UI\Point $start , UI\Point $outer , float $radius )

Shall construct a new radial gradient

参数

start

outer

radius

UI\Draw\Brush\RadialGradient
UI\Draw\Text\Layout
UI\Draw\Brush\RadialGradient


Represents Text Layout

(PHP 7, UI 0.9.9)

简介

A Text Layout represents the layout of text which will be drawn by the Pen

类摘要

UI\Draw\Text\Layout {
/* Constructor */
public __construct ( string $text , UI\Draw\Text\Font $font , float $width )
/* 方法 */
public setColor ( UI\Draw\Color $color [, integer $start = 0 [, integer $end ]] )
public setColor ( integer $color [, integer $start = 0 [, integer $end ]] )
public setWidth ( float $width )
}

Table of Contents

  • UI\Draw\Text\Layout::__construct — Construct a new Text Layout
  • UI\Draw\Text\Layout::setColor — Set Color
  • UI\Draw\Text\Layout::setWidth — Set Width
UI\Draw\Brush\RadialGradient::__construct
UI\Draw\Text\Layout::__construct
UI


Construct a new Text Layout

UI\Draw\Text\Layout
UI\Draw\Text\Layout::setColor
UI\Draw\Text\Layout
PHP Manual

UI\Draw\Text\Layout::__construct

(PHP 7, UI 0.9.9)

UI\Draw\Text\Layout::__construct — Construct a new Text Layout

说明

public UI\Draw\Text\Layout::__construct ( string $text , UI\Draw\Text\Font $font , float $width )

Shall construct a new Text Layout

参数

text

The text for the layout

font

The font to use for writing

width

The width of the layout

UI\Draw\Text\Layout
UI\Draw\Text\Layout::setColor
UI\Draw\Text\Layout


Set Color

UI\Draw\Text\Layout::__construct
UI\Draw\Text\Layout::setWidth
UI\Draw\Text\Layout
PHP Manual

UI\Draw\Text\Layout::setColor

(PHP 7, UI 0.9.9)

UI\Draw\Text\Layout::setColor — Set Color

说明

public UI\Draw\Text\Layout::setColor ( UI\Draw\Color $color [, integer $start = 0 [, integer $end ]] )
public UI\Draw\Text\Layout::setColor ( integer $color [, integer $start = 0 [, integer $end ]] )

Shall set the Color for all of, or a range of the text in the Layout

参数

color

The color to use

start

The starting character

end

The ending character, by default the end of the string

UI\Draw\Text\Layout::__construct
UI\Draw\Text\Layout::setWidth
UI\Draw\Text\Layout


Set Width

UI\Draw\Text\Layout::setColor
UI\Draw\Text\Font
UI\Draw\Text\Layout
PHP Manual

UI\Draw\Text\Layout::setWidth

(PHP 7, UI 0.9.9)

UI\Draw\Text\Layout::setWidth — Set Width

说明

public UI\Draw\Text\Layout::setWidth ( float $width )

Shall set the width of this Text Layout

参数

width

The new width

UI\Draw\Text\Layout::setColor
UI\Draw\Text\Font
UI\Draw\Text\Layout


Represents a Font

(PHP 7, UI 0.9.9)

简介

Loads a described font

类摘要

UI\Draw\Text\Font {
/* Constructor */
public __construct ( UI\Draw\Text\Font\Descriptor $descriptor )
/* 方法 */
public float getAscent ( void )
public float getDescent ( void )
public float getLeading ( void )
public float getUnderlinePosition ( void )
public float getUnderlineThickness ( void )
}

Table of Contents

  • UI\Draw\Text\Font::__construct — Construct a new Font
  • UI\Draw\Text\Font::getAscent — Font Metrics
  • UI\Draw\Text\Font::getDescent — Font Metrics
  • UI\Draw\Text\Font::getLeading — Font Metrics
  • UI\Draw\Text\Font::getUnderlinePosition — Font Metrics
  • UI\Draw\Text\Font::getUnderlineThickness — Font Metrics
UI\Draw\Text\Layout::setWidth
UI\Draw\Text\Font::__construct
UI


Construct a new Font

UI\Draw\Text\Font
UI\Draw\Text\Font::getAscent
UI\Draw\Text\Font
PHP Manual

UI\Draw\Text\Font::__construct

(PHP 7, UI 0.9.9)

UI\Draw\Text\Font::__construct — Construct a new Font

说明

public UI\Draw\Text\Font::__construct ( UI\Draw\Text\Font\Descriptor $descriptor )

Shall construct a new Font using the given descriptor

参数

descriptor

The descriptor for the Font

UI\Draw\Text\Font
UI\Draw\Text\Font::getAscent
UI\Draw\Text\Font


Font Metrics

UI\Draw\Text\Font::__construct
UI\Draw\Text\Font::getDescent
UI\Draw\Text\Font
PHP Manual

UI\Draw\Text\Font::getAscent

(PHP 7, UI 1.0.3)

UI\Draw\Text\Font::getAscent — Font Metrics

说明

public float UI\Draw\Text\Font::getAscent ( void )

参数

此函数没有参数。

返回值

UI\Draw\Text\Font::__construct
UI\Draw\Text\Font::getDescent
UI\Draw\Text\Font


Font Metrics

UI\Draw\Text\Font::getAscent
UI\Draw\Text\Font::getLeading
UI\Draw\Text\Font
PHP Manual

UI\Draw\Text\Font::getDescent

(PHP 7, UI 1.0.3)

UI\Draw\Text\Font::getDescent — Font Metrics

说明

public float UI\Draw\Text\Font::getDescent ( void )

参数

此函数没有参数。

返回值

UI\Draw\Text\Font::getAscent
UI\Draw\Text\Font::getLeading
UI\Draw\Text\Font


Font Metrics

UI\Draw\Text\Font::getDescent
UI\Draw\Text\Font::getUnderlinePosition
UI\Draw\Text\Font
PHP Manual

UI\Draw\Text\Font::getLeading

(PHP 7, UI 1.0.3)

UI\Draw\Text\Font::getLeading — Font Metrics

说明

public float UI\Draw\Text\Font::getLeading ( void )

参数

此函数没有参数。

返回值

UI\Draw\Text\Font::getDescent
UI\Draw\Text\Font::getUnderlinePosition
UI\Draw\Text\Font


Font Metrics

UI\Draw\Text\Font::getLeading
UI\Draw\Text\Font::getUnderlineThickness
UI\Draw\Text\Font
PHP Manual

UI\Draw\Text\Font::getUnderlinePosition

(PHP 7, UI 1.0.3)

UI\Draw\Text\Font::getUnderlinePosition — Font Metrics

说明

public float UI\Draw\Text\Font::getUnderlinePosition ( void )

参数

此函数没有参数。

返回值

UI\Draw\Text\Font::getLeading
UI\Draw\Text\Font::getUnderlineThickness
UI\Draw\Text\Font


Font Metrics

UI\Draw\Text\Font::getUnderlinePosition
UI\Draw\Text\Font\Descriptor
UI\Draw\Text\Font
PHP Manual

UI\Draw\Text\Font::getUnderlineThickness

(PHP 7, UI 1.0.3)

UI\Draw\Text\Font::getUnderlineThickness — Font Metrics

说明

public float UI\Draw\Text\Font::getUnderlineThickness ( void )

参数

此函数没有参数。

返回值

UI\Draw\Text\Font::getUnderlinePosition
UI\Draw\Text\Font\Descriptor
UI\Draw\Text\Font


Font Descriptor

(PHP 7, UI 0.9.9)

简介

Describes a font

类摘要

UI\Draw\Text\Font\Descriptor {
/* Constructor */
public __construct ( string $family , float $size [, integer $weight = UI\Draw\Text\Font\Weight::Normal [, integer $italic = UI\Draw\Text\Font\Italic::Normal [, integer $stretch = UI\Draw\Text\Font\Stretch::Normal ]]] )
/* 方法 */
public string getFamily ( void )
public int getItalic ( void )
public float getSize ( void )
public int getStretch ( void )
public int getWeight ( void )
}

Table of Contents

  • UI\Draw\Text\Font\Descriptor::__construct — Construct a new Font Descriptor
  • UI\Draw\Text\Font\Descriptor::getFamily — Get Font Family
  • UI\Draw\Text\Font\Descriptor::getItalic — Style Detection
  • UI\Draw\Text\Font\Descriptor::getSize — Size Detection
  • UI\Draw\Text\Font\Descriptor::getStretch — Style Detection
  • UI\Draw\Text\Font\Descriptor::getWeight — Weight Detection
UI\Draw\Text\Font::getUnderlineThickness
UI\Draw\Text\Font\Descriptor::__construct
UI


Construct a new Font Descriptor

UI\Draw\Text\Font\Descriptor
UI\Draw\Text\Font\Descriptor::getFamily
UI\Draw\Text\Font\Descriptor
PHP Manual

UI\Draw\Text\Font\Descriptor::__construct

(PHP 7, UI 0.9.9)

UI\Draw\Text\Font\Descriptor::__construct — Construct a new Font Descriptor

说明

public UI\Draw\Text\Font\Descriptor::__construct ( string $family , float $size [, integer $weight = UI\Draw\Text\Font\Weight::Normal [, integer $italic = UI\Draw\Text\Font\Italic::Normal [, integer $stretch = UI\Draw\Text\Font\Stretch::Normal ]]] )

Shall construct a new Font Descriptor

参数

family

The name of a valid family of fonts

size

The preferred size

weight

UI\Draw\Text\Font\Weight constant

italic

UI\Draw\Text\Font\Italic constant

stretch

UI\Draw\Text\Font\Stretch constant

UI\Draw\Text\Font\Descriptor
UI\Draw\Text\Font\Descriptor::getFamily
UI\Draw\Text\Font\Descriptor


Get Font Family

UI\Draw\Text\Font\Descriptor::__construct
UI\Draw\Text\Font\Descriptor::getItalic
UI\Draw\Text\Font\Descriptor
PHP Manual

UI\Draw\Text\Font\Descriptor::getFamily

(PHP 7, UI 1.0.3)

UI\Draw\Text\Font\Descriptor::getFamily — Get Font Family

说明

public string UI\Draw\Text\Font\Descriptor::getFamily ( void )

Shall return the requested font family

参数

此函数没有参数。

返回值

UI\Draw\Text\Font\Descriptor::__construct
UI\Draw\Text\Font\Descriptor::getItalic
UI\Draw\Text\Font\Descriptor


Style Detection

UI\Draw\Text\Font\Descriptor::getFamily
UI\Draw\Text\Font\Descriptor::getSize
UI\Draw\Text\Font\Descriptor
PHP Manual

UI\Draw\Text\Font\Descriptor::getItalic

(PHP 7, UI 1.0.3)

UI\Draw\Text\Font\Descriptor::getItalic — Style Detection

说明

public int UI\Draw\Text\Font\Descriptor::getItalic ( void )

Shall return constant setting

参数

此函数没有参数。

返回值

UI\Draw\Text\Font\Descriptor::getFamily
UI\Draw\Text\Font\Descriptor::getSize
UI\Draw\Text\Font\Descriptor


Size Detection

UI\Draw\Text\Font\Descriptor::getItalic
UI\Draw\Text\Font\Descriptor::getStretch
UI\Draw\Text\Font\Descriptor
PHP Manual

UI\Draw\Text\Font\Descriptor::getSize

(PHP 7, UI 1.0.3)

UI\Draw\Text\Font\Descriptor::getSize — Size Detection

说明

public float UI\Draw\Text\Font\Descriptor::getSize ( void )

Shall return the requested size

参数

此函数没有参数。

返回值

UI\Draw\Text\Font\Descriptor::getItalic
UI\Draw\Text\Font\Descriptor::getStretch
UI\Draw\Text\Font\Descriptor


Style Detection

UI\Draw\Text\Font\Descriptor::getSize
UI\Draw\Text\Font\Descriptor::getWeight
UI\Draw\Text\Font\Descriptor
PHP Manual

UI\Draw\Text\Font\Descriptor::getStretch

(PHP 7, UI 1.0.3)

UI\Draw\Text\Font\Descriptor::getStretch — Style Detection

说明

public int UI\Draw\Text\Font\Descriptor::getStretch ( void )

Shall return requested stretch

参数

此函数没有参数。

返回值

UI\Draw\Text\Font\Descriptor::getSize
UI\Draw\Text\Font\Descriptor::getWeight
UI\Draw\Text\Font\Descriptor


Weight Detection

UI\Draw\Text\Font\Descriptor::getStretch
UI 函数
UI\Draw\Text\Font\Descriptor
PHP Manual

UI\Draw\Text\Font\Descriptor::getWeight

(PHP 7, UI 1.0.3)

UI\Draw\Text\Font\Descriptor::getWeight — Weight Detection

说明

public int UI\Draw\Text\Font\Descriptor::getWeight ( void )

Shall return requested weight

参数

此函数没有参数。

返回值

UI\Draw\Text\Font\Descriptor::getStretch
UI 函数
UI\Draw\Text\Font\Descriptor


UI 函数

Table of Contents

  • UI\Draw\Text\Font\fontFamilies — Retrieve Font Families
  • UI\quit — Quit UI Loop
  • UI\run — Enter UI Loop
UI\Draw\Text\Font\Descriptor::getWeight
UI\Draw\Text\Font\fontFamilies
UI


Retrieve Font Families

UI 函数
UI\quit
UI 函数
PHP Manual

UI\Draw\Text\Font\fontFamilies

(PHP 7, UI 0.9.9)

UI\Draw\Text\Font\fontFamilies — Retrieve Font Families

说明

array UI\Draw\Text\Font\fontFamilies ( void )

Returns an array of valid font families for the current system

参数

此函数没有参数。

UI 函数
UI\quit
UI 函数


Quit UI Loop

UI\Draw\Text\Font\fontFamilies
UI\run
UI 函数
PHP Manual

UI\quit

(PHP 7, UI 2.0.0)

UI\quit — Quit UI Loop

说明

void UI\quit ( void )

Shall cause the main loop to be exited

参数

此函数没有参数。

返回值

UI\Draw\Text\Font\fontFamilies
UI\run
UI 函数


Enter UI Loop

UI\quit
UI\Draw\Text\Font\Weight
UI 函数
PHP Manual

UI\run

(PHP 7, UI 2.0.0)

UI\run — Enter UI Loop

说明

void UI\run ([ integer $flags ] )

Shall cause PHP to enter into the main loop, by default control will not be returned to the caller

参数

flags

Set UI\Loop to return control, and UI\Wait to return control after waiting

返回值

UI\quit
UI\Draw\Text\Font\Weight
UI 函数


Font Weight Settings

(PHP 7, UI 0.9.9)

简介

类摘要

final UI\Draw\Text\Font\Weight {
/* Constants */
const integer Thin ;
const integer UltraLight ;
const integer Light ;
const integer Book ;
const integer Normal ;
const integer Medium ;
const integer SemiBold ;
const integer Bold ;
const integer UltraBold ;
const integer Heavy ;
const integer UltraHeavy ;
}
UI\run
UI\Draw\Text\Font\Italic
UI


Italic Font Settings

(PHP 7, UI 0.9.9)

简介

类摘要

final UI\Draw\Text\Font\Italic {
/* Constants */
const integer Normal = 0 ;
const integer Oblique = 1 ;
const integer Italic = 2 ;
}
UI\Draw\Text\Font\Weight
UI\Draw\Text\Font\Stretch
UI


Font Stretch Settings

(PHP 7, UI 0.9.9)

简介

类摘要

final UI\Draw\Text\Font\Stretch {
/* Constants */
const integer UltraCondensed = 0 ;
const integer ExtraCondensed = 1 ;
const integer Condensed = 2 ;
const integer SemiCondensed = 3 ;
const integer Normal = 4 ;
const integer SemiExpanded = 5 ;
const integer Expanded = 6 ;
const integer ExtraExpanded = 7 ;
const integer UltraExpanded = 8 ;
}
UI\Draw\Text\Font\Italic
UI\Draw\Line\Cap
UI


Line Cap Settings

(PHP 7, UI 0.9.9)

简介

类摘要

final UI\Draw\Line\Cap {
/* Constants */
const integer Flat ;
const integer Round ;
const integer Square ;
}
UI\Draw\Text\Font\Stretch
UI\Draw\Line\Join
UI


Line Join Settings

(PHP 7, UI 0.9.9)

简介

类摘要

final UI\Draw\Line\Join {
/* Constants */
const integer Miter ;
const integer Round ;
const integer Bevel ;
}
UI\Draw\Line\Cap
UI\Key
UI


Key Identifiers

(PHP 7, UI 1.0.0)

简介

类摘要

final UI\Key {
/* Constants */
const integer Escape ;
const integer Insert ;
const integer Delete ;
const integer Home ;
const integer End ;
const integer PageUp ;
const integer PageDown ;
const integer Up ;
const integer Down ;
const integer Left ;
const integer Right ;
const integer F1 ;
const integer F2 ;
const integer F3 ;
const integer F4 ;
const integer F5 ;
const integer F6 ;
const integer F7 ;
const integer F8 ;
const integer F9 ;
const integer F10 ;
const integer F11 ;
const integer F12 ;
const integer N0 ;
const integer N1 ;
const integer N2 ;
const integer N3 ;
const integer N4 ;
const integer N5 ;
const integer N6 ;
const integer N7 ;
const integer N8 ;
const integer N9 ;
const integer NDot ;
const integer NEnter ;
const integer NAdd ;
const integer NSubtract ;
const integer NMultiply ;
const integer NDivide ;
}
UI\Draw\Line\Join
UI\Exception\InvalidArgumentException
UI


InvalidArgumentException

(PHP 7, UI 1.0.3)

简介

类摘要

UI\Exception\InvalidArgumentException extends InvalidArgumentException implements Throwable {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
UI\Key
UI\Exception\RuntimeException
UI


RuntimeException

(PHP 7, UI 1.0.3)

简介

类摘要

UI\Exception\RuntimeException extends RuntimeException implements Throwable {
/* 继承的属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 继承的方法 */
final public string Exception::getMessage ( void )
final public Exception Exception::getPrevious ( void )
final public int Exception::getCode ( void )
final public string Exception::getFile ( void )
final public int Exception::getLine ( void )
final public array Exception::getTrace ( void )
final public string Exception::getTraceAsString ( void )
public string Exception::__toString ( void )
final private void Exception::__clone ( void )
}
UI\Exception\InvalidArgumentException
PHP 核心：骇客指南
UI


PHP 核心：骇客指南

  • 序言
  • 内存管理
    • 内存管理基础
    • 数据持久化
    • 线程安全的资源管理器
  • 变量的使用
    • 介绍
    • 创建变量并设置值
  • 函数的编写
  • 类和对象的使用
  • 资源的使用
  • INI 设置的使用
  • 流的使用
  • "counter" 扩展 - 一个连续的实例
    • 安装／配置
    • 预定义常量
    • 范例
    • Counter — Counter 类
    • Basic — 简单接口
    • Extended — 扩展接口
  • PHP 5 构建系统
    • PHP 扩展开发构建
    • ext_skel 脚本
    • 与 UNIX 构建系统交互: config.m4
    • 使用 Windows 构建系统：config.w32
  • 扩展的结构
    • 组成扩展的文件
    • Basic constructs
    • The zend_module structure
    • Extension globals
    • Life cycle of an extension
    • Testing an extension
  • PDO 驱动
    • 前提条件
    • 配置与管理
    • Fleshing out your skeleton
    • Building
    • Testing
    • Packaging and distribution
    • pdo_dbh_t definition
    • pdo_stmt_t definition
    • Constants
    • Error handling
  • 扩展相关 FAQ
  • Zend Engine 2 API 参考
  • Zend Engine 2 操作码列表
    • Opcode Descriptions and Examples
  • Zend Engine 1
    • 旧的介绍
    • Streams API for PHP Extension Authors
    • Zend API：深入 PHP 内核
    • TSRM API
UI\Exception\RuntimeException
序言
PHP 手册


序言

Zend API 随着时间不断向前进化，PHP 已变成为一种更健壮与普及的编程语言。随着 PHP 5 的推出，Zend Engine 2 (ZE2)也到来了。ZE2 带来了全新的面向对象编程(OOP)模型，以及大量 API 的改进。PHP 6 ，在此文档编写时还处于活跃的开发状态，引入了 Zend Engine 3 (ZE3)，将在语言中带来完全的 Unicode 支持。

Warning

此文档还有大量的开发工作。原来的 Zend 文档被完整的保留在 Zend Engine 1 章节下，用于在此文档未完成前进行查看。

此手册章节针对于 ZE2。PHP 4.4 还在被广泛地使用着，与 ZE1 扩展的工作方式的不同点比较少，因此在本章的附录中有对它的简单引用。在 PHP 6 进行 beta 测试阶段时，将会有更全面地进行文档工作。

此章节的文档内容当前针对 PHP 5.2.11(本文编写时最新的 PHP 5.2 稳定发行版本)。在 PHP 5 的小版本(5.0 - 5.3）上的差异会有相应的说明。

PHP 核心：骇客指南
内存管理
PHP 核心：骇客指南


内存管理

Table of Contents

  • 内存管理基础
  • 数据持久化
  • 线程安全的资源管理器

Zend 引擎的内存管理出奇的简单。一些 API 要学习，一些背后的概念要理解，这就是全部。

序言
内存管理基础
PHP 核心：骇客指南


内存管理基础

用 C 语言编程时，开发者要手工地进行内存管理。因为 PHP 经常用作 Web 服务器的模块，内存管理与预防内存泄漏紧密关联。此外要知道 PHP 可能用于线程环境中，这意味着全局变量可能导致竞争状况。有关线程内全局数据处理的信息请参见作为线程隔离设施的 线程安全的资源管理器。

此外，Zend 引擎要面对一个十分特殊的使用模式：在一段比较短的时间内，许多 zval 结构大小的内存块和其他的小内存块被申请又再被释放。PHP 的内存管理也很重视 memory_limit(内存限制)。

为了满足以上的需求，Zend 引擎提供为了处理请求相关数据提供了一种特殊的内存管理器。请求相关数据是指只需要服务于单个请求，最迟会在请求结束时释放的数据。扩展开发者主要接触下表中列出的惯例。虽然一些所提供的便捷功能是用宏实现的，但在本文中会象函数一样对待。

主要的内存 APIs
原型 | 说明
void *emalloc(size_t size) | 分配 size 字节的内存。
void *ecalloc(size_t nmemb, size_t size) | 给 nmemb 元素分配 size 字节的缓冲区并初始化为零。
void *erealloc(void *ptr, size_t size) | 修改使用 emalloc 分配的缓冲区 ptr 的大小为 size 字节。
void efree(void *ptr) | 释放 ptr 指向的缓冲区。缓冲区必须是由 emalloc 分配的。
void *safe_emalloc(size_t nmemb, size_t size, size_t offset) | 分配缓冲区来存放每块大小为 size 字节的 nmemb 块，并附加 offset 字节。类似于 emalloc(nmemb * size + offset)，但增加了针对溢出的特殊保护。
char *estrdup(const char *s) | 分配一个可存放 NULL 结尾的字符串 s 的缓冲区，并将 s 复制到缓冲区内。
char *estrndup(const char *s, unsigned int length) | 类似于 estrdup，但 NULL 结尾的字符串长度是已知的。

Note: 和与 C 标准库相似的部分不同，如果分配请求的内存出错，Zend 引擎的内存管理函数不会返回 NULL 值，而会跳出并中止当前请求。

如上所述，防止有内存泄漏并尽可能快地释放所有内存是内存管理的重要组成部分。因为安全原因，在请求结束时， Zend 引擎会释放所有由上面提到的 API 所分配的内存。如果 PHP 使用 --enable-debug 配置选项进行构建，这将产生一个警告。

Example #1 PHP 的泄漏报警

ZEND_FUNCTION(leak)
{
    long leakbytes = 3;

    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &leakbytes) == FAILURE) {
        return;
    }

    emalloc(leakbytes);
}

以上例程的输出类似于：

[Thu Oct 22 02:14:57 2009]  Script:  '-'
/home/johannes/src/PHP_5_3/Zend/zend_builtin_functions.c(1377) :  Freeing 0x088888D4 (3 bytes), script=-
=== Total 1 memory leaks detected ===

Note: 当使用 PHP 变量时，需要确认变量的内存要使用 emalloc 来分配，并注意引用计数。相关细节请查看 变量的使用。

Note: 内存泄漏检测仅可以发现由 emalloc 分配内存块导致的泄漏。为进行深层分析，建议使用内存检测器，如 valgrind 或 libumem 等。要简化此分析，可在 PHP 启动时通过设置环境变量 USE_ZEND_ALLOC=0 来禁用 PHP 的内存管理器。

内存管理
数据持久化
内存管理


数据持久化

内存管理基础
线程安全的资源管理器
内存管理


线程安全的资源管理器

数据持久化
变量的使用
内存管理


变量的使用

Table of Contents

  • 介绍
  • 创建变量并设置值
线程安全的资源管理器
介绍
PHP 核心：骇客指南


介绍

为了在 PHP 核心中使用变量，就必须要学会 PHP 所使用的基本概念的差异。首先，PHP 是一门动态的弱类型语言。其次，PHP 的写机制里会使用内存处理的引用计数的复本。请查阅引用计数基本知识 章节以获得如何使用计数和引用的细节。

PHP 变量，通常来说，由两部分组成：标签（例如，可能是符号表中的一个条目）和实际变量容器。在此手册的绝大部分内容中都是针对变量容器。

变量容器，在代码中称为 zval，掌握了所需处理变量的所有数据。 包括实际值、当前类型、统计指向此容器的标签的数量，和指示这些标签是引用还是副本的标志。 在 PHP 5.3 中，有关结构可在 Zend/zend.h 中找到，类似于：

typedef struct _zval_struct zval;

typedef union _zvalue_value {
    long lval;                 /* long value */
    double dval;               /* double value */
    struct {                   /* string type */
        char *val;
        int len;
    } str;
    HashTable *ht;             /* hash table value */
    zend_object_value obj;
} zvalue_value;

struct _zval_struct {
    /* Variable information */
    zvalue_value value;        /* value */
    zend_uint refcount__gc;
    zend_uchar type;           /* active type */
    zend_uchar is_ref__gc;
};

在 zvalue_value 中，通过名称和注释可清楚地找到字段所使用的不同类型的内部表现形式——尤其是当你知道 PHP 数组实际上是哈希表时。但是，其中也遗漏了几种 PHP 类型：NULL, boolean 和 resources。NULL 不需要值，NULL 就是此类型的值。对 boolean 和 resource 的值来说，PHP 也使用值字段。比如 boolean 值，为 false 时存放 0，为 true 时存放 1。resource 类型的变量存放的是资源的 id。

现在，有个好消息是你不需要知道这些细节，因为在 PHP 中总是使用宏；坏消息是有很多宏： 有直接存取 zval 的宏，还有经常是指向 zval 的指针，甚至是指向 zval 的指针的指针，大多数宏都有引用这些指针的捷径。这些宏分布于 Zend/zend.h, Zend/zend_operators.h 和 Zend/zend_API.h 之中。

变量的使用
创建变量并设置值
变量的使用


创建变量并设置值

介绍
函数的编写
变量的使用


函数的编写

输出到 PHP 用户层的函数是扩展的一个核心元素。甚至在打算编写面向对象扩展时，也建议阅读此章节，其中大部分信息对于编写方法也是有效的。

给一个扩展增加函数时，例如在使用 ext_skel 脚本创建初始结构后，可创建一个函数由 C 函数来实现，然后在扩展的函数表中提供一个入口。函数入口可含有一个对参数信息结构的指针。 不是必须要提供此信息，除非打算接受参数引用或返回一个引用，及提供由 PHP 的反射 API 访问的信息。在下面例子中，参数不是作为直接函数参数传递的，而是通过一个堆栈(stack)，由函数实现——不能直接作为信息源——进行核对。

Example #1 最小的仅有一个函数的 PHP 扩展

/* {{{ proto void hello_world()
       Do nothing */
PHP_FUNCTION(hello_world)
{
}
/* }}} */

/* {{{ arginfo_hello_world */
ZEND_BEGIN_ARG_INFO(arginfo_hello_world, 0)
ZEND_END_ARG_INFO()
/* }}} */

/* {{{ demo_functions */
function_entry demo_functions[] = {
    PHP_FE(hello_world, arginfo_hello_world)
    {NULL, NULL, NULL}
}
/* }}} */

/* {{{ demo_module_enry */
zend_module_entry demo_module_entry = {
#if ZEND_MODULE_API_NO >= 20010901
    STANDARD_MODULE_HEADER,
#endif
    "demo",
    demo_functions,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
#if ZEND_MODULE_API_NO >= 20010901
    "1.0.0",
#en
    STANDARD_MODULE_PROPERTIES
}
/* }}} */

在此例程中，可以你看到上面讨论的元素和模块结构。模块结构可参见 The zend_module structure。

此扩展的第一部分是实际的实现内容。 按照惯例，在每一个输出的函数之前用两行注释及函数后的一行短注释来描述函数的用户层模型。

为了源代码对不同版本 PHP 提供兼容性，函数声明被包装在 PHP_FUNCTION 宏里。编译器的预处理器会使用 PHP 5.3 将此转换为如下函数：

void zif_hello_world(int ht, zval *return_value, zval **return_value_ptr,
                     zval *this_ptr, int return_value_used TSRMLS_DC)
{
}

为预防输出至用户层的函数与其他的同名函数间的命名冲突，输出函数的 C 符号用 zif_ 作为前缀。你也可看到，此模型没有引用参数堆栈。如果存取 PHP 传递的参数，在下面进行描述。下方表格中列举了在 INTERNAL_FUNCTION_PARAMETERS 宏中定义了的 C 语言级别的参数。使用所提供的宏时，请注意这些参数可能在 PHP 版本间会发生变化。

INTERNAL_FUNCTION_PARAMETERS
名称和类型 | 描述 | 访问宏
int ht | 用户实际传递参数的数量 | ZEND_NUM_ARGS()
zval *return_value | PHP 变量的指针，可填充返回值传递给用户。默认值是 IS_NULL。 | RETVAL_*, RETURN_*
zval **return_value_ptr | 当返回引用时，PHP 将其设为变量的指针。不建议返回引用。 |
zval *this_ptr | 假如这是一个方法调用，其指向存放 $this 对象的 PHP 变量。 | getThis()
int return_value_used | 指示返回值是否会被调用者使用的标志。 caller. |

上面所述的函数什么事都不做，只是简单地返回 NULL 给用户。从 PHP 用户层可以带任意数量的参数调用此函数。更有用的函数通常由四部分组成：

  1. 局部变量定义。在 C 语言中必须在函数的开头定义局部变量。

  2. 解析的参数。PHP 传递参数到一个特殊的堆栈上，从那里对参数进行读取、校验类型，有问题时根据需要可进行转换。

  3. 实际逻辑。做所需做的。

  4. 设定返回值，清理，返回。

在某些情况下，这些步骤的实际顺序可能发生变化。尤其是最后两步经常颠倒，但最好保持那个顺序。

Example #2 一个简单的函数

/* {{{ proto void hello_world(string name)
   Greets a user */
PHP_FUNCTION(hello_world)
{
    char *name;
    int name_len;

    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
        return;
    }

    php_printf("Hello %s!", name);

    RETURN_TRUE;
}
/* }}} */

上面的函数展示了那些部分。让我们开始分析最后几行：php_printf 可以很容易的被猜到是标准的 C 语言的 printf 针对 PHP 的版本。与 printf 不同，它不是打印到进程的 STDOUT 通道，而是到当前的输出流，可被用户进行缓冲。要注意的是，php_printf 不象大部分 PHP 的 API，它不是二进制安全的。想要二进制安全输出应使用 PHPWRITE。

Note: 通常来说，要直接向输出流打印数据，建议改为返回字符串数据给用户，由用户决定做什么。 此规则的例外情况可能是处理二进制数据（如图像）的函数，API 要求就在函数里提供方法来存取数据。

最后一行的 RETURN_TRUE 宏做了三件事：将 return_value 指针变量的类型设为 IS_BOOLEAN，并将其值设为 true 值。然后从 C 函数中返回。所以当使用此宏时，你就是内存和要结束的其他资源的管家，此函数不会执行其后的代码。

zend_parse_parameters() 函数负责读取用户从参数堆栈传递来参数，并将其适当地转换后放入局部 C 语言变量。如果用户传递的参数个数有误或类型不可被转换， 函数会发出一个冗长的错误信息，并返回 FAILURE。 当从函数简单返回的情况下——不修改 return_value，将默认的返回值 NULL 返回给用户。

Note: 请注意，FAILURE 表示为 -1，SUCCESS 表示为 0。为了使代码清晰，应总是使用已命名的常量而不是其值。

传递给 zend_parse_parameters() 的第一个参数是用户实际传递到函数的参数数量。此数值做为 ht 参数传给函数，但就像上面讨论的那样，应使用做为实现细节的 ZEND_NUM_ARGS()。

为了与 PHP 的线程隔离、线程安全资源管理器兼容，还要用 TSRMLS_CC 传递线程上下文。与其他函数不同，它不能是最后的参数，因为在 zend_parse_parameters 内要求有不定数量的参数——依赖于要读取的用户参数的数量。

在线程上下文之后定义所要求的参数。每个参数都由字符串中的一个字符表示其类型。 如果希望一个字符串参数，则在此类型说明只不过是个 "s"。

最后一个是传递一个或多个指针给要填充变量值的 C 变量，或提供更多细节。比如字符串，事实上的字符串，总是以 NULL 结尾，以 char*，且其长度是除 NULL 字节外的 int 型值。

相关所有类型说明符和对应的附加的 C 语言类型的文档可在源代码发布包中的文件 README.PARAMETER_PARSING_API 中找到。大多数重要类型可见下表。

zend_parse_parameters() 类型说明符
修饰符 | 附加参数的类型 | 描述
b | zend_bool | Boolean 值
l | long | integer (long) 值
d | double | float (double) 值
s | char*, int | 二进制的安全串
h | HashTable* | 数组的哈希表
创建变量并设置值
类和对象的使用
PHP 核心：骇客指南


类和对象的使用

函数的编写
资源的使用
PHP 核心：骇客指南


资源的使用

类和对象的使用
INI 设置的使用
PHP 核心：骇客指南


INI 设置的使用

资源的使用
流的使用
PHP 核心：骇客指南


流的使用

Note:

用 PHP 源代码操作流的信息可查看 针对 PHP 扩展开发者的流 API 参考.

INI 设置的使用
"counter" 扩展 - 一个连续的实例
PHP 核心：骇客指南


"counter" 扩展 - 一个连续的实例

Table of Contents

  • 安装／配置
  • 预定义常量
  • 范例
  • Counter
  • Basic
  • Extended

序言

贯穿于整个 Zend 文档之中，参考文档中制作了一个实例模块用来阐述各种概念。 "counter"扩展就是这样一个范例，为了阐述各种概念，通过一个假定的但起作用的 Zend 模块，争取在合理情况下地尽可能多地使用 Zend API。这个短章节描述了整个扩展的用户接口。

Note: "counter"没有任何实际用途，所提供的功能就是来提供极为有效的通过适当的用户库实现的代码。

流的使用
安装／配置
PHP 核心：骇客指南


安装／配置

Table of Contents

  • 简介
  • 运行时配置
  • 资源类型
"counter" 扩展 - 一个连续的实例
简介
"counter" 扩展 - 一个连续的实例


简介

"counter"扩展提供在 PHP 代码中加入许多计数器，并可由调用者决定什么时候进行重置。

"counter"有 3 种接口: 简单接口, 扩展接口, 对象化接口。 简单接口提供用 INI 设置文件控制的单个计数器的功能调用。 扩展接口提供被命名的任意多个计数器，并可选择进行持久化以用于多个的 PHP 请求生命周期内。 对象化接口则将简单接口和扩展接口融合成为Counter类。

安装／配置
运行时配置
安装／配置


运行时配置

这些函数的行为受 php.ini 中的设置影响。

counter 配置选项
名称 | 默认值 | 可变性 | 修改日志
counter.reset_time | COUNTER_RESET_PER_REQUEST | PHP_INI_ALL |
counter.save_path | "" | PHP_INI_ALL |
counter.initial_value | "0" | PHP_INI_ALL |

有关 PHP_INI_* 样式的更多详情与定义，见 配置可被设定范围。

counter.reset_time integer
counter.reset_time 使 "counter" 使用简单接口进行重置。 可使用类似 COUNTER_RESET_* 的常量(见下文)。
counter.save_path string
告诉 "counter" 在哪保存那些在启动 PHP 间必需持久化的数据 (比如，计数器包含COUNTER_RESET_NEVER 或 COUNTER_FLAG_SAVE 选项)。一个文件将创建在此路径下，运行 PHP 的用户对此路径必须有可读写权限。
counter.initial_value integer
使用简单接口设置进行重置时，设定的计数器初始值。
简介
资源类型
安装／配置


资源类型

"counter" 扩展定义了一个资源类型：计数器。

运行时配置
预定义常量
安装／配置


预定义常量

下列常量由此扩展定义，且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

COUNTER_FLAG_PERSIST (integer)
有此标志的计数器会作为持久化资源进行创建。
COUNTER_FLAG_SAVE (integer)
有此标志的计数器会在启动 PHP 间保存。
COUNTER_FLAG_NO_OVERWRITE (integer)
此标志触发 counter_create() 函数以避免覆盖一个名称已存在的计数器而创建一个新的。
COUNTER_META_NAME (string)
传递此常量以获取计数器资源/对象的名称。
COUNTER_META_IS_PERISTENT (string)
传递此常量来指定计数器资源/对象进行持久化 (有 COUNTER_FLAG_PERSIST 标志)
COUNTER_RESET_NEVER (integer)
此计数器不会被重置。
COUNTER_RESET_PER_LOAD (integer)
此计数器每次启动 PHP 时都会被重置。
COUNTER_RESET_PER_REQUEST (integer)
此计数器每次请求时都会被重置。
资源类型
范例
"counter" 扩展 - 一个连续的实例


范例

Table of Contents

  • 简单接口
  • 扩展接口
  • 对象化接口
预定义常量
简单接口
"counter" 扩展 - 一个连续的实例


简单接口

简单接口提供 3 个简单的函数，实例如下：

Example #1 "counter"的简单接口

<?php
$starting_counter_value = counter_get();
counter_bump(1);
$second_counter_value = counter_get();
counter_reset();
$final_counter_value = counter_get();
printf("%3d %3d %3d", $starting_counter_value, $second_counter_value, $final_counter_value);
?>

以上例程会输出：

  0   1   0

简单接口也提供一系列 INI settings.

范例
扩展接口
范例


扩展接口

扩展接口提供小的一整套函数，允许用户根据设置定义任意数量名称唯一的计数器。简单接口可与扩展接口同时使用。

Example #1 "counter"的扩展接口

<?php
function print_counter_info($counter)
{
    if (is_resource($counter)) {
        printf("计数器的名称为 '%s'，且%s进行持久化。其当前值为 %d.\n",
            counter_get_meta($counter, COUNTER_META_NAME),
            counter_get_meta($counter, COUNTER_META_IS_PERSISTENT) ? '' : '不',
            counter_get_value($counter));
    } else {
      print "计数器无效!\n";
    }
}

if (($counter_one = counter_get_named("one")) === NULL) {
    $counter_one = counter_create("one", 0, COUNTER_FLAG_PERSIST);
}
counter_bump_value($counter_one, 2);
$counter_two = counter_create("two", 5);
$counter_three = counter_get_named("three");
$counter_four = counter_create("four", 2, COUNTER_FLAG_PERSIST | COUNTER_FLAG_SAVE | COUNTER_FLAG_NO_OVERWRITE);
counter_bump_value($counter_four, 1);

print_counter_info($counter_one);
print_counter_info($counter_two);
print_counter_info($counter_three);
print_counter_info($counter_four);
?>

首次运行时，以上例子的输出为：

计数器的名称为 'one'，且进行持久化。其当前值为 2.
计数器的名称为 'two'，且不进行持久化。其当前值为 5.
计数器无效!
计数器的名称为 'four'，且进行持久化。其当前值为 3.

在同一 PHP 实例中第 2 次运行时的输出为:

计数器的名称为 'one'，且进行持久化。其当前值为 4.
计数器的名称为 'two'，且不进行持久化。其当前值为 5.
计数器无效!
计数器的名称为 'four'，且进行持久化。其当前值为 4.

在另一个 PHP 实例中第 3 次运行时的输出为：

计数器的名称为 'one'，且进行持久化。其当前值为 2.
计数器的名称为 'two，且不进行持久化。其当前值为 5.
计数器无效!
计数器的名称为 'four'，且进行持久化。其当前值为 5.
简单接口
对象化接口
范例


对象化接口

对象接口提供一个面向对象的方式来访问扩展接口。下面的例子显示了使用对象化接口实现上面的例子。此例子的输出，除了所显示"计数器无效!"变为由 PHP 发出的变量 $counter_three 不是对象的警告信息以外，其他完全一样。此例子展示了定义在扩展中定义的 Counter 的子类，并对实例变量而不是用方法存取计数器的值。

Example #1 "counter" 的对象化接口

<?php
class MyCounter extends Counter
{
    public function printCounterInfo() {
        printf("计数器的名称为 '%s'，且%s进行持久化。其当前值为 %d.\n",
            $this->getMeta(COUNTER_META_NAME),
            $this->getMeta(COUNTER_META_IS_PERSISTENT) ? '' : '不',
            $this->value);
    }
}

Counter::setCounterClass("MyCounter");
if (($counter_one = Counter::getNamed("one")) === NULL) {
    $counter_one = new Counter("one", 0, COUNTER_FLAG_PERSIST);
}
$counter_one->bumpValue(2); // 不允许直接 "set" 值
$counter_two = new Counter("two", 5);
$counter_three = Counter::getNamed("three");
$counter_four = new Counter("four", 2, COUNTER_FLAG_PERSIST | COUNTER_FLAG_SAVE | COUNTER_FLAG_NO_OVERWRITE);
$counter_four->bumpValue(1);

$counter_one->printCounterInfo();
$counter_two->printCounterInfo();
$counter_three->printCounterInfo();
$counter_four->printCounterInfo();
?>
扩展接口
Counter
范例


Counter 类

简介

表示一个独立的计数器对象。

类摘要

Counter {
__construct ( string $name [, integer $initial_value [, integer $flags ]] )
integer getValue ( void )
void bumpValue ( integer $offset )
void resetValue ( void )
mixed getMeta ( integer $attribute )
static Counter getNamed ( string $name )
static void setCounterClass ( string $name )
}

Table of Contents

  • Counter::__construct — 创建一个包含单一数值的计数器实例。
  • Counter::getValue — 获取计数器的当前值。
  • Counter::bumpValue — 修改计数器的当前值。
  • Counter::resetValue — 重置计数器的当前值。
  • Counter::getMeta — 返回计数器的部分元信息。
  • Counter::getNamed — 取回一个名称已存在的计数器。
  • Counter::setCounterClass — 设置由 Counter::getNamed 返回的计数器类。
对象化接口
Counter::__construct
"counter" 扩展 - 一个连续的实例


创建一个包含单一数值的计数器实例。

Counter
Counter::getValue
Counter
PHP Manual

Counter::__construct

Counter::__construct — 创建一个包含单一数值的计数器实例。

说明

Counter::__construct ( string $name [, integer $initial_value [, integer $flags ]] )

创建一个包含单一数值的 Counter 实例。

参数

name
新计数器的名称。
initial_value
计数器的初始值。默认为零(0)。
flags
新计数器的标志，可在形如 COUNTER_FLAG_* 的常量中选择。

返回值

成功则返回 Counter 对象。

错误／异常

Counter::__construct() 在有错时抛出一个异常(Exception)。

Counter
Counter::getValue
Counter


获取计数器的当前值。

Counter::__construct
Counter::bumpValue
Counter
PHP Manual

Counter::getValue

Counter::getValue — 获取计数器的当前值。

说明

integer Counter::getValue ( void )

Counter::getValue() 返回计数器的当前值

返回值

Counter::getValue() 返回一个整数。

参见

  • Counter::bumpValue() - 修改计数器的当前值。
  • Counter::resetValue() - 重置计数器的当前值。
Counter::__construct
Counter::bumpValue
Counter


修改计数器的当前值。

Counter::getValue
Counter::resetValue
Counter
PHP Manual

Counter::bumpValue

Counter::bumpValue — 修改计数器的当前值。

说明

void Counter::bumpValue ( integer $offset )

Counter::bumpValue() 更新计数器的当前值。

参数

offset
计数器值的变化量。可为负数。

参见

  • Counter::getValue() - 获取计数器的当前值。
  • Counter::resetValue() - 重置计数器的当前值。
Counter::getValue
Counter::resetValue
Counter


重置计数器的当前值。

Counter::bumpValue
Counter::getMeta
Counter
PHP Manual

Counter::resetValue

Counter::resetValue — 重置计数器的当前值。

说明

void Counter::resetValue ( void )

Counter::resetValue() 将计数器的当前值重置为其初始值。

参见

  • Counter::getValue() - 获取计数器的当前值。
  • Counter::bumpValue() - 修改计数器的当前值。
Counter::bumpValue
Counter::getMeta
Counter


返回计数器的部分元信息。

Counter::resetValue
Counter::getNamed
Counter
PHP Manual

Counter::getMeta

Counter::getMeta — 返回计数器的部分元信息。

说明

mixed Counter::getMeta ( integer $attribute )

Counter::getMeta() 返回一个计数器的元信息。

参数

attribute
要取回的元信息。

返回值

Counter::getMeta() 根据所请求的元数据返回不同类型的值。

Counter::resetValue
Counter::getNamed
Counter


取回一个名称已存在的计数器。

Counter::getMeta
Counter::setCounterClass
Counter
PHP Manual

Counter::getNamed

Counter::getNamed — 取回一个名称已存在的计数器。

说明

static Counter Counter::getNamed ( string $name )

Counter::getNamed() 通过名称查询一个已存在的计数器，不存在则返回NULL。这是静态函数。

参数

name
要查询的计数器名称。

返回值

Counter::getNamed() 通过名称查询一个已存在的计数器，不存在则返回NULL。

Counter::getMeta
Counter::setCounterClass
Counter


设置由 Counter::getNamed 返回的计数器类。

Counter::getNamed
Basic
Counter
PHP Manual

Counter::setCounterClass

Counter::setCounterClass — 设置由 Counter::getNamed() 返回的计数器类。

说明

static void Counter::setCounterClass ( string $name )

Counter::setCounterClass() 改变由 Counter::getNamed() 返回的对象的类。要设置的类可以没有 pulic 的构造器，但必须是 Counter 的子类。如果不满足这些条件，则会引发致命错误。这是静态函数。

参数

name
要使用的类名。
Counter::getNamed
Basic
Counter


简单接口

Table of Contents

  • counter_get — 获取简单计数器的当前值。
  • counter_bump — 修改简单计数器的当前值。
  • counter_reset — 重置简单计数器的当前值。
Counter::setCounterClass
counter_get
"counter" 扩展 - 一个连续的实例


获取简单计数器的当前值。

Basic
counter_bump
Basic
PHP Manual

counter_get

counter_get — 获取简单计数器的当前值。

说明

integer counter_get ( void )

counter_get() 返回使用简单接口的计数器的当前值。

返回值

counter_get() 返回一个整数。

参见

  • counter_bump() - 修改简单计数器的当前值。
  • counter_reset() - 重置简单计数器的当前值。
Basic
counter_bump
Basic


修改简单计数器的当前值。

counter_get
counter_reset
Basic
PHP Manual

counter_bump

counter_bump — 修改简单计数器的当前值。

说明

void counter_bump ( integer $offset )

counter_bump() 修改使用简单接口的计数器的当前值。

参数

offset
计数器值的变化量。可为负数。

参见

  • counter_get() - 获取简单计数器的当前值。
  • counter_reset() - 重置简单计数器的当前值。
counter_get
counter_reset
Basic


重置简单计数器的当前值。

counter_bump
Extended
Basic
PHP Manual

counter_reset

counter_reset — 重置简单计数器的当前值。

说明

void counter_reset ( void )

counter_reset() 重置使用简单接口的计数器的当前值。.

参见

  • counter_get() - 获取简单计数器的当前值。
  • counter_bump() - 修改简单计数器的当前值。
counter_bump
Extended
Basic


扩展接口

Table of Contents

  • counter_create — 创建一个包含单个数值的计数器。
  • counter_get_value — 获取计数器资源的当前值。
  • counter_bump_value — 更新计数器资源的当前值。
  • counter_reset_value — 重置计数器资源的当前值。
  • counter_get_meta — 返回计数器资源的部分元信息。
  • counter_get_named — 按名称查询一个已存在的计数器，并作为资源返回。
counter_reset
counter_create
"counter" 扩展 - 一个连续的实例


创建一个包含单个数值的计数器。

Extended
counter_get_value
Extended
PHP Manual

counter_create

counter_create — 创建一个包含单个数值的计数器。

说明

resource counter_create ( string $name [, integer $initial_value [, integer $flags ]] )

创建一个包含单个数值的计数器。

参数

name
新的计数器名称。
initial_value
计数器的初值值. 默认为零(0)。
flags
新计数器的标志, 从形如 COUNTER_FLAG_* 的常量中选择。

返回值

返回计数器资源。

Extended
counter_get_value
Extended


获取计数器资源的当前值。

counter_create
counter_bump_value
Extended
PHP Manual

counter_get_value

counter_get_value — 获取计数器资源的当前值。

说明

integer counter_get_value ( resource $counter )

counter_get_value() 返回计数器资源的当前值。

参数

counter
要操作的计数器资源。

返回值

counter_get_value() 返回一个整数.

参见

  • counter_bump_value() - 更新计数器资源的当前值。
  • counter_reset_value() - 重置计数器资源的当前值。
counter_create
counter_bump_value
Extended


更新计数器资源的当前值。

counter_get_value
counter_reset_value
Extended
PHP Manual

counter_bump_value

counter_bump_value — 更新计数器资源的当前值。

说明

void counter_bump_value ( resource $counter , integer $offset )

counter_bump_value() 更新计数器资源的当前值。

参数

counter
要操作的计数器资源。
offset
计数器值的变化量。可为负数。

参见

  • counter_get_value() - 获取计数器资源的当前值。
  • counter_reset_value() - 重置计数器资源的当前值。
counter_get_value
counter_reset_value
Extended


重置计数器资源的当前值。

counter_bump_value
counter_get_meta
Extended
PHP Manual

counter_reset_value

counter_reset_value — 重置计数器资源的当前值。

说明

void counter_reset_value ( resource $counter )

counter_reset_value() 将计数器资源的当前值重置为其初始值。

参数

counter
要操作的计数器资源。

参见

  • counter_get_value() - 获取计数器资源的当前值。
  • counter_bump_value() - 更新计数器资源的当前值。
counter_bump_value
counter_get_meta
Extended


返回计数器资源的部分元信息。

counter_reset_value
counter_get_named
Extended
PHP Manual

counter_get_meta

counter_get_meta — 返回计数器资源的部分元信息。

说明

mixed counter_get_meta ( resource $counter , integer $attribute )

counter_get_meta() 返回计数器资源的元信息。

参数

counter
要操作的计数器资源。
attribute
要取回的元信息。

返回值

counter_get_meta() 根据所请求的元数据返回不同类型的值。

counter_reset_value
counter_get_named
Extended


按名称查询一个已存在的计数器，并作为资源返回。

counter_get_meta
PHP 5 构建系统
Extended
PHP Manual

counter_get_named

counter_get_named — 按名称查询一个已存在的计数器，并作为资源返回。

说明

resource Counter::getNamed ( string $name )

counter_get_named() 返回一个存在的计数器名称名称不存在则返回NULL。

参数

name
要查询的计数器名称。

返回值

counter_get_name() 返回一个存在的计数器名称，名称不存在则返回NULL。

counter_get_meta
PHP 5 构建系统
Extended


PHP 5 构建系统

Table of Contents

  • PHP 扩展开发构建
  • ext_skel 脚本
  • 与 UNIX 构建系统交互: config.m4
  • 使用 Windows 构建系统：config.w32

有了在 PHP 5 中的所有功能及灵活性，不用惊奇构建系统由几千个文件组成，有超过一百万行源代码。同样别惊奇构建系统管理如此之多数据的必要性。此章节描述了如何着手开发 PHP 扩展， 扩展在 PHP 源代码树中的布局，以及扩展如何与构建系统对接。

counter_get_named
PHP 扩展开发构建
PHP 核心：骇客指南


PHP 扩展开发构建

在一个典型的 PHP 安装中，高性能的需要几乎总是造成以调试的便利为代价的优化。这是产品所使用的合理折衷方案，但当开发扩展时却达不到标准。 我们所需要的是 PHP 的安装包，以提示我们做什么事会出错。

Zend 引擎提供了一个内存管理器，有在扩展中跟踪内存泄漏的能力并提供详尽的调试信息。跟踪在默认情况下是被禁用的，同时也是线程安全的。要打开的话，应将 --enable-debug 和 --enable-maintainer-zts 选项与其他常用选项一起传给 configure。要获得从源代码构建 PHP 的说明，请看位于 安装前需要考虑的事项 的说明。典型的 configure 命令行可能看起来象这样：

$ ./configure --prefix=/where/to/install/php --enable-debug --enable-maintainer-zts --enable-cgi --enable-cli --with-mysql=/path/to/mysql

PHP 5 构建系统
ext_skel 脚本
PHP 5 构建系统


ext_skel 脚本

PHP 扩展由几个文件组成，这些文件对所有扩展来说都是通用的。不同扩展之间，这些文件的很多细节是相似的，只是要费力去复制每个文件的内容。幸运的是，有脚本可以做所有的初始化工作，名为 ext_skel，自 PHP 4.0 起与其一起分发。

不带参数运行 ext_skel 在 PHP 5.2.2 中会产生以下输出：

php-5.2.2/ext$ ./ext_skel
./ext_skel --extname=module [--proto=file] [--stubs=file] [--xml[=file]]
           [--skel=dir] [--full-xml] [--no-help]

  --extname=module   module is the name of your extension
  --proto=file       file contains prototypes of functions to create
  --stubs=file       generate only function stubs in file
  --xml              generate xml documentation to be added to phpdoc-cvs
  --skel=dir         path to the skeleton directory
  --full-xml         generate xml documentation for a self-contained extension
                     (not yet implemented)
  --no-help          don't try to be nice and create comments in the code
                     and helper functions to test if the module compiled
通常来说，开发一个新扩展时，仅需关注的参数是 --extname 和 --no-help。除非已经熟悉扩展的结构，不要想去使用 --no-help; 指定此参数会造成 ext_skel 不会在生成的文件里省略很多有用的注释。

剩下的 --extname 会将扩展的名称传给 ext_skel。"name" 是一个全为小写字母的标识符，仅包含字母和下划线，在 PHP 发行包的 ext/ 文件夹下是唯一的。

--proto 选项允许开发人员指定一个头文件，由此创建一系列 PHP 函数，表面上看就是要开发基于一个函数库的扩展，但对大多数头现代的文件来说很少能起作用。如果用 zlib.h 头文件来做测试，就会导致在 ext_skel 的输出文件中存在大量的空的和无意义的原型文件。--xml 和 --full-xml 选项当前完全不起作用。--skel 选项可用于指定用一套修改过的框架文件来工作，这是本节范围之外的话题了。

PHP 扩展开发构建
与 UNIX 构建系统交互: config.m4
PHP 5 构建系统


与 UNIX 构建系统交互: config.m4

扩展的 config.m4 文件告诉 UNIX 构建系统哪些扩展 configure 选项是支持的，你需要哪些扩展库，以及哪些源文件要编译成它的一部分。对所有经常使用的 autoconf 宏，包括 PHP 特定的及 autoconf 内建的，请查看 Zend Engine 2 API 参考 章节。

Tip

当开发 PHP 扩展时，强烈建议安装 autoconf 2.13 版，尽管用更新的版本可使用。2.13 版被认为是在 autoconf 中可用性，适用性及用户基础等方面最好的版本。使用最新版本有时会与所期望的 configure 输出在样式上有所不同。

Example #1 config.m4 文件举例

dnl $Id$
dnl config.m4 for extension example
PHP_ARG_WITH(example, for example support,
[  --with-example[=FILE]       Include example support. File is the optional path to example-config])
PHP_ARG_ENABLE(example-debug, whether to enable debugging support in example,
[  --enable-example-debug        example: Enable debugging support in example], no, no)
PHP_ARG_WITH(example-extra, for extra libraries for example,
[  --with-example-extra=DIR      example: Location of extra libraries for example], no, no)

dnl 检测扩展是否已启用
if test "$PHP_EXAMPLE" != "no"; then

  dnl 检测 example-config。首先尝试所给出的路径，然后在 $PATH 中寻找
  AC_MSG_CHECKING([for example-config])
  EXAMPLE_CONFIG="example-config"
  if test "$PHP_EXAMPLE" != "yes"; then
    EXAMPLE_PATH=$PHP_EXAMPLE
  else
    EXAMPLE_PATH=`$php_shtool path $EXAMPLE_CONFIG`
  fi

  dnl 如果找到可用的 example-config，就使用它
  if test -f "$EXAMPLE_PATH" && test -x "$EXAMPLE_PATH" && $EXAMPLE_PATH --version > /dev/null 2>&1; then
    AC_MSG_RESULT([$EXAMPLE_PATH])
    EXAMPLE_LIB_NAME=`$EXAMPLE_PATH --libname`
    EXAMPLE_INCDIRS=`$EXAMPLE_PATH --incdirs`
    EXAMPLE_LIBS=`$EXAMPLE_PATH --libs`

    dnl 检测扩展库是否工作正常
    PHP_CHECK_LIBRARY($EXAMPLE_LIB_NAME, example_critical_function,
    [
      dnl 添加所需的 include 目录
      PHP_EVAL_INCLINE($EXAMPLE_INCDIRS)
      dnl 添加所需的扩展库及扩展库所在目录
      PHP_EVAL_LIBLINE($EXAMPLE_LIBS, EXAMPLE_SHARED_LIBADD)
    ],[
      dnl 跳出
      AC_MSG_ERROR([example library not found. Check config.log for more information.])
    ],[$EXAMPLE_LIBS]
    )
  else
    dnl 没有可用的 example-config，跳出
    AC_MSG_RESULT([not found])
    AC_MSG_ERROR([Please check your example installation.])
  fi

  dnl 检测是否启用调试
  if test "$PHP_EXAMPLE_DEBUG" != "no"; then
    dnl 是，则设置 C 语言宏指令
    AC_DEFINE(USE_EXAMPLE_DEBUG,1,[Include debugging support in example])
  fi

  dnl 检测额外的支持
  if test "$PHP_EXAMPLE_EXTRA" != "no"; then
    if test "$PHP_EXAMPLE_EXTRA" == "yes"; then
      AC_MSG_ERROR([You must specify a path when using --with-example-extra])
    fi

    PHP_CHECK_LIBRARY(example-extra, example_critical_extra_function,
    [
      dnl 添加所需路径
      PHP_ADD_INCLUDE($PHP_EXAMPLE_EXTRA/include)
      PHP_ADD_LIBRARY_WITH_PATH(example-extra, $PHP_EXAMPLE_EXTRA/lib, EXAMPLE_SHARED_LIBADD)
      AC_DEFINE(HAVE_EXAMPLEEXTRALIB,1,[Whether example-extra support is present and requested])
      EXAMPLE_SOURCES="$EXAMPLE_SOURCES example_extra.c"
    ],[
      AC_MSG_ERROR([example-extra lib not found. See config.log for more information.])
    ],[-L$PHP_EXAMPLE_EXTRA/lib]
    )
  fi

  dnl 最后，将扩展及其所需文件等信息传给构建系统
  PHP_NEW_EXTENSION(example, example.c $EXAMPLE_SOURCES, $ext_shared)
  PHP_SUBST(EXAMPLE_SHARED_LIBADD)
fi

autoconf 语法简介

config.m4 文件使用 GNU autoconf 语法编写。简而言之，就是用强大的宏语言增强的 shell 脚本。注释用字符串 dnl 分隔，字符串则放在左右方括号中间（例如，[ 和 ]）。字符串可按需要多次嵌套引用。完整的语法参考可参见位于 » http://www.gnu.org/software/autoconf/manual/ 的 autoconf 手册。

PHP_ARG_*: 赋予用户可选项

在以上的 config.m4 例子中，两条注释后，最先见到的 3 行代码，使用了 PHP_ARG_WITH() 和 PHP_ARG_ENABLE()。这些给 configure 提供了可选项，和在运行 ./configure --help 时显示的帮助文本。就象名称所暗示的，其两者的不同点在于是创建 --with-* 选项还是 --enable-* 选项。每个扩展应提供至少一个以上的选项以及扩展名称，以便用户可选择是否将扩展构建至 PHP 中。按惯例，PHP_ARG_WITH() 用于取得参数的选项，例如扩展所需库或程序的位置；而 PHP_ARG_ENABLE() 用于代表简单标志的选项。

Example #2 configure 输出举例

$ ./configure --help
...
  --with-example[=FILE]       Include example support. FILE is the optional path to example-config
  --enable-example-debug        example: Enable debugging support in example
  --with-example-extra=DIR      example: Location of extra libraries for example
...

$ ./configure --with-example=/some/library/path/example-config --disable-example-debug --with-example-extra=/another/library/path
...
checking for example support... yes
checking whether to enable debugging support in example... no
checking for extra libraries for example... /another/library/path
...

Note:

在调用 configure 时，不管选项在命令行中的顺序如何，都会按在 config.m4 中指定的顺序进行检测。

处理用户选择

config.m4 可给用户提供一些做什么的选择，现在就是做出选择的时候了。在上例中，三个选项在未指定时显然默认为 "no"。习惯上，最好用此值作为用于启用扩展的选项的默认值，为了扩展与 PHP 分开构建则用 phpize 覆盖此值，而要构建在 PHP 中时则不应被默认值将扩展空间弄乱。处理这三个选项的代码要复杂得多。

处理 --with-example[=FILE] 选项

首先检测是否设置了 --with-example[=FILE] 选项。如此选项未被指定，或使用否定的格式（--without-example ），或赋值为 "no" 时，它会控制整个扩展的含有物其他任何事情都不会发生。在上面的例子中所指定的值为 /some/library/path/example-config，所以第一个 test 成功了。

接下来，代码调用 AC_MSG_CHECKING()，这是一个 autoconf 宏，输出一行标准的如 "checking for ..." 的信息，并检测用户假定的 example-config 是否是一个明确的路径。在这个例子中，PHP_EXAMPLE 所取到的值为 /some/library/path/example-config，现已复制到 EXAMPLE_PATH 变量中了。只有用户指定了 --with-example ，才会执行代码 $php_shtool path $EXAMPLE_CONFIG，尝试使用用户当前的 PATH 环境变量推测 example-config 的位置。无论如何，下一步都是检测所选的 EXAMPLE_PATH 是否是正常文件，是否可执行，及是否执行成功。如成功，则调用 AC_MSG_RESULT()，结束由 AC_MSG_CHECKING() 开始的输出行。否则，调用 AC_MSG_ERROR()，打印所给的信息并立即中断执行 configure。

代码现在执行几次 example-config 以确定一些站点特定的配置信息。下一步调用的是 PHP_CHECK_LIBRARY()，这是 PHP 构建系统提供的一个宏，包装了 autoconf 的 AC_CHECK_LIB() 函数。PHP_CHECK_LIBRARY() 尝试编译、链接和执行程序，在第一个参数指定的库中调用由第二个参数指定的符号，使用第五个参数给出的字符串作为额外的链接选项。如果尝试成功了，则运行第三个参数所给出的脚本。此脚本从 example-config 所提供的原始的选项字符串中取出头文件路径、库文件路径和库名称，告诉 PHP 构建系统。如果尝试失败，脚本则运行第四个参数中的脚本。此时调用 AC_MSG_ERROR() 来中断程序执行。

处理 --enable-example-debug 选项

处理 --enable-example-debug 很简单。只简单地检测其真实值。如果检测成功，则调用 AC_DEFINE() 使 C 语言宏指令 USE_EXAMPLE_DEBUG 可用于扩展的源代码。第三个参数是给 config.h 的注释字符串，通常可放心的留空。

处理 --with-example-extra=DIR 选项

对于此例子来说，由 --with-example-extra=DIR 选项所请求的假定的"额外"功能操作不会与假定的 example-config 程序共享，也没有默认的搜索路径。因此，用户需要在所需的库之前提供设置程序。有点不象现实中的扩展，在这里的设置仅仅起说明性的作用。

代码开始用已熟知的方式来检测 PHP_EXAMPLE_EXTRA
的真实值。如果所提供的为否定形式，则不会进行其他处理，用户也不会请求额外的功能。如果所提供的为未提供参数的肯定形式，则调用
AC_MSG_ERROR() 中止处理。下一步则再次调用
PHP_CHECK_LIBRARY()。这一次，因为没有提供预定义编译选项，PHP_ADD_INCLUDE()
和 PHP_ADD_LIBRARY_WITH_PATH() 用于构建额外功能所需的头文件路径、库文件路径和库标志。也调用
AC_DEFINE()
来指示所请求的额外功能代码是可用的，设置变量来告诉以后的代码，有额外的源代码要构建。如果检测失败，则调用所熟悉的
AC_MSG_ERROR()。另一种不同的处理失败的方式是更换为调用
AC_MSG_WARNING()，例如：

AC_MSG_WARNING([example-extra lib not found. example will be built without extra functionality.])

上例中，configure 会打印一段警告信息而不是错误，且继续处理。用哪种方式处理失败留给扩展开发人员在设计时决定。

告诉构建系统要做什么

有了所需的头文件和特定的库，有了全部选项处理代码及宏定义，还有一件事要做：必须告诉构建系统去构建扩展本身和被其用到的文件。为了做这些，则要调用 PHP_NEW_EXTENSION() 宏。第一个参数是扩展的名称，和包含它的目录同名。第二个参数是做为扩展的一部分的所有源文件的列表。参见 PHP_ADD_BUILD_DIR() 以获取将在子目录中源文件添加到构建过程的相关信息。第三个参数总是 $ext_shared， 当为了 --with-example[=FILE] 而调用 PHP_ARG_WITH()时，由 configure 决定参数的值。第四个参数指定一个"SAPI 类"，仅用于专门需要 CGI 或 CLI SAPI 的扩展。其他情况下应留空。第五个参数指定了构建时要加入 CFLAGS 的标志列表。第六个参数是一个布尔值，为 "yes" 时会强迫整个扩展使用 $CXX 代替 $CC 来构建。第三个以后的所有参数都是可选的。最后，调用 PHP_SUBST() 来启用扩展的共享构建。参见 扩展相关 FAQ 以获取更多有关禁用共享方式下构建扩展的信息。

counter 扩展的 config.m4 文件

以前编写的 counter 扩展有一个比上面所述更简单的 config.m4 文件，它不使用很多构建系统的特性。对不使用外部的或绑定的库的扩展来说，这是一个比较好的操作方式。

Example #3 counter 的 config.m4 文件

dnl
$
Id$
dnl config.m4 for extension counter

PHP_ARG_ENABLE(counter, for counter support,
[  --enable-counter            Include counter support])

dnl Check whether the extension is enabled at all
if test "$PHP_COUNTER" != "no"; then
  dnl Finally, tell the build system about the extension and what files are needed
  PHP_NEW_EXTENSION(counter, counter.c counter_util.c, $ext_shared)
  PHP_SUBST(COUNTER_SHARED_LIBADD)
fi
ext_skel 脚本
使用 Windows 构建系统：config.w32
PHP 5 构建系统


使用 Windows 构建系统：config.w32

扩展的 config.w32 文件的用法与 config.m4 文件类似，但有两点决定性的不同：首先，它是用于 Windows 构建的，其次，它是使用 JavaScript 编写的。此章节不会包括 JavaScript 语法。目前，代替 Win32 试验台的这部分是不完整的，仅为例子提供的范例 config.m4 的仅试验性质的移植。

Example #1 config.w32 文件举例

// $Id$
// vim:ft=javascript
ARG_WITH("example", "for example support", "no");
ARG_ENABLE("example-debug", "for debugging support in example", "no")
ARG_WITH("example-extra", "for extra functionality in example", "no")
if (PHP_EXAMPLE != "no") {
    if (CHECK_LIB("libexample.lib", "example", PHP_EXAMPLE) &&
        CHECK_HEADER_ADD_INCLUDE("example.h", "CFLAGS_EXAMPLE", PHP_EXAMPLE + "\\include")) {

        if (PHP_EXAMPLE_DEBUG != "no") {
            AC_DEFINE('USE_EXAMPLE_DEBUG', 1, 'Debug support in example');
        }

        if (PHP_EXAMPLE_EXTRA != "no" &&
            CHECK_LIB("libexample-extra.lib", "example", PHP_EXAMPLE) &&
            CHECK_HEADER_ADD_INCLUDE("example-extra.h", "CFLAGS_EXAMPLE", PHP_EXAMPLE + ";" + PHP_PHP_BUILD + "\\include") {
            AC_DEFINE('HAVE_EXAMPLEEXTRA', 1, 'Extra functionality in example');
            HAVE_EXTRA = 1;
        } else {
            WARNING( "extra example functionality not enabled, lib not found" );
        }

        EXTENSION("example", "example.c");
        if (HAVE_EXTRA == 1) {
            ADD_SOURCES("example-extra.c");
        }
    } else {
        WARNING( "example not enabled; libraries not found" );
    }
}

counter 扩展的 config.w32 文件

因为不使用很多构建系统的特性，以前所记载的 counter 扩展有一个比上面所描述的例子更简单的 config.w32 文件。

Example #2 counter's config.w32 file

// $Id$
// vim:ft=javascript
ARG_ENABLE("counter", "for counter support", "no");
if (PHP_COUNTER != "no") {
    EXTENSION("counter", "counter.c");
    ADD_SOURCE("counter-util.c");
}
与 UNIX 构建系统交互: config.m4
扩展的结构
PHP 5 构建系统


扩展的结构

Table of Contents

  • 组成扩展的文件
  • Basic constructs
  • The zend_module structure
  • Extension globals
  • Life cycle of an extension
  • Testing an extension

许多扩展编写指南首先以简单的实例为中心而忽视以后更复杂的实现需求。这类指南经常再三地反复做着同样的事情来描述那些新特性。 此节从一个成熟、实际的实现的视角描述扩展的结构，为了使用户对在扩展开发过程中几乎都会遇到需要和问题有准备。

使用 Windows 构建系统：config.w32
组成扩展的文件
PHP 核心：骇客指南


组成扩展的文件

不管是通过手工，通过ext_skel ，还是通过另外的扩展生成器，例如 » CodeGen，所有的扩展都会有至少四个文件：

config.m4

UNIX 构建系统配置 (见 与 UNIX 构建系统交互: config.m4)

config.w32

Windows 构建系统配置 (见 使用 Windows 构建系统：config.w32)

php_counter.h

当将扩展作为静态模块构建并放入 PHP 二进制包时，构建系统要求用 php_ 加扩展的名称命名的头文件包含一个对扩展模块结构的指针定义。就象其他头文件，此文件经常包含附加的宏、原型和全局量。

counter.c

主要的扩展源文件。按惯例，此文件名就是扩展的名称，但不是必需的。此文件包含模块结构定义、INI 条目、管理函数、用户空间函数和其它扩展所需的内容。

构建系统的文件在别处讨论，本节关注于其余的部分。扩展应包含任意数量的头文件、源文件、单元测试和其他支持文件，此四个文件仅够组成最小的扩展。counter 扩展的文件列表如下所示：

Example #1 counter 扩展中的文件，未特别排序

ext/
 counter/
  .cvsignore
  config.m4
  config.w32
  counter_util.h
  counter_util.c
  php_counter.h
  counter.c
  package.xml
  CREDITS
  tests/
   critical_function_001.phpt
   critical_function_002.phpt
   optional_function_001.phpt
   optional_function_002.phpt

非源文件

.cvsignore 文件用于已检入一个 PHP CVS 资源库（通常是 » PECL）的扩展，由 ext_skel 生成的这个文件内容如下：

.deps
*.lo
*.la

这几行告诉 CVS 要忽略由 PHP 构建系统生成的临时文件。这只是惯例，可以被完全省略掉且无不良影响。

CREDITS 文件用纯文本格式列出了扩展的贡献者和（或 ）维护者。此文件的主要用途是为已捆绑的扩展生成被 phpcredits() 所使用的荣誉信息。按惯例，文件的第一行应保存扩展的名称，第二行是用逗号分隔的贡献者名单。贡献者通常是按其贡献物的时间顺序排序。例如，在 » PECL 包中，此信息已经维护在 package.xml 中了。这就是可以被省略且无不良影响的其他文件。

package.xml 文件是基于 » PECL 的扩展特有的，是一个元信息文件，记录了扩展的信赖关系、作者、安装需求和其他有价值的信息。对于不是基于 » PECL 的扩展来说，此文件就无关紧要了。

扩展的结构
Basic constructs
扩展的结构


Basic constructs

C is a very low-level language by modern definitions. This means that it has no built-in support for many features that PHP takes for granted, such as reflection, dynamic module loading, bounds checking, threadsafe data management and various useful data structures including linked lists and hash tables. At the same time, C is a common denominator of language support and functionality. Given enough work, none of these concepts are impossible; the Zend Engine uses them all.

A lot of effort has gone into making the Zend API both extensible and understandable, but C forces certain necessary declarations upon any extension that to an inexperienced eye seem redundant or plain unnecessary. All of those constructs, detailed in this section, are "write once and forget" in Zend Engine 2 and 3. Here are some excerpts from the pre-generated php_counter.h and counter.c files created by PHP 5.3's ext_skel, showing the pre-generated declarations:

Note: The astute reader will notice that there are several declarations in the real files that aren't shown here. Those declarations are specific to various Zend subsystems and are discussed elsewhere as appropriate.

extern zend_module_entry counter_module_entry;
#define phpext_counter_ptr &counter_module_entry

#ifdef PHP_WIN32
#    define PHP_COUNTER_API __declspec(dllexport)
#elif defined(__GNUC__) && __GNUC__ >= 4
#    define PHP_COUNTER_API __attribute__ ((visibility("default")))
#else
#    define PHP_COUNTER_API
#endif

#ifdef ZTS
#include "TSRM.h"
#endif

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include "php.h"
#include "php_ini.h"
#include "ext/standard/info.h"
#include "php_counter.h"

/* ... */

#ifdef COMPILE_DL_COUNTER
ZEND_GET_MODULE(counter)
#endif
  • The lines concerning counter_module_entry declare a global variable, and a macroed pointer to it, which contains the zend_module_entry for the extension. Despite the later discussion regarding the drawbacks of "true" globals, this usage is intentional; Zend takes precautions to avoid misusing this variable.
  • PHP_COUNTER_API is declared for use by non-PHP functions the module intends to export for the use of other modules. The counter extension doesn't declare any of these, and in the final version of the header file, this macro has been removed. The PHPAPI macro is declared identically elsewhere and is used by the standard extension to make the phpinfo() utility functions available to other extensions.
  • The include of TSRM.h is skipped if PHP, or the extension, isn't being compiled with thread-safety, since in that case TSRM isn't used.
  • A standard list of includes, especially the extension's own php_counter.h, is given. config.h gives the extension access to determinations made by configure. php.h is the gateway to the entire PHP and Zend APIs. php_ini.h adds the APIs for runtime configuration (INI) entries. Not all extensions will use this. Finally, ext/standard/info.h imports the aforementioned phpinfo() utility API.
  • COMPILE_DL_COUNTER will only be defined by configure if the counter extension is both enabled and wants to be built as a dynamically loadable module instead of being statically linked into PHP. ZEND_GET_MODULE defines a tiny function which Zend can use to get the extension's zend_module_entry at runtime.

    Note: The astute reader who has peeked into main/php_config.h after trying to build with the counter module enabled statically may have noticed that there is also a HAVE_COUNTER constant defined that the source code doesn't check for. There's a simple reason this check isn't done: It's unnecessary. If the extension isn't enabled, the source file will never be compiled.

组成扩展的文件
The zend_module structure
扩展的结构


The zend_module structure

The main source file of a PHP extension contains several new constructs for a C programmer. The most important of these, the one touched first when starting a new extension, is the zend_module structure. This structure contains a wealth of information that tells the Zend Engine about the extension's dependencies, version, callbacks, and other critical data. The structure has mutated considerably over time; this section will focus on the structure as it has appeared since PHP 5.2, and will identify the very few parts which have changed in PHP 5.3.

The zend_module declaration from counter.c looks like this before any code has been written. The example file was generated by ext_skel --extname=counter, with some obsolete constructs removed:

Example #1 zend_module declaration in the counter extension

/* {{{ counter_module_entry
 */
zend_module_entry counter_module_entry = {
    STANDARD_MODULE_HEADER,
    "counter",
    counter_functions,
    PHP_MINIT(counter),
    PHP_MSHUTDOWN(counter),
    PHP_RINIT(counter),        /* Replace with NULL if there's nothing to do at request start */
    PHP_RSHUTDOWN(counter),    /* Replace with NULL if there's nothing to do at request end */
    PHP_MINFO(counter),
    "0.1", /* Replace with version number for your extension */
    STANDARD_MODULE_PROPERTIES
};
/* }}} */

This may look a bit daunting at first glance, but most of it is very simple to understand. Here's the declaration of zend_module from zend_modules.h in PHP 5.3:

Example #2 zend_module definition in PHP 5.3

struct _zend_module_entry {
    unsigned short size;
    unsigned int zend_api;
    unsigned char zend_debug;
    unsigned char zts;
    const struct _zend_ini_entry *ini_entry;
    const struct _zend_module_dep *deps;
    const char *name;
    const struct _zend_function_entry *functions;
    int (*module_startup_func)(INIT_FUNC_ARGS);
    int (*module_shutdown_func)(SHUTDOWN_FUNC_ARGS);
    int (*request_startup_func)(INIT_FUNC_ARGS);
    int (*request_shutdown_func)(SHUTDOWN_FUNC_ARGS);
    void (*info_func)(ZEND_MODULE_INFO_FUNC_ARGS);
    const char *version;
    size_t globals_size;
#ifdef ZTS
    ts_rsrc_id* globals_id_ptr;
#else
    void* globals_ptr;
#endif
    void (*globals_ctor)(void *global TSRMLS_DC);
    void (*globals_dtor)(void *global TSRMLS_DC);
    int (*post_deactivate_func)(void);
    int module_started;
    unsigned char type;
    void *handle;
    int module_number;
};

Many of these fields will never be touched by an extension writer. There are a number of standard macros that set them to their proper values automatically. The macro STANDARD_MODULE_HEADER fills in everything up to the deps field. Alternatively, the STANDARD_MODULE_HEADER_EX will leave the deps field empty for the developer's use. The developer is always responsible for everything from name to version. After that, the STANDARD_MODULE_PROPERTIES macro will fill in the rest of the structure, or the STANDARD_MODULE_PROPERTIES_EX macro can be used to leave the extension globals and post-deactivation function fields unfilled. Most modern extensions will make use of module globals.

Note:

This table gives the values that each field would have if the developer were to fill in the structure entirely by hand, without recourse to any of the shortcut macros. This is not recommended. The "correct" values for many fields may change. Use the macros whenever possible.

Module structure field values
Field | Value | Description
size [1] [2] [3] | sizeof(zend_module_entry) | The size in bytes of the structure.
zend_api [1] [2] [3] | ZEND_MODULE_API_NO | The version of the Zend API this module was compiled against.
zend_debug [1] [2] [3] | ZEND_DEBUG | A flag indicating whether the module was compiled with debugging turned on.
zts [1] [2] [3] | USING_ZTS | A flag indicating whether the module was compiled with ZTS (TSRM) enabled (see 内存管理).
ini_entry [1] [3] | NULL | This pointer is used internally by Zend to keep a non-local reference to any INI entries declared for the module.
deps [3] | NULL | A pointer to a list of dependencies for the module.
name | "mymodule" | The name of the module. This is the short name, such as "spl" or "standard".
functions | mymodule_functions | A pointer to the module's function table, which Zend uses to expose functions in the module to user space.
module_startup_func | PHP_MINIT(mymodule) | A callback function that Zend will call the first time a module is loaded into a particular instance of PHP.
module_shutdown_func | PHP_MSHUTDOWN(mymodule) | A callback function that Zend will call the when a module is unloaded from a particular instance of PHP, typically during final shutdown.
request_startup_func | PHP_RINIT(mymodule) | A callback function that Zend will call at the beginning of each request. This should be as short as possible or NULL as calling this has costs on every request.
request_shutdown_func | PHP_RSHUTDOWN(mymodule) | A callback function that Zend will call at the end of each request. This should be as short as possible or NULL as calling this has costs on every request.
info_func | PHP_MINFO(mymodule) | A callback function that Zend will call when the phpinfo() function is called.
version | NO_VERSION_YET | A string giving the version of the module, as specified by the module developer. It is recommended that the version number be either in the format expected by version_compare() (e.g. "1.0.5-dev"), or a CVS or SVN revision number (e.g. "$Rev: 322138 $").
globals_size [1] [4] [5] [6] | sizeof(zend_mymodule_globals) | The size of the data structure containing the module's globals, if any.
globals_id_ptr [1] [4] [5] [6] [7] | &mymodule_globals_id | Only one of these two fields will exist, depending upon whether the USING_ZTS constant is TRUE. The former is an index into TSRM's allocation table for the module's globals, and the latter is a pointer directly to the globals.
globals_ptr [1] [4] [5] [6] [8] | &mymodule_globals
globals_ctor [4] [5] [6] | PHP_GINIT(mymodule) | This funtion is called to initialize a module's globals before any module_startup_func.
globals_dtor [4] [5] [6] | PHP_GSHUTDOWN(mymodule) | This funtion is called to deallocate a module's globals after any module_shutdown_func.
post_deactivate_func [4] | ZEND_MODULE_POST_ZEND_DEACTIVATE_N(mymodule) | This function is called by Zend after request shutdown. It is rarely used.
module_started [1] [9] [4] | 0 | These fields are used for Zend's internal tracking information.
type [1] [9] [4] | 0
handle [1] [9] [4] | NULL
module_number [1] [9] [4] | 0
[1] This field is not intended for use by module developers. [2] This field is filled in by STANDARD_MODULE_HEADER_EX. [3] This field is filled in by STANDARD_MODULE_HEADER. [4] This field is filled in by STANDARD_MODULE_PROPERTIES. [5] This field is filled in by NO_MODULE_GLOBALS. [6] This field is filled in by PHP_MODULE_GLOBALS. [7] This field only exists when USING_ZTS is TRUE. [8] This field only exists when USING_ZTS is FALSE. [9] This field is filled in by STANDARD_MODULE_PROPERTIES_EX.

Filling in the structure in a practical situation

With all these fields to play with, it can be confusing to know which to use for what purpose. Here is the zend_module definition from the "counter" example extension after updating it to its final form.

Example #3 Counter extension module definition

/* {{{ counter_module_entry
 */
zend_module_entry counter_module_entry = {
    STANDARD_MODULE_HEADER,
    "counter",
    counter_functions,
    PHP_MINIT(counter),
    PHP_MSHUTDOWN(counter),
    PHP_RINIT(counter),
    PHP_RSHUTDOWN(counter),
    PHP_MINFO(counter),
    NO_VERSION_YET,
    PHP_MODULE_GLOBALS(counter),
    PHP_GINIT(counter),
    PHP_GSHUTDOWN(counter),
    NULL,
    STANDARD_MODULE_PROPERTIES_EX
};
/* }}} */
  • STANDARD_MODULE_HEADER is used since this module doesn't define any dependencies.
  • "counter" is the extension's name, and is used to define the various callback functions the module passes to Zend. "counter" uses module, globals, and request functions at startup and shutdown times, and provides information to phpinfo(), so all seven callbacks are defined.
  • It is assumed that there is a variable of type zend_function_entry * named counter_functions earlier in the file that contains the module definition, listing the functions the module exports to userspace.
  • NO_VERSION_YET is a particularly nice way of telling Zend the module doesn't have a version. It might have been more correct to place "1.0" here instead in a real module.
  • "counter" uses per-module globals, so PHP_MODULE_GLOBALS is used
  • This module has no post-deactivate function, so NULL is used.
  • Since this module does use globals, STANDARD_MODULE_PROPERTIES_EX is used to finish the structure.

What's changed between 5.2 and 5.3?

Nothing. The only differences in the zend_module structure between PHP 5.2 and PHP 5.3 are a few const keywords.

Basic constructs
Extension globals
扩展的结构


Extension globals

Introduction to globals in a PHP extension

In a language such as C, a "global" variable is a variable that can be accessed from any function without any extra declaration. These traditional globals have a few drawbacks:

  • Barring any special options passed to the compiler, a global variable can be accessed and changed by any piece of code anywhere in the program, whether or not that code should be doing so.
  • A typical global variable is not thread safe.
  • The names of global variables are as global as the variables themselves.

A PHP extension's globals are more properly called the "extension state", since most modules must remember what they're doing between function calls. The "counter" extension is a perfect example of this need: The basic interface calls for a counter with a persistent value. A programmer new to Zend and PHP might do something like this in counter.c to store that value:

Example #1 The wrong way to store the basic counter interface's value

/* ... */
static long basic_counter_value;

/* ... */

PHP_FUNCTION(counter_get)
{
    RETURN_LONG(basic_counter_value);
}

On the surface this appears a viable solution, and indeed in a simple test it would function correctly. However, there are a number of situations in which more than one copy of PHP is running in the same thread, which means more than one instance of the counter module. Suddenly these multiple threads are sharing the same counter value, which is clearly undesirable. Another problem shows itself when considering that another extension might someday happen to have a global with the same name, and due to the rules of C scoping, this has the potential to cause a compile failure, or worse, a runtime error. Something more elaborate is needed, and so exists Zend's support for thread-safe per-module globals.

Declaring module globals

Whether a module uses only a single global or dozens, they must be defined in a structure, and that structure must be declared. There are some macros that assist with doing so in a way that avoids name conflicts between modules: ZEND_BEGIN_MODULE_GLOBALS(), ZEND_END_MODULE_GLOBALS(), and ZEND_DECLARE_MODULE_GLOBALS(). All three take as a parameter the short name of the module, which in the case of the counter module is simply "counter". Here is the global structure declaration from php_counter.h:

Example #2 The counter module's globals

ZEND_BEGIN_MODULE_GLOBALS(counter)
    long        basic_counter_value;
ZEND_END_MODULE_GLOBALS(counter)

And this is the declaration from counter.c:

Example #3 The counter module's global structure declaration

ZEND_DECLARE_MODULE_GLOBALS(counter)

Accessing module globals

As discussed above, per-module globals are declared inside a C structure whose name is obscured by Zend macros. As a result, the ideal way to access members of this structure is by the use of further macros. Accordingly, most if not all extensions which have globals have a declaration like this somewhere in their header file:

Example #4 Accessor macros for per-module globals

#ifdef ZTS
#define COUNTER_G(v) TSRMG(counter_globals_id, zend_counter_globals *, v)
#else
#define COUNTER_G(v) (counter_globals.v)
#endif

Note: This could have been generalized into a macro of its own by the Zend API, but as of PHP 5.3 (and PHP 6 at the time of this writing), that hasn't happened. The global accessor construct is written into the header by ext_skel and thus is generally left alone by extension writers, unless they wish to change the name of the accessor macro.

Note: COUNTER_G was the name given to the macro by ext_skel, but it's not necessary for it to have that name and could just as easily be called FOO instead.

Any code in the counter extension that accesses a global must thus wrap it in the macro COUNTER_G.

Warning

Any function which accesses globals must either be declared by Zend macros, have TSRMLS_DC as its last argument, or call the macro TSRMLS_FETCH before accessing the globals. See the TSRM documentation for more information.

So with all of that in mind, here is our new version of the counter_get():

Example #5 The right way to store the basic counter interface's value

/* php_counter.h */
ZEND_BEGIN_MODULE_GLOBALS(counter)
    long        basic_counter_value;
ZEND_END_MODULE_GLOBALS(counter)

#ifdef ZTS
#define COUNTER_G(v) TSRMG(counter_globals_id, zend_counter_globals *, v)
#else
#define COUNTER_G(v) (counter_globals.v)
#endif

/* counter.c */
ZEND_DECLARE_MODULE_GLOBALS(counter)

/* ... */

PHP_FUNCTION(counter_get)
{
    RETURN_LONG(COUNTER_G(basic_counter_value));
}

This is a correct implementation. It is not, however, a complete one. The section Life cycle of an extension explains why.

The zend_module structure
Life cycle of an extension
扩展的结构


Life cycle of an extension

A PHP extension goes through several phases during its lifetime. All of these phases are opportunities for the developer to perform various initialization, termination, or informational functions. The Zend API allows for hooks into five separate phases of an extension's existence, apart from calls by PHP functions.

Loading, unloading, and requests

As the Zend engine runs, it processes one or more "requests" from its client. In the traditional CGI implementation, this corresponds to one execution of a process. However, many other implementations, most notably the Apache module, can map many requests onto a single PHP process. A PHP extension may thus see many requests in its lifetime.

Overview

  • In the Zend API, a module is loaded into memory only once when the associated PHP process starts up. Each module receives a call to the "module initialization" function specified in its zend_module structure as it is loaded.
  • Whenever the associated PHP process starts to handle a request from its client - i.e. whenever the PHP interpreter is told to start working - each module receives a call to the "request initialization" function specified in its zend_module structure.
  • Whenever the associated PHP process is done handling a request, each module receives a call to the "request termination" function specified in its zend_module structure.
  • A given module is unloaded from memory when its associated PHP process is shut down in an orderly manner. The module receives a call to the "module termination" function specified in its zend_module structure at this time.

What to do, and when to do it

There are many tasks that might be performed at any of these four points. This table details where many common initialization and termination tasks belong.

What to do, and when to do it
Module initialization/termination | Request initialization/termination
Allocate/deallocate and initialize module global variables | Allocate/deallocate and initialize request-specific variables
Register/unregister class entries |
Register/unregister INI entries |
Register constants |

The phpinfo() callback

Aside from globals initialization and certain rarely-used callbacks, there is one more part of a module's lifecycle to examine: A call to phpinfo(). The output a user sees from this call, whether text or HTML or anything else, is generated by each individual extension that is loaded into the PHP interpreter at the time the call is made.

To provide for format-neutral output, the header "ext/standard/info.h" provides an array of functions to produce standardized display elements. Specifically, several functions which create the familiar tables exist:

php_info_print_table_start()
Open a table in phpinfo() output. Takes no parameters.
php_info_print_table_header()
Print a table header in phpinfo() output. Takes one parameter, the number of columns, plus the same number of char * parameters which are the texts for each column heading.
php_info_print_table_row()
Print a table row in phpinfo() output. Takes one parameter, the number of columns, plus the same number of char * parameters which are the texts for each column content.
php_info_print_table_end()
Close a table formerly opened by php_info_print_table_start(). Takes no parameters.

Using these four functions, it is possible to produce status information for nearly any combination of features in an extension. Here is the information callback from the counter extension:

Example #1 counter's PHP_MINFO function

/* {{{ PHP_MINFO(counter) */
PHP_MINFO_FUNCTION(counter)
{
    char        buf[10];

    php_info_print_table_start();
    php_info_print_table_row(2, "counter support", "enabled");
    snprintf(buf, sizeof(buf), "%ld", COUNTER_G(basic_counter_value));
    php_info_print_table_row(2, "Basic counter value", buf);
    php_info_print_table_end();
}
/* }}} */
Extension globals
Testing an extension
扩展的结构


Testing an extension

One of the accepted requirements of good programming is testing. PHP provides a test harness for unit regression tests, in the form of a script called run-tests.php.

Tests for a particular module are stored in the tests/ subdirectory of the module's folder, and have a .phpt extension. For details of the PHPT format, see » http://qa.php.net/.

Life cycle of an extension
PDO 驱动
扩展的结构


PDO 驱动

Table of Contents

  • 前提条件
  • 配置与管理
  • Fleshing out your skeleton
  • Building
  • Testing
  • Packaging and distribution
  • pdo_dbh_t definition
  • pdo_stmt_t definition
  • Constants
  • Error handling

此How-To目的是让开发者对编写基于PDO层的数据库驱动接口的所需步骤有一个基本的了解。这是一个正在变化的API, 因此可能会和你当前所看到的有所不同。该文档是基于PDO 0.3版本的。学习有一定的难度，建议在前提条件一章花一些时间。

Testing an extension
前提条件
PHP 核心：骇客指南


前提条件

以下列表是编写一个PDO数据库驱动所需的前提条件:

  1. 运行的目标数据库，实例，演示，等等。都是按照它们各自供应商的详细说明进行工作;

  2. 开发环境:

    1. Linux: 标准开发工具, gcc, ld, make, autoconf, automake, 等等, 版本依赖于发行版;

    2. Other Unix: 由供应商提供标准的开发工具，加上 GNU 开发工具箱;

    3. Win32: Visual Studio编译器套件;

  3. PHP 5.0.3版本或更高的版本运行环境和PEAR 1.3.5版本或更高的版本扩展;

  4. PDO 运行环境(可以使用'sudo pecl 进行安装')，包含需要访问 PDO 类型定义和函数声明的头信息;

  5. 良好的C编程语言知识;

  6. 良好的PHP扩展编写知识; 推荐阅读 George Schlossnagle 的 PHP 高级编程（21和22章由开发人员图书馆出版）;

  7. 最后，熟悉构成特别关注内存管理方面的 PHP 的核心的 Zend API.

PDO 驱动
配置与管理
PDO 驱动


配置与管理

源目录布局

一个典型的 PDO 驱动程序源目录布局如下所示，其中 SKEL 表示该驱动程序要连接到的数据库的名称的缩写形式。

pdo_SKEL/
  config.m4                  # unix 构建脚本
  config.w32                 # win32 构建脚本
  CREDITS
  package.xml                # 有关包的元信息
  pdo_SKEL.c                 # 标准 PHP 扩展
  php_pdo_SKEL.h
  php_pdo_SKEL_int.h         # 驱动程序私有头文件
  SKEL_dbh.c                 # 包含 PDO 的驱动程序接口的实现
  SKEL_stmt.c                # 包含 PDO 声明接口的实现
  tests/

稍后在本文档中阐述这些文件的内容。

创建一个基本框架

最简单的方法就是使用 PHP 目录树中的 ext 目录下的 ext_skel Shell 脚本。这将生成包含很多上面列出的文件的基本框架目录。通过执行下面命令来完成:

./ext_skel --extname=pdo_SKEL

这将生成一个名为pdo_SKEL包含基本框架文件的目录，目录名称可以自定义。该目录可以移动到PHP扩展目录之外。PDO 是 PECL 的一个扩展，不应该包括在标准扩展目录中。只要你有过PHP和PDO的安装，你就会想到从其它目录创建。

标准包含文件

创建特定头文件

头文件 congfig.h 是由配置进程根据系统平台及其使用的驱动自动生成的。如果该头文件存在，HAVE_CONFIG_H 编译器变量将被设置。此变量应测试，如果设置，该文件的config.h应该被包含在编译单元内。

PHP 头文件

以下标准的公共的 PHP 头文件应包括在每个源模块中：

  1. php.h

  2. php_ini.h

  3. ext/standard/info.h

PDO 接口头文件

以下标准的公共的 PDO 头文件也应该包括在每个源模块中：

pdo/php_pdo.h

该头文件包含了主驱动中初始值和关闭功能的定心及PDO全局变量的定义。

pdo/php_pdo_driver.h

该头文件包含了用来编写PDO驱动程序的类型和API。它还包含了调用返回到PDO层的方法签名和注册/注销PDO驱动程序。最重要的是，此头文件包含 PDO 的数据库句柄和语句的类型定义。驱动程序处理的两种主要结构 pdo_dbh_t 和 pdo_stmt_t，更详细的描述请查阅附录 A 和 B。

驱动程序特定的头文件

典型的PDO的驱动程序有两个特定于数据库实现头文件。这并不排除使用上更多的取决于实现。按照惯例，下面列举了这两个头文件:

php_pdo_SKEL.h

这实际上是一个功能与内容和前面定义的专门为您的数据库定制的pdo/php_pdo.h完全相同的头文件。如果你的驱动程序需要使用全局变量，那么他们应使用ZEND_BEGIN_MODULE_GLOBALS 和 ZEND_END_MODULE_GLOBALS宏来定义。 然后用宏来访问这些变量。这些宏通常被命名为PDO_SKEL_G(v)，其中v表示被访问的全局变量。更多信息，请查阅Zend programmer文档。

php_pdo_SKEL_int.h

该头文件通常包括特定于驱动程序实现的类型定义和函数申明。此外，它还包含pdo_SKEL_handle 和 pdo_SKEL_stmt结构中DB的具体定义。这些都是被driver_data所引用的句柄和语句结构成员的私有数据结构。

可选头文件

根据实际情况，一个特定的驱动程序可能需要包括下面头文件:

#include <zend_exceptions.h>
前提条件
Fleshing out your skeleton
PDO 驱动


Fleshing out your skeleton

Major Structures and Attributes

The major structures, pdo_dbh_t and pdo_stmt_t are defined and explained in Appendix A and B respectively. Database and Statement attributes are defined in Appendix C. Error handling is explained in Appendix D.

pdo_SKEL.c: PHP extension glue

function entries

static function_entry pdo_SKEL_functions[] = {
  { NULL, NULL, NULL }
};

This structure is used to register functions into the global php function namespace. PDO drivers should try to avoid doing this, so it is recommended that you leave this structure initialized to NULL, as shown in the synopsis above.

Module entry

/* {{{ pdo_SKEL_module_entry */
#if ZEND_EXTENSION_API_NO >= 220050617
static zend_module_dep pdo_SKEL_deps[] = {
    ZEND_MOD_REQUIRED("pdo")
    {NULL, NULL, NULL}
};
#endif
/* }}} */

zend_module_entry pdo_SKEL_module_entry = {
#if ZEND_EXTENSION_API_NO >= 220050617
    STANDARD_MODULE_HEADER_EX, NULL,
    pdo_SKEL_deps,
#else
    STANDARD_MODULE_HEADER,
#endif
    "pdo_SKEL",
    pdo_SKEL_functions,
    PHP_MINIT(pdo_SKEL),
    PHP_MSHUTDOWN(pdo_SKEL),
    NULL,
    NULL,
    PHP_MINFO(pdo_SKEL),
    PHP_PDO_<DB>_MODULE_VERSION,
    STANDARD_MODULE_PROPERTIES
};
/* }}} */

#ifdef COMPILE_DL_PDO_<DB>
ZEND_GET_MODULE(pdo_db)
#endif

A structure of type zend_module_entry called pdo_SKEL_module_entry must be declared and should include reference to the pdo_SKEL_functions table defined previously.

Standard PHP Module Extension Functions

PHP_MINIT_FUNCTION
/* {{{ PHP_MINIT_FUNCTION */
PHP_MINIT_FUNCTION(pdo_SKEL)
{
    return php_pdo_register_driver(&pdo_SKEL_driver);
}
/* }}} */

This standard PHP extension function should be used to register your driver with the PDO layer. This is done by calling the php_pdo_register_driver() function passing a pointer to a structure of type pdo_driver_t typically named pdo_SKEL_driver. A pdo_driver_t contains a header that is generated using the PDO_DRIVER_HEADER(SKEL) macro and pdo_SKEL_handle_factory() function pointer. The actual function is described during the discussion of the SKEL_dbh.c unit.

PHP_MSHUTDOWN_FUNCTION
/* {{{ PHP_MSHUTDOWN_FUNCTION */
PHP_MSHUTDOWN_FUNCTION(pdo_SKEL)
{
    php_pdo_unregister_driver(&pdo_SKEL_driver);
    return SUCCESS;
}
/* }}} */

This standard PHP extension function is used to unregister your driver from the PDO layer. This is done by calling the php_pdo_unregister_driver() function, passing the same pdo_SKEL_driver structure that was passed in the init function above.

PHP_MINFO_FUNCTION

This is again a standard PHP extension function. Its purpose is to display information regarding the module when the phpinfo() is called from a script. The convention is to display the version of the module and also what version of the db you are dependent on, along with any other configuration style information that might be relevant.

SKEL_driver.c: Driver implementation

This unit implements all of the database handling methods that support the PDO database handle object. It also contains the error fetching routines. All of these functions will typically need to access the global variable pool. Therefore, it is necessary to use the Zend macro TSRMLS_DC macro at the end of each of these statements. Consult the Zend programmer documentation for more information on this macro.

pdo_SKEL_error

static int pdo_SKEL_error(pdo_dbh_t *dbh,
  pdo_stmt_t *stmt, const char *file, int line TSRMLS_DC)

The purpose of this function is to be used as a generic error handling function within the driver. It is called by the driver when an error occurs within the driver. If an error occurs that is not related to SQLSTATE, the driver should set either dbh->error_code or stmt->error_code to an SQLSTATE that most closely matches the error or the generic SQLSTATE error "HY000". The file pdo_sqlstate.c in the PDO source contains a table of commonly used SQLSTATE codes that the PDO code explicitly recognizes. This setting of the error code should be done prior to calling this function.; This function should set the global pdo_err variable to the error found in either the dbh or the stmt (if the variable stmt is not NULL).

dbh

Pointer to the database handle initialized by the handle factory

stmt

Pointer to the current statement or NULL. If NULL, the error is derived by error code found in the dbh.

file

The source file where the error occurred or NULL if not available.

line

The line number within the source file if available.

If the dbh member methods is NULL (which implies that the error is being raised from within the PDO constructor), this function should call the zend_throw_exception_ex() function otherwise it should return the error code. This function is usually called using a helper macro that customizes the calling sequence for either database handling errors or statement handling errors.

Example #1 Example macros for invoking pdo_SKEL_error

#define pdo_SKEL_drv_error(what) \
    pdo_SKEL_error(dbh, NULL, what, __FILE__, __LINE__ TSRMLS_CC)
#define pdo_SKEL_drv_error(what) \
    pdo_SKEL_error(dbh, NULL, what, __FILE__, __LINE__ TSRMLS_CC)

For more info on error handling, see Error handling.

Note:

Despite being documented here, the PDO driver interface does not specify that this function be present; it is merely a convenient way to handle errors, and it just happens to be equally convenient for the majority of database client library APIs to structure your driver implementation in this way.

pdo_SKEL_fetch_error_func

static int pdo_SKEL_fetch_error_func(pdo_dbh_t *dbh, pdo_stmt_t *stmt,
    zval *info TSRMLS_DC)

The purpose of this function is to obtain additional information about the last error that was triggered. This includes the driver specific error code and a human readable string. It may also include additional information if appropriate. This function is called as a result of the PHP script calling the PDO::errorInfo() method.

dbh

Pointer to the database handle initialized by the handle factory

stmt

Pointer to the most current statement or NULL. If NULL, the error translated is derived by error code found in the dbh.

info

A hash table containing error codes and messages.

The error_func should return two pieces of information as successive array elements. The first item is expected to be a numeric error code, the second item is a descriptive string. The best way to set this item is by using add_next_index. Note that the type of the first argument need not be long; use whichever type most closely matches the error code returned by the underlying database API.

/* now add the error information. */
/* These need to be added in a specific order */
add_next_index_long(info, error_code);   /* driver specific error code */
add_next_index_string(info, message, 0); /* readable error message */

This function should return 1 if information is available, 0 if the driver does not have additional info.

SKEL_handle_closer

static int SKEL_handle_closer(pdo_dbh_t *dbh TSRMLS_DC)

This function will be called by PDO to close an open database.

dbh

Pointer to the database handle initialized by the handle factory

This should do whatever database specific activity that needs to be accomplished to close the open database. PDO ignores the return value from this function.

SKEL_handle_preparer

static int SKEL_handle_preparer(pdo_dbh_t *dbh, const char *sql,
long sql_len, pdo_stmt_t *stmt, zval *driver_options TSRMLS_DC)

This function will be called by PDO in response to PDO::query() and PDO::prepare() calls from the PHP script. The purpose of the function is to prepare raw SQL for execution, storing whatever state is appropriate into the stmt that is passed in.

dbh

Pointer to the database handle initialized by the handle factory

sql

Pointer to a character string containing the SQL statement to be prepared.

sql_len

The length of the SQL statement.

Stmt

Pointer to the returned statement or NULL if an error occurs.

driver_options

Any driver specific/defined options.

This function is essentially the constructor for a stmt object. This function is responsible for processing statement options, and setting driver-specific option fields in the pdo_stmt_t structure.

PDO does not process any statement options on the driver's behalf before calling the preparer function. It is your responsibility to process them before you return, raising an error for any unknown options that are passed.

One very important responsibility of this function is the processing of SQL statement parameters. At the time of this call, PDO does not know if your driver supports binding parameters into prepared statements, nor does it know if it supports named or positional parameter naming conventions.

Your driver is responsible for setting stmt->supports_placeholders as appropriate for the underlying database. This may involve some run-time determination on the part of your driver, if this setting depends on the version of the database server to which it is connected. If your driver doesn't directly support both named and positional parameter conventions, you should use the pdo_parse_params() API to have PDO rewrite the query to take advantage of the support provided by your database.

Example #2 Using pdo_parse_params

int ret;
    char *nsql = NULL;
    int nsql_len = 0;

    /* before we prepare, we need to peek at the query; if it uses named parameters,
     * we want PDO to rewrite them for us */
    stmt->supports_placeholders = PDO_PLACEHOLDER_POSITIONAL;
    ret = pdo_parse_params(stmt, (char*)sql, sql_len, &nsql, &nsql_len TSRMLS_CC);

    if (ret == 1) {
        /* query was re-written */
        sql = nsql;
    } else if (ret == -1) {
        /* couldn't grok it */
        strcpy(dbh->error_code, stmt->error_code);
        return 0;
    }

    /* now proceed to prepare the query in "sql" */

Possible values for supports_placeholders are: PDO_PLACEHOLDER_NAMED, PDO_PLACEHOLDER_POSITIONAL and PDO_PLACEHOLDER_NONE. If the driver doesn't support prepare statements at all, then this function should simply allocate any state that it might need, and then return:

Example #3 Implementing preparer for drivers that don't support native prepared statements

static int SKEL_handle_preparer(pdo_dbh_t *dbh, const char *sql,
    long sql_len, pdo_stmt_t *stmt, zval *driver_options TSRMLS_DC)
{
    pdo_SKEL_db_handle *H = (pdo_SKEL_db_handle *)dbh->driver_data;
    pdo_SKEL_stmt *S = ecalloc(1, sizeof(pdo_SKEL_stmt));

    S->H = H;
    stmt->driver_data = S;
    stmt->methods = &SKEL_stmt_methods;
    stmt->supports_placeholders = PDO_PLACEHOLDER_NONE;

    return 1;
}

This function returns 1 on success or 0 on failure.

SKEL_handle_doer

static long SKEL_handle_doer(pdo_dbh_t *dbh, const char *sql, long sql_len TSRMLS_DC)

This function will be called by PDO to execute a raw SQL statement. No pdo_stmt_t is created.

dbh

Pointer to the database handle initialized by the handle factory

sql

Pointer to a character string containing the SQL statement to be prepared.

sql_len

The length of the SQL statement.

This function returns 1 on success or 0 on failure.

SKEL_handle_quoter

static int SKEL_handle_quoter(pdo_dbh_t *dbh, const char *unquoted,
  int unquoted_len, char **quoted, int quoted_len, enum pdo_param_type param_type TSRMLS_DC)

This function will be called by PDO to turn an unquoted string into a quoted string for use in a query.

dbh

Pointer to the database handle initialized by the handle factory

unquoted

Pointer to a character string containing the string to be quoted.

unquoted_len

The length of the string to be quoted.

quoted

Pointer to the address where a pointer to the newly quoted string will be returned.

quoted_len

The length of the new string.

param_type

A driver specific hint for driver that have alternate quoting styles

This function is called in response to a call to PDO::quote() or when the driver has set supports_placeholder to PDO_PLACEHOLDER_NONE. The purpose is to quote a parameter when building SQL statements.

If your driver does not support native prepared statements, implementation of this function is required.

This function returns 1 if the quoting process reformatted the string, and 0 if it was not necessary to change the string. The original string will be used unchanged with a 0 return.

SKEL_handle_begin

static int SKEL_handle_begin(pdo_dbh_t *dbh TSRMLS_DC)

This function will be called by PDO to begin a database transaction.

dbh

Pointer to the database handle initialized by the handle factory

This should do whatever database specific activity that needs to be accomplished to begin a transaction. This function returns 1 for success or 0 if an error occurred.

SKEL_handle_commit

static int SKEL_handle_commit(pdo_dbh_t *dbh TSRMLS_DC)

This function will be called by PDO to end a database transaction.

dbh

Pointer to the database handle initialized by the handle factory

This should do whatever database specific activity that needs to be accomplished to commit a transaction. This function returns 1 for success or 0 if an error occurred.

SKEL_handle_rollback

static int SKEL_handle_rollback( pdo_dbh_t *dbh TSRMLS_DC)

This function will be called by PDO to rollback a database transaction.

dbh

Pointer to the database handle initialized by the handle factory

This should do whatever database specific activity that needs to be accomplished to rollback a transaction. This function returns 1 for success or 0 if an error occurred.

SKEL_handle_get_attribute

static int SKEL_handle_get_attribute(pdo_dbh_t *dbh, long attr, zval *return_value TSRMLS_DC)

This function will be called by PDO to retrieve a database attribute.

dbh

Pointer to the database handle initialized by the handle factory

attr

long value of one of the PDO_ATTR_xxxx types. See Database and Statement Attributes Table for valid attributes.

return_value

The returned value for the attribute.

It is up to the driver to decide which attributes will be supported for a particular implementation. It is not necessary for a driver to supply this function. PDO driver handles the PDO_ATTR_PERSISTENT, PDO_ATTR_CASE, PDO_ATTR_ORACLE_NULLS, and PDO_ATTR_ERRMODE attributes directly.

This function returns 1 on success or 0 on failure.

SKEL_handle_set_attribute

static int SKEL_handle_set_attribute(pdo_dbh_t *dbh, long attr, zval *val TSRMLS_DC)

This function will be called by PDO to set a database attribute, usually in response to a script calling PDO::setAttribute().

dbh

Pointer to the database handle initialized by the handle factory

attr

long value of one of the PDO_ATTR_xxxx types. See Database and Statement Attributes Table for valid attributes.

val

The new value for the attribute.

It is up to the driver to decide which attributes will be supported for a particular implementation. It is not necessary for a driver to provide this function if it does not need to support additional attributes. The PDO driver handles the PDO_ATTR_CASE, PDO_ATTR_ORACLE_NULLS, and PDO_ATTR_ERRMODE attributes directly.

This function returns 1 on success or 0 on failure.

SKEL_handle_last_id

static char * SKEL_handle_last_id(pdo_dbh_t *dbh, const char *name, unsigned int len TSRMLS_DC)

This function will be called by PDO to retrieve the ID of the last inserted row.

dbh

Pointer to the database handle initialized by the handle factory

name

string representing a table or sequence name.

len

the length of the name parameter.

This function returns a character string containing the id of the last inserted row on success or NULL on failure. This is an optional function.

SKEL_check_liveness

static int SKEL_check_liveness(pdo_dbh_t *dbh TSRMLS_DC)

This function will be called by PDO to test whether or not a persistent connection to a database is alive and ready for use.

dbh

Pointer to the database handle initialized by the handle factory

This function returns 1 if the database connection is alive and ready for use, otherwise it should return 0 to indicate failure or lack of support.

Note:

This is an optional function.

SKEL_get_driver_methods

static function_entry *SKEL_get_driver_methods(pdo_dbh_t *dbh, int kind TSRMLS_DC)

This function will be called by PDO in response to a call to any method that is not a part of either the PDO or PDOStatement classes. It's purpose is to allow the driver to provide additional driver specific methods to those classes.

dbh

Pointer to the database handle initialized by the handle factory

kind

One of the following:

PDO_DBH_DRIVER_METHOD_KIND_DBH

Set when the method call was attempted on an instance of the PDO class. The driver should return a pointer a function_entry table for any methods it wants to add to that class, or NULL if there are none.

PDO_DBH_DRIVER_METHOD_KIND_STMT

Set when the method call was attempted on an instance of the PDOStatement class. The driver should return a pointer to a function_entry table for any methods it wants to add to that class, or NULL if there are none.

This function returns a pointer to the function_entry table requested, or NULL there are no driver specific methods.

SKEL_handle_factory

static int SKEL_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_DC)

This function will be called by PDO to create a database handle. For most databases this involves establishing a connection to the database. In some cases, a persistent connection may be requested, in other cases connection pooling may be requested. All of these are database/driver dependent.

dbh

Pointer to the database handle initialized by the handle factory

driver_options

An array of driver options, keyed by integer option number. See Database and Statement Attributes Table for a list of possible attributes.

This function should fill in the passed database handle structure with its driver specific information on success and return 1, otherwise it should return 0 to indicate failure.

PDO processes the AUTOCOMMIT and PERSISTENT driver options before calling the handle_factory. It is the handle factory's responsibility to process other options.

Driver method table

A static structure of type pdo_dbh_methods named SKEL_methods must be declared and initialized to the function pointers for each defined function. If a function is not supported or not implemented the value for that function pointer should be set to NULL.

pdo_SKEL_driver

A structure of type pdo_driver_t named pdo_SKEL_driver should be declared. The PDO_DRIVER_HEADER(SKEL) macro should be used to declare the header and the function pointer to the handle factory function should set.

SKEL_statement.c: Statement implementation

This unit implements all of the database statement handling methods that support the PDO statement object.

SKEL_stmt_dtor

static int SKEL_stmt_dtor(pdo_stmt_t *stmt TSRMLS_DC)

This function will be called by PDO to destroy a previously constructed statement object.

stmt

Pointer to the statement structure initialized by SKEL_handle_preparer.

This should do whatever is necessary to free up any driver specific storage allocated for the statement. The return value from this function is ignored.

SKEL_stmt_execute

static int SKEL_stmt_execute(pdo_stmt_t *stmt TSRMLS_DC)

This function will be called by PDO to execute the prepared SQL statement in the passed statement object.

stmt

Pointer to the statement structure initialized by SKEL_handle_preparer.

This function returns 1 for success or 0 in the event of failure.

SKEL_stmt_fetch

static int SKEL_stmt_fetch(pdo_stmt_t *stmt, enum pdo_fetch_orientation ori,
   long offset TSRMLS_DC)

This function will be called by PDO to fetch a row from a previously executed statement object.

stmt

Pointer to the statement structure initialized by SKEL_handle_preparer.

ori

One of PDO_FETCH_ORI_xxx which will determine which row will be fetched.

offset

If ori is set to PDO_FETCH_ORI_ABS or PDO_FETCH_ORI_REL, offset represents the row desired or the row relative to the current position, respectively. Otherwise, this value is ignored.

The results of this fetch are driver dependent and the data is usually stored in the driver_data member of the pdo_stmt_t object. The ori and offset parameters are only meaningful if the statement represents a scrollable cursor. This function returns 1 for success or 0 in the event of failure.

SKEL_stmt_param_hook

static int SKEL_stmt_param_hook(pdo_stmt_t *stmt,
  struct pdo_bound_param_data *param, enum pdo_param_event event_type TSRMLS_DC)

This function will be called by PDO for handling of both bound parameters and bound columns.

stmt

Pointer to the statement structure initialized by SKEL_handle_preparer.

param

The structure describing either a statement parameter or a bound column.

event_type

The type of event to occur for this parameter, one of the following:

PDO_PARAM_EVT_ALLOC

Called when PDO allocates the binding. Occurs as part of PDOStatement::bindParam(), PDOStatement::bindValue() or as part of an implicit bind when calling PDOStatement::execute(). This is your opportunity to take some action at this point; drivers that implement native prepared statements will typically want to query the parameter information, reconcile the type with that requested by the script, allocate an appropriately sized buffer and then bind the parameter to that buffer. You should not rely on the type or value of the zval at param->parameter at this point in time.

PDO_PARAM_EVT_FREE

Called once per parameter as part of cleanup. You should release any resources associated with that parameter now.

PDO_PARAM_EXEC_PRE

Called once for each parameter immediately before calling SKEL_stmt_execute; take this opportunity to make any final adjustments ready for execution. In particular, you should note that variables bound via PDOStatement::bindParam() are only legal to touch now, and not any sooner.

PDO_PARAM_EXEC_POST

Called once for each parameter immediately after calling SKEL_stmt_execute; take this opportunity to make any post-execution actions that might be required by your driver.

PDO_PARAM_FETCH_PRE

Called once for each parameter immediately prior to calling SKEL_stmt_fetch.

PDO_PARAM_FETCH_POST

Called once for each parameter immediately after calling SKEL_stmt_fetch.

This hook will be called for each bound parameter and bound column in the statement. For ALLOC and FREE events, a single call will be made for each parameter or column. The param structure contains a driver_data field that the driver can use to store implementation specific information about each of the parameters.

For all other events, PDO may call you multiple times as the script issues PDOStatement::execute() and PDOStatement::fetch() calls.

If this is a bound parameter, the is_param flag in the param structure is set, otherwise the param structure refers to a bound column.

This function returns 1 for success or 0 in the event of failure.

SKEL_stmt_describe_col

static int SKEL_stmt_describe_col(pdo_stmt_t *stmt, int colno TSRMLS_DC)

This function will be called by PDO to query information about a particular column.

stmt

Pointer to the statement structure initialized by SKEL_handle_preparer.

colno

The column number to be queried.

The driver should populate the pdo_stmt_t member columns(colno) with the appropriate information. This function returns 1 for success or 0 in the event of failure.

SKEL_stmt_get_col_data

static int SKEL_stmt_get_col_data(pdo_stmt_t *stmt, int colno,
  char **ptr, unsigned long *len, int *caller_frees TSRMLS_DC)

This function will be called by PDO to retrieve data from the specified column.

stmt

Pointer to the statement structure initialized by SKEL_handle_preparer.

colno

The column number to be queried.

ptr

Pointer to the retrieved data.

len

The length of the data pointed to by ptr.

caller_frees

If set, ptr should point to emalloc'd memory and the main PDO driver will free it as soon as it is done with it. Otherwise, it will be the responsibility of the driver to free any allocated memory as a result of this call.

The driver should return the resultant data and length of that data in the ptr and len variables respectively. It should be noted that the main PDO driver expects the driver to manage the lifetime of the data. This function returns 1 for success or 0 in the event of failure.

SKEL_stmt_set_attr

static int SKEL_stmt_set_attr(pdo_stmt_t *stmt, long attr, zval *val TSRMLS_DC)

This function will be called by PDO to allow the setting of driver specific attributes for a statement object.

stmt

Pointer to the statement structure initialized by SKEL_handle_preparer.

attr

long value of one of the PDO_ATTR_xxxx types. See Database and Statement Attributes Table for valid attributes.

val

The new value for the attribute.

This function is driver dependent and allows the driver the capability to set database specific attributes for a statement. This function returns 1 for success or 0 in the event of failure. This is an optional function. If the driver does not support additional settable attributes, it can be NULLed in the method table. The PDO driver does not handle any settable attributes on the database driver's behalf.

SKEL_stmt_get_attr

static int SKEL_stmt_get_attr(pdo_stmt_t *stmt, long attr, zval
   *return_value TSRMLS_DC)

This function will be called by PDO to allow the retrieval of driver specific attributes for a statement object.

stmt

Pointer to the statement structure initialized by SKEL_handle_preparer.

attr

long value of one of the PDO_ATTR_xxxx types. See Database and Statement Attributes Table for valid attributes.

return_value

The returned value for the attribute.

This function is driver dependent and allows the driver the capability to retrieve a previously set database specific attribute for a statement. This function returns 1 for success or 0 in the event of failure. This is an optional function. If the driver does not support additional gettable attributes, it can be NULLed in the method table. The PDO driver does not handle any settable attributes on the database driver's behalf.

SKEL_stmt_get_col_meta

static int SKEL_stmt_get_col_meta(pdo_stmt_t *stmt, int colno,
   zval *return_value TSRMLS_DC)
Warning

This function is not well defined and is subject to change.

This function will be called by PDO to retrieve meta data from the specified column.

stmt

Pointer to the statement structure initialized by SKEL_handle_preparer.

colno

The column number for which data is to be retrieved.

return_value

Holds the returned meta data.

The driver author should consult the documentation for this function that can be found in the php_pdo_driver.h header as this will be the most current. This function returns 1 for success or 0 in the event of failure. The database driver does not need to provide this function.

Statement handling method table

A static structure of type pdo_stmt_methods named SKEL_stmt_methods should be declared and initialized to the function pointers for each defined function. If a function is not supported or not implemented the value for that function pointer should be set to NULL.

配置与管理
Building
PDO 驱动


Building

The build process is designed to work with PEAR (see » http://pear.php.net/ for more information about PEAR). There are two files that are used to assist in configuring your package for building. The first is config.m4 which is the autoconf configuration file for all platforms except Win32. The second is config.w32 which is a build configuration file for use on Win32. Skeleton files for these are built for you when you first set up your project. You then need to customize them to fit the needs of your project. Once you've customized your config files, you can build your driver using the following sequence of commands:

Before first build:

$ sudo pecl install PDO

For each build:

$ cd pdo_SKEL
$ phpize
$ ./configure
$ make
$ sudo make install

The process can then be repeated as necessary during the development process.

Fleshing out your skeleton
Testing
PDO 驱动


Testing

PDO has a set of "core" tests that all drivers should pass before being released. They're designed to run from the PHP source distribution, so running the tests for your driver requires moving things around a bit. The suggested procedure is to obtain the latest PHP 5.1 snapshot and perform the following step:

$ cp -r pdo_SKEL /path/to/php-5.1/ext

This will allow the test harness to run your tests. The next thing you need to do is create a test that will redirect into the PDO common core tests. The convention is to name this file common.phpt; it should be placed in the tests subdirectory that was created by ext_skel when you created your extension skeleton. The content of this file should look something like the following:

--TEST--
SKEL
--SKIPIF--
<?php # vim:ft=php
if (!extension_loaded('pdo_SKEL')) print 'skip'; ?>
--REDIRECTTEST--
if (false !== getenv('PDO_SKEL_TEST_DSN')) {
# user set them from their shell
   $config['ENV']['PDOTEST_DSN'] = getenv('PDO_SKEL_TEST_DSN');
   $config['ENV']['PDOTEST_USER'] = getenv('PDO_SKEL_TEST_USER');
   $config['ENV']['PDOTEST_PASS'] = getenv('PDO_SKEL_TEST_PASS');
   if (false !== getenv('PDO_SKEL_TEST_ATTR')) {
      $config['ENV']['PDOTEST_ATTR'] = getenv('PDO_SKEL_TEST_ATTR');
   }
   return $config;
}
return array(
   'ENV' => array(
           'PDOTEST_DSN' => 'SKEL:dsn',
           'PDOTEST_USER' => 'username',
           'PDOTEST_PASS' => 'password'
       ),
   'TESTS' => 'ext/pdo/tests'
   );

This will cause the common core tests to be run, passing the values of PDOTEST_DSN, PDOTEST_USER and PDOTEST_PASS to the PDO constructor as the dsn, username and password parameters. It will first check the environment, so that appropriate values can be passed in when the test harness is run, rather than hard-coding the database credentials into the test file.

The test harness can be invoked as follows:

$ cd /path/to/php-5.1
$ make TESTS=ext/pdo_SKEL/tests PDO_SKEL_TEST_DSN="skel:dsn" \
 PDO_SKEL_TEST_USER=user PDO_SKEL_TEST_PASS=pass test
Building
Packaging and distribution
PDO 驱动


Packaging and distribution

Creating a package

PDO drivers are released via PECL; all the usual rules for PECL extensions apply. Packaging is accomplished by creating a valid package.xml file and then running:

$ pecl package

This will create a tarball named PDO_SKEL-X.Y.Z.tgz.

Before releasing the package, you should test that it builds correctly; if you've made a mistake in your config.m4 or package.xml files, the package may not function correctly. You can test the build, without installing anything, using the following invocation:

$ pecl build package.xml

Once this is proven to work, you can test installation:

$ pecl package
$ sudo pecl install PDO_SKEL-X.Y.X.tgz

Full details about package.xml can be found in the PEAR Programmer's documentation (» http://pear.php.net/manual/).

Releasing the package

A PDO driver is released via the PHP Extension Community Library (PECL). Information about PECL can be found at » http://pecl.php.net/.

Testing
pdo_dbh_t definition
PDO 驱动


pdo_dbh_t definition

All fields should be treated as read-only by the driver, unless explicitly stated otherwise.

pdo_dbh_t

/* represents a connection to a database */
struct _pdo_dbh_t {
    /* driver specific methods */
    struct pdo_dbh_methods *methods;
*
/* driver specific data */
    void *driver_data;
**
/* credentials */
    char *username, *password;
***
/* if true, then data stored and pointed at by this handle must all be
     * persistently allocated */
    unsigned is_persistent:1;
****
/* if true, driver should act as though a COMMIT were executed between
     * each executed statement; otherwise, COMMIT must be carried out manually
     * */
    unsigned auto_commit:1;
*****
/* if true, the driver requires that memory be allocated explicitly for
     * the columns that are returned */
    unsigned alloc_own_columns:1;
******
/* if true, commit or rollBack is allowed to be called */
    unsigned in_txn:1;

    /* max length a single character can become after correct quoting */
    unsigned max_escaped_char_length:3;
*******
/* data source string used to open this handle */
    const char *data_source;
********
unsigned long data_source_len;

    /* the global error code. */
    pdo_error_type error_code;
*********
enum pdo_case_conversion native_case
**********
, desired_case;
};
*

The driver must set this during SKEL_handle_factory().

**

This item is for use by the driver; the intended usage is to store a pointer (during SKEL_handle_factory()) to whatever instance data is required to maintain a connection to the database.

***

The username and password that were passed into the PDO constructor. The driver should use these values when it initiates a connection to the database.

****

If this is set to 1, then any data that is referenced by the dbh, including whatever structure your driver allocates, MUST be allocated persistently. This is easy to achieve; rather than using the usual emalloc() simply use pemalloc() and pass the value of this flag as the last parameter. Failure to use the appropriate kind of memory can lead to serious memory faults, resulting (in the best case) a hard crash, and in the worst case, an exploitable memory problem.

If, for whatever reason, your driver is not suitable to run persistently, you MUST check this flag in your SKEL_handle_factory() and raise an appropriate error.

*****

You should check this value in your SKEL_handle_doer() and SKEL_stmt_execute() functions; if it evaluates to true, you must attempt to commit the query now. Most database implementations offer an auto-commit mode that handles this automatically.

******

If your database client library API operates by fetching data into a caller-supplied buffer, you should set this flag to 1 during your SKEL_handle_factory(). When set, PDO will call your SKEL_stmt_describer() earlier than it would otherwise. This early call allows you to determine those buffer sizes and issue appropriate calls to the database client library.

If your database client library API simply returns pointers to its own internal buffers for you to copy after each fetch call, you should leave this value set to 0.

*******

If your driver doesn't support native prepared statements (supports_placeholders is set to PDO_PLACEHOLDER_NONE), you must set this value to the maximum length that can be taken up by a single character when it is quoted by your SKEL_handle_quoter() function. This value is used to calculate the amount of buffer space required when PDO executes the statement.

********

This holds the value of the DSN that was passed into the PDO constructor. If your driver implementation needed to modify the DSN for whatever reason, it should update this member during SKEL_handle_factory(). Modifying this member should be avoided. If you do change it, you must ensure that data_source_len is also correct.

*********

Whenever an error occurs during a call to one of your driver methods, you should set this member to the SQLSTATE code that best describes the error and return an error. In this HOW-TO, the suggested practice is to call SKEL_handle_error() when an error is detected, and have it set the error code.

**********

Your driver should set this during SKEL_handle_factory(); the value should reflect how the database returns the names of the columns in result sets. If the name matches the case that was used in the query, set it to PDO_CASE_NATURAL (this is actually the default). If the column names are always returned in upper case, set it to PDO_CASE_UPPER. If the column names are always returned in lower case, set it to PDO_CASE_LOWER. The value you set is used to determine if PDO should perform case folding when the user sets the PDO_ATTR_CASE attribute.

Packaging and distribution
pdo_stmt_t definition
PDO 驱动


pdo_stmt_t definition

All fields should be treated as read-only unless explicitly stated otherwise.

pdo_stmt_t

/* represents a prepared statement */
struct _pdo_stmt_t {
    /* driver specifics */
    struct pdo_stmt_methods *methods;
*
void *driver_data;
**
/* if true, we've already successfully executed this statement at least
     * once */
    unsigned executed:1;
***
/* if true, the statement supports placeholders and can implement
     * bindParam() for its prepared statements, if false, PDO should
     * emulate prepare and bind on its behalf */
    unsigned supports_placeholders:2;
****
/* the number of columns in the result set; not valid until after
     * the statement has been executed at least once.  In some cases, might
     * not be valid until fetch (at the driver level) has been called at least once.
     * */
    int column_count;
*****
struct pdo_column_data *columns;
******
/* points at the dbh that this statement was prepared on */
    pdo_dbh_t *dbh;

    /* keep track of bound input parameters.  Some drivers support
     * input/output parameters, but you can't rely on that working */
    HashTable *bound_params;
    /* When rewriting from named to positional, this maps positions to names */
    HashTable *bound_param_map;
    /* keep track of PHP variables bound to named (or positional) columns
     * in the result set */
    HashTable *bound_columns;

    /* not always meaningful */
    long row_count;

    /* used to hold the statement's current query */
    char *query_string;
    int query_stringlen;

    /* the copy of the query with expanded binds ONLY for emulated-prepare drivers */
    char *active_query_string;
    int active_query_stringlen;

    /* the cursor specific error code. */
    pdo_error_type error_code;

    /* used by the query parser for driver specific
     * parameter naming (see pgsql driver for example) */
    const char *named_rewrite_template;
};
* | The driver must set this during SKEL_handle_preparer().
** | This item is for use by the driver; the intended usage is to store a pointer (during SKEL_handle_factory()) to whatever instance data is required to maintain a connection to the database.
*** | This is set by PDO after the statement has been executed for the first time. Your driver can inspect this value to determine if it can skip one-time actions as an optimization.
**** | Discussed in more detail in SKEL_handle_preparer.
***** | Your driver is responsible for setting this field to the number of columns available in a result set. This is usually set during SKEL_stmt_execute() but with some database implementations, the column count may not be available until SKEL_stmt_fetch() has been called at least once. Drivers that implement SKEL_stmt_next_rowset() should update the column count when a new rowset is available.
****** | PDO will allocate this field based on the value that you set for the column count. You are responsible for populating each column during SKEL_stmt_describe(). You must set the precision, maxlen, name, namelen and param_type members for each column. The name is expected to be allocated using emalloc(); PDO will call efree() at the appropriate time.
pdo_dbh_t definition
Constants
PDO 驱动


Constants

Database and Statement Attributes Table

Attribute

Valid value(s)

PDO_ATTR_AUTOCOMMIT

BOOL

TRUE if autocommit is set, FALSE otherwise.

dbh->auto_commit contains value. Processed by PDO directly.

PDO_ATTR_PREFETCH

LONG

Value of the prefetch size in drivers that support it.

PDO_ATTR_TIMEOUT

LONG

How long to wait for a db operation before timing out.

PDO_ATTR_ERRMODE

LONG

Processed and handled by PDO

PDO_ATTR_SERVER_VERSION

STRING

The "human-readable" string representing the Server/Version this driver is currently connected to.

PDO_ATTR_CLIENT_VERSION

STRING

The "human-readable" string representing the Client/Version this driver supports.

PDO_ATTR_SERVER_INFO

STRING

The "human-readable" description of the Server.

PDO_ATTR_CONNECTION_STATUS

LONG

Values not yet defined

PDO_ATTR_CASE

LONG

Processed and handled by PDO.

PDO_ATTR_CURSOR_NAME

STRING

String representing the name for a database cursor for use in "where current in <name>" SQL statements.

PDO_ATTR_CURSOR

LONG

PDO_CURSOR_FWDONLY

Forward only cursor

PDO_CURSOR_SCROLL

Scrollable cursor

The values for the attributes above are all defined in terms of the Zend API. The Zend API contains macros that can be used to convert a *zval to a value. These macros are defined in the Zend header file, zend_API.h in the Zend directory of your PHP build directory. Some of these attributes can be used with the statement attribute handlers such as the PDO_ATTR_CURSOR and PDO_ATTR_CURSOR_NAME. See the statement attribute handling functions for more information.

pdo_stmt_t definition
Error handling
PDO 驱动


Error handling

Error handling is implemented using a hand-shaking protocol between PDO and the database driver code. The database driver code signals PDO that an error has occurred via a failure (0) return from any of the interface functions. If a zero is returned, set the field error_code in the control block appropriate to the context (either the pdo_dbh_t or pdo_stmt_t block). In practice, it is probably a good idea to set the field in both blocks to the same value to ensure the correct one is getting used.

The error_mode field is a six-byte field containing a 5 character ASCIIZ SQLSTATE identifier code. This code drives the error message process. The SQLSTATE code is used to look up an error message in the internal PDO error message table (see pdo_sqlstate.c for a list of error codes and their messages). If the code is not known to PDO, a default "Unknown Message" value will be used.

In addition to the SQLSTATE code and error message, PDO will call the driver-specific fetch_err() routine to obtain supplemental data for the particular error condition. This routine is passed an array into which the driver may place additional information. This array has slot positions assigned to particular types of supplemental info:

  1. A native error code. This will frequently be an error code obtained from the database API.

  2. A descriptive string. This string can contain any additional information related to the failure. Database drivers typically include information such as an error message, code location of the failure, and any additional descriptive information the driver developer feels worthy of inclusion. It is generally a good idea to include all diagnostic information obtainable from the database interface at the time of the failure. For driver-detected errors (such as memory allocation problems), the driver developer can define whatever error information that seems appropriate.

Constants
扩展相关 FAQ
PDO 驱动


扩展相关 FAQ

Error handling
Zend Engine 2 API 参考
PHP 核心：骇客指南


Zend Engine 2 API 参考

扩展相关 FAQ
Zend Engine 2 操作码列表
PHP 核心：骇客指南


Zend Engine 2 操作码列表

Table of Contents

  • Opcode Descriptions and Examples

Opcode

此页列出并收录了由 Zend Engine 2 解析 PHP 文件而生成的全部Opcode。使用 vld 扩展(参见 » http://pecl.php.net/package/vld)的 PHP 文件的Opcode可能会被丢弃。

Opcode 列表
编号 | 名称 | 是否有例子代码
0 | NOP | 是
1 | ADD | 是
2 | SUB | 是
3 | MUL | 是
4 | DIV | 是
5 | MOD | 是
6 | SL | 是
7 | SR | 是
8 | CONCAT | 是
9 | BW_OR | 是
10 | BW_AND | 是
11 | BW_XOR | 是
12 | BW_NOT | 是
13 | BOOL_NOT | 是
14 | BOOL_XOR | 是
15 | IS_IDENTICAL | 是
16 | IS_NOT_IDENTICAL | 是
17 | IS_EQUAL | 是
18 | IS_NOT_EQUAL | 是
19 | IS_SMALLER | 是
20 | IS_SMALLER_OR_EQUAL | 是
21 | CAST | 是
22 | QM_ASSIGN | 是
23 | ASSIGN_ADD | 是
24 | ASSIGN_SUB | 是
25 | ASSIGN_MUL | 是
26 | ASSIGN_DIV | 是
27 | ASSIGN_MOD | 是
28 | ASSIGN_SL | 是
29 | ASSIGN_SR | 是
30 | ASSIGN_CONCAT | 是
31 | ASSIGN_BW_OR | 是
32 | ASSIGN_BW_AND | 是
33 | ASSIGN_BW_XOR | 是
34 | PRE_INC | 是
35 | PRE_DEC | 是
36 | POST_INC | 是
37 | POST_DEC | 是
38 | ASSIGN | 是
39 | ASSIGN_REF | 是
40 | ECHO | 是
41 | PRINT | 是
42 | 未收录 | 否
43 | JMPZ | 是
44 | JMPNZ | 是
45 | JMPZNZ | 是
46 | JMPZ_EX | 是
47 | JMPNZ_EX | 是
48 | CASE | 是
49 | SWITCH_FREE | 是
50 | BRK | 是
51 | 未收录 | 否
52 | BOOL | 是
53 | INIT_STRING | 是
54 | ADD_CHAR | 是
55 | ADD_STRING | 是
56 | ADD_VAR | 是
57 | BEGIN_SILENCE | 是
58 | END_SILENCE | 是
59 | INIT_FCALL_BY_NAME | 是
60 | DO_FCALL | 是
61 | DO_FCALL_BY_NAME | 是
62 | RETURN | 是
63 | RECV | 是
64 | RECV_INIT | 是
65 | SEND_VAL | 是
66 | SEND_VAR | 是
67 | SEND_REF | 是
68 | NEW | 是
69 | 未收录 | 否
70 | FREE | 是
71 | INIT_ARRAY | 是
72 | ADD_ARRAY_ELEMENT | 是
73 | INCLUDE_OR_EVAL | 是
74 | UNSET_VAR | 是
75 | UNSET_DIM | 是
76 | UNSET_OBJ | 是
77 | FE_RESET | 是
78 | FE_FETCH | 是
79 | EXIT | 是
80 | FETCH_R | 是
81 | FETCH_DIM_R | 是
82 | FETCH_OBJ_R | 是
83 | FETCH_W | 是
84 | FETCH_DIM_W | 是
85 | FETCH_OBJ_W | 是
86 | FETCH_RW | 是
87 | FETCH_DIM_RW | 是
88 | FETCH_OBJ_RW | 是
89 | FETCH_IS | 是
90 | FETCH_DIM_IS | 否
91 | FETCH_OBJ_IS | 否
92 | FETCH_FUNC_ARG | 是
93 | FETCH_DIM_FUNC_ARG | 是
94 | FETCH_OBJ_FUNC_ARG | 是
95 | FETCH_UNSET | 否
96 | FETCH_DIM_UNSET | 否
97 | FETCH_OBJ_UNSET | 否
98 | FETCH_DIM_TMP_VAR | 是
99 | FETCH_CONSTANT | 是
100 | 未收录 | 否
101 | EXT_STMT | 否
102 | EXT_FCALL_BEGIN | 否
103 | EXT_FCALL_END | 否
104 | EXT_NOP | 否
105 | TICKS | 是
106 | SEND_VAR_NO_REF | 否
107 | CATCH | 是
108 | THROW | 是
109 | FETCH_CLASS | 是
110 | CLONE | 是
111 | 未收录 | 否
112 | INIT_METHOD_CALL | 是
113 | INIT_STATIC_METHOD_CALL | 是
114 | ISSET_ISEMPTY_VAR | 是
115 | ISSET_ISEMPTY_DIM_OBJ | 是
116 | 未收录 | 否
117 | 未收录 | 否
118 | 未收录 | 否
119 | 未收录 | 否
120 | 未收录 | 否
121 | 未收录 | 否
122 | 未收录 | 否
123 | 未收录 | 否
124 | 未收录 | 否
125 | 未收录 | 否
126 | 未收录 | 否
127 | 未收录 | 否
128 | 未收录 | 否
129 | 未收录 | 否
130 | 未收录 | 否
131 | 未收录 | 否
132 | PRE_INC_OBJ | 是
133 | PRE_DEC_OBJ | 是
134 | POST_INC_OBJ | 是
135 | POST_DEC_OBJ | 是
136 | ASSIGN_OBJ | 是
137 | 未收录 | 否
138 | INSTANCEOF | 是
139 | DECLARE_CLASS | 是
140 | DECLARE_INHERITED_CLASS | 是
141 | DECLARE_FUNCTION | 是
142 | RAISE_ABSTRACT_ERROR | 是
143 | 未收录 | 否
144 | ADD_INTERFACE | 否
145 | 未收录 | 否
146 | VERIFY_ABSTRACT_CLASS | 否
147 | ASSIGN_DIM | 是
148 | ISSET_ISEMPTY_PROP_OBJ | 是
149 | HANDLE_EXCEPTION | 是
150 | USER_OPCODE | 否
152 | ZEND_JMP_SET | 否
153 | ZEND_DECLARE_LAMBDA_FUNCTION | 否
Zend Engine 2 API 参考
Opcode Descriptions and Examples
PHP 核心：骇客指南


Opcode Descriptions and Examples

Table of Contents

  • ADD
  • ADD_ARRAY_ELEMENT
  • ADD_CHAR
  • ADD_INTERFACE
  • ADD_STRING
  • ADD_VAR
  • ASSIGN
  • ASSIGN_ADD
  • ASSIGN_BW_AND
  • ASSIGN_BW_OR
  • ASSIGN_BW_XOR
  • ASSIGN_CONCAT
  • ASSIGN_DIM
  • ASSIGN_DIV
  • ASSIGN_MOD
  • ASSIGN_MUL
  • ASSIGN_OBJ
  • ASSIGN_REF
  • ASSIGN_SL
  • ASSIGN_SR
  • ASSIGN_SUB
  • BEGIN_SILENCE
  • BOOL
  • BOOL_NOT
  • BOOL_XOR
  • BRK
  • BW_AND
  • BW_NOT
  • BW_OR
  • BW_XOR
  • CASE
  • CAST
  • CATCH
  • CLONE
  • CONCAT
  • CONT
  • DECLARE_CLASS
  • DECLARE_CONST
  • DECLARE_FUNCTION
  • DECLARE_INHERITED_CLASS
  • DECLARE_INHERITED_CLASS_DELAYED
  • DIV
  • DO_FCALL
  • DO_FCALL_BY_NAME
  • ECHO
  • END_SILENCE
  • EXIT
  • EXT_FCALL_BEGIN
  • EXT_FCALL_END
  • EXT_NOP
  • EXT_STMT
  • FE_FETCH
  • FE_RESET
  • FETCH_CLASS
  • FETCH_CONSTANT
  • FETCH_DIM_FUNC_ARG
  • FETCH_DIM_IS
  • FETCH_DIM_R
  • FETCH_DIM_RW
  • FETCH_DIM_TMP_VAR
  • FETCH_DIM_UNSET
  • FETCH_DIM_W
  • FETCH_FUNC_ARG
  • FETCH_IS
  • FETCH_OBJ_FUNC_ARG
  • FETCH_OBJ_IS
  • FETCH_OBJ_R
  • FETCH_OBJ_RW
  • FETCH_OBJ_UNSET
  • FETCH_OBJ_W
  • FETCH_R
  • FETCH_RW
  • FETCH_UNSET
  • FETCH_W
  • FREE
  • GOTO
  • HANDLE_EXCEPTION
  • INCLUDE_OR_EVAL
  • INIT_ARRAY
  • INIT_FCALL_BY_NAME
  • INIT_METHOD_CALL
  • INIT_NS_FCALL_BY_NAME
  • INIT_STATIC_METHOD_CALL
  • INIT_STRING
  • INSTANCEOF
  • IS_EQUAL
  • IS_IDENTICAL
  • IS_NOT_EQUAL
  • IS_NOT_IDENTICAL
  • IS_SMALLER
  • IS_SMALLER_OR_EQUAL
  • ISSET_ISEMPTY_DIM_OBJ
  • ISSET_ISEMPTY_PROP_OBJ
  • ISSET_ISEMPTY_VAR
  • JMP
  • JMPNZ
  • JMPNZ_EX
  • JMPZ
  • JMPZ_EX
  • JMPZNZ
  • MOD
  • MUL
  • NEW
  • NOP
  • POST_DEC
  • POST_DEC_OBJ
  • POST_INC
  • POST_INC_OBJ
  • PRE_DEC
  • PRE_DEC_OBJ
  • PRE_INC
  • PRE_INC_OBJ
  • PRINT
  • QM_ASSIGN
  • RAISE_ABSTRACT_ERROR
  • RECV
  • RECV_INIT
  • RETURN
  • RETURN_BY_REF
  • SEND_REF
  • SEND_VAL
  • SEND_VAR
  • SEND_VAR_NO_REF
  • SL
  • SR
  • SUB
  • SWITCH_FREE
  • THROW
  • TICKS
  • UNSET_DIM
  • UNSET_OBJ
  • UNSET_VAR
  • USER_OPCODE
  • VERIFY_ABSTRACT_CLASS
  • ZEND_DECLARE_LAMBDA_FUNCTION
  • ZEND_JMP_SET
Zend Engine 2 操作码列表
ADD
Zend Engine 2 操作码列表


ADD

PHP code

<?php
/*
 * Adds "value1" to "value2" and stores the result into "result".
 * opcode number: 1
 */
echo 1 + 2;
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | ADD |  |  | ~0 | 1,2
 | 1 | ECHO |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
Opcode Descriptions and Examples
ADD_ARRAY_ELEMENT
Opcode Descriptions and Examples


ADD_ARRAY_ELEMENT

PHP code

<?php
/*
 * Add elem-value as an element to array-value
 * opcode number: 72
 */
$a = array(1,2,3);
print_r($a);
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | INIT_ARRAY |  |  | ~0 | 1
 | 1 | ADD_ARRAY_ELEMENT |  |  | ~0 | 2
 | 2 | ADD_ARRAY_ELEMENT |  |  | ~0 | 3
 | 3 | ASSIGN |  |  |  | !0,~0
7 | 4 | SEND_VAR |  |  |  | !0
 | 5 | DO_FCALL |  | 1 |  | 'print_r'
8 | 6 | RETURN |  |  |  | 1
ADD
ADD_CHAR
Opcode Descriptions and Examples


ADD_CHAR

PHP code

<?php
/*
 * add regular characters in encapsed string
 * opcode number: 54
 */
echo "$a ";
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ADD_VAR |  |  |  | !0
 | 1 | ADD_CHAR |  |  |  | 32
 | 2 | ECHO |  |  |  |
 | 3 | RETURN |  |  |  | 1
ADD_ARRAY_ELEMENT
ADD_INTERFACE
Opcode Descriptions and Examples


ADD_INTERFACE

PHP code

<?php
/*
 * adds an implemented interface to a class declaration
 * opcode number: 144
 */
interface iA {
}

class A implements iA {
}
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | NOP |  |  |  |
 | 1 | DECLARE_CLASS |  |  |  | 'a'
 | 2 | ADD_INTERFACE |  |  |  | 'iA'
 | 3 | VERIFY_ABSTRACT_CLASS |  |  |  |
 | 3 | RETURN |  |  |  | 1
ADD_CHAR
ADD_STRING
Opcode Descriptions and Examples


ADD_STRING

PHP code

<?php
/*
 * add string value2 to string value2 and store in result
 * opcode number: 55
 */
echo "hello$a world";
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ADD_STRING |  |  | ~0 | 'hello'
 | 1 | ADD_VAR |  |  | ~0 | ~0,!0
 | 2 | ADD_STRING |  |  | ~0 | ~0,'+world'
 | 3 | ECHO |  |  |  | ~0
7 | 4 | RETURN |  |  |  | 1
ADD_INTERFACE
ADD_VAR
Opcode Descriptions and Examples


ADD_VAR

PHP code

<?php
/*
 * add contents of variable in value2 to string value1 and store in result
 * opcode number: 56
 */
echo "hello$a world";
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ADD_STRING |  |  | ~0 | 'hello'
 | 1 | ADD_VAR |  |  | ~0 | ~0,!0
 | 2 | ADD_STRING |  |  | ~0 | ~0,'+world'
 | 3 | ECHO |  |  |  | ~0
7 | 4 | RETURN |  |  |  | 1
ADD_STRING
ASSIGN
Opcode Descriptions and Examples


ASSIGN

PHP code

<?php
/*
 * assigns value1 to result
 * opcode number: 38
 */
$a=1;
$a='a';
$a=new A();
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN |  |  |  | !0,1
7 | 1 | ASSIGN |  |  |  | !0,'a'
8 | 2 | ZEND_FETCH_CLASS |  |  | :2 | 'A'
 | 3 | NEW |  |  | $3 | :2
 | 4 | DO_FCALL_BY_NAME |  | 0 |  |
 | 5 | ASSIGN |  |  |  | !0,$3
9 | 6 | RETURN |  |  |  | 1
ADD_VAR
ASSIGN_ADD
Opcode Descriptions and Examples


ASSIGN_ADD

PHP code

<?php
/*
 * Add value1 to value2 and store in variable indicated by value1
 * opcode number: 23
 */
$a+=3;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN_ADD |  |  |  | !0,3
7 | 1 | RETURN |  |  |  | 1
ASSIGN
ASSIGN_BW_AND
Opcode Descriptions and Examples


ASSIGN_BW_AND

PHP code

<?php
/*
 * Performs binary AND on result and value1 and stores in variable indicated by result.
 * opcode number: 32
 */
$a &= 64;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN_BW_AND |  |  |  | !0,64
7 | 1 | RETURN |  |  |  | 1
ASSIGN_ADD
ASSIGN_BW_OR
Opcode Descriptions and Examples


ASSIGN_BW_OR

PHP code

<?php
/*
 * Performs binary OR on result and value1 and stores in variable indicated by result.
 * opcode number: 31
 */
$a |= 64;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN_BW_OR |  |  |  | !0,64
7 | 1 | RETURN |  |  |  | 1
ASSIGN_BW_AND
ASSIGN_BW_XOR
Opcode Descriptions and Examples


ASSIGN_BW_XOR

PHP code

<?php
/*
 * Performs binary XOR on result and value1and stores in variable indicated by result.
 * opcode number: 33
 */
$a ^= 64;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN_BW_XOR |  |  |  | !0,64
7 | 1 | RETURN |  |  |  | 1
ASSIGN_BW_OR
ASSIGN_CONCAT
Opcode Descriptions and Examples


ASSIGN_CONCAT

PHP code

<?php
/*
 * Concats string values result and value1 and store in variable indicated by result
 * opcode number: 30
 */
$a .= 'z';
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN_CONCAT |  |  |  | !0,'z'
7 | 1 | RETURN |  |  |  | 1
ASSIGN_BW_XOR
ASSIGN_DIM
Opcode Descriptions and Examples


ASSIGN_DIM

PHP code

<?php
/*
 *
 * opcode number: 147
 */
$b = 1;
$a[1][2] = $b;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$b, !1=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN |  |  |  | !0,1
7 | 1 | FETCH_DIM_W |  |  | $1 | !1,1
 | 2 | ZEND_ASSIGN_DIM |  |  |  | $1,2
 | 3 | ZEND_OP_DATA |  |  |  | !0,$3
8 | 4 | RETURN |  |  |  | 1
ASSIGN_CONCAT
ASSIGN_DIV
Opcode Descriptions and Examples


ASSIGN_DIV

PHP code

<?php
/*
 * Divide result by value1and store in variable indicated by result.
 * opcode number: 26
 */
$a/=3;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN_DIV |  |  |  | !0,3
7 | 1 | RETURN |  |  |  | 1
ASSIGN_DIM
ASSIGN_MOD
Opcode Descriptions and Examples


ASSIGN_MOD

PHP code

<?php
/*
 * Perform result mod value1 and store in variable indicated by result
 * opcode number: 27
 */
$a %= 3;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN_MOD |  |  |  | !0,3
7 | 1 | RETURN |  |  |  | 1
ASSIGN_DIV
ASSIGN_MUL
Opcode Descriptions and Examples


ASSIGN_MUL

PHP code

<?php
/*
 * Multiply result by value1 and store in variable indicated by result
 * opcode number: 25
 */
$a*=3;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN_MUL |  |  |  | !0,3
7 | 1 | RETURN |  |  |  | 1
ASSIGN_MOD
ASSIGN_OBJ
Opcode Descriptions and Examples


ASSIGN_OBJ

PHP code

<?php
/*
 *
 * opcode number: 136
 */
$obj->a = $otherobj;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$obj, !1=$otherobj

line | # | op | fetch | ext | return | operands
6 | 0 | ZEND_ASSIGN_OBJ |  |  |  | !0,'a'
 | 1 | ZEND_OP_DATA |  |  |  | !1
7 | 2 | RETURN |  |  |  | 1
ASSIGN_MUL
ASSIGN_REF
Opcode Descriptions and Examples


ASSIGN_REF

PHP code

<?php
/*
 * indicates that variable indicated by value1 is to be treated in the global scope for the remainder of the current scope.
 * opcode number: 39
 */
global $a;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | FETCH_W | globallock |  | $0 | 'a'
 | 1 | ASSIGN_REF |  |  |  | !0,$0
7 | 2 | RETURN |  |  |  | 1
ASSIGN_OBJ
ASSIGN_SL
Opcode Descriptions and Examples


ASSIGN_SL

PHP code

<?php
/*
 * Shift result by value1 bits to left and store in variable indicated by result
 * opcode number: 28
 */
$a <<= 3;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN_SL |  |  |  | !0,3
7 | 1 | RETURN |  |  |  | 1
ASSIGN_REF
ASSIGN_SR
Opcode Descriptions and Examples


ASSIGN_SR

PHP code

<?php
/*
 * Shift result by value1 bits to right and store in variable indicated by result
 * opcode number: 29
 */
$a >>= 3;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN_SR |  |  |  | !0,3
7 | 1 | RETURN |  |  |  | 1
ASSIGN_SL
ASSIGN_SUB
Opcode Descriptions and Examples


ASSIGN_SUB

PHP code

<?php
/*
 * Subtract value1 from value2 and store in variable indicated by value1
 * opcode number: 24
 */
$a-=3;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN_SUB |  |  |  | !0,3
7 | 1 | RETURN |  |  |  | 1
ASSIGN_SR
BEGIN_SILENCE
Opcode Descriptions and Examples


BEGIN_SILENCE

PHP code

<?php
/*
 * prepare to perform function call without displaying error messages
 * opcode number: 57
 */
/* Intentional file error */
$my_file = @file ('non_existent_file') or
   die ("error:'$php_errormsg'");
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$my_file, !1=$php_errormsg

line | # | op | fetch | ext | return | operands
7 | 0 | BEGIN_SILENCE |  |  | ~0 |
 | 1 | SEND_VAL |  |  |  | 'non_existent_file'
 | 2 | DO_FCALL |  | 1 |  | 'file'
 | 3 | END_SILENCE |  |  |  | ~0
 | 4 | ASSIGN |  |  | $2 | !0,$1
 | 5 | JMPNZ_EX |  |  | ~3 | $2,->11
8 | 6 | ADD_STRING |  |  | ~4 | 'error%3A%27'
 | 7 | ADD_VAR |  |  | ~4 | ~4,!1
 | 8 | ADD_CHAR |  |  | ~4 | ~4,39
 | 9 | EXIT |  |  |  | ~4
 | 10 | BOOL |  |  | ~3 | true
 | 11 | FREE |  |  |  | ~3
9 | 12 | RETURN |  |  |  | 1
ASSIGN_SUB
BOOL
Opcode Descriptions and Examples


BOOL

PHP code

<?php
/*
 * convert value1 to boolean and store in result??????????
 * opcode number: 52
 */
if (1 || 2 || 1) echo "foo";
//$a = true;
//if($a) echo "foo";
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | JMPNZ_EX |  |  | ~0 | 1,->2
 | 1 | BOOL |  |  | ~0 | 2
 | 2 | JMPNZ_EX |  |  | ~0 | ~0,->4
 | 3 | BOOL |  |  | ~0 | 1
 | 4 | JMPZ |  |  |  | ~0,->7
 | 5 | ECHO |  |  |  | 'foo'
 | 6 | JMP |  |  |  | ->7
9 | 7 | RETURN |  |  |  | 1
BEGIN_SILENCE
BOOL_NOT
Opcode Descriptions and Examples


BOOL_NOT

PHP code

<?php
/*
 * Boolean (logical) not of "value"
 * opcode number: 13
 */
echo !1;
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | BOOL_NOT |  |  | ~0 | 1
 | 1 | ECHO |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
BOOL
BOOL_XOR
Opcode Descriptions and Examples


BOOL_XOR

PHP code

<?php
/*
 * Boolean (logical) xor of value1
 * opcode number: 14
 */
echo 1 xor 2;
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | BOOL_XOR |  |  | ~0 | 1,2
 | 1 | ECHO |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
BOOL_NOT
BRK
Opcode Descriptions and Examples


BRK

PHP code

<?php
/*
 * ???  End of a case block exists the current switch block.  Followed by JMP?
 * opcode number: 50
 */
$x = 0;
while(1) {
    if($x == 0) break;
}
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$x

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN |  |  |  | !0,0
7 | 1 | JMPZ |  |  |  | 1,->7
8 | 2 | IS_EQUAL |  |  | ~1 | !0,0
 | 3 | JMPZ |  |  |  | ~1,->6
 | 4 | BRK |  |  |  | 1
 | 5 | JMP |  |  |  | ->6
9 | 6 | JMP |  |  |  | ->1
10 | 7 | RETURN |  |  |  | 1
BOOL_XOR
BW_AND
Opcode Descriptions and Examples


BW_AND

PHP code

<?php
/*
 * Bit-wise and of value1 and value2
 * opcode number: 10
 */
echo 1&2;
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | BW_AND |  |  | ~0 | 1,2
 | 1 | ECHO |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
BRK
BW_NOT
Opcode Descriptions and Examples


BW_NOT

PHP code

<?php
/*
 * Bit-wise not of "value"
 * opcode number: 12
 */
echo ~15;
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | BW_NOT |  |  | ~0 | 15
 | 1 | ECHO |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
BW_AND
BW_OR
Opcode Descriptions and Examples


BW_OR

PHP code

<?php
/*
 * Bit-wise or of value1 and value2
 * opcode number: 9
 */
echo 1|2;
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | BW_OR |  |  | ~0 | 1,2
 | 1 | ECHO |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
BW_NOT
BW_XOR
Opcode Descriptions and Examples


BW_XOR

PHP code

<?php
/*
 * Bit-wise xor of value1 and value2
 * opcode number: 11
 */
echo 1^2;
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | BW_XOR |  |  | ~0 | 1,2
 | 1 | ECHO |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
BW_OR
CASE
Opcode Descriptions and Examples


CASE

PHP code

<?php
/*
 * Set result to true if value1 equals value2.  The value2 must be a constant value?
 * opcode number: 48
 */
$i=0;
switch ($i) {
   case 0:
         echo "i=0";
         break;
   case 1:
         echo "i=1";
         break;
   case 2:
         echo "i=2";
         break;
}
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$i

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN |  |  |  | !0,0
8 | 1 | CASE |  |  | ~1 | !0,0
 | 2 | JMPZ |  |  |  | ~1,->6
9 | 3 | ECHO |  |  |  | 'i%3D0'
10 | 4 | BRK |  |  |  | 1
11 | 5 | JMP |  |  |  | ->8
 | 6 | CASE |  |  | ~1 | !0,1
 | 7 | JMPZ |  |  |  | ~1,->11
12 | 8 | ECHO |  |  |  | 'i%3D1'
13 | 9 | BRK |  |  |  | 1
14 | 10 | JMP |  |  |  | ->13
 | 11 | CASE |  |  | ~1 | !0,2
 | 12 | JMPZ |  |  |  | ~1,->16
15 | 13 | ECHO |  |  |  | 'i%3D2'
16 | 14 | BRK |  |  |  | 1
17 | 15 | JMP |  |  |  | ->16
18 | 16 | RETURN |  |  |  | 1
BW_XOR
CAST
Opcode Descriptions and Examples


CAST

PHP code

<?php
/*
 * casts value1 as type value2 (type in extended_value)
 * opcode number: 21
 */
echo (int)1;
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | CAST |  | 4 | ~0 | 1
 | 1 | ECHO |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
CASE
CATCH
Opcode Descriptions and Examples


CATCH

PHP code

<?php
/*
 *
 * opcode number: 107
 */
try {
    $error = 'Always throw this error';
    throw new Exception($error);

    // Code following an exception is not executed.
    echo 'Never executed';

} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

// Continue execution
echo 'Hello World';
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$error, !1=$e

line | # | op | fetch | ext | return | operands
7 | 0 | ASSIGN |  |  |  | !0,'Always+throw+this+error'
8 | 1 | ZEND_FETCH_CLASS |  |  | :1 | 'Exception'
 | 2 | NEW |  |  | $2 | :1
 | 3 | SEND_VAR |  |  |  | !0
 | 4 | DO_FCALL_BY_NAME |  | 1 |  |
 | 5 | ZEND_THROW |  | 0 |  | $2
11 | 6 | ECHO |  |  |  | 'Never+executed'
13 | 7 | JMP |  |  |  | ->15
 | 8 | ZEND_FETCH_CLASS |  |  | :4 | 'Exception'
 | 9 | ZEND_CATCH |  | 15 |  | $4,!1
14 | 10 | ECHO |  |  |  | 'Caught+exception%3A+'
 | 11 | ZEND_INIT_METHOD_CALL |  |  |  | !1,'getMessage'
 | 12 | DO_FCALL_BY_NAME |  | 0 |  |
 | 13 | ECHO |  |  |  | $6
 | 14 | ECHO |  |  |  | '%0A'
18 | 15 | ECHO |  |  |  | 'Hello+World'
19 | 16 | RETURN |  |  |  | 1
CAST
CLONE
Opcode Descriptions and Examples


CLONE

PHP code

<?php
/*
 *
 * opcode number: 110
 */
$obj = new A();
$copy = clone $obj;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$obj, !1=$copy

line | # | op | fetch | ext | return | operands
6 | 0 | ZEND_FETCH_CLASS |  |  | :0 | 'A'
 | 1 | NEW |  |  | $1 | :0
 | 2 | DO_FCALL_BY_NAME |  | 0 |  |
 | 3 | ASSIGN |  |  |  | !0,$1
7 | 4 | ZEND_CLONE |  |  | $4 | !0
 | 5 | ASSIGN |  |  |  | !1,$4
8 | 6 | RETURN |  |  |  | 1
CATCH
CONCAT
Opcode Descriptions and Examples


CONCAT

PHP code

<?php
/*
 * Concats string values string1 and string2
 * opcode number: 8
 */
echo "hello" . "world";
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | CONCAT |  |  | ~0 | 'hello','world'
 | 1 | ECHO |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
CLONE
CONT
Opcode Descriptions and Examples


CONT

PHP code

<?php
/*
 * Continue next iteration of current loop level
 * opcode number: 51
 */
$foo = false;
while(!$foo) {
    $foo = true;
    continue;
}
?>

PHP opcodes

Function name: (null)

compiled vars: !0 = $foo

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN |  |  |  | !0, false
7 | 1 | BOOL_NOT |  |  | ~1 | !0
 | 2 | JMPZ |  |  |  | ~1, ->5
8 | 3 | ASSIGN |  |  |  | !0, true
9 | 4 | CONT |  |  |  | 1
10 | 5 | JMP |  |  |  | ->1
12 | 6 | RETURN |  |  |  | 1
CONCAT
DECLARE_CLASS
Opcode Descriptions and Examples


DECLARE_CLASS

PHP code

<?php
/*
 * Declare a class with the name of class-name as the implementation specified by ID.
 * opcode number: 139
 */
class A {
    function methodA(){
        echo "hello world";
    }
}
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | NOP |  |  |  |
11 | 1 | RETURN |  |  |  | 1

Function name: methodA

Compiled variables: none

line | # | op | fetch | ext | return | operands
8 | 0 | ECHO |  |  |  | 'hello+world'
9 | 1 | RETURN |  |  |  | null
CONT
DECLARE_CONST
Opcode Descriptions and Examples


DECLARE_CONST

PHP code

<?php
/*
 *
 * opcode number: 143
 * No sample PHP yet */
?>
DECLARE_CLASS
DECLARE_FUNCTION
Opcode Descriptions and Examples


DECLARE_FUNCTION

PHP code

<?php
/*
 *
 * opcode number: 141
 */
class A{
 function funcA(){
 }
}
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | NOP |  |  |  |
10 | 1 | RETURN |  |  |  | 1

Function name: funcA

Compiled variables: none

line | # | op | fetch | ext | return | operands
8 | 0 | RETURN |  |  |  | null
DECLARE_CONST
DECLARE_INHERITED_CLASS
Opcode Descriptions and Examples


DECLARE_INHERITED_CLASS

PHP code

<?php
/*
 *
 * opcode number: 140
 */
 if($b){
 class Foo {
  public static $my_static = 'foo';
  public function staticValue() {
    return self::$my_static;
  }
 }

 class Bar extends Foo {
  public function fooStatic() {
     echo parent::$my_static;
  }
 }
}
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$b

line | # | op | fetch | ext | return | operands
6 | 0 | JMPZ |  |  |  | !0,->5
7 | 1 | ZEND_DECLARE_CLASS |  |  | $0 | '%00foo%2Fmnt%2Fworkspace%2Fws_phpscripts%2FPHPopcodes%2Fphpsamples%2FDECLARE_INHERITED_CLASS.php0xb7be503b','foo'
14 | 2 | ZEND_FETCH_CLASS |  |  | :1 | 'Foo'
 | 3 | ZEND_DECLARE_INHERITED_CLASS |  |  | $2 | '%00bar%2Fmnt%2Fworkspace%2Fws_phpscripts%2FPHPopcodes%2Fphpsamples%2FDECLARE_INHERITED_CLASS.php0xb7be50bc','bar'
19 | 4 | JMP |  |  |  | ->5
20 | 5 | RETURN |  |  |  | 1

Function name: staticValue

Compiled variables: !0=$my_static

line | # | op | fetch | ext | return | operands
10 | 0 | ZEND_FETCH_CLASS |  |  |  |
 | 1 | FETCH_R | staticmember |  | $1 | 'my_static'
 | 2 | RETURN |  |  |  | $1
11 | 3 | RETURN |  |  |  | null

Function name: fooStatic

Compiled variables: !0=$my_static

line | # | op | fetch | ext | return | operands
16 | 0 | ZEND_FETCH_CLASS |  |  | :0 |
 | 1 | FETCH_R | staticmember |  | $1 | 'my_static'
 | 2 | ECHO |  |  |  | $1
17 | 3 | RETURN |  |  |  | null
DECLARE_FUNCTION
DECLARE_INHERITED_CLASS_DELAYED
Opcode Descriptions and Examples


DECLARE_INHERITED_CLASS_DELAYED

PHP code

<?php
/*
 *
 * opcode number: 145
 * No sample PHP yet */
?>
DECLARE_INHERITED_CLASS
DIV
Opcode Descriptions and Examples


DIV

PHP code

<?php
/*
 * Divides "value1" by "value2" and stores the result into "result".
 * opcode number: 4
 */
echo 6/3;
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | DIV |  |  | ~0 | 6,3
 | 1 | ECHO |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
DECLARE_INHERITED_CLASS_DELAYED
DO_FCALL
Opcode Descriptions and Examples


DO_FCALL

PHP code

<?php
/*
 * Call a function.  Following multiple SEND_VAL, SEND_VAR or SEND_REF.
 * opcode number: 60
 */
$a = phpinfo();
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | DO_FCALL |  | 0 |  | 'phpinfo'
 | 1 | ASSIGN |  |  |  | !0,$0
7 | 2 | RETURN |  |  |  | 1
DIV
DO_FCALL_BY_NAME
Opcode Descriptions and Examples


DO_FCALL_BY_NAME

PHP code

<?php
/*
 * Call a function by name.  Following INIT_FCALL_BY_NAME and multiple SEND_VAL, SEND_VAR or SEND_REF.
 * opcode number: 61
 */
$x = 'phpinfo';
$a = $x();
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$x, !1=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN |  |  |  | !0,'phpinfo'
7 | 1 | INIT_FCALL_BY_NAME |  |  |  | !0
 | 2 | DO_FCALL_BY_NAME |  | 0 |  |
 | 3 | ASSIGN |  |  |  | !1,$1
8 | 4 | RETURN |  |  |  | 1
DO_FCALL
ECHO
Opcode Descriptions and Examples


ECHO

PHP code

<?php
/*
 * Dump text
 * opcode number: 40
 */
echo "hello world";
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | ECHO |  |  |  | 'hello+world'
7 | 1 | RETURN |  |  |  | 1
DO_FCALL_BY_NAME
END_SILENCE
Opcode Descriptions and Examples


END_SILENCE

PHP code

<?php
/*
 * no longer surpress error messages
 * opcode number: 58
 */
$my_file = @file ('non_existent_file') or
   die ("error:'$php_errormsg'");
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$my_file, !1=$php_errormsg

line | # | op | fetch | ext | return | operands
6 | 0 | BEGIN_SILENCE |  |  | ~0 |
 | 1 | SEND_VAL |  |  |  | 'non_existent_file'
 | 2 | DO_FCALL |  | 1 |  | 'file'
 | 3 | END_SILENCE |  |  |  | ~0
 | 4 | ASSIGN |  |  | $2 | !0,$1
 | 5 | JMPNZ_EX |  |  | ~3 | $2,->11
7 | 6 | ADD_STRING |  |  | ~4 | 'error%3A%27'
 | 7 | ADD_VAR |  |  | ~4 | ~4,!1
 | 8 | ADD_CHAR |  |  | ~4 | ~4,39
 | 9 | EXIT |  |  |  | ~4
 | 10 | BOOL |  |  | ~3 | true
 | 11 | FREE |  |  |  | ~3
8 | 12 | RETURN |  |  |  | 1
ECHO
EXIT
Opcode Descriptions and Examples


EXIT

PHP code

<?php
/*
 * Exit running after dumping "message".
 * opcode number: 79
 */
die("foobar");
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | EXIT |  |  |  | 'foobar'
7 | 1 | RETURN |  |  |  | 1
END_SILENCE
EXT_FCALL_BEGIN
Opcode Descriptions and Examples


EXT_FCALL_BEGIN

PHP code

<?php
/*
 *
 * opcode number: 102
 * No sample PHP yet */
?>
EXIT
EXT_FCALL_END
Opcode Descriptions and Examples


EXT_FCALL_END

PHP code

<?php
/*
 *
 * opcode number: 103
 * No sample PHP yet */
?>
EXT_FCALL_BEGIN
EXT_NOP
Opcode Descriptions and Examples


EXT_NOP

PHP code

<?php
/*
 *
 * opcode number: 104
 * No sample PHP yet */
?>
EXT_FCALL_END
EXT_STMT
Opcode Descriptions and Examples


EXT_STMT

PHP code

<?php
/*
 *
 * opcode number: 101
 */
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
7 | 0 | EXT_STMT |  |  |  |
8 | 1 | RETURN |  |  |  | 1
EXT_NOP
FE_FETCH
Opcode Descriptions and Examples


FE_FETCH

PHP code

<?php
/*
 * Fetch an element from iterator.  If no element is available, jump to address.  Followed by OP_DATA?
 * opcode number: 78
 */
$a = array(1,2,3);
foreach($a as $num){
    print $num;
}
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a, !1=$num

line | # | op | fetch | ext | return | operands
6 | 0 | INIT_ARRAY |  |  | ~0 | 1
 | 1 | ADD_ARRAY_ELEMENT |  |  | ~0 | 2
 | 2 | ADD_ARRAY_ELEMENT |  |  | ~0 | 3
 | 3 | ASSIGN |  |  |  | !0,~0
7 | 4 | FE_RESET |  |  | $2 | !0,->11
 | 5 | FE_FETCH |  |  | $3 | $2,->11
 | 6 | ZEND_OP_DATA |  |  |  |
 | 7 | ASSIGN |  |  |  | !1,$3
8 | 8 | PRINT |  |  | ~5 | !1
 | 9 | FREE |  |  |  | ~5
9 | 10 | JMP |  |  |  | ->5
 | 11 | SWITCH_FREE |  |  |  | $2
10 | 12 | RETURN |  |  |  | 1
EXT_STMT
FE_RESET
Opcode Descriptions and Examples


FE_RESET

PHP code

<?php
/*
 * Initialize an iterator on array-value.  If the array is empty, jump to address.  Followed by FE_FETCH.
 * opcode number: 77
 */
$a = array(1,2,3);
foreach($a as $num){
    print $num;
}
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a, !1=$num

line | # | op | fetch | ext | return | operands
6 | 0 | INIT_ARRAY |  |  | ~0 | 1
 | 1 | ADD_ARRAY_ELEMENT |  |  | ~0 | 2
 | 2 | ADD_ARRAY_ELEMENT |  |  | ~0 | 3
 | 3 | ASSIGN |  |  |  | !0,~0
7 | 4 | FE_RESET |  |  | $2 | !0,->11
 | 5 | FE_FETCH |  |  | $3 | $2,->11
 | 6 | ZEND_OP_DATA |  |  |  |
 | 7 | ASSIGN |  |  |  | !1,$3
8 | 8 | PRINT |  |  | ~5 | !1
 | 9 | FREE |  |  |  | ~5
9 | 10 | JMP |  |  |  | ->5
 | 11 | SWITCH_FREE |  |  |  | $2
10 | 12 | RETURN |  |  |  | 1
FE_FETCH
FETCH_CLASS
Opcode Descriptions and Examples


FETCH_CLASS

PHP code

<?php
/*
 *
 * opcode number: 109
 */
$obj = new A();
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$obj

line | # | op | fetch | ext | return | operands
6 | 0 | ZEND_FETCH_CLASS |  |  | :0 | 'A'
 | 1 | NEW |  |  | $1 | :0
 | 2 | DO_FCALL_BY_NAME |  | 0 |  |
 | 3 | ASSIGN |  |  |  | !0,$1
7 | 4 | RETURN |  |  |  | 1
FE_RESET
FETCH_CONSTANT
Opcode Descriptions and Examples


FETCH_CONSTANT

PHP code

<?php
/*
 * Fetch the constant value bound to the specified name (name) and stores it into a variable (result).
 * opcode number: 99
 */
define("FOO", "something");
echo FOO;
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | SEND_VAL |  |  |  | 'FOO'
 | 1 | SEND_VAL |  |  |  | 'something'
 | 2 | DO_FCALL |  | 2 |  | 'define'
7 | 3 | FETCH_CONSTANT |  |  | ~1 | 'FOO'
 | 4 | ECHO |  |  |  | ~1
8 | 5 | RETURN |  |  |  | 1
FETCH_CLASS
FETCH_DIM_FUNC_ARG
Opcode Descriptions and Examples


FETCH_DIM_FUNC_ARG

PHP code

<?php
/*
 *
 * opcode number: 93
 */

function foo(&$x)
{
  print($x);
}

$x = array(0, 1, 2, 3, 4, 5);
$z = "foo";

$z($x[0]);

?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$x, !1=$z

line | # | op | fetch | ext | return | operands
7 | 0 | NOP |  |  |  |
12 | 1 | INIT_ARRAY |  |  | ~0 | 0
 | 2 | ADD_ARRAY_ELEMENT |  |  | ~0 | 1
 | 3 | ADD_ARRAY_ELEMENT |  |  | ~0 | 2
 | 4 | ADD_ARRAY_ELEMENT |  |  | ~0 | 3
 | 5 | ADD_ARRAY_ELEMENT |  |  | ~0 | 4
 | 6 | ADD_ARRAY_ELEMENT |  |  | ~0 | 5
 | 7 | ASSIGN |  |  |  | !0,~0
13 | 8 | ASSIGN |  |  |  | !1,'foo'
15 | 9 | INIT_FCALL_BY_NAME |  |  |  | !1
 | 10 | FETCH_DIM_FUNC_ARG |  |  | $3 | !0,0
 | 11 | SEND_VAR |  |  |  | $3
 | 12 | DO_FCALL_BY_NAME |  | 1 |  |
17 | 13 | RETURN |  |  |  | 1

Function name: foo

Compiled variables: !0=$x

line | # | op | fetch | ext | return | operands
7 | 0 | RECV |  |  |  | 1
9 | 1 | PRINT |  |  | ~0 | !0
 | 2 | FREE |  |  |  | ~0
10 | 3 | RETURN |  |  |  | null
FETCH_CONSTANT
FETCH_DIM_IS
Opcode Descriptions and Examples


FETCH_DIM_IS

PHP code

<?php
/*
 *
 * opcode number: 90
 * No sample PHP yet */
?>
FETCH_DIM_FUNC_ARG
FETCH_DIM_R
Opcode Descriptions and Examples


FETCH_DIM_R

PHP code

<?php
/*
 * Fetch the value of the element at "index" in "array-value" to store it in "result".  Read-only?
 * opcode number: 81
 */
$x = array(1,2,3);
$a = 'x';
echo $$a[0];
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$x, !1=$a

line | # | op | fetch | ext | return | operands
6 | 0 | INIT_ARRAY |  |  | ~0 | 1
 | 1 | ADD_ARRAY_ELEMENT |  |  | ~0 | 2
 | 2 | ADD_ARRAY_ELEMENT |  |  | ~0 | 3
 | 3 | ASSIGN |  |  |  | !0,~0
7 | 4 | ASSIGN |  |  |  | !1,'x'
8 | 5 | FETCH_DIM_R |  |  | $3 | !1,0
 | 6 | FETCH_R | local |  | $4 | $3
 | 7 | ECHO |  |  |  | $4
9 | 8 | RETURN |  |  |  | 1
FETCH_DIM_IS
FETCH_DIM_RW
Opcode Descriptions and Examples


FETCH_DIM_RW

PHP code

<?php
/*
 * Fetch the value of the element at "index" in "array-value" to store it in "result".
 * opcode number: 87
 */
$x = array(1,2,3);
$a = 'x';
$$a[0]++;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$x, !1=$a

line | # | op | fetch | ext | return | operands
6 | 0 | INIT_ARRAY |  |  | ~0 | 1
 | 1 | ADD_ARRAY_ELEMENT |  |  | ~0 | 2
 | 2 | ADD_ARRAY_ELEMENT |  |  | ~0 | 3
 | 3 | ASSIGN |  |  |  | !0,~0
7 | 4 | ASSIGN |  |  |  | !1,'x'
8 | 5 | FETCH_DIM_R |  |  | $3 | !1,0
 | 6 | FETCH_RW | local |  | $4 | $3
 | 7 | POST_INC |  |  | ~5 | $4
 | 8 | FREE |  |  |  | ~5
9 | 9 | RETURN |  |  |  | 1
FETCH_DIM_R
FETCH_DIM_TMP_VAR
Opcode Descriptions and Examples


FETCH_DIM_TMP_VAR

PHP code

<?php
/*
 * Fetch an entry of an array from a temporal variable?
 * opcode number: 98
 */
list($x) = array("X");
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$x

line | # | op | fetch | ext | return | operands
6 | 0 | INIT_ARRAY |  |  | ~0 | 'X'
 | 1 | FETCH_DIM_TMP_VAR |  |  | $1 | ~0,0
 | 2 | ASSIGN |  |  |  | !0,$1
 | 3 | FREE |  |  |  | ~0
7 | 4 | RETURN |  |  |  | 1
FETCH_DIM_RW
FETCH_DIM_UNSET
Opcode Descriptions and Examples


FETCH_DIM_UNSET

PHP code

<?php
/*
 * Fetch an entry of an array variable for the purpose of unset() operation.
 * opcode number: 96
 * No sample PHP yet */
?>
FETCH_DIM_TMP_VAR
FETCH_DIM_W
Opcode Descriptions and Examples


FETCH_DIM_W

PHP code

<?php
/*
 * Fetch the value of the element at "index" in "array-value" to store it in "result".  Write-only?
 * opcode number: 84
 */
$a = 1;
while($a > 0){
    $a = 0;
}
/*$input =array(1,2,3);
while (list($var,) = @each($input)){
    unset($$var);
}*/
/*$a = array(1,2,3);
$x = 'a';
$$x[0] = 1;*/

/*while ($b = each($a)) {
  print $b;
}*/

?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN |  |  |  | !0,1
7 | 1 | IS_SMALLER |  |  | ~1 | 0,!0
 | 2 | JMPZ |  |  |  | ~1,->5
8 | 3 | ASSIGN |  |  |  | !0,0
9 | 4 | JMP |  |  |  | ->1
23 | 5 | RETURN |  |  |  | 1
FETCH_DIM_UNSET
FETCH_FUNC_ARG
Opcode Descriptions and Examples


FETCH_FUNC_ARG

PHP code

<?php
/*
 *
 * opcode number: 92
 */
function foo($x)
{
}

$x = 1;
$y = "x";
$z = "foo";

$z($$y);

?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$x, !1=$y, !2=$z

line | # | op | fetch | ext | return | operands
6 | 0 | NOP |  |  |  |
10 | 1 | ASSIGN |  |  |  | !0,1
11 | 2 | ASSIGN |  |  |  | !1,'x'
12 | 3 | ASSIGN |  |  |  | !2,'foo'
14 | 4 | INIT_FCALL_BY_NAME |  |  |  | !2
 | 5 | FETCH_FUNC_ARG | local |  | $3 | !1
 | 6 | SEND_VAR |  |  |  | $3
 | 7 | DO_FCALL_BY_NAME |  | 1 |  |
16 | 8 | RETURN |  |  |  | 1

Function name: foo

Compiled variables: !0=$x

line | # | op | fetch | ext | return | operands
6 | 0 | RECV |  |  |  | 1
8 | 1 | RETURN |  |  |  | null
FETCH_DIM_W
FETCH_IS
Opcode Descriptions and Examples


FETCH_IS

PHP code

<?php
/*
 * Fetch the value from variable which is to be used to test if it is set or not, through isset()/isempty().
 * opcode number: 89
 */
echo isset($_SESSION['userid']);
echo isset($_SESSION['userid'][1]);
echo isset($_SESSION->prop->prop);
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | FETCH_IS |  |  | $0 | '_SESSION'
 | 1 | ZEND_ISSET_ISEMPTY_DIM_OBJ |  | 1 | ~1 | $0,'userid'
 | 2 | ECHO |  |  |  | ~1
7 | 3 | FETCH_IS |  |  | $2 | '_SESSION'
 | 4 | FETCH_DIM_IS |  |  | $3 | $2,'userid'
 | 5 | ZEND_ISSET_ISEMPTY_DIM_OBJ |  | 1 | ~4 | $3,1
 | 6 | ECHO |  |  |  | ~4
8 | 7 | FETCH_IS |  |  | $5 | '_SESSION'
 | 8 | FETCH_OBJ_IS |  |  | $6 | $5,'prop'
 | 9 | ZEND_ISSET_ISEMPTY_PROP_OBJ |  |  | ~7 | $6,'prop'
 | 10 | ECHO |  |  |  | ~7
9 | 11 | RETURN |  |  |  | 1
FETCH_FUNC_ARG
FETCH_OBJ_FUNC_ARG
Opcode Descriptions and Examples


FETCH_OBJ_FUNC_ARG

PHP code

<?php
/*
 *
 * opcode number: 94
 */
include './classA.php';

function foo(&$x)
{
  print($x);
}

$z = "foo";

$obj = new A();
print $obj->num;
$z($obj->num);

?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$z, !1=$obj

line | # | op | fetch | ext | return | operands
6 | 0 | INCLUDE_OR_EVAL |  |  |  | '.%2FclassA.php',INCLUDE
8 | 1 | NOP |  |  |  |
13 | 2 | ASSIGN |  |  |  | !0,'foo'
15 | 3 | ZEND_FETCH_CLASS |  |  | :2 | 'A'
 | 4 | NEW |  |  | $3 | :2
 | 5 | DO_FCALL_BY_NAME |  | 0 |  |
 | 6 | ASSIGN |  |  |  | !1,$3
16 | 7 | FETCH_OBJ_R |  |  | $6 | !1,'num'
 | 8 | PRINT |  |  | ~7 | $6
 | 9 | FREE |  |  |  | ~7
17 | 10 | INIT_FCALL_BY_NAME |  |  |  | !0
 | 11 | FETCH_OBJ_FUNC_ARG |  |  | $8 | !1,'num'
 | 12 | SEND_VAR |  |  |  | $8
 | 13 | DO_FCALL_BY_NAME |  | 1 |  |
19 | 14 | RETURN |  |  |  | 1

Function name: foo

Compiled variables: !0=$x

line | # | op | fetch | ext | return | operands
8 | 0 | RECV |  |  |  | 1
10 | 1 | PRINT |  |  | ~0 | !0
 | 2 | FREE |  |  |  | ~0
11 | 3 | RETURN |  |  |  | null

Function name: foo

Compiled variables: !0=$x

line | # | op | fetch | ext | return | operands
8 | 0 | RECV |  |  |  | 1
10 | 1 | PRINT |  |  | ~0 | !0
 | 2 | FREE |  |  |  | ~0
11 | 3 | RETURN |  |  |  | null
FETCH_IS
FETCH_OBJ_IS
Opcode Descriptions and Examples


FETCH_OBJ_IS

PHP code

<?php
/*
 *
 * opcode number: 91
 * No sample PHP yet */
?>
FETCH_OBJ_FUNC_ARG
FETCH_OBJ_R
Opcode Descriptions and Examples


FETCH_OBJ_R

PHP code

<?php
/*
 * Fetch the "prop-name" property value of this object.  Read-only?
 * opcode number: 82
 */
$x = new A();
$a = 'x';
echo $$a->num;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$x, !1=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ZEND_FETCH_CLASS |  |  | :0 | 'A'
 | 1 | NEW |  |  | $1 | :0
 | 2 | DO_FCALL_BY_NAME |  | 0 |  |
 | 3 | ASSIGN |  |  |  | !0,$1
7 | 4 | ASSIGN |  |  |  | !1,'x'
8 | 5 | FETCH_R | local |  | $5 | !1
 | 6 | FETCH_OBJ_R |  |  | $6 | $5,'num'
 | 7 | ECHO |  |  |  | $6
9 | 8 | RETURN |  |  |  | 1
FETCH_OBJ_IS
FETCH_OBJ_RW
Opcode Descriptions and Examples


FETCH_OBJ_RW

PHP code

<?php
/*
 * Fetch the "prop-name" property value of this object.
 * opcode number: 88
 */
$x = new A();
$a = 'x';
$$a->num++;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$x, !1=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ZEND_FETCH_CLASS |  |  | :0 | 'A'
 | 1 | NEW |  |  | $1 | :0
 | 2 | DO_FCALL_BY_NAME |  | 0 |  |
 | 3 | ASSIGN |  |  |  | !0,$1
7 | 4 | ASSIGN |  |  |  | !1,'x'
8 | 5 | FETCH_RW | local |  | $5 | !1
 | 6 | ZEND_POST_INC_OBJ |  |  | ~7 | $5,'num'
 | 7 | FREE |  |  |  | ~7
9 | 8 | RETURN |  |  |  | 1
FETCH_OBJ_R
FETCH_OBJ_UNSET
Opcode Descriptions and Examples


FETCH_OBJ_UNSET

PHP code

<?php
/*
 * Fetch a property of an object variable for the purpose of unset() operation.
 * opcode number: 97
 * No sample PHP yet */
?>
FETCH_OBJ_RW
FETCH_OBJ_W
Opcode Descriptions and Examples


FETCH_OBJ_W

PHP code

<?php
/*
 * Fetch an object from the property of this object and write to the property of the fectched object.
 * opcode number: 85
 */
$foo = new stdclass;
$foo->bar = new stdclass;
$foo->bar->baz = 'quix';
?>

PHP opcodes

Function name: (null)

Compiled variables: !0 = $foo

line | # | op | fetch | ext | return | operands
6 | 0 | ZEND_FETCH_CLASS |  | 4 | :0 | 'stdclass'
 | 1 | NEW |  |  |  | :0
 | 2 | DO_FCALL_BY_NAME |  | 0 |  |
 | 3 | ASSIGN |  |  |  | !0
7 | 4 | ZEND_FETCH_CLASS |  | 4 | :5 | 'stdclass'
 | 5 | NEW |  |  |  | :5
 | 6 | DO_FCALL_BY_NAME |  | 0 |  |
 | 7 | ZEND_ASSIGN_OBJ |  |  |  | !0, 'bar'
 | 8 | ZEND_OP_DATA |  |  |  |
8 | 9 | FETCH_OBJ_W |  |  |  | !0, 'bar'
 | 10 | ZEND_ASSIGN_OBJ |  |  |  | 'baz'
 | 11 | ZEND_OP_DATA |  |  |  | 'quix'
9 | 12 | RETURN |  |  |  | 1
FETCH_OBJ_UNSET
FETCH_R
Opcode Descriptions and Examples


FETCH_R

PHP code

<?php
/*
 * Fetch the value of the varible of "name" to assign it to a variable?  Read-only?
 * opcode number: 80
 */
$x = 1;
$a = 'x';
echo $$a;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$x, !1=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN |  |  |  | !0,1
7 | 1 | ASSIGN |  |  |  | !1,'x'
8 | 2 | FETCH_R | local |  | $2 | !1
 | 3 | ECHO |  |  |  | $2
9 | 4 | RETURN |  |  |  | 1
FETCH_OBJ_W
FETCH_RW
Opcode Descriptions and Examples


FETCH_RW

PHP code

<?php
/*
 * Fetch the value of the varible of "name" to assign it to a variable?
 * opcode number: 86
 */
$x = 1;
$a = 'x';
$$a++;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$x, !1=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN |  |  |  | !0,1
7 | 1 | ASSIGN |  |  |  | !1,'x'
8 | 2 | FETCH_RW | local |  | $2 | !1
 | 3 | POST_INC |  |  | ~3 | $2
 | 4 | FREE |  |  |  | ~3
9 | 5 | RETURN |  |  |  | 1
FETCH_R
FETCH_UNSET
Opcode Descriptions and Examples


FETCH_UNSET

PHP code

<?php
/*
 * Fetch a variable for the purpose of unset() operation.
 * opcode number: 95
 * No sample PHP yet */
?>
FETCH_RW
FETCH_W
Opcode Descriptions and Examples


FETCH_W

PHP code

<?php
/*
 * Fetch the value of the varible of "name" to assign it to a variable?  Write-only?
 * opcode number: 83
 */
$x = 1;
$a = 'x';
$$a = 2;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$x, !1=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN |  |  |  | !0,1
7 | 1 | ASSIGN |  |  |  | !1,'x'
8 | 2 | FETCH_W | local |  | $2 | !1
 | 3 | ASSIGN |  |  |  | $2,2
9 | 4 | RETURN |  |  |  | 1
FETCH_UNSET
FREE
Opcode Descriptions and Examples


FREE

PHP code

<?php
/*
 * Release the allocated space of the value.
 * opcode number: 70
 */
 print "Hello World";
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | PRINT |  |  | ~0 | 'Hello+World'
 | 1 | FREE |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
FETCH_W
GOTO
Opcode Descriptions and Examples


GOTO

PHP code

<?php
/*
 *
 * opcode number: 100
 * No sample PHP yet */
?>
FREE
HANDLE_EXCEPTION
Opcode Descriptions and Examples


HANDLE_EXCEPTION

PHP code

<?php
/*
 *
 * opcode number: 149
 */
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | RETURN |  |  |  | 1
GOTO
INCLUDE_OR_EVAL
Opcode Descriptions and Examples


INCLUDE_OR_EVAL

PHP code

<?php
/*
 * Include the file specified by filename and eval it.
 * opcode number: 73
 */
include("test.php");
eval("test.php");
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | INCLUDE_OR_EVAL |  |  |  | 'test.php',INCLUDE
7 | 1 | INCLUDE_OR_EVAL |  |  |  | 'test.php',EVAL
8 | 2 | RETURN |  |  |  | 1

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
2 | 0 | DO_FCALL |  | 0 |  | 'phpinfo'
3 | 1 | RETURN |  |  |  | 1
HANDLE_EXCEPTION
INIT_ARRAY
Opcode Descriptions and Examples


INIT_ARRAY

PHP code

<?php
/*
 * Allocate a new array with elem-value as the first element of the array.  Followed by ADD_ARRAY_ELEMENT.
 * opcode number: 71
 */
$a = array(1,2,3);
print_r($a);
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | INIT_ARRAY |  |  | ~0 | 1
 | 1 | ADD_ARRAY_ELEMENT |  |  | ~0 | 2
 | 2 | ADD_ARRAY_ELEMENT |  |  | ~0 | 3
 | 3 | ASSIGN |  |  |  | !0,~0
7 | 4 | SEND_VAR |  |  |  | !0
 | 5 | DO_FCALL |  | 1 |  | 'print_r'
8 | 6 | RETURN |  |  |  | 1
INCLUDE_OR_EVAL
INIT_FCALL_BY_NAME
Opcode Descriptions and Examples


INIT_FCALL_BY_NAME

PHP code

<?php
/*
 * prepare for a function call to function value1
 * opcode number: 59
 */
$x = 'phpinfo';
$a = $x();
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$x, !1=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN |  |  |  | !0,'phpinfo'
7 | 1 | INIT_FCALL_BY_NAME |  |  |  | !0
 | 2 | DO_FCALL_BY_NAME |  | 0 |  |
 | 3 | ASSIGN |  |  |  | !1,$1
8 | 4 | RETURN |  |  |  | 1
INIT_ARRAY
INIT_METHOD_CALL
Opcode Descriptions and Examples


INIT_METHOD_CALL

PHP code

<?php
/*
 * Prepare for a method call.  Followed by DO_FCALL.
 * opcode number: 112
 */
class A {
  var $num;
    function incrementNum(){
    $num++;
  }
}

$obj = new A();
$obj->incrementNum();

?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$obj

line | # | op | fetch | ext | return | operands
6 | 0 | NOP |  |  |  |
13 | 1 | ZEND_FETCH_CLASS |  |  | :1 | 'A'
 | 2 | NEW |  |  | $2 | :1
 | 3 | DO_FCALL_BY_NAME |  | 0 |  |
 | 4 | ASSIGN |  |  |  | !0,$2
14 | 5 | ZEND_INIT_METHOD_CALL |  |  |  | !0,'incrementNum'
 | 6 | DO_FCALL_BY_NAME |  | 0 |  |
16 | 7 | RETURN |  |  |  | 1

Function name: incrementNum

Compiled variables: !0=$num

line | # | op | fetch | ext | return | operands
9 | 0 | POST_INC |  |  | ~0 | !0
 | 1 | FREE |  |  |  | ~0
10 | 2 | RETURN |  |  |  | null
INIT_FCALL_BY_NAME
INIT_NS_FCALL_BY_NAME
Opcode Descriptions and Examples


INIT_NS_FCALL_BY_NAME

PHP code

<?php
/*
 *
 * opcode number: 69
 * No sample PHP yet */
?>
INIT_METHOD_CALL
INIT_STATIC_METHOD_CALL
Opcode Descriptions and Examples


INIT_STATIC_METHOD_CALL

PHP code

<?php
/*
 *
 * opcode number: 113
 */
class Foo {
    public static function aStaticMethod() {
            echo "hello world\n";
    }
}

Foo::aStaticMethod();
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | NOP |  |  |  |
12 | 1 | ZEND_INIT_STATIC_METHOD_CALL |  |  |  | 'Foo','aStaticMethod'
 | 2 | ZEND_OP_DATA |  |  |  | 'foo%3A%3Aastaticmethod'
 | 3 | DO_FCALL_BY_NAME |  | 0 |  |
13 | 4 | RETURN |  |  |  | 1

Function name: aStaticMethod

Compiled variables: none

line | # | op | fetch | ext | return | operands
8 | 0 | ECHO |  |  |  | 'hello+world%0A'
9 | 1 | RETURN |  |  |  | null
INIT_NS_FCALL_BY_NAME
INIT_STRING
Opcode Descriptions and Examples


INIT_STRING

PHP code

<?php
/*
 * appears to create a string variable in result
 * opcode number: 53
 */
echo "hello$a world";
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ADD_STRING |  |  | ~0 | 'hello'
 | 1 | ADD_VAR |  |  | ~0 | ~0,!0
 | 2 | ADD_STRING |  |  | ~0 | ~0,'+world'
 | 3 | ECHO |  |  |  | ~0
7 | 4 | RETURN |  |  |  | 1
INIT_STATIC_METHOD_CALL
INSTANCEOF
Opcode Descriptions and Examples


INSTANCEOF

PHP code

<?php
/*
 *
 * opcode number: 138
 */
$obj = new A();

if ($obj instanceof A) {
   echo 'A';
}
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$obj

line | # | op | fetch | ext | return | operands
6 | 0 | ZEND_FETCH_CLASS |  |  | :0 | 'A'
 | 1 | NEW |  |  | $1 | :0
 | 2 | DO_FCALL_BY_NAME |  | 0 |  |
 | 3 | ASSIGN |  |  |  | !0,$1
8 | 4 | ZEND_FETCH_CLASS |  |  | :4 | 'A'
 | 5 | ZEND_INSTANCEOF |  |  | ~5 | !0,$4
 | 6 | JMPZ |  |  |  | ~5,->9
9 | 7 | ECHO |  |  |  | 'A'
10 | 8 | JMP |  |  |  | ->9
11 | 9 | RETURN |  |  |  | 1
INIT_STRING
IS_EQUAL
Opcode Descriptions and Examples


IS_EQUAL

PHP code

<?php
/*
 * compares if value1 and value2 are equal
 * opcode number: 17
 */
echo (1 == 1);
echo (1 == 'c');
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | IS_EQUAL |  |  | ~0 | 1,1
 | 1 | ECHO |  |  |  | ~0
7 | 2 | IS_EQUAL |  |  | ~1 | 1,'c'
 | 3 | ECHO |  |  |  | ~1
8 | 4 | RETURN |  |  |  | 1
INSTANCEOF
IS_IDENTICAL
Opcode Descriptions and Examples


IS_IDENTICAL

PHP code

<?php
/*
 * Compares value1 and value2 to see if they are equal AND have the same type
 * opcode number: 15
 */
echo (1===1);
echo (1==='a');
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | IS_IDENTICAL |  |  | ~0 | 1,1
 | 1 | ECHO |  |  |  | ~0
7 | 2 | IS_IDENTICAL |  |  | ~1 | 1,'a'
 | 3 | ECHO |  |  |  | ~1
8 | 4 | RETURN |  |  |  | 1
IS_EQUAL
IS_NOT_EQUAL
Opcode Descriptions and Examples


IS_NOT_EQUAL

PHP code

<?php
/*
 * compares if value1 and value2 are not equal
 * opcode number: 18
 */
echo (1 != 1);
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | IS_NOT_EQUAL |  |  | ~0 | 1,1
 | 1 | ECHO |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
IS_IDENTICAL
IS_NOT_IDENTICAL
Opcode Descriptions and Examples


IS_NOT_IDENTICAL

PHP code

<?php
/*
 * compares value1 and value2 to see if they are unequal or of different types
 * opcode number: 16
 */
echo (1 !== 1);
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | IS_NOT_IDENTICAL |  |  | ~0 | 1,1
 | 1 | ECHO |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
IS_NOT_EQUAL
IS_SMALLER
Opcode Descriptions and Examples


IS_SMALLER

PHP code

<?php
/*
 * compares if value1 is less than value2
 * opcode number: 19
 */
echo (1 < 2);
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | IS_SMALLER |  |  | ~0 | 1,2
 | 1 | ECHO |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
IS_NOT_IDENTICAL
IS_SMALLER_OR_EQUAL
Opcode Descriptions and Examples


IS_SMALLER_OR_EQUAL

PHP code

<?php
/*
 * compares if value1 is less than or equal to value2
 * opcode number: 20
 */
echo (2 <= 1);
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | IS_SMALLER_OR_EQUAL |  |  | ~0 | 2,1
 | 1 | ECHO |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
IS_SMALLER
ISSET_ISEMPTY_DIM_OBJ
Opcode Descriptions and Examples


ISSET_ISEMPTY_DIM_OBJ

PHP code

<?php
/*
 * Tests if the entry of an array is set or not.
 * opcode number: 115
 */
if(isset($a[0])) return 0;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ZEND_ISSET_ISEMPTY_DIM_OBJ |  | 1 | ~0 | !0,0
 | 1 | JMPZ |  |  |  | ~0,->4
 | 2 | RETURN |  |  |  | 0
 | 3 | JMP |  |  |  | ->4
7 | 4 | RETURN |  |  |  | 1
IS_SMALLER_OR_EQUAL
ISSET_ISEMPTY_PROP_OBJ
Opcode Descriptions and Examples


ISSET_ISEMPTY_PROP_OBJ

PHP code

<?php
/*
 *
 * opcode number: 148
 */
$obj = new A();
if(empty($obj->num)) return 0;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$obj

line | # | op | fetch | ext | return | operands
6 | 0 | ZEND_FETCH_CLASS |  |  | :0 | 'A'
 | 1 | NEW |  |  | $1 | :0
 | 2 | DO_FCALL_BY_NAME |  | 0 |  |
 | 3 | ASSIGN |  |  |  | !0,$1
7 | 4 | ZEND_ISSET_ISEMPTY_PROP_OBJ |  |  | ~4 | !0,'num'
 | 5 | JMPZ |  |  |  | ~4,->8
 | 6 | RETURN |  |  |  | 0
 | 7 | JMP |  |  |  | ->8
8 | 8 | RETURN |  |  |  | 1
ISSET_ISEMPTY_DIM_OBJ
ISSET_ISEMPTY_VAR
Opcode Descriptions and Examples


ISSET_ISEMPTY_VAR

PHP code

<?php
/*
 * Tests if the value of a variable is set or not.
 * opcode number: 114
 */
if(isset($a)){ return 0;}
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ZEND_ISSET_ISEMPTY_VAR |  | 5 | ~0 | !0
 | 1 | JMPZ |  |  |  | ~0,->4
 | 2 | RETURN |  |  |  | 0
 | 3 | JMP |  |  |  | ->4
7 | 4 | RETURN |  |  |  | 1
ISSET_ISEMPTY_PROP_OBJ
JMP
Opcode Descriptions and Examples


JMP

PHP code

<?php
/*
 * Unconditonally jump to the address
 * opcode number: 42
 */
$foo = false;
while(!$foo) {
    $foo = true;
}
?>

PHP opcodes

Function name: (null)

compiled vars: !0 = $foo

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN |  |  |  | !0, false
7 | 1 | BOOL_NOT |  |  | ~1 | !0
 | 2 | JMPZ |  |  |  | ~1, ->5
8 | 3 | ASSIGN |  |  |  | !0, true
9 | 4 | JMP |  |  |  | ->1
11 | 5 | RETURN |  |  |  | 1
ISSET_ISEMPTY_VAR
JMPNZ
Opcode Descriptions and Examples


JMPNZ

PHP code

<?php
/*
 * Jump to the address if the value is not zero
 * opcode number: 44
 */
for($i=0; $i<3; $i++){
    echo "hi";
}
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$i

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN |  |  |  | !0,0
 | 1 | IS_SMALLER |  |  | ~1 | !0,3
 | 2 | JMPZNZ |  | 6 |  | ~1,->8
 | 3 | POST_INC |  |  | ~2 | !0
 | 4 | FREE |  |  |  | ~2
 | 5 | JMP |  |  |  | ->1
7 | 6 | ECHO |  |  |  | 'hi'
8 | 7 | JMP |  |  |  | ->3
9 | 8 | RETURN |  |  |  | 1
JMP
JMPNZ_EX
Opcode Descriptions and Examples


JMPNZ_EX

PHP code

<?php
/*
 * Jump to the address if the xor of value1 and value2 is zero .. ???
 * opcode number: 47
 */
if(1^2) return;
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | BW_XOR |  |  | ~0 | 1,2
 | 1 | JMPZ |  |  |  | ~0,->4
 | 2 | RETURN |  |  |  | null
 | 3 | JMP |  |  |  | ->4
7 | 4 | RETURN |  |  |  | 1
JMPNZ
JMPZ
Opcode Descriptions and Examples


JMPZ

PHP code

<?php
/*
 * Jump to the address if the value is zero
 * opcode number: 43
 */
if($a != 0) echo "foo";
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | IS_NOT_EQUAL |  |  | ~0 | !0,0
 | 1 | JMPZ |  |  |  | ~0,->4
 | 2 | ECHO |  |  |  | 'foo'
 | 3 | JMP |  |  |  | ->4
7 | 4 | RETURN |  |  |  | 1
JMPNZ_EX
JMPZ_EX
Opcode Descriptions and Examples


JMPZ_EX

PHP code

<?php
/*
 * Jump to the address if the xor of value1 and value2 is zero .. ???
 * opcode number: 46
 */

?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
7 | 0 | RETURN |  |  |  | 1
JMPZ
JMPZNZ
Opcode Descriptions and Examples


JMPZNZ

PHP code

<?php
/*
 * Jump to the address given in the operands if the value is zero;
 * jump to the address given in extended data if nonzero.
 * opcode number: 45
 */
for($i=0; $i<3; $i++){
    echo "hi";
}
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$i

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN |  |  |  | !0,0
 | 1 | IS_SMALLER |  |  | ~1 | !0,3
 | 2 | JMPZNZ |  | 6 |  | ~1,->8
 | 3 | POST_INC |  |  | ~2 | !0
 | 4 | FREE |  |  |  | ~2
 | 5 | JMP |  |  |  | ->1
7 | 6 | ECHO |  |  |  | 'hi'
8 | 7 | JMP |  |  |  | ->3
9 | 8 | RETURN |  |  |  | 1
JMPZ_EX
MOD
Opcode Descriptions and Examples


MOD

PHP code

<?php
/*
 * Makes the value of "result" congruent to "value1" modulo "value2".
 * opcode number: 5
 */
echo 6 % 3;
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | MOD |  |  | ~0 | 6,3
 | 1 | ECHO |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
JMPZNZ
MUL
Opcode Descriptions and Examples


MUL

PHP code

<?php
/*
 * Multiplys "value1" by "value2" and stores the result into "result".
 * opcode number: 3
 */
echo 2*3;
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | MUL |  |  | ~0 | 2,3
 | 1 | ECHO |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
MOD
NEW
Opcode Descriptions and Examples


NEW

PHP code

<?php
/*
 * Construct an instance of "type" and store the reference to the object into "result".
 * opcode number: 68
 */
$obj = new A();
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$obj

line | # | op | fetch | ext | return | operands
6 | 0 | ZEND_FETCH_CLASS |  |  | :0 | 'A'
 | 1 | NEW |  |  | $1 | :0
 | 2 | DO_FCALL_BY_NAME |  | 0 |  |
 | 3 | ASSIGN |  |  |  | !0,$1
7 | 4 | RETURN |  |  |  | 1
MUL
NOP
Opcode Descriptions and Examples


NOP

PHP code

<?php
/*
 * no operation
 * opcode number: 0
 */
function A(){};
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | NOP |  |  |  |
7 | 1 | RETURN |  |  |  | 1

Function name: A

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | RETURN |  |  |  | null
NEW
POST_DEC
Opcode Descriptions and Examples


POST_DEC

PHP code

<?php
/*
 * decrements variable indicated by value1 by 1 (after performing other operations) and stores in result
 * opcode number: 37
 */
$a--;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | POST_DEC |  |  | ~0 | !0
 | 1 | FREE |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
NOP
POST_DEC_OBJ
Opcode Descriptions and Examples


POST_DEC_OBJ

PHP code

<?php
/*
 *
 * opcode number: 135
 */
$obj = new A();
$obj->num--;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$obj

line | # | op | fetch | ext | return | operands
6 | 0 | ZEND_FETCH_CLASS |  |  | :0 | 'A'
 | 1 | NEW |  |  | $1 | :0
 | 2 | DO_FCALL_BY_NAME |  | 0 |  |
 | 3 | ASSIGN |  |  |  | !0,$1
7 | 4 | ZEND_POST_DEC_OBJ |  |  | ~5 | !0,'num'
 | 5 | FREE |  |  |  | ~5
8 | 6 | RETURN |  |  |  | 1
POST_DEC
POST_INC
Opcode Descriptions and Examples


POST_INC

PHP code

<?php
/*
 * increments variable indicated by value1 by 1 (after performing other operations) and stores in result
 * opcode number: 36
 */
$a++;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | POST_INC |  |  | ~0 | !0
 | 1 | FREE |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
POST_DEC_OBJ
POST_INC_OBJ
Opcode Descriptions and Examples


POST_INC_OBJ

PHP code

<?php
/*
 * Increment the property value specified by prop-name and store the original value into result.
 * opcode number: 134
 */
$obj = new A();
$obj->num++;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$obj

line | # | op | fetch | ext | return | operands
6 | 0 | ZEND_FETCH_CLASS |  |  | :0 | 'A'
 | 1 | NEW |  |  | $1 | :0
 | 2 | DO_FCALL_BY_NAME |  | 0 |  |
 | 3 | ASSIGN |  |  |  | !0,$1
7 | 4 | ZEND_POST_INC_OBJ |  |  | ~5 | !0,'num'
 | 5 | FREE |  |  |  | ~5
8 | 6 | RETURN |  |  |  | 1
POST_INC
PRE_DEC
Opcode Descriptions and Examples


PRE_DEC

PHP code

<?php
/*
 * decrements variable indicated by value1 by 1 (before performing other operations) and stores in results
 * opcode number: 35
 */
--$a;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | PRE_DEC |  |  |  | !0
7 | 1 | RETURN |  |  |  | 1
POST_INC_OBJ
PRE_DEC_OBJ
Opcode Descriptions and Examples


PRE_DEC_OBJ

PHP code

<?php
/*
 *
 * opcode number: 133
 */
$obj = new A();
--$obj->num;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$obj

line | # | op | fetch | ext | return | operands
6 | 0 | ZEND_FETCH_CLASS |  |  | :0 | 'A'
 | 1 | NEW |  |  | $1 | :0
 | 2 | DO_FCALL_BY_NAME |  | 0 |  |
 | 3 | ASSIGN |  |  |  | !0,$1
7 | 4 | ZEND_PRE_DEC_OBJ |  |  |  | !0,'num'
8 | 5 | RETURN |  |  |  | 1
PRE_DEC
PRE_INC
Opcode Descriptions and Examples


PRE_INC

PHP code

<?php
/*
 * increments variable indicated by value1 by 1 (before performing other operations) and stores in result
 * opcode number: 34
 */
++$a;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | PRE_INC |  |  |  | !0
7 | 1 | RETURN |  |  |  | 1
PRE_DEC_OBJ
PRE_INC_OBJ
Opcode Descriptions and Examples


PRE_INC_OBJ

PHP code

<?php
/*
 *
 * opcode number: 132
 */
$obj = new A();
++$obj->num;
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$obj

line | # | op | fetch | ext | return | operands
6 | 0 | ZEND_FETCH_CLASS |  |  | :0 | 'A'
 | 1 | NEW |  |  | $1 | :0
 | 2 | DO_FCALL_BY_NAME |  | 0 |  |
 | 3 | ASSIGN |  |  |  | !0,$1
7 | 4 | ZEND_PRE_INC_OBJ |  |  |  | !0,'num'
8 | 5 | RETURN |  |  |  | 1
PRE_INC
PRINT
Opcode Descriptions and Examples


PRINT

PHP code

<?php
/*
 *
 * opcode number: 41
 */
print "Hello World";
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | PRINT |  |  | ~0 | 'Hello+World'
 | 1 | FREE |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
PRE_INC_OBJ
QM_ASSIGN
Opcode Descriptions and Examples


QM_ASSIGN

PHP code

<?php
/*
 * Question Mark Assign, used twice inside a question mark assign to temporarily assign result as value1  (this is followed up with an ASSIGN bytecode)
 * opcode number: 22
 */
function A(){
 echo 1?2:3;
}

function B(){
 $b = 0;
 $a = $b > 1 ? 10: 11;
}
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | NOP |  |  |  |
10 | 1 | NOP |  |  |  |
14 | 2 | RETURN |  |  |  | 1

Function name: A

Compiled variables: none

line | # | op | fetch | ext | return | operands
7 | 0 | JMPZ |  |  |  | 1,->3
 | 1 | QM_ASSIGN |  |  | ~0 | 2
 | 2 | JMP |  |  |  | ->4
 | 3 | QM_ASSIGN |  |  | ~0 | 3
 | 4 | ECHO |  |  |  | ~0
8 | 5 | RETURN |  |  |  | null

Function name: B

Compiled variables: !0=$b, !1=$a

line | # | op | fetch | ext | return | operands
11 | 0 | ASSIGN |  |  |  | !0,0
12 | 1 | IS_SMALLER |  |  | ~1 | 1,!0
 | 2 | JMPZ |  |  |  | ~1,->5
 | 3 | QM_ASSIGN |  |  | ~2 | 10
 | 4 | JMP |  |  |  | ->6
 | 5 | QM_ASSIGN |  |  | ~2 | 11
 | 6 | ASSIGN |  |  |  | !1,~2
13 | 7 | RETURN |  |  |  | null
PRINT
RAISE_ABSTRACT_ERROR
Opcode Descriptions and Examples


RAISE_ABSTRACT_ERROR

PHP code

<?php
/*
 *
 * opcode number: 142
 */

abstract class fail {
    abstract function show();
}

class pass extends fail {
    function show() {
        echo "Call to function show()\n";
    }
}

$t2 = new pass();
$t2->show();

$t = new fail();
$t->show();

echo "Done\n"; // shouldn't be displayed
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$t2, !1=$t

line | # | op | fetch | ext | return | operands
7 | 0 | NOP |  |  |  |
11 | 1 | NOP |  |  |  |
 | 2 | NOP |  |  |  |
17 | 3 | ZEND_FETCH_CLASS |  |  | :3 | 'pass'
 | 4 | NEW |  |  | $4 | :3
 | 5 | DO_FCALL_BY_NAME |  | 0 |  |
 | 6 | ASSIGN |  |  |  | !0,$4
18 | 7 | ZEND_INIT_METHOD_CALL |  |  |  | !0,'show'
 | 8 | DO_FCALL_BY_NAME |  | 0 |  |
20 | 9 | ZEND_FETCH_CLASS |  |  | :9 | 'fail'
 | 10 | NEW |  |  | $10 | :9
 | 11 | DO_FCALL_BY_NAME |  | 0 |  |
 | 12 | ASSIGN |  |  |  | !1,$10
21 | 13 | ZEND_INIT_METHOD_CALL |  |  |  | !1,'show'
 | 14 | DO_FCALL_BY_NAME |  | 0 |  |
23 | 15 | ECHO |  |  |  | 'Done%0A'
24 | 16 | RETURN |  |  |  | 1

Function name: show

Compiled variables: none

line | # | op | fetch | ext | return | operands
8 | 0 | ZEND_RAISE_ABSTRACT_ERROR |  |  |  |
 | 1 | RETURN |  |  |  | null

Function name: show

Compiled variables: none

line | # | op | fetch | ext | return | operands
13 | 0 | ECHO |  |  |  | 'Call+to+function+show%28%29%0A'
14 | 1 | RETURN |  |  |  | null
QM_ASSIGN
RECV
Opcode Descriptions and Examples


RECV

PHP code

<?php
/*
 * Receive a functoin argument of "argument-number" and store the argument value into a variable of "argument-number".  (e.g. $1 for 1)
 * opcode number: 63
 */
function hello($a){}
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | NOP |  |  |  |
7 | 1 | RETURN |  |  |  | 1

Function name: hello

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | RECV |  |  |  | 1
 | 1 | RETURN |  |  |  | null
RAISE_ABSTRACT_ERROR
RECV_INIT
Opcode Descriptions and Examples


RECV_INIT

PHP code

<?php
/*
 * Initialize a function argument with "value" if not received from caller.  Otherwise same as RECV.
 * opcode number: 64
 */
function hello($a=5){}
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | NOP |  |  |  |
7 | 1 | RETURN |  |  |  | 1

Function name: hello

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | RECV_INIT |  |  |  | 1,5
 | 1 | RETURN |  |  |  | null
RECV
RETURN
Opcode Descriptions and Examples


RETURN

PHP code

<?php
/*
 * Return value from a funciton.
 * opcode number: 62
 */
return 1;
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | RETURN |  |  |  | 1
7 | 1 | RETURN |  |  |  | 1
RECV_INIT
RETURN_BY_REF
Opcode Descriptions and Examples


RETURN_BY_REF

PHP code

<?php
/*
 *
 * opcode number: 111
 * No sample PHP yet */
?>
RETURN
SEND_REF
Opcode Descriptions and Examples


SEND_REF

PHP code

<?php
/*
 * Pass the reference value as an actual parameter to a function.  DO_FCALL follows.
 * opcode number: 67
 */
@each($input);
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | BEGIN_SILENCE |  |  | ~0 |
 | 1 | FETCH_W | local |  | $1 | 'input'
 | 2 | SEND_REF |  |  |  | $1
 | 3 | DO_FCALL |  | 1 |  | 'each'
 | 4 | END_SILENCE |  |  |  | ~0
7 | 5 | RETURN |  |  |  | 1
RETURN_BY_REF
SEND_VAL
Opcode Descriptions and Examples


SEND_VAL

PHP code

<?php
/*
 * Pass the constant value as an actual parameter to a function.  DO_FCALL follows.
 * opcode number: 65
 */
function funcA($msg){
    print $msg;
}

funcA('HELLO');

defined('IN_PHPBB');
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | NOP |  |  |  |
10 | 1 | SEND_VAL |  |  |  | 'HELLO'
 | 2 | DO_FCALL |  | 1 |  | 'funca'
12 | 3 | SEND_VAL |  |  |  | 'IN_PHPBB'
 | 4 | DO_FCALL |  | 1 |  | 'defined'
13 | 5 | RETURN |  |  |  | 1

Function name: funcA

Compiled variables: !0=$msg

line | # | op | fetch | ext | return | operands
6 | 0 | RECV |  |  |  | 1
7 | 1 | PRINT |  |  | ~0 | !0
 | 2 | FREE |  |  |  | ~0
8 | 3 | RETURN |  |  |  | null
SEND_REF
SEND_VAR
Opcode Descriptions and Examples


SEND_VAR

PHP code

<?php
/*
 * Pass the variable value as an actual parameter to a function.  DO_FCALL follows.
 * opcode number: 66
 */
$a = array(1,2,3);
if(is_array($a)){ return 0; }
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | INIT_ARRAY |  |  | ~0 | 1
 | 1 | ADD_ARRAY_ELEMENT |  |  | ~0 | 2
 | 2 | ADD_ARRAY_ELEMENT |  |  | ~0 | 3
 | 3 | ASSIGN |  |  |  | !0,~0
7 | 4 | SEND_VAR |  |  |  | !0
 | 5 | DO_FCALL |  | 1 |  | 'is_array'
 | 6 | JMPZ |  |  |  | $2,->9
 | 7 | RETURN |  |  |  | 0
 | 8 | JMP |  |  |  | ->9
8 | 9 | RETURN |  |  |  | 1
SEND_VAL
SEND_VAR_NO_REF
Opcode Descriptions and Examples


SEND_VAR_NO_REF

PHP code

<?php
/*
 *
 * opcode number: 106
 * No sample PHP yet */
?>
SEND_VAR
SL
Opcode Descriptions and Examples


SL

PHP code

<?php
/*
 * Shift bits of value1 to the left value2 steps (each step means "multiply by two")
 * opcode number: 6
 */
echo 8 << 2;
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | SL |  |  | ~0 | 8,2
 | 1 | ECHO |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
SEND_VAR_NO_REF
SR
Opcode Descriptions and Examples


SR

PHP code

<?php
/*
 * Shift bits of value1 to the right value2 steps (each step means "divide by two")
 * opcode number: 7
 */
echo 8 >> 2;
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | SR |  |  | ~0 | 8,2
 | 1 | ECHO |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
SL
SUB
Opcode Descriptions and Examples


SUB

PHP code

<?php
/*
 * Subtracts "value2" from "value1" and stores the result into "result".
 * opcode number: 2
 */
echo 1-2;
?>

PHP opcodes

Function name: (null)

Compiled variables: none

line | # | op | fetch | ext | return | operands
6 | 0 | SUB |  |  | ~0 | 1,2
 | 1 | ECHO |  |  |  | ~0
7 | 2 | RETURN |  |  |  | 1
SR
SWITCH_FREE
Opcode Descriptions and Examples


SWITCH_FREE

PHP code

<?php
/*
 * Release the allocated space of "value"?
 * opcode number: 49
 */
$a = array(1,2,3);
foreach($a as $num){
    print $num;
}
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a, !1=$num

line | # | op | fetch | ext | return | operands
6 | 0 | INIT_ARRAY |  |  | ~0 | 1
 | 1 | ADD_ARRAY_ELEMENT |  |  | ~0 | 2
 | 2 | ADD_ARRAY_ELEMENT |  |  | ~0 | 3
 | 3 | ASSIGN |  |  |  | !0,~0
7 | 4 | FE_RESET |  |  | $2 | !0,->11
 | 5 | FE_FETCH |  |  | $3 | $2,->11
 | 6 | ZEND_OP_DATA |  |  |  |
 | 7 | ASSIGN |  |  |  | !1,$3
8 | 8 | PRINT |  |  | ~5 | !1
 | 9 | FREE |  |  |  | ~5
9 | 10 | JMP |  |  |  | ->5
 | 11 | SWITCH_FREE |  |  |  | $2
10 | 12 | RETURN |  |  |  | 1
SUB
THROW
Opcode Descriptions and Examples


THROW

PHP code

<?php
/*
 *
 * opcode number: 108
 */
try {
    $error = 'Always throw this error';
    throw new Exception($error);

    // Code following an exception is not executed.
    echo 'Never executed';

} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

// Continue execution
echo 'Hello World';
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$error, !1=$e

line | # | op | fetch | ext | return | operands
7 | 0 | ASSIGN |  |  |  | !0,'Always+throw+this+error'
8 | 1 | ZEND_FETCH_CLASS |  |  | :1 | 'Exception'
 | 2 | NEW |  |  | $2 | :1
 | 3 | SEND_VAR |  |  |  | !0
 | 4 | DO_FCALL_BY_NAME |  | 1 |  |
 | 5 | ZEND_THROW |  | 0 |  | $2
11 | 6 | ECHO |  |  |  | 'Never+executed'
13 | 7 | JMP |  |  |  | ->15
 | 8 | ZEND_FETCH_CLASS |  |  | :4 | 'Exception'
 | 9 | ZEND_CATCH |  | 15 |  | $4,!1
14 | 10 | ECHO |  |  |  | 'Caught+exception%3A+'
 | 11 | ZEND_INIT_METHOD_CALL |  |  |  | !1,'getMessage'
 | 12 | DO_FCALL_BY_NAME |  | 0 |  |
 | 13 | ECHO |  |  |  | $6
 | 14 | ECHO |  |  |  | '%0A'
18 | 15 | ECHO |  |  |  | 'Hello+World'
19 | 16 | RETURN |  |  |  | 1
SWITCH_FREE
TICKS
Opcode Descriptions and Examples


TICKS

PHP code

<?php
/*
 *
 * opcode number: 105
 */
// A function that records the time when it is called
function profile()
{
   echo "profile function is called\n";
}

// Set up a tick handler
register_tick_function("profile");

// Initialize the function before the declare block
profile();

// Run a block of code, throw a tick every 2nd statement
declare(ticks=2) {
   for ($x = 0; $x < 10; ++$x) {
         echo "hello world\n";
   }
}
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$x

line | # | op | fetch | ext | return | operands
7 | 0 | NOP |  |  |  |
13 | 1 | SEND_VAL |  |  |  | 'profile'
 | 2 | DO_FCALL |  | 1 |  | 'register_tick_function'
16 | 3 | DO_FCALL |  | 0 |  | 'profile'
20 | 4 | ASSIGN |  |  |  | !0,0
 | 5 | IS_SMALLER |  |  | ~3 | !0,10
 | 6 | JMPZNZ |  | 9 |  | ~3,->13
 | 7 | PRE_INC |  |  |  | !0
 | 8 | JMP |  |  |  | ->5
21 | 9 | ECHO |  |  |  | 'hello+world%0A'
 | 10 | TICKS |  |  |  | 2
22 | 11 | TICKS |  |  |  | 2
 | 12 | JMP |  |  |  | ->7
 | 13 | TICKS |  |  |  | 2
23 | 14 | TICKS |  |  |  | 2
24 | 15 | RETURN |  |  |  | 1

Function name: profile

Compiled variables: none

line | # | op | fetch | ext | return | operands
9 | 0 | ECHO |  |  |  | 'profile+function+is+called%0A'
10 | 1 | RETURN |  |  |  | null
THROW
UNSET_DIM
Opcode Descriptions and Examples


UNSET_DIM

PHP code

<?php
/*
 * Unset the entry of array-value, which is specified by index, and store the original element value into "result".
 * opcode number: 75
 */
$a = array(1,2,3);
unset($a[0]);
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$a

line | # | op | fetch | ext | return | operands
6 | 0 | INIT_ARRAY |  |  | ~0 | 1
 | 1 | ADD_ARRAY_ELEMENT |  |  | ~0 | 2
 | 2 | ADD_ARRAY_ELEMENT |  |  | ~0 | 3
 | 3 | ASSIGN |  |  |  | !0,~0
7 | 4 | UNSET_DIM |  |  | $2 | !0,0
8 | 5 | RETURN |  |  |  | 1
TICKS
UNSET_OBJ
Opcode Descriptions and Examples


UNSET_OBJ

PHP code

<?php
/*
 * Unset the property of the current object (this) and store the original value into "result".
 * opcode number: 76
 */
$obj = new A();
unset($obj->num);
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$obj

line | # | op | fetch | ext | return | operands
6 | 0 | ZEND_FETCH_CLASS |  |  | :0 | 'A'
 | 1 | NEW |  |  | $1 | :0
 | 2 | DO_FCALL_BY_NAME |  | 0 |  |
 | 3 | ASSIGN |  |  |  | !0,$1
7 | 4 | UNSET_OBJ |  |  | $4 | !0,'num'
8 | 5 | RETURN |  |  |  | 1
UNSET_DIM
UNSET_VAR
Opcode Descriptions and Examples


UNSET_VAR

PHP code

<?php
/*
 * Unset the variable and store the original value into "result".
 * opcode number: 74
 */
$x = 1;
$a='x';
unset($$a);
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$x, !1=$a

line | # | op | fetch | ext | return | operands
6 | 0 | ASSIGN |  |  |  | !0,1
7 | 1 | ASSIGN |  |  |  | !1,'x'
8 | 2 | UNSET_VAR |  |  | $2 | !1
9 | 3 | RETURN |  |  |  | 1
UNSET_OBJ
USER_OPCODE
Opcode Descriptions and Examples


USER_OPCODE

PHP code

<?php
/*
 *
 * opcode number: 150
 * No sample PHP yet */
?>
UNSET_VAR
VERIFY_ABSTRACT_CLASS
Opcode Descriptions and Examples


VERIFY_ABSTRACT_CLASS

PHP code

<?php
/*
 *
 * opcode number: 146
 * No sample PHP yet */
?>
USER_OPCODE
ZEND_DECLARE_LAMBDA_FUNCTION
Opcode Descriptions and Examples


ZEND_DECLARE_LAMBDA_FUNCTION

PHP code

<?php
/*
 *
 * opcode number: 153
 * No sample PHP yet */
?>
VERIFY_ABSTRACT_CLASS
ZEND_JMP_SET
Opcode Descriptions and Examples


ZEND_JMP_SET

PHP code

<?php
/*
 *
 * opcode number: 152
 * No sample PHP yet */
?>
ZEND_DECLARE_LAMBDA_FUNCTION
Zend Engine 1
Opcode Descriptions and Examples


Zend Engine 1

Table of Contents

  • 旧的介绍
  • Streams API for PHP Extension Authors
  • Zend API：深入 PHP 内核
  • TSRM API

Zend Engine 1是PHP 4所有版本使用的内部引擎。它的维护已停止，但是PHP 4仍然在被广泛使用中，所以老的 ZE1 文档原封不动的保留在此。

ZEND_JMP_SET
旧的介绍
PHP 核心：骇客指南


旧的介绍

如果你即将开始开发 PHP 或者 Zend 扩展，你需要为自己准备由各种 API 所提供的程序环境。文档这部分将试图介绍可用的PHP和Zend Engine的多种版本所提供的API。由于这其中大部分有效信息或多或少有些过时，所以除了手册之外，你还需要阅读PHP源码中的很多像README.SELF-CONTAINED-EXTENSIONS和README.EXT_SKEL这样的文件。

Zend Engine 1
Streams API for PHP Extension Authors
Zend Engine 1


Streams API for PHP Extension Authors

Note:

The functions in this chapter are for use in the PHP source code and are not PHP functions. Information on userland stream functions can be found in the Stream Reference.

Overview

The PHP Streams API introduces a unified approach to the handling of files and sockets in PHP extension. Using a single API with standard functions for common operations, the streams API allows your extension to access files, sockets, URLs, memory and script-defined objects. Streams is a run-time extensible API that allows dynamically loaded modules (and scripts!) to register new streams.

The aim of the Streams API is to make it comfortable for developers to open files, URLs and other streamable data sources with a unified API that is easy to understand. The API is more or less based on the ANSI C stdio family of functions (with identical semantics for most of the main functions), so C programmers will have a feeling of familiarity with streams.

The streams API operates on a couple of different levels: at the base level, the API defines php_stream objects to represent streamable data sources. On a slightly higher level, the API defines php_stream_wrapper objects which "wrap" around the lower level API to provide support for retrieving data and meta-data from URLs. An additional context parameter, accepted by most stream creation functions, is passed to the wrapper's stream_opener method to fine-tune the behavior of the wrapper.

Any stream, once opened, can also have any number of filters applied to it, which process data as it is read from/written to the stream.

Streams can be cast (converted) into other types of file-handles, so that they can be used with third-party libraries without a great deal of trouble. This allows those libraries to access data directly from URL sources. If your system has the fopencookie() or funopen() function, you can even pass any PHP stream to any library that uses ANSI stdio!

Streams Basics

Using streams is very much like using ANSI stdio functions. The main difference is in how you obtain the stream handle to begin with. In most cases, you will use php_stream_open_wrapper() to obtain the stream handle. This function works very much like fopen, as can be seen from the example below:

Example #1 simple stream example that displays the PHP home page

php_stream * stream = php_stream_open_wrapper("http://www.php.net", "rb", REPORT_ERRORS, NULL);
if (stream) {
    while(!php_stream_eof(stream)) {
        char buf[1024];

        if (php_stream_gets(stream, buf, sizeof(buf))) {
            printf(buf);
        } else {
            break;
        }
    }
    php_stream_close(stream);
}

The table below shows the Streams equivalents of the more common ANSI stdio functions. Unless noted otherwise, the semantics of the functions are identical.

ANSI stdio equivalent functions in the Streams API
ANSI Stdio Function | PHP Streams Function | Notes
fopen | php_stream_open_wrapper | Streams includes additional parameters
fclose | php_stream_close |
fgets | php_stream_gets |
fread | php_stream_read | The nmemb parameter is assumed to have a value of 1, so the prototype looks more like read(2)
fwrite | php_stream_write | The nmemb parameter is assumed to have a value of 1, so the prototype looks more like write(2)
fseek | php_stream_seek |
ftell | php_stream_tell |
rewind | php_stream_rewind |
feof | php_stream_eof |
fgetc | php_stream_getc |
fputc | php_stream_putc |
fflush | php_stream_flush |
puts | php_stream_puts | Same semantics as puts, NOT fputs
fstat | php_stream_stat | Streams has a richer stat structure

Streams as Resources

All streams are registered as resources when they are created. This ensures that they will be properly cleaned up even if there is some fatal error. All of the filesystem functions in PHP operate on streams resources - that means that your extensions can accept regular PHP file pointers as parameters to, and return streams from their functions. The streams API makes this process as painless as possible:

Example #2 How to accept a stream as a parameter

PHP_FUNCTION(example_write_hello)
{
    zval *zstream;
    php_stream *stream;

    if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zstream))
        return;

    php_stream_from_zval(stream, &zstream);

    /* you can now use the stream.  However, you do not "own" the
        stream, the script does.  That means you MUST NOT close the
        stream, because it will cause PHP to crash! */

    php_stream_write(stream, "hello\n");

    RETURN_TRUE();
}

Example #3 How to return a stream from a function

PHP_FUNCTION(example_open_php_home_page)
{
    php_stream *stream;

    stream = php_stream_open_wrapper("http://www.php.net", "rb", REPORT_ERRORS, NULL);

    php_stream_to_zval(stream, return_value);

    /* after this point, the stream is "owned" by the script.
        If you close it now, you will crash PHP! */
}

Since streams are automatically cleaned up, it's tempting to think that we can get away with being sloppy programmers and not bother to close the streams when we are done with them. Although such an approach might work, it is not a good idea for a number of reasons: streams hold locks on system resources while they are open, so leaving a file open after you have finished with it could prevent other processes from accessing it. If a script deals with a large number of files, the accumulation of the resources used, both in terms of memory and the sheer number of open files, can cause web server requests to fail. Sounds bad, doesn't it? The streams API includes some magic that helps you to keep your code clean - if a stream is not closed by your code when it should be, you will find some helpful debugging information in you web server error log.

Note: Always use a debug build of PHP when developing an extension (--enable-debug when running configure), as a lot of effort has been made to warn you about memory and stream leaks.

In some cases, it is useful to keep a stream open for the duration of a request, to act as a log or trace file for example. Writing the code to safely clean up such a stream is not difficult, but it's several lines of code that are not strictly needed. To save yourself the trouble of writing the code, you can mark a stream as being OK for auto cleanup. What this means is that the streams API will not emit a warning when it is time to auto-cleanup a stream. To do this, you can use php_stream_auto_cleanup().

Streams open options

These constants affect the operation of stream factory functions.

IGNORE_PATH
This is the default option for streams; it requests that the include_path is not to be searched for the requested file.
USE_PATH
Requests that the include_path is to be searched for the requested file.
IGNORE_URL
Requests that registered URL wrappers are to be ignored when opening the stream. Other non-URL wrappers will be taken into consideration when decoding the path. There is no opposite form for this flag; the streams API will use all registered wrappers by default.
IGNORE_URL_WIN
On Windows systems, this is equivalent to IGNORE_URL. On all other systems, this flag has no effect.
ENFORCE_SAFE_MODE
Requests that the underlying stream implementation perform safe_mode checks on the file before opening the file. Omitting this flag will skip safe_mode checks and allow opening of any file that the PHP process has rights to access.
REPORT_ERRORS
If this flag is set, and there was an error during the opening of the file or URL, the streams API will call the php_error function for you. This is useful because the path may contain username/password information that should not be displayed in the browser output (it would be a security risk to do so). When the streams API raises the error, it first strips username/password information from the path, making the error message safe to display in the browser.
STREAM_MUST_SEEK
This flag is useful when your extension really must be able to randomly seek around in a stream. Some streams may not be seekable in their native form, so this flag asks the streams API to check to see if the stream does support seeking. If it does not, it will copy the stream into temporary storage (which may be a temporary file or a memory stream) which does support seeking. Please note that this flag is not useful when you want to seek the stream and write to it, because the stream you are accessing might not be bound to the actual resource you requested.

Note: If the requested resource is network based, this flag will cause the opener to block until the whole contents have been downloaded.

STREAM_WILL_CAST
If your extension is using a third-party library that expects a FILE* or file descriptor, you can use this flag to request the streams API to open the resource but avoid buffering. You can then use php_stream_cast() to retrieve the FILE* or file descriptor that the library requires. The is particularly useful when accessing HTTP URLs where the start of the actual stream data is found after an indeterminate offset into the stream. Since this option disables buffering at the streams API level, you may experience lower performance when using streams functions on the stream; this is deemed acceptable because you have told streams that you will be using the functions to match the underlying stream implementation. Only use this option when you are sure you need it.

旧的介绍
Zend API：深入 PHP 内核
Zend Engine 1


Zend API：深入 PHP 内核

Introduction

知者不言。

言者不知。

有时，看起来简单的PHP并不够用。尽管不够用的情况对普通的程序员很少见，而专业的程序员很快就能将PHP带到它的边界(瓶颈)，从性能或功能方面看。新的功能不是生来就能被实现，是因为程序语言固有的限制和复杂，当不得不附添加巨大的默认代码库到每个简单脚本上时，就会出现这些限制和麻烦，于是需要寻找另一种方式来克服PHP这些终极缺陷。

基于上述说法，是时候接触PHP的心脏并看看它的核心了，即让PHP运行的C代码。

Warning

这些信息现在已经过时，且其中一部分仅适用于在PHP 4早期版本中用到的ZendEngine 1.0 API。

更多新的信息能在PHP源码的各种README文件和Zend网站中的» Internals章节找到。

概述

"扩展PHP"说起来容易做起来难。PHP已经进化成一个日趋成熟的源码包几十兆大小的工具。要骇客如此复杂的一个系统，不得不学习和思考。构建本章内容时，我们最终选择了"在实战中学习"的方式。这不是最科学也不是最专业的方式，但是此方式最有趣，也得出了最好的最终结果。下面的部分，你将先快速的学习到，如何获得最基本的扩展，且这些扩展立即就可运行。然后你将学习到 Zend 的高级 API 功能，这种方式将不得不试图说明（ZEND API相关的）功能，设计，建议，技巧等等。以一言蔽之，在任何实战之前这样提供一个大框架的通览。尽管这是"较好"的方法，且没有垃圾hacks生成，但是这种学习方式很难并且费力又费时，这就是我们决定采用"在实战中学习"方式的原因。

注意到尽管本章内容试图尽可能多的说明PHP内部工作机制的知识，但是不可能真正给出任何情况任何时候都可用的PHP扩展的完全指导。因为PHP包是如此庞大复杂，以致你通过实战来使自己学习时,对它的内部工作机制仅仅可达到理解的程度。所以我们鼓励你跟着源码一起学习。

什么是 Zend ? 什么是 PHP ?

Zend是语言引擎，PHP内核。PHP是从外层展现的完整系统。咋一听似乎有点模糊不清，但是其实并不复杂( 看下面).为了实现一个 web 脚本解释器，你需要三个部分：

  1. 第一：解释器部分分析输入代码，翻译代码，然后执行代码。

  2. 第二：功能部分 完成语言的功能（函数，等等）。

  3. 第三：接口部分与web通信，等等。

Zend完全参与第一部分，部分参与第二部分；PHP参与第二部分和三部分.他们一起构成完整的PHP包。实际上Zend自己仅仅构成语言核心，用预定义函数实现 PHP 非常基础部分。而 PHP 包含所有的实际形成语言突出能力的所有模块。

以下部分将讨论PHP能在哪里扩展并如何扩展。

Extension Possibilities

As shown above, PHP can be extended primarily at three points: external modules, built-in modules, and the Zend engine. The following sections discuss these options.

External Modules

External modules can be loaded at script runtime using the function dl(). This function loads a shared object from disk and makes its functionality available to the script to which it's being bound. After the script is terminated, the external module is discarded from memory. This method has both advantages and disadvantages, as described in the following table:

Advantages | Disadvantages
External modules don't require recompiling of PHP. | The shared objects need to be loaded every time a script is being executed (every hit), which is very slow.
The size of PHP remains small by "outsourcing" certain functionality. | External additional files clutter up the disk.
 |  | Every script that wants to use an external module's functionality has to specifically include a call to dl(), or the extension tag in php.ini needs to be modified (which is not always a suitable solution).
To sum up, external modules are great for third-party products, small additions to PHP that are rarely used, or just for testing purposes. To develop additional functionality quickly, external modules provide the best results. For frequent usage, larger implementations, and complex code, the disadvantages outweigh the advantages.

Third parties might consider using the extension tag in php.ini to create additional external modules to PHP. These external modules are completely detached from the main package, which is a very handy feature in commercial environments. Commercial distributors can simply ship disks or archives containing only their additional modules, without the need to create fixed and solid PHP binaries that don't allow other modules to be bound to them.

Built-in Modules

Built-in modules are compiled directly into PHP and carried around with every PHP process; their functionality is instantly available to every script that's being run. Like external modules, built-in modules have advantages and disadvantages, as described in the following table:

Advantages | Disadvantages
No need to load the module specifically; the functionality is instantly available. | Changes to built-in modules require recompiling of PHP.
No external files clutter up the disk; everything resides in the PHP binary. | The PHP binary grows and consumes more memory.
Built-in modules are best when you have a solid library of functions that remains relatively unchanged, requires better than poor-to-average performance, or is used frequently by many scripts on your site. The need to recompile PHP is quickly compensated by the benefit in speed and ease of use. However, built-in modules are not ideal when rapid development of small additions is required.

The Zend Engine

Of course, extensions can also be implemented directly in the Zend engine. This strategy is good if you need a change in the language behavior or require special functions to be built directly into the language core. In general, however, modifications to the Zend engine should be avoided. Changes here result in incompatibilities with the rest of the world, and hardly anyone will ever adapt to specially patched Zend engines. Modifications can't be detached from the main PHP sources and are overridden with the next update using the "official" source repositories. Therefore, this method is generally considered bad practice and, due to its rarity, is not covered in this book.

Source Layout

Note:

Prior to working through the rest of this chapter, you should retrieve clean, unmodified source trees of your favorite Web server. We're working with Apache (available at » http://httpd.apache.org/) and, of course, with PHP (available at » http://www.php.net/ - does it need to be said?).

Make sure that you can compile a working PHP environment by yourself! We won't go into this issue here, however, as you should already have this most basic ability when studying this chapter.

Before we start discussing code issues, you should familiarize yourself with the source tree to be able to quickly navigate through PHP's files. This is a must-have ability to implement and debug extensions.

The following table describes the contents of the major directories.

Directory | Contents
php-src | Main PHP source files and main header files; here you'll find all of PHP's API definitions, macros, etc. (important). Everything else is below this directory.
php-src/ext | Repository for dynamic and built-in modules; by default, these are the "official" PHP modules that have been integrated into the main source tree. From PHP 4.0, it's possible to compile these standard extensions as dynamic loadable modules (at least, those that support it).
php-src/main | This directory contains the main php macros and definitions. (important)
php-src/pear | Directory for the PHP Extension and Application Repository. This directory contains core PEAR files.
php-src/sapi | Contains the code for the different server abstraction layers.
TSRM | Location of the "Thread Safe Resource Manager" (TSRM) for Zend and PHP.
ZendEngine2 | Location of the Zend Engine files; here you'll find all of Zend's API definitions, macros, etc. (important).

Discussing all the files included in the PHP package is beyond the scope of this chapter. However, you should take a close look at the following files:

  • php-src/main/php.h, located in the main PHP directory. This file contains most of PHP's macro and API definitions.

  • php-src/Zend/zend.h, located in the main Zend directory. This file contains most of Zend's macros and definitions.

  • php-src/Zend/zend_API.h, also located in the Zend directory, which defines Zend's API.

You should also follow some sub-inclusions from these files; for example, the ones relating to the Zend executor, the PHP initialization file support, and such. After reading these files, take the time to navigate around the package a little to see the interdependencies of all files and modules - how they relate to each other and especially how they make use of each other. This also helps you to adapt to the coding style in which PHP is authored. To extend PHP, you should quickly adapt to this style.

Extension Conventions

Zend is built using certain conventions; to avoid breaking its standards, you should follow the rules described in the following sections.

Macros

For almost every important task, Zend ships predefined macros that are extremely handy. The tables and figures in the following sections describe most of the basic functions, structures, and macros. The macro definitions can be found mainly in zend.h and zend_API.h. We suggest that you take a close look at these files after having studied this chapter. (Although you can go ahead and read them now, not everything will make sense to you yet.)

Memory Management

Resource management is a crucial issue, especially in server software. One of the most valuable resources is memory, and memory management should be handled with extreme care. Memory management has been partially abstracted in Zend, and you should stick to this abstraction for obvious reasons: Due to the abstraction, Zend gets full control over all memory allocations. Zend is able to determine whether a block is in use, automatically freeing unused blocks and blocks with lost references, and thus prevent memory leaks. The functions to be used are described in the following table:

Function | Description
emalloc() | Serves as replacement for malloc().
efree() | Serves as replacement for free().
estrdup() | Serves as replacement for strdup().
estrndup() | Serves as replacement for strndup(). Faster than estrdup() and binary-safe. This is the recommended function to use if you know the string length prior to duplicating it.
ecalloc() | Serves as replacement for calloc().
erealloc() | Serves as replacement for realloc().
emalloc(), estrdup(), estrndup(), ecalloc(), and erealloc() allocate internal memory; efree() frees these previously allocated blocks. Memory handled by the e*() functions is considered local to the current process and is discarded as soon as the script executed by this process is terminated.
Warning

To allocate resident memory that survives termination of the current script, you can use malloc() and free(). This should only be done with extreme care, however, and only in conjunction with demands of the Zend API; otherwise, you risk memory leaks.

Zend also features a thread-safe resource manager to provide better native support for multithreaded Web servers. This requires you to allocate local structures for all of your global variables to allow concurrent threads to be run. Because the thread-safe mode of Zend was not finished back when this was written, it is not yet extensively covered here.

Directory and File Functions

The following directory and file functions should be used in Zend modules. They behave exactly like their C counterparts, but provide virtual working directory support on the thread level.

Zend Function | Regular C Function
V_GETCWD() | getcwd()
V_FOPEN() | fopen()
V_OPEN() | open()
V_CHDIR() | chdir()
V_GETWD() | getwd()
V_CHDIR_FILE() | Takes a file path as an argument and changes the current working directory to that file's directory.
V_STAT() | stat()
V_LSTAT() | lstat()

String Handling

Strings are handled a bit differently by the Zend engine than other values such as integers, Booleans, etc., which don't require additional memory allocation for storing their values. If you want to return a string from a function, introduce a new string variable to the symbol table, or do something similar, you have to make sure that the memory the string will be occupying has previously been allocated, using the aforementioned e*() functions for allocation. (This might not make much sense to you yet; just keep it somewhere in your head for now - we'll get back to it shortly.)

Complex Types

Complex types such as arrays and objects require different treatment. Zend features a single API for these types - they're stored using hash tables.

Note:

To reduce complexity in the following source examples, we're only working with simple types such as integers at first. A discussion about creating more advanced types follows later in this chapter.

PHP's Automatic Build System

PHP 4 features an automatic build system that's very flexible. All modules reside in a subdirectory of the ext directory. In addition to its own sources, each module consists of a config.m4 file, for extension configuration. (for example, see » http://www.gnu.org/software/m4/)

All these stub files are generated automatically, along with .cvsignore, by a little shell script named ext_skel that resides in the ext directory. As argument it takes the name of the module that you want to create. The shell script then creates a directory of the same name, along with the appropriate stub files.

Step by step, the process looks like this:

:~/cvs/php4/ext:> ./ext_skel --extname=my_module
Creating directory my_module
Creating basic files: config.m4 .cvsignore my_module.c php_my_module.h CREDITS EXPERIMENTAL tests/001.phpt my_module.php [done].

To use your new extension, you will have to execute the following steps:

1.  $ cd ..
2.  $ vi ext/my_module/config.m4
3.  $ ./buildconf
4.  $ ./configure --[with|enable]-my_module
5.  $ make
6.  $ ./php -f ext/my_module/my_module.php
7.  $ vi ext/my_module/my_module.c
8.  $ make

Repeat steps 3-6 until you are satisfied with ext/my_module/config.m4 and
step 6 confirms that your module is compiled into PHP. Then, start writing
code and repeat the last two steps as often as necessary.
This instruction creates the aforementioned files. To include the new module in the automatic configuration and build process, you have to run buildconf, which regenerates the configure script by searching through the ext directory and including all found config.m4 files.

The default config.m4 shown in The default config.m4. is a bit more complex:

Example #1 The default config.m4.

dnl $Id: build.xml 297078 2010-03-29 16:25:51Z degeberg $
dnl config.m4 for extension my_module

dnl Comments in this file start with the string 'dnl'.
dnl Remove where necessary. This file will not work
dnl without editing.

dnl If your extension references something external, use with:

dnl PHP_ARG_WITH(my_module, for my_module support,
dnl Make sure that the comment is aligned:
dnl [  --with-my_module             Include my_module support])

dnl Otherwise use enable:

dnl PHP_ARG_ENABLE(my_module, whether to enable my_module support,
dnl Make sure that the comment is aligned:
dnl [  --enable-my_module           Enable my_module support])

if test "$PHP_MY_MODULE" != "no"; then
  dnl Write more examples of tests here...

  dnl # --with-my_module -> check with-path
  dnl SEARCH_PATH="/usr/local /usr"     # you might want to change this
  dnl SEARCH_FOR="/include/my_module.h"  # you most likely want to change this
  dnl if test -r $PHP_MY_MODULE/; then # path given as parameter
  dnl   MY_MODULE_DIR=$PHP_MY_MODULE
  dnl else # search default path list
  dnl   AC_MSG_CHECKING([for my_module files in default path])
  dnl   for i in $SEARCH_PATH ; do
  dnl     if test -r $i/$SEARCH_FOR; then
  dnl       MY_MODULE_DIR=$i
  dnl       AC_MSG_RESULT(found in $i)
  dnl     fi
  dnl   done
  dnl fi
  dnl
  dnl if test -z "$MY_MODULE_DIR"; then
  dnl   AC_MSG_RESULT([not found])
  dnl   AC_MSG_ERROR([Please reinstall the my_module distribution])
  dnl fi

  dnl # --with-my_module -> add include path
  dnl PHP_ADD_INCLUDE($MY_MODULE_DIR/include)

  dnl # --with-my_module -> chech for lib and symbol presence
  dnl LIBNAME=my_module # you may want to change this
  dnl LIBSYMBOL=my_module # you most likely want to change this

  dnl PHP_CHECK_LIBRARY($LIBNAME,$LIBSYMBOL,
  dnl [
  dnl   PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $MY_MODULE_DIR/lib, MY_MODULE_SHARED_LIBADD)
  dnl   AC_DEFINE(HAVE_MY_MODULELIB,1,[ ])
  dnl ],[
  dnl   AC_MSG_ERROR([wrong my_module lib version or lib not found])
  dnl ],[
  dnl   -L$MY_MODULE_DIR/lib -lm -ldl
  dnl ])
  dnl
  dnl PHP_SUBST(MY_MODULE_SHARED_LIBADD)

  PHP_NEW_EXTENSION(my_module, my_module.c, $ext_shared)
fi

If you're unfamiliar with M4 files (now is certainly a good time to get familiar), this might be a bit confusing at first; but it's actually quite easy.

Note: Everything prefixed with dnl is treated as a comment and is not parsed.

The config.m4 file is responsible for parsing the command-line options passed to configure at configuration time. This means that it has to check for required external files and do similar configuration and setup tasks.

The default file creates two configuration directives in the configure script: --with-my_module and --enable-my_module. Use the first option when referring external files (such as the --with-apache directive that refers to the Apache directory). Use the second option when the user simply has to decide whether to enable your extension. Regardless of which option you use, you should uncomment the other, unnecessary one; that is, if you're using --enable-my_module, you should remove support for --with-my_module, and vice versa.

By default, the config.m4 file created by ext_skel accepts both directives and automatically enables your extension. Enabling the extension is done by using the PHP_EXTENSION macro. To change the default behavior to include your module into the PHP binary when desired by the user (by explicitly specifying --enable-my_module or --with-my_module), change the test for $PHP_MY_MODULE to == "yes":

if test "$PHP_MY_MODULE" == "yes"; then dnl
    Action.. PHP_EXTENSION(my_module, $ext_shared)
    fi
This would require you to use --enable-my_module each time when reconfiguring and recompiling PHP.

Note: Be sure to run buildconf every time you change config.m4!

We'll go into more details on the M4 macros available to your configuration scripts later in this chapter. For now, we'll simply use the default files.

Creating Extensions

We'll start with the creation of a very simple extension at first, which basically does nothing more than implement a function that returns the integer it receives as parameter. A simple extension. shows the source.

Example #2 A simple extension.

/* include standard header */
#include "php.h"

/* declaration of functions to be exported */
ZEND_FUNCTION(first_module);

/* compiled function list so Zend knows what's in this module */
zend_function_entry firstmod_functions[] =
{
    ZEND_FE(first_module, NULL)
    ZEND_FE_END
};

/* compiled module information */
zend_module_entry firstmod_module_entry =
{
    STANDARD_MODULE_HEADER,
    "First Module",
    firstmod_functions,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NO_VERSION_YET,
    STANDARD_MODULE_PROPERTIES
};

/* implement standard "stub" routine to introduce ourselves to Zend */
#if COMPILE_DL_FIRST_MODULE
ZEND_GET_MODULE(firstmod)
#endif

/* implement function that is meant to be made available to PHP */
ZEND_FUNCTION(first_module)
{
    long parameter;

    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &parameter) == FAILURE) {
        return;
    }

    RETURN_LONG(parameter);
}

This code contains a complete PHP module. We'll explain the source code in detail shortly, but first we'd like to discuss the build process. (This will allow the impatient to experiment before we dive into API discussions.)

Note:

The example source makes use of some features introduced with the Zend version used in PHP 4.1.0 and above, it won't compile with older PHP 4.0.x versions.

Compiling Modules

There are basically two ways to compile modules:

  • Use the provided "make" mechanism in the ext directory, which also allows building of dynamic loadable modules.

  • Compile the sources manually.

The first method should definitely be favored, since, as of PHP 4.0, this has been standardized into a sophisticated build process. The fact that it is so sophisticated is also its drawback, unfortunately - it's hard to understand at first. We'll provide a more detailed introduction to this later in the chapter, but first let's work with the default files.

The second method is good for those who (for some reason) don't have the full PHP source tree available, don't have access to all files, or just like to juggle with their keyboard. These cases should be extremely rare, but for the sake of completeness we'll also describe this method.

Compiling Using Make

To compile the sample sources using the standard mechanism, copy all their subdirectories to the ext directory of your PHP source tree. Then run buildconf, which will create an updated configure script containing appropriate options for the new extension. By default, all the sample sources are disabled, so you don't have to fear breaking your build process.

After you run buildconf, configure --help shows the following additional modules:

  --enable-array_experiments   BOOK: Enables array experiments
  --enable-call_userland       BOOK: Enables userland module
  --enable-cross_conversion    BOOK: Enables cross-conversion module
  --enable-first_module        BOOK: Enables first module
  --enable-infoprint           BOOK: Enables infoprint module
  --enable-reference_test      BOOK: Enables reference test module
  --enable-resource_test       BOOK: Enables resource test module
  --enable-variable_creation   BOOK: Enables variable-creation module

The module shown earlier in A simple extension. can be enabled with --enable-first_module or --enable-first_module=yes.

Compiling Manually

To compile your modules manually, you need the following commands:

Action | Command
Compiling | cc -fpic -DCOMPILE_DL_FIRST_MODULE=1 -I/usr/local/include -I. -I.. -I../Zend -c -o <your_object_file> <your_c_file>
Linking | cc -shared -L/usr/local/lib -rdynamic -o <your_module_file> <your_object_file(s)>
The command to compile the module simply instructs the compiler to generate position-independent code (-fpic shouldn't be omitted) and additionally defines the constant COMPILE_DL_FIRST_MODULE to tell the module code that it's compiled as a dynamically loadable module (the test module above checks for this; we'll discuss it shortly). After these options, it specifies a number of standard include paths that should be used as the minimal set to compile the source files.

Note: All include paths in the example are relative to the directory ext. If you're compiling from another directory, change the pathnames accordingly. Required items are the PHP directory, the Zend directory, and (if necessary), the directory in which your module resides.

The link command is also a plain vanilla command instructing linkage as a dynamic module.

You can include optimization options in the compilation command, although these have been omitted in this example (but some are included in the makefile template described in an earlier section).

Note: Compiling and linking manually as a static module into the PHP binary involves very long instructions and thus is not discussed here. (It's not very efficient to type all those commands.)

Using Extensions

Depending on the build process you selected, you should either end up with a new PHP binary to be linked into your Web server (or run as CGI), or with an .so (shared object) file. If you compiled the example file first_module.c as a shared object, your result file should be first_module.so. To use it, you first have to copy it to a place from which it's accessible to PHP. For a simple test procedure, you can copy it to your htdocs directory and try it with the source in A test file for first_module.so.. If you compiled it into the PHP binary, omit the call to dl(), as the module's functionality is instantly available to your scripts.

Warning

For security reasons, you should not put your dynamic modules into publicly accessible directories. Even though it can be done and it simplifies testing, you should put them into a separate directory in production environments.

Example #3 A test file for first_module.so.

<?php

// remove next comment if necessary
// dl("first_module.so");

$param = 2;
$return = first_module($param);

print("We sent '$param' and got '$return'");

?>

Calling this PHP file should output the following:

We sent '2' and got '2'

If required, the dynamic loadable module is loaded by calling the dl() function. This function looks for the specified shared object, loads it, and makes its functions available to PHP. The module exports the function first_module(), which accepts a single parameter, converts it to an integer, and returns the result of the conversion.

If you've gotten this far, congratulations! You just built your first extension to PHP.

Troubleshooting

Actually, not much troubleshooting can be done when compiling static or dynamic modules. The only problem that could arise is that the compiler will complain about missing definitions or something similar. In this case, make sure that all header files are available and that you specified their path correctly in the compilation command. To be sure that everything is located correctly, extract a clean PHP source tree and use the automatic build in the ext directory with the fresh files; this will guarantee a safe compilation environment. If this fails, try manual compilation.

PHP might also complain about missing functions in your module. (This shouldn't happen with the sample sources if you didn't modify them.) If the names of external functions you're trying to access from your module are misspelled, they'll remain as "unlinked symbols" in the symbol table. During dynamic loading and linkage by PHP, they won't resolve because of the typing errors - there are no corresponding symbols in the main binary. Look for incorrect declarations in your module file or incorrectly written external references. Note that this problem is specific to dynamic loadable modules; it doesn't occur with static modules. Errors in static modules show up at compile time.

Source Discussion

Now that you've got a safe build environment and you're able to include the modules into PHP files, it's time to discuss how everything works.

Module Structure

All PHP modules follow a common structure:

  • Header file inclusions (to include all required macros, API definitions, etc.)

  • C declaration of exported functions (required to declare the Zend function block)

  • Declaration of the Zend function block

  • Declaration of the Zend module block

  • Implementation of get_module()

  • Implementation of all exported functions

Header File Inclusions

The only header file you really have to include for your modules is php.h, located in the PHP directory. This file makes all macros and API definitions required to build new modules available to your code.

Tip: It's good practice to create a separate header file for your module that contains module-specific definitions. This header file should contain all the forward definitions for exported functions and include php.h. If you created your module using ext_skel you already have such a header file prepared.

Declaring Exported Functions

To declare functions that are to be exported (i.e., made available to PHP as new native functions), Zend provides a set of macros. A sample declaration looks like this:

ZEND_FUNCTION ( my_function );

ZEND_FUNCTION declares a new C function that complies with Zend's internal API. This means that the function is of type void and accepts INTERNAL_FUNCTION_PARAMETERS (another macro) as parameters. Additionally, it prefixes the function name with zif. The immediately expanded version of the above definitions would look like this:

void zif_my_function ( INTERNAL_FUNCTION_PARAMETERS );
Expanding INTERNAL_FUNCTION_PARAMETERS results in the following:
void zif_my_function( int ht
                    , zval * return_value
                    , zval * this_ptr
                    , int return_value_used
                    , zend_executor_globals * executor_globals
                    );

Since the interpreter and executor core have been separated from the main PHP package, a second API defining macros and function sets has evolved: the Zend API. As the Zend API now handles quite a few of the responsibilities that previously belonged to PHP, a lot of PHP functions have been reduced to macros aliasing to calls into the Zend API. The recommended practice is to use the Zend API wherever possible, as the old API is only preserved for compatibility reasons. For example, the types zval and pval are identical. zval is Zend's definition; pval is PHP's definition (actually, pval is an alias for zval now). As the macro INTERNAL_FUNCTION_PARAMETERS is a Zend macro, the above declaration contains zval. When writing code, you should always use zval to conform to the new Zend API.

The parameter list of this declaration is very important; you should keep these parameters in mind (see Zend's Parameters to Functions Called from PHP for descriptions).

Zend's Parameters to Functions Called from PHP
Parameter | Description
ht | The number of arguments passed to the Zend function. You should not touch this directly, but instead use ZEND_NUM_ARGS() to obtain the value.
return_value | This variable is used to pass any return values of your function back to PHP. Access to this variable is best done using the predefined macros. For a description of these see below.
this_ptr | Using this variable, you can gain access to the object in which your function is contained, if it's used within an object. Use the function getThis() to obtain this pointer.
return_value_used | This flag indicates whether an eventual return value from this function will actually be used by the calling script. 0 indicates that the return value is not used; 1 indicates that the caller expects a return value. Evaluation of this flag can be done to verify correct usage of the function as well as speed optimizations in case returning a value requires expensive operations (for an example, see how array.c makes use of this).
executor_globals | This variable points to global settings of the Zend engine. You'll find this useful when creating new variables, for example (more about this later). The executor globals can also be introduced to your function by using the macro TSRMLS_FETCH().

Declaration of the Zend Function Block

Now that you have declared the functions to be exported, you also have to introduce them to Zend. Introducing the list of functions is done by using an array of zend_function_entry. This array consecutively contains all functions that are to be made available externally, with the function's name as it should appear in PHP and its name as defined in the C source. Internally, zend_function_entry is defined as shown in Internal declaration of zend_function_entry..

Example #4 Internal declaration of zend_function_entry.

typedef struct _zend_function_entry {
    char *fname;
    void (*handler)(INTERNAL_FUNCTION_PARAMETERS);
    unsigned char *func_arg_types;
} zend_function_entry;
Entry | Description
fname | Denotes the function name as seen in PHP (for example, fopen, mysql_connect, or, in our example, first_module).
handler | Pointer to the C function responsible for handling calls to this function. For example, see the standard macro INTERNAL_FUNCTION_PARAMETERS discussed earlier.
func_arg_types | Allows you to mark certain parameters so that they're forced to be passed by reference. You usually should set this to NULL.
In the example above, the declaration looks like this:
zend_function_entry firstmod_functions[] =
{
    ZEND_FE(first_module, NULL)
    ZEND_FE_END
};
You can see that the last entry in the list always has to be ZEND_FE_END. This marker has to be set for Zend to know when the end of the list of exported functions is reached.

The macro ZEND_FE (short for 'Zend Function Entry') simply expands to a structure entry in zend_function_entry. Note that these macros introduce a special naming scheme to your functions - your C functions will be prefixed with zif_, meaning that ZEND_FE(first_module) will refer to a C function zif_first_module(). If you want to mix macro usage with hand-coded entries (not a good practice), keep this in mind.

Tip: Compilation errors that refer to functions named zif_*() relate to functions defined with ZEND_FE.

Macros for Defining Functions shows a list of all the macros that you can use to define functions.

Macros for Defining Functions
Macro Name | Description
ZEND_FE(name, arg_types) | Defines a function entry of the name name in zend_function_entry. Requires a corresponding C function. arg_types needs to be set to NULL. This function uses automatic C function name generation by prefixing the PHP function name with zif_. For example, ZEND_FE("first_module", NULL) introduces a function first_module() to PHP and links it to the C function zif_first_module(). Use in conjunction with ZEND_FUNCTION.
ZEND_NAMED_FE(php_name, name, arg_types) | Defines a function that will be available to PHP by the name php_name and links it to the corresponding C function name. arg_types needs to be set to NULL. Use this function if you don't want the automatic name prefixing introduced by ZEND_FE. Use in conjunction with ZEND_NAMED_FUNCTION.
ZEND_FALIAS(name, alias, arg_types) | Defines an alias named alias for name. arg_types needs to be set to NULL. Doesn't require a corresponding C function; refers to the alias target instead.
PHP_FE(name, arg_types) | Old PHP API equivalent of ZEND_FE.
PHP_NAMED_FE(runtime_name, name, arg_types) | Old PHP API equivalent of ZEND_NAMED_FE.

Note: You can't use ZEND_FE in conjunction with PHP_FUNCTION, or PHP_FE in conjunction with ZEND_FUNCTION. However, it's perfectly legal to mix ZEND_FE and ZEND_FUNCTION with PHP_FE and PHP_FUNCTION when staying with the same macro set for each function to be declared. But mixing is not recommended; instead, you're advised to use the ZEND_* macros only.

Declaration of the Zend Module Block

This block is stored in the structure zend_module_entry and contains all necessary information to describe the contents of this module to Zend. You can see the internal definition of this module in Internal declaration of zend_module_entry..

Example #5 Internal declaration of zend_module_entry.

typedef struct _zend_module_entry zend_module_entry;

    struct _zend_module_entry {
    unsigned short size;
    unsigned int zend_api;
    unsigned char zend_debug;
    unsigned char zts;
    char *name;
    zend_function_entry *functions;
    int (*module_startup_func)(INIT_FUNC_ARGS);
    int (*module_shutdown_func)(SHUTDOWN_FUNC_ARGS);
    int (*request_startup_func)(INIT_FUNC_ARGS);
    int (*request_shutdown_func)(SHUTDOWN_FUNC_ARGS);
    void (*info_func)(ZEND_MODULE_INFO_FUNC_ARGS);
    char *version;

[ Rest of the structure is not interesting here ]

};
Entry | Description
size, zend_api, zend_debug and zts | Usually filled with the "STANDARD_MODULE_HEADER", which fills these four members with the size of the whole zend_module_entry, the ZEND_MODULE_API_NO, whether it is a debug build or normal build (ZEND_DEBUG) and if ZTS is enabled (USING_ZTS).
name | Contains the module name (for example, "File functions", "Socket functions", "Crypt", etc.). This name will show up in phpinfo(), in the section "Additional Modules."
functions | Points to the Zend function block, discussed in the preceding section.
module_startup_func | This function is called once upon module initialization and can be used to do one-time initialization steps (such as initial memory allocation, etc.). To indicate a failure during initialization, return FAILURE; otherwise, SUCCESS. To mark this field as unused, use NULL. To declare a function, use the macro ZEND_MINIT.
module_shutdown_func | This function is called once upon module shutdown and can be used to do one-time deinitialization steps (such as memory deallocation). This is the counterpart to module_startup_func(). To indicate a failure during deinitialization, return FAILURE; otherwise, SUCCESS. To mark this field as unused, use NULL. To declare a function, use the macro ZEND_MSHUTDOWN.
request_startup_func | This function is called once upon every page request and can be used to do one-time initialization steps that are required to process a request. To indicate a failure here, return FAILURE; otherwise, SUCCESS. Note: As dynamic loadable modules are loaded only on page requests, the request startup function is called right after the module startup function (both initialization events happen at the same time). To mark this field as unused, use NULL. To declare a function, use the macro ZEND_RINIT.
request_shutdown_func | This function is called once after every page request and works as counterpart to request_startup_func(). To indicate a failure here, return FAILURE; otherwise, SUCCESS. Note: As dynamic loadable modules are loaded only on page requests, the request shutdown function is immediately followed by a call to the module shutdown handler (both deinitialization events happen at the same time). To mark this field as unused, use NULL. To declare a function, use the macro ZEND_RSHUTDOWN.
info_func | When phpinfo() is called in a script, Zend cycles through all loaded modules and calls this function. Every module then has the chance to print its own "footprint" into the output page. Generally this is used to dump environmental or statistical information. To mark this field as unused, use NULL. To declare a function, use the macro ZEND_MINFO.
version | The version of the module. You can use NO_VERSION_YET if you don't want to give the module a version number yet, but we really recommend that you add a version string here. Such a version string can look like this (in chronological order): "2.5-dev", "2.5RC1", "2.5" or "2.5pl3".
Remaining structure elements | These are used internally and can be prefilled by using the macro STANDARD_MODULE_PROPERTIES_EX. You should not assign any values to them. Use STANDARD_MODULE_PROPERTIES_EX only if you use global startup and shutdown functions; otherwise, use STANDARD_MODULE_PROPERTIES directly.

In our example, this structure is implemented as follows:

zend_module_entry firstmod_module_entry =
{
    STANDARD_MODULE_HEADER,
    "First Module",
    firstmod_functions,
    NULL, NULL, NULL, NULL, NULL,
    NO_VERSION_YET,
    STANDARD_MODULE_PROPERTIES,
};
This is basically the easiest and most minimal set of values you could ever use. The module name is set to First Module, then the function list is referenced, after which all startup and shutdown functions are marked as being unused.

For reference purposes, you can find a list of the macros involved in declared startup and shutdown functions in Macros to Declare Startup and Shutdown Functions. These are not used in our basic example yet, but will be demonstrated later on. You should make use of these macros to declare your startup and shutdown functions, as these require special arguments to be passed (INIT_FUNC_ARGS and SHUTDOWN_FUNC_ARGS), which are automatically included into the function declaration when using the predefined macros. If you declare your functions manually and the PHP developers decide that a change in the argument list is necessary, you'll have to change your module sources to remain compatible.

Macros to Declare Startup and Shutdown Functions
Macro | Description
ZEND_MINIT(module) | Declares a function for module startup. The generated name will be zend_minit_<module> (for example, zend_minit_first_module). Use in conjunction with ZEND_MINIT_FUNCTION.
ZEND_MSHUTDOWN(module) | Declares a function for module shutdown. The generated name will be zend_mshutdown_<module> (for example, zend_mshutdown_first_module). Use in conjunction with ZEND_MSHUTDOWN_FUNCTION.
ZEND_RINIT(module) | Declares a function for request startup. The generated name will be zend_rinit_<module> (for example, zend_rinit_first_module). Use in conjunction with ZEND_RINIT_FUNCTION.
ZEND_RSHUTDOWN(module) | Declares a function for request shutdown. The generated name will be zend_rshutdown_<module> (for example, zend_rshutdown_first_module). Use in conjunction with ZEND_RSHUTDOWN_FUNCTION.
ZEND_MINFO(module) | Declares a function for printing module information, used when phpinfo() is called. The generated name will be zend_info_<module> (for example, zend_info_first_module). Use in conjunction with ZEND_MINFO_FUNCTION.

Creation of get_module()

This function is special to all dynamic loadable modules. Take a look at the creation via the ZEND_GET_MODULE macro first:

#if COMPILE_DL_FIRSTMOD
     ZEND_GET_MODULE(firstmod)
#endif

The function implementation is surrounded by a conditional compilation statement. This is needed since the function get_module() is only required if your module is built as a dynamic extension. By specifying a definition of COMPILE_DL_FIRSTMOD in the compiler command (see above for a discussion of the compilation instructions required to build a dynamic extension), you can instruct your module whether you intend to build it as a dynamic extension or as a built-in module. If you want a built-in module, the implementation of get_module() is simply left out.

get_module() is called by Zend at load time of the module. You can think of it as being invoked by the dl() call in your script. Its purpose is to pass the module information block back to Zend in order to inform the engine about the module contents.

If you don't implement a get_module() function in your dynamic loadable module, Zend will compliment you with an error message when trying to access it.

Implementation of All Exported Functions

Implementing the exported functions is the final step. The example function in first_module looks like this:

ZEND_FUNCTION(first_module)
{
    long parameter;

    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &parameter) == FAILURE) {
        return;
    }

    RETURN_LONG(parameter);
}
The function declaration is done using ZEND_FUNCTION, which corresponds to ZEND_FE in the function entry table (discussed earlier).

After the declaration, code for checking and retrieving the function's arguments, argument conversion, and return value generation follows (more on this later).

Summary

That's it, basically - there's nothing more to implementing PHP modules. Built-in modules are structured similarly to dynamic modules, so, equipped with the information presented in the previous sections, you'll be able to fight the odds when encountering PHP module source files.

Now, in the following sections, read on about how to make use of PHP's internals to build powerful extensions.

Accepting Arguments

One of the most important issues for language extensions is accepting and dealing with data passed via arguments. Most extensions are built to deal with specific input data (or require parameters to perform their specific actions), and function arguments are the only real way to exchange data between the PHP level and the C level. Of course, there's also the possibility of exchanging data using predefined global values (which is also discussed later), but this should be avoided by all means, as it's extremely bad practice.

PHP doesn't make use of any formal function declarations; this is why call syntax is always completely dynamic and never checked for errors. Checking for correct call syntax is left to the user code. For example, it's possible to call a function using only one argument at one time and four arguments the next time - both invocations are syntactically absolutely correct.

Determining the Number of Arguments

Since PHP doesn't have formal function definitions with support for call syntax checking, and since PHP features variable arguments, sometimes you need to find out with how many arguments your function has been called. You can use the ZEND_NUM_ARGS macro in this case. In previous versions of PHP, this macro retrieved the number of arguments with which the function has been called based on the function's hash table entry, ht, which is passed in the INTERNAL_FUNCTION_PARAMETERS list. As ht itself now contains the number of arguments that have been passed to the function, ZEND_NUM_ARGS has been stripped down to a dummy macro (see its definition in zend_API.h). But it's still good practice to use it, to remain compatible with future changes in the call interface. Note: The old PHP equivalent of this macro is ARG_COUNT.

The following code checks for the correct number of arguments:

if(ZEND_NUM_ARGS() != 2) WRONG_PARAM_COUNT;
If the function is not called with two arguments, it exits with an error message. The code snippet above makes use of the tool macro WRONG_PARAM_COUNT, which can be used to generate a standard error message like:
"Warning: Wrong parameter count for firstmodule() in /home/www/htdocs/firstmod.php on line 5"

This macro prints a default error message and then returns to the caller. Its definition can also be found in zend_API.h and looks like this:

ZEND_API void wrong_param_count(void);

#define WRONG_PARAM_COUNT { wrong_param_count(); return; }
As you can see, it calls an internal function named wrong_param_count() that's responsible for printing the warning. For details on generating customized error messages, see the later section "Printing Information."

Retrieving Arguments

Note: New parameter parsing API

This chapter documents the new Zend parameter parsing API introduced by Andrei Zmievski. It was introduced in the development stage between PHP 4.0.6 and 4.1.0.

Parsing parameters is a very common operation and it may get a bit tedious. It would also be nice to have standardized error checking and error messages. Since PHP 4.1.0, there is a way to do just that by using the new parameter parsing API. It greatly simplifies the process of receiving parameters, but it has a drawback in that it can't be used for functions that expect variable number of parameters. But since the vast majority of functions do not fall into those categories, this parsing API is recommended as the new standard way.

The prototype for parameter parsing function looks like this:

int zend_parse_parameters(int num_args TSRMLS_DC, char *type_spec, ...);
The first argument to this function is supposed to be the number of actual parameters passed to your function, so ZEND_NUM_ARGS() can be used for that. The second parameter should always be TSRMLS_CC macro. The third argument is a string that specifies the number and types of arguments your function is expecting, similar to how printf format string specifies the number and format of the output values it should operate on. And finally the rest of the arguments are pointers to variables which should receive the values from the parameters.

zend_parse_parameters() also performs type conversions whenever possible, so that you always receive the data in the format you asked for. Any type of scalar can be converted to another one, but conversions between complex types (arrays, objects, and resources) and scalar types are not allowed.

If the parameters could be obtained successfully and there were no errors during type conversion, the function will return SUCCESS, otherwise it will return FAILURE. The function will output informative error messages, if the number of received parameters does not match the requested number, or if type conversion could not be performed.

Here are some sample error messages:

Warning - ini_get_all() requires at most 1 parameter, 2 given
Warning - wddx_deserialize() expects parameter 1 to be string, array given
Of course each error message is accompanied by the filename and line number on which it occurs.

Here is the full list of type specifiers:

  • l - long

  • d - double

  • s - string (with possible null bytes) and its length

  • b - boolean

  • r - resource, stored in zval*

  • a - array, stored in zval*

  • o - object (of any class), stored in zval*

  • O - object (of class specified by class entry), stored in zval*

  • z - the actual zval*

The following characters also have a meaning in the specifier string:

  • | - indicates that the remaining parameters are optional. The storage variables corresponding to these parameters should be initialized to default values by the extension, since they will not be touched by the parsing function if the parameters are not passed.

  • / - the parsing function will call SEPARATE_ZVAL_IF_NOT_REF() on the parameter it follows, to provide a copy of the parameter, unless it's a reference.

  • ! - the parameter it follows can be of specified type or NULL (only applies to a, o, O, r, and z). If NULL value is passed by the user, the storage pointer will be set to NULL.

The best way to illustrate the usage of this function is through examples:

/* Gets a long, a string and its length, and a zval. */
long l;
char *s;
int s_len;
zval *param;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
                          "lsz", &l, &s, &s_len, &param) == FAILURE) {
    return;
}

/* Gets an object of class specified by my_ce, and an optional double. */
zval *obj;
double d = 0.5;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
                          "O|d", &obj, my_ce, &d) == FAILURE) {
    return;
}

/* Gets an object or null, and an array.
   If null is passed for object, obj will be set to NULL. */
zval *obj;
zval *arr;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O!a", &obj, &arr) == FAILURE) {
    return;
}

/* Gets a separated array. */
zval *arr;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a/", &arr) == FAILURE) {
    return;
}

/* Get only the first three parameters (useful for varargs functions). */
zval *z;
zend_bool b;
zval *r;
if (zend_parse_parameters(3, "zbr!", &z, &b, &r) == FAILURE) {
    return;
}

Note that in the last example we pass 3 for the number of received parameters, instead of ZEND_NUM_ARGS(). What this lets us do is receive the least number of parameters if our function expects a variable number of them. Of course, if you want to operate on the rest of the parameters, you will have to use zend_get_parameters_array_ex() to obtain them.

The parsing function has an extended version that allows for an additional flags argument that controls its actions.

int zend_parse_parameters_ex(int flags, int num_args TSRMLS_DC, char *type_spec, ...);

The only flag you can pass currently is ZEND_PARSE_PARAMS_QUIET, which instructs the function to not output any error messages during its operation. This is useful for functions that expect several sets of completely different arguments, but you will have to output your own error messages.

For example, here is how you would get either a set of three longs or a string:

long l1, l2, l3;
char *s;
if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
                             ZEND_NUM_ARGS() TSRMLS_CC,
                             "lll", &l1, &l2, &l3) == SUCCESS) {
    /* manipulate longs */
} else if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
                                    ZEND_NUM_ARGS(), "s", &s, &s_len) == SUCCESS) {
    /* manipulate string */
} else {
    php_error(E_WARNING, "%s() takes either three long values or a string as argument",
              get_active_function_name(TSRMLS_C));
    return;
}

With all the abovementioned ways of receiving function parameters you should have a good handle on this process. For even more example, look through the source code for extensions that are shipped with PHP - they illustrate every conceivable situation.

Old way of retrieving arguments (deprecated)

Note: Deprecated parameter parsing API

This API is deprecated and superseded by the new ZEND parameter parsing API.

After having checked the number of arguments, you need to get access to the arguments themselves. This is done with the help of zend_get_parameters_ex():

zval **parameter;

if(zend_get_parameters_ex(1, &parameter) != SUCCESS)
  WRONG_PARAM_COUNT;
All arguments are stored in a zval container, which needs to be pointed to twice. The snippet above tries to retrieve one argument and make it available to us via the parameter pointer.

zend_get_parameters_ex() accepts at least two arguments. The first argument is the number of arguments to retrieve (which should match the number of arguments with which the function has been called; this is why it's important to check for correct call syntax). The second argument (and all following arguments) are pointers to pointers to pointers to zvals. (Confusing, isn't it?) All these pointers are required because Zend works internally with **zval; to adjust a local **zval in our function,zend_get_parameters_ex() requires a pointer to it.

The return value of zend_get_parameters_ex() can either be SUCCESS or FAILURE, indicating (unsurprisingly) success or failure of the argument processing. A failure is most likely related to an incorrect number of arguments being specified, in which case you should exit with WRONG_PARAM_COUNT.

To retrieve more than one argument, you can use a similar snippet:

zval **param1, **param2, **param3, **param4;

if(zend_get_parameters_ex(4, &param1, &param2, &param3, &param4) != SUCCESS)
    WRONG_PARAM_COUNT;

zend_get_parameters_ex() only checks whether you're trying to retrieve too many parameters. If the function is called with five arguments, but you're only retrieving three of them with zend_get_parameters_ex(), you won't get an error but will get the first three parameters instead. Subsequent calls of zend_get_parameters_ex() won't retrieve the remaining arguments, but will get the same arguments again.

Dealing with a Variable Number of Arguments/Optional Parameters

If your function is meant to accept a variable number of arguments, the snippets just described are sometimes suboptimal solutions. You have to create a line calling zend_get_parameters_ex() for every possible number of arguments, which is often unsatisfying.

For this case, you can use the function zend_get_parameters_array_ex(), which accepts the number of parameters to retrieve and an array in which to store them:

zval **parameter_array[4];

/* get the number of arguments */
argument_count = ZEND_NUM_ARGS();

/* see if it satisfies our minimal request (2 arguments) */
/* and our maximal acceptance (4 arguments) */
if(argument_count < 2 || argument_count > 4)
    WRONG_PARAM_COUNT;

/* argument count is correct, now retrieve arguments */
if(zend_get_parameters_array_ex(argument_count, parameter_array) != SUCCESS)
    WRONG_PARAM_COUNT;
First, the number of arguments is checked to make sure that it's in the accepted range. After that, zend_get_parameters_array_ex() is used to fill parameter_array with valid pointers to the argument values.

A very clever implementation of this can be found in the code handling PHP's fsockopen() located in ext/standard/fsock.c, as shown in PHP's implementation of variable arguments in fsockopen().. Don't worry if you don't know all the functions used in this source yet; we'll get to them shortly.

Example #6 PHP's implementation of variable arguments in fsockopen().

pval **args[5];
int *sock=emalloc(sizeof(int));
int *sockp;
int arg_count=ARG_COUNT(ht);
int socketd = -1;
unsigned char udp = 0;
struct timeval timeout = { 60, 0 };
unsigned short portno;
unsigned long conv;
char *key = NULL;
FLS_FETCH();

if (arg_count > 5 || arg_count < 2 || zend_get_parameters_array_ex(arg_count,args)==FAILURE) {
    CLOSE_SOCK(1);
    WRONG_PARAM_COUNT;
}

switch(arg_count) {
    case 5:
        convert_to_double_ex(args[4]);
        conv = (unsigned long) (Z_DVAL_PP(args[4]) * 1000000.0);
        timeout.tv_sec = conv / 1000000;
        timeout.tv_usec = conv % 1000000;
        /* fall-through */
    case 4:
        if (!PZVAL_IS_REF(*args[3])) {
            php_error(E_WARNING,"error string argument to fsockopen not passed by reference");
        }
        pval_copy_constructor(*args[3]);
        ZVAL_EMPTY_STRING(*args[3]);
        /* fall-through */
    case 3:
        if (!PZVAL_IS_REF(*args[2])) {
            php_error(E_WARNING,"error argument to fsockopen not passed by reference");
            return;
        }
        ZVAL_LONG(*args[2], 0);
        break;
}

convert_to_string_ex(args[0]);
convert_to_long_ex(args[1]);
portno = (unsigned short) Z_LVAL_P(args[1]);

key = emalloc(Z_STRLEN_P(args[0]) + 10);

fsockopen() accepts two, three, four, or five parameters. After the obligatory variable declarations, the function checks for the correct range of arguments. Then it uses a fall-through mechanism in a switch() statement to deal with all arguments. The switch() statement starts with the maximum number of arguments being passed (five). After that, it automatically processes the case of four arguments being passed, then three, by omitting the otherwise obligatory break keyword in all stages. After having processed the last case, it exits the switch() statement and does the minimal argument processing needed if the function is invoked with only two arguments.

This multiple-stage type of processing, similar to a stairway, allows convenient processing of a variable number of arguments.

Accessing Arguments

To access arguments, it's necessary for each argument to have a clearly defined type. Again, PHP's extremely dynamic nature introduces some quirks. Because PHP never does any kind of type checking, it's possible for a caller to pass any kind of data to your functions, whether you want it or not. If you expect an integer, for example, the caller might pass an array, and vice versa - PHP simply won't notice.

To work around this, you have to use a set of API functions to force a type conversion on every argument that's being passed (see Argument Conversion Functions).

Note: All conversion functions expect a **zval as parameter.

Argument Conversion Functions
Function | Description
convert_to_boolean_ex() | Forces conversion to a Boolean type. Boolean values remain untouched. Longs, doubles, and strings containing 0 as well as NULL values will result in Boolean 0 (FALSE). Arrays and objects are converted based on the number of entries or properties, respectively, that they have. Empty arrays and objects are converted to FALSE; otherwise, to TRUE. All other values result in a Boolean 1 (TRUE).
convert_to_long_ex() | Forces conversion to a long, the default integer type. NULL values, Booleans, resources, and of course longs remain untouched. Doubles are truncated. Strings containing an integer are converted to their corresponding numeric representation, otherwise resulting in 0. Arrays and objects are converted to 0 if empty, 1 otherwise.
convert_to_double_ex() | Forces conversion to a double, the default floating-point type. NULL values, Booleans, resources, longs, and of course doubles remain untouched. Strings containing a number are converted to their corresponding numeric representation, otherwise resulting in 0.0. Arrays and objects are converted to 0.0 if empty, 1.0 otherwise.
convert_to_string_ex() | Forces conversion to a string. Strings remain untouched. NULL values are converted to an empty string. Booleans containing TRUE are converted to "1", otherwise resulting in an empty string. Longs and doubles are converted to their corresponding string representation. Arrays are converted to the string "Array" and objects to the string "Object".
convert_to_array_ex(value) | Forces conversion to an array. Arrays remain untouched. Objects are converted to an array by assigning all their properties to the array table. All property names are used as keys, property contents as values. NULL values are converted to an empty array. All other values are converted to an array that contains the specific source value in the element with the key 0.
convert_to_object_ex(value) | Forces conversion to an object. Objects remain untouched. NULL values are converted to an empty object. Arrays are converted to objects by introducing their keys as properties into the objects and their values as corresponding property contents in the object. All other types result in an object with the property scalar , having the corresponding source value as content.
convert_to_null_ex(value) | Forces the type to become a NULL value, meaning empty.

Note:

You can find a demonstration of the behavior in cross_conversion.php on the accompanying CD-ROM.

Cross-conversion behavior of PHP.

Using these functions on your arguments will ensure type safety for all data that's passed to you. If the supplied type doesn't match the required type, PHP forces dummy contents on the resulting value (empty strings, arrays, or objects, 0 for numeric values, FALSE for Booleans) to ensure a defined state.

Following is a quote from the sample module discussed previously, which makes use of the conversion functions:

zval **parameter;

if((ZEND_NUM_ARGS() != 1) || (zend_get_parameters_ex(1, &parameter) != SUCCESS))
{
    WRONG_PARAM_COUNT;
}

convert_to_long_ex(parameter);

RETURN_LONG(Z_LVAL_P(parameter));
After retrieving the parameter pointer, the parameter value is converted to a long (an integer), which also forms the return value of this function. Understanding access to the contents of the value requires a short discussion of the zval type, whose definition is shown in PHP/Zend zval type definition..

Example #7 PHP/Zend zval type definition.

typedef pval zval;

typedef struct _zval_struct zval;

typedef union _zvalue_value {
    long lval;                 /* long value */
    double dval;               /* double value */
    struct {
        char *val;
        int len;
    } str;
    HashTable *ht;             /* hash table value */
    struct {
        zend_class_entry *ce;
        HashTable *properties;
    } obj;
} zvalue_value;

struct _zval_struct {
    /* Variable information */
    zvalue_value value;        /* value */
    unsigned char type;        /* active type */
    unsigned char is_ref;
    short refcount;
};

Actually, pval (defined in php.h) is only an alias of zval (defined in zend.h), which in turn refers to _zval_struct. This is a most interesting structure. _zval_struct is the "master" structure, containing the value structure, type, and reference information. The substructure zvalue_value is a union that contains the variable's contents. Depending on the variable's type, you'll have to access different members of this union. For a description of both structures, see Zend zval Structure, Zend zvalue_value Structure and Zend Variable Type Constants.

Zend zval Structure
Entry | Description
value | Union containing this variable's contents. See Zend zvalue_value Structure for a description.
type | Contains this variable's type. For a list of available types, see Zend Variable Type Constants.
is_ref | 0 means that this variable is not a reference; 1 means that this variable is a reference to another variable.
refcount | The number of references that exist for this variable. For every new reference to the value stored in this variable, this counter is increased by 1. For every lost reference, this counter is decreased by 1. When the reference counter reaches 0, no references exist to this value anymore, which causes automatic freeing of the value.
Zend zvalue_value Structure
Entry | Description
lval | Use this property if the variable is of the type IS_LONG, IS_BOOLEAN, or IS_RESOURCE.
dval | Use this property if the variable is of the type IS_DOUBLE.
str | This structure can be used to access variables of the type IS_STRING. The member len contains the string length; the member val points to the string itself. Zend uses C strings; thus, the string length contains a trailing 0x00.
ht | This entry points to the variable's hash table entry if the variable is an array.
obj | Use this property if the variable is of the type IS_OBJECT.
Zend Variable Type Constants
Constant | Description
IS_NULL | Denotes a NULL (empty) value.
IS_LONG | A long (integer) value.
IS_DOUBLE | A double (floating point) value.
IS_STRING | A string.
IS_ARRAY | Denotes an array.
IS_OBJECT | An object.
IS_BOOL | A Boolean value.
IS_RESOURCE | A resource (for a discussion of resources, see the appropriate section below).
IS_CONSTANT | A constant (defined) value.

To access a long you access zval.value.lval, to access a double you use zval.value.dval, and so on. Because all values are stored in a union, trying to access data with incorrect union members results in meaningless output.

Accessing arrays and objects is a bit more complicated and is discussed later.

Dealing with Arguments Passed by Reference

If your function accepts arguments passed by reference that you intend to modify, you need to take some precautions.

What we didn't say yet is that under the circumstances presented so far, you don't have write access to any zval containers designating function parameters that have been passed to you. Of course, you can change any zval containers that you created within your function, but you mustn't change any zvals that refer to Zend-internal data!

We've only discussed the so-called *_ex() API so far. You may have noticed that the API functions we've used are called zend_get_parameters_ex() instead of zend_get_parameters(), convert_to_long_ex() instead of convert_to_long(), etc. The *_ex() functions form the so-called new "extended" Zend API. They give a minor speed increase over the old API, but as a tradeoff are only meant for providing read-only access.

Because Zend works internally with references, different variables may reference the same value. Write access to a zval container requires this container to contain an isolated value, meaning a value that's not referenced by any other containers. If a zval container were referenced by other containers and you changed the referenced zval, you would automatically change the contents of the other containers referencing this zval (because they'd simply point to the changed value and thus change their own value as well).

zend_get_parameters_ex() doesn't care about this situation, but simply returns a pointer to the desired zval containers, whether they consist of references or not. Its corresponding function in the traditional API, zend_get_parameters(), immediately checks for referenced values. If it finds a reference, it creates a new, isolated zval container; copies the referenced data into this newly allocated space; and then returns a pointer to the new, isolated value.

This action is called zval separation (or pval separation). Because the *_ex() API doesn't perform zval separation, it's considerably faster, while at the same time disabling write access.

To change parameters, however, write access is required. Zend deals with this situation in a special way: Whenever a parameter to a function is passed by reference, it performs automatic zval separation. This means that whenever you're calling a function like this in PHP, Zend will automatically ensure that $parameter is being passed as an isolated value, rendering it to a write-safe state:

my_function(&$parameter);

But this is not the case with regular parameters! All other parameters that are not passed by reference are in a read-only state.

This requires you to make sure that you're really working with a reference - otherwise you might produce unwanted results. To check for a parameter being passed by reference, you can use the macro PZVAL_IS_REF. This macro accepts a zval* to check if it is a reference or not. Examples are given in in Testing for referenced parameter passing..

Example #8 Testing for referenced parameter passing.

zval *parameter;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &parameter) == FAILURE)
    return;

/* check for parameter being passed by reference */
if (!PZVAL_IS_REF(parameter)) {
{
    zend_error(E_WARNING, "Parameter wasn't passed by reference");
    RETURN_NULL();
}

/* make changes to the parameter */
ZVAL_LONG(parameter, 10);
Testing for referenced parameter passing

Assuring Write Safety for Other Parameters

You might run into a situation in which you need write access to a parameter that's retrieved with zend_get_parameters_ex() but not passed by reference. For this case, you can use the macro SEPARATE_ZVAL, which does a zval separation on the provided container. The newly generated zval is detached from internal data and has only a local scope, meaning that it can be changed or destroyed without implying global changes in the script context:

zval **parameter;

/* retrieve parameter */
zend_get_parameters_ex(1, &parameter);

/* at this stage, <parameter> still is connected */
/* to Zend's internal data buffers */

/* make <parameter> write-safe */
SEPARATE_ZVAL(parameter);

/* now we can safely modify <parameter> */
/* without implying global changes */
SEPARATE_ZVAL uses emalloc() to allocate the new zval container, which means that even if you don't deallocate this memory yourself, it will be destroyed automatically upon script termination. However, doing a lot of calls to this macro without freeing the resulting containers will clutter up your RAM.

Note: As you can easily work around the lack of write access in the "traditional" API (with zend_get_parameters() and so on), this API seems to be obsolete, and is not discussed further in this chapter.

Creating Variables

When exchanging data from your own extensions with PHP scripts, one of the most important issues is the creation of variables. This section shows you how to deal with the variable types that PHP supports.

Overview

To create new variables that can be seen "from the outside" by the executing script, you need to allocate a new zval container, fill this container with meaningful values, and then introduce it to Zend's internal symbol table. This basic process is common to all variable creations:

zval *new_variable;

/* allocate and initialize new container */
MAKE_STD_ZVAL(new_variable);

/* set type and variable contents here, see the following sections */

/* introduce this variable by the name "new_variable_name" into the symbol table */
ZEND_SET_SYMBOL(EG(active_symbol_table), "new_variable_name", new_variable);

/* the variable is now accessible to the script by using $new_variable_name */

The macro MAKE_STD_ZVAL allocates a new zval container using ALLOC_ZVAL and initializes it using INIT_ZVAL. As implemented in Zend at the time of this writing, initializing means setting the reference count to 1 and clearing the is_ref flag, but this process could be extended later - this is why it's a good idea to keep using MAKE_STD_ZVAL instead of only using ALLOC_ZVAL. If you want to optimize for speed (and you don't have to explicitly initialize the zval container here), you can use ALLOC_ZVAL, but this isn't recommended because it doesn't ensure data integrity.

ZEND_SET_SYMBOL takes care of introducing the new variable to Zend's symbol table. This macro checks whether the value already exists in the symbol table and converts the new symbol to a reference if so (with automatic deallocation of the old zval container). This is the preferred method if speed is not a crucial issue and you'd like to keep memory usage low.

Note that ZEND_SET_SYMBOL makes use of the Zend executor globals via the macro EG. By specifying EG(active_symbol_table), you get access to the currently active symbol table, dealing with the active, local scope. The local scope may differ depending on whether the function was invoked from within a function.

If you need to optimize for speed and don't care about optimal memory usage, you can omit the check for an existing variable with the same value and instead force insertion into the symbol table by using zend_hash_update():

zval *new_variable;

/* allocate and initialize new container */
MAKE_STD_ZVAL(new_variable);

/* set type and variable contents here, see the following sections */

/* introduce this variable by the name "new_variable_name" into the symbol table */
zend_hash_update(
    EG(active_symbol_table),
    "new_variable_name",
    strlen("new_variable_name") + 1,
    &new_variable,
    sizeof(zval *),
    NULL
);
This is actually the standard method used in most modules.

The variables generated with the snippet above will always be of local scope, so they reside in the context in which the function has been called. To create new variables in the global scope, use the same method but refer to another symbol table:

zval *new_variable;

// allocate and initialize new container
MAKE_STD_ZVAL(new_variable);

//
// set type and variable contents here
//

// introduce this variable by the name "new_variable_name" into the global symbol table
ZEND_SET_SYMBOL(&EG(symbol_table), "new_variable_name", new_variable);
The macro ZEND_SET_SYMBOL is now being called with a reference to the main, global symbol table by referring EG(symbol_table).

Note: The active_symbol_table variable is a pointer, but symbol_table is not. This is why you have to use EG(active_symbol_table) and &EG(symbol_table) as parameters to ZEND_SET_SYMBOL - it requires a pointer.

Similarly, to get a more efficient version, you can hardcode the symbol table update:

zval *new_variable;

// allocate and initialize new container
MAKE_STD_ZVAL(new_variable);

//
// set type and variable contents here
//

// introduce this variable by the name "new_variable_name" into the global symbol table
zend_hash_update(
    &EG(symbol_table),
    "new_variable_name",
    strlen("new_variable_name") + 1,
    &new_variable,
    sizeof(zval *),
    NULL
);
Creating variables with different scopes. shows a sample source that creates two variables - local_variable with a local scope and global_variable with a global scope (see Figure 9.7). The full example can be found on the CD-ROM.

Note: You can see that the global variable is actually not accessible from within the function. This is because it's not imported into the local scope using global $global_variable; in the PHP source.

Example #9 Creating variables with different scopes.

ZEND_FUNCTION(variable_creation)
{
    zval *new_var1, *new_var2;

    MAKE_STD_ZVAL(new_var1);
    MAKE_STD_ZVAL(new_var2);

    ZVAL_LONG(new_var1, 10);
    ZVAL_LONG(new_var2, 5);

    ZEND_SET_SYMBOL(EG(active_symbol_table), "local_variable", new_var1);
    ZEND_SET_SYMBOL(&EG(symbol_table), "global_variable", new_var2);

    RETURN_NULL();

}
Creating variables with different scopes

Longs (Integers)

Now let's get to the assignment of data to variables, starting with longs. Longs are PHP's integers and are very simple to store. Looking at the zval.value container structure discussed earlier in this chapter, you can see that the long data type is directly contained in the union, namely in the lval field. The corresponding type value for longs is IS_LONG (see Creation of a long.).

Example #10 Creation of a long.

zval *new_long;

MAKE_STD_ZVAL(new_long);

new_long-&gt;type = IS_LONG;
new_long-&gt;value.lval = 10;
Alternatively, you can use the macro ZVAL_LONG:
zval *new_long;

MAKE_STD_ZVAL(new_long);
ZVAL_LONG(new_long, 10);

Doubles (Floats)

Doubles are PHP's floats and are as easy to assign as longs, because their value is also contained directly in the union. The member in the zval.value container is dval; the corresponding type is IS_DOUBLE.

zval *new_double;

MAKE_STD_ZVAL(new_double);

new_double-&gt;type = IS_DOUBLE;
new_double-&gt;value.dval = 3.45;
Alternatively, you can use the macro ZVAL_DOUBLE:
zval *new_double;

MAKE_STD_ZVAL(new_double);
ZVAL_DOUBLE(new_double, 3.45);

Strings

Strings need slightly more effort. As mentioned earlier, all strings that will be associated with Zend's internal data structures need to be allocated using Zend's own memory-management functions. Referencing of static strings or strings allocated with standard routines is not allowed. To assign strings, you have to access the structure str in the zval.value container. The corresponding type is IS_STRING:

zval *new_string;
char *string_contents = "This is a new string variable";

MAKE_STD_ZVAL(new_string);

new_string-&gt;type = IS_STRING;
new_string-&gt;value.str.len = strlen(string_contents);
new_string-&gt;value.str.val = estrdup(string_contents);
Note the usage of Zend's estrdup() here. Of course, you can also use the predefined macro ZVAL_STRING:
zval *new_string;
char *string_contents = "This is a new string variable";

MAKE_STD_ZVAL(new_string);
ZVAL_STRING(new_string, string_contents, 1);
ZVAL_STRING accepts a third parameter that indicates whether the supplied string contents should be duplicated (using estrdup()). Setting this parameter to 1 causes the string to be duplicated; 0 simply uses the supplied pointer for the variable contents. This is most useful if you want to create a new variable referring to a string that's already allocated in Zend internal memory.

If you want to truncate the string at a certain position or you already know its length, you can use ZVAL_STRINGL(zval, string, length, duplicate), which accepts an explicit string length to be set for the new string. This macro is faster than ZVAL_STRING and also binary-safe.

To create empty strings, set the string length to 0 and use empty_string as contents:

new_string-&gt;type = IS_STRING;
new_string-&gt;value.str.len = 0;
new_string-&gt;value.str.val = empty_string;
Of course, there's a macro for this as well (ZVAL_EMPTY_STRING):
MAKE_STD_ZVAL(new_string);
ZVAL_EMPTY_STRING(new_string);

Booleans

Booleans are created just like longs, but have the type IS_BOOL. Allowed values in lval are 0 and 1:

zval *new_bool;

MAKE_STD_ZVAL(new_bool);

new_bool-&gt;type = IS_BOOL;
new_bool-&gt;value.lval = 1;
The corresponding macros for this type are ZVAL_BOOL (allowing specification of the value) as well as ZVAL_TRUE and ZVAL_FALSE (which explicitly set the value to TRUE and FALSE, respectively).

Arrays

Arrays are stored using Zend's internal hash tables, which can be accessed using the zend_hash_*() API. For every array that you want to create, you need a new hash table handle, which will be stored in the ht member of the zval.value container.

There's a whole API solely for the creation of arrays, which is extremely handy. To start a new array, you call array_init().

zval *new_array;

MAKE_STD_ZVAL(new_array);

array_init(new_array);
array_init() always returns SUCCESS.

To add new elements to the array, you can use numerous functions, depending on what you want to do. Zend's API for Associative Arrays, Zend's API for Indexed Arrays, Part 1 and Zend's API for Indexed Arrays, Part 2 describe these functions. All functions return FAILURE on failure and SUCCESS on success.

Zend's API for Associative Arrays
Function | Description
add_assoc_long(zval *array, char *key, long n);() | Adds an element of type long.
add_assoc_unset(zval *array, char *key);() | Adds an unset element.
add_assoc_bool(zval *array, char *key, int b);() | Adds a Boolean element.
add_assoc_resource(zval *array, char *key, int r);() | Adds a resource to the array.
add_assoc_double(zval *array, char *key, double d);() | Adds a floating-point value.
add_assoc_string(zval *array, char *key, char *str, int duplicate);() | Adds a string to the array. The flag duplicate specifies whether the string contents have to be copied to Zend internal memory.
add_assoc_stringl(zval *array, char *key, char *str, uint length, int duplicate); () | Adds a string with the desired length length to the array. Otherwise, behaves like add_assoc_string().
add_assoc_zval(zval *array, char *key, zval *value);() | Adds a zval to the array. Useful for adding other arrays, objects, streams, etc...
Zend's API for Indexed Arrays, Part 1
Function | Description
add_index_long(zval *array, uint idx, long n);() | Adds an element of type long.
add_index_unset(zval *array, uint idx);() | Adds an unset element.
add_index_bool(zval *array, uint idx, int b);() | Adds a Boolean element.
add_index_resource(zval *array, uint idx, int r);() | Adds a resource to the array.
add_index_double(zval *array, uint idx, double d);() | Adds a floating-point value.
add_index_string(zval *array, uint idx, char *str, int duplicate);() | Adds a string to the array. The flag duplicate specifies whether the string contents have to be copied to Zend internal memory.
add_index_stringl(zval *array, uint idx, char *str, uint length, int duplicate);() | Adds a string with the desired length length to the array. This function is faster and binary-safe. Otherwise, behaves like add_index_string().
add_index_zval(zval *array, uint idx, zval *value);() | Adds a zval to the array. Useful for adding other arrays, objects, streams, etc...
Zend's API for Indexed Arrays, Part 2
Function | Description
add_next_index_long(zval *array, long n);() | Adds an element of type long.
add_next_index_unset(zval *array);() | Adds an unset element.
add_next_index_bool(zval *array, int b);() | Adds a Boolean element.
add_next_index_resource(zval *array, int r);() | Adds a resource to the array.
add_next_index_double(zval *array, double d);() | Adds a floating-point value.
add_next_index_string(zval *array, char *str, int duplicate);() | Adds a string to the array. The flag duplicate specifies whether the string contents have to be copied to Zend internal memory.
add_next_index_stringl(zval *array, char *str, uint length, int duplicate);() | Adds a string with the desired length length to the array. This function is faster and binary-safe. Otherwise, behaves like add_index_string().
add_next_index_zval(zval *array, zval *value);() | Adds a zval to the array. Useful for adding other arrays, objects, streams, etc...

All these functions provide a handy abstraction to Zend's internal hash API. Of course, you can also use the hash functions directly - for example, if you already have a zval container allocated that you want to insert into an array. This is done using zend_hash_update() for associative arrays (see Adding an element to an associative array.) and zend_hash_index_update() for indexed arrays (see Adding an element to an indexed array.):

Example #11 Adding an element to an associative array.

zval *new_array, *new_element;
char *key = "element_key";

MAKE_STD_ZVAL(new_array);
MAKE_STD_ZVAL(new_element);

array_init(new_array);

ZVAL_LONG(new_element, 10);

if(zend_hash_update(new_array-&gt;value.ht, key, strlen(key) + 1, (void *)&new_element, sizeof(zval *), NULL) == FAILURE)
{
    // do error handling here
}

Example #12 Adding an element to an indexed array.

zval *new_array, *new_element;
int key = 2;

MAKE_STD_ZVAL(new_array);
MAKE_STD_ZVAL(new_element);

array_init(new_array);

ZVAL_LONG(new_element, 10);

if(zend_hash_index_update(new_array-&gt;value.ht, key, (void *)&new_element, sizeof(zval *), NULL) == FAILURE)
{
    // do error handling here
}

To emulate the functionality of add_next_index_*(), you can use this:

zend_hash_next_index_insert(ht, zval **new_element, sizeof(zval *), NULL)

Note: To return arrays from a function, use array_init() and all following actions on the predefined variable return_value (given as argument to your exported function; see the earlier discussion of the call interface). You do not have to use MAKE_STD_ZVAL on this.

Tip: To avoid having to write new_array->value.ht every time, you can use HASH_OF(new_array), which is also recommended for compatibility and style reasons.

Objects

Since objects can be converted to arrays (and vice versa), you might have already guessed that they have a lot of similarities to arrays in PHP. Objects are maintained with the same hash functions, but there's a different API for creating them.

To initialize an object, you use the function object_init():

zval *new_object;

MAKE_STD_ZVAL(new_object);

if(object_init(new_object) != SUCCESS)
{
    // do error handling here
}
You can use the functions described in Zend's API for Object Creation to add members to your object.

Zend's API for Object Creation
Function | Description
add_property_long(zval *object, char *key, long l);() | Adds a long to the object.
add_property_unset(zval *object, char *key);() | Adds an unset property to the object.
add_property_bool(zval *object, char *key, int b);() | Adds a Boolean to the object.
add_property_resource(zval *object, char *key, long r);() | Adds a resource to the object.
add_property_double(zval *object, char *key, double d);() | Adds a double to the object.
add_property_string(zval *object, char *key, char *str, int duplicate);() | Adds a string to the object.
add_property_stringl(zval *object, char *key, char *str, uint length, int duplicate);() | Adds a string of the specified length to the object. This function is faster than add_property_string() and also binary-safe.
add_property_zval(zval *obect, char *key, zval *container):() | Adds a zval container to the object. This is useful if you have to add properties which aren't simple types like integers or strings but arrays or other objects.

Resources

Resources are a special kind of data type in PHP. The term resources doesn't really refer to any special kind of data, but to an abstraction method for maintaining any kind of information. Resources are kept in a special resource list within Zend. Each entry in the list has a correspondending type definition that denotes the kind of resource to which it refers. Zend then internally manages all references to this resource. Access to a resource is never possible directly - only via a provided API. As soon as all references to a specific resource are lost, a corresponding shutdown function is called.

For example, resources are used to store database links and file descriptors. The de facto standard implementation can be found in the MySQL module, but other modules such as the Oracle module also make use of resources.

Note:

In fact, a resource can be a pointer to anything you need to handle in your functions (e.g. pointer to a structure) and the user only has to pass a single resource variable to your function.

To create a new resource you need to register a resource destruction handler for it. Since you can store any kind of data as a resource, Zend needs to know how to free this resource if its not longer needed. This works by registering your own resource destruction handler to Zend which in turn gets called by Zend whenever your resource can be freed (whether manually or automatically). Registering your resource handler within Zend returns you the resource type handle for that resource. This handle is needed whenever you want to access a resource of this type later and is most of time stored in a global static variable within your extension. There is no need to worry about thread safety here because you only register your resource handler once during module initialization.

The Zend function to register your resource handler is defined as:

ZEND_API int zend_register_list_destructors_ex(rsrc_dtor_func_t ld, rsrc_dtor_func_t pld, char *type_name, int module_number);

There are two different kinds of resource destruction handlers you can pass to this function: a handler for normal resources and a handler for persistent resources. Persistent resources are for example used for database connection. When registering a resource, either of these handlers must be given. For the other handler just pass NULL.

zend_register_list_destructors_ex() accepts the following parameters:

ld | Normal resource destruction handler callback
pld | Pesistent resource destruction handler callback
type_name | A string specifying the name of your resource. It's always a good thing to specify a unique name within PHP for the resource type so when the user for example calls var_dump($resource); he also gets the name of the resource.
module_number | The module_number is automatically available in your PHP_MINIT_FUNCTION function and therefore you just pass it over.
The return value is a unique integer ID for your resource type.

The resource destruction handler (either normal or persistent resources) has the following prototype:

void resource_destruction_handler(zend_rsrc_list_entry *rsrc TSRMLS_DC);
The passed rsrc is a pointer to the following structure:
typedef struct _zend_rsrc_list_entry {

    void *ptr;
    int type;
    int refcount;

} zend_rsrc_list_entry;
The member void *ptr is the actual pointer to your resource.

Now we know how to start things, we define our own resource we want register within Zend. It is only a simple structure with two integer members:

typedef struct {

    int resource_link;
    int resource_type;

} my_resource;
Our resource destruction handler is probably going to look something like this:
void my_destruction_handler(zend_rsrc_list_entry *rsrc TSRMLS_DC) {

    // You most likely cast the void pointer to your structure type

    my_resource *my_rsrc = (my_resource *) rsrc->ptr;

    // Now do whatever needs to be done with you resource. Closing
    // Files, Sockets, freeing additional memory, etc.
    // Also, don't forget to actually free the memory for your resource too!

    do_whatever_needs_to_be_done_with_the_resource(my_rsrc);
}

Note:

One important thing to mention: If your resource is a rather complex structure which also contains pointers to memory you allocated during runtime you have to free them before freeing the resource itself!

Now that we have defined

  1. what our resource is and

  2. our resource destruction handler

we can go on and do the rest of the steps:

  1. create a global variable within the extension holding the resource ID so it can be accessed from every function which needs it

  2. define the resource name

  3. write the resource destruction handler

  4. and finally register the handler

// Somewhere in your extension, define the variable for your registered resources.
    // If you wondered what 'le' stands for: it simply means 'list entry'.
    static int le_myresource;

    // It's nice to define your resource name somewhere
    #define le_myresource_name  "My type of resource"

    [...]

    // Now actually define our resource destruction handler
    void my_destruction_handler(zend_rsrc_list_entry *rsrc TSRMLS_DC) {

        my_resource *my_rsrc = (my_resource *) rsrc->ptr;
        do_whatever_needs_to_be_done_with_the_resource(my_rsrc);
    }

    [...]

    PHP_MINIT_FUNCTION(my_extension) {

        // Note that 'module_number' is already provided through the
        // PHP_MINIT_FUNCTION() function definition.

        le_myresource = zend_register_list_destructors_ex(my_destruction_handler, NULL, le_myresource_name, module_number);

        // You can register additional resources, initialize
        // your global vars, constants, whatever.
    }

To actually register a new resource you use can either use the zend_register_resource() function or the ZEND_REGISTER_RESOURE() macro, both defined in zend_list.h. Although the arguments for both map 1:1 it's a good idea to always use macros to be upwards compatible:

int ZEND_REGISTER_RESOURCE(zval *rsrc_result, void *rsrc_pointer, int rsrc_type);
rsrc_result | This is an already initialized zval * container.
rsrc_pointer | Your resource pointer you want to store.
rsrc_type | The type which you received when you registered the resource destruction handler. If you followed the naming scheme this would be le_myresource.
The return value is a unique integer identifier for that resource.

What is really going on when you register a new resource is it gets inserted in an internal list in Zend and the result is just stored in the given zval * container:

rsrc_id = zend_list_insert(rsrc_pointer, rsrc_type);

    if (rsrc_result) {
        rsrc_result->value.lval = rsrc_id;
        rsrc_result->type = IS_RESOURCE;
    }

    return rsrc_id;
The returned rsrc_id uniquely identifies the newly registered resource. You can use the macro RETURN_RESOURE to return it to the user:
    RETURN_RESOURCE(rsrc_id)

Note:

It is common practice that if you want to return the resource immediately to the user you specify the return_value as the zval * container.

Zend now keeps track of all references to this resource. As soon as all references to the resource are lost, the destructor that you previously registered for this resource is called. The nice thing about this setup is that you don't have to worry about memory leakages introduced by allocations in your module - just register all memory allocations that your calling script will refer to as resources. As soon as the script decides it doesn't need them anymore, Zend will find out and tell you.

Now that the user got his resource, at some point he is passing it back to one of your functions. The value.lval inside the zval * container contains the key to your resource and thus can be used to fetch the resource with the following macro: ZEND_FETCH_RESOURCE:

ZEND_FETCH_RESOURCE(rsrc, rsrc_type, rsrc_id, default_rsrc_id, resource_type_name, resource_type)
rsrc | This is your pointer which will point to your previously registered resource.
rsrc_type | This is the typecast argument for your pointer, e.g. myresource *.
rsrc_id | This is the address of the zval *container the user passed to your function, e.g. &z_resource if zval *z_resource is given.
default_rsrc_id | This integer specifies the default resource ID if no resource could be fetched or -1.
resource_type_name | This is the name of the requested resource. It's a string and is used when the resource can't be found or is invalid to form a meaningful error message.
resource_type | The resource_type you got back when registering the resource destruction handler. In our example this was le_myresource.
This macro has no return value. It is for the developers convenience and takes care of TSRMLS arguments passing and also does check if the resource could be fetched. It throws a warning message and returns the current PHP function with NULL if there was a problem retrieving the resource.

To force removal of a resource from the list, use the function zend_list_delete(). You can also force the reference count to increase if you know that you're creating another reference for a previously allocated value (for example, if you're automatically reusing a default database link). For this case, use the function zend_list_addref(). To search for previously allocated resource entries, use zend_list_find(). The complete API can be found in zend_list.h.

Macros for Automatic Global Variable Creation

In addition to the macros discussed earlier, a few macros allow easy creation of simple global variables. These are nice to know in case you want to introduce global flags, for example. This is somewhat bad practice, but Table Macros for Global Variable Creation describes macros that do exactly this task. They don't need any zval allocation; you simply have to supply a variable name and value.

Macros for Global Variable Creation
Macro | Description
SET_VAR_STRING(name, value) | Creates a new string.
SET_VAR_STRINGL(name, value, length) | Creates a new string of the specified length. This macro is faster than SET_VAR_STRING and also binary-safe.
SET_VAR_LONG(name, value) | Creates a new long.
SET_VAR_DOUBLE(name, value) | Creates a new double.

Creating Constants

Zend supports the creation of true constants (as opposed to regular variables). Constants are accessed without the typical dollar sign ($) prefix and are available in all scopes. Examples include TRUE and FALSE, to name just two.

To create your own constants, you can use the macros in Macros for Creating Constants. All the macros create a constant with the specified name and value.

You can also specify flags for each constant:

  • CONST_CS - This constant's name is to be treated as case sensitive.

  • CONST_PERSISTENT - This constant is persistent and won't be "forgotten" when the current process carrying this constant shuts down.

To use the flags, combine them using a inary OR:
 // register a new constant of type "long"
     REGISTER_LONG_CONSTANT("NEW_MEANINGFUL_CONSTANT", 324, CONST_CS |
     CONST_PERSISTENT);
There are two types of macros - REGISTER_*_CONSTANT andREGISTER_MAIN_*_CONSTANT. The first type creates constants bound to the current module. These constants are dumped from the symbol table as soon as the module that registered the constant is unloaded from memory. The second type creates constants that remain in the symbol table independently of the module.

Macros for Creating Constants
Macro | Description
REGISTER_LONG_CONSTANT(name, value, flags) REGISTER_MAIN_LONG_CONSTANT(name, value, flags) | Registers a new constant of type long.
REGISTER_DOUBLE_CONSTANT(name, value, flags) REGISTER_MAIN_DOUBLE_CONSTANT(name, value, flags) | Registers a new constant of type double.
REGISTER_STRING_CONSTANT(name, value, flags) REGISTER_MAIN_STRING_CONSTANT(name, value, flags) | Registers a new constant of type string. The specified string must reside in Zend's internal memory.
REGISTER_STRINGL_CONSTANT(name, value, length, flags) REGISTER_MAIN_STRINGL_CONSTANT(name, value, length, flags) | Registers a new constant of type string. The string length is explicitly set to length. The specified string must reside in Zend's internal memory.

Duplicating Variable Contents: The Copy Constructor

Sooner or later, you may need to assign the contents of one zval container to another. This is easier said than done, since the zval container doesn't contain only type information, but also references to places in Zend's internal data. For example, depending on their size, arrays and objects may be nested with lots of hash table entries. By assigning one zval to another, you avoid duplicating the hash table entries, using only a reference to them (at most).

To copy this complex kind of data, use the copy constructor. Copy constructors are typically defined in languages that support operator overloading, with the express purpose of copying complex types. If you define an object in such a language, you have the possibility of overloading the "=" operator, which is usually responsible for assigning the contents of the rvalue (result of the evaluation of the right side of the operator) to the lvalue (same for the left side).

Overloading means assigning a different meaning to this operator, and is usually used to assign a function call to an operator. Whenever this operator would be used on such an object in a program, this function would be called with the lvalue and rvalue as parameters. Equipped with that information, it can perform the operation it intends the "=" operator to have (usually an extended form of copying).

This same form of "extended copying" is also necessary for PHP's zval containers. Again, in the case of an array, this extended copying would imply re-creation of all hash table entries relating to this array. For strings, proper memory allocation would have to be assured, and so on.

Zend ships with such a function, called zend_copy_ctor() (the previous PHP equivalent was pval_copy_constructor()).

A most useful demonstration is a function that accepts a complex type as argument, modifies it, and then returns the argument:

zval *parameter;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &parameter) == FAILURE)
   return;
}

// do modifications to the parameter here

// now we want to return the modified container:
*return_value = *parameter;
zval_copy_ctor(return_value);

The first part of the function is plain-vanilla argument retrieval. After the (left out) modifications, however, it gets interesting: The container of parameter is assigned to the (predefined) return_value container. Now, in order to effectively duplicate its contents, the copy constructor is called. The copy constructor works directly with the supplied argument, and the standard return values are FAILURE on failure and SUCCESS on success.

If you omit the call to the copy constructor in this example, both parameter and return_value would point to the same internal data, meaning that return_value would be an illegal additional reference to the same data structures. Whenever changes occurred in the data that parameter points to, return_value might be affected. Thus, in order to create separate copies, the copy constructor must be used.

The copy constructor's counterpart in the Zend API, the destructor zval_dtor(), does the opposite of the constructor.

Returning Values

Returning values from your functions to PHP was described briefly in an earlier section; this section gives the details. Return values are passed via the return_value variable, which is passed to your functions as argument. The return_value argument consists of a zval container (see the earlier discussion of the call interface) that you can freely modify. The container itself is already allocated, so you don't have to run MAKE_STD_ZVAL on it. Instead, you can access its members directly.

To make returning values from functions easier and to prevent hassles with accessing the internal structures of the zval container, a set of predefined macros is available (as usual). These macros automatically set the correspondent type and value, as described in Predefined Macros for Returning Values from a Function and Predefined Macros for Setting the Return Value of a Function.

Note:

The macros in Predefined Macros for Returning Values from a Function automatically return from your function, those in Predefined Macros for Setting the Return Value of a Function only set the return value; they don't return from your function.

Predefined Macros for Returning Values from a Function
Macro | Description
RETURN_RESOURCE(resource) | Returns a resource.
RETURN_BOOL(bool) | Returns a Boolean.
RETURN_NULL() | Returns nothing (a NULL value).
RETURN_LONG(long) | Returns a long.
RETURN_DOUBLE(double) | Returns a double.
RETURN_STRING(string, duplicate) | Returns a string. The duplicate flag indicates whether the string should be duplicated using estrdup().
RETURN_STRINGL(string, length, duplicate) | Returns a string of the specified length; otherwise, behaves like RETURN_STRING. This macro is faster and binary-safe, however.
RETURN_EMPTY_STRING() | Returns an empty string.
RETURN_FALSE | Returns Boolean false.
RETURN_TRUE | Returns Boolean true.
Predefined Macros for Setting the Return Value of a Function
Macro | Description
RETVAL_RESOURCE(resource) | Sets the return value to the specified resource.
RETVAL_BOOL(bool) | Sets the return value to the specified Boolean value.
RETVAL_NULL | Sets the return value to NULL.
RETVAL_LONG(long) | Sets the return value to the specified long.
RETVAL_DOUBLE(double) | Sets the return value to the specified double.
RETVAL_STRING(string, duplicate) | Sets the return value to the specified string and duplicates it to Zend internal memory if desired (see also RETURN_STRING).
RETVAL_STRINGL(string, length, duplicate) | Sets the return value to the specified string and forces the length to become length (see also RETVAL_STRING). This macro is faster and binary-safe, and should be used whenever the string length is known.
RETVAL_EMPTY_STRING | Sets the return value to an empty string.
RETVAL_FALSE | Sets the return value to Boolean false.
RETVAL_TRUE | Sets the return value to Boolean true.

Complex types such as arrays and objects can be returned by using array_init() and object_init(), as well as the corresponding hash functions on return_value. Since these types cannot be constructed of trivial information, there are no predefined macros for them.

Printing Information

Often it's necessary to print messages to the output stream from your module, just as print would be used within a script. PHP offers functions for most generic tasks, such as printing warning messages, generating output for phpinfo(), and so on. The following sections provide more details. Examples of these functions can be found on the CD-ROM.

zend_printf()

zend_printf() works like the standard printf(), except that it prints to Zend's output stream.

zend_error()

zend_error() can be used to generate error messages. This function accepts two arguments; the first is the error type (see zend_errors.h), and the second is the error message.

zend_error(E_WARNING, "This function has been called with empty arguments");
Zend's Predefined Error Messages. shows a list of possible values (see below). These values are also referred to in php.ini. Depending on which error type you choose, your messages will be logged.
Zend's Predefined Error Messages.
Error | Description
E_ERROR | Signals an error and terminates execution of the script immediately.
E_WARNING | Signals a generic warning. Execution continues.
E_PARSE | Signals a parser error. Execution continues.
E_NOTICE | Signals a notice. Execution continues. Note that by default the display of this type of error messages is turned off in php.ini.
E_CORE_ERROR | Internal error by the core; shouldn't be used by user-written modules.
E_COMPILE_ERROR | Internal error by the compiler; shouldn't be used by user-written modules.
E_COMPILE_WARNING | Internal warning by the compiler; shouldn't be used by user-written modules.
Display of warning messages in the browser.

Including Output in phpinfo()

After creating a real module, you'll want to show information about the module in phpinfo() (in addition to the module name, which appears in the module list by default). PHP allows you to create your own section in the phpinfo() output with the ZEND_MINFO() function. This function should be placed in the module descriptor block (discussed earlier) and is always called whenever a script calls phpinfo().

PHP automatically prints a section in phpinfo() for you if you specify the ZEND_MINFO function, including the module name in the heading. Everything else must be formatted and printed by you.

Typically, you can print an HTML table header using php_info_print_table_start() and then use the standard functions php_info_print_table_header() and php_info_print_table_row(). As arguments, both take the number of columns (as integers) and the column contents (as strings). Source code and screenshot for output in phpinfo. shows a source example and its output. To print the table footer, use php_info_print_table_end().

Example #13 Source code and screenshot for output in phpinfo().

php_info_print_table_start();
php_info_print_table_header(2, "First column", "Second column");
php_info_print_table_row(2, "Entry in first row", "Another entry");
php_info_print_table_row(2, "Just to fill", "another row here");
php_info_print_table_end();
Output of phpinfo()

Execution Information

You can also print execution information, such as the current file being executed. The name of the function currently being executed can be retrieved using the function get_active_function_name(). This function returns a pointer to the function name and doesn't accept any arguments. To retrieve the name of the file currently being executed, use zend_get_executed_filename(). This function accesses the executor globals, which are passed to it using the TSRMLS_C macro. The executor globals are automatically available to every function that's called directly by Zend (they're part of the INTERNAL_FUNCTION_PARAMETERS described earlier in this chapter). If you want to access the executor globals in another function that doesn't have them available automatically, call the macro TSRMLS_FETCH() once in that function; this will introduce them to your local scope.

Finally, the line number currently being executed can be retrieved using the function zend_get_executed_lineno(). This function also requires the executor globals as arguments. For examples of these functions, see Printing execution information..

Example #14 Printing execution information.

zend_printf("The name of the current function is %s&lt;br&gt;", get_active_function_name(TSRMLS_C));
zend_printf("The file currently executed is %s&lt;br&gt;", zend_get_executed_filename(TSRMLS_C));
zend_printf("The current line being executed is %i&lt;br&gt;", zend_get_executed_lineno(TSRMLS_C));
Printing execution information

Startup and Shutdown Functions

Startup and shutdown functions can be used for one-time initialization and deinitialization of your modules. As discussed earlier in this chapter (see the description of the Zend module descriptor block), there are module, and request startup and shutdown events.

The module startup and shutdown functions are called whenever a module is loaded and needs initialization; the request startup and shutdown functions are called every time a request is processed (meaning that a file is being executed).

For dynamic extensions, module and request startup/shutdown events happen at the same time.

Declaration and implementation of these functions can be done with macros; see the earlier section "Declaration of the Zend Module Block" for details.

Calling User Functions

You can call user functions from your own modules, which is very handy when implementing callbacks; for example, for array walking, searching, or simply for event-based programs.

User functions can be called with the function call_user_function_ex(). It requires a hash value for the function table you want to access, a pointer to an object (if you want to call a method), the function name, return value, number of arguments, argument array, and a flag indicating whether you want to perform zval separation.

ZEND_API int call_user_function_ex(HashTable *function_table, zval *object,
zval *function_name, zval **retval_ptr_ptr,
int param_count, zval **params[],
int no_separation);

Note that you don't have to specify both function_table and object; either will do. If you want to call a method, you have to supply the object that contains this method, in which case call_user_function()automatically sets the function table to this object's function table. Otherwise, you only need to specify function_table and can set object to NULL.

Usually, the default function table is the "root" function table containing all function entries. This function table is part of the compiler globals and can be accessed using the macro CG. To introduce the compiler globals to your function, call the macro TSRMLS_FETCH once.

The function name is specified in a zval container. This might be a bit surprising at first, but is quite a logical step, since most of the time you'll accept function names as parameters from calling functions within your script, which in turn are contained in zval containers again. Thus, you only have to pass your arguments through to this function. This zval must be of type IS_STRING.

The next argument consists of a pointer to the return value. You don't have to allocate memory for this container; the function will do so by itself. However, you have to destroy this container (using zval_dtor()) afterward!

Next is the parameter count as integer and an array containing all necessary parameters. The last argument specifies whether the function should perform zval separation - this should always be set to 0. If set to 1, the function consumes less memory but fails if any of the parameters need separation.

Calling user functions. shows a small demonstration of calling a user function. The code calls a function that's supplied to it as argument and directly passes this function's return value through as its own return value. Note the use of the constructor and destructor calls at the end - it might not be necessary to do it this way here (since they should be separate values, the assignment might be safe), but this is bulletproof.

Example #15 Calling user functions.

zval **function_name;
zval *retval;

if((ZEND_NUM_ARGS() != 1) || (zend_get_parameters_ex(1, &function_name) != SUCCESS))
{
    WRONG_PARAM_COUNT;
}

if((*function_name)->type != IS_STRING)
{
    zend_error(E_ERROR, "Function requires string argument");
}

TSRMSLS_FETCH();

if(call_user_function_ex(CG(function_table), NULL, *function_name, &retval, 0, NULL, 0) != SUCCESS)
{
    zend_error(E_ERROR, "Function call failed");
}

zend_printf("We have %i as type\n", retval->type);

*return_value = *retval;
zval_copy_ctor(return_value);
zval_ptr_dtor(&retval);

<?php

dl("call_userland.so");

function test_function()
{
    echo "We are in the test function!\n";
    return 'hello';
}

$return_value = call_userland("test_function");

echo "Return value: '$return_value'";
?>

以上例程会输出：

We are in the test function!
We have 3 as type
Return value: 'hello'

Initialization File Support

PHP 4 features a redesigned initialization file support. It's now possible to specify default initialization entries directly in your code, read and change these values at runtime, and create message handlers for change notifications.

To create an .ini section in your own module, use the macros PHP_INI_BEGIN() to mark the beginning of such a section and PHP_INI_END() to mark its end. In between you can use PHP_INI_ENTRY() to create entries.

PHP_INI_BEGIN()
PHP_INI_ENTRY("first_ini_entry",  "has_string_value", PHP_INI_ALL, NULL)
PHP_INI_ENTRY("second_ini_entry", "2",                PHP_INI_SYSTEM, OnChangeSecond)
PHP_INI_ENTRY("third_ini_entry",  "xyz",              PHP_INI_USER, NULL)
PHP_INI_END()
The PHP_INI_ENTRY() macro accepts four parameters: the entry name, the entry value, its change permissions, and a pointer to a change-notification handler. Both entry name and value must be specified as strings, regardless of whether they really are strings or integers.

The permissions are grouped into three sections:PHP_INI_SYSTEM allows a change only directly in the php.ini file; PHP_INI_USER allows a change to be overridden by a user at runtime using additional configuration files, such as .htaccess; and PHP_INI_ALL allows changes to be made without restrictions. There's also a fourth level, PHP_INI_PERDIR, for which we couldn't verify its behavior yet.

The fourth parameter consists of a pointer to a change-notification handler. Whenever one of these initialization entries is changed, this handler is called. Such a handler can be declared using the PHP_INI_MH macro:

PHP_INI_MH(OnChangeSecond);             // handler for ini-entry "second_ini_entry"

// specify ini-entries here

PHP_INI_MH(OnChangeSecond)
{

    zend_printf("Message caught, our ini entry has been changed to %s&lt;br&gt;", new_value);

    return(SUCCESS);

}
The new value is given to the change handler as string in the variable new_value. When looking at the definition of PHP_INI_MH, you actually have a few parameters to use:
#define PHP_INI_MH(name) int name(php_ini_entry *entry, char *new_value,
                                  uint new_value_length, void *mh_arg1,
                                  void *mh_arg2, void *mh_arg3)
All these definitions can be found in php_ini.h. Your message handler will have access to a structure that contains the full entry, the new value, its length, and three optional arguments. These optional arguments can be specified with the additional macros PHP_INI_ENTRY1 (allowing one additional argument), PHP_INI_ENTRY2 (allowing two additional arguments), and PHP_INI_ENTRY3 (allowing three additional arguments).

The change-notification handlers should be used to cache initialization entries locally for faster access or to perform certain tasks that are required if a value changes. For example, if a constant connection to a certain host is required by a module and someone changes the hostname, automatically terminate the old connection and attempt a new one.

Access to initialization entries can also be handled with the macros shown in Macros to Access Initialization Entries in PHP.

Macros to Access Initialization Entries in PHP
Macro | Description
INI_INT(name) | Returns the current value of entry name as integer (long).
INI_FLT(name) | Returns the current value of entry name as float (double).
INI_STR(name) | Returns the current value of entry name as string. Note: This string is not duplicated, but instead points to internal data. Further access requires duplication to local memory.
INI_BOOL(name) | Returns the current value of entry name as Boolean (defined as zend_bool, which currently means unsigned char).
INI_ORIG_INT(name) | Returns the original value of entry name as integer (long).
INI_ORIG_FLT(name) | Returns the original value of entry name as float (double).
INI_ORIG_STR(name) | Returns the original value of entry name as string. Note: This string is not duplicated, but instead points to internal data. Further access requires duplication to local memory.
INI_ORIG_BOOL(name) | Returns the original value of entry name as Boolean (defined as zend_bool, which currently means unsigned char).

Finally, you have to introduce your initialization entries to PHP. This can be done in the module startup and shutdown functions, using the macros REGISTER_INI_ENTRIES() and UNREGISTER_INI_ENTRIES():

ZEND_MINIT_FUNCTION(mymodule)
{

    REGISTER_INI_ENTRIES();

}

ZEND_MSHUTDOWN_FUNCTION(mymodule)
{

    UNREGISTER_INI_ENTRIES();

}

Where to Go from Here

You've learned a lot about PHP. You now know how to create dynamic loadable modules and statically linked extensions. You've learned how PHP and Zend deal with internal storage of variables and how you can create and access these variables. You know quite a set of tool functions that do a lot of routine tasks such as printing informational texts, automatically introducing variables to the symbol table, and so on.

Even though this chapter often had a mostly "referential" character, we hope that it gave you insight on how to start writing your own extensions. For the sake of space, we had to leave out a lot; we suggest that you take the time to study the header files and some modules (especially the ones in the ext/standard directory and the MySQL module, as these implement commonly known functionality). This will give you an idea of how other people have used the API functions - particularly those that didn't make it into this chapter.

Reference: Some Configuration Macros

config.m4

The file config.m4 is processed by buildconf and must contain all the instructions to be executed during configuration. For example, these can include tests for required external files, such as header files, libraries, and so on. PHP defines a set of macros that can be used in this process, the most useful of which are described in M4 Macros for config.m4.

M4 Macros for config.m4
Macro | Description
AC_MSG_CHECKING(message) | Prints a "checking <message>" text during configure.
AC_MSG_RESULT(value) | Gives the result to AC_MSG_CHECKING; should specify either yes or no as value.
AC_MSG_ERROR(message) | Prints message as error message during configure and aborts the script.
AC_DEFINE(name,value,description) | Adds #define to php_config.h with the value of value and a comment that says description (this is useful for conditional compilation of your module).
AC_ADD_INCLUDE(path) | Adds a compiler include path; for example, used if the module needs to add search paths for header files.
AC_ADD_LIBRARY_WITH_PATH(libraryname,librarypath) | Specifies an additional library to link.
AC_ARG_WITH(modulename,description,unconditionaltest,conditionaltest) | Quite a powerful macro, adding the module with description to the configure --help output. PHP checks whether the option --with-<modulename> is given to the configure script. If so, it runs the script unconditionaltest (for example, --with-myext=yes), in which case the value of the option is contained in the variable $withval. Otherwise, it executes conditionaltest.
PHP_EXTENSION(modulename, [shared]) | This macro is a must to call for PHP to configure your extension. You can supply a second argument in addition to your module name, indicating whether you intend compilation as a shared module. This will result in a definition at compile time for your source as COMPILE_DL_<modulename>.

API Macros

A set of macros was introduced into Zend's API that simplify access to zval containers (see API Macros for Accessing zval Containers).

API Macros for Accessing zval Containers
Macro | Refers to
Z_LVAL(zval) | (zval).value.lval
Z_DVAL(zval) | (zval).value.dval
Z_STRVAL(zval) | (zval).value.str.val
Z_STRLEN(zval) | (zval).value.str.len
Z_ARRVAL(zval) | (zval).value.ht
Z_LVAL_P(zval) | (*zval).value.lval
Z_DVAL_P(zval) | (*zval).value.dval
Z_STRVAL_P(zval_p) | (*zval).value.str.val
Z_STRLEN_P(zval_p) | (*zval).value.str.len
Z_ARRVAL_P(zval_p) | (*zval).value.ht
Z_LVAL_PP(zval_pp) | (**zval).value.lval
Z_DVAL_PP(zval_pp) | (**zval).value.dval
Z_STRVAL_PP(zval_pp) | (**zval).value.str.val
Z_STRLEN_PP(zval_pp) | (**zval).value.str.len
Z_ARRVAL_PP(zval_pp) | (**zval).value.ht
Streams API for PHP Extension Authors
TSRM API
Zend Engine 1


TSRM API

Zend API：深入 PHP 内核
FAQ
Zend Engine 1


FAQ：常见问题

  • 一般信息
  • 邮件列表
  • 获取 PHP
  • 数据库问题
  • 安装 — 安装常见问题
  • 编译问题
  • 使用 PHP
  • 密码散列 — 密码散列安全
  • PHP 和 HTML
  • PHP 和 COM
  • 杂类问题
TSRM API
一般信息
PHP 手册


一般信息

本章包括了有关 PHP 的大多数一般问题：它是什么和它做什么。

  1. PHP 是什么？
  2. PHP 这个缩写指的是什么？
  3. PHP 版本之间有什么联系？
  4. 可以同时运行几个不同版本的 PHP 吗？
  5. 我觉得自己发现了一个 bug！应该告诉谁？
PHP 是什么？

根据本手册的 前言：

PHP 是一种 HTML 嵌入式的脚本语言。它的很多语法来自 C，Java 和 Perl，并具有几个 PHP 独有的特点。该语言的主要目标是让 Web 开发人员快速地书写动态生成的网页。

PHP 这个缩写指的是什么？

PHP 是 PHP: Hypertext Preprocessor的首字母缩写。很多人有些糊涂了，因为缩写中的第一个字母也来自缩写。这种方法叫做递归缩写（recursive acronyms），对此好奇的人可以访问 » 在线计算机词典（Free On-Line Dictionary of Computing）或者Wikipedia上 » 递归缩写的解释。

PHP 版本之间有什么联系？

PHP/FI 2.0 是最早的 PHP 版本，已经不再支持。PHP 3 是 PHP/FI 2.0 的后继者，要好很多。PHP 5 是目前一代的 PHP，内部使用了 » Zend 引擎 2 代，除了很多新功能之外还提供了许多附加的 面向对象编程（OOP）特性。

可以同时运行几个不同版本的 PHP 吗？

可以，请参阅见 PHP 源程序发行包中的 INSTALL文件。

我觉得自己发现了一个 bug！应该告诉谁？

应该访问 PHP Bug 数据库并确认你发现的不是一个已知的 bug。如果你在数据库中没有看到同样的，用报告表单来报告此 bug。使用 bug 数据库而不是给某个邮件列表发邮件非常重要，因为该 bug 会被分配一个跟踪号码，这样你就有可能在以后回来查看该 bug 的状态。Bug 数据库在 » http://bugs.php.net/。

FAQ
邮件列表
FAQ


邮件列表

本章包括有关如何与 PHP 团体接触的问题。最好的方法是邮件列表。

  1. 有没有 PHP 的邮件列表？
  2. 还有其它的团体吗？
  3. 我可以建立我自己的PHP邮件列表吗？
  4. 救命！我看来不能订阅／取消任何一个邮件列表！
  5. 在哪里有个邮件列表的归档吗？
  6. 我可以在邮件列表中问什么？
  7. 向邮件列表发帖子时我需要包括些什么信息？
有没有 PHP 的邮件列表？

当然有！有很多关于几个主题的邮件列表。所有邮件列表的完整列表在 » 技术支持页面。

最通用的邮件列表是 php-general。要订阅，发送一封邮件到 » php-general-subscribe@lists.php.net。不需要在邮件主题或内容中包括任何特殊单词。要取消订阅，发送一封邮件到 » php-general-unsubscribe@lists.php.net。

也可以在我们的 » 技术支持页面通过 web 界面来订阅和取消。

还有其它的团体吗？

世界上有无数 PHP 团体。我们的 » 技术支持页面上有例如一些 IRC 服务器和其它语种的邮件列表。

我可以建立我自己的PHP邮件列表吗？

百分百可以！实际上，我们不仅允许这么做，而且鼓励这么做！ 通过分享您在PHP方面的知识和经验来帮助他人， 有助于促进PHP组织和PHP语言本身的增长和发展。

救命！我看来不能订阅／取消任何一个邮件列表！

如果你在订阅或取消 php-general 邮件列表上有问题，可能是因为邮件列表软件没法确定你正确的邮件地址。如果你的 email 地址是 joeblow@example.com，可以将订阅请求发送到 php-general-subscribe-joeblow=example.com@lists.php.net，或者将取消请求发送到 php-general-unsubscribe-joeblow=example.com@lists.php.net。对其它邮件列表用类似的地址。

The most common reason folks have a hard time unsubscribing from our mailing lists is due to the use of mail forwarders. For example, if your email address is danbrown@example.com, but you subscribed to the mailing list with the forwarder php-lists@example.com and forward that to danbrown@example.com, attempting to unsubscribe danbrown@example.com will not work, as that address is not even known to our systems. Instead, you will need to unsubscribe the address to which the mail is being sent - in this example, php-lists@example.com.

在哪里有个邮件列表的归档吗？

是的，你可以在 » 技术支持页面找到归档站点的列表。 You will also find dozens of sites that archive and/or syndicate our mailing list content by using your favorite Internet search engine and searching for "php mailing list archives".

邮件列表的文章也被作为新闻组消息归档。你可以用新闻组客户端来访问位于 » news://news.php.net/的新闻组服务器。也有一个试验性质的新闻组服务器的 web 界面位于 » http://news.php.net/。

我可以在邮件列表中问什么？

由于 PHP 一天比一天更流行，php-general 邮件列表的流量增加到现在的每天 150 到 200 个帖子。由于此原因，为了每个人的利益，使用此列表是你在寻找过所有其它地方后的最后手段。

在你向列表发帖之前请先看看本 FAQ 以及手册是不是能找到帮助。如果找不到的话试试邮件列表归档（见上面）。如果你有安装或者配置 PHP 的问题请从头到尾读一遍所有包含的文档和 README 文件。如果还是不能找到任何可以帮助你的信息，那么很欢迎你使用此邮件列表。

To ensure that you receive the best responses (and to reduce the likelihood of frustrating your fellow developers), please be sure to post your question to the appropriate list. For example, if you are having difficulties installing PHP, you should send your question to the php-install mailing list. A caveat: some lists have similar names and completely different uses; a question regarding PHP scripts on Windows should be directed to the Windows PHP users list, not to the Windows Internals list.

在提问之前，阅读一下 » 怎样聪明地发问这篇文章对每个人都是个好主意。

向邮件列表发帖子时我需要包括些什么信息？

像"我不能启动运行 PHP！帮帮我！哪里出错了？"之类的贴子对任何人都完全没有用。如果你在启动和运行 PHP 上有问题你必须包括你运行的操作系统，你试图配置的 PHP 版本，你怎样得到的（预编译的，CVS，RPM 等等），目前为止你都做了些什么，卡在了何处以及确切的错误信息。

这也同样适用于其它问题。你必须包括你做了什么，卡在了哪里，你试图做什么以及，如果有的话，确切的错误信息。如果你有源代码的问题那你需要包括不起作用部分的代码。可是不要包括超出所必需的代码！这将使贴子很难读并使很多人为此而跳过它。如果你不确定应该在邮件中包括多少信息，那包括多一些比一点点更好。

另一件重要的事是记住在主题一行中概述你的问题。类似"救命！"或者"这是怎么回事？"的主题会被一大半读者忽略。

最后，我们鼓励你阅读一下 » 怎样聪明地发问这篇文章。这对每个人都有很大帮助，尤其是你自己。

一般信息
获取 PHP
FAQ


获取 PHP

本章包括 PHP 下载地址以及操作系统相关问题的详细资料。

  1. PHP 可以从哪里得到？
  2. 有预先编译好的可执行版本吗？
  3. 编译一些可选的 PHP 扩展库所需的库文件可以从哪里得到？
  4. 怎样使这些库起作用？
  5. 我在 Windows 机器中从 SVN 里得到了最新版的 PHP 源代码，需要什么去编译它？
  6. 哪里可以找到 browscap.ini 文件？
PHP 可以从哪里得到？

可以从任何一个 PHP 网络成员的站点下载 PHP。这些信息在 » http://www.php.net/。还可以通过匿名 SVN 得到绝对是最新版的源程序。更多信息请访问 [broken link]。

有预先编译好的可执行版本吗？

我们只为 Windows 系统提供了预编译的可执行文件，因为我们没法为每个主流的 Linux/Unix 平台编译每一种扩展库组和的 PHP。同样注意，如今很多 Linux 的发行版本已经内置了 PHP。Windows 可执行文件可以从我们的 » 下载页面下载，至于 Linux 可执行文件，请访问你的 Linux 发布商的站点。

编译一些可选的 PHP 扩展库所需的库文件可以从哪里得到？

Note: 有 * 号标记的不是多线程的库，不应该用作多线程 Windows web 服务器（IIS，Netscape）的服务器模块。不过这在 Unix 环境下没有关系。

  • » LDAP (Unix)
  • » LDAP (Unix/Win): Mozilla Directory (LDAP) SDK
  • » 免费 LDAP 服务器
  • » Berkeley DB2 (Unix/Win): http://www.sleepycat.com/.
  • » SNMP* (Unix):
  • » GD* (Unix/Win)
  • » mSQL* (Unix)
  • » PostgreSQL (Unix)
  • » IMAP* (Win/Unix)
  • » Sybase-CT* (Linux, libc5)：内置
  • » FreeType (libttf):
  • » ZLib (Unix/Win32)
  • » expat XML parser (Unix/Win32)
  • » PDFLib
  • » mcrypt
  • » mhash
  • » t1lib
  • » dmalloc
  • » aspell
  • » readline

怎样使这些库起作用？

需要按照这些库提供的说明进行。一些库可以在运行 PHP 的"configure"时自动检测到（例如 GD 库），其它的必需用" --with-EXTENSION"选项来激活。运行" configure --help"来得到完整的列表。

我在 Windows 机器中从 SVN 里得到了最新版的 PHP 源代码，需要什么去编译它？

首先，需要 Microsoft Visual C++ v6（v5 也许也行，不过我们是用 v6 编译的），此外还需要一些支持文件。参见手册中的 在 Windows 下编译 PHP 源代码一节。

哪里可以找到 browscap.ini 文件？

可以从 » http://browscap.org/得到一个 browscap.ini文件。

邮件列表
数据库问题
FAQ


数据库问题

本节包括 PHP 和数据库之间关系的常见问题。是的，PHP 事实上可以访问如今现有的任何数据库。

  1. 听说 PHP 有可能访问 Microsoft SQL Server，怎样访问？
  2. 能访问 Microsoft Access 数据库吗？
  3. 我升级到了 PHP 4，结果 MySQL 不断报告“Warning: MySQL: Unable to save result set in ..”，这是怎么回事？
  4. Why is the MySQL extension (ext/mysql) that I've been using for over 10 years discouraged from use? Is it deprecated? What do I use instead? How can I migrate?
  5. 为什么我得到类似如下的错误：“Warning: 0 is not a MySQL result index in <file> on line <x>”或者“Warning: Supplied argument is not a valid MySQL result resource in <file> on line <x>”？
听说 PHP 有可能访问 Microsoft SQL Server，怎样访问？

在 Windows 机器中，可以简单地使用内置的 ODBC 支持和正确的 ODBC 驱动程序。

在 Unix 机器中，可以用 Sybase-CT 驱动程序来访问 Microsoft SQL Server，因为它们的协议是（至少大部分）兼容的。Sybase 做了一个 Linux 系统下所需库的免费版本。对于其它 Unix 操作系统，需要和 Sybase 联系来得到正确的库。同样也看看下一个问题的回答。

能访问 Microsoft Access 数据库吗？

可以。如果完全在 Windows 9x/Me/NT/2000 下运行，那已经有了所有所需的工具，可以用 ODBC 和 Microsoft's ODBC drivers for Microsoft Access database。

如果在 Unix 下运行 PHP 而想访问 Windows 中的 MS Access，那需要 Unix ODBC 驱动程序。 » OpenLink Software有一个基于 Unix 的 ODBC 驱动程序可以做这件事。

另外一个替代方案是用带 Windows ODBC 驱动的 SQL Server 并用它来储存数据，可以通过 Microsoft Access（用 ODBC）和 PHP（用内置驱动）来访问，或者用一个 Access 和 PHP 都识别的中间文件格式，例如 flat 文件或者 dBase 数据库。关于这一点 OpenLink Software 的 Tim Hayes 写道：

当可以通过 ODBC 直接从 PHP 访问数据库时——例如用 OpenLink 的驱动程序，使用其它数据库做中间媒介不是一个好主意。如果确实需要一个中间文件格式，OpenLink 已经发布了对应于 Windows NT，Linux 和其它 Unix 平台的 Virtuoso（一个虚拟数据库引擎）。请访问我们的 » 网站来免费下载。

还有一个已被证实有效的选择是在 Windows 下用 MySQL 和它的 MyODBC 驱动来同步数据库。Steve Lawrence 写道：

  • 根据 MySQL 的说明在你的平台上安装 MySQL。可以从 » http://www.mysql.com/得到最新版。除了设定数据库和配置用户帐号以外不需要特殊的配置，应该在 host 字段中放一个 % 或者要用来访问 MySQL 的 Windows 机器名。记下自己的服务器名，用户名和密码。
  • 从 MySQL 网站下载 MyODBC for Windows 驱动程序。在你的 Windows 机器中安装它。可以用此程序中包括的工具来测试其操作。
  • 用控制面板中的 ODBC 管理器新建一个用户或系统 dsn，设定 dsn 名称，输入你在第一步中配置的 MySQL 数据库的主机名，用户名，密码，端口等。
  • 完整安装 Access，这样可以确保得到适当的插件 ... 至少需要 ODBC 支持和连接表管理器。
  • 新建一个 Access 数据库。在 Table 窗口点击右键并选择 Link Tables，或者在 File 菜单下选择 Get External Data -> Link Tables。当文件浏览窗口打开后，选择文件类型为：ODBC。接着选择 System dsn 以及在第三步建立的 dsn 的名字。再选择要连接的表，点击 OK。现在你可以在你的 MySQL 服务器中打开表并新建／删除／编辑数据了！也可以构造查询，导入／导出表到 MySQL，构造表单和报告等。

提示与技巧：

  • 可以在 Access 中构造表并导出到 MySQL 中，再把它们连接回来。这样可以使表的建立更快。
  • 在 Access 中建立表时，必需定义一个基本键名来取得表的写权限。确认在把表连接到 Access 之前在 MySQL 中建立了基本键名。
  • 如果在 MySQL 中修改了表，必须重新连接到 Access。打开 Tools>Add-ins>Linked table manager，找到你的 ODBC DSN，然后在这里选择要重新连接的表。也可以在这里移动 dsn 源，在点击 OK 之前选中 always prompt for new location。

我升级到了 PHP 4，结果 MySQL 不断报告"Warning: MySQL: Unable to save result set in .."，这是怎么回事？

看上去最有可能的是，PHP 4 在编译时使用了 --with-mysql 选项但没有指定 MySQL 的路径。这意味着 PHP 使用了它自己内置的 MySQL 客户端库。如果你的系统运行了使用其它版本的 MySQL 客户端库的应用程序，例如作为 Apache 模块的 PHP 3，那么在两个不同版本的客户端之间有冲突。

重新编译 PHP 4，并在标记中加上 MySQL 的路径" --with-mysql=/your/path/to/mysql"通常会解决此问题。

Why is the MySQL extension (ext/mysql) that I've been using for over 10 years discouraged from use? Is it deprecated? What do I use instead? How can I migrate?

There are three MySQL extensions, as described under the Choosing a MySQL API section. The old API should not be used, and one day it will be deprecated and eventually removed from PHP. It is a popular extension so this will be a slow process, but you are strongly encouraged to write all new code with either mysqli or PDO_MySQL.

Migration scripts are not available at this time, although the mysqli API contains both a procedural and OOP API, with the procedural version being similar to ext/mysql.

It is not possible to mix the extensions. So, for example, passing a mysqli connection to PDO_MySQL or ext/mysql will not work.

为什么我得到类似如下的错误："Warning: 0 is not a MySQL result index in <file> on line <x>"或者"Warning: Supplied argument is not a valid MySQL result resource in <file> on line <x>"？

你试图用一个值为 0 的结果资源号。0 表示你的查询由于某原因失败了，需要在提交查询之后和在使用返回结果资源号之前检查错误。正确的方法是用类似如下的代码：

<?php

$result = mysql_query("SELECT * FROM tables_priv");
if (!$result) {
    echo mysql_error();
    exit;
}
?>
或者
<?php

$result = mysql_query("SELECT * FROM tables_priv")
    or die("Bad query: " . mysql_error());
?>

获取 PHP
安装
FAQ


安装常见问题

本章包括了安装 PHP 的常见问题。PHP 可以用于几乎任何操作系统（可能除了 OS X 之前的 MacOS 之外），以及几乎任何 web 服务器。

要安装 PHP，请按照 安装与配置一章中的指示进行。

  1. 为什么不应该在实际运作环境中的 Apache2 中使用线程化的 MPM？
  2. Unix/Windows：应该上哪儿去找我的 php.ini 文件？
  3. Unix：我安装了 PHP，但每次我打开一个页面时，只得到一条“Document Contains No Data”消息！这是怎么回事？
  4. Unix：我从 RPMS 安装了 PHP，但是 Apache 不处理 PHP 页面！这是怎么回事？
  5. Unix：我从 RPMS 安装了 PHP 3，但它没有把我需要的数据库支持编译进去！这是怎么回事？
  6. Unix：我给 Apache 加上了 FrontPage extensions 补丁，结果 PHP 突然不工作了。PHP 和 Apache FrontPage extensions 兼容吗？
  7. Unix/Windows：我已经安装了 PHP，但当我试着通过浏览器访问 PHP 脚本时，得到了一个空白页面。
  8. Unix/Windows：我已经安装了 PHP，但当我试着通过浏览器访问 PHP 脚本时，得到了一个服务器的 500 错误。
  9. 某些操作系统：我已经在不出错的情况下安装了 PHP，但当我试着启动 Apache 时得到了一个未定义符号错误： [mybox:user /src/php4] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols: _compress _uncompress
  10. Windows：我已经安装了 PHP，但当我试着通过浏览器访问 PHP 脚本时，得到如下错误： cgi error: The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
  11. Windows：我已经照着所有的说明做了，但还是不能让 PHP 和 IIS 一起工作！
  12. 当在 IIS，PWS，OmniHTTPD 或者 Xitami 中以 CGI 方式运行 PHP 时，出现如下错误： Security Alert! PHP CGI cannot be accessed directly..
  13. 怎样得知我的 php.ini 是否被找到和应用了？似乎我做的修改都没有生效。
  14. 怎样将 PHP 目录加入到 Windows 路径 PATH中去？
  15. 怎样使 php.ini 文件在 Windows 下被 PHP 所用？
  16. 有可能使 PHP 运作于 Apache 的 content negotiation（MultiViews 选项）吗？
  17. PHP 是否仅限于处理 GET 和 POST 请求方法？
为什么不应该在实际运作环境中的 Apache2 中使用线程化的 MPM？

PHP 是粘合剂。它将几十种第三方的库粘合到一起来创建很酷的 web 应用，并通过很直观且易于学习的语言界面使其看上去好像一个整体。PHP 的灵活与强大依赖于底层平台的稳定与耐用。起码需要将一个可运作的操作系统，一个可运作的 web 服务器以及可运作的第三方库粘合起来。其中任何一方不运作了，PHP 都需要有方法来识别出问题并且快速解决。如果没有完全独立的执行线程，完全独立的内存单元和稳定的空间对付每个请求，那底层架构就太复杂以至于不稳定因素更容易进入到 PHP 系统中。

如果必须要用线程化的 MPM，看看 FastCGI 配置，使 PHP 运行于自己独立的内存空间中。

最后需要指出，不使用线程化 MPM 的警告在 Windows 系统中没那么强烈，因为 Windows 中的大多数库都理应在多线程下安全运行。

Unix/Windows：应该上哪儿去找我的 php.ini 文件？

UNIX 中默认在 /usr/local/lib目录中，也就是 <install-path>/lib。很多人会在编译时通过 --with-config-file-path标记来改变路径。例如可以将路径设为：

--with-config-file-path=/etc
然后从发行包中将 php.ini-dist拷贝为 /etc/php.ini并编辑它来作出想要的修改。

--with-config-file-scan-dir=PATH

Windows 中 php.ini 文件的默认路径在 Windows 目录下。如果使用的是 Apache 服务器，则会首先在 Apache 的安装目录中寻找 php.ini，例如 C:\Program Files\Apache Group\Apache。这样同一台机器上不同版本的 Apache 就可以有不同的 php.ini 文件。

参见 配置文件。

Unix：我安装了 PHP，但每次我打开一个页面时，只得到一条"Document Contains No Data"消息！这是怎么回事？

这可能意味着 PHP 发生了某类错误而导致了 core dump。查看服务器的错误日志看看是不是这样，再用一个小的测试例子试着重现此问题。如果你会用"gdb"的话，那么在 bug 报告中提供回溯跟踪很有助于帮开发人员查明问题。如果你用 Apache 的模块方式使用 PHP，试着这么做：

  • 停止 httpd 进程

  • gdb httpd

  • 停止 httpd 进程

  • > run -X -f /path/to/httpd.conf

  • 然后在你的浏览器中访问导致错误的 URL

  • > run -X -f /path/to/httpd.conf

  • 如果你遇到 core dump，gdb 此时就会通知你

  • 输入：bt

  • 你应该在 bug 报告中包括回溯追踪记录。应该提交到 » http://bugs.php.net/

如果你的脚本使用了正则表达式函数（ ereg()等），应该确认在编译 PHP 和 Apache 时使用了同一个正则表达式包。在 PHP 和 Apache 1.3.x 中应该自动就是这样。

Unix：我从 RPMS 安装了 PHP，但是 Apache 不处理 PHP 页面！这是怎么回事？

假定你的 Apache 和 PHP 都是从 RPM 包中安装的，你需要在 httpd.conf 文件中取消以下部分或所有行的注释，或者把它们添加到该文件中：

# Extra Modules
AddModule mod_php.c
AddModule mod_php3.c
AddModule mod_perl.c

# Extra Modules
LoadModule php_module         modules/mod_php.so
LoadModule php3_module        modules/libphp3.so     # for PHP 3
LoadModule php4_module        modules/libphp4.so     # for PHP 4
LoadModule perl_module        modules/libperl.so
并且把：
AddType application/x-httpd-php3 .php3    # for PHP 3
AddType application/x-httpd-php .php      # for PHP 4
添加到全局属性中，或者添加到你希望加入 PHP 支持的虚拟域中。

Unix：我从 RPMS 安装了 PHP 3，但它没有把我需要的数据库支持编译进去！这是怎么回事？

由于 PHP 3 构造的原因，不容易编译出一个完全灵活的 PHP RPM 包来。这个问题在 PHP 4 中解决了。对于 PHP 3 来说，我们目前建议你用 PHP 发行包中 INSTALL.REDHAT 文件中所描述的机制。如果你坚持要用 PHP 3 的 RPM 版本，请接着往下看。

为了简化安装 以及由于 RPMS 使用了 /usr/ 而不是标准的 /usr/local/ 目录来存放文件，制作 RPM 包的人设定 RPMS 不安装任何数据库支持。你需要告诉 RPM 说明文件，你想要支持哪个数据库以及你的数据库服务器最高层路径。

下面的例子解说了如何在用模块安装下的 Apache 中加入流行的 MySQL 数据库服务器支持的过程。

当然这些信息可以调整用于任何 PHP 支持的数据库服务器。本例中我们也假定你从 RPMS 中完整安装了 MySQL 和 Apache。

  • 先去掉 mod_php3：

    rpm -e mod_php3

  • 然后取得源文件的 rpm 包并安装它，而不是编译它。

    rpm -Uvh mod_php3-3.0.5-2.src.rpm

  • 接着编辑 /usr/src/redhat/SPECS/mod_php3.spec文件

    在 %build 一节加入你想要的数据库支持，以及路径。

    对应于 MySQL 你应该加入 --with-mysql=/usr 。则 %build 一节看上去将类似这样：

    ./configure --prefix=/usr \ --with-apxs=/usr/sbin/apxs \ --with-config-file-path=/usr/lib \ --enable-debug=no \ --enable-safe-mode \ --with-exec-dir=/usr/bin \ --with-mysql=/usr \ --with-system-regex

  • 一旦完成了这个修改，就这样建立二进制程序的 rpm 包：

    rpm -bb /usr/src/redhat/SPECS/mod_php3.spec

  • 然后安装 rpm

    rpm -ivh /usr/src/redhat/RPMS/i386/mod_php3-3.0.5-2.i386.rpm

确认重新启动了 Apache，这下你就有了用 RPM 安装的并且带 MySQL 支持的 PHP 3 了。注意按照 PHP 3 发行包中 INSTALL.REDHAT文件的说明来编译其实也许更容易一些。

Unix：我给 Apache 加上了 FrontPage extensions 补丁，结果 PHP 突然不工作了。PHP 和 Apache FrontPage extensions 兼容吗？

兼容的。PHP 可以和 FrontPage extensions 一起工作，问题是 FrontPage 补丁修改了几个 PHP 依赖的 Apache 构造。在 FrontPage 补丁安装之后之后重新编译 PHP（用"make clean ; make"）可以解决此问题。

Unix/Windows：我已经安装了 PHP，但当我试着通过浏览器访问 PHP 脚本时，得到了一个空白页面。

用浏览器中的"查看源文件"，你可能会发现能看到 PHP 脚本的源程序。这意味着 web 服务器没有把脚本发送给 PHP 解释。服务器配置在某处有问题，请对照 PHP 安装说明仔细检查服务器配置。

Unix/Windows：我已经安装了 PHP，但当我试着通过浏览器访问 PHP 脚本时，得到了一个服务器的 500 错误。

当服务器尝试运行 PHP 时出了错。要想看到有意义的错误信息，在命令行中转到 PHP 可执行程序（Windows 中是 php.exe）所在目录下并运行 php -i。如果 PHP 运行有任何问题，那么会显示相应的错误信息，这将给你下一步要做什么的线索。如果你得到满屏幕 HTML 代码（ phpinfo()函数的输出）的话说明 PHP 本身工作正常，你的问题可能和你的服务器配置有关，要仔细检查。

某些操作系统：我已经在不出错的情况下安装了 PHP，但当我试着启动 Apache 时得到了一个未定义符号错误：
[mybox:user /src/php4] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols: _compress _uncompress

这实际上和 PHP 没有关系，而和 MySQL 的客户端库有关。有的需要 --with-zlib ，有的不需要。这个问题也包括在 MySQL 的 FAQ 中。

Windows：我已经安装了 PHP，但当我试着通过浏览器访问 PHP 脚本时，得到如下错误：
cgi error: The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:

这个错误信息意味着 PHP 根本就不能产生任何输出。要想看到有意义的错误信息，在命令行中转到 PHP 可执行程序（Windows 中是 php.exe）所在目录下并运行 php -i。如果 PHP 运行有任何问题，那么会显示相应的错误信息，这将给你下一步要做什么的线索。如果你得到满屏幕 HTML 代码（ phpinfo()函数的输出）的话说明 PHP 本身工作正常。

一旦 PHP 在命令行中工作正常，试着通过浏览器再次访问脚本。如果还失败的话那可能是如下原因之一：

  • 文件权限问题，你的 PHP 脚本， php.exe， php4ts.dll，php.ini 或任何你要加载的 PHP 扩展库是匿名 internet 用户 ISUR_<machinename>无权访问的。
  • 脚本文件不存在（或者有可能不在你以为的地方，注意 web 文档的目录）。注意在 IIS 中通过 Internet 服务管理器设定脚本映射时选中"检查文件是否存在"可以捕捉到此错误。这样一来如果脚本文件不存在的话服务器就会返回一个 404 错误信息。还有一个额外的好处就是 IIS 会基于 NTLanMan 权限来替你对脚本文件做任何所需要的认证。
Windows：我已经照着所有的说明做了，但还是不能让 PHP 和 IIS 一起工作！

确认需要运行 PHP 脚本的任何用户有权限运行 php.exe！IIS 使用了一个在安装 IIS 时添加的匿名用户，这个用户需要有访问 php.exe的权限。同样任何认证用户也需要执行 php.exe的权限。在 IIS4 中你还需要告诉它 PHP 是一个脚本引擎。此外，你可能还需要阅读 此常见问题。

当在 IIS，PWS，OmniHTTPD 或者 Xitami 中以 CGI 方式运行 PHP 时，出现如下错误： Security Alert! PHP CGI cannot be accessed directly..

必须将 cgi.force_redirect选项设为 0。 默认值为 1，因此要确认此选项没有被注释掉（用 ;）。和其它选项一样，是在 php.ini 中设定的。

因为默认值是 1，因此你必须百分之百确认使用了正确的 php.ini 文件。详细信息请阅读 此常见问题。

怎样得知我的 php.ini 是否被找到和应用了？似乎我做的修改都没有生效。

要确认你的 php.ini 被 PHP 使用了，调用 phpinfo()，在接近开头的位置有一项叫做 Configuration File (php.ini)。这里将告诉你 PHP 在哪里找到了 php.ini 并且是否使用了。如果只显示一个目录则 没有使用任何 php.ini 文件，你应将你的 php.ini 文件放到该目录中。如果 php.ini 包括在该路径中则它已被应用了。

如果 php.ini 被使用了并且你是以模块方式运行 PHP 的，确保在修改了 php.ini 之后重新启动你的 web server。

怎样将 PHP 目录加入到 Windows 路径 PATH中去？

在 Windows NT，2000，XP 和 2003 下：

  • 进入控制面板并打开"系统"图标（开始 -> 设置 -> 控制面板 -> 系统，Windows XP/2003 中是：开始 -> 控制面板 -> 系统）

  • 选择"高级"标签页

  • 点击"环境变量"按钮

  • 在"系统变量"栏中

  • 找到 Path 这一项（可能需要向下滚动才能找到）

  • 鼠标双击 Path 这一项

  • 在最后加入你的 PHP 目录，包括前面的";"（例如： ;C:\php）

  • 点击"确定"并重新启动电脑

在 Windows 98/Me 中需要编辑 autoexec.bat文件：

  • 打开记事本（开始 -> 运行，然后输入 notepad 并点确定）

  • 打开 C:\autoexec.bat文件

  • 找到这么一行：PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;..... 并在最后加上 ;C:\php

  • 保存文件并重新启动电脑

Note: 记住在上述修改之后重新启动，以确保对 PATH的改变生效。

PHP 手册过去提倡把文件拷贝到 Windows 系统目录中去，这是因为该目录（ C:\Windows， C:\WINNT，等等）默认就在系统路径中。但是把文件拷贝到 Windows 系统目录中这一方式早已不被提倡，还可能造成问题。

怎样使 php.ini 文件在 Windows 下被 PHP 所用？

有几种方法。如果使用 Apache，阅读专门的安装指示（ Apache 1， Apache 2），否则就必须设定 PHPRC环境变量：

在 Windows NT，2000，XP 和 2003 种：

  • 进入控制面板并打开"系统"图标（开始 -> 设置 -> 控制面板 -> 系统，Windows XP/2003 中是：开始 -> 控制面板 -> 系统）

  • 选择"高级"标签页

  • 点击"环境变量"按钮

  • 在"系统变量"栏中

  • 点击"新建"按钮并在"变量名"中输入"PHPRC"，在"变量值"中输入 php.ini 文件所在的目录（例如： C:\php）

  • 点击"确定"并重新启动电脑

在 Windows 98/Me 中需要编辑 autoexec.bat文件：

  • 打开记事本（开始 -> 运行，然后输入 notepad 并点确定）

  • 打开 C:\autoexec.bat文件

  • 在文件结尾处加入一行： set PHPRC=C:\php（将 C:\php替换为你的 php.ini 实际存在的目录）。注意路径中不能包含空格。例如将 PHP 安装到了 C:\Program Files\PHP中，你需要输入 C:\PROGRA~1\PHP替代之

  • 保存文件并重新启动电脑

有可能使 PHP 运作于 Apache 的 content negotiation（MultiViews 选项）吗？

如果到 PHP 文件的连接包含扩展名，一切都运行完美。本解答只针对到 PHP 文件的连接不包含扩展名时，而希望通过 content negotiation 来从不包含扩展名的 URL 来选择 PHP 文件的情况。在此种情况下，将 AddType application/x-httpd-php .php替换为：

# PHP 4
AddHandler php-script php
AddType text/html php

# PHP 5
AddHandler php5-script php
AddType text/html php
此方案对于 Apache 1 不适用，因为 PHP 模块不捕获 php-script。

PHP 是否仅限于处理 GET 和 POST 请求方法？

不是，PHP 有可能处理任何请求方法，例如 CONNECT。适当的回应状态可以用 header()发送。如果仅需要处理 GET 和 POST 方法，可以通过如下的 Apache 配置实现：

<LimitExcept GET POST>
Deny from all
</LimitExcept>

数据库问题
编译问题
FAQ


编译问题

本节汇集了大多数编译时出现的常见错误。

  1. 我用匿名 GIT 服务得到了最新版的 PHP，但是里面没有 configure 脚本！
  2. 我在配置 PHP 和 Apache 一起工作时遇到了问题。说没找到 httpd.h，但这个文件明明就在那里！
  3. 当运行 PHP 配置时（ ./configure），遇到类似如下的问题： checking lex output file root... ./configure: lex: command not found configure: error: cannot find output from lex; giving up
  4. 当试图启动 Apache 时，得到类似如下错误信息： fatal: relocation error: file /path/to/libphp4.so: symbol ap_block_alarms: referenced symbol not found
  5. 当运行 configure 时，报告说找不到头文件或 GD 库或 gdbm，或其它的什么包！
  6. 当编译 language-parser.tab.c文件时，报错说 yytname undeclared。
  7. 当我运行 make时，看上去一切正常，可当连接最后的程序时报告说找不到某些文件而失败了。
  8. 当连接 PHP 时，报告说有一些未定义的引用。
  9. 我不知道怎样把 PHP 和 Apache 1.3 一起编译。
  10. 我按照所有的步骤在 UNIX 下安装了PHP 的 Apache 模块版本，但我的 PHP 脚本被显示在浏览器中或者提示保存此文件。
  11. 说要用： --activate-module=src/modules/php4/libphp4.a，但是此文件根本不存在，于是我改成了 --activate-module=src/modules/php4/libmodphp4.a，结果不行。怎么回事？
  12. 当我用 --activate-module=src/modules/php4/libphp4.a试着把 PHP 编译成 Apache 的静态模块时，报告说我的编译器不服从 ANSI 标准。
  13. 当我用 --with-apxs编译 PHP 时得到奇怪的错误信息。
  14. 在 make的过程中，在 microtime 中出错，还有很多 RUSAGE_之类的东西。
  15. 当带 MySQL 编译 PHP 时，可以正确地运行configure，但是在 make的过程中出现了类似以下的错误信息： ext/mysql/ libmysqlclient /my_tempnam.o(.text+0x46): In function my_tempnam': /php4/ext/mysql/ libmysqlclient /my_tempnam.c:103: the use of tempnam' is dangerous, better use mkstemp'，这是怎么回事
  16. 我想升级我的 PHP。上哪里找到我用来配置目前的 PHP 的 ./configure的参数呢？
  17. 和 GD 库一起编译 PHP 时，要么给出一个奇怪的编译错误，要么在运行时出现 segfaults。
  18. 当编译 PHP 时我看到一些随机的错误，好像死了。我用的是 Solaris，不知道有没有关系。
我用匿名 GIT 服务得到了最新版的 PHP，但是里面没有 configure 脚本！

你必须安装有 GNU autoconf 包，这样才可以从 configure.in生成 configure 脚本。从 GIT 服务中得到源程序后只要在最高层的目录中运行 ./buildconf即可。（同时要注意，除非你用了 --enable-maintainer-mode选项来运行 configure，否则即使 configure.in文件更新了，configure 脚本也不会自动重新生成。所以当你发现 configure.in文件更新了时要确保手工重新生成 configure 脚本。有一个症状是在 configure 之后或者运行 config.status时在 Makefile 中寻找类似 @VARIABLE@ 的东西。）

我在配置 PHP 和 Apache 一起工作时遇到了问题。说没找到 httpd.h，但这个文件明明就在那里！

你需要告诉 configure/setup 脚本你的 Apache 源程序最上层的目录位置。这意味着你需要这样指定 --with-apache=/path/to/apache 而 不是这样 --with-apache=/path/to/apache/src 。

当运行 PHP 配置时（ ./configure），遇到类似如下的问题：
checking lex output file root... ./configure: lex: command not found configure: error: cannot find output from lex; giving up

请认真阅读 PHP 的 安装说明，并注意要编译 PHP 需要同时安装 flex 和 bison。根据设置的不同，可以从源代码编译 bison 和 flex，要么通过已编译好的发行包，例如 RPM。

当试图启动 Apache 时，得到类似如下错误信息：
fatal: relocation error: file /path/to/libphp4.so: symbol ap_block_alarms: referenced symbol not found

该错误通常在 Apache 的核心程序被编译为共享用途的 DSO 库时发生。请尝试重新配置 Apache，确保至少使用了如下参数：

--enable-shared=max --enable-rule=SHARED_CORE

更多信息，请阅读 Apache 顶层目录的 INSTALL文件或者 Apache 的 » DSO 手册。

当运行 configure 时，报告说找不到头文件或 GD 库或 gdbm，或其它的什么包！

可以通过指定附加的选项让 configure 脚本在非标准的路径中寻找头文件和库并传递给 C 预处理器和连接器，例如：

    CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure
如果用 csh 的变种作为你的登录 shell（为什么？），那就是：
    env CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure

当编译 language-parser.tab.c文件时，报错说 yytname undeclared。

需要更新 Bison 的版本。最新版本在 » http://www.gnu.org/software/bison/bison.html。

当我运行 make时，看上去一切正常，可当连接最后的程序时报告说找不到某些文件而失败了。

一些旧版本的 make 没有正确将 functions 目录下编译后的文件放到同一个目录下。试试运行 cp *.o functions然后再运行 make看看有没有什么帮助。如果成功了，那你确实需要更新到最新版的 GNU make。

当连接 PHP 时，报告说有一些未定义的引用。

看看连接的这一行命令，确认所有适当的库都包括在最后了。通常可能漏掉了"-ldl"和你包括的任何数据库支持所需要的库。

一些人也报告说在和 Apache 连接时他们不得不紧接着 libphp4.a之后加上"-ldl"。

我不知道怎样把 PHP 和 Apache 1.3 一起编译。

这其实很简单。小心地照着以下步骤来：

  • 从 » http://httpd.apache.org/download.cgi下载最新版的 Apache 1.3。
  • 解压缩到某处，例如 /usr/local/src/apache-1.3。
  • 编译 PHP，先运行 ./configure --with-apache=/<path>/apache-1.3（用你 apache-1.3 所在的真实路径替换掉 <path>。）
  • 输入 make接着是 make install来编译 PHP 并把必要的文件拷贝到 Apache 的源程序目录树中。
  • 改变当前目录到 /<path>/apache-1.3/src目录并编辑 Configuration文件。添加这一行： AddModule modules/php4/libphp4.a。
  • 输入 ./configure接着是 make。
  • 你现在应该有一个包括 PHP 支持的 httpd 可执行程序了！

注意：也可以用新的 Apache ./configure脚本。参见 Apache 发行包中 README.configure文件中的说明。也看看 PHP 发行包中的 INSTALL文件。

我按照所有的步骤在 UNIX 下安装了PHP 的 Apache 模块版本，但我的 PHP 脚本被显示在浏览器中或者提示保存此文件。

这说明 PHP 模块出于某些原因没有被调用。在寻求更多帮助前先检查三件事：

  • 确认你运行的 httpd 程序就是你刚刚编译的新 httpd 程序。运行： /path/to/binary/httpd -l 如果你没看到 mod_php4.c被列出来那你就没有运行对程序。找到并正确安装程序。
  • 确认你在 Apache .conf文件中加入了正确的 Mime 类型。应该是： AddType application/x-httpd-php .php 也确认 AddType 这一行没有隐藏在 <Virtualhost> 或者 <Directory> 块中，这可能会造成你的测试脚本所在位置没有被应用到此设置。
  • 最后，Apache 1.2 和 Apache 1.3 之间默认配置文件的位置改变了。你要确认你添加 AddType 行的文件就是实际上用的。你可以在你的 httpd.conf 中添加一个明显的语法错误或者其它明显修改，这可以告诉你是否读取了正确的文件。

说要用： --activate-module=src/modules/php4/libphp4.a，但是此文件根本不存在，于是我改成了 --activate-module=src/modules/php4/libmodphp4.a，结果不行。怎么回事？

注意 libphp4.a文件本来就不该存在，apache 进程将创建它！

当我用 --activate-module=src/modules/php4/libphp4.a试着把 PHP 编译成 Apache 的静态模块时，报告说我的编译器不服从 ANSI 标准。

这是一个 Apache 误报的错误信息，在新的版本中已经修正了。

当我用 --with-apxs 编译 PHP 时得到奇怪的错误信息。

这里要检查三件事。首先，出于某些原因当 Apache 生成 apxs Perl 脚本时，有时没有正确的编译和标记变量就结束了。找到你的 apxs 脚本（用命令 which apxs），有时会在 /usr/local/apache/bin/apxs或者 /usr/sbin/apxs。打开并检查类似如下的行：

my $CFG_CFLAGS_SHLIB  = ' ';          # substituted via Makefile.tmpl
my $CFG_LD_SHLIB      = ' ';          # substituted via Makefile.tmpl
my $CFG_LDFLAGS_SHLIB = ' ';          # substituted via Makefile.tmpl
如果你看到这几行，那问题就在这里。它们可能包含了仅仅空格或者其它不正确的值，例如"q()"。改成这样：
my $CFG_CFLAGS_SHLIB  = '-fpic -DSHARED_MODULE'; # substituted via Makefile.tmpl
my $CFG_LD_SHLIB      = 'gcc';                   # substituted via Makefile.tmpl
my $CFG_LDFLAGS_SHLIB = q(-shared);              # substituted via Makefile.tmpl
第二个可能的问题仅可能在在 Red Hat 6.1 和 6.2 中发生。Red Hat 发行的 apxs 脚本坏了。查找这一行：
my $CFG_LIBEXECDIR    = 'modules';         # substituted via APACI install
如果你看到上面这一行，改成这样：
my $CFG_LIBEXECDIR    = '/usr/lib/apache'; # substituted via APACI install
最后，如果你重新配置或者重装了 Apache，在 ./configure之后和 make之前增加一个 make clean命令。

在 make的过程中，在 microtime 中出错，还有很多 RUSAGE_之类的东西。

如果 make时遇到类似这样的问题：

microtime.c: In function `php_if_getrusage':
microtime.c:94: storage size of `usg' isn't known
microtime.c:97: `RUSAGE_SELF' undeclared (first use in this function)
microtime.c:97: (Each undeclared identifier is reported only once
microtime.c:97: for each function it appears in.)
microtime.c:103: `RUSAGE_CHILDREN' undeclared (first use in this function)
make[3]: *** [microtime.lo] Error 1
make[3]: Leaving directory `/home/master/php-4.0.1/ext/standard'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/master/php-4.0.1/ext/standard'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/master/php-4.0.1/ext'
make: *** [all-recursive] Error 1

你的系统坏了。你需要安装一个符合你的 glibc 的 glibc-devel 包来修复 /usr/include中的文件。这和 PHP 绝对没有任何关系。要证实这一点，试试这个简单的测试：

$ cat >test.c <<X
#include <sys/resource.h>
X
$ gcc -E test.c >/dev/null
如果出现错误，那你就知道头文件坏了。

当带 MySQL 编译 PHP 时，可以正确地运行configure，但是在 make的过程中出现了类似以下的错误信息： ext/mysql/ libmysqlclient /my_tempnam.o(.text+0x46): In function my_tempnam': /php4/ext/mysql/ libmysqlclient /my_tempnam.c:103: the use of tempnam' is dangerous, better use mkstemp'，这是怎么回事

首先，我们需要认识到这只是个 警告，而非致命错误。由于这条信息通常是在 make的最后输出的，所以看起来它可能像是一个致命错误，但实际上不是。当然，如果将编译器设置成遇见警告信息时停止，则这也可以算是致命错误。另外值得一提的是，MySQL 的支持是默认打开的。

Note:

自 PHP 4.3.2 起，你将在编译（make）结束后看到下面的文字：

Build complete.
(It is safe to ignore warnings about tempnam and tmpnam).

我想升级我的 PHP。上哪里找到我用来配置目前的 PHP 的 ./configure的参数呢？

要么在你用来编译当前的 PHP 的源码树中查看 config.nice 文件，如果没有，只要运行此脚本：

<?php phpinfo(); ?>
在输出的顶端显示了用来配置此 PHP 的 ./configure参数。

和 GD 库一起编译 PHP 时，要么给出一个奇怪的编译错误，要么在运行时出现 segfaults。

确保你的 GD 库和 PHP 在连接时使用了用同样的支持库（例如 libpng）。

当编译 PHP 时我看到一些随机的错误，好像死了。我用的是 Solaris，不知道有没有关系。

当编译 PHP 时使用非 GNU 的工具会导致问题。确保使用 GNU 工具来确保能够正确编译 PHP。例如，在 Solaris 下面不论使用 SunOS BSD 兼容或者 Solaris 版本的 sed都不行，但是使用 GNU 或者 Sun POSIX (xpg4) 版本的 sed就可以。相关连接： » GNU sed， » GNU flex， » GNU bison。

安装
使用 PHP
FAQ


使用 PHP

本节汇集了你在写 PHP 脚本时可能碰到的大多数普通错误。

  1. 我忘了PHP函数的参数顺序，它们是随机的吗？
  2. 我想写一个可以处理任何表单来的数据的通用 PHP 脚本。我怎么知道哪个 POST 方法变量可用呢？
  3. 我需要在所有的单引号（'）前加一个反斜线（\），使它们变成（\'），我如何能够通过正则表达式来实现？我同样希望能够将（"）转换成（\"），将（\）转换成（\\）。
  4. 我所有的（"）和（'）都被变成了（\"）和（\'），我如何才能去掉这些不必要的反斜线？它们为什么及如何出现？
  5. PHP 选项 register_globals 对我有什么影响？
  6.         当我这样做时，输出显示的次序是错的：

<?php
function myfunc($argument)
{
    echo $argument + 10;
}
$variable = 10;
echo "myfunc($variable) = " . myfunc($variable);
?>

这是怎么回事？
  7. 下面代码怎么没有分成两行显示？ <pre> <?php echo "This should be the first line."; ?> <?php echo "This should show up after the new line above."; ?> </pre>
  8. 我得到消息“Warning: Cannot send session cookie - headers already sent...”或者“Cannot add header information - headers already sent...”。
  9. 我需要直接访问请求报头中的信息，怎么能办到？
  10. 当我用 IIS 进行 HTTP 认证时得到“No Input file specified”消息。
  11. Windows：不能访问另一台电脑上用 IIS 共享的文件。
  12. 我怎样混合使用 XML 和 PHP？它不认我的 <?xml 标记！
  13. 怎样用 FrontPage 或者其它非要把我的代码移来移去的 HTML 编辑器来编辑 PHP？
  14. 哪里可以找到所有可用的 PHP 预定义变量的完整列表？
  15. 怎样才能不用非免费的商业库（例如 PDFLib） 来生成 PDF 文档？我想要个免费的并且不需要再连接别的 PDF 库。
  16. 我试着在用户自定义函数中访问一个标准的 CGI 变量（例如 $DOCUMENT_ROOT 或 $HTTP_REFERER），但是找不到，哪里出了错？
  17. 有些 PHP　选项可以接受缩写的字节值，与仅能接受 integer字节值相反。都有哪些缩写字节值？可以将其用于 php.ini 之外吗？
  18. Windows: I keep getting connection timeouts when using localhost, whereas "127.0.0.1"works?
我忘了PHP函数的参数顺序，它们是随机的吗？

PHP is a glue that brings together hundreds of external libraries, so sometimes this gets messy. However, a simple rule of thumb is as follows:

Array functionparameters are ordered as " needle, haystack" whereas String functionsare the opposite, so " haystack, needle".

我想写一个可以处理任何表单来的数据的通用 PHP 脚本。我怎么知道哪个 POST 方法变量可用呢？

PHP 提供很多" 预定义变量"，例如超全局变量 $_POST。可以遍历 $_POST变量，因为它是一个和所有通过 POST 方法传递数据相联系的数组。例如，可以用 foreach简单地遍历它，检查 empty()值，以及将它们输出。

<?php
$empty = $post = array();
foreach ($_POST as $varname => $varvalue) {
    if (empty($varvalue)) {
        $empty[$varname] = $varvalue;
    } else {
        $post[$varname] = $varvalue;
    }
}

print "<pre>";
if (empty($empty)) {
    print "None of the POSTed values are empty, posted:\n";
    var_dump($post);
} else {
    print "We have " . count($empty) . " empty values\n";
    print "Posted:\n"; var_dump($post);
    print "Empty:\n";  var_dump($empty);
    exit;
}
?>

Note: Superglobal 可用性说明：

自 PHP 4.1.0 起可以使用 Superglobal 数组，例如 $_GET，$_POST，和 $_SERVER，等等。更多信息请阅读手册中的 superglobals 章节。

我需要在所有的单引号（'）前加一个反斜线（\），使它们变成（\'），我如何能够通过正则表达式来实现？我同样希望能够将（"）转换成（\"），将（\）转换成（\\）。

函数
      addslashes()能够实现这种操作。请参阅函数
      mysql_escape_string()。另外，还可以用函数
      stripslashes()来去掉反斜线。

Note: 设置选项说明： magic_quotes_gpc

设置选项magic_quotes_gpc默认值为 on。相当于对所有 GET, POST, and COOKIE 数据使用了 addslashes()。可以用 stripslashes() 来去掉它们。

我所有的（"）和（'）都被变成了（\"）和（\'），我如何才能去掉这些不必要的反斜线？它们为什么及如何出现？

PHP 函数 stripslashes()能够从 string中去掉所有的反斜线。这些反斜线出现最有可能的原因是 PHP 设置项 magic_quotes_gpc被开启。

Note: 设置选项说明： magic_quotes_gpc

设置选项magic_quotes_gpc默认值为 on。相当于对所有 GET, POST, and COOKIE 数据使用了 addslashes()。可以用 stripslashes() 来去掉它们。

PHP 选项 register_globals 对我有什么影响？

首先要理解这个设置选项的作用。假如我们使用以下URL： http://example.com/foo.php?animal=cat，那么在 foo.php中我们可能会使用以下代码：

<?php
// 建议使用这种访问变量的方式
echo $_GET['animal'];

// 如果想直接访问$animal变量，就要把register_globals选项设置为on
// 强烈建议不要这么做！！
echo $animal;

// 这个选项的值会影响到所有变量，包括$_SERVER
// 以下是该选项设置为off时的正确写法
echo $_SERVER['PHP_SELF'];

// 同样，要使$PHP_SELF变量自动生效，register_globals选项必须设置为on
// 强烈建议不要这么做！！
echo $PHP_SELF;
?>

上面的代码解释了register_globals的作用，就是自动生成变量。这种编程方式被很多人所不喜，所以在PHP当中register_globals默认设置为off。在PHP6，这个选项被删除了。所以目前绝大部分虚拟主机都默认把register_globals禁用。请注意，你在阅读过时的文章、教程时可能需要把该选项开启，否则可能示例代码不能通过。但在实际开发当中，强烈建议将其设置为off，否则可能会导致安全问题。

请参阅以下资源进一步了解：

  • The register_globals选项
  • The 注册全局变量的安全问题
  • 处理外部变量
  • Use 超级全局变量

Note:

以上示例中，我们使用了一个 URL，其中包含了一个QUERY_STRING。PHP会把QUERY_STRING中的信息通过GET HTTP请求传递，所以我们可以通过超级全局变量（superglobal） $_GET来访问其中的变量。

当我这样做时，输出显示的次序是错的：
<?php
function myfunc($argument)
{
    echo $argument + 10;
}
$variable = 10;
echo "myfunc($variable) = " . myfunc($variable);
?>
这是怎么回事？

要在一个表达式中（例如在上面的例子中和其它字符串连接）使用函数的结果，需要 return这个值，而不是 echo它。

下面代码怎么没有分成两行显示？
<pre>
<?php echo "This should be the first line."; ?>
<?php echo "This should show up after the new line above."; ?>
</pre>

在 PHP 中，一段代码的结束标记要么是"?>"要么是"?>\n"（\n 表示换行）。因此在上面的例子中，输出的句子将显示在同一行中，因为 PHP 忽略了代码结束标记后面的换行。这意味着如果要输出一个换行符，需要在每段 PHP 代码的结束标记后面多加一个换行。

PHP 为什么这么做呢？因为在格式化正常的 HTML 时，这样通常会更容易。假如输出了换行而你不需要这个换行时，就不得不用一个非常长的行来达到这样的效果，或者让产生的 HTML 页面的源文件的格式很难读。

我得到消息"Warning: Cannot send session cookie - headers already sent..."或者"Cannot add header information - headers already sent..."。

函数 header()， setcookie()和 session 函数需要在输出流中添加头信息。但是头信息只能在其它任何输出内容之前发送。在使用这些函数前不能有任何（如 HTML）的输出。函数 headers_sent()能够检查脚本是否已经发送了头信息。请参阅 输出控制函数。

我需要直接访问请求报头中的信息，怎么能办到？

如果以 Apache 的模块方式运行 PHP，那么函数 getallheaders()可以做这件事。因此下面的代码可以显示所有的请求报头：

<?php
$headers = getallheaders();
foreach ($headers as $name => $content) {
    echo "headers[$name] = $content<br />\n";
}
?>

请参阅函数
        apache_lookup_uri()、
        apache_response_headers()和
        fsockopen()。

当我用 IIS 进行 HTTP 认证时得到"No Input file specified"消息。

IIS 的安全模型这里有毛病。这是所有 IIS 下运行的 CGI 程序所共有的问题。一个解决办法是建立一个纯 HTML 文件（不经过 PHP 解析）作为要进入认证目录的登录页面，然后用 META 标记来重定向到 PHP 页面，或者用一个连接到 PHP 页面。然后 PHP 就可以正确识别认证信息了。如果是用 ISAPI 模块，那没有这个问题。其它 NT 下的 web 服务器不受此影响。更多信息见 » http://support.microsoft.com/kb/q160422/及 HTTP 认证一章。

Windows：不能访问另一台电脑上用 IIS 共享的文件。

必须要做些修改。打开 Internet 信息服务，找到你的 PHP 文件并打开属性页，选择 文件安全性标签，点击 匿名访问和身份验证控制的"编辑"按钮。

解决此问题有两个方法，一是不要选中 匿名访问并且选中 集成 Windows 身份验证，二是选中 匿名访问并编辑匿名访问使用的帐户，改成一个有权限的。

我怎样混合使用 XML 和 PHP？它不认我的 <?xml 标记！

要能够在 PHP 代码中直接嵌入 <?xml，需要将 PHP 设置项 short_open_tags设置为 0以关闭短标记格式。无法通过函数 ini_set()来更改这项设置。不管 short_open_tags是开或者关，都可以用类似于 <?php echo '<?xml'; ?>的方法达到目的。该项设置的默认值为开。

怎样用 FrontPage 或者其它非要把我的代码移来移去的 HTML 编辑器来编辑 PHP？

最简单的方法是让 PHP 代码也能使用 ASP 标记。这可以让你用 ASP 风格的 <% 和 %> 代码定界符。一些流行的 HTML 编辑器在处理此格式上更加智能化一些（目前如此）。要使用 ASP 风格的标记，需要在 php.ini 中打开 asp_tags，或者用相应的 Apache 配置选项。

哪里可以找到所有可用的 PHP 预定义变量的完整列表？

请阅读手册中的 预定义变量一章，该部分的文档已经包含了一部分可以用于你的脚本的预定义变量的列表。可用变量的完整列表（及更多信息）可以通过调用 phpinfo()函数来查阅。请务必阅读手册中 来自 PHP 之外的变量一节，这部分文档阐述了外部变量的概念，例如来自 HTML 表单、Cookie 和 URL 的变量。

Note: register_globals 重要说明：

自 PHP 4.2.0 起，PHP 指令 register_globals 的默认值为 off。PHP 社区鼓励开发者不要依赖于此指令, 用其他手段替代，例如superglobals。

怎样才能不用非免费的商业库（例如 PDFLib） 来生成 PDF 文档？我想要个免费的并且不需要再连接别的 PDF 库。

有几个选择，例如 » FPDF 和 » TCPDF模块。

There is also the Haru extension that uses the free libHaru external library.

我试着在用户自定义函数中访问一个标准的 CGI 变量（例如 $DOCUMENT_ROOT 或 $HTTP_REFERER），但是找不到，哪里出了错？

首先非常重要的一点是 PHP 设置项 register_globals同样会对服务器端和环境变量产生影响。当 register_globals = off （从 PHP 4.2.0 开始其默认值为 off），变量 $DOCUMENT_ROOT将不会存在，而只有 $_SERVER['DOCUMENT_ROOT']。如果 register_globals = on 则变量 $DOCUMENT_ROOT和 $GLOBALS['DOCUMENT_ROOT']将同时存在。

如果确认 register_globals = on 但不知道为什么 $DOCUMENT_ROOT在函数内部不可用，这是因为它和其它的变量一样需要在函数中执行 global $DOCUMENT_ROOT。请参阅手册中的 变量范围一节。建议在 register_globals = off 的情况下进行编码。

Note: Superglobal 可用性说明：

自 PHP 4.1.0 起可以使用 Superglobal 数组，例如 $_GET，$_POST，和 $_SERVER，等等。更多信息请阅读手册中的 superglobals 章节。

有些 PHP　选项可以接受缩写的字节值，与仅能接受 integer字节值相反。都有哪些缩写字节值？可以将其用于 php.ini 之外吗？

可用的选择有 K（对应 Kilobytes），M（对应 Megabytes）和 G（对应 Gigabytes；自 PHP 5.1.0 起可用），区分大小写。其余的都认为是字节。 1M等于一个 Megabyte，即 1048576字节。 1K等于一个 Kilobyte，即 1024字节。不能在 php.ini 之外使用这些符号，最好用整数的 integer字节值。参见 ini_get()文档中的转换示例。

Note: kilobyte versus kibibyte

The PHP notation describes one kilobyte as equalling 1024 bytes, whereas the IECstandard considers this to be a kibibyte instead. Summary: k and K = 1024 bytes.

Windows: I keep getting connection timeouts when using localhost, whereas "127.0.0.1"works?

Prior to PHP 5.3.4, there was a bug in the network resolving code inside PHP that caused localhostin all stream related situations to fail if IPv6 was enabled. To work around this issue you can either use "127.0.0.1"or disable IPv6 resolving in the hostsfile.

编译问题
密码散列
FAQ


密码散列安全

本部分解释使用散列函数对密码进行安全处理背后的原因， 以及如何有效的进行密码散列处理。

  1. 为什么需要把应用程序中用户的密码进行散列化？
  2. 为何诸如 md5 和 sha1 这样的常见散列函数不适合用在密码保护场景？
  3. 如果不建议使用常用散列函数保护密码， 那么我应该如何对密码进行散列处理？
  4. “盐”是什么？
  5. 我应该如何保存“盐”？
为什么需要把应用程序中用户的密码进行散列化？

当设计一个需要接受用户密码的应用时， 对密码进行散列是最基本的，也是必需的安全考虑。 如果不对密码进行散列处理，那么一旦应用的数据库受到攻击， 那么用户的密码将被窃取。 同时，窃取者也可以使用用户账号和密码去尝试其他的应用， 如果用户没有为每个应用单独设置密码，那么将面临风险。

通过对密码进行散列处理，然后再保存到数据库中， 这样就使得攻击者无法直接获取原始密码， 同时还可以保证你的应用可以对原始密码进行相同的散列处理， 然后比对散列结果。

需要着重提醒的是，密码散列只能保护密码 不会被从数据库中直接窃取， 但是无法保证注入到应用中的 恶意代码拦截到原始密码。

为何诸如 md5() 和 sha1() 这样的常见散列函数不适合用在密码保护场景？

MD5，SHA1 以及 SHA256 这样的散列算法是面向快速、高效 进行散列处理而设计的。随着技术进步和计算机硬件的提升， 破解者可以使用"暴力"方式来寻找散列码 所对应的原始数据。

因为现代化计算机可以快速的"反转"上述散列算法的散列值， 所以很多安全专家都强烈建议 不要在密码散列中使用这些散列算法。

如果不建议使用常用散列函数保护密码， 那么我应该如何对密码进行散列处理？

当进行密码散列处理的时候，有两个必须考虑的因素： 计算量以及"盐"。 散列算法的计算量越大， 暴力破解所需的时间就越长。

PHP 5.5 提供了 一个原生密码散列 API， 它提供一种安全的方式来完成密码 散列和 验证。 PHP 5.3.7 及后续版本中都提供了一个 » 纯 PHP 的兼容库。

PHP 5.3 及后续版本中，还可以使用 crypt() 函数， 它支持多种散列算法。 针对每种受支持的散列算法，PHP 都提供了对应的原生实现， 所以在使用此函数的时候， 你需要保证所选的散列算法是你的系统所能够支持的。

当对密码进行散列处理的时候，建议采用 Blowfish 算法， 这是密码散列 API 的默认算法。 相比 MD5 或者 SHA1，这个算法提供了更高的计算量， 同时还有具有良好的伸缩性。

如果使用 crypt() 函数来进行密码验证， 那么你需要选择一种耗时恒定的字符串比较算法来避免时序攻击。 （译注：就是说，字符串比较所消耗的时间恒定， 不随输入数据的多少变化而变化） PHP 中的 == 和 === 操作符 和 strcmp() 函数都不是耗时恒定的字符串比较， 但是 password_verify() 可以帮你完成这项工作。 我们鼓励你尽可能的使用 原生密码散列 API。

"盐"是什么？

加解密领域中的"盐"是指在进行散列处理的过程中 加入的一些数据，用来避免从已计算的散列值表 （被称作"彩虹表"）中 对比输出数据从而获取明文密码的风险。

简单而言，"盐"就是为了提高散列值被破解的难度 而加入的少量数据。 现在有很多在线服务都能够提供 计算后的散列值以及其对应的原始输入的清单， 并且数据量极其庞大。 通过加"盐"就可以避免直接从清单中查找到对应明文的风险。

如果不提供"盐"，password_hash() 函数会随机生成"盐"。 非常简单，行之有效。

我应该如何保存"盐"？

当使用 password_hash() 或者 crypt() 函数时， "盐"会被作为生成的散列值的一部分返回。 你可以直接把完整的返回值存储到数据库中， 因为这个返回值中已经包含了足够的信息， 可以直接用在 password_verify() 或 crypt() 函数来进行密码验证。

下图展示了 crypt() 或 password_hash() 函数返回值的结构。 如你所见，算法的信息以及"盐"都已经包含在返回值中， 在后续的密码验证中将会用到这些信息。

password_hash 和 crypt 函数返回值的组成部分，依次为：所选择的算法， 算法选项，所使用的

使用 PHP
PHP 和 HTML
FAQ


PHP 和 HTML

PHP 和 HTML 有很多相互作用：PHP 能生成 HTML，HTML 可以向 PHP 传递信息。在阅读这些常见问题之前，先学会怎样 从 PHP 之外取得变量很重要。此主题的手册页也包括很多例子。还要仔细留意 register_globals对你意味着什么。

  1. 当我通过表单／URL 传值时需要用什么编码／解码方法？
  2. 我在试用 <input type="image"> 标记，但是没有 $foo.x和 $foo.y变量，它们哪去了？
  3. 怎样在 HTML 的 <form> 中建立数组？
  4. 怎样从可多选的 HTML 的 select multiple 标记中得到所有结果？
  5. 怎样从 Javascript 传递一个变量到 PHP？
当我通过表单／URL 传值时需要用什么编码／解码方法？

在几个环节上编码方式很重要。假定有 string $data，其中包含了想通过非编码方式传递的字符串，那这是相关步骤：

  • HTML 解析。要指定一个任意的字符串， 必须将其放在双引号中，并用 htmlspecialchars()处理整个值。

  • URL：URL 由几部分组成。如果希望自己的数据被当作其中一项来解释， 必须用 urlencode()对其编码。

Example #1 隐藏的 HTML 表单单元

<?php
    echo "<input type='hidden' value='" . htmlspecialchars($data) . "' />\n";
?>

Note: 用 urlencode()来处理 $data是错误的，因为是浏览器的责任来 urlencode()数据。所有流行的浏览器都能正确处理。注意不论何种方法（例如 GET 或 POST）都会这样。不过只会在用 GET 请求时注意到这一点，因为 POST 请求通常是隐藏的。

Example #2 等待用户编辑的数据

<?php
    echo "<textarea name='mydata'>\n";
    echo htmlspecialchars($data)."\n";
    echo "</textarea>";
?>

Note: 数据会按照预期的显示在浏览器中，因为浏览器会解释 HTML 转义符号。 当提交时，不论是 GET 或者 POST 方法，数据都会被浏览器进行 urlencode 来传输，并直接被 PHP urldecode。所以最终不需要自己处理任何 urlencoding/urldecoding，全都是自动处理的。

Example #3 URL 中的例子

<?php
    echo "<a href='" . htmlspecialchars("/nextpage.php?stage=23&data=" .
        urlencode($data)) . "'>\n";
?>

Note: 事实上这在编造一个 HTML 的 GET 请求，因此需要手工对数据进行 urlencode()。

Note: 需要对整个 URL 进行 htmlspecialchars()，因为 URL 是作为 HTML 属性的一个值出现的。在本例中，浏览器会首先对值进行 un- htmlspecialchars()，然后再传递此 URL。PHP 将能正确理解 URL，因为对数据进行了 urlencoded()。 要注意到 URL 中的 &被替换成了 &amp;。如果忘了这一步，尽管大多数浏览器都能恢复，但也不总是这样。因此即使 URL 不是动态的，也 需要对 URL 进行 htmlspecialchars()。

我在试用 <input type="image"> 标记，但是没有 $foo.x和 $foo.y变量，它们哪去了？

当提交表单时，可以用图片代替标准的提交按钮，用类似这样的标记：

<input type="image" src="image.gif" name="foo" />
当用户点击了图片的任何部分，该表单会被发送到服务器并加上两个额外的变量： foo.x和 foo.y。

因为 foo.x和 foo.y在 PHP 中会成为非法的变量名，它们被自动转换成了 foo_x和 foo_y。也就是用下划线代替了点。因此，可以按照在 来自 PHP 之外的变量这一节中说明的那样访问这些变量。例如， $_GET['foo_x']。

Note:

请求变量名中的空格被转换为下划线。

怎样在 HTML 的 <form> 中建立数组？

要使你的 <form> 结果被当成 array发送到 PHP 脚本，要对 <input>，<select> 或者 <textarea> 单元这样命名：

<input name="MyArray[]" />
<input name="MyArray[]" />
<input name="MyArray[]" />
<input name="MyArray[]" />
注意变量名后的方括号，这使其成为一个数组。可以通过给不同的单元分配相同的名字来把单元分组到不同的数组里：
<input name="MyArray[]" />
<input name="MyArray[]" />
<input name="MyOtherArray[]" />
<input name="MyOtherArray[]" />
这将产生两个数组，MyArray 和 MyOtherArray，并发送给 PHP 脚本。还可以给数组分配指定的键名：
<input name="AnotherArray[]" />
<input name="AnotherArray[]" />
<input name="AnotherArray[email]" />
<input name="AnotherArray[phone]" />
AnotherArray 数组将包含键名 0，1，email 和 phone。

Note:

指定数组的键名是 HTML 的可选项。如果不指定键名，则数组被按照单元在表单中出现的顺序填充。第一个例子将包含键名 0，1，2 和 3。

参见 数组函数和 来自 PHP 之外的变量。

怎样从可多选的 HTML 的 select multiple 标记中得到所有结果？

可多选的 select multiple 标记是 HTML 的一个构造，允许用户从一个列表中选择多个项目。这些项目接着被传递给该表单 action 中指定的处理程序。问题是它们都会被用同样的名字传递。例如：

<select name="var" multiple="yes">
每个被选项将这样被传递到表单处理程序：
var=option1 var=option2 var=option3
每个选项将覆盖前面一个 $var变量的内容。解决方案是用 PHP 的"表单单元数组"特性。使用方法如下：
<select name="var[]" multiple="yes">
这将告诉 PHP 将 $var当成数组对待，每个对 var[] 的赋值都会给数组增加一项。第一项将成为 $var[0]，下一个是 $var[1]，等等。可以用 count()函数来测定选择了多少个项目，必要时可以用 sort()函数来对选项的数组进行排序。

注意如果在 JavaScript 中通过名字来引用单元，单元名字中的 []可能会造成问题。用表单单元中的数字序号来替代，或者将变量名用单引号括起来并用其作为单元数组的索引，例如：

variable = documents.forms[0].elements['var[]'];

怎样从 Javascript 传递一个变量到 PHP？

由于 Javascript （通常情况下）是客户端技术，而 PHP （通常情况下）是服务器端技术，而且 HTTP 是一种"无状态"协议，因此两种语言之间不能直接共享变量。

但是，有可能在二者之间传递变量。一种实现的方法是用 PHP 生成 Javascript 代码，并让浏览器自动刷新，将特定的变量传递回 PHP 脚本。以下例子显示了如何这样做——让 PHP 代码取得显示屏幕的高度和宽度，通常只能在客户端这么做。

<?php
if (isset($_GET['width']) AND isset($_GET['height'])) {
  // output the geometry variables
  echo "Screen width is: ". $_GET['width'] ."<br />\n";
  echo "Screen height is: ". $_GET['height'] ."<br />\n";
} else {
  // pass the geometry variables
  // (preserve the original query string
  //   -- post variables will need to handled differently)

  echo "<script language='javascript'>\n";
  echo "  location.href=\"${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}"
            . "&width=\" + screen.width + \"&height=\" + screen.height;\n";
  echo "</script>\n";
  exit();
}
?>

密码散列
PHP 和 COM
FAQ


PHP 和 COM

PHP 可以在 Win32 平台中访问 COM 和 DCOM 对象。

  1. 我建立了一个 DLL 来做某种计算。有办法在 PHP 中运行这个 DLL 吗？
  2. “Unsupported variant type: xxxx (0xxxxx)”是什么意思？
  3. 在 PHP 中有可能操纵可视对象吗？
  4. 可以将一个 COM 对象保存在 session 中吗？
  5. 怎样可以捕获 COM 的错误？
  6. 我能像在 Perl 中一样从 PHP 脚本生成 DLL 文件吗？
  7. “Unable to obtain IDispatch interface for CLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}”是什么意思？
  8. 怎样从远端服务器运行 COM 对象？
  9. 我得到一个“DCOM is disabled in C:\path...\scriptname.php on line 6”信息，应该怎么办？
  10. 有可能在 PHP 页面中加载／操纵 ActiveX 对象吗？
  11. 有可能得到一个组件在运行中的实例吗？
  12. 有办法处理 COM 对象中发送的事件吗？
  13. 我在尝试调用一个打开了多于一个接口的 COM 对象中的方法时碰到问题，应该怎么办？
  14. 这么说 PHP 可以和 COM 一起工作，那么 COM+ 呢？
  15. 如果 PHP 可以操纵 COM 对象，那么可以设想结合 PHP 用 MTS 来管理组件资源吗？
我建立了一个 DLL 来做某种计算。有办法在 PHP 中运行这个 DLL 吗？

如果这是个简单的 DLL 那么还没有办法在 PHP 中运行它。如果这个 DLL 中包含有一个 COM 服务器并且它实现了 IDispatch 接口，那有可能访问它。

"Unsupported variant type: xxxx (0xxxxx)"是什么意思？

有几十种 VARIANT 类型以及它们的组合。大多数已经被支持了但还有几种尚未实现。数组没有完全被支持。只有一维的仅用作索引的数组可以在 PHP 和 COM 之间传递。如果你发现其它未支持的类型，请当作一个 bug 报告（如果尚未被报告的话）并提供尽可能多的信息。

在 PHP 中有可能操纵可视对象吗？

一般来说是可以的，但是 PHP 大都用来作为 web 脚本语言并运行在 web 服务器的上下文环境中，因此可视对象决不会在服务器的桌面上显示。如果你把 PHP 用作应用程序脚本例如结合 PHP-GTK 来使用，那么访问和通过 COM 来操纵可视对象方面没有限制。

可以将一个 COM 对象保存在 session 中吗？

不行。COM 的实例被看作是资源，因此只在一个脚本的上下文中有效。

怎样可以捕获 COM 的错误？

在 PHP 5 中，COM 扩展会发出 com_exception异常信息，可以捕获并检查 code成员来决定下一步的行为。

在 PHP 4 中除了用 PHP 自己提供的办法之外（@，track_errors，..）不可能捕获 COM 的错误。

我能像在 Perl 中一样从 PHP 脚本生成 DLL 文件吗？

不行，PHP 没有这样的工具。

"Unable to obtain IDispatch interface for CLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"是什么意思？

此错误可以有多种原因：

  • 错误的 CLSID
  • 找不到所请求的 DLL
  • 所请求的组件没有实现 IDispatch 接口

怎样从远端服务器运行 COM 对象？

完全和运行本地对象一样。只须将远端服务器的 IP 作为第二个变量传递给 COM 的构造函数即可。

确认在 php.ini 中设定了 =&true;。

我得到一个"DCOM is disabled in C:\path...\scriptname.php on line 6"信息，应该怎么办？

编辑 php.ini 并设定 =&true;。

有可能在 PHP 页面中加载／操纵 ActiveX 对象吗？

这不关 PHP 的事。如果在 HTML 文档中请求的话，ActiveX 对象被加载在客户端。这和 PHP 脚本没有关系，因此也不可能和服务器端发生直接的交互作用。

有可能得到一个组件在运行中的实例吗？

在绰号的帮助下这有可能。如果你想得到同一个 word 实例的多个引用你可以这样建立此实例：

<?php
$word = new COM("C:\docs\word.doc");
?>

如果没有运行中的实例这将建立一个新的实例，否则将会返回正在运行中的实例的句柄，如果可用的话。

有办法处理 COM 对象中发送的事件吗？

可以自定义事件收报方并且用 com_event_sink()函数绑定之。可以用 com_print_typeinfo()来让 PHP 产生事件收报方类的框架。

我在尝试调用一个打开了多于一个接口的 COM 对象中的方法时碰到问题，应该怎么办？

我也不知道怎么办，我想这没办法。如果什么人有对此问题的明确信息请 » 告诉我。:)

这么说 PHP 可以和 COM 一起工作，那么 COM+ 呢？

COM+ 通过使用 MTS 和 MSMQ 来管理组件的框架扩展了 COM，但并没有什么特殊之处使 PHP 非要支持这样的组件。

如果 PHP 可以操纵 COM 对象，那么可以设想结合 PHP 用 MTS 来管理组件资源吗？

PHP 本身还并不处理事务。因而如果出错也不会发动撤回机制。如果你使用了支持事务处理的组件那你不得不自己实现事务管理。

PHP 和 HTML
杂类问题
FAQ


杂类问题

有些问题没法归到其它类中，可以在这里找到。

  1. 在 Windows 中怎样处理 bz2 压缩的文档？
  2. 在函数定义中，参数旁边的 & 是什么意思？例如 asort。
  3. 怎么处理 register_globals？
在 Windows 中怎样处理 bz2 压缩的文档？

如果没有能处理 bz2 文件的压缩工具，从 Redhat » 下载一个命令行工具（进一步信息见下面）。

如果不喜欢用命令行工具，可以试试免费工具例如 » Stuffit Expander， » UltimateZip， » 7-Zip或者 » Quick Zip。如果有像 » WinRAR或者 » Power Archiver之类的工具，可以很容易用它解压缩 bz2 文件。如果用 Total Commander（前身为 Windows Commander），可以从 » Total Commander网站免费得到一个 bz2 插件。

来自 Redhat 的 bzip2 命令行工具：

Win2K Sp2 用户下载最新版本 1.0.2，所有其它 Windows 用户应该用版本 1.00。下载后重命名可执行文件为 bzip2.exe。为方便起见将其放到一个在你路径中的目录，例如 C:\Windows，C 表示你安装 Windows 的盘符。

注意：lang 指的是你的语种，x 是想要的格式，例如：pdf。要解压缩 php_manual_lang.x.bz2，按照下面的简单说明进行：

  • 打开一个命令行窗口
  • 进入存放已下载的 php_manual_lang.x.bz2 的目录
  • 调用 bzip2 -d php_manual_lang.x.bz2，将 php_manual_lang.x 释放到同一个目录

在下载了包含很多 html 文件的 php_manual_lang.tar.bz2 的情况下，过程是一样的。唯一区别是得到了一个 php_manual_lang.tar 文件。tar 格式可以被大多数 Windows 下流行的压缩工具所处理，例如 » WinZip。

在函数定义中，参数旁边的 & 是什么意思？例如 asort()。

这表示该参数是 引用传递，该函数会修改其值。只可以用此方法传递变量，其实都不需要在函数调用中用 & 传递（此方式都已 过时了）。

怎么处理 register_globals？

有关 register_globals实现方面的安全性，请阅读 使用 register_globals一章。

推荐使用 超全局变量而不要依赖 register_globals。

如果需要在一台关闭了 register_globals的共享主机上运行一些旧式程序而该程序需要此选项打开时，或者在一些打开了此选项的主机上但想消除安全隐患，那么就需要用 PHP 来模拟出相反的设定。最好先问清楚是否能否在哪里更改 PHP 配置的选项，如果不行，那可以用如下的兼容手段。

Example #1 模拟注册全局变量

本例模拟 register_globals On。如果改变了配置文件中的 variables_order选项，则考虑对 $superglobals作出相应的改动。

<?php
// Emulate register_globals on
if (!ini_get('register_globals')) {
    $superglobals = array($_SERVER, $_ENV,
        $_FILES, $_COOKIE, $_POST, $_GET);
    if (isset($_SESSION)) {
        array_unshift($superglobals, $_SESSION);
    }
    foreach ($superglobals as $superglobal) {
        extract($superglobal, EXTR_SKIP);
    }
}
?>

本例模拟 register_globals Off。要记住此代码应在脚本最开头的地方调用。如果使用了会话机制，则在 session_start()之后调用。

<?php
// Emulate register_globals off
function unregister_GLOBALS()
{
    if (!ini_get('register_globals')) {
        return;
    }

    // Might want to change this perhaps to a nicer error
    if (isset($_REQUEST['GLOBALS']) || isset($_FILES['GLOBALS'])) {
        die('GLOBALS overwrite attempt detected');
    }

    // Variables that shouldn't be unset
    $noUnset = array('GLOBALS',  '_GET',
                     '_POST',    '_COOKIE',
                     '_REQUEST', '_SERVER',
                     '_ENV',     '_FILES');

    $input = array_merge($_GET,    $_POST,
                         $_COOKIE, $_SERVER,
                         $_ENV,    $_FILES,
                         isset($_SESSION) && is_array($_SESSION) ? $_SESSION : array());

    foreach ($input as $k => $v) {
        if (!in_array($k, $noUnset) && isset($GLOBALS[$k])) {
            unset($GLOBALS[$k]);
        }
    }
}

unregister_GLOBALS();

?>

PHP 和 COM
附录
FAQ


附录

  • PHP 及其相关工程的历史
    • PHP 的历史
    • PHP 相关工程的历史
    • PHP 相关书籍
    • PHP 相关文章
  • 从PHP 7.0.x 移植到 PHP 7.1.x
    • 新特性
    • 新的函数
    • New global constants
    • 不向后兼容的变更
    • PHP 7.1.x 中废弃的特性
    • Other changes
  • 从PHP 5.6.x 移植到 PHP 7.0.x
    • 不向后兼容的变更
    • 新特性
    • Changes in SAPI Modules
    • Deprecated features in PHP 7.0.x
    • 变更的函数
    • New functions
    • New Classes and Interfaces
    • New Global Constants
    • Removed Extensions and SAPIs
    • Other Changes
  • 从PHP 5.5.x 移植到 PHP 5.6.x
    • 向后不兼容
    • 新特性
    • PHP 5.6.x 中已废止的特性
    • Changed functions
    • 新加函数
    • OpenSSL changes in PHP 5.6.x
    • 扩展中的变动
    • 新加的全局常量
  • 从 PHP 5.4.x 迁移到 PHP 5.5.x
    • PHP 5.5.x 中的变更
    • 不向后兼容的变更
    • 新的特性
    • PHP 5.5.x 中废弃的特性
    • 变更的函数
    • 新的函数
    • 新的类和接口
    • 新的方法
    • 扩展中的其他变更
    • 新的全局常量
    • INI 文件处理的变化
    • PHP 内部的变化
  • 从 PHP 5.3.X 迁移到 PHP 5.4.X
    • PHP 5.4.x 中的变更
    • 不向后兼容的变更
    • 新特性
    • SAPI 模块中的变化
    • 在 PHP 5.4.x 中过时的特性
    • 变更的函数
    • 新的函数
    • 新的类和接口
    • 新的方法
    • 移除的扩展
    • 扩展中的其他变化
    • 新的全局常量
    • INI 文件处理的变化
    • 其他变化
  • 从 PHP 5.2.x 移植到 PHP 5.3.x
    • PHP 5.3.x 的变化
    • 不向下兼容的变化
    • 新特性
    • Windows 支持改变
    • SAPI 模块的改变
    • PHP 5.3.x 中弃用的功能
    • PHP 5.3.x 保留的功能
    • 新参数
    • 新函数
    • 新的流包装器
    • 新的流过滤器
    • 新增的类常量
    • 新增的方法
    • 新的扩展
    • 被移除的扩展
    • Other changes to extensions
    • 新类
    • 新的全局常量
    • INI 文件处理改变
    • 其他改变
  • Migrating from PHP 5.1.x to PHP 5.2.x
    • What has changed in PHP 5.2.x
    • Backward Incompatible Changes
    • New Error Messages
    • Changes in PHP datetime support
    • New Parameters
    • New Functions
    • New Methods
    • Removed Extensions
    • New Extensions
    • New Classes
    • New Global Constants
    • New Class Constants
    • New INI Configuration Directives
    • Error Reporting
    • Other Enhancements
  • Migrating from PHP 5.0.x to PHP 5.1.x
    • Key PHP 5.1.x features
    • Changes in reference handling
    • Reading []
    • Integer values in function parameters
    • Class and object changes
    • Extensions
    • Date/time support
    • Changes in database support
    • Checking for E_STRICT
  • 从 PHP 4 移植到 PHP 5
    • PHP 5 中有哪些改变
    • 未向下兼容的改变
    • CLI 和 CGI
    • 移植配置文件
    • 新函数
    • 新指令
    • 数据库
    • 新对象模型
    • 错误报告
  • PHP 的调试
    • 关于调试器
  • 配置选项
    • 核心配置选项列表
  • php.ini 配置
    • php.ini 配置选项列表
    • php.ini 配置段列表
    • php.ini 核心配置选项说明
  • 扩展库列表／归类
    • 按字母顺序
    • 按归属分
    • 按状态分
  • 函数别名列表
  • 保留字列表
    • 关键词列表
    • 预定义类
    • 预定义常量
    • 其他保留字列表
  • 资源类型列表
  • 可用过滤器列表
    • 字符串过滤器
    • 转换过滤器
    • 压缩过滤器
    • 加密过滤器
  • 所支持的套接字传输器（Socket Transports）列表
    • Internet 领域：TCP，UDP，SSL 和 TLS
    • Unix 领域：Unix 和 UDG
  • PHP 类型比较表
  • 解析器代号列表
  • 用户空间命名指南
    • 全局命名空间
    • 规则
    • 提示
  • 关于本手册
    • 手册的格式
    • 关于用户注释
    • 如何阅读函数的定义（函数原型）
    • 本手册中所涉及的 PHP 版本
    • 如何得到关于 PHP 更多的信息
    • 如何帮助改进本文档
    • 如何生成手册的各种格式
    • 手册译文
  • Creative Commons Attribution 3.0
  • 索引
    • 函数和方法列表
    • 示例列表
  • 更新日志
杂类问题
PHP 及其相关工程的历史
PHP 手册


PHP 及其相关工程的历史

Table of Contents

  • PHP 的历史
  • PHP 相关工程的历史
  • PHP 相关书籍
  • PHP 相关文章

PHP 在过去的几年里走过了漫长的道路。成长为处理 web 的最卓越的语言并非易事。如果对 PHP 如何发展到今天很感兴趣，那么请继续读下去吧。以前的 PHP 发行版可以在 » PHP 博物馆找到。

附录
PHP 的历史
附录


PHP 的历史

PHP/FI

PHP 继承自一个老的工程，名叫 PHP/FI。PHP/FI 在 1995 年由 Rasmus Lerdorf 创建，最初只是一套简单的 Perl 脚本，用来跟踪访问他主页的人们的信息。它给这一套脚本取名为"Personal Home Page Tools"。随着更多功能需求的增加，Rasmus 写了一个更大的 C 语言的实现，它可以访问数据库，可以让用户开发简单的动态 Web 程序。Rasmus » 发布了 PHP/FI 的源代码，以便每个人都可以使用它，同时大家也可以修正它的 Bug 并且改进它的源代码。

PHP/FI，一个专为个人主页／表单提供解释程序的程序，已经包含了今天 PHP 的一些基本功能。它有着 Perl 样式的变量，自动解释表单变量，并可以嵌入 HTML。语法本身与 Perl 很相似，但是它很有限，很简单，还稍微有些不协调。

到1997年，PHP/FI 2.0，也就是它的 C 语言实现的第二版在全世界已经有几千个用户（估计）和大约 50,000 个域名安装，大约是 Internet 所有域名的 1%。但是那时只有几个人在为该工程撰写少量当代码，它仍然只是一个人的工程。

PHP/FI 2.0 在经历了数个 beta 版本的发布后于 1997 年 11 月发布了官方正式版本。不久，PHP 3.0 的第一个 alpha 版本的发布，PHP 从此走向了成功。

PHP 3

PHP 3.0 是类似于当今 PHP 语法结构的第一个版本。Andi Gutmans 和 Zeev Suraski 在为一所大学的项目中开发电子商务程序时发现 PHP/FI 2.0 功能明显不足，于是他们重写了代码。这就是 PHP 3.0。经过Andi，Rasmus 和 Zeev 一系列的努力，考虑到 PHP/FI 已存在的用户群，他们决定联合发布 PHP 3.0 作为 PHP/FI 2.0 的官方后继版本。而 PHP/FI 2.0 的进一步开发几乎终止了。

PHP 3.0 的一个最强大的功能是它的可扩展性。除了给最终用户提供数据库、协议和 API 的基础结构，它的可扩展性还吸引了大量的开发人员加入并提交新的模块。后来证实，这是 PHP 3.0 取得巨大成功的关键。PHP 3.0 中的其它关键功能包括面向对象的支持和更强大和协调的语法结构。

这个全新的语言伴随着一个新的名称发布。它从 PHP/FI 2.0 的名称中移去了暗含"本语言只限于个人使用"的部分。它被命名为简单的缩写"PHP"。这是一种递归的缩写，它的全称是——PHP: Hypertext Preprocessor。

1998 年末，PHP 的安装人数几近 10,000，有大约 100,000 个网站报告他们使用了 PHP。在 PHP 3.0 的顶峰，Internet 上 10% 的 web 服务器上都安装了它。

约九个月的公开测试后，官方于 1998 年 6 月正式发布 PHP 3.0。

PHP 4

1998 年的冬天，PHP 3.0 官方发布不久，Andi Gutmans 和 Zeev Suraski 开始重新编写 PHP 代码。设计目标是增强复杂程序运行时的性能和 PHP 自身代码的模块性。PHP 3.0 的新功能和广泛的第三方数据库、API的支持使得这样程序的编写成为可能，但是 PHP 3.0 没有高效处理如此复杂程序的能力。

新的被称为"Zend Engine"（这是 Zeev 和 Andi 的缩写）的引擎，成功的实现了设计目标，并在 1999 年中期首次引入 PHP。基于该引擎并结合了更多新功能的 PHP 4.0，在 PHP 3.0 发布两年后，于2000年5月发布了官方正式版本。除了更高的性能以外，PHP 4.0 还包含了其它一些关键功能，比如：支持更多的 web 服务器；HTTP Sessions 支持；输出缓冲；更安全的处理用户输入的方法；一些新的语言结构。

今天，已经有 10,000 名开发人员（估计）和几百万网站报告已安装了 PHP，占整个 Internet 域名的 20%。

PHP 的开发小组有很多优秀的开发人员，同时还有大量的优秀人才在进行 PHP 相关工程的开发工作，如 PEAR 和 PHP 文档的工程。

PHP 5

PHP 5 在长时间的开发及多个预发布版本后，于 2004 年 7 月发布正式版本。它的核心是 Zend 引擎 2 代，引入了新的对象模型和大量新功能。

PHP 及其相关工程的历史
PHP 相关工程的历史
PHP 及其相关工程的历史


PHP 相关工程的历史

PEAR

» PEAR，PHP 扩展与应用资源库（PHP Extension and Application Repository，原为 PHP Extension and Add-on Repository）是 PHP 程序的基础类，并可能在将来增强为在开发人员间分发 PHP 和 C 语言编写的 PHP 扩展的关键方法。

PEAR 在 2000 年 1 月于 Tel Aviv 举行的 PHP 开发者会议（PDM）中诞生。这个工程由 Stig S. Bakken 创建。现在，他正专注于他的第一个小女儿，Malin Bakken。

2000 年早些时候，PEAR 已经成长为一个巨大的，有意义的工程。大量的开发人员在为实现普通的、可重用的、功能强大的代码而努力工作着。这给整个 PHP 团体都带来极大的益处。今天 PEAR 包含了大量的基础类，包括数据库访问、内容缓存、数学计算、电子商务等等。

有关 PEAR 的更多信息见其» 手册。

PHP 质量保证体系（QA）

» PHP 质量保证体系于2000年夏设立，因为用户批评 PHP 在发布前没有进行足够的针对产品环境的测试。质量保证小组由精通 PHP 基础代码的核心人员组成。这些开发人员将精力花费在本地化和修复 PHP 的 bug 上。除此之外，其他小组成员也在各种不同的平台上对这些修复进行测试并提供反馈信息。

PHP-GTK

» PHP-GTK 是编写客户端图形用户界面（GUI）程序的 PHP 解决方案。Andrei Zmievski 回忆了 PHP-GTK 计划和创建的过程：

"我总是对 GUI 编程有着浓厚的兴趣。我发现 Gtk+ 是一个非常好的工具包，除了一点——它使用的 C 语言很令人乏味。目睹了 PyGtk 和 GTK-Perl 的实现，我决定尝试 PHP 是否也能够被做成 Gtk+ 的接口。2000 年 8 月，我有了更多的业余时间，于是我开始试验。我参考了 PyGtk 的实现方法，因为它有着相当完全的实现和漂亮的面向对象的接口。James Henstridge，PyG 的作者，在最初的筹备阶段提供了极大的帮助。

"手工写 Gtk+ 函数全部的接口几乎是不可能的事情，所以我把重点放在了代码生成上，就像 PyGtk 做的一样。代码生成器是一个PHP 程序，它可以读取包含 Gtk+ 类、常量和方法信息的一系列的 .defs 文件并生成与 PHP 相接口的 C 代码。无法自动生成的部分可以提交到 .overrides 文件。

"代码生成器和基础结构的工作花了我一定的时间，因为我在 2000 年秋天这段时间里只能花很少的时间在 PHP-GTK 上。在我把 PHP-GTK 给 Frank Kromann 演示过后，他产生了浓厚的兴趣，并开始帮助我完成代码生成器和 Win32 的实现。当我们写了第一个 Hello World 程序并设法使之工作之时，我们的喜悦之情溢于言表。两个多月后，这个工程初见成效，并于 2001 年 3 月 1 日发布了内部版本。这个故事迅速的打击了 SlashDot。

"感到 PHP-GTK 前景广阔，我便为它专门设置了邮件列表和 CVS 知识库。同时，gtk.php.net 网站也在 Colin Viebrock 的帮助下建立起来。文档的工作也由 James Moore 承担起来。

"PHP-GTK 发布之后，它愈加流行。我们有自己的文档小组，手册持续更新。人们开始为 PHP-GTK 编写扩展。越来越多的程序已经开始使用它了。"

PHP 的历史
PHP 相关书籍
PHP 及其相关工程的历史


PHP 相关书籍

随着 PHP 的成长，人们越来越认识到它是一个世界流行的开发平台。看到这种趋势的最有趣方法之一就是：这些年 PHP 相关书籍越来越多。

据我们所知，最早的 PHP 专业书籍是"php- dynamische webauftritte professionell realisieren"——一本 1999 年出版的德国书籍，作者是 Egon Schmid、Christian Cartus 和 Richard Blume。第一本关于 PHP 的英文书随后出版，书名是"Core PHP Programming"，作者为：Leon Atkinson。这两本书都是写 PHP 3.0 的。

这两本书是这类图书的第一本——随后，大量的 PHP 相关图书上市。英文版本超过 40 种，德文 50 种，法文 20 种！除此之外，你可以发现西班牙文、韩文、日文、中文和希伯来文等等语言版本的 PHP 相关图书。

这么大量的图书，这么多作者的写作，这么多出版商的出版，并出现了这么多语言的版本——这强烈的证明 PHP 在世界范围内的成功！

PHP 相关工程的历史
PHP 相关文章
PHP 及其相关工程的历史


PHP 相关文章

据我们所知，关于 PHP 的在杂志上的第一篇文章于 1998 年末在法国的"Informatiques Magazine"杂志上发表，是描述 PHP 3.0 的。据记载，这是大量出版在杂志上 PHP 相关文章的第一篇。

关于 PHP 的文章出现在 Dr. Dobbs、Linux Enterprise、Linux Magazine 等等出版物上。关于在 Windows 下如何转换 ASP 程序到 PHP 的文章甚至出现在了微软自己的 MSDN 上！

PHP 相关书籍
从PHP 7.0.x 移植到 PHP 7.1.x
PHP 及其相关工程的历史


从PHP 7.0.x 移植到 PHP 7.1.x

Table of Contents

  • 新特性
  • 新的函数
  • New global constants
  • 不向后兼容的变更
  • PHP 7.1.x 中废弃的特性
  • Other changes

这个新的小版本带来了大量的 新特性和 少量的兼容性调整 在生产环境切换 PHP 版本前应该进行相关测试。

参见 PHP 版本迁移指南 5.0.x, 5.1.x, 5.2.x, 5.3.x, 5.4.x, 5.5.x, 5.6.x and 7.0.x.

PHP 相关文章
新特性
附录


新特性

可为空（Nullable）类型

类型现在允许为空，当启用这个特性时，传入的参数或者函数返回的结果要么是给定的类型，要么是 null 。可以通过在类型前面加上一个问号来使之成为可为空的。

<?php
function test(?string $name)
{
    var_dump($name);
}

以上例程会输出：

string(5) "tpunt"
NULL
Uncaught Error: Too few arguments to function test(), 0 passed in...

Void 函数

在PHP 7 中引入的其他返回值类型的基础上，一个新的返回值类型void被引入。 返回值声明为 void 类型的方法要么干脆省去 return 语句，要么使用一个空的 return 语句。 对于 void 函数来说，null 不是一个合法的返回值。

<?php
function swap(&$left, &$right) : void
{
    if ($left === $right) {
        return;
    }

    $tmp = $left;
    $left = $right;
    $right = $tmp;
}

$a = 1;
$b = 2;
var_dump(swap($a, $b), $a, $b);

以上例程会输出：

null
int(2)
int(1)

试图去获取一个 void 方法的返回值会得到 null ，并且不会产生任何警告。这么做的原因是不想影响更高层次的方法。

Symmetric array destructuring

短数组语法（[]）现在可以用于将数组的值赋给一些变量（包括在foreach中）。 这种方式使从数组中提取值变得更为容易。

<?php
$data = [
    ['id' => 1, 'name' => 'Tom'],
    ['id' => 2, 'name' => 'Fred'],
];

while (['id' => $id, 'name' => $name] = $data) {
    // logic here with $id and $name
}

类常量可见性

现在起支持设置类常量的可见性。

<?php
class ConstDemo
{
    const PUBLIC_CONST_A = 1;
    public const PUBLIC_CONST_B = 2;
    protected const PROTECTED_CONST = 3;
    private const PRIVATE_CONST = 4;
}

iterable 伪类

现在引入了一个新的被称为iterable的伪类 (与callable类似)。 这可以被用在参数或者返回值类型中，它代表接受数组或者实现了Traversable接口的对象。 至于子类，当用作参数时，子类可以收紧父类的iterable类型到array 或一个实现了Traversable的对象。对于返回值，子类可以拓宽父类的 array或对象返回值类型到iterable。

<?php
function iterator(iterable $iter)
{
    foreach ($iter as $val) {
        //
    }
}

多异常捕获处理

一个catch语句块现在可以通过管道字符(|)来实现多个异常的捕获。 这对于需要同时处理来自不同类的不同异常时很有用。

<?php
try {
    // some code
} catch (FirstException | SecondException $e) {
    // handle first and second exceptions
}

list()现在支持键名

现在list()支持在它内部去指定键名。这意味着它可以将任意类型的数组 都赋值给一些变量（与短数组语法类似）

<?php
$data = [
    ['id' => 1, 'name' => 'Tom'],
    ['id' => 2, 'name' => 'Fred'],
];

while (list('id' => $id, 'name' => $name) = $data) {
    // logic here with $id and $name
}

支持为负的字符串偏移量

现在所有接偏移量的内置的基于字符串的函数都支持接受负数作为偏移量，包括数组解引用操作符([]).

<?php
var_dump("abcdef"[-2]);
var_dump(strpos("aabbcc", "b", -3));

以上例程会输出：

string (1) "e"
int(3)

ext/openssl 支持 AEAD

通过给openssl_encrypt()和openssl_decrypt() 添加额外参数，现在支持了AEAD (模式 GCM and CCM)。

通过 Closure::fromCallable() 将callables转为闭包

Closure新增了一个静态方法，用于将callable快速地 转为一个Closure 对象。

<?php
class Test
{
    public function exposeFunction()
    {
        return Closure::fromCallable([$this, 'privateFunction']);
    }

    private function privateFunction($param)
    {
        var_dump($param);
    }
}

$privFunc = (new Test)->exposeFunction();
$privFunc('some value');

以上例程会输出：

string(10) "some value"

Asynchronous signal handling

A new function called pcntl_async_signals() has been introduced to enable asynchronous signal handling without using ticks (which introduce a lot of overhead).

<?php
pcntl_async_signals(true); // turn on async signals

pcntl_signal(SIGHUP,  function($sig) {
    echo "SIGHUP\n";
});

posix_kill(posix_getpid(), SIGHUP);

以上例程会输出：

SIGHUP

HTTP/2 server push support in ext/curl

Support for server push has been added to the CURL extension (requires version 7.46 and above). This can be leveraged through the curl_multi_setopt() function with the new CURLMOPT_PUSHFUNCTION constant. The constants CURL_PUST_OK and CURL_PUSH_DENY have also been added so that the execution of the server push callback can either be approved or denied.

从PHP 7.0.x 移植到 PHP 7.1.x
新的函数
从PHP 7.0.x 移植到 PHP 7.1.x


新的函数

Closure

  • Closure::fromCallable()

CURL

  • curl_multi_errno()
  • curl_share_errno()
  • curl_share_strerror()

SPL

  • is_iterable()

PCNTL

  • pcntl_async_signals()
新特性
New global constants
从PHP 7.0.x 移植到 PHP 7.1.x


New global constants

Core Predefined Constants

  • PHP_FD_SETSIZE

CURL

  • CURLMOPT_PUSHFUNCTION
  • CURL_PUSH_OK
  • CURL_PUSH_DENY

Data Filtering

  • FILTER_FLAG_EMAIL_UNICODE

Image Processing and GD

  • IMAGETYPE_WEBP

JSON

  • JSON_UNESCAPED_LINE_TERMINATORS

LDAP

  • LDAP_OPT_X_SASL_NOCANON
  • LDAP_OPT_X_SASL_USERNAME
  • LDAP_OPT_X_TLS_CACERTDIR
  • LDAP_OPT_X_TLS_CACERTFILE
  • LDAP_OPT_X_TLS_CERTFILE
  • LDAP_OPT_X_TLS_CIPHER_SUITE
  • LDAP_OPT_X_TLS_KEYFILE
  • LDAP_OPT_X_TLS_RANDOM_FILE
  • LDAP_OPT_X_TLS_CRLCHECK
  • LDAP_OPT_X_TLS_CRL_NONE
  • LDAP_OPT_X_TLS_CRL_PEER
  • LDAP_OPT_X_TLS_CRL_ALL
  • LDAP_OPT_X_TLS_DHFILE
  • LDAP_OPT_X_TLS_CRLFILE
  • LDAP_OPT_X_TLS_PROTOCOL_MIN
  • LDAP_OPT_X_TLS_PROTOCOL_SSL2
  • LDAP_OPT_X_TLS_PROTOCOL_SSL3
  • LDAP_OPT_X_TLS_PROTOCOL_TLS1_0
  • LDAP_OPT_X_TLS_PROTOCOL_TLS1_1
  • LDAP_OPT_X_TLS_PROTOCOL_TLS1_2
  • LDAP_OPT_X_TLS_PACKAGE
  • LDAP_OPT_X_KEEPALIVE_IDLE
  • LDAP_OPT_X_KEEPALIVE_PROBES
  • LDAP_OPT_X_KEEPALIVE_INTERVAL

PostgreSQL

  • PGSQL_NOTICE_LAST
  • PGSQL_NOTICE_ALL
  • PGSQL_NOTICE_CLEAR

SPL

  • MT_RAND_PHP
新的函数
不向后兼容的变更
从PHP 7.0.x 移植到 PHP 7.1.x


不向后兼容的变更

当传递参数过少时将抛出错误

在过去如果我们调用一个用户定义的函数时，提供的参数不足，那么将会产生一个警告(warning)。 现在，这个警告被提升为一个错误异常(Error exception)。这个变更仅对用户定义的函数生效， 并不包含内置函数。例如：

<?php
function test($param){}
test();

Output of the above example in PHP 5.5:

Uncaught Error: Too few arguments to function test(), 0 passed in %s on line %d and exactly 1 expected in %s:%d

Forbid dynamic calls to scope introspection functions

Dynamic calls for certain functions have been forbidden (in the form of $func() or array_map('extract', ...), etc). These functions either inspect or modify another scope, and present with them ambiguous and unreliable behavior. The functions are as follows:

  • assert() - with a string as the first argument
  • compact()
  • extract()
  • func_get_args()
  • func_get_arg()
  • func_num_args()
  • get_defined_vars()
  • mb_parse_str() - with one arg
  • parse_str() - with one arg
<?php
(function () {
    'func_num_args'();
})();

以上例程会输出：

Warning: Cannot call func_num_args() dynamically in %s on line %d

Invalid class, interface, and trait names

The following names cannot be used to name classes, interfaces, or traits:

  • void
  • iterable

Numerical string conversions now respect scientific notation

Integer operations and conversions on numerical strings now respect scientific notation. This also includes the (int) cast operation, and the following functions: intval() (where the base is 10), settype(), decbin(), decoct(), and dechex().

Fixes to mt_rand() algorithm

mt_rand() will now default to using the fixed version of the Mersenne Twister algorithm. If deterministic output from mt_srand() was relied upon, then the MT_RAND_PHP with the ability to preserve the old (incorrect) implementation via an additional optional second parameter to mt_srand().

rand() aliased to mt_rand() and srand() aliased to mt_srand()

rand() and srand() have now been made aliases to mt_rand() and mt_srand(), respectively. This means that the output for the following functions have changes: rand(), shuffle(), str_shuffle(), and array_rand().

Disallow the ASCII delete control character in identifiers

The ASCII delete control character (0x7F) can no longer be used in identifiers that are not quoted.

error_log changes with syslog value

If the error_log ini setting is set to syslog, the PHP error levels are mapped to the syslog error levels. This brings finer differentiation in the error logs in contrary to the previous approach where all the errors are logged with the notice level only.

在不完整的对象上不再调用析构方法

析构方法在一个不完整的对象（例如在构造方法中抛出一个异常）上将不再会被调用。

call_user_func()不再支持对传址的函数的调用

call_user_func() 现在在调用一个以引用作为参数的函数时将始终失败。

字符串不再支持空索引操作符 The empty index operator is not supported for strings anymore

对字符串使用一个空索引操作符（例如$str[] = $x）将会抛出一个致命错误， 而不是静默地将其转为一个数组。

ini配置项移除

下列ini配置项已经被移除：

  • session.entropy_file
  • session.entropy_length
  • session.hash_function
  • session.hash_bits_per_character

Array ordering when elements are automatically created during by reference assignments has changed

The order of the elements in an array has changed when those elements have been automatically created by referencing them in a by reference assignment. For example:

<?php
$array = [];
$array["a"] =& $array["b"];
$array["b"] = 1;
var_dump($array);
?>

Output of the above example in PHP 7.0:

array(2) {
  ["a"]=>
  &int(1)
  ["b"]=>
  &int(1)
}

Output of the above example in PHP 7.1:

array(2) {
  ["b"]=>
  &int(1)
  ["a"]=>
  &int(1)
}

Sort order of equal elements

The internal sorting algorithm has been improved, what may result in different sort order of elements, which compare as equal, than before.

Note:

Don't rely on the order of elements which compare as equal; it might change anytime.

Error message for E_RECOVERABLE errors

The error message for E_RECOVERABLE errors has been changed from "Catchable fatal error" to "Recoverable fatal error".

$options parameter of unserialize()

The allowed_classes element of the $options parameter of unserialize() is now strictly typed, i.e. if anything other than an array or a boolean is given, unserialize() returns FALSE and issues an E_WARNING.

DateTime constructor incorporates microseconds

DateTime and DateTimeImmutable now properly incorporate microseconds when constructed from the current time, either explicitly or with a relative string (e.g. "first day of next month"). This means that naive comparisons of two newly created instances will now more likely return FALSE instead of TRUE:

<?php
new DateTime() == new DateTime();
?>

Fatal errors to Error exceptions conversions

In the Date extension, invalid serialization data for DateTime or DatePeriod classes, or timezone initialization failure from serialized data, will now throw an Error exception from the __wakeup() or __set_state() methods, instead of resulting in a fatal error.

In the DBA extension, data modification functions (such as dba_insert()) will now throw an Error exception instead of triggering a catchable fatal error if the key does not contain exactly two elements.

In the DOM extension, invalid schema or RelaxNG validation contexts will now throw an Error exception instead of resulting in a fatal error. Similarly, attempting to register a node class that does not extend the appropriate base class, or attempting to read an invalid property or write to a readonly property, will also now throw an Error exception.

In the IMAP extension, email addresses longer than 16385 bytes will throw an Error exception instead of resulting in a fatal error.

In the Intl extension, failing to call the parent constructor in a class extending Collator before invoking the parent methods will now throw an Error instead of resulting in a recoverable fatal error. Also, cloning a Transliterator object will now throw an Error exception on failure to clone the internal transliterator instead of resulting in a fatal error.

In the LDAP extension, providing an unknown modification type to ldap_batch_modify() will now throw an Error exception instead of resulting in a fatal error.

In the mbstring extension, the mb_ereg() and mb_eregi() functions will now throw a ParseError exception if an invalid PHP expression is provided and the 'e' option is used.

In the Mcrypt extension, the mcrypt_encrypt() and mcrypt_decrypt() will now throw an Error exception instead of resulting in a fatal error if mcrypt cannot be initialized.

In the mysqli extension, attempting to read an invalid property or write to a readonly property will now throw an Error exception instead of resulting in a fatal error.

In the Reflection extension, failing to retrieve a reflection object or retrieve an object property will now throw an Error exception instead of resulting in a fatal error.

In the Session extension, custom session handlers that do not return strings for session IDs will now throw an Error exception instead of resulting in a fatal error when a function is called that must generate a session ID.

In the SimpleXML extension, creating an unnamed or duplicate attribute will now throw an Error exception instead of resulting in a fatal error.

In the SPL extension, attempting to clone an SplDirectory object will now throw an Error exception instead of resulting in a fatal error. Similarly, calling ArrayIterator::append() when iterating over an object will also now throw an Error exception.

In the standard extension, the assert() function, when provided with a string argument as its first parameter, will now throw a ParseError exception instead of resulting in a catchable fatal error if the PHP code is invalid. Similarly, calling forward_static_call() outside of a class scope will now throw an Error exception.

In the Tidy extension, creating a tidyNode manually will now throw an Error exception instead of resulting in a fatal error.

In the WDDX extension, a circular reference when serializing will now throw an Error exception instead of resulting in a fatal error.

In the XML-RPC extension, a circular reference when serializing will now throw an instance of Error exception instead of resulting in a fatal error.

In the Zip extension, the ZipArchive::addGlob() method will now throw an Error exception instead of resulting in a fatal error if glob support is not available.

Lexically bound variables cannot reuse names

Variables bound to a closure via the use construct cannot use the same name as any superglobals, $this, or any parameter. For example, all of these function definition will result in a fatal error:

<?php
$f = function () use ($_SERVER) {};
$f = function () use ($this) {};
$f = function ($param) use ($param) {};

JSON encoding and decoding

The serialize_precision ini setting now controls the serialization precision when encoding doubles.

Decoding an empty key now results in an empty property name, rather than _empty_ as a property name.

<?php
var_dump(json_decode(json_encode(['' => 1])));

以上例程的输出类似于：

object(stdClass)#1 (1) {
  [""]=>
  int(1)
}

When supplying the JSON_UNESCAPED_UNICODE flag to json_encode(), the sequences U+2028 and U+2029 are now escaped.

Changes to mb_ereg() and mb_eregi() parameter semantics

The third paramter to the mb_ereg() and mb_eregi() functions (regs) will now be set to an empty array if nothing was matched. Formely, the parameter would not have been modified.

Drop support for the sslv2 stream

The sslv2 stream has now been dropped in OpenSSL.

New global constants
PHP 7.1.x 中废弃的特性
从PHP 7.0.x 移植到 PHP 7.1.x


PHP 7.1.x 中废弃的特性

ext/mcrypt

mcrypt 扩展已经过时了大约10年，并且用起来很复杂。因此它被废弃并且被 OpenSSL 所取代。 从PHP 7.2起它将被从核心代码中移除并且移到PECL中。

mb_ereg_replace()和mb_eregi_replace()的Eval选项

对于mb_ereg_replace()和mb_eregi_replace()的 e模式修饰符现在已被废弃。

不向后兼容的变更
Other changes
从PHP 7.0.x 移植到 PHP 7.1.x


Other changes

Notices and warnings on arithmetic with invalid strings

New E_WARNING and E_NOTICE errors have been introduced when invalid strings are coerced using operators expecting numbers (+ - * / ** % << >> | & ^) or their assignment equivalents. An E_NOTICE is emitted when the string begins with a numeric value but contains trailing non-numeric characters, and an E_WARNING is emitted when the string does not contain a numeric value.

<?php
'1b' + 'something';

以上例程会输出：

Notice: A non well formed numeric value encountered in %s on line %d
Warning: A non-numeric value encountered in %s on line %d

Warn on octal escape sequence overflow

Previously, 3-octet octal string escape sequences would overflow silently. Now, they will still overflow, but E_WARNING will be emitted.

<?php
var_dump("\500");

以上例程会输出：

Warning: Octal escape sequence overflow \500 is greater than \377 in %s on line %d
string(1) "@"

Inconsistency fixes to $this

Whilst $this is considered a special variable in PHP, it lacked proper checks to ensure it wasn't used as a variable name or reassigned. This has now been rectified to ensure that $this cannot be a user-defined variable, reassigned to a different value, or be globalised.

Session ID generation without hashing

Session IDs will no longer be hashed upon generation. With this change brings about the removal of the following four ini settings:

  • session.entropy_file
  • session.entropy_length
  • session.hash_function
  • session.hash_bits_per_character

And the addition of the following two ini settings:

  • session.sid_length - defines the length of the session ID, defaulting to 32 characters for backwards compatibility)
  • session.sid_bits_per_character - defines the number of bits to be stored per character (i.e. increases the range of characters that can be used in the session ID), defaulting to 4 for backwards compatibility

Changes to INI file handling

precision

If the value is set to -1, then the dtoa mode 0 is used. The default value is still 14.

serialize_precision

If the value is set to -1, then the dtoa mode 0 is used. The value -1 is now used by default.

gd.jpeg_ignore_warning

The default of this php.ini setting has been changed to 1, so by default libjpeg warnings are ignored.

Session ID generation with a CSPRNG only

Session IDs will now only be generated with a CSPRNG.

More informative TypeError messages when NULL is allowed

TypeError exceptions for arg_info type checks will now provide more informative error messages. If the parameter type or return type accepts NULL (by either having a default value of NULL or being a nullable type), then the error message will now mention this with a message of "must be ... or null" or "must ... or be null."

PHP 7.1.x 中废弃的特性
从PHP 5.6.x 移植到 PHP 7.0.x
从PHP 7.0.x 移植到 PHP 7.1.x


从PHP 5.6.x 移植到 PHP 7.0.x

Table of Contents

  • 不向后兼容的变更
  • 新特性
  • Changes in SAPI Modules
  • Deprecated features in PHP 7.0.x
  • 变更的函数
  • New functions
  • New Classes and Interfaces
  • New Global Constants
  • Removed Extensions and SAPIs
  • Other Changes

尽管PHP7.0是一个新的大版本，我们仍将致力于使迁移变得平缓。 这个版本主要消除在之前版本中不推荐使用的内容，使得语言变得更加通用一致。

这儿有一些值得关注的 少量的兼容性调整 以及 新的特性，同时在生产环境切换PHP版本之前，应该对代码进行测试

参见 PHP 版本迁移指南 5.0.x, 5.1.x, 5.2.x, 5.3.x, 5.4.x, 5.5.x 和 5.6.x.

Other changes
不向后兼容的变更
附录


不向后兼容的变更

错误和异常处理相关的变更

在 PHP 7 中，很多致命错误以及可恢复的致命错误，都被转换为异常来处理了。 这些异常继承自 Error 类，此类实现了 Throwable 接口 （所有异常都实现了这个基础接口）。

这也意味着，当发生错误的时候，以前代码中的一些错误处理的代码将无法被触发。 因为在 PHP 7 版本中，已经使用抛出异常的错误处理机制了。 （如果代码中没有捕获 Error 异常，那么会引发致命错误）。

PHP 7 中的错误处理的更完整的描述，请参见 PHP 7 错误处理。 本迁移指导主要是列出对兼容性有影响的变更。

当内部构造器失败的时候，总是抛出异常

在之前版本中，如果内部类的构造器出错，会返回 NULL 或者一个不可用的对象。 从 PHP 7 开始，如果内部类构造器发生错误， 那么会抛出异常。

解析错误会抛出 ParseError 异常

解析错误会抛出 ParseError 异常。 对于 eval() 函数，需要将其包含到一个 catch 代码块中来处理解析错误。

E_STRICT 警告级别变更

原有的 E_STRICT 警告都被迁移到其他级别。 E_STRICT 常量会被保留，所以调用 error_reporting(E_ALL|E_STRICT) 不会引发错误。

E_STRICT 警告级别变更
场景 | 新的级别/行为
将资源类型的变量用作键来进行索引 | E_NOTICE
抽象静态方法 | 不再警告，会引发错误
重复定义构造器函数 | 不再警告，会引发错误
在继承的时候，方法签名不匹配 | E_WARNING
在两个 trait 中包含相同的（兼容的）属性 | 不再警告，会引发错误
以非静态调用的方式访问静态属性 | E_NOTICE
变量应该以引用的方式赋值 | E_NOTICE
变量应该以引用的方式传递（到函数参数中） | E_NOTICE
以静态方式调用实例方法 | E_DEPRECATED

Changes to variable handling

PHP 7 now uses an abstract syntax tree when parsing source files. This has permitted many improvements to the language which were previously impossible due to limitations in the parser used in earlier versions of PHP, but has resulted in the removal of a few special cases for consistency reasons, which has resulted in backward compatibility breaks. These cases are detailed in this section.

Changes to the handling of indirect variables, properties, and methods

Indirect access to variables, properties, and methods will now be evaluated strictly in left-to-right order, as opposed to the previous mix of special cases. The table below shows how the order of evaluation has changed.

Old and new evaluation of indirect expressions
Expression | PHP 5 interpretation | PHP 7 interpretation
$$foo['bar']['baz'] | ${$foo['bar']['baz']} | ($$foo)['bar']['baz']
$foo->$bar['baz'] | $foo->{$bar['baz']} | ($foo->$bar)['baz']
$foo->$bar['baz']() | $foo->{$bar['baz']}() | ($foo->$bar)['baz']()
Foo::$bar['baz']() | Foo::{$bar['baz']}() | (Foo::$bar)['baz']()

Code that used the old right-to-left evaluation order must be rewritten to explicitly use that evaluation order with curly braces (see the above middle column). This will make the code both forwards compatible with PHP 7.x and backwards compatible with PHP 5.x.

Changes to list() handling

list() no longer assigns variables in reverse order

list() will now assign values to variables in the order they are defined, rather than reverse order. In general, this only affects the case where list() is being used in conjunction with the array [] operator, as shown below:

<?php
list($a[], $a[], $a[]) = [1, 2, 3];
var_dump($a);
?>

Output of the above example in PHP 5:

array(3) {
  [0]=>
  int(3)
  [1]=>
  int(2)
  [2]=>
  int(1)
}

Output of the above example in PHP 7:

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}

In general, it is recommended not to rely on the order in which list() assignments occur, as this is an implementation detail that may change again in the future.

Empty list() assignments have been removed

list() constructs can no longer be empty. The following are no longer allowed:

<?php
list() = $a;
list(,,) = $a;
list($x, list(), $y) = $a;
?>
list() cannot unpack strings

list() can no longer unpack string variables. str_split() should be used instead.

Array ordering when elements are automatically created during by reference assignments has changed

The order of the elements in an array has changed when those elements have been automatically created by referencing them in a by reference assignment. For example:

<?php
$array = [];
$array["a"] =& $array["b"];
$array["b"] = 1;
var_dump($array);
?>

Output of the above example in PHP 5:

array(2) {
  ["b"]=>
  &int(1)
  ["a"]=>
  &int(1)
}

Output of the above example in PHP 7:

array(2) {
  ["a"]=>
  &int(1)
  ["b"]=>
  &int(1)
}

global only accepts simple variables

Variable variables can no longer be used with the global keyword. The curly brace syntax can be used to emulate the previous behaviour if required:

<?php
function f() {
    // Valid in PHP 5 only.
    global $$foo->bar;

    // Valid in PHP 5 and 7.
    global ${$foo->bar};
}
?>

As a general principle, using anything other than a bare variable with global is discouraged.

Parentheses around function arguments no longer affect behaviour

In PHP 5, using redundant parentheses around a function argument could quiet strict standards warnings when the function argument was passed by reference. The warning will now always be issued.

<?php
function getArray() {
    return [1, 2, 3];
}

function squareArray(array &$a) {
    foreach ($a as &$v) {
        $v **= 2;
    }
}

// Generates a warning in PHP 7.
squareArray((getArray()));
?>

以上例程会输出：

Notice: Only variables should be passed by reference in /tmp/test.php on line 13

foreach的变化

foreach发生了细微的变化，控制结构， 主要围绕阵列的内部数组指针和迭代处理的修改。

foreach不再改变内部数组指针

在PHP7之前，当数组通过 foreach 迭代时，数组指针会移动。现在开始，不再如此，见下面代码

<?php
$array = [0, 1, 2];
foreach ($array as &$val) {
    var_dump(current($array));
}
?>

Output of the above example in PHP 5:

int(1)
int(2)
bool(false)

Output of the above example in PHP 7:

int(0)
int(0)
int(0)

foreach 通过值遍历时，操作的值为数组的副本

当默认使用通过值遍历数组时，foreach 实际操作的是数组的迭代副本，而非数组本身。这就意味着，foreach 中的操作不会修改原数组的值。

foreach通过引用遍历时，有更好的迭代特性

当使用引用遍历数组时，现在 foreach 在迭代中能更好的跟踪变化。例如，在迭代中添加一个迭代值到数组中，参考下面的代码：

<?php
$array = [0];
foreach ($array as &$val) {
    var_dump($val);
    $array[1] = 1;
}
?>

Output of the above example in PHP 5:

int(0)

Output of the above example in PHP 7:

int(0)
int(1)

非Traversable 对象的遍历

迭代一个非Traversable对象将会与迭代一个引用数组的行为相同。 这将导致在对象添加或删除属性时， foreach通过引用遍历时，有更好的迭代特性也能被应用

Changes to integer handling

Invalid octal literals

Previously, octal literals that contained invalid numbers were silently truncated (0128 was taken as 012). Now, an invalid octal literal will cause a parse error.

Negative bitshifts

Bitwise shifts by negative numbers will now throw an ArithmeticError:

<?php
var_dump(1 >> -1);
?>

Output of the above example in PHP 5:

int(0)

Output of the above example in PHP 7:

Fatal error: Uncaught ArithmeticError: Bit shift by negative number in /tmp/test.php:2
Stack trace:
#0 {main}
  thrown in /tmp/test.php on line 2

Out of range bitshifts

Bitwise shifts (in either direction) beyond the bit width of an integer will always result in 0. Previously, the behaviour of such shifts was architecture dependent.

Changes to Division By Zero

Previously, when 0 was used as the divisor for either the divide (/) or modulus (%) operators, an E_WARNING would be emitted and false would be returned. Now, the divide operator returns a float as either +INF, -INF, or NAN, as specified by IEEE 754. The modulus operator E_WARNING has been removed and will throw a DivisionByZeroError exception.

<?php
var_dump(3/0);
var_dump(0/0);
var_dump(0%0);
?>

Output of the above example in PHP 5:

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)

Warning: Division by zero in %s on line %d
bool(false)

Output of the above example in PHP 7:

Warning: Division by zero in %s on line %d
float(INF)

Warning: Division by zero in %s on line %d
float(NAN)

PHP Fatal error:  Uncaught DivisionByZeroError: Modulo by zero in %s line %d

string处理上的调整

十六进制字符串不再被认为是数字

含十六进制字符串不再被认为是数字。例如：

<?php
var_dump("0x123" == "291");
var_dump(is_numeric("0x123"));
var_dump("0xe" + "0x1");
var_dump(substr("foo", "0x1"));
?>

Output of the above example in PHP 5:

bool(true)
bool(true)
int(15)
string(2) "oo"

Output of the above example in PHP 7:

bool(false)
bool(false)
int(0)

Notice: A non well formed numeric value encountered in /tmp/test.php on line 5
string(3) "foo"

filter_var() 函数可以用于检查一个 string 是否含有十六进制数字,并将其转换为integer:

<?php
$str = "0xffff";
$int = filter_var($str, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX);
if (false === $int) {
    throw new Exception("Invalid integer!");
}
var_dump($int); // int(65535)
?>

\u{ 可能引起错误

由于新的 Unicode codepoint escape syntax语法， 紧连着无效序列并包含\u{ 的字串可能引起致命错误。 为了避免这一报错，应该避免反斜杠开头。

被移除的函数（Removed functions）

call_user_method() and call_user_method_array()

这两个函数从PHP 4.1.0开始被废弃，应该使用call_user_func() 和 call_user_func_array()。 你也可以考虑使用 变量函数 或者 ... 操作符。

mcrypt aliases

已废弃的 mcrypt_generic_end() 函数已被移除，请使用mcrypt_generic_deinit()代替。

此外，已废弃的 mcrypt_ecb(),
mcrypt_cbc(), mcrypt_cfb() 和
mcrypt_ofb() 函数已被移除，请配合恰当的MCRYPT_MODE_* 常量来使用 mcrypt_decrypt()进行代替。

intl aliases

已废弃的 datefmt_set_timezone_id() 和
IntlDateFormatter::setTimeZoneID() 函数已被移除，请使用 datefmt_set_timezone() 与
IntlDateFormatter::setTimeZone()代替。

set_magic_quotes_runtime()

set_magic_quotes_runtime(), 和它的别名 magic_quotes_runtime()已被移除. 它们在PHP 5.3.0中已经被废弃,并且 在in PHP 5.4.0也由于魔术引号的废弃而失去功能。

set_socket_blocking()

已废弃的 set_socket_blocking() 函数已被移除，请使用stream_set_blocking()代替。

dl() in PHP-FPM

dl()在 PHP-FPM 不再可用，在 CLI 和 embed SAPIs 中仍可用。

GD Type1 functions

Support for PostScript Type1 fonts has been removed from the GD extension, resulting in the removal of the following functions:

  • imagepsbbox()
  • imagepsencodefont()
  • imagepsextendfont()
  • imagepsfreefont()
  • imagepsloadfont()
  • imagepsslantfont()
  • imagepstext()

Using TrueType fonts and their associated functions is recommended instead.

被移除掉的 INI 配置指令

被移除的功能

以下 INI 配置指令已经被移除，同时移除的还有其对应的功能

  • always_populate_raw_post_data
  • asp_tags

xsl.security_prefs

xsl.security_prefs 指令被移除 在预处理的时候，取而代之的方法 XsltProcessor::setSecurityPrefs() 应该被调用到

其他向后兼容相关的变更

new 操作符创建的对象不能以引用方式赋值给变量

new 语句创建的对象不能 以引用的方式赋值给变量。

<?php
class C {}
$c =& new C;
?>

Output of the above example in PHP 5:

Deprecated: Assigning the return value of new by reference is deprecated in /tmp/test.php on line 3

Output of the above example in PHP 7:

Parse error: syntax error, unexpected 'new' (T_NEW) in /tmp/test.php on line 3

无效的类、接口以及 trait 命名

不能以下列名字来命名类、接口以及 trait：

  • bool
  • int
  • float
  • string
  • NULL
  • TRUE
  • FALSE

此外，也不要使用下列的名字来命名类、接口以及 trait。虽然在 PHP 7.0 中， 这并不会引发错误， 但是这些名字是保留给将来使用的。

  • resource
  • object
  • mixed
  • numeric

移除了 ASP 和 script PHP 标签

使用类似 ASP 的标签，以及 script 标签来区分 PHP 代码的方式被移除。 受到影响的标签有：

被移除的 ASP 和 script 标签
开标签 | 闭标签
<% | %>
<%= | %>
<script language="php"> | </script>

从不匹配的上下文发起调用

在不匹配的上下文中以静态方式调用非静态方法， 在 PHP 5.6 中已经废弃， 但是在 PHP 7.0 中， 会导致被调用方法中未定义 $this 变量，以及此行为已经废弃的警告。

<?php
class A {
    public function test() { var_dump($this); }
}

// 注意：并没有从类 A 继承
class B {
    public function callNonStaticMethodOfA() { A::test(); }
}

(new B)->callNonStaticMethodOfA();
?>

Output of the above example in PHP 5:

Deprecated: Non-static method A::test() should not be called statically, assuming $this from incompatible context in /tmp/test.php on line 8
object(B)#1 (0) {
}

Output of the above example in PHP 7:

Deprecated: Non-static method A::test() should not be called statically in /tmp/test.php on line 8

Notice: Undefined variable: this in /tmp/test.php on line 3
NULL

yield 变更为右联接运算符

在使用 yield 关键字的时候，不再需要括号， 并且它变更为右联接操作符，其运算符优先级介于 print 和 => 之间。 这可能导致现有代码的行为发生改变：

<?php
echo yield -1;
// 在之前版本中会被解释为：
echo (yield) - 1;
// 现在，它将被解释为：
echo yield (-1);

yield $foo or die;
// 在之前版本中会被解释为：
yield ($foo or die);
// 现在，它将被解释为：
(yield $foo) or die;
?>

可以通过使用括号来消除歧义。

函数定义不可以包含多个同名参数

在函数定义中，不可以包含两个或多个同名的参数。 例如，下面代码中的函数定义会触发 E_COMPILE_ERROR 错误：

<?php
function foo($a, $b, $unused, $unused) {
    //
}
?>

Switch 语句不可以包含多个 default 块

在 switch 语句中，两个或者多个 default 块的代码已经不再被支持。 例如，下面代码中的 switch 语句会触发 E_COMPILE_ERROR 错误：

<?php
switch (1) {
    default:
    break;
    default:
    break;
}
?>

$HTTP_RAW_POST_DATA 被移除

不再提供 $HTTP_RAW_POST_DATA 变量。 请使用 php://input 作为替代。

INI 文件中 # 注释格式被移除

在 INI 文件中，不再支持以 # 开始的注释行， 请使用 ;（分号）来表示注释。 此变更适用于 php.ini 以及用 parse_ini_file() 和 parse_ini_string() 函数来处理的文件。

JSON 扩展已经被 JSOND 取代

JSON 扩展已经被 JSOND 扩展取代。 对于数值的处理，有以下两点需要注意的： 第一，数值不能以点号（.）结束 （例如，数值 34. 必须写作 34.0 或 34）。 第二，如果使用科学计数法表示数值，e 前面必须不是点号（.） （例如，3.e3 必须写作 3.0e3 或 3e3）。

在数值溢出的时候，内部函数将会失败

将浮点数转换为整数的时候，如果浮点数值太大，导致无法以整数表达的情况下， 在之前的版本中，内部函数会直接将整数截断，并不会引发错误。 在 PHP 7.0 中，如果发生这种情况，会引发 E_WARNING 错误，并且返回 NULL。

自定义会话处理器的返回值修复

在自定义会话处理器中，如果函数的返回值不是 FALSE，也不是 -1， 会引发致命错误。现在，如果这些函数的返回值不是布尔值，也不是 -1 或者 0，函数调用结果将被视为失败，并且引发 E_WARNING 错误。

从PHP 5.6.x 移植到 PHP 7.0.x
新特性
从PHP 5.6.x 移植到 PHP 7.0.x


新特性

标量类型声明

标量类型声明 有两种模式: 强制 (默认) 和 严格模式。 现在可以使用下列类型参数（无论用强制模式还是严格模式）： 字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool)。它们扩充了PHP5中引入的其他类型：类名，接口，数组和 回调类型。

<?php
// Coercive mode
function sumOfInts(int ...$ints)
{
    return array_sum($ints);
}

var_dump(sumOfInts(2, '3', 4.1));

以上例程会输出：

int(9)

要使用严格模式，一个 declare 声明指令必须放在文件的顶部。这意味着严格声明标量是基于文件可配的。 这个指令不仅影响参数的类型声明，也影响到函数的返回值声明（参见 返回值类型声明, 内置的PHP函数以及扩展中加载的PHP函数）

完整的标量类型声明文档和示例参见类型声明章节。

返回值类型声明

PHP 7 增加了对返回类型声明的支持。 类似于参数类型声明，返回类型声明指明了函数返回值的类型。可用的类型与参数声明中可用的类型相同。

<?php

function arraysSum(array ...$arrays): array
{
    return array_map(function(array $array): int {
        return array_sum($array);
    }, $arrays);
}

print_r(arraysSum([1,2,3], [4,5,6], [7,8,9]));

以上例程会输出：

Array
(
    [0] => 6
    [1] => 15
    [2] => 24
)

完整的标量类型声明文档和示例可参见 返回值类型声明.

null合并运算符

由于日常使用中存在大量同时使用三元表达式和 isset()的情况， 我们添加了null合并运算符 (??) 这个语法糖。如果变量存在且值不为NULL， 它就会返回自身的值，否则返回它的第二个操作数。

<?php
// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

// Coalesces can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
?>

太空船操作符（组合比较符）

太空船操作符用于比较两个表达式。当$a小于、等于或大于$b时它分别返回-1、0或1。 比较的原则是沿用 PHP 的常规比较规则进行的。

<?php
// Integers
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1

// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1

// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
?>

通过 define() 定义常量数组

Array 类型的常量现在可以通过 definedefine() 来定义。在 PHP5.6 中仅能通过 const 定义。

<?php
define('ANIMALS', [
    'dog',
    'cat',
    'bird'
]);

echo ANIMALS[1]; // outputs "cat"
?>

匿名类

现在支持通过new class 来实例化一个匿名类，这可以用来替代一些"用后即焚"的完整类定义。

<?php
interface Logger {
    public function log(string $msg);
}

class Application {
    private $logger;

    public function getLogger(): Logger {
         return $this->logger;
    }

    public function setLogger(Logger $logger) {
         $this->logger = $logger;
    }
}

$app = new Application;
$app->setLogger(new class implements Logger {
    public function log(string $msg) {
        echo $msg;
    }
});

var_dump($app->getLogger());
?>

以上例程会输出：

object(class@anonymous)#2 (0) {
}

详细文档可以参考 匿名类.

Unicode codepoint 转译语法

这接受一个以16进制形式的 Unicode codepoint，并打印出一个双引号或heredoc包围的 UTF-8 编码格式的字符串。 可以接受任何有效的 codepoint，并且开头的 0 是可以省略的。

echo "\u{aa}";
echo "\u{0000aa}";
echo "\u{9999}";

以上例程会输出：

a
a (same as before but with optional leading 0's)
香

Closure::call()

Closure::call() 现在有着更好的性能，简短干练的暂时绑定一个方法到对象上闭包并调用它。

<?php
class A {private $x = 1;}

// Pre PHP 7 code
$getXCB = function() {return $this->x;};
$getX = $getXCB->bindTo(new A, 'A'); // intermediate closure
echo $getX();

// PHP 7+ code
$getX = function() {return $this->x;};
echo $getX->call(new A);

以上例程会输出：

1
1

为unserialize()提供过滤

这个特性旨在提供更安全的方式解包不可靠的数据。它通过白名单的方式来防止潜在的代码注入。

<?php

// converts all objects into __PHP_Incomplete_Class object
$data = unserialize($foo, ["allowed_classes" => false]);

// converts all objects into __PHP_Incomplete_Class object except those of MyClass and MyClass2
$data = unserialize($foo, ["allowed_classes" => ["MyClass", "MyClass2"]);

// default behaviour (same as omitting the second argument) that accepts all classes
$data = unserialize($foo, ["allowed_classes" => true]);

IntlChar

新增加的 IntlChar 类旨在暴露出更多的 ICU 功能。这个类自身定义了许多静态方法用于操作多字符集的 unicode 字符。

<?php

printf('%x', IntlChar::CODEPOINT_MAX);
echo IntlChar::charName('@');
var_dump(IntlChar::ispunct('!'));

以上例程会输出：

10ffff
COMMERCIAL AT
bool(true)

若要使用此类，请先安装Intl扩展

预期

预期是向后兼用并增强之前的 assert() 的方法。 它使得在生产环境中启用断言为零成本，并且提供当断言失败时抛出特定异常的能力。

老版本的API出于兼容目的将继续被维护，assert()现在是一个语言结构，它允许第一个参数是一个表达式，而不仅仅是一个待计算的 string或一个待测试的boolean。

<?php
ini_set('assert.exception', 1);

class CustomError extends AssertionError {}

assert(false, new CustomError('Some error message'));
?>

以上例程会输出：

Fatal error: Uncaught CustomError: Some error message

关于这个特性的完整说明，包括如何在开发和生产环境中配置它，可以在assert()的 expectations section章节找到。

Group use declarations

从同一 namespace 导入的类、函数和常量现在可以通过单个 use 语句 一次性导入了。

<?php

// Pre PHP 7 code
use some\namespace\ClassA;
use some\namespace\ClassB;
use some\namespace\ClassC as C;

use function some\namespace\fn_a;
use function some\namespace\fn_b;
use function some\namespace\fn_c;

use const some\namespace\ConstA;
use const some\namespace\ConstB;
use const some\namespace\ConstC;

// PHP 7+ code
use some\namespace\{ClassA, ClassB, ClassC as C};
use function some\namespace\{fn_a, fn_b, fn_c};
use const some\namespace\{ConstA, ConstB, ConstC};
?>

Generator Return Expressions

This feature builds upon the generator functionality introduced into PHP 5.5. It enables for a return statement to be used within a generator to enable for a final expression to be returned (return by reference is not allowed). This value can be fetched using the new Generator::getReturn() method, which may only be used once the generator has finishing yielding values.

<?php

$gen = (function() {
    yield 1;
    yield 2;

    return 3;
})();

foreach ($gen as $val) {
    echo $val, PHP_EOL;
}

echo $gen->getReturn(), PHP_EOL;

以上例程会输出：

1
2
3

Being able to explicitly return a final value from a generator is a handy ability to have. This is because it enables for a final value to be returned by a generator (from perhaps some form of coroutine computation) that can be specifically handled by the client code executing the generator. This is far simpler than forcing the client code to firstly check whether the final value has been yielded, and then if so, to handle that value specifically.

Generator delegation

Generators can now delegate to another generator, Traversable object or array automatically, without needing to write boilerplate in the outermost generator by using the yield from construct.

<?php

function gen()
{
    yield 1;
    yield 2;

    yield from gen2();
}

function gen2()
{
    yield 3;
    yield 4;
}

foreach (gen() as $val)
{
    echo $val, PHP_EOL;
}

?>

以上例程会输出：

1
2
3
4

Integer division with intdiv()

The new intdiv() function performs an integer division of its operands and returns it.

<?php

var_dump(intdiv(10, 3));
?>

以上例程会输出：

int(3)

Session options

session_start() now accepts an array of options that override the session configuration directives normally set in php.ini.

These options have also been expanded to support session.lazy_write, which is on by default and causes PHP to only overwrite any session file if the session data has changed, and read_and_close, which is an option that can only be passed to session_start() to indicate that the session data should be read and then the session should immediately be closed unchanged.

For example, to set session.cache_limiter to private and immediately close the session after reading it:

<?php
session_start([
    'cache_limiter' => 'private',
    'read_and_close' => true,
]);
?>

preg_replace_callback_array()

The new preg_replace_callback_array() function enables code to be written more cleanly when using the preg_replace_callback() function. Prior to PHP 7, callbacks that needed to be executed per regular expression required the callback function to be polluted with lots of branching.

Now, callbacks can be registered to each regular expression using an associative array, where the key is a regular expression and the value is a callback.

CSPRNG Functions

Two new functions have been added to generate cryptographically secure integers and strings in a cross platform way: random_bytes() and random_int().

list() can always unpack objects implementing ArrayAccess

Previously, list() was not guaranteed to operate correctly with objects implementing ArrayAccess. This has been fixed.

不向后兼容的变更
Changes in SAPI Modules
从PHP 5.6.x 移植到 PHP 7.0.x


Changes in SAPI Modules

FPM

Unqualified listen ports now listen on both IPv4 and IPv6

In PHP 5, a listen directive with only a port number would listen on all interfaces, but only on IPv4. PHP 7 will now accept requests made via both IPv4 and IPv6.

This does not affect directives which include specific IP addresses; these will continue to only listen on that address and protocol.

新特性
Deprecated features in PHP 7.0.x
从PHP 5.6.x 移植到 PHP 7.0.x


Deprecated features in PHP 7.0.x

PHP 4 style constructors

PHP 4 style constructors (methods that have the same name as the class they are defined in) are deprecated, and will be removed in the future. PHP 7 will emit E_DEPRECATED if a PHP 4 constructor is the only constructor defined within a class. Classes that implement a __construct() method are unaffected.

<?php
class foo {
    function foo() {
        echo 'I am the constructor';
    }
}
?>

以上例程会输出：

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; foo has a deprecated constructor in example.php on line 3

Static calls to non-static methods

Static calls to methods that are not declared static are deprecated, and may be removed in the future.

<?php
class foo {
    function bar() {
        echo 'I am not static!';
    }
}

foo::bar();
?>

以上例程会输出：

Deprecated: Non-static method foo::bar() should not be called statically in - on line 8
I am not static!

password_hash() salt option

The salt option for the password_hash() function has been deprecated to prevent developers from generating their own (usually insecure) salts. The function itself generates a cryptographically secure salt when no salt is provided by the developer - therefore custom salt generation should not be needed.

capture_session_meta SSL context option

The capture_session_meta SSL context option has been deprecated. SSL metadata is now available through the stream_get_meta_data() function.

LDAP deprecations

The following function has been deprecated:

  • ldap_sort()
Changes in SAPI Modules
变更的函数
从PHP 5.6.x 移植到 PHP 7.0.x


变更的函数

PHP 核心

  • debug_zval_dump() 现在打印 "int" 替代 "long", 打印 "float" 替代 "double"
  • dirname() 增加了可选的第二个参数, depth, 获取当前目录向上 depth 级父目录的名称。
  • getrusage() 现在支持 Windows.
  • mktime() and gmmktime() 函数不再接受 is_dst 参数。
  • preg_replace() 函数不再支持 "\e" (PREG_REPLACE_EVAL). 应当使用 preg_replace_callback() 替代。
  • setlocale() 函数不再接受 category 传入字符串。 应当使用 LC_* 常量。
  • exec(), system() and passthru() 函数对 NULL 增加了保护.
  • substr() 现在当 start 的值与 string 的长度相同时将返回一个空字符串。
Deprecated features in PHP 7.0.x
New functions
从PHP 5.6.x 移植到 PHP 7.0.x


New functions

Closure

  • Closure::call()

CSPRNG

  • random_bytes()
  • random_int()

Error Handling and Logging

  • error_clear_last()

Generator

  • Generator::getReturn()

GNU Multiple Precision

  • gmp_random_seed()

Math

  • intdiv()

PCRE

  • preg_replace_callback_array()

PHP Options/Info

  • gc_mem_caches()
  • get_resources()

POSIX

  • posix_setrlimit()

Reflection

  • ReflectionParameter::getType()
  • ReflectionParameter::hasType()
  • ReflectionFunctionAbstract::getReturnType()
  • ReflectionFunctionAbstract::hasReturnType()

Zip

  • ZipArchive::setCompressionIndex()
  • ZipArchive::setCompressionName()

Zlib Compression

  • inflate_add()
  • deflate_add()
  • inflate_init()
  • deflate_init()
变更的函数
New Classes and Interfaces
从PHP 5.6.x 移植到 PHP 7.0.x


New Classes and Interfaces

Intl

  • IntlChar

Reflection

  • ReflectionGenerator
  • ReflectionType

Session Handling

  • SessionUpdateTimestampHandlerInterface

Exception Hierarchy

  • Throwable
  • Error
  • TypeError
  • ParseError
  • AssertionError
  • ArithmeticError
  • DivisionByZeroError
New functions
New Global Constants
从PHP 5.6.x 移植到 PHP 7.0.x


New Global Constants

Core Predefined Constants

  • PHP_INT_MIN

GD

  • IMG_WEBP (as of PHP 7.0.10)

JSON

  • JSON_ERROR_INVALID_PROPERTY_NAME
  • JSON_ERROR_UTF16

LibXML

  • LIBXML_BIGLINES

PCRE

  • PREG_JIT_STACKLIMIT_ERROR

POSIX

  • POSIX_RLIMIT_AS
  • POSIX_RLIMIT_CORE
  • POSIX_RLIMIT_CPU
  • POSIX_RLIMIT_DATA
  • POSIX_RLIMIT_FSIZE
  • POSIX_RLIMIT_LOCKS
  • POSIX_RLIMIT_MEMLOCK
  • POSIX_RLIMIT_MSGQUEUE
  • POSIX_RLIMIT_NICE
  • POSIX_RLIMIT_NOFILE
  • POSIX_RLIMIT_NPROC
  • POSIX_RLIMIT_RSS
  • POSIX_RLIMIT_RTPRIO
  • POSIX_RLIMIT_RTTIME
  • POSIX_RLIMIT_SIGPENDING
  • POSIX_RLIMIT_STACK
  • POSIX_RLIMIT_INFINITY

Zlib

  • ZLIB_ENCODING_RAW
  • ZLIB_ENCODING_DEFLATE
  • ZLIB_ENCODING_GZIP
  • ZLIB_FILTERED
  • ZLIB_HUFFMAN_ONLY
  • ZLIB_FIXED
  • ZLIB_RLE
  • ZLIB_DEFAULT_STRATEGY
  • ZLIB_BLOCK
  • ZLIB_FINISH
  • ZLIB_FULL_FLUSH
  • ZLIB_NO_FLUSH
  • ZLIB_PARTIAL_FLUSH
  • ZLIB_SYNC_FLUSH
New Classes and Interfaces
Removed Extensions and SAPIs
从PHP 5.6.x 移植到 PHP 7.0.x


Removed Extensions and SAPIs

Removed Extensions

  • ereg
  • mssql
  • mysql
  • sybase_ct

Removed SAPIs

  • aolserver
  • apache
  • apache_hooks
  • apache2filter
  • caudium
  • continuity
  • isapi
  • milter
  • nsapi
  • phttpd
  • pi3web
  • roxen
  • thttpd
  • tux
  • webjames
New Global Constants
Other Changes
从PHP 5.6.x 移植到 PHP 7.0.x


Other Changes

Loosening Reserved Word Restrictions

Globally reserved words as property, constant, and method names within classes, interfaces, and traits are now allowed. This reduces the surface of BC breaks when new keywords are introduced and avoids naming restrictions on APIs.

This is particularly useful when creating internal DSLs with fluent interfaces:

<?php
// 'new', 'private', and 'for' were previously unusable
Project::new('Project Name')->private()->for('purpose here')->with('username here');
?>

The only limitation is that the class keyword still cannot be used as a constant name, otherwise it would conflict with the class name resolution syntax (ClassName::class).

Removal of date.timezone Warning

Previously, a warning was emitted if the date.timezone INI setting had not been set prior to using any date- or time-based functions. Now, this warning has been removed (with date.timezone still defaulting to UTC).

Removed Extensions and SAPIs
从PHP 5.5.x 移植到 PHP 5.6.x
从PHP 5.6.x 移植到 PHP 7.0.x


从PHP 5.5.x 移植到 PHP 5.6.x

Table of Contents

  • 向后不兼容
  • 新特性
  • PHP 5.6.x 中已废止的特性
  • Changed functions
  • 新加函数
  • OpenSSL changes in PHP 5.6.x
  • 扩展中的变动
  • 新加的全局常量

PHP 5.6 中大多数的改善对旧项目没有影响。有一些 不兼容处 和 新功能 需要 注意下，并且在正式布署升级后的项目前应该测试您的代码。

参见 PHP 版本迁移指南 5.0.x、 5.1.x、 5.2.x、 5.3.x、 5.4.x 和 5.5.x。

Other Changes
向后不兼容
附录


向后不兼容

虽然大部分 PHP 5 的代码无需修改即可正常运行， 但是有部分代码是无法向后兼容的：

使用数组标识符为类定义数组类型的属性时，数组的键不会被覆盖

在 PHP 5.6 之前的版本中，为类定义数组类型的属性时， 如果数组中同时使用了显式数组键和隐式数组键，并且显式的键和隐式的序列键相同， 那么数组的键将被覆盖。例如：

<?php
class C {
    const ONE = 1;
    public $array = [
        self::ONE => 'foo',
        'bar',
        'quux',
    ];
}

var_dump((new C)->array);
?>

Output of the above example in PHP 5.5:

array(2) {
  [0]=>
  string(3) "bar"
  [1]=>
  string(4) "quux"
}

Output of the above example in PHP 5.6:

array(3) {
  [1]=>
  string(3) "foo"
  [2]=>
  string(3) "bar"
  [3]=>
  string(4) "quux"
}

严格的 json_decode()

对于 JSON 字面量 true，false 和
null，如果不采用小写格式，将会被 json_decode() 函数拒绝，
同时相应的设置 json_last_error()。
在之前的版本中，json_decode() 函数可以接受这些字面量的
全部大写或者大小写混写的格式。

此变更仅会影响传入到 json_decode() 中的 JSON 格式无效的情况， 有效的 JSON 输入不会受到影响并且能够正确解析。

当使用 SSL/TLS 的时候，流封装器默认验证端点证书和主机名

All encrypted client streams now enable peer verification by default. By default, this will use OpenSSL's default CA bundle to verify the peer certificate. In most cases, no changes will need to be made to communicate with servers with valid SSL certificates, as distributors generally configure OpenSSL to use known good CA bundles.

The default CA bundle may be overridden on a global basis by setting either the openssl.cafile or openssl.capath configuration setting, or on a per request basis by using the cafile or capath context options.

While not recommended in general, it is possible to disable peer certificate verification for a request by setting the verify_peer context option to FALSE, and to disable peer name validation by setting the verify_peer_name context option to FALSE.

GMP 资源现为对象

GMP 资源现为对象。 GMP 扩展中的基于函数的 API 实现不受影响， 只有在代码中使用 is_resource() 或类似函数 来显示检测是否资源类型的代码才会受到影响。

Mcrypt 函数需要有效长度的密钥和初始向量

mcrypt_encrypt()，mcrypt_decrypt()，
mcrypt_cbc()，mcrypt_cfb()，
mcrypt_ecb()，mcrypt_generic() 以及
mcrypt_ofb() 函数不再接受无效长度的密钥和初始向量，
对于需要初始向量的分组加密模式，如果不提供初始向量，函数调用将会失败。

cURL 文件上传

必须先设置 CURLOPT_SAFE_UPLOAD 为 FALSE 才能够使用 @file 语法来上传文件。 建议使用 CURLFile 类来上传文件。

从PHP 5.5.x 移植到 PHP 5.6.x
新特性
从PHP 5.5.x 移植到 PHP 5.6.x


新特性

使用表达式定义常量

在之前的 PHP 版本中， 必须使用静态值来定义常量，声明属性以及指定函数参数默认值。 现在你可以使用包括数值、字符串字面量以及其他常量在内的数值表达式来 定义常量、声明属性以及设置函数参数默认值。

<?php
const ONE = 1;
const TWO = ONE * 2;

class C {
    const THREE = TWO + 1;
    const ONE_THIRD = ONE / self::THREE;
    const SENTENCE = 'The value of THREE is '.self::THREE;

    public function f($a = ONE + self::THREE) {
        return $a;
    }
}

echo (new C)->f()."\n";
echo C::SENTENCE;
?>

以上例程会输出：

4
The value of THREE is 3

现在可以通过 const 关键字来定义类型为 array 的常量。

<?php
const ARR = ['a', 'b'];

echo ARR[0];
?>

以上例程会输出：

a

使用 ... 运算符定义变长参数函数

现在可以不依赖 func_get_args()， 使用 ... 运算符 来实现 变长参数函数。

<?php
function f($req, $opt = null, ...$params) {
    // $params 是一个包含了剩余参数的数组
    printf('$req: %d; $opt: %d; number of params: %d'."\n",
           $req, $opt, count($params));
}

f(1);
f(1, 2);
f(1, 2, 3);
f(1, 2, 3, 4);
f(1, 2, 3, 4, 5);
?>

以上例程会输出：

$req: 1; $opt: 0; number of params: 0
$req: 1; $opt: 2; number of params: 0
$req: 1; $opt: 2; number of params: 1
$req: 1; $opt: 2; number of params: 2
$req: 1; $opt: 2; number of params: 3

使用 ... 运算符进行参数展开

在调用函数的时候，使用 ... 运算符， 将 数组 和 可遍历 对象展开为函数参数。 在其他编程语言，比如 Ruby中，这被称为连接运算符，。

<?php
function add($a, $b, $c) {
    return $a + $b + $c;
}

$operators = [2, 3];
echo add(1, ...$operators);
?>

以上例程会输出：

6

使用 ** 进行幂运算

加入右连接运算符 ** 来进行幂运算。 同时还支持简写的 **= 运算符，表示进行幂运算并赋值。

<?php
printf("2 ** 3 ==      %d\n", 2 ** 3);
printf("2 ** 3 ** 2 == %d\n", 2 ** 3 ** 2);

$a = 2;
$a **= 3;
printf("a ==           %d\n", $a);
?>

以上例程会输出：

2 ** 3 ==      8
2 ** 3 ** 2 == 512
a ==           8

use function 以及 use const

use 运算符 被进行了扩展以支持在类中导入外部的函数和常量。 对应的结构为 use function 和 use const。

<?php
namespace Name\Space {
    const FOO = 42;
    function f() { echo __FUNCTION__."\n"; }
}

namespace {
    use const Name\Space\FOO;
    use function Name\Space\f;

    echo FOO."\n";
    f();
}
?>

以上例程会输出：

42
Name\Space\f

phpdbg

PHP 的 SAPI 模块中实现了一个 交互式调试器，叫做 phpdbg。更多信息，请访问 » phpdbg 文档。

默认字符编码

对于一些字符编码相关的函数，例如 htmlentities()， html_entity_decode() 以及 htmlspecialchars() 使用 default_charset 作为默认字符集。请注意，对于 iconv（现已废弃） 和 mbstring 相关的函数， 如果分别设置了他们的编码， 那么这些对应设置的优先级高于 default_charset。

default_charset 的默认值是 UTF-8。

php://input 是可重用的了

只要你需要，你可以多次打开并读取 php://input。 同时，这个特性使得在处理 POST 的数据的时候， 可以明显降低对于内存的需求量。

大文件上传

现在可以支持大于 2GB 的文件上传。

GMP 支持运算符重载

GMP 支持运算符重载， 并且造型成数值类型。 这使得使用 GMP 的代码更加直观。

<?php
$a = gmp_init(42);
$b = gmp_init(17);

// 5.6 之前版本的代码
var_dump(gmp_add($a, $b));
var_dump(gmp_add($a, 17));
var_dump(gmp_add(42, $b));

// 新的代码
var_dump($a + $b);
var_dump($a + 17);
var_dump(42 + $b);
?>

使用 hash_equals() 比较字符串避免时序攻击

加入 hash_equals() 函数， 以恒定的时间消耗来进行字符串比较， 以避免时序攻击。 比如当比较 crypt() 密码散列值的时候，就可以使用此函数。 （假定你不能使用 password_hash() 和 password_verify()， 这两个函数也可以抵抗时序攻击）

<?php
$expected  = crypt('12345', '$2a$07$usesomesillystringforsalt$');
$correct   = crypt('12345', '$2a$07$usesomesillystringforsalt$');
$incorrect = crypt('1234',  '$2a$07$usesomesillystringforsalt$');

var_dump(hash_equals($expected, $correct));
var_dump(hash_equals($expected, $incorrect));
?>

以上例程会输出：

bool(true)
bool(false)

__debugInfo()

加入 __debugInfo()， 当使用 var_dump() 输出对象的时候， 可以用来控制要输出的属性和值。

<?php
class C {
    private $prop;

    public function __construct($val) {
        $this->prop = $val;
    }

    public function __debugInfo() {
        return [
            'propSquared' => $this->prop ** 2,
        ];
    }
}

var_dump(new C(42));
?>

以上例程会输出：

object(C)#1 (1) {
  ["propSquared"]=>
  int(1764)
}

gost-crypto 散列算法

加入 gost-crypto 散列算法。 它使用 » RFC 4357, 11.2 小节 定义的 CryptoPro S-box 表实现了 GOST 散列函数。

SSL/TLS 提升

在 PHP 5.6 中对 SSL/TLS 的支持进行了大幅度的提升。 这其中包括 默认启用端点验证 选项来支持证书指纹比对， 以避免 TLS 重新协商攻击。 还增加了很多 SSL 上下文选项， 以便在使用加密流的时候， 能够更好的控制协议和验证的相关设置。

这些变动在 PHP 5.6.x 中的 OpenSSL 变更 中有详细描述。

pgsql 异步支持

pgsql 扩展现在支持 异步方式连接数据库及执行查询， 也即可以使用非阻塞的方式和 PostgreSQL 数据库进行交互。 使用 PGSQL_CONNECT_ASYNC 常量可以 建立异步连接，pg_connect_poll()， pg_socket()， pg_consume_input() 和 pg_flush() 函数 可以用来处理异步连接和查询。

向后不兼容
PHP 5.6.x 中已废止的特性
从PHP 5.5.x 移植到 PHP 5.6.x


PHP 5.6.x 中已废止的特性

从不兼容的上下文调用方法

现在已废止从不兼容的上下文调用方法， 并且产生 E_DEPRECATED 错误 （以前是 E_STRICT）。 在 PHP 的后续版本中可能彻底移除对此特性的支持。

以下是不兼容上下文调用方法的示例：

<?php
class A {
    function f() { echo get_class($this); }
}

class B {
    function f() { A::f(); }
}

(new B)->f();
?>

以上例程会输出：

Deprecated: Non-static method A::f() should not be called statically, assuming $this from incompatible context in - on line 7
B

$HTTP_RAW_POST_DATA 和 always_populate_raw_post_data

使用 always_populate_raw_post_data 会导致在填充 $HTTP_RAW_POST_DATA 时产生 E_DEPRECATED 错误。 请使用 php://input 替代 $HTTP_RAW_POST_DATA， 因为它可能在后续的 PHP 版本中被移除。 设置 always_populate_raw_post_data 为 -1 （这样会强制 $HTTP_RAW_POST_DATA 未定义，所以也不回导致 E_DEPRECATED 的错误） 来体验新的行为。

iconv 和 mbstring 编码设置

iconv 和 mbstring 配置选项中 和编码相关的选项都已废弃， 请使用 default_charset。 废弃的选项有：

  • iconv.input_encoding
  • iconv.output_encoding
  • iconv.internal_encoding
  • mbstring.http_input
  • mbstring.http_output
  • mbstring.internal_encoding
新特性
Changed functions
从PHP 5.5.x 移植到 PHP 5.6.x


Changed functions

PHP Core

  • crypt() will now raise an E_NOTICE error if the salt parameter is omitted.
  • substr_compare() will now accept 0 for its length parameter.
  • unserialize() will now fail if passed serialised data that has been manipulated to attempt to instantiate an object without calling its constructor.

cURL

  • Uploads using the @file syntax are now only supported if the CURLOPT_SAFE_UPLOAD option is set to FALSE. CURLFile should be used instead.

Mcrypt

  • The source parameter of mcrypt_create_iv() now defaults to MCRYPT_DEV_URANDOM instead of MCRYPT_DEV_RANDOM.

OpenSSL

  • stream_socket_enable_crypto() now allows the crypto_type parameter to be optional if the stream's SSL context includes the new crypto_type option.

PostgreSQL

  • pg_insert(), pg_select(), pg_update() and pg_delete() are no longer experimental.
  • pg_send_execute(), pg_send_prepare(), pg_send_query() and pg_send_query_params() will no longer block until query write completion if the underlying socket stream for the database connection is set to non-blocking mode.

Reflection

  • ReflectionClass::newInstanceWithoutConstructor() now allows non-final internal classes to be instantiated.

XMLReader

  • XMLReader::getAttributeNs() and XMLReader::getAttributeNo() now return NULL if the attribute could not be found, like XMLReader::getAttribute().
PHP 5.6.x 中已废止的特性
新加函数
从PHP 5.5.x 移植到 PHP 5.6.x


新加函数

GMP

  • gmp_root()
  • gmp_rootrem()

Hash

  • hash_equals()

LDAP

  • ldap_escape()
  • ldap_modify_batch()

MySQLi

  • mysqli_get_links_stats()

OCI8

  • oci_get_implicit_resultset()

OpenSSL

  • openssl_get_cert_locations()
  • openssl_x509_fingerprint()
  • openssl_spki_new()
  • openssl_spki_verify()
  • openssl_spki_export_challenge()
  • openssl_spki_export()

PostgreSQL

  • pg_connect_poll()
  • pg_consume_input()
  • pg_flush()
  • pg_socket()

PDO_PGSQL

  • PDO::pgsqlGetNotify()
  • PDO::pgsqlGetPid()

Session

  • session_abort()
  • session_reset()

Zip

  • ZipArchive::setPassword()
Changed functions
OpenSSL changes in PHP 5.6.x
从PHP 5.5.x 移植到 PHP 5.6.x


OpenSSL changes in PHP 5.6.x

Stream wrappers now verify peer certificates and host names by default when using SSL/TLS

All encrypted client streams now enable peer verification by default. By default, this will use OpenSSL's default CA bundle to verify the peer certificate. In most cases, no changes will need to be made to communicate with servers with valid SSL certificates, as distributors generally configure OpenSSL to use known good CA bundles.

The default CA bundle may be overridden on a global basis by setting either the openssl.cafile or openssl.capath configuration setting, or on a per request basis by using the cafile or capath context options.

While not recommended in general, it is possible to disable peer certificate verification for a request by setting the verify_peer context option to FALSE, and to disable peer name validation by setting the verify_peer_name context option to FALSE.

Certificate fingerprints

Support has been added for extracting and verifying certificate fingerprints. openssl_x509_fingerprint() has been added to extract a fingerprint from an X.509 certificate, and two SSL stream context options have been added: capture_peer_cert to capture the peer's X.509 certificate, and peer_fingerprint to assert that the peer's certificate should match the given fingerprint.

Default ciphers updated

The default ciphers used by PHP have been updated to a more secure list based on the » Mozilla cipher recommendations, with two additional exclusions: anonymous Diffie-Hellman ciphers, and RC4.

This list can be accessed via the new OPENSSL_DEFAULT_STREAM_CIPHERS constant, and can be overridden (as in previous PHP versions) by setting the ciphers context option.

Compression disabled by default

SSL/TLS compression has been disabled by default to mitigate the CRIME attack. PHP 5.4.13 added a disable_compression context option to allow compression to be disabled: this is now set to TRUE (that is, compression is disabled) by default.

Allow servers to prefer their cipher order

The honor_cipher_order SSL context option has been added to allow encrypted stream servers to mitigate BEAST vulnerabilities by preferring the server's ciphers to the client's.

Access the negotiated protocol and cipher

The protocol and cipher that were negotiated for an encrypted stream can now be accessed via stream_get_meta_data() or stream_context_get_options() when the capture_session_meta SSL context option is set to TRUE.

<?php
$ctx = stream_context_create(['ssl' => [
    'capture_session_meta' => TRUE
]]);

$html = file_get_contents('https://google.com/', FALSE, $ctx);
$meta = stream_context_get_options($ctx)['ssl']['session_meta'];
var_dump($meta);
?>

以上例程会输出：

array(4) {
  ["protocol"]=>
  string(5) "TLSv1"
  ["cipher_name"]=>
  string(20) "ECDHE-RSA-AES128-SHA"
  ["cipher_bits"]=>
  int(128)
  ["cipher_version"]=>
  string(11) "TLSv1/SSLv3"
}

New options for perfect forward secrecy in encrypted stream servers

Encrypted client streams already support perfect forward secrecy, as it is generally controlled by the server. PHP encrypted server streams using certificates capable of perfect forward secrecy do not need to take any additional action to enable PFS; however a number of new SSL context options have been added to allow more control over PFS and deal with any compatibility issues that may arise.

ecdh_curve

This option allows the selection of a specific curve for use with ECDH ciphers. If not specified, prime256v1 will be used.

dh_param

A path to a file containing parametrs for Diffie-Hellman key exchange, such as that created by the following command:

openssl dhparam -out /path/to/my/certs/dh-2048.pem 2048
single_dh_use

If set to TRUE, a new key pair will be created when using Diffie-Hellman parameters, thereby improving forward secrecy.

single_ecdh_use

If set to TRUE, a new key pair will always be generated when ECDH cipher suites are negotiated. This improves forward secrecy.

SSL/TLS version selection

It is now possible to select specific versions of SSL and TLS via the crypto_method SSL context option or by specifying a specific transport when creating a stream wrapper (for example, by calling stream_socket_client() or stream_socket_server()).

The crypto_method SSL context option accepts a bitmask enumerating the protocols that are permitted, as does the crypto_type of stream_socket_enable_crypto().

Selected protocol versions and corresponding options
Protocol(s) | Client flag | Server flag | Transport
Any TLS or SSL version | STREAM_CRYPTO_METHOD_ANY_CLIENT | STREAM_CRYPTO_METHOD_ANY_SERVER | ssl://
Any TLS version | STREAM_CRYPTO_METHOD_TLS_CLIENT | STREAM_CRYPTO_METHOD_TLS_SERVER | tls://
TLS 1.0 | STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT | STREAM_CRYPTO_METHOD_TLSv1_0_SERVER | tlsv1.0://
TLS 1.1 | STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT | STREAM_CRYPTO_METHOD_TLSv1_1_SERVER | tlsv1.1://
TLS 1.2 | STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT | STREAM_CRYPTO_METHOD_TLSv1_2_SERVER | tlsv1.2://
SSL 3 | STREAM_CRYPTO_METHOD_SSLv3_CLIENT | STREAM_CRYPTO_METHOD_SSLv3_SERVER | sslv3://
<?php

// Requiring TLS 1.0 or better when using file_get_contents():
$ctx = stream_context_create([
    'ssl' => [
        'crypto_method' => STREAM_CRYPTO_METHOD_TLS_CLIENT,
    ],
]);
$html = file_get_contents('https://google.com/', false, $ctx);

// Requiring TLS 1.1 or 1.2:
$ctx = stream_context_create([
    'ssl' => [
        'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT |
                           STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT,
    ],
]);
$html = file_get_contents('https://google.com/', false, $ctx);

// Connecting using the tlsv1.2:// stream socket transport.
$sock = stream_socket_client('tlsv1.2://google.com:443/');

?>

openssl_get_cert_locations() added

The openssl_get_cert_locations() function has been added: it returns the default locations PHP will search when looking for CA bundles.

<?php
var_dump(openssl_get_cert_locations());
?>

以上例程会输出：

array(8) {
  ["default_cert_file"]=>
  string(21) "/etc/pki/tls/cert.pem"
  ["default_cert_file_env"]=>
  string(13) "SSL_CERT_FILE"
  ["default_cert_dir"]=>
  string(18) "/etc/pki/tls/certs"
  ["default_cert_dir_env"]=>
  string(12) "SSL_CERT_DIR"
  ["default_private_dir"]=>
  string(20) "/etc/pki/tls/private"
  ["default_default_cert_area"]=>
  string(12) "/etc/pki/tls"
  ["ini_cafile"]=>
  string(0) ""
  ["ini_capath"]=>
  string(0) ""
}

SPKI support

Support has been added for generating, extracting and verifying signed public key and challenges (SPKAC). openssl_spki_new(), openssl_spki_verify(), openssl_spki_export_challenge(), and openssl_spki_export() have been added to create, verify export PEM public key and associated challenge from SPKAC's generated from a KeyGen HTML5 element.

openssl_spki_new

Generates a new SPKAC using private key, challenge string and hashing algorithm.

<?php
$pkey = openssl_pkey_new();
openssl_pkey_export($pkey, 'secret passphrase');

$spkac = openssl_spki_new($pkey, 'challenge string');
?>

以上例程会输出：

SPKAC=MIIBXjCByDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA3L0IfUijj7+A8CPC8EmhcdNoe5fUAog7OrBdhn7EkxFButUp40P7+LiYiygYG1TmoI/a5EgsLU3s9twEz3hmgY9mYIqb/rb+SF8qlD/K6KVyUORC7Wlz1Df4L8O3DuRGzx6/+3jIW6cPBpfgH1sVuYS1vDBsP/gMMIxwTsKJ4P0CAwEAARYkYjViMzYxMTktNjY5YS00ZDljLWEyYzctMGZjNGFhMjVlMmE2MA0GCSqGSIb3DQEBAwUAA4GBAF7hu0ifzmjonhAak2FhhBRsKFDzXdKIkrWxVNe8e0bZzMrWOxFM/rqBgeH3/gtOUDRS5Fnzyq425UsTYbjfiKzxGeCYCQJb1KJ2V5Ij/mIJHZr53WYEXHQTNMGR8RPm7IxwVXVSHIgAfXsXZ9IXNbFbcaLRiSTr9/N4U+MXUWL7
openssl_spki_verify

Verifies provided SPKAC.

<?php
$pkey = openssl_pkey_new();
openssl_pkey_export($pkey, 'secret passphrase');

$spkac = openssl_spki_new($pkey, 'challenge string');
var_dump(openssl_spki_verify($spkac));
?>
openssl_spki_export_challenge

Exports associated challenge from provided SPKAC.

<?php
$pkey = openssl_pkey_new();
openssl_pkey_export($pkey, 'secret passphrase');

$spkac = openssl_spki_new($pkey, 'challenge string');
$challenge = openssl_spki_export_challenge($spkac):
echo $challenge;
?>

以上例程会输出：

challenge string
openssl_spki_export

Exports the PEM formatted RSA public key from SPKAC.

<?php
$pkey = openssl_pkey_new();
openssl_pkey_export($pkey, 'secret passphrase');

$spkac = openssl_spki_new($pkey, 'challenge string');
echo openssl_spki_export($spkac);
?>

以上例程会输出：

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDcvQh9SKOPv4DwI8LwSaFx02h7
l9QCiDs6sF2GfsSTEUG61SnjQ/v4uJiLKBgbVOagj9rkSCwtTez23ATPeGaBj2Zg
ipv+tv5IXyqUP8ropXJQ5ELtbXPUN/gvw7cO5EbPHr/7eMhbpw8Gl+AfWxW5hLW8
MGw/+AwwjHBOwong/QIDAQAB
-----END PUBLIC KEY-----
新加函数
扩展中的变动
从PHP 5.5.x 移植到 PHP 5.6.x


扩展中的变动

cURL

在 cURL 库中的一些被标记为废弃的常量， 现在已经被移除：

  • CURLOPT_CLOSEPOLICY
  • CURLCLOSEPOLICY_CALLBACK
  • CURLCLOSEPOLICY_LEAST_RECENTLY_USED
  • CURLCLOSEPOLICY_LEAST_TRAFFIC
  • CURLCLOSEPOLICY_OLDEST
  • CURLCLOSEPOLICY_SLOWEST

OCI8

  • 加入 oci_get_implicit_resultset() 函数 来支持 Oracle Database 12c 的隐式结果集。
  • 如果使用 oci_execute($s, OCI_NO_AUTO_COMMIT) 执行 SELECT 语句， 在连接关闭时发起内部的事物回滚不再是冗余的。
  • 通过 --enable-dtrace 配置选项 控制 DTrace 探针。
  • oci_internal_debug() 现在是无操作函数。
  • 在 phpinfo() 输出中 OCI8 的格式发生变动。

Zip

加入 --with-libzip 配置选项， 使得你可以使用系统安装的 libzip。 最低支持 libzip 0.11 版本，建议使用 0.11.2 或更高的版本。

MySQLi

新加 mysqli.rollback_on_cached_plink 选项，对于事物回滚的连接，将其返回到持久连接池中。

OpenSSL changes in PHP 5.6.x
新加的全局常量
从PHP 5.5.x 移植到 PHP 5.6.x


新加的全局常量

LDAP

  • LDAP_ESCAPE_DN
  • LDAP_ESCAPE_FILTER

OpenSSL

  • OPENSSL_DEFAULT_STREAM_CIPHERS
  • STREAM_CRYPTO_METHOD_ANY_CLIENT
  • STREAM_CRYPTO_METHOD_ANY_SERVER
  • STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT
  • STREAM_CRYPTO_METHOD_TLSv1_0_SERVER
  • STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT
  • STREAM_CRYPTO_METHOD_TLSv1_1_SERVER
  • STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT
  • STREAM_CRYPTO_METHOD_TLSv1_2_SERVER

PostgreSQL

  • PGSQL_CONNECT_ASYNC
  • PGSQL_CONNECTION_AUTH_OK
  • PGSQL_CONNECTION_AWAITING_RESPONSE
  • PGSQL_CONNECTION_MADE
  • PGSQL_CONNECTION_SETENV
  • PGSQL_CONNECTION_SSL_STARTUP
  • PGSQL_CONNECTION_STARTED
  • PGSQL_DML_ESCAPE
  • PGSQL_POLLING_ACTIVE
  • PGSQL_POLLING_FAILED
  • PGSQL_POLLING_OK
  • PGSQL_POLLING_READING
  • PGSQL_POLLING_WRITING
扩展中的变动
从 PHP 5.4.x 迁移到 PHP 5.5.x
从PHP 5.5.x 移植到 PHP 5.6.x


从 PHP 5.4.x 迁移到 PHP 5.5.x

Table of Contents

  • PHP 5.5.x 中的变更
  • 不向后兼容的变更
  • 新的特性
  • PHP 5.5.x 中废弃的特性
  • 变更的函数
  • 新的函数
  • 新的类和接口
  • 新的方法
  • 扩展中的其他变更
  • 新的全局常量
  • INI 文件处理的变化
  • PHP 内部的变化

参见 PHP 版本迁移指南 5.0.x 、 5.1.x 、 5.3.x 以及 5.4.x。

新加的全局常量
PHP 5.5.x 中的变更
附录


PHP 5.5.x 中的变更

PHP 5.5.x 中的大多数改进对现有代码不会有影响。 在生产环境中切换 PHP 版本前应考虑 少许不兼容 和 新特性，并严格测试代码。

想要从一个较老的 PHP 版本升级系统，可使用下列相关文档：

  • PHP 5.4.x 升级说明.
  • PHP 5.3.x 升级说明.
  • PHP 5.2.x 升级说明.
  • PHP 5.1.x 升级说明.
  • 从 PHP 4 迁移到 PHP 5.
从 PHP 5.4.x 迁移到 PHP 5.5.x
不向后兼容的变更
从 PHP 5.4.x 迁移到 PHP 5.5.x


不向后兼容的变更

尽管大部分现有的 PHP 5 代码不需要更改就可以正常运行，但请注意一些不向后兼容的变更：

不再支持 Windows XP 和 2003

已放弃对 Windows XP 和 2003 的支持。构建 Windows 版本的 PHP 需要 Windows Vista 或更新的系统。

Case insensitivity no longer locale specific

All case insensitive matching for function, class and constant names is now performed in a locale independent manner according to ASCII rules. This improves support for languages using the Latin alphabet with unusual collating rules, such as Turkish and Azeri.

This may cause issues for code that uses case insensitive matches for non-ASCII characters in multibyte character sets (including UTF-8), such as accented characters in many European languages. If you have a non-English, non-ASCII code base, then you will need to test that you are not inadvertently relying on this behaviour before deploying PHP 5.5 to production systems.

pack() 和 unpack() 函数的变化

为使 pack() 和 unpack() 更兼容 Perl 做了一些变更：

  • pack() 现在支持"Z"格式代码，其表现的行为与"a"相同。
  • unpack() now support the "Z" format code for NULL padded strings, and behaves as "a" did in previous versions: it will strip trailing NULL bytes.且其行为类似上一个版本中的"a"：清除后面的 NULL 字节。
  • unpack() now keeps trailing NULL bytes when the "a" format code is used.
  • unpack() now strips all trailing ASCII whitespace when the "A" format code is used.

Writing backward compatible code that uses the "a" format code with unpack() requires the use of version_compare(), due to the backward compatibility break.

例如：

<?php
// 以前的代码：
$data = unpack('a5', $packed);

// 新的代码：
if (version_compare(PHP_VERSION, '5.5.0-dev', '>=')) {
  $data = unpack('Z5', $packed);
} else {
  $data = unpack('a5', $packed);
}
?>

移除 PHP logo GUIDs

The GUIDs that previously resulted in PHP outputting various logos have been removed. This includes the removal of the functions to return those GUIDs. The removed functions are:

  • php_logo_guid()
  • php_egg_logo_guid()
  • php_real_logo_guid()
  • zend_logo_guid()

Internal execution changes

Extension authors should note that the zend_execute() function can no longer be overridden, and that numerous changes have been made to the execute_data struct and related function and method handling opcodes.

Most extension authors are unlikely to be affected, but those writing extensions that hook deeply into the Zend Engine should read the notes on these changes.

PHP 5.5.x 中的变更
新的特性
从 PHP 5.4.x 迁移到 PHP 5.5.x


新的特性

新增 Generators

Support for generators has been added via the yield keyword. Generators provide an easy way to implement simple iterators without the overhead or complexity of implementing a class that implements the Iterator interface.

A simple example that reimplements the range() function as a generator (at least for positive step values):

<?php
function xrange($start, $limit, $step = 1) {
    for ($i = $start; $i <= $limit; $i += $step) {
        yield $i;
    }
}

echo 'Single digit odd numbers: ';

/* 注意保存在内存中的数组绝不会被创建或返回 */
foreach (xrange(1, 9, 2) as $number) {
    echo "$number ";
}
?>

以上例程会输出：

Single digit odd numbers: 1 3 5 7 9

新增 finally 关键字

try-catch blocks now support a finally block for code that should be run regardless of whether an exception has been thrown or not.

foreach 现在支持 list()

foreach 控制结构现在支持通过 list() 构造将嵌套数组分离到单独的变量。例如：

<?php
$array = [
    [1, 2],
    [3, 4],
];

foreach ($array as list($a, $b)) {
    echo "A: $a; B: $b\n";
}
?>

以上例程会输出：

A: 1; B: 2
A: 3; B: 4

关于 foreach 更深入的文档可参考相关手册页面。

empty() 支持任意表达式

empty() 现在支持传入一个任意表达式，而不仅是一个变量。例如：

<?php
function always_false() {
    return false;
}

if (empty(always_false())) {
    echo 'This will be printed.';
}

if (empty(true)) {
    echo 'This will not be printed.';
}
?>

以上例程会输出：

This will be printed.

array and string literal dereferencing

Array and string literals can now be dereferenced directly to access individual elements and characters:

<?php
echo 'Array dereferencing: ';
echo [1, 2, 3][0];
echo "\n";

echo 'String dereferencing: ';
echo 'PHP'[0];
echo "\n";
?>

以上例程会输出：

Array dereferencing: 1
String dereferencing: P

新的密码哈希 API

A 新的密码哈希 API that makes it easier to securely hash and manage passwords using the same underlying library as crypt() in PHP has been added. See the documentation for password_hash() for more detail.

Apache 2.4 handler supported on Windows

The Apache 2.4 handler SAPI is now supported on Windows.

改进 GD

对 GD 扩展做了多方面的改进，包括：

  • 翻转支持使用新的 imageflip() 函数。
  • 高级裁剪支持使用 imagecrop() & imagecropauto() 函数。
  • WebP 的读写分别支持使用 imagecreatefromwebp() & imagewebp() 。
不向后兼容的变更
PHP 5.5.x 中废弃的特性
从 PHP 5.4.x 迁移到 PHP 5.5.x


PHP 5.5.x 中废弃的特性

废弃 ext/mysql

原始的 MySQL 扩展 现在被废弃，当连接到数据库时会产生一个 E_DEPRECATED 错误。可使用 MySQLi 或 PDO_MySQL 扩展作为替代。

preg_replace() 中的 /e 修饰符

preg_replace() 函数中用到的 /e 修饰符现在被弃用。可以使用 preg_replace_callback() 函数来替代。

intl 中的废弃

IntlDateFormatter::setTimeZoneID() 和 datefmt_set_timezone_id() 现在被废弃。可分别使用 IntlDateFormatter::setTimeZone() 方法和 datefmt_set_timezone() 函数作为替代。

mcrypt 中的废弃

下列函数已被废弃：

  • mcrypt_cbc()
  • mcrypt_cfb()
  • mcrypt_ecb()
  • mcrypt_ofb()
新的特性
变更的函数
从 PHP 5.4.x 迁移到 PHP 5.5.x


变更的函数

PHP 核心

  • 使用 NULL 作为参数调用 set_error_handler() 将重置错误处理程序。
  • 当使用 NULL 调用set_error_handler() 和 set_exception_handler() 时， 现在分别返回上一个错误或异常处理程序。
  • pack() 和 unpack() 使用 "a"和"A"格式代码时的行为有所变化。 Detailed notes on these changes are available.

intl

  • MessageFormatter::format() 及其相关函数现在 related functions now accept named arguments and mixed numeric and named arguments when PHP is linked to ICU 4.8 or later.
  • MessageFormatter::format() and related functions no longer error when an insufficient number of arguments have been provided. Instead, the placeholders will not be substituted.
  • MessageFormatter::format() and MessageFormatter::parse() are no longer limited to second precision when dealing with times.
  • IntlDateFormatter::__construct() and datefmt_create() now accept IntlTimeZone and DateTimeZone objects for the timezone argument, and IntlCalendar objects for the calendar argument. Furthermore, if the time zone is omitted and the calendar doesn't specify a time zone, PHP's default time zone from date_default_timezone_get() is now used instead of the default ICU time zone.
  • IntlDateFormatter::getCalendar() and datefmt_get_calendar() return false if the IntlDateFormatter object was created with an IntlCalendar instance instead of one of the IntlDateFormatter constants.
  • 除 IntlDateFormatter 常量之外，IntlDateFormatter::setCalendar() 和 datefmt_set_calendar()现在接受 IntlCalendar 对象。
  • IntlDateFormatter::format() 和 datefmt_format() 现在接受 IntlCalendar 对象。
PHP 5.5.x 中废弃的特性
新的函数
从 PHP 5.4.x 迁移到 PHP 5.5.x


新的函数

PHP 核心

  • array_column()
  • boolval()
  • password_get_info()
  • password_hash()
  • password_needs_rehash()
  • password_verify()

Hash

  • hash_pbkdf2()

GD

  • imageaffinematrixconcat()
  • imageaffinematrixget()
  • imagecrop()
  • imagecropauto()
  • imageflip()
  • imagepalettetotruecolor()
  • imagescale()

Intl

  • datefmt_format_object()
  • datefmt_get_calendar_object()
  • datefmt_get_timezone()
  • datefmt_set_timezone()
  • datefmt_get_calendar_object()
  • intlcal_create_instance()
  • intlcal_get_keyword_values_for_locale()
  • intlcal_get_now()
  • intlcal_get_available_locales()
  • intlcal_get()
  • intlcal_get_time()
  • intlcal_set_time()
  • intlcal_add()
  • intlcal_set_time_zone()
  • intlcal_after()
  • intlcal_before()
  • intlcal_set()
  • intlcal_roll()
  • intlcal_clear()
  • intlcal_field_difference()
  • intlcal_get_actual_maximum()
  • intlcal_get_actual_minimum()
  • intlcal_get_day_of_week_type()
  • intlcal_get_first_day_of_week()
  • intlcal_get_greatest_minimum()
  • intlcal_get_least_maximum()
  • intlcal_get_locale()
  • intlcal_get_maximum()
  • intlcal_get_minimal_days_in_first_week()
  • intlcal_get_minimum()
  • intlcal_get_time_zone()
  • intlcal_get_type()
  • intlcal_get_weekend_transition()
  • intlcal_in_daylight_time()
  • intlcal_is_equivalent_to()
  • intlcal_is_lenient()
  • intlcal_is_set()
  • intlcal_is_weekend()
  • intlcal_set_first_day_of_week()
  • intlcal_set_lenient()
  • intlcal_equals()
  • intlcal_get_repeated_wall_time_option()
  • intlcal_get_skipped_wall_time_option()
  • intlcal_set_repeated_wall_time_option()
  • intlcal_set_skipped_wall_time_option()
  • intlcal_from_date_time()
  • intlcal_to_date_time()
  • intlcal_get_error_code()
  • intlcal_get_error_message()
  • intlgregcal_create_instance()
  • intlgregcal_set_gregorian_change()
  • intlgregcal_get_gregorian_change()
  • intlgregcal_is_leap_year()
  • intltz_create_time_zone()
  • intltz_create_default()
  • intltz_get_id()
  • intltz_get_gmt()
  • intltz_get_unknown()
  • intltz_create_enumeration()
  • intltz_count_equivalent_ids()
  • intltz_create_time_zone_id_enumeration()
  • intltz_get_canonical_id()
  • intltz_get_region()
  • intltz_get_tz_data_version()
  • intltz_get_equivalent_id()
  • intltz_use_daylight_time()
  • intltz_get_offset()
  • intltz_get_raw_offset()
  • intltz_has_same_rules()
  • intltz_get_display_name()
  • intltz_get_dst_savings()
  • intltz_from_date_time_zone()
  • intltz_to_date_time_zone()
  • intltz_get_error_code()
  • intltz_get_error_message()

SPL

  • SplFixedArray::__wakeup()
变更的函数
新的类和接口
从 PHP 5.4.x 迁移到 PHP 5.5.x


新的类和接口

Intl

  • IntlCalendar
  • IntlGregorianCalendar
  • IntlTimeZone
  • IntlBreakIterator
  • IntlRuleBasedBreakIterator
  • IntlCodePointBreakIterator
新的函数
新的方法
从 PHP 5.4.x 迁移到 PHP 5.5.x


新的方法

Intl

  • IntlDateFormatter::formatObject()
  • IntlDateFormatter::getCalendarObject()
  • IntlDateFormatter::getTimeZone()
  • IntlDateFormatter::setTimeZone()
新的类和接口
扩展中的其他变更
从 PHP 5.4.x 迁移到 PHP 5.5.x


扩展中的其他变更

Intl

intl 扩展现在需要 ICU 4.0 或更高版本。

新的方法
新的全局常量
从 PHP 5.4.x 迁移到 PHP 5.5.x


新的全局常量

GD

  • IMG_AFFINE_TRANSLATE
  • IMG_AFFINE_SCALE
  • IMG_AFFINE_ROTATE
  • IMG_AFFINE_SHEAR_HORIZONTAL
  • IMG_AFFINE_SHEAR_VERTICAL
  • IMG_CROP_DEFAULT
  • IMG_CROP_TRANSPARENT
  • IMG_CROP_BLACK
  • IMG_CROP_WHITE
  • IMG_CROP_SIDES
  • IMG_FLIP_BOTH
  • IMG_FLIP_HORIZONTAL
  • IMG_FLIP_VERTICAL
  • IMG_BELL
  • IMG_BESSEL
  • IMG_BICUBIC
  • IMG_BICUBIC_FIXED
  • IMG_BLACKMAN
  • IMG_BOX
  • IMG_BSPLINE
  • IMG_CATMULLROM
  • IMG_GAUSSIAN
  • IMG_GENERALIZED_CUBIC
  • IMG_HERMITE
  • IMG_HAMMING
  • IMG_HANNING
  • IMG_MITCHELL
  • IMG_POWER
  • IMG_QUADRATIC
  • IMG_SINC
  • IMG_NEAREST_NEIGHBOUR
  • IMG_WEIGHTED4
  • IMG_TRIANGLE

MySQLi

为使用 mysqli_options() 新增一个 MYSQLI_SERVER_PUBLIC_KEY 选项。

扩展中的其他变更
INI 文件处理的变化
从 PHP 5.4.x 迁移到 PHP 5.5.x


INI 文件处理的变化

Intl

新增 intl.use_exceptions 配置指令，当发生全局错误时，连同已经现存的 intl.error_level 配置指令一起用来控制 intl 的行为。

MySQLnd

新增 mysqlnd.sha256_server_public_key 配置指令来允许 mysqli 使用新的MySQL 认证协议。

新的全局常量
PHP 内部的变化
从 PHP 5.4.x 迁移到 PHP 5.5.x


PHP 内部的变化

  • Extensions cannot override zend_execute() any more and should override zend_execute_ex() instead. EG(current_execute_data) is already initialized in zend_execute_ex(), so for compatibility extensions may need to use EG(current_execute_data)->prev_execute_data instead.
  • 移除 EG(arg_types_stack) 、EX(fbc) 、 EX(called_scope) 以及EX(current_object) 。
  • Added op_array->nested_calls, which is calculated at compile time.
  • Added EX(call_slots), which is an array to store information about syntaticaly nested calls (e.g. foo(bar())) and is preallocated together with execute_data.
  • Added EX(call), which is a pointer to a current calling function, and is an element of EX(call_slots).
  • Opcodes INIT_METHOD_CALL, ZEND_INIT_STATIC_METHOD_CALL, ZEND_INIT_FCALL_BY_NAME and ZEND_INIT_NS_FCALL_BY_NAME use result.num as an index in EX(call_slots).
  • Opcode ZEND_NEW uses extended_value as an index in EX(call_slots).
  • Opcodes ZEND_DO_FCALL and ZEND_DO_FCALL_BY_NAME use op2.num as an index in EX(call_slots).
  • Added op_array->used_stack, which is calculated at compile time; the corresponding stack space is preallocated together with execute_data. As a result, the ZEND_SEND* and ZEND_DO_FCALL* opcodes no longer need to check for stack overflow.
  • Removed execute_data->Ts field. The VM temporary variables are always allocated immediately before the execute_data structure, and are now accessed by their offset from the execute_data base pointer instead of via execute_data->Ts. The compiler stores new offsets in op_array->opcodes[*].op?.num. The EX_TMP_VAR() and EX_TMP_VAR_NUM() macros can be used to access temporary variables by offset or number. You can convert the number to an offset using EX_TMP_VAR_NUM(0, num) or offset to number using (EX_TMP_VAR_NUM(0,0)-EX_TMP_VAR(0,offset)).
  • 移除 execute_data->CVs 字段。The VM compiled variables are always allocated immediately after the execute_data structure, and are now accessed by the offset from the execute_data base pointer instead of via execute_data->CVs. You can use the EX_CV_NUM() macro to access compiled variables by
INI 文件处理的变化
从 PHP 5.3.X 迁移到 PHP 5.4.X
从 PHP 5.4.x 迁移到 PHP 5.5.x


从 PHP 5.3.X 迁移到 PHP 5.4.X

Table of Contents

  • PHP 5.4.x 中的变更
  • 不向后兼容的变更
  • 新特性
  • SAPI 模块中的变化
  • 在 PHP 5.4.x 中过时的特性
  • 变更的函数
  • 新的函数
  • 新的类和接口
  • 新的方法
  • 移除的扩展
  • 扩展中的其他变化
  • 新的全局常量
  • INI 文件处理的变化
  • 其他变化

参见 PHP 版本迁移指南 5.0.x 、 5.1.x 、 5.2.x 、5.3.x 以及 5.5.x。

PHP 内部的变化
PHP 5.4.x 中的变更
附录


PHP 5.4.x 中的变更

PHP 5.4.x 中的大多数改进对现有代码不会有影响。在生产环境中切换 PHP 版本前应考虑 不兼容 和 新特性 ，并严格测试代码。

想要从一个较老的 PHP 版本升级系统，可使用下列相关文档：

  • PHP 5.3.x 升级说明.
  • PHP 5.2.x 升级说明.
  • PHP 5.1.x 升级说明.
  • 从 PHP 4 迁移到 PHP 5.
从 PHP 5.3.X 迁移到 PHP 5.4.X
不向后兼容的变更
从 PHP 5.3.X 迁移到 PHP 5.4.X


不向后兼容的变更

尽管大部分现有的 PHP 5 代码不需要任何改变就可以正常运行，但请注意一些不向后兼容的变更：

  • 不再支持 安全模式 。任何依赖安全模式的应用在安全方面都需要进行调整。
  • 移除 魔术引号 。为避免出现安全问题，依赖此特性的应用可能需要升级。 get_magic_quotes_gpc() 和 get_magic_quotes_runtime() 现在总是返回 FALSE 。 调用 set_magic_quotes_runtime() 将产生一个 E_CORE_ERROR 级别的错误。
  • register_globals 和 register_long_arrays php.ini 指令被移除。
  • 调用时的引用传递 被移除。
  • break 和 continue 语句不再接受可变参数（ 比如： break 1 + foo() * $bar; ）。像类似 break 2; 这样的固定参数仍可使用。受此变化影响，不再允许出现 break 0; 和 continue 0; 。
  • 在 日期与时间扩展 中，不再支持时区使用 TZ（TimeZone）环境变量设置。必须使用 date.timezone php.ini 配置选项或 date_default_timezone_set() 函数来指定时区。PHP 将不再尝试猜测时区，而是回退到"UTC"并发出一条 E_WARNING 错误。
  • 非数字的字符串偏移量，比如 $a['foo'] 此处 $a 是一个字符串，现在使用 isset() 时返回 false，使用 empty() 时返回 true，并产生一条 E_WARNING 错误。偏移量类型是布尔和 null 则产生一条 E_NOTICE 错误。 数字字符串（比如 $a['2'] ）仍像以前一样运行。注意像类似 '12.3' 和 '5 foobar' 这样的偏移量将被视为非数字并产生一条 E_WARNING 错误，但因为向后兼容的原因它们会被分别转换成 12 和 5 。 注意：下列代码返回不同的结果。 $str='abc';var_dump(isset($str['x'])); // 在 PHP 5.4 或更新版本返回 false，但在 PHP 5.3 或更低版本返回 true
  • 数组转换成字符串将产生一条 E_NOTICE 级别的错误，但返回的结果仍是字符串 "Array" 。
  • NULL 、FALSE 、或 一个空字符串被添加成一个对象的属性时将发出一条 E_WARNING 级别的错误，而不是 E_STRICT 。
  • 现在参数名使用全局变量将会导致一个致命错误。禁止类似 function foo($_GET, $_POST) {} 这样的代码。
  • Salsa10 和 Salsa20 哈希算法 被移除。
  • 当使用两个空数组作为参数时， array_combine() 现在返回 array() 而不是 FALSE 。
  • htmlentities() 将像 htmlspecialchars() 一样处理亚洲字符集，这是以前 PHP 版本的处理情况，但现在将会发出一条 E_STRICT 错误。
  • 强烈建议不要再使用 eregi() ，此特性在最新版本中被移除。

下列关键字现在被 保留 ，且不能用于函数名或类名。

  • trait
  • callable
  • insteadof

下列函数已从 PHP 中移除：

  • define_syslog_variables()
  • import_request_variables()
  • session_is_registered() 、 session_register() 以及 session_unregister() 。
  • 别名 mysqli_bind_param() 、 mysqli_bind_result() 、 mysqli_client_encoding() 、 mysqli_fetch() 、 mysqli_param_count() 、 mysqli_get_metadata() 、 mysqli_send_long_data() 、 mysqli::client_encoding() 以及 mysqli_stmt::stmt() 。
PHP 5.4.x 中的变更
新特性
从 PHP 5.3.X 迁移到 PHP 5.4.X


新特性

PHP 5.4.0 提供了丰富的新特性：

  • 新增支持 traits 。
  • 新增短数组语法，比如 $a = [1, 2, 3, 4]; 或 $a = ['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4]; 。
  • 新增支持对函数返回数组的成员访问解析，例如 foo()[0] 。
  • 现在 闭包 支持 $this 。
  • 现在不管是否设置 short_open_tag php.ini 选项，<?= 将总是可用。
  • 新增在实例化时访问类成员，例如： (new Foo)->bar() 。
  • 现在支持 Class::{expr}() 语法。
  • 新增二进制直接量，例如：0b001001101 。
  • 改进解析错误信息和不兼容参数的警告。
  • SESSION 扩展现在能追踪文件的 上传进度 。
  • 内置用于开发的 CLI 模式的 web server 。
不向后兼容的变更
SAPI 模块中的变化
从 PHP 5.3.X 迁移到 PHP 5.4.X


SAPI 模块中的变化

  • 一个名为 cli-server 的新 SAPI 模块可以使用。
  • 新增 CLI 选项 --rz 用来显示 Zend 扩展的信息。
  • 新增快捷方式 #inisetting=value 在 readline CLI 交互模式下来更改 php.ini 设置。
  • 新增 apache 兼容函数： 用于 FastCGI SAPI 的apache_child_terminate() 、 getallheaders() 、 apache_request_headers() 以及 apache_response_headers() 。
  • PHP-FPM：新增 process.max 设置，用来控制 FPM 能 fork 的进程数目。
新特性
在 PHP 5.4.x 中过时的特性
从 PHP 5.3.X 迁移到 PHP 5.4.X


在 PHP 5.4.x 中过时的特性

过时的函数：

  • mcrypt_generic_end()
  • mysql_list_dbs()
SAPI 模块中的变化
变更的函数
从 PHP 5.3.X 迁移到 PHP 5.4.X


变更的函数

在 PHP 5.4 中 一些函数增加了新的参数和可选参数：

PHP 核心：

  • debug_backtrace() 和 debug_print_backtrace() 新增可选参数 limit 来限制返回的堆栈帧数量。
  • is_link() 现在在 Windows Vista 或更新系统上对于符号链接能正确地运行。早期系统不支持符号链接。
  • parse_url() 在省略方案（scheme，如http）时，现在能识辨出主机，并存在一个主要的组件分隔符。自 PHP 5.4.7 起。

OpenSSL:

  • openssl_encrypt() 和 openssl_decrypt() 函数新增一个未填充的选项。

Intl:

  • idn_to_ascii() 和 idn_to_utf8() 现在可以使用两个额外的参数，一个代表变体，另一个通过应用传递， 返回选择 UTS #46 时的操作细节。
在 PHP 5.4.x 中过时的特性
新的函数
从 PHP 5.3.X 迁移到 PHP 5.4.X


新的函数

PHP 5.4 引入一些新的函数：

PHP 核心：

  • hex2bin()
  • http_response_code()
  • get_declared_traits()
  • getimagesizefromstring()
  • stream_set_chunk_size()
  • socket_import_stream()
  • trait_exists()
  • header_register_callback()

SPL:

  • class_uses()

Session:

  • session_status()
  • session_register_shutdown()

Mysqli:

  • mysqli_error_list()
  • mysqli_stmt_error_list()

Libxml:

  • libxml_set_external_entity_loader()

LDAP:

  • ldap_control_paged_result()
  • ldap_control_paged_result_response()

Intl:

  • transliterator_create()
  • transliterator_create_from_rules()
  • transliterator_create_inverse()
  • transliterator_get_error_code()
  • transliterator_get_error_message()
  • transliterator_list_ids()
  • transliterator_transliterate()

Zlib:

  • zlib_decode()
  • zlib_encode()
变更的函数
新的类和接口
从 PHP 5.3.X 迁移到 PHP 5.4.X


新的类和接口

在 PHP 5.4.0 中引入下列类：

SPL:

  • CallbackFilterIterator
  • RecursiveCallbackFilterIterator

Reflection:

  • ReflectionZendExtension

Json:

  • JsonSerializable

Session:

  • SessionHandler
  • SessionHandlerInterface

Snmp:

  • SNMP

Intl:

  • Transliterator
  • Spoofchecker
新的函数
新的方法
从 PHP 5.3.X 迁移到 PHP 5.4.X


新的方法

在 PHP 5.4.0 中引入了几个新的方法：

XSL:

  • XsltProcessor::setSecurityPrefs()
  • XsltProcessor::getSecurityPrefs()

SPL:

  • RegexIterator::getRegex()
  • SplObjectStorage::getHash()
  • DirectoryIterator::getExtension()
  • SplDoublyLinkedList::serialize()
  • SplDoublyLinkedList::unserialize()
  • SplFileInfo::getExtension()
  • SplFileObject::fputcsv()
  • SplQueue::serialize()
  • SplQueue::unserialize()
  • SplStack::serialize()
  • SplStack::unserialize()
  • SplTempFileObject::fputcsv()

反射:

  • ReflectionExtension::isPersistent()
  • ReflectionExtension::isTemporary()
  • ReflectionClass::isCloneable()

Closure:

  • Closure::bind()
  • Closure::bindTo()

PDO_dblib:

  • PDO::newRowset()

StreamWrapper:

  • StreamWrapper::stream_metadata()
  • StreamWrapper::stream_truncate()
新的类和接口
移除的扩展
从 PHP 5.3.X 迁移到 PHP 5.4.X


移除的扩展

下列扩展被移到 PECL 且不再作为 PHP 发行版本的一部分。根据用户需求，将创建这些扩展的 PECL 包版本。

  • sqlite - 注意： ext/sqlite3 和 ext/pdo_sqlite 不受影响
新的方法
扩展中的其他变化
从 PHP 5.3.X 迁移到 PHP 5.4.X


扩展中的其他变化

扩展中行为和新特性的变化:

  • mysqli - mysqli_result 现在实现 Traversable
  • pdo_mysql - 不再支持使用低于 4.1 版本的 MySQL 客户端库连接。
  • MySQL 扩展 mysql 、mysqli 及 PDO_mysql 现在使用 mysqlnd 作为默认库。通过在配置选项中指定路径仍然可以使用 libmysqlclient 。
  • mysqlnd - 增加支持命名管道
移除的扩展
新的全局常量
从 PHP 5.3.X 迁移到 PHP 5.4.X


新的全局常量

PHP 核心：

  • ENT_DISALLOWED
  • ENT_HTML401
  • ENT_HTML5
  • ENT_SUBSTITUTE
  • ENT_XML1
  • ENT_XHTML
  • IPPROTO_IP
  • IPPROTO_IPV6
  • IPV6_MULTICAST_HOPS
  • IPV6_MULTICAST_IF
  • IPV6_MULTICAST_LOOP
  • IP_MULTICAST_IF
  • IP_MULTICAST_LOOP
  • IP_MULTICAST_TTL
  • MCAST_JOIN_GROUP
  • MCAST_LEAVE_GROUP
  • MCAST_BLOCK_SOURCE
  • MCAST_UNBLOCK_SOURCE
  • MCAST_JOIN_SOURCE_GROUP
  • MCAST_LEAVE_SOURCE_GROUP

Curl:

  • CURLOPT_MAX_RECV_SPEED_LARGE
  • CURLOPT_MAX_SEND_SPEED_LARGE

LibXML:

  • LIBXML_HTML_NODEFDTD
  • LIBXML_HTML_NOIMPLIED
  • LIBXML_PEDANTIC

OpenSSL:

  • OPENSSL_CIPHER_AES_128_CBC
  • OPENSSL_CIPHER_AES_192_CBC
  • OPENSSL_CIPHER_AES_256_CBC
  • OPENSSL_RAW_DATA
  • OPENSSL_ZERO_PADDING

输出缓冲:

  • PHP_OUTPUT_HANDLER_CLEAN
  • PHP_OUTPUT_HANDLER_CLEANABLE
  • PHP_OUTPUT_HANDLER_DISABLED
  • PHP_OUTPUT_HANDLER_FINAL
  • PHP_OUTPUT_HANDLER_FLUSH
  • PHP_OUTPUT_HANDLER_FLUSHABLE
  • PHP_OUTPUT_HANDLER_REMOVABLE
  • PHP_OUTPUT_HANDLER_STARTED
  • PHP_OUTPUT_HANDLER_STDFLAGS
  • PHP_OUTPUT_HANDLER_WRITE

Sessions:

  • PHP_SESSION_ACTIVE
  • PHP_SESSION_DISABLED
  • PHP_SESSION_NONE

Streams:

  • STREAM_META_ACCESS
  • STREAM_META_GROUP
  • STREAM_META_GROUP_NAME
  • STREAM_META_OWNER
  • STREAM_META_OWNER_NAME
  • STREAM_META_TOUCH

Zlib:

  • ZLIB_ENCODING_DEFLATE
  • ZLIB_ENCODING_GZIP
  • ZLIB_ENCODING_RAW

Intl:

  • U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR
  • IDNA_CHECK_BIDI
  • IDNA_CHECK_CONTEXTJ
  • IDNA_NONTRANSITIONAL_TO_ASCII
  • IDNA_NONTRANSITIONAL_TO_UNICODE
  • INTL_IDNA_VARIANT_2003
  • INTL_IDNA_VARIANT_UTS46
  • IDNA_ERROR_EMPTY_LABEL
  • IDNA_ERROR_LABEL_TOO_LONG
  • IDNA_ERROR_DOMAIN_NAME_TOO_LONG
  • IDNA_ERROR_LEADING_HYPHEN
  • IDNA_ERROR_TRAILING_HYPHEN
  • IDNA_ERROR_HYPHEN_3_4
  • IDNA_ERROR_LEADING_COMBINING_MARK
  • IDNA_ERROR_DISALLOWED
  • IDNA_ERROR_PUNYCODE
  • IDNA_ERROR_LABEL_HAS_DOT
  • IDNA_ERROR_INVALID_ACE_LABEL
  • IDNA_ERROR_BIDI
  • IDNA_ERROR_CONTEXTJ

Json:

  • JSON_PRETTY_PRINT
  • JSON_UNESCAPED_SLASHES
  • JSON_NUMERIC_CHECK
  • JSON_UNESCAPED_UNICODE
  • JSON_BIGINT_AS_STRING
扩展中的其他变化
INI 文件处理的变化
从 PHP 5.3.X 迁移到 PHP 5.4.X


INI 文件处理的变化

下列 php.ini 指令被移除：

  • register_globals 和 register_long_arrays
  • magic_quotes_gpc 、 magic_quotes_runtime 以及 magic_quotes_sybase
  • allow_call_time_pass_reference
  • define_syslog_variables
  • highlight.bg
  • session.bug_compat_42 和 session.bug_compat_warn
  • y2k_compliance
  • safe_mode 、 safe_mode_gid 、 safe_mode_include_dir 、 safe_mode_exec_dir 、 safe_mode_allowed_env_vars 以及 safe_mode_protected_env_vars

新增下列 php.ini 指令：

  • cli.pager 和 cli.prompt 对于 CLI SAPI 在交互模式中使用 readline
  • cli_server.color 使内置用于开发的 web server 能在终端输出使用 ANSI 颜色编码。
  • max_input_vars - 指定 GET/POST/COOKIE 输入变量的最大长度。
  • zend.multibyte - 控制新的多字节支持。
  • zend.script_encoding - 除非在脚本最前面出现"declare(encoding=...)"指令，否则将使用此值。
  • zend.signal_check - 在关闭时检查是否替代信号处理。
  • session.upload_progress.enabled 、 session.upload_progress.cleanup 、 session.upload_progress.prefix 、 session.upload_progress.name session.upload_progress.freq 、 session.upload_progress.min_freq
  • enable_post_data_reading - 禁用时，POST 数据不能读取（和处理）。
  • windows_show_crt_warning - 启用时此指令显示 Windows CRT 警告。到目前为止这些警告都是默认显示的。

下列 php.ini. 指令被变更：

  • session.entropy_file 现在默认为 /dev/random 或 /dev/urandom ，取决于在编译时的推测。
  • session.entropy_length 现在默认为 32 。
新的全局常量
其他变化
从 PHP 5.3.X 迁移到 PHP 5.4.X


其他变化

  • htmlspecialchars() 和 htmlentities() 现在默认的字符集为 UTF-8，而不再是 ISO-8859-1 。注意输出字符集的变化，通过 default_charset 配置设置不影响 htmlspecialchars/htmlentities ，除非将 ""（空字符串）作为编码参数传递给htmlspecialchars() / htmlentities()调用。通常不推荐这么做，因可以通过这些函数运行时使用的字符集不受影响地改变输出字符集。最安全的方法是每次调用 htmlspecialchars() 和 htmlentities() 都明确地设置字符集。
  • 在 error_reporting 配置指令中，E_ALL 现在包括了 E_STRICT 级别的错误。
  • SNMP 现在有了 OOP API 。 现在包括 SNMP-related 在内，函数在每个错误状态都返回 FALSE （没有这样的实例、MIB 结束等等）。因此，特别是，当发生 SNMP-related 错误时，get/walk 函数中断上一个行为返回一个空字符串。 现在支持多 OID get/getnext/set 查询。 删除 UCD-SNMP 兼容代码，考虑升级到 net-snmp v5.3+，对于 Windows 版本需要Net-SNMP v5.4+。 现在通过扩展来支持远程 SNMP 代理 （对等）的 IPv6 DNS 域名解析，而不再是通过 Net-SNMP 库。
  • OpenSSL 现在支持 AES 。
  • 当使用 readline 交互模式时， CLI SAPI 不再在发生致命错误时终止。
  • 新增微秒级精度的 $_SERVER['REQUEST_TIME_FLOAT'] 。
  • 增加新的哈希算法： fnv132、 fnv164及 joaat
  • 链式字符串偏移量，例如 $a[0][0] 中 $a 是一个字符串， 现在能正常运行。
  • SimpleXMLElement 组织成的数组现在总是包含所有节点，而不仅仅是第一个匹配的节点。当使用 var_dump() 、 var_export() 以及 print_r() 时，所有 SimpleXMLElement 子元素总是被打印出来。
  • 现在可以在基类的抽象构造函数中强制类的 __construct 参数。
INI 文件处理的变化
从 PHP 5.2.x 移植到 PHP 5.3.x
从 PHP 5.3.X 迁移到 PHP 5.4.X


从 PHP 5.2.x 移植到 PHP 5.3.x

Table of Contents

  • PHP 5.3.x 的变化
  • 不向下兼容的变化
  • 新特性
  • Windows 支持改变
  • SAPI 模块的改变
  • PHP 5.3.x 中弃用的功能
  • PHP 5.3.x 保留的功能
  • 新参数
  • 新函数
  • 新的流包装器
  • 新的流过滤器
  • 新增的类常量
  • 新增的方法
  • 新的扩展
  • 被移除的扩展
  • Other changes to extensions
  • 新类
  • 新的全局常量
  • INI 文件处理改变
  • 其他改变

参见 PHP 版本迁移指南 5.0.x, 5.1.x 和 5.2.x.

其他变化
PHP 5.3.x 的变化
附录


PHP 5.3.x 的变化

PHP 5.3.x 的大多数改进对现有代码没有影响。需要注意的是有一些不兼容和新功能，在生产环境中切换 PHP 版本需要先行测试代码。

由更老的 PHP 版本进行升级，有一些可用的相关文档：

  • PHP 5.2.x 升级说明.
  • PHP 5.1.x 升级说明.
  • 从 PHP 4 移植到 PHP 5.
从 PHP 5.2.x 移植到 PHP 5.3.x
不向下兼容的变化
从 PHP 5.2.x 移植到 PHP 5.3.x


不向下兼容的变化

尽管大多数现有的 PHP 5 代码无需改变就可以工作，但是请注意一些不向下兼容的变化：

  • 在 PHP 5.3.x 的所有绑定扩展中应用了新的内部参数解析API, 当给函数传递了不兼容的参数时将返回 NULL. 但有一些例外，比如函数 get_class() 在出现错误时将会返回 FALSE.
  • clearstatcache() 默认不再清除缓存的 realpath.
  • realpath() 现在是完全与平台无关的. 结果是非法的相对路径比如 __FILE__ . "/../x" 将不会工作.
  • call_user_func() 系列函数即使被调用者是一个父类也使用 $this.
  • 数组函数 natsort(), natcasesort(), usort(), uasort(), uksort(), array_flip(), 和 array_unique() 将不再接受对象作为参数. 在将这些函数应用于对象时, 请首先将对象转换为数组.
  • 按引用传递参数的函数在被按值传递调用时行为发生改变. 此前函数将接受按值传递的参数, 现在将抛出致命错误. 之前任何期待传递引用但是在调用时传递了常量或者字面值 的函数, 需要在调用前改为将该值赋给一个变量。
  • 新的 mysqlnd 库需要使用 MySQL 4.1 新的 41 字节密码格式。继续使用旧的 16 字节密码将导致 mysql_connect() 和其它类似函数 抛出 "mysqlnd cannot connect to MySQL 4.1+ using old authentication." 错误.
  • 新的 mysqlnd 库将不再读取 MySQL 配置文件(my.cnf/my.ini), 这与旧版本的 libmysql 库不同. 如果你的代码依赖于这些配置 文件, 你可以使用 mysqli_options() 显式地加载它. 注意, 这意味着如果 PDO 中的 MySQL 支持使用了 mysqlnd 进行编译，PDO 特有常量 PDO::MYSQL_ATTR_READ_DEFAULT_FILE 和 PDO::MYSQL_ATTR_READ_DEFAULT_GROUP 将是未定义的.
  • SplFileInfo 及其相关目录类会移除末尾的 /.
  • __toString 魔术方法不再接受参数.
  • 魔术方法 __get, __set, __isset, __unset, and __call 应该总是公共的(public)且不能是静态的(static). 方法签名是必须的.
  • 现在 __call 魔术方法在访问私有的(private)和被保护的(protected)方法时被调用.
  • 函数内 include 或者 require 一个文件时，文件内 将不能使用 func_get_arg(), func_get_args() 和 func_num_args() 函数。
  • 新增了一个包裹在 MHASH 扩展外面的仿真层。但是并非所有的算法都涉及到了，值得注意的是 s2k 哈希算法。这意味着 s2k 哈希算法在 PHP 5.3.0 中不再可用。

以下关键词被保留，将不能被用作函数名, 类名等。

  • goto
  • namespace
PHP 5.3.x 的变化
新特性
从 PHP 5.2.x 移植到 PHP 5.3.x


新特性

PHP 5.3.0 提供了广泛的新特性:

  • 添加了命名空间的支持.
  • 添加了静态晚绑定支持.
  • 添加了跳标签支持.
  • 添加了原生的闭包(Lambda/匿名函数)支持.
  • 新增了两个魔术方法, __callStatic 和 __invoke.
  • 添加了 Nowdoc 语法支持, 类似于 Heredoc 语法, 但是包含单引号.
  • 使用 Heredoc 来初始化静态变量和类属性/常量变为可能.
  • 可使用双引号声明 Heredoc, 补充了 Nowdoc 语法.
  • 可在类外部使用 const 关键词声明 常量.
  • 三元运算操作符有了简写形式: ?:.
  • HTTP 流包裹器将从 200 到 399 全部的状态码都视为成功。
  • 动态访问静态方法变为可能.
  • 异常可以被内嵌.
  • 新增了循环引用的垃圾回收器并且默认是开启的.
  • mail() 现在支持邮件发送日志. (注意: 仅支持通过该函数发送的邮件.)
不向下兼容的变化
Windows 支持改变
从 PHP 5.2.x 移植到 PHP 5.3.x


Windows 支持改变

Windows 发行版的改变:

  • 最小的 Windows 支持版本是 Windows XP SP3; Windows 98, ME, 2000 和 NT4 将不再被支持.
  • Windows 二进制版支持 i586 以上版本. i386 和 i486 不再被支持.
  • Windows 上的 PHP x64 版本的支持是实验性的.
  • 通过使用 Visual Studio 2008, 编译器现在支持 Visual C++ 9 (VC9). 基于 VC9 的快照和发行版均可用. 旧的使用 VC6 的二进制版本仍然会与 VC9 版本同时被支持和发行.
  • PDO_OCI php_pdo_oci8.dll 库(配合 Oracle version 8 客户端库使用)已经不会被内建. 作为替代, 使用 php_pdo_oci.dll (注意没有 '8') 配合 Oracle 10 或 11 客户端库. 仍然支持其他数据库版本的连接.
  • 对于 OCI8 扩展而言, 除了 php_oci8.dll 之外, 一个新的库 php_oci8_11g.dll 可用. 但仅仅只能同时打开一个库. 配合 Oracle 10.2 客户端库使用 php_oci8.dll. 配合 Oracle 11 客户端库使用 php_oci8_11g.dll. 仍然支持其他数据库版本的连接.

新增了如下这些 Windows 支持函数:

  • checkdnsrr()
  • dns_get_record()
  • fnmatch()
  • getmxrr()
  • getopt()
  • imagecolorclosesthwb()
  • inet_ntop()
  • inet_pton()
  • link()
  • linkinfo()
  • mcrypt_create_iv()
  • readlink()
  • socket_create_pair() - 该函数之前就可以在 Windows 平台使用, 但是自 PHP 4.3.0 起就因为一个 Bug 的原因而关闭了.
  • stream_socket_pair()
  • symlink()
  • time_nanosleep()
  • time_sleep_until()

其它改变:

  • 改进了 stat(), touch(), filemtime(), filesize() 等相关函数的移植性(对于可用数据100%可移植).
  • 现在可以使用 link() 函数来在 Windows 平台上创建硬链接, 创建符号链接则使用 symlink() 函数. 硬链接自 Windows 2000 起可用, 符号链接则自 Windows Vista 起可用.
  • Windows 版本的 PHP 包含一组以 PHP_WINDOWS_* 为前缀的常量. 这些常量的列表可以在预定义常量找到.
Warning

丢弃 ISAPI 模块支持. 使用改进的 FastCGI SAPI 模块替代.

Note: 一个新的专注于 PHP on Windows 的站点可用, 包括下载, 发布候选版本, 和各种快照(thread-safe/not-thread-safe, VC6/VC9, x86/x64). 网站的地址是 » http://windows.php.net/.

新特性
SAPI 模块的改变
从 PHP 5.2.x 移植到 PHP 5.3.x


SAPI 模块的改变

  • 一个新增的名为 litespeed 的 SAPI 模块可用.
  • CGI SAPI 中的 FastCGI 支持总是打开并且无法关闭. 更多信息请查看 sapi/cgi/CHANGES.
  • 一个新的 CGI SAPI 选项 -T 可以被用来衡量一个脚本的重复执行时间.
  • CGI/FastCGI 现在支持 .htaccess 样式的 用户自定义 php.ini 文件.
  • dl() 函数默认被关闭, 并且现在只在 CLI, CGI, 和内嵌的 SAPI 环境下可用.
Windows 支持改变
PHP 5.3.x 中弃用的功能
从 PHP 5.2.x 移植到 PHP 5.3.x


PHP 5.3.x 中弃用的功能

PHP 5.3.0 新增了两个错误等级: E_DEPRECATED 和 E_USER_DEPRECATED. 错误等级 E_DEPRECATED 被用来说明一个函数或者功能已经被弃用. E_USER_DEPRECATED 等级目的在于表明用户代码中的弃用功能, 类似于 E_USER_ERROR 和 E_USER_WARNING 等级.

下面是被弃用的 INI 指令列表. 使用下面任何指令都将导致 E_DEPRECATED 错误.

  • define_syslog_variables
  • register_globals
  • register_long_arrays
  • safe_mode
  • magic_quotes_gpc
  • magic_quotes_runtime
  • magic_quotes_sybase
  • 弃用 INI 文件中以 '#' 开头的注释.

弃用函数:

  • call_user_method() (使用 call_user_func() 替代)
  • call_user_method_array() (使用 call_user_func_array() 替代)
  • define_syslog_variables()
  • dl()
  • ereg() (使用 preg_match() 替代)
  • ereg_replace() (使用 preg_replace() 替代)
  • eregi() (使用 preg_match() 配合 'i' 修正符替代)
  • eregi_replace() (使用 preg_replace() 配合 'i' 修正符替代)
  • set_magic_quotes_runtime() 以及它的别名函数 magic_quotes_runtime()
  • session_register() (使用 $_SESSION 超全部变量替代)
  • session_unregister() (使用 $_SESSION 超全部变量替代)
  • session_is_registered() (使用 $_SESSION 超全部变量替代)
  • set_socket_blocking() (使用 stream_set_blocking() 替代)
  • split() (使用 preg_split() 替代)
  • spliti() (使用 preg_split() 配合 'i' 修正符替代)
  • sql_regcase()
  • mysql_db_query() (使用 mysql_select_db() 和 mysql_query() 替代)
  • mysql_escape_string() (使用 mysql_real_escape_string() 替代)
  • 废弃以字符串传递区域设置名称. 使用 LC_* 系列常量替代.
  • mktime() 的 is_dst 参数. 使用新的时区处理函数替代.

弃用的功能:

  • 弃用通过引用分配 new 的返回值.
  • 调用时传递引用被弃用.
SAPI 模块的改变
PHP 5.3.x 保留的功能
从 PHP 5.2.x 移植到 PHP 5.3.x


PHP 5.3.x 保留的功能

is_a() 函数被保留. 它不再抛出 E_STRICT 错误.

PHP 5.3.x 中弃用的功能
新参数
从 PHP 5.2.x 移植到 PHP 5.3.x


新参数

在 PHP 5.3 中一些函数新增了参数和选项:

PHP 核心:

  • clearstatcache() - 新增 clear_realpath_cache 和 filename 参数.
  • copy() - 新增流环境参数 context.
  • fgetcsv() - 新增 escape 参数.
  • ini_get_all() - 新增 details 参数.
  • nl2br() - 新增 is_xhtml 参数.
  • parse_ini_file() - 新增 scanner_mode 参数.
  • round() - 新增 mode 参数.
  • stream_context_create() - 新增 params 参数.
  • strstr() 和 stristr() - 新增 before_needle 参数.

json:

  • json_encode() - 新增 options 参数.
  • json_decode() - 新增 depth 参数.

流(Streams):

  • stream_select(),
stream_set_blocking(),
stream_set_timeout(), 和
stream_set_write_buffer() 使用用户空间流包裹器.

sybase_ct:

  • sybase_connect() - 新增 new 参数.

PHP 5.3.0 中的新方法参数:

PHP 核心:

  • Exception::__construct() - 新增 previous 参数.
PHP 5.3.x 保留的功能
新函数
从 PHP 5.2.x 移植到 PHP 5.3.x


新函数

PHP 5.3 引入了一些新函数:

PHP 核心:

  • array_replace() - 将一个数组的元素用另外一个数组的元素进行替换.
  • array_replace_recursive() - 将一个数组的元素用一组传递进来的数组进行递归替换.
  • class_alias() - 为用户定义的类创建一个别名.
  • forward_static_call() - 从一个方法环境调用一个用户函数.
  • forward_static_call_array() - 从一个方法环境调用一个用户函数, 使用数组中的元素作为参数.
  • gc_collect_cycles() - 强制收集任何存在的废物循环.
  • gc_disable() - 撤销循环引用收集器.
  • gc_enable() - 激活循环引用收集器.
  • gc_enabled() - 返回循环引用收集器的状态.
  • get_called_class() - 返回调用的静态方法所在的类的名称.
  • gethostname() - 返回本地机器的当前主机名.
  • header_remove() - 在使用 header() 函数之前移除 HTTP Header.
  • lcfirst() - 蒋某一字符串第一个字符转化为小写.
  • parse_ini_string() - 解析配置字符串.
  • quoted_printable_encode() - 转换 8 位的字符串为引用的可打印字符串.
  • str_getcsv() - 将 CSV 字符串解析为数组.
  • stream_context_set_default() - 设置默认的流环境.
  • stream_supports_lock() - 如果流支持锁定则返回 TRUE.
  • stream_context_get_params() - 获取一个流环境的参数.
  • streamWrapper::stream_cast() - 获取底层的流资源.
  • streamWrapper::stream_set_option() - 更改流选项

Date/Time:

  • date_add() - 向 DateTime 对象增加一定数量的天, 月, 年, 小时, 分钟和秒数.
  • date_create_from_format() - 根据给定的格式, 返回一个 DateTime 对象.
  • date_diff() - 返回两个 DateTime 对象的不同之处.
  • date_get_last_errors() - 返回最后的日期/时间操作中产生的警告和错误.
  • date_parse_from_format() - 获取一个日期的信息.
  • date_sub() - 从 DateTime 对象减去一定数量的天, 月, 年, 时和秒数.
  • timezone_version_get() - 返回时区数据库的版本.

GMP:

  • gmp_testbit() - 测试一个比特是否被设置.

Hash:

  • hash_copy() - 复制哈希环境.

IMAP:

  • imap_gc() - 清除 IMAP 缓存.
  • imap_utf8_to_mutf7() - 编码 UTF-8 字符串为改进的 UTF-7 编码.
  • imap_mutf7_to_utf8() - 解码改进的 UTF-7 字符串为 UTF-8 编码.

JSON:

  • json_last_error() - 返回最后发生的 JSON 错误.

MySQL 改进:

  • mysqli_fetch_all() - 以关联数组、索引数组或者二者都有获取全部结果行.
  • mysqli_get_connection_stats() - 返回客户端连接的统计资料.
  • mysqli_poll() - 轮询连接.
  • mysqli_reap_async_query() - 从异步查询中获取结果.

OpenSSL:

  • openssl_random_pseudo_bytes() - 返回一个以伪随机字节填充的指定长度的字符串.

PCNTL:

  • pcntl_signal_dispatch() - 为挂起信号调用信号处理器.
  • pcntl_sigprocmask() - 设置和获取阻塞信号.
  • pcntl_sigtimedwait() - 等待信号, 但是有超时时间.
  • pcntl_sigwaitinfo() - 等待信号.

PCRE:

  • preg_filter() - 执行正则查找和替换, 仅仅返回匹配正则的结果.

信号:

  • msg_queue_exists() - 检查消息队列是否存在.
  • shm_has_var() - 检查在一个共享内存段中, 是否存在指定的键(key).

以下函数被原生支持, 因此它们在所有运行 PHP 的操作系统上均可用.

  • acosh()
  • asinh()
  • atanh()
  • expm1()
  • log1p()
新参数
新的流包装器
从 PHP 5.2.x 移植到 PHP 5.3.x


新的流包装器

5.3.0 中新增了以下流包装器:

  • glob://
  • phar://
新函数
新的流过滤器
从 PHP 5.2.x 移植到 PHP 5.3.x


新的流过滤器

5.3.0 新增了以下流过滤器:

  • dechunk (反转 HTTP 块编码)
  • bz2.decompress 过滤器支持连续操作.
新的流包装器
新增的类常量
从 PHP 5.2.x 移植到 PHP 5.3.x


新增的类常量

5.3.0 中新增了若干类常量:

PDO_FIREBIRD:

  • PDO::FB_ATTR_DATE_FORMAT - 为日期设置格式.
  • PDO::FB_ATTR_TIME_FORMAT - 为时间设置格式.
  • PDO::FB_ATTR_TIMESTAMP_FORMAT - 为时间戳设置格式.
新的流过滤器
新增的方法
从 PHP 5.2.x 移植到 PHP 5.3.x


新增的方法

5.3.0 中新增了若干方法:

日期/时间:

  • DateTime::add() - 向一个 DateTime 对象加上若干天, 月, 年, 小时, 分钟和秒.
  • DateTime::createFromFormat() - 根据给定的格式, 返回一个新的格式化的DateTime对象.
  • DateTime::diff() - 返回两个 DateTime 对象的不同之处.
  • DateTime::getLastErrors() - 返回最后的日期/时间处理中的警告和错误.
  • DateTime::sub() - 从 DateTime 对象中减去若干天, 月, 年, 小时, 分钟和秒.

异常(Exception):

  • Exception::getPrevious() - 获取前一个异常.

DOM:

  • DOMNode::getLineNo() - 返回解析节点的行数.

PDO_FIREBIRD:

  • PDO::setAttribute() - 设置属性.

反射(Reflection):

  • ReflectionClass::getNamespaceName() - 返回类定义所在命名空间的的名称.
  • ReflectionClass::getShortName() - 返回类的短名称(没有命名空间部分).
  • ReflectionClass::inNamespace() - 返回类是否定义于一个命名空间.
  • ReflectionFunction::getNamespaceName() - 返回函数定义所在命名空间的名字.
  • ReflectionFunction::getShortName() - 返回函数的段名称(没有命名空间部分).
  • ReflectionFunction::inNamespace() - 返回函数在一个命名空间中是否被定义.
  • ReflectionProperty::setAccessible() - 设置是否可以请求非 public 属性.

SPL:

  • SplObjectStorage::addAll() - 从另一个 SplObjectStorage 对象中新增全部元素.
  • SplObjectStorage::removeAll() - 从另一个 SplObjectStorage 对象中移除全部元素.

XSL:

  • XSLTProcessor::setProfiling() - 设置概况输出文件.
新增的类常量
新的扩展
从 PHP 5.2.x 移植到 PHP 5.3.x


新的扩展

PHP 5.3.0 新增以下扩展(默认):

  • Enchant - 各种拼写库的抽象层
  • 文件信息 - 已经被移除的 Mimetype 扩展的一个改进的、更加可靠的替代, 以 BC 为特色.
  • INTL - 国际化扩展. INTL 是 » ICU 库的一个包装器.
  • Phar - PHP 档案文件的实现.
  • SQLite3 - 支持 SQLite version 3 数据库.

mysqlnd 是随 PHP 发布的新核心库. 它是 PHP 独有的 libmysql 的替代. 如果系统上未发现 libmysql, mysqlnd 将被用来构建 mysql, mysqli 和 PDO_MySQL 扩展. 甚至 libmysql 存在的情况下, 它也可以被用来代替 libmysql. 由于性能上的原因, 推荐在全部的 PHP 安装中都使用 mysqlnd.

新增的方法
被移除的扩展
从 PHP 5.2.x 移植到 PHP 5.3.x


被移除的扩展

这些扩展已经被移动至 PECL 并且不再是 PHP 发布的一部分. 这些扩展的 PECL 包版本将根据用户需求创建.

  • dbase - 不再被保持
  • fbsql - 不再被保持
  • fdf - 被保持
  • ming - 被保持
  • msql - 不再被保持
  • ncurses - 被保存
  • sybase - 停用; 使用 sybase_ct 扩展代替.
  • mhash - 停用; 使用 hash 扩展代替. hash 全兼容 mhash; 全部使用旧函数的应用程序仍将可以工作.
新的扩展
Other changes to extensions
从 PHP 5.2.x 移植到 PHP 5.3.x


Other changes to extensions

以下扩展不再能在编译配置时进行关闭:

  • PCRE
  • 反射
  • SPL

扩展行为和新功能的改变:

  • 日期和时间 - 获取时区时不再使用 TZ 环境变量.
  • cURL - cURL 支持 SSH
  • Network - dns_check_record() 现在返回一个额外的 "entries" 索引, 包含 TXT 元素.
  • Hash - SHA-224 和 salsa 哈希算法获得支持.
  • mbstring - 现在支持 CP850 编码.
  • OCI8 - 在持久连接上调用 oci_close() 或者在作用域外引用持久连接, 将回滚任何尚未提交的事务. 为了避免意外的行为, 根据需要明确发布和回滚事务. 使用 INI 指令oci8.old_oci_close_semantics可以打开旧的行为. 数据库驻留连接池(DRCP)和快速应用通知(FAN)获得支持. Oracle 外部认证获得支持(除了 Windows 平台). oci_bind_by_name() 函数现在支持 SQLT_AFC (又称 CHAR 数据类型).
  • OpenSSL - 支持 OpenSSL 摘要和加密函数. 访问 DSA, RSA 和 DH 键的内部值变为可能.
  • Session - 当应用了 open_basedir 限制, Session 不再将 Session 文件存储在 "/tmp" 目录中, 除非 "/tmp" 目录被明确添加到许可路径列表.
  • SOAP 支持发送用户提供的 HTTP 头.
  • MySQLi 通过在主机名前面添加 "p:" 来支持持久连接.
  • 图片处理和 GD gd_info() 函数返回的 "JPG Support" 索引变更为 "JPEG Support".
被移除的扩展
新类
从 PHP 5.2.x 移植到 PHP 5.3.x


新类

PHP 5.3.0 新增了以下类:

日期/时间:

  • DateInterval
  • DatePeriod

Phar:

  • Phar
  • PharData
  • PharException
  • PharFileInfo

SPL:

  • FilesystemIterator
  • GlobIterator
  • MultipleIterator
  • RecursiveTreeIterator
  • SplDoublyLinkedList
  • SplFixedArray
  • SplHeap
  • SplMaxHeap
  • SplMinHeap
  • SplPriorityQueue
  • SplQueue
  • SplStack
Other changes to extensions
新的全局常量
从 PHP 5.2.x 移植到 PHP 5.3.x


新的全局常量

PHP 核心:

  • __DIR__
  • __NAMESPACE__
  • E_DEPRECATED
  • E_USER_DEPRECATED
  • INI_SCANNER_NORMAL
  • INI_SCANNER_RAW
  • PHP_MAXPATHLEN
  • PHP_WINDOWS_NT_DOMAIN_CONTROLLER
  • PHP_WINDOWS_NT_SERVER
  • PHP_WINDOWS_NT_WORKSTATION
  • PHP_WINDOWS_VERSION_BUILD
  • PHP_WINDOWS_VERSION_MAJOR
  • PHP_WINDOWS_VERSION_MINOR
  • PHP_WINDOWS_VERSION_PLATFORM
  • PHP_WINDOWS_VERSION_PRODUCTTYPE
  • PHP_WINDOWS_VERSION_SP_MAJOR
  • PHP_WINDOWS_VERSION_SP_MINOR
  • PHP_WINDOWS_VERSION_SUITEMASK

cURL:

  • CURLOPT_PROGRESSFUNCTION

GD:

  • IMG_FILTER_PIXELATE

JSON:

  • JSON_ERROR_CTRL_CHAR
  • JSON_ERROR_DEPTH
  • JSON_ERROR_NONE
  • JSON_ERROR_STATE_MISMATCH
  • JSON_ERROR_SYNTAX
  • JSON_FORCE_OBJECT
  • JSON_HEX_TAG
  • JSON_HEX_AMP
  • JSON_HEX_APOS
  • JSON_HEX_QUOT

LDAP:

  • LDAP_OPT_NETWORK_TIMEOUT

libxml:

  • LIBXML_LOADED_VERSION

PCRE:

  • PREG_BAD_UTF8_OFFSET_ERROR

PCNTL:

  • BUS_ADRALN
  • BUS_ADRERR
  • BUS_OBJERR
  • CLD_CONTIUNED
  • CLD_DUMPED
  • CLD_EXITED
  • CLD_KILLED
  • CLD_STOPPED
  • CLD_TRAPPED
  • FPE_FLTDIV
  • FPE_FLTINV
  • FPE_FLTOVF
  • FPE_FLTRES
  • FPE_FLTSUB
  • FPE_FLTUND
  • FPE_INTDIV
  • FPE_INTOVF
  • ILL_BADSTK
  • ILL_COPROC
  • ILL_ILLADR
  • ILL_ILLOPC
  • ILL_ILLOPN
  • ILL_ILLTRP
  • ILL_PRVOPC
  • ILL_PRVREG
  • POLL_ERR
  • POLL_HUP
  • POLL_IN
  • POLL_MSG
  • POLL_OUT
  • POLL_PRI
  • SEGV_ACCERR
  • SEGV_MAPERR
  • SI_ASYNCIO
  • SI_KERNEL
  • SI_MESGQ
  • SI_NOINFO
  • SI_QUEUE
  • SI_SIGIO
  • SI_TIMER
  • SI_TKILL
  • SI_USER
  • SIG_BLOCK
  • SIG_SETMASK
  • SIG_UNBLOCK
  • TRAP_BRKPT
  • TRAP_TRACE
新类
INI 文件处理改变
从 PHP 5.2.x 移植到 PHP 5.3.x


INI 文件处理改变

PHP 5.3.0 显著改进了 INI 文件的性能和解析, 并且新增了若干语法功能.

  • 标准的 php.ini 文件被重新组织和命名. php.ini-development 包含在开发环境中推荐使用的设置. php.ini-production 包含在生产环境中推荐使用的设置.
  • 支持两个特殊章节: [PATH=/opt/httpd/www.example.com/] 和 [HOST=www.example.com]. 这两个章节里的指令不能被用户定义的 INI 文件或者运行时覆盖. 关于这些章节的更多信息, 可以这里找到.
  • 移除了 zend_extension_debug and zend_extension_ts. 使用 zend_extension 指令来加载全部 Zend 扩展.
  • 移除了 zend.ze1_compatibility_mode. 如果该 INI 指令被设置为 On, 启动时将抛出 E_ERROR 级别错误.
  • 在 "extension" 指令中可以使用全路径来加载模块.
  • "ini变量" 现在几乎在 php.ini 文件的任何地方都可以使用.
  • 可以在运行时收紧 open_basedir 限制条件.
  • 可以在 INI 选项数组中使用字母数字或者变量.
  • get_cfg_var() 现在可以返回 "数组(array)" INI 选项.
  • 添加了一个新指令 mail.add_x_header.
  • user_ini.filename 是新增的.
  • user_ini.cache_ttl 也是新增的.
  • exit_on_timeout 也是新增的.
  • open_basedir 现在是 PHP_INI_ALL 的.

新增以下指令:

  • 新的 .htaccess-style 用户 INI 文件机制中的 user_ini.filename 和 user_ini.cache_ttl.
  • 新增 mbstring.http_output_conv_mimetype. 该指令指定了 mb_output_handler() 激活内容类型的正则表达式.
  • 新增 request_order. 允许控制哪些外部变量在 $_REQUEST 中可用.

以下 ini 指令默认值更新:

  • session.use_only_cookies 默认被设置为 "1"(打开).
  • oci8.default_prefetch 变更为从 "10" 到 "100".
新的全局常量
其他改变
从 PHP 5.2.x 移植到 PHP 5.3.x


其他改变

  • SplFileInfo::getpathinfo() 现在返回 path name 信息.
  • SplObjectStorage 现在支持 ArrayAccess. 现在可以在 SplObjectStorage 中存储关联信息对象.
  • 在 GD 扩展中, 通过 imagefilter() 函数, 可以提供像素支持.
  • var_dump() 的输出现在包含对象的私有属性.
  • 如果会话启动失败, session_start() 现在将返回 FALSE.
  • property_exists() 可以检查一个属性的存在性, 而不管它的访问控制类型(类似于 method_exists()).
  • include_path 现在可以使用Stream 包装器.
  • array_reduce() 函数的 initial 参数现在可以是任何类型.
  • 如果没有明确传递上下文环境, 目录函数 opendir(), scandir(), 和 dir() 将使用默认的流上下文环境.
  • crypt() 函数支持 Blowfish 和 DES 算法, 并且 crypt() 的特点是非常便捷. PHP 有它自己内部的算法实现, 不管是否找到 crypt 或 crypt_r.
  • 在全部平台上, getopt() 开始接受"长选项". 可选值和作为短选项分隔符的 = 被支持.
  • fopen() 新增了一个模式选项(n), 它传递 O_NONBLOCK 常量给底层的 open() 系统调用. 注意, Windows 上该模式尚未得到支持.
  • getimagesize() 现在支持 icon 文件 (.ico).
  • mhash 扩展已经移动至 PECL, 但如果 PHP 使用 --with-mhash 选项参数进行编译, Hash 扩展也将提供 mhash 支持. 注意, 不管是否开启 mhash 算法, Hash 扩展都无需 mhash 库可用.
INI 文件处理改变
Migrating from PHP 5.1.x to PHP 5.2.x
从 PHP 5.2.x 移植到 PHP 5.3.x


Migrating from PHP 5.1.x to PHP 5.2.x

Table of Contents

  • What has changed in PHP 5.2.x
  • Backward Incompatible Changes
  • New Error Messages
  • Changes in PHP datetime support
  • New Parameters
  • New Functions
  • New Methods
  • Removed Extensions
  • New Extensions
  • New Classes
  • New Global Constants
  • New Class Constants
  • New INI Configuration Directives
  • Error Reporting
  • Other Enhancements

参见 PHP 版本迁移指南 5.0.x, 5.1.x, 5.3.x, 5.4.x, 5.5.x and 5.6.x.

其他改变
What has changed in PHP 5.2.x
附录


What has changed in PHP 5.2.x

Most improvements in PHP 5.2.x have no impact on existing code. There are a few incompatibilities and new error messages that should be considered, and code should be tested before switching PHP versions in production environments.

If the system is being upgraded from PHP 5.0.x, the manual section titled Upgrade Notes for PHP 5.1.x should also be read.

Similarly, if the system is being upgraded from PHP 4, the manual section titled Migrating from PHP 4 to PHP 5 should be read as well.

Migrating from PHP 5.1.x to PHP 5.2.x
Backward Incompatible Changes
Migrating from PHP 5.1.x to PHP 5.2.x


Backward Incompatible Changes

Although most existing PHP 5 code should work without changes, you should pay attention to the following backward incompatible changes:

  • getrusage() returns NULL when passed incompatible arguments as of PHP 5.2.1.
  • ZipArchive::setCommentName() returns TRUE on success as of PHP 5.2.1.
  • ZipArchive::setCommentIndex() returns TRUE on success as of PHP 5.2.1.
  • SplFileObject::getFilename() returns the filename, not relative/path/to/file, as of PHP 5.2.1.
  • Changed priority of PHPRC environment variable on Win32 The PHPRC environment variable now takes priority over the path stored in the Windows registry.
  • CLI SAPI no longer checks cwd for php.ini or the php-cli.ini file In PHP 5.1.x an undocumented feature was added that made the CLI binary check the current working directory for a PHP configuration file, potentially leading to unpredictable behavior if an unexpected configuration file were read. This functionality was removed in 5.2.0, and PHP will no longer search CWD for the presence of php.ini or php-cli.ini files. See also the command line section of the manual.
  • Added a warning when performing modulus 0 operations In earlier versions of PHP, performing integer % 0 did not emit any warning messages, instead returning an unexpected return value of FALSE. As of PHP 5.2.0, this operation will emit an E_WARNING, as is the case in all other instances where division by zero is performed.
    <?php
    print 10 % 0;
    /* Warning:  Division by zero in filename on line n */
    ?>
  • Changed __toString() to be called wherever applicable. The magic method __toString() will now be called in a string context, that is, anywhere an object is used as a string. The fallback of returning a string that contains the object identifier was dropped in PHP 5.2.0. It became problematic because an object identifier cannot be considered unique. This change will mean that your application is flawed if you have relied on the object identifier as a return value. An attempt to use that value as a string will now result in a catchable fatal error.
    <?php
    class foo {}
    $foo = new foo;
    print     $foo;
    /* Catchable fatal error:  Object of class foo could
       not be converted to string in filename on line n */
    ?>
    Even with __toString(), objects cannot be used as array indices or keys. We may add built-in hash support for this at a later date, but as of PHP 5.2.x you will need to either provide your own hashing or use the new SPL function spl_object_hash(). Exceptions can not be thrown from __toString() methods.
    <?php
    class foo {
        public function     __toString() {
            throw new     Exception;
        }
    }

    try {
        print new     foo;
            /* Fatal error:  Method foo::__toString() must
           not throw an exception in filename on line n */
    } catch(Exception $e) {}
    ?>
  • Dropped abstract static class functions. Due to an oversight, PHP 5.0.x and 5.1.x allowed abstract static functions in classes. As of PHP 5.2.x, only interfaces can have them.
    <?php
    abstract class foo {
        abstract static function     bar();
            /* Strict Standards:  Static function foo::bar()
           should not be abstract in filename on line n */
    }
    ?>
  • Oracle extension requires at least Oracle 10 on Windows.
  • Added RFC2397 (data: stream) support. The introduction of the 'data' URL scheme has the potential to lead to a change of behavior under Windows. If you are working with a NTFS file system and making use of meta streams in your application, and if you just happen to be using a file with the name 'data:' that is accessed without any path information - it won't work any more. The fix is to use the 'file:' protocol when accessing it. See also » RFC 2397
    <?php
    /* when allow_url_include is OFF (default) */
    include "data:;base64,PD9waHAgcGhwaW5mbygpOz8+";
    /* Warning:  include(): URL file-access is disabled
       in the server configuration in filename on line n */
    ?>
  • Regression in glob() patterns In version 5.2.4 a security fix caused a regression for patterns of the form "/foo/*/bar/*". Since version 5.2.5 instead of raising a warning the glob() function will return FALSE when openbase_dir restrictions are violated.
What has changed in PHP 5.2.x
New Error Messages
Migrating from PHP 5.1.x to PHP 5.2.x


New Error Messages

Below are the new error messages that have not been discussed elsewhere in this document.

Example #1 In PHP Core

<?php
echo " ";
session_regenerate_id();
/*  Warning:  session_regenerate_id(): Cannot regenerate
    session id - headers already sent in filename on line n */

str_word_count("string", 4);
/* Warning:  str_word_count(): Invalid format value 4
   in filename on line n */

strripos("foo", "f", 4);
/* Notice:  strripos(): Offset is greater than the
   length of haystack string in filename on line n */

strrpos("foo", "f", 4);
/* Notice:  strrpos(): Offset is greater than the
   length of haystack string in filename on line n */

/* As of PHP 5.2.1, when allow_url_include is OFF (default) */
include "php://input";
/* Warning:  include(): URL file-access is disabled
   in the server configuration in filename on line n */
?>

Example #2 Object Oriented Code in PHP Core

<?php
interface foo {
}
class bar implements foo, foo {
}
/* Fatal error: Class bar cannot implement previously
   implemented interface foo in filename on line n */

class foo {
    public $bar;
    function __get($var)
    {
        return $this->bar;
    }
}

$foo = new foo;
$bar =& $foo->prop;
/* Notice: Indirect modification of overloaded property
   foo::$prop has no effect in filename on line n */

class foo implements iterator {
    public function current() {
    }
    public function next() {
    }
    public function key() {
    }
    public function valid() {
    }
    public function rewind() {
    }
}

$foo = new foo();
foreach($foo as &$ref) {}
/* Fatal error: An iterator cannot be used with foreach
   by reference in filename on line n */

class foo {
    private function __construct() {
    }
}
class bar extends foo {
    public function __construct() {
        parent::__construct();
        /* Fatal error:  Cannot call private
           foo::__construct() in filename on line n */
    }
}
new bar;

stream_filter_register("", "class");
/* Warning:  stream_filter_register(): Filter name
   cannot be empty in filename on line n */

stream_filter_register("filter", "");
/* Warning:  stream_filter_register(): Class name
   cannot be empty in filename on line n */
?>

Example #3 In the bzip2 Extension

<?php
bzopen("", "w");
/* Warning:  bzopen(): filename cannot be empty
   in filename on line n */

bzopen("foo", "a");
/* Warning:  bzopen(): 'a' is not a valid mode for
   bzopen(). Only 'w' and 'r' are supported in
   filename on line n */

$fp = fopen("foo", "w");
bzopen($fp, "r");
/* Warning:  bzopen(): cannot read from a stream
   opened in write only mode in filename on line n */
?>

Example #4 In the datetime Extension

<?php
strtotime("today", "now");
/* Warning:  strtotime() expects parameter 2 to be
   long, string given in filename on line n */

/* As of PHP 5.2.1 */
new DateTime(new stdclass);
/* Fatal error: Uncaught exception 'Exception' with
   message 'DateTime::__construct() expects parameter
   1 to be string, object given' in filename:n */
?>

Example #5 In the dBase Extension

<?php
dbase_open("foo", -1);
/* Warning: Invalid access mode -1 in filename on line n */

/* As of PHP 5.2.1 */
dbase_open("foo", null);
/* Warning: The filename cannot be empty in filename on line n */
?>

Example #6 In the mcrypt Extension

<?php
$key = "this is a secret key";
$td = mcrypt_module_open('tripledes', '', 'ecb', '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td),
                        MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
$encrypted_data = mcrypt_generic($td, "");
/* Warning: mcrypt_generic(): An empty string was
   passed in filename on line n */
?>

Example #7 In the oci8 Extension

<?php
oci_connect("user", "pass", "db", "bogus_charset");
/* Warning: Invalid character set name:
   bogus_charset in filename on line n */

$oci = oci_connect("user", "pass", "db");
oci_password_change($oci, "", "old", "new");
/* Warning: username cannot be empty in filename
   on line n */

oci_password_change($oci, "user", "", "new");
/* Warning: old password cannot be empty in filename
   on line n */

oci_password_change($oci, "user", "old", "");
/* Warning: new password cannot be empty in filename
   on line n */
?>

Example #8 In the SPL Extension

<?php
$obj = new SplFileObject(__FILE__);
$obj->fgetcsv("foo");
/* Warning:  SplFileObject::fgetcsv(): delimiter must
   be a character in filename on line n */

$obj->fgetcsv(",", "foo");
/* Warning:  SplFileObject::fgetcsv(): enclosure must
   be a character in filename on line n */
?>

Example #9 In the Semaphore (sysvmsg) extension

<?php
/* Warning:  maximum size of the message has to be
   greater then zero in filename on line n */
?>

Example #10 A 5.2.1+ Zip Example

<?php
$obj = new ZipArchive();
$obj->open('archive.zip');
$obj->setCommentName('', 'comment');
/* Notice:  ZipArchive::setCommentName(): Empty string
   as entry name in filename on line n */

/* As of PHP 5.2.1 */
$obj->getCommentName('');
/* Notice:  ZipArchive::getCommentName(): Empty string
   as entry name in filename on line n */
?>

Backward Incompatible Changes
Changes in PHP datetime support
Migrating from PHP 5.1.x to PHP 5.2.x


Changes in PHP datetime support

Since PHP 5.1.0, there has been an extension named date in the PHP core. This is the new implementation of PHP's datetime support. Although it will attempt to guess your system's timezone setting, you should set the timezone manually. You can do this in any of three ways:

  • in your php.ini using the date.timezone INI directive
  • on your system using the TZ environmental variable
  • from your script using the convenience function date_default_timezone_set()

All supported timezones are listed in the PHP Manual.

With the advent of PHP 5.2.x, there are object representations of the date and timezone, named DateTime and DateTimeZone respectively. The methods map to existing procedural date functions.

New Error Messages
New Parameters
Migrating from PHP 5.1.x to PHP 5.2.x


New Parameters

Some functions were given new, optional, parameters in PHP 5.2.x:

PHP Core:

  • htmlentities() - added double_encode in PHP 5.2.3.
  • htmlspecialchars() - added double_encode in PHP 5.2.3.
  • base64_decode() - added strict
  • setcookie() - added httponly
  • setrawcookie() - added httponly
  • session_set_cookie_params() - added httponly
  • memory_get_usage() - added real_usage
  • get_loaded_extensions() - added zend_extensions in PHP 5.2.4

curl:

  • curl_multi_info_read() - added msgs_in_queue

datetime

  • date() - added "u" (milliseconds) format character in PHP 5.2.2

imap:

  • imap_open() - added n_retries
  • imap_reopen() - added n_retries

mbstring:

  • mb_strrpos() - added offset
    Warning

    The offset parameter was put in the position the encoding parameter used to be. Backward compatibility has been provided by allowing encoding to be specified as the third parameter. Using this backward compatibility mode is not recommended because it will be removed in a future release of PHP.

ming:

  • SWFMovie::streamMP3() - added skip in PHP 5.2.1

openssl:

  • openssl_verify() - added signature_algo

pgsql:

  • pg_escape_bytea() - added connection
  • pg_escape_string() - added connection

simplexml:

  • SimpleXMLElement::__construct() - added is_prefix
  • SimpleXMLElement::attributes() - added is_prefix
  • SimpleXMLElement::children() - added is_prefix
  • simplexml_load_file() - added is_prefix
  • simplexml_load_string() - added is_prefix

spl:

  • array iterator_to_array(Traversable it [, bool use_keys = true]) - added use_keys in PHP 5.2.1

xmlreader:

  • XMLReader::open() - added encoding and options
  • XMLReader::XML() - added encoding and options

XMLWriter:

  • xmlwriter_write_element() - the content became optional in PHP 5.2.3
  • xmlwriter_write_element_ns() - the content became optional in PHP 5.2.3
Changes in PHP datetime support
New Functions
Migrating from PHP 5.1.x to PHP 5.2.x


New Functions

PHP 5.2.x introduced some new functions:

PHP Core:

  • array_fill_keys() - Create an array using the elements of the first parameter as keys, each initialized to val
  • error_get_last() - Get the last occurred error as associative array. Returns NULL if there hasn't been an error yet
  • image_type_to_extension() - Get file extension for image-type returned by getimagesize(), exif_read_data(), exif_thumbnail(), exif_imagetype()
  • memory_get_peak_usage() - Returns the peak allocated by PHP memory
  • sys_get_temp_dir() - Returns directory path used for temporary files. (Added in 5.2.1)
  • timezone_abbreviations_list() - Returns associative array containing DST, offset and the timezone name
  • timezone_identifiers_list() - Returns numerically indexed array with all timezone identifiers
  • timezone_name_from_abbr() - Returns the timezone name from abbreviation
  • stream_socket_shutdown() - Causes all or part of a full-duplex connection on the socket associated with stream to be shut down. As of PHP 5.2.1.

Image:

  • imagegrabscreen() - Grabs a screenshot of the whole screen. As of PHP 5.2.2.
  • imagegrabwindow() - Captures a window. As of PHP 5.2.2.

libXML:

  • libxml_disable_entity_loader() - Disable the ability to load external entities. As of PHP 5.2.11.

mbstring:

  • mb_stripos() - Finds position of first occurrence of a string within another, case insensitive
  • mb_stristr() - Finds first occurrence of a string within another, case insensitive
  • mb_strrchr() - Finds the last occurrence of a character in a string within another
  • mb_strrichr() - Finds the last occurrence of a character in a string within another, case insensitive
  • mb_strripos() - Finds position of last occurrence of a string within another, case insensitive
  • mb_strstr() - Finds first occurrence of a string within another

ming (As of PHP 5.2.1):

  • void ming_setSWFCompression(int num) - Sets output compression
  • void swfmovie::namedanchor(string name) - Creates anchor
  • void swfmovie::protect([string password]) - Protects

openssl:

  • openssl_csr_get_public_key() - Extracts public key from a CERT and prepares it for use
  • openssl_csr_get_subject() - Returns the subject of a CERT
  • openssl_pkey_get_details() - Returns an array with the key details (bits, pkey, type)

spl:

  • spl_object_hash() - Return hash id for given object
  • int iterator_apply(Traversable it, mixed function [, mixed params]) - Calls a function for every element in an iterator

pcre:

  • preg_last_error() - Returns the error code of the last regex execution

pgsql:

  • pg_field_table() - Returns the name of the table field belongs to, or table's oid if oid_only is TRUE

posix:

  • posix_initgroups() - Calculate the group access list for the user specified in name

gmp:

  • gmp_nextprime() - Finds next prime number

xmlwriter:

  • xmlwriter_full_end_element() - End current element - returns FALSE on error
  • xmlwriter_write_raw() - Write text - returns FALSE on error
  • xmlwriter_start_dtd_entity() - Create start DTD Entity - returns FALSE on error
  • xmlwriter_end_dtd_entity() - End current DTD Entity - returns FALSE on error
  • xmlwriter_write_dtd_entity() - Write full DTD Entity tag - returns FALSE on error
New Parameters
New Methods
Migrating from PHP 5.1.x to PHP 5.2.x


New Methods

New methods were introduced in 5.2.0:

dom:

  • DOMDocument::registerNodeClass() - Register extended class used to create base node type
  • DOMElement::setIDAttribute() - Declares the attribute specified by name to be of type ID
  • DOMElement::setIDAttributeNode() - Declares the attribute specified by node to be of type ID
  • DOMElement::setIDAttributeNS() - Declares the attribute specified by local name and namespace URI to be of type ID
  • DOMNode::C14N()([bool exclusive [, bool with_comments [, array xpath [, array ns_prefixes]]]]) - Canonicalize nodes to a string
  • DOMNode::C14NFile()(string uri [, bool exclusive [, bool with_comments [, array xpath [, array ns_prefixes]]]]) - Canonicalize nodes to a file
  • DOMNode::getNodePath()() - Gets an xpath for a node

soap:

  • SoapServer::setObject()(object obj) - Sets object which will handle SOAP requests

spl:

  • int ArrayObject::asort()(void) - Sort the entries by values
  • int ArrayObject::ksort()(void) - Sort the entries by key
  • int ArrayObject::natcasesort()(void) - Sort the entries by key using case insensitive "natural order" algorithm.
  • int ArrayObject::natsort()(void) - Sort the entries by values using "natural order" algorithm.
  • int ArrayObject::uasort()(callback cmp_function) - Sort the entries by values using a user defined function
  • int ArrayObject::uksort()(callback cmp_function) - Sort the entries by key using a user defined function.
  • ArrayIterator AppendIterator::getArrayIterator()() - Get access to inner ArrayIterator
  • int AppendIterator::getIteratorIndex()() - Get index of iterator
  • bool CachingIterator::getCache()() - Return the cache
  • int CachingIterator::getFlags()() - Return the internal flags
  • bool CachingIterator::offsetExists()(mixed index) - Returns TRUE if the requested index exists
  • string CachingIterator::offsetGet()(mixed index) - Return the internal cache if used
  • void CachingIterator::offsetSet()(mixed index, mixed newval) - Set given index in cache
  • void CachingIterator::offsetUnset()(mixed index) - Unset given index in cache
  • void CachingIterator::setFlags()() - Set the internal flags
  • array("delimiter" =>, "enclosure" =>) SplFileObject::getCsvControl()(void) - Get the delimiter and enclosure character used in fgetcsv()
  • void SplFileObject::setCsvControl()([string delimiter = ',' [, string enclosure = '"']]) - Set the delimiter and enclosure character used in fgetcsv()

Tidy

  • tidyNode tidyNode::getParent()() - Returns the parent node of the current node (Added in PHP 5.2.2)

XMLReader

  • boolean XMLReader::setSchema() - Use W3C XSD schema to validate the document as it is processed. Activation is only possible before the first XMLReader::read()

zip:

  • ZipArchive::addEmptyDir()() - Creates an empty directory in the archive
New Functions
Removed Extensions
Migrating from PHP 5.1.x to PHP 5.2.x


Removed Extensions

These extensions have been moved to PECL and are no longer part of the PHP distribution. The PECL package version of these extensions will be created according to user demand.

  • filePro
  • Hyperwave API
New Methods
New Extensions
Migrating from PHP 5.1.x to PHP 5.2.x


New Extensions

The following are new extensions added (by default) as of PHP 5.2.0:

  • Filter - validates and filters data, and is designed for use with insecure data such as user input. This extension is enabled by default; the default mode RAW does not impact input data in any way.
  • JSON - implements the JavaScript Object Notation (JSON) data interchange format. This extension is enabled by default.
  • Zip - enables you to transparently read or write ZIP compressed archives and the files inside them.
Removed Extensions
New Classes
Migrating from PHP 5.1.x to PHP 5.2.x


New Classes

The following classes were introduced in PHP 5.2.0:

  • DateTime
  • DateTimeZone
  • RegexIterator - extends FilterIterator; implements Iterator, Traversable, OuterIterator Constants:
    • RegexIterator::ALL_MATCHES
    • RegexIterator::GET_MATCH
    • RegexIterator::MATCH
    • RegexIterator::REPLACE
    • RegexIterator::SPLIT
    • RegexIterator::USE_KEY
    Properties:
    • public replacement
    Methods:
    • RegexIterator::__construct(Iterator it, string regex [, int mode [, int flags [, int preg_flags]]]) - Create an RegexIterator from another iterator and a regular expression
    • bool RegexIterator::accept() - Match (string)current() against regular expression
    • bool RegexIterator::getFlags() - Returns current operation flags
    • bool RegexIterator::getMode() - Returns current operation mode
    • bool RegexIterator::getPregFlags() - Returns current PREG flags (if in use or NULL)
    • bool RegexIterator::setFlags(int new_flags) - Set operation flags
    • bool RegexIterator::setMode(int new_mode) - Set new operation mode
    • bool RegexIterator::setPregFlags(int new_flags) - Set PREG flags
  • RecursiveRegexIterator Constants:
    • RecursiveRegexIterator::ALL_MATCHES
    • RecursiveRegexIterator::GET_MATCH
    • RecursiveRegexIterator::MATCH
    • RecursiveRegexIterator::REPLACE
    • RecursiveRegexIterator::SPLIT
    • RecursiveRegexIterator::USE_KEY
    Methods:
    • RecursiveRegexIterator::__construct(RecursiveIterator it, string regex [, int mode [, int flags [, int preg_flags]]]) - Create an RecursiveRegexIterator from another recursive iterator and a regular expression
    • RecursiveRegexIterator RecursiveRegexIterator::getChildren() - Return the inner iterator's children contained in a RecursiveRegexIterator
    • bool RecursiveRegexIterator::hasChildren() - Check whether the inner iterator's current element has children
New Extensions
New Global Constants
Migrating from PHP 5.1.x to PHP 5.2.x


New Global Constants

PHP Core:

  • M_EULER
  • M_LNPI
  • M_SQRT3
  • M_SQRTPI
  • PATHINFO_FILENAME
  • PREG_BACKTRACK_LIMIT_ERROR
  • PREG_BAD_UTF8_ERROR
  • PREG_INTERNAL_ERROR
  • PREG_NO_ERROR
  • PREG_RECURSION_LIMIT_ERROR
  • UPLOAD_ERR_EXTENSION
  • STREAM_SHUT_RD
  • STREAM_SHUT_WR
  • STREAM_SHUT_RDWR

curl:

  • CURLE_FILESIZE_EXCEEDED
  • CURLE_FTP_SSL_FAILED
  • CURLE_LDAP_INVALID_URL
  • CURLFTPAUTH_DEFAULT
  • CURLFTPAUTH_SSL
  • CURLFTPAUTH_TLS
  • CURLFTPSSL_ALL
  • CURLFTPSSL_CONTROL
  • CURLFTPSSL_NONE
  • CURLFTPSSL_TRY
  • CURLOPT_FTP_SSL
  • CURLOPT_FTPSSLAUTH
  • CURLOPT_TCP_NODELAY Added in PHP 5.2.1.
  • CURLOPT_TIMEOUT_MS Added in PHP 5.2.3
  • CURLOPT_CONNECTTIMEOUT_MS Added in PHP 5.2.3

GMP:

  • GMP_VERSION Added in PHP 5.2.2.

ming:

  • SWFTEXTFIELD_USEFONT
  • SWFTEXTFIELD_AUTOSIZE
  • SWF_SOUND_NOT_COMPRESSED
  • SWF_SOUND_ADPCM_COMPRESSED
  • SWF_SOUND_MP3_COMPRESSED
  • SWF_SOUND_NOT_COMPRESSED_LE
  • SWF_SOUND_NELLY_COMPRESSED
  • SWF_SOUND_5KHZ
  • SWF_SOUND_11KHZ
  • SWF_SOUND_22KHZ
  • SWF_SOUND_44KHZ
  • SWF_SOUND_8BITS
  • SWF_SOUND_16BITS
  • SWF_SOUND_MONO
  • SWF_SOUND_STEREO

openssl:

  • OPENSSL_VERSION_NUMBER
  • OPENSSL_VERSION_TEXT

snmp:

  • SNMP_OID_OUTPUT_FULL
  • SNMP_OID_OUTPUT_NUMERIC

Semaphore:

  • MSG_EAGAIN
  • MSG_ENOMSG
New Classes
New Class Constants
Migrating from PHP 5.1.x to PHP 5.2.x


New Class Constants

pdo:

  • PDO::ATTR_DEFAULT_FETCH_MODE
  • PDO::FETCH_PROPS_LATE
  • PDO::FETCH_KEY_PAIR Fetches a 2 column result set into an associated array. (Added in PHP 5.2.3)

spl:

  • CachingIterator::FULL_CACHE
  • CachingIterator::TOSTRING_USE_INNER
  • SplFileObject::READ_AHEAD
  • SplFileObject::READ_CSV
  • SplFileObject::SKIP_EMPTY
New Global Constants
New INI Configuration Directives
Migrating from PHP 5.1.x to PHP 5.2.x


New INI Configuration Directives

New php.ini directives introduced in PHP 5.2.0:

  • allow_url_include This useful option makes it possible to differentiate between standard file operations on remote files, and the inclusion of remote files. While the former is usually desirable, the latter can be a security risk if used naively. Starting with PHP 5.2.0, you can allow remote file operations while disallowing the inclusion of remote files in local scripts. In fact, this is the default configuration.
  • pcre.backtrack_limit PCRE's backtracking limit.
  • pcre.recursion_limit PCRE's recursion limit. Please note that if you set this value to a high number you may consume all the available process stack and eventually crash PHP (due to reaching the stack size limit imposed by the Operating System).
  • session.cookie_httponly Marks the cookie as accessible only through the HTTP protocol. This means that the cookie won't be accessible by scripting languages, such as JavaScript. This setting can effectively help to reduce identity theft through XSS attacks (although it is not supported by all browsers).

New directives in PHP 5.2.2:

  • max_input_nesting_level Limits how deep input variables can be nested, default is 64.
New Class Constants
Error Reporting
Migrating from PHP 5.1.x to PHP 5.2.x


Error Reporting

Some of the existing E_ERROR conditions have been converted to something that can be caught with a user-defined error handler. If an E_RECOVERABLE_ERROR is not handled, it will behave in the same way as E_ERROR behaves in all versions of PHP. Errors of this type are logged as Catchable fatal error.

This change means that the value of the E_ALL error_reporting constant is now 6143, where the previous value was 2047. Because PHP constants have no meaning outside of PHP, in some cases the integer value is used instead so these will need to be adjusted. So for example by setting the error_reporting mode from either the httpd.conf or the .htaccess files, the value has to be changed accordingly. The same applies when the numeric values are used rather than the constants in PHP scripts.

As a side-effect of a change made to prevent duplicate error messages when track_errors is On, it is now necessary to return FALSE from user defined error handlers in order to populate $php_errormsg. This provides a fine-grain control over the levels of messages stored.

New INI Configuration Directives
Other Enhancements
Migrating from PHP 5.1.x to PHP 5.2.x


Other Enhancements

  • Improved memory manager and increased default memory limit. The new memory manager allocates less memory and works faster than the previous incarnation. It allocates memory from the system in large blocks, and then manages the heap by itself. The memory_limit value in php.ini is checked, not for each emalloc() call (as before), but for actual blocks requested from the system. This means that memory_limit is far more accurate than it used to be, since the old memory manager didn't calculate all the memory overhead used by the malloc library. Thanks to this new-found accuracy memory usage may appear to have increased, although actually it has not. To accommodate this apparent increase, the default memory_limit setting was also increased - from 8 to 16 megabytes.
  • Added support for constructors in interfaces to force constructor signature checks in implementations. Starting with PHP 5.2.0, interfaces can have constructors. However, if you choose to declare a constructor in an interface, each class implementing that interface MUST include a constructor with a signature matching that of the base interface constructor. By 'signature' we mean the parameter and return type definitions, including any type hints and including whether the data is passed by reference or by value.
Error Reporting
Migrating from PHP 5.0.x to PHP 5.1.x
Migrating from PHP 5.1.x to PHP 5.2.x


Migrating from PHP 5.0.x to PHP 5.1.x

Table of Contents

  • Key PHP 5.1.x features
  • Changes in reference handling
  • Reading []
  • Integer values in function parameters
  • Class and object changes
  • Extensions
  • Date/time support
  • Changes in database support
  • Checking for E_STRICT

参见 PHP 版本迁移指南 5.0.x, 5.2.x, 5.3.x, 5.4.x, 5.5.x and 5.6.x.

Other Enhancements
Key PHP 5.1.x features
附录


Key PHP 5.1.x features

Some of the key features of PHP 5.1.x include:

  • A complete rewrite of date handling code, with improved timezone support.

  • Significant performance improvements compared to PHP 5.0.X.

  • PDO extension is now enabled by default.

  • Over 30 new functions in various extensions and built-in functionality.

  • Over 400 various bug fixes.

Migrating from PHP 5.0.x to PHP 5.1.x
Changes in reference handling
Migrating from PHP 5.0.x to PHP 5.1.x


Changes in reference handling

  • Overview

  • Code that worked under PHP 4.3.x, but now fails

  • Code that worked under PHP 4.3.x, but now throws an error

  • Code that failed under PHP 4.3.x, but now works

  • Code that should have worked under PHP 5.0.x

  • Warnings that came and went

Overview

From the PHP script writer's point of view, the change most likely to impact legacy code is in the way that references are handled in all PHP versions post-dating the PHP 4.4.0 release.

Until and including PHP 4.3, it was possible to send, assign or return variables by reference that should really be returned by value, such as a constant, a temporary value (e.g. the result of an expression), or the result of a function that had itself been returned by value, as here:

<?php
$foo = "123";

function return_value() {
    global $foo;
    return $foo;
}

$bar = &return_value();
?>

Although this code would usually work as expected under PHP 4.3, in the general case the result is undefined. The Zend Engine could not act correctly on these values as references. This bug could and did lead to various hard-to-reproduce memory corruption problems, particularly where the code base was large.

In PHP 4.4.0, PHP 5.0.4 and all subsequent PHP releases, the Engine was fixed to 'know' when the reference operation is being used on a value that should not be referenced. The actual value is now used in such cases, and a warning is emitted. The warning takes the form of an E_NOTICE in PHP 4.4.0 and up, and E_STRICT in PHP 5.0.4 and up.

Code that could potentially produce memory corruption can no longer do so. However, some legacy code might work differently as a result.

Code that worked under PHP 4.3, but now fails

<?php
function func(&$arraykey) {
    return $arraykey; // function returns by value!
}

$array = array('a', 'b', 'c');
foreach (array_keys($array) as $key) {
    $y = &func($array[$key]);
    $z[] =& $y;
}

var_dump($z);
?>
<

Running the above script under any version of PHP that pre-dates the reference fix would produce this output:

array(3) {
  [0]=>
  &string(1) "a"
  [1]=>
  &string(1) "b"
  [2]=>
  &string(1) "c"
}

Following the reference fix, the same code would result in:

array(3) {
  [0]=>
  &string(1) "c"
  [1]=>
  &string(1) "c"
  [2]=>
  &string(1) "c"
}

This is because, following the changes, func() assigns by value. The value of $y is re-assigned, and reference-binding is preserved from $z. Prior to the fix, the value was assigned by reference, leading $y to be re-bound on each assignment. The attempt to bind to a temporary value by reference was the cause of the memory corruption.

Such code can be made to work identically in both the pre-fix and the post-fix PHP versions. The signature of func() can be altered to return by reference, or the reference assignment can be removed from the result of func().

<?php
function func() {
    return 'function return';
}

$x = 'original value';
$y =& $x;
$y = &func();
echo $x;
?>

In PHP 4.3 $x would be 'original value', whereas after the changes it would be 'function return' - remember that where the function does not return by reference, the reference assignment is converted to a regular assignment. Again, this can be brought to a common base, either by forcing func() to return by reference or by eliminating the by-reference assignment.

Code that worked under PHP 4.3.x, but now throws an error

<?php
class Foo {

    function getThis() {
        return $this;
    }

    function destroyThis() {
        $baz =& $this->getThis();
    }
}

$bar = new Foo();
$bar->destroyThis();
var_dump($bar);
?>

In PHP 5.0.3, $bar evaluated to NULL instead of returning an object. That happened because getThis() returns by value, but the value here is assigned by reference. Although it now works in the expected way, this is actually invalid code which will throw an E_NOTICE under PHP 4.4 or an E_STRICT under PHP 5.0.4 and up.

Code that failed under PHP 4.3.x, but now works

<?php
function &f() {
    $x = "foo";
    var_dump($x);
    print "$x\n";
    return($a);
}

for ($i = 0; $i < 3; $i++) {
    $h = &f();
}
?>

In PHP 4.3 the third call to var_dump() produces NULL, due to the memory corruption caused by returning an uninitialized value by reference. This is valid code in PHP 5.0.4 and up, but threw errors in earlier releases of PHP.

<?php
$arr = array('a1' => array('alfa' => 'ok'));
$arr =& $arr['a1'];
echo '-'.$arr['alfa']."-\n";
?>

Until PHP 5.0.5, it wasn't possible to assign an array element by reference in this way. It now is.

Code that should have worked under PHP 5.0.x

There are a couple of instances of bugs reported under PHP 5.0 prior to the reference fixes which now 'work'. However, in both cases errors are thrown by PHP 5.1.x, because the code was invalid in the first place. Returning values by reference using self:: now works in the general case but throws an E_STRICT warning, and although your mileage may vary when assigning by reference to an overloaded object, you will still see an E_ERROR when you try it, even where the assignment itself appears to work.

Warnings that came and went

Nested calls to functions returning by reference are valid code under both PHP 4.3.x and PHP 5.1.x, but threw an unwarranted E_NOTICE or E_STRICT under the intervening PHP releases.

<?php
function & foo() {
    $var = 'ok';
    return $var;
}

function & bar() {
    return foo();
}

$a =& bar();
echo "$a\n";
?>
Key PHP 5.1.x features
Reading []
Migrating from PHP 5.0.x to PHP 5.1.x


Reading []

<?php
class XmlTest {

    function test_ref(&$test) {
        $test = "ok";
    }

    function test($test) { }

    function run() {
        $ar = array();
        $this->test_ref($ar[]);
        var_dump($ar);
        $this->test($ar[]);
    }
}

$o = new XmlTest();
$o->run();
?>

This should always have thrown a fatal E_ERROR, because [] cannot be used for reading in PHP. It is invalid code in PHP 4.4.2 and PHP 5.0.5 upward.

Changes in reference handling
Integer values in function parameters
Migrating from PHP 5.0.x to PHP 5.1.x


Integer values in function parameters

With the advent of PHP 5.0.x, a new parameter parsing API was introduced which is used by a large number of PHP functions. In all versions of PHP between 5.0.x and 5.1.x, the handling of integer values was very strict and would reject non-well formed numeric values when a PHP function expected an integer. These checks have now been relaxed to support non-well formed numeric strings such as " 123" and "123 ", and will no longer fail as they did under PHP 5.0.x. However, to promote code safety and input validation, PHP functions will now emit an E_NOTICE when such strings are passed as integers.

Reading []
Class and object changes
Migrating from PHP 5.0.x to PHP 5.1.x


Class and object changes

  • instanceof, is_a(), is_subclass_of() and catch

  • Abstract private methods

  • Access modifiers in interfaces

  • Changes in inheritance rules

  • Class constants

instanceof, is_a(), is_subclass_of() and catch

In PHP 5.0, is_a() was deprecated and replaced by the instanceof operator. There were some issues with the initial implementation of instanceof, which relied on __autoload() to search for missing classes. If the class was not present, instanceof would throw a fatal E_ERROR due to the failure of __autoload() to discover that class. The same behaviour occurred in the catch operator and the is_subclass_of() function, for the same reason.

None of these functions or operators call __autoload() in PHP 5.1.x, and the class_exists() workarounds used in code written for PHP 5.0.x, while not problematic in any way, are no longer necessary.

Abstract private methods

Abstract private methods were supported between PHP 5.0.0 and PHP 5.0.4, but were then disallowed on the grounds that the behaviours of private and abstract are mutually exclusive.

Access modifiers in interfaces

Under PHP 5.0, function declarations in interfaces were treated in exactly the same way as function declarations in classes. This has not been the case since October 2004, at which point only the public access modifier was allowed in interface function declarations. Since April 2005 - which pre-dates the PHP 5.0b1 release - the static modifier has also been allowed. However, the protected and private modifiers will now throw an E_ERROR, as will abstract. Note that this change should not affect your existing code, as none of these modifiers makes sense in the context of interfaces anyway.

Changes in inheritance rules

Under PHP 5.0, it was possible to have a function declaration in a derived class that did not match the declaration of the same function in the base class, e.g.

This code will cause an E_STRICT error to be emitted under PHP 5.1.x.

<?php
class Base {
    function &return_by_ref() {
        $r = 1;
        return $r;
    }
}

class Derived extends Base {
    function return_by_ref() {
        return 1;
    }
}
?>

Class constants

Under PHP 5.0.x, the following code was valid:

Under PHP 5.1.x, redefinition of a class constant will throw a fatal E_ERROR.

<?php
class test {
    const foobar = 'foo';
    const foobar = 'bar';
}

?>
Integer values in function parameters
Extensions
Migrating from PHP 5.0.x to PHP 5.1.x


Extensions

  • Extensions that are gone from the PHP core

  • Class constants in new PHP 5.1.x extensions

Extensions that are gone from the PHP core

One of the first things you're likely to notice when you download PHP 5.1.x is that several of the older extensions have disappeared. Those extensions that are still actively maintained are available in the PHP Extension Community Library (PECL), at » http://pecl.php.net/.

Removed extensions
Extension | Alternative/Status
ext/cpdf | pecl/pdflib
ext/dbx | pecl/dbx
ext/dio | pecl/dio
ext/fam | Not actively maintained
ext/ingres_ii | pecl/ingres
ext/ircg | Not actively maintained
ext/mcve | pecl/mcve
ext/mnogosearch | Not actively maintained
ext/oracle | ext/oci8 or ext/pdo_oci
ext/ovrimos | Not actively maintained
ext/pfpro | Not actively maintained
ext/w32api | » pecl/ffi
ext/yp | Not actively maintained
ext/activescript | » pecl/activescript

Modules in PECL that are not actively maintained (i.e. have not been supported for some time, have no active maintainer working on them currently, and do not have any PECL package releases), are still available in SVN at » http://svn.php.net/viewvc/pecl. However, unreleased PHP modules are by their nature unsupported, and your mileage may vary when attempting to install or use them.

Class constants in new PHP 5.1.x extensions

The Zend Engine 2.1 API allows extension developers to declare class constants in object oriented extensions. New extensions written for PHP 5.1.x, including SPL, PDO, XMLReader and date, have their constants in the format PDO::CLASS_CONSTANT rather than in the C format PDO_CLASS_CONSTANT in order to minimise pollution of the global namespace in PHP.

Class and object changes
Date/time support
Migrating from PHP 5.0.x to PHP 5.1.x


Date/time support

Date/time support has been fully rewritten in PHP 5.1.x, and no longer uses the system settings to 'know' the timezone in operation. It will instead utilize, in the following order:

  • The timezone set using the date_default_timezone_set() function (if any)

  • The TZ environment variable (if non empty)

  • "magical" guess (if the operating system supports it)

  • If none of the above options succeeds, UTC

To ensure accuracy (and avoid an E_STRICT warning), you will need to define your timezone in your php.ini using the following format:

date.timezone = Europe/London

The supported timezones are listed, in this format, in the timezones appendix.

Also note that strtotime() now returns FALSE on failure, instead of -1.

Extensions
Changes in database support
Migrating from PHP 5.0.x to PHP 5.1.x


Changes in database support

  • PDO overview

  • Changes in MySQL support

  • Changes in SQLite support

PDO overview

PHP Data Objects (PDO) were introduced as a PECL extension under PHP 5.0, and became part of the core PHP distribution in PHP 5.1.x. The PDO extension provides a consistent interface for database access, and is used alongside database-specific PDO drivers. Each driver may also have database-specific functions of its own, but basic data access functionality such as issuing queries and fetching data is covered by PDO functions, using the driver named in PDO::__construct().

Note that the PDO extension, and its drivers, are intended to be built as shared extensions. This will enable straightforward driver upgrades from PECL, without forcing you to rebuild all of PHP.

At the point of the PHP 5.1.x release, PDO is more than ready for widespread testing and could be adopted in most situations. However, it is important to understand that PDO and its drivers are comparatively young and may be missing certain database-specific features; evaluate PDO carefully before you use it in new projects.

Legacy code will generally rely on the pre-existing database extensions, which are still maintained.

Changes in MySQL support

In PHP 4, MySQL 3 support was built-in. With the release of PHP 5.0 there were two MySQL extensions, named 'mysql' and 'mysqli', which were designed to support MySQL < 4.1 and MySQL 4.1 and up, respectively. With the introduction of PDO, which provides a very fast interface to all the database APIs supported by PHP, the PDO_MYSQL driver can support any of the current versions (MySQL 3, 4 or 5) in PHP code written for PDO, depending on the MySQL library version used during compilation. The older MySQL extensions remain in place for reasons of back compatibility, but are not enabled by default.

Changes in SQLite support

In PHP 5.0.x, SQLite 2 support was provided by the built-in sqlite extension, which was also available as a PECL extension in PHP 4.3 and PHP 4.4. With the introduction of PDO, the sqlite extension doubles up to act as a 'sqlite2' driver for PDO; it is due to this that the sqlite extension in PHP 5.1.x has a dependency upon the PDO extension.

PHP 5.1.x ships with a number of alternative interfaces to sqlite:

The sqlite extension provides the "classic" sqlite procedural/OO API that you may have used in prior versions of PHP. It also provides the PDO 'sqlite2' driver, which allows you to access legacy SQLite 2 databases using the PDO API.

PDO_SQLITE provides the 'sqlite' version 3 driver. SQLite version 3 is vastly superior to SQLite version 2, but the file formats of the two versions are not compatible.

If your SQLite-based project is already written and working against earlier PHP versions, then you can continue to use ext/sqlite without problems, but will need to explicitly enable both PDO and sqlite. New projects should use PDO and the 'sqlite' (version 3) driver, as this is faster than SQLite 2, has improved locking concurrency, and supports both prepared statements and binary columns natively.

You must enable PDO to use the SQLite extension. If you want to build the PDO extension as a shared extension, then the SQLite extension must also be built shared. The same holds true for any extension that provides a PDO driver

Date/time support
Checking for E_STRICT
Migrating from PHP 5.0.x to PHP 5.1.x


Checking for E_STRICT

If you only have a single script to check, you can pick up E_STRICT errors using PHP's commandline lint facility:

php -d error_reporting=4095 -l script_to_check.php

For larger projects, the shell script below will achieve the same task:

#!/bin/sh

directory=$1

shift

# These extensions are checked
extensions="php inc"

check_file ()
{
  echo -ne "Doing PHP syntax check on $1 ..."

  # Options:
  ERRORS=`/www/php/bin/php -d display_errors=1 -d html_errors=0 -d error_prepend_string=" " -d error_append_string=" " -d error_reporting=4095 -l $1 | grep -v "No syntax errors detected"`

  if test -z "$ERRORS"; then
    echo -ne "OK."
  else
    echo -e "Errors found!\n$ERRORS"
  fi

  echo
}

# loop over remaining file args
for FILE in "$@" ; do
  for ext in $extensions; do
     if echo $FILE | grep "\.$ext$" > /dev/null; then
       if test -f $FILE; then
         check_file "$FILE"
       fi
     fi
  done
done
Changes in database support
从 PHP 4 移植到 PHP 5
Migrating from PHP 5.0.x to PHP 5.1.x


从 PHP 4 移植到 PHP 5

Table of Contents

  • PHP 5 中有哪些改变
  • 未向下兼容的改变
  • CLI 和 CGI
  • 移植配置文件
  • 新函数
  • 新指令
  • 数据库
  • 新对象模型
  • 错误报告

参见 PHP 版本迁移指南 5.1.x, 5.2.x and 5.3.x.

Checking for E_STRICT
PHP 5 中有哪些改变
附录


PHP 5 中有哪些改变

PHP 5 和集成的 Zend Engine 2 代极大提高了 PHP 的性能和能力，而且投入极大努力尽可能避免破坏已有的代码的使用。因此将代码从 PHP 4 移植到 PHP 5 应该很容易。大多数已有的 PHP 4 代码应该不用改就能运行，但还是应该注意到几点区别并在实际运作环境下转换到新版本之前多做测试。

从 PHP 4 移植到 PHP 5
未向下兼容的改变
从 PHP 4 移植到 PHP 5


未向下兼容的改变

尽管大部分 PHP 4 的代码应该不用修改就能运行，还是应该留意以下不向下兼容的改变：

  • 有了一些新关键字。
  • strrpos() 和 strripos() 如今使用整个字符串作为 needle。
  • 非法使用字符串偏移量会导致 E_ERROR 而不是 E_WARNING。一个非法使用的例子：$str = 'abc'; unset($str[0]);.
  • array_merge() 被改成只接受数组。如果传递入非数组变量，对每个此类参数都会发出一条 E_WARNING 信息。要小心因为你的代码有可能疯狂发出 E_WARNING。
  • PATH_TRANSLATED 服务器变量在 Apache2 SAPI 中不再暗中设定，这和 PHP 4 中的情形相反，如果 Apache 没产生此值则其被设为和 SCRIPT_FILENAME 服务器变量一样的值。此修改是为了遵守 » CGI 规范。更多信息见 » bug #23610，并参考手册中 $_SERVER['PATH_TRANSLATED'] 的说明。此问题也影响到 PHP >= 4.3.2 的版本。
  • Tokenizer 扩展不再定义 T_ML_COMMENT 常量。如果把 error_reporting 设为 E_ALL，PHP 将产生一条消息。尽管 T_ML_COMMENT 从来都没用到过，还是在 PHP 4 中定义了。在 PHP 4 和 PHP 5 中 // 和 /* */ 都被解析为 T_COMMENT 常量。但是 PHPDoc 风格的注释 /** */，自 PHP 5 开始被 PHP 解析，被识别为 T_DOC_COMMENT。
  • 如果 variables_order 包括"S"，$_SERVER 应该带有 argc 和 argv 被产生。如果用户特别配制系统不创建 $_SERVER，那此变量当然就不存在了。改变的地方是不管 variables_order 怎么设定，在 CLI 版本中 argc 和 argv 总是可用的。本来 CLI 版不是总会产生全局变量 $argc 和 $argv 的。
  • 没有属性的对象不再被当成"empty"。
  • 有些情况下类必须在使用前被定义。这仅在使用了一些 PHP 5 的新特性（例如 interfaces）的时候发生。其它情况下行为都没变。
  • get_class()，get_parent_class() 和 get_class_methods() 如今返回的类／方法名和定义时的名字一致（区分大小写），对于依赖以前行为（类／方法名总是返回小写的）的老脚本可能产生问题。一个可能的解决方法是在脚本中搜索所有这些函数并使用 strtolower()。 区分大小写的改变也适用于魔术常量 __CLASS__，__METHOD__ 和 __FUNCTION__。其值都会严格按照定义时的名字返回（区分大小写）。
  • ip2long() 在传递入一个非法 IP 作为参数时返回 FALSE，不再是 -1。
  • 如果有函数定义在包含文件中，则这些函数可以在主文件中使用而与是否在 return 指令之前还是之后无关。如果文件被包含两次，PHP 5 会发出致命错误，因为函数已经被定义，而 PHP 4 不管这个。因此推荐使用 include_once 而不要去检查文件是否已被包含以及在包含文件中有条件返回。
  • include_once 和 require_once 在 Windows 下先将路径规格化，因此包含 A.php 和 a.php 只会把文件包含一次。

Example #1 strrpos() 和 strripos() 如今用整个字符串作为 needle

<?php
var_dump(strrpos('ABCDEF','DEF')); //int(3)

var_dump(strrpos('ABCDEF','DAF')); //bool(false)
?>

Example #2 没有属性的对象不再被当成"empty"

<?php
class test { }
$t = new test();

var_dump(empty($t)); // echo bool(false)

if ($t) {
    // Will be executed
}
?>

Example #3 有些情况下类必须在使用之前定义

<?php

//works with no errors:
$a = new a();
class a {
}

//throws an error:
$a = new b();

interface c{
}
class b implements c {
}

?>

PHP 5 中有哪些改变
CLI 和 CGI
从 PHP 4 移植到 PHP 5


CLI 和 CGI

PHP 5 中对 CLI 和 CGI 文件名作了些改变。PHP 5 中，CGI 版本被改名为 php-cgi.exe（以前是 php.exe），现在主目录中的是 CLI 版本（之前是 cli/php.exe）。

PHP 5 中引进了一种新模式：php-win.exe。这和 CLI 版本相同，只除了 php-win 不输出任何内容，因此不会提供控制台（屏幕上不会闪过"dos 窗口"）。此行为类似 php-gtk。

PHP 5 中，CLI 版本总会产生全局变量 $argv 和 $argc 而不管 php.ini 是怎么设的。即使将 register_argc_argv 设为 off 也不影响 CLI。

参见命令行模式。

未向下兼容的改变
移植配置文件
从 PHP 4 移植到 PHP 5


移植配置文件

由于 ISAPI 模块的名字改了，从 php4xxx 改为 php5xxx，因此需要对配置文件作些修改。CLI 和 CGI 文件名也改了。更多信息请查看相应章节。

移植 Apache 配置极其简单。照下面的例子来检查需要做的修改：

Example #1 移植 Apache 配置文件到 PHP 5

# 将下面这行：
LoadModule php4_module /php/sapi/php4apache2.dll

# 改成这一行：
LoadModule php5_module /php/php5apache2.dll

如果 web 服务器是以 CGI 模式运行 PHP 的，应该注意 CGI 版本的名字从 php.exe 改为了 php-cgi.exe。在 Apache 中，应该照这样改：

Example #2 移植 Apache 配置文件到 PHP 5，CGI 模式

# 将下面这行：
Action application/x-httpd-php "/php/php.exe"

# 改成这一行：
Action application/x-httpd-php "/php/php-cgi.exe"

其它的 web 服务器中，需要修改 CGI 或者 ISAPI 模块的名字。

CLI 和 CGI
新函数
从 PHP 4 移植到 PHP 5


新函数

PHP 5 有了些新函数。下面是列表：

Arrays:

  • array_combine() - 用一个数组作为键名，另一个数组作为值创建一个新数组
  • array_diff_uassoc() - 计算数组的差别，并用用户提供的回调函数作附加的索引检查
  • array_udiff() - 用回调函数比较数据来计算数组的差别
  • array_udiff_assoc() - 计算数组的差别并作附加的索引检查。用回调函数来比较数据
  • array_udiff_uassoc() - 计算数组的差别并作附加的索引检查。数据的比较和索引检查都用回调函数来完成
  • array_walk_recursive() - 对数组的每个成员递归使用用户函数
  • array_uintersect_assoc() - 计算数组的交集并作附加的索引检查。用回调函数来比较数据
  • array_uintersect_uassoc() - 计算数组的交集并作附加的索引检查。数据和索引都用回调函数来比较
  • array_uintersect() - 计算数组的交集。用回调函数来比较数据

InterBase:

  • ibase_affected_rows() - 返回前一个查询影响到的行的数目
  • ibase_backup() - 在服务管理器中发起一个后台任务并立即返回
  • ibase_commit_ret() - 提交一个事务但不关闭
  • ibase_db_info() - 请求有关数据库的统计信息
  • ibase_drop_db() - 删除一个数据库
  • ibase_errcode() - 返回一个错误代码
  • ibase_free_event_handler() - 取消一个已注册的事件句柄
  • ibase_gen_id() - 递增指定的发生器并返回其新值
  • ibase_maintain_db() - 在数据库服务器上执行一条维护命令
  • ibase_name_result() - 给结果集指定一个名字
  • ibase_num_params() - 返回一个准备好的查询的参数数目
  • ibase_param_info() - 返回一个准备好的查询的参数信息
  • ibase_restore() - 在服务管理器中发起一个还原任务并立即返回
  • ibase_rollback_ret() - 回卷一笔事务并保留事务上下文
  • ibase_server_info() - 请求有关数据库服务器的统计信息
  • ibase_service_attach() - 连接到服务管理器
  • ibase_service_detach() - 从服务管理器断开
  • ibase_set_event_handler() - 注册一个当事件发布时要调用的回调函数
  • ibase_wait_event() - 等待数据库发布一条事件

iconv:

  • iconv_mime_decode() - 解码 MIME 头信息字段
  • iconv_mime_decode_headers() - 一次解码多个 MIME 头信息字段
  • iconv_mime_encode() - 压缩 MIME 头信息字段
  • iconv_strlen() - 返回字符串中的字符计数
  • iconv_strpos() - 在堆栈中找到第一个出现的子串位置
  • iconv_strrpos() - 在堆栈中找到最后一个出现的子串位置
  • iconv_substr() - 从字符串中取出一部分

Streams:

  • stream_copy_to_stream() - 把一个流的数据复制到另一个流
  • stream_get_line() - 根据给定的分隔符中流中读取一行
  • stream_socket_accept() - 接受一个由 stream_socket_server() 建立的 socket 连接
  • stream_socket_client() - 打开一个 Internet 或 Unix 域的 socket 连接
  • stream_socket_get_name() - 获取本地或远程的 sockets 名字
  • stream_socket_recvfrom() - 从 socket 获取数据（不管连接是否已经建立）
  • stream_socket_sendto() - 向 socket 发送一个消息（不管连接是否已经建立）
  • stream_socket_server() - 建立一个 Internet 或 Unix 域服务器的 socket

Date/Time:

  • idate() - 将本地时间格式化为整数
  • date_sunset() - 计算所指定日期和地点的日落时间
  • date_sunrise() - T计算所指定日期和地点的日出时间
  • time_nanosleep() - 廷迟执行程若干秒和若干纳秒

Strings:

  • str_split() - 把一个字符串分割为数组
  • strpbrk() - 在一字符串中搜索给定的字符集合中的任意一个字符
  • substr_compare() - 以二进制的形式比较两个字符串，从第一个字符串的 offset 开始，直到到达长度为 length 时结束，可自定义是否大小写敏感比较

Other:

  • convert_uudecode() - 解码 uuencoded 的字符串
  • convert_uuencode() - 对字符串进行 uuencode
  • curl_copy_handle() - 复制一个 cURL 句柄及其所有参数
  • dba_key_split() - 把一个键分隔为字符串数组
  • dbase_get_header_info() - 取得 dBase 数据库的头部信息
  • dbx_fetch_row() - 获取结果集中被设置为 DBX_RESULT_UNBUFFERED 的行
  • fbsql_set_password() - 修改指定用户的密码
  • file_put_contents() - 向一个文件内写入字符串
  • ftp_alloc() - 为准备上传的文件分配空间
  • get_declared_interfaces() - 以数组的形式返回所有已定义的接品
  • get_headers() - 获取服务器响应 HTTP 请求时的所有头部信息
  • headers_list() - 返回所有已发送或准备发送响应头部列表
  • http_build_query() - 生成一个已经过 URL 编码的请求字符串
  • image_type_to_extension() - 根据
getimagesize(),
exif_read_data(),
exif_thumbnail(),
exif_imagetype() 所返回的 image-type 取得文件名后缀
  • imagefilter() - 对图像应用滤镜
  • imap_getacl() - 获取指定邮箱的 ACL
  • ldap_sasl_bind() - 使用 SASL 绑定到 LDAP 目录
  • mb_list_encodings() - 以数组的形式返回所支持的全部字符集
  • pcntl_getpriority() - 获得任意一个进程的优先级
  • pcntl_wait() - Waits on or returns the status of a forked child as defined by the waitpid() system call
  • pg_version() - 返回一个包含客户端、协议和服务器版本的数组
  • php_check_syntax() - 检查指定文件的语法
  • php_strip_whitespace() - 返回已经去除注释和空白的源代码
  • proc_nice() - 修改当前进程的优前级
  • pspell_config_data_dir() - 修改语言文件的位置
  • pspell_config_dict_dir() - 修改主要单词列表的位置
  • setrawcookie() - 发送一个没有经过 url 编码的 cookie 值
  • scandir() - 列中指定目录中的所有子目录和文件
  • snmp_read_mib() - 在一个可用的 MIB 树中读取和分板一个 MIB 文件
  • sqlite_fetch_column_types() - 以数组的形式返回一张表中的列类型

Note:

Tidy 扩展库的 API 也作了重大调整

移植配置文件
新指令
从 PHP 4 移植到 PHP 5


新指令

PHP 5 在 php.ini 中引进了一些新指令。列表如下：

  • mail.force_extra_parameters - 强制指定的参数附加值作为额外的参数传递给 sendmail 库。这些参数总是会替换掉 mail() 的第 5 个参数，即使在安全模式下
  • register_long_arrays - 允许／禁止 PHP 注册已过时的 $HTTP_*_VARS 变量
  • session.hash_function - 选择一种散列函数（MD5 或 SHA-1）
  • session.hash_bits_per_character - 定义将二进制散列数据转换为可读格式时每个字符中储存几个位（从 4 到 6）
  • zend.ze1_compatibility_mode - 启用 Zend Engline 1 代（PHP 4）兼容模式
新函数
数据库
从 PHP 4 移植到 PHP 5


数据库

关于数据库（MySQL 和 SQLite）在 PHP 5 中有些改变。

因为授权和维护问题，PHP 5 中不再默认绑定 MySQL 客户端连接库。 本质上讲， PHP 的 configure 不再包含 --with-mysql 选项， 所以需要在编译 PHP 的时候自己手动加上选项。 Windows 用户需要编辑 php.ini 开启 PHP 4 中不存在的 php_mysql.dll DLL 文件，因为之前内置于 PHP 二进制文件中。

有个新扩展库 MySQLi（改良版 MySQL），设计用来工作于 MySQL 4.1 及更高版本之下。

自 PHP 5 起，SQLite 扩展库内置在 PHP 中。SQLite 是一个可嵌入 SQL 数据库引擎，不是客户端连接库用来连接大型数据库服务器（如 MySQL 或 PostgreSQL）的。SQLite 库直接读写磁盘上的数据库文件。

新指令
新对象模型
从 PHP 4 移植到 PHP 5


新对象模型

PHP 5 中有个新对象模型（Object Model）。PHP 处理对象的方式完全重写了，允许更佳性能和更多特性。之前版本的 PHP，对象处理方式和原始类型（例如整型和字符串）相同。此方法的缺点是当变量被赋值或作为参数传递给方法时语义上整个对象都被拷贝。在新方法中，对象通过句柄引用，而不是值（可以将句柄当成是对象的标识符）。

很多 PHP 程序员根本没意识到旧的对象模型的这种拷贝怪癖，因此大多数 PHP 应用程序拿来就能运行，或者只做很小的修改。

新对象模型的文档见语言参考。

与 PHP 4 的兼容性参见 zend.ze1_compatibility_mode。

数据库
错误报告
从 PHP 4 移植到 PHP 5


错误报告

自 PHP 5 起引进了新常量 E_STRICT，其值为 2048。它提供了对用户代码的协同性和向前兼容性的运行时 PHP 建议，有助于使用户保持最新和最好的编程风格。例如在使用已过时的函数时 STRICT 信息会提出警告。

Note: E_ALL 不包括 E_STRICT，因此其默认未激活。

新对象模型
PHP 的调试
从 PHP 4 移植到 PHP 5


PHP 的调试

Table of Contents

  • 关于调试器
错误报告
关于调试器
附录


关于调试器

PHP 5.6 带来了 phpdbg 交互式调试器。 PHP 5.6以下的版本尽管没有内部调试器，但是可以使用外部调试器。» Zend IDE 就是其中之一，它包含一个调试器。也有一些免费的调试器，比如在 » http://www.php-debugger.com/dbg/ 上的 DBG，» Advanced PHP Debugger（APD）或者 » Xdebug。

PHP 的调试
配置选项
PHP 的调试


配置选项

Table of Contents

  • 核心配置选项列表
关于调试器
核心配置选项列表
附录


核心配置选项列表

下面是 PHP 的 configure 脚本使用的部分选项的列表，用于类 Unix 环境的编译。大部分配置选项在扩展模块参考页面适当的位置列出，而不是在这里。要查看所有可用配置选项的列表，在运行 autoconf 命令后在 PHP 的源代码目录运行 ./configure --help（参见安装与配置一章）。也可以阅读 » GNU configure 文档以获得有关 configure 命令的更详细信息，例如 --prefix=PREFIX。

Note:

这些选项只用在编译的时候。如果想要修改 PHP 的运行时配置，请阅读运行时配置。

  • 杂项
  • PHP 行为
  • 服务器

PHP 配置选项

杂项选项

--enable-debug

编译时加入调试符号。

--with-layout=TYPE

设置被安装文件的布局。TYPE 是 PHP（默认）或 GNU。

--with-pear=DIR

在 DIR（默认为 PREFIX/lib/php）中安装 PEAR。

--without-pear

不安装 PEAR。

--enable-sigchild

使用 PHP 自带的 SIGCHLD 处理器。

--disable-rpath

禁用在搜索路径中传递其他运行库。

--enable-libgcc

启用 libgcc 的精确链接。

--enable-php-streams

包含试验性的 PHP 流。不要使用此选项，除非是要测试代码！

--with-zlib-dir[=DIR]

定义 zlib 的安装目录。

--with-tsrm-pthreads

使用 POSIX 线程（默认）。

--enable-shared[=PKGS]

编译共享库 [default=yes]。

--enable-static[=PKGS]

编译静态库 [default=yes]。

--enable-fast-install[=PKGS]

为快速安装优化 [default=yes]。

--with-gnu-ld

假设 C 编译器使用 GNU ld [default=no]。

--disable-libtool-lock

避免锁死（可能破坏并联的编译）。

--with-pic

尝试仅使用 PIC/非 PIC 对象 [default=use both]。

--enable-memory-limit

编译内存限制支持功能。(自PHP 5.2.1开始不可用，默认enable)

--disable-url-fopen-wrapper

禁用 URL 形式的 fopen 封装协议。该协议允许通过 HTTP 或者 FTP 访问文件。 （自PHP5.2.5开始不可用）

--enable-versioning

仅导出必须的符号。查看 INSTALL 文件以获得更多信息。

PHP 选项

--enable-maintainer-mode

对偶然安装一下的情形启用此选项，使得不检查编译规则和依赖关系。

--with-config-file-path=PATH

设置 php.ini 的搜索路径。默认为 PREFIX/lib。

--enable-safe-mode

默认启用安全模式。

Warning

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

--with-exec-dir[=DIR]

在安全模式时仅允许在 DIR 目录中执行。默认目录为 /usr/local/php/bin。

Warning

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

--enable-magic-quotes

默认启用 magic quotes。

Warning

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

--disable-short-tags

默认禁用短形式的开始标签 <? 。

--enable-zend-multibyte

在词法与语法分析时允许多字节编码被执行。如果在编译PHP时使用了这个选项，就能够在 declare 结构中使用 encoding指令。

Warning

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

--with-libdir

指定Uxin系统库文件目录用于构建PHP。 对于64位系统, 需要指定lib64目录,比如--with-libdir=lib64

SAPI 选项

下面的列表包含 PHP 可用的SAPI（服务器应用编程接口）。

--with-aolserver=DIR

指定 AOLserver 的安装路径。

--with-apxs[=FILE]

编译共享的 Apache 模块。FILE 是可选的 Apache apxs 工具的路径，默认指向 apxs。请确认指定的 apxs 已经安装在服务器中，并且它不是 Apache 源码包中的那个 apxs。

--with-apache[=DIR]

编译静态 Apache 模块。DIR 是 Apache 编译目录的顶层，默认为 /usr/local/apache。

--with-mod_charset

启用 mod_charset 的转换表（俄文的 Apache 使用）。

--with-apxs2[=FILE]

编译共享的 Apache 2.0 模块。FILE 是可选的 Apache apxs 工具的路径，默认指向 apxs。

--with-caudium=DIR

为使用 Caudium 编译 PHP 为一个 Pike 模块。DIR 是 Caudium 服务器目录，默认为 /usr/local/caudium/server。

--disable-cli

PHP 4.3.0 之后的版本有效。禁止编译 PHP 的 CLI 版本（使用它将同时强制使用 --without-pear 选项）。更多信息请查考 PHP 的命令行模式。

--enable-embed[=TYPE]

启用编译嵌入的 SAPI 库。TYPE 或者为 shared 或者为 static，默认为 shared。PHP 4.3.0 之后的版本有效。

--with-fhttpd[=DIR]

编译 fhttpd 模块。DIR 是 fhttpd 源代码目录，默认为 /usr/local/src/fhttpd。PHP 4.3.0 及以后的版本此选项不再有效。

--with-isapi=DIR

为 Zeus 服务器以 ISAPI 模块方式编译 PHP。

--with-nsapi=DIR

指定 Netscape/iPlanet/SunONE 的安装目录。

--with-phttpd=DIR

还没有信息。

--with-pi3web=DIR

为 Pi3Web 服务器编译 PHP 模块。

--with-roxen=DIR

以 Pike 模块方式编译 PHP。DIR 是 Roxen 的根目录，默认为 /usr/local/roxen/server。

--enable-roxen-zts

使用 Zend 线程安全（ZTS）编译 Roxen 模块。

--with-servlet[=DIR]

包含 servlet 支持。DIR 是 JSDK 的安装目录。此 SAPI 要求 java 扩展必须作为共享模块编译到 PHP 中。

--with-thttpd=SRCDIR

编译 PHP 为 thttpd 模块。

--with-tux=MODULEDIR

编译 PHP 为 TUX 模块（仅在 Linux 下有效）。

--with-webjames=SRCDIR

编译 PHP 为 WebJames 模块（仅在 RISC 操作系统中有效）。

--disable-cgi

禁止编译 CGI 版本的 PHP。PHP 4.3.0 之后的版本有效。

PHP5.3.0起，这个选项会启用FastCGI，而在以前，必须使用--enable-fastcgi启用FastCGI。

--enable-force-cgi-redirect

启用内部服务器重定向的安全检测。如果在 Apache 下使用 CGI 版本的 PHP，请启用该选项。

PHP 5.3.0起，默认有效并不再存在。要禁用此功能,设置cgi.force_redirect ini指令为 0.

--enable-discard-path

如果启用该选项，PHP CGI 目录可以安全的放在 web 目录树的外面，人们无法避开 .htaccess 的安全限制。

PHP 5.3.0起，默认禁用并不在存在。要启用此功能，设置 cgi-redirect ini指令为1。

--enable-fastcgi

如果启用，CGI 模块将被编译为支持 FastCGI。PHP 4.3.0 之后的版本有效。

PHP 5.3.0起，此参数不再存在，并使用 --enable-cgi替代。

--disable-path-info-check

如果该选项被禁用，例如 /info.php/test?a=b 形式的路径将不能工作。PHP 4.3.0 之后的版本有效。更多信息请参考 » Apache 手册。

配置选项
php.ini 配置
配置选项


php.ini 配置

Table of Contents

  • php.ini 配置选项列表
  • php.ini 配置段列表
  • php.ini 核心配置选项说明
核心配置选项列表
php.ini 配置选项列表
附录


php.ini 配置选项列表

可以在 php.ini 中使用下列配置选项对 PHP 进行配置。

"可修改范围"列决定了该配置选项在什么情况下可以被设置。查看配置可被设定范围列表查看具体定义。

配置选项
名字 | 默认 | 可修改范围 | 更新日志
allow_call_time_pass_reference | "1" | PHP_INI_PERDIR | 在 PHP 4.0.0 时是 PHP_INI_ALL。 在 PHP 5.4.0 中移除该选项。
allow_url_fopen | "1" | PHP_INI_SYSTEM | 在 PHP <= 4.3.4 时是 PHP_INI_ALL。
allow_url_include | "0" | PHP_INI_ALL | 在 PHP 5 时是 PHP_INI_SYSTEM。 从 PHP 5.2.0 起可用。
always_populate_raw_post_data | "0" | PHP_INI_PERDIR | 在 PHP <= 4.2.3 时是 PHP_INI_ALL。 从 PHP 4.1.0 起可用。
apc.cache_by_default | "1" | PHP_INI_ALL | 在 APC <= 3.0.12 时是 PHP_INI_SYSTEM。 从 APC 3.0.0 起可用。
apc.enabled | "1" | PHP_INI_SYSTEM | 在 APC 2 时是 PHP_INI_SYSTEM。 在 APC <= 3.0.12 时是 PHP_INI_ALL。
apc.enable_cli | "0" | PHP_INI_SYSTEM | 从 APC 3.0.7 起可用。
apc.file_update_protection | "2" | PHP_INI_SYSTEM | 从 APC 3.0.6 起可用。
apc.filters | NULL | PHP_INI_SYSTEM |
apc.gc_ttl | "3600" | PHP_INI_SYSTEM |
apc.include_once_override | "0" | PHP_INI_SYSTEM | 从 APC 3.0.12 起可用。
apc.localcache | "0" | PHP_INI_SYSTEM | 从 APC 3.0.14 起可用。
apc.localcache.size | "512" | PHP_INI_SYSTEM | 从 APC 3.0.14 起可用。
apc.max_file_size | "1M" | PHP_INI_SYSTEM | 从 APC 3.0.7 起可用。
apc.mmap_file_mask | NULL | PHP_INI_SYSTEM |
apc.num_files_hint | "1000" | PHP_INI_SYSTEM |
apc.optimization | "0" | PHP_INI_ALL | 在 APC 2 时是 PHP_INI_SYSTEM。 在 APC 3.0.13 中移除该选项。
apc.report_autofilter | "0" | PHP_INI_SYSTEM | 从 APC 3.0.11 起可用。
apc.rfc1867 | "0" | PHP_INI_SYSTEM | 从 APC 3.0.13 起可用。
apc.rfc1867_freq | "0" | PHP_INI_SYSTEM |
apc.rfc1867_name | "APC_UPLOAD_PROGRESS" | PHP_INI_SYSTEM |
apc.rfc1867_prefix | "upload_" | PHP_INI_SYSTEM |
apc.shm_segments | "1" | PHP_INI_SYSTEM |
apc.shm_size | "30" | PHP_INI_SYSTEM |
apc.slam_defense | "0" | PHP_INI_SYSTEM | 从 APC 3.0.0 起可用。
apc.stat | "1" | PHP_INI_SYSTEM | 从 APC 3.0.10 起可用。
apc.stat_ctime | "0" | PHP_INI_SYSTEM | 从 APC 3.0.13 起可用。
apc.ttl | "0" | PHP_INI_SYSTEM | 从 APC 3.0.0 起可用。
apc.user_entries_hint | "4096" | PHP_INI_SYSTEM | 从 APC 3.0.0 起可用。
apc.user_ttl | "0" | PHP_INI_SYSTEM | 从 APC 3.0.0 起可用。
apc.write_lock | "1" | PHP_INI_SYSTEM | 从 APC 3.0.11 起可用。
apd.bitmask | "0" | PHP_INI_ALL | 在 apd 0.9 中移除该选项。
apd.dumpdir | NULL | PHP_INI_ALL |
apd.statement_tracing | "0" | PHP_INI_ALL | 从 apd 0.9 起可用。
arg_separator | "&" | PHP_INI_ALL | 在 PHP 4.0.6 中移除该选项。
arg_separator.input | "&" | PHP_INI_PERDIR | 从 PHP 4.0.5 起可用。
arg_separator.output | "&" | PHP_INI_ALL | 从 PHP 4.0.5 起可用。
asp_tags | "0" | PHP_INI_PERDIR | 在 PHP 4.0.0 时是 PHP_INI_ALL。
assert.active | "1" | PHP_INI_ALL |
assert.bail | "0" | PHP_INI_ALL |
assert.callback | NULL | PHP_INI_ALL |
assert.quiet_eval | "0" | PHP_INI_ALL |
assert.warning | "1" | PHP_INI_ALL |
async_send | "0" | PHP_INI_ALL | 从 PHP 4.2.0 起可用。 在 PHP 4.3.0 中移除该选项。
auto_append_file | NULL | PHP_INI_PERDIR | 在 PHP <= 4.2.3 时是 PHP_INI_ALL。
auto_detect_line_endings | "0" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
auto_globals_jit | "1" | PHP_INI_PERDIR | 从 PHP 5.0.0 起可用。
auto_prepend_file | NULL | PHP_INI_PERDIR | 在 PHP <= 4.2.3 时是 PHP_INI_ALL。
axis2.client_home | "~/work/axisc/c/deply" | PHP_INI_ALL |
axis2.enable_exception | "1" | PHP_INI_ALL |
axis2.enable_trace | "1" | PHP_INI_ALL |
axis2.log_path | "/tmp" | PHP_INI_ALL |
bcmath.scale | "0" | PHP_INI_ALL |
bcompiler.enabled | "1" | PHP_INI_ALL | 从 bcompiler 0.8 起可用。
birdstep.max_links | "-1" | PHP_INI_ALL | 从 PHP 4.2.0 起可用。
blenc.key_file | "/usr/local/etc/blenckeys" | PHP_INI_ALL |
browscap | NULL | PHP_INI_SYSTEM |
cgi.check_shebang_line | "1" | PHP_INI_SYSTEM | 从 PHP 5.2.1 起可用。
cgi.discard_path | "0" | PHP_INI_SYSTEM | 从 PHP 5.3.0 起可用。
cgi.fix_pathinfo | "1" | PHP_INI_SYSTEM | 在 PHP <= 5.2.0 时是 PHP_INI_ALL。 从 PHP 4.3.0 起可用。
cgi.force_redirect | "1" | PHP_INI_SYSTEM | 在 PHP <= 5.2.0 时是 PHP_INI_ALL。 从 PHP 4.2.0 起可用。
cgi.nph | "0" | PHP_INI_ALL | 从 PHP 4.3.5 起可用。
cgi.redirect_status_env | NULL | PHP_INI_SYSTEM | 在 PHP <= 5.2.0 时是 PHP_INI_ALL。 从 PHP 4.2.0 起可用。
cgi.rfc2616_headers | "0" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
child_terminate | "0" | PHP_INI_ALL | 从 PHP 4.0.5 起可用。
cli.pager | "" | PHP_INI_ALL | 从 PHP 5.4.0 起可用。
cli.prompt | "\\b \\> " | PHP_INI_ALL | 从 PHP 5.4.0 起可用。
cli_server.color | "0" | PHP_INI_ALL | 从 PHP 5.4.0 起可用。
coin_acceptor.autoreset | "On" | PHP_INI_ALL | 在 coin_acceptor 0.2 中移除该选项。
coin_acceptor.auto_initialize | "Off" | PHP_INI_ALL | 从 coin_acceptor 0.2 起可用。
coin_acceptor.auto_reset | "On" | PHP_INI_ALL | 从 coin_acceptor 0.2 起可用。
coin_acceptor.command_function | "Off" | PHP_INI_ALL | 从 coin_acceptor 0.3 起可用。
coin_acceptor.delay | "53132" | PHP_INI_ALL | 在 coin_acceptor 0.2 中移除该选项。
coin_acceptor.delay_coins | "53132" | PHP_INI_ALL | 从 coin_acceptor 0.2 起可用。
coin_acceptor.delay_prom | "55748" | PHP_INI_ALL | 从 coin_acceptor 0.2 起可用。
coin_acceptor.device | "/dev/ttyS1" | PHP_INI_ALL | 在 coin_acceptor 0.2 中移除该选项。
coin_acceptor.lock_on_close | "Off" | PHP_INI_ALL | 从 coin_acceptor 0.2 起可用。
coin_acceptor.start_unlocked | "On" | PHP_INI_ALL | 从 coin_acceptor 0.2 起可用。
com.allow_dcom | "0" | PHP_INI_SYSTEM | 从 PHP 4.0.5 起可用。
com.autoregister_casesensitive | "1" | PHP_INI_ALL | 在 PHP 4 时是 PHP_INI_SYSTEM。从 PHP 4.1.0 起可用。
com.autoregister_typelib | "0" | PHP_INI_ALL | 在 PHP 4 时是 PHP_INI_SYSTEM。 从 PHP 4.1.0 起可用。
com.autoregister_verbose | "0" | PHP_INI_ALL | 在 PHP 4 时是 PHP_INI_SYSTEM。 从 PHP 4.1.0 起可用。
com.code_page | "" | PHP_INI_ALL | 从 PHP 5.0.0 起可用。
com.typelib_file | "" | PHP_INI_SYSTEM | 从 PHP 4.0.5 起可用。
crack.default_dictionary | NULL | PHP_INI_PERDIR | 在 crack <= 0.2 时是 PHP_INI_SYSTEM。 从 PHP 4.0.5 起可用。 在 PHP 5.0.0 中移除该选项。
daffodildb.default_host | "localhost" | PHP_INI_ALL |
daffodildb.default_password | "daffodil" | PHP_INI_ALL |
daffodildb.default_socket | NULL | PHP_INI_ALL |
daffodildb.default_user | "DAFFODIL" | PHP_INI_ALL |
daffodildb.port | "3456" | PHP_INI_ALL |
date.default_latitude | "31.7667" | PHP_INI_ALL | 从 PHP 5.0.0 起可用。
date.default_longitude | "35.2333" | PHP_INI_ALL | 从 PHP 5.0.0 起可用。
date.sunrise_zenith | "90.583333" | PHP_INI_ALL | 从 PHP 5.0.0 起可用。
date.sunset_zenith | "90.583333" | PHP_INI_ALL | 从 PHP 5.0.0 起可用。
date.timezone | "" | PHP_INI_ALL | 从 PHP 5.1.0 起可用。
dba.default_handler | "" | PHP_INI_ALL | 从 PHP 4.3.3 起可用。
dbx.colnames_case | "unchanged" | PHP_INI_SYSTEM | 从 PHP 4.3.0 起可用。 在 PHP 5.1.0 中移除该选项。
default_charset | "" | PHP_INI_ALL |
default_mimetype | "text/html" | PHP_INI_ALL |
default_socket_timeout | "60" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
define_syslog_variables | "0" | PHP_INI_ALL | 在 PHP 5.4.0 中移除该选项。
detect_unicode | "1" | PHP_INI_ALL | 从 PHP 5.1.0 起可用。 本过时特性将肯定会在未来被移除。
disable_classes | "" | php.ini only | 从 PHP 4.3.2 起可用。
disable_functions | "" | php.ini only | 从 PHP 4.0.1 起可用。
display_errors | "1" | PHP_INI_ALL |
display_startup_errors | "0" | PHP_INI_ALL | 从 PHP 4.0.3 起可用。
docref_ext | "" | PHP_INI_ALL | 从 PHP 4.3.2 起可用。
docref_root | "" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
doc_root | NULL | PHP_INI_SYSTEM |
enable_dl | "1" | PHP_INI_SYSTEM | 本过时特性将肯定会在未来被移除。
engine | "1" | PHP_INI_ALL | 从 PHP 4.0.5 起可用。
error_append_string | NULL | PHP_INI_ALL |
error_log | NULL | PHP_INI_ALL |
error_prepend_string | NULL | PHP_INI_ALL |
error_reporting | NULL | PHP_INI_ALL |
etpan.default.charset | "utf-8" | PHP_INI_ALL |
etpan.default.protocol | "imap" | PHP_INI_ALL |
exif.decode_jis_intel | "JIS" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
exif.decode_jis_motorola | "JIS" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
exif.decode_unicode_intel | "UCS-2LE" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
exif.decode_unicode_motorola | "UCS-2BE" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
exif.encode_jis | "" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
exif.encode_unicode | "ISO-8859-15" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
exit_on_timeout | "" | PHP_INI_ALL | 从 PHP 5.3 起可用。0
expect.logfile | "" | PHP_INI_ALL |
expect.loguser | "1" | PHP_INI_ALL |
expect.timeout | "10" | PHP_INI_ALL |
expose_php | "1" | php.ini only |
extension | NULL | php.ini only |
extension_dir | "/path/to/php" | PHP_INI_SYSTEM |
fastcgi.impersonate | "0" | PHP_INI_SYSTEM | 在 PHP <= 5.2.0 时是 PHP_INI_ALL。 从 PHP 4.3.0 起可用。
fastcgi.logging | "1" | PHP_INI_SYSTEM | 在 PHP <= 5.2.0 时是 PHP_INI_ALL。 从 PHP 4.4.0 起可用。
fbsql.allow_persistant | "1" | PHP_INI_SYSTEM | 从 PHP 4.0.6 起可用。 在 PHP 4.2.0 中移除该选项。
fbsql.allow_persistent | "1" | PHP_INI_SYSTEM | 从 PHP 4.2.0 起可用。
fbsql.autocommit | "1" | PHP_INI_SYSTEM | 从 PHP 4.0.6 起可用。
fbsql.batchSize | "1000" | PHP_INI_SYSTEM | 从 PHP 4.2.0 起可用。 在 PHP 5.1.0 中移除该选项。
fbsql.batchsize | "1000" | PHP_INI_ALL | 从 PHP 5.1.0 起可用。
fbsql.default_database | "" | PHP_INI_SYSTEM | 从 PHP 4.0.6 起可用。
fbsql.default_database_password | "" | PHP_INI_SYSTEM | 从 PHP 4.0.6 起可用。
fbsql.default_host | NULL | PHP_INI_SYSTEM | 从 PHP 4.0.6 起可用。
fbsql.default_password | "" | PHP_INI_SYSTEM | 从 PHP 4.0.6 起可用。
fbsql.default_user | "_SYSTEM" | PHP_INI_SYSTEM | 从 PHP 4.0.6 起可用。
fbsql.generate_warnings | "0" | PHP_INI_SYSTEM | 从 PHP 4.0.6 起可用。
fbsql.max_connections | "128" | PHP_INI_SYSTEM | 从 PHP 4.0.6 起可用。
fbsql.max_links | "128" | PHP_INI_SYSTEM | 从 PHP 4.0.6 起可用。
fbsql.max_persistent | "-1" | PHP_INI_SYSTEM | 从 PHP 4.0.6 起可用。
fbsql.max_results | "128" | PHP_INI_SYSTEM | 从 PHP 4.0.6 起可用。
fbsql.mbatchSize | "1000" | PHP_INI_SYSTEM | 从 PHP 4.0.6 起可用。 在 PHP 4.2.0 中移除该选项。
fbsql.show_timestamp_decimals | "0" | PHP_INI_SYSTEM | 从 PHP 5.1.5 起可用。
file_uploads | "1" | PHP_INI_SYSTEM | 在 PHP <= 4.2.3 时是 PHP_INI_ALL。 从 PHP 4.0.3 起可用。
filter.default | "unsafe_raw" | PHP_INI_PERDIR | 在 filter <= 0.9.4 时是 PHP_INI_ALL。 从 PHP 5.2.0 起可用。
filter.default_flags | NULL | PHP_INI_PERDIR | 在 filter <= 0.9.4 时是 PHP_INI_ALL。 从 PHP 5.2.0 起可用。
from | "" | PHP_INI_ALL |
gd.jpeg_ignore_warning | "0" | PHP_INI_ALL | 从 PHP 5.1.3 起可用。
geoip.custom_directory | NULL | PHP_INI_ALL | 从 geoip 1.0.1 起可用。
geoip.database_standard | "GeoIP.dat" | PHP_INI_ALL | 在 geoip 1.0.1 中移除该选项。
gpc_order | "GPC" | PHP_INI_ALL | 在 PHP 5.0.0 中移除该选项。
hidef.ini_path | (char*)default_ini_path | PHP_INI_SYSTEM |
highlight.bg | "#FFFFFF" | PHP_INI_ALL | 在 PHP 5.4.0 中移除该选项。
highlight.comment | "#FF8000" | PHP_INI_ALL |
highlight.default | "#0000BB" | PHP_INI_ALL |
highlight.html | "#000000" | PHP_INI_ALL |
highlight.keyword | "#007700" | PHP_INI_ALL |
highlight.string | "#DD0000" | PHP_INI_ALL |
html_errors | "1" | PHP_INI_ALL | 在 PHP <= 4.2.3 时是 PHP_INI_SYSTEM。 从 PHP 4.0.2 起可用。
htscanner.config_file | ".htaccess" | PHP_INI_SYSTEM |
htscanner.default_docroot | "/" | PHP_INI_SYSTEM |
htscanner.default_ttl | "300" | PHP_INI_SYSTEM | 从 htscanner 0.6.0 起可用。
htscanner.stop_on_error | "0" | PHP_INI_SYSTEM | 从 htscanner 0.7.0 起可用。
http.allowed_methods | "" | PHP_INI_ALL | Available since pecl_http 0.4.0. 在 pecl_http 1.0.0 中移除该选项。
http.allowed_methods_log | "" | PHP_INI_ALL | Available since pecl_http 0.12.0. 在 pecl_http 1.0.0 中移除该选项。
http.cache_log | "" | PHP_INI_ALL | Available since pecl_http 0.8.0. 在 pecl_http 1.0.0 中移除该选项。
http.composite_log | "" | PHP_INI_ALL | Available since pecl_http 0.12.0. 在 pecl_http 1.0.0 中移除该选项。
http.etag.mode | "MD5" | PHP_INI_ALL | 从 pecl_http 1.0.0 起可用。
http.etag_mode | "MD5" | PHP_INI_ALL | Available since pecl_http 0.12.0. 在 pecl_http 1.0.0 中移除该选项。
http.force_exit | "1" | PHP_INI_ALL | 从 pecl_http 0.18.0 起可用。
http.log.allowed_methods | "" | PHP_INI_ALL | 从 pecl_http 1.0.0 起可用。
http.log.cache | "" | PHP_INI_ALL | 从 pecl_http 1.0.0 起可用。
http.log.composite | "" | PHP_INI_ALL | 从 pecl_http 1.0.0 起可用。
http.log.not_found | "" | PHP_INI_ALL | 从 pecl_http 1.0.0 起可用。
http.log.redirect | "" | PHP_INI_ALL | 从 pecl_http 1.0.0 起可用。
http.ob_deflate_auto | "0" | PHP_INI_PERDIR | Available since pecl_http 0.21.0. 在 pecl_http 1.0.0 中移除该选项。
http.ob_deflate_flags | "0" | PHP_INI_ALL | Available since pecl_http 0.21.0. 在 pecl_http 1.0.0 中移除该选项。
http.ob_inflate_auto | "0" | PHP_INI_PERDIR | Available since pecl_http 0.21.0. 在 pecl_http 1.0.0 中移除该选项。
http.ob_inflate_flags | "0" | PHP_INI_ALL | Available since pecl_http 0.21.0. 在 pecl_http 1.0.0 中移除该选项。
http.only_exceptions | "0" | PHP_INI_ALL | 从 pecl_http 0.11.0 起可用。
http.persistent.handles.ident | "GLOBAL" | PHP_INI_ALL | 从 pecl_http 1.5.0 起可用。
http.persistent.handles.limit | "-1" | PHP_INI_SYSTEM | 从 pecl_http 1.5.0 起可用。
http.redirect_log | "" | PHP_INI_ALL | Available since pecl_http 0.12.0. 在 pecl_http 1.0.0 中移除该选项。
http.request.datashare.connect | "0" | PHP_INI_SYSTEM | 从 pecl_http 1.3.0 起可用。
http.request.datashare.cookie | "0" | PHP_INI_SYSTEM | 从 pecl_http 1.3.0 起可用。
http.request.datashare.dns | "1" | PHP_INI_SYSTEM | 从 pecl_http 1.3.0 起可用。
http.request.datashare.ssl | "0" | PHP_INI_SYSTEM | 从 pecl_http 1.3.0 起可用。
http.request.methods.allowed | "" | PHP_INI_ALL | 从 pecl_http 1.0.0 起可用。
http.request.methods.custom | "" | PHP_INI_PERDIR | 从 pecl_http 1.0.0 起可用。
http.send.deflate.start_auto | "0" | PHP_INI_PERDIR | 从 pecl_http 1.0.0 起可用。
http.send.deflate.start_flags | "0" | PHP_INI_ALL | 从 pecl_http 1.0.0 起可用。
http.send.inflate.start_auto | "0" | PHP_INI_PERDIR | 从 pecl_http 1.0.0 起可用。
http.send.inflate.start_flags | "0" | PHP_INI_ALL | 从 pecl_http 1.0.0 起可用。
http.send.not_found_404 | "1" | PHP_INI_ALL | 从 pecl_http 1.0.0 起可用。
hyerwave.allow_persistent | "0" | PHP_INI_SYSTEM | 在 PHP 4.3.2 中移除该选项。
hyperwave.allow_persistent | "0" | PHP_INI_SYSTEM | 从 PHP 4.3.2 起可用。 在 PHP 5.0.0 中移除该选项。
hyperwave.default_port | "418" | PHP_INI_ALL | 在 PHP 5.0.0 中移除该选项。
ibase.allow_persistent | "1" | PHP_INI_SYSTEM |
ibase.dateformat | "%Y-%m-%d" | PHP_INI_ALL |
ibase.default_charset | NULL | PHP_INI_ALL | 从 PHP 5.0.0 起可用。
ibase.default_db | NULL | PHP_INI_SYSTEM | 从 PHP 5.0.0 起可用。
ibase.default_password | NULL | PHP_INI_ALL |
ibase.default_user | NULL | PHP_INI_ALL |
ibase.max_links | "-1" | PHP_INI_SYSTEM |
ibase.max_persistent | "-1" | PHP_INI_SYSTEM |
ibase.timeformat | "%H:%M:%S" | PHP_INI_ALL |
ibase.timestampformat | "%Y-%m-%d %H:%M:%S" | PHP_INI_ALL |
ibm_db2.binmode | "1" | PHP_INI_ALL |
ibm_db2.i5_allow_commit | "0" | PHP_INI_SYSTEM | 从 ibm_db2 1.4.9 起可用。
ibm_db2.i5_dbcs_alloc | "0" | PHP_INI_SYSTEM | 从 ibm_db2 1.5.0 起可用。
ibm_db2.instance_name | NULL | PHP_INI_SYSTEM | 从 ibm_db2 1.0.2 起可用。
iconv.input_encoding | "ISO-8859-1" | PHP_INI_ALL | 从 PHP 4.0.5 起可用。
iconv.internal_encoding | "ISO-8859-1" | PHP_INI_ALL | 从 PHP 4.0.5 起可用。
iconv.output_encoding | "ISO-8859-1" | PHP_INI_ALL | 从 PHP 4.0.5 起可用。
ifx.allow_persistent | "1" | PHP_INI_SYSTEM | 在 PHP 5.2.1 中移除该选项。
ifx.blobinfile | "1" | PHP_INI_ALL | 在 PHP 5.2.1 中移除该选项。
ifx.byteasvarchar | "0" | PHP_INI_ALL | 在 PHP 5.2.1 中移除该选项。
ifx.charasvarchar | "0" | PHP_INI_ALL | 在 PHP 5.2.1 中移除该选项。
ifx.default_host | NULL | PHP_INI_SYSTEM | 在 PHP 5.2.1 中移除该选项。
ifx.default_password | NULL | PHP_INI_SYSTEM | 在 PHP 5.2.1 中移除该选项。
ifx.default_user | NULL | PHP_INI_SYSTEM | 在 PHP 5.2.1 中移除该选项。
ifx.max_links | "-1" | PHP_INI_SYSTEM | 在 PHP 5.2.1 中移除该选项。
ifx.max_persistent | "-1" | PHP_INI_SYSTEM | 在 PHP 5.2.1 中移除该选项。
ifx.nullformat | "0" | PHP_INI_ALL | 在 PHP 5.2.1 中移除该选项。
ifx.textasvarchar | "0" | PHP_INI_ALL | 在 PHP 5.2.1 中移除该选项。
ignore_repeated_errors | "0" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
ignore_repeated_source | "0" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
ignore_user_abort | "0" | PHP_INI_ALL |
imlib2.font_cache_max_size | "524288" | PHP_INI_ALL |
imlib2.font_path | "/usr/share/php/fonts/" | PHP_INI_ALL |
implicit_flush | "0" | PHP_INI_ALL | 在 PHP <= 4.2.3 时是 PHP_INI_PERDIR。
include_path | ".;/path/to/php/pear" | PHP_INI_ALL |
ingres.allow_persistent | "1" | PHP_INI_SYSTEM | 从 PHP 4.0.2 起可用。 在 PHP 5.1.0 中移除该选项。
ingres.array_index_start | "1" | PHP_INI_ALL | 从 ingres 1.4.0 起可用。
ingres.blob_segment_length | "4096" | PHP_INI_ALL | 从 ingres 1.2.0 起可用。
ingres.cursor_mode | "0" | PHP_INI_ALL | 从 ingres 1.1 起可用。
ingres.default_database | NULL | PHP_INI_ALL | 从 PHP 4.0.2 起可用。 在 PHP 5.1.0 中移除该选项。
ingres.default_password | NULL | PHP_INI_ALL | 从 PHP 4.0.2 起可用。 在 PHP 5.1.0 中移除该选项。
ingres.default_user | NULL | PHP_INI_ALL | 从 PHP 4.0.2 起可用。 在 PHP 5.1.0 中移除该选项。
ingres.max_links | "-1" | PHP_INI_SYSTEM | 从 PHP 4.0.2 起可用。 在 PHP 5.1.0 中移除该选项。
ingres.max_persistent | "-1" | PHP_INI_SYSTEM | 从 PHP 4.0.2 起可用。 在 PHP 5.1.0 中移除该选项。
ingres.report_db_warnings | "1" | PHP_INI_ALL | 从 ingres 1.1 起可用。
ingres.timeout | "-1" | PHP_INI_ALL | 从 ingres 1.4.0 起可用。
ingres.trace_connect | "0" | PHP_INI_ALL | 从 ingres 1.2.1 起可用。
ircg.control_user | "nobody" | PHP_INI_ALL | 从 PHP 5.0.0 起可用。 在 PHP 5.1.0 中移除该选项。
ircg.keep_alive_interval | "60" | PHP_INI_ALL | 从 PHP 5.0.0 起可用。 在 PHP 5.1.0 中移除该选项。
ircg.max_format_message_sets | "12" | PHP_INI_ALL | 从 PHP 5.0.0 起可用。 在 PHP 5.1.0 中移除该选项。
ircg.shared_mem_size | "6000000" | PHP_INI_ALL | 从 PHP 5.0.0 起可用。 在 PHP 5.1.0 中移除该选项。
ircg.work_dir | "/tmp/ircg" | PHP_INI_ALL | 从 PHP 5.0.0 起可用。 在 PHP 5.1.0 中移除该选项。
last_modified | "0" | PHP_INI_ALL | 从 PHP 4.0.5 起可用。
ldap.base_dn | NULL | PHP_INI_ALL | 在 PHP 4.2.0 中移除该选项。
ldap.max_links | "-1" | PHP_INI_SYSTEM |
log.dbm_dir | "" | PHP_INI_ALL | 在 PHP 4.0.1 中移除该选项。
log_errors | "0" | PHP_INI_ALL |
log_errors_max_len | "1024" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
magic_quotes_gpc | "1" | PHP_INI_PERDIR | 在 PHP <= 4.2.3 时是 PHP_INI_ALL。 从 PHP 5.3.0 起不推荐使用。 在 PHP 5.4.0 中移除该选项。
magic_quotes_runtime | "0" | PHP_INI_ALL | 在 PHP 5.4.0 中移除该选项。
magic_quotes_sybase | "0" | PHP_INI_ALL | 在 PHP 5.4.0 中移除该选项。
mail.add_x_header | "0" | PHP_INI_PERDIR | 从 PHP 5.3.0 起可用。
mail.force_extra_parameters | NULL | php.ini only | 从 PHP 5.0.0 起可用。
mail.log | "" | PHP_INI_ALL | 从 PHP 5.3.0 起可用。
mailparse.def_charset | "us-ascii" | PHP_INI_ALL | 从 PHP 4.1.0 起可用。 在 PHP 4.2.0 中移除该选项。
maxdb.default_db | NULL | PHP_INI_ALL |
maxdb.default_host | NULL | PHP_INI_ALL |
maxdb.default_pw | NULL | PHP_INI_ALL |
maxdb.default_user | NULL | PHP_INI_ALL |
maxdb.long_readlen | "200" | PHP_INI_ALL |
max_execution_time | "30" | PHP_INI_ALL |
max_input_nesting_level | "64" | PHP_INI_PERDIR | 从 PHP 4.4 起可用。8 and PHP 5.2.3.
max_input_vars | 1000 | PHP_INI_PERDIR | 从 PHP 5.3.9 起可用。
max_input_time | "-1" | PHP_INI_PERDIR | 从 PHP 4.3.0 起可用。
mbstring.detect_order | NULL | PHP_INI_ALL | 从 PHP 4.0.6 起可用。
mbstring.encoding_translation | "0" | PHP_INI_PERDIR | 从 PHP 4.3.0 起可用。
mbstring.func_overload | "0" | PHP_INI_SYSTEM | 在 PHP <= 4.2.3 时是 PHP_INI_SYSTEM；从 PHP 4.3 起可用于 PHP_INI_SYSTEM | PHP_INI_PERDIR 。 through 5.2.6. 从 PHP 4.2.0 起可用。
mbstring.http_input | "pass" | PHP_INI_ALL | 从 PHP 4.0.6 起可用。
mbstring.http_output | "pass" | PHP_INI_ALL | 从 PHP 4.0.6 起可用。
mbstring.internal_encoding | NULL | PHP_INI_ALL | 从 PHP 4.0.6 起可用。
mbstring.language | "neutral" | PHP_INI_ALL | 从 PHP 4.3.0 起可用；在 PHP <= 5.2.6 时是 PHP_INI_PERDIR 。
mbstring.script_encoding | NULL | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
mbstring.strict_detection | "0" | PHP_INI_ALL | 从 PHP 5.1.2 起可用。
mbstring.substitute_character | NULL | PHP_INI_ALL | 从 PHP 4.0.6 起可用。
mcrypt.algorithms_dir | NULL | PHP_INI_ALL | 从 PHP 4.0.2 起可用。
mcrypt.modes_dir | NULL | PHP_INI_ALL | 从 PHP 4.0.2 起可用。
memcache.allow_failover | "1" | PHP_INI_ALL | 从 memcache 2.0.2 起可用。
memcache.chunk_size | "8192" | PHP_INI_ALL | 从 memcache 2.0.2 起可用。
memcache.default_port | "11211" | PHP_INI_ALL | 从 memcache 2.0.2 起可用。
memcache.hash_function | "crc32" | PHP_INI_ALL | 从 memcache 2.2.0 起可用。
memcache.hash_strategy | "standard" | PHP_INI_ALL | 从 memcache 2.2.0 起可用。
memcache.max_failover_attempts | "20" | PHP_INI_ALL | 从 memcache 2.1.0 起可用。
memory_limit | "128M" | PHP_INI_ALL |
mime_magic.debug | "0" | PHP_INI_SYSTEM | 从 PHP 5.0.0 起可用。
mime_magic.magicfile | "/path/to/php/magic.mime" | PHP_INI_SYSTEM | 从 PHP 4.3.0 起可用。
msql.allow_persistent | "1" | PHP_INI_ALL |
msql.max_links | "-1" | PHP_INI_ALL |
msql.max_persistent | "-1" | PHP_INI_ALL |
mssql.allow_persistent | "1" | PHP_INI_SYSTEM |
mssql.batchsize | "0" | PHP_INI_ALL | 从 PHP 4.0.4 起可用。
mssql.charset | "" | PHP_INI_ALL | 从 PHP 5.1.2 起可用。
mssql.compatability_mode | "0" | PHP_INI_ALL |
mssql.connect_timeout | "5" | PHP_INI_ALL |
mssql.datetimeconvert | "1" | PHP_INI_ALL | 从 PHP 4.2.0 起可用。
mssql.max_links | "-1" | PHP_INI_SYSTEM |
mssql.max_persistent | "-1" | PHP_INI_SYSTEM |
mssql.max_procs | "-1" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
mssql.min_error_severity | "10" | PHP_INI_ALL |
mssql.min_message_severity | "10" | PHP_INI_ALL |
mssql.secure_connection | "0" | PHP_INI_SYSTEM | 从 PHP 4.3.0 起可用。
mssql.textlimit | "-1" | PHP_INI_ALL |
mssql.textsize | "-1" | PHP_INI_ALL |
mssql.timeout | "60" | PHP_INI_ALL | 从 PHP 4.1.0 起可用。
mysql.allow_persistent | "1" | PHP_INI_SYSTEM |
mysql.connect_timeout | "60" | PHP_INI_ALL | 在 PHP <= 4.3.2 时是 PHP_INI_SYSTEM。 从 PHP 4.3.0 起可用。
mysql.default_host | NULL | PHP_INI_ALL |
mysql.default_password | NULL | PHP_INI_ALL |
mysql.default_port | NULL | PHP_INI_ALL |
mysql.default_socket | NULL | PHP_INI_ALL | 从 PHP 4.0.1 起可用。
mysql.default_user | NULL | PHP_INI_ALL |
mysql.max_links | "-1" | PHP_INI_SYSTEM |
mysql.max_persistent | "-1" | PHP_INI_SYSTEM |
mysql.trace_mode | "0" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
mysqli.default_host | NULL | PHP_INI_ALL | 从 PHP 5.0.0 起可用。
mysqli.default_port | "3306" | PHP_INI_ALL | 从 PHP 5.0.0 起可用。
mysqli.default_pw | NULL | PHP_INI_ALL | 从 PHP 5.0.0 起可用。
mysqli.default_socket | NULL | PHP_INI_ALL | 从 PHP 5.0.0 起可用。
mysqli.default_user | NULL | PHP_INI_ALL | 从 PHP 5.0.0 起可用。
mysqli.max_links | "-1" | PHP_INI_SYSTEM | 从 PHP 5.0.0 起可用。
mysqli.reconnect | "0" | PHP_INI_SYSTEM | 从 PHP 5.0.0 起可用。
namazu.debugmode | "0" | PHP_INI_ALL |
namazu.lang | NULL | PHP_INI_ALL |
namazu.loggingmode | "0" | PHP_INI_ALL |
namazu.sortmethod | NULL | PHP_INI_ALL |
namazu.sortorder | NULL | PHP_INI_ALL |
nsapi.read_timeout | "60" | PHP_INI_ALL | 从 PHP 4.3.3 起可用。
oci8.default_prefetch | "10" | PHP_INI_SYSTEM | 从 PHP 5.1.2 起可用。
oci8.max_persistent | "-1" | PHP_INI_SYSTEM | 从 PHP 5.1.2 起可用。
oci8.old_oci_close_semantics | "0" | PHP_INI_SYSTEM | 从 PHP 5.1.2 起可用。
oci8.persistent_timeout | "-1" | PHP_INI_SYSTEM | 从 PHP 5.1.2 起可用。
oci8.ping_interval | "60" | PHP_INI_SYSTEM | 从 PHP 5.1.2 起可用。
oci8.privileged_connect | "0" | PHP_INI_SYSTEM | 从 PHP 5.1.2 起可用。
oci8.statement_cache_size | "20" | PHP_INI_SYSTEM | 从 PHP 5.1.2 起可用。
odbc.allow_persistent | "1" | PHP_INI_SYSTEM |
odbc.check_persistent | "1" | PHP_INI_SYSTEM |
odbc.defaultbinmode | "1" | PHP_INI_ALL |
odbc.defaultlrl | "4096" | PHP_INI_ALL |
odbc.default_db | NULL | PHP_INI_ALL |
odbc.default_pw | NULL | PHP_INI_ALL |
odbc.default_user | NULL | PHP_INI_ALL |
odbc.max_links | "-1" | PHP_INI_SYSTEM |
odbc.max_persistent | "-1" | PHP_INI_SYSTEM |
odbtp.datetime_format | "object" | PHP_INI_ALL |
odbtp.detach_default_queries | "0" | PHP_INI_ALL |
odbtp.guid_format | "string" | PHP_INI_ALL | 从 odbtp 1.1.3 起可用。
odbtp.interface_file | "/usr/local/share/odbtp.conf" | PHP_INI_ALL |
odbtp.truncation_errors | "1" | PHP_INI_ALL |
opendirectory.default_separator | "/" | PHP_INI_ALL | 在 opendirectory 0.2.2 中移除该选项。
opendirectory.max_refs | "-1" | PHP_INI_ALL |
opendirectory.separator | "/" | PHP_INI_ALL | 从 opendirectory 0.2.2 起可用。
open_basedir | NULL | PHP_INI_ALL | 在 PHP < 5.2.3 时是 PHP_INI_SYSTEM。
oracle.allow_persistent | "-1" | PHP_INI_ALL | 在 PHP 5.1.0 中移除该选项。
oracle.max_links | "-1" | PHP_INI_ALL | 在 PHP 5.1.0 中移除该选项。
oracle.max_persistent | "-1" | PHP_INI_ALL | 在 PHP 5.1.0 中移除该选项。
output_buffering | "0" | PHP_INI_PERDIR |
output_handler | NULL | PHP_INI_PERDIR | 从 PHP 4.0.4 起可用。
pam.servicename | "php" | PHP_INI_ALL |
pcre.backtrack_limit | "1000000" | PHP_INI_ALL | 从 PHP 5.2.0 起可用。
pcre.recursion_limit | "100000" | PHP_INI_ALL | 从 PHP 5.2.0 起可用。
pdo.dsn.* |  | php.ini only | 从 PHP 5.1.0 起可用。
pdo_odbc.connection_pooling | "strict" | PHP_INI_ALL | 从 PHP 5.1.0 起可用。
pdo_odbc.db2_instance_name | NULL | PHP_INI_SYSTEM | 从 PHP 5.1.1 起可用。 本过时特性将肯定会在未来被移除。
pfpro.defaulthost | "test-payflow.verisign.com" | PHP_INI_ALL | 从 PHP 4.0.2 起可用。 在 PHP 5.1.0 中移除该选项。
pfpro.defaultport | "443" | PHP_INI_ALL | 从 PHP 4.0.2 起可用。 在 PHP 5.1.0 中移除该选项。
pfpro.defaulttimeout | "30" | PHP_INI_ALL | 从 PHP 4.0.2 起可用。 在 PHP 5.1.0 中移除该选项。
pfpro.proxyaddress | "" | PHP_INI_ALL | 从 PHP 4.0.2 起可用。 在 PHP 5.1.0 中移除该选项。
pfpro.proxylogon | "" | PHP_INI_ALL | 从 PHP 4.0.2 起可用。 在 PHP 5.1.0 中移除该选项。
pfpro.proxypassword | "" | PHP_INI_ALL | 从 PHP 4.0.2 起可用。 在 PHP 5.1.0 中移除该选项。
pfpro.proxyport | "" | PHP_INI_ALL | 从 PHP 4.0.2 起可用。 在 PHP 5.1.0 中移除该选项。
pgsql.allow_persistent | "1" | PHP_INI_SYSTEM |
pgsql.auto_reset_persistent | "0" | PHP_INI_SYSTEM | 从 PHP 4.2.0 起可用。
pgsql.ignore_notice | "0" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
pgsql.log_notice | "0" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
pgsql.max_links | "-1" | PHP_INI_SYSTEM |
pgsql.max_persistent | "-1" | PHP_INI_SYSTEM |
phar.extract_list | "" | PHP_INI_ALL | 从 phar 1.1.0 起可用。
phar.readonly | "1" | PHP_INI_ALL |
phar.require_hash | "1" | PHP_INI_ALL |
enable_post_data_reading | On | PHP_INI_PERDIR | 从 PHP 5.4.0 起可用。
post_max_size | "8M" | PHP_INI_PERDIR | 在 PHP <= 4.2.3 时是 PHP_INI_SYSTEM。 从 PHP 4.0.3 起可用。
precision | "14" | PHP_INI_ALL |
printer.default_printer | "" | PHP_INI_ALL | 从 PHP 4.0.6 起可用。 在 PHP 4.1.1 中移除该选项。
python.append_path | "" | PHP_INI_ALL |
python.prepend_path | "." | PHP_INI_ALL |
realpath_cache_size | "16K" | PHP_INI_SYSTEM | 从 PHP 5.1.0 起可用。
realpath_cache_ttl | "120" | PHP_INI_SYSTEM | 从 PHP 5.1.0 起可用。
register_argc_argv | "1" | PHP_INI_PERDIR | 在 PHP <= 4.2.3 时是 PHP_INI_ALL。
register_globals | "0" | PHP_INI_PERDIR | 在 PHP <= 4.2.3 时是 PHP_INI_ALL。 从 PHP 5.3.0 起不推荐使用。 在 PHP 5.4.0 中移除该选项。
register_long_arrays | "1" | PHP_INI_PERDIR | 从 PHP 5.0.0 起可用。 从 PHP 5.3.0 起不推荐使用。在 PHP 5.4.0 中移除该选项。
report_memleaks | "1" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
report_zend_debug | "1" | PHP_INI_ALL | 从 PHP 5.0.0 起可用。
request_order | "" | PHP_INI_PERDIR | 在 PHP 5.3.0 时增加
runkit.internal_override | "0" | PHP_INI_SYSTEM |
runkit.superglobal | "" | PHP_INI_PERDIR |
safe_mode | "0" | PHP_INI_SYSTEM | 在 PHP 5.4.0 中移除该选项。
safe_mode_allowed_env_vars | "PHP_" | PHP_INI_SYSTEM | 在 PHP 5.4.0 中移除该选项。
safe_mode_exec_dir | "" | PHP_INI_SYSTEM | 在 PHP 5.4.0 中移除该选项。
safe_mode_gid | "0" | PHP_INI_SYSTEM | 从 PHP 4.1.0 起可用。 在 PHP 5.4.0 中移除该选项。
safe_mode_include_dir | NULL | PHP_INI_SYSTEM | 从 PHP 4.1.0 起可用。 在 PHP 5.4.0 中移除该选项。
safe_mode_protected_env_vars | "LD_LIBRARY_PATH" | PHP_INI_SYSTEM | 在 PHP 5.4.0 中移除该选项。
sendmail_from | NULL | PHP_INI_ALL |
sendmail_path | "/usr/sbin/sendmail -t -i" | PHP_INI_SYSTEM |
serialize_precision | "17" | PHP_INI_ALL | 从 PHP 4.3.2 起可用。 Until PHP 5.3.5, the default value was 100.
session.auto_start | "0" | PHP_INI_ALL |
session.bug_compat_42 | "1" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。 在 PHP 5.4.0 中移除该选项。
session.bug_compat_warn | "1" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。 在 PHP 5.4.0 中移除该选项。
session.cache_expire | "180" | PHP_INI_ALL |
session.cache_limiter | "nocache" | PHP_INI_ALL |
session.cookie_domain | "" | PHP_INI_ALL |
session.cookie_httponly | "" | PHP_INI_ALL | 从 PHP 5.2.0 起可用。
session.cookie_lifetime | "0" | PHP_INI_ALL |
session.cookie_path | "/" | PHP_INI_ALL |
session.cookie_secure | "" | PHP_INI_ALL | 从 PHP 4.0.4 起可用。
session.entropy_file | "" | PHP_INI_ALL |
session.entropy_length | "0" | PHP_INI_ALL |
session.gc_dividend | "100" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。 在 PHP 4.3.2 中移除该选项。
session.gc_divisor | "100" | PHP_INI_ALL | 从 PHP 4.3.2 起可用。
session.gc_maxlifetime | "1440" | PHP_INI_ALL |
session.gc_probability | "1" | PHP_INI_ALL |
session.hash_bits_per_character | "4" | PHP_INI_ALL | 从 PHP 5.0.0 起可用。
session.hash_function | "0" | PHP_INI_ALL | 从 PHP 5.0.0 起可用。
session.name | "PHPSESSID" | PHP_INI_ALL |
session.referer_check | "" | PHP_INI_ALL |
session.save_handler | "files" | PHP_INI_ALL |
session.save_path | "" | PHP_INI_ALL |
session.serialize_handler | "php" | PHP_INI_ALL |
session.use_cookies | "1" | PHP_INI_ALL |
session.use_only_cookies | "1" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
session.use_trans_sid | "0" | PHP_INI_ALL | 在 PHP <= 4.2.3 时是 PHP_INI_ALL。 在 PHP < 5 时是 PHP_INI_PERDIR。 从 PHP 4.0.3 起可用。
session_pgsql.create_table | "1" | PHP_INI_SYSTEM |
session_pgsql.db | "host=localhost dbname=php_session user=nobody" | PHP_INI_SYSTEM |
session_pgsql.disable | "0" | PHP_INI_SYSTEM |
session_pgsql.failover_mode | "0" | PHP_INI_SYSTEM |
session_pgsql.gc_interval | "3600" | PHP_INI_SYSTEM |
session_pgsql.keep_expired | "0" | PHP_INI_SYSTEM |
session_pgsql.sem_file_name | "/tmp/php_session_pgsql" | PHP_INI_SYSTEM |
session_pgsql.serializable | "0" | PHP_INI_SYSTEM |
session_pgsql.short_circuit | "0" | PHP_INI_SYSTEM |
session_pgsql.use_app_vars | "0" | PHP_INI_SYSTEM |
session_pgsql.vacuum_interval | "21600" | PHP_INI_SYSTEM |
short_open_tag | "1" | PHP_INI_ALL | 在 PHP 4.0.0 时是 PHP_INI_ALL。 在 PHP < 5.3.0 时是 PHP_INI_PERDIR
simple_cvs.authMethod | "0" | PHP_INI_ALL |
simple_cvs.compressionLevel | "0" | PHP_INI_ALL |
simple_cvs.cvsRoot | "0" | PHP_INI_ALL |
simple_cvs.host | "0" | PHP_INI_ALL |
simple_cvs.moduleName | "0" | PHP_INI_ALL |
simple_cvs.userName | "0" | PHP_INI_ALL |
simple_cvs.workingDir | "0" | PHP_INI_ALL |
SMTP | "localhost" | PHP_INI_ALL |
smtp_port | "25" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
soap.wsdl_cache | "1" | PHP_INI_ALL | 从 PHP 5.1.5 起可用。
soap.wsdl_cache_dir | "/tmp" | PHP_INI_ALL | 从 PHP 5.0.0 起可用。
soap.wsdl_cache_enabled | "1" | PHP_INI_ALL | 从 PHP 5.0.0 起可用。
soap.wsdl_cache_limit | "5" | PHP_INI_ALL | 从 PHP 5.1.5 起可用。
soap.wsdl_cache_ttl | "86400" | PHP_INI_ALL | 从 PHP 5.0.0 起可用。
sql.safe_mode | "0" | PHP_INI_SYSTEM |
sqlite.assoc_case | "0" | PHP_INI_ALL | 从 PHP 5.0.0 起可用。
sybase.allow_persistent | "1" | PHP_INI_ALL | 在 PHP <= 4.0.2 时是 PHP_INI_ALL。 在 PHP <= 4.0.3 时是 PHP_INI_SYSTEM。
sybase.hostname | NULL | PHP_INI_ALL | 在 PHP 4.0.2 中移除该选项。
sybase.interface_file | "" | PHP_INI_ALL |
sybase.login_timeout | "0" | PHP_INI_ALL | 在 PHP 4.0.2 中移除该选项。
sybase.max_links | "-1" | PHP_INI_ALL | 在 PHP <= 4.0.2 时是 PHP_INI_ALL。 在 PHP <= 4.0.3 时是 PHP_INI_SYSTEM。
sybase.max_persistent | "-1" | PHP_INI_ALL | 在 PHP <= 4.0.2 时是 PHP_INI_ALL。 在 PHP <= 4.0.3 时是 PHP_INI_SYSTEM。
sybase.min_client_severity | "10" | PHP_INI_ALL | 在 PHP 4.0.2 中移除该选项。
sybase.min_error_severity | "10" | PHP_INI_ALL |
sybase.min_message_severity | "10" | PHP_INI_ALL |
sybase.min_server_severity | "10" | PHP_INI_ALL | 在 PHP 4.0.2 中移除该选项。
sybase.timeout | "0" | PHP_INI_ALL | 在 PHP 4.0.2 中移除该选项。
sybct.deadlock_retry_count | "0" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
sybct.login_timeout | "-1" | PHP_INI_ALL | 从 PHP 4.0.2 起可用。
sybct.packet_size | "0" | PHP_INI_ALL | 从 PHP 4.3.5 起可用。
sybct.timeout | "0" | PHP_INI_ALL | 从 PHP 4.0.2 起可用。
sysvshm.init_mem | "10000" | PHP_INI_ALL |
tidy.clean_output | "0" | PHP_INI_USER | 在 PHP 5 时是 PHP_INI_PERDIR。 从 PHP 5.0.0 起可用。
tidy.default_config | "" | PHP_INI_SYSTEM | 从 PHP 5.0.0 起可用。
track_errors | "0" | PHP_INI_ALL |
track_vars | "1" | PHP_INI_ALL | 在 PHP 4.0.3 中移除该选项。
unserialize_callback_func | NULL | PHP_INI_ALL | 从 PHP 4.2.0 起可用。
uploadprogress.file.filename_template | "/tmp/upt_%s.txt" | PHP_INI_ALL |
upload_max_filesize | "2M" | PHP_INI_PERDIR | 在 PHP <= 4.2.3 时是 PHP_INI_ALL。
max_file_uploads | 20 | PHP_INI_SYSTEM | 从 PHP 5.2.12 起可用。
upload_tmp_dir | NULL | PHP_INI_SYSTEM |
url_rewriter.tags | "a=href,area=href,frame=src,form=,fieldset=" | PHP_INI_ALL | 从 PHP 4.0.4 起可用。
user_agent | NULL | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
user_dir | NULL | PHP_INI_SYSTEM |
user_ini.cache_ttl | "300" | PHP_INI_SYSTEM | 从 PHP 5.3.0 起可用。
user_ini.filename | ".user.ini" | PHP_INI_SYSTEM | 从 PHP 5.3.0 起可用。
valkyrie.auto_validate | "0" | PHP_INI_ALL |
valkyrie.config_path | NULL | PHP_INI_ALL |
variables_order | "EGPCS" | PHP_INI_PERDIR | 在 PHP <= 5.0.5 时是 PHP_INI_ALL。
velocis.max_links | "-1" | PHP_INI_ALL | 在 PHP 4.2.0 中移除该选项。
vld.active | "0" | PHP_INI_SYSTEM |
vld.execute | "1" | PHP_INI_SYSTEM | 从 vld 0.8.0 起可用。
vld.skip_append | "0" | PHP_INI_SYSTEM | 从 vld 0.8.0 起可用。
vld.skip_prepend | "0" | PHP_INI_SYSTEM | 从 vld 0.8.0 起可用。
windows_show_crt_warning | "0" | PHP_INI_ALL | 从 PHP 5.4.0 起可用。
xbithack | "0" | PHP_INI_ALL | 从 PHP 4.0.5 起可用。
xdebug.auto_profile | "0" | PHP_INI_ALL | 在 Xdebug 2.0.0 中移除该选项。
xdebug.auto_profile_mode | "0" | PHP_INI_ALL | 在 Xdebug 2.0.0 中移除该选项。
xdebug.auto_trace | "0" | PHP_INI_ALL |
xdebug.collect_includes | "1" | PHP_INI_ALL | 从 Xdebug 2.0.0 起可用。
xdebug.collect_params | "0" | PHP_INI_ALL |
xdebug.collect_return | "0" | PHP_INI_ALL | 从 Xdebug 2.0.0 起可用。
xdebug.collect_vars | "0" | PHP_INI_ALL | 从 Xdebug 2.0.0 起可用。
xdebug.default_enable | "1" | PHP_INI_ALL | 在 Xdebug 1 时是 PHP_INI_SYSTEM。
xdebug.dump.COOKIE | NULL | PHP_INI_ALL |
xdebug.dump.ENV | NULL | PHP_INI_ALL |
xdebug.dump.FILES | NULL | PHP_INI_ALL |
xdebug.dump.GET | NULL | PHP_INI_ALL |
xdebug.dump.POST | NULL | PHP_INI_ALL |
xdebug.dump.REQUEST | NULL | PHP_INI_ALL |
xdebug.dump.SERVER | NULL | PHP_INI_ALL |
xdebug.dump.SESSION | NULL | PHP_INI_ALL |
xdebug.dump_globals | "1" | PHP_INI_ALL | 从 Xdebug 2.0.0 起可用。
xdebug.dump_once | "1" | PHP_INI_ALL |
xdebug.dump_undefined | "0" | PHP_INI_ALL |
xdebug.extended_info | "1" | PHP_INI_SYSTEM | 从 Xdebug 2.0.0 起可用。
xdebug.idekey | "" | PHP_INI_ALL | 从 Xdebug 2.0.0 起可用。
xdebug.manual_url | "http://www.php.net" | PHP_INI_ALL |
xdebug.max_nesting_level | "100" | PHP_INI_ALL |
xdebug.output_dir | "/tmp" | PHP_INI_PERDIR | 在 Xdebug <= 1.2.0 时是 PHP_INI_SYSTEM。 在 Xdebug 2.0.0 中移除该选项。
xdebug.profiler_aggregate | "0" | PHP_INI_PERDIR | 从 Xdebug 2.0.0 起可用。
xdebug.profiler_append | "0" | PHP_INI_PERDIR | 从 Xdebug 2.0.0 起可用。
xdebug.profiler_enable | "0" | PHP_INI_PERDIR | 从 Xdebug 2.0.0 起可用。
xdebug.profiler_enable_trigger | "0" | PHP_INI_PERDIR | 从 Xdebug 2.0.0 起可用。
xdebug.profiler_output_dir | "/tmp" | PHP_INI_PERDIR | 从 Xdebug 2.0.0 起可用。
xdebug.profiler_output_name | "cachegrind.out.%p" | PHP_INI_PERDIR | 从 Xdebug 2.0.0 起可用。
xdebug.remote_autostart | "0" | PHP_INI_ALL | 从 Xdebug 2.0.0 起可用。
xdebug.remote_enable | "0" | PHP_INI_PERDIR |
xdebug.remote_handler | "dbgp" | PHP_INI_ALL |
xdebug.remote_host | "localhost" | PHP_INI_ALL |
xdebug.remote_log | "" | PHP_INI_ALL | 从 Xdebug 2.0.0 起可用。
xdebug.remote_mode | "req" | PHP_INI_ALL |
xdebug.remote_port | "9000" | PHP_INI_ALL |
xdebug.show_exception_trace | "0" | PHP_INI_ALL | 从 Xdebug 2.0.0 起可用。
xdebug.show_local_vars | "0" | PHP_INI_ALL | 从 Xdebug 2.0.0 起可用。
xdebug.show_mem_delta | "0" | PHP_INI_ALL | 从 Xdebug 2.0.0 起可用。
xdebug.trace_format | "0" | PHP_INI_ALL | 从 Xdebug 2.0.0 起可用。
xdebug.trace_options | "0" | PHP_INI_ALL | 从 Xdebug 2.0.0 起可用。
xdebug.trace_output_dir | "/tmp" | PHP_INI_ALL | 从 Xdebug 2.0.0 起可用。
xdebug.trace_output_name | "trace.%c" | PHP_INI_ALL | 从 Xdebug 2.0.0 起可用。
xdebug.var_display_max_children | "128" | PHP_INI_ALL | 从 Xdebug 2.0.0 起可用。
xdebug.var_display_max_data | "512" | PHP_INI_ALL | 从 Xdebug 2.0.0 起可用。
xdebug.var_display_max_depth | "3" | PHP_INI_ALL | 从 Xdebug 2.0.0 起可用。
xmlrpc_errors | "0" | PHP_INI_SYSTEM | 从 PHP 4.1.0 起可用。
xmlrpc_error_number | "0" | PHP_INI_ALL | 从 PHP 4.1.0 起可用。
xmms.path | "/usr/bin/xmms" | PHP_INI_ALL |
xmms.session | "0" | PHP_INI_ALL |
y2k_compliance | "1" | PHP_INI_ALL | 在 PHP 5.4.0 中移除该选项。
yami.response.timeout | "5" | PHP_INI_ALL | 从 yami 1.0.1 起可用。
yaz.keepalive | "120" | PHP_INI_ALL |
yaz.log_file | NULL | PHP_INI_ALL | 从 PHP 4.3.0 起可用。 在 PHP 5.0.0 中移除该选项。
yaz.log_mask | NULL | PHP_INI_ALL | 从 yaz 1.0.3 起可用。
yaz.max_links | "100" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。 在 PHP 5.0.0 中移除该选项。
zend.enable_gc | "1" | PHP_INI_ALL | 从 PHP 5.3.0 起可用。
zend.multibyte | "0" | PHP_INI_PERDIR | 从 PHP 5.4.0 起可用。
zend.script_encoding | NULL | PHP_INI_ALL | 从 PHP 5.4 起可用。0
zend.signal_check | "0" | PHP_INI_SYSTEM | 从 PHP 5.4 起可用。0
zend.ze1_compatibility_mode | "0" | PHP_INI_ALL | 从 PHP 5.0.0 起可用。 在 PHP 5.3.0 中移除该选项。
zend_extension | NULL | php.ini only |
zend_extension_debug | NULL | php.ini only |
zend_extension_debug_ts | NULL | php.ini only |
zend_extension_ts | NULL | php.ini only |
zlib.output_compression | "0" | PHP_INI_ALL | 从 PHP 4.0.5 起可用。
zlib.output_compression_level | "-1" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
zlib.output_handler | "" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。

php.ini 配置
php.ini 配置段列表
php.ini 配置


php.ini 配置段列表

This list includes the php.ini sections you can set to configure your PHP setup on a per Host or Path basis. These sections are optional.

These sections don't directly affect PHP. They are used to group other php.ini directives together and to get them to act upon a particular host or on a particular path.

These sections are used only in CGI/FastCGI mode and they can not set extension and zend_extension directives.

配置段
名字 | 可修改范围 | 更新日志
[HOST=] | PHP_INI_SYSTEM | 在 PHP 5.3.0 时增加。
[PATH=] | PHP_INI_SYSTEM | 在 PHP 5.3.0 时增加。

这是配置指令的简短说明。

[HOST=<host>]

This section allows you to define a set of php.ini directives that will take effect on the named host.

Example #1 Activate full on-screen error reporting for dev. domain

[HOST=dev.site.com]
error_reporting = E_ALL
display_errors = On

[PATH=<path>]

This section allows you to define a set of php.ini directives that will take effect when a script runs from the named path.

Example #2 Add security script for protected areas

[PATH=/home/site/public/secure]
auto_prepend_file=security.php

php.ini 配置选项列表
php.ini 核心配置选项说明
php.ini 配置


php.ini 核心配置选项说明

该列表只包含核心的 php.ini 配置选项。扩展的配置选项在各个扩展的文档页面分别被描述。有关 session 的选项可以在 sessions 页面找到。

Httpd 选项

Httpd 选项
名字 | 默认 | 可修改范围 | 更新日志
async_send | "0" | PHP_INI_ALL |

语言选项

语言和杂类配置选项
名字 | 默认 | 可修改范围 | 更新日志
short_open_tag | "1" | PHP_INI_ALL | 在 PHP 4.0.0 时是 PHP_INI_ALL。 在 PHP < 5.3.0 时是 PHP_INI_PERDIR。
asp_tags | "0" | PHP_INI_PERDIR | 在 PHP 4.0.0 时是 PHP_INI_ALL。
precision | "14" | PHP_INI_ALL |
serialize_precision | "17" | PHP_INI_ALL | 从 PHP 4.3.2 起可用。在 PHP 5.3.5以前，默认值为 100
y2k_compliance | "1" | PHP_INI_ALL | 在 PHP 5.4.0 中移除该选项。
allow_call_time_pass_reference | "1" | PHP_INI_PERDIR | 在 PHP 4.0.0 时是 PHP_INI_ALL。 在 PHP 5.4.0 中移除该选项。
disable_functions | "" | php.ini only | 从 PHP 4.0.1 起可用。
disable_classes | "" | php.ini only | 从 PHP 4.3.2 起可用。
exit_on_timeout | "" | PHP_INI_ALL | 从 PHP 5.3.0 起可用。
expose_php | "1" | php.ini only |
zend.multibyte | "0" | PHP_INI_ALL | 从 PHP 5.4.0 起可用
zend.script_encoding | NULL | PHP_INI_ALL | 从 PHP 5.4.0 起可用
zend.signal_check | "0" | PHP_INI_SYSTEM | 从 PHP 5.4.0 起可用
zend.assertions | "1" | PHP_INI_ALL | 从 PHP 7.0.0 起可用
zend.ze1_compatibility_mode | "0" | PHP_INI_ALL | 从 PHP 5.0.0起可用。 在 PHP 5.3.0 中移除该选项
detect_unicode | "1" | PHP_INI_ALL | 从 PHP 5.1.0起可用。 本过时特性将肯定会在未来被移除。

这是配置指令的简短说明。

short_open_tag boolean

决定是否允许使用 PHP 代码开始标志的缩写形式（<? ?>）。如果要和 XML 结合使用 PHP，可以禁用此选项以便于嵌入使用 <?xml ?>。否则还可以通过 PHP 来输出，例如：<?php echo '<?xml version="1.0"'; ?>。如果禁用了，必须使用 PHP 代码开始标志的完整形式（<?php ?>）。

Note:

本指令也会影响到缩写形式 <?=，它和 <? echo 等价。使用此缩写需要 short_open_tag 的值为 On。 从 PHP 5.4.0 起， <?= 总是可用的。

asp_tags boolean
除了通常的 <?php ?> 标志之外还允许使用 ASP 风格的标志 <% %>。这也包括了输出变量值的缩写 <%= $value %>。更多信息见从 HTML 中分离一节。
precision integer
浮点数中显示有效数字的位数。
serialize_precision integer
The number of significant digits stored while serializing floating point numbers.
y2k_compliance boolean
强制 2000 年兼容（在不兼容的浏览器中会出问题）。
allow_call_time_pass_reference boolean

在函数调用时参数被按照引用传递时是否发出警告。此方法已不被赞成并在 PHP/Zend 未来的版本中很可能不再支持。鼓励使用的方法是在函数定义中指定哪些参数应该用引用传递。鼓励大家尝试关闭此选项并确保脚本能够正常运行，以确保该脚本也能在未来的版本中运行（每次使用此特性都会收到一条警告）。

在函数调用时通过引用传递参数是不推荐的，因为它影响到了代码的整洁。如果函数的参数没有声明作为引用传递，函数可以通过未写入文档的方法修改其参数。要避免其副作用，最好仅在函数声明时指定那个参数需要通过引用传递。

参见引用的解释。

Changelog for allow_call_time_pass_reference
版本 | 说明
5.4.0 | 从 PHP 中移除。
5.3.0 | Emits an E_DEPRECATED level error.
5.0.0 | Deprecated, and generates an E_COMPILE_WARNING level error.

expose_php boolean

决定是否暴露 PHP 被安装在服务器上（例如在 Web 服务器的信息头中加上其签名：X-Powered-By: PHP/5.3.7)。 The PHP logo guids are also exposed, thus appending them to the URL of a PHP enabled site will display the appropriate logo (e.g., » http://www.php.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42). This also affects the output of phpinfo(), as when disabled, the PHP logo and credits information will not be displayed.

See also php_logo_guid() and phpcredits().

disable_functions string
本指令允许你基于安全原因禁止某些函数。接受逗号分隔的函数名列表作为参数。 disable_functions 不受安全模式的影响。 本指令只能设置在 php.ini 中。例如不能将其设置在 httpd.conf。
disable_classes string
本指令可以使你出于安全的理由禁用某些类。用逗号分隔类名。disable_classes 不受安全模式的影响。 本指令只能设置在 php.ini 中。例如不能将其设置在 httpd.conf。

Note: 可用性说明
本指令自 PHP 4.3.2 起可用。

zend.assertions integer
When set to 1, assertion code will be generated and executed (development mode). When set to 0, assertion code will be generated but it will be skipped (not executed) at runtime. When set to -1, assertion code will not be generated, making the assetions zero-cost (production mode).
zend.ze1_compatibility_mode boolean

Enable compatibility mode with Zend Engine 1 (PHP 4). It affects the cloning, casting (objects with no properties cast to FALSE or 0), and comparing of objects. In this mode, objects are passed by value instead of reference by default.

See also the section titled Migrating from PHP 4 to PHP 5.

Warning

This feature has been DEPRECATED and REMOVED as of PHP 5.3.0.

zend.multibyte boolean

Enables parsing of source files in multibyte encodings.

zend.script_encoding string

This value will be used unless a declare(encoding=...) directive appears at the top of the script.

zend.signal_check boolean

To check for replaced signal handlers on shutdown.

detect_unicode boolean

Check for BOM (Byte Order Mark) and see if the file contains valid multibyte characters. This detection is performed before processing of __halt_compiler(). Available only in Zend Multibyte mode.

exit_on_timeout boolean

This is an Apache1 mod_php-only directive that forces an Apache child to exit if a PHP execution timeout occurred. Such a timeout causes an internal longjmp() call in Apache1 which can leave some extensions in an inconsistent state. By terminating the process any outstanding locks or memory will be cleaned up.

Resource Limits

Resource Limits
名字 | 默认 | 可修改范围 | 更新日志
memory_limit | "128M" | PHP_INI_ALL | "8M" before PHP 5.2.0, "16M" in PHP 5.2.0

这是配置指令的简短说明。

memory_limit integer

This sets the maximum amount of memory in bytes that a script is allowed to allocate. This helps prevent poorly written scripts for eating up all available memory on a server. Note that to have no memory limit, set this directive to -1.

Prior to PHP 5.2.1, in order to use this directive it had to be enabled at compile time by using --enable-memory-limit in the configure line. This compile-time flag was also required to define the functions memory_get_usage() and memory_get_peak_usage() prior to 5.2.1.

当使用 integer 时, 其值以字节来衡量。还可以使用在FAQ中描述的速记符。

See also: max_execution_time.

Performance Tuning

Performance Tuning
名字 | 默认 | 可修改范围 | 更新日志
realpath_cache_size | "16K" | PHP_INI_SYSTEM | 从 PHP 5.1.0 起可用。
realpath_cache_ttl | "120" | PHP_INI_SYSTEM | 从 PHP 5.1.0 起可用。

这是配置指令的简短说明。

realpath_cache_size integer

Determines the size of the realpath cache to be used by PHP. This value should be increased on systems where PHP opens many files, to reflect the quantity of the file operations performed.

realpath_cache_ttl integer

Duration of time (in seconds) for which to cache realpath information for a given file or directory. For systems with rarely changing files, consider increasing the value.

Data Handling

Data Handling Configuration Options
名字 | 默认 | 可修改范围 | 更新日志
track_vars | "On" | PHP_INI_?? |
arg_separator.output | "&" | PHP_INI_ALL | 从 PHP 4.0.5 起可用。
arg_separator.input | "&" | PHP_INI_PERDIR | 从 PHP 4.0.5 起可用。
variables_order | "EGPCS" | PHP_INI_PERDIR | 在 PHP <= 5.0.5 时是 PHP_INI_ALL。
request_order | "" | PHP_INI_PERDIR | 从 PHP 5.3.0 起可用
auto_globals_jit | "1" | PHP_INI_PERDIR | 从 PHP 5.0.0 起可用。
register_globals | "0" | PHP_INI_PERDIR | 在 PHP <= 4.2.3 时是 PHP_INI_ALL。 在 PHP 5.4.0 中移除该选项。
register_argc_argv | "1" | PHP_INI_PERDIR | 在 PHP <= 4.2.3 时是 PHP_INI_ALL。
register_long_arrays | "1" | PHP_INI_PERDIR | 从 PHP 5.0.0. Deprecated in PHP 5.3.0. Removed in PHP 5.4.0 起可用。
post_max_size | "8M" | PHP_INI_PERDIR | 在 PHP <= 4.2.3 时是 PHP_INI_SYSTEM。 从 PHP 4.0.3 起可用。
gpc_order | "GPC" | PHP_INI_ALL |
auto_prepend_file | NULL | PHP_INI_PERDIR | 在 PHP <= 4.2.3 时是 PHP_INI_ALL。
auto_append_file | NULL | PHP_INI_PERDIR | 在 PHP <= 4.2.3 时是 PHP_INI_ALL。
default_mimetype | "text/html" | PHP_INI_ALL |
default_charset | "" | PHP_INI_ALL |
always_populate_raw_post_data | "0" | PHP_INI_PERDIR | 在 PHP <= 4.2.3 时是 PHP_INI_ALL。 从 PHP 4.1.0 起可用。
allow_webdav_methods | "0" | PHP_INI_PERDIR |

这是配置指令的简短说明。

track_vars boolean

If enabled, then Environment, GET, POST, Cookie, and Server variables can be found in the global associative arrays $_ENV, $_GET, $_POST, $_COOKIE, and $_SERVER.

Note that as of PHP 4.0.3, track_vars is always turned on.

arg_separator.output string

The separator used in PHP generated URLs to separate arguments.

arg_separator.input string

List of separator(s) used by PHP to parse input URLs into variables.

Note:

Every character in this directive is considered as separator!

variables_order string

Sets the order of the EGPCS (Environment, Get, Post, Cookie, and Server) variable parsing. For example, if variables_order is set to "SP" then PHP will create the superglobals $_SERVER and $_POST, but not create $_ENV, $_GET, and $_COOKIE. Setting to "" means no superglobals will be set.

If the deprecated register_globals directive is on, then variables_order also configures the order the ENV, GET, POST, COOKIE and SERVER variables are populated in global scope. So for example if variables_order is set to "EGPCS", register_globals is enabled, and both $_GET['action'] and $_POST['action'] are set, then $action will contain the value of $_POST['action'] as P comes after G in our example directive value.

Warning

In both the CGI and FastCGI SAPIs, $_SERVER is also populated by values from the environment; S is always equivalent to ES regardless of the placement of E elsewhere in this directive.

Note:

The content and order of $_REQUEST is also affected by this directive.

request_order string

This directive describes the order in which PHP registers GET, POST and Cookie variables into the _REQUEST array. Registration is done from left to right, newer values override older values.

If this directive is not set, variables_order is used for $_REQUEST contents.

Note that the default distribution php.ini files does not contain the 'C' for cookies, due to security concerns.

auto_globals_jit boolean

When enabled, the SERVER and ENV variables are created when they're first used (Just In Time) instead of when the script starts. If these variables are not used within a script, having this directive on will result in a performance gain.

The PHP directives register_globals, register_long_arrays, and register_argc_argv must be disabled for this directive to have any affect. Since PHP 5.1.3 it is not necessary to have register_argc_argv disabled.

Warning

Usage of SERVER and ENV variables is checked during the compile time so using them through e.g. variable variables will not cause their initialization.

register_globals boolean

Whether or not to register the EGPCS (Environment, GET, POST, Cookie, Server) variables as global variables.

As of » PHP 4.2.0, this directive defaults to off.

Please read the security chapter on Using register_globals for related information.

Please note that register_globals cannot be set at runtime (ini_set()). Although, you can use .htaccess if your host allows it as described above. An example .htaccess entry: php_flag register_globals off.

Note:

register_globals is affected by the variables_order directive.

Warning

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

register_argc_argv boolean
Tells PHP whether to declare the argv & argc variables (that would contain the GET information). See also command line.
register_long_arrays boolean
Tells PHP whether or not to register the deprecated long $HTTP_*_VARS type predefined variables. When On (default), long predefined PHP variables like $HTTP_GET_VARS will be defined. If you're not using them, it's recommended to turn them off, for performance reasons. Instead, use the superglobal arrays, like $_GET. This directive became available in PHP 5.0.0.
Warning

本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。

enable_post_data_reading boolean
Disabling this option causes $_POST and $_FILES not to be populated. The only way to read postdata will then be through the php://input stream wrapper. This can be useful to proxy requests or to process the POST data in a memory efficient fashion.
post_max_size integer
Sets max size of post data allowed. This setting also affects file upload. To upload large files, this value must be larger than upload_max_filesize. If memory limit is enabled by your configure script, memory_limit also affects file uploading. Generally speaking, memory_limit should be larger than post_max_size. 当使用 integer 时, 其值以字节来衡量。还可以使用在FAQ中描述的速记符。 If the size of post data is greater than post_max_size, the $_POST and $_FILES superglobals are empty. This can be tracked in various ways, e.g. by passing the $_GET variable to the script processing the data, i.e. <form action="edit.php?processed=1">, and then checking if $_GET['processed'] is set.

Note:

PHP allows shortcuts for bit values, including K (kilo), M (mega) and G (giga). PHP will do the conversions automatically if you use any of these. Be careful not to exceed the 32 bit signed integer limit (if you're using 32bit versions) as it will cause your script to fail.

gpc_order string

Set the order of GET/POST/COOKIE variable parsing. The default setting of this directive is "GPC". Setting this to "GP", for example, will cause PHP to completely ignore cookies and to overwrite any GET method variables with POST-method variables of the same name.

Note:

This option is not available in PHP 4. Use variables_order instead.

auto_prepend_file string

Specifies the name of a file that is automatically parsed before the main file. The file is included as if it was called with the require function, so include_path is used.

The special value none disables auto-prepending.

auto_append_file string

Specifies the name of a file that is automatically parsed after the main file. The file is included as if it was called with the require function, so include_path is used.

The special value none disables auto-appending.

Note: If the script is terminated with exit(), auto-append will not occur.

default_mimetype string

default_charset string

PHP always outputs a character encoding by default in the Content-type: header. To disable sending of the charset, simply set it to be empty.

always_populate_raw_post_data boolean

Always populate the $HTTP_RAW_POST_DATA containing the raw POST data. Otherwise, the variable is populated only with unrecognized MIME type of the data. However, the preferred method for accessing the raw POST data is php://input. $HTTP_RAW_POST_DATA is not available with enctype="multipart/form-data".

allow_webdav_methods boolean

Allow handling of WebDAV http requests within PHP scripts (eg. PROPFIND, PROPPATCH, MOVE, COPY, etc.). This directive does not exist as of PHP 4.3.2. If you want to get the post data of those requests, you have to set always_populate_raw_post_data as well.

See also: magic_quotes_gpc, magic_quotes_runtime, and magic_quotes_sybase.

Paths and Directories

Paths and Directories Configuration Options
名字 | 默认 | 可修改范围 | 更新日志
include_path | ".;/path/to/php/pear" | PHP_INI_ALL |
open_basedir | NULL | PHP_INI_ALL | PHP_INI_SYSTEM in PHP < 5.3.0
doc_root | NULL | PHP_INI_SYSTEM |
user_dir | NULL | PHP_INI_SYSTEM |
extension_dir | "/path/to/php" | PHP_INI_SYSTEM |
extension | NULL | php.ini only |
zend_extension | NULL | php.ini only |
zend_extension_debug | NULL | php.ini only |
zend_extension_debug_ts | NULL | php.ini only |
zend_extension_ts | NULL | php.ini only |
cgi.check_shebang_line | "1" | PHP_INI_SYSTEM | 从 PHP 5.2.0 起可用。
cgi.fix_pathinfo | "1" | PHP_INI_SYSTEM | 从 PHP 4.3.0. PHP_INI_ALL prior to PHP 5.2.1 起可用。
cgi.force_redirect | "1" | PHP_INI_SYSTEM | 从 PHP 4.2.0. PHP_INI_ALL prior to PHP 5.2.1 起可用。
cgi.redirect_status_env | NULL | PHP_INI_SYSTEM | 从 PHP 4.2.0. PHP_INI_ALL prior to PHP 5.2.1 起可用。
cgi.rfc2616_headers | "0" | PHP_INI_ALL | 从 PHP 4.3.0 起可用。
fastcgi.impersonate | "0" | PHP_INI_SYSTEM | 从 PHP 4.3.0. PHP_INI_ALL prior to PHP 5.2.1 起可用。
fastcgi.logging | "1" | PHP_INI_SYSTEM | 从 PHP 4.3.0. PHP_INI_ALL prior to PHP 5.2.1 起可用。

这是配置指令的简短说明。

include_path string

Specifies a list of directories where the require, include, fopen(), file(), readfile() and file_get_contents() functions look for files. The format is like the system's PATH environment variable: a list of directories separated with a colon in Unix or semicolon in Windows.

PHP considers each entry in the include path separately when looking for files to include. It will check the first path, and if it doesn't find it, check the next path, until it either locates the included file or returns with a warning or an error. You may modify or set your include path at runtime using set_include_path().

Example #1 Unix include_path

include_path=".:/php/includes"

Example #2 Windows include_path

include_path=".;c:\php\includes"

Using a . in the include path allows for relative includes as it means the current directory. However, it is more efficient to explicitly use include './file' than having PHP always check the current directory for every include.

open_basedir string

将 PHP 所能打开的文件限制在指定的目录树，包括文件本身。本指令不受安全模式打开或者关闭的影响。

当一个脚本试图用例如 fopen() 或者 gzopen() 打开一个文件时，该文件的位置将被检查。当文件在指定的目录树之外时 PHP 将拒绝打开它。所有的符号连接都会被解析，所以不可能通过符号连接来避开此限制。

特殊值 . 指明脚本的工作目录将被作为基准目录。但这有些危险，因为脚本的工作目录可以轻易被 chdir() 而改变。

在 httpd.conf 文件中中，open_basedir 可以像其它任何配置选项一样用"php_admin_value open_basedir none"的方法关闭（例如某些虚拟主机中）。

在 Windows 中，用分号分隔目录。在任何其它系统中用冒号分隔目录。作为 Apache 模块时，父目录中的 open_basedir 路径自动被继承。

用 open_basedir 指定的限制实际上是前缀，不是目录名。也就是说"open_basedir = /dir/incl"也会允许访问"/dir/include"和"/dir/incls"，如果它们存在的话。如果要将访问限制在仅为指定的目录，用斜线结束路径名。例如："open_basedir = /dir/incl/"。

Note:

支持多个目录是 3.0.7 加入的。

默认是允许打开所有文件。

doc_root string

PHP's "root directory" on the server. Only used if non-empty. If PHP is configured with 安全模式, no files outside this directory are served. If PHP was not compiled with FORCE_REDIRECT, you should set doc_root if you are running PHP as a CGI under any web server (other than IIS). The alternative is to use the cgi.force_redirect configuration below.

user_dir string

The base name of the directory used on a user's home directory for PHP files, for example public_html .

extension_dir string

In what directory PHP should look for dynamically loadable extensions. See also: enable_dl, and dl().

extension string

Which dynamically loadable extensions to load when PHP starts up.

zend_extension string

Absolute path to dynamically loadable Zend extension (for example APD) to load when PHP starts up.

zend_extension_debug string

Variant of zend_extension for extensions compiled with debug info.

zend_extension_debug_ts string

Variant of zend_extension for extensions compiled with debug info and thread safety.

zend_extension_ts string

Variant of zend_extension for extensions compiled with thread safety.

cgi.check_shebang_line boolean

Controls whether CGI PHP checks for line starting with #! (shebang) at the top of the running script. This line might be needed if the script support running both as stand-alone script and via PHP CGI. PHP in CGI mode skips this line and ignores its content if this directive is turned on.

cgi.fix_pathinfo boolean

Provides real PATH_INFO/ PATH_TRANSLATED support for CGI. PHP's previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok what PATH_INFO is. For more information on PATH_INFO, see the CGI specs. Setting this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting of zero causes PHP to behave as before. It is turned on by default. You should fix your scripts to use SCRIPT_FILENAME rather than PATH_TRANSLATED.

cgi.force_redirect boolean

cgi.force_redirect is necessary to provide security running PHP as a CGI under most web servers. Left undefined, PHP turns this on by default. You can turn it off at your own risk.

Note:

Windows Users: When using IIS this option must be turned off. For OmniHTTPD or Xitami the same applies.

cgi.redirect_status_env string

If cgi.force_redirect is turned on, and you are not running under Apache or Netscape (iPlanet) web servers, you may need to set an environment variable name that PHP will look for to know it is OK to continue execution.

Note:

Setting this variable may cause security issues, know what you are doing first.

cgi.rfc2616_headers int

Tells PHP what type of headers to use when sending HTTP response code. If it's set 0, PHP sends a Status: header that is supported by Apache and other web servers. When this option is set to 1, PHP will send » RFC 2616 compliant headers. Leave it set to 0 unless you know what you're doing.

fastcgi.impersonate string

FastCGI under IIS (on WINNT based OS) supports the ability to impersonate security tokens of the calling client. This allows IIS to define the security context that the request runs under. mod_fastcgi under Apache does not currently support this feature (03/17/2002) Set to 1 if running under IIS. Default is zero.

fastcgi.logging boolean

Turns on SAPI logging when using FastCGI. Default is to enable logging.

File Uploads

File Uploads Configuration Options
名字 | 默认 | 可修改范围 | 更新日志
file_uploads | "1" | PHP_INI_SYSTEM | 在 PHP <= 4.2.3 时是 PHP_INI_ALL。 从 PHP 4.0.3 起可用。
upload_tmp_dir | NULL | PHP_INI_SYSTEM |
max_input_nesting_level | 64 | PHP_INI_PERDIR | 从 PHP 5.3.9 起可用。
max_input_vars | 1000 | PHP_INI_PERDIR | 从 PHP 5.3.9 起可用。
upload_max_filesize | "2M" | PHP_INI_PERDIR | 在 PHP <= 4.2.3 时是 PHP_INI_ALL。
max_file_uploads | 20 | PHP_INI_SYSTEM | 从 PHP 5.2.12 起可用。

这是配置指令的简短说明。

file_uploads boolean or integer

Whether or not to allow HTTP file uploads. See also the upload_max_filesize, upload_tmp_dir, and post_max_size directives.

当使用 integer 时, 其值以字节来衡量。还可以使用在FAQ中描述的速记符。
upload_tmp_dir string

The temporary directory used for storing files when doing file upload. Must be writable by whatever user PHP is running as. If not specified PHP will use the system's default.

If the directory specified here is not writable, PHP falls back to the system default temporary directory. If open_basedir is on, then the system default directory must be allowed for an upload to succeed.

upload_max_filesize integer

The maximum size of an uploaded file.

当使用 integer 时, 其值以字节来衡量。还可以使用在FAQ中描述的速记符。
max_file_uploads integer

The maximum number of files allowed to be uploaded simultaneously. Starting with PHP 5.3.4, upload fields left blank on submission do not count towards this limit.

General SQL

General SQL Configuration Options
名字 | 默认 | 可修改范围 | 更新日志
sql.safe_mode | "0" | PHP_INI_SYSTEM |

这是配置指令的简短说明。

sql.safe_mode boolean

If turned on, database connect functions that specify default values will use those values in place of supplied arguments. For default values see connect function documentation for the relevant database.

Windows Specific

Windows Specific Configuration Options
名字 | 默认 | 可修改范围 | 更新日志
windows_show_crt_warning | "0" | PHP_INI_ALL | 从 PHP 5.4.0 起可用。

这是配置指令的简短说明。

windows_show_crt_warning boolean

This directive shows the Windows CRT warnings when enabled. These warnings were displayed by default until PHP 5.4.0.

php.ini 配置段列表
扩展库列表／归类
php.ini 配置


扩展库列表／归类

Table of Contents

  • 按字母顺序
  • 按归属分
  • 按状态分

本附录将 PHP 手册中的 150 多个扩展库以不同标准分类。

php.ini 核心配置选项说明
按字母顺序
附录


按字母顺序

  • Apache
  • APC
  • APCu
  • APD
  • 数组
  • BBCode
  • BC Math
  • bcompiler
  • BLENC
  • Bzip2
  • Cairo
  • Calendar
  • chdb
  • Classkit
  • 类/对象
  • COM
  • Crack
  • CSPRNG
  • Ctype
  • CUBRID
  • cURL
  • Cyrus
  • 日期/时间
  • DBA
  • dBase
  • DB++
  • dbx
  • Direct IO
  • 目录
  • DOM
  • Data Structures
  • Eio
  • Enchant
  • 错误处理
  • Ev
  • Event
  • 程序执行
  • Exif
  • Expect
  • FAM
  • FANN
  • FrontBase
  • FDF
  • Fileinfo
  • filePro
  • Filesystem
  • Filter
  • FastCGI 进程管理器
  • FriBiDi
  • FTP
  • Function Handling
  • Gearman
  • Gender
  • GeoIP
  • Gettext
  • Gmagick
  • GMP
  • GnuPG
  • Gupnp
  • haru
  • Hash
  • HRTime
  • htscanner
  • Hyperwave API
  • Firebird/InterBase
  • IBM DB2
  • iconv
  • ID3
  • Informix
  • IIS
  • GD
  • ImageMagick
  • IMAP
  • inclued
  • PHP 选项/信息
  • Ingres
  • Inotify
  • intl
  • JSON
  • Judy
  • KADM5
  • KTaglib
  • Lapack
  • LDAP
  • Libevent
  • libxml
  • Lua
  • LZF
  • Mail
  • Mailparse
  • Math
  • MaxDB
  • 多字节字符串
  • Mcrypt
  • MCVE
  • Memcache
  • Memcached
  • Memtrack
  • Mhash
  • Mimetype
  • Ming
  • Misc.
  • mnoGoSearch
  • Mongo
  • MongoDB\Driver
  • mqseries
  • Msession
  • mSQL
  • Mssql
  • Mysql（原始）
  • Mysqli
  • Mysqlnd
  • mysqlnd_memcache
  • mysqlnd_ms
  • mysqlnd_mux
  • mysqlnd_qc
  • mysqlnd_uh
  • Ncurses
  • Gopher
  • 网络
  • Newt
  • YP/NIS
  • NSAPI
  • OAuth
  • OCI8
  • oggvorbis
  • OPcache
  • OpenAL
  • OpenSSL
  • 输出控制
  • Paradox
  • Parsekit
  • Password Hashing
  • PCNTL
  • PCRE
  • PDF
  • PDO
  • 4D (PDO)
  • CUBRID (PDO)
  • MS SQL Server (PDO)
  • Firebird (PDO)
  • IBM (PDO)
  • Informix (PDO)
  • MySQL (PDO)
  • Oracle (PDO)
  • ODBC and DB2 (PDO)
  • PostgreSQL (PDO)
  • SQLite (PDO)
  • MS SQL Server (PDO)
  • PostgreSQL
  • Phar
  • POSIX
  • Proctitle
  • PS
  • Pspell
  • pthreads
  • Quickhash
  • Radius
  • Rar
  • Readline
  • Recode
  • 反射
  • POSIX Regex
  • RPM Reader
  • RRD
  • runkit
  • SAM
  • SCA
  • scream
  • SDO
  • SDO DAS XML
  • SDO-DAS-Relational
  • Semaphore
  • Sessions
  • Session PgSQL
  • Shared Memory
  • SimpleXML
  • SNMP
  • SOAP
  • Sockets
  • Solr
  • Sphinx
  • SPL
  • SPL Types
  • SQLite
  • SQLite3
  • SQLSRV
  • ssdeep
  • SSH2
  • Statistics
  • Stomp
  • Streams
  • 字符串
  • SVM
  • SVN
  • Swish
  • Sybase
  • Sync
  • Taint
  • TCP
  • Tidy
  • Tokenizer
  • tokyo_tyrant
  • Trader
  • UI
  • ODBC
  • uopz
  • URLs
  • V8js
  • Variable handling
  • Varnish
  • vpopmail
  • WDDX
  • Weakref
  • win32ps
  • win32service
  • WinCache
  • xattr
  • xdiff
  • Xhprof
  • XML 解析器
  • XMLReader
  • XML-RPC
  • XMLWriter
  • XSL
  • Yaf
  • Yaml
  • Yar
  • YAZ
  • Zip
  • Zlib
  • 0MQ消息系统
  • ZooKeeper
扩展库列表／归类
按归属分
扩展库列表／归类


按归属分

核心扩展库

以下并非真正的扩展库，它们属于 PHP 内核的一部分，不能通过编译选项将其排除。

  • 数组

  • 类/对象

  • 日期/时间

  • 目录

  • 错误处理

  • 程序执行

  • Filesystem

  • Filter

  • Function Handling

  • Hash

  • PHP 选项/信息

  • Mail

  • Math

  • Misc.

  • 网络

  • 输出控制

  • Password Hashing

  • Phar

  • 反射

  • POSIX Regex

  • Sessions

  • SPL

  • Streams

  • 字符串

  • Tokenizer

  • URLs

  • Variable handling

绑定的扩展库

以下扩展库绑定在 PHP 发行包中。

  • Apache

  • BC Math

  • Calendar

  • COM

  • Ctype

  • DBA

  • Exif

  • Fileinfo

  • FTP

  • iconv

  • GD

  • intl

  • JSON

  • 多字节字符串

  • NSAPI

  • PCNTL

  • PCRE

  • PDO

  • POSIX

  • Semaphore

  • Shared Memory

  • Sockets

  • SQLite3

  • XML-RPC

  • Zlib

外部扩展库

这些扩展库已经包含在PHP中但是需要编译它们才能使用，并且可能需要额外的扩展库。

  • Bzip2

  • cURL

  • dBase

  • DOM

  • Enchant

  • FrontBase

  • Gettext

  • GMP

  • Firebird/InterBase

  • Informix

  • IMAP

  • LDAP

  • libxml

  • Mcrypt

  • Mhash

  • mSQL

  • Mssql

  • Mysql（原始）

  • Mysqli

  • Mysqlnd

  • OCI8

  • OpenSSL

  • MS SQL Server (PDO)

  • Firebird (PDO)

  • MySQL (PDO)

  • Oracle (PDO)

  • ODBC and DB2 (PDO)

  • PostgreSQL (PDO)

  • SQLite (PDO)

  • PostgreSQL

  • Pspell

  • Readline

  • Recode

  • SimpleXML

  • SNMP

  • SOAP

  • Sybase

  • Tidy

  • ODBC

  • WDDX

  • XML 解析器

  • XMLReader

  • XMLWriter

  • XSL

  • Zip

PECL 扩展库

以下扩展来自 » PECL，它们可能需要额外的库。还有更多的 PECL 扩展存在，但是在 PHP 手册中尚未有文档。

  • APC

  • APD

  • BBCode

  • bcompiler

  • Cairo

  • chdb

  • Classkit

  • Crack

  • CUBRID

  • Cyrus

  • DB++

  • dbx

  • Direct IO

  • Eio

  • Ev

  • Event

  • Expect

  • FAM

  • FDF

  • filePro

  • FriBiDi

  • Gearman

  • Gender

  • GeoIP

  • Gmagick

  • GnuPG

  • Gupnp

  • haru

  • htscanner

  • Hyperwave API

  • IBM DB2

  • ID3

  • IIS

  • ImageMagick

  • inclued

  • Ingres

  • Inotify

  • Judy

  • KADM5

  • KTaglib

  • Lapack

  • Libevent

  • Lua

  • LZF

  • Mailparse

  • MaxDB

  • MCVE

  • Memcache

  • Memcached

  • Memtrack

  • Mimetype

  • Ming

  • mnoGoSearch

  • Mongo

  • mqseries

  • Msession

  • mysqlnd_memcache

  • mysqlnd_ms

  • mysqlnd_mux

  • mysqlnd_qc

  • mysqlnd_uh

  • Ncurses

  • Gopher

  • Newt

  • YP/NIS

  • OAuth

  • oggvorbis

  • OpenAL

  • Paradox

  • Parsekit

  • PDF

  • 4D (PDO)

  • CUBRID (PDO)

  • IBM (PDO)

  • Informix (PDO)

  • MS SQL Server (PDO)

  • Proctitle

  • PS

  • pthreads

  • Quickhash

  • Radius

  • Rar

  • RPM Reader

  • RRD

  • runkit

  • SAM

  • SCA

  • scream

  • SDO

  • SDO DAS XML

  • SDO-DAS-Relational

  • Session PgSQL

  • Solr

  • Sphinx

  • SPL Types

  • SQLite

  • SQLSRV

  • ssdeep

  • SSH2

  • Statistics

  • Stomp

  • SVM

  • SVN

  • Swish

  • Taint

  • TCP

  • tokyo_tyrant

  • Trader

  • V8js

  • Varnish

  • vpopmail

  • Weakref

  • win32ps

  • win32service

  • WinCache

  • xattr

  • xdiff

  • Xhprof

  • Yaf

  • Yaml

  • YAZ

  • ZooKeeper

按字母顺序
按状态分
扩展库列表／归类


按状态分

此部分所列出的扩展项不适用于生产环境――它们要么太老（已废弃），要么太新（试验中）。

已废弃的扩展库

以下扩展库已被废弃，通常有其他的扩展库替代。

  • Memtrack

  • Mimetype

试验中的扩展库

以下扩展库的行为――包括其函数的名称和所记载的有关此扩展库的其它任何东西――可能没有任何通知就在 PHP 的未来版本中进行变更。使用这些扩展时风险自担。

  • bcompiler

  • DB++

  • haru

  • Hash

  • ImageMagick

  • Ming

  • Ncurses

  • Newt

  • Paradox

  • MS SQL Server (PDO)

  • Firebird (PDO)

  • Oracle (PDO)

  • PS

  • SCA

  • SDO-DAS-Relational

  • Swish

  • vpopmail

  • XML-RPC

按归属分
函数别名列表
扩展库列表／归类


函数别名列表

这里是函数别名列表，所有的别名列表如下。通常使用别名并不是一个好主意，这是因为它可能会废弃不用或者重新定义。这会导致不可移植脚本的出现。本列表是为了帮助想要升级他们旧有脚本到新版本语法的开发人员。很多 PHP 函数都有一个别名，可以用别名调用它。在某些情况下，两个名称都非常合适，无从取舍，is_int() 和 is_integer() 就是一个很好的例子。而有些情况则是，由于内部 API 的清理或其它一些原因，函数名被修改，但是老的名称保留了下来，以确保向后兼容性。使用这种别名通常不是个好主意，因为这种别名可能会被完全废弃或更名，导致脚本难以移植到新版本的 PHP 上。我们提供了本列表，来帮助那些要升级旧程序到更新语法的人。

别名列表
别名 | 主函数 | 使用的扩展模块
_ | gettext() | Gettext
add | swfmovie_add() | Ming (flash)
add | swfsprite_add() | Ming (flash)
add_root | domxml_add_root() |
addaction | swfbutton_addAction() | Ming (flash)
addcolor | swfdisplayitem_addColor() | Ming (flash)
addentry | swfgradient_addEntry() | Ming (flash)
addfill | swfshape_addfill() | Ming (flash)
addshape | swfbutton_addShape() | Ming (flash)
addstring | swftext_addString() | Ming (flash)
addstring | swftextfield_addString() | Ming (flash)
align | swftextfield_align() | Ming (flash)
attributes | domxml_attributes() |
children | domxml_children() |
chop | rtrim() | 基本语法
close | closedir() | 基本语法
com_get | com_propget() | COM
com_propset | com_propput() | COM
com_set | com_propput() | COM
die | exit() | 杂类函数
dir | getdir() | 基本语法
diskfreespace | disk_free_space() | 文件系统函数
domxml_getattr | domxml_get_attribute() |
domxml_setattr | domxml_set_attribute() |
doubleval | floatval() | 基本语法
drawarc | swfshape_drawarc() | Ming (flash)
drawcircle | swfshape_drawcircle() | Ming (flash)
drawcubic | swfshape_drawcubic() | Ming (flash)
drawcubicto | swfshape_drawcubicto() | Ming (flash)
drawcurve | swfshape_drawcurve() | Ming (flash)
drawcurveto | swfshape_drawcurveto() | Ming (flash)
drawglyph | swfshape_drawglyph() | Ming (flash)
drawline | swfshape_drawline() | Ming (flash)
drawlineto | swfshape_drawlineto() | Ming (flash)
dtd | domxml_intdtd() |
dumpmem | domxml_dumpmem() |
fbsql | fbsql_db_query() | FrontBase
fputs | fwrite() | 基本语法
get_attribute | domxml_get_attribute() |
getascent | swffont_getAscent() | Ming (flash)
getascent | swftext_getAscent() | Ming (flash)
getattr | domxml_get_attribute() |
getdescent | swffont_getDescent() | Ming (flash)
getdescent | swftext_getDescent() | Ming (flash)
getheight | swfbitmap_getHeight() | Ming (flash)
getleading | swffont_getLeading() | Ming (flash)
getleading | swftext_getLeading() | Ming (flash)
getshape1 | swfmorph_getShape1() | Ming (flash)
getshape2 | swfmorph_getShape2() | Ming (flash)
getwidth | swfbitmap_getWidth() | Ming (flash)
getwidth | swffont_getWidth() | Ming (flash)
getwidth | swftext_getWidth() | Ming (flash)
gzputs | gzwrite() | Zlib
i18n_convert | mb_convert_encoding() | 多字节字符串函数
i18n_discover_encoding | mb_detect_encoding() | 多字节字符串函数
i18n_http_input | mb_http_input() | 多字节字符串函数
i18n_http_output | mb_http_output() | 多字节字符串函数
i18n_internal_encoding | mb_internal_encoding() | 多字节字符串函数
i18n_ja_jp_hantozen | mb_convert_kana() | 多字节字符串函数
i18n_mime_header_decode | mb_decode_mimeheader() | 多字节字符串函数
i18n_mime_header_encode | mb_encode_mimeheader() | 多字节字符串函数
imap_create | imap_createmailbox() | IMAP
imap_fetchtext | imap_body() | IMAP
imap_getmailboxes | imap_list_full() | IMAP
imap_getsubscribed | imap_lsub_full() | IMAP
imap_header | imap_headerinfo() | IMAP
imap_listmailbox | imap_list() | IMAP
imap_listsubscribed | imap_lsub() | IMAP
imap_rename | imap_renamemailbox() | IMAP
imap_scan | imap_listscan() | IMAP
imap_scanmailbox | imap_listscan() | IMAP
ini_alter | ini_set() | 基本语法
is_double | is_float() | 基本语法
is_integer | is_int() | 基本语法
is_long | is_int() | 基本语法
is_real | is_float() | 基本语法
is_writeable | is_writable() | 基本语法
join | implode() | 基本语法
key_exists | array_key_exists() | 基本语法
labelframe | swfmovie_labelFrame() | Ming (flash)
labelframe | swfsprite_labelFrame() | Ming (flash)
last_child | domxml_last_child() |
lastchild | domxml_last_child() |
ldap_close | ldap_unbind() | LDAP
magic_quotes_runtime | set_magic_quotes_runtime() | 基本语法
mbstrcut | mb_strcut() | 多字节字符串函数
mbstrlen | mb_strlen() | 多字节字符串函数
mbstrpos | mb_strpos() | 多字节字符串函数
mbstrrpos | mb_strrpos() | 多字节字符串函数
mbsubstr | mb_substr() | 多字节字符串函数
ming_setcubicthreshold | ming_setCubicThreshold() | Ming (flash)
ming_setscale | ming_setScale() | Ming (flash)
move | swfdisplayitem_move() | Ming (flash)
movepen | swfshape_movepen() | Ming (flash)
movepento | swfshape_movepento() | Ming (flash)
moveto | swfdisplayitem_moveTo() | Ming (flash)
moveto | swffill_moveTo() | Ming (flash)
moveto | swftext_moveTo() | Ming (flash)
msql | msql_db_query() | mSQL
msql_createdb | msql_create_db() | mSQL
msql_dbname | msql_result() | mSQL
msql_dropdb | msql_drop_db() | mSQL
msql_fieldflags | msql_field_flags() | mSQL
msql_fieldlen | msql_field_len() | mSQL
msql_fieldname | msql_field_name() | mSQL
msql_fieldtable | msql_field_table() | mSQL
msql_fieldtype | msql_field_type() | mSQL
msql_freeresult | msql_free_result() | mSQL
msql_listdbs | msql_list_dbs() | mSQL
msql_listfields | msql_list_fields() | mSQL
msql_listtables | msql_list_tables() | mSQL
msql_numfields | msql_num_fields() | mSQL
msql_numrows | msql_num_rows() | mSQL
msql_regcase | sql_regcase() | mSQL
msql_selectdb | msql_select_db() | mSQL
msql_tablename | msql_result() | mSQL
mssql_affected_rows | sybase_affected_rows() | Sybase
mssql_affected_rows | sybase_affected_rows() | Sybase
mssql_close | sybase_close() | Sybase
mssql_close | sybase_close() | Sybase
mssql_connect | sybase_connect() | Sybase
mssql_connect | sybase_connect() | Sybase
mssql_data_seek | sybase_data_seek() | Sybase
mssql_data_seek | sybase_data_seek() | Sybase
mssql_fetch_array | sybase_fetch_array() | Sybase
mssql_fetch_array | sybase_fetch_array() | Sybase
mssql_fetch_field | sybase_fetch_field() | Sybase
mssql_fetch_field | sybase_fetch_field() | Sybase
mssql_fetch_object | sybase_fetch_object() | Sybase
mssql_fetch_object | sybase_fetch_object() | Sybase
mssql_fetch_row | sybase_fetch_row() | Sybase
mssql_fetch_row | sybase_fetch_row() | Sybase
mssql_field_seek | sybase_field_seek() | Sybase
mssql_field_seek | sybase_field_seek() | Sybase
mssql_free_result | sybase_free_result() | Sybase
mssql_free_result | sybase_free_result() | Sybase
mssql_get_last_message | sybase_get_last_message() | Sybase
mssql_get_last_message | sybase_get_last_message() | Sybase
mssql_min_client_severity | sybase_min_client_severity() | Sybase
mssql_min_error_severity | sybase_min_error_severity() | Sybase
mssql_min_message_severity | sybase_min_message_severity() | Sybase
mssql_min_server_severity | sybase_min_server_severity() | Sybase
mssql_num_fields | sybase_num_fields() | Sybase
mssql_num_fields | sybase_num_fields() | Sybase
mssql_num_rows | sybase_num_rows() | Sybase
mssql_num_rows | sybase_num_rows() | Sybase
mssql_pconnect | sybase_pconnect() | Sybase
mssql_pconnect | sybase_pconnect() | Sybase
mssql_query | sybase_query() | Sybase
mssql_query | sybase_query() | Sybase
mssql_result | sybase_result() | Sybase
mssql_result | sybase_result() | Sybase
mssql_select_db | sybase_select_db() | Sybase
mssql_select_db | sybase_select_db() | Sybase
multcolor | swfdisplayitem_multColor() | Ming (flash)
mysql | mysql_db_query() | MySQL
mysql_createdb | mysql_create_db() | MySQL
mysql_db_name | mysql_result() | MySQL
mysql_dbname | mysql_result() | MySQL
mysql_dropdb | mysql_drop_db() | MySQL
mysql_fieldflags | mysql_field_flags() | MySQL
mysql_fieldlen | mysql_field_len() | MySQL
mysql_fieldname | mysql_field_name() | MySQL
mysql_fieldtable | mysql_field_table() | MySQL
mysql_fieldtype | mysql_field_type() | MySQL
mysql_freeresult | mysql_free_result() | MySQL
mysql_listdbs | mysql_list_dbs() | MySQL
mysql_listfields | mysql_list_fields() | MySQL
mysql_listtables | mysql_list_tables() | MySQL
mysql_numfields | mysql_num_fields() | MySQL
mysql_numrows | mysql_num_rows() | MySQL
mysql_selectdb | mysql_select_db() | MySQL
mysql_tablename | mysql_result() | MySQL
name | domxml_attrname() |
new_child | domxml_new_child() |
new_xmldoc | domxml_new_xmldoc() |
nextframe | swfmovie_nextFrame() | Ming (flash)
nextframe | swfsprite_nextFrame() | Ming (flash)
node | domxml_node() |
ociassignelem | OCI-Collection::assignElem | OCI8
ocibindbyname | oci_bind_by_name() | OCI8
ocicancel | oci_cancel() | OCI8
ocicloselob | OCI-Lob::close | OCI8
ocicollappend | OCI-Collection::append | OCI8
ocicollassign | OCI-Collection::assign | OCI8
ocicollmax | OCI-Collection::max | OCI8
ocicollsize | OCI-Collection::size | OCI8
ocicolltrim | OCI-Collection::trim | OCI8
ocicolumnisnull | oci_field_is_null() | OCI8
ocicolumnname | oci_field_name() | OCI8
ocicolumnprecision | oci_field_precision() | OCI8
ocicolumnscale | oci_field_scale() | OCI8
ocicolumnsize | oci_field_size() | OCI8
ocicolumntype | oci_field_type() | OCI8
ocicolumntyperaw | oci_field_type_raw() | OCI8
ocicommit | oci_commit() | OCI8
ocidefinebyname | oci_define_by_name() | OCI8
ocierror | oci_error() | OCI8
ociexecute | oci_execute() | OCI8
ocifetch | oci_fetch() | OCI8
ocifetchinto | oci_fetch_array(), oci_fetch_row(), oci_fetch_assoc(), oci_fetch_object() | OCI8
ocifetchstatement | oci_fetch_all() | OCI8
ocifreecollection | OCI-Collection::free | OCI8
ocifreecursor | oci_free_statement() | OCI8
ocifreedesc | oci_free_descriptor() | OCI8
ocifreestatement | oci_free_statement() | OCI8
ocigetelem | OCI-Collection::getElem | OCI8
ociinternaldebug | oci_internal_debug() | OCI8
ociloadlob | OCI-Lob::load | OCI8
ocilogon | oci_connect() | OCI8
ocinewcollection | oci_new_collection() | OCI8
ocinewcursor | oci_new_cursor() | OCI8
ocinewdescriptor | oci_new_descriptor() | OCI8
ocinlogon | oci_new_connect() | OCI8
ocinumcols | oci_num_fields() | OCI8
ociparse | oci_parse() | OCI8
ocipasswordchange | oci_password_change() | OCI8
ociplogon | oci_pconnect() | OCI8
ociresult | oci_result() | OCI8
ocirollback | oci_rollback() | OCI8
ocisavelob | OCI-Lob::save | OCI8
ocisavelobfile | OCI-Lob::import | OCI8
ociserverversion | oci_server_version() | OCI8
ocisetprefetch | oci_set_prefetch() | OCI8
ocistatementtype | oci_statement_type() | OCI8
ociwritelobtofile | OCI-Lob::export | OCI8
ociwritetemporarylob | OCI-Lob::writeTemporary | OCI8
odbc_do | odbc_exec() | ODBC
odbc_field_precision | odbc_field_len() | ODBC
output | swfmovie_output() | Ming (flash)
parent | domxml_parent() |
pdf_add_outline | pdf_add_bookmark() | PDF
pg_clientencoding | pg_client_encoding() | PostgreSQL
pg_setclientencoding | pg_set_client_encoding() | PostgreSQL
pos | current() | 基本语法
recode | recode_string() | Recode
remove | swfmovie_remove() | Ming (flash)
remove | swfsprite_remove() | Ming (flash)
rewind | rewinddir() | 基本语法
root | domxml_root() |
rotate | swfdisplayitem_rotate() | Ming (flash)
rotateto | swfdisplayitem_rotateTo() | Ming (flash)
rotateto | swffill_rotateTo() | Ming (flash)
save | swfmovie_save() | Ming (flash)
savetofile | swfmovie_saveToFile() | Ming (flash)
scale | swfdisplayitem_scale() | Ming (flash)
scaleto | swfdisplayitem_scaleTo() | Ming (flash)
scaleto | swffill_scaleTo() | Ming (flash)
set_attribute | domxml_set_attribute() |
set_content | domxml_set_content() |
setaction | swfbutton_setAction() | Ming (flash)
setattr | domxml_set_attribute() |
setbackground | swfmovie_setBackground() | Ming (flash)
setbounds | swftextfield_setBounds() | Ming (flash)
setcolor | swftext_setColor() | Ming (flash)
setcolor | swftextfield_setColor() | Ming (flash)
setdepth | swfdisplayitem_setDepth() | Ming (flash)
setdimension | swfmovie_setDimension() | Ming (flash)
setdown | swfbutton_setDown() | Ming (flash)
setfont | swftext_setFont() | Ming (flash)
setfont | swftextfield_setFont() | Ming (flash)
setframes | swfmovie_setFrames() | Ming (flash)
setframes | swfsprite_setFrames() | Ming (flash)
setheight | swftext_setHeight() | Ming (flash)
setheight | swftextfield_setHeight() | Ming (flash)
sethit | swfbutton_setHit() | Ming (flash)
setindentation | swftextfield_setIndentation() | Ming (flash)
setleftfill | swfshape_setleftfill() | Ming (flash)
setleftmargin | swftextfield_setLeftMargin() | Ming (flash)
setline | swfshape_setline() | Ming (flash)
setlinespacing | swftextfield_setLineSpacing() | Ming (flash)
setmargins | swftextfield_setMargins() | Ming (flash)
setmatrix | swfdisplayitem_setMatrix() | Ming (flash)
setname | swfdisplayitem_setName() | Ming (flash)
setname | swftextfield_setName() | Ming (flash)
setover | swfbutton_setOver() | Ming (flash)
setrate | swfmovie_setRate() | Ming (flash)
setratio | swfdisplayitem_setRatio() | Ming (flash)
setrightfill | swfshape_setrightfill() | Ming (flash)
setrightmargin | swftextfield_setRightMargin() | Ming (flash)
setspacing | swftext_setSpacing() | Ming (flash)
setup | swfbutton_setUp() | Ming (flash)
show_source | highlight_file () | 基本语法
sizeof | count() | 基本语法
skewx | swfdisplayitem_skewX() | Ming (flash)
skewxto | swfdisplayitem_skewXTo() | Ming (flash)
skewxto | swffill_skewXTo() | Ming (flash)
skewy | swfdisplayitem_skewY() | Ming (flash)
skewyto | swfdisplayitem_skewYTo() | Ming (flash)
skewyto | swffill_skewYTo() | Ming (flash)
snmpwalkoid | snmprealwalk() | SNMP
strchr | strstr() | 基本语法
streammp3 | swfmovie_streamMp3() | Ming (flash)
swfaction | swfaction_init() | Ming (flash)
swfbitmap | swfbitmap_init() | Ming (flash)
swfbutton | swfbutton_init() | Ming (flash)
swffill | swffill_init() | Ming (flash)
swffont | swffont_init() | Ming (flash)
swfgradient | swfgradient_init() | Ming (flash)
swfmorph | swfmorph_init() | Ming (flash)
swfmovie | swfmovie_init() | Ming (flash)
swfshape | swfshape_init() | Ming (flash)
swfsprite | swfsprite_init() | Ming (flash)
swftext | swftext_init() | Ming (flash)
swftextfield | swftextfield_init() | Ming (flash)
unlink | domxml_unlink_node() |
xptr_new_context | xpath_new_context() |

按状态分
保留字列表
附录


保留字列表

Table of Contents

  • 关键词列表
  • 预定义类
  • 预定义常量
  • 其他保留字列表

以下是 PHP 中预定义标识符的列表。没有列在下面的标识符可以在脚本中作为自定义标识符使用。这些列表包括关键字和预定义变量、常量和类名。这些列表可能有遗漏，它是不完整的。

函数别名列表
关键词列表
附录


关键词列表

这些词语在 PHP 中有着特殊的意义。它们中有些像是函数，有些像是常量......但是它们不是的，它们只是语言结构的一部分。不能使用它们的任何一个作为常量、方法名或是类名。但是可以将它们作为变量名使用，不过这样会导致混淆。

从PHP7.0.0开始这些关键字允许被用作类的属性、常量以及类的方法名，或者接口名和traints名，除了class不能被用作常量名。

PHP 关键词
__halt_compiler() | abstract | and | array() | as
break | callable (as of PHP 5.4) | case | catch | class
clone | const | continue | declare | default
die() | do | echo | else | elseif
empty() | enddeclare | endfor | endforeach | endif
endswitch | endwhile | eval() | exit() | extends
final | finally (从PHP 5.5开始) | for | foreach | function
global | goto (从PHP 5.3开始) | if | implements | include
include_once | instanceof | insteadof (从PHP 5.4开始) | interface | isset()
list() | namespace (从PHP 5.3开始) | new | or | print
private | protected | public | require | require_once
return | static | switch | throw | trait (从PHP 5.4开始)
try | unset() | use | var | while
xor | yield (从PHP 5.5开始) |  |  |
编译时常量
__CLASS__ | __DIR__ (从PHP 5.3开始) | __FILE__ | __FUNCTION__ | __LINE__ | __METHOD__
__NAMESPACE__ (从PHP 5.3开始) | __TRAIT__ (从PHP 5.4开始) |  |  |  |
保留字列表
预定义类
保留字列表


预定义类

本节列出标准的预定义类。各种扩展库定义了其它类，其说明在各自的参考文档中。

标准类

这些类由一些内建在 PHP 中的标准函数定义。

Directory
由dir()创建.
stdClass
Created by typecasting to object.
__PHP_Incomplete_Class
Possibly created by unserialize().

自 PHP 5 起预定义的类

这些额外的预定义类是 PHP 5.0.0 引进的。

exception
ErrorException
Available since PHP 5.1.0.
php_user_filter

Closure

PHP5.3.0中引入了一个预定义的final类Closure，它可以用于实现 匿名函数

关于更多信息，可以查看匿名函数.

Generator

The predefined final class Generator was introduced in PHP 5.5.0. It is used for representing generators.

For more information, see its class page.

从PHP 7开始预定义的类和接口

这些预定义的类和接口是在PHP 7.0.0 中开始引入的。

ArithmeticError
AssertionError
DivisionByZeroError
Error
Throwable
ParseError
TypeError

特殊的类

以下这些标识符由于它们有特殊的用处，因此不可作为类名

self
Current class.
static
Current class in runtime.
parent
Parent class.
关键词列表
预定义常量
保留字列表


预定义常量

内核预定义常量

这些常量在 PHP 的内核中定义。它包含 PHP、Zend 引擎和 SAPI 模块。

PHP_VERSION (string)
PHP_OS (string)
PHP_SAPI (string)
自 PHP 4.2.0 起可用。参见 php_sapi_name()。
PHP_EOL (string)
自 PHP 4.3.10 和 PHP 5.0.2 起可用
PHP_INT_MAX (integer)
自 PHP 4.4.0 和 PHP 5.0.5 起可用
PHP_INT_SIZE (integer)
自 PHP 4.4.0 和 PHP 5.0.5 起可用
DEFAULT_INCLUDE_PATH (string)
PEAR_INSTALL_DIR (string)
PEAR_EXTENSION_DIR (string)
PHP_EXTENSION_DIR (string)
PHP_PREFIX (string)
自 PHP 4.3.0 起可用
PHP_BINDIR (string)
PHP_LIBDIR (string)
PHP_DATADIR (string)
PHP_SYSCONFDIR (string)
PHP_LOCALSTATEDIR (string)
PHP_CONFIG_FILE_PATH (string)
PHP_CONFIG_FILE_SCAN_DIR (string)
PHP_SHLIB_SUFFIX (string)
自 PHP 4.3.0 起可用
PHP_OUTPUT_HANDLER_START (integer)
PHP_OUTPUT_HANDLER_CONT (integer)
PHP_OUTPUT_HANDLER_END (integer)
E_ERROR (integer)
E_WARNING (integer)
E_PARSE (integer)
E_NOTICE (integer)
E_CORE_ERROR (integer)
E_CORE_WARNING (integer)
E_COMPILE_ERROR (integer)
E_COMPILE_WARNING (integer)
E_USER_ERROR (integer)
E_USER_WARNING (integer)
E_USER_NOTICE (integer)
E_ALL (integer)
E_STRICT (integer)
从 PHP 5.0.0 起有效
__COMPILER_HALT_OFFSET__ (integer)
自 PHP 5.1.0 起有效

参见魔术常量。

标准预定义常量

这些常量是 PHP 默认定义的。

EXTR_OVERWRITE (integer)
EXTR_SKIP (integer)
EXTR_PREFIX_SAME (integer)
EXTR_PREFIX_ALL (integer)
EXTR_PREFIX_INVALID (integer)
EXTR_PREFIX_IF_EXISTS (integer)
EXTR_IF_EXISTS (integer)
SORT_ASC (integer)
SORT_DESC (integer)
SORT_REGULAR (integer)
SORT_NUMERIC (integer)
SORT_STRING (integer)
CASE_LOWER (integer)
CASE_UPPER (integer)
COUNT_NORMAL (integer)
COUNT_RECURSIVE (integer)
ASSERT_ACTIVE (integer)
ASSERT_CALLBACK (integer)
ASSERT_BAIL (integer)
ASSERT_WARNING (integer)
ASSERT_QUIET_EVAL (integer)
CONNECTION_ABORTED (integer)
CONNECTION_NORMAL (integer)
CONNECTION_TIMEOUT (integer)
INI_USER (integer)
INI_PERDIR (integer)
INI_SYSTEM (integer)
INI_ALL (integer)
M_E (float)
M_LOG2E (float)
M_LOG10E (float)
M_LN2 (float)
M_LN10 (float)
M_PI (float)
M_PI_2 (float)
M_PI_4 (float)
M_1_PI (float)
M_2_PI (float)
M_2_SQRTPI (float)
M_SQRT2 (float)
M_SQRT1_2 (float)
CRYPT_SALT_LENGTH (integer)
CRYPT_STD_DES (integer)
CRYPT_EXT_DES (integer)
CRYPT_MD5 (integer)
CRYPT_BLOWFISH (integer)
DIRECTORY_SEPARATOR (string)
SEEK_SET (integer)
SEEK_CUR (integer)
SEEK_END (integer)
LOCK_SH (integer)
LOCK_EX (integer)
LOCK_UN (integer)
LOCK_NB (integer)
HTML_SPECIALCHARS (integer)
HTML_ENTITIES (integer)
ENT_COMPAT (integer)
ENT_QUOTES (integer)
ENT_NOQUOTES (integer)
INFO_GENERAL (integer)
INFO_CREDITS (integer)
INFO_CONFIGURATION (integer)
INFO_MODULES (integer)
INFO_ENVIRONMENT (integer)
INFO_VARIABLES (integer)
INFO_LICENSE (integer)
INFO_ALL (integer)
CREDITS_GROUP (integer)
CREDITS_GENERAL (integer)
CREDITS_SAPI (integer)
CREDITS_MODULES (integer)
CREDITS_DOCS (integer)
CREDITS_FULLPAGE (integer)
CREDITS_QA (integer)
CREDITS_ALL (integer)
STR_PAD_LEFT (integer)
STR_PAD_RIGHT (integer)
STR_PAD_BOTH (integer)
PATHINFO_DIRNAME (integer)
PATHINFO_BASENAME (integer)
PATHINFO_EXTENSION (integer)
PATH_SEPARATOR (string)
CHAR_MAX (integer)
LC_CTYPE (integer)
LC_NUMERIC (integer)
LC_TIME (integer)
LC_COLLATE (integer)
LC_MONETARY (integer)
LC_ALL (integer)
LC_MESSAGES (integer)
ABDAY_1 (integer)
ABDAY_2 (integer)
ABDAY_3 (integer)
ABDAY_4 (integer)
ABDAY_5 (integer)
ABDAY_6 (integer)
ABDAY_7 (integer)
DAY_1 (integer)
DAY_2 (integer)
DAY_3 (integer)
DAY_4 (integer)
DAY_5 (integer)
DAY_6 (integer)
DAY_7 (integer)
ABMON_1 (integer)
ABMON_2 (integer)
ABMON_3 (integer)
ABMON_4 (integer)
ABMON_5 (integer)
ABMON_6 (integer)
ABMON_7 (integer)
ABMON_8 (integer)
ABMON_9 (integer)
ABMON_10 (integer)
ABMON_11 (integer)
ABMON_12 (integer)
MON_1 (integer)
MON_2 (integer)
MON_3 (integer)
MON_4 (integer)
MON_5 (integer)
MON_6 (integer)
MON_7 (integer)
MON_8 (integer)
MON_9 (integer)
MON_10 (integer)
MON_11 (integer)
MON_12 (integer)
AM_STR (integer)
PM_STR (integer)
D_T_FMT (integer)
D_FMT (integer)
T_FMT (integer)
T_FMT_AMPM (integer)
ERA (integer)
ERA_YEAR (integer)
ERA_D_T_FMT (integer)
ERA_D_FMT (integer)
ERA_T_FMT (integer)
ALT_DIGITS (integer)
INT_CURR_SYMBOL (integer)
CURRENCY_SYMBOL (integer)
CRNCYSTR (integer)
MON_DECIMAL_POINT (integer)
MON_THOUSANDS_SEP (integer)
MON_GROUPING (integer)
POSITIVE_SIGN (integer)
NEGATIVE_SIGN (integer)
INT_FRAC_DIGITS (integer)
FRAC_DIGITS (integer)
P_CS_PRECEDES (integer)
P_SEP_BY_SPACE (integer)
N_CS_PRECEDES (integer)
N_SEP_BY_SPACE (integer)
P_SIGN_POSN (integer)
N_SIGN_POSN (integer)
DECIMAL_POINT (integer)
RADIXCHAR (integer)
THOUSANDS_SEP (integer)
THOUSEP (integer)
GROUPING (integer)
YESEXPR (integer)
NOEXPR (integer)
YESSTR (integer)
NOSTR (integer)
CODESET (integer)
LOG_EMERG (integer)
LOG_ALERT (integer)
LOG_CRIT (integer)
LOG_ERR (integer)
LOG_WARNING (integer)
LOG_NOTICE (integer)
LOG_INFO (integer)
LOG_DEBUG (integer)
LOG_KERN (integer)
LOG_USER (integer)
LOG_MAIL (integer)
LOG_DAEMON (integer)
LOG_AUTH (integer)
LOG_SYSLOG (integer)
LOG_LPR (integer)
LOG_NEWS (integer)
LOG_UUCP (integer)
LOG_CRON (integer)
LOG_AUTHPRIV (integer)
LOG_LOCAL0 (integer)
LOG_LOCAL1 (integer)
LOG_LOCAL2 (integer)
LOG_LOCAL3 (integer)
LOG_LOCAL4 (integer)
LOG_LOCAL5 (integer)
LOG_LOCAL6 (integer)
LOG_LOCAL7 (integer)
LOG_PID (integer)
LOG_CONS (integer)
LOG_ODELAY (integer)
LOG_NDELAY (integer)
LOG_NOWAIT (integer)
LOG_PERROR (integer)
预定义类
其他保留字列表
保留字列表


其他保留字列表

以下关键字不可被用于类名、接口名和trait名，并且它们被禁止用于命名空间。

Reserved words
int (从PHP 7开始) | float (从PHP 7开始) | bool (从PHP 7开始) | string (从PHP 7开始)
true (从PHP 7开始) | false (从PHP 7开始) | null (从PHP 7开始)

以下关键词已经被建议保留。尽管你仍然可以将它们用于类名、接口名和trait名（以及命名空间），但是考虑到在将来的PHP版本中可能会使用，因此非常不推荐去使用它们。

Soft reserved words
resource (从PHP 7开始) object (从PHP 7开始) mixed (从PHP 7开始) numeric (从PHP 7开始)

预定义常量
资源类型列表
保留字列表


资源类型列表

以下是一个建立，使用和销毁资源的函数列表。可以用 is_resource()函数测定一个变量是否是资源，函数 get_resource_type()则返回该资源的类型。

资源类型
资源类型名称 | 建立者 | 使用者 | 销毁者 | 定义
aspell | aspell_new() | aspell_check(), aspell_check_raw(), aspell_suggest() | None | Aspell dictionary
bzip2 | bzopen() | bzerrno(), bzerror(), bzerrstr(), bzflush(), bzread(), bzwrite() | bzclose() | Bzip2 file
COM | com_load() | com_invoke(), com_propget(), com_get(), com_propput(), com_set(), com_propput() | None | COM object reference
VARIANT
cpdf | cpdf_open() | cpdf_page_init(), cpdf_finalize_page(), cpdf_finalize(), cpdf_output_buffer(), cpdf_save_to_file(), cpdf_set_current_page(), cpdf_begin_text(), cpdf_end_text(), cpdf_show(), cpdf_show_xy(), cpdf_text(), cpdf_set_font(), cpdf_set_leading(), cpdf_set_text_rendering(), cpdf_set_horiz_scaling(), cpdf_set_text_rise(), cpdf_set_text_matrix(), cpdf_set_text_pos(), cpdf_set_text_pos(), cpdf_set_word_spacing(), cpdf_continue_text(), cpdf_stringwidth(), cpdf_save(), cpdf_translate(), cpdf_restore(), cpdf_scale(), cpdf_rotate(), cpdf_setflat(), cpdf_setlinejoin(), cpdf_setlinecap(), cpdf_setmiterlimit(), cpdf_setlinewidth(), cpdf_setdash(), cpdf_moveto(), cpdf_rmoveto(), cpdf_curveto(), cpdf_lineto(), cpdf_rlineto(), cpdf_circle(), cpdf_arc(), cpdf_rect(), cpdf_closepath(), cpdf_stroke(), cpdf_closepath_fill_stroke(), cpdf_fill_stroke(), cpdf_clip(), cpdf_fill(), cpdf_setgray_fill(), cpdf_setgray_stroke(), cpdf_setgray(), cpdf_setrgbcolor_fill(), cpdf_setrgbcolor_stroke(), cpdf_setrgbcolor(), cpdf_add_outline(), cpdf_set_page_animation(), cpdf_import_jpeg(), cpdf_place_inline_image(), cpdf_add_annotation() | cpdf_close() | PDF document with CPDF lib
cpdf outline
curl | curl_copy_handle(), curl_init() | curl_copy_handle(), curl_errno(), curl_error(), curl_exec(), curl_getinfo(), curl_setopt() | curl_close() | Curl session
dbm | dbmopen() | dbmexists(), dbmfetch(), dbminsert(), dbmreplace(), dbmdelete(), dbmfirstkey(), dbmnextkey() | dbmclose() | Link to DBM database
dba | dba_open() | dba_delete(), dba_exists(), dba_fetch(), dba_firstkey(), dba_insert(), dba_nextkey(), dba_optimize(), dba_replace(), dba_sync() | dba_close() | Link to DBA database
dba persistent | dba_popen() | dba_delete(), dba_exists(), dba_fetch(), dba_firstkey(), dba_insert(), dba_nextkey(), dba_optimize(), dba_replace(), dba_sync() | None | Persistent link to DBA database
dbase | dbase_open() | dbase_pack(), dbase_add_record(), dbase_replace_record(), dbase_delete_record(), dbase_get_record(), dbase_get_record_with_names(), dbase_numfields(), dbase_numrecords() | dbase_close() | Link to Dbase database
dbx_link_object | dbx_connect() | dbx_query() | dbx_close() | dbx connection
dbx_result_object | dbx_query() | None | dbx result
domxml attribute
domxml document
domxml node
xpath context
xpath object
fbsql link | fbsql_change_user(), fbsql_connect() | fbsql_autocommit(), fbsql_blob_size(), fbsql_clob_size(), fbsql_commit(), fbsql_change_user(), fbsql_create_blob(), fbsql_create_db(), fbsql_create_clob(), fbsql_data_seek(), fbsql_database_password(), fbsql_database(), fbsql_db_query(), fbsql_db_status(), fbsql_drop_db(), fbsql_errno(), fbsql_error(), fbsql_get_autostart_info(), fbsql_hostname(), fbsql_insert_id(), fbsql_list_dbs(), fbsql_password(), fbsql_read_blob(), fbsql_read_clob(), fbsql_rollback(), fbsql_select_db(), fbsql_set_password(), fbsql_set_transaction(), fbsql_start_db(), fbsql_stop_db(), fbsql_username() | fbsql_close() | Link to fbsql database
fbsql plink | fbsql_change_user(), fbsql_pconnect() | fbsql_autocommit(), fbsql_change_user(), fbsql_create_db(), fbsql_data_seek(), fbsql_db_query(), fbsql_drop_db(), fbsql_select_db(), fbsql_errno(), fbsql_error(), fbsql_insert_id(), fbsql_list_dbs() | None | Persistent link to fbsql database
fbsql result | fbsql_db_query(), fbsql_list_dbs(), fbsql_query(), fbsql_list_fields(), fbsql_list_tables(), fbsql_tablename() | fbsql_affected_rows(), fbsql_fetch_array(), fbsql_fetch_assoc(), fbsql_fetch_field(), fbsql_fetch_lengths(), fbsql_fetch_object(), fbsql_fetch_row(), fbsql_field_flags(), fbsql_field_name(), fbsql_field_len(), fbsql_field_seek(), fbsql_field_table(), fbsql_field_type(), fbsql_next_result(), fbsql_num_fields(), fbsql_num_rows(), fbsql_result(), fbsql_num_rows() | fbsql_free_result() | fbsql result
fdf | fdf_open() | fdf_create(), fdf_save(), fdf_get_value(), fdf_set_value(), fdf_next_field_name(), fdf_set_ap(), fdf_set_status(), fdf_get_status(), fdf_set_file(), fdf_get_file(), fdf_set_flags(), fdf_set_opt(), fdf_set_submit_form_action(), fdf_set_javascript_action() | fdf_close() | FDF File
ftp | ftp_connect(), ftp_ssl_connect() | ftp_login(), ftp_pwd(), ftp_cdup(), ftp_chdir(), ftp_mkdir(), ftp_rmdir(), ftp_nlist(), ftp_rawlist(), ftp_systype(), ftp_pasv(), ftp_get(), ftp_fget(), ftp_put(), ftp_fput(), ftp_size(), ftp_mdtm(), ftp_rename(), ftp_delete(), ftp_site(), ftp_alloc(), ftp_chmod(), ftp_exec(), ftp_get_option(), ftp_nb_continue(), ftp_nb_fget(), ftp_nb_fput(), ftp_nb_get(), ftp_nb_put(), ftp_raw(), ftp_set_option() | ftp_close() | FTP stream
gd | imagecreate(), imagecreatefromgd(), imagecreatefromgd2(), imagecreatefromgd2part(), imagecreatefromgif(), imagecreatefromjpeg(), imagecreatefrompng(), imagecreatefromwbmp(), imagecreatefromstring(), imagecreatefromxbm(), imagecreatefromxpm(), imagecreatetruecolor(), imagerotate() | imagearc(), imagechar(), imagecharup(), imagecolorallocate(), imagecolorat(), imagecolorclosest(), imagecolorexact(), imagecolorresolve(), imagegammacorrect(), imagegammacorrect(), imagecolorset(), imagecolorsforindex(), imagecolorstotal(), imagecolortransparent(), imagecopy(), imagecopyresized(), imagedashedline(), imagefill(), imagefilledpolygon(), imagefilledrectangle(), imagefilltoborder(), imagegif(), imagepng(), imagejpeg(), imagewbmp(), imageinterlace(), imageline(), imagepolygon(), imagepstext(), imagerectangle(), imagerotate(), imagesetpixel(), imagestring(), imagestringup(), imagesx(), imagesy(), imagettftext(), imagefilledarc(), imageellipse(), imagefilledellipse(), imagecolorclosestalpha(), imagecolorexactalpha(), imagecolorresolvealpha(), imagecopymerge(), imagecopymergegray(), imagecopyresampled(), imagetruecolortopalette(), imagesetbrush(), imagesettile(), imagesetthickness(), image2wbmp(), imagealphablending(), imageantialias(), imagecolorallocatealpha(), imagecolorclosesthwb(), imagecolordeallocate(), imagecolormatch(), imagefilter(), imagefttext(), imagegd(), imagegd2(), imageistruecolor(), imagelayereffect(), imagepalettecopy(), imagesavealpha(), imagesetstyle(), imagexbm() | imagedestroy() | GD Image
gd font | imageloadfont() | imagechar(), imagecharup(), imagefontheight() | None | Font for GD
gd PS encoding
gd PS font | imagepsloadfont() | imagepstext(), imagepsslantfont(), imagepsextendfont(), imagepsencodefont(), imagepsbbox() | imagepsfreefont() | PS font for GD
GMP integer | gmp_init() | gmp_intval(), gmp_strval(), gmp_add(), gmp_sub(), gmp_mul(), gmp_div_q(), gmp_div_r(), gmp_div_qr(), gmp_div(), gmp_mod(), gmp_divexact(), gmp_cmp(), gmp_neg(), gmp_abs(), gmp_sign(), gmp_fact(), gmp_sqrt(), gmp_sqrtrm(), gmp_perfect_square(), gmp_pow(), gmp_powm(), gmp_prob_prime(), gmp_gcd(), gmp_gcdext(), gmp_invert(), gmp_legendre(), gmp_jacobi(), gmp_random(), gmp_and(), gmp_or(), gmp_xor(), gmp_setbit(), gmp_clrbit(), gmp_scan0(), gmp_scan1(), gmp_popcount(), gmp_hamdist() | None | GMP Number
hyperwave document | hw_cp(), hw_docbyanchor(), hw_getremote(), hw_getremotechildren() | hw_children(), hw_childrenobj(), hw_getparents(), hw_getparentsobj(), hw_getchildcoll(), hw_getchildcollobj(), hw_getremote(), hw_getsrcbydestobj(), hw_getandlock(), hw_gettext(), hw_getobjectbyquerycoll(), hw_getobjectbyquerycollobj(), hw_getchilddoccoll(), hw_getchilddoccollobj(), hw_getanchors(), hw_getanchorsobj(), hw_inscoll(), hw_pipedocument(), hw_unlock() | hw_deleteobject() | Hyperwave object
hyperwave link | hw_connect() | hw_children(), hw_childrenobj(), hw_cp(), hw_deleteobject(), hw_docbyanchor(), hw_docbyanchorobj(), hw_errormsg(), hw_edittext(), hw_error(), hw_getparents(), hw_getparentsobj(), hw_getchildcoll(), hw_getchildcollobj(), hw_getremote(), hw_getremotechildren(), hw_getsrcbydestobj(), hw_getobject(), hw_getandlock(), hw_gettext(), hw_getobjectbyquery(), hw_getobjectbyqueryobj(), hw_getobjectbyquerycoll(), hw_getobjectbyquerycollobj(), hw_getchilddoccoll(), hw_getchilddoccollobj(), hw_getanchors(), hw_getanchorsobj(), hw_mv(), hw_incollections(), hw_info(), hw_inscoll(), hw_insdoc(), hw_insertdocument(), hw_insertobject(), hw_mapid(), hw_modifyobject(), hw_pipedocument(), hw_unlock(), hw_who(), hw_getusername() | hw_close(), hw_free_document() | Link to Hyperwave server
hyperwave link persistent | hw_pconnect() | hw_children(), hw_childrenobj(), hw_cp(), hw_deleteobject(), hw_docbyanchor(), hw_docbyanchorobj(), hw_errormsg(), hw_edittext(), hw_error(), hw_getparents(), hw_getparentsobj(), hw_getchildcoll(), hw_getchildcollobj(), hw_getremote(), hw_getremotechildren(), hw_getsrcbydestobj(), hw_getobject(), hw_getandlock(), hw_gettext(), hw_getobjectbyquery(), hw_getobjectbyqueryobj(), hw_getobjectbyquerycoll(), hw_getobjectbyquerycollobj(), hw_getchilddoccoll(), hw_getchilddoccollobj(), hw_getanchors(), hw_getanchorsobj(), hw_mv(), hw_incollections(), hw_info(), hw_inscoll(), hw_insdoc(), hw_insertdocument(), hw_insertobject(), hw_mapid(), hw_modifyobject(), hw_pipedocument(), hw_unlock(), hw_who(), hw_getusername() | None | Persistent link to Hyperwave server
icap | icap_open() | icap_fetch_event(), icap_list_events(), icap_store_event(), icap_snooze(), icap_list_alarms(), icap_delete_event() | icap_close() | Link to icap server
imap | imap_open() | imap_append(), imap_body(), imap_check(), imap_createmailbox(), imap_delete(), imap_deletemailbox(), imap_expunge(), imap_fetchbody(), imap_fetchstructure(), imap_headerinfo(), imap_header(), imap_headers(), imap_listmailbox(), imap_getmailboxes(), imap_get_quota(), imap_status(), imap_listsubscribed(), imap_set_quota(), imap_set_quota(), imap_getsubscribed(), imap_mail_copy(), imap_mail_move(), imap_num_msg(), imap_num_recent(), imap_ping(), imap_renamemailbox(), imap_reopen(), imap_subscribe(), imap_undelete(), imap_unsubscribe(), imap_scanmailbox(), imap_mailboxmsginfo(), imap_fetchheader(), imap_uid(), imap_msgno(), imap_search(), imap_fetch_overview() | imap_close() | Link to IMAP, POP3 server
imap chain persistent
imap persistent
ingres | ingres_connect() | ingres_query(), ingres_num_rows(), ingres_num_fields(), ingres_field_name(), ingres_field_type(), ingres_field_nullable(), ingres_field_length(), ingres_field_precision(), ingres_field_scale(), ingres_fetch_array(), ingres_fetch_row(), ingres_fetch_object(), ingres_rollback(), ingres_commit(), ingres_autocommit() | ingres_close() | Link to ingresII base
ingres persistent | ingres_pconnect() | ingres_query(), ingres_num_rows(), ingres_num_fields(), ingres_field_name(), ingres_field_type(), ingres_field_nullable(), ingres_field_length(), ingres_field_precision(), ingres_field_scale(), ingres_fetch_array(), ingres_fetch_row(), ingres_fetch_object(), ingres_rollback(), ingres_commit(), ingres_autocommit() | None | Persistent link to ingresII base
interbase blob
interbase link | ibase_connect() | ibase_query(), ibase_prepare(), ibase_trans() | ibase_close() | Link to Interbase database
interbase link persistent | ibase_pconnect() | ibase_query(), ibase_prepare(), ibase_trans() | None | Persistent link to Interbase database
interbase query | ibase_prepare() | ibase_execute() | ibase_free_query() | Interbase query
interbase result | ibase_query() | ibase_fetch_row(), ibase_fetch_object(), ibase_field_info(), ibase_num_fields() | ibase_free_result() | Interbase Result
interbase transaction | ibase_trans() | ibase_commit() | ibase_rollback() | Interbase transaction
java
ldap link | ldap_connect(), ldap_search() | ldap_count_entries(), ldap_first_attribute(), ldap_first_entry(), ldap_get_attributes(), ldap_get_dn(), ldap_get_entries(), ldap_get_values(), ldap_get_values_len(), ldap_next_attribute(), ldap_next_entry() | ldap_close() | ldap connection
ldap result | ldap_read() | ldap_add(), ldap_compare(), ldap_bind(), ldap_count_entries(), ldap_delete(), ldap_errno(), ldap_error(), ldap_first_attribute(), ldap_first_entry(), ldap_get_attributes(), ldap_get_dn(), ldap_get_entries(), ldap_get_values(), ldap_get_values_len(), ldap_get_option(), ldap_list(), ldap_modify(), ldap_mod_add(), ldap_mod_replace(), ldap_next_attribute(), ldap_next_entry(), ldap_mod_del(), ldap_set_option(), ldap_unbind() | ldap_free_result() | ldap search result
ldap result entry
mcal | mcal_open(), mcal_popen() | mcal_create_calendar(), mcal_rename_calendar(), mcal_rename_calendar(), mcal_delete_calendar(), mcal_fetch_event(), mcal_list_events(), mcal_append_event(), mcal_store_event(), mcal_delete_event(), mcal_list_alarms(), mcal_event_init(), mcal_event_set_category(), mcal_event_set_title(), mcal_event_set_description(), mcal_event_set_start(), mcal_event_set_end(), mcal_event_set_alarm(), mcal_event_set_class(), mcal_next_recurrence(), mcal_event_set_recur_none(), mcal_event_set_recur_daily(), mcal_event_set_recur_weekly(), mcal_event_set_recur_monthly_mday(), mcal_event_set_recur_monthly_wday(), mcal_event_set_recur_yearly(), mcal_fetch_current_stream_event(), mcal_event_add_attribute(), mcal_expunge() | mcal_close() | Link to calendar server
SWFAction
SWFBitmap
SWFButton
SWFDisplayItem
SWFFill
SWFFont
SWFGradient
SWFMorph
SWFMovie
SWFShape
SWFSprite
SWFText
SWFTextField
mnogosearch agent
mnogosearch result
msql link | msql_connect() | msql(), msql_create_db(), msql_createdb(), msql_drop_db(), msql_drop_db(), msql_select_db(), msql_select_db() | msql_close() | Link to mSQL database
msql link persistent | msql_pconnect() | msql(), msql_create_db(), msql_createdb(), msql_drop_db(), msql_drop_db(), msql_select_db(), msql_select_db() | None | Persistent link to mSQL
msql query | msql_db_query(), msql_list_dbs(), msql_list_fields(), msql_list_tables(), msql_query() | msql(), msql_affected_rows(), msql_data_seek(), msql_dbname(), msql_fetch_array(), msql_fetch_field(), msql_fetch_object(), msql_fetch_row(), msql_field_seek(), msql_field_table(), msql_field_flags(), msql_field_len(), msql_field_name(), msql_field_type(), msql_num_fields(), msql_num_rows(), msql_numfields(), msql_numrows(), msql_result() | msql_free_result(), msql_free_result() | mSQL result
mssql link | mssql_connect() | mssql_query(), mssql_select_db() | mssql_close() | Link to Microsoft SQL Server database
mssql link persistent | mssql_pconnect() | mssql_query(), mssql_select_db() | None | Persistent link to Microsoft SQL Server
mssql result | mssql_query() | mssql_data_seek(), mssql_fetch_array(), mssql_fetch_field(), mssql_fetch_object(), mssql_fetch_row(), mssql_field_length(), mssql_field_name(), mssql_field_seek(), mssql_field_type(), mssql_num_fields(), mssql_num_rows(), mssql_result() | mssql_free_result() | Microsoft SQL Server result
mysql link | mysql_connect() | mysql_affected_rows(), mysql_change_user(), mysql_create_db(), mysql_data_seek(), mysql_db_name(), mysql_db_query(), mysql_drop_db(), mysql_errno(), mysql_error(), mysql_insert_id(), mysql_list_dbs(), mysql_list_fields(), mysql_list_tables(), mysql_query(), mysql_result(), mysql_select_db(), mysql_tablename(), mysql_get_host_info(), mysql_get_proto_info(), mysql_get_server_info() | mysql_close() | Link to MySQL database
mysql link persistent | mysql_pconnect() | mysql_affected_rows(), mysql_change_user(), mysql_create_db(), mysql_data_seek(), mysql_db_name(), mysql_db_query(), mysql_drop_db(), mysql_errno(), mysql_error(), mysql_insert_id(), mysql_list_dbs(), mysql_list_fields(), mysql_list_tables(), mysql_query(), mysql_result(), mysql_select_db(), mysql_tablename(), mysql_get_host_info(), mysql_get_proto_info(), mysql_get_server_info() | None | Persistent link to MySQL database
mysql result | mysql_db_query(), mysql_list_dbs(), mysql_list_fields(), mysql_list_processes(), mysql_list_tables(), mysql_query(), mysql_unbuffered_query() | mysql_data_seek(), mysql_db_name(), mysql_fetch_array(), mysql_fetch_assoc(), mysql_fetch_field(), mysql_fetch_lengths(), mysql_fetch_object(), mysql_fetch_row(), mysql_fetch_row(), mysql_field_flags(), mysql_field_name(), mysql_field_len(), mysql_field_seek(), mysql_field_table(), mysql_field_type(), mysql_num_fields(), mysql_num_rows(), mysql_result(), mysql_tablename() | mysql_free_result() | MySQL result
oci8 collection
oci8 connection | ocilogon(), ociplogon(), ocinlogon() | ocicommit(), ociserverversion(), ocinewcursor(), ociparse(), ocierror() | ocilogoff() | Link to Oracle database
oci8 descriptor
oci8 server
oci8 session
oci8 statement | ocinewdescriptor() | ocirollback(), ocinewdescriptor(), ocirowcount(), ocidefinebyname(), ocibindbyname(), ociexecute(), ocinumcols(), ociresult(), ocifetch(), ocifetchinto(), ocifetchstatement(), ocicolumnisnull(), ocicolumnname(), ocicolumnsize(), ocicolumntype(), ocistatementtype(), ocierror() | ocifreestatement() | Oracle Cursor
odbc link | odbc_connect() | odbc_autocommit(), odbc_commit(), odbc_error(), odbc_errormsg(), odbc_exec(), odbc_tables(), odbc_tableprivileges(), odbc_do(), odbc_prepare(), odbc_columns(), odbc_columnprivileges(), odbc_procedurecolumns(), odbc_specialcolumns(), odbc_rollback(), odbc_setoption(), odbc_gettypeinfo(), odbc_primarykeys(), odbc_foreignkeys(), odbc_procedures(), odbc_statistics() | odbc_close() | Link to ODBC database
odbc link persistent | odbc_pconnect() | odbc_autocommit(), odbc_commit(), odbc_error(), odbc_errormsg(), odbc_exec(), odbc_tables(), odbc_tableprivileges(), odbc_do(), odbc_prepare(), odbc_columns(), odbc_columnprivileges(), odbc_procedurecolumns(), odbc_specialcolumns(), odbc_rollback(), odbc_setoption(), odbc_gettypeinfo(), odbc_primarykeys(), odbc_foreignkeys(), odbc_procedures(), odbc_statistics() | None | Persistent link to ODBC database
odbc result | odbc_prepare() | odbc_binmode(), odbc_cursor(), odbc_execute(), odbc_fetch_into(), odbc_fetch_row(), odbc_field_name(), odbc_field_num(), odbc_field_type(), odbc_field_len(), odbc_field_precision(), odbc_field_scale(), odbc_longreadlen(), odbc_num_fields(), odbc_num_rows(), odbc_result(), odbc_result_all(), odbc_setoption() | odbc_free_result() | ODBC result
birdstep link
birdstep result
OpenSSL key | openssl_get_privatekey(), openssl_get_publickey() | openssl_sign(), openssl_seal(), openssl_open(), openssl_verify() | openssl_free_key() | OpenSSL key
OpenSSL X.509 | openssl_x509_read() | openssl_x509_parse(), openssl_x509_checkpurpose() | openssl_x509_free() | Public Key
oracle Cursor | ora_open() | ora_bind(), ora_columnname(), ora_columnsize(), ora_columntype(), ora_error(), ora_errorcode(), ora_exec(), ora_fetch(), ora_fetch_into(), ora_getcolumn(), ora_numcols(), ora_numrows(), ora_parse() | ora_close() | Oracle cursor
oracle link | ora_logon() | ora_do(), ora_error(), ora_errorcode(), ora_rollback(), ora_commitoff(), ora_commiton(), ora_open(), ora_commit() | ora_logoff() | Link to oracle database
oracle link persistent | ora_plogon() | ora_do(), ora_error(), ora_errorcode(), ora_rollback(), ora_commitoff(), ora_commiton(), ora_open(), ora_commit() | None | Persistent link to oracle database
pdf document | pdf_new() | pdf_add_bookmark(), pdf_add_launchlink(), pdf_add_locallink(), pdf_add_note(), pdf_add_pdflink(), pdf_add_weblink(), pdf_arc(), pdf_attach_file(), pdf_begin_page(), pdf_circle(), pdf_clip(), pdf_closepath(), pdf_closepath_fill_stroke(), pdf_closepath_stroke(), pdf_concat(), pdf_continue_text(), pdf_curveto(), pdf_end_page(), pdf_endpath(), pdf_fill(), pdf_fill_stroke(), pdf_findfont(), pdf_get_buffer(), pdf_get_image_height(), pdf_get_image_width(), pdf_get_parameter(), pdf_get_value(), pdf_lineto(), pdf_moveto(), pdf_open_ccitt(), pdf_open_file(), pdf_open_image_file(), pdf_place_image(), pdf_rect(), pdf_restore(), pdf_rotate(), pdf_save(), pdf_scale(), pdf_setdash(), pdf_setflat(), pdf_setfont(), pdf_setgray(), pdf_setgray_fill(), pdf_setgray_stroke(), pdf_setlinecap(), pdf_setlinejoin(), pdf_setlinewidth(), pdf_setmiterlimit(), pdf_setpolydash(), pdf_setrgbcolor(), pdf_setrgbcolor_fill(), pdf_setrgbcolor_stroke(), pdf_set_border_color(), pdf_set_border_dash(), pdf_set_border_style(), pdf_set_char_spacing(), pdf_set_duration(), pdf_set_font(), pdf_set_horiz_scaling(), pdf_set_parameter(), pdf_set_text_pos(), pdf_set_text_rendering(), pdf_set_value(), pdf_set_word_spacing(), pdf_show(), pdf_show_boxed(), pdf_show_xy(), pdf_skew(), pdf_stringwidth(), pdf_stroke(), pdf_translate(), pdf_add_thumbnail(), pdf_arcn(), pdf_begin_pattern(), pdf_begin_template(), pdf_end_pattern(), pdf_end_template(), pdf_initgraphics(), pdf_makespotcolor(), pdf_set_info(), pdf_setcolor(), pdf_setmatrix(), pdf_open_memory_image() | pdf_close(), pdf_delete() | PDF document
pdf image | pdf_open_image(), pdf_open_image_file(), pdf_open_memory_image() | pdf_get_image_height(), pdf_get_image_width(), pdf_open_CCITT(), pdf_place_image() | pdf_close_image() | Image in PDF file
pdf object
pdf outline
pgsql large object | pg_lo_open() | pg_lo_open(), pg_lo_create(), pg_lo_read(), pg_lo_read_all(), pg_lo_seek(), pg_lo_tell(), pg_lo_unlink(), pg_lo_write() | pg_lo_close() | PostgreSQL Large Object
pgsql link | pg_connect() | pg_affected_rows(), pg_query(), pg_send_query(), pg_get_result(), pg_connection_busy(), pg_connection_reset(), pg_connection_status(), pg_last_error(), pg_last_notice(), pg_lo_create(), pg_lo_export(), pg_lo_import(), pg_lo_open(), pg_lo_unlink(), pg_host(), pg_port(), pg_dbname(), pg_options(), pg_copy_from(), pg_copy_to(), pg_end_copy(), pg_put_line(), pg_tty(), pg_trace(), pg_untrace(), pg_set_client_encoding(), pg_client_encoding(), pg_metadata(), pg_convert(), pg_insert(), pg_select(), pg_delete(), pg_update() | pg_close() | Link to PostgreSQL database
pgsql link persistent | pg_pconnect() | pg_affected_rows(), pg_query(), pg_send_query(), pg_get_result(), pg_connection_busy(), pg_connection_reset(), pg_connection_status(), pg_last_error(), pg_last_notice(), pg_lo_create(), pg_lo_export(), pg_lo_import(), pg_lo_open(), pg_lo_unlink(), pg_host(), pg_port(), pg_dbname(), pg_options(), pg_copy_from(), pg_copy_to(), pg_end_copy(), pg_put_line(), pg_tty(), pg_trace(), pg_untrace(), pg_set_client_encoding(), pg_client_encoding(), pg_metadata(), pg_convert(), pg_insert(), pg_select(), pg_delete(), pg_update() | None | Persistent link to PostgreSQL database
pgsql result | pg_execute(), pg_query(), pg_query_params(), pg_get_result() | pg_fetch_array(), pg_fetch_object(), pg_fetch_result(), pg_fetch_row(), pg_field_is_null(), pg_field_name(), pg_field_num(), pg_field_prtlen(), pg_field_size(), pg_field_type(), pg_last_oid(), pg_num_fields(), pg_num_rows(), pg_result_error(), pg_result_status() | pg_free_result() | PostgreSQL result
pgsql string
printer
printer brush
printer font
printer pen
pspell | pspell_new(), pspell_new_config(), pspell_new_personal() | pspell_add_to_personal(), pspell_add_to_session(), pspell_check(), pspell_clear_session(), pspell_config_ignore(), pspell_config_mode(), pspell_config_personal(), pspell_config_repl(), pspell_config_runtogether(), pspell_config_save_repl(), pspell_save_wordlist(), pspell_store_replacement(), pspell_suggest() | None | pspell dictionary
pspell config | pspell_config_create() | pspell_new_config() | None | pspell configuration
Sablotron XSLT | xslt_create() | xslt_closelog(), xslt_openlog(), xslt_run(), xslt_set_sax_handler(), xslt_errno(), xslt_error(), xslt_fetch_result(), xslt_free() | xslt_free() | XSLT parser
shmop | shmop_open() | shmop_read(), shmop_write(), shmop_size(), shmop_delete() | shmop_close()
sockets file descriptor set | socket() | accept_connect(), bind(), connect(), listen(), read(), write() | close() | Socket
sockets i/o vector
stream | opendir() | readdir(), rewinddir() | closedir() | Dir handle
stream | fopen(), tmpfile() | feof(), fflush(), fgetc(), fgetcsv(), fgets(), fgetss(), flock(), fpassthru(), fputs(), fwrite(), fread(), fseek(), ftell(), fstat(), ftruncate(), set_file_buffer(), rewind() | fclose() | File handle
stream | popen(), fsockopen(), pfsockopen() | feof(), fflush(), fgetc(), fgetcsv(), fgets(), fgetss(), fpassthru(), fputs(), fwrite(), fread() | pclose() | Process handle
socket | fflush(), fgetc(), fgetcsv(), fgets(), fgetss(), fpassthru(), fputs(), fwrite(), fread() | fclose() | Socket handle
sybase-db link | sybase_connect() | sybase_query(), sybase_select_db() | sybase_close() | Link to Sybase database using DB library
sybase-db link persistent | sybase_pconnect() | sybase_query(), sybase_select_db() | None | Persistent link to Sybase database using DB library
sybase-db result | sybase_query() | sybase_data_seek(), sybase_fetch_array(), sybase_fetch_field(), sybase_fetch_object(), sybase_fetch_row(), sybase_field_seek(), sybase_num_fields(), sybase_num_rows(), sybase_result() | sybase_free_result() | Sybase result using DB library
sybase-ct link | sybase_connect() | sybase_affected_rows(), sybase_query(), sybase_select_db() | sybase_close() | Link to Sybase database using CT library
sybase-ct link persistent | sybase_pconnect() | sybase_affected_rows(), sybase_query(), sybase_select_db() | None | Persistent link to Sybase database using CT library
sybase-ct result | sybase_query() | sybase_data_seek(), sybase_fetch_array(), sybase_fetch_field(), sybase_fetch_object(), sybase_fetch_row(), sybase_field_seek(), sybase_num_fields(), sybase_num_rows(), sybase_result() | sybase_free_result() | Sybase result using CT library
sysvsem | sem_get() | sem_acquire() | sem_release() | System V Semaphore
sysvshm | shm_attach() | shm_remove(), shm_put_var(), shm_get_var(), shm_remove_var() | shm_detach() | System V Shared Memory
wddx | wddx_packet_start() | wddx_add_vars() | wddx_packet_end() | WDDX packet
xml | xml_parser_create(), xml_parser_create_ns() | xml_set_object(), xml_set_element_handler(), xml_set_character_data_handler(), xml_set_processing_instruction_handler(), xml_set_default_handler(), xml_set_unparsed_entity_decl_handler(), xml_set_notation_decl_handler(), xml_set_external_entity_ref_handler(), xml_parse(), xml_get_error_code(), xml_error_string(), xml_get_current_line_number(), xml_get_current_column_number(), xml_get_current_byte_index(), xml_parse_into_struct(), xml_parser_set_option(), xml_parser_get_option() | xml_parser_free() | XML parser
zlib | gzopen() | gzeof(), gzgetc(), gzgets(), gzgetss(), gzpassthru(), gzputs(), gzread(), gzrewind(), gzseek(), gztell(), gzwrite() | gzclose() | gz-compressed file

其他保留字列表
可用过滤器列表
附录


可用过滤器列表

Table of Contents

  • 字符串过滤器
  • 转换过滤器
  • 压缩过滤器
  • 加密过滤器

下面列出了用在 stream_filter_append()中的几个内置的流过滤器。用户的 PHP 版本中的过滤器也许比这里列出的更多（或更少）。

值得指出 stream_filter_append()与 stream_filter_prepend()之间有少许不平衡。每个 PHP 流都含有一个小的 读取缓冲区，它存储了来自文件系统或其它资源的几段数据以便更有效率地处理。数据一从资源进入流的内部缓冲区，立刻被附上的过滤器处理而不管 PHP 程序是否真的已经准备好接收数据。当过滤器是 appended时如果数据等待在读取缓冲区，数据将被立即通过过滤器处理，使其效果看上去是透明的。然而当过滤器是 prepended时如果数据等待在读取缓冲区，数据将 不会被该过滤器处理。该数据将会等到从资源取得下一段数据后才会被处理。

用 stream_get_filters()来列出 PHP 中已安装的过滤器。

资源类型列表
字符串过滤器
附录


字符串过滤器

每个过滤器都正如其名字暗示的那样工作并与内置的 PHP 字符串函数的行为相对应。对于指定过滤器的更多信息，请参考该函数的手册页。

string.rot13（自 PHP 4.3.0 起）使用此过滤器等同于用 str_rot13()函数处理所有的流数据。

Example #1 string.rot13

<?php
$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'string.rot13');
fwrite($fp, "This is a test.\n");
/* Outputs:  Guvf vf n grfg.   */
?>

string.toupper（自 PHP 5.0.0 起）使用此过滤器等同于用 strtoupper()函数处理所有的流数据。

Example #2 string.toupper

<?php
$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'string.toupper');
fwrite($fp, "This is a test.\n");
/* Outputs:  THIS IS A TEST.   */
?>

string.tolower（自 PHP 5.0.0 起）使用此过滤器等同于用 strtolower()函数处理所有的流数据。

Example #3 string.tolower

<?php
$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'string.tolower');
fwrite($fp, "This is a test.\n");
/* Outputs:  this is a test.   */
?>

string.strip_tags（自 PHP 5.0.0 起）使用此过滤器等同于用 strip_tags()函数处理所有的流数据。可以用两种格式接收参数：一种是和 strip_tags()函数第二个参数相似的一个包含有标记列表的字符串，一种是一个包含有标记名的数组。

Example #4 string.strip_tags

<?php
$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'string.strip_tags', STREAM_FILTER_WRITE, "<b><i><u>");
fwrite($fp, "<b>bolded text</b> enlarged to a <h1>level 1 heading</h1>\n");
fclose($fp);
/* Outputs:  <b>bolded text</b> enlarged to a level 1 heading   */

$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'string.strip_tags', STREAM_FILTER_WRITE, array('b','i','u'));
fwrite($fp, "<b>bolded text</b> enlarged to a <h1>level 1 heading</h1>\n");
fclose($fp);
/* Outputs:  <b>bolded text</b> enlarged to a level 1 heading   */
?>
可用过滤器列表
转换过滤器
可用过滤器列表


转换过滤器

如同 string.* 过滤器，convert.* 过滤器的作用就和其名字一样。转换过滤器是 PHP 5.0.0 添加的。对于指定过滤器的更多信息，请参考该函数的手册页。

convert.base64-encode和 convert.base64-decode使用这两个过滤器等同于分别用 base64_encode()和 base64_decode()函数处理所有的流数据。 convert.base64-encode支持以一个关联数组给出的参数。如果给出了 line-length，base64 输出将被用 line-length个字符为 长度而截成块。如果给出了 line-break-chars，每块将被用给出的字符隔开。这些参数的效果和用 base64_encode()再加上 chunk_split()相同。

Example #1 convert.base64-encode & convert.base64-decode

<?php
$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'convert.base64-encode');
fwrite($fp, "This is a test.\n");
fclose($fp);
/* Outputs:  VGhpcyBpcyBhIHRlc3QuCg==  */

$param = array('line-length' => 8, 'line-break-chars' => "\r\n");
$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'convert.base64-encode', STREAM_FILTER_WRITE, $param);
fwrite($fp, "This is a test.\n");
fclose($fp);
/* Outputs:  VGhpcyBp
          :  cyBhIHRl
          :  c3QuCg==  */

$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'convert.base64-decode');
fwrite($fp, "VGhpcyBpcyBhIHRlc3QuCg==");
fclose($fp);
/* Outputs:  This is a test.  */
?>

convert.quoted-printable-encode和 convert.quoted-printable-decode使用此过滤器的 decode 版本等同于用 quoted_printable_decode()函数处理所有的流数据。没有和 convert.quoted-printable-encode相对应的函数。 convert.quoted-printable-encode支持以一个关联数组给出的参数。除了支持和 convert.base64-encode一样的附加参数外， convert.quoted-printable-encode还支持布尔参数 binary和 force-encode-first。 convert.base64-decode只支持 line-break-chars参数作为从编码载荷中剥离的类型提示。

Example #2 convert.quoted-printable-encode & convert.quoted-printable-decode

<?php
$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'convert.quoted-printable-encode');
fwrite($fp, "This is a test.\n");
/* Outputs:  =This is a test.=0A  */
?>
字符串过滤器
压缩过滤器
可用过滤器列表


压缩过滤器

虽然 压缩封装协议提供了在本地文件系统中 创建 gzip 和 bz2 兼容文件的方法，但不代表可以在网络的流中提供通用压缩的意思，也不代表可以将一个非压缩的流转换成一个压缩流。对此，压缩过滤器可以在任何时候应用于任何流资源。

Note: 压缩过滤器 不产生命令行工具如 gzip的头和尾信息。只是压缩和解压数据流中的有效载荷部分。

zlib.deflate（压缩）和 zlib.inflate（解压）实现了定义与 » RFC 1951的压缩算法。 deflate过滤器可以接受以一个关联数组传递的最多三个参数。 level定义了压缩强度（1-9）。数字更高通常会产生更小的载荷，但要消耗更多的处理时间。存在两个特殊压缩等级：0（完全不压缩）和 -1（zlib 内部默认值，目前是 6）。 window是压缩回溯窗口大小，以二的次方表示。更高的值（大到 15 —— 32768 字节）产生更好的压缩效果但消耗更多内存，低的值（低到 9 —— 512 字节）产生产生较差的压缩效果但内存消耗低。目前默认的 window大小是 15。 memory用来指示要分配多少工作内存。合法的数值范围是从 1（最小分配）到 9（最大分配）。内存分配仅影响速度，不会影响生成的载荷的大小。

Note: 因为最常用的参数是压缩等级，也可以提供一个整数值作为此参数（而不用数组）。

zlib.* 压缩过滤器自 PHP 版本 5.1.0起可用，在激活 zlib的前提下。也可以通过安装来自 » PECL的 » zlib_filter包作为一个后门在 5.0.x版中使用。此过滤器在 PHP 4 中 不可用。

Example #1 zlib.deflate和 zlib.inflate

<?php
$params = array('level' => 6, 'window' => 15, 'memory' => 9);

$original_text = "This is a test.\nThis is only a test.\nThis is not an important string.\n";
echo "The original text is " . strlen($original_text) . " characters long.\n";

$fp = fopen('test.deflated', 'w');
stream_filter_append($fp, 'zlib.deflate', STREAM_FILTER_WRITE, $params);
fwrite($fp, $original_text);
fclose($fp);

echo "The compressed file is " . filesize('test.deflated') . " bytes long.\n";
echo "The original text was:\n";
/* Use readfile and zlib.inflate to decompress on the fly */
readfile('php://filter/zlib.inflate/resource=test.deflated');

/* Generates output:

The original text is 70 characters long.
The compressed file is 56 bytes long.
The original text was:
This is a test.
This is only a test.
This is not an important string.

 */
?>

Example #2 zlib.deflate简单参数用法

<?php
$original_text = "This is a test.\nThis is only a test.\nThis is not an important string.\n";
echo "The original text is " . strlen($original_text) . " characters long.\n";

$fp = fopen('test.deflated', 'w');
/* Here "6" indicates compression level 6 */
stream_filter_append($fp, 'zlib.deflate', STREAM_FILTER_WRITE, 6);
fwrite($fp, $original_text);
fclose($fp);

echo "The compressed file is " . filesize('test.deflated') . " bytes long.\n";

/* Generates output:

The original text is 70 characters long.
The compressed file is 56 bytes long.

 */
?>

bzip2.compress和 bzip2.decompress工作的方式与上面讲的 zlib 过滤器相同。 bzip2.compress过滤器接受以一个关联数组给出的最多两个参数： blocks是从 1 到 9 的整数值，指定分配多少个 100K 字节的内存块作为工作区。 work是 0 到 250 的整数值，指定在退回到一个慢一些，但更可靠的算法之前做多少次常规压缩算法的尝试。调整此参数仅影响到速度，压缩输出和内存使用都不受此设置的影响。将此参数设为 0 指示 bzip 库使用内部默认算法。 bzip2.decompress过滤器仅接受一个参数，可以用普通的布尔值传递，或者用一个关联数组中的 small单元传递。当 small设为 &true; 值时，指示 bzip 库用最小的内存占用来执行解压缩，代价是速度会慢一些。

bzip2.* 压缩过滤器自 PHP 版本 5.1.0起可用，在激活 bz2支持的前提下。也可以通过安装来自 » PECL的 » bz2_filter包作为一个后门在 5.0.x版中使用。此过滤器在 PHP 4 中 不可用。

Example #3 bzip2.compress和 bzip2.decompress

<?php
$param = array('blocks' => 9, 'work' => 0);

echo "The original file is " . filesize('LICENSE') . " bytes long.\n";

$fp = fopen('LICENSE.compressed', 'w');
stream_filter_append($fp, 'bzip2.compress', STREAM_FILTER_WRITE, $param);
fwrite($fp, file_get_contents('LICENSE'));
fclose($fp);

echo "The compressed file is " . filesize('LICENSE.compressed') . " bytes long.\n";

/* Generates output:

The original text is 3288 characters long.
The compressed file is 1488 bytes long.

 */
?>
转换过滤器
加密过滤器
可用过滤器列表


加密过滤器

mcrypt.*和 mdecrypt.*使用 libmcrypt 提供了对称的加密和解密。这两组过滤器都支持 mcrypt 扩展库中相同的算法，格式为 mcrypt.ciphername，其中 ciphername是密码的名字，将被传递给 mcrypt_module_open()。有以下五个过滤器参数可用：

mcrypt 过滤器参数
参数 | 是否必须 | 默认值 | 取值举例
mode | 可选 | cbc | cbc, cfb, ecb, nofb, ofb, stream
algorithms_dir | 可选 | ini_get('mcrypt.algorithms_dir') | algorithms 模块的目录
modes_dir | 可选 | ini_get('mcrypt.modes_dir') | modes 模块的目录
iv | 必须 | N/A | 典型为 8，16 或 32 字节的二进制数据。根据密码而定
key | 必须 | N/A | 典型为 8，16 或 32 字节的二进制数据。根据密码而定

Example #1 用 3DES 将文件加密输出

<?php
$passphrase = 'My secret';

/* Turn a human readable passphrase
 * into a reproducable iv/key pair
 */
$iv = substr(md5('iv'.$passphrase, true), 0, 8);
$key = substr(md5('pass1'.$passphrase, true) .
               md5('pass2'.$passphrase, true), 0, 24);
$opts = array('iv'=>$iv, 'key'=>$key);

$fp = fopen('secert-file.enc', 'wb');
stream_filter_append($fp, 'mcrypt.tripledes', STREAM_FILTER_WRITE, $opts);
fwrite($fp, 'Secret secret secret data');
fclose($fp);
?>

Example #2 读取加密的文件

<?php
$passphrase = 'My secret';

/* Turn a human readable passphrase
 * into a reproducable iv/key pair
 */
$iv = substr(md5('iv'.$passphrase, true), 0, 8);
$key = substr(md5('pass1'.$passphrase, true) .
               md5('pass2'.$passphrase, true), 0, 24);
$opts = array('iv'=>$iv, 'key'=>$key);

$fp = fopen('secert-file.enc', 'rb');
stream_filter_append($fp, 'mdecrypt.tripledes', STREAM_FILTER_WRITE, $opts);
$data = rtrim(stream_get_contents($fp));
fclose($fp);

echo $data;
?>
压缩过滤器
所支持的套接字传输器（Socket Transports）列表
可用过滤器列表


所支持的套接字传输器（Socket Transports）列表

Table of Contents

  • Internet 领域：TCP，UDP，SSL 和 TLS
  • Unix 领域：Unix 和 UDG

以下是 PHP 内置用于基于流的套接字函数例如 fsockopen()和 stream_socket_client()的各种 URL 风格的套接字传输器。这些传输器 不适用于 Sockets 扩展库。

要得到自己的 PHP 版本中所安装的传输器列表，使用 stream_get_transports()。

加密过滤器
Internet 领域：TCP，UDP，SSL 和 TLS
附录


Internet 领域：TCP，UDP，SSL 和 TLS

PHP 3，PHP 4，PHP 5。 ssl://& tls://自 PHP 4.3 起可用。

sslv2://& sslv3://自 PHP 5.0.2 起可用。

Note: 如果没有指定传输器，则假定为 tcp://。

  • 127.0.0.1
  • fe80::1
  • www.example.com
  • tcp://127.0.0.1
  • tcp://fe80::1
  • tcp://www.example.com
  • udp://www.example.com
  • ssl://www.example.com
  • sslv2://www.example.com
  • sslv3://www.example.com
  • tls://www.example.com

Internet 领域套接字在目标地址中还期望有一个端口号。在 fsockopen()中在第二个参数中指定，这样就不会影响传输器的 URL。然而在 stream_socket_client()和相关的函数中是用传统的 URL，端口号在传输器 URL 后面以冒号分隔而指定。

  • tcp://127.0.0.1:80
  • tcp://[fe80::1]:80
  • tcp://www.example.com:80

Note: 带端口号的 IPv6 数字地址
在上面的第二个例子中，IPv4 和主机名的例子只加了一个冒号和端口号，但 IPv6 的地址被放在方括号中： [fe80::1]。这是为了将 IPv6 地址中的冒号和用来分隔端口号的冒号区别开来。

ssl://和 tls://传输器（仅在 openssl 支持已编译入 PHP 后可用）是 tcp://传输器加入 SSL 加密后的扩展。在 PHP 4.3.0 中 OpenSSL 支持必须被静态编译入 PHP，在 PHP 5.0.0 中可以编译为模块或者静态的。

ssl://将根据远程服务器的兼容性和参数设置尝试与之建立 SSL V2 或 SSL V3 链接 sslv2://和 sslv3://将明确的选择 SSL V2 或 SSL V3 协议进行连接。

ssl://和 tls://传输器的上下文选项（自 PHP 4.3.2 起）
名称 | 用法 | 默认值
verify_peer | &true; 或 &false;。用于 SSL 证书请求验证。 | &false;
allow_self_signed | &true; 或 &false;。允许自签名的证书。 | &false;
cafile | 本地文件系统中证书授权机构文件的位置，应和 verify_peer上下文选项一起使用来认证远端的身份。 |
capath | 如果没有指定 cafile或者如果该处没找到证书，则在 capath指定的目录中搜索相配的证书。 capath必须是一个正确的被散列化的证书目录。 |
local_cert | 文件系统中本地证书文件的路径。必须是一个用 PEM 编码并包含你的证书和私人密钥的文件。可以选择包括发行者的证书链。 |
passphrase | 你的 local_cert文件编码的 passphrase。 |
CN_match | 所期待的 Common Name。PHP 能进行有限的通配符匹配。如果 Common Name 与此不匹配，连接尝试会失败。 |

Note: 因为 ssl://是 https:// 和 ftps:// 封装协议的底层传输器，适用于 ssl://的任何上下文选项也适用于 https://和 ftps://。

所支持的套接字传输器（Socket Transports）列表
Unix 领域：Unix 和 UDG
所支持的套接字传输器（Socket Transports）列表


Unix 领域：Unix 和 UDG

unix://自 PHP 3 起可用， udg://自 PHP 5 起可用。

  • unix:///tmp/mysock
  • udg:///tmp/mysock

unix://提供了在 Unix 域中对套接字流连接的访问。 udg://提供了替代的传输器以用户数据报协议（UDP）来访问 Unix 域套接字。

Unix 域套接字（UNIX Domain Socket），和 Internet Domain Socket 不同，不期望端口号。在 fsockopen()中 portno参数应被设为 0。

Internet 领域：TCP，UDP，SSL 和 TLS
PHP 类型比较表
所支持的套接字传输器（Socket Transports）列表


PHP 类型比较表

以下的表格显示了 PHP 类型和比较运算符在松散和严格比较时的作用。该补充材料还和类型戏法的相关章节内容有关。同时，大量的用户注释和 » BlueShoes 的工作也给该材料提供了帮助。

在使用这些表格之前，需要明白变量类型及它们的意义。例如，"42" 是一个字符串而 42 是一个整数。FALSE 是一个布尔值而 "false" 是一个字符串。

Note:

HTML 表单并不传递整数、浮点数或者布尔值，它们只传递字符串。要想检测一个字符串是不是数字，可以使用 is_numeric() 函数。

Note:

在没有定义变量 $x 的时候，诸如 if ($x) 的用法会导致一个 E_NOTICE 级别的错误。所以，可以考虑用 empty() 或者 isset() 函数来初始化变量。

使用 PHP 函数对变量 $x 进行比较
表达式 | gettype() | empty() | is_null() | isset() | boolean : if($x)
$x = ""; | string | TRUE | FALSE | TRUE | FALSE
$x = null; | NULL | TRUE | TRUE | FALSE | FALSE
var $x; | NULL | TRUE | TRUE | FALSE | FALSE
$x is undefined | NULL | TRUE | TRUE | FALSE | FALSE
$x = array(); | array | TRUE | FALSE | TRUE | FALSE
$x = false; | boolean | TRUE | FALSE | TRUE | FALSE
$x = true; | boolean | FALSE | FALSE | TRUE | TRUE
$x = 1; | integer | FALSE | FALSE | TRUE | TRUE
$x = 42; | integer | FALSE | FALSE | TRUE | TRUE
$x = 0; | integer | TRUE | FALSE | TRUE | FALSE
$x = -1; | integer | FALSE | FALSE | TRUE | TRUE
$x = "1"; | string | FALSE | FALSE | TRUE | TRUE
$x = "0"; | string | TRUE | FALSE | TRUE | FALSE
$x = "-1"; | string | FALSE | FALSE | TRUE | TRUE
$x = "php"; | string | FALSE | FALSE | TRUE | TRUE
$x = "true"; | string | FALSE | FALSE | TRUE | TRUE
$x = "false"; | string | FALSE | FALSE | TRUE | TRUE

松散比较 ==
 | TRUE | FALSE | 1 | 0 | -1 | "1" | "0" | "-1" | NULL | array() | "php" | ""
TRUE | TRUE | FALSE | TRUE | FALSE | TRUE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE
FALSE | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | TRUE | TRUE | FALSE | TRUE
1 | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE
0 | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | TRUE | FALSE | TRUE | TRUE
-1 | TRUE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE
"1" | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE
"0" | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE
"-1" | TRUE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE
NULL | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | TRUE | TRUE | FALSE | TRUE
array() | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | TRUE | FALSE | FALSE
"php" | TRUE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE
"" | FALSE | TRUE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | TRUE

严格比较 ===
 | TRUE | FALSE | 1 | 0 | -1 | "1" | "0" | "-1" | NULL | array() | "php" | ""
TRUE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE
FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE
1 | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE
0 | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE
-1 | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE
"1" | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE
"0" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE
"-1" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE | FALSE
NULL | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE | FALSE
array() | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE | FALSE
"php" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE | FALSE
"" | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | TRUE

Unix 领域：Unix 和 UDG
解析器代号列表
附录


解析器代号列表

PHP 语言的不同部分在内部被表示为类似 T_SR 的类型。PHP 在解析错误时输出这样的标识符，例如 "Parse error: unexpected T_SR, expecting ',' or ';' in script.php on line 10."。

应该知道 T_SR 的含义。对于所有不知道的人，下表列出了这些标识符，PHP 语法和在手册中适当位置的参考。

代号
代号 | 语法 | 参考
T_ABSTRACT | abstract | 抽象类（自 PHP 5.0.0 起可用）
T_AND_EQUAL | &= | 赋值运算符
T_ARRAY | array() | array()，数组语法
T_ARRAY_CAST | (array) | 类型转换
T_AS | as | foreach
T_BAD_CHARACTER |  | 在 ASCII 32 之前除了 \t (0x09), \n (0x0a) 和 \r (0x0d) 以外的任何字符
T_BOOLEAN_AND | && | 逻辑运算符
T_BOOLEAN_OR | || | 逻辑运算符
T_BOOL_CAST | (bool) 或 (boolean) | 类型转换
T_BREAK | break | break
T_CASE | case | switch
T_CATCH | catch | 异常处理（自 PHP 5.0.0 起可用）
T_CHARACTER |  |
T_CLASS | class | 类和对象
T_CLONE | clone | 类和对象。仅用于 PHP 5。
T_CLOSE_TAG | ?> 或 %> |
T_COMMENT | // 或 #，以及 PHP 5 下的 /* */ | 注释
T_CONCAT_EQUAL | .= | 赋值运算符
T_CONST | const |
T_CONSTANT_ENCAPSED_STRING | "foo" 或 'bar' | 字符串语法
T_CONTINUE | continue |
T_CURLY_OPEN |  |
T_DEC | -- | 递增/递减运算符
T_DECLARE | declare | declare
T_DEFAULT | default | switch
T_DIV_EQUAL | /= | 赋值运算符
T_DNUMBER | 0.12，等等 | 浮点数
T_DOC_COMMENT | /** */ | PHPDoc 风格的注释（仅用于 PHP 5）
T_DO | do | do..while
T_DOLLAR_OPEN_CURLY_BRACES | ${ | 复杂变量解析语法
T_DOUBLE_ARROW | => | 数组语法
T_DOUBLE_CAST | (real), (double) 或 (float) | 类型转换
T_DOUBLE_COLON | :: | 见下面的 T_PAAMAYIM_NEKUDOTAYIM
T_ECHO | echo | echo
T_ELSE | else | else
T_ELSEIF | elseif | elseif
T_EMPTY | empty | empty()
T_ENCAPSED_AND_WHITESPACE |  |
T_ENDDECLARE | enddeclare | declare，替代语法
T_ENDFOR | endfor | for，替代语法
T_ENDFOREACH | endforeach | foreach，替代语法
T_ENDIF | endif | if，替代语法
T_ENDSWITCH | endswitch | switch，替代语法
T_ENDWHILE | endwhile | while，替代语法
T_END_HEREDOC |  | heredoc 语法
T_EVAL | eval() | eval()
T_EXIT | exit 或 die | exit(), die()
T_EXTENDS | extends | extends，类和对象
T_FILE | __FILE__ | 常量
T_FINAL | final | Final 关键字（自 PHP 5.0.0 起可用）
T_FOR | for | for
T_FOREACH | foreach | foreach
T_FUNCTION | function 或 cfunction | 函数
T_GLOBAL | global | 变量范围
T_HALT_COMPILER | __halt_compiler() | __halt_compiler（自 PHP 5.1.0 起可用）
T_IF | if | if
T_IMPLEMENTS | implements | 对象接口（自 PHP 5.0.0 起可用）
T_INC | ++ | 递增／递减运算符
T_INCLUDE | include() | include
T_INCLUDE_ONCE | include_once() | include_once
T_INLINE_HTML |  |
T_INSTANCEOF | instanceof | type operators（仅 PHP5）
T_INT_CAST | (int) 或 (integer) | 类型转换
T_INTERFACE | interface | 对象接口（自 PHP 5.0.0 起可用）
T_ISSET | isset() | isset()
T_IS_EQUAL | == | 比较运算符
T_IS_GREATER_OR_EQUAL | >= | 比较运算符
T_IS_IDENTICAL | === | 比较运算符
T_IS_NOT_EQUAL | != or <> | 比较运算符
T_IS_NOT_IDENTICAL | !== | 比较运算符
T_IS_SMALLER_OR_EQUAL | <= | 比较运算符
T_LINE | __LINE__ | 常量
T_LIST | list() | list()
T_LNUMBER | 123，012，0x1ac，等等 | 整型
T_LOGICAL_AND | and | 逻辑运算符
T_LOGICAL_OR | or | 逻辑运算符
T_LOGICAL_XOR | xor | 逻辑运算符
T_MINUS_EQUAL | -= | 赋值运算符
T_ML_COMMENT | /* 和 */ | 注释（仅用于 PHP 4）
T_MOD_EQUAL | %= | 赋值运算符
T_MUL_EQUAL | *= | 赋值运算符
T_NEW | new | 类和对象
T_NUM_STRING |  |
T_OBJECT_CAST | (object) | 类型转换
T_OBJECT_OPERATOR | -> | 类和对象
T_OPEN_TAG | <?php, <? 或 <% | 从 HTML 转义
T_OPEN_TAG_WITH_ECHO | <?= or <%= | 从 HTML 转义
T_OR_EQUAL | |= | 赋值运算符
T_PAAMAYIM_NEKUDOTAYIM | :: | ::。也定义为 T_DOUBLE_COLON。
T_PLUS_EQUAL | += | 赋值运算符
T_PRINT | print() | print
T_PRIVATE | private | 类和对象。仅用于 PHP 5。
T_PUBLIC | public | 类和对象。仅用于 PHP 5。
T_PROTECTED | protected | 类和对象。仅用于 PHP 5。
T_REQUIRE | require() | require
T_REQUIRE_ONCE | require_once() | require_once
T_RETURN | return | 返回值
T_SL | << | 位运算符
T_SL_EQUAL | <<= | 赋值运算符
T_SR | >> | 位运算符
T_SR_EQUAL | >>= | 赋值运算符
T_START_HEREDOC | <<< | heredoc 语法
T_STATIC | static | 变量范围
T_STRING |  |
T_STRING_CAST | (string) | 类型转换
T_STRING_VARNAME |  |
T_SWITCH | switch | switch
T_THROW | throw | 异常处理（自 PHP 5.0.0 起可用）
T_TRY | try | 异常处理（自 PHP 5.0.0 起可用）
T_UNSET | unset() | unset()
T_UNSET_CAST | (unset) | （无文档; 类型为 NULL）
T_USE | use | （未实现）
T_VAR | var | 类和对象
T_VARIABLE | $foo | 变量
T_WHILE | while | while，do..while
T_WHITESPACE |  |
T_XOR_EQUAL | ^= | 赋值运算符
T_FUNC_C | __FUNCTION__ | 常量，自 PHP 4.3.0 起可用
T_CLASS_C | __CLASS__ | 常量，自 PHP 4.3.0 起可用

参见 token_name()。

PHP 类型比较表
用户空间命名指南
附录


用户空间命名指南

Table of Contents

  • 全局命名空间
  • 规则
  • 提示

以下是在用户空间 PHP 代码中怎样最佳选择标识符名称的指南。当在全局命名空间中选择创建的符号名称时，要考虑到以下指导方针以免未来的 PHP 版本破坏掉用户使用的符号名称。

解析器代号列表
全局命名空间
附录


全局命名空间

以下代码结构会进入全局命名空间：

  • functions（函数）

  • classes（类）

  • interfaces（接口）

  • constants（常量，并非类常量）

  • 在函数／方法之外定义的变量

用户空间命名指南
规则
用户空间命名指南


规则

以下列表指出了 PHP 工程在选择新的内部标识符时保留给自己的权利。最终指南是官方的» 编码标准：

  • PHP 拥有最顶层命名空间，但是会尝试找到合体的描述命名以避免任何明显的冲突。

  • 函数名在两个词中间使用下划线，类名则同时使用 camelCase 和 PascalCase 规则。

  • PHP 在任何扩展库的全局符号前附加上扩展库的名称（此规则在过去则有无数例外）。例如：

    • curl_close()

    • mysql_query()

    • PREG_SPLIT_DELIM_CAPTURE

    • new DOMDocument()

    • strpos()（以前的一个失误例子）

    • new SplFileObject()

  • Iterators 和 Exceptions 则只是简单加上 "Iterator" 和 "Exception" 后缀。例如：

    • ArrayIterator

    • LogicException

  • PHP 保留所有以 __ 开头的符号作为魔术符号。建议用户不要在 PHP 中创建以 __ 打头的符号，除非是要使用有文档记载的魔术函数功能。例如：

    • __get()

    • __autoload()

全局命名空间
提示
用户空间命名指南


提示

要写出能经受住时间考验的代码，建议给任何进入全局命名空间的符号都加上一个不常见的 3-4 字母的前缀（或后缀），中间用下划线分开。为了避免与其它用户空间代码出现命名空间冲突，建议先研究一下其它项目中已有的前缀（或后缀）并适当地公布出来。示例如下：

  • MyPx_someFunc()

  • Foo_Date

  • $asdf_dbh

规则
关于本手册
用户空间命名指南


关于本手册

Table of Contents

  • 手册的格式
  • 关于用户注释
  • 如何阅读函数的定义（函数原型）
  • 本手册中所涉及的 PHP 版本
  • 如何得到关于 PHP 更多的信息
  • 如何帮助改进本文档
  • 如何生成手册的各种格式
  • 手册译文
提示
手册的格式
附录


手册的格式

《PHP 参考手册》提供了多种不同格式的版本，它们可以分为两组：在线阅读版本和可下载包。

Note:

有些出版商可能已经出版了本手册的一些印刷版本，但不推荐使用它们，因为 PHP 参考手册更新得非常快，这些印刷版本的内容很快将过时。

可以访问 » PHP.net 网站及其众多的镜像站点来在线阅读《PHP 参考手册》。为了保证最佳的访问速度，应该选择地理位置最接近的镜像站点。PHP 手册的在线版本目前有两种 CSS 样式表，便于浏览的和便于打印的。

和绝大多数离线格式的手册相比，在线阅读版本有两个显著的优点，即它集成了用户注释，并且可以使用其中的 » URL 快捷方式快速进入手册中想阅读的部分；但是，它的明显的缺点是必须保持一直在线来阅读。

目前，《PHP 参考手册》提供多种离线阅读格式，最适合于自己的格式取决于所使用的操作系统和个人的阅读习惯。关于《PHP 参考手册》如何被制作成如此多的版本，请查阅本附录中如何生成手册的各种格式一节。

跨平台性最好的格式是 HTML 格式格式。HTML 格式提供了两种方式：一种只有一个很大的 HTML 文件；另一种方式是每一节分成一个独立文件（它们形成一个包含有几千个文件的文件包）。我们提供的是这两种版本的压缩包，需要使用解压缩工具解压出压缩包中的文件。

对于 Windows 平台，我们利用了 Windows 的超文本帮助应用程序结合本手册的 HTML 格式，形成了本手册的 Windows 超文本帮助版本。该版本提供手册的全文搜索、完整的索引以及书签功能。很多 Windows 平台下流行的 PHP 集成开发环境也集成了该版本的手册，以给开发者提供最方便快捷的参考。CHM 阅读器也有 Linux 版本，可以到 » xCHM 或 » GnoCHM 网站了解更多信息。

同时，PHP 手册也有» 扩展 CHM 版本提供下载。它更新的速度比较慢，但是提供了附加的功能。由于制作帮助页面时采用的技术的特殊性，它只可在 Microsoft Windows 下工作。

关于本手册
关于用户注释
关于本手册


关于用户注释

用户注释在本手册的开发过程中搬演了相当重要的角色。通过允许手册的读者利用它们的浏览器提供范例、解释和进一步的阐述，我们便能够把这些反馈信息包含到手册的正文中。而且，当这些注释被包含后，读者就可以在线通过它们被提交的格式来阅读它们，也可以通过某些离线格式来阅读。

Note:

用户注释在网上出现之前并不成熟，因此这些文字和代码的质量，甚至它们的真实性无从得到保证（这并不是说本手册本身的质量和准确性没有任何的保证）。

Note:

由于用户注释被认为是 PHP 手册的一部分，因此它也被保护本文档的许可协议（目前为开放出版许可协议）所保护。请查阅手册版权页以了解更多详细信息。

手册的格式
如何阅读函数的定义（函数原型）
关于本手册


如何阅读函数的定义（函数原型）

文档中的每个函数都只是快速参考，学会如何阅读和理解文档将使得 PHP 的使用更加简单。和依赖赖于复制／粘贴范例比起来，用户一定更希望知道如何阅读函数的定义（函数原型）：

Note: 先决条件，对变量类型的基本理解

尽管 PHP 是一种松散类型语言，但对变量类型有一个基本的理解也是非常重要的，因为它们有重要的意义。

函数定义告诉我们函数返回什么类型的值，让我们用函数 strlen() 的定义作为第一个范例：

strlen

(PHP 4, PHP 5)
strlen -- 获取字符串长度

说明
int strlen ( string str )

返回给定的字符串 string 的长度。

对函数定义的解释
组成部分 | 说明
strlen | 函数名称。
(PHP 4, PHP 5) | strlen() 在 PHP 4 和 PHP 5 的所有版本中都存在。
int | 该函数返回的值的类型，这里为整型 integer（即以数字来衡量的字符串的长度）。
( string str ) | 第一个（本例中是唯一的）参数，在该函数中名为 str，且类型为 string。

可以将以上函数的定义写成一般形式：

      返回类型          函数名           ( 参数类型          参数名 )
      returned type    function name    ( parameter type   parameter name )

很多函数都有多个变量，例如 in_array()。其函数原型如下：

      bool in_array ( mixed $needle, array $haystack [, bool $strict])

这是什么意思？in_array() 返回一个"布尔"值，成功（如果在参数 haystack 中能找到参数 needle）则返回 TRUE, 或者在失败时返回 FALSE（如果在参数 haystack 中找不到参数 needle）。第一个参数被命名为 needle 且其类型不定，因此我们将其称为"混和"类型。该混和类型的 needle 参数（我们要找的对象）可以是一个标量的值（字符串、整数、或者浮点数），或者一个数组。haystack（我们寻找的范围）是第二个参数。第三个可选参数被命名为 strict。所有的可选参数都用 [ 方括号 ] 括起来。手册表明 strict 参数默认值为布尔值 FALSE。需要了解函数工作的细节，请参阅手册中和该函数相关的页面。

有的函数包含更复杂的 PHP 版本信息。我们拿 html_entity_decode() 举例：

(PHP 4 >= 4.3.0, PHP 5)

它意味着该函数不可在 PHP 3 中使用，只可在 PHP 4.3.0 及以后发布的版本中使用。

关于用户注释
本手册中所涉及的 PHP 版本
关于本手册


本手册中所涉及的 PHP 版本

本手册包含有 PHP 过去，现在和未来版本的信息。如果（不同版本）有行为上的变动则作为注释，更新日志以及插入文本方式在手册页中注明。最早有文档的版本是 PHP 4.1.0，最新有文档则是 PHP 5.x.x。

当对应于最新（尚未发布）开发版的 PHP 有文档存在时，将会被标记为"可在 Git 获取"或者"开发版本"。应该计划好相关变更，虽不多见但确有可能会有变动。

所有开发都放置于 Git 中，应按照» 匿名 Git 访问页面中的方法来取出。或者同样的源文件也可以以 PHP Snapshots 方式来获得，每个活动的 PHP 分支都有。

要澄清一点，手册会指明 PHP 的主版本号，次版本号和发布编号。以 PHP 5.3.1 为例，5 是主版本号，3 是次版本号，1 是发布编号。通常 PHP 只会在主、次版本更新时增加新特性，在发布编号更新时修正错误。不过也不完全是这样。

还要注意 PHP 手册是以现在时态书写的，而不是将来时态，即使某特性当前还尚未可用。原因是这样一来手册就可以经受住时间的考验，而不用在每次 PHP 更新时都去修改无聊的语法。

PHP 手册会多次列出 PHP 配置选项的"默认值"。这些默认值是基于没有 php.ini 配置文件的，所以与 php.ini-development 和 php.ini-production 存在很大差异。同时这些值也是基于最新版本的 PHP。请参考 PHP 配置选项列表以了解更多信息。

如何阅读函数的定义（函数原型）
如何得到关于 PHP 更多的信息
关于本手册


如何得到关于 PHP 更多的信息

本手册并不打算提供基本的编程开发指导。刚学编程的或者新手程序员会发现仅仅用本手册来学习如何用 PHP 编程是一件很困难的事情。应该寻找一本更适合初学者的书。

目前，PHP 官方提供了许多邮件列表来讨论 PHP 编程相关的各个方面的问题。如果卡在了某个问题上，可以到该邮件列表寻求帮助。有关支持以及邮件列表请访问 » PHP.net 支持页面。此外，在 PHP.net 链接页面 有一个关于 PHP 相关网站的列表，在这些网站中可以找到和 PHP 相关的文章、论坛和代码。

本手册中所涉及的 PHP 版本
如何帮助改进本文档
关于本手册


如何帮助改进本文档

可以通过以下三种途径来帮助改善本文档。

如果发现本手册任何一个格式的版本中有错误，请通过设在 » http://bugs.php.net/ 的纠错系统向我们报告，并将提交的错误分类为"文档问题 (Documentation Problem)"。所有文档相关的问题，包括手册格式，都应作为错误提交。

Note:

请勿滥用纠错系统来寻求帮助。如需帮助请访问» 支持页面。

通过提交注释，用户可以向其它读者提供更多的范例、解释和阐述。但请勿在注释系统提交错误报告。更多细节见关于用户注释一节。

PHP 手册被翻译成很多种语言。如果懂英语和另一种语言，可以加入翻译团队来帮助改善文档。有关开始一个新语言版本的翻译或者加入某一个语言版本的翻译工作，请下载并阅读 » http://doc.php.net/tutorial/。

PHP 文档项目也有一个 IRC 频道，许多手册作者都常去。可以访问 irc.efnet.org 服务器上的 #php.doc 与他们讨论改善 PHP 文档的方法。

如何得到关于 PHP 更多的信息
如何生成手册的各种格式
关于本手册


如何生成手册的各种格式

本手册使用 XML 语言编写，同时运用了 » DocBook XML DTD。还用了 » PhD（基于 [PH]P 的 [D]ocBook 渲染器）来维护和格式化。

将 XML 语言作为源文件格式，使得我们只需维护该源文件文档，就可以可以利用它生成许多其它的输出格式。生在在线手册格式的工具是 » PhD。我们使用 » Microsoft HTML Help Workshop 来生成本手册的 Windows 超文本帮助格式。当然，PHP 本身也完成了其它一些转换和格式化工作。

PHP 手册被生成多种不同语言和格式，详情见 » http://www.php.net/docs.php。XML 格式的源代码可以通过 SVN 下载，并通过 » http://svn.php.net/viewvc/ 在线浏览。文档存放于 phpdoc 模块中。

如何帮助改进本文档
手册译文
关于本手册


手册译文

《PHP 参考手册》不但有各种不同的格式，而且还有各种语言的版本。手册的正文最初是用英语撰写的，后来有来自全世界各地的工作组致力于本手册各种语言版本的翻译工作。如果某个函数或者章节的内容尚未被翻译，则该语言版本手册的发布将落后于英语版本。

翻译工作者首先从本手册的 XML 源代码（可于 » http://svn.php.net/viewvc/ 获取）入手，将这些源代码翻译成他们的母语。不要从生成后的 HTML 或纯文本版入手。是由编译系统负责将 XML 源代码转换成可阅读版本。

Note:

要帮忙翻译手册，请发一封空的电子邮件到 » phpdoc-subscribe@lists.php.net 加入 phpdoc 邮件列表以便与文档翻译小组取得联系。邮件列表的地址为 phpdoc@lists.php.net。请在电子邮件中声明对文档翻译工作感兴趣，有人会回复并帮助加入到已经存在的翻译小组，或者开始新语种的翻译工作。

目前，本手册已经（或部分）有超过 10 种语言可用。

可以访问 » http://www.php.net/docs.php 来下载各种版本。

有志于加入 PHP 手册简体中文翻译工作的朋友，首先请详细阅读» 此文章。有任何问题请向 PHP 文档中文邮件列表提出。

关于如何用 FreeBSD 建立一个 PHP 手册的文档环境，请阅读» 此文章。

如何生成手册的各种格式
Creative Commons Attribution 3.0
关于本手册


Creative Commons Attribution 3.0

THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.

BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.

1. Definitions

  1. "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License.
  2. "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined above) for the purposes of this License.
  3. "Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership.
  4. "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License.
  5. "Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work.
  6. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
  7. "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images.
  8. "Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium.

2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws.

3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:

  1. to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections;
  2. to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified.";
  3. to Distribute and Publicly Perform the Work including as incorporated in Collections; and,
  4. to Distribute and Publicly Perform Adaptations.

  5. For the avoidance of doubt:

    1. Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License;
    2. Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and,
    3. Voluntary License Schemes. The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License.

The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved.

4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:

  1. You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(b), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(b), as requested.
  2. If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and (iv) , consistent with Section 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4 (b) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties.
  3. Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise.

5. Representations, Warranties and Disclaimer

UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.

6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

7. Termination.

  1. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
  2. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.

8. Miscellaneous

  1. Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
  2. Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.
  3. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
  4. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent
  5. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.
  6. The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law.
手册译文
索引
附录


索引

Table of Contents

  • 函数和方法列表
  • 示例列表
Creative Commons Attribution 3.0
函数和方法列表
附录


函数和方法列表

手册中所有函数和方法的列表

a b c d e f g h i j k l m n o p q r s t u v w x y z _ ?

  • a
    • abs - 绝对值
    • acos - 反余弦
    • acosh - 反双曲余弦
    • addcslashes - 以 C 语言风格使用反斜线转义字符串中的字符
    • addslashes - 使用反斜线引用字符串
    • apache_child_terminate - 在本次请求结束后终止 apache 子进程
    • apache_getenv - 获取 Apache subprocess_env 变量
    • apache_get_modules - 获得已加载的Apache模块列表
    • apache_get_version - 获得Apache版本信息
    • apache_lookup_uri - 对指定的 URI 执行部分请求并返回所有有关信息
    • apache_note - 取得或设置 apache 请求记录
    • apache_request_headers - 获取全部 HTTP 请求头信息
    • apache_reset_timeout - 重置 Apache 写入计时器
    • apache_response_headers - 获得全部 HTTP 响应头信息
    • apache_setenv - 设置 Apache 子进程环境变量
    • APCIterator::current - 获取当前项
    • APCIterator::getTotalCount - 获取总数
    • APCIterator::getTotalHits - 获取缓存命中数
    • APCIterator::getTotalSize - 获取所有缓存的尺寸大小
    • APCIterator::key - Get iterator key获取迭代器的键
    • APCIterator::next - 移到下一项
    • APCIterator::rewind - 倒退迭代器
    • APCIterator::valid - 检查当前位置是否有效
    • APCIterator::__construct - 构造一个 APCIterator 迭代器对象
    • APCUIterator::current - Get current item
    • APCUIterator::getTotalCount - Get total count
    • APCUIterator::getTotalHits - Get total cache hits
    • APCUIterator::getTotalSize - Get total cache size
    • APCUIterator::key - Get iterator key
    • APCUIterator::next - Move pointer to next item
    • APCUIterator::rewind - Rewinds iterator
    • APCUIterator::valid - Checks if current position is valid
    • APCUIterator::__construct - Constructs an APCUIterator iterator object
    • apcu_add - Cache a new variable in the data store
    • apcu_cache_info - Retrieves cached information from APCu's data store
    • apcu_cas - Updates an old value with a new value
    • apcu_clear_cache - Clears the APCu cache
    • apcu_dec - Decrease a stored number
    • apcu_delete - Removes a stored variable from the cache
    • apcu_entry - Atomically fetch or generate a cache entry
    • apcu_exists - Checks if entry exists
    • apcu_fetch - Fetch a stored variable from the cache
    • apcu_inc - Increase a stored number
    • apcu_sma_info - Retrieves APCu Shared Memory Allocation information
    • apcu_store - Cache a variable in the data store
    • apc_add - 缓存一个变量到数据存储
    • apc_bin_dump - Get a binary dump of the given files and user variables
    • apc_bin_dumpfile - Output a binary dump of cached files and user variables to a file
    • apc_bin_load - Load a binary dump into the APC file/user cache
    • apc_bin_loadfile - Load a binary dump from a file into the APC file/user cache
    • apc_cache_info - Retrieves cached information from APC's data store
    • apc_cas - 用新值更新旧值
    • apc_clear_cache - 清除APC缓存
    • apc_compile_file - Stores a file in the bytecode cache, bypassing all filters.
    • apc_dec - Decrease a stored number
    • apc_define_constants - Defines a set of constants for retrieval and mass-definition
    • apc_delete - 从用户缓存中删除某个变量
    • apc_delete_file - Deletes files from the opcode cache
    • apc_exists - 检查APC中是否存在某个或者某些key
    • apc_fetch - 从缓存中取出存储的变量
    • apc_inc - 递增一个储存的数字
    • apc_load_constants - Loads a set of constants from the cache
    • apc_sma_info - Retrieves APC's Shared Memory Allocation information
    • apc_store - Cache a variable in the data store
    • apd_breakpoint - Stops the interpreter and waits on a CR from the socket
    • apd_callstack - Returns the current call stack as an array
    • apd_clunk - Throw a warning and a callstack
    • apd_continue - Restarts the interpreter
    • apd_croak - Throw an error, a callstack and then exit
    • apd_dump_function_table - Outputs the current function table
    • apd_dump_persistent_resources - Return all persistent resources as an array
    • apd_dump_regular_resources - Return all current regular resources as an array
    • apd_echo - Echo to the debugging socket
    • apd_get_active_symbols - Get an array of the current variables names in the local scope
    • apd_set_pprof_trace - Starts the session debugging
    • apd_set_session - Changes or sets the current debugging level
    • apd_set_session_trace - Starts the session debugging
    • apd_set_session_trace_socket - Starts the remote session debugging
    • AppendIterator::append - Appends an iterator
    • AppendIterator::current - Gets the current value
    • AppendIterator::getArrayIterator - Gets the ArrayIterator
    • AppendIterator::getInnerIterator - Gets the inner iterator
    • AppendIterator::getIteratorIndex - Gets an index of iterators
    • AppendIterator::key - Gets the current key
    • AppendIterator::next - Moves to the next element
    • AppendIterator::rewind - Rewinds the Iterator
    • AppendIterator::valid - Checks validity of the current element
    • AppendIterator::__construct - Constructs an AppendIterator
    • array - 新建一个数组
    • ArrayAccess::offsetExists - 检查一个偏移位置是否存在
    • ArrayAccess::offsetGet - 获取一个偏移位置的值
    • ArrayAccess::offsetSet - 设置一个偏移位置的值
    • ArrayAccess::offsetUnset - 复位一个偏移位置的值
    • ArrayIterator::append - Append an element
    • ArrayIterator::asort - Sort array by values
    • ArrayIterator::count - Count elements
    • ArrayIterator::current - Return current array entry
    • ArrayIterator::getArrayCopy - Get array copy
    • ArrayIterator::getFlags - Get flags
    • ArrayIterator::key - Return current array key
    • ArrayIterator::ksort - Sort array by keys
    • ArrayIterator::natcasesort - Sort an array naturally, case insensitive
    • ArrayIterator::natsort - Sort an array naturally
    • ArrayIterator::next - Move to next entry
    • ArrayIterator::offsetExists - Check if offset exists
    • ArrayIterator::offsetGet - Get value for an offset
    • ArrayIterator::offsetSet - Set value for an offset
    • ArrayIterator::offsetUnset - Unset value for an offset
    • ArrayIterator::rewind - Rewind array back to the start
    • ArrayIterator::seek - Seek to position
    • ArrayIterator::serialize - Serialize
    • ArrayIterator::setFlags - Set behaviour flags
    • ArrayIterator::uasort - User defined sort
    • ArrayIterator::uksort - User defined sort
    • ArrayIterator::unserialize - Unserialize
    • ArrayIterator::valid - Check whether array contains more entries
    • ArrayIterator::__construct - Construct an ArrayIterator
    • ArrayObject::append - 追加新的值作为最后一个元素。
    • ArrayObject::asort - Sort the entries by value
    • ArrayObject::count - 统计 ArrayObject 内 public 属性的数量
    • ArrayObject::exchangeArray - Exchange the array for another one.
    • ArrayObject::getArrayCopy - Creates a copy of the ArrayObject.
    • ArrayObject::getFlags - Gets the behavior flags.
    • ArrayObject::getIterator - Create a new iterator from an ArrayObject instance
    • ArrayObject::getIteratorClass - Gets the iterator classname for the ArrayObject.
    • ArrayObject::ksort - Sort the entries by key
    • ArrayObject::natcasesort - Sort an array using a case insensitive "natural order" algorithm
    • ArrayObject::natsort - Sort entries using a "natural order" algorithm
    • ArrayObject::offsetExists - Returns whether the requested index exists
    • ArrayObject::offsetGet - Returns the value at the specified index
    • ArrayObject::offsetSet - 为指定索引设定新的值
    • ArrayObject::offsetUnset - Unsets the value at the specified index
    • ArrayObject::serialize - Serialize an ArrayObject
    • ArrayObject::setFlags - Sets the behavior flags.
    • ArrayObject::setIteratorClass - Sets the iterator classname for the ArrayObject.
    • ArrayObject::uasort - Sort the entries with a user-defined comparison function and maintain key association
    • ArrayObject::uksort - Sort the entries by keys using a user-defined comparison function
    • ArrayObject::unserialize - Unserialize an ArrayObject
    • ArrayObject::__construct - Construct a new array object
    • array_change_key_case - 返回字符串键名全为小写或大写的数组
    • array_chunk - 将一个数组分割成多个
    • array_column - 返回数组中指定的一列
    • array_combine - 创建一个数组，用一个数组的值作为其键名，另一个数组的值作为其值
    • array_count_values - 统计数组中所有的值出现的次数
    • array_diff - 计算数组的差集
    • array_diff_assoc - 带索引检查计算数组的差集
    • array_diff_key - 使用键名比较计算数组的差集
    • array_diff_uassoc - 用用户提供的回调函数做索引检查来计算数组的差集
    • array_diff_ukey - 用回调函数对键名比较计算数组的差集
    • array_fill - 用给定的值填充数组
    • array_fill_keys - 使用指定的键和值填充数组
    • array_filter - 用回调函数过滤数组中的单元
    • array_flip - 交换数组中的键和值
    • array_intersect - 计算数组的交集
    • array_intersect_assoc - 带索引检查计算数组的交集
    • array_intersect_key - 使用键名比较计算数组的交集
    • array_intersect_uassoc - 带索引检查计算数组的交集，用回调函数比较索引
    • array_intersect_ukey - 用回调函数比较键名来计算数组的交集
    • array_keys - 返回数组中部分的或所有的键名
    • array_key_exists - 检查给定的键名或索引是否存在于数组中
    • array_map - 为数组的每个元素应用回调函数
    • array_merge - 合并一个或多个数组
    • array_merge_recursive - 递归地合并一个或多个数组
    • array_multisort - 对多个数组或多维数组进行排序
    • array_pad - 用值将数组填补到指定长度
    • array_pop - 将数组最后一个单元弹出（出栈）
    • array_product - 计算数组中所有值的乘积
    • array_push - 将一个或多个单元压入数组的末尾（入栈）
    • array_rand - 从数组中随机取出一个或多个单元
    • array_reduce - 用回调函数迭代地将数组简化为单一的值
    • array_replace - 使用传递的数组替换第一个数组的元素
    • array_replace_recursive - 使用传递的数组递归替换第一个数组的元素
    • array_reverse - 返回一个单元顺序相反的数组
    • array_search - 在数组中搜索给定的值，如果成功则返回相应的键名
    • array_shift - 将数组开头的单元移出数组
    • array_slice - 从数组中取出一段
    • array_splice - 把数组中的一部分去掉并用其它值取代
    • array_sum - 计算数组中所有值的和
    • array_udiff - 用回调函数比较数据来计算数组的差集
    • array_udiff_assoc - 带索引检查计算数组的差集，用回调函数比较数据
    • array_udiff_uassoc - 带索引检查计算数组的差集，用回调函数比较数据和索引
    • array_uintersect - 计算数组的交集，用回调函数比较数据
    • array_uintersect_assoc - 带索引检查计算数组的交集，用回调函数比较数据
    • array_uintersect_uassoc - 带索引检查计算数组的交集，用回调函数比较数据和索引
    • array_unique - 移除数组中重复的值
    • array_unshift - 在数组开头插入一个或多个单元
    • array_values - 返回数组中所有的值
    • array_walk - 使用用户自定义函数对数组中的每个元素做回调处理
    • array_walk_recursive - 对数组中的每个成员递归地应用用户函数
    • arsort - 对数组进行逆向排序并保持索引关系
    • asin - 反正弦
    • asinh - 反双曲正弦
    • asort - 对数组进行排序并保持索引关系
    • assert - 检查一个断言是否为 FALSE
    • assert_options - 设置/获取断言的各种标志
    • atan - 反正切
    • atan2 - 两个参数的反正切
    • atanh - 反双曲正切
  • b
    • base64_decode - 对使用 MIME base64 编码的数据进行解码
    • base64_encode - 使用 MIME base64 对数据进行编码
    • basename - 返回路径中的文件名部分
    • base_convert - 在任意进制之间转换数字
    • bbcode_add_element - Adds a bbcode element
    • bbcode_add_smiley - Adds a smiley to the parser
    • bbcode_create - Create a BBCode Resource
    • bbcode_destroy - Close BBCode_container resource
    • bbcode_parse - Parse a string following a given rule set
    • bbcode_set_arg_parser - Attach another parser in order to use another rule set for argument parsing
    • bbcode_set_flags - Set or alter parser options
    • bcadd - 2个任意精度数字的加法计算
    • bccomp - 比较两个任意精度的数字
    • bcdiv - 2个任意精度的数字除法计算
    • bcmod - 对一个任意精度数字取模
    • bcmul - 2个任意精度数字乘法计算
    • bcompiler_load - 从一个 bz 压缩过的文件中读取并创建类
    • bcompiler_load_exe - 从一个 bcompiler exe 文件中读取并创建类
    • bcompiler_parse_class - 读取一个类的字节码并回调一个用户的函数
    • bcompiler_read - 从一个文件句柄中读取并创建类
    • bcompiler_write_class - 写入定义过的类的字节码
    • bcompiler_write_constant - 写入定义过的常量的字节码
    • bcompiler_write_exe_footer - 写入开始位置以及 exe 类型文件的结尾信号
    • bcompiler_write_file - 写入 PHP 源码文件的字节码
    • bcompiler_write_footer - 写入单个字符 \x00 用于标识编译数据的结尾
    • bcompiler_write_function - 以字节码写入定义过的函数
    • bcompiler_write_functions_from_file - 以字节码写入一个文件中定义过的所以函数
    • bcompiler_write_header - 写入 bcompiler 头
    • bcompiler_write_included_filename - 写入一个包含的文件的字节码
    • bcpow - 任意精度数字的乘方
    • bcpowmod - Raise an arbitrary precision number to another, reduced by a specified modulus
    • bcscale - 设置所有bc数学函数的默认小数点保留位数
    • bcsqrt - 任意精度数字的二次方根
    • bcsub - 2个任意精度数字的减法
    • bin2hex - 函数把包含数据的二进制字符串转换为十六进制值
    • bindec - 二进制转换为十进制
    • bindtextdomain - Sets the path for a domain
    • bind_textdomain_codeset - Specify the character encoding in which the messages from the DOMAIN message catalog will be returned
    • blenc_encrypt - Encrypt a PHP script with BLENC.
    • boolval - 获取变量的布尔值
    • bson_decode - 反序列化一个 BSON 对象为 PHP 数组
    • bson_encode - 序列化一个 PHP 变量为 BSON 字符串
    • bzclose - 关闭一个 bzip2 文件
    • bzcompress - 把一个字符串压缩成 bzip2 编码数据
    • bzdecompress - 解压经 bzip2 编码过的数据
    • bzerrno - 返回一个 bzip2 错误码
    • bzerror - 返回包含 bzip2 错误号和错误字符串的一个 array
    • bzerrstr - 返回一个 bzip2 的错误字符串
    • bzflush - 强制写入所有写缓冲区的数据
    • bzopen - 打开一个经 bzip2 压缩过的文件
    • bzread - bzip2 文件二进制安全地读取
    • bzwrite - 二进制安全地写入 bzip2 文件
  • c
    • CachingIterator::count - The number of elements in the iterator
    • CachingIterator::current - Return the current element
    • CachingIterator::getCache - Retrieve the contents of the cache
    • CachingIterator::getFlags - Get flags used
    • CachingIterator::getInnerIterator - Returns the inner iterator
    • CachingIterator::hasNext - Check whether the inner iterator has a valid next element
    • CachingIterator::key - Return the key for the current element
    • CachingIterator::next - Move the iterator forward
    • CachingIterator::offsetExists - The offsetExists purpose
    • CachingIterator::offsetGet - The offsetGet purpose
    • CachingIterator::offsetSet - The offsetSet purpose
    • CachingIterator::offsetUnset - The offsetUnset purpose
    • CachingIterator::rewind - Rewind the iterator
    • CachingIterator::setFlags - The setFlags purpose
    • CachingIterator::valid - Check whether the current element is valid
    • CachingIterator::__construct - Construct a new CachingIterator object for the iterator.
    • CachingIterator::__toString - Return the string representation of the current element
    • Cairo::availableFonts - Retrieves the availables font types
    • Cairo::availableSurfaces - Retrieves all available surfaces
    • Cairo::statusToString - Retrieves the current status as string
    • Cairo::version - Retrives cairo's library version
    • Cairo::versionString - Retrieves cairo version as string
    • CairoContext::appendPath - Appends a path to current path
    • CairoContext::arc - Adds a circular arc
    • CairoContext::arcNegative - Adds a negative arc
    • CairoContext::clip - Establishes a new clip region
    • CairoContext::clipExtents - Computes the area inside the current clip
    • CairoContext::clipPreserve - Establishes a new clip region from the current clip
    • CairoContext::clipRectangleList - Retrieves the current clip as a list of rectangles
    • CairoContext::closePath - Closes the current path
    • CairoContext::copyPage - Emits the current page
    • CairoContext::copyPath - Creates a copy of the current path
    • CairoContext::copyPathFlat - Gets a flattened copy of the current path
    • CairoContext::curveTo - Adds a curve
    • CairoContext::deviceToUser - Transform a coordinate
    • CairoContext::deviceToUserDistance - Transform a distance
    • CairoContext::fill - Fills the current path
    • CairoContext::fillExtents - Computes the filled area
    • CairoContext::fillPreserve - Fills and preserve the current path
    • CairoContext::fontExtents - Get the font extents
    • CairoContext::getAntialias - Retrives the current antialias mode
    • CairoContext::getCurrentPoint - The getCurrentPoint purpose
    • CairoContext::getDash - The getDash purpose
    • CairoContext::getDashCount - The getDashCount purpose
    • CairoContext::getFillRule - The getFillRule purpose
    • CairoContext::getFontFace - The getFontFace purpose
    • CairoContext::getFontMatrix - The getFontMatrix purpose
    • CairoContext::getFontOptions - The getFontOptions purpose
    • CairoContext::getGroupTarget - The getGroupTarget purpose
    • CairoContext::getLineCap - The getLineCap purpose
    • CairoContext::getLineJoin - The getLineJoin purpose
    • CairoContext::getLineWidth - The getLineWidth purpose
    • CairoContext::getMatrix - The getMatrix purpose
    • CairoContext::getMiterLimit - The getMiterLimit purpose
    • CairoContext::getOperator - The getOperator purpose
    • CairoContext::getScaledFont - The getScaledFont purpose
    • CairoContext::getSource - The getSource purpose
    • CairoContext::getTarget - The getTarget purpose
    • CairoContext::getTolerance - The getTolerance purpose
    • CairoContext::glyphPath - The glyphPath purpose
    • CairoContext::hasCurrentPoint - The hasCurrentPoint purpose
    • CairoContext::identityMatrix - The identityMatrix purpose
    • CairoContext::inFill - The inFill purpose
    • CairoContext::inStroke - The inStroke purpose
    • CairoContext::lineTo - The lineTo purpose
    • CairoContext::mask - The mask purpose
    • CairoContext::maskSurface - The maskSurface purpose
    • CairoContext::moveTo - The moveTo purpose
    • CairoContext::newPath - The newPath purpose
    • CairoContext::newSubPath - The newSubPath purpose
    • CairoContext::paint - The paint purpose
    • CairoContext::paintWithAlpha - The paintWithAlpha purpose
    • CairoContext::pathExtents - The pathExtents purpose
    • CairoContext::popGroup - The popGroup purpose
    • CairoContext::popGroupToSource - The popGroupToSource purpose
    • CairoContext::pushGroup - The pushGroup purpose
    • CairoContext::pushGroupWithContent - The pushGroupWithContent purpose
    • CairoContext::rectangle - The rectangle purpose
    • CairoContext::relCurveTo - The relCurveTo purpose
    • CairoContext::relLineTo - The relLineTo purpose
    • CairoContext::relMoveTo - The relMoveTo purpose
    • CairoContext::resetClip - The resetClip purpose
    • CairoContext::restore - The restore purpose
    • CairoContext::rotate - The rotate purpose
    • CairoContext::save - The save purpose
    • CairoContext::scale - The scale purpose
    • CairoContext::selectFontFace - The selectFontFace purpose
    • CairoContext::setAntialias - The setAntialias purpose
    • CairoContext::setDash - The setDash purpose
    • CairoContext::setFillRule - The setFillRule purpose
    • CairoContext::setFontFace - The setFontFace purpose
    • CairoContext::setFontMatrix - The setFontMatrix purpose
    • CairoContext::setFontOptions - The setFontOptions purpose
    • CairoContext::setFontSize - The setFontSize purpose
    • CairoContext::setLineCap - The setLineCap purpose
    • CairoContext::setLineJoin - The setLineJoin purpose
    • CairoContext::setLineWidth - The setLineWidth purpose
    • CairoContext::setMatrix - The setMatrix purpose
    • CairoContext::setMiterLimit - The setMiterLimit purpose
    • CairoContext::setOperator - The setOperator purpose
    • CairoContext::setScaledFont - The setScaledFont purpose
    • CairoContext::setSource - The setSource purpose
    • CairoContext::setSourceRGB - The setSourceRGB purpose
    • CairoContext::setSourceRGBA - The setSourceRGBA purpose
    • CairoContext::setSourceSurface - The setSourceSurface purpose
    • CairoContext::setTolerance - The setTolerance purpose
    • CairoContext::showPage - The showPage purpose
    • CairoContext::showText - The showText purpose
    • CairoContext::status - The status purpose
    • CairoContext::stroke - The stroke purpose
    • CairoContext::strokeExtents - The strokeExtents purpose
    • CairoContext::strokePreserve - The strokePreserve purpose
    • CairoContext::textExtents - The textExtents purpose
    • CairoContext::textPath - The textPath purpose
    • CairoContext::transform - The transform purpose
    • CairoContext::translate - The translate purpose
    • CairoContext::userToDevice - The userToDevice purpose
    • CairoContext::userToDeviceDistance - The userToDeviceDistance purpose
    • CairoContext::__construct - Creates a new CairoContext
    • CairoFontFace::getType - Retrieves the font face type
    • CairoFontFace::status - Check for CairoFontFace errors
    • CairoFontFace::__construct - Creates a new CairoFontFace object
    • CairoFontOptions::equal - The equal purpose
    • CairoFontOptions::getAntialias - The getAntialias purpose
    • CairoFontOptions::getHintMetrics - The getHintMetrics purpose
    • CairoFontOptions::getHintStyle - The getHintStyle purpose
    • CairoFontOptions::getSubpixelOrder - The getSubpixelOrder purpose
    • CairoFontOptions::hash - The hash purpose
    • CairoFontOptions::merge - The merge purpose
    • CairoFontOptions::setAntialias - The setAntialias purpose
    • CairoFontOptions::setHintMetrics - The setHintMetrics purpose
    • CairoFontOptions::setHintStyle - The setHintStyle purpose
    • CairoFontOptions::setSubpixelOrder - The setSubpixelOrder purpose
    • CairoFontOptions::status - The status purpose
    • CairoFontOptions::__construct - The __construct purpose
    • CairoFormat::strideForWidth - Provides an appropiate stride to use
    • CairoGradientPattern::addColorStopRgb - The addColorStopRgb purpose
    • CairoGradientPattern::addColorStopRgba - The addColorStopRgba purpose
    • CairoGradientPattern::getColorStopCount - The getColorStopCount purpose
    • CairoGradientPattern::getColorStopRgba - The getColorStopRgba purpose
    • CairoGradientPattern::getExtend - The getExtend purpose
    • CairoGradientPattern::setExtend - The setExtend purpose
    • CairoImageSurface::createForData - The createForData purpose
    • CairoImageSurface::createFromPng - Creates a new CairoImageSurface form a png image file
    • CairoImageSurface::getData - Gets the image data as string
    • CairoImageSurface::getFormat - Get the image format
    • CairoImageSurface::getHeight - Retrieves the height of the CairoImageSurface
    • CairoImageSurface::getStride - The getStride purpose
    • CairoImageSurface::getWidth - Retrieves the width of the CairoImageSurface
    • CairoImageSurface::__construct - Creates a new CairoImageSurface
    • CairoLinearGradient::getPoints - The getPoints purpose
    • CairoLinearGradient::__construct - The __construct purpose
    • CairoMatrix::initIdentity - Creates a new identity matrix
    • CairoMatrix::initRotate - Creates a new rotated matrix
    • CairoMatrix::initScale - Creates a new scaling matrix
    • CairoMatrix::initTranslate - Creates a new translation matrix
    • CairoMatrix::invert - The invert purpose
    • CairoMatrix::multiply - The multiply purpose
    • CairoMatrix::rotate - The rotate purpose
    • CairoMatrix::scale - Applies scaling to a matrix
    • CairoMatrix::transformDistance - The transformDistance purpose
    • CairoMatrix::transformPoint - The transformPoint purpose
    • CairoMatrix::translate - The translate purpose
    • CairoMatrix::__construct - Creates a new CairoMatrix object
    • CairoPattern::getMatrix - The getMatrix purpose
    • CairoPattern::getType - The getType purpose
    • CairoPattern::setMatrix - The setMatrix purpose
    • CairoPattern::status - The status purpose
    • CairoPattern::__construct - The __construct purpose
    • CairoPdfSurface::setSize - The setSize purpose
    • CairoPdfSurface::__construct - The __construct purpose
    • CairoPsSurface::dscBeginPageSetup - The dscBeginPageSetup purpose
    • CairoPsSurface::dscBeginSetup - The dscBeginSetup purpose
    • CairoPsSurface::dscComment - The dscComment purpose
    • CairoPsSurface::getEps - The getEps purpose
    • CairoPsSurface::getLevels - The getLevels purpose
    • CairoPsSurface::levelToString - The levelToString purpose
    • CairoPsSurface::restrictToLevel - The restrictToLevel purpose
    • CairoPsSurface::setEps - The setEps purpose
    • CairoPsSurface::setSize - The setSize purpose
    • CairoPsSurface::__construct - The __construct purpose
    • CairoRadialGradient::getCircles - The getCircles purpose
    • CairoRadialGradient::__construct - The __construct purpose
    • CairoScaledFont::extents - The extents purpose
    • CairoScaledFont::getCtm - The getCtm purpose
    • CairoScaledFont::getFontFace - The getFontFace purpose
    • CairoScaledFont::getFontMatrix - The getFontMatrix purpose
    • CairoScaledFont::getFontOptions - The getFontOptions purpose
    • CairoScaledFont::getScaleMatrix - The getScaleMatrix purpose
    • CairoScaledFont::getType - The getType purpose
    • CairoScaledFont::glyphExtents - The glyphExtents purpose
    • CairoScaledFont::status - The status purpose
    • CairoScaledFont::textExtents - The textExtents purpose
    • CairoScaledFont::__construct - The __construct purpose
    • CairoSolidPattern::getRgba - The getRgba purpose
    • CairoSolidPattern::__construct - The __construct purpose
    • CairoSurface::copyPage - The copyPage purpose
    • CairoSurface::createSimilar - The createSimilar purpose
    • CairoSurface::finish - The finish purpose
    • CairoSurface::flush - The flush purpose
    • CairoSurface::getContent - The getContent purpose
    • CairoSurface::getDeviceOffset - The getDeviceOffset purpose
    • CairoSurface::getFontOptions - The getFontOptions purpose
    • CairoSurface::getType - The getType purpose
    • CairoSurface::markDirty - The markDirty purpose
    • CairoSurface::markDirtyRectangle - The markDirtyRectangle purpose
    • CairoSurface::setDeviceOffset - The setDeviceOffset purpose
    • CairoSurface::setFallbackResolution - The setFallbackResolution purpose
    • CairoSurface::showPage - The showPage purpose
    • CairoSurface::status - The status purpose
    • CairoSurface::writeToPng - The writeToPng purpose
    • CairoSurface::__construct - The __construct purpose
    • CairoSurfacePattern::getExtend - The getExtend purpose
    • CairoSurfacePattern::getFilter - The getFilter purpose
    • CairoSurfacePattern::getSurface - The getSurface purpose
    • CairoSurfacePattern::setExtend - The setExtend purpose
    • CairoSurfacePattern::setFilter - The setFilter purpose
    • CairoSurfacePattern::__construct - The __construct purpose
    • CairoSvgSurface::getVersions - Used to retrieve a list of supported SVG versions
    • CairoSvgSurface::restrictToVersion - The restrictToVersion purpose
    • CairoSvgSurface::versionToString - The versionToString purpose
    • CairoSvgSurface::__construct - The __construct purpose
    • cairo_create - Returns a new CairoContext object on the requested surface.
    • cairo_font_face_get_type - Description
    • cairo_font_options_create - Description
    • cairo_font_options_equal - Description
    • cairo_font_options_get_antialias - Description
    • cairo_font_options_get_hint_metrics - Description
    • cairo_font_options_get_hint_style - Description
    • cairo_font_options_get_subpixel_order - Description
    • cairo_font_options_hash - Description
    • cairo_font_options_merge - Description
    • cairo_font_options_set_antialias - Description
    • cairo_font_options_set_hint_metrics - Description
    • cairo_font_options_set_hint_style - Description
    • cairo_font_options_set_subpixel_order - Description
    • cairo_font_options_status - Description
    • cairo_format_stride_for_width - Description
    • cairo_image_surface_create - Description
    • cairo_image_surface_create_for_data - Description
    • cairo_image_surface_create_from_png - Description
    • cairo_image_surface_get_data - Description
    • cairo_image_surface_get_format - Description
    • cairo_image_surface_get_height - Description
    • cairo_image_surface_get_stride - Description
    • cairo_image_surface_get_width - Description
    • cairo_matrix_create_translate - 别名 CairoMatrix::initTranslate
    • cairo_matrix_invert - Description
    • cairo_matrix_multiply - Description
    • cairo_matrix_rotate - Description
    • cairo_matrix_transform_distance - Description
    • cairo_matrix_transform_point - Description
    • cairo_matrix_translate - Description
    • cairo_pattern_add_color_stop_rgb - Description
    • cairo_pattern_add_color_stop_rgba - Description
    • cairo_pattern_create_for_surface - Description
    • cairo_pattern_create_linear - Description
    • cairo_pattern_create_radial - Description
    • cairo_pattern_create_rgb - Description
    • cairo_pattern_create_rgba - Description
    • cairo_pattern_get_color_stop_count - Description
    • cairo_pattern_get_color_stop_rgba - Description
    • cairo_pattern_get_extend - Description
    • cairo_pattern_get_filter - Description
    • cairo_pattern_get_linear_points - Description
    • cairo_pattern_get_matrix - Description
    • cairo_pattern_get_radial_circles - Description
    • cairo_pattern_get_rgba - Description
    • cairo_pattern_get_surface - Description
    • cairo_pattern_get_type - Description
    • cairo_pattern_set_extend - Description
    • cairo_pattern_set_filter - Description
    • cairo_pattern_set_matrix - Description
    • cairo_pattern_status - Description
    • cairo_pdf_surface_create - Description
    • cairo_pdf_surface_set_size - Description
    • cairo_ps_get_levels - Description
    • cairo_ps_level_to_string - Description
    • cairo_ps_surface_create - Description
    • cairo_ps_surface_dsc_begin_page_setup - Description
    • cairo_ps_surface_dsc_begin_setup - Description
    • cairo_ps_surface_dsc_comment - Description
    • cairo_ps_surface_get_eps - Description
    • cairo_ps_surface_restrict_to_level - Description
    • cairo_ps_surface_set_eps - Description
    • cairo_ps_surface_set_size - Description
    • cairo_scaled_font_create - Description
    • cairo_scaled_font_extents - Description
    • cairo_scaled_font_get_ctm - Description
    • cairo_scaled_font_get_font_face - Description
    • cairo_scaled_font_get_font_matrix - Description
    • cairo_scaled_font_get_font_options - Description
    • cairo_scaled_font_get_scale_matrix - Description
    • cairo_scaled_font_get_type - Description
    • cairo_scaled_font_glyph_extents - Description
    • cairo_scaled_font_status - Description
    • cairo_scaled_font_text_extents - Description
    • cairo_surface_copy_page - Description
    • cairo_surface_create_similar - Description
    • cairo_surface_finish - Description
    • cairo_surface_flush - Description
    • cairo_surface_get_content - Description
    • cairo_surface_get_device_offset - Description
    • cairo_surface_get_font_options - Description
    • cairo_surface_get_type - Description
    • cairo_surface_mark_dirty - Description
    • cairo_surface_mark_dirty_rectangle - Description
    • cairo_surface_set_device_offset - Description
    • cairo_surface_set_fallback_resolution - Description
    • cairo_surface_show_page - Description
    • cairo_surface_status - Description
    • cairo_surface_write_to_png - Description
    • cairo_svg_surface_create - Description
    • cairo_svg_surface_restrict_to_version - Description
    • cairo_svg_version_to_string - Description
    • CallbackFilterIterator::accept - Calls the callback with the current value, the current key and the inner iterator as arguments
    • CallbackFilterIterator::__construct - Create a filtered iterator from another iterator
    • call_user_func - 把第一个参数作为回调函数调用
    • call_user_func_array - 调用回调函数，并把一个数组参数作为回调函数的参数
    • call_user_method - 对特定对象调用用户方法（已废弃）
    • call_user_method_array - 调用一个用户方法，同时传递参数数组（已废弃）
    • cal_days_in_month - 返回某个历法中某年中某月的天数
    • cal_from_jd - 转换Julian Day计数到一个支持的历法。
    • cal_info - 返回选定历法的信息
    • cal_to_jd - 从一个支持的历法转变为Julian Day计数。
    • ceil - 进一法取整
    • chdb::get - Gets the value associated with a key
    • chdb::__construct - Creates a chdb instance
    • chdb_create - Creates a chdb file
    • chdir - 改变目录
    • checkdate - 验证一个格里高里日期
    • checkdnsrr - 给指定的主机（域名）或者IP地址做DNS通信检查
    • chgrp - 改变文件所属的组
    • chmod - 改变文件模式
    • chop - rtrim 的别名
    • chown - 改变文件的所有者
    • chr - 返回指定的字符
    • chroot - 改变根目录
    • chunk_split - 将字符串分割成小块
    • classkit_import - Import new class method definitions from a file
    • classkit_method_add - Dynamically adds a new method to a given class
    • classkit_method_copy - Copies a method from class to another
    • classkit_method_redefine - Dynamically changes the code of the given method
    • classkit_method_remove - Dynamically removes the given method
    • classkit_method_rename - Dynamically changes the name of the given method
    • class_alias - 为一个类创建别名
    • class_exists - 检查类是否已定义
    • class_implements - 返回指定的类实现的所有接口。
    • class_parents - 返回指定类的父类。
    • class_uses - Return the traits used by the given class
    • clearstatcache - 清除文件状态缓存
    • cli_get_process_title - Returns the current process title
    • cli_set_process_title - Sets the process title
    • closedir - 关闭目录句柄
    • closelog - 关闭系统日志链接
    • Closure::bind - 复制一个闭包，绑定指定的$this对象和类作用域。
    • Closure::bindTo - 复制当前闭包对象，绑定指定的$this对象和类作用域。
    • Closure::__construct - 用于禁止实例化的构造函数
    • Collator::asort - Sort array maintaining index association
    • Collator::compare - Compare two Unicode strings
    • Collator::create - Create a collator
    • Collator::getAttribute - Get collation attribute value
    • Collator::getErrorCode - Get collator's last error code
    • Collator::getErrorMessage - Get text for collator's last error code
    • Collator::getLocale - Get the locale name of the collator
    • Collator::getSortKey - Get sorting key for a string
    • Collator::getStrength - Get current collation strength
    • Collator::setAttribute - Set collation attribute
    • Collator::setStrength - Set collation strength
    • Collator::sort - Sort array using specified collator
    • Collator::sortWithSortKeys - Sort array using specified collator and sort keys
    • Collator::__construct - Create a collator
    • Collectable::isGarbage - Determine whether an object has been marked as garbage
    • Collectable::setGarbage - Mark an object as garbage
    • compact - 建立一个数组，包括变量名和它们的值
    • com_create_guid - Generate a globally unique identifier (GUID)
    • com_event_sink - Connect events from a COM object to a PHP object
    • com_get_active_object - Returns a handle to an already running instance of a COM object
    • com_load_typelib - 装载一个 Typelib
    • com_message_pump - Process COM messages, sleeping for up to timeoutms milliseconds
    • com_print_typeinfo - Print out a PHP class definition for a dispatchable interface
    • Cond::broadcast - 广播条件变量
    • Cond::create - 创建一个条件变量
    • Cond::destroy - 销毁条件变量
    • Cond::signal - 发送唤醒信号
    • Cond::wait - 等待
    • connection_aborted - 检查客户端是否已经断开
    • connection_status - 返回连接的状态位
    • constant - 返回一个常量的值
    • Constants for PDO_4D - Constants for PDO_4D
    • Context 参数 - Context 参数列表
    • convert_cyr_string - 将字符由一种 Cyrillic 字符转换成另一种
    • convert_uudecode - 解码一个 uuencode 编码的字符串
    • convert_uuencode - 使用 uuencode 编码一个字符串
    • copy - 拷贝文件
    • cos - 余弦
    • cosh - 双曲余弦
    • count - 计算数组中的单元数目或对象中的属性个数
    • Countable::count - 统计一个对象的元素个数
    • Counter::bumpValue - 修改计数器的当前值。
    • Counter::getMeta - 返回计数器的部分元信息。
    • Counter::getNamed - 取回一个名称已存在的计数器。
    • Counter::getValue - 获取计数器的当前值。
    • Counter::resetValue - 重置计数器的当前值。
    • Counter::setCounterClass - 设置由 Counter::getNamed 返回的计数器类。
    • Counter::__construct - 创建一个包含单一数值的计数器实例。
    • counter_bump - 修改简单计数器的当前值。
    • counter_bump_value - 更新计数器资源的当前值。
    • counter_create - 创建一个包含单个数值的计数器。
    • counter_get - 获取简单计数器的当前值。
    • counter_get_meta - 返回计数器资源的部分元信息。
    • counter_get_named - 按名称查询一个已存在的计数器，并作为资源返回。
    • counter_get_value - 获取计数器资源的当前值。
    • counter_reset - 重置简单计数器的当前值。
    • counter_reset_value - 重置计数器资源的当前值。
    • count_chars - 返回字符串所用字符的信息
    • crack_check - 用给定的密码来进行破解测试
    • crack_closedict - Closes an open CrackLib dictionary
    • crack_getlastmessage - Returns the message from the last obscure check
    • crack_opendict - Opens a new CrackLib dictionary
    • crc32 - 计算一个字符串的 crc32 多项式
    • create_function - Create an anonymous (lambda-style) function
    • crypt - 单向字符串散列
    • ctype_alnum - 做字母和数字字符检测
    • ctype_alpha - 做纯字符检测
    • ctype_cntrl - 做控制字符检测
    • ctype_digit - 做纯数字检测
    • ctype_graph - 做可打印字符串检测，空格除外
    • ctype_lower - 做小写字符检测
    • ctype_print - 做可打印字符检测
    • ctype_punct - 检测可打印的字符是不是不包含空白、数字和字母
    • ctype_space - 做空白字符检测
    • ctype_upper - 做大写字母检测
    • ctype_xdigit - 检测字符串是否只包含十六进制字符
    • cubrid_affected_rows - Return the number of rows affected by the last SQL statement
    • cubrid_bind - Bind variables to a prepared statement as parameters
    • cubrid_client_encoding - Return the current CUBRID connection charset
    • cubrid_close - Close CUBRID connection
    • cubrid_close_prepare - Close the request handle
    • cubrid_close_request - Close the request handle
    • cubrid_column_names - Get the column names in result
    • cubrid_column_types - Get column types in result
    • cubrid_col_get - Get contents of collection type column using OID
    • cubrid_col_size - Get the number of elements in collection type column using OID
    • cubrid_commit - Commit a transaction
    • cubrid_connect - Open a connection to a CUBRID Server
    • cubrid_connect_with_url - Establish the environment for connecting to CUBRID server
    • cubrid_current_oid - Get OID of the current cursor location
    • cubrid_data_seek - Move the internal row pointer of the CUBRID result
    • cubrid_db_name - Get db name from results of cubrid_list_dbs
    • cubrid_disconnect - Close a database connection
    • cubrid_drop - Delete an instance using OID
    • cubrid_errno - Return the numerical value of the error message from previous CUBRID operation
    • cubrid_error - Get the error message
    • cubrid_error_code - Get error code for the most recent function call
    • cubrid_error_code_facility - Get the facility code of error
    • cubrid_error_msg - Get last error message for the most recent function call
    • cubrid_execute - Execute a prepared SQL statement
    • cubrid_fetch - Fetch the next row from a result set
    • cubrid_fetch_array - Fetch a result row as an associative array, a numeric array, or both
    • cubrid_fetch_assoc - Return the associative array that corresponds to the fetched row
    • cubrid_fetch_field - Get column information from a result and return as an object
    • cubrid_fetch_lengths - Return an array with the lengths of the values of each field from the current row
    • cubrid_fetch_object - Fetch the next row and return it as an object
    • cubrid_fetch_row - Return a numerical array with the values of the current row
    • cubrid_field_flags - Return a string with the flags of the given field offset
    • cubrid_field_len - Get the maximum length of the specified field
    • cubrid_field_name - Return the name of the specified field index
    • cubrid_field_seek - Move the result set cursor to the specified field offset
    • cubrid_field_table - Return the name of the table of the specified field
    • cubrid_field_type - Return the type of the column corresponding to the given field offset
    • cubrid_free_result - Free the memory occupied by the result data
    • cubrid_get - Get a column using OID
    • cubrid_get_autocommit - Get auto-commit mode of the connection
    • cubrid_get_charset - Return the current CUBRID connection charset
    • cubrid_get_class_name - Get the class name using OID
    • cubrid_get_client_info - Return the client library version
    • cubrid_get_db_parameter - Returns the CUBRID database parameters
    • cubrid_get_query_timeout - Get the query timeout value of the request
    • cubrid_get_server_info - Return the CUBRID server version
    • cubrid_insert_id - Return the ID generated for the last updated AUTO_INCREMENT column
    • cubrid_is_instance - Check whether the instance pointed by OID exists
    • cubrid_list_dbs - Return an array with the list of all existing CUBRID databases
    • cubrid_load_from_glo - Read data from a GLO instance and save it in a file
    • cubrid_lob2_bind - Bind a lob object or a string as a lob object to a prepared statement as parameters.
    • cubrid_lob2_close - Close LOB object.
    • cubrid_lob2_export - Export the lob object to a file.
    • cubrid_lob2_import - Import BLOB/CLOB data from a file.
    • cubrid_lob2_new - Create a lob object.
    • cubrid_lob2_read - Read from BLOB/CLOB data.
    • cubrid_lob2_seek - Move the cursor of a lob object.
    • cubrid_lob2_seek64 - Move the cursor of a lob object.
    • cubrid_lob2_size - Get a lob object's size.
    • cubrid_lob2_size64 - Get a lob object's size.
    • cubrid_lob2_tell - Tell the cursor position of the LOB object.
    • cubrid_lob2_tell64 - Tell the cursor position of the LOB object.
    • cubrid_lob2_write - Write to a lob object.
    • cubrid_lob_close - Close BLOB/CLOB data
    • cubrid_lob_export - Export BLOB/CLOB data to file
    • cubrid_lob_get - Get BLOB/CLOB data
    • cubrid_lob_send - Read BLOB/CLOB data and send straight to browser
    • cubrid_lob_size - Get BLOB/CLOB data size
    • cubrid_lock_read - Set a read lock on the given OID
    • cubrid_lock_write - Set a write lock on the given OID
    • cubrid_move_cursor - Move the cursor in the result
    • cubrid_new_glo - Create a glo instance
    • cubrid_next_result - Get result of next query when executing multiple SQL statements
    • cubrid_num_cols - Return the number of columns in the result set
    • cubrid_num_fields - Return the number of columns in the result set
    • cubrid_num_rows - Get the number of rows in the result set
    • cubrid_pconnect - Open a persistent connection to a CUBRID server
    • cubrid_pconnect_with_url - Open a persistent connection to CUBRID server
    • cubrid_ping - Ping a server connection or reconnect if there is no connection
    • cubrid_prepare - Prepare a SQL statement for execution
    • cubrid_put - Update a column using OID
    • cubrid_query - Send a CUBRID query
    • cubrid_real_escape_string - Escape special characters in a string for use in an SQL statement
    • cubrid_result - Return the value of a specific field in a specific row
    • cubrid_rollback - Roll back a transaction
    • cubrid_save_to_glo - Save requested file in a GLO instance
    • cubrid_schema - Get the requested schema information
    • cubrid_send_glo - Read data from glo and send it to std output
    • cubrid_seq_drop - Delete an element from sequence type column using OID
    • cubrid_seq_insert - Insert an element to a sequence type column using OID
    • cubrid_seq_put - Update the element value of sequence type column using OID
    • cubrid_set_add - Insert a single element to set type column using OID
    • cubrid_set_autocommit - Set autocommit mode of the connection
    • cubrid_set_db_parameter - Sets the CUBRID database parameters
    • cubrid_set_drop - Delete an element from set type column using OID
    • cubrid_set_query_timeout - Set the timeout time of query execution
    • cubrid_unbuffered_query - Perform a query without fetching the results into memory
    • cubrid_version - Get the CUBRID PHP module's version
    • CURL context options - CURL 上下文选项列表
    • CURLFile::getFilename - 获取被上传文件的 文件名
    • CURLFile::getMimeType - 获取被上传文件的 MIME 类型
    • CURLFile::getPostFilename - 获取 POST 请求时使用的 文件名
    • CURLFile::setMimeType - 设置被上传文件的 MIME 类型
    • CURLFile::setPostFilename - 设置 POST 请求时使用的 文件名
    • CURLFile::__construct - 创建 CURLFile 对象
    • CURLFile::__wakeup - 反序列化句柄
    • curl_close - 关闭一个cURL会话
    • curl_copy_handle - 复制一个cURL句柄和它的所有选项
    • curl_errno - 返回最后一次的错误号
    • curl_error - 返回一个保护当前会话最近一次错误的字符串
    • curl_escape - 使用 URL 编码给定的字符串
    • curl_exec - 执行一个cURL会话
    • curl_getinfo - 获取一个cURL连接资源句柄的信息
    • curl_init - 初始化一个cURL会话
    • curl_multi_add_handle - 向curl批处理会话中添加单独的curl句柄
    • curl_multi_close - 关闭一组cURL句柄
    • curl_multi_exec - 运行当前 cURL 句柄的子连接
    • curl_multi_getcontent - 如果设置了CURLOPT_RETURNTRANSFER，则返回获取的输出的文本流
    • curl_multi_info_read - 获取当前解析的cURL的相关传输信息
    • curl_multi_init - 返回一个新cURL批处理句柄
    • curl_multi_remove_handle - 移除curl批处理句柄资源中的某个句柄资源
    • curl_multi_select - 等待所有cURL批处理中的活动连接
    • curl_multi_setopt - 为 cURL 并行处理设置一个选项
    • curl_multi_strerror - 返回字符串描述的错误代码
    • curl_pause - 暂停和取消暂停一个连接。
    • curl_reset - 重置一个 libcurl 会话句柄的所有的选项
    • curl_setopt - 设置一个cURL传输选项
    • curl_setopt_array - 为cURL传输会话批量设置选项
    • curl_share_close - 关闭 cURL 共享句柄
    • curl_share_init - 初始化一个 cURL 共享句柄。
    • curl_share_setopt - 为 cURL 共享句柄设置选项。
    • curl_strerror - 返回错误代码的字符串描述
    • curl_unescape - 解码给定的 URL 编码的字符串
    • curl_version - 获取cURL版本信息
    • current - 返回数组中的当前单元
    • cyrus_authenticate - Authenticate against a Cyrus IMAP server
    • cyrus_bind - Bind callbacks to a Cyrus IMAP connection
    • cyrus_close - Close connection to a Cyrus IMAP server
    • cyrus_connect - Connect to a Cyrus IMAP server
    • cyrus_query - Send a query to a Cyrus IMAP server
    • cyrus_unbind - Unbind ...
  • d
    • data:// - 数据（RFC 2397）
    • date - 格式化一个本地时间／日期
    • DateInterval::createFromDateString - Sets up a DateInterval from the relative parts of the string
    • DateInterval::format - Formats the interval
    • DateInterval::__construct - Creates a new DateInterval object
    • DatePeriod::getDateInterval - Gets the interval
    • DatePeriod::getEndDate - Gets the end date
    • DatePeriod::getStartDate - Gets the start date
    • DatePeriod::__construct - Creates a new DatePeriod object
    • DateTime::add - Adds an amount of days, months, years, hours, minutes and seconds to a DateTime object
    • DateTime::createFromFormat - Parses a time string according to a specified format
    • DateTime::diff - Returns the difference between two DateTime objects
    • DateTime::format - Returns date formatted according to given format
    • DateTime::getLastErrors - Returns the warnings and errors
    • DateTime::getOffset - Returns the timezone offset
    • DateTime::getTimestamp - Gets the Unix timestamp
    • DateTime::getTimezone - Return time zone relative to given DateTime
    • DateTime::modify - Alters the timestamp
    • DateTime::setDate - Sets the date
    • DateTime::setISODate - Sets the ISO date
    • DateTime::setTime - Sets the time
    • DateTime::setTimestamp - Sets the date and time based on an Unix timestamp
    • DateTime::setTimezone - Sets the time zone for the DateTime object
    • DateTime::sub - Subtracts an amount of days, months, years, hours, minutes and seconds from a DateTime object
    • DateTime::__construct - Returns new DateTime object
    • DateTime::__set_state - The __set_state handler
    • DateTime::__wakeup - The __wakeup handler
    • DateTimeImmutable::add - Adds an amount of days, months, years, hours, minutes and seconds
    • DateTimeImmutable::createFromFormat - Returns new DateTimeImmutable object formatted according to the specified format
    • DateTimeImmutable::createFromMutable - Returns new DateTimeImmutable object encapsulating the given DateTime object
    • DateTimeImmutable::getLastErrors - Returns the warnings and errors
    • DateTimeImmutable::modify - Creates a new object with modified timestamp
    • DateTimeImmutable::setDate - Sets the date
    • DateTimeImmutable::setISODate - Sets the ISO date
    • DateTimeImmutable::setTime - Sets the time
    • DateTimeImmutable::setTimestamp - Sets the date and time based on an Unix timestamp
    • DateTimeImmutable::setTimezone - Sets the time zone
    • DateTimeImmutable::sub - Subtracts an amount of days, months, years, hours, minutes and seconds
    • DateTimeImmutable::__construct - Returns new DateTimeImmutable object
    • DateTimeImmutable::__set_state - The __set_state handler
    • DateTimeZone::getLocation - 返回与时区相关的定位信息。
    • DateTimeZone::getName - 返回时区名称。
    • DateTimeZone::getOffset - 返回相对于 GMT 的时差。
    • DateTimeZone::getTransitions - Returns all transitions for the timezone
    • DateTimeZone::listAbbreviations - 返回一个包含 dst (夏令时)，时差和时区信息的关联数组。
    • DateTimeZone::listIdentifiers - 返回一个包含了所有时区标示符的索引数组。
    • DateTimeZone::__construct - 创建新的DateTimeZone对象
    • date_add - 别名 DateTime::add
    • date_create - 别名 DateTime::__construct
    • date_create_from_format - 别名 DateTime::createFromFormat
    • date_create_immutable - 别名 DateTimeImmutable::__construct
    • date_create_immutable_from_format - 别名 DateTimeImmutable::createFromFormat
    • date_date_set - 别名 DateTime::setDate
    • date_default_timezone_get - 取得一个脚本中所有日期时间函数所使用的默认时区
    • date_default_timezone_set - 设定用于一个脚本中所有日期时间函数的默认时区
    • date_diff - 别名 DateTime::diff
    • date_format - 别名 DateTime::format
    • date_get_last_errors - 别名 DateTime::getLastErrors
    • date_interval_create_from_date_string - 别名 DateInterval::createFromDateString
    • date_interval_format - 别名 DateInterval::format
    • date_isodate_set - 别名 DateTime::setISODate
    • date_modify - 别名 DateTime::modify
    • date_offset_get - 别名 DateTime::getOffset
    • date_parse - Returns associative array with detailed info about given date
    • date_parse_from_format - Get info about given date formatted according to the specified format
    • date_sub - 别名 DateTime::sub
    • date_sunrise - 返回给定的日期与地点的日出时间
    • date_sunset - 返回给定的日期与地点的日落时间
    • date_sun_info - Returns an array with information about sunset/sunrise and twilight begin/end
    • date_timestamp_get - 别名 DateTime::getTimestamp
    • date_timestamp_set - 别名 DateTime::setTimestamp
    • date_timezone_get - 别名 DateTime::getTimezone
    • date_timezone_set - 别名 DateTime::setTimezone
    • date_time_set - 别名 DateTime::setTime
    • db2_autocommit - Returns or sets the AUTOCOMMIT state for a database connection
    • db2_bind_param - Binds a PHP variable to an SQL statement parameter
    • db2_client_info - Returns an object with properties that describe the DB2 database client
    • db2_close - Closes a database connection
    • db2_columns - Returns a result set listing the columns and associated metadata for a table
    • db2_column_privileges - Returns a result set listing the columns and associated privileges for a table
    • db2_commit - Commits a transaction
    • db2_connect - Returns a connection to a database
    • db2_conn_error - Returns a string containing the SQLSTATE returned by the last connection attempt
    • db2_conn_errormsg - Returns the last connection error message and SQLCODE value
    • db2_cursor_type - Returns the cursor type used by a statement resource
    • db2_escape_string - Used to escape certain characters
    • db2_exec - Executes an SQL statement directly
    • db2_execute - Executes a prepared SQL statement
    • db2_fetch_array - Returns an array, indexed by column position, representing a row in a result set
    • db2_fetch_assoc - Returns an array, indexed by column name, representing a row in a result set
    • db2_fetch_both - Returns an array, indexed by both column name and position, representing a row in a result set
    • db2_fetch_object - Returns an object with properties representing columns in the fetched row
    • db2_fetch_row - Sets the result set pointer to the next row or requested row
    • db2_field_display_size - Returns the maximum number of bytes required to display a column
    • db2_field_name - Returns the name of the column in the result set
    • db2_field_num - Returns the position of the named column in a result set
    • db2_field_precision - Returns the precision of the indicated column in a result set
    • db2_field_scale - Returns the scale of the indicated column in a result set
    • db2_field_type - Returns the data type of the indicated column in a result set
    • db2_field_width - Returns the width of the current value of the indicated column in a result set
    • db2_foreign_keys - Returns a result set listing the foreign keys for a table
    • db2_free_result - Frees resources associated with a result set
    • db2_free_stmt - Frees resources associated with the indicated statement resource
    • db2_get_option - Retrieves an option value for a statement resource or a connection resource
    • db2_last_insert_id - Returns the auto generated ID of the last insert query that successfully executed on this connection
    • db2_lob_read - Gets a user defined size of LOB files with each invocation
    • db2_next_result - Requests the next result set from a stored procedure
    • db2_num_fields - Returns the number of fields contained in a result set
    • db2_num_rows - Returns the number of rows affected by an SQL statement
    • db2_pclose - Closes a persistent database connection
    • db2_pconnect - Returns a persistent connection to a database
    • db2_prepare - Prepares an SQL statement to be executed
    • db2_primary_keys - Returns a result set listing primary keys for a table
    • db2_procedures - Returns a result set listing the stored procedures registered in a database
    • db2_procedure_columns - Returns a result set listing stored procedure parameters
    • db2_result - Returns a single column from a row in the result set
    • db2_rollback - Rolls back a transaction
    • db2_server_info - Returns an object with properties that describe the DB2 database server
    • db2_set_option - Set options for connection or statement resources
    • db2_special_columns - Returns a result set listing the unique row identifier columns for a table
    • db2_statistics - Returns a result set listing the index and statistics for a table
    • db2_stmt_error - Returns a string containing the SQLSTATE returned by an SQL statement
    • db2_stmt_errormsg - Returns a string containing the last SQL statement error message
    • db2_tables - Returns a result set listing the tables and associated metadata in a database
    • db2_table_privileges - Returns a result set listing the tables and associated privileges in a database
    • dbase_add_record - Adds a record to a database
    • dbase_close - Closes a database
    • dbase_create - Creates a database
    • dbase_delete_record - Deletes a record from a database
    • dbase_get_header_info - Gets the header info of a database
    • dbase_get_record - Gets a record from a database as an indexed array
    • dbase_get_record_with_names - Gets a record from a database as an associative array
    • dbase_numfields - Gets the number of fields of a database
    • dbase_numrecords - Gets the number of records in a database
    • dbase_open - Opens a database
    • dbase_pack - Packs a database
    • dbase_replace_record - Replaces a record in a database
    • dba_close - Close a DBA database
    • dba_delete - Delete DBA entry specified by key
    • dba_exists - Check whether key exists
    • dba_fetch - Fetch data specified by key
    • dba_firstkey - Fetch first key
    • dba_handlers - List all the handlers available
    • dba_insert - Insert entry
    • dba_key_split - Splits a key in string representation into array representation
    • dba_list - List all open database files
    • dba_nextkey - Fetch next key
    • dba_open - Open database
    • dba_optimize - Optimize database
    • dba_popen - Open database persistently
    • dba_replace - Replace or insert entry
    • dba_sync - Synchronize database
    • dbplus_add - Add a tuple to a relation
    • dbplus_aql - Perform AQL query
    • dbplus_chdir - Get/Set database virtual current directory
    • dbplus_close - Close a relation
    • dbplus_curr - Get current tuple from relation
    • dbplus_errcode - Get error string for given errorcode or last error
    • dbplus_errno - Get error code for last operation
    • dbplus_find - Set a constraint on a relation
    • dbplus_first - Get first tuple from relation
    • dbplus_flush - Flush all changes made on a relation
    • dbplus_freealllocks - Free all locks held by this client
    • dbplus_freelock - Release write lock on tuple
    • dbplus_freerlocks - Free all tuple locks on given relation
    • dbplus_getlock - Get a write lock on a tuple
    • dbplus_getunique - Get an id number unique to a relation
    • dbplus_info - Get information about a relation
    • dbplus_last - Get last tuple from relation
    • dbplus_lockrel - Request write lock on relation
    • dbplus_next - Get next tuple from relation
    • dbplus_open - Open relation file
    • dbplus_prev - Get previous tuple from relation
    • dbplus_rchperm - Change relation permissions
    • dbplus_rcreate - Creates a new DB++ relation
    • dbplus_rcrtexact - Creates an exact but empty copy of a relation including indices
    • dbplus_rcrtlike - Creates an empty copy of a relation with default indices
    • dbplus_resolve - Resolve host information for relation
    • dbplus_restorepos - Restore position
    • dbplus_rkeys - Specify new primary key for a relation
    • dbplus_ropen - Open relation file local
    • dbplus_rquery - Perform local (raw) AQL query
    • dbplus_rrename - Rename a relation
    • dbplus_rsecindex - Create a new secondary index for a relation
    • dbplus_runlink - Remove relation from filesystem
    • dbplus_rzap - Remove all tuples from relation
    • dbplus_savepos - Save position
    • dbplus_setindex - Set index
    • dbplus_setindexbynumber - Set index by number
    • dbplus_sql - Perform SQL query
    • dbplus_tcl - Execute TCL code on server side
    • dbplus_tremove - Remove tuple and return new current tuple
    • dbplus_undo - Undo
    • dbplus_undoprepare - Prepare undo
    • dbplus_unlockrel - Give up write lock on relation
    • dbplus_unselect - Remove a constraint from relation
    • dbplus_update - Update specified tuple in relation
    • dbplus_xlockrel - Request exclusive lock on relation
    • dbplus_xunlockrel - Free exclusive lock on relation
    • dbx_close - Close an open connection/database
    • dbx_compare - Compare two rows for sorting purposes
    • dbx_connect - Open a connection/database
    • dbx_error - Report the error message of the latest function call in the module
    • dbx_escape_string - Escape a string so it can safely be used in an sql-statement
    • dbx_fetch_row - Fetches rows from a query-result that had the DBX_RESULT_UNBUFFERED flag set
    • dbx_query - Send a query and fetch all results (if any)
    • dbx_sort - Sort a result from a dbx_query by a custom sort function
    • dcgettext - Overrides the domain for a single lookup
    • dcngettext - Plural version of dcgettext
    • debug_backtrace - 产生一条回溯跟踪(backtrace)
    • debug_print_backtrace - 打印一条回溯。
    • debug_zval_dump - Dumps a string representation of an internal zend value to output
    • decbin - 十进制转换为二进制
    • dechex - 十进制转换为十六进制
    • decoct - 十进制转换为八进制
    • define - 定义一个常量
    • defined - 检查某个名称的常量是否存在
    • define_syslog_variables - Initializes all syslog related variables
    • deflate_add - Incrementally deflate data
    • deflate_init - Initialize an incremental deflate context
    • deg2rad - 将角度转换为弧度
    • delete - 参见 unlink 或 unset
    • dgettext - Override the current domain
    • die - 等同于 exit
    • dio_close - Closes the file descriptor given by fd
    • dio_fcntl - Performs a c library fcntl on fd
    • dio_open - Opens a file (creating it if necessary) at a lower level than the C library input/ouput stream functions allow.
    • dio_read - Reads bytes from a file descriptor
    • dio_seek - Seeks to pos on fd from whence
    • dio_stat - Gets stat information about the file descriptor fd
    • dio_tcsetattr - Sets terminal attributes and baud rate for a serial port
    • dio_truncate - Truncates file descriptor fd to offset bytes
    • dio_write - Writes data to fd with optional truncation at length
    • dir - 返回一个 Directory 类实例
    • Directory::close - 释放目录句柄
    • Directory::read - 从目录句柄中读取条目
    • Directory::rewind - 倒回目录句柄
    • DirectoryIterator::current - Return the current DirectoryIterator item.
    • DirectoryIterator::getATime - Get last access time of the current DirectoryIterator item
    • DirectoryIterator::getBasename - Get base name of current DirectoryIterator item.
    • DirectoryIterator::getCTime - Get inode change time of the current DirectoryIterator item
    • DirectoryIterator::getExtension - Gets the file extension
    • DirectoryIterator::getFilename - Return file name of current DirectoryIterator item.
    • DirectoryIterator::getGroup - Get group for the current DirectoryIterator item
    • DirectoryIterator::getInode - Get inode for the current DirectoryIterator item
    • DirectoryIterator::getMTime - Get last modification time of current DirectoryIterator item
    • DirectoryIterator::getOwner - Get owner of current DirectoryIterator item
    • DirectoryIterator::getPath - Get path of current Iterator item without filename
    • DirectoryIterator::getPathname - Return path and file name of current DirectoryIterator item
    • DirectoryIterator::getPerms - Get the permissions of current DirectoryIterator item
    • DirectoryIterator::getSize - Get size of current DirectoryIterator item
    • DirectoryIterator::getType - Determine the type of the current DirectoryIterator item
    • DirectoryIterator::isDir - Determine if current DirectoryIterator item is a directory
    • DirectoryIterator::isDot - Determine if current DirectoryIterator item is '.' or '..'
    • DirectoryIterator::isExecutable - Determine if current DirectoryIterator item is executable
    • DirectoryIterator::isFile - Determine if current DirectoryIterator item is a regular file
    • DirectoryIterator::isLink - Determine if current DirectoryIterator item is a symbolic link
    • DirectoryIterator::isReadable - Determine if current DirectoryIterator item can be read
    • DirectoryIterator::isWritable - Determine if current DirectoryIterator item can be written to
    • DirectoryIterator::key - Return the key for the current DirectoryIterator item
    • DirectoryIterator::next - Move forward to next DirectoryIterator item
    • DirectoryIterator::rewind - Rewind the DirectoryIterator back to the start
    • DirectoryIterator::seek - Seek to a DirectoryIterator item
    • DirectoryIterator::valid - Check whether current DirectoryIterator position is a valid file
    • DirectoryIterator::__construct - Constructs a new directory iterator from a path
    • DirectoryIterator::__toString - Get file name as a string
    • dirname - 返回路径中的目录部分
    • diskfreespace - disk_free_space 的别名
    • disk_free_space - 返回目录中的可用空间
    • disk_total_space - 返回一个目录的磁盘总大小
    • dl - 运行时载入一个 PHP 扩展
    • dngettext - Plural version of dgettext
    • dns_check_record - 别名 checkdnsrr
    • dns_get_mx - 别名 getmxrr
    • dns_get_record - 获取指定主机的DNS记录
    • DOMAttr::isId - Checks if attribute is a defined ID
    • DOMAttr::__construct - Creates a new DOMAttr object
    • DOMCdataSection::__construct - Constructs a new DOMCdataSection object
    • DOMCharacterData::appendData - Append the string to the end of the character data of the node
    • DOMCharacterData::deleteData - Remove a range of characters from the node
    • DOMCharacterData::insertData - Insert a string at the specified 16-bit unit offset
    • DOMCharacterData::replaceData - Replace a substring within the DOMCharacterData node
    • DOMCharacterData::substringData - Extracts a range of data from the node
    • DOMComment::__construct - Creates a new DOMComment object
    • DOMDocument::createAttribute - Create new attribute
    • DOMDocument::createAttributeNS - Create new attribute node with an associated namespace
    • DOMDocument::createCDATASection - Create new cdata node
    • DOMDocument::createComment - Create new comment node
    • DOMDocument::createDocumentFragment - Create new document fragment
    • DOMDocument::createElement - Create new element node
    • DOMDocument::createElementNS - Create new element node with an associated namespace
    • DOMDocument::createEntityReference - Create new entity reference node
    • DOMDocument::createProcessingInstruction - Creates new PI node
    • DOMDocument::createTextNode - Create new text node
    • DOMDocument::getElementById - Searches for an element with a certain id
    • DOMDocument::getElementsByTagName - Searches for all elements with given local tag name
    • DOMDocument::getElementsByTagNameNS - Searches for all elements with given tag name in specified namespace
    • DOMDocument::importNode - Import node into current document
    • DOMDocument::load - Load XML from a file
    • DOMDocument::loadHTML - Load HTML from a string
    • DOMDocument::loadHTMLFile - Load HTML from a file
    • DOMDocument::loadXML - Load XML from a string
    • DOMDocument::normalizeDocument - Normalizes the document
    • DOMDocument::registerNodeClass - Register extended class used to create base node type
    • DOMDocument::relaxNGValidate - Performs relaxNG validation on the document
    • DOMDocument::relaxNGValidateSource - Performs relaxNG validation on the document
    • DOMDocument::save - Dumps the internal XML tree back into a file
    • DOMDocument::saveHTML - Dumps the internal document into a string using HTML formatting
    • DOMDocument::saveHTMLFile - Dumps the internal document into a file using HTML formatting
    • DOMDocument::saveXML - Dumps the internal XML tree back into a string
    • DOMDocument::schemaValidate - Validates a document based on a schema
    • DOMDocument::schemaValidateSource - Validates a document based on a schema
    • DOMDocument::validate - Validates the document based on its DTD
    • DOMDocument::xinclude - Substitutes XIncludes in a DOMDocument Object
    • DOMDocument::__construct - Creates a new DOMDocument object
    • DOMDocumentFragment::appendXML - Append raw XML data
    • DOMElement::getAttribute - Returns value of attribute
    • DOMElement::getAttributeNode - Returns attribute node
    • DOMElement::getAttributeNodeNS - Returns attribute node
    • DOMElement::getAttributeNS - Returns value of attribute
    • DOMElement::getElementsByTagName - Gets elements by tagname
    • DOMElement::getElementsByTagNameNS - Get elements by namespaceURI and localName
    • DOMElement::hasAttribute - Checks to see if attribute exists
    • DOMElement::hasAttributeNS - Checks to see if attribute exists
    • DOMElement::removeAttribute - Removes attribute
    • DOMElement::removeAttributeNode - Removes attribute
    • DOMElement::removeAttributeNS - Removes attribute
    • DOMElement::setAttribute - Adds new attribute
    • DOMElement::setAttributeNode - Adds new attribute node to element
    • DOMElement::setAttributeNodeNS - Adds new attribute node to element
    • DOMElement::setAttributeNS - Adds new attribute
    • DOMElement::setIdAttribute - Declares the attribute specified by name to be of type ID
    • DOMElement::setIdAttributeNode - Declares the attribute specified by node to be of type ID
    • DOMElement::setIdAttributeNS - Declares the attribute specified by local name and namespace URI to be of type ID
    • DOMElement::__construct - Creates a new DOMElement object
    • DOMEntityReference::__construct - Creates a new DOMEntityReference object
    • DOMImplementation::createDocument - Creates a DOMDocument object of the specified type with its document element
    • DOMImplementation::createDocumentType - Creates an empty DOMDocumentType object
    • DOMImplementation::hasFeature - Test if the DOM implementation implements a specific feature
    • DOMImplementation::__construct - Creates a new DOMImplementation object
    • DOMNamedNodeMap::getNamedItem - Retrieves a node specified by name
    • DOMNamedNodeMap::getNamedItemNS - Retrieves a node specified by local name and namespace URI
    • DOMNamedNodeMap::item - Retrieves a node specified by index
    • DOMNode::appendChild - Adds new child at the end of the children
    • DOMNode::C14N - Canonicalize nodes to a string
    • DOMNode::C14NFile - Canonicalize nodes to a file
    • DOMNode::cloneNode - Clones a node
    • DOMNode::getLineNo - Get line number for a node
    • DOMNode::getNodePath - Get an XPath for a node
    • DOMNode::hasAttributes - Checks if node has attributes
    • DOMNode::hasChildNodes - Checks if node has children
    • DOMNode::insertBefore - Adds a new child before a reference node
    • DOMNode::isDefaultNamespace - Checks if the specified namespaceURI is the default namespace or not
    • DOMNode::isSameNode - Indicates if two nodes are the same node
    • DOMNode::isSupported - Checks if feature is supported for specified version
    • DOMNode::lookupNamespaceURI - Gets the namespace URI of the node based on the prefix
    • DOMNode::lookupPrefix - Gets the namespace prefix of the node based on the namespace URI
    • DOMNode::normalize - Normalizes the node
    • DOMNode::removeChild - Removes child from list of children
    • DOMNode::replaceChild - Replaces a child
    • DOMNodelist::item - Retrieves a node specified by index
    • DOMProcessingInstruction::__construct - Creates a new DOMProcessingInstruction object
    • DOMText::isWhitespaceInElementContent - Indicates whether this text node contains whitespace
    • DOMText::splitText - Breaks this node into two nodes at the specified offset
    • DOMText::__construct - Creates a new DOMText object
    • DOMXPath::evaluate - Evaluates the given XPath expression and returns a typed result if possible
    • DOMXPath::query - Evaluates the given XPath expression
    • DOMXPath::registerNamespace - Registers the namespace with the DOMXPath object
    • DOMXPath::registerPhpFunctions - Register PHP functions as XPath functions
    • DOMXPath::__construct - Creates a new DOMXPath object
    • dom_import_simplexml - Gets a DOMElement object from a SimpleXMLElement object
    • doubleval - floatval 的别名
    • Ds\Collection::clear - Removes all values.
    • Ds\Collection::copy - Returns a shallow copy of the collection.
    • Ds\Collection::isEmpty - Returns whether the collection is empty
    • Ds\Collection::toArray - Converts the collection to an array.
    • Ds\Deque::allocate - Allocates enough memory for a required capacity.
    • Ds\Deque::apply - Updates all values by applying a callback function to each value.
    • Ds\Deque::capacity - Returns the current capacity.
    • Ds\Deque::clear - Removes all values from the deque.
    • Ds\Deque::contains - Determines if the deque contains given values.
    • Ds\Deque::copy - Returns a shallow copy of the deque.
    • Ds\Deque::count - Returns the number of values in the collection.
    • Ds\Deque::filter - Creates a new deque using a callable to determine which values to include.
    • Ds\Deque::find - Attempts to find a value's index.
    • Ds\Deque::first - Returns the first value in the deque.
    • Ds\Deque::get - Returns the value at a given index.
    • Ds\Deque::insert - Inserts values at a given index.
    • Ds\Deque::isEmpty - Returns whether the deque is empty
    • Ds\Deque::join - Joins all values together as a string.
    • Ds\Deque::jsonSerialize - Returns a representation that can be converted to JSON.
    • Ds\Deque::last - Returns the last value.
    • Ds\Deque::map - Returns the result of applying a callback to each value.
    • Ds\Deque::merge - Returns the result of adding all given values to the deque.
    • Ds\Deque::pop - Removes and returns the last value.
    • Ds\Deque::push - Adds values to the end of the deque.
    • Ds\Deque::reduce - Reduces the deque to a single value using a callback function.
    • Ds\Deque::remove - Removes and returns a value by index.
    • Ds\Deque::reverse - Reverses the deque in-place.
    • Ds\Deque::reversed - Returns a reversed copy.
    • Ds\Deque::rotate - Rotates the deque by a given number of rotations.
    • Ds\Deque::set - Updates a value at a given index.
    • Ds\Deque::shift - Removes and returns the first value.
    • Ds\Deque::slice - Returns a sub-deque of a given range.
    • Ds\Deque::sort - Sorts the deque in-place.
    • Ds\Deque::sorted - Returns a sorted copy.
    • Ds\Deque::sum - Returns the sum of all values in the deque.
    • Ds\Deque::toArray - Converts the deque to an array.
    • Ds\Deque::unshift - Adds values to the front of the deque.
    • Ds\Deque::__construct - Creates a new instance.
    • Ds\Hashable::equals - Determines whether an object is equal to the current instance.
    • Ds\Hashable::hash - Returns a scalar value to be used as a hash value.
    • Ds\Map::allocate - Allocates enough memory for a required capacity.
    • Ds\Map::apply - Updates all values by applying a callback function to each value.
    • Ds\Map::capacity - Returns the current capacity.
    • Ds\Map::clear - Removes all values.
    • Ds\Map::copy - Returns a shallow copy of the map.
    • Ds\Map::count - Returns the number of values in the map.
    • Ds\Map::diff - Creates a new map using keys that aren't in another map.
    • Ds\Map::filter - Creates a new map using a callable to determine which pairs to include.
    • Ds\Map::first - Returns the first pair in the map.
    • Ds\Map::get - Returns the value for a given key.
    • Ds\Map::hasKey - Determines whether the map contains a given key.
    • Ds\Map::hasValue - Determines whether the map contains a given value.
    • Ds\Map::intersect - Creates a new map by intersecting keys with another map.
    • Ds\Map::isEmpty - Returns whether the map is empty
    • Ds\Map::jsonSerialize - Returns a representation that can be converted to JSON.
    • Ds\Map::keys - Returns a set of the map's keys.
    • Ds\Map::ksort - Sorts the map in-place by key.
    • Ds\Map::ksorted - Returns a copy, sorted by key.
    • Ds\Map::last - Returns the last pair of the map.
    • Ds\Map::map - Returns the result of applying a callback to each value.
    • Ds\Map::merge - Returns the result of adding all given associations.
    • Ds\Map::pairs - Returns a sequence containing all the pairs of the map.
    • Ds\Map::put - Associates a key with a value.
    • Ds\Map::putAll - Associates all key-value pairs of a traversable object or array.
    • Ds\Map::reduce - Reduces the map to a single value using a callback function.
    • Ds\Map::remove - Removes and returns a value by key.
    • Ds\Map::reverse - Reverses the map in-place.
    • Ds\Map::reversed - Returns a reversed copy.
    • Ds\Map::skip - Returns the pair at a given positional index.
    • Ds\Map::slice - Returns a subset of the map defined by a starting index and length.
    • Ds\Map::sort - Sorts the map in-place by value.
    • Ds\Map::sorted - Returns a copy, sorted by value.
    • Ds\Map::sum - Returns the sum of all values in the map.
    • Ds\Map::toArray - Converts the map to an array.
    • Ds\Map::union - Creates a new map using values from the current instance and another map.
    • Ds\Map::values - Returns a sequence of the map's values.
    • Ds\Map::xor - Creates a new map using keys of either the current instance or of another map, but not of both.
    • Ds\Map::__construct - Creates a new instance.
    • Ds\Pair::clear - Removes all values.
    • Ds\Pair::copy - Returns a shallow copy of the pair.
    • Ds\Pair::isEmpty - Returns whether the pair is empty
    • Ds\Pair::jsonSerialize - Returns a representation that can be converted to JSON.
    • Ds\Pair::toArray - Converts the pair to an array.
    • Ds\Pair::__construct - Creates a new instance.
    • Ds\PriorityQueue::allocate - Allocates enough memory for a required capacity.
    • Ds\PriorityQueue::capacity - Returns the current capacity.
    • Ds\PriorityQueue::clear - Removes all values.
    • Ds\PriorityQueue::copy - Returns a shallow copy of the queue.
    • Ds\PriorityQueue::count - Returns the number of values in the queue.
    • Ds\PriorityQueue::isEmpty - Returns whether the queue is empty
    • Ds\PriorityQueue::jsonSerialize - Returns a representation that can be converted to JSON.
    • Ds\PriorityQueue::peek - Returns the value at the front of the queue.
    • Ds\PriorityQueue::pop - Removes and returns the value with the highest priority.
    • Ds\PriorityQueue::push - Pushes values into the queue.
    • Ds\PriorityQueue::toArray - Converts the queue to an array.
    • Ds\PriorityQueue::__construct - Creates a new instance.
    • Ds\Queue::allocate - Allocates enough memory for a required capacity.
    • Ds\Queue::capacity - Returns the current capacity.
    • Ds\Queue::clear - Removes all values.
    • Ds\Queue::copy - Returns a shallow copy of the queue.
    • Ds\Queue::count - Returns the number of values in the queue.
    • Ds\Queue::isEmpty - Returns whether the queue is empty
    • Ds\Queue::jsonSerialize - Returns a representation that can be converted to JSON.
    • Ds\Queue::peek - Returns the value at the front of the queue.
    • Ds\Queue::pop - Removes and returns the value at the front of the queue.
    • Ds\Queue::push - Pushes values into the queue.
    • Ds\Queue::toArray - Converts the queue to an array.
    • Ds\Queue::__construct - Creates a new instance.
    • Ds\Sequence::allocate - Allocates enough memory for a required capacity.
    • Ds\Sequence::apply - Updates all values by applying a callback function to each value.
    • Ds\Sequence::capacity - Returns the current capacity.
    • Ds\Sequence::contains - Determines if the sequence contains given values.
    • Ds\Sequence::filter - Creates a new sequence using a callable to determine which values to include.
    • Ds\Sequence::find - Attempts to find a value's index.
    • Ds\Sequence::first - Returns the first value in the sequence.
    • Ds\Sequence::get - Returns the value at a given index.
    • Ds\Sequence::insert - Inserts values at a given index.
    • Ds\Sequence::join - Joins all values together as a string.
    • Ds\Sequence::last - Returns the last value.
    • Ds\Sequence::map - Returns the result of applying a callback to each value.
    • Ds\Sequence::merge - Returns the result of adding all given values to the sequence.
    • Ds\Sequence::pop - Removes and returns the last value.
    • Ds\Sequence::push - Adds values to the end of the sequence.
    • Ds\Sequence::reduce - Reduces the sequence to a single value using a callback function.
    • Ds\Sequence::remove - Removes and returns a value by index.
    • Ds\Sequence::reverse - Reverses the sequence in-place.
    • Ds\Sequence::reversed - Returns a reversed copy.
    • Ds\Sequence::rotate - Rotates the sequence by a given number of rotations.
    • Ds\Sequence::set - Updates a value at a given index.
    • Ds\Sequence::shift - Removes and returns the first value.
    • Ds\Sequence::slice - Returns a sub-sequence of a given range.
    • Ds\Sequence::sort - Sorts the sequence in-place.
    • Ds\Sequence::sorted - Returns a sorted copy.
    • Ds\Sequence::sum - Returns the sum of all values in the sequence.
    • Ds\Sequence::unshift - Adds values to the front of the sequence.
    • Ds\Set::add - Adds values to the set.
    • Ds\Set::allocate - Allocates enough memory for a required capacity.
    • Ds\Set::capacity - Returns the current capacity.
    • Ds\Set::clear - Removes all values.
    • Ds\Set::contains - Determines if the set contains all values.
    • Ds\Set::copy - Returns a shallow copy of the set.
    • Ds\Set::count - Returns the number of values in the set.
    • Ds\Set::diff - Creates a new set using values that aren't in another set.
    • Ds\Set::filter - Creates a new set using a callable to determine which values to include.
    • Ds\Set::first - Returns the first value in the set.
    • Ds\Set::get - Returns the value at a given index.
    • Ds\Set::intersect - Creates a new set by intersecting values with another set.
    • Ds\Set::isEmpty - Returns whether the set is empty
    • Ds\Set::join - Joins all values together as a string.
    • Ds\Set::jsonSerialize - Returns a representation that can be converted to JSON.
    • Ds\Set::last - Returns the last value in the set.
    • Ds\Set::merge - Returns the result of adding all given values to the set.
    • Ds\Set::reduce - Reduces the set to a single value using a callback function.
    • Ds\Set::remove - Removes all given values from the set.
    • Ds\Set::reverse - Reverses the set in-place.
    • Ds\Set::reversed - Returns a reversed copy.
    • Ds\Set::slice - Returns a sub-set of a given range.
    • Ds\Set::sort - Sorts the set in-place.
    • Ds\Set::sorted - Returns a sorted copy.
    • Ds\Set::sum - Returns the sum of all values in the set.
    • Ds\Set::toArray - Converts the set to an array.
    • Ds\Set::union - Creates a new set using values from the current instance and another set.
    • Ds\Set::xor - Creates a new set using values in either the current instance or in another set, but not in both.
    • Ds\Set::__construct - Creates a new instance.
    • Ds\Stack::allocate - Allocates enough memory for a required capacity.
    • Ds\Stack::capacity - Returns the current capacity.
    • Ds\Stack::clear - Removes all values.
    • Ds\Stack::copy - Returns a shallow copy of the stack.
    • Ds\Stack::count - Returns the number of values in the stack.
    • Ds\Stack::isEmpty - Returns whether the stack is empty
    • Ds\Stack::jsonSerialize - Returns a representation that can be converted to JSON.
    • Ds\Stack::peek - Returns the value at the top of the stack.
    • Ds\Stack::pop - Removes and returns the value at the top of the stack.
    • Ds\Stack::push - Pushes values onto the stack.
    • Ds\Stack::toArray - Converts the stack to an array.
    • Ds\Stack::__construct - Creates a new instance.
    • Ds\Vector::allocate - Allocates enough memory for a required capacity.
    • Ds\Vector::apply - Updates all values by applying a callback function to each value.
    • Ds\Vector::capacity - Returns the current capacity.
    • Ds\Vector::clear - Removes all values.
    • Ds\Vector::contains - Determines if the vector contains given values.
    • Ds\Vector::copy - Returns a shallow copy of the vector.
    • Ds\Vector::count - Returns the number of values in the collection.
    • Ds\Vector::filter - Creates a new vector using a callable to determine which values to include.
    • Ds\Vector::find - Attempts to find a value's index.
    • Ds\Vector::first - Returns the first value in the vector.
    • Ds\Vector::get - Returns the value at a given index.
    • Ds\Vector::insert - Inserts values at a given index.
    • Ds\Vector::isEmpty - Returns whether the vector is empty
    • Ds\Vector::join - Joins all values together as a string.
    • Ds\Vector::jsonSerialize - Returns a representation that can be converted to JSON.
    • Ds\Vector::last - Returns the last value.
    • Ds\Vector::map - Returns the result of applying a callback to each value.
    • Ds\Vector::merge - Returns the result of adding all given values to the vector.
    • Ds\Vector::pop - Removes and returns the last value.
    • Ds\Vector::push - Adds values to the end of the vector.
    • Ds\Vector::reduce - Reduces the vector to a single value using a callback function.
    • Ds\Vector::remove - Removes and returns a value by index.
    • Ds\Vector::reverse - Reverses the vector in-place.
    • Ds\Vector::reversed - Returns a reversed copy.
    • Ds\Vector::rotate - Rotates the vector by a given number of rotations.
    • Ds\Vector::set - Updates a value at a given index.
    • Ds\Vector::shift - Removes and returns the first value.
    • Ds\Vector::slice - Returns a sub-vector of a given range.
    • Ds\Vector::sort - Sorts the vector in-place.
    • Ds\Vector::sorted - Returns a sorted copy.
    • Ds\Vector::sum - Returns the sum of all values in the vector.
    • Ds\Vector::toArray - Converts the vector to an array.
    • Ds\Vector::unshift - Adds values to the front of the vector.
    • Ds\Vector::__construct - Creates a new instance.
  • e
    • each - 返回数组中当前的键／值对并将数组指针向前移动一步
    • easter_date - 得到指定年份的复活节午夜时的Unix时间戳。
    • easter_days - 得到指定年份的3月21日到复活节之间的天数
    • echo - 输出一个或多个字符串
    • eio_busy - Artificially increase load. Could be useful in tests, benchmarking.
    • eio_cancel - Cancels a request
    • eio_chmod - Change file/direcrory permissions.
    • eio_chown - Change file/direcrory permissions.
    • eio_close - Close file
    • eio_custom - Execute custom request like any other eio_* call.
    • eio_dup2 - Duplicate a file descriptor
    • eio_event_loop - Polls libeio until all requests proceeded
    • eio_fallocate - Allows the caller to directly manipulate the allocated disk space for a file
    • eio_fchmod - Change file permissions.
    • eio_fchown - Change file ownership
    • eio_fdatasync - Synchronize a file's in-core state with storage device.
    • eio_fstat - Get file status
    • eio_fstatvfs - Get file system statistics
    • eio_fsync - Synchronize a file's in-core state with storage device
    • eio_ftruncate - Truncate a file
    • eio_futime - Change file last access and modification times
    • eio_get_event_stream - Get stream representing a variable used in internal communications with libeio.
    • eio_get_last_error - Returns string describing the last error associated with a request resource
    • eio_grp - Creates a request group.
    • eio_grp_add - Adds a request to the request group.
    • eio_grp_cancel - Cancels a request group
    • eio_grp_limit - Set group limit
    • eio_init - (Re-)initialize Eio
    • eio_link - Create a hardlink for file
    • eio_lstat - Get file status
    • eio_mkdir - Create directory
    • eio_mknod - Create a special or ordinary file.
    • eio_nop - Does nothing, except go through the whole request cycle.
    • eio_npending - Returns number of finished, but unhandled requests
    • eio_nready - Returns number of not-yet handled requests
    • eio_nreqs - Returns number of requests to be processed
    • eio_nthreads - Returns number of threads currently in use
    • eio_open - Opens a file
    • eio_poll - Can be to be called whenever there are pending requests that need finishing.
    • eio_read - Read from a file descriptor at given offset.
    • eio_readahead - Perform file readahead into page cache
    • eio_readdir - Reads through a whole directory
    • eio_readlink - Read value of a symbolic link.
    • eio_realpath - Get the canonicalized absolute pathname.
    • eio_rename - Change the name or location of a file.
    • eio_rmdir - Remove a directory
    • eio_seek - Repositions the offset of the open file associated with the fd argument to the argument offset according to the directive whence
    • eio_sendfile - Transfer data between file descriptors
    • eio_set_max_idle - Set maximum number of idle threads.
    • eio_set_max_parallel - Set maximum parallel threads
    • eio_set_max_poll_reqs - Set maximum number of requests processed in a poll.
    • eio_set_max_poll_time - Set maximum poll time
    • eio_set_min_parallel - Set minimum parallel thread number
    • eio_stat - Get file status
    • eio_statvfs - Get file system statistics
    • eio_symlink - Create a symbolic link
    • eio_sync - Commit buffer cache to disk
    • eio_syncfs - Calls Linux' syncfs syscall, if available
    • eio_sync_file_range - Sync a file segment with disk
    • eio_truncate - Truncate a file
    • eio_unlink - Delete a name and possibly the file it refers to
    • eio_utime - Change file last access and modification times.
    • eio_write - Write to file
    • empty - 检查一个变量是否为空
    • EmptyIterator::current - The current() method
    • EmptyIterator::key - The key() method
    • EmptyIterator::next - The next() method
    • EmptyIterator::rewind - The rewind() method
    • EmptyIterator::valid - The valid() method
    • enchant_broker_describe - Enumerates the Enchant providers
    • enchant_broker_dict_exists - Whether a dictionary exists or not. Using non-empty tag
    • enchant_broker_free - Free the broker resource and its dictionnaries
    • enchant_broker_free_dict - Free a dictionary resource
    • enchant_broker_get_dict_path - Get the directory path for a given backend
    • enchant_broker_get_error - Returns the last error of the broker
    • enchant_broker_init - create a new broker object capable of requesting
    • enchant_broker_list_dicts - Returns a list of available dictionaries
    • enchant_broker_request_dict - create a new dictionary using a tag
    • enchant_broker_request_pwl_dict - creates a dictionary using a PWL file
    • enchant_broker_set_dict_path - Set the directory path for a given backend
    • enchant_broker_set_ordering - Declares a preference of dictionaries to use for the language
    • enchant_dict_add_to_personal - add a word to personal word list
    • enchant_dict_add_to_session - add 'word' to this spell-checking session
    • enchant_dict_check - Check whether a word is correctly spelled or not
    • enchant_dict_describe - Describes an individual dictionary
    • enchant_dict_get_error - Returns the last error of the current spelling-session
    • enchant_dict_is_in_session - whether or not 'word' exists in this spelling-session
    • enchant_dict_quick_check - Check the word is correctly spelled and provide suggestions
    • enchant_dict_store_replacement - Add a correction for a word
    • enchant_dict_suggest - Will return a list of values if any of those pre-conditions are not met
    • end - 将数组的内部指针指向最后一个单元
    • ereg - 正则表达式匹配
    • eregi - 不区分大小写的正则表达式匹配
    • eregi_replace - 不区分大小写的正则表达式替换
    • ereg_replace - 正则表达式替换
    • ErrorException::getSeverity - 获取异常的严重程度
    • ErrorException::__construct - 异常构造函数
    • error_clear_last - Clear the most recent error
    • error_get_last - 获取最后发生的错误
    • error_log - 发送错误信息到某个地方
    • error_reporting - 设置应该报告何种 PHP 错误
    • escapeshellarg - 把字符串转码为可以在 shell 命令里使用的参数
    • escapeshellcmd - shell 元字符转义
    • Ev::backend - Returns an integer describing the backend used by libev.
    • Ev::depth - Returns recursion depth
    • Ev::embeddableBackends - Returns the set of backends that are embeddable in other event loops.
    • Ev::feedSignal - Feed a signal event info Ev
    • Ev::feedSignalEvent - Feed signal event into the default loop
    • Ev::iteration - Return the number of times the default event loop has polled for new events.
    • Ev::now - Returns the time when the last iteration of the default event loop has started.
    • Ev::nowUpdate - Establishes the current time by querying the kernel, updating the time returned by Ev::now in the progress.
    • Ev::recommendedBackends - Returns a bit mask of recommended backends for current platform.
    • Ev::resume - Resume previously suspended default event loop
    • Ev::run - Begin checking for events and calling callbacks for the default loop
    • Ev::sleep - Block the process for the given number of seconds.
    • Ev::stop - Stops the default event loop
    • Ev::supportedBackends - Returns the set of backends supported by current libev configuration.
    • Ev::suspend - Suspend the default event loop
    • Ev::time - Returns the current time in fractional seconds since the epoch.
    • Ev::verify - Performs internal consistency checks(for debugging)
    • eval - 把字符串作为PHP代码执行
    • EvCheck::createStopped - Create instance of a stopped EvCheck watcher
    • EvCheck::__construct - Constructs the EvCheck watcher object
    • EvChild::createStopped - Create instance of a stopped EvCheck watcher
    • EvChild::set - Configures the watcher
    • EvChild::__construct - Constructs the EvChild watcher object
    • EvEmbed::createStopped - Create stopped EvEmbed watcher object
    • EvEmbed::set - Configures the watcher
    • EvEmbed::sweep - Make a single, non-blocking sweep over the embedded loop.
    • EvEmbed::__construct - Constructs the EvEmbed object
    • Event::add - Makes event pending
    • Event::addSignal - Makes signal event pending
    • Event::addTimer - Makes timer event pending
    • Event::del - Makes event non-pending
    • Event::delSignal - Makes signal event non-pending
    • Event::delTimer - Makes timer event non-pending
    • Event::free - Make event non-pending and free resources allocated for this event.
    • Event::getSupportedMethods - Returns array with of the names of the methods supported in this version of Libevent
    • Event::pending - Detects whether event is pending or scheduled
    • Event::set - Re-configures event
    • Event::setPriority - Set event priority
    • Event::setTimer - Re-configures timer event
    • Event::signal - Constructs signal event object
    • Event::timer - Constructs timer event object
    • Event::__construct - Constructs Event object
    • EventBase::dispatch - Dispatch pending events
    • EventBase::exit - Stop dispatching events
    • EventBase::free - Free resources allocated for this event base
    • EventBase::getFeatures - Returns bitmask of features supported
    • EventBase::getMethod - Returns event method in use
    • EventBase::getTimeOfDayCached - Returns the current event base time
    • EventBase::gotExit - Checks if the event loop was told to exit
    • EventBase::gotStop - Checks if the event loop was told to exit
    • EventBase::loop - Dispatch pending events
    • EventBase::priorityInit - Sets number of priorities per event base
    • EventBase::reInit - Re-initialize event base(after a fork).
    • EventBase::stop - Tells event_base to stop dispatching events
    • EventBase::__construct - Constructs EventBase object
    • EventBuffer::add - Append data to the end of an event buffer
    • EventBuffer::addBuffer - Move all data from a buffer provided to the current instance of EventBuffer
    • EventBuffer::appendFrom - Moves the specified number of bytes from a source buffer to the end of the current buffer
    • EventBuffer::copyout - Copies out specified number of bytes from the front of the buffer
    • EventBuffer::drain - Removes specified number of bytes from the front of the buffer without copying it anywhere
    • EventBuffer::enableLocking - 说明
    • EventBuffer::expand - Reserves space in buffer
    • EventBuffer::freeze - Prevent calls that modify an event buffer from succeeding
    • EventBuffer::lock - Acquires a lock on buffer
    • EventBuffer::prepend - Prepend data to the front of the buffer
    • EventBuffer::prependBuffer - Moves all data from source buffer to the front of current buffer
    • EventBuffer::pullup - Linearizes data within buffer and returns it's contents as a string
    • EventBuffer::read - Read data from an evbuffer and drain the bytes read
    • EventBuffer::readFrom - Read data from a file onto the end of the buffer
    • EventBuffer::readLine - Extracts a line from the front of the buffer
    • EventBuffer::search - Scans the buffer for an occurrence of a string
    • EventBuffer::searchEol - Scans the buffer for an occurrence of an end of line
    • EventBuffer::substr - Substracts a portion of the buffer data
    • EventBuffer::unfreeze - Re-enable calls that modify an event buffer
    • EventBuffer::unlock - Releases lock acquired by EventBuffer::lock
    • EventBuffer::write - Write contents of the buffer to a file or socket
    • EventBuffer::__construct - Constructs EventBuffer object
    • EventBufferEvent::close - Closes file descriptor associated with the current buffer event
    • EventBufferEvent::connect - Connect buffer event's file descriptor to given address or UNIX socket
    • EventBufferEvent::connectHost - Connects to a hostname with optionally asyncronous DNS resolving
    • EventBufferEvent::createPair - Creates two buffer events connected to each other
    • EventBufferEvent::disable - Disable events read, write, or both on a buffer event.
    • EventBufferEvent::enable - Enable events read, write, or both on a buffer event.
    • EventBufferEvent::free - Free a buffer event
    • EventBufferEvent::getDnsErrorString - Returns string describing the last failed DNS lookup attempt
    • EventBufferEvent::getEnabled - Returns bitmask of events currently enabled on the buffer event
    • EventBufferEvent::getInput - Returns underlying input buffer associated with current buffer event
    • EventBufferEvent::getOutput - Returns underlying output buffer associated with current buffer event
    • EventBufferEvent::read - Read buffer's data
    • EventBufferEvent::readBuffer - Drains the entire contents of the input buffer and places them into buf
    • EventBufferEvent::setCallbacks - Assigns read, write and event(status) callbacks
    • EventBufferEvent::setPriority - Assign a priority to a bufferevent
    • EventBufferEvent::setTimeouts - Set the read and write timeout for a buffer event
    • EventBufferEvent::setWatermark - Adjusts read and/or write watermarks
    • EventBufferEvent::sslError - Returns most recent OpenSSL error reported on the buffer event
    • EventBufferEvent::sslFilter - Create a new SSL buffer event to send its data over another buffer event
    • EventBufferEvent::sslGetCipherInfo - Returns a textual description of the cipher.
    • EventBufferEvent::sslGetCipherName - Returns the current cipher name of the SSL connection.
    • EventBufferEvent::sslGetCipherVersion - Returns version of cipher used by current SSL connection.
    • EventBufferEvent::sslGetProtocol - Returns the name of the protocol used for current SSL connection.
    • EventBufferEvent::sslRenegotiate - Tells a bufferevent to begin SSL renegotiation.
    • EventBufferEvent::sslSocket - Creates a new SSL buffer event to send its data over an SSL on a socket
    • EventBufferEvent::write - Adds data to a buffer event's output buffer
    • EventBufferEvent::writeBuffer - Adds contents of the entire buffer to a buffer event's output buffer
    • EventBufferEvent::__construct - Constructs EventBufferEvent object
    • EventConfig::avoidMethod - Tells libevent to avoid specific event method
    • EventConfig::requireFeatures - Enters a required event method feature that the application demands
    • EventConfig::setMaxDispatchInterval - Prevents priority inversion
    • EventConfig::__construct - Constructs EventConfig object
    • EventDnsBase::addNameserverIp - Adds a nameserver to the DNS base
    • EventDnsBase::addSearch - Adds a domain to the list of search domains
    • EventDnsBase::clearSearch - Removes all current search suffixes
    • EventDnsBase::countNameservers - Gets the number of configured nameservers
    • EventDnsBase::loadHosts - Loads a hosts file (in the same format as /etc/hosts) from hosts file
    • EventDnsBase::parseResolvConf - Scans the resolv.conf-formatted file
    • EventDnsBase::setOption - Set the value of a configuration option
    • EventDnsBase::setSearchNdots - Set the 'ndots' parameter for searches
    • EventDnsBase::__construct - Constructs EventDnsBase object
    • EventHttp::accept - Makes an HTTP server accept connections on the specified socket stream or resource
    • EventHttp::addServerAlias - Adds a server alias to the HTTP server object
    • EventHttp::bind - Binds an HTTP server on the specified address and port
    • EventHttp::removeServerAlias - Removes server alias
    • EventHttp::setAllowedMethods - Sets the what HTTP methods are supported in requests accepted by this server, and passed to user callbacks
    • EventHttp::setCallback - Sets a callback for specified URI
    • EventHttp::setDefaultCallback - Sets default callback to handle requests that are not caught by specific callbacks
    • EventHttp::setMaxBodySize - Sets maximum request body size
    • EventHttp::setMaxHeadersSize - Sets maximum HTTP header size
    • EventHttp::setTimeout - Sets the timeout for an HTTP request
    • EventHttp::__construct - Constructs EventHttp object(the HTTP server)
    • EventHttpConnection::getBase - Returns event base associated with the connection
    • EventHttpConnection::getPeer - Gets the remote address and port associated with the connection
    • EventHttpConnection::makeRequest - Makes an HTTP request over the specified connection
    • EventHttpConnection::setCloseCallback - Set callback for connection close
    • EventHttpConnection::setLocalAddress - Sets the IP address from which HTTP connections are made
    • EventHttpConnection::setLocalPort - Sets the local port from which connections are made
    • EventHttpConnection::setMaxBodySize - Sets maximum body size for the connection
    • EventHttpConnection::setMaxHeadersSize - Sets maximum header size
    • EventHttpConnection::setRetries - Sets the retry limit for the connection
    • EventHttpConnection::setTimeout - Sets the timeout for the connection
    • EventHttpConnection::__construct - Constructs EventHttpConnection object
    • EventHttpRequest::addHeader - Adds an HTTP header to the headers of the request
    • EventHttpRequest::cancel - Cancels a pending HTTP request
    • EventHttpRequest::clearHeaders - Removes all output headers from the header list of the request
    • EventHttpRequest::closeConnection - Closes associated HTTP connection
    • EventHttpRequest::findHeader - Finds the value belonging a header
    • EventHttpRequest::free - Frees the object and removes associated events
    • EventHttpRequest::getBufferEvent - Returns EventBufferEvent object
    • EventHttpRequest::getCommand - Returns the request command(method)
    • EventHttpRequest::getConnection - Returns EventHttpConnection object
    • EventHttpRequest::getHost - Returns the request host
    • EventHttpRequest::getInputBuffer - Returns the input buffer
    • EventHttpRequest::getInputHeaders - Returns associative array of the input headers
    • EventHttpRequest::getOutputBuffer - Returns the output buffer of the request
    • EventHttpRequest::getOutputHeaders - Returns associative array of the output headers
    • EventHttpRequest::getResponseCode - Returns the response code
    • EventHttpRequest::getUri - Returns the request URI
    • EventHttpRequest::removeHeader - Removes an HTTP header from the headers of the request
    • EventHttpRequest::sendError - Send an HTML error message to the client
    • EventHttpRequest::sendReply - Send an HTML reply to the client
    • EventHttpRequest::sendReplyChunk - Send another data chunk as part of an ongoing chunked reply
    • EventHttpRequest::sendReplyEnd - Complete a chunked reply, freeing the request as appropriate
    • EventHttpRequest::sendReplyStart - Initiate a chunked reply
    • EventHttpRequest::__construct - Constructs EventHttpRequest object
    • EventListener::disable - Disables an event connect listener object
    • EventListener::enable - Enables an event connect listener object
    • EventListener::getBase - Returns event base associated with the event listener
    • EventListener::getSocketName - Retreives the current address to which the listener's socket is bound.
    • EventListener::setCallback - The setCallback purpose
    • EventListener::setErrorCallback - Set event listener's error callback
    • EventListener::__construct - Creates new connection listener associated with an event base
    • EventSslContext::__construct - Constructs an OpenSSL context for use with Event classes
    • EventUtil::getLastSocketErrno - Returns the most recent socket error number
    • EventUtil::getLastSocketError - Returns the most recent socket error
    • EventUtil::getSocketFd - Returns numeric file descriptor of a socket, or stream
    • EventUtil::getSocketName - Retreives the current address to which the socket is bound.
    • EventUtil::setSocketOption - Sets socket options
    • EventUtil::sslRandPoll - Generates entropy by means of OpenSSL's RAND_poll()
    • EventUtil::__construct - The abstract constructor
    • event_base_free - Destroy event base
    • event_base_loop - Handle events
    • event_base_loopbreak - Abort event loop
    • event_base_loopexit - Exit loop after a time
    • event_base_new - Create and initialize new event base
    • event_base_priority_init - Set the number of event priority levels
    • event_base_reinit - Reinitialize the event base after a fork
    • event_base_set - Associate event base with an event
    • event_buffer_base_set - Associate buffered event with an event base
    • event_buffer_disable - Disable a buffered event
    • event_buffer_enable - Enable a buffered event
    • event_buffer_fd_set - Change a buffered event file descriptor
    • event_buffer_free - Destroy buffered event
    • event_buffer_new - Create new buffered event
    • event_buffer_priority_set - Assign a priority to a buffered event
    • event_buffer_read - Read data from a buffered event
    • event_buffer_set_callback - Set or reset callbacks for a buffered event
    • event_buffer_timeout_set - Set read and write timeouts for a buffered event
    • event_buffer_watermark_set - Set the watermarks for read and write events
    • event_buffer_write - Write data to a buffered event
    • event_new - Create new event
    • event_priority_set - Assign a priority to an event.
    • event_timer_add - 别名 event_add
    • event_timer_del - 别名 event_del
    • event_timer_new - 别名 event_new
    • event_timer_set - Prepare a timer event
    • EvFork::createStopped - Creates a stopped instance of EvFork watcher class
    • EvFork::__construct - Constructs the EvFork watcher object
    • EvIdle::createStopped - Creates instance of a stopped EvIdle watcher object
    • EvIdle::__construct - Constructs the EvIdle watcher object
    • EvIo::createStopped - Create stopped EvIo watcher object
    • EvIo::set - Configures the watcher
    • EvIo::__construct - Constructs EvIo watcher object
    • EvLoop::backend - Returns an integer describing the backend used by libev.
    • EvLoop::check - Creates EvCheck object associated with the current event loop instance
    • EvLoop::child - Creates EvChild object associated with the current event loop
    • EvLoop::defaultLoop - Returns or creates the default event loop.
    • EvLoop::embed - Creates an instance of EvEmbed watcher associated with the current EvLoop object.
    • EvLoop::fork - Creates EvFork watcher object associated with the current event loop instance
    • EvLoop::idle - Creates EvIdle watcher object associated with the current event loop instance
    • EvLoop::invokePending - Invoke all pending watchers while resetting their pending state
    • EvLoop::io - Create EvIo watcher object associated with the current event loop instance
    • EvLoop::loopFork - Must be called after a fork
    • EvLoop::now - Returns the current "event loop time"
    • EvLoop::nowUpdate - Establishes the current time by querying the kernel, updating the time returned by EvLoop::now in the progress.
    • EvLoop::periodic - Creates EvPeriodic watcher object associated with the current event loop instance
    • EvLoop::prepare - Creates EvPrepare watcher object associated with the current event loop instance
    • EvLoop::resume - Resume previously suspended default event loop
    • EvLoop::run - Begin checking for events and calling callbacks for the loop
    • EvLoop::signal - Creates EvSignal watcher object associated with the current event loop instance
    • EvLoop::stat - Creates EvStat watcher object associated with the current event loop instance
    • EvLoop::stop - Stops the event loop
    • EvLoop::suspend - Suspend the loop
    • EvLoop::timer - Creates EvTimer watcher object associated with the current event loop instance
    • EvLoop::verify - Performs internal consistency checks(for debugging)
    • EvLoop::__construct - Constructs the event loop object
    • EvPeriodic::again - Simply stops and restarts the periodic watcher again.
    • EvPeriodic::at - Returns the absolute time that this watcher is supposed to trigger next
    • EvPeriodic::createStopped - Create a stopped EvPeriodic watcher
    • EvPeriodic::set - Configures the watcher
    • EvPeriodic::__construct - Constructs EvPeriodic watcher object
    • EvPrepare::createStopped - Creates a stopped instance of EvPrepare watcher
    • EvPrepare::__construct - Constructs EvPrepare watcher object
    • EvSignal::createStopped - Create stopped EvSignal watcher object
    • EvSignal::set - Configures the watcher
    • EvSignal::__construct - Constructs EvPeriodic watcher object
    • EvStat::attr - Returns the values most recently detected by Ev
    • EvStat::createStopped - Create a stopped EvStat watcher object
    • EvStat::prev - Returns the previous set of values returned by EvStat::attr
    • EvStat::set - Configures the watcher
    • EvStat::stat - Initiates the stat call
    • EvStat::__construct - Constructs EvStat watcher object
    • EvTimer::again - Restarts the timer watcher
    • EvTimer::createStopped - Creates EvTimer stopped watcher object
    • EvTimer::set - Configures the watcher
    • EvTimer::__construct - Constructs an EvTimer watcher object
    • EvWatcher::clear - Clear watcher pending status
    • EvWatcher::feed - Feeds the given revents set into the event loop
    • EvWatcher::getLoop - Returns the loop responsible for the watcher
    • EvWatcher::invoke - Invokes the watcher callback with the given received events bit mask
    • EvWatcher::keepalive - Configures whether to keep the loop from returning
    • EvWatcher::setCallback - Sets new callback for the watcher
    • EvWatcher::start - Starts the watcher
    • EvWatcher::stop - Stops the watcher
    • EvWatcher::__construct - Abstract constructor of a watcher object
    • Examples with PDO_4D - Examples PDO_4D
    • Exception::getCode - 获取异常代码
    • Exception::getFile - 获取发生异常的程序文件名称
    • Exception::getLine - 获取发生异常的代码在文件中的行号
    • Exception::getMessage - 获取异常消息内容
    • Exception::getPrevious - 返回异常链中的前一个异常
    • Exception::getTrace - 获取异常追踪信息
    • Exception::getTraceAsString - 获取字符串类型的异常追踪信息
    • Exception::__clone - 异常克隆
    • Exception::__construct - 异常构造函数
    • Exception::__toString - 将异常对象转换为字符串
    • exec - 执行一个外部程序
    • exif_imagetype - 判断一个图像的类型
    • exif_read_data - 从 JPEG 或 TIFF 文件中读取 EXIF 头信息
    • exif_tagname - 获取指定索引的头名称
    • exif_thumbnail - 取得嵌入在 TIFF 或 JPEG 图像中的缩略图
    • exit - 输出一个消息并且退出当前脚本
    • exp - 计算 e 的指数
    • expect:// - 处理交互式的流
    • expect_expectl - Waits until the output from a process matches one of the patterns, a specified time period has passed, or an EOF is seen
    • expect_popen - Execute command via Bourne shell, and open the PTY stream to the process
    • explode - 使用一个字符串分割另一个字符串
    • expm1 - 返回 exp(number) - 1，甚至当 number 的值接近零也能计算出准确结果
    • extension_loaded - 检查一个扩展是否已经加载
    • extract - 从数组中将变量导入到当前的符号表
    • ezmlm_hash - 计算 EZMLM 所需的散列值
  • f
    • fam_cancel_monitor - Terminate monitoring
    • fam_close - Close FAM connection
    • fam_monitor_collection - Monitor a collection of files in a directory for changes
    • fam_monitor_directory - Monitor a directory for changes
    • fam_monitor_file - Monitor a regular file for changes
    • fam_next_event - Get next pending FAM event
    • fam_open - Open connection to FAM daemon
    • fam_pending - Check for pending FAM events
    • fam_resume_monitor - Resume suspended monitoring
    • fam_suspend_monitor - Temporarily suspend monitoring
    • FANNConnection::getFromNeuron - Returns the postions of starting neuron.
    • FANNConnection::getToNeuron - Returns the postions of terminating neuron
    • FANNConnection::getWeight - Returns the connection weight
    • FANNConnection::setWeight - Sets the connections weight
    • FANNConnection::__construct - The connection constructor
    • fann_cascadetrain_on_data - Trains on an entire dataset, for a period of time using the Cascade2 training algorithm
    • fann_cascadetrain_on_file - Trains on an entire dataset read from file, for a period of time using the Cascade2 training algorithm.
    • fann_clear_scaling_params - Clears scaling parameters
    • fann_copy - Creates a copy of a fann structure
    • fann_create_from_file - Constructs a backpropagation neural network from a configuration file
    • fann_create_shortcut - Creates a standard backpropagation neural network which is not fully connectected and has shortcut connections
    • fann_create_shortcut_array - Creates a standard backpropagation neural network which is not fully connectected and has shortcut connections
    • fann_create_sparse - Creates a standard backpropagation neural network, which is not fully connected
    • fann_create_sparse_array - Creates a standard backpropagation neural network, which is not fully connected using an array of layer sizes
    • fann_create_standard - Creates a standard fully connected backpropagation neural network
    • fann_create_standard_array - Creates a standard fully connected backpropagation neural network using an array of layer sizes
    • fann_create_train - Creates an empty training data struct
    • fann_create_train_from_callback - Creates the training data struct from a user supplied function
    • fann_descale_input - Scale data in input vector after get it from ann based on previously calculated parameters
    • fann_descale_output - Scale data in output vector after get it from ann based on previously calculated parameters
    • fann_descale_train - Descale input and output data based on previously calculated parameters
    • fann_destroy - Destroys the entire network and properly freeing all the associated memory
    • fann_destroy_train - Destructs the training data
    • fann_duplicate_train_data - Returns an exact copy of a fann train data
    • fann_get_activation_function - Returns the activation function
    • fann_get_activation_steepness - Returns the activation steepness for supplied neuron and layer number
    • fann_get_bias_array - Get the number of bias in each layer in the network
    • fann_get_bit_fail - The number of fail bits
    • fann_get_bit_fail_limit - Returns the bit fail limit used during training
    • fann_get_cascade_activation_functions - Returns the cascade activation functions
    • fann_get_cascade_activation_functions_count - Returns the number of cascade activation functions
    • fann_get_cascade_activation_steepnesses - Returns the cascade activation steepnesses
    • fann_get_cascade_activation_steepnesses_count - The number of activation steepnesses
    • fann_get_cascade_candidate_change_fraction - Returns the cascade candidate change fraction
    • fann_get_cascade_candidate_limit - Return the candidate limit
    • fann_get_cascade_candidate_stagnation_epochs - Returns the number of cascade candidate stagnation epochs
    • fann_get_cascade_max_cand_epochs - Returns the maximum candidate epochs
    • fann_get_cascade_max_out_epochs - Returns the maximum out epochs
    • fann_get_cascade_min_cand_epochs - Returns the minimum candidate epochs
    • fann_get_cascade_min_out_epochs - Returns the minimum out epochs
    • fann_get_cascade_num_candidates - Returns the number of candidates used during training
    • fann_get_cascade_num_candidate_groups - Returns the number of candidate groups
    • fann_get_cascade_output_change_fraction - Returns the cascade output change fraction
    • fann_get_cascade_output_stagnation_epochs - Returns the number of cascade output stagnation epochs
    • fann_get_cascade_weight_multiplier - Returns the weight multiplier
    • fann_get_connection_array - Get connections in the network
    • fann_get_connection_rate - Get the connection rate used when the network was created
    • fann_get_errno - Returns the last error number
    • fann_get_errstr - Returns the last errstr
    • fann_get_layer_array - Get the number of neurons in each layer in the network
    • fann_get_learning_momentum - Returns the learning momentum
    • fann_get_learning_rate - Returns the learning rate
    • fann_get_MSE - Reads the mean square error from the network
    • fann_get_network_type - Get the type of neural network it was created as
    • fann_get_num_input - Get the number of input neurons
    • fann_get_num_layers - Get the number of layers in the neural network
    • fann_get_num_output - Get the number of output neurons
    • fann_get_quickprop_decay - Returns the decay which is a factor that weights should decrease in each iteration during quickprop training
    • fann_get_quickprop_mu - Returns the mu factor
    • fann_get_rprop_decrease_factor - Returns the increase factor used during RPROP training
    • fann_get_rprop_delta_max - Returns the maximum step-size
    • fann_get_rprop_delta_min - Returns the minimum step-size
    • fann_get_rprop_delta_zero - Returns the initial step-size
    • fann_get_rprop_increase_factor - Returns the increase factor used during RPROP training
    • fann_get_sarprop_step_error_shift - Returns the sarprop step error shift
    • fann_get_sarprop_step_error_threshold_factor - Returns the sarprop step error threshold factor
    • fann_get_sarprop_temperature - Returns the sarprop temperature
    • fann_get_sarprop_weight_decay_shift - Returns the sarprop weight decay shift
    • fann_get_total_connections - Get the total number of connections in the entire network
    • fann_get_total_neurons - Get the total number of neurons in the entire network
    • fann_get_training_algorithm - Returns the training algorithm
    • fann_get_train_error_function - Returns the error function used during training
    • fann_get_train_stop_function - Returns the stop function used during training
    • fann_init_weights - Initialize the weights using Widrow + Nguyen’s algorithm
    • fann_length_train_data - Returns the number of training patterns in the train data
    • fann_merge_train_data - Merges the train data
    • fann_num_input_train_data - Returns the number of inputs in each of the training patterns in the train data
    • fann_num_output_train_data - Returns the number of outputs in each of the training patterns in the train data
    • fann_print_error - Prints the error string
    • fann_randomize_weights - Give each connection a random weight between min_weight and max_weight
    • fann_read_train_from_file - Reads a file that stores training data
    • fann_reset_errno - Resets the last error number
    • fann_reset_errstr - Resets the last error string
    • fann_reset_MSE - Resets the mean square error from the network
    • fann_run - Will run input through the neural network
    • fann_save - Saves the entire network to a configuration file
    • fann_save_train - Save the training structure to a file
    • fann_scale_input - Scale data in input vector before feed it to ann based on previously calculated parameters
    • fann_scale_input_train_data - Scales the inputs in the training data to the specified range
    • fann_scale_output - Scale data in output vector before feed it to ann based on previously calculated parameters
    • fann_scale_output_train_data - Scales the outputs in the training data to the specified range
    • fann_scale_train - Scale input and output data based on previously calculated parameters
    • fann_scale_train_data - Scales the inputs and outputs in the training data to the specified range
    • fann_set_activation_function - Sets the activation function for supplied neuron and layer
    • fann_set_activation_function_hidden - Sets the activation function for all of the hidden layers
    • fann_set_activation_function_layer - Sets the activation function for all the neurons in the supplied layer.
    • fann_set_activation_function_output - Sets the activation function for the output layer
    • fann_set_activation_steepness - Sets the activation steepness for supplied neuron and layer number
    • fann_set_activation_steepness_hidden - Sets the steepness of the activation steepness for all neurons in the all hidden layers
    • fann_set_activation_steepness_layer - Sets the activation steepness for all of the neurons in the supplied layer number
    • fann_set_activation_steepness_output - Sets the steepness of the activation steepness in the output layer
    • fann_set_bit_fail_limit - Set the bit fail limit used during training
    • fann_set_callback - Sets the callback function for use during training
    • fann_set_cascade_activation_functions - Sets the array of cascade candidate activation functions
    • fann_set_cascade_activation_steepnesses - Sets the array of cascade candidate activation steepnesses
    • fann_set_cascade_candidate_change_fraction - Sets the cascade candidate change fraction
    • fann_set_cascade_candidate_limit - Sets the candidate limit
    • fann_set_cascade_candidate_stagnation_epochs - Sets the number of cascade candidate stagnation epochs
    • fann_set_cascade_max_cand_epochs - Sets the max candidate epochs
    • fann_set_cascade_max_out_epochs - Sets the maximum out epochs
    • fann_set_cascade_min_cand_epochs - Sets the min candidate epochs
    • fann_set_cascade_min_out_epochs - Sets the minimum out epochs
    • fann_set_cascade_num_candidate_groups - Sets the number of candidate groups
    • fann_set_cascade_output_change_fraction - Sets the cascade output change fraction
    • fann_set_cascade_output_stagnation_epochs - Sets the number of cascade output stagnation epochs
    • fann_set_cascade_weight_multiplier - Sets the weight multiplier
    • fann_set_error_log - Sets where the errors are logged to
    • fann_set_input_scaling_params - Calculate input scaling parameters for future use based on training data
    • fann_set_learning_momentum - Sets the learning momentum
    • fann_set_learning_rate - Sets the learning rate
    • fann_set_output_scaling_params - Calculate output scaling parameters for future use based on training data
    • fann_set_quickprop_decay - Sets the quickprop decay factor
    • fann_set_quickprop_mu - Sets the quickprop mu factor
    • fann_set_rprop_decrease_factor - Sets the decrease factor used during RPROP training
    • fann_set_rprop_delta_max - Sets the maximum step-size
    • fann_set_rprop_delta_min - Sets the minimum step-size
    • fann_set_rprop_delta_zero - Sets the initial step-size
    • fann_set_rprop_increase_factor - Sets the increase factor used during RPROP training
    • fann_set_sarprop_step_error_shift - Sets the sarprop step error shift
    • fann_set_sarprop_step_error_threshold_factor - Sets the sarprop step error threshold factor
    • fann_set_sarprop_temperature - Sets the sarprop temperature
    • fann_set_sarprop_weight_decay_shift - Sets the sarprop weight decay shift
    • fann_set_scaling_params - Calculate input and output scaling parameters for future use based on training data
    • fann_set_training_algorithm - Sets the training algorithm
    • fann_set_train_error_function - Sets the error function used during training
    • fann_set_train_stop_function - Sets the stop function used during training
    • fann_set_weight - Set a connection in the network
    • fann_set_weight_array - Set connections in the network
    • fann_shuffle_train_data - Shuffles training data, randomizing the order
    • fann_subset_train_data - Returns an copy of a subset of the train data
    • fann_test - Test with a set of inputs, and a set of desired outputs
    • fann_test_data - Test a set of training data and calculates the MSE for the training data
    • fann_train - Train one iteration with a set of inputs, and a set of desired outputs
    • fann_train_epoch - Train one epoch with a set of training data
    • fann_train_on_data - Trains on an entire dataset for a period of time
    • fann_train_on_file - Trains on an entire dataset, which is read from file, for a period of time
    • fastcgi_finish_request - 冲刷(flush)所有响应的数据给客户端
    • fbsql_affected_rows - Get number of affected rows in previous FrontBase operation
    • fbsql_autocommit - Enable or disable autocommit
    • fbsql_blob_size - Get the size of a BLOB
    • fbsql_change_user - Change logged in user of the active connection
    • fbsql_clob_size - Get the size of a CLOB
    • fbsql_close - Close FrontBase connection
    • fbsql_commit - Commits a transaction to the database
    • fbsql_connect - Open a connection to a FrontBase Server
    • fbsql_create_blob - Create a BLOB
    • fbsql_create_clob - Create a CLOB
    • fbsql_create_db - Create a FrontBase database
    • fbsql_database - Get or set the database name used with a connection
    • fbsql_database_password - Sets or retrieves the password for a FrontBase database
    • fbsql_data_seek - Move internal result pointer
    • fbsql_db_query - Send a FrontBase query
    • fbsql_db_status - Get the status for a given database
    • fbsql_drop_db - Drop (delete) a FrontBase database
    • fbsql_errno - Returns the error number from previous operation
    • fbsql_error - Returns the error message from previous operation
    • fbsql_fetch_array - Fetch a result row as an associative array, a numeric array, or both
    • fbsql_fetch_assoc - Fetch a result row as an associative array
    • fbsql_fetch_field - Get column information from a result and return as an object
    • fbsql_fetch_lengths - Get the length of each output in a result
    • fbsql_fetch_object - Fetch a result row as an object
    • fbsql_fetch_row - Get a result row as an enumerated array
    • fbsql_field_flags - Get the flags associated with the specified field in a result
    • fbsql_field_len - Returns the length of the specified field
    • fbsql_field_name - Get the name of the specified field in a result
    • fbsql_field_seek - Set result pointer to a specified field offset
    • fbsql_field_table - Get name of the table the specified field is in
    • fbsql_field_type - Get the type of the specified field in a result
    • fbsql_free_result - Free result memory
    • fbsql_get_autostart_info - 说明
    • fbsql_hostname - Get or set the host name used with a connection
    • fbsql_insert_id - Get the id generated from the previous INSERT operation
    • fbsql_list_dbs - List databases available on a FrontBase server
    • fbsql_list_fields - List FrontBase result fields
    • fbsql_list_tables - List tables in a FrontBase database
    • fbsql_next_result - Move the internal result pointer to the next result
    • fbsql_num_fields - Get number of fields in result
    • fbsql_num_rows - Get number of rows in result
    • fbsql_password - Get or set the user password used with a connection
    • fbsql_pconnect - Open a persistent connection to a FrontBase Server
    • fbsql_query - Send a FrontBase query
    • fbsql_read_blob - Read a BLOB from the database
    • fbsql_read_clob - Read a CLOB from the database
    • fbsql_result - Get result data
    • fbsql_rollback - Rollback a transaction to the database
    • fbsql_rows_fetched - Get the number of rows affected by the last statement
    • fbsql_select_db - Select a FrontBase database
    • fbsql_set_characterset - Change input/output character set
    • fbsql_set_lob_mode - Set the LOB retrieve mode for a FrontBase result set
    • fbsql_set_password - Change the password for a given user
    • fbsql_set_transaction - Set the transaction locking and isolation
    • fbsql_start_db - Start a database on local or remote server
    • fbsql_stop_db - Stop a database on local or remote server
    • fbsql_tablename - 别名 fbsql_table_name
    • fbsql_table_name - Get table name of field
    • fbsql_username - Get or set the username for the connection
    • fbsql_warnings - Enable or disable FrontBase warnings
    • fclose - 关闭一个已打开的文件指针
    • fdf_add_doc_javascript - Adds javascript code to the FDF document
    • fdf_add_template - Adds a template into the FDF document
    • fdf_close - Close an FDF document
    • fdf_create - Create a new FDF document
    • fdf_enum_values - Call a user defined function for each document value
    • fdf_errno - Return error code for last fdf operation
    • fdf_error - Return error description for FDF error code
    • fdf_get_ap - Get the appearance of a field
    • fdf_get_attachment - Extracts uploaded file embedded in the FDF
    • fdf_get_encoding - Get the value of the /Encoding key
    • fdf_get_file - Get the value of the /F key
    • fdf_get_flags - Gets the flags of a field
    • fdf_get_opt - Gets a value from the opt array of a field
    • fdf_get_status - Get the value of the /STATUS key
    • fdf_get_value - Get the value of a field
    • fdf_get_version - Gets version number for FDF API or file
    • fdf_header - Sets FDF-specific output headers
    • fdf_next_field_name - Get the next field name
    • fdf_open - Open a FDF document
    • fdf_open_string - Read a FDF document from a string
    • fdf_remove_item - Sets target frame for form
    • fdf_save - Save a FDF document
    • fdf_save_string - Returns the FDF document as a string
    • fdf_set_ap - Set the appearance of a field
    • fdf_set_encoding - Sets FDF character encoding
    • fdf_set_file - Set PDF document to display FDF data in
    • fdf_set_flags - Sets a flag of a field
    • fdf_set_javascript_action - Sets an javascript action of a field
    • fdf_set_on_import_javascript - Adds javascript code to be executed when Acrobat opens the FDF
    • fdf_set_opt - Sets an option of a field
    • fdf_set_status - Set the value of the /STATUS key
    • fdf_set_submit_form_action - Sets a submit form action of a field
    • fdf_set_target_frame - Set target frame for form display
    • fdf_set_value - Set the value of a field
    • fdf_set_version - Sets version number for a FDF file
    • feof - 测试文件指针是否到了文件结束的位置
    • fflush - 将缓冲内容输出到文件
    • fgetc - 从文件指针中读取字符
    • fgetcsv - 从文件指针中读入一行并解析 CSV 字段
    • fgets - 从文件指针中读取一行
    • fgetss - 从文件指针中读取一行并过滤掉 HTML 标记
    • file - 把整个文件读入一个数组中
    • file:// - 访问本地文件系统
    • fileatime - 取得文件的上次访问时间
    • filectime - 取得文件的 inode 修改时间
    • filegroup - 取得文件的组
    • fileinode - 取得文件的 inode
    • filemtime - 取得文件修改时间
    • fileowner - 取得文件的所有者
    • fileperms - 取得文件的权限
    • filepro - Read and verify the map file
    • filepro_fieldcount - Find out how many fields are in a filePro database
    • filepro_fieldname - Gets the name of a field
    • filepro_fieldtype - Gets the type of a field
    • filepro_fieldwidth - Gets the width of a field
    • filepro_retrieve - Retrieves data from a filePro database
    • filepro_rowcount - Find out how many rows are in a filePro database
    • filesize - 取得文件大小
    • FilesystemIterator::current - The current file
    • FilesystemIterator::getFlags - Get the handling flags
    • FilesystemIterator::key - Retrieve the key for the current file
    • FilesystemIterator::next - Move to the next file
    • FilesystemIterator::rewind - Rewinds back to the beginning
    • FilesystemIterator::setFlags - Sets handling flags
    • FilesystemIterator::__construct - Constructs a new filesystem iterator
    • filetype - 取得文件类型
    • file_exists - 检查文件或目录是否存在
    • file_get_contents - 将整个文件读入一个字符串
    • file_put_contents - 将一个字符串写入文件
    • FilterIterator::accept - Check whether the current element of the iterator is acceptable
    • FilterIterator::current - Get the current element value
    • FilterIterator::getInnerIterator - Get the inner iterator
    • FilterIterator::key - Get the current key
    • FilterIterator::next - Move the iterator forward
    • FilterIterator::rewind - Rewind the iterator
    • FilterIterator::valid - Check whether the current element is valid
    • FilterIterator::__construct - Construct a filterIterator
    • filter_has_var - Checks if variable of specified type exists
    • filter_id - 返回与某个特定名称的过滤器相关联的id
    • filter_input - 通过名称获取特定的外部变量，并且可以通过过滤器处理它
    • filter_input_array - 获取一系列外部变量，并且可以通过过滤器处理它们
    • filter_list - 返回所支持的过滤器列表
    • filter_var - 使用特定的过滤器过滤一个变量
    • filter_var_array - 获取多个变量并且过滤它们
    • finfo::buffer - 别名 finfo_buffer()
    • finfo::file - 别名 finfo_file()
    • finfo::set_flags - 别名 finfo_set_flags()
    • finfo::__construct - 别名 finfo_open
    • finfo_close - 关闭 fileinfo 资源
    • finfo_open - 创建一个 fileinfo 资源
    • floatval - 获取变量的浮点值
    • flock - 轻便的咨询文件锁定
    • floor - 舍去法取整
    • flush - 刷新输出缓冲
    • fmod - 返回除法的浮点数余数
    • fnmatch - 用模式匹配文件名
    • fopen - 打开文件或者 URL
    • forward_static_call - Call a static method
    • forward_static_call_array - Call a static method and pass the arguments as array
    • fpassthru - 输出文件指针处的所有剩余数据
    • fprintf - 将格式化后的字符串写入到流
    • fputcsv - 将行格式化为 CSV 并写入文件指针
    • fputs - fwrite 的别名
    • fread - 读取文件（可安全用于二进制文件）
    • FrenchToJD - 从一个French Republican历法的日期得到Julian Day计数。
    • fribidi_log2vis - Convert a logical string to a visual one
    • fscanf - 从文件中格式化输入
    • fseek - 在文件指针中定位
    • fsockopen - 打开一个网络连接或者一个Unix套接字连接
    • fstat - 通过已打开的文件指针取得文件信息
    • ftell - 返回文件指针读/写的位置
    • ftok - Convert a pathname and a project identifier to a System V IPC key
    • ftp:// - 访问 FTP(s) URLs
    • FTP context options - FTP context option listing
    • ftp_alloc - 为要上传的文件分配空间
    • ftp_cdup - 切换到当前目录的父目录
    • ftp_chdir - 在 FTP 服务器上改变当前目录
    • ftp_chmod - 设置 FTP 服务器上的文件权限
    • ftp_close - 关闭一个 FTP 连接
    • ftp_connect - 建立一个新的 FTP 连接
    • ftp_delete - 删除 FTP 服务器上的一个文件
    • ftp_exec - 请求运行一条 FTP 命令
    • ftp_fget - 从 FTP 服务器上下载一个文件并保存到本地一个已经打开的文件中
    • ftp_fput - 上传一个已经打开的文件到 FTP 服务器
    • ftp_get - 从 FTP 服务器上下载一个文件
    • ftp_get_option - 返回当前 FTP 连接的各种不同的选项设置
    • ftp_login - 登录 FTP 服务器
    • ftp_mdtm - 返回指定文件的最后修改时间
    • ftp_mkdir - 建立新目录
    • ftp_nb_continue - 连续获取／发送文件（non-blocking）
    • ftp_nb_fget - 从 FTP 服务器获取文件并写入到一个打开的文件（非阻塞）
    • ftp_nb_fput - 将文件存储到 FTP 服务器 （非阻塞）
    • ftp_nb_get - 从 FTP 服务器上获取文件并写入本地文件（non-blocking）
    • ftp_nb_put - 存储一个文件至 FTP 服务器（non-blocking）
    • ftp_nlist - 返回给定目录的文件列表
    • ftp_pasv - 返回当前 FTP 被动模式是否打开
    • ftp_put - 上传文件到 FTP 服务器
    • ftp_pwd - 返回当前目录名
    • ftp_quit - ftp_close 的 别名
    • ftp_raw - 向 FTP 服务器发送命令
    • ftp_rawlist - 返回指定目录下文件的详细列表
    • ftp_rename - 更改 FTP 服务器上的文件或目录名
    • ftp_rmdir - 删除 FTP 服务器上的一个目录
    • ftp_set_option - 设置各种 FTP 运行时选项
    • ftp_site - 向服务器发送 SITE 命令
    • ftp_size - 返回指定文件的大小
    • ftp_ssl_connect - 打开 SSL-FTP 连接
    • ftp_systype - 返回远程 FTP 服务器的操作系统类型
    • ftruncate - 将文件截断到给定的长度
    • function_exists - 如果给定的函数已经被定义就返回 TRUE
    • func_get_arg - 返回参数列表的某一项
    • func_get_args - 返回一个包含函数参数列表的数组
    • func_num_args - Returns the number of arguments passed to the function
    • fwrite - 写入文件（可安全用于二进制文件）
  • g
    • gc_collect_cycles - 强制收集所有现存的垃圾循环周期
    • gc_disable - 停用循环引用收集器
    • gc_enable - 激活循环引用收集器
    • gc_enabled - 返回循环引用计数器的状态
    • gc_mem_caches - Reclaims memory used by the Zend Engine memory manager
    • gd_info - 取得当前安装的 GD 库的信息
    • GearmanClient::addOptions - Add client options
    • GearmanClient::addServer - Add a job server to the client
    • GearmanClient::addServers - Add a list of job servers to the client
    • GearmanClient::addTask - Add a task to be run in parallel
    • GearmanClient::addTaskBackground - Add a background task to be run in parallel
    • GearmanClient::addTaskHigh - Add a high priority task to run in parallel
    • GearmanClient::addTaskHighBackground - Add a high priority background task to be run in parallel
    • GearmanClient::addTaskLow - Add a low priority task to run in parallel
    • GearmanClient::addTaskLowBackground - Add a low priority background task to be run in parallel
    • GearmanClient::addTaskStatus - Add a task to get status
    • GearmanClient::clearCallbacks - Clear all task callback functions
    • GearmanClient::clone - Create a copy of a GearmanClient object
    • GearmanClient::context - Get the application context
    • GearmanClient::data - Get the application data (deprecated)
    • GearmanClient::do - Run a single task and return a result [deprecated]
    • GearmanClient::doBackground - Run a task in the background
    • GearmanClient::doHigh - Run a single high priority task
    • GearmanClient::doHighBackground - Run a high priority task in the background
    • GearmanClient::doJobHandle - Get the job handle for the running task
    • GearmanClient::doLow - Run a single low priority task
    • GearmanClient::doLowBackground - Run a low priority task in the background
    • GearmanClient::doNormal - Run a single task and return a result
    • GearmanClient::doStatus - Get the status for the running task
    • GearmanClient::echo - Send data to all job servers to see if they echo it back [deprecated]
    • GearmanClient::error - Returns an error string for the last error encountered.
    • GearmanClient::getErrno - Get an errno value
    • GearmanClient::jobStatus - Get the status of a background job
    • GearmanClient::ping - Send data to all job servers to see if they echo it back
    • GearmanClient::removeOptions - Remove client options
    • GearmanClient::returnCode - Get the last Gearman return code
    • GearmanClient::runTasks - Run a list of tasks in parallel
    • GearmanClient::setClientCallback - Callback function when there is a data packet for a task (deprecated)
    • GearmanClient::setCompleteCallback - Set a function to be called on task completion
    • GearmanClient::setContext - Set application context
    • GearmanClient::setCreatedCallback - Set a callback for when a task is queued
    • GearmanClient::setData - Set application data (deprecated)
    • GearmanClient::setDataCallback - Callback function when there is a data packet for a task
    • GearmanClient::setExceptionCallback - Set a callback for worker exceptions
    • GearmanClient::setFailCallback - Set callback for job failure
    • GearmanClient::setOptions - Set client options
    • GearmanClient::setStatusCallback - Set a callback for collecting task status
    • GearmanClient::setTimeout - Set socket I/O activity timeout
    • GearmanClient::setWarningCallback - Set a callback for worker warnings
    • GearmanClient::setWorkloadCallback - Set a callback for accepting incremental data updates
    • GearmanClient::timeout - Get current socket I/O activity timeout value
    • GearmanClient::__construct - Create a GearmanClient instance
    • GearmanJob::complete - Send the result and complete status (deprecated)
    • GearmanJob::data - Send data for a running job (deprecated)
    • GearmanJob::exception - Send exception for running job (deprecated)
    • GearmanJob::fail - Send fail status (deprecated)
    • GearmanJob::functionName - Get function name
    • GearmanJob::handle - Get the job handle
    • GearmanJob::returnCode - Get last return code
    • GearmanJob::sendComplete - Send the result and complete status
    • GearmanJob::sendData - Send data for a running job
    • GearmanJob::sendException - Send exception for running job (exception)
    • GearmanJob::sendFail - Send fail status
    • GearmanJob::sendStatus - Send status
    • GearmanJob::sendWarning - Send a warning
    • GearmanJob::setReturn - Set a return value
    • GearmanJob::status - Send status (deprecated)
    • GearmanJob::unique - Get the unique identifier
    • GearmanJob::warning - Send a warning (deprecated)
    • GearmanJob::workload - Get workload
    • GearmanJob::workloadSize - Get size of work load
    • GearmanJob::__construct - Create a GearmanJob instance
    • GearmanTask::create - Create a task (deprecated)
    • GearmanTask::data - Get data returned for a task
    • GearmanTask::dataSize - Get the size of returned data
    • GearmanTask::function - Get associated function name (deprecated)
    • GearmanTask::functionName - Get associated function name
    • GearmanTask::isKnown - Determine if task is known
    • GearmanTask::isRunning - Test whether the task is currently running
    • GearmanTask::jobHandle - Get the job handle
    • GearmanTask::recvData - Read work or result data into a buffer for a task
    • GearmanTask::returnCode - Get the last return code
    • GearmanTask::sendData - Send data for a task (deprecated)
    • GearmanTask::sendWorkload - Send data for a task
    • GearmanTask::taskDenominator - Get completion percentage denominator
    • GearmanTask::taskNumerator - Get completion percentage numerator
    • GearmanTask::unique - Get the unique identifier for a task
    • GearmanTask::uuid - Get the unique identifier for a task (deprecated)
    • GearmanTask::__construct - Create a GearmanTask instance
    • GearmanWorker::addFunction - Register and add callback function
    • GearmanWorker::addOptions - Add worker options
    • GearmanWorker::addServer - Add a job server
    • GearmanWorker::addServers - Add job servers
    • GearmanWorker::clone - Create a copy of the worker
    • GearmanWorker::echo - Test job server response
    • GearmanWorker::error - Get the last error encountered
    • GearmanWorker::getErrno - Get errno
    • GearmanWorker::options - Get worker options
    • GearmanWorker::register - Register a function with the job server
    • GearmanWorker::removeOptions - Remove worker options
    • GearmanWorker::returnCode - Get last Gearman return code
    • GearmanWorker::setId - Give the worker an identifier so it can be tracked when asking gearmand for the list of available workers.
    • GearmanWorker::setOptions - Set worker options
    • GearmanWorker::setTimeout - Set socket I/O activity timeout
    • GearmanWorker::timeout - Get socket I/O activity timeout
    • GearmanWorker::unregister - Unregister a function name with the job servers
    • GearmanWorker::unregisterAll - Unregister all function names with the job servers
    • GearmanWorker::wait - Wait for activity from one of the job servers
    • GearmanWorker::work - Wait for and perform jobs
    • GearmanWorker::__construct - Create a GearmanWorker instance
    • Gender\Gender::connect - Connect to an external name dictionary.
    • Gender\Gender::country - Get textual country representation
    • Gender\Gender::get - Get gender of a name.
    • Gender\Gender::isNick - Check if the name0 is an alias of the name1.
    • Gender\Gender::similarNames - Get similar names.
    • Gender\Gender::__construct - Construct the Gender object.
    • Generator::current - 返回当前产生的值
    • Generator::key - 返回当前产生的键
    • Generator::next - 生成器继续执行
    • Generator::rewind - 重置迭代器
    • Generator::send - 向生成器中传入一个值
    • Generator::throw - 向生成器中抛入一个异常
    • Generator::valid - 检查迭代器是否被关闭
    • Generator::__wakeup - 序列化回调
    • geoip_asnum_by_name - 获取自治系统号(ASN)
    • geoip_continent_code_by_name - 获取七大洲的大写字母简称
    • geoip_country_code3_by_name - 获取三个字母组成的国家简称
    • geoip_country_code_by_name - 获取国家代码
    • geoip_country_name_by_name - 获取国家的全称
    • geoip_database_info - 获取 GeoIP 数据库的信息
    • geoip_db_avail - GeoIP 数据库是否可用
    • geoip_db_filename - 返回 GeoIP 数据库相对应的文件名
    • geoip_db_get_all_info - 返回所有 GeoIP 数据库类型的详细信息
    • geoip_domain_by_name - 获取二级域名
    • geoip_id_by_name - 获取网络连接类型
    • geoip_isp_by_name - 获取 ISP (网络服务提供商)的名称
    • geoip_netspeedcell_by_name - 获取网络连接速度
    • geoip_org_by_name - 获取机构的名称
    • geoip_record_by_name - 返回 GeoIP 数据库中详细的城市信息
    • geoip_region_by_name - 获取国家和地区代码
    • geoip_region_name_by_code - 返回给定的国家和地区代码组合所对应的地区名称
    • geoip_setup_custom_directory - 自定义 GeoIP 数据库的目录
    • geoip_time_zone_by_country_and_region - 返回国家和地区的时区
    • getallheaders - 获取全部 HTTP 请求头信息
    • getcwd - 取得当前工作目录
    • getdate - 取得日期／时间信息
    • getenv - 获取一个环境变量的值
    • gethostbyaddr - 获取指定的IP地址对应的主机名
    • gethostbyname - Get the IPv4 address corresponding to a given Internet host name
    • gethostbynamel - Get a list of IPv4 addresses corresponding to a given Internet host name
    • gethostname - Gets the host name
    • getimagesize - 取得图像大小
    • getimagesizefromstring - 从字符串中获取图像尺寸信息
    • getlastmod - 获取页面最后修改的时间
    • getmxrr - Get MX records corresponding to a given Internet host name
    • getmygid - 获取当前 PHP 脚本拥有者的 GID
    • getmyinode - 获取当前脚本的索引节点（inode）
    • getmypid - 获取 PHP 进程的 ID
    • getmyuid - 获取 PHP 脚本所有者的 UID
    • getopt - 从命令行参数列表中获取选项
    • getprotobyname - Get protocol number associated with protocol name
    • getprotobynumber - Get protocol name associated with protocol number
    • getrandmax - 显示随机数最大的可能值
    • getrusage - 获取当前资源使用状况
    • getservbyname - Get port number associated with an Internet service and protocol
    • getservbyport - Get Internet service which corresponds to port and protocol
    • gettext - Lookup a message in the current domain
    • gettimeofday - 取得当前时间
    • gettype - 获取变量的类型
    • get_browser - 获取浏览器具有的功能
    • get_called_class - 后期静态绑定（"Late Static Binding"）类的名称
    • get_cfg_var - 获取 PHP 配置选项的值
    • get_class - 返回对象的类名
    • get_class_methods - 返回由类的方法名组成的数组
    • get_class_vars - 返回由类的默认属性组成的数组
    • get_current_user - 获取当前 PHP 脚本所有者名称
    • get_declared_classes - 返回由已定义类的名字所组成的数组
    • get_declared_interfaces - 返回一个数组包含所有已声明的接口
    • get_declared_traits - 返回所有已定义的 traits 的数组
    • get_defined_constants - 返回所有常量的关联数组，键是常量名，值是常量值
    • get_defined_functions - Returns an array of all defined functions
    • get_defined_vars - 返回由所有已定义变量所组成的数组
    • get_extension_funcs - 返回模块函数名称的数组
    • get_headers - 取得服务器响应一个 HTTP 请求所发送的所有标头
    • get_html_translation_table - 返回使用 htmlspecialchars 和 htmlentities 后的转换表
    • get_included_files - 返回被 include 和 require 文件名的 array
    • get_include_path - 获取当前的 include_path 配置选项
    • get_loaded_extensions - 返回所有编译并加载模块名的 array
    • get_magic_quotes_gpc - 获取当前 magic_quotes_gpc 的配置选项设置
    • get_magic_quotes_runtime - 获取当前 magic_quotes_runtime 配置选项的激活状态
    • get_meta_tags - 从一个文件中提取所有的 meta 标签 content 属性，返回一个数组
    • get_object_vars - 返回由对象属性组成的关联数组
    • get_parent_class - 返回对象或类的父类名
    • get_required_files - 别名 get_included_files
    • get_resources - Returns active resources
    • get_resource_type - 返回资源（resource）类型
    • glob - 寻找与模式匹配的文件路径
    • glob:// - 查找匹配的文件路径模式
    • GlobIterator::count - Get the number of directories and files
    • GlobIterator::__construct - Construct a directory using glob
    • Gmagick::addimage - Adds new image to Gmagick object image list
    • Gmagick::addnoiseimage - Adds random noise to the image
    • Gmagick::annotateimage - Annotates an image with text
    • Gmagick::blurimage - Adds blur filter to image
    • Gmagick::borderimage - Surrounds the image with a border
    • Gmagick::charcoalimage - Simulates a charcoal drawing
    • Gmagick::chopimage - Removes a region of an image and trims
    • Gmagick::clear - Clears all resources associated to Gmagick object
    • Gmagick::commentimage - Adds a comment to your image
    • Gmagick::compositeimage - Composite one image onto another
    • Gmagick::cropimage - Extracts a region of the image
    • Gmagick::cropthumbnailimage - Creates a crop thumbnail
    • Gmagick::current - The current purpose
    • Gmagick::cyclecolormapimage - Displaces an image's colormap
    • Gmagick::deconstructimages - Returns certain pixel differences between images
    • Gmagick::despeckleimage - The despeckleimage purpose
    • Gmagick::destroy - The destroy purpose
    • Gmagick::drawimage - Renders the GmagickDraw object on the current image
    • Gmagick::edgeimage - Enhance edges within the image
    • Gmagick::embossimage - Returns a grayscale image with a three-dimensional effect
    • Gmagick::enhanceimage - Improves the quality of a noisy image
    • Gmagick::equalizeimage - Equalizes the image histogram
    • Gmagick::flipimage - Creates a vertical mirror image
    • Gmagick::flopimage - The flopimage purpose
    • Gmagick::frameimage - Adds a simulated three-dimensional border
    • Gmagick::gammaimage - Gamma-corrects an image
    • Gmagick::getcopyright - Returns the GraphicsMagick API copyright as a string
    • Gmagick::getfilename - The filename associated with an image sequence
    • Gmagick::getimagebackgroundcolor - Returns the image background color
    • Gmagick::getimageblueprimary - Returns the chromaticy blue primary point
    • Gmagick::getimagebordercolor - Returns the image border color
    • Gmagick::getimagechanneldepth - Gets the depth for a particular image channel
    • Gmagick::getimagecolors - Returns the color of the specified colormap index
    • Gmagick::getimagecolorspace - Gets the image colorspace
    • Gmagick::getimagecompose - Returns the composite operator associated with the image
    • Gmagick::getimagedelay - Gets the image delay
    • Gmagick::getimagedepth - Gets the depth of the image
    • Gmagick::getimagedispose - Gets the image disposal method
    • Gmagick::getimageextrema - Gets the extrema for the image
    • Gmagick::getimagefilename - Returns the filename of a particular image in a sequence
    • Gmagick::getimageformat - Returns the format of a particular image in a sequence
    • Gmagick::getimagegamma - Gets the image gamma
    • Gmagick::getimagegreenprimary - Returns the chromaticy green primary point
    • Gmagick::getimageheight - Returns the image height
    • Gmagick::getimagehistogram - Gets the image histogram
    • Gmagick::getimageindex - Gets the index of the current active image
    • Gmagick::getimageinterlacescheme - Gets the image interlace scheme
    • Gmagick::getimageiterations - Gets the image iterations
    • Gmagick::getimagematte - Check if the image has a matte channel
    • Gmagick::getimagemattecolor - Returns the image matte color
    • Gmagick::getimageprofile - Returns the named image profile.
    • Gmagick::getimageredprimary - Returns the chromaticity red primary point
    • Gmagick::getimagerenderingintent - Gets the image rendering intent
    • Gmagick::getimageresolution - Gets the image X and Y resolution
    • Gmagick::getimagescene - Gets the image scene
    • Gmagick::getimagesignature - Generates an SHA-256 message digest
    • Gmagick::getimagetype - Gets the potential image type.
    • Gmagick::getimageunits - Gets the image units of resolution
    • Gmagick::getimagewhitepoint - Returns the chromaticity white point
    • Gmagick::getimagewidth - Returns the width of the image
    • Gmagick::getpackagename - Returns the GraphicsMagick package name.
    • Gmagick::getquantumdepth - Returns the Gmagick quantum depth as a string.
    • Gmagick::getreleasedate - Returns the GraphicsMagick release date as a string.
    • Gmagick::getsamplingfactors - Gets the horizontal and vertical sampling factor.
    • Gmagick::getsize - Returns the size associated with the Gmagick object
    • Gmagick::getversion - Returns the GraphicsMagick API version
    • Gmagick::hasnextimage - Checks if the object has more images
    • Gmagick::haspreviousimage - Checks if the object has a previous image
    • Gmagick::implodeimage - Creates a new image as a copy
    • Gmagick::labelimage - Adds a label to an image.
    • Gmagick::levelimage - Adjusts the levels of an image
    • Gmagick::magnifyimage - Scales an image proportionally 2x
    • Gmagick::mapimage - Replaces the colors of an image with the closest color from a reference image.
    • Gmagick::medianfilterimage - Applies a digital filter
    • Gmagick::minifyimage - Scales an image proportionally to half its size
    • Gmagick::modulateimage - Control the brightness, saturation, and hue
    • Gmagick::motionblurimage - Simulates motion blur
    • Gmagick::newimage - Creates a new image
    • Gmagick::nextimage - Moves to the next image
    • Gmagick::normalizeimage - Enhances the contrast of a color image
    • Gmagick::oilpaintimage - Simulates an oil painting
    • Gmagick::previousimage - Move to the previous image in the object
    • Gmagick::profileimage - Adds or removes a profile from an image
    • Gmagick::quantizeimage - Analyzes the colors within a reference image
    • Gmagick::quantizeimages - The quantizeimages purpose
    • Gmagick::queryfontmetrics - Returns an array representing the font metrics
    • Gmagick::queryfonts - Returns the configured fonts
    • Gmagick::queryformats - Returns formats supported by Gmagick.
    • Gmagick::radialblurimage - Radial blurs an image
    • Gmagick::raiseimage - Creates a simulated 3d button-like effect
    • Gmagick::read - Reads image from filename
    • Gmagick::readimage - Reads image from filename
    • Gmagick::readimageblob - Reads image from a binary string
    • Gmagick::readimagefile - The readimagefile purpose
    • Gmagick::reducenoiseimage - Smooths the contours of an image
    • Gmagick::removeimage - Removes an image from the image list
    • Gmagick::removeimageprofile - Removes the named image profile and returns it
    • Gmagick::resampleimage - Resample image to desired resolution
    • Gmagick::resizeimage - Scales an image
    • Gmagick::rollimage - Offsets an image
    • Gmagick::rotateimage - Rotates an image
    • Gmagick::scaleimage - Scales the size of an image
    • Gmagick::separateimagechannel - Separates a channel from the image
    • Gmagick::setCompressionQuality - Sets the object's default compression quality
    • Gmagick::setfilename - Sets the filename before you read or write the image
    • Gmagick::setimagebackgroundcolor - Sets the image background color.
    • Gmagick::setimageblueprimary - Sets the image chromaticity blue primary point.
    • Gmagick::setimagebordercolor - Sets the image border color.
    • Gmagick::setimagechanneldepth - Sets the depth of a particular image channel
    • Gmagick::setimagecolorspace - Sets the image colorspace
    • Gmagick::setimagecompose - Sets the image composite operator
    • Gmagick::setimagedelay - Sets the image delay
    • Gmagick::setimagedepth - Sets the image depth
    • Gmagick::setimagedispose - Sets the image disposal method
    • Gmagick::setimagefilename - Sets the filename of a particular image in a sequence
    • Gmagick::setimageformat - Sets the format of a particular image
    • Gmagick::setimagegamma - Sets the image gamma
    • Gmagick::setimagegreenprimary - Sets the image chromaticity green primary point.
    • Gmagick::setimageindex - Set the iterator to the position in the image list specified with the index parameter
    • Gmagick::setimageinterlacescheme - Sets the interlace scheme of the image.
    • Gmagick::setimageiterations - Sets the image iterations.
    • Gmagick::setimageprofile - Adds a named profile to the Gmagick object
    • Gmagick::setimageredprimary - Sets the image chromaticity red primary point.
    • Gmagick::setimagerenderingintent - Sets the image rendering intent
    • Gmagick::setimageresolution - Sets the image resolution
    • Gmagick::setimagescene - Sets the image scene
    • Gmagick::setimagetype - Sets the image type
    • Gmagick::setimageunits - Sets the image units of resolution.
    • Gmagick::setimagewhitepoint - Sets the image chromaticity white point.
    • Gmagick::setsamplingfactors - Sets the image sampling factors.
    • Gmagick::setsize - Sets the size of the Gmagick object
    • Gmagick::shearimage - Creating a parallelogram
    • Gmagick::solarizeimage - Applies a solarizing effect to the image
    • Gmagick::spreadimage - Randomly displaces each pixel in a block
    • Gmagick::stripimage - Strips an image of all profiles and comments
    • Gmagick::swirlimage - Swirls the pixels about the center of the image
    • Gmagick::thumbnailimage - Changes the size of an image
    • Gmagick::trimimage - Remove edges from the image
    • Gmagick::write - 别名 Gmagick::writeimage
    • Gmagick::writeimage - Writes an image to the specified filename
    • Gmagick::__construct - The Gmagick constructor
    • GmagickDraw::annotate - Draws text on the image
    • GmagickDraw::arc - Draws an arc
    • GmagickDraw::bezier - Draws a bezier curve
    • GmagickDraw::ellipse - Draws an ellipse on the image
    • GmagickDraw::getfillcolor - Returns the fill color
    • GmagickDraw::getfillopacity - Returns the opacity used when drawing
    • GmagickDraw::getfont - Returns the font
    • GmagickDraw::getfontsize - Returns the font pointsize
    • GmagickDraw::getfontstyle - Returns the font style
    • GmagickDraw::getfontweight - Returns the font weight
    • GmagickDraw::getstrokecolor - Returns the color used for stroking object outlines
    • GmagickDraw::getstrokeopacity - Returns the opacity of stroked object outlines
    • GmagickDraw::getstrokewidth - Returns the width of the stroke used to draw object outlines
    • GmagickDraw::gettextdecoration - Returns the text decoration
    • GmagickDraw::gettextencoding - Returns the code set used for text annotations
    • GmagickDraw::line - The line purpose
    • GmagickDraw::point - Draws a point
    • GmagickDraw::polygon - Draws a polygon
    • GmagickDraw::polyline - Draws a polyline
    • GmagickDraw::rectangle - Draws a rectangle
    • GmagickDraw::rotate - Applies the specified rotation to the current coordinate space
    • GmagickDraw::roundrectangle - Draws a rounded rectangle
    • GmagickDraw::scale - Adjusts the scaling factor
    • GmagickDraw::setfillcolor - Sets the fill color to be used for drawing filled objects.
    • GmagickDraw::setfillopacity - The setfillopacity purpose
    • GmagickDraw::setfont - Sets the fully-specified font to use when annotating with text.
    • GmagickDraw::setfontsize - Sets the font pointsize to use when annotating with text.
    • GmagickDraw::setfontstyle - Sets the font style to use when annotating with text
    • GmagickDraw::setfontweight - Sets the font weight
    • GmagickDraw::setstrokecolor - Sets the color used for stroking object outlines.
    • GmagickDraw::setstrokeopacity - Specifies the opacity of stroked object outlines.
    • GmagickDraw::setstrokewidth - Sets the width of the stroke used to draw object outlines.
    • GmagickDraw::settextdecoration - Specifies a decoration
    • GmagickDraw::settextencoding - Specifies the text code set
    • GmagickPixel::getcolor - Returns the color
    • GmagickPixel::getcolorcount - Returns the color count associated with this color
    • GmagickPixel::getcolorvalue - Gets the normalized value of the provided color channel
    • GmagickPixel::setcolor - Sets the color
    • GmagickPixel::setcolorvalue - Sets the normalized value of one of the channels
    • GmagickPixel::__construct - The GmagickPixel constructor
    • gmdate - 格式化一个 GMT/UTC 日期／时间
    • gmmktime - 取得 GMT 日期的 UNIX 时间戳
    • gmp_abs - Absolute value
    • gmp_add - Add numbers
    • gmp_and - Bitwise AND
    • gmp_clrbit - Clear bit
    • gmp_cmp - Compare numbers
    • gmp_com - Calculates one's complement
    • gmp_div - 别名 gmp_div_q
    • gmp_divexact - Exact division of numbers
    • gmp_div_q - Divide numbers
    • gmp_div_qr - Divide numbers and get quotient and remainder
    • gmp_div_r - Remainder of the division of numbers
    • gmp_export - Export to a binary string
    • gmp_fact - Factorial
    • gmp_gcd - Calculate GCD
    • gmp_gcdext - Calculate GCD and multipliers
    • gmp_hamdist - Hamming distance
    • gmp_import - Import from a binary string
    • gmp_init - Create GMP number
    • gmp_intval - Convert GMP number to integer
    • gmp_invert - Inverse by modulo
    • gmp_jacobi - Jacobi symbol
    • gmp_legendre - Legendre symbol
    • gmp_mod - Modulo operation
    • gmp_mul - Multiply numbers
    • gmp_neg - Negate number
    • gmp_nextprime - Find next prime number
    • gmp_or - Bitwise OR
    • gmp_perfect_square - Perfect square check
    • gmp_popcount - Population count
    • gmp_pow - Raise number into power
    • gmp_powm - Raise number into power with modulo
    • gmp_prob_prime - Check if number is "probably prime"
    • gmp_random - Random number
    • gmp_random_bits - Random number
    • gmp_random_range - Random number
    • gmp_random_seed - Sets the RNG seed
    • gmp_root - Take the integer part of nth root
    • gmp_rootrem - Take the integer part and remainder of nth root
    • gmp_scan0 - Scan for 0
    • gmp_scan1 - Scan for 1
    • gmp_setbit - Set bit
    • gmp_sign - Sign of number
    • gmp_sqrt - Calculate square root
    • gmp_sqrtrem - Square root with remainder
    • gmp_strval - Convert GMP number to string
    • gmp_sub - Subtract numbers
    • gmp_testbit - Tests if a bit is set
    • gmp_xor - Bitwise XOR
    • gmstrftime - 根据区域设置格式化 GMT/UTC 时间／日期
    • gnupg_adddecryptkey - Add a key for decryption
    • gnupg_addencryptkey - Add a key for encryption
    • gnupg_addsignkey - Add a key for signing
    • gnupg_cleardecryptkeys - Removes all keys which were set for decryption before
    • gnupg_clearencryptkeys - Removes all keys which were set for encryption before
    • gnupg_clearsignkeys - Removes all keys which were set for signing before
    • gnupg_decrypt - Decrypts a given text
    • gnupg_decryptverify - Decrypts and verifies a given text
    • gnupg_encrypt - Encrypts a given text
    • gnupg_encryptsign - Encrypts and signs a given text
    • gnupg_export - Exports a key
    • gnupg_geterror - Returns the errortext, if a function fails
    • gnupg_getprotocol - Returns the currently active protocol for all operations
    • gnupg_import - Imports a key
    • gnupg_init - Initialize a connection
    • gnupg_keyinfo - Returns an array with information about all keys that matches the given pattern
    • gnupg_setarmor - Toggle armored output
    • gnupg_seterrormode - Sets the mode for error_reporting
    • gnupg_setsignmode - Sets the mode for signing
    • gnupg_sign - Signs a given text
    • gnupg_verify - Verifies a signed text
    • gopher_parsedir - Translate a gopher formatted directory entry into an associative array.
    • grapheme_extract - Function to extract a sequence of default grapheme clusters from a text buffer, which must be encoded in UTF-8.
    • grapheme_stripos - Find position (in grapheme units) of first occurrence of a case-insensitive string
    • grapheme_stristr - Returns part of haystack string from the first occurrence of case-insensitive needle to the end of haystack.
    • grapheme_strlen - Get string length in grapheme units
    • grapheme_strpos - Find position (in grapheme units) of first occurrence of a string
    • grapheme_strripos - Find position (in grapheme units) of last occurrence of a case-insensitive string
    • grapheme_strrpos - Find position (in grapheme units) of last occurrence of a string
    • grapheme_strstr - Returns part of haystack string from the first occurrence of needle to the end of haystack.
    • grapheme_substr - Return part of a string
    • GregorianToJD - 转变一个Gregorian历法日期到Julian Day计数
    • gupnp_context_get_host_ip - Get the IP address
    • gupnp_context_get_port - Get the port
    • gupnp_context_get_subscription_timeout - Get the event subscription timeout
    • gupnp_context_host_path - Start hosting
    • gupnp_context_new - Create a new context
    • gupnp_context_set_subscription_timeout - Sets the event subscription timeout
    • gupnp_context_timeout_add - Sets a function to be called at regular intervals
    • gupnp_context_unhost_path - Stop hosting
    • gupnp_control_point_browse_start - Start browsing
    • gupnp_control_point_browse_stop - Stop browsing
    • gupnp_control_point_callback_set - Set control point callback
    • gupnp_control_point_new - Create a new control point
    • gupnp_device_action_callback_set - Set device callback function
    • gupnp_device_info_get - Get info of root device
    • gupnp_device_info_get_service - Get the service with type
    • gupnp_root_device_get_available - Check whether root device is available
    • gupnp_root_device_get_relative_location - Get the relative location of root device.
    • gupnp_root_device_new - Create a new root device
    • gupnp_root_device_set_available - Set whether or not root_device is available
    • gupnp_root_device_start - Start main loop
    • gupnp_root_device_stop - Stop main loop
    • gupnp_service_action_get - Retrieves the specified action arguments
    • gupnp_service_action_return - Return successfully
    • gupnp_service_action_return_error - Return error code
    • gupnp_service_action_set - Sets the specified action return values
    • gupnp_service_freeze_notify - Freeze new notifications
    • gupnp_service_info_get - Get full info of service
    • gupnp_service_info_get_introspection - Get resource introspection of service
    • gupnp_service_introspection_get_state_variable - Returns the state variable data
    • gupnp_service_notify - Notifies listening clients
    • gupnp_service_proxy_action_get - Send action to the service and get value
    • gupnp_service_proxy_action_set - Send action to the service and set value
    • gupnp_service_proxy_add_notify - Sets up callback for variable change notification
    • gupnp_service_proxy_callback_set - Set service proxy callback for signal
    • gupnp_service_proxy_get_subscribed - Check whether subscription is valid to the service
    • gupnp_service_proxy_remove_notify - Cancels the variable change notification
    • gupnp_service_proxy_send_action - Send action with multiple parameters synchronously
    • gupnp_service_proxy_set_subscribed - (Un)subscribes to the service.
    • gupnp_service_thaw_notify - Sends out any pending notifications and stops queuing of new ones.
    • gzclose - Close an open gz-file pointer
    • gzcompress - Compress a string
    • gzdecode - Decodes a gzip compressed string
    • gzdeflate - Deflate a string
    • gzencode - Create a gzip compressed string
    • gzeof - Test for EOF on a gz-file pointer
    • gzfile - Read entire gz-file into an array
    • gzgetc - Get character from gz-file pointer
    • gzgets - Get line from file pointer
    • gzgetss - Get line from gz-file pointer and strip HTML tags
    • gzinflate - Inflate a deflated string
    • gzopen - Open gz-file
    • gzpassthru - Output all remaining data on a gz-file pointer
    • gzputs - 别名 gzwrite
    • gzread - Binary-safe gz-file read
    • gzrewind - Rewind the position of a gz-file pointer
    • gzseek - Seek on a gz-file pointer
    • gztell - Tell gz-file pointer read/write position
    • gzuncompress - Uncompress a compressed string
    • gzwrite - Binary-safe gz-file write
  • h
    • HaruAnnotation::setBorderStyle - Set the border style of the annotation
    • HaruAnnotation::setHighlightMode - Set the highlighting mode of the annotation
    • HaruAnnotation::setIcon - Set the icon style of the annotation
    • HaruAnnotation::setOpened - Set the initial state of the annotation
    • HaruDestination::setFit - Set the appearance of the page to fit the window
    • HaruDestination::setFitB - Set the appearance of the page to fit the bounding box of the page within the window
    • HaruDestination::setFitBH - Set the appearance of the page to fit the width of the bounding box
    • HaruDestination::setFitBV - Set the appearance of the page to fit the height of the boudning box
    • HaruDestination::setFitH - Set the appearance of the page to fit the window width
    • HaruDestination::setFitR - Set the appearance of the page to fit the specified rectangle
    • HaruDestination::setFitV - Set the appearance of the page to fit the window height
    • HaruDestination::setXYZ - Set the appearance of the page
    • HaruDoc::addPage - Add new page to the document
    • HaruDoc::addPageLabel - Set the numbering style for the specified range of pages
    • HaruDoc::createOutline - Create a HaruOutline instance
    • HaruDoc::getCurrentEncoder - Get HaruEncoder currently used in the document
    • HaruDoc::getCurrentPage - Return current page of the document
    • HaruDoc::getEncoder - Get HaruEncoder instance for the specified encoding
    • HaruDoc::getFont - Get HaruFont instance
    • HaruDoc::getInfoAttr - Get current value of the specified document attribute
    • HaruDoc::getPageLayout - Get current page layout
    • HaruDoc::getPageMode - Get current page mode
    • HaruDoc::getStreamSize - Get the size of the temporary stream
    • HaruDoc::insertPage - Insert new page just before the specified page
    • HaruDoc::loadJPEG - Load a JPEG image
    • HaruDoc::loadPNG - Load PNG image and return HaruImage instance
    • HaruDoc::loadRaw - Load a RAW image
    • HaruDoc::loadTTC - Load the font with the specified index from TTC file
    • HaruDoc::loadTTF - Load TTF font file
    • HaruDoc::loadType1 - Load Type1 font
    • HaruDoc::output - Write the document data to the output buffer
    • HaruDoc::readFromStream - Read data from the temporary stream
    • HaruDoc::resetError - Reset error state of the document handle
    • HaruDoc::resetStream - Rewind the temporary stream
    • HaruDoc::save - Save the document into the specified file
    • HaruDoc::saveToStream - Save the document into a temporary stream
    • HaruDoc::setCompressionMode - Set compression mode for the document
    • HaruDoc::setCurrentEncoder - Set the current encoder for the document
    • HaruDoc::setEncryptionMode - Set encryption mode for the document
    • HaruDoc::setInfoAttr - Set the info attribute of the document
    • HaruDoc::setInfoDateAttr - Set the datetime info attributes of the document
    • HaruDoc::setOpenAction - Define which page is shown when the document is opened
    • HaruDoc::setPageLayout - Set how pages should be displayed
    • HaruDoc::setPageMode - Set how the document should be displayed
    • HaruDoc::setPagesConfiguration - Set the number of pages per set of pages
    • HaruDoc::setPassword - Set owner and user passwords for the document
    • HaruDoc::setPermission - Set permissions for the document
    • HaruDoc::useCNSEncodings - Enable Chinese simplified encodings
    • HaruDoc::useCNSFonts - Enable builtin Chinese simplified fonts
    • HaruDoc::useCNTEncodings - Enable Chinese traditional encodings
    • HaruDoc::useCNTFonts - Enable builtin Chinese traditional fonts
    • HaruDoc::useJPEncodings - Enable Japanese encodings
    • HaruDoc::useJPFonts - Enable builtin Japanese fonts
    • HaruDoc::useKREncodings - Enable Korean encodings
    • HaruDoc::useKRFonts - Enable builtin Korean fonts
    • HaruDoc::__construct - Construct new HaruDoc instance
    • HaruEncoder::getByteType - Get the type of the byte in the text
    • HaruEncoder::getType - Get the type of the encoder
    • HaruEncoder::getUnicode - Convert the specified character to unicode
    • HaruEncoder::getWritingMode - Get the writing mode of the encoder
    • HaruFont::getAscent - Get the vertical ascent of the font
    • HaruFont::getCapHeight - Get the distance from the baseline of uppercase letters
    • HaruFont::getDescent - Get the vertical descent of the font
    • HaruFont::getEncodingName - Get the name of the encoding
    • HaruFont::getFontName - Get the name of the font
    • HaruFont::getTextWidth - Get the total width of the text, number of characters, number of words and number of spaces
    • HaruFont::getUnicodeWidth - Get the width of the character in the font
    • HaruFont::getXHeight - Get the distance from the baseline of lowercase letters
    • HaruFont::measureText - Calculate the number of characters which can be included within the specified width
    • HaruImage::getBitsPerComponent - Get the number of bits used to describe each color component of the image
    • HaruImage::getColorSpace - Get the name of the color space
    • HaruImage::getHeight - Get the height of the image
    • HaruImage::getSize - Get size of the image
    • HaruImage::getWidth - Get the width of the image
    • HaruImage::setColorMask - Set the color mask of the image
    • HaruImage::setMaskImage - Set the image mask
    • HaruOutline::setDestination - Set the destination for the outline
    • HaruOutline::setOpened - Set the initial state of the outline
    • HaruPage::arc - Append an arc to the current path
    • HaruPage::beginText - Begin a text object and set the current text position to (0,0)
    • HaruPage::circle - Append a circle to the current path
    • HaruPage::closePath - Append a straight line from the current point to the start point of the path
    • HaruPage::concat - Concatenate current transformation matrix of the page and the specified matrix
    • HaruPage::createDestination - Create new HaruDestination instance
    • HaruPage::createLinkAnnotation - Create new HaruAnnotation instance
    • HaruPage::createTextAnnotation - Create new HaruAnnotation instance
    • HaruPage::createURLAnnotation - Create and return new HaruAnnotation instance
    • HaruPage::curveTo - Append a Bezier curve to the current path
    • HaruPage::curveTo2 - Append a Bezier curve to the current path
    • HaruPage::curveTo3 - Append a Bezier curve to the current path
    • HaruPage::drawImage - Show image at the page
    • HaruPage::ellipse - Append an ellipse to the current path
    • HaruPage::endPath - End current path object without filling and painting operations
    • HaruPage::endText - End current text object
    • HaruPage::eofill - Fill current path using even-odd rule
    • HaruPage::eoFillStroke - Fill current path using even-odd rule, then paint the path
    • HaruPage::fill - Fill current path using nonzero winding number rule
    • HaruPage::fillStroke - Fill current path using nonzero winding number rule, then paint the path
    • HaruPage::getCharSpace - Get the current value of character spacing
    • HaruPage::getCMYKFill - Get the current filling color
    • HaruPage::getCMYKStroke - Get the current stroking color
    • HaruPage::getCurrentFont - Get the currently used font
    • HaruPage::getCurrentFontSize - Get the current font size
    • HaruPage::getCurrentPos - Get the current position for path painting
    • HaruPage::getCurrentTextPos - Get the current position for text printing
    • HaruPage::getDash - Get the current dash pattern
    • HaruPage::getFillingColorSpace - Get the current filling color space
    • HaruPage::getFlatness - Get the flatness of the page
    • HaruPage::getGMode - Get the current graphics mode
    • HaruPage::getGrayFill - Get the current filling color
    • HaruPage::getGrayStroke - Get the current stroking color
    • HaruPage::getHeight - Get the height of the page
    • HaruPage::getHorizontalScaling - Get the current value of horizontal scaling
    • HaruPage::getLineCap - Get the current line cap style
    • HaruPage::getLineJoin - Get the current line join style
    • HaruPage::getLineWidth - Get the current line width
    • HaruPage::getMiterLimit - Get the value of miter limit
    • HaruPage::getRGBFill - Get the current filling color
    • HaruPage::getRGBStroke - Get the current stroking color
    • HaruPage::getStrokingColorSpace - Get the current stroking color space
    • HaruPage::getTextLeading - Get the current value of line spacing
    • HaruPage::getTextMatrix - Get the current text transformation matrix of the page
    • HaruPage::getTextRenderingMode - Get the current text rendering mode
    • HaruPage::getTextRise - Get the current value of text rising
    • HaruPage::getTextWidth - Get the width of the text using current fontsize, character spacing and word spacing
    • HaruPage::getTransMatrix - Get the current transformation matrix of the page
    • HaruPage::getWidth - Get the width of the page
    • HaruPage::getWordSpace - Get the current value of word spacing
    • HaruPage::lineTo - Draw a line from the current point to the specified point
    • HaruPage::measureText - Calculate the byte length of characters which can be included on one line of the specified width
    • HaruPage::moveTextPos - Move text position to the specified offset
    • HaruPage::moveTo - Set starting point for new drawing path
    • HaruPage::moveToNextLine - Move text position to the start of the next line
    • HaruPage::rectangle - Append a rectangle to the current path
    • HaruPage::setCharSpace - Set character spacing for the page
    • HaruPage::setCMYKFill - Set filling color for the page
    • HaruPage::setCMYKStroke - Set stroking color for the page
    • HaruPage::setDash - Set the dash pattern for the page
    • HaruPage::setFlatness - Set flatness for the page
    • HaruPage::setFontAndSize - Set font and fontsize for the page
    • HaruPage::setGrayFill - Set filling color for the page
    • HaruPage::setGrayStroke - Sets stroking color for the page
    • HaruPage::setHeight - Set height of the page
    • HaruPage::setHorizontalScaling - Set horizontal scaling for the page
    • HaruPage::setLineCap - Set the shape to be used at the ends of lines
    • HaruPage::setLineJoin - Set line join style for the page
    • HaruPage::setLineWidth - Set line width for the page
    • HaruPage::setMiterLimit - Set the current value of the miter limit of the page
    • HaruPage::setRGBFill - Set filling color for the page
    • HaruPage::setRGBStroke - Set stroking color for the page
    • HaruPage::setRotate - Set rotation angle of the page
    • HaruPage::setSize - Set size and direction of the page
    • HaruPage::setSlideShow - Set transition style for the page
    • HaruPage::setTextLeading - Set text leading (line spacing) for the page
    • HaruPage::setTextMatrix - Set the current text transformation matrix of the page
    • HaruPage::setTextRenderingMode - Set text rendering mode for the page
    • HaruPage::setTextRise - Set the current value of text rising
    • HaruPage::setWidth - Set width of the page
    • HaruPage::setWordSpace - Set word spacing for the page
    • HaruPage::showText - Print text at the current position of the page
    • HaruPage::showTextNextLine - Move the current position to the start of the next line and print the text
    • HaruPage::stroke - Paint current path
    • HaruPage::textOut - Print the text on the specified position
    • HaruPage::textRect - Print the text inside the specified region
    • hash - 生成哈希值 （消息摘要）
    • hash_algos - 返回已注册的哈希算法列表
    • hash_copy - 拷贝哈希运算上下文
    • hash_equals - 可防止时序攻击的字符串比较
    • hash_file - 使用给定文件的内容生成哈希值
    • hash_final - 结束增量哈希，并且返回摘要结果
    • hash_hmac - 使用 HMAC 方法生成带有密钥的哈希值
    • hash_hmac_file - 使用 HMAC 方法和给定文件的内容生成带密钥的哈希值
    • hash_init - 初始化增量哈希运算上下文
    • hash_pbkdf2 - 生成所提供密码的 PBKDF2 密钥导出
    • hash_update - 向活跃的哈希运算上下文中填充数据
    • hash_update_file - 从文件向活跃的哈希运算上下文中填充数据
    • hash_update_stream - 从打开的流向活跃的哈希运算上下文中填充数据
    • header - 发送原生 HTTP 头
    • headers_list - Returns a list of response headers sent (or ready to send)
    • headers_sent - Checks if or where headers have been sent
    • header_register_callback - Call a header function
    • header_remove - Remove previously set headers
    • hebrev - 将逻辑顺序希伯来文（logical-Hebrew）转换为视觉顺序希伯来文（visual-Hebrew）
    • hebrevc - 将逻辑顺序希伯来文（logical-Hebrew）转换为视觉顺序希伯来文（visual-Hebrew），并且转换换行符
    • hex2bin - 转换十六进制字符串为二进制字符串
    • hexdec - 十六进制转换为十进制
    • highlight_file - 语法高亮一个文件
    • highlight_string - 字符串的语法高亮
    • HRTime\PerformanceCounter::getFrequency - Timer frequency in ticks per second
    • HRTime\PerformanceCounter::getTicks - Current ticks from the system
    • HRTime\PerformanceCounter::getTicksSince - Ticks elapsed since the given value
    • HRTime\StopWatch::getElapsedTicks - Get elapsed ticks for all intervals.
    • HRTime\StopWatch::getElapsedTime - Get elapsed time for all intervals.
    • HRTime\StopWatch::getLastElapsedTicks - Get elapsed ticks for the last interval.
    • HRTime\StopWatch::getLastElapsedTime - Get elapsed time for the last interval.
    • HRTime\StopWatch::isRunning - Whether the measurement is running.
    • HRTime\StopWatch::start - Start time measurement
    • HRTime\StopWatch::stop - Stop time measurement
    • htmlentities - Convert all applicable characters to HTML entities
    • htmlspecialchars - Convert special characters to HTML entities
    • htmlspecialchars_decode - 将特殊的 HTML 实体转换回普通字符
    • html_entity_decode - Convert all HTML entities to their applicable characters
    • http:// - 访问 HTTP(s) 网址
    • HTTP context 选项 - HTTP context 的选项列表
    • http_build_query - 生成 URL-encode 之后的请求字符串
    • http_response_code - Get or Set the HTTP response code
    • hwapi_attribute_new - Creates instance of class hw_api_attribute
    • hwapi_content_new - Create new instance of class hw_api_content
    • hwapi_hgcsp - Returns object of class hw_api
    • hwapi_object_new - Creates a new instance of class hwapi_object_new
    • hw_api::checkin - Checks in an object
    • hw_api::checkout - Checks out an object
    • hw_api::children - Returns children of an object
    • hw_api::content - Returns content of an object
    • hw_api::copy - Copies physically
    • hw_api::dbstat - Returns statistics about database server
    • hw_api::dcstat - Returns statistics about document cache server
    • hw_api::dstanchors - Returns a list of all destination anchors
    • hw_api::dstofsrcanchor - Returns destination of a source anchor
    • hw_api::find - Search for objects
    • hw_api::ftstat - Returns statistics about fulltext server
    • hw_api::hwstat - Returns statistics about Hyperwave server
    • hw_api::identify - Log into Hyperwave Server
    • hw_api::info - Returns information about server configuration
    • hw_api::insert - Inserts a new object
    • hw_api::insertanchor - Inserts a new object of type anchor
    • hw_api::insertcollection - Inserts a new object of type collection
    • hw_api::insertdocument - Inserts a new object of type document
    • hw_api::link - Creates a link to an object
    • hw_api::lock - Locks an object
    • hw_api::move - Moves object between collections
    • hw_api::object - Retrieve attribute information
    • hw_api::objectbyanchor - Returns the object an anchor belongs to
    • hw_api::parents - Returns parents of an object
    • hw_api::remove - Delete an object
    • hw_api::replace - Replaces an object
    • hw_api::setcommittedversion - Commits version other than last version
    • hw_api::srcanchors - Returns a list of all source anchors
    • hw_api::srcsofdst - Returns source of a destination object
    • hw_api::unlock - Unlocks a locked object
    • hw_api::user - Returns the own user object
    • hw_api::userlist - Returns a list of all logged in users
    • hw_api_attribute::key - Returns key of the attribute
    • hw_api_attribute::langdepvalue - Returns value for a given language
    • hw_api_attribute::value - Returns value of the attribute
    • hw_api_attribute::values - Returns all values of the attribute
    • hw_api_content::mimetype - Returns mimetype
    • hw_api_content::read - Read content
    • hw_api_error::count - Returns number of reasons
    • hw_api_error::reason - Returns reason of error
    • hw_api_object::assign - Clones object
    • hw_api_object::attreditable - Checks whether an attribute is editable
    • hw_api_object::count - Returns number of attributes
    • hw_api_object::insert - Inserts new attribute
    • hw_api_object::remove - Removes attribute
    • hw_api_object::title - Returns the title attribute
    • hw_api_object::value - Returns value of attribute
    • hw_api_reason::description - Returns description of reason
    • hw_api_reason::type - Returns type of reason
    • hypot - 计算一直角三角形的斜边长度
  • i
    • ibase_add_user - Add a user to a security database
    • ibase_affected_rows - Return the number of rows that were affected by the previous query
    • ibase_backup - Initiates a backup task in the service manager and returns immediately
    • ibase_blob_add - Add data into a newly created blob
    • ibase_blob_cancel - Cancel creating blob
    • ibase_blob_close - Close blob
    • ibase_blob_create - Create a new blob for adding data
    • ibase_blob_echo - Output blob contents to browser
    • ibase_blob_get - Get len bytes data from open blob
    • ibase_blob_import - Create blob, copy file in it, and close it
    • ibase_blob_info - Return blob length and other useful info
    • ibase_blob_open - Open blob for retrieving data parts
    • ibase_close - Close a connection to an InterBase database
    • ibase_commit - Commit a transaction
    • ibase_commit_ret - Commit a transaction without closing it
    • ibase_connect - Open a connection to a database
    • ibase_db_info - Request statistics about a database
    • ibase_delete_user - Delete a user from a security database
    • ibase_drop_db - Drops a database
    • ibase_errcode - Return an error code
    • ibase_errmsg - Return error messages
    • ibase_execute - Execute a previously prepared query
    • ibase_fetch_assoc - Fetch a result row from a query as an associative array
    • ibase_fetch_object - Get an object from a InterBase database
    • ibase_fetch_row - Fetch a row from an InterBase database
    • ibase_field_info - Get information about a field
    • ibase_free_event_handler - Cancels a registered event handler
    • ibase_free_query - Free memory allocated by a prepared query
    • ibase_free_result - Free a result set
    • ibase_gen_id - Increments the named generator and returns its new value
    • ibase_maintain_db - Execute a maintenance command on the database server
    • ibase_modify_user - Modify a user to a security database
    • ibase_name_result - Assigns a name to a result set
    • ibase_num_fields - Get the number of fields in a result set
    • ibase_num_params - Return the number of parameters in a prepared query
    • ibase_param_info - Return information about a parameter in a prepared query
    • ibase_pconnect - Open a persistent connection to an InterBase database
    • ibase_prepare - Prepare a query for later binding of parameter placeholders and execution
    • ibase_query - Execute a query on an InterBase database
    • ibase_restore - Initiates a restore task in the service manager and returns immediately
    • ibase_rollback - Roll back a transaction
    • ibase_rollback_ret - Roll back a transaction without closing it
    • ibase_server_info - Request information about a database server
    • ibase_service_attach - Connect to the service manager
    • ibase_service_detach - Disconnect from the service manager
    • ibase_set_event_handler - Register a callback function to be called when events are posted
    • ibase_trans - Begin a transaction
    • ibase_wait_event - Wait for an event to be posted by the database
    • iconv - 字符串按要求的字符编码来转换
    • iconv_get_encoding - 获取 iconv 扩展的内部配置变量
    • iconv_mime_decode - 解码一个MIME头字段
    • iconv_mime_decode_headers - 一次性解码多个 MIME 头字段
    • iconv_mime_encode - Composes a MIME header field
    • iconv_set_encoding - 为字符编码转换设定当前设置
    • iconv_strlen - 返回字符串的字符数统计
    • iconv_strpos - Finds position of first occurrence of a needle within a haystack
    • iconv_strrpos - Finds the last occurrence of a needle within a haystack
    • iconv_substr - 截取字符串的部分
    • id3_get_frame_long_name - Get the long name of an ID3v2 frame
    • id3_get_frame_short_name - Get the short name of an ID3v2 frame
    • id3_get_genre_id - Get the id for a genre
    • id3_get_genre_list - Get all possible genre values
    • id3_get_genre_name - Get the name for a genre id
    • id3_get_tag - Get all information stored in an ID3 tag
    • id3_get_version - Get version of an ID3 tag
    • id3_remove_tag - Remove an existing ID3 tag
    • id3_set_tag - Update information stored in an ID3 tag
    • idate - 将本地时间日期格式化为整数
    • idn_to_ascii - Convert domain name to IDNA ASCII form.
    • idn_to_utf8 - Convert domain name from IDNA ASCII to Unicode.
    • ifxus_close_slob - Deletes the slob object
    • ifxus_create_slob - Creates an slob object and opens it
    • ifxus_free_slob - Deletes the slob object
    • ifxus_open_slob - Opens an slob object
    • ifxus_read_slob - Reads nbytes of the slob object
    • ifxus_seek_slob - Sets the current file or seek position
    • ifxus_tell_slob - Returns the current file or seek position
    • ifxus_write_slob - Writes a string into the slob object
    • ifx_affected_rows - Get number of rows affected by a query
    • ifx_blobinfile_mode - Set the default blob mode for all select queries
    • ifx_byteasvarchar - Set the default byte mode
    • ifx_close - Close Informix connection
    • ifx_connect - Open Informix server connection
    • ifx_copy_blob - Duplicates the given blob object
    • ifx_create_blob - Creates an blob object
    • ifx_create_char - Creates an char object
    • ifx_do - Execute a previously prepared SQL-statement
    • ifx_error - Returns error code of last Informix call
    • ifx_errormsg - Returns error message of last Informix call
    • ifx_fetch_row - Get row as an associative array
    • ifx_fieldproperties - List of SQL fieldproperties
    • ifx_fieldtypes - List of Informix SQL fields
    • ifx_free_blob - Deletes the blob object
    • ifx_free_char - Deletes the char object
    • ifx_free_result - Releases resources for the query
    • ifx_getsqlca - Get the contents of sqlca.sqlerrd[0..5] after a query
    • ifx_get_blob - Return the content of a blob object
    • ifx_get_char - Return the content of the char object
    • ifx_htmltbl_result - Formats all rows of a query into a HTML table
    • ifx_nullformat - Sets the default return value on a fetch row
    • ifx_num_fields - Returns the number of columns in the query
    • ifx_num_rows - Count the rows already fetched from a query
    • ifx_pconnect - Open persistent Informix connection
    • ifx_prepare - Prepare an SQL-statement for execution
    • ifx_query - Send Informix query
    • ifx_textasvarchar - Set the default text mode
    • ifx_update_blob - Updates the content of the blob object
    • ifx_update_char - Updates the content of the char object
    • ignore_user_abort - 设置客户端断开连接时是否中断脚本的执行
    • iis_add_server - Creates a new virtual web server
    • iis_get_dir_security - Gets Directory Security
    • iis_get_script_map - Gets script mapping on a virtual directory for a specific extension
    • iis_get_server_by_comment - Return the instance number associated with the Comment
    • iis_get_server_by_path - Return the instance number associated with the Path
    • iis_get_server_rights - Gets server rights
    • iis_get_service_state - Returns the state for the service defined by ServiceId
    • iis_remove_server - Removes the virtual web server indicated by ServerInstance
    • iis_set_app_settings - Creates application scope for a virtual directory
    • iis_set_dir_security - Sets Directory Security
    • iis_set_script_map - Sets script mapping on a virtual directory
    • iis_set_server_rights - Sets server rights
    • iis_start_server - Starts the virtual web server
    • iis_start_service - Starts the service defined by ServiceId
    • iis_stop_server - Stops the virtual web server
    • iis_stop_service - Stops the service defined by ServiceId
    • image2wbmp - 以 WBMP 格式将图像输出到浏览器或文件
    • imageaffine - 返回经过仿射变换后的图像，剪切区域可选
    • imageaffinematrixconcat - Concatenate two affine transformation matrices
    • imageaffinematrixget - Get an affine transformation matrix
    • imagealphablending - 设定图像的混色模式
    • imageantialias - 是否使用抗锯齿（antialias）功能
    • imagearc - 画椭圆弧
    • imagebmp - Output a BMP image to browser or file
    • imagechar - 水平地画一个字符
    • imagecharup - 垂直地画一个字符
    • imagecolorallocate - 为一幅图像分配颜色
    • imagecolorallocatealpha - 为一幅图像分配颜色 + alpha
    • imagecolorat - 取得某像素的颜色索引值
    • imagecolorclosest - 取得与指定的颜色最接近的颜色的索引值
    • imagecolorclosestalpha - 取得与指定的颜色加透明度最接近的颜色
    • imagecolorclosesthwb - 取得与给定颜色最接近的色度的黑白色的索引
    • imagecolordeallocate - 取消图像颜色的分配
    • imagecolorexact - 取得指定颜色的索引值
    • imagecolorexactalpha - 取得指定的颜色加透明度的索引值
    • imagecolormatch - 使一个图像中调色板版本的颜色与真彩色版本更能匹配
    • imagecolorresolve - 取得指定颜色的索引值或有可能得到的最接近的替代值
    • imagecolorresolvealpha - 取得指定颜色 + alpha 的索引值或有可能得到的最接近的替代值
    • imagecolorset - 给指定调色板索引设定颜色
    • imagecolorsforindex - 取得某索引的颜色
    • imagecolorstotal - 取得一幅图像的调色板中颜色的数目
    • imagecolortransparent - 将某个颜色定义为透明色
    • imageconvolution - 用系数 div 和 offset 申请一个 3x3 的卷积矩阵
    • imagecopy - 拷贝图像的一部分
    • imagecopymerge - 拷贝并合并图像的一部分
    • imagecopymergegray - 用灰度拷贝并合并图像的一部分
    • imagecopyresampled - 重采样拷贝部分图像并调整大小
    • imagecopyresized - 拷贝部分图像并调整大小
    • imagecreate - 新建一个基于调色板的图像
    • imagecreatefrombmp - 由文件或 URL 创建一个新图象。
    • imagecreatefromgd - 从 GD 文件或 URL 新建一图像
    • imagecreatefromgd2 - 从 GD2 文件或 URL 新建一图像
    • imagecreatefromgd2part - 从给定的 GD2 文件或 URL 中的部分新建一图像
    • imagecreatefromgif - 由文件或 URL 创建一个新图象。
    • imagecreatefromjpeg - 由文件或 URL 创建一个新图象。
    • imagecreatefrompng - 由文件或 URL 创建一个新图象。
    • imagecreatefromstring - 从字符串中的图像流新建一图像
    • imagecreatefromwbmp - 由文件或 URL 创建一个新图象。
    • imagecreatefromwebp - 由文件或 URL 创建一个新图象。
    • imagecreatefromxbm - 由文件或 URL 创建一个新图象。
    • imagecreatefromxpm - 由文件或 URL 创建一个新图象。
    • imagecreatetruecolor - 新建一个真彩色图像
    • imagecrop - Crop an image to the given rectangle
    • imagecropauto - Crop an image automatically using one of the available modes
    • imagedashedline - 画一虚线
    • imagedestroy - 销毁一图像
    • imageellipse - 画一个椭圆
    • imagefill - 区域填充
    • imagefilledarc - 画一椭圆弧且填充
    • imagefilledellipse - 画一椭圆并填充
    • imagefilledpolygon - 画一多边形并填充
    • imagefilledrectangle - 画一矩形并填充
    • imagefilltoborder - 区域填充到指定颜色的边界为止
    • imagefilter - 对图像使用过滤器
    • imageflip - Flips an image using a given mode
    • imagefontheight - 取得字体高度
    • imagefontwidth - 取得字体宽度
    • imageftbbox - 给出一个使用 FreeType 2 字体的文本框
    • imagefttext - 使用 FreeType 2 字体将文本写入图像
    • imagegammacorrect - 对 GD 图像应用 gamma 修正
    • imagegd - 将 GD 图像输出到浏览器或文件
    • imagegd2 - 将 GD2 图像输出到浏览器或文件
    • imagegetclip - Get the clipping rectangle
    • imagegif - 输出图象到浏览器或文件。
    • imagegrabscreen - Captures the whole screen
    • imagegrabwindow - Captures a window
    • imageinterlace - 激活或禁止隔行扫描
    • imageistruecolor - 检查图像是否为真彩色图像
    • imagejpeg - 输出图象到浏览器或文件。
    • imagelayereffect - 设定 alpha 混色标志以使用绑定的 libgd 分层效果
    • imageline - 画一条线段
    • imageloadfont - 载入一新字体
    • imageopenpolygon - Draws an open polygon
    • imagepalettecopy - 将调色板从一幅图像拷贝到另一幅
    • imagepalettetotruecolor - Converts a palette based image to true color
    • imagepng - 以 PNG 格式将图像输出到浏览器或文件
    • imagepolygon - 画一个多边形
    • imagepsbbox - 给出一个使用 PostScript Type1 字体的文本方框
    • imagepsencodefont - 改变字体中的字符编码矢量
    • imagepsextendfont - 扩充或精简字体
    • imagepsfreefont - 释放一个 PostScript Type 1 字体所占用的内存
    • imagepsloadfont - 从文件中加载一个 PostScript Type 1 字体
    • imagepsslantfont - 倾斜某字体
    • imagepstext - 用 PostScript Type1 字体把文本字符串画在图像上
    • imagerectangle - 画一个矩形
    • imageresolution - Get or set the resolution of the image
    • imagerotate - 用给定角度旋转图像
    • imagesavealpha - 设置标记以在保存 PNG 图像时保存完整的 alpha 通道信息（与单一透明色相反）
    • imagescale - Scale an image using the given new width and height
    • imagesetbrush - 设定画线用的画笔图像
    • imagesetclip - Set the clipping rectangle
    • imagesetinterpolation - Set the interpolation method
    • imagesetpixel - 画一个单一像素
    • imagesetstyle - 设定画线的风格
    • imagesetthickness - 设定画线的宽度
    • imagesettile - 设定用于填充的贴图
    • imagestring - 水平地画一行字符串
    • imagestringup - 垂直地画一行字符串
    • imagesx - 取得图像宽度
    • imagesy - 取得图像高度
    • imagetruecolortopalette - 将真彩色图像转换为调色板图像
    • imagettfbbox - 取得使用 TrueType 字体的文本的范围
    • imagettftext - 用 TrueType 字体向图像写入文本
    • imagetypes - 返回当前 PHP 版本所支持的图像类型
    • imagewbmp - 以 WBMP 格式将图像输出到浏览器或文件
    • imagewebp - 将 WebP 格式的图像输出到浏览器或文件
    • imagexbm - 将 XBM 图像输出到浏览器或文件
    • image_type_to_extension - 取得图像类型的文件后缀
    • image_type_to_mime_type - 取得 getimagesize，exif_read_data，exif_thumbnail，exif_imagetype 所返回的图像类型的 MIME 类型
    • Imagick::adaptiveBlurImage - Adds adaptive blur filter to image
    • Imagick::adaptiveResizeImage - Adaptively resize image with data dependent triangulation
    • Imagick::adaptiveSharpenImage - Adaptively sharpen the image
    • Imagick::adaptiveThresholdImage - Selects a threshold for each pixel based on a range of intensity
    • Imagick::addImage - Adds new image to Imagick object image list
    • Imagick::addNoiseImage - Adds random noise to the image
    • Imagick::affineTransformImage - Transforms an image
    • Imagick::animateImages - Animates an image or images
    • Imagick::annotateImage - Annotates an image with text
    • Imagick::appendImages - Append a set of images
    • Imagick::autoLevelImage - Description
    • Imagick::averageImages - Average a set of images
    • Imagick::blackThresholdImage - Forces all pixels below the threshold into black
    • Imagick::blueShiftImage - Description
    • Imagick::blurImage - Adds blur filter to image
    • Imagick::borderImage - Surrounds the image with a border
    • Imagick::brightnessContrastImage - Description
    • Imagick::charcoalImage - Simulates a charcoal drawing
    • Imagick::chopImage - Removes a region of an image and trims
    • Imagick::clampImage - Description
    • Imagick::clear - Clears all resources associated to Imagick object
    • Imagick::clipImage - Clips along the first path from the 8BIM profile
    • Imagick::clipImagePath - Description
    • Imagick::clipPathImage - Clips along the named paths from the 8BIM profile
    • Imagick::clone - Makes an exact copy of the Imagick object
    • Imagick::clutImage - Replaces colors in the image
    • Imagick::coalesceImages - Composites a set of images
    • Imagick::colorFloodfillImage - Changes the color value of any pixel that matches target
    • Imagick::colorizeImage - Blends the fill color with the image
    • Imagick::colorMatrixImage - Description
    • Imagick::combineImages - Combines one or more images into a single image
    • Imagick::commentImage - Adds a comment to your image
    • Imagick::compareImageChannels - Returns the difference in one or more images
    • Imagick::compareImageLayers - Returns the maximum bounding region between images
    • Imagick::compareImages - Compares an image to a reconstructed image
    • Imagick::compositeImage - 把一张图合并到一张图
    • Imagick::contrastImage - Change the contrast of the image
    • Imagick::contrastStretchImage - Enhances the contrast of a color image
    • Imagick::convolveImage - Applies a custom convolution kernel to the image
    • Imagick::count - Description
    • Imagick::cropImage - 截图图片的一块区域
    • Imagick::cropThumbnailImage - 创建缩略图
    • Imagick::current - Returns a reference to the current Imagick object
    • Imagick::cycleColormapImage - Displaces an image's colormap
    • Imagick::decipherImage - Deciphers an image
    • Imagick::deconstructImages - Returns certain pixel differences between images
    • Imagick::deleteImageArtifact - Delete image artifact
    • Imagick::deleteImageProperty - Description
    • Imagick::deskewImage - Removes skew from the image
    • Imagick::despeckleImage - Reduces the speckle noise in an image
    • Imagick::destroy - Destroys the Imagick object
    • Imagick::displayImage - Displays an image
    • Imagick::displayImages - Displays an image or image sequence
    • Imagick::distortImage - Distorts an image using various distortion methods
    • Imagick::drawImage - 把 ImagickDraw 对象渲染到当前图片上
    • Imagick::edgeImage - Enhance edges within the image
    • Imagick::embossImage - Returns a grayscale image with a three-dimensional effect
    • Imagick::encipherImage - Enciphers an image
    • Imagick::enhanceImage - Improves the quality of a noisy image
    • Imagick::equalizeImage - Equalizes the image histogram
    • Imagick::evaluateImage - Applies an expression to an image
    • Imagick::exportImagePixels - Exports raw image pixels
    • Imagick::extentImage - Set image size
    • Imagick::filter - Description
    • Imagick::flattenImages - Merges a sequence of images
    • Imagick::flipImage - Creates a vertical mirror image
    • Imagick::floodFillPaintImage - Changes the color value of any pixel that matches target
    • Imagick::flopImage - Creates a horizontal mirror image
    • Imagick::forwardFourierTransformImage - Description
    • Imagick::frameImage - Adds a simulated three-dimensional border
    • Imagick::functionImage - Applies a function on the image
    • Imagick::fxImage - Evaluate expression for each pixel in the image
    • Imagick::gammaImage - Gamma-corrects an image
    • Imagick::gaussianBlurImage - Blurs an image
    • Imagick::getColorspace - Gets the colorspace
    • Imagick::getCompression - Gets the object compression type
    • Imagick::getCompressionQuality - Gets the object compression quality
    • Imagick::getCopyright - Returns the ImageMagick API copyright as a string
    • Imagick::getFilename - The filename associated with an image sequence
    • Imagick::getFont - Gets font
    • Imagick::getFormat - Returns the format of the Imagick object
    • Imagick::getGravity - Gets the gravity
    • Imagick::getHomeURL - Returns the ImageMagick home URL
    • Imagick::getImage - Returns a new Imagick object
    • Imagick::getImageAlphaChannel - 获取图像的 alpha 通道
    • Imagick::getImageArtifact - Get image artifact
    • Imagick::getImageAttribute - Description
    • Imagick::getImageBackgroundColor - Returns the image background color
    • Imagick::getImageBlob - Returns the image sequence as a blob
    • Imagick::getImageBluePrimary - Returns the chromaticy blue primary point
    • Imagick::getImageBorderColor - Returns the image border color
    • Imagick::getImageChannelDepth - Gets the depth for a particular image channel
    • Imagick::getImageChannelDistortion - Compares image channels of an image to a reconstructed image
    • Imagick::getImageChannelDistortions - Gets channel distortions
    • Imagick::getImageChannelExtrema - Gets the extrema for one or more image channels
    • Imagick::getImageChannelKurtosis - The getImageChannelKurtosis purpose
    • Imagick::getImageChannelMean - Gets the mean and standard deviation
    • Imagick::getImageChannelRange - Gets channel range
    • Imagick::getImageChannelStatistics - Returns statistics for each channel in the image
    • Imagick::getImageClipMask - Gets image clip mask
    • Imagick::getImageColormapColor - Returns the color of the specified colormap index
    • Imagick::getImageColors - Gets the number of unique colors in the image
    • Imagick::getImageColorspace - Gets the image colorspace
    • Imagick::getImageCompose - Returns the composite operator associated with the image
    • Imagick::getImageCompression - Gets the current image's compression type
    • Imagick::getImageCompressionQuality - Gets the current image's compression quality
    • Imagick::getImageDelay - Gets the image delay
    • Imagick::getImageDepth - Gets the image depth
    • Imagick::getImageDispose - Gets the image disposal method
    • Imagick::getImageDistortion - Compares an image to a reconstructed image
    • Imagick::getImageExtrema - Gets the extrema for the image
    • Imagick::getImageFilename - Returns the filename of a particular image in a sequence
    • Imagick::getImageFormat - Returns the format of a particular image in a sequence
    • Imagick::getImageGamma - Gets the image gamma
    • Imagick::getImageGeometry - Gets the width and height as an associative array
    • Imagick::getImageGravity - Gets the image gravity
    • Imagick::getImageGreenPrimary - Returns the chromaticy green primary point
    • Imagick::getImageHeight - Returns the image height
    • Imagick::getImageHistogram - Gets the image histogram
    • Imagick::getImageIndex - Gets the index of the current active image
    • Imagick::getImageInterlaceScheme - Gets the image interlace scheme
    • Imagick::getImageInterpolateMethod - Returns the interpolation method
    • Imagick::getImageIterations - Gets the image iterations
    • Imagick::getImageLength - Returns the image length in bytes
    • Imagick::getImageMagickLicense - Returns a string containing the ImageMagick license
    • Imagick::getImageMatte - Return if the image has a matte channel
    • Imagick::getImageMatteColor - Returns the image matte color
    • Imagick::getImageMimeType - Description
    • Imagick::getImageOrientation - Gets the image orientation
    • Imagick::getImagePage - Returns the page geometry
    • Imagick::getImagePixelColor - Returns the color of the specified pixel
    • Imagick::getImageProfile - Returns the named image profile
    • Imagick::getImageProfiles - Returns the image profiles
    • Imagick::getImageProperties - Returns the image properties
    • Imagick::getImageProperty - Returns the named image property
    • Imagick::getImageRedPrimary - Returns the chromaticity red primary point
    • Imagick::getImageRegion - Extracts a region of the image
    • Imagick::getImageRenderingIntent - Gets the image rendering intent
    • Imagick::getImageResolution - 获取图像的x,y轴分辨率
    • Imagick::getImagesBlob - Returns all image sequences as a blob
    • Imagick::getImageScene - Gets the image scene
    • Imagick::getImageSignature - Generates an SHA-256 message digest
    • Imagick::getImageSize - Returns the image length in bytes
    • Imagick::getImageTicksPerSecond - Gets the image ticks-per-second
    • Imagick::getImageTotalInkDensity - Gets the image total ink density
    • Imagick::getImageType - Gets the potential image type
    • Imagick::getImageUnits - 获取图像的分辨率单位
    • Imagick::getImageVirtualPixelMethod - Returns the virtual pixel method
    • Imagick::getImageWhitePoint - Returns the chromaticity white point
    • Imagick::getImageWidth - Returns the image width
    • Imagick::getInterlaceScheme - Gets the object interlace scheme
    • Imagick::getIteratorIndex - Gets the index of the current active image
    • Imagick::getNumberImages - Returns the number of images in the object
    • Imagick::getOption - Returns a value associated with the specified key
    • Imagick::getPackageName - Returns the ImageMagick package name
    • Imagick::getPage - Returns the page geometry
    • Imagick::getPixelIterator - Returns a MagickPixelIterator
    • Imagick::getPixelRegionIterator - Get an ImagickPixelIterator for an image section
    • Imagick::getPointSize - Gets point size
    • Imagick::getQuantum - Description
    • Imagick::getQuantumDepth - Gets the quantum depth
    • Imagick::getQuantumRange - Returns the Imagick quantum range
    • Imagick::getRegistry - Description
    • Imagick::getReleaseDate - Returns the ImageMagick release date
    • Imagick::getResource - Returns the specified resource's memory usage
    • Imagick::getResourceLimit - Returns the specified resource limit
    • Imagick::getSamplingFactors - Gets the horizontal and vertical sampling factor
    • Imagick::getSize - Returns the size associated with the Imagick object
    • Imagick::getSizeOffset - Returns the size offset
    • Imagick::getVersion - Returns the ImageMagick API version
    • Imagick::haldClutImage - Replaces colors in the image
    • Imagick::hasNextImage - Checks if the object has more images
    • Imagick::hasPreviousImage - Checks if the object has a previous image
    • Imagick::identifyFormat - Description
    • Imagick::identifyImage - Identifies an image and fetches attributes
    • Imagick::implodeImage - Creates a new image as a copy
    • Imagick::importImagePixels - Imports image pixels
    • Imagick::inverseFourierTransformImage - Description
    • Imagick::labelImage - Adds a label to an image
    • Imagick::levelImage - Adjusts the levels of an image
    • Imagick::linearStretchImage - Stretches with saturation the image intensity
    • Imagick::liquidRescaleImage - Animates an image or images
    • Imagick::listRegistry - Description
    • Imagick::magnifyImage - Scales an image proportionally 2x
    • Imagick::mapImage - Replaces the colors of an image with the closest color from a reference image.
    • Imagick::matteFloodfillImage - Changes the transparency value of a color
    • Imagick::medianFilterImage - Applies a digital filter
    • Imagick::mergeImageLayers - Merges image layers
    • Imagick::minifyImage - Scales an image proportionally to half its size
    • Imagick::modulateImage - Control the brightness, saturation, and hue
    • Imagick::montageImage - Creates a composite image
    • Imagick::morphImages - Method morphs a set of images
    • Imagick::morphology - Description
    • Imagick::mosaicImages - Forms a mosaic from images
    • Imagick::motionBlurImage - Simulates motion blur
    • Imagick::negateImage - Negates the colors in the reference image
    • Imagick::newImage - 创建一张图片
    • Imagick::newPseudoImage - Creates a new image
    • Imagick::nextImage - Moves to the next image
    • Imagick::normalizeImage - Enhances the contrast of a color image
    • Imagick::oilPaintImage - Simulates an oil painting
    • Imagick::opaquePaintImage - Changes the color value of any pixel that matches target
    • Imagick::optimizeImageLayers - Removes repeated portions of images to optimize
    • Imagick::orderedPosterizeImage - Performs an ordered dither
    • Imagick::paintFloodfillImage - Changes the color value of any pixel that matches target
    • Imagick::paintOpaqueImage - Change any pixel that matches color
    • Imagick::paintTransparentImage - Changes any pixel that matches color with the color defined by fill
    • Imagick::pingImage - Fetch basic attributes about the image
    • Imagick::pingImageBlob - Quickly fetch attributes
    • Imagick::pingImageFile - Get basic image attributes in a lightweight manner
    • Imagick::polaroidImage - Simulates a Polaroid picture
    • Imagick::posterizeImage - Reduces the image to a limited number of color level
    • Imagick::previewImages - Quickly pin-point appropriate parameters for image processing
    • Imagick::previousImage - Move to the previous image in the object
    • Imagick::profileImage - Adds or removes a profile from an image
    • Imagick::quantizeImage - Analyzes the colors within a reference image
    • Imagick::quantizeImages - Analyzes the colors within a sequence of images
    • Imagick::queryFontMetrics - Returns an array representing the font metrics
    • Imagick::queryFonts - Returns the configured fonts
    • Imagick::queryFormats - Returns formats supported by Imagick
    • Imagick::radialBlurImage - Radial blurs an image
    • Imagick::raiseImage - Creates a simulated 3d button-like effect
    • Imagick::randomThresholdImage - Creates a high-contrast, two-color image
    • Imagick::readImage - Reads image from filename
    • Imagick::readImageBlob - 从二进制字符串里读取图片
    • Imagick::readImageFile - Reads image from open filehandle
    • Imagick::readimages - Description
    • Imagick::recolorImage - Recolors image
    • Imagick::reduceNoiseImage - Smooths the contours of an image
    • Imagick::remapImage - Remaps image colors
    • Imagick::removeImage - Removes an image from the image list
    • Imagick::removeImageProfile - Removes the named image profile and returns it
    • Imagick::render - Renders all preceding drawing commands
    • Imagick::resampleImage - Resample image to desired resolution
    • Imagick::resetImagePage - Reset image page
    • Imagick::resizeImage - Scales an image
    • Imagick::rollImage - Offsets an image
    • Imagick::rotateImage - Rotates an image
    • Imagick::rotationalBlurImage - Description
    • Imagick::roundCorners - Rounds image corners
    • Imagick::sampleImage - Scales an image with pixel sampling
    • Imagick::scaleImage - Scales the size of an image
    • Imagick::segmentImage - Segments an image
    • Imagick::selectiveBlurImage - Description
    • Imagick::separateImageChannel - Separates a channel from the image
    • Imagick::sepiaToneImage - Sepia tones an image
    • Imagick::setBackgroundColor - Sets the object's default background color
    • Imagick::setColorspace - Set colorspace
    • Imagick::setCompression - Sets the object's default compression type
    • Imagick::setCompressionQuality - Sets the object's default compression quality
    • Imagick::setFilename - Sets the filename before you read or write the image
    • Imagick::setFirstIterator - Sets the Imagick iterator to the first image
    • Imagick::setFont - Sets font
    • Imagick::setFormat - Sets the format of the Imagick object
    • Imagick::setGravity - Sets the gravity
    • Imagick::setImage - Replaces image in the object
    • Imagick::setImageAlphaChannel - Sets image alpha channel
    • Imagick::setImageArtifact - Set image artifact
    • Imagick::setImageAttribute - Description
    • Imagick::setImageBackgroundColor - Sets the image background color
    • Imagick::setImageBias - Sets the image bias for any method that convolves an image
    • Imagick::setImageBiasQuantum - Description
    • Imagick::setImageBluePrimary - Sets the image chromaticity blue primary point
    • Imagick::setImageBorderColor - Sets the image border color
    • Imagick::setImageChannelDepth - Sets the depth of a particular image channel
    • Imagick::setImageClipMask - Sets image clip mask
    • Imagick::setImageColormapColor - Sets the color of the specified colormap index
    • Imagick::setImageColorspace - Sets the image colorspace
    • Imagick::setImageCompose - Sets the image composite operator
    • Imagick::setImageCompression - 设置图片压缩的类型
    • Imagick::setImageCompressionQuality - 设置图片压缩的质量
    • Imagick::setImageDelay - Sets the image delay
    • Imagick::setImageDepth - Sets the image depth
    • Imagick::setImageDispose - Sets the image disposal method
    • Imagick::setImageExtent - Sets the image size
    • Imagick::setImageFilename - Sets the filename of a particular image
    • Imagick::setImageFormat - 为图片设置指定的格式
    • Imagick::setImageGamma - Sets the image gamma
    • Imagick::setImageGravity - Sets the image gravity
    • Imagick::setImageGreenPrimary - Sets the image chromaticity green primary point
    • Imagick::setImageIndex - Set the iterator position
    • Imagick::setImageInterlaceScheme - Sets the image compression
    • Imagick::setImageInterpolateMethod - Sets the image interpolate pixel method
    • Imagick::setImageIterations - Sets the image iterations
    • Imagick::setImageMatte - Sets the image matte channel
    • Imagick::setImageMatteColor - Sets the image matte color
    • Imagick::setImageOpacity - Sets the image opacity level
    • Imagick::setImageOrientation - Sets the image orientation
    • Imagick::setImagePage - Sets the page geometry of the image
    • Imagick::setImageProfile - Adds a named profile to the Imagick object
    • Imagick::setImageProperty - Sets an image property
    • Imagick::setImageRedPrimary - Sets the image chromaticity red primary point
    • Imagick::setImageRenderingIntent - Sets the image rendering intent
    • Imagick::setImageResolution - Sets the image resolution
    • Imagick::setImageScene - Sets the image scene
    • Imagick::setImageTicksPerSecond - Sets the image ticks-per-second
    • Imagick::setImageType - Sets the image type
    • Imagick::setImageUnits - Sets the image units of resolution
    • Imagick::setImageVirtualPixelMethod - Sets the image virtual pixel method
    • Imagick::setImageWhitePoint - Sets the image chromaticity white point
    • Imagick::setInterlaceScheme - Sets the image compression
    • Imagick::setIteratorIndex - Set the iterator position
    • Imagick::setLastIterator - Sets the Imagick iterator to the last image
    • Imagick::setOption - Set an option
    • Imagick::setPage - Sets the page geometry of the Imagick object
    • Imagick::setPointSize - Sets point size
    • Imagick::setProgressMonitor - Description
    • Imagick::setRegistry - Description
    • Imagick::setResolution - Sets the image resolution
    • Imagick::setResourceLimit - Sets the limit for a particular resource in megabytes
    • Imagick::setSamplingFactors - Sets the image sampling factors
    • Imagick::setSize - Sets the size of the Imagick object
    • Imagick::setSizeOffset - Sets the size and offset of the Imagick object
    • Imagick::setType - Sets the image type attribute
    • Imagick::shadeImage - Creates a 3D effect
    • Imagick::shadowImage - Simulates an image shadow
    • Imagick::sharpenImage - Sharpens an image
    • Imagick::shaveImage - Shaves pixels from the image edges
    • Imagick::shearImage - Creating a parallelogram
    • Imagick::sigmoidalContrastImage - Adjusts the contrast of an image
    • Imagick::sketchImage - Simulates a pencil sketch
    • Imagick::smushImages - Description
    • Imagick::solarizeImage - Applies a solarizing effect to the image
    • Imagick::sparseColorImage - Interpolates colors
    • Imagick::spliceImage - Splices a solid color into the image
    • Imagick::spreadImage - Randomly displaces each pixel in a block
    • Imagick::statisticImage - Description
    • Imagick::steganoImage - Hides a digital watermark within the image
    • Imagick::stereoImage - Composites two images
    • Imagick::stripImage - 去掉图片的所有配置和设置
    • Imagick::subImageMatch - Description
    • Imagick::swirlImage - Swirls the pixels about the center of the image
    • Imagick::textureImage - Repeatedly tiles the texture image
    • Imagick::thresholdImage - Changes the value of individual pixels based on a threshold
    • Imagick::thumbnailImage - Changes the size of an image
    • Imagick::tintImage - Applies a color vector to each pixel in the image
    • Imagick::transformImage - Convenience method for setting crop size and the image geometry
    • Imagick::transformImageColorspace - Transforms an image to a new colorspace.
    • Imagick::transparentPaintImage - Paints pixels transparent
    • Imagick::transposeImage - Creates a vertical mirror image
    • Imagick::transverseImage - Creates a horizontal mirror image
    • Imagick::trimImage - Remove edges from the image
    • Imagick::uniqueImageColors - Discards all but one of any pixel color
    • Imagick::unsharpMaskImage - Sharpens an image
    • Imagick::valid - Checks if the current item is valid
    • Imagick::vignetteImage - Adds vignette filter to the image
    • Imagick::waveImage - Applies wave filter to the image
    • Imagick::whiteThresholdImage - Force all pixels above the threshold into white
    • Imagick::writeImage - 把图片写入指定的文件
    • Imagick::writeImageFile - Writes an image to a filehandle
    • Imagick::writeImages - Writes an image or image sequence
    • Imagick::writeImagesFile - Writes frames to a filehandle
    • Imagick::__construct - The Imagick constructor
    • Imagick::__toString - Returns the image as a string.
    • ImagickDraw::affine - Adjusts the current affine transformation matrix
    • ImagickDraw::annotation - Draws text on the image
    • ImagickDraw::arc - Draws an arc
    • ImagickDraw::bezier - Draws a bezier curve
    • ImagickDraw::circle - Draws a circle
    • ImagickDraw::clear - Clears the ImagickDraw
    • ImagickDraw::clone - Makes an exact copy of the specified ImagickDraw object
    • ImagickDraw::color - Draws color on image
    • ImagickDraw::comment - Adds a comment
    • ImagickDraw::composite - Composites an image onto the current image
    • ImagickDraw::destroy - Frees all associated resources
    • ImagickDraw::ellipse - Draws an ellipse on the image
    • ImagickDraw::getClipPath - Obtains the current clipping path ID
    • ImagickDraw::getClipRule - Returns the current polygon fill rule
    • ImagickDraw::getClipUnits - Returns the interpretation of clip path units
    • ImagickDraw::getFillColor - Returns the fill color
    • ImagickDraw::getFillOpacity - Returns the opacity used when drawing
    • ImagickDraw::getFillRule - Returns the fill rule
    • ImagickDraw::getFont - Returns the font
    • ImagickDraw::getFontFamily - Returns the font family
    • ImagickDraw::getFontSize - Returns the font pointsize
    • ImagickDraw::getFontStretch - Description
    • ImagickDraw::getFontStyle - Returns the font style
    • ImagickDraw::getFontWeight - Returns the font weight
    • ImagickDraw::getGravity - Returns the text placement gravity
    • ImagickDraw::getStrokeAntialias - Returns the current stroke antialias setting
    • ImagickDraw::getStrokeColor - Returns the color used for stroking object outlines
    • ImagickDraw::getStrokeDashArray - Returns an array representing the pattern of dashes and gaps used to stroke paths
    • ImagickDraw::getStrokeDashOffset - Returns the offset into the dash pattern to start the dash
    • ImagickDraw::getStrokeLineCap - Returns the shape to be used at the end of open subpaths when they are stroked
    • ImagickDraw::getStrokeLineJoin - Returns the shape to be used at the corners of paths when they are stroked
    • ImagickDraw::getStrokeMiterLimit - Returns the stroke miter limit
    • ImagickDraw::getStrokeOpacity - Returns the opacity of stroked object outlines
    • ImagickDraw::getStrokeWidth - Returns the width of the stroke used to draw object outlines
    • ImagickDraw::getTextAlignment - Returns the text alignment
    • ImagickDraw::getTextAntialias - Returns the current text antialias setting
    • ImagickDraw::getTextDecoration - Returns the text decoration
    • ImagickDraw::getTextEncoding - Returns the code set used for text annotations
    • ImagickDraw::getTextInterlineSpacing - Description
    • ImagickDraw::getTextInterwordSpacing - Description
    • ImagickDraw::getTextKerning - Description
    • ImagickDraw::getTextUnderColor - Returns the text under color
    • ImagickDraw::getVectorGraphics - Returns a string containing vector graphics
    • ImagickDraw::line - Draws a line
    • ImagickDraw::matte - Paints on the image's opacity channel
    • ImagickDraw::pathClose - Adds a path element to the current path
    • ImagickDraw::pathCurveToAbsolute - Draws a cubic Bezier curve
    • ImagickDraw::pathCurveToQuadraticBezierAbsolute - Draws a quadratic Bezier curve
    • ImagickDraw::pathCurveToQuadraticBezierRelative - Draws a quadratic Bezier curve
    • ImagickDraw::pathCurveToQuadraticBezierSmoothAbsolute - Draws a quadratic Bezier curve
    • ImagickDraw::pathCurveToQuadraticBezierSmoothRelative - Draws a quadratic Bezier curve
    • ImagickDraw::pathCurveToRelative - Draws a cubic Bezier curve
    • ImagickDraw::pathCurveToSmoothAbsolute - Draws a cubic Bezier curve
    • ImagickDraw::pathCurveToSmoothRelative - Draws a cubic Bezier curve
    • ImagickDraw::pathEllipticArcAbsolute - Draws an elliptical arc
    • ImagickDraw::pathEllipticArcRelative - Draws an elliptical arc
    • ImagickDraw::pathFinish - Terminates the current path
    • ImagickDraw::pathLineToAbsolute - Draws a line path
    • ImagickDraw::pathLineToHorizontalAbsolute - Draws a horizontal line path
    • ImagickDraw::pathLineToHorizontalRelative - Draws a horizontal line
    • ImagickDraw::pathLineToRelative - Draws a line path
    • ImagickDraw::pathLineToVerticalAbsolute - Draws a vertical line
    • ImagickDraw::pathLineToVerticalRelative - Draws a vertical line path
    • ImagickDraw::pathMoveToAbsolute - Starts a new sub-path
    • ImagickDraw::pathMoveToRelative - Starts a new sub-path
    • ImagickDraw::pathStart - Declares the start of a path drawing list
    • ImagickDraw::point - Draws a point
    • ImagickDraw::polygon - Draws a polygon
    • ImagickDraw::polyline - Draws a polyline
    • ImagickDraw::pop - Destroys the current ImagickDraw in the stack, and returns to the previously pushed ImagickDraw
    • ImagickDraw::popClipPath - Terminates a clip path definition
    • ImagickDraw::popDefs - Terminates a definition list
    • ImagickDraw::popPattern - Terminates a pattern definition
    • ImagickDraw::push - Clones the current ImagickDraw and pushes it to the stack
    • ImagickDraw::pushClipPath - Starts a clip path definition
    • ImagickDraw::pushDefs - Indicates that following commands create named elements for early processing
    • ImagickDraw::pushPattern - Indicates that subsequent commands up to a ImagickDraw::opPattern() command comprise the definition of a named pattern
    • ImagickDraw::rectangle - Draws a rectangle
    • ImagickDraw::render - Renders all preceding drawing commands onto the image
    • ImagickDraw::resetVectorGraphics - Description
    • ImagickDraw::rotate - Applies the specified rotation to the current coordinate space
    • ImagickDraw::roundRectangle - Draws a rounded rectangle
    • ImagickDraw::scale - Adjusts the scaling factor
    • ImagickDraw::setClipPath - Associates a named clipping path with the image
    • ImagickDraw::setClipRule - Set the polygon fill rule to be used by the clipping path
    • ImagickDraw::setClipUnits - Sets the interpretation of clip path units
    • ImagickDraw::setFillAlpha - Sets the opacity to use when drawing using the fill color or fill texture
    • ImagickDraw::setFillColor - Sets the fill color to be used for drawing filled objects
    • ImagickDraw::setFillOpacity - Sets the opacity to use when drawing using the fill color or fill texture
    • ImagickDraw::setFillPatternURL - Sets the URL to use as a fill pattern for filling objects
    • ImagickDraw::setFillRule - Sets the fill rule to use while drawing polygons
    • ImagickDraw::setFont - Sets the fully-specified font to use when annotating with text
    • ImagickDraw::setFontFamily - Sets the font family to use when annotating with text
    • ImagickDraw::setFontSize - Sets the font pointsize to use when annotating with text
    • ImagickDraw::setFontStretch - Sets the font stretch to use when annotating with text
    • ImagickDraw::setFontStyle - Sets the font style to use when annotating with text
    • ImagickDraw::setFontWeight - Sets the font weight
    • ImagickDraw::setGravity - Sets the text placement gravity
    • ImagickDraw::setResolution - Description
    • ImagickDraw::setStrokeAlpha - Specifies the opacity of stroked object outlines
    • ImagickDraw::setStrokeAntialias - Controls whether stroked outlines are antialiased
    • ImagickDraw::setStrokeColor - Sets the color used for stroking object outlines
    • ImagickDraw::setStrokeDashArray - Specifies the pattern of dashes and gaps used to stroke paths
    • ImagickDraw::setStrokeDashOffset - Specifies the offset into the dash pattern to start the dash
    • ImagickDraw::setStrokeLineCap - Specifies the shape to be used at the end of open subpaths when they are stroked
    • ImagickDraw::setStrokeLineJoin - Specifies the shape to be used at the corners of paths when they are stroked
    • ImagickDraw::setStrokeMiterLimit - Specifies the miter limit
    • ImagickDraw::setStrokeOpacity - Specifies the opacity of stroked object outlines
    • ImagickDraw::setStrokePatternURL - Sets the pattern used for stroking object outlines
    • ImagickDraw::setStrokeWidth - Sets the width of the stroke used to draw object outlines
    • ImagickDraw::setTextAlignment - Specifies a text alignment
    • ImagickDraw::setTextAntialias - Controls whether text is antialiased
    • ImagickDraw::setTextDecoration - Specifies a decoration
    • ImagickDraw::setTextEncoding - Specifies the text code set
    • ImagickDraw::setTextInterlineSpacing - Description
    • ImagickDraw::setTextInterwordSpacing - Description
    • ImagickDraw::setTextKerning - Description
    • ImagickDraw::setTextUnderColor - Specifies the color of a background rectangle
    • ImagickDraw::setVectorGraphics - Sets the vector graphics
    • ImagickDraw::setViewbox - Sets the overall canvas size
    • ImagickDraw::skewX - Skews the current coordinate system in the horizontal direction
    • ImagickDraw::skewY - Skews the current coordinate system in the vertical direction
    • ImagickDraw::translate - Applies a translation to the current coordinate system
    • ImagickDraw::__construct - The ImagickDraw constructor
    • ImagickPixel::clear - Clears resources associated with this object
    • ImagickPixel::destroy - Deallocates resources associated with this object
    • ImagickPixel::getColor - Returns the color
    • ImagickPixel::getColorAsString - Returns the color as a string
    • ImagickPixel::getColorCount - Returns the color count associated with this color
    • ImagickPixel::getColorQuantum - Description
    • ImagickPixel::getColorValue - Gets the normalized value of the provided color channel
    • ImagickPixel::getColorValueQuantum - Description
    • ImagickPixel::getHSL - Returns the normalized HSL color of the ImagickPixel object
    • ImagickPixel::getIndex - Description
    • ImagickPixel::isPixelSimilar - Check the distance between this color and another
    • ImagickPixel::isPixelSimilarQuantum - Description
    • ImagickPixel::isSimilar - Check the distance between this color and another
    • ImagickPixel::setColor - Sets the color
    • ImagickPixel::setColorCount - Description
    • ImagickPixel::setColorValue - Sets the normalized value of one of the channels
    • ImagickPixel::setColorValueQuantum - Description
    • ImagickPixel::setHSL - Sets the normalized HSL color
    • ImagickPixel::setIndex - Description
    • ImagickPixel::__construct - The ImagickPixel constructor
    • ImagickPixelIterator::clear - Clear resources associated with a PixelIterator
    • ImagickPixelIterator::destroy - Deallocates resources associated with a PixelIterator
    • ImagickPixelIterator::getCurrentIteratorRow - Returns the current row of ImagickPixel objects
    • ImagickPixelIterator::getIteratorRow - Returns the current pixel iterator row
    • ImagickPixelIterator::getNextIteratorRow - Returns the next row of the pixel iterator
    • ImagickPixelIterator::getPreviousIteratorRow - Returns the previous row
    • ImagickPixelIterator::newPixelIterator - Returns a new pixel iterator
    • ImagickPixelIterator::newPixelRegionIterator - Returns a new pixel iterator
    • ImagickPixelIterator::resetIterator - Resets the pixel iterator
    • ImagickPixelIterator::setIteratorFirstRow - Sets the pixel iterator to the first pixel row
    • ImagickPixelIterator::setIteratorLastRow - Sets the pixel iterator to the last pixel row
    • ImagickPixelIterator::setIteratorRow - Set the pixel iterator row
    • ImagickPixelIterator::syncIterator - Syncs the pixel iterator
    • ImagickPixelIterator::__construct - The ImagickPixelIterator constructor
    • imap_8bit - Convert an 8bit string to a quoted-printable string
    • imap_alerts - Returns all IMAP alert messages that have occurred
    • imap_append - Append a string message to a specified mailbox
    • imap_base64 - Decode BASE64 encoded text
    • imap_binary - Convert an 8bit string to a base64 string
    • imap_body - Read the message body
    • imap_bodystruct - Read the structure of a specified body section of a specific message
    • imap_check - Check current mailbox
    • imap_clearflag_full - Clears flags on messages
    • imap_close - Close an IMAP stream
    • imap_create - 别名 imap_createmailbox
    • imap_createmailbox - Create a new mailbox
    • imap_delete - Mark a message for deletion from current mailbox
    • imap_deletemailbox - Delete a mailbox
    • imap_errors - Returns all of the IMAP errors that have occurred
    • imap_expunge - Delete all messages marked for deletion
    • imap_fetchbody - Fetch a particular section of the body of the message
    • imap_fetchheader - Returns header for a message
    • imap_fetchmime - Fetch MIME headers for a particular section of the message
    • imap_fetchstructure - Read the structure of a particular message
    • imap_fetchtext - 别名 imap_body
    • imap_fetch_overview - Read an overview of the information in the headers of the given message
    • imap_gc - Clears IMAP cache
    • imap_getacl - Gets the ACL for a given mailbox
    • imap_getmailboxes - Read the list of mailboxes, returning detailed information on each one
    • imap_getsubscribed - List all the subscribed mailboxes
    • imap_get_quota - Retrieve the quota level settings, and usage statics per mailbox
    • imap_get_quotaroot - Retrieve the quota settings per user
    • imap_header - 别名 imap_headerinfo
    • imap_headerinfo - Read the header of the message
    • imap_headers - Returns headers for all messages in a mailbox
    • imap_last_error - Gets the last IMAP error that occurred during this page request
    • imap_list - Read the list of mailboxes
    • imap_listmailbox - 别名 imap_list
    • imap_listscan - Returns the list of mailboxes that matches the given text
    • imap_listsubscribed - 别名 imap_lsub
    • imap_lsub - List all the subscribed mailboxes
    • imap_mail - Send an email message
    • imap_mailboxmsginfo - Get information about the current mailbox
    • imap_mail_compose - Create a MIME message based on given envelope and body sections
    • imap_mail_copy - Copy specified messages to a mailbox
    • imap_mail_move - Move specified messages to a mailbox
    • imap_mime_header_decode - Decode MIME header elements
    • imap_msgno - Gets the message sequence number for the given UID
    • imap_num_msg - Gets the number of messages in the current mailbox
    • imap_num_recent - Gets the number of recent messages in current mailbox
    • imap_open - Open an IMAP stream to a mailbox
    • imap_ping - Check if the IMAP stream is still active
    • imap_qprint - Convert a quoted-printable string to an 8 bit string
    • imap_rename - 别名 imap_renamemailbox
    • imap_renamemailbox - Rename an old mailbox to new mailbox
    • imap_reopen - Reopen IMAP stream to new mailbox
    • imap_rfc822_parse_adrlist - Parses an address string
    • imap_rfc822_parse_headers - Parse mail headers from a string
    • imap_rfc822_write_address - Returns a properly formatted email address given the mailbox, host, and personal info
    • imap_savebody - Save a specific body section to a file
    • imap_scan - 别名 imap_listscan
    • imap_scanmailbox - 别名 imap_listscan
    • imap_search - This function returns an array of messages matching the given search criteria
    • imap_setacl - Sets the ACL for a given mailbox
    • imap_setflag_full - Sets flags on messages
    • imap_set_quota - Sets a quota for a given mailbox
    • imap_sort - Gets and sort messages
    • imap_status - Returns status information on a mailbox
    • imap_subscribe - Subscribe to a mailbox
    • imap_thread - Returns a tree of threaded message
    • imap_timeout - Set or fetch imap timeout
    • imap_uid - This function returns the UID for the given message sequence number
    • imap_undelete - Unmark the message which is marked deleted
    • imap_unsubscribe - Unsubscribe from a mailbox
    • imap_utf7_decode - Decodes a modified UTF-7 encoded string
    • imap_utf7_encode - Converts ISO-8859-1 string to modified UTF-7 text
    • imap_utf8 - Converts MIME-encoded text to UTF-8
    • implode - 将一个一维数组的值转化为字符串
    • import_request_variables - 将 GET／POST／Cookie 变量导入到全局作用域中
    • inclued_get_data - Get the inclued data
    • inet_ntop - Converts a packed internet address to a human readable representation
    • inet_pton - Converts a human readable IP address to its packed in_addr representation
    • InfiniteIterator::next - Moves the inner Iterator forward or rewinds it
    • InfiniteIterator::__construct - Constructs an InfiniteIterator
    • inflate_add - Incrementally inflate encoded data
    • inflate_init - Initialize an incremental inflate context
    • ingres_autocommit - Switch autocommit on or off
    • ingres_autocommit_state - Test if the connection is using autocommit
    • ingres_charset - Returns the installation character set
    • ingres_close - Close an Ingres database connection
    • ingres_commit - Commit a transaction
    • ingres_connect - Open a connection to an Ingres database
    • ingres_cursor - Get a cursor name for a given result resource
    • ingres_errno - Get the last Ingres error number generated
    • ingres_error - Get a meaningful error message for the last error generated
    • ingres_errsqlstate - Get the last SQLSTATE error code generated
    • ingres_escape_string - Escape special characters for use in a query
    • ingres_execute - Execute a prepared query
    • ingres_fetch_array - Fetch a row of result into an array
    • ingres_fetch_assoc - Fetch a row of result into an associative array
    • ingres_fetch_object - Fetch a row of result into an object
    • ingres_fetch_proc_return - Get the return value from a procedure call
    • ingres_fetch_row - Fetch a row of result into an enumerated array
    • ingres_field_length - Get the length of a field
    • ingres_field_name - Get the name of a field in a query result
    • ingres_field_nullable - Test if a field is nullable
    • ingres_field_precision - Get the precision of a field
    • ingres_field_scale - Get the scale of a field
    • ingres_field_type - Get the type of a field in a query result
    • ingres_free_result - Free the resources associated with a result identifier
    • ingres_next_error - Get the next Ingres error
    • ingres_num_fields - Get the number of fields returned by the last query
    • ingres_num_rows - Get the number of rows affected or returned by a query
    • ingres_pconnect - Open a persistent connection to an Ingres database
    • ingres_prepare - Prepare a query for later execution
    • ingres_query - Send an SQL query to Ingres
    • ingres_result_seek - Set the row position before fetching data
    • ingres_rollback - Roll back a transaction
    • ingres_set_environment - Set environment features controlling output options
    • ingres_unbuffered_query - Send an unbuffered SQL query to Ingres
    • ini_alter - 别名 ini_set
    • ini_get - 获取一个配置选项的值
    • ini_get_all - 获取所有配置选项
    • ini_restore - 恢复配置选项的值
    • ini_set - 为一个配置选项设置值
    • inotify_add_watch - Add a watch to an initialized inotify instance
    • inotify_init - Initialize an inotify instance
    • inotify_queue_len - Return a number upper than zero if there are pending events
    • inotify_read - Read events from an inotify instance
    • inotify_rm_watch - Remove an existing watch from an inotify instance
    • intdiv - 对除法结果取整
    • interface_exists - 检查接口是否已被定义
    • IntlBreakIterator::createCharacterInstance - Create break iterator for boundaries of combining character sequences
    • IntlBreakIterator::createCodePointInstance - Create break iterator for boundaries of code points
    • IntlBreakIterator::createLineInstance - Create break iterator for logically possible line breaks
    • IntlBreakIterator::createSentenceInstance - Create break iterator for sentence breaks
    • IntlBreakIterator::createTitleInstance - Create break iterator for title-casing breaks
    • IntlBreakIterator::createWordInstance - Create break iterator for word breaks
    • IntlBreakIterator::current - Get index of current position
    • IntlBreakIterator::first - Set position to the first character in the text
    • IntlBreakIterator::following - Advance the iterator to the first boundary following specified offset
    • IntlBreakIterator::getErrorCode - Get last error code on the object
    • IntlBreakIterator::getErrorMessage - Get last error message on the object
    • IntlBreakIterator::getLocale - Get the locale associated with the object
    • IntlBreakIterator::getPartsIterator - Create iterator for navigating fragments between boundaries
    • IntlBreakIterator::getText - Get the text being scanned
    • IntlBreakIterator::isBoundary - Tell whether an offset is a boundary?s offset
    • IntlBreakIterator::last - Set the iterator position to index beyond the last character
    • IntlBreakIterator::next - Advance the iterator the next boundary
    • IntlBreakIterator::preceding - Set the iterator position to the first boundary before an offset
    • IntlBreakIterator::previous - Set the iterator position to the boundary immediately before the current
    • IntlBreakIterator::setText - Set the text being scanned
    • IntlBreakIterator::__construct - Private constructor for disallowing instantiation
    • IntlCalendar::add - Add a (signed) amount of time to a field
    • IntlCalendar::after - Whether this object?s time is after that of the passed object
    • IntlCalendar::before - Whether this object?s time is before that of the passed object
    • IntlCalendar::clear - Clear a field or all fields
    • IntlCalendar::createInstance - Create a new IntlCalendar
    • IntlCalendar::equals - Compare time of two IntlCalendar objects for equality
    • IntlCalendar::fieldDifference - Calculate difference between given time and this object?s time
    • IntlCalendar::fromDateTime - Create an IntlCalendar from a DateTime object or string
    • IntlCalendar::get - Get the value for a field
    • IntlCalendar::getActualMaximum - The maximum value for a field, considering the object?s current time
    • IntlCalendar::getActualMinimum - The minimum value for a field, considering the object?s current time
    • IntlCalendar::getAvailableLocales - Get array of locales for which there is data
    • IntlCalendar::getDayOfWeekType - Tell whether a day is a weekday, weekend or a day that has a transition between the two
    • IntlCalendar::getErrorCode - Get last error code on the object
    • IntlCalendar::getErrorMessage - Get last error message on the object
    • IntlCalendar::getFirstDayOfWeek - Get the first day of the week for the calendar?s locale
    • IntlCalendar::getGreatestMinimum - Get the largest local minimum value for a field
    • IntlCalendar::getKeywordValuesForLocale - Get set of locale keyword values
    • IntlCalendar::getLeastMaximum - Get the smallest local maximum for a field
    • IntlCalendar::getLocale - Get the locale associated with the object
    • IntlCalendar::getMaximum - Get the global maximum value for a field
    • IntlCalendar::getMinimalDaysInFirstWeek - Get minimal number of days the first week in a year or month can have
    • IntlCalendar::getMinimum - Get the global minimum value for a field
    • IntlCalendar::getNow - Get number representing the current time
    • IntlCalendar::getRepeatedWallTimeOption - Get behavior for handling repeating wall time
    • IntlCalendar::getSkippedWallTimeOption - Get behavior for handling skipped wall time
    • IntlCalendar::getTime - Get time currently represented by the object
    • IntlCalendar::getTimeZone - Get the object?s timezone
    • IntlCalendar::getType - Get the calendar type
    • IntlCalendar::getWeekendTransition - Get time of the day at which weekend begins or ends
    • IntlCalendar::inDaylightTime - Whether the object?s time is in Daylight Savings Time
    • IntlCalendar::isEquivalentTo - Whether another calendar is equal but for a different time
    • IntlCalendar::isLenient - Whether date/time interpretation is in lenient mode
    • IntlCalendar::isSet - Whether a field is set
    • IntlCalendar::isWeekend - Whether a certain date/time is in the weekend
    • IntlCalendar::roll - Add value to field without carrying into more significant fields
    • IntlCalendar::set - Set a time field or several common fields at once
    • IntlCalendar::setFirstDayOfWeek - Set the day on which the week is deemed to start
    • IntlCalendar::setLenient - Set whether date/time interpretation is to be lenient
    • IntlCalendar::setMinimalDaysInFirstWeek - Set minimal number of days the first week in a year or month can have
    • IntlCalendar::setRepeatedWallTimeOption - Set behavior for handling repeating wall times at negative timezone offset transitions
    • IntlCalendar::setSkippedWallTimeOption - Set behavior for handling skipped wall times at positive timezone offset transitions
    • IntlCalendar::setTime - Set the calendar time in milliseconds since the epoch
    • IntlCalendar::setTimeZone - Set the timezone used by this calendar
    • IntlCalendar::toDateTime - Convert an IntlCalendar into a DateTime object
    • IntlCalendar::__construct - Private constructor for disallowing instantiation
    • IntlChar::charAge - Get the "age" of the code point
    • IntlChar::charDigitValue - Get the decimal digit value of a decimal digit character
    • IntlChar::charDirection - Get bidirectional category value for a code point
    • IntlChar::charFromName - Find Unicode character by name and return its code point value
    • IntlChar::charMirror - Get the "mirror-image" character for a code point
    • IntlChar::charName - Retrieve the name of a Unicode character
    • IntlChar::charType - Get the general category value for a code point
    • IntlChar::chr - Return Unicode character by code point value
    • IntlChar::digit - Get the decimal digit value of a code point for a given radix
    • IntlChar::enumCharNames - Enumerate all assigned Unicode characters within a range
    • IntlChar::enumCharTypes - Enumerate all code points with their Unicode general categories
    • IntlChar::foldCase - Perform case folding on a code point
    • IntlChar::forDigit - Get character representation for a given digit and radix
    • IntlChar::getBidiPairedBracket - Get the paired bracket character for a code point
    • IntlChar::getBlockCode - Get the Unicode allocation block containing a code point
    • IntlChar::getCombiningClass - Get the combining class of a code point
    • IntlChar::getFC_NFKC_Closure - Get the FC_NFKC_Closure property for a code point
    • IntlChar::getIntPropertyMaxValue - Get the max value for a Unicode property
    • IntlChar::getIntPropertyMinValue - Get the min value for a Unicode property
    • IntlChar::getIntPropertyValue - Get the value for a Unicode property for a code point
    • IntlChar::getNumericValue - Get the numeric value for a Unicode code point
    • IntlChar::getPropertyEnum - Get the property constant value for a given property name
    • IntlChar::getPropertyName - Get the Unicode name for a property
    • IntlChar::getPropertyValueEnum - Get the property value for a given value name
    • IntlChar::getPropertyValueName - Get the Unicode name for a property value
    • IntlChar::getUnicodeVersion - Get the Unicode version
    • IntlChar::hasBinaryProperty - Check a binary Unicode property for a code point
    • IntlChar::isalnum - Check if code point is an alphanumeric character
    • IntlChar::isalpha - Check if code point is a letter character
    • IntlChar::isbase - Check if code point is a base character
    • IntlChar::isblank - Check if code point is a "blank" or "horizontal space" character
    • IntlChar::iscntrl - Check if code point is a control character
    • IntlChar::isdefined - Check whether the code point is defined
    • IntlChar::isdigit - Check if code point is a digit character
    • IntlChar::isgraph - Check if code point is a graphic character
    • IntlChar::isIDIgnorable - Check if code point is an ignorable character
    • IntlChar::isIDPart - Check if code point is permissible in an identifier
    • IntlChar::isIDStart - Check if code point is permissible as the first character in an identifier
    • IntlChar::isISOControl - Check if code point is an ISO control code
    • IntlChar::isJavaIDPart - Check if code point is permissible in a Java identifier
    • IntlChar::isJavaIDStart - Check if code point is permissible as the first character in a Java identifier
    • IntlChar::isJavaSpaceChar - Check if code point is a space character according to Java
    • IntlChar::islower - Check if code point is a lowercase letter
    • IntlChar::isMirrored - Check if code point has the Bidi_Mirrored property
    • IntlChar::isprint - Check if code point is a printable character
    • IntlChar::ispunct - Check if code point is punctuation character
    • IntlChar::isspace - Check if code point is a space character
    • IntlChar::istitle - Check if code point is a titlecase letter
    • IntlChar::isUAlphabetic - Check if code point has the Alphabetic Unicode property
    • IntlChar::isULowercase - Check if code point has the Lowercase Unicode property
    • IntlChar::isupper - Check if code point has the general category "Lu" (uppercase letter)
    • IntlChar::isUUppercase - Check if code point has the Uppercase Unicode property
    • IntlChar::isUWhiteSpace - Check if code point has the White_Space Unicode property
    • IntlChar::isWhitespace - Check if code point is a whitespace character according to ICU
    • IntlChar::isxdigit - Check if code point is a hexadecimal digit
    • IntlChar::ord - Return Unicode code point value of character
    • IntlChar::tolower - Make Unicode character lowercase
    • IntlChar::totitle - Make Unicode character titlecase
    • IntlChar::toupper - Make Unicode character uppercase
    • IntlCodePointBreakIterator::getLastCodePoint - Get last code point passed over after advancing or receding the iterator
    • IntlDateFormatter::create - Create a date formatter
    • IntlDateFormatter::format - Format the date/time value as a string
    • IntlDateFormatter::formatObject - Formats an object
    • IntlDateFormatter::getCalendar - Get the calendar type used for the IntlDateFormatter
    • IntlDateFormatter::getCalendarObject - Get copy of formatter?s calendar object
    • IntlDateFormatter::getDateType - Get the datetype used for the IntlDateFormatter
    • IntlDateFormatter::getErrorCode - Get the error code from last operation
    • IntlDateFormatter::getErrorMessage - Get the error text from the last operation.
    • IntlDateFormatter::getLocale - Get the locale used by formatter
    • IntlDateFormatter::getPattern - Get the pattern used for the IntlDateFormatter
    • IntlDateFormatter::getTimeType - Get the timetype used for the IntlDateFormatter
    • IntlDateFormatter::getTimeZone - Get formatter?s timezone
    • IntlDateFormatter::getTimeZoneId - Get the timezone-id used for the IntlDateFormatter
    • IntlDateFormatter::isLenient - Get the lenient used for the IntlDateFormatter
    • IntlDateFormatter::localtime - Parse string to a field-based time value
    • IntlDateFormatter::parse - Parse string to a timestamp value
    • IntlDateFormatter::setCalendar - Sets the calendar type used by the formatter
    • IntlDateFormatter::setLenient - Set the leniency of the parser
    • IntlDateFormatter::setPattern - Set the pattern used for the IntlDateFormatter
    • IntlDateFormatter::setTimeZone - Sets formatter?s timezone
    • IntlDateFormatter::setTimeZoneId - Sets the time zone to use
    • IntlIterator::current - Get the current element
    • IntlIterator::key - Get the current key
    • IntlIterator::next - Move forward to the next element
    • IntlIterator::rewind - Rewind the iterator to the first element
    • IntlIterator::valid - Check if current position is valid
    • IntlPartsIterator::getBreakIterator - Get IntlBreakIterator backing this parts iterator
    • IntlRuleBasedBreakIterator::getBinaryRules - Get the binary form of compiled rules
    • IntlRuleBasedBreakIterator::getRules - Get the rule set used to create this object
    • IntlRuleBasedBreakIterator::getRuleStatus - Get the largest status value from the break rules that determined the current break position
    • IntlRuleBasedBreakIterator::getRuleStatusVec - Get the status values from the break rules that determined the current break position
    • IntlRuleBasedBreakIterator::__construct - Create iterator from ruleset
    • IntlTimeZone::countEquivalentIDs - Get the number of IDs in the equivalency group that includes the given ID
    • IntlTimeZone::createDefault - Create a new copy of the default timezone for this host
    • IntlTimeZone::createEnumeration - Get an enumeration over time zone IDs associated with the given country or offset
    • IntlTimeZone::createTimeZone - Create a timezone object for the given ID
    • IntlTimeZone::fromDateTimeZone - Create a timezone object from DateTimeZone
    • IntlTimeZone::getCanonicalID - Get the canonical system timezone ID or the normalized custom time zone ID for the given time zone ID
    • IntlTimeZone::getDisplayName - Get a name of this time zone suitable for presentation to the user
    • IntlTimeZone::getDSTSavings - Get the amount of time to be added to local standard time to get local wall clock time
    • IntlTimeZone::getEquivalentID - Get an ID in the equivalency group that includes the given ID
    • IntlTimeZone::getErrorCode - Get last error code on the object
    • IntlTimeZone::getErrorMessage - Get last error message on the object
    • IntlTimeZone::getGMT - Create GMT (UTC) timezone
    • IntlTimeZone::getID - Get timezone ID
    • IntlTimeZone::getOffset - Get the time zone raw and GMT offset for the given moment in time
    • IntlTimeZone::getRawOffset - Get the raw GMT offset (before taking daylight savings time into account
    • IntlTimeZone::getTZDataVersion - Get the timezone data version currently used by ICU
    • IntlTimeZone::hasSameRules - Check if this zone has the same rules and offset as another zone
    • IntlTimeZone::toDateTimeZone - Convert to DateTimeZone object
    • IntlTimeZone::useDaylightTime - Check if this time zone uses daylight savings time
    • intl_error_name - Get symbolic name for a given error code
    • intl_get_error_code - Get the last error code
    • intl_get_error_message - Get description of the last error
    • intl_is_failure - Check whether the given error code indicates failure
    • intval - 获取变量的整数值
    • in_array - 检查数组中是否存在某个值
    • ip2long - 将一个IPV4的字符串互联网协议转换成数字格式
    • iptcembed - 将二进制 IPTC 数据嵌入到一幅 JPEG 图像中
    • iptcparse - 将二进制 IPTC 块解析为单个标记
    • isset - 检测变量是否设置
    • is_a - 如果对象属于该类或该类是此对象的父类则返回 TRUE
    • is_array - 检测变量是否是数组
    • is_bool - 检测变量是否是布尔型
    • is_callable - 检测参数是否为合法的可调用结构
    • is_dir - 判断给定文件名是否是一个目录
    • is_double - is_float 的别名
    • is_executable - 判断给定文件名是否可执行
    • is_file - 判断给定文件名是否为一个正常的文件
    • is_finite - 判断是否为有限值
    • is_float - 检测变量是否是浮点型
    • is_infinite - 判断是否为无限值
    • is_int - 检测变量是否是整数
    • is_integer - is_int 的别名
    • is_link - 判断给定文件名是否为一个符号连接
    • is_long - is_int 的别名
    • is_nan - 判断是否为合法数值
    • is_null - 检测变量是否为 NULL
    • is_numeric - 检测变量是否为数字或数字字符串
    • is_object - 检测变量是否是一个对象
    • is_readable - 判断给定文件名是否可读
    • is_real - is_float 的别名
    • is_resource - 检测变量是否为资源类型
    • is_scalar - 检测变量是否是一个标量
    • is_soap_fault - Checks if a SOAP call has failed
    • is_string - 检测变量是否是字符串
    • is_subclass_of - 如果此对象是该类的子类，则返回 TRUE
    • is_tainted - Checks whether a string is tainted
    • is_uploaded_file - 判断文件是否是通过 HTTP POST 上传的
    • is_writable - 判断给定的文件名是否可写
    • is_writeable - is_writable 的别名
    • Iterator::current - 返回当前元素
    • Iterator::key - 返回当前元素的键
    • Iterator::next - 向前移动到下一个元素
    • Iterator::rewind - 返回到迭代器的第一个元素
    • Iterator::valid - 检查当前位置是否有效
    • IteratorAggregate::getIterator - 获取一个外部迭代器
    • IteratorIterator::current - Get the current value
    • IteratorIterator::getInnerIterator - Get the inner iterator
    • IteratorIterator::key - Get the key of the current element
    • IteratorIterator::next - Forward to the next element
    • IteratorIterator::rewind - Rewind to the first element
    • IteratorIterator::valid - Checks if the iterator is valid
    • IteratorIterator::__construct - Create an iterator from anything that is traversable
    • iterator_apply - 为迭代器中每个元素调用一个用户自定义函数
    • iterator_count - 计算迭代器中元素的个数
    • iterator_to_array - 将迭代器中的元素拷贝到数组
  • j
    • JDDayOfWeek - 返回星期的日期
    • JDMonthName - 返回月份的名称
    • JDToFrench - 转变一个Julian Day计数到French Republican历法的日期
    • JDToGregorian - 转变一个Julian Day计数为Gregorian历法日期
    • jdtojewish - 转换一个julian天数为Jewish历法的日期
    • JDToJulian - 转变一个Julian Day计数到Julian历法的日期
    • jdtounix - 转变Julian Day计数为一个Unix时间戳
    • JewishToJD - 转变一个Jewish历法的日期为一个Julian Day计数
    • join - 别名 implode
    • jpeg2wbmp - 将 JPEG 图像文件转换为 WBMP 图像文件
    • JsonSerializable::jsonSerialize - 指定需要被序列化成 JSON 的数据
    • json_decode - 对 JSON 格式的字符串进行解码
    • json_encode - 对变量进行 JSON 编码
    • json_last_error - 返回最后发生的错误
    • json_last_error_msg - Returns the error string of the last json_encode() or json_decode() call
    • Judy::byCount - Locate the Nth index present in the Judy array
    • Judy::count - Count the number of elements in the Judy array
    • Judy::first - Search for the first index in the Judy array
    • Judy::firstEmpty - Search for the first absent index in the Judy array
    • Judy::free - Free the entire Judy array
    • Judy::getType - Return the type of the current Judy array
    • Judy::last - Search for the last index in the Judy array
    • Judy::lastEmpty - Search for the last absent index in the Judy array
    • Judy::memoryUsage - Return the memory used by the Judy array
    • Judy::next - Search for the next index in the Judy array
    • Judy::nextEmpty - Search for the next absent index in the Judy array
    • Judy::offsetExists - Whether a offset exists
    • Judy::offsetGet - Offset to retrieve
    • Judy::offsetSet - Offset to set
    • Judy::offsetUnset - Offset to unset
    • Judy::prev - Search for the previous index in the Judy array
    • Judy::prevEmpty - Search for the previous absent index in the Judy array
    • Judy::size - Return the size of the current Judy array
    • Judy::__construct - Construct a new Judy object
    • Judy::__destruct - Destruct a Judy object
    • judy_type - Return the type of a Judy array
    • judy_version - Return or print the current PHP Judy version
    • JulianToJD - 转变一个Julian历法的日期为Julian Day计数
  • k
    • kadm5_chpass_principal - Changes the principal's password
    • kadm5_create_principal - Creates a kerberos principal with the given parameters
    • kadm5_delete_principal - Deletes a kerberos principal
    • kadm5_destroy - Closes the connection to the admin server and releases all related resources
    • kadm5_flush - Flush all changes to the Kerberos database
    • kadm5_get_policies - Gets all policies from the Kerberos database
    • kadm5_get_principal - Gets the principal's entries from the Kerberos database
    • kadm5_get_principals - Gets all principals from the Kerberos database
    • kadm5_init_with_password - Opens a connection to the KADM5 library
    • kadm5_modify_principal - Modifies a kerberos principal with the given parameters
    • key - 从关联数组中取得键名
    • key_exists - 别名 array_key_exists
    • krsort - 对数组按照键名逆向排序
    • ksort - 对数组按照键名排序
    • KTaglib_ID3v2_AttachedPictureFrame::getDescription - Returns a description for the picture in a picture frame
    • KTaglib_ID3v2_AttachedPictureFrame::getMimeType - Returns the mime type of the picture
    • KTaglib_ID3v2_AttachedPictureFrame::getType - Returns the type of the image
    • KTaglib_ID3v2_AttachedPictureFrame::savePicture - Saves the picture to a file
    • KTaglib_ID3v2_AttachedPictureFrame::setMimeType - Set's the mime type of the picture
    • KTaglib_ID3v2_AttachedPictureFrame::setPicture - Sets the frame picture to the given image
    • KTaglib_ID3v2_AttachedPictureFrame::setType - Set the type of the image
    • KTaglib_ID3v2_Frame::getSize - Returns the size of the frame in bytes
    • KTaglib_ID3v2_Frame::__toString - Returns a string representation of the frame
    • KTaglib_ID3v2_Tag::addFrame - Add a frame to the ID3v2 tag
    • KTaglib_ID3v2_Tag::getFrameList - Returns an array of ID3v2 frames, associated with the ID3v2 tag
    • KTaglib_MPEG_AudioProperties::getBitrate - Returns the bitrate of the MPEG file
    • KTaglib_MPEG_AudioProperties::getChannels - Returns the amount of channels of a MPEG file
    • KTaglib_MPEG_AudioProperties::getLayer - Returns the layer of a MPEG file
    • KTaglib_MPEG_AudioProperties::getLength - Returns the length of a MPEG file
    • KTaglib_MPEG_AudioProperties::getSampleBitrate - Returns the sample bitrate of a MPEG file
    • KTaglib_MPEG_AudioProperties::getVersion - Returns the version of a MPEG file
    • KTaglib_MPEG_AudioProperties::isCopyrighted - Returns the copyright status of an MPEG file
    • KTaglib_MPEG_AudioProperties::isOriginal - Returns if the file is marked as the original file
    • KTaglib_MPEG_AudioProperties::isProtectionEnabled - Returns if protection mechanisms of an MPEG file are enabled
    • KTaglib_MPEG_File::getAudioProperties - Returns an object that provides access to the audio properties
    • KTaglib_MPEG_File::getID3v1Tag - Returns an object representing an ID3v1 tag
    • KTaglib_MPEG_File::getID3v2Tag - Returns a ID3v2 object
    • KTaglib_MPEG_File::__construct - Opens a new file
    • KTaglib_Tag::getAlbum - Returns the title string from a ID3 tag
    • KTaglib_Tag::getArtist - Returns the artist string from a ID3 tag
    • KTaglib_Tag::getComment - Returns the comment from a ID3 tag
    • KTaglib_Tag::getGenre - Returns the genre from a ID3 tag
    • KTaglib_Tag::getTitle - Returns the title string from a ID3 tag
    • KTaglib_Tag::getTrack - Returns the track number from a ID3 tag
    • KTaglib_Tag::getYear - Returns the year from a ID3 tag
    • KTaglib_Tag::isEmpty - Returns true if the tag is empty
  • l
    • Lapack::eigenValues - This function returns the eigenvalues for a given square matrix
    • Lapack::identity - Return an identity matrix
    • Lapack::leastSquaresByFactorisation - Calculate the linear least squares solution of a matrix using QR factorisation
    • Lapack::leastSquaresBySVD - Solve the linear least squares problem, using SVD
    • Lapack::pseudoInverse - Calculate the inverse of a matrix
    • Lapack::singularValues - Calculated the singular values of a matrix
    • Lapack::solveLinearEquation - Solve a system of linear equations
    • lcfirst - 使一个字符串的第一个字符小写
    • lcg_value - 组合线性同余发生器
    • lchgrp - 修改符号链接的所有组
    • lchown - 修改符号链接的所有者
    • ldap_8859_to_t61 - Translate 8859 characters to t61 characters
    • ldap_add - Add entries to LDAP directory
    • ldap_bind - 绑定 LDAP 目录
    • ldap_close - 别名 ldap_unbind
    • ldap_compare - Compare value of attribute found in entry specified with DN
    • ldap_connect - Connect to an LDAP server
    • ldap_control_paged_result - Send LDAP pagination control
    • ldap_control_paged_result_response - Retrieve the LDAP pagination cookie
    • ldap_count_entries - Count the number of entries in a search
    • ldap_delete - Delete an entry from a directory
    • ldap_dn2ufn - Convert DN to User Friendly Naming format
    • ldap_err2str - Convert LDAP error number into string error message
    • ldap_errno - Return the LDAP error number of the last LDAP command
    • ldap_error - Return the LDAP error message of the last LDAP command
    • ldap_escape - Escape a string for use in an LDAP filter or DN
    • ldap_explode_dn - Splits DN into its component parts
    • ldap_first_attribute - Return first attribute
    • ldap_first_entry - Return first result id
    • ldap_first_reference - Return first reference
    • ldap_free_result - Free result memory
    • ldap_get_attributes - Get attributes from a search result entry
    • ldap_get_dn - Get the DN of a result entry
    • ldap_get_entries - Get all result entries
    • ldap_get_option - Get the current value for given option
    • ldap_get_values - Get all values from a result entry
    • ldap_get_values_len - Get all binary values from a result entry
    • ldap_list - Single-level search
    • ldap_modify - Modify an LDAP entry
    • ldap_modify_batch - Batch and execute modifications on an LDAP entry
    • ldap_mod_add - Add attribute values to current attributes
    • ldap_mod_del - Delete attribute values from current attributes
    • ldap_mod_replace - Replace attribute values with new ones
    • ldap_next_attribute - Get the next attribute in result
    • ldap_next_entry - Get next result entry
    • ldap_next_reference - Get next reference
    • ldap_parse_reference - Extract information from reference entry
    • ldap_parse_result - Extract information from result
    • ldap_read - Read an entry
    • ldap_rename - Modify the name of an entry
    • ldap_sasl_bind - Bind to LDAP directory using SASL
    • ldap_search - Search LDAP tree
    • ldap_set_option - Set the value of the given option
    • ldap_set_rebind_proc - Set a callback function to do re-binds on referral chasing
    • ldap_sort - Sort LDAP result entries on the client side
    • ldap_start_tls - Start TLS
    • ldap_t61_to_8859 - Translate t61 characters to 8859 characters
    • ldap_unbind - Unbind from LDAP directory
    • levenshtein - 计算两个字符串之间的编辑距离
    • libxml_clear_errors - Clear libxml error buffer
    • libxml_disable_entity_loader - Disable the ability to load external entities
    • libxml_get_errors - Retrieve array of errors
    • libxml_get_last_error - Retrieve last error from libxml
    • libxml_set_external_entity_loader - Changes the default external entity loader
    • libxml_set_streams_context - Set the streams context for the next libxml document load or write
    • libxml_use_internal_errors - Disable libxml errors and allow user to fetch error information as needed
    • LimitIterator::current - Get current element
    • LimitIterator::getInnerIterator - Get inner iterator
    • LimitIterator::getPosition - Return the current position
    • LimitIterator::key - Get current key
    • LimitIterator::next - Move the iterator forward
    • LimitIterator::rewind - Rewind the iterator to the specified starting offset
    • LimitIterator::seek - Seek to the given position
    • LimitIterator::valid - Check whether the current element is valid
    • LimitIterator::__construct - Construct a LimitIterator
    • link - 建立一个硬连接
    • linkinfo - 获取一个连接的信息
    • list - 把数组中的值赋给一些变量
    • Locale::acceptFromHttp - Tries to find out best available locale based on HTTP "Accept-Language" header
    • Locale::canonicalize - Canonicalize the locale string
    • Locale::composeLocale - Returns a correctly ordered and delimited locale ID
    • Locale::filterMatches - Checks if a language tag filter matches with locale
    • Locale::getAllVariants - Gets the variants for the input locale
    • Locale::getDefault - Gets the default locale value from the INTL global 'default_locale'
    • Locale::getDisplayLanguage - Returns an appropriately localized display name for language of the inputlocale
    • Locale::getDisplayName - Returns an appropriately localized display name for the input locale
    • Locale::getDisplayRegion - Returns an appropriately localized display name for region of the input locale
    • Locale::getDisplayScript - Returns an appropriately localized display name for script of the input locale
    • Locale::getDisplayVariant - Returns an appropriately localized display name for variants of the input locale
    • Locale::getKeywords - Gets the keywords for the input locale
    • Locale::getPrimaryLanguage - Gets the primary language for the input locale
    • Locale::getRegion - Gets the region for the input locale
    • Locale::getScript - Gets the script for the input locale
    • Locale::lookup - Searches the language tag list for the best match to the language
    • Locale::parseLocale - Returns a key-value array of locale ID subtag elements.
    • Locale::setDefault - sets the default runtime locale
    • localeconv - Get numeric formatting information
    • localtime - 取得本地时间
    • log - 自然对数
    • log1p - 返回 log(1 + number)，甚至当 number 的值接近零也能计算出准确结果
    • log10 - 以 10 为底的对数
    • long2ip - Converts an long integer address into a string in (IPv4) Internet standard dotted format
    • lstat - 给出一个文件或符号连接的信息
    • ltrim - 删除字符串开头的空白字符（或其他字符）
    • Lua::assign - 将一个php变量赋值给Lua
    • Lua::call - 调用Lua函数
    • Lua::eval - 将字符串当做Lua代码执行
    • Lua::getVersion - 获取Lua版本
    • Lua::include - 解析Lua脚本文件
    • Lua::registerCallback - 向Lua中注册php函数
    • Lua::__construct - Lua 构造方法
    • LuaClosure::__invoke - 调用luaclosure
    • lzf_compress - LZF compression
    • lzf_decompress - LZF decompression
    • lzf_optimized_for - Determines what LZF extension was optimized for
  • m
    • magic_quotes_runtime - 别名 set_magic_quotes_runtime
    • mail - 发送邮件
    • mailparse_determine_best_xfer_encoding - Gets the best way of encoding
    • mailparse_msg_create - Create a mime mail resource
    • mailparse_msg_extract_part - Extracts/decodes a message section
    • mailparse_msg_extract_part_file - Extracts/decodes a message section
    • mailparse_msg_extract_whole_part_file - Extracts a message section including headers without decoding the transfer encoding
    • mailparse_msg_free - Frees a MIME resource
    • mailparse_msg_get_part - Returns a handle on a given section in a mimemessage
    • mailparse_msg_get_part_data - Returns an associative array of info about the message
    • mailparse_msg_get_structure - Returns an array of mime section names in the supplied message
    • mailparse_msg_parse - Incrementally parse data into buffer
    • mailparse_msg_parse_file - Parses a file
    • mailparse_rfc822_parse_addresses - Parse RFC 822 compliant addresses
    • mailparse_stream_encode - Streams data from source file pointer, apply encoding and write to destfp
    • mailparse_uudecode_all - Scans the data from fp and extract each embedded uuencoded file
    • main - 虚拟的main
    • max - 找出最大值
    • maxdb_affected_rows - Gets the number of affected rows in a previous MaxDB operation
    • maxdb_autocommit - Turns on or off auto-commiting database modifications
    • maxdb_bind_param - 别名 maxdb_stmt_bind_param
    • maxdb_bind_result - 别名 maxdb_stmt_bind_result
    • maxdb_change_user - Changes the user of the specified database connection
    • maxdb_character_set_name - Returns the default character set for the database connection
    • maxdb_client_encoding - 别名 maxdb_character_set_name
    • maxdb_close - Closes a previously opened database connection
    • maxdb_close_long_data - 别名 maxdb_stmt_close_long_data
    • maxdb_commit - Commits the current transaction
    • maxdb_connect - Open a new connection to the MaxDB server
    • maxdb_connect_errno - Returns the error code from last connect call
    • maxdb_connect_error - Returns a string description of the last connect error
    • maxdb_data_seek - Adjusts the result pointer to an arbitary row in the result
    • maxdb_debug - Performs debugging operations
    • maxdb_disable_reads_from_master - Disable reads from master
    • maxdb_disable_rpl_parse - Disable RPL parse
    • maxdb_dump_debug_info - Dump debugging information into the log
    • maxdb_embedded_connect - Open a connection to an embedded MaxDB server
    • maxdb_enable_reads_from_master - Enable reads from master
    • maxdb_enable_rpl_parse - Enable RPL parse
    • maxdb_errno - Returns the error code for the most recent function call
    • maxdb_error - Returns a string description of the last error
    • maxdb_escape_string - 别名 maxdb_real_escape_string
    • maxdb_execute - 别名 maxdb_stmt_execute
    • maxdb_fetch - 别名 maxdb_stmt_fetch
    • maxdb_fetch_array - Fetch a result row as an associative, a numeric array, or both
    • maxdb_fetch_assoc - Fetch a result row as an associative array
    • maxdb_fetch_field - Returns the next field in the result set
    • maxdb_fetch_fields - Returns an array of resources representing the fields in a result set
    • maxdb_fetch_field_direct - Fetch meta-data for a single field
    • maxdb_fetch_lengths - Returns the lengths of the columns of the current row in the result set
    • maxdb_fetch_object - Returns the current row of a result set as an object
    • maxdb_fetch_row - Get a result row as an enumerated array
    • maxdb_field_count - Returns the number of columns for the most recent query
    • maxdb_field_seek - Set result pointer to a specified field offset
    • maxdb_field_tell - Get current field offset of a result pointer
    • maxdb_free_result - Frees the memory associated with a result
    • maxdb_get_client_info - Returns the MaxDB client version as a string
    • maxdb_get_client_version - Get MaxDB client info
    • maxdb_get_host_info - Returns a string representing the type of connection used
    • maxdb_get_metadata - 别名 maxdb_stmt_result_metadata
    • maxdb_get_proto_info - Returns the version of the MaxDB protocol used
    • maxdb_get_server_info - Returns the version of the MaxDB server
    • maxdb_get_server_version - Returns the version of the MaxDB server as an integer
    • maxdb_info - Retrieves information about the most recently executed query
    • maxdb_init - Initializes MaxDB and returns an resource for use with maxdb_real_connect
    • maxdb_insert_id - Returns the auto generated id used in the last query
    • maxdb_kill - Disconnects from a MaxDB server
    • maxdb_master_query - Enforce execution of a query on the master in a master/slave setup
    • maxdb_more_results - Check if there any more query results from a multi query
    • maxdb_multi_query - Performs a query on the database
    • maxdb_next_result - Prepare next result from multi_query
    • maxdb_num_fields - Get the number of fields in a result
    • maxdb_num_rows - Gets the number of rows in a result
    • maxdb_options - Set options
    • maxdb_param_count - 别名 maxdb_stmt_param_count
    • maxdb_ping - Pings a server connection, or tries to reconnect if the connection has gone down
    • maxdb_prepare - Prepare an SQL statement for execution
    • maxdb_query - Performs a query on the database
    • maxdb_real_connect - Opens a connection to a MaxDB server
    • maxdb_real_escape_string - Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection
    • maxdb_real_query - Execute an SQL query
    • maxdb_report - Enables or disables internal report functions
    • maxdb_rollback - Rolls back current transaction
    • maxdb_rpl_parse_enabled - Check if RPL parse is enabled
    • maxdb_rpl_probe - RPL probe
    • maxdb_rpl_query_type - Returns RPL query type
    • maxdb_select_db - Selects the default database for database queries
    • maxdb_send_long_data - 别名 maxdb_stmt_send_long_data
    • maxdb_send_query - Send the query and return
    • maxdb_server_end - Shut down the embedded server
    • maxdb_server_init - Initialize embedded server
    • maxdb_set_opt - 别名 maxdb_options
    • maxdb_sqlstate - Returns the SQLSTATE error from previous MaxDB operation
    • maxdb_ssl_set - Used for establishing secure connections using SSL
    • maxdb_stat - Gets the current system status
    • maxdb_stmt_affected_rows - Returns the total number of rows changed, deleted, or inserted by the last executed statement
    • maxdb_stmt_bind_param - Binds variables to a prepared statement as parameters
    • maxdb_stmt_bind_result - Binds variables to a prepared statement for result storage
    • maxdb_stmt_close - Closes a prepared statement
    • maxdb_stmt_close_long_data - Ends a sequence of maxdb_stmt_send_long_data
    • maxdb_stmt_data_seek - Seeks to an arbitray row in statement result set
    • maxdb_stmt_errno - Returns the error code for the most recent statement call
    • maxdb_stmt_error - Returns a string description for last statement error
    • maxdb_stmt_execute - Executes a prepared Query
    • maxdb_stmt_fetch - Fetch results from a prepared statement into the bound variables
    • maxdb_stmt_free_result - Frees stored result memory for the given statement handle
    • maxdb_stmt_init - Initializes a statement and returns an resource for use with maxdb_stmt_prepare
    • maxdb_stmt_num_rows - Return the number of rows in statements result set
    • maxdb_stmt_param_count - Returns the number of parameter for the given statement
    • maxdb_stmt_prepare - Prepare an SQL statement for execution
    • maxdb_stmt_reset - Resets a prepared statement
    • maxdb_stmt_result_metadata - Returns result set metadata from a prepared statement
    • maxdb_stmt_send_long_data - Send data in blocks
    • maxdb_stmt_sqlstate - Returns SQLSTATE error from previous statement operation
    • maxdb_stmt_store_result - Transfers a result set from a prepared statement
    • maxdb_store_result - Transfers a result set from the last query
    • maxdb_thread_id - Returns the thread ID for the current connection
    • maxdb_thread_safe - Returns whether thread safety is given or not
    • maxdb_use_result - Initiate a result set retrieval
    • maxdb_warning_count - Returns the number of warnings from the last query for the given link
    • mb_check_encoding - 检查字符串在指定的编码里是否有效
    • mb_convert_case - 对字符串进行大小写转换
    • mb_convert_encoding - 转换字符的编码
    • mb_convert_kana - Convert "kana" one from another ("zen-kaku", "han-kaku" and more)
    • mb_convert_variables - 转换一个或多个变量的字符编码
    • mb_decode_mimeheader - 解码 MIME 头字段中的字符串
    • mb_decode_numericentity - 根据 HTML 数字字符串解码成字符
    • mb_detect_encoding - 检测字符的编码
    • mb_detect_order - 设置/获取 字符编码的检测顺序
    • mb_encode_mimeheader - 为 MIME 头编码字符串
    • mb_encode_numericentity - Encode character to HTML numeric string reference
    • mb_encoding_aliases - Get aliases of a known encoding type
    • mb_ereg - Regular expression match with multibyte support
    • mb_eregi - Regular expression match ignoring case with multibyte support
    • mb_eregi_replace - Replace regular expression with multibyte support ignoring case
    • mb_ereg_match - Regular expression match for multibyte string
    • mb_ereg_replace - Replace regular expression with multibyte support
    • mb_ereg_replace_callback - Perform a regular expresssion seach and replace with multibyte support using a callback
    • mb_ereg_search - Multibyte regular expression match for predefined multibyte string
    • mb_ereg_search_getpos - Returns start point for next regular expression match
    • mb_ereg_search_getregs - Retrieve the result from the last multibyte regular expression match
    • mb_ereg_search_init - Setup string and regular expression for a multibyte regular expression match
    • mb_ereg_search_pos - Returns position and length of a matched part of the multibyte regular expression for a predefined multibyte string
    • mb_ereg_search_regs - Returns the matched part of a multibyte regular expression
    • mb_ereg_search_setpos - Set start point of next regular expression match
    • mb_get_info - 获取 mbstring 的内部设置
    • mb_http_input - 检测 HTTP 输入字符编码
    • mb_http_output - 设置/获取 HTTP 输出字符编码
    • mb_internal_encoding - 设置/获取内部字符编码
    • mb_language - 设置/获取当前的语言
    • mb_list_encodings - 返回所有支持编码的数组
    • mb_output_handler - 在输出缓冲中转换字符编码的回调函数
    • mb_parse_str - 解析 GET/POST/COOKIE 数据并设置全局变量
    • mb_preferred_mime_name - 获取 MIME 字符串
    • mb_regex_encoding - Set/Get character encoding for multibyte regex
    • mb_regex_set_options - Set/Get the default options for mbregex functions
    • mb_send_mail - 发送编码过的邮件
    • mb_split - 使用正则表达式分割多字节字符串
    • mb_strcut - 获取字符的一部分
    • mb_strimwidth - 获取按指定宽度截断的字符串
    • mb_stripos - 大小写不敏感地查找字符串在另一个字符串中首次出现的位置
    • mb_stristr - 大小写不敏感地查找字符串在另一个字符串里的首次出现
    • mb_strlen - 获取字符串的长度
    • mb_strpos - 查找字符串在另一个字符串中首次出现的位置
    • mb_strrchr - 查找指定字符在另一个字符串中最后一次的出现
    • mb_strrichr - 大小写不敏感地查找指定字符在另一个字符串中最后一次的出现
    • mb_strripos - 大小写不敏感地在字符串中查找一个字符串最后出现的位置
    • mb_strrpos - 查找字符串在一个字符串中最后出现的位置
    • mb_strstr - 查找字符串在另一个字符串里的首次出现
    • mb_strtolower - 使字符串小写
    • mb_strtoupper - 使字符串大写
    • mb_strwidth - 返回字符串的宽度
    • mb_substitute_character - 设置/获取替代字符
    • mb_substr - 获取部分字符串
    • mb_substr_count - 统计字符串出现的次数
    • mcrypt_cbc - 以 CBC 模式加解密数据
    • mcrypt_cfb - 以 CFB 模式加解密数据
    • mcrypt_create_iv - 从随机源创建初始向量
    • mcrypt_decrypt - 使用给定参数解密密文
    • mcrypt_ecb - 已废弃：使用 ECB 模式加解密数据
    • mcrypt_encrypt - 使用给定参数加密明文
    • mcrypt_enc_get_algorithms_name - 返回打开的算法名称
    • mcrypt_enc_get_block_size - 返回打开的算法的分组大小
    • mcrypt_enc_get_iv_size - 返回打开的算法的初始向量大小
    • mcrypt_enc_get_key_size - 返回打开的模式所能支持的最长密钥
    • mcrypt_enc_get_modes_name - 返回打开的模式的名称
    • mcrypt_enc_get_supported_key_sizes - 以数组方式返回打开的算法所支持的密钥长度
    • mcrypt_enc_is_block_algorithm - 检测打开模式的算法是否为分组算法
    • mcrypt_enc_is_block_algorithm_mode - 检测打开的模式是否支持分组加密
    • mcrypt_enc_is_block_mode - 检测打开的模式是否以分组方式输出
    • mcrypt_enc_self_test - 在打开的模块上进行自检
    • mcrypt_generic - 加密数据
    • mcrypt_generic_deinit - 对加密模块进行清理工作
    • mcrypt_generic_end - 终止加密
    • mcrypt_generic_init - 初始化加密所需的缓冲区
    • mcrypt_get_block_size - 获得加密算法的分组大小
    • mcrypt_get_cipher_name - 获取加密算法名称
    • mcrypt_get_iv_size - 返回指定算法/模式组合的初始向量大小
    • mcrypt_get_key_size - 获取指定加密算法的密钥大小
    • mcrypt_list_algorithms - 获取支持的加密算法
    • mcrypt_list_modes - 获取所支持的模式
    • mcrypt_module_close - 关闭加密模块
    • mcrypt_module_get_algo_block_size - 返回指定算法的分组大小
    • mcrypt_module_get_algo_key_size - 获取打开模式所支持的最大密钥大小
    • mcrypt_module_get_supported_key_sizes - 以数组形式返回打开的算法所支持的密钥大小
    • mcrypt_module_is_block_algorithm - 检测指定算法是否为分组加密算法
    • mcrypt_module_is_block_algorithm_mode - 返回指定模块是否是分组加密模式
    • mcrypt_module_is_block_mode - 检测指定模式是否以分组方式输出
    • mcrypt_module_open - 打开算法和模式对应的模块
    • mcrypt_module_self_test - 在指定模块上执行自检
    • mcrypt_ofb - 使用 OFB 模式加密/解密数据
    • md5 - 计算字符串的 MD5 散列值
    • md5_file - 计算指定文件的 MD5 散列值
    • mdecrypt_generic - 解密数据
    • Memcache::add - 增加一个条目到缓存服务器
    • Memcache::addServer - 向连接池中添加一个memcache服务器
    • Memcache::close - 关闭memcache连接
    • Memcache::connect - 打开一个memcached服务端连接
    • Memcache::decrement - 减小元素的值
    • Memcache::delete - 从服务端删除一个元素
    • Memcache::flush - 清洗（删除）已经存储的所有的元素
    • Memcache::get - 从服务端检回一个元素
    • Memcache::getExtendedStats - 缓存服务器池中所有服务器统计信息
    • Memcache::getServerStatus - 用于获取一个服务器的在线/离线状态
    • Memcache::getStats - 获取服务器统计信息
    • Memcache::getVersion - 返回服务器版本信息
    • Memcache::increment - 增加一个元素的值
    • Memcache::pconnect - 打开一个到服务器的持久化连接
    • Memcache::replace - 替换已经存在的元素的值
    • Memcache::set - Store data at the server
    • Memcache::setCompressThreshold - 开启大值自动压缩
    • Memcache::setServerParams - 运行时修改服务器参数和状态
    • Memcached::add - 向一个新的key下面增加一个元素
    • Memcached::addByKey - 在指定服务器上的一个新的key下增加一个元素
    • Memcached::addServer - 向服务器池中增加一个服务器
    • Memcached::addServers - 向服务器池中增加多台服务器
    • Memcached::append - 向已存在元素后追加数据
    • Memcached::appendByKey - 向指定服务器上已存在元素后追加数据
    • Memcached::cas - 比较并交换值
    • Memcached::casByKey - 在指定服务器上比较并交换值
    • Memcached::decrement - 减小数值元素的值
    • Memcached::decrementByKey - Decrement numeric item's value, stored on a specific server
    • Memcached::delete - 删除一个元素
    • Memcached::deleteByKey - 从指定的服务器删除一个元素
    • Memcached::deleteMulti - Delete multiple items
    • Memcached::deleteMultiByKey - Delete multiple items from a specific server
    • Memcached::fetch - 抓取下一个结果
    • Memcached::fetchAll - 抓取所有剩余的结果
    • Memcached::flush - 作废缓存中的所有元素
    • Memcached::get - 检索一个元素
    • Memcached::getAllKeys - Gets the keys stored on all the servers
    • Memcached::getByKey - 从特定的服务器检索元素
    • Memcached::getDelayed - 请求多个元素
    • Memcached::getDelayedByKey - 从指定的服务器上请求多个元素
    • Memcached::getMulti - 检索多个元素
    • Memcached::getMultiByKey - 从特定服务器检索多个元素
    • Memcached::getOption - 获取Memcached的选项值
    • Memcached::getResultCode - 返回最后一次操作的结果代码
    • Memcached::getResultMessage - 返回最后一次操作的结果描述消息
    • Memcached::getServerByKey - 获取一个key所映射的服务器信息
    • Memcached::getServerList - 获取服务器池中的服务器列表
    • Memcached::getStats - 获取服务器池的统计信息
    • Memcached::getVersion - 获取服务器池中所有服务器的版本信息
    • Memcached::increment - 增加数值元素的值
    • Memcached::incrementByKey - Increment numeric item's value, stored on a specific server
    • Memcached::isPersistent - Check if a persitent connection to memcache is being used
    • Memcached::isPristine - Check if the instance was recently created
    • Memcached::prepend - 向一个已存在的元素前面追加数据
    • Memcached::prependByKey - Prepend data to an existing item on a specific server
    • Memcached::quit - 关闭所有打开的链接。
    • Memcached::replace - 替换已存在key下的元素
    • Memcached::replaceByKey - Replace the item under an existing key on a specific server
    • Memcached::resetServerList - Clears all servers from the server list
    • Memcached::set - 存储一个元素
    • Memcached::setByKey - Store an item on a specific server
    • Memcached::setMulti - 存储多个元素
    • Memcached::setMultiByKey - Store multiple items on a specific server
    • Memcached::setOption - 设置一个memcached选项
    • Memcached::setOptions - Set Memcached options
    • Memcached::setSaslAuthData - Set the credentials to use for authentication
    • Memcached::touch - Set a new expiration on an item
    • Memcached::touchByKey - Set a new expiration on an item on a specific server
    • Memcached::__construct - 创建一个Memcached实例
    • memcache_debug - 转换调试输出的开/关
    • memory_get_peak_usage - 返回分配给 PHP 内存的峰值
    • memory_get_usage - 返回分配给 PHP 的内存量
    • MessageFormatter::create - Constructs a new Message Formatter
    • MessageFormatter::format - Format the message
    • MessageFormatter::formatMessage - Quick format message
    • MessageFormatter::getErrorCode - Get the error code from last operation
    • MessageFormatter::getErrorMessage - Get the error text from the last operation
    • MessageFormatter::getLocale - Get the locale for which the formatter was created.
    • MessageFormatter::getPattern - Get the pattern used by the formatter
    • MessageFormatter::parse - Parse input string according to pattern
    • MessageFormatter::parseMessage - Quick parse input string
    • MessageFormatter::setPattern - Set the pattern used by the formatter
    • metaphone - Calculate the metaphone key of a string
    • method_exists - 检查类的方法是否存在
    • mhash - Computes hash
    • mhash_count - Gets the highest available hash ID
    • mhash_get_block_size - Gets the block size of the specified hash
    • mhash_get_hash_name - Gets the name of the specified hash
    • mhash_keygen_s2k - Generates a key
    • microtime - 返回当前 Unix 时间戳和微秒数
    • mime_content_type - 检测文件的 MIME 类型（已废弃）
    • min - 找出最小值
    • ming_keypress - Returns the action flag for keyPress(char)
    • ming_setcubicthreshold - Set cubic threshold
    • ming_setscale - Set the global scaling factor.
    • ming_setswfcompression - Sets the SWF output compression
    • ming_useconstants - Use constant pool
    • ming_useswfversion - Sets the SWF version
    • mkdir - 新建目录
    • mktime - 取得一个日期的 Unix 时间戳
    • money_format - 将数字格式化成货币字符串
    • Mongo::connectUtil - Connects with a database server
    • Mongo::getPoolSize - Get pool size for connection pools
    • Mongo::getSlave - Returns the address being used by this for slaveOkay reads
    • Mongo::getSlaveOkay - Get slaveOkay setting for this connection
    • Mongo::poolDebug - Returns information about all connection pools.
    • Mongo::setPoolSize - Set the size for future connection pools.
    • Mongo::setSlaveOkay - Change slaveOkay setting for this connection
    • Mongo::switchSlave - Choose a new secondary for slaveOkay reads
    • Mongo::__construct - The __construct purpose
    • MongoBinData::__construct - 创建一个新的二进制数据对象
    • MongoBinData::__toString - 二进制数据对象的字符串表达形式。
    • MongoClient::close - 关闭连接
    • MongoClient::connect - 连接到数据库服务器
    • MongoClient::dropDB - 删除一个数据库 [已废弃]
    • MongoClient::getConnections - 返回所有已打开连接的信息
    • MongoClient::getHosts - 更新所有关联主机的状态信息
    • MongoClient::getReadPreference - 获取此连接的读取首选项
    • MongoClient::getWriteConcern - Get the write concern for this connection
    • MongoClient::killCursor - Kills a specific cursor on the server
    • MongoClient::listDBs - 列出所有有效数据库
    • MongoClient::selectCollection - 获取数据库的文档集
    • MongoClient::selectDB - 获取一个数据库
    • MongoClient::setReadPreference - 为该连接设置读取选项
    • MongoClient::setWriteConcern - Set the write concern for this connection
    • MongoClient::__construct - 创建一个新的数据库连接对象
    • MongoClient::__get - 取得一个数据库
    • MongoClient::__toString - 该连接的字符串表达方式
    • MongoCode::__construct - 创建一个新的代码对象
    • MongoCode::__toString - 返回代码的字符串形式
    • MongoCollection::aggregate - Perform an aggregation using the aggregation framework
    • MongoCollection::aggregateCursor - Execute an aggregation pipeline command and retrieve results through a cursor
    • MongoCollection::batchInsert - Inserts multiple documents into this collection
    • MongoCollection::count - 返回集合中的文档数量
    • MongoCollection::createDBRef - 创建一个数据库引用
    • MongoCollection::createIndex - Creates an index on the specified field(s) if it does not already exist.
    • MongoCollection::deleteIndex - Deletes an index from this collection
    • MongoCollection::deleteIndexes - 删除集合的所有索引
    • MongoCollection::distinct - 获取集合里指定键的不同值的列表。
    • MongoCollection::drop - 删除该集合
    • MongoCollection::ensureIndex - Creates an index on the specified field(s) if it does not already exist.
    • MongoCollection::find - 查询该集合，并返回结果集的 MongoCursor
    • MongoCollection::findAndModify - Update a document and return it
    • MongoCollection::findOne - Queries this collection, returning a single element
    • MongoCollection::getDBRef - Fetches the document pointed to by a database reference
    • MongoCollection::getIndexInfo - Returns information about indexes on this collection
    • MongoCollection::getName - 返回这个集合的名称
    • MongoCollection::getReadPreference - Get the read preference for this collection
    • MongoCollection::getSlaveOkay - Get slaveOkay setting for this collection
    • MongoCollection::getWriteConcern - Get the write concern for this collection
    • MongoCollection::group - Performs an operation similar to SQL's GROUP BY command
    • MongoCollection::insert - 插入文档到集合中
    • MongoCollection::parallelCollectionScan - Returns an array of cursors to iterator over a full collection in parallel
    • MongoCollection::remove - 从集合中删除记录
    • MongoCollection::save - 保存一个文档到集合
    • MongoCollection::setReadPreference - Set the read preference for this collection
    • MongoCollection::setSlaveOkay - Change slaveOkay setting for this collection
    • MongoCollection::setWriteConcern - Set the write concern for this database
    • MongoCollection::toIndexString - Converts keys specifying an index to its identifying string
    • MongoCollection::update - Update records based on a given criteria
    • MongoCollection::validate - Validates this collection
    • MongoCollection::__construct - 创建一个新的集合
    • MongoCollection::__get - Gets a collection
    • MongoCollection::__toString - String representation of this collection
    • MongoCursor::addOption - Adds a top-level key/value pair to a query
    • MongoCursor::awaitData - Sets whether this cursor will wait for a while for a tailable cursor to return more data
    • MongoCursor::batchSize - Limits the number of elements returned in one batch.
    • MongoCursor::count - Counts the number of results for this query
    • MongoCursor::current - Returns the current element
    • MongoCursor::dead - Checks if there are results that have not yet been sent from the database
    • MongoCursor::doQuery - Execute the query.
    • MongoCursor::explain - Return an explanation of the query, often useful for optimization and debugging
    • MongoCursor::fields - Sets the fields for a query
    • MongoCursor::getNext - Advances the cursor to the next result, and returns that result
    • MongoCursor::getReadPreference - Get the read preference for this query
    • MongoCursor::hasNext - Checks if there are any more elements in this cursor
    • MongoCursor::hint - Gives the database a hint about the query
    • MongoCursor::immortal - Sets whether this cursor will timeout
    • MongoCursor::info - Gets information about the cursor's creation and iteration
    • MongoCursor::key - Returns the current result's _id, or its index within the result set
    • MongoCursor::limit - Limits the number of results returned
    • MongoCursor::maxTimeMS - Sets a server-side timeout for this query
    • MongoCursor::next - Advances the cursor to the next result, and returns that result
    • MongoCursor::partial - If this query should fetch partial results from mongos if a shard is down
    • MongoCursor::reset - Clears the cursor
    • MongoCursor::rewind - Returns the cursor to the beginning of the result set
    • MongoCursor::setFlag - Sets arbitrary flags in case there is no method available the specific flag
    • MongoCursor::setReadPreference - Set the read preference for this query
    • MongoCursor::skip - Skips a number of results
    • MongoCursor::slaveOkay - Sets whether this query can be done on a secondary [deprecated]
    • MongoCursor::snapshot - Use snapshot mode for the query
    • MongoCursor::sort - Sorts the results by given fields
    • MongoCursor::tailable - Sets whether this cursor will be left open after fetching the last results
    • MongoCursor::timeout - Sets a client-side timeout for this query
    • MongoCursor::valid - Checks if the cursor is reading a valid result.
    • MongoCursor::__construct - Create a new cursor
    • MongoCursorException::getHost - 遇到该错误的服务器的 hostname
    • MongoDate::toDateTime - Returns a DateTime object representing this date
    • MongoDate::__construct - 创建一个新的日期。
    • MongoDate::__toString - 返回该日期的字符串形式的表达
    • MongoDB::authenticate - 登录到数据库
    • MongoDB::command - 执行一条 Mongo 指令
    • MongoDB::createCollection - 创建一个集合
    • MongoDB::createDBRef - 创建数据库引用
    • MongoDB::drop - 丢弃数据库
    • MongoDB::dropCollection - Drops a collection [deprecated]
    • MongoDB::execute - 在数据库服务器上运行JavaScript
    • MongoDB::forceError - Creates a database error
    • MongoDB::getCollectionInfo - Returns information about collections in this database
    • MongoDB::getCollectionNames - Gets an array of names for all collections in this database
    • MongoDB::getDBRef - Fetches the document pointed to by a database reference
    • MongoDB::getGridFS - Fetches toolkit for dealing with files stored in this database
    • MongoDB::getProfilingLevel - Gets this database's profiling level
    • MongoDB::getReadPreference - Get the read preference for this database
    • MongoDB::getSlaveOkay - Get slaveOkay setting for this database
    • MongoDB::getWriteConcern - Get the write concern for this database
    • MongoDB::lastError - Check if there was an error on the most recent db operation performed
    • MongoDB::listCollections - Gets an array of MongoCollection objects for all collections in this database
    • MongoDB::prevError - Checks for the last error thrown during a database operation
    • MongoDB::repair - Repairs and compacts this database
    • MongoDB::resetError - Clears any flagged errors on the database
    • MongoDB::selectCollection - Gets a collection
    • MongoDB::setProfilingLevel - Sets this database's profiling level
    • MongoDB::setReadPreference - Set the read preference for this database
    • MongoDB::setSlaveOkay - Change slaveOkay setting for this database
    • MongoDB::setWriteConcern - Set the write concern for this database
    • MongoDB::__construct - 选择一个数据库
    • MongoDB::__get - Gets a collection
    • MongoDB::__toString - The name of this database
    • MongoDB context options - MongoDB context option listing
    • MongoDBRef::create - 创建一个新的数据库引用
    • MongoDBRef::get - 获取引用所指向的对象
    • MongoDBRef::isRef - 检测数组是否为数据库引用
    • MongoDB\BSON\Binary::getData - Returns the Binary's data
    • MongoDB\BSON\Binary::getType - Returns the Binary's type
    • MongoDB\BSON\Binary::jsonSerialize - Returns a representation that can be converted to JSON
    • MongoDB\BSON\Binary::serialize - Serialize a Binary
    • MongoDB\BSON\Binary::unserialize - Unserialize a Binary
    • MongoDB\BSON\Binary::__construct - Construct a new Binary
    • MongoDB\BSON\Binary::__toString - Returns the Binary's data
    • MongoDB\BSON\Decimal128::jsonSerialize - Returns a representation that can be converted to JSON
    • MongoDB\BSON\Decimal128::serialize - Serialize a Decimal128
    • MongoDB\BSON\Decimal128::unserialize - Unserialize a Decimal128
    • MongoDB\BSON\Decimal128::__construct - Construct a new Decimal128
    • MongoDB\BSON\Decimal128::__toString - Returns the string representation of this Decimal128
    • MongoDB\BSON\fromJSON - Returns the BSON representation of a JSON value
    • MongoDB\BSON\fromPHP - Returns the BSON representation of a PHP value
    • MongoDB\BSON\Javascript::getCode - Returns the Javascript's code
    • MongoDB\BSON\Javascript::getScope - Returns the Javascript's scope document
    • MongoDB\BSON\Javascript::jsonSerialize - Returns a representation that can be converted to JSON
    • MongoDB\BSON\Javascript::serialize - Serialize a Javascript
    • MongoDB\BSON\Javascript::unserialize - Unserialize a Javascript
    • MongoDB\BSON\Javascript::__construct - Construct a new Javascript
    • MongoDB\BSON\Javascript::__toString - Returns the Javascript's code
    • MongoDB\BSON\MaxKey::jsonSerialize - Returns a representation that can be converted to JSON
    • MongoDB\BSON\MaxKey::serialize - Serialize a MaxKey
    • MongoDB\BSON\MaxKey::unserialize - Unserialize a MaxKey
    • MongoDB\BSON\MaxKey::__construct - Construct a new MaxKey
    • MongoDB\BSON\MinKey::jsonSerialize - Returns a representation that can be converted to JSON
    • MongoDB\BSON\MinKey::serialize - Serialize a MinKey
    • MongoDB\BSON\MinKey::unserialize - Unserialize a MinKey
    • MongoDB\BSON\MinKey::__construct - Construct a new MinKey
    • MongoDB\BSON\ObjectID::getTimestamp - Returns the timestamp component of this ObjectID
    • MongoDB\BSON\ObjectID::jsonSerialize - Returns a representation that can be converted to JSON
    • MongoDB\BSON\ObjectID::serialize - Serialize an ObjectID
    • MongoDB\BSON\ObjectID::unserialize - Unserialize an ObjectID
    • MongoDB\BSON\ObjectID::__construct - Construct a new ObjectID
    • MongoDB\BSON\ObjectID::__toString - Returns the hexidecimal representation of this ObjectID
    • MongoDB\BSON\Regex::getFlags - Returns the Regex's flags
    • MongoDB\BSON\Regex::getPattern - Returns the Regex's pattern
    • MongoDB\BSON\Regex::jsonSerialize - Returns a representation that can be converted to JSON
    • MongoDB\BSON\Regex::serialize - Serialize a Regex
    • MongoDB\BSON\Regex::unserialize - Unserialize a Regex
    • MongoDB\BSON\Regex::__construct - Construct a new Regex
    • MongoDB\BSON\Regex::__toString - Returns the string representation of this Regex
    • MongoDB\BSON\Serializable::bsonSerialize - Provides an array or document to serialize as BSON
    • MongoDB\BSON\Timestamp::jsonSerialize - Returns a representation that can be converted to JSON
    • MongoDB\BSON\Timestamp::serialize - Serialize a Timestamp
    • MongoDB\BSON\Timestamp::unserialize - Unserialize a Timestamp
    • MongoDB\BSON\Timestamp::__construct - Construct a new Timestamp
    • MongoDB\BSON\Timestamp::__toString - Returns the string representation of this Timestamp
    • MongoDB\BSON\toJSON - Returns the JSON representation of a BSON value
    • MongoDB\BSON\toPHP - Returns the PHP representation of a BSON value
    • MongoDB\BSON\Unserializable::bsonUnserialize - Constructs the object from a BSON array or document
    • MongoDB\BSON\UTCDateTime::jsonSerialize - Returns a representation that can be converted to JSON
    • MongoDB\BSON\UTCDateTime::serialize - Serialize a UTCDateTime
    • MongoDB\BSON\UTCDateTime::toDateTime - Returns the DateTime representation of this UTCDateTime
    • MongoDB\BSON\UTCDateTime::unserialize - Unserialize a UTCDateTime
    • MongoDB\BSON\UTCDateTime::__construct - Construct a new UTCDateTime
    • MongoDB\BSON\UTCDateTime::__toString - Returns the string representation of this UTCDateTime
    • MongoDB\Driver\BulkWrite::count - Count number of write operations in the bulk
    • MongoDB\Driver\BulkWrite::delete - Add a delete operation to the bulk
    • MongoDB\Driver\BulkWrite::insert - Add an insert operation to the bulk
    • MongoDB\Driver\BulkWrite::update - Add an update operation to the bulk
    • MongoDB\Driver\BulkWrite::__construct - Create a new BulkWrite
    • MongoDB\Driver\Command::__construct - Create a new Command
    • MongoDB\Driver\Cursor::getId - Returns the ID for this cursor
    • MongoDB\Driver\Cursor::getServer - Returns the server associated with this cursor
    • MongoDB\Driver\Cursor::isDead - Checks if the cursor is still open on the server
    • MongoDB\Driver\Cursor::setTypeMap - Sets a type map to use for BSON unserialization
    • MongoDB\Driver\Cursor::toArray - Returns an array containing all results for this cursor
    • MongoDB\Driver\Cursor::__construct - Create a new Cursor (not used)
    • MongoDB\Driver\CursorId::__construct - Create a new CursorId (not used)
    • MongoDB\Driver\CursorId::__toString - String representation of the cursor ID
    • MongoDB\Driver\Exception\WriteException::getWriteResult - Returns the WriteResult for the failed write operation
    • MongoDB\Driver\Manager::executeBulkWrite - Execute one or more write operations
    • MongoDB\Driver\Manager::executeCommand - Execute a database command
    • MongoDB\Driver\Manager::executeQuery - Execute a database query
    • MongoDB\Driver\Manager::getReadConcern - Return the ReadConcern for the Manager
    • MongoDB\Driver\Manager::getReadPreference - Return the ReadPreference for the Manager
    • MongoDB\Driver\Manager::getServers - Return the servers to which this manager is connected
    • MongoDB\Driver\Manager::getWriteConcern - Return the WriteConcern for the Manager
    • MongoDB\Driver\Manager::selectServer - Select a server matching a read preference
    • MongoDB\Driver\Manager::__construct - Create new MongoDB Manager
    • MongoDB\Driver\Query::__construct - Construct new Query
    • MongoDB\Driver\ReadConcern::bsonSerialize - Returns an object for BSON serialization
    • MongoDB\Driver\ReadConcern::getLevel - Returns the ReadConcern's "level" option
    • MongoDB\Driver\ReadConcern::__construct - Construct immutable ReadConcern
    • MongoDB\Driver\ReadPreference::bsonSerialize - Returns an object for BSON serialization
    • MongoDB\Driver\ReadPreference::getMaxStalenessSeconds - Returns the ReadPreference's "maxStalenessSeconds" option
    • MongoDB\Driver\ReadPreference::getMode - Returns the ReadPreference's "mode" option
    • MongoDB\Driver\ReadPreference::getTagSets - Returns the ReadPreference's "tagSets" option
    • MongoDB\Driver\ReadPreference::__construct - Construct immutable ReadPreference
    • MongoDB\Driver\Server::executeBulkWrite - Execute one or more write operations on this server
    • MongoDB\Driver\Server::executeCommand - Execute a database command on this server
    • MongoDB\Driver\Server::executeQuery - Execute a database query on this server
    • MongoDB\Driver\Server::getHost - Returns the hostname of this server
    • MongoDB\Driver\Server::getInfo - Returns an array of information about this server
    • MongoDB\Driver\Server::getLatency - Returns the latency of this server
    • MongoDB\Driver\Server::getPort - Returns the port on which this server is listening
    • MongoDB\Driver\Server::getTags - Returns an array of tags describing this server in a replica set
    • MongoDB\Driver\Server::getType - Returns an integer denoting the type of this server
    • MongoDB\Driver\Server::isArbiter - Checks if this server is an arbiter member of a replica set
    • MongoDB\Driver\Server::isHidden - Checks if this server is a hidden member of a replica set
    • MongoDB\Driver\Server::isPassive - Checks if this server is a passive member of a replica set
    • MongoDB\Driver\Server::isPrimary - Checks if this server is a primary member of a replica set
    • MongoDB\Driver\Server::isSecondary - Checks if this server is a secondary member of a replica set
    • MongoDB\Driver\Server::__construct - Create a new Server (not used)
    • MongoDB\Driver\WriteConcern::bsonSerialize - Returns an object for BSON serialization
    • MongoDB\Driver\WriteConcern::getJournal - Returns the WriteConcern's "journal" option
    • MongoDB\Driver\WriteConcern::getW - Returns the WriteConcern's "w" option
    • MongoDB\Driver\WriteConcern::getWtimeout - Returns the WriteConcern's "wtimeout" option
    • MongoDB\Driver\WriteConcern::__construct - Construct immutable WriteConcern
    • MongoDB\Driver\WriteConcernError::getCode - Returns the WriteConcernError's error code
    • MongoDB\Driver\WriteConcernError::getInfo - Returns additional metadata for the WriteConcernError
    • MongoDB\Driver\WriteConcernError::getMessage - Returns the WriteConcernError's error message
    • MongoDB\Driver\WriteError::getCode - Returns the WriteError's error code
    • MongoDB\Driver\WriteError::getIndex - Returns the index of the write operation corresponding to this WriteError
    • MongoDB\Driver\WriteError::getInfo - Returns additional metadata for the WriteError
    • MongoDB\Driver\WriteError::getMessage - Returns the WriteError's error message
    • MongoDB\Driver\WriteResult::getDeletedCount - Returns the number of documents deleted
    • MongoDB\Driver\WriteResult::getInsertedCount - Returns the number of documents inserted (excluding upserts)
    • MongoDB\Driver\WriteResult::getMatchedCount - Returns the number of documents selected for update
    • MongoDB\Driver\WriteResult::getModifiedCount - Returns the number of existing documents updated
    • MongoDB\Driver\WriteResult::getServer - Returns the server associated with this write result
    • MongoDB\Driver\WriteResult::getUpsertedCount - Returns the number of documents inserted by an upsert
    • MongoDB\Driver\WriteResult::getUpsertedIds - Returns an array of identifiers for upserted documents
    • MongoDB\Driver\WriteResult::getWriteConcernError - Returns any write concern error that occurred
    • MongoDB\Driver\WriteResult::getWriteErrors - Returns any write errors that occurred
    • MongoDB\Driver\WriteResult::isAcknowledged - Returns whether the write was acknowledged
    • MongoGridFS::delete - Remove a file and its chunks from the database
    • MongoGridFS::drop - Drops the files and chunks collections
    • MongoGridFS::find - Queries for files
    • MongoGridFS::findOne - Returns a single file matching the criteria
    • MongoGridFS::get - Retrieve a file from the database
    • MongoGridFS::put - Stores a file in the database
    • MongoGridFS::remove - Remove files and their chunks from the database
    • MongoGridFS::storeBytes - Stores a string of bytes in the database
    • MongoGridFS::storeFile - Stores a file in the database
    • MongoGridFS::storeUpload - Stores an uploaded file in the database
    • MongoGridFS::__construct - Creates new file collections
    • MongoGridFSCursor::current - Returns the current file
    • MongoGridFSCursor::getNext - Return the next file to which this cursor points, and advance the cursor
    • MongoGridFSCursor::key - Returns the current result's filename
    • MongoGridFSCursor::__construct - Create a new cursor
    • MongoGridFSFile::getBytes - Returns this file's contents as a string of bytes
    • MongoGridFSFile::getFilename - Returns this file's filename
    • MongoGridFSFile::getResource - Returns a resource that can be used to read the stored file
    • MongoGridFSFile::getSize - Returns this file's size
    • MongoGridFSFile::write - Writes this file to the filesystem
    • MongoGridfsFile::__construct - Create a new GridFS file
    • MongoId::getHostname - 获取这台机器上 id 所使用的 hostname
    • MongoId::getInc - 返回用于创建 id 所增加的值
    • MongoId::getPID - 获取进程 ID
    • MongoId::getTimestamp - 获取新纪元时间到 id 创建时的秒数。
    • MongoId::isValid - Check if a value is a valid ObjectId
    • MongoId::__construct - 创建一个新的id
    • MongoId::__set_state - 创建一个假的 MongoId
    • MongoId::__toString - 返回该 id 十六进制的表示形式
    • MongoInt32::__construct - 创建一个新的 32位 integer。
    • MongoInt32::__toString - 返回该 32 位 integer 的字符串表示。
    • MongoInt64::__construct - 创建一个新的 64 位 integer。
    • MongoInt64::__toString - 返回该 64 位 integer 的字符串表示形式。
    • MongoLog::getCallback - Gets the previously set callback function
    • MongoLog::getLevel - Gets the level(s) currently being logged
    • MongoLog::getModule - Gets the module(s) currently being logged
    • MongoLog::setCallback - Sets a callback function to be invoked for events
    • MongoLog::setLevel - Sets the level(s) to be logged
    • MongoLog::setModule - Sets the module(s) to be logged
    • MongoPool::getSize - Get pool size for connection pools
    • MongoPool::info - Returns information about all connection pools.
    • MongoPool::setSize - Set the size for future connection pools.
    • MongoRegex::__construct - 创建一个新的正则表达式
    • MongoRegex::__toString - 正则表达式的字符串表达形式
    • MongoResultException::getDocument - 获取完整的结果文档
    • MongoTimestamp::__construct - 创建一个新的时间戳。
    • MongoTimestamp::__toString - 返回时间戳的字符串表示形式
    • MongoWriteConcernException::getDocument - Get the error document
    • move_uploaded_file - 将上传的文件移动到新位置
    • mqseries_back - MQSeries MQBACK
    • mqseries_begin - MQseries MQBEGIN
    • mqseries_close - MQSeries MQCLOSE
    • mqseries_cmit - MQSeries MQCMIT
    • mqseries_conn - MQSeries MQCONN
    • mqseries_connx - MQSeries MQCONNX
    • mqseries_disc - MQSeries MQDISC
    • mqseries_get - MQSeries MQGET
    • mqseries_inq - MQSeries MQINQ
    • mqseries_open - MQSeries MQOPEN
    • mqseries_put - MQSeries MQPUT
    • mqseries_put1 - MQSeries MQPUT1
    • mqseries_set - MQSeries MQSET
    • mqseries_strerror - Returns the error message corresponding to a result code (MQRC).
    • msession_connect - Connect to msession server
    • msession_count - Get session count
    • msession_create - Create a session
    • msession_destroy - Destroy a session
    • msession_disconnect - Close connection to msession server
    • msession_find - Find all sessions with name and value
    • msession_get - Get value from session
    • msession_get_array - Get array of msession variables
    • msession_get_data - Get data session unstructured data
    • msession_inc - Increment value in session
    • msession_list - List all sessions
    • msession_listvar - List sessions with variable
    • msession_lock - Lock a session
    • msession_plugin - Call an escape function within the msession personality plugin
    • msession_randstr - Get random string
    • msession_set - Set value in session
    • msession_set_array - Set msession variables from an array
    • msession_set_data - Set data session unstructured data
    • msession_timeout - Set/get session timeout
    • msession_uniq - Get unique id
    • msession_unlock - Unlock a session
    • msg_get_queue - Create or attach to a message queue
    • msg_queue_exists - Check whether a message queue exists
    • msg_receive - Receive a message from a message queue
    • msg_remove_queue - Destroy a message queue
    • msg_send - Send a message to a message queue
    • msg_set_queue - Set information in the message queue data structure
    • msg_stat_queue - Returns information from the message queue data structure
    • msql - Alias of msql_db_query
    • msql_affected_rows - Returns number of affected rows
    • msql_close - Close mSQL connection
    • msql_connect - Open mSQL connection
    • msql_createdb - 别名 msql_create_db
    • msql_create_db - Create mSQL database
    • msql_data_seek - Move internal row pointer
    • msql_dbname - 别名 msql_result
    • msql_db_query - Send mSQL query
    • msql_drop_db - Drop (delete) mSQL database
    • msql_error - Returns error message of last msql call
    • msql_fetch_array - Fetch row as array
    • msql_fetch_field - Get field information
    • msql_fetch_object - Fetch row as object
    • msql_fetch_row - Get row as enumerated array
    • msql_fieldflags - Alias of msql_field_flags
    • msql_fieldlen - Alias of msql_field_len
    • msql_fieldname - Alias of msql_field_name
    • msql_fieldtable - Alias of msql_field_table
    • msql_fieldtype - Alias of msql_field_type
    • msql_field_flags - Get field flags
    • msql_field_len - Get field length
    • msql_field_name - Get the name of the specified field in a result
    • msql_field_seek - Set field offset
    • msql_field_table - Get table name for field
    • msql_field_type - Get field type
    • msql_free_result - Free result memory
    • msql_list_dbs - List mSQL databases on server
    • msql_list_fields - List result fields
    • msql_list_tables - List tables in an mSQL database
    • msql_numfields - Alias of msql_num_fields
    • msql_numrows - Alias of msql_num_rows
    • msql_num_fields - Get number of fields in result
    • msql_num_rows - Get number of rows in result
    • msql_pconnect - Open persistent mSQL connection
    • msql_query - Send mSQL query
    • msql_regcase - Alias of sql_regcase
    • msql_result - Get result data
    • msql_select_db - Select mSQL database
    • msql_tablename - Alias of msql_result
    • mssql_bind - Adds a parameter to a stored procedure or a remote stored procedure
    • mssql_close - 关闭MS SQL Server链接
    • mssql_connect - 打开MS SQL server链接
    • mssql_data_seek - Moves internal row pointer
    • mssql_execute - Executes a stored procedure on a MS SQL server database
    • mssql_fetch_array - Fetch a result row as an associative array, a numeric array, or both
    • mssql_fetch_assoc - Returns an associative array of the current row in the result
    • mssql_fetch_batch - Returns the next batch of records
    • mssql_fetch_field - Get field information
    • mssql_fetch_object - Fetch row as object
    • mssql_fetch_row - Get row as enumerated array
    • mssql_field_length - Get the length of a field
    • mssql_field_name - Get the name of a field
    • mssql_field_seek - Seeks to the specified field offset
    • mssql_field_type - Gets the type of a field
    • mssql_free_result - Free result memory
    • mssql_free_statement - Free statement memory
    • mssql_get_last_message - Returns the last message from the server
    • mssql_guid_string - Converts a 16 byte binary GUID to a string
    • mssql_init - Initializes a stored procedure or a remote stored procedure
    • mssql_min_error_severity - Sets the minimum error severity
    • mssql_min_message_severity - Sets the minimum message severity
    • mssql_next_result - Move the internal result pointer to the next result
    • mssql_num_fields - Gets the number of fields in result
    • mssql_num_rows - Gets the number of rows in result
    • mssql_pconnect - Open persistent MS SQL connection
    • mssql_query - Send MS SQL query
    • mssql_result - Get result data
    • mssql_rows_affected - Returns the number of records affected by the query
    • mssql_select_db - Select MS SQL database
    • mt_getrandmax - 显示随机数的最大可能值
    • mt_rand - 生成更好的随机数
    • mt_srand - 播下一个更好的随机数发生器种子
    • MultipleIterator::attachIterator - Attaches iterator information
    • MultipleIterator::containsIterator - Checks if an iterator is attached
    • MultipleIterator::countIterators - Gets the number of attached iterator instances
    • MultipleIterator::current - Gets the registered iterator instances
    • MultipleIterator::detachIterator - Detaches an iterator
    • MultipleIterator::getFlags - Gets the flag information
    • MultipleIterator::key - Gets the registered iterator instances
    • MultipleIterator::next - Moves all attached iterator instances forward
    • MultipleIterator::rewind - Rewinds all attached iterator instances
    • MultipleIterator::setFlags - Sets flags
    • MultipleIterator::valid - Checks the validity of sub iterators
    • MultipleIterator::__construct - Constructs a new MultipleIterator
    • Mutex::create - 创建一个互斥量
    • Mutex::destroy - 销毁互斥量
    • Mutex::lock - 给互斥量加锁
    • Mutex::trylock - 尝试给互斥量加锁
    • Mutex::unlock - 释放互斥量上的锁
    • mysqli::$affected_rows - Gets the number of affected rows in a previous MySQL operation
    • mysqli::$client_info - Get MySQL client info
    • mysqli::$connect_errno - Returns the error code from last connect call
    • mysqli::$connect_error - Returns a string description of the last connect error
    • mysqli::$error - Returns a string description of the last error
    • mysqli::$error_list - Returns a list of errors from the last command executed
    • mysqli::$field_count - Returns the number of columns for the most recent query
    • mysqli::$host_info - 返回一个表述使用的连接类型的字符串
    • mysqli::$info - Retrieves information about the most recently executed query
    • mysqli::$insert_id - Returns the auto generated id used in the latest query
    • mysqli::$protocol_version - 返回MySQL使用的协议版本号
    • mysqli::$server_info - 返回MySQL服务器的版本号
    • mysqli::$server_version - 作为一个整数返回MySQL服务器的版本
    • mysqli::$sqlstate - Returns the SQLSTATE error from previous MySQL operation
    • mysqli::$thread_id - Returns the thread ID for the current connection
    • mysqli::$warning_count - Returns the number of warnings from the last query for the given link
    • mysqli::autocommit - 打开或关闭本次数据库连接的自动命令提交事务模式
    • mysqli::begin_transaction - Starts a transaction
    • mysqli::change_user - Changes the user of the specified database connection
    • mysqli::character_set_name - 返回当前数据库连接的默认字符编码
    • mysqli::close - 关闭先前打开的数据库连接
    • mysqli::commit - 提交一个事务
    • mysqli::debug - Performs debugging operations
    • mysqli::disable_reads_from_master - Disable reads from master
    • mysqli::dump_debug_info - 将调试信息输出到日志
    • mysqli::errno - 返回最近函数调用的错误代码
    • mysqli::get_charset - Returns a character set object
    • mysqli::get_client_info - Get MySQL client info
    • mysqli::get_connection_stats - Returns statistics about the client connection
    • mysqli::get_warnings - Get result of SHOW WARNINGS
    • mysqli::init - Initializes MySQLi and returns a resource for use with mysqli_real_connect()
    • mysqli::kill - Asks the server to kill a MySQL thread
    • mysqli::more_results - Check if there are any more query results from a multi query
    • mysqli::multi_query - Performs a query on the database
    • mysqli::next_result - Prepare next result from multi_query
    • mysqli::options - Set options
    • mysqli::ping - Pings a server connection, or tries to reconnect if the connection has gone down
    • mysqli::poll - Poll connections
    • mysqli::prepare - Prepare an SQL statement for execution
    • mysqli::query - 对数据库执行一次查询
    • mysqli::real_connect - 建立一个 MySQL 服务器连接
    • mysqli::real_escape_string - Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection
    • mysqli::real_query - 执行一个mysql查询
    • mysqli::reap_async_query - Get result from async query
    • mysqli::refresh - Refreshes
    • mysqli::release_savepoint - Removes the named savepoint from the set of savepoints of the current transaction
    • mysqli::rollback - 回退当前事务
    • mysqli::rpl_query_type - Returns RPL query type
    • mysqli::savepoint - Set a named transaction savepoint
    • mysqli::select_db - 选择用于数据库查询的默认数据库
    • mysqli::send_query - 发送请求并返回结果
    • mysqli::set_charset - 设置默认字符编码
    • mysqli::set_local_infile_default - Unsets user defined handler for load local infile command
    • mysqli::set_local_infile_handler - Set callback function for LOAD DATA LOCAL INFILE command
    • mysqli::ssl_set - Used for establishing secure connections using SSL
    • mysqli::stat - Gets the current system status
    • mysqli::stmt_init - 初始化一条语句并返回一个用于mysqli_stmt_prepare(调用)的对象
    • mysqli::store_result - Transfers a result set from the last query
    • mysqli::thread_safe - 返回是否是线程安全的
    • mysqli::use_result - Initiate a result set retrieval
    • mysqli::__construct - Open a new connection to the MySQL server
    • mysqli_bind_param - mysqli_stmt_bind_param的别名
    • mysqli_bind_result - mysqli_stmt_bind_result的别名
    • mysqli_client_encoding - mysqli_character_set_name的别名
    • mysqli_connect - 别名 mysqli::__construct
    • mysqli_disable_rpl_parse - 禁用RPL解析
    • mysqli_driver::$report_mode - Enables or disables internal report functions
    • mysqli_driver::embedded_server_end - Stop embedded server
    • mysqli_driver::embedded_server_start - Initialize and start embedded server
    • mysqli_enable_reads_from_master - 开启从主机读取
    • mysqli_enable_rpl_parse - 开启RPL解析
    • mysqli_escape_string - 别名 mysqli_real_escape_string
    • mysqli_execute - mysqli_stmt_execute的别名
    • mysqli_fetch - mysqli_stmt_fetch的别名。
    • mysqli_get_cache_stats - 返回客户端Zval缓存统计信息
    • mysqli_get_client_stats - Returns client per-process statistics
    • mysqli_get_client_version - 作为一个整数返回MySQL客户端的版本
    • mysqli_get_links_stats - 返回打开和缓存的链接相关信息
    • mysqli_get_metadata - mysqli_stmt_result_metadata的别名
    • mysqli_master_query - 在主/从机制中强制在主机中执行一个查询
    • mysqli_param_count - mysqli_stmt_param_count的别名
    • mysqli_report - 开启或禁用（Mysql）内部（错误）报告函数
    • mysqli_result::$current_field - Get current field offset of a result pointer
    • mysqli_result::$field_count - Get the number of fields in a result
    • mysqli_result::$lengths - Returns the lengths of the columns of the current row in the result set
    • mysqli_result::$num_rows - Gets the number of rows in a result
    • mysqli_result::data_seek - Adjusts the result pointer to an arbitrary row in the result
    • mysqli_result::fetch_all - Fetches all result rows as an associative array, a numeric array, or both
    • mysqli_result::fetch_array - Fetch a result row as an associative, a numeric array, or both
    • mysqli_result::fetch_assoc - Fetch a result row as an associative array
    • mysqli_result::fetch_field - Returns the next field in the result set
    • mysqli_result::fetch_fields - Returns an array of objects representing the fields in a result set
    • mysqli_result::fetch_field_direct - Fetch meta-data for a single field
    • mysqli_result::fetch_object - Returns the current row of a result set as an object
    • mysqli_result::fetch_row - Get a result row as an enumerated array
    • mysqli_result::field_seek - Set result pointer to a specified field offset
    • mysqli_result::free - Frees the memory associated with a result
    • mysqli_rpl_parse_enabled - 检查是否开启了RPL解析
    • mysqli_rpl_probe - RPL探测
    • mysqli_send_long_data - mysqli_stmt_send_long_data的别名
    • mysqli_set_opt - mysqli_options的别名
    • mysqli_slave_query - 在主/从机制中强制在从机上执行一个查询
    • mysqli_stmt::$affected_rows - Returns the total number of rows changed, deleted, or inserted by the last executed statement
    • mysqli_stmt::$errno - Returns the error code for the most recent statement call
    • mysqli_stmt::$error - Returns a string description for last statement error
    • mysqli_stmt::$error_list - Returns a list of errors from the last statement executed
    • mysqli_stmt::$field_count - Returns the number of field in the given statement
    • mysqli_stmt::$insert_id - Get the ID generated from the previous INSERT operation
    • mysqli_stmt::$num_rows - Return the number of rows in statements result set
    • mysqli_stmt::$param_count - Returns the number of parameter for the given statement
    • mysqli_stmt::$sqlstate - Returns SQLSTATE error from previous statement operation
    • mysqli_stmt::attr_get - Used to get the current value of a statement attribute
    • mysqli_stmt::attr_set - Used to modify the behavior of a prepared statement
    • mysqli_stmt::bind_param - Binds variables to a prepared statement as parameters
    • mysqli_stmt::bind_result - Binds variables to a prepared statement for result storage
    • mysqli_stmt::close - Closes a prepared statement
    • mysqli_stmt::data_seek - Seeks to an arbitrary row in statement result set
    • mysqli_stmt::execute - Executes a prepared Query
    • mysqli_stmt::fetch - Fetch results from a prepared statement into the bound variables
    • mysqli_stmt::free_result - Frees stored result memory for the given statement handle
    • mysqli_stmt::get_result - Gets a result set from a prepared statement
    • mysqli_stmt::get_warnings - Get result of SHOW WARNINGS
    • mysqli_stmt::more_results - Check if there are more query results from a multiple query
    • mysqli_stmt::next_result - Reads the next result from a multiple query
    • mysqli_stmt::prepare - Prepare an SQL statement for execution
    • mysqli_stmt::reset - Resets a prepared statement
    • mysqli_stmt::result_metadata - Returns result set metadata from a prepared statement
    • mysqli_stmt::send_long_data - Send data in blocks
    • mysqli_stmt::store_result - Transfers a result set from a prepared statement
    • mysqli_stmt::__construct - Constructs a new mysqli_stmt object
    • mysqli_warning::next - The next purpose
    • mysqli_warning::__construct - The __construct purpose
    • MysqlndUhConnection::changeUser - Changes the user of the specified mysqlnd database connection
    • MysqlndUhConnection::charsetName - Returns the default character set for the database connection
    • MysqlndUhConnection::close - Closes a previously opened database connection
    • MysqlndUhConnection::connect - Open a new connection to the MySQL server
    • MysqlndUhConnection::endPSession - End a persistent connection
    • MysqlndUhConnection::escapeString - Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection
    • MysqlndUhConnection::getAffectedRows - Gets the number of affected rows in a previous MySQL operation
    • MysqlndUhConnection::getErrorNumber - Returns the error code for the most recent function call
    • MysqlndUhConnection::getErrorString - Returns a string description of the last error
    • MysqlndUhConnection::getFieldCount - Returns the number of columns for the most recent query
    • MysqlndUhConnection::getHostInformation - Returns a string representing the type of connection used
    • MysqlndUhConnection::getLastInsertId - Returns the auto generated id used in the last query.
    • MysqlndUhConnection::getLastMessage - Retrieves information about the most recently executed query
    • MysqlndUhConnection::getProtocolInformation - Returns the version of the MySQL protocol used
    • MysqlndUhConnection::getServerInformation - Returns the version of the MySQL server
    • MysqlndUhConnection::getServerStatistics - Gets the current system status
    • MysqlndUhConnection::getServerVersion - Returns the version of the MySQL server as an integer
    • MysqlndUhConnection::getSqlstate - Returns the SQLSTATE error from previous MySQL operation
    • MysqlndUhConnection::getStatistics - Returns statistics about the client connection.
    • MysqlndUhConnection::getThreadId - Returns the thread ID for the current connection
    • MysqlndUhConnection::getWarningCount - Returns the number of warnings from the last query for the given link
    • MysqlndUhConnection::init - Initialize mysqlnd connection
    • MysqlndUhConnection::killConnection - Asks the server to kill a MySQL thread
    • MysqlndUhConnection::listFields - List MySQL table fields
    • MysqlndUhConnection::listMethod - Wrapper for assorted list commands
    • MysqlndUhConnection::moreResults - Check if there are any more query results from a multi query
    • MysqlndUhConnection::nextResult - Prepare next result from multi_query
    • MysqlndUhConnection::ping - Pings a server connection, or tries to reconnect if the connection has gone down
    • MysqlndUhConnection::query - Performs a query on the database
    • MysqlndUhConnection::queryReadResultsetHeader - Read a result set header
    • MysqlndUhConnection::reapQuery - Get result from async query
    • MysqlndUhConnection::refreshServer - Flush or reset tables and caches
    • MysqlndUhConnection::restartPSession - Restart a persistent mysqlnd connection
    • MysqlndUhConnection::selectDb - Selects the default database for database queries
    • MysqlndUhConnection::sendClose - Sends a close command to MySQL
    • MysqlndUhConnection::sendQuery - Sends a query to MySQL
    • MysqlndUhConnection::serverDumpDebugInformation - Dump debugging information into the log for the MySQL server
    • MysqlndUhConnection::setAutocommit - Turns on or off auto-committing database modifications
    • MysqlndUhConnection::setCharset - Sets the default client character set
    • MysqlndUhConnection::setClientOption - Sets a client option
    • MysqlndUhConnection::setServerOption - Sets a server option
    • MysqlndUhConnection::shutdownServer - The shutdownServer purpose
    • MysqlndUhConnection::simpleCommand - Sends a basic COM_* command
    • MysqlndUhConnection::simpleCommandHandleResponse - Process a response for a basic COM_* command send to the client
    • MysqlndUhConnection::sslSet - Used for establishing secure connections using SSL
    • MysqlndUhConnection::stmtInit - Initializes a statement and returns a resource for use with mysqli_statement::prepare
    • MysqlndUhConnection::storeResult - Transfers a result set from the last query
    • MysqlndUhConnection::txCommit - Commits the current transaction
    • MysqlndUhConnection::txRollback - Rolls back current transaction
    • MysqlndUhConnection::useResult - Initiate a result set retrieval
    • MysqlndUhConnection::__construct - The __construct purpose
    • MysqlndUhPreparedStatement::execute - Executes a prepared Query
    • MysqlndUhPreparedStatement::prepare - Prepare an SQL statement for execution
    • MysqlndUhPreparedStatement::__construct - The __construct purpose
    • mysqlnd_memcache_get_config - Returns information about the plugin configuration
    • mysqlnd_memcache_set - Associate a MySQL connection with a Memcache connection
    • mysqlnd_ms_dump_servers - Returns a list of currently configured servers
    • mysqlnd_ms_fabric_select_global - Switch to global sharding server for a given table
    • mysqlnd_ms_fabric_select_shard - Switch to shard
    • mysqlnd_ms_get_last_gtid - 返回最后的全局同步 ID (GTID)
    • mysqlnd_ms_get_last_used_connection - Returns an array which describes the last used connection
    • mysqlnd_ms_get_stats - Returns query distribution and connection statistics
    • mysqlnd_ms_match_wild - Finds whether a table name matches a wildcard pattern or not
    • mysqlnd_ms_query_is_select - 查询给定的 SQL 会发送给 master、slave 还是最后使用的 MySQL server 执行。
    • mysqlnd_ms_set_qos - Sets the quality of service needed from the cluster
    • mysqlnd_ms_set_user_pick_server - Sets a callback for user-defined read/write splitting
    • mysqlnd_ms_xa_begin - Starts a distributed/XA transaction among MySQL servers
    • mysqlnd_ms_xa_commit - Commits a distributed/XA transaction among MySQL servers
    • mysqlnd_ms_xa_gc - Garbage collects unfinished XA transactions after severe errors
    • mysqlnd_ms_xa_rollback - Rolls back a distributed/XA transaction among MySQL servers
    • mysqlnd_qc_clear_cache - Flush all cache contents
    • mysqlnd_qc_get_available_handlers - Returns a list of available storage handler
    • mysqlnd_qc_get_cache_info - Returns information on the current handler, the number of cache entries and cache entries, if available
    • mysqlnd_qc_get_core_stats - Statistics collected by the core of the query cache
    • mysqlnd_qc_get_normalized_query_trace_log - Returns a normalized query trace log for each query inspected by the query cache
    • mysqlnd_qc_get_query_trace_log - Returns a backtrace for each query inspected by the query cache
    • mysqlnd_qc_set_cache_condition - Set conditions for automatic caching
    • mysqlnd_qc_set_is_select - Installs a callback which decides whether a statement is cached
    • mysqlnd_qc_set_storage_handler - Change current storage handler
    • mysqlnd_qc_set_user_handlers - Sets the callback functions for a user-defined procedural storage handler
    • mysqlnd_uh_convert_to_mysqlnd - Converts a MySQL connection handle into a mysqlnd connection handle
    • mysqlnd_uh_set_connection_proxy - Installs a proxy for mysqlnd connections
    • mysqlnd_uh_set_statement_proxy - Installs a proxy for mysqlnd statements
    • mysql_affected_rows - 取得前一次 MySQL 操作所影响的记录行数
    • mysql_client_encoding - 返回字符集的名称
    • mysql_close - 关闭 MySQL 连接
    • mysql_connect - 打开一个到 MySQL 服务器的连接
    • mysql_create_db - 新建一个 MySQL 数据库
    • mysql_data_seek - 移动内部结果的指针
    • mysql_db_name - 取得结果数据
    • mysql_db_query - 发送一条 MySQL 查询
    • mysql_drop_db - 丢弃（删除）一个 MySQL 数据库
    • mysql_errno - 返回上一个 MySQL 操作中的错误信息的数字编码
    • mysql_error - 返回上一个 MySQL 操作产生的文本错误信息
    • mysql_escape_string - 转义一个字符串用于 mysql_query
    • mysql_fetch_array - 从结果集中取得一行作为关联数组，或数字数组，或二者兼有
    • mysql_fetch_assoc - 从结果集中取得一行作为关联数组
    • mysql_fetch_field - 从结果集中取得列信息并作为对象返回
    • mysql_fetch_lengths - 取得结果集中每个输出的长度
    • mysql_fetch_object - 从结果集中取得一行作为对象
    • mysql_fetch_row - 从结果集中取得一行作为枚举数组
    • mysql_field_flags - 从结果中取得和指定字段关联的标志
    • mysql_field_len - 返回指定字段的长度
    • mysql_field_name - 取得结果中指定字段的字段名
    • mysql_field_seek - 将结果集中的指针设定为制定的字段偏移量
    • mysql_field_table - 取得指定字段所在的表名
    • mysql_field_type - 取得结果集中指定字段的类型
    • mysql_free_result - 释放结果内存
    • mysql_get_client_info - 取得 MySQL 客户端信息
    • mysql_get_host_info - 取得 MySQL 主机信息
    • mysql_get_proto_info - 取得 MySQL 协议信息
    • mysql_get_server_info - 取得 MySQL 服务器信息
    • mysql_info - 取得最近一条查询的信息
    • mysql_insert_id - 取得上一步 INSERT 操作产生的 ID
    • mysql_list_dbs - 列出 MySQL 服务器中所有的数据库
    • mysql_list_fields - 列出 MySQL 结果中的字段
    • mysql_list_processes - 列出 MySQL 进程
    • mysql_list_tables - 列出 MySQL 数据库中的表
    • mysql_num_fields - 取得结果集中字段的数目
    • mysql_num_rows - 取得结果集中行的数目
    • mysql_pconnect - 打开一个到 MySQL 服务器的持久连接
    • mysql_ping - Ping 一个服务器连接，如果没有连接则重新连接
    • mysql_query - 发送一条 MySQL 查询
    • mysql_real_escape_string - 转义 SQL 语句中使用的字符串中的特殊字符，并考虑到连接的当前字符集
    • mysql_result - 取得结果数据
    • mysql_select_db - 选择 MySQL 数据库
    • mysql_set_charset - 设置客户端的字符集
    • mysql_stat - 取得当前系统状态
    • mysql_tablename - 取得表名
    • mysql_thread_id - 返回当前线程的 ID
    • mysql_unbuffered_query - 向 MySQL 发送一条 SQL 查询，并不获取和缓存结果的行
    • m_checkstatus - Check to see if a transaction has completed
    • m_completeauthorizations - Number of complete authorizations in queue, returning an array of their identifiers
    • m_connect - Establish the connection to MCVE
    • m_connectionerror - Get a textual representation of why a connection failed
    • m_deletetrans - Delete specified transaction from MCVE_CONN structure
    • m_destroyconn - Destroy the connection and MCVE_CONN structure
    • m_destroyengine - Free memory associated with IP/SSL connectivity
    • m_getcell - Get a specific cell from a comma delimited response by column name
    • m_getcellbynum - Get a specific cell from a comma delimited response by column number
    • m_getcommadelimited - Get the RAW comma delimited data returned from MCVE
    • m_getheader - Get the name of the column in a comma-delimited response
    • m_initconn - Create and initialize an MCVE_CONN structure
    • m_initengine - Ready the client for IP/SSL Communication
    • m_iscommadelimited - Checks to see if response is comma delimited
    • m_maxconntimeout - The maximum amount of time the API will attempt a connection to MCVE
    • m_monitor - Perform communication with MCVE (send/receive data) Non-blocking
    • m_numcolumns - Number of columns returned in a comma delimited response
    • m_numrows - Number of rows returned in a comma delimited response
    • m_parsecommadelimited - Parse the comma delimited response so m_getcell, etc will work
    • m_responsekeys - Returns array of strings which represents the keys that can be used for response parameters on this transaction
    • m_responseparam - Get a custom response parameter
    • m_returnstatus - Check to see if the transaction was successful
    • m_setblocking - Set blocking/non-blocking mode for connection
    • m_setdropfile - Set the connection method to Drop-File
    • m_setip - Set the connection method to IP
    • m_setssl - Set the connection method to SSL
    • m_setssl_cafile - Set SSL CA (Certificate Authority) file for verification of server certificate
    • m_setssl_files - Set certificate key files and certificates if server requires client certificate verification
    • m_settimeout - Set maximum transaction time (per trans)
    • m_sslcert_gen_hash - Generate hash for SSL client certificate verification
    • m_transactionssent - Check to see if outgoing buffer is clear
    • m_transinqueue - Number of transactions in client-queue
    • m_transkeyval - Add key/value pair to a transaction. Replaces deprecated transparam()
    • m_transnew - Start a new transaction
    • m_transsend - Finalize and send the transaction
    • m_uwait - Wait x microsecs
    • m_validateidentifier - Whether or not to validate the passed identifier on any transaction it is passed to
    • m_verifyconnection - Set whether or not to PING upon connect to verify connection
    • m_verifysslcert - Set whether or not to verify the server ssl certificate
  • n
    • natcasesort - 用“自然排序”算法对数组进行不区分大小写字母的排序
    • natsort - 用“自然排序”算法对数组排序
    • ncurses_addch - Add character at current position and advance cursor
    • ncurses_addchnstr - Add attributed string with specified length at current position
    • ncurses_addchstr - Add attributed string at current position
    • ncurses_addnstr - Add string with specified length at current position
    • ncurses_addstr - Output text at current position
    • ncurses_assume_default_colors - Define default colors for color 0
    • ncurses_attroff - Turn off the given attributes
    • ncurses_attron - Turn on the given attributes
    • ncurses_attrset - Set given attributes
    • ncurses_baudrate - Returns baudrate of terminal
    • ncurses_beep - Let the terminal beep
    • ncurses_bkgd - Set background property for terminal screen
    • ncurses_bkgdset - Control screen background
    • ncurses_border - Draw a border around the screen using attributed characters
    • ncurses_bottom_panel - Moves a visible panel to the bottom of the stack
    • ncurses_can_change_color - Checks if terminal color definitions can be changed
    • ncurses_cbreak - Switch off input buffering
    • ncurses_clear - Clear screen
    • ncurses_clrtobot - Clear screen from current position to bottom
    • ncurses_clrtoeol - Clear screen from current position to end of line
    • ncurses_color_content - Retrieves RGB components of a color
    • ncurses_color_set - Set active foreground and background colors
    • ncurses_curs_set - Set cursor state
    • ncurses_define_key - Define a keycode
    • ncurses_def_prog_mode - Saves terminals (program) mode
    • ncurses_def_shell_mode - Saves terminals (shell) mode
    • ncurses_delay_output - Delay output on terminal using padding characters
    • ncurses_delch - Delete character at current position, move rest of line left
    • ncurses_deleteln - Delete line at current position, move rest of screen up
    • ncurses_delwin - Delete a ncurses window
    • ncurses_del_panel - Remove panel from the stack and delete it (but not the associated window)
    • ncurses_doupdate - Write all prepared refreshes to terminal
    • ncurses_echo - Activate keyboard input echo
    • ncurses_echochar - Single character output including refresh
    • ncurses_end - Stop using ncurses, clean up the screen
    • ncurses_erase - Erase terminal screen
    • ncurses_erasechar - Returns current erase character
    • ncurses_filter - Set LINES for iniscr() and newterm() to 1
    • ncurses_flash - Flash terminal screen (visual bell)
    • ncurses_flushinp - Flush keyboard input buffer
    • ncurses_getch - Read a character from keyboard
    • ncurses_getmaxyx - Returns the size of a window
    • ncurses_getmouse - Reads mouse event
    • ncurses_getyx - Returns the current cursor position for a window
    • ncurses_halfdelay - Put terminal into halfdelay mode
    • ncurses_has_colors - Checks if terminal has color capabilities
    • ncurses_has_ic - Check for insert- and delete-capabilities
    • ncurses_has_il - Check for line insert- and delete-capabilities
    • ncurses_has_key - Check for presence of a function key on terminal keyboard
    • ncurses_hide_panel - Remove panel from the stack, making it invisible
    • ncurses_hline - Draw a horizontal line at current position using an attributed character and max. n characters long
    • ncurses_inch - Get character and attribute at current position
    • ncurses_init - Initialize ncurses
    • ncurses_init_color - Define a terminal color
    • ncurses_init_pair - Define a color pair
    • ncurses_insch - Insert character moving rest of line including character at current position
    • ncurses_insdelln - Insert lines before current line scrolling down (negative numbers delete and scroll up)
    • ncurses_insertln - Insert a line, move rest of screen down
    • ncurses_insstr - Insert string at current position, moving rest of line right
    • ncurses_instr - Reads string from terminal screen
    • ncurses_isendwin - Ncurses is in endwin mode, normal screen output may be performed
    • ncurses_keyok - Enable or disable a keycode
    • ncurses_keypad - Turns keypad on or off
    • ncurses_killchar - Returns current line kill character
    • ncurses_longname - Returns terminals description
    • ncurses_meta - Enables/Disable 8-bit meta key information
    • ncurses_mouseinterval - Set timeout for mouse button clicks
    • ncurses_mousemask - Sets mouse options
    • ncurses_mouse_trafo - Transforms coordinates
    • ncurses_move - Move output position
    • ncurses_move_panel - Moves a panel so that its upper-left corner is at [startx, starty]
    • ncurses_mvaddch - Move current position and add character
    • ncurses_mvaddchnstr - Move position and add attributed string with specified length
    • ncurses_mvaddchstr - Move position and add attributed string
    • ncurses_mvaddnstr - Move position and add string with specified length
    • ncurses_mvaddstr - Move position and add string
    • ncurses_mvcur - Move cursor immediately
    • ncurses_mvdelch - Move position and delete character, shift rest of line left
    • ncurses_mvgetch - Move position and get character at new position
    • ncurses_mvhline - Set new position and draw a horizontal line using an attributed character and max. n characters long
    • ncurses_mvinch - Move position and get attributed character at new position
    • ncurses_mvvline - Set new position and draw a vertical line using an attributed character and max. n characters long
    • ncurses_mvwaddstr - Add string at new position in window
    • ncurses_napms - Sleep
    • ncurses_newpad - Creates a new pad (window)
    • ncurses_newwin - Create a new window
    • ncurses_new_panel - Create a new panel and associate it with window
    • ncurses_nl - Translate newline and carriage return / line feed
    • ncurses_nocbreak - Switch terminal to cooked mode
    • ncurses_noecho - Switch off keyboard input echo
    • ncurses_nonl - Do not translate newline and carriage return / line feed
    • ncurses_noqiflush - Do not flush on signal characters
    • ncurses_noraw - Switch terminal out of raw mode
    • ncurses_pair_content - Retrieves foreground and background colors of a color pair
    • ncurses_panel_above - Returns the panel above panel
    • ncurses_panel_below - Returns the panel below panel
    • ncurses_panel_window - Returns the window associated with panel
    • ncurses_pnoutrefresh - Copies a region from a pad into the virtual screen
    • ncurses_prefresh - Copies a region from a pad into the virtual screen
    • ncurses_putp - Apply padding information to the string and output it
    • ncurses_qiflush - Flush on signal characters
    • ncurses_raw - Switch terminal into raw mode
    • ncurses_refresh - Refresh screen
    • ncurses_replace_panel - Replaces the window associated with panel
    • ncurses_resetty - Restores saved terminal state
    • ncurses_reset_prog_mode - Resets the prog mode saved by def_prog_mode
    • ncurses_reset_shell_mode - Resets the shell mode saved by def_shell_mode
    • ncurses_savetty - Saves terminal state
    • ncurses_scrl - Scroll window content up or down without changing current position
    • ncurses_scr_dump - Dump screen content to file
    • ncurses_scr_init - Initialize screen from file dump
    • ncurses_scr_restore - Restore screen from file dump
    • ncurses_scr_set - Inherit screen from file dump
    • ncurses_show_panel - Places an invisible panel on top of the stack, making it visible
    • ncurses_slk_attr - Returns current soft label key attribute
    • ncurses_slk_attroff - Turn off the given attributes for soft function-key labels
    • ncurses_slk_attron - Turn on the given attributes for soft function-key labels
    • ncurses_slk_attrset - Set given attributes for soft function-key labels
    • ncurses_slk_clear - Clears soft labels from screen
    • ncurses_slk_color - Sets color for soft label keys
    • ncurses_slk_init - Initializes soft label key functions
    • ncurses_slk_noutrefresh - Copies soft label keys to virtual screen
    • ncurses_slk_refresh - Copies soft label keys to screen
    • ncurses_slk_restore - Restores soft label keys
    • ncurses_slk_set - Sets function key labels
    • ncurses_slk_touch - Forces output when ncurses_slk_noutrefresh is performed
    • ncurses_standend - Stop using 'standout' attribute
    • ncurses_standout - Start using 'standout' attribute
    • ncurses_start_color - Initializes color functionality
    • ncurses_termattrs - Returns a logical OR of all attribute flags supported by terminal
    • ncurses_termname - Returns terminals (short)-name
    • ncurses_timeout - Set timeout for special key sequences
    • ncurses_top_panel - Moves a visible panel to the top of the stack
    • ncurses_typeahead - Specify different filedescriptor for typeahead checking
    • ncurses_ungetch - Put a character back into the input stream
    • ncurses_ungetmouse - Pushes mouse event to queue
    • ncurses_update_panels - Refreshes the virtual screen to reflect the relations between panels in the stack
    • ncurses_use_default_colors - Assign terminal default colors to color id -1
    • ncurses_use_env - Control use of environment information about terminal size
    • ncurses_use_extended_names - Control use of extended names in terminfo descriptions
    • ncurses_vidattr - Display the string on the terminal in the video attribute mode
    • ncurses_vline - Draw a vertical line at current position using an attributed character and max. n characters long
    • ncurses_waddch - Adds character at current position in a window and advance cursor
    • ncurses_waddstr - Outputs text at current postion in window
    • ncurses_wattroff - Turns off attributes for a window
    • ncurses_wattron - Turns on attributes for a window
    • ncurses_wattrset - Set the attributes for a window
    • ncurses_wborder - Draws a border around the window using attributed characters
    • ncurses_wclear - Clears window
    • ncurses_wcolor_set - Sets windows color pairings
    • ncurses_werase - Erase window contents
    • ncurses_wgetch - Reads a character from keyboard (window)
    • ncurses_whline - Draws a horizontal line in a window at current position using an attributed character and max. n characters long
    • ncurses_wmouse_trafo - Transforms window/stdscr coordinates
    • ncurses_wmove - Moves windows output position
    • ncurses_wnoutrefresh - Copies window to virtual screen
    • ncurses_wrefresh - Refresh window on terminal screen
    • ncurses_wstandend - End standout mode for a window
    • ncurses_wstandout - Enter standout mode for a window
    • ncurses_wvline - Draws a vertical line in a window at current position using an attributed character and max. n characters long
    • newt_bell - Send a beep to the terminal
    • newt_button - Create a new button
    • newt_button_bar - This function returns a grid containing the buttons created.
    • newt_centered_window - Open a centered window of the specified size
    • newt_checkbox - 说明
    • newt_checkbox_get_value - Retreives value of checkox resource
    • newt_checkbox_set_flags - Configures checkbox resource
    • newt_checkbox_set_value - Sets the value of the checkbox
    • newt_checkbox_tree - 说明
    • newt_checkbox_tree_add_item - Adds new item to the checkbox tree
    • newt_checkbox_tree_find_item - Finds an item in the checkbox tree
    • newt_checkbox_tree_get_current - Returns checkbox tree selected item
    • newt_checkbox_tree_get_entry_value - 说明
    • newt_checkbox_tree_get_multi_selection - 说明
    • newt_checkbox_tree_get_selection - 说明
    • newt_checkbox_tree_multi - 说明
    • newt_checkbox_tree_set_current - 说明
    • newt_checkbox_tree_set_entry - 说明
    • newt_checkbox_tree_set_entry_value - 说明
    • newt_checkbox_tree_set_width - 说明
    • newt_clear_key_buffer - Discards the contents of the terminal's input buffer without waiting for additional input
    • newt_cls - 说明
    • newt_compact_button - 说明
    • newt_component_add_callback - 说明
    • newt_component_takes_focus - 说明
    • newt_create_grid - 说明
    • newt_cursor_off - 说明
    • newt_cursor_on - 说明
    • newt_delay - 说明
    • newt_draw_form - 说明
    • newt_draw_root_text - Displays the string text at the position indicated
    • newt_entry - 说明
    • newt_entry_get_value - 说明
    • newt_entry_set - 说明
    • newt_entry_set_filter - 说明
    • newt_entry_set_flags - 说明
    • newt_finished - Uninitializes newt interface
    • newt_form - Create a form
    • newt_form_add_component - Adds a single component to the form
    • newt_form_add_components - Add several components to the form
    • newt_form_add_hot_key - 说明
    • newt_form_destroy - Destroys a form
    • newt_form_get_current - 说明
    • newt_form_run - Runs a form
    • newt_form_set_background - 说明
    • newt_form_set_height - 说明
    • newt_form_set_size - 说明
    • newt_form_set_timer - 说明
    • newt_form_set_width - 说明
    • newt_form_watch_fd - 说明
    • newt_get_screen_size - Fills in the passed references with the current size of the terminal
    • newt_grid_add_components_to_form - 说明
    • newt_grid_basic_window - 说明
    • newt_grid_free - 说明
    • newt_grid_get_size - 说明
    • newt_grid_h_close_stacked - 说明
    • newt_grid_h_stacked - 说明
    • newt_grid_place - 说明
    • newt_grid_set_field - 说明
    • newt_grid_simple_window - 说明
    • newt_grid_v_close_stacked - 说明
    • newt_grid_v_stacked - 说明
    • newt_grid_wrapped_window - 说明
    • newt_grid_wrapped_window_at - 说明
    • newt_init - Initialize newt
    • newt_label - 说明
    • newt_label_set_text - 说明
    • newt_listbox - 说明
    • newt_listbox_append_entry - 说明
    • newt_listbox_clear - 说明
    • newt_listbox_clear_selection - 说明
    • newt_listbox_delete_entry - 说明
    • newt_listbox_get_current - 说明
    • newt_listbox_get_selection - 说明
    • newt_listbox_insert_entry - 说明
    • newt_listbox_item_count - 说明
    • newt_listbox_select_item - 说明
    • newt_listbox_set_current - 说明
    • newt_listbox_set_current_by_key - 说明
    • newt_listbox_set_data - 说明
    • newt_listbox_set_entry - 说明
    • newt_listbox_set_width - 说明
    • newt_listitem - 说明
    • newt_listitem_get_data - 说明
    • newt_listitem_set - 说明
    • newt_open_window - Open a window of the specified size and position
    • newt_pop_help_line - Replaces the current help line with the one from the stack
    • newt_pop_window - Removes the top window from the display
    • newt_push_help_line - Saves the current help line on a stack, and displays the new line
    • newt_radiobutton - 说明
    • newt_radio_get_current - 说明
    • newt_redraw_help_line - 说明
    • newt_reflow_text - 说明
    • newt_refresh - Updates modified portions of the screen
    • newt_resize_screen - 说明
    • newt_resume - Resume using the newt interface after calling newt_suspend
    • newt_run_form - Runs a form
    • newt_scale - 说明
    • newt_scale_set - 说明
    • newt_scrollbar_set - 说明
    • newt_set_help_callback - 说明
    • newt_set_suspend_callback - Set a callback function which gets invoked when user presses the suspend key
    • newt_suspend - Tells newt to return the terminal to its initial state
    • newt_textbox - 说明
    • newt_textbox_get_num_lines - 说明
    • newt_textbox_reflowed - 说明
    • newt_textbox_set_height - 说明
    • newt_textbox_set_text - 说明
    • newt_vertical_scrollbar - 说明
    • newt_wait_for_key - Doesn't return until a key has been pressed
    • newt_win_choice - 说明
    • newt_win_entries - 说明
    • newt_win_menu - 说明
    • newt_win_message - 说明
    • newt_win_messagev - 说明
    • newt_win_ternary - 说明
    • next - 将数组中的内部指针向前移动一位
    • ngettext - Plural version of gettext
    • nl2br - 在字符串所有新行之前插入 HTML 换行标记
    • nl_langinfo - Query language and locale information
    • NoRewindIterator::current - Get the current value
    • NoRewindIterator::getInnerIterator - Get the inner iterator
    • NoRewindIterator::key - Get the current key
    • NoRewindIterator::next - Forward to the next element
    • NoRewindIterator::rewind - Prevents the rewind operation on the inner iterator.
    • NoRewindIterator::valid - Validates the iterator
    • NoRewindIterator::__construct - Construct a NoRewindIterator
    • Normalizer::isNormalized - Checks if the provided string is already in the specified normalization form.
    • Normalizer::normalize - Normalizes the input provided and returns the normalized string
    • nsapi_request_headers - Fetch all HTTP request headers
    • nsapi_response_headers - Fetch all HTTP response headers
    • nsapi_virtual - Perform an NSAPI sub-request
    • NumberFormatter::create - Create a number formatter
    • NumberFormatter::format - Format a number
    • NumberFormatter::formatCurrency - Format a currency value
    • NumberFormatter::getAttribute - Get an attribute
    • NumberFormatter::getErrorCode - Get formatter's last error code.
    • NumberFormatter::getErrorMessage - Get formatter's last error message.
    • NumberFormatter::getLocale - Get formatter locale
    • NumberFormatter::getPattern - Get formatter pattern
    • NumberFormatter::getSymbol - Get a symbol value
    • NumberFormatter::getTextAttribute - Get a text attribute
    • NumberFormatter::parse - Parse a number
    • NumberFormatter::parseCurrency - Parse a currency number
    • NumberFormatter::setAttribute - Set an attribute
    • NumberFormatter::setPattern - Set formatter pattern
    • NumberFormatter::setSymbol - Set a symbol value
    • NumberFormatter::setTextAttribute - Set a text attribute
    • number_format - 以千位分隔符方式格式化一个数字
  • o
    • OAuth::disableDebug - 关闭详细的调试
    • OAuth::disableRedirects - 关闭重定向
    • OAuth::disableSSLChecks - 关闭 SSL 检查
    • OAuth::enableDebug - 启用详细调试
    • OAuth::enableRedirects - 启用重定向
    • OAuth::enableSSLChecks - 启用 SSL 检查
    • OAuth::fetch - 获取一个 OAuth 受保护的资源
    • OAuth::generateSignature - 生成一个签名
    • OAuth::getAccessToken - 获取一个访问令牌
    • OAuth::getCAPath - 获取 CA 信息
    • OAuth::getLastResponse - 获取最后一次的响应
    • OAuth::getLastResponseHeaders - 获取最后一次响应的头信息
    • OAuth::getLastResponseInfo - 获取关于最后一次响应的 HTTP 信息
    • OAuth::getRequestHeader - 生成 OAuth 头信息字符串签名
    • OAuth::getRequestToken - 获取一个请求令牌
    • OAuth::setAuthType - 设置授权类型
    • OAuth::setCAPath - 设置 CA 路径和信息
    • OAuth::setNonce - 为后续请求设置现时标志
    • OAuth::setRequestEngine - 设置目标请求引擎
    • OAuth::setRSACertificate - 设置 RSA 证书
    • OAuth::setSSLChecks - 调整特定的SSL请求检查
    • OAuth::setTimestamp - 设置时间戳
    • OAuth::setToken - 设置令牌和 secret
    • OAuth::setVersion - 设置 OAuth 版本
    • OAuth::__construct - 新建一个 OAuth 对象
    • OAuth::__destruct - 析构函数
    • OAuthProvider::addRequiredParameter - 添加必需的参数
    • OAuthProvider::callconsumerHandler - 调用 consumerNonceHandler 回调函数
    • OAuthProvider::callTimestampNonceHandler - 调用 timestampNonceHandler 回调函数
    • OAuthProvider::calltokenHandler - 调用 tokenNonceHandler 回调函数
    • OAuthProvider::checkOAuthRequest - 检查一个 oauth 请求
    • OAuthProvider::consumerHandler - 设置 consumerHandler 句柄回调函数
    • OAuthProvider::generateToken - 生成一个随机令牌
    • OAuthProvider::is2LeggedEndpoint - is2LeggedEndpoint
    • OAuthProvider::isRequestTokenEndpoint - 设置 isRequestTokenEndpoint
    • OAuthProvider::removeRequiredParameter - 移除一个必需的参数
    • OAuthProvider::reportProblem - 报告问题
    • OAuthProvider::setParam - 设置一个参数
    • OAuthProvider::setRequestTokenPath - 设置请求令牌路径
    • OAuthProvider::timestampNonceHandler - 设置 timestampNonceHandler 句柄回调函数
    • OAuthProvider::tokenHandler - 设置 tokenHandler 句柄回调函数
    • OAuthProvider::__construct - 新建一个 OAuthProvider 对象
    • oauth_get_sbs - 生成一个签名字符基串
    • oauth_urlencode - 将 URI 编码为 RFC 3986 规范
    • ob_clean - 清空（擦掉）输出缓冲区
    • ob_end_clean - 清空（擦除）缓冲区并关闭输出缓冲
    • ob_end_flush - 冲刷出（送出）输出缓冲区内容并关闭缓冲
    • ob_flush - 冲刷出（送出）输出缓冲区中的内容
    • ob_get_clean - 得到当前缓冲区的内容并删除当前输出缓。
    • ob_get_contents - 返回输出缓冲区的内容
    • ob_get_flush - 刷出（送出）缓冲区内容，以字符串形式返回内容，并关闭输出缓冲区。
    • ob_get_length - 返回输出缓冲区内容的长度
    • ob_get_level - 返回输出缓冲机制的嵌套级别
    • ob_get_status - 得到所有输出缓冲区的状态
    • ob_gzhandler - 在ob_start中使用的用来压缩输出缓冲区中内容的回调函数。ob_start callback function to gzip output buffer
    • ob_iconv_handler - 以输出缓冲处理程序转换字符编码
    • ob_implicit_flush - 打开/关闭绝对刷送
    • ob_list_handlers - 列出所有使用中的输出处理程序。
    • ob_start - 打开输出控制缓冲
    • ob_tidyhandler - ob_start callback function to repair the buffer
    • OCI-Collection::append - Appends element to the collection
    • OCI-Collection::assign - Assigns a value to the collection from another existing collection
    • OCI-Collection::assignElem - Assigns a value to the element of the collection
    • OCI-Collection::free - Frees the resources associated with the collection object
    • OCI-Collection::getElem - Returns value of the element
    • OCI-Collection::max - Returns the maximum number of elements in the collection
    • OCI-Collection::size - Returns size of the collection
    • OCI-Collection::trim - Trims elements from the end of the collection
    • OCI-Lob::append - Appends data from the large object to another large object
    • OCI-Lob::close - Closes LOB descriptor
    • OCI-Lob::eof - Tests for end-of-file on a large object's descriptor
    • OCI-Lob::erase - Erases a specified portion of the internal LOB data
    • OCI-Lob::export - Exports LOB's contents to a file
    • OCI-Lob::flush - Flushes/writes buffer of the LOB to the server
    • OCI-Lob::free - Frees resources associated with the LOB descriptor
    • OCI-Lob::getBuffering - Returns current state of buffering for the large object
    • OCI-Lob::import - Imports file data to the LOB
    • OCI-Lob::load - Returns large object's contents
    • OCI-Lob::read - Reads part of the large object
    • OCI-Lob::rewind - Moves the internal pointer to the beginning of the large object
    • OCI-Lob::save - Saves data to the large object
    • OCI-Lob::saveFile - 别名 OCI-Lob::import
    • OCI-Lob::seek - Sets the internal pointer of the large object
    • OCI-Lob::setBuffering - Changes current state of buffering for the large object
    • OCI-Lob::size - Returns size of large object
    • OCI-Lob::tell - Returns the current position of internal pointer of large object
    • OCI-Lob::truncate - Truncates large object
    • OCI-Lob::write - Writes data to the large object
    • OCI-Lob::writeTemporary - Writes a temporary large object
    • OCI-Lob::writeToFile - 别名 OCI-Lob::export
    • ocibindbyname - 别名 oci_bind_by_name
    • ocicancel - 别名 oci_cancel
    • ocicloselob - 别名 OCI-Lob::close
    • ocicollappend - 别名 OCI-Collection::append
    • ocicollassign - 别名 OCI-Collection::assign
    • ocicollassignelem - 别名 OCI-Collection::assignElem
    • ocicollgetelem - 别名 OCI-Collection::getElem
    • ocicollmax - 别名 OCI-Collection::max
    • ocicollsize - 别名 OCI-Collection::size
    • ocicolltrim - 别名 OCI-Collection::trim
    • ocicolumnisnull - 别名 oci_field_is_null
    • ocicolumnname - 别名 oci_field_name
    • ocicolumnprecision - 别名 oci_field_precision
    • ocicolumnscale - 别名 oci_field_scale
    • ocicolumnsize - 别名 oci_field_size
    • ocicolumntype - 别名 oci_field_type
    • ocicolumntyperaw - 别名 oci_field_type_raw
    • ocicommit - 别名 oci_commit
    • ocidefinebyname - 别名 oci_define_by_name
    • ocierror - 别名 oci_error
    • ociexecute - 别名 oci_execute
    • ocifetch - 别名 oci_fetch
    • ocifetchinto - Obsolete variant of oci_fetch_array, oci_fetch_object, oci_fetch_assoc and oci_fetch_row
    • ocifetchstatement - 别名 oci_fetch_all
    • ocifreecollection - 别名 OCI-Collection::free
    • ocifreecursor - 别名 oci_free_statement
    • ocifreedesc - 别名 OCI-Lob::free
    • ocifreestatement - 别名 oci_free_statement
    • ociinternaldebug - 别名 oci_internal_debug
    • ociloadlob - 别名 OCI-Lob::load
    • ocilogoff - 别名 oci_close
    • ocilogon - 别名 oci_connect
    • ocinewcollection - 别名 oci_new_collection
    • ocinewcursor - 别名 oci_new_cursor
    • ocinewdescriptor - 别名 oci_new_descriptor
    • ocinlogon - 别名 oci_new_connect
    • ocinumcols - 别名 oci_num_fields
    • ociparse - 别名 oci_parse
    • ociplogon - 别名 oci_pconnect
    • ociresult - 别名 oci_result
    • ocirollback - 别名 oci_rollback
    • ocirowcount - 别名 oci_num_rows
    • ocisavelob - 别名 OCI-Lob::save
    • ocisavelobfile - 别名 OCI-Lob::import
    • ociserverversion - 别名 oci_server_version
    • ocisetprefetch - 别名 oci_set_prefetch
    • ocistatementtype - 别名 oci_statement_type
    • ociwritelobtofile - 别名 OCI-Lob::export
    • ociwritetemporarylob - 别名 OCI-Lob::writeTemporary
    • oci_bind_array_by_name - Binds a PHP array to an Oracle PL/SQL array parameter
    • oci_bind_by_name - 绑定一个 PHP 变量到一个 Oracle 位置标志符
    • oci_cancel - 中断游标读取数据
    • oci_client_version - Returns the Oracle client library version
    • oci_close - 关闭 Oracle 连接
    • oci_commit - 提交未执行的事务处理
    • oci_connect - 建立一个到 Oracle 服务器的连接
    • oci_define_by_name - 在 SELECT 中使用 PHP 变量作为定义的步骤
    • oci_error - 返回上一个错误
    • oci_execute - 执行一条语句
    • oci_fetch - Fetches the next row into result-buffer
    • oci_fetch_all - 获取结果数据的所有行到一个数组
    • oci_fetch_array - Returns the next row from a query as an associative or numeric array
    • oci_fetch_assoc - Returns the next row from a query as an associative array
    • oci_fetch_object - Returns the next row from a query as an object
    • oci_fetch_row - Returns the next row from a query as a numeric array
    • oci_field_is_null - 检查字段是否为 NULL
    • oci_field_name - 返回字段名
    • oci_field_precision - 返回字段精度
    • oci_field_scale - 返回字段范围
    • oci_field_size - 返回字段大小
    • oci_field_type - 返回字段的数据类型
    • oci_field_type_raw - 返回字段的原始 Oracle 数据类型
    • oci_free_descriptor - Frees a descriptor
    • oci_free_statement - 释放关联于语句或游标的所有资源
    • oci_get_implicit_resultset - Returns the next child statement resource from a parent statement resource that has Oracle Database 12c Implicit Result Sets
    • oci_internal_debug - 打开或关闭内部调试输出
    • oci_lob_copy - Copies large object
    • oci_lob_is_equal - Compares two LOB/FILE locators for equality
    • oci_new_collection - 分配新的 collection 对象
    • oci_new_connect - 建定一个到 Oracle 服务器的新连接
    • oci_new_cursor - 分配并返回一个新的游标（语句句柄）
    • oci_new_descriptor - 初始化一个新的空 LOB 或 FILE 描述符
    • oci_num_fields - 返回结果列的数目
    • oci_num_rows - 返回语句执行后受影响的行数
    • oci_parse - 配置 Oracle 语句预备执行
    • oci_password_change - 修改 Oracle 用户的密码
    • oci_pconnect - 使用一个持久连接连到 Oracle 数据库
    • oci_result - 返回所取得行中字段的值
    • oci_rollback - 回滚未提交的事务
    • oci_server_version - 返回服务器版本信息
    • oci_set_action - Sets the action name
    • oci_set_client_identifier - Sets the client identifier
    • oci_set_client_info - Sets the client information
    • oci_set_edition - Sets the database edition
    • oci_set_module_name - Sets the module name
    • oci_set_prefetch - 设置预提取行数
    • oci_statement_type - 返回 OCI 语句的类型
    • octdec - 八进制转换为十进制
    • odbc_autocommit - Toggle autocommit behaviour
    • odbc_binmode - Handling of binary column data
    • odbc_close - Close an ODBC connection
    • odbc_close_all - Close all ODBC connections
    • odbc_columnprivileges - Lists columns and associated privileges for the given table
    • odbc_columns - Lists the column names in specified tables
    • odbc_commit - Commit an ODBC transaction
    • odbc_connect - Connect to a datasource
    • odbc_cursor - Get cursorname
    • odbc_data_source - Returns information about a current connection
    • odbc_do - 别名 odbc_exec
    • odbc_error - Get the last error code
    • odbc_errormsg - Get the last error message
    • odbc_exec - Prepare and execute an SQL statement
    • odbc_execute - Execute a prepared statement
    • odbc_fetch_array - Fetch a result row as an associative array
    • odbc_fetch_into - Fetch one result row into array
    • odbc_fetch_object - Fetch a result row as an object
    • odbc_fetch_row - Fetch a row
    • odbc_field_len - Get the length (precision) of a field
    • odbc_field_name - Get the columnname
    • odbc_field_num - Return column number
    • odbc_field_precision - 别名 odbc_field_len
    • odbc_field_scale - Get the scale of a field
    • odbc_field_type - Datatype of a field
    • odbc_foreignkeys - Retrieves a list of foreign keys
    • odbc_free_result - Free resources associated with a result
    • odbc_gettypeinfo - Retrieves information about data types supported by the data source
    • odbc_longreadlen - Handling of LONG columns
    • odbc_next_result - Checks if multiple results are available
    • odbc_num_fields - Number of columns in a result
    • odbc_num_rows - Number of rows in a result
    • odbc_pconnect - Open a persistent database connection
    • odbc_prepare - Prepares a statement for execution
    • odbc_primarykeys - Gets the primary keys for a table
    • odbc_procedurecolumns - Retrieve information about parameters to procedures
    • odbc_procedures - Get the list of procedures stored in a specific data source
    • odbc_result - Get result data
    • odbc_result_all - Print result as HTML table
    • odbc_rollback - Rollback a transaction
    • odbc_setoption - Adjust ODBC settings
    • odbc_specialcolumns - Retrieves special columns
    • odbc_statistics - Retrieve statistics about a table
    • odbc_tableprivileges - Lists tables and the privileges associated with each table
    • odbc_tables - Get the list of table names stored in a specific data source
    • ogg:// - 音频流
    • opcache_compile_file - 无需运行，即可编译并缓存 PHP 脚本
    • opcache_get_configuration - 获取缓存的配置信息
    • opcache_get_status - 获取缓存的状态信息
    • opcache_invalidate - 废除脚本缓存
    • opcache_is_script_cached - Tells whether a script is cached in OPCache
    • opcache_reset - 重置字节码缓存的内容
    • openal_buffer_create - Generate OpenAL buffer
    • openal_buffer_data - Load a buffer with data
    • openal_buffer_destroy - Destroys an OpenAL buffer
    • openal_buffer_get - Retrieve an OpenAL buffer property
    • openal_buffer_loadwav - Load a .wav file into a buffer
    • openal_context_create - Create an audio processing context
    • openal_context_current - Make the specified context current
    • openal_context_destroy - Destroys a context
    • openal_context_process - Process the specified context
    • openal_context_suspend - Suspend the specified context
    • openal_device_close - Close an OpenAL device
    • openal_device_open - Initialize the OpenAL audio layer
    • openal_listener_get - Retrieve a listener property
    • openal_listener_set - Set a listener property
    • openal_source_create - Generate a source resource
    • openal_source_destroy - Destroy a source resource
    • openal_source_get - Retrieve an OpenAL source property
    • openal_source_pause - Pause the source
    • openal_source_play - Start playing the source
    • openal_source_rewind - Rewind the source
    • openal_source_set - Set source property
    • openal_source_stop - Stop playing the source
    • openal_stream - Begin streaming on a source
    • opendir - 打开目录句柄
    • openlog - Open connection to system logger
    • openssl_cipher_iv_length - Gets the cipher iv length
    • openssl_csr_export - Exports a CSR as a string
    • openssl_csr_export_to_file - Exports a CSR to a file
    • openssl_csr_get_public_key - Returns the public key of a CERT
    • openssl_csr_get_subject - Returns the subject of a CERT
    • openssl_csr_new - Generates a CSR
    • openssl_csr_sign - Sign a CSR with another certificate (or itself) and generate a certificate
    • openssl_decrypt - Decrypts data
    • openssl_dh_compute_key - Computes shared secret for public value of remote DH key and local DH key
    • openssl_digest - Computes a digest
    • openssl_encrypt - Encrypts data
    • openssl_error_string - Return openSSL error message
    • openssl_free_key - Free key resource
    • openssl_get_cert_locations - Retrieve the available certificate locations
    • openssl_get_cipher_methods - Gets available cipher methods
    • openssl_get_md_methods - Gets available digest methods
    • openssl_get_privatekey - 别名 openssl_pkey_get_private
    • openssl_get_publickey - 别名 openssl_pkey_get_public
    • openssl_open - Open sealed data
    • openssl_pbkdf2 - Generates a PKCS5 v2 PBKDF2 string, defaults to SHA-1
    • openssl_pkcs7_decrypt - Decrypts an S/MIME encrypted message
    • openssl_pkcs7_encrypt - Encrypt an S/MIME message
    • openssl_pkcs7_sign - Sign an S/MIME message
    • openssl_pkcs7_verify - Verifies the signature of an S/MIME signed message
    • openssl_pkcs12_export - Exports a PKCS#12 Compatible Certificate Store File to variable.
    • openssl_pkcs12_export_to_file - Exports a PKCS#12 Compatible Certificate Store File
    • openssl_pkcs12_read - Parse a PKCS#12 Certificate Store into an array
    • openssl_pkey_export - Gets an exportable representation of a key into a string
    • openssl_pkey_export_to_file - Gets an exportable representation of a key into a file
    • openssl_pkey_free - Frees a private key
    • openssl_pkey_get_details - Returns an array with the key details
    • openssl_pkey_get_private - Get a private key
    • openssl_pkey_get_public - Extract public key from certificate and prepare it for use
    • openssl_pkey_new - Generates a new private key
    • openssl_private_decrypt - Decrypts data with private key
    • openssl_private_encrypt - Encrypts data with private key
    • openssl_public_decrypt - Decrypts data with public key
    • openssl_public_encrypt - Encrypts data with public key
    • openssl_random_pseudo_bytes - Generate a pseudo-random string of bytes
    • openssl_seal - Seal (encrypt) data
    • openssl_sign - Generate signature
    • openssl_spki_export - Exports a valid PEM formatted public key signed public key and challenge
    • openssl_spki_export_challenge - Exports the challenge assoicated with a signed public key and challenge
    • openssl_spki_new - Generate a new signed public key and challenge
    • openssl_spki_verify - Verifies a signed public key and challenge
    • openssl_verify - Verify signature
    • openssl_x509_checkpurpose - Verifies if a certificate can be used for a particular purpose
    • openssl_x509_check_private_key - Checks if a private key corresponds to a certificate
    • openssl_x509_export - Exports a certificate as a string
    • openssl_x509_export_to_file - Exports a certificate to file
    • openssl_x509_fingerprint - Calculates the fingerprint, or digest, of a given X.509 certificate
    • openssl_x509_free - Free certificate resource
    • openssl_x509_parse - Parse an X509 certificate and return the information as an array
    • openssl_x509_read - Parse an X.509 certificate and return a resource identifier for it
    • ord - 返回字符的 ASCII 码值
    • OuterIterator::getInnerIterator - Returns the inner iterator for the current entry.
    • output_add_rewrite_var - 添加URL重写器的值（Add URL rewriter values）
    • output_reset_rewrite_vars - 重设URL重写器的值（Reset URL rewriter values）
    • override_function - Overrides built-in functions
  • p
    • pack - Pack data into binary string
    • ParentIterator::accept - Determines acceptability
    • ParentIterator::getChildren - Return the inner iterator's children contained in a ParentIterator
    • ParentIterator::hasChildren - Check whether the inner iterator's current element has children
    • ParentIterator::next - Move the iterator forward
    • ParentIterator::rewind - Rewind the iterator
    • ParentIterator::__construct - Constructs a ParentIterator
    • parsekit_compile_file - Compile a PHP file and return the resulting op array
    • parsekit_compile_string - Compile a string of PHP code and return the resulting op array
    • parsekit_func_arginfo - Return information regarding function argument(s)
    • parse_ini_file - 解析一个配置文件
    • parse_ini_string - 解析配置字符串
    • parse_str - 将字符串解析成多个变量
    • parse_url - 解析 URL，返回其组成部分
    • passthru - 执行外部程序并且显示原始输出
    • password_get_info - Returns information about the given hash
    • password_hash - 创建密码的哈希（hash）
    • password_needs_rehash - Checks if the given hash matches the given options
    • password_verify - 验证密码是否和哈希匹配
    • pathinfo - 返回文件路径的信息
    • pclose - 关闭进程文件指针
    • pcntl_alarm - 为进程设置一个alarm闹钟信号
    • pcntl_errno - 别名 pcntl_get_last_error
    • pcntl_exec - 在当前进程空间执行指定程序
    • pcntl_fork - 在当前进程当前位置产生分支（子进程）。译注：fork是创建了一个子进程，父进程和子进程 都从fork的位置开始向下继续执行，不同的是父进程执行过程中，得到的fork返回值为子进程 号，而子进程得到的是0。
    • pcntl_getpriority - 获取任意进程的优先级
    • pcntl_get_last_error - Retrieve the error number set by the last pcntl function which failed
    • pcntl_setpriority - 修改任意进程的优先级
    • pcntl_signal - 安装一个信号处理器
    • pcntl_signal_dispatch - 调用等待信号的处理器
    • pcntl_signal_get_handler - Get the current handler for specified signal
    • pcntl_sigprocmask - 设置或检索阻塞信号
    • pcntl_sigtimedwait - 带超时机制的信号等待
    • pcntl_sigwaitinfo - 等待信号
    • pcntl_strerror - Retrieve the system error message associated with the given errno
    • pcntl_wait - 等待或返回fork的子进程状态
    • pcntl_waitpid - 等待或返回fork的子进程状态
    • pcntl_wexitstatus - 返回一个中断的子进程的返回代码
    • pcntl_wifexited - 检查状态代码是否代表一个正常的退出。
    • pcntl_wifsignaled - 检查子进程状态码是否代表由于某个信号而中断
    • pcntl_wifstopped - 检查子进程当前是否已经停止
    • pcntl_wstopsig - 返回导致子进程停止的信号
    • pcntl_wtermsig - 返回导致子进程中断的信号
    • PDF_activate_item - Activate structure element or other content item
    • PDF_add_annotation - Add annotation [deprecated]
    • PDF_add_bookmark - Add bookmark for current page [deprecated]
    • PDF_add_launchlink - Add launch annotation for current page [deprecated]
    • PDF_add_locallink - Add link annotation for current page [deprecated]
    • PDF_add_nameddest - Create named destination
    • PDF_add_note - Set annotation for current page [deprecated]
    • PDF_add_outline - Add bookmark for current page [deprecated]
    • PDF_add_pdflink - Add file link annotation for current page [deprecated]
    • PDF_add_table_cell - Add a cell to a new or existing table
    • PDF_add_textflow - Create Textflow or add text to existing Textflow
    • PDF_add_thumbnail - Add thumbnail for current page
    • PDF_add_weblink - Add weblink for current page [deprecated]
    • PDF_arc - Draw a counterclockwise circular arc segment
    • PDF_arcn - Draw a clockwise circular arc segment
    • PDF_attach_file - Add file attachment for current page [deprecated]
    • PDF_begin_document - Create new PDF file
    • PDF_begin_font - Start a Type 3 font definition
    • PDF_begin_glyph - Start glyph definition for Type 3 font
    • PDF_begin_item - Open structure element or other content item
    • PDF_begin_layer - Start layer
    • PDF_begin_page - Start new page [deprecated]
    • PDF_begin_page_ext - Start new page
    • PDF_begin_pattern - Start pattern definition
    • PDF_begin_template - Start template definition [deprecated]
    • PDF_begin_template_ext - Start template definition
    • PDF_circle - Draw a circle
    • PDF_clip - Clip to current path
    • PDF_close - Close pdf resource [deprecated]
    • PDF_closepath - Close current path
    • PDF_closepath_fill_stroke - Close, fill and stroke current path
    • PDF_closepath_stroke - Close and stroke path
    • PDF_close_image - Close image
    • PDF_close_pdi - Close the input PDF document [deprecated]
    • PDF_close_pdi_page - Close the page handle
    • PDF_concat - Concatenate a matrix to the CTM
    • PDF_continue_text - Output text in next line
    • PDF_create_3dview - Create 3D view
    • PDF_create_action - Create action for objects or events
    • PDF_create_annotation - Create rectangular annotation
    • PDF_create_bookmark - Create bookmark
    • PDF_create_field - Create form field
    • PDF_create_fieldgroup - Create form field group
    • PDF_create_gstate - Create graphics state object
    • PDF_create_pvf - Create PDFlib virtual file
    • PDF_create_textflow - Create textflow object
    • PDF_curveto - Draw Bezier curve
    • PDF_define_layer - Create layer definition
    • PDF_delete - Delete PDFlib object
    • PDF_delete_pvf - Delete PDFlib virtual file
    • PDF_delete_table - Delete table object
    • PDF_delete_textflow - Delete textflow object
    • PDF_encoding_set_char - Add glyph name and/or Unicode value
    • PDF_endpath - End current path
    • PDF_end_document - 关闭 PDF 文件
    • PDF_end_font - Terminate Type 3 font definition
    • PDF_end_glyph - Terminate glyph definition for Type 3 font
    • PDF_end_item - Close structure element or other content item
    • PDF_end_layer - Deactivate all active layers
    • PDF_end_page - Finish page
    • PDF_end_page_ext - Finish page
    • PDF_end_pattern - Finish pattern
    • PDF_end_template - Finish template
    • PDF_fill - Fill current path
    • PDF_fill_imageblock - Fill image block with variable data
    • PDF_fill_pdfblock - Fill PDF block with variable data
    • PDF_fill_stroke - Fill and stroke path
    • PDF_fill_textblock - Fill text block with variable data
    • PDF_findfont - Prepare font for later use [deprecated]
    • PDF_fit_image - Place image or template
    • PDF_fit_pdi_page - Place imported PDF page
    • PDF_fit_table - Place table on page
    • PDF_fit_textflow - Format textflow in rectangular area
    • PDF_fit_textline - Place single line of text
    • PDF_get_apiname - Get name of unsuccessfull API function
    • PDF_get_buffer - Get PDF output buffer
    • PDF_get_errmsg - Get error text
    • PDF_get_errnum - Get error number
    • PDF_get_font - Get font [deprecated]
    • PDF_get_fontname - Get font name [deprecated]
    • PDF_get_fontsize - Font handling [deprecated]
    • PDF_get_image_height - Get image height [deprecated]
    • PDF_get_image_width - Get image width [deprecated]
    • PDF_get_majorversion - Get major version number [deprecated]
    • PDF_get_minorversion - Get minor version number [deprecated]
    • PDF_get_parameter - Get string parameter
    • PDF_get_pdi_parameter - Get PDI string parameter [deprecated]
    • PDF_get_pdi_value - Get PDI numerical parameter [deprecated]
    • PDF_get_value - Get numerical parameter
    • PDF_info_font - Query detailed information about a loaded font
    • PDF_info_matchbox - Query matchbox information
    • PDF_info_table - Retrieve table information
    • PDF_info_textflow - Query textflow state
    • PDF_info_textline - Perform textline formatting and query metrics
    • PDF_initgraphics - Reset graphic state
    • PDF_lineto - Draw a line
    • PDF_load_3ddata - Load 3D model
    • PDF_load_font - Search and prepare font
    • PDF_load_iccprofile - Search and prepare ICC profile
    • PDF_load_image - 打开一个图像文件
    • PDF_makespotcolor - Make spot color
    • PDF_moveto - Set current point
    • PDF_new - Create PDFlib object
    • PDF_open_ccitt - Open raw CCITT image [deprecated]
    • PDF_open_file - Create PDF file [deprecated]
    • PDF_open_gif - Open GIF image [deprecated]
    • PDF_open_image - Use image data [deprecated]
    • PDF_open_image_file - Read image from file [deprecated]
    • PDF_open_jpeg - Open JPEG image [deprecated]
    • PDF_open_memory_image - Open image created with PHP's image functions [not supported]
    • PDF_open_pdi - Open PDF file [deprecated]
    • PDF_open_pdi_document - Prepare a pdi document
    • PDF_open_pdi_page - Prepare a page
    • PDF_open_tiff - Open TIFF image [deprecated]
    • PDF_pcos_get_number - Get value of pCOS path with type number or boolean
    • PDF_pcos_get_stream - Get contents of pCOS path with type stream, fstream, or string
    • PDF_pcos_get_string - Get value of pCOS path with type name, string, or boolean
    • PDF_place_image - Place image on the page [deprecated]
    • PDF_place_pdi_page - Place PDF page [deprecated]
    • PDF_process_pdi - Process imported PDF document
    • PDF_rect - Draw rectangle
    • PDF_restore - Restore graphics state
    • PDF_resume_page - Resume page
    • PDF_rotate - Rotate coordinate system
    • PDF_save - Save graphics state
    • PDF_scale - Scale coordinate system
    • PDF_setcolor - Set fill and stroke color
    • PDF_setdash - Set simple dash pattern
    • PDF_setdashpattern - Set dash pattern
    • PDF_setflat - Set flatness
    • PDF_setfont - Set font
    • PDF_setgray - Set color to gray [deprecated]
    • PDF_setgray_fill - Set fill color to gray [deprecated]
    • PDF_setgray_stroke - Set stroke color to gray [deprecated]
    • PDF_setlinecap - Set linecap parameter
    • PDF_setlinejoin - Set linejoin parameter
    • PDF_setlinewidth - Set line width
    • PDF_setmatrix - Set current transformation matrix
    • PDF_setmiterlimit - Set miter limit
    • PDF_setpolydash - Set complicated dash pattern [deprecated]
    • PDF_setrgbcolor - Set fill and stroke rgb color values [deprecated]
    • PDF_setrgbcolor_fill - Set fill rgb color values [deprecated]
    • PDF_setrgbcolor_stroke - Set stroke rgb color values [deprecated]
    • PDF_set_border_color - Set border color of annotations [deprecated]
    • PDF_set_border_dash - Set border dash style of annotations [deprecated]
    • PDF_set_border_style - Set border style of annotations [deprecated]
    • PDF_set_char_spacing - Set character spacing [deprecated]
    • PDF_set_duration - Set duration between pages [deprecated]
    • PDF_set_gstate - Activate graphics state object
    • PDF_set_horiz_scaling - Set horizontal text scaling [deprecated]
    • PDF_set_info - Fill document info field
    • PDF_set_info_author - Fill the author document info field [deprecated]
    • PDF_set_info_creator - Fill the creator document info field [deprecated]
    • PDF_set_info_keywords - Fill the keywords document info field [deprecated]
    • PDF_set_info_subject - Fill the subject document info field [deprecated]
    • PDF_set_info_title - Fill the title document info field [deprecated]
    • PDF_set_layer_dependency - Define relationships among layers
    • PDF_set_leading - Set distance between text lines [deprecated]
    • PDF_set_parameter - Set string parameter
    • PDF_set_text_matrix - Set text matrix [deprecated]
    • PDF_set_text_pos - Set text position
    • PDF_set_text_rendering - Determine text rendering [deprecated]
    • PDF_set_text_rise - Set text rise [deprecated]
    • PDF_set_value - Set numerical parameter
    • PDF_set_word_spacing - Set spacing between words [deprecated]
    • PDF_shading - Define blend
    • PDF_shading_pattern - Define shading pattern
    • PDF_shfill - Fill area with shading
    • PDF_show - Output text at current position
    • PDF_show_boxed - Output text in a box [deprecated]
    • PDF_show_xy - Output text at given position
    • PDF_skew - Skew the coordinate system
    • PDF_stringwidth - Return width of text
    • PDF_stroke - Stroke path
    • PDF_suspend_page - Suspend page
    • PDF_translate - Set origin of coordinate system
    • PDF_utf8_to_utf16 - Convert string from UTF-8 to UTF-16
    • PDF_utf16_to_utf8 - Convert string from UTF-16 to UTF-8
    • PDF_utf32_to_utf16 - Convert string from UTF-32 to UTF-16
    • PDO::beginTransaction - 启动一个事务
    • PDO::commit - 提交一个事务
    • PDO::cubrid_schema - Get the requested schema information
    • PDO::errorCode - 获取跟数据库句柄上一次操作相关的 SQLSTATE
    • PDO::errorInfo - Fetch extended error information associated with the last operation on the database handle
    • PDO::exec - 执行一条 SQL 语句，并返回受影响的行数
    • PDO::getAttribute - 取回一个数据库连接的属性
    • PDO::getAvailableDrivers - 返回一个可用驱动的数组
    • PDO::inTransaction - 检查是否在一个事务内
    • PDO::lastInsertId - 返回最后插入行的ID或序列值
    • PDO::pgsqlCopyFromArray - Copy data from PHP array into table
    • PDO::pgsqlCopyFromFile - Copy data from file into table
    • PDO::pgsqlCopyToArray - Copy data from database table into PHP array
    • PDO::pgsqlCopyToFile - Copy data from table into file
    • PDO::pgsqlGetNotify - Get asynchronous notification
    • PDO::pgsqlGetPid - Get the server PID
    • PDO::pgsqlLOBCreate - Creates a new large object
    • PDO::pgsqlLOBOpen - Opens an existing large object stream
    • PDO::pgsqlLOBUnlink - Deletes the large object
    • PDO::prepare - Prepares a statement for execution and returns a statement object
    • PDO::query - Executes an SQL statement, returning a result set as a PDOStatement object
    • PDO::quote - Quotes a string for use in a query.
    • PDO::rollBack - 回滚一个事务
    • PDO::setAttribute - 设置属性
    • PDO::sqliteCreateAggregate - Registers an aggregating User Defined Function for use in SQL statements
    • PDO::sqliteCreateCollation - Registers a User Defined Function for use as a collating function in SQL statements
    • PDO::sqliteCreateFunction - Registers a User Defined Function for use in SQL statements
    • PDO::__construct - 创建一个表示数据库连接的 PDO 实例
    • PDOStatement::bindColumn - 绑定一列到一个 PHP 变量
    • PDOStatement::bindParam - 绑定一个参数到指定的变量名
    • PDOStatement::bindValue - 把一个值绑定到一个参数
    • PDOStatement::closeCursor - 关闭游标，使语句能再次被执行。
    • PDOStatement::columnCount - 返回结果集中的列数
    • PDOStatement::debugDumpParams - 打印一条 SQL 预处理命令
    • PDOStatement::errorCode - 获取跟上一次语句句柄操作相关的 SQLSTATE
    • PDOStatement::errorInfo - 获取跟上一次语句句柄操作相关的扩展错误信息
    • PDOStatement::execute - 执行一条预处理语句
    • PDOStatement::fetch - 从结果集中获取下一行
    • PDOStatement::fetchAll - 返回一个包含结果集中所有行的数组
    • PDOStatement::fetchColumn - 从结果集中的下一行返回单独的一列。
    • PDOStatement::fetchObject - 获取下一行并作为一个对象返回。
    • PDOStatement::getAttribute - 检索一个语句属性
    • PDOStatement::getColumnMeta - 返回结果集中一列的元数据
    • PDOStatement::nextRowset - 在一个多行集语句句柄中推进到下一个行集
    • PDOStatement::rowCount - 返回受上一个 SQL 语句影响的行数
    • PDOStatement::setAttribute - 设置一个语句属性
    • PDOStatement::setFetchMode - 为语句设置默认的获取模式。
    • PDO_4D DSN - Connecting to 4D SQL server
    • PDO_CUBRID DSN - Connecting to CUBRID databases
    • PDO_DBLIB DSN - Connecting to Microsoft SQL Server and Sybase databases
    • PDO_FIREBIRD DSN - Connecting to Firebird databases
    • PDO_IBM DSN - Connecting to IBM databases
    • PDO_INFORMIX DSN - Connecting to Informix databases
    • PDO_MYSQL DSN - Connecting to MySQL databases
    • PDO_OCI DSN - Connecting to Oracle databases
    • PDO_ODBC DSN - Connecting to ODBC or DB2 databases
    • PDO_PGSQL DSN - Connecting to PostgreSQL databases
    • PDO_SQLITE DSN - Connecting to SQLite databases
    • PDO_SQLSRV DSN - Connecting to MS SQL Server and SQL Azure databases
    • pfsockopen - 打开一个持久的网络连接或者Unix套接字连接。
    • pg_affected_rows - 返回受影响的记录数目
    • pg_cancel_query - 取消异步查询
    • pg_client_encoding - 取得客户端编码方式
    • pg_close - 关闭一个 PostgreSQL 连接
    • pg_connect - 打开一个 PostgreSQL 连接
    • pg_connection_busy - 获知连接是否为忙
    • pg_connection_reset - 重置连接（再次连接）
    • pg_connection_status - 获得连接状态
    • pg_connect_poll - 正在进行尝试轮询 PostgreSQL 链接状态。
    • pg_consume_input - Reads input on the connection
    • pg_convert - 将关联的数组值转换为适合 SQL 语句的格式。
    • pg_copy_from - 根据数组将记录插入表中
    • pg_copy_to - 将一个表拷贝到数组中
    • pg_dbname - 获得数据库名
    • pg_delete - 删除记录
    • pg_end_copy - 与 PostgreSQL 后端同步
    • pg_escape_bytea - 转义 bytea 类型的二进制数据
    • pg_escape_identifier - Escape a identifier for insertion into a text field
    • pg_escape_literal - Escape a literal for insertion into a text field
    • pg_escape_string - 转义 text/char 类型的字符串
    • pg_execute - Sends a request to execute a prepared statement with given parameters, and waits for the result.
    • pg_fetch_all - 从结果中提取所有行作为一个数组
    • pg_fetch_all_columns - Fetches all rows in a particular result column as an array
    • pg_fetch_array - 提取一行作为数组
    • pg_fetch_assoc - 提取一行作为关联数组
    • pg_fetch_object - 提取一行作为对象
    • pg_fetch_result - 从结果资源中返回值
    • pg_fetch_row - 提取一行作为枚举数组
    • pg_field_is_null - 测试字段是否为 NULL
    • pg_field_name - 返回字段的名字
    • pg_field_num - 返回字段的编号
    • pg_field_prtlen - 返回打印出来的长度
    • pg_field_size - 返回指定字段占用内部存储空间的大小
    • pg_field_table - Returns the name or oid of the tables field
    • pg_field_type - 返回相应字段的类型名称
    • pg_field_type_oid - Returns the type ID (OID) for the corresponding field number
    • pg_flush - 刷新链接中已处理的数据查询
    • pg_free_result - 释放查询结果占用的内存
    • pg_get_notify - Ping 数据库连接
    • pg_get_pid - Ping 数据库连接
    • pg_get_result - 取得异步查询结果
    • pg_host - 返回和某连接关联的主机名
    • pg_insert - 将数组插入到表中
    • pg_last_error - 得到某连接的最后一条错误信息
    • pg_last_notice - 返回 PostgreSQL 服务器最新一条公告信息
    • pg_last_oid - 返回上一个对象的 oid
    • pg_lo_close - 关闭一个大型对象
    • pg_lo_create - 新建一个大型对象
    • pg_lo_export - 将大型对象导出到文件
    • pg_lo_import - 将文件导入为大型对象
    • pg_lo_open - 打开一个大型对象
    • pg_lo_read - 从大型对象中读入数据
    • pg_lo_read_all - 读入整个大型对象并直接发送给浏览器
    • pg_lo_seek - 移动大型对象中的指针
    • pg_lo_tell - 返回大型对象的当前指针位置
    • pg_lo_truncate - Truncates a large object
    • pg_lo_unlink - 删除一个大型对象
    • pg_lo_write - 向大型对象写入数据
    • pg_meta_data - 获得表的元数据
    • pg_num_fields - 返回字段的数目
    • pg_num_rows - 返回行的数目
    • pg_options - 获得和连接有关的选项
    • pg_parameter_status - Looks up a current parameter setting of the server.
    • pg_pconnect - 打开一个持久的 PostgreSQL 连接
    • pg_ping - Ping 数据库连接
    • pg_port - 返回该连接的端口号
    • pg_prepare - Submits a request to create a prepared statement with the given parameters, and waits for completion.
    • pg_put_line - 向 PostgreSQL 后端发送以 NULL 结尾的字符串
    • pg_query - 执行查询
    • pg_query_params - Submits a command to the server and waits for the result, with the ability to pass parameters separately from the SQL command text.
    • pg_result_error - 获得查询结果的错误信息
    • pg_result_error_field - Returns an individual field of an error report.
    • pg_result_seek - 在结果资源中设定内部行偏移量
    • pg_result_status - 获得查询结果的状态
    • pg_select - 选择记录
    • pg_send_execute - Sends a request to execute a prepared statement with given parameters, without waiting for the result(s).
    • pg_send_prepare - Sends a request to create a prepared statement with the given parameters, without waiting for completion.
    • pg_send_query - 发送异步查询
    • pg_send_query_params - Submits a command and separate parameters to the server without waiting for the result(s).
    • pg_set_client_encoding - 设定客户端编码
    • pg_set_error_verbosity - Determines the verbosity of messages returned by pg_last_error and pg_result_error.
    • pg_socket - Get a read only handle to the socket underlying a PostgreSQL connection
    • pg_trace - 启动一个 PostgreSQL 连接的追踪功能
    • pg_transaction_status - Returns the current in-transaction status of the server.
    • pg_tty - 返回该连接的 tty 号
    • pg_unescape_bytea - 取消 bytea 类型中的字符串转义
    • pg_untrace - 关闭 PostgreSQL 连接的追踪功能
    • pg_update - 更新表
    • pg_version - Returns an array with client, protocol and server version (when available)
    • phar:// - PHP 归档
    • Phar::addEmptyDir - 添加一个空目录到 phar 档案
    • Phar::addFile - 将一个文件从文件系统添加到 phar 档案中
    • Phar::addFromString - 以字符串的形式添加一个文件到 phar 档案
    • Phar::apiVersion - Returns the api version
    • Phar::buildFromDirectory - Construct a phar archive from the files within a directory.
    • Phar::buildFromIterator - Construct a phar archive from an iterator.
    • Phar::canCompress - Returns whether phar extension supports compression using either zlib or bzip2
    • Phar::canWrite - Returns whether phar extension supports writing and creating phars
    • Phar::compress - Compresses the entire Phar archive using Gzip or Bzip2 compression
    • Phar::compressAllFilesBZIP2 - Compresses all files in the current Phar archive using Bzip2 compression
    • Phar::compressAllFilesGZ - Compresses all files in the current Phar archive using Gzip compression
    • Phar::compressFiles - Compresses all files in the current Phar archive
    • Phar::convertToData - Convert a phar archive to a non-executable tar or zip file
    • Phar::convertToExecutable - Convert a phar archive to another executable phar archive file format
    • Phar::copy - Copy a file internal to the phar archive to another new file within the phar
    • Phar::count - Returns the number of entries (files) in the Phar archive
    • Phar::createDefaultStub - Create a phar-file format specific stub
    • Phar::decompress - Decompresses the entire Phar archive
    • Phar::decompressFiles - Decompresses all files in the current Phar archive
    • Phar::delete - 删除 phar 档案中的一个文件
    • Phar::delMetadata - Deletes the global metadata of the phar
    • Phar::extractTo - Extract the contents of a phar archive to a directory
    • Phar::getMetadata - Returns phar archive meta-data
    • Phar::getModified - Return whether phar was modified
    • Phar::getSignature - Return MD5/SHA1/SHA256/SHA512/OpenSSL signature of a Phar archive
    • Phar::getStub - Return the PHP loader or bootstrap stub of a Phar archive
    • Phar::getSupportedCompression - Return array of supported compression algorithms
    • Phar::getSupportedSignatures - Return array of supported signature types
    • Phar::getVersion - Return version info of Phar archive
    • Phar::hasMetadata - Returns whether phar has global meta-data
    • Phar::interceptFileFuncs - instructs phar to intercept fopen, file_get_contents, opendir, and all of the stat-related functions
    • Phar::isBuffering - Used to determine whether Phar write operations are being buffered, or are flushing directly to disk
    • Phar::isCompressed - Returns Phar::GZ or PHAR::BZ2 if the entire phar archive is compressed (.tar.gz/tar.bz and so on)
    • Phar::isFileFormat - Returns true if the phar archive is based on the tar/phar/zip file format depending on the parameter
    • Phar::isValidPharFilename - Returns whether the given filename is a valid phar filename
    • Phar::isWritable - Returns true if the phar archive can be modified
    • Phar::loadPhar - Loads any phar archive with an alias
    • Phar::mapPhar - Reads the currently executed file (a phar) and registers its manifest
    • Phar::mount - Mount an external path or file to a virtual location within the phar archive
    • Phar::mungServer - Defines a list of up to 4 $_SERVER variables that should be modified for execution
    • Phar::offsetExists - determines whether a file exists in the phar
    • Phar::offsetGet - Gets a PharFileInfo object for a specific file
    • Phar::offsetSet - set the contents of an internal file to those of an external file
    • Phar::offsetUnset - remove a file from a phar
    • Phar::running - Returns the full path on disk or full phar URL to the currently executing Phar archive
    • Phar::setAlias - Set the alias for the Phar archive
    • Phar::setDefaultStub - Used to set the PHP loader or bootstrap stub of a Phar archive to the default loader
    • Phar::setMetadata - Sets phar archive meta-data
    • Phar::setSignatureAlgorithm - set the signature algorithm for a phar and apply it.
    • Phar::setStub - Used to set the PHP loader or bootstrap stub of a Phar archive
    • Phar::startBuffering - Start buffering Phar write operations, do not modify the Phar object on disk
    • Phar::stopBuffering - Stop buffering write requests to the Phar archive, and save changes to disk
    • Phar::uncompressAllFiles - Uncompresses all files in the current Phar archive
    • Phar::unlinkArchive - Completely remove a phar archive from disk and from memory
    • Phar::webPhar - mapPhar for web-based phars. front controller for web applications
    • Phar::__construct - Construct a Phar archive object
    • PharData::addEmptyDir - Add an empty directory to the tar/zip archive
    • PharData::addFile - Add a file from the filesystem to the tar/zip archive
    • PharData::addFromString - Add a file from the filesystem to the tar/zip archive
    • PharData::buildFromDirectory - Construct a tar/zip archive from the files within a directory.
    • PharData::buildFromIterator - Construct a tar or zip archive from an iterator.
    • PharData::compress - Compresses the entire tar/zip archive using Gzip or Bzip2 compression
    • PharData::compressFiles - Compresses all files in the current tar/zip archive
    • PharData::convertToData - Convert a phar archive to a non-executable tar or zip file
    • PharData::convertToExecutable - Convert a non-executable tar/zip archive to an executable phar archive
    • PharData::copy - Copy a file internal to the phar archive to another new file within the phar
    • PharData::decompress - Decompresses the entire Phar archive
    • PharData::decompressFiles - Decompresses all files in the current zip archive
    • PharData::delete - Delete a file within a tar/zip archive
    • PharData::delMetadata - Deletes the global metadata of a zip archive
    • PharData::extractTo - Extract the contents of a tar/zip archive to a directory
    • PharData::isWritable - Returns true if the tar/zip archive can be modified
    • PharData::offsetSet - set the contents of a file within the tar/zip to those of an external file or string
    • PharData::offsetUnset - remove a file from a tar/zip archive
    • PharData::setAlias - dummy function (Phar::setAlias is not valid for PharData)
    • PharData::setDefaultStub - dummy function (Phar::setDefaultStub is not valid for PharData)
    • PharData::setStub - dummy function (Phar::setStub is not valid for PharData)
    • PharData::__construct - Construct a non-executable tar or zip archive object
    • PharException - The PharException class provides a phar-specific exception class for try/catch blocks.
    • PharFileInfo::chmod - Sets file-specific permission bits
    • PharFileInfo::compress - Compresses the current Phar entry with either zlib or bzip2 compression
    • PharFileInfo::decompress - Decompresses the current Phar entry within the phar
    • PharFileInfo::delMetadata - Deletes the metadata of the entry
    • PharFileInfo::getCompressedSize - Returns the actual size of the file (with compression) inside the Phar archive
    • PharFileInfo::getCRC32 - Returns CRC32 code or throws an exception if CRC has not been verified
    • PharFileInfo::getMetadata - Returns file-specific meta-data saved with a file
    • PharFileInfo::getPharFlags - Returns the Phar file entry flags
    • PharFileInfo::hasMetadata - Returns the metadata of the entry
    • PharFileInfo::isCompressed - Returns whether the entry is compressed
    • PharFileInfo::isCompressedBZIP2 - Returns whether the entry is compressed using bzip2
    • PharFileInfo::isCompressedGZ - Returns whether the entry is compressed using gz
    • PharFileInfo::isCRCChecked - Returns whether file entry has had its CRC verified
    • PharFileInfo::setCompressedBZIP2 - Compresses the current Phar entry within the phar using Bzip2 compression
    • PharFileInfo::setCompressedGZ - Compresses the current Phar entry within the phar using gz compression
    • PharFileInfo::setMetadata - Sets file-specific meta-data saved with a file
    • PharFileInfo::setUncompressed - Uncompresses the current Phar entry within the phar, if it is compressed
    • PharFileInfo::__construct - Construct a Phar entry object
    • Phar 上下文（context）选项 - Phar 上下文（context）选项列表
    • php:// - 访问各个输入/输出流（I/O streams）
    • phpcredits - 打印 PHP 贡献者名单
    • phpinfo - 输出关于 PHP 配置的信息
    • phpversion - 获取当前的PHP版本
    • php_check_syntax - 检查PHP的语法（并执行）指定的文件
    • php_ini_loaded_file - 取得已加载的 php.ini 文件的路径
    • php_ini_scanned_files - 返回从额外 ini 目录里解析的 .ini 文件列表
    • php_logo_guid - 获取 logo 的 guid
    • php_sapi_name - 返回 web 服务器和 PHP 之间的接口类型
    • php_strip_whitespace - 返回删除注释和空格后的PHP源码
    • php_uname - 返回运行 PHP 的系统的有关信息
    • php_user_filter::filter - Called when applying the filter
    • php_user_filter::onClose - Called when closing the filter
    • php_user_filter::onCreate - Called when creating the filter
    • pi - 得到圆周率值
    • png2wbmp - 将 PNG 图像文件转换为 WBMP 图像文件
    • Pool::collect - 回收已完成任务的引用
    • Pool::resize - 改变 Pool 对象的可容纳 Worker 对象的数量
    • Pool::shutdown - 停止所有的 Worker 对象
    • Pool::submit - 提交对象以执行
    • Pool::submitTo - 提交对象以执行
    • Pool::__construct - 创建新的 Worker 对象池
    • popen - 打开进程文件指针
    • pos - current 的别名
    • posix_access - Determine accessibility of a file
    • posix_ctermid - Get path name of controlling terminal
    • posix_errno - 别名 posix_get_last_error
    • posix_getcwd - Pathname of current directory
    • posix_getegid - Return the effective group ID of the current process
    • posix_geteuid - Return the effective user ID of the current process
    • posix_getgid - Return the real group ID of the current process
    • posix_getgrgid - Return info about a group by group id
    • posix_getgrnam - Return info about a group by name
    • posix_getgroups - Return the group set of the current process
    • posix_getlogin - Return login name
    • posix_getpgid - Get process group id for job control
    • posix_getpgrp - Return the current process group identifier
    • posix_getpid - 返回当前进程 id
    • posix_getppid - Return the parent process identifier
    • posix_getpwnam - Return info about a user by username
    • posix_getpwuid - Return info about a user by user id
    • posix_getrlimit - Return info about system resource limits
    • posix_getsid - Get the current sid of the process
    • posix_getuid - Return the real user ID of the current process
    • posix_get_last_error - Retrieve the error number set by the last posix function that failed
    • posix_initgroups - Calculate the group access list
    • posix_isatty - Determine if a file descriptor is an interactive terminal
    • posix_kill - Send a signal to a process
    • posix_mkfifo - Create a fifo special file (a named pipe)
    • posix_mknod - Create a special or ordinary file (POSIX.1)
    • posix_setegid - Set the effective GID of the current process
    • posix_seteuid - Set the effective UID of the current process
    • posix_setgid - Set the GID of the current process
    • posix_setpgid - Set process group id for job control
    • posix_setrlimit - Set system resource limits
    • posix_setsid - Make the current process a session leader
    • posix_setuid - Set the UID of the current process
    • posix_strerror - Retrieve the system error message associated with the given errno
    • posix_times - Get process times
    • posix_ttyname - Determine terminal device name
    • posix_uname - Get system name
    • pow - 指数表达式
    • preg_filter - 执行一个正则表达式搜索和替换
    • preg_grep - 返回匹配模式的数组条目
    • preg_last_error - 返回最后一个PCRE正则执行产生的错误代码
    • preg_match - 执行一个正则表达式匹配
    • preg_match_all - 执行一个全局正则表达式匹配
    • preg_quote - 转义正则表达式字符
    • preg_replace - 执行一个正则表达式的搜索和替换
    • preg_replace_callback - 执行一个正则表达式搜索并且使用一个回调进行替换
    • preg_replace_callback_array - Perform a regular expression search and replace using callbacks
    • preg_split - 通过一个正则表达式分隔字符串
    • prev - 将数组的内部指针倒回一位
    • print - 输出字符串
    • printf - 输出格式化字符串
    • print_r - 打印关于变量的易于理解的信息。
    • proc_close - 关闭由 proc_open 打开的进程并且返回进程退出码
    • proc_get_status - 获取由 proc_open 函数打开的进程的信息
    • proc_nice - 修改当前进程的优先级
    • proc_open - 执行一个命令，并且打开用来输入/输出的文件指针。
    • proc_terminate - 杀除由 proc_open 打开的进程
    • property_exists - 检查对象或类是否具有该属性
    • pspell_add_to_personal - Add the word to a personal wordlist
    • pspell_add_to_session - Add the word to the wordlist in the current session
    • pspell_check - Check a word
    • pspell_clear_session - Clear the current session
    • pspell_config_create - Create a config used to open a dictionary
    • pspell_config_data_dir - location of language data files
    • pspell_config_dict_dir - Location of the main word list
    • pspell_config_ignore - Ignore words less than N characters long
    • pspell_config_mode - Change the mode number of suggestions returned
    • pspell_config_personal - Set a file that contains personal wordlist
    • pspell_config_repl - Set a file that contains replacement pairs
    • pspell_config_runtogether - Consider run-together words as valid compounds
    • pspell_config_save_repl - Determine whether to save a replacement pairs list along with the wordlist
    • pspell_new - Load a new dictionary
    • pspell_new_config - Load a new dictionary with settings based on a given config
    • pspell_new_personal - Load a new dictionary with personal wordlist
    • pspell_save_wordlist - Save the personal wordlist to a file
    • pspell_store_replacement - Store a replacement pair for a word
    • pspell_suggest - Suggest spellings of a word
    • ps_add_bookmark - Add bookmark to current page
    • ps_add_launchlink - Adds link which launches file
    • ps_add_locallink - Adds link to a page in the same document
    • ps_add_note - Adds note to current page
    • ps_add_pdflink - Adds link to a page in a second pdf document
    • ps_add_weblink - Adds link to a web location
    • ps_arc - Draws an arc counterclockwise
    • ps_arcn - Draws an arc clockwise
    • ps_begin_page - Start a new page
    • ps_begin_pattern - Start a new pattern
    • ps_begin_template - Start a new template
    • ps_circle - Draws a circle
    • ps_clip - Clips drawing to current path
    • ps_close - Closes a PostScript document
    • ps_closepath - Closes path
    • ps_closepath_stroke - Closes and strokes path
    • ps_close_image - Closes image and frees memory
    • ps_continue_text - Continue text in next line
    • ps_curveto - Draws a curve
    • ps_delete - Deletes all resources of a PostScript document
    • ps_end_page - End a page
    • ps_end_pattern - End a pattern
    • ps_end_template - End a template
    • ps_fill - Fills the current path
    • ps_fill_stroke - Fills and strokes the current path
    • ps_findfont - Loads a font
    • ps_get_buffer - Fetches the full buffer containig the generated PS data
    • ps_get_parameter - Gets certain parameters
    • ps_get_value - Gets certain values
    • ps_hyphenate - Hyphenates a word
    • ps_include_file - Reads an external file with raw PostScript code
    • ps_lineto - Draws a line
    • ps_makespotcolor - Create spot color
    • ps_moveto - Sets current point
    • ps_new - Creates a new PostScript document object
    • ps_open_file - Opens a file for output
    • ps_open_image - Reads an image for later placement
    • ps_open_image_file - Opens image from file
    • ps_open_memory_image - Takes an GD image and returns an image for placement in a PS document
    • ps_place_image - Places image on the page
    • ps_rect - Draws a rectangle
    • ps_restore - Restore previously save context
    • ps_rotate - Sets rotation factor
    • ps_save - Save current context
    • ps_scale - Sets scaling factor
    • ps_setcolor - Sets current color
    • ps_setdash - Sets appearance of a dashed line
    • ps_setflat - Sets flatness
    • ps_setfont - Sets font to use for following output
    • ps_setgray - Sets gray value
    • ps_setlinecap - Sets appearance of line ends
    • ps_setlinejoin - Sets how contected lines are joined
    • ps_setlinewidth - Sets width of a line
    • ps_setmiterlimit - Sets the miter limit
    • ps_setoverprintmode - Sets overprint mode
    • ps_setpolydash - Sets appearance of a dashed line
    • ps_set_border_color - Sets color of border for annotations
    • ps_set_border_dash - Sets length of dashes for border of annotations
    • ps_set_border_style - Sets border style of annotations
    • ps_set_info - Sets information fields of document
    • ps_set_parameter - Sets certain parameters
    • ps_set_text_pos - Sets position for text output
    • ps_set_value - Sets certain values
    • ps_shading - Creates a shading for later use
    • ps_shading_pattern - Creates a pattern based on a shading
    • ps_shfill - Fills an area with a shading
    • ps_show - Output text
    • ps_show2 - Output a text at current position
    • ps_show_boxed - Output text in a box
    • ps_show_xy - Output text at given position
    • ps_show_xy2 - Output text at position
    • ps_stringwidth - Gets width of a string
    • ps_string_geometry - Gets geometry of a string
    • ps_stroke - Draws the current path
    • ps_symbol - Output a glyph
    • ps_symbol_name - Gets name of a glyph
    • ps_symbol_width - Gets width of a glyph
    • ps_translate - Sets translation
    • putenv - 设置环境变量的值
    • px_close - Closes a paradox database
    • px_create_fp - Create a new paradox database
    • px_date2string - Converts a date into a string.
    • px_delete - Deletes resource of paradox database
    • px_delete_record - Deletes record from paradox database
    • px_get_field - Returns the specification of a single field
    • px_get_info - Return lots of information about a paradox file
    • px_get_parameter - Gets a parameter
    • px_get_record - Returns record of paradox database
    • px_get_schema - Returns the database schema
    • px_get_value - Gets a value
    • px_insert_record - Inserts record into paradox database
    • px_new - Create a new paradox object
    • px_numfields - Returns number of fields in a database
    • px_numrecords - Returns number of records in a database
    • px_open_fp - Open paradox database
    • px_put_record - Stores record into paradox database
    • px_retrieve_record - Returns record of paradox database
    • px_set_blob_file - Sets the file where blobs are read from
    • px_set_parameter - Sets a parameter
    • px_set_tablename - Sets the name of a table (deprecated)
    • px_set_targetencoding - Sets the encoding for character fields (deprecated)
    • px_set_value - Sets a value
    • px_timestamp2string - Converts the timestamp into a string.
    • px_update_record - Updates record in paradox database
  • q
    • QuickHashIntHash::add - This method adds a new entry to the hash
    • QuickHashIntHash::delete - This method deletes am entry from the hash
    • QuickHashIntHash::exists - This method checks whether a key is part of the hash
    • QuickHashIntHash::get - This method retrieves a value from the hash by its key
    • QuickHashIntHash::getSize - Returns the number of elements in the hash
    • QuickHashIntHash::loadFromFile - This factory method creates a hash from a file
    • QuickHashIntHash::loadFromString - This factory method creates a hash from a string
    • QuickHashIntHash::saveToFile - This method stores an in-memory hash to disk
    • QuickHashIntHash::saveToString - This method returns a serialized version of the hash
    • QuickHashIntHash::set - This method updates an entry in the hash with a new value, or adds a new one if the entry doesn't exist
    • QuickHashIntHash::update - This method updates an entry in the hash with a new value
    • QuickHashIntHash::__construct - Creates a new QuickHashIntHash object
    • QuickHashIntSet::add - This method adds a new entry to the set
    • QuickHashIntSet::delete - This method deletes an entry from the set
    • QuickHashIntSet::exists - This method checks whether a key is part of the set
    • QuickHashIntSet::getSize - Returns the number of elements in the set
    • QuickHashIntSet::loadFromFile - This factory method creates a set from a file
    • QuickHashIntSet::loadFromString - This factory method creates a set from a string
    • QuickHashIntSet::saveToFile - This method stores an in-memory set to disk
    • QuickHashIntSet::saveToString - This method returns a serialized version of the set
    • QuickHashIntSet::__construct - Creates a new QuickHashIntSet object
    • QuickHashIntStringHash::add - This method adds a new entry to the hash
    • QuickHashIntStringHash::delete - This method deletes am entry from the hash
    • QuickHashIntStringHash::exists - This method checks whether a key is part of the hash
    • QuickHashIntStringHash::get - This method retrieves a value from the hash by its key
    • QuickHashIntStringHash::getSize - Returns the number of elements in the hash
    • QuickHashIntStringHash::loadFromFile - This factory method creates a hash from a file
    • QuickHashIntStringHash::loadFromString - This factory method creates a hash from a string
    • QuickHashIntStringHash::saveToFile - This method stores an in-memory hash to disk
    • QuickHashIntStringHash::saveToString - This method returns a serialized version of the hash
    • QuickHashIntStringHash::set - This method updates an entry in the hash with a new value, or adds a new one if the entry doesn't exist
    • QuickHashIntStringHash::update - This method updates an entry in the hash with a new value
    • QuickHashIntStringHash::__construct - Creates a new QuickHashIntStringHash object
    • QuickHashStringIntHash::add - This method adds a new entry to the hash
    • QuickHashStringIntHash::delete - This method deletes am entry from the hash
    • QuickHashStringIntHash::exists - This method checks whether a key is part of the hash
    • QuickHashStringIntHash::get - This method retrieves a value from the hash by its key
    • QuickHashStringIntHash::getSize - Returns the number of elements in the hash
    • QuickHashStringIntHash::loadFromFile - This factory method creates a hash from a file
    • QuickHashStringIntHash::loadFromString - This factory method creates a hash from a string
    • QuickHashStringIntHash::saveToFile - This method stores an in-memory hash to disk
    • QuickHashStringIntHash::saveToString - This method returns a serialized version of the hash
    • QuickHashStringIntHash::set - This method updates an entry in the hash with a new value, or adds a new one if the entry doesn't exist
    • QuickHashStringIntHash::update - This method updates an entry in the hash with a new value
    • QuickHashStringIntHash::__construct - Creates a new QuickHashStringIntHash object
    • quoted_printable_decode - 将 quoted-printable 字符串转换为 8-bit 字符串
    • quoted_printable_encode - 将 8-bit 字符串转换成 quoted-printable 字符串
    • quotemeta - 转义元字符集
  • r
    • rad2deg - 将弧度数转换为相应的角度数
    • radius_acct_open - Creates a Radius handle for accounting
    • radius_add_server - Adds a server
    • radius_auth_open - Creates a Radius handle for authentication
    • radius_close - Frees all ressources
    • radius_config - Causes the library to read the given configuration file
    • radius_create_request - Create accounting or authentication request
    • radius_cvt_addr - Converts raw data to IP-Address
    • radius_cvt_int - Converts raw data to integer
    • radius_cvt_string - Converts raw data to string
    • radius_demangle - Demangles data
    • radius_demangle_mppe_key - Derives mppe-keys from mangled data
    • radius_get_attr - Extracts an attribute
    • radius_get_tagged_attr_data - Extracts the data from a tagged attribute
    • radius_get_tagged_attr_tag - Extracts the tag from a tagged attribute
    • radius_get_vendor_attr - Extracts a vendor specific attribute
    • radius_put_addr - Attaches an IP address attribute
    • radius_put_attr - Attaches a binary attribute
    • radius_put_int - Attaches an integer attribute
    • radius_put_string - Attaches a string attribute
    • radius_put_vendor_addr - Attaches a vendor specific IP address attribute
    • radius_put_vendor_attr - Attaches a vendor specific binary attribute
    • radius_put_vendor_int - Attaches a vendor specific integer attribute
    • radius_put_vendor_string - Attaches a vendor specific string attribute
    • radius_request_authenticator - Returns the request authenticator
    • radius_salt_encrypt_attr - Salt-encrypts a value
    • radius_send_request - Sends the request and waites for a reply
    • radius_server_secret - Returns the shared secret
    • radius_strerror - Returns an error message
    • rand - 产生一个随机整数
    • random_bytes - Generates cryptographically secure pseudo-random bytes
    • random_int - Generates cryptographically secure pseudo-random integers
    • range - 建立一个包含指定范围单元的数组
    • rar:// - RAR
    • RarArchive::close - Close RAR archive and free all resources
    • RarArchive::getComment - Get comment text from the RAR archive
    • RarArchive::getEntries - Get full list of entries from the RAR archive
    • RarArchive::getEntry - Get entry object from the RAR archive
    • RarArchive::isBroken - Test whether an archive is broken (incomplete)
    • RarArchive::isSolid - Check whether the RAR archive is solid
    • RarArchive::open - Open RAR archive
    • RarArchive::setAllowBroken - Whether opening broken archives is allowed
    • RarArchive::__toString - Get text representation
    • RarEntry::extract - Extract entry from the archive
    • RarEntry::getAttr - Get attributes of the entry
    • RarEntry::getCrc - Get CRC of the entry
    • RarEntry::getFileTime - Get entry last modification time
    • RarEntry::getHostOs - Get entry host OS
    • RarEntry::getMethod - Get pack method of the entry
    • RarEntry::getName - Get name of the entry
    • RarEntry::getPackedSize - Get packed size of the entry
    • RarEntry::getStream - Get file handler for entry
    • RarEntry::getUnpackedSize - Get unpacked size of the entry
    • RarEntry::getVersion - Get minimum version of RAR program required to unpack the entry
    • RarEntry::isDirectory - Test whether an entry represents a directory
    • RarEntry::isEncrypted - Test whether an entry is encrypted
    • RarEntry::__toString - Get text representation of entry
    • RarException::isUsingExceptions - Check whether error handling with exceptions is in use
    • RarException::setUsingExceptions - Activate and deactivate error handling with exceptions
    • rar_wrapper_cache_stats - Cache hits and misses for the URL wrapper
    • rawurldecode - 对已编码的 URL 字符串进行解码
    • rawurlencode - 按照 RFC 3986 对 URL 进行编码
    • readdir - 从目录句柄中读取条目
    • readfile - 输出文件
    • readgzfile - Output a gz-file
    • readline - 读取一行
    • readline_add_history - 添加一行命令行历史记录
    • readline_callback_handler_install - 初始化一个 readline 回调接口，然后终端输出提示信息并立即返回
    • readline_callback_handler_remove - 移除上一个安装的回调函数句柄并且恢复终端设置
    • readline_callback_read_char - 当一个行被接收时读取一个字符并且通知 readline 调用回调函数
    • readline_clear_history - 清除历史
    • readline_completion_function - 注册一个完成函数
    • readline_info - 获取/设置readline内部的各个变量
    • readline_list_history - 获取命令历史列表
    • readline_on_new_line - 通知readline将光标移动到新行
    • readline_read_history - 读取命令历史
    • readline_redisplay - 重绘显示区
    • readline_write_history - 写入历史记录
    • readlink - 返回符号连接指向的目标
    • read_exif_data - 别名 exif_read_data
    • realpath - 返回规范化的绝对路径名
    • realpath_cache_get - 获取真实目录缓存的详情
    • realpath_cache_size - 获取真实路径缓冲区的大小
    • recode - 别名 recode_string
    • recode_file - Recode from file to file according to recode request
    • recode_string - Recode a string according to a recode request
    • RecursiveArrayIterator::getChildren - Returns an iterator for the current entry if it is an array or an object.
    • RecursiveArrayIterator::hasChildren - Returns whether current entry is an array or an object.
    • RecursiveCachingIterator::getChildren - Return the inner iterator's children as a RecursiveCachingIterator
    • RecursiveCachingIterator::hasChildren - Check whether the current element of the inner iterator has children
    • RecursiveCachingIterator::__construct - Construct
    • RecursiveCallbackFilterIterator::getChildren - Return the inner iterator's children contained in a RecursiveCallbackFilterIterator
    • RecursiveCallbackFilterIterator::hasChildren - Check whether the inner iterator's current element has children
    • RecursiveCallbackFilterIterator::__construct - Create a RecursiveCallbackFilterIterator from a RecursiveIterator
    • RecursiveDirectoryIterator::getChildren - Returns an iterator for the current entry if it is a directory
    • RecursiveDirectoryIterator::getSubPath - Get sub path
    • RecursiveDirectoryIterator::getSubPathname - Get sub path and name
    • RecursiveDirectoryIterator::hasChildren - Returns whether current entry is a directory and not '.' or '..'
    • RecursiveDirectoryIterator::key - Return path and filename of current dir entry
    • RecursiveDirectoryIterator::next - Move to next entry
    • RecursiveDirectoryIterator::rewind - Rewind dir back to the start
    • RecursiveDirectoryIterator::__construct - Constructs a RecursiveDirectoryIterator
    • RecursiveFilterIterator::getChildren - Return the inner iterator's children contained in a RecursiveFilterIterator
    • RecursiveFilterIterator::hasChildren - Check whether the inner iterator's current element has children
    • RecursiveFilterIterator::__construct - Create a RecursiveFilterIterator from a RecursiveIterator
    • RecursiveIterator::getChildren - Returns an iterator for the current entry.
    • RecursiveIterator::hasChildren - Returns if an iterator can be created fot the current entry.
    • RecursiveIteratorIterator::beginChildren - Begin children
    • RecursiveIteratorIterator::beginIteration - Begin Iteration
    • RecursiveIteratorIterator::callGetChildren - Get children
    • RecursiveIteratorIterator::callHasChildren - Has children
    • RecursiveIteratorIterator::current - Access the current element value
    • RecursiveIteratorIterator::endChildren - End children
    • RecursiveIteratorIterator::endIteration - End Iteration
    • RecursiveIteratorIterator::getDepth - Get the current depth of the recursive iteration
    • RecursiveIteratorIterator::getInnerIterator - Get inner iterator
    • RecursiveIteratorIterator::getMaxDepth - Get max depth
    • RecursiveIteratorIterator::getSubIterator - The current active sub iterator
    • RecursiveIteratorIterator::key - Access the current key
    • RecursiveIteratorIterator::next - Move forward to the next element
    • RecursiveIteratorIterator::nextElement - Next element
    • RecursiveIteratorIterator::rewind - Rewind the iterator to the first element of the top level inner iterator
    • RecursiveIteratorIterator::setMaxDepth - Set max depth
    • RecursiveIteratorIterator::valid - Check whether the current position is valid
    • RecursiveIteratorIterator::__construct - Construct a RecursiveIteratorIterator
    • RecursiveRegexIterator::getChildren - Returns an iterator for the current entry.
    • RecursiveRegexIterator::hasChildren - Returns whether an iterator can be obtained for the current entry.
    • RecursiveRegexIterator::__construct - Creates a new RecursiveRegexIterator.
    • RecursiveTreeIterator::beginChildren - Begin children
    • RecursiveTreeIterator::beginIteration - Begin iteration
    • RecursiveTreeIterator::callGetChildren - Get children
    • RecursiveTreeIterator::callHasChildren - Has children
    • RecursiveTreeIterator::current - Get current element
    • RecursiveTreeIterator::endChildren - End children
    • RecursiveTreeIterator::endIteration - End iteration
    • RecursiveTreeIterator::getEntry - Get current entry
    • RecursiveTreeIterator::getPostfix - Get the postfix
    • RecursiveTreeIterator::getPrefix - Get the prefix
    • RecursiveTreeIterator::key - Get the key of the current element
    • RecursiveTreeIterator::next - Move to next element
    • RecursiveTreeIterator::nextElement - Next element
    • RecursiveTreeIterator::rewind - Rewind iterator
    • RecursiveTreeIterator::setPrefixPart - Set a part of the prefix
    • RecursiveTreeIterator::valid - Check validity
    • RecursiveTreeIterator::__construct - Construct a RecursiveTreeIterator
    • Reflection::export - Exports
    • Reflection::getModifierNames - 获取修饰符的名称
    • ReflectionClass::export - 导出一个类
    • ReflectionClass::getConstant - 获取定义过的一个常量
    • ReflectionClass::getConstants - 获取一组常量
    • ReflectionClass::getConstructor - 获取类的构造函数
    • ReflectionClass::getDefaultProperties - 获取默认属性
    • ReflectionClass::getDocComment - 获取文档注释
    • ReflectionClass::getEndLine - 获取最后一行的行数
    • ReflectionClass::getExtension - 根据已定义的类获取所在扩展的 ReflectionExtension 对象
    • ReflectionClass::getExtensionName - 获取定义的类所在的扩展的名称
    • ReflectionClass::getFileName - 获取定义类的文件名
    • ReflectionClass::getInterfaceNames - 获取接口（interface）名称
    • ReflectionClass::getInterfaces - 获取接口
    • ReflectionClass::getMethod - 获取一个类方法的 ReflectionMethod。
    • ReflectionClass::getMethods - 获取方法的数组
    • ReflectionClass::getModifiers - 获取修饰符
    • ReflectionClass::getName - 获取类名
    • ReflectionClass::getNamespaceName - 获取命名空间的名称
    • ReflectionClass::getParentClass - 获取父类
    • ReflectionClass::getProperties - 获取一组属性
    • ReflectionClass::getProperty - 获取类的一个属性的 ReflectionProperty
    • ReflectionClass::getShortName - 获取短名
    • ReflectionClass::getStartLine - 获取起始行号
    • ReflectionClass::getStaticProperties - 获取静态（static）属性
    • ReflectionClass::getStaticPropertyValue - 获取静态（static）属性的值
    • ReflectionClass::getTraitAliases - 返回 trait 别名的一个数组
    • ReflectionClass::getTraitNames - 返回这个类所使用 traits 的名称的数组
    • ReflectionClass::getTraits - 返回这个类所使用的 traits 数组
    • ReflectionClass::hasConstant - 检查常量是否已经定义
    • ReflectionClass::hasMethod - 检查方法是否已定义
    • ReflectionClass::hasProperty - 检查属性是否已定义
    • ReflectionClass::implementsInterface - 接口的实现
    • ReflectionClass::inNamespace - 检查是否位于命名空间中
    • ReflectionClass::isAbstract - 检查类是否是抽象类（abstract）
    • ReflectionClass::isAnonymous - 检查类是否是匿名类
    • ReflectionClass::isCloneable - 返回了一个类是否可复制
    • ReflectionClass::isFinal - 检查类是否声明为 final
    • ReflectionClass::isInstance - 检查类的实例
    • ReflectionClass::isInstantiable - 检查类是否可实例化
    • ReflectionClass::isInterface - 检查类是否是一个接口（interface）
    • ReflectionClass::isInternal - 检查类是否由扩展或核心在内部定义
    • ReflectionClass::isIterateable - 检查是否可迭代（iterateable）
    • ReflectionClass::isSubclassOf - 检查是否为一个子类
    • ReflectionClass::isTrait - 返回了是否为一个 trait
    • ReflectionClass::isUserDefined - 检查是否由用户定义的
    • ReflectionClass::newInstance - 从指定的参数创建一个新的类实例
    • ReflectionClass::newInstanceArgs - 从给出的参数创建一个新的类实例。
    • ReflectionClass::newInstanceWithoutConstructor - 创建一个新的类实例而不调用它的构造函数
    • ReflectionClass::setStaticPropertyValue - 设置静态属性的值
    • ReflectionClass::__construct - 构造一个 ReflectionClass 类
    • ReflectionClass::__toString - 返回 ReflectionClass 对象字符串的表示形式。
    • ReflectionExtension::export - Export
    • ReflectionExtension::getClasses - Gets classes
    • ReflectionExtension::getClassNames - 获取类名称
    • ReflectionExtension::getConstants - 获取常量
    • ReflectionExtension::getDependencies - 获取依赖
    • ReflectionExtension::getFunctions - 获取扩展中的函数
    • ReflectionExtension::getINIEntries - 获取ini配置
    • ReflectionExtension::getName - 获取扩展名称
    • ReflectionExtension::getVersion - 获取扩展版本号
    • ReflectionExtension::info - 输出扩展信息
    • ReflectionExtension::isPersistent - 返回扩展是否持久化载入
    • ReflectionExtension::isTemporary - 返回扩展是否是临时载入
    • ReflectionExtension::__clone - Clones
    • ReflectionExtension::__construct - Constructs a ReflectionExtension
    • ReflectionExtension::__toString - To string
    • ReflectionFunction::export - Exports function
    • ReflectionFunction::getClosure - Returns a dynamically created closure for the function
    • ReflectionFunction::invoke - Invokes function
    • ReflectionFunction::invokeArgs - Invokes function args
    • ReflectionFunction::isDisabled - Checks if function is disabled
    • ReflectionFunction::__construct - Constructs a ReflectionFunction object
    • ReflectionFunction::__toString - To string
    • ReflectionFunctionAbstract::getClosureScopeClass - Returns the scope associated to the closure
    • ReflectionFunctionAbstract::getClosureThis - 返回本身的匿名函数
    • ReflectionFunctionAbstract::getDocComment - 获取注释内容
    • ReflectionFunctionAbstract::getEndLine - 获取结束行号
    • ReflectionFunctionAbstract::getExtension - 获取扩展信息
    • ReflectionFunctionAbstract::getExtensionName - 获取扩展名称
    • ReflectionFunctionAbstract::getFileName - 获取文件名称
    • ReflectionFunctionAbstract::getName - 获取函数名称
    • ReflectionFunctionAbstract::getNamespaceName - 获取命名空间
    • ReflectionFunctionAbstract::getNumberOfParameters - 获取参数数目
    • ReflectionFunctionAbstract::getNumberOfRequiredParameters - 获取必须输入参数个数
    • ReflectionFunctionAbstract::getParameters - 获取参数
    • ReflectionFunctionAbstract::getReturnType - Gets the specified return type of a function
    • ReflectionFunctionAbstract::getShortName - 获取函数短名称
    • ReflectionFunctionAbstract::getStartLine - 获取开始行号
    • ReflectionFunctionAbstract::getStaticVariables - 获取静态变量
    • ReflectionFunctionAbstract::hasReturnType - Checks if the function has a specified return type
    • ReflectionFunctionAbstract::inNamespace - 检查是否处于命名空间
    • ReflectionFunctionAbstract::isClosure - 检查是否是匿名函数
    • ReflectionFunctionAbstract::isDeprecated - 检查是否已经弃用
    • ReflectionFunctionAbstract::isGenerator - 判断函数是否是一个生成器函数
    • ReflectionFunctionAbstract::isInternal - 判断函数是否是内置函数
    • ReflectionFunctionAbstract::isUserDefined - 检查是否是用户定义
    • ReflectionFunctionAbstract::isVariadic - Checks if the function is variadic
    • ReflectionFunctionAbstract::returnsReference - 检查是否返回参考信息
    • ReflectionFunctionAbstract::__clone - 复制函数
    • ReflectionFunctionAbstract::__toString - 字符串化
    • ReflectionMethod::export - 输出一个回调方法
    • ReflectionMethod::getClosure - 返回一个动态建立的方法调用接口，译者注：可以使用这个返回值直接调用非公开方法。
    • ReflectionMethod::getDeclaringClass - 获取反射函数调用参数的类表达
    • ReflectionMethod::getModifiers - 获取方法的修饰符
    • ReflectionMethod::getPrototype - 返回方法原型 (如果存在)
    • ReflectionMethod::invoke - Invoke
    • ReflectionMethod::invokeArgs - 带参数执行
    • ReflectionMethod::isAbstract - 判断方法是否是抽象方法
    • ReflectionMethod::isConstructor - 判断方法是否是构造方法
    • ReflectionMethod::isDestructor - 判断方法是否是析构方法
    • ReflectionMethod::isFinal - 判断方法是否定义 final
    • ReflectionMethod::isPrivate - 判断方法是否是私有方法
    • ReflectionMethod::isProtected - 判断方法是否是保护方法 (protected)
    • ReflectionMethod::isPublic - 判断方法是否是公开方法
    • ReflectionMethod::isStatic - 判断方法是否是静态方法
    • ReflectionMethod::setAccessible - 设置方法是否访问
    • ReflectionMethod::__construct - ReflectionMethod 的构造函数
    • ReflectionMethod::__toString - 返回反射方法对象的字符串表达
    • ReflectionObject::export - Export
    • ReflectionObject::__construct - Constructs a ReflectionObject
    • ReflectionParameter::allowsNull - Checks if null is allowed
    • ReflectionParameter::canBePassedByValue - Returns whether this parameter can be passed by value
    • ReflectionParameter::export - Exports
    • ReflectionParameter::getClass - Get the type hinted class
    • ReflectionParameter::getDeclaringClass - Gets declaring class
    • ReflectionParameter::getDeclaringFunction - Gets declaring function
    • ReflectionParameter::getDefaultValue - Gets default parameter value
    • ReflectionParameter::getDefaultValueConstantName - Returns the default value's constant name if default value is constant or null
    • ReflectionParameter::getName - Gets parameter name
    • ReflectionParameter::getPosition - Gets parameter position
    • ReflectionParameter::getType - Gets a parameter's type
    • ReflectionParameter::hasType - Checks if parameter has a type
    • ReflectionParameter::isArray - Checks if parameter expects an array
    • ReflectionParameter::isCallable - Returns whether parameter MUST be callable
    • ReflectionParameter::isDefaultValueAvailable - Checks if a default value is available
    • ReflectionParameter::isDefaultValueConstant - Returns whether the default value of this parameter is constant
    • ReflectionParameter::isOptional - Checks if optional
    • ReflectionParameter::isPassedByReference - Checks if passed by reference
    • ReflectionParameter::isVariadic - Checks if the parameter is variadic
    • ReflectionParameter::__clone - Clone
    • ReflectionParameter::__construct - Construct
    • ReflectionParameter::__toString - To string
    • ReflectionProperty::export - Export
    • ReflectionProperty::getDeclaringClass - Gets declaring class
    • ReflectionProperty::getDocComment - Gets the property doc comment
    • ReflectionProperty::getModifiers - Gets modifiers
    • ReflectionProperty::getName - Gets property name
    • ReflectionProperty::getValue - Gets value
    • ReflectionProperty::isDefault - Checks if property is a default property
    • ReflectionProperty::isPrivate - Checks if property is private
    • ReflectionProperty::isProtected - Checks if property is protected
    • ReflectionProperty::isPublic - Checks if property is public
    • ReflectionProperty::isStatic - Checks if property is static
    • ReflectionProperty::setAccessible - Set property accessibility
    • ReflectionProperty::setValue - Set property value
    • ReflectionProperty::__clone - Clone
    • ReflectionProperty::__construct - Construct a ReflectionProperty object
    • ReflectionProperty::__toString - To string
    • ReflectionZendExtension::export - Export
    • ReflectionZendExtension::getAuthor - Gets author
    • ReflectionZendExtension::getCopyright - Gets copyright
    • ReflectionZendExtension::getName - Gets name
    • ReflectionZendExtension::getURL - Gets URL
    • ReflectionZendExtension::getVersion - Gets version
    • ReflectionZendExtension::__clone - Clone handler
    • ReflectionZendExtension::__construct - Constructor
    • ReflectionZendExtension::__toString - To string handler
    • Reflector::export - Exports
    • Reflector::__toString - 转化成字符串
    • RegexIterator::accept - Get accept status
    • RegexIterator::getFlags - Get flags
    • RegexIterator::getMode - Returns operation mode.
    • RegexIterator::getPregFlags - Returns the regular expression flags.
    • RegexIterator::getRegex - Returns current regular expression
    • RegexIterator::setFlags - Sets the flags.
    • RegexIterator::setMode - Sets the operation mode.
    • RegexIterator::setPregFlags - Sets the regular expression flags.
    • RegexIterator::__construct - Create a new RegexIterator
    • register_shutdown_function - Register a function for execution on shutdown
    • register_tick_function - Register a function for execution on each tick
    • rename - 重命名一个文件或目录
    • rename_function - Renames orig_name to new_name in the global function table
    • reset - 将数组的内部指针指向第一个单元
    • ResourceBundle::count - Get number of elements in the bundle
    • ResourceBundle::create - Create a resource bundle
    • ResourceBundle::get - Get data from the bundle
    • ResourceBundle::getErrorCode - Get bundle's last error code.
    • ResourceBundle::getErrorMessage - Get bundle's last error message.
    • ResourceBundle::getLocales - Get supported locales
    • restore_error_handler - 还原之前的错误处理函数
    • restore_exception_handler - 恢复之前定义过的异常处理函数。
    • restore_include_path - 还原 include_path 配置选项的值
    • rewind - 倒回文件指针的位置
    • rewinddir - 倒回目录句柄
    • rmdir - 删除目录
    • round - 对浮点数进行四舍五入
    • rpm_close - Closes an RPM file
    • rpm_get_tag - Retrieves a header tag from an RPM file
    • rpm_is_valid - Tests a filename for validity as an RPM file
    • rpm_open - Opens an RPM file
    • rpm_version - Returns a string representing the current version of the rpmreader extension
    • RRDCreator::addArchive - Adds RRA - archive of data values for each data source.
    • RRDCreator::addDataSource - Adds data source definition for RRD database.
    • RRDCreator::save - Saves the RRD database to a file
    • RRDCreator::__construct - Creates new RRDCreator instance
    • rrdc_disconnect - Close any outstanding connection to rrd caching daemon
    • RRDGraph::save - Saves the result of query into image
    • RRDGraph::saveVerbose - Saves the RRD database query into image and returns the verbose information about generated graph.
    • RRDGraph::setOptions - Sets the options for rrd graph export
    • RRDGraph::__construct - Creates new RRDGraph instance
    • RRDUpdater::update - Update the RRD database file
    • RRDUpdater::__construct - Creates new RRDUpdater instance
    • rrd_create - Creates rrd database file
    • rrd_error - Gets latest error message.
    • rrd_fetch - Fetch the data for graph as array.
    • rrd_first - Gets the timestamp of the first sample from rrd file.
    • rrd_graph - Creates image from a data.
    • rrd_info - Gets information about rrd file
    • rrd_last - Gets unix timestamp of the last sample.
    • rrd_lastupdate - Gets information about last updated data.
    • rrd_restore - Restores the RRD file from XML dump.
    • rrd_tune - Tunes some RRD database file header options.
    • rrd_update - Updates the RRD database.
    • rrd_version - Gets information about underlying rrdtool library
    • rrd_xport - Exports the information about RRD database.
    • rsort - 对数组逆向排序
    • rtrim - 删除字符串末端的空白字符（或者其他字符）
    • runkit_class_adopt - Convert a base class to an inherited class, add ancestral methods when appropriate
    • runkit_class_emancipate - Convert an inherited class to a base class, removes any method whose scope is ancestral
    • runkit_constant_add - Similar to define(), but allows defining in class definitions as well
    • runkit_constant_redefine - Redefine an already defined constant
    • runkit_constant_remove - Remove/Delete an already defined constant
    • runkit_function_add - Add a new function, similar to create_function
    • runkit_function_copy - Copy a function to a new function name
    • runkit_function_redefine - Replace a function definition with a new implementation
    • runkit_function_remove - Remove a function definition
    • runkit_function_rename - Change a function's name
    • runkit_import - Process a PHP file importing function and class definitions, overwriting where appropriate
    • runkit_lint - Check the PHP syntax of the specified php code
    • runkit_lint_file - Check the PHP syntax of the specified file
    • runkit_method_add - Dynamically adds a new method to a given class
    • runkit_method_copy - Copies a method from class to another
    • runkit_method_redefine - Dynamically changes the code of the given method
    • runkit_method_remove - Dynamically removes the given method
    • runkit_method_rename - Dynamically changes the name of the given method
    • runkit_return_value_used - Determines if the current functions return value will be used
    • Runkit_Sandbox - Runkit Sandbox Class -- PHP Virtual Machine
    • runkit_sandbox_output_handler - Specify a function to capture and/or process output from a runkit sandbox
    • Runkit_Sandbox_Parent - Runkit Anti-Sandbox Class
    • runkit_superglobals - Return numerically indexed array of registered superglobals
  • s
    • SAMConnection::commit - Commits (completes) the current unit of work.
    • SAMConnection::connect - Establishes a connection to a Messaging Server
    • SAMConnection::disconnect - Disconnects from a Messaging Server
    • SAMConnection::errno - Contains the unique numeric error code of the last executed SAM operation.
    • SAMConnection::error - Contains the text description of the last failed SAM operation.
    • SAMConnection::isConnected - Queries whether a connection is established to a Messaging Server
    • SAMConnection::peek - Read a message from a queue without removing it from the queue.
    • SAMConnection::peekAll - Read one or more messages from a queue without removing it from the queue.
    • SAMConnection::receive - Receive a message from a queue or subscription.
    • SAMConnection::remove - Remove a message from a queue.
    • SAMConnection::rollback - Cancels (rolls back) an in-flight unit of work.
    • SAMConnection::send - Send a message to a queue or publish an item to a topic.
    • SAMConnection::setDebug - Turn on or off additional debugging output.
    • SAMConnection::subscribe - Create a subscription to a specified topic.
    • SAMConnection::unsubscribe - Cancel a subscription to a specified topic.
    • SAMConnection::__construct - Creates a new connection to a Messaging Server
    • SAMMessage::body - The body of the message.
    • SAMMessage::header - The header properties of the message.
    • SAMMessage::__construct - Creates a new Message object
    • SCA::createDataObject - create an SDO
    • SCA::getService - Obtain a proxy for a service
    • scandir - 列出指定路径中的文件和目录
    • SCA_LocalProxy::createDataObject - create an SDO
    • SCA_SoapProxy::createDataObject - create an SDO
    • SDO_DAS_ChangeSummary::beginLogging - Begin change logging
    • SDO_DAS_ChangeSummary::endLogging - End change logging
    • SDO_DAS_ChangeSummary::getChangedDataObjects - Get the changed data objects from a change summary
    • SDO_DAS_ChangeSummary::getChangeType - Get the type of change made to an SDO_DataObject
    • SDO_DAS_ChangeSummary::getOldContainer - Get the old container for a deleted SDO_DataObject
    • SDO_DAS_ChangeSummary::getOldValues - Get the old values for a given changed SDO_DataObject
    • SDO_DAS_ChangeSummary::isLogging - Test to see whether change logging is switched on
    • SDO_DAS_DataFactory::addPropertyToType - Adds a property to a type
    • SDO_DAS_DataFactory::addType - Add a new type to a model
    • SDO_DAS_DataFactory::getDataFactory - Get a data factory instance
    • SDO_DAS_DataObject::getChangeSummary - Get a data object's change summary
    • SDO_DAS_Relational::applyChanges - Applies the changes made to a data graph back to the database.
    • SDO_DAS_Relational::createRootDataObject - Returns the special root object in an otherwise empty data graph. Used when creating a data graph from scratch.
    • SDO_DAS_Relational::executePreparedQuery - Executes an SQL query passed as a prepared statement, with a list of values to substitute for placeholders, and return the results as a normalised data graph.
    • SDO_DAS_Relational::executeQuery - Executes a given SQL query against a relational database and returns the results as a normalised data graph.
    • SDO_DAS_Relational::__construct - Creates an instance of a Relational Data Access Service
    • SDO_DAS_Setting::getListIndex - Get the list index for a changed many-valued property
    • SDO_DAS_Setting::getPropertyIndex - Get the property index for a changed property
    • SDO_DAS_Setting::getPropertyName - Get the property name for a changed property
    • SDO_DAS_Setting::getValue - Get the old value for the changed property
    • SDO_DAS_Setting::isSet - Test whether a property was set prior to being modified
    • SDO_DAS_XML::addTypes - To load a second or subsequent schema file to a SDO_DAS_XML object
    • SDO_DAS_XML::create - To create SDO_DAS_XML object for a given schema file
    • SDO_DAS_XML::createDataObject - Creates SDO_DataObject for a given namespace URI and type name
    • SDO_DAS_XML::createDocument - Creates an XML Document object from scratch, without the need to load a document from a file or string.
    • SDO_DAS_XML::loadFile - Returns SDO_DAS_XML_Document object for a given path to xml instance document
    • SDO_DAS_XML::loadString - Returns SDO_DAS_XML_Document for a given xml instance string
    • SDO_DAS_XML::saveFile - Saves the SDO_DAS_XML_Document object to a file
    • SDO_DAS_XML::saveString - Saves the SDO_DAS_XML_Document object to a string
    • SDO_DAS_XML_Document::getRootDataObject - Returns the root SDO_DataObject
    • SDO_DAS_XML_Document::getRootElementName - Returns root element's name
    • SDO_DAS_XML_Document::getRootElementURI - Returns root element's URI string
    • SDO_DAS_XML_Document::setEncoding - Sets the given string as encoding
    • SDO_DAS_XML_Document::setXMLDeclaration - Sets the xml declaration
    • SDO_DAS_XML_Document::setXMLVersion - Sets the given string as xml version
    • SDO_DataFactory::create - Create an SDO_DataObject
    • SDO_DataObject::clear - Clear an SDO_DataObject's properties
    • SDO_DataObject::createDataObject - Create a child SDO_DataObject
    • SDO_DataObject::getContainer - Get a data object's container
    • SDO_DataObject::getSequence - Get the sequence for a data object
    • SDO_DataObject::getTypeName - Return the name of the type for a data object.
    • SDO_DataObject::getTypeNamespaceURI - Return the namespace URI of the type for a data object.
    • SDO_Exception::getCause - Get the cause of the exception.
    • SDO_List::insert - Insert into a list
    • SDO_Model_Property::getContainingType - Get the SDO_Model_Type which contains this property
    • SDO_Model_Property::getDefault - Get the default value for the property
    • SDO_Model_Property::getName - Get the name of the SDO_Model_Property
    • SDO_Model_Property::getType - Get the SDO_Model_Type of the property
    • SDO_Model_Property::isContainment - Test to see if the property defines a containment relationship
    • SDO_Model_Property::isMany - Test to see if the property is many-valued
    • SDO_Model_ReflectionDataObject::export - Get a string describing the SDO_DataObject.
    • SDO_Model_ReflectionDataObject::getContainmentProperty - Get the property which defines the containment relationship to the data object
    • SDO_Model_ReflectionDataObject::getInstanceProperties - Get the instance properties of the SDO_DataObject
    • SDO_Model_ReflectionDataObject::getType - Get the SDO_Model_Type for the SDO_DataObject
    • SDO_Model_ReflectionDataObject::__construct - Construct an SDO_Model_ReflectionDataObject
    • SDO_Model_Type::getBaseType - Get the base type for this type
    • SDO_Model_Type::getName - Get the name of the type
    • SDO_Model_Type::getNamespaceURI - Get the namespace URI of the type
    • SDO_Model_Type::getProperties - Get the SDO_Model_Property objects defined for the type
    • SDO_Model_Type::getProperty - Get an SDO_Model_Property of the type
    • SDO_Model_Type::isAbstractType - Test to see if this SDO_Model_Type is an abstract data type
    • SDO_Model_Type::isDataType - Test to see if this SDO_Model_Type is a primitive data type
    • SDO_Model_Type::isInstance - Test for an SDO_DataObject being an instance of this SDO_Model_Type
    • SDO_Model_Type::isOpenType - Test to see if this type is an open type
    • SDO_Model_Type::isSequencedType - Test to see if this is a sequenced type
    • SDO_Sequence::getProperty - Return the property for the specified sequence index.
    • SDO_Sequence::insert - Insert into a sequence
    • SDO_Sequence::move - Move an item to another sequence position
    • SeekableIterator::seek - Seeks to a position
    • sem_acquire - Acquire a semaphore
    • sem_get - Get a semaphore id
    • sem_release - Release a semaphore
    • sem_remove - Remove a semaphore
    • Serializable::serialize - 对象的字符串表示
    • Serializable::unserialize - 构造对象
    • serialize - 产生一个可存储的值的表示
    • SessionHandler::close - Close the session
    • SessionHandler::create_sid - Return a new session ID
    • SessionHandler::destroy - Destroy a session
    • SessionHandler::gc - Cleanup old sessions
    • SessionHandler::open - Initialize session
    • SessionHandler::read - Read session data
    • SessionHandler::write - Write session data
    • SessionHandlerInterface::close - Close the session
    • SessionHandlerInterface::destroy - Destroy a session
    • SessionHandlerInterface::gc - Cleanup old sessions
    • SessionHandlerInterface::open - Initialize session
    • SessionHandlerInterface::read - Read session data
    • SessionHandlerInterface::write - Write session data
    • session_abort - Discard session array changes and finish session
    • session_cache_expire - 返回当前缓存的到期时间
    • session_cache_limiter - 读取/设置缓存限制器
    • session_commit - session_write_close 的别名
    • session_create_id - Create new session id
    • session_decode - 解码会话数据
    • session_destroy - 销毁一个会话中的全部数据
    • session_encode - 将当前会话数据编码为一个字符串
    • session_gc - Perform session data garbage collection
    • session_get_cookie_params - 获取会话 cookie 参数
    • session_id - 获取/设置当前会话 ID
    • session_is_registered - 检查变量是否在会话中已经注册
    • session_module_name - 获取/设置会话模块名称
    • session_name - 读取/设置会话名称
    • session_pgsql_add_error - Increments error counts and sets last error message
    • session_pgsql_get_error - Returns number of errors and last error message
    • session_pgsql_get_field - Get custom field value
    • session_pgsql_reset - Reset connection to session database servers
    • session_pgsql_set_field - Set custom field value
    • session_pgsql_status - Get current save handler status
    • session_regenerate_id - 使用新生成的会话 ID 更新现有会话 ID
    • session_register - Register one or more global variables with the current session
    • session_register_shutdown - 关闭会话
    • session_reset - Re-initialize session array with original values
    • session_save_path - 读取/设置当前会话的保存路径
    • session_set_cookie_params - 设置会话 cookie 参数
    • session_set_save_handler - 设置用户自定义会话存储函数
    • session_start - 启动新会话或者重用现有会话
    • session_status - 返回当前会话状态
    • session_unregister - Unregister a global variable from the current session
    • session_unset - 释放所有的会话变量
    • session_write_close - Write session data and end session
    • setcookie - Send a cookie
    • setlocale - 设置地区信息
    • setproctitle - Set the process title
    • setrawcookie - Send a cookie without urlencoding the cookie value
    • setthreadtitle - Set the thread title
    • settype - 设置变量的类型
    • set_error_handler - 设置一个用户定义的错误处理函数
    • set_exception_handler - 设置一个用户定义的异常处理函数。
    • set_file_buffer - stream_set_write_buffer 的别名
    • set_include_path - 设置 include_path 配置选项
    • set_magic_quotes_runtime - 设置当前 magic_quotes_runtime 配置选项的激活状态
    • set_socket_blocking - 别名 stream_set_blocking
    • set_time_limit - 设置脚本最大执行时间
    • sha1 - 计算字符串的 sha1 散列值
    • sha1_file - 计算文件的 sha1 散列值
    • shell_exec - 通过 shell 环境执行命令，并且将完整的输出以字符串的方式返回。
    • shmop_close - Close shared memory block
    • shmop_delete - Delete shared memory block
    • shmop_open - Create or open shared memory block
    • shmop_read - Read data from shared memory block
    • shmop_size - Get size of shared memory block
    • shmop_write - Write data into shared memory block
    • shm_attach - Creates or open a shared memory segment
    • shm_detach - Disconnects from shared memory segment
    • shm_get_var - Returns a variable from shared memory
    • shm_has_var - Check whether a specific entry exists
    • shm_put_var - Inserts or updates a variable in shared memory
    • shm_remove - Removes shared memory from Unix systems
    • shm_remove_var - Removes a variable from shared memory
    • show_source - 别名 highlight_file
    • shuffle - 将数组打乱
    • similar_text - 计算两个字符串的相似度
    • SimpleXMLElement::addAttribute - Adds an attribute to the SimpleXML element
    • SimpleXMLElement::addChild - Adds a child element to the XML node
    • SimpleXMLElement::asXML - Return a well-formed XML string based on SimpleXML element
    • SimpleXMLElement::attributes - Identifies an element's attributes
    • SimpleXMLElement::children - Finds children of given node
    • SimpleXMLElement::count - Counts the children of an element
    • SimpleXMLElement::getDocNamespaces - Returns namespaces declared in document
    • SimpleXMLElement::getName - Gets the name of the XML element
    • SimpleXMLElement::getNamespaces - Returns namespaces used in document
    • SimpleXMLElement::registerXPathNamespace - Creates a prefix/ns context for the next XPath query
    • SimpleXMLElement::saveXML - 别名 SimpleXMLElement::asXML
    • SimpleXMLElement::xpath - Runs XPath query on XML data
    • SimpleXMLElement::__construct - Creates a new SimpleXMLElement object
    • SimpleXMLElement::__toString - Returns the string content
    • SimpleXMLIterator::current - Returns the current element
    • SimpleXMLIterator::getChildren - Returns the sub-elements of the current element
    • SimpleXMLIterator::hasChildren - Checks whether the current element has sub elements.
    • SimpleXMLIterator::key - Return current key
    • SimpleXMLIterator::next - Move to next element
    • SimpleXMLIterator::rewind - Rewind to the first element
    • SimpleXMLIterator::valid - Check whether the current element is valid
    • simplexml_import_dom - Get a SimpleXMLElement object from a DOM node.
    • simplexml_load_file - Interprets an XML file into an object
    • simplexml_load_string - Interprets a string of XML into an object
    • sin - 正弦
    • sinh - 双曲正弦
    • sizeof - count 的别名
    • sleep - 延缓执行
    • snmp2_get - Fetch an SNMP object
    • snmp2_getnext - Fetch the SNMP object which follows the given object id
    • snmp2_real_walk - Return all objects including their respective object ID within the specified one
    • snmp2_set - Set the value of an SNMP object
    • snmp2_walk - Fetch all the SNMP objects from an agent
    • snmp3_get - Fetch an SNMP object
    • snmp3_getnext - Fetch the SNMP object which follows the given object id
    • snmp3_real_walk - Return all objects including their respective object ID within the specified one
    • snmp3_set - Set the value of an SNMP object
    • snmp3_walk - Fetch all the SNMP objects from an agent
    • SNMP::close - Close SNMP session
    • SNMP::get - Fetch an SNMP object
    • SNMP::getErrno - Get last error code
    • SNMP::getError - Get last error message
    • SNMP::getnext - Fetch an SNMP object which follows the given object id
    • SNMP::set - Set the value of an SNMP object
    • SNMP::setSecurity - Configures security-related SNMPv3 session parameters
    • SNMP::walk - Fetch SNMP object subtree
    • SNMP::__construct - Creates SNMP instance representing session to remote SNMP agent
    • snmpget - 获取一个 SNMP 对象
    • snmpgetnext - Fetch the SNMP object which follows the given object id
    • snmprealwalk - 返回指定的所有对象，包括它们各自的对象 ID
    • snmpset - 设置一个 SNMP 对象
    • snmpwalk - 从代理返回所有的 SNMP 对象
    • snmpwalkoid - 查询关于网络实体的信息树
    • snmp_get_quick_print - 返回 UCD 库中 quick_print 设置的当前值
    • snmp_get_valueretrieval - Return the method how the SNMP values will be returned
    • snmp_read_mib - Reads and parses a MIB file into the active MIB tree
    • snmp_set_enum_print - Return all values that are enums with their enum value instead of the raw integer
    • snmp_set_oid_numeric_print - Set the OID output format
    • snmp_set_oid_output_format - Set the OID output format
    • snmp_set_quick_print - 设置 UCD SNMP 库中 quick_print 的值
    • snmp_set_valueretrieval - Specify the method how the SNMP values will be returned
    • SoapClient::SoapClient - SoapClient constructor
    • SoapClient::__call - Calls a SOAP function (deprecated)
    • SoapClient::__construct - SoapClient constructor
    • SoapClient::__doRequest - Performs a SOAP request
    • SoapClient::__getFunctions - Returns list of available SOAP functions
    • SoapClient::__getLastRequest - Returns last SOAP request
    • SoapClient::__getLastRequestHeaders - Returns the SOAP headers from the last request
    • SoapClient::__getLastResponse - Returns last SOAP response
    • SoapClient::__getLastResponseHeaders - Returns the SOAP headers from the last response
    • SoapClient::__getTypes - Returns a list of SOAP types
    • SoapClient::__setCookie - The __setCookie purpose
    • SoapClient::__setLocation - Sets the location of the Web service to use
    • SoapClient::__setSoapHeaders - Sets SOAP headers for subsequent calls
    • SoapClient::__soapCall - Calls a SOAP function
    • SoapFault::SoapFault - SoapFault constructor
    • SoapFault::__construct - SoapFault constructor
    • SoapFault::__toString - Obtain a string representation of a SoapFault
    • SoapHeader::SoapHeader - SoapHeader constructor
    • SoapHeader::__construct - SoapHeader constructor
    • SoapParam::SoapParam - SoapParam constructor
    • SoapParam::__construct - SoapParam constructor
    • SoapServer::addFunction - 添加一个或多个函数来处理SOAP请求
    • SoapServer::addSoapHeader - Add a SOAP header to the response
    • SoapServer::fault - Issue SoapServer fault indicating an error
    • SoapServer::getFunctions - Returns list of defined functions
    • SoapServer::handle - Handles a SOAP request
    • SoapServer::setClass - Sets the class which handles SOAP requests
    • SoapServer::setObject - Sets the object which will be used to handle SOAP requests
    • SoapServer::setPersistence - Sets SoapServer persistence mode
    • SoapServer::SoapServer - SoapServer constructor
    • SoapServer::__construct - SoapServer constructor
    • SoapVar::SoapVar - SoapVar constructor
    • SoapVar::__construct - SoapVar constructor
    • socket_accept - Accepts a connection on a socket
    • socket_bind - 给套接字绑定名字
    • socket_clear_error - 清除套接字或者最后的错误代码上的错误
    • socket_close - 关闭套接字资源
    • socket_cmsg_space - Calculate message buffer size
    • socket_connect - 开启一个套接字连接
    • socket_create - 创建一个套接字（通讯节点）
    • socket_create_listen - Opens a socket on port to accept connections
    • socket_create_pair - Creates a pair of indistinguishable sockets and stores them in an array
    • socket_getopt - 别名 socket_get_option
    • socket_getpeername - Queries the remote side of the given socket which may either result in host/port or in a Unix filesystem path, dependent on its type
    • socket_getsockname - Queries the local side of the given socket which may either result in host/port or in a Unix filesystem path, dependent on its type
    • socket_get_option - Gets socket options for the socket
    • socket_get_status - 别名 stream_get_meta_data
    • socket_import_stream - Import a stream
    • socket_last_error - Returns the last error on the socket
    • socket_listen - Listens for a connection on a socket
    • socket_read - Reads a maximum of length bytes from a socket
    • socket_recv - 从已连接的socket接收数据
    • socket_recvfrom - Receives data from a socket whether or not it is connection-oriented
    • socket_recvmsg - Read a message
    • socket_select - Runs the select() system call on the given arrays of sockets with a specified timeout
    • socket_send - Sends data to a connected socket
    • socket_sendmsg - Send a message
    • socket_sendto - Sends a message to a socket, whether it is connected or not
    • socket_setopt - 别名 socket_set_option
    • socket_set_block - Sets blocking mode on a socket resource
    • socket_set_blocking - 别名 stream_set_blocking
    • socket_set_nonblock - Sets nonblocking mode for file descriptor fd
    • socket_set_option - Sets socket options for the socket
    • socket_set_timeout - 别名 stream_set_timeout
    • socket_shutdown - Shuts down a socket for receiving, sending, or both
    • socket_strerror - Return a string describing a socket error
    • socket_write - Write to a socket
    • SolrClient::addDocument - Adds a document to the index
    • SolrClient::addDocuments - Adds a collection of SolrInputDocument instances to the index
    • SolrClient::commit - Finalizes all add/deletes made to the index
    • SolrClient::deleteById - Delete by Id
    • SolrClient::deleteByIds - Deletes by Ids
    • SolrClient::deleteByQueries - Removes all documents matching any of the queries
    • SolrClient::deleteByQuery - Deletes all documents matching the given query
    • SolrClient::getById - Get Document By Id. Utilizes Solr Realtime Get (RTG).
    • SolrClient::getByIds - Get Documents by their Ids. Utilizes Solr Realtime Get (RTG).
    • SolrClient::getDebug - Returns the debug data for the last connection attempt
    • SolrClient::getOptions - Returns the client options set internally
    • SolrClient::optimize - Defragments the index
    • SolrClient::ping - Checks if Solr server is still up
    • SolrClient::query - Sends a query to the server
    • SolrClient::request - Sends a raw update request
    • SolrClient::rollback - Rollbacks all add/deletes made to the index since the last commit
    • SolrClient::setResponseWriter - Sets the response writer used to prepare the response from Solr
    • SolrClient::setServlet - Changes the specified servlet type to a new value
    • SolrClient::system - Retrieve Solr Server information
    • SolrClient::threads - Checks the threads status
    • SolrClient::__construct - Constructor for the SolrClient object
    • SolrClient::__destruct - Destructor for SolrClient
    • SolrClientException::getInternalInfo - Returns internal information where the Exception was thrown
    • SolrCollapseFunction::getField - Returns the field that is being collapsed on.
    • SolrCollapseFunction::getHint - Returns collapse hint
    • SolrCollapseFunction::getMax - Returns max parameter
    • SolrCollapseFunction::getMin - Returns min parameter
    • SolrCollapseFunction::getNullPolicy - Returns null policy
    • SolrCollapseFunction::getSize - Returns size parameter
    • SolrCollapseFunction::setField - Sets the field to collapse on
    • SolrCollapseFunction::setHint - Sets collapse hint
    • SolrCollapseFunction::setMax - Selects the group heads by the max value of a numeric field or function query.
    • SolrCollapseFunction::setMin - Sets the initial size of the collapse data structures when collapsing on a numeric field only
    • SolrCollapseFunction::setNullPolicy - Sets the NULL Policy
    • SolrCollapseFunction::setSize - Sets the initial size of the collapse data structures when collapsing on a numeric field only.
    • SolrCollapseFunction::__construct - Constructor
    • SolrCollapseFunction::__toString - Returns a string representing the constructed collapse function
    • SolrDisMaxQuery::addBigramPhraseField - Adds a Phrase Bigram Field (pf2 parameter)
    • SolrDisMaxQuery::addBoostQuery - Adds a boost query field with value and optional boost (bq parameter)
    • SolrDisMaxQuery::addPhraseField - Adds a Phrase Field (pf parameter)
    • SolrDisMaxQuery::addQueryField - Add a query field with optional boost (qf parameter)
    • SolrDisMaxQuery::addTrigramPhraseField - Adds a Trigram Phrase Field (pf3 parameter)
    • SolrDisMaxQuery::addUserField - Adds a field to User Fields Parameter (uf)
    • SolrDisMaxQuery::removeBigramPhraseField - Removes phrase bigram field (pf2 parameter)
    • SolrDisMaxQuery::removeBoostQuery - Removes a boost query partial by field name (bq)
    • SolrDisMaxQuery::removePhraseField - Removes a Phrase Field (pf parameter)
    • SolrDisMaxQuery::removeQueryField - Removes a Query Field (qf parameter)
    • SolrDisMaxQuery::removeTrigramPhraseField - Removes a Trigram Phrase Field (pf3 parameter)
    • SolrDisMaxQuery::removeUserField - Removes a field from The User Fields Parameter (uf)
    • SolrDisMaxQuery::setBigramPhraseFields - Sets Bigram Phrase Fields and their boosts (and slops) using pf2 parameter
    • SolrDisMaxQuery::setBigramPhraseSlop - Sets Bigram Phrase Slop (ps2 parameter)
    • SolrDisMaxQuery::setBoostFunction - Sets a Boost Function (bf parameter).
    • SolrDisMaxQuery::setBoostQuery - Directly Sets Boost Query Parameter (bq)
    • SolrDisMaxQuery::setMinimumMatch - Set Minimum "Should" Match (mm)
    • SolrDisMaxQuery::setPhraseFields - Sets Phrase Fields and their boosts (and slops) using pf2 parameter
    • SolrDisMaxQuery::setPhraseSlop - Sets the default slop on phrase queries (ps parameter)
    • SolrDisMaxQuery::setQueryAlt - Set Query Alternate (q.alt parameter)
    • SolrDisMaxQuery::setQueryPhraseSlop - specifies the amount of slop permitted on phrase queries explicitly included in the user's query string (qf parameter)
    • SolrDisMaxQuery::setTieBreaker - Sets Tie Breaker parameter (tie parameter)
    • SolrDisMaxQuery::setTrigramPhraseFields - Directly Sets Trigram Phrase Fields (pf3 parameter)
    • SolrDisMaxQuery::setTrigramPhraseSlop - Sets Trigram Phrase Slop (ps3 parameter)
    • SolrDisMaxQuery::setUserFields - Sets User Fields parameter (uf)
    • SolrDisMaxQuery::useDisMaxQueryParser - Switch QueryParser to be DisMax Query Parser
    • SolrDisMaxQuery::useEDisMaxQueryParser - Switch QueryParser to be EDisMax
    • SolrDisMaxQuery::__construct - Class Constructor
    • SolrDocument::addField - Adds a field to the document
    • SolrDocument::clear - Drops all the fields in the document
    • SolrDocument::current - Retrieves the current field
    • SolrDocument::deleteField - Removes a field from the document
    • SolrDocument::fieldExists - Checks if a field exists in the document
    • SolrDocument::getChildDocuments - Returns an array of child documents (SolrDocument)
    • SolrDocument::getChildDocumentsCount - Returns the number of child documents
    • SolrDocument::getField - Retrieves a field by name
    • SolrDocument::getFieldCount - Returns the number of fields in this document
    • SolrDocument::getFieldNames - Returns an array of fields names in the document
    • SolrDocument::getInputDocument - Returns a SolrInputDocument equivalent of the object
    • SolrDocument::hasChildDocuments - Checks whether the document has any child documents
    • SolrDocument::key - Retrieves the current key
    • SolrDocument::merge - Merges source to the current SolrDocument
    • SolrDocument::next - Moves the internal pointer to the next field
    • SolrDocument::offsetExists - Checks if a particular field exists
    • SolrDocument::offsetGet - Retrieves a field
    • SolrDocument::offsetSet - Adds a field to the document
    • SolrDocument::offsetUnset - Removes a field
    • SolrDocument::reset - This is an alias to SolrDocument::clear()
    • SolrDocument::rewind - Resets the internal pointer to the beginning
    • SolrDocument::serialize - Used for custom serialization
    • SolrDocument::sort - Sorts the fields in the document
    • SolrDocument::toArray - Returns an array representation of the document
    • SolrDocument::unserialize - Custom serialization of SolrDocument objects
    • SolrDocument::valid - Checks if the current position internally is still valid
    • SolrDocument::__clone - Creates a copy of a SolrDocument object
    • SolrDocument::__construct - Constructor
    • SolrDocument::__destruct - Destructor
    • SolrDocument::__get - Access the field as a property
    • SolrDocument::__isset - Checks if a field exists
    • SolrDocument::__set - Adds another field to the document
    • SolrDocument::__unset - Removes a field from the document
    • SolrDocumentField::__construct - Constructor
    • SolrDocumentField::__destruct - Destructor
    • SolrException::getInternalInfo - Returns internal information where the Exception was thrown
    • SolrGenericResponse::__construct - Constructor
    • SolrGenericResponse::__destruct - Destructor
    • SolrIllegalArgumentException::getInternalInfo - Returns internal information where the Exception was thrown
    • SolrIllegalOperationException::getInternalInfo - Returns internal information where the Exception was thrown
    • SolrInputDocument::addChildDocument - Adds a child document for block indexing
    • SolrInputDocument::addChildDocuments - Adds an array of child documents
    • SolrInputDocument::addField - Adds a field to the document
    • SolrInputDocument::clear - Resets the input document
    • SolrInputDocument::deleteField - Removes a field from the document
    • SolrInputDocument::fieldExists - Checks if a field exists
    • SolrInputDocument::getBoost - Retrieves the current boost value for the document
    • SolrInputDocument::getChildDocuments - Returns an array of child documents (SolrInputDocument)
    • SolrInputDocument::getChildDocumentsCount - Returns the number of child documents
    • SolrInputDocument::getField - Retrieves a field by name
    • SolrInputDocument::getFieldBoost - Retrieves the boost value for a particular field
    • SolrInputDocument::getFieldCount - Returns the number of fields in the document
    • SolrInputDocument::getFieldNames - Returns an array containing all the fields in the document
    • SolrInputDocument::hasChildDocuments - Returns true if the document has any child documents
    • SolrInputDocument::merge - Merges one input document into another
    • SolrInputDocument::reset - This is an alias of SolrInputDocument::clear
    • SolrInputDocument::setBoost - Sets the boost value for this document
    • SolrInputDocument::setFieldBoost - Sets the index-time boost value for a field
    • SolrInputDocument::sort - Sorts the fields within the document
    • SolrInputDocument::toArray - Returns an array representation of the input document
    • SolrInputDocument::__clone - Creates a copy of a SolrDocument
    • SolrInputDocument::__construct - Constructor
    • SolrInputDocument::__destruct - Destructor
    • SolrModifiableParams::__construct - Constructor
    • SolrModifiableParams::__destruct - Destructor
    • SolrObject::getPropertyNames - Returns an array of all the names of the properties
    • SolrObject::offsetExists - Checks if the property exists
    • SolrObject::offsetGet - Used to retrieve a property
    • SolrObject::offsetSet - Sets the value for a property
    • SolrObject::offsetUnset - Unsets the value for the property
    • SolrObject::__construct - Creates Solr object
    • SolrObject::__destruct - Destructor
    • SolrParams::add - This is an alias for SolrParams::addParam
    • SolrParams::addParam - Adds a parameter to the object
    • SolrParams::get - This is an alias for SolrParams::getParam
    • SolrParams::getParam - Returns a parameter value
    • SolrParams::getParams - Returns an array of non URL-encoded parameters
    • SolrParams::getPreparedParams - Returns an array of URL-encoded parameters
    • SolrParams::serialize - Used for custom serialization
    • SolrParams::set - An alias of SolrParams::setParam
    • SolrParams::setParam - Sets the parameter to the specified value
    • SolrParams::toString - Returns all the name-value pair parameters in the object
    • SolrParams::unserialize - Used for custom serialization
    • SolrPingResponse::getResponse - Returns the response from the server
    • SolrPingResponse::__construct - Constructor
    • SolrPingResponse::__destruct - Destructor
    • SolrQuery::addExpandFilterQuery - Overrides main filter query, determines which documents to include in the main group.
    • SolrQuery::addExpandSortField - Orders the documents within the expanded groups (expand.sort parameter).
    • SolrQuery::addFacetDateField - Maps to facet.date
    • SolrQuery::addFacetDateOther - Adds another facet.date.other parameter
    • SolrQuery::addFacetField - Adds another field to the facet
    • SolrQuery::addFacetQuery - Adds a facet query
    • SolrQuery::addField - Specifies which fields to return in the result
    • SolrQuery::addFilterQuery - Specifies a filter query
    • SolrQuery::addGroupField - Add a field to be used to group results.
    • SolrQuery::addGroupFunction - Allows grouping results based on the unique values of a function query (group.func parameter).
    • SolrQuery::addGroupQuery - Allows grouping of documents that match the given query.
    • SolrQuery::addGroupSortField - Add a group sort field (group.sort parameter).
    • SolrQuery::addHighlightField - Maps to hl.fl
    • SolrQuery::addMltField - Sets a field to use for similarity
    • SolrQuery::addMltQueryField - Maps to mlt.qf
    • SolrQuery::addSortField - Used to control how the results should be sorted
    • SolrQuery::addStatsFacet - Requests a return of sub results for values within the given facet
    • SolrQuery::addStatsField - Maps to stats.field parameter
    • SolrQuery::collapse - Collapses the result set to a single document per group
    • SolrQuery::getExpand - Returns true if group expanding is enabled
    • SolrQuery::getExpandFilterQueries - Returns the expand filter queries
    • SolrQuery::getExpandQuery - Returns the expand query expand.q parameter
    • SolrQuery::getExpandRows - Returns The number of rows to display in each group (expand.rows)
    • SolrQuery::getExpandSortFields - Returns an array of fields
    • SolrQuery::getFacet - Returns the value of the facet parameter
    • SolrQuery::getFacetDateEnd - Returns the value for the facet.date.end parameter
    • SolrQuery::getFacetDateFields - Returns all the facet.date fields
    • SolrQuery::getFacetDateGap - Returns the value of the facet.date.gap parameter
    • SolrQuery::getFacetDateHardEnd - Returns the value of the facet.date.hardend parameter
    • SolrQuery::getFacetDateOther - Returns the value for the facet.date.other parameter
    • SolrQuery::getFacetDateStart - Returns the lower bound for the first date range for all date faceting on this field
    • SolrQuery::getFacetFields - Returns all the facet fields
    • SolrQuery::getFacetLimit - Returns the maximum number of constraint counts that should be returned for the facet fields
    • SolrQuery::getFacetMethod - Returns the value of the facet.method parameter
    • SolrQuery::getFacetMinCount - Returns the minimum counts for facet fields should be included in the response
    • SolrQuery::getFacetMissing - Returns the current state of the facet.missing parameter
    • SolrQuery::getFacetOffset - Returns an offset into the list of constraints to be used for pagination
    • SolrQuery::getFacetPrefix - Returns the facet prefix
    • SolrQuery::getFacetQueries - Returns all the facet queries
    • SolrQuery::getFacetSort - Returns the facet sort type
    • SolrQuery::getFields - Returns the list of fields that will be returned in the response
    • SolrQuery::getFilterQueries - Returns an array of filter queries
    • SolrQuery::getGroup - Returns true if grouping is enabled
    • SolrQuery::getGroupCachePercent - Returns group cache percent value
    • SolrQuery::getGroupFacet - Returns the group.facet parameter value
    • SolrQuery::getGroupFields - Returns group fields (group.field parameter values)
    • SolrQuery::getGroupFormat - Returns the group.format value
    • SolrQuery::getGroupFunctions - Returns group functions (group.func parameter values)
    • SolrQuery::getGroupLimit - Returns the group.limit value
    • SolrQuery::getGroupMain - Returns the group.main value
    • SolrQuery::getGroupNGroups - Returns the group.ngroups value
    • SolrQuery::getGroupOffset - Returns the group.offset value
    • SolrQuery::getGroupQueries - Returns all the group.query parameter values
    • SolrQuery::getGroupSortFields - Returns the group.sort value
    • SolrQuery::getGroupTruncate - Returns the group.truncate value
    • SolrQuery::getHighlight - Returns the state of the hl parameter
    • SolrQuery::getHighlightAlternateField - Returns the highlight field to use as backup or default
    • SolrQuery::getHighlightFields - Returns all the fields that Solr should generate highlighted snippets for
    • SolrQuery::getHighlightFormatter - Returns the formatter for the highlighted output
    • SolrQuery::getHighlightFragmenter - Returns the text snippet generator for highlighted text
    • SolrQuery::getHighlightFragsize - Returns the number of characters of fragments to consider for highlighting
    • SolrQuery::getHighlightHighlightMultiTerm - Returns whether or not to enable highlighting for range/wildcard/fuzzy/prefix queries
    • SolrQuery::getHighlightMaxAlternateFieldLength - Returns the maximum number of characters of the field to return
    • SolrQuery::getHighlightMaxAnalyzedChars - Returns the maximum number of characters into a document to look for suitable snippets
    • SolrQuery::getHighlightMergeContiguous - Returns whether or not the collapse contiguous fragments into a single fragment
    • SolrQuery::getHighlightRegexMaxAnalyzedChars - Returns the maximum number of characters from a field when using the regex fragmenter
    • SolrQuery::getHighlightRegexPattern - Returns the regular expression for fragmenting
    • SolrQuery::getHighlightRegexSlop - Returns the deviation factor from the ideal fragment size
    • SolrQuery::getHighlightRequireFieldMatch - Returns if a field will only be highlighted if the query matched in this particular field
    • SolrQuery::getHighlightSimplePost - Returns the text which appears after a highlighted term
    • SolrQuery::getHighlightSimplePre - Returns the text which appears before a highlighted term
    • SolrQuery::getHighlightSnippets - Returns the maximum number of highlighted snippets to generate per field
    • SolrQuery::getHighlightUsePhraseHighlighter - Returns the state of the hl.usePhraseHighlighter parameter
    • SolrQuery::getMlt - Returns whether or not MoreLikeThis results should be enabled
    • SolrQuery::getMltBoost - Returns whether or not the query will be boosted by the interesting term relevance
    • SolrQuery::getMltCount - Returns the number of similar documents to return for each result
    • SolrQuery::getMltFields - Returns all the fields to use for similarity
    • SolrQuery::getMltMaxNumQueryTerms - Returns the maximum number of query terms that will be included in any generated query
    • SolrQuery::getMltMaxNumTokens - Returns the maximum number of tokens to parse in each document field that is not stored with TermVector support
    • SolrQuery::getMltMaxWordLength - Returns the maximum word length above which words will be ignored
    • SolrQuery::getMltMinDocFrequency - Returns the treshold frequency at which words will be ignored which do not occur in at least this many docs
    • SolrQuery::getMltMinTermFrequency - Returns the frequency below which terms will be ignored in the source document
    • SolrQuery::getMltMinWordLength - Returns the minimum word length below which words will be ignored
    • SolrQuery::getMltQueryFields - Returns the query fields and their boosts
    • SolrQuery::getQuery - Returns the main query
    • SolrQuery::getRows - Returns the maximum number of documents
    • SolrQuery::getSortFields - Returns all the sort fields
    • SolrQuery::getStart - Returns the offset in the complete result set
    • SolrQuery::getStats - Returns whether or not stats is enabled
    • SolrQuery::getStatsFacets - Returns all the stats facets that were set
    • SolrQuery::getStatsFields - Returns all the statistics fields
    • SolrQuery::getTerms - Returns whether or not the TermsComponent is enabled
    • SolrQuery::getTermsField - Returns the field from which the terms are retrieved
    • SolrQuery::getTermsIncludeLowerBound - Returns whether or not to include the lower bound in the result set
    • SolrQuery::getTermsIncludeUpperBound - Returns whether or not to include the upper bound term in the result set
    • SolrQuery::getTermsLimit - Returns the maximum number of terms Solr should return
    • SolrQuery::getTermsLowerBound - Returns the term to start at
    • SolrQuery::getTermsMaxCount - Returns the maximum document frequency
    • SolrQuery::getTermsMinCount - Returns the minimum document frequency to return in order to be included
    • SolrQuery::getTermsPrefix - Returns the term prefix
    • SolrQuery::getTermsReturnRaw - Whether or not to return raw characters
    • SolrQuery::getTermsSort - Returns an integer indicating how terms are sorted
    • SolrQuery::getTermsUpperBound - Returns the term to stop at
    • SolrQuery::getTimeAllowed - Returns the time in milliseconds allowed for the query to finish
    • SolrQuery::removeExpandFilterQuery - Removes an expand filter query
    • SolrQuery::removeExpandSortField - Removes an expand sort field from the expand.sort parameter.
    • SolrQuery::removeFacetDateField - Removes one of the facet date fields
    • SolrQuery::removeFacetDateOther - Removes one of the facet.date.other parameters
    • SolrQuery::removeFacetField - Removes one of the facet.date parameters
    • SolrQuery::removeFacetQuery - Removes one of the facet.query parameters
    • SolrQuery::removeField - Removes a field from the list of fields
    • SolrQuery::removeFilterQuery - Removes a filter query
    • SolrQuery::removeHighlightField - Removes one of the fields used for highlighting
    • SolrQuery::removeMltField - Removes one of the moreLikeThis fields
    • SolrQuery::removeMltQueryField - Removes one of the moreLikeThis query fields
    • SolrQuery::removeSortField - Removes one of the sort fields
    • SolrQuery::removeStatsFacet - Removes one of the stats.facet parameters
    • SolrQuery::removeStatsField - Removes one of the stats.field parameters
    • SolrQuery::setEchoHandler - Toggles the echoHandler parameter
    • SolrQuery::setEchoParams - Determines what kind of parameters to include in the response
    • SolrQuery::setExpand - Enables/Disables the Expand Component
    • SolrQuery::setExpandQuery - Sets the expand.q parameter
    • SolrQuery::setExpandRows - Sets the number of rows to display in each group (expand.rows). Server Default 5
    • SolrQuery::setExplainOther - Sets the explainOther common query parameter
    • SolrQuery::setFacet - Maps to the facet parameter. Enables or disables facetting
    • SolrQuery::setFacetDateEnd - Maps to facet.date.end
    • SolrQuery::setFacetDateGap - Maps to facet.date.gap
    • SolrQuery::setFacetDateHardEnd - Maps to facet.date.hardend
    • SolrQuery::setFacetDateStart - Maps to facet.date.start
    • SolrQuery::setFacetEnumCacheMinDefaultFrequency - Sets the minimum document frequency used for determining term count
    • SolrQuery::setFacetLimit - Maps to facet.limit
    • SolrQuery::setFacetMethod - Specifies the type of algorithm to use when faceting a field
    • SolrQuery::setFacetMinCount - Maps to facet.mincount
    • SolrQuery::setFacetMissing - Maps to facet.missing
    • SolrQuery::setFacetOffset - Sets the offset into the list of constraints to allow for pagination
    • SolrQuery::setFacetPrefix - Specifies a string prefix with which to limits the terms on which to facet
    • SolrQuery::setFacetSort - Determines the ordering of the facet field constraints
    • SolrQuery::setGroup - Enable/Disable result grouping (group parameter)
    • SolrQuery::setGroupCachePercent - Enables caching for result grouping
    • SolrQuery::setGroupFacet - Sets group.facet parameter
    • SolrQuery::setGroupFormat - Sets the group format, result structure (group.format parameter).
    • SolrQuery::setGroupLimit - Specifies the number of results to return for each group. The server default value is 1.
    • SolrQuery::setGroupMain - If true, the result of the first field grouping command is used as the main result list in the response, using group.format=simple.
    • SolrQuery::setGroupNGroups - If true, Solr includes the number of groups that have matched the query in the results.
    • SolrQuery::setGroupOffset - Sets the group.offset parameter.
    • SolrQuery::setGroupTruncate - If true, facet counts are based on the most relevant document of each group matching the query.
    • SolrQuery::setHighlight - Enables or disables highlighting
    • SolrQuery::setHighlightAlternateField - Specifies the backup field to use
    • SolrQuery::setHighlightFormatter - Specify a formatter for the highlight output
    • SolrQuery::setHighlightFragmenter - Sets a text snippet generator for highlighted text
    • SolrQuery::setHighlightFragsize - The size of fragments to consider for highlighting
    • SolrQuery::setHighlightHighlightMultiTerm - Use SpanScorer to highlight phrase terms
    • SolrQuery::setHighlightMaxAlternateFieldLength - Sets the maximum number of characters of the field to return
    • SolrQuery::setHighlightMaxAnalyzedChars - Specifies the number of characters into a document to look for suitable snippets
    • SolrQuery::setHighlightMergeContiguous - Whether or not to collapse contiguous fragments into a single fragment
    • SolrQuery::setHighlightRegexMaxAnalyzedChars - Specify the maximum number of characters to analyze
    • SolrQuery::setHighlightRegexPattern - Specify the regular expression for fragmenting
    • SolrQuery::setHighlightRegexSlop - Sets the factor by which the regex fragmenter can stray from the ideal fragment size
    • SolrQuery::setHighlightRequireFieldMatch - Require field matching during highlighting
    • SolrQuery::setHighlightSimplePost - Sets the text which appears after a highlighted term
    • SolrQuery::setHighlightSimplePre - Sets the text which appears before a highlighted term
    • SolrQuery::setHighlightSnippets - Sets the maximum number of highlighted snippets to generate per field
    • SolrQuery::setHighlightUsePhraseHighlighter - Whether to highlight phrase terms only when they appear within the query phrase
    • SolrQuery::setMlt - Enables or disables moreLikeThis
    • SolrQuery::setMltBoost - Set if the query will be boosted by the interesting term relevance
    • SolrQuery::setMltCount - Set the number of similar documents to return for each result
    • SolrQuery::setMltMaxNumQueryTerms - Sets the maximum number of query terms included
    • SolrQuery::setMltMaxNumTokens - Specifies the maximum number of tokens to parse
    • SolrQuery::setMltMaxWordLength - Sets the maximum word length
    • SolrQuery::setMltMinDocFrequency - Sets the mltMinDoc frequency
    • SolrQuery::setMltMinTermFrequency - Sets the frequency below which terms will be ignored in the source docs
    • SolrQuery::setMltMinWordLength - Sets the minimum word length
    • SolrQuery::setOmitHeader - Exclude the header from the returned results
    • SolrQuery::setQuery - Sets the search query
    • SolrQuery::setRows - Specifies the maximum number of rows to return in the result
    • SolrQuery::setShowDebugInfo - Flag to show debug information
    • SolrQuery::setStart - Specifies the number of rows to skip
    • SolrQuery::setStats - Enables or disables the Stats component
    • SolrQuery::setTerms - Enables or disables the TermsComponent
    • SolrQuery::setTermsField - Sets the name of the field to get the Terms from
    • SolrQuery::setTermsIncludeLowerBound - Include the lower bound term in the result set
    • SolrQuery::setTermsIncludeUpperBound - Include the upper bound term in the result set
    • SolrQuery::setTermsLimit - Sets the maximum number of terms to return
    • SolrQuery::setTermsLowerBound - Specifies the Term to start from
    • SolrQuery::setTermsMaxCount - Sets the maximum document frequency
    • SolrQuery::setTermsMinCount - Sets the minimum document frequency
    • SolrQuery::setTermsPrefix - Restrict matches to terms that start with the prefix
    • SolrQuery::setTermsReturnRaw - Return the raw characters of the indexed term
    • SolrQuery::setTermsSort - Specifies how to sort the returned terms
    • SolrQuery::setTermsUpperBound - Sets the term to stop at
    • SolrQuery::setTimeAllowed - The time allowed for search to finish
    • SolrQuery::__construct - Constructor
    • SolrQuery::__destruct - Destructor
    • SolrQueryResponse::__construct - Constructor
    • SolrQueryResponse::__destruct - Destructor
    • SolrResponse::getDigestedResponse - Returns the XML response as serialized PHP data
    • SolrResponse::getHttpStatus - Returns the HTTP status of the response
    • SolrResponse::getHttpStatusMessage - Returns more details on the HTTP status
    • SolrResponse::getRawRequest - Returns the raw request sent to the Solr server
    • SolrResponse::getRawRequestHeaders - Returns the raw request headers sent to the Solr server
    • SolrResponse::getRawResponse - Returns the raw response from the server
    • SolrResponse::getRawResponseHeaders - Returns the raw response headers from the server
    • SolrResponse::getRequestUrl - Returns the full URL the request was sent to
    • SolrResponse::getResponse - Returns a SolrObject representing the XML response from the server
    • SolrResponse::setParseMode - Sets the parse mode
    • SolrResponse::success - Was the request a success
    • SolrServerException::getInternalInfo - Returns internal information where the Exception was thrown
    • SolrUpdateResponse::__construct - Constructor
    • SolrUpdateResponse::__destruct - Destructor
    • SolrUtils::digestXmlResponse - Parses an response XML string into a SolrObject
    • SolrUtils::escapeQueryChars - Escapes a lucene query string
    • SolrUtils::getSolrVersion - Returns the current version of the Solr extension
    • SolrUtils::queryPhrase - Prepares a phrase from an unescaped lucene string
    • solr_get_version - 返回当前Solr扩展的版本
    • sort - 对数组排序
    • soundex - Calculate the soundex key of a string
    • SphinxClient::addQuery - Add query to multi-query batch
    • SphinxClient::buildExcerpts - Build text snippets
    • SphinxClient::buildKeywords - Extract keywords from query
    • SphinxClient::close - 关闭先前打开的持久连接
    • SphinxClient::escapeString - Escape special characters
    • SphinxClient::getLastError - Get the last error message
    • SphinxClient::getLastWarning - Get the last warning
    • SphinxClient::open - 建立到搜索服务端的持久连接
    • SphinxClient::query - 执行搜索查询
    • SphinxClient::resetFilters - Clear all filters
    • SphinxClient::resetGroupBy - Clear all group-by settings
    • SphinxClient::runQueries - Run a batch of search queries
    • SphinxClient::setArrayResult - 控制搜索结果集的返回格式
    • SphinxClient::setConnectTimeout - Set connection timeout
    • SphinxClient::setFieldWeights - Set field weights
    • SphinxClient::setFilter - 增加整数值过滤器
    • SphinxClient::setFilterFloatRange - Add new float range filter
    • SphinxClient::setFilterRange - Add new integer range filter
    • SphinxClient::setGeoAnchor - Set anchor point for a geosphere distance calculations
    • SphinxClient::setGroupBy - Set grouping attribute
    • SphinxClient::setGroupDistinct - Set attribute name for per-group distinct values count calculations
    • SphinxClient::setIDRange - Set a range of accepted document IDs
    • SphinxClient::setIndexWeights - Set per-index weights
    • SphinxClient::setLimits - 设置返回结果集偏移量和数目
    • SphinxClient::setMatchMode - 设置全文查询的匹配模式
    • SphinxClient::setMaxQueryTime - Set maximum query time
    • SphinxClient::setOverride - Sets temporary per-document attribute value overrides
    • SphinxClient::setRankingMode - Set ranking mode
    • SphinxClient::setRetries - Set retry count and delay
    • SphinxClient::setSelect - Set select clause
    • SphinxClient::setServer - 设置searchd的主机名和TCP端口
    • SphinxClient::setSortMode - Set matches sorting mode
    • SphinxClient::status - Queries searchd status
    • SphinxClient::updateAttributes - Update document attributes
    • SphinxClient::__construct - Create a new SphinxClient object
    • SplDoublyLinkedList::add - Add/insert a new value at the specified index
    • SplDoublyLinkedList::bottom - Peeks at the node from the beginning of the doubly linked list
    • SplDoublyLinkedList::count - Counts the number of elements in the doubly linked list.
    • SplDoublyLinkedList::current - Return current array entry
    • SplDoublyLinkedList::getIteratorMode - Returns the mode of iteration
    • SplDoublyLinkedList::isEmpty - Checks whether the doubly linked list is empty.
    • SplDoublyLinkedList::key - Return current node index
    • SplDoublyLinkedList::next - Move to next entry
    • SplDoublyLinkedList::offsetExists - Returns whether the requested $index exists
    • SplDoublyLinkedList::offsetGet - Returns the value at the specified $index
    • SplDoublyLinkedList::offsetSet - Sets the value at the specified $index to $newval
    • SplDoublyLinkedList::offsetUnset - Unsets the value at the specified $index
    • SplDoublyLinkedList::pop - Pops a node from the end of the doubly linked list
    • SplDoublyLinkedList::prev - Move to previous entry
    • SplDoublyLinkedList::push - Pushes an element at the end of the doubly linked list
    • SplDoublyLinkedList::rewind - Rewind iterator back to the start
    • SplDoublyLinkedList::serialize - Serializes the storage
    • SplDoublyLinkedList::setIteratorMode - Sets the mode of iteration
    • SplDoublyLinkedList::shift - Shifts a node from the beginning of the doubly linked list
    • SplDoublyLinkedList::top - Peeks at the node from the end of the doubly linked list
    • SplDoublyLinkedList::unserialize - Unserializes the storage
    • SplDoublyLinkedList::unshift - Prepends the doubly linked list with an element
    • SplDoublyLinkedList::valid - Check whether the doubly linked list contains more nodes
    • SplDoublyLinkedList::__construct - Constructs a new doubly linked list
    • SplEnum::getConstList - Returns all consts (possible values) as an array.
    • SplFileInfo::getATime - Gets last access time of the file
    • SplFileInfo::getBasename - Gets the base name of the file
    • SplFileInfo::getCTime - 获取文件 inode 修改时间
    • SplFileInfo::getExtension - Gets the file extension
    • SplFileInfo::getFileInfo - Gets an SplFileInfo object for the file
    • SplFileInfo::getFilename - Gets the filename
    • SplFileInfo::getGroup - Gets the file group
    • SplFileInfo::getInode - Gets the inode for the file
    • SplFileInfo::getLinkTarget - Gets the target of a link
    • SplFileInfo::getMTime - Gets the last modified time
    • SplFileInfo::getOwner - Gets the owner of the file
    • SplFileInfo::getPath - Gets the path without filename
    • SplFileInfo::getPathInfo - Gets an SplFileInfo object for the path
    • SplFileInfo::getPathname - Gets the path to the file
    • SplFileInfo::getPerms - Gets file permissions
    • SplFileInfo::getRealPath - Gets absolute path to file
    • SplFileInfo::getSize - Gets file size
    • SplFileInfo::getType - Gets file type
    • SplFileInfo::isDir - Tells if the file is a directory
    • SplFileInfo::isExecutable - Tells if the file is executable
    • SplFileInfo::isFile - Tells if the object references a regular file
    • SplFileInfo::isLink - Tells if the file is a link
    • SplFileInfo::isReadable - Tells if file is readable
    • SplFileInfo::isWritable - Tells if the entry is writable
    • SplFileInfo::openFile - Gets an SplFileObject object for the file
    • SplFileInfo::setFileClass - Sets the class used with SplFileInfo::openFile
    • SplFileInfo::setInfoClass - Sets the class used with SplFileInfo::getFileInfo and SplFileInfo::getPathInfo
    • SplFileInfo::__construct - Construct a new SplFileInfo object
    • SplFileInfo::__toString - Returns the path to the file as a string
    • SplFileObject::current - Retrieve current line of file
    • SplFileObject::eof - Reached end of file
    • SplFileObject::fflush - Flushes the output to the file
    • SplFileObject::fgetc - Gets character from file
    • SplFileObject::fgetcsv - Gets line from file and parse as CSV fields
    • SplFileObject::fgets - Gets line from file
    • SplFileObject::fgetss - Gets line from file and strip HTML tags
    • SplFileObject::flock - Portable file locking
    • SplFileObject::fpassthru - Output all remaining data on a file pointer
    • SplFileObject::fputcsv - Write a field array as a CSV line
    • SplFileObject::fread - Read from file
    • SplFileObject::fscanf - Parses input from file according to a format
    • SplFileObject::fseek - Seek to a position
    • SplFileObject::fstat - Gets information about the file
    • SplFileObject::ftell - Return current file position
    • SplFileObject::ftruncate - Truncates the file to a given length
    • SplFileObject::fwrite - Write to file
    • SplFileObject::getChildren - No purpose
    • SplFileObject::getCsvControl - Get the delimiter, enclosure and escape character for CSV
    • SplFileObject::getCurrentLine - Alias of SplFileObject::fgets
    • SplFileObject::getFlags - Gets flags for the SplFileObject
    • SplFileObject::getMaxLineLen - Get maximum line length
    • SplFileObject::hasChildren - SplFileObject does not have children
    • SplFileObject::key - Get line number
    • SplFileObject::next - Read next line
    • SplFileObject::rewind - Rewind the file to the first line
    • SplFileObject::seek - Seek to specified line
    • SplFileObject::setCsvControl - Set the delimiter, enclosure and escape character for CSV
    • SplFileObject::setFlags - Sets flags for the SplFileObject
    • SplFileObject::setMaxLineLen - Set maximum line length
    • SplFileObject::valid - Not at EOF
    • SplFileObject::__construct - Construct a new file object.
    • SplFileObject::__toString - Alias of SplFileObject::current
    • SplFixedArray::count - Returns the size of the array
    • SplFixedArray::current - Return current array entry
    • SplFixedArray::fromArray - Import a PHP array in a SplFixedArray instance
    • SplFixedArray::getSize - Gets the size of the array
    • SplFixedArray::key - Return current array index
    • SplFixedArray::next - Move to next entry
    • SplFixedArray::offsetExists - Returns whether the requested index exists
    • SplFixedArray::offsetGet - Returns the value at the specified index
    • SplFixedArray::offsetSet - Sets a new value at a specified index
    • SplFixedArray::offsetUnset - Unsets the value at the specified $index
    • SplFixedArray::rewind - Rewind iterator back to the start
    • SplFixedArray::setSize - Change the size of an array
    • SplFixedArray::toArray - Returns a PHP array from the fixed array
    • SplFixedArray::valid - Check whether the array contains more elements
    • SplFixedArray::__construct - Constructs a new fixed array
    • SplFixedArray::__wakeup - Reinitialises the array after being unserialised
    • SplHeap::compare - Compare elements in order to place them correctly in the heap while sifting up.
    • SplHeap::count - Counts the number of elements in the heap.
    • SplHeap::current - Return current node pointed by the iterator
    • SplHeap::extract - Extracts a node from top of the heap and sift up.
    • SplHeap::insert - Inserts an element in the heap by sifting it up.
    • SplHeap::isEmpty - Checks whether the heap is empty.
    • SplHeap::key - Return current node index
    • SplHeap::next - Move to the next node
    • SplHeap::recoverFromCorruption - Recover from the corrupted state and allow further actions on the heap.
    • SplHeap::rewind - Rewind iterator back to the start (no-op)
    • SplHeap::top - Peeks at the node from the top of the heap
    • SplHeap::valid - Check whether the heap contains more nodes
    • SplHeap::__construct - Constructs a new empty heap
    • split - 用正则表达式将字符串分割到数组中
    • spliti - 用正则表达式不区分大小写将字符串分割到数组中
    • SplMaxHeap::compare - Compare elements in order to place them correctly in the heap while sifting up.
    • SplMinHeap::compare - Compare elements in order to place them correctly in the heap while sifting up.
    • SplObjectStorage::addAll - Adds all objects from another storage
    • SplObjectStorage::attach - Adds an object in the storage
    • SplObjectStorage::contains - Checks if the storage contains a specific object
    • SplObjectStorage::count - Returns the number of objects in the storage
    • SplObjectStorage::current - Returns the current storage entry
    • SplObjectStorage::detach - Removes an object from the storage
    • SplObjectStorage::getHash - Calculate a unique identifier for the contained objects
    • SplObjectStorage::getInfo - Returns the data associated with the current iterator entry
    • SplObjectStorage::key - Returns the index at which the iterator currently is
    • SplObjectStorage::next - Move to the next entry
    • SplObjectStorage::offsetExists - Checks whether an object exists in the storage
    • SplObjectStorage::offsetGet - Returns the data associated with an object
    • SplObjectStorage::offsetSet - Associates data to an object in the storage
    • SplObjectStorage::offsetUnset - Removes an object from the storage
    • SplObjectStorage::removeAll - Removes objects contained in another storage from the current storage
    • SplObjectStorage::removeAllExcept - Removes all objects except for those contained in another storage from the current storage
    • SplObjectStorage::rewind - Rewind the iterator to the first storage element
    • SplObjectStorage::serialize - Serializes the storage
    • SplObjectStorage::setInfo - Sets the data associated with the current iterator entry
    • SplObjectStorage::unserialize - Unserializes a storage from its string representation
    • SplObjectStorage::valid - Returns if the current iterator entry is valid
    • SplObserver::update - Receive update from subject
    • SplPriorityQueue::compare - Compare priorities in order to place elements correctly in the heap while sifting up.
    • SplPriorityQueue::count - Counts the number of elements in the queue.
    • SplPriorityQueue::current - Return current node pointed by the iterator
    • SplPriorityQueue::extract - Extracts a node from top of the heap and shift up.
    • SplPriorityQueue::insert - Inserts an element in the queue by sifting it up.
    • SplPriorityQueue::isEmpty - Checks whether the queue is empty.
    • SplPriorityQueue::key - Return current node index
    • SplPriorityQueue::next - Move to the next node
    • SplPriorityQueue::recoverFromCorruption - Recover from the corrupted state and allow further actions on the queue.
    • SplPriorityQueue::rewind - Rewind iterator back to the start (no-op)
    • SplPriorityQueue::setExtractFlags - Sets the mode of extraction
    • SplPriorityQueue::top - Peeks at the node from the top of the queue
    • SplPriorityQueue::valid - Check whether the queue contains more nodes
    • SplPriorityQueue::__construct - Constructs a new empty queue
    • SplQueue::dequeue - Dequeues a node from the queue
    • SplQueue::enqueue - Adds an element to the queue.
    • SplQueue::setIteratorMode - Sets the mode of iteration
    • SplQueue::__construct - Constructs a new queue implemented using a doubly linked list
    • SplStack::setIteratorMode - Sets the mode of iteration
    • SplStack::__construct - Constructs a new stack implemented using a doubly linked list
    • SplSubject::attach - Attach an SplObserver
    • SplSubject::detach - Detach an observer
    • SplSubject::notify - Notify an observer
    • SplTempFileObject::__construct - Construct a new temporary file object
    • SplType::__construct - Creates a new value of some type
    • spl_autoload - __autoload()函数的默认实现
    • spl_autoload_call - 尝试调用所有已注册的__autoload()函数来装载请求类
    • spl_autoload_extensions - 注册并返回spl_autoload函数使用的默认文件扩展名。
    • spl_autoload_functions - 返回所有已注册的__autoload()函数。
    • spl_autoload_register - 注册给定的函数作为 __autoload 的实现
    • spl_autoload_unregister - 注销已注册的__autoload()函数
    • spl_classes - 返回所有可用的SPL类
    • spl_object_hash - 返回指定对象的hash id
    • Spoofchecker::areConfusable - Checks if given strings can be confused
    • Spoofchecker::isSuspicious - Checks if a given text contains any suspicious characters
    • Spoofchecker::setAllowedLocales - Locales to use when running checks
    • Spoofchecker::setChecks - Set the checks to run
    • Spoofchecker::__construct - Constructor
    • sprintf - Return a formatted string
    • SQL acceptable by 4D - PDO and SQL 4D
    • SQLite3::busyTimeout - Sets the busy connection handler
    • SQLite3::changes - Returns the number of database rows that were changed (or inserted or deleted) by the most recent SQL statement
    • SQLite3::close - Closes the database connection
    • SQLite3::createAggregate - Registers a PHP function for use as an SQL aggregate function
    • SQLite3::createCollation - Registers a PHP function for use as an SQL collating function
    • SQLite3::createFunction - Registers a PHP function for use as an SQL scalar function
    • SQLite3::enableExceptions - Enable throwing exceptions
    • SQLite3::escapeString - Returns a string that has been properly escaped
    • SQLite3::exec - Executes a result-less query against a given database
    • SQLite3::lastErrorCode - Returns the numeric result code of the most recent failed SQLite request
    • SQLite3::lastErrorMsg - Returns English text describing the most recent failed SQLite request
    • SQLite3::lastInsertRowID - Returns the row ID of the most recent INSERT into the database
    • SQLite3::loadExtension - Attempts to load an SQLite extension library
    • SQLite3::open - Opens an SQLite database
    • SQLite3::openBlob - Opens a stream resource to read a BLOB
    • SQLite3::prepare - Prepares an SQL statement for execution
    • SQLite3::query - Executes an SQL query
    • SQLite3::querySingle - Executes a query and returns a single result
    • SQLite3::version - Returns the SQLite3 library version as a string constant and as a number
    • SQLite3::__construct - Instantiates an SQLite3 object and opens an SQLite 3 database
    • SQLite3Result::columnName - Returns the name of the nth column
    • SQLite3Result::columnType - Returns the type of the nth column
    • SQLite3Result::fetchArray - Fetches a result row as an associative or numerically indexed array or both
    • SQLite3Result::finalize - Closes the result set
    • SQLite3Result::numColumns - Returns the number of columns in the result set
    • SQLite3Result::reset - Resets the result set back to the first row
    • SQLite3Stmt::bindParam - Binds a parameter to a statement variable
    • SQLite3Stmt::bindValue - Binds the value of a parameter to a statement variable
    • SQLite3Stmt::clear - Clears all current bound parameters
    • SQLite3Stmt::close - Closes the prepared statement
    • SQLite3Stmt::execute - Executes a prepared statement and returns a result set object
    • SQLite3Stmt::paramCount - Returns the number of parameters within the prepared statement
    • SQLite3Stmt::readOnly() - Returns whether a statement is definitely read only
    • SQLite3Stmt::reset - Resets the prepared statement
    • sqlite_array_query - Execute a query against a given database and returns an array
    • sqlite_busy_timeout - Set busy timeout duration, or disable busy handlers
    • sqlite_changes - Returns the number of rows that were changed by the most recent SQL statement
    • sqlite_close - Closes an open SQLite database
    • sqlite_column - Fetches a column from the current row of a result set
    • sqlite_create_aggregate - Register an aggregating UDF for use in SQL statements
    • sqlite_create_function - Registers a "regular" User Defined Function for use in SQL statements
    • sqlite_current - Fetches the current row from a result set as an array
    • sqlite_error_string - Returns the textual description of an error code
    • sqlite_escape_string - Escapes a string for use as a query parameter
    • sqlite_exec - Executes a result-less query against a given database
    • sqlite_factory - Opens an SQLite database and returns an SQLiteDatabase object
    • sqlite_fetch_all - Fetches all rows from a result set as an array of arrays
    • sqlite_fetch_array - Fetches the next row from a result set as an array
    • sqlite_fetch_column_types - Return an array of column types from a particular table
    • sqlite_fetch_object - Fetches the next row from a result set as an object
    • sqlite_fetch_single - Fetches the first column of a result set as a string
    • sqlite_fetch_string - 别名 sqlite_fetch_single
    • sqlite_field_name - Returns the name of a particular field
    • sqlite_has_more - Finds whether or not more rows are available
    • sqlite_has_prev - Returns whether or not a previous row is available
    • sqlite_key - Returns the current row index
    • sqlite_last_error - Returns the error code of the last error for a database
    • sqlite_last_insert_rowid - Returns the rowid of the most recently inserted row
    • sqlite_libencoding - Returns the encoding of the linked SQLite library
    • sqlite_libversion - Returns the version of the linked SQLite library
    • sqlite_next - Seek to the next row number
    • sqlite_num_fields - Returns the number of fields in a result set
    • sqlite_num_rows - Returns the number of rows in a buffered result set
    • sqlite_open - Opens an SQLite database and create the database if it does not exist
    • sqlite_popen - Opens a persistent handle to an SQLite database and create the database if it does not exist
    • sqlite_prev - Seek to the previous row number of a result set
    • sqlite_query - Executes a query against a given database and returns a result handle
    • sqlite_rewind - Seek to the first row number
    • sqlite_seek - Seek to a particular row number of a buffered result set
    • sqlite_single_query - Executes a query and returns either an array for one single column or the value of the first row
    • sqlite_udf_decode_binary - Decode binary data passed as parameters to an UDF
    • sqlite_udf_encode_binary - Encode binary data before returning it from an UDF
    • sqlite_unbuffered_query - Execute a query that does not prefetch and buffer all data
    • sqlite_valid - Returns whether more rows are available
    • sqlsrv_begin_transaction - Begins a database transaction
    • sqlsrv_cancel - Cancels a statement
    • sqlsrv_client_info - Returns information about the client and specified connection
    • sqlsrv_close - Closes an open connection and releases resourses associated with the connection
    • sqlsrv_commit - Commits a transaction that was begun with sqlsrv_begin_transaction
    • sqlsrv_configure - Changes the driver error handling and logging configurations
    • sqlsrv_connect - Opens a connection to a Microsoft SQL Server database
    • sqlsrv_errors - Returns error and warning information about the last SQLSRV operation performed
    • sqlsrv_execute - Executes a statement prepared with sqlsrv_prepare
    • sqlsrv_fetch - Makes the next row in a result set available for reading
    • sqlsrv_fetch_array - Returns a row as an array
    • sqlsrv_fetch_object - Retrieves the next row of data in a result set as an object
    • sqlsrv_field_metadata - Retrieves metadata for the fields of a statement prepared by sqlsrv_prepare or sqlsrv_query
    • sqlsrv_free_stmt - Frees all resources for the specified statement
    • sqlsrv_get_config - Returns the value of the specified configuration setting
    • sqlsrv_get_field - Gets field data from the currently selected row
    • sqlsrv_has_rows - Indicates whether the specified statement has rows
    • sqlsrv_next_result - Makes the next result of the specified statement active
    • sqlsrv_num_fields - Retrieves the number of fields (columns) on a statement
    • sqlsrv_num_rows - Retrieves the number of rows in a result set
    • sqlsrv_prepare - Prepares a query for execution
    • sqlsrv_query - Prepares and executes a query.
    • sqlsrv_rollback - Rolls back a transaction that was begun with sqlsrv_begin_transaction
    • sqlsrv_rows_affected - Returns the number of rows modified by the last INSERT, UPDATE, or DELETE query executed
    • sqlsrv_send_stream_data - Sends data from parameter streams to the server
    • sqlsrv_server_info - Returns information about the server
    • SQL types with PDO_4D and PHP - SQL types with PDO_4D and PHP
    • sql_regcase - 产生用于不区分大小的匹配的正则表达式
    • sqrt - 平方根
    • srand - 播下随机数发生器种子
    • sscanf - 根据指定格式解析输入的字符
    • ssdeep_fuzzy_compare - Calculates the match score between two fuzzy hash signatures
    • ssdeep_fuzzy_hash - Create a fuzzy hash from a string
    • ssdeep_fuzzy_hash_filename - Create a fuzzy hash from a file
    • ssh2:// - Secure Shell 2
    • ssh2_auth_agent - Authenticate over SSH using the ssh agent
    • ssh2_auth_hostbased_file - Authenticate using a public hostkey
    • ssh2_auth_none - Authenticate as "none"
    • ssh2_auth_password - Authenticate over SSH using a plain password
    • ssh2_auth_pubkey_file - Authenticate using a public key
    • ssh2_connect - Connect to an SSH server
    • ssh2_exec - Execute a command on a remote server
    • ssh2_fetch_stream - Fetch an extended data stream
    • ssh2_fingerprint - Retrieve fingerprint of remote server
    • ssh2_methods_negotiated - Return list of negotiated methods
    • ssh2_publickey_add - Add an authorized publickey
    • ssh2_publickey_init - Initialize Publickey subsystem
    • ssh2_publickey_list - List currently authorized publickeys
    • ssh2_publickey_remove - Remove an authorized publickey
    • ssh2_scp_recv - Request a file via SCP
    • ssh2_scp_send - Send a file via SCP
    • ssh2_sftp - Initialize SFTP subsystem
    • ssh2_sftp_chmod - Changes file mode
    • ssh2_sftp_lstat - Stat a symbolic link
    • ssh2_sftp_mkdir - Create a directory
    • ssh2_sftp_readlink - Return the target of a symbolic link
    • ssh2_sftp_realpath - Resolve the realpath of a provided path string
    • ssh2_sftp_rename - Rename a remote file
    • ssh2_sftp_rmdir - Remove a directory
    • ssh2_sftp_stat - Stat a file on a remote filesystem
    • ssh2_sftp_symlink - Create a symlink
    • ssh2_sftp_unlink - Delete a file
    • ssh2_shell - Request an interactive shell
    • ssh2_tunnel - Open a tunnel through a remote server
    • SSL 上下文选项 - SSL 上下文选项清单
    • stat - 给出文件的信息
    • stats_absolute_deviation - Returns the absolute deviation of an array of values
    • stats_cdf_beta - CDF function for BETA Distribution. Calculates any one parameter of the beta distribution given values for the others.
    • stats_cdf_binomial - Calculates any one parameter of the binomial distribution given values for the others.
    • stats_cdf_cauchy - Not documented
    • stats_cdf_chisquare - Calculates any one parameter of the chi-square distribution given values for the others.
    • stats_cdf_exponential - Not documented
    • stats_cdf_f - Calculates any one parameter of the F distribution given values for the others.
    • stats_cdf_gamma - Calculates any one parameter of the gamma distribution given values for the others.
    • stats_cdf_laplace - Not documented
    • stats_cdf_logistic - Not documented
    • stats_cdf_negative_binomial - Calculates any one parameter of the negative binomial distribution given values for the others.
    • stats_cdf_noncentral_chisquare - Calculates any one parameter of the non-central chi-square distribution given values for the others.
    • stats_cdf_noncentral_f - Calculates any one parameter of the Non-central F distribution given values for the others.
    • stats_cdf_poisson - Calculates any one parameter of the Poisson distribution given values for the others.
    • stats_cdf_t - Calculates any one parameter of the T distribution given values for the others.
    • stats_cdf_uniform - Not documented
    • stats_cdf_weibull - Not documented
    • stats_covariance - Computes the covariance of two data sets
    • stats_dens_beta - Not documented
    • stats_dens_cauchy - Not documented
    • stats_dens_chisquare - Not documented
    • stats_dens_exponential - Not documented
    • stats_dens_f - 说明
    • stats_dens_gamma - Not documented
    • stats_dens_laplace - Not documented
    • stats_dens_logistic - Not documented
    • stats_dens_negative_binomial - Not documented
    • stats_dens_normal - Not documented
    • stats_dens_pmf_binomial - Not documented
    • stats_dens_pmf_hypergeometric - 说明
    • stats_dens_pmf_poisson - Not documented
    • stats_dens_t - Not documented
    • stats_dens_weibull - Not documented
    • stats_den_uniform - Not documented
    • stats_harmonic_mean - Returns the harmonic mean of an array of values
    • stats_kurtosis - Computes the kurtosis of the data in the array
    • stats_rand_gen_beta - Generates beta random deviate
    • stats_rand_gen_chisquare - Generates random deviate from the distribution of a chisquare with "df" degrees of freedom random variable.
    • stats_rand_gen_exponential - Generates a single random deviate from an exponential distribution with mean "av"
    • stats_rand_gen_f - Generates a random deviate
    • stats_rand_gen_funiform - Generates uniform float between low (exclusive) and high (exclusive)
    • stats_rand_gen_gamma - Generates random deviates from a gamma distribution
    • stats_rand_gen_ibinomial - Generates a single random deviate from a binomial distribution whose number of trials is "n" (n >= 0) and whose probability of an event in each trial is "pp" ([0;1]). Method : algorithm BTPE
    • stats_rand_gen_ibinomial_negative - Generates a single random deviate from a negative binomial distribution. Arguments : n - the number of trials in the negative binomial distribution from which a random deviate is to be generated (n > 0), p - the probability of an event (0 < p < 1)).
    • stats_rand_gen_int - Generates random integer between 1 and 2147483562
    • stats_rand_gen_ipoisson - Generates a single random deviate from a Poisson distribution with mean "mu" (mu >= 0.0).
    • stats_rand_gen_iuniform - Generates integer uniformly distributed between LOW (inclusive) and HIGH (inclusive)
    • stats_rand_gen_noncenral_chisquare - Generates random deviate from the distribution of a noncentral chisquare with "df" degrees of freedom and noncentrality parameter "xnonc". d must be >= 1.0, xnonc must >= 0.0
    • stats_rand_gen_noncentral_f - Generates a random deviate from the noncentral F (variance ratio) distribution with "dfn" degrees of freedom in the numerator, and "dfd" degrees of freedom in the denominator, and noncentrality parameter "xnonc". Method : directly generates ratio of noncentral numerator chisquare variate to central denominator chisquare variate.
    • stats_rand_gen_noncentral_t - Generates a single random deviate from a noncentral T distribution
    • stats_rand_gen_normal - Generates a single random deviate from a normal distribution with mean, av, and standard deviation, sd (sd >= 0). Method : Renames SNORM from TOMS as slightly modified by BWB to use RANF instead of SUNIF.
    • stats_rand_gen_t - Generates a single random deviate from a T distribution
    • stats_rand_get_seeds - Not documented
    • stats_rand_phrase_to_seeds - generate two seeds for the RGN random number generator
    • stats_rand_ranf - Returns a random floating point number from a uniform distribution over 0 - 1 (endpoints of this interval are not returned) using the current generator
    • stats_rand_setall - Not documented
    • stats_skew - Computes the skewness of the data in the array
    • stats_standard_deviation - Returns the standard deviation
    • stats_stat_binomial_coef - Not documented
    • stats_stat_correlation - Not documented
    • stats_stat_gennch - Not documented
    • stats_stat_independent_t - Not documented
    • stats_stat_innerproduct - 说明
    • stats_stat_noncentral_t - Calculates any one parameter of the noncentral t distribution give values for the others.
    • stats_stat_paired_t - Not documented
    • stats_stat_percentile - Not documented
    • stats_stat_powersum - Not documented
    • stats_variance - Returns the population variance
    • Stomp::abort - Rolls back a transaction in progress
    • Stomp::ack - Acknowledges consumption of a message
    • Stomp::begin - Starts a transaction
    • Stomp::commit - Commits a transaction in progress
    • Stomp::error - Gets the last stomp error
    • Stomp::getReadTimeout - Gets read timeout
    • Stomp::getSessionId - Gets the current stomp session ID
    • Stomp::hasFrame - Indicates whether or not there is a frame ready to read
    • Stomp::readFrame - Reads the next frame
    • Stomp::send - Sends a message
    • Stomp::setReadTimeout - Sets read timeout
    • Stomp::subscribe - Registers to listen to a given destination
    • Stomp::unsubscribe - Removes an existing subscription
    • Stomp::__construct - 打开一个连接
    • Stomp::__destruct - Closes stomp connection
    • StompException::getDetails - Get exception details
    • StompFrame::__construct - Constructor
    • stomp_connect_error - Returns a string description of the last connect error
    • stomp_version - Gets the current stomp extension version
    • strcasecmp - 二进制安全比较字符串（不区分大小写）
    • strchr - 别名 strstr
    • strcmp - 二进制安全字符串比较
    • strcoll - 基于区域设置的字符串比较
    • strcspn - 获取不匹配遮罩的起始子字符串的长度
    • streamWrapper::dir_closedir - Close directory handle
    • streamWrapper::dir_opendir - Open directory handle
    • streamWrapper::dir_readdir - Read entry from directory handle
    • streamWrapper::dir_rewinddir - Rewind directory handle
    • streamWrapper::mkdir - Create a directory
    • streamWrapper::rename - Renames a file or directory
    • streamWrapper::rmdir - Removes a directory
    • streamWrapper::stream_cast - Retrieve the underlaying resource
    • streamWrapper::stream_close - Close a resource
    • streamWrapper::stream_eof - Tests for end-of-file on a file pointer
    • streamWrapper::stream_flush - Flushes the output
    • streamWrapper::stream_lock - Advisory file locking
    • streamWrapper::stream_metadata - Change stream metadata
    • streamWrapper::stream_open - Opens file or URL
    • streamWrapper::stream_read - Read from stream
    • streamWrapper::stream_seek - Seeks to specific location in a stream
    • streamWrapper::stream_set_option - Change stream options
    • streamWrapper::stream_stat - Retrieve information about a file resource
    • streamWrapper::stream_tell - Retrieve the current position of a stream
    • streamWrapper::stream_truncate - Truncate stream
    • streamWrapper::stream_write - Write to stream
    • streamWrapper::unlink - Delete a file
    • streamWrapper::url_stat - Retrieve information about a file
    • streamWrapper::__construct - Constructs a new stream wrapper
    • streamWrapper::__destruct - Destructs an existing stream wrapper
    • stream_bucket_append - Append bucket to brigade
    • stream_bucket_make_writeable - Return a bucket object from the brigade for operating on
    • stream_bucket_new - Create a new bucket for use on the current stream
    • stream_bucket_prepend - Prepend bucket to brigade
    • stream_context_create - 创建资源流上下文
    • stream_context_get_default - Retrieve the default stream context
    • stream_context_get_options - 获取资源流/数据包/上下文的参数
    • stream_context_get_params - Retrieves parameters from a context
    • stream_context_set_default - Set the default stream context
    • stream_context_set_option - 对资源流、数据包或者上下文设置参数
    • stream_context_set_params - Set parameters for a stream/wrapper/context
    • stream_copy_to_stream - Copies data from one stream to another
    • stream_encoding - 设置数据流的字符集
    • stream_filter_append - Attach a filter to a stream
    • stream_filter_prepend - Attach a filter to a stream
    • stream_filter_register - Register a user defined stream filter
    • stream_filter_remove - 从资源流里移除某个过滤器
    • stream_get_contents - 读取资源流到一个字符串
    • stream_get_filters - 获取已注册的数据流过滤器列表
    • stream_get_line - 从资源流里读取一行直到给定的定界符
    • stream_get_meta_data - 从封装协议文件指针中取得报头／元数据
    • stream_get_transports - 获取已注册的套接字传输协议列表
    • stream_get_wrappers - 获取已注册的流类型
    • stream_is_local - Checks if a stream is a local stream
    • stream_notification_callback - A callback function for the notification context parameter
    • stream_register_wrapper - 别名 stream_wrapper_register
    • stream_resolve_include_path - Resolve filename against the include path
    • stream_select - Runs the equivalent of the select() system call on the given arrays of streams with a timeout specified by tv_sec and tv_usec
    • stream_set_blocking - 为资源流设置阻塞或者阻塞模式
    • stream_set_chunk_size - 设置资源流区块大小
    • stream_set_read_buffer - Set read file buffering on the given stream
    • stream_set_timeout - Set timeout period on a stream
    • stream_set_write_buffer - Sets write file buffering on the given stream
    • stream_socket_accept - 接受由 stream_socket_server 创建的套接字连接
    • stream_socket_client - Open Internet or Unix domain socket connection
    • stream_socket_enable_crypto - Turns encryption on/off on an already connected socket
    • stream_socket_get_name - 获取本地或者远程的套接字名称
    • stream_socket_pair - 创建一对完全一样的网络套接字连接流
    • stream_socket_recvfrom - Receives data from a socket, connected or not
    • stream_socket_sendto - Sends a message to a socket, whether it is connected or not
    • stream_socket_server - Create an Internet or Unix domain server socket
    • stream_socket_shutdown - Shutdown a full-duplex connection
    • stream_supports_lock - Tells whether the stream supports locking.
    • stream_wrapper_register - 注册一个用 PHP 类实现的 URL 封装协议
    • stream_wrapper_restore - Restores a previously unregistered built-in wrapper
    • stream_wrapper_unregister - Unregister a URL wrapper
    • strftime - 根据区域设置格式化本地时间／日期
    • stripcslashes - 反引用一个使用 addcslashes 转义的字符串
    • stripos - 查找字符串首次出现的位置（不区分大小写）
    • stripslashes - 反引用一个引用字符串
    • strip_tags - 从字符串中去除 HTML 和 PHP 标记
    • stristr - strstr 函数的忽略大小写版本
    • strlen - 获取字符串长度
    • strnatcasecmp - 使用“自然顺序”算法比较字符串（不区分大小写）
    • strnatcmp - 使用自然排序算法比较字符串
    • strncasecmp - 二进制安全比较字符串开头的若干个字符（不区分大小写）
    • strncmp - 二进制安全比较字符串开头的若干个字符
    • strpbrk - 在字符串中查找一组字符的任何一个字符
    • strpos - 查找字符串首次出现的位置
    • strptime - 解析由 strftime 生成的日期／时间
    • strrchr - 查找指定字符在字符串中的最后一次出现
    • strrev - 反转字符串
    • strripos - 计算指定字符串在目标字符串中最后一次出现的位置（不区分大小写）
    • strrpos - 计算指定字符串在目标字符串中最后一次出现的位置
    • strspn - 计算字符串中全部字符都存在于指定字符集合中的第一段子串的长度。
    • strstr - 查找字符串的首次出现
    • strtok - 标记分割字符串
    • strtolower - 将字符串转化为小写
    • strtotime - 将任何字符串的日期时间描述解析为 Unix 时间戳
    • strtoupper - 将字符串转化为大写
    • strtr - 转换指定字符
    • strval - 获取变量的字符串值
    • str_getcsv - 解析 CSV 字符串为一个数组
    • str_ireplace - str_replace 的忽略大小写版本
    • str_pad - 使用另一个字符串填充字符串为指定长度
    • str_repeat - 重复一个字符串
    • str_replace - 子字符串替换
    • str_rot13 - 对字符串执行 ROT13 转换
    • str_shuffle - 随机打乱一个字符串
    • str_split - 将字符串转换为数组
    • str_word_count - 返回字符串中单词的使用情况
    • substr - 返回字符串的子串
    • substr_compare - 二进制安全比较字符串（从偏移位置比较指定长度）
    • substr_count - 计算字串出现的次数
    • substr_replace - 替换字符串的子串
    • SVM::crossvalidate - Test training params on subsets of the training data.
    • SVM::getOptions - Return the current training parameters
    • SVM::setOptions - Set training parameters
    • SVM::train - Create a SVMModel based on training data
    • SVM::__construct - Construct a new SVM object
    • SVMModel::checkProbabilityModel - Returns true if the model has probability information
    • SVMModel::getLabels - Get the labels the model was trained on
    • SVMModel::getNrClass - Returns the number of classes the model was trained with
    • SVMModel::getSvmType - Get the SVM type the model was trained with
    • SVMModel::getSvrProbability - Get the sigma value for regression types
    • SVMModel::load - Load a saved SVM Model
    • SVMModel::predict - Predict a value for previously unseen data
    • SVMModel::predict_probability - Return class probabilities for previous unseen data
    • SVMModel::save - Save a model to a file
    • SVMModel::__construct - Construct a new SVMModel
    • svn_add - 计划在工作目录添加项
    • svn_auth_get_parameter - Retrieves authentication parameter
    • svn_auth_set_parameter - Sets an authentication parameter
    • svn_blame - Get the SVN blame for a file
    • svn_cat - Returns the contents of a file in a repository
    • svn_checkout - Checks out a working copy from the repository
    • svn_cleanup - Recursively cleanup a working copy directory, finishing incomplete operations and removing locks
    • svn_client_version - Returns the version of the SVN client libraries
    • svn_commit - 将修改的本地文件副本发送至版本库
    • svn_delete - Delete items from a working copy or repository.
    • svn_diff - Recursively diffs two paths
    • svn_export - Export the contents of a SVN directory
    • svn_fs_abort_txn - Abort a transaction, returns true if everything is okay, false otherwise
    • svn_fs_apply_text - Creates and returns a stream that will be used to replace
    • svn_fs_begin_txn2 - Create a new transaction
    • svn_fs_change_node_prop - Return true if everything is ok, false otherwise
    • svn_fs_check_path - Determines what kind of item lives at path in a given repository fsroot
    • svn_fs_contents_changed - Return true if content is different, false otherwise
    • svn_fs_copy - Copies a file or a directory, returns true if all is ok, false otherwise
    • svn_fs_delete - Deletes a file or a directory, return true if all is ok, false otherwise
    • svn_fs_dir_entries - Enumerates the directory entries under path; returns a hash of dir names to file type
    • svn_fs_file_contents - Returns a stream to access the contents of a file from a given version of the fs
    • svn_fs_file_length - Returns the length of a file from a given version of the fs
    • svn_fs_is_dir - Return true if the path points to a directory, false otherwise
    • svn_fs_is_file - Return true if the path points to a file, false otherwise
    • svn_fs_make_dir - Creates a new empty directory, returns true if all is ok, false otherwise
    • svn_fs_make_file - Creates a new empty file, returns true if all is ok, false otherwise
    • svn_fs_node_created_rev - Returns the revision in which path under fsroot was created
    • svn_fs_node_prop - Returns the value of a property for a node
    • svn_fs_props_changed - Return true if props are different, false otherwise
    • svn_fs_revision_prop - Fetches the value of a named property
    • svn_fs_revision_root - Get a handle on a specific version of the repository root
    • svn_fs_txn_root - Creates and returns a transaction root
    • svn_fs_youngest_rev - Returns the number of the youngest revision in the filesystem
    • svn_import - Imports an unversioned path into a repository
    • svn_log - Returns the commit log messages of a repository URL
    • svn_ls - Returns list of directory contents in repository URL, optionally at revision number
    • svn_mkdir - Creates a directory in a working copy or repository
    • svn_repos_create - Create a new subversion repository at path
    • svn_repos_fs - Gets a handle on the filesystem for a repository
    • svn_repos_fs_begin_txn_for_commit - Create a new transaction
    • svn_repos_fs_commit_txn - Commits a transaction and returns the new revision
    • svn_repos_hotcopy - Make a hot-copy of the repos at repospath; copy it to destpath
    • svn_repos_open - Open a shared lock on a repository.
    • svn_repos_recover - Run recovery procedures on the repository located at path.
    • svn_revert - Revert changes to the working copy
    • svn_status - Returns the status of working copy files and directories
    • svn_update - Update working copy
    • SWFAction::__construct - Creates a new SWFAction
    • SWFBitmap::getHeight - Returns the bitmap's height
    • SWFBitmap::getWidth - Returns the bitmap's width
    • SWFBitmap::__construct - Loads Bitmap object
    • SWFButton::addAction - Adds an action
    • SWFButton::addASound - Associates a sound with a button transition
    • SWFButton::addShape - Adds a shape to a button
    • SWFButton::setAction - Sets the action
    • SWFButton::setDown - Alias for addShape(shape, SWFBUTTON_DOWN)
    • SWFButton::setHit - Alias for addShape(shape, SWFBUTTON_HIT)
    • SWFButton::setMenu - enable track as menu button behaviour
    • SWFButton::setOver - Alias for addShape(shape, SWFBUTTON_OVER)
    • SWFButton::setUp - Alias for addShape(shape, SWFBUTTON_UP)
    • SWFButton::__construct - Creates a new Button
    • SWFDisplayItem::addAction - Adds this SWFAction to the given SWFSprite instance
    • SWFDisplayItem::addColor - Adds the given color to this item's color transform
    • SWFDisplayItem::endMask - Another way of defining a MASK layer
    • SWFDisplayItem::getRot - 说明
    • SWFDisplayItem::getX - 说明
    • SWFDisplayItem::getXScale - 说明
    • SWFDisplayItem::getXSkew - 说明
    • SWFDisplayItem::getY - 说明
    • SWFDisplayItem::getYScale - 说明
    • SWFDisplayItem::getYSkew - 说明
    • SWFDisplayItem::move - Moves object in relative coordinates
    • SWFDisplayItem::moveTo - Moves object in global coordinates
    • SWFDisplayItem::multColor - Multiplies the item's color transform
    • SWFDisplayItem::remove - Removes the object from the movie
    • SWFDisplayItem::rotate - Rotates in relative coordinates
    • SWFDisplayItem::rotateTo - Rotates the object in global coordinates
    • SWFDisplayItem::scale - Scales the object in relative coordinates
    • SWFDisplayItem::scaleTo - Scales the object in global coordinates
    • SWFDisplayItem::setDepth - Sets z-order
    • SWFDisplayItem::setMaskLevel - Defines a MASK layer at level
    • SWFDisplayItem::setMatrix - Sets the item's transform matrix
    • SWFDisplayItem::setName - Sets the object's name
    • SWFDisplayItem::setRatio - Sets the object's ratio
    • SWFDisplayItem::skewX - Sets the X-skew
    • SWFDisplayItem::skewXTo - Sets the X-skew
    • SWFDisplayItem::skewY - Sets the Y-skew
    • SWFDisplayItem::skewYTo - Sets the Y-skew
    • SWFFill::moveTo - Moves fill origin
    • SWFFill::rotateTo - Sets fill's rotation
    • SWFFill::scaleTo - Sets fill's scale
    • SWFFill::skewXTo - Sets fill x-skew
    • SWFFill::skewYTo - Sets fill y-skew
    • SWFFont::getAscent - Returns the ascent of the font, or 0 if not available
    • SWFFont::getDescent - Returns the descent of the font, or 0 if not available
    • SWFFont::getLeading - Returns the leading of the font, or 0 if not available
    • SWFFont::getShape - Returns the glyph shape of a char as a text string
    • SWFFont::getUTF8Width - Calculates the width of the given string in this font at full height
    • SWFFont::getWidth - Returns the string's width
    • SWFFont::__construct - Loads a font definition
    • SWFFontChar::addChars - Adds characters to a font for exporting font
    • SWFFontChar::addUTF8Chars - Adds characters to a font for exporting font
    • SWFGradient::addEntry - Adds an entry to the gradient list
    • SWFGradient::__construct - Creates a gradient object
    • SWFMorph::getShape1 - Gets a handle to the starting shape
    • SWFMorph::getShape2 - Gets a handle to the ending shape
    • SWFMorph::__construct - Creates a new SWFMorph object
    • SWFMovie::add - Adds any type of data to a movie
    • SWFMovie::addExport - 说明
    • SWFMovie::addFont - 说明
    • SWFMovie::importChar - 说明
    • SWFMovie::importFont - 说明
    • SWFMovie::labelFrame - Labels a frame
    • SWFMovie::nextFrame - Moves to the next frame of the animation
    • SWFMovie::output - Dumps your lovingly prepared movie out
    • SWFMovie::remove - Removes the object instance from the display list
    • SWFMovie::save - Saves the SWF movie in a file
    • SWFMovie::saveToFile - 说明
    • SWFMovie::setbackground - Sets the background color
    • SWFMovie::setDimension - Sets the movie's width and height
    • SWFMovie::setFrames - Sets the total number of frames in the animation
    • SWFMovie::setRate - Sets the animation's frame rate
    • SWFMovie::startSound - 说明
    • SWFMovie::stopSound - 说明
    • SWFMovie::streamMP3 - Streams a MP3 file
    • SWFMovie::writeExports - 说明
    • SWFMovie::__construct - Creates a new movie object, representing an SWF version 4 movie
    • SWFPrebuiltClip::__construct - Returns a SWFPrebuiltClip object
    • SWFShape::addFill - Adds a solid fill to the shape
    • SWFShape::drawArc - Draws an arc of radius r centered at the current location, from angle startAngle to angle endAngle measured clockwise from 12 o'clock
    • SWFShape::drawCircle - Draws a circle of radius r centered at the current location, in a counter-clockwise fashion
    • SWFShape::drawCubic - Draws a cubic bezier curve using the current position and the three given points as control points
    • SWFShape::drawCubicTo - Draws a cubic bezier curve using the current position and the three given points as control points
    • SWFShape::drawCurve - Draws a curve (relative)
    • SWFShape::drawCurveTo - Draws a curve
    • SWFShape::drawGlyph - Draws the first character in the given string into the shape using the glyph definition from the given font
    • SWFShape::drawLine - Draws a line (relative)
    • SWFShape::drawLineTo - Draws a line
    • SWFShape::movePen - Moves the shape's pen (relative)
    • SWFShape::movePenTo - Moves the shape's pen
    • SWFShape::setLeftFill - Sets left rasterizing color
    • SWFShape::setLine - Sets the shape's line style
    • SWFShape::setRightFill - Sets right rasterizing color
    • SWFShape::__construct - Creates a new shape object
    • SWFSound::__construct - Returns a new SWFSound object from given file
    • SWFSoundInstance::loopCount - 说明
    • SWFSoundInstance::loopInPoint - 说明
    • SWFSoundInstance::loopOutPoint - 说明
    • SWFSoundInstance::noMultiple - 说明
    • SWFSprite::add - Adds an object to a sprite
    • SWFSprite::labelFrame - Labels frame
    • SWFSprite::nextFrame - Moves to the next frame of the animation
    • SWFSprite::remove - Removes an object to a sprite
    • SWFSprite::setFrames - Sets the total number of frames in the animation
    • SWFSprite::startSound - 说明
    • SWFSprite::stopSound - 说明
    • SWFSprite::__construct - Creates a movie clip (a sprite)
    • SWFText::addString - Draws a string
    • SWFText::addUTF8String - Writes the given text into this SWFText object at the current pen position, using the current font, height, spacing, and color
    • SWFText::getAscent - Returns the ascent of the current font at its current size, or 0 if not available
    • SWFText::getDescent - Returns the descent of the current font at its current size, or 0 if not available
    • SWFText::getLeading - Returns the leading of the current font at its current size, or 0 if not available
    • SWFText::getUTF8Width - calculates the width of the given string in this text objects current font and size
    • SWFText::getWidth - Computes string's width
    • SWFText::moveTo - Moves the pen
    • SWFText::setColor - Sets the current text color
    • SWFText::setFont - Sets the current font
    • SWFText::setHeight - Sets the current font height
    • SWFText::setSpacing - Sets the current font spacing
    • SWFText::__construct - Creates a new SWFText object
    • SWFTextField::addChars - adds characters to a font that will be available within a textfield
    • SWFTextField::addString - Concatenates the given string to the text field
    • SWFTextField::align - Sets the text field alignment
    • SWFTextField::setBounds - Sets the text field width and height
    • SWFTextField::setColor - Sets the color of the text field
    • SWFTextField::setFont - Sets the text field font
    • SWFTextField::setHeight - Sets the font height of this text field font
    • SWFTextField::setIndentation - Sets the indentation of the first line
    • SWFTextField::setLeftMargin - Sets the left margin width of the text field
    • SWFTextField::setLineSpacing - Sets the line spacing of the text field
    • SWFTextField::setMargins - Sets the margins width of the text field
    • SWFTextField::setName - Sets the variable name
    • SWFTextField::setPadding - Sets the padding of this textfield
    • SWFTextField::setRightMargin - Sets the right margin width of the text field
    • SWFTextField::__construct - Creates a text field object
    • SWFVideoStream::getNumFrames - Returns the number of frames in the video
    • SWFVideoStream::setDimension - Sets video dimension
    • SWFVideoStream::__construct - Returns a SWFVideoStream object
    • Swish::getMetaList - Get the list of meta entries for the index
    • Swish::getPropertyList - Get the list of properties for the index
    • Swish::prepare - Prepare a search query
    • Swish::query - Execute a query and return results object
    • Swish::__construct - Construct a Swish object
    • SwishResult::getMetaList - Get a list of meta entries
    • SwishResult::stem - Stems the given word
    • SwishResults::getParsedWords - Get an array of parsed words
    • SwishResults::getRemovedStopwords - Get an array of stopwords removed from the query
    • SwishResults::nextResult - Get the next search result
    • SwishResults::seekResult - Set current seek pointer to the given position
    • SwishSearch::execute - Execute the search and get the results
    • SwishSearch::resetLimit - Reset the search limits
    • SwishSearch::setLimit - Set the search limits
    • SwishSearch::setPhraseDelimiter - Set the phrase delimiter
    • SwishSearch::setSort - Set the sort order
    • SwishSearch::setStructure - Set the structure flag in the search object
    • sybase_affected_rows - Gets number of affected rows in last query
    • sybase_close - Closes a Sybase connection
    • sybase_connect - Opens a Sybase server connection
    • sybase_data_seek - Moves internal row pointer
    • sybase_deadlock_retry_count - Sets the deadlock retry count
    • sybase_fetch_array - Fetch row as array
    • sybase_fetch_assoc - Fetch a result row as an associative array
    • sybase_fetch_field - Get field information from a result
    • sybase_fetch_object - Fetch a row as an object
    • sybase_fetch_row - Get a result row as an enumerated array
    • sybase_field_seek - Sets field offset
    • sybase_free_result - Frees result memory
    • sybase_get_last_message - Returns the last message from the server
    • sybase_min_client_severity - Sets minimum client severity
    • sybase_min_error_severity - Sets minimum error severity
    • sybase_min_message_severity - Sets minimum message severity
    • sybase_min_server_severity - Sets minimum server severity
    • sybase_num_fields - Gets the number of fields in a result set
    • sybase_num_rows - Get number of rows in a result set
    • sybase_pconnect - Open persistent Sybase connection
    • sybase_query - Sends a Sybase query
    • sybase_result - Get result data
    • sybase_select_db - Selects a Sybase database
    • sybase_set_message_handler - Sets the handler called when a server message is raised
    • sybase_unbuffered_query - Send a Sybase query and do not block
    • symlink - 建立符号连接
    • SyncEvent::fire - Fires/sets the event
    • SyncEvent::reset - Resets a manual event
    • SyncEvent::wait - Waits for the event to be fired/set
    • SyncEvent::__construct - Constructs a new SyncEvent object
    • SyncMutex::lock - Waits for an exclusive lock
    • SyncMutex::unlock - Unlocks the mutex
    • SyncMutex::__construct - Constructs a new SyncMutex object
    • SyncReaderWriter::readlock - Waits for a read lock
    • SyncReaderWriter::readunlock - Releases a read lock
    • SyncReaderWriter::writelock - Waits for an exclusive write lock
    • SyncReaderWriter::writeunlock - Releases a write lock
    • SyncReaderWriter::__construct - Constructs a new SyncReaderWriter object
    • SyncSemaphore::lock - Decreases the count of the semaphore or waits
    • SyncSemaphore::unlock - Increases the count of the semaphore
    • SyncSemaphore::__construct - Constructs a new SyncSemaphore object
    • SyncSharedMemory::first - Check to see if the object is the first instance system-wide of named shared memory
    • SyncSharedMemory::read - Copy data from named shared memory
    • SyncSharedMemory::size - Returns the size of the named shared memory
    • SyncSharedMemory::write - Copy data to named shared memory
    • SyncSharedMemory::__construct - Constructs a new SyncSharedMemory object
    • syslog - Generate a system log message
    • system - 执行外部程序，并且显示输出
    • sys_getloadavg - 获取系统的负载（load average）
    • sys_get_temp_dir - 返回用于临时文件的目录
  • t
    • taint - Taint a string
    • tan - 正切
    • tanh - 双曲正切
    • tcpwrap_check - Performs a tcpwrap check
    • tempnam - 建立一个具有唯一文件名的文件
    • textdomain - Sets the default domain
    • Thread::detach - 执行
    • Thread::getCreatorId - 识别
    • Thread::getCurrentThread - 识别
    • Thread::getCurrentThreadId - 识别
    • Thread::getThreadId - 识别
    • Thread::globally - 执行
    • Thread::isJoined - 状态监测
    • Thread::isStarted - 状态检测
    • Thread::join - 同步
    • Thread::kill - 执行
    • Thread::start - 执行
    • Threaded::chunk - 操作
    • Threaded::count - Manipulation
    • Threaded::extend - Runtime Manipulation
    • Threaded::from - Creation
    • Threaded::getTerminationInfo - Error Detection
    • Threaded::isRunning - State Detection
    • Threaded::isTerminated - State Detection
    • Threaded::isWaiting - State Detection
    • Threaded::lock - Synchronization
    • Threaded::merge - Manipulation
    • Threaded::notify - Synchronization
    • Threaded::pop - Manipulation
    • Threaded::run - Execution
    • Threaded::shift - Manipulation
    • Threaded::synchronized - Synchronization
    • Threaded::unlock - Synchronization
    • Threaded::wait - Synchronization
    • tidy::$errorBuffer - Return warnings and errors which occurred parsing the specified document
    • tidy::body - Returns a tidyNode object starting from the <body> tag of the tidy parse tree
    • tidy::cleanRepair - Execute configured cleanup and repair operations on parsed markup
    • tidy::diagnose - Run configured diagnostics on parsed and repaired markup
    • tidy::getConfig - Get current Tidy configuration
    • tidy::getHtmlVer - Get the Detected HTML version for the specified document
    • tidy::getOpt - Returns the value of the specified configuration option for the tidy document
    • tidy::getOptDoc - Returns the documentation for the given option name
    • tidy::getRelease - Get release date (version) for Tidy library
    • tidy::getStatus - Get status of specified document
    • tidy::head - Returns a tidyNode object starting from the <head> tag of the tidy parse tree
    • tidy::html - Returns a tidyNode object starting from the <html> tag of the tidy parse tree
    • tidy::isXhtml - Indicates if the document is a XHTML document
    • tidy::isXml - Indicates if the document is a generic (non HTML/XHTML) XML document
    • tidy::parseFile - Parse markup in file or URI
    • tidy::parseString - Parse a document stored in a string
    • tidy::repairFile - Repair a file and return it as a string
    • tidy::repairString - Repair a string using an optionally provided configuration file
    • tidy::root - Returns a tidyNode object representing the root of the tidy parse tree
    • tidy::__construct - Constructs a new tidy object
    • tidyNode::getParent - Returns the parent node of the current node
    • tidyNode::hasChildren - Checks if a node has children
    • tidyNode::hasSiblings - Checks if a node has siblings
    • tidyNode::isAsp - Checks if this node is ASP
    • tidyNode::isComment - Checks if a node represents a comment
    • tidyNode::isHtml - Checks if a node is part of a HTML document
    • tidyNode::isJste - Checks if this node is JSTE
    • tidyNode::isPhp - Checks if a node is PHP
    • tidyNode::isText - Checks if a node represents text (no markup)
    • tidy_access_count - Returns the Number of Tidy accessibility warnings encountered for specified document
    • tidy_config_count - Returns the Number of Tidy configuration errors encountered for specified document
    • tidy_error_count - Returns the Number of Tidy errors encountered for specified document
    • tidy_get_output - Return a string representing the parsed tidy markup
    • tidy_load_config - Load an ASCII Tidy configuration file with the specified encoding
    • tidy_reset_config - Restore Tidy configuration to default values
    • tidy_save_config - Save current settings to named file
    • tidy_setopt - Updates the configuration settings for the specified tidy document
    • tidy_set_encoding - Set the input/output character encoding for parsing markup
    • tidy_warning_count - Returns the Number of Tidy warnings encountered for specified document
    • time - 返回当前的 Unix 时间戳
    • timezone_abbreviations_list - 别名 DateTimeZone::listAbbreviations
    • timezone_identifiers_list - 别名 DateTimeZone::listIdentifiers
    • timezone_location_get - 别名 DateTimeZone::getLocation
    • timezone_name_from_abbr - Returns the timezone name from abbreviation
    • timezone_name_get - 别名 DateTimeZone::getName
    • timezone_offset_get - 别名 DateTimeZone::getOffset
    • timezone_open - 别名 DateTimeZone::__construct
    • timezone_transitions_get - 别名 DateTimeZone::getTransitions
    • timezone_version_get - Gets the version of the timezonedb
    • time_nanosleep - 延缓执行若干秒和纳秒
    • time_sleep_until - 使脚本睡眠到指定的时间为止。
    • tmpfile - 建立一个临时文件
    • token_get_all - 将提供的源码按 PHP 标记进行分割
    • token_name - 获取提供的 PHP 解析器代号的符号名称
    • TokyoTyrant::add - Adds to a numeric key
    • TokyoTyrant::connect - Connect to a database
    • TokyoTyrant::connectUri - Connects to a database
    • TokyoTyrant::copy - Copies the database
    • TokyoTyrant::ext - Execute a remote script
    • TokyoTyrant::fwmKeys - Returns the forward matching keys
    • TokyoTyrant::get - The get purpose
    • TokyoTyrant::getIterator - Get an iterator
    • TokyoTyrant::num - Number of records in the database
    • TokyoTyrant::out - Removes records
    • TokyoTyrant::put - Puts values
    • TokyoTyrant::putCat - Concatenates to a record
    • TokyoTyrant::putKeep - Puts a record
    • TokyoTyrant::putNr - Puts value
    • TokyoTyrant::putShl - Concatenates to a record
    • TokyoTyrant::restore - Restore the database
    • TokyoTyrant::setMaster - Set the replication master
    • TokyoTyrant::size - Returns the size of the value
    • TokyoTyrant::stat - Get statistics
    • TokyoTyrant::sync - Synchronize the database
    • TokyoTyrant::tune - Tunes connection values
    • TokyoTyrant::vanish - Empties the database
    • TokyoTyrant::__construct - Construct a new TokyoTyrant object
    • TokyoTyrantIterator::current - Get the current value
    • TokyoTyrantIterator::key - Returns the current key
    • TokyoTyrantIterator::next - Move to next key
    • TokyoTyrantIterator::rewind - Rewinds the iterator
    • TokyoTyrantIterator::valid - Rewinds the iterator
    • TokyoTyrantIterator::__construct - Construct an iterator
    • TokyoTyrantQuery::addCond - Adds a condition to the query
    • TokyoTyrantQuery::count - Counts records
    • TokyoTyrantQuery::current - Returns the current element
    • TokyoTyrantQuery::hint - Get the hint string of the query
    • TokyoTyrantQuery::key - Returns the current key
    • TokyoTyrantQuery::metaSearch - Retrieve records with multiple queries
    • TokyoTyrantQuery::next - Moves the iterator to next entry
    • TokyoTyrantQuery::out - Removes records based on query
    • TokyoTyrantQuery::rewind - Rewinds the iterator
    • TokyoTyrantQuery::search - Searches records
    • TokyoTyrantQuery::setLimit - Limit results
    • TokyoTyrantQuery::setOrder - Orders results
    • TokyoTyrantQuery::valid - Checks the validity of current item
    • TokyoTyrantQuery::__construct - Construct a new query
    • TokyoTyrantTable::add - Adds a record
    • TokyoTyrantTable::genUid - Generate unique id
    • TokyoTyrantTable::get - Get a row
    • TokyoTyrantTable::getIterator - Get an iterator
    • TokyoTyrantTable::getQuery - Get a query object
    • TokyoTyrantTable::out - Remove records
    • TokyoTyrantTable::put - Store a row
    • TokyoTyrantTable::putCat - Concatenates to a row
    • TokyoTyrantTable::putKeep - Put a new record
    • TokyoTyrantTable::putNr - Puts value
    • TokyoTyrantTable::putShl - Concatenates to a record
    • TokyoTyrantTable::setIndex - Sets index
    • touch - 设定文件的访问和修改时间
    • trader_acos - Vector Trigonometric ACos
    • trader_ad - Chaikin A/D Line
    • trader_add - Vector Arithmetic Add
    • trader_adosc - Chaikin A/D Oscillator
    • trader_adx - Average Directional Movement Index
    • trader_adxr - Average Directional Movement Index Rating
    • trader_apo - Absolute Price Oscillator
    • trader_aroon - Aroon
    • trader_aroonosc - Aroon Oscillator
    • trader_asin - Vector Trigonometric ASin
    • trader_atan - Vector Trigonometric ATan
    • trader_atr - Average True Range
    • trader_avgprice - Average Price
    • trader_bbands - Bollinger Bands
    • trader_beta - Beta
    • trader_bop - Balance Of Power
    • trader_cci - Commodity Channel Index
    • trader_cdl2crows - Two Crows
    • trader_cdl3blackcrows - Three Black Crows
    • trader_cdl3inside - Three Inside Up/Down
    • trader_cdl3linestrike - Three-Line Strike
    • trader_cdl3outside - Three Outside Up/Down
    • trader_cdl3starsinsouth - Three Stars In The South
    • trader_cdl3whitesoldiers - Three Advancing White Soldiers
    • trader_cdlabandonedbaby - Abandoned Baby
    • trader_cdladvanceblock - Advance Block
    • trader_cdlbelthold - Belt-hold
    • trader_cdlbreakaway - Breakaway
    • trader_cdlclosingmarubozu - Closing Marubozu
    • trader_cdlconcealbabyswall - Concealing Baby Swallow
    • trader_cdlcounterattack - Counterattack
    • trader_cdldarkcloudcover - Dark Cloud Cover
    • trader_cdldoji - Doji
    • trader_cdldojistar - Doji Star
    • trader_cdldragonflydoji - Dragonfly Doji
    • trader_cdlengulfing - Engulfing Pattern
    • trader_cdleveningdojistar - Evening Doji Star
    • trader_cdleveningstar - Evening Star
    • trader_cdlgapsidesidewhite - Up/Down-gap side-by-side white lines
    • trader_cdlgravestonedoji - Gravestone Doji
    • trader_cdlhammer - Hammer
    • trader_cdlhangingman - Hanging Man
    • trader_cdlharami - Harami Pattern
    • trader_cdlharamicross - Harami Cross Pattern
    • trader_cdlhighwave - High-Wave Candle
    • trader_cdlhikkake - Hikkake Pattern
    • trader_cdlhikkakemod - Modified Hikkake Pattern
    • trader_cdlhomingpigeon - Homing Pigeon
    • trader_cdlidentical3crows - Identical Three Crows
    • trader_cdlinneck - In-Neck Pattern
    • trader_cdlinvertedhammer - Inverted Hammer
    • trader_cdlkicking - Kicking
    • trader_cdlkickingbylength - Kicking - bull/bear determined by the longer marubozu
    • trader_cdlladderbottom - Ladder Bottom
    • trader_cdllongleggeddoji - Long Legged Doji
    • trader_cdllongline - Long Line Candle
    • trader_cdlmarubozu - Marubozu
    • trader_cdlmatchinglow - Matching Low
    • trader_cdlmathold - Mat Hold
    • trader_cdlmorningdojistar - Morning Doji Star
    • trader_cdlmorningstar - Morning Star
    • trader_cdlonneck - On-Neck Pattern
    • trader_cdlpiercing - Piercing Pattern
    • trader_cdlrickshawman - Rickshaw Man
    • trader_cdlrisefall3methods - Rising/Falling Three Methods
    • trader_cdlseparatinglines - Separating Lines
    • trader_cdlshootingstar - Shooting Star
    • trader_cdlshortline - Short Line Candle
    • trader_cdlspinningtop - Spinning Top
    • trader_cdlstalledpattern - Stalled Pattern
    • trader_cdlsticksandwich - Stick Sandwich
    • trader_cdltakuri - Takuri (Dragonfly Doji with very long lower shadow)
    • trader_cdltasukigap - Tasuki Gap
    • trader_cdlthrusting - Thrusting Pattern
    • trader_cdltristar - Tristar Pattern
    • trader_cdlunique3river - Unique 3 River
    • trader_cdlupsidegap2crows - Upside Gap Two Crows
    • trader_cdlxsidegap3methods - Upside/Downside Gap Three Methods
    • trader_ceil - Vector Ceil
    • trader_cmo - Chande Momentum Oscillator
    • trader_correl - Pearson's Correlation Coefficient (r)
    • trader_cos - Vector Trigonometric Cos
    • trader_cosh - Vector Trigonometric Cosh
    • trader_dema - Double Exponential Moving Average
    • trader_div - Vector Arithmetic Div
    • trader_dx - Directional Movement Index
    • trader_ema - Exponential Moving Average
    • trader_errno - Get error code
    • trader_exp - Vector Arithmetic Exp
    • trader_floor - Vector Floor
    • trader_get_compat - Get compatibility mode
    • trader_get_unstable_period - Get unstable period
    • trader_ht_dcperiod - Hilbert Transform - Dominant Cycle Period
    • trader_ht_dcphase - Hilbert Transform - Dominant Cycle Phase
    • trader_ht_phasor - Hilbert Transform - Phasor Components
    • trader_ht_sine - Hilbert Transform - SineWave
    • trader_ht_trendline - Hilbert Transform - Instantaneous Trendline
    • trader_ht_trendmode - Hilbert Transform - Trend vs Cycle Mode
    • trader_kama - Kaufman Adaptive Moving Average
    • trader_linearreg - Linear Regression
    • trader_linearreg_angle - Linear Regression Angle
    • trader_linearreg_intercept - Linear Regression Intercept
    • trader_linearreg_slope - Linear Regression Slope
    • trader_ln - Vector Log Natural
    • trader_log10 - Vector Log10
    • trader_ma - Moving average
    • trader_macd - Moving Average Convergence/Divergence
    • trader_macdext - MACD with controllable MA type
    • trader_macdfix - Moving Average Convergence/Divergence Fix 12/26
    • trader_mama - MESA Adaptive Moving Average
    • trader_mavp - Moving average with variable period
    • trader_max - Highest value over a specified period
    • trader_maxindex - Index of highest value over a specified period
    • trader_medprice - Median Price
    • trader_mfi - Money Flow Index
    • trader_midpoint - MidPoint over period
    • trader_midprice - Midpoint Price over period
    • trader_min - Lowest value over a specified period
    • trader_minindex - Index of lowest value over a specified period
    • trader_minmax - Lowest and highest values over a specified period
    • trader_minmaxindex - Indexes of lowest and highest values over a specified period
    • trader_minus_di - Minus Directional Indicator
    • trader_minus_dm - Minus Directional Movement
    • trader_mom - Momentum
    • trader_mult - Vector Arithmetic Mult
    • trader_natr - Normalized Average True Range
    • trader_obv - On Balance Volume
    • trader_plus_di - Plus Directional Indicator
    • trader_plus_dm - Plus Directional Movement
    • trader_ppo - Percentage Price Oscillator
    • trader_roc - Rate of change : ((price/prevPrice)-1)*100
    • trader_rocp - Rate of change Percentage: (price-prevPrice)/prevPrice
    • trader_rocr - Rate of change ratio: (price/prevPrice)
    • trader_rocr100 - Rate of change ratio 100 scale: (price/prevPrice)*100
    • trader_rsi - Relative Strength Index
    • trader_sar - Parabolic SAR
    • trader_sarext - Parabolic SAR - Extended
    • trader_set_compat - Set compatibility mode
    • trader_set_unstable_period - Set unstable period
    • trader_sin - Vector Trigonometric Sin
    • trader_sinh - Vector Trigonometric Sinh
    • trader_sma - Simple Moving Average
    • trader_sqrt - Vector Square Root
    • trader_stddev - Standard Deviation
    • trader_stoch - Stochastic
    • trader_stochf - Stochastic Fast
    • trader_stochrsi - Stochastic Relative Strength Index
    • trader_sub - Vector Arithmetic Subtraction
    • trader_sum - Summation
    • trader_t3 - Triple Exponential Moving Average (T3)
    • trader_tan - Vector Trigonometric Tan
    • trader_tanh - Vector Trigonometric Tanh
    • trader_tema - Triple Exponential Moving Average
    • trader_trange - True Range
    • trader_trima - Triangular Moving Average
    • trader_trix - 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA
    • trader_tsf - Time Series Forecast
    • trader_typprice - Typical Price
    • trader_ultosc - Ultimate Oscillator
    • trader_var - Variance
    • trader_wclprice - Weighted Close Price
    • trader_willr - Williams' %R
    • trader_wma - Weighted Moving Average
    • trait_exists - 检查指定的 trait 是否存在
    • Transliterator::create - Create a transliterator
    • Transliterator::createFromRules - Create transliterator from rules
    • Transliterator::createInverse - Create an inverse transliterator
    • Transliterator::getErrorCode - Get last error code
    • Transliterator::getErrorMessage - Get last error message
    • Transliterator::listIDs - Get transliterator IDs
    • Transliterator::transliterate - Transliterate a string
    • Transliterator::__construct - Private constructor to deny instantiation
    • trigger_error - 产生一个用户级别的 error/warning/notice 信息
    • trim - 去除字符串首尾处的空白字符（或者其他字符）
  • u
    • uasort - 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
    • ucfirst - 将字符串的首字母转换为大写
    • UConverter::convert - Convert string from one charset to another
    • UConverter::fromUCallback - Default "from" callback function
    • UConverter::getAliases - Get the aliases of the given name
    • UConverter::getAvailable - Get the available canonical converter names
    • UConverter::getDestinationEncoding - Get the destination encoding
    • UConverter::getDestinationType - Get the destination converter type
    • UConverter::getErrorCode - Get last error code on the object
    • UConverter::getErrorMessage - Get last error message on the object
    • UConverter::getSourceEncoding - Get the source encoding
    • UConverter::getSourceType - Get the source convertor type
    • UConverter::getStandards - Get standards associated to converter names
    • UConverter::getSubstChars - Get substitution chars
    • UConverter::reasonText - Get string representation of the callback reason
    • UConverter::setDestinationEncoding - Set the destination encoding
    • UConverter::setSourceEncoding - Set the source encoding
    • UConverter::setSubstChars - Set the substitution chars
    • UConverter::toUCallback - Default "to" callback function
    • UConverter::transcode - Convert string from one charset to another
    • UConverter::__construct - Create UConverter object
    • ucwords - 将字符串中每个单词的首字母转换为大写
    • udm_add_search_limit - Add various search limits
    • udm_alloc_agent - Allocate mnoGoSearch session
    • udm_alloc_agent_array - Allocate mnoGoSearch session
    • udm_api_version - Get mnoGoSearch API version
    • udm_cat_list - Get all the categories on the same level with the current one
    • udm_cat_path - Get the path to the current category
    • udm_check_charset - Check if the given charset is known to mnogosearch
    • udm_clear_search_limits - Clear all mnoGoSearch search restrictions
    • udm_crc32 - Return CRC32 checksum of given string
    • udm_errno - Get mnoGoSearch error number
    • udm_error - Get mnoGoSearch error message
    • udm_find - Perform search
    • udm_free_agent - Free mnoGoSearch session
    • udm_free_ispell_data - Free memory allocated for ispell data
    • udm_free_res - Free mnoGoSearch result
    • udm_get_doc_count - Get total number of documents in database
    • udm_get_res_field - Fetch a result field
    • udm_get_res_param - Get mnoGoSearch result parameters
    • udm_hash32 - Return Hash32 checksum of given string
    • udm_load_ispell_data - Load ispell data
    • udm_set_agent_param - Set mnoGoSearch agent session parameters
    • UI\Area::onDraw - Draw Callback
    • UI\Area::onKey - Key Callback
    • UI\Area::onMouse - Mouse Callback
    • UI\Area::redraw - Redraw Area
    • UI\Area::scrollTo - Area Scroll
    • UI\Area::setSize - Set Size
    • UI\Control::destroy - Destroy Control
    • UI\Control::disable - Disable Control
    • UI\Control::enable - Enable Control
    • UI\Control::getParent - Get Parent Control
    • UI\Control::getTopLevel - Get Top Level
    • UI\Control::hide - Hide Control
    • UI\Control::isEnabled - Determine if Control is enabled
    • UI\Control::isVisible - Determine if Control is visible
    • UI\Control::setParent - Set Parent Control
    • UI\Control::show - Control Show
    • UI\Controls\Box::append - Append Control
    • UI\Controls\Box::delete - Delete Control
    • UI\Controls\Box::getOrientation - Get Orientation
    • UI\Controls\Box::isPadded - Padding Detection
    • UI\Controls\Box::setPadded - Set Padding
    • UI\Controls\Box::__construct - Construct a new Box
    • UI\Controls\Button::getText - Get Text
    • UI\Controls\Button::onClick - Click Handler
    • UI\Controls\Button::setText - Set Text
    • UI\Controls\Button::__construct - Construct a new Button
    • UI\Controls\Check::getText - Get Text
    • UI\Controls\Check::isChecked - Checked Detection
    • UI\Controls\Check::onToggle - Toggle Callback
    • UI\Controls\Check::setChecked - Set Checked
    • UI\Controls\Check::setText - Set Text
    • UI\Controls\Check::__construct - Construct a new Check
    • UI\Controls\ColorButton::getColor - Get Color
    • UI\Controls\ColorButton::onChange - Change Handler
    • UI\Controls\ColorButton::setColor - Set Color
    • UI\Controls\Combo::append - Append Option
    • UI\Controls\Combo::getSelected - Get Selected Option
    • UI\Controls\Combo::onSelected - Selected Handler
    • UI\Controls\Combo::setSelected - Set Selected Option
    • UI\Controls\EditableCombo::append - Append Option
    • UI\Controls\EditableCombo::getText - Get Text
    • UI\Controls\EditableCombo::onChange - Change Handler
    • UI\Controls\EditableCombo::setText - Set Text
    • UI\Controls\Entry::getText - Get Text
    • UI\Controls\Entry::isReadOnly - Detect Read Only
    • UI\Controls\Entry::onChange - Change Handler
    • UI\Controls\Entry::setReadOnly - Set Read Only
    • UI\Controls\Entry::setText - Set Text
    • UI\Controls\Entry::__construct - Construct a new Entry
    • UI\Controls\Form::append - Append Control
    • UI\Controls\Form::delete - Delete Control
    • UI\Controls\Form::isPadded - Padding Detection
    • UI\Controls\Form::setPadded - Set Padding
    • UI\Controls\Grid::append - Append Control
    • UI\Controls\Grid::isPadded - Padding Detection
    • UI\Controls\Grid::setPadded - Set Padding
    • UI\Controls\Group::append - Append Control
    • UI\Controls\Group::getTitle - Get Title
    • UI\Controls\Group::hasMargin - Margin Detection
    • UI\Controls\Group::setMargin - Set Margin
    • UI\Controls\Group::setTitle - Set Title
    • UI\Controls\Group::__construct - Construct a new Group
    • UI\Controls\Label::getText - Get Text
    • UI\Controls\Label::setText - Set Text
    • UI\Controls\Label::__construct - Construct a new Label
    • UI\Controls\MultilineEntry::append - Append Text
    • UI\Controls\MultilineEntry::getText - Get Text
    • UI\Controls\MultilineEntry::isReadOnly - Read Only Detection
    • UI\Controls\MultilineEntry::onChange - Change Handler
    • UI\Controls\MultilineEntry::setReadOnly - Set Read Only
    • UI\Controls\MultilineEntry::setText - Set Text
    • UI\Controls\MultilineEntry::__construct - Construct a new Multiline Entry
    • UI\Controls\Picker::__construct - Construct a new Picker
    • UI\Controls\Progress::getValue - Get Value
    • UI\Controls\Progress::setValue - Set Value
    • UI\Controls\Radio::append - Append Option
    • UI\Controls\Radio::getSelected - Get Selected Option
    • UI\Controls\Radio::onSelected - Selected Handler
    • UI\Controls\Radio::setSelected - Set Selected Option
    • UI\Controls\Separator::__construct - Construct a new Separator
    • UI\Controls\Slider::getValue - Get Value
    • UI\Controls\Slider::onChange - Change Handler
    • UI\Controls\Slider::setValue - Set Value
    • UI\Controls\Slider::__construct - Construct a new Slider
    • UI\Controls\Spin::getValue - Get Value
    • UI\Controls\Spin::onChange - Change Handler
    • UI\Controls\Spin::setValue - Set Value
    • UI\Controls\Spin::__construct - Construct a new Spin
    • UI\Controls\Tab::append - Append Page
    • UI\Controls\Tab::delete - Delete Page
    • UI\Controls\Tab::hasMargin - Margin Detection
    • UI\Controls\Tab::insertAt - Insert Page
    • UI\Controls\Tab::pages - Page Count
    • UI\Controls\Tab::setMargin - Set Margin
    • UI\Draw\Brush::getColor - Get Color
    • UI\Draw\Brush::setColor - Set Color
    • UI\Draw\Brush::__construct - Construct a new Brush
    • UI\Draw\Brush\Gradient::addStop - Stop Manipulation
    • UI\Draw\Brush\Gradient::delStop - Stop Manipulation
    • UI\Draw\Brush\Gradient::setStop - Stop Manipulation
    • UI\Draw\Brush\LinearGradient::__construct - Construct a Linear Gradient
    • UI\Draw\Brush\RadialGradient::__construct - Construct a new Radial Gradient
    • UI\Draw\Color::getChannel - Color Manipulation
    • UI\Draw\Color::setChannel - Color Manipulation
    • UI\Draw\Color::__construct - Construct new Color
    • UI\Draw\Matrix::invert - Invert Matrix
    • UI\Draw\Matrix::isInvertible - Invertible Detection
    • UI\Draw\Matrix::multiply - Multiply Matrix
    • UI\Draw\Matrix::rotate - Rotate Matrix
    • UI\Draw\Matrix::scale - Scale Matrix
    • UI\Draw\Matrix::skew - Skew Matrix
    • UI\Draw\Matrix::translate - Translate Matrix
    • UI\Draw\Path::addRectangle - Draw a Rectangle
    • UI\Draw\Path::arcTo - Draw an Arc
    • UI\Draw\Path::bezierTo - Draw Bezier Curve
    • UI\Draw\Path::closeFigure - Close Figure
    • UI\Draw\Path::end - Finalize Path
    • UI\Draw\Path::lineTo - Draw a Line
    • UI\Draw\Path::newFigure - Draw Figure
    • UI\Draw\Path::newFigureWithArc - Draw Figure with Arc
    • UI\Draw\Path::__construct - Construct a new Path
    • UI\Draw\Pen::clip - Clip a Path
    • UI\Draw\Pen::fill - Fill a Path
    • UI\Draw\Pen::restore - Restore
    • UI\Draw\Pen::save - Save
    • UI\Draw\Pen::stroke - Stroke a Path
    • UI\Draw\Pen::transform - Matrix Transform
    • UI\Draw\Pen::write - Draw Text at Point
    • UI\Draw\Stroke::getCap - Get Line Cap
    • UI\Draw\Stroke::getJoin - Get Line Join
    • UI\Draw\Stroke::getMiterLimit - Get Miter Limit
    • UI\Draw\Stroke::getThickness - Get Thickness
    • UI\Draw\Stroke::setCap - Set Line Cap
    • UI\Draw\Stroke::setJoin - Set Line Join
    • UI\Draw\Stroke::setMiterLimit - Set Miter Limit
    • UI\Draw\Stroke::setThickness - Set Thickness
    • UI\Draw\Stroke::__construct - Construct a new Stroke
    • UI\Draw\Text\Font::getAscent - Font Metrics
    • UI\Draw\Text\Font::getDescent - Font Metrics
    • UI\Draw\Text\Font::getLeading - Font Metrics
    • UI\Draw\Text\Font::getUnderlinePosition - Font Metrics
    • UI\Draw\Text\Font::getUnderlineThickness - Font Metrics
    • UI\Draw\Text\Font::__construct - Construct a new Font
    • UI\Draw\Text\Font\Descriptor::getFamily - Get Font Family
    • UI\Draw\Text\Font\Descriptor::getItalic - Style Detection
    • UI\Draw\Text\Font\Descriptor::getSize - Size Detection
    • UI\Draw\Text\Font\Descriptor::getStretch - Style Detection
    • UI\Draw\Text\Font\Descriptor::getWeight - Weight Detection
    • UI\Draw\Text\Font\Descriptor::__construct - Construct a new Font Descriptor
    • UI\Draw\Text\Font\fontFamilies - Retrieve Font Families
    • UI\Draw\Text\Layout::setColor - Set Color
    • UI\Draw\Text\Layout::setWidth - Set Width
    • UI\Draw\Text\Layout::__construct - Construct a new Text Layout
    • UI\Executor::kill - Stop Executor
    • UI\Executor::onExecute - Execution Callback
    • UI\Executor::setInterval - Interval Manipulation
    • UI\Executor::__construct - Construct a new Executor
    • UI\Menu::append - Append Menu Item
    • UI\Menu::appendAbout - Append About Menu Item
    • UI\Menu::appendCheck - Append Checkable Menu Item
    • UI\Menu::appendPreferences - Append Preferences Menu Item
    • UI\Menu::appendQuit - Append Quit Menu Item
    • UI\Menu::appendSeparator - Append Menu Item Separator
    • UI\Menu::__construct - Construct a new Menu
    • UI\MenuItem::disable - Disable Menu Item
    • UI\MenuItem::enable - Enable Menu Item
    • UI\MenuItem::isChecked - Detect Checked
    • UI\MenuItem::onClick - On Click Callback
    • UI\MenuItem::setChecked - Set Checked
    • UI\Point::at - Size Coercion
    • UI\Point::getX - Retrieves X
    • UI\Point::getY - Retrieves Y
    • UI\Point::setX - Set X
    • UI\Point::setY - Set Y
    • UI\Point::__construct - Construct a new Point
    • UI\quit - Quit UI Loop
    • UI\run - Enter UI Loop
    • UI\Size::getHeight - Retrieves Height
    • UI\Size::getWidth - Retrives Width
    • UI\Size::of - Point Coercion
    • UI\Size::setHeight - Set Height
    • UI\Size::setWidth - Set Width
    • UI\Size::__construct - Construct a new Size
    • UI\Window::add - Add a Control
    • UI\Window::error - Show Error Box
    • UI\Window::getSize - Get Window Size
    • UI\Window::getTitle - Get Title
    • UI\Window::hasBorders - Border Detection
    • UI\Window::hasMargin - Margin Detection
    • UI\Window::isFullScreen - Full Screen Detection
    • UI\Window::msg - Show Message Box
    • UI\Window::onClosing - Closing Callback
    • UI\Window::open - Open Dialog
    • UI\Window::save - Save Dialog
    • UI\Window::setBorders - Border Use
    • UI\Window::setFullScreen - Full Screen Use
    • UI\Window::setMargin - Margin Use
    • UI\Window::setSize - Set Size
    • UI\Window::setTitle - Window Title
    • UI\Window::__construct - Construct a new Window
    • uksort - 使用用户自定义的比较函数对数组中的键名进行排序
    • umask - 改变当前的 umask
    • uniqid - 生成一个唯一ID
    • unixtojd - 转变Unix时间戳为Julian Day计数
    • unlink - 删除文件
    • unpack - Unpack data from binary string
    • unregister_tick_function - De-register a function for execution on each tick
    • unserialize - 从已存储的表示中创建 PHP 的值
    • unset - 释放给定的变量
    • untaint - Untaint strings
    • uopz_backup - Backup a function
    • uopz_compose - Compose a class
    • uopz_copy - Copy a function
    • uopz_delete - Delete a function
    • uopz_extend - Extend a class at runtime
    • uopz_flags - Get or set flags on function or class
    • uopz_function - Creates a function at runtime
    • uopz_implement - Implements an interface at runtime
    • uopz_overload - Overload a VM opcode
    • uopz_redefine - Redefine a constant
    • uopz_rename - Rename a function at runtime
    • uopz_restore - Restore a previously backed up function
    • uopz_undefine - Undefine a constant
    • urldecode - 解码已编码的 URL 字符串
    • urlencode - 编码 URL 字符串
    • user_error - trigger_error 的别名
    • use_soap_error_handler - Set whether to use the SOAP error handler
    • usleep - 以指定的微秒数延迟执行
    • usort - 使用用户自定义的比较函数对数组中的值进行排序
    • utf8_decode - 将用 UTF-8 方式编码的 ISO-8859-1 字符串转换成单字节的 ISO-8859-1 字符串。
    • utf8_encode - 将 ISO-8859-1 编码的字符串转换为 UTF-8 编码
  • v
    • V8Js::executeString - Execute a string as Javascript code
    • V8Js::getExtensions - Return an array of registered extensions
    • V8Js::getPendingException - Return pending uncaught Javascript exception
    • V8Js::registerExtension - Register Javascript extensions for V8Js
    • V8Js::__construct - Construct a new V8Js object
    • V8JsException::getJsFileName - The getJsFileName purpose
    • V8JsException::getJsLineNumber - The getJsLineNumber purpose
    • V8JsException::getJsSourceLine - The getJsSourceLine purpose
    • V8JsException::getJsTrace - The getJsTrace purpose
    • variant_abs - Returns the absolute value of a variant
    • variant_add - "Adds" two variant values together and returns the result
    • variant_and - Performs a bitwise AND operation between two variants
    • variant_cast - Convert a variant into a new variant object of another type
    • variant_cat - concatenates two variant values together and returns the result
    • variant_cmp - Compares two variants
    • variant_date_from_timestamp - Returns a variant date representation of a Unix timestamp
    • variant_date_to_timestamp - Converts a variant date/time value to Unix timestamp
    • variant_div - Returns the result from dividing two variants
    • variant_eqv - Performs a bitwise equivalence on two variants
    • variant_fix - Returns the integer portion of a variant
    • variant_get_type - Returns the type of a variant object
    • variant_idiv - Converts variants to integers and then returns the result from dividing them
    • variant_imp - Performs a bitwise implication on two variants
    • variant_int - Returns the integer portion of a variant
    • variant_mod - Divides two variants and returns only the remainder
    • variant_mul - Multiplies the values of the two variants
    • variant_neg - Performs logical negation on a variant
    • variant_not - Performs bitwise not negation on a variant
    • variant_or - Performs a logical disjunction on two variants
    • variant_pow - Returns the result of performing the power function with two variants
    • variant_round - Rounds a variant to the specified number of decimal places
    • variant_set - Assigns a new value for a variant object
    • variant_set_type - Convert a variant into another type "in-place"
    • variant_sub - Subtracts the value of the right variant from the left variant value
    • variant_xor - Performs a logical exclusion on two variants
    • VarnishAdmin::auth - Authenticate on a varnish instance
    • VarnishAdmin::ban - Ban URLs using a VCL expression
    • VarnishAdmin::banUrl - Ban an URL using a VCL expression
    • VarnishAdmin::clearPanic - Clear varnish instance panic messages
    • VarnishAdmin::connect - Connect to a varnish instance administration interface
    • VarnishAdmin::disconnect - Disconnect from a varnish instance administration interface
    • VarnishAdmin::getPanic - Get the last panic message on a varnish instance
    • VarnishAdmin::getParams - Fetch current varnish instance configuration parameters
    • VarnishAdmin::isRunning - Check if the varnish slave process is currently running
    • VarnishAdmin::setCompat - Set the class compat configuration param
    • VarnishAdmin::setHost - Set the class host configuration param
    • VarnishAdmin::setIdent - Set the class ident configuration param
    • VarnishAdmin::setParam - Set configuration param on the current varnish instance
    • VarnishAdmin::setPort - Set the class port configuration param
    • VarnishAdmin::setSecret - Set the class secret configuration param
    • VarnishAdmin::setTimeout - Set the class timeout configuration param
    • VarnishAdmin::start - Start varnish worker process
    • VarnishAdmin::stop - Stop varnish worker process
    • VarnishAdmin::__construct - VarnishAdmin constructor
    • VarnishLog::getLine - Get next log line
    • VarnishLog::getTagName - Get the log tag string representation by its index
    • VarnishLog::__construct - Varnishlog constructor
    • VarnishStat::getSnapshot - Get the current varnish instance statistics snapshot
    • VarnishStat::__construct - VarnishStat constructor
    • var_dump - 打印变量的相关信息
    • var_export - 输出或返回一个变量的字符串表示
    • version_compare - 对比两个「PHP 规范化」的版本数字字符串
    • vfprintf - 将格式化字符串写入流
    • virtual - 执行 Apache 子请求
    • vpopmail_add_alias_domain - Add an alias for a virtual domain
    • vpopmail_add_alias_domain_ex - Add alias to an existing virtual domain
    • vpopmail_add_domain - Add a new virtual domain
    • vpopmail_add_domain_ex - Add a new virtual domain
    • vpopmail_add_user - Add a new user to the specified virtual domain
    • vpopmail_alias_add - Insert a virtual alias
    • vpopmail_alias_del - Deletes all virtual aliases of a user
    • vpopmail_alias_del_domain - Deletes all virtual aliases of a domain
    • vpopmail_alias_get - Get all lines of an alias for a domain
    • vpopmail_alias_get_all - Get all lines of an alias for a domain
    • vpopmail_auth_user - Attempt to validate a username/domain/password
    • vpopmail_del_domain - Delete a virtual domain
    • vpopmail_del_domain_ex - Delete a virtual domain
    • vpopmail_del_user - Delete a user from a virtual domain
    • vpopmail_error - Get text message for last vpopmail error
    • vpopmail_passwd - Change a virtual user's password
    • vpopmail_set_user_quota - Sets a virtual user's quota
    • vprintf - 输出格式化字符串
    • vsprintf - 返回格式化字符串
  • w
    • wddx_add_vars - Add variables to a WDDX packet with the specified ID
    • wddx_deserialize - Unserializes a WDDX packet
    • wddx_packet_end - Ends a WDDX packet with the specified ID
    • wddx_packet_start - Starts a new WDDX packet with structure inside it
    • wddx_serialize_value - Serialize a single value into a WDDX packet
    • wddx_serialize_vars - Serialize variables into a WDDX packet
    • WeakMap::count - Counts the number of live entries in the map
    • WeakMap::current - Returns the current value under iteration
    • WeakMap::key - Returns the current key under iteration.
    • WeakMap::next - Advances to the next map element
    • WeakMap::offsetExists - Checks whether a certain object is in the map
    • WeakMap::offsetGet - Returns the value pointed to by a certain object
    • WeakMap::offsetSet - Updates the map with a new key-value pair
    • WeakMap::offsetUnset - Removes an entry from the map
    • WeakMap::rewind - Rewinds the iterator to the beginning of the map
    • WeakMap::valid - Returns whether the iterator is still on a valid map element
    • WeakMap::__construct - Constructs a new map
    • Weakref::acquire - Acquires a strong reference on that object
    • Weakref::get - Returns the object pointed to by the weak reference
    • Weakref::release - Releases a previously acquired reference
    • Weakref::valid - Checks whether the object referenced still exists
    • Weakref::__construct - Constructs a new weak reference
    • win32_continue_service - Resumes a paused service
    • win32_create_service - Creates a new service entry in the SCM database
    • win32_delete_service - Deletes a service entry from the SCM database
    • win32_get_last_control_message - Returns the last control message that was sent to this service
    • win32_pause_service - Pauses a service
    • win32_ps_list_procs - List running processes
    • win32_ps_stat_mem - Stat memory utilization
    • win32_ps_stat_proc - Stat process
    • win32_query_service_status - Queries the status of a service
    • win32_set_service_status - Update the service status
    • win32_start_service - Starts a service
    • win32_start_service_ctrl_dispatcher - Registers the script with the SCM, so that it can act as the service with the given name
    • win32_stop_service - Stops a service
    • wincache_fcache_fileinfo - Retrieves information about files cached in the file cache
    • wincache_fcache_meminfo - Retrieves information about file cache memory usage
    • wincache_lock - Acquires an exclusive lock on a given key
    • wincache_ocache_fileinfo - Retrieves information about files cached in the opcode cache
    • wincache_ocache_meminfo - Retrieves information about opcode cache memory usage
    • wincache_refresh_if_changed - Refreshes the cache entries for the cached files
    • wincache_rplist_fileinfo - Retrieves information about resolve file path cache
    • wincache_rplist_meminfo - Retrieves information about memory usage by the resolve file path cache
    • wincache_scache_info - Retrieves information about files cached in the session cache
    • wincache_scache_meminfo - Retrieves information about session cache memory usage
    • wincache_ucache_add - Adds a variable in user cache only if variable does not already exist in the cache
    • wincache_ucache_cas - Compares the variable with old value and assigns new value to it
    • wincache_ucache_clear - Deletes entire content of the user cache
    • wincache_ucache_dec - Decrements the value associated with the key
    • wincache_ucache_delete - Deletes variables from the user cache
    • wincache_ucache_exists - Checks if a variable exists in the user cache
    • wincache_ucache_get - Gets a variable stored in the user cache
    • wincache_ucache_inc - Increments the value associated with the key
    • wincache_ucache_info - Retrieves information about data stored in the user cache
    • wincache_ucache_meminfo - Retrieves information about user cache memory usage
    • wincache_ucache_set - Adds a variable in user cache and overwrites a variable if it already exists in the cache
    • wincache_unlock - Releases an exclusive lock on a given key
    • wordwrap - 打断字符串为指定数量的字串
    • Worker::collect - Collect references to completed tasks
    • Worker::getStacked - 栈分析
    • Worker::isShutdown - 状态检测
    • Worker::isWorking - 状态检测
    • Worker::shutdown - 同步
    • Worker::stack - 栈操作
    • Worker::unstack - 栈操作
  • x
    • xattr_get - Get an extended attribute
    • xattr_list - Get a list of extended attributes
    • xattr_remove - Remove an extended attribute
    • xattr_set - Set an extended attribute
    • xattr_supported - Check if filesystem supports extended attributes
    • xdiff_file_bdiff - Make binary diff of two files
    • xdiff_file_bdiff_size - Read a size of file created by applying a binary diff
    • xdiff_file_bpatch - Patch a file with a binary diff
    • xdiff_file_diff - Make unified diff of two files
    • xdiff_file_diff_binary - Alias of xdiff_file_bdiff
    • xdiff_file_merge3 - Merge 3 files into one
    • xdiff_file_patch - Patch a file with an unified diff
    • xdiff_file_patch_binary - Alias of xdiff_file_bpatch
    • xdiff_file_rabdiff - Make binary diff of two files using the Rabin's polynomial fingerprinting algorithm
    • xdiff_string_bdiff - Make binary diff of two strings
    • xdiff_string_bdiff_size - Read a size of file created by applying a binary diff
    • xdiff_string_bpatch - Patch a string with a binary diff
    • xdiff_string_diff - Make unified diff of two strings
    • xdiff_string_diff_binary - Alias of xdiff_string_bdiff
    • xdiff_string_merge3 - Merge 3 strings into one
    • xdiff_string_patch - Patch a string with an unified diff
    • xdiff_string_patch_binary - Alias of xdiff_string_bpatch
    • xdiff_string_rabdiff - Make binary diff of two strings using the Rabin's polynomial fingerprinting algorithm
    • xhprof_disable - 停止 xhprof 分析器
    • xhprof_enable - 启动 xhprof 性能分析器
    • xhprof_sample_disable - 停止 xhprof 性能采样分析器
    • xhprof_sample_enable - 以采样模式启动 XHProf 性能分析
    • XMLDiff\Base::diff - Produce diff of two XML documents
    • XMLDiff\Base::merge - Produce new XML document based on diff
    • XMLDiff\Base::__construct - Constructor
    • XMLDiff\DOM::diff - Diff two DOMDocument objects
    • XMLDiff\DOM::merge - Produce merged DOMDocument
    • XMLDiff\File::diff - Diff two XML files
    • XMLDiff\File::merge - Produce merged XML document
    • XMLDiff\Memory::diff - Diff two XML documents
    • XMLDiff\Memory::merge - Produce merged XML document
    • XMLReader::close - Close the XMLReader input
    • XMLReader::expand - Returns a copy of the current node as a DOM object
    • XMLReader::getAttribute - Get the value of a named attribute
    • XMLReader::getAttributeNo - Get the value of an attribute by index
    • XMLReader::getAttributeNs - Get the value of an attribute by localname and URI
    • XMLReader::getParserProperty - Indicates if specified property has been set
    • XMLReader::isValid - Indicates if the parsed document is valid
    • XMLReader::lookupNamespace - Lookup namespace for a prefix
    • XMLReader::moveToAttribute - Move cursor to a named attribute
    • XMLReader::moveToAttributeNo - Move cursor to an attribute by index
    • XMLReader::moveToAttributeNs - Move cursor to a named attribute
    • XMLReader::moveToElement - Position cursor on the parent Element of current Attribute
    • XMLReader::moveToFirstAttribute - Position cursor on the first Attribute
    • XMLReader::moveToNextAttribute - Position cursor on the next Attribute
    • XMLReader::next - Move cursor to next node skipping all subtrees
    • XMLReader::open - Set the URI containing the XML to parse
    • XMLReader::read - Move to next node in document
    • XMLReader::readInnerXML - Retrieve XML from current node
    • XMLReader::readOuterXML - Retrieve XML from current node, including itself
    • XMLReader::readString - Reads the contents of the current node as a string
    • XMLReader::setParserProperty - Set parser options
    • XMLReader::setRelaxNGSchema - Set the filename or URI for a RelaxNG Schema
    • XMLReader::setRelaxNGSchemaSource - Set the data containing a RelaxNG Schema
    • XMLReader::setSchema - Validate document against XSD
    • XMLReader::XML - Set the data containing the XML to parse
    • xmlrpc_decode - 将 XML 译码为 PHP 本身的类型
    • xmlrpc_decode_request - 将 XML 译码为 PHP 本身的类型
    • xmlrpc_encode - 为 PHP 的值生成 XML
    • xmlrpc_encode_request - 为 PHP 的值生成 XML
    • xmlrpc_get_type - 为 PHP 的值获取 xmlrpc 的类型
    • xmlrpc_is_fault - Determines if an array value represents an XMLRPC fault
    • xmlrpc_parse_method_descriptions - 将 XML 译码成方法描述的列表
    • xmlrpc_server_add_introspection_data - 添加自我描述的文档
    • xmlrpc_server_call_method - 解析 XML 请求同时调用方法
    • xmlrpc_server_create - 创建一个 xmlrpc 服务端
    • xmlrpc_server_destroy - 销毁服务端资源
    • xmlrpc_server_register_introspection_callback - 注册一个 PHP 函数用于生成文档
    • xmlrpc_server_register_method - 注册一个 PHP 函数用于匹配 xmlrpc 方法名
    • xmlrpc_set_type - 为一个 PHP 字符串值设置 xmlrpc 的类型、base64 或日期时间
    • XMLWriter::endAttribute - End attribute
    • XMLWriter::endCData - End current CDATA
    • XMLWriter::endComment - Create end comment
    • XMLWriter::endDocument - End current document
    • XMLWriter::endDTD - End current DTD
    • XMLWriter::endDTDAttlist - End current DTD AttList
    • XMLWriter::endDTDElement - End current DTD element
    • XMLWriter::endDTDEntity - End current DTD Entity
    • XMLWriter::endElement - End current element
    • XMLWriter::endPI - End current PI
    • XMLWriter::flush - Flush current buffer
    • XMLWriter::fullEndElement - End current element
    • XMLWriter::openMemory - Create new xmlwriter using memory for string output
    • XMLWriter::openURI - Create new xmlwriter using source uri for output
    • XMLWriter::outputMemory - Returns current buffer
    • XMLWriter::setIndent - Toggle indentation on/off
    • XMLWriter::setIndentString - Set string used for indenting
    • XMLWriter::startAttribute - Create start attribute
    • XMLWriter::startAttributeNS - Create start namespaced attribute
    • XMLWriter::startCData - Create start CDATA tag
    • XMLWriter::startComment - Create start comment
    • XMLWriter::startDocument - Create document tag
    • XMLWriter::startDTD - Create start DTD tag
    • XMLWriter::startDTDAttlist - Create start DTD AttList
    • XMLWriter::startDTDElement - Create start DTD element
    • XMLWriter::startDTDEntity - Create start DTD Entity
    • XMLWriter::startElement - Create start element tag
    • XMLWriter::startElementNS - Create start namespaced element tag
    • XMLWriter::startPI - Create start PI tag
    • XMLWriter::text - Write text
    • XMLWriter::writeAttribute - Write full attribute
    • XMLWriter::writeAttributeNS - Write full namespaced attribute
    • XMLWriter::writeCData - Write full CDATA tag
    • XMLWriter::writeComment - Write full comment tag
    • XMLWriter::writeDTD - Write full DTD tag
    • XMLWriter::writeDTDAttlist - Write full DTD AttList tag
    • XMLWriter::writeDTDElement - Write full DTD element tag
    • XMLWriter::writeDTDEntity - Write full DTD Entity tag
    • XMLWriter::writeElement - Write full element tag
    • XMLWriter::writeElementNS - Write full namespaced element tag
    • XMLWriter::writePI - Writes a PI
    • XMLWriter::writeRaw - Write a raw XML text
    • xml_error_string - 获取 XML 解析器的错误字符串
    • xml_get_current_byte_index - 获取 XML 解析器的当前字节索引
    • xml_get_current_column_number - 获取 XML 解析器的当前列号
    • xml_get_current_line_number - 获取 XML 解析器的当前行号
    • xml_get_error_code - 获取 XML 解析器错误代码
    • xml_parse - 开始解析一个 XML 文档
    • xml_parser_create - 建立一个 XML 解析器
    • xml_parser_create_ns - 生成一个支持命名空间的 XML 解析器
    • xml_parser_free - 释放指定的 XML 解析器
    • xml_parser_get_option - 从 XML 解析器获取选项设置信息
    • xml_parser_set_option - 为指定 XML 解析进行选项设置
    • xml_parse_into_struct - 将 XML 数据解析到数组中
    • xml_set_character_data_handler - 建立字符数据处理器
    • xml_set_default_handler - 建立默认处理器
    • xml_set_element_handler - 建立起始和终止元素处理器
    • xml_set_end_namespace_decl_handler - 建立终止命名空间声明处理器
    • xml_set_external_entity_ref_handler - 建立外部实体指向处理器
    • xml_set_notation_decl_handler - 建立注释声明处理器
    • xml_set_object - 在对象中使用 XML 解析器
    • xml_set_processing_instruction_handler - 建立处理指令（PI）处理器
    • xml_set_start_namespace_decl_handler - 建立起始命名空间声明处理器
    • xml_set_unparsed_entity_decl_handler - 建立未解析实体定义声明处理器
    • XSLTProcessor::getParameter - Get value of a parameter
    • XsltProcessor::getSecurityPrefs - Get security preferences
    • XSLTProcessor::hasExsltSupport - Determine if PHP has EXSLT support
    • XSLTProcessor::importStylesheet - Import stylesheet
    • XSLTProcessor::registerPHPFunctions - Enables the ability to use PHP functions as XSLT functions
    • XSLTProcessor::removeParameter - Remove parameter
    • XSLTProcessor::setParameter - Set value for a parameter
    • XSLTProcessor::setProfiling - Sets profiling output file
    • XsltProcessor::setSecurityPrefs - Set security preferences
    • XSLTProcessor::transformToDoc - Transform to a DOMDocument
    • XSLTProcessor::transformToUri - Transform to URI
    • XSLTProcessor::transformToXML - Transform to XML
    • XSLTProcessor::__construct - Creates a new XSLTProcessor object
  • y
    • Yaf_Action_Abstract::execute - 执行动作
    • Yaf_Action_Abstract::getController - 得到控制器实例
    • Yaf_Application::app - 获取当前的Yaf_Application实例
    • Yaf_Application::bootstrap - 调用bootstrap
    • Yaf_Application::clearLastError - 清除最后的错误信息
    • Yaf_Application::environ - 获取当前Yaf_Application的环境名
    • Yaf_Application::execute - 运行回调函数
    • Yaf_Application::getAppDirectory - 获取应用的目录
    • Yaf_Application::getConfig - 获取 Yaf_Config_Abstract 的实例
    • Yaf_Application::getDispatcher - 获取 Yaf_Dispatcher 的实例
    • Yaf_Application::getLastErrorMsg - 获取最近产生的错误的错误信息
    • Yaf_Application::getLastErrorNo - 获取最后产生的错误的错误代码
    • Yaf_Application::getModules - 获取在配置文件中申明的模块
    • Yaf_Application::run - 运行 Yaf_Application
    • Yaf_Application::setAppDirectory - 改变应用目录
    • Yaf_Application::__clone - Yaf_Application不能被克隆
    • Yaf_Application::__construct - Yaf_Application的构造函数
    • Yaf_Application::__destruct - 析构函数
    • Yaf_Application::__sleep - Yaf_Application 不能被序列化
    • Yaf_Application::__wakeup - Yaf_Application 不能被反序列化
    • Yaf_Config_Abstract::get - Getter
    • Yaf_Config_Abstract::readonly - 寻找只读配置
    • Yaf_Config_Abstract::set - Setter
    • Yaf_Config_Abstract::toArray - 转换为数组
    • Yaf_Config_Ini::count - 返回配置的节数量
    • Yaf_Config_Ini::current - 返回当前节点
    • Yaf_Config_Ini::key - 返回当前元素的键
    • Yaf_Config_Ini::next - 向前移动到下一个元素
    • Yaf_Config_Ini::offsetExists - 检查一个偏移位置是否存在
    • Yaf_Config_Ini::offsetGet - 获取一个偏移位置的值
    • Yaf_Config_Ini::offsetSet - 设置一个偏移位置的值
    • Yaf_Config_Ini::offsetUnset - 复位一个偏移位置的值
    • Yaf_Config_Ini::readonly - 检查配置是否只读
    • Yaf_Config_Ini::rewind - 检查当前位置是否有效
    • Yaf_Config_Ini::toArray - 转换为数组的格式
    • Yaf_Config_Ini::valid - 检查迭代器是否有效
    • Yaf_Config_Ini::__construct - 构造函数
    • Yaf_Config_Ini::__get - 读取节点配置
    • Yaf_Config_Ini::__isset - 检查节点是否存在
    • Yaf_Config_Ini::__set - The __set purpose
    • Yaf_Config_Simple::count - 返回配置的节数量
    • Yaf_Config_Simple::current - 返回当前节点
    • Yaf_Config_Simple::key - 返回当前元素的键
    • Yaf_Config_Simple::next - 向前移动到下一个元素
    • Yaf_Config_Simple::offsetExists - 检查一个偏移位置是否存在
    • Yaf_Config_Simple::offsetGet - 获取一个偏移位置的值
    • Yaf_Config_Simple::offsetSet - 设置一个偏移位置的值
    • Yaf_Config_Simple::offsetUnset - 复位一个偏移位置的值
    • Yaf_Config_Simple::readonly - 检查配置是否只读
    • Yaf_Config_Simple::rewind - 检查当前位置是否有效
    • Yaf_Config_Simple::toArray - 转换为数组的格式
    • Yaf_Config_Simple::valid - 检查迭代器是否有效
    • Yaf_Config_Simple::__construct - 构造函数
    • Yaf_Config_Simple::__get - 读取节点配置
    • Yaf_Config_Simple::__isset - 检查节点是否存在
    • Yaf_Config_Simple::__set - 设置节点配置
    • Yaf_Controller_Abstract::display - The display purpose
    • Yaf_Controller_Abstract::forward - The forward purpose
    • Yaf_Controller_Abstract::getInvokeArg - The getInvokeArg purpose
    • Yaf_Controller_Abstract::getInvokeArgs - The getInvokeArgs purpose
    • Yaf_Controller_Abstract::getModuleName - 获取当前控制器所属的模块名
    • Yaf_Controller_Abstract::getRequest - The getRequest purpose
    • Yaf_Controller_Abstract::getResponse - The getResponse purpose
    • Yaf_Controller_Abstract::getView - 获取当前的视图引擎
    • Yaf_Controller_Abstract::getViewpath - The getViewpath purpose
    • Yaf_Controller_Abstract::init - 控制器初始化
    • Yaf_Controller_Abstract::initView - The initView purpose
    • Yaf_Controller_Abstract::redirect - The redirect purpose
    • Yaf_Controller_Abstract::render - 渲染视图模板
    • Yaf_Controller_Abstract::setViewpath - The setViewpath purpose
    • Yaf_Controller_Abstract::__clone - Yaf_Controller_Abstract 不能被克隆
    • Yaf_Controller_Abstract::__construct - Yaf_Controller_Abstract constructor
    • Yaf_Dispatcher::autoRender - 开启/关闭自动渲染功能
    • Yaf_Dispatcher::catchException - 开启/关闭自动异常捕获功能
    • Yaf_Dispatcher::disableView - 关闭自动渲染
    • Yaf_Dispatcher::dispatch - 分发请求
    • Yaf_Dispatcher::enableView - 开启自动渲染
    • Yaf_Dispatcher::flushInstantly - 打开关闭自动响应
    • Yaf_Dispatcher::getApplication - 获取当前的Yaf_Application实例
    • Yaf_Dispatcher::getInstance - 获取当前的Yaf_Dispatcher实例
    • Yaf_Dispatcher::getRequest - 获取当前的请求实例
    • Yaf_Dispatcher::getRouter - 获取路由器
    • Yaf_Dispatcher::initView - 初始化视图引擎并返回它
    • Yaf_Dispatcher::registerPlugin - 注册一个插件
    • Yaf_Dispatcher::returnResponse - The returnResponse purpose
    • Yaf_Dispatcher::setDefaultAction - 设置路由的默认动作
    • Yaf_Dispatcher::setDefaultController - 设置路由的默认控制器
    • Yaf_Dispatcher::setDefaultModule - 设置路由的默认模块
    • Yaf_Dispatcher::setErrorHandler - 设置错误处理函数
    • Yaf_Dispatcher::setRequest - The setRequest purpose
    • Yaf_Dispatcher::setView - 设置视图引擎
    • Yaf_Dispatcher::throwException - 开启/关闭异常抛出
    • Yaf_Dispatcher::__clone - Yaf_Dispatcher 不能被克隆
    • Yaf_Dispatcher::__construct - Yaf_Dispatcher 构造函数
    • Yaf_Dispatcher::__sleep - Yaf_Dispatcher 不能被序列化
    • Yaf_Dispatcher::__wakeup - Yaf_Dispatcher 不能被反序列化
    • Yaf_Exception::getPrevious - The getPrevious purpose
    • Yaf_Exception::__construct - The __construct purpose
    • Yaf_Loader::autoload - The autoload purpose
    • Yaf_Loader::clearLocalNamespace - The clearLocalNamespace purpose
    • Yaf_Loader::getInstance - The getInstance purpose
    • Yaf_Loader::getLibraryPath - get the library path
    • Yaf_Loader::getLocalNamespace - The getLocalNamespace purpose
    • Yaf_Loader::import - The import purpose
    • Yaf_Loader::isLocalName - The isLocalName purpose
    • Yaf_Loader::registerLocalNamespace - 注册本地类前缀
    • Yaf_Loader::setLibraryPath - 改变library路径
    • Yaf_Loader::__clone - The __clone purpose
    • Yaf_Loader::__construct - The __construct purpose
    • Yaf_Loader::__sleep - The __sleep purpose
    • Yaf_Loader::__wakeup - The __wakeup purpose
    • Yaf_Plugin_Abstract::dispatchLoopShutdown - The dispatchLoopShutdown purpose
    • Yaf_Plugin_Abstract::dispatchLoopStartup - The dispatchLoopStartup purpose
    • Yaf_Plugin_Abstract::postDispatch - The postDispatch purpose
    • Yaf_Plugin_Abstract::preDispatch - The preDispatch purpose
    • Yaf_Plugin_Abstract::preResponse - The preResponse purpose
    • Yaf_Plugin_Abstract::routerShutdown - The routerShutdown purpose
    • Yaf_Plugin_Abstract::routerStartup - RouterStartup hook
    • Yaf_Registry::del - Remove an item from registry
    • Yaf_Registry::get - Retrieve an item from registry
    • Yaf_Registry::has - Check whether an item exists
    • Yaf_Registry::set - Add an item into registry
    • Yaf_Registry::__clone - The __clone purpose
    • Yaf_Registry::__construct - Yaf_Registry implements singleton
    • Yaf_Request_Abstract::getActionName - The getActionName purpose
    • Yaf_Request_Abstract::getBaseUri - The getBaseUri purpose
    • Yaf_Request_Abstract::getControllerName - The getControllerName purpose
    • Yaf_Request_Abstract::getEnv - 取得ENV变量的值
    • Yaf_Request_Abstract::getException - The getException purpose
    • Yaf_Request_Abstract::getLanguage - The getLanguage purpose
    • Yaf_Request_Abstract::getMethod - The getMethod purpose
    • Yaf_Request_Abstract::getModuleName - The getModuleName purpose
    • Yaf_Request_Abstract::getParam - The getParam purpose
    • Yaf_Request_Abstract::getParams - The getParams purpose
    • Yaf_Request_Abstract::getRequestUri - The getRequestUri purpose
    • Yaf_Request_Abstract::getServer - 返回SERVER变量的值
    • Yaf_Request_Abstract::isCli - The isCli purpose
    • Yaf_Request_Abstract::isDispatched - The isDispatched purpose
    • Yaf_Request_Abstract::isGet - The isGet purpose
    • Yaf_Request_Abstract::isHead - The isHead purpose
    • Yaf_Request_Abstract::isOptions - The isOptions purpose
    • Yaf_Request_Abstract::isPost - The isPost purpose
    • Yaf_Request_Abstract::isPut - The isPut purpose
    • Yaf_Request_Abstract::isRouted - The isRouted purpose
    • Yaf_Request_Abstract::isXmlHttpRequest - The isXmlHttpRequest purpose
    • Yaf_Request_Abstract::setActionName - The setActionName purpose
    • Yaf_Request_Abstract::setBaseUri - The setBaseUri purpose
    • Yaf_Request_Abstract::setControllerName - The setControllerName purpose
    • Yaf_Request_Abstract::setDispatched - The setDispatched purpose
    • Yaf_Request_Abstract::setModuleName - The setModuleName purpose
    • Yaf_Request_Abstract::setParam - The setParam purpose
    • Yaf_Request_Abstract::setRequestUri - The setRequestUri purpose
    • Yaf_Request_Abstract::setRouted - The setRouted purpose
    • Yaf_Request_Http::get - 从客户端返回变量
    • Yaf_Request_Http::getCookie - 返回Cookie变量
    • Yaf_Request_Http::getFiles - The getFiles purpose
    • Yaf_Request_Http::getPost - 返回POST变量
    • Yaf_Request_Http::getQuery - fetch a query parameter
    • Yaf_Request_Http::getRequest - The getRequest purpose
    • Yaf_Request_Http::isXmlHttpRequest - 是否为Ajax请求
    • Yaf_Request_Http::__clone - The __clone purpose
    • Yaf_Request_Http::__construct - The __construct purpose
    • Yaf_Request_Simple::get - The get purpose
    • Yaf_Request_Simple::getCookie - The getCookie purpose
    • Yaf_Request_Simple::getFiles - The getFiles purpose
    • Yaf_Request_Simple::getPost - The getPost purpose
    • Yaf_Request_Simple::getQuery - The getQuery purpose
    • Yaf_Request_Simple::getRequest - The getRequest purpose
    • Yaf_Request_Simple::isXmlHttpRequest - The isXmlHttpRequest purpose
    • Yaf_Request_Simple::__clone - The __clone purpose
    • Yaf_Request_Simple::__construct - The __construct purpose
    • Yaf_Response_Abstract::appendBody - 往已有的响应body后附加新的内容
    • Yaf_Response_Abstract::clearBody - 清除已经设置的响应body
    • Yaf_Response_Abstract::clearHeaders - The clearHeaders purpose
    • Yaf_Response_Abstract::getBody - 获取已经设置的响应body
    • Yaf_Response_Abstract::getHeader - The getHeader purpose
    • Yaf_Response_Abstract::prependBody - The prependBody purpose
    • Yaf_Response_Abstract::response - send response
    • Yaf_Response_Abstract::setAllHeaders - The setAllHeaders purpose
    • Yaf_Response_Abstract::setBody - 设置响应的Body
    • Yaf_Response_Abstract::setHeader - The setHeader purpose
    • Yaf_Response_Abstract::setRedirect - The setRedirect purpose
    • Yaf_Response_Abstract::__clone - The __clone purpose
    • Yaf_Response_Abstract::__construct - The __construct purpose
    • Yaf_Response_Abstract::__destruct - The __destruct purpose
    • Yaf_Response_Abstract::__toString - The __toString purpose
    • Yaf_Router::addConfig - 向Router中添加配置文件中定义的路由
    • Yaf_Router::addRoute - 往Router中添加新的路由
    • Yaf_Router::getCurrentRoute - 取得当前有效的路由名
    • Yaf_Router::getRoute - The getRoute purpose
    • Yaf_Router::getRoutes - The getRoutes purpose
    • Yaf_Router::route - The route purpose
    • Yaf_Router::__construct - Yaf_Router constructor
    • Yaf_Route_Interface::assemble - 将指定路由规则组合成一个url
    • Yaf_Route_Interface::route - route a request
    • Yaf_Route_Map::assemble - 组合url
    • Yaf_Route_Map::route - The route purpose
    • Yaf_Route_Map::__construct - The __construct purpose
    • Yaf_Route_Regex::assemble - 组合url
    • Yaf_Route_Regex::route - The route purpose
    • Yaf_Route_Regex::__construct - The __construct purpose
    • Yaf_Route_Rewrite::assemble - 组合url
    • Yaf_Route_Rewrite::route - The route purpose
    • Yaf_Route_Rewrite::__construct - The __construct purpose
    • Yaf_Route_Simple::assemble - 组合url
    • Yaf_Route_Simple::route - Route a request
    • Yaf_Route_Simple::__construct - Yaf_Route_Simple constructor
    • Yaf_Route_Static::assemble - 组合url
    • Yaf_Route_Static::match - The match purpose
    • Yaf_Route_Static::route - Route a request
    • Yaf_Route_Supervar::assemble - 组合url
    • Yaf_Route_Supervar::route - The route purpose
    • Yaf_Route_Supervar::__construct - The __construct purpose
    • Yaf_Session::count - The count purpose
    • Yaf_Session::current - The current purpose
    • Yaf_Session::del - The del purpose
    • Yaf_Session::getInstance - The getInstance purpose
    • Yaf_Session::has - The has purpose
    • Yaf_Session::key - The key purpose
    • Yaf_Session::next - The next purpose
    • Yaf_Session::offsetExists - The offsetExists purpose
    • Yaf_Session::offsetGet - The offsetGet purpose
    • Yaf_Session::offsetSet - The offsetSet purpose
    • Yaf_Session::offsetUnset - The offsetUnset purpose
    • Yaf_Session::rewind - The rewind purpose
    • Yaf_Session::start - The start purpose
    • Yaf_Session::valid - The valid purpose
    • Yaf_Session::__clone - The __clone purpose
    • Yaf_Session::__construct - The __construct purpose
    • Yaf_Session::__get - The __get purpose
    • Yaf_Session::__isset - The __isset purpose
    • Yaf_Session::__set - The __set purpose
    • Yaf_Session::__sleep - The __sleep purpose
    • Yaf_Session::__unset - The __unset purpose
    • Yaf_Session::__wakeup - The __wakeup purpose
    • Yaf_View_Interface::assign - 为视图引擎分配一个模板变量
    • Yaf_View_Interface::display - 渲染一个视图模板, 并直接输出给请求端
    • Yaf_View_Interface::getScriptPath - The getScriptPath purpose
    • Yaf_View_Interface::render - 渲染一个视图模板
    • Yaf_View_Interface::setScriptPath - The setScriptPath purpose
    • Yaf_View_Simple::assign - 为视图引擎分配一个模板变量
    • Yaf_View_Simple::assignRef - The assignRef purpose
    • Yaf_View_Simple::clear - Clear Assigned values
    • Yaf_View_Simple::display - 渲染一个视图模板, 并直接输出给请求端
    • Yaf_View_Simple::eval - 渲染模板
    • Yaf_View_Simple::getScriptPath - 获取模板目录
    • Yaf_View_Simple::render - 渲染模板
    • Yaf_View_Simple::setScriptPath - 设置模板的目录
    • Yaf_View_Simple::__construct - Constructor of Yaf_View_Simple
    • Yaf_View_Simple::__get - 获取视图引擎的一个模板变量值
    • Yaf_View_Simple::__isset - The __isset purpose
    • Yaf_View_Simple::__set - 为视图引擎分配一个模板变量
    • yaml_emit - Returns the YAML representation of a value
    • yaml_emit_file - Send the YAML representation of a value to a file
    • yaml_parse - Parse a YAML stream
    • yaml_parse_file - Parse a YAML stream from a file
    • yaml_parse_url - Parse a Yaml stream from a URL
    • Yar_Client::setOpt - 设置调用的配置
    • Yar_Client::__call - 调用远程服务
    • Yar_Client::__construct - 创建一个客户端实例
    • Yar_Client_Exception::getType - The getType purpose
    • Yar_Concurrent_Client::call - 注册一个并行的服务调用
    • Yar_Concurrent_Client::loop - 发送所有注册的并行调用
    • Yar_Server::handle - 启动HTTP RPC Server
    • Yar_Server::__construct - 创建一个HTTP RPC Server
    • Yar_Server_Exception::getType - 获取异常的原始类型
    • yaz_addinfo - Returns additional error information
    • yaz_ccl_conf - Configure CCL parser
    • yaz_ccl_parse - Invoke CCL Parser
    • yaz_close - Close YAZ connection
    • yaz_connect - Prepares for a connection to a Z39.50 server
    • yaz_database - Specifies the databases within a session
    • yaz_element - Specifies Element-Set Name for retrieval
    • yaz_errno - Returns error number
    • yaz_error - Returns error description
    • yaz_es - Prepares for an Extended Service Request
    • yaz_es_result - Inspects Extended Services Result
    • yaz_get_option - Returns value of option for connection
    • yaz_hits - Returns number of hits for last search
    • yaz_itemorder - Prepares for Z39.50 Item Order with an ILL-Request package
    • yaz_present - Prepares for retrieval (Z39.50 present)
    • yaz_range - Specifies a range of records to retrieve
    • yaz_record - Returns a record
    • yaz_scan - Prepares for a scan
    • yaz_scan_result - Returns Scan Response result
    • yaz_schema - Specifies schema for retrieval
    • yaz_search - Prepares for a search
    • yaz_set_option - Sets one or more options for connection
    • yaz_sort - Sets sorting criteria
    • yaz_syntax - Specifies the preferred record syntax for retrieval
    • yaz_wait - Wait for Z39.50 requests to complete
    • yp_all - Traverse the map and call a function on each entry
    • yp_cat - Return an array containing the entire map
    • yp_errno - Returns the error code of the previous operation
    • yp_err_string - Returns the error string associated with the given error code
    • yp_first - Returns the first key-value pair from the named map
    • yp_get_default_domain - Fetches the machine's default NIS domain
    • yp_master - Returns the machine name of the master NIS server for a map
    • yp_match - Returns the matched line
    • yp_next - Returns the next key-value pair in the named map
    • yp_order - Returns the order number for a map
  • z
    • zend_logo_guid - 获取 Zend guid
    • zend_thread_id - 返回当前线程的唯一识别符
    • zend_version - 获取当前 Zend 引擎的版本
    • ZipArchive::addEmptyDir - Add a new directory
    • ZipArchive::addFile - Adds a file to a ZIP archive from the given path
    • ZipArchive::addFromString - Add a file to a ZIP archive using its contents
    • ZipArchive::addGlob - Add files from a directory by glob pattern
    • ZipArchive::addPattern - Add files from a directory by PCRE pattern
    • ZipArchive::close - Close the active archive (opened or newly created)
    • ZipArchive::deleteIndex - delete an entry in the archive using its index
    • ZipArchive::deleteName - delete an entry in the archive using its name
    • ZipArchive::extractTo - Extract the archive contents
    • ZipArchive::getArchiveComment - Returns the Zip archive comment
    • ZipArchive::getCommentIndex - Returns the comment of an entry using the entry index
    • ZipArchive::getCommentName - Returns the comment of an entry using the entry name
    • ZipArchive::getExternalAttributesIndex - Retrieve the external attributes of an entry defined by its index
    • ZipArchive::getExternalAttributesName - Retrieve the external attributes of an entry defined by its name
    • ZipArchive::getFromIndex - Returns the entry contents using its index
    • ZipArchive::getFromName - Returns the entry contents using its name
    • ZipArchive::getNameIndex - Returns the name of an entry using its index
    • ZipArchive::getStatusString - Returns the status error message, system and/or zip messages
    • ZipArchive::getStream - Get a file handler to the entry defined by its name (read only).
    • ZipArchive::locateName - Returns the index of the entry in the archive
    • ZipArchive::open - Open a ZIP file archive
    • ZipArchive::renameIndex - Renames an entry defined by its index
    • ZipArchive::renameName - Renames an entry defined by its name
    • ZipArchive::setArchiveComment - Set the comment of a ZIP archive
    • ZipArchive::setCommentIndex - Set the comment of an entry defined by its index
    • ZipArchive::setCommentName - Set the comment of an entry defined by its name
    • ZipArchive::setCompressionIndex - Set the compression method of an entry defined by its index
    • ZipArchive::setCompressionName - Set the compression method of an entry defined by its name
    • ZipArchive::setExternalAttributesIndex - Set the external attributes of an entry defined by its index
    • ZipArchive::setExternalAttributesName - Set the external attributes of an entry defined by its name
    • ZipArchive::setPassword - Set the password for the active archive
    • ZipArchive::statIndex - Get the details of an entry defined by its index.
    • ZipArchive::statName - Get the details of an entry defined by its name.
    • ZipArchive::unchangeAll - Undo all changes done in the archive
    • ZipArchive::unchangeArchive - Revert all global changes done in the archive.
    • ZipArchive::unchangeIndex - Revert all changes done to an entry at the given index
    • ZipArchive::unchangeName - Revert all changes done to an entry with the given name.
    • zip_close - 关闭一个ZIP档案文件
    • zip_entry_close - 关闭目录项
    • zip_entry_compressedsize - 检索目录项压缩过后的大小
    • zip_entry_compressionmethod - 检索目录实体的压缩方法
    • zip_entry_filesize - 检索目录实体的实际大小
    • zip_entry_name - 检索目录项的名称
    • zip_entry_open - 打开用于读取的目录实体
    • zip_entry_read - 读取一个打开了的压缩目录实体
    • zip_open - 打开ZIP存档文件
    • zip_read - 读取ZIP存档文件中下一项
    • zlib:// - 压缩流
    • zlib_decode - Uncompress any raw/gzip/zlib encoded data
    • zlib_encode - Compress data with the specified encoding
    • zlib_get_coding_type - Returns the coding type used for output compression
    • ZMQ::__construct - ZMQ constructor
    • ZMQContext::getOpt - Get context option
    • ZMQContext::getSocket - Create a new socket
    • ZMQContext::isPersistent - Whether the context is persistent
    • ZMQContext::setOpt - Set a socket option
    • ZMQContext::__construct - Construct a new ZMQContext object
    • ZMQDevice::getIdleTimeout - Get the idle timeout
    • ZMQDevice::getTimerTimeout - Get the timer timeout
    • ZMQDevice::run - Run the new device
    • ZMQDevice::setIdleCallback - Set the idle callback function
    • ZMQDevice::setIdleTimeout - Set the idle timeout
    • ZMQDevice::setTimerCallback - Set the timer callback function
    • ZMQDevice::setTimerTimeout - Set the timer timeout
    • ZMQDevice::__construct - Construct a new device
    • ZMQPoll::add - Add item to the poll set
    • ZMQPoll::clear - Clear the poll set
    • ZMQPoll::count - Count items in the poll set
    • ZMQPoll::getLastErrors - Get poll errors
    • ZMQPoll::poll - Poll the items
    • ZMQPoll::remove - Remove item from poll set
    • ZMQSocket::bind - Bind the socket
    • ZMQSocket::connect - Connect the socket
    • ZMQSocket::disconnect - Disconnect a socket
    • ZMQSocket::getEndpoints - Get list of endpoints
    • ZMQSocket::getPersistentId - Get the persistent id
    • ZMQSocket::getSocketType - Get the socket type
    • ZMQSocket::getSockOpt - Get socket option
    • ZMQSocket::isPersistent - Whether the socket is persistent
    • ZMQSocket::recv - Receives a message
    • ZMQSocket::recvMulti - Receives a multipart message
    • ZMQSocket::send - Sends a message
    • ZMQSocket::sendmulti - Sends a multipart message
    • ZMQSocket::setSockOpt - Set a socket option
    • ZMQSocket::unbind - Unbind the socket
    • ZMQSocket::__construct - Construct a new ZMQSocket
    • Zookeeper::addAuth - Specify application credentials.
    • Zookeeper::connect - Create a handle to used communicate with zookeeper.
    • Zookeeper::create - Create a node synchronously.
    • Zookeeper::delete - Delete a node in zookeeper synchronously.
    • Zookeeper::exists - Checks the existence of a node in zookeeper synchronously.
    • Zookeeper::get - Gets the data associated with a node synchronously.
    • Zookeeper::getAcl - Gets the acl associated with a node synchronously.
    • Zookeeper::getClientId - return the client session id, only valid if the connections is currently connected (ie. last watcher state is ZOO_CONNECTED_STATE)
    • Zookeeper::getRecvTimeout - Return the timeout for this session, only valid if the connections is currently connected (ie. last watcher state is ZOO_CONNECTED_STATE). This value may change after a server re-connect.
    • Zookeeper::getState - Get the state of the zookeeper connection.
    • Zookeeper::isRecoverable - Checks if the current zookeeper connection state can be recovered.
    • Zookeeper::set - Sets the data associated with a node.
    • Zookeeper::setAcl - Sets the acl associated with a node synchronously.
    • Zookeeper::setDebugLevel - Sets the debugging level for the library.
    • Zookeeper::setDeterministicConnOrder - Enable/disable quorum endpoint order randomization.
    • Zookeeper::setLogStream - Sets the stream to be used by the library for logging.
    • Zookeeper::setWatcher - Set a watcher function.
    • Zookeeper::__construct - Create a handle to used communicate with zookeeper.
  • _
    • __autoload - 尝试加载未定义的类
    • __halt_compiler - 中断编译器的执行
  • ?
    • 套接字上下文选项 - 套接字上下文选项列表
索引
示例列表
索引


示例列表

手册中所有示例的列表

  • Example#0 - 一个介绍性的范例
  • Example#1 - 第一个 PHP 脚本：hello.php
  • Example#2 - 从 PHP 获取系统信息
  • Example#3 - 打印一个变量（数组元素）
  • Example#4 - 流程控制与函数的使用
  • Example#5 - 混和 HTML 和 PHP 模式
  • Example#6 - 一个简单的 HTML 表单
  • Example#7 - 打印来自表单的数据
  • Example#8 - PHP 的 Apache 共享模块版本安装说明
  • Example#9 - PHP 的 Apache 静态模块版本安装说明
  • Example#10 - 重启动 Apache 的示例命令
  • Example#11 -
  • Example#12 -
  • Example#13 -
  • Example#14 -
  • Example#15 -
  • Example#16 -
  • Example#17 -
  • Example#18 -
  • Example#19 -
  • Example#20 -
  • Example#21 -
  • Example#22 -
  • Example#23 -
  • Example#24 -
  • Example#25 -
  • Example#26 -
  • Example#27 -
  • Example#28 -
  • Example#29 -
  • Example#30 -
  • Example#31 -
  • Example#32 -
  • Example#33 -
  • Example#34 -
  • Example#35 -
  • Example#36 -
  • Example#37 -
  • Example#38 -
  • Example#39 - Partial lighttpd.conf
  • Example#40 - 产生 FastCGI 应答器
  • Example#41 - 连接远程 php-fastcgi 实例
  • Example#42 - 在 OpenBSD 系统下的软件包的安装示例
  • Example#43 - Debian 下将 PHP 安装入 Apache 2 的例子
  • Example#44 - 安装完 PHP 后停止并启动 Apache
  • Example#45 - 取得 PHP 附加软件包的列表
  • Example#46 - 安装 PHP 的 MySQL 和 cURL 支持
  • Example#47 - Recommended OpCache configuration
  • Example#48 - Recommended WinCache configuration
  • Example#49 - Command line to configure IIS and PHP
  • Example#50 - PHP 5 压缩包的结构
  • Example#51 - php.ini 中的 CGI 和 FastCGI 设定
  • Example#52 - 配置 FastCGI 扩展以处理 PHP 请求
  • Example#53 - 配置文件访问权限
  • Example#54 - 配置 FastCGI 和 PHP 的回收
  • Example#55 - 配置 FastCGI 超时设定
  • Example#56 - 改变 php.ini 文件的位置
  • Example#57 - php.ini 中的 CGI 和 FastCGI 设定
  • Example#58 - 创建 IIS FastCGI 处理池
  • Example#59 - 创建对应于 PHP 请求的处理程序映射
  • Example#60 - 确定用于 IIS 匿名认证的用户帐号
  • Example#61 - 配置文件访问权限
  • Example#62 - 将 index.php 设为 IIS 的默认文档
  • Example#63 - 配置 FastCGI 和 PHP 的回收
  • Example#64 - 配置 FastCGI 超时设定
  • Example#65 - 改变 php.ini 文件的位置
  • Example#66 - PHP 作为 Apache 1.3.x 的一个模块
  • Example#67 - PHP 以 CGI 方式运行在 Apache 1.3.x
  • Example#68 - PHP 在 Apache 2.x 中作为 handler
  • Example#69 -
  • Example#70 - Apache 2.x 下 CGI 方式的 PHP
  • Example#71 - 配置 Apache 以 FastCGI 方式运行 PHP
  • Example#72 - Sambar 的 ISAPI 设置
  • Example#73 - 启用 Bzip2扩展库
  • Example#74 - 注册表变化
  • Example#75 - 给运行池传递环境变量和设置 PHP 的配置值
  • Example#76 - 在 nginx.conf 中设定 PHP
  • Example#77 - phpinfo call
  • Example#78 - php.ini 例子
  • Example#79 - Apache 配置例子
  • Example#80 -
  • Example#81 - 使用条件的高级分离术
  • Example#82 - PHP 开始和结束标记
  • Example#83 - 整数文字表达
  • Example#84 - 八进制数的怪事
  • Example#85 - 32 位系统下的整数溢出
  • Example#86 - 64 位系统下的整数溢出
  • Example#87 - 非法的示例
  • Example#88 - Heredoc 结构的字符串示例
  • Example#89 - Heredoc 结构在参数中的示例
  • Example#90 - 使用 Heredoc 结构来初始化静态值
  • Example#91 - 在 heredoc 结构中使用双引号
  • Example#92 - Nowdoc 结构字符串示例
  • Example#93 - 静态数据的示例
  • Example#94 - 简单语法示例
  • Example#95 - 一些字符串示例
  • Example#96 - PHP 5.3 和 PHP 5.4 的区别
  • Example#97 - 一个简单数组
  • Example#98 - 类型强制与覆盖示例
  • Example#99 - 混合 integer 和 string 键名
  • Example#100 - 没有键名的索引数组
  • Example#101 - 仅对部分单元指定键名
  • Example#102 - 访问数组单元
  • Example#103 - 数组间接引用
  • Example#104 - 使用 array()
  • Example#105 - 集合
  • Example#106 - 在循环中改变单元
  • Example#107 - 下标从 1 开始的数组
  • Example#108 - 填充数组
  • Example#109 - 数组排序
  • Example#110 - 递归和多维数组
  • Example#111 - 回调函数示例
  • Example#112 - 使用 Closure 的示例
  • Example#113 - 未初始化变量的默认值
  • Example#114 - 使用 global
  • Example#115 - 使用 $GLOBALS 替代 global
  • Example#116 - 演示超全局变量和作用域的例子
  • Example#117 - 演示需要静态变量的例子
  • Example#118 - 使用静态变量的例子
  • Example#119 - 静态变量与递归函数
  • Example#120 - 声明静态变量
  • Example#121 - 可变属性示例
  • Example#122 - 一个简单的 HTML 表单
  • Example#123 - 从一个简单的 POST HTML 表单访问数据
  • Example#124 - 更复杂的表单变量
  • Example#125 - 一个 setcookie 的示例
  • Example#126 - 合法与非法的常量名
  • Example#127 - 定义常量
  • Example#128 - 使用关键字 const 定义常量
  • Example#129 - 结合方向
  • Example#130 - Undefined order of evaluation
  • Example#131 - 引用赋值
  • Example#132 - 整数的 AND，OR 和 XOR 位运算符
  • Example#133 - 字符串的 XOR 运算符
  • Example#134 - 整数的位移
  • Example#135 - 标准数组比较代码
  • Example#136 - Transcription of standard array comparison
  • Example#137 - 赋默认值
  • Example#138 - 不清晰的三元运算符行为
  • Example#139 - 涉及字符变量的算数运算
  • Example#140 - 逻辑运算符示例
  • Example#141 - 比较数组
  • Example#142 - 对类使用 instanceof
  • Example#143 - 对继承类使用 instanceof
  • Example#144 - 使用 instanceof 检查对象不是某个类的实例
  • Example#145 - 对接口使用 instanceof
  • Example#146 - 对其它变量使用 instanceof
  • Example#147 - 用 instanceof 检测其它变量
  • Example#148 - 避免 PHP 5.0 中 instanceof 引起的类名查找和致命错误问题
  • Example#149 - switch 结构
  • Example#150 - switch 结构可以用字符串
  • Example#151 - Tick 的用法示例
  • Example#152 - Ticks 的用法示例
  • Example#153 - 对脚本指定编码方式
  • Example#154 - 基本的 include 例子
  • Example#155 - 函数中的包含
  • Example#156 - 通过 HTTP 进行的 include
  • Example#157 - 比较 include 的返回值
  • Example#158 - include 和 return 语句
  • Example#159 - 使用输出缓冲来将 PHP 文件包含入一个字符串
  • Example#160 - include_once 在 PHP 4 运行于不区分大小写的操作系统中
  • Example#161 - goto 示例
  • Example#162 - goto 跳出循环示例
  • Example#163 - 以下写法无效
  • Example#164 - 展示函数用途的伪代码
  • Example#165 - 有条件的函数
  • Example#166 - 函数中的函数
  • Example#167 - 递归函数
  • Example#168 - 向函数传递数组
  • Example#169 - 用引用传递函数参数
  • Example#170 - 在函数中使用默认参数
  • Example#171 - 使用非标量类型作为默认参数
  • Example#172 - 函数默认参数的不正确用法
  • Example#173 - 函数默认参数正确的用法
  • Example#174 - Basic class type declaration
  • Example#175 - Basic interface type declaration
  • Example#176 - Nullable type declaration
  • Example#177 - Strict typing
  • Example#178 - Weak typing
  • Example#179 - Catching TypeError
  • Example#180 - Using ... to access variable arguments
  • Example#181 - Using ... to provide arguments
  • Example#182 - Type hinted variable arguments
  • Example#183 - Accessing variable arguments in PHP 5.5 and earlier
  • Example#184 - return 的使用
  • Example#185 - 返回一个数组以得到多个返回值
  • Example#186 - 从函数返回一个引用
  • Example#187 - Basic return type declaration
  • Example#188 - Strict mode in action
  • Example#189 - Returning an object
  • Example#190 - 可变函数示例
  • Example#191 - 可变方法范例
  • Example#192 - Variable 方法和静态属性示例
  • Example#193 - 匿名函数示例
  • Example#194 - 匿名函数变量赋值示例
  • Example#195 - 从父作用域继承变量
  • Example#196 - Closures 和作用域
  • Example#197 - 简单的类定义
  • Example#198 - $this 伪变量的示例
  • Example#199 - 创建一个实例
  • Example#200 - 对象赋值
  • Example#201 - 创建新对象
  • Example#202 - 简单的类继承
  • Example#203 - 类名的解析
  • Example#204 - 属性声明
  • Example#205 - 示例：使用 nowdoc 初始化属性
  • Example#206 - 定义和使用一个类常量
  • Example#207 - 静态数据示例
  • Example#208 - 自动加载示例
  • Example#209 - 另一个例子
  • Example#210 - 自动加载在 PHP 5.3.0+ 中的异常处理
  • Example#211 - 自动加载在 PHP 5.3.0+ 中的异常处理 - 没有自定义异常机制
  • Example#212 - 使用新标准的构造函数
  • Example#213 - Constructors in namespaced classes
  • Example#214 - 析构函数示例
  • Example#215 - 属性声明
  • Example#216 - 方法声明
  • Example#217 - 访问同一个对象类型的私有成员
  • Example#218 - 继承示例
  • Example#219 - 在类的外部使用 :: 操作符
  • Example#220 - 在类定义内部使用 ::
  • Example#221 - 调用父类的方法
  • Example#222 - 静态属性示例
  • Example#223 - 抽象类示例
  • Example#224 - 抽象类示例
  • Example#225 - 接口示例
  • Example#226 - 可扩充的接口
  • Example#227 - 继承多个接口
  • Example#228 - 使用接口常量
  • Example#229 - Trait 示例
  • Example#230 - 优先顺序示例
  • Example#231 - 另一个优先级顺序的例子
  • Example#232 - 多个 trait 的用法
  • Example#233 - 冲突的解决
  • Example#234 - 修改方法的访问控制
  • Example#235 - 从 trait 来组成 trait
  • Example#236 - 表示通过抽象方法来进行强制要求
  • Example#237 - 静态变量
  • Example#238 - 静态方法
  • Example#239 - 定义属性
  • Example#240 - 解决冲突
  • Example#241 - 使用 __get()，__set()，__isset() 和 __unset() 进行属性重载
  • Example#242 - 使用 __call() 和 __callStatic() 对方法重载
  • Example#243 - 简单的对象遍历
  • Example#244 - 实现 Iterator 接口的对象遍历
  • Example#245 - 通过实现 IteratorAggregate 来遍历对象
  • Example#246 - Sleep 和 wakeup
  • Example#247 - 简单示例
  • Example#248 - 使用 __invoke()
  • Example#249 - 使用 __set_state()>（PHP 5.1.0 起）
  • Example#250 - Using __debugInfo()
  • Example#251 - Final 方法示例
  • Example#252 - Final 类示例
  • Example#253 - 复制一个对象
  • Example#254 - PHP 5 的对象比较
  • Example#255 - 类型约束示例
  • Example#256 - self:: 用法
  • Example#257 - static:: 简单用法
  • Example#258 - 非静态环境下使用 static::
  • Example#259 - 转发和非转发调用
  • Example#260 - 引用和对象
  • Example#261 - 命名空间语法示例
  • Example#262 - 声明单个命名空间
  • Example#263 - 声明单个命名空间
  • Example#264 - 声明分层次的单个命名空间
  • Example#265 - 定义多个命名空间，简单组合语法
  • Example#266 - 定义多个命名空间，大括号语法
  • Example#267 - 定义多个命名空间和不包含在命名空间中的代码
  • Example#268 - 定义多个命名空间和不包含在命名空间中的代码
  • Example#269 - 在命名空间内部访问全局类、函数和常量
  • Example#270 - 动态访问元素
  • Example#271 - 动态访问命名空间的元素
  • Example#272 - __NAMESPACE__ 示例, 在命名空间中的代码
  • Example#273 - __NAMESPACE__ 示例，全局代码
  • Example#274 - 使用__NAMESPACE__动态创建名称
  • Example#275 - namespace操作符，命名空间中的代码
  • Example#276 - namespace操作符, 全局代码
  • Example#277 - 使用use操作符导入/使用别名
  • Example#278 - 通过use操作符导入/使用别名，一行中包含多个use语句
  • Example#279 - 导入和动态名称
  • Example#280 - 导入和完全限定名称
  • Example#281 - Illegal importing rule
  • Example#282 - 使用全局空间说明
  • Example#283 - 在命名空间中访问全局类
  • Example#284 - 命名空间中后备的全局函数/常量
  • Example#285 - 名称解析示例
  • Example#286 - Accessing global classes outside a namespace
  • Example#287 - Accessing global classes outside a namespace
  • Example#288 - Accessing internal classes in namespaces
  • Example#289 - Accessing internal classes, functions or constants in namespaces
  • Example#290 - Fully Qualified names
  • Example#291 - Qualified names
  • Example#292 - Unqualified class names
  • Example#293 - Unqualified function or constant names
  • Example#294 - Dangers of using namespaced names inside a double-quoted string
  • Example#295 - Undefined constants
  • Example#296 - Undefined constants
  • Example#297 - 内置的异常处理类
  • Example#298 - 扩展 PHP 内置的异常处理类 (PHP 5.3.0+)
  • Example#299 - Throwing an Exception
  • Example#300 - Exception handling with a finally block
  • Example#301 - Nested Exception
  • Example#302 - 将 range 实现为生成器
  • Example#303 - 一个简单的生成值的例子
  • Example#304 - 生成一个键值对
  • Example#305 - 生成NULLs
  • Example#306 - 使用引用来生成值
  • Example#307 - Basic use of yield from
  • Example#308 - yield from and return values
  • Example#309 - 对未定义的变量使用引用
  • Example#310 - 在函数内引用全局变量
  • Example#311 - 引用与 foreach 语句
  • Example#312 - $GLOBALS 范例
  • Example#313 - $_SERVER 范例
  • Example#314 - $_GET 范例
  • Example#315 - $_POST 范例
  • Example#316 - $_ENV 范例
  • Example#317 - $_COOKIE 范例
  • Example#318 - $php_errormsg 范例
  • Example#319 - $http_response_header 范例
  • Example#320 - $argc 范例
  • Example#321 - $argv 范例
  • Example#322 - Exception::getMessage示例
  • Example#323 - Exception::getPrevious示例
  • Example#324 - Exception::getCode示例
  • Example#325 - Exception::getFile示例
  • Example#326 - Exception::getLine示例
  • Example#327 - Exception::getTrace示例
  • Example#328 - Exception::getTraceAsString示例
  • Example#329 - Exception::__toString示例
  • Example#330 - 使用set_error_handler函数将错误信息托管至ErrorException
  • Example#331 - ErrorException::getSeverity 例子
  • Example#332 - 基本用法
  • Example#333 - 基本用法
  • Example#334 - Basic usage
  • Example#335 - ArrayAccess::offsetExists 范例
  • Example#336 - Basic usage
  • Example#337 - Closure::bind 实例
  • Example#338 - Closure::bindTo 实例
  • Example#339 - Generator::key example
  • Example#340 - 用 Generator::send 向生成器函数中传值
  • Example#341 - Basic bindto usage example
  • Example#342 - 获取一个页面并发送 POST 数据
  • Example#343 - 忽略重定向并获取 header 和内容
  • Example#344 - 获取一个页面，并以POST发送数据
  • Example#345 - 检测重定向后最终的 URL
  • Example#346 - php://temp/maxmemory
  • Example#347 - php://filter/resource=<待过滤的数据流>
  • Example#348 - php://filter/read=<读链需要应用的过滤器列表>
  • Example#349 - php://filter/write=<写链需要应用的过滤器列表>
  • Example#350 - 打印 data:// 的内容
  • Example#351 - 获取媒体类型
  • Example#352 - 基本用法
  • Example#353 - 从一个活动连接中打开字节流
  • Example#354 - This $session variable must be kept available!
  • Example#355 - Traversing a RAR archive
  • Example#356 - Opening an encrypted file (header encryption)
  • Example#357 - 不对变量进行安全检查会导致……
  • Example#358 - ……文件系统攻击
  • Example#359 - 更安全的文件名检查
  • Example#360 - 更安全的文件名检查
  • Example#361 - 会被 Null 字符问题攻击的代码
  • Example#362 - 验证输入的正确做法
  • Example#363 - 对密码字段进行散列加密
  • Example#364 - 一段实现数据分页显示的代码……也可以被用作创建一个超级用户（PostgreSQL系统）。
  • Example#365 - 显示文章……以及一些密码（任何数据库系统）
  • Example#366 - 从重设密码……到获得更多权限（任何数据库系统）
  • Example#367 - 攻击数据库所在主机的操作系统（MSSQL Server）
  • Example#368 - 一个实现分页更安全的方法
  • Example#369 - 用自定义的 HTML 页面攻击变量
  • Example#370 - 利用变量打开调式功能
  • Example#371 - 用 E_ALL 来查找危险的变量
  • Example#372 - 错误使用 register_globals = on 的例子
  • Example#373 - 使用会话时同时兼容 register_globals on 和 off 的例子
  • Example#374 - 探测有害变量
  • Example#375 - 危险的变量用法
  • Example#376 - 在服务器端关闭魔术引号
  • Example#377 - 在运行时关闭魔术引号
  • Example#378 - 把 PHP 隐藏为另一种语言
  • Example#379 - 使用未知的扩展名作为 PHP 的扩展名
  • Example#380 - 用 HTML 做 PHP 的文件后缀
  • Example#381 - Basic HTTP 认证范例
  • Example#382 - Digest HTTP 认证范例
  • Example#383 - 强迫重新输入用户名和密码的 HTTP 认证的范例
  • Example#384 - 一个简单的 XForms 搜索表单
  • Example#385 - 使用 XForm 来产生 $_POST
  • Example#386 - 文件上传表单
  • Example#387 - 使文件上传生效
  • Example#388 - 上传一组文件
  • Example#389 - 上传多个文件
  • Example#390 - 用 PHP 4 来保存 HTTP PUT 文件
  • Example#391 - 获取远程文件的标题
  • Example#392 - 将数据保存到远程服务器
  • Example#393 - 试图以命令行方式运行的 PHP 脚本（script.php）
  • Example#394 - 运行 PHP 命令行脚本的批处理文件（script.bat）
  • Example#395 - 启动Web服务器
  • Example#396 - 启动时指定根目录
  • Example#397 - 使用路由（Router）脚本
  • Example#398 - 生成一个新的zval容器
  • Example#399 - 显示zval信息
  • Example#400 - 增加一个zval的引用计数
  • Example#401 - 减少引用计数
  • Example#402 - Creating a array zval
  • Example#403 - 添加一个已经存在的元素到数组中
  • Example#404 - 从数组中删除一个元素
  • Example#405 - 把数组作为一个元素添加到自己
  • Example#406 - Unsetting $a
  • Example#407 - Memory usage example
  • Example#408 - GC性能影响
  • Example#409 - 执行以上脚本
  • Example#410 - 重新编译PHP以启用GC benchmarking
  • Example#411 - GC 统计数据
  • Example#412 - all_probes.d for tracing all PHP Static Probes with DTrace
  • Example#413 - all_probes.stp for tracing all PHP Static Probes with SystemTap
  • Example#414 - An apc.rfc1867 example
  • Example#415 - apc_add 例子
  • Example#416 - apc_bin_load example
  • Example#417 - A apc_cache_info example
  • Example#418 - apc_cas 示例
  • Example#419 - apc_dec example
  • Example#420 - apc_define_constants example
  • Example#421 - apc_delete_file example
  • Example#422 - A apc_delete 范例
  • Example#423 - apc_exists 例子
  • Example#424 - apc_fetch 范例
  • Example#425 - apc_inc 范例
  • Example#426 - apc_load_constants example
  • Example#427 - A apc_sma_info example
  • Example#428 - apc_store 例子
  • Example#429 - A APCIterator::__construct example
  • Example#430 - An apc.rfc1867 example
  • Example#431 - A apcu_add example
  • Example#432 - A apcu_cache_info example
  • Example#433 - apcu_cas example
  • Example#434 - apcu_dec example
  • Example#435 - A apcu_delete example
  • Example#436 - An apcu_entry example
  • Example#437 - apcu_exists example
  • Example#438 - A apcu_fetch example
  • Example#439 - apcu_inc example
  • Example#440 - A apcu_sma_info example
  • Example#441 - A apcu_store example
  • Example#442 - A APCUIterator::__construct example
  • Example#443 - Typical session using tcplisten
  • Example#444 - apd_callstack example
  • Example#445 - apd_clunk example
  • Example#446 - apd_continue example
  • Example#447 - apd_croak example
  • Example#448 - apd_dump_function_table example
  • Example#449 - apd_dump_persistent_resources example
  • Example#450 - apd_dump_regular_resources example
  • Example#451 - apd_echo example
  • Example#452 - apd_get_active_symbols example
  • Example#453 - apd_set_pprof_trace example
  • Example#454 - apd_set_session_trace_socket example
  • Example#455 - apd_set_session_trace example
  • Example#456 - apd_set_session example
  • Example#457 - override_function example
  • Example#458 - rename_function example
  • Example#459 - bcompiler_load_exe 例子
  • Example#460 - bcompiler_load 例子
  • Example#461 - bcompiler_parse_class 例子
  • Example#462 - bcompiler_read 例子
  • Example#463 - bcompiler_write_class 例子
  • Example#464 - bcompiler_write_constant 例子
  • Example#465 - bcompiler_write_exe_footer 例子
  • Example#466 - bcompiler_write_file 例子
  • Example#467 - bcompiler_write_footer 例子
  • Example#468 - bcompiler_write_function 例子
  • Example#469 - bcompiler_write_functions_from_file 例子
  • Example#470 - bcompiler_write_header 例子
  • Example#471 - blenc_encrypt example
  • Example#472 - 在脚本中使用错误句柄
  • Example#473 - debug_backtrace 范例
  • Example#474 - debug_print_backtrace 范例
  • Example#475 - An error_clear_last example
  • Example#476 - An error_get_last 范例
  • Example#477 - error_log 范例
  • Example#478 - error_reporting 范例
  • Example#479 - restore_error_handler 范例
  • Example#480 - restore_exception_handler 范例
  • Example#481 - 用 set_error_handler 和 trigger_error 进行错误处理
  • Example#482 - set_exception_handler 范例
  • Example#483 - trigger_error 示例
  • Example#484 - Getting the data within the PHP application itself (function)
  • Example#485 - Example use of gengraph.php
  • Example#486 - Listing data via inclued dumps (configuration)
  • Example#487 - inclued_get_data example
  • Example#488 - Creating large array in a function
  • Example#489 - 输出控制举例
  • Example#490 - ob_end_clean example
  • Example#491 - ob_end_flush example
  • Example#492 - A simple ob_get_clean example
  • Example#493 - A simple ob_get_contents example
  • Example#494 - ob_get_flush example
  • Example#495 - A simple ob_get_length example
  • Example#496 - ob_gzhandler example
  • Example#497 - ob_list_handlers example
  • Example#498 - 用户自定义回调函数的例子
  • Example#499 - output_add_rewrite_var example
  • Example#500 - output_reset_rewrite_vars example
  • Example#501 - assert_options 例子
  • Example#502 - 使用自定义处理程序处理失败的断言
  • Example#503 - 使用自定义处理器打印描述信息
  • Example#504 - Expectations without a custom exception
  • Example#505 - Expectations with a custom exception
  • Example#506 - cli_get_process_title example
  • Example#507 - cli_set_process_title example
  • Example#508 - dl 例子
  • Example#509 - extension_loaded 例子
  • Example#510 - 一个 gc_enabled 例子
  • Example#511 - get_current_user 例子
  • Example#512 - get_defined_constants 例子
  • Example#513 - 打印 XML 函数
  • Example#514 - get_include_path 例子
  • Example#515 - get_included_files 范例
  • Example#516 - get_loaded_extensions 范例
  • Example#517 - get_magic_quotes_gpc 例子
  • Example#518 - get_magic_quotes_runtime 例子
  • Example#519 - Unfiltered get_resources
  • Example#520 - Filtered get_resources
  • Example#521 - getenv 例子
  • Example#522 - getlastmod 例子
  • Example#523 - getopt 例子：基本用法
  • Example#524 - getopt 例子：引入长选项
  • Example#525 - getopt 例子：传递同一多个选项
  • Example#526 - getopt 例子：使用 optind
  • Example#527 - getrusage 例子
  • Example#528 - ini_get_all 例子
  • Example#529 - 禁用 details
  • Example#530 - 一些 ini_get 例子
  • Example#531 - ini_restore 例子
  • Example#532 - 设置一个 ini 选项
  • Example#533 - 一个 memory_get_usage 例子
  • Example#534 - php_ini_loaded_file 例子
  • Example#535 - 列出返回的 ini 文件的简单例子
  • Example#536 - php_logo_guid 例子
  • Example#537 - php_sapi_name 例子
  • Example#538 - 一些 php_uname 的例子
  • Example#539 - 一些系统相关常量的例子
  • Example#540 - 打印普遍名单
  • Example#541 - 打印核心开发者和文档组
  • Example#542 - 打印所有贡献者
  • Example#543 - phpinfo 范例
  • Example#544 - phpversion 范例
  • Example#545 - PHP_VERSION_ID 范例和用法
  • Example#546 - 设置一个环境变量
  • Example#547 - restore_include_path 例子
  • Example#548 - set_include_path 例子
  • Example#549 - 添加到include path
  • Example#550 - set_magic_quotes_runtime 例子
  • Example#551 - sys_get_temp_dir 例子
  • Example#552 - version_compare examples
  • Example#553 - zend_logo_guid 例子
  • Example#554 - zend_thread_id 例子
  • Example#555 - zend_version 例子
  • Example#556 - Custom Superglobals with runkit.superglobal=_FOO,_BAR in php.ini
  • Example#557 - Instantiating a restricted sandbox
  • Example#558 - Working with variables in a sandbox
  • Example#559 - Calling sandbox functions
  • Example#560 - Passing arguments to sandbox functions
  • Example#561 - Working with variables in a sandbox
  • Example#562 - Accessing parental variables
  • Example#563 - A runkit_class_adopt example
  • Example#564 - A runkit_class_emancipate example
  • Example#565 - A runkit_function_add example
  • Example#566 - A runkit_function_copy example
  • Example#567 - A runkit_function_redefine example
  • Example#568 - runkit_import example
  • Example#569 - runkit_method_add example
  • Example#570 - runkit_method_copy example
  • Example#571 - runkit_method_redefine example
  • Example#572 - runkit_method_remove example
  • Example#573 - runkit_method_rename example
  • Example#574 - runkit_return_value_used example
  • Example#575 - Feeding output to a variable
  • Example#576 - Enabling and disabling scream at runtime
  • Example#577 - uopz_backup example
  • Example#578 - uopz_compose example
  • Example#579 - uopz_copy example
  • Example#580 - uopz_delete example
  • Example#581 - uopz_delete class example
  • Example#582 - uopz_extend example
  • Example#583 - uopz_flags example
  • Example#584 - uopz_function example
  • Example#585 - uopz_function class example
  • Example#586 - uopz_implement example
  • Example#587 - uopz_overload example
  • Example#588 - uopz_redefine example
  • Example#589 - uopz_rename example
  • Example#590 - uopz_rename class example
  • Example#591 - uopz_restore example
  • Example#592 - uopz_undefine example
  • Example#593 - Weakref usage example
  • Example#594 - WeakRef usage example
  • Example#595 - Weakref::acquire example
  • Example#596 - Nested acquire/release example
  • Example#597 - Weakref::__construct example
  • Example#598 - Weakref::release example
  • Example#599 - Weakmap usage example
  • Example#600 - wincache.ignorelist example
  • Example#601 - Authentication configuration for wincache.php
  • Example#602 - Enabling WinCache session handler
  • Example#603 - Enabling WinCache functions reroutes
  • Example#604 - Reroute.ini file content
  • Example#605 - A wincache_fcache_fileinfo example
  • Example#606 - A wincache_fcache_meminfo example
  • Example#607 - Using wincache_lock
  • Example#608 - A wincache_ocache_fileinfo example
  • Example#609 - A wincache_ocache_meminfo example
  • Example#610 - A wincache_refresh_if_changed example
  • Example#611 - A wincache_rplist_fileinfo example
  • Example#612 - A wincache_rplist_meminfo example
  • Example#613 - A wincache_scache_info example
  • Example#614 - A wincache_scache_meminfo example
  • Example#615 - wincache_ucache_add with key as a string
  • Example#616 - wincache_ucache_add with key as an array
  • Example#617 - Using wincache_ucache_cas
  • Example#618 - using wincache_ucache_clear
  • Example#619 - Using wincache_ucache_dec
  • Example#620 - Using wincache_ucache_delete with key as a string
  • Example#621 - Usingwincache_ucache_delete with key as an array
  • Example#622 - Using wincache_ucache_delete with key as an array where some elements cannot be deleted
  • Example#623 - Using wincache_ucache_exists
  • Example#624 - wincache_ucache_get with key as a string
  • Example#625 - wincache_ucache_get with key as an array
  • Example#626 - Using wincache_ucache_inc
  • Example#627 - Using wincache_ucache_info
  • Example#628 - A wincache_ucache_meminfo example
  • Example#629 - wincache_ucache_set with key as a string
  • Example#630 - wincache_ucache_set with key as an array
  • Example#631 - Using wincache_unlock
  • Example#632 - Xhprof 范例，可选使用图形界面
  • Example#633 - xhprof_disable 范例
  • Example#634 - xhprof_enable 范例
  • Example#635 - xhprof_sample_disable 范例
  • Example#636 - id3_get_frame_long_name example
  • Example#637 - id3_get_frame_short_name example
  • Example#638 - id3_get_genre_id example
  • Example#639 - id3_get_genre_list example
  • Example#640 - id3_get_genre_name example
  • Example#641 - id3_get_tag example
  • Example#642 - id3_get_tag example
  • Example#643 - id3_get_version example
  • Example#644 - id3_remove_tag example
  • Example#645 - id3_set_tag example
  • Example#646 - Opens a new MP3 file and read the title
  • Example#647 - Reading an OGG/Vorbis file
  • Example#648 - Encode an audio file to OGG/Vorbis
  • Example#649 - KADM5 extension overview example
  • Example#650 - Example of changing principal's password
  • Example#651 - Example of principal's creation
  • Example#652 - kadm5_delete_principal example
  • Example#653 - kadm5_get_policies example
  • Example#654 - kadm5_get_principal example
  • Example#655 - kadm5_get_principals example
  • Example#656 - KADM5 initialization example
  • Example#657 - Example of modifying principal
  • Example#658 - Using CHAP passwords
  • Example#659 - radius_acct_open example
  • Example#660 - radius_add_server example
  • Example#661 - radius_auth_open example
  • Example#662 - radius_create_request example
  • Example#663 - radius_cvt_addr example
  • Example#664 - radius_cvt_int example
  • Example#665 - radius_cvt_string example
  • Example#666 - radius_get_attr example
  • Example#667 - radius_get_tagged_attr_data example
  • Example#668 - radius_get_tagged_attr_tag example
  • Example#669 - radius_get_vendor_attr example
  • Example#670 - radius_put_attr example
  • Example#671 - radius_put_int example
  • Example#672 - radius_put_string example
  • Example#673 - radius_put_vendor_attr example
  • Example#674 - Writing a string with a specified color to the screen
  • Example#675 - ncurses_getmouse example
  • Example#676 - Writing a string with a specified color to the screen
  • Example#677 - Writing a string with a specified color to the screen
  • Example#678 - ncurses_mousemask example
  • Example#679 - Writing a string with a specified color to the screen
  • Example#680 - Newt Usage Example
  • Example#681 - A newt_button example
  • Example#682 - A newt_draw_root_text example
  • Example#683 - A newt_form_add_component example
  • Example#684 - A newt_form_add_components example
  • Example#685 - A newt_form example
  • Example#686 - A newt_get_screen_size example
  • Example#687 - A newt_win_entries example
  • Example#688 - Readline Callback Interface Example
  • Example#689 - readline Example
  • Example#690 - bzip2 小例子
  • Example#691 - 压缩数据
  • Example#692 - 解压一个字符串
  • Example#693 - bzerror 范例
  • Example#694 - bzopen 范例
  • Example#695 - bzread 范例
  • Example#696 - bzwrite 范例
  • Example#697 - Using an external file
  • Example#698 - Using a file within a phar archive
  • Example#699 - Converting a phar archive from phar to tar file format
  • Example#700 - phar.extract_list usage example
  • Example#701 - phar.cache_list usage example
  • Example#702 - 一个 Phar::addEmptyDir 示例
  • Example#703 - 一个 Phar::addFile 示例
  • Example#704 - 一个 Phar::addFromString 示例
  • Example#705 - A Phar::apiVersion example
  • Example#706 - A Phar::buildFromDirectory example
  • Example#707 - A Phar::buildFromIterator with SplFileInfo
  • Example#708 - A Phar::buildFromIterator with other iterators
  • Example#709 - A Phar::canCompress example
  • Example#710 - A Phar::canWrite example
  • Example#711 - A Phar::compress example
  • Example#712 - A Phar::compressAllFilesBZIP2 example
  • Example#713 - A Phar::compressAllFilesGZ example
  • Example#714 - A Phar::compressFiles example
  • Example#715 - A Phar::__construct example
  • Example#716 - A Phar::convertToData example
  • Example#717 - A Phar::convertToExecutable example
  • Example#718 - A Phar::copy example
  • Example#719 - A Phar::count example
  • Example#720 - A Phar::createDefaultStub example
  • Example#721 - A Phar::decompress example
  • Example#722 - A Phar::decompressFiles example
  • Example#723 - A Phar::delMetaData example
  • Example#724 - 一个 Phar::delete 示例
  • Example#725 - A Phar::extractTo example
  • Example#726 - A Phar::getMetadata example
  • Example#727 - A Phar::getStub example
  • Example#728 - A Phar::hasMetadata example
  • Example#729 - A Phar::interceptFileFuncs example
  • Example#730 - A Phar::interceptFileFuncs example
  • Example#731 - A Phar::isBuffering example
  • Example#732 - A Phar::isCompressed example
  • Example#733 - A Phar::loadPhar example
  • Example#734 - A Phar::mapPhar example
  • Example#735 - A Phar::mount example
  • Example#736 - A Phar::mungServer example
  • Example#737 - A Phar::offsetExists example
  • Example#738 - Phar::offsetGet example
  • Example#739 - A Phar::offsetSet example
  • Example#740 - A Phar::offsetUnset example
  • Example#741 - A Phar::running example
  • Example#742 - A Phar::setAlias example
  • Example#743 - A Phar::setDefaultStub example
  • Example#744 - A Phar::setMetadata example
  • Example#745 - A Phar::setStub example
  • Example#746 - A Phar::startBuffering example
  • Example#747 - A Phar::stopBuffering example
  • Example#748 - A Phar::uncompressAllFiles example
  • Example#749 - A Phar::unlinkArchive example
  • Example#750 - A Phar::webPhar example
  • Example#751 - A PharData::addEmptyDir example
  • Example#752 - A PharData::addFile example
  • Example#753 - A PharData::addFromString example
  • Example#754 - A PharData::buildFromDirectory example
  • Example#755 - A PharData::buildFromIterator with SplFileInfo
  • Example#756 - A PharData::buildFromIterator with other iterators
  • Example#757 - A PharData::compress example
  • Example#758 - A PharData::compressFiles example
  • Example#759 - A PharData::__construct example
  • Example#760 - A PharData::convertToData example
  • Example#761 - A PharData::convertToExecutable example
  • Example#762 - A PharData::copy example
  • Example#763 - A PharData::decompress example
  • Example#764 - A PharData::decompressFiles example
  • Example#765 - A PharData::delMetaData example
  • Example#766 - A PharData::delete example
  • Example#767 - A PharData::extractTo example
  • Example#768 - A PharData::offsetSet example
  • Example#769 - A PharData::offsetUnset example
  • Example#770 - A Phar::setMetadata example
  • Example#771 - A PharFileInfo::chmod example
  • Example#772 - A PharFileInfo::compress example
  • Example#773 - A PharFileInfo::__construct example
  • Example#774 - A PharFileInfo::decompress example
  • Example#775 - A PharFileInfo::delMetaData example
  • Example#776 - A PharFileInfo::getCRC32 example
  • Example#777 - A PharFileInfo::getCompressedSize example
  • Example#778 - A PharFileInfo::getMetadata example
  • Example#779 - A PharFileInfo::getPharFlags example
  • Example#780 - A PharFileInfo::isCRCChecked example
  • Example#781 - A PharFileInfo::isCompressed example
  • Example#782 - A PharFileInfo::isCompressedBZIP2 example
  • Example#783 - A PharFileInfo::isCompressedGZ example
  • Example#784 - A PharFileInfo::setCompressedBZIP2 example
  • Example#785 - A PharFileInfo::setCompressedGZ example
  • Example#786 - A PharFileInfo::setMetadata example
  • Example#787 - A PharFileInfo::setUncompressed example
  • Example#788 - Rar installation
  • Example#789 - On-the-fly decompression
  • Example#790 - RAR extension filesystem extraction example
  • Example#791 - 面向对象风格
  • Example#792 - 过程化风格
  • Example#793 - 面向对象风格
  • Example#794 - 过程化风格
  • Example#795 - 面向对象风格
  • Example#796 - 过程化风格
  • Example#797 - 面向对象风格
  • Example#798 - 过程化风格
  • Example#799 - 面向对象风格
  • Example#800 - 过程化风格
  • Example#801 - 面向对象风格
  • Example#802 - 过程化风格
  • Example#803 - 面向对象风格
  • Example#804 - 过程化风格
  • Example#805 - Volume Callback
  • Example#806 - 面向对象风格
  • Example#807 - 过程化风格
  • Example#808 - RarArchive::__toString example
  • Example#809 - RarEntry::extract example
  • Example#810 - How to extract all files in archive:
  • Example#811 - RarEntry::getAttr example
  • Example#812 - RarEntry::getHostOs example (version >= 2.0.0)
  • Example#813 - RarEntry::getHostOs example (version <= 1.0.0)
  • Example#814 - RarEntry::getMethod example
  • Example#815 - RarEntry::getName example
  • Example#816 - RarEntry::getPackedSize example
  • Example#817 - RarEntry::getStream example
  • Example#818 - RarEntry::getUnpackedSize example
  • Example#819 - RarEntry::getVersion example
  • Example#820 - RarException::isUsingExceptions example
  • Example#821 - RarException::setUsingExceptions example
  • Example#822 - 创建一个 Zip 归档
  • Example#823 - 输出文档细节和列表
  • Example#824 - Zip 流封装，读取一个 OpenOffice 文件的元信息
  • Example#825 - Zip 使用范例
  • Example#826 - Create a new directory in an archive
  • Example#827 - Open and add
  • Example#828 - Add an entry to a new archive
  • Example#829 - Add file to a directory inside an archive
  • Example#830 - ZipArchive::addGlob example
  • Example#831 - ZipArchive::addPattern example
  • Example#832 - Delete file from archive using its index
  • Example#833 - Deleting a file and directory from an archive, using names
  • Example#834 - Extract all entries
  • Example#835 - Extract two entries
  • Example#836 - Dump an archive comment
  • Example#837 - Dump an entry comment
  • Example#838 - Dump an entry comment
  • Example#839 - Extract all entries with Unix rights
  • Example#840 - Get the file contents
  • Example#841 - Get the file contents
  • Example#842 - Convert an image from a zip entry
  • Example#843 - ZipArchive::getNameIndex example
  • Example#844 - Get the entry contents with fread and store it
  • Example#845 - Same as the previous example but with fopen and the zip stream wrapper
  • Example#846 - Stream wrapper and image, can be used with the xml function as well
  • Example#847 - Create an archive and then use it with ZipArchive::locateName
  • Example#848 - Open and extract
  • Example#849 - Create an archive
  • Example#850 - Rename one entry
  • Example#851 - Rename one entry
  • Example#852 - Create an archive and set a comment
  • Example#853 - Open an archive and set a comment for an entry
  • Example#854 - Open an archive and set a comment for an entry
  • Example#855 - Add files with different compression methods to an archive
  • Example#856 - Add files with different compression methods to an archive
  • Example#857 - Archive a file, with its Unix rights
  • Example#858 - Dump the stat info of an entry
  • Example#859 - Dump the stat info of an entry
  • Example#860 - Small Zlib Example
  • Example#861 - Working with the incremental compression and decompression API as of PHP 7.0.0
  • Example#862 - gzclose example
  • Example#863 - gzcompress example
  • Example#864 - gzdeflate example
  • Example#865 - Creating a gzip file
  • Example#866 - gzeof example
  • Example#867 - gzfile example
  • Example#868 - gzgetc example
  • Example#869 - gzgets example
  • Example#870 - gzgetss example
  • Example#871 - gzinflate example
  • Example#872 - gzopen Example
  • Example#873 - gzpassthru example
  • Example#874 - gzread example
  • Example#875 - gzseek example
  • Example#876 - gzuncompress example
  • Example#877 - gzwrite example
  • Example#878 - zlib_encode example
  • Example#879 - CrackLib example
  • Example#880 - random_bytes example
  • Example#881 - random_int example
  • Example#882 - hash_algos 例程
  • Example#883 - hash_copy 例程
  • Example#884 - 例程
  • Example#885 - 使用 hash_file
  • Example#886 - hash_final 例程
  • Example#887 - hash_hmac_file 例程
  • Example#888 - hash_hmac 例程
  • Example#889 - 增量哈希运算例程
  • Example#890 - hash_pbkdf2 例程，基础用法
  • Example#891 - hash_update_stream 例程
  • Example#892 - 一个 hash 例程
  • Example#893 - 使用 PHP 5.4 或者更高版本计算 tiger 哈希值
  • Example#894 - 在 2.4.x 或更高版本，使用 256 比特的密钥，AES 算法和 CBC 模式来加密输入数据
  • Example#895 - mcrypt_create_iv 例程
  • Example#896 - mcrypt_enc_get_algorithms_name 例程
  • Example#897 - mcrypt_enc_get_modes_name 例程
  • Example#898 - mcrypt_enc_get_supported_key_sizes 例程
  • Example#899 - mcrypt_encrypt 例程
  • Example#900 - mcrypt_get_block_size 例程
  • Example#901 - mcrypt_get_cipher_name 例程
  • Example#902 - mcrypt_get_iv_size 例程
  • Example#903 - mcrypt_get_key_size 例程
  • Example#904 - mcrypt_list_algorithms 例程
  • Example#905 - mcrypt_list_modes 例程
  • Example#906 - mcrypt_module_open 例程
  • Example#907 - 在加密中使用 mcrypt_module_open
  • Example#908 - mcrypt_module_self_test 例程
  • Example#909 - mdecrypt_generic 例程
  • Example#910 - Computes the MD5 digest and hmac and print it out as hex
  • Example#911 - Traversing all hashes
  • Example#912 - mhash_get_block_size Example
  • Example#913 - mhash_get_hash_name Example
  • Example#914 - openssl_cipher_iv_length example
  • Example#915 - Creating a self-signed-certificate
  • Example#916 - openssl_csr_sign example - signing a CSR (how to implement your own CA)
  • Example#917 - openssl_error_string example
  • Example#918 - openssl_get_cert_locations example
  • Example#919 - openssl_get_cipher_methods example
  • Example#920 - openssl_get_md_methods example
  • Example#921 - openssl_open example
  • Example#922 - openssl_pkcs12_read example
  • Example#923 - openssl_pkcs7_decrypt example
  • Example#924 - openssl_pkcs7_encrypt example
  • Example#925 - openssl_pkcs7_sign example
  • Example#926 - openssl_random_pseudo_bytes example
  • Example#927 - openssl_seal example
  • Example#928 - openssl_sign example
  • Example#929 - openssl_sign example
  • Example#930 - openssl_spki_export_challenge example
  • Example#931 - openssl_spki_export_challenge example from <keygen>
  • Example#932 - openssl_spki_export example
  • Example#933 - openssl_spki_export example from <keygen>
  • Example#934 - openssl_spki_new example
  • Example#935 - openssl_spki_verify example
  • Example#936 - openssl_spki_verify example from <keygen>
  • Example#937 - openssl_verify example
  • Example#938 - openssl_verify example
  • Example#939 - password_hash 例子
  • Example#940 - password_hash 手动设置 cost 的例子
  • Example#941 - password_hash 手动设置盐值的例子
  • Example#942 - password_hash example finding a good cost
  • Example#943 - Usage of password_needs_rehash
  • Example#944 - password_verify 例子
  • Example#945 - DBA example
  • Example#946 - Traversing a database
  • Example#947 - dba_handlers Example
  • Example#948 - dbx_close example
  • Example#949 - dbx_compare example
  • Example#950 - dbx_connect example
  • Example#951 - dbx_error example
  • Example#952 - dbx_escape_string example
  • Example#953 - How to handle the returned value
  • Example#954 - lists each field's name and type
  • Example#955 - outputs the content of data property into HTML table
  • Example#956 - How to handle UNBUFFERED queries
  • Example#957 - How to handle the returned value
  • Example#958 - dbx_sort example
  • Example#959 - DSN-less connections
  • Example#960 - odbc_execute and odbc_prepare example
  • Example#961 - odbc_fetch_into examples
  • Example#962 - odbc_next_result
  • Example#963 - odbc_execute and odbc_prepare example
  • Example#964 - odbc_result examples
  • Example#965 - odbc_setoption examples
  • Example#966 - 使用 PDO::ATTR_DRIVER_NAME 的例子
  • Example#967 - 连接到 MySQL
  • Example#968 - 处理连接错误
  • Example#969 - 关闭一个连接
  • Example#970 - 持久化连接
  • Example#971 - 在事务中执行批处理
  • Example#972 - 用预处理语句进行重复插入
  • Example#973 - 用预处理语句进行重复插入
  • Example#974 - 使用预处理语句获取数据
  • Example#975 - 带输出参数调用存储过程
  • Example#976 - 带输入/输出参数调用存储过程
  • Example#977 - 占位符的无效使用
  • Example#978 - 创建 PDO 实例并设置错误模式
  • Example#979 - 创建 PDO 实例并在构造函数中设置错误模式
  • Example#980 - 从数据库中显示一张图片
  • Example#981 - 插入一张图片到数据库
  • Example#982 - 插入一张图片到数据库：Oracle
  • Example#983 - 回滚一个事务
  • Example#984 - 提交一个基础事务
  • Example#985 - 提交一个DDL事务
  • Example#986 - Create a PDO instance via driver invocation
  • Example#987 - Create a PDO instance via URI invocation
  • Example#988 - 使用别名创建一个PDO实例
  • Example#989 - 取得一个 SQLSTATE 码
  • Example#990 - Displaying errorInfo() fields for a PDO_ODBC connection to a DB2 database
  • Example#991 - 发出一条 DELETE 语句
  • Example#992 - 取回数据库连接属性
  • Example#993 - 一个 PDO::getAvailableDrivers 的例子
  • Example#994 - Prepare an SQL statement with named parameters
  • Example#995 - Prepare an SQL statement with question mark parameters
  • Example#996 - Demonstrate PDO::query
  • Example#997 - Quoting a normal string
  • Example#998 - Quoting a dangerous string
  • Example#999 - Quoting a complex string
  • Example#1000 - 回滚一个事务
  • Example#1001 - 把结果集输出绑定到 PHP 变量
  • Example#1002 - 执行一条使用命名占位符的预处理语句
  • Example#1003 - 执行一条使用问号占位符的预处理语句
  • Example#1004 - 使用 INOUT 参数调用一个存储过程
  • Example#1005 - 执行一条使用命名占位符的预处理语句
  • Example#1006 - 执行一条使用问号占位符的预处理语句
  • Example#1007 - 一个 PDOStatement::closeCursor 的例子
  • Example#1008 - 计算列数
  • Example#1009 - PDOStatement::debugDumpParams 使用命名参数的例子
  • Example#1010 - PDOStatement::debugDumpParams 使用未命名参数的例子
  • Example#1011 - 取回一个 SQLSTATE 码
  • Example#1012 - 显示连接到DB2数据库的 PDO_ODBC 连接的 errorInfo() 的字段
  • Example#1013 - 执行一条绑定变量的预处理语句
  • Example#1014 - 使用一个含有插入值的数组执行一条预处理语句（命名参数）
  • Example#1015 - 使用一个含有插入值的数组执行一条预处理语句（占位符）
  • Example#1016 - 执行一条问号占位符的预处理语句
  • Example#1017 - 使用数组执行一条含有 IN 子句的预处理语句
  • Example#1018 - 使用不同的提取方式获取行
  • Example#1019 - 使用一个可滚动游标获取行
  • Example#1020 - 获取结果集中所有剩余的行
  • Example#1021 - 获取结果集中单独一列的所有值
  • Example#1022 - 根据单独的一列把所有值分组
  • Example#1023 - 每行结果实例化一个类
  • Example#1024 - 每行调用一次函数
  • Example#1025 - 返回下一行的第一列
  • Example#1026 - 检索列的元数据
  • Example#1027 - 获取由一个存储过程返回的多个行集
  • Example#1028 - 返回删除的行数
  • Example#1029 - 计算由一个 SELECT 语句返回的行数
  • Example#1030 - 设置获取模式
  • Example#1031 - Insert LOBs in CUBRID PDO
  • Example#1032 - Fetch LOBs in CUBRID PDO
  • Example#1033 - Insert set in CUBRID PDO with default data type.
  • Example#1034 - Specify data type when insert set in CUBRID PDO
  • Example#1035 - PDO_CUBRID DSN examples
  • Example#1036 - A PDO::cubrid_schema example
  • Example#1037 - PDO_DBLIB DSN examples
  • Example#1038 - PDO_FIREBIRD DSN example with path
  • Example#1039 - PDO_FIREBIRD DSN example with port and path
  • Example#1040 - PDO_FIREBIRD DSN example with localhost and path to employee.fdb on Debian system
  • Example#1041 - PDO_IBM DSN example using db2cli.ini
  • Example#1042 - PDO_IBM DSN example using a connection string
  • Example#1043 - PDO_INFORMIX DSN example using odbc.ini
  • Example#1044 - PDO_INFORMIX DSN example using a connection string
  • Example#1045 - Forcing queries to be buffered in mysql
  • Example#1046 - Setting the connection character set to UTF-8 prior to PHP 5.3.6
  • Example#1047 - PDO_MYSQL DSN examples
  • Example#1048 - PDO_SQLSRV DSN examples
  • Example#1049 - PDO_OCI DSN examples
  • Example#1050 - PDO_ODBC DSN example (ODBC driver manager)
  • Example#1051 - PDO_ODBC DSN example (IBM DB2 uncataloged connection)
  • Example#1052 - PDO_ODBC DSN example (Microsoft Access uncataloged connection)
  • Example#1053 - PDO_PGSQL DSN examples
  • Example#1054 - A PDO::pgsqlLOBCreate example
  • Example#1055 - A PDO::pgsqlLOBOpen example
  • Example#1056 - A PDO::pgsqlLOBUnlink example
  • Example#1057 - PDO_SQLITE DSN examples
  • Example#1058 - max_length aggregation function example
  • Example#1059 - PDO::sqliteCreateCollation example
  • Example#1060 - PDO::sqliteCreateFunction example
  • Example#1061 - DSN examples for PDO_4D
  • Example#1062 - Basic example with PDO_4D
  • Example#1063 - Accessing 4D language from pdo_4d
  • Example#1064 - Escaping 4D table names
  • Example#1065 - 数据查询的例子
  • Example#1066 - 数据插入的例子
  • Example#1067 - cubrid_bind example
  • Example#1068 - cubrid_bind BLOB/CLOB example
  • Example#1069 - cubrid_bind BLOB/CLOB example
  • Example#1070 - cubrid_close_prepare example
  • Example#1071 - cubrid_close_request example
  • Example#1072 - cubrid_col_get example
  • Example#1073 - cubrid_col_size example
  • Example#1074 - cubrid_column_names example
  • Example#1075 - cubrid_column_types example
  • Example#1076 - cubrid_commit example
  • Example#1077 - cubrid_connect_with_url url without properties example
  • Example#1078 - cubrid_connect_with_url url with properties example
  • Example#1079 - cubrid_connect example
  • Example#1080 - cubrid_current_oid example
  • Example#1081 - cubrid_disconnect example
  • Example#1082 - cubrid_drop example
  • Example#1083 - cubrid_error_code_facility example
  • Example#1084 - cubrid_error_code example
  • Example#1085 - cubrid_error_msg example
  • Example#1086 - cubrid_execute example
  • Example#1087 - cubrid_fetch example
  • Example#1088 - cubrid_free_result example
  • Example#1089 - cubrid_get_charset example
  • Example#1090 - cubrid_get_class_name example
  • Example#1091 - cubrid_get_client_info example
  • Example#1092 - cubrid_get_db_parameter example
  • Example#1093 - cubrid_get_query_timeout example
  • Example#1094 - cubrid_get_server_info example
  • Example#1095 - cubrid_get example
  • Example#1096 - cubrid_insert_id example
  • Example#1097 - cubrid_is_instance example
  • Example#1098 - cubrid_lob_close example
  • Example#1099 - cubrid_lob_export example
  • Example#1100 - cubrid_lob_get example
  • Example#1101 - cubrid_lob_send example
  • Example#1102 - cubrid_lob_size example
  • Example#1103 - cubrid_lob2_bind example
  • Example#1104 - cubrid_lob2_export example
  • Example#1105 - cubrid_lob2_export example
  • Example#1106 - cubrid_lob2_read example 1
  • Example#1107 - cubrid_lob2_read example 2
  • Example#1108 - cubrid_lob2_seek64 example
  • Example#1109 - cubrid_lob2_seek example
  • Example#1110 - cubrid_lob2_write example 1
  • Example#1111 - cubrid_lob2_write example 2
  • Example#1112 - cubrid_lock_read example
  • Example#1113 - cubrid_lock_write example
  • Example#1114 - cubrid_move_cursor example
  • Example#1115 - cubrid_next_result example
  • Example#1116 - cubrid_num_cols example
  • Example#1117 - cubrid_num_rows example
  • Example#1118 - cubrid_pconnect_with_url url without properties example
  • Example#1119 - cubrid_pconnect_with_url url with properties example
  • Example#1120 - cubrid_connect example
  • Example#1121 - cubrid_prepare example
  • Example#1122 - cubrid_put example
  • Example#1123 - cubrid_rollback example
  • Example#1124 - cubrid_schema example
  • Example#1125 - cubrid_seq_drop example
  • Example#1126 - cubrid_seq_insert example
  • Example#1127 - cubrid_seq_put example
  • Example#1128 - cubrid_set_add example
  • Example#1129 - cubrid_get_db_parameter example
  • Example#1130 - cubrid_set_drop example
  • Example#1131 - cubrid_version example
  • Example#1132 - cubrid_affected_rows example
  • Example#1133 - cubrid_client_encoding example
  • Example#1134 - cubrid_close example
  • Example#1135 - cubrid_data_seek example
  • Example#1136 - cubrid_db_name example
  • Example#1137 - cubrid_errno example
  • Example#1138 - cubrid_error example
  • Example#1139 - cubrid_fetch_array example
  • Example#1140 - cubrid_fetch_assoc example
  • Example#1141 - cubrid_fetch_field example
  • Example#1142 - cubrid_fetch_lengths example
  • Example#1143 - cubrid_fetch_object example
  • Example#1144 - cubrid_fetch_row example
  • Example#1145 - cubrid_field_flags example
  • Example#1146 - cubrid_field_len example
  • Example#1147 - cubrid_field_name example
  • Example#1148 - cubrid_field_seek example
  • Example#1149 - cubrid_field_table example
  • Example#1150 - cubrid_field_type example
  • Example#1151 - cubrid_list_dbs example
  • Example#1152 - cubrid_num_fields example
  • Example#1153 - cubrid_ping example
  • Example#1154 - Invalid Query
  • Example#1155 - Valid Query
  • Example#1156 - cubrid_real_escape_string example
  • Example#1157 - cubrid_result example
  • Example#1158 - cubrid_unbuffered_query example
  • Example#1159 - cubrid_load_from_glo example
  • Example#1160 - cubrid_new_glo example
  • Example#1161 - cubrid_save_to_glo example
  • Example#1162 - cubrid_send_glo example
  • Example#1163 - Inserting a record in a dBase database
  • Example#1164 - Closing a dBase database file
  • Example#1165 - Creating a dBase database file
  • Example#1166 - Showing header information for a dBase database file
  • Example#1167 - Listing all the registered members in the database
  • Example#1168 - dbase_numfields Example
  • Example#1169 - Looping over all the records of the database
  • Example#1170 - Opening a dBase database file
  • Example#1171 - Emptying a dBase database
  • Example#1172 - Updating a record in the database
  • Example#1173 - ibase_blob_get example
  • Example#1174 - ibase_blob_import example
  • Example#1175 - ibase_connect example
  • Example#1176 - ibase_execute example
  • Example#1177 - ibase_fetch_object example
  • Example#1178 - ibase_field_info example
  • Example#1179 - ibase_name_result example
  • Example#1180 - ibase_num_fields example
  • Example#1181 - ibase_query example
  • Example#1182 - ibase_set_event_handler example
  • Example#1183 - fbsql_close example
  • Example#1184 - fbsql_connect example
  • Example#1185 - fbsql_create_blob example
  • Example#1186 - fbsql_create_clob example
  • Example#1187 - fbsql_create_db example
  • Example#1188 - fbsql_data_seek example
  • Example#1189 - fbsql_create_clob example
  • Example#1190 - fbsql_errno Example
  • Example#1191 - fbsql_error Example
  • Example#1192 - fbsql_fetch_array example
  • Example#1193 - fbsql_fetch_assoc example
  • Example#1194 - fbsql_fetch_field example
  • Example#1195 - fbsql_fetch_object example
  • Example#1196 - fbsql_field_name example
  • Example#1197 - fbsql_field_type example
  • Example#1198 - fbsql_list_dbs example
  • Example#1199 - fbsql_list_fields example
  • Example#1200 - fbsql_next_result example
  • Example#1201 - fbsql_num_rows example
  • Example#1202 - fbsql_query example
  • Example#1203 - fbsql_query example
  • Example#1204 - fbsql_read_blob example
  • Example#1205 - fbsql_read_clob example
  • Example#1206 - fbsql_table_name example
  • Example#1207 - Retrieving the AUTOCOMMIT value for a connection
  • Example#1208 - Setting the AUTOCOMMIT value for a connection
  • Example#1209 - Binding PHP variables to a prepared statement
  • Example#1210 - Calling stored procedures with IN and OUT parameters
  • Example#1211 - Inserting a binary large object (BLOB) directly from a file
  • Example#1212 - A db2_client_info example
  • Example#1213 - Closing a connection
  • Example#1214 - Retrieving an SQLSTATE value for a failed connection attempt
  • Example#1215 - Retrieving the error message returned by a failed connection attempt
  • Example#1216 - Creating a cataloged connection
  • Example#1217 - Creating an uncataloged connection
  • Example#1218 - Creating a connection with autocommit off by default
  • Example#1219 - i5/OS best performance
  • Example#1220 - Using trusted context
  • Example#1221 - A db2_escape_string example
  • Example#1222 - Creating a table with db2_exec
  • Example#1223 - Executing a SELECT statement with a scrollable cursor
  • Example#1224 - Returning XML data as an SQL ResultSet
  • Example#1225 - Performing a "JOIN" with XML data
  • Example#1226 - Returning SQL data as part of a larger XML document
  • Example#1227 - Preparing and executing an SQL statement with parameter markers
  • Example#1228 - Calling a stored procedure with an OUT parameter
  • Example#1229 - Returning XML data as an SQL ResultSet
  • Example#1230 - Performing a "JOIN" with XML data
  • Example#1231 - Returning SQL data as part of a larger XML document
  • Example#1232 - Iterating through a forward-only cursor
  • Example#1233 - Retrieving specific rows with db2_fetch_array from a scrollable cursor
  • Example#1234 - Iterating through a forward-only cursor
  • Example#1235 - Retrieving specific rows with db2_fetch_assoc from a scrollable cursor
  • Example#1236 - Iterating through a forward-only cursor
  • Example#1237 - Retrieving specific rows with db2_fetch_both from a scrollable cursor
  • Example#1238 - A db2_fetch_object example
  • Example#1239 - Iterating through a result set
  • Example#1240 - i5/OS recommended alternatives to db2_fetch_row/db2_result
  • Example#1241 - Setting and retrieving parameters through a connection resource
  • Example#1242 - A db2_last_insert_id example
  • Example#1243 - Iterating through different types of data
  • Example#1244 - Calling a stored procedure that returns multiple result sets
  • Example#1245 - Retrieving the number of fields in a result set
  • Example#1246 - Closing a persistent connection
  • Example#1247 - A db2_pconnect example
  • Example#1248 - Using trusted context
  • Example#1249 - Preparing and executing an SQL statement with parameter markers
  • Example#1250 - A db2_result example
  • Example#1251 - Rolling back a DELETE statement
  • Example#1252 - A db2_server_info example
  • Example#1253 - Setting one parameter with a connection resource
  • Example#1254 - Setting multiple parameters with a connection resource
  • Example#1255 - Setting multiple parameters with an invalid key
  • Example#1256 - Setting multiple parameters with an invalid value
  • Example#1257 - Setting multiple parameters with a connection resource and the wrong type
  • Example#1258 - Setting multiple parameters with the wrong resource
  • Example#1259 - Putting it all together
  • Example#1260 - i5/OS cursors are read-only
  • Example#1261 - Informix affected rows
  • Example#1262 - Closing a Informix connection
  • Example#1263 - Connect to a Informix database
  • Example#1264 - ifx_do Example
  • Example#1265 - ifx_errormsg example
  • Example#1266 - Informix fetch rows
  • Example#1267 - Informix SQL fieldproperties
  • Example#1268 - Fieldnames and SQL fieldtypes
  • Example#1269 - Retrieve Informix sqlca.sqlerrd[x] values
  • Example#1270 - Informix results as HTML table
  • Example#1271 - ifx_num_fields Example
  • Example#1272 - Show all rows of the "orders" table as a HTML table
  • Example#1273 - Insert some values into the "catalog" table
  • Example#1274 - Example usage of PassEnv for Ingres
  • Example#1275 - Simple Ingres Example
  • Example#1276 - ingres_charset - Get the installation character set
  • Example#1277 - Open a connection to an Ingres database
  • Example#1278 - Get cursor name for a query resource
  • Example#1279 - Get the last Ingres error number generated
  • Example#1280 - Get a message for the last error generated
  • Example#1281 - Get the last SQLSTATE error code generated
  • Example#1282 - Escape special characters for use in a query
  • Example#1283 - Fetch a row of result into an array
  • Example#1284 - Fetch a row into an associative array
  • Example#1285 - Fetch a row into an object
  • Example#1286 - Get the return value from a procedure call
  • Example#1287 - Fetch a row of result into an enumerated array
  • Example#1288 - Free a result resource
  • Example#1289 - Send a simple select
  • Example#1290 - Passing query parameters to ingres_query
  • Example#1291 - Inserting a BLOB with parameter types
  • Example#1292 - Position the cursor on the 3rd row
  • Example#1293 - Set date_format to ISO4
  • Example#1294 - Set timezone to HONG-KONG
  • Example#1295 - Issue a simple un-buffered select
  • Example#1296 - Passing query parameters to ingres_unbuffered_query
  • Example#1297 - Inserting a BLOB with parameter types
  • Example#1298 - MaxDB extension overview example
  • Example#1299 - Example for use of SELECT INTO statements
  • Example#1300 - Example fore using database procedures
  • Example#1301 - 面向对象风格
  • Example#1302 - 过程化风格
  • Example#1303 - 面向对象风格
  • Example#1304 - 过程化风格
  • Example#1305 - 面向对象风格
  • Example#1306 - 过程化风格
  • Example#1307 - 面向对象风格
  • Example#1308 - 过程化风格
  • Example#1309 - 面向对象风格
  • Example#1310 - 过程化风格
  • Example#1311 - maxdb_connect_errno sample
  • Example#1312 - maxdb_connect_error sample
  • Example#1313 - 面向对象风格
  • Example#1314 - 过程化风格
  • Example#1315 - 面向对象风格
  • Example#1316 - 过程化风格
  • Example#1317 - 过程化风格
  • Example#1318 - 面向对象风格
  • Example#1319 - 过程化风格
  • Example#1320 - 面向对象风格
  • Example#1321 - 过程化风格
  • Example#1322 - 面向对象风格
  • Example#1323 - 过程化风格
  • Example#1324 - 面向对象风格
  • Example#1325 - 过程化风格
  • Example#1326 - 面向对象风格
  • Example#1327 - 过程化风格
  • Example#1328 - 面向对象风格
  • Example#1329 - 过程化风格
  • Example#1330 - 面向对象风格
  • Example#1331 - 过程化风格
  • Example#1332 - 面向对象风格
  • Example#1333 - 过程化风格
  • Example#1334 - 面向对象风格
  • Example#1335 - 过程化风格
  • Example#1336 - 面向对象风格
  • Example#1337 - 过程化风格
  • Example#1338 - 面向对象风格
  • Example#1339 - 过程化风格
  • Example#1340 - 面向对象风格
  • Example#1341 - 过程化风格
  • Example#1342 - 面向对象风格
  • Example#1343 - 过程化风格
  • Example#1344 - maxdb_get_client_info
  • Example#1345 - maxdb_get_client_version
  • Example#1346 - 面向对象风格
  • Example#1347 - 过程化风格
  • Example#1348 - 面向对象风格
  • Example#1349 - 过程化风格
  • Example#1350 - 面向对象风格
  • Example#1351 - 过程化风格
  • Example#1352 - 面向对象风格
  • Example#1353 - 过程化风格
  • Example#1354 - 面向对象风格
  • Example#1355 - 过程化风格
  • Example#1356 - 面向对象风格
  • Example#1357 - 过程化风格
  • Example#1358 - 面向对象风格
  • Example#1359 - 过程化风格
  • Example#1360 - 面向对象风格
  • Example#1361 - 过程化风格
  • Example#1362 - 面向对象风格
  • Example#1363 - 过程化风格
  • Example#1364 - 面向对象风格
  • Example#1365 - 过程化风格
  • Example#1366 - 面向对象风格
  • Example#1367 - 过程化风格
  • Example#1368 - 面向对象风格
  • Example#1369 - 过程化风格
  • Example#1370 - 面向对象风格
  • Example#1371 - 过程化风格
  • Example#1372 - 面向对象风格
  • Example#1373 - 过程化风格
  • Example#1374 - 面向对象风格
  • Example#1375 - 过程化风格
  • Example#1376 - 过程化风格
  • Example#1377 - 面向对象风格
  • Example#1378 - 过程化风格
  • Example#1379 - 面向对象风格
  • Example#1380 - 过程化风格
  • Example#1381 - 面向对象风格
  • Example#1382 - 过程化风格
  • Example#1383 - 面向对象风格
  • Example#1384 - 过程化风格
  • Example#1385 - 面向对象风格
  • Example#1386 - 过程化风格
  • Example#1387 - 面向对象风格
  • Example#1388 - 过程化风格
  • Example#1389 - 过程化风格 (SELECT INTO)
  • Example#1390 - 过程化风格 (DB procedure)
  • Example#1391 - 面向对象风格 (extended syntax)
  • Example#1392 - 面向对象风格
  • Example#1393 - 过程化风格
  • Example#1394 - 面向对象风格
  • Example#1395 - 过程化风格
  • Example#1396 - 面向对象风格
  • Example#1397 - 过程化风格
  • Example#1398 - 面向对象风格
  • Example#1399 - 过程化风格
  • Example#1400 - 面向对象风格
  • Example#1401 - 过程化风格
  • Example#1402 - 面向对象风格
  • Example#1403 - 过程化风格
  • Example#1404 - 面向对象风格
  • Example#1405 - 过程化风格
  • Example#1406 - 面向对象风格
  • Example#1407 - 过程化风格
  • Example#1408 - 面向对象风格
  • Example#1409 - 过程化风格
  • Example#1410 - 面向对象风格
  • Example#1411 - 过程化风格
  • Example#1412 - 面向对象风格
  • Example#1413 - 过程化风格
  • Example#1414 - 面向对象风格
  • Example#1415 - 过程化风格
  • Example#1416 - 面向对象风格
  • Example#1417 - 过程化风格
  • Example#1418 - 面向对象风格
  • Example#1419 - 过程化风格
  • Example#1420 - 面向对象风格
  • Example#1421 - 过程化风格
  • Example#1422 -
  • Example#1423 -
  • Example#1424 -
  • Example#1425 -
  • Example#1426 -
  • Example#1427 -
  • Example#1428 -
  • Example#1429 -
  • Example#1430 -
  • Example#1431 -
  • Example#1432 -
  • Example#1433 -
  • Example#1434 -
  • Example#1435 -
  • Example#1436 -
  • Example#1437 - 查询串语法的读取首选项URI链接
  • Example#1438 - Setting read preferences with array syntax for tag sets
  • Example#1439 - Passing a WriteConcern to a write operation
  • Example#1440 - Connection string WriteConcerns
  • Example#1441 - MongoDB::setWriteConcern and MongoCollection::setWriteConcern
  • Example#1442 - Unacknowledged WriteConcern, followed with Acknowledged Write
  • Example#1443 - Acknowledged Writes
  • Example#1444 - Majority Acknowledged Write
  • Example#1445 - Acknowledged and Journaled Write
  • Example#1446 - 针对“admin”数据库的认证
  • Example#1447 - 针对一般数据库的认证
  • Example#1448 - 链接到一个复制
  • Example#1449 -
  • Example#1450 -
  • Example#1451 -
  • Example#1452 -
  • Example#1453 -
  • Example#1454 - Inheriting read preferences from the database level down to the cursor
  • Example#1455 -
  • Example#1456 -
  • Example#1457 -
  • Example#1458 -
  • Example#1459 -
  • Example#1460 -
  • Example#1461 -
  • Example#1462 - MongoClient 基本用法
  • Example#1463 - MongoClient::close 例子
  • Example#1464 - MongoClient::__construct 集群例子
  • Example#1465 - 连接到一个域套接字（domain socket）
  • Example#1466 - MongoClient::__construct 验证的例子
  • Example#1467 - MongoClient::__construct 读取选项例子
  • Example#1468 - MongoClient::getConnections 例子
  • Example#1469 - MongoClient::getReadPreference 返回值例子
  • Example#1470 - MongoClient::getWriteConcern return value example
  • Example#1471 - MongoClient::killCursor example
  • Example#1472 - MongoClient::listDBs 例子
  • Example#1473 - MongoClient::selectCollection 例子
  • Example#1474 - MongoClient::setReadPreference 标签集数组语法的例子
  • Example#1475 - MongoClient::setWriteConcern example
  • Example#1476 - 选择一个数据库
  • Example#1477 - MongoDB::command "distinct"实例
  • Example#1478 - MongoDB::command "distinct"实例
  • Example#1479 - MongoDB::command MapReduce实例
  • Example#1480 - MongoDB::command "textSearch"实例
  • Example#1481 - MongoDB::command "geoNear"实例
  • Example#1482 - MongoDB::createCollection 固定大小集合 实例
  • Example#1483 - MongoDB::createDBRef实例
  • Example#1484 - MongoDB::createDBRef实例
  • Example#1485 - MongoDB::drop 例子
  • Example#1486 - 简单的 MongoDB::execute 实例
  • Example#1487 - 带参数的 MongoDB::execute 实例
  • Example#1488 - 作用域实例
  • Example#1489 - MongoDB::getCollectionInfo example
  • Example#1490 - MongoDB::getCollectionNames example
  • Example#1491 - MongoDB::getDBRef example
  • Example#1492 - MongoDB::getGridFS example
  • Example#1493 - MongoDB::getReadPreference return value example
  • Example#1494 - MongoDB::getWriteConcern return value example
  • Example#1495 - MongoDB::lastError NULL error example
  • Example#1496 - MongoDB::lastError duplicate key example
  • Example#1497 - MongoDB::listCollections example
  • Example#1498 - MongoDB::repair example
  • Example#1499 - MongoDB::setReadPreference tag set array syntax example
  • Example#1500 - MongoDB::setWriteConcern example
  • Example#1501 - MongoCollection::aggregate example
  • Example#1502 - MongoCollection::aggregate example
  • Example#1503 - MongoCollection::aggregate example
  • Example#1504 - MongoCollection::aggregate with command options
  • Example#1505 - MongoCollection::aggregateCursor example
  • Example#1506 - MongoCollection::aggregateCursor example with different initial batch size
  • Example#1507 - MongoCollection::batchInsert example
  • Example#1508 - MongoCollection::batchInsert example with ignoring errors
  • Example#1509 - MongoCollection::count 例子
  • Example#1510 - MongoCollection::createDBRef 例子
  • Example#1511 - MongoCollection::createIndex example
  • Example#1512 - Geospatial Indexing
  • Example#1513 - Drop duplicates example
  • Example#1514 - MongoCollection::deleteIndex example
  • Example#1515 - MongoCollection::deleteIndexes 例子
  • Example#1516 - MongoCollection::distinct 例子
  • Example#1517 - 内嵌文档的 MongoCollection::distinct 例子
  • Example#1518 - MongoCollection::drop 例子
  • Example#1519 - MongoCollection::ensureIndex example
  • Example#1520 - Geospatial Indexing
  • Example#1521 - Drop duplicates example
  • Example#1522 - MongoCollection::find 例子
  • Example#1523 - MongoCollection::find 例子
  • Example#1524 - 使用 $where 的 MongoCollection::find 例子
  • Example#1525 - 使用 $in 的 MongoCollection::find 例子
  • Example#1526 - 以数组形式获取结果集
  • Example#1527 - MongoCollection::findAndModify example
  • Example#1528 - MongoCollection::findAndModify error handling
  • Example#1529 - MongoCollection::findOne document by its id.
  • Example#1530 - MongoCollection::findOne document by some condition.
  • Example#1531 - MongoCollection::getDBRef example
  • Example#1532 - MongoCollection::getIndexInfo example
  • Example#1533 - MongoCollection::getName 例子
  • Example#1534 - MongoCollection::getReadPreference return value example
  • Example#1535 - MongoCollection::getWriteConcern return value example
  • Example#1536 - MongoCollection::group example
  • Example#1537 - MongoCollection::group example
  • Example#1538 - Passing a keys function
  • Example#1539 - MongoCollection::insert _id 例子
  • Example#1540 - MongoCollection::insert 确认写入的例子
  • Example#1541 - MongoCollection::parallelCollectionScan example
  • Example#1542 - MongoCollection::remove 的 justOne 例子
  • Example#1543 - MongoCollection::save 例子
  • Example#1544 - MongoCollection::setReadPreference tag set array syntax example
  • Example#1545 - MongoDB::setWriteConcern example
  • Example#1546 - MongoCollection::toIndexString example
  • Example#1547 - MongoCollection::__toString example
  • Example#1548 - MongoCollection::update
  • Example#1549 - MongoCollection::update upsert examples
  • Example#1550 - MongoCollection::update multiple example
  • Example#1551 - MongoCursor basic usage
  • Example#1552 - Iterating over MongoCursor
  • Example#1553 - Adding options to MongoCursor
  • Example#1554 - Adding a comment with MongoCursor::addOption example
  • Example#1555 - MongoCursor::addOption example
  • Example#1556 - MongoCursor::awaitData example
  • Example#1557 - MongoCursor::batchSize and combinations with MongoCursor::limit
  • Example#1558 - MongoCursor::count example
  • Example#1559 - MongoCursor::doQuery example
  • Example#1560 - MongoCursor::explain example
  • Example#1561 - MongoCursor::getReadPreference return value example
  • Example#1562 - MongoCursor::info example
  • Example#1563 - MongoCursor::maxTimeMS example
  • Example#1564 - MongoCursor::setFlag example
  • Example#1565 - MongoCursor::setReadPreference tag set array syntax example
  • Example#1566 - MongoCursor::slaveOkay example
  • Example#1567 - MongoCursor::sort example
  • Example#1568 - MongoCursor::tailable example
  • Example#1569 - MongoCursor::timeout example
  • Example#1570 - MongoId::__construct 例子
  • Example#1571 - 参数的例子
  • Example#1572 - MongoId::__toString 例子
  • Example#1573 - MongoCode::__construct 例子
  • Example#1574 - 使用具有 $where 的 MongoCode
  • Example#1575 - MongoCode::__toString 例子
  • Example#1576 - Storing dates with MongoDate
  • Example#1577 - MongoDate::__construct 例子
  • Example#1578 - MongoDate::toDateTime example
  • Example#1579 - 正则表达式
  • Example#1580 - MongoRegex::__construct 例子
  • Example#1581 - MongoRegex::__toString 例子
  • Example#1582 -
  • Example#1583 - 链接文档
  • Example#1584 - Creating MongoDBRef links
  • Example#1585 - MongoDBRef::create 例子
  • Example#1586 - MongoCollection::createDBRef 例子
  • Example#1587 - MongoGridFS::findOne example
  • Example#1588 - MongoGridFS::storeBytes with additional metadata
  • Example#1589 - MongoGridFS::storeFile with additional metadata
  • Example#1590 - MongoGridFS::storeUpload HTML form example
  • Example#1591 - MongoGridFSFile::getBytes example
  • Example#1592 - MongoGridFSFile::getResource example
  • Example#1593 - MongoGridFSFile::write example
  • Example#1594 - MongoLog::setCallback example
  • Example#1595 - Changing pool size
  • Example#1596 - Mongo::setPoolSize example
  • Example#1597 - Changing pool size
  • Example#1598 - Mongo::setPoolSize example
  • Example#1599 - MongoResultException::getDocument 例子
  • Example#1600 - Catching MongoDuplicateKeyException
  • Example#1601 - Catching MongoProtocolException
  • Example#1602 - MongoDB\Driver\Manager::__construct basic example
  • Example#1603 - MongoDB\Driver\Manager::__construct basic examples
  • Example#1604 - MongoDB\Driver\Manager::executeBulkWrite example
  • Example#1605 - MongoDB\Driver\Manager::executeCommand with a command returning a single result document
  • Example#1606 - MongoDB\Driver\Manager::executeCommand with a command returning a cursor
  • Example#1607 - MongoDB\Driver\Manager::executeQuery example
  • Example#1608 - MongoDB\Driver\Manager::getReadConcern example
  • Example#1609 - MongoDB\Driver\Manager::getReadPreference example
  • Example#1610 - MongoDB\Driver\Manager::getServers example
  • Example#1611 - MongoDB\Driver\Manager::getWriteConcern example
  • Example#1612 - Composing MongoDB\Driver\Command to provide a helper to create collections
  • Example#1613 - MongoDB\Driver\Command::__construct example
  • Example#1614 - MongoDB\Driver\Query::__construct example
  • Example#1615 - Mixed write operations are grouped by type
  • Example#1616 - Ordered write operations causing an error
  • Example#1617 - MongoDB\Driver\BulkWrite::__construct example
  • Example#1618 - MongoDB\Driver\BulkWrite::count example
  • Example#1619 - MongoDB\Driver\BulkWrite::delete example
  • Example#1620 - MongoDB\Driver\BulkWrite::insert example
  • Example#1621 - MongoDB\Driver\BulkWrite::update example
  • Example#1622 - MongoDB\Driver\WriteConcern::bsonSerialize with majority write concern
  • Example#1623 - MongoDB\Driver\WriteConcern::bsonSerialize with wtimeout and journal
  • Example#1624 - MongoDB\Driver\WriteConcern::__construct example
  • Example#1625 - MongoDB\Driver\WriteConcern::getJournal example
  • Example#1626 - MongoDB\Driver\WriteConcern::getW example
  • Example#1627 - MongoDB\Driver\WriteConcern::getWtimeout example
  • Example#1628 - MongoDB\Driver\ReadPreference::bsonSerialize with primary read preference
  • Example#1629 - MongoDB\Driver\ReadPreference::bsonSerialize with secondary read preference and tag sets
  • Example#1630 - MongoDB\Driver\ReadPreference::bsonSerialize with secondary read preference and max staleness
  • Example#1631 - MongoDB\Driver\ReadPreference::__construct example
  • Example#1632 - MongoDB\Driver\ReadPreference::getMaxStalenessSeconds example
  • Example#1633 - MongoDB\Driver\ReadPreference::getMode example
  • Example#1634 - MongoDB\Driver\ReadPreference::getTagSets example
  • Example#1635 - MongoDB\Driver\ReadConcern::bsonSerialize with empty read concern
  • Example#1636 - MongoDB\Driver\ReadConcern::bsonSerialize with local read concern
  • Example#1637 - MongoDB\Driver\ReadConcern::__construct example
  • Example#1638 - MongoDB\Driver\ReadConcern::getLevel example
  • Example#1639 - MongoDB\Driver\Cursor::getId example
  • Example#1640 - MongoDB\Driver\Cursor::getServer example
  • Example#1641 - MongoDB\Driver\Cursor::isDead example
  • Example#1642 - MongoDB\Driver\Cursor::setTypeMap example
  • Example#1643 - MongoDB\Driver\Cursor::toArray example
  • Example#1644 - MongoDB\Driver\CursorId::__toString example
  • Example#1645 - MongoDB\Driver\Server::getHost example
  • Example#1646 - MongoDB\Driver\Server::getInfo example
  • Example#1647 - MongoDB\Driver\Server::getLatency example
  • Example#1648 - MongoDB\Driver\Server::getPort example
  • Example#1649 - MongoDB\Driver\WriteConcernError::getCode example
  • Example#1650 - MongoDB\Driver\WriteConcernError::getInfo example
  • Example#1651 - MongoDB\Driver\WriteConcernError::getMessage example
  • Example#1652 - MongoDB\Driver\WriteError::getCode example
  • Example#1653 - MongoDB\Driver\WriteError::getIndex example
  • Example#1654 - MongoDB\Driver\WriteError::getMessage example
  • Example#1655 - MongoDB\Driver\WriteResult::getDeletedCount example
  • Example#1656 - MongoDB\Driver\WriteResult::getInsertedCount example
  • Example#1657 - MongoDB\Driver\WriteResult::getMatchedCount example
  • Example#1658 - MongoDB\Driver\WriteResult::getModifiedCount example
  • Example#1659 - MongoDB\Driver\WriteResult::getServer example
  • Example#1660 - MongoDB\Driver\WriteResult::getUpsertedCount example
  • Example#1661 - MongoDB\Driver\WriteResult::getUpsertedIds example
  • Example#1662 - MongoDB\Driver\WriteResult::getWriteConcernError example
  • Example#1663 - MongoDB\Driver\WriteResult::getWriteErrors with a single error
  • Example#1664 - MongoDB\Driver\WriteResult::getWriteErrors with multiple errors
  • Example#1665 - MongoDB\Driver\WriteResult::isAcknowledged with acknowledged write concern
  • Example#1666 - MongoDB\Driver\WriteResult::isAcknowledged with unacknowledged write concern
  • Example#1667 - MongoDB\BSON\fromJSON example
  • Example#1668 - MongoDB\BSON\fromPHP example
  • Example#1669 - MongoDB\BSON\toJSON example
  • Example#1670 - MongoDB\BSON\toPHP example
  • Example#1671 - MongoDB\BSON\Binary::__construct example
  • Example#1672 - MongoDB\BSON\Binary::getData example
  • Example#1673 - MongoDB\BSON\Binary::getType example
  • Example#1674 - MongoDB\BSON\Binary::__toString example
  • Example#1675 - MongoDB\BSON\Decimal128::__construct example
  • Example#1676 - MongoDB\BSON\Decimal128::__toString example
  • Example#1677 - MongoDB\BSON\Javascript::__construct example
  • Example#1678 - MongoDB\BSON\Javascript::getCode example
  • Example#1679 - MongoDB\BSON\Javascript::getScope example
  • Example#1680 - MongoDB\BSON\Javascript::__toString example
  • Example#1681 - MongoDB\BSON\MaxKey::__construct example
  • Example#1682 - MongoDB\BSON\MinKey::__construct example
  • Example#1683 - MongoDB\BSON\ObjectID::__construct example
  • Example#1684 - MongoDB\BSON\ObjectID::getTimestamp example
  • Example#1685 - MongoDB\BSON\ObjectID::__toString example
  • Example#1686 - MongoDB\BSON\Regex::__construct example
  • Example#1687 - MongoDB\BSON\Regex::getFlags example
  • Example#1688 - MongoDB\BSON\Regex::getPattern example
  • Example#1689 - MongoDB\BSON\Regex::__toString example
  • Example#1690 - MongoDB\BSON\Timestamp::__construct example
  • Example#1691 - MongoDB\BSON\Timestamp::__toString example
  • Example#1692 - MongoDB\BSON\UTCDateTime::__construct example
  • Example#1693 - MongoDB\BSON\UTCDatetime::toDateTime example
  • Example#1694 - MongoDB\BSON\UTCDateTime::__toString example
  • Example#1695 - MongoDB\BSON\Serializable::bsonSerialize returning an associative array for root document
  • Example#1696 - MongoDB\BSON\Serializable::bsonSerialize returning a sequential array for root document
  • Example#1697 - MongoDB\BSON\Serializable::bsonSerialize returning an associative array for document field
  • Example#1698 - MongoDB\BSON\Serializable::bsonSerialize returning a sequential array for document field
  • Example#1699 - MongoDB\BSON\Unserializable::bsonUnserialize example
  • Example#1700 - MongoDB\Driver\Exception\WriteException::getWriteResult example
  • Example#1701 - mSQL usage example
  • Example#1702 - msql_fetch_array example
  • Example#1703 - msql_fetch_object example
  • Example#1704 - msql_fetch_row example
  • Example#1705 - msql_query example
  • Example#1706 - mssql_bind example
  • Example#1707 - mssql_close 例子
  • Example#1708 - mssql_connect 例子
  • Example#1709 - mssql_data_seek example
  • Example#1710 - mssql_execute example
  • Example#1711 - mssql_fetch_array example
  • Example#1712 - mssql_fetch_assoc example
  • Example#1713 - mssql_fetch_batch example
  • Example#1714 - mssql_fetch_field example
  • Example#1715 - mssql_fetch_object example
  • Example#1716 - mssql_fetch_row example
  • Example#1717 - mssql_field_length example
  • Example#1718 - mssql_field_name example
  • Example#1719 - Using mssql_field_seek on the example for mssql_fetch_field
  • Example#1720 - mssql_field_type example
  • Example#1721 - mssql_free_result example
  • Example#1722 - mssql_free_statement example
  • Example#1723 - mssql_get_last_message example
  • Example#1724 - mssql_guid_string example
  • Example#1725 - mssql_init example
  • Example#1726 - mssql_min_error_severity example
  • Example#1727 - mssql_min_message_severity example
  • Example#1728 - mssql_next_result example
  • Example#1729 - mssql_num_fields example
  • Example#1730 - mssql_num_rows example
  • Example#1731 - mssql_pconnect using the new_link parameter
  • Example#1732 - mssql_query example
  • Example#1733 - mssql_result example
  • Example#1734 - Faster alternative to above example
  • Example#1735 - mssql_rows_affected example
  • Example#1736 - mssql_select_db example
  • Example#1737 - Escaping the database name with square brackets
  • Example#1738 - Comparing the three MySQL APIs
  • Example#1739 - Configure commands for using mysqlnd or libmysqlclient
  • Example#1740 - Unbuffered query example: mysqli
  • Example#1741 - Unbuffered query example: pdo_mysql
  • Example#1742 - Unbuffered query example: mysql
  • Example#1743 - Problems with setting the character set with SQL
  • Example#1744 - Setting the character set example: mysqli
  • Example#1745 - Setting the character set example: pdo_mysql
  • Example#1746 - Setting the character set example: mysql
  • Example#1747 - Easy migration from the old mysql extension
  • Example#1748 - Object-oriented and procedural interface
  • Example#1749 - Bad coding style
  • Example#1750 - Special meaning of localhost
  • Example#1751 - Setting defaults
  • Example#1752 - Connecting to MySQL
  • Example#1753 - Navigation through buffered results
  • Example#1754 - Navigation through unbuffered results
  • Example#1755 - Text protocol returns strings by default
  • Example#1756 - Native data types with mysqlnd and connection option
  • Example#1757 - First stage: prepare
  • Example#1758 - Second stage: bind and execute
  • Example#1759 - INSERT prepared once, executed multiple times
  • Example#1760 - Less round trips using multi-INSERT SQL
  • Example#1761 - Native datatypes
  • Example#1762 - Output variable binding
  • Example#1763 - Using mysqli_result to fetch results
  • Example#1764 - Buffered result set for flexible read out
  • Example#1765 - Calling a stored procedure
  • Example#1766 - Using session variables
  • Example#1767 - Fetching results from stored procedures
  • Example#1768 - Stored Procedures and Prepared Statements
  • Example#1769 - Stored Procedures and Prepared Statements using bind API
  • Example#1770 - Multiple Statements
  • Example#1771 - SQL Injection
  • Example#1772 - Setting auto commit mode with SQL and through the API
  • Example#1773 - Commit and rollback
  • Example#1774 - Accessing result set meta data
  • Example#1775 - Prepared statements metadata
  • Example#1776 - $mysqli->affected_rows example
  • Example#1777 - mysqli::autocommit example
  • Example#1778 - $mysqli->begin_transaction example
  • Example#1779 - mysqli::change_user example
  • Example#1780 - mysqli::character_set_name example
  • Example#1781 - mysqli_get_client_info
  • Example#1782 - mysqli_get_client_version
  • Example#1783 - mysqli::commit example
  • Example#1784 - $mysqli->connect_errno example
  • Example#1785 - $mysqli->connect_error example
  • Example#1786 - mysqli::__construct example
  • Example#1787 - Generating a Trace File
  • Example#1788 - mysqli->errno example
  • Example#1789 - $mysqli->error_list example
  • Example#1790 - $mysqli->error example
  • Example#1791 - $mysqli->field_count example
  • Example#1792 - mysqli::get_charset example
  • Example#1793 - mysqli_get_client_info
  • Example#1794 - A mysqli_get_client_stats example
  • Example#1795 - mysqli_get_client_version
  • Example#1796 - A mysqli_get_connection_stats example
  • Example#1797 - $mysqli->host_info example
  • Example#1798 - $mysqli->protocol_version example
  • Example#1799 - $mysqli->server_info example
  • Example#1800 - $mysqli->server_version example
  • Example#1801 - $mysqli->info example
  • Example#1802 - $mysqli->insert_id example
  • Example#1803 - mysqli::kill example
  • Example#1804 - mysqli::multi_query example
  • Example#1805 - mysqli::ping example
  • Example#1806 - A mysqli_poll example
  • Example#1807 - mysqli::prepare example
  • Example#1808 - mysqli::query example
  • Example#1809 - mysqli::real_connect 例子
  • Example#1810 - mysqli::real_escape_string example
  • Example#1811 - mysqli::rollback example
  • Example#1812 - mysqli::select_db example
  • Example#1813 - mysqli::set_charset example
  • Example#1814 - mysqli::set_local_infile_handler example
  • Example#1815 - $mysqli->sqlstate example
  • Example#1816 - mysqli::stat example
  • Example#1817 - $mysqli->thread_id example
  • Example#1818 - mysqli::use_result example
  • Example#1819 - $mysqli->warning_count example
  • Example#1820 - 面向对象风格
  • Example#1821 - 过程化风格
  • Example#1822 - 面向对象风格
  • Example#1823 - 过程化风格
  • Example#1824 - 面向对象风格
  • Example#1825 - 过程化风格
  • Example#1826 - 面向对象风格
  • Example#1827 - 过程化风格
  • Example#1828 - 面向对象风格
  • Example#1829 - 过程化风格
  • Example#1830 - 面向对象风格
  • Example#1831 - 过程化风格
  • Example#1832 - 面向对象风格
  • Example#1833 - 过程化风格
  • Example#1834 - 面向对象风格
  • Example#1835 - 过程化风格
  • Example#1836 - 面向对象风格
  • Example#1837 - 过程化风格
  • Example#1838 - 面向对象风格
  • Example#1839 - 过程化风格
  • Example#1840 - 面向对象风格
  • Example#1841 - 过程化风格
  • Example#1842 - 面向对象风格
  • Example#1843 - 过程化风格
  • Example#1844 - 面向对象风格
  • Example#1845 - 过程化风格
  • Example#1846 - 面向对象风格
  • Example#1847 - 过程化风格
  • Example#1848 - 面向对象风格
  • Example#1849 - 面向对象风格
  • Example#1850 - 过程化风格
  • Example#1851 - 面向对象风格
  • Example#1852 - 过程化风格
  • Example#1853 - 面向对象风格
  • Example#1854 - 过程化风格
  • Example#1855 - 面向对象风格
  • Example#1856 - 过程化风格
  • Example#1857 - 面向对象风格
  • Example#1858 - 过程化风格
  • Example#1859 - 面向对象风格
  • Example#1860 - 过程化风格
  • Example#1861 - A mysqli_result example comparing iterator usage
  • Example#1862 - 面向对象风格
  • Example#1863 - 过程化风格
  • Example#1864 - 面向对象风格
  • Example#1865 - 过程化风格
  • Example#1866 - 面向对象风格
  • Example#1867 - 过程化风格
  • Example#1868 - 面向对象风格
  • Example#1869 - 过程化风格
  • Example#1870 - 面向对象风格
  • Example#1871 - 过程化风格
  • Example#1872 - 面向对象风格
  • Example#1873 - 过程化风格
  • Example#1874 - 面向对象风格
  • Example#1875 - 过程化风格
  • Example#1876 - 面向对象风格
  • Example#1877 - 过程化风格
  • Example#1878 - 面向对象风格
  • Example#1879 - 过程化风格
  • Example#1880 - 面向对象风格
  • Example#1881 - 过程化风格
  • Example#1882 - 一个mysqli_get_cache_stats的示例
  • Example#1883 -
  • Example#1884 - MySQL 扩展概述范例
  • Example#1885 - mysql_affected_rows 例子
  • Example#1886 - 使用事务处理的 mysql_affected_rows 例子
  • Example#1887 - mysql_client_encoding 例子
  • Example#1888 - mysql_close 例子
  • Example#1889 - mysql_connect 例子
  • Example#1890 - mysql_connect 例子：使用 hostname:port 语法
  • Example#1891 - mysql_connect 例子：使用 ":/path/to/socket" 语法
  • Example#1892 - 替代 mysql_create_db 的例子
  • Example#1893 - mysql_data_seek 例子
  • Example#1894 - mysql_db_name 例子
  • Example#1895 - mysql_drop_db alternative example
  • Example#1896 - mysql_errno 例子
  • Example#1897 - mysql_error 例子
  • Example#1898 - mysql_escape_string 例子
  • Example#1899 - 相同字段名的查询
  • Example#1900 - mysql_fetch_array 使用 MYSQL_NUM
  • Example#1901 - mysql_fetch_array 使用 MYSQL_ASSOC
  • Example#1902 - mysql_fetch_array 使用 MYSQL_BOTH
  • Example#1903 - Query with aliased duplicate field names
  • Example#1904 - mysql_fetch_array with MYSQL_NUM
  • Example#1905 - mysql_fetch_array with MYSQL_ASSOC
  • Example#1906 - mysql_fetch_array with MYSQL_BOTH
  • Example#1907 - 扩展的 mysql_fetch_assoc 例子
  • Example#1908 - mysql_fetch_field
  • Example#1909 - mysql_fetch_field example
  • Example#1910 - mysql_fetch_object 例子
  • Example#1911 - mysql_fetch_object example
  • Example#1912 - mysql_fetch_object example
  • Example#1913 - Fetching one row with mysql_fetch_row
  • Example#1914 - mysql_field_name 例子
  • Example#1915 - mysql_field_name example
  • Example#1916 - mysql_field_type 例子
  • Example#1917 - mysql_field_type example
  • Example#1918 - A mysql_free_result example
  • Example#1919 - mysql_get_client_info 例子
  • Example#1920 - mysql_get_host_info 例子
  • Example#1921 - mysql_get_proto_info 例子
  • Example#1922 - mysql_get_server_info 例子
  • Example#1923 - 相关的 MySQL 语句
  • Example#1924 - mysql_insert_id 例子
  • Example#1925 - mysql_list_dbs 例子
  • Example#1926 - mysql_list_fields 例子
  • Example#1927 - mysql_list_processes 例子
  • Example#1928 - mysql_list_tables 例子
  • Example#1929 - mysql_num_rows 例子
  • Example#1930 - 无效的查询
  • Example#1931 - 有效的查询
  • Example#1932 - mysql_real_escape_string 例子
  • Example#1933 - mysql_real_escape_string requires a connection example
  • Example#1934 - An example SQL Injection Attack
  • Example#1935 - mysql_result 例子
  • Example#1936 - mysql_select_db 例子
  • Example#1937 - mysql_select_db example
  • Example#1938 - mysql_stat 例子
  • Example#1939 - mysql_tablename 例子
  • Example#1940 - mysql_thread_id 例子
  • Example#1941 - 启用插件(php.ini)
  • Example#1942 - 最基本的插件配置文件 (mysqlnd_ms_plugin.ini)
  • Example#1943 - 建议最基本的插件配置文件 (mysqlnd_ms_plugin.ini)
  • Example#1944 - 使用一个服务器同时作为 master 和 slave（仅用于测试！）
  • Example#1945 - 插件指定的配置文件 (mysqlnd_ms_plugin.ini)
  • Example#1946 - 开启一个负载均衡链接
  • Example#1947 - Executing statements
  • Example#1948 - 配置了一个 master 和一个 slave 的插件
  • Example#1949 - 陷阱：连接状态和 SQL 用户变量
  • Example#1950 - 配置一个 master 和一个 slave 的插件
  • Example#1951 - SQL hints 禁止连接切换
  • Example#1952 - 与同步延迟斗争
  • Example#1953 - Table creation on a slave
  • Example#1954 - 配置一个 master 和一个 slave 的插件
  • Example#1955 - 在事务中使用 SQL hints
  • Example#1956 - 事务相关负载均衡下的 trx_stickiness 设置
  • Example#1957 - Transaction aware
  • Example#1958 - General pattern for XA transactions
  • Example#1959 - Local and global transactions are mutually exclusive
  • Example#1960 - Transaction coordinator state store
  • Example#1961 - session 一致性：读取写入内容
  • Example#1962 - Requesting session consistency
  • Example#1963 - Maximum age/slave lag
  • Example#1964 - 限制 slave 延迟
  • Example#1965 - 不设置故障处理
  • Example#1966 - No slave within time limit
  • Example#1967 - 在 master 创建计数器表
  • Example#1968 - Plugin config: SQL for client-side GTID injection
  • Example#1969 - Transparent global transaction ID injection
  • Example#1970 - Plugin config: SQL for fetching GTID
  • Example#1971 - Obtaining GTID after injection
  • Example#1972 - Plugin config: Checking for a certain GTID
  • Example#1973 - Session consistency service level and GTID combined
  • Example#1974 - 使用 MySQL 5.6.5-m8 内置 GTID
  • Example#1975 - Recap: quality of service to request read your writes
  • Example#1976 - Plugin config: no special entries for caching
  • Example#1977 - Caching a slave request
  • Example#1978 - Read your writes and caching combined
  • Example#1979 - 手动故障转移，可选自动
  • Example#1980 - 手动故障转移
  • Example#1981 - Cluster node groups
  • Example#1982 - 通过 SQL hints 完成手动分区
  • Example#1983 - Plugin config: Fabric hosts instead of MySQL servers
  • Example#1984 - Manual partitioning using SQL hints
  • Example#1985 - Provoking a connection error
  • Example#1986 - 在查询执行时产生连接错误
  • Example#1987 - 产生一个连接错误
  • Example#1988 - 非常基础的错误处理
  • Example#1989 - Provoking a transient error
  • Example#1990 - 短错误尝试循环
  • Example#1991 - Enabling the plugin (php.ini)
  • Example#1992 - Basic plugin configuration (mysqlnd_ms_plugin.ini) for MySQL Replication
  • Example#1993 - Multiple primaries - multi master (php.ini)
  • Example#1994 - Primary copy with multiple primaries and paritioning
  • Example#1995 - Multiple primaries - multi master (php.ini)
  • Example#1996 - Synchronous update anywhere cluster
  • Example#1997 - General pattern for XA transactions
  • Example#1998 - Converting a PHP array (hash) into JSON format
  • Example#1999 - Using section names example
  • Example#2000 - List of anonymous slaves
  • Example#2001 - Master list using symbolic names
  • Example#2002 - Keywords to configure a server
  • Example#2003 - New roundrobin filter, old functionality
  • Example#2004 - The user filter replaces mysqlnd_ms_set_user_pick_server
  • Example#2005 - Common error message in case of configuration file issues (upto version 1.5.0)
  • Example#2006 - Improved configuration file validation since 1.5.0
  • Example#2007 - Possibly more precise error due to mysqlnd_ms.force_config_usage=1
  • Example#2008 - Minimum pluging configuration for use with MySQL Fabric
  • Example#2009 - Optional timeout for communication with Fabric
  • Example#2010 - Warnings about the violation of transaction boundaries
  • Example#2011 - Invalid filter sequence
  • Example#2012 - Random load balancing with random filter
  • Example#2013 - Random once load balancing with random filter
  • Example#2014 - Referencing error
  • Example#2015 - Assigning a weight for load balancing
  • Example#2016 - roundrobin filter
  • Example#2017 - Setting a callback
  • Example#2018 - Using a callback
  • Example#2019 - Returning random masters and slaves
  • Example#2020 - Manual partitioning
  • Example#2021 - Global limit on slave lag
  • Example#2022 - Optional master failover when failing to connect to slave (PECL/mysqlnd_ms < 1.4.0)
  • Example#2023 - New syntax since 1.4.0
  • Example#2024 - Disabling lazy connection
  • Example#2025 - String escaping on a lazy connection handle
  • Example#2026 - Master on write for consistent reads
  • Example#2027 - Using master to execute transactions
  • Example#2028 - No automatic failover, error handling pitfall
  • Example#2029 - Retry loop for transient errors
  • Example#2030 - SQL definition for the MySQL state store transaction table
  • Example#2031 - SQL definition for the MySQL state store transaction table
  • Example#2032 - SQL definition for the MySQL state store garbage collection table
  • Example#2033 - Using section names example
  • Example#2034 - List-like syntax
  • Example#2035 - Verify plugin activity in a non-threaded deployment model
  • Example#2036 - Recording statistics during shutdown
  • Example#2037 - Example demonstrating the usage of mysqlnd_ms constants
  • Example#2038 - mysqlnd_ms_dump_servers example
  • Example#2039 - mysqlnd_ms_get_last_gtid example
  • Example#2040 - mysqlnd_ms_get_last_used_connection example
  • Example#2041 - mysqlnd_ms_get_stats example
  • Example#2042 - mysqlnd_ms_match_wild example
  • Example#2043 - mysqlnd_ms_query_is_select example
  • Example#2044 - mysqlnd_ms_set_qos example
  • Example#2045 - mysqlnd_ms_set_user_pick_server example
  • Example#2046 - Enabling the plugin (php.ini)
  • Example#2047 - Using the MYSQLND_QC_ENABLE_SWITCH SQL hint
  • Example#2048 - Using the MYSQLND_QC_DISABLE_SWITCH SQL hint
  • Example#2049 - Example showing which type of statements are not cached
  • Example#2050 - Enabling caching for all statements using the mysqlnd_qc.cache_no_table ini setting
  • Example#2051 - Setting the TTL with the mysqlnd_qc.ttl ini setting
  • Example#2052 - Setting TTL with SQL hints
  • Example#2053 - Setting a callback with mysqlnd_qc_set_is_select
  • Example#2054 - Enabling the slam defense mechanism
  • Example#2055 - Collecting a query trace
  • Example#2056 - Setting the backtrace depth with the mysqlnd_qc.query_trace_bt_depth ini setting
  • Example#2057 - Collecting statistics data with the mysqlnd_qc.time_statistics ini setting
  • Example#2058 - Example mysqlnd_qc_get_cache_info usage
  • Example#2059 - Example mysqlnd_qc_get_normalized_query_trace_log usage
  • Example#2060 - Using a user-defined storage handler
  • Example#2061 - Using SQL hint constants
  • Example#2062 - Example mysqlnd_qc_set_cache_condition usage
  • Example#2063 - mysqlnd_qc_get_available_handlers example
  • Example#2064 - mysqlnd_qc_get_cache_info example
  • Example#2065 - mysqlnd_qc_get_core_stats example
  • Example#2066 - mysqlnd_qc_get_normalized_query_trace_log example
  • Example#2067 - mysqlnd_qc_get_query_trace_log example
  • Example#2068 - mysqlnd_qc_set_cache_condition example
  • Example#2069 - mysqlnd_qc_set_is_select example
  • Example#2070 - mysqlnd_qc_set_storage_handler example
  • Example#2071 - Enabling the plugin (php.ini)
  • Example#2072 - Pseudo-code: what a built-in class does
  • Example#2073 - Installing a proxy
  • Example#2074 - Proxy registration, mysqlnd_uh.enable=1
  • Example#2075 - Proxy installation disabled
  • Example#2076 - Connection proxy
  • Example#2077 - Prepared statement proxy
  • Example#2078 - Basic Monitoring
  • Example#2079 - MysqlndUhConnection::changeUser example
  • Example#2080 - MysqlndUhConnection::charsetName example
  • Example#2081 - MysqlndUhConnection::close example
  • Example#2082 - MysqlndUhConnection::connect example
  • Example#2083 - MysqlndUhConnection::endPSession example
  • Example#2084 - MysqlndUhConnection::escapeString example
  • Example#2085 - MysqlndUhConnection::getAffectedRows example
  • Example#2086 - MysqlndUhConnection::getErrorNumber example
  • Example#2087 - MysqlndUhConnection::getErrorString example
  • Example#2088 - MysqlndUhConnection::getFieldCount example
  • Example#2089 - MysqlndUhConnection::getHostInformation example
  • Example#2090 - MysqlndUhConnection::getLastInsertId example
  • Example#2091 - MysqlndUhConnection::getLastMessage example
  • Example#2092 - MysqlndUhConnection::getProtocolInformation example
  • Example#2093 - MysqlndUhConnection::getServerInformation example
  • Example#2094 - MysqlndUhConnection::getServerStatistics example
  • Example#2095 - MysqlndUhConnection::getServerVersion example
  • Example#2096 - MysqlndUhConnection::getSqlstate example
  • Example#2097 - MysqlndUhConnection::getStatistics example
  • Example#2098 - MysqlndUhConnection::getThreadId example
  • Example#2099 - MysqlndUhConnection::getWarningCount example
  • Example#2100 - MysqlndUhConnection::init example
  • Example#2101 - MysqlndUhConnection::kill example
  • Example#2102 - MysqlndUhConnection::listFields example
  • Example#2103 - MysqlndUhConnection::listMethod example
  • Example#2104 - MysqlndUhConnection::moreResults example
  • Example#2105 - MysqlndUhConnection::nextResult example
  • Example#2106 - MysqlndUhConnection::ping example
  • Example#2107 - MysqlndUhConnection::query example
  • Example#2108 - MysqlndUhConnection::queryReadResultsetHeader example
  • Example#2109 - MysqlndUhConnection::reapQuery example
  • Example#2110 - MysqlndUhConnection::refreshServer example
  • Example#2111 - MysqlndUhConnection::restartPSession example
  • Example#2112 - MysqlndUhConnection::selectDb example
  • Example#2113 - MysqlndUhConnection::sendClose example
  • Example#2114 - MysqlndUhConnection::sendQuery example
  • Example#2115 - MysqlndUhConnection::serverDumpDebugInformation example
  • Example#2116 - MysqlndUhConnection::setAutocommit example
  • Example#2117 - MysqlndUhConnection::setCharset example
  • Example#2118 - MysqlndUhConnection::setClientOption example
  • Example#2119 - MysqlndUhConnection::setServerOption example
  • Example#2120 - MysqlndUhConnection::simpleCommand example
  • Example#2121 - MysqlndUhConnection::simpleCommandHandleResponse example
  • Example#2122 - MysqlndUhConnection::sslSet example
  • Example#2123 - MysqlndUhConnection::stmtInit example
  • Example#2124 - MysqlndUhConnection::storeResult example
  • Example#2125 - MysqlndUhConnection::txCommit example
  • Example#2126 - MysqlndUhConnection::txRollback example
  • Example#2127 - MysqlndUhConnection::useResult example
  • Example#2128 - MysqlndUhPreparedStatement::execute example
  • Example#2129 - MysqlndUhPreparedStatement::prepare example
  • Example#2130 - mysqlnd_uh_convert_to_mysqlnd example
  • Example#2131 - mysqlnd_uh_set_connection_proxy example
  • Example#2132 - Enabling the plugin (php.ini)
  • Example#2133 - SQL table used for the Quickstart
  • Example#2134 - Basic example.
  • Example#2135 - mysqlnd_memcache_get_config example
  • Example#2136 - mysqlnd_memcache_set example with var_dump as a simple debugging callback.
  • Example#2137 - Basic query
  • Example#2138 - Inserting with bind variables
  • Example#2139 - Binding in the WHERE clause of a query
  • Example#2140 - Inserting and fetching a CLOB
  • Example#2141 - Using a PL/SQL stored function
  • Example#2142 - Using a PL/SQL stored procedure
  • Example#2143 - Calling a PL/SQL function that returns a REF CURSOR
  • Example#2144 - user_oci8_probes.d for tracing all user-level PHP OCI8 Static Probes with DTrace
  • Example#2145 - oci_bind_array_by_name example
  • Example#2146 - oci_bind_by_name 例子
  • Example#2147 - oci_bind_by_name 例子
  • Example#2148 - oci_bind_by_name 例子
  • Example#2149 - Inserting data with oci_bind_by_name
  • Example#2150 - Binding once for multiple executions
  • Example#2151 - Binding with a foreach loop
  • Example#2152 - Binding in a WHERE clause
  • Example#2153 - Binding with a LIKE clause
  • Example#2154 - Binding with REGEXP_LIKE
  • Example#2155 - Binding Multiple Values in an IN Clause
  • Example#2156 - Binding a ROWID returned by a query
  • Example#2157 - Binding a ROWID on INSERT
  • Example#2158 - Binding for a PL/SQL stored function
  • Example#2159 - Binding parameters for a PL/SQL stored procedure
  • Example#2160 - Binding a CLOB column
  • Example#2161 - oci_client_version example
  • Example#2162 - Closing a connection
  • Example#2163 - Database connections are not closed until all references are closed
  • Example#2164 - Closing a connection opened more than once
  • Example#2165 - Connections are closed when variables go out of scope
  • Example#2166 - oci_commit 例子
  • Example#2167 - oci_commit example
  • Example#2168 - oci_connect 例子
  • Example#2169 - Basic oci_connect using Easy Connect syntax
  • Example#2170 - Basic oci_connect using a Network Connect name
  • Example#2171 - oci_connect with an explicit character set
  • Example#2172 - Using multiple calls to oci_connect
  • Example#2173 - oci_define_by_name 例子
  • Example#2174 - 连接错误后显示 Oracle 错误信息
  • Example#2175 - 语法解析错误后显示 Oracle 错误信息
  • Example#2176 - 执行错误后显示 Oracle 错误信息和出错的语句
  • Example#2177 - oci_execute for queries
  • Example#2178 - oci_execute without specifying a mode example
  • Example#2179 - oci_execute with OCI_NO_AUTO_COMMIT example
  • Example#2180 - oci_execute with different commit modes example
  • Example#2181 - oci_execute with OCI_DESCRIBE_ONLY example
  • Example#2182 - oci_fetch_all 例子
  • Example#2183 - oci_fetch_all example
  • Example#2184 - oci_fetch_all example with OCI_FETCHSTATEMENT_BY_ROW
  • Example#2185 - oci_fetch_all with OCI_NUM
  • Example#2186 - oci_fetch_array with OCI_BOTH
  • Example#2187 - oci_fetch_array with OCI_NUM
  • Example#2188 - oci_fetch_array with OCI_ASSOC
  • Example#2189 - oci_fetch_array with OCI_RETURN_NULLS
  • Example#2190 - oci_fetch_array with OCI_RETURN_LOBS
  • Example#2191 - oci_fetch_array with case sensitive column names
  • Example#2192 - oci_fetch_array with columns having duplicate names
  • Example#2193 - oci_fetch_array with DATE columns
  • Example#2194 - oci_fetch_array with REF CURSOR
  • Example#2195 - Pagination with oci_fetch_array using a LIMIT-like query
  • Example#2196 - oci_fetch_array with Oracle Database 12c Implicit Result Sets
  • Example#2197 - oci_fetch_assoc Example
  • Example#2198 - oci_fetch_object example
  • Example#2199 - oci_fetch_object with case sensitive column names
  • Example#2200 - oci_fetch_object with LOBs
  • Example#2201 - oci_fetch_row Example
  • Example#2202 - oci_fetch with defined variables
  • Example#2203 - oci_fetch with oci_result
  • Example#2204 - oci_field_name 例子
  • Example#2205 - oci_field_size例子
  • Example#2206 - oci_field_type 例子
  • Example#2207 - Fetching Implicit Result Sets in a loop
  • Example#2208 - Getting child statement handles individually
  • Example#2209 - Explicitly setting the Prefetch Count
  • Example#2210 - Implicit Result Set example without using oci_get_implicit_resultset
  • Example#2211 - oci_new_connect 例子
  • Example#2212 - oci_new_connect example
  • Example#2213 - 在 Oracle 的存储过程中使用 REF CURSOR
  • Example#2214 - 在 Oracle 的 select 语句中使用 REF CURSOR
  • Example#2215 - oci_new_descriptor 例子
  • Example#2216 - oci_new_descriptor 例子
  • Example#2217 - oci_num_fields 例子
  • Example#2218 - oci_num_rows 例子
  • Example#2219 - oci_rollback example
  • Example#2220 - Rolling back to a SAVEPOINT example
  • Example#2221 - oci_server_version 例子
  • Example#2222 - Setting the action
  • Example#2223 - Setting the client identifier to the application user
  • Example#2224 - Setting the client information
  • Example#2225 - Two scripts can use different versions of myfunc() at the same time
  • Example#2226 - Setting the module name
  • Example#2227 - Changing the default prefetch value for a query
  • Example#2228 - Changing the default prefetch for a REF CURSOR fetch
  • Example#2229 - Setting the prefetch value when passing a REF CURSOR back to Oracle
  • Example#2230 - oci_statement_type 例子
  • Example#2231 - Creating a Paradox database with two fields
  • Example#2232 - Turn a paradox date into a human readable form
  • Example#2233 - Set the date/time fields in a paradox database to the current date/time
  • Example#2234 - Opening a Paradox database
  • Example#2235 - Opening a Paradox database
  • Example#2236 - Turn a paradox timestamp into a human readable form
  • Example#2237 - PostgreSQL extension overview example
  • Example#2238 - pg_affected_rows 例子
  • Example#2239 - pg_close 例子
  • Example#2240 - 使用 pg_connect
  • Example#2241 - pg_connection_busy 例子
  • Example#2242 - pg_connection_reset 例子
  • Example#2243 - pg_connection_status 例子
  • Example#2244 - pg_connection_status 例子
  • Example#2245 - pg_convert example
  • Example#2246 - pg_copy_from example
  • Example#2247 - pg_dbname 例子
  • Example#2248 - pg_delete 例子
  • Example#2249 - pg_end_copy 例子
  • Example#2250 - pg_escape_identifier example
  • Example#2251 - pg_escape_literal example
  • Example#2252 - Using pg_execute
  • Example#2253 - pg_fetch_all_columns example
  • Example#2254 - pg_fetch_all 例子
  • Example#2255 - pg_fetch_array
  • Example#2256 - pg_fetch_assoc 例子
  • Example#2257 - pg_fetch_object
  • Example#2258 - pg_fetch_row 例子
  • Example#2259 - pg_field_is_null 例子
  • Example#2260 - 获取字段信息
  • Example#2261 - Getting table information about a field
  • Example#2262 - Getting information about fields
  • Example#2263 - pg_free_result example
  • Example#2264 - PostgreSQL NOTIFY 消息
  • Example#2265 - PostgreSQL 后端 PID
  • Example#2266 - pg_insert example
  • Example#2267 - pg_last_notice example
  • Example#2268 - pg_lo_export example
  • Example#2269 - pg_lo_import 例子
  • Example#2270 - pg_lo_truncate example
  • Example#2271 - pg_lo_unlink example
  • Example#2272 - 取得表的元数据
  • Example#2273 - pg_parameter_status example
  • Example#2274 - Using pg_pconnect
  • Example#2275 - pg_ping
  • Example#2276 - Using pg_prepare
  • Example#2277 - pg_put_line 例子
  • Example#2278 - Using pg_query_params
  • Example#2279 - pg_result_error_field example
  • Example#2280 - pg_select example
  • Example#2281 - Using pg_send_execute
  • Example#2282 - Using pg_send_prepare
  • Example#2283 - Using pg_send_query_params
  • Example#2284 - 异步查询
  • Example#2285 - pg_set_error_verbosity example
  • Example#2286 - pg_transaction_status example
  • Example#2287 - pg_update example
  • Example#2288 - pg_version example
  • Example#2289 - 过程化风格
  • Example#2290 - Object-oriented style
  • Example#2291 - 过程化风格
  • Example#2292 - 面向对象风格
  • Example#2293 - 过程化风格
  • Example#2294 - 面向对象风格
  • Example#2295 - sqlite_close example
  • Example#2296 - max_length aggregation function example
  • Example#2297 - sqlite_create_function example
  • Example#2298 - Example of using the PHP function
  • Example#2299 - Procedural example
  • Example#2300 - Object-oriented example
  • Example#2301 - sqlite_factory example
  • Example#2302 - Procedural example
  • Example#2303 - Object-oriented example
  • Example#2304 - Procedural example
  • Example#2305 - Object-oriented example
  • Example#2306 - Procedural example
  • Example#2307 - Object-oriented example
  • Example#2308 - A sqlite_fetch_single example
  • Example#2309 - Procedural example
  • Example#2310 - Object-oriented example
  • Example#2311 - sqlite_open example
  • Example#2312 - binary-safe max_length aggregation function example
  • Example#2313 - SQLite3::changes example
  • Example#2314 - SQLite3::close example
  • Example#2315 - SQLite3::__construct example
  • Example#2316 - SQLite3::createCollation example
  • Example#2317 - SQLite3::createFunction example
  • Example#2318 - SQLite3::enableExceptions example
  • Example#2319 - SQLite3::exec example
  • Example#2320 - SQLite3::loadExtension example
  • Example#2321 - SQLite3::open example
  • Example#2322 - SQLite3::openBlob example
  • Example#2323 - SQLite3::prepare example
  • Example#2324 - SQLite3::query example
  • Example#2325 - SQLite3::querySingle example
  • Example#2326 - SQLite3::version example
  • Example#2327 - SQLite3Stmt::bindValue example
  • Example#2328 - sqlsrv_begin_transaction example
  • Example#2329 - sqlsrv_cancel example
  • Example#2330 - sqlsrv_client_info example
  • Example#2331 - sqlsrv_close example
  • Example#2332 - sqlsrv_commit example
  • Example#2333 - Connect using Windows Authentication.
  • Example#2334 - Connect by specifying a user name and password.
  • Example#2335 - Connect on a specifed port.
  • Example#2336 - functionname example
  • Example#2337 - sqlsrv_execute example
  • Example#2338 - Retrieving an associative array.
  • Example#2339 - Retrieving a numeric array.
  • Example#2340 - sqlsrv_fetch_object example
  • Example#2341 - sqlsrv_fetch example
  • Example#2342 - sqlsrv_field_metadata example
  • Example#2343 - sqlsrv_free_stmt example
  • Example#2344 - sqlsrv_get_field example
  • Example#2345 - sqlsrv_has_rows example
  • Example#2346 - sqlsrv_next_result example
  • Example#2347 - sqlsrv_num_fields example
  • Example#2348 - sqlsrv_num_rows example
  • Example#2349 - sqlsrv_prepare example
  • Example#2350 - sqlsrv_query example
  • Example#2351 - sqlsrv_rollback example
  • Example#2352 - sqlsrv_rows_affected example
  • Example#2353 - sqlsrv_send_stream_data example
  • Example#2354 - sqlsrv_server_info example
  • Example#2355 - Delete-Query
  • Example#2356 - sybase_connect example
  • Example#2357 - Identical fieldnames
  • Example#2358 - sybase_fetch_object return as Foo
  • Example#2359 - sybase_set_message_handler callback function
  • Example#2360 - sybase_set_message_handler callback to a class
  • Example#2361 - sybase_set_message_handler unhandled messages
  • Example#2362 - sybase_unbuffered_query example
  • Example#2363 - Putting and getting a key-value pair
  • Example#2364 - TokyoTyrant::add example
  • Example#2365 - TokyoTyrant::connect example
  • Example#2366 - TokyoTyrant::connectUri example
  • Example#2367 - TokyoTyrant::copy example
  • Example#2368 - TokyoTyrant::ext example
  • Example#2369 - TokyoTyrant::fwmKeys example
  • Example#2370 - TokyoTyrant::get example
  • Example#2371 - TokyoTyrant::getIterator example
  • Example#2372 - TokyoTyrant::num example
  • Example#2373 - TokyoTyrant::out example
  • Example#2374 - TokyoTyrant::put example
  • Example#2375 - TokyoTyrant::putCat example
  • Example#2376 - tokyotyrant::putKeep example
  • Example#2377 - TokyoTyrant::putNr example
  • Example#2378 - TokyoTyrant::putShl example
  • Example#2379 - TokyoTyrant::setMaster example
  • Example#2380 - TokyoTyrant::size example
  • Example#2381 - TokyoTyrant::stat example
  • Example#2382 - TokyoTyrant::vanish example
  • Example#2383 - TokyoTyrantTable::genUid example
  • Example#2384 - TokyoTyrantTable::get example
  • Example#2385 - TokyoTyrantTable::getIterator example
  • Example#2386 - TokyoTyrantTable::getQuery example
  • Example#2387 - TokyoTyrantTable::out example
  • Example#2388 - TokyoTyrantTable::put example
  • Example#2389 - TokyoTyrantTable::putCat example
  • Example#2390 - TokyoTyrantTable::putKeep example
  • Example#2391 - TokyoTyrantQuery::addCond example
  • Example#2392 - TokyoTyrantQuery::__construct example
  • Example#2393 - TokyoTyrantQuery::count example
  • Example#2394 - TokyoTyrantQuery iterator example
  • Example#2395 - TokyoTyrantQuery::hint example
  • Example#2396 - TokyoTyrantQuery iterator example
  • Example#2397 - TokyoTyrantQuery::metaSearch example
  • Example#2398 - TokyoTyrantQuery iterator example
  • Example#2399 - TokyoTyrantQuery::out example
  • Example#2400 - TokyoTyrantQuery iterator example
  • Example#2401 - TokyoTyrantQuery::search example
  • Example#2402 - TokyoTyrantQuery iterator example
  • Example#2403 - TokyoTyrantIterator::__construct example
  • Example#2404 - cal_days_in_month example
  • Example#2405 - cal_from_jd example
  • Example#2406 - cal_info example
  • Example#2407 - easter_date example
  • Example#2408 - easter_days example
  • Example#2409 - Calendar functions
  • Example#2410 - jdtojewish Example
  • Example#2411 - DateTime::add example
  • Example#2412 - Further DateTime::add examples
  • Example#2413 - Beware when adding months
  • Example#2414 - DateTime::__construct example
  • Example#2415 - Intricacies of DateTime::__construct
  • Example#2416 - DateTime::createFromFormat example
  • Example#2417 - Intricacies of DateTime::createFromFormat
  • Example#2418 - Format string with literal characters
  • Example#2419 - DateTime::getLastErrors example
  • Example#2420 - DateTime::modify example
  • Example#2421 - Beware when adding or subtracting months
  • Example#2422 - DateTime::setDate example
  • Example#2423 - Values exceeding ranges are added to their parent values
  • Example#2424 - DateTime::setISODate example
  • Example#2425 - Values exceeding ranges are added to their parent values
  • Example#2426 - Finding the month a week is in
  • Example#2427 - DateTime::setTime example
  • Example#2428 - Values exceeding ranges are added to their parent values
  • Example#2429 - DateTime::setTimestamp example
  • Example#2430 - DateTime::setTimestamp alternative in PHP 5.2
  • Example#2431 - DateTime::setTimeZone example
  • Example#2432 - DateTime::sub example
  • Example#2433 - Further DateTime::sub examples
  • Example#2434 - Beware when subtracting months
  • Example#2435 - Creating an immutable date time object
  • Example#2436 - DateTime::diff example
  • Example#2437 - DateTime object comparison
  • Example#2438 - DateTime::format example
  • Example#2439 - DateTime::getOffset example
  • Example#2440 - DateTime::getTimestamp example
  • Example#2441 - DateTime::getTimezone example
  • Example#2442 - Catching errors when instantiating DateTimeZone
  • Example#2443 - DateTimeZone::getLocation 函数的范例：
  • Example#2444 - DateTimeZone::getOffset 例子
  • Example#2445 - A timezone_transitions_get example
  • Example#2446 - timezone_abbreviations_list 函数的范例：
  • Example#2447 - timezone_identifiers_list 函数的范例：
  • Example#2448 - DateInterval example
  • Example#2449 - Parsing valid date intervals
  • Example#2450 - DateInterval example
  • Example#2451 - DateInterval and carry over points
  • Example#2452 - DateInterval and DateTime::diff with the %a and %d modifiers
  • Example#2453 - DatePeriod example
  • Example#2454 - DatePeriod example with DatePeriod::EXCLUDE_START_DATE
  • Example#2455 - DatePeriod::getDateInterval example
  • Example#2456 - DatePeriod::getEndDate example
  • Example#2457 - DatePeriod::getEndDate without an end date
  • Example#2458 - DatePeriod::getStartDate example
  • Example#2459 - checkdate 例子
  • Example#2460 - 获取默认时区
  • Example#2461 - 获取一个时区的简写
  • Example#2462 - 获取默认时区
  • Example#2463 - date_parse_from_format example
  • Example#2464 - A date_parse example
  • Example#2465 - date_parse with relative formats
  • Example#2466 - A date_sun_info example
  • Example#2467 - date_sunrise 例子
  • Example#2468 - date_sunset 例子
  • Example#2469 - date 例子
  • Example#2470 - 在 date 中转义字符
  • Example#2471 - date 和 mktime 例子
  • Example#2472 - date 格式举例
  • Example#2473 - date 函数示例
  • Example#2474 - 对 date 函数中的格式字符串进行转义
  • Example#2475 - date 和 mktime 联合使用示例
  • Example#2476 - date 函数格式化
  • Example#2477 - getdate 例子
  • Example#2478 - gettimeofday 例子
  • Example#2479 - gmdate 例子
  • Example#2480 - gmmktime 在 Windows 中的边界
  • Example#2481 - gmstrftime 例子
  • Example#2482 - localtime 例子
  • Example#2483 - 用 microtime 对脚本的运行计时
  • Example#2484 - 基本例子
  • Example#2485 - mktime 例子
  • Example#2486 - 下个月的最后一天
  • Example#2487 - strftime 区域的例子
  • Example#2488 - ISO 8601:1988 week number example
  • Example#2489 - %e 修改器跨平台兼容的例子
  • Example#2490 - 显示所有已知和未知的格式
  • Example#2491 - strptime 例子
  • Example#2492 - strtotime 例子
  • Example#2493 - 失败检查
  • Example#2494 - time 例子
  • Example#2495 - A timezone_name_from_abbr example
  • Example#2496 - Getting the timezonedb version
  • Example#2497 - Measure several code blocks execution and get the total
  • Example#2498 - Closing an open file descriptor
  • Example#2499 - Setting and clearing a lock
  • Example#2500 - Opening a file descriptor
  • Example#2501 - Positioning in a file
  • Example#2502 - Setting the baud rate on a serial port
  • Example#2503 - chdir 例子
  • Example#2504 - chroot example
  • Example#2505 - closedir 例子
  • Example#2506 - dir 示例
  • Example#2507 - getcwd 例子
  • Example#2508 - opendir 例子
  • Example#2509 - 列出目录中的所有文件
  • Example#2510 - 列出当前目录的所有文件并去掉 . 和 ..
  • Example#2511 - 一个简单的 scandir 例子
  • Example#2512 - scandir 在 PHP 4 中的实现
  • Example#2513 - finfo_buffer 函数例程
  • Example#2514 - finfo_file 例程
  • Example#2515 - 面向对象风格
  • Example#2516 - 过程化风格
  • Example#2517 - mime_content_type 示例
  • Example#2518 - basename 例子
  • Example#2519 - 改变文件所属的组
  • Example#2520 - 简单的 chown 用法
  • Example#2521 - clearstatcache 例子
  • Example#2522 - copy 例子
  • Example#2523 - dirname 例子
  • Example#2524 - disk_free_space 例子
  • Example#2525 - disk_total_space 例子
  • Example#2526 - 一个简单 fclose 例子
  • Example#2527 - 处理 feof 的超时
  • Example#2528 - 使用无效文件指针的 feof 例子
  • Example#2529 - File write example using fflush
  • Example#2530 - 一个 fgetc 例子
  • Example#2531 - 读取并显示 CSV 文件的整个内容
  • Example#2532 - 逐行读取文件
  • Example#2533 - 一行行读取一个 PHP 文件
  • Example#2534 - 测试一个文件是否存在
  • Example#2535 - Get and output the source of the homepage of a website
  • Example#2536 - Searching within the include_path
  • Example#2537 - Reading a section of a file
  • Example#2538 - Using stream contexts
  • Example#2539 - Simple usage example
  • Example#2540 - Using flags
  • Example#2541 - file 例子
  • Example#2542 - fileatime 例子
  • Example#2543 - filectime 例子
  • Example#2544 - 查找文件所在的组
  • Example#2545 - 将某个文件和当前文件的 inode 进行对比
  • Example#2546 - filemtime 例子
  • Example#2547 - 找到文件的所有者
  • Example#2548 - 以八进制的形式显示文件的权限
  • Example#2549 - 输出全部权限
  • Example#2550 - filesize 例子
  • Example#2551 - filetype 例子
  • Example#2552 - flock 例子
  • Example#2553 - flock 使用 LOCK_NB 选项
  • Example#2554 - 用 shell 中的通配符模式匹配来检查颜色名称
  • Example#2555 - fopen 例子
  • Example#2556 - 对二进制文件使用 fpassthru
  • Example#2557 - fputcsv 例子
  • Example#2558 - 一个简单的 fread 例子
  • Example#2559 - Binary fread example
  • Example#2560 - Remote fread examples
  • Example#2561 - fscanf 例子
  • Example#2562 - users.txt 的内容
  • Example#2563 - fseek 例子
  • Example#2564 - fstat 例子
  • Example#2565 - ftell 例子
  • Example#2566 - File truncation example
  • Example#2567 - 一个简单的 fwrite 例子
  • Example#2568 - 怎样用 glob 方便地替代 opendir 和相关函数
  • Example#2569 - is_dir 例子
  • Example#2570 - is_executable 例子
  • Example#2571 - is_file 例子
  • Example#2572 - 创建并确认一个文件是否为符号连接
  • Example#2573 - is_readable 例子
  • Example#2574 - is_uploaded_file 例子
  • Example#2575 - is_writable 例子
  • Example#2576 - 更改符号链接的所有组
  • Example#2577 - Changing the owner of a symbolic link
  • Example#2578 - Creating a simple hard link
  • Example#2579 - linkinfo 例子
  • Example#2580 - stat 和 lstat 的对照
  • Example#2581 - mkdir 例子
  • Example#2582 - 通过 recursive 参数使用 mkdir
  • Example#2583 - Uploading multiple files
  • Example#2584 - sample.ini 的内容
  • Example#2585 - parse_ini_file 例子
  • Example#2586 - parse_ini_file parsing a php.ini file
  • Example#2587 - pathinfo 例子
  • Example#2588 - pathinfo example showing difference between null and no extension
  • Example#2589 - pclose 例子
  • Example#2590 - popen 例子
  • Example#2591 - popen 例子
  • Example#2592 - 使用 readfile 强制下载
  • Example#2593 - readlink 例
  • Example#2594 - realpath_cache_get example
  • Example#2595 - realpath_cache_size example
  • Example#2596 - realpath 例子
  • Example#2597 - Windows 上的 realpath
  • Example#2598 - rename 例子
  • Example#2599 - rewind overwriting example
  • Example#2600 - rmdir 例子
  • Example#2601 - stat 例子
  • Example#2602 - Using stat information together with touch
  • Example#2603 - 创建一个符号连接
  • Example#2604 - tempnam 例子
  • Example#2605 - tmpfile 例子
  • Example#2606 - touch 例子
  • Example#2607 - 使用 time 参数的 touch
  • Example#2608 - umask 例子
  • Example#2609 - 基本的 unlink 用法
  • Example#2610 - Example usage of inotify
  • Example#2611 - Setting the path to magic.mime
  • Example#2612 - setproctitle example
  • Example#2613 - setthreadtitle example
  • Example#2614 - Checks if system administrator has signed the file
  • Example#2615 - Prints names of all extended attributes of file
  • Example#2616 - Removes all extended attributes of a file
  • Example#2617 - Sets extended attributes on .wav file
  • Example#2618 - xattr_supported example
  • Example#2619 - xdiff_file_bdiff_size example
  • Example#2620 - xdiff_file_bdiff example
  • Example#2621 - xdiff_file_bpatch example
  • Example#2622 - xdiff_file_diff_binary example
  • Example#2623 - xdiff_file_diff example
  • Example#2624 - xdiff_file_merge3 example
  • Example#2625 - xdiff_file_patch_binary example
  • Example#2626 - xdiff_file_patch example
  • Example#2627 - Patch reversing example
  • Example#2628 - xdiff_file_rabdiff example
  • Example#2629 - xdiff_string_bdiff_size example
  • Example#2630 - xdiff_string_diff example
  • Example#2631 - xdiff_string_patch example
  • Example#2632 - Enchant Usage Example
  • Example#2633 - List the backends provided by the given broker
  • Example#2634 - A enchant_broker_dict_exists example
  • Example#2635 - List all available dictionaries for one broker
  • Example#2636 - A enchant_broker_request_dict example
  • Example#2637 - Adding a word to a PWL
  • Example#2638 - A enchant_dict_describe example
  • Example#2639 - A enchant_dict_quick_check example
  • Example#2640 - A enchant_dict_suggest example
  • Example#2641 - Usage example.
  • Example#2642 - Using Gender\Gender::country
  • Example#2643 - bindtextdomain example
  • Example#2644 - gettext-check
  • Example#2645 - ngettext example
  • Example#2646 - iconv_get_encoding 例子
  • Example#2647 - iconv_mime_decode_headers 例子
  • Example#2648 - iconv_mime_decode实例
  • Example#2649 - iconv_mime_encode example
  • Example#2650 - iconv_set_encoding 例子
  • Example#2651 - iconv 例子
  • Example#2652 - ob_iconv_handler 例子：
  • Example#2653 - Example of using the procedural API
  • Example#2654 - Example of using the object-oriented API
  • Example#2655 - FRENCH_COLLATION rules
  • Example#2656 - ALTERNATE_HANDLING rules
  • Example#2657 - CASE_FIRST rules
  • Example#2658 - CASE_LEVEL rules
  • Example#2659 - collator_asortexample
  • Example#2660 - collator_compareexample
  • Example#2661 - Collator::__construct example
  • Example#2662 - collator_create example
  • Example#2663 - collator_get_attribute example
  • Example#2664 - collator_get_error_code example
  • Example#2665 - collator_get_error_message example
  • Example#2666 - collator_get_locale example
  • Example#2667 - collator_get_sort_keyexample
  • Example#2668 - collator_get_strength example
  • Example#2669 - collator_set_attribute example
  • Example#2670 - collator_set_strength example
  • Example#2671 - collator_sort_with_sort_keys example
  • Example#2672 - collator_sort example
  • Example#2673 - numfmt_create example
  • Example#2674 - NumberFormatter::create example
  • Example#2675 - numfmt_format_currency example
  • Example#2676 - OO example
  • Example#2677 - numfmt_format example
  • Example#2678 - OO example
  • Example#2679 - numfmt_get_attribute example
  • Example#2680 - OO example
  • Example#2681 - numfmt_get_error_code example
  • Example#2682 - OO example
  • Example#2683 - numfmt_get_error_message example
  • Example#2684 - OO example
  • Example#2685 - numfmt_get_locale example
  • Example#2686 - numfmt_get_pattern example
  • Example#2687 - OO example
  • Example#2688 - numfmt_get_symbol example
  • Example#2689 - OO example
  • Example#2690 - numfmt_get_text_attribute example
  • Example#2691 - OO example
  • Example#2692 - numfmt_parse_currency example
  • Example#2693 - OO example
  • Example#2694 - numfmt_parse example
  • Example#2695 - OO example
  • Example#2696 - numfmt_set_attribute example
  • Example#2697 - OO example
  • Example#2698 - numfmt_set_pattern example
  • Example#2699 - OO example
  • Example#2700 - numfmt_set_symbol example
  • Example#2701 - OO example
  • Example#2702 - numfmt_set_text_attribute example
  • Example#2703 - OO example
  • Example#2704 - locale_accept_from_http example
  • Example#2705 - OO example
  • Example#2706 - locale_compose example
  • Example#2707 - OO example
  • Example#2708 - locale_filter_matches example
  • Example#2709 - OO example
  • Example#2710 - locale_get_all_variants example
  • Example#2711 - OO example
  • Example#2712 - locale_get_default example
  • Example#2713 - OO example
  • Example#2714 - locale_get_display_language example
  • Example#2715 - OO example
  • Example#2716 - locale_get_display_name example
  • Example#2717 - OO example
  • Example#2718 - locale_get_display_region example
  • Example#2719 - OO example
  • Example#2720 - locale_get_display_script example
  • Example#2721 - OO example
  • Example#2722 - locale_get_display_variant example
  • Example#2723 - OO example
  • Example#2724 - locale_get_keywords example
  • Example#2725 - OO example
  • Example#2726 - locale_get_primary_language example
  • Example#2727 - OO example
  • Example#2728 - locale_get_region example
  • Example#2729 - OO example
  • Example#2730 - locale_get_script example
  • Example#2731 - OO example
  • Example#2732 - locale_lookup example
  • Example#2733 - OO example
  • Example#2734 - locale_parse example
  • Example#2735 - OO example
  • Example#2736 - locale_set_default example
  • Example#2737 - OO example
  • Example#2738 - normalizer_is_normalized example
  • Example#2739 - OO example
  • Example#2740 - normalizer_normalize example
  • Example#2741 - OO example
  • Example#2742 - msgfmt_create example
  • Example#2743 - OO example
  • Example#2744 - msgfmt_format_message example
  • Example#2745 - OO example
  • Example#2746 - msgfmt_format example
  • Example#2747 - OO example
  • Example#2748 - msgfmt_get_error_code example
  • Example#2749 - OO example
  • Example#2750 - msgfmt_get_error_message example
  • Example#2751 - OO example
  • Example#2752 - msgfmt_get_locale example
  • Example#2753 - OO example
  • Example#2754 - msgfmt_get_pattern example
  • Example#2755 - OO example
  • Example#2756 - msgfmt_parse_message example
  • Example#2757 - OO example
  • Example#2758 - msgfmt_parse example
  • Example#2759 - OO example
  • Example#2760 - msgfmt_set_pattern example
  • Example#2761 - OO example
  • Example#2762 - IntlCalendar::add
  • Example#2763 - IntlCalendar::after
  • Example#2764 - IntlCalendar::clear examples
  • Example#2765 - IntlCalendar::createInstance
  • Example#2766 - IntlCalendar::equals
  • Example#2767 - IntlCalendar::fieldDifference
  • Example#2768 - IntlCalendar::fromDateTime
  • Example#2769 - IntlCalendar::get
  • Example#2770 - IntlCalendar::getActualMaximum
  • Example#2771 - IntlCalendar::getAvailableLocales()
  • Example#2772 - IntlCalendar::getDayOfWeekType
  • Example#2773 - IntlCalendar::getErrorCode and IntlCalendar::getErrorMessage
  • Example#2774 - IntlCalendar::getErrorMessage
  • Example#2775 - IntlCalendar::getFirstDayOfWeek
  • Example#2776 - IntlCalendar::getKeyworkValuesForLocale
  • Example#2777 - Maxima examples
  • Example#2778 - IntlCalendar::getLocale
  • Example#2779 - IntlCalendar::getMinimalDaysInFirstWeek
  • Example#2780 - IntlCalendar::getNow
  • Example#2781 - IntlCalendar::getRepeatedWallTimeOption
  • Example#2782 - IntlCalendar::getSkippedWallTimeOption
  • Example#2783 - IntlCalendar::getTime
  • Example#2784 - IntlCalendar::getTimeZone
  • Example#2785 - IntlCalendar::getType
  • Example#2786 - IntlCalendar::inDaylightTime
  • Example#2787 - IntlCalendar::isEquivalentTo
  • Example#2788 - IntlCalendar::isLenient
  • Example#2789 - IntlCalendar::isWeekend
  • Example#2790 - IntlCalendar::roll
  • Example#2791 - IntlCalendar::set
  • Example#2792 - IntlCalendar::setFirstDayOfWeek
  • Example#2793 - IntlCalendar::setTime
  • Example#2794 - IntlCalendar::setTimeZone
  • Example#2795 - IntlCalendar::toDateTime
  • Example#2796 - datefmt_create example
  • Example#2797 - OO example
  • Example#2798 - datefmt_format example
  • Example#2799 - OO example
  • Example#2800 - With IntlCalendar object
  • Example#2801 - IntlDateFormatter::formatObject examples
  • Example#2802 - datefmt_get_calendar example
  • Example#2803 - OO example
  • Example#2804 - datefmt_get_datetype example
  • Example#2805 - OO example
  • Example#2806 - datefmt_get_error_code example
  • Example#2807 - OO example
  • Example#2808 - datefmt_get_error_message example
  • Example#2809 - OO example
  • Example#2810 - datefmt_get_locale example
  • Example#2811 - OO example
  • Example#2812 - datefmt_get_pattern example
  • Example#2813 - OO example
  • Example#2814 - datefmt_get_timetype example
  • Example#2815 - OO example
  • Example#2816 - datefmt_get_timezone_id example
  • Example#2817 - OO example
  • Example#2818 - IntlDateFormatter::getCalendarObject example
  • Example#2819 - IntlDateFormatter::getTimeZone examples
  • Example#2820 - datefmt_is_lenient example
  • Example#2821 - OO example
  • Example#2822 - datefmt_localtime example
  • Example#2823 - OO example
  • Example#2824 - OO example
  • Example#2825 - datefmt_parse example
  • Example#2826 - datefmt_set_calendar example
  • Example#2827 - OO example
  • Example#2828 - Example with IntlCalendar argument
  • Example#2829 - datefmt_set_lenient example
  • Example#2830 - OO example
  • Example#2831 - datefmt_set_pattern example
  • Example#2832 - OO example
  • Example#2833 - datefmt_set_timezone_id example
  • Example#2834 - OO example
  • Example#2835 - IntlDateFormatter::setTimeZone examples
  • Example#2836 - resourcebundle_count example
  • Example#2837 - OO example
  • Example#2838 - resourcebundle_create example
  • Example#2839 - ResourceBundle::create example
  • Example#2840 - resourcebundle_get_error_code example
  • Example#2841 - OO example
  • Example#2842 - resourcebundle_get_error_message example
  • Example#2843 - OO example
  • Example#2844 - resourcebundle_get example
  • Example#2845 - OO example
  • Example#2846 - resourcebundle_locales example
  • Example#2847 - OO example
  • Example#2848 - Spoofchecker::areConfusable example
  • Example#2849 - Spoofchecker::isSuspicious example
  • Example#2850 - Converting escaped UTF-16 code units
  • Example#2851 - grapheme_extract example
  • Example#2852 - grapheme_stripos example
  • Example#2853 - grapheme_stristr example
  • Example#2854 - grapheme_strlen example
  • Example#2855 - grapheme_strpos example
  • Example#2856 - grapheme_strripos example
  • Example#2857 - grapheme_strrpos example
  • Example#2858 - grapheme_strstr example
  • Example#2859 - grapheme_substr example
  • Example#2860 - idn_to_ascii example
  • Example#2861 - idn_to_utf8 example
  • Example#2862 - Testing different code points
  • Example#2863 - Testing different code points
  • Example#2864 - Testing different code points
  • Example#2865 - Testing different code points
  • Example#2866 - Testing different code points
  • Example#2867 - Testing different code points
  • Example#2868 - Testing different code points
  • Example#2869 - Testing different code points
  • Example#2870 - Testing different code points
  • Example#2871 - Enumerating over a sample range of code points
  • Example#2872 - Enumerating over a sample range of code points
  • Example#2873 - Testing different code points
  • Example#2874 - Testing different code points
  • Example#2875 - Testing different code points
  • Example#2876 - Testing different code points
  • Example#2877 - Testing different code points
  • Example#2878 - Testing different properties
  • Example#2879 - Testing different properties
  • Example#2880 - Testing different properties
  • Example#2881 - Testing different code points
  • Example#2882 - Testing different properties
  • Example#2883 - Testing different properties
  • Example#2884 - Testing different properties
  • Example#2885 - Testing different properties
  • Example#2886 - Testing different properties
  • Example#2887 - Testing different properties
  • Example#2888 - Testing different code points
  • Example#2889 - Testing different code points
  • Example#2890 - Testing different code points
  • Example#2891 - Testing different code points
  • Example#2892 - Testing different code points
  • Example#2893 - Testing different code points
  • Example#2894 - Testing different code points
  • Example#2895 - Testing different code points
  • Example#2896 - Testing different code points
  • Example#2897 - Testing different code points
  • Example#2898 - Testing different code points
  • Example#2899 - Testing different code points
  • Example#2900 - Testing different code points
  • Example#2901 - Testing different code points
  • Example#2902 - Testing different code points
  • Example#2903 - Testing different code points
  • Example#2904 - Testing different code points
  • Example#2905 - Testing different code points
  • Example#2906 - Testing different code points
  • Example#2907 - Testing different code points
  • Example#2908 - Testing different code points
  • Example#2909 - Testing different code points
  • Example#2910 - Testing different code points
  • Example#2911 - Testing different code points
  • Example#2912 - Testing different code points
  • Example#2913 - Testing different code points
  • Example#2914 - Testing different code points
  • Example#2915 - Testing different code points
  • Example#2916 - Testing different code points
  • Example#2917 - Testing different code points
  • Example#2918 - Testing different code points
  • Example#2919 - Testing different code points
  • Example#2920 - intl_error_name example
  • Example#2921 - intl_get_error_code example
  • Example#2922 - intl_get_error_message example
  • Example#2923 - intl_is_failure example
  • Example#2924 - php.ini 设置例子
  • Example#2925 - php.ini 里 EUC-JP 用户的设置
  • Example#2926 - php.ini 里 SJIS 用户的设置
  • Example#2927 - 在 php.ini 中禁用 HTTP 输入转换
  • Example#2928 - php.ini 设置例子
  • Example#2929 - 脚本例子
  • Example#2930 - mb_convert_case 例子
  • Example#2931 - 非拉丁 UTF-8 文本的mb_convert_case 例子
  • Example#2932 - mb_convert_encoding 例子
  • Example#2933 - mb_convert_kana example
  • Example#2934 - mb_convert_variables 例子
  • Example#2935 - convmap 例子
  • Example#2936 - convmap 的例子： 编码(escape) JavaScript 字符串
  • Example#2937 - mb_detect_encoding 例子
  • Example#2938 - mb_detect_order 例子
  • Example#2939 - 案例展示了无效的检测顺序
  • Example#2940 - mb_encode_mimeheader 例子
  • Example#2941 - convmap example
  • Example#2942 - mb_encode_numericentity example
  • Example#2943 - mb_encoding_aliases example
  • Example#2944 - mb_ereg_replace_callback example
  • Example#2945 - mb_ereg_replace_callback using anonymous function supported in PHP 5.3.0 or later
  • Example#2946 - mb_internal_encoding 例子
  • Example#2947 - mb_list_encodings 例子
  • Example#2948 - mb_output_handler 例子
  • Example#2949 - mb_preferred_mime_name 例子
  • Example#2950 - mb_strimwidth 例子
  • Example#2951 - mb_strtolower 例子
  • Example#2952 - 非拉丁 UTF-8 文本的 mb_strtolower 例子
  • Example#2953 - mb_strtoupper 例子
  • Example#2954 - 非拉丁 UTF-8 文本的 mb_strtoupper 例子
  • Example#2955 - mb_substitute_character 例子
  • Example#2956 - mb_substr_count 例子
  • Example#2957 - pspell_add_to_personal
  • Example#2958 - pspell_check Example
  • Example#2959 - pspell_add_to_personal Example
  • Example#2960 - pspell_config_create
  • Example#2961 - pspell_config_ignore
  • Example#2962 - pspell_config_mode Example
  • Example#2963 - pspell_config_personal
  • Example#2964 - pspell_config_repl
  • Example#2965 - pspell_config_runtogether
  • Example#2966 - pspell_new_config
  • Example#2967 - pspell_new_personal
  • Example#2968 - pspell_new
  • Example#2969 - pspell_add_to_personal
  • Example#2970 - pspell_store_replacement
  • Example#2971 - pspell_suggest example
  • Example#2972 - Basic recode_file example
  • Example#2973 - Basic recode_string example
  • Example#2974 - Cairo Example
  • Example#2975 - cairo_create example
  • Example#2976 - cairo_font_face_get_type example
  • Example#2977 - cairo_font_face_status example
  • Example#2978 - cairo_font_options_create example
  • Example#2979 - cairo_font_options_equal example
  • Example#2980 - cairo_font_options_get_antialias example
  • Example#2981 - cairo_font_options_get_hint_metrics example
  • Example#2982 - cairo_font_options_get_hint_style example
  • Example#2983 - cairo_font_options_get_subpixel_order example
  • Example#2984 - cairo_font_options_hash example
  • Example#2985 - cairo_font_options_merge example
  • Example#2986 - cairo_font_options_set_antialias example
  • Example#2987 - cairo_font_options_set_hint_metrics example
  • Example#2988 - cairo_font_options_set_hint_style example
  • Example#2989 - cairo_font_options_set_subpixel_order example
  • Example#2990 - cairo_font_options_status example
  • Example#2991 - cairo_format_stride_for_width example
  • Example#2992 - cairo_image_surface_create_for_data example
  • Example#2993 - cairo_image_surface_create_from_png example
  • Example#2994 - cairo_image_surface_create example
  • Example#2995 - cairo_image_surface_get_data example
  • Example#2996 - cairo_image_surface_get_format example
  • Example#2997 - cairo_image_surface_get_height example
  • Example#2998 - cairo_image_surface_get_stride example
  • Example#2999 - cairo_image_surface_get_width example
  • Example#3000 - cairo_matrix_invert example
  • Example#3001 - cairo_matrix_multiply example
  • Example#3002 - cairo_matrix_rotate example
  • Example#3003 - cairo_matrix_transform_distance example
  • Example#3004 - cairo_matrix_transform_point example
  • Example#3005 - cairo_matrix_translate example
  • Example#3006 - cairo_pattern_add_color_stop_rgb example
  • Example#3007 - cairo_pattern_add_color_stop_rgba example
  • Example#3008 - cairo_pattern_create_for_surface example
  • Example#3009 - cairo_pattern_create_linear example
  • Example#3010 - cairo_pattern_create_radial example
  • Example#3011 - cairo_pattern_create_rgb example
  • Example#3012 - cairo_pattern_create_rgba example
  • Example#3013 - cairo_pattern_get_color_stop_count example
  • Example#3014 - cairo_pattern_get_color_stop_rgba example
  • Example#3015 - cairo_pattern_get_extend example
  • Example#3016 - cairo_pattern_get_filter example
  • Example#3017 - cairo_pattern_get_linear_points example
  • Example#3018 - cairo_pattern_get_matrix example
  • Example#3019 - cairo_pattern_get_radial_circles example
  • Example#3020 - cairo_pattern_get_rgba example
  • Example#3021 - cairo_pattern_get_surface example
  • Example#3022 - cairo_pattern_get_type example
  • Example#3023 - cairo_pattern_set_extend example
  • Example#3024 - cairo_pattern_set_filter example
  • Example#3025 - cairo_pattern_set_matrix example
  • Example#3026 - cairo_pattern_status example
  • Example#3027 - cairo_pdf_surface_create example
  • Example#3028 - cairo_pdf_surface_set_size example
  • Example#3029 - cairo_ps_get_levels example
  • Example#3030 - cairo_ps_level_to_string example
  • Example#3031 - cairo_ps_surface_create example
  • Example#3032 - cairo_ps_surface_dsc_begin_page_setup example
  • Example#3033 - cairo_ps_surface_dsc_begin_setup example
  • Example#3034 - cairo_ps_surface_dsc_comment example
  • Example#3035 - cairo_ps_surface_get_eps example
  • Example#3036 - cairo_ps_surface_restrict_to_level example
  • Example#3037 - cairo_ps_surface_set_eps example
  • Example#3038 - cairo_ps_surface_set_size example
  • Example#3039 - cairo_scaled_font_create example
  • Example#3040 - cairo_scaled_font_extents example
  • Example#3041 - cairo_scaled_font_get_ctm example
  • Example#3042 - cairo_scaled_font_get_font_face example
  • Example#3043 - cairo_scaled_font_get_font_matrix example
  • Example#3044 - cairo_scaled_font_get_font_options example
  • Example#3045 - cairo_scaled_font_get_scale_matrix example
  • Example#3046 - cairo_scaled_font_get_type example
  • Example#3047 - cairo_scaled_font_glyph_extents example
  • Example#3048 - cairo_scaled_font_status example
  • Example#3049 - cairo_scaled_font_text_extents example
  • Example#3050 - cairo_surface_copy_page example
  • Example#3051 - cairo_surface_create_similar example
  • Example#3052 - cairo_surface_finish example
  • Example#3053 - cairo_surface_flush example
  • Example#3054 - cairo_surface_get_content example
  • Example#3055 - cairo_surface_get_device_offset example
  • Example#3056 - cairo_surface_get_font_options example
  • Example#3057 - cairo_surface_get_type example
  • Example#3058 - cairo_surface_mark_dirty_rectangle example
  • Example#3059 - cairo_surface_mark_dirty example
  • Example#3060 - cairo_surface_set_device_offset example
  • Example#3061 - cairo_surface_set_fallback_resolution example
  • Example#3062 - cairo_surface_show_page example
  • Example#3063 - cairo_surface_status example
  • Example#3064 - cairo_surface_write_to_png example
  • Example#3065 - cairo_svg_surface_create example
  • Example#3066 - cairo_svg_surface_restrict_to_version example
  • Example#3067 - cairo_svg_version_to_string example
  • Example#3068 - 面向对象风格
  • Example#3069 - 过程化风格
  • Example#3070 - 面向对象风格
  • Example#3071 - 过程化风格
  • Example#3072 - 面向对象风格
  • Example#3073 - 过程化风格
  • Example#3074 - 面向对象风格
  • Example#3075 - 过程化风格
  • Example#3076 - 面向对象风格
  • Example#3077 - 过程化风格
  • Example#3078 - 面向对象风格
  • Example#3079 - 过程化风格
  • Example#3080 - 面向对象风格
  • Example#3081 - 过程化风格
  • Example#3082 - 面向对象风格
  • Example#3083 - 过程化风格
  • Example#3084 - 面向对象风格
  • Example#3085 - 过程化风格
  • Example#3086 - 面向对象风格
  • Example#3087 - 过程化风格
  • Example#3088 - 面向对象风格
  • Example#3089 - 过程化风格
  • Example#3090 - 面向对象风格
  • Example#3091 - 过程化风格
  • Example#3092 - 面向对象风格
  • Example#3093 - 过程化风格
  • Example#3094 - CairoContext::__construct example
  • Example#3095 - 面向对象风格
  • Example#3096 - 过程化风格
  • Example#3097 - 面向对象风格
  • Example#3098 - 过程化风格
  • Example#3099 - 面向对象风格
  • Example#3100 - 过程化风格
  • Example#3101 - 面向对象风格
  • Example#3102 - 过程化风格
  • Example#3103 - 面向对象风格
  • Example#3104 - 过程化风格
  • Example#3105 - 面向对象风格
  • Example#3106 - 过程化风格
  • Example#3107 - 面向对象风格
  • Example#3108 - 过程化风格
  • Example#3109 - 面向对象风格
  • Example#3110 - 过程化风格
  • Example#3111 - 面向对象风格
  • Example#3112 - 过程化风格
  • Example#3113 - 面向对象风格
  • Example#3114 - 过程化风格
  • Example#3115 - 面向对象风格
  • Example#3116 - 过程化风格
  • Example#3117 - 面向对象风格
  • Example#3118 - 过程化风格
  • Example#3119 - 面向对象风格
  • Example#3120 - 过程化风格
  • Example#3121 - 面向对象风格
  • Example#3122 - 过程化风格
  • Example#3123 - 面向对象风格
  • Example#3124 - 过程化风格
  • Example#3125 - 面向对象风格
  • Example#3126 - 过程化风格
  • Example#3127 - 面向对象风格
  • Example#3128 - 过程化风格
  • Example#3129 - 面向对象风格
  • Example#3130 - 过程化风格
  • Example#3131 - 面向对象风格
  • Example#3132 - 过程化风格
  • Example#3133 - 面向对象风格
  • Example#3134 - 过程化风格
  • Example#3135 - 面向对象风格
  • Example#3136 - 过程化风格
  • Example#3137 - 面向对象风格
  • Example#3138 - 过程化风格
  • Example#3139 - 面向对象风格
  • Example#3140 - 过程化风格
  • Example#3141 - 面向对象风格
  • Example#3142 - 过程化风格
  • Example#3143 - 面向对象风格
  • Example#3144 - 过程化风格
  • Example#3145 - 面向对象风格
  • Example#3146 - 过程化风格
  • Example#3147 - 面向对象风格
  • Example#3148 - 过程化风格
  • Example#3149 - 面向对象风格
  • Example#3150 - 过程化风格
  • Example#3151 - 面向对象风格
  • Example#3152 - 过程化风格
  • Example#3153 - 面向对象风格
  • Example#3154 - 过程化风格
  • Example#3155 - 面向对象风格
  • Example#3156 - 过程化风格
  • Example#3157 - 面向对象风格
  • Example#3158 - 过程化风格
  • Example#3159 - 面向对象风格
  • Example#3160 - 过程化风格
  • Example#3161 - 面向对象风格
  • Example#3162 - 过程化风格
  • Example#3163 - 面向对象风格
  • Example#3164 - 过程化风格
  • Example#3165 - 面向对象风格
  • Example#3166 - 过程化风格
  • Example#3167 - 面向对象风格
  • Example#3168 - 过程化风格
  • Example#3169 - 面向对象风格
  • Example#3170 - 过程化风格
  • Example#3171 - 面向对象风格
  • Example#3172 - 过程化风格
  • Example#3173 - 面向对象风格
  • Example#3174 - 过程化风格
  • Example#3175 - 面向对象风格
  • Example#3176 - 过程化风格
  • Example#3177 - 面向对象风格
  • Example#3178 - 过程化风格
  • Example#3179 - 面向对象风格
  • Example#3180 - 过程化风格
  • Example#3181 - 面向对象风格
  • Example#3182 - 过程化风格
  • Example#3183 - 面向对象风格
  • Example#3184 - 过程化风格
  • Example#3185 - 面向对象风格
  • Example#3186 - 过程化风格
  • Example#3187 - 面向对象风格
  • Example#3188 - 过程化风格
  • Example#3189 - 面向对象风格
  • Example#3190 - 过程化风格
  • Example#3191 - 面向对象风格
  • Example#3192 - 过程化风格
  • Example#3193 - 面向对象风格
  • Example#3194 - 过程化风格
  • Example#3195 - 面向对象风格
  • Example#3196 - 过程化风格
  • Example#3197 - 面向对象风格
  • Example#3198 - 过程化风格
  • Example#3199 - 面向对象风格
  • Example#3200 - 过程化风格
  • Example#3201 - 面向对象风格
  • Example#3202 - 过程化风格
  • Example#3203 - 面向对象风格
  • Example#3204 - 过程化风格
  • Example#3205 - 面向对象风格
  • Example#3206 - 过程化风格
  • Example#3207 - 面向对象风格
  • Example#3208 - 过程化风格
  • Example#3209 - 面向对象风格
  • Example#3210 - 过程化风格
  • Example#3211 - 面向对象风格
  • Example#3212 - 过程化风格
  • Example#3213 - 面向对象风格
  • Example#3214 - 过程化风格
  • Example#3215 - 面向对象风格
  • Example#3216 - 过程化风格
  • Example#3217 - 面向对象风格
  • Example#3218 - 过程化风格
  • Example#3219 - 面向对象风格
  • Example#3220 - 过程化风格
  • Example#3221 - 面向对象风格
  • Example#3222 - 过程化风格
  • Example#3223 - 面向对象风格
  • Example#3224 - 过程化风格
  • Example#3225 - 面向对象风格
  • Example#3226 - 过程化风格
  • Example#3227 - 面向对象风格
  • Example#3228 - 过程化风格
  • Example#3229 - 面向对象风格
  • Example#3230 - 过程化风格
  • Example#3231 - 面向对象风格
  • Example#3232 - 过程化风格
  • Example#3233 - 面向对象风格
  • Example#3234 - 过程化风格
  • Example#3235 - 面向对象风格
  • Example#3236 - 过程化风格
  • Example#3237 - 面向对象风格
  • Example#3238 - 过程化风格
  • Example#3239 - 面向对象风格
  • Example#3240 - 过程化风格
  • Example#3241 - 面向对象风格
  • Example#3242 - 过程化风格
  • Example#3243 - 面向对象风格
  • Example#3244 - 过程化风格
  • Example#3245 - 面向对象风格
  • Example#3246 - 过程化风格
  • Example#3247 - 面向对象风格
  • Example#3248 - 过程化风格
  • Example#3249 - 面向对象风格
  • Example#3250 - 过程化风格
  • Example#3251 - 面向对象风格
  • Example#3252 - 过程化风格
  • Example#3253 - 面向对象风格
  • Example#3254 - 过程化风格
  • Example#3255 - 面向对象风格
  • Example#3256 - 过程化风格
  • Example#3257 - 面向对象风格
  • Example#3258 - 过程化风格
  • Example#3259 - 面向对象风格
  • Example#3260 - 过程化风格
  • Example#3261 - 面向对象风格
  • Example#3262 - 过程化风格
  • Example#3263 - 面向对象风格
  • Example#3264 - 过程化风格
  • Example#3265 - 面向对象风格
  • Example#3266 - 过程化风格
  • Example#3267 - 面向对象风格
  • Example#3268 - 过程化风格
  • Example#3269 - CairoSurface::createSimilar example
  • Example#3270 - CairoSurface::finish example
  • Example#3271 - CairoSurface::flush example
  • Example#3272 - CairoSurface::getContent example
  • Example#3273 - CairoSurface::getDeviceOffset example
  • Example#3274 - 面向对象风格
  • Example#3275 - 过程化风格
  • Example#3276 - CairoSurface::getType example
  • Example#3277 - CairoSurface::markDirty example
  • Example#3278 - CairoSurface::markDirtyRectangle example
  • Example#3279 - CairoSurface::setDeviceOffset example
  • Example#3280 - CairoSurface::setFallbackResolution example
  • Example#3281 - 面向对象风格
  • Example#3282 - 过程化风格
  • Example#3283 - 面向对象风格
  • Example#3284 - 过程化风格
  • Example#3285 - CairoSurface::writeToPng example
  • Example#3286 - CairoSvgSurface::__construct example
  • Example#3287 - CairoSvgSurface::getVersions example
  • Example#3288 - 过程化风格
  • Example#3289 - CairoSvgSurface::restrictToVersion example
  • Example#3290 - CairoSvgSurface::versionToString example
  • Example#3291 - CairoImageSurface::__construct example
  • Example#3292 - CairoImageSurface::createForData example
  • Example#3293 - CairoImageSurface::createFromPng example
  • Example#3294 - CairoImageSurface::getData example
  • Example#3295 - CairoImageSurface::getFormat example
  • Example#3296 - CairoImageSurface::getHeight example
  • Example#3297 - CairoImageSurface::getStride example
  • Example#3298 - CairoImageSurface::getWidth example
  • Example#3299 - CairoPdfSurface::__construct example
  • Example#3300 - CairoPdfSurface::setSize example
  • Example#3301 - CairoPsSurface::__construct example
  • Example#3302 - CairoPsSurface::dscBeginPageSetup example
  • Example#3303 - CairoPsSurface::dscBeginSetup example
  • Example#3304 - CairoPsSurface::dscComment example
  • Example#3305 - CairoPsSurface::getEps example
  • Example#3306 - CairoPsSurface::getLevels example
  • Example#3307 - CairoPsSurface::levelToString example
  • Example#3308 - CairoPsSurface::restrictToLevel example
  • Example#3309 - CairoPsSurface::setEps example
  • Example#3310 - CairoPsSurface::setSize example
  • Example#3311 - CairoFontFace::__construct example
  • Example#3312 - CairoFontFace::getType example
  • Example#3313 - 面向对象风格
  • Example#3314 - 过程化风格
  • Example#3315 - CairoFontOptions::__construct example
  • Example#3316 - CairoFontOptions::equal example
  • Example#3317 - 面向对象风格
  • Example#3318 - 过程化风格
  • Example#3319 - CairoFontOptions::getHintMetrics example
  • Example#3320 - CairoFontOptions::getHintStyle example
  • Example#3321 - CairoFontOptions::getSubpixelOrder example
  • Example#3322 - CairoFontOptions::hash example
  • Example#3323 - CairoFontOptions::merge example
  • Example#3324 - 面向对象风格
  • Example#3325 - 过程化风格
  • Example#3326 - CairoFontOptions::setHintMetrics example
  • Example#3327 - CairoFontOptions::setHintStyle example
  • Example#3328 - CairoFontOptions::setSubpixelOrder example
  • Example#3329 - 面向对象风格
  • Example#3330 - 过程化风格
  • Example#3331 - CairoScaledFont::__construct example
  • Example#3332 - CairoScaledFont::extents example
  • Example#3333 - CairoScaledFont::getCtm example
  • Example#3334 - 面向对象风格
  • Example#3335 - 过程化风格
  • Example#3336 - 面向对象风格
  • Example#3337 - 过程化风格
  • Example#3338 - 面向对象风格
  • Example#3339 - 过程化风格
  • Example#3340 - CairoScaledFont::getScaleMatrix example
  • Example#3341 - CairoScaledFont::getType example
  • Example#3342 - CairoScaledFont::glyphExtents example
  • Example#3343 - 面向对象风格
  • Example#3344 - 过程化风格
  • Example#3345 - 面向对象风格
  • Example#3346 - 过程化风格
  • Example#3347 - CairoPattern::__construct example
  • Example#3348 - 面向对象风格
  • Example#3349 - 过程化风格
  • Example#3350 - CairoPattern::getType example
  • Example#3351 - 面向对象风格
  • Example#3352 - 过程化风格
  • Example#3353 - 面向对象风格
  • Example#3354 - 过程化风格
  • Example#3355 - CairoGradientPattern::addColorStopRgb example
  • Example#3356 - CairoGradientPattern::addColorStopRgba example
  • Example#3357 - CairoGradientPattern::getColorStopCount example
  • Example#3358 - CairoGradientPattern::getColorStopRgba example
  • Example#3359 - CairoGradientPattern::getExtend example
  • Example#3360 - CairoGradientPattern::setExtend example
  • Example#3361 - CairoSolidPattern::__construct example
  • Example#3362 - CairoSolidPattern::getRgba example
  • Example#3363 - CairoSurfacePattern::__construct example
  • Example#3364 - CairoSurfacePattern::getExtend example
  • Example#3365 - CairoSurfacePattern::getFilter example
  • Example#3366 - CairoSurfacePattern::getSurface example
  • Example#3367 - CairoSurfacePattern::setExtend example
  • Example#3368 - CairoSurfacePattern::setFilter example
  • Example#3369 - CairoLinearGradient::__construct example
  • Example#3370 - CairoLinearGradient::getPoints example
  • Example#3371 - CairoRadialGradient::__construct example
  • Example#3372 - CairoRadialGradient::getCircles example
  • Example#3373 - CairoFormat::strideForWidth example
  • Example#3374 - 面向对象风格
  • Example#3375 - 过程化风格
  • Example#3376 - 面向对象风格
  • Example#3377 - 过程化风格
  • Example#3378 - 面向对象风格
  • Example#3379 - 过程化风格
  • Example#3380 - 面向对象风格
  • Example#3381 - 过程化风格
  • Example#3382 - 面向对象风格
  • Example#3383 - 过程化风格
  • Example#3384 - CairoMatrix::invert example
  • Example#3385 - CairoMatrix::multiply example
  • Example#3386 - 面向对象风格
  • Example#3387 - 过程化风格
  • Example#3388 - 面向对象风格
  • Example#3389 - 过程化风格
  • Example#3390 - CairoMatrix::transformDistance example
  • Example#3391 - CairoMatrix::transformPoint example
  • Example#3392 - 面向对象风格
  • Example#3393 - 过程化风格
  • Example#3394 - exif_imagetype 例子
  • Example#3395 - exif_read_data 例子
  • Example#3396 - exif_tagname 函数例程
  • Example#3397 - exif_thumbnail 例子
  • Example#3398 - 使用 PHP 创建 PNG 图像
  • Example#3399 - 使用 Alpha 通道为图像加水印
  • Example#3400 - 使用 imagecopymerge 函数创建半透明水印
  • Example#3401 - 使用 gd_info
  • Example#3402 - getimagesize（文件）
  • Example#3403 - getimagesize（URL）
  • Example#3404 - getimagesize() 和 MIME 类型
  • Example#3405 - getimagesize() 返回 IPTC
  • Example#3406 - getimagesize and MIME types
  • Example#3407 - getimagesize example
  • Example#3408 - getimagesize (URL)
  • Example#3409 - getimagesize() returning IPTC
  • Example#3410 - getimagesizefromstring 函数例程
  • Example#3411 - image_type_to_extension 例子
  • Example#3412 - image_type_to_mime_type (file)
  • Example#3413 - image2wbmp 例子
  • Example#3414 - imageaffinematrixconcat example
  • Example#3415 - imageaffinematrixget example
  • Example#3416 - imagealphablending usage example
  • Example#3417 - A comparison of two lines, one with anti-aliasing switched on
  • Example#3418 - 用 imagearc 画一个圆
  • Example#3419 - Saving a BMP file
  • Example#3420 - imagechar 例子
  • Example#3421 - imagecharup 例子
  • Example#3422 - imagecolorallocate 例子
  • Example#3423 - 使用 imagecolorallocatealpha 的例子
  • Example#3424 - Example of using imagecolorallocatealpha
  • Example#3425 - 取得各自的 RGB 值
  • Example#3426 - Search for a set of colors in an image
  • Example#3427 - 使用 imagecolorclosesthwb 的例子
  • Example#3428 - Get colors from the GD logo
  • Example#3429 - imagecolormatch 例子
  • Example#3430 - Using imagecoloresolvealpha to get colors from an image
  • Example#3431 - imagecolorsforindex 例子
  • Example#3432 - Embossing the PHP.net logo
  • Example#3433 - Gaussian blur
  • Example#3434 - 简单的例子
  • Example#3435 - 按比例对图像重新采样
  • Example#3436 - Resizing an image
  • Example#3437 - 新建一个新的 GD 图像流并输出图像
  • Example#3438 - Convert an BMP image to a PNG image using imagecreatefrombmp
  • Example#3439 - imagecreatefromgd2 例子
  • Example#3440 - imagecreatefromgd2part example
  • Example#3441 - imagecreatefromgd 例子
  • Example#3442 - 处理创建过程中的错误
  • Example#3443 - 处理创建过程中的错误
  • Example#3444 - 处理创建 PNG 过程中的错误
  • Example#3445 - imagecreatefromstring example
  • Example#3446 - 处理创建 WBMP 过程中的错误
  • Example#3447 - Convert an WebP image to a jpeg image using imagecreatefromwebp
  • Example#3448 - Convert an XBM image to a png image using imagecreatefromxbm
  • Example#3449 - Creating an image instance using imagecreatefromxpm
  • Example#3450 - 新建一个新的 GD 图像流并输出图像
  • Example#3451 - imagecrop example
  • Example#3452 - Proper handling of auto-cropping
  • Example#3453 - imageellipse 例子
  • Example#3454 - imagefill 例子
  • Example#3455 - 创建一 3D 效果的饼状图
  • Example#3456 - imagefilledellipse 例子
  • Example#3457 - imagefilledpolygon 例子
  • Example#3458 - imagefilter 灰度例子
  • Example#3459 - imagefilter 亮度例子
  • Example#3460 - imagefilter 上彩例子
  • Example#3461 - imagefilter grayscale example
  • Example#3462 - imagefilter brightness example
  • Example#3463 - imagefilter colorize example
  • Example#3464 - imagefilter negate example
  • Example#3465 - imagefilter pixelate example
  • Example#3466 - Flips an image vertically
  • Example#3467 - Flips the image horizontally
  • Example#3468 - imageftbbox example
  • Example#3469 - imagefttext example
  • Example#3470 - 输出一个 GD2 图像
  • Example#3471 - 保存 GD2 图像
  • Example#3472 - imagegetclip example
  • Example#3473 - 使用 imagegif 输出一个图像
  • Example#3474 - 使用 imagegif 将一个 PNG 转换成 GIF
  • Example#3475 - imagegrabscreen example
  • Example#3476 - imagegrabwindow example
  • Example#3477 - Simple detection of true color image instances using imageistruecolor
  • Example#3478 - 输出 JPEG 图像
  • Example#3479 - 保存一副 JPEG 图像
  • Example#3480 - 以 75% 的图像质量输出图像
  • Example#3481 - imagelayereffect example
  • Example#3482 - 画一条粗线
  • Example#3483 - 使用 imageloadfont
  • Example#3484 - imageopenpolygon example
  • Example#3485 - Converts any image resource to true color
  • Example#3486 - imagepolygon 例子
  • Example#3487 - imagepsbbox 用法
  • Example#3488 - imagepsencodefont example
  • Example#3489 - imagepsextendfont 例子
  • Example#3490 - imagepsfreefont 例子
  • Example#3491 - imagepsloadfont 例子
  • Example#3492 - imagepsslantfont example
  • Example#3493 - imagepstext 用法
  • Example#3494 - Setting and getting the resolution of an image
  • Example#3495 - 将图像旋转 180 度
  • Example#3496 - imagesavealpha 例子
  • Example#3497 - imagesetinterpolation example
  • Example#3498 - imagesetstyle 例子
  • Example#3499 - imagesetthickness example
  • Example#3500 - imagestring 例子
  • Example#3501 - 使用 imagesx
  • Example#3502 - 使用 imagesy
  • Example#3503 - Converting a true color image to a palette-based image
  • Example#3504 - imagettftext 例子
  • Example#3505 - imagetypes 例子
  • Example#3506 - 保存为 WebP 图像文件
  • Example#3507 - 保存一个 XBM 文件
  • Example#3508 - 以不同前景色保存一个 XBM 文件
  • Example#3509 - Embedding IPTC data into a JPEG
  • Example#3510 - iptcparse() used together with getimagesize
  • Example#3511 - jpeg2wbmp 例子
  • Example#3512 - png2wbmp 例子
  • Example#3513 - Gmagick Example
  • Example#3514 - Gmagick::despeckleimage example
  • Example#3515 - Gmagick::setCompressionQuality
  • Example#3516 - Creating a thumbnail in Imagick
  • Example#3517 - Make a thumbnail of all JPG files in a directory
  • Example#3518 - Creating a reflection of an image
  • Example#3519 - Filling text with gradient
  • Example#3520 - Read in GIF image and resize all frames
  • Example#3521 - Create a PHP logo
  • Example#3522 - Using Imagick::adaptiveBlurImage:
  • Example#3523 - Using Imagick::adaptiveResizeImage
  • Example#3524 - A Imagick::adaptiveSharpenImage example
  • Example#3525 - Imagick::adaptiveThresholdImage
  • Example#3526 - Imagick::addNoiseImage
  • Example#3527 - Imagick::affineTransformImage
  • Example#3528 - Using Imagick::annotateImage:
  • Example#3529 - Imagick::appendImages example
  • Example#3530 - Imagick::autoLevelImage
  • Example#3531 - Imagick::blackThresholdImage
  • Example#3532 - Imagick::blueShiftImage
  • Example#3533 - Using Imagick::blurImage:
  • Example#3534 - Imagick::borderImage
  • Example#3535 - Imagick::brightnessContrastImage
  • Example#3536 - Imagick::charcoalImage
  • Example#3537 - Using Imagick::chopImage:
  • Example#3538 - Imagick object cloning in different versions of imagick
  • Example#3539 - Using Imagick::clutImage:
  • Example#3540 - Imagick::colorizeImage
  • Example#3541 - Imagick::colorMatrixImage
  • Example#3542 - Using Imagick::commentImage:
  • Example#3543 - Using Imagick::compareImageLayers
  • Example#3544 - Using Imagick::compareImages:
  • Example#3545 - Imagick::contrastImage
  • Example#3546 - Imagick::convolveImage
  • Example#3547 - Imagick::cropImage
  • Example#3548 - Imagick::deskewImage
  • Example#3549 - Imagick::despeckleImage
  • Example#3550 - Using Imagick::distortImage:
  • Example#3551 - Imagick::edgeImage
  • Example#3552 - Imagick::embossImage
  • Example#3553 - Imagick::enhanceImage
  • Example#3554 - Imagick::equalizeImage
  • Example#3555 - Using Imagick::evaluateImage
  • Example#3556 - Using Imagick::exportImagePixels
  • Example#3557 - Imagick::filter
  • Example#3558 - Imagick::flipImage
  • Example#3559 - Imagick::floodfillPaintImage example
  • Example#3560 - Imagick::flopImage
  • Example#3561 - Imagick::forwardFourierTransformImage
  • Example#3562 - Imagick::frameImage
  • Example#3563 - Create a sinusoidal gradient
  • Example#3564 - Create a gradient from the polynomial (4x^2 - 4x + 1)
  • Example#3565 - Create a complex gradient from the polynomial (4x^2 - 4x^2 + 1) modulated by a sinusoidal gradient
  • Example#3566 - Imagick::fxImage
  • Example#3567 - Imagick::gammaImage
  • Example#3568 - Imagick::gaussianBlurImage
  • Example#3569 - Imagick::getImageGeometry
  • Example#3570 - Generates Imagick::getImageHistogram
  • Example#3571 - Using Imagick::getImageLength:
  • Example#3572 - Using Imagick::getImageProperties:
  • Example#3573 - Using Imagick::getImageProperty:
  • Example#3574 - Using Imagick::getIteratorIndex:
  • Example#3575 - Imagick::getPixelIterator
  • Example#3576 - Imagick::getPixelRegionIterator example
  • Example#3577 - Imagick::haldClutImage
  • Example#3578 - Imagick::identifyFormat
  • Example#3579 - Example Result Format
  • Example#3580 - Imagick::implodeImage
  • Example#3581 - Imagick::importImagePixels example
  • Example#3582 - Imagick::levelImage
  • Example#3583 - Imagick::linearStretchImage
  • Example#3584 - Imagick::magnifyImage
  • Example#3585 - Imagick::medianFilterImage
  • Example#3586 - Imagick::mergeImageLayers
  • Example#3587 - Imagick::modulateImage
  • Example#3588 - Convolve Imagick::morphology
  • Example#3589 - Correlate Imagick::morphology
  • Example#3590 - Erode Imagick::morphology
  • Example#3591 - Erode Intensity Imagick::morphology
  • Example#3592 - Dilate Imagick::morphology
  • Example#3593 - Dilate intensity Imagick::morphology
  • Example#3594 - Distance with Chebyshev kernel Imagick::morphology
  • Example#3595 - Distance with Manhattan kernel Imagick::morphology
  • Example#3596 - Distance with ocatagonal kernel Imagick::morphology
  • Example#3597 - Distance with Euclidean kernel Imagick::morphology
  • Example#3598 - Edge Imagick::morphology
  • Example#3599 - Open Imagick::morphology
  • Example#3600 - Open intensity Imagick::morphology
  • Example#3601 - Close Imagick::morphology
  • Example#3602 - Close Intensity Imagick::morphology
  • Example#3603 - Smooth Imagick::morphology
  • Example#3604 - Edge in Imagick::morphology
  • Example#3605 - Edge out Imagick::morphology
  • Example#3606 - The 'TopHat' method, or more specifically 'White Top Hat', returns the pixels that were removed by a Opening of the shape, that is the pixels that were removed to round off the points, and the connecting bridged between shapes. Imagick::morphology
  • Example#3607 - The 'BottomHat' method, also known as 'Black TopHat' is the pixels that a Closing of the shape adds to the image. That is the the pixels that were used to fill in the 'holes', 'gaps', and 'bridges'. Imagick::morphology
  • Example#3608 - Hit and Miss Imagick::morphology
  • Example#3609 - Thinning Imagick::morphology
  • Example#3610 - Thicken Imagick::morphology
  • Example#3611 - Thick to generate a convex hull Imagick::morphology
  • Example#3612 - Iterative morphology Imagick::morphology
  • Example#3613 - Helper functon to get an image silhouette Imagick::morphology
  • Example#3614 - Imagick::motionBlurImage
  • Example#3615 - Imagick::negateImage
  • Example#3616 - Using Imagick::newImage:
  • Example#3617 - Imagick::newPseudoImage
  • Example#3618 - Imagick::normalizeImage
  • Example#3619 - Imagick::oilPaintImage
  • Example#3620 - Using Imagick::optimizeImageLayers
  • Example#3621 - Imagick::orderedPosterizeImage
  • Example#3622 - Using Imagick::pingImageBlob
  • Example#3623 - Using Imagick::pingImageFile
  • Example#3624 - A Imagick::polaroidImage example
  • Example#3625 - Imagick::posterizeImage
  • Example#3626 - Imagick::quantizeImage
  • Example#3627 - Using Imagick::queryFontMetrics:
  • Example#3628 - Imagick::queryFonts
  • Example#3629 - Imagick::queryFormats
  • Example#3630 - Imagick::radialBlurImage
  • Example#3631 - Imagick::raiseImage
  • Example#3632 - Imagick::randomThresholdImage
  • Example#3633 - Imagick::readImageBlob
  • Example#3634 - Imagick::recolorImage
  • Example#3635 - Imagick::reduceNoiseImage
  • Example#3636 - Imagick::resampleImage
  • Example#3637 - Imagick::resizeImage
  • Example#3638 - Imagick::rollImage
  • Example#3639 - Imagick::rotateImage
  • Example#3640 - Imagick::rotationalBlurImage
  • Example#3641 - Using Imagick::roundCorners:
  • Example#3642 - Imagick::scaleImage
  • Example#3643 - Imagick::segmentImage
  • Example#3644 - Imagick::selectiveBlurImage
  • Example#3645 - Imagick::separateImageChannel
  • Example#3646 - Imagick::sepiaToneImage
  • Example#3647 - Imagick::setCompressionQuality
  • Example#3648 - A Imagick::setFont example
  • Example#3649 - A Imagick::setImage example
  • Example#3650 - Imagick::setImageArtifact
  • Example#3651 - Imagick::setImageBias
  • Example#3652 - Imagick::setImageClipMask
  • Example#3653 - Modify animated Gif with Imagick::setImageDelay
  • Example#3654 - Basic Imagick::setImageIterations usage
  • Example#3655 - A Imagick::setImageOpacity example
  • Example#3656 - Imagick::setImageOrientation
  • Example#3657 - Using Imagick::setImageProperty:
  • Example#3658 - Imagick::setImageResolution
  • Example#3659 - Modify animated Gif with Imagick::setImageTicksPerSecond
  • Example#3660 - Using Imagick::setIteratorIndex:
  • Example#3661 - Attempt to reach '$extent' sizeImagick::setOption
  • Example#3662 - Imagick::setOption
  • Example#3663 - Imagick::setOption
  • Example#3664 - A Imagick::setPointSize example
  • Example#3665 - Imagick::setProgressMonitor
  • Example#3666 - Imagick::setSamplingFactors
  • Example#3667 - Imagick::shadeImage
  • Example#3668 - Imagick::shadowImage
  • Example#3669 - Imagick::sharpenImage
  • Example#3670 - Imagick::shaveImage
  • Example#3671 - Imagick::shearImage
  • Example#3672 - Create a gradient image using Imagick::sigmoidalContrastImage suitable for blending two images together smoothly, with the blending defined by $contrast and $the midpoint
  • Example#3673 - Imagick::sketchImage
  • Example#3674 - Imagick::smushImages
  • Example#3675 - Imagick::solarizeImage
  • Example#3676 - SPARSECOLORMETHOD_BARYCENTRIC Imagick::sparseColorImage
  • Example#3677 - SPARSECOLORMETHOD_BILINEAR Imagick::sparseColorImage
  • Example#3678 - SPARSECOLORMETHOD_SPEPARDS Imagick::sparseColorImage
  • Example#3679 - SPARSECOLORMETHOD_VORONOI Imagick::sparseColorImage
  • Example#3680 - SPARSECOLORMETHOD_BARYCENTRIC Imagick::sparseColorImage
  • Example#3681 - createGradientImage is used by other examples. Imagick::sparseColorImage
  • Example#3682 - Imagick::spliceImage
  • Example#3683 - Imagick::spreadImage
  • Example#3684 - Imagick::statisticImage
  • Example#3685 - Imagick::subImageMatch
  • Example#3686 - Imagick::swirlImage
  • Example#3687 - Imagick::textureImage
  • Example#3688 - Imagick::thresholdImage
  • Example#3689 - Imagick::thumbnailImage
  • Example#3690 - Imagick::tintImage
  • Example#3691 - Using Imagick::transformImage:
  • Example#3692 - Imagick::transformImageColorspace example
  • Example#3693 - Imagick::transformImageColorspace
  • Example#3694 - Imagick::transparentPaintImage
  • Example#3695 - Imagick::transposeImage
  • Example#3696 - Imagick::transverseImage
  • Example#3697 - Using Imagick::trimImage:
  • Example#3698 - Imagick::uniqueImageColors
  • Example#3699 - Imagick::unsharpMaskImage
  • Example#3700 - Imagick::vignetteImage
  • Example#3701 - WaveImage can be quite slow Imagick::waveImage
  • Example#3702 - Imagick::whiteThresholdImage
  • Example#3703 - ImagickDraw::affine
  • Example#3704 - ImagickDraw::arc
  • Example#3705 - ImagickDraw::bezier
  • Example#3706 - ImagickDraw::circle
  • Example#3707 - ImagickDraw::composite
  • Example#3708 - ImagickDraw::ellipse
  • Example#3709 - ImagickDraw::line
  • Example#3710 - ImagickDraw::matte
  • Example#3711 - ImagickDraw::pathCurveToQuadraticBezierAbsolute
  • Example#3712 - ImagickDraw::pathCurveToQuadraticBezierSmoothAbsolute
  • Example#3713 - ImagickDraw::pathCurveToQuadraticBezierSmoothRelative
  • Example#3714 - ImagickDraw::pathStart
  • Example#3715 - ImagickDraw::point
  • Example#3716 - ImagickDraw::polygon
  • Example#3717 - ImagickDraw::polyline
  • Example#3718 - ImagickDraw::popDefs
  • Example#3719 - ImagickDraw::push
  • Example#3720 - ImagickDraw::pushPattern
  • Example#3721 - ImagickDraw::rectangle
  • Example#3722 - ImagickDraw::rotate
  • Example#3723 - ImagickDraw::roundRectangle
  • Example#3724 - ImagickDraw::scale
  • Example#3725 - ImagickDraw::setClipPath
  • Example#3726 - ImagickDraw::setClipRule
  • Example#3727 - ImagickDraw::setClipUnits
  • Example#3728 - ImagickDraw::setFillAlpha
  • Example#3729 - ImagickDraw::setFillColor
  • Example#3730 - ImagickDraw::setFillOpacity
  • Example#3731 - ImagickDraw::setFillRule
  • Example#3732 - ImagickDraw::setFont
  • Example#3733 - ImagickDraw::setFontFamily
  • Example#3734 - ImagickDraw::setFontSize
  • Example#3735 - ImagickDraw::setFontStretch
  • Example#3736 - ImagickDraw::setFontStyle
  • Example#3737 - ImagickDraw::setFontWeight
  • Example#3738 - ImagickDraw::setGravity
  • Example#3739 - ImagickDraw::setStrokeAlpha
  • Example#3740 - ImagickDraw::setStrokeAntialias
  • Example#3741 - ImagickDraw::setStrokeColor
  • Example#3742 - ImagickDraw::setStrokeDashArray
  • Example#3743 - ImagickDraw::setStrokeDashOffset
  • Example#3744 - ImagickDraw::setStrokeLineCap
  • Example#3745 - ImagickDraw::setStrokeLineJoin
  • Example#3746 - ImagickDraw::setStrokeMiterLimit
  • Example#3747 - ImagickDraw::setStrokeOpacity
  • Example#3748 - ImagickDraw::setStrokeWidth
  • Example#3749 - ImagickDraw::setTextAlignment
  • Example#3750 - ImagickDraw::setTextAntialias
  • Example#3751 - ImagickDraw::setTextDecoration
  • Example#3752 - ImagickDraw::setTextUnderColor
  • Example#3753 - ImagickDraw::setVectorGraphics
  • Example#3754 - ImagickDraw::setViewBox
  • Example#3755 - ImagickDraw::skewX
  • Example#3756 - ImagickDraw::skewY
  • Example#3757 - ImagickDraw::translate
  • Example#3758 - ImagickPixel::construct
  • Example#3759 - Basic Imagick::getColor usage
  • Example#3760 - Basic Imagick::getColorAsString usage
  • Example#3761 - ImagickPixel getColorCount
  • Example#3762 - Basic Imagick::getColorValue usage
  • Example#3763 - ImagickPixel::getColorValueQuantum
  • Example#3764 - Basic Imagick::getHSL example
  • Example#3765 - ImagickPixel::isSimilar
  • Example#3766 - ImagickPixel::setColor
  • Example#3767 - Basic Imagick::setColorValue usage
  • Example#3768 - ImagickPixel::setColorValueQuantum
  • Example#3769 - Use ImagickPixel::setHSL to modify a color
  • Example#3770 - ImagickPixelIterator::clear
  • Example#3771 - ImagickPixelIterator::construct
  • Example#3772 - ImagickPixelIterator::getNextIteratorRow
  • Example#3773 - ImagickPixelIterator::resetIterator
  • Example#3774 - ImagickPixelIterator::setIteratorRow
  • Example#3775 - imap_append example
  • Example#3776 - imap_check example
  • Example#3777 - imap_createmailbox example
  • Example#3778 - imap_delete example
  • Example#3779 - imap_fetch_overview example
  • Example#3780 - imap_gc example
  • Example#3781 - imap_get_quota example
  • Example#3782 - imap_get_quota 4.3 or greater example
  • Example#3783 - imap_get_quotaroot example
  • Example#3784 - imap_getacl example
  • Example#3785 - imap_getmailboxes example
  • Example#3786 - imap_list example
  • Example#3787 - imap_mail_compose example
  • Example#3788 - imap_mailboxmsginfo example
  • Example#3789 - imap_mime_header_decode example
  • Example#3790 - Different use of imap_open
  • Example#3791 - imap_open example
  • Example#3792 - imap_ping Example
  • Example#3793 - imap_reopen example
  • Example#3794 - imap_rfc822_parse_adrlist example
  • Example#3795 - imap_rfc822_write_address example
  • Example#3796 - imap_search example
  • Example#3797 - imap_set_quota example
  • Example#3798 - imap_setflag_full example
  • Example#3799 - imap_status example
  • Example#3800 - imap_thread Example
  • Example#3801 - imap_timeout example
  • Example#3802 - 计算散列值并订阅一个用户
  • Example#3803 - Sending mail.
  • Example#3804 - Sending mail with extra headers.
  • Example#3805 - Sending mail with an additional command line parameter.
  • Example#3806 - Sending HTML email
  • Example#3807 - mailparse_determine_best_xfer_encoding example
  • Example#3808 - mailparse_rfc822_parse_addresses example
  • Example#3809 - mailparse_stream_encode example
  • Example#3810 - mailparse_uudecode_all example
  • Example#3811 - bcadd 示例
  • Example#3812 - bccomp example
  • Example#3813 - bcdiv 示例
  • Example#3814 - bcmod example
  • Example#3815 - bcmul 示例
  • Example#3816 - bcpow 示例
  • Example#3817 - bcpow scale example
  • Example#3818 - bcscale example
  • Example#3819 - bcsqrt 示例
  • Example#3820 - bcsub example
  • Example#3821 - Factorial function using GMP
  • Example#3822 - gmp_abs example
  • Example#3823 - gmp_add example
  • Example#3824 - gmp_and example
  • Example#3825 - gmp_clrbit example
  • Example#3826 - gmp_cmp example
  • Example#3827 - gmp_com example
  • Example#3828 - gmp_div_q example
  • Example#3829 - Division of GMP numbers
  • Example#3830 - gmp_div_r example
  • Example#3831 - gmp_divexact example
  • Example#3832 - gmp_export example
  • Example#3833 - gmp_fact example
  • Example#3834 - gmp_gcd example
  • Example#3835 - Solving a linear Diophantine equation
  • Example#3836 - gmp_hamdist example
  • Example#3837 - gmp_import example
  • Example#3838 - Creating GMP number
  • Example#3839 - gmp_intval example
  • Example#3840 - gmp_invert example
  • Example#3841 - gmp_jacobi example
  • Example#3842 - gmp_legendre example
  • Example#3843 - gmp_mod example
  • Example#3844 - gmp_mul example
  • Example#3845 - gmp_neg example
  • Example#3846 - gmp_nextprime example
  • Example#3847 - gmp_or example
  • Example#3848 - gmp_perfect_square example
  • Example#3849 - gmp_popcount example
  • Example#3850 - gmp_pow example
  • Example#3851 - gmp_powm example
  • Example#3852 - gmp_prob_prime example
  • Example#3853 - gmp_random_bits example
  • Example#3854 - gmp_random_range example
  • Example#3855 - gmp_random_seed example
  • Example#3856 - gmp_random example
  • Example#3857 - gmp_scan0 example
  • Example#3858 - gmp_scan1 example
  • Example#3859 - gmp_setbit example - 0 index
  • Example#3860 - gmp_setbit example - 1 index
  • Example#3861 - gmp_setbit example - clearing a bit
  • Example#3862 - gmp_sign example
  • Example#3863 - gmp_sqrt example
  • Example#3864 - gmp_sqrtrem example
  • Example#3865 - Converting a GMP number to a string
  • Example#3866 - gmp_sub example
  • Example#3867 - gmp_testbit example
  • Example#3868 - gmp_xor example
  • Example#3869 - Using Lapack::eigenValues:
  • Example#3870 - Using Lapack::leastSquaresByFactorisation:
  • Example#3871 - Using Lapack::leastSquaresBySVD:
  • Example#3872 - Using Lapack::pseudoInverse:
  • Example#3873 - Using Lapack::singularValues:
  • Example#3874 - Using Lapack::singularValues:
  • Example#3875 - abs 例子
  • Example#3876 - base_convert 例子
  • Example#3877 - bindec 例子
  • Example#3878 - bindec 将输入解读为无符号整数
  • Example#3879 - ceil 例子
  • Example#3880 - cos 例子
  • Example#3881 - decbin 例子
  • Example#3882 - dechex 例子
  • Example#3883 - 大整数的 dechex 例子
  • Example#3884 - decoct 范例
  • Example#3885 - deg2rad 例子
  • Example#3886 - exp 例子
  • Example#3887 - floor 例子
  • Example#3888 - fmod 的使用
  • Example#3889 - hexdec 例子
  • Example#3890 - intdiv 的一些例子
  • Example#3891 - is_nan 例子
  • Example#3892 - 使用 max 的例子
  • Example#3893 - min 用法的例子
  • Example#3894 - 计算一个随机浮点数
  • Example#3895 - mt_rand 例子
  • Example#3896 - mt_srand 例子
  • Example#3897 - octdec 例子
  • Example#3898 - pi 例子
  • Example#3899 - pow 的一些例子
  • Example#3900 - rad2deg 例子
  • Example#3901 - rand 例子
  • Example#3902 - round 例子
  • Example#3903 - mode 例子
  • Example#3904 - sin 例子
  • Example#3905 - sqrt 例子
  • Example#3906 - srand 例子
  • Example#3907 - tan 例子
  • Example#3908 - Evaluating a FDF document
  • Example#3909 - Adding JavaScript code to a FDF
  • Example#3910 - Populating a PDF document
  • Example#3911 - Storing an uploaded file
  • Example#3912 - Detecting all fieldnames in a FDF
  • Example#3913 - Accessing the form data
  • Example#3914 - Accessing the form data
  • Example#3915 - Retrieving FDF as a string
  • Example#3916 - Passing FDF data to a second form
  • Example#3917 - gnupg clearsign example (procedural)
  • Example#3918 - gnupg clearsign example (OO)
  • Example#3919 - keylistiterator
  • Example#3920 - Procedural gnupg_adddecryptkey example
  • Example#3921 - OO gnupg_adddecryptkey example
  • Example#3922 - Procedural gnupg_addencryptkey example
  • Example#3923 - OO gnupg_addencryptkey example
  • Example#3924 - Procedural gnupg_addsignkey example
  • Example#3925 - OO gnupg_addsignkey example
  • Example#3926 - Procedural gnupg_cleardecryptkeys example
  • Example#3927 - OO gnupg_cleardecryptkeys example
  • Example#3928 - Procedural gnupg_clearencryptkeys example
  • Example#3929 - OO gnupg_clearencryptkeys example
  • Example#3930 - Procedural gnupg_clearsignkeys example
  • Example#3931 - OO gnupg_clearsignkeys example
  • Example#3932 - Procedural gnupg_decrypt example
  • Example#3933 - OO gnupg_encrypt example
  • Example#3934 - Procedural gnupg_decryptverify example
  • Example#3935 - OO gnupg_decryptverify example
  • Example#3936 - Procedural gnupg_encrypt example
  • Example#3937 - OO gnupg_encrypt example
  • Example#3938 - Procedural gnupg_encryptsign example
  • Example#3939 - OO gnupg_encryptsign example
  • Example#3940 - Procedural gnupg_export example
  • Example#3941 - OO gnupg_export example
  • Example#3942 - Procedural gnupg_geterror example
  • Example#3943 - OO gnupg_geterror example
  • Example#3944 - Procedural gnupg_getprotocol example
  • Example#3945 - OO gnupg_getprotocol example
  • Example#3946 - Procedural gnupg_import example
  • Example#3947 - OO gnupg_import example
  • Example#3948 - Procedural gnupg_init example
  • Example#3949 - OO gnupg initializer example
  • Example#3950 - Procedural gnupg_keyinfo example
  • Example#3951 - OO gnupg_keyinfo example
  • Example#3952 - Procedural gnupg_setarmor example
  • Example#3953 - OO gnupg_setarmor example
  • Example#3954 - Procedural gnupg_seterrormode example
  • Example#3955 - OO gnupg_seterrormode example
  • Example#3956 - Procedural gnupg_setsignmode example
  • Example#3957 - OO gnupg_setsignmode example
  • Example#3958 - Procedural gnupg_sign example
  • Example#3959 - OO gnupg_sign example
  • Example#3960 - Procedural gnupg_verify example
  • Example#3961 - OO gnupg_verify example
  • Example#3962 - Fancy "Hello world"
  • Example#3963 - swfaction example
  • Example#3964 - swfaction example
  • Example#3965 - swfaction example
  • Example#3966 - swfsprite example
  • Example#3967 - ming_useswfversion example
  • Example#3968 - Importing a DBL file
  • Example#3969 - Using an alpha mask
  • Example#3970 - Usual interactions with buttons
  • Example#3971 - Drag example
  • Example#3972 - swfdisplayitem::multcolor example
  • Example#3973 - swfdisplayitem::rotateto example
  • Example#3974 - swfdisplayitem::setname example
  • Example#3975 - swfgradient example
  • Example#3976 - swfmorph example
  • Example#3977 - Displaying your $movie in a browser
  • Example#3978 - Streaming example
  • Example#3979 - SWFShape::addFill example
  • Example#3980 - swfshape example
  • Example#3981 - swfshape::setline example
  • Example#3982 - swftext example
  • Example#3983 - Hello World example from PDFlib distribution for PHP 4
  • Example#3984 - Hello World example from PDFlib distribution for PHP 5
  • Example#3985 - Creating and using a pattern
  • Example#3986 - Creating and using a template
  • Example#3987 - Hyphennate a text
  • Example#3988 - Drawing a rectangle
  • Example#3989 - Creating and using a spot color
  • Example#3990 - Rotation of the coordinate system
  • Example#3991 - Placing text at a given position
  • Example#3992 - Drawing a dashed line
  • Example#3993 - Translation of the coordinate system
  • Example#3994 - Basic RPMReader Example
  • Example#3995 - rpm_close example
  • Example#3996 - rpm_get_tag example
  • Example#3997 - rpm_is_valid example
  • Example#3998 - rpm_open example
  • Example#3999 - rpm_version example
  • Example#4000 - Incorrect requests
  • Example#4001 - Calling request from a request callback
  • Example#4002 - Calling request from a request callback
  • Example#4003 - Using eio with libevent
  • Example#4004 - Cancelling a request
  • Example#4005 - Calling eio_chmod
  • Example#4006 - Making a custom request
  • Example#4007 - Grouping requests
  • Example#4008 - Using eio with libevent extension
  • Example#4009 - Using eio with event extension
  • Example#4010 - eio_cancel example
  • Example#4011 - eio_custom example
  • Example#4012 - eio_event_loop example
  • Example#4013 - eio_lstat example
  • Example#4014 - Using eio with libevent
  • Example#4015 - Grouping requests
  • Example#4016 - eio_grp example
  • Example#4017 - eio_link example
  • Example#4018 - eio_lstat example
  • Example#4019 - eio_mkdir example
  • Example#4020 - eio_mknod example
  • Example#4021 - eio_nreqs example
  • Example#4022 - eio_open example
  • Example#4023 - eio_poll example
  • Example#4024 - eio_read example
  • Example#4025 - eio_readdir example
  • Example#4026 - eio_readlink example
  • Example#4027 - eio_realpath example
  • Example#4028 - eio_rename example
  • Example#4029 - eio_rmdir example
  • Example#4030 - eio_stat example
  • Example#4031 - eio_statvfs example
  • Example#4032 - eio_symlink example
  • Example#4033 - Simple timers
  • Example#4034 - Periodic timer. Tick each 10.5 seconds
  • Example#4035 - Periodic timer. Use reschedule callback
  • Example#4036 - Periodic timer. Tick every 10.5 seconds starting at now
  • Example#4037 - Wait until STDIN is readable
  • Example#4038 - Use some async I/O to access a socket
  • Example#4039 - Embedding one loop into another
  • Example#4040 - Embedding loop created with kqueue backend into the default loop
  • Example#4041 - Handle SIGTERM signal
  • Example#4042 - Monitor changes of /var/log/messages
  • Example#4043 - Monotor changes of /var/log/messages. Avoid missing updates by means of one second delay
  • Example#4044 - Process status changes
  • Example#4045 - Using reschedule callback
  • Example#4046 - Embedding loop created with kqueue backend into the default loop
  • Example#4047 - Embedding one loop into another
  • Example#4048 - Embedding loop created with kqueue backend into the default loop
  • Example#4049 - Embedding loop created with kqueue backend into the default loop
  • Example#4050 - Periodic timer. Use reschedule callback
  • Example#4051 - Periodic timer. Tick every 10.5 seconds starting at now
  • Example#4052 - Hourly watcher
  • Example#4053 - Handle SIGTERM signal
  • Example#4054 - Monitor changes of /var/log/messages
  • Example#4055 - Monitor changes of /var/log/messages
  • Example#4056 - Simple timers
  • Example#4057 - Monotor changes of /var/log/messages. Avoid missing updates by means of one second delay
  • Example#4058 - Register an I/O watcher for some UDP socket but do not keep the event loop from running just because of that watcher.
  • Example#4059 - Expect Usage Example
  • Example#4060 - Another Expect Usage Example
  • Example#4061 - expect_expectl example
  • Example#4062 - expect_popen example
  • Example#4063 - polling STDIN using basic API
  • Example#4064 - polling STDIN using buffered event API
  • Example#4065 - 进程控制示例
  • Example#4066 - pcntl_fork 示例
  • Example#4067 - pcntl_signal_dispatch 示例
  • Example#4068 - pcntl_signal_get_handler example
  • Example#4069 - pcntl_signal示例
  • Example#4070 - pcntl_sigprocmask 示例
  • Example#4071 - pcntl_sigwaitinfo example
  • Example#4072 - posix_access example
  • Example#4073 - posix_ctermid example
  • Example#4074 - posix_get_last_error example
  • Example#4075 - posix_getcwd example
  • Example#4076 - posix_getegid example
  • Example#4077 - posix_geteuid example
  • Example#4078 - posix_getgid example
  • Example#4079 - Example use of posix_getgrgid
  • Example#4080 - Example use of posix_getgrnam
  • Example#4081 - Example use of posix_getgroups
  • Example#4082 - Example use of posix_getlogin
  • Example#4083 - Example use of posix_getpgid
  • Example#4084 - posix_getpid 的使用例子
  • Example#4085 - Example use of posix_getppid
  • Example#4086 - Example use of posix_getpwnam
  • Example#4087 - Example use of posix_getpwuid
  • Example#4088 - Example use of posix_getrlimit
  • Example#4089 - Example use of posix_getsid
  • Example#4090 - Example use of posix_getuid
  • Example#4091 - A posix_mknod example
  • Example#4092 - posix_setegid example
  • Example#4093 - posix_setgid example
  • Example#4094 - posix_setuid example
  • Example#4095 - posix_strerror example
  • Example#4096 - Example use of posix_times
  • Example#4097 - Example use of posix_uname
  • Example#4098 - escapeshellarg 的例子
  • Example#4099 - escapeshellcmd example
  • Example#4100 - exec 例程
  • Example#4101 - proc_open 例程
  • Example#4102 - shell_exec 例程
  • Example#4103 - system 例程
  • Example#4104 - 获取对象属性表中的部分条目
  • Example#4105 - 计算对象中的属性数量
  • Example#4106 - Runtime inheritance
  • Example#4107 - Thread safe objects from closures
  • Example#4108 - 检测线程运行时的致命错误
  • Example#4109 - 检测对象状态
  • Example#4110 - 检测对象状态
  • Example#4111 - 检测对象状态
  • Example#4112 - 给对象属性加锁
  • Example#4113 - 合并数据到对象的属性表
  • Example#4114 - 等待和唤醒
  • Example#4115 - 弹出对象属性表中的最后一项数据
  • Example#4116 - 弹出对象属性表中第一项数据
  • Example#4117 - 同步
  • Example#4118 - 给对象属性表加锁
  • Example#4119 - 等待和唤醒
  • Example#4120 - 返回创建线程的线程或进程ID
  • Example#4121 - 获取当前执行线程
  • Example#4122 - 返回当前执行线程的ID
  • Example#4123 - 返回引用线程的ID
  • Example#4124 - 在全局范围执行代码块
  • Example#4125 - 检测线程状态
  • Example#4126 - 监测线程是否开始执行
  • Example#4127 - 加入线程
  • Example#4128 - 杀除线程
  • Example#4129 - 开始线程
  • Example#4130 - A basic example of Worker::collect
  • Example#4131 - 返回等待 Worker 执行的对象数量
  • Example#4132 - 检测 Worker 对象状态
  • Example#4133 - 检测 Worker 对象状态
  • Example#4134 - 关闭 Worker
  • Example#4135 - 向 Worker 中入栈对象并执行
  • Example#4136 - 从 Worker 栈中移除对象
  • Example#4137 - protected 方法示例： 标记为 protected 的方法在同一时间仅允许一个线程访问
  • Example#4138 - private 方法示例：标记为 private 的方法只能由创建该对象的线程调用
  • Example#4139 - 创建 Pool 对象
  • Example#4140 - 创建 Pool 对象
  • Example#4141 - 提交任务
  • Example#4142 - 提交任务
  • Example#4143 - 互斥量的创建与销毁
  • Example#4144 - 互斥量的创建与销毁
  • Example#4145 - 互斥量加锁与解锁
  • Example#4146 - 互斥量的加锁与解锁
  • Example#4147 - 互斥量的加锁与解锁
  • Example#4148 - 广播条件变量
  • Example#4149 - 条件变量的创建与销毁
  • Example#4150 - 条件变量的创建与销毁
  • Example#4151 - 发送唤醒信号
  • Example#4152 - 等待条件变量
  • Example#4153 -
  • Example#4154 - Shared Memory Operations Overview
  • Example#4155 - Closing shared memory block
  • Example#4156 - Deleting shared memory block
  • Example#4157 - Create a new shared memory block
  • Example#4158 - Reading shared memory block
  • Example#4159 - Getting the size of the shared memory block
  • Example#4160 - Writing to shared memory block
  • Example#4161 - SyncMutex::__construct named mutex with lock timeout example
  • Example#4162 - SyncMutex::__construct unnamed mutex example
  • Example#4163 - SyncMutex::lock example
  • Example#4164 - SyncMutex::unlock example
  • Example#4165 - SyncSemaphore::__construct example
  • Example#4166 - SyncSemaphore::lock example
  • Example#4167 - SyncSemaphore::unlock example
  • Example#4168 - SyncEvent::__construct example
  • Example#4169 - SyncEvent::fire example
  • Example#4170 - SyncEvent::reset example
  • Example#4171 - SyncEvent::wait example
  • Example#4172 - SyncReaderWriter::__construct example
  • Example#4173 - SyncReaderWriter::readlock example
  • Example#4174 - SyncReaderWriter::readunlock example
  • Example#4175 - SyncReaderWriter::writelock example
  • Example#4176 - SyncReaderWriter::writeunlock example
  • Example#4177 - SyncSharedMemory::__construct example
  • Example#4178 - SyncSharedMemory::first example
  • Example#4179 - SyncSharedMemory::__construct example
  • Example#4180 - SyncSharedMemory::size example
  • Example#4181 - SyncSharedMemory::write example
  • Example#4182 - geoip_asnum_by_name函数的范例：
  • Example#4183 - geoip_continent_code_by_name 函数的使用范例：
  • Example#4184 - geoip_country_code_by_name 函数的范例：
  • Example#4185 - geoip_country_code3_by_name 函数的使用范例：
  • Example#4186 - geoip_country_name_by_name 函数的使用范例：
  • Example#4187 - geoip_database_info 函数的使用范例：
  • Example#4188 - geoip_db_avail 函数的使用范例：
  • Example#4189 - geoip_db_filename函数的使用范例：
  • Example#4190 - geoip_db_get_all_info 使用范例：
  • Example#4191 - geoip_db_get_all_info 使用范例：
  • Example#4192 - 一个 geoip_domain_by_name 使用范例：
  • Example#4193 - 一个 geoip_id_by_name 使用范例：
  • Example#4194 - 一个 geoip_isp_by_name 使用范例：
  • Example#4195 - 一个 geoip_netspeedcell_by_name 使用范例：
  • Example#4196 - 一个 geoip_org_by_name 使用范例：
  • Example#4197 - geoip_record_by_name 例子：
  • Example#4198 - geoip_region_by_name 例子：
  • Example#4199 - geoip_region_name_by_code 使用美国和加拿大地区的范例。
  • Example#4200 - geoip_region_name_by_code 使用 FIPS 代码的范例：
  • Example#4201 - geoip_setup_custom_directory 例子：
  • Example#4202 - geoip_time_zone_by_country_and_region 使用美国和加拿大地区的范例：
  • Example#4203 - geoip_time_zone_by_country_and_region 使用 FIPS 代码的范例：
  • Example#4204 - xor.data file
  • Example#4205 - Simple train
  • Example#4206 - Simple test
  • Example#4207 - fann_create_train_from_callback example
  • Example#4208 - fann_read_train_from_file example
  • Example#4209 - JsonSerializable::jsonSerialize 例子 returning an array
  • Example#4210 - JsonSerializable::jsonSerialize 例子 返回了一个关联数组 array
  • Example#4211 - JsonSerializable::jsonSerialize 例子 返回一个 integer
  • Example#4212 - JsonSerializable::jsonSerialize 例子 返回一个 string
  • Example#4213 - json_decode 的例子
  • Example#4214 - Accessing invalid object properties
  • Example#4215 - common mistakes using json_decode
  • Example#4216 - depth errors
  • Example#4217 - json_decode of large integers
  • Example#4218 - json_encode 例子
  • Example#4219 - json_encode 函数中 options 参数的用法
  • Example#4220 - 选项 JSON_NUMERIC_CHECK 例子
  • Example#4221 - 连续与非连续数组示例
  • Example#4222 - 选项 JSON_PRESERVE_ZERO_FRACTION 的例子
  • Example#4223 - json_last_error 例子
  • Example#4224 - json_encode 的 json_last_error
  • Example#4225 - Judy array example
  • Example#4226 - Lua::assign示例
  • Example#4227 - Lua::call示例
  • Example#4228 - Lua::eval示例
  • Example#4229 - Lua::registerCallback示例
  • Example#4230 - LuaClosure::__invoke示例
  • Example#4231 - constant 的例子
  • Example#4232 - 定义常量
  • Example#4233 - 检查常量
  • Example#4234 - eval 例子 - 简单的文本合并
  • Example#4235 - exit 例子
  • Example#4236 - exit 状态码例子
  • Example#4237 - 无论如何，Shutdown函数与析构函数都会被执行
  • Example#4238 - 列出所有用户浏览器的信息
  • Example#4239 - __halt_compiler 例子
  • Example#4240 - highlight_string 例子
  • Example#4241 - ignore_user_abort例子
  • Example#4242 - pack example
  • Example#4243 - php_strip_whitespace 的例子
  • Example#4244 - sleep 的例子
  • Example#4245 - sys_getloadavg 的例子
  • Example#4246 - time_nanosleep 的例子
  • Example#4247 - time_sleep_until 的一个例子
  • Example#4248 - uniqid 例子
  • Example#4249 - unpack example
  • Example#4250 - unpack example with a repeater
  • Example#4251 - unpack example with unnamed keys
  • Example#4252 - usleep例子
  • Example#4253 - parsekit_compile_file example
  • Example#4254 - parsekit_compile_string example
  • Example#4255 - parsekit_func_arginfo example
  • Example#4256 - SplDoublyLinkedList::__construct example
  • Example#4257 - SplStack::__construct example
  • Example#4258 - SplQueue::__construct example
  • Example#4259 - Efficiently handling tasks with SplQueue
  • Example#4260 - SplFixedArray usage example
  • Example#4261 - SplFixedArray::__construct example
  • Example#4262 - SplFixedArray::count example
  • Example#4263 - SplFixedArray::fromArray example
  • Example#4264 - SplFixedArray::getSize example
  • Example#4265 - SplFixedArray::setSize example
  • Example#4266 - SplFixedArray::toArray example
  • Example#4267 - SplObjectStorage as a set
  • Example#4268 - SplObjectStorage as a map
  • Example#4269 - SplObjectStorage::addAll example
  • Example#4270 - SplObjectStorage::attach example
  • Example#4271 - SplObjectStorage::contains example
  • Example#4272 - SplObjectStorage::count example
  • Example#4273 - SplObjectStorage::current example
  • Example#4274 - SplObjectStorage::detach example
  • Example#4275 - SplObjectStorage::getHash example
  • Example#4276 - SplObjectStorage::getInfo example
  • Example#4277 - SplObjectStorage::key example
  • Example#4278 - SplObjectStorage::next example
  • Example#4279 - SplObjectStorage::offsetExists example
  • Example#4280 - SplObjectStorage::offsetGet example
  • Example#4281 - SplObjectStorage::offsetSet example
  • Example#4282 - SplObjectStorage::offsetUnset example
  • Example#4283 - SplObjectStorage::removeAll example
  • Example#4284 - SplObjectStorage::removeAllExcept example
  • Example#4285 - SplObjectStorage::rewind example
  • Example#4286 - SplObjectStorage::serialize example
  • Example#4287 - SplObjectStorage::setInfo example
  • Example#4288 - SplObjectStorage::unserialize example
  • Example#4289 - SplObjectStorage::valid example
  • Example#4290 - AppendIterator::append example
  • Example#4291 - Iterating AppendIterator with foreach
  • Example#4292 - Iterating AppendIterator with the AppendIterator API
  • Example#4293 - AppendIterator::getInnerIterator example
  • Example#4294 - AppendIterator.getIteratorIndex basic example
  • Example#4295 - AppendIterator::key basic example
  • Example#4296 - ArrayIterator::current example
  • Example#4297 - ArrayIterator::key example
  • Example#4298 - ArrayIterator::next example
  • Example#4299 - ArrayIterator::rewind example
  • Example#4300 - ArrayIterator::valid example
  • Example#4301 - CachingIterator::getCache example
  • Example#4302 - Available callback arguments
  • Example#4303 - Callback basic examples
  • Example#4304 - A DirectoryIterator::__construct example
  • Example#4305 - A DirectoryIterator::current example
  • Example#4306 - A DirectoryIterator::getATime example
  • Example#4307 - A DirectoryIterator::getBasename example
  • Example#4308 - DirectoryIterator::getCTime example
  • Example#4309 - DirectoryIterator::getExtension example
  • Example#4310 -
  • Example#4311 - A DirectoryIterator::getFilename example
  • Example#4312 - DirectoryIterator::getGroup example
  • Example#4313 - DirectoryIterator::getInode example
  • Example#4314 - A DirectoryIterator::getMTime example
  • Example#4315 - DirectoryIterator::getOwner example
  • Example#4316 - DirectoryIterator::getPath example
  • Example#4317 - DirectoryIterator::getPathname example
  • Example#4318 - DirectoryIterator::getPerms example
  • Example#4319 - DirectoryIterator::getSize example
  • Example#4320 - DirectoryIterator::getType example
  • Example#4321 - DirectoryIterator::isDir example
  • Example#4322 - A DirectoryIterator::isDot example
  • Example#4323 - DirectoryIterator::isExecutable example
  • Example#4324 - DirectoryIterator::isFile example
  • Example#4325 - A DirectoryIterator::isLink example
  • Example#4326 - DirectoryIterator::isReadable example
  • Example#4327 - DirectoryIterator::isWritable example
  • Example#4328 - A DirectoryIterator::key example
  • Example#4329 - DirectoryIterator::next example
  • Example#4330 - DirectoryIterator::rewind example
  • Example#4331 - DirectoryIterator::seek example
  • Example#4332 - A DirectoryIterator::__toString example
  • Example#4333 - A DirectoryIterator::valid example
  • Example#4334 - FilesystemIterator::__construct example
  • Example#4335 - FilesystemIterator::current example
  • Example#4336 - FilesystemIterator::key example
  • Example#4337 - FilesystemIterator::next example
  • Example#4338 - FilesystemIterator::rewind example
  • Example#4339 - FilesystemIterator::key example
  • Example#4340 - FilterIterator::accept example
  • Example#4341 - GlobIterator example
  • Example#4342 - GlobIterator::count example
  • Example#4343 - InfiniteIterator::__construct example
  • Example#4344 - LimitIterator usage example
  • Example#4345 - LimitIterator::__construct example
  • Example#4346 - LimitIterator::getPosition example
  • Example#4347 - Iterating a MultipleIterator
  • Example#4348 - NoRewindIterator::__construct example
  • Example#4349 - NoRewindIterator::rewind example
  • Example#4350 - RecursiveArrayIterator::getChildren example
  • Example#4351 - RecursiveArrayIterator::hasChildren example
  • Example#4352 - Available callback arguments
  • Example#4353 - Recursive callback basic example
  • Example#4354 - RecursiveCallbackFilterIterator::hasChildren basic usage
  • Example#4355 - RecursiveDirectoryIterator example
  • Example#4356 - Basic RecursiveFilterIterator example
  • Example#4357 - RecursiveFilterIterator example
  • Example#4358 - Iterating a RecursiveIteratorIterator
  • Example#4359 - RecursiveRegexIterator::__construct example
  • Example#4360 - RecursiveRegexIterator::getChildren example
  • Example#4361 - RecursiveRegexIterator::hasChildren example
  • Example#4362 - RegexIterator::accept example
  • Example#4363 - RegexIterator::__construct example
  • Example#4364 - RegexIterator::getFlags example
  • Example#4365 - RegexIterator::getMode example
  • Example#4366 - RegexIterator::getPregFlags example
  • Example#4367 - RegexIterator::setFlags example
  • Example#4368 - RegexIterator::setMode example
  • Example#4369 - RegexIterator::setPregFlags example
  • Example#4370 - Countable::count example
  • Example#4371 - Basic usage
  • Example#4372 - SeekableIterator::seek example
  • Example#4373 - class_implements example
  • Example#4374 - class_parents example
  • Example#4375 - class_uses example
  • Example#4376 - iterator_apply example
  • Example#4377 - iterator_count example
  • Example#4378 - iterator_to_array example
  • Example#4379 - spl_autoload_register 作为 __autoload 函数的替代
  • Example#4380 - class 未能加载的 spl_autoload_register 例子
  • Example#4381 - spl_classes example
  • Example#4382 - A spl_object_hash example
  • Example#4383 - SplFileInfo::__construct example
  • Example#4384 - SplFileInfo::getBasename example
  • Example#4385 - SplFileInfo::getCTime 例子
  • Example#4386 - SplFileInfo::getExtension example
  • Example#4387 -
  • Example#4388 - SplFileInfo::getFilename example
  • Example#4389 - SplFileInfo::getGroup example
  • Example#4390 - SplFileInfo::getLinkTarget example
  • Example#4391 - SplFileInfo::getOwner example
  • Example#4392 - SplFileInfo::getPath example
  • Example#4393 - SplFileInfo::getPathInfo example
  • Example#4394 - SplFileInfo::getPathname example
  • Example#4395 - SplFileInfo::getPerms example
  • Example#4396 - SplFileInfo::getRealPath example
  • Example#4397 - SplFileInfo::getType example
  • Example#4398 - SplFileInfo::isDir example
  • Example#4399 - SplFileInfo::isExecutable example
  • Example#4400 - SplFileInfo::isFile example
  • Example#4401 - SplFileInfo::isLink example
  • Example#4402 - SplFileInfo::isReadable example
  • Example#4403 - SplFileInfo::openFile example
  • Example#4404 - SplFileInfo::setFileClass example
  • Example#4405 - SplFileInfo::setFileClass example
  • Example#4406 - SplFileInfo::__toString example
  • Example#4407 - SplFileObject::__construct example
  • Example#4408 - SplFileObject::current example
  • Example#4409 - SplFileObject::eof example
  • Example#4410 - SplFileObject::fflush example
  • Example#4411 - SplFileObject::fgetc example
  • Example#4412 - SplFileObject::fgetcsv example
  • Example#4413 - SplFileObject::READ_CSV example
  • Example#4414 - SplFileObject::fgets example
  • Example#4415 - SplFileObject::fgetss example
  • Example#4416 - SplFileObject::flock example
  • Example#4417 - SplFileObject::fpassthru example
  • Example#4418 - SplFileObject::fputcsv example
  • Example#4419 - SplFileObject::fread example
  • Example#4420 - SplFileObject::fscanf example
  • Example#4421 - SplFileObject::fseek example
  • Example#4422 - SplFileObject::fstat example
  • Example#4423 - SplFileObject::ftell example
  • Example#4424 - SplFileObject::ftruncate example
  • Example#4425 - SplFileObject::fwrite example
  • Example#4426 - SplFileObject::getCsvControl example
  • Example#4427 - SplFileObject::getFlags example
  • Example#4428 - SplFileObject::getMaxLineLen example
  • Example#4429 - SplFileObject::key example
  • Example#4430 - SplFileObject::key example with SplFileObject::setMaxLineLen
  • Example#4431 - SplFileObject::next example
  • Example#4432 - SplFileObject::rewind example
  • Example#4433 - SplFileObject::seek example
  • Example#4434 - SplFileObject::setCsvControl example
  • Example#4435 - SplFileObject::setFlags example
  • Example#4436 - SplFileObject::setMaxLineLen example
  • Example#4437 - SplFileObject::valid example
  • Example#4438 - SplTempFileObject example
  • Example#4439 - ArrayObject::append 例子
  • Example#4440 - ArrayObject::asort example
  • Example#4441 - ArrayObject::__construct example
  • Example#4442 - ArrayObject::count 例子
  • Example#4443 - ArrayObject::exchangeArray example
  • Example#4444 - ArrayObject::getArrayCopy example
  • Example#4445 - ArrayObject::getFlags example
  • Example#4446 - ArrayObject::getIterator example
  • Example#4447 - ArrayObject::getIteratorClass example
  • Example#4448 - ArrayObject::ksort example
  • Example#4449 - ArrayObject::natcasesort example
  • Example#4450 - ArrayObject::natsort example
  • Example#4451 - ArrayObject::offsetExists example
  • Example#4452 - ArrayObject::offsetGet example
  • Example#4453 - ArrayObject::offsetSet 例子
  • Example#4454 - ArrayObject::offsetUnset example
  • Example#4455 - ArrayObject::serialize example
  • Example#4456 - ArrayObject::setFlags example
  • Example#4457 - ArrayObject::setIteratorClass example
  • Example#4458 - ArrayObject::uasort example
  • Example#4459 - ArrayObject::uksort example
  • Example#4460 - SplInt usage example
  • Example#4461 - SplFloat usage example
  • Example#4462 - SplEnum usage example
  • Example#4463 - SplEnum::getConstList example
  • Example#4464 - SplBool usage example
  • Example#4465 - SplString usage example
  • Example#4466 - Using file_get_contents to retrieve data from multiple sources
  • Example#4467 - Making a POST request to an https server
  • Example#4468 - Writing data to a compressed file
  • Example#4469 - A Stream for reading/writing global variables
  • Example#4470 - Listing files from tar archives
  • Example#4471 - stream_bucket_prepend examples
  • Example#4472 - 使用 stream_context_create
  • Example#4473 - Using stream_context_get_default
  • Example#4474 - stream_context_get_options 的例子
  • Example#4475 - stream_context_get_params example
  • Example#4476 - stream_context_set_default example
  • Example#4477 - A stream_copy_to_stream example
  • Example#4478 - Controlling where filters are applied
  • Example#4479 - Filter for capitalizing characters on foo-bar.txt stream
  • Example#4480 - Registering a generic filter class to match multiple filter names.
  • Example#4481 - 动态地重新过滤一个资源流
  • Example#4482 - stream_get_contents 例子
  • Example#4483 - 使用 stream_get_filters
  • Example#4484 - 使用 stream_get_transports
  • Example#4485 - stream_get_wrappers 例子
  • Example#4486 - 检查一个流类型是否存在
  • Example#4487 - stream_is_local example
  • Example#4488 - stream_notification_callback example
  • Example#4489 - Simple progressbar for commandline download client
  • Example#4490 - stream_resolve_include_path example
  • Example#4491 - stream_select Example
  • Example#4492 - stream_set_timeout example
  • Example#4493 - stream_set_write_buffer example
  • Example#4494 - stream_socket_client example
  • Example#4495 - Using UDP connection
  • Example#4496 - stream_socket_enable_crypto example
  • Example#4497 - A stream_socket_pair example
  • Example#4498 - stream_socket_recvfrom example
  • Example#4499 - stream_socket_sendto Example
  • Example#4500 - Using TCP server sockets
  • Example#4501 - Using UDP server sockets
  • Example#4502 - A stream_socket_shutdown example
  • Example#4503 - 如何注册一个 stream wrapper
  • Example#4504 - Basic Tidy usage
  • Example#4505 - tidy::getBody example
  • Example#4506 - tidy::cleanrepair example
  • Example#4507 - tidy::__construct example
  • Example#4508 - tidy::diagnose example
  • Example#4509 - tidy_get_error_buffer example
  • Example#4510 - tidy::getConfig example
  • Example#4511 - tidy_getopt example
  • Example#4512 - Print all options along with their documentation and default value
  • Example#4513 - tidy::getStatus example
  • Example#4514 - tidy::head example
  • Example#4515 - tidy::html example
  • Example#4516 - tidy::parseFile example
  • Example#4517 - tidy::parseString example
  • Example#4518 - tidy::repairFile example
  • Example#4519 - tidy::repairString example
  • Example#4520 - tidy::root example
  • Example#4521 - tidyNode::hasChildren example
  • Example#4522 - tidyNode::hasChildren example
  • Example#4523 - tidyNode::hasSiblings example
  • Example#4524 - Extract ASP code from a mixed HTML document
  • Example#4525 - Extract comments from a mixed HTML document
  • Example#4526 - Extract HTML code from a mixed HTML document
  • Example#4527 - Extract JSTE code from a mixed HTML document
  • Example#4528 - Extract PHP code from a mixed HTML document
  • Example#4529 - Extract text from a mixed HTML document
  • Example#4530 - ob_tidyhandler example
  • Example#4531 - tidy_access_count example
  • Example#4532 - tidy_config_count example
  • Example#4533 - tidy_error_count example
  • Example#4534 - tidy_get_output example
  • Example#4535 - tidy_setopt example
  • Example#4536 - tidy_warning_count example
  • Example#4537 - Strip comments with the tokenizer
  • Example#4538 - token_get_all examples
  • Example#4539 - token_name example
  • Example#4540 - base64_decode 示例
  • Example#4541 - base64_encode 示例
  • Example#4542 - get_headers 例子
  • Example#4543 - get_headers using HEAD example
  • Example#4544 - get_meta_tags 解析了什么
  • Example#4545 - get_meta_tags 返回什么些
  • Example#4546 - http_build_query 使用示例
  • Example#4547 - http_build_query 使用数字下标的元素
  • Example#4548 - http_build_query 使用复杂的数组
  • Example#4549 - http_build_query 使用对象
  • Example#4550 - parse_url 例子
  • Example#4551 - parse_url 解析丢失协议的例子
  • Example#4552 - rawurldecode 示例
  • Example#4553 - 在 FTP URL 里包含一个密码
  • Example#4554 - rawurlencode 示例 2
  • Example#4555 - urldecode 示例
  • Example#4556 - urlencode 例子
  • Example#4557 - urlencode 与 htmlentities 例子
  • Example#4558 - Basic Javascript execution
  • Example#4559 - Yaml 范例
  • Example#4560 - Parse callback example
  • Example#4561 - Emit callback example
  • Example#4562 - yaml_emit example
  • Example#4563 - yaml_parse example
  • Example#4564 - 一个典型的应用目录结构
  • Example#4565 - 入口文件
  • Example#4566 - 重写规则
  • Example#4567 - 应用配置文件
  • Example#4568 - 默认控制器
  • Example#4569 - 默认视图文件
  • Example#4570 - 运行应用
  • Example#4571 - config为数组的例子
  • Example#4572 - config为ini文件的例子
  • Example#4573 - A Bootstrapexample
  • Example#4574 - Yaf_Application::bootstrapexample
  • Example#4575 - Yaf_Application::clearLastErrorexample
  • Example#4576 - A ini config file example
  • Example#4577 - Yaf_Application::__constructexample
  • Example#4578 - Yaf_Application::__constructexample
  • Example#4579 - Yaf_Application::environexample
  • Example#4580 - Yaf_Application::executeexample
  • Example#4581 - Yaf_Application::getConfigexample
  • Example#4582 - Yaf_Application::getDispatcherexample
  • Example#4583 - Yaf_Application::getLastErrorMsgexample
  • Example#4584 - Yaf_Application::getLastErrorNoexample
  • Example#4585 - Yaf_Application::getModulesexample
  • Example#4586 - Bootstrap example
  • Example#4587 - Yaf_Dispatcher::autoRenderexample
  • Example#4588 - Yaf_Dispatcher::catchExceptionexample
  • Example#4589 - Yaf_Dispatcher::registerPluginexample
  • Example#4590 - A custom View engineexample
  • Example#4591 - Yaf_Dispatcher::setViewexample
  • Example#4592 - Yaf_Dispatcher::throwexceptionexample
  • Example#4593 - Yaf_Dispatcher::throwexceptionexample
  • Example#4594 - Yaf_Config_Iniexample
  • Example#4595 - 在一个独立的文件中定义action
  • Example#4596 - Dummy_action.php
  • Example#4597 - Yaf_Controller_Abstract::forward例子
  • Example#4598 - Yaf_Action_Abstract::executeexample
  • Example#4599 - Yaf_Action_Abstract::executeexample
  • Example#4600 - Yaf_View_Simple::assignexample
  • Example#4601 - templateexample
  • Example#4602 - Yaf_View_Simple::assignRefexample
  • Example#4603 - templateexample
  • Example#4604 - Yaf_View_Simple::clearexample
  • Example#4605 - Yaf_View_Simple::__constructorexample
  • Example#4606 - Yaf_View_Simple::__setexample
  • Example#4607 - Config example
  • Example#4608 - 注册本地命名空间
  • Example#4609 - 加载类
  • Example#4610 - 加载命名空间类
  • Example#4611 - MVC类加载例子
  • Example#4612 - MVC 类区别
  • Example#4613 - MVC loading example
  • Example#4614 - Yaf_Loader::registerLocalNamespaceexample
  • Example#4615 - Plugin example
  • Example#4616 - Yaf_Plugin_Abstract::routerShutdownexample
  • Example#4617 - Yaf_Response_Abstract::appendBodyexample
  • Example#4618 - Yaf_Response_Abstract::getBodyexample
  • Example#4619 - Yaf_Response_Abstract::prependBodyexample
  • Example#4620 - Yaf_Response_Abstract::responseexample
  • Example#4621 - Yaf_Response_Abstract::setBodyexample
  • Example#4622 - Yaf_Route_Map::assembleexample
  • Example#4623 - Yaf_Route_Mapexample
  • Example#4624 - Yaf_Route_Mapexample
  • Example#4625 - Yaf_Route_Mapexample
  • Example#4626 - Yaf_Route_Regex::assembleexample
  • Example#4627 - Yaf_Route_Regexexample
  • Example#4628 - Yaf_Route_Regex(as of 2.3.0)example
  • Example#4629 - Yaf_Route_Regexexample
  • Example#4630 - Yaf_Route_Rewrite::assembleexample
  • Example#4631 - Yaf_Route_Rewriteexample
  • Example#4632 - Yaf_Route_Rewriteexample
  • Example#4633 - Yaf_Route_Rewrite(as of 2.3.0)example
  • Example#4634 - Apache的跳转规则
  • Example#4635 - Apache的跳转规则
  • Example#4636 - Lighttpd的跳转规则
  • Example#4637 - Nginx的跳转规则
  • Example#4638 - Yaf_Route_Static(default route)example
  • Example#4639 - application.iniexample
  • Example#4640 - Yaf_Dispatcher::autoConfigexample
  • Example#4641 - Yaf_Dispatcher::autoRenderexample
  • Example#4642 - 注册一些路由到Bootstrap
  • Example#4643 - plugin Dummy.php (under application.directory/plugins)
  • Example#4644 - Yaf_Route_Simple::assembleexample
  • Example#4645 - Yaf_Route_Simple::routeexample
  • Example#4646 - Yaf_Route_Simple::routeexample
  • Example#4647 - Yaf_Route_Static::assembleexample
  • Example#4648 - Yaf_Route_Static::routeexample
  • Example#4649 - Yaf_Route_Supervar::assembleexample
  • Example#4650 - Yaf_Route_Supervarexample
  • Example#4651 - Taintexample
  • Example#4652 - Creating a chdb file
  • Example#4653 - Loading and looking up a chdb file
  • Example#4654 - chdb::get example
  • Example#4655 - chdb_create example
  • Example#4656 - 使用 PHP cURL 模块获取 example.com 的主页
  • Example#4657 - 初始化一个cURL会话来获取一个网页
  • Example#4658 - 复制一个cURL句柄
  • Example#4659 - curl_errno example
  • Example#4660 - curl_error example
  • Example#4661 - curl_escape 示例
  • Example#4662 - 获取一个网页
  • Example#4663 - curl_getinfo example
  • Example#4664 - 初始化一个新的cURL会话并获取一个网页
  • Example#4665 - curl_multi_add_handle example
  • Example#4666 - curl_multi_close example
  • Example#4667 - curl_multi_exec example
  • Example#4668 - 一个curl_multi_info_read范例
  • Example#4669 - curl_multi_init example
  • Example#4670 - curl_multi_strerror 函数的范例：
  • Example#4671 - curl_reset 示例
  • Example#4672 - 初始化一个新的cURL会话并抓取一个web页面
  • Example#4673 - 我们对curl_setopt_array的等价实现
  • Example#4674 - 初始化一个新的cURL会话并获取一个网页
  • Example#4675 - 上传文件 (PHP 5.5.0 后被废弃)
  • Example#4676 - curl_share_setopt 函数范例：
  • Example#4677 - curl_share_init 函数的范例：
  • Example#4678 - curl_share_setopt 函数的范例：
  • Example#4679 - curl_errno 函数的范例：
  • Example#4680 - curl_escape 示例
  • Example#4681 - curl_version example
  • Example#4682 - CURLFile::__construct 示例
  • Example#4683 - Simple HTTP client
  • Example#4684 - HTTP client using asynchronous DNS resolver
  • Example#4685 - Echo server
  • Example#4686 - SSL echo server
  • Example#4687 - Signal handler
  • Example#4688 - Use libevent's loop to process requests of `eio' extension
  • Example#4689 - Miscellaneous
  • Example#4690 - Simple HTTP server
  • Example#4691 - Simple HTTPS server
  • Example#4692 - OpenSSL connection
  • Example#4693 - EventHttpConnection::makeRequest example
  • Example#4694 - Connection listener based on a UNIX domain socket
  • Example#4695 - Simple SMTP server
  • Example#4696 - Handling SIGTERM signal
  • Example#4697 - Event::addSignal example
  • Example#4698 - Event::addTimer example
  • Example#4699 - EventBase::getFeatures example
  • Example#4700 - EventBase::getMethod example
  • Example#4701 - EventBuffer::search example
  • Example#4702 - EventBufferEvent::connect example
  • Example#4703 - Connect to UNIX domain socket which presumably is served by a server, read response from the server and output it to the console
  • Example#4704 - EventBufferEvent::connectHost example
  • Example#4705 - Buffer event's read callback
  • Example#4706 - EventBufferEvent::getOutput example
  • Example#4707 - EventBufferEvent::sslError example
  • Example#4708 - Simple SMTP server
  • Example#4709 - EventConfig::avoidMethod example
  • Example#4710 - EventConfig::__construct example
  • Example#4711 - EventConfig::requireFeatures example
  • Example#4712 - EventHttp::accept example
  • Example#4713 - EventHttp::addServerAlias example
  • Example#4714 - EventHttp::bind example
  • Example#4715 - Simple HTTP server
  • Example#4716 - EventHttp::setCallback example
  • Example#4717 - EventHttp::setDefaultCallback example
  • Example#4718 - EventHttpConnection::makeRequest example
  • Example#4719 - EventHttpConnection::setCloseCallback example
  • Example#4720 - EventHttpRequest::__construct example
  • Example#4721 - EventHttpRequest::sendError example
  • Example#4722 - EventListener::__construct example
  • Example#4723 - EventSslContext::__construct example
  • Example#4724 - FTP 例程
  • Example#4725 - ftp_alloc 函数例程
  • Example#4726 - ftp_cdup 例子
  • Example#4727 - ftp_chdir 例子
  • Example#4728 - ftp_chmod 函数例程
  • Example#4729 - ftp_close 例子
  • Example#4730 - ftp_connect 例子
  • Example#4731 - ftp_delete 例子
  • Example#4732 - ftp_exec 例子
  • Example#4733 - ftp_fget 例子
  • Example#4734 - ftp_fput 例子
  • Example#4735 - ftp_get_option 实例
  • Example#4736 - ftp_get 例子
  • Example#4737 - ftp_login 例子
  • Example#4738 - ftp_mdtm 例子
  • Example#4739 - ftp_nb_fget 函数例程
  • Example#4740 - ftp_nb_fput 函数例程
  • Example#4741 - ftp_nb_get 实例
  • Example#4742 - 使用 ftp_nb_get 函数断线续传
  • Example#4743 - 用 ftp_nb_get 在 100 的位置断线续传并存为 "newfile"
  • Example#4744 - ftp_nb_put 实例
  • Example#4745 - 使用 ftp_nb_put 来断线续传
  • Example#4746 - ftp_nlist 例子
  • Example#4747 - ftp_pasv 实例
  • Example#4748 - ftp_put 实例
  • Example#4749 - ftp_pwd 例子
  • Example#4750 - 使用 ftp_raw 登录远程 FTP 服务器
  • Example#4751 - ftp_rawlist 例子
  • Example#4752 - ftp_rename 例子
  • Example#4753 - ftp_rmdir 例子
  • Example#4754 - ftp_set_option 例子
  • Example#4755 - 向一个 FTP 服务器发送一条 SITE 命令
  • Example#4756 - ftp_size 例子
  • Example#4757 - ftp_ssl_connect 函数例程
  • Example#4758 - ftp_systype 例子
  • Example#4759 - Basic Gearman client and worker
  • Example#4760 - Basic Gearman client and worker, background
  • Example#4761 - Basic Gearman client and worker, submitting tasks
  • Example#4762 - Adding two job servers
  • Example#4763 - Add two job servers
  • Example#4764 - Basic submission of two tasks
  • Example#4765 - Basic submission of two tasks with passing application context
  • Example#4766 - Two tasks, one background and one not
  • Example#4767 - A high priority task along with two normal tasks
  • Example#4768 - A low priority task along with two normal tasks
  • Example#4769 - Monitor completion of multiple background tasks
  • Example#4770 - Simple job submission with immediate return
  • Example#4771 - Submitting a job and retrieving incremental status
  • Example#4772 - Submit and monitor a background job
  • Example#4773 - Simple job submission with immediate return
  • Example#4774 - Submitting a job and retrieving incremental status
  • Example#4775 - Get the status of a long running job
  • Example#4776 - Monitor the status of a long running background job
  • Example#4777 - Simple worker making use of extra application context data
  • Example#4778 - Add alternate Gearman servers
  • Example#4779 - Add two job servers
  • Example#4780 - GearmanWorker::setId example
  • Example#4781 - A simple worker with a 5 second timeout
  • Example#4782 - Running worker in non-blocking mode
  • Example#4783 - GearmanWorker::work example
  • Example#4784 - Hypothetical output from gopher://gopher.example.com/
  • Example#4785 - Using gopher_parsedir
  • Example#4786 - Search for all UPnP devices and services.
  • Example#4787 - Implementing light server
  • Example#4788 - Implementing light client
  • Example#4789 - Create new UPnP context and get IP address of the host
  • Example#4790 - Create new UPnP context and get port number
  • Example#4791 - Create new UPnP context and set host path
  • Example#4792 - Create new UPnP context
  • Example#4793 - Create new UPnP context and set callback
  • Example#4794 - Create new UPnP context and start browsing
  • Example#4795 - Create new UPnP context and start browsing
  • Example#4796 - Create new UPnP context and get device info service
  • Example#4797 - Create new UPnP context and get device info service
  • Example#4798 - Retrieve an object
  • Example#4799 - LDAP search example
  • Example#4800 - Complete example with authenticated bind
  • Example#4801 - 使用 LDAP Bind
  • Example#4802 - Using LDAP Bind Anonymously
  • Example#4803 - Complete example of password check
  • Example#4804 - Example of connecting to LDAP server.
  • Example#4805 - Example of connecting securely to LDAP server.
  • Example#4806 - LDAP pagination
  • Example#4807 - LDAP pagination
  • Example#4808 - ldap-count-entries example
  • Example#4809 - Enumerating all LDAP error messages
  • Example#4810 - Generating and catching an error
  • Example#4811 - Show the list of attributes held for a particular directory entry
  • Example#4812 - Check protocol version
  • Example#4813 - List all values of the "mail" attribute for a directory entry
  • Example#4814 - Produce a list of all organizational units of an organization
  • Example#4815 - Add a telephone number to a contact
  • Example#4816 - Rename a user
  • Example#4817 - Add two e-mail addresses to a user
  • Example#4818 - Change a user's password
  • Example#4819 - Change a user's password (Active Directory)
  • Example#4820 - ldap_parse_result example
  • Example#4821 - LDAP search
  • Example#4822 - Set protocol version
  • Example#4823 - Set server controls
  • Example#4824 - LDAP sort
  • Example#4825 - memcache扩展概览示例
  • Example#4826 - 使用memcache的session处理器
  • Example#4827 - Memcache::add示例
  • Example#4828 - Memcache::addServer 示例
  • Example#4829 - Memcache::close示例
  • Example#4830 - Memcache::connect example
  • Example#4831 - Memcache::decrement example
  • Example#4832 - Memcache::delete example
  • Example#4833 - Memcache::flush示例
  • Example#4834 - Memcache::get 示例
  • Example#4835 - Memcache::getExtendedStats 示例
  • Example#4836 - Memcache::getServerStatus 示例
  • Example#4837 - Memcache::getVersion 示例
  • Example#4838 - Memcache::increment示例
  • Example#4839 - Memcache::pconnect示例
  • Example#4840 - Memcache::replace示例
  • Example#4841 - Memcache::set 示例
  • Example#4842 - Memcache::set 示例
  • Example#4843 - Memcache::setCompressThreshold 示例
  • Example#4844 - Memcache::setServerParams 示例
  • Example#4845 - 结果回调示例
  • Example#4846 - 通读回调示例
  • Example#4847 - Memcached::addServer example
  • Example#4848 - Memcached::addServers示例
  • Example#4849 - Memcached::append示例
  • Example#4850 - Memcached::cas 示例
  • Example#4851 - 创建一个Memcached对象
  • Example#4852 - Memcached::decrement 示例
  • Example#4853 - Memcached::delete 示例
  • Example#4854 - Memcached::fetch 示例
  • Example#4855 - Memcached::getDelayed 示例
  • Example#4856 - Memcached::flush 示例
  • Example#4857 - Memcached::get 示例 #1
  • Example#4858 - Memcached::get 示例 #2
  • Example#4859 - Memcached::getDelayed 示例
  • Example#4860 - Memcached::getMulti 示例
  • Example#4861 - Memcached::GET_PRESERVE_ORDER 示例
  • Example#4862 - 获取Memcached选项
  • Example#4863 - Memcached::getResultCode 示例
  • Example#4864 - Memcached::getResultMessage 示例
  • Example#4865 - Memcached::getServerByKey 示例
  • Example#4866 - Memcached::getServerList 示例
  • Example#4867 - Memcached::getStats 示例
  • Example#4868 - Memcached::getVersion 示例
  • Example#4869 - Memcached::increment 示例
  • Example#4870 - Memcached::prepend 示例
  • Example#4871 - Memcached::set 示例
  • Example#4872 - Memcached::setByKey 示例
  • Example#4873 - Memcached::setMulti 示例
  • Example#4874 - 设置一个memcached选项值
  • Example#4875 - Setting Memcached options
  • Example#4876 - mqseries_back example
  • Example#4877 - mqseries_begin example
  • Example#4878 - mqseries_close example
  • Example#4879 - mqseries_cmit example
  • Example#4880 - mqseries_conn example
  • Example#4881 - mqseries_connx example
  • Example#4882 - mqseries_connx example using SSL connection & OCSP Responder URL
  • Example#4883 - mqseries_disc example
  • Example#4884 - mqseries_get example
  • Example#4885 - mqseries_inq example
  • Example#4886 - mqseries_open example
  • Example#4887 - mqseries_put example
  • Example#4888 - mqseries_strerror example
  • Example#4889 - define_syslog_variables example
  • Example#4890 - 使用 dns_get_record函数
  • Example#4891 - 使用dns_get_record配合DNS_ANY的例子
  • Example#4892 - fsockopen的例子
  • Example#4893 - 使用UDP连接
  • Example#4894 - 一个使用 gethostbyaddr 的简单例子
  • Example#4895 - A simple gethostbyname example
  • Example#4896 - gethostbynamel example
  • Example#4897 - A simple gethostname example
  • Example#4898 - getprotobyname example
  • Example#4899 - getservbyname example
  • Example#4900 - header_register_callback example
  • Example#4901 - Unsetting specific header.
  • Example#4902 - Unsetting all previously set headers.
  • Example#4903 - 下载对话框
  • Example#4904 - 缓存指令
  • Example#4905 - Examples using headers_list
  • Example#4906 - Examples using headers_sent
  • Example#4907 - Using http_response_code in a web server environment
  • Example#4908 - Using http_response_code in a CLI environment
  • Example#4909 - inet_ntop Example
  • Example#4910 - inet_pton Example
  • Example#4911 - ip2long 例子
  • Example#4912 - 显示IP地址
  • Example#4913 - setcookie send example
  • Example#4914 - setcookie delete example
  • Example#4915 - setcookie and arrays
  • Example#4916 - Using syslog
  • Example#4917 - Procedural usage of rrd
  • Example#4918 - OO usage of rrd
  • Example#4919 - RRDGraph::setOptions example
  • Example#4920 - Set multiple color options
  • Example#4921 - RRDUpdater::update examples
  • Example#4922 - Creating a connection and connecting to a remote WebSphere MQSeries Messaging Server
  • Example#4923 - Creating a connection and connecting to a remote WebSphere Application Server
  • Example#4924 - Creating a connection and connecting to an MQTT server
  • Example#4925 - Creating a message with a simple text body
  • Example#4926 - Setting a text format property using the default syntax
  • Example#4927 - Setting a property using a type hint
  • Example#4928 - Retrieving a property from a message header
  • Example#4929 - Adding a message to a queue and receiving a response
  • Example#4930 - Creating a durable subscription to a topic
  • Example#4931 - Subscribing to a topic using a WebSphere Platform Messaging (WPM) server
  • Example#4932 - Receiving published data using a durable subscription
  • Example#4933 - Deleting a durable subscription to a topic
  • Example#4934 - Handling an error from a method that returns no result
  • Example#4935 - Handling an error from a method that returns a result
  • Example#4936 - Committing the current unit of work
  • Example#4937 - Creating a connection to a Messaging Server using the IBM MQSeries protocol (WMQ)
  • Example#4938 - Creating a connection with application transaction control and default host and port values
  • Example#4939 - Creating a connection to a Messaging Server using the IBM WebSphere Platform Messaging protocol (WPM)
  • Example#4940 - Creating a connection object and connecting to a Messaging Server
  • Example#4941 - Disconnecting from a Messaging Server
  • Example#4942 - Using the error number and description properties
  • Example#4943 - Using the error number and description properties
  • Example#4944 - Checking whether there us a connection to a Messaging Server
  • Example#4945 - Retrieve the next message from a queue without removing it
  • Example#4946 - Retrieve a specific message from a queue without removing it from the queue
  • Example#4947 - Retrieve all messages in a queue without removing them
  • Example#4948 - Retrieve all messages from a queue with a matching correlation id
  • Example#4949 - Receiving a message from a queue
  • Example#4950 - Receiving a message from a queue with options
  • Example#4951 - Receiving a message from a subscription
  • Example#4952 - Removing a message from a queue by message id
  • Example#4953 - Cancelling an in-flight unit of work
  • Example#4954 - Send a message to a queue
  • Example#4955 - Publish a message to a topic
  • Example#4956 - Send a request and receive a response
  • Example#4957 - Turn on debugging output
  • Example#4958 - Turn off debugging output
  • Example#4959 - Subscribe to a topic
  • Example#4960 - Delete a subscription
  • Example#4961 - Setting a text string into the body of a message
  • Example#4962 - Creating a message
  • Example#4963 - Creating a message with a simple text payload
  • Example#4964 - Setting a text format property using the default syntax
  • Example#4965 - Setting a text format property using a type hint
  • Example#4966 - Setting properties as the sender of a message
  • Example#4967 - Retreiving property values from a message
  • Example#4968 - snmp_get_quick_print 示例
  • Example#4969 - Using snmp_get_valueretrieval
  • Example#4970 - Using snmp_read_mib
  • Example#4971 - Using snmp_set_enum_print
  • Example#4972 - Using snmprealwalk
  • Example#4973 - Using snmp_set_valueretrieval
  • Example#4974 - Using snmp2_get
  • Example#4975 - Using snmp2_get_next
  • Example#4976 - Using snmp2_real_walk
  • Example#4977 - Using snmp2_set
  • Example#4978 - Using snmp2_set for setting BITS SNMP object id
  • Example#4979 - snm2_pwalk Example
  • Example#4980 - Using snmp3_get
  • Example#4981 - Using snmp3_getnext
  • Example#4982 - Using snmp3_real_walk
  • Example#4983 - Using snmp3_set
  • Example#4984 - Using snmp3_set for setting BITS SNMP object id
  • Example#4985 - snmp3_walk Example
  • Example#4986 - Using snmpgetnext
  • Example#4987 - Using snmprealwalk
  • Example#4988 - SNMP::close example
  • Example#4989 - Fetching sysLocation
  • Example#4990 - Single SNMP object
  • Example#4991 - Multiple SNMP objects
  • Example#4992 - SNMP::getErrno example
  • Example#4993 - SNMP::getError example
  • Example#4994 - Single SNMP object
  • Example#4995 - Miltiple SNMP objects
  • Example#4996 - Set single SNMP object id
  • Example#4997 - Set multiple values using single SNMP::set call
  • Example#4998 - Using SNMP::set for setting BITS SNMP object id
  • Example#4999 - SNMP::setSecurity example
  • Example#5000 - SNMP::walk example
  • Example#5001 - suffix_as_key example
  • Example#5002 - Socket举例：简单的TCP/IP服务器
  • Example#5003 - Socket举例：简单的TCP/IP客户端
  • Example#5004 - 使用 socket_bind 来设置套接字资源地址
  • Example#5005 - socket_create_pair example
  • Example#5006 - socket_create_pair IPC example
  • Example#5007 - socket_get_option example
  • Example#5008 - socket_import_stream example
  • Example#5009 - socket_last_error example
  • Example#5010 - socket_recv 范例
  • Example#5011 - socket_recvfrom example
  • Example#5012 - Using NULL with socket_select
  • Example#5013 - Understanding socket_select's result
  • Example#5014 - socket_select example
  • Example#5015 - socket_sendto Example
  • Example#5016 - socket_set_block example
  • Example#5017 - socket_set_nonblock example
  • Example#5018 - socket_set_option example
  • Example#5019 - socket_strerror example
  • Example#5020 - Authenticating with a ssh agent
  • Example#5021 - Authentication using a public hostkey
  • Example#5022 - Retrieving a list of authentication methods
  • Example#5023 - Authenticating with a password
  • Example#5024 - Authentication using a public key
  • Example#5025 - ssh2_connect example
  • Example#5026 - Executing a command
  • Example#5027 - Opening a shell and retrieving the stderr stream associated with it
  • Example#5028 - Checking the fingerprint against a known value
  • Example#5029 - Determining what methods were negotiated
  • Example#5030 - Adding a publickey with ssh2_publickey_add
  • Example#5031 - Listing authorized keys with ssh2_publickey_list
  • Example#5032 - Downloading a file via SCP
  • Example#5033 - Uploading a file via SCP
  • Example#5034 - Changing the mode of a file on a remote server
  • Example#5035 - Stating a symbolic link via SFTP
  • Example#5036 - Creating a directory on a remote server
  • Example#5037 - Reading a symbolic link
  • Example#5038 - Resolving a pathname
  • Example#5039 - Renaming a file via sftp
  • Example#5040 - Removing a directory on a remote server
  • Example#5041 - Stating a file via SFTP
  • Example#5042 - Creating a symbolic link
  • Example#5043 - Deleting a file
  • Example#5044 - Opening a file via SFTP
  • Example#5045 - Requesting an interactive shell
  • Example#5046 - Opening a tunnel to an arbitrary host
  • Example#5047 - 面向对象风格
  • Example#5048 - 过程化风格
  • Example#5049 - stomp_connect_error example
  • Example#5050 - stomp_version example
  • Example#5051 - 面向对象风格
  • Example#5052 - 过程化风格
  • Example#5053 - 面向对象风格
  • Example#5054 - 过程化风格
  • Example#5055 - 面向对象风格
  • Example#5056 - 过程化风格
  • Example#5057 - 面向对象风格
  • Example#5058 - 过程化风格
  • Example#5059 - 面向对象风格
  • Example#5060 - 过程化风格
  • Example#5061 - 面向对象风格
  • Example#5062 - 过程化风格
  • Example#5063 - 面向对象风格
  • Example#5064 - 过程化风格
  • Example#5065 - 面向对象风格
  • Example#5066 - 过程化风格
  • Example#5067 - 面向对象风格
  • Example#5068 - 过程化风格
  • Example#5069 - Train from array
  • Example#5070 - Train from a file
  • Example#5071 - svn_add 例子
  • Example#5072 - Default authentication example
  • Example#5073 - svn_blame example
  • Example#5074 - Basic example
  • Example#5075 - Basic example
  • Example#5076 - Basic example
  • Example#5077 - Basic example
  • Example#5078 - 基本示例
  • Example#5079 - Basic example
  • Example#5080 - Diffing two revisions of a repository path
  • Example#5081 - Portably diffing two local files
  • Example#5082 - svn_export example
  • Example#5083 - Basic example
  • Example#5084 - svn_log example
  • Example#5085 - svn_ls example
  • Example#5086 - Basic example
  • Example#5087 - Basic example
  • Example#5088 - Deny all connections from localhost
  • Example#5089 - Ban an URL
  • Example#5090 - Get statistic snapshot
  • Example#5091 - Read varnish shared memory log
  • Example#5092 - VarnishAdmin::__construct example
  • Example#5093 - Parallel searching using Yaz
  • Example#5094 - CCL configuration
  • Example#5095 - CCL Parsing
  • Example#5096 - Record Update
  • Example#5097 - Array for GRS-1 record
  • Example#5098 - Working with MARCXML
  • Example#5099 - PHP function that scans titles
  • Example#5100 - Query Examples
  • Example#5101 - Sort Criterias
  • Example#5102 - Example for NIS errors
  • Example#5103 - Example for the NIS first
  • Example#5104 - Example for the default domain
  • Example#5105 - Example for the NIS master
  • Example#5106 - Example for NIS match
  • Example#5107 - Example for NIS next
  • Example#5108 - Example for the NIS order
  • Example#5109 - A ZMQContext example
  • Example#5110 - A ZMQContext example
  • Example#5111 - A ZMQContext example
  • Example#5112 - A ZMQSocket example
  • Example#5113 - A send/recv example
  • Example#5114 - A ZMQPoll example
  • Example#5115 - Zookeeper::addAuth example
  • Example#5116 - Zookeeper::create example
  • Example#5117 - Zookeeper::delete example
  • Example#5118 - Zookeeper::exists example
  • Example#5119 - Zookeeper::get example
  • Example#5120 - Zookeeper::getAcl example
  • Example#5121 - Zookeeper::set example
  • Example#5122 - Zookeeper::setAcl example
  • Example#5123 - Zookeeper::setDebugLevel example
  • Example#5124 -
  • Example#5125 - udm_api_version example
  • Example#5126 - udm_cat_listexample
  • Example#5127 - Specifying path to the current category in the following format: '> Root > Sport > Auto > Ferrari'
  • Example#5128 - udm_load_ispell_data example
  • Example#5129 - udm_load_ispell_data example
  • Example#5130 - solr_get_version example
  • Example#5131 - Contents of the BootStrap file
  • Example#5132 - Adding a document to the index
  • Example#5133 - Merging one document into another document
  • Example#5134 - Searching for documents - SolrObject responses
  • Example#5135 - Searching for documents - SolrDocument responses
  • Example#5136 - Simple TermsComponent example - basic
  • Example#5137 - Simple TermsComponent example - using a prefix
  • Example#5138 - Simple TermsComponent example - specifying a minimum frequency
  • Example#5139 - Simple Facet Example
  • Example#5140 - Simple Facet Example - with optional field override for mincount
  • Example#5141 - Facet Date Example
  • Example#5142 - Connecting to SSL-Enabled Server
  • Example#5143 - Collapsing a SolrQuery
  • Example#5144 - Solr Real Time Get (RTG) example SolrClient::getById
  • Example#5145 - SolrInputDocument::addChildDocument example
  • Example#5146 - SolrInputDocument::addChildDocuments example
  • Example#5147 - SolrDocument::toArray example
  • Example#5148 - SolrObject::__construct example
  • Example#5149 - SolrObject::offsetUnset example
  • Example#5150 - SolrClient::addDocument example
  • Example#5151 - SolrClient::addDocument example 2
  • Example#5152 - SolrClient::addDocuments example
  • Example#5153 - SolrClient::__construct example
  • Example#5154 - SolrQuery::deleteByQuery example
  • Example#5155 - SolrClient::getById example
  • Example#5156 - SolrClient::getByIds example
  • Example#5157 - SolrClient::ping example
  • Example#5158 - SolrClient::query example
  • Example#5159 - SolrClient::request example
  • Example#5160 - SolrClient::setResponseWriter example
  • Example#5161 - SolrParams::setParam example
  • Example#5162 - SolrQuery::addFacetField example
  • Example#5163 - SolrQuery::addFacetField example
  • Example#5164 - SolrQuery::addFilterQuery example
  • Example#5165 - SolrQuery::addGroupSortField example
  • Example#5166 - SolrQuery::collapse example
  • Example#5167 - SolrQuery::setExpand example
  • Example#5168 - SolrDisMaxQuery::addBigramPhraseField example
  • Example#5169 - SolrDisMaxQuery::addBoostQuery example
  • Example#5170 - SolrDisMaxQuery::addPhraseField example
  • Example#5171 - SolrDisMaxQuery::addQueryField example
  • Example#5172 - SolrDisMaxQuery::addTrigramPhraseField example
  • Example#5173 - SolrDisMaxQuery::addUserField example
  • Example#5174 - SolrDisMaxQuery::__construct example
  • Example#5175 - SolrDisMaxQuery::removeBigramPhraseField example
  • Example#5176 - SolrDisMaxQuery::removeBoostQuery example
  • Example#5177 - SolrDisMaxQuery::removePhraseField example
  • Example#5178 - SolrDisMaxQuery::removeQueryField example
  • Example#5179 - SolrDisMaxQuery::removeTrigramPhraseField example
  • Example#5180 - SolrDisMaxQuery::removeUserField example
  • Example#5181 - SolrDisMaxQuery::setBigramPhraseFields example
  • Example#5182 - SolrDisMaxQuery::setBigramPhraseSlop example
  • Example#5183 - SolrDisMaxQuery::setBoostFunction example
  • Example#5184 - SolrDisMaxQuery::setBoostQuery example
  • Example#5185 - SolrDisMaxQuery::setMinimumMatch example
  • Example#5186 - SolrDisMaxQuery::setPhraseFields example
  • Example#5187 - SolrDisMaxQuery::setPhraseSlop example
  • Example#5188 - SolrDisMaxQuery::setQueryAlt example
  • Example#5189 - SolrDisMaxQuery::setQueryPhraseSlop example
  • Example#5190 - SolrDisMaxQuery::setTieBreaker example
  • Example#5191 - SolrDisMaxQuery::setTrigramPhraseFields example
  • Example#5192 - SolrDisMaxQuery::setTrigramPhraseSlop example
  • Example#5193 - SolrDisMaxQuery::setUserFields example
  • Example#5194 - SolrDisMaxQuery::useDisMaxQueryParser example
  • Example#5195 - SolrDisMaxQuery::useEDisMaxQueryParser example
  • Example#5196 - SolrCollapseFunction::__construct example
  • Example#5197 - SolrCollapseFunction::setHint example
  • Example#5198 - SolrCollapseFunction::setMax example
  • Example#5199 - 基本使用范例
  • Example#5200 - Basic search query
  • Example#5201 - A Swish::__construct example
  • Example#5202 - Basic Swish::getMetaList example
  • Example#5203 - Basic Swish::getPropertyList example
  • Example#5204 - Basic Swish::prepare example
  • Example#5205 - Basic Swish::query example
  • Example#5206 - Basic SwishResult::stem example
  • Example#5207 - Basic SwishResults::getParsedWords example
  • Example#5208 - Basic SwishResults::nextResult example
  • Example#5209 - Basic SwishResults::seekResult example
  • Example#5210 - Basic SwishSearch::execute example
  • Example#5211 - Basic SwishSearch::resetLimit example
  • Example#5212 - Basic SwishSearch::setLimit example
  • Example#5213 - Basic SwishSearch::setPhraseDelimiter example
  • Example#5214 - Basic SwishSearch::setSort example
  • Example#5215 - Basic SwishSearch::setStructure example
  • Example#5216 - 用 .htaccess 禁用一个目录的 PHP 解析
  • Example#5217 - apache_get_modules 示例
  • Example#5218 - apache_get_version example
  • Example#5219 - apache_getenv example
  • Example#5220 - apache_lookup_uri 例子
  • Example#5221 - Passing information between PHP and Perl
  • Example#5222 - Logging values in access.log
  • Example#5223 - apache_request_headers 示例
  • Example#5224 - apache_response_headers 示例
  • Example#5225 - 使用 apache_setenv 设置一个 Apache 环境变量
  • Example#5226 - getallheaders 示例
  • Example#5227 - nsapi_request_headers example
  • Example#5228 - 在 $_SESSION 中注册变量。
  • Example#5229 - 从 $_SESSION 中反注册变量。
  • Example#5230 - 某单一用户的点击数
  • Example#5231 - 样例信息
  • Example#5232 - session_cache_expire 示例
  • Example#5233 - session_cache_limiter 示例
  • Example#5234 - session_create_id example with session_regenerate_id
  • Example#5235 - 销毁会话数据以及 $_SESSION
  • Example#5236 - session_gc example for task managers like cron
  • Example#5237 - session_gc example for user accessible script
  • Example#5238 - session_name 示例
  • Example#5239 - A session_regenerate_id 示例
  • Example#5240 - 自定义会话管理器： 完整代码请参见 SessionHandlerInterface。
  • Example#5241 - 使用对象自定义会话保存管理器
  • Example#5242 - page1.php
  • Example#5243 - page2.php
  • Example#5244 - 覆盖 Cookie 超时时间设定
  • Example#5245 - 读取会话之后立即关闭会话存储文件
  • Example#5246 - Using SessionHandler to add encryption to internal PHP save handlers.
  • Example#5247 - Example using SessionHandlerInterface
  • Example#5248 - bbcode_add_smiley usage example
  • Example#5249 - bbcode_create example
  • Example#5250 - bbcode_set_arg_parser usage example
  • Example#5251 - bbcode_set_flags usage example
  • Example#5252 - 合法模式示例
  • Example#5253 - 非法模式示例
  • Example#5254 - 比较preg_filter 和preg_replace的示例
  • Example#5255 - preg_grep 示例
  • Example#5256 - preg_last_error 示例
  • Example#5257 - 查找所有文本中的电话号码。
  • Example#5258 - 查找匹配的HTML标签（贪婪）
  • Example#5259 - 使用子命名组
  • Example#5260 - 查找文本字符串"php"
  • Example#5261 - 查找单词"word"
  • Example#5262 - 获取URL中的域名
  • Example#5263 - 使用命名子组
  • Example#5264 - preg_quote示例
  • Example#5265 - 将文本中的单词替换为斜体
  • Example#5266 - preg_replace_callback_array example
  • Example#5267 - preg_replace_callback 和 匿名函数
  • Example#5268 - preg_replace_callback示例
  • Example#5269 - preg_replace_callback使用递归构造处理BB码的封装
  • Example#5270 - 使用后向引用紧跟数值原文
  • Example#5271 - preg_replace中使用基于索引的数组
  • Example#5272 - 替换一些值
  • Example#5273 - 剥离空白字符
  • Example#5274 - 使用参数count
  • Example#5275 - preg_split示例：获取搜索字符串的部分
  • Example#5276 - 将一个字符串分隔为组成它的字符
  • Example#5277 - 分隔一个字符串并获取每部分的偏移量
  • Example#5278 - Regular Expression Examples
  • Example#5279 - ereg_replace 例子
  • Example#5280 - ereg_replace 例子
  • Example#5281 - 将 URL 替换为超连接
  • Example#5282 - ereg 例子
  • Example#5283 - 高亮搜索结果
  • Example#5284 - eregi 例子
  • Example#5285 - split 例子
  • Example#5286 - split 例子
  • Example#5287 - spliti 例子
  • Example#5288 - sql_regcase 例子
  • Example#5289 - addcslashes 例子
  • Example#5290 - 一个 addslashes 例子
  • Example#5291 - chr 例子
  • Example#5292 - chunk_split 例子
  • Example#5293 - convert_uudecode 例子
  • Example#5294 - convert_uuencode 例子
  • Example#5295 - count_chars 示例
  • Example#5296 - 显示一个 crc32 校验码
  • Example#5297 - crypt 范例
  • Example#5298 - 利用 htpasswd 进行 crypt 加密
  • Example#5299 - 以不同散列类型使用 crypt
  • Example#5300 - echo 例子
  • Example#5301 - explode 例子
  • Example#5302 - explode return examples
  • Example#5303 - limit 参数的例子
  • Example#5304 - fprintf: zero-padded integers
  • Example#5305 - fprintf: formatting currency
  • Example#5306 - Translation Table Example
  • Example#5307 - hex2bin 例子
  • Example#5308 - Decoding HTML entities
  • Example#5309 - A htmlentities example
  • Example#5310 - Usage of ENT_IGNORE
  • Example#5311 - 一个 htmlspecialchars_decode 的例子
  • Example#5312 - htmlspecialchars example
  • Example#5313 - implode 例子
  • Example#5314 - lcfirst 例子：
  • Example#5315 - levenshtein 例子：
  • Example#5316 - localeconv example
  • Example#5317 - ltrim的使用范例
  • Example#5318 - md5_file 使用范例
  • Example#5319 - md5 范例
  • Example#5320 - metaphone basic example
  • Example#5321 - Using the phonemes parameter
  • Example#5322 - money_format 例子
  • Example#5323 - nl2br 使用范例
  • Example#5324 - 使用 is_xhtml 生成合法的 HTML 标记
  • Example#5325 - 各种换行分隔符
  • Example#5326 - number_format Example
  • Example#5327 - ord 范例
  • Example#5328 - parse_str 的使用
  • Example#5329 - print 范例
  • Example#5330 - rtrim 使用范例
  • Example#5331 - setlocale Examples
  • Example#5332 - setlocale Examples for Windows
  • Example#5333 - sha1_file 范例
  • Example#5334 - sha1 范例
  • Example#5335 - Soundex Examples
  • Example#5336 - Argument swapping
  • Example#5337 - Argument swapping
  • Example#5338 - Argument swapping
  • Example#5339 - Argument swapping
  • Example#5340 - Specifying padding character
  • Example#5341 - Position specifier with other specifiers
  • Example#5342 - printf: various examples
  • Example#5343 - printf: string specifiers
  • Example#5344 - sprintf: zero-padded integers
  • Example#5345 - sprintf: formatting currency
  • Example#5346 - sprintf: scientific notation
  • Example#5347 - sscanf 例子
  • Example#5348 - sscanf - using optional parameters
  • Example#5349 - str_ireplace 范例
  • Example#5350 - str_pad 范例
  • Example#5351 - str_repeat 范例
  • Example#5352 - str_replace 基本范例
  • Example#5353 - 可能的 str_replace 替换范例
  • Example#5354 - str_rot13 范例
  • Example#5355 - str_shuffle 范例
  • Example#5356 - str_split 使用范例
  • Example#5357 - str_word_count 范例
  • Example#5358 - strcasecmp 范例
  • Example#5359 - strcmp 例子
  • Example#5360 - strcspn example
  • Example#5361 - strip_tags 范例
  • Example#5362 - stripos 范例
  • Example#5363 - stripslashes 范例
  • Example#5364 - 对数组使用 stripslashes
  • Example#5365 - stristr 范例
  • Example#5366 - 测试字符串的存在与否
  • Example#5367 - 使用非字符串 needle
  • Example#5368 - strlen 范例
  • Example#5369 - strpbrk 范例
  • Example#5370 - 使用 ===
  • Example#5371 - 使用 !==
  • Example#5372 - 使用位置偏移量
  • Example#5373 - strrchr 范例
  • Example#5374 - 使用 strrev 反转字符串
  • Example#5375 - strripos 简单范例
  • Example#5376 - 检查字串是否存在
  • Example#5377 - 使用偏移位置进行查找
  • Example#5378 - strspn 范例
  • Example#5379 - strstr 范例
  • Example#5380 - strtok 范例
  • Example#5381 - 旧的 strtok 运行机制
  • Example#5382 - 新的 strtok 运行机制
  • Example#5383 - strtolower 范例
  • Example#5384 - strtoupper 范例
  • Example#5385 - strtr 范例
  • Example#5386 - 使用两个参数的 strtr 范例
  • Example#5387 - strtr behavior comparison
  • Example#5388 - substr_compare 范例
  • Example#5389 - substr_count 范例
  • Example#5390 - substr_replace 范例
  • Example#5391 - Using substr_replace to replace multiple strings at once
  • Example#5392 - 使用负数 start
  • Example#5393 - 使用负数 length
  • Example#5394 - substr 基本用法
  • Example#5395 - substr casting behaviour
  • Example#5396 -
  • Example#5397 - trim 使用范例
  • Example#5398 - 使用 trim 清理数组值
  • Example#5399 - ucfirst 范例
  • Example#5400 - ucwords 范例
  • Example#5401 - vfprintf: 前导 0 的整数
  • Example#5402 - vprintf: 前导 0 的整数
  • Example#5403 - vsprintf: 前导 0 的整数
  • Example#5404 - wordwrap 范例
  • Example#5405 - wordwrap 范例
  • Example#5406 - array_change_key_case例一
  • Example#5407 - array_chunk 例子
  • Example#5408 - 从结果集中取出first names列
  • Example#5409 - 从结果集中总取出last names列，用相应的id作为键值
  • Example#5410 - 一个 array_combine 简单的例子
  • Example#5411 - array_count_values 例子
  • Example#5412 - array_diff_assoc 例子
  • Example#5413 - array_diff_assoc example
  • Example#5414 - array_diff_key 例
  • Example#5415 - array_diff_uassoc 例子
  • Example#5416 - array_diff_ukey 例子
  • Example#5417 - array_diff 例子
  • Example#5418 - array_fill_keys 范例
  • Example#5419 - array_fill 例子
  • Example#5420 - array_filter 例子
  • Example#5421 - array_filter 无 callback
  • Example#5422 - array_flip 例子
  • Example#5423 - array_flip 例子：冲突
  • Example#5424 - array_intersect_assoc 例子
  • Example#5425 - array_intersect_key 例子
  • Example#5426 - array_intersect_uassoc 例子
  • Example#5427 - array_intersect_ukey 例子
  • Example#5428 - array_intersect example
  • Example#5429 - array_key_exists 例子
  • Example#5430 - array_key_exists 与 isset 的对比
  • Example#5431 - array_keys 例子
  • Example#5432 - array_map 例子
  • Example#5433 - array_map 使用匿名函数 (PHP 5.3.0 起)
  • Example#5434 - array_map：使用更多的数组
  • Example#5435 - 多维数组：创建数组，内部包含数组
  • Example#5436 - array_map 键（key）是 string
  • Example#5437 - array_merge_recursive 例子
  • Example#5438 - array_merge PHP 5 例子
  • Example#5439 - array_merge 例子
  • Example#5440 - Simple array_merge 例子
  • Example#5441 - Sorting multiple arrays
  • Example#5442 - 排序多维数组
  • Example#5443 - 对数据库结果进行排序
  • Example#5444 - 不区分大小写字母排序
  • Example#5445 - 名次排列
  • Example#5446 - array_pad 例子
  • Example#5447 - array_pop 例子
  • Example#5448 - array_product 例子
  • Example#5449 - array_push 例子
  • Example#5450 - array_rand 例子
  • Example#5451 - array_reduce 例子
  • Example#5452 - array_replace_recursive 范例
  • Example#5453 - array_replace_recursive 及其递归表现
  • Example#5454 - array_replace 范例
  • Example#5455 - array_reverse 例子
  • Example#5456 - array_search 例子
  • Example#5457 - array_shift 例子
  • Example#5458 - array_slice 例子
  • Example#5459 - array_splice 例子
  • Example#5460 - array_splice 例子
  • Example#5461 - array_sum 例子
  • Example#5462 - array_udiff_assoc 例子
  • Example#5463 - array_udiff_uassoc 例子
  • Example#5464 - array_udiff 例子
  • Example#5465 - array_uintersect_assoc 例子
  • Example#5466 - array_uintersect_uassoc 例子
  • Example#5467 - array_uintersect 例子
  • Example#5468 - array_unique 例子
  • Example#5469 - array_unique 和类型
  • Example#5470 - array_unshift 例子
  • Example#5471 - array_values 例子
  • Example#5472 - array_walk_recursive example
  • Example#5473 - array_walk 例子
  • Example#5474 - array 例子
  • Example#5475 - array 的自动索引
  • Example#5476 - 从 1 开始索引的 array
  • Example#5477 - 访问双引号内的数组
  • Example#5478 - arsort 例子
  • Example#5479 - asort 例子
  • Example#5480 - compact 例子
  • Example#5481 - count 例子
  • Example#5482 - 递归 count 例子
  • Example#5483 - 使用 current 系列函数的例子
  • Example#5484 - each 例子
  • Example#5485 - 用 each 遍历数组
  • Example#5486 - end 例子
  • Example#5487 - extract 例子
  • Example#5488 - in_array 例子
  • Example#5489 - in_array 严格类型检查例子
  • Example#5490 - in_array 中用数组作为 needle
  • Example#5491 - key 例子
  • Example#5492 - krsort 例子
  • Example#5493 - ksort 例子
  • Example#5494 - list 例子
  • Example#5495 - list 用法的一个例子
  • Example#5496 - 使用嵌套的 list
  • Example#5497 - 在 list 中使用数组索引
  • Example#5498 - natcasesort 例子
  • Example#5499 - natsort examples demonstrating basic usage
  • Example#5500 - natsort examples demonstrating potential gotchas
  • Example#5501 - next 及相关函数的用法示例
  • Example#5502 - prev 及相关函数用法示例
  • Example#5503 - range 例子
  • Example#5504 - reset 例子
  • Example#5505 - rsort 例
  • Example#5506 - shuffle 例子
  • Example#5507 - sort 例子
  • Example#5508 - 使用不区分大小写自然排序的 sort 例子
  • Example#5509 - uasort 的基本例子
  • Example#5510 - uksort 例子
  • Example#5511 - usort 例子
  • Example#5512 - 使用多维数组的 usort 例子
  • Example#5513 - usort example using a member function of an object
  • Example#5514 - usort example using a closure to sort a multi-dimensional array
  • Example#5515 - classes.inc
  • Example#5516 - test_script.php
  • Example#5517 - class_alias 例子
  • Example#5518 - class_exists 例子
  • Example#5519 - autoload parameter 例子
  • Example#5520 - get_called_class 的使用
  • Example#5521 - get_class_methods 示例
  • Example#5522 - get_class_vars 示例
  • Example#5523 - get_class_vars example
  • Example#5524 - get_class_vars and scoping behaviour
  • Example#5525 - 使用 get_class
  • Example#5526 - Using get_class
  • Example#5527 - Using get_class in superclass
  • Example#5528 - get_declared_classes 例子
  • Example#5529 - get_declared_interfaces 例子
  • Example#5530 - 使用 get_object_vars
  • Example#5531 - Use of get_object_vars
  • Example#5532 - 使用 get_parent_class
  • Example#5533 - Using get_parent_class
  • Example#5534 - interface_exists 例子
  • Example#5535 - is_a 例子
  • Example#5536 - 在 PHP 5 中使用 instanceof 运算符
  • Example#5537 - is_subclass_of 例子
  • Example#5538 - is_subclass_of example
  • Example#5539 - method_exists 例子
  • Example#5540 - Static method_exists 例子
  • Example#5541 - A property_exists example
  • Example#5542 - classkit_import example
  • Example#5543 - classkit_method_add example
  • Example#5544 - classkit_method_copy example
  • Example#5545 - classkit_method_redefine example
  • Example#5546 - classkit_method_remove example
  • Example#5547 - classkit_method_rename example
  • Example#5548 - A ctype_alnum 示例 (使用默认的区域设置)
  • Example#5549 - 一个 ctype_alpha 例子（使用默认的语言环境）
  • Example#5550 - 一个 ctype_cntrl 例子
  • Example#5551 - 一个 ctype_digit 例子
  • Example#5552 - 一个通过 ctype_digit 来比对字符和整数的例子。
  • Example#5553 - 一个 ctype_graph 例子
  • Example#5554 - 一个 ctype_lower 例子 (使用默认的语言环境)
  • Example#5555 - 一个 ctype_print 例子
  • Example#5556 - 一个 ctype_punct 的例子
  • Example#5557 - 一个 ctype_space 例子
  • Example#5558 - 一个 ctype_upper 例子 （使用当前默认语言环境）
  • Example#5559 - 一个 ctype_xdigit 的例子
  • Example#5560 - Vector
  • Example#5561 - Map
  • Example#5562 - Ds\Collection::clear example
  • Example#5563 - Ds\Collection::copy example
  • Example#5564 - Ds\Collection::isEmpty example
  • Example#5565 - Ds\Collection::toArray example
  • Example#5566 - Ds\Hashable::hash example
  • Example#5567 - Ds\Sequence::allocate example
  • Example#5568 - Ds\Sequence::apply example
  • Example#5569 - Ds\Sequence::capacity example
  • Example#5570 - Ds\Sequence::contains example
  • Example#5571 - Ds\Sequence::filter example using callback function
  • Example#5572 - Ds\Sequence::filter example without a callback function
  • Example#5573 - Ds\Sequence::find example
  • Example#5574 - Ds\Sequence::first example
  • Example#5575 - Ds\Sequence::get example
  • Example#5576 - Ds\Sequence::get example using array syntax
  • Example#5577 - Ds\Sequence::insert example
  • Example#5578 - Ds\Sequence::join example using a separator string
  • Example#5579 - Ds\Sequence::join example without a separator string
  • Example#5580 - Ds\Sequence::last example
  • Example#5581 - Ds\Sequence::map example
  • Example#5582 - Ds\Sequence::merge example
  • Example#5583 - Ds\Sequence::pop example
  • Example#5584 - Ds\Sequence::push example
  • Example#5585 - Ds\Sequence::reduce with initial value example
  • Example#5586 - Ds\Sequence::reduce without an initial value example
  • Example#5587 - Ds\Sequence::remove example
  • Example#5588 - Ds\Sequence::reverse example
  • Example#5589 - Ds\Sequence::reversed example
  • Example#5590 - Ds\Sequence::rotate example
  • Example#5591 - Ds\Sequence::set example
  • Example#5592 - Ds\Sequence::set example using array syntax
  • Example#5593 - Ds\Sequence::shift example
  • Example#5594 - Ds\Sequence::slice example
  • Example#5595 - Ds\Sequence::sort example
  • Example#5596 - Ds\Sequence::sort example using a comparator
  • Example#5597 - Ds\Sequence::sorted example
  • Example#5598 - Ds\Sequence::sorted example using a comparator
  • Example#5599 - Ds\Sequence::sum integer example
  • Example#5600 - Ds\Sequence::sum float example
  • Example#5601 - Ds\Sequence::unshift example
  • Example#5602 - Ds\Vector::allocate example
  • Example#5603 - Ds\Vector::apply example
  • Example#5604 - Ds\Vector::capacity example
  • Example#5605 - Ds\Vector::clear example
  • Example#5606 - Ds\Vector::__construct example
  • Example#5607 - Ds\Vector::contains example
  • Example#5608 - Ds\Vector::copy example
  • Example#5609 - Ds\Vector::filter example using callback function
  • Example#5610 - Ds\Vector::filter example without a callback function
  • Example#5611 - Ds\Vector::find example
  • Example#5612 - Ds\Vector::first example
  • Example#5613 - Ds\Vector::get example
  • Example#5614 - Ds\Vector::get example using array syntax
  • Example#5615 - Ds\Vector::insert example
  • Example#5616 - Ds\Vector::isEmpty example
  • Example#5617 - Ds\Vector::join example using a separator string
  • Example#5618 - Ds\Vector::join example without a separator string
  • Example#5619 - Ds\Vector::last example
  • Example#5620 - Ds\Vector::map example
  • Example#5621 - Ds\Vector::merge example
  • Example#5622 - Ds\Vector::pop example
  • Example#5623 - Ds\Vector::push example
  • Example#5624 - Ds\Vector::reduce with initial value example
  • Example#5625 - Ds\Vector::reduce without an initial value example
  • Example#5626 - Ds\Vector::remove example
  • Example#5627 - Ds\Vector::reverse example
  • Example#5628 - Ds\Vector::reversed example
  • Example#5629 - Ds\Vector::rotate example
  • Example#5630 - Ds\Vector::set example
  • Example#5631 - Ds\Vector::set example using array syntax
  • Example#5632 - Ds\Vector::shift example
  • Example#5633 - Ds\Vector::slice example
  • Example#5634 - Ds\Vector::sort example
  • Example#5635 - Ds\Vector::sort example using a comparator
  • Example#5636 - Ds\Vector::sorted example
  • Example#5637 - Ds\Vector::sorted example using a comparator
  • Example#5638 - Ds\Vector::sum integer example
  • Example#5639 - Ds\Vector::sum float example
  • Example#5640 - Ds\Vector::toArray example
  • Example#5641 - Ds\Vector::unshift example
  • Example#5642 - Ds\Deque::allocate example
  • Example#5643 - Ds\Deque::apply example
  • Example#5644 - Ds\Deque::capacity example
  • Example#5645 - Ds\Deque::clear example
  • Example#5646 - Ds\Deque::__construct example
  • Example#5647 - Ds\Deque::contains example
  • Example#5648 - Ds\Deque::copy example
  • Example#5649 - Ds\Deque::filter example using callback function
  • Example#5650 - Ds\Deque::filter example without a callback function
  • Example#5651 - Ds\Deque::find example
  • Example#5652 - Ds\Deque::first example
  • Example#5653 - Ds\Deque::get example
  • Example#5654 - Ds\Deque::get example using array syntax
  • Example#5655 - Ds\Deque::insert example
  • Example#5656 - Ds\Deque::isEmpty example
  • Example#5657 - Ds\Deque::join example using a separator string
  • Example#5658 - Ds\Deque::join example without a separator string
  • Example#5659 - Ds\Deque::last example
  • Example#5660 - Ds\Deque::map example
  • Example#5661 - Ds\Deque::merge example
  • Example#5662 - Ds\Deque::pop example
  • Example#5663 - Ds\Deque::push example
  • Example#5664 - Ds\Deque::reduce with initial value example
  • Example#5665 - Ds\Deque::reduce without an initial value example
  • Example#5666 - Ds\Deque::remove example
  • Example#5667 - Ds\Deque::reverse example
  • Example#5668 - Ds\Deque::reversed example
  • Example#5669 - Ds\Deque::rotate example
  • Example#5670 - Ds\Deque::set example
  • Example#5671 - Ds\Deque::set example using array syntax
  • Example#5672 - Ds\Deque::shift example
  • Example#5673 - Ds\Deque::slice example
  • Example#5674 - Ds\Deque::sort example
  • Example#5675 - Ds\Deque::sort example using a comparator
  • Example#5676 - Ds\Deque::sorted example
  • Example#5677 - Ds\Deque::sorted example using a comparator
  • Example#5678 - Ds\Deque::sum integer example
  • Example#5679 - Ds\Deque::sum float example
  • Example#5680 - Ds\Deque::toArray example
  • Example#5681 - Ds\Deque::unshift example
  • Example#5682 - Ds\Map::allocate example
  • Example#5683 - Ds\Map::apply example
  • Example#5684 - Ds\Map::capacity example
  • Example#5685 - Ds\Map::clear example
  • Example#5686 - Ds\Map::__construct example
  • Example#5687 - Ds\Map::copy example
  • Example#5688 - Ds\Map::diff example
  • Example#5689 - Ds\Map::filter example using callback function
  • Example#5690 - Ds\Map::filter example without a callback function
  • Example#5691 - Ds\Map::first example
  • Example#5692 - Ds\Map::get example
  • Example#5693 - Ds\Map::get example using array syntax
  • Example#5694 - Ds\Map::hasKey example
  • Example#5695 - Ds\Map::hasValue example
  • Example#5696 - Ds\Map::intersect example
  • Example#5697 - Ds\Map::isEmpty example
  • Example#5698 - Ds\Map::keys example
  • Example#5699 - Ds\Map::ksort example
  • Example#5700 - Ds\Map::ksort example using a comparator
  • Example#5701 - Ds\Map::ksorted example
  • Example#5702 - Ds\Map::ksorted example using a comparator
  • Example#5703 - Ds\Map::last example
  • Example#5704 - Ds\Map::map example
  • Example#5705 - Ds\Map::merge example
  • Example#5706 - Ds\Map::pairs example
  • Example#5707 - Ds\Map::put example
  • Example#5708 - Ds\Map::put example using objects as keys
  • Example#5709 - Ds\Map::putAll example
  • Example#5710 - Ds\Map::reduce with initial value example
  • Example#5711 - Ds\Map::reduce without an initial value example
  • Example#5712 - Ds\Map::remove example
  • Example#5713 - Ds\Map::reverse example
  • Example#5714 - Ds\Map::reversed example
  • Example#5715 - Ds\Map::skip example
  • Example#5716 - Ds\Map::slice example
  • Example#5717 - Ds\Map::sort example
  • Example#5718 - Ds\Map::sort example using a comparator
  • Example#5719 - Ds\Map::sort example
  • Example#5720 - Ds\Map::sort example using a comparator
  • Example#5721 - Ds\Map::sum integer example
  • Example#5722 - Ds\Map::sum float example
  • Example#5723 - Ds\Map::toArray example
  • Example#5724 - Ds\Map::union example
  • Example#5725 - Ds\Map::values example
  • Example#5726 - Ds\Map::xor example
  • Example#5727 - Ds\Pair::clear example
  • Example#5728 - Ds\Pair::copy example
  • Example#5729 - Ds\Pair::isEmpty example
  • Example#5730 - Ds\Pair::toArray example
  • Example#5731 - Ds\Set::add example using integers
  • Example#5732 - Ds\Set::add example using objects
  • Example#5733 - Ds\Set::allocate example
  • Example#5734 - Ds\Set::capacity example
  • Example#5735 - Ds\Set::clear example
  • Example#5736 - Ds\Set::__construct example
  • Example#5737 - Ds\Set::contains example
  • Example#5738 - Ds\Set::copy example
  • Example#5739 - Ds\Set::diff example
  • Example#5740 - Ds\Set::filter example using callback function
  • Example#5741 - Ds\Set::filter example without a callback function
  • Example#5742 - Ds\Set::first example
  • Example#5743 - Ds\Set::get example
  • Example#5744 - Ds\Set::get example using array syntax
  • Example#5745 - Ds\Set::intersect example
  • Example#5746 - Ds\Set::isEmpty example
  • Example#5747 - Ds\Set::join example using a separator string
  • Example#5748 - Ds\Set::join example without a separator string
  • Example#5749 - Ds\Set::last example
  • Example#5750 - Ds\Set::merge example
  • Example#5751 - Ds\Set::reduce with initial value example
  • Example#5752 - Ds\Set::reduce without an initial value example
  • Example#5753 - Ds\Set::remove example
  • Example#5754 - Ds\Set::reverse example
  • Example#5755 - Ds\Set::reversed example
  • Example#5756 - Ds\Set::slice example
  • Example#5757 - Ds\Set::sort example
  • Example#5758 - Ds\Set::sort example using a comparator
  • Example#5759 - Ds\Set::sorted example
  • Example#5760 - Ds\Set::sorted example using a comparator
  • Example#5761 - Ds\Set::sum integer example
  • Example#5762 - Ds\Set::sum float example
  • Example#5763 - Ds\Set::toArray example
  • Example#5764 - Ds\Set::union example
  • Example#5765 - Ds\Set::xor example
  • Example#5766 - Ds\Stack::clear example
  • Example#5767 - Ds\Stack::__construct example
  • Example#5768 - Ds\Stack::copy example
  • Example#5769 - Ds\Stack::isEmpty example
  • Example#5770 - Ds\Stack::peek example
  • Example#5771 - Ds\Stack::pop example
  • Example#5772 - Ds\Stack::push example
  • Example#5773 - Ds\Stack::toArray example
  • Example#5774 - Ds\Queue::allocate example
  • Example#5775 - Ds\Queue::capacity example
  • Example#5776 - Ds\Queue::clear example
  • Example#5777 - Ds\Queue::__construct example
  • Example#5778 - Ds\Queue::copy example
  • Example#5779 - Ds\Queue::isEmpty example
  • Example#5780 - Ds\Queue::peek example
  • Example#5781 - Ds\Queue::pop example
  • Example#5782 - Ds\Queue::push example
  • Example#5783 - Ds\Queue::toArray example
  • Example#5784 - Ds\PriorityQueue::allocate example
  • Example#5785 - Ds\PriorityQueue::capacity example
  • Example#5786 - Ds\PriorityQueue::clear example
  • Example#5787 - Ds\PriorityQueue::__construct example
  • Example#5788 - Ds\PriorityQueue::copy example
  • Example#5789 - Ds\PriorityQueue::isEmpty example
  • Example#5790 - Ds\PriorityQueue::peek example
  • Example#5791 - Ds\PriorityQueue::pop example
  • Example#5792 - Ds\PriorityQueue::push example
  • Example#5793 - Ds\PriorityQueue::toArray example
  • Example#5794 - Configuring the default filter to act like htmlspecialchars
  • Example#5795 - Configuring the default filter to act like htmlspecialchars
  • Example#5796 - Validating email addresses with filter_var
  • Example#5797 - Validating IP addresses with filter_var
  • Example#5798 - Passing options to filter_var
  • Example#5799 - Sanitizing and validating email addresses
  • Example#5800 - Configuring a default filter
  • Example#5801 - 一个 filter_input_array 的例子
  • Example#5802 - 一个 filter_input 的例子
  • Example#5803 - 一个 filter_list 的例子
  • Example#5804 - 一个 filter_var_array 的例子
  • Example#5805 - 一个 filter_var 的例子
  • Example#5806 - call_user_func_array例子
  • Example#5807 - call_user_func_array使用命名空间的情况
  • Example#5808 - 把完整的函数作为回调传入call_user_func_array
  • Example#5809 - call_user_func 的参考例子
  • Example#5810 - call_user_func 的例子
  • Example#5811 - call_user_func 命名空间的使用
  • Example#5812 - 用call_user_func来调用一个类里面的方法
  • Example#5813 - 把完整的函数作为回调传入call_user_func
  • Example#5814 - Creating an anonymous function with create_function
  • Example#5815 - Making a general processing function with create_function
  • Example#5816 - Using anonymous functions as callback functions
  • Example#5817 - forward_static_call_array example
  • Example#5818 - forward_static_call example
  • Example#5819 - func_get_arg 例子
  • Example#5820 - func_get_arg PHP 5.3 前后对比的例子
  • Example#5821 - func_get_arg example of byref and byval arguments
  • Example#5822 - func_get_args 例子
  • Example#5823 - PHP 5.3 前后使用 func_get_args 在的对比
  • Example#5824 - func_get_args example of byref and byval arguments
  • Example#5825 - func_num_args example
  • Example#5826 - func_num_args example before and after PHP 5.3
  • Example#5827 - function_exists 的例子
  • Example#5828 - get_defined_functions example
  • Example#5829 - register_shutdown_function example
  • Example#5830 - register_tick_function example
  • Example#5831 - Quickhash Example
  • Example#5832 - Quickhash ArrayAccess Example
  • Example#5833 - Quickhash Iterator Example
  • Example#5834 - Quickhash String Values Example
  • Example#5835 - QuickHashIntSet::add example
  • Example#5836 - QuickHashIntSet::__construct example
  • Example#5837 - QuickHashIntSet::delete example
  • Example#5838 - QuickHashIntSet::exists example
  • Example#5839 - QuickHashIntSet::getSize example
  • Example#5840 - QuickHashIntSet::loadFromFile example
  • Example#5841 - QuickHashIntSet::loadFromString example
  • Example#5842 - QuickHashIntSet::saveToFile example
  • Example#5843 - QuickHashIntSet::saveToString example
  • Example#5844 - QuickHashIntHash::add example
  • Example#5845 - QuickHashIntHash::__construct example
  • Example#5846 - QuickHashIntHash::delete example
  • Example#5847 - QuickHashIntHash::exists example
  • Example#5848 - QuickHashIntHash::get example
  • Example#5849 - QuickHashIntHash::getSize example
  • Example#5850 - QuickHash IntHash file format
  • Example#5851 - QuickHash IntHash file format
  • Example#5852 - QuickHashIntHash::loadFromFile example
  • Example#5853 - QuickHashIntHash::loadFromString example
  • Example#5854 - QuickHashIntHash::saveToFile example
  • Example#5855 - QuickHashIntHash::saveToString example
  • Example#5856 - QuickHashIntHash::set example
  • Example#5857 - QuickHashIntHash::update example
  • Example#5858 - QuickHashStringIntHash::add example
  • Example#5859 - QuickHashStringIntHash::__construct example
  • Example#5860 - QuickHashStringIntHash::delete example
  • Example#5861 - QuickHashStringIntHash::get example
  • Example#5862 - QuickHashStringIntHash::getSize example
  • Example#5863 - QuickHash StringIntHash file format
  • Example#5864 - QuickHash IntHash file format
  • Example#5865 - QuickHashStringIntHash::loadFromFile example
  • Example#5866 - QuickHashStringIntHash::loadFromString example
  • Example#5867 - QuickHashStringIntHash::saveToFile example
  • Example#5868 - QuickHashStringIntHash::saveToString example
  • Example#5869 - QuickHashStringIntHash::set example
  • Example#5870 - QuickHashStringIntHash::update example
  • Example#5871 - QuickHashIntStringHash::add example
  • Example#5872 - QuickHashIntStringHash::__construct example
  • Example#5873 - QuickHashIntStringHash::delete example
  • Example#5874 - QuickHashIntStringHash::get example
  • Example#5875 - QuickHashIntStringHash::getSize example
  • Example#5876 - QuickHash IntString file format
  • Example#5877 - QuickHash IntString file format
  • Example#5878 - QuickHashIntStringHash::loadFromFile example
  • Example#5879 - QuickHashIntStringHash::loadFromString example
  • Example#5880 - QuickHashIntStringHash::saveToFile example
  • Example#5881 - QuickHashIntStringHash::saveToString example
  • Example#5882 - QuickHashIntStringHash::set example
  • Example#5883 - QuickHashIntStringHash::update example
  • Example#5884 - Shell 里的一个反射例子（一个终端）
  • Example#5885 - 扩展内置的类
  • Example#5886 - ReflectionClass 的基本用法
  • Example#5887 - ReflectionClass::export 的基本用法
  • Example#5888 - ReflectionClass::getConstructor 的基本用法
  • Example#5889 - ReflectionClass::getDefaultProperties 例子
  • Example#5890 - ReflectionClass::getDocComment 例子
  • Example#5891 - ReflectionClass::getEndLine 例子
  • Example#5892 - ReflectionClass::getExtension 的基本用法
  • Example#5893 - ReflectionClass::getExtensionName 的基本用法
  • Example#5894 - ReflectionClass::getInterfaceNames 例子
  • Example#5895 - ReflectionClass::getInterfaces 例子
  • Example#5896 - ReflectionClass::getMethod 的基本用法
  • Example#5897 - ReflectionClass::getMethods 的基本用法
  • Example#5898 - 从 ReflectionClass::getMethods 中过滤结果
  • Example#5899 - ReflectionClass::getName 例子
  • Example#5900 - ReflectionClass::getNamespaceName 例子
  • Example#5901 - ReflectionClass::getProperties 过滤例子
  • Example#5902 - ReflectionClass::getProperty 的基本用法
  • Example#5903 - ReflectionClass::getShortName 例子
  • Example#5904 - ReflectionClass::getStaticPropertyValue 的基本用法
  • Example#5905 - ReflectionClass::hasConstant 例子
  • Example#5906 - ReflectionClass::hasMethod 例子
  • Example#5907 - ReflectionClass::hasProperty 例子
  • Example#5908 - ReflectionClass::inNamespace 例子
  • Example#5909 - ReflectionClass::isAbstract 例子
  • Example#5910 - ReflectionClass::isAnonymous example
  • Example#5911 - ReflectionClass::isCloneable 的基本用法
  • Example#5912 - ReflectionClass::isAbstract 例子
  • Example#5913 - ReflectionClass::isInstance 相关例子
  • Example#5914 - ReflectionClass::isInstantiable 例子
  • Example#5915 - ReflectionClass::isInterface 基本用法
  • Example#5916 - ReflectionClass::isInternal 的基本用法
  • Example#5917 - ReflectionClass::isIterateable 例子
  • Example#5918 - ReflectionClass::newInstanceArgs 的基本用法
  • Example#5919 - ReflectionClass::__toString 例子
  • Example#5920 - ReflectionExtension example
  • Example#5921 - ReflectionExtension::getClasses example
  • Example#5922 - ReflectionExtension::getClassNames example
  • Example#5923 - ReflectionExtension::getConstants example
  • Example#5924 - ReflectionExtension::getDependencies example
  • Example#5925 - ReflectionExtension::getFunctions example
  • Example#5926 - ReflectionExtension::getINIEntries example
  • Example#5927 - ReflectionExtension::getName example
  • Example#5928 - ReflectionExtension::getVersion example
  • Example#5929 - ReflectionExtension::info example
  • Example#5930 - ReflectionFunction::__construct example
  • Example#5931 - ReflectionFunction::invoke example
  • Example#5932 - ReflectionFunction::invokeArgs example
  • Example#5933 - ReflectionFunction::invokeArgs with references example
  • Example#5934 - ReflectionFunction::__toString example
  • Example#5935 - ReflectionFunctionAbstract::getReturnType example
  • Example#5936 - Usage on built-in functions
  • Example#5937 - ReflectionFunctionAbstract::hasReturnType example
  • Example#5938 - Usage on built-in functions
  • Example#5939 - ReflectionFunctionAbstract::isDeprecated example
  • Example#5940 - ReflectionMethod::__construct example
  • Example#5941 - ReflectionMethod::getDeclaringClass example
  • Example#5942 - ReflectionMethod::getModifiers example
  • Example#5943 - ReflectionMethod::getPrototype example
  • Example#5944 - ReflectionMethod::invoke example
  • Example#5945 - ReflectionMethod::invokeArgs example
  • Example#5946 - ReflectionMethod::__toString example
  • Example#5947 - Using the ReflectionParameter class
  • Example#5948 - Using the ReflectionParameter class
  • Example#5949 - Getting the class that declared the method
  • Example#5950 - Getting
  • Example#5951 - ReflectionParameter::getType example
  • Example#5952 - ReflectionParameter::hasType example
  • Example#5953 - ReflectionProperty::__construct example
  • Example#5954 - Getting value from private and protected properties using ReflectionProperty class
  • Example#5955 - ReflectionProperty::getDocComment example
  • Example#5956 - ReflectionProperty::getValue example
  • Example#5957 - ReflectionClass::isDefault example
  • Example#5958 - ReflectionProperty::setValue example
  • Example#5959 - boolval examples
  • Example#5960 - debug_zval_dump example
  • Example#5961 -
  • Example#5962 -
  • Example#5963 - 一个简单的 empty 与 isset 的比较。
  • Example#5964 - 在字符串偏移量上使用empty
  • Example#5965 - intval 例子
  • Example#5966 - is_bool 示例
  • Example#5967 - is_callable 例子
  • Example#5968 - isset 例子
  • Example#5969 - isset on String Offsets
  • Example#5970 - return 参数示例
  • Example#5971 - serialize 示例
  • Example#5972 - settype 示例
  • Example#5973 - unserialize 例子
  • Example#5974 - unserialize_callback_func 例子
  • Example#5975 - unset 示例
  • Example#5976 - 使用 (unset) 类型强制转换
  • Example#5977 - var_dump 例子
  • Example#5978 -
  • Example#5979 - OAuth::fetch example
  • Example#5980 - OAuth::getAccessToken 例子
  • Example#5981 - OAuth::getRequestToken 例子
  • Example#5982 - OAuth::setRequestEngine 例子
  • Example#5983 - 一个 OAuth::setRsaCertificate 例子
  • Example#5984 - OAuth::setToken 例子
  • Example#5985 - OAuthProvider::__construct 例子
  • Example#5986 - OAuthProvider::consumerHandler 回调的例子
  • Example#5987 - OAuthProvider::generateToken 例子
  • Example#5988 - OAuthProvider::is2LeggedEndpoint 例子
  • Example#5989 - OAuthProvider::timestampNonceHandler 回调的例子
  • Example#5990 - OAuthProvider::tokenHandler 回调的例子
  • Example#5991 - A sample SCA component
  • Example#5992 - The structure of an SCA for PHP component
  • Example#5993 - Obtaining a proxy for a local PHP class
  • Example#5994 - Obtaining a proxy for a web service
  • Example#5995 - Calling services
  • Example#5996 - Obtaining a proxy using getService
  • Example#5997 - Making calls on the proxy
  • Example#5998 - StockQuote Service
  • Example#5999 - Generated WSDL
  • Example#6000 - Generated WSDL
  • Example#6001 - location attribute
  • Example#6002 - method with two arguments
  • Example#6003 - types section illustrating named parameters
  • Example#6004 - A Component that uses Data Structures
  • Example#6005 - An SCA::getService example
  • Example#6006 - is_soap_fault example
  • Example#6007 - SOAP's standard method for error reporting is exceptions
  • Example#6008 - SoapClient::__doRequest example
  • Example#6009 - SoapClient::__getFunctions example
  • Example#6010 - SoapClient::__getLastRequest() example
  • Example#6011 - SoapClient::__getLastRequestHeaders() example
  • Example#6012 - SoapClient::__getLastResponse() example
  • Example#6013 - SoapClient::__getLastResponse() example
  • Example#6014 - SoapClient::__getTypes example
  • Example#6015 - SoapClient::__setLocation example
  • Example#6016 - SoapClient::__setSoapHeaders example
  • Example#6017 - Set Multiple Headers
  • Example#6018 - SoapClient::__soapCall example
  • Example#6019 - SoapClient::SoapClient example
  • Example#6020 - SoapServer::addFunction example
  • Example#6021 - SoapServer::getFunctions example
  • Example#6022 - SoapServer::handle example
  • Example#6023 - SoapServer::setPersistence example
  • Example#6024 - SoapServer::SoapServer example
  • Example#6025 - Some examples
  • Example#6026 - Some examples
  • Example#6027 - SoapHeader::SoapHeader example
  • Example#6028 - SoapParam::SoapParam example
  • Example#6029 - SoapVar::SoapVar example
  • Example#6030 - Yar Server示例
  • Example#6031 - 通过浏览器访问(GET请求)
  • Example#6032 - Yar Client示例
  • Example#6033 - Yar Concurrent Client示例
  • Example#6034 - Yar_Server::__construct示例
  • Example#6035 - Yar_Server::handle示例
  • Example#6036 - Yar_Client::__call example
  • Example#6037 - Yar_Client::__construct示例
  • Example#6038 - Yar_Client::setOpt示例
  • Example#6039 - Yar_Concurrent_Client::call示例
  • Example#6040 - Yar_Concurrent_Client::loop example
  • Example#6041 - Yar_Server_Exception::getType示例
  • Example#6042 - Yar_Client_Exception::getType example
  • Example#6043 - XMLRPC client functions example
  • Example#6044 - XML-RPC type example
  • Example#6045 - A xmlrpc_set_type example
  • Example#6046 - For Each in ASP
  • Example#6047 - foreach in PHP
  • Example#6048 - COM example (1)
  • Example#6049 - COM example (2)
  • Example#6050 - DOTNET example
  • Example#6051 - Variant example, PHP 4.x style
  • Example#6052 - Variant example, PHP 5 style
  • Example#6053 - COM event sink example
  • Example#6054 - Statistics about the current PHP process
  • Example#6055 - Statistics about global memory utilization
  • Example#6056 - Registering a PHP script to run as a service
  • Example#6057 - Unregistering a service
  • Example#6058 - Running as a service
  • Example#6059 - A win32_create_service example
  • Example#6060 - A win32_delete_service example
  • Example#6061 - A win32_start_service_ctrl_dispatcher example
  • Example#6062 - book.xml
  • Example#6063 - Creating a new DOMAttr object
  • Example#6064 - DOMAttr::isId() Example
  • Example#6065 - Creating a new DOMCdataSection object
  • Example#6066 - Creating a new DOMComment
  • Example#6067 - Creating a new DOMDocument
  • Example#6068 - Creating a new element and inserting it as root
  • Example#6069 - Passing text containing an unescaped & as value
  • Example#6070 - Creating a new element and inserting it as root
  • Example#6071 - A namespace prefix example
  • Example#6072 - DOMDocument::getElementById() Example
  • Example#6073 - Basic Usage Example
  • Example#6074 - Get all the XInclude elements
  • Example#6075 - DOMDocument::importNode example
  • Example#6076 - Creating a Document
  • Example#6077 - Creating a Document
  • Example#6078 - Creating a Document
  • Example#6079 - Creating a Document
  • Example#6080 - Static invocation of loadXML
  • Example#6081 - Adding a new method to DOMElement to ease our code
  • Example#6082 - Retrieving elements as custom class
  • Example#6083 - Retrieving owner document
  • Example#6084 - Saving a DOM tree into a file
  • Example#6085 - Saving a HTML tree into a string
  • Example#6086 - Saving a HTML tree into a file
  • Example#6087 - Saving a DOM tree into a string
  • Example#6088 - Example of DTD validation
  • Example#6089 - DOMDocument::xinclude() example
  • Example#6090 - Appending XML data to your document
  • Example#6091 - Creating a new DOMElement
  • Example#6092 - Setting an attribute
  • Example#6093 - Creating a new DOMEntityReference
  • Example#6094 - Creating a document with an attached DTD
  • Example#6095 - Testing your DOM Implementation
  • Example#6096 - Adding a child
  • Example#6097 - DOMNode::getLineNo example
  • Example#6098 - DOMNode::getNodePath example
  • Example#6099 - Removing a child
  • Example#6100 - Traversing all the entries of the table
  • Example#6101 - Creating a new DOMProcessingInstruction object
  • Example#6102 - Creating a new DOMText
  • Example#6103 - Getting the count of all the english books
  • Example#6104 - Getting all the english books
  • Example#6105 - book.xml
  • Example#6106 - DOMXPath::registerPHPFunctions with php:functionString
  • Example#6107 - DOMXPath::registerPHPFunctions with php:function
  • Example#6108 - Import SimpleXML into DOM with dom_import_simplexml
  • Example#6109 - A libxml_get_errors example
  • Example#6110 - libxml_set_external_entity_loader example
  • Example#6111 - A libxml_set_streams_context example
  • Example#6112 - A libxml_use_internal_errors example
  • Example#6113 - Access via property name
  • Example#6114 - Access via property name as array index
  • Example#6115 - Data Object iteration
  • Example#6116 - Access many-valued property by name
  • Example#6117 - Many-valued element access
  • Example#6118 - Many-valued property iteration
  • Example#6119 - Chained property access
  • Example#6120 - XPath navigation
  • Example#6121 - XPath querying
  • Example#6122 - Creating child data objects
  • Example#6123 - Unset a primitive property
  • Example#6124 - Unset a data object
  • Example#6125 - Unset a referenced data object
  • Example#6126 - Access via property index
  • Example#6127 - Getting the SDO_Sequence interface
  • Example#6128 - Get/set sequence values
  • Example#6129 - Sequence iteration
  • Example#6130 - Sequence versus Data Object
  • Example#6131 - Adding to a sequence
  • Example#6132 - Removing from a sequence
  • Example#6133 - Reflecting on a Data Object
  • Example#6134 - Accessing the type information
  • Example#6135 - A SDO_DAS_DataFactory::addPropertyToType example
  • Example#6136 - A SDO_DAS_DataFactory::addType example
  • Example#6137 - Creating a data object
  • Example#6138 - Retrieving a data object
  • Example#6139 - Updating a data object
  • Example#6140 - Deleting a data object
  • Example#6141 - One company, one department - Create
  • Example#6142 - One company, one department - Retrieve and Update
  • Example#6143 - One company, two departments - Retrieve and Delete
  • Example#6144 - One company, one department, one employee - Create
  • Example#6145 - One company, one department, one employee - Retrieve and update
  • Example#6146 - One company, two departments, two employees - Retrieve and delete
  • Example#6147 - Retrieving a data object using executePreparedQuery
  • Example#6148 - Loading, altering, and saving an XML document
  • Example#6149 - Creating a new XML document
  • Example#6150 - Setting XML document properties
  • Example#6151 - Using an open type
  • Example#6152 - Finding out what you can from the document
  • Example#6153 - Printing the SDO model
  • Example#6154 - Include file example.php with XML string
  • Example#6155 - Getting <plot>
  • Example#6156 - Getting <line>
  • Example#6157 - Accessing non-unique elements in SimpleXML
  • Example#6158 - Using attributes
  • Example#6159 - Comparing Elements and Attributes with Text
  • Example#6160 - Comparing Two Elements
  • Example#6161 - Using XPath
  • Example#6162 - Setting values
  • Example#6163 - Adding elements and attributes
  • Example#6164 - DOM Interoperability
  • Example#6165 - Loading broken XML string
  • Example#6166 - Add attributes and children to a SimpleXML element
  • Example#6167 - Add attributes and children to a SimpleXML element
  • Example#6168 - Get XML
  • Example#6169 - Using asXML() on SimpleXMLElement::xpath results
  • Example#6170 - Interpret an XML string
  • Example#6171 - Traversing a children() pseudo-array
  • Example#6172 - Using namespaces
  • Example#6173 - Create a SimpleXMLElement object
  • Example#6174 - Create a SimpleXMLElement object from a URL
  • Example#6175 - Counting the number of children
  • Example#6176 - Get document namespaces
  • Example#6177 - Working with multiple namespaces
  • Example#6178 - Get XML element names
  • Example#6179 - Get document namespaces in use
  • Example#6180 - Setting a namespace prefix to use in an XPath query
  • Example#6181 - Get string content
  • Example#6182 - Xpath
  • Example#6183 - Return the current element
  • Example#6184 - Return the sub-elements of the current element
  • Example#6185 - Check whether the current element has sub-elements
  • Example#6186 - Get the current XML tag key
  • Example#6187 - Move to the next element
  • Example#6188 - Rewind to the first element
  • Example#6189 - Check whether the current element is valid
  • Example#6190 - Importing DOM
  • Example#6191 - Interpret an XML document
  • Example#6192 - Interpret an XML string
  • Example#6193 - Serializing a single value with WDDX
  • Example#6194 - Using incremental packets with WDDX
  • Example#6195 - wddx_serialize_vars example
  • Example#6196 - 显示 XML 元素结构
  • Example#6197 - 将 XML 映射为 HTML
  • Example#6198 - 外部实体例程
  • Example#6199 - xmltest.xml
  • Example#6200 - xmltest2.xml
  • Example#6201 - xml_parse_into_struct 示例
  • Example#6202 - moldb.xml - 分子信息的小型数据库
  • Example#6203 - parsemoldb.php - 将 moldb.xml 解析到分子（molecular）对象的数组中
  • Example#6204 - xml_set_object 示例
  • Example#6205 - Validating XML
  • Example#6206 - collection.xml
  • Example#6207 - collection.xsl
  • Example#6208 - fruits.xml
  • Example#6209 - fruits.xsl
  • Example#6210 - Collating and printing errors
  • Example#6211 - Creating an XSLTProcessor
  • Example#6212 - Testing EXSLT support
  • Example#6213 - Simple PHP Function call from a stylesheet
  • Example#6214 - Changing the owner before the transformation
  • Example#6215 - Example profiling output
  • Example#6216 - Transforming to a DOMDocument
  • Example#6217 - Transforming to a HTML file
  • Example#6218 - Transforming to a string
  • Example#6219 - PHP 的泄漏报警
  • Example#6220 - 最小的仅有一个函数的 PHP 扩展
  • Example#6221 - 一个简单的函数
  • Example#6222 - "counter"的简单接口
  • Example#6223 - "counter"的扩展接口
  • Example#6224 - "counter" 的对象化接口
  • Example#6225 - config.m4 文件举例
  • Example#6226 - configure 输出举例
  • Example#6227 - counter 的 config.m4 文件
  • Example#6228 - config.w32 文件举例
  • Example#6229 - counter's config.w32 file
  • Example#6230 - counter 扩展中的文件，未特别排序
  • Example#6231 - zend_module declaration in the counter extension
  • Example#6232 - zend_module definition in PHP 5.3
  • Example#6233 - Counter extension module definition
  • Example#6234 - The wrong way to store the basic counter interface's value
  • Example#6235 - The counter module's globals
  • Example#6236 - The counter module's global structure declaration
  • Example#6237 - Accessor macros for per-module globals
  • Example#6238 - The right way to store the basic counter interface's value
  • Example#6239 - counter's PHP_MINFO function
  • Example#6240 - Example macros for invoking pdo_SKEL_error
  • Example#6241 - Using pdo_parse_params
  • Example#6242 - Implementing preparer for drivers that don't support native prepared statements
  • Example#6243 - simple stream example that displays the PHP home page
  • Example#6244 - How to accept a stream as a parameter
  • Example#6245 - How to return a stream from a function
  • Example#6246 - The default config.m4.
  • Example#6247 - A simple extension.
  • Example#6248 - A test file for first_module.so.
  • Example#6249 - Internal declaration of zend_function_entry.
  • Example#6250 - Internal declaration of zend_module_entry.
  • Example#6251 - PHP's implementation of variable arguments in fsockopen().
  • Example#6252 - PHP/Zend zval type definition.
  • Example#6253 - Testing for referenced parameter passing.
  • Example#6254 - Creating variables with different scopes.
  • Example#6255 - Creation of a long.
  • Example#6256 - Adding an element to an associative array.
  • Example#6257 - Adding an element to an indexed array.
  • Example#6258 - Source code and screenshot for output in phpinfo.
  • Example#6259 - Printing execution information.
  • Example#6260 - Calling user functions.
  • Example#6261 - 隐藏的 HTML 表单单元
  • Example#6262 - 等待用户编辑的数据
  • Example#6263 - URL 中的例子
  • Example#6264 - 模拟注册全局变量
  • Example#6265 - In PHP Core
  • Example#6266 - Object Oriented Code in PHP Core
  • Example#6267 - In the bzip2 Extension
  • Example#6268 - In the datetime Extension
  • Example#6269 - In the dBase Extension
  • Example#6270 - In the mcrypt Extension
  • Example#6271 - In the oci8 Extension
  • Example#6272 - In the SPL Extension
  • Example#6273 - In the Semaphore (sysvmsg) extension
  • Example#6274 - A 5.2.1+ Zip Example
  • Example#6275 - strrpos 和 strripos 如今用整个字符串作为 needle
  • Example#6276 - 没有属性的对象不再被当成“empty”
  • Example#6277 - 有些情况下类必须在使用之前定义
  • Example#6278 - 移植 Apache 配置文件到 PHP 5
  • Example#6279 - 移植 Apache 配置文件到 PHP 5，CGI 模式
  • Example#6280 - Activate full on-screen error reporting for dev. domain
  • Example#6281 - Add security script for protected areas
  • Example#6282 - Unix include_path
  • Example#6283 - Windows include_path
  • Example#6284 - string.rot13
  • Example#6285 - string.toupper
  • Example#6286 - string.tolower
  • Example#6287 - string.strip_tags
  • Example#6288 - convert.base64-encode & convert.base64-decode
  • Example#6289 - convert.quoted-printable-encode & convert.quoted-printable-decode
  • Example#6290 - zlib.deflate和 zlib.inflate
  • Example#6291 - zlib.deflate简单参数用法
  • Example#6292 - bzip2.compress和 bzip2.decompress
  • Example#6293 - 用 3DES 将文件加密输出
  • Example#6294 - 读取加密的文件
函数和方法列表
更新日志
索引


更新日志

对绑定的扩展的函数有以下更新。

Version | Function | Description
Since 5.3.0 | get_class | NULL became the default value for object, so passing NULL to object now has the same result as not passing any value.
Since 5.0.0 | get_class | The class name is returned in its original notation.
get_class | The object parameter is optional if called from the object's method.
get_parent_class | The object parameter is optional if called from the object's method.
Since 5.0 | cal_info | 参数calendar作为可选项，缺省时默认值为"所有历法"。
Since 4.3.0 | easter_date | year参数可选，缺省的默认值是当年。
easter_days | 引入参数 method。
easter_days | 参数year 可选，缺省默认值是当年。
Since 4.2.0 | srand | seed 成为可选，省略时会默认使用随机值。
Since 4.0.5 | get_parent_class | If object is a string, returns the name of the parent class of the class with that name.
prior to 5.3.0 | get_object_vars | If the object isn't an object, then get_object_vars would return FALSE
Prior to 5.1.3 | imagecolorallocatealpha | Returns -1 if the allocation failed.
Prior to 4.2.0 | get_class_vars | Uninitialized class variables will not be reported by get_class_vars
prior to 4.2.0 | get_object_vars | If the variables declared in the class of which the object is an instance, have not been assigned a value, those will not be returned in the array
PHP 5.3.2 (PECL OCI8 1.4) | oci_set_prefetch | Before this release, rows must be >= 1.
PHP 5.3 (PECL OCI8 1.3.4) | oci_set_prefetch | Before this release, prefetching was limited to the lesser of rows rows and 1024 * rows bytes. The byte size restriction has now been removed.
dbase 7.0.0 | dbase_add_record | dbase_identifier is now a resource instead of an int.
dbase_close | dbase_identifier is now a resource instead of an int.
dbase_create | The return value is now a resource instead of an int.
dbase_delete_record | dbase_identifier is now a resource instead of an int.
dbase_get_header_info | dbase_identifier is now a resource instead of an int.
dbase_get_record | dbase_identifier is now a resource instead of an int.
dbase_get_record_with_names | dbase_identifier is now a resource instead of an int.
dbase_numfields | dbase_identifier is now a resource instead of an int.
dbase_numrecords | dbase_identifier is now a resource instead of an int.
dbase_open | The return value is now a resource instead of an int.
dbase_pack | dbase_identifier is now a resource instead of an int.
dbase_replace_record | dbase_identifier is now a resource instead of an int.
Before 5.1.0 | get_parent_class | If called without parameter outside object, this function would have returned NULL with a warning.
7.2.0 | idn_to_ascii | INTL_IDNA_VARIANT_2003 has been deprecated; use INTL_IDNA_VARIANT_UTS46 instead.
idn_to_utf8 | INTL_IDNA_VARIANT_2003 has been deprecated; use INTL_IDNA_VARIANT_UTS46 instead.
7.1.0 | getopt | 添加 optind 参数。
grapheme_extract | Support for negative starts has been added.
grapheme_stripos | Support for negative offsets has been added.
grapheme_strpos | Support for negative offsets has been added.
iconv_strpos | Support for negative offsets has been added.
json_encode | 对 Double 的值进行编码时，使用 serialize_precision 代替 precision。
mb_ereg | mb_ereg will now set regs to an empty array, if nothing matched. Formerly, regs was not modified in that case.
mb_ereg_replace | The e modifier has been deprecated.
mb_ereg_search_setpos | Support for negative positions has been added.
mb_eregi | mb_eregi will now set regs to an empty array, if nothing matched. Formerly, regs was not modified in that case.
mb_eregi_replace | The e modifier has been deprecated.
mb_strimwidth | 支持负数的 start 和 width。
mb_stripos | 支持 offset 使用负数。
mb_strpos | 支持负数的 offset。
openssl_decrypt | The tag and aad parameters were added.
openssl_encrypt | The tag, aad and tag_length parameters were added.
7.0.7 | curl_setopt | 引入 CURL_HTTP_VERSION_2、 CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE、 CURL_HTTP_VERSION_2TLS、 CURL_REDIR_POST_301、 CURL_REDIR_POST_302、 CURL_REDIR_POST_303、 CURL_REDIR_POST_ALL、 CURL_VERSION_KERBEROS5、 CURL_VERSION_PSL、 CURL_VERSION_UNIX_SOCKETS、 CURLAUTH_NEGOTIATE、 CURLAUTH_NTLM_WB、 CURLFTP_CREATE_DIR、 CURLFTP_CREATE_DIR_NONE、 CURLFTP_CREATE_DIR_RETRY、 CURLHEADER_SEPARATE、 CURLHEADER_UNIFIED、 CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE、 CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE、 CURLMOPT_MAX_HOST_CONNECTIONS、 CURLMOPT_MAX_PIPELINE_LENGTH、 CURLMOPT_MAX_TOTAL_CONNECTIONS、 CURLOPT_CONNECT_TO、 CURLOPT_DEFAULT_PROTOCOL、 CURLOPT_DNS_INTERFACE、 CURLOPT_DNS_LOCAL_IP4、 CURLOPT_DNS_LOCAL_IP6、 CURLOPT_EXPECT_100_TIMEOUT_MS、 CURLOPT_HEADEROPT、 CURLOPT_LOGIN_OPTIONS、 CURLOPT_PATH_AS_IS、 CURLOPT_PINNEDPUBLICKEY、 CURLOPT_PIPEWAIT、 CURLOPT_PROXY_SERVICE_NAME、 CURLOPT_PROXYHEADER、 CURLOPT_SASL_IR、 CURLOPT_SERVICE_NAME、 CURLOPT_SSL_ENABLE_ALPN、 CURLOPT_SSL_ENABLE_NPN、 CURLOPT_SSL_FALSESTART、 CURLOPT_SSL_VERIFYSTATUS、 CURLOPT_STREAM_WEIGHT、 CURLOPT_TCP_FASTOPEN、 CURLOPT_TFTP_NO_OPTIONS、 CURLOPT_UNIX_SOCKET_PATH、 CURLOPT_XOAUTH2_BEARER、 CURLPROTO_SMB、 CURLPROTO_SMBS、 CURLPROXY_HTTP_1_0、 CURLSSH_AUTH_AGENT 和 CURLSSLOPT_NO_REVOKE。
7.0.0 | assert | assert is now a language construct and not a function. assertion can now be an expression. The second parameter is now interpreted either as an exception (if a Throwable object is given), or as the description supported from PHP 5.4.8 onwards.
dl | PHP-FPM 模式下已禁用 dl。
getrusage | 此函数现在开始支持 Windows。
mktime | is_dst参数已经被移除。
session_start | 新加 options 参数。
shmop_close | The type of shmid has been changed from int to resource.
shmop_delete | The type of shmid has been changed from int to resource.
shmop_open | The return type of shmop_open has been changed from int to resource.
shmop_read | The type of shmid has been changed from int to resource.
shmop_size | The type of shmid has been changed from int to resource.
shmop_write | The type of shmid has been changed from int to resource.
substr | 如果 string 的字符串长度与 start 相同时将返回一个空字符串。在之前的版本中，这种情况将返回 FALSE 。
IntlDateFormatter::setTimeZoneId | This function has been removed.
5.6.6 | json_encode | options 参数增加常量： JSON_PRESERVE_ZERO_FRACTION
5.6.5 | crypt | When the failure string "*0" is given as the salt, "*1" will now be returned for consistency with other crypt implementations. Prior to this version, PHP 5.6 would incorrectly return a DES hash.
5.6.1 | sem_acquire | The $nowait parameter was added.
5.6.0 | crypt | Raise E_NOTICE security warning if salt is omitted.
curl_setopt | 默认 CURLOPT_SAFE_UPLOAD为 TRUE 。
curl_setopt | 移出 CURLOPT_CLOSEPOLICY和相关的值。
hash_algos | 加入对 gost-crypto 算法的支持。 参照 RFC 4357，11.2 小节 定义的 CryptoPro S-box 表格实现 GOST 哈希函数。
html_entity_decode | The default value for the encoding parameter was changed to be the value of the default_charset configuration option.
htmlentities | The default value for the encoding parameter was changed to be the value of the default_charset configuration option.
htmlspecialchars | The default value for the encoding parameter was changed to be the value of the default_charset configuration option.
json_decode | Invalid non-lowercased variants of the true, false and null literals are no longer accepted as valid input, and will generate warnings.
mb_regex_encoding | Default encoding is changed to UTF-8. It was EUC-JP Previously.
mcrypt_create_iv | source 参数的默认值是 MCRYPT_DEV_URANDOM。
mcrypt_decrypt | 不再接受无效长度的 key and iv 参数。 如果参数长度无效，则 mcrypt_decrypt 函数会产生警告并且返回 FALSE。 之前版本中，对于长度不足的密钥和初始向量会在其后补齐 '\0' 使其达到有效长度。
mcrypt_encrypt | 不再接受无效长度的 key and iv 参数。 如果参数长度无效，则 mcrypt_decrypt 函数会产生警告并且返回 FALSE。 之前版本中，对于长度不足的密钥和初始向量会在其后补齐 '\0' 使其达到有效长度。
pg_lo_truncate | Added truncate function. It supports PostgreSQL 9.3's 64bit large object. Both client and server must support PostgreSQL 9.3 and PHP must be 64bit build to use 64bit large object.
stream_socket_enable_crypto | Introduce STREAM_CRYPTO_METHOD_ANY_CLIENT, STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT, STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT, STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT, STREAM_CRYPTO_METHOD_ANY_SERVER, STREAM_CRYPTO_METHOD_TLSv1_0_SERVER, STREAM_CRYPTO_METHOD_TLSv1_1_SERVER, STREAM_CRYPTO_METHOD_TLSv1_2_SERVER.
stream_socket_enable_crypto | The crypto_type is now optional.
substr_compare | length 可以是 0。
ReflectionClass::newInstanceWithoutConstructor | All internal classes can now be instantiated except for those declared final.
XMLReader::getAttributeNo | XMLReader::getAttributeNo now returns NULL if the attribute doesn't exist.
XMLReader::getAttributeNs | XMLReader::getAttributeNS now returns NULL if the attribute doesn't exist.
5.5.21 | crypt | When the failure string "*0" is given as the salt, "*1" will now be returned for consistency with other crypt implementations. Prior to this version, PHP 5.5 (and earlier branches) would incorrectly return a DES hash.
5.5.19/5.6.3 | imagescale | The calculation of the height if new_height was negative or omitted was fixed; prior to these versions, the aspect ratio was not maintained correctly.
5.5.8 | DatePeriod::__construct | end type changed to DateTimeInterface. Previously, DateTime.
5.5.7 | apache_request_headers | 此函数可用于 CLI server。
apache_response_headers | 此函数可用于 CLI server.
getallheaders | 此函数可用于 CLI server。
5.5.2 | DOMDocument::schemaValidate | Added the flags parameter
DOMDocument::schemaValidateSource | Added the flags parameter
5.5.1 | hex2bin | 如果输入的字符串是无效的十六进制字符串则抛出一个警告，
session_set_save_handler | 加入可选参数 create_sid。
5.5.0/PECL 3.0.0 | IntlDateFormatter::create | An IntlCalendar object is allowed for calendar. Objects of type IntlTimeZone and DateTimeZone are allowed for timezone. Invalid timezone identifiers (including empty strings) are no longer allowed for timezone. If NULL is given for timezone, the timezone identifier given by date_default_timezone_get will be used instead of ICU?s default.
IntlDateFormatter::format | Support for providing IntlCalendar objects to the value parameter was added.
IntlDateFormatter::setCalendar | It became possible to pass an IntlCalendar object.
5.5.0 | DatePeriod::__construct | start type changed to DateTimeInterface. Previously, DateTime.
curl_setopt | 引入 CURLOPT_SHARE。
curl_setopt | 添加 cURL 资源作为 CURLOPT_PROGRESSFUNCTION 回调函数的第一个参数。
empty | empty 现在支持表达式了，而不仅仅是变量。
json_encode | 增加 depth 参数。
php_logo_guid | php_logo_guid 从 PHP 中移除。
preg_replace | /e 修饰符已经被弃用了。使用 preg_replace_callback 代替。参见文档中 PREG_REPLACE_EVAL 关于安全风险的更多信息。
setcookie | A Max-Age attribute is now included in the Set-Cookie header sent to the client.
setrawcookie | A Max-Age attribute is now included in the Set-Cookie header sent to the client.
zend_logo_guid | zend_logo_guid 从 PHP 中移除了。
IntlDateFormatter::setTimeZoneId | This function has been deprecated.
SoapClient::SoapClient | New ssl_method option.
5.4.8 | assert | 增加了参数 description。 description 现在也作为第四个参数提供给 ASSERT_CALLBACK 模式里的回调函数。
mb_strcut | Passing NULL as length extracts all bytes to the end of the string. Prior to this version NULL was treated the same as 0.
mb_substr | length 传入 NULL，则从 start 提取到字符串的结尾处。 在之前的版本里， NULL 会被当作 0 来处理。
5.4.7 | parse_url | 修复了 host 在 协议 省略时的识别。
5.4.4 | hex2bin | 如果输入的字符串有多余将抛出异常。 PHP 5.4.0 起字符串将被静默地接受，但是最后的字节会被截断。
5.4.0/PECL 2.0.0b1 | idn_to_ascii | Added the parameters variant and idna_info; UTS #46 support.
idn_to_utf8 | Added the parameters variant and idna_info; UTS #46 support.
5.4.0 | DOMDocument::loadHTML | Added options parameter.
DOMDocument::loadHTMLFile | Added options parameter.
apache_child_terminate | 该函数目前也可以用于FastCGI模式了。以前，它仅在PHP作为Apapche的模块安装时支持。
apache_request_headers | 此函数可用于 FastCGI。 此前仅在PHP以 Apache 模块方式运行时支持。
apache_response_headers | 此函数可用于 FastCGI。 此前仅在PHP以 Apache 模块方式运行时支持。
array_combine | （修复）早期版本中如果是空数组就报E_WARNING的错并且返回FALSE。
date_default_timezone_get | 不再使用 TZ 来推测时区。
date_default_timezone_get | 不再根据操作系统的信息来推测时区，因为这是不可靠的。
define_syslog_variables | This function was removed from PHP.
dns_get_record | 增加了参数raw。
empty | 检查非数字的字符串偏移量会返回 TRUE.
filter_input_array | 添加 add_empty 参数.
filter_var_array | 添加 add_empty 参数.
get_html_translation_table | The constants ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
get_html_translation_table | The default value for the encoding parameter was changed to UTF-8.
get_magic_quotes_gpc | 始终返回 FALSE，因为这个魔术引号功能已经从 PHP 中移除了。
get_magic_quotes_runtime | 总是返回 FALSE，因为魔术引号（magic quotes）功能已经从 PHP 中移除。
getallheaders | 此函数可用于 FastCGI。 此前仅在PHP以 Apache 模块方式运行时支持。
gzcompress | Added encoding parameter.
gzdeflate | Added encoding parameter.
gzencode | FORCE_DEFLATE now generates RFC 1950 compliant output.
hash | tiger 算法使用大端（big-endian）字节序。参见下面的示例。
hash_algos | 加入对于 joaat，fnv132 和 fnv164 算法的支持。移除 Salsa10 和 Salsa20 算法。
html_entity_decode | Default encoding changed from ISO-8859-1 to UTF-8.
html_entity_decode | The constants ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
htmlentities | The default value for the encoding parameter was changed to UTF-8.
htmlentities | The constants ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
htmlspecialchars | The constants ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.
htmlspecialchars | The default value for the encoding parameter was changed to UTF-8.
htmlspecialchars_decode | 增加了 ENT_HTML401、ENT_XML1、 ENT_XHTML 和 ENT_HTML5 等常量。
http_build_query | 加入了 enc_type 参数。
isset | 检查字符的非数字偏移量将会返回 FALSE。
json_decode | The options parameter was added.
json_encode | options 参数增加常量： JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, 和 JSON_UNESCAPED_UNICODE。
mb_encode_numericentity | Added is_hex parameter.
number_format | This function now supports multiple bytes in dec_point and thousands_sep. Only the first byte of each separator was used in older versions.
openssl_decrypt | The raw_output was changed to options.
openssl_encrypt | The raw_output was changed to options.
preg_match_all | 参数matches成为可选的。
scandir | sorting_order now accepts constants. Any nonzero value caused descending order in previous versions.
session_set_save_handler | 加入 SessionHandlerInterface 接口以及 SessionHandler 类，以方便用户实现自定义的会话保存管理器。
snmp_set_valueretrieval | Constants SNMP_VALUE_PLAIN or SNMP_VALUE_LIBRARY may be combined with SNMP_VALUE_OBJECT resulting different way of representing contents of value array element in return value of GET-function. If no SNMP_VALUE_{PLAIN,LIBRARY} constant is accompanying SNMP_VALUE_OBJECT, SNMP_VALUE_LIBRARY is used. Prior to 5.4.0 SNMP_VALUE_OBJECT effecively meant SNMP_VALUE_OBJECT|SNMP_VALUE_PLAIN.
sort | 添加了 sort_flags 内 SORT_NATURAL 和 SORT_FLAG_CASE 的支持。
Phar::setStub | Added len parameter.
PharData::setStub | Added len parameter.
SimpleXMLElement::getDocNamespaces | Added from_root parameter.
SoapClient::SoapClient | New keep_alive option.
5.4 | grapheme_substr | If length is given and positive and the argument string is shorter than the specified length, all the rest of the string according to start parameter is returned. Previously, FALSE was returned.
5.3.9 | DateTime::createFromFormat | The + format specifier has been added.
dl | 尽管不推荐，但 PHP-FPM 模式下启用了 dl。
is_a | Added allow_string parameter
is_subclass_of | Added allow_string parameter
5.3.7 | crypt | Added $2x$ and $2y$ Blowfish modes to deal with potential high-bit attacks.
5.3.6 | DateTime::modify | Absolute date/time statements now take effect. Previously, only relative parts were used.
DOMDocument::saveHTML | The node parameter was added.
preg_match | 如果 offset 比 subject 的长度还要大则返回 FALSE。
preg_match_all | 如果 offset 大于 subject 的程度，将返回 FALSE。
PDO_MYSQL DSN | Prior to version 5.3.6, charset was ignored.
5.3.4 | get_html_translation_table | The encoding parameter was added.
rawurlencode | 因为 rawurlencode 使用了 EBCDIC，所以波浪线字符不会再被编码。
IntlDateFormatter::format | Support for providing DateTime objects to the value parameter was added.
5.3.3 | DOMXPath::evaluate | The registerNodeNS parameter was added.
DOMXPath::query | The registerNodeNS parameter was added.
json_encode | options 参数增加常量：JSON_NUMERIC_CHECK。
ldap_sasl_bind | Support on Windows was added.
openssl_decrypt | The iv parameter was added.
openssl_encrypt | The iv parameter was added.
parse_url | 在 URL 解析失败时将不会产生 E_WARNING 级别的错误。
5.3.2 | crypt | 修正了 Blowfish 算法由于非法循环导致的问题，返回“失败”字符串（“*0” 或 “*1”）而不是转而使用 DES 算法。
crypt | 基于 Ulrich Drepper 的实现，新增基于 SHA-256 算法和 SHA-512 算法的 crypt。
flock | 在文件资源句柄关闭时不再自动解锁。现在要解锁必须手动进行。
gmp_init | The base was extended from 2 to 36, to 2 to 62 and -2 to -36.
gmp_strval | The base was extended from 2 to 36, to 2 to 62 and -2 to -36.
5.3.1 | get_defined_constants | 仅作用于 Windows：内核常量归类到 Core，之前是 mhash。
ibase_query | On success the function now returns TRUE if there were no affected rows, where it previously returned 0 (a zero followed by an empty space).
rename | 可以在 Windows 上跨驱动器 rename 文件。
5.3.0 | DateTime::__construct | If time contains an invalid date/time format, then an exception is now thrown. Previously an error was emitted.
DateTime::modify | 将返回值从NULL改为 DateTime 类型。
DateTime::setDate | 将返回值从NULL改为 DateTime 类型。
DateTime::setISODate | 将返回值从NULL改为 DateTime 类型。
DateTime::setTime | 将返回值从NULL改为 DateTime 类型。
DateTime::setTimezone | 将返回值从NULL改为 DateTime 类型。
DateTimeZone::getTransitions | The optional timestamp_begin and timestamp_end were added.
DateTimeZone::listIdentifiers | 添加可选的 what 和 country 参数。
acosh | This function is now available on all platforms
array_reduce | Changed initial to allow mixed, previously integer.
array_search | As with all internal PHP functions as of 5.3.0, array_search returns NULL if invalid parameters are passed to it.
asinh | 此函数在所有平台上均可用
atanh | 此函数在所有平台上都可以用了
call_user_func | 对面向对象里面的关键字的解析有所增强。在此之前，使用双引号来来连接一个类和里面的一个方法，把之作为参数来作为回调函数的会，将会发出一个E_STRICT的警告，因为这个传入的参数被视为静态方法。
call_user_func_array | 对面向对象里面的关键字的解析有所增强。在此之前，使用双引号来来连接一个类和里面的一个方法，把之作为参数来作为回调函数的会，将会发出一个E_STRICT的警告，因为这个传入的参数被视为静态方法。
checkdnsrr | 这个函数在Windows平台上也可以使用了。
clearstatcache | 增加了可选的 clear_realpath_cache 和 filename 参数.
copy | 增加了对 context 的支持。
crypt | PHP 现在包含了它自己的 MD5 Crypt 实现，包括标准 DES 算法，扩展的 DES 算法以及 Blowfish 算法。如果系统缺乏相应的实现，那么 PHP 将使用它自己的实现。
curl_setopt | 引入 CURLOPT_PROGRESSFUNCTION。
date_default_timezone_set | 现在会抛出 E_WARNING 而不是 E_STRICT。
define_syslog_variables | This function now throws an E_DEPRECATED notice.
dl | 由于稳定性，dl 在某些 SAPI 中被禁用。仅仅允许 dl 的 SAPI 为 CLI 和 Embed。 使用 扩展加载指令 作为替代。
dns_get_record | 在此版本之前，如果给参数authns传入值，则必须同时传入addtl的值。
dns_get_record | 可以是在windows平台上使用这个函数了。
expm1 | 此函数在所有平台上均可用
fgetcsv | 增加了 escape 参数。
fnmatch | 此函数开始在 Windows 平台上生效。
func_get_arg | 该函数可以在参数列表中使用。
func_get_arg | If this function is called from the outermost scope of a file which has been included by calling include or require from within a function in the calling file, it now generates a warning and returns FALSE. （不知道如何翻译跟好，直接参考例2即可明白）
func_get_args | If this function is called from the outermost scope of a file which has been included by calling include or require from within a function in the calling file, it now generates a warning and returns FALSE. （不知道如何翻译跟好，直接参考例2即可明白）
func_get_args | 该函数可以在参数列表中使用。
func_num_args | This function can now be used in parameter lists.
func_num_args | If this function is called from the outermost scope of a file which has been included by calling include or require from within a function in the calling file, it now generates a warning and returns -1.
get_cfg_var | get_cfg_var 被修复，能够返回 "array" 的 ini 选项。
get_defined_constants | 内核常量归类为 Core，之前是 internal。在 Windows 上，内核常量归类到 mhash。
get_object_vars | This function now returns NULL if the object isn't an object.
getimagesize | Added icon support.
getmxrr | This function is now available on Windows platforms.
getopt | 增加了可选值的支持（用"::"指定）。
getopt | 此函数不再依赖于操作系统，现在也能够在 Windows 上运行。
getopt | 支持 "=" 作为 参数和值的分隔符。
getopt | 参数 longopts 在所有系统平台上均可用。
hash_algos | 加入对 md2，ripemd256，ripemd320，salsa10，salsa20，snefru256 和 sha224 哈希算法的支持。
htmlentities | The constant ENT_IGNORE was added.
htmlspecialchars | The constant ENT_IGNORE was added.
imagecolorclosesthwb | 在 Windows 平台上可用
imagefilter | Pixelation support (IMG_FILTER_PIXELATE) was added.
inet_ntop | This function is now available on Windows platforms.
inet_pton | This function is now available on Windows platforms.
ini_get | 当配置项不存在，之前会返回空字符串，现在会返回 FALSE。
ini_get_all | 增加参数 details。
is_a | This function is no longer deprecated, and will therefore no longer throw E_STRICT warnings.
json_decode | Added the optional depth. The default recursion depth was increased from 128 to 512
json_encode | 增加 options 参数.
link | 该功能在 Windows 平台下开始有效（Vista、 Server 2008 或更高版本）。
linkinfo | Windows 平台上开始可用（Vista、Server 2008 或更高版本）。
log1p | 此函数在所有平台上均可用
mb_get_info | 条目 "http_output_conv_mimetypes" 开始有效。
mcrypt_create_iv | 不再需要提前调用 srand 函数， 由本函数自动完成调用。
mcrypt_create_iv | MCRYPT_DEV_RANDOM 和 MCRYPT_DEV_URANDOM 在 Windows 平台也可用了。
mktime | mktime now throws E_DEPRECATED notice if the is_dst parameter is used.
nl2br | 新增可选的 is_xhtml 参数。
openssl_seal | The method parameter was added.
parse_ini_file | Added optional scanner_mode parameter. Single quotes may now be used around variable assignments. Hash marks (#) may no longer be used as comments and will throw a deprecation warning if used.
pg_lo_import | The optional object_id was added.
preg_quote | 字符 - 被增加为需要转义的。
property_exists | This function checks the existence of a property independent of accessibility.
rawurlencode | 现在符合了RFC 3986。
readlink | 此函数在 Windows 平台下可用（Vista、Server 2008 或更高版本）。
realpath | 在之前的版本中，在 *BSD 系统上，如果仅仅是 path 不存在的话，realpath 并不会像其它系统那样返回 FALSE。
register_tick_function | Ticks are now supported on threaded web server modules.
round | 引入了 mode 参数
session_start | 如果函数调用失败返回 FALSE， 之前版本返回了 TRUE。
setlocale | This function now throws an E_DEPRECATED notice if a string is passed to the category parameter instead of one of the LC_* constants.
shm_attach | This function now returns a 资源(resource) instead of an integer.
socket_create_pair | This function is now re-enabled on Windows platforms.
stream_context_create | 增加了可选参数 params 。
stream_socket_pair | 这个函数在windows平台不可用
stristr | 新增可选的 before_needle 参数。
strlen | Prior versions treated arrays as the string Array, thus returning a string length of 5 and emitting an E_NOTICE level error.
strstr | 新增可选的 before_needle 参数。
strtotime | 在 PHP 5.3.0 之前， 24:00 不是一个有效的格式，并且 strtotime 会返回 FALSE。
strtotime | Prior to PHP 5.3.0, relative time formats supplied to the time argument of strtotime such as this week, previous week, last week, and next week were interpreted to mean a 7 day period relative to the current date/time, rather than a week period of Monday through Sunday.
sybase_connect | The new parameter was added.
symlink | 此函数在 Windows 平台上可用（Vista、Server 2008 或更高版本）。
touch | 能够修改 Windows 下目录的最后修改时间。
ReflectionFunction::__construct | name can now be a closure.
XMLReader::expand | The parameter basenode was added.
5.2.11 | get_defined_constants | categorize 参数现在可以合适得被处理。 在此之前，categorize 被解释为 !is_null($categorize)，导致任何非 NULL 的值会强制常量分类。
5.2.10 | array_rand | The resulting array of keys is no longer shuffled.
array_unique | Changed the default value of sort_flags back to SORT_STRING.
curl_setopt | 引入 CURLOPT_PROTOCOLS, and CURLOPT_REDIR_PROTOCOLS.
ip2long | 再此之前的版本, ip2long 有时会返回即使这不是一个IPV4的标准地址的数字地址。
natsort | Zero padded numeric strings (e.g., '00005') now essentially ignore the 0 padding.
5.2.9 | array_unique | Added the optional sort_flags defaulting to SORT_REGULAR. Prior to 5.2.9, this function used to sort the array with SORT_STRING internally.
5.2.8 | XSLTProcessor::importStylesheet | Accepts SimpleXMLElement again which was broken since PHP 5.2.6.
5.2.7 | parse_ini_file | On syntax error this function will return FALSE rather than an empty array.
round | round 的内部运作修改符合 C99 的标准。
strtotime | In PHP 5 prior to 5.2.7, requesting a given occurrence of a given weekday in a month where that weekday was the first day of the month would incorrectly add one week to the returned timestamp. This has been corrected in 5.2.7 and later versions.
5.2.6 | fopen | 增加了选项 'c' 和 'c+'
5.2.5 | addcslashes | The escape sequences \v and \f were added.
imagefilter | Alpha support for IMG_FILTER_COLORIZE was added.
5.2.4 | checkdnsrr | 增加了TXT的记录类型。
curl_setopt | 引入了 CURLOPT_PRIVATE。
get_loaded_extensions | 添加了可选的 zend_extensions 参数。
ldap_first_attribute | The ber_identifier was removed. This is now handled automatically by PHP.
ldap_next_attribute | The ber_identifier was removed. This is now handled automatically by PHP.
parse_ini_file | 由数字组成的键名和小节名会被 PHP 当作整数来处理，因此以 0 开头的数字会被当作八进制而以 0x 开头的会被当作十六进制。
stream_wrapper_register | 添加 flags 参数.
5.2.3 | getimagesize | Read errors generated by this function downgraded to E_NOTICE from E_WARNING.
htmlentities | The double_encode parameter was added.
htmlspecialchars | The double_encode parameter was added.
json_decode | The nesting limit was increased from 20 to 128
XMLWriter::writeElement | The content parameter became optional.
XMLWriter::writeElementNS | The content parameter became optional.
PDOStatement::getColumnMeta | table 字段
5.2.2 - 5.2.6 | substr | If the start parameter indicates the position of a negative truncation or beyond, false is returned. Other versions get the string from start.
5.2.2 | DOMDocument::registerNodeClass | Prior to 5.2.2, a previously registered extendedclass had to be unregistered before being able to register a new class extending the same baseclass.
ftp_ssl_connect | 以前版本中，如果无法使用 SSL 连接，将会返回一个非 SSL 的连接， 在 5.2.2 版本中修改为返回 FALSE
phpinfo | 增加了“已加载的配置文件”信息，之前只存在“配置文件路径(php.ini)"。
preg_match | 命名子组可以接受(?<name>)， (?'name') 以及(?P<name>)语法。之前版本仅接受(?P<name>)语法。
preg_match_all | 子命名分组语法可以接受(?<name>)，(?'name')以及 (?P<name>)了。 之前版本仅接受(?P<name>)方式。
proc_terminate | 之前的版本被用来销毁进程 resource。
token_get_all | Line numbers are returned in element 2
5.2.1 | json_decode | Added support for JSON decoding of basic types.
memory_get_peak_usage | 使用此函数无需在编译时加上 --enable-memory-limit 选项。
memory_get_usage | 不需要在编译时使用 --enable-memory-limit 选项就能够使用这个函数。
mt_srand | The Mersenne Twister implementation in PHP now uses a new seeding algorithm by Richard Wagner. Identical seeds no longer produce the same sequence of values they did in previous versions. This behavior is not expected to change again, but it is considered unsafe to rely upon it nonetheless.
proc_open | 为 other_options 参数增加 bypass_shell 选项。
5.2.0 | base64_decode | 增加了 strict 。
curl_multi_info_read | msgs_in_queue被加入。
imagettftext | It is now possible to specify an hexadecimal entity in text.
mb_strrpos | 增加了可选参数 offset。
memory_get_peak_usage | 添加参数 real_usage。
memory_get_usage | 增加了参数 real_usage。
openssl_verify | The signature_alg parameter was added.
pathinfo | 添加了常量 PATHINFO_FILENAME。
session_get_cookie_params | 在返回数组中加入 “httponly”。
session_set_cookie_params | 加入 httponly 参数。
setcookie | The httponly parameter was added.
setrawcookie | The httponly parameter was added.
snmp_set_oid_numeric_print | Since PHP 5.2.0.
PDOStatement::execute | input_parameters 中的键名必须和 SQL 中声明的相匹配。PHP 5.2.0 之前默认忽略。
SimpleXMLElement::children | The optional parameter is_prefix was added.
SimpleXMLElement::__construct | Added the ns and is_prefix parameters.
SoapServer::SoapServer | Added the typemap option.
XMLReader::open | encoding and options were added.
XMLReader::XML | encoding and options were added.
5.1.3 | curl_getinfo | 引入CURLINFO_HEADER_OUT.
get_headers | 自 PHP 5.1.3 起本函数使用默认的流上下文，其可以用 stream_context_get_default 函数设定和修改。
http_build_query | 方括号也会被转义。
mb_get_info | 实体 "mail_charset"、"mail_header_encoding" 和 "mail_body_encoding" 开始有效。
SoapClient::__doRequest | The one_way parameter was added.
XMLReader::getAttribute | Return NULL if no attribute found. Previously, returned an empty string.
5.1.2 | date_default_timezone_set | 本版本开始验证 timezone_identifier 参数。
header | 这个函数现在可以一次性阻止多个报文信息的发送，从而作为对报文信息注入攻击的一种防护。
http_build_query | 加入了参数 arg_separator。
parse_url | 增加了参数 component。
SimpleXMLElement::__construct | Added the options and data_is_url parameters.
5.1.1 | date | format 参数标准的可用日期/时间格式常量见： 常量
5.1.0 | DOMDocument::save | Added the options parameter
DOMDocument::saveXML | Added the options parameter
ctype_digit | 在 PHP 5.1.0 之前，当 text 是一个空字符串的时候，该函数将返回 TRUE 。
curl_setopt | 引入 CURLOPT_AUTOREFERER, CURLOPT_BINARYTRANSFER, CURLOPT_FTPSSLAUTH, CURLOPT_PROXYAUTH, and CURLOPT_TIMECONDITION.
date | 现在发布 E_STRICT 和 E_NOTICE 时区错误。
date | 时间戳的有效取值范围为 GMT 时间的 1901 年 12 月 13 日至 GMT 时间的 2038 年 1 月 19 日。 （32 位有符号整数的取值范围）。 但是，在 PHP 5.1.0 之前的版本，在某些系统（例如 Windows）上有效取值范围为 1970 年 1 月 1 日至 2038 年 1 月 19 日。
date_sunrise | 现在发布 E_STRICT 和 E_NOTICE 时区错误。
date_sunset | 现在发布 E_STRICT 和 E_NOTICE 时区错误。
explode | 支持负数的 limit
file_get_contents | Added the offset and maxlen parameters.
file_put_contents | 添加了对 LOCK_EX 的支持和 data 参数处理 stream 资源的功能。
gettimeofday | 增加了参数 return_float。
glob | GLOB_ERR was added
imagerotate | 新增： ignore_transparent 。
intval | 当传入的 var 是 object，将会抛出 E_NOTICE 并返回 1。
localtime | 现在发布 E_STRICT 和 E_NOTICE 时区错误。
md5_file | 函数改用流 API。这意味着能够配合封装器使用该函数，比如 md5_file('http://example.com/..')。
mktime | When called with no arguments, mktime throws E_STRICT notice. Use the time function instead.
mktime | is_dst 参数被废弃。出错时函数返回 FALSE 而不再是 -1。修正了本函数可以接受年月日参数全为零。
mktime | 现在发布 E_STRICT 和 E_NOTICE 时区错误。
mssql_connect | new_link参数加入
openssl_pkcs7_verify | The content parameter was added.
preg_replace | 增加参数count.
preg_replace_callback | 增加了参数count。
session_regenerate_id | 加入 delete_old_session 参数。
sha1_file | 改变函数以使用流 API。这意味着可以使用包装器，比如 sha1_file('http://example.com/..')。
str_word_count | 新增 charlist 参数。
stream_copy_to_stream | Added the offset parameter
stream_filter_append | Prior to PHP 5.1.0, this function returns TRUE on success 或者在失败时返回 FALSE.
stream_filter_prepend | Prior to PHP 5.1.0, this function returns TRUE on success 或者在失败时返回 FALSE.
stream_get_contents | 增加参数 offset 。
strftime | 现在发布 E_STRICT 和 E_NOTICE 时区错误。
strtotime | 现在发布 E_STRICT 和 E_NOTICE 时区错误。
strtotime | 失败时返回 FALSE，不再是 -1。
substr_compare | 允许使用负数的 offset 参数。
substr_count | 新增 offset 和 length 参数。
XSLTProcessor::registerPHPFunctions | The restrict parameter was added.
5.0.4 | msql_fetch_array | A bug was fixed when retrieving data from columns containing NULL values. Such columns were not placed into the resulting array.
msql_fetch_object | A bug was fixed when retrieving data from columns containing NULL values. Such columns were not placed into the resulting array.
msql_fetch_row | A bug was fixed when retrieving data from columns containing NULL values. Such columns were not placed into the resulting array.
5.0.3 | get_class_vars | Depending on the scope, get_class_vars will only return the properties that can be accessed from the current scope.
is_subclass_of | You may also specify the object parameter as a string (the name of the class)
5.0.2 | array_slice | 增加了可选参数 preserve_keys 。
class_exists | 不再为已定义的 interface 返回 TRUE。请使用 interface_exists。
get_class_vars | Calling get_class_vars will now expose all the properties as an array, unlike previous behaviour where protected and private properties were prefixed with nul bytes.
sort | 添加了 SORT_LOCALE_STRING。
strtotime | 在 PHP 5 中到 5.0.2 之前，"now" 和其它相对时间从今天午夜起错误计算了。这和正确从当前时间起计算的其它版本不同。
5.0.1 | get_class_vars | Calling get_class_vars will expose all properties, as when converting an object to a class.
5.0.0 | apache_get_modules | 可用于Apache 1或PHP Apache 2 filter API。 在此之前, 只可用于 Apache 2 handler API。
apache_get_version | 可用于 Apache 2 filter API.
array_merge | array_merge 的行为在 PHP 5 中被修改了。和 PHP 4 不同，array_merge 现在只接受 array 类型的参数。不过可以用强制转换来合并其它类型。请看下面的例子。 array_merge PHP 5 例子 <?php $beginning = 'foo'; $end = array(1 => 'bar'); $result = array_merge((array)$beginning, (array)$end); print_r($result); ?> 以上例程会输出： Array ( [0] => foo [1] => bar )
checkdnsrr | 增加了AAAA的记录类型。
curl_setopt | 引入 CURLOPT_FTP_USE_EPRT, CURLOPT_NOSIGNAL, CURLOPT_UNRESTRICTED_AUTH, CURLOPT_BUFFERSIZE, CURLOPT_HTTPAUTH, CURLOPT_PROXYPORT, CURLOPT_PROXYTYPE, CURLOPT_SSLCERTTYPE, and CURLOPT_HTTP200ALIASES.
dirname | dirname 的操作从 PHP 5.0.0 版开始是二进制安全的。
fgetss | 参数 length 从 此开始可选。
file | 增加了参数 context
file | Prior to PHP 5.0.0 the flags parameter only covered include_path and was enabled with 1
file_get_contents | Added context support.
file_put_contents | Added context support
get_class_methods | 自 PHP 5 起，本函数按照方法被定义的名字返回（区分大小写）。在 PHP 4 中总是返回小写的。
is_a | This function became deprecated in favour of the instanceof operator. Calling this function will result in an E_STRICT warning.
is_executable | is_executable 开始可用以于 Windows。
jdtojewish | 增加了参数 fl。
md5 | 新增 raw_output 参数。
mkdir | mkdir 也可用于某些 URL 封装协议。参见 的列表看看 mkdir 支持哪些 URL 封装协议。
mkdir | 添加 recursive 参数。
mysql_fetch_object | Added the ability to return as a different object.
opendir | path 支持 ftp:// URL wrapper
parse_ini_file | 该函数也开始处理选项值内的新行。
range | 添加了可选参数 step。
realpath | 在此之前的版本中，如果 path 传入了空或者 NULL，将导致 realpath 返回脚本当前的目录。
rename | rename 也可用于某些 URL 封装协议。参见 的列表看看 rename 支持哪些 URL 封装协议。
rmdir | 自 PHP 5.0.0 起 rmdir 也可用于某些 URL 封装协议。参见 的列表看看 rmdir 支持哪些 URL 封装协议。
sha1 | 新增 raw_output 参数。
socket_create | 增加 AF_INET6 支持。
strip_tags | strip_tags 变为二进制安全的。
strrpos | 参数 needle 可以是一个多字符的字符串。
strrpos | 引入 offset 参数。
strtotime | Microseconds began to be allowed, but they are ignored.
unlink | 自 PHP 5.0.0 起 unlink 也可以用于某些 URL 封装协议。参考 中的列表看哪些封装协议支持 unlink。
示例列表
CHM 版本
附录


CHM 版本

  • 关于此版本
  • Using PHP Manual CHM Edition
    • The HTML Help Toolbar
    • The Navigation Pane
    • Keyboard Shortcuts
  • The Full Text Search
    • General searching rules
    • Searching for words or phrases
    • Defining search terms
    • Using nested expressions when searching
  • Integrating the PHP Manual
更新日志
关于此版本
PHP 手册


关于此版本

PHP 手册的 Windows HTML Help 版本是针对开发人员的，他们希望每时每刻都有手册在手头，并且不需要等待远程页面下载就可以阅读手册以及用户注解。此版本给你完整的手册内容加上用户注解，以及一些很棒的特色。这是由我们用来生成此格式的脚本产生的阅读程序以及其他人在皮肤样式上的贡献所提供的。

PHP 手册的此发行包中由很多文件组成，包括主要的手册文件 php_manual_zh.chm。你可以通过双击此文件查看本手册（你可能已经猜到了）。 你可能也会在目录中看到 php_manual_zh.chw 文件，该文件是在你第一次使用索引标签时生成的，包含了手册页面的索引。

对那些对 Microsoft HTML Help 的技术细节有兴趣的人来说，» http://www.helpware.net/ 是一个很棒的资源。有关 Microsoft 帮助格式和服务历史中的 Windows HTML Help 的更多信息与配置，见 » WinWriters article。

CHM 版本
Using PHP Manual CHM Edition
CHM 版本


Using PHP Manual CHM Edition

Table of Contents

  • The HTML Help Toolbar
  • The Navigation Pane
  • Keyboard Shortcuts

When you double click on a CHM, a HTML Help Viewer window opens with three panes. On the left side of the window is the Navigation pane. It contains four navigational tabs: the Contents, Index, Search and Favorites tabs. On the right side of the window is the Topic pane. It displays the selected help topic, or the default help topic on startup. The help pages are all separate HTML files, your Internet Explorer displays the pages in the Topic pane. The third pane is the toolbar, which is located below the help window title bar. You can adjust the horizontal layout with dragging the vertical border between the Navigation pane and the Topic pane.

Note, that when you open the CHM the first time, it may appear in a strange position and size. From then, Windows remembers the window position, size and the last opened tab. All these including your favorites are stored in a file named hh.dat. If you move your file to another directory, all these remembered settings will be lost (including your favorites listing!). If you replace your CHM file with a new one, with the same name, this is not a problem though. The file names and path values are stored in hh.dat.

关于此版本
The HTML Help Toolbar
CHM 版本


The HTML Help Toolbar

The HTML Help Toolbar contains the following icons, when you view the PHP Manual:

  • Hide/Show - Hides/shows the navigation pane.
  • Locate - Locates a topic in the contents tab (in case you reached a topic with search, index or favorites, and would like to see where it is in the table of contents tree view).
  • Back - Goes back in the history.
  • Forward - Goes forward in the history.
  • Refresh - Reloads the current page.
  • Home - Opens the startup page of the CHM.
  • Print - Opens the print dialog box.
  • Options - Provides a dropdown with more options.
Using this toolbar is really easy, many of the toolbar icons are strongly related to their Internet Explorer equivalents.

Using PHP Manual CHM Edition
The Navigation Pane
Using PHP Manual CHM Edition


The Navigation Pane

The Navigation Pane contains four navigational tabs: the Contents, Index, Search and Favorites tabs. These all provide different methods to access a topic in the help file.

  • The contents tab reveals a tree like table of contents, where you can navigate to the desired topic by opening and closing parts of the tree. You can even access the deepest sections using this TOC. If you right click on an item here and choose "Print...", you'll have the option to print the selected topic or the selected topic and all subtopics. However printing is not the initial goal of this representation of the manual (the PDF version is suitable for printing).
  • The index tab lists a huge number of "keywords" (actually manual page titles). You can pick one, or start to type a keyword, see the list adjusting to your input, and then click on a topic, or press enter if the selected topic is the one you would like to see.
  • The search tab shows one of the most powerful features of the HTML Help Viewer, the full text search (also known as FTS). Here you can type in your search expression, optionally connecting words with AND/OR/NEAR/NOT. Before you click 'List topics', you can also set some options at the bottom. After the search results are displayed, you'll realize that manual text and user note results are separated. To sort out the two types, click on the 'Location' column header. Now from the search results list, you can pick a topic, and see it's page. The keywords you searched for are highlighted on the page.
  • The favorites tab enables you to store your most used topics in a list, easily accessible. Here you can see the list, add the current topic to it, remove one, or display a selected item. You can also specify your own title for the favorite, by typing it into the 'Current topic:' box. The user note page titles are prepended with a 'N:' string so you can distinguish them from normal manual pages in the favorites listing.

The HTML Help Toolbar
Keyboard Shortcuts
Using PHP Manual CHM Edition


Keyboard Shortcuts

There are many keyboard shortcuts you can use to increase your productivity. Many users find it more appropriate to use these keyboard shortcuts to access topics, instead of clicking.

General Help Viewer Shortcuts
To | Press
Close the Help Viewer | ALT+F4
Display the Options menu | ALT+O
Hide or show the Navigation pane | ALT+O, and then T
Print a topic | ALT+O, and then P
Move back to the previous topic | ALT+LEFT ARROW
Move forward to the next topic (provided you have viewed it just previously) | ALT+RIGHT ARROW
Turn on or off search highlighting. | ALT+O, and then O
Return to the help file home page | ALT+O, and then H
Switch between the Navigation pane and the Topic pane | F6
Scroll through all the links in a topic or through all the options on a Navigation pane tab | TAB
Display context (right click) menu | SHIFT+F10
Contents Tab Shortcuts
To | Press
Display the Contents tab | ALT+C
Open and close a book or folder | PLUS SIGN and MINUS SIGN, or LEFT ARROW and RIGHT ARROW
Select a topic | DOWN ARROW and UP ARROW
Display the selected topic | ENTER
Index Tab Shortcuts
To | Press
Display the Index tab | ALT+N
Type a keyword to search for | ALT+W, and then type the word
Select a keyword in the list | UP ARROW and DOWN ARROW
Display the associated topic | ENTER or ALT+D
Search Tab shortcuts
To | Press
Display the Search tab | ALT+S
Type a keyword to search for | ALT+W, and then type the word
Start a search | ALT+L
Select a topic in the results list | ALT+T, and then UP ARROW and DOWN ARROW
Display the selected topic | ENTER or ALT+D
Search for a keyword in the result list of a prior search | ALT+U
Search for words similar to the keyword. For example, to find words like "running" and "runs" for the keyword "run" | ALT+M
Only search through topic titles | ALT+R
Favorites Tab Shortcuts
To | Press
Display the Favorites tab | ALT+I
Add the currently displayed topic to the Favorites list | ALT+A
Select a topic in the Favorites list | ALT+P, and then UP ARROW and DOWN ARROW
Display the selected topic | ENTER or ALT+D
Remove the selected topic from the list | ALT+R
Topic Pane Shortcuts
To | Press
Index Lookup | Select the words you would like to look up and press F1
Find on page | CTRL+F, and then adjust options
Refresh page | F5

The Navigation Pane
The Full Text Search
Using PHP Manual CHM Edition


The Full Text Search

Table of Contents

  • General searching rules
  • Searching for words or phrases
  • Defining search terms
  • Using nested expressions when searching

This edition of the PHP Manual includes an advanced full text search possibility provided by the viewer application. This enables users to search through every word in the help file to find a match. For example, if a user does a full-text search on the word "Apache", every topic that contains the word "Apache" will be listed. Advanced full-text search allows a user to search using boolean, wildcard, and nested expressions. A user can also limit the search to previous results, match similar words, or search topic titles only.

The usage of the search feature is fairly straightforward. Click on the search tab, type in the desired words and press ENTER (or click on "List Topics"). Then you'll receive a list of matches from the PHP Manual (and the notes). You can use the button with a right arrow on it to add boolean operators to your search (or you can type them in). As you see the results, you can use the column headings (Title, Location and Rank) to sort the topic list. The default order is by Rank. You can also adjust some parameters at the bottom of this tab.

The words found are highlighted on the current page in the Topic pane by default. You can turn off this feature by choosing the "Search Highlight Off" menu item in the Options menu. To can get this feature back similarly. If you are viewing a long topic, only the first 500 instances of a search word or phrase will be highlighted, due to a limitation of the viewer.

Keyboard Shortcuts
General searching rules
CHM 版本


General searching rules

A basic search consists of the word or phrase you want to find. You can use wildcard expressions, nested expressions, boolean operators, similar word matches, a previous results list, or topic titles to further define your search.

The basic rules for formulating queries are as follows:

  • Searches are not case-sensitive, so you can type your search in uppercase or lowercase characters.
  • You may search for any combination of letters (a-z) and numbers (0-9). You cannot search for single letters (a, b, c, etc.) and common words, like: an, and, as, at, be, but, by, do, for, from, have, he, in, it, not, of, on, or, she, that, the, there, they, this, to, we, which, with, you.
  • Punctuation marks such as the period (.), colon (:), semicolon (;), comma (,), and hyphen (-) are ignored during a search.
  • Group the elements of your search using double quotes or parentheses to set apart each element. You cannot search for quotation marks.

Note:

If you are searching for a file name with an extension, you should group the entire string in double quotes, ("filename.ext"). Otherwise, the period will break the file name into two separate terms. The default operation between terms is AND, so you will create the logical equivalent to "filename AND ext."

The Full Text Search
Searching for words or phrases
The Full Text Search


Searching for words or phrases

You can search for words or phrases and use wildcard expressions. Wildcard expressions allow you to search for one or more characters using a question mark or asterisk. The table below describes the results of these different kinds of searches.

Word and phrase searches
Search for | Example | Results
A single word | select | Topics that contain the word "select". (You will also find its grammatical variations, such as "selector" and "selection".)
A phrase | "new operator" or new operator | Topics that contain the literal phrase "new operator" and all its grammatical variations. Without the quotation marks, the query is equivalent to specifying "new AND operator," which will find topics containing both of the individual words, instead of the phrase.
Wildcard expressions | esc* or HT?? | Results for the first example include topics that contain the terms "ESC", "escape", "escalation", and so on. The asterisk cannot be the only character in the term. Results for the second example include topics that contain the terms "HTTP", "HTML" and so on. The question mark cannot be the only character in the term.

Note:

Select the Match similar words check box to include minor grammatical variations for the phrase you search. This feature only locates variations of the word with common suffixes. For example, a search on the word "add" will find "added," but it will not find "additive". This option is independent of other options or syntax. If you do a titles-only search, variations in titles will be matched. If you use quotes (or any other query operator) any variation of the word can appear; for example, "stemmed search" will also match "stemming search".

General searching rules
Defining search terms
The Full Text Search


Defining search terms

The AND, OR, NOT, and NEAR operators enable you to precisely define your search by creating a relationship between search terms. The following table shows how you can use each of these operators. If no operator is specified, AND is used. For example, the query "server cgi security" is equivalent to "server AND cgi AND security".

Search operators
Search for | Example | Results
Both terms in the same topic | http AND apache | Topics containing both the words "http" and "apache".
Either term in a topic | ming OR swflib | Topics containing either the word "ming" or the word "swflib" or both.
The first term without the second term | xml NOT expat | Topics containing the word "xml" but not the word "expat".
Both terms in the same topic, close together | database NEAR security | Topics containing the word "database" within eight words of the word "security".

Note:

The |, &, and ! characters can also be used in place of OR AND and NOT respectively. This may not work if you use a very old version of the viewer.

Searching for words or phrases
Using nested expressions when searching
The Full Text Search


Using nested expressions when searching

Nested expressions allow you to create complex searches for information. For example, "html AND ((smtp OR pop3) NEAR mail)" finds topics containing the word "html" along with the words "smtp" and "mail" close together, or containing "html" along with the words "pop3" and "mail" close together.

The basic rules for searching help topics using nested expressions are as follows:

  • You can use parentheses to nest expressions within a query. The expressions in parentheses are evaluated before the rest of the query.
  • If a query does not contain a nested expression, it is evaluated from left to right. For example: "mail NOT pop3 OR smtp" finds topics containing the word "mail" without the word "pop3" or topics containing the word "smtp". On the other hand, "mail NOT (pop3 OR smtp)" finds topics containing the word "mail" without either of the words "pop3" or "smtp".
  • You cannot nest expressions more than five levels deep.

Defining search terms
Integrating the PHP Manual
The Full Text Search


Integrating the PHP Manual

Note:

The information provided here is mainly aimed at IDE authors, or advanced users who would like to integrate this CHM file to their favorite IDEs or other production environment components.

There are several editors out there with support for CHM integration, but you may need to know a few things about what the CHM contains to successfully integrate the manual into your environment.

The CHM is built using XSL style sheets from XML sources. This is unique currently in the PHP Manual family, as all other versions are generated using DSSSL style sheets. This also means, that non-intentional rendering differences may come up. A special conversion script is run on the XSLT output, adding several cute features, and packing up the manual with the preferences files and skin examples.

If you never worked with CHMs, you can think of them as compressed files with OS supported access for files inside and some added search and index support. However CHMs can only be viewed using the HTML Help Viewer, you can directly access files inside them using a special URL prefix, the CHM file name and the file you request from inside. As all the help content is stored in HTML files, you can show pages of the CHM in Internet Explorer.

Assume that you placed your php_manual_en.chm to c:\phpmanual the index file in the manual (which you see the first time) can be accessed with the following URL: mk:@MSITStore:C:\phpmanual\php_manual_en.chm::/_index.html. Here mk:@MSITStore: is the special "protocol", C:\phpmanual\php_manual_en.chm is the CHM with it's full path. The /_index.html part is the path to the index file inside the CHM and :: is just what you need to put between the CHM path and this file path.

Note:

All files are in the root directory of the CHM, unlike the previous CHM versions which included a language directory. Images, style sheets and other supplemental files have names starting with an underscore (like the main index shown above), to avoid name collisions.

The names of generated files follow the same rules as the online manual, except that the extension is .html and not .php. The most important is that function documentation files are named function.FUNCNAME.html where FUNCNAME is the function name, with all underscores converted to hyphens. Some examples are function.echo.html, function.mysql-close.html, function.imagecopy.html.

Using all this information, you can show a manual page for a function requested by a user. A simple example is included in the distribution, named php_quickref.hta. This is a » HTML Application to demonstrate the simple process of showing a manual page for a function. The quickRef() function defined therein does the job.

If you would like to integrate the manual into an IDE without direct support for the PHP manual (actually the underscore to hyphen conversion), you can use the included _function.html file to access a function page. This file is simply a redirector, and can be parameterized via the URL, as _function.html#mysql_close. This page will redirect you to the mysql_close function page (function.mysql-close.html) automatically. You can provide the full path of this file if your IDE supports context sensitive help, and provide the IDE specified string as the parameter. An example for this is the UltraEdit 9 intergation (see the edition's website).

The index of the manual (accessible via the index tab on the navigation pane) can also be used for integrational purposes. All the HTML pages are included in the index with their titles as index terms (including function description pages).

If you are a desktop application developer and would like to tightly integrate the CHM into your program (such as displaying the TOC tree in your IDE's help box), you can find more information at » http://www.helpware.net/, as well as links to other useful resources. The official site for HTML Help is at » http://www.microsoft.com/download/en/details.aspx?id=21138.

Using nested expressions when searching
CHM 版本